{"title":"PHRpdGxlPkhvbmRhIG5ldWZzIDIwMjUgJmFtcDsgMjAyNiDDoCBIYXdrZXNidXJ5IChwcsOocyBkZSBHYXRpbmVhdSAmYW1wOyBPdHRhd2EpIHwgSGF3a2VzYnVyeSBIb25kYTwvdGl0bGU+","metas":"PG1ldGEgaXRlbXByb3A9Im5hbWUiIGNvbnRlbnQ9IiAgIj48bWV0YSBpdGVtcHJvcD0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IiI+","js_inline":"Ci8qPCFbQ0RBVEFbKi8KLy9kYXRhLXNjb2RlcmVmPSJQQUYtMTg2NDU2MzY4MTE4NTEyMjg1IgooZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIFNUT1JBR0VfS0VZPSdvbmVycm9yJyxzdG9yYWdlPVtdLGVycm9yQ29sbGVjdGlvbnM9W10scGl4ZWxBZGRyZXNzPScvZnIvYWpheC9sb2dFcnJvcj93c3dpZHRoPTAnO3ZhciBzdGFydFRpbWU9bmV3IERhdGUoKTtsb2FkU3RvcmVkRXJyb3JzKCk7dmFyIHBpeGVsRnJhZ21lbnQ9dW5kZWZpbmVkO2Z1bmN0aW9uIGdldFBpeGVsRnJhZ21lbnQoKXtpZihwaXhlbEZyYWdtZW50IT09dW5kZWZpbmVkKXJldHVybiBwaXhlbEZyYWdtZW50LmNsb25lTm9kZSh0cnVlKTt2YXIgZnJhZz1kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7dmFyIGRpdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtmcmFnLmFwcGVuZENoaWxkKGRpdik7cGl4ZWxGcmFnbWVudD1mcmFnLmNsb25lTm9kZSh0cnVlKTtyZXR1cm4gZnJhZzt9CmZ1bmN0aW9uIGhhc1BpeGVsKGRhdGEpe3JldHVybiEhZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZGl2W2RhdGEtbGluZT0iJytkYXRhLmxpbmUrJyJdW2RhdGEtbXNnPSInK2RhdGEubXNnKyciXScpO30KZnVuY3Rpb24gY3JlYXRlUGl4ZWwoZGF0YSl7aWYoaGFzUGl4ZWwoZGF0YSkpcmV0dXJuIHRydWU7dmFyIGZyYWdtZW50PWdldFBpeGVsRnJhZ21lbnQoKTt2YXIgZGl2PWZyYWdtZW50LnF1ZXJ5U2VsZWN0b3IoJ2RpdicpO3ZhciBpbnRlcm5hbD1pc0ZpbGVJbnRlcm5hbChkYXRhLmZpbGUpPzE6MDt2YXIgb2JqPXttc2c6ZGF0YS5tc2csYWdlbnQ6bmF2aWdhdG9yLnVzZXJBZ2VudCx1cmw6d2luZG93LmxvY2F0aW9uLmhyZWYsaW50ZXJuYWw6aW50ZXJuYWwsdWlkOmdldFVJRCgpLHRvcDooKG5ldyBEYXRlKCkpLmdldFRpbWUoKS1zdGFydFRpbWUuZ2V0VGltZSgpKSxtb3VzZU92ZXI6Z2V0Q3VycmVudE1vdXNlT3ZlckVsZW1lbnQoKX07dmFyIGFkZEVsZW1lbnQ9ZnVuY3Rpb24oKXtkaXYuc2V0QXR0cmlidXRlKCdkYXRhLW1zZycsZGF0YS5tc2cpO2Rpdi5zZXRBdHRyaWJ1dGUoJ2RhdGEtbGluZScsZGF0YS5saW5lKTtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZyYWdtZW50KTt9O2FqYXgob2JqLGZ1bmN0aW9uKHhocil7Y29uc29sZS5sb2coIklzc3VlIHNlbmRpbmcgZXJyb3IsIHN0YXR1czogIit4aHIuc3RhdHVzKyIgZXJyb3I6ICIreGhyLnJlc3BvbnNlVGV4dCk7YWRkRWxlbWVudCgpO30sZnVuY3Rpb24oeGhyKXthZGRFbGVtZW50KCk7Y29uc29sZS5sb2coeGhyKTt9KTt9CmZ1bmN0aW9uIGFqYXgoZGF0YSxlcnJvcixzdWNjZXNzKXt2YXIgeGhyPW5ldyBYTUxIdHRwUmVxdWVzdCgpO3hoci5vcGVuKCdQT1NUJyxwaXhlbEFkZHJlc3MsdHJ1ZSk7eGhyLnNldFJlcXVlc3RIZWFkZXIoJ0NvbnRlbnQtVHlwZScsJ2FwcGxpY2F0aW9uL2pzb247Y2hhcnNldD1VVEYtOCcpO3hoci5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtpZih4aHIucmVhZHlTdGF0ZT09PTQpe2lmKHhoci5zdGF0dXM9PT0yMDApe3N1Y2Nlc3MoeGhyKTt9ZWxzZXtlcnJvcih4aHIpO319fTt4aHIuc2VuZChKU09OLnN0cmluZ2lmeShkYXRhKSk7fQpmdW5jdGlvbiBnZXRDdXJyZW50TW91c2VPdmVyRWxlbWVudCgpe3ZhciBob3Zlcj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCc6aG92ZXInKTtpZihob3Zlcj09PXVuZGVmaW5lZHx8aG92ZXIubGVuZ3RoPT09MCl7cmV0dXJuJ25vbmUnO30KaG92ZXI9aG92ZXJbaG92ZXIubGVuZ3RoLTFdLmNsb25lTm9kZSgpO3JldHVybiBob3Zlci5vdXRlckhUTUw7fQpmdW5jdGlvbiBpc0ZpbGVJbnRlcm5hbChmaWxlKXtyZXR1cm4oZmlsZS5pbmRleE9mKHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSk+LTEpO30KZnVuY3Rpb24gZ2V0VUlEKCl7aWYodHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nIT09J3VuZGVmaW5lZCcpe3JldHVybiBhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ7fQpyZXR1cm4nJzt9CmZ1bmN0aW9uIGxvYWRTdG9yZWRFcnJvcnMoKXtpZih0eXBlb2Ygc2Vzc2lvblN0b3JhZ2UhPT0ndW5kZWZpbmVkJyl7aWYoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShTVE9SQUdFX0tFWSkpe3N0b3JhZ2U9SlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFNUT1JBR0VfS0VZKSk7fX0KcmV0dXJuIHN0b3JhZ2U7fQpmdW5jdGlvbiBoYXNTZXNzaW9uRXJyb3JTaG93bihtc2cpe2xvYWRTdG9yZWRFcnJvcnMoKTtyZXR1cm4gaGFzRXJyb3JTaG93bihtc2cpO30KZnVuY3Rpb24gaGFzRXJyb3JTaG93bihtc2cpe2lmKHN0b3JhZ2U9PT11bmRlZmluZWQpcmV0dXJuIGZhbHNlO2Zvcih2YXIgaT0wO2k8c3RvcmFnZS5sZW5ndGg7aSsrKXtpZihzdG9yYWdlW2ldPT09bXNnKXtyZXR1cm4gdHJ1ZTt9fQpyZXR1cm4gZmFsc2U7fQppZih3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUuaW5kZXhPZignY3VzdG9tLXBhZ2UtcHJldmlldy5odG1sJyk9PT0tMSl7d2luZG93Lm9uZXJyb3I9ZnVuY3Rpb24obXNnLGZpbGUsbGluZSxjb2wsZXJyb3Ipe2NvbnNvbGUubG9nKCdvbmVycm9yIHJhaXNlZCEnKTtpZighaGFzU2Vzc2lvbkVycm9yU2hvd24obXNnKSl7ZXJyb3JDb2xsZWN0aW9ucy5wdXNoKHttc2c6bXNnLGxpbmU6bGluZSxmaWxlOmZpbGV9KTtzdG9yYWdlLnB1c2gobXNnKTtpZihzZXNzaW9uU3RvcmFnZSE9PXVuZGVmaW5lZCl7c2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShTVE9SQUdFX0tFWSxKU09OLnN0cmluZ2lmeShzdG9yYWdlKSk7fX0KaWYoZG9jdW1lbnRbJ2JvZHknXSE9PW51bGwmJmRvY3VtZW50Wydib2R5J10hPT11bmRlZmluZWQpe2FkZFBpeGVsc1RvRG9tKCk7fQppZignbGl2ZSc9PSdsaXZlJyYmJ1VTJz09J0NBJyl7Z3RhZygnZXZlbnQnLCdleGNlcHRpb24nLHsnc2VuZF90byc6J0ctWjVROFo1QzdLRicsJ2Rlc2NyaXB0aW9uJzptc2csJ2ZhdGFsJzp0cnVlfSk7fX07fQppZigvV2ViS2l0L2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSl7dmFyIF90aW1lcj1zZXRJbnRlcnZhbChmdW5jdGlvbigpe2lmKC9sb2FkZWR8Y29tcGxldGUvLnRlc3QoZG9jdW1lbnQucmVhZHlTdGF0ZSkpe2NsZWFySW50ZXJ2YWwoX3RpbWVyKTtvbmxvYWQoKTt9fSwxMCk7fQovKkBjY19vbiBAKi8KLypAaWYgKEBfd2luMzIpCgkJCQlkb2N1bWVudC53cml0ZSgiPCIrInNjcmlwdCBpZD1fX2llX29ubG9hZCBkZWZlciBzcmM9amF2YXNjcmlwdDp2b2lkKDApPjxcL3NjcmlwdD4iKTsKCQkJCXZhciBzY3JpcHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiX19pZV9vbmxvYWQiKTsKCQkJCXNjcmlwdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKCQkJCSAgaWYgKHRoaXMucmVhZHlTdGF0ZSA9PSAiY29tcGxldGUiKSB7CgkJCQkJb25sb2FkKCk7IC8vIGNhbGwgdGhlIG9ubG9hZCBoYW5kbGVyCgkJCQkgIH0KCQkJCX07CgkJCS8qQGVuZCBAKi8KZnVuY3Rpb24gYWRkUGl4ZWxzVG9Eb20oKXtmb3IodmFyIGk9MDtpPGVycm9yQ29sbGVjdGlvbnMubGVuZ3RoO2krKyl7Y29uc29sZS5sb2coJ2NyZWF0ZVBpeGVsJyxlcnJvckNvbGxlY3Rpb25zW2ldKTt9fQpmdW5jdGlvbiBvbmxvYWQoKXthZGRQaXhlbHNUb0RvbSgpO30KZnVuY3Rpb24gX2NyZWF0ZVNjcmlwdCh0ZXh0KXt2YXIgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtzLmFwcGVuZCh0ZXh0KTtyZXR1cm4gczt9CndpbmRvdy5lcnJvclRlc3RzPXtzeW50YXg6ZnVuY3Rpb24oKXt2YXIgc2NyaXB0PV9jcmVhdGVTY3JpcHQoJ30nKTtkb2N1bWVudC5ib2R5LmFwcGVuZChzY3JpcHQpO30sb2ZOdWxsOmZ1bmN0aW9uKCl7dmFyIHRleHQ9J3ZhciBhID0gbnVsbDsgdmFyIGIgPSBhLndoYXQ7Jzt2YXIgc2NyaXB0PV9jcmVhdGVTY3JpcHQodGV4dCk7ZG9jdW1lbnQuYm9keS5hcHBlbmQoc2NyaXB0KTt9LGludmFsaWRBc3NpZ25tZW50OmZ1bmN0aW9uKCl7dmFyIHNjcmlwdD1fY3JlYXRlU2NyaXB0KCcxID0gZnVuYygpOycpO2RvY3VtZW50LmJvZHkuYXBwZW5kKHNjcmlwdCk7fX07d2luZG93LnRyYWNrQ29udmVyc2lvbj1mdW5jdGlvbigpe2lmKHR5cGVvZiBndGFnPT0ndW5kZWZpbmVkJylyZXR1cm4tMTtpZighd2luZG93LmQyY19hd2NJZHx8IXdpbmRvdy5kMmNfYXdjTGFiZWwpcmV0dXJuLTM7aWYoZGVwbG95bWVudFR5cGUudG9Mb3dlckNhc2UoKT09J2xpdmUnJiYnVVMnPT0nQ0EnKXtndGFnKCdldmVudCcsJ2NvbnZlcnNpb24nLHsnc2VuZF90byc6ZDJjX2F3Y0lkKycvJytkMmNfYXdjTGFiZWx9KTt9ZWxzZXtjb25zb2xlLmxvZygiZ3RhZygnZXZlbnQnLCdjb252ZXJzaW9uJywgeyAnc2VuZF90byc6ICIrZDJjX2F3Y0lkKycvJytkMmNfYXdjTGFiZWwrIiB9KTsiKTt9fX0pKCk7Ci8qXV0+Ki8KCi8qPCFbQ0RBVEFbKi8KLy9kYXRhLXNjb2RlcmVmPSJQQUYtMTg2NDU2MzY4MTE4NTEyMjg1IgooZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIFNUT1JBR0VfS0VZPSdvbmVycm9yJyxzdG9yYWdlPVtdLGVycm9yQ29sbGVjdGlvbnM9W10scGl4ZWxBZGRyZXNzPScvZnIvYWpheC9sb2dFcnJvcj93c3dpZHRoPTAnO3ZhciBzdGFydFRpbWU9bmV3IERhdGUoKTtsb2FkU3RvcmVkRXJyb3JzKCk7dmFyIHBpeGVsRnJhZ21lbnQ9dW5kZWZpbmVkO2Z1bmN0aW9uIGdldFBpeGVsRnJhZ21lbnQoKXtpZihwaXhlbEZyYWdtZW50IT09dW5kZWZpbmVkKXJldHVybiBwaXhlbEZyYWdtZW50LmNsb25lTm9kZSh0cnVlKTt2YXIgZnJhZz1kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7dmFyIGRpdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtmcmFnLmFwcGVuZENoaWxkKGRpdik7cGl4ZWxGcmFnbWVudD1mcmFnLmNsb25lTm9kZSh0cnVlKTtyZXR1cm4gZnJhZzt9CmZ1bmN0aW9uIGhhc1BpeGVsKGRhdGEpe3JldHVybiEhZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZGl2W2RhdGEtbGluZT0iJytkYXRhLmxpbmUrJyJdW2RhdGEtbXNnPSInK2RhdGEubXNnKyciXScpO30KZnVuY3Rpb24gY3JlYXRlUGl4ZWwoZGF0YSl7aWYoaGFzUGl4ZWwoZGF0YSkpcmV0dXJuIHRydWU7dmFyIGZyYWdtZW50PWdldFBpeGVsRnJhZ21lbnQoKTt2YXIgZGl2PWZyYWdtZW50LnF1ZXJ5U2VsZWN0b3IoJ2RpdicpO3ZhciBpbnRlcm5hbD1pc0ZpbGVJbnRlcm5hbChkYXRhLmZpbGUpPzE6MDt2YXIgb2JqPXttc2c6ZGF0YS5tc2csYWdlbnQ6bmF2aWdhdG9yLnVzZXJBZ2VudCx1cmw6d2luZG93LmxvY2F0aW9uLmhyZWYsaW50ZXJuYWw6aW50ZXJuYWwsdWlkOmdldFVJRCgpLHRvcDooKG5ldyBEYXRlKCkpLmdldFRpbWUoKS1zdGFydFRpbWUuZ2V0VGltZSgpKSxtb3VzZU92ZXI6Z2V0Q3VycmVudE1vdXNlT3ZlckVsZW1lbnQoKX07dmFyIGFkZEVsZW1lbnQ9ZnVuY3Rpb24oKXtkaXYuc2V0QXR0cmlidXRlKCdkYXRhLW1zZycsZGF0YS5tc2cpO2Rpdi5zZXRBdHRyaWJ1dGUoJ2RhdGEtbGluZScsZGF0YS5saW5lKTtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZyYWdtZW50KTt9O2FqYXgob2JqLGZ1bmN0aW9uKHhocil7Y29uc29sZS5sb2coIklzc3VlIHNlbmRpbmcgZXJyb3IsIHN0YXR1czogIit4aHIuc3RhdHVzKyIgZXJyb3I6ICIreGhyLnJlc3BvbnNlVGV4dCk7YWRkRWxlbWVudCgpO30sZnVuY3Rpb24oeGhyKXthZGRFbGVtZW50KCk7Y29uc29sZS5sb2coeGhyKTt9KTt9CmZ1bmN0aW9uIGFqYXgoZGF0YSxlcnJvcixzdWNjZXNzKXt2YXIgeGhyPW5ldyBYTUxIdHRwUmVxdWVzdCgpO3hoci5vcGVuKCdQT1NUJyxwaXhlbEFkZHJlc3MsdHJ1ZSk7eGhyLnNldFJlcXVlc3RIZWFkZXIoJ0NvbnRlbnQtVHlwZScsJ2FwcGxpY2F0aW9uL2pzb247Y2hhcnNldD1VVEYtOCcpO3hoci5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtpZih4aHIucmVhZHlTdGF0ZT09PTQpe2lmKHhoci5zdGF0dXM9PT0yMDApe3N1Y2Nlc3MoeGhyKTt9ZWxzZXtlcnJvcih4aHIpO319fTt4aHIuc2VuZChKU09OLnN0cmluZ2lmeShkYXRhKSk7fQpmdW5jdGlvbiBnZXRDdXJyZW50TW91c2VPdmVyRWxlbWVudCgpe3ZhciBob3Zlcj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCc6aG92ZXInKTtpZihob3Zlcj09PXVuZGVmaW5lZHx8aG92ZXIubGVuZ3RoPT09MCl7cmV0dXJuJ25vbmUnO30KaG92ZXI9aG92ZXJbaG92ZXIubGVuZ3RoLTFdLmNsb25lTm9kZSgpO3JldHVybiBob3Zlci5vdXRlckhUTUw7fQpmdW5jdGlvbiBpc0ZpbGVJbnRlcm5hbChmaWxlKXtyZXR1cm4oZmlsZS5pbmRleE9mKHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSk+LTEpO30KZnVuY3Rpb24gZ2V0VUlEKCl7aWYodHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nIT09J3VuZGVmaW5lZCcpe3JldHVybiBhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ7fQpyZXR1cm4nJzt9CmZ1bmN0aW9uIGxvYWRTdG9yZWRFcnJvcnMoKXtpZih0eXBlb2Ygc2Vzc2lvblN0b3JhZ2UhPT0ndW5kZWZpbmVkJyl7aWYoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShTVE9SQUdFX0tFWSkpe3N0b3JhZ2U9SlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFNUT1JBR0VfS0VZKSk7fX0KcmV0dXJuIHN0b3JhZ2U7fQpmdW5jdGlvbiBoYXNTZXNzaW9uRXJyb3JTaG93bihtc2cpe2xvYWRTdG9yZWRFcnJvcnMoKTtyZXR1cm4gaGFzRXJyb3JTaG93bihtc2cpO30KZnVuY3Rpb24gaGFzRXJyb3JTaG93bihtc2cpe2lmKHN0b3JhZ2U9PT11bmRlZmluZWQpcmV0dXJuIGZhbHNlO2Zvcih2YXIgaT0wO2k8c3RvcmFnZS5sZW5ndGg7aSsrKXtpZihzdG9yYWdlW2ldPT09bXNnKXtyZXR1cm4gdHJ1ZTt9fQpyZXR1cm4gZmFsc2U7fQppZih3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUuaW5kZXhPZignY3VzdG9tLXBhZ2UtcHJldmlldy5odG1sJyk9PT0tMSl7d2luZG93Lm9uZXJyb3I9ZnVuY3Rpb24obXNnLGZpbGUsbGluZSxjb2wsZXJyb3Ipe2NvbnNvbGUubG9nKCdvbmVycm9yIHJhaXNlZCEnKTtpZighaGFzU2Vzc2lvbkVycm9yU2hvd24obXNnKSl7ZXJyb3JDb2xsZWN0aW9ucy5wdXNoKHttc2c6bXNnLGxpbmU6bGluZSxmaWxlOmZpbGV9KTtzdG9yYWdlLnB1c2gobXNnKTtpZihzZXNzaW9uU3RvcmFnZSE9PXVuZGVmaW5lZCl7c2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShTVE9SQUdFX0tFWSxKU09OLnN0cmluZ2lmeShzdG9yYWdlKSk7fX0KaWYoZG9jdW1lbnRbJ2JvZHknXSE9PW51bGwmJmRvY3VtZW50Wydib2R5J10hPT11bmRlZmluZWQpe2FkZFBpeGVsc1RvRG9tKCk7fQppZignbGl2ZSc9PSdsaXZlJyYmJ1VTJz09J0NBJyl7Z3RhZygnZXZlbnQnLCdleGNlcHRpb24nLHsnc2VuZF90byc6J0ctWjVROFo1QzdLRicsJ2Rlc2NyaXB0aW9uJzptc2csJ2ZhdGFsJzp0cnVlfSk7fX07fQppZigvV2ViS2l0L2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSl7dmFyIF90aW1lcj1zZXRJbnRlcnZhbChmdW5jdGlvbigpe2lmKC9sb2FkZWR8Y29tcGxldGUvLnRlc3QoZG9jdW1lbnQucmVhZHlTdGF0ZSkpe2NsZWFySW50ZXJ2YWwoX3RpbWVyKTtvbmxvYWQoKTt9fSwxMCk7fQovKkBjY19vbiBAKi8KLypAaWYgKEBfd2luMzIpCgkJCQlkb2N1bWVudC53cml0ZSgiPCIrInNjcmlwdCBpZD1fX2llX29ubG9hZCBkZWZlciBzcmM9amF2YXNjcmlwdDp2b2lkKDApPjxcL3NjcmlwdD4iKTsKCQkJCXZhciBzY3JpcHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiX19pZV9vbmxvYWQiKTsKCQkJCXNjcmlwdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKCQkJCSAgaWYgKHRoaXMucmVhZHlTdGF0ZSA9PSAiY29tcGxldGUiKSB7CgkJCQkJb25sb2FkKCk7IC8vIGNhbGwgdGhlIG9ubG9hZCBoYW5kbGVyCgkJCQkgIH0KCQkJCX07CgkJCS8qQGVuZCBAKi8KZnVuY3Rpb24gYWRkUGl4ZWxzVG9Eb20oKXtmb3IodmFyIGk9MDtpPGVycm9yQ29sbGVjdGlvbnMubGVuZ3RoO2krKyl7Y29uc29sZS5sb2coJ2NyZWF0ZVBpeGVsJyxlcnJvckNvbGxlY3Rpb25zW2ldKTt9fQpmdW5jdGlvbiBvbmxvYWQoKXthZGRQaXhlbHNUb0RvbSgpO30KZnVuY3Rpb24gX2NyZWF0ZVNjcmlwdCh0ZXh0KXt2YXIgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtzLmFwcGVuZCh0ZXh0KTtyZXR1cm4gczt9CndpbmRvdy5lcnJvclRlc3RzPXtzeW50YXg6ZnVuY3Rpb24oKXt2YXIgc2NyaXB0PV9jcmVhdGVTY3JpcHQoJ30nKTtkb2N1bWVudC5ib2R5LmFwcGVuZChzY3JpcHQpO30sb2ZOdWxsOmZ1bmN0aW9uKCl7dmFyIHRleHQ9J3ZhciBhID0gbnVsbDsgdmFyIGIgPSBhLndoYXQ7Jzt2YXIgc2NyaXB0PV9jcmVhdGVTY3JpcHQodGV4dCk7ZG9jdW1lbnQuYm9keS5hcHBlbmQoc2NyaXB0KTt9LGludmFsaWRBc3NpZ25tZW50OmZ1bmN0aW9uKCl7dmFyIHNjcmlwdD1fY3JlYXRlU2NyaXB0KCcxID0gZnVuYygpOycpO2RvY3VtZW50LmJvZHkuYXBwZW5kKHNjcmlwdCk7fX07d2luZG93LnRyYWNrQ29udmVyc2lvbj1mdW5jdGlvbigpe2lmKHR5cGVvZiBndGFnPT0ndW5kZWZpbmVkJylyZXR1cm4tMTtpZighd2luZG93LmQyY19hd2NJZHx8IXdpbmRvdy5kMmNfYXdjTGFiZWwpcmV0dXJuLTM7aWYoZGVwbG95bWVudFR5cGUudG9Mb3dlckNhc2UoKT09J2xpdmUnJiYnVVMnPT0nQ0EnKXtndGFnKCdldmVudCcsJ2NvbnZlcnNpb24nLHsnc2VuZF90byc6ZDJjX2F3Y0lkKycvJytkMmNfYXdjTGFiZWx9KTt9ZWxzZXtjb25zb2xlLmxvZygiZ3RhZygnZXZlbnQnLCdjb252ZXJzaW9uJywgeyAnc2VuZF90byc6ICIrZDJjX2F3Y0lkKycvJytkMmNfYXdjTGFiZWwrIiB9KTsiKTt9fX0pKCk7Ci8qXV0+Ki8KCi8qPCFbQ0RBVEFbKi8KLy9kYXRhLXNjb2RlcmVmPSJaWlotNDE1NTY0OCIKdmFyIGN1cnJlbnRTaXRlSUQ9MTU1O3ZhciBkMmNfZ2FBY2NvdW50cz17ImFsbCI6W10sImludGVybmFsIjpbXX07dmFyIGQyY19hd2NJZD0nQVctODgxNzYyNDQ2Jzt2YXIgZDJjX2F3Y0xhYmVsPSdFSVQ2Q0p2MTltWVFqc0c2cEFNJzt2YXIgbGVnYWN5X2dhPWZhbHNlO3dpbmRvdy5kYXRhTGF5ZXI9d2luZG93LmRhdGFMYXllcnx8W107ZnVuY3Rpb24gZ3RhZygpe2RhdGFMYXllci5wdXNoKGFyZ3VtZW50cyk7fQpndGFnKCdqcycsbmV3IERhdGUoKSk7ZDJjX2dhQWNjb3VudHMuYWxsLnB1c2goJ0ctWjVROFo1QzdLRicpO2QyY19nYUFjY291bnRzLmFsbC5wdXNoKCdHLVAyQ0NKNFJHMFonKTtpZihkMmNfYXdjSWQpe2QyY19nYUFjY291bnRzLmFsbC5wdXNoKGQyY19hd2NJZCk7fQooZDJjX2dhQWNjb3VudHMuYWxsfHxbXSkubWFwKGZ1bmN0aW9uKGlkKXtndGFnKCdjb25maWcnLGlkLHsnc2VuZF9wYWdlX3ZpZXcnOmZhbHNlLCdsaW5rZXInOnsnZG9tYWlucyc6SlNPTi5wYXJzZShhdG9iKCJXMTA9IikpLCdjb29raWVfZG9tYWluJzond3d3Lmhhd2tlc2J1cnlob25kYS5jYSd9fSk7fSk7Ci8qXV0+Ki8KCi8qPCFbQ0RBVEFbKi8KLy9kYXRhLXNjb2RlcmVmPSJGTFQtMTU2NjQ1ODg5OTY0NTM0MTE1Mzg2Igp2YXIgZG9jUmVhZHlBcnI9W107dmFyIHBhZ2U9Ik5FV0NBUlMiO3ZhciBmYkNoYXRSZWY9e307dmFyIGRlcGxveW1lbnRUeXBlPSdsaXZlJzt2YXIgY3VycmVudFNpdGVJRD0xNTU7dmFyIGN1cnJlbnREZWFsZXJJRD0xNzE3O3ZhciBnYVR5cGU9J2d0YWcnO3ZhciBhbGxDYW1wYWlnbnM9W1siaGF3a2VzYnVyeWhvbmRhLmNhIiwiQ291cnJpZWxzLXJlbGFuY2UiLCJOZXVmLTEyMC1qb3VycyIsIjUxNCJdLFsiaGF3a2VzYnVyeWhvbmRhLmNhIiwiQ291cnJpZWxzLXJlbGFuY2UiLCJPY2Nhc2lvbi0xNS1qb3VycyIsIjUxNSJdLFsiaGF3a2VzYnVyeWhvbmRhLmNhIiwiQ291cnJpZWxzLXJlbGFuY2UiLCJUb3V0ZXMiLCI1MzAiXSxbIkhhd2tlc2J1cnlob25kYS5jYSIsIkdvb2dsZSIsIk5ldWYiLCIxNzU1Il0sWyJoYXdrZXNidXJ5aG9uZGEuY2EiLCJDb3VycmllbHMtcmVsYW5jZSIsIk9jY2FzaW9uIiwiMjE0OSJdLFsiaGF3a2VzYnVyeWhvbmRhLmNhIiwiU0VNIiwiQWdlbmN5IiwiMzMwMyJdLFsiaGF3a2VzYnVyeWhvbmRhLmNhIiwiVHJhZGVyIiwiUmV0YXJnZXRpbmciLCI0MzEwIl0sWyJIYXdrZXNidXJ5aG9uZGEuY2EiLCJCaW5nIiwiQmluZyIsIjQ3OTYiXSxbIkhhd2tlc2J1cnlob25kYS5jYSIsIkZhY2Vib29rIiwiTGVhZGFkcy1uZXVmIiwiOTQxNSJdLFsiaGF3a2VzYnVyeWhvbmRhLmNhIiwiQ291cnJpZWxzLXJlbGFuY2UiLCJOZXVmcyIsIjE1MjIzIl0sWyJIYXdrZXNidXJ5aG9uZGEuY2EiLCJCaW5nIiwiTmV1ZiIsIjI5OTk0Il0sWyJIYXdrZXNidXJ5aG9uZGEuY2EiLCJHb29nbGUiLCJPY2Nhc2lvbiIsIjM3MzM4Il1dCnZhciByZXRhcmdldGluZ0NhbXBhaWducz1bXQp2YXIgQUlDdXJyZW50Q29uZmlnSUQ9MDt2YXIgQUlJRFBlck5ld0NhcnNGcmVuY2g9bmV3IEFycmF5KCk7dmFyIEFJSURQZXJOZXdDYXJzRW5nbGlzaD1uZXcgQXJyYXkoKTtmdW5jdGlvbiBwYXJzZVF1ZXJ5KHN0cil7aWYoc3RyLmxlbmd0aDwxKXJldHVybnt9CnZhciB2YXJzPXt9LHY7dmFyIHFzPXN0ci5zcGxpdCgnJicpO2Zvcih2YXIgaT0wO2k8cXMubGVuZ3RoO2krKyl7dj1leHBsb2RlKHFzW2ldLCc9JywxKTt2YXJzW3ZbMF1dPXZbMV07fQpyZXR1cm4gdmFyczt9CmZ1bmN0aW9uIGRlY29kZVN0cmluZyhzdHJpbmcsdGltZXMpe2lmKHRpbWVzPT0iInx8dGltZXM9PSJ1bmRlZmluZWQiKXt0aW1lcz0xO30KZm9yKGk9MDtpPHRpbWVzO2krKyl7c3RyaW5nPWRlY29kZVVSSUNvbXBvbmVudChzdHJpbmcpO30KcmV0dXJuIHN0cmluZzt9CmZ1bmN0aW9uIGRlY29kZUhUTUwoZW5jb2RlZCl7aWYodHlwZW9mIGVuY29kZWQhPT0nc3RyaW5nJylyZXR1cm4gZW5jb2RlZDt2YXIgZWw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKTtlbC5pbm5lckhUTUw9ZW5jb2RlZDtyZXR1cm4gZWwudmFsdWU7fQpmdW5jdGlvbiBleHBsb2RlKHN0cixzZXBhcmF0b3IsbGltaXQpe3N0cj1zdHIuc3BsaXQoc2VwYXJhdG9yKTtpZihzdHIubGVuZ3RoPD1saW1pdClyZXR1cm4gc3RyO3ZhciByZXQ9c3RyLnNwbGljZSgwLGxpbWl0KTtyZXQucHVzaChzdHIuam9pbihzZXBhcmF0b3IpKTtyZXR1cm4gcmV0O30KZnVuY3Rpb24gZ2V0VXJsVmFycygpe3ZhciBxcz0od2luZG93LmxvY2F0aW9uLnNlYXJjaCkuc3Vic3RyaW5nKDEpO3JldHVybiBwYXJzZVF1ZXJ5KHFzKTt9CmZ1bmN0aW9uIGdldENvb2tpZShjX25hbWUpe3JldHVybiBDb29raWVzLmdldChjX25hbWUpO30KZnVuY3Rpb24gZ2V0Q29va2llKGNfbmFtZSl7dmFyIGNfdmFsdWU9ZG9jdW1lbnQuY29va2llO3ZhciBjX3N0YXJ0PWNfdmFsdWUuaW5kZXhPZigiICIrY19uYW1lKyI9Iik7aWYoY19zdGFydD09LTEpe2Nfc3RhcnQ9Y192YWx1ZS5pbmRleE9mKGNfbmFtZSsiPSIpO30KaWYoY19zdGFydD09LTEpe2NfdmFsdWU9bnVsbDt9ZWxzZXtjX3N0YXJ0PWNfdmFsdWUuaW5kZXhPZigiPSIsY19zdGFydCkrMTt2YXIgY19lbmQ9Y192YWx1ZS5pbmRleE9mKCI7IixjX3N0YXJ0KTtpZihjX2VuZD09LTEpe2NfZW5kPWNfdmFsdWUubGVuZ3RoO30KY192YWx1ZT11bmVzY2FwZShjX3ZhbHVlLnN1YnN0cmluZyhjX3N0YXJ0LGNfZW5kKSk7fQpyZXR1cm4gY192YWx1ZTt9CmZ1bmN0aW9uIHNldENvb2tpZShjX25hbWUsdmFsdWUsZXhkYXlzKXtpc0Nvb2tpZUFsbG93ZWQoY19uYW1lLGZ1bmN0aW9uKGFsbG93ZWQpe2lmKCFhbGxvd2VkKXtyZXR1cm4gQ29va2llcy5zZXQoY19uYW1lLHZhbHVlLGV4ZGF5cywnLycpO2xvZ0Nvb2tpZShjX25hbWUsdmFsdWUsZXhkYXlzKTtyZXR1cm47fQp2YXIgZXhkYXRlPW5ldyBEYXRlKCk7ZXhkYXRlLnNldERhdGUoZXhkYXRlLmdldERhdGUoKStleGRheXMpO3ZhciBjX3ZhbHVlPWVzY2FwZSh2YWx1ZSkrKChleGRheXM9PW51bGwpPyIiOiI7IGV4cGlyZXM9IitleGRhdGUudG9VVENTdHJpbmcoKSkrIjsgcGF0aD0vIjtkb2N1bWVudC5jb29raWU9Y19uYW1lKyI9IitjX3ZhbHVlO30pO30KZnVuY3Rpb24gbG9nQ29va2llKG5hbWUsdmFsdWUsZXhwaXJlcyx0cmllcyl7aWYodHlwZW9mIHRyaWVzPT09J3VuZGVmaW5lZCcpe3RyaWVzPTU7fQppZih0eXBlb2Ygd2luZG93LkNvb2tpZUxvZ2dlcj09PSd1bmRlZmluZWQnKXtpZih0cmllcyl7c2V0VGltZW91dChmdW5jdGlvbigpe2xvZ0Nvb2tpZShuYW1lLHZhbHVlLGV4cGlyZXMsdHJpZXMtMSk7fSwxMDAwKTt9fWVsc2V7d2luZG93LkNvb2tpZUxvZ2dlci5sb2cobmFtZSx2YWx1ZSxleHBpcmVzKTt9fQpmdW5jdGlvbiBpc0Nvb2tpZUFsbG93ZWQobmFtZSxjYWxsYmFjayl7Y2FsbGJhY2sodHJ1ZSk7fQpmdW5jdGlvbiBnYVBhZ2VWaWV3KHBwKXsoZDJjX2dhQWNjb3VudHMuYWxsfHxbXSkubWFwKGZ1bmN0aW9uKGlkKXtsZXQgZD17cGFnZV9wYXRoOnBwfTtpZihkZXBsb3ltZW50VHlwZSE9J2xpdmUnfHwnVVMnIT0nQ0EnKXtjb25zb2xlLmxvZygnZ3RhZycsJ2NvbmZpZycsaWQsZCkKcmV0dXJuO30KZ3RhZygnY29uZmlnJyxpZCxkKTt9KTt9O2Z1bmN0aW9uIGdhNFBhZ2VWaWV3KHBwKXtpZihkZXBsb3ltZW50VHlwZSE9J2xpdmUnfHwnVVMnIT0nQ0EnKXtyZXR1cm47fQpndGFnKCdzZXQnLHsncGFnZV9wYXRoJzpwcH0pO2d0YWcoJ2V2ZW50JywncGFnZV92aWV3Jyx7J3NlbmRfdG8nOidHLVAyQ0NKNFJHMFonfSk7fQpmdW5jdGlvbiBnZXRHYUNsaWVudElkKCl7cmV0dXJuKCgodHlwZW9mIHdpbmRvdy5nYT09PSdvYmplY3QnJiZ3aW5kb3cuZ2EhPT1udWxsKXx8dHlwZW9mIHdpbmRvdy5nYT09PSdmdW5jdGlvbicpJiZ0eXBlb2YgZ2FbJ2dldEFsbCddPT09J2Z1bmN0aW9uJyk\/Z2EuZ2V0QWxsKClbMF0uZ2V0KCdjbGllbnRJZCcpOicnO30KZnVuY3Rpb24gZ2FUcmFjayhhYSxjLGEsbCx2KXtsZXQgYWM9W107Y29uc3QgY3M9ZGVwbG95bWVudFR5cGUhPSdsaXZlJ3x8J1VTJyE9J0NBJztjb25zdCBjaD0obyxkKT0+dHlwZW9mIG8hPT0ndW5kZWZpbmVkJz9vOmQ7YWE9Y2goYWEsJycpO2M9Y2goYywnJyk7YT1jaChhLCcnKTtsPWNoKGwsJycpO3Y9Y2godiwxKTtpZihhYT09J2ludGVybmFsJyl7YWM9ZDJjX2dhQWNjb3VudHMuaW50ZXJuYWw7fWVsc2UgaWYoYWEubGVuZ3RoJiYvXihifGN8ZClcLl90cmFja0V2ZW50Ly50ZXN0KGFhKSYmdHlwZW9mIGQyY19nYUFjY291bnRzW2FhWzBdXSE9J3VuZGVmaW5lZCcpe2FjLnB1c2goZDJjX2dhQWNjb3VudHNbYWFbMF1dKTt9CmlmKGFjLmxlbmd0aCl7YWMubWFwKChpZCk9Pntjb25zdCBkPXtzZW5kX3RvOmlkLGV2ZW50X2FjdGlvbjphLGV2ZW50X2NhdGVnb3J5OmMsZXZlbnRfbGFiZWw6bCx2YWx1ZTp2fTtpZihjcyl7Y29uc29sZS5sb2coYEdBVFJBQ0stR1RBRy1TRU5ELVRPWyR7aWR9XTpgLCdldmVudCcsYSxkKTtyZXR1cm47fQpndGFnKCdldmVudCcsYSxkKTt9KTt9ZWxzZXtjb25zdCBkPXtldmVudF9hY3Rpb246YSxldmVudF9jYXRlZ29yeTpjLGV2ZW50X2xhYmVsOmwsdmFsdWU6dn07aWYoY3Mpe2NvbnNvbGUubG9nKCdHQVRSQUNLLUdUQUctTk8tU0VORC1UTzonLCdldmVudCcsYSxkKTt9ZWxzZXtndGFnKCdldmVudCcsYSxkKTt9fX07ZnVuY3Rpb24gb25Db25maXJtU3VibWl0KGV2ZW50KXtyZXR1cm4gdHJ1ZTt9CmZ1bmN0aW9uIHNldFNlc3Npb25Db29raWUoY19uYW1lLHZhbHVlKXt2YXIgZXhkYXlzPW51bGw7dmFyIGNfdmFsdWU9ZXNjYXBlKHZhbHVlKSsiO2V4cGlyZXM9MDtwYXRoPS8iO2RvY3VtZW50LmNvb2tpZT1jX25hbWUrIj0iK2NfdmFsdWU7bG9nQ29va2llKGNfbmFtZSk7fQpmdW5jdGlvbiBpbml0TENJKHBhcmFtcyxuKXtpZihuPjIwKXJldHVybiBuO3ZhciBuPShuKT9uOjA7aWYodHlwZW9mIExDX0FQST09J3VuZGVmaW5lZCd8fHR5cGVvZiBMQ19JbnZpdGU9PSd1bmRlZmluZWQnKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aW5pdExDSShwYXJhbXMsKytuKTt9LDUwMCk7cmV0dXJuO30KaWYodHlwZW9mIExDX0FQSSE9J3VuZGVmaW5lZCcmJnR5cGVvZiBMQ19JbnZpdGUhPSd1bmRlZmluZWQnJiZwYXJhbXMpe3JldHVybiBMQ19BUEkuc2V0X2N1c3RvbV92YXJpYWJsZXMocGFyYW1zKTt9fQpmdW5jdGlvbiBzYW5pdGl6ZVJlZmVyZXIocmVmZXJlcil7cmV0dXJuIHJlZmVyZXIucmVwbGFjZSgvWyciYCgpPD5cW1xde318IV0vZywnJyk7fQpmdW5jdGlvbiBnZXRSZWZlcnJlclZhckZ1bmN0aW9uKHJlZmVyZXIpe3JldHVybiBmdW5jdGlvbigpe2lmKCcnPT1yZWZlcmVyKXJlZmVyZXI9ZG9jdW1lbnQucmVmZXJyZXI7cmVmZXJlcj1zYW5pdGl6ZVJlZmVyZXIocmVmZXJlcik7dmFyIHFzLHFzaW5kZXg9cmVmZXJlci5pbmRleE9mKCc\/JykrMTtpZihxc2luZGV4PjApe3ZhciBxcz1yZWZlcmVyLnNsaWNlKHFzaW5kZXgpO3JldHVybiBwYXJzZVF1ZXJ5KHFzKTt9CnJldHVybnt9fX0KdmFyIGdldFJlZmVyZXJWYXJzPWdldFJlZmVycmVyVmFyRnVuY3Rpb24oJycpO3ZhciB1dG1fbGFuZGluZ19jb29raWU9KGdldENvb2tpZSgndXRtX2xhbmRpbmcnKSE9bnVsbCYmdHlwZW9mIGdldENvb2tpZSgndXRtX2xhbmRpbmcnKSE9J3VuZGVmaW5lZCc\/Z2V0Q29va2llKCd1dG1fbGFuZGluZycpOicnKTtpZih1dG1fbGFuZGluZ19jb29raWUubGVuZ3RoPT0wKXtzZXRDb29raWUoJ3V0bV9sYW5kaW5nJyx3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpO30KaWYoZGVwbG95bWVudFR5cGU9PSdsaXZlJyl7dmFyIGdlbmVyYXRlR1VJRD1mdW5jdGlvbigpe3ZhciBTND1mdW5jdGlvbigpe3JldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMHgxMDAwMCkudG9TdHJpbmcoMTYpO307cmV0dXJuKFM0KCkrUzQoKSsiLSIrClM0KCkrIi0iKwpTNCgpKyItIisKUzQoKSsiLSIrClM0KCkrUzQoKStTNCgpKTt9CnZhciB1cmxWYXJzPWdldFVybFZhcnMoKTt2YXIgcmVmZXJlclZhcnM9Z2V0UmVmZXJlclZhcnMoKTt2YXIgcmVmZXJlcj0nJzt2YXIgcmF3UmVmZXJyZXI9cmVmZXJlcjtyZWZlcmVyPShyZWZlcmVyLmxlbmd0aDwxPzA6cmVmZXJlcik7aWYoJyc9PXJhd1JlZmVycmVyKXJhd1JlZmVycmVyPWRvY3VtZW50LnJlZmVycmVyO3ZhciBpdGVtVHlwZT0nY2FyJztpdGVtVHlwZT0oaXRlbVR5cGUubGVuZ3RoPDE\/MDppdGVtVHlwZSk7aWYoaXNOYU4ocmVmZXJlcikpe3JlZmVyZXI9cmVmZXJlci5yZXBsYWNlKC9cLy9nLCJ8IikucmVwbGFjZSgvXD8vZywiX18iKS5yZXBsYWNlKC9cdC9nLCcnKS5yZXBsYWNlKC9cbi9nLCcnKS5yZXBsYWNlKC9cci9nLCcnKS5yZXBsYWNlQWxsKCclMEEnLCcnKS5yZXBsYWNlQWxsKCclMDknLCcnKS5yZXBsYWNlQWxsKCclMEInLCcnKS5yZXBsYWNlQWxsKCclMDAnLCcnKS5yZXBsYWNlQWxsKCclMEQnLCcnKTt9CnZhciBtYWtlPSIiO2lmKG1ha2UubGVuZ3RoPT0wKW1ha2U9IjAiO3ZhciBtb2RlbD0iIjtpZihtb2RlbC5sZW5ndGg9PTApbW9kZWw9IjAiO3ZhciB5ZWFyPSIiO2lmKHllYXIubGVuZ3RoPT0wKXllYXI9IjAiO3ZhciBpc21vYmlsZT0iMSI7aWYoaXNtb2JpbGUubGVuZ3RoPT0wKWlzbW9iaWxlPSIwIjt2YXIgb3JpZ1NvdXJjZT0iIjt2YXIgb3JpZ0NhbXBhaWduPSIiO3ZhciBvcmlnS2V5d29yZD0iIjtpZih1cmxWYXJzWyJyZWxhbmNlSUQiXSE9dW5kZWZpbmVkKQpzZXRDb29raWUoJ3JlbGFuY2VJRCcsdXJsVmFyc1sicmVsYW5jZUlEIl0sMTgwKTt2YXIgc291cmNlPShnZXRDb29raWUoJ3V0bV9zb3VyY2UnKSE9bnVsbCYmdHlwZW9mIGdldENvb2tpZSgndXRtX3NvdXJjZScpIT0ndW5kZWZpbmVkJz9nZXRDb29raWUoJ3V0bV9zb3VyY2UnKTonJyk7dmFyIHNvdXJjZUNvb2tpZT1zb3VyY2U7dmFyIHNvdXJjZVVSTD0iIjtpZigidXRtX3NvdXJjZSJpbiB1cmxWYXJzKXtpZihzb3VyY2UubGVuZ3RoPT0wKXNvdXJjZT11cmxWYXJzWyd1dG1fc291cmNlJ107c291cmNlVVJMPXVybFZhcnNbJ3V0bV9zb3VyY2UnXTt9CnZhciBjYW1wYWlnbj0oZ2V0Q29va2llKCd1dG1fY2FtcGFpZ24nKSE9bnVsbCYmdHlwZW9mIGdldENvb2tpZSgndXRtX2NhbXBhaWduJykhPSd1bmRlZmluZWQnP2dldENvb2tpZSgndXRtX2NhbXBhaWduJyk6JycpO2lmKGNhbXBhaWduLnRvTG93ZXJDYXNlKCk9PSdlY29sZS1ldHVkaWFudCcpe2NhbXBhaWduPScnO3NldENvb2tpZSgndXRtX2NhbXBhaWduJywiIiwxKTt9CnZhciBjYW1wYWlnbkNvb2tpZT1jYW1wYWlnbjt2YXIgY2FtcGFpZ25VUkw9IiI7aWYoInV0bV9jYW1wYWlnbiJpbiB1cmxWYXJzKXtpZihjYW1wYWlnbi5sZW5ndGg9PTApY2FtcGFpZ249dXJsVmFyc1sndXRtX2NhbXBhaWduJ107Y2FtcGFpZ25VUkw9dXJsVmFyc1sndXRtX2NhbXBhaWduJ107fQp2YXIgbWVkaXVtPShnZXRDb29raWUoJ3V0bV9tZWRpdW0nKSE9bnVsbCYmdHlwZW9mIGdldENvb2tpZSgndXRtX21lZGl1bScpIT0ndW5kZWZpbmVkJz9nZXRDb29raWUoJ3V0bV9tZWRpdW0nKTonJyk7dmFyIG1lZGl1bUNvb2tpZT1tZWRpdW07dmFyIG1lZGl1bVVSTD0iIjtpZigidXRtX21lZGl1bSJpbiB1cmxWYXJzKXtpZihtZWRpdW0ubGVuZ3RoPT0wKW1lZGl1bT11cmxWYXJzWyd1dG1fbWVkaXVtJ107bWVkaXVtVVJMPXVybFZhcnNbJ3V0bV9tZWRpdW0nXTt9CnZhciBjb29raWVJbkNhbXBhaWducz1mYWxzZTt2YXIgdXJsSW5DYW1wYWlnbnM9ZmFsc2U7dmFyIGhhc0dvb2dsZU9yZ2FuaWM9ZmFsc2U7Zm9yKHZhciBpPTA7aTxhbGxDYW1wYWlnbnMubGVuZ3RoO2krKyl7aWYoYWxsQ2FtcGFpZ25zW2ldWzFdLnRvTG93ZXJDYXNlKCk9PXNvdXJjZVVSTC50b0xvd2VyQ2FzZSgpJiZhbGxDYW1wYWlnbnNbaV1bMl0udG9Mb3dlckNhc2UoKT09Y2FtcGFpZ25VUkwudG9Mb3dlckNhc2UoKSl1cmxJbkNhbXBhaWducz10cnVlO2lmKGFsbENhbXBhaWduc1tpXVsxXS50b0xvd2VyQ2FzZSgpPT1zb3VyY2VDb29raWUudG9Mb3dlckNhc2UoKSYmYWxsQ2FtcGFpZ25zW2ldWzJdLnRvTG93ZXJDYXNlKCk9PWNhbXBhaWduQ29va2llLnRvTG93ZXJDYXNlKCkpY29va2llSW5DYW1wYWlnbnM9dHJ1ZTtpZihhbGxDYW1wYWlnbnNbaV1bMV0udG9Mb3dlckNhc2UoKT09J2dvb2dsZScmJmFsbENhbXBhaWduc1tpXVsyXS50b0xvd2VyQ2FzZSgpPT0nb3JnYW5pcXVlJyloYXNHb29nbGVPcmdhbmljPXRydWU7fQppZihzb3VyY2VVUkw9PSIiJiZjYW1wYWlnblVSTD09IiImJnNvdXJjZT09IiImJmNhbXBhaWduPT0iIiYmaGFzR29vZ2xlT3JnYW5pYyl7c291cmNlVVJMPSJHb29nbGUiO2NhbXBhaWduVVJMPSJPcmdhbmlxdWUiO3VybEluQ2FtcGFpZ25zPXRydWU7fQppZihjb29raWVJbkNhbXBhaWducz09ZmFsc2UmJnVybEluQ2FtcGFpZ25zPT10cnVlKXtzb3VyY2U9c291cmNlVVJMO2NhbXBhaWduPWNhbXBhaWduVVJMO3NvdXJjZUNvb2tpZT1zb3VyY2VVUkw7Y2FtcGFpZ25Db29raWU9Y2FtcGFpZ25VUkw7fQppZihzb3VyY2VDb29raWUudG9Mb3dlckNhc2UoKT09J3NlbScmJnNvdXJjZVVSTC50b0xvd2VyQ2FzZSgpPT0nZ29vZ2xlJyYmdXJsSW5DYW1wYWlnbnMpe3NvdXJjZT1zb3VyY2VVUkw7Y2FtcGFpZ249Y2FtcGFpZ25VUkw7fQp2YXIgY3VycmVudFNpdGVJRD0xNTU7aWYoKGN1cnJlbnRTaXRlSUQ9PTU5Mnx8Y3VycmVudFNpdGVJRD09NDM3fHxjdXJyZW50U2l0ZUlEPT01Nzl8fGN1cnJlbnRTaXRlSUQ9PTU4NSkmJnNvdXJjZUNvb2tpZS50b0xvd2VyQ2FzZSgpPT0nc2VtJyl7c291cmNlQ29va2llPSdHb29nbGUnO3NvdXJjZT0nR29vZ2xlJztjYW1wYWlnbkNvb2tpZT0nTmV1Zic7Y2FtcGFpZ249J05ldWYnO30KaWYoY2FtcGFpZ25Db29raWUudG9Mb3dlckNhc2UoKT09J29yZ2FuaWMnfHxjYW1wYWlnbkNvb2tpZS50b0xvd2VyQ2FzZSgpPT0nb3JnYW5pcXVlJyl7c291cmNlQ29va2llPScnO2NhbXBhaWduQ29va2llPScnO21lZGl1bUNvb2tpZT0nJzt9CmlmKHNvdXJjZS5sZW5ndGg+MCYmKHNvdXJjZUNvb2tpZS5sZW5ndGg9PTB8fHNvdXJjZUNvb2tpZT09c291cmNlKSlzZXRDb29raWUoJ3V0bV9zb3VyY2UnLHNvdXJjZSwxODApO2lmKGNhbXBhaWduLmxlbmd0aD4wJiYoY2FtcGFpZ25Db29raWUubGVuZ3RoPT0wfHxjYW1wYWlnbkNvb2tpZT09Y2FtcGFpZ24pKXNldENvb2tpZSgndXRtX2NhbXBhaWduJyxjYW1wYWlnbiwxODApO2lmKG1lZGl1bS5sZW5ndGg+MCYmKG1lZGl1bUNvb2tpZS5sZW5ndGg9PTB8fG1lZGl1bUNvb2tpZT09bWVkaXVtKSlzZXRDb29raWUoJ3V0bV9tZWRpdW0nLG1lZGl1bSwxODApO3ZhciBrZXl3b3JkPShnZXRDb29raWUoJ3V0bV9rZXl3b3JkJykhPW51bGwmJnR5cGVvZiBnZXRDb29raWUoJ3V0bV9rZXl3b3JkJykhPSd1bmRlZmluZWQnP2dldENvb2tpZSgndXRtX2tleXdvcmQnKTonJyk7aWYoImt3ImluIHVybFZhcnMpe2tleXdvcmQ9ZGVjb2RlU3RyaW5nKHVybFZhcnNbJ2t3J10sMyk7fQppZihrZXl3b3JkLmxlbmd0aD4wKXNldENvb2tpZSgndXRtX2tleXdvcmQnLGtleXdvcmQsMTgwKTt2YXIgaXNSZXRhcmdldGluZz1mYWxzZTtmb3IodmFyIGk9MDtpPHJldGFyZ2V0aW5nQ2FtcGFpZ25zLmxlbmd0aDtpKyspe2lmKHJldGFyZ2V0aW5nQ2FtcGFpZ25zW2ldWzFdLnRvTG93ZXJDYXNlKCk9PXNvdXJjZVVSTC50b0xvd2VyQ2FzZSgpJiZyZXRhcmdldGluZ0NhbXBhaWduc1tpXVsyXS50b0xvd2VyQ2FzZSgpPT1jYW1wYWlnblVSTC50b0xvd2VyQ2FzZSgpKWlzUmV0YXJnZXRpbmc9dHJ1ZTt9CmlmKGlzUmV0YXJnZXRpbmcpe3ZhciBzb3VyY2VSZXRhcmdldGluZz0oZ2V0Q29va2llKCd1dG1fc291cmNlX3JldGFyZ2V0aW5nJykhPW51bGwmJnR5cGVvZiBnZXRDb29raWUoJ3V0bV9zb3VyY2VfcmV0YXJnZXRpbmcnKSE9J3VuZGVmaW5lZCc\/Z2V0Q29va2llKCd1dG1fc291cmNlX3JldGFyZ2V0aW5nJyk6JycpO3ZhciBjYW1wYWlnblJldGFyZ2V0aW5nPShnZXRDb29raWUoJ3V0bV9jYW1wYWlnbl9yZXRhcmdldGluZycpIT1udWxsJiZ0eXBlb2YgZ2V0Q29va2llKCd1dG1fY2FtcGFpZ25fcmV0YXJnZXRpbmcnKSE9J3VuZGVmaW5lZCc\/Z2V0Q29va2llKCd1dG1fY2FtcGFpZ25fcmV0YXJnZXRpbmcnKTonJyk7aWYoc291cmNlIT1zb3VyY2VVUkx8fGNhbXBhaWduIT1jYW1wYWlnblVSTCl7aWYoc291cmNlVVJMLmxlbmd0aD4wJiZzb3VyY2VSZXRhcmdldGluZy5sZW5ndGg9PTApc2V0Q29va2llKCd1dG1fc291cmNlX3JldGFyZ2V0aW5nJyxzb3VyY2VVUkwsMTgwKTtpZihjYW1wYWlnblVSTC5sZW5ndGg+MCYmY2FtcGFpZ25SZXRhcmdldGluZy5sZW5ndGg9PTApc2V0Q29va2llKCd1dG1fY2FtcGFpZ25fcmV0YXJnZXRpbmcnLGNhbXBhaWduVVJMLDE4MCk7fQpzZXRDb29raWUoJ3V0bV9zb3VyY2UnLHNvdXJjZVVSTCwxODApO3NldENvb2tpZSgndXRtX2NhbXBhaWduJyxjYW1wYWlnblVSTCwxODApO30KdmFyIHNvdXJjZVJldGFyZ2V0aW5nPShnZXRDb29raWUoJ3V0bV9zb3VyY2VfcmV0YXJnZXRpbmcnKSE9bnVsbCYmdHlwZW9mIGdldENvb2tpZSgndXRtX3NvdXJjZV9yZXRhcmdldGluZycpIT0ndW5kZWZpbmVkJz9nZXRDb29raWUoJ3V0bV9zb3VyY2VfcmV0YXJnZXRpbmcnKTonJyk7dmFyIGNhbXBhaWduUmV0YXJnZXRpbmc9KGdldENvb2tpZSgndXRtX2NhbXBhaWduX3JldGFyZ2V0aW5nJykhPW51bGwmJnR5cGVvZiBnZXRDb29raWUoJ3V0bV9jYW1wYWlnbl9yZXRhcmdldGluZycpIT0ndW5kZWZpbmVkJz9nZXRDb29raWUoJ3V0bV9jYW1wYWlnbl9yZXRhcmdldGluZycpOicnKTtpZihzb3VyY2VSZXRhcmdldGluZy5sZW5ndGg+MClzZXRDb29raWUoJ3V0bV9zb3VyY2VfcmV0YXJnZXRpbmcnLHNvdXJjZVJldGFyZ2V0aW5nLDE4MCk7aWYoY2FtcGFpZ25SZXRhcmdldGluZy5sZW5ndGg+MClzZXRDb29raWUoJ3V0bV9jYW1wYWlnbl9yZXRhcmdldGluZycsY2FtcGFpZ25SZXRhcmdldGluZywxODApO2lmKCFzb3VyY2Upe2lmKHJhd1JlZmVycmVyIT0nJyl7dmFyIHNlbGZIb3N0PShkb2N1bWVudC5sb2NhdGlvbi5ocmVmKS5tYXRjaCgvXltBLXpdKzpcL1wvKFteXC9dKylcLz8uKi8pO2lmKHNlbGZIb3N0KXtzZWxmSG9zdD1zZWxmSG9zdFsxXX0KdmFyIGhvc3Q9KHJhd1JlZmVycmVyLnRvU3RyaW5nKCkpLm1hdGNoKC9eW0Etel0rOlwvXC8oW15cL10rKVwvPy4qLyk7aWYoaG9zdCl7aG9zdD1ob3N0WzFdfWVsc2V7aG9zdD1zZWxmSG9zdDt9CmlmKGhvc3QhPXNlbGZIb3N0KXtob3N0PWhvc3Quc3BsaXQoJy4nKTtpZihob3N0Lmxlbmd0aD4yKXtzb3VyY2U9aG9zdFsxXTt9CmlmKGhvc3QubGVuZ3RoPT0yKXtzb3VyY2U9aG9zdFswXTt9CmlmKHNvdXJjZSlzZXRDb29raWUoJ3V0bV9zb3VyY2UnLHNvdXJjZSwxODApO2lmKCFjYW1wYWlnbil7Y2FtcGFpZ249J29yZ2FuaWMnO3NldENvb2tpZSgndXRtX2NhbXBhaWduJyxjYW1wYWlnbiwxODApO319fX0KaWYoc291cmNlLmxlbmd0aD09MClzb3VyY2U9IjAiO2lmKGNhbXBhaWduLmxlbmd0aD09MCljYW1wYWlnbj0iMCI7aWYoc291cmNlUmV0YXJnZXRpbmcubGVuZ3RoPT0wKXNvdXJjZVJldGFyZ2V0aW5nPSIwIjtpZihjYW1wYWlnblJldGFyZ2V0aW5nLmxlbmd0aD09MCljYW1wYWlnblJldGFyZ2V0aW5nPSIwIjtpZih1cmxWYXJzWyJEaXNwbGF5U291cmNlIl0hPXVuZGVmaW5lZCl7aWYoZ2V0Q29va2llKCdEaXNwbGF5U291cmNlJyk9PW51bGx8fHR5cGVvZiBnZXRDb29raWUoJ0Rpc3BsYXlTb3VyY2UnKT09J3VuZGVmaW5lZCcpe2lmKHVybFZhcnNbInV0bV9jYW1wYWlnbiJdIT11bmRlZmluZWQmJihnZXRDb29raWUoJ0Rpc3BsYXlTb3VyY2VVVE1DYW1wYWlnbicpPT1udWxsfHx0eXBlb2YgZ2V0Q29va2llKCdEaXNwbGF5U291cmNlVVRNQ2FtcGFpZ24nKT09J3VuZGVmaW5lZCcpKXNldENvb2tpZSgnRGlzcGxheVNvdXJjZVVUTUNhbXBhaWduJyx1cmxWYXJzWyJ1dG1fY2FtcGFpZ24iXSwxODApO2lmKHVybFZhcnNbInV0bV9zb3VyY2UiXSE9dW5kZWZpbmVkJiYoZ2V0Q29va2llKCdEaXNwbGF5U291cmNlVVRNU291cmNlJyk9PW51bGx8fHR5cGVvZiBnZXRDb29raWUoJ0Rpc3BsYXlTb3VyY2VVVE1Tb3VyY2UnKT09J3VuZGVmaW5lZCcpKXNldENvb2tpZSgnRGlzcGxheVNvdXJjZVVUTVNvdXJjZScsdXJsVmFyc1sidXRtX3NvdXJjZSJdLDE4MCk7fQpzZXRDb29raWUoJ0Rpc3BsYXlTb3VyY2UnLHVybFZhcnNbIkRpc3BsYXlTb3VyY2UiXSwxODApO30KdmFyIHNldEdjbGlkQ29va2llPXRydWU7aWYodXJsVmFyc1sidXRtX3NvdXJjZSJdIT11bmRlZmluZWQpe2lmKHVybFZhcnNbInV0bV9zb3VyY2UiXT09J1NFTSd8fHVybFZhcnNbInV0bV9zb3VyY2UiXT09J1RyYWRlcid8fHVybFZhcnNbInV0bV9zb3VyY2UiXT09J0dvb2dsZS1uZXJkbWFya2V0aW5nJyl7c2V0R2NsaWRDb29raWU9ZmFsc2U7fX0KaWYodXJsVmFyc1siZ2NsaWQiXSE9dW5kZWZpbmVkJiZzZXRHY2xpZENvb2tpZSl7c2V0Q29va2llKCdnY2xpZCcsdXJsVmFyc1siZ2NsaWQiXSwxODApO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixmdW5jdGlvbihldmVudCl7aWYoJ3VuZGVmaW5lZCchPXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZyl7c2F2ZUdDTElEPWZ1bmN0aW9uKCl7aWYoJ3VuZGVmaW5lZCc9PXR5cGVvZiB3aW5kb3cualF1ZXJ5KXtyZXR1cm47fQokLnBvc3QoImh0dHBzOi8vcmVzdC5kMmNtZWRpYS5jYS9nY2xpZC5yZXN0LmFwaS5waHAiLHtzZXNzaW9uaWQ6YWN0aXZlVXNlclByb2ZpbGVNbmcuc2Vzc2lvbmlkLGdjbGlkOnVybFZhcnNbJ2djbGlkJ119KTt9O3RyeXthY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlclNlc3Npb25DYWxsYmFjayhzYXZlR0NMSUQpO31jYXRjaChlcnJvcil7Y29uc29sZS5sb2coZXJyb3IpO319fSk7fQp3aW5kb3cuYWN0aXZlUGFnZT1wYWdlO3ZhciB1aWQ9KGdldENvb2tpZSgndWlkJykhPW51bGwmJnR5cGVvZiBnZXRDb29raWUoJ3VpZCcpIT0ndW5kZWZpbmVkJz9nZXRDb29raWUoJ3VpZCcpOmdlbmVyYXRlR1VJRCgpKTtzZXRDb29raWUoJ3VpZCcsdWlkLDE4MCk7dmFyIGRlYWxlcmlkPTE3MTc7dmFyIHNpdGVpZD0xNTU7d2luZG93LmFjdGl2ZVNpdGVJRD1zaXRlaWQ7d2luZG93LmFjdGl2ZURlYWxlcklEPWRlYWxlcmlkO3ZhciBjYXJpZD0nJztpZihjYXJpZC5sZW5ndGg9PTApY2FyaWQ9IjAiO2Z1bmN0aW9uIHRhZ0J1aWxkKGludGVybmFscyl7cmV0dXJuJzwnKyhpbnRlcm5hbHMuam9pbignICcpKSsnIC8+Jzt9CnZhciBjYWNoZUNsZWFyZXI9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjk5OTk5OTkpO3ZhciBhZGRUa0ltZz1mdW5jdGlvbihzcmMpe3N3aXRjaChkb2N1bWVudC5yZWFkeVN0YXRlKXtjYXNlImxvYWRpbmciOmRvY3VtZW50LndyaXRlKHRhZ0J1aWxkKFsnaW1nJywnc3R5bGU9IndpZHRoOjFweDtoZWlnaHQ6MXB4O3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MHB4O3RvcDowcHg7IicsJ3NyYz0iJytzcmMrJyInLCdhbHQ9IiInXSkpO2JyZWFrO2Nhc2UiaW50ZXJhY3RpdmUiOmNhc2UiY29tcGxldGUiOmRlZmF1bHQ6dHJ5e3ZhciBpbWc9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7aW1nLnN0eWxlLmNzc1RleHQ9J3dpZHRoOjFweDtoZWlnaHQ6MXB4O3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MHB4O3RvcDowcHg7JztpbWcuc2V0QXR0cmlidXRlKCdzcmMnLHNyYyk7aW1nLnNldEF0dHJpYnV0ZSgnYWx0JywnVHJhY2tpbmcgcGl4ZWwnKTtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGltZyk7fWNhdGNoKGV4KXtpZihjb25zb2xlJiZjb25zb2xlLmxvZyljb25zb2xlLmxvZygiRXJyb3IgdGt3aWRnZXQ6ICIrZXgubWVzc2FnZSk7fQpicmVhazt9fTtjYW1wYWlnbj1jYW1wYWlnbi5yZXBsYWNlKC9cdC9nLCcnKS5yZXBsYWNlKC9cbi9nLCcnKS5yZXBsYWNlKC9cci9nLCcnKS5yZXBsYWNlKCclMEEnLCcnKS5yZXBsYWNlKCclMDknLCcnKS5yZXBsYWNlKCclMEInLCcnKS5yZXBsYWNlKCclMDAnLCcnKS5yZXBsYWNlKCclMEQnLCcnKTtzb3VyY2U9c291cmNlLnJlcGxhY2UoL1x0L2csJycpLnJlcGxhY2UoL1xuL2csJycpLnJlcGxhY2UoL1xyL2csJycpLnJlcGxhY2UoJyUwQScsJycpLnJlcGxhY2UoJyUwOScsJycpLnJlcGxhY2UoJyUwQicsJycpLnJlcGxhY2UoJyUwMCcsJycpLnJlcGxhY2UoJyUwRCcsJycpO3ZhciB0a3NyYz0nL3Byb3h5X3NhdWIvd2Vic2l0ZUhpdHMvJysKZGVhbGVyaWQrIi8iK3NpdGVpZCsiLyIrY2FyaWQrIi8iK2VzY2FwZSh1aWQpKyIvIitwYWdlKyIvIitlc2NhcGUoc291cmNlKSsiLyIrZXNjYXBlKGNhbXBhaWduKSsiLyIrZXNjYXBlKG1ha2UpKyIvIitlc2NhcGUobW9kZWwpKyIvIit5ZWFyKyIvIisKaXNtb2JpbGUrIi8iK2VuY29kZVVSSUNvbXBvbmVudChyZWZlcmVyKSsiLyIrZXNjYXBlKGl0ZW1UeXBlKSsiLyIrZXNjYXBlKHNvdXJjZVJldGFyZ2V0aW5nKSsiLyIrZXNjYXBlKGNhbXBhaWduUmV0YXJnZXRpbmcpKyIvIitjYWNoZUNsZWFyZXIrJy5naWYnO2lmKHR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZz09J3VuZGVmaW5lZCd8fCFhY3RpdmVVc2VyUHJvZmlsZU1uZy5faXNCb3QoKSlhZGRUa0ltZyh0a3NyYyk7dmFyIGtleXdvcmRzPSIiO2lmKCJwImluIHJlZmVyZXJWYXJzJiZyZWZlcmVyLmluZGV4T2YoInlhaG9vIik+LTEpe2tleXdvcmRzPXJlZmVyZXJWYXJzWydwJ107fQppZigicSJpbiByZWZlcmVyVmFycyYmKHJlZmVyZXIuaW5kZXhPZigiZ29vZ2xlIik+LTF8fHJlZmVyZXIuaW5kZXhPZigiYmluZyIpPi0xKSl7a2V5d29yZHM9cmVmZXJlclZhcnNbJ3EnXTt9CnZhciB1TGFuZz0oZ2V0Q29va2llKCdsYW5nJyk9PSdlbicpPydlbic6J2ZyJzt3aW5kb3cuZmJDaGF0UmVmPXtyOidzaXRlJyxjOmNhbXBhaWduLHM6c291cmNlfTt2YXIgY3VzdG9tX3ZhcmlhYmxlcz1be25hbWU6J2xhbmd1YWdlJyx2YWx1ZTp1TGFuZ30se25hbWU6J3V0bV9jYW1wYWlnbicsdmFsdWU6Y2FtcGFpZ259LHtuYW1lOid1dG1fc291cmNlJyx2YWx1ZTpzb3VyY2V9LHtuYW1lOidwYWdlJyx2YWx1ZTpwYWdlfSx7bmFtZTondWlkJyx2YWx1ZTp1aWR9LHtuYW1lOidjYXJpZCcsdmFsdWU6Y2FyaWR9LHtuYW1lOidtYWtlJyx2YWx1ZTptYWtlfSx7bmFtZTonbW9kZWwnLHZhbHVlOm1vZGVsfSx7bmFtZToneWVhcicsdmFsdWU6eWVhcn0se25hbWU6J2lzTW9iaWxlU2l0ZScsdmFsdWU6aXNtb2JpbGV9XTt3aW5kb3cuY1ZhcmlhYmxlcz1jdXN0b21fdmFyaWFibGVzO3dpbmRvdy5yZWxhbmNlSGFuZGxlckZuYz1mdW5jdGlvbigpe3ZhciByZWxhbmNlSUQ9KGdldENvb2tpZSgncmVsYW5jZUlEJykhPW51bGwmJnR5cGVvZiBnZXRDb29raWUoJ3JlbGFuY2VJRCcpIT0ndW5kZWZpbmVkJz9nZXRDb29raWUoJ3JlbGFuY2VJRCcpOjApO2lmKHR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZyE9J3VuZGVmaW5lZCcmJnR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50IT0ndW5kZWZpbmVkJyl7YWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudChyZWxhbmNlSUQsJ3JlbGFuY2VJRCcpO2lmKHVybFZhcnNbIkRpc3BsYXlTb3VyY2UiXSE9dW5kZWZpbmVkKXthY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50KHVybFZhcnNbIkRpc3BsYXlTb3VyY2UiXSwnZGlzcGxheVNvdXJjZScpO2lmKHVybFZhcnNbInV0bV9jYW1wYWlnbiJdIT11bmRlZmluZWQpYWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudCh1cmxWYXJzWyJ1dG1fY2FtcGFpZ24iXSwndXRtX2NhbXBhaWduJyk7aWYodXJsVmFyc1sidXRtX3NvdXJjZSJdIT11bmRlZmluZWQpYWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudCh1cmxWYXJzWyJ1dG1fc291cmNlIl0sJ3V0bV9zb3VyY2UnKTt9fQplbHNlCnNldFRpbWVvdXQod2luZG93LnJlbGFuY2VIYW5kbGVyRm5jLDEwMDApO307dmFyIGluaXRGPWZ1bmN0aW9uKCl7aW5pdExDSShjdXN0b21fdmFyaWFibGVzKTt3aW5kb3cucmVsYW5jZUhhbmRsZXJGbmMoKTt9O2lmKHdpbmRvdy5hdHRhY2hFdmVudCl3aW5kb3cuYXR0YWNoRXZlbnQoJ29ubG9hZCcsaW5pdEYpO2Vsc2Ugd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLGluaXRGLGZhbHNlKTt2YXIgYWljdXJyZW50cGFnZT0nbmV3Y2Fycy5odG1sJztpZihBSUN1cnJlbnRDb25maWdJRD4wJiZ0eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmchPSd1bmRlZmluZWQnKXthY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50KEFJQ3VycmVudENvbmZpZ0lELCdBSUNvbmZpZycpO30KaWYoQUlJRFBlck5ld0NhcnNGcmVuY2gubGVuZ3RoPjAmJmFpY3VycmVudHBhZ2U9PSduZXdjYXJkZXRhaWwuaHRtbCcmJmdldENvb2tpZSgnbGFzdG5ld3ZlaGljbGUnKSE9bnVsbCl7dmFyIGxhc3RuZXd2ZWhpY2xlPWdldENvb2tpZSgnbGFzdG5ld3ZlaGljbGUnKTt2YXIgbGFzdG5ld3ZlaGljbGVzcGxpdD1sYXN0bmV3dmVoaWNsZS5zcGxpdCgnfHx8Jyk7dmFyIGFpbmV3Y2FyaWQ9MDtpZih0eXBlb2YgQUlJRFBlck5ld0NhcnNGcmVuY2hbbGFzdG5ld3ZlaGljbGVzcGxpdFswXStsYXN0bmV3dmVoaWNsZXNwbGl0WzFdK2xhc3RuZXd2ZWhpY2xlc3BsaXRbMl1dIT09J3VuZGVmaW5lZCcpYWluZXdjYXJpZD1BSUlEUGVyTmV3Q2Fyc0ZyZW5jaFtsYXN0bmV3dmVoaWNsZXNwbGl0WzBdK2xhc3RuZXd2ZWhpY2xlc3BsaXRbMV0rbGFzdG5ld3ZlaGljbGVzcGxpdFsyXV07aWYodHlwZW9mIEFJSURQZXJOZXdDYXJzRW5nbGlzaFtsYXN0bmV3dmVoaWNsZXNwbGl0WzBdK2xhc3RuZXd2ZWhpY2xlc3BsaXRbMV0rbGFzdG5ld3ZlaGljbGVzcGxpdFsyXV0hPT0ndW5kZWZpbmVkJylhaW5ld2NhcmlkPUFJSURQZXJOZXdDYXJzRW5nbGlzaFtsYXN0bmV3dmVoaWNsZXNwbGl0WzBdK2xhc3RuZXd2ZWhpY2xlc3BsaXRbMV0rbGFzdG5ld3ZlaGljbGVzcGxpdFsyXV07aWYoYWluZXdjYXJpZD4wJiZ0eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmchPSd1bmRlZmluZWQnKXthY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50KGFpbmV3Y2FyaWQsJ0FJQ29uZmlnTmV3Q2FyJyk7fX19CnNldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgZm49ZnVuY3Rpb24oKXtpZih0eXBlb2YgalF1ZXJ5IT0ndW5kZWZpbmVkJyl7cmV0dXJuIGpRdWVyeS5yZWFkeSgpO30Kc2V0VGltZW91dChmbiwxMDApO30KZm4oKTt9LDEwMDApOwovKl1dPiovCgooYXN5bmMgKCkgPT4gewoJCgl0cnkgewoJCXZhciBsYW5nID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYm9keScpLmNsYXNzTmFtZS5tYXRjaCgnRlJFTkNIJykgPyAnZnInIDogJ2VuJzsKCQkKCQl2YXIgdXJsID0gbmV3IFVSTChgL2pzL2pzb24vbWVudVRpdGxlc18ke2xhbmd9Lmpzb25gLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKS5ocmVmOwoJCXJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsKTsKCQl0ZXh0ID0gYXdhaXQgcmVzcG9uc2UudGV4dCgpOwoJCQoJCWlmICh0ZXh0KSB7CgkJCWRhdGEgPSBKU09OLnBhcnNlKHRleHQpOwoJCQl2YXIgbXVsdGkgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdVU0VEJyk7CgkJCQoJCQlpZiAobXVsdGkubGVuZ3RoKSB7CgkJCQlmb3IodmFyIGkgPSAwOyBpIDwgbXVsdGkubGVuZ3RoOyBpKyspIHsKCQkJCQltdWx0aVtpXS5xdWVyeVNlbGVjdG9yKCcuc2hyaW5rLWdyb3cnKS50ZXh0Q29udGVudCA9IGRhdGFbJ1VTRUQnXS50ZXh0OwoJCQkJfQoJCQl9CgkJCWVsc2UgewoJCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI01haW5NZW51X1VTRUQgPiBhJykudGV4dENvbnRlbnQgPSBkYXRhWydVU0VEJ10udGV4dDsKCQkJCXdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgncmVzaXplJykpOwoJCQl9CgkJfQoJCQoJfSBjYXRjaCAoZSl7CgkJY29uc29sZS5sb2coZSk7Cgl9CgkKfSkoKTsKCgkvKjwhW0NEQVRBWyovCgl2YXIgcGFyYW1zID0gZ2V0VXJsVmFycygpOwoJLy9zZXQgcGFyYW0gdmFsdWUgaW50byBzZXNzaW9uIHN0b3JhZ2UKCWlmICh0eXBlb2Ygc2Vzc2lvblN0b3JhZ2UgIT09ICd1bmRlZmluZWQnKSB7CgoJCWlmKHBhcmFtcy5oYXNPd25Qcm9wZXJ0eSgnaCcpKXsKCQkJc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnaCcscGFyYW1zLmgpOwoJCX0KCgkJaWYocGFyYW1zLmhhc093blByb3BlcnR5KCdtJykpewoJCQlzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdtJyxwYXJhbXMubSk7CgkJfQoKCQl2YXIgaCA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2gnKTsKCQl2YXIgbSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ20nKTsKCgkJLy9yZWFkIHNlc3Npb24gYW5kIHJlbW92ZSBoZWFkZXIgJiBtZW51IGlmIG9wdGlvbnMgaGF2ZSBiZWVuIHNldAoJCWlmKGggPT09ICdubycpewoJCQkvL3N0dWZmIHRvIHJlbW92ZSB0aGF0IGlzIGNvbnNpZGVyZWQgcGFydCBvZiB0aGUgaGVhZGVyCgkJCXZhciBoZWFkZXJzID0gWwoJCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmhlYWRlci1pbmZvJyksCgkJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuaGVhZGVyLWZvb3RlcicpLAoJCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmxhbmd1YWdlQmFyJyksCgkJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuaGVhZGVyLWxvZ28nKSwKCQkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5tb2JpbGUtaGVhZGVyID4gKjpub3QoLmJ1cmdlci1tZW51LWNvbnRhaW5lciknKQoJCQldOwoKCQkJZm9yKHZhciBlbGVtIG9mIGhlYWRlcnMpewoJCQkJLy9yZW1vdmUgbm9kZSBsaXN0IHF1ZXJpZXMKCQkJCWlmIChOb2RlTGlzdC5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihlbGVtKSkgewoJCQkJCWZvcih2YXIgX2VsZW0gb2YgZWxlbSl7CgkJCQkJCWlmIChfZWxlbSAhPT0gbnVsbCkgewoJCQkJCQkJX2VsZW0ucmVtb3ZlKCk7CgkJCQkJCX0KCQkJCQl9CgkJCQl9CgkJCQllbHNlIGlmIChlbGVtICE9PSBudWxsKXsKCQkJCQllbGVtLnJlbW92ZSgpOwoJCQkJfQoJCQl9CgkJfQoKCQkvL21lbnUKCQlpZihtID09PSAnbm8nKXsKCQkJdmFyIG1lbnVzID0gWwoJCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmhlYWRlci1tZW51JyksCgkJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuYnVyZ2VyLW1lbnUtY29udGFpbmVyJyksCgkJCV07CgkJCWZvcih2YXIgZWxlbSBvZiBtZW51cyl7CgkJCQlpZihlbGVtICE9PSBudWxsKXsKCQkJCQllbGVtLnJlbW92ZSgpOwoJCQkJfQoJCQl9CgkJfQoKCQkvL3NpbmNlIG5vIGhlYWRlciBvciBtZW51LCByZW1vdmUgZXZlcnl0aGluZwoJCWlmIChtID09PSAnbm8nICYmIGggPT09ICdubycpIHsKCQkJdmFyIGhlYWRlciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5tb2JpbGUtaGVhZGVyJyk7CgkJCWlmKGhlYWRlciAhPT0gbnVsbCl7CgkJCQloZWFkZXIucmVtb3ZlKCk7CgkJCX0KCQl9CgoJfQoJLypdXT4qLwo=","js_rl":"CgkJCQl3aW5kb3cuZ1Rlc3RTcGVlZENvbm49RGF0ZS5ub3coKTsKCQkJCXdpbmRvdy5nUmVzb3VyY2VMb2FkZXJBbmRKcXVlcnlJc1JlYWR5PWZhbHNlOwoJCQkJd2luZG93LmdTa2VsZXRvbklzUmVtb3ZlZD1mYWxzZTsKCQkJCXdpbmRvdy5nRGVsYXllZExvYWRTY3JpcHQ9d2luZG93LmdEZWxheWVkTG9hZFNjcmlwdHx8ZnVuY3Rpb24oYSxkKXtzZXRUaW1lb3V0KCgpPT57dmFyIGU9ITA7Y29uc29sZS5sb2coIkdERUxBWUVETE9BRFNDUklQVDoiK2EsZCk7dmFyIG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7aWYoIm9iamVjdCI9PXR5cGVvZiBkJiZudWxsIT09ZClmb3IodmFyIG8gaW4gZClkLmhhc093blByb3BlcnR5KG8pJiZudWxsIT09ZFtvXSYmKC0xIT09WyJkZWZlciIsImFzeW5jIl0uaW5kZXhPZihvKSYmKGU9ITEpLG5bb109ZFtvXSk7bi5zcmM9YSxlJiYobi5hc3luYz0hMCksZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChuKX0pfTsKCQkJCgkJCQkJLyo8IVtDREFUQVsqLwoJCQkJCXZhciBib3hCbG9ja3MgPSB7ImNhciI6eyJmYnhfY2FyXzEiOnsidmlzaWJsZSI6dHJ1ZSwiaWQiOjEsInBvc2l0aW9uIjoxLCJkcml2ZXRyYWluIjoxLCJmdWVsIjoxLCJwcmljZSI6MzEzMDIsImNvbnNvIjo1Ljc5OTk5OTk5OTk5OTk5OTgyMjM2NDMxNjA1OTk3NDk1MzUzMjIxODkzMzEwNTQ2ODc1LCJjYXJDYXRlZ29yeSI6ImNhciIsImNhck1ha2UiOiJob25kYSIsImNhck1vZGVsIjoiQ2l2aWMgU2VkYW4iLCJzcGVjaWFsT3JkZXIiOjB9LCJmYnhfY2FyXzIiOnsidmlzaWJsZSI6dHJ1ZSwiaWQiOjIsInBvc2l0aW9uIjoyLCJkcml2ZXRyYWluIjoxLCJmdWVsIjoxLCJwcmljZSI6MzUxNjIsImNvbnNvIjo2LjA5OTk5OTk5OTk5OTk5OTY0NDcyODYzMjExOTk0OTkwNzA2NDQzNzg2NjIxMDkzNzUsImNhckNhdGVnb3J5IjoiY2FyIiwiY2FyTWFrZSI6ImhvbmRhIiwiY2FyTW9kZWwiOiJDaXZpYyBIYXRjaGJhY2siLCJzcGVjaWFsT3JkZXIiOjB9LCJmYnhfY2FyXzMiOnsidmlzaWJsZSI6dHJ1ZSwiaWQiOjMsInBvc2l0aW9uIjozLCJkcml2ZXRyYWluIjoxLCJmdWVsIjoxLCJwcmljZSI6Mzk1NjIsImNvbnNvIjo2LjQwMDAwMDAwMDAwMDAwMDM1NTI3MTM2Nzg4MDA1MDA5MjkzNTU2MjEzMzc4OTA2MjUsImNhckNhdGVnb3J5IjoiY2FyIiwiY2FyTWFrZSI6ImhvbmRhIiwiY2FyTW9kZWwiOiJDaXZpYyBTaSBTZWRhbiIsInNwZWNpYWxPcmRlciI6MH0sImZieF9jYXJfNCI6eyJ2aXNpYmxlIjp0cnVlLCJpZCI6NCwicG9zaXRpb24iOjQsImRyaXZldHJhaW4iOjEsImZ1ZWwiOjEsInByaWNlIjo0MTI2MiwiY29uc28iOjYuNDAwMDAwMDAwMDAwMDAwMzU1MjcxMzY3ODgwMDUwMDkyOTM1NTYyMTMzNzg5MDYyNSwiY2FyQ2F0ZWdvcnkiOiJjYXIiLCJjYXJNYWtlIjoiaG9uZGEiLCJjYXJNb2RlbCI6IkFjY29yZCBTZWRhbiIsInNwZWNpYWxPcmRlciI6MH0sImZieF9jYXJfNSI6eyJ2aXNpYmxlIjp0cnVlLCJpZCI6NSwicG9zaXRpb24iOjUsImRyaXZldHJhaW4iOjEsImZ1ZWwiOjEsInByaWNlIjo0MTQ2MiwiY29uc28iOjYuNDAwMDAwMDAwMDAwMDAwMzU1MjcxMzY3ODgwMDUwMDkyOTM1NTYyMTMzNzg5MDYyNSwiY2FyQ2F0ZWdvcnkiOiJjYXIiLCJjYXJNYWtlIjoiaG9uZGEiLCJjYXJNb2RlbCI6IkFjY29yZCBTZWRhbiIsInNwZWNpYWxPcmRlciI6MH19LCJzdXYiOnsiZmJ4X3N1dl8xIjp7InZpc2libGUiOnRydWUsImlkIjoxLCJwb3NpdGlvbiI6MSwiZHJpdmV0cmFpbiI6MSwiZnVlbCI6MSwicHJpY2UiOjMzNDMyLCJjb25zbyI6Ny40MDAwMDAwMDAwMDAwMDAzNTUyNzEzNjc4ODAwNTAwOTI5MzU1NjIxMzM3ODkwNjI1LCJjYXJDYXRlZ29yeSI6InN1diIsImNhck1ha2UiOiJob25kYSIsImNhck1vZGVsIjoiSFItViIsInNwZWNpYWxPcmRlciI6MH0sImZieF9zdXZfMiI6eyJ2aXNpYmxlIjp0cnVlLCJpZCI6MiwicG9zaXRpb24iOjIsImRyaXZldHJhaW4iOjEsImZ1ZWwiOjEsInByaWNlIjo0MDEwNywiY29uc28iOjcuMDk5OTk5OTk5OTk5OTk5NjQ0NzI4NjMyMTE5OTQ5OTA3MDY0NDM3ODY2MjEwOTM3NSwiY2FyQ2F0ZWdvcnkiOiJzdXYiLCJjYXJNYWtlIjoiaG9uZGEiLCJjYXJNb2RlbCI6IkNSLVYiLCJzcGVjaWFsT3JkZXIiOjB9LCJmYnhfc3V2XzMiOnsidmlzaWJsZSI6dHJ1ZSwiaWQiOjMsInBvc2l0aW9uIjozLCJkcml2ZXRyYWluIjoxLCJmdWVsIjoxLCJwcmljZSI6NTg2ODIsImNvbnNvIjo5LjMwMDAwMDAwMDAwMDAwMDcxMDU0MjczNTc2MDEwMDE4NTg3MTEyNDI2NzU3ODEyNSwiY2FyQ2F0ZWdvcnkiOiJzdXYiLCJjYXJNYWtlIjoiaG9uZGEiLCJjYXJNb2RlbCI6IlBpbG90Iiwic3BlY2lhbE9yZGVyIjowfSwiZmJ4X3N1dl80Ijp7InZpc2libGUiOnRydWUsImlkIjo0LCJwb3NpdGlvbiI6NCwiZHJpdmV0cmFpbiI6MSwiZnVlbCI6MSwicHJpY2UiOjYwMTIyLCJjb25zbyI6OS45MDAwMDAwMDAwMDAwMDAzNTUyNzEzNjc4ODAwNTAwOTI5MzU1NjIxMzM3ODkwNjI1LCJjYXJDYXRlZ29yeSI6InN1diIsImNhck1ha2UiOiJob25kYSIsImNhck1vZGVsIjoiUGFzc3BvcnQiLCJzcGVjaWFsT3JkZXIiOjB9fSwiaHlicmlkIjp7ImZieF9oeWJyaWRfMSI6eyJ2aXNpYmxlIjp0cnVlLCJpZCI6MSwicG9zaXRpb24iOjEsImRyaXZldHJhaW4iOjEsImZ1ZWwiOjgsInByaWNlIjozNzA2MiwiY29uc28iOjUuMDk5OTk5OTk5OTk5OTk5NjQ0NzI4NjMyMTE5OTQ5OTA3MDY0NDM3ODY2MjEwOTM3NSwiY2FyQ2F0ZWdvcnkiOiJjYXIiLCJjYXJNYWtlIjoiaG9uZGEiLCJjYXJNb2RlbCI6IkNpdmljIFNlZGFuIEh5YnJpZCIsInNwZWNpYWxPcmRlciI6MH0sImZieF9oeWJyaWRfMiI6eyJ2aXNpYmxlIjp0cnVlLCJpZCI6MiwicG9zaXRpb24iOjIsImRyaXZldHJhaW4iOjEsImZ1ZWwiOjgsInByaWNlIjozODk2MiwiY29uc28iOjUuNDAwMDAwMDAwMDAwMDAwMzU1MjcxMzY3ODgwMDUwMDkyOTM1NTYyMTMzNzg5MDYyNSwiY2FyQ2F0ZWdvcnkiOiJjYXIiLCJjYXJNYWtlIjoiaG9uZGEiLCJjYXJNb2RlbCI6IkNpdmljIEhhdGNoYmFjayBIeWJyaWQiLCJzcGVjaWFsT3JkZXIiOjB9LCJmYnhfaHlicmlkXzMiOnsidmlzaWJsZSI6dHJ1ZSwiaWQiOjMsInBvc2l0aW9uIjozLCJkcml2ZXRyYWluIjoxLCJmdWVsIjo4LCJwcmljZSI6NDY2NjIsImNvbnNvIjo1LjcwMDAwMDAwMDAwMDAwMDE3NzYzNTY4Mzk0MDAyNTA0NjQ2Nzc4MTA2Njg5NDUzMTI1LCJjYXJDYXRlZ29yeSI6ImNhciIsImNhck1ha2UiOiJob25kYSIsImNhck1vZGVsIjoiQWNjb3JkIEh5YnJpZCIsInNwZWNpYWxPcmRlciI6MH0sImZieF9oeWJyaWRfNCI6eyJ2aXNpYmxlIjp0cnVlLCJpZCI6NCwicG9zaXRpb24iOjQsImRyaXZldHJhaW4iOjEsImZ1ZWwiOjgsInByaWNlIjo0OTAzMiwiY29uc28iOjYuOTAwMDAwMDAwMDAwMDAwMzU1MjcxMzY3ODgwMDUwMDkyOTM1NTYyMTMzNzg5MDYyNSwiY2FyQ2F0ZWdvcnkiOiJzdXYiLCJjYXJNYWtlIjoiaG9uZGEiLCJjYXJNb2RlbCI6IkNSLVYgSHlicmlkIiwic3BlY2lhbE9yZGVyIjowfSwiZmJ4X2h5YnJpZF81Ijp7InZpc2libGUiOnRydWUsImlkIjo1LCJwb3NpdGlvbiI6NSwiZHJpdmV0cmFpbiI6MSwiZnVlbCI6OCwicHJpY2UiOjUyOTUyLCJjb25zbyI6NS43MDAwMDAwMDAwMDAwMDAxNzc2MzU2ODM5NDAwMjUwNDY0Njc3ODEwNjY4OTQ1MzEyNSwiY2FyQ2F0ZWdvcnkiOiJjYXIiLCJjYXJNYWtlIjoiaG9uZGEiLCJjYXJNb2RlbCI6IlByZWx1ZGUiLCJzcGVjaWFsT3JkZXIiOjB9fSwibWluaXZhbiI6eyJmYnhfbWluaXZhbl8xIjp7InZpc2libGUiOnRydWUsImlkIjoxLCJwb3NpdGlvbiI6MSwiZHJpdmV0cmFpbiI6MSwiZnVlbCI6MSwicHJpY2UiOjU0NTUyLCJjb25zbyI6OC41LCJjYXJDYXRlZ29yeSI6Im1pbml2YW4iLCJjYXJNYWtlIjoiaG9uZGEiLCJjYXJNb2RlbCI6Ik9keXNzZXkiLCJzcGVjaWFsT3JkZXIiOjB9fSwidHJ1Y2siOnsiZmJ4X3RydWNrXzEiOnsidmlzaWJsZSI6dHJ1ZSwiaWQiOjEsInBvc2l0aW9uIjoxLCJkcml2ZXRyYWluIjoxLCJmdWVsIjoxLCJwcmljZSI6NTYxMjIsImNvbnNvIjo5LjkwMDAwMDAwMDAwMDAwMDM1NTI3MTM2Nzg4MDA1MDA5MjkzNTU2MjEzMzc4OTA2MjUsImNhckNhdGVnb3J5IjoidHJ1Y2siLCJjYXJNYWtlIjoiaG9uZGEiLCJjYXJNb2RlbCI6IlJpZGdlbGluZSIsInNwZWNpYWxPcmRlciI6MH19LCJlbGVjdHJpYyI6eyJmYnhfZWxlY3RyaWNfMSI6eyJ2aXNpYmxlIjp0cnVlLCJpZCI6MSwicG9zaXRpb24iOjEsImRyaXZldHJhaW4iOjEsImZ1ZWwiOjQsInByaWNlIjo2MzEyMiwiY29uc28iOjEwMDAsImNhckNhdGVnb3J5Ijoic3V2IiwiY2FyTWFrZSI6ImhvbmRhIiwiY2FyTW9kZWwiOiJQcm9sb2d1ZSIsInNwZWNpYWxPcmRlciI6MH19fTsKCQkJCQkvKi0tKi8KCQkJCQl2YXIgYm94UG9zaXRpb25zID0geyJmYnhfY2FyXzEiOjEsImZieF9zdXZfMSI6MSwiZmJ4X2Nhcl8yIjoyLCJmYnhfaHlicmlkXzEiOjEsImZieF9oeWJyaWRfMiI6MiwiZmJ4X2Nhcl8zIjozLCJmYnhfc3V2XzIiOjIsImZieF9jYXJfNCI6NCwiZmJ4X2Nhcl81Ijo1LCJmYnhfaHlicmlkXzMiOjMsImZieF9oeWJyaWRfNCI6NCwiZmJ4X2h5YnJpZF81Ijo1LCJmYnhfbWluaXZhbl8xIjoxLCJmYnhfdHJ1Y2tfMSI6MSwiZmJ4X3N1dl8zIjozLCJmYnhfc3V2XzQiOjQsImZieF9lbGVjdHJpY18xIjoxfTsKCQkJCQkvKiogRmlsdGVyIEpTIGluIG5ld2NhcnMuanMgKiovCgkJCQkJLypdXT4qLwoJCQkJCgoJCQkJdmFyIExlYWRDb25maWdzID0gKHR5cGVvZiBMZWFkQ29uZmlncyAhPSAndW5kZWZpbmVkJykgPyBMZWFkQ29uZmlncyA6IHt9OwoKCQkJCWxldCBhY3RpdmVMYW5nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdGl2ZXNpdGVsYW5ndWFnZScpID8gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdGl2ZXNpdGVsYW5ndWFnZScpLnZhbHVlIDogJ0ZSRU5DSCc7CgoJCQkJTGVhZENvbmZpZ3MuRGVhbGVyQXBwb2ludG1lbnQgPSB7CgoJCQkJCXRpdGxlOiAoYWN0aXZlTGFuZyA9PSAnRU5HTElTSCcgPyAnUmVxdWVzdCBhbiBhcHBvaW50bWVudCcgOiAnUHJlbmRyZSBSZW5kZXotdm91cycpLAoJCQkJCWNsb3NlT25TdWJtaXQgOiB0cnVlLAoJCQkJCW5hbWUgOiAnRGVhbGVyQXBwb2ludG1lbnQnLAoKCQkJCQlvbkJlZm9yZU9wZW46IGZ1bmN0aW9uKGxlYWRDb25mKXsKICAgICAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkudHJpZ2dlcignZGVhbGVyQXBwb2ludG1lbnQuc3RhcnQnKTsKCgkJCQkJCWNvbnN0IHRpbWVUeHRFbCA9IGxlYWRDb25mLmxlYWROb2RlLnF1ZXJ5U2VsZWN0b3IoJy5zZWxlY3RlZFRpbWUnKTsKCQkJCQkJY29uc3QgdGltZUlucHV0ID0gbGVhZENvbmYubGVhZE5vZGUucXVlcnlTZWxlY3RvcignW25hbWU9ImRhdGUiXScpOwoJCQkJCQljb25zdCBwaWNrZXIgPSBsZWFkQ29uZi5sZWFkTm9kZS5xdWVyeVNlbGVjdG9yKCcuZGF0ZXBpY2tlcicpOwoJCQkJCQljb25zdCBwaG9uZUVsID0gbGVhZENvbmYubGVhZE5vZGUucXVlcnlTZWxlY3RvcignW25hbWU9InBob25lbnVtIl0nKTsKCQkJCQkJY29uc3QgaG91cnNCbG9jayA9IGxlYWRDb25mLmxlYWROb2RlLnF1ZXJ5U2VsZWN0b3IoJy5ob3Vyc0xpc3QnKTsKCQkJCQkJbGV0IGRheU5vZGVzID0gQXJyYXkuZnJvbShob3Vyc0Jsb2NrLmNoaWxkcmVuKTsKCQkJCQkJbGV0IGRhdGVGb3JtYXQgPSAgYWN0aXZlTGFuZyA9PSAnRU5HTElTSCcgPyAnRiBqIFksIEg6aScgOiAnaiBGIFksIEg6aSc7CgoKCQkJCQkJY29uc3Qgc2V0U2VsZWN0ZWQgPSAoc2VsZWN0ZWREYXRlcywgZGF0ZVN0ciwgaW5zdGFuY2UpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjdXJyZW50bHlTZWxlY3RlZERhdGUgPSBzZWxlY3RlZERhdGVzWzBdIHx8IG5ldyBEYXRlKCk7Ly9kb24ndCBwbGF5IHdpdGggdGhpcyBvciBtaWdodCBhZmZlY3QgZGF0ZS90aW1lIHNlbGVjdGlvbgoJCQkJCQkJbGV0IGRheU51bSA9IGN1cnJlbnRseVNlbGVjdGVkRGF0ZS5nZXREYXkoKTsKCgkJCQkJCQlkYXlOdW0gPSBkYXlOdW0gPT0gMCA\/IDcgOiBkYXlOdW07CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRheU1pblRpbWUgPSBkYXlOb2Rlc1tkYXlOdW0gLSAxXS5kYXRhc2V0Lm1pbmhvdXIgfHwgJzA5OjAwJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkYXlNYXhUaW1lID0gZGF5Tm9kZXNbZGF5TnVtIC0gMV0uZGF0YXNldC5tYXhob3VyIHx8ICcxNzowMCc7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9taW5UaW1lIG1hbmFnZW1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vaWYgZGF0ZSBpcyB0b2RheSwgbWluVGltZSBuZWVkcyB0byBiZSBhIG1pbmltdW0gb2YgMWhvdXIgbGF0ZXIgZnJvbSBjdXJyZW50IHRpbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHNlbGVjdGVkRGF0ZXNbMF0pewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBub3cgPSBuZXcgRGF0ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhY2NlcHRlZEV4Y2VwdGlvbiA9IDU7Ly9taW51dGVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoc2VsZWN0ZWREYXRlc1swXS50b0RhdGVTdHJpbmcoKSA9PSBub3cudG9EYXRlU3RyaW5nKCkpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWluSG91ciA9IG5vdy5nZXRIb3VycygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWluTWludXRlID0gbm93LmdldE1pbnV0ZXMoKSArIDYwOy8vYWRkIDEgaG91cgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihtaW5NaW51dGUgPj0gNjApewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluSG91ciArPSBNYXRoLmZsb29yKG1pbk1pbnV0ZSAvIDYwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbk1pbnV0ZSA9IG1pbk1pbnV0ZSAlIDYwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYobWluTWludXRlICUgMTUpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vbWFrZSBpdCBzbyB0aGF0IG1pbnV0ZXMgYXJlIGVpdGhlciByb3VuZGVkIHRvIG5leHQgMTVtaW4gaW5jcmVtZW50IG9yIHRvIHRoZSBwcmV2aW91cyBvbmUgaWYgd2l0aGluIGFjY2VwdGVkRXhjZXB0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYobWluTWludXRlICUgMTUgPD0gYWNjZXB0ZWRFeGNlcHRpb24pewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5NaW51dGUgPSBtaW5NaW51dGUgLSAobWluTWludXRlICUgMTUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlIGlmKChtaW5NaW51dGUgJSAxNSA+IGFjY2VwdGVkRXhjZXB0aW9uKSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbk1pbnV0ZSA9IG1pbk1pbnV0ZSArICgxNSAtIChtaW5NaW51dGUgJSAxNSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZG8gbm90aGluZywgYWxyZWFkeSBhdCBpbmNyZW1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihtaW5Ib3VyID49IDI0KXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vbm8gbW9yZSBhdmFpbGFibGUgdGltZSB0b2RheSwgc2V0IHRvIG5leHQgZGF5IGF0IDA5OjAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5zZXREYXRlKG5ldyBEYXRlKCkuZnBfaW5jcigxKSwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnN0YW5jZS5zZXQoJ21pblRpbWUnLCBkYXlNaW5UaW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXlNaW5UaW1lID0gU3RyaW5nKG1pbkhvdXIpLnBhZFN0YXJ0KDIsJzAnKSArICc6JyArIFN0cmluZyhtaW5NaW51dGUpLnBhZFN0YXJ0KDIsJzAnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL21heFRpbWUgbWFuYWdlbWVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGFzdCBhcHBvaW50bWVudCB0aW1lIG1hbmFnZW1lbnQgKDE1bWluIGJlZm9yZSBjbG9zaW5nIHRpbWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgW2Nsb3NpbmdIb3VycywgY2xvc2luZ01pbnV0ZXNdID0gZGF5TWF4VGltZS5zcGxpdCgnOicpLm1hcChOdW1iZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRheURhdGUgPSBuZXcgRGF0ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5RGF0ZS5zZXRIb3VycyhjbG9zaW5nSG91cnMsIGNsb3NpbmdNaW51dGVzLCAwLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRheURhdGUuc2V0TWludXRlcyhkYXlEYXRlLmdldE1pbnV0ZXMoKSAtIDE1KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZm9ybWF0IHRoZSBuZXcgdGltZSBiYWNrIGludG8gJ0hIOm1tJyBmb3JtYXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhY3R1YWxDbG9zaW5nSG91cnMgPSBkYXlEYXRlLmdldEhvdXJzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGFjdHVhbENsb3NpbmdNaW51dGVzID0gZGF5RGF0ZS5nZXRNaW51dGVzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5TWF4VGltZSA9IGFjdHVhbENsb3NpbmdIb3VycyArICc6JyArIGFjdHVhbENsb3NpbmdNaW51dGVzOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vc2V0IHN0YXJ0L2VuZCB0aW1lIGZvciB0aGF0IGRheQoJCQkJCQkJaW5zdGFuY2Uuc2V0KCdtaW5UaW1lJywgZGF5TWluVGltZSk7CgkJCQkJCQlpbnN0YW5jZS5zZXQoJ21heFRpbWUnLCBkYXlNYXhUaW1lKTsKCgkJCQkJCQkvL1NldCBjdXJyZW50IGRhdGUgaW5pdGlhbGx5CgkJCQkJCQl0aW1lVHh0RWwudGV4dENvbnRlbnQgPSAhc2VsZWN0ZWREYXRlcy5sZW5ndGgKCQkJCQkJCQkJCQkJICA\/IGluc3RhbmNlLmZvcm1hdERhdGUobmV3IERhdGUoKS5mcF9pbmNyKDEpLCAoYWN0aXZlTGFuZyA9PSAnRU5HTElTSCcgPyAnRiBqIFksIDEyOjAwJyA6ICdqIEYgWSwgMTI6MDAnKSkKCQkJCQkJCQkJCQkJICA6IGRhdGVTdHI7CgoJCQkJCQkJLy9nZXQgdGhlIGRhdGUgaW4gZW5nbGlzaCBhbmQgZnJlbmNoIGZvciB0aGUgbG9jYWwgc3RvcmFnZQoJCQkJCQkJdGltZVR4dEVsLmRhdGFzZXQuZW4gPSBpbnN0YW5jZS5mb3JtYXREYXRlKG5ldyBEYXRlKCkuZnBfaW5jcigxKSwnRiBqIFksIDEyOjAwJywgZmxhdHBpY2tyLmwxMG5zLmVuKTsKCQkJCQkJCXRpbWVUeHRFbC5kYXRhc2V0LmZyID0gaW5zdGFuY2UuZm9ybWF0RGF0ZShuZXcgRGF0ZSgpLmZwX2luY3IoMSksJ2ogRiBZLCAxMjowMCcsIGZsYXRwaWNrci5sMTBucy5mcik7CgoJCQkJCQkJdGltZUlucHV0LnZhbHVlID0gdGltZVR4dEVsLnRleHRDb250ZW50OwoKCQkJCQkJCWluc3RhbmNlLmhvdXJFbGVtZW50LmJsdXIoKTsKCQkJCQkJfTsKCgkJCQkJCWxldCBjbG9zZWREYXlzID0gW107CgkJCQkJCWRheU5vZGVzLmZvckVhY2goKGUsaSkgPT4gewoJCQkJCQkJaWYoKGUuZGF0YXNldC5jbG9zZWQgfHwgJzAnKSA9PSAnMScpIGNsb3NlZERheXMucHVzaChpKQoJCQkJCQl9KTsKCgkJCQkJCS8vQWRkIGZyZW5jaCBsb2NhbGl6YXRpb24gd2hlbiBuZWVkZWQKCQkJCQkJaWYoYWN0aXZlTGFuZyA9PSAnRlJFTkNIJyl7CgkJCQkJCQlmbGF0cGlja3IubG9jYWxpemUoZmxhdHBpY2tyLmwxMG5zLmZyKTsKCQkJCQkJfQoKCgoJCQkJCQljb25zdCBmcCA9IGZsYXRwaWNrcihwaWNrZXIsIHsKCQkJCQkJCWlubGluZTp0cnVlLAoJCQkJCQkJZW5hYmxlVGltZTogdHJ1ZSwKCQkJCQkJCW1pbkRhdGU6ICd0b2RheScsLy9iYWNrIGZyb20gbmV3IERhdGUoKS5mcF9pbmNyKDEpIGJ1dCBhbHNvIGFkZGVkIHRpbWUgdmFsaWRhdGlvbiBmb3IgbWluVGltZQoJCQkJCQkJbWluVGltZTogIjA5OjAwIiwKCQkJCQkJCW1heFRpbWU6ICIxNzowMCIsCgkJCQkJCQlkYXRlRm9ybWF0OiBkYXRlRm9ybWF0LC8vIkQsIGogRiBZLCBIOmkiLAoJCQkJCQkJbWludXRlSW5jcmVtZW50OjE1LAoJCQkJCQkJdGltZV8yNGhyOnRydWUsCgkJCQkJCQlvbkNoYW5nZTogc2V0U2VsZWN0ZWQsCgkJCQkJCQlvblJlYWR5OiBzZXRTZWxlY3RlZCwKCQkJCQkJCWRpc2FibGU6IFsKCQkJCQkJCQlmdW5jdGlvbihkYXRlKXsKCQkJCQkJCQkJbGV0IGRheU51bSA9IGRhdGUuZ2V0RGF5KCkgPT0gMCA\/IDcgOiBkYXRlLmdldERheSgpOwoJCQkJCQkJCQlyZXR1cm4gY2xvc2VkRGF5cy5pbmNsdWRlcyhkYXlOdW0gLSAxKTsKCQkJCQkJCQl9CgkJCQkJCQldLAoJCQkJCQkJbG9jYWxlOiB7CgkJCQkJCQkJZmlyc3REYXlPZldlZWs6IDEgLy8gc3RhcnQgd2VlayBvbiBNb25kYXkKCQkJCQkJCX0KCgkJCQkJCX0pOwoKCQkJCQl9LAoKCQkJCQlvbkJlZm9yZVN1Ym1pdCA6IChsZWFkQ29uZikgPT4gewoJCQkJCQljb25zdCB0aW1lVHh0RWwgPSBsZWFkQ29uZi5sZWFkTm9kZS5xdWVyeVNlbGVjdG9yKCcuc2VsZWN0ZWRUaW1lJyk7CgkJCQkJCWVtYWlsSGFuZGxlci5kZWFsZXJBcHBvaW50bWVudERhdGEgPSB7CgkJCQkJCQlkYXRlIDogdGltZVR4dEVsLnRleHRDb250ZW50CgkJCQkJCX07CgkJCQkJfSwKCgkJCQkJb25BZnRlclN1Ym1pdCA6IChsZWFkQ29uZikgPT4gewoKCQkJCQkJY29uc3QgdGltZVR4dEVsID0gbGVhZENvbmYubGVhZE5vZGUucXVlcnlTZWxlY3RvcignLnNlbGVjdGVkVGltZScpOwoKCQkJCQkJY29uc3QgY2IgPSB0cmFja1N0ZXAgPT4gewoJCQkJCQkJdHJhY2tTdGVwLmRhdGFzZXQuY29tcGxfdHh0X2ZyID0gdHJhY2tTdGVwLmRhdGFzZXQuY29tcGxfdHh0X2ZyLnJlcGxhY2UoJ3skQVBQT0lOVF9EQVRFfScsIHRpbWVUeHRFbC5kYXRhc2V0LmZyKTsKCQkJCQkJCXRyYWNrU3RlcC5kYXRhc2V0LmNvbXBsX3R4dF9lbiA9IHRyYWNrU3RlcC5kYXRhc2V0LmNvbXBsX3R4dF9lbi5yZXBsYWNlKCd7JEFQUE9JTlRfREFURX0nLCB0aW1lVHh0RWwuZGF0YXNldC5lbik7CgkJCQkJCX07CgoJCQkJCQlsZXQgY29tcGxldGVFdmVudCA9IG5ldyBDdXN0b21FdmVudCgndHJhY2tzdGVwLmNvbXBsZXRlJyx7CgkJCQkJCQlkZXRhaWw6ewoJCQkJCQkJCXN0ZXBJZCA6ICdEZWFsZXJBcHBvaW50bWVudCcsCgkJCQkJCQkJb25Db21wbGV0ZSA6IGNiCgkJCQkJCQl9CgkJCQkJCX0pOwoKCQkJCQkJZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChjb21wbGV0ZUV2ZW50KTsKCiAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLnRyaWdnZXIoJ2RlYWxlckFwcG9pbnRtZW50LmVuZCcpOwoJCQkJCX0KCgkJCQl9CgoJCQkKLyoqIC9tL2pzL3NrZWxldG9uLmJlZm9yZS5qcyAqKi8KdmFyIF9fX2QyY19za2VsZXRvbmJlZm9yZWpzX2Nfb249IjIwMjUtMDUtMjMgMTc6MTM6MDMiOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX3NrZWxldG9uYmVmb3JlanNfY19vbj0iMjAyNC0wMS0zMSAxNDozNzo1NyI7InVzZSBzdHJpY3QiO19fX2QyY19za2VsZXRvbmJlZm9yZWpzX2Nfb249IjIwMjMtMDYtMDEgMTI6MzA6MTkiOyJ1c2Ugc3RyaWN0IjtsZXQgJGpzY29tcCRudWxsaXNoJHRtcDA7d2luZG93LmdTcGVlZENvbm49cGFyc2VJbnQoTWF0aC5mbG9vcigoRGF0ZS5ub3coKS0obnVsbCE9KCRqc2NvbXAkbnVsbGlzaCR0bXAwPXdpbmRvdy5nVGVzdFNwZWVkQ29ubik\/JGpzY29tcCRudWxsaXNoJHRtcDA6MCkpLzFFMykpO2xldCAkanNjb21wJG51bGxpc2gkdG1wMTtjb25zb2xlLmxvZygiR1NQRUVELUJFRk9SRToiKyhEYXRlLm5vdygpLShudWxsIT0oJGpzY29tcCRudWxsaXNoJHRtcDE9d2luZG93LmdUZXN0U3BlZWRDb25uKT8kanNjb21wJG51bGxpc2gkdG1wMTowKSkvMUUzKTsKLyoqIC9tL2pzL2pxdWVyeS5qcyAqKi8KdmFyIF9fX2QyY19qcXVlcnlqc19jX29uPSIyMDI1LTA1LTIzIDE3OjA1OjQ5IjsndXNlIHN0cmljdCc7dmFyIF9fX2QyY19qcXVlcnlqc19jX29uPSIyMDI0LTAzLTI1IDEyOjMxOjMzIjsidXNlIHN0cmljdCI7CiFmdW5jdGlvbihuLGRhKXsib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmIm9iamVjdCI9PXR5cGVvZiBtb2R1bGUuZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz1uLmRvY3VtZW50P2RhKG4sITApOmZ1bmN0aW9uKHdhKXtpZighd2EuZG9jdW1lbnQpdGhyb3cgRXJyb3IoImpRdWVyeSByZXF1aXJlcyBhIHdpbmRvdyB3aXRoIGEgZG9jdW1lbnQiKTtyZXR1cm4gZGEod2EpfTpkYShuKX0oInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c\/d2luZG93OnRoaXMsZnVuY3Rpb24obixkYSl7ZnVuY3Rpb24gd2EoYSxiLGMpe3ZhciBlLGYsZz0oYz1jfHxMKS5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtpZihnLnRleHQ9YSxiKWZvcihlIGluIExjKShmPWJbZV18fGIuZ2V0QXR0cmlidXRlJiZiLmdldEF0dHJpYnV0ZShlKSkmJmcuc2V0QXR0cmlidXRlKGUsZik7Yy5oZWFkLmFwcGVuZENoaWxkKGcpLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZyl9ZnVuY3Rpb24gVShhKXtyZXR1cm4gbnVsbD09YT9hKwoiIjoib2JqZWN0Ij09dHlwZW9mIGF8fCJmdW5jdGlvbiI9PXR5cGVvZiBhP01iW2tjLmNhbGwoYSldfHwib2JqZWN0Ijp0eXBlb2YgYX1mdW5jdGlvbiBlYihhKXt2YXIgYj0hIWEmJiJsZW5ndGgiaW4gYSYmYS5sZW5ndGgsYz1VKGEpO3JldHVybiFNKGEpJiYha2IoYSkmJigiYXJyYXkiPT09Y3x8MD09PWJ8fCJudW1iZXIiPT10eXBlb2YgYiYmMDxiJiZiLTEgaW4gYSl9ZnVuY3Rpb24gWChhLGIpe3JldHVybiBhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1iLnRvTG93ZXJDYXNlKCl9ZnVuY3Rpb24gYmEoYSxiKXtyZXR1cm4gYj8iXHgwMCI9PT1hPyJcdWZmZmQiOmEuc2xpY2UoMCwtMSkrIlxcIithLmNoYXJDb2RlQXQoYS5sZW5ndGgtMSkudG9TdHJpbmcoMTYpKyIgIjoiXFwiK2F9ZnVuY3Rpb24gamEoYSxiLGMpe3JldHVybiBNKGIpP2QuZ3JlcChhLGZ1bmN0aW9uKGUsZil7cmV0dXJuISFiLmNhbGwoZSxmLGUpIT09Y30pOmIubm9kZVR5cGU\/ZC5ncmVwKGEsCmZ1bmN0aW9uKGUpe3JldHVybiBlPT09YiE9PWN9KToic3RyaW5nIiE9dHlwZW9mIGI\/ZC5ncmVwKGEsZnVuY3Rpb24oZSl7cmV0dXJuLTE8TmEuY2FsbChiLGUpIT09Y30pOmQuZmlsdGVyKGIsYSxjKX1mdW5jdGlvbiBsYihhLGIpe2Zvcig7KGE9YVtiXSkmJjEhPT1hLm5vZGVUeXBlOyk7cmV0dXJuIGF9ZnVuY3Rpb24gWWEoYSl7cmV0dXJuIGF9ZnVuY3Rpb24gWmEoYSl7dGhyb3cgYTt9ZnVuY3Rpb24gbWIoYSxiLGMsZSl7dmFyIGY7dHJ5e2EmJk0oZj1hLnByb21pc2UpP2YuY2FsbChhKS5kb25lKGIpLmZhaWwoYyk6YSYmTShmPWEudGhlbik\/Zi5jYWxsKGEsYixjKTpiLmFwcGx5KHZvaWQgMCxbYV0uc2xpY2UoZSkpfWNhdGNoKGcpe2MuYXBwbHkodm9pZCAwLFtnXSl9fWZ1bmN0aW9uIE9hKCl7TC5yZW1vdmVFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixPYSk7bi5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixPYSk7ZC5yZWFkeSgpfWZ1bmN0aW9uIE5iKGEsYil7cmV0dXJuIGIudG9VcHBlckNhc2UoKX0KZnVuY3Rpb24gQmEoYSl7cmV0dXJuIGEucmVwbGFjZShNYywibXMtIikucmVwbGFjZShOYyxOYil9ZnVuY3Rpb24gSmEoKXt0aGlzLmV4cGFuZG89ZC5leHBhbmRvK0phLnVpZCsrfWZ1bmN0aW9uIE9iKGEsYixjKXt2YXIgZSxmO2lmKHZvaWQgMD09PWMmJjE9PT1hLm5vZGVUeXBlKWlmKGU9ImRhdGEtIitiLnJlcGxhY2UoT2MsIi0kJiIpLnRvTG93ZXJDYXNlKCksInN0cmluZyI9PXR5cGVvZihjPWEuZ2V0QXR0cmlidXRlKGUpKSl7dHJ5e2M9InRydWUiPT09KGY9Yyl8fCJmYWxzZSIhPT1mJiYoIm51bGwiPT09Zj9udWxsOmY9PT0rZisiIj8rZjpQYy50ZXN0KGYpP0pTT04ucGFyc2UoZik6Zil9Y2F0Y2goZyl7fXhhLnNldChhLGIsYyl9ZWxzZSBjPXZvaWQgMDtyZXR1cm4gY31mdW5jdGlvbiBQYihhLGIsYyxlKXt2YXIgZixnLGg9MjAsbT1lP2Z1bmN0aW9uKCl7cmV0dXJuIGUuY3VyKCl9OmZ1bmN0aW9uKCl7cmV0dXJuIGQuY3NzKGEsYiwiIil9LGw9bSgpLHQ9YyYmY1szXXx8CihkLmNzc051bWJlcltiXT8iIjoicHgiKSx3PWEubm9kZVR5cGUmJihkLmNzc051bWJlcltiXXx8InB4IiE9PXQmJitsKSYmeWIuZXhlYyhkLmNzcyhhLGIpKTtpZih3JiZ3WzNdIT09dCl7bC89Mjt0PXR8fHdbM107Zm9yKHc9K2x8fDE7aC0tOylkLnN0eWxlKGEsYix3K3QpLDA+PSgxLWcpKigxLShnPW0oKS9sfHwuNSkpJiYoaD0wKSx3Lz1nO3cqPTI7ZC5zdHlsZShhLGIsdyt0KTtjPWN8fFtdfXJldHVybiBjJiYodz0rd3x8K2x8fDAsZj1jWzFdP3crKGNbMV0rMSkqY1syXTorY1syXSxlJiYoZS51bml0PXQsZS5zdGFydD13LGUuZW5kPWYpKSxmfWZ1bmN0aW9uICRhKGEsYil7Zm9yKHZhciBjLGUsZixnLGgsbSxsLHQ9W10sdz0wLHI9YS5sZW5ndGg7dzxyO3crKykoZT1hW3ddKS5zdHlsZSYmKGM9ZS5zdHlsZS5kaXNwbGF5LGI\/KCJub25lIj09PWMmJih0W3ddPUcuZ2V0KGUsImRpc3BsYXkiKXx8bnVsbCx0W3ddfHwoZS5zdHlsZS5kaXNwbGF5PSIiKSksIiI9PT1lLnN0eWxlLmRpc3BsYXkmJgpRYihlKSYmKHRbd109KGw9aD1nPXZvaWQgMCxoPShmPWUpLm93bmVyRG9jdW1lbnQsbT1mLm5vZGVOYW1lLChsPWxjW21dKXx8KGc9aC5ib2R5LmFwcGVuZENoaWxkKGguY3JlYXRlRWxlbWVudChtKSksbD1kLmNzcyhnLCJkaXNwbGF5IiksZy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGcpLCJub25lIj09PWwmJihsPSJibG9jayIpLGxjW21dPWwpKSkpOiJub25lIiE9PWMmJih0W3ddPSJub25lIixHLnNldChlLCJkaXNwbGF5IixjKSkpO2Zvcih3PTA7dzxyO3crKyludWxsIT10W3ddJiYoYVt3XS5zdHlsZS5kaXNwbGF5PXRbd10pO3JldHVybiBhfWZ1bmN0aW9uIHNhKGEsYil7dmFyIGM7cmV0dXJuIGM9InVuZGVmaW5lZCIhPXR5cGVvZiBhLmdldEVsZW1lbnRzQnlUYWdOYW1lP2EuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYnx8IioiKToidW5kZWZpbmVkIiE9dHlwZW9mIGEucXVlcnlTZWxlY3RvckFsbD9hLnF1ZXJ5U2VsZWN0b3JBbGwoYnx8IioiKTpbXSx2b2lkIDA9PT1ifHxiJiYKWChhLGIpP2QubWVyZ2UoW2FdLGMpOmN9ZnVuY3Rpb24gbmIoYSxiKXtmb3IodmFyIGM9MCxlPWEubGVuZ3RoO2M8ZTtjKyspRy5zZXQoYVtjXSwiZ2xvYmFsRXZhbCIsIWJ8fEcuZ2V0KGJbY10sImdsb2JhbEV2YWwiKSl9ZnVuY3Rpb24gUmIoYSxiLGMsZSxmKXtmb3IodmFyIGcsaCxtLGwsdD1iLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSx3PVtdLHI9MCx6PWEubGVuZ3RoO3I8ejtyKyspaWYoKGc9YVtyXSl8fDA9PT1nKWlmKCJvYmplY3QiPT09VShnKSlkLm1lcmdlKHcsZy5ub2RlVHlwZT9bZ106Zyk7ZWxzZSBpZihRYy50ZXN0KGcpKXtoPWh8fHQuYXBwZW5kQ2hpbGQoYi5jcmVhdGVFbGVtZW50KCJkaXYiKSk7bT0obWMuZXhlYyhnKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKTttPUNhW21dfHxDYS5fZGVmYXVsdDtoLmlubmVySFRNTD1tWzFdK2QuaHRtbFByZWZpbHRlcihnKSttWzJdO2ZvcihtPW1bMF07bS0tOyloPWgubGFzdENoaWxkO2QubWVyZ2UodyxoLmNoaWxkTm9kZXMpOwooaD10LmZpcnN0Q2hpbGQpLnRleHRDb250ZW50PSIifWVsc2Ugdy5wdXNoKGIuY3JlYXRlVGV4dE5vZGUoZykpO3QudGV4dENvbnRlbnQ9IiI7Zm9yKHI9MDtnPXdbcisrXTspaWYoZSYmLTE8ZC5pbkFycmF5KGcsZSkpZiYmZi5wdXNoKGcpO2Vsc2UgaWYobD1vYihnKSxoPXNhKHQuYXBwZW5kQ2hpbGQoZyksInNjcmlwdCIpLGwmJm5iKGgpLGMpZm9yKG09MDtnPWhbbSsrXTspbmMudGVzdChnLnR5cGV8fCIiKSYmYy5wdXNoKGcpO3JldHVybiB0fWZ1bmN0aW9uIGFiKCl7cmV0dXJuITB9ZnVuY3Rpb24gYmIoKXtyZXR1cm4hMX1mdW5jdGlvbiBmYihhLGIsYyxlLGYsZyl7dmFyIGgsbTtpZigib2JqZWN0Ij09dHlwZW9mIGIpe2ZvcihtIGluInN0cmluZyIhPXR5cGVvZiBjJiYoZT1lfHxjLGM9dm9pZCAwKSxiKWZiKGEsbSxjLGUsYlttXSxnKTtyZXR1cm4gYX1pZihudWxsPT1lJiZudWxsPT1mPyhmPWMsZT1jPXZvaWQgMCk6bnVsbD09ZiYmKCJzdHJpbmciPT10eXBlb2YgYz8oZj0KZSxlPXZvaWQgMCk6KGY9ZSxlPWMsYz12b2lkIDApKSwhMT09PWYpZj1iYjtlbHNlIGlmKCFmKXJldHVybiBhO3JldHVybiAxPT09ZyYmKGg9ZiwoZj1mdW5jdGlvbihsKXtyZXR1cm4gZCgpLm9mZihsKSxoLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pLmd1aWQ9aC5ndWlkfHwoaC5ndWlkPWQuZ3VpZCsrKSksYS5lYWNoKGZ1bmN0aW9uKCl7ZC5ldmVudC5hZGQodGhpcyxiLGYsZSxjKX0pfWZ1bmN0aW9uIHBiKGEsYixjKXtjPyhHLnNldChhLGIsITEpLGQuZXZlbnQuYWRkKGEsYix7bmFtZXNwYWNlOiExLGhhbmRsZXI6ZnVuY3Rpb24oZSl7dmFyIGYsZz1HLmdldCh0aGlzLGIpO2lmKDEmZS5pc1RyaWdnZXImJnRoaXNbYl0paWYoZykoZC5ldmVudC5zcGVjaWFsW2JdfHx7fSkuZGVsZWdhdGVUeXBlJiZlLnN0b3BQcm9wYWdhdGlvbigpO2Vsc2V7aWYoZz15YS5jYWxsKGFyZ3VtZW50cyksRy5zZXQodGhpcyxiLGcpLHRoaXNbYl0oKSxmPUcuZ2V0KHRoaXMsYiksRy5zZXQodGhpcyxiLAohMSksZyE9PWYpcmV0dXJuIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksZS5wcmV2ZW50RGVmYXVsdCgpLGZ9ZWxzZSBnJiYoRy5zZXQodGhpcyxiLGQuZXZlbnQudHJpZ2dlcihnWzBdLGcuc2xpY2UoMSksdGhpcykpLGUuc3RvcFByb3BhZ2F0aW9uKCksZS5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZD1hYil9fSkpOnZvaWQgMD09PUcuZ2V0KGEsYikmJmQuZXZlbnQuYWRkKGEsYixhYil9ZnVuY3Rpb24gU2IoYSxiKXtyZXR1cm4gWChhLCJ0YWJsZSIpJiZYKDExIT09Yi5ub2RlVHlwZT9iOmIuZmlyc3RDaGlsZCwidHIiKSYmZChhKS5jaGlsZHJlbigidGJvZHkiKVswXXx8YX1mdW5jdGlvbiBxYihhKXtyZXR1cm4gYS50eXBlPShudWxsIT09YS5nZXRBdHRyaWJ1dGUoInR5cGUiKSkrIi8iK2EudHlwZSxhfWZ1bmN0aW9uICRiKGEpe3JldHVybiJ0cnVlLyI9PT0oYS50eXBlfHwiIikuc2xpY2UoMCw1KT9hLnR5cGU9YS50eXBlLnNsaWNlKDUpOmEucmVtb3ZlQXR0cmlidXRlKCJ0eXBlIiksCmF9ZnVuY3Rpb24gZ2IoYSxiKXt2YXIgYyxlLGYsZyxoO2lmKDE9PT1iLm5vZGVUeXBlKXtpZihHLmhhc0RhdGEoYSkmJihoPUcuZ2V0KGEpLmV2ZW50cykpZm9yKGUgaW4gRy5yZW1vdmUoYiwiaGFuZGxlIGV2ZW50cyIpLGgpe3ZhciBtPTA7Zm9yKGM9aFtlXS5sZW5ndGg7bTxjO20rKylkLmV2ZW50LmFkZChiLGUsaFtlXVttXSl9eGEuaGFzRGF0YShhKSYmKGY9eGEuYWNjZXNzKGEpLGc9ZC5leHRlbmQoe30sZikseGEuc2V0KGIsZykpfX1mdW5jdGlvbiBjYihhLGIsYyxlKXtiPW9jKGIpO3ZhciBmLGcsaCxtPTAsbD1hLmxlbmd0aCx0PWwtMSx3PWJbMF0scj1NKHcpO2lmKHJ8fDE8bCYmInN0cmluZyI9PXR5cGVvZiB3JiYhTi5jaGVja0Nsb25lJiZSYy50ZXN0KHcpKXJldHVybiBhLmVhY2goZnVuY3Rpb24oRCl7dmFyIEY9YS5lcShEKTtyJiYoYlswXT13LmNhbGwodGhpcyxELEYuaHRtbCgpKSk7Y2IoRixiLGMsZSl9KTtpZihsJiYoZz0oZj1SYihiLGFbMF0ub3duZXJEb2N1bWVudCwKITEsYSxlKSkuZmlyc3RDaGlsZCwxPT09Zi5jaGlsZE5vZGVzLmxlbmd0aCYmKGY9ZyksZ3x8ZSkpe2ZvcihoPShnPWQubWFwKHNhKGYsInNjcmlwdCIpLHFiKSkubGVuZ3RoO208bDttKyspe3ZhciB6PWY7bSE9PXQmJih6PWQuY2xvbmUoeiwhMCwhMCksaCYmZC5tZXJnZShnLHNhKHosInNjcmlwdCIpKSk7Yy5jYWxsKGFbbV0seixtKX1pZihoKWZvcihmPWdbZy5sZW5ndGgtMV0ub3duZXJEb2N1bWVudCxkLm1hcChnLCRiKSxtPTA7bTxoO20rKyl6PWdbbV0sbmMudGVzdCh6LnR5cGV8fCIiKSYmIUcuYWNjZXNzKHosImdsb2JhbEV2YWwiKSYmZC5jb250YWlucyhmLHopJiYoei5zcmMmJiJtb2R1bGUiIT09KHoudHlwZXx8IiIpLnRvTG93ZXJDYXNlKCk\/ZC5fZXZhbFVybCYmIXoubm9Nb2R1bGUmJmQuX2V2YWxVcmwoei5zcmMse25vbmNlOnoubm9uY2V8fHouZ2V0QXR0cmlidXRlKCJub25jZSIpfSxmKTp3YSh6LnRleHRDb250ZW50LnJlcGxhY2UoU2MsIiIpLHosZikpfXJldHVybiBhfQpmdW5jdGlvbiBUYihhLGIsYyl7Zm9yKHZhciBlPWI\/ZC5maWx0ZXIoYixhKTphLGY9MDtudWxsIT0oYj1lW2ZdKTtmKyspY3x8MSE9PWIubm9kZVR5cGV8fGQuY2xlYW5EYXRhKHNhKGIpKSxiLnBhcmVudE5vZGUmJihjJiZvYihiKSYmbmIoc2EoYiwic2NyaXB0IikpLGIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChiKSk7cmV0dXJuIGF9ZnVuY3Rpb24gS2EoYSxiLGMpe3ZhciBlLGYsZyxoLG09YWMudGVzdChiKSxsPWEuc3R5bGU7cmV0dXJuKGM9Y3x8VWIoYSkpJiYoaD1jLmdldFByb3BlcnR5VmFsdWUoYil8fGNbYl0sbSYmaCYmKGg9aC5yZXBsYWNlKHpiLCIkMSIpfHx2b2lkIDApLCIiIT09aHx8b2IoYSl8fChoPWQuc3R5bGUoYSxiKSksIU4ucGl4ZWxCb3hTdHlsZXMoKSYmYmMudGVzdChoKSYmVGMudGVzdChiKSYmKGU9bC53aWR0aCxmPWwubWluV2lkdGgsZz1sLm1heFdpZHRoLGwubWluV2lkdGg9bC5tYXhXaWR0aD1sLndpZHRoPWgsaD1jLndpZHRoLGwud2lkdGg9ZSxsLm1pbldpZHRoPQpmLGwubWF4V2lkdGg9ZykpLHZvaWQgMCE9PWg\/aCsiIjpofWZ1bmN0aW9uIFZiKGEsYil7cmV0dXJue2dldDpmdW5jdGlvbigpe2lmKCFhKCkpcmV0dXJuKHRoaXMuZ2V0PWIpLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtkZWxldGUgdGhpcy5nZXR9fX1mdW5jdGlvbiBBYihhKXt2YXIgYjtpZighKGI9ZC5jc3NQcm9wc1thXXx8cGNbYV0pKXtpZighKGEgaW4gcWMpKXthOntiPWE7Zm9yKHZhciBjPWJbMF0udG9VcHBlckNhc2UoKStiLnNsaWNlKDEpLGU9cmMubGVuZ3RoO2UtLTspaWYoKGI9cmNbZV0rYylpbiBxYylicmVhayBhO2I9dm9pZCAwfWE9cGNbYV09Ynx8YX1iPWF9cmV0dXJuIGJ9ZnVuY3Rpb24gV2IoYSxiLGMpe3JldHVybihhPXliLmV4ZWMoYikpP01hdGgubWF4KDAsYVsyXS0oY3x8MCkpKyhhWzNdfHwicHgiKTpifWZ1bmN0aW9uIHJiKGEsYixjLGUsZixnKXt2YXIgaD0id2lkdGgiPT09Yj8xOjAsbT0wLGw9MCx0PTA7aWYoYz09PShlPyJib3JkZXIiOiJjb250ZW50IikpcmV0dXJuIDA7CmZvcig7ND5oO2grPTIpIm1hcmdpbiI9PT1jJiYodCs9ZC5jc3MoYSxjK1BhW2hdLCEwLGYpKSxlPygiY29udGVudCI9PT1jJiYobC09ZC5jc3MoYSwicGFkZGluZyIrUGFbaF0sITAsZikpLCJtYXJnaW4iIT09YyYmKGwtPWQuY3NzKGEsImJvcmRlciIrUGFbaF0rIldpZHRoIiwhMCxmKSkpOihsKz1kLmNzcyhhLCJwYWRkaW5nIitQYVtoXSwhMCxmKSwicGFkZGluZyIhPT1jP2wrPWQuY3NzKGEsImJvcmRlciIrUGFbaF0rIldpZHRoIiwhMCxmKTptKz1kLmNzcyhhLCJib3JkZXIiK1BhW2hdKyJXaWR0aCIsITAsZikpO3JldHVybiFlJiYwPD1nJiYobCs9TWF0aC5tYXgoMCxNYXRoLmNlaWwoYVsib2Zmc2V0IitiWzBdLnRvVXBwZXJDYXNlKCkrYi5zbGljZSgxKV0tZy1sLW0tLjUpKXx8MCksbCt0fWZ1bmN0aW9uIEJiKGEsYixjKXt2YXIgZT1VYihhKSxmPSghTi5ib3hTaXppbmdSZWxpYWJsZSgpfHxjKSYmImJvcmRlci1ib3giPT09ZC5jc3MoYSwiYm94U2l6aW5nIiwhMSxlKSxnPQpmLGg9S2EoYSxiLGUpLG09Im9mZnNldCIrYlswXS50b1VwcGVyQ2FzZSgpK2Iuc2xpY2UoMSk7aWYoYmMudGVzdChoKSl7aWYoIWMpcmV0dXJuIGg7aD0iYXV0byJ9cmV0dXJuKCFOLmJveFNpemluZ1JlbGlhYmxlKCkmJmZ8fCFOLnJlbGlhYmxlVHJEaW1lbnNpb25zKCkmJlgoYSwidHIiKXx8ImF1dG8iPT09aHx8IXBhcnNlRmxvYXQoaCkmJiJpbmxpbmUiPT09ZC5jc3MoYSwiZGlzcGxheSIsITEsZSkpJiZhLmdldENsaWVudFJlY3RzKCkubGVuZ3RoJiYoZj0iYm9yZGVyLWJveCI9PT1kLmNzcyhhLCJib3hTaXppbmciLCExLGUpLChnPW0gaW4gYSkmJihoPWFbbV0pKSwoaD1wYXJzZUZsb2F0KGgpfHwwKStyYihhLGIsY3x8KGY\/ImJvcmRlciI6ImNvbnRlbnQiKSxnLGUsaCkrInB4In1mdW5jdGlvbiB6YShhLGIsYyxlLGYpe3JldHVybiBuZXcgemEucHJvdG90eXBlLmluaXQoYSxiLGMsZSxmKX1mdW5jdGlvbiBDYigpe1hiJiYoITE9PT1MLmhpZGRlbiYmbi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU\/Cm4ucmVxdWVzdEFuaW1hdGlvbkZyYW1lKENiKTpuLnNldFRpbWVvdXQoQ2IsZC5meC5pbnRlcnZhbCksZC5meC50aWNrKCkpfWZ1bmN0aW9uIERiKCl7cmV0dXJuIG4uc2V0VGltZW91dChmdW5jdGlvbigpe3NiPXZvaWQgMH0pLHNiPURhdGUubm93KCl9ZnVuY3Rpb24gdGIoYSxiKXt2YXIgYyxlPTAsZj17aGVpZ2h0OmF9O2ZvcihiPWI\/MTowOzQ+ZTtlKz0yLWIpZlsibWFyZ2luIisoYz1QYVtlXSldPWZbInBhZGRpbmciK2NdPWE7cmV0dXJuIGImJihmLm9wYWNpdHk9Zi53aWR0aD1hKSxmfWZ1bmN0aW9uIHUoYSxiLGMpe2Zvcih2YXIgZSxmPSh4LnR3ZWVuZXJzW2JdfHxbXSkuY29uY2F0KHgudHdlZW5lcnNbIioiXSksZz0wLGg9Zi5sZW5ndGg7ZzxoO2crKylpZihlPWZbZ10uY2FsbChjLGIsYSkpcmV0dXJuIGV9ZnVuY3Rpb24geChhLGIsYyl7dmFyIGUsZj0wLGc9eC5wcmVmaWx0ZXJzLmxlbmd0aCxoPWQuRGVmZXJyZWQoKS5hbHdheXMoZnVuY3Rpb24oKXtkZWxldGUgbS5lbGVtfSksCm09ZnVuY3Rpb24oKXtpZihlKXJldHVybiExO3ZhciB0PXNifHxEYigpO3Q9TWF0aC5tYXgoMCxsLnN0YXJ0VGltZStsLmR1cmF0aW9uLXQpO2Zvcih2YXIgdz0xLSh0L2wuZHVyYXRpb258fDApLHI9MCx6PWwudHdlZW5zLmxlbmd0aDtyPHo7cisrKWwudHdlZW5zW3JdLnJ1bih3KTtyZXR1cm4gaC5ub3RpZnlXaXRoKGEsW2wsdyx0XSksMT53JiZ6P3Q6KHp8fGgubm90aWZ5V2l0aChhLFtsLDEsMF0pLGgucmVzb2x2ZVdpdGgoYSxbbF0pLCExKX0sbD1oLnByb21pc2Uoe2VsZW06YSxwcm9wczpkLmV4dGVuZCh7fSxiKSxvcHRzOmQuZXh0ZW5kKCEwLHtzcGVjaWFsRWFzaW5nOnt9LGVhc2luZzpkLmVhc2luZy5fZGVmYXVsdH0sYyksb3JpZ2luYWxQcm9wZXJ0aWVzOmIsb3JpZ2luYWxPcHRpb25zOmMsc3RhcnRUaW1lOnNifHxEYigpLGR1cmF0aW9uOmMuZHVyYXRpb24sdHdlZW5zOltdLGNyZWF0ZVR3ZWVuOmZ1bmN0aW9uKHQsdyl7dD1kLlR3ZWVuKGEsbC5vcHRzLHQsdyxsLm9wdHMuc3BlY2lhbEVhc2luZ1t0XXx8Cmwub3B0cy5lYXNpbmcpO3JldHVybiBsLnR3ZWVucy5wdXNoKHQpLHR9LHN0b3A6ZnVuY3Rpb24odCl7dmFyIHc9MCxyPXQ\/bC50d2VlbnMubGVuZ3RoOjA7aWYoZSlyZXR1cm4gdGhpcztmb3IoZT0hMDt3PHI7dysrKWwudHdlZW5zW3ddLnJ1bigxKTtyZXR1cm4gdD8oaC5ub3RpZnlXaXRoKGEsW2wsMSwwXSksaC5yZXNvbHZlV2l0aChhLFtsLHRdKSk6aC5yZWplY3RXaXRoKGEsW2wsdF0pLHRoaXN9fSk7Yz1sLnByb3BzOyFmdW5jdGlvbih0LHcpe3ZhciByLHosRCxGLE87Zm9yKHIgaW4gdClpZihEPXdbej1CYShyKV0sRj10W3JdLEFycmF5LmlzQXJyYXkoRikmJihEPUZbMV0sRj10W3JdPUZbMF0pLHIhPT16JiYodFt6XT1GLGRlbGV0ZSB0W3JdKSwoTz1kLmNzc0hvb2tzW3pdKSYmImV4cGFuZCJpbiBPKWZvcihyIGluIEY9Ty5leHBhbmQoRiksZGVsZXRlIHRbel0sRilyIGluIHR8fCh0W3JdPUZbcl0sd1tyXT1EKTtlbHNlIHdbel09RH0oYyxsLm9wdHMuc3BlY2lhbEVhc2luZyk7CmZvcig7ZjxnO2YrKylpZihiPXgucHJlZmlsdGVyc1tmXS5jYWxsKGwsYSxjLGwub3B0cykpcmV0dXJuIE0oYi5zdG9wKSYmKGQuX3F1ZXVlSG9va3MobC5lbGVtLGwub3B0cy5xdWV1ZSkuc3RvcD1iLnN0b3AuYmluZChiKSksYjtyZXR1cm4gZC5tYXAoYyx1LGwpLE0obC5vcHRzLnN0YXJ0KSYmbC5vcHRzLnN0YXJ0LmNhbGwoYSxsKSxsLnByb2dyZXNzKGwub3B0cy5wcm9ncmVzcykuZG9uZShsLm9wdHMuZG9uZSxsLm9wdHMuY29tcGxldGUpLmZhaWwobC5vcHRzLmZhaWwpLmFsd2F5cyhsLm9wdHMuYWx3YXlzKSxkLmZ4LnRpbWVyKGQuZXh0ZW5kKG0se2VsZW06YSxhbmltOmwscXVldWU6bC5vcHRzLnF1ZXVlfSkpLGx9ZnVuY3Rpb24gQyhhKXtyZXR1cm4oYS5tYXRjaChMYSl8fFtdKS5qb2luKCIgIil9ZnVuY3Rpb24gSChhKXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUmJmEuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIn1mdW5jdGlvbiBQKGEpe3JldHVybiBBcnJheS5pc0FycmF5KGEpPwphOiJzdHJpbmciPT10eXBlb2YgYSYmYS5tYXRjaChMYSl8fFtdfWZ1bmN0aW9uIGVhKGEsYixjLGUpe3ZhciBmO2lmKEFycmF5LmlzQXJyYXkoYikpZC5lYWNoKGIsZnVuY3Rpb24oZyxoKXtjfHxVYy50ZXN0KGEpP2UoYSxoKTplYShhKyJbIisoIm9iamVjdCI9PXR5cGVvZiBoJiZudWxsIT1oP2c6IiIpKyJdIixoLGMsZSl9KTtlbHNlIGlmKGN8fCJvYmplY3QiIT09VShiKSllKGEsYik7ZWxzZSBmb3IoZiBpbiBiKWVhKGErIlsiK2YrIl0iLGJbZl0sYyxlKX1mdW5jdGlvbiBRYShhKXtyZXR1cm4gZnVuY3Rpb24oYixjKXsic3RyaW5nIiE9dHlwZW9mIGImJihjPWIsYj0iKiIpO3ZhciBlPTAsZj1iLnRvTG93ZXJDYXNlKCkubWF0Y2goTGEpfHxbXTtpZihNKGMpKWZvcig7Yj1mW2UrK107KSIrIj09PWJbMF0\/KGI9Yi5zbGljZSgxKXx8IioiLChhW2JdPWFbYl18fFtdKS51bnNoaWZ0KGMpKTooYVtiXT1hW2JdfHxbXSkucHVzaChjKX19ZnVuY3Rpb24gRWIoYSxiLGMsZSl7ZnVuY3Rpb24gZihtKXt2YXIgbDsKcmV0dXJuIGdbbV09ITAsZC5lYWNoKGFbbV18fFtdLGZ1bmN0aW9uKHQsdyl7dD13KGIsYyxlKTtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIHR8fGh8fGdbdF0\/aD8hKGw9dCk6dm9pZCAwOihiLmRhdGFUeXBlcy51bnNoaWZ0KHQpLGYodCksITEpfSksbH12YXIgZz17fSxoPWE9PT1jYztyZXR1cm4gZihiLmRhdGFUeXBlc1swXSl8fCFnWyIqIl0mJmYoIioiKX1mdW5jdGlvbiBoYihhLGIpe3ZhciBjLGUsZj1kLmFqYXhTZXR0aW5ncy5mbGF0T3B0aW9uc3x8e307Zm9yKGMgaW4gYil2b2lkIDAhPT1iW2NdJiYoKGZbY10\/YTplfHwoZT17fSkpW2NdPWJbY10pO3JldHVybiBlJiZkLmV4dGVuZCghMCxhLGUpLGF9dmFyIG9hPVtdLHNjPU9iamVjdC5nZXRQcm90b3R5cGVPZix5YT1vYS5zbGljZSxvYz1vYS5mbGF0P2Z1bmN0aW9uKGEpe3JldHVybiBvYS5mbGF0LmNhbGwoYSl9OmZ1bmN0aW9uKGEpe3JldHVybiBvYS5jb25jYXQuYXBwbHkoW10sYSl9LHViPW9hLnB1c2gsTmE9b2EuaW5kZXhPZiwKTWI9e30sa2M9TWIudG9TdHJpbmcsRmI9TWIuaGFzT3duUHJvcGVydHksdGM9RmIudG9TdHJpbmcsVmM9dGMuY2FsbChPYmplY3QpLE49e30sTT1mdW5jdGlvbihhKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgYSYmIm51bWJlciIhPXR5cGVvZiBhLm5vZGVUeXBlJiYiZnVuY3Rpb24iIT10eXBlb2YgYS5pdGVtfSxrYj1mdW5jdGlvbihhKXtyZXR1cm4gbnVsbCE9YSYmYT09PWEud2luZG93fSxMPW4uZG9jdW1lbnQsTGM9e3R5cGU6ITAsc3JjOiEwLG5vbmNlOiEwLG5vTW9kdWxlOiEwfSxXYz0vSFRNTCQvaSxkPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyBkLmZuLmluaXQoYSxiKX07ZC5mbj1kLnByb3RvdHlwZT17anF1ZXJ5OiIzLjcuMCIsY29uc3RydWN0b3I6ZCxsZW5ndGg6MCx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHlhLmNhbGwodGhpcyl9LGdldDpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YT95YS5jYWxsKHRoaXMpOjA+YT90aGlzW2ErdGhpcy5sZW5ndGhdOnRoaXNbYV19LApwdXNoU3RhY2s6ZnVuY3Rpb24oYSl7YT1kLm1lcmdlKHRoaXMuY29uc3RydWN0b3IoKSxhKTtyZXR1cm4gYS5wcmV2T2JqZWN0PXRoaXMsYX0sZWFjaDpmdW5jdGlvbihhKXtyZXR1cm4gZC5lYWNoKHRoaXMsYSl9LG1hcDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZC5tYXAodGhpcyxmdW5jdGlvbihiLGMpe3JldHVybiBhLmNhbGwoYixjLGIpfSkpfSxzbGljZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayh5YS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSxmaXJzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKDApfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoLTEpfSxldmVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGQuZ3JlcCh0aGlzLGZ1bmN0aW9uKGEsYil7cmV0dXJuKGIrMSklMn0pKX0sb2RkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGQuZ3JlcCh0aGlzLGZ1bmN0aW9uKGEsYil7cmV0dXJuIGIlCjJ9KSl9LGVxOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMubGVuZ3RoO2E9K2ErKDA+YT9iOjApO3JldHVybiB0aGlzLnB1c2hTdGFjaygwPD1hJiZhPGI\/W3RoaXNbYV1dOltdKX0sZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJldk9iamVjdHx8dGhpcy5jb25zdHJ1Y3RvcigpfSxwdXNoOnViLHNvcnQ6b2Euc29ydCxzcGxpY2U6b2Euc3BsaWNlfTtkLmV4dGVuZD1kLmZuLmV4dGVuZD1mdW5jdGlvbigpe3ZhciBhLGIsYyxlLGYsZz1hcmd1bWVudHNbMF18fHt9LGg9MSxtPWFyZ3VtZW50cy5sZW5ndGgsbD0hMTsiYm9vbGVhbiI9PXR5cGVvZiBnJiYobD1nLGc9YXJndW1lbnRzW2hdfHx7fSxoKyspOyJvYmplY3QiPT10eXBlb2YgZ3x8TShnKXx8KGc9e30pO2ZvcihoPT09bSYmKGc9dGhpcyxoLS0pO2g8bTtoKyspaWYobnVsbCE9KGE9YXJndW1lbnRzW2hdKSlmb3IoYiBpbiBhKXt2YXIgdD1hW2JdOyJfX3Byb3RvX18iIT09YiYmZyE9PXQmJihsJiZ0JiYoZC5pc1BsYWluT2JqZWN0KHQpfHwKKGU9QXJyYXkuaXNBcnJheSh0KSkpPyhjPWdbYl0sZj1lJiYhQXJyYXkuaXNBcnJheShjKT9bXTplfHxkLmlzUGxhaW5PYmplY3QoYyk\/Yzp7fSxlPSExLGdbYl09ZC5leHRlbmQobCxmLHQpKTp2b2lkIDAhPT10JiYoZ1tiXT10KSl9cmV0dXJuIGd9O2QuZXh0ZW5kKHtleHBhbmRvOiJqUXVlcnkiKygiMy43LjAiK01hdGgucmFuZG9tKCkpLnJlcGxhY2UoL1xEL2csIiIpLGlzUmVhZHk6ITAsZXJyb3I6ZnVuY3Rpb24oYSl7dGhyb3cgRXJyb3IoYSk7fSxub29wOmZ1bmN0aW9uKCl7fSxpc1BsYWluT2JqZWN0OmZ1bmN0aW9uKGEpe3ZhciBiLGM7cmV0dXJuISghYXx8IltvYmplY3QgT2JqZWN0XSIhPT1rYy5jYWxsKGEpKSYmKCEoYj1zYyhhKSl8fCJmdW5jdGlvbiI9PXR5cGVvZihjPUZiLmNhbGwoYiwiY29uc3RydWN0b3IiKSYmYi5jb25zdHJ1Y3RvcikmJnRjLmNhbGwoYyk9PT1WYyl9LGlzRW1wdHlPYmplY3Q6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiIGluIGEpcmV0dXJuITE7cmV0dXJuITB9LApnbG9iYWxFdmFsOmZ1bmN0aW9uKGEsYixjKXt3YShhLHtub25jZTpiJiZiLm5vbmNlfSxjKX0sZWFjaDpmdW5jdGlvbihhLGIpe3ZhciBjLGU9MDtpZihlYihhKSlmb3IoYz1hLmxlbmd0aDtlPGMmJiExIT09Yi5jYWxsKGFbZV0sZSxhW2VdKTtlKyspO2Vsc2UgZm9yKGUgaW4gYSlpZighMT09PWIuY2FsbChhW2VdLGUsYVtlXSkpYnJlYWs7cmV0dXJuIGF9LHRleHQ6ZnVuY3Rpb24oYSl7dmFyIGIsYz0iIixlPTA7aWYoYj1hLm5vZGVUeXBlKXtpZigxPT09Ynx8OT09PWJ8fDExPT09YilyZXR1cm4gYS50ZXh0Q29udGVudDtpZigzPT09Ynx8ND09PWIpcmV0dXJuIGEubm9kZVZhbHVlfWVsc2UgZm9yKDtiPWFbZSsrXTspYys9ZC50ZXh0KGIpO3JldHVybiBjfSxtYWtlQXJyYXk6ZnVuY3Rpb24oYSxiKXtiPWJ8fFtdO3JldHVybiBudWxsIT1hJiYoZWIoT2JqZWN0KGEpKT9kLm1lcmdlKGIsInN0cmluZyI9PXR5cGVvZiBhP1thXTphKTp1Yi5jYWxsKGIsYSkpLGJ9LGluQXJyYXk6ZnVuY3Rpb24oYSwKYixjKXtyZXR1cm4gbnVsbD09Yj8tMTpOYS5jYWxsKGIsYSxjKX0saXNYTUxEb2M6ZnVuY3Rpb24oYSl7dmFyIGI9YSYmKGEub3duZXJEb2N1bWVudHx8YSkuZG9jdW1lbnRFbGVtZW50O3JldHVybiFXYy50ZXN0KGEmJmEubmFtZXNwYWNlVVJJfHxiJiZiLm5vZGVOYW1lfHwiSFRNTCIpfSxtZXJnZTpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0rYi5sZW5ndGgsZT0wLGY9YS5sZW5ndGg7ZTxjO2UrKylhW2YrK109YltlXTtyZXR1cm4gYS5sZW5ndGg9ZixhfSxncmVwOmZ1bmN0aW9uKGEsYixjKXt2YXIgZT1bXSxmPTAsZz1hLmxlbmd0aDtmb3IoYz0hYztmPGc7ZisrKSFiKGFbZl0sZikhPT1jJiZlLnB1c2goYVtmXSk7cmV0dXJuIGV9LG1hcDpmdW5jdGlvbihhLGIsYyl7dmFyIGUsZixnPTAsaD1bXTtpZihlYihhKSlmb3IoZT1hLmxlbmd0aDtnPGU7ZysrKW51bGwhPShmPWIoYVtnXSxnLGMpKSYmaC5wdXNoKGYpO2Vsc2UgZm9yKGcgaW4gYSludWxsIT0oZj1iKGFbZ10sZyxjKSkmJgpoLnB1c2goZik7cmV0dXJuIG9jKGgpfSxndWlkOjEsc3VwcG9ydDpOfSk7ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKGQuZm5bU3ltYm9sLml0ZXJhdG9yXT1vYVtTeW1ib2wuaXRlcmF0b3JdKTtkLmVhY2goIkJvb2xlYW4gTnVtYmVyIFN0cmluZyBGdW5jdGlvbiBBcnJheSBEYXRlIFJlZ0V4cCBPYmplY3QgRXJyb3IgU3ltYm9sIi5zcGxpdCgiICIpLGZ1bmN0aW9uKGEsYil7TWJbIltvYmplY3QgIitiKyJdIl09Yi50b0xvd2VyQ2FzZSgpfSk7dmFyIFhjPW9hLnBvcCxZYz1vYS5zb3J0LFpjPW9hLnNwbGljZSx6Yj1SZWdFeHAoIl5bXFx4MjBcXHRcXHJcXG5cXGZdK3woKD86XnxbXlxcXFxdKSg\/OlxcXFwuKSopW1xceDIwXFx0XFxyXFxuXFxmXSskIiwiZyIpO2QuY29udGFpbnM9ZnVuY3Rpb24oYSxiKXtiPWImJmIucGFyZW50Tm9kZTtyZXR1cm4gYT09PWJ8fCEoIWJ8fDEhPT1iLm5vZGVUeXBlfHwhKGEuY29udGFpbnM\/YS5jb250YWlucyhiKTphLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uJiYKMTYmYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihiKSkpfTt2YXIgJGM9LyhbXDAtXHgxZlx4N2ZdfF4tP1xkKXxeLSR8W15ceDgwLVx1RkZGRlx3LV0vZztkLmVzY2FwZVNlbGVjdG9yPWZ1bmN0aW9uKGEpe3JldHVybihhKyIiKS5yZXBsYWNlKCRjLGJhKX07dmFyIFJhPUw7IWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShrLHAscSx2KXt2YXIgeSxFLEEsSSxCPXAmJnAub3duZXJEb2N1bWVudCxKPXA\/cC5ub2RlVHlwZTo5O2lmKHE9cXx8W10sInN0cmluZyIhPXR5cGVvZiBrfHwha3x8MSE9PUomJjkhPT1KJiYxMSE9PUopcmV0dXJuIHE7aWYoIXYmJih0KHApLHA9cHx8Wix2YSkpe2lmKDExIT09SiYmKEk9YWQuZXhlYyhrKSkpaWYoeT1JWzFdKWlmKDk9PT1KKXtpZighKEU9cC5nZXRFbGVtZW50QnlJZCh5KSkpcmV0dXJuIHE7aWYoRS5pZD09PXkpcmV0dXJuIHRhLmNhbGwocSxFKSxxfWVsc2V7aWYoQiYmKEU9Qi5nZXRFbGVtZW50QnlJZCh5KSkmJmEuY29udGFpbnMocCxFKSYmRS5pZD09PQp5KXJldHVybiB0YS5jYWxsKHEsRSkscX1lbHNle2lmKElbMl0pcmV0dXJuIHRhLmFwcGx5KHEscC5nZXRFbGVtZW50c0J5VGFnTmFtZShrKSkscTtpZigoeT1JWzNdKSYmcC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKXJldHVybiB0YS5hcHBseShxLHAuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSh5KSkscX1pZighKFlbaysiICJdfHxrYSYma2EudGVzdChrKSkpe2lmKHk9ayxCPXAsMT09PUomJih2Yi50ZXN0KGspfHxIYS50ZXN0KGspKSl7KEI9ZGMudGVzdChrKSYmbChwLnBhcmVudE5vZGUpfHxwKT09cCYmTi5zY29wZXx8KChBPXAuZ2V0QXR0cmlidXRlKCJpZCIpKT9BPWQuZXNjYXBlU2VsZWN0b3IoQSk6cC5zZXRBdHRyaWJ1dGUoImlkIixBPVcpKTtmb3IoSj0oeT1yKGspKS5sZW5ndGg7Si0tOyl5W0pdPShBPyIjIitBOiI6c2NvcGUiKSsiICIreih5W0pdKTt5PXkuam9pbigiLCIpfXRyeXtyZXR1cm4gdGEuYXBwbHkocSxCLnF1ZXJ5U2VsZWN0b3JBbGwoeSkpLHF9Y2F0Y2goUil7WShrLAohMCl9ZmluYWxseXtBPT09VyYmcC5yZW1vdmVBdHRyaWJ1dGUoImlkIil9fX1yZXR1cm4gU2Eoay5yZXBsYWNlKHpiLCIkMSIpLHAscSx2KX1mdW5jdGlvbiBiKCl7dmFyIGs9W107cmV0dXJuIGZ1bmN0aW9uIHkocSx2KXtyZXR1cm4gay5wdXNoKHErIiAiKT5LLmNhY2hlTGVuZ3RoJiZkZWxldGUgeVtrLnNoaWZ0KCldLHlbcSsiICJdPXZ9fWZ1bmN0aW9uIGMoayl7cmV0dXJuIGtbV109ITAsa31mdW5jdGlvbiBlKGspe3ZhciBwPVouY3JlYXRlRWxlbWVudCgiZmllbGRzZXQiKTt0cnl7cmV0dXJuISFrKHApfWNhdGNoKHEpe3JldHVybiExfWZpbmFsbHl7cC5wYXJlbnROb2RlJiZwLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQocCl9fWZ1bmN0aW9uIGYoayl7cmV0dXJuIGZ1bmN0aW9uKHApe3JldHVybiBYKHAsImlucHV0IikmJnAudHlwZT09PWt9fWZ1bmN0aW9uIGcoayl7cmV0dXJuIGZ1bmN0aW9uKHApe3JldHVybihYKHAsImlucHV0Iil8fFgocCwiYnV0dG9uIikpJiZwLnR5cGU9PT0Ka319ZnVuY3Rpb24gaChrKXtyZXR1cm4gZnVuY3Rpb24ocCl7cmV0dXJuImZvcm0iaW4gcD9wLnBhcmVudE5vZGUmJiExPT09cC5kaXNhYmxlZD8ibGFiZWwiaW4gcD8ibGFiZWwiaW4gcC5wYXJlbnROb2RlP3AucGFyZW50Tm9kZS5kaXNhYmxlZD09PWs6cC5kaXNhYmxlZD09PWs6cC5pc0Rpc2FibGVkPT09a3x8cC5pc0Rpc2FibGVkIT09IWsmJmJkKHApPT09azpwLmRpc2FibGVkPT09azoibGFiZWwiaW4gcCYmcC5kaXNhYmxlZD09PWt9fWZ1bmN0aW9uIG0oayl7cmV0dXJuIGMoZnVuY3Rpb24ocCl7cmV0dXJuIHA9K3AsYyhmdW5jdGlvbihxLHYpe2Zvcih2YXIgeSxFPWsoW10scS5sZW5ndGgscCksQT1FLmxlbmd0aDtBLS07KXFbeT1FW0FdXSYmKHFbeV09ISh2W3ldPXFbeV0pKX0pfSl9ZnVuY3Rpb24gbChrKXtyZXR1cm4gayYmInVuZGVmaW5lZCIhPXR5cGVvZiBrLmdldEVsZW1lbnRzQnlUYWdOYW1lJiZrfWZ1bmN0aW9uIHQoayl7dmFyIHA7az1rP2sub3duZXJEb2N1bWVudHx8Cms6UmE7cmV0dXJuIGshPVomJjk9PT1rLm5vZGVUeXBlJiZrLmRvY3VtZW50RWxlbWVudCYmKHJhPShaPWspLmRvY3VtZW50RWxlbWVudCx2YT0hZC5pc1hNTERvYyhaKSxNYT1yYS5tYXRjaGVzfHxyYS53ZWJraXRNYXRjaGVzU2VsZWN0b3J8fHJhLm1zTWF0Y2hlc1NlbGVjdG9yLFJhIT1aJiYocD1aLmRlZmF1bHRWaWV3KSYmcC50b3AhPT1wJiZwLmFkZEV2ZW50TGlzdGVuZXIoInVubG9hZCIsY2QpLE4uZ2V0QnlJZD1lKGZ1bmN0aW9uKHEpe3JldHVybiByYS5hcHBlbmRDaGlsZChxKS5pZD1kLmV4cGFuZG8sIVouZ2V0RWxlbWVudHNCeU5hbWV8fCFaLmdldEVsZW1lbnRzQnlOYW1lKGQuZXhwYW5kbykubGVuZ3RofSksTi5kaXNjb25uZWN0ZWRNYXRjaD1lKGZ1bmN0aW9uKHEpe3JldHVybiBNYS5jYWxsKHEsIioiKX0pLE4uc2NvcGU9ZShmdW5jdGlvbigpe3JldHVybiBaLnF1ZXJ5U2VsZWN0b3JBbGwoIjpzY29wZSIpfSksTi5jc3NIYXM9ZShmdW5jdGlvbigpe3RyeXtyZXR1cm4gWi5xdWVyeVNlbGVjdG9yKCI6aGFzKCosOmpxZmFrZSkiKSwKITF9Y2F0Y2gocSl7cmV0dXJuITB9fSksTi5nZXRCeUlkPyhLLmZpbHRlci5JRD1mdW5jdGlvbihxKXt2YXIgdj1xLnJlcGxhY2UoVGEsVWEpO3JldHVybiBmdW5jdGlvbih5KXtyZXR1cm4geS5nZXRBdHRyaWJ1dGUoImlkIik9PT12fX0sSy5maW5kLklEPWZ1bmN0aW9uKHEsdil7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB2LmdldEVsZW1lbnRCeUlkJiZ2YSlyZXR1cm4ocT12LmdldEVsZW1lbnRCeUlkKHEpKT9bcV06W119KTooSy5maWx0ZXIuSUQ9ZnVuY3Rpb24ocSl7dmFyIHY9cS5yZXBsYWNlKFRhLFVhKTtyZXR1cm4gZnVuY3Rpb24oeSl7cmV0dXJuKHk9InVuZGVmaW5lZCIhPXR5cGVvZiB5LmdldEF0dHJpYnV0ZU5vZGUmJnkuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKSkmJnkudmFsdWU9PT12fX0sSy5maW5kLklEPWZ1bmN0aW9uKHEsdil7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB2LmdldEVsZW1lbnRCeUlkJiZ2YSl7dmFyIHksRT12LmdldEVsZW1lbnRCeUlkKHEpO2lmKEUpe2lmKCh5PQpFLmdldEF0dHJpYnV0ZU5vZGUoImlkIikpJiZ5LnZhbHVlPT09cSlyZXR1cm5bRV07dmFyIEE9di5nZXRFbGVtZW50c0J5TmFtZShxKTtmb3Iodj0wO0U9QVt2KytdOylpZigoeT1FLmdldEF0dHJpYnV0ZU5vZGUoImlkIikpJiZ5LnZhbHVlPT09cSlyZXR1cm5bRV19cmV0dXJuW119fSksSy5maW5kLlRBRz1mdW5jdGlvbihxLHYpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2Ygdi5nZXRFbGVtZW50c0J5VGFnTmFtZT92LmdldEVsZW1lbnRzQnlUYWdOYW1lKHEpOnYucXVlcnlTZWxlY3RvckFsbChxKX0sSy5maW5kLkNMQVNTPWZ1bmN0aW9uKHEsdil7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB2LmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJnZhKXJldHVybiB2LmdldEVsZW1lbnRzQnlDbGFzc05hbWUocSl9LGthPVtdLGUoZnVuY3Rpb24ocSl7dmFyIHY7cmEuYXBwZW5kQ2hpbGQocSkuaW5uZXJIVE1MPSI8YSBpZD0nIitXKyInIGhyZWY9JycgZGlzYWJsZWQ9J2Rpc2FibGVkJz48L2E+PHNlbGVjdCBpZD0nIisKVysiLVxyXFwnIGRpc2FibGVkPSdkaXNhYmxlZCc+PG9wdGlvbiBzZWxlY3RlZD0nJz48L29wdGlvbj48L3NlbGVjdD4iO3EucXVlcnlTZWxlY3RvckFsbCgiW3NlbGVjdGVkXSIpLmxlbmd0aHx8a2EucHVzaCgiXFxbW1xceDIwXFx0XFxyXFxuXFxmXSooPzp2YWx1ZXxjaGVja2VkfHNlbGVjdGVkfGFzeW5jfGF1dG9mb2N1c3xhdXRvcGxheXxjb250cm9sc3xkZWZlcnxkaXNhYmxlZHxoaWRkZW58aXNtYXB8bG9vcHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5fHJlcXVpcmVkfHNjb3BlZCkiKTtxLnF1ZXJ5U2VsZWN0b3JBbGwoIltpZH49IitXKyItXSIpLmxlbmd0aHx8a2EucHVzaCgifj0iKTtxLnF1ZXJ5U2VsZWN0b3JBbGwoImEjIitXKyIrKiIpLmxlbmd0aHx8a2EucHVzaCgiLiMuK1srfl0iKTtxLnF1ZXJ5U2VsZWN0b3JBbGwoIjpjaGVja2VkIikubGVuZ3RofHxrYS5wdXNoKCI6Y2hlY2tlZCIpOyh2PVouY3JlYXRlRWxlbWVudCgiaW5wdXQiKSkuc2V0QXR0cmlidXRlKCJ0eXBlIiwKImhpZGRlbiIpO3EuYXBwZW5kQ2hpbGQodikuc2V0QXR0cmlidXRlKCJuYW1lIiwiRCIpO3JhLmFwcGVuZENoaWxkKHEpLmRpc2FibGVkPSEwOzIhPT1xLnF1ZXJ5U2VsZWN0b3JBbGwoIjpkaXNhYmxlZCIpLmxlbmd0aCYma2EucHVzaCgiOmVuYWJsZWQiLCI6ZGlzYWJsZWQiKTsodj1aLmNyZWF0ZUVsZW1lbnQoImlucHV0IikpLnNldEF0dHJpYnV0ZSgibmFtZSIsIiIpO3EuYXBwZW5kQ2hpbGQodik7cS5xdWVyeVNlbGVjdG9yQWxsKCJbbmFtZT0nJ10iKS5sZW5ndGh8fGthLnB1c2goIlxcW1tcXHgyMFxcdFxcclxcblxcZl0qbmFtZVtcXHgyMFxcdFxcclxcblxcZl0qPVtcXHgyMFxcdFxcclxcblxcZl0qKD86Jyd8XCJcIikiKX0pLE4uY3NzSGFzfHxrYS5wdXNoKCI6aGFzIiksa2E9a2EubGVuZ3RoJiZuZXcgUmVnRXhwKGthLmpvaW4oInwiKSksbGE9ZnVuY3Rpb24ocSx2KXtpZihxPT09dilyZXR1cm4gaWI9ITAsMDt2YXIgeT0hcS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbi0hdi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbjsKcmV0dXJuIHl8fCgxJih5PShxLm93bmVyRG9jdW1lbnR8fHEpPT0odi5vd25lckRvY3VtZW50fHx2KT9xLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHYpOjEpfHwhTi5zb3J0RGV0YWNoZWQmJnYuY29tcGFyZURvY3VtZW50UG9zaXRpb24ocSk9PT15P3E9PT1afHxxLm93bmVyRG9jdW1lbnQ9PVJhJiZhLmNvbnRhaW5zKFJhLHEpPy0xOnY9PT1afHx2Lm93bmVyRG9jdW1lbnQ9PVJhJiZhLmNvbnRhaW5zKFJhLHYpPzE6aGE\/TmEuY2FsbChoYSxxKS1OYS5jYWxsKGhhLHYpOjA6NCZ5Py0xOjEpfSksWn1mdW5jdGlvbiB3KCl7fWZ1bmN0aW9uIHIoayxwKXt2YXIgcSx2LHksRSxBLEk7aWYoQT1WYVtrKyIgIl0pcmV0dXJuIHA\/MDpBLnNsaWNlKDApO0E9azt2YXIgQj1bXTtmb3IoST1LLnByZUZpbHRlcjtBOyl7Zm9yKEUgaW4gcSYmISh2PW1hLmV4ZWMoQSkpfHwodiYmKEE9QS5zbGljZSh2WzBdLmxlbmd0aCl8fEEpLEIucHVzaCh5PVtdKSkscT0hMSwodj1IYS5leGVjKEEpKSYmKHE9CnYuc2hpZnQoKSx5LnB1c2goe3ZhbHVlOnEsdHlwZTp2WzBdLnJlcGxhY2UoemIsIiAiKX0pLEE9QS5zbGljZShxLmxlbmd0aCkpLEsuZmlsdGVyKSEodj1ZYltFXS5leGVjKEEpKXx8SVtFXSYmISh2PUlbRV0odikpfHwocT12LnNoaWZ0KCkseS5wdXNoKHt2YWx1ZTpxLHR5cGU6RSxtYXRjaGVzOnZ9KSxBPUEuc2xpY2UocS5sZW5ndGgpKTtpZighcSlicmVha31yZXR1cm4gcD9BLmxlbmd0aDpBP2EuZXJyb3Ioayk6VmEoayxCKS5zbGljZSgwKX1mdW5jdGlvbiB6KGspe2Zvcih2YXIgcD0wLHE9ay5sZW5ndGgsdj0iIjtwPHE7cCsrKXYrPWtbcF0udmFsdWU7cmV0dXJuIHZ9ZnVuY3Rpb24gRChrLHAscSl7dmFyIHY9cC5kaXIseT1wLm5leHQsRT15fHx2LEE9cSYmInBhcmVudE5vZGUiPT09RSxJPURhKys7cmV0dXJuIHAuZmlyc3Q\/ZnVuY3Rpb24oQixKLFIpe2Zvcig7Qj1CW3ZdOylpZigxPT09Qi5ub2RlVHlwZXx8QSlyZXR1cm4gayhCLEosUik7cmV0dXJuITF9OmZ1bmN0aW9uKEIsCkosUil7dmFyIFQsVixpYT1bZmEsSV07aWYoUilmb3IoO0I9Qlt2XTspe2lmKCgxPT09Qi5ub2RlVHlwZXx8QSkmJmsoQixKLFIpKXJldHVybiEwfWVsc2UgZm9yKDtCPUJbdl07KWlmKDE9PT1CLm5vZGVUeXBlfHxBKWlmKFY9QltXXXx8KEJbV109e30pLHkmJlgoQix5KSlCPUJbdl18fEI7ZWxzZXtpZigoVD1WW0VdKSYmVFswXT09PWZhJiZUWzFdPT09SSlyZXR1cm4gaWFbMl09VFsyXTtpZigoVltFXT1pYSlbMl09ayhCLEosUikpcmV0dXJuITB9cmV0dXJuITF9fWZ1bmN0aW9uIEYoayl7cmV0dXJuIDE8ay5sZW5ndGg\/ZnVuY3Rpb24ocCxxLHYpe2Zvcih2YXIgeT1rLmxlbmd0aDt5LS07KWlmKCFrW3ldKHAscSx2KSlyZXR1cm4hMTtyZXR1cm4hMH06a1swXX1mdW5jdGlvbiBPKGsscCxxLHYseSl7Zm9yKHZhciBFLEE9W10sST0wLEI9ay5sZW5ndGgsSj1udWxsIT1wO0k8QjtJKyspKEU9a1tJXSkmJihxJiYhcShFLHYseSl8fChBLnB1c2goRSksSiYmcC5wdXNoKEkpKSk7cmV0dXJuIEF9CmZ1bmN0aW9uIGFhKGsscCxxLHYseSxFKXtyZXR1cm4gdiYmIXZbV10mJih2PWFhKHYpKSx5JiYheVtXXSYmKHk9YWEoeSxFKSksYyhmdW5jdGlvbihBLEksQixKKXt2YXIgUixULFY9W10saWE9W10scGE9SS5sZW5ndGgsbmE7aWYoIShuYT1BKSl7bmE9cHx8IioiO2Zvcih2YXIgRWE9Qi5ub2RlVHlwZT9bQl06QixjYT1bXSxBYT0wLFdhPUVhLmxlbmd0aDtBYTxXYTtBYSsrKWEobmEsRWFbQWFdLGNhKTtuYT1jYX1uYT0ha3x8IUEmJnA\/bmE6TyhuYSxWLGssQixKKTtpZihxP3EobmEsVD15fHwoQT9rOnBhfHx2KT9bXTpJLEIsSik6VD1uYSx2KXt2YXIgRmE9TyhULGlhKTt2KEZhLFtdLEIsSik7Zm9yKEI9RmEubGVuZ3RoO0ItLTspKFI9RmFbQl0pJiYoVFtpYVtCXV09IShuYVtpYVtCXV09UikpfWlmKEEpe2lmKHl8fGspe2lmKHkpe0ZhPVtdO2ZvcihCPVQubGVuZ3RoO0ItLTspKFI9VFtCXSkmJkZhLnB1c2gobmFbQl09Uik7eShudWxsLFQ9W10sRmEsSil9Zm9yKEI9VC5sZW5ndGg7Qi0tOykoUj0KVFtCXSkmJi0xPChGYT15P05hLmNhbGwoQSxSKTpWW0JdKSYmKEFbRmFdPSEoSVtGYV09UikpfX1lbHNlIFQ9TyhUPT09ST9ULnNwbGljZShwYSxULmxlbmd0aCk6VCkseT95KG51bGwsSSxULEopOnRhLmFwcGx5KEksVCl9KX1mdW5jdGlvbiBHYShrKXtmb3IodmFyIHAscSx2PWsubGVuZ3RoLHk9Sy5yZWxhdGl2ZVtrWzBdLnR5cGVdLEU9eXx8Sy5yZWxhdGl2ZVsiICJdLEE9eT8xOjAsST1EKGZ1bmN0aW9uKFIpe3JldHVybiBSPT09cH0sRSwhMCksQj1EKGZ1bmN0aW9uKFIpe3JldHVybi0xPE5hLmNhbGwocCxSKX0sRSwhMCksSj1bZnVuY3Rpb24oUixULFYpe1I9IXkmJihWfHxUIT1TKXx8KChwPVQpLm5vZGVUeXBlP0koUixULFYpOkIoUixULFYpKTtyZXR1cm4gcD1udWxsLFJ9XTtBPHY7QSsrKWlmKEU9Sy5yZWxhdGl2ZVtrW0FdLnR5cGVdKUo9W0QoRihKKSxFKV07ZWxzZXtpZigoRT1LLmZpbHRlcltrW0FdLnR5cGVdLmFwcGx5KG51bGwsa1tBXS5tYXRjaGVzKSlbV10pe2ZvcihxPQorK0E7cTx2JiYhSy5yZWxhdGl2ZVtrW3FdLnR5cGVdO3ErKyk7cmV0dXJuIGFhKDE8QSYmRihKKSwxPEEmJnooay5zbGljZSgwLEEtMSkuY29uY2F0KHt2YWx1ZToiICI9PT1rW0EtMl0udHlwZT8iKiI6IiJ9KSkucmVwbGFjZSh6YiwiJDEiKSxFLEE8cSYmR2Eoay5zbGljZShBLHEpKSxxPHYmJkdhKGs9ay5zbGljZShxKSkscTx2JiZ6KGspKX1KLnB1c2goRSl9cmV0dXJuIEYoSil9ZnVuY3Rpb24gcWEoayxwKXt2YXIgcSx2LHksRSxBPVtdLEk9W10sQj11YVtrKyIgIl07aWYoIUIpe3B8fChwPXIoaykpO2ZvcihxPXAubGVuZ3RoO3EtLTspKEI9R2EocFtxXSkpW1ddP0EucHVzaChCKTpJLnB1c2goQik7KEI9dWEoaywodj0wPEEubGVuZ3RoLHk9MDxJLmxlbmd0aCxFPWZ1bmN0aW9uKEosUixULFYsaWEpe3ZhciBwYSxuYSxFYT0wLGNhPSIwIixBYT1KJiZbXSxXYT1bXSxGYT1TLHVjPUp8fHkmJksuZmluZC5UQUcoIioiLGlhKSx2Yz1mYSs9bnVsbD09RmE\/MTpNYXRoLnJhbmRvbSgpfHwKLjEsZGQ9dWMubGVuZ3RoO2ZvcihpYSYmKFM9Uj09Wnx8Unx8aWEpO2NhIT09ZGQmJm51bGwhPShwYT11Y1tjYV0pO2NhKyspe2lmKHkmJnBhKXt2YXIgZWM9MDtmb3IoUnx8cGEub3duZXJEb2N1bWVudD09Wnx8KHQocGEpLFQ9IXZhKTtuYT1JW2VjKytdOylpZihuYShwYSxSfHxaLFQpKXt0YS5jYWxsKFYscGEpO2JyZWFrfWlhJiYoZmE9dmMpfXYmJigocGE9IW5hJiZwYSkmJkVhLS0sSiYmQWEucHVzaChwYSkpfWlmKEVhKz1jYSx2JiZjYSE9PUVhKXtmb3IoZWM9MDtuYT1BW2VjKytdOyluYShBYSxXYSxSLFQpO2lmKEope2lmKDA8RWEpZm9yKDtjYS0tOylBYVtjYV18fFdhW2NhXXx8KFdhW2NhXT1YYy5jYWxsKFYpKTtXYT1PKFdhKX10YS5hcHBseShWLFdhKTtpYSYmIUomJjA8V2EubGVuZ3RoJiYxPEVhK0EubGVuZ3RoJiZkLnVuaXF1ZVNvcnQoVil9cmV0dXJuIGlhJiYoZmE9dmMsUz1GYSksQWF9LHY\/YyhFKTpFKSkpLnNlbGVjdG9yPWt9cmV0dXJuIEJ9ZnVuY3Rpb24gU2EoaywKcCxxLHYpe3ZhciB5LEUsQSxJLEIsSj0iZnVuY3Rpb24iPT10eXBlb2YgayYmayxSPSF2JiZyKGs9Si5zZWxlY3Rvcnx8ayk7aWYocT1xfHxbXSwxPT09Ui5sZW5ndGgpe2lmKDI8KEU9UlswXT1SWzBdLnNsaWNlKDApKS5sZW5ndGgmJiJJRCI9PT0oQT1FWzBdKS50eXBlJiY5PT09cC5ub2RlVHlwZSYmdmEmJksucmVsYXRpdmVbRVsxXS50eXBlXSl7aWYoIShwPShLLmZpbmQuSUQoQS5tYXRjaGVzWzBdLnJlcGxhY2UoVGEsVWEpLHApfHxbXSlbMF0pKXJldHVybiBxO0omJihwPXAucGFyZW50Tm9kZSk7az1rLnNsaWNlKEUuc2hpZnQoKS52YWx1ZS5sZW5ndGgpfWZvcih5PVliLm5lZWRzQ29udGV4dC50ZXN0KGspPzA6RS5sZW5ndGg7eS0tJiYoQT1FW3ldLCFLLnJlbGF0aXZlW0k9QS50eXBlXSk7KWlmKChCPUsuZmluZFtJXSkmJih2PUIoQS5tYXRjaGVzWzBdLnJlcGxhY2UoVGEsVWEpLGRjLnRlc3QoRVswXS50eXBlKSYmbChwLnBhcmVudE5vZGUpfHxwKSkpe2lmKEUuc3BsaWNlKHksCjEpLCEoaz12Lmxlbmd0aCYmeihFKSkpcmV0dXJuIHRhLmFwcGx5KHEsdikscTticmVha319cmV0dXJuKEp8fHFhKGssUikpKHYscCwhdmEscSwhcHx8ZGMudGVzdChrKSYmbChwLnBhcmVudE5vZGUpfHxwKSxxfXZhciBRLEssUyxoYSxpYixaLHJhLHZhLGthLE1hLHRhPXViLFc9ZC5leHBhbmRvLGZhPTAsRGE9MCxkYj1iKCksVmE9YigpLHVhPWIoKSxZPWIoKSxsYT1mdW5jdGlvbihrLHApe3JldHVybiBrPT09cCYmKGliPSEwKSwwfSxJYT1SZWdFeHAoIltcXHgyMFxcdFxcclxcblxcZl0rIiwiZyIpLG1hPVJlZ0V4cCgiXltcXHgyMFxcdFxcclxcblxcZl0qLFtcXHgyMFxcdFxcclxcblxcZl0qIiksSGE9UmVnRXhwKCJeW1xceDIwXFx0XFxyXFxuXFxmXSooWz4rfl18W1xceDIwXFx0XFxyXFxuXFxmXSlbXFx4MjBcXHRcXHJcXG5cXGZdKiIpLHZiPVJlZ0V4cCgiW1xceDIwXFx0XFxyXFxuXFxmXXw+IiksZmM9UmVnRXhwKCI6KCg\/OlxcXFxbXFxkYS1mQS1GXXsxLDZ9W1xceDIwXFx0XFxyXFxuXFxmXT98XFxcXFteXFxyXFxuXFxmXXxbXFx3LV18W15ceDAwLVxceDdmXSkrKSg\/OlxcKCgoJygoPzpcXFxcLnxbXlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15cXFxcXCJdKSopXCIpfCgoPzpcXFxcLnxbXlxcXFwoKVtcXF1dfFxcW1tcXHgyMFxcdFxcclxcblxcZl0qKCg\/OlxcXFxbXFxkYS1mQS1GXXsxLDZ9W1xceDIwXFx0XFxyXFxuXFxmXT98XFxcXFteXFxyXFxuXFxmXXxbXFx3LV18W15ceDAwLVxceDdmXSkrKSg\/OltcXHgyMFxcdFxcclxcblxcZl0qKFsqXiR8IX5dPz0pW1xceDIwXFx0XFxyXFxuXFxmXSooPzonKCg\/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcInwoKD86XFxcXFtcXGRhLWZBLUZdezEsNn1bXFx4MjBcXHRcXHJcXG5cXGZdP3xcXFxcW15cXHJcXG5cXGZdfFtcXHctXXxbXlx4MDAtXFx4N2ZdKSspKXwpW1xceDIwXFx0XFxyXFxuXFxmXSpcXF0pKil8LiopXFwpfCkiKSwKZWQ9UmVnRXhwKCJeKD86XFxcXFtcXGRhLWZBLUZdezEsNn1bXFx4MjBcXHRcXHJcXG5cXGZdP3xcXFxcW15cXHJcXG5cXGZdfFtcXHctXXxbXlx4MDAtXFx4N2ZdKSskIiksWWI9e0lEOlJlZ0V4cCgiXiMoKD86XFxcXFtcXGRhLWZBLUZdezEsNn1bXFx4MjBcXHRcXHJcXG5cXGZdP3xcXFxcW15cXHJcXG5cXGZdfFtcXHctXXxbXlx4MDAtXFx4N2ZdKSspIiksQ0xBU1M6UmVnRXhwKCJeXFwuKCg\/OlxcXFxbXFxkYS1mQS1GXXsxLDZ9W1xceDIwXFx0XFxyXFxuXFxmXT98XFxcXFteXFxyXFxuXFxmXXxbXFx3LV18W15ceDAwLVxceDdmXSkrKSIpLFRBRzpSZWdFeHAoIl4oKD86XFxcXFtcXGRhLWZBLUZdezEsNn1bXFx4MjBcXHRcXHJcXG5cXGZdP3xcXFxcW15cXHJcXG5cXGZdfFtcXHctXXxbXlx4MDAtXFx4N2ZdKSt8WypdKSIpLEFUVFI6UmVnRXhwKCJeXFxbW1xceDIwXFx0XFxyXFxuXFxmXSooKD86XFxcXFtcXGRhLWZBLUZdezEsNn1bXFx4MjBcXHRcXHJcXG5cXGZdP3xcXFxcW15cXHJcXG5cXGZdfFtcXHctXXxbXlx4MDAtXFx4N2ZdKSspKD86W1xceDIwXFx0XFxyXFxuXFxmXSooWypeJHwhfl0\/PSlbXFx4MjBcXHRcXHJcXG5cXGZdKig\/OicoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg\/OlxcXFwufFteXFxcXFwiXSkqKVwifCgoPzpcXFxcW1xcZGEtZkEtRl17MSw2fVtcXHgyMFxcdFxcclxcblxcZl0\/fFxcXFxbXlxcclxcblxcZl18W1xcdy1dfFteXHgwMC1cXHg3Zl0pKykpfClbXFx4MjBcXHRcXHJcXG5cXGZdKlxcXSIpLApQU0VVRE86UmVnRXhwKCJeOigoPzpcXFxcW1xcZGEtZkEtRl17MSw2fVtcXHgyMFxcdFxcclxcblxcZl0\/fFxcXFxbXlxcclxcblxcZl18W1xcdy1dfFteXHgwMC1cXHg3Zl0pKykoPzpcXCgoKCcoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg\/OlxcXFwufFteXFxcXFwiXSkqKVwiKXwoKD86XFxcXC58W15cXFxcKClbXFxdXXxcXFtbXFx4MjBcXHRcXHJcXG5cXGZdKigoPzpcXFxcW1xcZGEtZkEtRl17MSw2fVtcXHgyMFxcdFxcclxcblxcZl0\/fFxcXFxbXlxcclxcblxcZl18W1xcdy1dfFteXHgwMC1cXHg3Zl0pKykoPzpbXFx4MjBcXHRcXHJcXG5cXGZdKihbKl4kfCF+XT89KVtcXHgyMFxcdFxcclxcblxcZl0qKD86JygoPzpcXFxcLnxbXlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15cXFxcXCJdKSopXCJ8KCg\/OlxcXFxbXFxkYS1mQS1GXXsxLDZ9W1xceDIwXFx0XFxyXFxuXFxmXT98XFxcXFteXFxyXFxuXFxmXXxbXFx3LV18W15ceDAwLVxceDdmXSkrKSl8KVtcXHgyMFxcdFxcclxcblxcZl0qXFxdKSopfC4qKVxcKXwpIiksCkNISUxEOlJlZ0V4cCgiXjoob25seXxmaXJzdHxsYXN0fG50aHxudGgtbGFzdCktKGNoaWxkfG9mLXR5cGUpKD86XFwoW1xceDIwXFx0XFxyXFxuXFxmXSooZXZlbnxvZGR8KChbKy1dfCkoXFxkKilufClbXFx4MjBcXHRcXHJcXG5cXGZdKig\/OihbKy1dfClbXFx4MjBcXHRcXHJcXG5cXGZdKihcXGQrKXwpKVtcXHgyMFxcdFxcclxcblxcZl0qXFwpfCkiLCJpIiksYm9vbDpSZWdFeHAoIl4oPzpjaGVja2VkfHNlbGVjdGVkfGFzeW5jfGF1dG9mb2N1c3xhdXRvcGxheXxjb250cm9sc3xkZWZlcnxkaXNhYmxlZHxoaWRkZW58aXNtYXB8bG9vcHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5fHJlcXVpcmVkfHNjb3BlZCkkIiwiaSIpLG5lZWRzQ29udGV4dDpSZWdFeHAoIl5bXFx4MjBcXHRcXHJcXG5cXGZdKls+K35dfDooZXZlbnxvZGR8ZXF8Z3R8bHR8bnRofGZpcnN0fGxhc3QpKD86XFwoW1xceDIwXFx0XFxyXFxuXFxmXSooKD86LVxcZCk\/XFxkKilbXFx4MjBcXHRcXHJcXG5cXGZdKlxcKXwpKD89W14tXXwkKSIsCiJpIil9LGZkPS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbikkL2ksZ2Q9L15oXGQkL2ksYWQ9L14oPzojKFtcdy1dKyl8KFx3Kyl8XC4oW1x3LV0rKSkkLyxkYz0vWyt+XS8sVGE9UmVnRXhwKCJcXFxcW1xcZGEtZkEtRl17MSw2fVtcXHgyMFxcdFxcclxcblxcZl0\/fFxcXFwoW15cXHJcXG5cXGZdKSIsImciKSxVYT1mdW5jdGlvbihrLHApe2s9IjB4IitrLnNsaWNlKDEpLTY1NTM2O3JldHVybiBwfHwoMD5rP1N0cmluZy5mcm9tQ2hhckNvZGUoays2NTUzNik6U3RyaW5nLmZyb21DaGFyQ29kZShrPj4xMHw1NTI5NiwxMDIzJmt8NTYzMjApKX0sY2Q9ZnVuY3Rpb24oKXt0KCl9LGJkPUQoZnVuY3Rpb24oayl7cmV0dXJuITA9PT1rLmRpc2FibGVkJiZYKGssImZpZWxkc2V0Iil9LHtkaXI6InBhcmVudE5vZGUiLG5leHQ6ImxlZ2VuZCJ9KTt0cnl7dGEuYXBwbHkob2E9eWEuY2FsbChSYS5jaGlsZE5vZGVzKSxSYS5jaGlsZE5vZGVzKSxvYVtSYS5jaGlsZE5vZGVzLmxlbmd0aF0ubm9kZVR5cGV9Y2F0Y2goayl7dGE9CnthcHBseTpmdW5jdGlvbihwLHEpe3ViLmFwcGx5KHAseWEuY2FsbChxKSl9LGNhbGw6ZnVuY3Rpb24ocCl7dWIuYXBwbHkocCx5YS5jYWxsKGFyZ3VtZW50cywxKSl9fX1mb3IoUSBpbiBhLm1hdGNoZXM9ZnVuY3Rpb24oayxwKXtyZXR1cm4gYShrLG51bGwsbnVsbCxwKX0sYS5tYXRjaGVzU2VsZWN0b3I9ZnVuY3Rpb24oayxwKXtpZih0KGspLCEoIXZhfHxZW3ArIiAiXXx8a2EmJmthLnRlc3QocCkpKXRyeXt2YXIgcT1NYS5jYWxsKGsscCk7aWYocXx8Ti5kaXNjb25uZWN0ZWRNYXRjaHx8ay5kb2N1bWVudCYmMTEhPT1rLmRvY3VtZW50Lm5vZGVUeXBlKXJldHVybiBxfWNhdGNoKHYpe1kocCwhMCl9cmV0dXJuIDA8YShwLFosbnVsbCxba10pLmxlbmd0aH0sYS5jb250YWlucz1mdW5jdGlvbihrLHApe3JldHVybihrLm93bmVyRG9jdW1lbnR8fGspIT1aJiZ0KGspLGQuY29udGFpbnMoayxwKX0sYS5hdHRyPWZ1bmN0aW9uKGsscCl7KGsub3duZXJEb2N1bWVudHx8aykhPVomJnQoayk7CnZhciBxPUsuYXR0ckhhbmRsZVtwLnRvTG93ZXJDYXNlKCldO3E9cSYmRmIuY2FsbChLLmF0dHJIYW5kbGUscC50b0xvd2VyQ2FzZSgpKT9xKGsscCwhdmEpOnZvaWQgMDtyZXR1cm4gdm9pZCAwIT09cT9xOmsuZ2V0QXR0cmlidXRlKHApfSxhLmVycm9yPWZ1bmN0aW9uKGspe3Rocm93IEVycm9yKCJTeW50YXggZXJyb3IsIHVucmVjb2duaXplZCBleHByZXNzaW9uOiAiK2spO30sZC51bmlxdWVTb3J0PWZ1bmN0aW9uKGspe3ZhciBwLHE9W10sdj0wLHk9MDtpZihpYj0hTi5zb3J0U3RhYmxlLGhhPSFOLnNvcnRTdGFibGUmJnlhLmNhbGwoaywwKSxZYy5jYWxsKGssbGEpLGliKXtmb3IoO3A9a1t5KytdOylwPT09a1t5XSYmKHY9cS5wdXNoKHkpKTtmb3IoO3YtLTspWmMuY2FsbChrLHFbdl0sMSl9cmV0dXJuIGhhPW51bGwsa30sZC5mbi51bmlxdWVTb3J0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGQudW5pcXVlU29ydCh5YS5hcHBseSh0aGlzKSkpfSwoSz1kLmV4cHI9CntjYWNoZUxlbmd0aDo1MCxjcmVhdGVQc2V1ZG86YyxtYXRjaDpZYixhdHRySGFuZGxlOnt9LGZpbmQ6e30scmVsYXRpdmU6eyI+Ijp7ZGlyOiJwYXJlbnROb2RlIixmaXJzdDohMH0sIiAiOntkaXI6InBhcmVudE5vZGUifSwiKyI6e2RpcjoicHJldmlvdXNTaWJsaW5nIixmaXJzdDohMH0sIn4iOntkaXI6InByZXZpb3VzU2libGluZyJ9fSxwcmVGaWx0ZXI6e0FUVFI6ZnVuY3Rpb24oayl7cmV0dXJuIGtbMV09a1sxXS5yZXBsYWNlKFRhLFVhKSxrWzNdPShrWzNdfHxrWzRdfHxrWzVdfHwiIikucmVwbGFjZShUYSxVYSksIn49Ij09PWtbMl0mJihrWzNdPSIgIitrWzNdKyIgIiksay5zbGljZSgwLDQpfSxDSElMRDpmdW5jdGlvbihrKXtyZXR1cm4ga1sxXT1rWzFdLnRvTG93ZXJDYXNlKCksIm50aCI9PT1rWzFdLnNsaWNlKDAsMyk\/KGtbM118fGEuZXJyb3Ioa1swXSksa1s0XT0rKGtbNF0\/a1s1XSsoa1s2XXx8MSk6MiooImV2ZW4iPT09a1szXXx8Im9kZCI9PT1rWzNdKSksa1s1XT0KKyhrWzddK2tbOF18fCJvZGQiPT09a1szXSkpOmtbM10mJmEuZXJyb3Ioa1swXSksa30sUFNFVURPOmZ1bmN0aW9uKGspe3ZhciBwLHE9IWtbNl0mJmtbMl07cmV0dXJuIFliLkNISUxELnRlc3Qoa1swXSk\/bnVsbDooa1szXT9rWzJdPWtbNF18fGtbNV18fCIiOnEmJmZjLnRlc3QocSkmJihwPXIocSwhMCkpJiYocD1xLmluZGV4T2YoIikiLHEubGVuZ3RoLXApLXEubGVuZ3RoKSYmKGtbMF09a1swXS5zbGljZSgwLHApLGtbMl09cS5zbGljZSgwLHApKSxrLnNsaWNlKDAsMykpfX0sZmlsdGVyOntUQUc6ZnVuY3Rpb24oayl7dmFyIHA9ay5yZXBsYWNlKFRhLFVhKS50b0xvd2VyQ2FzZSgpO3JldHVybiIqIj09PWs\/ZnVuY3Rpb24oKXtyZXR1cm4hMH06ZnVuY3Rpb24ocSl7cmV0dXJuIFgocSxwKX19LENMQVNTOmZ1bmN0aW9uKGspe3ZhciBwPWRiW2srIiAiXTtyZXR1cm4gcHx8KHA9bmV3IFJlZ0V4cCgiKF58W1xceDIwXFx0XFxyXFxuXFxmXSkiK2srIihbXFx4MjBcXHRcXHJcXG5cXGZdfCQpIiksCmRiKGssZnVuY3Rpb24ocSl7cmV0dXJuIHAudGVzdCgic3RyaW5nIj09dHlwZW9mIHEuY2xhc3NOYW1lJiZxLmNsYXNzTmFtZXx8InVuZGVmaW5lZCIhPXR5cGVvZiBxLmdldEF0dHJpYnV0ZSYmcS5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKX0pKX0sQVRUUjpmdW5jdGlvbihrLHAscSl7cmV0dXJuIGZ1bmN0aW9uKHYpe3Y9YS5hdHRyKHYsayk7cmV0dXJuIG51bGw9PXY\/IiE9Ij09PXA6IXB8fCh2Kz0iIiwiPSI9PT1wP3Y9PT1xOiIhPSI9PT1wP3YhPT1xOiJePSI9PT1wP3EmJjA9PT12LmluZGV4T2YocSk6Iio9Ij09PXA\/cSYmLTE8di5pbmRleE9mKHEpOiIkPSI9PT1wP3EmJnYuc2xpY2UoLXEubGVuZ3RoKT09PXE6In49Ij09PXA\/LTE8KCIgIit2LnJlcGxhY2UoSWEsIiAiKSsiICIpLmluZGV4T2YocSk6Inw9Ij09PXAmJih2PT09cXx8di5zbGljZSgwLHEubGVuZ3RoKzEpPT09cSsiLSIpKX19LENISUxEOmZ1bmN0aW9uKGsscCxxLHYseSl7dmFyIEU9Im50aCIhPT1rLnNsaWNlKDAsCjMpLEE9Imxhc3QiIT09ay5zbGljZSgtNCksST0ib2YtdHlwZSI9PT1wO3JldHVybiAxPT09diYmMD09PXk\/ZnVuY3Rpb24oQil7cmV0dXJuISFCLnBhcmVudE5vZGV9OmZ1bmN0aW9uKEIsSixSKXt2YXIgVCxWLGlhO0o9RSE9PUE\/Im5leHRTaWJsaW5nIjoicHJldmlvdXNTaWJsaW5nIjt2YXIgcGE9Qi5wYXJlbnROb2RlLG5hPUkmJkIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxFYT0hUiYmIUksY2E9ITE7aWYocGEpe2lmKEUpe2Zvcig7Sjspe2ZvcihWPUI7Vj1WW0pdOylpZihJP1goVixuYSk6MT09PVYubm9kZVR5cGUpcmV0dXJuITE7dmFyIEFhPUo9Im9ubHkiPT09ayYmIUFhJiYibmV4dFNpYmxpbmcifXJldHVybiEwfWlmKEFhPVtBP3BhLmZpcnN0Q2hpbGQ6cGEubGFzdENoaWxkXSxBJiZFYSlmb3IoY2E9KGlhPShUPShSPXBhW1ddfHwocGFbV109e30pKVtrXXx8W10pWzBdPT09ZmEmJlRbMV0pJiZUWzJdLFY9aWEmJnBhLmNoaWxkTm9kZXNbaWFdO1Y9KytpYSYmViYmVltKXXx8CihjYT1pYT0wKXx8QWEucG9wKCk7KXtpZigxPT09Vi5ub2RlVHlwZSYmKytjYSYmVj09PUIpe1Jba109W2ZhLGlhLGNhXTticmVha319ZWxzZSBpZihFYSYmKGNhPWlhPShUPShCW1ddfHwoQltXXT17fSkpW2tdfHxbXSlbMF09PT1mYSYmVFsxXSksITE9PT1jYSlmb3IoOyhWPSsraWEmJlYmJlZbSl18fChjYT1pYT0wKXx8QWEucG9wKCkpJiYoKEk\/IVgoVixuYSk6MSE9PVYubm9kZVR5cGUpfHwhKytjYXx8KEVhJiYoKFI9VltXXXx8KFZbV109e30pKVtrXT1bZmEsY2FdKSxWIT09QikpOyk7cmV0dXJuKGNhLT15KT09PXZ8fDA9PWNhJXYmJjA8PWNhL3Z9fX0sUFNFVURPOmZ1bmN0aW9uKGsscCl7dmFyIHEsdj1LLnBzZXVkb3Nba118fEsuc2V0RmlsdGVyc1trLnRvTG93ZXJDYXNlKCldfHxhLmVycm9yKCJ1bnN1cHBvcnRlZCBwc2V1ZG86ICIrayk7cmV0dXJuIHZbV10\/dihwKToxPHYubGVuZ3RoPyhxPVtrLGssIiIscF0sSy5zZXRGaWx0ZXJzLmhhc093blByb3BlcnR5KGsudG9Mb3dlckNhc2UoKSk\/CmMoZnVuY3Rpb24oeSxFKXtmb3IodmFyIEEsST12KHkscCksQj1JLmxlbmd0aDtCLS07KXlbQT1OYS5jYWxsKHksSVtCXSldPSEoRVtBXT1JW0JdKX0pOmZ1bmN0aW9uKHkpe3JldHVybiB2KHksMCxxKX0pOnZ9fSxwc2V1ZG9zOntub3Q6YyhmdW5jdGlvbihrKXt2YXIgcD1bXSxxPVtdLHY9cWEoay5yZXBsYWNlKHpiLCIkMSIpKTtyZXR1cm4gdltXXT9jKGZ1bmN0aW9uKHksRSxBLEkpe3ZhciBCO0E9dih5LG51bGwsSSxbXSk7Zm9yKEk9eS5sZW5ndGg7SS0tOykoQj1BW0ldKSYmKHlbSV09IShFW0ldPUIpKX0pOmZ1bmN0aW9uKHksRSxBKXtyZXR1cm4gcFswXT15LHYocCxudWxsLEEscSkscFswXT1udWxsLCFxLnBvcCgpfX0pLGhhczpjKGZ1bmN0aW9uKGspe3JldHVybiBmdW5jdGlvbihwKXtyZXR1cm4gMDxhKGsscCkubGVuZ3RofX0pLGNvbnRhaW5zOmMoZnVuY3Rpb24oayl7cmV0dXJuIGs9ay5yZXBsYWNlKFRhLFVhKSxmdW5jdGlvbihwKXtyZXR1cm4tMTwocC50ZXh0Q29udGVudHx8CmQudGV4dChwKSkuaW5kZXhPZihrKX19KSxsYW5nOmMoZnVuY3Rpb24oayl7cmV0dXJuIGVkLnRlc3Qoa3x8IiIpfHxhLmVycm9yKCJ1bnN1cHBvcnRlZCBsYW5nOiAiK2spLGs9ay5yZXBsYWNlKFRhLFVhKS50b0xvd2VyQ2FzZSgpLGZ1bmN0aW9uKHApe3ZhciBxO2RvIGlmKHE9dmE\/cC5sYW5nOnAuZ2V0QXR0cmlidXRlKCJ4bWw6bGFuZyIpfHxwLmdldEF0dHJpYnV0ZSgibGFuZyIpKXJldHVybihxPXEudG9Mb3dlckNhc2UoKSk9PT1rfHwwPT09cS5pbmRleE9mKGsrIi0iKTt3aGlsZSgocD1wLnBhcmVudE5vZGUpJiYxPT09cC5ub2RlVHlwZSk7cmV0dXJuITF9fSksdGFyZ2V0OmZ1bmN0aW9uKGspe3ZhciBwPW4ubG9jYXRpb24mJm4ubG9jYXRpb24uaGFzaDtyZXR1cm4gcCYmcC5zbGljZSgxKT09PWsuaWR9LHJvb3Q6ZnVuY3Rpb24oayl7cmV0dXJuIGs9PT1yYX0sZm9jdXM6ZnVuY3Rpb24oayl7YTp7dHJ5e3ZhciBwPVouYWN0aXZlRWxlbWVudDticmVhayBhfWNhdGNoKHEpe31wPQp2b2lkIDB9cmV0dXJuIGs9PT1wJiZaLmhhc0ZvY3VzKCkmJiEhKGsudHlwZXx8ay5ocmVmfHx+ay50YWJJbmRleCl9LGVuYWJsZWQ6aCghMSksZGlzYWJsZWQ6aCghMCksY2hlY2tlZDpmdW5jdGlvbihrKXtyZXR1cm4gWChrLCJpbnB1dCIpJiYhIWsuY2hlY2tlZHx8WChrLCJvcHRpb24iKSYmISFrLnNlbGVjdGVkfSxzZWxlY3RlZDpmdW5jdGlvbihrKXtyZXR1cm4gay5wYXJlbnROb2RlJiZrLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCwhMD09PWsuc2VsZWN0ZWR9LGVtcHR5OmZ1bmN0aW9uKGspe2ZvcihrPWsuZmlyc3RDaGlsZDtrO2s9ay5uZXh0U2libGluZylpZig2Pmsubm9kZVR5cGUpcmV0dXJuITE7cmV0dXJuITB9LHBhcmVudDpmdW5jdGlvbihrKXtyZXR1cm4hSy5wc2V1ZG9zLmVtcHR5KGspfSxoZWFkZXI6ZnVuY3Rpb24oayl7cmV0dXJuIGdkLnRlc3Qoay5ub2RlTmFtZSl9LGlucHV0OmZ1bmN0aW9uKGspe3JldHVybiBmZC50ZXN0KGsubm9kZU5hbWUpfSxidXR0b246ZnVuY3Rpb24oayl7cmV0dXJuIFgoaywKImlucHV0IikmJiJidXR0b24iPT09ay50eXBlfHxYKGssImJ1dHRvbiIpfSx0ZXh0OmZ1bmN0aW9uKGspe3ZhciBwO3JldHVybiBYKGssImlucHV0IikmJiJ0ZXh0Ij09PWsudHlwZSYmKG51bGw9PShwPWsuZ2V0QXR0cmlidXRlKCJ0eXBlIikpfHwidGV4dCI9PT1wLnRvTG93ZXJDYXNlKCkpfSxmaXJzdDptKGZ1bmN0aW9uKCl7cmV0dXJuWzBdfSksbGFzdDptKGZ1bmN0aW9uKGsscCl7cmV0dXJuW3AtMV19KSxlcTptKGZ1bmN0aW9uKGsscCxxKXtyZXR1cm5bMD5xP3ErcDpxXX0pLGV2ZW46bShmdW5jdGlvbihrLHApe2Zvcih2YXIgcT0wO3E8cDtxKz0yKWsucHVzaChxKTtyZXR1cm4ga30pLG9kZDptKGZ1bmN0aW9uKGsscCl7Zm9yKHZhciBxPTE7cTxwO3ErPTIpay5wdXNoKHEpO3JldHVybiBrfSksbHQ6bShmdW5jdGlvbihrLHAscSl7Zm9yKHA9MD5xP3ErcDpwPHE\/cDpxOzA8PS0tcDspay5wdXNoKHApO3JldHVybiBrfSksZ3Q6bShmdW5jdGlvbihrLHAscSl7Zm9yKHE9MD5xPwpxK3A6cTsrK3E8cDspay5wdXNoKHEpO3JldHVybiBrfSl9fSkucHNldWRvcy5udGg9Sy5wc2V1ZG9zLmVxLHtyYWRpbzohMCxjaGVja2JveDohMCxmaWxlOiEwLHBhc3N3b3JkOiEwLGltYWdlOiEwfSlLLnBzZXVkb3NbUV09ZihRKTtmb3IoUSBpbntzdWJtaXQ6ITAscmVzZXQ6ITB9KUsucHNldWRvc1tRXT1nKFEpO3cucHJvdG90eXBlPUsuZmlsdGVycz1LLnBzZXVkb3M7Sy5zZXRGaWx0ZXJzPW5ldyB3O04uc29ydFN0YWJsZT1XLnNwbGl0KCIiKS5zb3J0KGxhKS5qb2luKCIiKT09PVc7dCgpO04uc29ydERldGFjaGVkPWUoZnVuY3Rpb24oayl7cmV0dXJuIDEmay5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihaLmNyZWF0ZUVsZW1lbnQoImZpZWxkc2V0IikpfSk7ZC5maW5kPWE7ZC5leHByWyI6Il09ZC5leHByLnBzZXVkb3M7ZC51bmlxdWU9ZC51bmlxdWVTb3J0O2EuY29tcGlsZT1xYTthLnNlbGVjdD1TYTthLnNldERvY3VtZW50PXQ7YS5lc2NhcGU9ZC5lc2NhcGVTZWxlY3RvcjsKYS5nZXRUZXh0PWQudGV4dDthLmlzWE1MPWQuaXNYTUxEb2M7YS5zZWxlY3RvcnM9ZC5leHByO2Euc3VwcG9ydD1kLnN1cHBvcnQ7YS51bmlxdWVTb3J0PWQudW5pcXVlU29ydH0oKTt2YXIgd2I9ZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZT1bXSxmPXZvaWQgMCE9PWM7KGE9YVtiXSkmJjkhPT1hLm5vZGVUeXBlOylpZigxPT09YS5ub2RlVHlwZSl7aWYoZiYmZChhKS5pcyhjKSlicmVhaztlLnB1c2goYSl9cmV0dXJuIGV9LHdjPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPVtdO2E7YT1hLm5leHRTaWJsaW5nKTE9PT1hLm5vZGVUeXBlJiZhIT09YiYmYy5wdXNoKGEpO3JldHVybiBjfSx4Yz1kLmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LHljPS9ePChbYS16XVteXC9cMD46XHgyMFx0XHJcblxmXSopW1x4MjBcdFxyXG5cZl0qXC8\/Pig\/OjxcL1wxPnwpJC9pO2QuZmlsdGVyPWZ1bmN0aW9uKGEsYixjKXt2YXIgZT1iWzBdO3JldHVybiBjJiYoYT0iOm5vdCgiK2ErIikiKSwxPT09Yi5sZW5ndGgmJgoxPT09ZS5ub2RlVHlwZT9kLmZpbmQubWF0Y2hlc1NlbGVjdG9yKGUsYSk\/W2VdOltdOmQuZmluZC5tYXRjaGVzKGEsZC5ncmVwKGIsZnVuY3Rpb24oZil7cmV0dXJuIDE9PT1mLm5vZGVUeXBlfSkpfTtkLmZuLmV4dGVuZCh7ZmluZDpmdW5jdGlvbihhKXt2YXIgYixjPXRoaXMubGVuZ3RoLGU9dGhpcztpZigic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIHRoaXMucHVzaFN0YWNrKGQoYSkuZmlsdGVyKGZ1bmN0aW9uKCl7Zm9yKGI9MDtiPGM7YisrKWlmKGQuY29udGFpbnMoZVtiXSx0aGlzKSlyZXR1cm4hMH0pKTt2YXIgZj10aGlzLnB1c2hTdGFjayhbXSk7Zm9yKGI9MDtiPGM7YisrKWQuZmluZChhLGVbYl0sZik7cmV0dXJuIDE8Yz9kLnVuaXF1ZVNvcnQoZik6Zn0sZmlsdGVyOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnB1c2hTdGFjayhqYSh0aGlzLGF8fFtdLCExKSl9LG5vdDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soamEodGhpcyxhfHxbXSwhMCkpfSxpczpmdW5jdGlvbihhKXtyZXR1cm4hIWphKHRoaXMsCiJzdHJpbmciPT10eXBlb2YgYSYmeGMudGVzdChhKT9kKGEpOmF8fFtdLCExKS5sZW5ndGh9fSk7dmFyIGhkPS9eKD86XHMqKDxbXHdcV10rPilbXj5dKnwjKFtcdy1dKykpJC87KGQuZm4uaW5pdD1mdW5jdGlvbihhLGIsYyl7dmFyIGUsZjtpZighYSlyZXR1cm4gdGhpcztpZihjPWN8fGlkLCJzdHJpbmciPT10eXBlb2YgYSl7aWYoIShlPSI8Ij09PWFbMF0mJiI+Ij09PWFbYS5sZW5ndGgtMV0mJjM8PWEubGVuZ3RoP1tudWxsLGEsbnVsbF06aGQuZXhlYyhhKSl8fCFlWzFdJiZiKXJldHVybiFifHxiLmpxdWVyeT8oYnx8YykuZmluZChhKTp0aGlzLmNvbnN0cnVjdG9yKGIpLmZpbmQoYSk7aWYoZVsxXSl7aWYoYj1iIGluc3RhbmNlb2YgZD9iWzBdOmIsZC5tZXJnZSh0aGlzLGQucGFyc2VIVE1MKGVbMV0sYiYmYi5ub2RlVHlwZT9iLm93bmVyRG9jdW1lbnR8fGI6TCwhMCkpLHljLnRlc3QoZVsxXSkmJmQuaXNQbGFpbk9iamVjdChiKSlmb3IoZSBpbiBiKU0odGhpc1tlXSk\/dGhpc1tlXShiW2VdKToKdGhpcy5hdHRyKGUsYltlXSk7cmV0dXJuIHRoaXN9cmV0dXJuKGY9TC5nZXRFbGVtZW50QnlJZChlWzJdKSkmJih0aGlzWzBdPWYsdGhpcy5sZW5ndGg9MSksdGhpc31yZXR1cm4gYS5ub2RlVHlwZT8odGhpc1swXT1hLHRoaXMubGVuZ3RoPTEsdGhpcyk6TShhKT92b2lkIDAhPT1jLnJlYWR5P2MucmVhZHkoYSk6YShkKTpkLm1ha2VBcnJheShhLHRoaXMpfSkucHJvdG90eXBlPWQuZm47dmFyIGlkPWQoTCksamQ9L14oPzpwYXJlbnRzfHByZXYoPzpVbnRpbHxBbGwpKS8sa2Q9e2NoaWxkcmVuOiEwLGNvbnRlbnRzOiEwLG5leHQ6ITAscHJldjohMH07ZC5mbi5leHRlbmQoe2hhczpmdW5jdGlvbihhKXt2YXIgYj1kKGEsdGhpcyksYz1iLmxlbmd0aDtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKXtmb3IodmFyIGU9MDtlPGM7ZSsrKWlmKGQuY29udGFpbnModGhpcyxiW2VdKSlyZXR1cm4hMH0pfSxjbG9zZXN0OmZ1bmN0aW9uKGEsYil7dmFyIGMsZT0wLGY9dGhpcy5sZW5ndGgsCmc9W10saD0ic3RyaW5nIiE9dHlwZW9mIGEmJmQoYSk7aWYoIXhjLnRlc3QoYSkpZm9yKDtlPGY7ZSsrKWZvcihjPXRoaXNbZV07YyYmYyE9PWI7Yz1jLnBhcmVudE5vZGUpaWYoMTE+Yy5ub2RlVHlwZSYmKGg\/LTE8aC5pbmRleChjKToxPT09Yy5ub2RlVHlwZSYmZC5maW5kLm1hdGNoZXNTZWxlY3RvcihjLGEpKSl7Zy5wdXNoKGMpO2JyZWFrfXJldHVybiB0aGlzLnB1c2hTdGFjaygxPGcubGVuZ3RoP2QudW5pcXVlU29ydChnKTpnKX0saW5kZXg6ZnVuY3Rpb24oYSl7cmV0dXJuIGE\/InN0cmluZyI9PXR5cGVvZiBhP05hLmNhbGwoZChhKSx0aGlzWzBdKTpOYS5jYWxsKHRoaXMsYS5qcXVlcnk\/YVswXTphKTp0aGlzWzBdJiZ0aGlzWzBdLnBhcmVudE5vZGU\/dGhpcy5maXJzdCgpLnByZXZBbGwoKS5sZW5ndGg6LTF9LGFkZDpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLnB1c2hTdGFjayhkLnVuaXF1ZVNvcnQoZC5tZXJnZSh0aGlzLmdldCgpLGQoYSxiKSkpKX0sYWRkQmFjazpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5hZGQobnVsbD09CmE\/dGhpcy5wcmV2T2JqZWN0OnRoaXMucHJldk9iamVjdC5maWx0ZXIoYSkpfX0pO2QuZWFjaCh7cGFyZW50OmZ1bmN0aW9uKGEpe3JldHVybihhPWEucGFyZW50Tm9kZSkmJjExIT09YS5ub2RlVHlwZT9hOm51bGx9LHBhcmVudHM6ZnVuY3Rpb24oYSl7cmV0dXJuIHdiKGEsInBhcmVudE5vZGUiKX0scGFyZW50c1VudGlsOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gd2IoYSwicGFyZW50Tm9kZSIsYyl9LG5leHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGxiKGEsIm5leHRTaWJsaW5nIil9LHByZXY6ZnVuY3Rpb24oYSl7cmV0dXJuIGxiKGEsInByZXZpb3VzU2libGluZyIpfSxuZXh0QWxsOmZ1bmN0aW9uKGEpe3JldHVybiB3YihhLCJuZXh0U2libGluZyIpfSxwcmV2QWxsOmZ1bmN0aW9uKGEpe3JldHVybiB3YihhLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dFVudGlsOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gd2IoYSwibmV4dFNpYmxpbmciLGMpfSxwcmV2VW50aWw6ZnVuY3Rpb24oYSxiLApjKXtyZXR1cm4gd2IoYSwicHJldmlvdXNTaWJsaW5nIixjKX0sc2libGluZ3M6ZnVuY3Rpb24oYSl7cmV0dXJuIHdjKChhLnBhcmVudE5vZGV8fHt9KS5maXJzdENoaWxkLGEpfSxjaGlsZHJlbjpmdW5jdGlvbihhKXtyZXR1cm4gd2MoYS5maXJzdENoaWxkKX0sY29udGVudHM6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWEuY29udGVudERvY3VtZW50JiZzYyhhLmNvbnRlbnREb2N1bWVudCk\/YS5jb250ZW50RG9jdW1lbnQ6KFgoYSwidGVtcGxhdGUiKSYmKGE9YS5jb250ZW50fHxhKSxkLm1lcmdlKFtdLGEuY2hpbGROb2RlcykpfX0sZnVuY3Rpb24oYSxiKXtkLmZuW2FdPWZ1bmN0aW9uKGMsZSl7dmFyIGY9ZC5tYXAodGhpcyxiLGMpO3JldHVybiJVbnRpbCIhPT1hLnNsaWNlKC01KSYmKGU9YyksZSYmInN0cmluZyI9PXR5cGVvZiBlJiYoZj1kLmZpbHRlcihlLGYpKSwxPHRoaXMubGVuZ3RoJiYoa2RbYV18fGQudW5pcXVlU29ydChmKSxqZC50ZXN0KGEpJiZmLnJldmVyc2UoKSksCnRoaXMucHVzaFN0YWNrKGYpfX0pO3ZhciBMYT0vW15ceDIwXHRcclxuXGZdKy9nO2QuQ2FsbGJhY2tzPWZ1bmN0aW9uKGEpe3ZhciBiLGM7YT0ic3RyaW5nIj09dHlwZW9mIGE\/KGI9YSxjPXt9LGQuZWFjaChiLm1hdGNoKExhKXx8W10sZnVuY3Rpb24oeixEKXtjW0RdPSEwfSksYyk6ZC5leHRlbmQoe30sYSk7dmFyIGUsZixnLGgsbT1bXSxsPVtdLHQ9LTEsdz1mdW5jdGlvbigpe2g9aHx8YS5vbmNlO2ZvcihnPWU9ITA7bC5sZW5ndGg7dD0tMSlmb3IoZj1sLnNoaWZ0KCk7Kyt0PG0ubGVuZ3RoOykhMT09PW1bdF0uYXBwbHkoZlswXSxmWzFdKSYmYS5zdG9wT25GYWxzZSYmKHQ9bS5sZW5ndGgsZj0hMSk7YS5tZW1vcnl8fChmPSExKTtlPSExO2gmJihtPWY\/W106IiIpfSxyPXthZGQ6ZnVuY3Rpb24oKXtyZXR1cm4gbSYmKGYmJiFlJiYodD1tLmxlbmd0aC0xLGwucHVzaChmKSksZnVuY3Rpb24gRihEKXtkLmVhY2goRCxmdW5jdGlvbihPLGFhKXtNKGFhKT9hLnVuaXF1ZSYmci5oYXMoYWEpfHwKbS5wdXNoKGFhKTphYSYmYWEubGVuZ3RoJiYic3RyaW5nIiE9PVUoYWEpJiZGKGFhKX0pfShhcmd1bWVudHMpLGYmJiFlJiZ3KCkpLHRoaXN9LHJlbW92ZTpmdW5jdGlvbigpe3JldHVybiBkLmVhY2goYXJndW1lbnRzLGZ1bmN0aW9uKHosRCl7Zm9yKHZhciBGOy0xPChGPWQuaW5BcnJheShELG0sRikpOyltLnNwbGljZShGLDEpLEY8PXQmJnQtLX0pLHRoaXN9LGhhczpmdW5jdGlvbih6KXtyZXR1cm4gej8tMTxkLmluQXJyYXkoeixtKTowPG0ubGVuZ3RofSxlbXB0eTpmdW5jdGlvbigpe3JldHVybiBtJiYobT1bXSksdGhpc30sZGlzYWJsZTpmdW5jdGlvbigpe3JldHVybiBoPWw9W10sbT1mPSIiLHRoaXN9LGRpc2FibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIW19LGxvY2s6ZnVuY3Rpb24oKXtyZXR1cm4gaD1sPVtdLGZ8fGV8fChtPWY9IiIpLHRoaXN9LGxvY2tlZDpmdW5jdGlvbigpe3JldHVybiEhaH0sZmlyZVdpdGg6ZnVuY3Rpb24oeixEKXtyZXR1cm4gaHx8KEQ9W3osKEQ9RHx8CltdKS5zbGljZT9ELnNsaWNlKCk6RF0sbC5wdXNoKEQpLGV8fHcoKSksdGhpc30sZmlyZTpmdW5jdGlvbigpe3JldHVybiByLmZpcmVXaXRoKHRoaXMsYXJndW1lbnRzKSx0aGlzfSxmaXJlZDpmdW5jdGlvbigpe3JldHVybiEhZ319O3JldHVybiByfTtkLmV4dGVuZCh7RGVmZXJyZWQ6ZnVuY3Rpb24oYSl7dmFyIGI9W1sibm90aWZ5IiwicHJvZ3Jlc3MiLGQuQ2FsbGJhY2tzKCJtZW1vcnkiKSxkLkNhbGxiYWNrcygibWVtb3J5IiksMl0sWyJyZXNvbHZlIiwiZG9uZSIsZC5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksZC5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksMCwicmVzb2x2ZWQiXSxbInJlamVjdCIsImZhaWwiLGQuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLGQuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLDEsInJlamVjdGVkIl1dLGM9InBlbmRpbmciLGU9e3N0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIGN9LGFsd2F5czpmdW5jdGlvbigpe3JldHVybiBmLmRvbmUoYXJndW1lbnRzKS5mYWlsKGFyZ3VtZW50cyksCnRoaXN9LCJjYXRjaCI6ZnVuY3Rpb24oZyl7cmV0dXJuIGUudGhlbihudWxsLGcpfSxwaXBlOmZ1bmN0aW9uKCl7dmFyIGc9YXJndW1lbnRzO3JldHVybiBkLkRlZmVycmVkKGZ1bmN0aW9uKGgpe2QuZWFjaChiLGZ1bmN0aW9uKG0sbCl7dmFyIHQ9TShnW2xbNF1dKSYmZ1tsWzRdXTtmW2xbMV1dKGZ1bmN0aW9uKCl7dmFyIHc9dCYmdC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dyYmTSh3LnByb21pc2UpP3cucHJvbWlzZSgpLnByb2dyZXNzKGgubm90aWZ5KS5kb25lKGgucmVzb2x2ZSkuZmFpbChoLnJlamVjdCk6aFtsWzBdKyJXaXRoIl0odGhpcyx0P1t3XTphcmd1bWVudHMpfSl9KTtnPW51bGx9KS5wcm9taXNlKCl9LHRoZW46ZnVuY3Rpb24oZyxoLG0pe2Z1bmN0aW9uIGwodyxyLHosRCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIEY9dGhpcyxPPWFyZ3VtZW50cyxhYT1mdW5jdGlvbigpe3ZhciBxYTtpZighKHc8dCkpe2lmKChxYT16LmFwcGx5KEYsTykpPT09ci5wcm9taXNlKCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiVGhlbmFibGUgc2VsZi1yZXNvbHV0aW9uIik7CnZhciBTYT1xYSYmKCJvYmplY3QiPT10eXBlb2YgcWF8fCJmdW5jdGlvbiI9PXR5cGVvZiBxYSkmJnFhLnRoZW47TShTYSk\/RD9TYS5jYWxsKHFhLGwodCxyLFlhLEQpLGwodCxyLFphLEQpKToodCsrLFNhLmNhbGwocWEsbCh0LHIsWWEsRCksbCh0LHIsWmEsRCksbCh0LHIsWWEsci5ub3RpZnlXaXRoKSkpOih6IT09WWEmJihGPXZvaWQgMCxPPVtxYV0pLChEfHxyLnJlc29sdmVXaXRoKShGLE8pKX19LEdhPUQ\/YWE6ZnVuY3Rpb24oKXt0cnl7YWEoKX1jYXRjaChxYSl7ZC5EZWZlcnJlZC5leGNlcHRpb25Ib29rJiZkLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2socWEsR2EuZXJyb3IpLHQ8PXcrMSYmKHohPT1aYSYmKEY9dm9pZCAwLE89W3FhXSksci5yZWplY3RXaXRoKEYsTykpfX07dz9HYSgpOihkLkRlZmVycmVkLmdldEVycm9ySG9vaz9HYS5lcnJvcj1kLkRlZmVycmVkLmdldEVycm9ySG9vaygpOmQuRGVmZXJyZWQuZ2V0U3RhY2tIb29rJiYoR2EuZXJyb3I9ZC5EZWZlcnJlZC5nZXRTdGFja0hvb2soKSksCm4uc2V0VGltZW91dChHYSkpfX12YXIgdD0wO3JldHVybiBkLkRlZmVycmVkKGZ1bmN0aW9uKHcpe2JbMF1bM10uYWRkKGwoMCx3LE0obSk\/bTpZYSx3Lm5vdGlmeVdpdGgpKTtiWzFdWzNdLmFkZChsKDAsdyxNKGcpP2c6WWEpKTtiWzJdWzNdLmFkZChsKDAsdyxNKGgpP2g6WmEpKX0pLnByb21pc2UoKX0scHJvbWlzZTpmdW5jdGlvbihnKXtyZXR1cm4gbnVsbCE9Zz9kLmV4dGVuZChnLGUpOmV9fSxmPXt9O3JldHVybiBkLmVhY2goYixmdW5jdGlvbihnLGgpe3ZhciBtPWhbMl0sbD1oWzVdO2VbaFsxXV09bS5hZGQ7bCYmbS5hZGQoZnVuY3Rpb24oKXtjPWx9LGJbMy1nXVsyXS5kaXNhYmxlLGJbMy1nXVszXS5kaXNhYmxlLGJbMF1bMl0ubG9jayxiWzBdWzNdLmxvY2spO20uYWRkKGhbM10uZmlyZSk7ZltoWzBdXT1mdW5jdGlvbigpe3JldHVybiBmW2hbMF0rIldpdGgiXSh0aGlzPT09Zj92b2lkIDA6dGhpcyxhcmd1bWVudHMpLHRoaXN9O2ZbaFswXSsiV2l0aCJdPW0uZmlyZVdpdGh9KSwKZS5wcm9taXNlKGYpLGEmJmEuY2FsbChmLGYpLGZ9LHdoZW46ZnVuY3Rpb24oYSl7dmFyIGI9YXJndW1lbnRzLmxlbmd0aCxjPWIsZT1BcnJheShjKSxmPXlhLmNhbGwoYXJndW1lbnRzKSxnPWQuRGVmZXJyZWQoKSxoPWZ1bmN0aW9uKG0pe3JldHVybiBmdW5jdGlvbihsKXtlW21dPXRoaXM7ZlttXT0xPGFyZ3VtZW50cy5sZW5ndGg\/eWEuY2FsbChhcmd1bWVudHMpOmw7LS1ifHxnLnJlc29sdmVXaXRoKGUsZil9fTtpZigxPj1iJiYobWIoYSxnLmRvbmUoaChjKSkucmVzb2x2ZSxnLnJlamVjdCwhYiksInBlbmRpbmciPT09Zy5zdGF0ZSgpfHxNKGZbY10mJmZbY10udGhlbikpKXJldHVybiBnLnRoZW4oKTtmb3IoO2MtLTspbWIoZltjXSxoKGMpLGcucmVqZWN0KTtyZXR1cm4gZy5wcm9taXNlKCl9fSk7dmFyIGxkPS9eKEV2YWx8SW50ZXJuYWx8UmFuZ2V8UmVmZXJlbmNlfFN5bnRheHxUeXBlfFVSSSlFcnJvciQvO2QuRGVmZXJyZWQuZXhjZXB0aW9uSG9vaz1mdW5jdGlvbihhLGIpe24uY29uc29sZSYmCm4uY29uc29sZS53YXJuJiZhJiZsZC50ZXN0KGEubmFtZSkmJm4uY29uc29sZS53YXJuKCJqUXVlcnkuRGVmZXJyZWQgZXhjZXB0aW9uOiAiK2EubWVzc2FnZSxhLnN0YWNrLGIpfTtkLnJlYWR5RXhjZXB0aW9uPWZ1bmN0aW9uKGEpe24uc2V0VGltZW91dChmdW5jdGlvbigpe3Rocm93IGE7fSl9O3ZhciBnYz1kLkRlZmVycmVkKCk7ZC5mbi5yZWFkeT1mdW5jdGlvbihhKXtyZXR1cm4gZ2MudGhlbihhKVsiY2F0Y2giXShmdW5jdGlvbihiKXtkLnJlYWR5RXhjZXB0aW9uKGIpfSksdGhpc307ZC5leHRlbmQoe2lzUmVhZHk6ITEscmVhZHlXYWl0OjEscmVhZHk6ZnVuY3Rpb24oYSl7KCEwPT09YT8tLWQucmVhZHlXYWl0OmQuaXNSZWFkeSl8fChkLmlzUmVhZHk9ITApIT09YSYmMDwtLWQucmVhZHlXYWl0fHxnYy5yZXNvbHZlV2l0aChMLFtkXSl9fSk7ZC5yZWFkeS50aGVuPWdjLnRoZW47ImNvbXBsZXRlIj09PUwucmVhZHlTdGF0ZXx8ImxvYWRpbmciIT09TC5yZWFkeVN0YXRlJiYhTC5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGw\/Cm4uc2V0VGltZW91dChkLnJlYWR5KTooTC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixPYSksbi5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixPYSkpO3ZhciBYYT1mdW5jdGlvbihhLGIsYyxlLGYsZyxoKXt2YXIgbT0wLGw9YS5sZW5ndGgsdD1udWxsPT1jO2lmKCJvYmplY3QiPT09VShjKSlmb3IobSBpbiBmPSEwLGMpWGEoYSxiLG0sY1ttXSwhMCxnLGgpO2Vsc2UgaWYodm9pZCAwIT09ZSYmKGY9ITAsTShlKXx8KGg9ITApLHQmJihoPyhiLmNhbGwoYSxlKSxiPW51bGwpOih0PWIsYj1mdW5jdGlvbih3LHIseil7cmV0dXJuIHQuY2FsbChkKHcpLHopfSkpLGIpKWZvcig7bTxsO20rKyliKGFbbV0sYyxoP2U6ZS5jYWxsKGFbbV0sbSxiKGFbbV0sYykpKTtyZXR1cm4gZj9hOnQ\/Yi5jYWxsKGEpOmw\/YihhWzBdLGMpOmd9LE1jPS9eLW1zLS8sTmM9Ly0oW2Etel0pL2csR2I9ZnVuY3Rpb24oYSl7cmV0dXJuIDE9PT1hLm5vZGVUeXBlfHw5PT09YS5ub2RlVHlwZXx8ISthLm5vZGVUeXBlfTsKSmEudWlkPTE7SmEucHJvdG90eXBlPXtjYWNoZTpmdW5jdGlvbihhKXt2YXIgYj1hW3RoaXMuZXhwYW5kb107cmV0dXJuIGJ8fChiPXt9LEdiKGEpJiYoYS5ub2RlVHlwZT9hW3RoaXMuZXhwYW5kb109YjpPYmplY3QuZGVmaW5lUHJvcGVydHkoYSx0aGlzLmV4cGFuZG8se3ZhbHVlOmIsY29uZmlndXJhYmxlOiEwfSkpKSxifSxzZXQ6ZnVuY3Rpb24oYSxiLGMpe3ZhciBlO2E9dGhpcy5jYWNoZShhKTtpZigic3RyaW5nIj09dHlwZW9mIGIpYVtCYShiKV09YztlbHNlIGZvcihlIGluIGIpYVtCYShlKV09YltlXTtyZXR1cm4gYX0sZ2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIHZvaWQgMD09PWI\/dGhpcy5jYWNoZShhKTphW3RoaXMuZXhwYW5kb10mJmFbdGhpcy5leHBhbmRvXVtCYShiKV19LGFjY2VzczpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHZvaWQgMD09PWJ8fGImJiJzdHJpbmciPT10eXBlb2YgYiYmdm9pZCAwPT09Yz90aGlzLmdldChhLGIpOih0aGlzLnNldChhLGIsYyksdm9pZCAwIT09CmM\/YzpiKX0scmVtb3ZlOmZ1bmN0aW9uKGEsYil7dmFyIGM9YVt0aGlzLmV4cGFuZG9dO2lmKHZvaWQgMCE9PWMpe2lmKHZvaWQgMCE9PWIpe3ZhciBlPShiPUFycmF5LmlzQXJyYXkoYik\/Yi5tYXAoQmEpOihiPUJhKGIpKWluIGM\/W2JdOmIubWF0Y2goTGEpfHxbXSkubGVuZ3RoO2Zvcig7ZS0tOylkZWxldGUgY1tiW2VdXX0odm9pZCAwPT09Ynx8ZC5pc0VtcHR5T2JqZWN0KGMpKSYmKGEubm9kZVR5cGU\/YVt0aGlzLmV4cGFuZG9dPXZvaWQgMDpkZWxldGUgYVt0aGlzLmV4cGFuZG9dKX19LGhhc0RhdGE6ZnVuY3Rpb24oYSl7YT1hW3RoaXMuZXhwYW5kb107cmV0dXJuIHZvaWQgMCE9PWEmJiFkLmlzRW1wdHlPYmplY3QoYSl9fTt2YXIgRz1uZXcgSmEseGE9bmV3IEphLFBjPS9eKD86XHtbXHdcV10qXH18XFtbXHdcV10qXF0pJC8sT2M9L1tBLVpdL2c7ZC5leHRlbmQoe2hhc0RhdGE6ZnVuY3Rpb24oYSl7cmV0dXJuIHhhLmhhc0RhdGEoYSl8fEcuaGFzRGF0YShhKX0sZGF0YTpmdW5jdGlvbihhLApiLGMpe3JldHVybiB4YS5hY2Nlc3MoYSxiLGMpfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEsYil7eGEucmVtb3ZlKGEsYil9LF9kYXRhOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gRy5hY2Nlc3MoYSxiLGMpfSxfcmVtb3ZlRGF0YTpmdW5jdGlvbihhLGIpe0cucmVtb3ZlKGEsYil9fSk7ZC5mbi5leHRlbmQoe2RhdGE6ZnVuY3Rpb24oYSxiKXt2YXIgYyxlLGYsZz10aGlzWzBdLGg9ZyYmZy5hdHRyaWJ1dGVzO2lmKHZvaWQgMD09PWEpe2lmKHRoaXMubGVuZ3RoJiYoZj14YS5nZXQoZyksMT09PWcubm9kZVR5cGUmJiFHLmdldChnLCJoYXNEYXRhQXR0cnMiKSkpe2ZvcihjPWgubGVuZ3RoO2MtLTspaFtjXSYmMD09PShlPWhbY10ubmFtZSkuaW5kZXhPZigiZGF0YS0iKSYmKGU9QmEoZS5zbGljZSg1KSksT2IoZyxlLGZbZV0pKTtHLnNldChnLCJoYXNEYXRhQXR0cnMiLCEwKX1yZXR1cm4gZn1yZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGE\/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7eGEuc2V0KHRoaXMsCmEpfSk6WGEodGhpcyxmdW5jdGlvbihtKXt2YXIgbDtpZihnJiZ2b2lkIDA9PT1tKXJldHVybiB2b2lkIDAhPT0obD14YS5nZXQoZyxhKSk\/bDp2b2lkIDAhPT0obD1PYihnLGEpKT9sOnZvaWQgMDt0aGlzLmVhY2goZnVuY3Rpb24oKXt4YS5zZXQodGhpcyxhLG0pfSl9LG51bGwsYiwxPGFyZ3VtZW50cy5sZW5ndGgsbnVsbCwhMCl9LHJlbW92ZURhdGE6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3hhLnJlbW92ZSh0aGlzLGEpfSl9fSk7ZC5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGEsYixjKXt2YXIgZTtpZihhKXJldHVybiBiPShifHwiZngiKSsicXVldWUiLGU9Ry5nZXQoYSxiKSxjJiYoIWV8fEFycmF5LmlzQXJyYXkoYyk\/ZT1HLmFjY2VzcyhhLGIsZC5tYWtlQXJyYXkoYykpOmUucHVzaChjKSksZXx8W119LGRlcXVldWU6ZnVuY3Rpb24oYSxiKXtiPWJ8fCJmeCI7dmFyIGM9ZC5xdWV1ZShhLGIpLGU9Yy5sZW5ndGgsZj1jLnNoaWZ0KCksZz1kLl9xdWV1ZUhvb2tzKGEsCmIpOyJpbnByb2dyZXNzIj09PWYmJihmPWMuc2hpZnQoKSxlLS0pO2YmJigiZngiPT09YiYmYy51bnNoaWZ0KCJpbnByb2dyZXNzIiksZGVsZXRlIGcuc3RvcCxmLmNhbGwoYSxmdW5jdGlvbigpe2QuZGVxdWV1ZShhLGIpfSxnKSk7IWUmJmcmJmcuZW1wdHkuZmlyZSgpfSxfcXVldWVIb29rczpmdW5jdGlvbihhLGIpe3ZhciBjPWIrInF1ZXVlSG9va3MiO3JldHVybiBHLmdldChhLGMpfHxHLmFjY2VzcyhhLGMse2VtcHR5OmQuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLmFkZChmdW5jdGlvbigpe0cucmVtb3ZlKGEsW2IrInF1ZXVlIixjXSl9KX0pfX0pO2QuZm4uZXh0ZW5kKHtxdWV1ZTpmdW5jdGlvbihhLGIpe3ZhciBjPTI7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBhJiYoYj1hLGE9ImZ4IixjLS0pLGFyZ3VtZW50cy5sZW5ndGg8Yz9kLnF1ZXVlKHRoaXNbMF0sYSk6dm9pZCAwPT09Yj90aGlzOnRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlPWQucXVldWUodGhpcyxhLGIpO2QuX3F1ZXVlSG9va3ModGhpcywKYSk7ImZ4Ij09PWEmJiJpbnByb2dyZXNzIiE9PWVbMF0mJmQuZGVxdWV1ZSh0aGlzLGEpfSl9LGRlcXVldWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2QuZGVxdWV1ZSh0aGlzLGEpfSl9LGNsZWFyUXVldWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucXVldWUoYXx8ImZ4IixbXSl9LHByb21pc2U6ZnVuY3Rpb24oYSxiKXt2YXIgYyxlPTEsZj1kLkRlZmVycmVkKCksZz10aGlzLGg9dGhpcy5sZW5ndGgsbT1mdW5jdGlvbigpey0tZXx8Zi5yZXNvbHZlV2l0aChnLFtnXSl9OyJzdHJpbmciIT10eXBlb2YgYSYmKGI9YSxhPXZvaWQgMCk7Zm9yKGE9YXx8ImZ4IjtoLS07KShjPUcuZ2V0KGdbaF0sYSsicXVldWVIb29rcyIpKSYmYy5lbXB0eSYmKGUrKyxjLmVtcHR5LmFkZChtKSk7cmV0dXJuIG0oKSxmLnByb21pc2UoYil9fSk7dmFyIHpjPS9bKy1dPyg\/OlxkKlwufClcZCsoPzpbZUVdWystXT9cZCt8KS8uc291cmNlLHliPW5ldyBSZWdFeHAoIl4oPzooWystXSk9fCkoIisKemMrIikoW2EteiVdKikkIiwiaSIpLFBhPVsiVG9wIiwiUmlnaHQiLCJCb3R0b20iLCJMZWZ0Il0samI9TC5kb2N1bWVudEVsZW1lbnQsb2I9ZnVuY3Rpb24oYSl7cmV0dXJuIGQuY29udGFpbnMoYS5vd25lckRvY3VtZW50LGEpfSxtZD17Y29tcG9zZWQ6ITB9O2piLmdldFJvb3ROb2RlJiYob2I9ZnVuY3Rpb24oYSl7cmV0dXJuIGQuY29udGFpbnMoYS5vd25lckRvY3VtZW50LGEpfHxhLmdldFJvb3ROb2RlKG1kKT09PWEub3duZXJEb2N1bWVudH0pO3ZhciBRYj1mdW5jdGlvbihhLGIpe3JldHVybiJub25lIj09PShhPWJ8fGEpLnN0eWxlLmRpc3BsYXl8fCIiPT09YS5zdHlsZS5kaXNwbGF5JiZvYihhKSYmIm5vbmUiPT09ZC5jc3MoYSwiZGlzcGxheSIpfSxsYz17fTtkLmZuLmV4dGVuZCh7c2hvdzpmdW5jdGlvbigpe3JldHVybiAkYSh0aGlzLCEwKX0saGlkZTpmdW5jdGlvbigpe3JldHVybiAkYSh0aGlzKX0sdG9nZ2xlOmZ1bmN0aW9uKGEpe3JldHVybiJib29sZWFuIj09dHlwZW9mIGE\/CmE\/dGhpcy5zaG93KCk6dGhpcy5oaWRlKCk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7UWIodGhpcyk\/ZCh0aGlzKS5zaG93KCk6ZCh0aGlzKS5oaWRlKCl9KX19KTt2YXIgWmIsSGI9L14oPzpjaGVja2JveHxyYWRpbykkL2ksbWM9LzwoW2Etel1bXlwvXDA+XHgyMFx0XHJcblxmXSopL2ksbmM9L14kfF5tb2R1bGUkfFwvKD86amF2YXxlY21hKXNjcmlwdC9pLHhiPUwuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLmFwcGVuZENoaWxkKEwuY3JlYXRlRWxlbWVudCgiZGl2IikpOyhaYj1MLmNyZWF0ZUVsZW1lbnQoImlucHV0IikpLnNldEF0dHJpYnV0ZSgidHlwZSIsInJhZGlvIik7WmIuc2V0QXR0cmlidXRlKCJjaGVja2VkIiwiY2hlY2tlZCIpO1piLnNldEF0dHJpYnV0ZSgibmFtZSIsInQiKTt4Yi5hcHBlbmRDaGlsZChaYik7Ti5jaGVja0Nsb25lPXhiLmNsb25lTm9kZSghMCkuY2xvbmVOb2RlKCEwKS5sYXN0Q2hpbGQuY2hlY2tlZDt4Yi5pbm5lckhUTUw9Ijx0ZXh0YXJlYT54PC90ZXh0YXJlYT4iOwpOLm5vQ2xvbmVDaGVja2VkPSEheGIuY2xvbmVOb2RlKCEwKS5sYXN0Q2hpbGQuZGVmYXVsdFZhbHVlO3hiLmlubmVySFRNTD0iPG9wdGlvbj48L29wdGlvbj4iO04ub3B0aW9uPSEheGIubGFzdENoaWxkO3ZhciBDYT17dGhlYWQ6WzEsIjx0YWJsZT4iLCI8L3RhYmxlPiJdLGNvbDpbMiwiPHRhYmxlPjxjb2xncm91cD4iLCI8L2NvbGdyb3VwPjwvdGFibGU+Il0sdHI6WzIsIjx0YWJsZT48dGJvZHk+IiwiPC90Ym9keT48L3RhYmxlPiJdLHRkOlszLCI8dGFibGU+PHRib2R5Pjx0cj4iLCI8L3RyPjwvdGJvZHk+PC90YWJsZT4iXSxfZGVmYXVsdDpbMCwiIiwiIl19O0NhLnRib2R5PUNhLnRmb290PUNhLmNvbGdyb3VwPUNhLmNhcHRpb249Q2EudGhlYWQ7Q2EudGg9Q2EudGQ7Ti5vcHRpb258fChDYS5vcHRncm91cD1DYS5vcHRpb249WzEsIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz4iLCI8L3NlbGVjdD4iXSk7dmFyIFFjPS88fCYjP1x3KzsvLEFjPS9eKFteLl0qKSg\/OlwuKC4rKXwpLzsKZC5ldmVudD17Z2xvYmFsOnt9LGFkZDpmdW5jdGlvbihhLGIsYyxlLGYpe3ZhciBnLGgsbSxsLHQsdyxyLHosRD1HLmdldChhKTtpZihHYihhKSlmb3IoYy5oYW5kbGVyJiYoYz0oZz1jKS5oYW5kbGVyLGY9Zy5zZWxlY3RvciksZiYmZC5maW5kLm1hdGNoZXNTZWxlY3RvcihqYixmKSxjLmd1aWR8fChjLmd1aWQ9ZC5ndWlkKyspLChsPUQuZXZlbnRzKXx8KGw9RC5ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSksKGg9RC5oYW5kbGUpfHwoaD1ELmhhbmRsZT1mdW5jdGlvbihPKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIGQmJmQuZXZlbnQudHJpZ2dlcmVkIT09Ty50eXBlP2QuZXZlbnQuZGlzcGF0Y2guYXBwbHkoYSxhcmd1bWVudHMpOnZvaWQgMH0pLEQ9KGI9KGJ8fCIiKS5tYXRjaChMYSl8fFsiIl0pLmxlbmd0aDtELS07KXt2YXIgRj16PShtPUFjLmV4ZWMoYltEXSl8fFtdKVsxXTttPShtWzJdfHwiIikuc3BsaXQoIi4iKS5zb3J0KCk7RiYmKHc9ZC5ldmVudC5zcGVjaWFsW0ZdfHwKe30sRj0oZj93LmRlbGVnYXRlVHlwZTp3LmJpbmRUeXBlKXx8Rix3PWQuZXZlbnQuc3BlY2lhbFtGXXx8e30sdD1kLmV4dGVuZCh7dHlwZTpGLG9yaWdUeXBlOnosZGF0YTplLGhhbmRsZXI6YyxndWlkOmMuZ3VpZCxzZWxlY3RvcjpmLG5lZWRzQ29udGV4dDpmJiZkLmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LnRlc3QoZiksbmFtZXNwYWNlOm0uam9pbigiLiIpfSxnKSwocj1sW0ZdKXx8KChyPWxbRl09W10pLmRlbGVnYXRlQ291bnQ9MCx3LnNldHVwJiYhMSE9PXcuc2V0dXAuY2FsbChhLGUsbSxoKXx8YS5hZGRFdmVudExpc3RlbmVyJiZhLmFkZEV2ZW50TGlzdGVuZXIoRixoKSksdy5hZGQmJih3LmFkZC5jYWxsKGEsdCksdC5oYW5kbGVyLmd1aWR8fCh0LmhhbmRsZXIuZ3VpZD1jLmd1aWQpKSxmP3Iuc3BsaWNlKHIuZGVsZWdhdGVDb3VudCsrLDAsdCk6ci5wdXNoKHQpLGQuZXZlbnQuZ2xvYmFsW0ZdPSEwKX19LHJlbW92ZTpmdW5jdGlvbihhLGIsYyxlLGYpe3ZhciBnLGgsbSxsLAp0LHcscix6LEQ9Ry5oYXNEYXRhKGEpJiZHLmdldChhKTtpZihEJiYobD1ELmV2ZW50cykpe2Zvcih0PShiPShifHwiIikubWF0Y2goTGEpfHxbIiJdKS5sZW5ndGg7dC0tOylpZih3PXo9KG09QWMuZXhlYyhiW3RdKXx8W10pWzFdLHI9KG1bMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSx3KXt2YXIgRj1kLmV2ZW50LnNwZWNpYWxbd118fHt9LE89bFt3PShlP0YuZGVsZWdhdGVUeXBlOkYuYmluZFR5cGUpfHx3XXx8W107bT1tWzJdJiZuZXcgUmVnRXhwKCIoXnxcXC4pIityLmpvaW4oIlxcLig\/Oi4qXFwufCkiKSsiKFxcLnwkKSIpO2ZvcihoPWc9Ty5sZW5ndGg7Zy0tOyl7dmFyIGFhPU9bZ107IWYmJnohPT1hYS5vcmlnVHlwZXx8YyYmYy5ndWlkIT09YWEuZ3VpZHx8bSYmIW0udGVzdChhYS5uYW1lc3BhY2UpfHxlJiZlIT09YWEuc2VsZWN0b3ImJigiKioiIT09ZXx8IWFhLnNlbGVjdG9yKXx8KE8uc3BsaWNlKGcsMSksYWEuc2VsZWN0b3ImJk8uZGVsZWdhdGVDb3VudC0tLEYucmVtb3ZlJiYKRi5yZW1vdmUuY2FsbChhLGFhKSl9aCYmIU8ubGVuZ3RoJiYoRi50ZWFyZG93biYmITEhPT1GLnRlYXJkb3duLmNhbGwoYSxyLEQuaGFuZGxlKXx8ZC5yZW1vdmVFdmVudChhLHcsRC5oYW5kbGUpLGRlbGV0ZSBsW3ddKX1lbHNlIGZvcih3IGluIGwpZC5ldmVudC5yZW1vdmUoYSx3K2JbdF0sYyxlLCEwKTtkLmlzRW1wdHlPYmplY3QobCkmJkcucmVtb3ZlKGEsImhhbmRsZSBldmVudHMiKX19LGRpc3BhdGNoOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZSxmLGc9QXJyYXkoYXJndW1lbnRzLmxlbmd0aCksaD1kLmV2ZW50LmZpeChhKSxtPShHLmdldCh0aGlzLCJldmVudHMiKXx8T2JqZWN0LmNyZWF0ZShudWxsKSlbaC50eXBlXXx8W10sbD1kLmV2ZW50LnNwZWNpYWxbaC50eXBlXXx8e307Z1swXT1oO2ZvcihiPTE7Yjxhcmd1bWVudHMubGVuZ3RoO2IrKylnW2JdPWFyZ3VtZW50c1tiXTtpZihoLmRlbGVnYXRlVGFyZ2V0PXRoaXMsIWwucHJlRGlzcGF0Y2h8fCExIT09bC5wcmVEaXNwYXRjaC5jYWxsKHRoaXMsCmgpKXt2YXIgdD1kLmV2ZW50LmhhbmRsZXJzLmNhbGwodGhpcyxoLG0pO2ZvcihiPTA7KGU9dFtiKytdKSYmIWguaXNQcm9wYWdhdGlvblN0b3BwZWQoKTspZm9yKGguY3VycmVudFRhcmdldD1lLmVsZW0sbT0wOyhmPWUuaGFuZGxlcnNbbSsrXSkmJiFoLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCk7KWgucm5hbWVzcGFjZSYmITEhPT1mLm5hbWVzcGFjZSYmIWgucm5hbWVzcGFjZS50ZXN0KGYubmFtZXNwYWNlKXx8KGguaGFuZGxlT2JqPWYsaC5kYXRhPWYuZGF0YSx2b2lkIDAhPT0oYz0oKGQuZXZlbnQuc3BlY2lhbFtmLm9yaWdUeXBlXXx8e30pLmhhbmRsZXx8Zi5oYW5kbGVyKS5hcHBseShlLmVsZW0sZykpJiYhMT09PShoLnJlc3VsdD1jKSYmKGgucHJldmVudERlZmF1bHQoKSxoLnN0b3BQcm9wYWdhdGlvbigpKSk7cmV0dXJuIGwucG9zdERpc3BhdGNoJiZsLnBvc3REaXNwYXRjaC5jYWxsKHRoaXMsaCksaC5yZXN1bHR9fSxoYW5kbGVyczpmdW5jdGlvbihhLGIpe3ZhciBjLAplLGYsZz1bXSxoPWIuZGVsZWdhdGVDb3VudCxtPWEudGFyZ2V0O2lmKGgmJm0ubm9kZVR5cGUmJiEoImNsaWNrIj09PWEudHlwZSYmMTw9YS5idXR0b24pKWZvcig7bSE9PXRoaXM7bT1tLnBhcmVudE5vZGV8fHRoaXMpaWYoMT09PW0ubm9kZVR5cGUmJigiY2xpY2siIT09YS50eXBlfHwhMCE9PW0uZGlzYWJsZWQpKXt2YXIgbD1bXSx0PXt9O2ZvcihjPTA7YzxoO2MrKyl2b2lkIDA9PT10W2Y9KGU9YltjXSkuc2VsZWN0b3IrIiAiXSYmKHRbZl09ZS5uZWVkc0NvbnRleHQ\/LTE8ZChmLHRoaXMpLmluZGV4KG0pOmQuZmluZChmLHRoaXMsbnVsbCxbbV0pLmxlbmd0aCksdFtmXSYmbC5wdXNoKGUpO2wubGVuZ3RoJiZnLnB1c2goe2VsZW06bSxoYW5kbGVyczpsfSl9cmV0dXJuIG09dGhpcyxoPGIubGVuZ3RoJiZnLnB1c2goe2VsZW06bSxoYW5kbGVyczpiLnNsaWNlKGgpfSksZ30sYWRkUHJvcDpmdW5jdGlvbihhLGIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShkLkV2ZW50LnByb3RvdHlwZSwKYSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0Ok0oYik\/ZnVuY3Rpb24oKXtpZih0aGlzLm9yaWdpbmFsRXZlbnQpcmV0dXJuIGIodGhpcy5vcmlnaW5hbEV2ZW50KX06ZnVuY3Rpb24oKXtpZih0aGlzLm9yaWdpbmFsRXZlbnQpcmV0dXJuIHRoaXMub3JpZ2luYWxFdmVudFthXX0sc2V0OmZ1bmN0aW9uKGMpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmN9KX19KX0sZml4OmZ1bmN0aW9uKGEpe3JldHVybiBhW2QuZXhwYW5kb10\/YTpuZXcgZC5FdmVudChhKX0sc3BlY2lhbDp7bG9hZDp7bm9CdWJibGU6ITB9LGNsaWNrOntzZXR1cDpmdW5jdGlvbihhKXthPXRoaXN8fGE7cmV0dXJuIEhiLnRlc3QoYS50eXBlKSYmYS5jbGljayYmWChhLCJpbnB1dCIpJiZwYihhLCJjbGljayIsITApLCExfSx0cmlnZ2VyOmZ1bmN0aW9uKGEpe2E9dGhpc3x8YTtyZXR1cm4gSGIudGVzdChhLnR5cGUpJiYKYS5jbGljayYmWChhLCJpbnB1dCIpJiZwYihhLCJjbGljayIpLCEwfSxfZGVmYXVsdDpmdW5jdGlvbihhKXthPWEudGFyZ2V0O3JldHVybiBIYi50ZXN0KGEudHlwZSkmJmEuY2xpY2smJlgoYSwiaW5wdXQiKSYmRy5nZXQoYSwiY2xpY2siKXx8WChhLCJhIil9fSxiZWZvcmV1bmxvYWQ6e3Bvc3REaXNwYXRjaDpmdW5jdGlvbihhKXt2b2lkIDAhPT1hLnJlc3VsdCYmYS5vcmlnaW5hbEV2ZW50JiYoYS5vcmlnaW5hbEV2ZW50LnJldHVyblZhbHVlPWEucmVzdWx0KX19fX07ZC5yZW1vdmVFdmVudD1mdW5jdGlvbihhLGIsYyl7YS5yZW1vdmVFdmVudExpc3RlbmVyJiZhLnJlbW92ZUV2ZW50TGlzdGVuZXIoYixjKX07ZC5FdmVudD1mdW5jdGlvbihhLGIpe2lmKCEodGhpcyBpbnN0YW5jZW9mIGQuRXZlbnQpKXJldHVybiBuZXcgZC5FdmVudChhLGIpO2EmJmEudHlwZT8odGhpcy5vcmlnaW5hbEV2ZW50PWEsdGhpcy50eXBlPWEudHlwZSx0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1hLmRlZmF1bHRQcmV2ZW50ZWR8fAp2b2lkIDA9PT1hLmRlZmF1bHRQcmV2ZW50ZWQmJiExPT09YS5yZXR1cm5WYWx1ZT9hYjpiYix0aGlzLnRhcmdldD1hLnRhcmdldCYmMz09PWEudGFyZ2V0Lm5vZGVUeXBlP2EudGFyZ2V0LnBhcmVudE5vZGU6YS50YXJnZXQsdGhpcy5jdXJyZW50VGFyZ2V0PWEuY3VycmVudFRhcmdldCx0aGlzLnJlbGF0ZWRUYXJnZXQ9YS5yZWxhdGVkVGFyZ2V0KTp0aGlzLnR5cGU9YTtiJiZkLmV4dGVuZCh0aGlzLGIpO3RoaXMudGltZVN0YW1wPWEmJmEudGltZVN0YW1wfHxEYXRlLm5vdygpO3RoaXNbZC5leHBhbmRvXT0hMH07ZC5FdmVudC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmQuRXZlbnQsaXNEZWZhdWx0UHJldmVudGVkOmJiLGlzUHJvcGFnYXRpb25TdG9wcGVkOmJiLGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOmJiLGlzU2ltdWxhdGVkOiExLHByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPWFiOwphJiYhdGhpcy5pc1NpbXVsYXRlZCYmYS5wcmV2ZW50RGVmYXVsdCgpfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1hYjthJiYhdGhpcy5pc1NpbXVsYXRlZCYmYS5zdG9wUHJvcGFnYXRpb24oKX0sc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9YWI7YSYmIXRoaXMuaXNTaW11bGF0ZWQmJmEuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7dGhpcy5zdG9wUHJvcGFnYXRpb24oKX19O2QuZWFjaCh7YWx0S2V5OiEwLGJ1YmJsZXM6ITAsY2FuY2VsYWJsZTohMCxjaGFuZ2VkVG91Y2hlczohMCxjdHJsS2V5OiEwLGRldGFpbDohMCxldmVudFBoYXNlOiEwLG1ldGFLZXk6ITAscGFnZVg6ITAscGFnZVk6ITAsc2hpZnRLZXk6ITAsdmlldzohMCwiY2hhciI6ITAsY29kZTohMCwKY2hhckNvZGU6ITAsa2V5OiEwLGtleUNvZGU6ITAsYnV0dG9uOiEwLGJ1dHRvbnM6ITAsY2xpZW50WDohMCxjbGllbnRZOiEwLG9mZnNldFg6ITAsb2Zmc2V0WTohMCxwb2ludGVySWQ6ITAscG9pbnRlclR5cGU6ITAsc2NyZWVuWDohMCxzY3JlZW5ZOiEwLHRhcmdldFRvdWNoZXM6ITAsdG9FbGVtZW50OiEwLHRvdWNoZXM6ITAsd2hpY2g6ITB9LGQuZXZlbnQuYWRkUHJvcCk7ZC5lYWNoKHtmb2N1czoiZm9jdXNpbiIsYmx1cjoiZm9jdXNvdXQifSxmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoZSl7aWYoTC5kb2N1bWVudE1vZGUpe3ZhciBmPUcuZ2V0KHRoaXMsImhhbmRsZSIpLGc9ZC5ldmVudC5maXgoZSk7Zy50eXBlPSJmb2N1c2luIj09PWUudHlwZT8iZm9jdXMiOiJibHVyIjtnLmlzU2ltdWxhdGVkPSEwO2YoZSk7Zy50YXJnZXQ9PT1nLmN1cnJlbnRUYXJnZXQmJmYoZyl9ZWxzZSBkLmV2ZW50LnNpbXVsYXRlKGIsZS50YXJnZXQsZC5ldmVudC5maXgoZSkpfWQuZXZlbnQuc3BlY2lhbFthXT0Ke3NldHVwOmZ1bmN0aW9uKCl7dmFyIGU7aWYocGIodGhpcyxhLCEwKSwhTC5kb2N1bWVudE1vZGUpcmV0dXJuITE7KGU9Ry5nZXQodGhpcyxiKSl8fHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihiLGMpO0cuc2V0KHRoaXMsYiwoZXx8MCkrMSl9LHRyaWdnZXI6ZnVuY3Rpb24oKXtyZXR1cm4gcGIodGhpcyxhKSwhMH0sdGVhcmRvd246ZnVuY3Rpb24oKXt2YXIgZTtpZighTC5kb2N1bWVudE1vZGUpcmV0dXJuITE7KGU9Ry5nZXQodGhpcyxiKS0xKT9HLnNldCh0aGlzLGIsZSk6KHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihiLGMpLEcucmVtb3ZlKHRoaXMsYikpfSxfZGVmYXVsdDpmdW5jdGlvbihlKXtyZXR1cm4gRy5nZXQoZS50YXJnZXQsYSl9LGRlbGVnYXRlVHlwZTpifTtkLmV2ZW50LnNwZWNpYWxbYl09e3NldHVwOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vd25lckRvY3VtZW50fHx0aGlzLmRvY3VtZW50fHx0aGlzLGY9TC5kb2N1bWVudE1vZGU\/dGhpczplLGc9Ry5nZXQoZixiKTtnfHwKKEwuZG9jdW1lbnRNb2RlP3RoaXMuYWRkRXZlbnRMaXN0ZW5lcihiLGMpOmUuYWRkRXZlbnRMaXN0ZW5lcihhLGMsITApKTtHLnNldChmLGIsKGd8fDApKzEpfSx0ZWFyZG93bjpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3duZXJEb2N1bWVudHx8dGhpcy5kb2N1bWVudHx8dGhpcyxmPUwuZG9jdW1lbnRNb2RlP3RoaXM6ZSxnPUcuZ2V0KGYsYiktMTtnP0cuc2V0KGYsYixnKTooTC5kb2N1bWVudE1vZGU\/dGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGIsYyk6ZS5yZW1vdmVFdmVudExpc3RlbmVyKGEsYywhMCksRy5yZW1vdmUoZixiKSl9fX0pO2QuZWFjaCh7bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCIscG9pbnRlcmVudGVyOiJwb2ludGVyb3ZlciIscG9pbnRlcmxlYXZlOiJwb2ludGVyb3V0In0sZnVuY3Rpb24oYSxiKXtkLmV2ZW50LnNwZWNpYWxbYV09e2RlbGVnYXRlVHlwZTpiLGJpbmRUeXBlOmIsaGFuZGxlOmZ1bmN0aW9uKGMpe3ZhciBlLGY9CmMucmVsYXRlZFRhcmdldCxnPWMuaGFuZGxlT2JqO3JldHVybiBmJiYoZj09PXRoaXN8fGQuY29udGFpbnModGhpcyxmKSl8fChjLnR5cGU9Zy5vcmlnVHlwZSxlPWcuaGFuZGxlci5hcHBseSh0aGlzLGFyZ3VtZW50cyksYy50eXBlPWIpLGV9fX0pO2QuZm4uZXh0ZW5kKHtvbjpmdW5jdGlvbihhLGIsYyxlKXtyZXR1cm4gZmIodGhpcyxhLGIsYyxlKX0sb25lOmZ1bmN0aW9uKGEsYixjLGUpe3JldHVybiBmYih0aGlzLGEsYixjLGUsMSl9LG9mZjpmdW5jdGlvbihhLGIsYyl7dmFyIGUsZjtpZihhJiZhLnByZXZlbnREZWZhdWx0JiZhLmhhbmRsZU9iailyZXR1cm4gZT1hLmhhbmRsZU9iaixkKGEuZGVsZWdhdGVUYXJnZXQpLm9mZihlLm5hbWVzcGFjZT9lLm9yaWdUeXBlKyIuIitlLm5hbWVzcGFjZTplLm9yaWdUeXBlLGUuc2VsZWN0b3IsZS5oYW5kbGVyKSx0aGlzO2lmKCJvYmplY3QiPT10eXBlb2YgYSl7Zm9yKGYgaW4gYSl0aGlzLm9mZihmLGIsYVtmXSk7cmV0dXJuIHRoaXN9cmV0dXJuITEhPT0KYiYmImZ1bmN0aW9uIiE9dHlwZW9mIGJ8fChjPWIsYj12b2lkIDApLCExPT09YyYmKGM9YmIpLHRoaXMuZWFjaChmdW5jdGlvbigpe2QuZXZlbnQucmVtb3ZlKHRoaXMsYSxjLGIpfSl9fSk7dmFyIG5kPS88c2NyaXB0fDxzdHlsZXw8bGluay9pLFJjPS9jaGVja2VkXHMqKD86W149XXw9XHMqLmNoZWNrZWQuKS9pLFNjPS9eXHMqPCFcW0NEQVRBXFt8XF1cXT5ccyokL2c7ZC5leHRlbmQoe2h0bWxQcmVmaWx0ZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIGF9LGNsb25lOmZ1bmN0aW9uKGEsYixjKXt2YXIgZSxmLGcsaD1hLmNsb25lTm9kZSghMCksbT1vYihhKTtpZighKE4ubm9DbG9uZUNoZWNrZWR8fDEhPT1hLm5vZGVUeXBlJiYxMSE9PWEubm9kZVR5cGV8fGQuaXNYTUxEb2MoYSkpKXt2YXIgbD1zYShoKSx0PTA7Zm9yKGU9KGY9c2EoYSkpLmxlbmd0aDt0PGU7dCsrKXt2YXIgdz1mW3RdLHI9bFt0XTt2b2lkIDA7ImlucHV0Ij09PShnPXIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSkmJkhiLnRlc3Qody50eXBlKT8Kci5jaGVja2VkPXcuY2hlY2tlZDoiaW5wdXQiIT09ZyYmInRleHRhcmVhIiE9PWd8fChyLmRlZmF1bHRWYWx1ZT13LmRlZmF1bHRWYWx1ZSl9fWlmKGIpaWYoYylmb3IoZj1mfHxzYShhKSxsPWx8fHNhKGgpLHQ9MCxlPWYubGVuZ3RoO3Q8ZTt0KyspZ2IoZlt0XSxsW3RdKTtlbHNlIGdiKGEsaCk7cmV0dXJuIDA8KGw9c2EoaCwic2NyaXB0IikpLmxlbmd0aCYmbmIobCwhbSYmc2EoYSwic2NyaXB0IikpLGh9LGNsZWFuRGF0YTpmdW5jdGlvbihhKXtmb3IodmFyIGIsYyxlLGY9ZC5ldmVudC5zcGVjaWFsLGc9MDt2b2lkIDAhPT0oYz1hW2ddKTtnKyspaWYoR2IoYykpe2lmKGI9Y1tHLmV4cGFuZG9dKXtpZihiLmV2ZW50cylmb3IoZSBpbiBiLmV2ZW50cylmW2VdP2QuZXZlbnQucmVtb3ZlKGMsZSk6ZC5yZW1vdmVFdmVudChjLGUsYi5oYW5kbGUpO2NbRy5leHBhbmRvXT12b2lkIDB9Y1t4YS5leHBhbmRvXSYmKGNbeGEuZXhwYW5kb109dm9pZCAwKX19fSk7ZC5mbi5leHRlbmQoe2RldGFjaDpmdW5jdGlvbihhKXtyZXR1cm4gVGIodGhpcywKYSwhMCl9LHJlbW92ZTpmdW5jdGlvbihhKXtyZXR1cm4gVGIodGhpcyxhKX0sdGV4dDpmdW5jdGlvbihhKXtyZXR1cm4gWGEodGhpcyxmdW5jdGlvbihiKXtyZXR1cm4gdm9pZCAwPT09Yj9kLnRleHQodGhpcyk6dGhpcy5lbXB0eSgpLmVhY2goZnVuY3Rpb24oKXsxIT09dGhpcy5ub2RlVHlwZSYmMTEhPT10aGlzLm5vZGVUeXBlJiY5IT09dGhpcy5ub2RlVHlwZXx8KHRoaXMudGV4dENvbnRlbnQ9Yil9KX0sbnVsbCxhLGFyZ3VtZW50cy5sZW5ndGgpfSxhcHBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gY2IodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oYSl7MSE9PXRoaXMubm9kZVR5cGUmJjExIT09dGhpcy5ub2RlVHlwZSYmOSE9PXRoaXMubm9kZVR5cGV8fFNiKHRoaXMsYSkuYXBwZW5kQ2hpbGQoYSl9KX0scHJlcGVuZDpmdW5jdGlvbigpe3JldHVybiBjYih0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihhKXtpZigxPT09dGhpcy5ub2RlVHlwZXx8MTE9PT10aGlzLm5vZGVUeXBlfHw5PT09CnRoaXMubm9kZVR5cGUpe3ZhciBiPVNiKHRoaXMsYSk7Yi5pbnNlcnRCZWZvcmUoYSxiLmZpcnN0Q2hpbGQpfX0pfSxiZWZvcmU6ZnVuY3Rpb24oKXtyZXR1cm4gY2IodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcyl9KX0sYWZ0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gY2IodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcy5uZXh0U2libGluZyl9KX0sZW1wdHk6ZnVuY3Rpb24oKXtmb3IodmFyIGEsYj0wO251bGwhPShhPXRoaXNbYl0pO2IrKykxPT09YS5ub2RlVHlwZSYmKGQuY2xlYW5EYXRhKHNhKGEsITEpKSxhLnRleHRDb250ZW50PSIiKTtyZXR1cm4gdGhpc30sY2xvbmU6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT1udWxsIT1hJiZhLGI9bnVsbD09Yj9hOmIsdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gZC5jbG9uZSh0aGlzLAphLGIpfSl9LGh0bWw6ZnVuY3Rpb24oYSl7cmV0dXJuIFhhKHRoaXMsZnVuY3Rpb24oYil7dmFyIGM9dGhpc1swXXx8e30sZT0wLGY9dGhpcy5sZW5ndGg7aWYodm9pZCAwPT09YiYmMT09PWMubm9kZVR5cGUpcmV0dXJuIGMuaW5uZXJIVE1MO2lmKCJzdHJpbmciPT10eXBlb2YgYiYmIW5kLnRlc3QoYikmJiFDYVsobWMuZXhlYyhiKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKV0pe2I9ZC5odG1sUHJlZmlsdGVyKGIpO3RyeXtmb3IoO2U8ZjtlKyspMT09PShjPXRoaXNbZV18fHt9KS5ub2RlVHlwZSYmKGQuY2xlYW5EYXRhKHNhKGMsITEpKSxjLmlubmVySFRNTD1iKTtjPTB9Y2F0Y2goZyl7fX1jJiZ0aGlzLmVtcHR5KCkuYXBwZW5kKGIpfSxudWxsLGEsYXJndW1lbnRzLmxlbmd0aCl9LHJlcGxhY2VXaXRoOmZ1bmN0aW9uKCl7dmFyIGE9W107cmV0dXJuIGNiKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGIpe3ZhciBjPXRoaXMucGFyZW50Tm9kZTswPmQuaW5BcnJheSh0aGlzLGEpJiYKKGQuY2xlYW5EYXRhKHNhKHRoaXMpKSxjJiZjLnJlcGxhY2VDaGlsZChiLHRoaXMpKX0sYSl9fSk7ZC5lYWNoKHthcHBlbmRUbzoiYXBwZW5kIixwcmVwZW5kVG86InByZXBlbmQiLGluc2VydEJlZm9yZToiYmVmb3JlIixpbnNlcnRBZnRlcjoiYWZ0ZXIiLHJlcGxhY2VBbGw6InJlcGxhY2VXaXRoIn0sZnVuY3Rpb24oYSxiKXtkLmZuW2FdPWZ1bmN0aW9uKGMpe2Zvcih2YXIgZT1bXSxmPWQoYyksZz1mLmxlbmd0aC0xLGg9MDtoPD1nO2grKyljPWg9PT1nP3RoaXM6dGhpcy5jbG9uZSghMCksZChmW2hdKVtiXShjKSx1Yi5hcHBseShlLGMuZ2V0KCkpO3JldHVybiB0aGlzLnB1c2hTdGFjayhlKX19KTt2YXIgYmM9bmV3IFJlZ0V4cCgiXigiK3pjKyIpKD8hcHgpW2EteiVdKyQiLCJpIiksYWM9L14tLS8sVWI9ZnVuY3Rpb24oYSl7dmFyIGI9YS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3O3JldHVybiBiJiZiLm9wZW5lcnx8KGI9biksYi5nZXRDb21wdXRlZFN0eWxlKGEpfSxCYz1mdW5jdGlvbihhLApiLGMpe3ZhciBlLGY9e307Zm9yKGUgaW4gYilmW2VdPWEuc3R5bGVbZV0sYS5zdHlsZVtlXT1iW2VdO2ZvcihlIGluIGM9Yy5jYWxsKGEpLGIpYS5zdHlsZVtlXT1mW2VdO3JldHVybiBjfSxUYz1uZXcgUmVnRXhwKFBhLmpvaW4oInwiKSwiaSIpOyFmdW5jdGlvbigpe2Z1bmN0aW9uIGEoKXtpZihsKXttLnN0eWxlLmNzc1RleHQ9InBvc2l0aW9uOmFic29sdXRlO2xlZnQ6LTExMTExcHg7d2lkdGg6NjBweDttYXJnaW4tdG9wOjFweDtwYWRkaW5nOjA7Ym9yZGVyOjAiO2wuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3g7b3ZlcmZsb3c6c2Nyb2xsO21hcmdpbjphdXRvO2JvcmRlcjoxcHg7cGFkZGluZzoxcHg7d2lkdGg6NjAlO3RvcDoxJSI7amIuYXBwZW5kQ2hpbGQobSkuYXBwZW5kQ2hpbGQobCk7dmFyIHQ9bi5nZXRDb21wdXRlZFN0eWxlKGwpO2I9IjElIiE9PXQudG9wO2g9MTI9PT1NYXRoLnJvdW5kKHBhcnNlRmxvYXQodC5tYXJnaW5MZWZ0KSk7Cmwuc3R5bGUucmlnaHQ9IjYwJSI7Zj0zNj09PU1hdGgucm91bmQocGFyc2VGbG9hdCh0LnJpZ2h0KSk7Yz0zNj09PU1hdGgucm91bmQocGFyc2VGbG9hdCh0LndpZHRoKSk7bC5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiO2U9MTI9PT1NYXRoLnJvdW5kKHBhcnNlRmxvYXQobC5vZmZzZXRXaWR0aC8zKSk7amIucmVtb3ZlQ2hpbGQobSk7bD1udWxsfX12YXIgYixjLGUsZixnLGgsbT1MLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGw9TC5jcmVhdGVFbGVtZW50KCJkaXYiKTtsLnN0eWxlJiYobC5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD0iY29udGVudC1ib3giLGwuY2xvbmVOb2RlKCEwKS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD0iIixOLmNsZWFyQ2xvbmVTdHlsZT0iY29udGVudC1ib3giPT09bC5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCxkLmV4dGVuZChOLHtib3hTaXppbmdSZWxpYWJsZTpmdW5jdGlvbigpe3JldHVybiBhKCksY30scGl4ZWxCb3hTdHlsZXM6ZnVuY3Rpb24oKXtyZXR1cm4gYSgpLApmfSxwaXhlbFBvc2l0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIGEoKSxifSxyZWxpYWJsZU1hcmdpbkxlZnQ6ZnVuY3Rpb24oKXtyZXR1cm4gYSgpLGh9LHNjcm9sbGJveFNpemU6ZnVuY3Rpb24oKXtyZXR1cm4gYSgpLGV9LHJlbGlhYmxlVHJEaW1lbnNpb25zOmZ1bmN0aW9uKCl7dmFyIHQsdyxyLHo7cmV0dXJuIG51bGw9PWcmJih0PUwuY3JlYXRlRWxlbWVudCgidGFibGUiKSx3PUwuY3JlYXRlRWxlbWVudCgidHIiKSxyPUwuY3JlYXRlRWxlbWVudCgiZGl2IiksdC5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi0xMTExMXB4O2JvcmRlci1jb2xsYXBzZTpzZXBhcmF0ZSIsdy5zdHlsZS5jc3NUZXh0PSJib3JkZXI6MXB4IHNvbGlkIix3LnN0eWxlLmhlaWdodD0iMXB4IixyLnN0eWxlLmhlaWdodD0iOXB4IixyLnN0eWxlLmRpc3BsYXk9ImJsb2NrIixqYi5hcHBlbmRDaGlsZCh0KS5hcHBlbmRDaGlsZCh3KS5hcHBlbmRDaGlsZChyKSx6PW4uZ2V0Q29tcHV0ZWRTdHlsZSh3KSwKZz1wYXJzZUludCh6LmhlaWdodCwxMCkrcGFyc2VJbnQoei5ib3JkZXJUb3BXaWR0aCwxMCkrcGFyc2VJbnQoei5ib3JkZXJCb3R0b21XaWR0aCwxMCk9PT13Lm9mZnNldEhlaWdodCxqYi5yZW1vdmVDaGlsZCh0KSksZ319KSl9KCk7dmFyIHJjPVsiV2Via2l0IiwiTW96IiwibXMiXSxxYz1MLmNyZWF0ZUVsZW1lbnQoImRpdiIpLnN0eWxlLHBjPXt9LG9kPS9eKG5vbmV8dGFibGUoPyEtY1tlYV0pLispLyxwZD17cG9zaXRpb246ImFic29sdXRlIix2aXNpYmlsaXR5OiJoaWRkZW4iLGRpc3BsYXk6ImJsb2NrIn0sQ2M9e2xldHRlclNwYWNpbmc6IjAiLGZvbnRXZWlnaHQ6IjQwMCJ9O2QuZXh0ZW5kKHtjc3NIb29rczp7b3BhY2l0eTp7Z2V0OmZ1bmN0aW9uKGEsYil7aWYoYilyZXR1cm4gYT1LYShhLCJvcGFjaXR5IiksIiI9PT1hPyIxIjphfX19LGNzc051bWJlcjp7YW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6ITAsYXNwZWN0UmF0aW86ITAsYm9yZGVySW1hZ2VTbGljZTohMCxjb2x1bW5Db3VudDohMCwKZmxleEdyb3c6ITAsZmxleFNocmluazohMCxmb250V2VpZ2h0OiEwLGdyaWRBcmVhOiEwLGdyaWRDb2x1bW46ITAsZ3JpZENvbHVtbkVuZDohMCxncmlkQ29sdW1uU3RhcnQ6ITAsZ3JpZFJvdzohMCxncmlkUm93RW5kOiEwLGdyaWRSb3dTdGFydDohMCxsaW5lSGVpZ2h0OiEwLG9wYWNpdHk6ITAsb3JkZXI6ITAsb3JwaGFuczohMCxzY2FsZTohMCx3aWRvd3M6ITAsekluZGV4OiEwLHpvb206ITAsZmlsbE9wYWNpdHk6ITAsZmxvb2RPcGFjaXR5OiEwLHN0b3BPcGFjaXR5OiEwLHN0cm9rZU1pdGVybGltaXQ6ITAsc3Ryb2tlT3BhY2l0eTohMH0sY3NzUHJvcHM6e30sc3R5bGU6ZnVuY3Rpb24oYSxiLGMsZSl7aWYoYSYmMyE9PWEubm9kZVR5cGUmJjghPT1hLm5vZGVUeXBlJiZhLnN0eWxlKXt2YXIgZixnLGgsbT1CYShiKSxsPWFjLnRlc3QoYiksdD1hLnN0eWxlO2lmKGx8fChiPUFiKG0pKSxoPWQuY3NzSG9va3NbYl18fGQuY3NzSG9va3NbbV0sdm9pZCAwPT09YylyZXR1cm4gaCYmCiJnZXQiaW4gaCYmdm9pZCAwIT09KGY9aC5nZXQoYSwhMSxlKSk\/Zjp0W2JdOyJzdHJpbmciPT09KGc9dHlwZW9mIGMpJiYoZj15Yi5leGVjKGMpKSYmZlsxXSYmKGM9UGIoYSxiLGYpLGc9Im51bWJlciIpO251bGwhPWMmJmM9PWMmJigibnVtYmVyIiE9PWd8fGx8fChjKz1mJiZmWzNdfHwoZC5jc3NOdW1iZXJbbV0\/IiI6InB4IikpLE4uY2xlYXJDbG9uZVN0eWxlfHwiIiE9PWN8fDAhPT1iLmluZGV4T2YoImJhY2tncm91bmQiKXx8KHRbYl09ImluaGVyaXQiKSxoJiYic2V0ImluIGgmJnZvaWQgMD09PShjPWguc2V0KGEsYyxlKSl8fChsP3Quc2V0UHJvcGVydHkoYixjKTp0W2JdPWMpKX19LGNzczpmdW5jdGlvbihhLGIsYyxlKXt2YXIgZixnLGgsbT1CYShiKTtyZXR1cm4gYWMudGVzdChiKXx8KGI9QWIobSkpLChoPWQuY3NzSG9va3NbYl18fGQuY3NzSG9va3NbbV0pJiYiZ2V0ImluIGgmJihmPWguZ2V0KGEsITAsYykpLHZvaWQgMD09PWYmJihmPUthKGEsYixlKSksIm5vcm1hbCI9PT0KZiYmYiBpbiBDYyYmKGY9Q2NbYl0pLCIiPT09Y3x8Yz8oZz1wYXJzZUZsb2F0KGYpLCEwPT09Y3x8aXNGaW5pdGUoZyk\/Z3x8MDpmKTpmfX0pO2QuZWFjaChbImhlaWdodCIsIndpZHRoIl0sZnVuY3Rpb24oYSxiKXtkLmNzc0hvb2tzW2JdPXtnZXQ6ZnVuY3Rpb24oYyxlLGYpe2lmKGUpcmV0dXJuIW9kLnRlc3QoZC5jc3MoYywiZGlzcGxheSIpKXx8Yy5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCYmYy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aD9CYihjLGIsZik6QmMoYyxwZCxmdW5jdGlvbigpe3JldHVybiBCYihjLGIsZil9KX0sc2V0OmZ1bmN0aW9uKGMsZSxmKXt2YXIgZyxoPVViKGMpLG09IU4uc2Nyb2xsYm94U2l6ZSgpJiYiYWJzb2x1dGUiPT09aC5wb3NpdGlvbixsPShtfHxmKSYmImJvcmRlci1ib3giPT09ZC5jc3MoYywiYm94U2l6aW5nIiwhMSxoKTtmPWY\/cmIoYyxiLGYsbCxoKTowO3JldHVybiBsJiZtJiYoZi09TWF0aC5jZWlsKGNbIm9mZnNldCIrYlswXS50b1VwcGVyQ2FzZSgpKwpiLnNsaWNlKDEpXS1wYXJzZUZsb2F0KGhbYl0pLXJiKGMsYiwiYm9yZGVyIiwhMSxoKS0uNSkpLGYmJihnPXliLmV4ZWMoZSkpJiYicHgiIT09KGdbM118fCJweCIpJiYoYy5zdHlsZVtiXT1lLGU9ZC5jc3MoYyxiKSksV2IoMCxlLGYpfX19KTtkLmNzc0hvb2tzLm1hcmdpbkxlZnQ9VmIoTi5yZWxpYWJsZU1hcmdpbkxlZnQsZnVuY3Rpb24oYSxiKXtpZihiKXJldHVybihwYXJzZUZsb2F0KEthKGEsIm1hcmdpbkxlZnQiKSl8fGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdC1CYyhhLHttYXJnaW5MZWZ0OjB9LGZ1bmN0aW9uKCl7cmV0dXJuIGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdH0pKSsicHgifSk7ZC5lYWNoKHttYXJnaW46IiIscGFkZGluZzoiIixib3JkZXI6IldpZHRoIn0sZnVuY3Rpb24oYSxiKXtkLmNzc0hvb2tzW2ErYl09e2V4cGFuZDpmdW5jdGlvbihjKXt2YXIgZT0wLGY9e307Zm9yKGM9InN0cmluZyI9PXR5cGVvZiBjP2Muc3BsaXQoIiAiKTpbY107ND4KZTtlKyspZlthK1BhW2VdK2JdPWNbZV18fGNbZS0yXXx8Y1swXTtyZXR1cm4gZn19OyJtYXJnaW4iIT09YSYmKGQuY3NzSG9va3NbYStiXS5zZXQ9V2IpfSk7ZC5mbi5leHRlbmQoe2NzczpmdW5jdGlvbihhLGIpe3JldHVybiBYYSh0aGlzLGZ1bmN0aW9uKGMsZSxmKXt2YXIgZyxoPXt9LG09MDtpZihBcnJheS5pc0FycmF5KGUpKXtmPVViKGMpO2ZvcihnPWUubGVuZ3RoO208ZzttKyspaFtlW21dXT1kLmNzcyhjLGVbbV0sITEsZik7cmV0dXJuIGh9cmV0dXJuIHZvaWQgMCE9PWY\/ZC5zdHlsZShjLGUsZik6ZC5jc3MoYyxlKX0sYSxiLDE8YXJndW1lbnRzLmxlbmd0aCl9fSk7KChkLlR3ZWVuPXphKS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOnphLGluaXQ6ZnVuY3Rpb24oYSxiLGMsZSxmLGcpe3RoaXMuZWxlbT1hO3RoaXMucHJvcD1jO3RoaXMuZWFzaW5nPWZ8fGQuZWFzaW5nLl9kZWZhdWx0O3RoaXMub3B0aW9ucz1iO3RoaXMuc3RhcnQ9dGhpcy5ub3c9dGhpcy5jdXIoKTt0aGlzLmVuZD0KZTt0aGlzLnVuaXQ9Z3x8KGQuY3NzTnVtYmVyW2NdPyIiOiJweCIpfSxjdXI6ZnVuY3Rpb24oKXt2YXIgYT16YS5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZXR1cm4gYSYmYS5nZXQ\/YS5nZXQodGhpcyk6emEucHJvcEhvb2tzLl9kZWZhdWx0LmdldCh0aGlzKX0scnVuOmZ1bmN0aW9uKGEpe3ZhciBiLGM9emEucHJvcEhvb2tzW3RoaXMucHJvcF07cmV0dXJuIHRoaXMub3B0aW9ucy5kdXJhdGlvbj90aGlzLnBvcz1iPWQuZWFzaW5nW3RoaXMuZWFzaW5nXShhLHRoaXMub3B0aW9ucy5kdXJhdGlvbiphLDAsMSx0aGlzLm9wdGlvbnMuZHVyYXRpb24pOnRoaXMucG9zPWI9YSx0aGlzLm5vdz0odGhpcy5lbmQtdGhpcy5zdGFydCkqYit0aGlzLnN0YXJ0LHRoaXMub3B0aW9ucy5zdGVwJiZ0aGlzLm9wdGlvbnMuc3RlcC5jYWxsKHRoaXMuZWxlbSx0aGlzLm5vdyx0aGlzKSxjJiZjLnNldD9jLnNldCh0aGlzKTp6YS5wcm9wSG9va3MuX2RlZmF1bHQuc2V0KHRoaXMpLHRoaXN9fSkuaW5pdC5wcm90b3R5cGU9CnphLnByb3RvdHlwZTsoemEucHJvcEhvb2tzPXtfZGVmYXVsdDp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiO3JldHVybiAxIT09YS5lbGVtLm5vZGVUeXBlfHxudWxsIT1hLmVsZW1bYS5wcm9wXSYmbnVsbD09YS5lbGVtLnN0eWxlW2EucHJvcF0\/YS5lbGVtW2EucHJvcF06KGI9ZC5jc3MoYS5lbGVtLGEucHJvcCwiIikpJiYiYXV0byIhPT1iP2I6MH0sc2V0OmZ1bmN0aW9uKGEpe2QuZnguc3RlcFthLnByb3BdP2QuZnguc3RlcFthLnByb3BdKGEpOjEhPT1hLmVsZW0ubm9kZVR5cGV8fCFkLmNzc0hvb2tzW2EucHJvcF0mJm51bGw9PWEuZWxlbS5zdHlsZVtBYihhLnByb3ApXT9hLmVsZW1bYS5wcm9wXT1hLm5vdzpkLnN0eWxlKGEuZWxlbSxhLnByb3AsYS5ub3crYS51bml0KX19fSkuc2Nyb2xsVG9wPXphLnByb3BIb29rcy5zY3JvbGxMZWZ0PXtzZXQ6ZnVuY3Rpb24oYSl7YS5lbGVtLm5vZGVUeXBlJiZhLmVsZW0ucGFyZW50Tm9kZSYmKGEuZWxlbVthLnByb3BdPWEubm93KX19O2QuZWFzaW5nPQp7bGluZWFyOmZ1bmN0aW9uKGEpe3JldHVybiBhfSxzd2luZzpmdW5jdGlvbihhKXtyZXR1cm4uNS1NYXRoLmNvcyhhKk1hdGguUEkpLzJ9LF9kZWZhdWx0OiJzd2luZyJ9O2QuZng9emEucHJvdG90eXBlLmluaXQ7ZC5meC5zdGVwPXt9O3ZhciBzYixYYixxZD0vXig\/OnRvZ2dsZXxzaG93fGhpZGUpJC8scmQ9L3F1ZXVlSG9va3MkLztkLkFuaW1hdGlvbj1kLmV4dGVuZCh4LHt0d2VlbmVyczp7IioiOltmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuY3JlYXRlVHdlZW4oYSxiKTtyZXR1cm4gUGIoYy5lbGVtLGEseWIuZXhlYyhiKSxjKSxjfV19LHR3ZWVuZXI6ZnVuY3Rpb24oYSxiKXtNKGEpPyhiPWEsYT1bIioiXSk6YT1hLm1hdGNoKExhKTtmb3IodmFyIGMsZT0wLGY9YS5sZW5ndGg7ZTxmO2UrKyljPWFbZV0seC50d2VlbmVyc1tjXT14LnR3ZWVuZXJzW2NdfHxbXSx4LnR3ZWVuZXJzW2NdLnVuc2hpZnQoYil9LHByZWZpbHRlcnM6W2Z1bmN0aW9uKGEsYixjKXt2YXIgZSxmLGcsaCwKbSxsLHQsdz0id2lkdGgiaW4gYnx8ImhlaWdodCJpbiBiLHI9dGhpcyx6PXt9LEQ9YS5zdHlsZSxGPWEubm9kZVR5cGUmJlFiKGEpLE89Ry5nZXQoYSwiZnhzaG93Iik7Zm9yKGUgaW4gYy5xdWV1ZXx8KG51bGw9PShoPWQuX3F1ZXVlSG9va3MoYSwiZngiKSkudW5xdWV1ZWQmJihoLnVucXVldWVkPTAsbT1oLmVtcHR5LmZpcmUsaC5lbXB0eS5maXJlPWZ1bmN0aW9uKCl7aC51bnF1ZXVlZHx8bSgpfSksaC51bnF1ZXVlZCsrLHIuYWx3YXlzKGZ1bmN0aW9uKCl7ci5hbHdheXMoZnVuY3Rpb24oKXtoLnVucXVldWVkLS07ZC5xdWV1ZShhLCJmeCIpLmxlbmd0aHx8aC5lbXB0eS5maXJlKCl9KX0pKSxiKWlmKGY9YltlXSxxZC50ZXN0KGYpKXtpZihkZWxldGUgYltlXSxnPWd8fCJ0b2dnbGUiPT09ZixmPT09KEY\/ImhpZGUiOiJzaG93Iikpe2lmKCJzaG93IiE9PWZ8fCFPfHx2b2lkIDA9PT1PW2VdKWNvbnRpbnVlO0Y9ITB9eltlXT1PJiZPW2VdfHxkLnN0eWxlKGEsZSl9aWYoKGI9IWQuaXNFbXB0eU9iamVjdChiKSl8fAohZC5pc0VtcHR5T2JqZWN0KHopKWZvcihlIGluIHcmJjE9PT1hLm5vZGVUeXBlJiYoYy5vdmVyZmxvdz1bRC5vdmVyZmxvdyxELm92ZXJmbG93WCxELm92ZXJmbG93WV0sbnVsbD09KGw9TyYmTy5kaXNwbGF5KSYmKGw9Ry5nZXQoYSwiZGlzcGxheSIpKSwibm9uZSI9PT0odD1kLmNzcyhhLCJkaXNwbGF5IikpJiYobD90PWw6KCRhKFthXSwhMCksbD1hLnN0eWxlLmRpc3BsYXl8fGwsdD1kLmNzcyhhLCJkaXNwbGF5IiksJGEoW2FdKSkpLCgiaW5saW5lIj09PXR8fCJpbmxpbmUtYmxvY2siPT09dCYmbnVsbCE9bCkmJiJub25lIj09PWQuY3NzKGEsImZsb2F0IikmJihifHwoci5kb25lKGZ1bmN0aW9uKCl7RC5kaXNwbGF5PWx9KSxudWxsPT1sJiYodD1ELmRpc3BsYXksbD0ibm9uZSI9PT10PyIiOnQpKSxELmRpc3BsYXk9ImlubGluZS1ibG9jayIpKSxjLm92ZXJmbG93JiYoRC5vdmVyZmxvdz0iaGlkZGVuIixyLmFsd2F5cyhmdW5jdGlvbigpe0Qub3ZlcmZsb3c9Yy5vdmVyZmxvd1swXTsKRC5vdmVyZmxvd1g9Yy5vdmVyZmxvd1sxXTtELm92ZXJmbG93WT1jLm92ZXJmbG93WzJdfSkpLGI9ITEseilifHwoTz8iaGlkZGVuImluIE8mJihGPU8uaGlkZGVuKTpPPUcuYWNjZXNzKGEsImZ4c2hvdyIse2Rpc3BsYXk6bH0pLGcmJihPLmhpZGRlbj0hRiksRiYmJGEoW2FdLCEwKSxyLmRvbmUoZnVuY3Rpb24oKXtmb3IoZSBpbiBGfHwkYShbYV0pLEcucmVtb3ZlKGEsImZ4c2hvdyIpLHopZC5zdHlsZShhLGUseltlXSl9KSksYj11KEY\/T1tlXTowLGUsciksZSBpbiBPfHwoT1tlXT1iLnN0YXJ0LEYmJihiLmVuZD1iLnN0YXJ0LGIuc3RhcnQ9MCkpfV0scHJlZmlsdGVyOmZ1bmN0aW9uKGEsYil7Yj94LnByZWZpbHRlcnMudW5zaGlmdChhKTp4LnByZWZpbHRlcnMucHVzaChhKX19KTtkLnNwZWVkPWZ1bmN0aW9uKGEsYixjKXt2YXIgZT1hJiYib2JqZWN0Ij09dHlwZW9mIGE\/ZC5leHRlbmQoe30sYSk6e2NvbXBsZXRlOmN8fCFjJiZifHxNKGEpJiZhLGR1cmF0aW9uOmEsZWFzaW5nOmMmJgpifHxiJiYhTShiKSYmYn07cmV0dXJuIGQuZngub2ZmP2UuZHVyYXRpb249MDoibnVtYmVyIiE9dHlwZW9mIGUuZHVyYXRpb24mJihlLmR1cmF0aW9uIGluIGQuZnguc3BlZWRzP2UuZHVyYXRpb249ZC5meC5zcGVlZHNbZS5kdXJhdGlvbl06ZS5kdXJhdGlvbj1kLmZ4LnNwZWVkcy5fZGVmYXVsdCksbnVsbCE9ZS5xdWV1ZSYmITAhPT1lLnF1ZXVlfHwoZS5xdWV1ZT0iZngiKSxlLm9sZD1lLmNvbXBsZXRlLGUuY29tcGxldGU9ZnVuY3Rpb24oKXtNKGUub2xkKSYmZS5vbGQuY2FsbCh0aGlzKTtlLnF1ZXVlJiZkLmRlcXVldWUodGhpcyxlLnF1ZXVlKX0sZX07ZC5mbi5leHRlbmQoe2ZhZGVUbzpmdW5jdGlvbihhLGIsYyxlKXtyZXR1cm4gdGhpcy5maWx0ZXIoUWIpLmNzcygib3BhY2l0eSIsMCkuc2hvdygpLmVuZCgpLmFuaW1hdGUoe29wYWNpdHk6Yn0sYSxjLGUpfSxhbmltYXRlOmZ1bmN0aW9uKGEsYixjLGUpe3ZhciBmPWQuaXNFbXB0eU9iamVjdChhKSxnPWQuc3BlZWQoYixjLGUpOwpiPWZ1bmN0aW9uKCl7dmFyIGg9eCh0aGlzLGQuZXh0ZW5kKHt9LGEpLGcpOyhmfHxHLmdldCh0aGlzLCJmaW5pc2giKSkmJmguc3RvcCghMCl9O3JldHVybiBiLmZpbmlzaD1iLGZ8fCExPT09Zy5xdWV1ZT90aGlzLmVhY2goYik6dGhpcy5xdWV1ZShnLnF1ZXVlLGIpfSxzdG9wOmZ1bmN0aW9uKGEsYixjKXt2YXIgZT1mdW5jdGlvbihmKXt2YXIgZz1mLnN0b3A7ZGVsZXRlIGYuc3RvcDtnKGMpfTtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGEmJihjPWIsYj1hLGE9dm9pZCAwKSxiJiZ0aGlzLnF1ZXVlKGF8fCJmeCIsW10pLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBmPSEwLGc9bnVsbCE9YSYmYSsicXVldWVIb29rcyIsaD1kLnRpbWVycyxtPUcuZ2V0KHRoaXMpO2lmKGcpbVtnXSYmbVtnXS5zdG9wJiZlKG1bZ10pO2Vsc2UgZm9yKGcgaW4gbSltW2ddJiZtW2ddLnN0b3AmJnJkLnRlc3QoZykmJmUobVtnXSk7Zm9yKGc9aC5sZW5ndGg7Zy0tOyloW2ddLmVsZW0hPT10aGlzfHxudWxsIT0KYSYmaFtnXS5xdWV1ZSE9PWF8fChoW2ddLmFuaW0uc3RvcChjKSxmPSExLGguc3BsaWNlKGcsMSkpOyFmJiZjfHxkLmRlcXVldWUodGhpcyxhKX0pfSxmaW5pc2g6ZnVuY3Rpb24oYSl7cmV0dXJuITEhPT1hJiYoYT1hfHwiZngiKSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1HLmdldCh0aGlzKSxjPWJbYSsicXVldWUiXSxlPWJbYSsicXVldWVIb29rcyJdLGY9ZC50aW1lcnMsZz1jP2MubGVuZ3RoOjA7Yi5maW5pc2g9ITA7ZC5xdWV1ZSh0aGlzLGEsW10pO2UmJmUuc3RvcCYmZS5zdG9wLmNhbGwodGhpcywhMCk7Zm9yKGU9Zi5sZW5ndGg7ZS0tOylmW2VdLmVsZW09PT10aGlzJiZmW2VdLnF1ZXVlPT09YSYmKGZbZV0uYW5pbS5zdG9wKCEwKSxmLnNwbGljZShlLDEpKTtmb3IoZT0wO2U8ZztlKyspY1tlXSYmY1tlXS5maW5pc2gmJmNbZV0uZmluaXNoLmNhbGwodGhpcyk7ZGVsZXRlIGIuZmluaXNofSl9fSk7ZC5lYWNoKFsidG9nZ2xlIiwic2hvdyIsImhpZGUiXSxmdW5jdGlvbihhLApiKXt2YXIgYz1kLmZuW2JdO2QuZm5bYl09ZnVuY3Rpb24oZSxmLGcpe3JldHVybiBudWxsPT1lfHwiYm9vbGVhbiI9PXR5cGVvZiBlP2MuYXBwbHkodGhpcyxhcmd1bWVudHMpOnRoaXMuYW5pbWF0ZSh0YihiLCEwKSxlLGYsZyl9fSk7ZC5lYWNoKHtzbGlkZURvd246dGIoInNob3ciKSxzbGlkZVVwOnRiKCJoaWRlIiksc2xpZGVUb2dnbGU6dGIoInRvZ2dsZSIpLGZhZGVJbjp7b3BhY2l0eToic2hvdyJ9LGZhZGVPdXQ6e29wYWNpdHk6ImhpZGUifSxmYWRlVG9nZ2xlOntvcGFjaXR5OiJ0b2dnbGUifX0sZnVuY3Rpb24oYSxiKXtkLmZuW2FdPWZ1bmN0aW9uKGMsZSxmKXtyZXR1cm4gdGhpcy5hbmltYXRlKGIsYyxlLGYpfX0pO2QudGltZXJzPVtdO2QuZngudGljaz1mdW5jdGlvbigpe3ZhciBhLGI9MCxjPWQudGltZXJzO2ZvcihzYj1EYXRlLm5vdygpO2I8Yy5sZW5ndGg7YisrKShhPWNbYl0pKCl8fGNbYl0hPT1hfHxjLnNwbGljZShiLS0sMSk7Yy5sZW5ndGh8fGQuZnguc3RvcCgpOwpzYj12b2lkIDB9O2QuZngudGltZXI9ZnVuY3Rpb24oYSl7ZC50aW1lcnMucHVzaChhKTtkLmZ4LnN0YXJ0KCl9O2QuZnguaW50ZXJ2YWw9MTM7ZC5meC5zdGFydD1mdW5jdGlvbigpe1hifHwoWGI9ITAsQ2IoKSl9O2QuZnguc3RvcD1mdW5jdGlvbigpe1hiPW51bGx9O2QuZnguc3BlZWRzPXtzbG93OjYwMCxmYXN0OjIwMCxfZGVmYXVsdDo0MDB9O2QuZm4uZGVsYXk9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT1kLmZ4JiZkLmZ4LnNwZWVkc1thXXx8YSxiPWJ8fCJmeCIsdGhpcy5xdWV1ZShiLGZ1bmN0aW9uKGMsZSl7dmFyIGY9bi5zZXRUaW1lb3V0KGMsYSk7ZS5zdG9wPWZ1bmN0aW9uKCl7bi5jbGVhclRpbWVvdXQoZil9fSl9O3ZhciBJYj1MLmNyZWF0ZUVsZW1lbnQoImlucHV0Iiksc2Q9TC5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKS5hcHBlbmRDaGlsZChMLmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpKTtJYi50eXBlPSJjaGVja2JveCI7Ti5jaGVja09uPSIiIT09SWIudmFsdWU7Ti5vcHRTZWxlY3RlZD0Kc2Quc2VsZWN0ZWQ7KEliPUwuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSkudmFsdWU9InQiO0liLnR5cGU9InJhZGlvIjtOLnJhZGlvVmFsdWU9InQiPT09SWIudmFsdWU7dmFyIEpiPWQuZXhwci5hdHRySGFuZGxlO2QuZm4uZXh0ZW5kKHthdHRyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIFhhKHRoaXMsZC5hdHRyLGEsYiwxPGFyZ3VtZW50cy5sZW5ndGgpfSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtkLnJlbW92ZUF0dHIodGhpcyxhKX0pfX0pO2QuZXh0ZW5kKHthdHRyOmZ1bmN0aW9uKGEsYixjKXt2YXIgZSxmLGc9YS5ub2RlVHlwZTtpZigzIT09ZyYmOCE9PWcmJjIhPT1nKXJldHVybiJ1bmRlZmluZWQiPT10eXBlb2YgYS5nZXRBdHRyaWJ1dGU\/ZC5wcm9wKGEsYixjKTooMT09PWcmJmQuaXNYTUxEb2MoYSl8fChmPWQuYXR0ckhvb2tzW2IudG9Mb3dlckNhc2UoKV18fChkLmV4cHIubWF0Y2guYm9vbC50ZXN0KGIpP3RkOnZvaWQgMCkpLAp2b2lkIDAhPT1jP251bGw9PT1jP3ZvaWQgZC5yZW1vdmVBdHRyKGEsYik6ZiYmInNldCJpbiBmJiZ2b2lkIDAhPT0oZT1mLnNldChhLGMsYikpP2U6KGEuc2V0QXR0cmlidXRlKGIsYysiIiksYyk6ZiYmImdldCJpbiBmJiZudWxsIT09KGU9Zi5nZXQoYSxiKSk\/ZTpudWxsPT0oZT1kLmZpbmQuYXR0cihhLGIpKT92b2lkIDA6ZSl9LGF0dHJIb29rczp7dHlwZTp7c2V0OmZ1bmN0aW9uKGEsYil7aWYoIU4ucmFkaW9WYWx1ZSYmInJhZGlvIj09PWImJlgoYSwiaW5wdXQiKSl7dmFyIGM9YS52YWx1ZTtyZXR1cm4gYS5zZXRBdHRyaWJ1dGUoInR5cGUiLGIpLGMmJihhLnZhbHVlPWMpLGJ9fX19LHJlbW92ZUF0dHI6ZnVuY3Rpb24oYSxiKXt2YXIgYz0wLGU9YiYmYi5tYXRjaChMYSk7aWYoZSYmMT09PWEubm9kZVR5cGUpZm9yKDtiPWVbYysrXTspYS5yZW1vdmVBdHRyaWJ1dGUoYil9fSk7dmFyIHRkPXtzZXQ6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiExPT09Yj9kLnJlbW92ZUF0dHIoYSwKYyk6YS5zZXRBdHRyaWJ1dGUoYyxjKSxjfX07ZC5lYWNoKGQuZXhwci5tYXRjaC5ib29sLnNvdXJjZS5tYXRjaCgvXHcrL2cpLGZ1bmN0aW9uKGEsYil7dmFyIGM9SmJbYl18fGQuZmluZC5hdHRyO0piW2JdPWZ1bmN0aW9uKGUsZixnKXt2YXIgaCxtLGw9Zi50b0xvd2VyQ2FzZSgpO3JldHVybiBnfHwobT1KYltsXSxKYltsXT1oLGg9bnVsbCE9YyhlLGYsZyk\/bDpudWxsLEpiW2xdPW0pLGh9fSk7dmFyIHVkPS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbikkL2ksdmQ9L14oPzphfGFyZWEpJC9pO2QuZm4uZXh0ZW5kKHtwcm9wOmZ1bmN0aW9uKGEsYil7cmV0dXJuIFhhKHRoaXMsZC5wcm9wLGEsYiwxPGFyZ3VtZW50cy5sZW5ndGgpfSxyZW1vdmVQcm9wOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtkZWxldGUgdGhpc1tkLnByb3BGaXhbYV18fGFdfSl9fSk7ZC5leHRlbmQoe3Byb3A6ZnVuY3Rpb24oYSxiLGMpe3ZhciBlLGYsZz1hLm5vZGVUeXBlOwppZigzIT09ZyYmOCE9PWcmJjIhPT1nKXJldHVybiAxPT09ZyYmZC5pc1hNTERvYyhhKXx8KGI9ZC5wcm9wRml4W2JdfHxiLGY9ZC5wcm9wSG9va3NbYl0pLHZvaWQgMCE9PWM\/ZiYmInNldCJpbiBmJiZ2b2lkIDAhPT0oZT1mLnNldChhLGMsYikpP2U6YVtiXT1jOmYmJiJnZXQiaW4gZiYmbnVsbCE9PShlPWYuZ2V0KGEsYikpP2U6YVtiXX0scHJvcEhvb2tzOnt0YWJJbmRleDp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiPWQuZmluZC5hdHRyKGEsInRhYmluZGV4Iik7cmV0dXJuIGI\/cGFyc2VJbnQoYiwxMCk6dWQudGVzdChhLm5vZGVOYW1lKXx8dmQudGVzdChhLm5vZGVOYW1lKSYmYS5ocmVmPzA6LTF9fX0scHJvcEZpeDp7ImZvciI6Imh0bWxGb3IiLCJjbGFzcyI6ImNsYXNzTmFtZSJ9fSk7Ti5vcHRTZWxlY3RlZHx8KGQucHJvcEhvb2tzLnNlbGVjdGVkPXtnZXQ6ZnVuY3Rpb24oYSl7YT1hLnBhcmVudE5vZGU7cmV0dXJuIGEmJmEucGFyZW50Tm9kZSYmYS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgsCm51bGx9LHNldDpmdW5jdGlvbihhKXthPWEucGFyZW50Tm9kZTthJiYoYS5zZWxlY3RlZEluZGV4LGEucGFyZW50Tm9kZSYmYS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgpfX0pO2QuZWFjaCgidGFiSW5kZXggcmVhZE9ubHkgbWF4TGVuZ3RoIGNlbGxTcGFjaW5nIGNlbGxQYWRkaW5nIHJvd1NwYW4gY29sU3BhbiB1c2VNYXAgZnJhbWVCb3JkZXIgY29udGVudEVkaXRhYmxlIi5zcGxpdCgiICIpLGZ1bmN0aW9uKCl7ZC5wcm9wRml4W3RoaXMudG9Mb3dlckNhc2UoKV09dGhpc30pO2QuZm4uZXh0ZW5kKHthZGRDbGFzczpmdW5jdGlvbihhKXt2YXIgYixjLGUsZixnLGg7cmV0dXJuIE0oYSk\/dGhpcy5lYWNoKGZ1bmN0aW9uKG0pe2QodGhpcykuYWRkQ2xhc3MoYS5jYWxsKHRoaXMsbSxIKHRoaXMpKSl9KTooYj1QKGEpKS5sZW5ndGg\/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7aWYoZT1IKHRoaXMpLGM9MT09PXRoaXMubm9kZVR5cGUmJiIgIitDKGUpKyIgIil7Zm9yKGc9MDtnPGIubGVuZ3RoO2crKylmPQpiW2ddLDA+Yy5pbmRleE9mKCIgIitmKyIgIikmJihjKz1mKyIgIik7aD1DKGMpO2UhPT1oJiZ0aGlzLnNldEF0dHJpYnV0ZSgiY2xhc3MiLGgpfX0pOnRoaXN9LHJlbW92ZUNsYXNzOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZSxmLGcsaDtyZXR1cm4gTShhKT90aGlzLmVhY2goZnVuY3Rpb24obSl7ZCh0aGlzKS5yZW1vdmVDbGFzcyhhLmNhbGwodGhpcyxtLEgodGhpcykpKX0pOmFyZ3VtZW50cy5sZW5ndGg\/KGI9UChhKSkubGVuZ3RoP3RoaXMuZWFjaChmdW5jdGlvbigpe2lmKGU9SCh0aGlzKSxjPTE9PT10aGlzLm5vZGVUeXBlJiYiICIrQyhlKSsiICIpe2ZvcihnPTA7ZzxiLmxlbmd0aDtnKyspZm9yKGY9YltnXTstMTxjLmluZGV4T2YoIiAiK2YrIiAiKTspYz1jLnJlcGxhY2UoIiAiK2YrIiAiLCIgIik7aD1DKGMpO2UhPT1oJiZ0aGlzLnNldEF0dHJpYnV0ZSgiY2xhc3MiLGgpfX0pOnRoaXM6dGhpcy5hdHRyKCJjbGFzcyIsIiIpfSx0b2dnbGVDbGFzczpmdW5jdGlvbihhLGIpe3ZhciBjLAplLGYsZyxoPXR5cGVvZiBhLG09InN0cmluZyI9PT1ofHxBcnJheS5pc0FycmF5KGEpO3JldHVybiBNKGEpP3RoaXMuZWFjaChmdW5jdGlvbihsKXtkKHRoaXMpLnRvZ2dsZUNsYXNzKGEuY2FsbCh0aGlzLGwsSCh0aGlzKSxiKSxiKX0pOiJib29sZWFuIj09dHlwZW9mIGImJm0\/Yj90aGlzLmFkZENsYXNzKGEpOnRoaXMucmVtb3ZlQ2xhc3MoYSk6KGM9UChhKSx0aGlzLmVhY2goZnVuY3Rpb24oKXtpZihtKWZvcihnPWQodGhpcyksZj0wO2Y8Yy5sZW5ndGg7ZisrKWU9Y1tmXSxnLmhhc0NsYXNzKGUpP2cucmVtb3ZlQ2xhc3MoZSk6Zy5hZGRDbGFzcyhlKTtlbHNlIHZvaWQgMCE9PWEmJiJib29sZWFuIiE9PWh8fCgoZT1IKHRoaXMpKSYmRy5zZXQodGhpcywiX19jbGFzc05hbWVfXyIsZSksdGhpcy5zZXRBdHRyaWJ1dGUmJnRoaXMuc2V0QXR0cmlidXRlKCJjbGFzcyIsZXx8ITE9PT1hPyIiOkcuZ2V0KHRoaXMsIl9fY2xhc3NOYW1lX18iKXx8IiIpKX0pKX0saGFzQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsCmM9MDtmb3IoYT0iICIrYSsiICI7Yj10aGlzW2MrK107KWlmKDE9PT1iLm5vZGVUeXBlJiYtMTwoIiAiK0MoSChiKSkrIiAiKS5pbmRleE9mKGEpKXJldHVybiEwO3JldHVybiExfX0pO3ZhciB3ZD0vXHIvZztkLmZuLmV4dGVuZCh7dmFsOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZSxmPXRoaXNbMF07cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg\/KGU9TShhKSx0aGlzLmVhY2goZnVuY3Rpb24oZyl7dmFyIGg7MT09PXRoaXMubm9kZVR5cGUmJihudWxsPT0oaD1lP2EuY2FsbCh0aGlzLGcsZCh0aGlzKS52YWwoKSk6YSk\/aD0iIjoibnVtYmVyIj09dHlwZW9mIGg\/aCs9IiI6QXJyYXkuaXNBcnJheShoKSYmKGg9ZC5tYXAoaCxmdW5jdGlvbihtKXtyZXR1cm4gbnVsbD09bT8iIjptKyIifSkpLChiPWQudmFsSG9va3NbdGhpcy50eXBlXXx8ZC52YWxIb29rc1t0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldKSYmInNldCJpbiBiJiZ2b2lkIDAhPT1iLnNldCh0aGlzLGgsInZhbHVlIil8fCh0aGlzLnZhbHVlPQpoKSl9KSk6Zj8oYj1kLnZhbEhvb2tzW2YudHlwZV18fGQudmFsSG9va3NbZi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSkmJiJnZXQiaW4gYiYmdm9pZCAwIT09KGM9Yi5nZXQoZiwidmFsdWUiKSk\/Yzoic3RyaW5nIj09dHlwZW9mKGM9Zi52YWx1ZSk\/Yy5yZXBsYWNlKHdkLCIiKTpudWxsPT1jPyIiOmM6dm9pZCAwfX0pO2QuZXh0ZW5kKHt2YWxIb29rczp7b3B0aW9uOntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9ZC5maW5kLmF0dHIoYSwidmFsdWUiKTtyZXR1cm4gbnVsbCE9Yj9iOkMoZC50ZXh0KGEpKX19LHNlbGVjdDp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiLGMsZT1hLm9wdGlvbnMsZj1hLnNlbGVjdGVkSW5kZXgsZz0ic2VsZWN0LW9uZSI9PT1hLnR5cGUsaD1nP251bGw6W10sbT1nP2YrMTplLmxlbmd0aDtmb3IoYz0wPmY\/bTpnP2Y6MDtjPG07YysrKWlmKCEoIShiPWVbY10pLnNlbGVjdGVkJiZjIT09Znx8Yi5kaXNhYmxlZHx8Yi5wYXJlbnROb2RlLmRpc2FibGVkJiZYKGIucGFyZW50Tm9kZSwKIm9wdGdyb3VwIikpKXtpZihhPWQoYikudmFsKCksZylyZXR1cm4gYTtoLnB1c2goYSl9cmV0dXJuIGh9LHNldDpmdW5jdGlvbihhLGIpe3ZhciBjLGUsZj1hLm9wdGlvbnM7Yj1kLm1ha2VBcnJheShiKTtmb3IodmFyIGc9Zi5sZW5ndGg7Zy0tOykoKGU9ZltnXSkuc2VsZWN0ZWQ9LTE8ZC5pbkFycmF5KGQudmFsSG9va3Mub3B0aW9uLmdldChlKSxiKSkmJihjPSEwKTtyZXR1cm4gY3x8KGEuc2VsZWN0ZWRJbmRleD0tMSksYn19fX0pO2QuZWFjaChbInJhZGlvIiwiY2hlY2tib3giXSxmdW5jdGlvbigpe2QudmFsSG9va3NbdGhpc109e3NldDpmdW5jdGlvbihhLGIpe2lmKEFycmF5LmlzQXJyYXkoYikpcmV0dXJuIGEuY2hlY2tlZD0tMTxkLmluQXJyYXkoZChhKS52YWwoKSxiKX19O04uY2hlY2tPbnx8KGQudmFsSG9va3NbdGhpc10uZ2V0PWZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT09YS5nZXRBdHRyaWJ1dGUoInZhbHVlIik\/Im9uIjphLnZhbHVlfSl9KTt2YXIgS2I9bi5sb2NhdGlvbiwKRGM9RGF0ZS5ub3coKSxoYz0vXD8vO2QucGFyc2VYTUw9ZnVuY3Rpb24oYSl7dmFyIGI7aWYoIWF8fCJzdHJpbmciIT10eXBlb2YgYSlyZXR1cm4gbnVsbDt0cnl7dmFyIGM9KG5ldyBuLkRPTVBhcnNlcikucGFyc2VGcm9tU3RyaW5nKGEsInRleHQveG1sIil9Y2F0Y2goZSl7fXJldHVybiBiPWMmJmMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInBhcnNlcmVycm9yIilbMF0sYyYmIWJ8fGQuZXJyb3IoIkludmFsaWQgWE1MOiAiKyhiP2QubWFwKGIuY2hpbGROb2RlcyxmdW5jdGlvbihlKXtyZXR1cm4gZS50ZXh0Q29udGVudH0pLmpvaW4oIlxuIik6YSkpLGN9O3ZhciBFYz0vXig\/OmZvY3VzaW5mb2N1c3xmb2N1c291dGJsdXIpJC8sRmM9ZnVuY3Rpb24oYSl7YS5zdG9wUHJvcGFnYXRpb24oKX07ZC5leHRlbmQoZC5ldmVudCx7dHJpZ2dlcjpmdW5jdGlvbihhLGIsYyxlKXt2YXIgZixnLGgsbSxsLHQsdz1bY3x8TF0scj1GYi5jYWxsKGEsInR5cGUiKT9hLnR5cGU6YSx6PUZiLmNhbGwoYSwKIm5hbWVzcGFjZSIpP2EubmFtZXNwYWNlLnNwbGl0KCIuIik6W107aWYoZj10PWc9Yz1jfHxMLDMhPT1jLm5vZGVUeXBlJiY4IT09Yy5ub2RlVHlwZSYmIUVjLnRlc3QocitkLmV2ZW50LnRyaWdnZXJlZCkmJigtMTxyLmluZGV4T2YoIi4iKSYmKHI9KHo9ci5zcGxpdCgiLiIpKS5zaGlmdCgpLHouc29ydCgpKSxoPTA+ci5pbmRleE9mKCI6IikmJiJvbiIrciwoYT1hW2QuZXhwYW5kb10\/YTpuZXcgZC5FdmVudChyLCJvYmplY3QiPT10eXBlb2YgYSYmYSkpLmlzVHJpZ2dlcj1lPzI6MyxhLm5hbWVzcGFjZT16LmpvaW4oIi4iKSxhLnJuYW1lc3BhY2U9YS5uYW1lc3BhY2U\/bmV3IFJlZ0V4cCgiKF58XFwuKSIrei5qb2luKCJcXC4oPzouKlxcLnwpIikrIihcXC58JCkiKTpudWxsLGEucmVzdWx0PXZvaWQgMCxhLnRhcmdldHx8KGEudGFyZ2V0PWMpLGI9bnVsbD09Yj9bYV06ZC5tYWtlQXJyYXkoYixbYV0pLGw9ZC5ldmVudC5zcGVjaWFsW3JdfHx7fSxlfHwhbC50cmlnZ2VyfHwhMSE9PQpsLnRyaWdnZXIuYXBwbHkoYyxiKSkpe2lmKCFlJiYhbC5ub0J1YmJsZSYmIWtiKGMpKXt2YXIgRD1sLmRlbGVnYXRlVHlwZXx8cjtmb3IoRWMudGVzdChEK3IpfHwoZj1mLnBhcmVudE5vZGUpO2Y7Zj1mLnBhcmVudE5vZGUpdy5wdXNoKGYpLGc9ZjtnPT09KGMub3duZXJEb2N1bWVudHx8TCkmJncucHVzaChnLmRlZmF1bHRWaWV3fHxnLnBhcmVudFdpbmRvd3x8bil9Zm9yKHo9MDsoZj13W3orK10pJiYhYS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpOyl0PWYsYS50eXBlPTE8ej9EOmwuYmluZFR5cGV8fHIsKG09KEcuZ2V0KGYsImV2ZW50cyIpfHxPYmplY3QuY3JlYXRlKG51bGwpKVthLnR5cGVdJiZHLmdldChmLCJoYW5kbGUiKSkmJm0uYXBwbHkoZixiKSwobT1oJiZmW2hdKSYmbS5hcHBseSYmR2IoZikmJihhLnJlc3VsdD1tLmFwcGx5KGYsYiksITE9PT1hLnJlc3VsdCYmYS5wcmV2ZW50RGVmYXVsdCgpKTtyZXR1cm4gYS50eXBlPXIsZXx8YS5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8CmwuX2RlZmF1bHQmJiExIT09bC5fZGVmYXVsdC5hcHBseSh3LnBvcCgpLGIpfHwhR2IoYyl8fGgmJk0oY1tyXSkmJiFrYihjKSYmKChnPWNbaF0pJiYoY1toXT1udWxsKSxkLmV2ZW50LnRyaWdnZXJlZD1yLGEuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSYmdC5hZGRFdmVudExpc3RlbmVyKHIsRmMpLGNbcl0oKSxhLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkmJnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihyLEZjKSxkLmV2ZW50LnRyaWdnZXJlZD12b2lkIDAsZyYmKGNbaF09ZykpLGEucmVzdWx0fX0sc2ltdWxhdGU6ZnVuY3Rpb24oYSxiLGMpe2E9ZC5leHRlbmQobmV3IGQuRXZlbnQsYyx7dHlwZTphLGlzU2ltdWxhdGVkOiEwfSk7ZC5ldmVudC50cmlnZ2VyKGEsbnVsbCxiKX19KTtkLmZuLmV4dGVuZCh7dHJpZ2dlcjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtkLmV2ZW50LnRyaWdnZXIoYSxiLHRoaXMpfSl9LHRyaWdnZXJIYW5kbGVyOmZ1bmN0aW9uKGEsYil7dmFyIGM9CnRoaXNbMF07aWYoYylyZXR1cm4gZC5ldmVudC50cmlnZ2VyKGEsYixjLCEwKX19KTt2YXIgVWM9L1xbXF0kLyxHYz0vXHI\/XG4vZyx4ZD0vXig\/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8ZmlsZSkkL2kseWQ9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8a2V5Z2VuKS9pO2QucGFyYW09ZnVuY3Rpb24oYSxiKXt2YXIgYyxlPVtdLGY9ZnVuY3Rpb24oZyxoKXtoPU0oaCk\/aCgpOmg7ZVtlLmxlbmd0aF09ZW5jb2RlVVJJQ29tcG9uZW50KGcpKyI9IitlbmNvZGVVUklDb21wb25lbnQobnVsbD09aD8iIjpoKX07aWYobnVsbD09YSlyZXR1cm4iIjtpZihBcnJheS5pc0FycmF5KGEpfHxhLmpxdWVyeSYmIWQuaXNQbGFpbk9iamVjdChhKSlkLmVhY2goYSxmdW5jdGlvbigpe2YodGhpcy5uYW1lLHRoaXMudmFsdWUpfSk7ZWxzZSBmb3IoYyBpbiBhKWVhKGMsYVtjXSxiLGYpO3JldHVybiBlLmpvaW4oIiYiKX07ZC5mbi5leHRlbmQoe3NlcmlhbGl6ZTpmdW5jdGlvbigpe3JldHVybiBkLnBhcmFtKHRoaXMuc2VyaWFsaXplQXJyYXkoKSl9LApzZXJpYWxpemVBcnJheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBhPWQucHJvcCh0aGlzLCJlbGVtZW50cyIpO3JldHVybiBhP2QubWFrZUFycmF5KGEpOnRoaXN9KS5maWx0ZXIoZnVuY3Rpb24oKXt2YXIgYT10aGlzLnR5cGU7cmV0dXJuIHRoaXMubmFtZSYmIWQodGhpcykuaXMoIjpkaXNhYmxlZCIpJiZ5ZC50ZXN0KHRoaXMubm9kZU5hbWUpJiYheGQudGVzdChhKSYmKHRoaXMuY2hlY2tlZHx8IUhiLnRlc3QoYSkpfSkubWFwKGZ1bmN0aW9uKGEsYil7YT1kKHRoaXMpLnZhbCgpO3JldHVybiBudWxsPT1hP251bGw6QXJyYXkuaXNBcnJheShhKT9kLm1hcChhLGZ1bmN0aW9uKGMpe3JldHVybntuYW1lOmIubmFtZSx2YWx1ZTpjLnJlcGxhY2UoR2MsIlxyXG4iKX19KTp7bmFtZTpiLm5hbWUsdmFsdWU6YS5yZXBsYWNlKEdjLCJcclxuIil9fSkuZ2V0KCl9fSk7dmFyIHpkPS8lMjAvZyxBZD0vIy4qJC8sQmQ9LyhbPyZdKV89W14mXSovLENkPS9eKC4qPyk6WyBcdF0qKFteXHJcbl0qKSQvZ20sCkRkPS9eKD86R0VUfEhFQUQpJC8sRWQ9L15cL1wvLyxIYz17fSxjYz17fSxJYz0iKi8iLmNvbmNhdCgiKiIpLGljPUwuY3JlYXRlRWxlbWVudCgiYSIpO2ljLmhyZWY9S2IuaHJlZjtkLmV4dGVuZCh7YWN0aXZlOjAsbGFzdE1vZGlmaWVkOnt9LGV0YWc6e30sYWpheFNldHRpbmdzOnt1cmw6S2IuaHJlZix0eXBlOiJHRVQiLGlzTG9jYWw6L14oPzphYm91dHxhcHB8YXBwLXN0b3JhZ2V8ListZXh0ZW5zaW9ufGZpbGV8cmVzfHdpZGdldCk6JC8udGVzdChLYi5wcm90b2NvbCksZ2xvYmFsOiEwLHByb2Nlc3NEYXRhOiEwLGFzeW5jOiEwLGNvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLTgiLGFjY2VwdHM6eyIqIjpJYyx0ZXh0OiJ0ZXh0L3BsYWluIixodG1sOiJ0ZXh0L2h0bWwiLHhtbDoiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCIsanNvbjoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0In0sY29udGVudHM6e3htbDovXGJ4bWxcYi8sCmh0bWw6L1xiaHRtbC8sanNvbjovXGJqc29uXGIvfSxyZXNwb25zZUZpZWxkczp7eG1sOiJyZXNwb25zZVhNTCIsdGV4dDoicmVzcG9uc2VUZXh0Iixqc29uOiJyZXNwb25zZUpTT04ifSxjb252ZXJ0ZXJzOnsiKiB0ZXh0IjpTdHJpbmcsInRleHQgaHRtbCI6ITAsInRleHQganNvbiI6SlNPTi5wYXJzZSwidGV4dCB4bWwiOmQucGFyc2VYTUx9LGZsYXRPcHRpb25zOnt1cmw6ITAsY29udGV4dDohMH19LGFqYXhTZXR1cDpmdW5jdGlvbihhLGIpe3JldHVybiBiP2hiKGhiKGEsZC5hamF4U2V0dGluZ3MpLGIpOmhiKGQuYWpheFNldHRpbmdzLGEpfSxhamF4UHJlZmlsdGVyOlFhKEhjKSxhamF4VHJhbnNwb3J0OlFhKGNjKSxhamF4OmZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYyhTLGhhLGliLFope3ZhciByYSx2YSxrYSxNYSx0YSxXPWhhO0t8fChLPSEwLG0mJm4uY2xlYXJUaW1lb3V0KG0pLGU9dm9pZCAwLGc9Wnx8IiIsUS5yZWFkeVN0YXRlPTA8Uz80OjAscmE9MjAwPD1TJiYzMDA+U3x8CjMwND09PVMsaWImJihNYT1mdW5jdGlvbihmYSxEYSxkYil7Zm9yKHZhciBWYSx1YSxZLGxhLElhPWZhLmNvbnRlbnRzLG1hPWZhLmRhdGFUeXBlczsiKiI9PT1tYVswXTspbWEuc2hpZnQoKSx2b2lkIDA9PT1WYSYmKFZhPWZhLm1pbWVUeXBlfHxEYS5nZXRSZXNwb25zZUhlYWRlcigiQ29udGVudC1UeXBlIikpO2lmKFZhKWZvcih1YSBpbiBJYSlpZihJYVt1YV0mJklhW3VhXS50ZXN0KFZhKSl7bWEudW5zaGlmdCh1YSk7YnJlYWt9aWYobWFbMF1pbiBkYilZPW1hWzBdO2Vsc2V7Zm9yKHVhIGluIGRiKXtpZighbWFbMF18fGZhLmNvbnZlcnRlcnNbdWErIiAiK21hWzBdXSl7WT11YTticmVha31sYXx8KGxhPXVhKX1ZPVl8fGxhfWlmKFkpcmV0dXJuIFkhPT1tYVswXSYmbWEudW5zaGlmdChZKSxkYltZXX0ocixRLGliKSksIXJhJiYtMTxkLmluQXJyYXkoInNjcmlwdCIsci5kYXRhVHlwZXMpJiYwPmQuaW5BcnJheSgianNvbiIsci5kYXRhVHlwZXMpJiYoci5jb252ZXJ0ZXJzWyJ0ZXh0IHNjcmlwdCJdPQpmdW5jdGlvbigpe30pLE1hPWZ1bmN0aW9uKGZhLERhLGRiLFZhKXt2YXIgdWEsWSxsYSxJYSxtYSxIYT17fSx2Yj1mYS5kYXRhVHlwZXMuc2xpY2UoKTtpZih2YlsxXSlmb3IobGEgaW4gZmEuY29udmVydGVycylIYVtsYS50b0xvd2VyQ2FzZSgpXT1mYS5jb252ZXJ0ZXJzW2xhXTtmb3IoWT12Yi5zaGlmdCgpO1k7KWlmKGZhLnJlc3BvbnNlRmllbGRzW1ldJiYoZGJbZmEucmVzcG9uc2VGaWVsZHNbWV1dPURhKSwhbWEmJlZhJiZmYS5kYXRhRmlsdGVyJiYoRGE9ZmEuZGF0YUZpbHRlcihEYSxmYS5kYXRhVHlwZSkpLG1hPVksWT12Yi5zaGlmdCgpKWlmKCIqIj09PVkpWT1tYTtlbHNlIGlmKCIqIiE9PW1hJiZtYSE9PVkpe2lmKCEobGE9SGFbbWErIiAiK1ldfHxIYVsiKiAiK1ldKSlmb3IodWEgaW4gSGEpaWYoKElhPXVhLnNwbGl0KCIgIikpWzFdPT09WSYmKGxhPUhhW21hKyIgIitJYVswXV18fEhhWyIqICIrSWFbMF1dKSl7ITA9PT1sYT9sYT1IYVt1YV06ITAhPT1IYVt1YV0mJihZPQpJYVswXSx2Yi51bnNoaWZ0KElhWzFdKSk7YnJlYWt9aWYoITAhPT1sYSlpZihsYSYmZmFbInRocm93cyJdKURhPWxhKERhKTtlbHNlIHRyeXtEYT1sYShEYSl9Y2F0Y2goZmMpe3JldHVybntzdGF0ZToicGFyc2VyZXJyb3IiLGVycm9yOmxhP2ZjOiJObyBjb252ZXJzaW9uIGZyb20gIittYSsiIHRvICIrWX19fXJldHVybntzdGF0ZToic3VjY2VzcyIsZGF0YTpEYX19KHIsTWEsUSxyYSkscmE\/KHIuaWZNb2RpZmllZCYmKCh0YT1RLmdldFJlc3BvbnNlSGVhZGVyKCJMYXN0LU1vZGlmaWVkIikpJiYoZC5sYXN0TW9kaWZpZWRbZl09dGEpLCh0YT1RLmdldFJlc3BvbnNlSGVhZGVyKCJldGFnIikpJiYoZC5ldGFnW2ZdPXRhKSksMjA0PT09U3x8IkhFQUQiPT09ci50eXBlP1c9Im5vY29udGVudCI6MzA0PT09Uz9XPSJub3Rtb2RpZmllZCI6KFc9TWEuc3RhdGUsdmE9TWEuZGF0YSxyYT0hKGthPU1hLmVycm9yKSkpOihrYT1XLCFTJiZXfHwoVz0iZXJyb3IiLDA+UyYmKFM9MCkpKSxRLnN0YXR1cz0KUyxRLnN0YXR1c1RleHQ9KGhhfHxXKSsiIixyYT9GLnJlc29sdmVXaXRoKHosW3ZhLFcsUV0pOkYucmVqZWN0V2l0aCh6LFtRLFcsa2FdKSxRLnN0YXR1c0NvZGUoYWEpLGFhPXZvaWQgMCxsJiZELnRyaWdnZXIocmE\/ImFqYXhTdWNjZXNzIjoiYWpheEVycm9yIixbUSxyLHJhP3ZhOmthXSksTy5maXJlV2l0aCh6LFtRLFddKSxsJiYoRC50cmlnZ2VyKCJhamF4Q29tcGxldGUiLFtRLHJdKSwtLWQuYWN0aXZlfHxkLmV2ZW50LnRyaWdnZXIoImFqYXhTdG9wIikpKX0ib2JqZWN0Ij09dHlwZW9mIGEmJihiPWEsYT12b2lkIDApO2I9Ynx8e307dmFyIGUsZixnLGgsbSxsLHQsdyxyPWQuYWpheFNldHVwKHt9LGIpLHo9ci5jb250ZXh0fHxyLEQ9ci5jb250ZXh0JiYoei5ub2RlVHlwZXx8ei5qcXVlcnkpP2Qoeik6ZC5ldmVudCxGPWQuRGVmZXJyZWQoKSxPPWQuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLGFhPXIuc3RhdHVzQ29kZXx8e30sR2E9e30scWE9e30sU2E9ImNhbmNlbGVkIixRPQp7cmVhZHlTdGF0ZTowLGdldFJlc3BvbnNlSGVhZGVyOmZ1bmN0aW9uKFMpe3ZhciBoYTtpZihLKXtpZighaClmb3IoaD17fTtoYT1DZC5leGVjKGcpOyloW2hhWzFdLnRvTG93ZXJDYXNlKCkrIiAiXT0oaFtoYVsxXS50b0xvd2VyQ2FzZSgpKyIgIl18fFtdKS5jb25jYXQoaGFbMl0pO2hhPWhbUy50b0xvd2VyQ2FzZSgpKyIgIl19cmV0dXJuIG51bGw9PWhhP251bGw6aGEuam9pbigiLCAiKX0sZ2V0QWxsUmVzcG9uc2VIZWFkZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIEs\/ZzpudWxsfSxzZXRSZXF1ZXN0SGVhZGVyOmZ1bmN0aW9uKFMsaGEpe3JldHVybiBudWxsPT1LJiYoUz1xYVtTLnRvTG93ZXJDYXNlKCldPXFhW1MudG9Mb3dlckNhc2UoKV18fFMsR2FbU109aGEpLHRoaXN9LG92ZXJyaWRlTWltZVR5cGU6ZnVuY3Rpb24oUyl7cmV0dXJuIG51bGw9PUsmJihyLm1pbWVUeXBlPVMpLHRoaXN9LHN0YXR1c0NvZGU6ZnVuY3Rpb24oUyl7dmFyIGhhO2lmKFMpaWYoSylRLmFsd2F5cyhTW1Euc3RhdHVzXSk7CmVsc2UgZm9yKGhhIGluIFMpYWFbaGFdPVthYVtoYV0sU1toYV1dO3JldHVybiB0aGlzfSxhYm9ydDpmdW5jdGlvbihTKXtTPVN8fFNhO3JldHVybiBlJiZlLmFib3J0KFMpLGMoMCxTKSx0aGlzfX07aWYoRi5wcm9taXNlKFEpLHIudXJsPSgoYXx8ci51cmx8fEtiLmhyZWYpKyIiKS5yZXBsYWNlKEVkLEtiLnByb3RvY29sKyIvLyIpLHIudHlwZT1iLm1ldGhvZHx8Yi50eXBlfHxyLm1ldGhvZHx8ci50eXBlLHIuZGF0YVR5cGVzPShyLmRhdGFUeXBlfHwiKiIpLnRvTG93ZXJDYXNlKCkubWF0Y2goTGEpfHxbIiJdLG51bGw9PXIuY3Jvc3NEb21haW4pe2E9TC5jcmVhdGVFbGVtZW50KCJhIik7dHJ5e2EuaHJlZj1yLnVybCxhLmhyZWY9YS5ocmVmLHIuY3Jvc3NEb21haW49aWMucHJvdG9jb2wrIi8vIitpYy5ob3N0IT1hLnByb3RvY29sKyIvLyIrYS5ob3N0fWNhdGNoKFMpe3IuY3Jvc3NEb21haW49ITB9fWlmKHIuZGF0YSYmci5wcm9jZXNzRGF0YSYmInN0cmluZyIhPXR5cGVvZiByLmRhdGEmJgooci5kYXRhPWQucGFyYW0oci5kYXRhLHIudHJhZGl0aW9uYWwpKSxFYihIYyxyLGIsUSksSylyZXR1cm4gUTtmb3IodCBpbihsPWQuZXZlbnQmJnIuZ2xvYmFsKSYmMD09ZC5hY3RpdmUrKyYmZC5ldmVudC50cmlnZ2VyKCJhamF4U3RhcnQiKSxyLnR5cGU9ci50eXBlLnRvVXBwZXJDYXNlKCksci5oYXNDb250ZW50PSFEZC50ZXN0KHIudHlwZSksZj1yLnVybC5yZXBsYWNlKEFkLCIiKSxyLmhhc0NvbnRlbnQ\/ci5kYXRhJiZyLnByb2Nlc3NEYXRhJiYwPT09KHIuY29udGVudFR5cGV8fCIiKS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSYmKHIuZGF0YT1yLmRhdGEucmVwbGFjZSh6ZCwiKyIpKToodz1yLnVybC5zbGljZShmLmxlbmd0aCksci5kYXRhJiYoci5wcm9jZXNzRGF0YXx8InN0cmluZyI9PXR5cGVvZiByLmRhdGEpJiYoZis9KGhjLnRlc3QoZik\/IiYiOiI\/Iikrci5kYXRhLGRlbGV0ZSByLmRhdGEpLCExPT09ci5jYWNoZSYmKGY9Zi5yZXBsYWNlKEJkLAoiJDEiKSx3PShoYy50ZXN0KGYpPyImIjoiPyIpKyJfPSIrRGMrKyArdyksci51cmw9Zit3KSxyLmlmTW9kaWZpZWQmJihkLmxhc3RNb2RpZmllZFtmXSYmUS5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Nb2RpZmllZC1TaW5jZSIsZC5sYXN0TW9kaWZpZWRbZl0pLGQuZXRhZ1tmXSYmUS5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Ob25lLU1hdGNoIixkLmV0YWdbZl0pKSwoci5kYXRhJiZyLmhhc0NvbnRlbnQmJiExIT09ci5jb250ZW50VHlwZXx8Yi5jb250ZW50VHlwZSkmJlEuc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIixyLmNvbnRlbnRUeXBlKSxRLnNldFJlcXVlc3RIZWFkZXIoIkFjY2VwdCIsci5kYXRhVHlwZXNbMF0mJnIuYWNjZXB0c1tyLmRhdGFUeXBlc1swXV0\/ci5hY2NlcHRzW3IuZGF0YVR5cGVzWzBdXSsoIioiIT09ci5kYXRhVHlwZXNbMF0\/IiwgIitJYysiOyBxPTAuMDEiOiIiKTpyLmFjY2VwdHNbIioiXSksci5oZWFkZXJzKVEuc2V0UmVxdWVzdEhlYWRlcih0LHIuaGVhZGVyc1t0XSk7CmlmKHIuYmVmb3JlU2VuZCYmKCExPT09ci5iZWZvcmVTZW5kLmNhbGwoeixRLHIpfHxLKSlyZXR1cm4gUS5hYm9ydCgpO2lmKFNhPSJhYm9ydCIsTy5hZGQoci5jb21wbGV0ZSksUS5kb25lKHIuc3VjY2VzcyksUS5mYWlsKHIuZXJyb3IpLGU9RWIoY2MscixiLFEpKXtpZihRLnJlYWR5U3RhdGU9MSxsJiZELnRyaWdnZXIoImFqYXhTZW5kIixbUSxyXSksSylyZXR1cm4gUTtyLmFzeW5jJiYwPHIudGltZW91dCYmKG09bi5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7US5hYm9ydCgidGltZW91dCIpfSxyLnRpbWVvdXQpKTt0cnl7dmFyIEs9ITE7ZS5zZW5kKEdhLGMpfWNhdGNoKFMpe2lmKEspdGhyb3cgUztjKC0xLFMpfX1lbHNlIGMoLTEsIk5vIFRyYW5zcG9ydCIpO3JldHVybiBRfSxnZXRKU09OOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZC5nZXQoYSxiLGMsImpzb24iKX0sZ2V0U2NyaXB0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGQuZ2V0KGEsdm9pZCAwLGIsInNjcmlwdCIpfX0pO2QuZWFjaChbImdldCIsCiJwb3N0Il0sZnVuY3Rpb24oYSxiKXtkW2JdPWZ1bmN0aW9uKGMsZSxmLGcpe3JldHVybiBNKGUpJiYoZz1nfHxmLGY9ZSxlPXZvaWQgMCksZC5hamF4KGQuZXh0ZW5kKHt1cmw6Yyx0eXBlOmIsZGF0YVR5cGU6ZyxkYXRhOmUsc3VjY2VzczpmfSxkLmlzUGxhaW5PYmplY3QoYykmJmMpKX19KTtkLmFqYXhQcmVmaWx0ZXIoZnVuY3Rpb24oYSl7Zm9yKHZhciBiIGluIGEuaGVhZGVycykiY29udGVudC10eXBlIj09PWIudG9Mb3dlckNhc2UoKSYmKGEuY29udGVudFR5cGU9YS5oZWFkZXJzW2JdfHwiIil9KTtkLl9ldmFsVXJsPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZC5hamF4KHt1cmw6YSx0eXBlOiJHRVQiLGRhdGFUeXBlOiJzY3JpcHQiLGNhY2hlOiEwLGFzeW5jOiExLGdsb2JhbDohMSxjb252ZXJ0ZXJzOnsidGV4dCBzY3JpcHQiOmZ1bmN0aW9uKCl7fX0sZGF0YUZpbHRlcjpmdW5jdGlvbihlKXtkLmdsb2JhbEV2YWwoZSxiLGMpfX0pfTtkLmZuLmV4dGVuZCh7d3JhcEFsbDpmdW5jdGlvbihhKXt2YXIgYjsKcmV0dXJuIHRoaXNbMF0mJihNKGEpJiYoYT1hLmNhbGwodGhpc1swXSkpLGI9ZChhLHRoaXNbMF0ub3duZXJEb2N1bWVudCkuZXEoMCkuY2xvbmUoITApLHRoaXNbMF0ucGFyZW50Tm9kZSYmYi5pbnNlcnRCZWZvcmUodGhpc1swXSksYi5tYXAoZnVuY3Rpb24oKXtmb3IodmFyIGM9dGhpcztjLmZpcnN0RWxlbWVudENoaWxkOyljPWMuZmlyc3RFbGVtZW50Q2hpbGQ7cmV0dXJuIGN9KS5hcHBlbmQodGhpcykpLHRoaXN9LHdyYXBJbm5lcjpmdW5jdGlvbihhKXtyZXR1cm4gTShhKT90aGlzLmVhY2goZnVuY3Rpb24oYil7ZCh0aGlzKS53cmFwSW5uZXIoYS5jYWxsKHRoaXMsYikpfSk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9ZCh0aGlzKSxjPWIuY29udGVudHMoKTtjLmxlbmd0aD9jLndyYXBBbGwoYSk6Yi5hcHBlbmQoYSl9KX0sd3JhcDpmdW5jdGlvbihhKXt2YXIgYj1NKGEpO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYyl7ZCh0aGlzKS53cmFwQWxsKGI\/YS5jYWxsKHRoaXMsCmMpOmEpfSl9LHVud3JhcDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wYXJlbnQoYSkubm90KCJib2R5IikuZWFjaChmdW5jdGlvbigpe2QodGhpcykucmVwbGFjZVdpdGgodGhpcy5jaGlsZE5vZGVzKX0pLHRoaXN9fSk7ZC5leHByLnBzZXVkb3MuaGlkZGVuPWZ1bmN0aW9uKGEpe3JldHVybiFkLmV4cHIucHNldWRvcy52aXNpYmxlKGEpfTtkLmV4cHIucHNldWRvcy52aXNpYmxlPWZ1bmN0aW9uKGEpe3JldHVybiEhKGEub2Zmc2V0V2lkdGh8fGEub2Zmc2V0SGVpZ2h0fHxhLmdldENsaWVudFJlY3RzKCkubGVuZ3RoKX07ZC5hamF4U2V0dGluZ3MueGhyPWZ1bmN0aW9uKCl7dHJ5e3JldHVybiBuZXcgbi5YTUxIdHRwUmVxdWVzdH1jYXRjaChhKXt9fTt2YXIgRmQ9ezA6MjAwLDEyMjM6MjA0fSxMYj1kLmFqYXhTZXR0aW5ncy54aHIoKTtOLmNvcnM9ISFMYiYmIndpdGhDcmVkZW50aWFscyJpbiBMYjtOLmFqYXg9TGI9ISFMYjtkLmFqYXhUcmFuc3BvcnQoZnVuY3Rpb24oYSl7dmFyIGIsCmM7aWYoTi5jb3JzfHxMYiYmIWEuY3Jvc3NEb21haW4pcmV0dXJue3NlbmQ6ZnVuY3Rpb24oZSxmKXt2YXIgZyxoPWEueGhyKCk7aWYoaC5vcGVuKGEudHlwZSxhLnVybCxhLmFzeW5jLGEudXNlcm5hbWUsYS5wYXNzd29yZCksYS54aHJGaWVsZHMpZm9yKGcgaW4gYS54aHJGaWVsZHMpaFtnXT1hLnhockZpZWxkc1tnXTtmb3IoZyBpbiBhLm1pbWVUeXBlJiZoLm92ZXJyaWRlTWltZVR5cGUmJmgub3ZlcnJpZGVNaW1lVHlwZShhLm1pbWVUeXBlKSxhLmNyb3NzRG9tYWlufHxlWyJYLVJlcXVlc3RlZC1XaXRoIl18fChlWyJYLVJlcXVlc3RlZC1XaXRoIl09IlhNTEh0dHBSZXF1ZXN0IiksZSloLnNldFJlcXVlc3RIZWFkZXIoZyxlW2ddKTtiPWZ1bmN0aW9uKG0pe3JldHVybiBmdW5jdGlvbigpe2ImJihiPWM9aC5vbmxvYWQ9aC5vbmVycm9yPWgub25hYm9ydD1oLm9udGltZW91dD1oLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLCJhYm9ydCI9PT1tP2guYWJvcnQoKToiZXJyb3IiPT09bT8KIm51bWJlciIhPXR5cGVvZiBoLnN0YXR1cz9mKDAsImVycm9yIik6ZihoLnN0YXR1cyxoLnN0YXR1c1RleHQpOmYoRmRbaC5zdGF0dXNdfHxoLnN0YXR1cyxoLnN0YXR1c1RleHQsInRleHQiIT09KGgucmVzcG9uc2VUeXBlfHwidGV4dCIpfHwic3RyaW5nIiE9dHlwZW9mIGgucmVzcG9uc2VUZXh0P3tiaW5hcnk6aC5yZXNwb25zZX06e3RleHQ6aC5yZXNwb25zZVRleHR9LGguZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpKX19O2gub25sb2FkPWIoKTtjPWgub25lcnJvcj1oLm9udGltZW91dD1iKCJlcnJvciIpO3ZvaWQgMCE9PWgub25hYm9ydD9oLm9uYWJvcnQ9YzpoLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpezQ9PT1oLnJlYWR5U3RhdGUmJm4uc2V0VGltZW91dChmdW5jdGlvbigpe2ImJmMoKX0pfTtiPWIoImFib3J0Iik7dHJ5e2guc2VuZChhLmhhc0NvbnRlbnQmJmEuZGF0YXx8bnVsbCl9Y2F0Y2gobSl7aWYoYil0aHJvdyBtO319LGFib3J0OmZ1bmN0aW9uKCl7YiYmCmIoKX19fSk7ZC5hamF4UHJlZmlsdGVyKGZ1bmN0aW9uKGEpe2EuY3Jvc3NEb21haW4mJihhLmNvbnRlbnRzLnNjcmlwdD0hMSl9KTtkLmFqYXhTZXR1cCh7YWNjZXB0czp7c2NyaXB0OiJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdCJ9LGNvbnRlbnRzOntzY3JpcHQ6L1xiKD86amF2YXxlY21hKXNjcmlwdFxiL30sY29udmVydGVyczp7InRleHQgc2NyaXB0IjpmdW5jdGlvbihhKXtyZXR1cm4gZC5nbG9iYWxFdmFsKGEpLGF9fX0pO2QuYWpheFByZWZpbHRlcigic2NyaXB0IixmdW5jdGlvbihhKXt2b2lkIDA9PT1hLmNhY2hlJiYoYS5jYWNoZT0hMSk7YS5jcm9zc0RvbWFpbiYmKGEudHlwZT0iR0VUIil9KTtkLmFqYXhUcmFuc3BvcnQoInNjcmlwdCIsZnVuY3Rpb24oYSl7dmFyIGIsYztpZihhLmNyb3NzRG9tYWlufHxhLnNjcmlwdEF0dHJzKXJldHVybntzZW5kOmZ1bmN0aW9uKGUsCmYpe2I9ZCgiPHNjcmlwdD4iKS5hdHRyKGEuc2NyaXB0QXR0cnN8fHt9KS5wcm9wKHtjaGFyc2V0OmEuc2NyaXB0Q2hhcnNldCxzcmM6YS51cmx9KS5vbigibG9hZCBlcnJvciIsYz1mdW5jdGlvbihnKXtiLnJlbW92ZSgpO2M9bnVsbDtnJiZmKCJlcnJvciI9PT1nLnR5cGU\/NDA0OjIwMCxnLnR5cGUpfSk7TC5oZWFkLmFwcGVuZENoaWxkKGJbMF0pfSxhYm9ydDpmdW5jdGlvbigpe2MmJmMoKX19fSk7dmFyIEpjLEtjPVtdLGpjPS8oPSlcPyg\/PSZ8JCl8XD9cPy87ZC5hamF4U2V0dXAoe2pzb25wOiJjYWxsYmFjayIsanNvbnBDYWxsYmFjazpmdW5jdGlvbigpe3ZhciBhPUtjLnBvcCgpfHxkLmV4cGFuZG8rIl8iK0RjKys7cmV0dXJuIHRoaXNbYV09ITAsYX19KTtkLmFqYXhQcmVmaWx0ZXIoImpzb24ganNvbnAiLGZ1bmN0aW9uKGEsYixjKXt2YXIgZSxmLGcsaD0hMSE9PWEuanNvbnAmJihqYy50ZXN0KGEudXJsKT8idXJsIjoic3RyaW5nIj09dHlwZW9mIGEuZGF0YSYmMD09PShhLmNvbnRlbnRUeXBlfHwKIiIpLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpJiZqYy50ZXN0KGEuZGF0YSkmJiJkYXRhIik7aWYoaHx8Impzb25wIj09PWEuZGF0YVR5cGVzWzBdKXJldHVybiBlPWEuanNvbnBDYWxsYmFjaz1NKGEuanNvbnBDYWxsYmFjayk\/YS5qc29ucENhbGxiYWNrKCk6YS5qc29ucENhbGxiYWNrLGg\/YVtoXT1hW2hdLnJlcGxhY2UoamMsIiQxIitlKTohMSE9PWEuanNvbnAmJihhLnVybCs9KGhjLnRlc3QoYS51cmwpPyImIjoiPyIpK2EuanNvbnArIj0iK2UpLGEuY29udmVydGVyc1sic2NyaXB0IGpzb24iXT1mdW5jdGlvbigpe3JldHVybiBnfHxkLmVycm9yKGUrIiB3YXMgbm90IGNhbGxlZCIpLGdbMF19LGEuZGF0YVR5cGVzWzBdPSJqc29uIixmPW5bZV0sbltlXT1mdW5jdGlvbigpe2c9YXJndW1lbnRzfSxjLmFsd2F5cyhmdW5jdGlvbigpe3ZvaWQgMD09PWY\/ZChuKS5yZW1vdmVQcm9wKGUpOm5bZV09ZjthW2VdJiYoYS5qc29ucENhbGxiYWNrPWIuanNvbnBDYWxsYmFjaywKS2MucHVzaChlKSk7ZyYmTShmKSYmZihnWzBdKTtnPWY9dm9pZCAwfSksInNjcmlwdCJ9KTtOLmNyZWF0ZUhUTUxEb2N1bWVudD0oKEpjPUwuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCIiKS5ib2R5KS5pbm5lckhUTUw9Ijxmb3JtPjwvZm9ybT48Zm9ybT48L2Zvcm0+IiwyPT09SmMuY2hpbGROb2Rlcy5sZW5ndGgpO2QucGFyc2VIVE1MPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGE\/W106KCJib29sZWFuIj09dHlwZW9mIGImJihjPWIsYj0hMSksYnx8KE4uY3JlYXRlSFRNTERvY3VtZW50PygoZT0oYj1MLmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgiIikpLmNyZWF0ZUVsZW1lbnQoImJhc2UiKSkuaHJlZj1MLmxvY2F0aW9uLmhyZWYsYi5oZWFkLmFwcGVuZENoaWxkKGUpKTpiPUwpLGc9IWMmJltdLChmPXljLmV4ZWMoYSkpP1tiLmNyZWF0ZUVsZW1lbnQoZlsxXSldOihmPVJiKFthXSxiLGcpLGcmJmcubGVuZ3RoJiZkKGcpLnJlbW92ZSgpLApkLm1lcmdlKFtdLGYuY2hpbGROb2RlcykpKTt2YXIgZSxmLGd9O2QuZm4ubG9hZD1mdW5jdGlvbihhLGIsYyl7dmFyIGUsZixnLGg9dGhpcyxtPWEuaW5kZXhPZigiICIpO3JldHVybi0xPG0mJihlPUMoYS5zbGljZShtKSksYT1hLnNsaWNlKDAsbSkpLE0oYik\/KGM9YixiPXZvaWQgMCk6YiYmIm9iamVjdCI9PXR5cGVvZiBiJiYoZj0iUE9TVCIpLDA8aC5sZW5ndGgmJmQuYWpheCh7dXJsOmEsdHlwZTpmfHwiR0VUIixkYXRhVHlwZToiaHRtbCIsZGF0YTpifSkuZG9uZShmdW5jdGlvbihsKXtnPWFyZ3VtZW50cztoLmh0bWwoZT9kKCI8ZGl2PiIpLmFwcGVuZChkLnBhcnNlSFRNTChsKSkuZmluZChlKTpsKX0pLmFsd2F5cyhjJiZmdW5jdGlvbihsLHQpe2guZWFjaChmdW5jdGlvbigpe2MuYXBwbHkodGhpcyxnfHxbbC5yZXNwb25zZVRleHQsdCxsXSl9KX0pLHRoaXN9O2QuZXhwci5wc2V1ZG9zLmFuaW1hdGVkPWZ1bmN0aW9uKGEpe3JldHVybiBkLmdyZXAoZC50aW1lcnMsZnVuY3Rpb24oYil7cmV0dXJuIGE9PT0KYi5lbGVtfSkubGVuZ3RofTtkLm9mZnNldD17c2V0T2Zmc2V0OmZ1bmN0aW9uKGEsYixjKXt2YXIgZSxmLGcsaD1kLmNzcyhhLCJwb3NpdGlvbiIpLG09ZChhKSxsPXt9OyJzdGF0aWMiPT09aCYmKGEuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIik7dmFyIHQ9bS5vZmZzZXQoKSx3PWQuY3NzKGEsInRvcCIpLHI9ZC5jc3MoYSwibGVmdCIpOygiYWJzb2x1dGUiPT09aHx8ImZpeGVkIj09PWgpJiYtMTwodytyKS5pbmRleE9mKCJhdXRvIik\/KGc9KGU9bS5wb3NpdGlvbigpKS50b3AsZj1lLmxlZnQpOihnPXBhcnNlRmxvYXQodyl8fDAsZj1wYXJzZUZsb2F0KHIpfHwwKTtNKGIpJiYoYj1iLmNhbGwoYSxjLGQuZXh0ZW5kKHt9LHQpKSk7bnVsbCE9Yi50b3AmJihsLnRvcD1iLnRvcC10LnRvcCtnKTtudWxsIT1iLmxlZnQmJihsLmxlZnQ9Yi5sZWZ0LXQubGVmdCtmKTsidXNpbmciaW4gYj9iLnVzaW5nLmNhbGwoYSxsKTptLmNzcyhsKX19O2QuZm4uZXh0ZW5kKHtvZmZzZXQ6ZnVuY3Rpb24oYSl7aWYoYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdm9pZCAwPT09CmE\/dGhpczp0aGlzLmVhY2goZnVuY3Rpb24oZil7ZC5vZmZzZXQuc2V0T2Zmc2V0KHRoaXMsYSxmKX0pO3ZhciBiLGMsZT10aGlzWzBdO3JldHVybiBlP2UuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGg\/KGI9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxjPWUub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldyx7dG9wOmIudG9wK2MucGFnZVlPZmZzZXQsbGVmdDpiLmxlZnQrYy5wYWdlWE9mZnNldH0pOnt0b3A6MCxsZWZ0OjB9OnZvaWQgMH0scG9zaXRpb246ZnVuY3Rpb24oKXtpZih0aGlzWzBdKXt2YXIgYSxiPXRoaXNbMF0sYz17dG9wOjAsbGVmdDowfTtpZigiZml4ZWQiPT09ZC5jc3MoYiwicG9zaXRpb24iKSl2YXIgZT1iLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2Vsc2V7ZT10aGlzLm9mZnNldCgpO3ZhciBmPWIub3duZXJEb2N1bWVudDtmb3IoYT1iLm9mZnNldFBhcmVudHx8Zi5kb2N1bWVudEVsZW1lbnQ7YSYmKGE9PT1mLmJvZHl8fGE9PT1mLmRvY3VtZW50RWxlbWVudCkmJgoic3RhdGljIj09PWQuY3NzKGEsInBvc2l0aW9uIik7KWE9YS5wYXJlbnROb2RlO2EmJmEhPT1iJiYxPT09YS5ub2RlVHlwZSYmKChjPWQoYSkub2Zmc2V0KCkpLnRvcCs9ZC5jc3MoYSwiYm9yZGVyVG9wV2lkdGgiLCEwKSxjLmxlZnQrPWQuY3NzKGEsImJvcmRlckxlZnRXaWR0aCIsITApKX1yZXR1cm57dG9wOmUudG9wLWMudG9wLWQuY3NzKGIsIm1hcmdpblRvcCIsITApLGxlZnQ6ZS5sZWZ0LWMubGVmdC1kLmNzcyhiLCJtYXJnaW5MZWZ0IiwhMCl9fX0sb2Zmc2V0UGFyZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7Zm9yKHZhciBhPXRoaXMub2Zmc2V0UGFyZW50O2EmJiJzdGF0aWMiPT09ZC5jc3MoYSwicG9zaXRpb24iKTspYT1hLm9mZnNldFBhcmVudDtyZXR1cm4gYXx8amJ9KX19KTtkLmVhY2goe3Njcm9sbExlZnQ6InBhZ2VYT2Zmc2V0IixzY3JvbGxUb3A6InBhZ2VZT2Zmc2V0In0sZnVuY3Rpb24oYSxiKXt2YXIgYz0icGFnZVlPZmZzZXQiPT09CmI7ZC5mblthXT1mdW5jdGlvbihlKXtyZXR1cm4gWGEodGhpcyxmdW5jdGlvbihmLGcsaCl7dmFyIG07aWYoa2IoZik\/bT1mOjk9PT1mLm5vZGVUeXBlJiYobT1mLmRlZmF1bHRWaWV3KSx2b2lkIDA9PT1oKXJldHVybiBtP21bYl06ZltnXTttP20uc2Nyb2xsVG8oYz9tLnBhZ2VYT2Zmc2V0OmgsYz9oOm0ucGFnZVlPZmZzZXQpOmZbZ109aH0sYSxlLGFyZ3VtZW50cy5sZW5ndGgpfX0pO2QuZWFjaChbInRvcCIsImxlZnQiXSxmdW5jdGlvbihhLGIpe2QuY3NzSG9va3NbYl09VmIoTi5waXhlbFBvc2l0aW9uLGZ1bmN0aW9uKGMsZSl7aWYoZSlyZXR1cm4gZT1LYShjLGIpLGJjLnRlc3QoZSk\/ZChjKS5wb3NpdGlvbigpW2JdKyJweCI6ZX0pfSk7ZC5lYWNoKHtIZWlnaHQ6ImhlaWdodCIsV2lkdGg6IndpZHRoIn0sZnVuY3Rpb24oYSxiKXtkLmVhY2goe3BhZGRpbmc6ImlubmVyIithLGNvbnRlbnQ6YiwiIjoib3V0ZXIiK2F9LGZ1bmN0aW9uKGMsZSl7ZC5mbltlXT1mdW5jdGlvbihmLApnKXt2YXIgaD1hcmd1bWVudHMubGVuZ3RoJiYoY3x8ImJvb2xlYW4iIT10eXBlb2YgZiksbT1jfHwoITA9PT1mfHwhMD09PWc\/Im1hcmdpbiI6ImJvcmRlciIpO3JldHVybiBYYSh0aGlzLGZ1bmN0aW9uKGwsdCx3KXt2YXIgcjtyZXR1cm4ga2IobCk\/MD09PWUuaW5kZXhPZigib3V0ZXIiKT9sWyJpbm5lciIrYV06bC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrYV06OT09PWwubm9kZVR5cGU\/KHI9bC5kb2N1bWVudEVsZW1lbnQsTWF0aC5tYXgobC5ib2R5WyJzY3JvbGwiK2FdLHJbInNjcm9sbCIrYV0sbC5ib2R5WyJvZmZzZXQiK2FdLHJbIm9mZnNldCIrYV0sclsiY2xpZW50IithXSkpOnZvaWQgMD09PXc\/ZC5jc3MobCx0LG0pOmQuc3R5bGUobCx0LHcsbSl9LGIsaD9mOnZvaWQgMCxoKX19KX0pO2QuZWFjaCgiYWpheFN0YXJ0IGFqYXhTdG9wIGFqYXhDb21wbGV0ZSBhamF4RXJyb3IgYWpheFN1Y2Nlc3MgYWpheFNlbmQiLnNwbGl0KCIgIiksZnVuY3Rpb24oYSwKYil7ZC5mbltiXT1mdW5jdGlvbihjKXtyZXR1cm4gdGhpcy5vbihiLGMpfX0pO2QuZm4uZXh0ZW5kKHtiaW5kOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdGhpcy5vbihhLG51bGwsYixjKX0sdW5iaW5kOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMub2ZmKGEsbnVsbCxiKX0sZGVsZWdhdGU6ZnVuY3Rpb24oYSxiLGMsZSl7cmV0dXJuIHRoaXMub24oYixhLGMsZSl9LHVuZGVsZWdhdGU6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD90aGlzLm9mZihhLCIqKiIpOnRoaXMub2ZmKGIsYXx8IioqIixjKX0saG92ZXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5tb3VzZWVudGVyKGEpLm1vdXNlbGVhdmUoYnx8YSl9fSk7ZC5lYWNoKCJibHVyIGZvY3VzIGZvY3VzaW4gZm9jdXNvdXQgcmVzaXplIHNjcm9sbCBjbGljayBkYmxjbGljayBtb3VzZWRvd24gbW91c2V1cCBtb3VzZW1vdmUgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSBjaGFuZ2Ugc2VsZWN0IHN1Ym1pdCBrZXlkb3duIGtleXByZXNzIGtleXVwIGNvbnRleHRtZW51Ii5zcGxpdCgiICIpLApmdW5jdGlvbihhLGIpe2QuZm5bYl09ZnVuY3Rpb24oYyxlKXtyZXR1cm4gMDxhcmd1bWVudHMubGVuZ3RoP3RoaXMub24oYixudWxsLGMsZSk6dGhpcy50cmlnZ2VyKGIpfX0pO3ZhciBHZD0vXltcc1x1RkVGRlx4QTBdK3woW15cc1x1RkVGRlx4QTBdKVtcc1x1RkVGRlx4QTBdKyQvZztkLnByb3h5PWZ1bmN0aW9uKGEsYil7dmFyIGMsZSxmO2lmKCJzdHJpbmciPT10eXBlb2YgYiYmKGM9YVtiXSxiPWEsYT1jKSxNKGEpKXJldHVybiBlPXlhLmNhbGwoYXJndW1lbnRzLDIpLChmPWZ1bmN0aW9uKCl7cmV0dXJuIGEuYXBwbHkoYnx8dGhpcyxlLmNvbmNhdCh5YS5jYWxsKGFyZ3VtZW50cykpKX0pLmd1aWQ9YS5ndWlkPWEuZ3VpZHx8ZC5ndWlkKyssZn07ZC5ob2xkUmVhZHk9ZnVuY3Rpb24oYSl7YT9kLnJlYWR5V2FpdCsrOmQucmVhZHkoITApfTtkLmlzQXJyYXk9QXJyYXkuaXNBcnJheTtkLnBhcnNlSlNPTj1KU09OLnBhcnNlO2Qubm9kZU5hbWU9WDtkLmlzRnVuY3Rpb249TTtkLmlzV2luZG93PQprYjtkLmNhbWVsQ2FzZT1CYTtkLnR5cGU9VTtkLm5vdz1EYXRlLm5vdztkLmlzTnVtZXJpYz1mdW5jdGlvbihhKXt2YXIgYj1kLnR5cGUoYSk7cmV0dXJuKCJudW1iZXIiPT09Ynx8InN0cmluZyI9PT1iKSYmIWlzTmFOKGEtcGFyc2VGbG9hdChhKSl9O2QudHJpbT1mdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YT8iIjooYSsiIikucmVwbGFjZShHZCwiJDEiKX07ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZCYmZGVmaW5lKCJqcXVlcnkiLFtdLGZ1bmN0aW9uKCl7cmV0dXJuIGR9KTt2YXIgSGQ9bi5qUXVlcnksSWQ9bi4kO3JldHVybiBkLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oYSl7cmV0dXJuIG4uJD09PWQmJihuLiQ9SWQpLGEmJm4ualF1ZXJ5PT09ZCYmKG4ualF1ZXJ5PUhkKSxkfSwidW5kZWZpbmVkIj09dHlwZW9mIGRhJiYobi5qUXVlcnk9bi4kPWQpLGR9KTt2YXIgbWF0Y2hlZCxicm93c2VyOwpqUXVlcnkudWFNYXRjaD1mdW5jdGlvbihuKXtuPW4udG9Mb3dlckNhc2UoKTtuPS8oY2hyb21lKVsgXC9dKFtcdy5dKykvLmV4ZWMobil8fC8od2Via2l0KVsgXC9dKFtcdy5dKykvLmV4ZWMobil8fC8ob3BlcmEpKD86Lip2ZXJzaW9ufClbIFwvXShbXHcuXSspLy5leGVjKG4pfHwvKG1zaWUpIChbXHcuXSspLy5leGVjKG4pfHwwPm4uaW5kZXhPZigiY29tcGF0aWJsZSIpJiYvKG1vemlsbGEpKD86Lio\/IHJ2OihbXHcuXSspfCkvLmV4ZWMobil8fFtdO3JldHVybnticm93c2VyOm5bMV18fCIiLHZlcnNpb246blsyXXx8IjAifX07bWF0Y2hlZD1qUXVlcnkudWFNYXRjaChuYXZpZ2F0b3IudXNlckFnZW50KTticm93c2VyPXt9O21hdGNoZWQuYnJvd3NlciYmKGJyb3dzZXJbbWF0Y2hlZC5icm93c2VyXT0hMCxicm93c2VyLnZlcnNpb249bWF0Y2hlZC52ZXJzaW9uKTticm93c2VyLmNocm9tZT9icm93c2VyLndlYmtpdD0hMDpicm93c2VyLndlYmtpdCYmKGJyb3dzZXIuc2FmYXJpPSEwKTsKalF1ZXJ5LmJyb3dzZXI9YnJvd3NlcjsKKGZ1bmN0aW9uKG4peyJmdW5jdGlvbiI9PT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbImpxdWVyeSJdLGZ1bmN0aW9uKGRhKXtyZXR1cm4gbihkYSx3aW5kb3cpfSk6Im9iamVjdCI9PT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz1uKHJlcXVpcmUoImpxdWVyeSIpLHdpbmRvdyk6bihqUXVlcnksd2luZG93KX0pKGZ1bmN0aW9uKG4sZGEpe2Z1bmN0aW9uIHdhKHUpe2E6e3ZhciB4PS9eKFxkKylcLihcZCspXC4oXGQrKS8sQz14LmV4ZWMobi5mbi5qcXVlcnkpfHxbXTt4PXguZXhlYyh1KXx8W107Zm9yKHU9MTszPj11O3UrKyl7aWYoK0NbdV0+K3hbdV0pe0M9MTticmVhayBhfWlmKCtDW3VdPCt4W3VdKXtDPS0xO2JyZWFrIGF9fUM9MH1yZXR1cm4gMDw9Q31mdW5jdGlvbiBVKHUseCl7dmFyIEM9ZGEuY29uc29sZTshbi5taWdyYXRlSXNQYXRjaEVuYWJsZWQodSl8fG4ubWlncmF0ZURlZHVwbGljYXRlV2FybmluZ3MmJm1iW3hdfHwKKG1iW3hdPSEwLG4ubWlncmF0ZVdhcm5pbmdzLnB1c2goeCsiIFsiK3UrIl0iKSxDJiZDLndhcm4mJiFuLm1pZ3JhdGVNdXRlJiYoQy53YXJuKCJKUU1JR1JBVEU6ICIreCksbi5taWdyYXRlVHJhY2UmJkMudHJhY2UmJkMudHJhY2UoKSkpfWZ1bmN0aW9uIGViKHUseCxDLEgsUCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHUseCx7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7VShILFApO3JldHVybiBDfSxzZXQ6ZnVuY3Rpb24oZWEpe1UoSCxQKTtDPWVhfX0pfWZ1bmN0aW9uIFgodSx4LEMsSCxQKXt2YXIgZWEsUWE9dVt4XTt1W3hdPWZ1bmN0aW9uKCl7UCYmVShILFApO2VhPW4ubWlncmF0ZUlzUGF0Y2hFbmFibGVkKEgpP0M6UWF8fG4ubm9vcDtyZXR1cm4gZWEuYXBwbHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiBiYSh1LHgsQyxILFApe2lmKCFQKXRocm93IEVycm9yKCJObyB3YXJuaW5nIG1lc3NhZ2UgcHJvdmlkZWQiKTtyZXR1cm4gWCh1LAp4LEMsSCxQKX1mdW5jdGlvbiBqYSh1LHgsQyxIKXtyZXR1cm4gWCh1LHgsQyxIKX1mdW5jdGlvbiBsYih1KXtyZXR1cm4gdS5yZXBsYWNlKC8tKFthLXpdKS9nLGZ1bmN0aW9uKHgsQyl7cmV0dXJuIEMudG9VcHBlckNhc2UoKX0pfWZ1bmN0aW9uIFlhKHUpe3JldHVybiBwYi50ZXN0KHUpJiZTYi50ZXN0KHVbMF0udG9VcHBlckNhc2UoKSt1LnNsaWNlKDEpKX1uLm1pZ3JhdGVWZXJzaW9uPSIzLjQuMSI7dmFyIFphPU9iamVjdC5jcmVhdGUobnVsbCk7bi5taWdyYXRlRGlzYWJsZVBhdGNoZXM9ZnVuY3Rpb24oKXt2YXIgdTtmb3IodT0wO3U8YXJndW1lbnRzLmxlbmd0aDt1KyspWmFbYXJndW1lbnRzW3VdXT0hMH07bi5taWdyYXRlRW5hYmxlUGF0Y2hlcz1mdW5jdGlvbigpe3ZhciB1O2Zvcih1PTA7dTxhcmd1bWVudHMubGVuZ3RoO3UrKylkZWxldGUgWmFbYXJndW1lbnRzW3VdXX07bi5taWdyYXRlSXNQYXRjaEVuYWJsZWQ9ZnVuY3Rpb24odSl7cmV0dXJuIVphW3VdfTtkYS5jb25zb2xlJiYKZGEuY29uc29sZS5sb2cmJihuJiZ3YSgiMy4wLjAiKSYmIXdhKCI1LjAuMCIpfHxkYS5jb25zb2xlLmxvZygiSlFNSUdSQVRFOiBqUXVlcnkgMy54LTQueCBSRVFVSVJFRCIpLG4ubWlncmF0ZVdhcm5pbmdzJiZkYS5jb25zb2xlLmxvZygiSlFNSUdSQVRFOiBNaWdyYXRlIHBsdWdpbiBsb2FkZWQgbXVsdGlwbGUgdGltZXMiKSxkYS5jb25zb2xlLmxvZygiSlFNSUdSQVRFOiBNaWdyYXRlIGlzIGluc3RhbGxlZCIrKG4ubWlncmF0ZU11dGU\/IiI6IiB3aXRoIGxvZ2dpbmcgYWN0aXZlIikrIiwgdmVyc2lvbiAiK24ubWlncmF0ZVZlcnNpb24pKTt2YXIgbWI9e307bi5taWdyYXRlRGVkdXBsaWNhdGVXYXJuaW5ncz0hMDtuLm1pZ3JhdGVXYXJuaW5ncz1bXTt2b2lkIDA9PT1uLm1pZ3JhdGVUcmFjZSYmKG4ubWlncmF0ZVRyYWNlPSEwKTtuLm1pZ3JhdGVSZXNldD1mdW5jdGlvbigpe21iPXt9O24ubWlncmF0ZVdhcm5pbmdzLmxlbmd0aD0wfTsiQmFja0NvbXBhdCI9PT1kYS5kb2N1bWVudC5jb21wYXRNb2RlJiYKVSgicXVpcmtzIiwialF1ZXJ5IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggUXVpcmtzIE1vZGUiKTt2YXIgT2EsTmI9e30sQmE9bi5mbi5pbml0LEphPW4uZmluZCxPYj0vXFsoXHMqWy1cd10rXHMqKShbfnxeJCpdPz0pXHMqKFstXHcjXSo\/I1stXHcjXSopXHMqXF0vLFBiPS9cWyhccypbLVx3XStccyopKFt+fF4kKl0\/PSlccyooWy1cdyNdKj8jWy1cdyNdKilccypcXS9nLCRhPS9eW1xzXHVGRUZGXHhBMF0rfChbXlxzXHVGRUZGXHhBMF0pW1xzXHVGRUZGXHhBMF0rJC9nO2phKG4uZm4sImluaXQiLGZ1bmN0aW9uKHUpe3ZhciB4PUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7bi5taWdyYXRlSXNQYXRjaEVuYWJsZWQoInNlbGVjdG9yLWVtcHR5LWlkIikmJiJzdHJpbmciPT09dHlwZW9mIHUmJiIjIj09PXUmJihVKCJzZWxlY3Rvci1lbXB0eS1pZCIsImpRdWVyeSggJyMnICkgaXMgbm90IGEgdmFsaWQgc2VsZWN0b3IiKSx4WzBdPVtdKTtyZXR1cm4gQmEuYXBwbHkodGhpcywKeCl9LCJzZWxlY3Rvci1lbXB0eS1pZCIpO24uZm4uaW5pdC5wcm90b3R5cGU9bi5mbjtqYShuLCJmaW5kIixmdW5jdGlvbih1KXt2YXIgeD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO2lmKCJzdHJpbmciPT09dHlwZW9mIHUmJk9iLnRlc3QodSkpdHJ5e2RhLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodSl9Y2F0Y2goQyl7dT11LnJlcGxhY2UoUGIsZnVuY3Rpb24oSCxQLGVhLFFhKXtyZXR1cm4iWyIrUCtlYSsnIicrUWErJyJdJ30pO3RyeXtkYS5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKHUpLFUoInNlbGVjdG9yLWhhc2giLCJBdHRyaWJ1dGUgc2VsZWN0b3Igd2l0aCAnIycgbXVzdCBiZSBxdW90ZWQ6ICIreFswXSkseFswXT11fWNhdGNoKEgpe1UoInNlbGVjdG9yLWhhc2giLCJBdHRyaWJ1dGUgc2VsZWN0b3Igd2l0aCAnIycgd2FzIG5vdCBmaXhlZDogIit4WzBdKX19cmV0dXJuIEphLmFwcGx5KHRoaXMseCl9LCJzZWxlY3Rvci1oYXNoIik7Zm9yKE9hIGluIEphKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChKYSwKT2EpJiYobi5maW5kW09hXT1KYVtPYV0pO2JhKG4uZm4sInNpemUiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGVuZ3RofSwic2l6ZSIsImpRdWVyeS5mbi5zaXplKCkgaXMgZGVwcmVjYXRlZCBhbmQgcmVtb3ZlZDsgdXNlIHRoZSAubGVuZ3RoIHByb3BlcnR5Iik7YmEobiwicGFyc2VKU09OIixmdW5jdGlvbigpe3JldHVybiBKU09OLnBhcnNlLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sInBhcnNlSlNPTiIsImpRdWVyeS5wYXJzZUpTT04gaXMgZGVwcmVjYXRlZDsgdXNlIEpTT04ucGFyc2UiKTtiYShuLCJob2xkUmVhZHkiLG4uaG9sZFJlYWR5LCJob2xkUmVhZHkiLCJqUXVlcnkuaG9sZFJlYWR5IGlzIGRlcHJlY2F0ZWQiKTtiYShuLCJ1bmlxdWUiLG4udW5pcXVlU29ydCwidW5pcXVlIiwialF1ZXJ5LnVuaXF1ZSBpcyBkZXByZWNhdGVkOyB1c2UgalF1ZXJ5LnVuaXF1ZVNvcnQiKTtlYihuLmV4cHIsImZpbHRlcnMiLG4uZXhwci5wc2V1ZG9zLCJleHByLXByZS1wc2V1ZG9zIiwialF1ZXJ5LmV4cHIuZmlsdGVycyBpcyBkZXByZWNhdGVkOyB1c2UgalF1ZXJ5LmV4cHIucHNldWRvcyIpOwplYihuLmV4cHIsIjoiLG4uZXhwci5wc2V1ZG9zLCJleHByLXByZS1wc2V1ZG9zIiwialF1ZXJ5LmV4cHJbJzonXSBpcyBkZXByZWNhdGVkOyB1c2UgalF1ZXJ5LmV4cHIucHNldWRvcyIpO3dhKCIzLjEuMSIpJiZiYShuLCJ0cmltIixmdW5jdGlvbih1KXtyZXR1cm4gbnVsbD09dT8iIjoodSsiIikucmVwbGFjZSgkYSwiJDEiKX0sInRyaW0iLCJqUXVlcnkudHJpbSBpcyBkZXByZWNhdGVkOyB1c2UgU3RyaW5nLnByb3RvdHlwZS50cmltIik7d2EoIjMuMi4wIikmJihiYShuLCJub2RlTmFtZSIsZnVuY3Rpb24odSx4KXtyZXR1cm4gdS5ub2RlTmFtZSYmdS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09eC50b0xvd2VyQ2FzZSgpfSwibm9kZU5hbWUiLCJqUXVlcnkubm9kZU5hbWUgaXMgZGVwcmVjYXRlZCIpLGJhKG4sImlzQXJyYXkiLEFycmF5LmlzQXJyYXksImlzQXJyYXkiLCJqUXVlcnkuaXNBcnJheSBpcyBkZXByZWNhdGVkOyB1c2UgQXJyYXkuaXNBcnJheSIpKTt3YSgiMy4zLjAiKSYmCihiYShuLCJpc051bWVyaWMiLGZ1bmN0aW9uKHUpe3ZhciB4PXR5cGVvZiB1O3JldHVybigibnVtYmVyIj09PXh8fCJzdHJpbmciPT09eCkmJiFpc05hTih1LXBhcnNlRmxvYXQodSkpfSwiaXNOdW1lcmljIiwialF1ZXJ5LmlzTnVtZXJpYygpIGlzIGRlcHJlY2F0ZWQiKSxuLmVhY2goIkJvb2xlYW4gTnVtYmVyIFN0cmluZyBGdW5jdGlvbiBBcnJheSBEYXRlIFJlZ0V4cCBPYmplY3QgRXJyb3IgU3ltYm9sIi5zcGxpdCgiICIpLGZ1bmN0aW9uKHUseCl7TmJbIltvYmplY3QgIit4KyJdIl09eC50b0xvd2VyQ2FzZSgpfSksYmEobiwidHlwZSIsZnVuY3Rpb24odSl7cmV0dXJuIG51bGw9PXU\/dSsiIjoib2JqZWN0Ij09PXR5cGVvZiB1fHwiZnVuY3Rpb24iPT09dHlwZW9mIHU\/TmJbT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHUpXXx8Im9iamVjdCI6dHlwZW9mIHV9LCJ0eXBlIiwialF1ZXJ5LnR5cGUgaXMgZGVwcmVjYXRlZCIpLGJhKG4sImlzRnVuY3Rpb24iLGZ1bmN0aW9uKHUpe3JldHVybiJmdW5jdGlvbiI9PT0KdHlwZW9mIHV9LCJpc0Z1bmN0aW9uIiwialF1ZXJ5LmlzRnVuY3Rpb24oKSBpcyBkZXByZWNhdGVkIiksYmEobiwiaXNXaW5kb3ciLGZ1bmN0aW9uKHUpe3JldHVybiBudWxsIT11JiZ1PT09dS53aW5kb3d9LCJpc1dpbmRvdyIsImpRdWVyeS5pc1dpbmRvdygpIGlzIGRlcHJlY2F0ZWQiKSk7aWYobi5hamF4KXt2YXIgc2E9bi5hamF4LG5iPS8oPSlcPyg\/PSZ8JCl8XD9cPy87amEobiwiYWpheCIsZnVuY3Rpb24oKXt2YXIgdT1zYS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dS5wcm9taXNlJiYoYmEodSwic3VjY2VzcyIsdS5kb25lLCJqcVhIUi1tZXRob2RzIiwialFYSFIuc3VjY2VzcyBpcyBkZXByZWNhdGVkIGFuZCByZW1vdmVkIiksYmEodSwiZXJyb3IiLHUuZmFpbCwianFYSFItbWV0aG9kcyIsImpRWEhSLmVycm9yIGlzIGRlcHJlY2F0ZWQgYW5kIHJlbW92ZWQiKSxiYSh1LCJjb21wbGV0ZSIsdS5hbHdheXMsImpxWEhSLW1ldGhvZHMiLCJqUVhIUi5jb21wbGV0ZSBpcyBkZXByZWNhdGVkIGFuZCByZW1vdmVkIikpOwpyZXR1cm4gdX0sImpxWEhSLW1ldGhvZHMiKTt3YSgiNC4wLjAiKXx8bi5hamF4UHJlZmlsdGVyKCIranNvbiIsZnVuY3Rpb24odSl7ITEhPT11Lmpzb25wJiYobmIudGVzdCh1LnVybCl8fCJzdHJpbmciPT09dHlwZW9mIHUuZGF0YSYmMD09PSh1LmNvbnRlbnRUeXBlfHwiIikuaW5kZXhPZigiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIikmJm5iLnRlc3QodS5kYXRhKSkmJlUoImpzb25wLXByb21vdGlvbiIsIkpTT04tdG8tSlNPTlAgYXV0by1wcm9tb3Rpb24gaXMgZGVwcmVjYXRlZCIpfSl9dmFyIFJiPW4uZm4ucmVtb3ZlQXR0cixhYj1uLmZuLnRvZ2dsZUNsYXNzLGJiPS9cUysvZztqYShuLmZuLCJyZW1vdmVBdHRyIixmdW5jdGlvbih1KXt2YXIgeD10aGlzLEM9ITE7bi5lYWNoKHUubWF0Y2goYmIpLGZ1bmN0aW9uKEgsUCl7bi5leHByLm1hdGNoLmJvb2wudGVzdChQKSYmeC5lYWNoKGZ1bmN0aW9uKCl7aWYoITEhPT1uKHRoaXMpLnByb3AoUCkpcmV0dXJuIEM9CiEwLCExfSk7QyYmKFUoInJlbW92ZUF0dHItYm9vbCIsImpRdWVyeS5mbi5yZW1vdmVBdHRyIG5vIGxvbmdlciBzZXRzIGJvb2xlYW4gcHJvcGVydGllczogIitQKSx4LnByb3AoUCwhMSkpfSk7cmV0dXJuIFJiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sInJlbW92ZUF0dHItYm9vbCIpO2phKG4uZm4sInRvZ2dsZUNsYXNzIixmdW5jdGlvbih1KXtpZih2b2lkIDAhPT11JiYiYm9vbGVhbiIhPT10eXBlb2YgdSlyZXR1cm4gYWIuYXBwbHkodGhpcyxhcmd1bWVudHMpO1UoInRvZ2dsZUNsYXNzLWJvb2wiLCJqUXVlcnkuZm4udG9nZ2xlQ2xhc3MoIGJvb2xlYW4gKSBpcyBkZXByZWNhdGVkIik7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciB4PXRoaXMuZ2V0QXR0cmlidXRlJiZ0aGlzLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiI7eCYmbi5kYXRhKHRoaXMsIl9fY2xhc3NOYW1lX18iLHgpO3RoaXMuc2V0QXR0cmlidXRlJiZ0aGlzLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHh8fAohMT09PXU\/IiI6bi5kYXRhKHRoaXMsIl9fY2xhc3NOYW1lX18iKXx8IiIpfSl9LCJ0b2dnbGVDbGFzcy1ib29sIik7dmFyIGZiPSExLHBiPS9eW2Etel0vLFNiPS9eKD86Qm9yZGVyKD86VG9wfFJpZ2h0fEJvdHRvbXxMZWZ0KT8oPzpXaWR0aHwpfCg\/Ok1hcmdpbnxQYWRkaW5nKT8oPzpUb3B8UmlnaHR8Qm90dG9tfExlZnQpP3woPzpNaW58TWF4KT8oPzpXaWR0aHxIZWlnaHQpKSQvO24uc3dhcCYmbi5lYWNoKFsiaGVpZ2h0Iiwid2lkdGgiLCJyZWxpYWJsZU1hcmdpblJpZ2h0Il0sZnVuY3Rpb24odSx4KXt2YXIgQz1uLmNzc0hvb2tzW3hdJiZuLmNzc0hvb2tzW3hdLmdldDtDJiYobi5jc3NIb29rc1t4XS5nZXQ9ZnVuY3Rpb24oKXtmYj0hMDt2YXIgSD1DLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtmYj0hMTtyZXR1cm4gSH0pfSk7amEobiwic3dhcCIsZnVuY3Rpb24odSx4LEMsSCl7dmFyIFAsZWE9e307ZmJ8fFUoInN3YXAiLCJqUXVlcnkuc3dhcCgpIGlzIHVuZG9jdW1lbnRlZCBhbmQgZGVwcmVjYXRlZCIpOwpmb3IoUCBpbiB4KWVhW1BdPXUuc3R5bGVbUF0sdS5zdHlsZVtQXT14W1BdO0M9Qy5hcHBseSh1LEh8fFtdKTtmb3IoUCBpbiB4KXUuc3R5bGVbUF09ZWFbUF07cmV0dXJuIEN9LCJzd2FwIik7d2EoIjMuNC4wIikmJiJ1bmRlZmluZWQiIT09dHlwZW9mIFByb3h5JiYobi5jc3NQcm9wcz1uZXcgUHJveHkobi5jc3NQcm9wc3x8e30se3NldDpmdW5jdGlvbigpe1UoImNzc1Byb3BzIiwialF1ZXJ5LmNzc1Byb3BzIGlzIGRlcHJlY2F0ZWQiKTtyZXR1cm4gUmVmbGVjdC5zZXQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0pKTtpZih3YSgiNC4wLjAiKSl7dmFyIHFiPXthbmltYXRpb25JdGVyYXRpb25Db3VudDohMCxjb2x1bW5Db3VudDohMCxmaWxsT3BhY2l0eTohMCxmbGV4R3JvdzohMCxmbGV4U2hyaW5rOiEwLGZvbnRXZWlnaHQ6ITAsZ3JpZEFyZWE6ITAsZ3JpZENvbHVtbjohMCxncmlkQ29sdW1uRW5kOiEwLGdyaWRDb2x1bW5TdGFydDohMCxncmlkUm93OiEwLGdyaWRSb3dFbmQ6ITAsCmdyaWRSb3dTdGFydDohMCxsaW5lSGVpZ2h0OiEwLG9wYWNpdHk6ITAsb3JkZXI6ITAsb3JwaGFuczohMCx3aWRvd3M6ITAsekluZGV4OiEwLHpvb206ITB9O24uY3NzTnVtYmVyPSJ1bmRlZmluZWQiIT09dHlwZW9mIFByb3h5P25ldyBQcm94eShxYix7Z2V0OmZ1bmN0aW9uKCl7VSgiY3NzLW51bWJlciIsImpRdWVyeS5jc3NOdW1iZXIgaXMgZGVwcmVjYXRlZCIpO3JldHVybiBSZWZsZWN0LmdldC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LHNldDpmdW5jdGlvbigpe1UoImNzcy1udW1iZXIiLCJqUXVlcnkuY3NzTnVtYmVyIGlzIGRlcHJlY2F0ZWQiKTtyZXR1cm4gUmVmbGVjdC5zZXQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0pOnFifWVsc2UgcWI9bi5jc3NOdW1iZXI7dmFyICRiPW4uZm4uY3NzO2phKG4uZm4sImNzcyIsZnVuY3Rpb24odSx4KXt2YXIgQz10aGlzO2lmKHUmJiJvYmplY3QiPT09dHlwZW9mIHUmJiFBcnJheS5pc0FycmF5KHUpKXJldHVybiBuLmVhY2godSxmdW5jdGlvbihQLAplYSl7bi5mbi5jc3MuY2FsbChDLFAsZWEpfSksdGhpcztpZigibnVtYmVyIj09PXR5cGVvZiB4KXt2YXIgSD1sYih1KTtZYShIKXx8cWJbSF18fFUoImNzcy1udW1iZXIiLCdOdW1iZXItdHlwZWQgdmFsdWVzIGFyZSBkZXByZWNhdGVkIGZvciBqUXVlcnkuZm4uY3NzKCAiJyt1KyciLCB2YWx1ZSApJyl9cmV0dXJuICRiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sImNzcy1udW1iZXIiKTt2YXIgZ2I9bi5kYXRhO2phKG4sImRhdGEiLGZ1bmN0aW9uKHUseCxDKXt2YXIgSDtpZih4JiYib2JqZWN0Ij09PXR5cGVvZiB4JiYyPT09YXJndW1lbnRzLmxlbmd0aCl7dmFyIFA9bi5oYXNEYXRhKHUpJiZnYi5jYWxsKHRoaXMsdSksZWE9e307Zm9yKEggaW4geClIIT09bGIoSCk\/KFUoImRhdGEtY2FtZWxDYXNlIiwialF1ZXJ5LmRhdGEoKSBhbHdheXMgc2V0cy9nZXRzIGNhbWVsQ2FzZWQgbmFtZXM6ICIrSCksUFtIXT14W0hdKTplYVtIXT14W0hdO2diLmNhbGwodGhpcyx1LGVhKTtyZXR1cm4geH1yZXR1cm4geCYmCiJzdHJpbmciPT09dHlwZW9mIHgmJnghPT1sYih4KSYmKFA9bi5oYXNEYXRhKHUpJiZnYi5jYWxsKHRoaXMsdSkpJiZ4IGluIFA\/KFUoImRhdGEtY2FtZWxDYXNlIiwialF1ZXJ5LmRhdGEoKSBhbHdheXMgc2V0cy9nZXRzIGNhbWVsQ2FzZWQgbmFtZXM6ICIreCksMjxhcmd1bWVudHMubGVuZ3RoJiYoUFt4XT1DKSxQW3hdKTpnYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LCJkYXRhLWNhbWVsQ2FzZSIpO2lmKG4uZngpe3ZhciBjYj1uLlR3ZWVuLnByb3RvdHlwZS5ydW4sVGI9ZnVuY3Rpb24odSl7cmV0dXJuIHV9O2phKG4uVHdlZW4ucHJvdG90eXBlLCJydW4iLGZ1bmN0aW9uKCl7MTxuLmVhc2luZ1t0aGlzLmVhc2luZ10ubGVuZ3RoJiYoVSgiZWFzaW5nLW9uZS1hcmciLCInalF1ZXJ5LmVhc2luZy4iK3RoaXMuZWFzaW5nLnRvU3RyaW5nKCkrIicgc2hvdWxkIHVzZSBvbmx5IG9uZSBhcmd1bWVudCIpLG4uZWFzaW5nW3RoaXMuZWFzaW5nXT1UYik7Y2IuYXBwbHkodGhpcyxhcmd1bWVudHMpfSwKImVhc2luZy1vbmUtYXJnIik7dmFyIEthPW4uZnguaW50ZXJ2YWw7ZGEucmVxdWVzdEFuaW1hdGlvbkZyYW1lJiZPYmplY3QuZGVmaW5lUHJvcGVydHkobi5meCwiaW50ZXJ2YWwiLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtkYS5kb2N1bWVudC5oaWRkZW58fFUoImZ4LWludGVydmFsIiwialF1ZXJ5LmZ4LmludGVydmFsIGlzIGRlcHJlY2F0ZWQiKTtyZXR1cm4gbi5taWdyYXRlSXNQYXRjaEVuYWJsZWQoImZ4LWludGVydmFsIik\/dm9pZCAwPT09S2E\/MTM6S2E6S2F9LHNldDpmdW5jdGlvbih1KXtVKCJmeC1pbnRlcnZhbCIsImpRdWVyeS5meC5pbnRlcnZhbCBpcyBkZXByZWNhdGVkIik7S2E9dX19KX12YXIgVmI9bi5mbi5sb2FkLEFiPW4uZXZlbnQuYWRkLFdiPW4uZXZlbnQuZml4O24uZXZlbnQucHJvcHM9W107bi5ldmVudC5maXhIb29rcz17fTtlYihuLmV2ZW50LnByb3BzLCJjb25jYXQiLG4uZXZlbnQucHJvcHMuY29uY2F0LCJldmVudC1vbGQtcGF0Y2giLAoialF1ZXJ5LmV2ZW50LnByb3BzLmNvbmNhdCgpIGlzIGRlcHJlY2F0ZWQgYW5kIHJlbW92ZWQiKTtqYShuLmV2ZW50LCJmaXgiLGZ1bmN0aW9uKHUpe3ZhciB4PXUudHlwZSxDPXRoaXMuZml4SG9va3NbeF0sSD1uLmV2ZW50LnByb3BzO2lmKEgubGVuZ3RoKWZvcihVKCJldmVudC1vbGQtcGF0Y2giLCJqUXVlcnkuZXZlbnQucHJvcHMgYXJlIGRlcHJlY2F0ZWQgYW5kIHJlbW92ZWQ6ICIrSC5qb2luKCkpO0gubGVuZ3RoOyluLmV2ZW50LmFkZFByb3AoSC5wb3AoKSk7aWYoQyYmIUMuX21pZ3JhdGVkXyYmKEMuX21pZ3JhdGVkXz0hMCxVKCJldmVudC1vbGQtcGF0Y2giLCJqUXVlcnkuZXZlbnQuZml4SG9va3MgYXJlIGRlcHJlY2F0ZWQgYW5kIHJlbW92ZWQ6ICIreCksKEg9Qy5wcm9wcykmJkgubGVuZ3RoKSlmb3IoO0gubGVuZ3RoOyluLmV2ZW50LmFkZFByb3AoSC5wb3AoKSk7eD1XYi5jYWxsKHRoaXMsdSk7cmV0dXJuIEMmJkMuZmlsdGVyP0MuZmlsdGVyKHgsdSk6eH0sImV2ZW50LW9sZC1wYXRjaCIpOwpqYShuLmV2ZW50LCJhZGQiLGZ1bmN0aW9uKHUseCl7dT09PWRhJiYibG9hZCI9PT14JiYiY29tcGxldGUiPT09ZGEuZG9jdW1lbnQucmVhZHlTdGF0ZSYmVSgibG9hZC1hZnRlci1ldmVudCIsImpRdWVyeSh3aW5kb3cpLm9uKCdsb2FkJy4uLikgY2FsbGVkIGFmdGVyIGxvYWQgZXZlbnQgb2NjdXJyZWQiKTtyZXR1cm4gQWIuYXBwbHkodGhpcyxhcmd1bWVudHMpfSwibG9hZC1hZnRlci1ldmVudCIpO24uZWFjaChbImxvYWQiLCJ1bmxvYWQiLCJlcnJvciJdLGZ1bmN0aW9uKHUseCl7amEobi5mbix4LGZ1bmN0aW9uKCl7dmFyIEM9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApO2lmKCJsb2FkIj09PXgmJiJzdHJpbmciPT09dHlwZW9mIENbMF0pcmV0dXJuIFZiLmFwcGx5KHRoaXMsQyk7VSgic2hvcnRoYW5kLXJlbW92ZWQtdjMiLCJqUXVlcnkuZm4uIit4KyIoKSBpcyBkZXByZWNhdGVkIik7Qy5zcGxpY2UoMCwwLHgpO2lmKGFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHRoaXMub24uYXBwbHkodGhpcywKQyk7dGhpcy50cmlnZ2VySGFuZGxlci5hcHBseSh0aGlzLEMpO3JldHVybiB0aGlzfSwic2hvcnRoYW5kLXJlbW92ZWQtdjMiKX0pO24uZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IHJlc2l6ZSBzY3JvbGwgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBjb250ZXh0bWVudSIuc3BsaXQoIiAiKSxmdW5jdGlvbih1LHgpe2JhKG4uZm4seCxmdW5jdGlvbihDLEgpe3JldHVybiAwPGFyZ3VtZW50cy5sZW5ndGg\/dGhpcy5vbih4LG51bGwsQyxIKTp0aGlzLnRyaWdnZXIoeCl9LCJzaG9ydGhhbmQtZGVwcmVjYXRlZC12MyIsImpRdWVyeS5mbi4iK3grIigpIGV2ZW50IHNob3J0aGFuZCBpcyBkZXByZWNhdGVkIil9KTtuKGZ1bmN0aW9uKCl7bihkYS5kb2N1bWVudCkudHJpZ2dlckhhbmRsZXIoInJlYWR5Iil9KTsKbi5ldmVudC5zcGVjaWFsLnJlYWR5PXtzZXR1cDpmdW5jdGlvbigpe3RoaXM9PT1kYS5kb2N1bWVudCYmVSgicmVhZHktZXZlbnQiLCIncmVhZHknIGV2ZW50IGlzIGRlcHJlY2F0ZWQiKX19O2JhKG4uZm4sImJpbmQiLGZ1bmN0aW9uKHUseCxDKXtyZXR1cm4gdGhpcy5vbih1LG51bGwseCxDKX0sInByZS1vbi1tZXRob2RzIiwialF1ZXJ5LmZuLmJpbmQoKSBpcyBkZXByZWNhdGVkIik7YmEobi5mbiwidW5iaW5kIixmdW5jdGlvbih1LHgpe3JldHVybiB0aGlzLm9mZih1LG51bGwseCl9LCJwcmUtb24tbWV0aG9kcyIsImpRdWVyeS5mbi51bmJpbmQoKSBpcyBkZXByZWNhdGVkIik7YmEobi5mbiwiZGVsZWdhdGUiLGZ1bmN0aW9uKHUseCxDLEgpe3JldHVybiB0aGlzLm9uKHgsdSxDLEgpfSwicHJlLW9uLW1ldGhvZHMiLCJqUXVlcnkuZm4uZGVsZWdhdGUoKSBpcyBkZXByZWNhdGVkIik7YmEobi5mbiwidW5kZWxlZ2F0ZSIsZnVuY3Rpb24odSx4LEMpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD8KdGhpcy5vZmYodSwiKioiKTp0aGlzLm9mZih4LHV8fCIqKiIsQyl9LCJwcmUtb24tbWV0aG9kcyIsImpRdWVyeS5mbi51bmRlbGVnYXRlKCkgaXMgZGVwcmVjYXRlZCIpO2JhKG4uZm4sImhvdmVyIixmdW5jdGlvbih1LHgpe3JldHVybiB0aGlzLm9uKCJtb3VzZWVudGVyIix1KS5vbigibW91c2VsZWF2ZSIseHx8dSl9LCJwcmUtb24tbWV0aG9kcyIsImpRdWVyeS5mbi5ob3ZlcigpIGlzIGRlcHJlY2F0ZWQiKTt2YXIgcmI9LzwoPyFhcmVhfGJyfGNvbHxlbWJlZHxocnxpbWd8aW5wdXR8bGlua3xtZXRhfHBhcmFtKSgoW2Etel1bXlwvXDA+XHgyMFx0XHJcblxmXSopW14+XSopXC8+L2dpLEJiPWZ1bmN0aW9uKHUpe3ZhciB4PWRhLmRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgiIik7eC5ib2R5LmlubmVySFRNTD11O3JldHVybiB4LmJvZHkmJnguYm9keS5pbm5lckhUTUx9O24uVU5TQUZFX3Jlc3RvcmVMZWdhY3lIdG1sUHJlZmlsdGVyPWZ1bmN0aW9uKCl7bi5taWdyYXRlRW5hYmxlUGF0Y2hlcygic2VsZi1jbG9zZWQtdGFncyIpfTsKamEobiwiaHRtbFByZWZpbHRlciIsZnVuY3Rpb24odSl7dmFyIHg9dS5yZXBsYWNlKHJiLCI8JDE+PC8kMj4iKTt4IT09dSYmQmIodSkhPT1CYih4KSYmVSgic2VsZi1jbG9zZWQtdGFncyIsIkhUTUwgdGFncyBtdXN0IGJlIHByb3Blcmx5IG5lc3RlZCBhbmQgY2xvc2VkOiAiK3UpO3JldHVybiB1LnJlcGxhY2UocmIsIjwkMT48LyQyPiIpfSwic2VsZi1jbG9zZWQtdGFncyIpO24ubWlncmF0ZURpc2FibGVQYXRjaGVzKCJzZWxmLWNsb3NlZC10YWdzIik7dmFyIHphPW4uZm4ub2Zmc2V0O2phKG4uZm4sIm9mZnNldCIsZnVuY3Rpb24oKXt2YXIgdT10aGlzWzBdO3JldHVybiF1fHx1Lm5vZGVUeXBlJiZ1LmdldEJvdW5kaW5nQ2xpZW50UmVjdD96YS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6KFUoIm9mZnNldC12YWxpZC1lbGVtIiwialF1ZXJ5LmZuLm9mZnNldCgpIHJlcXVpcmVzIGEgdmFsaWQgRE9NIGVsZW1lbnQiKSxhcmd1bWVudHMubGVuZ3RoP3RoaXM6dm9pZCAwKX0sIm9mZnNldC12YWxpZC1lbGVtIik7CmlmKG4uYWpheCl7dmFyIENiPW4ucGFyYW07amEobiwicGFyYW0iLGZ1bmN0aW9uKHUseCl7dmFyIEM9bi5hamF4U2V0dGluZ3MmJm4uYWpheFNldHRpbmdzLnRyYWRpdGlvbmFsO3ZvaWQgMD09PXgmJkMmJihVKCJwYXJhbS1hamF4LXRyYWRpdGlvbmFsIiwialF1ZXJ5LnBhcmFtKCkgbm8gbG9uZ2VyIHVzZXMgalF1ZXJ5LmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbCIpLHg9Qyk7cmV0dXJuIENiLmNhbGwodGhpcyx1LHgpfSwicGFyYW0tYWpheC10cmFkaXRpb25hbCIpfWJhKG4uZm4sImFuZFNlbGYiLG4uZm4uYWRkQmFjaywiYW5kU2VsZiIsImpRdWVyeS5mbi5hbmRTZWxmKCkgaXMgZGVwcmVjYXRlZCBhbmQgcmVtb3ZlZCwgdXNlIGpRdWVyeS5mbi5hZGRCYWNrKCkiKTtpZihuLkRlZmVycmVkKXt2YXIgRGI9bi5EZWZlcnJlZCx0Yj1bWyJyZXNvbHZlIiwiZG9uZSIsbi5DYWxsYmFja3MoIm9uY2UgbWVtb3J5Iiksbi5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksInJlc29sdmVkIl0sClsicmVqZWN0IiwiZmFpbCIsbi5DYWxsYmFja3MoIm9uY2UgbWVtb3J5Iiksbi5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksInJlamVjdGVkIl0sWyJub3RpZnkiLCJwcm9ncmVzcyIsbi5DYWxsYmFja3MoIm1lbW9yeSIpLG4uQ2FsbGJhY2tzKCJtZW1vcnkiKV1dO2phKG4sIkRlZmVycmVkIixmdW5jdGlvbih1KXtmdW5jdGlvbiB4KCl7dmFyIFA9YXJndW1lbnRzO3JldHVybiBuLkRlZmVycmVkKGZ1bmN0aW9uKGVhKXtuLmVhY2godGIsZnVuY3Rpb24oUWEsRWIpe3ZhciBoYj0iZnVuY3Rpb24iPT09dHlwZW9mIFBbUWFdJiZQW1FhXTtDW0ViWzFdXShmdW5jdGlvbigpe3ZhciBvYT1oYiYmaGIuYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKG9hJiYiZnVuY3Rpb24iPT09dHlwZW9mIG9hLnByb21pc2Upb2EucHJvbWlzZSgpLmRvbmUoZWEucmVzb2x2ZSkuZmFpbChlYS5yZWplY3QpLnByb2dyZXNzKGVhLm5vdGlmeSk7ZWxzZSBlYVtFYlswXSsiV2l0aCJdKHRoaXM9PT1IP2VhLnByb21pc2UoKToKdGhpcyxoYj9bb2FdOmFyZ3VtZW50cyl9KX0pO1A9bnVsbH0pLnByb21pc2UoKX12YXIgQz1EYigpLEg9Qy5wcm9taXNlKCk7YmEoQywicGlwZSIseCwiZGVmZXJyZWQtcGlwZSIsImRlZmVycmVkLnBpcGUoKSBpcyBkZXByZWNhdGVkIik7YmEoSCwicGlwZSIseCwiZGVmZXJyZWQtcGlwZSIsImRlZmVycmVkLnBpcGUoKSBpcyBkZXByZWNhdGVkIik7dSYmdS5jYWxsKEMsQyk7cmV0dXJuIEN9LCJkZWZlcnJlZC1waXBlIik7bi5EZWZlcnJlZC5leGNlcHRpb25Ib29rPURiLmV4Y2VwdGlvbkhvb2t9cmV0dXJuIG59KTsKLyoqIC9tL2pzL2pxdWVyeS5jb29raWUuanMgKiovCnZhciBfX19kMmNfanF1ZXJ5Y29va2llanNfY19vbj0iMjAyNS0wNS0yMyAxNzowOToyOCI7J3VzZSBzdHJpY3QnO3ZhciBfX19kMmNfanF1ZXJ5Y29va2llanNfY19vbj0iMjAyNC0wMS0zMSAxNDozNjowOSI7InVzZSBzdHJpY3QiO19fX2QyY19qcXVlcnljb29raWVqc19jX29uPSIyMDIzLTA5LTA2IDE0OjMwOjA2IjsidXNlIHN0cmljdCI7CihmdW5jdGlvbihoLGwscil7ZnVuY3Rpb24gdChiKXtyZXR1cm4gYn1mdW5jdGlvbiB1KGIpe3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGIucmVwbGFjZShtLCIgIikpfWNhdGNoKGMpe3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHVuZXNjYXBlKGIpLnJlcGxhY2UobSwiICIpKX1jYXRjaChhKXtyZXR1cm4gY29uc29sZSYmY29uc29sZS5sb2cmJmNvbnNvbGUubG9nKGEubWVzc2FnZSksYn19fWZ1bmN0aW9uIG4oYixjLGEsZSxrLGYpeyJ1bmRlZmluZWQiPT09dHlwZW9mIGYmJihmPTUpOyJ1bmRlZmluZWQiPT09dHlwZW9mIHdpbmRvdy5Db29raWVMb2dnZXI\/ZiYmc2V0VGltZW91dChmdW5jdGlvbigpe24oYixjLGEsZSxrLGYtMSl9LDFFMyk6d2luZG93LkNvb2tpZUxvZ2dlci5sb2coYixjLGEsZSxrKX12YXIgbT0vXCsvZyxnPWguY29va2llPWZ1bmN0aW9uKGIsYyxhKXtpZihjIT09cilyZXR1cm4gQ29va2llcy5pc0Nvb2tpZUFsbG93ZWQoYixmdW5jdGlvbihkKXtkZWJ1ZygiQ29va2llOiAiLApiLGQpO2E9aC5leHRlbmQoe30sZy5kZWZhdWx0cyxhKTtpZighZClyZXR1cm4gQ29va2llcy5yZW1vdmUoYixhLnBhdGgsYS5kb21haW4pLCExO251bGw9PT1jJiYoYS5leHBpcmVzPS0xKTsibnVtYmVyIj09PXR5cGVvZiBhLmV4cGlyZXNJbk1pbnV0ZXMmJihhLmV4cGlyZXM9YS5leHBpcmVzSW5NaW51dGVzLzE0NDApO2lmKCJudW1iZXIiPT09dHlwZW9mIGEuZXhwaXJlcyl7ZD1hLmV4cGlyZXM7dmFyIHA9YS5leHBpcmVzPW5ldyBEYXRlO3Auc2V0VGltZSgrcCs4NjRFNSpkKX1kPW5ldyBEYXRlO2Quc2V0RnVsbFllYXIoZC5nZXRGdWxsWWVhcigpKzEpO2EuZXhwaXJlcz5kJiYoYS5leHBpcmVzPWQpO2M9Zy5qc29uP0pTT04uc3RyaW5naWZ5KGMpOlN0cmluZyhjKTtuKGIsYyxhLmV4cGlyZXMsYS5wYXRoLGEuZG9tYWluKTtyZXR1cm4gbC5jb29raWU9W2VuY29kZVVSSUNvbXBvbmVudChiKSwiPSIsZy5yYXc\/YzplbmNvZGVVUklDb21wb25lbnQoYyksYS5leHBpcmVzPyI7IGV4cGlyZXM9IisKYS5leHBpcmVzLnRvVVRDU3RyaW5nKCk6IiIsYS5wYXRoPyI7IHBhdGg9IithLnBhdGg6IiIsYS5kb21haW4\/IjsgZG9tYWluPSIrYS5kb21haW46IiIsYS5zZWN1cmU\/Ijsgc2VjdXJlIjoiIl0uam9pbigiIil9KTtmb3IodmFyIGU9Zy5yYXc\/dDp1LGs9bC5jb29raWUuc3BsaXQoIjsgIiksZj0wLHY9ay5sZW5ndGg7Zjx2O2YrKyl7dmFyIHE9a1tmXS5zcGxpdCgiPSIpO2lmKGUocS5zaGlmdCgpKT09PWIpcmV0dXJuIGU9ZShxLmpvaW4oIj0iKSksZy5qc29uP0pTT04ucGFyc2UoZSk6ZX1yZXR1cm4gbnVsbH07Zy5kZWZhdWx0cz17fTtoLnJlbW92ZUNvb2tpZT1mdW5jdGlvbihiLGMpe3JldHVybiBudWxsIT09aC5jb29raWUoYik\/KGguY29va2llKGIsbnVsbCxjKSwhMCk6ITF9fSkoalF1ZXJ5LGRvY3VtZW50KTsKLyoqIC9tL2pzL3ZhbmlsbGFqcy9jb250ZW50TG9hZGVyLmpzICoqLwp2YXIgX19fZDJjX2NvbnRlbnRMb2FkZXJqc19jX29uPSIyMDI2LTAxLTEyIDEwOjEzOjI5IjsndXNlIHN0cmljdCc7dmFyICRqc2NvbXA9JGpzY29tcHx8e307JGpzY29tcC5zY29wZT17fTskanNjb21wLkFTU1VNRV9FUzU9ITE7JGpzY29tcC5BU1NVTUVfTk9fTkFUSVZFX01BUD0hMTskanNjb21wLkFTU1VNRV9OT19OQVRJVkVfU0VUPSExOyRqc2NvbXAuU0lNUExFX0ZST1VORF9QT0xZRklMTD0hMTskanNjb21wLklTT0xBVEVfUE9MWUZJTExTPSExOyRqc2NvbXAuRk9SQ0VfUE9MWUZJTExfUFJPTUlTRT0hMTskanNjb21wLkZPUkNFX1BPTFlGSUxMX1BST01JU0VfV0hFTl9OT19VTkhBTkRMRURfUkVKRUNUSU9OPSExOyRqc2NvbXAuZGVmaW5lUHJvcGVydHk9JGpzY29tcC5BU1NVTUVfRVM1fHwiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmRlZmluZVByb3BlcnRpZXM\/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKGEsYixjKXtpZihhPT1BcnJheS5wcm90b3R5cGV8fGE9PU9iamVjdC5wcm90b3R5cGUpcmV0dXJuIGE7YVtiXT1jLnZhbHVlO3JldHVybiBhfTsKJGpzY29tcC5nZXRHbG9iYWw9ZnVuY3Rpb24oYSl7YT1bIm9iamVjdCI9PXR5cGVvZiBnbG9iYWxUaGlzJiZnbG9iYWxUaGlzLGEsIm9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdywib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYsIm9iamVjdCI9PXR5cGVvZiBnbG9iYWwmJmdsb2JhbF07Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDsrK2Ipe3ZhciBjPWFbYl07aWYoYyYmYy5NYXRoPT1NYXRoKXJldHVybiBjfXRocm93IEVycm9yKCJDYW5ub3QgZmluZCBnbG9iYWwgb2JqZWN0Iik7fTskanNjb21wLmdsb2JhbD0kanNjb21wLmdldEdsb2JhbCh0aGlzKTskanNjb21wLklTX1NZTUJPTF9OQVRJVkU9ImZ1bmN0aW9uIj09PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT09dHlwZW9mIFN5bWJvbCgieCIpOyRqc2NvbXAuVFJVU1RfRVM2X1BPTFlGSUxMUz0hJGpzY29tcC5JU09MQVRFX1BPTFlGSUxMU3x8JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFOyRqc2NvbXAucG9seWZpbGxzPXt9OwokanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbD17fTskanNjb21wLlBPTFlGSUxMX1BSRUZJWD0iJGpzY3AkIjt2YXIgJGpzY29tcCRsb29rdXBQb2x5ZmlsbGVkVmFsdWU9ZnVuY3Rpb24oYSxiKXt2YXIgYz0kanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbFtiXTtpZihudWxsPT1jKXJldHVybiBhW2JdO2M9YVtjXTtyZXR1cm4gdm9pZCAwIT09Yz9jOmFbYl19OyRqc2NvbXAucG9seWZpbGw9ZnVuY3Rpb24oYSxiLGMsZCl7YiYmKCRqc2NvbXAuSVNPTEFURV9QT0xZRklMTFM\/JGpzY29tcC5wb2x5ZmlsbElzb2xhdGVkKGEsYixjLGQpOiRqc2NvbXAucG9seWZpbGxVbmlzb2xhdGVkKGEsYixjLGQpKX07CiRqc2NvbXAucG9seWZpbGxVbmlzb2xhdGVkPWZ1bmN0aW9uKGEsYixjLGQpe2M9JGpzY29tcC5nbG9iYWw7YT1hLnNwbGl0KCIuIik7Zm9yKGQ9MDtkPGEubGVuZ3RoLTE7ZCsrKXt2YXIgZT1hW2RdO2lmKCEoZSBpbiBjKSlyZXR1cm47Yz1jW2VdfWE9YVthLmxlbmd0aC0xXTtkPWNbYV07Yj1iKGQpO2IhPWQmJm51bGwhPWImJiRqc2NvbXAuZGVmaW5lUHJvcGVydHkoYyxhLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Yn0pfTsKJGpzY29tcC5wb2x5ZmlsbElzb2xhdGVkPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWEuc3BsaXQoIi4iKTthPTE9PT1lLmxlbmd0aDtkPWVbMF07ZD0hYSYmZCBpbiAkanNjb21wLnBvbHlmaWxscz8kanNjb21wLnBvbHlmaWxsczokanNjb21wLmdsb2JhbDtmb3IodmFyIGY9MDtmPGUubGVuZ3RoLTE7ZisrKXt2YXIgZz1lW2ZdO2lmKCEoZyBpbiBkKSlyZXR1cm47ZD1kW2ddfWU9ZVtlLmxlbmd0aC0xXTtjPSRqc2NvbXAuSVNfU1lNQk9MX05BVElWRSYmImVzNiI9PT1jP2RbZV06bnVsbDtiPWIoYyk7bnVsbCE9YiYmKGE\/JGpzY29tcC5kZWZpbmVQcm9wZXJ0eSgkanNjb21wLnBvbHlmaWxscyxlLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Yn0pOmIhPT1jJiYodm9pZCAwPT09JGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbZV0mJihjPTFFOSpNYXRoLnJhbmRvbSgpPj4+MCwkanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbFtlXT0kanNjb21wLklTX1NZTUJPTF9OQVRJVkU\/CiRqc2NvbXAuZ2xvYmFsLlN5bWJvbChlKTokanNjb21wLlBPTFlGSUxMX1BSRUZJWCtjKyIkIitlKSwkanNjb21wLmRlZmluZVByb3BlcnR5KGQsJGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbZV0se2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpifSkpKX07JGpzY29tcC51bmRlcnNjb3JlUHJvdG9DYW5CZVNldD1mdW5jdGlvbigpe3ZhciBhPXthOiEwfSxiPXt9O3RyeXtyZXR1cm4gYi5fX3Byb3RvX189YSxiLmF9Y2F0Y2goYyl7fXJldHVybiExfTsKJGpzY29tcC5zZXRQcm90b3R5cGVPZj0kanNjb21wLlRSVVNUX0VTNl9QT0xZRklMTFMmJiJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3Quc2V0UHJvdG90eXBlT2Y\/T2JqZWN0LnNldFByb3RvdHlwZU9mOiRqc2NvbXAudW5kZXJzY29yZVByb3RvQ2FuQmVTZXQoKT9mdW5jdGlvbihhLGIpe2EuX19wcm90b19fPWI7aWYoYS5fX3Byb3RvX18hPT1iKXRocm93IG5ldyBUeXBlRXJyb3IoYSsiIGlzIG5vdCBleHRlbnNpYmxlIik7cmV0dXJuIGF9Om51bGw7JGpzY29tcC5hcnJheUl0ZXJhdG9ySW1wbD1mdW5jdGlvbihhKXt2YXIgYj0wO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBiPGEubGVuZ3RoP3tkb25lOiExLHZhbHVlOmFbYisrXX06e2RvbmU6ITB9fX07JGpzY29tcC5hcnJheUl0ZXJhdG9yPWZ1bmN0aW9uKGEpe3JldHVybntuZXh0OiRqc2NvbXAuYXJyYXlJdGVyYXRvckltcGwoYSl9fTsKJGpzY29tcC5tYWtlSXRlcmF0b3I9ZnVuY3Rpb24oYSl7dmFyIGI9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvciYmYVtTeW1ib2wuaXRlcmF0b3JdO3JldHVybiBiP2IuY2FsbChhKTokanNjb21wLmFycmF5SXRlcmF0b3IoYSl9OyRqc2NvbXAuZ2VuZXJhdG9yPXt9OyRqc2NvbXAuZ2VuZXJhdG9yLmVuc3VyZUl0ZXJhdG9yUmVzdWx0SXNPYmplY3RfPWZ1bmN0aW9uKGEpe2lmKCEoYSBpbnN0YW5jZW9mIE9iamVjdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiSXRlcmF0b3IgcmVzdWx0ICIrYSsiIGlzIG5vdCBhbiBvYmplY3QiKTt9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0PWZ1bmN0aW9uKCl7dGhpcy5pc1J1bm5pbmdfPSExO3RoaXMueWllbGRBbGxJdGVyYXRvcl89bnVsbDt0aGlzLnlpZWxkUmVzdWx0PXZvaWQgMDt0aGlzLm5leHRBZGRyZXNzPTE7dGhpcy5maW5hbGx5QWRkcmVzc189dGhpcy5jYXRjaEFkZHJlc3NfPTA7dGhpcy5maW5hbGx5Q29udGV4dHNfPXRoaXMuYWJydXB0Q29tcGxldGlvbl89bnVsbH07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuc3RhcnRfPWZ1bmN0aW9uKCl7aWYodGhpcy5pc1J1bm5pbmdfKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTt0aGlzLmlzUnVubmluZ189ITB9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnN0b3BfPWZ1bmN0aW9uKCl7dGhpcy5pc1J1bm5pbmdfPSExfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuanVtcFRvRXJyb3JIYW5kbGVyXz1mdW5jdGlvbigpe3RoaXMubmV4dEFkZHJlc3M9dGhpcy5jYXRjaEFkZHJlc3NffHx0aGlzLmZpbmFsbHlBZGRyZXNzX307JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUubmV4dF89ZnVuY3Rpb24oYSl7dGhpcy55aWVsZFJlc3VsdD1hfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS50aHJvd189ZnVuY3Rpb24oYSl7dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz17ZXhjZXB0aW9uOmEsaXNFeGNlcHRpb246ITB9O3RoaXMuanVtcFRvRXJyb3JIYW5kbGVyXygpfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5yZXR1cm49ZnVuY3Rpb24oYSl7dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz17cmV0dXJuOmF9O3RoaXMubmV4dEFkZHJlc3M9dGhpcy5maW5hbGx5QWRkcmVzc199OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5qdW1wVGhyb3VnaEZpbmFsbHlCbG9ja3M9ZnVuY3Rpb24oYSl7dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz17anVtcFRvOmF9O3RoaXMubmV4dEFkZHJlc3M9dGhpcy5maW5hbGx5QWRkcmVzc199OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnlpZWxkPWZ1bmN0aW9uKGEsYil7dGhpcy5uZXh0QWRkcmVzcz1iO3JldHVybnt2YWx1ZTphfX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUueWllbGRBbGw9ZnVuY3Rpb24oYSxiKXthPSRqc2NvbXAubWFrZUl0ZXJhdG9yKGEpO3ZhciBjPWEubmV4dCgpOyRqc2NvbXAuZ2VuZXJhdG9yLmVuc3VyZUl0ZXJhdG9yUmVzdWx0SXNPYmplY3RfKGMpO2lmKGMuZG9uZSl0aGlzLnlpZWxkUmVzdWx0PWMudmFsdWUsdGhpcy5uZXh0QWRkcmVzcz1iO2Vsc2UgcmV0dXJuIHRoaXMueWllbGRBbGxJdGVyYXRvcl89YSx0aGlzLnlpZWxkKGMudmFsdWUsYil9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5qdW1wVG89ZnVuY3Rpb24oYSl7dGhpcy5uZXh0QWRkcmVzcz1hfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5qdW1wVG9FbmQ9ZnVuY3Rpb24oKXt0aGlzLm5leHRBZGRyZXNzPTB9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnNldENhdGNoRmluYWxseUJsb2Nrcz1mdW5jdGlvbihhLGIpe3RoaXMuY2F0Y2hBZGRyZXNzXz1hO3ZvaWQgMCE9YiYmKHRoaXMuZmluYWxseUFkZHJlc3NfPWIpfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5zZXRGaW5hbGx5QmxvY2s9ZnVuY3Rpb24oYSl7dGhpcy5jYXRjaEFkZHJlc3NfPTA7dGhpcy5maW5hbGx5QWRkcmVzc189YXx8MH07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUubGVhdmVUcnlCbG9jaz1mdW5jdGlvbihhLGIpe3RoaXMubmV4dEFkZHJlc3M9YTt0aGlzLmNhdGNoQWRkcmVzc189Ynx8MH07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmVudGVyQ2F0Y2hCbG9jaz1mdW5jdGlvbihhKXt0aGlzLmNhdGNoQWRkcmVzc189YXx8MDthPXRoaXMuYWJydXB0Q29tcGxldGlvbl8uZXhjZXB0aW9uO3RoaXMuYWJydXB0Q29tcGxldGlvbl89bnVsbDtyZXR1cm4gYX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuZW50ZXJGaW5hbGx5QmxvY2s9ZnVuY3Rpb24oYSxiLGMpe2M\/dGhpcy5maW5hbGx5Q29udGV4dHNfW2NdPXRoaXMuYWJydXB0Q29tcGxldGlvbl86dGhpcy5maW5hbGx5Q29udGV4dHNfPVt0aGlzLmFicnVwdENvbXBsZXRpb25fXTt0aGlzLmNhdGNoQWRkcmVzc189YXx8MDt0aGlzLmZpbmFsbHlBZGRyZXNzXz1ifHwwfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUubGVhdmVGaW5hbGx5QmxvY2s9ZnVuY3Rpb24oYSxiKXtiPXRoaXMuZmluYWxseUNvbnRleHRzXy5zcGxpY2UoYnx8MClbMF07aWYoYj10aGlzLmFicnVwdENvbXBsZXRpb25fPXRoaXMuYWJydXB0Q29tcGxldGlvbl98fGIpe2lmKGIuaXNFeGNlcHRpb24pcmV0dXJuIHRoaXMuanVtcFRvRXJyb3JIYW5kbGVyXygpO3ZvaWQgMCE9Yi5qdW1wVG8mJnRoaXMuZmluYWxseUFkZHJlc3NfPGIuanVtcFRvPyh0aGlzLm5leHRBZGRyZXNzPWIuanVtcFRvLHRoaXMuYWJydXB0Q29tcGxldGlvbl89bnVsbCk6dGhpcy5uZXh0QWRkcmVzcz10aGlzLmZpbmFsbHlBZGRyZXNzX31lbHNlIHRoaXMubmV4dEFkZHJlc3M9YX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuZm9ySW49ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyAkanNjb21wLmdlbmVyYXRvci5Db250ZXh0LlByb3BlcnR5SXRlcmF0b3IoYSl9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LlByb3BlcnR5SXRlcmF0b3I9ZnVuY3Rpb24oYSl7dGhpcy5vYmplY3RfPWE7dGhpcy5wcm9wZXJ0aWVzXz1bXTtmb3IodmFyIGIgaW4gYSl0aGlzLnByb3BlcnRpZXNfLnB1c2goYik7dGhpcy5wcm9wZXJ0aWVzXy5yZXZlcnNlKCl9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQuUHJvcGVydHlJdGVyYXRvci5wcm90b3R5cGUuZ2V0TmV4dD1mdW5jdGlvbigpe2Zvcig7MDx0aGlzLnByb3BlcnRpZXNfLmxlbmd0aDspe3ZhciBhPXRoaXMucHJvcGVydGllc18ucG9wKCk7aWYoYSBpbiB0aGlzLm9iamVjdF8pcmV0dXJuIGF9cmV0dXJuIG51bGx9OyRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV89ZnVuY3Rpb24oYSl7dGhpcy5jb250ZXh0Xz1uZXcgJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dDt0aGlzLnByb2dyYW1fPWF9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS5uZXh0Xz1mdW5jdGlvbihhKXt0aGlzLmNvbnRleHRfLnN0YXJ0XygpO2lmKHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl8pcmV0dXJuIHRoaXMueWllbGRBbGxTdGVwXyh0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfLm5leHQsYSx0aGlzLmNvbnRleHRfLm5leHRfKTt0aGlzLmNvbnRleHRfLm5leHRfKGEpO3JldHVybiB0aGlzLm5leHRTdGVwXygpfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUucmV0dXJuXz1mdW5jdGlvbihhKXt0aGlzLmNvbnRleHRfLnN0YXJ0XygpO3ZhciBiPXRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl87aWYoYilyZXR1cm4gdGhpcy55aWVsZEFsbFN0ZXBfKCJyZXR1cm4iaW4gYj9iWyJyZXR1cm4iXTpmdW5jdGlvbihjKXtyZXR1cm57dmFsdWU6Yyxkb25lOiEwfX0sYSx0aGlzLmNvbnRleHRfLnJldHVybik7dGhpcy5jb250ZXh0Xy5yZXR1cm4oYSk7cmV0dXJuIHRoaXMubmV4dFN0ZXBfKCl9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS50aHJvd189ZnVuY3Rpb24oYSl7dGhpcy5jb250ZXh0Xy5zdGFydF8oKTtpZih0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfKXJldHVybiB0aGlzLnlpZWxkQWxsU3RlcF8odGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yX1sidGhyb3ciXSxhLHRoaXMuY29udGV4dF8ubmV4dF8pO3RoaXMuY29udGV4dF8udGhyb3dfKGEpO3JldHVybiB0aGlzLm5leHRTdGVwXygpfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUueWllbGRBbGxTdGVwXz1mdW5jdGlvbihhLGIsYyl7dHJ5e3ZhciBkPWEuY2FsbCh0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfLGIpOyRqc2NvbXAuZ2VuZXJhdG9yLmVuc3VyZUl0ZXJhdG9yUmVzdWx0SXNPYmplY3RfKGQpO2lmKCFkLmRvbmUpcmV0dXJuIHRoaXMuY29udGV4dF8uc3RvcF8oKSxkO3ZhciBlPWQudmFsdWV9Y2F0Y2goZil7cmV0dXJuIHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl89bnVsbCx0aGlzLmNvbnRleHRfLnRocm93XyhmKSx0aGlzLm5leHRTdGVwXygpfXRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl89bnVsbDtjLmNhbGwodGhpcy5jb250ZXh0XyxlKTtyZXR1cm4gdGhpcy5uZXh0U3RlcF8oKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLm5leHRTdGVwXz1mdW5jdGlvbigpe2Zvcig7dGhpcy5jb250ZXh0Xy5uZXh0QWRkcmVzczspdHJ5e3ZhciBhPXRoaXMucHJvZ3JhbV8odGhpcy5jb250ZXh0Xyk7aWYoYSlyZXR1cm4gdGhpcy5jb250ZXh0Xy5zdG9wXygpLHt2YWx1ZTphLnZhbHVlLGRvbmU6ITF9fWNhdGNoKGIpe3RoaXMuY29udGV4dF8ueWllbGRSZXN1bHQ9dm9pZCAwLHRoaXMuY29udGV4dF8udGhyb3dfKGIpfXRoaXMuY29udGV4dF8uc3RvcF8oKTtpZih0aGlzLmNvbnRleHRfLmFicnVwdENvbXBsZXRpb25fKXthPXRoaXMuY29udGV4dF8uYWJydXB0Q29tcGxldGlvbl87dGhpcy5jb250ZXh0Xy5hYnJ1cHRDb21wbGV0aW9uXz1udWxsO2lmKGEuaXNFeGNlcHRpb24pdGhyb3cgYS5leGNlcHRpb247cmV0dXJue3ZhbHVlOmEucmV0dXJuLGRvbmU6ITB9fXJldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19OwokanNjb21wLmdlbmVyYXRvci5HZW5lcmF0b3JfPWZ1bmN0aW9uKGEpe3RoaXMubmV4dD1mdW5jdGlvbihiKXtyZXR1cm4gYS5uZXh0XyhiKX07dGhpcy50aHJvdz1mdW5jdGlvbihiKXtyZXR1cm4gYS50aHJvd18oYil9O3RoaXMucmV0dXJuPWZ1bmN0aW9uKGIpe3JldHVybiBhLnJldHVybl8oYil9O3RoaXNbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfX07JGpzY29tcC5nZW5lcmF0b3IuY3JlYXRlR2VuZXJhdG9yPWZ1bmN0aW9uKGEsYil7Yj1uZXcgJGpzY29tcC5nZW5lcmF0b3IuR2VuZXJhdG9yXyhuZXcgJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXyhiKSk7JGpzY29tcC5zZXRQcm90b3R5cGVPZiYmYS5wcm90b3R5cGUmJiRqc2NvbXAuc2V0UHJvdG90eXBlT2YoYixhLnByb3RvdHlwZSk7cmV0dXJuIGJ9OwokanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3I9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihkKXtyZXR1cm4gYS5uZXh0KGQpfWZ1bmN0aW9uIGMoZCl7cmV0dXJuIGEudGhyb3coZCl9cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGQsZSl7ZnVuY3Rpb24gZihnKXtnLmRvbmU\/ZChnLnZhbHVlKTpQcm9taXNlLnJlc29sdmUoZy52YWx1ZSkudGhlbihiLGMpLnRoZW4oZixlKX1mKGEubmV4dCgpKX0pfTskanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3JGdW5jdGlvbj1mdW5jdGlvbihhKXtyZXR1cm4gJGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yKGEoKSl9OyRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvclByb2dyYW09ZnVuY3Rpb24oYSl7cmV0dXJuICRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvcihuZXcgJGpzY29tcC5nZW5lcmF0b3IuR2VuZXJhdG9yXyhuZXcgJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXyhhKSkpfTsKY29uc3QgY29udGVudEJsb2Nrcz0oKT0+e2NvbnN0IGE9Yj0+JGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yRnVuY3Rpb24oZnVuY3Rpb24qKCl7dmFyIGM9Yi5kYXRhc2V0LGQsZT1udWxsPT0oZD1iLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W25hbWU9ImJsb2NrLWRhdGEiXScpKT92b2lkIDA6ZC52YWx1ZTtkPSJGUkVOQ0giPT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsdWU\/ImZyIjoiZW4iO2M9T2JqZWN0LmFzc2lnbih7fSxjLHtkYXRhOmV8fCJ7fSJ9KTtjPXlpZWxkKHlpZWxkIGZldGNoKGAvJHtlbmNvZGVVUklDb21wb25lbnQoZCl9L2FqYXgvZ2V0U2tlbGV0b25Db250ZW50YCx7bWV0aG9kOiJQT1NUIixoZWFkZXJzOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24iLCJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IixjaGFyc2V0OiJVVEYtOCJ9LGJvZHk6bmV3IFVSTFNlYXJjaFBhcmFtcyhjKX0pKS5qc29uKCk7CmlmKCJ1bmRlZmluZWQiIT10eXBlb2YgYy5zdGF0dXMmJiJzdWNjZXNzIj09Yy5zdGF0dXMpaWYoYz1jLmNvbnRlbnQsMT5jLmxlbmd0aCliLnJlcGxhY2VXaXRoKCIiKTtlbHNle2M9ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKS5jcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQoYykuY2hpbGRyZW5bMF07dmFyIGY7ZT1udWxsPT0oZj1iLmRhdGFzZXQpP3ZvaWQgMDpmLmNhbGxiYWNrO2IucGFyZW50RWxlbWVudC5kYXRhc2V0LmxvYWRlZD0iMSI7Yi5yZXBsYWNlV2l0aChjKTtlJiYiZnVuY3Rpb24iPT09dHlwZW9mIGhhbmRsZXJzW2VdJiZoYW5kbGVyc1tlXShjKS5pbml0KCl9fSk7aGFuZGxlcnM9e3BheW1lbnRDYWxjQmxvY2s6Yj0+e2NvbnN0IGM9Yi5jbG9zZXN0KCIuZGl2Q2FyU2luZ2xlSW5uZXJCb3giKTtyZXR1cm57aW5pdDooKT0+eyQoYikuZmluZCgiLnBheW1lbnRUb29sdGlwIikuZWFjaChmdW5jdGlvbigpe3RyeXt2YXIgZD0kKHRoaXMpLmF0dHIoImRhdGEtdG9vbHRpcCIpOwokKHRoaXMpLmRhcmtUb29sdGlwKHtjb250ZW50OmQsZ3Jhdml0eToiZWFzdCIsdGhlbWU6ImxpZ2h0Iix0cmlnZ2VyOiJjbGljayIsYW5pbWF0aW9uOiJmbGlwSW4ifSl9Y2F0Y2goZSl7fX0pO2IuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VlbnRlciIsZnVuY3Rpb24oZCl7ZC5zdG9wUHJvcGFnYXRpb24oKTtpZihiLmRhdGFzZXQudG9vbHRpcENyZWF0ZWQpcmV0dXJuITE7Yi5kYXRhc2V0LnRvb2x0aXBDcmVhdGVkPSIxIjskKGQuY3VycmVudFRhcmdldC5xdWVyeVNlbGVjdG9yKCIuY2FyLWZpbmFuY2UtaW5mbyIpKS5kYXJrVG9vbHRpcCh7Z3Jhdml0eToid2VzdCIsdGhlbWU6ImxpZ2h0Iix0cmlnZ2VyOiJob3ZlciIsYW5pbWF0aW9uOiJmbGlwSW4ifSl9KTtiLnF1ZXJ5U2VsZWN0b3IoIi5jYXItZmluYW5jZS1pbmZvIikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKGQpe2QucHJldmVudERlZmF1bHQoKTtpZighYylyZXR1cm4hMTtkPWMucXVlcnlTZWxlY3RvcigiLmRpdkNhclRpdGxlQ29udGFpbmVyIGEiKS5ocmVmOwp3aW5kb3cub3BlbihkLCJfc2VsZiIpfSl9fX19O3JldHVybntzZXRCbG9ja09ic2VydmVyOigpPT57Y29uc3QgYj1uZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoZD0+e2QuZm9yRWFjaChlPT57ZS5pc0ludGVyc2VjdGluZyYmKGUudGFyZ2V0LmNsYXNzTGlzdC5hZGQoImFjdGl2ZSIpLGIudW5vYnNlcnZlKGUudGFyZ2V0KSxjb25zb2xlLmxvZygic2tlbGV0b24gb2JzZXJ2ZWQgIitlLnRhcmdldCksYShlLnRhcmdldCkpfSl9LHt0aHJlc2hvbGQ6LjF9KSxjPW5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmNvbnRlbnQtc2tlbGV0b24iKS5mb3JFYWNoKGQ9PntiLm9ic2VydmUoZCk7InNrZWxldG9uIj09PWMuZ2V0KCJkZWJ1ZyIpJiZkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuY29udGVudC1za2VsZXRvbiIpLmZvckVhY2goZT0+ZS5jbGFzc0xpc3QuYWRkKCJkZWJ1ZyIpKX0pfSxoYW5kbGVyc319Owpkb2NSZWFkeUFyci5wdXNoKCgpPT57ImZ1bmN0aW9uIj09PXR5cGVvZiBjb250ZW50QmxvY2tzJiZjb250ZW50QmxvY2tzKCkuc2V0QmxvY2tPYnNlcnZlcigpfSk7Ci8qKiAvbS9qcy92YW5pbGxhanMvY29va2llcy5qcyAqKi8KdmFyIF9fX2QyY19jb29raWVzanNfY19vbj0iMjAyNi0wMS0xMiAxMDoxMzoyNSI7J3VzZSBzdHJpY3QnOyhmdW5jdGlvbigpe2Z1bmN0aW9uIGwoYSxjLGIsaCxkLGYsZSl7dmFyIGc9IiI7aWYoYil7bGV0IGs9bmV3IERhdGU7ay5zZXRGdWxsWWVhcihrLmdldEZ1bGxZZWFyKCkrMSk7c3dpdGNoKGIuY29uc3RydWN0b3Ipe2Nhc2UgTnVtYmVyOjM2NTxiJiYoYj0zNjUpO2c9bmV3IERhdGU7Zy5zZXREYXRlKGcuZ2V0RGF0ZSgpK2IpO2c9SW5maW5pdHk9PT1iPyI7IGV4cGlyZXM9RnJpLCAzMSBEZWMgOTk5OSAyMzo1OTo1OSBHTVQiOiI7IGV4cGlyZXM9IitnLnRvVVRDU3RyaW5nKCk7YnJlYWs7Y2FzZSBTdHJpbmc6bmV3IERhdGUoYik+ayYmKGI9ay50b1VUQ1N0cmluZygpKTtnPSI7IGV4cGlyZXM9IitiO2JyZWFrO2Nhc2UgRGF0ZTpiPmsmJihiPWspLGc9IjsgZXhwaXJlcz0iK2IudG9VVENTdHJpbmcoKX19InVuZGVmaW5lZCI9PT10eXBlb2YgZiYmKGY9Imh0dHBzOiI9PT13aW5kb3cubG9jYXRpb24ucHJvdG9jb2wpO3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoYSkrCiI9IitlbmNvZGVVUklDb21wb25lbnQoYykrZysoZD8iOyBkb21haW49IitkOiIiKSsoaD8iOyBwYXRoPSIraDoiIikrKGY\/Ijsgc2VjdXJlIjoiIikrKGUmJiJub19yZXN0cmljdGlvbiIhPT1lLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKT8ibGF4Ij09PWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpfHwxPT09TWF0aC5jZWlsKGUpfHwhMD09PWU\/Ijsgc2FtZXNpdGU9bGF4Ijoibm9uZSI9PT1lLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKXx8MD5lPyI7IHNhbWVzaXRlPW5vbmUiOiI7IHNhbWVzaXRlPXN0cmljdCI6IiIpfWZ1bmN0aW9uIG0oYSxjKXtpZigidW5kZWZpbmVkIj09PXR5cGVvZiBhfHxudWxsPT09YSlyZXR1cm4tMTtzd2l0Y2goYS5jb25zdHJ1Y3Rvcil7Y2FzZSBOdW1iZXI6aWYoIm51bWJlciI9PT1jKXZhciBiPTg2NDAwKmE7ZWxzZSBiPW5ldyBEYXRlLGIuc2V0RGF0ZShiLmdldERhdGUoKSthKSxiPUluZmluaXR5PT09YT8iRnJpLCAzMSBEZWMgOTk5OSAyMzo1OTo1OSBHTVQiOgpiLnRvVVRDU3RyaW5nKCk7YnJlYWs7Y2FzZSBTdHJpbmc6InN0cmluZyI9PT1jP2I9YTooYj1uZXcgRGF0ZSxiPSgobmV3IERhdGUoYSkpLmdldFRpbWUoKS1iLmdldFRpbWUoKSkvMUUzKTticmVhaztjYXNlIERhdGU6InN0cmluZyI9PT1jP2I9YS50b1VUQ1N0cmluZygpOihiPW5ldyBEYXRlLGI9KGEuZ2V0VGltZSgpLWIuZ2V0VGltZSgpKS8xRTMpfSJudW1iZXIiPT09YyYmKGI9TWF0aC5yb3VuZChiKSk7cmV0dXJuIGJ9dmFyIG49L1tcLVwuXCtcKl0vZyxwPS9eKD86ZXhwaXJlc3xtYXhcLWFnZXxwYXRofGRvbWFpbnxzZWN1cmV8c2FtZXNpdGV8aHR0cG9ubHkpJC9pLHE9InV0bV9jYW1wYWlnbiB1dG1fa2V5d29yZCB1dG1fbGFuZGluZyB1dG1fbGFuZGluZ19mb290ZXIgdXRtX21lZGl1bSB1dG1fc291cmNlIHV0bV9jYW1wYWlnbl9yZXRhcmdldGluZyB1dG1fc291cmNlX3JldGFyZ2V0aW5nIERpc3BsYXlTb3VyY2VVVE1DYW1wYWlnbiBEaXNwbGF5U291cmNlVVRNU291cmNlIi5zcGxpdCgiICIpOwp3aW5kb3cuQ29va2llcz17Z2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhP2RlY29kZVVSSUNvbXBvbmVudChkb2N1bWVudC5jb29raWUucmVwbGFjZShuZXcgUmVnRXhwKCIoPzooPzpefC4qOylcXHMqIitlbmNvZGVVUklDb21wb25lbnQoYSkucmVwbGFjZShuLCJcXCQmIikrIlxccypcXD1cXHMqKFteO10qKS4qJCl8Xi4qJCIpLCIkMSIpKXx8bnVsbDpudWxsfSxzZXQ6ZnVuY3Rpb24oYSxjLGIsaCxkLGYsZSl7cmV0dXJuIWF8fHAudGVzdChhKT8hMTpDb29raWVzLmlzQ29va2llQWxsb3dlZChhLGZ1bmN0aW9uKGcpe2Q9ZD9kOiIiO2Y9bnVsbD09Zj8hMDpmO2U9bnVsbD09ZT8iTm9uZSI6ZTtDb29raWVzLmxvZyhhLGMsYixoLGQpO2lmKCFnKXJldHVybi0xPHEuaW5kZXhPZihhKSYmbnVsbD09Q29va2llcy5nZXQoImQyY19jb29raWVfY29uc2VudCIpJiYoZz1zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCJkMmNfY29uc2VudF93YWl0IiksZz1udWxsIT1nP0pTT04ucGFyc2UoYXRvYihnKSk6Cnt9LGdbYV09e2tleTphLHZhbHVlOmMsZXhwaXJlczpiLHBhdGg6aCxkb21haW46ZH0sdXRtQ29va2llc1N0b3JhZ2VKU09OPUpTT04uc3RyaW5naWZ5KGcpLHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oImQyY19jb25zZW50X3dhaXQiLGJ0b2EodXRtQ29va2llc1N0b3JhZ2VKU09OKSkpLENvb2tpZXMucmVtb3ZlKGEsaCxkLGYsZSksITE7ZG9jdW1lbnQuY29va2llPWwoYSxjLGIsaCxkLGYsZSk7cmV0dXJuITB9KX0scmVtb3ZlOmZ1bmN0aW9uKGEsYyxiLGgsZCl7aWYoIXRoaXMuaGFzKGEpKXJldHVybiExO2RvY3VtZW50LmNvb2tpZT1sKGEsIiIsIlRodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDAgR01UIixjLGIsaCxkKTtyZXR1cm4hMH0saGFzOmZ1bmN0aW9uKGEpe3JldHVybiFhfHxwLnRlc3QoYSk\/ITE6KG5ldyBSZWdFeHAoIig\/Ol58O1xccyopIitlbmNvZGVVUklDb21wb25lbnQoYSkucmVwbGFjZShuLCJcXCQmIikrIlxccypcXD0iKSkudGVzdChkb2N1bWVudC5jb29raWUpfSwKa2V5czpmdW5jdGlvbigpe2Zvcih2YXIgYT1kb2N1bWVudC5jb29raWUucmVwbGFjZSgvKCg\/Ol58XHMqOylbXj1dKykoPz07fCQpfF5ccyp8XHMqKD86PVteO10qKT8oPzpcMXwkKS9nLCIiKS5zcGxpdCgvXHMqKD86PVteO10qKT87XHMqLyksYz1hLmxlbmd0aCxiPTA7YjxjO2IrKylhW2JdPWRlY29kZVVSSUNvbXBvbmVudChhW2JdKTtyZXR1cm4gYX0sY2xlYXI6ZnVuY3Rpb24oYSxjLGIsaCl7Zm9yKHZhciBkPXRoaXMua2V5cygpLGY9ZC5sZW5ndGgsZT0wO2U8ZjtlKyspdGhpcy5yZW1vdmVJdGVtKGRbZV0sYSxjLGIsaCl9LGxvZzpmdW5jdGlvbihhLGMsYixoLGQsZil7InVuZGVmaW5lZCI9PT10eXBlb2YgZiYmKGY9NSk7InVuZGVmaW5lZCI9PT10eXBlb2Ygd2luZG93LkNvb2tpZUxvZ2dlcj9mJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Q29va2llcy5sb2coYSxjLGIsaCxkLGYtMSl9LDFFMyk6d2luZG93LkNvb2tpZUxvZ2dlci5sb2coYSxjLGIsaCxkKX0saXNDb29raWVBbGxvd2VkOmZ1bmN0aW9uKGEsCmMpe3JldHVybiJ1bmRlZmluZWQiPT09dHlwZW9mIHdpbmRvdy5Db29raWVDb25zZW50fHwidW5kZWZpbmVkIj09PXR5cGVvZiB3aW5kb3cuQ29va2llQ29uc2VudC5pc0Nvb2tpZUFsbG93ZWQ\/YyghMCk6d2luZG93LkNvb2tpZUNvbnNlbnQuaXNDb29raWVBbGxvd2VkKGEsYyl9fTt3aW5kb3cuQ29va2llTG9nZ2VyPXtfc3RhY2s6W10saW5pdDpmdW5jdGlvbigpe2xldCBhPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkZWFsZXJQcm92aW5jZUNvZGUiKTthJiYiUUMiPT1uZXcgU3RyaW5nKGEudmFsdWUpJiYxPT1NYXRoLmZsb29yKDMqTWF0aC5yYW5kb20oKSkmJmZldGNoKCIvcHJveHlfcmQyYy9kMmNhcGkvbG9nL2Nvb2tpZXMvYWN0aXZlIikudGhlbihmdW5jdGlvbihjKXtyZXR1cm4gYy5qc29uKCl9KS50aGVuKGZ1bmN0aW9uKGMpeyJhY3RpdmUiPT09Yy5zdGF0dXMmJkNvb2tpZUxvZ2dlci53YWl0U3RhY2soKX0pfSxsb2c6ZnVuY3Rpb24oYSxjLGIsaCxkKXtpZigibGl2ZSI9PT0Kd2luZG93LmRlcGxveW1lbnRUeXBlLnRvTG93ZXJDYXNlKCkpe2RlYnVnKCJMb2dnaW5nIGNvb2tpZToiLHtuYW1lOmEsdmFsdWU6Y3x8IiIsZHVyYXRpb246bShiLCJudW1iZXIiKSxwYXRoOmgsZG9tYWluOmR9KTt2YXIgZixlLGc9InVuZGVmaW5lZCIhPXR5cGVvZiBjdXJyZW50U2l0ZUlEP2N1cnJlbnRTaXRlSUQ6bnVsbCE9KGU9bnVsbD09KGY9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNpdGVJRCIpKT92b2lkIDA6Zi52YWx1ZSk\/ZToiIjt0aGlzLl9zdGFjay5wdXNoKHtuYW1lOmEsZHVyYXRpb246bShiLCJudW1iZXIiKSxwYXRoOmh8fCIvIixkb21haW46ZHx8d2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLHVyaTp3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUsc2l0ZWlkOmcsdmFsdWU6YnRvYShjKX0pfX0sX3NlbmRTdGFjazpmdW5jdGlvbigpe2lmKDAhPT10aGlzLl9zdGFjay5sZW5ndGgpe3ZhciBhPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb29raWVMb2dUb2tlbiIpPwpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29va2llTG9nVG9rZW4iKS52YWx1ZTpudWxsO2lmKGEpe3ZhciBjPSJ1bmRlZmluZWQiIT10eXBlb2YgY3VycmVudFNpdGVJRD9jdXJyZW50U2l0ZUlEOmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaXRlSUQiKT9kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2l0ZUlEIikudmFsdWU6IiI7KG5ldyBXb3JrZXIoIi9qcy92YW5pbGxhanMvY29va2llV29ya2VyLmpzIikpLnBvc3RNZXNzYWdlKHt0b2tlbjphLHNpdGVJRDpjLHN0YWNrOkNvb2tpZUxvZ2dlci5fc3RhY2t9KTtDb29raWVMb2dnZXIuX3N0YWNrPVtdfWVsc2UgZGVidWcoIk5vIGNvb2tpZSBsb2cgdG9rZW4gZm91bmQuIil9fSx3YWl0U3RhY2s6ZnVuY3Rpb24oKXsibGl2ZSI9PT13aW5kb3cuZGVwbG95bWVudFR5cGUudG9Mb3dlckNhc2UoKSYmKHNldFRpbWVvdXQoZnVuY3Rpb24oKXtDb29raWVMb2dnZXIuX3NlbmRTdGFjaygpfSwxRTQpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJiZWZvcmV1bmxvYWQiLApmdW5jdGlvbigpe0Nvb2tpZUxvZ2dlci5fc2VuZFN0YWNrKCl9KSl9fTt3aW5kb3cuQ29va2llTG9nZ2VyLmluaXQoKX0pKCk7Ci8qKiAvbS9qcy9qcXVlcnkuYmFzZTY0LmpzICoqLwp2YXIgX19fZDJjX2pxdWVyeWJhc2U2NGpzX2Nfb249IjIwMjUtMDUtMjMgMTc6MDk6MjQiOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX2pxdWVyeWJhc2U2NGpzX2Nfb249IjIwMjQtMDEtMzEgMTQ6MzU6NDgiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfanF1ZXJ5YmFzZTY0anNfY19vbj0iMjAyMy0wMS0xMiAxMTozNTo1OCI7InVzZSBzdHJpY3QiO19fX2QyY19qcXVlcnliYXNlNjRqc19jX29uPSIyMDIzLTAxLTEyIDEwOjQ1OjM5IjsidXNlIHN0cmljdCI7X19fZDJjX2pxdWVyeWJhc2U2NGpzX2Nfb249IjIwMjEtMTItMTUgMTI6NDM6MzQiOyJ1c2Ugc3RyaWN0IjsKalF1ZXJ5LmJhc2U2ND1mdW5jdGlvbihrKXtmdW5jdGlvbiBlKGEsYyl7YT0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyIuaW5kZXhPZihhLmNoYXJBdChjKSk7aWYoLTE9PT1hKXRocm93IkNhbm5vdCBkZWNvZGUgYmFzZTY0IjtyZXR1cm4gYX1mdW5jdGlvbiBoKGEsYyl7YT1hLmNoYXJDb2RlQXQoYyk7aWYoMjU1PGEpdGhyb3ciSU5WQUxJRF9DSEFSQUNURVJfRVJSOiBET00gRXhjZXB0aW9uIDUiO3JldHVybiBhfXJldHVybntkZWNvZGU6ZnVuY3Rpb24oYSl7dmFyIGM9MCxiLGY9YS5sZW5ndGgsZD1bXTthPVN0cmluZyhhKTtpZigwPT09ZilyZXR1cm4gYTtpZigwIT09ZiU0KXRocm93IkNhbm5vdCBkZWNvZGUgYmFzZTY0IjsiPSI9PT1hLmNoYXJBdChmLTEpJiYoYz0xLCI9Ij09PWEuY2hhckF0KGYtMikmJihjPTIpLGYtPTQpO2ZvcihiPTA7YjxmO2IrPTQpe3ZhciBnPWUoYSxiKTw8MTh8ZShhLGIrMSk8PAoxMnxlKGEsYisyKTw8NnxlKGEsYiszKTtkLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShnPj4xNixnPj44JjI1NSxnJjI1NSkpfXN3aXRjaChjKXtjYXNlIDE6Zz1lKGEsYik8PDE4fGUoYSxiKzEpPDwxMnxlKGEsYisyKTw8NjtkLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShnPj4xNixnPj44JjI1NSkpO2JyZWFrO2Nhc2UgMjpnPWUoYSxiKTw8MTh8ZShhLGIrMSk8PDEyLGQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGc+PjE2KSl9cmV0dXJuIGQuam9pbigiIil9LGVuY29kZTpmdW5jdGlvbihhKXtpZigxIT09YXJndW1lbnRzLmxlbmd0aCl0aHJvdyJTeW50YXhFcnJvcjogZXhhY3RseSBvbmUgYXJndW1lbnQgcmVxdWlyZWQiO2E9U3RyaW5nKGEpO3ZhciBjLGI9W10sZj1hLmxlbmd0aC1hLmxlbmd0aCUzO2lmKDA9PT1hLmxlbmd0aClyZXR1cm4gYTtmb3IoYz0wO2M8ZjtjKz0zKXt2YXIgZD1oKGEsYyk8PDE2fGgoYSxjKzEpPDw4fGgoYSxjKzIpO2IucHVzaCgiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyIuY2hhckF0KGQ+PgoxOCkpO2IucHVzaCgiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyIuY2hhckF0KGQ+PjEyJjYzKSk7Yi5wdXNoKCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIi5jaGFyQXQoZD4+NiY2MykpO2IucHVzaCgiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyIuY2hhckF0KGQmNjMpKX1zd2l0Y2goYS5sZW5ndGgtZil7Y2FzZSAxOmQ9aChhLGMpPDwxNjtiLnB1c2goIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iLmNoYXJBdChkPj4xOCkrIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iLmNoYXJBdChkPj4xMiY2MykrIj09Iik7YnJlYWs7Y2FzZSAyOmQ9CmgoYSxjKTw8MTZ8aChhLGMrMSk8PDgsYi5wdXNoKCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIi5jaGFyQXQoZD4+MTgpKyJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIi5jaGFyQXQoZD4+MTImNjMpKyJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIi5jaGFyQXQoZD4+NiY2MykrIj0iKX1yZXR1cm4gYi5qb2luKCIiKX0sVkVSU0lPTjoiMS4wIn19KGpRdWVyeSk7Ci8qKiAvbS9qcy9qcXVlcnkuZGFya3Rvb2x0aXAuanMgKiovCnZhciBfX19kMmNfanF1ZXJ5ZGFya3Rvb2x0aXBqc19jX29uPSIyMDI1LTA1LTIzIDE3OjA5OjQ4IjsndXNlIHN0cmljdCc7dmFyIF9fX2QyY19qcXVlcnlkYXJrdG9vbHRpcGpzX2Nfb249IjIwMjQtMDMtMjUgMTI6MzM6MDciOyJ1c2Ugc3RyaWN0IjsKKGZ1bmN0aW9uKGIpe2Z1bmN0aW9uIGUoYSxjKXt0aGlzLmJlYXJlcj1hO3RoaXMub3B0aW9ucz1jO3RoaXMuaGlkZUV2ZW50O3RoaXMuaGlkaW5nPSExO3RoaXMubW91c2VPdmVyTW9kZT0iaG92ZXIiPT10aGlzLm9wdGlvbnMudHJpZ2dlcnx8Im1vdXNlb3ZlciI9PXRoaXMub3B0aW9ucy50cmlnZ2VyfHwib25tb3VzZW92ZXIiPT10aGlzLm9wdGlvbnMudHJpZ2dlcn1lLnByb3RvdHlwZT17c2hvdzpmdW5jdGlvbigpe3ZhciBhPXRoaXM7dGhpcy5vcHRpb25zLm1vZGFsJiZ0aGlzLm1vZGFsTGF5ZXIuY3NzKCJkaXNwbGF5IiwiYmxvY2siKTt0aGlzLnRvb2x0aXAuY3NzKCJkaXNwbGF5IiwiYmxvY2siKTthLm1vdXNlT3Zlck1vZGUmJih0aGlzLnRvb2x0aXAub24oIm1vdXNlb3ZlciIsZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQoYS5oaWRlRXZlbnQpO2EuaGlkaW5nPSExfSksdGhpcy50b29sdGlwLm9uKCJtb3VzZW91dCIsZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQoYS5oaWRlRXZlbnQpOwphLmhpZGUoKTthLmhpZGluZz0hMX0pKX0saGlkZTpmdW5jdGlvbigpe3ZhciBhPXRoaXM7YS5oaWRpbmd8fChhLmhpZGluZz0hMCx0aGlzLmhpZGVFdmVudD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YS5oaWRpbmc9ITE7YS50b29sdGlwLmhpZGUoKX0pLGEub3B0aW9ucy5tb2RhbCYmKGEuaGlkaW5nPSExLGEubW9kYWxMYXllci5oaWRlKCkpLHRoaXMub3B0aW9ucy5vbkNsb3NlKCkpfSx0b2dnbGU6ZnVuY3Rpb24oKXt0aGlzLnRvb2x0aXAuaXMoIjp2aXNpYmxlIik\/dGhpcy5oaWRlKCk6dGhpcy5zaG93KCl9LGFkZEFuaW1hdGlvbjpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLm9wdGlvbnMuYW5pbWF0aW9uKXtjYXNlICJmYWRlSW4iOnRoaXMudG9vbHRpcC5hZGRDbGFzcygiYW5pbWF0ZWQiKTt0aGlzLnRvb2x0aXAuYWRkQ2xhc3MoImZhZGVJbiIpO2JyZWFrO2Nhc2UgImZsaXBJbiI6dGhpcy50b29sdGlwLmFkZENsYXNzKCJhbmltYXRlZCIpLHRoaXMudG9vbHRpcC5hZGRDbGFzcygiZmxpcEluIil9fSwKc2V0Q29udGVudDpmdW5jdGlvbigpe2IodGhpcy5iZWFyZXIpLmNzcygiY3Vyc29yIiwicG9pbnRlciIpO2lmKHRoaXMub3B0aW9ucy5jb250ZW50KXRoaXMuY29udGVudD10aGlzLm9wdGlvbnMuY29udGVudDtlbHNlIGlmKHRoaXMuYmVhcmVyLmF0dHIoImRhdGEtdG9vbHRpcCIpKXRoaXMuY29udGVudD10aGlzLmJlYXJlci5hdHRyKCJkYXRhLXRvb2x0aXAiKTtlbHNlIHJldHVybjtpZigiIyI9PXRoaXMuY29udGVudC5jaGFyQXQoMCkpe2lmKHRoaXMub3B0aW9ucy5kZWxldGVfY29udGVudCl7dmFyIGE9Yih0aGlzLmNvbnRlbnQpLmh0bWwoKTtiKHRoaXMuY29udGVudCkuaHRtbCgiIik7dGhpcy5jb250ZW50PWE7ZGVsZXRlIGF9ZWxzZSBiKHRoaXMuY29udGVudCkuaGlkZSgpLHRoaXMuY29udGVudD1iKHRoaXMuY29udGVudCkuaHRtbCgpO3RoaXMuY29udGVudFR5cGU9Imh0bWwifWVsc2UgdGhpcy5jb250ZW50VHlwZT0idGV4dCI7YT0iIiE9dGhpcy5iZWFyZXIuYXR0cigiaWQiKSYmCiJ1bmRlZmluZWQiIT10aGlzLmJlYXJlci5hdHRyKCJpZCIpPyJpZD0nZGFya3Rvb2x0aXAtIit0aGlzLmJlYXJlci5hdHRyKCJpZCIpKyInIjoiaWQ9J2Rhcmt0b29sdGlwLSIrKERhdGUubm93KCkrTWF0aC5mbG9vcigxRTQqTWF0aC5yYW5kb20oKSkpKyInIjswPT09YigiSU5TLmRhcmt0b29sdGlwLW1vZGFsLWxheWVyIikubGVuZ3RoJiYodGhpcy5tb2RhbExheWVyPWIoIjxpbnMgY2xhc3M9J2Rhcmt0b29sdGlwLW1vZGFsLWxheWVyJz48L2lucz4iKSk7dGhpcy50b29sdGlwPWIoIjxpbnMgIithKyIgY2xhc3MgPSAnZGFyay10b29sdGlwICIrdGhpcy5vcHRpb25zLnRoZW1lKyIgIit0aGlzLm9wdGlvbnMuc2l6ZSsiICIrdGhpcy5vcHRpb25zLmdyYXZpdHkrIic+PGRpdj4iK3RoaXMuY29udGVudCsiPC9kaXY+PGRpdiBjbGFzcyA9ICd0aXAnPjwvZGl2PjwvaW5zPiIpO3RoaXMudGlwPXRoaXMudG9vbHRpcC5maW5kKCIudGlwIik7YigiYm9keSIpLmFwcGVuZCh0aGlzLm1vZGFsTGF5ZXIpOwpiKCJib2R5IikuYXBwZW5kKHRoaXMudG9vbHRpcCk7Imh0bWwiPT10aGlzLmNvbnRlbnRUeXBlJiZ0aGlzLnRvb2x0aXAuY3NzKCJtYXgtd2lkdGgiLCJub25lIik7dGhpcy50b29sdGlwLmNzcygib3BhY2l0eSIsdGhpcy5vcHRpb25zLm9wYWNpdHkpO3RoaXMuYWRkQW5pbWF0aW9uKCk7dGhpcy5vcHRpb25zLmNvbmZpcm0mJnRoaXMuYWRkQ29uZmlybSgpfSxzZXRQb3NpdGlvbnM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmJlYXJlci5vZmZzZXQoKS5sZWZ0LGM9dGhpcy5iZWFyZXIub2Zmc2V0KCkudG9wO3N3aXRjaCh0aGlzLm9wdGlvbnMuZ3Jhdml0eSl7Y2FzZSAic291dGgiOmErPXRoaXMuYmVhcmVyLm91dGVyV2lkdGgoKS8yLXRoaXMudG9vbHRpcC5vdXRlcldpZHRoKCkvMjtjKz0tdGhpcy50b29sdGlwLm91dGVySGVpZ2h0KCktdGhpcy50aXAub3V0ZXJIZWlnaHQoKS8yO2JyZWFrO2Nhc2UgIndlc3QiOmErPXRoaXMuYmVhcmVyLm91dGVyV2lkdGgoKSt0aGlzLnRpcC5vdXRlcldpZHRoKCkvCjI7Yys9dGhpcy5iZWFyZXIub3V0ZXJIZWlnaHQoKS8yLXRoaXMudG9vbHRpcC5vdXRlckhlaWdodCgpLzI7YnJlYWs7Y2FzZSAibm9ydGgiOmErPXRoaXMuYmVhcmVyLm91dGVyV2lkdGgoKS8yLXRoaXMudG9vbHRpcC5vdXRlcldpZHRoKCkvMjtjKz10aGlzLmJlYXJlci5vdXRlckhlaWdodCgpK3RoaXMudGlwLm91dGVySGVpZ2h0KCkvMjticmVhaztjYXNlICJlYXN0IjphKz0tdGhpcy50b29sdGlwLm91dGVyV2lkdGgoKS10aGlzLnRpcC5vdXRlcldpZHRoKCkvMixjKz10aGlzLmJlYXJlci5vdXRlckhlaWdodCgpLzItdGhpcy50b29sdGlwLm91dGVySGVpZ2h0KCkvMn10aGlzLm9wdGlvbnMuYXV0b0xlZnQmJnRoaXMudG9vbHRpcC5jc3MoImxlZnQiLGEpO3RoaXMub3B0aW9ucy5hdXRvVG9wJiZ0aGlzLnRvb2x0aXAuY3NzKCJ0b3AiLGMpfSxzZXRFdmVudHM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGM9YS5vcHRpb25zLmhvdmVyRGVsYXksZjtpZihhLm1vdXNlT3Zlck1vZGUpdGhpcy5iZWFyZXIub24oIm1vdXNlZW50ZXIiLApmdW5jdGlvbigpe2Y9c2V0VGltZW91dChmdW5jdGlvbigpe2Euc2V0UG9zaXRpb25zKCk7YS5zaG93KCl9LGMpfSkub24oIm1vdXNlbGVhdmUiLGZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KGYpO2EuaGlkZSgpfSk7ZWxzZSBpZigiY2xpY2siPT10aGlzLm9wdGlvbnMudHJpZ2dlcnx8Im9uY2xpayI9PXRoaXMub3B0aW9ucy50cmlnZ2VyKXRoaXMudG9vbHRpcC5vbigiY2xpY2siLGZ1bmN0aW9uKGQpe2Quc3RvcFByb3BhZ2F0aW9uKCl9KSx0aGlzLmJlYXJlci5vbigiY2xpY2siLGZ1bmN0aW9uKGQpe2QucHJldmVudERlZmF1bHQoKTthLnNldFBvc2l0aW9ucygpO2EudG9nZ2xlKCk7ZC5zdG9wUHJvcGFnYXRpb24oKX0pLGIoImh0bWwiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7YS5oaWRlKCl9KX0sYWN0aXZhdGU6ZnVuY3Rpb24oKXt0aGlzLnNldENvbnRlbnQoKTt0aGlzLmNvbnRlbnQmJnRoaXMuc2V0RXZlbnRzKCl9LGFkZENvbmZpcm06ZnVuY3Rpb24oKXt0aGlzLnRvb2x0aXAuYXBwZW5kKCI8dWwgY2xhc3MgPSAnY29uZmlybSc+PGxpIGNsYXNzID0gJ2Rhcmt0b29sdGlwLXllcyc+IisKdGhpcy5vcHRpb25zLnllcysiPC9saT48bGkgY2xhc3MgPSAnZGFya3Rvb2x0aXAtbm8nPiIrdGhpcy5vcHRpb25zLm5vKyI8L2xpPjwvdWw+Iik7dGhpcy5zZXRDb25maXJtRXZlbnRzKCl9LHNldENvbmZpcm1FdmVudHM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3RoaXMudG9vbHRpcC5maW5kKCJsaS5kYXJrdG9vbHRpcC15ZXMiKS5vbigiY2xpY2siLGZ1bmN0aW9uKGMpe2Eub25ZZXMoKTtjLnN0b3BQcm9wYWdhdGlvbigpfSk7dGhpcy50b29sdGlwLmZpbmQoImxpLmRhcmt0b29sdGlwLW5vIikub24oImNsaWNrIixmdW5jdGlvbihjKXthLm9uTm8oKTtjLnN0b3BQcm9wYWdhdGlvbigpfSl9LGZpbmFsTWVzc2FnZTpmdW5jdGlvbigpe2lmKHRoaXMub3B0aW9ucy5maW5hbE1lc3NhZ2Upe3ZhciBhPXRoaXM7YS50b29sdGlwLmZpbmQoImRpdjpmaXJzdCIpLmh0bWwodGhpcy5vcHRpb25zLmZpbmFsTWVzc2FnZSk7YS50b29sdGlwLmZpbmQoInVsIikucmVtb3ZlKCk7YS5zZXRQb3NpdGlvbnMoKTsKc2V0VGltZW91dChmdW5jdGlvbigpe2EuaGlkZSgpO2Euc2V0Q29udGVudCgpfSxhLm9wdGlvbnMuZmluYWxNZXNzYWdlRHVyYXRpb24pfWVsc2UgdGhpcy5oaWRlKCl9LG9uWWVzOmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLm9uWWVzKHRoaXMuYmVhcmVyKTt0aGlzLmZpbmFsTWVzc2FnZSgpfSxvbk5vOmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLm9uTm8odGhpcy5iZWFyZXIpO3RoaXMuaGlkZSgpfX07Yi5mbi5kYXJrVG9vbHRpcD1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7YT1iLmV4dGVuZCh7fSxiLmZuLmRhcmtUb29sdGlwLmRlZmF1bHRzLGEpOyhuZXcgZShiKHRoaXMpLGEpKS5hY3RpdmF0ZSgpfSl9O2IuZm4uZGFya1Rvb2x0aXAuZGVmYXVsdHM9e2FuaW1hdGlvbjoibm9uZSIsY29uZmlybTohMSxjb250ZW50OiIiLGZpbmFsTWVzc2FnZToiIixmaW5hbE1lc3NhZ2VEdXJhdGlvbjoxRTMsZ3Jhdml0eToic291dGgiLGhvdmVyRGVsYXk6MCxtb2RhbDohMSwKbm86Ik5vIixvbk5vOmZ1bmN0aW9uKCl7fSxvblllczpmdW5jdGlvbigpe30sb3BhY2l0eTouOSxzaXplOiJtZWRpdW0iLHRoZW1lOiJkYXJrIix0cmlnZ2VyOiJob3ZlciIseWVzOiJZZXMiLGF1dG9Ub3A6ITAsYXV0b0xlZnQ6ITAsb25DbG9zZTpmdW5jdGlvbigpe319fSkoalF1ZXJ5KTsKLyoqIC9tL2pzL2pxdWVyeS52YWxpZGl0eS5taW4uanMgKiovCihmdW5jdGlvbihhKXtmdW5jdGlvbiBiKGIsYyxlKXt2YXIgZj0oYi5yZWR1Y3Rpb258fGIpLmZpbHRlcihhLnZhbGlkaXR5LnNldHRpbmdzLmVsZW1lbnRTdXBwb3J0KSxpPVtdO3JldHVybiAxPmIubGVuZ3RoPyhjb25zb2xlLmxvZygiQ291bGQgbm90IHZhbGlkYXRlIGVsZW1lbnQiLGIpLGIpOihmLmVhY2goZnVuY3Rpb24oKXtjKHRoaXMpP2kucHVzaCh0aGlzKTpkKHRoaXMsZyhlLHtmaWVsZDpoKHRoaXMpfSkpfSksYi5yZWR1Y3Rpb249YShpKSxiKX1mdW5jdGlvbiBjKCl7YS52YWxpZGl0eS5pc1ZhbGlkYXRpbmcoKSYmKGEudmFsaWRpdHkucmVwb3J0LmVycm9ycysrLGEudmFsaWRpdHkucmVwb3J0LnZhbGlkPSExKX1mdW5jdGlvbiBkKGIsZCl7YygpLGEudmFsaWRpdHkub3V0cHV0c1thLnZhbGlkaXR5LnNldHRpbmdzLm91dHB1dE1vZGVdJiZhLnZhbGlkaXR5Lm91dHB1dHNbYS52YWxpZGl0eS5zZXR0aW5ncy5vdXRwdXRNb2RlXS5yYWlzZSYmYS52YWxpZGl0eS5vdXRwdXRzW2EudmFsaWRpdHkuc2V0dGluZ3Mub3V0cHV0TW9kZV0ucmFpc2UoYShiKSxkKX1mdW5jdGlvbiBlKGIsZCl7YygpLGEudmFsaWRpdHkub3V0cHV0c1thLnZhbGlkaXR5LnNldHRpbmdzLm91dHB1dE1vZGVdJiZhLnZhbGlkaXR5Lm91dHB1dHNbYS52YWxpZGl0eS5zZXR0aW5ncy5vdXRwdXRNb2RlXS5yYWlzZUFnZ3JlZ2F0ZSYmYS52YWxpZGl0eS5vdXRwdXRzW2EudmFsaWRpdHkuc2V0dGluZ3Mub3V0cHV0TW9kZV0ucmFpc2VBZ2dyZWdhdGUoYixkKX1mdW5jdGlvbiBmKGEpe3ZhciBiPTA7cmV0dXJuIGEuZWFjaChmdW5jdGlvbigpe3ZhciBhPXBhcnNlRmxvYXQodGhpcy52YWx1ZSk7Yis9aXNOYU4oYSk\/MDphfSksYn1mdW5jdGlvbiBnKGEsYil7Zm9yKHZhciBjIGluIGIpYT1hLnJlcGxhY2UoIiN7IitjKyJ9IixiW2NdKTtyZXR1cm4gaihhKX1mdW5jdGlvbiBoKGIpe3ZhciBjPWEoYiksZD1hLnZhbGlkaXR5LnNldHRpbmdzLmRlZmF1bHRGaWVsZE5hbWU7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBjLmF0dHIoInRpdGxlIikmJmMuYXR0cigidGl0bGUiKS5sZW5ndGgpZD1jLmF0dHIoInRpdGxlIik7ZWxzZSBpZigvXihbQS1aMC05XVthLXpdKikrJC8udGVzdChiLmlkKSlkPWIuaWQucmVwbGFjZSgvKFtBLVowLTldKVthLXpdKi9nLCIgJCYiKTtlbHNlIGlmKC9eW2EtejAtOV9dKiQvLnRlc3QoYi5pZCkpe2Zvcih2YXIgZT1iLmlkLnNwbGl0KCJfIiksZj0wO2Y8ZS5sZW5ndGg7KytmKWVbZl09aihlW2ZdKTtkPWUuam9pbigiICIpfXJldHVybiBkfWZ1bmN0aW9uIGooYSl7cmV0dXJuIGEuc3Vic3RyaW5nP2Euc3Vic3RyaW5nKDAsMSkudG9VcHBlckNhc2UoKSthLnN1YnN0cmluZygxLGEubGVuZ3RoKTphfWEudmFsaWRpdHk9e3NldHRpbmdzOmEuZXh0ZW5kKHtvdXRwdXRNb2RlOiJsYWJlbCIsY3NzQ2xhc3M6ImVycm9yIixzY3JvbGxUbzohMSxtb2RhbEVycm9yc0NsaWNrYWJsZTohMCxkZWZhdWx0RmllbGROYW1lOiJUaGlzIGZpZWxkIixlbGVtZW50U3VwcG9ydDoiOnRleHQsIFt0eXBlPXRlbF0sIFt0eXBlPWVtYWlsXSwgW3R5cGU9ZGF0ZV0sIDpwYXNzd29yZCwgdGV4dGFyZWEsIHNlbGVjdCwgOnJhZGlvLCA6Y2hlY2tib3giLGFyZ1RvU3RyaW5nOmZ1bmN0aW9uKGEpe3JldHVybiBhLmdldERhdGU\/YS5nZXRNb250aCgpKzErIi8iK2EuZ2V0RGF0ZSgpKyIvIithLmdldEZ1bGxZZWFyKCk6YX19LHt9KSxwYXR0ZXJuczp7aW50ZWdlcjovXlxkKyQvLGRhdGU6L14oKDA\/XGQpfCgxWzAxMl0pKVwvKFswMTJdP1xkfDMwfDMxKVwvXGR7MSw0fSQvLGVtYWlsOi9eKCgoW2Etel18XGR8WyEjXCQlJidcKlwrXC1cLz1cP1xeX2B7XHx9fl18W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKyhcLihbYS16XXxcZHxbISNcJCUmJ1wqXCtcLVwvPVw\/XF5fYHtcfH1+XXxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkrKSopfCgoXHgyMikoKCgoXHgyMHxceDA5KSooXHgwZFx4MGEpKT8oXHgyMHxceDA5KSspPygoW1x4MDEtXHgwOFx4MGJceDBjXHgwZS1ceDFmXHg3Zl18XHgyMXxbXHgyMy1ceDViXXxbXHg1ZC1ceDdlXXxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSl8KFxcKFtceDAxLVx4MDlceDBiXHgwY1x4MGQtXHg3Zl18W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKSkpKigoKFx4MjB8XHgwOSkqKFx4MGRceDBhKSk\/KFx4MjB8XHgwOSkrKT8oXHgyMikpKUAoKChbYS16XXxcZHxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSl8KChbYS16XXxcZHxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkoW2Etel18XGR8LXxcLnxffH58W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKihbYS16XXxcZHxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkpKVwuKSsoKFthLXpdfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKXwoKFthLXpdfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKShbYS16XXxcZHwtfFwufF98fnxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkqKFthLXpdfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKSkpXC4\/JC9pLHVzZDovXlwkPyhcZHsxLDN9LD8oXGR7M30sPykqXGR7M30oXC5cZHswLDJ9KT98XGR7MSwzfShcLlxkezAsMn0pP3xcLlxkezEsMn0\/KSQvLHVybDovXihodHRwcz98ZnRwKTpcL1wvKCgoKFthLXpdfFxkfC18XC58X3x+fFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKXwoJVtcZGEtZl17Mn0pfFshXCQmJ1woXClcKlwrLDs9XXw6KSpAKT8oKChcZHxbMS05XVxkfDFcZFxkfDJbMC00XVxkfDI1WzAtNV0pXC4oXGR8WzEtOV1cZHwxXGRcZHwyWzAtNF1cZHwyNVswLTVdKVwuKFxkfFsxLTldXGR8MVxkXGR8MlswLTRdXGR8MjVbMC01XSlcLihcZHxbMS05XVxkfDFcZFxkfDJbMC00XVxkfDI1WzAtNV0pKXwoKChbYS16XXxcZHxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSl8KChbYS16XXxcZHxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkoW2Etel18XGR8LXxcLnxffH58W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKihbYS16XXxcZHxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkpKVwuKSsoKFthLXpdfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKXwoKFthLXpdfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKShbYS16XXxcZHwtfFwufF98fnxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkqKFthLXpdfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKSkpXC4\/KSg6XGQqKT8pKFwvKCgoW2Etel18XGR8LXxcLnxffH58W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pfCglW1xkYS1mXXsyfSl8WyFcJCYnXChcKVwqXCssOz1dfDp8QCkrKFwvKChbYS16XXxcZHwtfFwufF98fnxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSl8KCVbXGRhLWZdezJ9KXxbIVwkJidcKFwpXCpcKyw7PV18OnxAKSopKik\/KT8oXD8oKChbYS16XXxcZHwtfFwufF98fnxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSl8KCVbXGRhLWZdezJ9KXxbIVwkJidcKFwpXCpcKyw7PV18OnxAKXxbXHVFMDAwLVx1RjhGRl18XC98XD8pKik\/KFwjKCgoW2Etel18XGR8LXxcLnxffH58W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pfCglW1xkYS1mXXsyfSl8WyFcJCYnXChcKVwqXCssOz1dfDp8QCl8XC98XD8pKik\/JC9pLG51bWJlcjovXlsrLV0\/KFxkKyhcLlxkKik\/fFwuXGQrKShbRWVdXGQrKT8kLyx6aXA6L15cZHs1fSgtXGR7NH0pPyQvLHBob25lOi9eWzItOV1cZHsyfS1cZHszfS1cZHs0fSQvLGd1aWQ6L14oXHs\/KFswLTlhLWZBLUZdKXs4fS0oKFswLTlhLWZBLUZdKXs0fS0pezN9KFswLTlhLWZBLUZdKXsxMn1cfT8pJC8sdGltZTEyOi9eWzAxXT9cZDpbMC01XVxkP1xzP1thQXBQXVwuP1ttTV1cLj8kLyx0aW1lMjQ6L14oMjB8MjF8MjJ8MjN8WzAxXVxkfFxkKSgoWzpdWzAtNV1cZCl7MSwyfSkkLyxub25IdG1sOi9eW148Pl0qJC99LG1lc3NhZ2VzOnthcmVhY29kZToiI3tmaWVsZH0gYWNjZXB0cyBvbmx5IGxvY2FsIGFyZWEgY29kZXMiLHJlcXVpcmU6IiN7ZmllbGR9IGlzIHJlcXVpcmVkLiIsbWF0Y2g6IiN7ZmllbGR9IGlzIGluIGFuIGludmFsaWQgZm9ybWF0LiIsaW50ZWdlcjoiI3tmaWVsZH0gbXVzdCBiZSBhIHBvc2l0aXZlLCB3aG9sZSBudW1iZXIuIixkYXRlOiIje2ZpZWxkfSBtdXN0IGJlIGZvcm1hdHRlZCBhcyBhIGRhdGUuIixlbWFpbDoiI3tmaWVsZH0gbXVzdCBiZSBmb3JtYXR0ZWQgYXMgYW4gZW1haWwuIix1c2Q6IiN7ZmllbGR9IG11c3QgYmUgZm9ybWF0dGVkIGFzIGEgVVMgRG9sbGFyIGFtb3VudC4iLHVybDoiI3tmaWVsZH0gbXVzdCBiZSBmb3JtYXR0ZWQgYXMgYSBVUkwuIixudW1iZXI6IiN7ZmllbGR9IG11c3QgYmUgZm9ybWF0dGVkIGFzIGEgbnVtYmVyLiIsemlwOiIje2ZpZWxkfSBtdXN0IGJlIGZvcm1hdHRlZCBhcyBhIHppcGNvZGUgIyMjIyMgb3IgIyMjIyMtIyMjIy4iLHBob25lOiIje2ZpZWxkfSBtdXN0IGJlIGZvcm1hdHRlZCBhcyBhIHBob25lIG51bWJlciAjIyMtIyMjLSMjIyMuIixndWlkOiIje2ZpZWxkfSBtdXN0IGJlIGZvcm1hdHRlZCBhcyBhIGd1aWQgbGlrZSB7M0YyNTA0RTAtNEY4OS0xMUQzLTlBMEMtMDMwNUU4MkMzMzAxfS4iLHRpbWUyNDoiI3tmaWVsZH0gbXVzdCBiZSBmb3JtYXR0ZWQgYXMgYSAyNCBob3VyIHRpbWU6IDIzOjAwLiIsdGltZTEyOiIje2ZpZWxkfSBtdXN0IGJlIGZvcm1hdHRlZCBhcyBhIDEyIGhvdXIgdGltZTogMTI6MDAgQU0vUE0iLGxlc3NUaGFuOiIje2ZpZWxkfSBtdXN0IGJlIGxlc3MgdGhhbiAje21heH0uIixsZXNzVGhhbk9yRXF1YWxUbzoiI3tmaWVsZH0gbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gI3ttYXh9LiIsZ3JlYXRlclRoYW46IiN7ZmllbGR9IG11c3QgYmUgZ3JlYXRlciB0aGFuICN7bWlufS4iLGdyZWF0ZXJUaGFuT3JFcXVhbFRvOiIje2ZpZWxkfSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAje21pbn0uIixyYW5nZToiI3tmaWVsZH0gbXVzdCBiZSBiZXR3ZWVuICN7bWlufSBhbmQgI3ttYXh9LiIsdG9vTG9uZzoiI3tmaWVsZH0gY2Fubm90IGJlIGxvbmdlciB0aGFuICN7bWF4fSBjaGFyYWN0ZXJzLiIsdG9vU2hvcnQ6IiN7ZmllbGR9IGNhbm5vdCBiZSBzaG9ydGVyIHRoYW4gI3ttaW59IGNoYXJhY3RlcnMuIixub25IdG1sOiIje2ZpZWxkfSBjYW5ub3QgY29udGFpbiBIVE1MIGNoYXJhY3RlcnMuIixhbHBoYWJldDoiI3tmaWVsZH0gY29udGFpbnMgZGlzYWxsb3dlZCBjaGFyYWN0ZXJzLiIsbWluQ2hhckNsYXNzOiIje2ZpZWxkfSBjYW5ub3QgaGF2ZSBtb3JlIHRoYW4gI3ttaW59ICN7Y2hhckNsYXNzfSBjaGFyYWN0ZXJzLiIsbWF4Q2hhckNsYXNzOiIje2ZpZWxkfSBjYW5ub3QgaGF2ZSBsZXNzIHRoYW4gI3ttaW59ICN7Y2hhckNsYXNzfSBjaGFyYWN0ZXJzLiIsZXF1YWw6IlZhbHVlcyBkb24ndCBtYXRjaC4iLGRpc3RpbmN0OiJBIHZhbHVlIHdhcyByZXBlYXRlZC4iLHN1bToiVmFsdWVzIGRvbid0IGFkZCB0byAje3N1bX0uIixzdW1NYXg6IlRoZSBzdW0gb2YgdGhlIHZhbHVlcyBtdXN0IGJlIGxlc3MgdGhhbiAje21heH0uIixzdW1NaW46IlRoZSBzdW0gb2YgdGhlIHZhbHVlcyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAje21pbn0uIixyYWRpb0NoZWNrZWQ6IlRoZSBzZWxlY3RlZCB2YWx1ZSBpcyBub3QgdmFsaWQuIixnZW5lcmljOiJJbnZhbGlkLiJ9LGNoYXJDbGFzc2VzOnthbHBoYWJldGljYWw6L1x3L2csbnVtZXJpYzovXGQvZyxhbHBoYW51bWVyaWM6L1tBLVphLXowLTldL2csc3ltYm9sOi9bXkEtWmEtejAtOV0vZ30sb3V0cHV0czp7fSxzZXR1cDpmdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5zZXR0aW5ncz1hLmV4dGVuZCh0aGlzLnNldHRpbmdzLGIpLHRoaXN9LHJlcG9ydDpudWxsLGlzVmFsaWRhdGluZzpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5yZXBvcnR9LHN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5vdXRwdXRzW3RoaXMuc2V0dGluZ3Mub3V0cHV0TW9kZV0mJnRoaXMub3V0cHV0c1t0aGlzLnNldHRpbmdzLm91dHB1dE1vZGVdLnN0YXJ0JiZ0aGlzLm91dHB1dHNbdGhpcy5zZXR0aW5ncy5vdXRwdXRNb2RlXS5zdGFydCgpLHRoaXMucmVwb3J0PXtlcnJvcnM6MCx2YWxpZDohMH19LGVuZDpmdW5jdGlvbigpe3ZhciBhPXRoaXMucmVwb3J0fHx7ZXJyb3JzOjAsdmFsaWQ6ITB9O3JldHVybiB0aGlzLnJlcG9ydD1udWxsLHRoaXMub3V0cHV0c1t0aGlzLnNldHRpbmdzLm91dHB1dE1vZGVdJiZ0aGlzLm91dHB1dHNbdGhpcy5zZXR0aW5ncy5vdXRwdXRNb2RlXS5lbmQmJnRoaXMub3V0cHV0c1t0aGlzLnNldHRpbmdzLm91dHB1dE1vZGVdLmVuZChhKSxhfSxjbGVhcjpmdW5jdGlvbigpe3RoaXMuc3RhcnQoKSx0aGlzLmVuZCgpfX0sYS5mbi5leHRlbmQoe3ZhbGlkaXR5OmZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtpZigiZm9ybSI9PXRoaXMudGFnTmFtZS50b0xvd2VyQ2FzZSgpKXt2YXIgYz1udWxsOyJzdHJpbmciPT10eXBlb2YgYj9jPWZ1bmN0aW9uKCl7YShiKS5yZXF1aXJlKCl9OmlzRnVuY3Rpb24oYikmJihjPWIpLGImJmEodGhpcykub24oInN1Ym1pdCIsZnVuY3Rpb24oKXtyZXR1cm4gYS52YWxpZGl0eS5zdGFydCgpLGMoKSxhLnZhbGlkaXR5LmVuZCgpLnZhbGlkfSl9fSl9LHJlcXVpcmU6ZnVuY3Rpb24oYyl7cmV0dXJuIGIodGhpcyxmdW5jdGlvbihiKXt2YXIgYz1hKGIpLnZhbCgpLGQ9dHJpbShjKS5sZW5ndGg7cmV0dXJuIGR9LGN8fGEudmFsaWRpdHkubWVzc2FnZXMucmVxdWlyZSl9LG1hdGNoOmZ1bmN0aW9uKGMsZCl7cmV0dXJuIGR8fChkPWEudmFsaWRpdHkubWVzc2FnZXMubWF0Y2gsInN0cmluZyI9PXR5cGVvZiBjJiZhLnZhbGlkaXR5Lm1lc3NhZ2VzW2NdJiYoZD1hLnZhbGlkaXR5Lm1lc3NhZ2VzW2NdKSksInN0cmluZyI9PXR5cGVvZiBjJiYoYz1hLnZhbGlkaXR5LnBhdHRlcm5zW2NdKSxiKHRoaXMsaXNGdW5jdGlvbihjKT9mdW5jdGlvbihhKXtyZXR1cm4hYS52YWx1ZS5sZW5ndGh8fGMoYS52YWx1ZSl9OmZ1bmN0aW9uKGEpe3JldHVybiBjLmdsb2JhbCYmKGMubGFzdEluZGV4PTApLCFhLnZhbHVlLmxlbmd0aHx8Yy50ZXN0KGEudmFsdWUpfSxkKX0scmFuZ2U6ZnVuY3Rpb24oYyxlLGYpe3JldHVybiBiKHRoaXMsYy5nZXRUaW1lJiZlLmdldFRpbWU\/ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IERhdGUoYS52YWx1ZSk7cmV0dXJuIGI+PW5ldyBEYXRlKGMpJiZiPD1uZXcgRGF0ZShlKX06Yy5zdWJzdHJpbmcmJmUuc3Vic3RyaW5nJiZCaWc\/ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IEJpZyhhLnZhbHVlKTtyZXR1cm4gYi5ncmVhdGVyVGhhbk9yRXF1YWxUbyhuZXcgQmlnKGMpKSYmYi5sZXNzVGhhbk9yRXF1YWxUbyhuZXcgQmlnKGUpKX06ZnVuY3Rpb24oYSl7dmFyIGI9cGFyc2VGbG9hdChhLnZhbHVlKTtyZXR1cm4gYj49YyYmYjw9ZX0sZnx8ZyhhLnZhbGlkaXR5Lm1lc3NhZ2VzLnJhbmdlLHttaW46YS52YWxpZGl0eS5zZXR0aW5ncy5hcmdUb1N0cmluZyhjKSxtYXg6YS52YWxpZGl0eS5zZXR0aW5ncy5hcmdUb1N0cmluZyhlKX0pKX0sZ3JlYXRlclRoYW46ZnVuY3Rpb24oYyxkKXtyZXR1cm4gYih0aGlzLGMuZ2V0VGltZT9mdW5jdGlvbihhKXtyZXR1cm4gbmV3IERhdGUoYS52YWx1ZSk+Y306Yy5zdWJzdHJpbmcmJkJpZz9mdW5jdGlvbihhKXtyZXR1cm4gbmV3IEJpZyhhLnZhbHVlKS5ncmVhdGVyVGhhbihuZXcgQmlnKGMpKX06ZnVuY3Rpb24oYSl7cmV0dXJuIHBhcnNlRmxvYXQoYS52YWx1ZSk+Y30sZHx8ZyhhLnZhbGlkaXR5Lm1lc3NhZ2VzLmdyZWF0ZXJUaGFuLHttaW46YS52YWxpZGl0eS5zZXR0aW5ncy5hcmdUb1N0cmluZyhjKX0pKX0sZ3JlYXRlclRoYW5PckVxdWFsVG86ZnVuY3Rpb24oYyxkKXtyZXR1cm4gYih0aGlzLGMuZ2V0VGltZT9mdW5jdGlvbihhKXtyZXR1cm4gbmV3IERhdGUoYS52YWx1ZSk+PWN9OmMuc3Vic3RyaW5nJiZCaWc\/ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBCaWcoYS52YWx1ZSkuZ3JlYXRlclRoYW5PckVxdWFsVG8obmV3IEJpZyhjKSl9OmZ1bmN0aW9uKGEpe3JldHVybiBwYXJzZUZsb2F0KGEudmFsdWUpPj1jfSxkfHxnKGEudmFsaWRpdHkubWVzc2FnZXMuZ3JlYXRlclRoYW5PckVxdWFsVG8se21pbjphLnZhbGlkaXR5LnNldHRpbmdzLmFyZ1RvU3RyaW5nKGMpfSkpfSxsZXNzVGhhbjpmdW5jdGlvbihjLGQpe3JldHVybiBiKHRoaXMsYy5nZXRUaW1lP2Z1bmN0aW9uKGEpe3JldHVybiBuZXcgRGF0ZShhLnZhbHVlKTxjfTpjLnN1YnN0cmluZyYmQmlnP2Z1bmN0aW9uKGEpe3JldHVybiBuZXcgQmlnKGEudmFsdWUpLmxlc3NUaGFuKG5ldyBCaWcoYykpfTpmdW5jdGlvbihhKXtyZXR1cm4gcGFyc2VGbG9hdChhLnZhbHVlKTxjfSxkfHxnKGEudmFsaWRpdHkubWVzc2FnZXMubGVzc1RoYW4se21heDphLnZhbGlkaXR5LnNldHRpbmdzLmFyZ1RvU3RyaW5nKGMpfSkpfSxsZXNzVGhhbk9yRXF1YWxUbzpmdW5jdGlvbihjLGQpe3JldHVybiBiKHRoaXMsYy5nZXRUaW1lP2Z1bmN0aW9uKGEpe3JldHVybiBuZXcgRGF0ZShhLnZhbHVlKTw9Y306Yy5zdWJzdHJpbmcmJkJpZz9mdW5jdGlvbihhKXtyZXR1cm4gbmV3IEJpZyhhLnZhbHVlKS5sZXNzVGhhbk9yRXF1YWxUbyhuZXcgQmlnKGMpKX06ZnVuY3Rpb24oYSl7cmV0dXJuIHBhcnNlRmxvYXQoYS52YWx1ZSk8PWN9LGR8fGcoYS52YWxpZGl0eS5tZXNzYWdlcy5sZXNzVGhhbk9yRXF1YWxUbyx7bWF4OmEudmFsaWRpdHkuc2V0dGluZ3MuYXJnVG9TdHJpbmcoYyl9KSl9LG1heExlbmd0aDpmdW5jdGlvbihjLGQpe3JldHVybiBiKHRoaXMsZnVuY3Rpb24oYSl7cmV0dXJuIGEudmFsdWUubGVuZ3RoPD1jfSxkfHxnKGEudmFsaWRpdHkubWVzc2FnZXMudG9vTG9uZyx7bWF4OmN9KSl9LG1pbkxlbmd0aDpmdW5jdGlvbihjLGQpe3JldHVybiBiKHRoaXMsZnVuY3Rpb24oYSl7cmV0dXJuIGEudmFsdWUubGVuZ3RoPj1jfSxkfHxnKGEudmFsaWRpdHkubWVzc2FnZXMudG9vU2hvcnQse21pbjpjfSkpfSxhbHBoYWJldDpmdW5jdGlvbihjLGQpe3ZhciBlPVtdO3JldHVybiBiKHRoaXMsZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTA7YjxhLnZhbHVlLmxlbmd0aDsrK2IpaWYoLTE9PWMuaW5kZXhPZihhLnZhbHVlLmNoYXJBdChiKSkpcmV0dXJuIGUucHVzaChhLnZhbHVlLmNoYXJBdChiKSksITE7cmV0dXJuITB9LGR8fGcoYS52YWxpZGl0eS5tZXNzYWdlcy5hbHBoYWJldCx7Y2hhcnM6ZS5qb2luKCIsICIpfSkpfSxtaW5DaGFyQ2xhc3M6ZnVuY3Rpb24oYyxkLGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgYyYmKGM9Yy50b0xvd2VyQ2FzZSgpLGEudmFsaWRpdHkuY2hhckNsYXNzZXNbY10mJihjPWEudmFsaWRpdHkuY2hhckNsYXNzZXNbY10pKSxiKHRoaXMsZnVuY3Rpb24oYSl7cmV0dXJuKGEudmFsdWUubWF0Y2goYyl8fFtdKS5sZW5ndGg+PWR9LGV8fGcoYS52YWxpZGl0eS5tZXNzYWdlcy5taW5DaGFyQ2xhc3Mse21pbjpkLGNoYXJDbGFzczpjfSkpfSxtYXhDaGFyQ2xhc3M6ZnVuY3Rpb24oYyxkLGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgYyYmKGM9Yy50b0xvd2VyQ2FzZSgpLGEudmFsaWRpdHkuY2hhckNsYXNzZXNbY10mJihjPWEudmFsaWRpdHkuY2hhckNsYXNzZXNbY10pKSxiKHRoaXMsZnVuY3Rpb24oYSl7cmV0dXJuKGEudmFsdWUubWF0Y2goYyl8fFtdKS5sZW5ndGg8PWR9LGV8fGcoYS52YWxpZGl0eS5tZXNzYWdlcy5tYXhDaGFyQ2xhc3Mse21heDpkLGNoYXJDbGFzczpjfSkpfSxwYXNzd29yZDpmdW5jdGlvbihiKXtyZXR1cm4gYj1hLmV4dGVuZCh7YWxwaGFiZXQ6bnVsbCxtaW5MZW5ndGg6MCxtYXhMZW5ndGg6MCxtaW5TeW1ib2w6MCxtaW5BbHBoYWJldGljYWw6MCxtaW5OdW1lcmljOjAsbWluQWxwaGFOdW1lcmljOjB9LGIpLGIuYWxwaGFiZXQmJnRoaXMuYWxwaGFiZXQoYi5hbHBoYWJldCksYi5taW5MZW5ndGgmJnRoaXMubWluTGVuZ3RoKGIubWluTGVuZ3RoKSxiLm1heExlbmd0aCYmdGhpcy5tYXhMZW5ndGgoYi5tYXhMZW5ndGgpLGIubWluU3ltYm9sJiZ0aGlzLm1pbkNoYXJDbGFzcygic3ltYm9sIixiLm1pblN5bWJvbCksYi5taW5BbHBoYWJldGljYWwmJnRoaXMubWluQ2hhckNsYXNzKCJhbHBoYWJldGljYWwiLGIubWluQWxwaGFiZXRpY2FsKSxiLm1pbk51bWVyaWMmJnRoaXMubWluQ2hhckNsYXNzKCJudW1lcmljIixiLm1pbk51bWVyaWMpLGIubWluQWxwaGFudW1lcmljJiZ0aGlzLm1pbkNoYXJDbGFzcygiYWxwaGFudW1lcmljIixiLm1pbkFscGhhbnVtZXJpYyksdGhpc30sbm9uSHRtbDpmdW5jdGlvbihjKXtyZXR1cm4gYih0aGlzLGZ1bmN0aW9uKGIpe3JldHVybiBhLnZhbGlkaXR5LnBhdHRlcm5zLm5vbkh0bWwudGVzdChiLnZhbHVlKX0sY3x8YS52YWxpZGl0eS5tZXNzYWdlcy5ub25IdG1sKX0sZXF1YWw6ZnVuY3Rpb24oYixjKXt2YXIgZD0odGhpcy5yZWR1Y3Rpb258fHRoaXMpLmZpbHRlcihhLnZhbGlkaXR5LnNldHRpbmdzLmVsZW1lbnRTdXBwb3J0KSxmPWZ1bmN0aW9uKGEpe3JldHVybiBhfSxnPWEudmFsaWRpdHkubWVzc2FnZXMuZXF1YWw7aWYoZC5sZW5ndGgpe2lzRnVuY3Rpb24oYik\/KGY9Yiwic3RyaW5nIj09dHlwZW9mIGMmJihnPWMpKToic3RyaW5nIj09dHlwZW9mIGImJihnPWIpO3ZhciBoPWEubWFwKGQsZnVuY3Rpb24oYSl7cmV0dXJuIGYoYS52YWx1ZSl9KSxqPWhbMF0saz0hMDtmb3IodmFyIGwgaW4gaCloW2xdIT1qJiYoaz0hMSk7a3x8KGUoZCxnKSx0aGlzLnJlZHVjdGlvbj1hKFtdKSl9cmV0dXJuIHRoaXN9LGRpc3RpbmN0OmZ1bmN0aW9uKGIsYyl7dmFyIGQ9KHRoaXMucmVkdWN0aW9ufHx0aGlzKS5maWx0ZXIoYS52YWxpZGl0eS5zZXR0aW5ncy5lbGVtZW50U3VwcG9ydCksZj1mdW5jdGlvbihhKXtyZXR1cm4gYX0sZz1hLnZhbGlkaXR5Lm1lc3NhZ2VzLmRpc3RpbmN0LGg9W10saT0hMDtpZihkLmxlbmd0aCl7aXNGdW5jdGlvbihiKT8oZj1iLCJzdHJpbmciPT10eXBlb2YgYyYmKGc9YykpOiJzdHJpbmciPT10eXBlb2YgYiYmKGc9Yik7Zm9yKHZhciBqPWEubWFwKGQsZnVuY3Rpb24oYSl7cmV0dXJuIGYoYS52YWx1ZSl9KSxrPTA7azxqLmxlbmd0aDsrK2spaWYoaltrXS5sZW5ndGgpe2Zvcih2YXIgbD0wO2w8aC5sZW5ndGg7KytsKWhbbF09PWpba10mJihpPSExKTtoLnB1c2goaltrXSl9aXx8KGUoZCxnKSx0aGlzLnJlZHVjdGlvbj1hKFtdKSl9cmV0dXJuIHRoaXN9LHN1bTpmdW5jdGlvbihiLGMpe3ZhciBkPSh0aGlzLnJlZHVjdGlvbnx8dGhpcykuZmlsdGVyKGEudmFsaWRpdHkuc2V0dGluZ3MuZWxlbWVudFN1cHBvcnQpO3JldHVybiBkLmxlbmd0aCYmYiE9ZihkKSYmKGUoZCxjfHxnKGEudmFsaWRpdHkubWVzc2FnZXMuc3VtLHtzdW06Yn0pKSx0aGlzLnJlZHVjdGlvbj1hKFtdKSksdGhpc30sc3VtTWF4OmZ1bmN0aW9uKGIsYyl7dmFyIGQ9KHRoaXMucmVkdWN0aW9ufHx0aGlzKS5maWx0ZXIoYS52YWxpZGl0eS5zZXR0aW5ncy5lbGVtZW50U3VwcG9ydCk7cmV0dXJuIGQubGVuZ3RoJiZiPGYoZCkmJihlKGQsY3x8ZyhhLnZhbGlkaXR5Lm1lc3NhZ2VzLnN1bU1heCx7bWF4OmJ9KSksdGhpcy5yZWR1Y3Rpb249YShbXSkpLHRoaXN9LHN1bU1pbjpmdW5jdGlvbihiLGMpe3ZhciBkPSh0aGlzLnJlZHVjdGlvbnx8dGhpcykuZmlsdGVyKGEudmFsaWRpdHkuc2V0dGluZ3MuZWxlbWVudFN1cHBvcnQpO3JldHVybiBkLmxlbmd0aCYmYjxmKGQpJiYoZShkLGN8fGcoYS52YWxpZGl0eS5tZXNzYWdlcy5zdW1NaW4se21pbjpifSkpLHRoaXMucmVkdWN0aW9uPWEoW10pKSx0aGlzfSxyYWRpb0NoZWNrZWQ6ZnVuY3Rpb24oYixjKXt2YXIgZD0odGhpcy5yZWR1Y3Rpb258fHRoaXMpLmZpbHRlcihhLnZhbGlkaXR5LnNldHRpbmdzLmVsZW1lbnRTdXBwb3J0KTtkLmlzKCI6cmFkaW8iKSYmZC5maW5kKCI6Y2hlY2tlZCIpLnZhbCgpIT1iJiZlKGQsY3x8YS52YWxpZGl0eS5tZXNzYWdlcy5yYWRpb0NoZWNrZWQpfSxyYWRpb05vdENoZWNrZWQ6ZnVuY3Rpb24oYixjKXt2YXIgZD0odGhpcy5yZWR1Y3Rpb258fHRoaXMpLmZpbHRlcihhLnZhbGlkaXR5LnNldHRpbmdzLmVsZW1lbnRTdXBwb3J0KTtkLmlzKCI6cmFkaW8iKSYmZC5maWx0ZXIoIjpjaGVja2VkIikudmFsKCk9PWImJmUoZCxjfHxhLnZhbGlkaXR5Lm1lc3NhZ2VzLnJhZGlvQ2hlY2tlZCl9LGNoZWNrYm94Q2hlY2tlZDpmdW5jdGlvbihiKXt2YXIgYz0odGhpcy5yZWR1Y3Rpb258fHRoaXMpLmZpbHRlcihhLnZhbGlkaXR5LnNldHRpbmdzLmVsZW1lbnRTdXBwb3J0KTtjLmlzKCI6Y2hlY2tib3giKSYmIWMuaXMoIjpjaGVja2VkIikmJihlKGMsYnx8YS52YWxpZGl0eS5tZXNzYWdlcy5yYWRpb0NoZWNrZWQpLGMucGFyZW50KCkuYWRkQ2xhc3MoInZhbGlkaXR5LWVycm9uZW91cyIpKX0sYXNzZXJ0OmZ1bmN0aW9uKGMsZCl7dmFyIGY9dGhpcy5yZWR1Y3Rpb258fHRoaXM7aWYoZi5sZW5ndGgpe2lmKGlzRnVuY3Rpb24oYykpcmV0dXJuIGIodGhpcyxjLGR8fGEudmFsaWRpdHkubWVzc2FnZXMuZ2VuZXJpYyk7Y3x8KGUoZixkfHxhLnZhbGlkaXR5Lm1lc3NhZ2VzLmdlbmVyaWMpLHRoaXMucmVkdWN0aW9uPWEoW10pKX1yZXR1cm4gdGhpc319KSxhLmZuLmV4dGVuZCh7dmFsaWRBbGxvck5vbmU6ZnVuY3Rpb24oKXt2YXIgYj0odGhpcy5yZWR1Y3Rpb258fHRoaXMpLmZpbHRlcihhLnZhbGlkaXR5LnNldHRpbmdzLmVsZW1lbnRTdXBwb3J0KSxjPSEwO3JldHVybiBiLmVhY2goZnVuY3Rpb24oKXtpZigiIiE9YSh0aGlzKS52YWwoKSlyZXR1cm4gYi5lYWNoKGZ1bmN0aW9uKCl7IiI9PWEodGhpcykudmFsKCkmJihjPSExLGQodGhpcyxnKCIiLHtmaWVsZDpoKHRoaXMpfSkpKX0pLCExfSksdGhpc30scmVxdWlyZVdpdGhXYXRlcm1hcms6ZnVuY3Rpb24oYyl7cmV0dXJuIGIodGhpcyxmdW5jdGlvbihiKXt2YXIgYz1mdW5jdGlvbihhKXtyZXR1cm4gMDxhLnRyaW0oKS5sZW5ndGh9LGQ9YShiKS5hdHRyKCJhbHQiKSxlPWEoYikudmFsKCkudHJpbSgpO3JldHVybiBkP2QhPWUmJmMoZSk6YyhlKX0sY3x8YS52YWxpZGl0eS5tZXNzYWdlcy5yZXF1aXJlKX0scmVxdWlyZVBvc3RhbENvZGU6ZnVuY3Rpb24oYyl7cmV0dXJuIGIodGhpcyxmdW5jdGlvbihiKXt2YXIgYz1hKGIpLnZhbCgpLnJlcGxhY2UoL1xzL2csIiIpLnJlcGxhY2UoL1teQS16MC05XS9nLCIwIikudG9VcHBlckNhc2UoKTtpZigwPT1jLmxlbmd0aClyZXR1cm4hMDtpZig1PmMubGVuZ3RoKXJldHVybiExO2lmKFppcFJlZ2V4PWEudmFsaWRpdHkucGF0dGVybnMuemlwLG51bGwhPWMubWF0Y2goWmlwUmVnZXgpKXJldHVybiEwO3JldHVybiBDYW5hZGFQb3N0UmVnZXg9L1tBQkNFR0hKS0xNTlBSU1RWV1hZWl1bMC05XVtBQkNFR0hKS0xNTlBSU1RWV1hZWl1bMC05XVtBQkNFR0hKS0xNTlBSU1RWV1hZWl1bMC05XS8sbnVsbCE9Yy5tYXRjaChDYW5hZGFQb3N0UmVnZXgpJiYoYShiKS52YWwoYy5zdWJzdHJpbmcoMCwzKSsiICIrYy5zdWJzdHJpbmcoMyw2KSksITApfSxjfHxhLnZhbGlkaXR5Lm1lc3NhZ2VzLnJlcXVpcmUpfSx2YWxpZEVtYWlsQWRkcmVzczpmdW5jdGlvbihjKXt2YXIgZD10aGlzLGU9WyIuY29tIiwiLmNhIiwiLm5ldCIsIi5iaXoiLCIucXVlYmVjIiwiLmNvIiwiLmluZm8iLCIubW9iaSIsIi5vcmciLCIuaW5jIl07MT09YSgiI0FETUlOX0dFTkVSQUxfQkxPQ0tfRlJfRE9NQUlOX0NIRUNLIikubGVuZ3RoJiYiMSIhPWEoIiNBRE1JTl9HRU5FUkFMX0JMT0NLX0ZSX0RPTUFJTl9DSEVDSyIpLnZhbCgpJiZlLnB1c2goIi5mciIpO3ZhciBmPWIodGhpcyxmdW5jdGlvbihiKXtyZXR1cm4gcnVsZT1hLnZhbGlkaXR5LnBhdHRlcm5zLmVtYWlsLHJ1bGUuZ2xvYmFsJiYocnVsZS5sYXN0SW5kZXg9MCksIWIudmFsdWUubGVuZ3RofHxydWxlLnRlc3QoYi52YWx1ZSl9LCIiKTtyZXR1cm4gZj9iKHRoaXMsZnVuY3Rpb24oYil7dmFyIGM9YShiKS52YWwoKS50b0xvd2VyQ2FzZSgpLGQ9ITE7aWYoIWMubGVuZ3RoKXJldHVybiEwO1N0cmluZy5wcm90b3R5cGUuZW5kc1dpdGh8fChTdHJpbmcucHJvdG90eXBlLmVuZHNXaXRoPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMubGVuZ3RoLWEubGVuZ3RoO3JldHVybiAwPD1iJiZ0aGlzLmxhc3RJbmRleE9mKGEpPT09Yn0pO2Zvcih2YXIgZj0wO2Y8ZS5sZW5ndGg7ZisrKWMudG9Mb3dlckNhc2UoKS5lbmRzV2l0aChlW2ZdKSYmKGQ9ITApO2lmKCExPT1kKXJldHVybiExO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgZW1haWxIYW5kbGVyKXt2YXIgZz0hMDtyZXR1cm4gZW1haWxIYW5kbGVyLnZhbGlkYXRlRW1haWwoYykuZG9uZShmdW5jdGlvbihhKXsiaW52YWxpZCI9PT1hLnN0YXR1cyYmKGc9ITEpfSksZ31yZXR1cm4hMH0sY3x8YS52YWxpZGl0eS5tZXNzYWdlcy5lbWFpbCk6Y3x8YS52YWxpZGl0eS5tZXNzYWdlcy5lbWFpbH0scmFkaW9PcHRpb25DaG9zZW46ZnVuY3Rpb24oYil7dmFyIGM9KHRoaXMucmVkdWN0aW9ufHx0aGlzKS5maWx0ZXIoYS52YWxpZGl0eS5zZXR0aW5ncy5lbGVtZW50U3VwcG9ydCksZD17fTtmb3IodmFyIGYgaW4gYy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9YSh0aGlzKS5hdHRyKCJuYW1lIik7InVuZGVmaW5lZCI9PXR5cGVvZiBkW2JdJiYoZFtiXT1bXSksZFtiXS5wdXNoKHRoaXMpfSksZCkwPT1hKGRbZl0pLmZpbHRlcigiOnJhZGlvIikuZmlsdGVyKCI6Y2hlY2tlZCIpLmxlbmd0aCYmZShhKGRbZl0pLGJ8fGEudmFsaWRpdHkubWVzc2FnZXMucmFkaW9DaGVja2VkKX0sb25lT3JNb3JlQ2hlY2tlZDpmdW5jdGlvbihiKXt2YXIgYz0odGhpcy5yZWR1Y3Rpb258fHRoaXMpLmZpbHRlcihhLnZhbGlkaXR5LnNldHRpbmdzLmVsZW1lbnRTdXBwb3J0KTtjLmVhY2goZnVuY3Rpb24oKXt2YXIgZD1jLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiEhYSh0aGlzKS5pcygiW3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQiKX0pLmxlbmd0aDswPT1kJiYoYy5wYXJlbnRzKCJ1bCIpLmZpcnN0KCkuYWRkQ2xhc3MoInZhbGlkaXR5LWVycm9uZW91cyIpLGUoYyxifHxhLnZhbGlkaXR5Lm1lc3NhZ2VzLnJhZGlvQ2hlY2tlZCkpfSl9LHZhbGlkYXRlTW9iaWxlOmZ1bmN0aW9uKGMpe2Zvcih2YXIgZD0odGhpcy5yZWR1Y3Rpb258fHRoaXMpLmZpbHRlcihhLnZhbGlkaXR5LnNldHRpbmdzLmVsZW1lbnRTdXBwb3J0KSxlPSEwLGY9IiIsZz1hKGQpLmxlbmd0aCxoPVs0MzgsNTE0LDI2Myw0NTAsNTc5LDgxOSwyNDksNzA1LDIyNiw1MTksMjg5LDM2NSw5MDUsNDE2LDQzNyw2NDcsMzQzLDYxMyw3MDksODczLDQxOCw1ODEsNTA2LDkwMl0saj0wO2o8PWc7aisrKWlmKGo8ZylmKz1hKGEoZClbal0pLnZhbCgpO2Vsc2V7aWYoZj1mLnJlcGxhY2UoL1teMC05XSsvZ2ksIiIpLDA9PT1mLmxlbmd0aClyZXR1cm4gYihkLCgpPT4hMCxjfHxhLnZhbGlkaXR5Lm1lc3NhZ2VzLnBob25lKTsiMSI9PWZbMF0mJihmPWYuc3Vic3RyaW5nKDEpKTt2YXIgaz1wYXJzZUludChmLnN1YnN0cmluZygwLDMpKTthLmFqYXgoe3VybDoiaHR0cHM6Ly9yZXN0LmQyY21lZGlhLmNhL3NpdGVzL3N2Yy92YWxpZGF0ZVBob25lTnVtYmVyLnBocCIsdHlwZToiR0VUIixhc3luYzohMSx0aW1lb3V0OjJlMyxkYXRhVHlwZToianNvbiIsZGF0YTp7cGhvbmU6Zixtb2JpbGU6MSxhcmVhY29kZToiQ0EifX0pLmRvbmUoZnVuY3Rpb24oZil7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBmLmlzT2spITE9PT1mLnBob25lTnVtYmVySXNWYWxpZCYmKGU9ITEpO2Vsc2UgaWYoInVuZGVmaW5lZCIhPXR5cGVvZiBoLmluZGV4T2YmJi0xPT1oLmluZGV4T2YoaykpcmV0dXJuITE7cmV0dXJuIGIoZCxmdW5jdGlvbigpe3JldHVybiBlfSxjfHxhLnZhbGlkaXR5Lm1lc3NhZ2VzLnBob25lKX0pLmZhaWwoZnVuY3Rpb24oKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIGguaW5kZXhPZiYmLTE9PWguaW5kZXhPZihrKSYmKGU9ITEpLGIoZCxmdW5jdGlvbigpe3JldHVybiBlfSxjfHxhLnZhbGlkaXR5Lm1lc3NhZ2VzLnBob25lKX0pfX0sdmFsaWRhdGVQaG9uZTpmdW5jdGlvbihjKXtmb3IodmFyIGQ9KHRoaXMucmVkdWN0aW9ufHx0aGlzKS5maWx0ZXIoYS52YWxpZGl0eS5zZXR0aW5ncy5lbGVtZW50U3VwcG9ydCksZT0hMCxmPSIiLGc9YShkKS5sZW5ndGgsaD1bNDM4LDUxNCwyNjMsNDUwLDU3OSw4MTksMjQ5LDcwNSwyMjYsNTE5LDI4OSwzNjUsOTA1LDQxNiw0MzcsNjQ3LDM0Myw2MTMsNzA5LDg3Myw0MTgsNTgxLDUwNiw5MDJdLGo9MDtqPD1nO2orKylpZihqPGcpZis9YShhKGQpW2pdKS52YWwoKTtlbHNle2lmKGY9Zi5yZXBsYWNlKC9bXjAtOV0rL2dpLCIiKSwidW5kZWZpbmVkIiE9dHlwZW9mIGVtYWlsSGFuZGxlciYmdGhpcy5oYXNDbGFzcygicmVxdWlyZWQiKSYmKGVtYWlsSGFuZGxlci5waG9uZU1hbmRhdG9yeT0hMCksMD09PWYubGVuZ3RoKXJldHVybiBiKGQsKCk9PiEwLGN8fGEudmFsaWRpdHkubWVzc2FnZXMucGhvbmUpOyIxIj09ZlswXSYmKGY9Zi5zdWJzdHJpbmcoMSkpO3ZhciBrPXBhcnNlSW50KGYuc3Vic3RyaW5nKDAsMykpO2EuYWpheCh7dXJsOiJodHRwczovL3Jlc3QuZDJjbWVkaWEuY2Evc2l0ZXMvc3ZjL3ZhbGlkYXRlUGhvbmVOdW1iZXIucGhwIix0eXBlOiJHRVQiLGFzeW5jOiExLHRpbWVvdXQ6MmUzLGRhdGFUeXBlOiJqc29uIixkYXRhOntwaG9uZTpmLGFyZWFjb2RlOiJDQSJ9fSkuZG9uZShmdW5jdGlvbihmKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGYuaXNPaykhMT09PWYucGhvbmVOdW1iZXJJc1ZhbGlkJiYoInVuZGVmaW5lZCIhPXR5cGVvZiBlbWFpbEhhbmRsZXImJmVtYWlsSGFuZGxlci5waG9uZU1hbmRhdG9yeSYmZW1haWxIYW5kbGVyLnBob25lVmFsaWRhdGlvbkF0dGVtcHRzKyssZT0hMSk7ZWxzZSBpZigidW5kZWZpbmVkIiE9dHlwZW9mIGguaW5kZXhPZiYmLTE9PWguaW5kZXhPZihrKSlyZXR1cm4hMTtyZXR1cm4gYihkLGZ1bmN0aW9uKCl7cmV0dXJuIGV9LGN8fGEudmFsaWRpdHkubWVzc2FnZXMucGhvbmUpfSkuZmFpbChmdW5jdGlvbigpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgaC5pbmRleE9mJiYtMT09aC5pbmRleE9mKGspJiYoInVuZGVmaW5lZCIhPXR5cGVvZiBlbWFpbEhhbmRsZXImJmVtYWlsSGFuZGxlci5waG9uZU1hbmRhdG9yeSYmZW1haWxIYW5kbGVyLnBob25lVmFsaWRhdGlvbkF0dGVtcHRzKyssZT0hMSksYihkLGZ1bmN0aW9uKCl7cmV0dXJuIGV9LGN8fGEudmFsaWRpdHkubWVzc2FnZXMucGhvbmUpfSl9fX0pfSkoalF1ZXJ5KSxmdW5jdGlvbihhKXtmdW5jdGlvbiBiKGEpe3JldHVybiBhLmF0dHIoImlkIikubGVuZ3RoP2EuYXR0cigiaWQiKTphLmF0dHIoIm5hbWUiKX1hLnZhbGlkaXR5Lm91dHB1dHMubGFiZWw9e3N0YXJ0OmZ1bmN0aW9uKCl7YSgibGFiZWwuIithLnZhbGlkaXR5LnNldHRpbmdzLmNzc0NsYXNzKS5yZW1vdmUoKX0sZW5kOmZ1bmN0aW9uKGIpeyFiLnZhbGlkJiZhLnZhbGlkaXR5LnNldHRpbmdzLnNjcm9sbFRvJiYobG9jYXRpb24uaGFzaD1hKCJsYWJlbC4iK2EudmFsaWRpdHkuc2V0dGluZ3MuY3NzQ2xhc3MrIjplcSgwKSIpLmF0dHIoImZvciIpKX0scmFpc2U6ZnVuY3Rpb24oYyxkKXt2YXIgZT0ibGFiZWwuIithLnZhbGlkaXR5LnNldHRpbmdzLmNzc0NsYXNzKyJbZm9yPSciK2IoYykrIiddIjthKGUpLmxlbmd0aD9hKGUpLnRleHQoZCk6YSgiPGxhYmVsLz4iKS5hdHRyKCJmb3IiLGIoYykpLmFkZENsYXNzKGEudmFsaWRpdHkuc2V0dGluZ3MuY3NzQ2xhc3MpLnRleHQoZCkub24oImNsaWNrIixmdW5jdGlvbigpe2MubGVuZ3RoJiZjWzBdLnNlbGVjdCgpfSkuaW5zZXJ0QWZ0ZXIoYyl9LHJhaXNlQWdncmVnYXRlOmZ1bmN0aW9uKGIsYyl7Yi5sZW5ndGgmJnRoaXMucmFpc2UoYShiLmdldChiLmxlbmd0aC0xKSksYyl9fX0oalF1ZXJ5KSxmdW5jdGlvbihhKXthLnZhbGlkaXR5Lm91dHB1dHMubW9kYWw9e3N0YXJ0OmZ1bmN0aW9uKCl7YSgiLnZhbGlkaXR5LW1vZGFsLW1zZyIpLnJlbW92ZSgpfSxlbmQ6ZnVuY3Rpb24oYil7IWIudmFsaWQmJmEudmFsaWRpdHkuc2V0dGluZ3Muc2Nyb2xsVG8mJihsb2NhdGlvbi5oYXNoPWEoIi52YWxpZGl0eS1tb2RhbC1tc2c6ZXEoMCkiKS5hdHRyKCJpZCIpKX0scmFpc2U6ZnVuY3Rpb24oYixjKXtpZihiLmxlbmd0aCl7dmFyIGQ9Yi5vZmZzZXQoKSxlPWIuZ2V0KDApLGY9e2xlZnQ6cGFyc2VJbnQoZC5sZWZ0K2Iud2lkdGgoKSs0LDEwKSsicHgiLHRvcDpwYXJzZUludChkLnRvcC0xMCwxMCkrInB4In07YSgiPGRpdi8+IikuYWRkQ2xhc3MoInZhbGlkaXR5LW1vZGFsLW1zZyIpLmNzcyhmKS50ZXh0KGMpLm9uKCJjbGljayIsYS52YWxpZGl0eS5zZXR0aW5ncy5tb2RhbEVycm9yc0NsaWNrYWJsZT9mdW5jdGlvbigpe2EodGhpcykucmVtb3ZlKCl9Om51bGwpLmFwcGVuZFRvKCJib2R5Iil9fSxyYWlzZUFnZ3JlZ2F0ZTpmdW5jdGlvbihiLGMpe2IubGVuZ3RoJiZ0aGlzLnJhaXNlKGEoYi5nZXQoYi5sZW5ndGgtMSkpLGMpfX19KGpRdWVyeSksZnVuY3Rpb24oYSl7dmFyIGI9W107YS52YWxpZGl0eS5vdXRwdXRzLnN1bW1hcnk9e3N0YXJ0OmZ1bmN0aW9uKCl7YSgiLnZhbGlkaXR5LWVycm9uZW91cyIpLnJlbW92ZUNsYXNzKCJ2YWxpZGl0eS1lcnJvbmVvdXMiKSxiPVtdfSxlbmQ6ZnVuY3Rpb24oKXtpZihhKCIudmFsaWRpdHktc3VtbWFyeS1jb250YWluZXIiKS5oaWRlKCkuZmluZCgidWwiKS5odG1sKCIiKSxiLmxlbmd0aCl7Zm9yKHZhciBjPTA7YzxiLmxlbmd0aDsrK2MpYSgiPGxpLz4iKS50ZXh0KGJbY10pLmFwcGVuZFRvKCIudmFsaWRpdHktc3VtbWFyeS1jb250YWluZXIgdWwiKTthKCIudmFsaWRpdHktc3VtbWFyeS1jb250YWluZXIiKS5zaG93KCksYS52YWxpZGl0eS5zZXR0aW5ncy5zY3JvbGxUbyYmKGxvY2F0aW9uLmhhc2g9YSgiLnZhbGlkaXR5LWVycm9uZW91czplcSgwKSIpLmF0dHIoImlkIikpfX0scmFpc2U6ZnVuY3Rpb24oYSxjKXtiLnB1c2goYyk7dmFyIGQ9YS5jbG9zZXN0KCJmb3JtIikuaGFzQ2xhc3MoImpxdHJhbnNmb3JtZG9uZSIpO2EucGFyZW50KCkuaXMoImRpdiIpJiZkPyhhLnBhcmVudCgpLmFkZENsYXNzKCJ2YWxpZGl0eS1lcnJvbmVvdXMiKSxhLnBhcmVudCgpLnBhcmVudCgpLmFkZENsYXNzKCJ2YWxpZGl0eS1lcnJvbmVvdXMiKSk6YS5hZGRDbGFzcygidmFsaWRpdHktZXJyb25lb3VzIil9LHJhaXNlQWdncmVnYXRlOmZ1bmN0aW9uKGEsYil7dGhpcy5yYWlzZShhLGIpfSxjb250YWluZXI6ZnVuY3Rpb24oKXtkb2N1bWVudC53cml0ZSgiPGRpdiBjbGFzcz1cInZhbGlkaXR5LXN1bW1hcnktY29udGFpbmVyXCI+VGhlIGZvcm0gZGlkbid0IHN1Ym1pdCBmb3IgdGhlIGZvbGxvd2luZyByZWFzb24ocyk6PHVsPjwvdWw+PC9kaXY+Iil9fX0oalF1ZXJ5KSxmdW5jdGlvbigpe3ZhciBhPWZ1bmN0aW9uKCl7JCh0aGlzKS5yZW1vdmVDbGFzcygidmFsaWRpdHktZXJyb25lb3VzIil9OyQudmFsaWRpdHkub3V0cHV0cy5xdWlja21haWw9e3N0YXJ0OmZ1bmN0aW9uKCl7fSxlbmQ6ZnVuY3Rpb24oKXt9LHJhaXNlOmZ1bmN0aW9uKGEpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgYS5XYXRlcm1hcmsmJiJ1bmRlZmluZWQiIT1hLmF0dHIoImFsdCIpKXthLldhdGVybWFyayhhLmF0dHIoImFsdCIpLCIjRkZCQUJBIik7dmFyIGI9ZnVuY3Rpb24oKXthLldhdGVybWFyayhhLmF0dHIoImFsdCIpKX19ZWxzZXthLmNzcygiYmFja2dyb3VuZC1jb2xvciIsIiNmZjdlNzkiKTt2YXIgYj1mdW5jdGlvbigpe3RtcD10bXA\/dG1wOiJ0cmFuc3BhcmVudCIsYS5jc3MoImJhY2tncm91bmQtY29sb3IiLHRtcCl9fSQoZG9jdW1lbnQpLm9uKCJtb3VzZWRvd24iLGIpfSxjb250YWluZXI6ZnVuY3Rpb24oKXt9fSwkLnZhbGlkaXR5Lm91dHB1dHMucG9wdXA9e3N0YXJ0OmZ1bmN0aW9uKCl7JChkb2N1bWVudCkub2ZmKCJ0b3VjaHN0YXJ0IG1vdXNlZG93biIsIi52YWxpZGl0eS1lcnJvbmVvdXMiLGEpfSxlbmQ6ZnVuY3Rpb24oYil7cmV0dXJuIGIudmFsaWR8fCQoZG9jdW1lbnQpLm9uKCJ0b3VjaHN0YXJ0IG1vdXNlZG93biIsIi52YWxpZGl0eS1lcnJvbmVvdXMiLGEpLGJ9LHJhaXNlOmZ1bmN0aW9uKGEpe3ZhciBiPWEuY2xvc2VzdCgiZm9ybSIpLmhhc0NsYXNzKCJqcXRyYW5zZm9ybWRvbmUiKTthLnBhcmVudCgpLmlzKCJkaXYiKSYmYj8oYS5wYXJlbnQoKS5hZGRDbGFzcygidmFsaWRpdHktZXJyb25lb3VzIiksYS5wYXJlbnQoKS5wYXJlbnQoKS5hZGRDbGFzcygidmFsaWRpdHktZXJyb25lb3VzIikpOmEuYWRkQ2xhc3MoInZhbGlkaXR5LWVycm9uZW91cyIpfSxyYWlzZUFnZ3JlZ2F0ZTpmdW5jdGlvbihhKXtjb25zb2xlLmxvZyhhKSxhLmlzKCI6cmFkaW8iKSYmYS5pcygiLmpxVHJhbnNmb3JtSGlkZGVuIikmJmEucGFyZW50KCkucGFyZW50KCkuYWRkQ2xhc3MoInZhbGlkaXR5LWVycm9uZW91cyIpfX19KCksZnVuY3Rpb24oYSl7YS52YWxpZGl0eS5vdXRwdXRzLmNzc09ubHk9e3N0YXJ0OmZ1bmN0aW9uKCl7YShhLnZhbGlkaXR5LnNldHRpbmdzLmNzc0NsYXNzKS5yZW1vdmVDbGFzcyhhLnZhbGlkaXR5LnNldHRpbmdzLmNzc0NsYXNzKX0sZW5kOmZ1bmN0aW9uKGIpeyFiLnZhbGlkJiZhLnZhbGlkaXR5LnNldHRpbmdzLnNjcm9sbFRvJiYobG9jYXRpb24uaGFzaD1hKGEudmFsaWRpdHkuc2V0dGluZ3MuY3NzQ2xhc3MrIjplcSgwKSIpLmF0dHIoImlkIikpfSxyYWlzZTpmdW5jdGlvbihiKXthKGIpLmFkZENsYXNzKGEudmFsaWRpdHkuc2V0dGluZ3MuY3NzQ2xhc3MpfSxyYWlzZUFnZ3JlZ2F0ZTpmdW5jdGlvbihiLGMpe2IubGVuZ3RoJiZ0aGlzLnJhaXNlKGEoYi5nZXQoYi5sZW5ndGgtMSkpLGMpfX19KGpRdWVyeSk7Ci8qKiAvbS9qcy9tYWluLmpzICoqLwp2YXIgX19fZDJjX21haW5qc19jX29uPSIyMDI2LTAzLTA5IDE0OjMwOjAzIjsndXNlIHN0cmljdCc7dmFyICRqc2NvbXA9JGpzY29tcHx8e307JGpzY29tcC5zY29wZT17fTskanNjb21wLkFTU1VNRV9FUzU9ITE7JGpzY29tcC5BU1NVTUVfTk9fTkFUSVZFX01BUD0hMTskanNjb21wLkFTU1VNRV9OT19OQVRJVkVfU0VUPSExOyRqc2NvbXAuU0lNUExFX0ZST1VORF9QT0xZRklMTD0hMTskanNjb21wLklTT0xBVEVfUE9MWUZJTExTPSExOyRqc2NvbXAuRk9SQ0VfUE9MWUZJTExfUFJPTUlTRT0hMTskanNjb21wLkZPUkNFX1BPTFlGSUxMX1BST01JU0VfV0hFTl9OT19VTkhBTkRMRURfUkVKRUNUSU9OPSExOyRqc2NvbXAuZGVmaW5lUHJvcGVydHk9JGpzY29tcC5BU1NVTUVfRVM1fHwiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmRlZmluZVByb3BlcnRpZXM\/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKGEsYixjKXtpZihhPT1BcnJheS5wcm90b3R5cGV8fGE9PU9iamVjdC5wcm90b3R5cGUpcmV0dXJuIGE7YVtiXT1jLnZhbHVlO3JldHVybiBhfTsKJGpzY29tcC5nZXRHbG9iYWw9ZnVuY3Rpb24oYSl7YT1bIm9iamVjdCI9PXR5cGVvZiBnbG9iYWxUaGlzJiZnbG9iYWxUaGlzLGEsIm9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdywib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYsIm9iamVjdCI9PXR5cGVvZiBnbG9iYWwmJmdsb2JhbF07Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDsrK2Ipe3ZhciBjPWFbYl07aWYoYyYmYy5NYXRoPT1NYXRoKXJldHVybiBjfXRocm93IEVycm9yKCJDYW5ub3QgZmluZCBnbG9iYWwgb2JqZWN0Iik7fTskanNjb21wLmdsb2JhbD0kanNjb21wLmdldEdsb2JhbCh0aGlzKTskanNjb21wLklTX1NZTUJPTF9OQVRJVkU9ImZ1bmN0aW9uIj09PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT09dHlwZW9mIFN5bWJvbCgieCIpOyRqc2NvbXAuVFJVU1RfRVM2X1BPTFlGSUxMUz0hJGpzY29tcC5JU09MQVRFX1BPTFlGSUxMU3x8JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFOyRqc2NvbXAucG9seWZpbGxzPXt9OwokanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbD17fTskanNjb21wLlBPTFlGSUxMX1BSRUZJWD0iJGpzY3AkIjt2YXIgJGpzY29tcCRsb29rdXBQb2x5ZmlsbGVkVmFsdWU9ZnVuY3Rpb24oYSxiKXt2YXIgYz0kanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbFtiXTtpZihudWxsPT1jKXJldHVybiBhW2JdO2M9YVtjXTtyZXR1cm4gdm9pZCAwIT09Yz9jOmFbYl19OyRqc2NvbXAucG9seWZpbGw9ZnVuY3Rpb24oYSxiLGMsZCl7YiYmKCRqc2NvbXAuSVNPTEFURV9QT0xZRklMTFM\/JGpzY29tcC5wb2x5ZmlsbElzb2xhdGVkKGEsYixjLGQpOiRqc2NvbXAucG9seWZpbGxVbmlzb2xhdGVkKGEsYixjLGQpKX07CiRqc2NvbXAucG9seWZpbGxVbmlzb2xhdGVkPWZ1bmN0aW9uKGEsYixjLGQpe2M9JGpzY29tcC5nbG9iYWw7YT1hLnNwbGl0KCIuIik7Zm9yKGQ9MDtkPGEubGVuZ3RoLTE7ZCsrKXt2YXIgZT1hW2RdO2lmKCEoZSBpbiBjKSlyZXR1cm47Yz1jW2VdfWE9YVthLmxlbmd0aC0xXTtkPWNbYV07Yj1iKGQpO2IhPWQmJm51bGwhPWImJiRqc2NvbXAuZGVmaW5lUHJvcGVydHkoYyxhLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Yn0pfTsKJGpzY29tcC5wb2x5ZmlsbElzb2xhdGVkPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWEuc3BsaXQoIi4iKTthPTE9PT1lLmxlbmd0aDtkPWVbMF07ZD0hYSYmZCBpbiAkanNjb21wLnBvbHlmaWxscz8kanNjb21wLnBvbHlmaWxsczokanNjb21wLmdsb2JhbDtmb3IodmFyIGs9MDtrPGUubGVuZ3RoLTE7aysrKXt2YXIgaD1lW2tdO2lmKCEoaCBpbiBkKSlyZXR1cm47ZD1kW2hdfWU9ZVtlLmxlbmd0aC0xXTtjPSRqc2NvbXAuSVNfU1lNQk9MX05BVElWRSYmImVzNiI9PT1jP2RbZV06bnVsbDtiPWIoYyk7bnVsbCE9YiYmKGE\/JGpzY29tcC5kZWZpbmVQcm9wZXJ0eSgkanNjb21wLnBvbHlmaWxscyxlLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Yn0pOmIhPT1jJiYodm9pZCAwPT09JGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbZV0mJihjPTFFOSpNYXRoLnJhbmRvbSgpPj4+MCwkanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbFtlXT0kanNjb21wLklTX1NZTUJPTF9OQVRJVkU\/CiRqc2NvbXAuZ2xvYmFsLlN5bWJvbChlKTokanNjb21wLlBPTFlGSUxMX1BSRUZJWCtjKyIkIitlKSwkanNjb21wLmRlZmluZVByb3BlcnR5KGQsJGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbZV0se2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpifSkpKX07JGpzY29tcC51bmRlcnNjb3JlUHJvdG9DYW5CZVNldD1mdW5jdGlvbigpe3ZhciBhPXthOiEwfSxiPXt9O3RyeXtyZXR1cm4gYi5fX3Byb3RvX189YSxiLmF9Y2F0Y2goYyl7fXJldHVybiExfTsKJGpzY29tcC5zZXRQcm90b3R5cGVPZj0kanNjb21wLlRSVVNUX0VTNl9QT0xZRklMTFMmJiJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3Quc2V0UHJvdG90eXBlT2Y\/T2JqZWN0LnNldFByb3RvdHlwZU9mOiRqc2NvbXAudW5kZXJzY29yZVByb3RvQ2FuQmVTZXQoKT9mdW5jdGlvbihhLGIpe2EuX19wcm90b19fPWI7aWYoYS5fX3Byb3RvX18hPT1iKXRocm93IG5ldyBUeXBlRXJyb3IoYSsiIGlzIG5vdCBleHRlbnNpYmxlIik7cmV0dXJuIGF9Om51bGw7JGpzY29tcC5hcnJheUl0ZXJhdG9ySW1wbD1mdW5jdGlvbihhKXt2YXIgYj0wO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBiPGEubGVuZ3RoP3tkb25lOiExLHZhbHVlOmFbYisrXX06e2RvbmU6ITB9fX07JGpzY29tcC5hcnJheUl0ZXJhdG9yPWZ1bmN0aW9uKGEpe3JldHVybntuZXh0OiRqc2NvbXAuYXJyYXlJdGVyYXRvckltcGwoYSl9fTsKJGpzY29tcC5tYWtlSXRlcmF0b3I9ZnVuY3Rpb24oYSl7dmFyIGI9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvciYmYVtTeW1ib2wuaXRlcmF0b3JdO3JldHVybiBiP2IuY2FsbChhKTokanNjb21wLmFycmF5SXRlcmF0b3IoYSl9OyRqc2NvbXAuZ2VuZXJhdG9yPXt9OyRqc2NvbXAuZ2VuZXJhdG9yLmVuc3VyZUl0ZXJhdG9yUmVzdWx0SXNPYmplY3RfPWZ1bmN0aW9uKGEpe2lmKCEoYSBpbnN0YW5jZW9mIE9iamVjdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiSXRlcmF0b3IgcmVzdWx0ICIrYSsiIGlzIG5vdCBhbiBvYmplY3QiKTt9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0PWZ1bmN0aW9uKCl7dGhpcy5pc1J1bm5pbmdfPSExO3RoaXMueWllbGRBbGxJdGVyYXRvcl89bnVsbDt0aGlzLnlpZWxkUmVzdWx0PXZvaWQgMDt0aGlzLm5leHRBZGRyZXNzPTE7dGhpcy5maW5hbGx5QWRkcmVzc189dGhpcy5jYXRjaEFkZHJlc3NfPTA7dGhpcy5maW5hbGx5Q29udGV4dHNfPXRoaXMuYWJydXB0Q29tcGxldGlvbl89bnVsbH07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuc3RhcnRfPWZ1bmN0aW9uKCl7aWYodGhpcy5pc1J1bm5pbmdfKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTt0aGlzLmlzUnVubmluZ189ITB9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnN0b3BfPWZ1bmN0aW9uKCl7dGhpcy5pc1J1bm5pbmdfPSExfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuanVtcFRvRXJyb3JIYW5kbGVyXz1mdW5jdGlvbigpe3RoaXMubmV4dEFkZHJlc3M9dGhpcy5jYXRjaEFkZHJlc3NffHx0aGlzLmZpbmFsbHlBZGRyZXNzX307JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUubmV4dF89ZnVuY3Rpb24oYSl7dGhpcy55aWVsZFJlc3VsdD1hfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS50aHJvd189ZnVuY3Rpb24oYSl7dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz17ZXhjZXB0aW9uOmEsaXNFeGNlcHRpb246ITB9O3RoaXMuanVtcFRvRXJyb3JIYW5kbGVyXygpfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5yZXR1cm49ZnVuY3Rpb24oYSl7dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz17cmV0dXJuOmF9O3RoaXMubmV4dEFkZHJlc3M9dGhpcy5maW5hbGx5QWRkcmVzc199OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5qdW1wVGhyb3VnaEZpbmFsbHlCbG9ja3M9ZnVuY3Rpb24oYSl7dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz17anVtcFRvOmF9O3RoaXMubmV4dEFkZHJlc3M9dGhpcy5maW5hbGx5QWRkcmVzc199OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnlpZWxkPWZ1bmN0aW9uKGEsYil7dGhpcy5uZXh0QWRkcmVzcz1iO3JldHVybnt2YWx1ZTphfX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUueWllbGRBbGw9ZnVuY3Rpb24oYSxiKXthPSRqc2NvbXAubWFrZUl0ZXJhdG9yKGEpO3ZhciBjPWEubmV4dCgpOyRqc2NvbXAuZ2VuZXJhdG9yLmVuc3VyZUl0ZXJhdG9yUmVzdWx0SXNPYmplY3RfKGMpO2lmKGMuZG9uZSl0aGlzLnlpZWxkUmVzdWx0PWMudmFsdWUsdGhpcy5uZXh0QWRkcmVzcz1iO2Vsc2UgcmV0dXJuIHRoaXMueWllbGRBbGxJdGVyYXRvcl89YSx0aGlzLnlpZWxkKGMudmFsdWUsYil9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5qdW1wVG89ZnVuY3Rpb24oYSl7dGhpcy5uZXh0QWRkcmVzcz1hfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5qdW1wVG9FbmQ9ZnVuY3Rpb24oKXt0aGlzLm5leHRBZGRyZXNzPTB9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnNldENhdGNoRmluYWxseUJsb2Nrcz1mdW5jdGlvbihhLGIpe3RoaXMuY2F0Y2hBZGRyZXNzXz1hO3ZvaWQgMCE9YiYmKHRoaXMuZmluYWxseUFkZHJlc3NfPWIpfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5zZXRGaW5hbGx5QmxvY2s9ZnVuY3Rpb24oYSl7dGhpcy5jYXRjaEFkZHJlc3NfPTA7dGhpcy5maW5hbGx5QWRkcmVzc189YXx8MH07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUubGVhdmVUcnlCbG9jaz1mdW5jdGlvbihhLGIpe3RoaXMubmV4dEFkZHJlc3M9YTt0aGlzLmNhdGNoQWRkcmVzc189Ynx8MH07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmVudGVyQ2F0Y2hCbG9jaz1mdW5jdGlvbihhKXt0aGlzLmNhdGNoQWRkcmVzc189YXx8MDthPXRoaXMuYWJydXB0Q29tcGxldGlvbl8uZXhjZXB0aW9uO3RoaXMuYWJydXB0Q29tcGxldGlvbl89bnVsbDtyZXR1cm4gYX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuZW50ZXJGaW5hbGx5QmxvY2s9ZnVuY3Rpb24oYSxiLGMpe2M\/dGhpcy5maW5hbGx5Q29udGV4dHNfW2NdPXRoaXMuYWJydXB0Q29tcGxldGlvbl86dGhpcy5maW5hbGx5Q29udGV4dHNfPVt0aGlzLmFicnVwdENvbXBsZXRpb25fXTt0aGlzLmNhdGNoQWRkcmVzc189YXx8MDt0aGlzLmZpbmFsbHlBZGRyZXNzXz1ifHwwfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUubGVhdmVGaW5hbGx5QmxvY2s9ZnVuY3Rpb24oYSxiKXtiPXRoaXMuZmluYWxseUNvbnRleHRzXy5zcGxpY2UoYnx8MClbMF07aWYoYj10aGlzLmFicnVwdENvbXBsZXRpb25fPXRoaXMuYWJydXB0Q29tcGxldGlvbl98fGIpe2lmKGIuaXNFeGNlcHRpb24pcmV0dXJuIHRoaXMuanVtcFRvRXJyb3JIYW5kbGVyXygpO3ZvaWQgMCE9Yi5qdW1wVG8mJnRoaXMuZmluYWxseUFkZHJlc3NfPGIuanVtcFRvPyh0aGlzLm5leHRBZGRyZXNzPWIuanVtcFRvLHRoaXMuYWJydXB0Q29tcGxldGlvbl89bnVsbCk6dGhpcy5uZXh0QWRkcmVzcz10aGlzLmZpbmFsbHlBZGRyZXNzX31lbHNlIHRoaXMubmV4dEFkZHJlc3M9YX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuZm9ySW49ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyAkanNjb21wLmdlbmVyYXRvci5Db250ZXh0LlByb3BlcnR5SXRlcmF0b3IoYSl9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LlByb3BlcnR5SXRlcmF0b3I9ZnVuY3Rpb24oYSl7dGhpcy5vYmplY3RfPWE7dGhpcy5wcm9wZXJ0aWVzXz1bXTtmb3IodmFyIGIgaW4gYSl0aGlzLnByb3BlcnRpZXNfLnB1c2goYik7dGhpcy5wcm9wZXJ0aWVzXy5yZXZlcnNlKCl9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQuUHJvcGVydHlJdGVyYXRvci5wcm90b3R5cGUuZ2V0TmV4dD1mdW5jdGlvbigpe2Zvcig7MDx0aGlzLnByb3BlcnRpZXNfLmxlbmd0aDspe3ZhciBhPXRoaXMucHJvcGVydGllc18ucG9wKCk7aWYoYSBpbiB0aGlzLm9iamVjdF8pcmV0dXJuIGF9cmV0dXJuIG51bGx9OyRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV89ZnVuY3Rpb24oYSl7dGhpcy5jb250ZXh0Xz1uZXcgJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dDt0aGlzLnByb2dyYW1fPWF9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS5uZXh0Xz1mdW5jdGlvbihhKXt0aGlzLmNvbnRleHRfLnN0YXJ0XygpO2lmKHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl8pcmV0dXJuIHRoaXMueWllbGRBbGxTdGVwXyh0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfLm5leHQsYSx0aGlzLmNvbnRleHRfLm5leHRfKTt0aGlzLmNvbnRleHRfLm5leHRfKGEpO3JldHVybiB0aGlzLm5leHRTdGVwXygpfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUucmV0dXJuXz1mdW5jdGlvbihhKXt0aGlzLmNvbnRleHRfLnN0YXJ0XygpO3ZhciBiPXRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl87aWYoYilyZXR1cm4gdGhpcy55aWVsZEFsbFN0ZXBfKCJyZXR1cm4iaW4gYj9iWyJyZXR1cm4iXTpmdW5jdGlvbihjKXtyZXR1cm57dmFsdWU6Yyxkb25lOiEwfX0sYSx0aGlzLmNvbnRleHRfLnJldHVybik7dGhpcy5jb250ZXh0Xy5yZXR1cm4oYSk7cmV0dXJuIHRoaXMubmV4dFN0ZXBfKCl9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS50aHJvd189ZnVuY3Rpb24oYSl7dGhpcy5jb250ZXh0Xy5zdGFydF8oKTtpZih0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfKXJldHVybiB0aGlzLnlpZWxkQWxsU3RlcF8odGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yX1sidGhyb3ciXSxhLHRoaXMuY29udGV4dF8ubmV4dF8pO3RoaXMuY29udGV4dF8udGhyb3dfKGEpO3JldHVybiB0aGlzLm5leHRTdGVwXygpfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUueWllbGRBbGxTdGVwXz1mdW5jdGlvbihhLGIsYyl7dHJ5e3ZhciBkPWEuY2FsbCh0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfLGIpOyRqc2NvbXAuZ2VuZXJhdG9yLmVuc3VyZUl0ZXJhdG9yUmVzdWx0SXNPYmplY3RfKGQpO2lmKCFkLmRvbmUpcmV0dXJuIHRoaXMuY29udGV4dF8uc3RvcF8oKSxkO3ZhciBlPWQudmFsdWV9Y2F0Y2goayl7cmV0dXJuIHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl89bnVsbCx0aGlzLmNvbnRleHRfLnRocm93XyhrKSx0aGlzLm5leHRTdGVwXygpfXRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl89bnVsbDtjLmNhbGwodGhpcy5jb250ZXh0XyxlKTtyZXR1cm4gdGhpcy5uZXh0U3RlcF8oKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLm5leHRTdGVwXz1mdW5jdGlvbigpe2Zvcig7dGhpcy5jb250ZXh0Xy5uZXh0QWRkcmVzczspdHJ5e3ZhciBhPXRoaXMucHJvZ3JhbV8odGhpcy5jb250ZXh0Xyk7aWYoYSlyZXR1cm4gdGhpcy5jb250ZXh0Xy5zdG9wXygpLHt2YWx1ZTphLnZhbHVlLGRvbmU6ITF9fWNhdGNoKGIpe3RoaXMuY29udGV4dF8ueWllbGRSZXN1bHQ9dm9pZCAwLHRoaXMuY29udGV4dF8udGhyb3dfKGIpfXRoaXMuY29udGV4dF8uc3RvcF8oKTtpZih0aGlzLmNvbnRleHRfLmFicnVwdENvbXBsZXRpb25fKXthPXRoaXMuY29udGV4dF8uYWJydXB0Q29tcGxldGlvbl87dGhpcy5jb250ZXh0Xy5hYnJ1cHRDb21wbGV0aW9uXz1udWxsO2lmKGEuaXNFeGNlcHRpb24pdGhyb3cgYS5leGNlcHRpb247cmV0dXJue3ZhbHVlOmEucmV0dXJuLGRvbmU6ITB9fXJldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19OwokanNjb21wLmdlbmVyYXRvci5HZW5lcmF0b3JfPWZ1bmN0aW9uKGEpe3RoaXMubmV4dD1mdW5jdGlvbihiKXtyZXR1cm4gYS5uZXh0XyhiKX07dGhpcy50aHJvdz1mdW5jdGlvbihiKXtyZXR1cm4gYS50aHJvd18oYil9O3RoaXMucmV0dXJuPWZ1bmN0aW9uKGIpe3JldHVybiBhLnJldHVybl8oYil9O3RoaXNbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfX07JGpzY29tcC5nZW5lcmF0b3IuY3JlYXRlR2VuZXJhdG9yPWZ1bmN0aW9uKGEsYil7Yj1uZXcgJGpzY29tcC5nZW5lcmF0b3IuR2VuZXJhdG9yXyhuZXcgJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXyhiKSk7JGpzY29tcC5zZXRQcm90b3R5cGVPZiYmYS5wcm90b3R5cGUmJiRqc2NvbXAuc2V0UHJvdG90eXBlT2YoYixhLnByb3RvdHlwZSk7cmV0dXJuIGJ9OwokanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3I9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihkKXtyZXR1cm4gYS5uZXh0KGQpfWZ1bmN0aW9uIGMoZCl7cmV0dXJuIGEudGhyb3coZCl9cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGQsZSl7ZnVuY3Rpb24gayhoKXtoLmRvbmU\/ZChoLnZhbHVlKTpQcm9taXNlLnJlc29sdmUoaC52YWx1ZSkudGhlbihiLGMpLnRoZW4oayxlKX1rKGEubmV4dCgpKX0pfTskanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3JGdW5jdGlvbj1mdW5jdGlvbihhKXtyZXR1cm4gJGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yKGEoKSl9OyRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvclByb2dyYW09ZnVuY3Rpb24oYSl7cmV0dXJuICRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvcihuZXcgJGpzY29tcC5nZW5lcmF0b3IuR2VuZXJhdG9yXyhuZXcgJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXyhhKSkpfTsKalF1ZXJ5Lm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4galF1ZXJ5fTtqUXVlcnkuZXZlbnQuc3BlY2lhbC50b3VjaHN0YXJ0PXtzZXR1cDpmdW5jdGlvbihhLGIsYyl7Yi5pbmNsdWRlcygibm9QcmV2ZW50RGVmYXVsdCIpP3RoaXMuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsYyx7cGFzc2l2ZTohMX0pOnRoaXMuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsYyx7cGFzc2l2ZTohMH0pfX07alF1ZXJ5LmV4cHIucHNldWRvcy5yZWFsbHlWaXNpYmxlPWZ1bmN0aW9uKGEpe3RyeXtpZihhPT1kb2N1bWVudC5ib2R5KXJldHVybiEwO3ZhciBiPWpRdWVyeShhKTtyZXR1cm4gYi5pcygiOnZpc2libGUiKSYmImhpZGRlbiIhPT1iLmNzcygidmlzaWJpbGl0eSIpJiYwPGIucGFyZW50KCI6cmVhbGx5VmlzaWJsZSIpLmxlbmd0aH1jYXRjaChjKXtyZXR1cm4gY29uc29sZS5sb2coYy5tZXNzYWdlLGMpLCExfX07CkFycmF5LnByb3RvdHlwZS5maW5kfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoQXJyYXkucHJvdG90eXBlLCJmaW5kIix7dmFsdWU6ZnVuY3Rpb24oYSxiKXtpZihudWxsPT10aGlzKXRocm93IFR5cGVFcnJvcignInRoaXMiIGlzIG51bGwgb3Igbm90IGRlZmluZWQnKTt2YXIgYz1PYmplY3QodGhpcyksZD1jLmxlbmd0aD4+PjA7aWYoImZ1bmN0aW9uIiE9PXR5cGVvZiBhKXRocm93IFR5cGVFcnJvcigicHJlZGljYXRlIG11c3QgYmUgYSBmdW5jdGlvbiIpO2Zvcih2YXIgZT0wO2U8ZDspe3ZhciBrPWNbZV07aWYoYS5jYWxsKGIsayxlLGMpKXJldHVybiBrO2UrK319LGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOwp2YXIgaXNGdW5jdGlvbj1hPT4iZnVuY3Rpb24iPT09dHlwZW9mIGEsdHJpbT1hPT5hLnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKSxkZWJ1Zz1mdW5jdGlvbigpe2lmKGRlYnVnRW5hYmxlZCgpKXt2YXIgYT1jb25zb2xlLGI9YXJndW1lbnRzOyJmdW5jdGlvbiI9PXR5cGVvZiBhLmxvZyYmYS5sb2cuYXBwbHkoYSxiKX19LGRlYnVnRW5hYmxlZD1mdW5jdGlvbigpe3ZhciBhPWRvY3VtZW50LmxvY2F0aW9uLmhvc3Q7dmFyIGI9ZG9jdW1lbnQuY29va2llLm1hdGNoKC90ZXN0aW5nPShbXjtdKykvaSk7Yj1udWxsPT1iPyExOmJbMV07cmV0dXJuIGJ8fC9eKGRlYWxlcnxkZW1vKXxkMmNtZWRpYVwuY2EkLy50ZXN0KGEpJiYib2ZmIiE9Yn0sZW5hYmxlRGVidWc9ZnVuY3Rpb24oKXtDb29raWVzLnNldCgidGVzdGluZyIsIm9uIil9LGRpc2FibGVEZWJ1Zz1mdW5jdGlvbigpe0Nvb2tpZXMuc2V0KCJ0ZXN0aW5nIiwib2ZmIil9LEFsZXJ0QmFyPWZ1bmN0aW9uKGEpe3ZhciBiPWEuc2VjdGlvbnMudG9Mb3dlckNhc2UoKSwKYz1hLmN1cnJlbnQudG9Mb3dlckNhc2UoKSxkPSQoIi5oZWFkZXItd3JhcHBlciIpLmxlbmd0aD8kKCIuaGVhZGVyLXdyYXBwZXIiKTokKCIjbWFpbkRpdiIpLGU9JCgiI2FsZXJ0TXNnQ29udGFpbmVyIiksaz0kKCJib2R5IiksaD0kKCIuQWRkZWRUb3BMaW5rRGl2Iiksbj1uZXcgRGF0ZTtuLnNldFRpbWUobi5nZXRUaW1lKCkrMzZFNSk7dmFyIHg9ZnVuY3Rpb24oKXtDb29raWVzLnNldCgiYWxlcnRNZXNzYWdlQ2xvc2VkIiwxLG4sIi8iKTtlLmhpZGUoKTtkLmNzcyh7bWFyZ2luVG9wOjB9KTtrLmNzcygiYmFja2dyb3VuZC1wb3NpdGlvbi15IiwiIik7MDxoLmxlbmd0aCYmaC5jc3MoIm1hcmdpbi10b3AiLCIiKX07LTE8Yi5pbmRleE9mKGMpJiYhQ29va2llcy5nZXQoImFsZXJ0TWVzc2FnZUNsb3NlZCIpJiYoZS5jc3Moe2JhY2tncm91bmRDb2xvcjphLmNvbG9yfSksJCgiLmNsb3NlIixlKS5vbigiY2xpY2siLHgpLGQuY3NzKCJtYXJnaW4tdG9wIixlLmhlaWdodCgpKyJweCIpLAprLmNzcyh7ImJhY2tncm91bmQtcG9zaXRpb24teSI6ZS5oZWlnaHQoKSsicHgifSksMDxoLmxlbmd0aCYmaC5jc3MoIm1hcmdpbi10b3AiLGUuaGVpZ2h0KCkrInB4IiksZS5zaG93KCkpfTtmdW5jdGlvbiBMZWFkR2VuQURGKGEsYixjLGQsZSxrLGgsbil7aWYodHlwZW9mIGNhcnByb29mSGFuZGxlcilyZXR1cm4gY2FycHJvb2ZIYW5kbGVyLmxlYWRHZW4uYXBwbHkoY2FycHJvb2ZIYW5kbGVyLGFyZ3VtZW50cyl9CmZ1bmN0aW9uIHJ1bkltYWdlUG9wdXBGaXJld29ya3MoKXsidW5kZWZpbmVkIiE9dHlwZW9mIEZpcmV3b3JrVGltZXImJihpbWFnZUZpcmV3b3Jrcz0hMCxGaXJld29ya1RpbWVyKCJiZ0ltYWdlIiwiRkZGRkZGIiwyMDAsMjAwKSxGaXJld29ya1RpbWVyKCJiZ0ltYWdlIiwiRkYwMDAwIiwzODAsMjUwLDFFMyksRmlyZXdvcmtUaW1lcigiYmdJbWFnZSIsIjAwZmYxMSIsOTAsMTcwLDJFMyksRmlyZXdvcmtUaW1lcigiYmdJbWFnZSIsIjQ0Y2RmZiIsMzIwLDI1MCwzRTMsMCwuOCksc2V0VGltZW91dChmdW5jdGlvbigpe3J1bkltYWdlUG9wdXBGaXJld29ya3MoKX0sMUU0KSl9CmZ1bmN0aW9uIGhhbmRsZUFjdGlvbkNsaWNrKGEpe2E9YXx8d2luZG93LmV2ZW50O2E9YS5jdXJyZW50VGFyZ2V0fHxhLnNyY0VsZW1lbnQ7dmFyIGI9d2luZG93LmxvY2F0aW9uLmhyZWYuc3Vic3RyaW5nKHdpbmRvdy5sb2NhdGlvbi5ocmVmLmxhc3RJbmRleE9mKCIvIikrMSksYz0idXNlZCI7dmFyIGQ9IiI7aWYoLTE9PXdpbmRvdy5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi1pZCIpKXtkPWIucmVwbGFjZSgiLmh0bWwiLCIiKS5zcGxpdCgiLSIpO2lmKDM+ZC5sZW5ndGh8fC0xPGIuaW5kZXhPZigic2VhcmNoIil8fC0xPGIuaW5kZXhPZigiZmluZC0iKXx8LTE8Yi5pbmRleE9mKCJyZWNoZXJjaGUiKXx8LTE8Yi5pbmRleE9mKCJwcml4LSIpfHwtMTxiLmluZGV4T2YoInByaWNlLSIpfHwtMTxiLmluZGV4T2YoImVzc2Fpcy1yb3V0aWVyLSIpfHwtMTxiLmluZGV4T2YoInRlc3QtZHJpdmUtIil8fC0xPGIuaW5kZXhPZigidmVoaWN1bGUtZWNoYW5nZS0iKXx8LTE8Yi5pbmRleE9mKCJ0cmFkZS1pbi0iKXx8Ci0xPGIuaW5kZXhPZigicG5ldXMtcGllY2VzLSIpfHwtMTxiLmluZGV4T2YoImNhci1wYXJ0cy0iKXx8LTE8Yi5pbmRleE9mKCJyZW5kZXotdm91cy0iKXx8LTE8Yi5pbmRleE9mKCItYXBwb2ludG1lbnQiKXx8LTE8Yi5pbmRleE9mKCJjcmVkaXQiKXx8LTE8Yi5pbmRleE9mKCJmaW5hbmNlbWVudCIpfHwtMTxiLmluZGV4T2YoInByZS1hcHBybyIpfHwtMTxiLmluZGV4T2YoIm5ldy13ZXN0Iil8fC0xPGIuaW5kZXhPZigiY29uZmlkZW50aWFsaXRlIil8fC0xPGIuaW5kZXhPZigicHJpdmFjeS1wb2xpY3kiKXx8LTE8Yi5pbmRleE9mKCJ0ZXJtZXMtZXQtY29uZGl0aW9ucyIpfHwtMTxiLmluZGV4T2YoInRlcm1zLWFuZC1jb25kaXRpb25zIikpZD0iLmh0bWwiO2Vsc2V7dmFyIGU9KG5ldyBEYXRlKS5nZXRGdWxsWWVhcigpOyJ1bmRlZmluZWQiPT10eXBlb2YgZFsyXXx8ZSE9ZFsyXSYmZSsxIT1kWzJdfHwoYz0ibmV3Iik7ZD0iLyIrYn1kPWEuZ2V0QXR0cmlidXRlKCJ0YXJnZXRVUkkiKS5yZXBsYWNlKCIuaHRtbCIsCmQpfWVsc2V7c3dpdGNoKGEuZ2V0QXR0cmlidXRlKCJhY3Rpb24iKSl7Y2FzZSAiVGVzdERyaXZlQWN0aW9uQm94IjpkPSQoIiN0ZXN0RHJpdmVGb2xkZXIiKS52YWwoKStiO2JyZWFrO2Nhc2UgIlByaWNlQWN0aW9uQm94IjpkPSQoIiNwcmljZVJlcXVlc3RGb2xkZXIiKS52YWwoKStiO2JyZWFrO2Nhc2UgIkV2YWxBY3Rpb25Cb3giOmQ9JCgiI2V2YWxDYXJGb2xkZXIiKS52YWwoKStiO2JyZWFrO2Nhc2UgIkZpbmFuY2VBY3Rpb25Cb3giOmQ9JCgiI0ZpbmFuY2VGb2xkZXIiKS52YWwoKStiO2JyZWFrO2RlZmF1bHQ6InVuZGVmaW5lZCIhPXR5cGVvZiAkKGEpLmF0dHIoImZvbGRlciIpP2Q9JChhKS5hdHRyKCJmb2xkZXIiKToidW5kZWZpbmVkIiE9dHlwZW9mICQoYSkuYXR0cigidGFyZ2V0dXJpIikmJihkPSQoYSkuYXR0cigidGFyZ2V0dXJpIikpfUNvb2tpZXMuc2V0KCJmcm9tZGV0YWlsc3BhZ2UiLCIxIixudWxsLCIvIil9aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBkJiZudWxsIT0KZCYmMDxkLmxlbmd0aCl7Yj1kMmNtZWRpYS5odG1sRmlsZSghMSwhMCk7ZT1iLnNwbGl0KCItIik7dmFyIGs9IiIsaD0iIixuPSIiOzA8ZS5sZW5ndGgmJihrPWVbMF0pOzE8ZS5sZW5ndGgmJihoPWVbMV0pOzI8ZS5sZW5ndGgmJihuPWVbMl0pOzA8ay5sZW5ndGgmJjA8aC5sZW5ndGgmJjA8bi5sZW5ndGgmJiFpc05hTihuKSYmND09bi50b1N0cmluZygpLmxlbmd0aCYmLTE8ZC5pbmRleE9mKCIuaHRtIikmJihlPWEuZ2V0QXR0cmlidXRlKCJmb2xkZXIiKSxkPSJ1bmRlZmluZWQiIT10eXBlb2YgZSYmbnVsbCE9ZT9lOmQuc3Vic3RyaW5nKDAsZC5sYXN0SW5kZXhPZigiLyIpKzEpLGQ9ZC5yZXBsYWNlKCIuaHRtbCIsIi8iKStiKyIuaHRtbCIpOyQoYSkuaGFzQ2xhc3MoInRyYWRlaW5MaW5rIikmJigwPGEuZ2V0QXR0cmlidXRlKCJ0YXJnZXRVUkkiKS5pbmRleE9mKCJ0cmFkZWludmFsdWVzIil8fDA8YS5nZXRBdHRyaWJ1dGUoInRhcmdldFVSSSIpLmluZGV4T2YoImluc3RhbnRvZmZlci5hY2N1LXRyYWRlLmNvbSIpKT8Kc2hvd1RyYWRlSW5Qb3B1cChhLmdldEF0dHJpYnV0ZSgidGFyZ2V0VVJJIikpOigibmV3Ij09YyYmKGQ9ZC5yZXBsYWNlKCJvY2Nhc2lvbiIsIm5ldWYiKS5yZXBsYWNlKCJ1c2VkIiwibmV3IikpLHdpbmRvdy5sb2NhdGlvbi5ocmVmPWQpfX0KZnVuY3Rpb24gb3BlbkZpbmFuY2VNdWx0aXN0ZXBGb3JtT25DdXJyZW50UGFnZShhLGIsYyxkLGUsayxoKXthLnByZXZlbnREZWZhdWx0KCk7YS5zdG9wUHJvcGFnYXRpb24oKTtiPyQoIiNwb3B1cG1ha2VNdWx0aXN0ZXBGb3JtIikudmFsKGIpOiJORVdDQVJERVRBSUxTIj09JCgiYm9keSIpLmF0dHIoImlkIik\/JCgiI3BvcHVwbWFrZU11bHRpc3RlcEZvcm0iKS52YWwoJCgiLmJyYW5kZW1haWwiKS52YWwoKSk6ImNhcmRldGFpbC5odG1sIj09JCgiI1BBR0VJRCIpLnZhbCgpJiYkKCIjcG9wdXBtYWtlTXVsdGlzdGVwRm9ybSIpLnZhbCgkKCIjcGhvbmVtYWtlIikudmFsKCkpO2M\/JCgiI3BvcHVwbW9kZWxNdWx0aXN0ZXBGb3JtIikudmFsKGMpOiJORVdDQVJERVRBSUxTIj09JCgiYm9keSIpLmF0dHIoImlkIik\/JCgiI3BvcHVwbW9kZWxNdWx0aXN0ZXBGb3JtIikudmFsKCQoIi5tb2RlbGVtYWlsIikudmFsKCkpOiJjYXJkZXRhaWwuaHRtbCI9PSQoIiNQQUdFSUQiKS52YWwoKSYmCiQoIiNwb3B1cG1vZGVsTXVsdGlzdGVwRm9ybSIpLnZhbCgkKCIjcGhvbmVtb2RlbCIpLnZhbCgpKTtkPyQoIiNwb3B1cHllYXJNdWx0aXN0ZXBGb3JtIikudmFsKGQpOiJORVdDQVJERVRBSUxTIj09JCgiYm9keSIpLmF0dHIoImlkIik\/JCgiI3BvcHVweWVhck11bHRpc3RlcEZvcm0iKS52YWwoJCgiLnllYXJlbWFpbCIpLnZhbCgpKToiY2FyZGV0YWlsLmh0bWwiPT0kKCIjUEFHRUlEIikudmFsKCkmJiQoIiNwb3B1cHllYXJNdWx0aXN0ZXBGb3JtIikudmFsKCQoIiNwaG9uZW15ZWFyIikudmFsKCkpO2U\/JCgiI3BvcHVwc3RvY2tudW1iZXJNdWx0aXN0ZXBGb3JtIikudmFsKGUpOiJORVdDQVJERVRBSUxTIj09JCgiYm9keSIpLmF0dHIoImlkIik\/JCgiI3BvcHVwc3RvY2tudW1iZXJNdWx0aXN0ZXBGb3JtIikudmFsKCIiKToiY2FyZGV0YWlsLmh0bWwiPT0kKCIjUEFHRUlEIikudmFsKCkmJiQoIiNwb3B1cHN0b2NrbnVtYmVyTXVsdGlzdGVwRm9ybSIpLnZhbCgkKCIjcGhvbmVzdG9ja251bWJlciIpLnZhbCgpKTsKaz8kKCIjdG9wY2FyaWRNdWx0aXN0ZXBGb3JtIikudmFsKGspOiJORVdDQVJERVRBSUxTIj09JCgiYm9keSIpLmF0dHIoImlkIikmJiQoIiN0b3BjYXJpZE11bHRpc3RlcEZvcm0iKS52YWwoIiIpO2gmJihoLnNlbmRUbyYmJCgiI0ZJTkFOQ0VfRk9STV9TRU5EVE9fRU1BSUwiKS52YWwoaC5zZW5kVG8pLGguc2VuZFRvQWRmJiYkKCIjRklOQU5DRV9GT1JNX1NFTkRUT0FERl9FTUFJTCIpLnZhbChoLnNlbmRUb0FkZiksaC5kZWFsZXJOYW1lJiYkKCIjRklOQU5DRV9GT1JNX0RFQUxFUk5BTUUiKS52YWwoaC5kZWFsZXJOYW1lKSk7YT0iZmluYW5jZU11bHRpc3RlcFBvcHVwQ29udGFpbmVyIjskKCIjRmluYW5jZV9Gb3JtVHlwZSIpLmxlbmd0aCYmIm11bHRpc3RlcEluc3RhbnQiPT0kKCIjRmluYW5jZV9Gb3JtVHlwZSIpLnZhbCgpJiYkKCIjZmluYW5jZU11bHRpc3RlcEluc3RhbnRQb3B1cENvbnRhaW5lciIpLmxlbmd0aCYmKGE9ImZpbmFuY2VNdWx0aXN0ZXBJbnN0YW50UG9wdXBDb250YWluZXIiKTsKJCgiIyIrYSkucG9wdXBpemUoKS5zZXRUcmlnZ2VyKCJjbGljayIpLm9wZW4oMSl9ZnVuY3Rpb24gb3BlblNob3dyb29tQ29udGFjdFBvcHVwKGEsYixjLGQpe2EucHJldmVudERlZmF1bHQoKTthLnN0b3BQcm9wYWdhdGlvbigpO2VtYWlsSGFuZGxlci5tYWtlPWI7JCgiI2xhc3R2aWV3ZWRtYWtlIikudmFsKGIpO2VtYWlsSGFuZGxlci5tb2RlbD1jOyQoIiNsYXN0dmlld2VkbW9kZWwiKS52YWwoYyk7ZW1haWxIYW5kbGVyLnllYXI9ZDskKCIjbGFzdHZpZXdlZHllYXIiKS52YWwoZCk7JCgiI2NvbnRhY3Rwb3B1cCIpLnBvcHVwaXplKCkuc2V0VHJpZ2dlcigiY2xpY2siKS5vcGVuKCl9dmFyIGQyY21lZGlhPWQyY21lZGlhfHx7fTsKZDJjbWVkaWEuc2Nyb2xsVG89ZnVuY3Rpb24oYSxiLGMpeyJ1bmRlZmluZWQiPT10eXBlb2YgYyYmKGM9MUUzKTsidW5kZWZpbmVkIj09dHlwZW9mIGImJihiPTApOyQoImh0bWwsIGJvZHkiKS5hbmltYXRlKHtzY3JvbGxUb3A6JChhKS5vZmZzZXQoKS50b3AtYn0sYyk7cmV0dXJuITF9OwpkMmNtZWRpYS51cmw9e19zYW5pdGl6ZTohMCxkZXNhbml0aXplOmZ1bmN0aW9uKGEpe2lmKCJzdHJpbmciPT09dHlwZW9mIGEpcmV0dXJuIGEucmVwbGFjZSgvXy9nLCItIik7aWYoIm9iamVjdCI9PT10eXBlb2YgYSl7Zm9yKHZhciBiIGluIGEpYVtiXT10aGlzLmRlc2FuaXRpemUoYVtiXSk7cmV0dXJuIGF9fSxnZW5lcmF0ZTpmdW5jdGlvbigpe3ZhciBhPSIiO3RoaXMuX3Nhbml0aXplJiYoYXJndW1lbnRzPXRoaXMuc2FuaXRpemUoYXJndW1lbnRzKSk7Zm9yKGk9MDtpPGFyZ3VtZW50cy5sZW5ndGgtMTtpKyspYSs9YXJndW1lbnRzW2ldKyItIjtyZXR1cm4gYSthcmd1bWVudHNbaV0rIi5odG1sIn0scGFyc2U6ZnVuY3Rpb24oKXt1cmw9ZGVjb2RlVVJJQ29tcG9uZW50KGRvY3VtZW50LlVSTCk7c3RyUGFyYW09dXJsLnN1YnN0cmluZyh1cmwubGFzdEluZGV4T2YoIi8iKSk7b2JqUGFyYW09e21ha2U6bnVsbCxtb2RlbDpudWxsLHllYXI6bnVsbCxpZDpudWxsfTtmb3VuZD0hMTsKdmFyIGE7bnVsbCE9KGE9c3RyUGFyYW0ubWF0Y2goL15cLygyMFswLTldezJ9fDE5WzAtOV17Mn0pLShbXi1dKy1bXi1cLl0rKSguKlwuaHRtbCkvKSkmJihzdHJQYXJhbT0iLyIrYVsyXSsiLSIrYVsxXSthWzNdKTthPXN0clBhcmFtLm1hdGNoKC9cLyhbXi9dKiktKC4qKS0oXGR7NH0pKC1pZChcZCopKT8uaHRtbC8pO2ZvdW5kfHxudWxsPT09YXx8KG9ialBhcmFtLm1ha2U9YVsxXSxvYmpQYXJhbS5tb2RlbD1hWzJdLG9ialBhcmFtLnllYXI9YVszXSxvYmpQYXJhbS5pZD1hWzVdLGZvdW5kPSEwKTthPXN0clBhcmFtLm1hdGNoKC9cLyhbXi9dKiktKC4qKS0oXGR7NH0pKC1jXGQqKT8uaHRtbC8pO2ZvdW5kfHxudWxsPT09YXx8KG9ialBhcmFtLm1ha2U9YVsxXSxvYmpQYXJhbS5tb2RlbD1hWzJdLG9ialBhcmFtLnllYXI9YVszXSxmb3VuZD0hMCk7YT1zdHJQYXJhbS5tYXRjaCgvXC8oW14vXSopLShcZHs0fSkuaHRtbC8pO2ZvdW5kfHxudWxsPT09YXx8KG9ialBhcmFtLm1ha2U9CmFbMV0sb2JqUGFyYW0ueWVhcj1hWzJdLGZvdW5kPSEwKTthPXN0clBhcmFtLm1hdGNoKC9cLyhbXi9dKiktKFteLl0qKS5odG1sLyk7Zm91bmR8fG51bGw9PT1hfHwob2JqUGFyYW0ubWFrZT1hWzFdLG9ialBhcmFtLm1vZGVsPWFbMl0sZm91bmQ9ITApO2E9c3RyUGFyYW0ubWF0Y2goL1wvKFteL10qKS5odG1sLyk7Zm91bmR8fG51bGw9PT1hfHwob2JqUGFyYW0ubWFrZT1hWzFdLGZvdW5kPSEwKTt0aGlzLl9zYW5pdGl6ZSYmKG9ialBhcmFtPXRoaXMuZGVzYW5pdGl6ZShvYmpQYXJhbSkpO3JldHVybiBvYmpQYXJhbX0sc2FuaXRpemU6ZnVuY3Rpb24oYSl7aWYoInN0cmluZyI9PT10eXBlb2YgYSlyZXR1cm4gYS5yZXBsYWNlKC8tL2csIl8iKTtpZigib2JqZWN0Ij09PXR5cGVvZiBhKXtmb3IodmFyIGIgaW4gYSlhW2JdPXRoaXMuc2FuaXRpemUoYVtiXSk7cmV0dXJuIGF9fSxzYW5pdGl6ZVJlZmVyZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvWyciYCgpPD5cW1xde318IV0vZywKIiIpfX07ZDJjbWVkaWEuZ2V0SHR0cFRleHQ9ZnVuY3Rpb24oKXtyZXR1cm4iaHR0cHM6Ij09ZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2wmJiQoIiN0b3BkZXBsb3ltZW50dHlwZSIpLmxlbmd0aCYmImxpdmUiPT0kKCIjdG9wZGVwbG95bWVudHR5cGUiKS52YWwoKT8iaHR0cHMiOiJodHRwIn07ZDJjbWVkaWEuY2FwaXRhbGlzZUZpcnN0TGV0dGVyPWZ1bmN0aW9uKGEpe3JldHVybiJ1bmRlZmluZWQiPT10eXBlb2YgYT8iIjphLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Euc2xpY2UoMSl9O2QyY21lZGlhLmNhcGl0YWxpc2VGaXJzdExldHRlck9mRXZlcnlXb3JkPWZ1bmN0aW9uKGEpe3JldHVybiJ1bmRlZmluZWQiPT10eXBlb2YgYT8iIjphLnNwbGl0KCIgIikucmVkdWNlKGZ1bmN0aW9uKGIsYyl7Yz1kMmNtZWRpYS5jYXBpdGFsaXNlRmlyc3RMZXR0ZXIoYyk7cmV0dXJuIGI\/YisiICIrYzpjfSwiIil9OwpkMmNtZWRpYS5zYWZlU3RyaW5nPWZ1bmN0aW9uKGEpe3ZhciBiPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2IudGV4dENvbnRlbnQ9YTtyZXR1cm4gYi5pbm5lclRleHR9OwpkMmNtZWRpYS5odG1sRmlsZT1mdW5jdGlvbihhLGIpe3ZhciBjPXdpbmRvdy5sb2NhdGlvbi5zZWFyY2gubGVuZ3RoJiYtMTx3aW5kb3cubG9jYXRpb24uc2VhcmNoLmluZGV4T2YoInBhdGg9Iik\/d2luZG93LmxvY2F0aW9uLnNlYXJjaDp3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7Yz1jLnN1YnN0cmluZyhjLmxhc3RJbmRleE9mKCIvIikrMSk7Yz1kMmNtZWRpYS5zYWZlU3RyaW5nKGMpO3RyeXt2YXIgZD1kZWNvZGVVUklDb21wb25lbnQoYyl9Y2F0Y2goayl7dmFyIGU9eyIlQzAiOiImQWdyYXZlOyIsIiVDMSI6IiZBYWN1dGU7IiwiJUMyIjoiJkFjaXJjOyIsIiVDMyI6IiZBdGlsZGU7IiwiJUM0IjoiJkF1bWw7IiwiJUM1IjoiJkFyaW5nOyIsIiVDNiI6IiZBRWxpZzsiLCIlQzciOiImQ2NlZGlsOyIsIiVDOCI6IiZFZ3JhdmU7IiwiJUM5IjoiJkVhY3V0ZTsiLCIlQ0EiOiImRWNpcmM7IiwiJUNCIjoiJkV1bWw7IiwiJUNDIjoiJklncmF2ZTsiLCIlQ0QiOiImSWFjdXRlOyIsIiVDRSI6IiZJY2lyYzsiLAoiJUNGIjoiJkl1bWw7IiwiJUQwIjoiJkVUSDsiLCIlRDEiOiImTnRpbGRlOyIsIiVEMiI6IiZPZ3JhdmU7IiwiJUQzIjoiJk9hY3V0ZTsiLCIlRDQiOiImT2NpcmM7IiwiJUQ1IjoiJk90aWxkZTsiLCIlRDYiOiImT3VtbDsiLCIlRDgiOiImT3NsYXNoOyIsIiVEOSI6IiZVZ3JhdmU7IiwiJURBIjoiJlVhY3V0ZTsiLCIlREIiOiImVWNpcmM7IiwiJURDIjoiJlV1bWw7IiwiJUREIjoiJllhY3V0ZTsiLCIlREUiOiImVEhPUk47IiwiJURGIjoiJnN6bGlnOyIsIiVFMCI6IiZhZ3JhdmU7IiwiJUUxIjoiJmFhY3V0ZTsiLCIlRTIiOiImYWNpcmM7IiwiJUUzIjoiJmF0aWxkZTsiLCIlRTQiOiImYXVtbDsiLCIlRTUiOiImYXJpbmc7IiwiJUU2IjoiJmFlbGlnOyIsIiVFNyI6IiZjY2VkaWw7IiwiJUU4IjoiJmVncmF2ZTsiLCIlRTkiOiImZWFjdXRlOyIsIiVFQSI6IiZlY2lyYzsiLCIlRUIiOiImZXVtbDsiLCIlRUMiOiImaWdyYXZlOyIsIiVFRCI6IiZpYWN1dGU7IiwiJUVFIjoiJmljaXJjOyIsCiIlRUYiOiImaXVtbDsiLCIlRjAiOiImZXRoOyIsIiVGMSI6IiZudGlsZGU7IiwiJUYyIjoiJm9ncmF2ZTsiLCIlRjMiOiImb2FjdXRlOyIsIiVGNCI6IiZvY2lyYzsiLCIlRjUiOiImb3RpbGRlOyIsIiVGNiI6IiZvdW1sOyIsIiVGNyI6IiZkaXZpZGU7IiwiJUY4IjoiJm9zbGFzaDsiLCIlRjkiOiImdWdyYXZlOyIsIiVGQSI6IiZ1YWN1dGU7IiwiJUZCIjoiJnVjaXJjOyIsIiVGQyI6IiZ1dW1sOyIsIiVGRCI6IiZ5YWN1dGU7IiwiJUZFIjoiJnRob3JuOyIsIiVGRiI6IiZ5dW1sOyJ9O2Q9Yy5yZXBsYWNlKC8lWzAtOUEtRl17Mn0vaWcsZnVuY3Rpb24oaCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBlW2hdKXJldHVybiBkZWNvZGVVUklDb21wb25lbnQoaCk7dmFyIG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpO24udGV4dENvbnRlbnQ9ZVtoXTtyZXR1cm4gbi5pbm5lclRleHR9KX1kPWQuc3Vic3RyaW5nKDAsZC5pbmRleE9mKCIuaHRtIikpO2EmJihkPWQucmVwbGFjZSgvIC9nLAoiXyIpLnJlcGxhY2UoLycvZywiIikucmVwbGFjZSgiLmh0bWwiLCIiKSk7bnVsbCE9KGE9ZC5tYXRjaCgvXigxOVswLTldezJ9fDIwWzAtOV17Mn0pLShbXi1dKy1bXi1dKykoLiopJC8pKSYmKGQ9YVsyXSsiLSIrYVsxXSthWzNdLCJFTkdMSVNIIj09KCJFTkdMSVNIIj09JCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpPyJFTkdMSVNIIjoiRlJFTkNIIikmJmImJihkPWFbMV0rIi0iK2FbMl0rYVszXSkpO3JldHVybiBkfTtkMmNtZWRpYS5pc0hvbWVwYWdlPWZ1bmN0aW9uKCl7dmFyIGE9d2luZG93LmxvY2F0aW9uLnBhdGhuYW1lO3JldHVybiIvIj09YXx8Ii9lbmcvIj09YXx8Ii9mci8iPT1hfTtkMmNtZWRpYS5wYWdlRGVwYXJ0bWVudD1mdW5jdGlvbigpe3ZhciBhPSQoIiNkZWZhdWx0RGVwYXJ0bWVudCIpLnZhbCgpO3JldHVybiJPVEhFUiI9PWEmJmQyY21lZGlhLmlzSG9tZXBhZ2UoKT8iSE9NRVBBR0UiOmF9Owp2YXIganNfZDJjX2dldF92YWw9anNfZDJjX2dldF92YWx8fGZ1bmN0aW9uKGEpe3RyeXtyZXR1cm4oZWw9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYSkpP2VsLnZhbHVlOiIifWNhdGNoKGIpe3JldHVybiBjb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coIlN5c3RlbSBmYWlsZWQgd2hpbGUgcmV0cmlldmluZyByZXBsYWNlbWVudCB2YWx1ZTogIitiLm1lc3NhZ2UsYiksYX19O1N0cmluZy5wcm90b3R5cGUubm9EMkNSZXBsYWNlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWVPZigpfTsKZDJjQkdDbGljaz1mdW5jdGlvbihhKXt2YXIgYj10aGlzOyQuZXh0ZW5kKGIsYSk7dGhpcy5zZXQ9ZnVuY3Rpb24oYyl7InVuZGVmaW5lZCI9PXR5cGVvZiBjJiYoYz0hMSk7dmFyIGQ9Yi5iZ0ltZ1VybCxlPWIuYmdJbWdQYXRoLGs9Yi5iZ0ltZ0ZpeGVkLGg9Yi5iZ0ltZ1Jlc3BvbnNpdmUsbj1iLm1ha2UseD1kb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZS5yZXBsYWNlKC8tL2csIiIpLHY9JCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpPyQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKS50b0xvd2VyQ2FzZSgpOiJmcmVuY2giLGY9IiIsZz0hMTswIT1jJiYobj1jLnRvTG93ZXJDYXNlKCkpO3ZhciBtPWM9IiI7bj9lLmhhc093blByb3BlcnR5KG4pPyhjPWVbbl0sbT1rW25dK2hbbl0sZz0hMCk6ZS5oYXNPd25Qcm9wZXJ0eSgiYWxsIik\/KGM9ZS5hbGwsbT1rLmFsbCtoLmFsbCxnPSEwKTplLmhhc093blByb3BlcnR5KHYpJiYoYz1lW3ZdLG09a1t2XStoW3ZdKTplLmhhc093blByb3BlcnR5KHYpJiYKMD09ZyYmKGM9ZVt2XSxtPWtbdl0raFt2XSk7YyYmKGIuYmdJbWc9Yy5zcGxpdCgiLyIpLnBvcCgpLCQoImJvZHkiKS5hdHRyKCJzdHlsZSIsImJhY2tncm91bmQtaW1hZ2U6IHVybCgnIitjKyInKTsgYmFja2dyb3VuZC1wb3NpdGlvbjogdG9wIGNlbnRlcjsgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsiK20pKTtmb3IodmFyIGwgaW4gZCl7aWYoLTEhPXguaW5kZXhPZihsLHgpKXtmPWRbbF07YnJlYWt9aWYobD09dil7Zj1kW2xdO2JyZWFrfX0wPT1mLmxlbmd0aCYmKGQuaGFzT3duUHJvcGVydHkobik\/Zj1kW25dOmQuaGFzT3duUHJvcGVydHkoImFsbCIpJiYoZj1kLmFsbCkpOzA8Zi5sZW5ndGgmJihkPSQod2luZG93KS53aWR0aCgpLzItJCgiLndyYXBwZXIiKS53aWR0aCgpLzIsZT0kKHdpbmRvdykud2lkdGgoKS8yKyQoIi53cmFwcGVyIikud2lkdGgoKS8yLCQoIiNiZ0NsaWNrMSIpLnJlbW92ZSgpLCQoIiNiZ0NsaWNrMiIpLnJlbW92ZSgpLCQoImJvZHkiKS5hcHBlbmQoIjxkaXYgaWQ9J2JnQ2xpY2sxJyBzdHlsZT0nei1pbmRleDoxMDA7Y3Vyc29yOnBvaW50ZXI7d2lkdGg6IisKZCsicHg7aGVpZ2h0OjEwMCU7cG9zaXRpb246Zml4ZWQ7bGVmdDowcHg7dG9wOjBweDsnPjwvZGl2PiIpLCQoImJvZHkiKS5hcHBlbmQoIjxkaXYgaWQ9J2JnQ2xpY2syJyBzdHlsZT0nei1pbmRleDoxMDA7Y3Vyc29yOnBvaW50ZXI7d2lkdGg6IitkKyJweDtoZWlnaHQ6MTAwJTtwb3NpdGlvbjpmaXhlZDtsZWZ0OiIrZSsicHg7dG9wOjBweDsnPjwvZGl2PiIpLCQoIiNiZ0NsaWNrMSIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtiLnJlZGlyZWN0KGYpfSksJCgiI2JnQ2xpY2syIikub24oImNsaWNrIixmdW5jdGlvbigpe2IucmVkaXJlY3QoZil9KSl9O3RoaXMucmVzZXQ9ZnVuY3Rpb24oYyl7Yi5zZXQoKX07dGhpcy5yZWRpcmVjdD1mdW5jdGlvbihjKXsibGl2ZSI9PWIuZGVwbG95bWVudFR5cGUmJihnYVRyYWNrKCJfdHJhY2tFdmVudCIsIkNsaXF1ZXMiLCJJbWFnZS1kZS1mb25kIixiLmJnSW1nLDEpLCJmdW5jdGlvbiI9PXR5cGVvZiBiLmQyY0V2ZW50JiZiLmQyY0V2ZW50LmNhbGwoYiwKYi5iZ0ltZykpO3dpbmRvdy5vcGVuKGMpfTskKHdpbmRvdykub24oInJlc2l6ZSIsYi5yZXNldCk7cmV0dXJuIHRoaXN9O3ZhciBpbmplY3RHb29nbGVNYXBzS2V5PWZ1bmN0aW9uKGEpe2xldCBiPW51bGw7cmV0dXJuIGZ1bmN0aW9uKGMpe2lmKGIpcmV0dXJuIGMoYik7YS5hamF4KCIvYWpheC9nZXRHb29nbGVNYXBzS2V5IikuZG9uZShmdW5jdGlvbihkKXtiPShkLmtleT9kLmtleToiIikucmVwbGFjZSgvW15BLXowLTlfLV0vZywiIik7YyhiKX0pfX0oalF1ZXJ5KTsKZnVuY3Rpb24gcmhzUHJvbW9JbWFnZShhKXt2YXIgYj10aGlzO2IuZGF0YT1hO3ZhciBjPVtdLGQ9LTE7YT13aW5kb3cubG9jYXRpb247YT1kZWNvZGVVUklDb21wb25lbnQoYS5wYXRobmFtZSthLnNlYXJjaCkudG9Mb3dlckNhc2UoKTtmb3Ioc2VhcmNoIGluIGIuZGF0YSlpZigiZGVmYXVsdCI9PXNlYXJjaHx8LTEhPWEuaW5kZXhPZihkZWNvZGVVUklDb21wb25lbnQoKHNlYXJjaCsiIikudG9Mb3dlckNhc2UoKSkpKWZvcihpPTA7aTxiLmRhdGFbc2VhcmNoXS5sZW5ndGg7aSsrKWMucHVzaChiLmRhdGFbc2VhcmNoXVtpXSk7Yi5yb3RhdGU9ZnVuY3Rpb24oKXsrK2Q+Yy5sZW5ndGgtMSYmKGQ9MCk7dmFyIGU9Y1tkXSxrPSQoIjxpbWcgLz4iKS5hdHRyKHtzcmM6ZS5pLHN0eWxlOiJ3aWR0aDoxMDAlOyBtYXgtd2lkdGg6MjgwcHg7IGJvcmRlci1yYWRpdXM6IDVweDsgY3Vyc29yOnBvaW50ZXI7IixhbHQ6IiJ9KTskKCJkaXYjcmlnaHRQcm9tb0ltYWdlIikuaHRtbChrKTtudWxsIT0KZS51JiYwPGUudS5sZW5ndGgmJiQoImRpdiNyaWdodFByb21vSW1hZ2UiKS5hdHRyKCJvbmNsaWNrIiwid2luZG93LmxvY2F0aW9uID0gJyIrZS51KyInIik7JCgiZGl2I3JpZ2h0UHJvbW9JbWFnZSIpLnNob3coKTsxIT1jLmxlbmd0aCYmc2V0VGltZW91dChiLnJvdGF0ZSxlLmRlbGF5KX07MDxjLmxlbmd0aCYmYi5yb3RhdGUoKX1mdW5jdGlvbiBjbGVhblRleHQoYSl7YT1hLnJlcGxhY2UoL1tceDYwXS9nLCInIik7YT1hLnJlcGxhY2UoL+KAmS9nLCInIik7YT1hLnJlcGxhY2UoL2AvZywiJyIpO3JldHVybiBhPWEucmVwbGFjZSgvW1x1MjAxOV3igJkvZywiJyIpfQpmdW5jdGlvbiBlbmNvZGVUZXh0KGEpe3ZhciBiPWE7dHJ5e2I9JC5iYXNlNjQuZW5jb2RlKGEpfWNhdGNoKGspe2NvbnNvbGUubG9nKGsubWVzc2FnZSxrKTthPSIiO2Zvcih2YXIgYz0wO2M8Yi5sZW5ndGg7YysrKXt2YXIgZD1iLmNoYXJBdChjKSxlPWQuY2hhckNvZGVBdCgwKTtpZig0NzxlJiY1OD5lfHw2NDxlJiY5MT5lfHw5NjxlJiYxMjM+ZSlhKz1kO2Vsc2UgdHJ5eyQuYmFzZTY0LmVuY29kZShkKSxhKz1kfWNhdGNoKGgpe319Yj0kLmJhc2U2NC5lbmNvZGUoYSl9cmV0dXJuIGJ9ZnVuY3Rpb24gY2xlYW5BbmRFbmNvZGVUZXh0KGEpe3RyeXt2YXIgYj0iIjtpZigidW5kZWZpbmVkIj09dHlwZW9mIGEpcmV0dXJuIiI7Yj0ic3RyaW5nIiE9dHlwZW9mIGE\/YS50b1N0cmluZygpOmE7Yj1jbGVhblRleHQoYik7cmV0dXJuIGI9ZW5jb2RlVGV4dChiKX1jYXRjaChjKXtyZXR1cm4gY29uc29sZS5sb2coYy5tZXNzYWdlLGMpLGF9fQpmdW5jdGlvbiBFeFBob25lKGEpe3N3aXRjaChhLnR5cGUpe2Nhc2UgIm1vdXNlZW50ZXIiOiQoIi5leHRlbmRlZFBob25lIikuc2hvdygpO2JyZWFrO2Nhc2UgIm1vdXNlbGVhdmUiOiQoIi5leHRlbmRlZFBob25lIikuaGlkZSgpfX1mdW5jdGlvbiBnZXRSZXNpemVkSW1hZ2VzKCl7ZGVidWdFbmFibGVkKCk7cmV0dXJuITF9ZnVuY3Rpb24gY2hhbmdlSG9tZUFjdGlvbkJhY2tJbWFnZShhLGIpeyQoYSkuY3NzKHtiYWNrZ3JvdW5kOiJ1cmwoIitiKyIpIixiYWNrZ3JvdW5kUmVwZWF0OiJuby1yZXBlYXQiLGJhY2tncm91bmRTaXplOiIyNDBweCAxMjFweCJ9KX12YXIgX19jdXJyZW50VGhyZWFzaG9sZDsKZnVuY3Rpb24gdGhyZWFkaG9sZFNjcm9sbFBlcmNlbnQoKXtfX2N1cnJlbnRUaHJlYXNob2xkfHwoX19jdXJyZW50VGhyZWFzaG9sZD0oJCh3aW5kb3cpLmhlaWdodCgpKyQoZG9jdW1lbnQpLnNjcm9sbFRvcCgpKS8kKGRvY3VtZW50KS5oZWlnaHQoKSxzZXRUaW1lb3V0KCJfX2N1cnJlbnRUaHJlYXNob2xkID0gbnVsbCIsMzMzKSk7cmV0dXJuIF9fY3VycmVudFRocmVhc2hvbGR9CmZ1bmN0aW9uIHRocmVzaG9sZEV4ZWMoYSxiLGMpe3ZhciBkPW51bGw7Yz1jP2M6W107aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGEpe3ZhciBlPU1hdGgucm91bmQoMUU0KmEpLzFFNDsxPGUmJihlLz0xMDApO2E9ZnVuY3Rpb24oKXtyZXR1cm4gZX19dmFyIGs9ZnVuY3Rpb24oKXtpZih0aHJlYWRob2xkU2Nyb2xsUGVyY2VudCgpPmEoKSl7dHJ5e2IuYXBwbHkobnVsbCxjKX1jYXRjaChoKXtjb25zb2xlLmxvZyhoKX1kPWNsZWFySW50ZXJ2YWwoZCl9fTskKGZ1bmN0aW9uKCl7c2V0VGltZW91dChmdW5jdGlvbigpe2Q9c2V0SW50ZXJ2YWwoaywzMzMpfSwyRTMpfSl9CmZ1bmN0aW9uIHNjcm9sbHVwRXhlYyhhKXt2YXIgYj1udWxsLGM9MCxkPWZ1bmN0aW9uKCl7JCh3aW5kb3cpLm9uKCJzY3JvbGwiLGZ1bmN0aW9uKGUpe2U9JCh0aGlzKS5zY3JvbGxUb3AoKTtlPGMmJihhLmNhbGwobnVsbCksYj1jbGVhckludGVydmFsKGIpKTtjPWV9KX07JChmdW5jdGlvbigpe2I9c2V0SW50ZXJ2YWwoZCwzMzMpfSl9ZnVuY3Rpb24gaW5WaWV3RXhlYyhhLGIpe3RocmVzaG9sZEV4ZWMoZnVuY3Rpb24oKXt2YXIgYz0kKGEpO3RyeXtyZXR1cm4hYy5sZW5ndGh8fGMuaXMoIjpoaWRkZW4iKXx8MD09Yy5vZmZzZXQoKS50b3A\/Ljk1OmMub2Zmc2V0KCkudG9wLyQoZG9jdW1lbnQpLmhlaWdodCgpfWNhdGNoKGQpe3JldHVybi45NX19LGIsW2FdKX12YXIgbHRfSUU5PSJmdW5jdGlvbiIhPXR5cGVvZiBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyPyEwOiExLGx0X0lFMTE9MD09IWRvY3VtZW50LmFsbDsKZnVuY3Rpb24gaXNJRSgpe3ZhciBhPWRvY3VtZW50LmRvY3VtZW50TW9kZTt0cnl7ZG9jdW1lbnQuZG9jdW1lbnRNb2RlPSIifWNhdGNoKGMpe312YXIgYj0ibnVtYmVyIj09dHlwZW9mIGRvY3VtZW50LmRvY3VtZW50TW9kZXx8KG5ldyBGdW5jdGlvbigicmV0dXJuLypAY2Nfb24hQCovITEiKSkoKTt0cnl7ZG9jdW1lbnQuZG9jdW1lbnRNb2RlPWF9Y2F0Y2goYyl7fXJldHVybiBifXZhciB0PTA7X19zdGFydD1mdW5jdGlvbigpe3Q9KG5ldyBEYXRlKS5nZXRUaW1lKCl9O19fc3RvcD1mdW5jdGlvbigpe3ZhciBhPShuZXcgRGF0ZSkuZ2V0VGltZSgpO2NvbnNvbGUubG9nKCJ0b29rIiwoYS10KS8xRTMpfTt2YXIgYWxlcnRGYWxsYmFjaz0hMDtpZigidW5kZWZpbmVkIj09PXR5cGVvZiBjb25zb2xlfHwidW5kZWZpbmVkIj09PXR5cGVvZiBjb25zb2xlLmxvZyljb25zb2xlPXt9LGNvbnNvbGUubG9nPWFsZXJ0RmFsbGJhY2s\/ZnVuY3Rpb24oYSl7fTpmdW5jdGlvbigpe307CkFycmF5LnByb3RvdHlwZS5tYXB8fChBcnJheS5wcm90b3R5cGUubWFwPWZ1bmN0aW9uKGEsYil7dmFyIGMsZDtpZihudWxsPT10aGlzKXRocm93IG5ldyBUeXBlRXJyb3IoIiB0aGlzIGlzIG51bGwgb3Igbm90IGRlZmluZWQiKTt2YXIgZT1PYmplY3QodGhpcyksaz1lLmxlbmd0aD4+PjA7aWYoImZ1bmN0aW9uIiE9PXR5cGVvZiBhKXRocm93IG5ldyBUeXBlRXJyb3IoYSsiIGlzIG5vdCBhIGZ1bmN0aW9uIik7MTxhcmd1bWVudHMubGVuZ3RoJiYoYz1iKTt2YXIgaD1BcnJheShrKTtmb3IoZD0wO2Q8azspe2lmKGQgaW4gZSl7dmFyIG49ZVtkXTtuPWEuY2FsbChjLG4sZCxlKTtoW2RdPW59ZCsrfXJldHVybiBofSk7QXJyYXkucHJvdG90eXBlLmluZGV4T2Z8fChBcnJheS5wcm90b3R5cGUuaW5kZXhPZj1mdW5jdGlvbihhLGIpe2I9Ynx8MDtmb3IodmFyIGM9dGhpcy5sZW5ndGg7YjxjO2IrKylpZih0aGlzW2JdPT09YSlyZXR1cm4gYjtyZXR1cm4tMX0pOwpBcnJheS5wcm90b3R5cGUucmVkdWNlfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoQXJyYXkucHJvdG90eXBlLCJyZWR1Y2UiLHt2YWx1ZTpmdW5jdGlvbihhKXtpZihudWxsPT09dGhpcyl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUucmVkdWNlIGNhbGxlZCBvbiBudWxsIG9yIHVuZGVmaW5lZCIpO2lmKCJmdW5jdGlvbiIhPT10eXBlb2YgYSl0aHJvdyBuZXcgVHlwZUVycm9yKGErIiBpcyBub3QgYSBmdW5jdGlvbiIpO3ZhciBiPU9iamVjdCh0aGlzKSxjPWIubGVuZ3RoPj4+MCxkPTA7aWYoMjw9YXJndW1lbnRzLmxlbmd0aCl2YXIgZT1hcmd1bWVudHNbMV07ZWxzZXtmb3IoO2Q8YyYmIShkIGluIGIpOylkKys7aWYoZD49Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJSZWR1Y2Ugb2YgZW1wdHkgYXJyYXkgd2l0aCBubyBpbml0aWFsIHZhbHVlIik7ZT1iW2QrK119Zm9yKDtkPGM7KWQgaW4gYiYmKGU9YShlLGJbZF0sZCxiKSksZCsrO3JldHVybiBlfX0pOwpBcnJheS5wcm90b3R5cGUuZm9yRWFjaHx8KEFycmF5LnByb3RvdHlwZS5mb3JFYWNoPWZ1bmN0aW9uKGEpe3ZhciBiLGM7aWYobnVsbD09dGhpcyl0aHJvdyBuZXcgVHlwZUVycm9yKCJ0aGlzIGlzIG51bGwgb3Igbm90IGRlZmluZWQiKTt2YXIgZD1PYmplY3QodGhpcyksZT1kLmxlbmd0aD4+PjA7aWYoImZ1bmN0aW9uIiE9PXR5cGVvZiBhKXRocm93IG5ldyBUeXBlRXJyb3IoYSsiIGlzIG5vdCBhIGZ1bmN0aW9uIik7MTxhcmd1bWVudHMubGVuZ3RoJiYoYj1hcmd1bWVudHNbMV0pO2ZvcihjPTA7YzxlOyl7aWYoYyBpbiBkKXt2YXIgaz1kW2NdO2EuY2FsbChiLGssYyxkKX1jKyt9fSk7ZnVuY3Rpb24gZ2V0RGF0YUF0dHJpYnV0ZXMoYSl7cmV0dXJuIGEuZGF0YXNldHx8W10uc2xpY2UuY2FsbChhLmF0dHJpYnV0ZXMpLnJlZHVjZShmdW5jdGlvbihiLGMpe3JldHVybi9eZGF0YS0vLnRlc3QoYy5uYW1lKSYmKGJbYy5uYW1lLnN1YnN0cig1KV09Yy52YWx1ZSksYn0se30pfQpmdW5jdGlvbiBnZXRQYXJhbWV0ZXJCeU5hbWUoYSl7YT1hLnJlcGxhY2UoL1tcW10vLCJcXFsiKS5yZXBsYWNlKC9bXF1dLywiXFxdIik7YT0obmV3IFJlZ0V4cCgiW1xcPyZdIithKyI9KFteJiNdKikiKSkuZXhlYyhsb2NhdGlvbi5zZWFyY2gpO3JldHVybiBudWxsPT1hPyIiOmRlY29kZVVSSUNvbXBvbmVudChhWzFdLnJlcGxhY2UoL1wrL2csIiAiKSl9CmZ1bmN0aW9uIHNob3dUcmFkZUluUG9wdXAoYSl7aWYoMD09JCgiI3RyYWRlaW5MaW5rUG9wdXBDb250YWluZXIiKS5sZW5ndGgpe3ZhciBiPSI3NTBweCIsYz0iNTcwcHgiOzE9PS9Nb2JpLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpJiYoYj0iMzAwcHgiLGM9IjYwMHB4Iik7JCgiYm9keSIpLmFwcGVuZCgnPGRpdiBpZD0idHJhZGVpbkxpbmtQb3B1cENvbnRhaW5lciIgc3R5bGU9IndpZHRoOiAnK2IrIjsgaGVpZ2h0OiAiK2MrJyI+PGRpdiBjbGFzcz0iY2xvc2UtcmV2ZWFsLW1vZGFsIj4mIzIxNTs8L2Rpdj48aWZyYW1lIHNyYz0iJythKyciIGFsbG93dHJhbnNwYXJlbmN5PSJ0cnVlIiAgY2xhc3M9Ii10MCAtbDAgLXcxMDBwIC1oMTAwcCIgaWQ9InRyYWRlaW5MaW5rUG9wdXBJZnJhbWUiPjwvaWZyYW1lPjwvZGl2PicpfSQoIiN0cmFkZWluTGlua1BvcHVwQ29udGFpbmVyIikucG9wdXBpemUoKS5zZXRUcmlnZ2VyKCJjbGljayIpLm9wZW4oKX0KZnVuY3Rpb24gY3VycmVudFByb21vUmVkaXJlY3QoKXtldmVudC5wcmV2ZW50RGVmYXVsdCgpO3N3aXRjaCghMCl7Y2FzZSAiZnVuY3Rpb24iPT10eXBlb2Ygc2hvd1BvcHVwV2lkZ2V0OnNob3dQb3B1cFdpZGdldCgpO2JyZWFrO2Nhc2UgInVuZGVmaW5lZCIhPXR5cGVvZiAkKCIjVmlld1Byb21vQWN0aW9uQm94TGluayIpLmF0dHIoImhyZWYiKTokKCIjVmlld1Byb21vQWN0aW9uQm94TGluayIpWzBdLmNsaWNrKCk7YnJlYWs7Y2FzZSAidW5kZWZpbmVkIiE9dHlwZW9mICQoIiNwcm9tb3Rpb25TaWRlVkJ1dHRvbiBhIikuYXR0cigiaHJlZiIpOiQoIiNwcm9tb3Rpb25TaWRlVkJ1dHRvbiBhIilbMF0uY2xpY2soKTticmVhaztjYXNlICJ1bmRlZmluZWQiIT10eXBlb2YgJCgiI1ZpZXdDdXN0b21Qcm9tb0FjdGlvbkJveExpbmsiKS5hdHRyKCJocmVmIik6JCgiI1ZpZXdDdXN0b21Qcm9tb0FjdGlvbkJveExpbmsiKVswXS5jbGljaygpfX0KZnVuY3Rpb24gc2hvd05ld1JlYmF0ZUNvZGVQb3B1cCgpezAhPSQoIiNkaXNhYmxlUG9wdXBzIikubGVuZ3RoJiYwIT0kKCIjZGlzYWJsZVBvcHVwcyIpLnZhbCgpfHwkKCIjSW1hZ2VQb3B1cENvbnRhaW5lcl9uZXdyZWJhdGUiKS5wb3B1cGl6ZSgpLnNldFRyaWdnZXIoImNsaWNrIikub3BlbigpfWZ1bmN0aW9uIHNob3dOZXdCZXN0UHJpY2VWZHBQb3B1cCgpezAhPSQoIiNkaXNhYmxlUG9wdXBzIikubGVuZ3RoJiYwIT0kKCIjZGlzYWJsZVBvcHVwcyIpLnZhbCgpfHwkKCIjYmVzdFByaWNlVmRwTmV3UG9wdXBDb250YWluZXIiKS5wb3B1cGl6ZSgpLnNldFRyaWdnZXIoImNsaWNrIikub3BlbigpfQpmdW5jdGlvbiBwcmludF9wcm9tb19wcmV2KGEpe3ZhciBiPSExLGM9JChhKS5wYXJlbnRzKCIucHJvbW9zIik7YT1jLmZpbmQoIi5wcm9tby10aXRsZSIpLmh0bWwoKTt2YXIgZD1jLmZpbmQoIi5wcm9tby1kZXNjIikuaHRtbCgpO2M9Yy5maW5kKCIucHJvbW8taW1hZ2UgaW1nIikuYXR0cigiZGF0YS1wcmludC1zcmMiKTskKCIjcHJvbW9Ub1ByaW50IikucmVtb3ZlKCk7JCgiI3Byb21vVG9QcmludFdyYXAiKS5yZW1vdmUoKTskKCJib2R5IikuYXBwZW5kKCc8ZGl2IGNsYXNzPSJ0b3ByaW50IiBpZD0icHJvbW9Ub1ByaW50Ij48aW1nIGJvcmRlcj0iMCIgc3R5bGU9IndpZHRoOjEwMCU7IiBzcmM9IicrYysnIiBhbHQ9IiIgaWQ9InByb21vSW1nIj48YnI+PGJyPjxiPicrYSsiPC9iPjxicj4iK2QrIjwvZGl2PiIpOyQoIiNwcm9tb0ltZyIpLm9uKCJsb2FkIixmdW5jdGlvbigpe2J8fCQoIiNwcm9tb1RvUHJpbnQiKS5wcmludEVsZW1lbnQoKTtiPSEwfSk7c2V0VGltZW91dChmdW5jdGlvbigpe2J8fAokKCIjcHJvbW9Ub1ByaW50IikucHJpbnRFbGVtZW50KCk7Yj0hMH0sMUUzKTtyZXR1cm4hMX1mdW5jdGlvbiBnZXRNdWx0aXBsZUFkZHJlc3NQaG9uZShhKXskKCIubXVsdGlBZGRyZXNzUGhvbmUiKS5zbGlkZVVwKCk7YT0kKCIubXVsdGlBZGRyZXNzUGhvbmUiLCQoJChhKS5wYXJlbnQoKSkpOyQoYSkuaXMoIjpoaWRkZW4iKT8kKGEpLnNsaWRlRG93bigpOiQoYSkuc2xpZGVVcCgpfQpmdW5jdGlvbiBhZGRHZW5lcmFsU3R5bGUoKXt2YXIgYT0kKCIjQURNSU5fR0VORVJBTF9CR19DT0xPUiIpLnZhbCgpLGI9JCgiI2RlZmF1bHRfYmxhY2tfdGV4dCIpLnZhbCgpO2lmKCIjMDAwMDAwIiE9Ynx8IiMwMDAiIT1iKSQoIi5Vc2VkVmRwMk1vYmlsZSAjYnJlYWRjcnVtYnMiKS5hZGRDbGFzcygidGV4dENvbG9yIiksJCgiaS5mYS1mYWNlYm9vay1zcXVhcmUiKS5hZGRDbGFzcygidGV4dENvbG9yIiksJCgiLnVzZWQtZGV0YWlscyAuZGVmYXVsdCBkaXY6Zmlyc3QiKS5hZGRDbGFzcygidGV4dENvbG9yIik7IiNmZmZmZmYiIT1iJiYiI2ZmZiIhPWJ8fCQoIi5Vc2VkU3JwMk1vYmlsZSAuZGVmYXVsdCAubWFrZU1vZGVsWWVhciIpLmFkZENsYXNzKCJ0ZXh0Q29sb3JVc2VkU1JQTW9iaWxlIik7IiNmZmZmZmYiIT1hJiYoJCgiLm9sZC1kZXRhaWxzLXRyIikuYWRkQ2xhc3MoImJnTm9uZSIpLCQoIiNzcGVjVGl0bGUiKS5hZGRDbGFzcygiYmdOb25lIiksJCgiLlVzZWRWZHAyTW9iaWxlIikuYWRkQ2xhc3MoIm90aGVyQkciKSl9CmZ1bmN0aW9uIGFwcGVuZFRyYWRlQm9vc3RCYW5uZXIoKXt9ZG9jUmVhZHlBcnIucHVzaCgoKT0+e2FwcGVuZFRyYWRlQm9vc3RCYW5uZXIoKTthZGRHZW5lcmFsU3R5bGUoKX0pOwpqUXVlcnkoZnVuY3Rpb24oYSl7YSgiI25hdiIpLmFkZENsYXNzKCJuYXYiKTsoZnVuY3Rpb24oKXtMQ19BUEk9d2luZG93LkxDX0FQSXx8e307TENfQVBJLm9uX3RpY2tldF9jcmVhdGVkPWZ1bmN0aW9uKG0pe3RyeXsoZnVuY3Rpb24obCl7bnVsbCE9bCYmKGw9JzxpbWcgc3JjPSJodHRwczovL3N0YXRzLmQyY21lZGlhLmNhL3NlcnZpY2UvY29udGFjdC5naWY\/dGM9JysobS50aWNrZXRfaWQrIiZ1PSIrbCkrJyIgc3R5bGU9IndpZHRoOjFweDtoZWlnaHQ6MXB4O3JpZ2h0OjEwcHg7dG9wOjEwcHg7cG9zaXRpb246YWJzb2x1dGU7IiAvPicsYSgiYm9keSIpLmFwcGVuZChsKSl9KShmdW5jdGlvbigpe3ZhciBsPSJ1bmRlZmluZWQiIT09dHlwZW9mIHdpbmRvdy5hY3RpdmVQcm9maWxlSUQ\/d2luZG93LmFjdGl2ZVByb2ZpbGVJRDpudWxsO3JldHVybiBudWxsPT1sP0Nvb2tpZXMuZ2V0KCJ1dWlkIik6bH0oKSl9Y2F0Y2gobCl7fX19KSgpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBvbkNvbmZpcm1TdWJtaXQpYSgiLmNvbmZpcm1faHRtbCIpLm9uKCJzdWJtaXQiLApvbkNvbmZpcm1TdWJtaXQpO3RyeXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGEoIiNzbGlkZXIubml2b1NsaWRlciIpLmF0dHIoImlkIikpe3ZhciBiPSExLGM9ITEsZD0hMSxlPSExLGs9ITEsaD0hMSxuPTEwMCx4PTE8YSgiI3NsaWRlci5uaXZvU2xpZGVyIGEiKS5sZW5ndGg\/ITA6ITE7YSgiI2Jhbm5lcl9zZWFyY2hfYmFyX2NvbnRhaW5lciIpLmxlbmd0aCYmKGg9az1lPWQ9Yz1iPSEwLG49YSgiI0JBTk5FUl9TRUFSQ0hfQkFSX1ZJREVPX09QQUNJVFkiKS5sZW5ndGg\/YSgiI0JBTk5FUl9TRUFSQ0hfQkFSX1ZJREVPX09QQUNJVFkiKS52YWwoKToxMDApO2RvY1JlYWR5QXJyLnB1c2goKCk9PntzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YSgiI3NsaWRlci5uaXZvU2xpZGVyIikubml2b1NsaWRlcih7ZWZmZWN0OiJmYWRlIixiZWZvcmVDaGFuZ2U6ZnVuY3Rpb24oKXthKCIjcGFyYWxsYXhXcmFwcGVyIikuZW5sbGF4KCl9LGFmdGVyQ2hhbmdlOmZ1bmN0aW9uKCl7YSgiI3NsaWRlci5uaXZvU2xpZGVyIikudHJpZ2dlcigibml2b1NsaWRlckNoYW5nZWQiKX0sCmFmdGVyTG9hZDpmdW5jdGlvbigpe2EoIiNzbGlkZXIubml2b1NsaWRlciIpLnRyaWdnZXIoIm5pdm9TbGlkZXJMb2FkZWQiKTthKCIjcGFyYWxsYXhXcmFwcGVyIikuZW5sbGF4KCk7YSgiI2Jhbm5lcl9zZWFyY2hfYmFyX2NvbnRhaW5lciIpLmxlbmd0aCYmKGEoIiNzbGlkZXIubml2b1NsaWRlciIpLmRhdGEoIm5pdm86dmFycyIpLnN0b3AsYSgiLm5pdm8tY29udHJvbE5hdiIpLmhpZGUoKSxhKCIubml2by1kaXJlY3Rpb25OYXYiKS5oaWRlKCksdGhpcy5zdGFydFlvdXR1YmUoKSl9LG1hbnVhbEFkdmFuY2U6Yix2aWRlb09uTG9vcDpjLGhpZGVDb250cm9sOmQsaGlkZUluZm86ZSxmdWxsV2lkdGg6ayxtdXRlVmlkZW86aCx2aWRlb0JyaWdodG5lc3M6bixjb250cm9sTmF2OngsZGlyZWN0aW9uTmF2Ongsc2hvd0Rpc2NsYWltZXI6ITB9KX0sNUUzKX0pfWlmKCJ1bmRlZmluZWQiIT10eXBlb2YgYSgiLmV4dGVuZGVkUGhvbmVUcmlnZ2VyIikuYXR0cigiaWQiKSlhKCIuZXh0ZW5kZWRQaG9uZVRyaWdnZXIiKS5vbigibW91c2VlbnRlciIsCkV4UGhvbmUpLm9uKCJtb3VzZWxlYXZlIixFeFBob25lKTt2YXIgdj1mdW5jdGlvbigpe307YSgiLnRyYWRlaW5MaW5rIikub24oImNsaWNrIixmdW5jdGlvbigpe2lmKGEodGhpcykuYXR0cigidGFyZ2V0VVJJIikmJjY8YSh0aGlzKS5hdHRyKCJ0YXJnZXRVUkkiKS5sZW5ndGgpcmV0dXJuIHNob3dUcmFkZUluUG9wdXAoYSh0aGlzKS5hdHRyKCJ0YXJnZXRVUkkiKSksITF9KTthKCIudXBfbWVudSIpLm9uZSgibW91c2VvdmVyIix2KTtzZXRUaW1lb3V0KHYsMUU0KTsoZnVuY3Rpb24oKXtpZigwIT1hKCIjTWFpbk1lbnVfTkVXIikubGVuZ3RoKXt2YXIgcT1hKCIuaW1nX21lbnUudXBfbWVudSB1bC5uYXYgPiBsaSNNYWluTWVudV9ORVcgPiB1bC5zdWIgPiBsaS5maXJzdEl0ZW0iKSxyPSExOzAhPXEubGVuZ3RoJiYoYSgiI01haW5NZW51X05FVyIpLmZpbmQoIi5wcmljZSIpLmNzcygiY3Vyc29yIiwicG9pbnRlciIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXt2YXIgcD1hKHRoaXMpLnNpYmxpbmdzKCkuZmlyc3QoKTsKd2luZG93LmxvY2F0aW9uPXAuYXR0cigiaHJlZiIpfSksYSgiI01haW5NZW51X05FVyIpLm9uKCJtb3VzZWVudGVyIixmdW5jdGlvbigpe2NsZWFyVGltZW91dChyKTtxLmFkZENsYXNzKCJob3ZlciIpfSkscS5zaWJsaW5ncygpLm9uKCJtb3VzZWVudGVyIixmdW5jdGlvbigpe2NsZWFyVGltZW91dChyKTtxLnJlbW92ZUNsYXNzKCJob3ZlciIpfSkub24oIm1vdXNlbGVhdmUiLGZ1bmN0aW9uKCl7cj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cS5hZGRDbGFzcygiaG92ZXIiKX0sMzAwKX0pKX19KSgpO2EoImltZ1tlcnJvcmltZ10iKS5vbigiZXJyb3IiLGZ1bmN0aW9uKCl7dmFyIHE9YSh0aGlzKTtxLmF0dHIoInNyYyIscS5hdHRyKCJlcnJvcmltZyIpKX0pO2NvbnN0IG09YSh3aW5kb3cpLGw9YSgiLnVwX21lbnUiKTtpZihsLmxlbmd0aCYmIWwuaGFzQ2xhc3MoIm5vbG9jayIpKXtsZXQgcT1sLm9mZnNldCgpLnRvcCxyPSExO2EoZG9jdW1lbnQpLm9uKCJzY3JvbGwiLCgpPT57cnx8Cih3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57dmFyIHA9bS5zY3JvbGxUb3AoKSx3PWwuaGFzQ2xhc3MoImZpeGVkIik7dyYmcDxxP2wucmVtb3ZlQ2xhc3MoImZpeGVkIik6IXcmJnA+cSYmbC5hZGRDbGFzcygiZml4ZWQiKTsocD1sLmhhc0NsYXNzKCJmaXhlZCIpKSYmYSgiI2FsZXJ0TXNnQ29udGFpbmVyIikuaXMoIjp2aXNpYmxlIik\/bC5jc3Moe3RvcDphKCIjYWxlcnRNc2dDb250YWluZXIiKS5vdXRlckhlaWdodCgpKyJweCJ9KTpsLmF0dHIoInN0eWxlIiwiIik7dz1hKCIucHVsbG91dHMuc2lkZV90b3A6dmlzaWJsZSIpO3AmJjA8dy5sZW5ndGg\/KHcuZmlsdGVyKCIucHVsbG91dC1vcGVuZWQiKS5jc3Moe3RvcDpsLmhlaWdodCgpKyJweCJ9KSx3LmZpbHRlcigiLnB1bGxvdXQtY2xvc2VkIikuZWFjaChmdW5jdGlvbigpe3ZhciB6PWEodGhpcyksRD1nZXRfcG93KHouYXR0cigiaWQiKSk7IXouZGF0YSgicG9zWSIpJiZ6LmRhdGEoInBvc1kiLC1ELnBvc2l0aW9uKTsKRD16LmRhdGEoInBvc1kiKStsLmhlaWdodCgpO3ouY3NzKHt0b3A6RCsicHgifSl9KSk6KHcuZmlsdGVyKCIucHVsbG91dC1vcGVuZWQiKS5jc3Moe3RvcDowfSksdy5maWx0ZXIoIi5wdWxsb3V0LWNsb3NlZCIpLmRhdGEoInBvc1kiKSYmdy5maWx0ZXIoIi5wdWxsb3V0LWNsb3NlZCIpLmVhY2goZnVuY3Rpb24oKXthKHRoaXMpLmNzcyh7dG9wOmEodGhpcykuZGF0YSgicG9zWSIpKyJweCJ9KX0pKTtyPSExfSkscj0hMCl9KX12PWZ1bmN0aW9uKCl7aWYoMD09YSgiI3RyYWRlaW5CYXJGbG9hdCIpLmxlbmd0aCl7YSgiYm9keSIpLmFwcGVuZCgnPGRpdiBpZD0idHJhZGVpbkJhckZsb2F0IiBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7cG9zaXRpb246IGZpeGVkO3dpZHRoOiAxMDAlO3otaW5kZXg6IDEwMDtkaXNwbGF5Om5vbmU7Ij48L2Rpdj4nKTthKCIjdHJhZGVJbkJhciIpLmNsb25lKCEwLCEwKS5hcHBlbmRUbygiI3RyYWRlaW5CYXJGbG9hdCIpLnRyaWdnZXIoInRyYWRlSW5CYXIuY2xvbmVkIik7CmlmKGEoIiN0cmFkZUluQmFyU3RpY2t5Qm90dG9tIikubGVuZ3RoJiYiMSI9PWEoIiN0cmFkZUluQmFyU3RpY2t5Qm90dG9tIikudmFsKCkpe2EoIiN0cmFkZWluQmFyRmxvYXQiKS5jc3MoImJvdHRvbSIsIi0ycHgiKTt2YXIgcT1hKCIuY2VydGlmaWVkLWZvb3RlciIpLmhlaWdodCgpLHI9YSgiI3RyYWRlaW5CYXJGbG9hdCIpLmhlaWdodCgpO2EoIi5jZXJ0aWZpZWQtZm9vdGVyIikuaGVpZ2h0KHErcil9ZWxzZXtxPWEoIiN0cmFkZWluQmFyRmxvYXQiKTtyPXEuY3NzO3ZhciBwPSIxIj09YSgiI21lbnVMb2NrIikudmFsKCk\/NDg6MDswPGEoIiNhbGVydE1zZ0NvbnRhaW5lciIpLmxlbmd0aCYmYSgiI2FsZXJ0TXNnQ29udGFpbmVyIikuaXMoIjp2aXNpYmxlIikmJihwKz1hKCIjYWxlcnRNc2dDb250YWluZXIiKS5vdXRlckhlaWdodCgpKTtyLmNhbGwocSwidG9wIixwKX1hKCIjdHJhZGVpbkJhckZsb2F0IC4tcGIxMCIpLmNzcyh7ZGlzcGxheToiaW5saW5lLXRhYmxlIix3aWR0aDphKCIjbWFpbkRpdiIpLndpZHRoKCl9KX1xPQoibmV3Y2FyZGV0YWlsLmh0bWwiPT1hKCIjUEFHRUlEIikudmFsKCl8fCJjYXJkZXRhaWwuaHRtbCI9PWEoIiNQQUdFSUQiKS52YWwoKTtyPSJuZXdjYXJkZXRhaWwuaHRtbCI9PWEoIiNQQUdFSUQiKS52YWwoKT8hMDohMTtwPTA8YSgiLm1haW5EaXZBZGp1c3RIZWFkZXIiKS5sZW5ndGg\/ITA6ITE7YSgiI3RyYWRlSW5CYXIiKS5pc0luVmlld3BvcnQoKXx8cT9xPyhyP2EoIi5uZXdWZHBBY3Rpb25zIikuaXNBYm92ZVZpZXdwb3J0KDIwMCk6YSgiLnVzZWRWZHBBY3Rpb25zIikuaXNBYm92ZVZpZXdwb3J0KDIwMCkpP2EoIiN0cmFkZWluQmFyRmxvYXQiKS5oaWRlKCk6YSgiI3RyYWRlaW5CYXJGbG9hdCIpLnNob3coKTphKCIjdHJhZGVpbkJhckZsb2F0IikuaGlkZSgpOihwJiYhYSgiI3RyYWRlSW5CYXIiKS5pc0Fib3ZlVmlld3BvcnQoMjAwKXx8IXApJiZhKCIjdHJhZGVpbkJhckZsb2F0Iikuc2hvdygpOzA8YSgiI2FsZXJ0TXNnQ29udGFpbmVyIikubGVuZ3RoJiZhKCIjYWxlcnRNc2dDb250YWluZXIiKS5pcygiOmhpZGRlbiIpJiYKNDghPWEoIiN0cmFkZWluQmFyRmxvYXQiKS5jc3MoInRvcCIpJiZhKCIjdHJhZGVJbkJhclN0aWNreUJvdHRvbSIpLmxlbmd0aCYmIjEiIT1hKCIjdHJhZGVJbkJhclN0aWNreUJvdHRvbSIpLnZhbCgpJiZhKCIjdHJhZGVpbkJhckZsb2F0IikuY3NzKCJ0b3AiLDQ4KX07ZnVuY3Rpb24gdShxLHIpe3ZhciBwPTA7cmV0dXJuIGZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KHApO3A9c2V0VGltZW91dChxLHIpfX1pZihhKCIjdHJhZGVJbkJhciIpLmxlbmd0aClhKGRvY3VtZW50KS5vbigic2Nyb2xsIix1KHYsMTAwKSk7dmFyIGY9YSgidWwubmF2ID4gbGkgPiB1bCA+IGxpID4gdWwiKTtmLmVhY2goZnVuY3Rpb24oKXthKHRoaXMpLnBhcmVudCgpLm9uKCJtb3VzZWVudGVyIixmdW5jdGlvbihxKXthKCJ1bCIsdGhpcykuc2Nyb2xsVG9wKDApfSl9KTtmLm9uKCJET01Nb3VzZVNjcm9sbCBtb3VzZXdoZWVsIixmdW5jdGlvbihxKXt2YXIgcj1hKHRoaXMpLHA9dGhpcy5zY3JvbGxUb3Asdz10aGlzLnNjcm9sbEhlaWdodCwKej13PnRoaXMuY2xpZW50SGVpZ2h0LEQ9ci5oZWlnaHQoKSxDPXEub3JpZ2luYWxFdmVudDtDPSJET01Nb3VzZVNjcm9sbCI9PXEudHlwZT8tNDAqQy5kZXRhaWw6Qy53aGVlbERlbHRhO3ZhciBFPTA8QztpZigheilyZXR1cm4hMDt6PWZ1bmN0aW9uKEcpe3Iuc2Nyb2xsVG9wKEcpO3Euc3RvcFByb3BhZ2F0aW9uKCk7cS5wcmV2ZW50RGVmYXVsdCgpO3EucmV0dXJuVmFsdWU9ITE7cmV0dXJuITB9O3JldHVybiEoIUUmJi1DPnctRC1wJiZ6KHcpfHxFJiZDPnAmJnooMCkpfSl9Y2F0Y2gobSl7Y29uc29sZS5sb2coIkVycm9yIixtKX1pZihhKCIudXBfbWVudS5pbWdfbWVudSIpLmxlbmd0aCl7Zj1hKCIuaW1nX3N0eWxlXzEgI01haW5NZW51X05FVyIpLmNoaWxkcmVuKCIuc3ViIik7dmFyIGc9Zi5maW5kKCIuZmlyc3RJdGVtIikuZmluZCgiLnN1YiIpO2YuY2hpbGRyZW4oImxpIikub24oe21vdXNlZW50ZXI6ZnVuY3Rpb24oKXshYSh0aGlzKS5pcygiLmhhc1N1YiIpJiZnLmhpZGUoKX0sCm1vdXNlbGVhdmU6ZnVuY3Rpb24oKXshYSh0aGlzKS5pcygiLmhhc1N1YiIpJiZnLnNob3coKX19KX1hKCIubnVtZXJpYyIpLm9uKCJrZXlwcmVzcyIsZnVuY3Rpb24obSl7aWYoNDg+bS5rZXlDb2RlfHw1NzxtLmtleUNvZGUpbS5yZXR1cm5WYWx1ZT0hMX0pO2lmKCJvbnRvdWNoc3RhcnQiaW4gd2luZG93fHx3aW5kb3cuRG9jdW1lbnRUb3VjaCYmZG9jdW1lbnQgaW5zdGFuY2VvZiBEb2N1bWVudFRvdWNoKWEoIi5sZWZ0X2JveCBhIikub24oInRhcCIsZnVuY3Rpb24obSl7bT1hKHRoaXMpO2lmKCJyYWRpbyIhPW0uYXR0cigidHlwZSIpJiZtLmF0dHIoIm9uY2xpY2siKSlyZXR1cm4gbS50cmlnZ2VyKCJjbGljayIpLCExfSksYSgiLmhhc0l0ZW1zID4gYSwgLmhhc1N1YiA+IGEiKS5vbigiY2xpY2siLGZ1bmN0aW9uKG0pe2lmKCJjbGljayIhPW0udHlwZSlyZXR1cm4hMDt2YXIgbD1hKHRoaXMpLmRhdGEoImNsaWNrQ291bnQiKTtpZigidW5kZWZpbmVkIj09dHlwZW9mIGx8fCIwIj09CmwpYSgiLm5hdiBsaS5oYXNJdGVtcyBhLCAubmF2IGxpLmhhc1N1YiBhIikuZGF0YSgiY2xpY2tDb3VudCIsIjAiKSxhKHRoaXMpLmRhdGEoImNsaWNrQ291bnQiLCIxIiksbS5wcmV2ZW50RGVmYXVsdCgpO2Vsc2UgcmV0dXJuIGRvY3VtZW50LmxvY2F0aW9uPWEodGhpcykuYXR0cigiaHJlZiIpLGEodGhpcykuZGF0YSgiY2xpY2tDb3VudCIsIjAiKSwhMH0pO2EoImRpdi5nbWFwLXBsYWNlaG9sZGVyIikuZWFjaChmdW5jdGlvbigpe3ZhciBtPWEodGhpcyksbD1tLmRhdGEoKTtpbmplY3RHb29nbGVNYXBzS2V5KGZ1bmN0aW9uKHUpe3U9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vbWFwcy9lbWJlZC92MS9wbGFjZT8iK1sicT0iK2VuY29kZVVSSUNvbXBvbmVudChsLnBsYWNlSWQpLCJ6b29tPSIrbC56b29tLCJsYW5ndWFnZT0iK2wubGFuZ3VhZ2UsInJlZ2lvbj1DQSIsImtleT0iK3VdLmpvaW4oIiYiKTttLmh0bWwoJzxpZnJhbWUgc3JjPSInK3UrJyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iNDAwIiBmcmFtZWJvcmRlcj0iMCIgc3R5bGU9ImJvcmRlcjowIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+Jyl9KX0pOwp0cnl7YSgiLmFkZHR0IikuZWFjaChmdW5jdGlvbigpe3ZhciBtPVsib25DbG9zZSIsIm9uWWVzIiwib25ObyJdLGw9YSh0aGlzKSx1PWwuZGF0YSgpLHE9e30scjtmb3IociBpbiB1KXFbcl09ZnVuY3Rpb24ocCx3KXtyZXR1cm4tMSE9bS5pbmRleE9mKHApP2Z1bmN0aW9uKCl7ZXZhbCh3KX06d30ocix1W3JdKTtsLmRhcmtUb29sdGlwKHEpfSl9Y2F0Y2gobSl7Y29uc29sZS5sb2cobS5tZXNzYWdlLG0pfX0pO2Z1bmN0aW9uIGNoaWxkT2YoYSxiKXtmb3IoOyJ1bmRlZmluZWQiIT09dHlwZW9mIGEmJm51bGwhPT1hJiYoYT1hLnBhcmVudE5vZGUpJiZhIT09YjspO3JldHVybiEhYX12YXIgTWVudUhhbmRsZXI7CihmdW5jdGlvbigpe3ZhciBhO01lbnVIYW5kbGVyPWZ1bmN0aW9uIGMoKXtmdW5jdGlvbiBkKGYsZyl7bGV0IG09KGcubW9kZWx8fCIiKS50cmltKCksbD0oZy50cmltfHwiIikudHJpbSgpO2Y9Zi5yZXBsYWNlKCIjI01FTlVZRUFSIyMiLGcueWVhcik7bSYmbCYmKG0udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhsLnRvTG93ZXJDYXNlKCkpP2w9IiI6bC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKG0udG9Mb3dlckNhc2UoKSkmJihtPSIiKSk7cmV0dXJuIGY9Zi5yZXBsYWNlKCIjI01FTlVNT0RFTCMjIixtKS5yZXBsYWNlKCIjI01FTlVUUklNIyMiLGwpLnJlcGxhY2UoLyArL2csIiAiKX1pZihhKXJldHVybiBhO2E9dGhpczt0aGlzLmdldFNwZWNVcmw9ZnVuY3Rpb24oKXt2YXIgZj0iRU5HTElTSCI9PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKXx8IjAiPT09JCgiI25ld190cmFuc2xhdGVkX3RpdGxlcyIpLnZhbCgpPyJlbiI6ImZyIjsiMCI9PSQoIiNtdWx0aS1sYW5ndWFnZSIpLnZhbCgpJiYKKGY9IkVOR0xJU0giPT0kKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCk\/ImVuIjoiZnIiKTtyZXR1cm4iL2pzb24vbmV3Y2Fyc2RldGFpbHNfIitmKyIuanNvbiJ9O3RoaXMubWVudT0kKCIubWVudTUsIC5tZW51NiwgLm1lbnU3LCAubWVudTgsIC5tZW51OSwgLm1lbnUxMCIpO3RoaXMuc3BlY3NBamF4PSQuZ2V0KHRoaXMuZ2V0U3BlY1VybCgpKTt0aGlzLmNhcnM9e2RldGFpbHM6e30sZmluZEJ5SWQ6ZnVuY3Rpb24oZil7dmFyIGc9e307JC5lYWNoKHRoaXMuZGV0YWlscy5tYWtlcyxmdW5jdGlvbihtLGwpeyQuZWFjaChsLm1vZGVscyxmdW5jdGlvbih1LHEpezE9PXEuaXNzZXJpZXN8fDE9PXEuaXNDbGFzcz8kLmVhY2gocS5zdHlsZXMsZnVuY3Rpb24ocixwKXtwLmlkPT1mJiYoZz1wKX0pOnEuaWQ9PWYmJihnPXEpfSk7JC5pc0VtcHR5T2JqZWN0KGcpfSk7cmV0dXJuIGd9fTt0aGlzLnNwZWNzQWpheC5kb25lKGZ1bmN0aW9uKGYpe2MoKS5jYXJzLmRldGFpbHM9Zn0pO3RoaXMucG9zaXRpb25zPQpmdW5jdGlvbihmLGcsbSl7cmV0dXJue3RhcmdldDokKGcuY3VycmVudFRhcmdldCksc2Vjb25kTGV2ZWxNZW51Om51bGwsd2luZG93SGVpZ2h0Om51bGwsc2Vjb25kTGV2ZWxNZW51VG9wOm51bGwsc2Vjb25kTGV2ZWxNZW51Qm90dG9tOm51bGwsc3ViTWVudUl0ZW1Ub3A6bnVsbCxzdWJNZW51SXRlbUhlaWdodDpudWxsLHN1Yk1lbnVJdGVtQm90dG9tOm51bGwsYm90dG9tQWxpZ246bnVsbCxzcGVjczpudWxsLHNwZWNzVG9wOm51bGwsc3BlY3NIZWlnaHQ6bnVsbCxzcGVjc0JvdHRvbTpudWxsLGN1c3RvbVNlY29uZExldmVsTWVudTpudWxsLHJvdW5kOmZ1bmN0aW9uKGwpe3JldHVybisoTWF0aC5yb3VuZChsKyJlKzIiKSsiZS0yIil9LHVwZGF0ZTpmdW5jdGlvbigpe3RoaXMuc2Vjb25kTGV2ZWxNZW51PSJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLmN1c3RvbVNlY29uZExldmVsTWVudT90aGlzLmN1c3RvbVNlY29uZExldmVsTWVudSgpOnRoaXMudGFyZ2V0LmZpbmQoInVsLnN1YjpmaXJzdCIpOwp0cnl7dGhpcy53aW5kb3dIZWlnaHQ9JCh3aW5kb3cpLmhlaWdodCgpLHRoaXMuc2Vjb25kTGV2ZWxNZW51VG9wPXRoaXMuc2Vjb25kTGV2ZWxNZW51LnBvc2l0aW9uKCkudG9wLHRoaXMuc2Vjb25kTGV2ZWxNZW51SGVpZ2h0PXRoaXMuc2Vjb25kTGV2ZWxNZW51Lm91dGVySGVpZ2h0KCksdGhpcy5zZWNvbmRMZXZlbE1lbnVCb3R0b209dGhpcy5yb3VuZCh0aGlzLnNlY29uZExldmVsTWVudVRvcCt0aGlzLnNlY29uZExldmVsTWVudUhlaWdodCl9Y2F0Y2gobCl7fXRyeXt0aGlzLnN1Yk1lbnVJdGVtVG9wPSQoZikucG9zaXRpb24oKS50b3AsdGhpcy5zdWJNZW51SXRlbUhlaWdodD0kKGYpLm91dGVySGVpZ2h0KCksdGhpcy5zdWJNZW51SXRlbUJvdHRvbT10aGlzLnJvdW5kKHRoaXMuc3ViTWVudUl0ZW1IZWlnaHQrdGhpcy5zdWJNZW51SXRlbVRvcCksdGhpcy5ib3R0b21BbGlnbj10aGlzLnJvdW5kKCQoZikucGFyZW50KCJ1bCIpLm91dGVySGVpZ2h0KCkrJChmKS5wYXJlbnQoInVsIikub2Zmc2V0KCkudG9wLQp0aGlzLnNlY29uZExldmVsTWVudUJvdHRvbSl9Y2F0Y2gobCl7fXRyeXt0aGlzLnNwZWNzPW0sdGhpcy5zcGVjc1RvcD10aGlzLnNwZWNzLnBvc2l0aW9uKCkudG9wLHRoaXMuc3BlY3NIZWlnaHQ9dGhpcy5zcGVjcy5vdXRlckhlaWdodCgpLHRoaXMuc3BlY3NCb3R0b209dGhpcy5yb3VuZCh0aGlzLnNwZWNzVG9wK3RoaXMuc3BlY3NIZWlnaHQpfWNhdGNoKGwpe319LGFkanVzdFNlY29uZExldmVsOmZ1bmN0aW9uKCl7aWYoLjY1KnRoaXMud2luZG93SGVpZ2h0PHRoaXMuc2Vjb25kTGV2ZWxNZW51SGVpZ2h0KXtpZih0aGlzLnNlY29uZExldmVsTWVudS5oYXNDbGFzcygibG9jYXRpb24tZGV0YWlscyIpKXJldHVybjt0aGlzLnNlY29uZExldmVsTWVudS5yZW1vdmVBdHRyKCJzdHlsZSIpO3RoaXMuc2Vjb25kTGV2ZWxNZW51LmNzcygiaGVpZ2h0IiwuNjUqdGhpcy53aW5kb3dIZWlnaHQpO3RoaXMuc2Vjb25kTGV2ZWxNZW51LmNzcyh7Im92ZXJmbG93LXkiOiJhdXRvIix3aWR0aDoiNDAwcHgiLApwb3NpdGlvbjoic3RhdGljIixkaXJlY3Rpb246InJ0bCJ9KTt0aGlzLnNlY29uZExldmVsTWVudS5maW5kKCI+IGxpIikuY3NzKHtkaXJlY3Rpb246Imx0ciJ9KTtpZigwPT0kKGYpLmNoaWxkcmVuKCIubWFpbm1lbnUtc3VibWVudSIpLmxlbmd0aCl7dmFyIGw9JCgiPGRpdi8+Iik7bC5hZGRDbGFzcygibWFpbm1lbnUtc3VibWVudSIpO2wuZGV0YWNoKCkuYXBwZW5kKHRoaXMuc2Vjb25kTGV2ZWxNZW51KTt0aGlzLnRhcmdldC5hcHBlbmQobCl9dGhpcy51cGRhdGUoKX1pZih0aGlzLnNlY29uZExldmVsTWVudUJvdHRvbTx0aGlzLnN1Yk1lbnVJdGVtVG9wKSQoZikuYWRkQ2xhc3MoImFsaWduLWxldmVsIiksdGhpcy51cGRhdGUoKSxsPXRoaXMuc2Vjb25kTGV2ZWxNZW51Qm90dG9tPCQoZikucGFyZW50KCJ1bCIpLm91dGVySGVpZ2h0KCk\/JChmKS5vdXRlckhlaWdodCgpKyQoZikucG9zaXRpb24oKS50b3AtdGhpcy5zZWNvbmRMZXZlbE1lbnVIZWlnaHQ6JChmKS5wYXJlbnQoInVsIikub3V0ZXJIZWlnaHQoKSsKJChmKS5wYXJlbnQoInVsIikucG9zaXRpb24oKS50b3AtdGhpcy5zZWNvbmRMZXZlbE1lbnVCb3R0b20sdGhpcy5zZWNvbmRMZXZlbE1lbnUuY3NzKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGVZKCIrbCsicHgpIik7ZWxzZSBpZih0aGlzLnNlY29uZExldmVsTWVudUJvdHRvbT50aGlzLnN1Yk1lbnVJdGVtVG9wJiZ0aGlzLnN1Yk1lbnVJdGVtQm90dG9tPnRoaXMuc2Vjb25kTGV2ZWxNZW51Qm90dG9tKXtsPTA+cGFyc2VJbnQodGhpcy5zZWNvbmRMZXZlbE1lbnUuY3NzKCJsZWZ0IikucmVwbGFjZSgicHgiLCIiKSk\/InJpZ2h0IjoibGVmdCI7dmFyIHU9e3RyYW5zZm9ybToidHJhbnNsYXRlWSgiK01hdGguYWJzKHRoaXMuc2Vjb25kTGV2ZWxNZW51Qm90dG9tLXRoaXMuc3ViTWVudUl0ZW1Cb3R0b20pK3RoaXMuc2Vjb25kTGV2ZWxNZW51VG9wKyJweCkifTsicmlnaHQiIT1sJiYodVtsXT10aGlzLnRhcmdldC5wb3NpdGlvbigpLmxlZnQrdGhpcy50YXJnZXQud2lkdGgoKSk7dGhpcy5zZWNvbmRMZXZlbE1lbnUuY3NzKHUpfWVsc2UgdGhpcy5zZWNvbmRMZXZlbE1lbnVUb3A+CnRoaXMuc3ViTWVudUl0ZW1Ub3AmJnRoaXMuc2Vjb25kTGV2ZWxNZW51LmNzcygidHJhbnNmb3JtIiwidHJhbnNsYXRlWSgiK3RoaXMuc3ViTWVudUl0ZW1Ub3ArInB4KSIpfSxhZGp1c3RIb3Jpem9udGFsOmZ1bmN0aW9uKCl7dGhpcy5zZWNvbmRMZXZlbE1lbnUuaGFzQ2xhc3MoImludmlzaWJsZSIpfHx0aGlzLnNlY29uZExldmVsTWVudS5hZGRDbGFzcygiaW52aXNpYmxlIik7dmFyIGw9dGhpcy5pc0luVmlld3BvcnQodGhpcy5zZWNvbmRMZXZlbE1lbnVbMF0pLHU9MD5wYXJzZUludCh0aGlzLnNlY29uZExldmVsTWVudS5jc3MoImxlZnQiKS5yZXBsYWNlKCJweCIsIiIpKT8icmlnaHQiOiJsZWZ0IjtsfHwibGVmdCIhPT11fHwodGhpcy5zZWNvbmRMZXZlbE1lbnUuaGFzQ2xhc3MoIkwxMDAiKSYmdGhpcy5zZWNvbmRMZXZlbE1lbnUucmVtb3ZlQ2xhc3MoIkwxMDAiKSx0aGlzLnNlY29uZExldmVsTWVudS5hZGRDbGFzcygiUjEwMCIpKTtsPXt9O2xbdV09dGhpcy50YXJnZXQucG9zaXRpb24oKS5sZWZ0Kwp0aGlzLnRhcmdldC53aWR0aCgpO3RoaXMuc2Vjb25kTGV2ZWxNZW51LmNzcyhsKTt0aGlzLnNlY29uZExldmVsTWVudS5yZW1vdmVDbGFzcygiaW52aXNpYmxlIil9LGlzSW5WaWV3cG9ydDpmdW5jdGlvbihsKXtsPWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuIDA8PWwudG9wJiYwPD1sLmxlZnQmJmwuYm90dG9tPD0od2luZG93LmlubmVySGVpZ2h0fHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0KSYmbC5yaWdodDw9KHdpbmRvdy5pbm5lcldpZHRofHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgpfX19O3RoaXMubWVudS5vbigibW91c2VlbnRlciBtb3VzZWxlYXZlIiwidWwubmF2ID4gbGkiLGZ1bmN0aW9uKGYpe3ZhciBnPWEucG9zaXRpb25zKHRoaXMsZik7Zy51cGRhdGUoKTtnLnNlY29uZExldmVsTWVudUJvdHRvbS0kKHdpbmRvdykuc2Nyb2xsVG9wKCk+Zy53aW5kb3dIZWlnaHQ\/Zy5zZWNvbmRMZXZlbE1lbnUuYWRkQ2xhc3MoInNsaW0tc3VibWVudSIpOgpnLnNlY29uZExldmVsTWVudS5yZW1vdmVDbGFzcygic2xpbS1zdWJtZW51Iik7Im1vdXNlbGVhdmUiIT09Zi50eXBlJiYoZj0kKHRoaXMpLmZpbmQoIj4gdWwiKSxmLmxlbmd0aCYmIWYuZGF0YSgiY2FsY3VsYXRlZCIpJiYoZz0kKHRoaXMpLm91dGVyV2lkdGgoKSxmLm91dGVyV2lkdGgoKTxnJiZmLmNzcygid2lkdGgiLGcrMSksZi5kYXRhKCJjYWxjdWxhdGVkIiwhMCkpKX0pO3RoaXMubWVudS5vbigibW91c2VlbnRlciBtb3VzZWxlYXZlIiwiI01haW5NZW51X05FVyA+IHVsLnN1YiA+IGxpIixmdW5jdGlvbihmKXt2YXIgZz1hLnBvc2l0aW9ucyh0aGlzLGYpOzAhPSQoZi5jdXJyZW50VGFyZ2V0KS5maW5kKCJ1bC5zdWIgPiBsaSIpLmxlbmd0aCYmIm1vdXNlbGVhdmUiIT1mLnR5cGUmJihnLnVwZGF0ZSgpLGcuYWRqdXN0U2Vjb25kTGV2ZWwoKSl9KTt0aGlzLm1lbnUub24oIm1vdXNlZW50ZXIgbW91c2VsZWF2ZSIsIiNNYWluTWVudV9ERUFMRVJTSElQUyA+IHVsLnN1YiBsaS5sb2NhdGlvbi1uYW1lcyIsCmZ1bmN0aW9uKGYpe3ZhciBnPWEucG9zaXRpb25zKHRoaXMsZiksbT0kKGYuY3VycmVudFRhcmdldCkuZmluZCgiLmxvY2F0aW9uLWRldGFpbHMiKTtnLmN1c3RvbVNlY29uZExldmVsTWVudT1mdW5jdGlvbigpe3JldHVybiBtfTswIT0kKGYuY3VycmVudFRhcmdldCkuZmluZCgiLmxvY2F0aW9uLWRldGFpbHMiKS5sZW5ndGgmJiJtb3VzZWxlYXZlIiE9Zi50eXBlJiYoJChmLmN1cnJlbnRUYXJnZXQpLmZpbmQoIi5sb2NhdGlvbi1kZXRhaWxzIikub24oImxhenlsb2FkZWQiLGZ1bmN0aW9uKGwpe2cuY3VzdG9tU2Vjb25kTGV2ZWxNZW51KCkuYXR0cigic3R5bGUiLG51bGwpO2cudXBkYXRlKCk7Zy5hZGp1c3RIb3Jpem9udGFsKCk7Zy5hZGp1c3RTZWNvbmRMZXZlbCgpfSksZy5jdXN0b21TZWNvbmRMZXZlbE1lbnUoKS5hdHRyKCJzdHlsZSIsbnVsbCksZy51cGRhdGUoKSxnLmFkanVzdEhvcml6b250YWwoKSxnLmFkanVzdFNlY29uZExldmVsKCkpfSk7dGhpcy5tZW51Lm9uKCJtb3VzZWVudGVyIG1vdXNlbGVhdmUiLAonI01haW5NZW51X1RBQl9DT01NRVJDSUFMID4gdWwuc3ViID4gW2RhdGEtaWQ9IlNVQl9UQUJfQ09NTUVSQ0lBTF9DT01NRVIiXScsZnVuY3Rpb24oZil7Zj1hLnBvc2l0aW9ucyh0aGlzLGYpO2YudXBkYXRlKCk7Zi5hZGp1c3RTZWNvbmRMZXZlbCgpfSk7aWYoImZvcmRfbGluY29sbl9leHRlcm5hbCI9PSQoIiNERUFMRVJQQVJUUkVESVJFQ1RUWVBFIikudmFsKCkmJjA8JCgiI0RFQUxFUkJSQU5EIikubGVuZ3RoJiYkKCIjREVBTEVSQlJBTkQiKS52YWwoKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCJmb3JkIikmJiIiIT0kKCIjREVBTEVSUEFDT0RFIikudmFsKCkpe3ZhciBlPSQoImh0bWwiKS5hdHRyKCJsYW5nIiksaz0kKCIjREVBTEVSUEFDT0RFIikudmFsKCksaD0iZW4iPT1lPyIvcmVxdWVzdHMvY2FyLXBhcnRzLWFuZC1hY2Nlc3Nvcmllcy5odG1sIjoiL2RlbWFuZGVzL2NvbW1hbmRlLXBpZWNlcy1hY2Nlc3NvaXJlcy1hdXRvbW9iaWxlcy5odG1sIixuPSJodHRwczovL2ZvcmRhY2Nlc3MuY29tL0ZvcmQuYXNweD9sb2NhdGlvbj0iKwprO3RoaXMubWVudS5vbigibW91c2VlbnRlciBtb3VzZWxlYXZlIiwiI01haW5NZW51X1NFUlZJQ0UgdWwuc3ViIGxpW2RhdGEtaWQ9J1BJRUNFUyddIixmdW5jdGlvbigpe3ZhciBmPSQodGhpcyk7Zj0kKCI+IGEiLGYpO2YuYXR0cigiaHJlZiIpPT1oJiYoZi5hdHRyKCJocmVmIixuKSxmLmF0dHIoInRhcmdldCIsIl9ibGFuayIpKX0pfXRoaXMubWVudS5vbigibW91c2VlbnRlciBtb3VzZWxlYXZlIiwiI01haW5NZW51X0ZJTkFOQ0UgPiBhIixmdW5jdGlvbigpe3ZhciBmPSQodGhpcyksZz0kKCJodG1sIikuYXR0cigibGFuZyIpLG09JCgiI0RFQUxFUlBBQ09ERSIpLnZhbCgpLGw9JCgiI0RFQUxFUkJSQU5EX1BSSU1BUlkiKS52YWwoKS50b0xvd2VyQ2FzZSgpOyJmb3JkX2xpbmNvbG5fZXh0ZXJuYWwiIT0kKCIjRklOQU5DRUZPUk1UWVBFIikudmFsKCl8fCJmb3JkIiE9bCYmImxpbmNvbG4iIT1sfHwiIj09bXx8KGYuYXR0cigiaHJlZiIsImZvcmQiPT1sPygiZW4iPT1nPyJodHRwczovL3d3dy5mb3JkLmNhL2ZpbmFuY2UvYXBwbHkvMT9Tb3VyY2VPZkRhdGE9Q0FEQ0YmZGVhbGVySWQ9IjoKImh0dHBzOi8vZnIuZm9yZC5jYS9maW5hbmNlL2FwcGx5LzE\/U291cmNlT2ZEYXRhPUNBRENGJmRlYWxlcklkPSIpK206KCJlbiI9PWc\/Imh0dHBzOi8vd3d3LmxpbmNvbG5jYW5hZGEuY29tL2ZpbmFuY2UvYXBwbHkvMT9Tb3VyY2VPZkRhdGE9Q0FEQ0wmZGVhbGVySWQ9IjoiaHR0cHM6Ly9mci5saW5jb2xuY2FuYWRhLmNvbS9maW5hbmNlL2FwcGx5LzE\/U291cmNlT2ZEYXRhPUNBRENMJmRlYWxlcklkPSIpK20pLGYuYXR0cigidGFyZ2V0IiwiX2JsYW5rIikpfSk7c2V0VGltZW91dChmdW5jdGlvbigpe2lmKDA8JCgiI2QyYy1ibnAtbGlua3J1bGVzLXRleHRhcmVhIikubGVuZ3RoJiYiIiE9JCgiI2QyYy1ibnAtbGlua3J1bGVzLXRleHRhcmVhIikudmFsKCkmJiIjI0xJTktSVUxFUyMjIiE9JCgiI2QyYy1ibnAtbGlua3J1bGVzLXRleHRhcmVhIikudmFsKCkpe2lmKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5jdGEtdHBsIikubGVuZ3RoJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBuZXdjYXJEZXRhaWxzJiYKInVuZGVmaW5lZCIhPT10eXBlb2YgbmV3Y2FyRGV0YWlscy5hY3RpdmVNb2RlbCl7aWYoITE9PT0oImNvbW1lcmNpYWwiPT1uZXdjYXJEZXRhaWxzLmFjdGl2ZU1vZGVsLnNlY3Rpb24\/ITA6ITEpKXJldHVybjtkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuY3RhLXRwbCBhIikuZm9yRWFjaCgoZixnKT0+e2c9Zi5nZXRBdHRyaWJ1dGUoImhyZWYiKTtpZihnLmluY2x1ZGVzKCJzaG9wLmZvcmQuY2EiKSl7bGV0IG09ITE7Zy5pbmNsdWRlcygic3VwZXJkdXR5IikmJihtPWcucmVwbGFjZSgiL3N1cGVyZHV0eS8iLCIvc3VwZXJkdXR5LWNvbW1lcmNpYWwvIikpOyExIT09bSYmZi5zZXRBdHRyaWJ1dGUoImhyZWYiLG0pfX0pfWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIiNjbGFzc2NvbW1lcmNpYWxfY29udGFpbmVyIikubGVuZ3RoJiZkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggYSIpLmZvckVhY2goKGYsZyk9PntnPWYuZ2V0QXR0cmlidXRlKCJocmVmIik7CmlmKGcuaW5jbHVkZXMoInNob3AuZm9yZC5jYSIpKXtsZXQgbT0hMTtnLmluY2x1ZGVzKCJzdXBlcmR1dHkiKSYmKG09Zy5yZXBsYWNlKCIvc3VwZXJkdXR5LyIsIi9zdXBlcmR1dHktY29tbWVyY2lhbC8iKSk7ITEhPT1tJiZmLnNldEF0dHJpYnV0ZSgiaHJlZiIsbSl9fSl9fSwyRTMpO3RoaXMubWVudS5vbigibW91c2VlbnRlciBtb3VzZWxlYXZlIiwiI01haW5NZW51X05FVyA+IHVsLnN1YiA+IGxpID4gdWwuc3ViID4gbGkgPiB1bC5zdWIgPiBsaSwgI01haW5NZW51X05FVyA+IHVsLnN1YiA+IGxpID4gLm1haW5tZW51LXN1Ym1lbnUgPiB1bC5zdWIgPiBsaSA+IHVsLnN1YiA+IGxpLCAgI01haW5NZW51X1RBQl9DT01NRVJDSUFMID4gdWwuc3ViID4gbGkgPiB1bC5zdWIgPiBsaSA+IHVsLnN1YiA+IGxpLCAjTWFpbk1lbnVfVEFCX0NPTU1FUkNJQUwgPiB1bC5zdWIgPiBsaSA+IC5tYWlubWVudS1zdWJtZW51ID4gdWwuc3ViID4gbGkgPiB1bC5zdWIgPiBsaSIsZnVuY3Rpb24oZil7aWYoIm1vdXNlbGVhdmUiIT0KZi50eXBlKXt2YXIgZz0kKHRoaXMpLmZpbmQoIi5tZW51LXRlY2gtc3BlY3MiKTswPT1nLmxlbmd0aCYmKGc9JCgiI21lbnUtc3BlY3MtdGVtcGxhdGUiKS5jbG9uZSgpKTt2YXIgbT10aGlzO2lmKDA9PSQobSkuY2hpbGRyZW4oIi5tZW51LXRlY2gtc3BlY3MiKS5sZW5ndGgpe3ZhciBsPSQobSkuZmluZCgiYTpudGgtb2YtdHlwZSgyKSIpLnRleHQoKSx1PSQobSkuZmluZCgiYTpmaXJzdC1jaGlsZCIpLmF0dHIoImhyZWYiKSxxPXUubGFzdEluZGV4T2YoIi8iKSsxO2NhckxpbmtUcmltbWVkPXUuc3Vic3RyaW5nKHEsdS5sZW5ndGgpO3ZhciByPSQoIiN0eHRCdWlsZEFuZFByaWNlRm9sZGVyUGF0aCIpLnZhbCgpK2NhckxpbmtUcmltbWVkOyhmdW5jdGlvbigpe2lmKDA8JCgiI2QyYy1ibnAtbGlua3J1bGVzLXRleHRhcmVhIikubGVuZ3RoJiYiIiE9JCgiI2QyYy1ibnAtbGlua3J1bGVzLXRleHRhcmVhIikudmFsKCkmJiIjI0xJTktSVUxFUyMjIiE9JCgiI2QyYy1ibnAtbGlua3J1bGVzLXRleHRhcmVhIikudmFsKCkpe3ZhciB5PQowPCQobSkuY2xvc2VzdCgibGlbZGF0YS1pZF49J05FV19DT01NRVJDSUFMJ10iKS5sZW5ndGg\/ITA6ITEsQT0kKCIjZDJjLWJucC1saW5rcnVsZXMtdGV4dGFyZWEiKS52YWwoKTtBPUpTT04ucGFyc2UoQSk7dmFyIEk9JCgiaHRtbCIpLmF0dHIoImxhbmciKSxCPXIubWF0Y2goImVuIj09ST8vXC9idWlsZC1hbmQtcHJpY2VcLyhcZHs0fS0oXHcrKS0oXHcrKS4qXC5odG1sKS4qLzovXC9jb25maWd1cmF0aW9uLWV0LXByaXhcLygoXHcrKS0oXHcrKS1cZHs0fSkuKlwuaHRtbC8pLEo9QlswXSxGPUJbMl0udG9Mb3dlckNhc2UoKTtCPUJbM10udG9Mb3dlckNhc2UoKS5yZXBsYWNlQWxsKCJfIiwiICIpO3kmJkIuaW5jbHVkZXMoInN1cGVyIGR1dHkiKSYmKEI9InN1cGVyIGR1dHkgY29tbWVyY2lhbCIpO2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIEFbRl0mJiJ1bmRlZmluZWQiPT09dHlwZW9mIEFbRl1bQl0pZm9yKHZhciBLIGluIEFbRl0paWYoeT1LLEIuaW5jbHVkZXMoeSkpe0I9eTsKYnJlYWt9InVuZGVmaW5lZCIhPT10eXBlb2YgQVtGXSYmInVuZGVmaW5lZCIhPT10eXBlb2YgQVtGXVtCXSYmKCQoZykuZmluZCgiLm1lbnUtc3BlYy1ibnAiKS5hdHRyKCJ0YXJnZXQiLCJfYmxhbmsiKSxyPXIucmVwbGFjZShKLEFbRl1bQl1bSV0pKX19KSgpOyQoZykuZmluZCgiLm1lbnUtc3BlYy1ibnAiKS5hdHRyKCJocmVmIixyKTskKGcpLmZpbmQoIi5tZW51LXNwZWMtbGluayIpLmF0dHIoImhyZWYiLHUpOyQoZykucmVtb3ZlQXR0cigiaWQiKTskKGcpLmNoaWxkcmVuKCIubWVudS1zcGVjcy10aXRsZSIpLmFwcGVuZChsKTt2YXIgcD17fTskLmlzRW1wdHlPYmplY3QoYygpLmNhcnMuZGV0YWlscyk\/JC53aGVuKGMoKS5zcGVjc0FqYXgpLmRvbmUoZnVuY3Rpb24oeSl7cD1jKCkuY2Fycy5maW5kQnlJZCgkKG0pLmRhdGEoIm1vZGVsaWQiKSl9KTpwPWMoKS5jYXJzLmZpbmRCeUlkKCQobSkuZGF0YSgibW9kZWxpZCIpKTtpZighJC5pc0VtcHR5T2JqZWN0KHApKXt2YXIgdz1hLnNob3VsZFVzZUZyZW5jaE5hbWVzKCk\/CnAubmFtZTpwLm1vZGVsO3AuaGFzT3duUHJvcGVydHkoImJhc2Vfc3R5bGUiKSYmKHA9cC5iYXNlX3N0eWxlLHc9cC5tb2RlbCk7cT0iRlJFTkNIIj09JCgiI3RleHRMYW5ndWFnZSIpLnZhbCgpPyJOL0QiOiJOL0EiO2w9IiI9PXAuZGlzcGxhY2VtZW50P3E6cC5kaXNwbGFjZW1lbnQ7dT0iIj09cC5jaXR5RnVlbD9xOnAuY2l0eUZ1ZWw7cT0iIj09cC5od3lGdWVsP3E6cC5od3lGdWVsO3ZhciB6PXAubXNycEFsbEluLEQ9JChnKS5maW5kKCIubWVudS1zcGVjLWJucCIpLnRleHQoKS50cmltKCk7RD1ELnJlcGxhY2UoIiRNT0RFTCIsdyk7dz1gPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+JHt6LnRvTG9jYWxlU3RyaW5nKCl9PC9zcGFuPmA7ej0kKCIjQURNSU5fTkVXX0RPTlRfU0hPV19QUklDRV9NT0RFTFMiKS52YWwoKS5pbmNsdWRlcyhwLm1vZGVsaWQpO2lmKDA8JChtKS5jaGlsZHJlbigiLnByaWNlIikubGVuZ3RoKXskKGcpLmZpbmQoIi5tZW51LXNwZWMtcHJpY2UiKS50ZXh0KCIiKTsKdmFyIEM9JCgnPGRpdiBjbGFzcz0icHJpY2UiLz4nKSxFPSQoJzxzcGFuIGNsYXNzPSJwcmljZV9hbXQiLz4nKSxHPSQoJzxzcGFuIGNsYXNzPSJwcmljZV9zY3JhdGNoZWQiLz4nKSxIPSQoJzxzcGFuIGNsYXNzPSJwcmljZV9wcm9tbyIvPicpOzA8JChtKS5jaGlsZHJlbigiLnByaWNlIikuY2hpbGRyZW4oIi5wcmljZS1zY3JhdGNoIikubGVuZ3RoPyhHLmh0bWwodyksRS5hcHBlbmQoRyksRS5jc3MoeyJ0ZXh0LWRlY29yYXRpb24iOiJsaW5lLXRocm91Z2giLGNvbG9yOiJyZWQifSkpOkUuaHRtbCh3KTtDLmFwcGVuZChFKTswPCQobSkuY2hpbGRyZW4oIi5wcmljZSIpLmNoaWxkcmVuKCIucHJpY2VfcHJvbW8iKS5sZW5ndGgmJihILnRleHQoJChtKS5jaGlsZHJlbigiLnByaWNlIikuY2hpbGRyZW4oIi5wcmljZV9wcm9tbyIpLnRleHQoKSksSC5jc3Moe2NvbG9yOiJyZWQifSksQy5hcHBlbmQoSCkpOyQoZykuZmluZCgiLm1lbnUtc3BlYy1wcmljZSIpLmFwcGVuZChDKX1lbHNlICQoZykuZmluZCgiLm1lbnUtc3BlYy1wcmljZSIpLmh0bWwodyk7CiQoZykuZmluZCgiLm1lbnUtc3BlYy1ocCIpLnRleHQocC5ocEF0UlBNKTskKGcpLmZpbmQoIi5tZW51LXNwZWMtcG93ZXIiKS50ZXh0KGwpOyQoZykuZmluZCgiLm1lbnUtc3BlYy1mdWVsLWNpdHkiKS50ZXh0KHUpOyQoZykuZmluZCgiLm1lbnUtc3BlYy1mdWVsLWhpZ2h3YXkiKS50ZXh0KHEpOyQoZykuZmluZCgiLm1lbnUtc3BlYy1kcml2ZXRyYWluIikudGV4dChwLmRyaXZlVHJhaW4pOyQoZykuZmluZCgiLm1lbnUtc3BlYy1ibnAiKS5jb250ZW50cygpLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiAzPT10aGlzLm5vZGVUeXBlfSkubGFzdCgpLnJlcGxhY2VXaXRoKEQpO3omJigkKGcpLmZpbmQoIi5tZW51LXNwZWMtYm5wIikucmVtb3ZlKCksJChnKS5maW5kKCIubWVudS1zcGVjLXByaWNlIikudGV4dCgkKCIjTkVXX1BSSUNFX1RFWFQiKS52YWwoKSkpOyQoZykuZmluZCgiLm1lbnUtcHJpY2UtdGV4dCIpLnRleHQoZCgkKGcpLmZpbmQoIi5tZW51LXByaWNlLXRleHQiKS50ZXh0KCksCnApKTs1RTg+cC5pZCYmJChtKS5hcHBlbmQoZy5mYWRlSW4oMjAwKSk7bD1uZXcgQ3VzdG9tRXZlbnQoInRvcG5hdi10ZWNoLXNwZWMtbG9hZGVkIix7ZGV0YWlsOnt0ZW1wbGF0ZTpnfX0pO2RvY3VtZW50LmRpc3BhdGNoRXZlbnQobCl9fXNldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgeT1hLnBvc2l0aW9ucyhtLGYsJChnKSk7eS51cGRhdGUoKTt2YXIgQT0kKG0pLnBhcmVudCgidWwuc3ViIikucGFyZW50KCkucGFyZW50KCk7QS5vZmZzZXQoKTtBLm91dGVySGVpZ2h0KCk7eS5zcGVjc0JvdHRvbTx5LnN1Yk1lbnVJdGVtVG9wJiYkKGcpLmNzcygidG9wIix5LnN1Yk1lbnVJdGVtQm90dG9tLXkuc3BlY3NCb3R0b20pO3kuc3ViTWVudUl0ZW1Ub3A8eS5zcGVjc0JvdHRvbSYmeS5zdWJNZW51SXRlbUJvdHRvbT55LnNwZWNzQm90dG9tJiYkKGcpLmNzcygidG9wIiwkKGcpLnBvc2l0aW9uKCkudG9wKyh5LnN1Yk1lbnVJdGVtQm90dG9tLXkuc3BlY3NCb3R0b20pKX0sMCk7ZGVsZXRlIHB9fSk7CiQoJy51cF9tZW51IFtpZF49Ik1haW5NZW51XyJdLnRvcDpub3QoLmlzT3BlbiknKS5vbigibW91c2VlbnRlciIsZnVuY3Rpb24oZil7JChmLmN1cnJlbnRUYXJnZXQpLmhhc0NsYXNzKCJpc09wZW4iKXx8JCgnLnVwX21lbnUgW2lkXj0iTWFpbk1lbnVfIl0udG9wJykucmVtb3ZlQ2xhc3MoImlzT3BlbiIpfSk7JChkb2N1bWVudCkub24oImNsaWNrIixmdW5jdGlvbihmKXtjaGlsZE9mKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQsJCgiLnVwX21lbnUiKVswXSl8fCQoJy51cF9tZW51IFtpZF49Ik1haW5NZW51XyJdLnRvcCcpLnJlbW92ZUNsYXNzKCJpc09wZW4iKX0pOyQoIiNNYWluTWVudV9DT05UQUNUIikub24oIm1vdXNlZW50ZXIgbW91c2VsZWF2ZSIsZnVuY3Rpb24oZil7dmFyIGc9JCgiI21lbnUtbWFwLWxpbmsiKTswPT1nLmxlbmd0aHx8MDxnLmZpbmQoImlmcmFtZSIpLmxlbmd0aHx8aW5qZWN0R29vZ2xlTWFwc0tleShmdW5jdGlvbihtKXttPSJodHRwczovL3d3dy5nb29nbGUuY29tL21hcHMvZW1iZWQvdjEvcGxhY2U\/IisKWyJxPSIrZW5jb2RlVVJJQ29tcG9uZW50KGcuZGF0YSgicGxhY2VJZCIpKSwiem9vbT0iK2cuZGF0YSgiem9vbSIpLCJsYW5ndWFnZT0iK2cuZGF0YSgibGFuZ3VhZ2UiKSwicmVnaW9uPUNBIiwia2V5PSIrbV0uam9pbigiJiIpO2cuYXBwZW5kKCc8aWZyYW1lIHNyYz0iJyttKyciIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjQwMCIgZnJhbWVib3JkZXI9IjAiIHN0eWxlPSJib3JkZXI6MCIgYWxsb3dmdWxsc2NyZWVuPjwvaWZyYW1lPicpfSl9KTskKCIjTWFpbk1lbnVfRklOQU5DRSwgI01haW5NZW51X0NPTlRBQ1QiKS5vbigibW91c2VlbnRlciBtb3VzZWxlYXZlIixmdW5jdGlvbihmKXt2YXIgZz1mLmN1cnJlbnRUYXJnZXQuaWQsbT0kKCIjIitnKTswPT09JCgiIyIrZysiLmlzT3BlbiIpLmxlbmd0aCYmIm1vdXNlbGVhdmUiIT09Zi50eXBlJiZtLmFkZENsYXNzKCJpc09wZW4iKTtpZigibW91c2VsZWF2ZSI9PT1mLnR5cGUpe3ZhciBsPSQoIi5jcmVkaXRTY29yZVBvcHVwRm9ybSIpWzBdOwpnPSQoIiMiK2crIiA+IGEudG9wX2xpbmsiKVswXTsobCYmZi5mcm9tRWxlbWVudD09PWx8fGcmJmYuZnJvbUVsZW1lbnQ9PT1nKSYmbS5yZW1vdmVDbGFzcygiaXNPcGVuIik7bD0kKGYudG9FbGVtZW50KS5oYXNDbGFzcygiY2FsLXdyYXBwZXIiKXx8JChmLnRvRWxlbWVudCkuY2hpbGRyZW4oKS5oYXNDbGFzcygiY2FsLXdyYXBwZXIiKXx8JChmLnRvRWxlbWVudCkuaGFzQ2xhc3MoIm5lYkNhbCIpfHwkKGYudG9FbGVtZW50KS5jbG9zZXN0KCIubmViQ2FsIikubGVuZ3RoO2c9JChmLnRvRWxlbWVudCkuaGFzQ2xhc3MoInBhYy1jb250YWluZXIiKTtpZighKG51bGw9PT1mLnRvRWxlbWVudHx8Y2hpbGRPZihmLnRvRWxlbWVudCxtWzBdKXx8Y2hpbGRPZihkb2N1bWVudC5hY3RpdmVFbGVtZW50LG1bMF0pfHxsfHxnKXx8Y2hpbGRPZihmLnRvRWxlbWVudCwkKCIudXBfbWVudSIpWzBdKSYmIWNoaWxkT2YoZi50b0VsZW1lbnQsbVswXSkpJCgiLm5lYkNhbCIpLmlzKCI6dmlzaWJsZSIpJiYKKGY9JCgiLmZpbmFuY2UtbWVudS1mcmVlY3JlZGl0IC5jcmVkaXRTY29yZUJpcnRoZGF0ZSIpLmRhdGEoIm5lYkNhbCIpKSYmZi5oaWRlKCksbS5yZW1vdmVDbGFzcygiaXNPcGVuIil9fSk7aWYoJCghMCkpe2U9JCgiLm1lbnU1IC5uYXYgPiBsaSIpO2s9ZS5sZW5ndGg7dmFyIHg9JCgiI01haW5NZW51X0NPTlRBQ1QiKSx2PS0xO2UuZWFjaChmdW5jdGlvbihmLGcpeyQoZykuaXMoeCkmJih2PWYpfSk7LTE8diYmLjU8PXYvayYmeC5maW5kKCIuY29udGFjdHVzLWZvcm0uY29udGFjdC1zaG9ydCIpLmNzcyh7cmlnaHQ6ImluaGVyaXQifSl9dGhpcy5zaG91bGRVc2VGcmVuY2hOYW1lcz1mdW5jdGlvbigpe3JldHVybiJGUkVOQ0giPT0kKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCkmJiIxIj09PSQoIiNuZXdfdHJhbnNsYXRlZF90aXRsZXMiKS52YWwoKX07dGhpcy5zZXRNZW51RXhwcmVzc0Zvcm1TZWxlY3RlZE9wdGlvbj1mdW5jdGlvbigpe3ZhciBmPXdpbmRvdy5sb2NhdGlvbi5ocmVmLApnPS91c2VkfG9jY2FzaW9uLy50ZXN0KGYpLG09L25ld3xuZXVmcy8udGVzdChmKSxsPS9maW5hbmNlbWVudHxjcmVkaXQvLnRlc3QoZiksdT0vc2VydmljZXxhY2Nlc3Nvcmllc3x0aXJlfHBuZXVzfGJvZHlzaG9wfGJvZHktc2hvcHxjYXJvc3NlcmllLy50ZXN0KGYpO2Y9IiI7bT9mPSJuZXciOmc\/Zj0idXNlZCI6bD9mPSJmaW5hbmNlIjp1JiYoZj0ic2VydmljZSIpOyIiIT1mJiYoZz0kKCIubWVudSAjcXVpY2tFbWFpbERlcGFydG1lbnQiKSwkKCcgb3B0aW9uW3ZhbHVlPSInK2YrJyJdJyxnKS5wcm9wKCJzZWxlY3RlZCIsInNlbGVjdGVkIiksbT0kKCJvcHRpb246c2VsZWN0ZWQiLGcpLmluZGV4KCksZy5wcmV2KCJ1bCIpLmZpbmQoImxpIikuZXEobSkuZmluZCgiYSIpLnRyaWdnZXIoImNsaWNrIikpfTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YS5zZXRNZW51RXhwcmVzc0Zvcm1TZWxlY3RlZE9wdGlvbigpfSwxMCk7Y29uc29sZS5sb2coIk1lbnVIYW5kbGVyIGluaXQgLS0gdGVzdCByZW1vdmUgbGF0ZXIiKTsKdGhpcy50cmFuc2xhdGVUaXRsZXM9ZnVuY3Rpb24oKXtyZXR1cm4gJGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yRnVuY3Rpb24oZnVuY3Rpb24qKCl7dHJ5e3ZhciBmPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLW1lbnUtdHJhbnNsYXRlXSIpO2lmKGYpe3ZhciBnPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImJvZHkiKS5jbGFzc05hbWUubWF0Y2goIkZSRU5DSCIpPyJmciI6ImVuIixtPShuZXcgVVJMKGAvanMvanNvbi9tZW51VGl0bGVzXyR7Z30uanNvbmAsd2luZG93LmxvY2F0aW9uLm9yaWdpbikpLmhyZWY7cmVzcG9uc2U9eWllbGQgZmV0Y2gobSk7aWYodGV4dD15aWVsZCByZXNwb25zZS50ZXh0KCkpaWYoZGF0YT1KU09OLnBhcnNlKHRleHQpLGYmJjAhPT1kYXRhLmxlbmd0aClmb3IoZz0wO2c8Zi5sZW5ndGg7ZysrKXt2YXIgbD1mW2ddLmdldEF0dHJpYnV0ZSgiZGF0YS1tZW51LXRyYW5zbGF0ZSIpO2RhdGFbbF0mJkJhc2U2NC5pc0Jhc2U2NChkYXRhW2xdLnRleHQpJiYKKGZbZ10udGV4dENvbnRlbnQ9QmFzZTY0LmRlY29kZShkYXRhW2xdLnRleHQpKX19fWNhdGNoKHUpe2NvbnNvbGUubG9nKHUpfX0pfTt0aGlzLnRyYW5zbGF0ZVRpdGxlcygpfX0pKCk7JChmdW5jdGlvbigpe3dpbmRvdy5tZW51SGFuZGxlcj1uZXcgTWVudUhhbmRsZXJ9KTsKdmFyIGdldEFjdGl2ZVBhZ2U9ZnVuY3Rpb24oKXt2YXIgYT0iIjsidW5kZWZpbmVkIj09PXR5cGVvZiBhY3RpdmVQYWdlJiYoYWN0aXZlUGFnZT0iIik7c3dpdGNoKGFjdGl2ZVBhZ2Upe2Nhc2UgIkhPTUVQQUdFIjphPSJBY2N1ZWlsIjticmVhaztjYXNlICJDQVJERVRBSUxTIjphPSJPY2Nhc2lvbi1WRFAiO2JyZWFrO2Nhc2UgIlVTRURDQVJTIjphPSJPY2Nhc2lvbi1TUlAiO2JyZWFrO2Nhc2UgIk5FV0NBUlMiOmE9Ik5ldWYtU1JQIjticmVhaztjYXNlICJORVdDQVJERVRBSUxTIjphPSJOZXVmLVZEUCJ9cmV0dXJuIGF9LHNlbmRHb29nbGVBbmFseXRpY0Jhbm5lckNsaWNrZWRFdmVudD1mdW5jdGlvbihhLGIpe2dhVHJhY2soIl90cmFja0V2ZW50IiwiQ2xpcXVlcyBCYW5uaWVyZSIsYSxiLDEpfTsKJChkb2N1bWVudCkub24oImNsaWNrIiwiI2hvbWVwYWdlLWJhbm5lciAjc2xpZGVyID4gYSIsZnVuY3Rpb24oYSl7aWYoYT1nZXRBY3RpdmVQYWdlKCkpe3ZhciBiPSIiIT0kKHRoaXMpLmF0dHIoImhyZWYiKT8kKHRoaXMpLmF0dHIoImhyZWYiKToiUG9wdXAiO3NlbmRHb29nbGVBbmFseXRpY0Jhbm5lckNsaWNrZWRFdmVudChhLGIpfX0pOyQoZG9jdW1lbnQpLm9uKCJjbGljayIsIiNtb2JpbGVTbGlkZXIgI21vYmlsZVNsaWRlcjIgPiBhIixmdW5jdGlvbihhKXtpZihhPWdldEFjdGl2ZVBhZ2UoKSl7dmFyIGI9IiIhPSQodGhpcykuYXR0cigiaHJlZiIpPyQodGhpcykuYXR0cigiaHJlZiIpOiJQb3B1cCI7c2VuZEdvb2dsZUFuYWx5dGljQmFubmVyQ2xpY2tlZEV2ZW50KGEsYil9fSk7CiQoZG9jdW1lbnQpLm9uKCJjbGljayIsIiN0b3BCYW5uZXJJbWFnZSIsZnVuY3Rpb24oYSl7KGE9Z2V0QWN0aXZlUGFnZSgpKSYmc2VuZEdvb2dsZUFuYWx5dGljQmFubmVyQ2xpY2tlZEV2ZW50KGEsIlBvcHVwIil9KTt2YXIgaG9tZVBhZ2VCYW5uZXJWaWV3PVtdOyQoZG9jdW1lbnQpLm9uKCJjbGljayIsIiNob21lcGFnZS1iYW5uZXIgI3NsaWRlciA+IGEiLGZ1bmN0aW9uKGEpeyhhPWdldEFjdGl2ZVBhZ2UoKSkmJiJBY2N1ZWlsIj09YSYmKGE9JCgiI3NsaWRlciIpLmRhdGEoIm5pdm86dmFycyIpLmN1cnJlbnRTbGlkZSsxLGdhVHJhY2soImMuX3RyYWNrRXZlbnQiLCJIb21lLXBhZ2Ugc2xpZGVyIiwiRGVza3RvcC1jbGljayIsYSwxKSl9KTsKJChkb2N1bWVudCkub24oIm5pdm9TbGlkZXJDaGFuZ2VkIG5pdm9TbGlkZXJMb2FkZWQiLCIjaG9tZXBhZ2UtYmFubmVyICNzbGlkZXIiLGZ1bmN0aW9uKGEpeyEoYT1nZXRBY3RpdmVQYWdlKCkpfHwiQWNjdWVpbCIhPWF8fDUwMDwkKGRvY3VtZW50KS5zY3JvbGxUb3AoKXx8KGE9JCgiI3NsaWRlciIpLmRhdGEoIm5pdm86dmFycyIpLmN1cnJlbnRTbGlkZSsxLDA+JC5pbkFycmF5KGEsaG9tZVBhZ2VCYW5uZXJWaWV3KSYmKGhvbWVQYWdlQmFubmVyVmlldy5wdXNoKGEpLGdhVHJhY2soImMuX3RyYWNrRXZlbnQiLCJIb21lLXBhZ2Ugc2xpZGVyIiwiRGVza3RvcC12aWV3IixhLDEpKSl9KTsKJChkb2N1bWVudCkub24oImNsaWNrIiwiI21vYmlsZVNsaWRlciAjbW9iaWxlU2xpZGVyMiA+IGEiLGZ1bmN0aW9uKGEpeyhhPWdldEFjdGl2ZVBhZ2UoKSkmJiJBY2N1ZWlsIj09YSYmKGE9JCgiI21vYmlsZVNsaWRlcjIiKS5kYXRhKCJuaXZvOnZhcnMiKS5jdXJyZW50U2xpZGUrMSxnYVRyYWNrKCJjLl90cmFja0V2ZW50IiwiSG9tZS1wYWdlIHNsaWRlciIsIk1vYmlsZS1jbGljayIsYSwxKSl9KTsKJChkb2N1bWVudCkub24oIm5pdm9TbGlkZXJDaGFuZ2VkIG5pdm9TbGlkZXJMb2FkZWQiLCIjbW9iaWxlU2xpZGVyICNtb2JpbGVTbGlkZXIyIixmdW5jdGlvbihhKXshKGE9Z2V0QWN0aXZlUGFnZSgpKXx8IkFjY3VlaWwiIT1hfHwzNTA8JChkb2N1bWVudCkuc2Nyb2xsVG9wKCl8fChhPSQoIiNtb2JpbGVTbGlkZXIyIikuZGF0YSgibml2bzp2YXJzIikuY3VycmVudFNsaWRlKzEsMD4kLmluQXJyYXkoYSxob21lUGFnZUJhbm5lclZpZXcpJiYoaG9tZVBhZ2VCYW5uZXJWaWV3LnB1c2goYSksZ2FUcmFjaygiYy5fdHJhY2tFdmVudCIsIkhvbWUtcGFnZSBzbGlkZXIiLCJNb2JpbGUtdmlldyIsYSwxKSkpfSk7CmZ1bmN0aW9uIHRocmVzaG9sZFBvcHVwKCl7dmFyIGE9Z2V0VXJsVmFycygpO2lmKG51bGw9PUNvb2tpZXMuZ2V0KCJwb3B1cFNob3duIil8fCJ1bmRlZmluZWQiIT10eXBlb2YgYS5kZWJ1ZylzaG93UG9wdXBXaWRnZXQoe2RvTm90UmVkaXJlY3Q6ITB9KSxDb29raWVzLnNldCgicG9wdXBTaG93biIsIjEiLDkwLCIvIil9ZnVuY3Rpb24gX2xvY2FsU3RvcmFnZVNldChhLGIsYyl7Yz04NjRFNSooY3x8MSk7Yj17dmFsdWU6YixleHBpcnk6KG5ldyBEYXRlKS5nZXRUaW1lKCkrY307bG9jYWxTdG9yYWdlLnNldEl0ZW0oYSxKU09OLnN0cmluZ2lmeShiKSl9ZnVuY3Rpb24gX2xvY2FsU3RvcmFnZUdldChhKXt2YXIgYj1sb2NhbFN0b3JhZ2UuZ2V0SXRlbShhKTtpZighYilyZXR1cm4gbnVsbDtiPUpTT04ucGFyc2UoYik7cmV0dXJuKG5ldyBEYXRlKS5nZXRUaW1lKCk+Yi5leHBpcnk\/KGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGEpLG51bGwpOmIudmFsdWV9CmZ1bmN0aW9uIF9sb2NhbFN0b3JhZ2VSZW1vdmUoYSl7aWYoIWxvY2FsU3RvcmFnZS5nZXRJdGVtKGEpKXJldHVybiBudWxsO2xvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGEpO3JldHVybiBudWxsfWZ1bmN0aW9uIGdlbmVyYXRlVW5pcXVlSWQoKXtyZXR1cm4iaWQtIitEYXRlLm5vdygpKyItIitNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKX1jb25zdCBpbml0VG9vbHRpcHM9KCk9Pnt0cnl7ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtcG9wcGVyXSIpLmZvckVhY2goYT0+e1Rvb2x0aXAoYSkuY3JlYXRlKCl9KX1jYXRjaChhKXtjb25zb2xlLmxvZygiVG9vbHRpcCBvYmplY3Qgbm90IGZvdW5kIil9fTsKZnVuY3Rpb24gaGFuZGxlQ29va2llQ29udGVudCgpe2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLWNvb2tpZWhpZGVdIikuZm9yRWFjaChhPT57bGV0IGI9YS5kYXRhc2V0LmNvb2tpZWhpZGU7Yi5sZW5ndGgmJkNvb2tpZXMuZ2V0KGIpJiYoYS5oaWRkZW49ITApfSk7ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtY29va2llc2hvd10iKS5mb3JFYWNoKGE9PntsZXQgYj1hLmRhdGFzZXQuY29va2llc2hvdztiLmxlbmd0aCYmQ29va2llcy5nZXQoYikmJihhLmhpZGRlbj0hMSl9KX12YXIgc2l0ZVBhZ2U9e307CmNvbnN0IGRvY1JlYWR5PWZ1bmN0aW9uKCl7X2xvY2FsU3RvcmFnZUdldCgiZDJjLXVpZCIpfHxfbG9jYWxTdG9yYWdlU2V0KCJkMmMtdWlkIixnZW5lcmF0ZVVuaXF1ZUlkKCksMik7aWYoImNvbXBsZXRlIj09PWRvY3VtZW50LnJlYWR5U3RhdGUpe2xldCBhO2NvbnNvbGUubG9nKCJHU1BFRUQtRE9DUkVBRFkgQ09NUExFVEU6IisoRGF0ZS5ub3coKS0obnVsbCE9KGE9d2luZG93LmdUZXN0U3BlZWRDb25uKT9hOjApKS8xRTMpO2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5za2VsZXRvbi10eHQiKS5mb3JFYWNoKGI9PntiLmNsYXNzTGlzdC50b2dnbGUoInNrZWxldG9uLXR4dCIsITEpfSk7ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLnNrZWxldG9uLXNsaWRlciIpLmZvckVhY2goYj0+e2IuY2xhc3NMaXN0LnRvZ2dsZSgic2tlbGV0b24tc2xpZGVyIiwhMSl9KTt3aW5kb3cuZ1NrZWxldG9uSXNSZW1vdmVkPSEwO3NpdGVQYWdlPXtuYW1lOiJ1bmRlZmluZWQiIT10eXBlb2YgcGFnZT8KcGFnZToiIixpc01vYmlsZToiMSI9PShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaXNtb2JpbGUiKXx8IiIpLnZhbHVlLGxhbmc6KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhY3RpdmVzaXRlbGFuZ3VhZ2UiKXx8IiIpLnZhbHVlfHwiRlJFTkNIIn07aGFuZGxlQ29va2llQ29udGVudCgpO2luaXRUb29sdGlwcygpO2RvY1JlYWR5QXJyLmZvckVhY2goYj0+YigpKTtkb2NSZWFkeUFycj1bXX1lbHNle2xldCBhO2lmKCJpbnRlcmFjdGl2ZSI9PT1kb2N1bWVudC5yZWFkeVN0YXRlJiZ3aW5kb3cuZ1Jlc291cmNlTG9hZGVyQW5kSnF1ZXJ5SXNSZWFkeSYmITE9PT0obnVsbCE9KGE9d2luZG93LmdTa2VsZXRvbklzUmVtb3ZlZCk\/YTohMSkpe2xldCBiO2NvbnNvbGUubG9nKCJHU1BFRUQtRE9DUkVBRFkgSU5URVJBQ1RJVkU6IisoRGF0ZS5ub3coKS0obnVsbCE9KGI9d2luZG93LmdUZXN0U3BlZWRDb25uKT9iOjApKS8xRTMpO2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5za2VsZXRvbi10eHQiKS5mb3JFYWNoKGM9Pgp7Yy5jbGFzc0xpc3QudG9nZ2xlKCJza2VsZXRvbi10eHQiLCExKX0pO2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5za2VsZXRvbi1zbGlkZXIiKS5mb3JFYWNoKGM9PntjLmNsYXNzTGlzdC50b2dnbGUoInNrZWxldG9uLXNsaWRlciIsITEpfSk7d2luZG93LmdTa2VsZXRvbklzUmVtb3ZlZD0hMH1zZXRUaW1lb3V0KGRvY1JlYWR5LDUwKX19O2RvY1JlYWR5KCk7CiQoZnVuY3Rpb24oKXt2YXIgYT0hMDskKHdpbmRvdykub24oInNjcm9sbCIsZnVuY3Rpb24oKXt2YXIgZD0kKGRvY3VtZW50KS5oZWlnaHQoKSxlPSQod2luZG93KS5oZWlnaHQoKSskKHdpbmRvdykuc2Nyb2xsVG9wKCk7LjA1PihkLWUpL2QmJmEmJihhPSExLCJ1bmRlZmluZWQiIT09dHlwZW9mIGdhVHJhY2smJmdhVHJhY2soIl90cmFja0V2ZW50IiwiQm90dG9tIG9mIHBhZ2UgcmVhY2hlZCIsJCgnaW5wdXRbbmFtZT0idGFyZ2V0UGFnZSJdJykudmFsKCksd2luZG93LmxvY2F0aW9uLmhyZWYsMSkpfSk7JCgiLmVtYmVkLWNvbnRhaW5lci15b3V0dWJlIikucGFyZW50KCIud3JhcHBlciIpLnJlbW92ZUNsYXNzKCJ3cmFwcGVyIik7aWYoJCgiI2lzQnJhbmRQYWdlIikubGVuZ3RoKXt2YXIgYj1nZXRVcmxWYXJzKCk7aWYoYi5rdyYmLTEhPWIua3cudG9Mb3dlckNhc2UoKS5pbmRleE9mKCJjYW5hZGEiKSl7dmFyIGM9JCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpJiYiRU5HTElTSCI9PQokKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCk\/ImVuIjoiZnIiO2I9ImVuIj09Yz8iSGVyZSB3ZSBvZmZlciB0aGUgYmVzdCBwcmljZXMiOiJJY2kgb24gb2ZmcmUgbGVzIG1laWxsZXVycyBwcml4IjtjPSJlbiI9PWM\/Im9uICIrJCgiI2lzQnJhbmRQYWdlIikudmFsKCkrIidzIGluIENhbmFkYSI6JCgiI2lzQnJhbmRQYWdlIikudmFsKCkrIiBhdSBDYW5hZGEiOyQoIiNkZWZhdWx0VG9wQmFubmVyVGl0bGUiKS50ZXh0KGIpOyQoIiNkZWZhdWx0VG9wQmFubmVyVGV4dCIpLnRleHQoYyl9fSQoIiNmaW5hbmNlTXVsdGlzdGVwUG9wdXBDb250YWluZXIiKS5sZW5ndGgmJihiPWdldFVybFZhcnMoKSxiLmZpbmFuY2Vwb3AmJiJ5ZXMiPT1iLmZpbmFuY2Vwb3AmJnNldFRpbWVvdXQoKCk9PnskKCIjZmluYW5jZU11bHRpc3RlcFBvcHVwQ29udGFpbmVyIikucG9wdXBpemUoKS5vcGVuKCl9LDFFMykpOzA8JCgiLnRyYWRlc2lpLXJvb3QiKS50ZXh0KCkubGVuZ3RoPyQoIi50cmFkZXNpaS1yb290IikuY3NzKCJ6LWluZGV4IiwKMUUzKTpzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7JCgiLnRyYWRlc2lpLXJvb3QiKS5jc3MoInotaW5kZXgiLDFFMyl9LDFFMyl9KTtmdW5jdGlvbiBhZGRNYXhMZW5ndGgoKXskKCI6aW5wdXQiKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGE9JCh0aGlzKS5hdHRyKCJ0eXBlIiksYj0kKHRoaXMpLmF0dHIoIm1heGxlbmd0aCIpO2lmKHZvaWQgMD09Ynx8bnVsbD09Ynx8IiI9PWIpInRleHQiPT1hfHwidGVsIj09YXx8ImVtYWlsIj09YXx8InVybCI9PWE\/JCh0aGlzKS5wcm9wKCJtYXhsZW5ndGgiLDI1Nik6Im51bWJlciI9PWEmJigkKHRoaXMpLnByb3AoIm9uaW5wdXQiLCJ0aGlzLnZhbHVlPXRoaXMudmFsdWUuc2xpY2UoMCx0aGlzLm1heGxlbmd0aCkiKSwkKHRoaXMpLnByb3AoIm1heGxlbmd0aCIsMjU2KSl9KX1kb2NSZWFkeUFyci5wdXNoKCgpPT57JCgiLnJldmVhbC1tb2RhbCIpLm9uKCJwb3B1cGl6ZXIub25PcGVuIixmdW5jdGlvbigpe2FkZE1heExlbmd0aCgpfSk7YWRkTWF4TGVuZ3RoKCl9KTsKKGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoZCxlKXt0aGlzLmVsPWQ7dGhpcy4kZWw9YShkKTtpZih2b2lkIDA9PT1lfHwib2JqZWN0Ij09PXR5cGVvZiBlKXRoaXMuc2V0dGluZ3M9YS5leHRlbmQoYyxlKTt0aGlzLmluaXQoKX12YXIgYz17bGF0OiIiLGxvbmc6IiIscG9zdGFsOiIiLHJhdGlvOi42ODg1LHdpZHRoOiJhdXRvIn07Yi5wcm90b3R5cGU9e2luaXQ6ZnVuY3Rpb24oKXt2YXIgZD10aGlzLiRlbC5pcygiLmxhenlsb2FkIik\/ImRhdGEtaW1nc3JjIjoic3JjIjt0aGlzLiRlbC5hdHRyKGQsdGhpcy5nZXRVcmwoKSl9LGlzVmlzaWJsZTpmdW5jdGlvbigpe3ZhciBkPXRoaXMuJGVsLmF0dHIoIndpZHRoIik7cmV0dXJuISgiMHB4Ij09PXRoaXMuJGVsLmF0dHIoImhlaWdodCIpfHwiMHB4Ij09PWQpfSxnZXRXaWR0aDpmdW5jdGlvbigpe3RoaXMuJGVsLmF0dHIoIndpZHRoIik7dmFyIGQ9MDsiYXV0byI9PT10aGlzLnNldHRpbmdzLndpZHRofHwiYXV0byI9PT10aGlzLiRlbC5kYXRhKCJ3aWR0aCIpPwpkPXRoaXMuJGVsLnBhcmVudCgpLmNzcygid2lkdGgiKTppc05hTihwYXJzZUludCh0aGlzLnNldHRpbmdzLndpZHRoKSk\/dm9pZCAwIT09dGhpcy4kZWwuYXR0cigid2lkdGgiKSYmKGQ9dGhpcy4kZWwuYXR0cigid2lkdGgiKSk6ZD10aGlzLnNldHRpbmdzLndpZHRoO3RoaXMuJGVsLmF0dHIoIndpZHRoIixkKTtyZXR1cm4gcGFyc2VJbnQoZC5yZXBsYWNlKCJweCIsIiIpKX0sZ2V0SGVpZ2h0OmZ1bmN0aW9uKCl7dmFyIGQ9ImF1dG8iPT09dGhpcy5zZXR0aW5ncy53aWR0aHx8ImF1dG8iPT09dGhpcy4kZWwuZGF0YSgid2lkdGgiKT9NYXRoLnJvdW5kKHRoaXMuZ2V0V2lkdGgoKSp0aGlzLnNldHRpbmdzLnJhdGlvKSsicHgiOnRoaXMuJGVsLnBhcmVudCgpLmNzcygiaGVpZ2h0Iik7dGhpcy4kZWwuYXR0cigiaGVpZ2h0IixkKTtyZXR1cm4gcGFyc2VJbnQoZC5yZXBsYWNlKCJweCIsIiIpKX0sZ2V0VXJsOmZ1bmN0aW9uKCl7dmFyIGQ9Z2V0RGF0YUF0dHJpYnV0ZXModGhpcy5lbCksCmU9dGhpcy5nZXRXaWR0aCgpLGs9dGhpcy5nZXRIZWlnaHQoKSxoPWQubGF0KyIsIitkLmxvbmcsbj1kLmhhc093blByb3BlcnR5KCJtYXJrZXJJY29uIik\/Imljb246IitkLm1hcmtlckljb24rInwiOiIiO2Q9YS5leHRlbmQoe3NpemU6ZSsieCIrayxjZW50ZXI6aCx6b29tOiIxMiIsbWFya2VyczpuK2h9LGQpO3JldHVybiJodHRwczovL21hcHMuZ29vZ2xlYXBpcy5jb20vbWFwcy9hcGkvc3RhdGljbWFwPyIrYS5wYXJhbShkKX0sZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuJGVsLnJlbW92ZURhdGEoKX19O2EuZm4uZ29vZ2xlU3RhdGljTWFwPWZ1bmN0aW9uKGQpe3ZhciBlPWFyZ3VtZW50cztpZigxPnRoaXMubGVuZ3RoKXJldHVybiB0aGlzO3RoaXMuZWFjaChmdW5jdGlvbigpe2lmKCFhLmRhdGEodGhpcywicGx1Z2luX3N0YXRpY01hcCIpKXJldHVybiBhLmRhdGEodGhpcywicGx1Z2luX3N0YXRpY01hcCIsbmV3IGIodGhpcyxkKSksdGhpc30pO2lmKCJzdHJpbmciPT09dHlwZW9mIGQmJgoiXyIhPT1kWzBdJiYiaW5pdCIhPT1kKXsxPHRoaXMubGVuZ3RoJiZjb25zb2xlLmxvZygiZ29vZ2xlU3RhdGljTWFwIHdhcm5pbmcgY29kZSAxIik7dmFyIGs9YS5kYXRhKHRoaXMuZmlyc3QoKVswXSwicGx1Z2luX3N0YXRpY01hcCIpO3JldHVybiBrW2RdLmFwcGx5KGssQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSwxKSl9cmV0dXJuIHRoaXN9fSkoalF1ZXJ5KTtmdW5jdGlvbiBwYXJzZVF1ZXJ5KGEpe2lmKDE+YS5sZW5ndGgpcmV0dXJue307Zm9yKHZhciBiPXt9LGM9YS5zcGxpdCgiJiIpLGQ9MDtkPGMubGVuZ3RoO2QrKylhPWV4cGxvZGUoY1tkXSwiPSIsMSksYlthWzBdXT1hWzFdO3JldHVybiBifWZ1bmN0aW9uIGRlY29kZVN0cmluZyhhLGIpe2lmKCIiPT1ifHwidW5kZWZpbmVkIj09YiliPTE7Zm9yKGk9MDtpPGI7aSsrKWE9ZGVjb2RlVVJJQ29tcG9uZW50KGEpO3JldHVybiBhfQpmdW5jdGlvbiBleHBsb2RlKGEsYixjKXthPWEuc3BsaXQoYik7aWYoYS5sZW5ndGg8PWMpcmV0dXJuIGE7Yz1hLnNwbGljZSgwLGMpO2MucHVzaChhLmpvaW4oYikpO3JldHVybiBjfWZ1bmN0aW9uIGdldFVybFZhcnMoKXt2YXIgYT13aW5kb3cubG9jYXRpb24uc2VhcmNoLnN1YnN0cmluZygxKTtyZXR1cm4gcGFyc2VRdWVyeShhKX1mdW5jdGlvbiBnZXRDb29raWUoYSl7cmV0dXJuIENvb2tpZXMuZ2V0KGEpfWZ1bmN0aW9uIHNldENvb2tpZShhLGIsYyl7Q29va2llcy5zZXQoYSxiLGMsIi8iKX1mdW5jdGlvbiBnZXRDb29raWVEMmMoYSl7cmV0dXJuIENvb2tpZXMuZ2V0KGEpfWZ1bmN0aW9uIHNldENvb2tpZUQyYyhhLGIsYyl7Q29va2llcy5zZXQoYSxiLGMsIi8iKX1mdW5jdGlvbiBpc1NTTCgpe3JldHVybiJodHRwczoiPT09d2luZG93LmxvY2F0aW9uLnByb3RvY29sfWZ1bmN0aW9uIHNldFNlc3Npb25Db29raWUoYSxiKXtDb29raWVzLnNldChhLGIsMCwiLyIpfQpmdW5jdGlvbiBpbml0TENJKGEsYil7aWYoMjA8YilyZXR1cm4gYjtiPWI\/YjowO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgTENfQVBJfHwidW5kZWZpbmVkIj09dHlwZW9mIExDX0ludml0ZSlzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aW5pdExDSShhLCsrYil9LDUwMCk7ZWxzZSBpZigidW5kZWZpbmVkIiE9dHlwZW9mIExDX0FQSSYmInVuZGVmaW5lZCIhPXR5cGVvZiBMQ19JbnZpdGUmJmEpcmV0dXJuIExDX0FQSS5zZXRfY3VzdG9tX3ZhcmlhYmxlcyhhKX1mdW5jdGlvbiBnZXRSZWZlcnJlclZhckZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbigpeyIiPT1hJiYoYT1kb2N1bWVudC5yZWZlcnJlcik7dmFyIGI9YS5pbmRleE9mKCI\/IikrMTtyZXR1cm4gMDxiPyhiPWEuc2xpY2UoYikscGFyc2VRdWVyeShiKSk6e319fQooZnVuY3Rpb24oYSl7dmFyIGI9e2NhbGxiYWNrczpbXSxoYXNTY3JpcHQ6ZnVuY3Rpb24oKXt2YXIgZT1hKCdoZWFkIHNjcmlwdFtzcmMqPSJtYXBzLmpzLnBocCJdJyk7cmV0dXJuIDA9PWUubGVuZ3RoPyExOi9tYXBzXC5qcy8udGVzdChlLmF0dHIoInNyYyIpKX0sbG9hZDpmdW5jdGlvbihlKXtpZihiLmhhc1NjcmlwdCgpKSJ1bmRlZmluZWQiPT09dHlwZW9mIGdvb2dsZT9iLmNhbGxiYWNrcy5wdXNoKGUpOmUoKTtlbHNle2IuY2FsbGJhY2tzLnB1c2goZSk7dHJ5e3ZhciBrPSJFTkdMSVNIIj09YSgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpPyJlbiI6ImZyIjsoZnVuY3Rpb24oaCxuLHgsdixmKXtoW2ZdJiZoW2ZdLm1hcHN8fChoPW4uY3JlYXRlRWxlbWVudCh4KSxuPW4uZ2V0RWxlbWVudHNCeVRhZ05hbWUoeClbMF0saC5zcmM9dixoLmFzeW5jPSExLGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcigiZ29vZ2xlTWFwc0xvYWRlZCIsZz0+e2ZvcihnPTA7ZzxiLmNhbGxiYWNrcy5sZW5ndGg7ZysrKWIuY2FsbGJhY2tzW2ddLmNhbGwoKX0pLApuLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGgsbikpfSkod2luZG93LGRvY3VtZW50LCJzY3JpcHQiLCIvanMvbWFwcy5qcy5waHA\/bGFuZz0iK2ssImdvb2dsZSIpfWNhdGNoKGgpe2NvbnNvbGUubG9nKGgpfX19fSxjPXthdXRvQ29tcGxldGU6e2NvbXBvbmVudFJlc3RyaWN0aW9uczp7Y291bnRyeToiY2EifX0scmFkaXVzOjFFNX0sZD1mdW5jdGlvbihlLGspe3ZhciBoPXRoaXM7aC5lbD1lO2guJGVsPWEoZSk7aC5zZXR0aW5ncz1hLmV4dGVuZChjLGspO2guYWRkcmVzcz17Y2l0eToiIixzdHJlZXRfbnVtYmVyOiIiLHN0cmVldDoiIixzdWJsb2NhbGl0eToiIixwcm92aW5jZToiIixjb3VudHJ5OiIiLHBvc3RhbDoiIn07aC4kZWwub25lKCJmb2N1cyIsZnVuY3Rpb24oKXtoLmluaXQoKX0pfTtkLnByb3RvdHlwZT17X2NoZWNrRm9yR29vZ2xlTWFwczpmdW5jdGlvbihlKXsidW5kZWZpbmVkIj09PXR5cGVvZiBnb29nbGV8fCJ1bmRlZmluZWQiPT09dHlwZW9mIGdvb2dsZS5tYXBzPwpiLmxvYWQoZSk6ImZ1bmN0aW9uIj09PXR5cGVvZiBlJiZlLmNhbGwoKX0sZ2V0QWRkcmVzczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmFkZHJlc3N9LF9zZXRBZGRyZXNzOmZ1bmN0aW9uKGUpe3ZhciBrPXRoaXM7YS5lYWNoKGUsZnVuY3Rpb24oaCxuKXtzd2l0Y2goITApe2Nhc2UgLTE8YS5pbkFycmF5KCJzdHJlZXRfbnVtYmVyIixuLnR5cGVzKTprLmFkZHJlc3Muc3RyZWV0X251bWJlcj1uO2JyZWFrO2Nhc2UgLTE8YS5pbkFycmF5KCJyb3V0ZSIsbi50eXBlcyk6ay5hZGRyZXNzLnN0cmVldD1uO2JyZWFrO2Nhc2UgLTE8YS5pbkFycmF5KCJzdWJsb2NhbGl0eSIsbi50eXBlcyk6ay5hZGRyZXNzLnN1YmxvY2FsaXR5PW47YnJlYWs7Y2FzZSAtMTxhLmluQXJyYXkoImxvY2FsaXR5IixuLnR5cGVzKTpjYXNlIC0xPGEuaW5BcnJheSgiYWRtaW5pc3RyYXRpdmVfYXJlYV9sZXZlbF8zIixuLnR5cGVzKToiIj09ay5hZGRyZXNzLmNpdHkmJihrLmFkZHJlc3MuY2l0eT1uKTticmVhazsKY2FzZSAtMTxhLmluQXJyYXkoImFkbWluaXN0cmF0aXZlX2FyZWFfbGV2ZWxfMSIsbi50eXBlcyk6ay5hZGRyZXNzLnByb3ZpbmNlPW47YnJlYWs7Y2FzZSAtMTxhLmluQXJyYXkoImNvdW50cnkiLG4udHlwZXMpOmsuYWRkcmVzcy5jb3VudHJ5PW47YnJlYWs7Y2FzZSAtMTxhLmluQXJyYXkoInBvc3RhbF9jb2RlIixuLnR5cGVzKTprLmFkZHJlc3MucG9zdGFsPW59fSl9LF9zZXRTZWFyY2hCb3VuZHM6ZnVuY3Rpb24oZSxrLGgpe2s9bmV3IGdvb2dsZS5tYXBzLkxhdExuZyhrLGgpO2s9bmV3IGdvb2dsZS5tYXBzLkNpcmNsZSh7Y2VudGVyOmsscmFkaXVzOnRoaXMuc2V0dGluZ3MucmFkaXVzfSk7ZS5zZXRCb3VuZHMoay5nZXRCb3VuZHMoKSl9LGluaXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2UuX2NoZWNrRm9yR29vZ2xlTWFwcyhmdW5jdGlvbigpe3ZhciBrPW5ldyBnb29nbGUubWFwcy5HZW9jb2RlcixoPW5ldyBnb29nbGUubWFwcy5wbGFjZXMuQXV0b2NvbXBsZXRlKGUuZWwsCmUuc2V0dGluZ3MuYXV0b0NvbXBsZXRlKTtlLnNldHRpbmdzLmhhc093blByb3BlcnR5KCJsYXQiKSYmZS5zZXR0aW5ncy5oYXNPd25Qcm9wZXJ0eSgibG9uZyIpPyIiIT09ZS5zZXR0aW5ncy5sYXQmJiIiIT09ZS5zZXR0aW5ncy5sb25nJiZlLl9zZXRTZWFyY2hCb3VuZHMoaCxlLnNldHRpbmdzLmxhdCxlLnNldHRpbmdzLmxvbmcpOmUuc2V0dGluZ3MuaGFzT3duUHJvcGVydHkoImFkZHJlc3MiKT9lLnNldHRpbmdzLmFkZHJlc3MmJmsuZ2VvY29kZSh7YWRkcmVzczplLnNldHRpbmdzLmFkZHJlc3N9LGZ1bmN0aW9uKG4seCl7ZS5fc2V0U2VhcmNoQm91bmRzKGgsblswXS5nZW9tZXRyeS5sb2NhdGlvbi5sYXQoKSxuWzBdLmdlb21ldHJ5LmxvY2F0aW9uLmxuZygpKX0pOiJ1bmRlZmluZWQiIT09dHlwZW9mIGZvb3Rlck1hcEFkZHJlc3MmJjA8Zm9vdGVyTWFwQWRkcmVzcy5sZW5ndGgmJmsuZ2VvY29kZSh7YWRkcmVzczpmb290ZXJNYXBBZGRyZXNzWzBdLmFkZHJlc3N9LGZ1bmN0aW9uKG4sCngpe2UuX3NldFNlYXJjaEJvdW5kcyhoLG5bMF0uZ2VvbWV0cnkubG9jYXRpb24ubGF0KCksblswXS5nZW9tZXRyeS5sb2NhdGlvbi5sbmcoKSl9KTtnb29nbGUubWFwcy5ldmVudC5hZGRMaXN0ZW5lcihoLCJwbGFjZV9jaGFuZ2VkIixmdW5jdGlvbigpe3ZhciBuPWguZ2V0UGxhY2UoKTtlLl9zZXRBZGRyZXNzKG4uYWRkcmVzc19jb21wb25lbnRzKTtlLiRlbC52YWwobi5mb3JtYXR0ZWRfYWRkcmVzcyk7bj1uZXcgRXZlbnQoImlucHV0Iik7ZS5lbC5kaXNwYXRjaEV2ZW50KG4pO2UuJGVsLnRyaWdnZXIoImZvY3VzIil9KX0pfX07YS5mbi5nb29nbGVQbGFjZXM9ZnVuY3Rpb24oZSl7dmFyIGs9YXJndW1lbnRzO2lmKHZvaWQgMD09PWV8fCJvYmplY3QiPT09dHlwZW9mIGUpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2EuZGF0YSh0aGlzLCJwbHVnaW5fcGxhY2VzIil8fGEuZGF0YSh0aGlzLCJwbHVnaW5fcGxhY2VzIixuZXcgZCh0aGlzLGUpKX0pO2lmKCJzdHJpbmciPT09dHlwZW9mIGUmJgoiXyIhPT1lWzBdJiYiaW5pdCIhPT1lKXt2YXIgaD1hLmRhdGEodGhpc1swXSwicGx1Z2luX3BsYWNlcyIpO3JldHVybiBoW2VdLmFwcGx5KGgsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoaywxKSl9fX0pKGpRdWVyeSk7CmZ1bmN0aW9uIHNob3dCYW5uZXJQb3B1cChhKXt0cnl7JChhKS5oYXNDbGFzcygidHJhZGVpbkxpbmsiKSYmKDA8YS5nZXRBdHRyaWJ1dGUoInRhcmdldFVSSSIpLmluZGV4T2YoInRyYWRlaW52YWx1ZXMiKXx8MDxhLmdldEF0dHJpYnV0ZSgidGFyZ2V0VVJJIikuaW5kZXhPZigiaW5zdGFudG9mZmVyLmFjY3UtdHJhZGUuY29tIikpP3Nob3dUcmFkZUluUG9wdXAoYS5nZXRBdHRyaWJ1dGUoInRhcmdldFVSSSIpKTowPCQoIiNiYW5uZXJQb3B1cENvbnRhaW5lciIpLmxlbmd0aCYmJCgiI2Jhbm5lclBvcHVwQ29udGFpbmVyIikucG9wdXBpemUoKS5zZXRUcmlnZ2VyKCJjbGljayIpLm9wZW4oKX1jYXRjaChiKXtjb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coIlVuYWJsZSB0byBkaXNwbGF5IHRyYWRlaW52YWx1ZXMgaWZyYW1lLiBFcnJvcjogIitiLm1lc3NhZ2UpfX0KJChmdW5jdGlvbigpezA8JCgnaW5wdXRbZGF0YS1nb29nbGUtcGxhY2VzPSJ0cnVlIl0nKS5sZW5ndGgmJiQoJ2lucHV0W2RhdGEtZ29vZ2xlLXBsYWNlcz0idHJ1ZSJdJykuZ29vZ2xlUGxhY2VzKCk7InVuZGVmaW5lZCIhPT10eXBlb2YgJC5mbi5kYXJrVG9vbHRpcCYmKCQoIiNzb2NpYWxfbWVkaWFfaWNvbnNfZGl2IGEsIC5nUmF0aW5nLWljb24iKS5kYXJrVG9vbHRpcCh7Z3Jhdml0eToibm9ydGgiLG9wYWNpdHk6MX0pLCQoIi5zb2NpYWwtbWVkaWEtaWNvbnMgW2RhdGEtdG9vbHRpcF0iKS5kYXJrVG9vbHRpcCh7Z3Jhdml0eToic291dGgiLG9wYWNpdHk6MX0pLCQoIiNtaXRzdWJpc2hpQ2VydGlmaWVkRm9vdGVyIGEuc29jaWFsLW1lZGlhX19pY29uLCAjaHl1bmRhaUNlcnRpZmllZEZvb3RlciBhLnNvY2lhbC1tZWRpYV9faWNvbiIpLmRhcmtUb29sdGlwKHtncmF2aXR5OiJzb3V0aCIsb3BhY2l0eToxfSkpO3ZhciBhPSQoIi5ncmF5Ym94LnVzZWREZXRhaWxzUGhvbmUsIC5ncmF5Ym94Lm5ld0RldGFpbHNQaG9uZSIpOwowPT09YS5jaGlsZHJlbigpLmxlbmd0aCYmMD09PWEudGV4dCgpLnRyaW0oKS5sZW5ndGgmJmEuaGlkZSgpfSk7JCgiI2ZpbmFuY2VBbHREaXNwbGF5IC5zdGVwMSBiaWcudGV4dCBiaWciKS5hdHRyKCJkYXRhLWRlcGFydG1lbnQiLCJGaW5hbmNlIik7JCgiLmNyZWRpdF9tX2NhbGx1c193cmFwcGVyIGEiKS5hdHRyKCJkYXRhLWRlcGFydG1lbnQiLCJGaW5hbmNlIik7CiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7JCgiI2RpdkNlcnRpZmljYXRpb24tY2FyZ3VydXMtd3JhcHBlciIpLmxlbmd0aCYmKGVsZW1lbnRUb09ic2VydmU9d2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXZDZXJ0aWZpY2F0aW9uLWNhcmd1cnVzLXdyYXBwZXIiKS5jaGlsZHJlblswXSxvYnNlcnZlcj1uZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihhLGIpe2I9JCgiI2RpdkNlcnRpZmljYXRpb24tY2FyZ3VydXMtd3JhcHBlciIpO2xldCBjPSQoInNwYW5bZGF0YS1jZy1lcnJvcl0iLGIpO2NvbnNvbGUubG9nKCJEMkNHIixiLGMsYSk7Yy5sZW5ndGgmJmIucmVtb3ZlKCl9KSxvYnNlcnZlci5vYnNlcnZlKGVsZW1lbnRUb09ic2VydmUse2NoYXJhY3RlckRhdGE6ITEsY2hpbGRMaXN0OiEwLGF0dHJpYnV0ZXM6ITF9KSl9KTskKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpey0xPHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9uZXcvIil8fCQoIiNuZXctdmRwLXNwZWMtYnJvY2h1cmUiKS5oaWRlKCl9KTsKJChmdW5jdGlvbigpeyQoIiNGb290ZXJfRklOQU5DRSA+IGEsIGEjRmluYW5jZUFjdGlvbkJveCwgYSNGaW5hbmNlQWN0aW9uQm94TGluayIpLm9uKCJtb3VzZWVudGVyIG1vdXNlbGVhdmUiLGZ1bmN0aW9uKCl7dmFyIGE9JCh0aGlzKSxiPSQoImh0bWwiKS5hdHRyKCJsYW5nIik7aWYoMDwkKCIjREVBTEVSUEFDT0RFIikubGVuZ3RoKXt2YXIgYz0kKCIjREVBTEVSUEFDT0RFIikudmFsKCksZD0kKCIjREVBTEVSQlJBTkRfUFJJTUFSWSIpLnZhbCgpLnRvTG93ZXJDYXNlKCk7aWYoImZvcmRfbGluY29sbl9leHRlcm5hbCI9PSQoIiNGSU5BTkNFRk9STVRZUEUiKS52YWwoKSYmKCJmb3JkIj09ZHx8ImxpbmNvbG4iPT1kKSYmIiIhPWMpe3ZhciBlPSgiZW4iPT1iPyJodHRwczovL3d3dy5mb3JkLmNhL2ZpbmFuY2UvYXBwbHkvMT9Tb3VyY2VPZkRhdGE9Q0FEQ0YmZGVhbGVySWQ9IjoiaHR0cHM6Ly9mci5mb3JkLmNhL2ZpbmFuY2UvYXBwbHkvMT9Tb3VyY2VPZkRhdGE9Q0FEQ0YmZGVhbGVySWQ9IikrCmM7Yj0oImVuIj09Yj8iaHR0cHM6Ly93d3cubGluY29sbmNhbmFkYS5jb20vZmluYW5jZS9hcHBseS8xP1NvdXJjZU9mRGF0YT1DQURDTCZkZWFsZXJJZD0iOiJodHRwczovL2ZyLmxpbmNvbG5jYW5hZGEuY29tL2ZpbmFuY2UvYXBwbHkvMT9Tb3VyY2VPZkRhdGE9Q0FEQ0wmZGVhbGVySWQ9IikrYzthLm9mZigiY2xpY2siKTthLmF0dHIoImhyZWYiLCJmb3JkIj09ZD9lOmIpO2EuYXR0cigidGFyZ2V0IiwiX2JsYW5rIil9fX0pfSk7CiQod2luZG93KS5vbigibG9hZCIsZnVuY3Rpb24oKXt0cnl7aWYoZ2V0UGFyYW1ldGVyQnlOYW1lKCJwcm9tbyIpKXt2YXIgYT0wPGFjdGl2YXRlZFBvcHVwRGl2SUQubGVuZ3RoP2FjdGl2YXRlZFBvcHVwRGl2SUQ6ITE7aWYoYSYmMDxhLmxlbmd0aCl7dmFyIGI9JCgiIyIrYSkucG9wdXBpemUoe3ByaW9yaXR5OjEwMCxlbmRQb3B1cFF1ZXVlOiEwfSk7cG9wdXBTdXBlcnZpc29yLnJlZ2lzdGVyKGIpfX0ib2JqZWN0Ij09dHlwZW9mIHBvcHVwU3VwZXJ2aXNvciYmc2V0VGltZW91dChwb3B1cFN1cGVydmlzb3Iuc2hvdyw1MDApfWNhdGNoKGMpe2NvbnNvbGUubG9nKGMpfX0pOwokKGZ1bmN0aW9uKCl7JCgiLm5hdiBhIikub24oImNsaWNrIixmdW5jdGlvbihhKXsidW5kZWZpbmVkIiE9dHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nJiYidW5kZWZpbmVkIiE9dHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nLmxvZ1BhZ2VWaWV3RXZlbnQmJigoYT0kKHRoaXMpLmF0dHIoImhyZWYiKSkmJiFSZWdFeHAoImphdmFzY3JpcHQ6IiwiZ2kiKS50ZXN0KGEpJiZhY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50KGEsIk1FTlVfY2xpY2tlZF9VUkwiKSwoYT0iLyI9PWE\/IkhvbWUiOiQodGhpcykudGV4dCgpKSYmYWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudChhLCJNRU5VX2NsaWNrZWRfSU5GTyIpKX0pfSk7CnZhciBEMkNVdGlscz17TGFuZzp7aXNFTjpmdW5jdGlvbigpe3JldHVybiEoImZ1bmN0aW9uIj09PXR5cGVvZiAkJiYkKCJCT0RZIikuaGFzQ2xhc3MoIkZSRU5DSCIpKX0sZ2V0U2hvcnRMYW5nOmZ1bmN0aW9uKGEpe3JldHVybiBEMkNVdGlscy5MYW5nLmlzRU4oKT9hPyJFTiI6ImVuIjphPyJGUiI6ImZyIn19LEZvcm1hdDp7dG9OdW1iZXI6ZnVuY3Rpb24oYSl7YT1hLnRvU3RyaW5nKCkuc3BsaXQoIi4iKTtmb3IodmFyIGI9LyhcZCspKFxkezN9KS87Yi50ZXN0KGFbMF0pOylhWzBdPWFbMF0ucmVwbGFjZShiLCIkMSwkMiIpO3JldHVybiBhWzBdfSx0b1ByaWNlOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGI\/KGI9RDJDVXRpbHMuTGFuZy5pc0VOKCk\/IiI6IiAkIixgJHtEMkNVdGlscy5MYW5nLmlzRU4oKT8iJCI6IiJ9JHtEMkNVdGlscy5Gb3JtYXQudG9OdW1iZXIoYSl9JHtifWApOmA8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj4ke0QyQ1V0aWxzLkZvcm1hdC50b051bWJlcihhKX08L3NwYW4+YH19LApOdW1iZXI6e3JvdW5kRG93bjpmdW5jdGlvbihhKXt2YXIgYj0yPT09YXJndW1lbnRzLmxlbmd0aD9wYXJzZUludChhcmd1bWVudHNbMV0pOjE7cmV0dXJuIE1hdGguZmxvb3IoYS9iKSpifSxyb3VuZFVwOmZ1bmN0aW9uKGEpe3ZhciBiPTI9PT1hcmd1bWVudHMubGVuZ3RoP3BhcnNlSW50KGFyZ3VtZW50c1sxXSk6MTtyZXR1cm4gTWF0aC5jZWlsKGEvYikqYn19LEFycmF5czp7ZmluZDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5sZW5ndGg7aWYoMDxkKWZvcih2YXIgZT0wO2U8ZDtlKyspaWYoYVtlXVtiXT09YylyZXR1cm4gYVtlXTtyZXR1cm4tMX19LFN0cmluZzp7Y2FwaXRhbGl6ZUZpcnN0TGV0dGVyOmZ1bmN0aW9uKGEpe3JldHVybiBTdHJpbmcoYSkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrU3RyaW5nKGEpLnNsaWNlKDEpfX0sTW9iaWxlOntpc01vYmlsZTpmdW5jdGlvbigpe3JldHVybiAwPCQoIiNpc01vYmlsZSIpLmxlbmd0aH19fTsKZnVuY3Rpb24gc2V0dXBGaW5hbmNpbmdMaW5rKGEsYil7NDg1PT0oJCgiI3NpdGVJRCIpLnZhbCgpfHwkKCIjdG9wc2l0ZWlkIikudmFsKCkpJiZiLmNsZWFyYW5jZSYmMDxhLmxlbmd0aCYmKGI9JCgiI01haW5NZW51X2Y0ODJiYWFiLWFhYzQtZWRhNi02YjUyLTMgPiBhIiksMD09Yi5sZW5ndGgmJihiPSQoIi5DTEVBUkFOQ0UiKS5wYXJlbnQoKS5maW5kKCIuc3VibWVudUl0ZW06Zmlyc3QtY2hpbGQiKSksMDxiLmxlbmd0aCYmKGI9Yi5hdHRyKCJocmVmIiksIiIhPT1iJiZhLmF0dHIoImhyZWYiLGIpKSl9dmFyIG9wZW5XaW5kb3dzPVtdLHdpbmRvd09wZW5PRz13aW5kb3cub3BlbjsKd2luZG93Lm9wZW49ZnVuY3Rpb24oKXt2YXIgYT13aW5kb3dPcGVuT0cuYXBwbHkodGhpcyxhcmd1bWVudHMpLGI9e3dpbmRvdzphLGFyZ3M6YXJndW1lbnRzfTtvcGVuV2luZG93cy5wdXNoKGIpOyJ1bmRlZmluZWQiIT09dHlwZW9mIGpRdWVyeSYmalF1ZXJ5KGRvY3VtZW50KS50cmlnZ2VyKCJ3aW5kb3cub3BlbiIsYik7cmV0dXJuIGF9OwokKGZ1bmN0aW9uKCl7JChkb2N1bWVudCkub24oIndpbmRvdy5vcGVuIixmdW5jdGlvbihhLGIpe2E9Yi5hcmdzO2Zvcih2YXIgYz0hMSxkPTA7ZDxhLmxlbmd0aDtkKyspaWYoLTE8YVtkXS5pbmRleE9mKCJjYXJmYXgiKXx8YVtkXS5pbmRleE9mKCJjYXJwcm9vZiIpKXtjPSEwO2JyZWFrfWlmKGMpe2E9d2luZG93LnNjcmVlbi5hdmFpbEhlaWdodHx8d2luZG93LmlubmVySGVpZ2h0fHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0fHxkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodDt0cnl7Yi53aW5kb3cucmVzaXplVG8oYi53aW5kb3cub3V0ZXJXaWR0aCxNYXRoLnJvdW5kKC45NSphKSl9Y2F0Y2goZSl7fX19KX0pOwokKGZ1bmN0aW9uKCl7dmFyIGE9JCgiLnVwX21lbnUiKSxiPSQoIi5wcm9tb3Rpb25TaWRlVkJ1dHRvbiIpLGM9JCgnI3NsaWRlaXQgPiBsYWJlbFtmb3I9Im9wZW4taXRlbSJdOm5vdCgudGV4dC11cy1idG4pJyk7aWYoYS5sZW5ndGgmJmIubGVuZ3RoKXt2YXIgZD0hMSxlPWZ1bmN0aW9uKCl7dmFyIGs9JCh3aW5kb3cpLnNjcm9sbFRvcCgpLGg9JCh3aW5kb3cpLmhlaWdodCgpO2s9YS5vZmZzZXQoKS50b3ArYS5vdXRlckhlaWdodCgpKzEwMC1rO2IuY3NzKHtwb3NpdGlvbjoiZml4ZWQiLHRvcDpNYXRoLm1heChoLzIsaykrInB4Iix0cmFuc2Zvcm06InRyYW5zbGF0ZVkoLTUwJSkiLHRyYW5zaXRpb246Im5vbmUifSk7Yy5sZW5ndGgmJihoPWJbMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tLGMuY3NzKHtwb3NpdGlvbjoiZml4ZWQiLHRvcDpoKzUrInB4In0pKTtkPSExfTskKHdpbmRvdykub24oInNjcm9sbCByZXNpemUiLGZ1bmN0aW9uKCl7ZHx8KHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZSksCmQ9ITApfSk7c2V0VGltZW91dChlLDEwMCl9fSk7ZnVuY3Rpb24gcmVwbGFjZVVzZWRWZWhpY2xlTW9kZWxEaXNwbGF5KGEpe2lmKCJzdHJpbmciPT09dHlwZW9mIGF8fGEgaW5zdGFuY2VvZiBTdHJpbmcpImZ1bmN0aW9uIj09PXR5cGVvZiAkJiYkKCJCT0RZIikuaGFzQ2xhc3MoIkZSRU5DSCIpfHwtMSE9PWEuaW5kZXhPZigiSHlicmlkZSIpJiYoYT1hLnJlcGxhY2UoIkh5YnJpZGUiLCJIeWJyaWQiKSk7cmV0dXJuIGF9CiQoZnVuY3Rpb24oKXtpZigkKCIucGF5cGFsX2J1dHRvbl9odG1sIikubGVuZ3RoKXt2YXIgYT0kKCJCT0RZIikuaGFzQ2xhc3MoIkZSRU5DSCIpPyJmciI6ImVuIixiPSQoIkJPRFkiKS5oYXNDbGFzcygiRlJFTkNIIik\/IlLDqXNlcnZlei1sZSBhdmVjIFBheVBhbCAhIjoiUmVzZXJ2ZSBpdCAgd2l0aCBQYXlQYWwgISI7JCgiLnBheXBhbF9idXR0b25faHRtbCIpLmZpbmQoJ2lucHV0W3R5cGU9ImltYWdlIl1bbmFtZT0ic3VibWl0Il0nKS5hdHRyKCJzcmMiLCIvaW1hZ2VzL2NvbnRpbnVlX3dpdGhfcGF5cGFsXyIrYSsiLnBuZyIpOyQoIi5wYXlwYWxfYnV0dG9uX2h0bWwiKS5maW5kKCJmb3JtIikuYXR0cigidGFyZ2V0IiwicGF5cGFsSWZyYW1lIik7JCgiLnBheXBhbF9idXR0b25faHRtbCIpLmZpbmQoInRhYmxlIHRyOmZpcnN0IHRkIikuY29udGVudHMoKS5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4gMz09dGhpcy5ub2RlVHlwZX0pLmZpcnN0KCkucmVwbGFjZVdpdGgoYik7JCgiLnBheXBhbF9idXR0b25faHRtbCBmb3JtIikuZmluZCgnW25hbWU9Iml0ZW1fbmFtZSJdJykucmVtb3ZlKCk7CiQoIi5wYXlwYWxfYnV0dG9uX2h0bWwgZm9ybSIpLmZpbmQoJ1tuYW1lPSJpdGVtX251bWJlciJdJykucmVtb3ZlKCk7YT0nPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXRlbV9uYW1lIiB2YWx1ZT0iJyskKCIjcGhvbmVtYWtlIikudmFsKCkrIiAiKyQoIiNwaG9uZW1vZGVsIikudmFsKCkrIiAiKyQoIiNwaG9uZW15ZWFyIikudmFsKCkrIiBTdG9jaygjIiskKCIjcGhvbmVzdG9ja251bWJlciIpLnZhbCgpKycpIj4nOyQoIi5wYXlwYWxfYnV0dG9uX2h0bWwgZm9ybSIpLmFwcGVuZChhKTskKCIucGF5cGFsX2J1dHRvbl9odG1sIikuZmluZCgnaW5wdXRbdHlwZT0iaW1hZ2UiXVtuYW1lPSJzdWJtaXQiXScpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtnYVRyYWNrKCJjLl90cmFja0V2ZW50IiwiQ2xpcXVlcyBQYXlQYWwiLCJPY2Nhc2lvbiIsJCgiI2hpZGRlbkRlYWxlck5hbWUiKS52YWwoKSsiLSIrJCgiI3Bob25lbWFrZSIpLnZhbCgpKyItIiskKCIjcGhvbmVtb2RlbCIpLnZhbCgpKwoiLSIrJCgiI3Bob25lbXllYXIiKS52YWwoKSsiLSIrJCgiI3Bob25lc3RvY2tudW1iZXIiKS52YWwoKSwxKX0pOyQoIiNwYXlwYWxQb3B1cCIpLmRldGFjaCgpLmFwcGVuZFRvKCJib2R5Iik7JCgnLnBheXBhbF9idXR0b25faHRtbCBpbnB1dFtuYW1lPSJzdWJtaXQiXScpLm9uKCJjbGljayIsZnVuY3Rpb24oKXskKCIjcGF5cGFsUG9wdXAiKS5wb3B1cGl6ZSgpLnNldFRyaWdnZXIoImNsaWNrIikub3BlbigpfSk7JCgiLnBheXBhbF9idXR0b25faHRtbCIpLnNob3coKX0kKCIjdGVzdERyaXZlVHlwZSIpLmxlbmd0aCYmKCJWaXJ0dWFsIj09JCgiI3Rlc3REcml2ZVR5cGUiKS52YWwoKXx8IlZpcnR1ZWwiPT0kKCIjdGVzdERyaXZlVHlwZSIpLnZhbCgpKSYmJCgiLnByZWZlcmVkVmlydHVhbFRvb2wiKS5zaG93KCl9KTsKZnVuY3Rpb24gcHJpY2VSZXF1ZXN0Q29tbWVudFRleHQoKXt2YXIgYT0kKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIiksYj0kKCIjaXNtb2JpbGUiKSxjPSQoIiNxdWVzdGlvbnNDb21tZW50cyIpO2E9IkVOR0xJU0giPT1hLnZhbCgpPyJIaSwgSSdkIGxpa2UgdG8gZ2V0IHlvdXIgYmVzdCBwcmljZSBvbiBhIDAgICI6IkJvbmpvdXIsIGonYWltZXJhaXMgYXZvaXIgdm90cmUgbWVpbGxldXJzIHByaXggcG91ciB1biAgIDAiOzA8Yi5sZW5ndGgmJiIxIj09Yi52YWwoKSYmMDxjLmxlbmd0aCYmYy52YWwoKT09YSYmYy52YWwoIiIpfSQoZnVuY3Rpb24oKXtwcmljZVJlcXVlc3RDb21tZW50VGV4dCgpfSk7CiQoZnVuY3Rpb24oKXt2YXIgYT0kKCIjZm9vdGVyIC5pY29uLXRleHQgc3BhbltpdGVtcHJvcD0ndGVsZXBob25lJ10gYS5waG9uZS1saW5rIiksYj0kKCIjZm9vdGVyIC5pY29uLXRleHQgLmZhLXBob25lIik7MDxhLmxlbmd0aCYmMDxiLmxlbmd0aCYmIiI9PWEuaHRtbCgpLnRyaW0oKSYmYi5oaWRlKCl9KTsKZnVuY3Rpb24gcGFnZVZpZXdDb3VudEdvb2dsZUV2ZW50KCl7dmFyIGE9d2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLGI9MCxjPXNlc3Npb25TdG9yYWdlLmdldEl0ZW0oImQyY19WRFBNViIpO251bGwhPWM\/KGM9SlNPTi5wYXJzZShjKSxiPW51bGwhPWNbYV0\/Y1thXTowLGNbYV09cGFyc2VJbnQoYikrMSk6KGM9e30sY1thXT0xKTthPSIxIj09JCgiI25ld1NlY3Rpb25PdmVycmlkZSIpLnZhbCgpPyJORVciOiQoIiNkZWZhdWx0RGVwYXJ0bWVudCIpLnZhbCgpOzA9PWI\/Z2FUcmFjaygiYy5fdHJhY2tFdmVudCIsIlZEUCBtdWx0aXBsZSB2aWV3cyIsYSwiMXgiLDEpOjE9PWI\/Z2FUcmFjaygiYy5fdHJhY2tFdmVudCIsIlZEUCBtdWx0aXBsZSB2aWV3cyIsYSwiMngiLDEpOmdhVHJhY2soImMuX3RyYWNrRXZlbnQiLCJWRFAgbXVsdGlwbGUgdmlld3MiLGEsIjN4KyIsMSk7c2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgiZDJjX1ZEUE1WIixKU09OLnN0cmluZ2lmeShjKSl9CiQuZm4uaXNJblZpZXdwb3J0PWZ1bmN0aW9uKCl7dmFyIGE9JCh0aGlzKS5vZmZzZXQoKS50b3AsYj1hKyQodGhpcykub3V0ZXJIZWlnaHQoKSxjPSQod2luZG93KS5zY3JvbGxUb3AoKSxkPWMrJCh3aW5kb3cpLmhlaWdodCgpO3JldHVybiBiPmMmJmE8ZH07JC5mbi5pc0Fib3ZlVmlld3BvcnQ9ZnVuY3Rpb24oYSl7YT1hfHwwO3ZhciBiPSQodGhpcykub2Zmc2V0KCkudG9wKyQodGhpcykub3V0ZXJIZWlnaHQoKSxjPSQod2luZG93KS5zY3JvbGxUb3AoKTtyZXR1cm4gYj5jK2F9O2Z1bmN0aW9uIHNldFBvcHVwT3Blbk9uQ2xpY2soKXskKCJbZGF0YS1wb3B1cGlkXSIpLmVhY2goZnVuY3Rpb24oKXt2YXIgYT0kKHRoaXMpLmF0dHIoImRhdGEtcG9wdXBpZCIpOyQodGhpcykub24oImNsaWNrIHRhcCIsZnVuY3Rpb24oYil7Yi5wcmV2ZW50RGVmYXVsdCgpOyQoIiMiK2EpLnBvcHVwaXplKCkuc2V0VHJpZ2dlcigiY2xpY2siKS5vcGVuKCl9KX0pfQpmdW5jdGlvbiBhZGREZWFsZXJJbnNpZGVTY3JpcHQoKXtpZigkKCIuZGVhbGVyLWluc2lkZS1jdGEtYWN0aW9uLWJveCIpLmxlbmd0aCl7dmFyIGE9JCgiLmRlYWxlci1pbnNpZGUtY3RhLWFjdGlvbi1ib3giKS5hdHRyKCJkYXRhLWlkRGVhbGVyIiksYj0kKCIuZGVhbGVyLWluc2lkZS1jdGEtYWN0aW9uLWJveCIpLmF0dHIoImRhdGEtbGFuZyIpLGM9JCgiLmRlYWxlci1pbnNpZGUtY3RhLWFjdGlvbi1ib3giKS5hdHRyKCJkYXRhLWJ1dHRvbi10eXBlIiksZD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtkLnNldEF0dHJpYnV0ZSgidHlwZSIsInRleHQvamF2YXNjcmlwdCIpO2Quc2V0QXR0cmlidXRlKCJzcmMiLCJodHRwczovL2RlYWxlcmluc2lkZWFwcC5jb20vd2lkZ2V0cy9kZWFsZXJfaW5zaWRlX2NhbGwuanM\/ZGVhbGVySWQ9IithKyImbGFuZz0iK2IrIiZidXR0b25UeXBlPSIrYyk7ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXS5hcHBlbmRDaGlsZChkKX19CiQoZnVuY3Rpb24oKXtzZXRQb3B1cE9wZW5PbkNsaWNrKCk7YWRkRGVhbGVySW5zaWRlU2NyaXB0KCl9KTtmdW5jdGlvbiBtb3RvaW5zaWdodFNob3BHb29nbGVPcHRpbWl6ZSgpeyQoIiNqcy1tb3RvaW5zaWdodFNob3BQb3B1cENvbnRhaW5lci1pbnB1dCIpLmxlbmd0aCYmJCgiLmpzLW1vdG9pbnNpZ2h0U2hvcFBvcHVwQ29udGFpbmVyIikubGVuZ3RoJiYkKCIuanMtbW90b2luc2lnaHRTaG9wUG9wdXBDb250YWluZXIiKS5hdHRyKCJkYXRhLW1vdG9pbnNpZ2h0c2hvcGlmcmFtZXVybCIsJCgiI2pzLW1vdG9pbnNpZ2h0U2hvcFBvcHVwQ29udGFpbmVyLWlucHV0IikudmFsKCkpfWZ1bmN0aW9uIGh0bWxUb05vZGUoYSl7dmFyIGI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Yi5pbm5lckhUTUw9YS50cmltKCk7cmV0dXJuIGIuZmlyc3RFbGVtZW50Q2hpbGR9CmZ1bmN0aW9uIGh0bWxUb0RvY3VtZW50RnJhZyhhKXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKS5jcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQoYSl9ZnVuY3Rpb24gaHRtbFRvRWxlbWVudHMoYSl7dmFyIGI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKTtiLmlubmVySFRNTD1hO3JldHVybiBiLmNvbnRlbnQuY2hpbGROb2Rlc30KY29uc3Qgdmlld1BvcnRPYnNlcnZlcj1mdW5jdGlvbihhKXtsZXQgYj0hMSxjPSExLGQ9NTA7Y29uc3QgZT1rPT57az1rWzBdO2xldCBoPS4wMT49ay5pbnRlcnNlY3Rpb25SYXRpbyYmay5ib3VuZGluZ0NsaWVudFJlY3QudG9wPGQ7Yy5jbGFzc0xpc3QudG9nZ2xlKCJ0b3AtZml4ZWQiLGgpO2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5zbXNDdGFCdG4iKS5mb3JFYWNoKG49Pm4uaGlkZGVuPSFoKTtudWxsIT09ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRvYXN0LWNvbnRhaW5lciIpJiYoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRvYXN0LWNvbnRhaW5lciIpLmhpZGRlbj0haCl9O3JldHVybntvYnNlcnZlOigpPT57aWYoYSl7ZCs9YS5vZmZzZXRIZWlnaHQrMTY7dmFyIGs9YS5jbG9zZXN0KCIub2JzZXJ2ZWQtd3JhcHBlciIpfHwhMTtpZighayl7bGV0IGg9aHRtbFRvTm9kZSgnPGRpdiBjbGFzcz0iZml4ZWQtd3JhcHBlciI+PC9kaXY+Jyk7az1odG1sVG9Ob2RlKCc8ZGl2IGNsYXNzPSJvYnNlcnZlZC13cmFwcGVyIj48L2Rpdj4nKTsKYS5hZnRlcihrKTtrLmFwcGVuZENoaWxkKGgpO2guYXBwZW5kQ2hpbGQoYSk7ay5zdHlsZS5oZWlnaHQ9YCR7aC5vZmZzZXRIZWlnaHR9cHhgfWI9aztjPWIucXVlcnlTZWxlY3RvcigiLmZpeGVkLXdyYXBwZXIiKTsobmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGUse3Jvb3RNYXJnaW46YC0ke2R9cHggMHB4IDBweCAwcHhgLHRocmVzaG9sZDpbMCwuMDFdfSkpLm9ic2VydmUoYil9fX19OwpmdW5jdGlvbiBkMmNGb290ZXJEZWxldGVBbGxDb29raWVzKGEpe2xvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCJkMmZhdkRhdGEiKTtsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgiZm9ybUZpbGxEYXRhIik7bG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oImZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fdXNlcklkIik7bG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oImZpbmFuY2VfbXVsdGlzdGVwLmxpbmVhcl9zdGVwIik7dmFyIGI9d2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLGM9YjtiPWIucmVwbGFjZSgid3d3LiIsIiIpO3ZhciBkPWI9Yi5yZXBsYWNlKCJtLiIsIiIpO2IuaW5jbHVkZXMoImQyY21lZGlhLmNhIikmJihiPSJkMmNtZWRpYS5jYSIpO2Zvcih2YXIgZT1kb2N1bWVudC5jb29raWUuc3BsaXQoIjsiKSxrPTA7azxlLmxlbmd0aDtrKyspe3ZhciBoPWVba10sbj1oLmluZGV4T2YoIj0iKTtoPS0xPG4\/aC5zdWJzdHIoMCxuKTpoOyJkMmNfY29va2llX2NvbnNlbnQiIT1oLnRyaW0oKSYmIk9wdGFub25BbGVydEJveENsb3NlZCIhPQpoLnRyaW0oKSYmIk9wdGFub25Db25zZW50IiE9aC50cmltKCkmJihoPWgudHJpbSgpLGRvY3VtZW50LmNvb2tpZT1oKyI9O1BhdGg9Lztkb21haW49LiIrYisiO2V4cGlyZXM9VGh1LCAwMSBKYW4gMTk3MCAwMDowMDowMCBHTVQiLGRvY3VtZW50LmNvb2tpZT1oKyI9O1BhdGg9Lztkb21haW49IitiKyI7ZXhwaXJlcz1UaHUsIDAxIEphbiAxOTcwIDAwOjAwOjAwIEdNVCIsZG9jdW1lbnQuY29va2llPWgrIj07UGF0aD0vO2RvbWFpbj0iK2MrIjtleHBpcmVzPVRodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDAgR01UIixkb2N1bWVudC5jb29raWU9aCsiPTtQYXRoPS87ZG9tYWluPS4iK2QrIjtleHBpcmVzPVRodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDAgR01UIixkb2N1bWVudC5jb29raWU9aCsiPTtQYXRoPS87ZG9tYWluPSIrZCsiO2V4cGlyZXM9VGh1LCAwMSBKYW4gMTk3MCAwMDowMDowMCBHTVQiLGRvY3VtZW50LmNvb2tpZT1oKyI9O1BhdGg9Lztkb21haW49LmQyY21lZGlhLmNhO2V4cGlyZXM9VGh1LCAwMSBKYW4gMTk3MCAwMDowMDowMCBHTVQiLApkb2N1bWVudC5jb29raWU9aCsiPTtQYXRoPS87ZG9tYWluPWQyY21lZGlhLmNhO2V4cGlyZXM9VGh1LCAwMSBKYW4gMTk3MCAwMDowMDowMCBHTVQiLGRvY3VtZW50LmNvb2tpZT1oKyI9O2V4cGlyZXM9VGh1LCAwMSBKYW4gMTk3MCAwMDowMDowMCBHTVQiLGRvY3VtZW50LmNvb2tpZT1oKyI9O1BhdGg9LztleHBpcmVzPVRodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDAgR01UIixjb25zb2xlLmxvZygiRDJEQyIsaCxiKSxrPT1wYXJzZUZsb2F0KGUubGVuZ3RoKS0xJiYoInVuZGVmaW5lZCI9PT10eXBlb2YgYSYmJCgiI2QyY0Zvb3RlckNvb2tpZURlbGV0ZSIpLnBvcHVwaXplKCkuc2V0VHJpZ2dlcigiY2xpY2siKS5vcGVuKCksc2V0VGltZW91dChkMmNGb290ZXJEZWxldGVBbGxDb29raWVzUmVmcmVzaCwyRTMpKSl9cmV0dXJuITB9CmZ1bmN0aW9uIGQyY0Zvb3RlckRlbGV0ZUFsbENvb2tpZXNSZWZyZXNoKCl7d2luZG93LnRvcD09PXdpbmRvdy5zZWxmJiZsb2NhdGlvbi5yZWxvYWQoKX0KZnVuY3Rpb24gR29vZ2xlQ2FwdGNoYSgpe3RoaXMucmVzcG9uc2VUb2tlbj0iIjt0aGlzLndpZGdldElkPS0xO3RoaXMucGFzc2VkPSExO3ZhciBhPSQuRGVmZXJyZWQoKSxiPXRoaXM7X19pbml0PWZ1bmN0aW9uKCl7dHJ5e2lmKCF3aW5kb3cuZ3JlY2FwdGNoYSl7dmFyIGM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0IiksZD1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IilbMF07Yy5zcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vcmVjYXB0Y2hhL2FwaS5qcyI7ZC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShjLGQpfX1jYXRjaChlKXtjb25zb2xlLmxvZyhlKX19O19fbG9hZENhcHRjaGE9ZnVuY3Rpb24oKXtpZighKC0xPGIud2lkZ2V0SWQpKXRyeXt2YXIgYz0iZ29vZ2xlV2lkZ2V0XyIrTWF0aC5mbG9vcigxNjc3NzIxNSpNYXRoLnJhbmRvbSgpKS50b1N0cmluZygxNik7JCgnPGRpdiBpZD0iJytjKyciIHN0eWxlPSJkaXNwbGF5Om5vbmUiPjwvZGl2PicpLmFwcGVuZFRvKCJib2R5Iik7CmIud2lkZ2V0SWQ9Z3JlY2FwdGNoYS5yZW5kZXIoYyx7c2l0ZWtleToiNkxmcGREMFVBQUFBQVBkNFM3SWtlNUVkeDAxeTNZWGQ1SS11M2R4UCIsY2FsbGJhY2s6X19zdWJtaXRDYXB0Y2hhLCJlcnJvci1jYWxsYmFjayI6Yi5mYWlsLHNpemU6ImludmlzaWJsZSJ9KX1jYXRjaChkKXtjb25zb2xlLmxvZyhkKX19O19fc3VibWl0Q2FwdGNoYT1mdW5jdGlvbihjKXtiLnJlc3BvbnNlVG9rZW49YztiLnBhc3NlZD0hMDthLnJlc29sdmUoKX07Yi5nZXRSZXNwb25zZT1mdW5jdGlvbigpe3ZhciBjPSQuRGVmZXJyZWQoKTt3aW5kb3cuZ3JlY2FwdGNoYT8oX19sb2FkQ2FwdGNoYSgpLGdyZWNhcHRjaGEuZXhlY3V0ZShiLndpZGdldElkKSxhLmRvbmUoZnVuY3Rpb24oKXtjLnJlc29sdmUoYi5yZXNwb25zZVRva2VuKX0pKTpjLnJlc29sdmUoKTtyZXR1cm4gY307Yi5mYWlsPWZ1bmN0aW9uKCl7Y29uc29sZS5sb2coIkdSQyBGYWlsIixhcmd1bWVudHMpfTtfX2luaXQoKX0KZnVuY3Rpb24gZ2V0THV4dXJ5VGF4QW1vdW50KGEpe3ZhciBiPTA7MUU1PGEmJihiPS4xKmEsYT0uMiooYS0xRTUpLGI9YjxhP2I6YSk7cmV0dXJuIE1hdGgucm91bmQoYil9CnZhciB3b3Jkcz1bXSxwYXJ0LHdvcmRJbmRleD0wLG9mZnNldD0wLGxlbj0xLGZvcndhcmRzPSEwLHNraXBfY291bnQ9MCxza2lwX2RlbGF5PTE1LHNwZWVkPTcwLHdvcmRmbGljaz1mdW5jdGlvbihhLGIpe3dvcmRzPWE7bGVuPXdvcmRzLmxlbmd0aDtzZXRJbnRlcnZhbChmdW5jdGlvbigpe2ZvcndhcmRzP29mZnNldD49d29yZHNbd29yZEluZGV4XS5sZW5ndGgmJigrK3NraXBfY291bnQsc2tpcF9jb3VudD09c2tpcF9kZWxheSYmKGZvcndhcmRzPSExLHNraXBfY291bnQ9MCkpOjA9PW9mZnNldCYmKGZvcndhcmRzPSEwLHdvcmRJbmRleCsrLG9mZnNldD0wLHdvcmRJbmRleD49bGVuJiYod29yZEluZGV4PTApKTtwYXJ0PXdvcmRzW3dvcmRJbmRleF0uc3Vic3RyKDAsb2Zmc2V0KTswPT1za2lwX2NvdW50JiYoZm9yd2FyZHM\/b2Zmc2V0Kys6b2Zmc2V0LS0pO2IudGV4dChwYXJ0KX0sc3BlZWQpfTsKZnVuY3Rpb24gaXNJblZpZXdwb3J0KGEsYil7Yj12b2lkIDA9PT1iP3t9OmI7YT1hLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2xldCBjPWlzTnVtZXJpYyhiLnRvcCk\/Yi50b3A6MDtiPWlzTnVtZXJpYyhiLmxlZnQpP2IubGVmdDowO3JldHVybiBNYXRoLmZsb29yKGEudG9wKT49YyYmTWF0aC5mbG9vcihhLmxlZnQpPj1iJiZNYXRoLmZsb29yKGEuYm90dG9tKTw9KHdpbmRvdy5pbm5lckhlaWdodHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCkmJk1hdGguZmxvb3IoYS5yaWdodCk8PSh3aW5kb3cuaW5uZXJXaWR0aHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoKX1mdW5jdGlvbiBpc051bWVyaWMoYSl7cmV0dXJuL14tP1xkKyQvZy50ZXN0KGEpfQpkb2NSZWFkeUFyci5wdXNoKCgpPT57ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW3JvbGU9ImJ1dHRvbiJdJykuZm9yRWFjaChhPT57YS5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIixiPT57Y29uc3QgYz12b2lkIDAhPT1iLmtleT9iLmtleTpiLmtleUNvZGU7aWYoIkVudGVyIj09PWN8fDEzPT09YyliLnByZXZlbnREZWZhdWx0KCksYS5jbGljaygpfSl9KX0pOwooKCk9PntsZXQgYT1kb2N1bWVudC5jb29raWUsYj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKERvY3VtZW50LnByb3RvdHlwZSwiY29va2llIik7T2JqZWN0LmRlZmluZVByb3BlcnR5KERvY3VtZW50LnByb3RvdHlwZSwiX2Nvb2tpZSIsYik7T2JqZWN0LmRlZmluZVByb3BlcnR5KERvY3VtZW50LnByb3RvdHlwZSwiY29va2llIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0KCl7cmV0dXJuIHRoaXMuX2Nvb2tpZX0sc2V0KGMpe3ZhciBkPWMudHJpbSgpLnNwbGl0KCI7Iik7bGV0IGU9e307dmFyIGs9MDtmb3IodmFyIGggb2YgZClkPWgudHJpbSgpLnNwbGl0KCI9IiksMD09az8oZS5uYW1lPWRbMF0sZS52YWx1ZT1kWzFdfHwwKToiIiE9ZFswXSYmKGVbZFswXV09ZFsxXXx8MCksaysrO2s9ZS5uYW1lO2g9ZS5leHBpcmVzfHwwO2Q9ZS5wYXRofHwiLyI7bGV0IG49ZS5kb21haW58fCIiO2UudmFsdWUmJiIiIT1lLnZhbHVlJiZudWxsIT1lLnZhbHVlJiYKd2luZG93LkNvb2tpZUxvZ2dlci5sb2coayxlLnZhbHVlLGgsZCxuKTtjPXRoaXMuX2Nvb2tpZT1jO2lmKGMhPT1hKXRyeXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJjb29raWVjaGFuZ2UiLHtkZXRhaWw6e29sZFZhbHVlOmEsbmV3VmFsdWU6Y319KSl9ZmluYWxseXthPWN9fX0pfSkoKTtkb2NSZWFkeUFyci5wdXNoKCgpPT57dmFyIGE9bnVsbDtpZih3aW5kb3cubG9jYXRpb24uaGFzaCl7dHJ5e2E9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihkZWNvZGVVUkkod2luZG93LmxvY2F0aW9uLmhhc2gpKX1jYXRjaChiKXtyZXR1cm59YSYmKGE9YS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3Ard2luZG93LnNjcm9sbFksd2luZG93LnNjcm9sbFRvKHt0b3A6YS0yMCxiZWhhdmlvcjoic21vb3RoIn0pKX19KTsKKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShjKXtkZWJ1Zyh7Y29sbGVjdDpjfSk7Yz1jLm5ld1VSTD9uZXcgVVJMKGMubmV3VVJMKTp3aW5kb3cubG9jYXRpb247IiIhPT1jLmhhc2gmJmMuaGFzaC5zdWJzdHJpbmcoMSkuc3BsaXQoIiYiKS5tYXAoZnVuY3Rpb24oZCxlLGspe3RyeXt2YXIgW2gsbl09ZC5zcGxpdCgiPSIpO3N3aXRjaChoKXtjYXNlICJ1dG1fZSI6dmFyIHg9YXRvYihuKS5zcGxpdCgiOjoiKSx2PW51bGwhPWdldENvb2tpZSgidXRtX2NhbXBhaWduIikmJiJ1bmRlZmluZWQiIT10eXBlb2YgZ2V0Q29va2llKCJ1dG1fY2FtcGFpZ24iKT9nZXRDb29raWUoInV0bV9jYW1wYWlnbiIpOnhbMl07diYmc2V0Q29va2llKCJ1dG1fY2FtcGFpZ24iLHYsMTgwKTt2YXIgZj1udWxsIT1nZXRDb29raWUoInV0bV9zb3VyY2UiKSYmInVuZGVmaW5lZCIhPXR5cGVvZiBnZXRDb29raWUoInV0bV9zb3VyY2UiKT9nZXRDb29raWUoInV0bV9zb3VyY2UiKTp4WzNdO2YmJnNldENvb2tpZSgidXRtX3NvdXJjZSIsCmYsMTgwKTticmVhaztjYXNlICJ1dG1fZXgiOng9YXRvYihuKTt2YXIgZz1uZXcgVVJMKCJodHRwczovLyIrd2luZG93LmxvY2F0aW9uLmhvc3QreCk7MDxnLnNlYXJjaFBhcmFtcy5zaXplJiZnLnNlYXJjaFBhcmFtcy5mb3JFYWNoKGIpfXJldHVybntrZXk6aCx2YWx1ZTpufX1jYXRjaChtKXtkZWJ1ZyhtKX19KX1mdW5jdGlvbiBiKGMsZCl7dHJ5e3N3aXRjaChkKXtjYXNlICJEaXNwbGF5U291cmNlIjpjYXNlICJnY2xpZCI6ZGVidWcoe2tleTpkLGNvb2tpZTpnZXRDb29raWUoZCksdmFsdWU6Y30pLG51bGwhPWdldENvb2tpZShkKSYmIiIhPWdldENvb2tpZShkKXx8c2V0Q29va2llKGQsYywxODApfX1jYXRjaChlKXtkZWJ1ZyhlKX19d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGEsITEpO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJoYXNoY2hhbmdlIixhLCExKX0pKCk7MD49JCgiI3NoYXJlT25GYWNlYm9vayIpLmxlbmd0aCYmJCgiZm9vdGVyIikucHJlcGVuZCgnPGRpdiBpZD0ic2hhcmVPbkZhY2Vib29rIiBkYXRhLWV4cGxhaW49ImhvbmRhL2FjdXJhIGNlcnQgdXNlcyBndG0sIGl0IGhhcyBhIGJpbmQgdGhhdCB0aHJvd3MgYW4gZXJyb3IgaWYgdGhpcyBpZCBkb2VzIG5vdCBleGlzdC4gY29kZSBpcyBmcm9tIGd0bSBzaWRlLiI+PC9kaXY+Jyk7CihmdW5jdGlvbigpe2Z1bmN0aW9uIGEoKXtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiAkLmNvb2tpZSl7bGV0IGM7dmFyIGI9bnVsbCE9KGM9JC5jb29raWUoIlRlcnRpYXJ5U291cmNlIikpP2M6IiI7IiIhPT1iJiYoJCgnKltocmVmKj0iJEZEVGVydGlhcnlTb3VyY2UiXScpLmVhY2goZnVuY3Rpb24oKXskKHRoaXMpLmF0dHIoImhyZWYiLCQodGhpcykuYXR0cigiaHJlZiIpLnJlcGxhY2UoIiRGRFRlcnRpYXJ5U291cmNlIixiKSl9KSwkKCcqW29uY2xpY2sqPSIkRkRUZXJ0aWFyeVNvdXJjZSJdJykuZWFjaChmdW5jdGlvbigpeyQodGhpcykuYXR0cigib25jbGljayIsJCh0aGlzKS5hdHRyKCJvbmNsaWNrIikucmVwbGFjZSgiJEZEVGVydGlhcnlTb3VyY2UiLGIpKX0pLCQoJypbdmFsdWUqPSIkRkRUZXJ0aWFyeVNvdXJjZSJdJykuZWFjaChmdW5jdGlvbigpeyQodGhpcykuYXR0cigidmFsdWUiLCQodGhpcykuYXR0cigidmFsdWUiKS5yZXBsYWNlKCIkRkRUZXJ0aWFyeVNvdXJjZSIsCmIpKX0pKX19YSgpO3NldFRpbWVvdXQoYSwxRTMpO3NldFRpbWVvdXQoYSw1RTMpOzA8PW5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZigiTWFjIikmJigkKCIubGFuZ3VhZ2VCYXIgLmdSYXRpbmctaWNvbiNnUmF0aW5nIC5yYXRpbmciKS5hZGRDbGFzcygibWFyZ2luLWJvdHRvbS0tNHB4IiksJCgiLmxhbmd1YWdlQmFyIC5zZXJ2aWNlLWhlYWRlci1mb3JtIGEuYnRuID4gc3BhbiIpLmFkZENsYXNzKCJtYXJnaW4tYm90dG9tLS00cHgiKSwkKCIubGFuZ3VhZ2VCYXIgLmRlc2t0b3BfbGFuZ19idXR0b25fdGV4dCIpLmFkZENsYXNzKCJtYXJnaW4tYm90dG9tLS00cHgiKSwkKCIubGFuZ3VhZ2VCYXIgLmRlc2t0b3BfbGFuZ19idXR0b25fdGV4dCIpLmNzcygidG9wIiwiNTIlIikpfSkoKTsKZnVuY3Rpb24gYWRkTm9UcmFuc2xhdGVFbWFpbERlZigpe2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tpZCo9ImVtYWlsQm9keURlZiJdLCBbaWQqPSJlbWFpbFN1YmplY3REZWYiXSwgW2NsYXNzKj0iZW1haWxTdWJqZWN0Il0sIFtjbGFzcyo9ImVtYWlsQm9keSJdLCBbY2xhc3MqPSJsZWFkRW1haWwiXSwgW2NsYXNzKj0iZW1haWwtZGVmaW5pdGlvbiJdJykuZm9yRWFjaChhPT57YS5zZXRBdHRyaWJ1dGUoInRyYW5zbGF0ZSIsIm5vIil9KX1hZGROb1RyYW5zbGF0ZUVtYWlsRGVmKCk7ZnVuY3Rpb24gdndzKCl7ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCItLXZ3cyIsYCR7d2luZG93LmlubmVyV2lkdGgvMTAwLSh3aW5kb3cuaW5uZXJXaWR0aC1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgpLzEwMC8yfXB4YCl9dndzKCk7bGV0IHJvX3Z3cz1uZXcgUmVzaXplT2JzZXJ2ZXIoKCk9Pnt2d3MoKX0pO3JvX3Z3cy5vYnNlcnZlKGRvY3VtZW50LmJvZHkpOwovKiogL20vanMvbGF6eXNpemVzLm1pbi5qcyAqKi8KLyohIGxhenlzaXplcyAtIHY0LjEuNSAqLwovKiEgbW9kaWZpZWQ6IG9saXZpZXJAZDJjbWVkaWEuY2EgdG8gc3VwcG9ydCBkYXRhLWltZ3NyYyBiZWNhdXNlIG9mIG9uZVRydXN0IGJyZWFrcyBsYXp5bG9hZCBvbiBkYXRhLXNyYyAqLwohZnVuY3Rpb24oYSxiKXt2YXIgYz1iKGEsYS5kb2N1bWVudCk7YS5sYXp5U2l6ZXM9Yywib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHMmJihtb2R1bGUuZXhwb3J0cz1jKX0od2luZG93LGZ1bmN0aW9uKGEsYil7InVzZSBzdHJpY3QiO2lmKGIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSl7dmFyIGMsZCxlPWIuZG9jdW1lbnRFbGVtZW50LGY9YS5EYXRlLGc9YS5IVE1MUGljdHVyZUVsZW1lbnQsaD0iYWRkRXZlbnRMaXN0ZW5lciIsaT0iZ2V0QXR0cmlidXRlIixqPWFbaF0saz1hLnNldFRpbWVvdXQsbD1hLnJlcXVlc3RBbmltYXRpb25GcmFtZXx8ayxtPWEucmVxdWVzdElkbGVDYWxsYmFjayxuPS9ecGljdHVyZSQvaSxvPVsibG9hZCIsImVycm9yIiwibGF6eWluY2x1ZGVkIiwiX2xhenlsb2FkZWQiXSxwPXt9LHE9QXJyYXkucHJvdG90eXBlLmZvckVhY2gscj1mdW5jdGlvbihhLGIpe3JldHVybiBwW2JdfHwocFtiXT1uZXcgUmVnRXhwKCIoXFxzfF4pIitiKyIoXFxzfCQpIikpLHBbYl0udGVzdChhW2ldKCJjbGFzcyIpfHwiIikmJnBbYl19LHM9ZnVuY3Rpb24oYSxiKXtyKGEsYil8fGEuc2V0QXR0cmlidXRlKCJjbGFzcyIsKGFbaV0oImNsYXNzIil8fCIiKS50cmltKCkrIiAiK2IpfSx0PWZ1bmN0aW9uKGEsYil7dmFyIGM7KGM9cihhLGIpKSYmYS5zZXRBdHRyaWJ1dGUoImNsYXNzIiwoYVtpXSgiY2xhc3MiKXx8IiIpLnJlcGxhY2UoYywiICIpKX0sdT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9Yz9oOiJyZW1vdmVFdmVudExpc3RlbmVyIjtjJiZ1KGEsYiksby5mb3JFYWNoKGZ1bmN0aW9uKGMpe2FbZF0oYyxiKX0pfSx2PWZ1bmN0aW9uKGEsZCxlLGYsZyl7dmFyIGg9Yi5jcmVhdGVFdmVudCgiRXZlbnQiKTtyZXR1cm4gZXx8KGU9e30pLGUuaW5zdGFuY2U9YyxoLmluaXRFdmVudChkLCFmLCFnKSxoLmRldGFpbD1lLGEuZGlzcGF0Y2hFdmVudChoKSxofSx3PWZ1bmN0aW9uKGIsYyl7dmFyIGU7IWcmJihlPWEucGljdHVyZWZpbGx8fGQucGYpPyhjJiZjLnNyYyYmIWJbaV0oInNyY3NldCIpJiZiLnNldEF0dHJpYnV0ZSgic3Jjc2V0IixjLnNyYyksZSh7cmVldmFsdWF0ZTohMCxlbGVtZW50czpbYl19KSk6YyYmYy5zcmMmJihiLnNyYz1jLnNyYyl9LHg9ZnVuY3Rpb24oYSxiKXtyZXR1cm4oZ2V0Q29tcHV0ZWRTdHlsZShhLG51bGwpfHx7fSlbYl19LHk9ZnVuY3Rpb24oYSxiLGMpe2ZvcihjPWN8fGEub2Zmc2V0V2lkdGg7YzxkLm1pblNpemUmJmImJiFhLl9sYXp5c2l6ZXNXaWR0aDspYz1iLm9mZnNldFdpZHRoLGI9Yi5wYXJlbnROb2RlO3JldHVybiBjfSx6PWZ1bmN0aW9uKCl7dmFyIGEsYyxkPVtdLGU9W10sZj1kLGc9ZnVuY3Rpb24oKXt2YXIgYj1mO2ZvcihmPWQubGVuZ3RoP2U6ZCxhPSEwLGM9ITE7Yi5sZW5ndGg7KWIuc2hpZnQoKSgpO2E9ITF9LGg9ZnVuY3Rpb24oZCxlKXthJiYhZT9kLmFwcGx5KHRoaXMsYXJndW1lbnRzKTooZi5wdXNoKGQpLGN8fChjPSEwLChiLmhpZGRlbj9rOmwpKGcpKSl9O3JldHVybiBoLl9sc0ZsdXNoPWcsaH0oKSxBPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGI\/ZnVuY3Rpb24oKXt6KGEpfTpmdW5jdGlvbigpe3ZhciBiPXRoaXMsYz1hcmd1bWVudHM7eihmdW5jdGlvbigpe2EuYXBwbHkoYixjKX0pfX0sQj1mdW5jdGlvbihhKXt2YXIgYixjPTAsZT1kLnRocm90dGxlRGVsYXksZz1kLnJpY1RpbWVvdXQsaD1mdW5jdGlvbigpe2I9ITEsYz1mLm5vdygpLGEoKX0saT1tJiZnPjQ5P2Z1bmN0aW9uKCl7bShoLHt0aW1lb3V0Omd9KSxnIT09ZC5yaWNUaW1lb3V0JiYoZz1kLnJpY1RpbWVvdXQpfTpBKGZ1bmN0aW9uKCl7ayhoKX0sITApO3JldHVybiBmdW5jdGlvbihhKXt2YXIgZDsoYT0hMD09PWEpJiYoZz0zMyksYnx8KGI9ITAsZD1lLShmLm5vdygpLWMpLGQ8MCYmKGQ9MCksYXx8ZDw5P2koKTprKGksZCkpfX0sQz1mdW5jdGlvbihhKXt2YXIgYixjLGQ9OTksZT1mdW5jdGlvbigpe2I9bnVsbCxhKCl9LGc9ZnVuY3Rpb24oKXt2YXIgYT1mLm5vdygpLWM7YTxkP2soZyxkLWEpOihtfHxlKShlKX07cmV0dXJuIGZ1bmN0aW9uKCl7Yz1mLm5vdygpLGJ8fChiPWsoZyxkKSl9fTshZnVuY3Rpb24oKXt2YXIgYixjPXtsYXp5Q2xhc3M6Imxhenlsb2FkIixsb2FkZWRDbGFzczoibGF6eWxvYWRlZCIsbG9hZGluZ0NsYXNzOiJsYXp5bG9hZGluZyIscHJlbG9hZENsYXNzOiJsYXp5cHJlbG9hZCIsZXJyb3JDbGFzczoibGF6eWVycm9yIixhdXRvc2l6ZXNDbGFzczoibGF6eWF1dG9zaXplcyIsc3JjQXR0cjoiZGF0YS1pbWdzcmMiLHNyY3NldEF0dHI6ImRhdGEtc3Jjc2V0IixzaXplc0F0dHI6ImRhdGEtc2l6ZXMiLG1pblNpemU6NDAsY3VzdG9tTWVkaWE6e30saW5pdDohMCxleHBGYWN0b3I6MS41LGhGYWM6LjgsbG9hZE1vZGU6Mixsb2FkSGlkZGVuOiEwLHJpY1RpbWVvdXQ6MCx0aHJvdHRsZURlbGF5OjEyNX07ZD1hLmxhenlTaXplc0NvbmZpZ3x8YS5sYXp5c2l6ZXNDb25maWd8fHt9O2ZvcihiIGluIGMpYiBpbiBkfHwoZFtiXT1jW2JdKTthLmxhenlTaXplc0NvbmZpZz1kLGsoZnVuY3Rpb24oKXtkLmluaXQmJkYoKX0pfSgpO3ZhciBEPWZ1bmN0aW9uKCl7dmFyIGcsbCxtLG8scCx5LEQsRixHLEgsSSxKLEssTCxNPS9eaW1nJC9pLE49L15pZnJhbWUkL2ksTz0ib25zY3JvbGwiaW4gYSYmIS8oZ2xlfGluZylib3QvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCksUD0wLFE9MCxSPTAsUz0tMSxUPWZ1bmN0aW9uKGEpe1ItLSxhJiZhLnRhcmdldCYmdShhLnRhcmdldCxUKSwoIWF8fFI8MHx8IWEudGFyZ2V0KSYmKFI9MCl9LFU9ZnVuY3Rpb24oYSxjKXt2YXIgZCxmPWEsZz0iaGlkZGVuIj09eChiLmJvZHksInZpc2liaWxpdHkiKXx8ImhpZGRlbiIhPXgoYS5wYXJlbnROb2RlLCJ2aXNpYmlsaXR5IikmJiJoaWRkZW4iIT14KGEsInZpc2liaWxpdHkiKTtmb3IoRi09YyxJKz1jLEctPWMsSCs9YztnJiYoZj1mLm9mZnNldFBhcmVudCkmJmYhPWIuYm9keSYmZiE9ZTspKGc9KHgoZiwib3BhY2l0eSIpfHwxKT4wKSYmInZpc2libGUiIT14KGYsIm92ZXJmbG93IikmJihkPWYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksZz1IPmQubGVmdCYmRzxkLnJpZ2h0JiZJPmQudG9wLTEmJkY8ZC5ib3R0b20rMSk7cmV0dXJuIGd9LFY9ZnVuY3Rpb24oKXt2YXIgYSxmLGgsaixrLG0sbixwLHEscj1jLmVsZW1lbnRzO2lmKChvPWQubG9hZE1vZGUpJiZSPDgmJihhPXIubGVuZ3RoKSl7Zj0wLFMrKyxudWxsPT1LJiYoImV4cGFuZCJpbiBkfHwoZC5leHBhbmQ9ZS5jbGllbnRIZWlnaHQ+NTAwJiZlLmNsaWVudFdpZHRoPjUwMD81MDA6MzcwKSxKPWQuZXhwYW5kLEs9SipkLmV4cEZhY3RvciksUTxLJiZSPDEmJlM+MiYmbz4yJiYhYi5oaWRkZW4\/KFE9SyxTPTApOlE9bz4xJiZTPjEmJlI8Nj9KOlA7Zm9yKDtmPGE7ZisrKWlmKHJbZl0mJiFyW2ZdLl9sYXp5UmFjZSlpZihPKWlmKChwPXJbZl1baV0oImRhdGEtZXhwYW5kIikpJiYobT0xKnApfHwobT1RKSxxIT09bSYmKHk9aW5uZXJXaWR0aCttKkwsRD1pbm5lckhlaWdodCttLG49LTEqbSxxPW0pLGg9cltmXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwoST1oLmJvdHRvbSk+PW4mJihGPWgudG9wKTw9RCYmKEg9aC5yaWdodCk+PW4qTCYmKEc9aC5sZWZ0KTw9eSYmKEl8fEh8fEd8fEYpJiYoZC5sb2FkSGlkZGVufHwiaGlkZGVuIiE9eChyW2ZdLCJ2aXNpYmlsaXR5IikpJiYobCYmUjwzJiYhcCYmKG88M3x8Uzw0KXx8VShyW2ZdLG0pKSl7aWYoYmEocltmXSksaz0hMCxSPjkpYnJlYWt9ZWxzZSFrJiZsJiYhaiYmUjw0JiZTPDQmJm8+MiYmKGdbMF18fGQucHJlbG9hZEFmdGVyTG9hZCkmJihnWzBdfHwhcCYmKEl8fEh8fEd8fEZ8fCJhdXRvIiE9cltmXVtpXShkLnNpemVzQXR0cikpKSYmKGo9Z1swXXx8cltmXSk7ZWxzZSBiYShyW2ZdKTtqJiYhayYmYmEoail9fSxXPUIoViksWD1mdW5jdGlvbihhKXtzKGEudGFyZ2V0LGQubG9hZGVkQ2xhc3MpLHQoYS50YXJnZXQsZC5sb2FkaW5nQ2xhc3MpLHUoYS50YXJnZXQsWiksdihhLnRhcmdldCwibGF6eWxvYWRlZCIpfSxZPUEoWCksWj1mdW5jdGlvbihhKXtZKHt0YXJnZXQ6YS50YXJnZXR9KX0sJD1mdW5jdGlvbihhLGIpe3RyeXthLmNvbnRlbnRXaW5kb3cubG9jYXRpb24ucmVwbGFjZShiKX1jYXRjaChjKXthLnNyYz1ifX0sXz1mdW5jdGlvbihhKXt2YXIgYixjPWFbaV0oZC5zcmNzZXRBdHRyKTsoYj1kLmN1c3RvbU1lZGlhW2FbaV0oImRhdGEtbWVkaWEiKXx8YVtpXSgibWVkaWEiKV0pJiZhLnNldEF0dHJpYnV0ZSgibWVkaWEiLGIpLGMmJmEuc2V0QXR0cmlidXRlKCJzcmNzZXQiLGMpfSxhYT1BKGZ1bmN0aW9uKGEsYixjLGUsZil7dmFyIGcsaCxqLGwsbyxwOyhvPXYoYSwibGF6eWJlZm9yZXVudmVpbCIsYikpLmRlZmF1bHRQcmV2ZW50ZWR8fChlJiYoYz9zKGEsZC5hdXRvc2l6ZXNDbGFzcyk6YS5zZXRBdHRyaWJ1dGUoInNpemVzIixlKSksaD1hW2ldKGQuc3Jjc2V0QXR0ciksZz1hW2ldKGQuc3JjQXR0ciksZiYmKGo9YS5wYXJlbnROb2RlLGw9aiYmbi50ZXN0KGoubm9kZU5hbWV8fCIiKSkscD1iLmZpcmVzTG9hZHx8InNyYyJpbiBhJiYoaHx8Z3x8bCksbz17dGFyZ2V0OmF9LHAmJih1KGEsVCwhMCksY2xlYXJUaW1lb3V0KG0pLG09ayhULDI1MDApLHMoYSxkLmxvYWRpbmdDbGFzcyksdShhLFosITApKSxsJiZxLmNhbGwoai5nZXRFbGVtZW50c0J5VGFnTmFtZSgic291cmNlIiksXyksaD9hLnNldEF0dHJpYnV0ZSgic3Jjc2V0IixoKTpnJiYhbCYmKE4udGVzdChhLm5vZGVOYW1lKT8kKGEsZyk6YS5zcmM9ZyksZiYmKGh8fGwpJiZ3KGEse3NyYzpnfSkpLGEuX2xhenlSYWNlJiZkZWxldGUgYS5fbGF6eVJhY2UsdChhLGQubGF6eUNsYXNzKSx6KGZ1bmN0aW9uKCl7KCFwfHxhLmNvbXBsZXRlJiZhLm5hdHVyYWxXaWR0aD4xKSYmKHA\/VChvKTpSLS0sWChvKSl9LCEwKX0pLGJhPWZ1bmN0aW9uKGEpe3ZhciBiLGM9TS50ZXN0KGEubm9kZU5hbWUpLGU9YyYmKGFbaV0oZC5zaXplc0F0dHIpfHxhW2ldKCJzaXplcyIpKSxmPSJhdXRvIj09ZTsoIWYmJmx8fCFjfHwhYVtpXSgic3JjIikmJiFhLnNyY3NldHx8YS5jb21wbGV0ZXx8cihhLGQuZXJyb3JDbGFzcyl8fCFyKGEsZC5sYXp5Q2xhc3MpKSYmKGI9dihhLCJsYXp5dW52ZWlscmVhZCIpLmRldGFpbCxmJiZFLnVwZGF0ZUVsZW0oYSwhMCxhLm9mZnNldFdpZHRoKSxhLl9sYXp5UmFjZT0hMCxSKyssYWEoYSxiLGYsZSxjKSl9LGNhPWZ1bmN0aW9uKCl7aWYoIWwpe2lmKGYubm93KCktcDw5OTkpcmV0dXJuIHZvaWQgayhjYSw5OTkpO3ZhciBhPUMoZnVuY3Rpb24oKXtkLmxvYWRNb2RlPTMsVygpfSk7bD0hMCxkLmxvYWRNb2RlPTMsVygpLGooInNjcm9sbCIsZnVuY3Rpb24oKXszPT1kLmxvYWRNb2RlJiYoZC5sb2FkTW9kZT0yKSxhKCl9LCEwKX19O3JldHVybntfOmZ1bmN0aW9uKCl7cD1mLm5vdygpLGMuZWxlbWVudHM9Yi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGQubGF6eUNsYXNzKSxnPWIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShkLmxhenlDbGFzcysiICIrZC5wcmVsb2FkQ2xhc3MpLEw9ZC5oRmFjLGooInNjcm9sbCIsVywhMCksaigicmVzaXplIixXLCEwKSxhLk11dGF0aW9uT2JzZXJ2ZXI\/bmV3IE11dGF0aW9uT2JzZXJ2ZXIoVykub2JzZXJ2ZShlLHtjaGlsZExpc3Q6ITAsc3VidHJlZTohMCxhdHRyaWJ1dGVzOiEwfSk6KGVbaF0oIkRPTU5vZGVJbnNlcnRlZCIsVywhMCksZVtoXSgiRE9NQXR0ck1vZGlmaWVkIixXLCEwKSxzZXRJbnRlcnZhbChXLDk5OSkpLGooImhhc2hjaGFuZ2UiLFcsITApLFsiZm9jdXMiLCJtb3VzZW92ZXIiLCJjbGljayIsImxvYWQiLCJ0cmFuc2l0aW9uZW5kIiwiYW5pbWF0aW9uZW5kIiwid2Via2l0QW5pbWF0aW9uRW5kIl0uZm9yRWFjaChmdW5jdGlvbihhKXtiW2hdKGEsVywhMCl9KSwvZCR8XmMvLnRlc3QoYi5yZWFkeVN0YXRlKT9jYSgpOihqKCJsb2FkIixjYSksYltoXSgiRE9NQ29udGVudExvYWRlZCIsVyksayhjYSwyZTQpKSxjLmVsZW1lbnRzLmxlbmd0aD8oVigpLHouX2xzRmx1c2goKSk6VygpfSxjaGVja0VsZW1zOlcsdW52ZWlsOmJhfX0oKSxFPWZ1bmN0aW9uKCl7dmFyIGEsYz1BKGZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlLGYsZztpZihhLl9sYXp5c2l6ZXNXaWR0aD1kLGQrPSJweCIsYS5zZXRBdHRyaWJ1dGUoInNpemVzIixkKSxuLnRlc3QoYi5ub2RlTmFtZXx8IiIpKWZvcihlPWIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNvdXJjZSIpLGY9MCxnPWUubGVuZ3RoO2Y8ZztmKyspZVtmXS5zZXRBdHRyaWJ1dGUoInNpemVzIixkKTtjLmRldGFpbC5kYXRhQXR0cnx8dyhhLGMuZGV0YWlsKX0pLGU9ZnVuY3Rpb24oYSxiLGQpe3ZhciBlLGY9YS5wYXJlbnROb2RlO2YmJihkPXkoYSxmLGQpLGU9dihhLCJsYXp5YmVmb3Jlc2l6ZXMiLHt3aWR0aDpkLGRhdGFBdHRyOiEhYn0pLGUuZGVmYXVsdFByZXZlbnRlZHx8KGQ9ZS5kZXRhaWwud2lkdGgpJiZkIT09YS5fbGF6eXNpemVzV2lkdGgmJmMoYSxmLGUsZCkpfSxmPWZ1bmN0aW9uKCl7dmFyIGIsYz1hLmxlbmd0aDtpZihjKWZvcihiPTA7YjxjO2IrKyllKGFbYl0pfSxnPUMoZik7cmV0dXJue186ZnVuY3Rpb24oKXthPWIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShkLmF1dG9zaXplc0NsYXNzKSxqKCJyZXNpemUiLGcpfSxjaGVja0VsZW1zOmcsdXBkYXRlRWxlbTplfX0oKSxGPWZ1bmN0aW9uKCl7Ri5pfHwoRi5pPSEwLEUuXygpLEQuXygpKX07cmV0dXJuIGM9e2NmZzpkLGF1dG9TaXplcjpFLGxvYWRlcjpELGluaXQ6Rix1UDp3LGFDOnMsckM6dCxoQzpyLGZpcmU6dixnVzp5LHJBRjp6fX19KTsKLypFT0YqLzsKLyoqIC9tL2pzL2pxdWVyeS11aS1mYWN0b3J5LzEuMTMuMi9qcXVlcnktdWkubWluLmpzICoqLwovKiEgalF1ZXJ5IFVJIC0gdjEuMTMuMiAtIDIwMjQtMDMtMTIKKiBodHRwOi8vanF1ZXJ5dWkuY29tCiogSW5jbHVkZXM6IHdpZGdldC5qcywganF1ZXJ5LXBhdGNoLmpzLCBrZXljb2RlLmpzLCB1bmlxdWUtaWQuanMsIHdpZGdldHMvYWNjb3JkaW9uLmpzLCB3aWRnZXRzL21vdXNlLmpzLCB3aWRnZXRzL3NsaWRlci5qcywgZWZmZWN0LmpzCiogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnM7IExpY2Vuc2VkIE1JVCAqLwoKIWZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjsiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbImpxdWVyeSJdLGUpOmUoalF1ZXJ5KX0oZnVuY3Rpb24odSl7InVzZSBzdHJpY3QiO3UudWk9dS51aXx8e307dS51aS52ZXJzaW9uPSIxLjEzLjIiO3ZhciBuLGk9MCxvPUFycmF5LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxyPUFycmF5LnByb3RvdHlwZS5zbGljZTt1LmNsZWFuRGF0YT0obj11LmNsZWFuRGF0YSxmdW5jdGlvbihlKXtmb3IodmFyIHQsaSxzPTA7bnVsbCE9KGk9ZVtzXSk7cysrKSh0PXUuX2RhdGEoaSwiZXZlbnRzIikpJiZ0LnJlbW92ZSYmdShpKS50cmlnZ2VySGFuZGxlcigicmVtb3ZlIik7bihlKX0pLHUud2lkZ2V0PWZ1bmN0aW9uKGUsaSx0KXt2YXIgcyxuLGEsbz17fSxyPWUuc3BsaXQoIi4iKVswXSxoPXIrIi0iKyhlPWUuc3BsaXQoIi4iKVsxXSk7cmV0dXJuIHR8fCh0PWksaT11LldpZGdldCksQXJyYXkuaXNBcnJheSh0KSYmKHQ9dS5leHRlbmQuYXBwbHkobnVsbCxbe31dLmNvbmNhdCh0KSkpLHUuZXhwci5wc2V1ZG9zW2gudG9Mb3dlckNhc2UoKV09ZnVuY3Rpb24oZSl7cmV0dXJuISF1LmRhdGEoZSxoKX0sdVtyXT11W3JdfHx7fSxzPXVbcl1bZV0sbj11W3JdW2VdPWZ1bmN0aW9uKGUsdCl7aWYoIXRoaXN8fCF0aGlzLl9jcmVhdGVXaWRnZXQpcmV0dXJuIG5ldyBuKGUsdCk7YXJndW1lbnRzLmxlbmd0aCYmdGhpcy5fY3JlYXRlV2lkZ2V0KGUsdCl9LHUuZXh0ZW5kKG4scyx7dmVyc2lvbjp0LnZlcnNpb24sX3Byb3RvOnUuZXh0ZW5kKHt9LHQpLF9jaGlsZENvbnN0cnVjdG9yczpbXX0pLChhPW5ldyBpKS5vcHRpb25zPXUud2lkZ2V0LmV4dGVuZCh7fSxhLm9wdGlvbnMpLHUuZWFjaCh0LGZ1bmN0aW9uKHQscyl7ZnVuY3Rpb24gbigpe3JldHVybiBpLnByb3RvdHlwZVt0XS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gYShlKXtyZXR1cm4gaS5wcm90b3R5cGVbdF0uYXBwbHkodGhpcyxlKX1vW3RdPSJmdW5jdGlvbiI9PXR5cGVvZiBzP2Z1bmN0aW9uKCl7dmFyIGUsdD10aGlzLl9zdXBlcixpPXRoaXMuX3N1cGVyQXBwbHk7cmV0dXJuIHRoaXMuX3N1cGVyPW4sdGhpcy5fc3VwZXJBcHBseT1hLGU9cy5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5fc3VwZXI9dCx0aGlzLl9zdXBlckFwcGx5PWksZX06c30pLG4ucHJvdG90eXBlPXUud2lkZ2V0LmV4dGVuZChhLHt3aWRnZXRFdmVudFByZWZpeDpzJiZhLndpZGdldEV2ZW50UHJlZml4fHxlfSxvLHtjb25zdHJ1Y3RvcjpuLG5hbWVzcGFjZTpyLHdpZGdldE5hbWU6ZSx3aWRnZXRGdWxsTmFtZTpofSkscz8odS5lYWNoKHMuX2NoaWxkQ29uc3RydWN0b3JzLGZ1bmN0aW9uKGUsdCl7dmFyIGk9dC5wcm90b3R5cGU7dS53aWRnZXQoaS5uYW1lc3BhY2UrIi4iK2kud2lkZ2V0TmFtZSxuLHQuX3Byb3RvKX0pLGRlbGV0ZSBzLl9jaGlsZENvbnN0cnVjdG9ycyk6aS5fY2hpbGRDb25zdHJ1Y3RvcnMucHVzaChuKSx1LndpZGdldC5icmlkZ2UoZSxuKSxufSx1LndpZGdldC5leHRlbmQ9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LGkscz1yLmNhbGwoYXJndW1lbnRzLDEpLG49MCxhPXMubGVuZ3RoO248YTtuKyspZm9yKHQgaW4gc1tuXSlpPXNbbl1bdF0sby5jYWxsKHNbbl0sdCkmJnZvaWQgMCE9PWkmJih1LmlzUGxhaW5PYmplY3QoaSk\/ZVt0XT11LmlzUGxhaW5PYmplY3QoZVt0XSk\/dS53aWRnZXQuZXh0ZW5kKHt9LGVbdF0saSk6dS53aWRnZXQuZXh0ZW5kKHt9LGkpOmVbdF09aSk7cmV0dXJuIGV9LHUud2lkZ2V0LmJyaWRnZT1mdW5jdGlvbihhLHQpe3ZhciBvPXQucHJvdG90eXBlLndpZGdldEZ1bGxOYW1lfHxhO3UuZm5bYV09ZnVuY3Rpb24oaSl7dmFyIGU9InN0cmluZyI9PXR5cGVvZiBpLHM9ci5jYWxsKGFyZ3VtZW50cywxKSxuPXRoaXM7cmV0dXJuIGU\/dGhpcy5sZW5ndGh8fCJpbnN0YW5jZSIhPT1pP3RoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlLHQ9dS5kYXRhKHRoaXMsbyk7cmV0dXJuImluc3RhbmNlIj09PWk\/KG49dCwhMSk6dD8iZnVuY3Rpb24iIT10eXBlb2YgdFtpXXx8Il8iPT09aS5jaGFyQXQoMCk\/dS5lcnJvcigibm8gc3VjaCBtZXRob2QgJyIraSsiJyBmb3IgIithKyIgd2lkZ2V0IGluc3RhbmNlIik6KGU9dFtpXS5hcHBseSh0LHMpKSE9PXQmJnZvaWQgMCE9PWU\/KG49ZSYmZS5qcXVlcnk\/bi5wdXNoU3RhY2soZS5nZXQoKSk6ZSwhMSk6dm9pZCAwOnUuZXJyb3IoImNhbm5vdCBjYWxsIG1ldGhvZHMgb24gIithKyIgcHJpb3IgdG8gaW5pdGlhbGl6YXRpb247IGF0dGVtcHRlZCB0byBjYWxsIG1ldGhvZCAnIitpKyInIil9KTpuPXZvaWQgMDoocy5sZW5ndGgmJihpPXUud2lkZ2V0LmV4dGVuZC5hcHBseShudWxsLFtpXS5jb25jYXQocykpKSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT11LmRhdGEodGhpcyxvKTtlPyhlLm9wdGlvbihpfHx7fSksZS5faW5pdCYmZS5faW5pdCgpKTp1LmRhdGEodGhpcyxvLG5ldyB0KGksdGhpcykpfSkpLG59fSx1LldpZGdldD1mdW5jdGlvbigpe30sdS5XaWRnZXQuX2NoaWxkQ29uc3RydWN0b3JzPVtdLHUuV2lkZ2V0LnByb3RvdHlwZT17d2lkZ2V0TmFtZToid2lkZ2V0Iix3aWRnZXRFdmVudFByZWZpeDoiIixkZWZhdWx0RWxlbWVudDoiPGRpdj4iLG9wdGlvbnM6e2NsYXNzZXM6e30sZGlzYWJsZWQ6ITEsY3JlYXRlOm51bGx9LF9jcmVhdGVXaWRnZXQ6ZnVuY3Rpb24oZSx0KXt0PXUodHx8dGhpcy5kZWZhdWx0RWxlbWVudHx8dGhpcylbMF0sdGhpcy5lbGVtZW50PXUodCksdGhpcy51dWlkPWkrKyx0aGlzLmV2ZW50TmFtZXNwYWNlPSIuIit0aGlzLndpZGdldE5hbWUrdGhpcy51dWlkLHRoaXMuYmluZGluZ3M9dSgpLHRoaXMuaG92ZXJhYmxlPXUoKSx0aGlzLmZvY3VzYWJsZT11KCksdGhpcy5jbGFzc2VzRWxlbWVudExvb2t1cD17fSx0IT09dGhpcyYmKHUuZGF0YSh0LHRoaXMud2lkZ2V0RnVsbE5hbWUsdGhpcyksdGhpcy5fb24oITAsdGhpcy5lbGVtZW50LHtyZW1vdmU6ZnVuY3Rpb24oZSl7ZS50YXJnZXQ9PT10JiZ0aGlzLmRlc3Ryb3koKX19KSx0aGlzLmRvY3VtZW50PXUodC5zdHlsZT90Lm93bmVyRG9jdW1lbnQ6dC5kb2N1bWVudHx8dCksdGhpcy53aW5kb3c9dSh0aGlzLmRvY3VtZW50WzBdLmRlZmF1bHRWaWV3fHx0aGlzLmRvY3VtZW50WzBdLnBhcmVudFdpbmRvdykpLHRoaXMub3B0aW9ucz11LndpZGdldC5leHRlbmQoe30sdGhpcy5vcHRpb25zLHRoaXMuX2dldENyZWF0ZU9wdGlvbnMoKSxlKSx0aGlzLl9jcmVhdGUoKSx0aGlzLm9wdGlvbnMuZGlzYWJsZWQmJnRoaXMuX3NldE9wdGlvbkRpc2FibGVkKHRoaXMub3B0aW9ucy5kaXNhYmxlZCksdGhpcy5fdHJpZ2dlcigiY3JlYXRlIixudWxsLHRoaXMuX2dldENyZWF0ZUV2ZW50RGF0YSgpKSx0aGlzLl9pbml0KCl9LF9nZXRDcmVhdGVPcHRpb25zOmZ1bmN0aW9uKCl7cmV0dXJue319LF9nZXRDcmVhdGVFdmVudERhdGE6dS5ub29wLF9jcmVhdGU6dS5ub29wLF9pbml0OnUubm9vcCxkZXN0cm95OmZ1bmN0aW9uKCl7dmFyIGk9dGhpczt0aGlzLl9kZXN0cm95KCksdS5lYWNoKHRoaXMuY2xhc3Nlc0VsZW1lbnRMb29rdXAsZnVuY3Rpb24oZSx0KXtpLl9yZW1vdmVDbGFzcyh0LGUpfSksdGhpcy5lbGVtZW50Lm9mZih0aGlzLmV2ZW50TmFtZXNwYWNlKS5yZW1vdmVEYXRhKHRoaXMud2lkZ2V0RnVsbE5hbWUpLHRoaXMud2lkZ2V0KCkub2ZmKHRoaXMuZXZlbnROYW1lc3BhY2UpLnJlbW92ZUF0dHIoImFyaWEtZGlzYWJsZWQiKSx0aGlzLmJpbmRpbmdzLm9mZih0aGlzLmV2ZW50TmFtZXNwYWNlKX0sX2Rlc3Ryb3k6dS5ub29wLHdpZGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVsZW1lbnR9LG9wdGlvbjpmdW5jdGlvbihlLHQpe3ZhciBpLHMsbixhPWU7aWYoMD09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHUud2lkZ2V0LmV4dGVuZCh7fSx0aGlzLm9wdGlvbnMpO2lmKCJzdHJpbmciPT10eXBlb2YgZSlpZihhPXt9LGU9KGk9ZS5zcGxpdCgiLiIpKS5zaGlmdCgpLGkubGVuZ3RoKXtmb3Iocz1hW2VdPXUud2lkZ2V0LmV4dGVuZCh7fSx0aGlzLm9wdGlvbnNbZV0pLG49MDtuPGkubGVuZ3RoLTE7bisrKXNbaVtuXV09c1tpW25dXXx8e30scz1zW2lbbl1dO2lmKGU9aS5wb3AoKSwxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdm9pZCAwPT09c1tlXT9udWxsOnNbZV07c1tlXT10fWVsc2V7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHZvaWQgMD09PXRoaXMub3B0aW9uc1tlXT9udWxsOnRoaXMub3B0aW9uc1tlXTthW2VdPXR9cmV0dXJuIHRoaXMuX3NldE9wdGlvbnMoYSksdGhpc30sX3NldE9wdGlvbnM6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0IGluIGUpdGhpcy5fc2V0T3B0aW9uKHQsZVt0XSk7cmV0dXJuIHRoaXN9LF9zZXRPcHRpb246ZnVuY3Rpb24oZSx0KXtyZXR1cm4iY2xhc3NlcyI9PT1lJiZ0aGlzLl9zZXRPcHRpb25DbGFzc2VzKHQpLHRoaXMub3B0aW9uc1tlXT10LCJkaXNhYmxlZCI9PT1lJiZ0aGlzLl9zZXRPcHRpb25EaXNhYmxlZCh0KSx0aGlzfSxfc2V0T3B0aW9uQ2xhc3NlczpmdW5jdGlvbihlKXt2YXIgdCxpLHM7Zm9yKHQgaW4gZSlzPXRoaXMuY2xhc3Nlc0VsZW1lbnRMb29rdXBbdF0sZVt0XSE9PXRoaXMub3B0aW9ucy5jbGFzc2VzW3RdJiZzJiZzLmxlbmd0aCYmKGk9dShzLmdldCgpKSx0aGlzLl9yZW1vdmVDbGFzcyhzLHQpLGkuYWRkQ2xhc3ModGhpcy5fY2xhc3Nlcyh7ZWxlbWVudDppLGtleXM6dCxjbGFzc2VzOmUsYWRkOiEwfSkpKX0sX3NldE9wdGlvbkRpc2FibGVkOmZ1bmN0aW9uKGUpe3RoaXMuX3RvZ2dsZUNsYXNzKHRoaXMud2lkZ2V0KCksdGhpcy53aWRnZXRGdWxsTmFtZSsiLWRpc2FibGVkIixudWxsLCEhZSksZSYmKHRoaXMuX3JlbW92ZUNsYXNzKHRoaXMuaG92ZXJhYmxlLG51bGwsInVpLXN0YXRlLWhvdmVyIiksdGhpcy5fcmVtb3ZlQ2xhc3ModGhpcy5mb2N1c2FibGUsbnVsbCwidWktc3RhdGUtZm9jdXMiKSl9LGVuYWJsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zZXRPcHRpb25zKHtkaXNhYmxlZDohMX0pfSxkaXNhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NldE9wdGlvbnMoe2Rpc2FibGVkOiEwfSl9LF9jbGFzc2VzOmZ1bmN0aW9uKG4pe3ZhciBhPVtdLG89dGhpcztmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBpLHM9MDtzPGUubGVuZ3RoO3MrKylpPW8uY2xhc3Nlc0VsZW1lbnRMb29rdXBbZVtzXV18fHUoKSxpPW4uYWRkPyhmdW5jdGlvbigpe3ZhciBpPVtdO24uZWxlbWVudC5lYWNoKGZ1bmN0aW9uKGUsdCl7dS5tYXAoby5jbGFzc2VzRWxlbWVudExvb2t1cCxmdW5jdGlvbihlKXtyZXR1cm4gZX0pLnNvbWUoZnVuY3Rpb24oZSl7cmV0dXJuIGUuaXModCl9KXx8aS5wdXNoKHQpfSksby5fb24odShpKSx7cmVtb3ZlOiJfdW50cmFja0NsYXNzZXNFbGVtZW50In0pfSgpLHUodS51bmlxdWVTb3J0KGkuZ2V0KCkuY29uY2F0KG4uZWxlbWVudC5nZXQoKSkpKSk6dShpLm5vdChuLmVsZW1lbnQpLmdldCgpKSxvLmNsYXNzZXNFbGVtZW50TG9va3VwW2Vbc11dPWksYS5wdXNoKGVbc10pLHQmJm4uY2xhc3Nlc1tlW3NdXSYmYS5wdXNoKG4uY2xhc3Nlc1tlW3NdXSl9cmV0dXJuKG49dS5leHRlbmQoe2VsZW1lbnQ6dGhpcy5lbGVtZW50LGNsYXNzZXM6dGhpcy5vcHRpb25zLmNsYXNzZXN8fHt9fSxuKSkua2V5cyYmZShuLmtleXMubWF0Y2goL1xTKy9nKXx8W10sITApLG4uZXh0cmEmJmUobi5leHRyYS5tYXRjaCgvXFMrL2cpfHxbXSksYS5qb2luKCIgIil9LF91bnRyYWNrQ2xhc3Nlc0VsZW1lbnQ6ZnVuY3Rpb24oaSl7dmFyIHM9dGhpczt1LmVhY2gocy5jbGFzc2VzRWxlbWVudExvb2t1cCxmdW5jdGlvbihlLHQpey0xIT09dS5pbkFycmF5KGkudGFyZ2V0LHQpJiYocy5jbGFzc2VzRWxlbWVudExvb2t1cFtlXT11KHQubm90KGkudGFyZ2V0KS5nZXQoKSkpfSksdGhpcy5fb2ZmKHUoaS50YXJnZXQpKX0sX3JlbW92ZUNsYXNzOmZ1bmN0aW9uKGUsdCxpKXtyZXR1cm4gdGhpcy5fdG9nZ2xlQ2xhc3MoZSx0LGksITEpfSxfYWRkQ2xhc3M6ZnVuY3Rpb24oZSx0LGkpe3JldHVybiB0aGlzLl90b2dnbGVDbGFzcyhlLHQsaSwhMCl9LF90b2dnbGVDbGFzczpmdW5jdGlvbihlLHQsaSxzKXt2YXIgbj0ic3RyaW5nIj09dHlwZW9mIGV8fG51bGw9PT1lLGk9e2V4dHJhOm4\/dDppLGtleXM6bj9lOnQsZWxlbWVudDpuP3RoaXMuZWxlbWVudDplLGFkZDpzPSJib29sZWFuIj09dHlwZW9mIHM\/czppfTtyZXR1cm4gaS5lbGVtZW50LnRvZ2dsZUNsYXNzKHRoaXMuX2NsYXNzZXMoaSkscyksdGhpc30sX29uOmZ1bmN0aW9uKG4sYSxlKXt2YXIgbyxyPXRoaXM7ImJvb2xlYW4iIT10eXBlb2YgbiYmKGU9YSxhPW4sbj0hMSksZT8oYT1vPXUoYSksdGhpcy5iaW5kaW5ncz10aGlzLmJpbmRpbmdzLmFkZChhKSk6KGU9YSxhPXRoaXMuZWxlbWVudCxvPXRoaXMud2lkZ2V0KCkpLHUuZWFjaChlLGZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gaSgpe2lmKG58fCEwIT09ci5vcHRpb25zLmRpc2FibGVkJiYhdSh0aGlzKS5oYXNDbGFzcygidWktc3RhdGUtZGlzYWJsZWQiKSlyZXR1cm4oInN0cmluZyI9PXR5cGVvZiB0P3JbdF06dCkuYXBwbHkocixhcmd1bWVudHMpfSJzdHJpbmciIT10eXBlb2YgdCYmKGkuZ3VpZD10Lmd1aWQ9dC5ndWlkfHxpLmd1aWR8fHUuZ3VpZCsrKTt2YXIgcz1lLm1hdGNoKC9eKFtcdzotXSopXHMqKC4qKSQvKSxlPXNbMV0rci5ldmVudE5hbWVzcGFjZSxzPXNbMl07cz9vLm9uKGUscyxpKTphLm9uKGUsaSl9KX0sX29mZjpmdW5jdGlvbihlLHQpe3Q9KHR8fCIiKS5zcGxpdCgiICIpLmpvaW4odGhpcy5ldmVudE5hbWVzcGFjZSsiICIpK3RoaXMuZXZlbnROYW1lc3BhY2UsZS5vZmYodCksdGhpcy5iaW5kaW5ncz11KHRoaXMuYmluZGluZ3Mubm90KGUpLmdldCgpKSx0aGlzLmZvY3VzYWJsZT11KHRoaXMuZm9jdXNhYmxlLm5vdChlKS5nZXQoKSksdGhpcy5ob3ZlcmFibGU9dSh0aGlzLmhvdmVyYWJsZS5ub3QoZSkuZ2V0KCkpfSxfZGVsYXk6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzO3JldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuKCJzdHJpbmciPT10eXBlb2YgZT9pW2VdOmUpLmFwcGx5KGksYXJndW1lbnRzKX0sdHx8MCl9LF9ob3ZlcmFibGU6ZnVuY3Rpb24oZSl7dGhpcy5ob3ZlcmFibGU9dGhpcy5ob3ZlcmFibGUuYWRkKGUpLHRoaXMuX29uKGUse21vdXNlZW50ZXI6ZnVuY3Rpb24oZSl7dGhpcy5fYWRkQ2xhc3ModShlLmN1cnJlbnRUYXJnZXQpLG51bGwsInVpLXN0YXRlLWhvdmVyIil9LG1vdXNlbGVhdmU6ZnVuY3Rpb24oZSl7dGhpcy5fcmVtb3ZlQ2xhc3ModShlLmN1cnJlbnRUYXJnZXQpLG51bGwsInVpLXN0YXRlLWhvdmVyIil9fSl9LF9mb2N1c2FibGU6ZnVuY3Rpb24oZSl7dGhpcy5mb2N1c2FibGU9dGhpcy5mb2N1c2FibGUuYWRkKGUpLHRoaXMuX29uKGUse2ZvY3VzaW46ZnVuY3Rpb24oZSl7dGhpcy5fYWRkQ2xhc3ModShlLmN1cnJlbnRUYXJnZXQpLG51bGwsInVpLXN0YXRlLWZvY3VzIil9LGZvY3Vzb3V0OmZ1bmN0aW9uKGUpe3RoaXMuX3JlbW92ZUNsYXNzKHUoZS5jdXJyZW50VGFyZ2V0KSxudWxsLCJ1aS1zdGF0ZS1mb2N1cyIpfX0pfSxfdHJpZ2dlcjpmdW5jdGlvbihlLHQsaSl7dmFyIHMsbixhPXRoaXMub3B0aW9uc1tlXTtpZihpPWl8fHt9LCh0PXUuRXZlbnQodCkpLnR5cGU9KGU9PT10aGlzLndpZGdldEV2ZW50UHJlZml4P2U6dGhpcy53aWRnZXRFdmVudFByZWZpeCtlKS50b0xvd2VyQ2FzZSgpLHQudGFyZ2V0PXRoaXMuZWxlbWVudFswXSxuPXQub3JpZ2luYWxFdmVudClmb3IocyBpbiBuKXMgaW4gdHx8KHRbc109bltzXSk7cmV0dXJuIHRoaXMuZWxlbWVudC50cmlnZ2VyKHQsaSksISgiZnVuY3Rpb24iPT10eXBlb2YgYSYmITE9PT1hLmFwcGx5KHRoaXMuZWxlbWVudFswXSxbdF0uY29uY2F0KGkpKXx8dC5pc0RlZmF1bHRQcmV2ZW50ZWQoKSl9fSx1LmVhY2goe3Nob3c6ImZhZGVJbiIsaGlkZToiZmFkZU91dCJ9LGZ1bmN0aW9uKGEsbyl7dS5XaWRnZXQucHJvdG90eXBlWyJfIithXT1mdW5jdGlvbih0LGUsaSl7dmFyIHMsbj0oZT0ic3RyaW5nIj09dHlwZW9mIGU\/e2VmZmVjdDplfTplKT8hMCE9PWUmJiJudW1iZXIiIT10eXBlb2YgZSYmZS5lZmZlY3R8fG86YTsibnVtYmVyIj09dHlwZW9mKGU9ZXx8e30pP2U9e2R1cmF0aW9uOmV9OiEwPT09ZSYmKGU9e30pLHM9IXUuaXNFbXB0eU9iamVjdChlKSxlLmNvbXBsZXRlPWksZS5kZWxheSYmdC5kZWxheShlLmRlbGF5KSxzJiZ1LmVmZmVjdHMmJnUuZWZmZWN0cy5lZmZlY3Rbbl0\/dFthXShlKTpuIT09YSYmdFtuXT90W25dKGUuZHVyYXRpb24sZS5lYXNpbmcsaSk6dC5xdWV1ZShmdW5jdGlvbihlKXt1KHRoaXMpW2FdKCksaSYmaS5jYWxsKHRbMF0pLGUoKX0pfX0pO3ZhciB0LHM7dS53aWRnZXQ7dS5leHByLnBzZXVkb3N8fCh1LmV4cHIucHNldWRvcz11LmV4cHJbIjoiXSksdS51bmlxdWVTb3J0fHwodS51bmlxdWVTb3J0PXUudW5pcXVlKSx1LmVzY2FwZVNlbGVjdG9yfHwodD0vKFtcMC1ceDFmXHg3Zl18Xi0\/XGQpfF4tJHxbXlx4ODAtXHVGRkZGXHctXS9nLHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD8iXDAiPT09ZT8i77+9IjplLnNsaWNlKDAsLTEpKyJcXCIrZS5jaGFyQ29kZUF0KGUubGVuZ3RoLTEpLnRvU3RyaW5nKDE2KSsiICI6IlxcIitlfSx1LmVzY2FwZVNlbGVjdG9yPWZ1bmN0aW9uKGUpe3JldHVybihlKyIiKS5yZXBsYWNlKHQscyl9KSx1LmZuLmV2ZW4mJnUuZm4ub2RkfHx1LmZuLmV4dGVuZCh7ZXZlbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZSUyPT0wfSl9LG9kZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZSUyPT0xfSl9fSk7dS51aS5rZXlDb2RlPXtCQUNLU1BBQ0U6OCxDT01NQToxODgsREVMRVRFOjQ2LERPV046NDAsRU5EOjM1LEVOVEVSOjEzLEVTQ0FQRToyNyxIT01FOjM2LExFRlQ6MzcsUEFHRV9ET1dOOjM0LFBBR0VfVVA6MzMsUEVSSU9EOjE5MCxSSUdIVDozOSxTUEFDRTozMixUQUI6OSxVUDozOH0sdS5mbi5leHRlbmQoe3VuaXF1ZUlkOihlPTAsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dGhpcy5pZHx8KHRoaXMuaWQ9InVpLWlkLSIrICsrZSl9KX0pLHJlbW92ZVVuaXF1ZUlkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpey9edWktaWQtXGQrJC8udGVzdCh0aGlzLmlkKSYmdSh0aGlzKS5yZW1vdmVBdHRyKCJpZCIpfSl9fSksdS53aWRnZXQoInVpLmFjY29yZGlvbiIse3ZlcnNpb246IjEuMTMuMiIsb3B0aW9uczp7YWN0aXZlOjAsYW5pbWF0ZTp7fSxjbGFzc2VzOnsidWktYWNjb3JkaW9uLWhlYWRlciI6InVpLWNvcm5lci10b3AiLCJ1aS1hY2NvcmRpb24taGVhZGVyLWNvbGxhcHNlZCI6InVpLWNvcm5lci1hbGwiLCJ1aS1hY2NvcmRpb24tY29udGVudCI6InVpLWNvcm5lci1ib3R0b20ifSxjb2xsYXBzaWJsZTohMSxldmVudDoiY2xpY2siLGhlYWRlcjpmdW5jdGlvbihlKXtyZXR1cm4gZS5maW5kKCI+IGxpID4gOmZpcnN0LWNoaWxkIikuYWRkKGUuZmluZCgiPiA6bm90KGxpKSIpLmV2ZW4oKSl9LGhlaWdodFN0eWxlOiJhdXRvIixpY29uczp7YWN0aXZlSGVhZGVyOiJ1aS1pY29uLXRyaWFuZ2xlLTEtcyIsaGVhZGVyOiJ1aS1pY29uLXRyaWFuZ2xlLTEtZSJ9LGFjdGl2YXRlOm51bGwsYmVmb3JlQWN0aXZhdGU6bnVsbH0saGlkZVByb3BzOntib3JkZXJUb3BXaWR0aDoiaGlkZSIsYm9yZGVyQm90dG9tV2lkdGg6ImhpZGUiLHBhZGRpbmdUb3A6ImhpZGUiLHBhZGRpbmdCb3R0b206ImhpZGUiLGhlaWdodDoiaGlkZSJ9LHNob3dQcm9wczp7Ym9yZGVyVG9wV2lkdGg6InNob3ciLGJvcmRlckJvdHRvbVdpZHRoOiJzaG93IixwYWRkaW5nVG9wOiJzaG93IixwYWRkaW5nQm90dG9tOiJzaG93IixoZWlnaHQ6InNob3cifSxfY3JlYXRlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zO3RoaXMucHJldlNob3c9dGhpcy5wcmV2SGlkZT11KCksdGhpcy5fYWRkQ2xhc3MoInVpLWFjY29yZGlvbiIsInVpLXdpZGdldCB1aS1oZWxwZXItcmVzZXQiKSx0aGlzLmVsZW1lbnQuYXR0cigicm9sZSIsInRhYmxpc3QiKSxlLmNvbGxhcHNpYmxlfHwhMSE9PWUuYWN0aXZlJiZudWxsIT1lLmFjdGl2ZXx8KGUuYWN0aXZlPTApLHRoaXMuX3Byb2Nlc3NQYW5lbHMoKSxlLmFjdGl2ZTwwJiYoZS5hY3RpdmUrPXRoaXMuaGVhZGVycy5sZW5ndGgpLHRoaXMuX3JlZnJlc2goKX0sX2dldENyZWF0ZUV2ZW50RGF0YTpmdW5jdGlvbigpe3JldHVybntoZWFkZXI6dGhpcy5hY3RpdmUscGFuZWw6dGhpcy5hY3RpdmUubGVuZ3RoP3RoaXMuYWN0aXZlLm5leHQoKTp1KCl9fSxfY3JlYXRlSWNvbnM6ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMub3B0aW9ucy5pY29uczt0JiYoZT11KCI8c3Bhbj4iKSx0aGlzLl9hZGRDbGFzcyhlLCJ1aS1hY2NvcmRpb24taGVhZGVyLWljb24iLCJ1aS1pY29uICIrdC5oZWFkZXIpLGUucHJlcGVuZFRvKHRoaXMuaGVhZGVycyksZT10aGlzLmFjdGl2ZS5jaGlsZHJlbigiLnVpLWFjY29yZGlvbi1oZWFkZXItaWNvbiIpLHRoaXMuX3JlbW92ZUNsYXNzKGUsdC5oZWFkZXIpLl9hZGRDbGFzcyhlLG51bGwsdC5hY3RpdmVIZWFkZXIpLl9hZGRDbGFzcyh0aGlzLmhlYWRlcnMsInVpLWFjY29yZGlvbi1pY29ucyIpKX0sX2Rlc3Ryb3lJY29uczpmdW5jdGlvbigpe3RoaXMuX3JlbW92ZUNsYXNzKHRoaXMuaGVhZGVycywidWktYWNjb3JkaW9uLWljb25zIiksdGhpcy5oZWFkZXJzLmNoaWxkcmVuKCIudWktYWNjb3JkaW9uLWhlYWRlci1pY29uIikucmVtb3ZlKCl9LF9kZXN0cm95OmZ1bmN0aW9uKCl7dmFyIGU7dGhpcy5lbGVtZW50LnJlbW92ZUF0dHIoInJvbGUiKSx0aGlzLmhlYWRlcnMucmVtb3ZlQXR0cigicm9sZSBhcmlhLWV4cGFuZGVkIGFyaWEtc2VsZWN0ZWQgYXJpYS1jb250cm9scyB0YWJJbmRleCIpLnJlbW92ZVVuaXF1ZUlkKCksdGhpcy5fZGVzdHJveUljb25zKCksZT10aGlzLmhlYWRlcnMubmV4dCgpLmNzcygiZGlzcGxheSIsIiIpLnJlbW92ZUF0dHIoInJvbGUgYXJpYS1oaWRkZW4gYXJpYS1sYWJlbGxlZGJ5IikucmVtb3ZlVW5pcXVlSWQoKSwiY29udGVudCIhPT10aGlzLm9wdGlvbnMuaGVpZ2h0U3R5bGUmJmUuY3NzKCJoZWlnaHQiLCIiKX0sX3NldE9wdGlvbjpmdW5jdGlvbihlLHQpeyJhY3RpdmUiIT09ZT8oImV2ZW50Ij09PWUmJih0aGlzLm9wdGlvbnMuZXZlbnQmJnRoaXMuX29mZih0aGlzLmhlYWRlcnMsdGhpcy5vcHRpb25zLmV2ZW50KSx0aGlzLl9zZXR1cEV2ZW50cyh0KSksdGhpcy5fc3VwZXIoZSx0KSwiY29sbGFwc2libGUiIT09ZXx8dHx8ITEhPT10aGlzLm9wdGlvbnMuYWN0aXZlfHx0aGlzLl9hY3RpdmF0ZSgwKSwiaWNvbnMiPT09ZSYmKHRoaXMuX2Rlc3Ryb3lJY29ucygpLHQmJnRoaXMuX2NyZWF0ZUljb25zKCkpKTp0aGlzLl9hY3RpdmF0ZSh0KX0sX3NldE9wdGlvbkRpc2FibGVkOmZ1bmN0aW9uKGUpe3RoaXMuX3N1cGVyKGUpLHRoaXMuZWxlbWVudC5hdHRyKCJhcmlhLWRpc2FibGVkIixlKSx0aGlzLl90b2dnbGVDbGFzcyhudWxsLCJ1aS1zdGF0ZS1kaXNhYmxlZCIsISFlKSx0aGlzLl90b2dnbGVDbGFzcyh0aGlzLmhlYWRlcnMuYWRkKHRoaXMuaGVhZGVycy5uZXh0KCkpLG51bGwsInVpLXN0YXRlLWRpc2FibGVkIiwhIWUpfSxfa2V5ZG93bjpmdW5jdGlvbihlKXtpZighZS5hbHRLZXkmJiFlLmN0cmxLZXkpe3ZhciB0PXUudWkua2V5Q29kZSxpPXRoaXMuaGVhZGVycy5sZW5ndGgscz10aGlzLmhlYWRlcnMuaW5kZXgoZS50YXJnZXQpLG49ITE7c3dpdGNoKGUua2V5Q29kZSl7Y2FzZSB0LlJJR0hUOmNhc2UgdC5ET1dOOm49dGhpcy5oZWFkZXJzWyhzKzEpJWldO2JyZWFrO2Nhc2UgdC5MRUZUOmNhc2UgdC5VUDpuPXRoaXMuaGVhZGVyc1socy0xK2kpJWldO2JyZWFrO2Nhc2UgdC5TUEFDRTpjYXNlIHQuRU5URVI6dGhpcy5fZXZlbnRIYW5kbGVyKGUpO2JyZWFrO2Nhc2UgdC5IT01FOm49dGhpcy5oZWFkZXJzWzBdO2JyZWFrO2Nhc2UgdC5FTkQ6bj10aGlzLmhlYWRlcnNbaS0xXX1uJiYodShlLnRhcmdldCkuYXR0cigidGFiSW5kZXgiLC0xKSx1KG4pLmF0dHIoInRhYkluZGV4IiwwKSx1KG4pLnRyaWdnZXIoImZvY3VzIiksZS5wcmV2ZW50RGVmYXVsdCgpKX19LF9wYW5lbEtleURvd246ZnVuY3Rpb24oZSl7ZS5rZXlDb2RlPT09dS51aS5rZXlDb2RlLlVQJiZlLmN0cmxLZXkmJnUoZS5jdXJyZW50VGFyZ2V0KS5wcmV2KCkudHJpZ2dlcigiZm9jdXMiKX0scmVmcmVzaDpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3B0aW9uczt0aGlzLl9wcm9jZXNzUGFuZWxzKCksITE9PT1lLmFjdGl2ZSYmITA9PT1lLmNvbGxhcHNpYmxlfHwhdGhpcy5oZWFkZXJzLmxlbmd0aD8oZS5hY3RpdmU9ITEsdGhpcy5hY3RpdmU9dSgpKTohMT09PWUuYWN0aXZlP3RoaXMuX2FjdGl2YXRlKDApOnRoaXMuYWN0aXZlLmxlbmd0aCYmIXUuY29udGFpbnModGhpcy5lbGVtZW50WzBdLHRoaXMuYWN0aXZlWzBdKT90aGlzLmhlYWRlcnMubGVuZ3RoPT09dGhpcy5oZWFkZXJzLmZpbmQoIi51aS1zdGF0ZS1kaXNhYmxlZCIpLmxlbmd0aD8oZS5hY3RpdmU9ITEsdGhpcy5hY3RpdmU9dSgpKTp0aGlzLl9hY3RpdmF0ZShNYXRoLm1heCgwLGUuYWN0aXZlLTEpKTplLmFjdGl2ZT10aGlzLmhlYWRlcnMuaW5kZXgodGhpcy5hY3RpdmUpLHRoaXMuX2Rlc3Ryb3lJY29ucygpLHRoaXMuX3JlZnJlc2goKX0sX3Byb2Nlc3NQYW5lbHM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmhlYWRlcnMsdD10aGlzLnBhbmVsczsiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5vcHRpb25zLmhlYWRlcj90aGlzLmhlYWRlcnM9dGhpcy5vcHRpb25zLmhlYWRlcih0aGlzLmVsZW1lbnQpOnRoaXMuaGVhZGVycz10aGlzLmVsZW1lbnQuZmluZCh0aGlzLm9wdGlvbnMuaGVhZGVyKSx0aGlzLl9hZGRDbGFzcyh0aGlzLmhlYWRlcnMsInVpLWFjY29yZGlvbi1oZWFkZXIgdWktYWNjb3JkaW9uLWhlYWRlci1jb2xsYXBzZWQiLCJ1aS1zdGF0ZS1kZWZhdWx0IiksdGhpcy5wYW5lbHM9dGhpcy5oZWFkZXJzLm5leHQoKS5maWx0ZXIoIjpub3QoLnVpLWFjY29yZGlvbi1jb250ZW50LWFjdGl2ZSkiKS5oaWRlKCksdGhpcy5fYWRkQ2xhc3ModGhpcy5wYW5lbHMsInVpLWFjY29yZGlvbi1jb250ZW50IiwidWktaGVscGVyLXJlc2V0IHVpLXdpZGdldC1jb250ZW50IiksdCYmKHRoaXMuX29mZihlLm5vdCh0aGlzLmhlYWRlcnMpKSx0aGlzLl9vZmYodC5ub3QodGhpcy5wYW5lbHMpKSl9LF9yZWZyZXNoOmZ1bmN0aW9uKCl7dmFyIGksZT10aGlzLm9wdGlvbnMsdD1lLmhlaWdodFN0eWxlLHM9dGhpcy5lbGVtZW50LnBhcmVudCgpO3RoaXMuYWN0aXZlPXRoaXMuX2ZpbmRBY3RpdmUoZS5hY3RpdmUpLHRoaXMuX2FkZENsYXNzKHRoaXMuYWN0aXZlLCJ1aS1hY2NvcmRpb24taGVhZGVyLWFjdGl2ZSIsInVpLXN0YXRlLWFjdGl2ZSIpLl9yZW1vdmVDbGFzcyh0aGlzLmFjdGl2ZSwidWktYWNjb3JkaW9uLWhlYWRlci1jb2xsYXBzZWQiKSx0aGlzLl9hZGRDbGFzcyh0aGlzLmFjdGl2ZS5uZXh0KCksInVpLWFjY29yZGlvbi1jb250ZW50LWFjdGl2ZSIpLHRoaXMuYWN0aXZlLm5leHQoKS5zaG93KCksdGhpcy5oZWFkZXJzLmF0dHIoInJvbGUiLCJ0YWIiKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9dSh0aGlzKSx0PWUudW5pcXVlSWQoKS5hdHRyKCJpZCIpLGk9ZS5uZXh0KCkscz1pLnVuaXF1ZUlkKCkuYXR0cigiaWQiKTtlLmF0dHIoImFyaWEtY29udHJvbHMiLHMpLGkuYXR0cigiYXJpYS1sYWJlbGxlZGJ5Iix0KX0pLm5leHQoKS5hdHRyKCJyb2xlIiwidGFicGFuZWwiKSx0aGlzLmhlYWRlcnMubm90KHRoaXMuYWN0aXZlKS5hdHRyKHsiYXJpYS1zZWxlY3RlZCI6ImZhbHNlIiwiYXJpYS1leHBhbmRlZCI6ImZhbHNlIix0YWJJbmRleDotMX0pLm5leHQoKS5hdHRyKHsiYXJpYS1oaWRkZW4iOiJ0cnVlIn0pLmhpZGUoKSx0aGlzLmFjdGl2ZS5sZW5ndGg\/dGhpcy5hY3RpdmUuYXR0cih7ImFyaWEtc2VsZWN0ZWQiOiJ0cnVlIiwiYXJpYS1leHBhbmRlZCI6InRydWUiLHRhYkluZGV4OjB9KS5uZXh0KCkuYXR0cih7ImFyaWEtaGlkZGVuIjoiZmFsc2UifSk6dGhpcy5oZWFkZXJzLmVxKDApLmF0dHIoInRhYkluZGV4IiwwKSx0aGlzLl9jcmVhdGVJY29ucygpLHRoaXMuX3NldHVwRXZlbnRzKGUuZXZlbnQpLCJmaWxsIj09PXQ\/KGk9cy5oZWlnaHQoKSx0aGlzLmVsZW1lbnQuc2libGluZ3MoIjp2aXNpYmxlIikuZWFjaChmdW5jdGlvbigpe3ZhciBlPXUodGhpcyksdD1lLmNzcygicG9zaXRpb24iKTsiYWJzb2x1dGUiIT09dCYmImZpeGVkIiE9PXQmJihpLT1lLm91dGVySGVpZ2h0KCEwKSl9KSx0aGlzLmhlYWRlcnMuZWFjaChmdW5jdGlvbigpe2ktPXUodGhpcykub3V0ZXJIZWlnaHQoITApfSksdGhpcy5oZWFkZXJzLm5leHQoKS5lYWNoKGZ1bmN0aW9uKCl7dSh0aGlzKS5oZWlnaHQoTWF0aC5tYXgoMCxpLXUodGhpcykuaW5uZXJIZWlnaHQoKSt1KHRoaXMpLmhlaWdodCgpKSl9KS5jc3MoIm92ZXJmbG93IiwiYXV0byIpKToiYXV0byI9PT10JiYoaT0wLHRoaXMuaGVhZGVycy5uZXh0KCkuZWFjaChmdW5jdGlvbigpe3ZhciBlPXUodGhpcykuaXMoIjp2aXNpYmxlIik7ZXx8dSh0aGlzKS5zaG93KCksaT1NYXRoLm1heChpLHUodGhpcykuY3NzKCJoZWlnaHQiLCIiKS5oZWlnaHQoKSksZXx8dSh0aGlzKS5oaWRlKCl9KS5oZWlnaHQoaSkpfSxfYWN0aXZhdGU6ZnVuY3Rpb24oZSl7ZT10aGlzLl9maW5kQWN0aXZlKGUpWzBdO2UhPT10aGlzLmFjdGl2ZVswXSYmKGU9ZXx8dGhpcy5hY3RpdmVbMF0sdGhpcy5fZXZlbnRIYW5kbGVyKHt0YXJnZXQ6ZSxjdXJyZW50VGFyZ2V0OmUscHJldmVudERlZmF1bHQ6dS5ub29wfSkpfSxfZmluZEFjdGl2ZTpmdW5jdGlvbihlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGU\/dGhpcy5oZWFkZXJzLmVxKGUpOnUoKX0sX3NldHVwRXZlbnRzOmZ1bmN0aW9uKGUpe3ZhciBpPXtrZXlkb3duOiJfa2V5ZG93biJ9O2UmJnUuZWFjaChlLnNwbGl0KCIgIiksZnVuY3Rpb24oZSx0KXtpW3RdPSJfZXZlbnRIYW5kbGVyIn0pLHRoaXMuX29mZih0aGlzLmhlYWRlcnMuYWRkKHRoaXMuaGVhZGVycy5uZXh0KCkpKSx0aGlzLl9vbih0aGlzLmhlYWRlcnMsaSksdGhpcy5fb24odGhpcy5oZWFkZXJzLm5leHQoKSx7a2V5ZG93bjoiX3BhbmVsS2V5RG93biJ9KSx0aGlzLl9ob3ZlcmFibGUodGhpcy5oZWFkZXJzKSx0aGlzLl9mb2N1c2FibGUodGhpcy5oZWFkZXJzKX0sX2V2ZW50SGFuZGxlcjpmdW5jdGlvbihlKXt2YXIgdD10aGlzLm9wdGlvbnMsaT10aGlzLmFjdGl2ZSxzPXUoZS5jdXJyZW50VGFyZ2V0KSxuPXNbMF09PT1pWzBdLGE9biYmdC5jb2xsYXBzaWJsZSxvPWE\/dSgpOnMubmV4dCgpLHI9aS5uZXh0KCksbz17b2xkSGVhZGVyOmksb2xkUGFuZWw6cixuZXdIZWFkZXI6YT91KCk6cyxuZXdQYW5lbDpvfTtlLnByZXZlbnREZWZhdWx0KCksbiYmIXQuY29sbGFwc2libGV8fCExPT09dGhpcy5fdHJpZ2dlcigiYmVmb3JlQWN0aXZhdGUiLGUsbyl8fCh0LmFjdGl2ZT0hYSYmdGhpcy5oZWFkZXJzLmluZGV4KHMpLHRoaXMuYWN0aXZlPW4\/dSgpOnMsdGhpcy5fdG9nZ2xlKG8pLHRoaXMuX3JlbW92ZUNsYXNzKGksInVpLWFjY29yZGlvbi1oZWFkZXItYWN0aXZlIiwidWktc3RhdGUtYWN0aXZlIiksdC5pY29ucyYmKGk9aS5jaGlsZHJlbigiLnVpLWFjY29yZGlvbi1oZWFkZXItaWNvbiIpLHRoaXMuX3JlbW92ZUNsYXNzKGksbnVsbCx0Lmljb25zLmFjdGl2ZUhlYWRlcikuX2FkZENsYXNzKGksbnVsbCx0Lmljb25zLmhlYWRlcikpLG58fCh0aGlzLl9yZW1vdmVDbGFzcyhzLCJ1aS1hY2NvcmRpb24taGVhZGVyLWNvbGxhcHNlZCIpLl9hZGRDbGFzcyhzLCJ1aS1hY2NvcmRpb24taGVhZGVyLWFjdGl2ZSIsInVpLXN0YXRlLWFjdGl2ZSIpLHQuaWNvbnMmJihuPXMuY2hpbGRyZW4oIi51aS1hY2NvcmRpb24taGVhZGVyLWljb24iKSx0aGlzLl9yZW1vdmVDbGFzcyhuLG51bGwsdC5pY29ucy5oZWFkZXIpLl9hZGRDbGFzcyhuLG51bGwsdC5pY29ucy5hY3RpdmVIZWFkZXIpKSx0aGlzLl9hZGRDbGFzcyhzLm5leHQoKSwidWktYWNjb3JkaW9uLWNvbnRlbnQtYWN0aXZlIikpKX0sX3RvZ2dsZTpmdW5jdGlvbihlKXt2YXIgdD1lLm5ld1BhbmVsLGk9dGhpcy5wcmV2U2hvdy5sZW5ndGg\/dGhpcy5wcmV2U2hvdzplLm9sZFBhbmVsO3RoaXMucHJldlNob3cuYWRkKHRoaXMucHJldkhpZGUpLnN0b3AoITAsITApLHRoaXMucHJldlNob3c9dCx0aGlzLnByZXZIaWRlPWksdGhpcy5vcHRpb25zLmFuaW1hdGU\/dGhpcy5fYW5pbWF0ZSh0LGksZSk6KGkuaGlkZSgpLHQuc2hvdygpLHRoaXMuX3RvZ2dsZUNvbXBsZXRlKGUpKSxpLmF0dHIoeyJhcmlhLWhpZGRlbiI6InRydWUifSksaS5wcmV2KCkuYXR0cih7ImFyaWEtc2VsZWN0ZWQiOiJmYWxzZSIsImFyaWEtZXhwYW5kZWQiOiJmYWxzZSJ9KSx0Lmxlbmd0aCYmaS5sZW5ndGg\/aS5wcmV2KCkuYXR0cih7dGFiSW5kZXg6LTEsImFyaWEtZXhwYW5kZWQiOiJmYWxzZSJ9KTp0Lmxlbmd0aCYmdGhpcy5oZWFkZXJzLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiAwPT09cGFyc2VJbnQodSh0aGlzKS5hdHRyKCJ0YWJJbmRleCIpLDEwKX0pLmF0dHIoInRhYkluZGV4IiwtMSksdC5hdHRyKCJhcmlhLWhpZGRlbiIsImZhbHNlIikucHJldigpLmF0dHIoeyJhcmlhLXNlbGVjdGVkIjoidHJ1ZSIsImFyaWEtZXhwYW5kZWQiOiJ0cnVlIix0YWJJbmRleDowfSl9LF9hbmltYXRlOmZ1bmN0aW9uKGUsaSx0KXt2YXIgcyxuLGEsbz10aGlzLHI9MCxoPWUuY3NzKCJib3gtc2l6aW5nIiksbD1lLmxlbmd0aCYmKCFpLmxlbmd0aHx8ZS5pbmRleCgpPGkuaW5kZXgoKSksdT10aGlzLm9wdGlvbnMuYW5pbWF0ZXx8e30sYz1sJiZ1LmRvd258fHUsbD1mdW5jdGlvbigpe28uX3RvZ2dsZUNvbXBsZXRlKHQpfTtyZXR1cm4gbj0obj0ic3RyaW5nIj09dHlwZW9mIGM\/YzpuKXx8Yy5lYXNpbmd8fHUuZWFzaW5nLGE9KGE9Im51bWJlciI9PXR5cGVvZiBjP2M6YSl8fGMuZHVyYXRpb258fHUuZHVyYXRpb24saS5sZW5ndGg\/ZS5sZW5ndGg\/KHM9ZS5zaG93KCkub3V0ZXJIZWlnaHQoKSxpLmFuaW1hdGUodGhpcy5oaWRlUHJvcHMse2R1cmF0aW9uOmEsZWFzaW5nOm4sc3RlcDpmdW5jdGlvbihlLHQpe3Qubm93PU1hdGgucm91bmQoZSl9fSksdm9pZCBlLmhpZGUoKS5hbmltYXRlKHRoaXMuc2hvd1Byb3BzLHtkdXJhdGlvbjphLGVhc2luZzpuLGNvbXBsZXRlOmwsc3RlcDpmdW5jdGlvbihlLHQpe3Qubm93PU1hdGgucm91bmQoZSksImhlaWdodCIhPT10LnByb3A\/ImNvbnRlbnQtYm94Ij09PWgmJihyKz10Lm5vdyk6ImNvbnRlbnQiIT09by5vcHRpb25zLmhlaWdodFN0eWxlJiYodC5ub3c9TWF0aC5yb3VuZChzLWkub3V0ZXJIZWlnaHQoKS1yKSxyPTApfX0pKTppLmFuaW1hdGUodGhpcy5oaWRlUHJvcHMsYSxuLGwpOmUuYW5pbWF0ZSh0aGlzLnNob3dQcm9wcyxhLG4sbCl9LF90b2dnbGVDb21wbGV0ZTpmdW5jdGlvbihlKXt2YXIgdD1lLm9sZFBhbmVsLGk9dC5wcmV2KCk7dGhpcy5fcmVtb3ZlQ2xhc3ModCwidWktYWNjb3JkaW9uLWNvbnRlbnQtYWN0aXZlIiksdGhpcy5fcmVtb3ZlQ2xhc3MoaSwidWktYWNjb3JkaW9uLWhlYWRlci1hY3RpdmUiKS5fYWRkQ2xhc3MoaSwidWktYWNjb3JkaW9uLWhlYWRlci1jb2xsYXBzZWQiKSx0Lmxlbmd0aCYmKHQucGFyZW50KClbMF0uY2xhc3NOYW1lPXQucGFyZW50KClbMF0uY2xhc3NOYW1lKSx0aGlzLl90cmlnZ2VyKCJhY3RpdmF0ZSIsbnVsbCxlKX19KSx1LnVpLmllPSEhL21zaWUgW1x3Ll0rLy5leGVjKG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSk7dmFyIGUsYT0hMTt1KGRvY3VtZW50KS5vbigibW91c2V1cCIsZnVuY3Rpb24oKXthPSExfSk7dS53aWRnZXQoInVpLm1vdXNlIix7dmVyc2lvbjoiMS4xMy4yIixvcHRpb25zOntjYW5jZWw6ImlucHV0LCB0ZXh0YXJlYSwgYnV0dG9uLCBzZWxlY3QsIG9wdGlvbiIsZGlzdGFuY2U6MSxkZWxheTowfSxfbW91c2VJbml0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLmVsZW1lbnQub24oIm1vdXNlZG93bi4iK3RoaXMud2lkZ2V0TmFtZSxmdW5jdGlvbihlKXtyZXR1cm4gdC5fbW91c2VEb3duKGUpfSkub24oImNsaWNrLiIrdGhpcy53aWRnZXROYW1lLGZ1bmN0aW9uKGUpe2lmKCEwPT09dS5kYXRhKGUudGFyZ2V0LHQud2lkZ2V0TmFtZSsiLnByZXZlbnRDbGlja0V2ZW50IikpcmV0dXJuIHUucmVtb3ZlRGF0YShlLnRhcmdldCx0LndpZGdldE5hbWUrIi5wcmV2ZW50Q2xpY2tFdmVudCIpLGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksITF9KSx0aGlzLnN0YXJ0ZWQ9ITF9LF9tb3VzZURlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQub2ZmKCIuIit0aGlzLndpZGdldE5hbWUpLHRoaXMuX21vdXNlTW92ZURlbGVnYXRlJiZ0aGlzLmRvY3VtZW50Lm9mZigibW91c2Vtb3ZlLiIrdGhpcy53aWRnZXROYW1lLHRoaXMuX21vdXNlTW92ZURlbGVnYXRlKS5vZmYoIm1vdXNldXAuIit0aGlzLndpZGdldE5hbWUsdGhpcy5fbW91c2VVcERlbGVnYXRlKX0sX21vdXNlRG93bjpmdW5jdGlvbihlKXtpZighYSl7dGhpcy5fbW91c2VNb3ZlZD0hMSx0aGlzLl9tb3VzZVN0YXJ0ZWQmJnRoaXMuX21vdXNlVXAoZSksdGhpcy5fbW91c2VEb3duRXZlbnQ9ZTt2YXIgdD10aGlzLGk9MT09PWUud2hpY2gscz0hKCJzdHJpbmciIT10eXBlb2YgdGhpcy5vcHRpb25zLmNhbmNlbHx8IWUudGFyZ2V0Lm5vZGVOYW1lKSYmdShlLnRhcmdldCkuY2xvc2VzdCh0aGlzLm9wdGlvbnMuY2FuY2VsKS5sZW5ndGg7cmV0dXJuIGkmJiFzJiZ0aGlzLl9tb3VzZUNhcHR1cmUoZSk\/KHRoaXMubW91c2VEZWxheU1ldD0hdGhpcy5vcHRpb25zLmRlbGF5LHRoaXMubW91c2VEZWxheU1ldHx8KHRoaXMuX21vdXNlRGVsYXlUaW1lcj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dC5tb3VzZURlbGF5TWV0PSEwfSx0aGlzLm9wdGlvbnMuZGVsYXkpKSx0aGlzLl9tb3VzZURpc3RhbmNlTWV0KGUpJiZ0aGlzLl9tb3VzZURlbGF5TWV0KGUpJiYodGhpcy5fbW91c2VTdGFydGVkPSExIT09dGhpcy5fbW91c2VTdGFydChlKSwhdGhpcy5fbW91c2VTdGFydGVkKT8oZS5wcmV2ZW50RGVmYXVsdCgpLCEwKTooITA9PT11LmRhdGEoZS50YXJnZXQsdGhpcy53aWRnZXROYW1lKyIucHJldmVudENsaWNrRXZlbnQiKSYmdS5yZW1vdmVEYXRhKGUudGFyZ2V0LHRoaXMud2lkZ2V0TmFtZSsiLnByZXZlbnRDbGlja0V2ZW50IiksdGhpcy5fbW91c2VNb3ZlRGVsZWdhdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHQuX21vdXNlTW92ZShlKX0sdGhpcy5fbW91c2VVcERlbGVnYXRlPWZ1bmN0aW9uKGUpe3JldHVybiB0Ll9tb3VzZVVwKGUpfSx0aGlzLmRvY3VtZW50Lm9uKCJtb3VzZW1vdmUuIit0aGlzLndpZGdldE5hbWUsdGhpcy5fbW91c2VNb3ZlRGVsZWdhdGUpLm9uKCJtb3VzZXVwLiIrdGhpcy53aWRnZXROYW1lLHRoaXMuX21vdXNlVXBEZWxlZ2F0ZSksZS5wcmV2ZW50RGVmYXVsdCgpLGE9ITApKTohMH19LF9tb3VzZU1vdmU6ZnVuY3Rpb24oZSl7aWYodGhpcy5fbW91c2VNb3ZlZCl7aWYodS51aS5pZSYmKCFkb2N1bWVudC5kb2N1bWVudE1vZGV8fGRvY3VtZW50LmRvY3VtZW50TW9kZTw5KSYmIWUuYnV0dG9uKXJldHVybiB0aGlzLl9tb3VzZVVwKGUpO2lmKCFlLndoaWNoKWlmKGUub3JpZ2luYWxFdmVudC5hbHRLZXl8fGUub3JpZ2luYWxFdmVudC5jdHJsS2V5fHxlLm9yaWdpbmFsRXZlbnQubWV0YUtleXx8ZS5vcmlnaW5hbEV2ZW50LnNoaWZ0S2V5KXRoaXMuaWdub3JlTWlzc2luZ1doaWNoPSEwO2Vsc2UgaWYoIXRoaXMuaWdub3JlTWlzc2luZ1doaWNoKXJldHVybiB0aGlzLl9tb3VzZVVwKGUpfXJldHVybihlLndoaWNofHxlLmJ1dHRvbikmJih0aGlzLl9tb3VzZU1vdmVkPSEwKSx0aGlzLl9tb3VzZVN0YXJ0ZWQ\/KHRoaXMuX21vdXNlRHJhZyhlKSxlLnByZXZlbnREZWZhdWx0KCkpOih0aGlzLl9tb3VzZURpc3RhbmNlTWV0KGUpJiZ0aGlzLl9tb3VzZURlbGF5TWV0KGUpJiYodGhpcy5fbW91c2VTdGFydGVkPSExIT09dGhpcy5fbW91c2VTdGFydCh0aGlzLl9tb3VzZURvd25FdmVudCxlKSx0aGlzLl9tb3VzZVN0YXJ0ZWQ\/dGhpcy5fbW91c2VEcmFnKGUpOnRoaXMuX21vdXNlVXAoZSkpLCF0aGlzLl9tb3VzZVN0YXJ0ZWQpfSxfbW91c2VVcDpmdW5jdGlvbihlKXt0aGlzLmRvY3VtZW50Lm9mZigibW91c2Vtb3ZlLiIrdGhpcy53aWRnZXROYW1lLHRoaXMuX21vdXNlTW92ZURlbGVnYXRlKS5vZmYoIm1vdXNldXAuIit0aGlzLndpZGdldE5hbWUsdGhpcy5fbW91c2VVcERlbGVnYXRlKSx0aGlzLl9tb3VzZVN0YXJ0ZWQmJih0aGlzLl9tb3VzZVN0YXJ0ZWQ9ITEsZS50YXJnZXQ9PT10aGlzLl9tb3VzZURvd25FdmVudC50YXJnZXQmJnUuZGF0YShlLnRhcmdldCx0aGlzLndpZGdldE5hbWUrIi5wcmV2ZW50Q2xpY2tFdmVudCIsITApLHRoaXMuX21vdXNlU3RvcChlKSksdGhpcy5fbW91c2VEZWxheVRpbWVyJiYoY2xlYXJUaW1lb3V0KHRoaXMuX21vdXNlRGVsYXlUaW1lciksZGVsZXRlIHRoaXMuX21vdXNlRGVsYXlUaW1lciksdGhpcy5pZ25vcmVNaXNzaW5nV2hpY2g9ITEsYT0hMSxlLnByZXZlbnREZWZhdWx0KCl9LF9tb3VzZURpc3RhbmNlTWV0OmZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLm1heChNYXRoLmFicyh0aGlzLl9tb3VzZURvd25FdmVudC5wYWdlWC1lLnBhZ2VYKSxNYXRoLmFicyh0aGlzLl9tb3VzZURvd25FdmVudC5wYWdlWS1lLnBhZ2VZKSk+PXRoaXMub3B0aW9ucy5kaXN0YW5jZX0sX21vdXNlRGVsYXlNZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tb3VzZURlbGF5TWV0fSxfbW91c2VTdGFydDpmdW5jdGlvbigpe30sX21vdXNlRHJhZzpmdW5jdGlvbigpe30sX21vdXNlU3RvcDpmdW5jdGlvbigpe30sX21vdXNlQ2FwdHVyZTpmdW5jdGlvbigpe3JldHVybiEwfX0pLHUud2lkZ2V0KCJ1aS5zbGlkZXIiLHUudWkubW91c2Use3ZlcnNpb246IjEuMTMuMiIsd2lkZ2V0RXZlbnRQcmVmaXg6InNsaWRlIixvcHRpb25zOnthbmltYXRlOiExLGNsYXNzZXM6eyJ1aS1zbGlkZXIiOiJ1aS1jb3JuZXItYWxsIiwidWktc2xpZGVyLWhhbmRsZSI6InVpLWNvcm5lci1hbGwiLCJ1aS1zbGlkZXItcmFuZ2UiOiJ1aS1jb3JuZXItYWxsIHVpLXdpZGdldC1oZWFkZXIifSxkaXN0YW5jZTowLG1heDoxMDAsbWluOjAsb3JpZW50YXRpb246Imhvcml6b250YWwiLHJhbmdlOiExLHN0ZXA6MSx2YWx1ZTowLHZhbHVlczpudWxsLGNoYW5nZTpudWxsLHNsaWRlOm51bGwsc3RhcnQ6bnVsbCxzdG9wOm51bGx9LG51bVBhZ2VzOjUsX2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuX2tleVNsaWRpbmc9ITEsdGhpcy5fbW91c2VTbGlkaW5nPSExLHRoaXMuX2FuaW1hdGVPZmY9ITAsdGhpcy5faGFuZGxlSW5kZXg9bnVsbCx0aGlzLl9kZXRlY3RPcmllbnRhdGlvbigpLHRoaXMuX21vdXNlSW5pdCgpLHRoaXMuX2NhbGN1bGF0ZU5ld01heCgpLHRoaXMuX2FkZENsYXNzKCJ1aS1zbGlkZXIgdWktc2xpZGVyLSIrdGhpcy5vcmllbnRhdGlvbiwidWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IiksdGhpcy5fcmVmcmVzaCgpLHRoaXMuX2FuaW1hdGVPZmY9ITF9LF9yZWZyZXNoOmZ1bmN0aW9uKCl7dGhpcy5fY3JlYXRlUmFuZ2UoKSx0aGlzLl9jcmVhdGVIYW5kbGVzKCksdGhpcy5fc2V0dXBFdmVudHMoKSx0aGlzLl9yZWZyZXNoVmFsdWUoKX0sX2NyZWF0ZUhhbmRsZXM6ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMub3B0aW9ucyxpPXRoaXMuZWxlbWVudC5maW5kKCIudWktc2xpZGVyLWhhbmRsZSIpLHM9W10sbj10LnZhbHVlcyYmdC52YWx1ZXMubGVuZ3RofHwxO2ZvcihpLmxlbmd0aD5uJiYoaS5zbGljZShuKS5yZW1vdmUoKSxpPWkuc2xpY2UoMCxuKSksZT1pLmxlbmd0aDtlPG47ZSsrKXMucHVzaCgiPHNwYW4gdGFiaW5kZXg9JzAnPjwvc3Bhbj4iKTt0aGlzLmhhbmRsZXM9aS5hZGQodShzLmpvaW4oIiIpKS5hcHBlbmRUbyh0aGlzLmVsZW1lbnQpKSx0aGlzLl9hZGRDbGFzcyh0aGlzLmhhbmRsZXMsInVpLXNsaWRlci1oYW5kbGUiLCJ1aS1zdGF0ZS1kZWZhdWx0IiksdGhpcy5oYW5kbGU9dGhpcy5oYW5kbGVzLmVxKDApLHRoaXMuaGFuZGxlcy5lYWNoKGZ1bmN0aW9uKGUpe3UodGhpcykuZGF0YSgidWktc2xpZGVyLWhhbmRsZS1pbmRleCIsZSkuYXR0cigidGFiSW5kZXgiLDApfSl9LF9jcmVhdGVSYW5nZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3B0aW9ucztlLnJhbmdlPyghMD09PWUucmFuZ2UmJihlLnZhbHVlcz9lLnZhbHVlcy5sZW5ndGgmJjIhPT1lLnZhbHVlcy5sZW5ndGg\/ZS52YWx1ZXM9W2UudmFsdWVzWzBdLGUudmFsdWVzWzBdXTpBcnJheS5pc0FycmF5KGUudmFsdWVzKSYmKGUudmFsdWVzPWUudmFsdWVzLnNsaWNlKDApKTplLnZhbHVlcz1bdGhpcy5fdmFsdWVNaW4oKSx0aGlzLl92YWx1ZU1pbigpXSksdGhpcy5yYW5nZSYmdGhpcy5yYW5nZS5sZW5ndGg\/KHRoaXMuX3JlbW92ZUNsYXNzKHRoaXMucmFuZ2UsInVpLXNsaWRlci1yYW5nZS1taW4gdWktc2xpZGVyLXJhbmdlLW1heCIpLHRoaXMucmFuZ2UuY3NzKHtsZWZ0OiIiLGJvdHRvbToiIn0pKToodGhpcy5yYW5nZT11KCI8ZGl2PiIpLmFwcGVuZFRvKHRoaXMuZWxlbWVudCksdGhpcy5fYWRkQ2xhc3ModGhpcy5yYW5nZSwidWktc2xpZGVyLXJhbmdlIikpLCJtaW4iIT09ZS5yYW5nZSYmIm1heCIhPT1lLnJhbmdlfHx0aGlzLl9hZGRDbGFzcyh0aGlzLnJhbmdlLCJ1aS1zbGlkZXItcmFuZ2UtIitlLnJhbmdlKSk6KHRoaXMucmFuZ2UmJnRoaXMucmFuZ2UucmVtb3ZlKCksdGhpcy5yYW5nZT1udWxsKX0sX3NldHVwRXZlbnRzOmZ1bmN0aW9uKCl7dGhpcy5fb2ZmKHRoaXMuaGFuZGxlcyksdGhpcy5fb24odGhpcy5oYW5kbGVzLHRoaXMuX2hhbmRsZUV2ZW50cyksdGhpcy5faG92ZXJhYmxlKHRoaXMuaGFuZGxlcyksdGhpcy5fZm9jdXNhYmxlKHRoaXMuaGFuZGxlcyl9LF9kZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5oYW5kbGVzLnJlbW92ZSgpLHRoaXMucmFuZ2UmJnRoaXMucmFuZ2UucmVtb3ZlKCksdGhpcy5fbW91c2VEZXN0cm95KCl9LF9tb3VzZUNhcHR1cmU6ZnVuY3Rpb24oZSl7dmFyIGkscyxuLGEsdCxvLHI9dGhpcyxoPXRoaXMub3B0aW9ucztyZXR1cm4haC5kaXNhYmxlZCYmKHRoaXMuZWxlbWVudFNpemU9e3dpZHRoOnRoaXMuZWxlbWVudC5vdXRlcldpZHRoKCksaGVpZ2h0OnRoaXMuZWxlbWVudC5vdXRlckhlaWdodCgpfSx0aGlzLmVsZW1lbnRPZmZzZXQ9dGhpcy5lbGVtZW50Lm9mZnNldCgpLG89e3g6ZS5wYWdlWCx5OmUucGFnZVl9LGk9dGhpcy5fbm9ybVZhbHVlRnJvbU1vdXNlKG8pLHM9dGhpcy5fdmFsdWVNYXgoKS10aGlzLl92YWx1ZU1pbigpKzEsdGhpcy5oYW5kbGVzLmVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9TWF0aC5hYnMoaS1yLnZhbHVlcyhlKSk7KHQ8c3x8cz09PXQmJihlPT09ci5fbGFzdENoYW5nZWRWYWx1ZXx8ci52YWx1ZXMoZSk9PT1oLm1pbikpJiYocz10LG49dSh0aGlzKSxhPWUpfSksITEhPT10aGlzLl9zdGFydChlLGEpJiYodGhpcy5fbW91c2VTbGlkaW5nPSEwLHRoaXMuX2hhbmRsZUluZGV4PWEsdGhpcy5fYWRkQ2xhc3MobixudWxsLCJ1aS1zdGF0ZS1hY3RpdmUiKSxuLnRyaWdnZXIoImZvY3VzIiksdD1uLm9mZnNldCgpLG89IXUoZS50YXJnZXQpLnBhcmVudHMoKS5hZGRCYWNrKCkuaXMoIi51aS1zbGlkZXItaGFuZGxlIiksdGhpcy5fY2xpY2tPZmZzZXQ9bz97bGVmdDowLHRvcDowfTp7bGVmdDplLnBhZ2VYLXQubGVmdC1uLndpZHRoKCkvMix0b3A6ZS5wYWdlWS10LnRvcC1uLmhlaWdodCgpLzItKHBhcnNlSW50KG4uY3NzKCJib3JkZXJUb3BXaWR0aCIpLDEwKXx8MCktKHBhcnNlSW50KG4uY3NzKCJib3JkZXJCb3R0b21XaWR0aCIpLDEwKXx8MCkrKHBhcnNlSW50KG4uY3NzKCJtYXJnaW5Ub3AiKSwxMCl8fDApfSx0aGlzLmhhbmRsZXMuaGFzQ2xhc3MoInVpLXN0YXRlLWhvdmVyIil8fHRoaXMuX3NsaWRlKGUsYSxpKSx0aGlzLl9hbmltYXRlT2ZmPSEwKSl9LF9tb3VzZVN0YXJ0OmZ1bmN0aW9uKCl7cmV0dXJuITB9LF9tb3VzZURyYWc6ZnVuY3Rpb24oZSl7dmFyIHQ9e3g6ZS5wYWdlWCx5OmUucGFnZVl9LHQ9dGhpcy5fbm9ybVZhbHVlRnJvbU1vdXNlKHQpO3JldHVybiB0aGlzLl9zbGlkZShlLHRoaXMuX2hhbmRsZUluZGV4LHQpLCExfSxfbW91c2VTdG9wOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9yZW1vdmVDbGFzcyh0aGlzLmhhbmRsZXMsbnVsbCwidWktc3RhdGUtYWN0aXZlIiksdGhpcy5fbW91c2VTbGlkaW5nPSExLHRoaXMuX3N0b3AoZSx0aGlzLl9oYW5kbGVJbmRleCksdGhpcy5fY2hhbmdlKGUsdGhpcy5faGFuZGxlSW5kZXgpLHRoaXMuX2hhbmRsZUluZGV4PW51bGwsdGhpcy5fY2xpY2tPZmZzZXQ9bnVsbCx0aGlzLl9hbmltYXRlT2ZmPSExfSxfZGV0ZWN0T3JpZW50YXRpb246ZnVuY3Rpb24oKXt0aGlzLm9yaWVudGF0aW9uPSJ2ZXJ0aWNhbCI9PT10aGlzLm9wdGlvbnMub3JpZW50YXRpb24\/InZlcnRpY2FsIjoiaG9yaXpvbnRhbCJ9LF9ub3JtVmFsdWVGcm9tTW91c2U6ZnVuY3Rpb24oZSl7dmFyIHQsZT0iaG9yaXpvbnRhbCI9PT10aGlzLm9yaWVudGF0aW9uPyh0PXRoaXMuZWxlbWVudFNpemUud2lkdGgsZS54LXRoaXMuZWxlbWVudE9mZnNldC5sZWZ0LSh0aGlzLl9jbGlja09mZnNldD90aGlzLl9jbGlja09mZnNldC5sZWZ0OjApKToodD10aGlzLmVsZW1lbnRTaXplLmhlaWdodCxlLnktdGhpcy5lbGVtZW50T2Zmc2V0LnRvcC0odGhpcy5fY2xpY2tPZmZzZXQ\/dGhpcy5fY2xpY2tPZmZzZXQudG9wOjApKSxlPWUvdDtyZXR1cm4oZT0xPGU\/MTplKTwwJiYoZT0wKSwidmVydGljYWwiPT09dGhpcy5vcmllbnRhdGlvbiYmKGU9MS1lKSx0PXRoaXMuX3ZhbHVlTWF4KCktdGhpcy5fdmFsdWVNaW4oKSx0PXRoaXMuX3ZhbHVlTWluKCkrZSp0LHRoaXMuX3RyaW1BbGlnblZhbHVlKHQpfSxfdWlIYXNoOmZ1bmN0aW9uKGUsdCxpKXt2YXIgcz17aGFuZGxlOnRoaXMuaGFuZGxlc1tlXSxoYW5kbGVJbmRleDplLHZhbHVlOnZvaWQgMCE9PXQ\/dDp0aGlzLnZhbHVlKCl9O3JldHVybiB0aGlzLl9oYXNNdWx0aXBsZVZhbHVlcygpJiYocy52YWx1ZT12b2lkIDAhPT10P3Q6dGhpcy52YWx1ZXMoZSkscy52YWx1ZXM9aXx8dGhpcy52YWx1ZXMoKSksc30sX2hhc011bHRpcGxlVmFsdWVzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy52YWx1ZXMmJnRoaXMub3B0aW9ucy52YWx1ZXMubGVuZ3RofSxfc3RhcnQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fdHJpZ2dlcigic3RhcnQiLGUsdGhpcy5fdWlIYXNoKHQpKX0sX3NsaWRlOmZ1bmN0aW9uKGUsdCxpKXt2YXIgcyxuPXRoaXMudmFsdWUoKSxhPXRoaXMudmFsdWVzKCk7dGhpcy5faGFzTXVsdGlwbGVWYWx1ZXMoKSYmKHM9dGhpcy52YWx1ZXModD8wOjEpLG49dGhpcy52YWx1ZXModCksMj09PXRoaXMub3B0aW9ucy52YWx1ZXMubGVuZ3RoJiYhMD09PXRoaXMub3B0aW9ucy5yYW5nZSYmKGk9MD09PXQ\/TWF0aC5taW4ocyxpKTpNYXRoLm1heChzLGkpKSxhW3RdPWkpLGkhPT1uJiYhMSE9PXRoaXMuX3RyaWdnZXIoInNsaWRlIixlLHRoaXMuX3VpSGFzaCh0LGksYSkpJiYodGhpcy5faGFzTXVsdGlwbGVWYWx1ZXMoKT90aGlzLnZhbHVlcyh0LGkpOnRoaXMudmFsdWUoaSkpfSxfc3RvcDpmdW5jdGlvbihlLHQpe3RoaXMuX3RyaWdnZXIoInN0b3AiLGUsdGhpcy5fdWlIYXNoKHQpKX0sX2NoYW5nZTpmdW5jdGlvbihlLHQpe3RoaXMuX2tleVNsaWRpbmd8fHRoaXMuX21vdXNlU2xpZGluZ3x8KHRoaXMuX2xhc3RDaGFuZ2VkVmFsdWU9dCx0aGlzLl90cmlnZ2VyKCJjaGFuZ2UiLGUsdGhpcy5fdWlIYXNoKHQpKSl9LHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0aGlzLm9wdGlvbnMudmFsdWU9dGhpcy5fdHJpbUFsaWduVmFsdWUoZSksdGhpcy5fcmVmcmVzaFZhbHVlKCksdm9pZCB0aGlzLl9jaGFuZ2UobnVsbCwwKSk6dGhpcy5fdmFsdWUoKX0sdmFsdWVzOmZ1bmN0aW9uKGUsdCl7dmFyIGkscyxuO2lmKDE8YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdGhpcy5vcHRpb25zLnZhbHVlc1tlXT10aGlzLl90cmltQWxpZ25WYWx1ZSh0KSx0aGlzLl9yZWZyZXNoVmFsdWUoKSx2b2lkIHRoaXMuX2NoYW5nZShudWxsLGUpO2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiB0aGlzLl92YWx1ZXMoKTtpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gdGhpcy5faGFzTXVsdGlwbGVWYWx1ZXMoKT90aGlzLl92YWx1ZXMoZSk6dGhpcy52YWx1ZSgpO2ZvcihpPXRoaXMub3B0aW9ucy52YWx1ZXMscz1lLG49MDtuPGkubGVuZ3RoO24rPTEpaVtuXT10aGlzLl90cmltQWxpZ25WYWx1ZShzW25dKSx0aGlzLl9jaGFuZ2UobnVsbCxuKTt0aGlzLl9yZWZyZXNoVmFsdWUoKX0sX3NldE9wdGlvbjpmdW5jdGlvbihlLHQpe3ZhciBpLHM9MDtzd2l0Y2goInJhbmdlIj09PWUmJiEwPT09dGhpcy5vcHRpb25zLnJhbmdlJiYoIm1pbiI9PT10Pyh0aGlzLm9wdGlvbnMudmFsdWU9dGhpcy5fdmFsdWVzKDApLHRoaXMub3B0aW9ucy52YWx1ZXM9bnVsbCk6Im1heCI9PT10JiYodGhpcy5vcHRpb25zLnZhbHVlPXRoaXMuX3ZhbHVlcyh0aGlzLm9wdGlvbnMudmFsdWVzLmxlbmd0aC0xKSx0aGlzLm9wdGlvbnMudmFsdWVzPW51bGwpKSxBcnJheS5pc0FycmF5KHRoaXMub3B0aW9ucy52YWx1ZXMpJiYocz10aGlzLm9wdGlvbnMudmFsdWVzLmxlbmd0aCksdGhpcy5fc3VwZXIoZSx0KSxlKXtjYXNlIm9yaWVudGF0aW9uIjp0aGlzLl9kZXRlY3RPcmllbnRhdGlvbigpLHRoaXMuX3JlbW92ZUNsYXNzKCJ1aS1zbGlkZXItaG9yaXpvbnRhbCB1aS1zbGlkZXItdmVydGljYWwiKS5fYWRkQ2xhc3MoInVpLXNsaWRlci0iK3RoaXMub3JpZW50YXRpb24pLHRoaXMuX3JlZnJlc2hWYWx1ZSgpLHRoaXMub3B0aW9ucy5yYW5nZSYmdGhpcy5fcmVmcmVzaFJhbmdlKHQpLHRoaXMuaGFuZGxlcy5jc3MoImhvcml6b250YWwiPT09dD8iYm90dG9tIjoibGVmdCIsIiIpO2JyZWFrO2Nhc2UidmFsdWUiOnRoaXMuX2FuaW1hdGVPZmY9ITAsdGhpcy5fcmVmcmVzaFZhbHVlKCksdGhpcy5fY2hhbmdlKG51bGwsMCksdGhpcy5fYW5pbWF0ZU9mZj0hMTticmVhaztjYXNlInZhbHVlcyI6Zm9yKHRoaXMuX2FuaW1hdGVPZmY9ITAsdGhpcy5fcmVmcmVzaFZhbHVlKCksaT1zLTE7MDw9aTtpLS0pdGhpcy5fY2hhbmdlKG51bGwsaSk7dGhpcy5fYW5pbWF0ZU9mZj0hMTticmVhaztjYXNlInN0ZXAiOmNhc2UibWluIjpjYXNlIm1heCI6dGhpcy5fYW5pbWF0ZU9mZj0hMCx0aGlzLl9jYWxjdWxhdGVOZXdNYXgoKSx0aGlzLl9yZWZyZXNoVmFsdWUoKSx0aGlzLl9hbmltYXRlT2ZmPSExO2JyZWFrO2Nhc2UicmFuZ2UiOnRoaXMuX2FuaW1hdGVPZmY9ITAsdGhpcy5fcmVmcmVzaCgpLHRoaXMuX2FuaW1hdGVPZmY9ITF9fSxfc2V0T3B0aW9uRGlzYWJsZWQ6ZnVuY3Rpb24oZSl7dGhpcy5fc3VwZXIoZSksdGhpcy5fdG9nZ2xlQ2xhc3MobnVsbCwidWktc3RhdGUtZGlzYWJsZWQiLCEhZSl9LF92YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3B0aW9ucy52YWx1ZTtyZXR1cm4gZT10aGlzLl90cmltQWxpZ25WYWx1ZShlKX0sX3ZhbHVlczpmdW5jdGlvbihlKXt2YXIgdCxpO2lmKGFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGU9dGhpcy5vcHRpb25zLnZhbHVlc1tlXSxlPXRoaXMuX3RyaW1BbGlnblZhbHVlKGUpO2lmKHRoaXMuX2hhc011bHRpcGxlVmFsdWVzKCkpe2Zvcih0PXRoaXMub3B0aW9ucy52YWx1ZXMuc2xpY2UoKSxpPTA7aTx0Lmxlbmd0aDtpKz0xKXRbaV09dGhpcy5fdHJpbUFsaWduVmFsdWUodFtpXSk7cmV0dXJuIHR9cmV0dXJuW119LF90cmltQWxpZ25WYWx1ZTpmdW5jdGlvbihlKXtpZihlPD10aGlzLl92YWx1ZU1pbigpKXJldHVybiB0aGlzLl92YWx1ZU1pbigpO2lmKGU+PXRoaXMuX3ZhbHVlTWF4KCkpcmV0dXJuIHRoaXMuX3ZhbHVlTWF4KCk7dmFyIHQ9MDx0aGlzLm9wdGlvbnMuc3RlcD90aGlzLm9wdGlvbnMuc3RlcDoxLGk9KGUtdGhpcy5fdmFsdWVNaW4oKSkldCxlPWUtaTtyZXR1cm4gMipNYXRoLmFicyhpKT49dCYmKGUrPTA8aT90Oi10KSxwYXJzZUZsb2F0KGUudG9GaXhlZCg1KSl9LF9jYWxjdWxhdGVOZXdNYXg6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9wdGlvbnMubWF4LHQ9dGhpcy5fdmFsdWVNaW4oKSxpPXRoaXMub3B0aW9ucy5zdGVwOyhlPU1hdGgucm91bmQoKGUtdCkvaSkqaSt0KT50aGlzLm9wdGlvbnMubWF4JiYoZS09aSksdGhpcy5tYXg9cGFyc2VGbG9hdChlLnRvRml4ZWQodGhpcy5fcHJlY2lzaW9uKCkpKX0sX3ByZWNpc2lvbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX3ByZWNpc2lvbk9mKHRoaXMub3B0aW9ucy5zdGVwKTtyZXR1cm4gZT1udWxsIT09dGhpcy5vcHRpb25zLm1pbj9NYXRoLm1heChlLHRoaXMuX3ByZWNpc2lvbk9mKHRoaXMub3B0aW9ucy5taW4pKTplfSxfcHJlY2lzaW9uT2Y6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50b1N0cmluZygpLGU9dC5pbmRleE9mKCIuIik7cmV0dXJuLTE9PT1lPzA6dC5sZW5ndGgtZS0xfSxfdmFsdWVNaW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHRpb25zLm1pbn0sX3ZhbHVlTWF4OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWF4fSxfcmVmcmVzaFJhbmdlOmZ1bmN0aW9uKGUpeyJ2ZXJ0aWNhbCI9PT1lJiZ0aGlzLnJhbmdlLmNzcyh7d2lkdGg6IiIsbGVmdDoiIn0pLCJob3Jpem9udGFsIj09PWUmJnRoaXMucmFuZ2UuY3NzKHtoZWlnaHQ6IiIsYm90dG9tOiIifSl9LF9yZWZyZXNoVmFsdWU6ZnVuY3Rpb24oKXt2YXIgdCxpLGUscyxuLGE9dGhpcy5vcHRpb25zLnJhbmdlLG89dGhpcy5vcHRpb25zLHI9dGhpcyxoPSF0aGlzLl9hbmltYXRlT2ZmJiZvLmFuaW1hdGUsbD17fTt0aGlzLl9oYXNNdWx0aXBsZVZhbHVlcygpP3RoaXMuaGFuZGxlcy5lYWNoKGZ1bmN0aW9uKGUpe2k9KHIudmFsdWVzKGUpLXIuX3ZhbHVlTWluKCkpLyhyLl92YWx1ZU1heCgpLXIuX3ZhbHVlTWluKCkpKjEwMCxsWyJob3Jpem9udGFsIj09PXIub3JpZW50YXRpb24\/ImxlZnQiOiJib3R0b20iXT1pKyIlIix1KHRoaXMpLnN0b3AoMSwxKVtoPyJhbmltYXRlIjoiY3NzIl0obCxvLmFuaW1hdGUpLCEwPT09ci5vcHRpb25zLnJhbmdlJiYoImhvcml6b250YWwiPT09ci5vcmllbnRhdGlvbj8oMD09PWUmJnIucmFuZ2Uuc3RvcCgxLDEpW2g\/ImFuaW1hdGUiOiJjc3MiXSh7bGVmdDppKyIlIn0sby5hbmltYXRlKSwxPT09ZSYmci5yYW5nZVtoPyJhbmltYXRlIjoiY3NzIl0oe3dpZHRoOmktdCsiJSJ9LHtxdWV1ZTohMSxkdXJhdGlvbjpvLmFuaW1hdGV9KSk6KDA9PT1lJiZyLnJhbmdlLnN0b3AoMSwxKVtoPyJhbmltYXRlIjoiY3NzIl0oe2JvdHRvbTppKyIlIn0sby5hbmltYXRlKSwxPT09ZSYmci5yYW5nZVtoPyJhbmltYXRlIjoiY3NzIl0oe2hlaWdodDppLXQrIiUifSx7cXVldWU6ITEsZHVyYXRpb246by5hbmltYXRlfSkpKSx0PWl9KTooZT10aGlzLnZhbHVlKCkscz10aGlzLl92YWx1ZU1pbigpLG49dGhpcy5fdmFsdWVNYXgoKSxpPW4hPT1zPyhlLXMpLyhuLXMpKjEwMDowLGxbImhvcml6b250YWwiPT09dGhpcy5vcmllbnRhdGlvbj8ibGVmdCI6ImJvdHRvbSJdPWkrIiUiLHRoaXMuaGFuZGxlLnN0b3AoMSwxKVtoPyJhbmltYXRlIjoiY3NzIl0obCxvLmFuaW1hdGUpLCJtaW4iPT09YSYmImhvcml6b250YWwiPT09dGhpcy5vcmllbnRhdGlvbiYmdGhpcy5yYW5nZS5zdG9wKDEsMSlbaD8iYW5pbWF0ZSI6ImNzcyJdKHt3aWR0aDppKyIlIn0sby5hbmltYXRlKSwibWF4Ij09PWEmJiJob3Jpem9udGFsIj09PXRoaXMub3JpZW50YXRpb24mJnRoaXMucmFuZ2Uuc3RvcCgxLDEpW2g\/ImFuaW1hdGUiOiJjc3MiXSh7d2lkdGg6MTAwLWkrIiUifSxvLmFuaW1hdGUpLCJtaW4iPT09YSYmInZlcnRpY2FsIj09PXRoaXMub3JpZW50YXRpb24mJnRoaXMucmFuZ2Uuc3RvcCgxLDEpW2g\/ImFuaW1hdGUiOiJjc3MiXSh7aGVpZ2h0OmkrIiUifSxvLmFuaW1hdGUpLCJtYXgiPT09YSYmInZlcnRpY2FsIj09PXRoaXMub3JpZW50YXRpb24mJnRoaXMucmFuZ2Uuc3RvcCgxLDEpW2g\/ImFuaW1hdGUiOiJjc3MiXSh7aGVpZ2h0OjEwMC1pKyIlIn0sby5hbmltYXRlKSl9LF9oYW5kbGVFdmVudHM6e2tleWRvd246ZnVuY3Rpb24oZSl7dmFyIHQsaSxzLG49dShlLnRhcmdldCkuZGF0YSgidWktc2xpZGVyLWhhbmRsZS1pbmRleCIpO3N3aXRjaChlLmtleUNvZGUpe2Nhc2UgdS51aS5rZXlDb2RlLkhPTUU6Y2FzZSB1LnVpLmtleUNvZGUuRU5EOmNhc2UgdS51aS5rZXlDb2RlLlBBR0VfVVA6Y2FzZSB1LnVpLmtleUNvZGUuUEFHRV9ET1dOOmNhc2UgdS51aS5rZXlDb2RlLlVQOmNhc2UgdS51aS5rZXlDb2RlLlJJR0hUOmNhc2UgdS51aS5rZXlDb2RlLkRPV046Y2FzZSB1LnVpLmtleUNvZGUuTEVGVDppZihlLnByZXZlbnREZWZhdWx0KCksIXRoaXMuX2tleVNsaWRpbmcmJih0aGlzLl9rZXlTbGlkaW5nPSEwLHRoaXMuX2FkZENsYXNzKHUoZS50YXJnZXQpLG51bGwsInVpLXN0YXRlLWFjdGl2ZSIpLCExPT09dGhpcy5fc3RhcnQoZSxuKSkpcmV0dXJufXN3aXRjaChzPXRoaXMub3B0aW9ucy5zdGVwLHQ9aT10aGlzLl9oYXNNdWx0aXBsZVZhbHVlcygpP3RoaXMudmFsdWVzKG4pOnRoaXMudmFsdWUoKSxlLmtleUNvZGUpe2Nhc2UgdS51aS5rZXlDb2RlLkhPTUU6aT10aGlzLl92YWx1ZU1pbigpO2JyZWFrO2Nhc2UgdS51aS5rZXlDb2RlLkVORDppPXRoaXMuX3ZhbHVlTWF4KCk7YnJlYWs7Y2FzZSB1LnVpLmtleUNvZGUuUEFHRV9VUDppPXRoaXMuX3RyaW1BbGlnblZhbHVlKHQrKHRoaXMuX3ZhbHVlTWF4KCktdGhpcy5fdmFsdWVNaW4oKSkvdGhpcy5udW1QYWdlcyk7YnJlYWs7Y2FzZSB1LnVpLmtleUNvZGUuUEFHRV9ET1dOOmk9dGhpcy5fdHJpbUFsaWduVmFsdWUodC0odGhpcy5fdmFsdWVNYXgoKS10aGlzLl92YWx1ZU1pbigpKS90aGlzLm51bVBhZ2VzKTticmVhaztjYXNlIHUudWkua2V5Q29kZS5VUDpjYXNlIHUudWkua2V5Q29kZS5SSUdIVDppZih0PT09dGhpcy5fdmFsdWVNYXgoKSlyZXR1cm47aT10aGlzLl90cmltQWxpZ25WYWx1ZSh0K3MpO2JyZWFrO2Nhc2UgdS51aS5rZXlDb2RlLkRPV046Y2FzZSB1LnVpLmtleUNvZGUuTEVGVDppZih0PT09dGhpcy5fdmFsdWVNaW4oKSlyZXR1cm47aT10aGlzLl90cmltQWxpZ25WYWx1ZSh0LXMpfXRoaXMuX3NsaWRlKGUsbixpKX0sa2V5dXA6ZnVuY3Rpb24oZSl7dmFyIHQ9dShlLnRhcmdldCkuZGF0YSgidWktc2xpZGVyLWhhbmRsZS1pbmRleCIpO3RoaXMuX2tleVNsaWRpbmcmJih0aGlzLl9rZXlTbGlkaW5nPSExLHRoaXMuX3N0b3AoZSx0KSx0aGlzLl9jaGFuZ2UoZSx0KSx0aGlzLl9yZW1vdmVDbGFzcyh1KGUudGFyZ2V0KSxudWxsLCJ1aS1zdGF0ZS1hY3RpdmUiKSl9fX0pO3ZhciBoPXUsbD17fSxjPWwudG9TdHJpbmcsZD0vXihbXC0rXSk9XHMqKFxkK1wuP1xkKikvLGY9W3tyZTovcmdiYT9cKFxzKihcZHsxLDN9KVxzKixccyooXGR7MSwzfSlccyosXHMqKFxkezEsM30pXHMqKD86LFxzKihcZD8oPzpcLlxkKyk\/KVxzKik\/XCkvLHBhcnNlOmZ1bmN0aW9uKGUpe3JldHVybltlWzFdLGVbMl0sZVszXSxlWzRdXX19LHtyZTovcmdiYT9cKFxzKihcZCsoPzpcLlxkKyk\/KVwlXHMqLFxzKihcZCsoPzpcLlxkKyk\/KVwlXHMqLFxzKihcZCsoPzpcLlxkKyk\/KVwlXHMqKD86LFxzKihcZD8oPzpcLlxkKyk\/KVxzKik\/XCkvLHBhcnNlOmZ1bmN0aW9uKGUpe3JldHVyblsyLjU1KmVbMV0sMi41NSplWzJdLDIuNTUqZVszXSxlWzRdXX19LHtyZTovIyhbYS1mMC05XXsyfSkoW2EtZjAtOV17Mn0pKFthLWYwLTldezJ9KShbYS1mMC05XXsyfSk\/LyxwYXJzZTpmdW5jdGlvbihlKXtyZXR1cm5bcGFyc2VJbnQoZVsxXSwxNikscGFyc2VJbnQoZVsyXSwxNikscGFyc2VJbnQoZVszXSwxNiksZVs0XT8ocGFyc2VJbnQoZVs0XSwxNikvMjU1KS50b0ZpeGVkKDIpOjFdfX0se3JlOi8jKFthLWYwLTldKShbYS1mMC05XSkoW2EtZjAtOV0pKFthLWYwLTldKT8vLHBhcnNlOmZ1bmN0aW9uKGUpe3JldHVybltwYXJzZUludChlWzFdK2VbMV0sMTYpLHBhcnNlSW50KGVbMl0rZVsyXSwxNikscGFyc2VJbnQoZVszXStlWzNdLDE2KSxlWzRdPyhwYXJzZUludChlWzRdK2VbNF0sMTYpLzI1NSkudG9GaXhlZCgyKToxXX19LHtyZTovaHNsYT9cKFxzKihcZCsoPzpcLlxkKyk\/KVxzKixccyooXGQrKD86XC5cZCspPylcJVxzKixccyooXGQrKD86XC5cZCspPylcJVxzKig\/OixccyooXGQ\/KD86XC5cZCspPylccyopP1wpLyxzcGFjZToiaHNsYSIscGFyc2U6ZnVuY3Rpb24oZSl7cmV0dXJuW2VbMV0sZVsyXS8xMDAsZVszXS8xMDAsZVs0XV19fV0scD1oLkNvbG9yPWZ1bmN0aW9uKGUsdCxpLHMpe3JldHVybiBuZXcgaC5Db2xvci5mbi5wYXJzZShlLHQsaSxzKX0sZz17cmdiYTp7cHJvcHM6e3JlZDp7aWR4OjAsdHlwZToiYnl0ZSJ9LGdyZWVuOntpZHg6MSx0eXBlOiJieXRlIn0sYmx1ZTp7aWR4OjIsdHlwZToiYnl0ZSJ9fX0saHNsYTp7cHJvcHM6e2h1ZTp7aWR4OjAsdHlwZToiZGVncmVlcyJ9LHNhdHVyYXRpb246e2lkeDoxLHR5cGU6InBlcmNlbnQifSxsaWdodG5lc3M6e2lkeDoyLHR5cGU6InBlcmNlbnQifX19fSxtPXtieXRlOntmbG9vcjohMCxtYXg6MjU1fSxwZXJjZW50OnttYXg6MX0sZGVncmVlczp7bW9kOjM2MCxmbG9vcjohMH19LHY9cC5zdXBwb3J0PXt9LF89aCgiPHA+IilbMF0seT1oLmVhY2g7ZnVuY3Rpb24gYihlKXtyZXR1cm4gbnVsbD09ZT9lKyIiOiJvYmplY3QiPT10eXBlb2YgZT9sW2MuY2FsbChlKV18fCJvYmplY3QiOnR5cGVvZiBlfWZ1bmN0aW9uIHgoZSx0LGkpe3ZhciBzPW1bdC50eXBlXXx8e307cmV0dXJuIG51bGw9PWU\/aXx8IXQuZGVmP251bGw6dC5kZWY6KGU9cy5mbG9vcj9+fmU6cGFyc2VGbG9hdChlKSxpc05hTihlKT90LmRlZjpzLm1vZD8oZStzLm1vZCklcy5tb2Q6TWF0aC5taW4ocy5tYXgsTWF0aC5tYXgoMCxlKSkpfWZ1bmN0aW9uIHcocyl7dmFyIG49cCgpLGE9bi5fcmdiYT1bXTtyZXR1cm4gcz1zLnRvTG93ZXJDYXNlKCkseShmLGZ1bmN0aW9uKGUsdCl7dmFyIGk9dC5yZS5leGVjKHMpLGk9aSYmdC5wYXJzZShpKSx0PXQuc3BhY2V8fCJyZ2JhIjtpZihpKXJldHVybiBpPW5bdF0oaSksbltnW3RdLmNhY2hlXT1pW2dbdF0uY2FjaGVdLGE9bi5fcmdiYT1pLl9yZ2JhLCExfSksYS5sZW5ndGg\/KCIwLDAsMCwwIj09PWEuam9pbigpJiZoLmV4dGVuZChhLEgudHJhbnNwYXJlbnQpLG4pOkhbc119ZnVuY3Rpb24gQyhlLHQsaSl7cmV0dXJuIDYqKGk9KGkrMSklMSk8MT9lKyh0LWUpKmkqNjoyKmk8MT90OjMqaTwyP2UrKHQtZSkqKDIvMy1pKSo2OmV9Xy5zdHlsZS5jc3NUZXh0PSJiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMSwxLDEsLjUpIix2LnJnYmE9LTE8Xy5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IuaW5kZXhPZigicmdiYSIpLHkoZyxmdW5jdGlvbihlLHQpe3QuY2FjaGU9Il8iK2UsdC5wcm9wcy5hbHBoYT17aWR4OjMsdHlwZToicGVyY2VudCIsZGVmOjF9fSksaC5lYWNoKCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0IEVycm9yIFN5bWJvbCIuc3BsaXQoIiAiKSxmdW5jdGlvbihlLHQpe2xbIltvYmplY3QgIit0KyJdIl09dC50b0xvd2VyQ2FzZSgpfSksKHAuZm49aC5leHRlbmQocC5wcm90b3R5cGUse3BhcnNlOmZ1bmN0aW9uKG4sZSx0LGkpe2lmKHZvaWQgMD09PW4pcmV0dXJuIHRoaXMuX3JnYmE9W251bGwsbnVsbCxudWxsLG51bGxdLHRoaXM7KG4uanF1ZXJ5fHxuLm5vZGVUeXBlKSYmKG49aChuKS5jc3MoZSksZT12b2lkIDApO3ZhciBhPXRoaXMscz1iKG4pLG89dGhpcy5fcmdiYT1bXTtyZXR1cm4gdm9pZCAwIT09ZSYmKG49W24sZSx0LGldLHM9ImFycmF5IiksInN0cmluZyI9PT1zP3RoaXMucGFyc2UodyhuKXx8SC5fZGVmYXVsdCk6ImFycmF5Ij09PXM\/KHkoZy5yZ2JhLnByb3BzLGZ1bmN0aW9uKGUsdCl7b1t0LmlkeF09eChuW3QuaWR4XSx0KX0pLHRoaXMpOiJvYmplY3QiPT09cz8oeShnLG4gaW5zdGFuY2VvZiBwP2Z1bmN0aW9uKGUsdCl7blt0LmNhY2hlXSYmKGFbdC5jYWNoZV09blt0LmNhY2hlXS5zbGljZSgpKX06ZnVuY3Rpb24oZSxpKXt2YXIgcz1pLmNhY2hlO3koaS5wcm9wcyxmdW5jdGlvbihlLHQpe2lmKCFhW3NdJiZpLnRvKXtpZigiYWxwaGEiPT09ZXx8bnVsbD09bltlXSlyZXR1cm47YVtzXT1pLnRvKGEuX3JnYmEpfWFbc11bdC5pZHhdPXgobltlXSx0LCEwKX0pLGFbc10mJmguaW5BcnJheShudWxsLGFbc10uc2xpY2UoMCwzKSk8MCYmKG51bGw9PWFbc11bM10mJihhW3NdWzNdPTEpLGkuZnJvbSYmKGEuX3JnYmE9aS5mcm9tKGFbc10pKSl9KSx0aGlzKTp2b2lkIDB9LGlzOmZ1bmN0aW9uKGUpe3ZhciBuPXAoZSksYT0hMCxvPXRoaXM7cmV0dXJuIHkoZyxmdW5jdGlvbihlLHQpe3ZhciBpLHM9blt0LmNhY2hlXTtyZXR1cm4gcyYmKGk9b1t0LmNhY2hlXXx8dC50byYmdC50byhvLl9yZ2JhKXx8W10seSh0LnByb3BzLGZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9c1t0LmlkeF0pcmV0dXJuIGE9c1t0LmlkeF09PT1pW3QuaWR4XX0pKSxhfSksYX0sX3NwYWNlOmZ1bmN0aW9uKCl7dmFyIGk9W10scz10aGlzO3JldHVybiB5KGcsZnVuY3Rpb24oZSx0KXtzW3QuY2FjaGVdJiZpLnB1c2goZSl9KSxpLnBvcCgpfSx0cmFuc2l0aW9uOmZ1bmN0aW9uKGUsbyl7dmFyIHQ9KGw9cChlKSkuX3NwYWNlKCksaT1nW3RdLGU9MD09PXRoaXMuYWxwaGEoKT9wKCJ0cmFuc3BhcmVudCIpOnRoaXMscj1lW2kuY2FjaGVdfHxpLnRvKGUuX3JnYmEpLGg9ci5zbGljZSgpLGw9bFtpLmNhY2hlXTtyZXR1cm4geShpLnByb3BzLGZ1bmN0aW9uKGUsdCl7dmFyIGk9dC5pZHgscz1yW2ldLG49bFtpXSxhPW1bdC50eXBlXXx8e307bnVsbCE9PW4mJihudWxsPT09cz9oW2ldPW46KGEubW9kJiYobi1zPmEubW9kLzI\/cys9YS5tb2Q6cy1uPmEubW9kLzImJihzLT1hLm1vZCkpLGhbaV09eCgobi1zKSpvK3MsdCkpKX0pLHRoaXNbdF0oaCl9LGJsZW5kOmZ1bmN0aW9uKGUpe2lmKDE9PT10aGlzLl9yZ2JhWzNdKXJldHVybiB0aGlzO3ZhciB0PXRoaXMuX3JnYmEuc2xpY2UoKSxpPXQucG9wKCkscz1wKGUpLl9yZ2JhO3JldHVybiBwKGgubWFwKHQsZnVuY3Rpb24oZSx0KXtyZXR1cm4oMS1pKSpzW3RdK2kqZX0pKX0sdG9SZ2JhU3RyaW5nOmZ1bmN0aW9uKCl7dmFyIGU9InJnYmEoIix0PWgubWFwKHRoaXMuX3JnYmEsZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbCE9ZT9lOjI8dD8xOjB9KTtyZXR1cm4gMT09PXRbM10mJih0LnBvcCgpLGU9InJnYigiKSxlK3Quam9pbigpKyIpIn0sdG9Ic2xhU3RyaW5nOmZ1bmN0aW9uKCl7dmFyIGU9ImhzbGEoIix0PWgubWFwKHRoaXMuaHNsYSgpLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGw9PWUmJihlPTI8dD8xOjApLGU9dCYmdDwzP01hdGgucm91bmQoMTAwKmUpKyIlIjplfSk7cmV0dXJuIDE9PT10WzNdJiYodC5wb3AoKSxlPSJoc2woIiksZSt0LmpvaW4oKSsiKSJ9LHRvSGV4U3RyaW5nOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX3JnYmEuc2xpY2UoKSxpPXQucG9wKCk7cmV0dXJuIGUmJnQucHVzaCh+figyNTUqaSkpLCIjIitoLm1hcCh0LGZ1bmN0aW9uKGUpe3JldHVybiAxPT09KGU9KGV8fDApLnRvU3RyaW5nKDE2KSkubGVuZ3RoPyIwIitlOmV9KS5qb2luKCIiKX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMuX3JnYmFbM10\/InRyYW5zcGFyZW50Ijp0aGlzLnRvUmdiYVN0cmluZygpfX0pKS5wYXJzZS5wcm90b3R5cGU9cC5mbixnLmhzbGEudG89ZnVuY3Rpb24oZSl7aWYobnVsbD09ZVswXXx8bnVsbD09ZVsxXXx8bnVsbD09ZVsyXSlyZXR1cm5bbnVsbCxudWxsLG51bGwsZVszXV07dmFyIHQ9ZVswXS8yNTUsaT1lWzFdLzI1NSxzPWVbMl0vMjU1LG49ZVszXSxhPU1hdGgubWF4KHQsaSxzKSxvPU1hdGgubWluKHQsaSxzKSxyPWEtbyxoPWErbyxlPS41KmgsaT1vPT09YT8wOnQ9PT1hPzYwKihpLXMpL3IrMzYwOmk9PT1hPzYwKihzLXQpL3IrMTIwOjYwKih0LWkpL3IrMjQwLGg9MD09cj8wOmU8PS41P3IvaDpyLygyLWgpO3JldHVybltNYXRoLnJvdW5kKGkpJTM2MCxoLGUsbnVsbD09bj8xOm5dfSxnLmhzbGEuZnJvbT1mdW5jdGlvbihlKXtpZihudWxsPT1lWzBdfHxudWxsPT1lWzFdfHxudWxsPT1lWzJdKXJldHVybltudWxsLG51bGwsbnVsbCxlWzNdXTt2YXIgdD1lWzBdLzM2MCxpPWVbMV0scz1lWzJdLGU9ZVszXSxpPXM8PS41P3MqKDEraSk6cytpLXMqaSxzPTIqcy1pO3JldHVybltNYXRoLnJvdW5kKDI1NSpDKHMsaSx0KzEvMykpLE1hdGgucm91bmQoMjU1KkMocyxpLHQpKSxNYXRoLnJvdW5kKDI1NSpDKHMsaSx0LTEvMykpLGVdfSx5KGcsZnVuY3Rpb24oaCxlKXt2YXIgdD1lLnByb3BzLGE9ZS5jYWNoZSxvPWUudG8scj1lLmZyb207cC5mbltoXT1mdW5jdGlvbihlKXtpZihvJiYhdGhpc1thXSYmKHRoaXNbYV09byh0aGlzLl9yZ2JhKSksdm9pZCAwPT09ZSlyZXR1cm4gdGhpc1thXS5zbGljZSgpO3ZhciBpPWIoZSkscz0iYXJyYXkiPT09aXx8Im9iamVjdCI9PT1pP2U6YXJndW1lbnRzLG49dGhpc1thXS5zbGljZSgpO3JldHVybiB5KHQsZnVuY3Rpb24oZSx0KXtlPXNbIm9iamVjdCI9PT1pP2U6dC5pZHhdO251bGw9PWUmJihlPW5bdC5pZHhdKSxuW3QuaWR4XT14KGUsdCl9KSxyPygoZT1wKHIobikpKVthXT1uLGUpOnAobil9LHkodCxmdW5jdGlvbihvLHIpe3AuZm5bb118fChwLmZuW29dPWZ1bmN0aW9uKGUpe3ZhciB0LGk9YihlKSxzPSJhbHBoYSI9PT1vP3RoaXMuX2hzbGE\/ImhzbGEiOiJyZ2JhIjpoLG49dGhpc1tzXSgpLGE9bltyLmlkeF07cmV0dXJuInVuZGVmaW5lZCI9PT1pP2E6KCJmdW5jdGlvbiI9PT1pJiYoaT1iKGU9ZS5jYWxsKHRoaXMsYSkpKSxudWxsPT1lJiZyLmVtcHR5P3RoaXM6KCJzdHJpbmciPT09aSYmKHQ9ZC5leGVjKGUpKSYmKGU9YStwYXJzZUZsb2F0KHRbMl0pKigiKyI9PT10WzFdPzE6LTEpKSxuW3IuaWR4XT1lLHRoaXNbc10obikpKX0pfSl9KSwocC5ob29rPWZ1bmN0aW9uKGUpe2U9ZS5zcGxpdCgiICIpO3koZSxmdW5jdGlvbihlLGEpe2guY3NzSG9va3NbYV09e3NldDpmdW5jdGlvbihlLHQpe3ZhciBpLHMsbj0iIjtpZigidHJhbnNwYXJlbnQiIT09dCYmKCJzdHJpbmciIT09Yih0KXx8KGk9dyh0KSkpKXtpZih0PXAoaXx8dCksIXYucmdiYSYmMSE9PXQuX3JnYmFbM10pe2ZvcihzPSJiYWNrZ3JvdW5kQ29sb3IiPT09YT9lLnBhcmVudE5vZGU6ZTsoIiI9PT1ufHwidHJhbnNwYXJlbnQiPT09bikmJnMmJnMuc3R5bGU7KXRyeXtuPWguY3NzKHMsImJhY2tncm91bmRDb2xvciIpLHM9cy5wYXJlbnROb2RlfWNhdGNoKGUpe310PXQuYmxlbmQobiYmInRyYW5zcGFyZW50IiE9PW4\/bjoiX2RlZmF1bHQiKX10PXQudG9SZ2JhU3RyaW5nKCl9dHJ5e2Uuc3R5bGVbYV09dH1jYXRjaChlKXt9fX0saC5meC5zdGVwW2FdPWZ1bmN0aW9uKGUpe2UuY29sb3JJbml0fHwoZS5zdGFydD1wKGUuZWxlbSxhKSxlLmVuZD1wKGUuZW5kKSxlLmNvbG9ySW5pdD0hMCksaC5jc3NIb29rc1thXS5zZXQoZS5lbGVtLGUuc3RhcnQudHJhbnNpdGlvbihlLmVuZCxlLnBvcykpfX0pfSkoImJhY2tncm91bmRDb2xvciBib3JkZXJCb3R0b21Db2xvciBib3JkZXJMZWZ0Q29sb3IgYm9yZGVyUmlnaHRDb2xvciBib3JkZXJUb3BDb2xvciBjb2xvciBjb2x1bW5SdWxlQ29sb3Igb3V0bGluZUNvbG9yIHRleHREZWNvcmF0aW9uQ29sb3IgdGV4dEVtcGhhc2lzQ29sb3IiKSxoLmNzc0hvb2tzLmJvcmRlckNvbG9yPXtleHBhbmQ6ZnVuY3Rpb24oaSl7dmFyIHM9e307cmV0dXJuIHkoWyJUb3AiLCJSaWdodCIsIkJvdHRvbSIsIkxlZnQiXSxmdW5jdGlvbihlLHQpe3NbImJvcmRlciIrdCsiQ29sb3IiXT1pfSksc319O3ZhciBNLGssRCxFLFMsTyxJLE4sQSxQLEg9aC5Db2xvci5uYW1lcz17YXF1YToiIzAwZmZmZiIsYmxhY2s6IiMwMDAwMDAiLGJsdWU6IiMwMDAwZmYiLGZ1Y2hzaWE6IiNmZjAwZmYiLGdyYXk6IiM4MDgwODAiLGdyZWVuOiIjMDA4MDAwIixsaW1lOiIjMDBmZjAwIixtYXJvb246IiM4MDAwMDAiLG5hdnk6IiMwMDAwODAiLG9saXZlOiIjODA4MDAwIixwdXJwbGU6IiM4MDAwODAiLHJlZDoiI2ZmMDAwMCIsc2lsdmVyOiIjYzBjMGMwIix0ZWFsOiIjMDA4MDgwIix3aGl0ZToiI2ZmZmZmZiIseWVsbG93OiIjZmZmZjAwIix0cmFuc3BhcmVudDpbbnVsbCxudWxsLG51bGwsMF0sX2RlZmF1bHQ6IiNmZmZmZmYifSxUPSJ1aS1lZmZlY3RzLSIsVz0idWktZWZmZWN0cy1zdHlsZSIsVj0idWktZWZmZWN0cy1hbmltYXRlZCI7ZnVuY3Rpb24gRihlKXt2YXIgdCxpLHM9ZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3P2Uub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGUsbnVsbCk6ZS5jdXJyZW50U3R5bGUsbj17fTtpZihzJiZzLmxlbmd0aCYmc1swXSYmc1tzWzBdXSlmb3IoaT1zLmxlbmd0aDtpLS07KSJzdHJpbmciPT10eXBlb2Ygc1t0PXNbaV1dJiYoblt0LnJlcGxhY2UoLy0oW1xkYS16XSkvZ2ksZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC50b1VwcGVyQ2FzZSgpfSldPXNbdF0pO2Vsc2UgZm9yKHQgaW4gcykic3RyaW5nIj09dHlwZW9mIHNbdF0mJihuW3RdPXNbdF0pO3JldHVybiBufWZ1bmN0aW9uIHEoZSx0LGkscyl7cmV0dXJuIGU9e2VmZmVjdDplPXUuaXNQbGFpbk9iamVjdChlKT8odD1lKS5lZmZlY3Q6ZX0sImZ1bmN0aW9uIj09dHlwZW9mKHQ9bnVsbD09dD97fTp0KSYmKHM9dCxpPW51bGwsdD17fSksIm51bWJlciIhPXR5cGVvZiB0JiYhdS5meC5zcGVlZHNbdF18fChzPWksaT10LHQ9e30pLCJmdW5jdGlvbiI9PXR5cGVvZiBpJiYocz1pLGk9bnVsbCksdCYmdS5leHRlbmQoZSx0KSxpPWl8fHQuZHVyYXRpb24sZS5kdXJhdGlvbj11LmZ4Lm9mZj8wOiJudW1iZXIiPT10eXBlb2YgaT9pOmkgaW4gdS5meC5zcGVlZHM\/dS5meC5zcGVlZHNbaV06dS5meC5zcGVlZHMuX2RlZmF1bHQsZS5jb21wbGV0ZT1zfHx0LmNvbXBsZXRlLGV9ZnVuY3Rpb24gTChlKXtyZXR1cm4hZXx8Im51bWJlciI9PXR5cGVvZiBlfHx1LmZ4LnNwZWVkc1tlXXx8KCJzdHJpbmciPT10eXBlb2YgZSYmIXUuZWZmZWN0cy5lZmZlY3RbZV18fCgiZnVuY3Rpb24iPT10eXBlb2YgZXx8Im9iamVjdCI9PXR5cGVvZiBlJiYhZS5lZmZlY3QpKX1mdW5jdGlvbiBCKGUsdCl7dmFyIGk9dC5vdXRlcldpZHRoKCksdD10Lm91dGVySGVpZ2h0KCksZT0vXnJlY3RcKCgtP1xkKlwuP1xkKnB4fC0\/XGQrJXxhdXRvKSw\/XHMqKC0\/XGQqXC4\/XGQqcHh8LT9cZCslfGF1dG8pLD9ccyooLT9cZCpcLj9cZCpweHwtP1xkKyV8YXV0byksP1xzKigtP1xkKlwuP1xkKnB4fC0\/XGQrJXxhdXRvKVwpJC8uZXhlYyhlKXx8WyIiLDAsaSx0LDBdO3JldHVybnt0b3A6cGFyc2VGbG9hdChlWzFdKXx8MCxyaWdodDoiYXV0byI9PT1lWzJdP2k6cGFyc2VGbG9hdChlWzJdKSxib3R0b206ImF1dG8iPT09ZVszXT90OnBhcnNlRmxvYXQoZVszXSksbGVmdDpwYXJzZUZsb2F0KGVbNF0pfHwwfX11LmVmZmVjdHM9e2VmZmVjdDp7fX0sRT1bImFkZCIsInJlbW92ZSIsInRvZ2dsZSJdLFM9e2JvcmRlcjoxLGJvcmRlckJvdHRvbToxLGJvcmRlckNvbG9yOjEsYm9yZGVyTGVmdDoxLGJvcmRlclJpZ2h0OjEsYm9yZGVyVG9wOjEsYm9yZGVyV2lkdGg6MSxtYXJnaW46MSxwYWRkaW5nOjF9LHUuZWFjaChbImJvcmRlckxlZnRTdHlsZSIsImJvcmRlclJpZ2h0U3R5bGUiLCJib3JkZXJCb3R0b21TdHlsZSIsImJvcmRlclRvcFN0eWxlIl0sZnVuY3Rpb24oZSx0KXt1LmZ4LnN0ZXBbdF09ZnVuY3Rpb24oZSl7KCJub25lIiE9PWUuZW5kJiYhZS5zZXRBdHRyfHwxPT09ZS5wb3MmJiFlLnNldEF0dHIpJiYoaC5zdHlsZShlLmVsZW0sdCxlLmVuZCksZS5zZXRBdHRyPSEwKX19KSx1LmZuLmFkZEJhY2t8fCh1LmZuLmFkZEJhY2s9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuYWRkKG51bGw9PWU\/dGhpcy5wcmV2T2JqZWN0OnRoaXMucHJldk9iamVjdC5maWx0ZXIoZSkpfSksdS5lZmZlY3RzLmFuaW1hdGVDbGFzcz1mdW5jdGlvbihuLGUsdCxpKXt2YXIgYT11LnNwZWVkKGUsdCxpKTtyZXR1cm4gdGhpcy5xdWV1ZShmdW5jdGlvbigpe3ZhciBpPXUodGhpcyksZT1pLmF0dHIoImNsYXNzIil8fCIiLHQ9KHQ9YS5jaGlsZHJlbj9pLmZpbmQoIioiKS5hZGRCYWNrKCk6aSkubWFwKGZ1bmN0aW9uKCl7cmV0dXJue2VsOnUodGhpcyksc3RhcnQ6Rih0aGlzKX19KSxzPWZ1bmN0aW9uKCl7dS5lYWNoKEUsZnVuY3Rpb24oZSx0KXtuW3RdJiZpW3QrIkNsYXNzIl0oblt0XSl9KX07cygpLHQ9dC5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbmQ9Rih0aGlzLmVsWzBdKSx0aGlzLmRpZmY9ZnVuY3Rpb24oZSx0KXt2YXIgaSxzLG49e307Zm9yKGkgaW4gdClzPXRbaV0sZVtpXSE9PXMmJihTW2ldfHwhdS5meC5zdGVwW2ldJiZpc05hTihwYXJzZUZsb2F0KHMpKXx8KG5baV09cykpO3JldHVybiBufSh0aGlzLnN0YXJ0LHRoaXMuZW5kKSx0aGlzfSksaS5hdHRyKCJjbGFzcyIsZSksdD10Lm1hcChmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD11LkRlZmVycmVkKCksaT11LmV4dGVuZCh7fSxhLHtxdWV1ZTohMSxjb21wbGV0ZTpmdW5jdGlvbigpe3QucmVzb2x2ZShlKX19KTtyZXR1cm4gdGhpcy5lbC5hbmltYXRlKHRoaXMuZGlmZixpKSx0LnByb21pc2UoKX0pLHUud2hlbi5hcHBseSh1LHQuZ2V0KCkpLmRvbmUoZnVuY3Rpb24oKXtzKCksdS5lYWNoKGFyZ3VtZW50cyxmdW5jdGlvbigpe3ZhciB0PXRoaXMuZWw7dS5lYWNoKHRoaXMuZGlmZixmdW5jdGlvbihlKXt0LmNzcyhlLCIiKX0pfSksYS5jb21wbGV0ZS5jYWxsKGlbMF0pfSl9KX0sdS5mbi5leHRlbmQoe2FkZENsYXNzOihEPXUuZm4uYWRkQ2xhc3MsZnVuY3Rpb24oZSx0LGkscyl7cmV0dXJuIHQ\/dS5lZmZlY3RzLmFuaW1hdGVDbGFzcy5jYWxsKHRoaXMse2FkZDplfSx0LGkscyk6RC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KSxyZW1vdmVDbGFzczooaz11LmZuLnJlbW92ZUNsYXNzLGZ1bmN0aW9uKGUsdCxpLHMpe3JldHVybiAxPGFyZ3VtZW50cy5sZW5ndGg\/dS5lZmZlY3RzLmFuaW1hdGVDbGFzcy5jYWxsKHRoaXMse3JlbW92ZTplfSx0LGkscyk6ay5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KSx0b2dnbGVDbGFzczooTT11LmZuLnRvZ2dsZUNsYXNzLGZ1bmN0aW9uKGUsdCxpLHMsbil7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgdHx8dm9pZCAwPT09dD9pP3UuZWZmZWN0cy5hbmltYXRlQ2xhc3MuY2FsbCh0aGlzLHQ\/e2FkZDplfTp7cmVtb3ZlOmV9LGkscyxuKTpNLmFwcGx5KHRoaXMsYXJndW1lbnRzKTp1LmVmZmVjdHMuYW5pbWF0ZUNsYXNzLmNhbGwodGhpcyx7dG9nZ2xlOmV9LHQsaSxzKX0pLHN3aXRjaENsYXNzOmZ1bmN0aW9uKGUsdCxpLHMsbil7cmV0dXJuIHUuZWZmZWN0cy5hbmltYXRlQ2xhc3MuY2FsbCh0aGlzLHthZGQ6dCxyZW1vdmU6ZX0saSxzLG4pfX0pLHUuZXhwciYmdS5leHByLnBzZXVkb3MmJnUuZXhwci5wc2V1ZG9zLmFuaW1hdGVkJiYodS5leHByLnBzZXVkb3MuYW5pbWF0ZWQ9KE89dS5leHByLnBzZXVkb3MuYW5pbWF0ZWQsZnVuY3Rpb24oZSl7cmV0dXJuISF1KGUpLmRhdGEoVil8fE8oZSl9KSksITEhPT11LnVpQmFja0NvbXBhdCYmdS5leHRlbmQodS5lZmZlY3RzLHtzYXZlOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBpPTAscz10Lmxlbmd0aDtpPHM7aSsrKW51bGwhPT10W2ldJiZlLmRhdGEoVCt0W2ldLGVbMF0uc3R5bGVbdFtpXV0pfSxyZXN0b3JlOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBpLHM9MCxuPXQubGVuZ3RoO3M8bjtzKyspbnVsbCE9PXRbc10mJihpPWUuZGF0YShUK3Rbc10pLGUuY3NzKHRbc10saSkpfSxzZXRNb2RlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ9InRvZ2dsZSI9PT10P2UuaXMoIjpoaWRkZW4iKT8ic2hvdyI6ImhpZGUiOnR9LGNyZWF0ZVdyYXBwZXI6ZnVuY3Rpb24oaSl7aWYoaS5wYXJlbnQoKS5pcygiLnVpLWVmZmVjdHMtd3JhcHBlciIpKXJldHVybiBpLnBhcmVudCgpO3ZhciBzPXt3aWR0aDppLm91dGVyV2lkdGgoITApLGhlaWdodDppLm91dGVySGVpZ2h0KCEwKSxmbG9hdDppLmNzcygiZmxvYXQiKX0sZT11KCI8ZGl2PjwvZGl2PiIpLmFkZENsYXNzKCJ1aS1lZmZlY3RzLXdyYXBwZXIiKS5jc3Moe2ZvbnRTaXplOiIxMDAlIixiYWNrZ3JvdW5kOiJ0cmFuc3BhcmVudCIsYm9yZGVyOiJub25lIixtYXJnaW46MCxwYWRkaW5nOjB9KSx0PXt3aWR0aDppLndpZHRoKCksaGVpZ2h0OmkuaGVpZ2h0KCl9LG49ZG9jdW1lbnQuYWN0aXZlRWxlbWVudDt0cnl7bi5pZH1jYXRjaChlKXtuPWRvY3VtZW50LmJvZHl9cmV0dXJuIGkud3JhcChlKSxpWzBdIT09biYmIXUuY29udGFpbnMoaVswXSxuKXx8dShuKS50cmlnZ2VyKCJmb2N1cyIpLGU9aS5wYXJlbnQoKSwic3RhdGljIj09PWkuY3NzKCJwb3NpdGlvbiIpPyhlLmNzcyh7cG9zaXRpb246InJlbGF0aXZlIn0pLGkuY3NzKHtwb3NpdGlvbjoicmVsYXRpdmUifSkpOih1LmV4dGVuZChzLHtwb3NpdGlvbjppLmNzcygicG9zaXRpb24iKSx6SW5kZXg6aS5jc3MoInotaW5kZXgiKX0pLHUuZWFjaChbInRvcCIsImxlZnQiLCJib3R0b20iLCJyaWdodCJdLGZ1bmN0aW9uKGUsdCl7c1t0XT1pLmNzcyh0KSxpc05hTihwYXJzZUludChzW3RdLDEwKSkmJihzW3RdPSJhdXRvIil9KSxpLmNzcyh7cG9zaXRpb246InJlbGF0aXZlIix0b3A6MCxsZWZ0OjAscmlnaHQ6ImF1dG8iLGJvdHRvbToiYXV0byJ9KSksaS5jc3ModCksZS5jc3Mocykuc2hvdygpfSxyZW1vdmVXcmFwcGVyOmZ1bmN0aW9uKGUpe3ZhciB0PWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7cmV0dXJuIGUucGFyZW50KCkuaXMoIi51aS1lZmZlY3RzLXdyYXBwZXIiKSYmKGUucGFyZW50KCkucmVwbGFjZVdpdGgoZSksZVswXSE9PXQmJiF1LmNvbnRhaW5zKGVbMF0sdCl8fHUodCkudHJpZ2dlcigiZm9jdXMiKSksZX19KSx1LmV4dGVuZCh1LmVmZmVjdHMse3ZlcnNpb246IjEuMTMuMiIsZGVmaW5lOmZ1bmN0aW9uKGUsdCxpKXtyZXR1cm4gaXx8KGk9dCx0PSJlZmZlY3QiKSx1LmVmZmVjdHMuZWZmZWN0W2VdPWksdS5lZmZlY3RzLmVmZmVjdFtlXS5tb2RlPXQsaX0sc2NhbGVkRGltZW5zaW9uczpmdW5jdGlvbihlLHQsaSl7aWYoMD09PXQpcmV0dXJue2hlaWdodDowLHdpZHRoOjAsb3V0ZXJIZWlnaHQ6MCxvdXRlcldpZHRoOjB9O3ZhciBzPSJob3Jpem9udGFsIiE9PWk\/KHR8fDEwMCkvMTAwOjEsdD0idmVydGljYWwiIT09aT8odHx8MTAwKS8xMDA6MTtyZXR1cm57aGVpZ2h0OmUuaGVpZ2h0KCkqdCx3aWR0aDplLndpZHRoKCkqcyxvdXRlckhlaWdodDplLm91dGVySGVpZ2h0KCkqdCxvdXRlcldpZHRoOmUub3V0ZXJXaWR0aCgpKnN9fSxjbGlwVG9Cb3g6ZnVuY3Rpb24oZSl7cmV0dXJue3dpZHRoOmUuY2xpcC5yaWdodC1lLmNsaXAubGVmdCxoZWlnaHQ6ZS5jbGlwLmJvdHRvbS1lLmNsaXAudG9wLGxlZnQ6ZS5jbGlwLmxlZnQsdG9wOmUuY2xpcC50b3B9fSx1bnNoaWZ0OmZ1bmN0aW9uKGUsdCxpKXt2YXIgcz1lLnF1ZXVlKCk7MTx0JiZzLnNwbGljZS5hcHBseShzLFsxLDBdLmNvbmNhdChzLnNwbGljZSh0LGkpKSksZS5kZXF1ZXVlKCl9LHNhdmVTdHlsZTpmdW5jdGlvbihlKXtlLmRhdGEoVyxlWzBdLnN0eWxlLmNzc1RleHQpfSxyZXN0b3JlU3R5bGU6ZnVuY3Rpb24oZSl7ZVswXS5zdHlsZS5jc3NUZXh0PWUuZGF0YShXKXx8IiIsZS5yZW1vdmVEYXRhKFcpfSxtb2RlOmZ1bmN0aW9uKGUsdCl7ZT1lLmlzKCI6aGlkZGVuIik7cmV0dXJuInRvZ2dsZSI9PT10JiYodD1lPyJzaG93IjoiaGlkZSIpLHQ9KGU\/ImhpZGUiPT09dDoic2hvdyI9PT10KT8ibm9uZSI6dH0sZ2V0QmFzZWxpbmU6ZnVuY3Rpb24oZSx0KXt2YXIgaSxzO3N3aXRjaChlWzBdKXtjYXNlInRvcCI6aT0wO2JyZWFrO2Nhc2UibWlkZGxlIjppPS41O2JyZWFrO2Nhc2UiYm90dG9tIjppPTE7YnJlYWs7ZGVmYXVsdDppPWVbMF0vdC5oZWlnaHR9c3dpdGNoKGVbMV0pe2Nhc2UibGVmdCI6cz0wO2JyZWFrO2Nhc2UiY2VudGVyIjpzPS41O2JyZWFrO2Nhc2UicmlnaHQiOnM9MTticmVhaztkZWZhdWx0OnM9ZVsxXS90LndpZHRofXJldHVybnt4OnMseTppfX0sY3JlYXRlUGxhY2Vob2xkZXI6ZnVuY3Rpb24oZSl7dmFyIHQsaT1lLmNzcygicG9zaXRpb24iKSxzPWUucG9zaXRpb24oKTtyZXR1cm4gZS5jc3Moe21hcmdpblRvcDplLmNzcygibWFyZ2luVG9wIiksbWFyZ2luQm90dG9tOmUuY3NzKCJtYXJnaW5Cb3R0b20iKSxtYXJnaW5MZWZ0OmUuY3NzKCJtYXJnaW5MZWZ0IiksbWFyZ2luUmlnaHQ6ZS5jc3MoIm1hcmdpblJpZ2h0Iil9KS5vdXRlcldpZHRoKGUub3V0ZXJXaWR0aCgpKS5vdXRlckhlaWdodChlLm91dGVySGVpZ2h0KCkpLC9eKHN0YXRpY3xyZWxhdGl2ZSkvLnRlc3QoaSkmJihpPSJhYnNvbHV0ZSIsdD11KCI8IitlWzBdLm5vZGVOYW1lKyI+IikuaW5zZXJ0QWZ0ZXIoZSkuY3NzKHtkaXNwbGF5Oi9eKGlubGluZXxydWJ5KS8udGVzdChlLmNzcygiZGlzcGxheSIpKT8iaW5saW5lLWJsb2NrIjoiYmxvY2siLHZpc2liaWxpdHk6ImhpZGRlbiIsbWFyZ2luVG9wOmUuY3NzKCJtYXJnaW5Ub3AiKSxtYXJnaW5Cb3R0b206ZS5jc3MoIm1hcmdpbkJvdHRvbSIpLG1hcmdpbkxlZnQ6ZS5jc3MoIm1hcmdpbkxlZnQiKSxtYXJnaW5SaWdodDplLmNzcygibWFyZ2luUmlnaHQiKSxmbG9hdDplLmNzcygiZmxvYXQiKX0pLm91dGVyV2lkdGgoZS5vdXRlcldpZHRoKCkpLm91dGVySGVpZ2h0KGUub3V0ZXJIZWlnaHQoKSkuYWRkQ2xhc3MoInVpLWVmZmVjdHMtcGxhY2Vob2xkZXIiKSxlLmRhdGEoVCsicGxhY2Vob2xkZXIiLHQpKSxlLmNzcyh7cG9zaXRpb246aSxsZWZ0OnMubGVmdCx0b3A6cy50b3B9KSx0fSxyZW1vdmVQbGFjZWhvbGRlcjpmdW5jdGlvbihlKXt2YXIgdD1UKyJwbGFjZWhvbGRlciIsaT1lLmRhdGEodCk7aSYmKGkucmVtb3ZlKCksZS5yZW1vdmVEYXRhKHQpKX0sY2xlYW5VcDpmdW5jdGlvbihlKXt1LmVmZmVjdHMucmVzdG9yZVN0eWxlKGUpLHUuZWZmZWN0cy5yZW1vdmVQbGFjZWhvbGRlcihlKX0sc2V0VHJhbnNpdGlvbjpmdW5jdGlvbihzLGUsbixhKXtyZXR1cm4gYT1hfHx7fSx1LmVhY2goZSxmdW5jdGlvbihlLHQpe3ZhciBpPXMuY3NzVW5pdCh0KTswPGlbMF0mJihhW3RdPWlbMF0qbitpWzFdKX0pLGF9fSksdS5mbi5leHRlbmQoe2VmZmVjdDpmdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dmFyIHQ9dSh0aGlzKSxpPXUuZWZmZWN0cy5tb2RlKHQscil8fGE7dC5kYXRhKFYsITApLGgucHVzaChpKSxhJiYoInNob3ciPT09aXx8aT09PWEmJiJoaWRlIj09PWkpJiZ0LnNob3coKSxhJiYibm9uZSI9PT1pfHx1LmVmZmVjdHMuc2F2ZVN0eWxlKHQpLCJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlKCl9dmFyIHM9cS5hcHBseSh0aGlzLGFyZ3VtZW50cyksbj11LmVmZmVjdHMuZWZmZWN0W3MuZWZmZWN0XSxhPW4ubW9kZSx0PXMucXVldWUsaT10fHwiZngiLG89cy5jb21wbGV0ZSxyPXMubW9kZSxoPVtdO3JldHVybiB1LmZ4Lm9mZnx8IW4\/cj90aGlzW3JdKHMuZHVyYXRpb24sbyk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7byYmby5jYWxsKHRoaXMpfSk6ITE9PT10P3RoaXMuZWFjaChlKS5lYWNoKGwpOnRoaXMucXVldWUoaSxlKS5xdWV1ZShpLGwpO2Z1bmN0aW9uIGwoZSl7dmFyIHQ9dSh0aGlzKTtmdW5jdGlvbiBpKCl7ImZ1bmN0aW9uIj09dHlwZW9mIG8mJm8uY2FsbCh0WzBdKSwiZnVuY3Rpb24iPT10eXBlb2YgZSYmZSgpfXMubW9kZT1oLnNoaWZ0KCksITE9PT11LnVpQmFja0NvbXBhdHx8YT8ibm9uZSI9PT1zLm1vZGU\/KHRbcl0oKSxpKCkpOm4uY2FsbCh0WzBdLHMsZnVuY3Rpb24oKXt0LnJlbW92ZURhdGEoViksdS5lZmZlY3RzLmNsZWFuVXAodCksImhpZGUiPT09cy5tb2RlJiZ0LmhpZGUoKSxpKCl9KToodC5pcygiOmhpZGRlbiIpPyJoaWRlIj09PXI6InNob3ciPT09cik\/KHRbcl0oKSxpKCkpOm4uY2FsbCh0WzBdLHMsaSl9fSxzaG93OihBPXUuZm4uc2hvdyxmdW5jdGlvbihlKXtpZihMKGUpKXJldHVybiBBLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtlPXEuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBlLm1vZGU9InNob3ciLHRoaXMuZWZmZWN0LmNhbGwodGhpcyxlKX0pLGhpZGU6KE49dS5mbi5oaWRlLGZ1bmN0aW9uKGUpe2lmKEwoZSkpcmV0dXJuIE4uYXBwbHkodGhpcyxhcmd1bWVudHMpO2U9cS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGUubW9kZT0iaGlkZSIsdGhpcy5lZmZlY3QuY2FsbCh0aGlzLGUpfSksdG9nZ2xlOihJPXUuZm4udG9nZ2xlLGZ1bmN0aW9uKGUpe2lmKEwoZSl8fCJib29sZWFuIj09dHlwZW9mIGUpcmV0dXJuIEkuYXBwbHkodGhpcyxhcmd1bWVudHMpO2U9cS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGUubW9kZT0idG9nZ2xlIix0aGlzLmVmZmVjdC5jYWxsKHRoaXMsZSl9KSxjc3NVbml0OmZ1bmN0aW9uKGUpe3ZhciBpPXRoaXMuY3NzKGUpLHM9W107cmV0dXJuIHUuZWFjaChbImVtIiwicHgiLCIlIiwicHQiXSxmdW5jdGlvbihlLHQpezA8aS5pbmRleE9mKHQpJiYocz1bcGFyc2VGbG9hdChpKSx0XSl9KSxzfSxjc3NDbGlwOmZ1bmN0aW9uKGUpe3JldHVybiBlP3RoaXMuY3NzKCJjbGlwIiwicmVjdCgiK2UudG9wKyJweCAiK2UucmlnaHQrInB4ICIrZS5ib3R0b20rInB4ICIrZS5sZWZ0KyJweCkiKTpCKHRoaXMuY3NzKCJjbGlwIiksdGhpcyl9LHRyYW5zZmVyOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dSh0aGlzKSxzPXUoZS50byksbj0iZml4ZWQiPT09cy5jc3MoInBvc2l0aW9uIiksYT11KCJib2R5Iiksbz1uP2Euc2Nyb2xsVG9wKCk6MCxyPW4\/YS5zY3JvbGxMZWZ0KCk6MCxhPXMub2Zmc2V0KCksYT17dG9wOmEudG9wLW8sbGVmdDphLmxlZnQtcixoZWlnaHQ6cy5pbm5lckhlaWdodCgpLHdpZHRoOnMuaW5uZXJXaWR0aCgpfSxzPWkub2Zmc2V0KCksaD11KCI8ZGl2IGNsYXNzPSd1aS1lZmZlY3RzLXRyYW5zZmVyJz48L2Rpdj4iKTtoLmFwcGVuZFRvKCJib2R5IikuYWRkQ2xhc3MoZS5jbGFzc05hbWUpLmNzcyh7dG9wOnMudG9wLW8sbGVmdDpzLmxlZnQtcixoZWlnaHQ6aS5pbm5lckhlaWdodCgpLHdpZHRoOmkuaW5uZXJXaWR0aCgpLHBvc2l0aW9uOm4\/ImZpeGVkIjoiYWJzb2x1dGUifSkuYW5pbWF0ZShhLGUuZHVyYXRpb24sZS5lYXNpbmcsZnVuY3Rpb24oKXtoLnJlbW92ZSgpLCJmdW5jdGlvbiI9PXR5cGVvZiB0JiZ0KCl9KX19KSx1LmZ4LnN0ZXAuY2xpcD1mdW5jdGlvbihlKXtlLmNsaXBJbml0fHwoZS5zdGFydD11KGUuZWxlbSkuY3NzQ2xpcCgpLCJzdHJpbmciPT10eXBlb2YgZS5lbmQmJihlLmVuZD1CKGUuZW5kLGUuZWxlbSkpLGUuY2xpcEluaXQ9ITApLHUoZS5lbGVtKS5jc3NDbGlwKHt0b3A6ZS5wb3MqKGUuZW5kLnRvcC1lLnN0YXJ0LnRvcCkrZS5zdGFydC50b3AscmlnaHQ6ZS5wb3MqKGUuZW5kLnJpZ2h0LWUuc3RhcnQucmlnaHQpK2Uuc3RhcnQucmlnaHQsYm90dG9tOmUucG9zKihlLmVuZC5ib3R0b20tZS5zdGFydC5ib3R0b20pK2Uuc3RhcnQuYm90dG9tLGxlZnQ6ZS5wb3MqKGUuZW5kLmxlZnQtZS5zdGFydC5sZWZ0KStlLnN0YXJ0LmxlZnR9KX0sUD17fSx1LmVhY2goWyJRdWFkIiwiQ3ViaWMiLCJRdWFydCIsIlF1aW50IiwiRXhwbyJdLGZ1bmN0aW9uKHQsZSl7UFtlXT1mdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5wb3coZSx0KzIpfX0pLHUuZXh0ZW5kKFAse1NpbmU6ZnVuY3Rpb24oZSl7cmV0dXJuIDEtTWF0aC5jb3MoZSpNYXRoLlBJLzIpfSxDaXJjOmZ1bmN0aW9uKGUpe3JldHVybiAxLU1hdGguc3FydCgxLWUqZSl9LEVsYXN0aWM6ZnVuY3Rpb24oZSl7cmV0dXJuIDA9PT1lfHwxPT09ZT9lOi1NYXRoLnBvdygyLDgqKGUtMSkpKk1hdGguc2luKCg4MCooZS0xKS03LjUpKk1hdGguUEkvMTUpfSxCYWNrOmZ1bmN0aW9uKGUpe3JldHVybiBlKmUqKDMqZS0yKX0sQm91bmNlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxpPTQ7ZTwoKHQ9TWF0aC5wb3coMiwtLWkpKS0xKS8xMTspO3JldHVybiAxL01hdGgucG93KDQsMy1pKS03LjU2MjUqTWF0aC5wb3coKDMqdC0yKS8yMi1lLDIpfX0pLHUuZWFjaChQLGZ1bmN0aW9uKGUsdCl7dS5lYXNpbmdbImVhc2VJbiIrZV09dCx1LmVhc2luZ1siZWFzZU91dCIrZV09ZnVuY3Rpb24oZSl7cmV0dXJuIDEtdCgxLWUpfSx1LmVhc2luZ1siZWFzZUluT3V0IitlXT1mdW5jdGlvbihlKXtyZXR1cm4gZTwuNT90KDIqZSkvMjoxLXQoLTIqZSsyKS8yfX0pO3UuZWZmZWN0c30pOwovKiogL20vanMvdmFuaWxsYWpzL3N0b3JlLmpzICoqLwp2YXIgX19fZDJjX3N0b3JlanNfY19vbj0iMjAyNi0wMi0yMCAxMTozMDoxMCI7J3VzZSBzdHJpY3QnO3ZhciAkanNjb21wPSRqc2NvbXB8fHt9OyRqc2NvbXAuc2NvcGU9e307JGpzY29tcC5BU1NVTUVfRVM1PSExOyRqc2NvbXAuQVNTVU1FX05PX05BVElWRV9NQVA9ITE7JGpzY29tcC5BU1NVTUVfTk9fTkFUSVZFX1NFVD0hMTskanNjb21wLlNJTVBMRV9GUk9VTkRfUE9MWUZJTEw9ITE7JGpzY29tcC5JU09MQVRFX1BPTFlGSUxMUz0hMTskanNjb21wLkZPUkNFX1BPTFlGSUxMX1BST01JU0U9ITE7JGpzY29tcC5GT1JDRV9QT0xZRklMTF9QUk9NSVNFX1dIRU5fTk9fVU5IQU5ETEVEX1JFSkVDVElPTj0hMTskanNjb21wLmRlZmluZVByb3BlcnR5PSRqc2NvbXAuQVNTVU1FX0VTNXx8ImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzP09iamVjdC5kZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbihhLGIsYyl7aWYoYT09QXJyYXkucHJvdG90eXBlfHxhPT1PYmplY3QucHJvdG90eXBlKXJldHVybiBhO2FbYl09Yy52YWx1ZTtyZXR1cm4gYX07CiRqc2NvbXAuZ2V0R2xvYmFsPWZ1bmN0aW9uKGEpe2E9WyJvYmplY3QiPT10eXBlb2YgZ2xvYmFsVGhpcyYmZ2xvYmFsVGhpcyxhLCJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3csIm9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmLCJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWxdO2Zvcih2YXIgYj0wO2I8YS5sZW5ndGg7KytiKXt2YXIgYz1hW2JdO2lmKGMmJmMuTWF0aD09TWF0aClyZXR1cm4gY310aHJvdyBFcnJvcigiQ2Fubm90IGZpbmQgZ2xvYmFsIG9iamVjdCIpO307JGpzY29tcC5nbG9iYWw9JGpzY29tcC5nZXRHbG9iYWwodGhpcyk7JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFPSJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09PXR5cGVvZiBTeW1ib2woIngiKTskanNjb21wLlRSVVNUX0VTNl9QT0xZRklMTFM9ISRqc2NvbXAuSVNPTEFURV9QT0xZRklMTFN8fCRqc2NvbXAuSVNfU1lNQk9MX05BVElWRTskanNjb21wLnBvbHlmaWxscz17fTsKJGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2w9e307JGpzY29tcC5QT0xZRklMTF9QUkVGSVg9IiRqc2NwJCI7dmFyICRqc2NvbXAkbG9va3VwUG9seWZpbGxlZFZhbHVlPWZ1bmN0aW9uKGEsYil7dmFyIGM9JGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbYl07aWYobnVsbD09YylyZXR1cm4gYVtiXTtjPWFbY107cmV0dXJuIHZvaWQgMCE9PWM\/YzphW2JdfTskanNjb21wLnBvbHlmaWxsPWZ1bmN0aW9uKGEsYixjLGQpe2ImJigkanNjb21wLklTT0xBVEVfUE9MWUZJTExTPyRqc2NvbXAucG9seWZpbGxJc29sYXRlZChhLGIsYyxkKTokanNjb21wLnBvbHlmaWxsVW5pc29sYXRlZChhLGIsYyxkKSl9OwokanNjb21wLnBvbHlmaWxsVW5pc29sYXRlZD1mdW5jdGlvbihhLGIsYyxkKXtjPSRqc2NvbXAuZ2xvYmFsO2E9YS5zcGxpdCgiLiIpO2ZvcihkPTA7ZDxhLmxlbmd0aC0xO2QrKyl7dmFyIGU9YVtkXTtpZighKGUgaW4gYykpcmV0dXJuO2M9Y1tlXX1hPWFbYS5sZW5ndGgtMV07ZD1jW2FdO2I9YihkKTtiIT1kJiZudWxsIT1iJiYkanNjb21wLmRlZmluZVByb3BlcnR5KGMsYSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmJ9KX07CiRqc2NvbXAucG9seWZpbGxJc29sYXRlZD1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1hLnNwbGl0KCIuIik7YT0xPT09ZS5sZW5ndGg7ZD1lWzBdO2Q9IWEmJmQgaW4gJGpzY29tcC5wb2x5ZmlsbHM\/JGpzY29tcC5wb2x5ZmlsbHM6JGpzY29tcC5nbG9iYWw7Zm9yKHZhciBmPTA7ZjxlLmxlbmd0aC0xO2YrKyl7dmFyIGc9ZVtmXTtpZighKGcgaW4gZCkpcmV0dXJuO2Q9ZFtnXX1lPWVbZS5sZW5ndGgtMV07Yz0kanNjb21wLklTX1NZTUJPTF9OQVRJVkUmJiJlczYiPT09Yz9kW2VdOm51bGw7Yj1iKGMpO251bGwhPWImJihhPyRqc2NvbXAuZGVmaW5lUHJvcGVydHkoJGpzY29tcC5wb2x5ZmlsbHMsZSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmJ9KTpiIT09YyYmKHZvaWQgMD09PSRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sW2VdJiYoYz0xRTkqTWF0aC5yYW5kb20oKT4+PjAsJGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbZV09JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFPwokanNjb21wLmdsb2JhbC5TeW1ib2woZSk6JGpzY29tcC5QT0xZRklMTF9QUkVGSVgrYysiJCIrZSksJGpzY29tcC5kZWZpbmVQcm9wZXJ0eShkLCRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sW2VdLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Yn0pKSl9OyRqc2NvbXAudW5kZXJzY29yZVByb3RvQ2FuQmVTZXQ9ZnVuY3Rpb24oKXt2YXIgYT17YTohMH0sYj17fTt0cnl7cmV0dXJuIGIuX19wcm90b19fPWEsYi5hfWNhdGNoKGMpe31yZXR1cm4hMX07CiRqc2NvbXAuc2V0UHJvdG90eXBlT2Y9JGpzY29tcC5UUlVTVF9FUzZfUE9MWUZJTExTJiYiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZjokanNjb21wLnVuZGVyc2NvcmVQcm90b0NhbkJlU2V0KCk\/ZnVuY3Rpb24oYSxiKXthLl9fcHJvdG9fXz1iO2lmKGEuX19wcm90b19fIT09Yil0aHJvdyBuZXcgVHlwZUVycm9yKGErIiBpcyBub3QgZXh0ZW5zaWJsZSIpO3JldHVybiBhfTpudWxsOyRqc2NvbXAuYXJyYXlJdGVyYXRvckltcGw9ZnVuY3Rpb24oYSl7dmFyIGI9MDtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYjxhLmxlbmd0aD97ZG9uZTohMSx2YWx1ZTphW2IrK119Ontkb25lOiEwfX19OyRqc2NvbXAuYXJyYXlJdGVyYXRvcj1mdW5jdGlvbihhKXtyZXR1cm57bmV4dDokanNjb21wLmFycmF5SXRlcmF0b3JJbXBsKGEpfX07CiRqc2NvbXAubWFrZUl0ZXJhdG9yPWZ1bmN0aW9uKGEpe3ZhciBiPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3ImJmFbU3ltYm9sLml0ZXJhdG9yXTtyZXR1cm4gYj9iLmNhbGwoYSk6JGpzY29tcC5hcnJheUl0ZXJhdG9yKGEpfTskanNjb21wLmdlbmVyYXRvcj17fTskanNjb21wLmdlbmVyYXRvci5lbnN1cmVJdGVyYXRvclJlc3VsdElzT2JqZWN0Xz1mdW5jdGlvbihhKXtpZighKGEgaW5zdGFuY2VvZiBPYmplY3QpKXRocm93IG5ldyBUeXBlRXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCAiK2ErIiBpcyBub3QgYW4gb2JqZWN0Iik7fTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dD1mdW5jdGlvbigpe3RoaXMuaXNSdW5uaW5nXz0hMTt0aGlzLnlpZWxkQWxsSXRlcmF0b3JfPW51bGw7dGhpcy55aWVsZFJlc3VsdD12b2lkIDA7dGhpcy5uZXh0QWRkcmVzcz0xO3RoaXMuZmluYWxseUFkZHJlc3NfPXRoaXMuY2F0Y2hBZGRyZXNzXz0wO3RoaXMuZmluYWxseUNvbnRleHRzXz10aGlzLmFicnVwdENvbXBsZXRpb25fPW51bGx9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnN0YXJ0Xz1mdW5jdGlvbigpe2lmKHRoaXMuaXNSdW5uaW5nXyl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7dGhpcy5pc1J1bm5pbmdfPSEwfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5zdG9wXz1mdW5jdGlvbigpe3RoaXMuaXNSdW5uaW5nXz0hMX07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmp1bXBUb0Vycm9ySGFuZGxlcl89ZnVuY3Rpb24oKXt0aGlzLm5leHRBZGRyZXNzPXRoaXMuY2F0Y2hBZGRyZXNzX3x8dGhpcy5maW5hbGx5QWRkcmVzc199OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLm5leHRfPWZ1bmN0aW9uKGEpe3RoaXMueWllbGRSZXN1bHQ9YX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUudGhyb3dfPWZ1bmN0aW9uKGEpe3RoaXMuYWJydXB0Q29tcGxldGlvbl89e2V4Y2VwdGlvbjphLGlzRXhjZXB0aW9uOiEwfTt0aGlzLmp1bXBUb0Vycm9ySGFuZGxlcl8oKX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUucmV0dXJuPWZ1bmN0aW9uKGEpe3RoaXMuYWJydXB0Q29tcGxldGlvbl89e3JldHVybjphfTt0aGlzLm5leHRBZGRyZXNzPXRoaXMuZmluYWxseUFkZHJlc3NffTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuanVtcFRocm91Z2hGaW5hbGx5QmxvY2tzPWZ1bmN0aW9uKGEpe3RoaXMuYWJydXB0Q29tcGxldGlvbl89e2p1bXBUbzphfTt0aGlzLm5leHRBZGRyZXNzPXRoaXMuZmluYWxseUFkZHJlc3NffTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS55aWVsZD1mdW5jdGlvbihhLGIpe3RoaXMubmV4dEFkZHJlc3M9YjtyZXR1cm57dmFsdWU6YX19OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnlpZWxkQWxsPWZ1bmN0aW9uKGEsYil7YT0kanNjb21wLm1ha2VJdGVyYXRvcihhKTt2YXIgYz1hLm5leHQoKTskanNjb21wLmdlbmVyYXRvci5lbnN1cmVJdGVyYXRvclJlc3VsdElzT2JqZWN0XyhjKTtpZihjLmRvbmUpdGhpcy55aWVsZFJlc3VsdD1jLnZhbHVlLHRoaXMubmV4dEFkZHJlc3M9YjtlbHNlIHJldHVybiB0aGlzLnlpZWxkQWxsSXRlcmF0b3JfPWEsdGhpcy55aWVsZChjLnZhbHVlLGIpfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuanVtcFRvPWZ1bmN0aW9uKGEpe3RoaXMubmV4dEFkZHJlc3M9YX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuanVtcFRvRW5kPWZ1bmN0aW9uKCl7dGhpcy5uZXh0QWRkcmVzcz0wfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5zZXRDYXRjaEZpbmFsbHlCbG9ja3M9ZnVuY3Rpb24oYSxiKXt0aGlzLmNhdGNoQWRkcmVzc189YTt2b2lkIDAhPWImJih0aGlzLmZpbmFsbHlBZGRyZXNzXz1iKX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuc2V0RmluYWxseUJsb2NrPWZ1bmN0aW9uKGEpe3RoaXMuY2F0Y2hBZGRyZXNzXz0wO3RoaXMuZmluYWxseUFkZHJlc3NfPWF8fDB9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmxlYXZlVHJ5QmxvY2s9ZnVuY3Rpb24oYSxiKXt0aGlzLm5leHRBZGRyZXNzPWE7dGhpcy5jYXRjaEFkZHJlc3NfPWJ8fDB9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5lbnRlckNhdGNoQmxvY2s9ZnVuY3Rpb24oYSl7dGhpcy5jYXRjaEFkZHJlc3NfPWF8fDA7YT10aGlzLmFicnVwdENvbXBsZXRpb25fLmV4Y2VwdGlvbjt0aGlzLmFicnVwdENvbXBsZXRpb25fPW51bGw7cmV0dXJuIGF9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmVudGVyRmluYWxseUJsb2NrPWZ1bmN0aW9uKGEsYixjKXtjP3RoaXMuZmluYWxseUNvbnRleHRzX1tjXT10aGlzLmFicnVwdENvbXBsZXRpb25fOnRoaXMuZmluYWxseUNvbnRleHRzXz1bdGhpcy5hYnJ1cHRDb21wbGV0aW9uX107dGhpcy5jYXRjaEFkZHJlc3NfPWF8fDA7dGhpcy5maW5hbGx5QWRkcmVzc189Ynx8MH07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmxlYXZlRmluYWxseUJsb2NrPWZ1bmN0aW9uKGEsYil7Yj10aGlzLmZpbmFsbHlDb250ZXh0c18uc3BsaWNlKGJ8fDApWzBdO2lmKGI9dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz10aGlzLmFicnVwdENvbXBsZXRpb25ffHxiKXtpZihiLmlzRXhjZXB0aW9uKXJldHVybiB0aGlzLmp1bXBUb0Vycm9ySGFuZGxlcl8oKTt2b2lkIDAhPWIuanVtcFRvJiZ0aGlzLmZpbmFsbHlBZGRyZXNzXzxiLmp1bXBUbz8odGhpcy5uZXh0QWRkcmVzcz1iLmp1bXBUbyx0aGlzLmFicnVwdENvbXBsZXRpb25fPW51bGwpOnRoaXMubmV4dEFkZHJlc3M9dGhpcy5maW5hbGx5QWRkcmVzc199ZWxzZSB0aGlzLm5leHRBZGRyZXNzPWF9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmZvckluPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5Qcm9wZXJ0eUl0ZXJhdG9yKGEpfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5Qcm9wZXJ0eUl0ZXJhdG9yPWZ1bmN0aW9uKGEpe3RoaXMub2JqZWN0Xz1hO3RoaXMucHJvcGVydGllc189W107Zm9yKHZhciBiIGluIGEpdGhpcy5wcm9wZXJ0aWVzXy5wdXNoKGIpO3RoaXMucHJvcGVydGllc18ucmV2ZXJzZSgpfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LlByb3BlcnR5SXRlcmF0b3IucHJvdG90eXBlLmdldE5leHQ9ZnVuY3Rpb24oKXtmb3IoOzA8dGhpcy5wcm9wZXJ0aWVzXy5sZW5ndGg7KXt2YXIgYT10aGlzLnByb3BlcnRpZXNfLnBvcCgpO2lmKGEgaW4gdGhpcy5vYmplY3RfKXJldHVybiBhfXJldHVybiBudWxsfTskanNjb21wLmdlbmVyYXRvci5FbmdpbmVfPWZ1bmN0aW9uKGEpe3RoaXMuY29udGV4dF89bmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQ7dGhpcy5wcm9ncmFtXz1hfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUubmV4dF89ZnVuY3Rpb24oYSl7dGhpcy5jb250ZXh0Xy5zdGFydF8oKTtpZih0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfKXJldHVybiB0aGlzLnlpZWxkQWxsU3RlcF8odGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXy5uZXh0LGEsdGhpcy5jb250ZXh0Xy5uZXh0Xyk7dGhpcy5jb250ZXh0Xy5uZXh0XyhhKTtyZXR1cm4gdGhpcy5uZXh0U3RlcF8oKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLnJldHVybl89ZnVuY3Rpb24oYSl7dGhpcy5jb250ZXh0Xy5zdGFydF8oKTt2YXIgYj10aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfO2lmKGIpcmV0dXJuIHRoaXMueWllbGRBbGxTdGVwXygicmV0dXJuImluIGI\/YlsicmV0dXJuIl06ZnVuY3Rpb24oYyl7cmV0dXJue3ZhbHVlOmMsZG9uZTohMH19LGEsdGhpcy5jb250ZXh0Xy5yZXR1cm4pO3RoaXMuY29udGV4dF8ucmV0dXJuKGEpO3JldHVybiB0aGlzLm5leHRTdGVwXygpfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUudGhyb3dfPWZ1bmN0aW9uKGEpe3RoaXMuY29udGV4dF8uc3RhcnRfKCk7aWYodGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXylyZXR1cm4gdGhpcy55aWVsZEFsbFN0ZXBfKHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl9bInRocm93Il0sYSx0aGlzLmNvbnRleHRfLm5leHRfKTt0aGlzLmNvbnRleHRfLnRocm93XyhhKTtyZXR1cm4gdGhpcy5uZXh0U3RlcF8oKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLnlpZWxkQWxsU3RlcF89ZnVuY3Rpb24oYSxiLGMpe3RyeXt2YXIgZD1hLmNhbGwodGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXyxiKTskanNjb21wLmdlbmVyYXRvci5lbnN1cmVJdGVyYXRvclJlc3VsdElzT2JqZWN0XyhkKTtpZighZC5kb25lKXJldHVybiB0aGlzLmNvbnRleHRfLnN0b3BfKCksZDt2YXIgZT1kLnZhbHVlfWNhdGNoKGYpe3JldHVybiB0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfPW51bGwsdGhpcy5jb250ZXh0Xy50aHJvd18oZiksdGhpcy5uZXh0U3RlcF8oKX10aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfPW51bGw7Yy5jYWxsKHRoaXMuY29udGV4dF8sZSk7cmV0dXJuIHRoaXMubmV4dFN0ZXBfKCl9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS5uZXh0U3RlcF89ZnVuY3Rpb24oKXtmb3IoO3RoaXMuY29udGV4dF8ubmV4dEFkZHJlc3M7KXRyeXt2YXIgYT10aGlzLnByb2dyYW1fKHRoaXMuY29udGV4dF8pO2lmKGEpcmV0dXJuIHRoaXMuY29udGV4dF8uc3RvcF8oKSx7dmFsdWU6YS52YWx1ZSxkb25lOiExfX1jYXRjaChiKXt0aGlzLmNvbnRleHRfLnlpZWxkUmVzdWx0PXZvaWQgMCx0aGlzLmNvbnRleHRfLnRocm93XyhiKX10aGlzLmNvbnRleHRfLnN0b3BfKCk7aWYodGhpcy5jb250ZXh0Xy5hYnJ1cHRDb21wbGV0aW9uXyl7YT10aGlzLmNvbnRleHRfLmFicnVwdENvbXBsZXRpb25fO3RoaXMuY29udGV4dF8uYWJydXB0Q29tcGxldGlvbl89bnVsbDtpZihhLmlzRXhjZXB0aW9uKXRocm93IGEuZXhjZXB0aW9uO3JldHVybnt2YWx1ZTphLnJldHVybixkb25lOiEwfX1yZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fTsKJGpzY29tcC5nZW5lcmF0b3IuR2VuZXJhdG9yXz1mdW5jdGlvbihhKXt0aGlzLm5leHQ9ZnVuY3Rpb24oYil7cmV0dXJuIGEubmV4dF8oYil9O3RoaXMudGhyb3c9ZnVuY3Rpb24oYil7cmV0dXJuIGEudGhyb3dfKGIpfTt0aGlzLnJldHVybj1mdW5jdGlvbihiKXtyZXR1cm4gYS5yZXR1cm5fKGIpfTt0aGlzW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc319OyRqc2NvbXAuZ2VuZXJhdG9yLmNyZWF0ZUdlbmVyYXRvcj1mdW5jdGlvbihhLGIpe2I9bmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkdlbmVyYXRvcl8obmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8oYikpOyRqc2NvbXAuc2V0UHJvdG90eXBlT2YmJmEucHJvdG90eXBlJiYkanNjb21wLnNldFByb3RvdHlwZU9mKGIsYS5wcm90b3R5cGUpO3JldHVybiBifTsKJGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yPWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoZCl7cmV0dXJuIGEubmV4dChkKX1mdW5jdGlvbiBjKGQpe3JldHVybiBhLnRocm93KGQpfXJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihkLGUpe2Z1bmN0aW9uIGYoZyl7Zy5kb25lP2QoZy52YWx1ZSk6UHJvbWlzZS5yZXNvbHZlKGcudmFsdWUpLnRoZW4oYixjKS50aGVuKGYsZSl9ZihhLm5leHQoKSl9KX07JGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24oYSl7cmV0dXJuICRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvcihhKCkpfTskanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3JQcm9ncmFtPWZ1bmN0aW9uKGEpe3JldHVybiAkanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3IobmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkdlbmVyYXRvcl8obmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8oYSkpKX07CmNsaWVudFN0b3JhZ2U9e3NldDpmdW5jdGlvbihhLGIsYyxkKXtjPXZvaWQgMD09PWM\/MTpjO2Q9dm9pZCAwPT09ZD8ibG9jYWwiOmQ7Y29uc3QgZT0ic2Vzc2lvbiI9PT1kP3dpbmRvdy5zZXNzaW9uU3RvcmFnZTp3aW5kb3cubG9jYWxTdG9yYWdlO3RyeXtiPXt2YWx1ZTpifSwibG9jYWwiPT09ZCYmKGMqPTg2NEU1LGIuZXhwaXJ5PShuZXcgRGF0ZSkuZ2V0VGltZSgpK2MpLGUuc2V0SXRlbShhLEpTT04uc3RyaW5naWZ5KGIpKX1jYXRjaChmKXtjb25zb2xlLmVycm9yKGBFcnJvciBzYXZpbmcgdG8gJHtkfSBzdG9yYWdlYCxmKX19LGdldDpmdW5jdGlvbihhLGIpe2I9dm9pZCAwPT09Yj9udWxsOmI7Y29uc3QgYz0oZCxlKT0+e3RyeXtjb25zdCBmPWQuZ2V0SXRlbShhKTtpZighZilyZXR1cm4gbnVsbDtjb25zdCBnPUpTT04ucGFyc2UoZik7aWYoZSYmZy5leHBpcnkmJihuZXcgRGF0ZSkuZ2V0VGltZSgpPmcuZXhwaXJ5KXJldHVybiBkLnJlbW92ZUl0ZW0oYSksbnVsbDtsZXQgaDsKcmV0dXJuIG51bGwhPShoPWcudmFsdWUpP2g6Z31jYXRjaChmKXtyZXR1cm4gbnVsbH19O3JldHVybiJsb2NhbCI9PT1iP2Mod2luZG93LmxvY2FsU3RvcmFnZSwhMCk6InNlc3Npb24iPT09Yj9jKHdpbmRvdy5zZXNzaW9uU3RvcmFnZSwhMSk6Yyh3aW5kb3cubG9jYWxTdG9yYWdlLCEwKXx8Yyh3aW5kb3cuc2Vzc2lvblN0b3JhZ2UsITEpfSxyZW1vdmU6ZnVuY3Rpb24oYSxiKXtiPXZvaWQgMD09PWI\/bnVsbDpiOyJsb2NhbCIhPT1iJiZudWxsIT09Ynx8d2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGEpOyJzZXNzaW9uIiE9PWImJm51bGwhPT1ifHx3aW5kb3cuc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbShhKX19OwpjcmVhdGVEYXRhU3RvcmU9YT0+e2E9YXx8e307aW5pdD1jPT5PYmplY3QuYXNzaWduKHt9LGMpO2NvbnN0IGI9aW5pdChhKTtyZXR1cm57c2V0OmZ1bmN0aW9uKGMsZCl7YltjXT1PYmplY3QuYXNzaWduKHt9LGJbY10sZCk7cmV0dXJuIGJbY119LGdldDpmdW5jdGlvbihjLGQpe2Q9dm9pZCAwPT09ZD9udWxsOmQ7Yz1jLnNwbGl0KCIuIik7bGV0IGU9Yjtmb3IoY29uc3QgZiBvZiBjKXtpZih2b2lkIDA9PT1lW2ZdKXJldHVybiBkO2U9ZVtmXX1yZXR1cm4gdm9pZCAwIT09ZT9lOmR9LGZldGNoOmZ1bmN0aW9uKGMpe3JldHVybiAkanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3JGdW5jdGlvbihmdW5jdGlvbiooKXt0cnl7Y29uc3QgZD15aWVsZCBmZXRjaChgaHR0cHM6Ly8ke2IuZGVhbGVySW5mby5kb21haW59L2FqYXhDb250cm9sbGVyLyR7Y31gKTtpZighZC5vayl0aHJvdyBFcnJvcigiTmV0d29yayByZXNwb25zZSB3YXMgbm90IG9rIik7Y29uc3QgZT15aWVsZCBkLmpzb24oKTsKYltjXT1lO3JldHVybiBiW2NdfWNhdGNoKGQpe3Rocm93IEVycm9yKGBGYWlsZWQgdG8gZmV0Y2ggZnJvbSBzZXJ2ZXI6ICR7ZC5tZXNzYWdlfWApO319KX0sZGVsZXRlOmZ1bmN0aW9uKGMpe2lmKCFiW2NdKXRocm93IEVycm9yKCJJRCBub3QgZm91bmQiKTtkZWxldGUgYltjXTtyZXR1cm4hMH0sZ2V0QWxsOmZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5hc3NpZ24oe30sYil9fX07Ci8qKiAvbS9qcy9lbWFpbEhhbmRsZXIuanMgKiovCnZhciBfX19kMmNfZW1haWxIYW5kbGVyanNfY19vbj0iMjAyNi0wMi0yMCAxMTozMDoyNiI7J3VzZSBzdHJpY3QnO3ZhciAkanNjb21wPSRqc2NvbXB8fHt9OyRqc2NvbXAuc2NvcGU9e307JGpzY29tcC5BU1NVTUVfRVM1PSExOyRqc2NvbXAuQVNTVU1FX05PX05BVElWRV9NQVA9ITE7JGpzY29tcC5BU1NVTUVfTk9fTkFUSVZFX1NFVD0hMTskanNjb21wLlNJTVBMRV9GUk9VTkRfUE9MWUZJTEw9ITE7JGpzY29tcC5JU09MQVRFX1BPTFlGSUxMUz0hMTskanNjb21wLkZPUkNFX1BPTFlGSUxMX1BST01JU0U9ITE7JGpzY29tcC5GT1JDRV9QT0xZRklMTF9QUk9NSVNFX1dIRU5fTk9fVU5IQU5ETEVEX1JFSkVDVElPTj0hMTskanNjb21wLmRlZmluZVByb3BlcnR5PSRqc2NvbXAuQVNTVU1FX0VTNXx8ImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzP09iamVjdC5kZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbihlLGcsYSl7aWYoZT09QXJyYXkucHJvdG90eXBlfHxlPT1PYmplY3QucHJvdG90eXBlKXJldHVybiBlO2VbZ109YS52YWx1ZTtyZXR1cm4gZX07CiRqc2NvbXAuZ2V0R2xvYmFsPWZ1bmN0aW9uKGUpe2U9WyJvYmplY3QiPT10eXBlb2YgZ2xvYmFsVGhpcyYmZ2xvYmFsVGhpcyxlLCJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3csIm9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmLCJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWxdO2Zvcih2YXIgZz0wO2c8ZS5sZW5ndGg7KytnKXt2YXIgYT1lW2ddO2lmKGEmJmEuTWF0aD09TWF0aClyZXR1cm4gYX10aHJvdyBFcnJvcigiQ2Fubm90IGZpbmQgZ2xvYmFsIG9iamVjdCIpO307JGpzY29tcC5nbG9iYWw9JGpzY29tcC5nZXRHbG9iYWwodGhpcyk7JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFPSJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09PXR5cGVvZiBTeW1ib2woIngiKTskanNjb21wLlRSVVNUX0VTNl9QT0xZRklMTFM9ISRqc2NvbXAuSVNPTEFURV9QT0xZRklMTFN8fCRqc2NvbXAuSVNfU1lNQk9MX05BVElWRTskanNjb21wLnBvbHlmaWxscz17fTsKJGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2w9e307JGpzY29tcC5QT0xZRklMTF9QUkVGSVg9IiRqc2NwJCI7dmFyICRqc2NvbXAkbG9va3VwUG9seWZpbGxlZFZhbHVlPWZ1bmN0aW9uKGUsZyl7dmFyIGE9JGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbZ107aWYobnVsbD09YSlyZXR1cm4gZVtnXTthPWVbYV07cmV0dXJuIHZvaWQgMCE9PWE\/YTplW2ddfTskanNjb21wLnBvbHlmaWxsPWZ1bmN0aW9uKGUsZyxhLGIpe2cmJigkanNjb21wLklTT0xBVEVfUE9MWUZJTExTPyRqc2NvbXAucG9seWZpbGxJc29sYXRlZChlLGcsYSxiKTokanNjb21wLnBvbHlmaWxsVW5pc29sYXRlZChlLGcsYSxiKSl9OwokanNjb21wLnBvbHlmaWxsVW5pc29sYXRlZD1mdW5jdGlvbihlLGcsYSxiKXthPSRqc2NvbXAuZ2xvYmFsO2U9ZS5zcGxpdCgiLiIpO2ZvcihiPTA7YjxlLmxlbmd0aC0xO2IrKyl7dmFyIGQ9ZVtiXTtpZighKGQgaW4gYSkpcmV0dXJuO2E9YVtkXX1lPWVbZS5sZW5ndGgtMV07Yj1hW2VdO2c9ZyhiKTtnIT1iJiZudWxsIT1nJiYkanNjb21wLmRlZmluZVByb3BlcnR5KGEsZSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmd9KX07CiRqc2NvbXAucG9seWZpbGxJc29sYXRlZD1mdW5jdGlvbihlLGcsYSxiKXt2YXIgZD1lLnNwbGl0KCIuIik7ZT0xPT09ZC5sZW5ndGg7Yj1kWzBdO2I9IWUmJmIgaW4gJGpzY29tcC5wb2x5ZmlsbHM\/JGpzY29tcC5wb2x5ZmlsbHM6JGpzY29tcC5nbG9iYWw7Zm9yKHZhciBjPTA7YzxkLmxlbmd0aC0xO2MrKyl7dmFyIGY9ZFtjXTtpZighKGYgaW4gYikpcmV0dXJuO2I9YltmXX1kPWRbZC5sZW5ndGgtMV07YT0kanNjb21wLklTX1NZTUJPTF9OQVRJVkUmJiJlczYiPT09YT9iW2RdOm51bGw7Zz1nKGEpO251bGwhPWcmJihlPyRqc2NvbXAuZGVmaW5lUHJvcGVydHkoJGpzY29tcC5wb2x5ZmlsbHMsZCx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmd9KTpnIT09YSYmKHZvaWQgMD09PSRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sW2RdJiYoYT0xRTkqTWF0aC5yYW5kb20oKT4+PjAsJGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbZF09JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFPwokanNjb21wLmdsb2JhbC5TeW1ib2woZCk6JGpzY29tcC5QT0xZRklMTF9QUkVGSVgrYSsiJCIrZCksJGpzY29tcC5kZWZpbmVQcm9wZXJ0eShiLCRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sW2RdLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Z30pKSl9OyRqc2NvbXAudW5kZXJzY29yZVByb3RvQ2FuQmVTZXQ9ZnVuY3Rpb24oKXt2YXIgZT17YTohMH0sZz17fTt0cnl7cmV0dXJuIGcuX19wcm90b19fPWUsZy5hfWNhdGNoKGEpe31yZXR1cm4hMX07CiRqc2NvbXAuc2V0UHJvdG90eXBlT2Y9JGpzY29tcC5UUlVTVF9FUzZfUE9MWUZJTExTJiYiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZjokanNjb21wLnVuZGVyc2NvcmVQcm90b0NhbkJlU2V0KCk\/ZnVuY3Rpb24oZSxnKXtlLl9fcHJvdG9fXz1nO2lmKGUuX19wcm90b19fIT09Zyl0aHJvdyBuZXcgVHlwZUVycm9yKGUrIiBpcyBub3QgZXh0ZW5zaWJsZSIpO3JldHVybiBlfTpudWxsOyRqc2NvbXAuYXJyYXlJdGVyYXRvckltcGw9ZnVuY3Rpb24oZSl7dmFyIGc9MDtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZzxlLmxlbmd0aD97ZG9uZTohMSx2YWx1ZTplW2crK119Ontkb25lOiEwfX19OyRqc2NvbXAuYXJyYXlJdGVyYXRvcj1mdW5jdGlvbihlKXtyZXR1cm57bmV4dDokanNjb21wLmFycmF5SXRlcmF0b3JJbXBsKGUpfX07CiRqc2NvbXAubWFrZUl0ZXJhdG9yPWZ1bmN0aW9uKGUpe3ZhciBnPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3ImJmVbU3ltYm9sLml0ZXJhdG9yXTtyZXR1cm4gZz9nLmNhbGwoZSk6JGpzY29tcC5hcnJheUl0ZXJhdG9yKGUpfTskanNjb21wLmdlbmVyYXRvcj17fTskanNjb21wLmdlbmVyYXRvci5lbnN1cmVJdGVyYXRvclJlc3VsdElzT2JqZWN0Xz1mdW5jdGlvbihlKXtpZighKGUgaW5zdGFuY2VvZiBPYmplY3QpKXRocm93IG5ldyBUeXBlRXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCAiK2UrIiBpcyBub3QgYW4gb2JqZWN0Iik7fTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dD1mdW5jdGlvbigpe3RoaXMuaXNSdW5uaW5nXz0hMTt0aGlzLnlpZWxkQWxsSXRlcmF0b3JfPW51bGw7dGhpcy55aWVsZFJlc3VsdD12b2lkIDA7dGhpcy5uZXh0QWRkcmVzcz0xO3RoaXMuZmluYWxseUFkZHJlc3NfPXRoaXMuY2F0Y2hBZGRyZXNzXz0wO3RoaXMuZmluYWxseUNvbnRleHRzXz10aGlzLmFicnVwdENvbXBsZXRpb25fPW51bGx9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnN0YXJ0Xz1mdW5jdGlvbigpe2lmKHRoaXMuaXNSdW5uaW5nXyl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7dGhpcy5pc1J1bm5pbmdfPSEwfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5zdG9wXz1mdW5jdGlvbigpe3RoaXMuaXNSdW5uaW5nXz0hMX07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmp1bXBUb0Vycm9ySGFuZGxlcl89ZnVuY3Rpb24oKXt0aGlzLm5leHRBZGRyZXNzPXRoaXMuY2F0Y2hBZGRyZXNzX3x8dGhpcy5maW5hbGx5QWRkcmVzc199OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLm5leHRfPWZ1bmN0aW9uKGUpe3RoaXMueWllbGRSZXN1bHQ9ZX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUudGhyb3dfPWZ1bmN0aW9uKGUpe3RoaXMuYWJydXB0Q29tcGxldGlvbl89e2V4Y2VwdGlvbjplLGlzRXhjZXB0aW9uOiEwfTt0aGlzLmp1bXBUb0Vycm9ySGFuZGxlcl8oKX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUucmV0dXJuPWZ1bmN0aW9uKGUpe3RoaXMuYWJydXB0Q29tcGxldGlvbl89e3JldHVybjplfTt0aGlzLm5leHRBZGRyZXNzPXRoaXMuZmluYWxseUFkZHJlc3NffTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuanVtcFRocm91Z2hGaW5hbGx5QmxvY2tzPWZ1bmN0aW9uKGUpe3RoaXMuYWJydXB0Q29tcGxldGlvbl89e2p1bXBUbzplfTt0aGlzLm5leHRBZGRyZXNzPXRoaXMuZmluYWxseUFkZHJlc3NffTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS55aWVsZD1mdW5jdGlvbihlLGcpe3RoaXMubmV4dEFkZHJlc3M9ZztyZXR1cm57dmFsdWU6ZX19OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnlpZWxkQWxsPWZ1bmN0aW9uKGUsZyl7ZT0kanNjb21wLm1ha2VJdGVyYXRvcihlKTt2YXIgYT1lLm5leHQoKTskanNjb21wLmdlbmVyYXRvci5lbnN1cmVJdGVyYXRvclJlc3VsdElzT2JqZWN0XyhhKTtpZihhLmRvbmUpdGhpcy55aWVsZFJlc3VsdD1hLnZhbHVlLHRoaXMubmV4dEFkZHJlc3M9ZztlbHNlIHJldHVybiB0aGlzLnlpZWxkQWxsSXRlcmF0b3JfPWUsdGhpcy55aWVsZChhLnZhbHVlLGcpfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuanVtcFRvPWZ1bmN0aW9uKGUpe3RoaXMubmV4dEFkZHJlc3M9ZX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuanVtcFRvRW5kPWZ1bmN0aW9uKCl7dGhpcy5uZXh0QWRkcmVzcz0wfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5zZXRDYXRjaEZpbmFsbHlCbG9ja3M9ZnVuY3Rpb24oZSxnKXt0aGlzLmNhdGNoQWRkcmVzc189ZTt2b2lkIDAhPWcmJih0aGlzLmZpbmFsbHlBZGRyZXNzXz1nKX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuc2V0RmluYWxseUJsb2NrPWZ1bmN0aW9uKGUpe3RoaXMuY2F0Y2hBZGRyZXNzXz0wO3RoaXMuZmluYWxseUFkZHJlc3NfPWV8fDB9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmxlYXZlVHJ5QmxvY2s9ZnVuY3Rpb24oZSxnKXt0aGlzLm5leHRBZGRyZXNzPWU7dGhpcy5jYXRjaEFkZHJlc3NfPWd8fDB9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5lbnRlckNhdGNoQmxvY2s9ZnVuY3Rpb24oZSl7dGhpcy5jYXRjaEFkZHJlc3NfPWV8fDA7ZT10aGlzLmFicnVwdENvbXBsZXRpb25fLmV4Y2VwdGlvbjt0aGlzLmFicnVwdENvbXBsZXRpb25fPW51bGw7cmV0dXJuIGV9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmVudGVyRmluYWxseUJsb2NrPWZ1bmN0aW9uKGUsZyxhKXthP3RoaXMuZmluYWxseUNvbnRleHRzX1thXT10aGlzLmFicnVwdENvbXBsZXRpb25fOnRoaXMuZmluYWxseUNvbnRleHRzXz1bdGhpcy5hYnJ1cHRDb21wbGV0aW9uX107dGhpcy5jYXRjaEFkZHJlc3NfPWV8fDA7dGhpcy5maW5hbGx5QWRkcmVzc189Z3x8MH07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmxlYXZlRmluYWxseUJsb2NrPWZ1bmN0aW9uKGUsZyl7Zz10aGlzLmZpbmFsbHlDb250ZXh0c18uc3BsaWNlKGd8fDApWzBdO2lmKGc9dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz10aGlzLmFicnVwdENvbXBsZXRpb25ffHxnKXtpZihnLmlzRXhjZXB0aW9uKXJldHVybiB0aGlzLmp1bXBUb0Vycm9ySGFuZGxlcl8oKTt2b2lkIDAhPWcuanVtcFRvJiZ0aGlzLmZpbmFsbHlBZGRyZXNzXzxnLmp1bXBUbz8odGhpcy5uZXh0QWRkcmVzcz1nLmp1bXBUbyx0aGlzLmFicnVwdENvbXBsZXRpb25fPW51bGwpOnRoaXMubmV4dEFkZHJlc3M9dGhpcy5maW5hbGx5QWRkcmVzc199ZWxzZSB0aGlzLm5leHRBZGRyZXNzPWV9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmZvckluPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5Qcm9wZXJ0eUl0ZXJhdG9yKGUpfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5Qcm9wZXJ0eUl0ZXJhdG9yPWZ1bmN0aW9uKGUpe3RoaXMub2JqZWN0Xz1lO3RoaXMucHJvcGVydGllc189W107Zm9yKHZhciBnIGluIGUpdGhpcy5wcm9wZXJ0aWVzXy5wdXNoKGcpO3RoaXMucHJvcGVydGllc18ucmV2ZXJzZSgpfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LlByb3BlcnR5SXRlcmF0b3IucHJvdG90eXBlLmdldE5leHQ9ZnVuY3Rpb24oKXtmb3IoOzA8dGhpcy5wcm9wZXJ0aWVzXy5sZW5ndGg7KXt2YXIgZT10aGlzLnByb3BlcnRpZXNfLnBvcCgpO2lmKGUgaW4gdGhpcy5vYmplY3RfKXJldHVybiBlfXJldHVybiBudWxsfTskanNjb21wLmdlbmVyYXRvci5FbmdpbmVfPWZ1bmN0aW9uKGUpe3RoaXMuY29udGV4dF89bmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQ7dGhpcy5wcm9ncmFtXz1lfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUubmV4dF89ZnVuY3Rpb24oZSl7dGhpcy5jb250ZXh0Xy5zdGFydF8oKTtpZih0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfKXJldHVybiB0aGlzLnlpZWxkQWxsU3RlcF8odGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXy5uZXh0LGUsdGhpcy5jb250ZXh0Xy5uZXh0Xyk7dGhpcy5jb250ZXh0Xy5uZXh0XyhlKTtyZXR1cm4gdGhpcy5uZXh0U3RlcF8oKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLnJldHVybl89ZnVuY3Rpb24oZSl7dGhpcy5jb250ZXh0Xy5zdGFydF8oKTt2YXIgZz10aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfO2lmKGcpcmV0dXJuIHRoaXMueWllbGRBbGxTdGVwXygicmV0dXJuImluIGc\/Z1sicmV0dXJuIl06ZnVuY3Rpb24oYSl7cmV0dXJue3ZhbHVlOmEsZG9uZTohMH19LGUsdGhpcy5jb250ZXh0Xy5yZXR1cm4pO3RoaXMuY29udGV4dF8ucmV0dXJuKGUpO3JldHVybiB0aGlzLm5leHRTdGVwXygpfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUudGhyb3dfPWZ1bmN0aW9uKGUpe3RoaXMuY29udGV4dF8uc3RhcnRfKCk7aWYodGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXylyZXR1cm4gdGhpcy55aWVsZEFsbFN0ZXBfKHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl9bInRocm93Il0sZSx0aGlzLmNvbnRleHRfLm5leHRfKTt0aGlzLmNvbnRleHRfLnRocm93XyhlKTtyZXR1cm4gdGhpcy5uZXh0U3RlcF8oKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLnlpZWxkQWxsU3RlcF89ZnVuY3Rpb24oZSxnLGEpe3RyeXt2YXIgYj1lLmNhbGwodGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXyxnKTskanNjb21wLmdlbmVyYXRvci5lbnN1cmVJdGVyYXRvclJlc3VsdElzT2JqZWN0XyhiKTtpZighYi5kb25lKXJldHVybiB0aGlzLmNvbnRleHRfLnN0b3BfKCksYjt2YXIgZD1iLnZhbHVlfWNhdGNoKGMpe3JldHVybiB0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfPW51bGwsdGhpcy5jb250ZXh0Xy50aHJvd18oYyksdGhpcy5uZXh0U3RlcF8oKX10aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfPW51bGw7YS5jYWxsKHRoaXMuY29udGV4dF8sZCk7cmV0dXJuIHRoaXMubmV4dFN0ZXBfKCl9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS5uZXh0U3RlcF89ZnVuY3Rpb24oKXtmb3IoO3RoaXMuY29udGV4dF8ubmV4dEFkZHJlc3M7KXRyeXt2YXIgZT10aGlzLnByb2dyYW1fKHRoaXMuY29udGV4dF8pO2lmKGUpcmV0dXJuIHRoaXMuY29udGV4dF8uc3RvcF8oKSx7dmFsdWU6ZS52YWx1ZSxkb25lOiExfX1jYXRjaChnKXt0aGlzLmNvbnRleHRfLnlpZWxkUmVzdWx0PXZvaWQgMCx0aGlzLmNvbnRleHRfLnRocm93XyhnKX10aGlzLmNvbnRleHRfLnN0b3BfKCk7aWYodGhpcy5jb250ZXh0Xy5hYnJ1cHRDb21wbGV0aW9uXyl7ZT10aGlzLmNvbnRleHRfLmFicnVwdENvbXBsZXRpb25fO3RoaXMuY29udGV4dF8uYWJydXB0Q29tcGxldGlvbl89bnVsbDtpZihlLmlzRXhjZXB0aW9uKXRocm93IGUuZXhjZXB0aW9uO3JldHVybnt2YWx1ZTplLnJldHVybixkb25lOiEwfX1yZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fTsKJGpzY29tcC5nZW5lcmF0b3IuR2VuZXJhdG9yXz1mdW5jdGlvbihlKXt0aGlzLm5leHQ9ZnVuY3Rpb24oZyl7cmV0dXJuIGUubmV4dF8oZyl9O3RoaXMudGhyb3c9ZnVuY3Rpb24oZyl7cmV0dXJuIGUudGhyb3dfKGcpfTt0aGlzLnJldHVybj1mdW5jdGlvbihnKXtyZXR1cm4gZS5yZXR1cm5fKGcpfTt0aGlzW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc319OyRqc2NvbXAuZ2VuZXJhdG9yLmNyZWF0ZUdlbmVyYXRvcj1mdW5jdGlvbihlLGcpe2c9bmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkdlbmVyYXRvcl8obmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8oZykpOyRqc2NvbXAuc2V0UHJvdG90eXBlT2YmJmUucHJvdG90eXBlJiYkanNjb21wLnNldFByb3RvdHlwZU9mKGcsZS5wcm90b3R5cGUpO3JldHVybiBnfTsKJGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIGcoYil7cmV0dXJuIGUubmV4dChiKX1mdW5jdGlvbiBhKGIpe3JldHVybiBlLnRocm93KGIpfXJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihiLGQpe2Z1bmN0aW9uIGMoZil7Zi5kb25lP2IoZi52YWx1ZSk6UHJvbWlzZS5yZXNvbHZlKGYudmFsdWUpLnRoZW4oZyxhKS50aGVuKGMsZCl9YyhlLm5leHQoKSl9KX07JGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24oZSl7cmV0dXJuICRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvcihlKCkpfTskanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3JQcm9ncmFtPWZ1bmN0aW9uKGUpe3JldHVybiAkanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3IobmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkdlbmVyYXRvcl8obmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8oZSkpKX07CnZhciBlbWFpbEhhbmRsZXI9ZnVuY3Rpb24oKXt2YXIgZT1mdW5jdGlvbihiKXt0cnl7cmV0dXJuIHdpbmRvdy50b3AubG9jYXRpb25bYl19Y2F0Y2goZCl7cmV0dXJuIHdpbmRvdy5sb2NhdGlvbltiXX19LGc9ZnVuY3Rpb24oKXt0aGlzLmFjdGlvbj1mdW5jdGlvbigpe307dGhpcy5uZXh0PW51bGw7dGhpcy5fbmV4dENhbGxlZD0hMX07Zy5wcm90b3R5cGU9e2V4ZXV0ZTpmdW5jdGlvbigpeyJmdW5jdGlvbiI9PT10eXBlb2YgdGhpcy5hY3Rpb24mJnRoaXMuYWN0aW9uLmNhbGwodGhpcyl9LGdvdG9OZXh0OmZ1bmN0aW9uKCl7dGhpcy5faGFzTmV4dCgpJiZ0aGlzLm5leHQuZXhldXRlKCk7dGhpcy5fbmV4dENhbGxlZD0hMDtyZXR1cm4gdGhpc30sc2V0TmV4dDpmdW5jdGlvbihiKXt0aGlzLm5leHQ9YjtyZXR1cm4gdGhpc30sc2V0QWN0aW9uOmZ1bmN0aW9uKGIpe3RoaXMuYWN0aW9uPWI7cmV0dXJuIHRoaXN9LF9oYXNOZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPT10aGlzLm5leHQmJgohdGhpcy5fbmV4dENhbGxlZH19O3ZhciBhPXtzdWJqZWN0OiIiLGJvZHk6IiIsc2VuZFRvOiIiLHNlbmRUb0FERkZvcm1hdDoiIixzZWxlY3RlZFNlbmRUbzoiIixzZWxlY3RlZFNlbmRUb0FERkZvcm1hdDoiIixzZW5kRnJvbToiIix1c2VyRW1haWw6IiIsdHJhZGVpbjoiIixwb3B1cGRpdjoiIix1c2VyRmlyc3ROYW1lOiIiLHVzZXJMYXN0TmFtZToiIix1c2VyUGhvbmU6IiIscGhvbmVNYW5kYXRvcnk6MCxwaG9uZVZhbGlkYXRpb25BdHRlbXB0czoxLHVzZXJQb3N0YWw6IiIsdXNlckFkZHJlc3M6IiIsYmlydGhkYXRlOiIiLHVzZXJBdHRhY2htZW50UGF0aDoiIixtYWlsSUQ6ImdlbmVyaWNNYWlsIixsZWFkSW52b2tlcjoiZ2VuZXJpYyIsbGVhZEludm9rZXJTSUQ6IiIsaXNDVEE6ITEsYnV0dG9uVGV4dDoiIixyZXNldENhbGxiYWNrczpmdW5jdGlvbigpeyQuZXh0ZW5kKGEse2NhbGxiYWNrOm51bGwsb25EdXBsaWNhdGVTZW5kOiExLG9uQWZ0ZXJDb25zZW50OiExLG9uQmVmb3JlU2hvd0NvbnNlbnQ6ITF9KX0sCm1ha2U6IiIsbW9kZWw6IiIsdHJpbToiIix2aW46IiIscHJpY2U6MCx5ZWFyOjAsdmVoaWNsZVR5cGU6IiIsc3RvY2tOdW1iZXI6IiIscHVyY2hhc2VfaW50ZW50OiIiLHB1cmNoYXNlX2ludGVudF9zZWN0aW9uOiIiLGFsbG93X3NoYXJlX3BlcnNvbmFsX2RhdGE6IiIscHJlZmVycmVkX2NvbnRhY3Q6IiIsY2FyaWQ6MCxjb25kaXRpb246IlVzZWQiLGxhbmd1YWdlOiIiLGlzbW9iaWxlc2l0ZToiTk8iLGlzQW1wOiJOTyIscmVmZXJlcjoiIixwb3B1cE9mZmVyVHlwZToiIixwYXJ0aWFsOiExLGZyb21GYWNlYm9vazohMSxza2lwU2VuZGluZzohMSxmcm9tT25Mb2FkOiExLHBvc3RTdWJtaXRDYWxsYmFjazoiIixyZXN1bWVBY3Rpdml0eTohMCxzdWJtaXREYXRhOiIiLHN1Ym1pdFR5cGU6Im5vcm1hbCIsbGFzdENoZWNrc3VtOiIiLGNvbnNlbnREZWFsZXI6ITEsY29uc2VudE9FTTohMSxjb25zZW50VHlwZToiSW1wbGljaXQiLGNvbnNlbnRFeHBpcmF0aW9uOiIiLGNvbnNlbnREYXRlOiIiLApjb25zZW50RnJlcXVlbmN5Oi0xLGNvbnNlbnREZXRhaWxzRlI6IiIsY29uc2VudERldGFpbHNFTjoiIixkZXRhaWxzRGVmYXVsdHM6IiIsZnJvbUFBOjAsb3duZXJJRDowLGRlcGFydG1lbnQ6IiIsc2tpcEdldERlcDohMSxkZXBhcnRtZW50QnlTdG9jazohMSxhc2tQdXJjaGFzZUludGVudDohMSxsZWFkVGl0bGVVSVRleHQ6IiIsbGVhZFRpdGxlVGV4dDoiIixnZW9sb2Nfc3RhdHVzOiIiLGdlb2xvY19sYXQ6IiIsZ2VvbG9jX2xvbmc6IiIsZ2VvbG9jX2FjY3VyYWN5Oi0xLGdlb2xvY190cmFja19zdHI6IiIsZ2VvbG9jX2VtYWlsX3N0cjoiIix0cmFuc3BvcnRPcHRpb246IiIsY2FyMl9tYWtlOiIiLGNhcjJfbW9kZWw6IiIsY2FyMl90cmltOiIiLGNhcjJfeWVhcjoiIixjYXIyX2NvbG9yOiIiLGNhcjJfb2RvbWV0ZXI6IiIsY2FyMl92aW46IiIsY2FyMl90cmFuc21pc3NvbjoiIixjYXIyX2RyaXZldHJhaW46IiIsY2FyMl9mdWVsdHlwZToiIixjb21tZW50czoiIixncmVjYXB0Y2hhUmVzcG9uc2VUb2tlbjoiIiwKaWdub3JlQ2FwdGNoYTohMSxjb250YWN0SUQ6MCxjb250YWN0QWRkcmVzczoiIixjb250YWN0Q2l0eToiIixjb250YWN0UHJvdmluY2U6IiIsY29udGFjdFppcDoiIixjb250YWN0TkFTOiIiLGNvbnRhY3RCaXJ0aDoiIixkZWFsZXJOYW1lOiIiLGdldE5ld1NlcXVlbmNlOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBnfSxjcmVhdGVDaGVja3N1bTpmdW5jdGlvbigpe2Zvcih2YXIgYj0iIixkPVsibWFrZSIsIm1vZGVsIiwieWVhciIsIm1haWxJRCJdLGM9MDtjPGQubGVuZ3RoO2MrKyl7dmFyIGY9ZFtjXSxrPWFbZl0sbT10eXBlb2YgaztpZigic3RyaW5nIj09bXx8Im51bWJlciI9PW0pYis9ZisiOiIraysiOyJ9ZD0iMDAwMDAwMDAgNzcwNzMwOTYgRUUwRTYxMkMgOTkwOTUxQkEgMDc2REM0MTkgNzA2QUY0OEYgRTk2M0E1MzUgOUU2NDk1QTMgMEVEQjg4MzIgNzlEQ0I4QTQgRTBENUU5MUUgOTdEMkQ5ODggMDlCNjRDMkIgN0VCMTdDQkQgRTdCODJEMDcgOTBCRjFEOTEgMURCNzEwNjQgNkFCMDIwRjIgRjNCOTcxNDggODRCRTQxREUgMUFEQUQ0N0QgNkREREU0RUIgRjRENEI1NTEgODNEMzg1QzcgMTM2Qzk4NTYgNjQ2QkE4QzAgRkQ2MkY5N0EgOEE2NUM5RUMgMTQwMTVDNEYgNjMwNjZDRDkgRkEwRjNENjMgOEQwODBERjUgM0I2RTIwQzggNEM2OTEwNUUgRDU2MDQxRTQgQTI2NzcxNzIgM0MwM0U0RDEgNEIwNEQ0NDcgRDIwRDg1RkQgQTUwQUI1NkIgMzVCNUE4RkEgNDJCMjk4NkMgREJCQkM5RDYgQUNCQ0Y5NDAgMzJEODZDRTMgNDVERjVDNzUgRENENjBEQ0YgQUJEMTNENTkgMjZEOTMwQUMgNTFERTAwM0EgQzhENzUxODAgQkZEMDYxMTYgMjFCNEY0QjUgNTZCM0M0MjMgQ0ZCQTk1OTkgQjhCREE1MEYgMjgwMkI4OUUgNUYwNTg4MDggQzYwQ0Q5QjIgQjEwQkU5MjQgMkY2RjdDODcgNTg2ODRDMTEgQzE2MTFEQUIgQjY2NjJEM0QgNzZEQzQxOTAgMDFEQjcxMDYgOThEMjIwQkMgRUZENTEwMkEgNzFCMTg1ODkgMDZCNkI1MUYgOUZCRkU0QTUgRThCOEQ0MzMgNzgwN0M5QTIgMEYwMEY5MzQgOTYwOUE4OEUgRTEwRTk4MTggN0Y2QTBEQkIgMDg2RDNEMkQgOTE2NDZDOTcgRTY2MzVDMDEgNkI2QjUxRjQgMUM2QzYxNjIgODU2NTMwRDggRjI2MjAwNEUgNkMwNjk1RUQgMUIwMUE1N0IgODIwOEY0QzEgRjUwRkM0NTcgNjVCMEQ5QzYgMTJCN0U5NTAgOEJCRUI4RUEgRkNCOTg4N0MgNjJERDFEREYgMTVEQTJENDkgOENEMzdDRjMgRkJENDRDNjUgNERCMjYxNTggM0FCNTUxQ0UgQTNCQzAwNzQgRDRCQjMwRTIgNEFERkE1NDEgM0REODk1RDcgQTREMUM0NkQgRDNENkY0RkIgNDM2OUU5NkEgMzQ2RUQ5RkMgQUQ2Nzg4NDYgREE2MEI4RDAgNDQwNDJENzMgMzMwMzFERTUgQUEwQTRDNUYgREQwRDdDQzkgNTAwNTcxM0MgMjcwMjQxQUEgQkUwQjEwMTAgQzkwQzIwODYgNTc2OEI1MjUgMjA2Rjg1QjMgQjk2NkQ0MDkgQ0U2MUU0OUYgNUVERUY5MEUgMjlEOUM5OTggQjBEMDk4MjIgQzdEN0E4QjQgNTlCMzNEMTcgMkVCNDBEODEgQjdCRDVDM0IgQzBCQTZDQUQgRURCODgzMjAgOUFCRkIzQjYgMDNCNkUyMEMgNzRCMUQyOUEgRUFENTQ3MzkgOUREMjc3QUYgMDREQjI2MTUgNzNEQzE2ODMgRTM2MzBCMTIgOTQ2NDNCODQgMEQ2RDZBM0UgN0E2QTVBQTggRTQwRUNGMEIgOTMwOUZGOUQgMEEwMEFFMjcgN0QwNzlFQjEgRjAwRjkzNDQgODcwOEEzRDIgMUUwMUYyNjggNjkwNkMyRkUgRjc2MjU3NUQgODA2NTY3Q0IgMTk2QzM2NzEgNkU2QjA2RTcgRkVENDFCNzYgODlEMzJCRTAgMTBEQTdBNUEgNjdERDRBQ0MgRjlCOURGNkYgOEVCRUVGRjkgMTdCN0JFNDMgNjBCMDhFRDUgRDZENkEzRTggQTFEMTkzN0UgMzhEOEMyQzQgNEZERkYyNTIgRDFCQjY3RjEgQTZCQzU3NjcgM0ZCNTA2REQgNDhCMjM2NEIgRDgwRDJCREEgQUYwQTFCNEMgMzYwMzRBRjYgNDEwNDdBNjAgREY2MEVGQzMgQTg2N0RGNTUgMzE2RThFRUYgNDY2OUJFNzkgQ0I2MUIzOEMgQkM2NjgzMUEgMjU2RkQyQTAgNTI2OEUyMzYgQ0MwQzc3OTUgQkIwQjQ3MDMgMjIwMjE2QjkgNTUwNTI2MkYgQzVCQTNCQkUgQjJCRDBCMjggMkJCNDVBOTIgNUNCMzZBMDQgQzJEN0ZGQTcgQjVEMENGMzEgMkNEOTlFOEIgNUJERUFFMUQgOUI2NEMyQjAgRUM2M0YyMjYgNzU2QUEzOUMgMDI2RDkzMEEgOUMwOTA2QTkgRUIwRTM2M0YgNzIwNzY3ODUgMDUwMDU3MTMgOTVCRjRBODIgRTJCODdBMTQgN0JCMTJCQUUgMENCNjFCMzggOTJEMjhFOUIgRTVENUJFMEQgN0NEQ0VGQjcgMEJEQkRGMjEgODZEM0QyRDQgRjFENEUyNDIgNjhEREIzRjggMUZEQTgzNkUgODFCRTE2Q0QgRjZCOTI2NUIgNkZCMDc3RTEgMThCNzQ3NzcgODgwODVBRTYgRkYwRjZBNzAgNjYwNjNCQ0EgMTEwMTBCNUMgOEY2NTlFRkYgRjg2MkFFNjkgNjE2QkZGRDMgMTY2Q0NGNDUgQTAwQUUyNzggRDcwREQyRUUgNEUwNDgzNTQgMzkwM0IzQzIgQTc2NzI2NjEgRDA2MDE2RjcgNDk2OTQ3NEQgM0U2RTc3REIgQUVEMTZBNEEgRDlENjVBREMgNDBERjBCNjYgMzdEODNCRjAgQTlCQ0FFNTMgREVCQjlFQzUgNDdCMkNGN0YgMzBCNUZGRTkgQkRCREYyMUMgQ0FCQUMyOEEgNTNCMzkzMzAgMjRCNEEzQTYgQkFEMDM2MDUgQ0RENzA2OTMgNTRERTU3MjkgMjNEOTY3QkYgQjM2NjdBMkUgQzQ2MTRBQjggNUQ2ODFCMDIgMkE2RjJCOTQgQjQwQkJFMzcgQzMwQzhFQTEgNUEwNURGMUIgMkQwMkVGOEQiLnNwbGl0KCIgIikubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBwYXJzZUludCh0LAoxNil9KTt2YXIgbj1uXi0xO2M9MDtmb3IoZj1iLmxlbmd0aDtjPGY7YysrKW49bj4+PjheZFsobl5iLmNoYXJDb2RlQXQoYykpJjI1NV07cmV0dXJuKG5eLTEpPj4+MH0sc2V0TXVsdGlEZWFsZXJCb2R5OmZ1bmN0aW9uKGIsZCl7dmFyIGM9JCgiI3Bvc3RMZWFkTGFiZWwiKS52YWwoKTsidW5kZWZpbmVkIiE9PXR5cGVvZiBjPyhjPWMucmVwbGFjZSgieyRNVUxUSURFQUxFUk5BTUV9IixiKS5yZXBsYWNlKCJ7JFBPU1RfTEVBRF9FTUFJTFN9IixkKSxhLmJvZHk9YS5ib2R5LnJlcGxhY2UoInskREVBTEVSX1NFTkRUT30iLGMpLGEuZGVhbGVyTmFtZT1iKTphLmJvZHk9YS5ib2R5LnJlcGxhY2UoLzxiclxzP1wvPntcJERFQUxFUl9TRU5EVE99KGJyXHM\/XC8pPy8sIiIpLnJlcGxhY2UoInskREVBTEVSX1NFTkRUT30iLCIiKX0sc2hvd0NvbnNlbnQ6ZnVuY3Rpb24oYixkKXthLmdldEVtYWlsQ29uc2VudChmdW5jdGlvbihjKXt2YXIgZj1hLmdldE5ld1NlcXVlbmNlKCksaz1hLmdldE5ld1NlcXVlbmNlKCk7CmYuc2V0QWN0aW9uKGZ1bmN0aW9uKCl7dmFyIG09dGhpcyxuPSQoIiNtdWx0aS1hZGRyZXNzLXN1Ym1pc3Npb24iKSx0PW4uZmluZCgic2VsZWN0Iikscj0kKCIuZGVhbGVyLXNlbGVjdC13cmFwcGVyIiksdj0xMTEyO2EuaGFzU2VsZWN0ZWRNdWx0aUFkZHJlc3M9ITE7aWYoKCQoIiNjdXN0b21Gb3JtX3NlbmR0byIpLmxlbmd0aCYmIiIhPSQoIiNjdXN0b21Gb3JtX3NlbmR0byIpLnZhbCgpfHwkKCIjY3VzdG9tRm9ybV9zZW5kdG9BREYiKS5sZW5ndGgmJiIiIT0kKCIjY3VzdG9tRm9ybV9zZW5kdG9BREYiKS52YWwoKSkmJjA8PSQoIiNQQUdFSUQiKS52YWwoKS5pbmRleE9mKCJnZW5lcmljXyIpfHwwPT1uLmxlbmd0aHx8MCE9PWEuZGVhbGVyTmFtZS5sZW5ndGh8fCJKb2JPZmZlciI9PWEubWFpbElEJiYiIiE9JCgiI3RleHRTZW5kVG9FbWFpbERlZmF1bHQiKS52YWwoKSlyZXR1cm4gbS5nb3RvTmV4dCgpO3ZhciBxPSQoIiNQT1NUX0xFQURfU0VORF9UT19ERUFMRVJfVFlQRV9TRUxFQ1QiKS5sZW5ndGg\/CiQoIiNQT1NUX0xFQURfU0VORF9UT19ERUFMRVJfVFlQRV9TRUxFQ1QiKS52YWwoKToibG9jYXRpb24iO2lmKDA8JCgiI3RhcmdldFBhZ2UiKS5sZW5ndGgmJiJDQVJERVRBSUxTIj09PSQoIiN0YXJnZXRQYWdlIikudmFsKCkmJiJsb2NhdGlvbiI9PT1xfHwoIiIhPT1hLnN0b2NrTnVtYmVyfHxhLmNhcmlkfHxhLmdldFN0b2NrTnVtYmVyKCkpJiYibG9jYXRpb24iPT09cSlyZXR1cm4gbS5nb3RvTmV4dCgpOyQoIiNtdWx0aS1kZWFsZXItbWFwIikubGVuZ3RoJiYoR29vZ2xlTWFwc1dyYXBwZXIuc2V0R29vZ2xlTWFwKCkscT0kKCIjZm9vdGVyR29vZ2xlTWFwWm9vbSIpLnZhbCgpLHE9MTxwYXJzZUludChxKSYmMTg+PXBhcnNlSW50KHEpP3BhcnNlSW50KHEpOjkscT1uZXcgR29vZ2xlTWFwc1dyYXBwZXIoe2VsZW1lbnQ6Im11bHRpLWRlYWxlci1tYXAiLGFkZHJlc3NlczoidW5kZWZpbmVkIiE9dHlwZW9mIGZvb3Rlck1hcEFkZHJlc3Nlcz9mb290ZXJNYXBBZGRyZXNzZXM6W10sem9vbTpxLApvbkFmdGVyTWFya2VyQ3JlYXRlZDpmdW5jdGlvbihoLGwpe3ZhciB1PSQoYC5kZWFsZXItc2VsZWN0LXdyYXBwZXIgYnV0dG9uW2RhdGEtZGVhbGVyaWQ9IiR7aC5kZWFsZXJJZH0iXWApO3Uub24oImNsaWNrIixmdW5jdGlvbigpe2dvb2dsZS5tYXBzLmV2ZW50LnRyaWdnZXIobCwiY2xpY2siKX0pO2wuYWRkTGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbigpeyQoIi5kZWFsZXItc2VsZWN0LXdyYXBwZXIgYnV0dG9uIikucmVtb3ZlQ2xhc3MoImZvY3VzZWQiKTt2YXIgdz0kKCcjbXVsdGktYWRkcmVzcy1zdWJtaXNzaW9uIHNlbGVjdFtuYW1lPSJtdWx0aV9kZWFsZXJfc2VuZFRvIl0nKTt1Lmxlbmd0aCYmKHUuYWRkQ2xhc3MoImZvY3VzZWQiKSx1WzBdLmZvY3VzKCksbXVsdGlEZWFsZXJTZWxlY3Quc2V0U2VsZWN0KHVbMF0sITEpKTtpZih3Lmxlbmd0aCl7dmFyIHg9dy5maW5kKGBvcHRpb25bZGF0YS1kZWFsZXJpZD0iJHtoLmRlYWxlcklkfSJdYCk7eC5sZW5ndGgmJncudmFsKHgudmFsKCkpfX0pOwokKGAjbXVsdGktYWRkcmVzcy1zdWJtaXNzaW9uIG9wdGlvbltkYXRhLWRlYWxlcmlkPSIke2guZGVhbGVySWR9Il1gKS5kYXRhKCJtYXJrZXIiLGwpfSxvbkFmdGVySW5pdDpmdW5jdGlvbigpeyJ1bmRlZmluZWQiIT10eXBlb2YgZm9vdGVyTWFwQWRkcmVzc2VzJiYwIT1mb290ZXJNYXBBZGRyZXNzZXMubGVuZ3RofHwkKCIjbXVsdGktZGVhbGVyLW1hcCIpLmhpZGUoKTskKCcjbXVsdGktYWRkcmVzcy1zdWJtaXNzaW9uIHNlbGVjdFtuYW1lPSJtdWx0aV9kZWFsZXJfc2VuZFRvIl0nKS5vbigiY2hhbmdlIixmdW5jdGlvbigpe3ZhciBoPSQodGhpcykuZmluZCgiOnNlbGVjdGVkIik7aC5sZW5ndGgmJmdvb2dsZS5tYXBzLmV2ZW50LnRyaWdnZXIoaC5kYXRhKCJtYXJrZXIiKSwiY2xpY2siKX0pfX0pLCQoIiNtdWx0aS1kZWFsZXItbWFwIikuc2hvdygpLHEuaW5pdCgpKTt0Lm9mZigiZm9jdXMiKS5vbigiZm9jdXMiLGZ1bmN0aW9uKCl7dC5yZW1vdmVDbGFzcygidmFsaWRpdHktZXJyb25lb3VzIil9KTsKdmFyIHA9ZnVuY3Rpb24oaCl7dmFyIGw9YS5nZXREZXAoKTtpZigiSm9iT2ZmZXIiPT1hLm1haWxJRClzd2l0Y2goJCgiI2pvYm9mZmVyX2RlcGFydG1lbnQiKS52YWwoKSl7Y2FzZSAiU2FsZXNuZXciOmw9Ik5FVyI7YnJlYWs7Y2FzZSAiU2FsZXN1c2VkIjpsPSJVU0VEIjticmVhaztjYXNlICJTZXJ2aWNlIjpsPSJTRVJWSUNFIjticmVhaztjYXNlICJQYXJ0cyI6bD0iUEFSVFMiO2JyZWFrO2RlZmF1bHQ6bD0iTkVXIn12YXIgdT0iIix3PSIiO3N3aXRjaChsKXtjYXNlICJVU0VEIjp1PWguZGF0YSgiZW1haWx1c2VkIik7dz1oLmRhdGEoImVtYWlsYWRmdXNlZCIpO2JyZWFrO2Nhc2UgIlNFUlZJQ0UiOnU9aC5kYXRhKCJlbWFpbHNlcnZpY2UiKTt3PWguZGF0YSgiZW1haWxhZGZzZXJ2aWNlIik7YnJlYWs7Y2FzZSAiUEFSVFMiOnU9aC5kYXRhKCJlbWFpbHBhcnRzIil8fGguZGF0YSgiZW1haWxzZXJ2aWNlIik7dz1oLmRhdGEoImVtYWlsYWRmcGFydHMiKXx8aC5kYXRhKCJlbWFpbGFkZnNlcnZpY2UiKTsKYnJlYWs7Y2FzZSAiRklOQU5DRSI6dT1oLmRhdGEoImVtYWlsZmluYW5jZSIpLHc9aC5kYXRhKCJlbWFpbGFkZmZpbmFuY2UiKX1hLnNlbmRUbz11fHxoLmRhdGEoImVtYWlsIil8fGguZGF0YSgiZW1haWx1c2VkIik7YS5zZWxlY3RlZFNlbmRUbz11fHxoLmRhdGEoImVtYWlsIil8fGguZGF0YSgiZW1haWx1c2VkIik7YS5zZW5kVG9BREZGb3JtYXQ9d3x8aC5kYXRhKCJlbWFpbGFkZiIpfHxoLmRhdGEoImVtYWlsYWRmdXNlZCIpO2Euc2VsZWN0ZWRTZW5kVG9BREZGb3JtYXQ9d3x8aC5kYXRhKCJlbWFpbGFkZiIpfHxoLmRhdGEoImVtYWlsYWRmdXNlZCIpO2EuaGFzU2VsZWN0ZWRNdWx0aUFkZHJlc3M9ITA7YS5kZWFsZXJpZD1oLmRhdGEoImRlYWxlcmlkIik7YS5zZXRNdWx0aURlYWxlckJvZHkoaC50ZXh0KCkudHJpbSgpLGEuc2VuZFRvKX07JCgiI211dGxpQWRkcmVzc1N1Ym1pdCIpLm9mZigiY2xpY2siKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7aWYoIiI9PT10LnZhbCgpKXQuYWRkQ2xhc3MoInZhbGlkaXR5LWVycm9uZW91cyIpLApyLmFkZENsYXNzKCJ2YWxpZGl0eS1lcnJvbmVvdXMiKTtlbHNle3ZhciBoPXQuZmluZCgiOnNlbGVjdGVkIik7cChoKTskKCIucmV2ZWFsLW1vZGFsLWJnIikuY3NzKCJ6LWluZGV4Iix2KTtuLnRyaWdnZXIoInJldmVhbDpjbG9zZSIpO20uZ290b05leHQoKX19KTtpZigkKCIubXVsdGktYWRkcmVzcy1zdWJtaXNzaW9uLWNsb3NlIikubGVuZ3RoKSQoIi5tdWx0aS1hZGRyZXNzLXN1Ym1pc3Npb24tY2xvc2UiKS5vZmYoImNsaWNrIikub24oImNsaWNrIixmdW5jdGlvbigpe0xlYWRzJiZPYmplY3Qua2V5cyhMZWFkcykuZm9yRWFjaChmdW5jdGlvbihoKXsidW5kZWZpbmVkIiE9PXR5cGVvZiBMZWFkc1toXS5sZWFkSWQmJkxlYWRIYW5kbGVyKCkuZ2V0TGVhZChMZWFkc1toXS5sZWFkSWQpLmNsb3NlKCl9KTtwb3B1cFN1cGVydmlzb3ImJnBvcHVwU3VwZXJ2aXNvci5wb3B1cHMmJnBvcHVwU3VwZXJ2aXNvci5wb3B1cHMuZm9yRWFjaChmdW5jdGlvbihoKXtoJiZ0eXBlb2YgaC5pc0FjdGl2ZSgpJiYKaC5jYW5jZWwoKX0pOyQoIi5yZXZlYWwtbW9kYWwtYmciKS5jc3MoInotaW5kZXgiLHYpO24udHJpZ2dlcigicmV2ZWFsOmNsb3NlIil9KTtpZigiIiE9PWEubWFrZSYmbXVsdGlEZWFsZXJTZWxlY3QmJihxPW11bHRpRGVhbGVyU2VsZWN0LmZpbHRlcih0KSxxLmJ5TWFrZShhLm1ha2UpLHE9cS5oYXNPbmx5T25lKCkpKXJldHVybiBwKHEpLG0uZ290b05leHQoKTtyLmxlbmd0aCYmKHE9ci5maW5kKCJidXR0b24iKS50b0FycmF5KCkscS5sZW5ndGgmJihxPWZ1bmN0aW9uKGgpe2ZvcihsZXQgbD1oLmxlbmd0aC0xOzA8bDtsLS0pe2NvbnN0IHU9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKihsKzEpKTtbaFtsXSxoW3VdXT1baFt1XSxoW2xdXX1yZXR1cm4gaH0ocSksci5maW5kKCJidXR0b24iKS5yZW1vdmUoKSxyLmFwcGVuZChxKSkpO24ucmV2ZWFsKHthbmltYXRpb246ImZhZGVBbmRQb3AiLGFuaW1hdGlvbnNwZWVkOjMwMCxjbG9zZW9uYmFja2dyb3VuZGNsaWNrOiExLGRpc21pc3Ntb2RhbGNsYXNzOiJjbG9zZS1yZXZlYWwtbW9kYWwyIiwKY2xvc2VvbmVzY2FwZTohMX0pO3Y9JCgiLnJldmVhbC1tb2RhbC1iZyIpLmNzcygiei1pbmRleCIpOyQoIi5yZXZlYWwtbW9kYWwtYmciKS5jc3MoInotaW5kZXgiLHBhcnNlSW50KG4uY3NzKCJ6LWluZGV4IikpLTEpfSk7ay5zZXRBY3Rpb24oZnVuY3Rpb24oKXt2b2lkIDA9PWImJihiPSExKTt2b2lkIDA9PWQmJihkPSExKTt2YXIgbT0kKCIjYXNQb3BVcCIpLG49ITE7KGEuYXNrUHVyY2hhc2VJbnRlbnR8fGEuc2hvdWxkRGlzcGxheVB1cmNoYXNlSW50ZW50Q29udGFjdCgpKSYmMDwkKCIjYXNQdXJjaGFzZUludGVudCIpLmxlbmd0aCYmKG09JCgiI2FzUHVyY2hhc2VJbnRlbnQiKSxuPSEwKTtpZigwPG0ubGVuZ3RoKXtnZXRDb29raWUoInZpc2l0b3JfaGFzX2V4cGxpY2l0X2NvbnNlbnQiKTt2YXIgdD1wYXJzZUludChnZXRDb29raWUoInZpc2l0b3JfaGFzX3NlZW5fcG9wdXAiKSwxMCk7aXNOYU4odCkmJih0PTApO2Euc2tpcFNlbmRpbmc9YjthLmZyb21PbkxvYWQ9ZDtpZihjLmhhc0NvbnNlbnQpe3N3aXRjaChhLnN1Ym1pdFR5cGUpe2Nhc2UgImluc3RhbnRSZWJhdGUiOmNhc2UgInNjcmF0Y2giOnJlYWxTdWJtaXRSZWJhdGVDb3Vwb24oKTsKYnJlYWs7ZGVmYXVsdDoiIiE9YS5wb3N0U3VibWl0Q2FsbGJhY2smJmV2YWwoYS5wb3N0U3VibWl0Q2FsbGJhY2spfWEucmVhZHlUb1NlbmQoKX1lbHNle3N3aXRjaChhLnN1Ym1pdFR5cGUpe2Nhc2UgInNjcmF0Y2giOmNhc2UgImluc3RhbnRSZWJhdGUiOmNsb3NlUG9wdXBXaWRnZXQoKX0iZnVuY3Rpb24iPT10eXBlb2YgYS5vbkJlZm9yZVNob3dDb25zZW50JiZhLm9uQmVmb3JlU2hvd0NvbnNlbnQuY2FsbCgpO2lmKG4pYS5zaG91bGREaXNwbGF5UHVyY2hhc2VJbnRlbnRDb250YWN0KCk\/ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2FzUHVyY2hhc2VJbnRlbnQgLnN0ZXBDb250YWN0IikuY2xhc3NMaXN0LnJlbW92ZSgiaGlkZGVuIik6ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2FzUHVyY2hhc2VJbnRlbnQgLnN0ZXBDb250YWN0IikuY2xhc3NMaXN0LmFkZCgiaGlkZGVuIiksJCgiI2VtYWlsQ29uc2VudFN1Ym1pdCIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXt2YXIgcj17fTttLmZpbmQoImZvcm0iKS5zZXJpYWxpemVBcnJheSgpLm1hcChwPT4Ke3JbcC5uYW1lXT1wLnZhbHVlfSk7JCgiI0FMTE9XX1NIQVJFX1BFUlNPTkFMX0lORk8sIC5zdGVwQ29uc2VudCIpLmNzcyh7Ym9yZGVyOiJub25lIn0pOyQoIiNBTExPV19TSEFSRV9QRVJTT05BTF9JTkZPX1RFWFRfRVJST1IiKS5oaWRlKCk7aWYoMT09JCgiI0FMTE9XX1NIQVJFX1BFUlNPTkFMX0lORk8iKS5pcygiOnZpc2libGUiKSYmKCFyLnNoYXJlX3BlcnNvbmFsfHwibm8iPT1yLnNoYXJlX3BlcnNvbmFsKSlyZXR1cm4gJCgiI0FMTE9XX1NIQVJFX1BFUlNPTkFMX0lORk8iKS5jc3Moe2JvcmRlcjoiMXB4IHNvbGlkIHJlZCJ9KSwkKCIjQUxMT1dfU0hBUkVfUEVSU09OQUxfSU5GT19URVhUX0VSUk9SIikuc2hvdygpLCExO2lmKCFyLmhhc093blByb3BlcnR5KCJjb25zZW50IikpcmV0dXJuICQoIi5zdGVwQ29uc2VudCIpLmNzcyh7Ym9yZGVyOiIxcHggc29saWQgcmVkIn0pLCExO3ZhciB2PXtwdXJjaGFzZV9pbnRlbnQ6LTEsc2hhcmVfcGVyc29uYWw6Im5vIixwcmVmZXJyZWRfY29udGFjdDoiIn07CmZvcih2YXIgcSBpbiB2KXYuaGFzT3duUHJvcGVydHkocSkmJihyLmhhc093blByb3BlcnR5KHEpP3NldENvb2tpZShxLHJbcV0pOnJbcV09dltxXSk7YS5wdXJjaGFzZV9pbnRlbnQ9ci5wdXJjaGFzZV9pbnRlbnQ7YS5hbGxvd19zaGFyZV9wZXJzb25hbF9kYXRhPXIuc2hhcmVfcGVyc29uYWw7YS5wcmVmZXJyZWRfY29udGFjdD1yLnByZWZlcnJlZF9jb250YWN0O3Y9Ii0xIiE9ci5jb25zZW50O3E9ci5oYXNPd25Qcm9wZXJ0eSgiY29uc2VudF9vZW0iKSYmIjEiPT1yLmNvbnNlbnRfb2VtO2Euc3VibWl0Q29uc2VudCh2LHEsImNvbXBsZXgiKTtyZXR1cm4hMX0pO2Vsc2UgJCgiI2NvbnNlbnRTdWJtaXQiKS5vbigiY2xpY2siLGZ1bmN0aW9uKHIpe3IucHJldmVudERlZmF1bHQoKTtyPSExOyQoIi5kZWFsZXJDb25zZW50IikuY3NzKHtib3JkZXI6Im5vbmUifSk7JCgiLm9lbUNvbnNlbnQiKS5jc3Moe2JvcmRlcjoibm9uZSJ9KTt2YXIgdj17fTttLmZpbmQoImZvcm0iKS5zZXJpYWxpemVBcnJheSgpLm1hcChwPT4Ke3ZbcC5uYW1lXT1wLnZhbHVlfSk7di5oYXNPd25Qcm9wZXJ0eSgiY29uc2VudCIpfHwoJCgiLmRlYWxlckNvbnNlbnQiKS5jc3Moe2JvcmRlcjoiMXB4IHNvbGlkIHJlZCJ9KSxyPSEwKTttLmZpbmQoImZvcm0gLm9lbUNvbnNlbnQiKS5sZW5ndGgmJiF2Lmhhc093blByb3BlcnR5KCJjb25zZW50X29lbSIpJiYkKCIjb2VtQ2VydGlmaWNhdGlvbiIpLnZhbCgpJiYobS5maW5kKCJmb3JtIC5vZW1Db25zZW50IikuY3NzKHtib3JkZXI6IjFweCBzb2xpZCByZWQifSkscj0hMCk7aWYocilyZXR1cm4hMTtyPSItMSIhPXYuY29uc2VudDt2YXIgcT12Lmhhc093blByb3BlcnR5KCJjb25zZW50X29lbSIpJiYiMSI9PXYuY29uc2VudF9vZW07YS5zdWJtaXRDb25zZW50KHIscSl9KTthLnByZVNlbmRJbXBsaWNpdCgpO20ucmV2ZWFsKHthbmltYXRpb246ImZhZGVBbmRQb3AiLGFuaW1hdGlvbnNwZWVkOjMwMCxjbG9zZW9uYmFja2dyb3VuZGNsaWNrOiExLGRpc21pc3Ntb2RhbGNsYXNzOiJjbG9zZS1yZXZlYWwtbW9kYWwiLApjbG9zZW9uZXNjYXBlOiExfSl9fWVsc2UiIj09YS5jb25zZW50RGV0YWlsc0VOJiZ2b2lkIDAhPWEuZGV0YWlsc0RlZmF1bHRzLkVOR0xJU0gmJnZvaWQgMCE9YS5kZXRhaWxzRGVmYXVsdHMuRlJFTkNIJiYoYS5jb25zZW50RGV0YWlsc0VOPWEuZGV0YWlsc0RlZmF1bHRzLkVOR0xJU0hbMl0sYS5jb25zZW50RGV0YWlsc0ZSPWEuZGV0YWlsc0RlZmF1bHRzLkZSRU5DSFsyXSksYj9yZWFsU2hvd1BvcHVwV2lkZ2V0KGQpOmEucmVhZHlUb1NlbmQoKX0pO2Yuc2V0TmV4dChrKS5leGV1dGUoKX0pfSxoaWRlQ29uc2VudDpmdW5jdGlvbigpe3ZhciBiPSQoIiNhc1BvcFVwOnZpc2libGUiKTskKCIjYXNQdXJjaGFzZUludGVudCIpLmlzKCI6dmlzaWJsZSIpJiYiaGlkZGVuIiE9PSQoIiNhc1B1cmNoYXNlSW50ZW50IikuY3NzKCJ2aXNpYmlsaXR5IikmJihiPSQoIiNhc1B1cmNoYXNlSW50ZW50OnZpc2libGUiKSxjb21wbGV4PSEwKTswPGIubGVuZ3RoJiZiLnRyaWdnZXIoInJldmVhbDpjbG9zZSIpfSwKc2F2ZUNvbnNlbnQ6ZnVuY3Rpb24oYixkLGMsZil7JCgiYm9keSIpLmNzcygib3ZlcmZsb3ciLCJhdXRvIik7YS5oaWRlQ29uc2VudCgpO3ZvaWQgMD09YyYmKGM9IiIpO3ZhciBrPWI\/NzMwOjE4MDtkPXtlbWFpbDphLnVzZXJFbWFpbCxmaXJzdDphLnVzZXJGaXJzdE5hbWUsbGFzdDphLnVzZXJMYXN0TmFtZSxwaG9uZTphLnVzZXJQaG9uZSxzaXRlSUQ6JCgiI3NpdGVJRCIpLnZhbCgpLGZyZXF1ZW5jeTpiPzE6LTEsZXhwbGljaXQ6Yj8xOjAsZXhwbGljaXRPRU06ZD8xOjAsaW1nOmMscmVmZXJlcjp2b2lkIDAhPWRvY3VtZW50LnJlZmVycmVyP2RvY3VtZW50LnJlZmVycmVyOiIiLGZyb206IkVIIn07aWYodm9pZCAwIT09YS5wcmVmZXJyZWRfY29udGFjdCYmIiIhPT1hLnByZWZlcnJlZF9jb250YWN0fHx2b2lkIDAhPT1nZXRDb29raWUoInByZWZlcnJlZF9jb250YWN0IikmJiIiIT09Z2V0Q29va2llKCJwcmVmZXJyZWRfY29udGFjdCIpKWM9YS5wcmVmZXJyZWRfY29udGFjdHx8CmdldENvb2tpZSgicHJlZmVycmVkX2NvbnRhY3QiKSxjPXsiVMOpbMOpcGhvbmUiOiJQSE9ORSIsQ291cnJpZWw6IkVNQUlMIn1bY118fGMsbnVsbCE9PWMmJihkLmNvbnRhY3RQcmVmZXJlbmNlPWMudG9VcHBlckNhc2UoKSk7c2V0Q29va2llKCJ2aXNpdG9yX2ZyZXF1ZW5jeV9wcmVmZXJlbmNlIiwtMSxrKTtzZXRDb29raWUoInZpc2l0b3JfY29uc2VudF9wcmVmZXJlbmNlIixiPyJFeHBsaWNpdCI6IkltcGxpY2l0IixrKTtzZXRDb29raWUoInZpc2l0b3JfaGFzX2V4cGxpY2l0X2NvbnNlbnQiLGI\/InllcyI6Im5vIixrKTtzZXRDb29raWUoInZpc2l0b3JfZW1haWxfcHJlZmVyZW5jZSIsZC5lbWFpbCw5MCk7JCgiLnVpLWxvYWRlci1iYWNrZ3JvdW5kIikuc2hvdygpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXskKCIudWktbG9hZGVyLWJhY2tncm91bmQiKS5oaWRlKCl9LDVFMyk7JC5hamF4KHt0eXBlOiJQT1NUIix1cmw6Ii9hamF4L3RyYWNrRW1haWxQcmVmZXJlbmNlP3dzd2lkdGg9MCIsCmRhdGFUeXBlOiJqc29uIixkYXRhOmQsY29tcGxldGU6ZnVuY3Rpb24obSl7dHJ5e3ZhciBuPUpTT04ucGFyc2UobS5yZXNwb25zZVRleHQpO2EuY29uc2VudERldGFpbHNFTj1idG9hKG4uZGV0YWlsQ29uc2VudC5FTkdMSVNIKTthLmNvbnNlbnREZXRhaWxzRlI9YnRvYShuLmRldGFpbENvbnNlbnQuRlJFTkNIKX1jYXRjaCh0KXt9YS5wb3N0U2F2ZUNvbnNlbnQoYixmKX19KX0scG9zdFNhdmVDb25zZW50OmZ1bmN0aW9uKGIsZCl7dm9pZCAwIT1hLmRldGFpbHNEZWZhdWx0cy5FTkdMSVNIJiZ2b2lkIDAhPWEuZGV0YWlsc0RlZmF1bHRzLkZSRU5DSCYmKGI\/KGEuY29uc2VudERldGFpbHNFTj1hLmRldGFpbHNEZWZhdWx0cy5FTkdMSVNIWzFdLGEuY29uc2VudERldGFpbHNGUj1hLmRldGFpbHNEZWZhdWx0cy5GUkVOQ0hbMV0pOihhLmNvbnNlbnREZXRhaWxzRU49YS5kZXRhaWxzRGVmYXVsdHMuRU5HTElTSFsyXSxhLmNvbnNlbnREZXRhaWxzRlI9YS5kZXRhaWxzRGVmYXVsdHMuRlJFTkNIWzJdKSk7CmlmKGQpe2lmKGEuaWdub3JlQ2FwdGNoYT9hLnJlYWR5VG9TZW5kKCk6KGEucmVjYXB0Y2hhLnJlc2V0VG9rZW4oKSxhLnJlY2FwdGNoYS5nZXRSZXNwb25zZSgpLmRvbmUoZnVuY3Rpb24oYyl7YS5ncmVjYXB0Y2hhUmVzcG9uc2VUb2tlbj1jO2EucmVhZHlUb1NlbmQoKX0pKSwiZnVuY3Rpb24iPT10eXBlb2YgYS5vbkFmdGVyQ29uc2VudClhLm9uQWZ0ZXJDb25zZW50KGIpfWVsc2UgYS5oaWRlQ29uc2VudCgpfSxzdWJtaXRDb25zZW50OmZ1bmN0aW9uKGIsZCxjKXthLmNvbnNlbnREZWFsZXI9YjthLmNvbnNlbnRPRU09ZDtpZihjJiYiY29tcGxleCI9PWMpe3ZhciBmPSIiOy0xPT1hLnB1cmNoYXNlX2ludGVudD8oYz0iUGFzIGRlIHJlcG9uc2UiLGY9Ik5PX0FOU1dFUiIpOmM9YS5wdXJjaGFzZV9pbnRlbnQ7bnVsbCE9Yy5tYXRjaCgvMzAvKT8oYz0iTW9pbnMgZGUgMzAgam91cnMiLGY9IkxUXzMwX0RBWVMiKTpudWxsIT1jLm1hdGNoKC8zLyk\/KGM9Ik1vaW5zIGRlIDMgbW9pcyIsCmY9IkxUXzNfTU9OVEhTIik6bnVsbCE9Yy5tYXRjaCgvNi8pJiYobnVsbCE9Yy5tYXRjaCgvcGx1c3xvdmVyfG1vcmUvKT8oYz0iUGx1cyBkZSA2IG1vaXMiLGY9IkdUXzZfTU9OVEhTIik6KGM9Ik1vaW5zIGRlIDYgbW9pcyIsZj0iTFRfNl9NT05USFMiKSk7dmFyIGs9IlJlcG9uc2UgLSAiK2EucHVyY2hhc2VfaW50ZW50X3NlY3Rpb24udG9VcHBlckNhc2UoKTthLmxvZ0V2ZW50KCJJbnRlbnRpb25zIGFjaGF0OiAiK2MsIlBVUkNIQVNFX0lOVEVOVF8iK2YpOyJ1bmRlZmluZWQiIT09dHlwZW9mIGRlYnVnJiZkZWJ1ZyhbImIuX3RyYWNrRXZlbnQiLCJJbnRlbnRpb25zIGFjaGF0IixrLGMsMV0pfXN3aXRjaChhLnN1Ym1pdFR5cGUpe2Nhc2UgInNjcmF0Y2giOmNhc2UgImluc3RhbnRSZWJhdGUiOnJlYWxTdWJtaXRSZWJhdGVDb3Vwb24oKTticmVhaztkZWZhdWx0OiIiIT1hLnBvc3RTdWJtaXRDYWxsYmFjayYmZXZhbChhLnBvc3RTdWJtaXRDYWxsYmFjayl9InNjcmF0Y2giPT1hLnN1Ym1pdFR5cGUmJgpzaG93UG9wdXBXaWRnZXQoKTskKCIjbGFzdENvbnNlbnRQb3AiKS52YWwoYj8iRXhwbGljaXQiOiJJbXBsaWNpdCIpO2Euc2F2ZUNvbnNlbnQoYixkLCIiLCEwKX0scHJlU2VuZENoZWNrczpmdW5jdGlvbihiKXtiP2EucmVhZHlUb1NlbmQoKTphLnNob3dDb25zZW50KCl9LHNlbmRNYWlsOmZ1bmN0aW9uKGIpe3JldHVybiAkanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3JGdW5jdGlvbihmdW5jdGlvbiooKXthLnN1Ym1pdFR5cGU9Im5vcm1hbCI7Yj0idW5kZWZpbmVkIiE9dHlwZW9mIGI\/YjohMTthLmlnbm9yZUNhcHRjaGF8fChhLnJlY2FwdGNoYS5sb2FkKCksInVuZGVmaW5lZCIhPT1ncmVjYXB0Y2hhJiYtMTxhLnJlY2FwdGNoYS53aWRnZXRJZCYmKHlpZWxkIGEucmVjYXB0Y2hhLmdldFJlc3BvbnNlKCkpKTtpZigidW5kZWZpbmVkIj09dHlwZW9mICQoIiNvbkxlYWRTdWJtaXRHZW9sb2MiKS52YWwoKXx8MSE9JCgiI29uTGVhZFN1Ym1pdEdlb2xvYyIpLnZhbCgpfHwKInVuZGVmaW5lZCI9PXR5cGVvZiBnZW9Mb2NhdG9yfHxhLnNraXBHZW9Mb2MpYS5wcmVTZW5kQ2hlY2tzKGIpO2Vsc2V7dmFyIGQ9bmV3IGdlb0xvY2F0b3IoZnVuY3Rpb24oYyl7YS5nZW9sb2Nfc3RhdHVzPWMuZ2VvbG9jX3N0YXR1czsxPT1jLnJlc3VsdCYmKGEuZ2VvbG9jX2xhdD1jLmxhdGl0dWRlLGEuZ2VvbG9jX2xvbmc9Yy5sb25naXR1ZGUsYS5nZW9sb2NfYWNjdXJhY3k9Yy5hY2N1cmFjeSxhLmdlb2xvY190cmFja19zdHI9Yy5nZW9jb2RlX2FkZHJlc3MsYS5nZW9sb2NfZW1haWxfc3RyPWMuZ2VvY29kZV9hZGRyZXNzX3N0ciwtMT09YS5ib2R5LmluZGV4T2YoIiMjR0VPTE9DQVRJT04jIyIpJiYoYS5ib2R5PXRyaW0oYS5ib2R5KS5yZXBsYWNlKC88YnI+Jm5ic3A7L2csIjxicj4iKSsiIyNHRU9MT0NBVElPTiMjIiksInVuZGVmaW5lZCIhPXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZyYmInVuZGVmaW5lZCIhPXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50JiYKYWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudCgiUE9TVEFMX0NPREUiLGMuZ2VvY29kZV9hZGRyZXNzX3N0cikpOyJ1bmRlZmluZWQiPT10eXBlb2YgJCgiI2xlYWRTZW50IikudmFsKCkmJihjPSQoIjxpbnB1dD4iKS5hdHRyKHtpZDoibGVhZFNlbnQiLHR5cGU6ImhpZGRlbiJ9KS52YWwoMSksJCgiI2Zvb3RlckRpdiIpLmFwcGVuZChjKSxhLnByZVNlbmRDaGVja3MoYikpfSk7ZC50cmFja0xvY2F0aW9uR0E9ITA7ZC5nZXRMb2NhdGlvbigpfX0pfSxzZW5kVXNlckVtYWlsOmZ1bmN0aW9uKGIsZCl7c2VuZFRvRGF0YT17fTt2YXIgYz1iPSIiLGY9IiIsaz0iIjtmb3IoaSBpbiBkKWlmKCJzdHJpbmciPT10eXBlb2YgaSlzd2l0Y2goaS50b0xvd2VyQ2FzZSgpKXtjYXNlICJlbWFpbHRvIjpjPWRbaV07YnJlYWs7Y2FzZSAiZW1haWxpZCI6Yj1kW2ldO2JyZWFrO2Nhc2UgImRlYWxlcmVtYWlsIjpmPWRbaV07YnJlYWs7Y2FzZSAiZGVhbGVycGhvbmUiOms9ZFtpXTticmVhazsKZGVmYXVsdDpzZW5kVG9EYXRhW2ldPWRbaV19ZD17dmFyczpKU09OLnN0cmluZ2lmeShzZW5kVG9EYXRhKSxzaXRlaWQ6JCgiI3RvcHNpdGVpZCIpLnZhbCgpLGxhbmd1YWdlOiQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKSxlbWFpbGlkOmIsZW1haWx0bzpjLGRlYWxlckVtYWlsOmYsZGVhbGVyUGhvbmU6ayxzb3VyY2VVUkk6d2luZG93LmxvY2F0aW9uLmhyZWZ9OyQuYWpheCh7dHlwZToiUE9TVCIsdXJsOiIvYWpheC9hZGRNYWlsVG9TZW5kP3dzd2lkdGg9MCIsZGF0YTpkfSl9LGdldFN0b2NrTnVtYmVyOmZ1bmN0aW9uKCl7aWYoYS5zdG9ja051bWJlcilyZXR1cm4gYS5zdG9ja051bWJlcjtpZigwPCQoIiNsYXN0dmlld2Vkc3RvY2tudW1iZXIiKS5sZW5ndGgmJjA8JCgiI3RhcmdldFBhZ2UiKS5sZW5ndGgmJlsiTkVXQ0FSREVUQUlMUyIsIkNBUkRFVEFJTFMiLCJQUk9NTyIsIlZFSElDTEVFVkFMIl0uaW5jbHVkZXMoJCgiI3RhcmdldFBhZ2UiKS52YWwoKSkpe3ZhciBiPQokKCIjbGFzdHZpZXdlZHN0b2NrbnVtYmVyIikudmFsKCk7aWYoMjxiLmxlbmd0aCl7dmFyIGQ9Yi5pbmRleE9mKCIoU3RvY2siKTstMTxkJiYoYj1iLnN1YnN0cihkKzcpLGQ9Yi5pbmRleE9mKCIpIiksLTE8ZCYmKGI9Yi5zdWJzdHIoMCxkKS50cmltKCkpKTtiKz0iIn1lbHNlIGI9IiJ9ZWxzZSBiPWdldFBhcmFtZXRlckJ5TmFtZSgic3RvY2tubyIpfHwiIjtyZXR1cm4gYi50cmltKCl9LGdldFZQRFVybEZyb21TdG9jazpmdW5jdGlvbigpe3ZhciBiPSJFTkdMSVNIIj09JCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpPyQoIiNsYXN0dmlld2VkeWVhciIpLnZhbCgpKyIgIiskKCIjbGFzdHZpZXdlZG1ha2UiKS52YWwoKSsiICIrJCgiI2xhc3R2aWV3ZWRtb2RlbCIpLnZhbCgpKyIgIiskKCIjbGFzdHZpZXdlZHN0b2NrbnVtYmVyIikudmFsKCk6JCgiI2xhc3R2aWV3ZWRtYWtlIikudmFsKCkrIiAiKyQoIiNsYXN0dmlld2VkbW9kZWwiKS52YWwoKSsiICIrJCgiI2xhc3R2aWV3ZWR5ZWFyIikudmFsKCkrCiIgIiskKCIjbGFzdHZpZXdlZHN0b2NrbnVtYmVyIikudmFsKCk7dHJ5e3ZhciBkPWEuZ2V0U3RvY2tOdW1iZXIoKSxjPSIiLGY9IkVOR0xJU0giPT0kKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCk\/InVzZWQiOiJvY2Nhc2lvbiIsaz1lKCJocmVmIiksbT1lKCJwcm90b2NvbCIpLG49ay5yZXBsYWNlKG0rIi8vIiwiIikuc3BsaXQoIi8iKSx0PW5bMF0scj1rLmluZGV4T2YoIi1pZCIpO2lmKCJ1bmRlZmluZWQiPT09dHlwZW9mIHBhZ2V8fCJCVUlMREFORFBSSUNFIiE9cGFnZSYmIk5FV0NBUkRFVEFJTFMiIT1wYWdlKWlmKC0xPHIpe3ZhciB2PXBhcnNlSW50KGsuc3Vic3RyKHIrMykucmVwbGFjZSgiLmh0bWwiLCIiKSwxMCk7aWYoIWlzTmFOKHYpJiYwPHYpe3ZhciBxPW5bbi5sZW5ndGgtMV07LTE8cS5pbmRleE9mKHYpJiYoYz0nPGEgaHJlZj0iJyttKyIvLyIrdCsiLyIrZisiLyIrcSsiXCIgdGFyZ2V0PSdfYmxhbmsnPiIrYisiPC9hPiIpfX1lbHNlIiIhPT1hLnRyaW0mJgooYj0iRU5HTElTSCI9PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKT8kKCIjbGFzdHZpZXdlZHllYXIiKS52YWwoKSsiICIrJCgiI2xhc3R2aWV3ZWRtYWtlIikudmFsKCkrIiAiKyQoIiNsYXN0dmlld2VkbW9kZWwiKS52YWwoKSsiICIrYS50cmltOiQoIiNsYXN0dmlld2VkbWFrZSIpLnZhbCgpKyIgIiskKCIjbGFzdHZpZXdlZG1vZGVsIikudmFsKCkrIiAiK2EudHJpbSsiICIrJCgiI2xhc3R2aWV3ZWR5ZWFyIikudmFsKCkpO2Vsc2UiIiE9PWEudHJpbSYmKGI9IkVOR0xJU0giPT0kKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCk\/JCgiI2xhc3R2aWV3ZWR5ZWFyIikudmFsKCkrIiAiKyQoIiNsYXN0dmlld2VkbWFrZSIpLnZhbCgpKyIgIiskKCIjbGFzdHZpZXdlZG1vZGVsIikudmFsKCkrIiAiK2EudHJpbTokKCIjbGFzdHZpZXdlZG1ha2UiKS52YWwoKSsiICIrJCgiI2xhc3R2aWV3ZWRtb2RlbCIpLnZhbCgpKyIgIithLnRyaW0rIiAiKyQoIiNsYXN0dmlld2VkeWVhciIpLnZhbCgpKSwKYz0nPGEgaHJlZj0iJytrKyJcIiB0YXJnZXQ9J19ibGFuayc+IitiKyI8L2E+IjtpZigiIj09YyYmMjxkLmxlbmd0aCl7dmFyIHA9JCgiI3RvcHNpdGVpZCIpLnZhbCgpLGg9IkVOR0xJU0giPT0kKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCk\/ImVuIjoiZnIiOyQuYWpheCh7dHlwZToiR0VUIixhc3luYzohMSxkYXRhVHlwZToianNvbiIsdXJsOiIvIitoKyIvcGhwL2dldFVSTEZyb21TdG9jay5waHA\/c2l0ZUlEPSIrcCsiJnN0b2NrPSIrZCxzdWNjZXNzOmZ1bmN0aW9uKGwpeyJvYmplY3QiPT10eXBlb2YgbCYmbnVsbCE9bCYmdm9pZCAwIT1sLm1ha2UmJihjPSc8YSBocmVmPSInK20rIi8vIit0KyIvIitmKyIvIisobC5tYWtlKyItIitsLm1vZGVsKyItIitsLnllYXIrIi1pZCIrbC5pZCsiLmh0bWxcIiB0YXJnZXQ9J19ibGFuayc+IikrbC5mdWxsKyI8L2E+Iil9fSl9IiIhPWMmJihiPWMpfWNhdGNoKGwpe2NvbnNvbGUubG9nKGwpfXJldHVybiBifSxzZXRTZW5kQW5kRGVwYXJ0bWVudE92ZXJyaWRlOmZ1bmN0aW9uKGIpe2Z1bmN0aW9uIGQodiwKcSl7MDx2Lmxlbmd0aCYmIiIhPT12LnZhbCgpJiYoYi5zZW5kVG89di52YWwoKSk7MDxxLmxlbmd0aCYmIiIhPT1xLnZhbCgpJiYoYi5zZW5kVG9BREZGb3JtYXQ9cS52YWwoKSl9aWYoMCE9JCgiI2lzR2VuZXJpY1NlYXJjaFBhZ2UiKS5sZW5ndGgmJiJ0cnVlIj09PSQoIiNpc0dlbmVyaWNTZWFyY2hQYWdlIikudmFsKCkpe3N3aXRjaChhLm1haWxJRCl7Y2FzZSAibWVudVNlcnZpY2UiOmNhc2UgIm1lbnVDb250YWN0VXMiOmNhc2UgImhlYWRlclNlcnZpY2UiOnJldHVybn12YXIgYz0kKCIjQ1VTVE9NX1NFTkRfTEVBRCIpO2lmKDAhPT1jLmxlbmd0aCYmMCE9PWMudmFsKCkmJiJudWxsIiE9PWMudmFsKCkpe2IuZGVwYXJ0bWVudD1jLnZhbCgpLnRvVXBwZXJDYXNlKCk7dmFyIGY9JCgiI25ld0VtYWlsIiksaz0kKCIjbmV3QWRmRW1haWwiKSxtPSQoIiN0ZXh0U2VuZFRvRW1haWwiKSxuPSQoIiN0ZXh0U2VuZFRvRW1haWxBREYiKSx0PSQoIiNmaW5hbmNlRW1haWwiKSxyPSQoIiNmaW5hbmNlQWRmRW1haWwiKTsKc3dpdGNoKGMudmFsKCkpe2Nhc2UgIm5ldyI6ZChmLGspO2JyZWFrO2Nhc2UgInVzZWQiOmQobSxuKTticmVhaztjYXNlICJmaW5hbmNlIjpkKHQscil9fX19LGdldEpzb25PYmplY3Q6ZnVuY3Rpb24oKXthLnJlY2FwdGNoYS5zZXRSZXNwb25zZSgpOyIiPT1hLnRyaW0mJiQoIiNwb3B1cHRyaW0iKS5sZW5ndGgmJiJ7JFBPUFVQVFJJTX0iIT0kKCIjcG9wdXB0cmltIikudmFsKCkmJihhLnRyaW09JCgiI3BvcHVwdHJpbSIpLnZhbCgpKTt2YXIgYj17fSxkPWZ1bmN0aW9uKHope3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KChudWxsIT1Db29raWVzLmdldCh6KSYmInVuZGVmaW5lZCIhPXR5cGVvZiBDb29raWVzLmdldCh6KT9lc2NhcGUoQ29va2llcy5nZXQoeikpOiIiKSsiIi5yZXBsYWNlKC9cKy9nLCIlMjAiKSl9Y2F0Y2goQyl7cmV0dXJuKG51bGwhPUNvb2tpZXMuZ2V0KHopJiYidW5kZWZpbmVkIiE9dHlwZW9mIENvb2tpZXMuZ2V0KHopP2VzY2FwZShDb29raWVzLmdldCh6KSk6CiIiKSsiIi5yZXBsYWNlKC9cKy9nLCIlMjAiKX19LGM9ZCgicmVsYW5jZUlEIiksZj1kKCJ1dG1fc291cmNlIiksaz1kKCJ1dG1fY2FtcGFpZ24iKSxtPWEuZGVjb2RlVVJMUmVjdXJzaXZlbHkoZCgidXRtX2tleXdvcmQiKSksbj1kKCJ1dG1fbGFuZGluZ19mb290ZXIiKSx0PWQoInV0bV9zb3VyY2VfcmV0YXJnZXRpbmciKSxyPWQoInV0bV9jYW1wYWlnbl9yZXRhcmdldGluZyIpLHY9IkVOR0xJU0giPT0kKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCk\/IktleXdvcmQiOiJNb3QtY2wmIzIzMzsiLHE9MDxtLmxlbmd0aD8iWyAiK3YrIjogIittKyJdIjoiIixwPTA8bi5sZW5ndGg\/IltEZXN0aW5hdGlvbjogIitkMmNtZWRpYS5nZXRIdHRwVGV4dCgpKyI6Ly8iK3dpbmRvdy5sb2NhdGlvbi5ob3N0K24rIl0iOiJbRGVzdGluYXRpb246ICIrZDJjbWVkaWEuZ2V0SHR0cFRleHQoKSsiOi8vIit3aW5kb3cubG9jYXRpb24uaG9zdCtuKyIgLl0iO3Y9ZCgibG9jX2ludGVyZXN0Iik7ZD0KZCgibG9jX3BoeXNpY2FsIik7dmFyIGg9dj9gbG9jX2ludGVyZXN0PSR7dn1gOiIiLGw9ZD9gbG9jX3BoeXNpY2FsPSR7ZH1gOiIiLHU9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/Ik9yZ2FuaWMiOiJPcmdhbmlxdWUiO3E9MDxmLmxlbmd0aD9gJHtmfSAtICR7a30gJHtxfSAke2h9ICR7bH1gOnU7cD1kMmNtZWRpYS5jYXBpdGFsaXNlRmlyc3RMZXR0ZXJPZkV2ZXJ5V29yZChxKSsiICIrcDtsPSIiO2g9YS5nZXRTdG9ja051bWJlcigpOyIiIT1oJiYobD0iKFN0b2NrOiIrYS5nZXRTdG9ja051bWJlcigpKyIpIik7dT17bmV3OiJFTkdMSVNIIj09c2l0ZVBhZ2UubGFuZz8ibmV3IjoibmV1ZiIsbmV3aW52OiJFTkdMSVNIIj09c2l0ZVBhZ2UubGFuZz8ibmV3IjoibmV1ZiIsdXNlZDoiRU5HTElTSCI9PXNpdGVQYWdlLmxhbmc\/InVzZWQiOiJkJ29jY2FzaW9uIn07YS5ib2R5PWEuYm9keS5yZXBsYWNlKC97XCRVVE1ERVRBSUxTfS9nLHApO2EuYm9keT1hLmJvZHkucmVwbGFjZSgve1wkVVNFUk5BTUV9L2csCmEudXNlckZpcnN0TmFtZSk7YS5ib2R5PWEuYm9keS5yZXBsYWNlKC97XCRVU0VSUE9TVEFMfS9nLGEudXNlclBvc3RhbC50b1VwcGVyQ2FzZSgpKTthLmJvZHk9YS5ib2R5LnJlcGxhY2UoL3tcJFVUTURFVEFJTFN9L2csIiIpO2EuYm9keT1hLmJvZHkucmVwbGFjZSgve1wkRk9PVEVSfS9nLCIiKTthLmJvZHk9YS5ib2R5LnJlcGxhY2UoL3tcJEVNQUlMQlVJTERBTkRQUklDRX0vZyxhLmJhbmRwTGluaygpKTthLmJvZHk9YS5ib2R5LnJlcGxhY2UoL3tcJFNUT0NLTlVNQkVSTEFCRUx9L2csbCk7YS5ib2R5PWEuYm9keS5yZXBsYWNlKC97XCRTVE9DS05VTUJFUn0vZyxsKTthLmJvZHk9YS5ib2R5LnJlcGxhY2UoL3tcJFZFSElDTEVfQ09ORElUSU9OfS9nLHVbYS5jb25kaXRpb24udG9Mb3dlckNhc2UoKV0pO2lmKCIiIT09YS5ib2R5KXt2YXIgdz0kKCdpbnB1dFtkYXRhLWZvcnZhcj0iT1ZFUldSSVRURVJERUFMRVIiXScpLnZhbCgpJiYkKCdpbnB1dFtkYXRhLWZvcnZhcj0iT1ZFUldSSVRURVJERUFMRVIiXScpLmxlbmd0aD8KJCgnaW5wdXRbZGF0YS1mb3J2YXI9Ik9WRVJXUklUVEVSREVBTEVSIl0nKS52YWwoKToiIjtsPSIiIT0kKCdpbnB1dFtkYXRhLWZvcnZhcj0iREVBTEVSIl0nKS52YWwoKSYmJCgnaW5wdXRbZGF0YS1mb3J2YXI9IkRFQUxFUiJdJykubGVuZ3RoPyQoJ2lucHV0W2RhdGEtZm9ydmFyPSJERUFMRVIiXScpLnZhbCgpOiQoIiNoaWRkZW5EZWFsZXJOYW1lIikudmFsKCk7dz13IT1sJiYiIiE9dz93Omw7YS5kZWFsZXJOYW1lPWEuZGVhbGVyTmFtZT9hLmRlYWxlck5hbWU6d31hLmJvZHk9YS5ib2R5LnJlcGxhY2UoInskREVBTEVSTkFNRX0iLGEuZGVhbGVyTmFtZSk7YS5ib2R5PWEuYm9keS5yZXBsYWNlKCJ7JENVU1RPTVZFSElDTEVJTlRFUkVTVH0iLGEubWFrZSsiICIrYS5tb2RlbCsiICIrYS55ZWFyKTthLmxlYWRSZXF1ZXN0VHlwZSYmKGEuYm9keT1hLmJvZHkucmVwbGFjZUFsbCgieyRSRVFVRVNUfSIsYS5sZWFkUmVxdWVzdFR5cGUpLGEuc3ViamVjdD1hLnN1YmplY3QucmVwbGFjZUFsbCgieyRSRVFVRVNUfSIsCmEubGVhZFJlcXVlc3RUeXBlKSxhLmxlYWRSZXF1ZXN0VHlwZT0iIik7Ym9keUxvd2VyPWEuYm9keS50b0xvd2VyQ2FzZSgpO2Zvcih1PTA7LTE8Ym9keUxvd2VyLmluZGV4T2YoInJlbW92ZWVtcHR5Iik7KXtsPWJvZHlMb3dlci5pbmRleE9mKCJyZW1vdmVlbXB0eSIpO2lmKC0xPT1sKWJyZWFrO3JwbEVuZD1ib2R5TG93ZXIuaW5kZXhPZigiPGJyPiIsbCk7cnBsU3RhcnQ9Ym9keUxvd2VyLmxhc3RJbmRleE9mKCI8YnI+IixsKTtpZigtMT09cnBsRW5kfHwtMT09cnBsU3RhcnQpYnJlYWs7cnBsU3RyaW5nPWEuYm9keS5zdWJzdHJpbmcocnBsU3RhcnQscnBsRW5kKTthLmJvZHk9YS5ib2R5LnJlcGxhY2UocnBsU3RyaW5nLCIiKTtib2R5TG93ZXI9YS5ib2R5LnRvTG93ZXJDYXNlKCk7dSsrO2lmKDUwPHUpYnJlYWt9dT1hLmdldFZQRFVybEZyb21TdG9jaygpOzA9PXUudHJpbSgpLmxlbmd0aCYmKGw9JCgnaW5wdXRbbmFtZT0ic2VhcmNoZWR2ZWhpY2xlIl0nKS5maWx0ZXIoIjp2aXNpYmxlOmZpcnN0IiksCnU9bC5sZW5ndGg\/bC52YWwoKToiIik7YS5wYXltZW50VmVoaWNsZSYmMDxhLnBheW1lbnRWZWhpY2xlLmxlbmd0aCYmKHU9YS5wYXltZW50VmVoaWNsZSk7IiI9PWEuY2FyaWQmJiQoIiN0b3BjYXJpZCIpLmxlbmd0aCYmKGEuY2FyaWQ9JCgiI3RvcGNhcmlkIikudmFsKCkpOyIiPT1hLnZpbiYmJCgiI3Bob25ldmluIikubGVuZ3RoJiYoYS52aW49JCgiI3Bob25ldmluIikudmFsKCkpO2w9YS5ib2R5LmluZGV4T2YoIjxzcGFuIGlkPSdwaFNFQVJDSFZFSElDTEUnPiIpO2lmKC0xPGwpe3ZhciB4PWEuYm9keS5zdWJzdHIobCsyNykuaW5kZXhPZigiPC9zcGFuPiIpOy0xPHgmJihhLmJvZHk9YS5ib2R5LnN1YnN0cigwLGwpK3UrYS5ib2R5LnN1YnN0cihsK3grMjcrNykpfWEuYm9keT1hLmJvZHkucmVwbGFjZSgvPHNwYW4gaWQ9J3BoU0VBUkNIVkVISUNMRSc+L2csIiIpO2EuYm9keT1hLmJvZHkucmVwbGFjZSgvPFwvc3Bhbj4vZywiIik7YS5ib2R5PWEuYm9keS5yZXBsYWNlKC97XCRTRUFSQ0hFRFZFSElDTEV9L2csCnUpO2lmKCIxIj09JCgiI2hhc1ZCRENFbmFibGVkIikudmFsKCkpe2w9IiI7dT0wO3g9IiI7Q29va2llcy5nZXQoIkQyQ1VVSUQiKTtmb3IodmFyIHkgaW4gc2Vzc2lvblN0b3JhZ2UpaWYoMD09eS5pbmRleE9mKCJWRFBNVkJOUC0iKSl7dmFyIEI9c2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh5KTtCPj14JiYoeD1CLGw9eS5yZXBsYWNlKCJWRFBNVkJOUC0iLCIiKSl9aWYoIiI9PWwmJih4PXNlc3Npb25TdG9yYWdlLmdldEl0ZW0oImQyY19WRFBNViIpLG51bGwhPXgpKWZvcih5IGluIHg9SlNPTi5wYXJzZSh4KSx4KUI9eFt5XSwyPD1CJiZCPnUmJih1PUIsbD15KTsiIiE9bCYmLTE9PWEuYm9keS5pbmRleE9mKCJbVkJEQy1IT1RdIikmJi0xPT1hLmJvZHkuaW5kZXhPZigiW1ZCREMtTVlTXSIpJiYoeT13aW5kb3cubG9jYXRpb24ucHJvdG9jb2wrIi8vIit3aW5kb3cubG9jYXRpb24uaG9zdCtsLGEuYm9keSs9J1tWQkRDLUhPVF0gPGEgaHJlZj0iJyt5KyciPicreSsiPC9hPiIpfXk9JCgiI2N1cnJlbnRTdGF0dXMiKS52YWwoKTsKeT0idW5kZWZpbmVkIj09dHlwZW9mIHk\/InVzZWQiOnkudG9Mb3dlckNhc2UoKTtsPSQoIiNzZW5kRW1haWxUb0FsbERlYWxlcnMiKTtsPWwubGVuZ3RoJiYxPT1sLnZhbCgpO2w9JCgiI2hhc011bHRpcGxlRGVhbGVycyIpO2w9bC5sZW5ndGgmJjE9PWwudmFsKCk7bD0kKCIjdG9wY2FyaWQiKTtsPTA8bC5sZW5ndGg\/JCgiI3RvcGNhcmlkIikudmFsKCk6IiI7bD0idW5kZWZpbmVkIiE9dHlwZW9mICQoIiNicmFuZEVtYWlsQWRmT3ZlcnJpZGUiKS52YWwoKT8kKCIjYnJhbmRFbWFpbEFkZk92ZXJyaWRlIikudmFsKCk6IiI7dT0idW5kZWZpbmVkIiE9dHlwZW9mICQoIiNicmFuZEVtYWlsQWRmT3ZlcnJpZGUiKS52YWwoKT8kKCIjYnJhbmRFbWFpbEFkZk92ZXJyaWRlIikudmFsKCk6IiI7InVuZGVmaW5lZCIhPXR5cGVvZiAkKCIjbmV3U2VjdGlvbk92ZXJyaWRlIikudmFsKCkmJiQoIiNuZXdTZWN0aW9uT3ZlcnJpZGUiKS52YWwoKTsidW5kZWZpbmVkIiE9dHlwZW9mICQoIiNuZXdTZWN0aW9uRW1haWwiKS52YWwoKSYmCiQoIiNuZXdTZWN0aW9uRW1haWwiKS52YWwoKTsidW5kZWZpbmVkIiE9dHlwZW9mICQoIiNuZXdTZWN0aW9uQWRmRW1haWwiKS52YWwoKSYmJCgiI25ld1NlY3Rpb25BZGZFbWFpbCIpLnZhbCgpO3N3aXRjaCghMCl7Y2FzZSA1PGwubGVuZ3RoJiYibmV3Ij09eSYmIWEuaGFzU2VsZWN0ZWRNdWx0aUFkZHJlc3M6YS5zZW5kVG89bCxhLnNlbmRUb0FERkZvcm1hdD01PHUubGVuZ3RoP3U6bH1iLmxhbmd1YWdlPSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKTsiZnVuY3Rpb24iPT10eXBlb2YgY2xlYW5BbmRFbmNvZGVUZXh0PyhiLnN1YmplY3Q9Y2xlYW5BbmRFbmNvZGVUZXh0KGEuc3ViamVjdCksYi5ib2R5PWNsZWFuQW5kRW5jb2RlVGV4dChhLmJvZHkpKTooYi5zdWJqZWN0PSQuYmFzZTY0LmVuY29kZShhLnN1YmplY3QpLGIuYm9keT0kLmJhc2U2NC5lbmNvZGUoYS5ib2R5KSk7Y2xlYW5FbWFpbERlbGltaXRlcj1mdW5jdGlvbih6KXt2YXIgQz0iIjsidW5kZWZpbmVkIiE9dHlwZW9mIHomJgpudWxsIT16JiZ6Lmxlbmd0aCYmKEM9ei5zcGxpdCgiOyIpLmpvaW4oIiwiKSk7cmV0dXJuIEN9OyJ1c2VkY2Fycy5odG1sIj09JCgiI1BBR0VJRCIpLnZhbCgpJiYiTkVXIj09YS5nZXREZXAoKSYmYS5zZW5kVG89PSQoIiNTSVRFVVNFREVNQUlMIikudmFsKCkmJmEuc2VuZFRvQURGRm9ybWF0PT0kKCIjU0lURVVTRURFTUFJTEFERiIpLnZhbCgpJiYoYS5zZW5kVG89JCgiI1NJVEVORVdFTUFJTCIpLnZhbCgpLGEuc2VuZFRvQURGRm9ybWF0PSQoIiNTSVRFTkVXRU1BSUxBREYiKS52YWwoKSk7Yi5zZW5kVG89YS5zZW5kVG87Yi5zZW5kVG9BREZGb3JtYXQ9Y2xlYW5FbWFpbERlbGltaXRlcihhLnNlbmRUb0FERkZvcm1hdCk7Yi5zZWxlY3RlZFNlbmRUbz1hLnNlbGVjdGVkU2VuZFRvO2Iuc2VsZWN0ZWRTZW5kVG9BREZGb3JtYXQ9YS5zZWxlY3RlZFNlbmRUb0FERkZvcm1hdDtiLmVtYWlsTGlzdFN1ZmZpeD0iIjskKCIjc2l0ZWNvbXBpbGVpZCIpLmxlbmd0aCYmKGIuZW1haWxMaXN0U3VmZml4PQokKCIjc2l0ZWNvbXBpbGVpZCIpLnZhbCgpKTtiLmxlYWRJbnZva2VyPWEubGVhZEludm9rZXJ8fCJnZW5lcmljIjtiLmRpZ2l0YWxSZXRhaWxTSUQ9YS5kaWdpdGFsUmV0YWlsU0lEfHwiIjtiLmNvbnNlbnREZWFsZXI9YS5jb25zZW50RGVhbGVyO2IuY29uc2VudE9FTT1hLmNvbnNlbnRPRU07Yi51c2VyRW1haWw9YS51c2VyRW1haWw7Yi50cmFkZWluPWEudHJhZGVpbjtiLnBvcHVwZGl2PWEucG9wdXBkaXY7Yi51c2VyQXR0YWNobWVudFBhdGg9YS51c2VyQXR0YWNobWVudFBhdGg7Yi51c2VyRmlyc3ROYW1lPWEudXNlckZpcnN0TmFtZTtiLnVzZXJMYXN0TmFtZT1hLnVzZXJMYXN0TmFtZTtiLmxpY2Vuc2VudW09YS5saWNlbnNlbnVtO2IudXNlclBob25lPWEudXNlclBob25lO2IucGhvbmVWYWxpZGF0aW9uQXR0ZW1wdHM9YS5waG9uZVZhbGlkYXRpb25BdHRlbXB0cztiLnBob25lTWFuZGF0b3J5PWEucGhvbmVNYW5kYXRvcnk7Yi51c2VyUG9zdGFsPWEudXNlclBvc3RhbC50b1VwcGVyQ2FzZSgpfHwKYS5jb250YWN0WmlwLnRvVXBwZXJDYXNlKCk7Yi51c2VyQWRkcmVzcz1hLnVzZXJBZGRyZXNzfHxhLmNvbnRhY3RBZGRyZXNzO2IucHJvdmluY2U9YS5jb250YWN0UHJvdmluY2U7Yi5iaXJ0aGRhdGU9YS5iaXJ0aGRhdGU7Yi5zZW5kRnJvbT1hLnNlbmRGcm9tO2IubWFpbElEPWEubWFpbElEO2IuaXNDVEE9YS5pc0NUQTtiLmJ1dHRvblRleHQ9YS5idXR0b25UZXh0O2IuZnJvbVVSTD13aW5kb3cubG9jYXRpb24uaHJlZjtiLm1ha2U9YS5tYWtlfHwiIjtiLm1vZGVsPWEubW9kZWx8fCIiO2IudHJpbT1hLnRyaW18fCIiO2IudmluPWEudmlufHwiIjtiLnByaWNlPWEucHJpY2V8fCIiO2IueWVhcj1hLnllYXJ8fCIiO2IudmVoaWNsZVR5cGU9YS52ZWhpY2xlVHlwZXx8IiI7Yi5zdG9ja051bWJlcj1oO2IuY2FyaWQ9YS5jYXJpZHx8IiI7Yi5jb25kaXRpb249YS5jb25kaXRpb247Yi5pc21vYmlsZXNpdGU9YS5pc21vYmlsZXNpdGU7Yi5pc0FtcD0iTk8iO2IucmVmZXJlcj0kKCIjdG9wcmVmZXJlciIpLnZhbCgpOwpiLnNpdGVpZD0kKCIjdG9wc2l0ZWlkIikudmFsKCk7Yi5kZWFsZXJpZD1hLmRlYWxlcmlkfHwiIjtiLm9lbUNlcnRpZmljYXRpb249JCgiI29lbUNlcnRpZmljYXRpb24iKS52YWwoKXx8bnVsbDtiLnV0bV9zb3VyY2U9ZjtiLnJlbGFuY2VJRD1jO2IudXRtX2NhbXBhaWduPWs7Yi51dG1fa2V5d29yZD1tO2IudXRtX2xhbmRpbmc9bjtiLnV0bV9kZXRhaWxzPXE7Yi51dG1fc291cmNlX3JldGFyZ2V0aW5nPXQ7Yi51dG1fY2FtcGFpZ25fcmV0YXJnZXRpbmc9cjtiLmxvY19pbnRlcmVzdD12O2IubG9jX3BoeXNpY2FsPWQ7Yi5wb3B1cE9mZmVyVHlwZT1hLnBvcHVwT2ZmZXJUeXBlO2IuZnJvbUZhY2Vib29rPWEuZnJvbUZhY2Vib29rO2IuZGV0YWlsc0ZSPWEuY29uc2VudERldGFpbHNGUjtiLmRldGFpbHNFTj1hLmNvbnNlbnREZXRhaWxzRU47Yi5mcm9tQUE9YS5mcm9tQUE7Yi5vd25lcklEPWEub3duZXJJRDtiLmxlYWRUaXRsZVVJVGV4dD1hLmxlYWRUaXRsZVVJVGV4dDtiLnNtcz0KYS5zbXM7Yi5vbkFmdGVyTGVhZENyZWF0ZWQ9YS5vbkFmdGVyTGVhZENyZWF0ZWQ7InVuZGVmaW5lZCIhPT10eXBlb2YgY2xpZW50U3RvcmFnZSYmKCIiIT1hLnVzZXJGaXJzdE5hbWUmJmNsaWVudFN0b3JhZ2Uuc2V0KCJmaXJzdG5hbWUiLGEudXNlckZpcnN0TmFtZSksIiIhPWEudXNlckxhc3ROYW1lJiZjbGllbnRTdG9yYWdlLnNldCgibGFzdG5hbWUiLGEudXNlckxhc3ROYW1lKSwiIiE9YS51c2VyRW1haWwmJmNsaWVudFN0b3JhZ2Uuc2V0KCJlbWFpbCIsYS51c2VyRW1haWwpLCIiIT1hLnVzZXJQaG9uZSYmY2xpZW50U3RvcmFnZS5zZXQoInBob25lIixhLnVzZXJQaG9uZSkpO2IuY2hhdGJvdEJvb3N0SWQ9Z2V0Q29va2llRDJjKCJkMmNjaGF0Ym90aWQiKTtiLnN0eWxlaWQ9JCgiI3N0eWxlSWRJblVzZSIpLmxlbmd0aD8kKCIjc3R5bGVJZEluVXNlIikudmFsKCk6JCgiI2FjdGl2ZVN0eWxlSUQiKS5sZW5ndGg\/JCgiI2FjdGl2ZVN0eWxlSUQiKS52YWwoKToiIjsidW5kZWZpbmVkIiE9PQp0eXBlb2Ygd2luZG93LmFkcF9mb3VyZXllc19pZCYmd2luZG93LmFkcF9mb3VyZXllc19pZD8oYi5Vbml0ZVdlYnNpdGVDdXN0b21lcklkPXdpbmRvdy5hZHBfZm91cmV5ZXNfaWQsY29uc29sZS5sb2coIkQyVUQgLSBlbWFpbEhhbmRsZXIgSlMgcGFzc2VkIix3aW5kb3cuYWRwX2ZvdXJleWVzX2lkKSk6Y29uc29sZS5sb2coIkQyVUQgLSBlbWFpbEhhbmRsZXIgSlMgLSB3aW5kb3cuYWRwX2ZvdXJleWVzX2lkIGlmIHdhcyB0cmlnZ2VyZWQiLHdpbmRvdy5hZHBfZm91cmV5ZXNfaWQpO2Eub25BZnRlckxlYWRDcmVhdGVkJiYoYi5vbkFmdGVyTGVhZENyZWF0ZWQuZnJvbT0iIixhLnNlbmRUbz1hLnNlbmRUb3x8IiIsYz1hLnNlbmRUby5zcGxpdCgiOyIpLGNbMF0udHJpbSgpLmxlbmd0aD9iLm9uQWZ0ZXJMZWFkQ3JlYXRlZC5mcm9tPWNbMF0udHJpbSgpOihjPWEuc2VuZFRvQURGRm9ybWF0LnNwbGl0KCIsIiksY1swXS50cmltKCkubGVuZ3RoJiYoYi5vbkFmdGVyTGVhZENyZWF0ZWQuZnJvbT0KY1swXS50cmltKCkpKSk7Yi51c2VyQWdlbnQ9JCgiI3R4dFVzZXJBZ2VudCIpLnZhbCgpO2IuZ3JlY2FwdGNoYVJlc3BvbnNlVG9rZW49YS5ncmVjYXB0Y2hhUmVzcG9uc2VUb2tlbjtiLmNvbnRhY3RJRD1hLmNvbnRhY3RJRDtiLmNvbnRhY3ROQVM9YS5jb250YWN0TkFTO2IuY29udGFjdEJpcnRoPWEuY29udGFjdEJpcnRoO2IuZGVhbGVyTmFtZT1hLmRlYWxlck5hbWU\/YS5kZWFsZXJOYW1lOnc7Yi5hbGxvd19zaGFyZV9wZXJzb25hbF9kYXRhPWEuYWxsb3dfc2hhcmVfcGVyc29uYWxfZGF0YTtiLnByZWZlcnJlZF9jb250YWN0PWEucHJlZmVycmVkX2NvbnRhY3Q7Yi51dG1kZXRhaWxzVG9SZXBsYWNlPXA7IiIhPWEuZ2VvbG9jX3N0YXR1cyYmKGIuZ2VvbG9jX3N0YXR1cz1hLmdlb2xvY19zdGF0dXMsYi5nZW9sb2NfbGF0PWEuZ2VvbG9jX2xhdCxiLmdlb2xvY19sb25nPWEuZ2VvbG9jX2xvbmcsYi5nZW9sb2NfYWNjdXJhY3k9YS5nZW9sb2NfYWNjdXJhY3ksImZ1bmN0aW9uIj09CnR5cGVvZiBjbGVhbkFuZEVuY29kZVRleHQ\/KGIuZ2VvbG9jX3RyYWNrX3N0cj1jbGVhbkFuZEVuY29kZVRleHQoYS5nZW9sb2NfdHJhY2tfc3RyKSxiLmdlb2xvY19lbWFpbF9zdHI9Y2xlYW5BbmRFbmNvZGVUZXh0KGEuZ2VvbG9jX2VtYWlsX3N0cikpOihiLmdlb2xvY190cmFja19zdHI9JC5iYXNlNjQuZW5jb2RlKGEuZ2VvbG9jX3RyYWNrX3N0ciksYi5nZW9sb2NfZW1haWxfc3RyPSQuYmFzZTY0LmVuY29kZShhLmdlb2xvY19lbWFpbF9zdHIpKSk7IiIhPWEuY2FyMl9tYWtlJiYoYi5jYXIyX21ha2U9YS5jYXIyX21ha2UsYi5jYXIyX21vZGVsPWEuY2FyMl9tb2RlbCxiLmNhcjJfdHJpbT1hLmNhcjJfdHJpbSxiLmNhcjJfeWVhcj1hLmNhcjJfeWVhcixiLmNhcjJfY29sb3I9YS5jYXIyX2NvbG9yLGIuY2FyMl9vZG9tZXRlcj1hLmNhcjJfb2RvbWV0ZXIsYi5jYXIyX3Zpbj1hLmNhcjJfdmluLGIuY2FyMl90cmFuc21pc3Nvbj1hLmNhcjJfdHJhbnNtaXNzb24sYi5jYXIyX2RyaXZldHJhaW49CmEuY2FyMl9kcml2ZXRyYWluLGIuY2FyMl9mdWVsdHlwZT1hLmNhcjJfZnVlbHR5cGUpO2Iuc2VydmljZURhdGUxPWEuc2VydmljZURhdGUxfHwiIjtiLnNlcnZpY2VEYXRlMj1hLnNlcnZpY2VEYXRlMnx8IiI7Yi53YWl0aW5nT25TaXRlPWEud2FpdGluZ09uU2l0ZXx8IiI7Yi5jb21tZW50cz1hLmNvbW1lbnRzO2Euc2tpcEdldERlcD9iLmRlcGFydG1lbnQ9YS5kZXBhcnRtZW50OihiLmRlcGFydG1lbnQ9YS5nZXREZXAoKSxhLmRlcGFydG1lbnQ9YS5nZXREZXAoKSk7aWYoIlVTRUQiPT1iLmRlcGFydG1lbnQmJjA9PWEuZGVwYXJ0bWVudEJ5U3RvY2spe3ZhciBBPSQoJ2lucHV0W25hbWU9InNlYXJjaGVkdmVoaWNsZSJdJykuZmlsdGVyKCI6dmlzaWJsZTpmaXJzdCIpLnZhbCgpO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgQSYmKEE9QS5zcGxpdCgiKFN0b2NrIiksQVsxXSkpe3ZhciBFPSJVU0VEIjtBPUFbMV0ucmVwbGFjZSgiKSIsIiIpLnJlcGxhY2UoIjoiLCIiKS5yZXBsYWNlKCIjIiwKIiIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpOyQuYWpheCh7dHlwZToiR0VUIixhc3luYzohMSxkYXRhVHlwZToianNvbiIsdXJsOiIvanMvanNvbi91c2VkQnlQcmljZUFzYy5qc29uIixzdWNjZXNzOmZ1bmN0aW9uKHopeyQuZWFjaCh6LGZ1bmN0aW9uKEMsRCl7aWYoRC5zbi50b0xvd2VyQ2FzZSgpPT1BKXJldHVybiBFPSIxIj09RC5pc25ld3x8IjEiPT1ELmlzZGVtbz8iTkVXIjoiVVNFRCIsITF9KTthLmRlcGFydG1lbnRCeVN0b2NrPUV9fSl9fSIiIT09YS5kZXBhcnRtZW50QnlTdG9jayYmITEhPT1hLmRlcGFydG1lbnRCeVN0b2NrJiYoYi5kZXBhcnRtZW50PWEuZGVwYXJ0bWVudEJ5U3RvY2spOyFiLmRlcGFydG1lbnR8fCJuZXciPT1iLmRlcGFydG1lbnQudG9Mb3dlckNhc2UoKSYmInVzZWQiPT1iLmRlcGFydG1lbnQudG9Mb3dlckNhc2UoKT9iLmNvbmRpdGlvbj1iLmRlcGFydG1lbnQmJiJuZXciPT1iLmRlcGFydG1lbnQudG9Mb3dlckNhc2UoKT8iTmV3IjoiVXNlZCI6Yi5jb25kaXRpb249CiQoIiNjdXJyZW50U3RhdHVzIikubGVuZ3RoPyQoIiNjdXJyZW50U3RhdHVzIikudmFsKCk6InVua25vd24iO2IuZGVwYXJ0bWVudC50b0xvd2VyQ2FzZSgpIT1iLmNvbmRpdGlvbi50b0xvd2VyQ2FzZSgpJiYoYi5jb25kaXRpb249Yi5kZXBhcnRtZW50LnRvTG93ZXJDYXNlKCkpO251bGwhPWEuY3JlZGl0RGF0YSYmKGIuY3JlZGl0RGF0YT1hLmNyZWRpdERhdGEpO251bGwhPWEuZGVhbGVyQXBwb2ludG1lbnREYXRhJiYoYi5kZWFsZXJBcHBvaW50bWVudERhdGE9YS5kZWFsZXJBcHBvaW50bWVudERhdGEpOzA8JCgiI3B1cmNoYXNlX2ludGVudF9hbnN3ZXIiKS5sZW5ndGgmJihiLnB1cmNoYXNlX2ludGVudD1hLnB1cmNoYXNlX2ludGVudCxiLnB1cmNoYXNlX2ludGVudF9hbnN3ZXI9JCgiI3B1cmNoYXNlX2ludGVudF9hbnN3ZXIiKS52YWwoKSxiLnB1cmNoYXNlX2ludGVudF9ub19hbnN3ZXI9JCgiI3B1cmNoYXNlX2ludGVudF9ub19hbnN3ZXIiKS52YWwoKSk7Yi5wdXJjaGFzZV9pbnRlbnQ9CmEuYXNrUHVyY2hhc2VJbnRlbnQ\/Yi5wdXJjaGFzZV9pbnRlbnQ\/Yi5wdXJjaGFzZV9pbnRlbnQ6LTE6ITE7JCgiI2N1cnJlbnRJdGVtVHlwZSIpLmxlbmd0aD9iLml0ZW1UeXBlPSQoIiNjdXJyZW50SXRlbVR5cGUiKS52YWwoKTpiLml0ZW1UeXBlPSIiO2EuYm9keSs9Ilx4M2MhLS0gSlMgVW5pcXVlIGlkOiIrTWF0aC5yb3VuZCg1RTMqTWF0aC5yYW5kb20oKSkrIi0tXHgzZSI7cmV0dXJuIGJ9LGdldERlcDpmdW5jdGlvbigpe3ZhciBiPShuZXcgRGF0ZSkuZ2V0RnVsbFllYXIoKSxkPS9cYihuZXd8bmV1ZnxuZXVmc3xjb25maWd1cmF0aW9uLWV0LXByaXh8YnVpbGQtYW5kLXByaWNlfGRlbW9zfGRlbW9uc3RyYXRldXJzfGNsZWFyYW5jZSlcYi8udGVzdCh3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpLGM9L1xiKHVzZWR8b2NjYXNpb24pXGIvLnRlc3Qod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKTtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiB3aW5kb3cuZ1VzZWRTcnBBcHB6JiYidW5kZWZpbmVkIiE9PQp0eXBlb2Ygd2luZG93LmdVc2VkU3JwQXBwei5maWx0ZXJJbnRlcmZhY2UmJiJmdW5jdGlvbiI9PT10eXBlb2Ygd2luZG93LmdVc2VkU3JwQXBwei5maWx0ZXJJbnRlcmZhY2UuZ2V0Q3VycmVudEZpbHRlclN0YXRlKXt2YXIgZj13aW5kb3cuZ1VzZWRTcnBBcHB6LmZpbHRlckludGVyZmFjZS5nZXRDdXJyZW50RmlsdGVyU3RhdGUoImNhdGVnb3J5Iik7aWYoITEhPT1mJiZmLmxlbmd0aClpZigxPT09Zi5sZW5ndGgmJjM9PT1mWzBdLnZhbHVlKWQ9ITAsYz0hMTtlbHNle3ZhciBrLG09MCxuPTA7Zm9yKGs9MDtrIT09Zi5sZW5ndGg7aysrKWZba10ubnVtPm0mJihtPWZba10ubnVtLG49ZltrXS52YWx1ZSk7MT09PW58fDI9PT1uPyhkPSExLGM9ITApOjM9PT1uJiYoZD0hMCxjPSExKX19Zj0wO2s9JCgnaW5wdXRbbmFtZT0ic2VhcmNoZWR2ZWhpY2xlIl0nKS5maWx0ZXIoIjpyZWFsbHlWaXNpYmxlOmZpcnN0Iik7MDxrLmxlbmd0aCYmKGs9ay52YWwoKS5tYXRjaCgvMTlbMC05XXsyfXwyMFswLTldezJ9L2cpLApudWxsIT1rJiYoZj1wYXJzZUludChrWzBdKSkpO2Z8fChmPWEueWVhcik7c3dpdGNoKGEubWFpbElEKXtjYXNlICJUaXJlc1JlcXVlc3QiOmNhc2UgIlBhcnRzUmVxdWVzdCI6cmV0dXJuIlBBUlRTIjtjYXNlICJTZXJ2aWNlUmVxdWVzdCI6Y2FzZSAiUmVjYWxscyI6Y2FzZSAiQm9keVNob3AiOmNhc2UgIm1lbnVTZXJ2aWNlIjpjYXNlICJoZWFkZXJTZXJ2aWNlIjpjYXNlICJFc3RoZXRpY1JlcXVlc3QiOnJldHVybiJTRVJWSUNFIjtjYXNlICJDcmVkaXRSZXF1ZXN0IjpjYXNlICJDcmVkaXRSZXF1ZXN0TW9iaWxlIjpjYXNlICJEZWFsZXJUcmFjayI6Y2FzZSAiQ3JlZGl0TXVsdGlzdGVwUmVxdWVzdCI6Y2FzZSAiQ3JlZGl0TXVsdGlzdGVwUmVxdWVzdDJuZENoYW5jZSI6Y2FzZSAiQ3JlZGl0TXVsdGlzdGVwUmVxdWVzdEluc3RhbnQiOmNhc2UgIkNyZWRpdFNjb3JlIjpjYXNlICJDcmVkaXRBcHBDYXJkIjpyZXR1cm4iRklOQU5DRSI7Y2FzZSAiSm9iT2ZmZXIiOnJldHVybiJIUiI7CmNhc2UgIm1lbnVDb250YWN0VXMiOmlmKCIiIT09YS5kZXBhcnRtZW50KXJldHVybiBhLmRlcGFydG1lbnQudG9VcHBlckNhc2UoKTtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBtYWlsUXVpY2tFbWFpbC5kZXBhcnRtZW50JiYiIiE9PW1haWxRdWlja0VtYWlsLmRlcGFydG1lbnQpcmV0dXJuIG1haWxRdWlja0VtYWlsLmRlcGFydG1lbnQudG9VcHBlckNhc2UoKX1pZigwPGYpe2lmKGMmJmY+PWIrMSlyZXR1cm4iTkVXIjtpZighZCYmIWMpe2lmKGY+PWItMSlyZXR1cm4iTkVXIjtpZihmPGItMSlyZXR1cm4iVVNFRCJ9fXJldHVybiJjYXJkZXRhaWwuaHRtbCI9PSQoIiNQQUdFSUQiKS52YWwoKT8kKCIjZGVmYXVsdERlcGFydG1lbnQiKS52YWwoKTpjPyJVU0VEIjpkPyJORVciOiIiIT09YS5kZXBhcnRtZW50P2EuZGVwYXJ0bWVudDoidW5kZWZpbmVkIiE9dHlwZW9mICQoIiNwb3B1cERlcGFydG1lbnQiKS5hdHRyKCJpZCIpJiYkKCIjcG9wdXBEZXBhcnRtZW50IikudmFsKCkubGVuZ3RoPwokKCIjcG9wdXBEZXBhcnRtZW50IikudmFsKCk6InVuZGVmaW5lZCIhPXR5cGVvZiAkKCIjZGVmYXVsdERlcGFydG1lbnQiKS5hdHRyKCJpZCIpJiYkKCIjZGVmYXVsdERlcGFydG1lbnQiKS52YWwoKS5sZW5ndGg\/JCgiI2RlZmF1bHREZXBhcnRtZW50IikudmFsKCk6IlVTRUQifSxyZWFkeVRvU2VuZDpmdW5jdGlvbigpe3ZhciBiPWEuY3JlYXRlQ2hlY2tzdW0oKTtpZihhLmxhc3RDaGVja3N1bT09YikiZnVuY3Rpb24iPT10eXBlb2YgYS5vbkR1cGxpY2F0ZVNlbmQ\/YS5vbkR1cGxpY2F0ZVNlbmQuY2FsbCgpOiJ1bmRlZmluZWQiIT09dHlwZW9mIGRlYnVnJiZkZWJ1ZygiQ1JDIE1hdGNoIixhLmxhc3RDaGVja3N1bSxiKTtlbHNle2EubGFzdENoZWNrc3VtPWI7JCgnaW5wdXRbZGF0YS1mb3J2YXI9Ik9WRVJXUklUVEVSREVBTEVSIl0nKS5sZW5ndGgmJiIiIT0kKCdpbnB1dFtkYXRhLWZvcnZhcj0iT1ZFUldSSVRURVJERUFMRVIiXScpLnZhbCgpJiYkKCdpbnB1dFtkYXRhLWZvcnZhcj0iREVBTEVSIl0nKS5sZW5ndGgmJgokKCdpbnB1dFtkYXRhLWZvcnZhcj0iT1ZFUldSSVRURVJERUFMRVIiXScpLnZhbCgpIT0kKCdpbnB1dFtkYXRhLWZvcnZhcj0iREVBTEVSIl0nKS52YWwoKSYmKGI9JCgiYm9keSIpLmhhc0NsYXNzKCJGUkVOQ0giKT8iQ29uY2Vzc2lvbiBv77+9IGVzdCBzaXR177+9IGxlIHbvv71oaWN1bGU6ICI6IkRlYWxlciB3aGVyZSB0aGUgdmVoaWNsZSBpcyBsb2NhdGVkOiAiLGIrPSQoJ2lucHV0W2RhdGEtZm9ydmFyPSJPVkVSV1JJVFRFUkRFQUxFUiJdJykudmFsKCksYS5ib2R5PWEuYm9keS5yZXBsYWNlKCJ7JERFQUxFUl9TRU5EVE99IixiKSk7MDwkKCIjaXNtb2JpbGUiKS5sZW5ndGgmJihhLmlzbW9iaWxlc2l0ZT0iWUVTIik7aWYoMD09YS5zdWJqZWN0Lmxlbmd0aHx8MD09YS5ib2R5Lmxlbmd0aClyZXR1cm4hMTthLmluamVjdEN0YUNvbXBsZXRlZERhdGEoKTtqc29uT2JqZWN0PWEuZ2V0SnNvbk9iamVjdCgpO2EuaWdub3JlQ2FwdGNoYXx8YS5yZWNhcHRjaGEucmVzZXRUb2tlbigpOwpiPW51bGw7Yj1KU09OLnN0cmluZ2lmeShqc29uT2JqZWN0KTt2YXIgZD1hLnBvcHVwT2ZmZXJUeXBlO2I9e2pzb246Yn07aWYoYS5wYXJ0aWFsKWIucGFydGlhbD0hMDtlbHNleyJ1bmRlZmluZWQiIT10eXBlb2YgZ3RhZyYmd2luZG93LmQyY19hd2NJZCYmd2luZG93LmQyY19hd2NMYWJlbCYmKCJsaXZlIj09ZGVwbG95bWVudFR5cGUudG9Mb3dlckNhc2UoKT9ndGFnKCJldmVudCIsImNvbnZlcnNpb24iLHtzZW5kX3RvOmQyY19hd2NJZCsiLyIrZDJjX2F3Y0xhYmVsfSk6Y29uc29sZS5sb2coImd0YWcoJ2V2ZW50JywnY29udmVyc2lvbicsIHsgJ3NlbmRfdG8nOiAiK2QyY19hd2NJZCsiLyIrZDJjX2F3Y0xhYmVsKyIgfSk7IikpO3ZhciBjPXttYWlsSUQ6YS5tYWlsSUQsbWFrZTphLm1ha2UsbW9kZWw6YS5tb2RlbCx5ZWFyOmEueWVhcix2aW46YS52aW4sY29uZGl0aW9uOmEuY29uZGl0aW9uLGRlcGFydG1lbnQ6YS5kZXBhcnRtZW50LHRyYWRlaW46YS50cmFkZWluLHBvcHVwT2ZmZXJUeXBlOmEucG9wdXBPZmZlclR5cGUsCmJvZHlUeXBlOmEudmVoaWNsZVR5cGUsc2FsZXNEZXB0OmEuc2FsZXNEZXB0LHBvcHVwRGl2OmEucG9wdXBkaXYsaXNDVEE6YS5pc0NUQSxidXR0b25UZXh0OmEuYnV0dG9uVGV4dH07alF1ZXJ5KCJib2R5IikudHJpZ2dlcigiZW1haWxIYW5kbGVyLnN1Ym1pdCIsYyl9JCgiLnVpLWxvYWRlci1iYWNrZ3JvdW5kIikuc2hvdygpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXskKCIudWktbG9hZGVyLWJhY2tncm91bmQiKS5oaWRlKCl9LDVFMyk7JCgnaW5wdXRbbmFtZT0ibGVhZF9kZXBhcnRtZW50Il0nKS52YWwoanNvbk9iamVjdC5kZXBhcnRtZW50KTskKCdpbnB1dFtuYW1lPSJsZWFkVHlwZSJdJykudmFsKGEuc3ViamVjdC5yZXBsYWNlKC9bXG5ccl0vZywiICIpKTsiIiE9YS5sZWFkVGl0bGVUZXh0JiYoJCgnaW5wdXRbbmFtZT0ibGVhZFR5cGUiXScpLnZhbChhLmxlYWRUaXRsZVRleHQucmVwbGFjZSgvW1xuXHJdL2csIiAiKSksYS5sZWFkVGl0bGVUZXh0PSIiKTskKCdpbnB1dFtuYW1lPSJwYWdlSUQiXScpLnZhbCgkKCIjUEFHRUlEIikudmFsKCkpOwokKCdpbnB1dFtuYW1lPSJjdXJyZW50VVJMIl0nKS52YWwod2luZG93LmxvY2F0aW9uLmhyZWYpOyQoJ2lucHV0W25hbWU9ImlzRnVsbFdpZHRoIl0nKS52YWwoJCgiI2lzRnVsbFdpZHRoUGFnZU5ld1ZEUCIpLnZhbCgpKTskKCdpbnB1dFtuYW1lPSJkZWFsZXJOYW1lIl0nKS52YWwoJCgiI25ld1ZEUERlYWxlck5hbWUiKS52YWwoKSk7JCgnaW5wdXRbbmFtZT0iYnV0dG9uUG9zaXRpb24iXScpLnZhbCgkKCIjbmV3VkRQQnV0dG9uUG9zaXRpb24iKS52YWwoKSk7JCgnaW5wdXRbbmFtZT0iaXNNb2JpbGVOZXdWRFAiXScpLnZhbCgkKCIjaXNtb2JpbGUiKS52YWwoKSk7JCgnaW5wdXRbbmFtZT0iaXNDb25maXJtUG9wdXAiXScpLnZhbCgwKTsiY3JlZGl0U2NvcmVDb25maXJtUG9wdXBDb250YWluZXIiPT1hLnBvcHVwZGl2JiYkKCdpbnB1dFtuYW1lPSJpc0NvbmZpcm1Qb3B1cCJdJykudmFsKDEpOyQoJ2lucHV0W25hbWU9ImNvbmZpcm1fZW1haWwiXScpLnZhbChhLnVzZXJFbWFpbCk7CiQoJ2lucHV0W25hbWU9ImNvbmZpcm1fZmlyc3RfbmFtZSJdJykudmFsKGEudXNlckZpcnN0TmFtZSk7JCgnaW5wdXRbbmFtZT0iY29uZmlybV9sYXN0X25hbWUiXScpLnZhbChhLnVzZXJMYXN0TmFtZSk7JCgnaW5wdXRbbmFtZT0iY29uZmlybV9waG9uZV9udW1iZXIiXScpLnZhbChhLnVzZXJQaG9uZSk7Zm9ybUZpbGwuc2F2ZSh7ZW1haWw6YS51c2VyRW1haWwsZmlyc3ROYW1lOmEudXNlckZpcnN0TmFtZSxsYXN0TmFtZTphLnVzZXJMYXN0TmFtZSxwaG9uZTphLnVzZXJQaG9uZSxwb3N0YWw6YS51c2VyUG9zdGFsfSk7JC5hamF4KHt0eXBlOiJQT1NUIix1cmw6Ii9tYWlsL3NlbmRNYWlsRXgucGhwIixkYXRhOmIsYmVmb3JlU2VuZDpmdW5jdGlvbihmKXtmJiZmLm92ZXJyaWRlTWltZVR5cGUmJmYub3ZlcnJpZGVNaW1lVHlwZSgiYXBwbGljYXRpb24vanNvbjtjaGFyc2V0PVVURi04Iik7dHJ5e2xldCBrPSQoIm1ldGFbbmFtZT0nY3NyZi1kb21haW4tY2hlY2snXSIpO2subGVuZ3RoJiYKZi5zZXRSZXF1ZXN0SGVhZGVyKCJjc3JmLWRvbWFpbi1jaGVjayIsay5hdHRyKCJjb250ZW50IikpfWNhdGNoKGspe2NvbnNvbGUuZXJyb3IoZil9fSxzdWNjZXNzOmZ1bmN0aW9uKGYpe2EubG9nRm9ybVJlcXVlc3QoIkZvcm1TdWJtaXR0ZWQiLGEubWFpbElELGQpO2EucGFydGlhbD0hMTthLmxhc3RDaGVja3N1bT0hMTt2YXIgaz0iIjtrPSJzdHJpbmciPT10eXBlb2YgZj9KU09OLnBhcnNlKGYpOmY7YS5fX2xhc3RSZXR1cm49aztpZigib2JqZWN0Ij09dHlwZW9mIGt8fCJ1bmRlZmluZWQiIT10eXBlb2Ygay5sZWFkaWQpYS5fX2xlYWRpZD1rLmxlYWRpZDsiZnVuY3Rpb24iIT10eXBlb2YgYS5jYWxsYmFjayYmKGEuY2FsbGJhY2s9ZnVuY3Rpb24oKXt9KTtqUXVlcnkoImJvZHkiKS50cmlnZ2VyKCJlbWFpbEhhbmRsZXIuZW1haWxTZW50Iix7bWFpbElEOmEubWFpbElELG1ha2U6YS5tYWtlLG1vZGVsOmEubW9kZWwseWVhcjphLnllYXIsdmluOmEudmluLGNvbmRpdGlvbjphLmNvbmRpdGlvbiwKZGVwYXJ0bWVudDphLmRlcGFydG1lbnQsdHJhZGVpbjphLnRyYWRlaW4sc3VjY2VzczoiU1VDQ0VTUyI9PT1rLnN0YXR1cyxkZXRhaWw6e2NvbmZpcm1fZmlyc3RfbmFtZTphLnVzZXJGaXJzdE5hbWUsY29uZmlybV9sYXN0X25hbWU6YS51c2VyTGFzdE5hbWUsY29uZmlybV9lbWFpbDphLnVzZXJFbWFpbCxjb25maXJtX3Bob25lX251bWJlcjphLnVzZXJQaG9uZSx5ZWFyOmEueWVhcixtYWtlOmEubWFrZSxtb2RlbDphLm1vZGVsLGlkOmsubGVhZGlkLHZpbjphLnZpbixjb25kaXRpb246YS5jb25kaXRpb24sdmVyc2lvbjphLnZlcnNpb258fCIiLE5JVjphLnZpbix0cmltOmEudHJpbSxsZWFkVHlwZTphLmxlYWRUeXBlfHwiIixtYWlsSWQ6YS5tYWlsSUR9fSk7IlNVQ0NFU1MiPT1rLnN0YXR1cz8oYS5jYWxsYmFjayghMCksYS5tYWluUHJvbW8mJihmPW5ldyBDdXN0b21FdmVudCgidHJhY2tzdGVwLmNvbXBsZXRlIix7ZGV0YWlsOntzdGVwSWQ6Ik1haW5Qcm9tb0J0biJ9fSksZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChmKSkpOgphLmNhbGxiYWNrKCExKTthLmNhbGxiYWNrPW51bGx9LGZhaWx1cmU6ZnVuY3Rpb24oZil7YS5sb2dGb3JtUmVxdWVzdCgiRm9ybVN1Ym1pdHRlZEVtYWlsTm90U2VudCIsYS5tYWlsSUQsZCk7YWxlcnQoc2F2ZUhhbmRsZXIuZmFpbE1lc3NhZ2UrIlxuIitmKX0sc3RhdHVzQ29kZTp7NDA0OmZ1bmN0aW9uKCl7YWxlcnQoInBhZ2Ugbm90IGZvdW5kIil9fX0pO2EucG9wdXBPZmZlclR5cGU9IiJ9fSxpbmplY3RDdGFDb21wbGV0ZWREYXRhOmZ1bmN0aW9uKCl7bGV0IGI9IiIsZD0iIjt2YXIgYz0iIixmPWdldENvb2tpZUQyYygiYmFuZHBfY29uZmlnIiksaz0idW5kZWZpbmVkIiE9PXR5cGVvZiBmJiZudWxsIT09Zj9KU09OLnBhcnNlKGRlY29kZVVSSUNvbXBvbmVudChmKSk6SlNPTi5wYXJzZSgie30iKTtmPShtLG4pPT57bj1ufHwhMTtsZXQgdD1tLm9wdGlvbnMucmVkdWNlKCh3LHgpPT53K2Ake3h9PGJyPmAsIiIpLHI9IkVOR0xJU0giPT0kKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCk\/CiJWZWhpY2xlIGRldGFpbHMiOiJWw6loaWN1bGUgY29uZmlndXLDqSIsdj0iRU5HTElTSCI9PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKT8iRmluYW5jaW5nIGRldGFpbHMiOiJEw6l0YWlscyBkdSBmaW5hbmNlbWVudCIscSxwLGg7bj1uPyIiOmAKCQkJCQkJPHU+JHt2fTo8L3U+PGJyPgoJCQkJCQkke251bGw9PW0\/dm9pZCAwOm51bGw9PShxPW0ucGF5bWVudCk\/dm9pZCAwOnEudG90YWx9PGJyPgoJCQkJCQkke251bGw9PW0\/dm9pZCAwOm51bGw9PShwPW0ucGF5bWVudCk\/dm9pZCAwOnAucmF0ZX08YnI+CgkJCQkJCSR7bnVsbD09bT92b2lkIDA6bnVsbD09KGg9bS5wYXltZW50KT92b2lkIDA6aC5hbW91bnR9PGJyPjxicj4KCQkJCQlgO2xldCBsLHU7cmV0dXJuYAoJCQkJCTx1PiR7cn06PC91Pjxicj4KCQkJCQkke251bGw9PW0\/dm9pZCAwOm0ubW9kZWx9PGJyPgoJCQkJCUV4dDogJHsobnVsbD09bT92b2lkIDA6bnVsbD09KGw9bS5jb2xvcnMpP3ZvaWQgMDpsLmV4dCl8fCIifSwgSW50OiAkeyhudWxsPT1tP3ZvaWQgMDpudWxsPT0odT1tLmNvbG9ycyk\/dm9pZCAwOnUuaW50KXx8IiJ9PGJyPgoJCQkJCSR7KG51bGw9PW0\/dm9pZCAwOm0uZHJpdmVUcmFpbil8fCIifTxicj4KCQkJCQkke3R9PGJyPgoJCQkJCSR7bn0KCQkJCWB9O2suYmFuZHAmJihiPWYoay5iYW5kcCkucmVwbGFjZSgvKFx0fFxuKSovZywiIikpO2lmKENvb2tpZXMuZ2V0KCJjdGFfZGF0YV92YWxpZCIpKXtjPUpTT04ucGFyc2UoX2xvY2FsU3RvcmFnZUdldCgicmV0YWlsX3RyYWNrX2RhdGEiKXx8Int9Iik7az0hIWMucGF5bWVudDtjLmJhbmRwJiYoYy5iYW5kcC5vcHRpb25zPWMuYmFuZHAub3B0aW9uc3x8W10sYj1mKGMuYmFuZHAsaykpO2lmKGspe2xldCBtLG4sdDtkPWAKCQkJCQkJPHU+JHsiRU5HTElTSCI9PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKT8iVmVoaWNsZSBkZXRhaWxzIjoiRMOpdGFpbHMgZHUgZmluYW5jZW1lbnQifTo8L3U+PGJyPgoJCQkJCQkke251bGw9PWM\/dm9pZCAwOm51bGw9PShtPWMucGF5bWVudCk\/dm9pZCAwOm0ubGlzdFByaWNlfTxicj4KCQkJCQkJJHtudWxsPT1jP3ZvaWQgMDpudWxsPT0obj1jLnBheW1lbnQpP3ZvaWQgMDpuLnJhdGV9PGJyPgoJCQkJCQkke251bGw9PWM\/dm9pZCAwOm51bGw9PSh0PWMucGF5bWVudCk\/dm9pZCAwOnQucGF5bWVudH08YnI+CgkJCQkJYH1jPSJcblx0XHRcdFx0XHQ8YnI+XG5cdFx0XHRcdFx0PGJyPlxuXHRcdFx0XHRcdDx1PjxzdHJvbmc+VHJhbnNhY3Rpb24gQnVpbGRlcjo8L3N0cm9uZz48L3U+XG5cblx0XHRcdFx0In1pZihifHxkKWEuYm9keSs9KGMrYAoJCQkJCTxicj4KCQkJCQk8YnI+CgkJCQkJJHtifQoJCQkJCSR7ZH0KCQkJCWApLnJlcGxhY2UoL1xyP1xufFxyL2csIiIpfSxkZWNvZGVVUkxSZWN1cnNpdmVseTpmdW5jdGlvbihiKXtyZXR1cm4tMSE9Yi5pbmRleE9mKCIlIik\/YS5kZWNvZGVVUkxSZWN1cnNpdmVseShkZWNvZGVVUklDb21wb25lbnQodW5lc2NhcGUoYikpKTpifSx2YWxpZGF0ZUVtYWlsOmZ1bmN0aW9uKGIpe3JldHVybiAkLmFqYXgoe3R5cGU6IkdFVCIsdXJsOiIvYWpheC92YWxpZGF0ZUVtYWlsQWNjb3VudD93c3dpZHRoPTAmZW1haWw9IitiLGFzeW5jOiExfSl9LGdldFVVSUQ6ZnVuY3Rpb24oKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdy5hY3RpdmVQcm9maWxlSUQmJm51bGwhPXdpbmRvdy5hY3RpdmVQcm9maWxlSUQ\/d2luZG93LmFjdGl2ZVByb2ZpbGVJRDoidW5kZWZpbmVkIiE9dHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nJiZudWxsIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ\/YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkOgoidW5kZWZpbmVkIiE9dHlwZW9mIENvb2tpZXMmJiJ1bmRlZmluZWQiIT1Db29raWVzLmdldCgidXVpZCIpJiZudWxsIT1Db29raWVzLmdldCgidXVpZCIpP0Nvb2tpZXMuZ2V0KCJ1dWlkIik6IiJ9LHNldENvbnRhY3RJbmZvOmZ1bmN0aW9uKCl7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgJC5mbi5nb29nbGVQbGFjZXMpe3ZhciBiPSQoJ2lucHV0W2RhdGEtZ29vZ2xlLXBsYWNlcz0idHJ1ZSJdJyk7MCE9Yi5sZW5ndGgmJihiPWIuZ29vZ2xlUGxhY2VzKCJnZXRBZGRyZXNzIiksIiIhPWIuY2l0eSYmIiI9PWEuY29udGFjdENpdHkmJihhLmNvbnRhY3RDaXR5PWIuY2l0eS5sb25nX25hbWUpLCIiIT1iLnN0cmVldCYmIiIhPWIuc3RyZWV0X251bWJlciYmIiI9PWEuY29udGFjdEFkZHJlc3MmJihhLmNvbnRhY3RBZGRyZXNzPWIuc3RyZWV0X251bWJlci5sb25nX25hbWUrIiAiK2Iuc3RyZWV0LmxvbmdfbmFtZSksIiIhPWIucHJvdmluY2UmJiIiPT1hLmNvbnRhY3RQcm92aW5jZSYmKGEuY29udGFjdFByb3ZpbmNlPQpiLnByb3ZpbmNlLnNob3J0X25hbWUpLCIiIT1iLnBvc3RhbCYmIiI9PWEuY29udGFjdFppcCYmKGEuY29udGFjdFppcD1iLnBvc3RhbC5sb25nX25hbWUpKX19LGdldExvbmdEYXRlVG9TaG9ydEZvcm1hdDpmdW5jdGlvbihiKXtpZigiIj09YilyZXR1cm4gYjtiPWIudG9Mb3dlckNhc2UoKTt2YXIgZD17amFudmllcjoiamFudWFyeSIsImbDqXZyaWVyIjoiZmVicnVhcnkiLG1hcnM6Im1hcmNoIixhdnJpbDoiYXByaWwiLG1haToibWF5IixqdWluOiJqdW5lIixqdWlsbGV0OiJqdWx5IiwiYW\/Du3QiOiJhdWd1c3QiLHNlcHRlbWJyZToic2VwdGVtYmVyIixvY3RvYnJlOiJvY3RvYmVyIixub3ZlbWJyZToibm92ZW1iZXIiLCJkw6ljZW1icmUiOiJkZWNlbWJlciJ9O2I9Yi5yZXBsYWNlKC9cYlxTK1xiL2lnLGZ1bmN0aW9uKGMpe3ZhciBmPWMudG9Mb3dlckNhc2UoKTtyZXR1cm4gZFtmXT9kW2ZdOmN9KTtyZXR1cm4obmV3IERhdGUoYikpLmZvcm1hdCgieXl5eS1NTS1kZCIpfSxnZXRFbWFpbENvbnNlbnQ6ZnVuY3Rpb24oYil7dmFyIGQ9Cm5ldyBEYXRlO2Euc2V0Q29udGFjdEluZm8oKTt2YXIgYz1hLmNvbnRhY3RCaXJ0aD9hLmNvbnRhY3RCaXJ0aDphLmdldExvbmdEYXRlVG9TaG9ydEZvcm1hdChhLmJpcnRoZGF0ZSk7JCgiLnVpLWxvYWRlci1iYWNrZ3JvdW5kIikuc2hvdygpO2dldERhdGE9e2VtYWlsOmEudXNlckVtYWlsLHBob25lOmEudXNlclBob25lLG5hbWU6YS51c2VyRmlyc3ROYW1lKyIgIithLnVzZXJMYXN0TmFtZSxhZGRyOmEuY29udGFjdEFkZHJlc3M\/YS5jb250YWN0QWRkcmVzczphLnVzZXJBZGRyZXNzLGNpdHk6YS5jb250YWN0Q2l0eSxwcm92aW5jZTphLmNvbnRhY3RQcm92aW5jZSx6aXA6YS5jb250YWN0WmlwP2EuY29udGFjdFppcDphLnVzZXJQb3N0YWwsbmFzOmEuY29udGFjdE5BUyxiaXJ0aDpjLHNpdGVJRDokKCIjc2l0ZUlEIikudmFsKCksVVVJRDphLmdldFVVSUQoKSx0czpkLmdldFRpbWUoKSxsYW5nOiQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKSx1cGRhdGVJbXBsaWNpdDohMH07CiQuYWpheCh7dHlwZToiR0VUIix1cmw6Ii9hamF4L2dldEVtYWlsQ29uc2VudEZyb21DUk0\/d3N3aWR0aD0wIixkYXRhOmdldERhdGEsZGF0YVR5cGU6Impzb24ifSkuYWx3YXlzKGZ1bmN0aW9uKGYsayxtKXtmPWY\/Zjp7aGFzQ29uc2VudDohMX07JCgiLnVpLWxvYWRlci1iYWNrZ3JvdW5kIikuaGlkZSgpO3RyeXsidW5kZWZpbmVkIj09dHlwZW9mIGYmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGRlYnVnJiZkZWJ1ZygiKioqKiBlcnJvciAqKioqIix7ZXJyb3I6Ik5vIERhdGEiLHRleHRTdGF0dXM6ayxydmFsdWU6Zix2OmdldERhdGEsdDoiL2FqYXgvZ2V0RW1haWxDb25zZW50RnJvbUNSTT93c3dpZHRoPTAifSksW1siY29uc2VudFR5cGUiLCJjb25zZW50VHlwZSJdLFsiY29uc2VudEV4cGlyYXRpb24iLCJleHBpcmF0aW9uIl0sWyJjb25zZW50RGF0ZSIsImRhdGUiXSxbImNvbnNlbnRGcmVxdWVuY3kiLCJmcmVxdWVuY3kiXSwKWyJjb25zZW50RGV0YWlsc0ZSIiwiZGV0YWlsc0ZSRU5DSCJdLFsiY29uc2VudERldGFpbHNFTiIsImRldGFpbHNFTkdMSVNIIl0sWyJkZXRhaWxzRGVmYXVsdHMiLCJkZXRhaWxzRGVmYXVsdHMiXSxbImNvbnRhY3RJRCIsInVpZCJdXS5tYXAoZnVuY3Rpb24obil7dmFyIHQ9blswXTtuPW5bMV07ZGVsZXRlIHZvaWQgMDthW3RdPXZvaWQgMCE9ZltuXT9mW25dOmFbdF19KX1jYXRjaChuKXsidW5kZWZpbmVkIiE9PXR5cGVvZiBkZWJ1ZyYmZGVidWcoIioqKiogZXJyb3IgKioqKiIse2Vycm9yOm4sdGV4dFN0YXR1czprLHJ2YWx1ZTpmLHY6Z2V0RGF0YSx0OiIvYWpheC9nZXRFbWFpbENvbnNlbnRGcm9tQ1JNP3dzd2lkdGg9MCJ9KX1iKGYpfSl9LGJhbmRwTGluazpmdW5jdGlvbihiKXtiPWZ1bmN0aW9uKHIpe3JldHVybiByLnJlcGxhY2UoLy0vZywiXyIpLnJlcGxhY2UoLycvZywiIil9O2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgQ29va2llcy5nZXQoImJhbmRwbGluayIpfHwKbnVsbD09Q29va2llcy5nZXQoImJhbmRwbGluayIpfHwidW5kZWZpbmVkIj09dHlwZW9mIENvb2tpZXMuZ2V0KCJzZXNzaWQiKXx8bnVsbD09Q29va2llcy5nZXQoInNlc3NpZCIpKXJldHVybiIiO3ZhciBkPUNvb2tpZXMuZ2V0KCJiYW5kcGxpbmsiKSxjPUNvb2tpZXMuZ2V0KCJzZXNzaWQiKTtpZigwPmQuaW5kZXhPZigifHx8IikpcmV0dXJuIiI7dmFyIGY9ZC5zcGxpdCgifHx8Iik7aWYoND5mLmxlbmd0aClyZXR1cm4iIjtkPShuZXcgU3RyaW5nKGZbMF0pKS5zcGxpdCgiLyIpO3ZhciBrPW5ldyBTdHJpbmcoZlsxXSksbT1uZXcgU3RyaW5nKGZbMl0pO2Y9bmV3IFN0cmluZyhmWzNdKTt2YXIgbj0kKCIjcG9wdXB0cmltIikubGVuZ3RoJiYieyRQT1BVUFRSSU19IiE9JCgiI3BvcHVwdHJpbSIpLnZhbCgpPyQoIiNwb3B1cHRyaW0iKS52YWwoKToiIix0PSI8YSBocmVmPSciK2QyY21lZGlhLmdldEh0dHBUZXh0KCkrIjovLyIrd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lKyQoIiN0eHRCdWlsZEFuZFByaWNlRm9sZGVyUGF0aCIpLnZhbCgpOwoiRU5HTElTSCI9PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKT8ocGFyc2VJbnQoZFsyXSksJCgiI1RYVE1PTlRIIitwYXJzZUludChkWzFdKS50b1N0cmluZygpKS52YWwoKSx0Kz1mKyItIitiKGspKyItIitiKG0pKyIuaHRtbD9zaWQ9IitjKyInIHRhcmdldD0nX2JsYW5rJz4iK2YrIiAiK2srIiAiK20rIiAiK24rIjwvYT4iKTooJCgiI1RYVE1PTlRIIitwYXJzZUludChkWzFdKS50b1N0cmluZygpKS52YWwoKSx0Kz1iKGspKyItIitiKG0pKyItIitmKyIuaHRtbD9zaWQ9IitjKyInIHRhcmdldD0nX2JsYW5rJz4iK2srIiAiK20rIiAiK24rIiAiK2YrIjwvYT4iKTtyZXR1cm4gdH0sbG9nRm9ybVJlcXVlc3Q6ZnVuY3Rpb24oYixkLGMpe3ZhciBmPU1hdGguZmxvb3IoOTk5OTk5OSpNYXRoLnJhbmRvbSgpKSxrPSQoIiN0b3BzaXRlaWQiKS5sZW5ndGg\/JCgiI3RvcHNpdGVpZCIpLnZhbCgpOiIwIixtPSQoIiN0b3BjYXJpZCIpLmxlbmd0aCYmMDwkKCIjdG9wY2FyaWQiKS52YWwoKS5sZW5ndGg\/CiQoIiN0b3BjYXJpZCIpLnZhbCgpOiIwIixuPUNvb2tpZXMuZ2V0KCJ1aWQiKT9Db29raWVzLmdldCgidWlkIik6IjAiLHQ9Q29va2llcy5nZXQoInV0bV9zb3VyY2UiKT9Db29raWVzLmdldCgidXRtX3NvdXJjZSIpOiIwIixyPUNvb2tpZXMuZ2V0KCJ1dG1fY2FtcGFpZ24iKT9Db29raWVzLmdldCgidXRtX2NhbXBhaWduIik6IjAiLHY9Q29va2llcy5nZXQoInV0bV9zb3VyY2VfcmV0YXJnZXRpbmciKT9Db29raWVzLmdldCgidXRtX3NvdXJjZV9yZXRhcmdldGluZyIpOiIwIixxPUNvb2tpZXMuZ2V0KCJ1dG1fY2FtcGFpZ25fcmV0YXJnZXRpbmciKT9Db29raWVzLmdldCgidXRtX2NhbXBhaWduX3JldGFyZ2V0aW5nIik6IjAiLHA9JCgiI3RvcGlzbW9iaWxlIikubGVuZ3RoJiYxPT0kKCIjdG9waXNtb2JpbGUiKS52YWwoKT8iWUVTIjoiTk8iLGg9JCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLmxlbmd0aD8kKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCk6IkZSRU5DSCIsbD12b2lkIDAhPT0KYSYmdm9pZCAwIT09YS5waG9uZU1hbmRhdG9yeT9hLnBob25lTWFuZGF0b3J5OjA7InVuZGVmaW5lZCIhPXR5cGVvZiBjJiZjfHwoYz0iMCIpO3I9ci5yZXBsYWNlKC9cdC9nLCIiKS5yZXBsYWNlKC9cbi9nLCIiKS5yZXBsYWNlKC9cci9nLCIiKS5yZXBsYWNlQWxsKCIlMEEiLCIiKS5yZXBsYWNlQWxsKCIlMDkiLCIiKS5yZXBsYWNlQWxsKCIlMEIiLCIiKS5yZXBsYWNlQWxsKCIlMDAiLCIiKS5yZXBsYWNlQWxsKCIlNUMiLCIiKS5yZXBsYWNlQWxsKCIlMEQiLCIiKTt0PXQucmVwbGFjZSgvXHQvZywiIikucmVwbGFjZSgvXG4vZywiIikucmVwbGFjZSgvXHIvZywiIikucmVwbGFjZUFsbCgiJTBBIiwiIikucmVwbGFjZUFsbCgiJTA5IiwiIikucmVwbGFjZUFsbCgiJTBCIiwiIikucmVwbGFjZUFsbCgiJTAwIiwiIikucmVwbGFjZUFsbCgiJTVDIiwiIikucmVwbGFjZUFsbCgiJTBEIiwiIik7Yj0iL3Byb3h5X3NhdWIvbG9nRm9ybVJlcXVlc3QvIitlbmNvZGVVUklDb21wb25lbnQoaykrCiIvIitlbmNvZGVVUklDb21wb25lbnQobSkrIi8iK2VuY29kZVVSSUNvbXBvbmVudChuKSsiLyIrZW5jb2RlVVJJQ29tcG9uZW50KHQpKyIvIitlbmNvZGVVUklDb21wb25lbnQocikrIi8iK2VuY29kZVVSSUNvbXBvbmVudChwKSsiLyIrZW5jb2RlVVJJQ29tcG9uZW50KGgpKyIvIitlbmNvZGVVUklDb21wb25lbnQodikrIi8iK2VuY29kZVVSSUNvbXBvbmVudChxKSsiLyIrZW5jb2RlVVJJQ29tcG9uZW50KGQpKyIvIitlbmNvZGVVUklDb21wb25lbnQoYikrIi8iK2VuY29kZVVSSUNvbXBvbmVudChjKSsiLyIrISFsKyIvIitlbmNvZGVVUklDb21wb25lbnQoZikrIi5naWYiOyQoImJvZHkiKS5hcHBlbmQoIjxpbWcgc3R5bGU9J3dpZHRoOjFweDtoZWlnaHQ6MXB4O3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MHB4O3RvcDowcHg7JyBzcmM9JyIrYisiJyBhbHQ9JycgLz4iKX0sZ2V0VXNlZEVtYWlsRm9yTXVsdGlwbGVEZWFsZXJzOmZ1bmN0aW9uKCl7dmFyIGI9ImZyIjsiRU5HTElTSCI9PQokKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCkmJihiPSJlbiIpO3VyaT0iLyIrYisiL3BocC9nZXREZWFsZXJzRW1haWxUby5waHA\/bWFrZT0iK2EubWFrZSsiJm1vZGVsPSIrYS5tb2RlbCsiJnllYXI9IithLnllYXIrIiZjYj0iK01hdGguZmxvb3IoOTk5OTk5OSpNYXRoLnJhbmRvbSgpKTskLmFqYXgoe3VybDp1cmksYXN5bmM6ITEsc3VjY2VzczpmdW5jdGlvbihkKXtkPWQuc3BsaXQoInx8fCIpOyJ1bmRlZmluZWQiIT10eXBlb2YgZFswXSYmMDxkWzBdLmxlbmd0aCYmKGEuc2VuZFRvPWRbMF0pOyJ1bmRlZmluZWQiIT10eXBlb2YgZFsxXSYmMDxkWzFdLmxlbmd0aCYmKGEuc2VuZFRvQURGRm9ybWF0PWRbMV0pfX0pfSxwcmVTZW5kSW1wbGljaXQ6ZnVuY3Rpb24oKXtpZihhLnBhcnRpYWwpcmV0dXJuITE7anNvbk9iamVjdD1hLmdldEpzb25PYmplY3QoKTt2YXIgYj17anNvbjpKU09OLnN0cmluZ2lmeShqc29uT2JqZWN0KSxwYXJ0aWFsOiEwfTskLmFqYXgoe3R5cGU6IlBPU1QiLAp1cmw6Ii9tYWlsL3NlbmRNYWlsRXgucGhwIixkYXRhOmIsYmVmb3JlU2VuZDpmdW5jdGlvbihkKXskKCdpbnB1dFtuYW1lPSJsZWFkX2RlcGFydG1lbnQiXScpLnZhbChqc29uT2JqZWN0LmRlcGFydG1lbnQpOyQoJ2lucHV0W25hbWU9ImxlYWRUeXBlIl0nKS52YWwoYS5zdWJqZWN0LnJlcGxhY2UoL1tcblxyXS9nLCIgIikpOyQoJ2lucHV0W25hbWU9InBhZ2VJRCJdJykudmFsKCQoIiNQQUdFSUQiKS52YWwoKSk7JCgnaW5wdXRbbmFtZT0iY3VycmVudFVSTCJdJykudmFsKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTskKCdpbnB1dFtuYW1lPSJpc0Z1bGxXaWR0aCJdJykudmFsKCQoIiNpc0Z1bGxXaWR0aFBhZ2VOZXdWRFAiKS52YWwoKSk7JCgnaW5wdXRbbmFtZT0iZGVhbGVyTmFtZSJdJykudmFsKCQoIiNuZXdWRFBEZWFsZXJOYW1lIikudmFsKCkpOyQoJ2lucHV0W25hbWU9ImJ1dHRvblBvc2l0aW9uIl0nKS52YWwoJCgiI25ld1ZEUEJ1dHRvblBvc2l0aW9uIikudmFsKCkpOyQoJ2lucHV0W25hbWU9ImlzTW9iaWxlTmV3VkRQIl0nKS52YWwoJCgiI2lzbW9iaWxlIikudmFsKCkpOwpkJiZkLm92ZXJyaWRlTWltZVR5cGUmJmQub3ZlcnJpZGVNaW1lVHlwZSgiYXBwbGljYXRpb24vanNvbjtjaGFyc2V0PVVURi04Iik7dHJ5e2xldCBjPSQoIm1ldGFbbmFtZT0nY3NyZi1kb21haW4tY2hlY2snXSIpO2MubGVuZ3RoJiZkLnNldFJlcXVlc3RIZWFkZXIoImNzcmYtZG9tYWluLWNoZWNrIixjLmF0dHIoImNvbnRlbnQiKSl9Y2F0Y2goYyl7Y29uc29sZS5lcnJvcihkKX19LHN1Y2Nlc3M6ZnVuY3Rpb24oZCl7InVuZGVmaW5lZCIhPT10eXBlb2YgZGVidWcmJmRlYnVnKGQpfSxmYWlsdXJlOmZ1bmN0aW9uKGQpe2EubG9nRm9ybVJlcXVlc3QoIkZvcm1TdWJtaXR0ZWRFbWFpbE5vdFNlbnQiLGEubWFpbElELGEucG9wdXBPZmZlclR5cGUpOyJ1bmRlZmluZWQiIT09dHlwZW9mIGRlYnVnJiZkZWJ1ZyhzYXZlSGFuZGxlci5mYWlsTWVzc2FnZSxkKX0sc3RhdHVzQ29kZTp7NDA0OmZ1bmN0aW9uKCl7YWxlcnQoInBhZ2Ugbm90IGZvdW5kIil9fX0pfSxsb2dFdmVudDpmdW5jdGlvbihiLApkKXtkPWQ\/ZDphLm1haWxJRDtpZighYnx8IWQpcmV0dXJuInVuZGVmaW5lZCIhPT10eXBlb2YgZGVidWcmJmRlYnVnKCIhVU5MT0dHRUQgRVZFTlQhIixiLGQpLCExOyJ1bmRlZmluZWQiIT10eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcmJiJ1bmRlZmluZWQiIT10eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudD9hY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50KGIsZCk6InVuZGVmaW5lZCIhPT10eXBlb2YgZGVidWcmJmRlYnVnKCIhVU5MT0dHRUQgRVZFTlQhIixiLGQpfSxidWlsZENSTUtleTpmdW5jdGlvbigpe3ZhciBiPXBhcnNlSW50KCQoIiN0b3BzaXRlaWQiKS52YWwoKSwxMCksZD1hLmdldFVVSUQoKSxjPWdldENvb2tpZSgiZW1haWxGcm9tQXV0b0Fuc3dlciIpO2lmKCFpc05hTihiKSYmKCIiIT1jfHwiIiE9ZCkmJiJudW1iZXIiPT10eXBlb2YgYiYmMDxiKXt2YXIgZj1uZXcgRGF0ZSxrPWYuZ2V0TW9udGgoKSsxO2s9JC5iYXNlNjQuZW5jb2RlKGYuZ2V0RnVsbFllYXIoKSsKIi0iKygxMD5rPyIwIitrOmspKyItIisoMTA+Zi5nZXREYXRlKCk\/IjAiK2YuZ2V0RGF0ZSgpOmYuZ2V0RGF0ZSgpKSk7Zj1rLnN1YnN0cigwLDgpO2s9ay5zdWJzdHIoOCk7cmV0dXJuICQuYmFzZTY0LmVuY29kZShmKyQuYmFzZTY0LmVuY29kZShiKyI7IitkKyI7IitjKStrKX1yZXR1cm4iIn0sc2V0TWFrZU1vZGVsWWVhckZyb21MYXN0Vmlld2VkOmZ1bmN0aW9uKCl7dmFyIGI9JCgiI2xhc3R2aWV3ZWRtYWtlIikudmFsKCksZD0kKCIjbGFzdHZpZXdlZG1vZGVsIikudmFsKCksYz0kKCIjbGFzdHZpZXdlZHllYXIiKS52YWwoKTsidW5kZWZpbmVkIiE9PXR5cGVvZiBiJiYiIj09PWEubWFrZSYmKGEubWFrZT1iKTsidW5kZWZpbmVkIiE9PXR5cGVvZiBkJiYiIj09PWEubW9kZWwmJihhLm1vZGVsPWQpOyJ1bmRlZmluZWQiPT09dHlwZW9mIGN8fCIiIT09YS55ZWFyJiYwIT09YS55ZWFyfHwoYS55ZWFyPWMpfSxyZWNhcHRjaGE6e2FzazohMCx3aWRnZXRJZDotMSxza2lwQnlQYXNzOiExLApvbjokLkRlZmVycmVkKCksaXNEMkNMb2FkZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gd2luZG93LmdyZWNhcHRjaGEmJiJ1bmRlZmluZWQiIT09dHlwZW9mIHdpbmRvdy5ncmVjYXB0Y2hhLkQyQ0xvYWRlZH0saW5pdDpmdW5jdGlvbigpe3RyeXsoZnVuY3Rpb24oYixkLGMsZixrKXtpZighYltrXXx8InVuZGVmaW5lZCI9PT10eXBlb2YgYltrXS5EMkNMb2FkZWQpe3ZhciBtPWQuY3JlYXRlRWxlbWVudChjKTtkPWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYylbMF07bS5zcmM9ZjtkLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG0sZCk7bS5vbmxvYWQ9KCk9PntiW2tdJiYoYltrXS5EMkNMb2FkZWQ9ITApfX19KSh3aW5kb3csZG9jdW1lbnQsInNjcmlwdCIsImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vcmVjYXB0Y2hhL2FwaS5qcyIsImdyZWNhcHRjaGEiKX1jYXRjaChiKXtjb25zb2xlLmxvZyhiKX19LGxvYWQ6ZnVuY3Rpb24oKXtpZighKC0xPGEucmVjYXB0Y2hhLndpZGdldElkKSl0cnl7JCgnPGRpdiBpZD0iZW1haWxoYW5kbGVyX3JlY2FwdGNoYVdpZGdldCIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+PC9kaXY+JykuYXBwZW5kVG8oImJvZHkiKSwKYS5yZWNhcHRjaGEud2lkZ2V0SWQ9Z3JlY2FwdGNoYS5yZW5kZXIoImVtYWlsaGFuZGxlcl9yZWNhcHRjaGFXaWRnZXQiLHtzaXRla2V5OiI2TGZwZEQwVUFBQUFBUGQ0UzdJa2U1RWR4MDF5M1lYZDVJLXUzZHhQIixjYWxsYmFjazphLnJlY2FwdGNoYS5vblN1Ym1pdCwiZXJyb3ItY2FsbGJhY2siOmEucmVjYXB0Y2hhLm9uRmFpbCxzaXplOiJpbnZpc2libGUifSl9Y2F0Y2goYil7Y29uc29sZS5sb2coYil9fSxvblN1Ym1pdDpmdW5jdGlvbihiKXthLmdyZWNhcHRjaGFSZXNwb25zZVRva2VuPWI7YS5yZWNhcHRjaGEub24ucmVzb2x2ZShiKX0sb25GYWlsOmZ1bmN0aW9uKCl7Y29uc29sZS5sb2coIkdSQyBGYWlsIixhcmd1bWVudHMpfSxnZXRSZXNwb25zZTpmdW5jdGlvbigpe3JldHVybiBhLnJlY2FwdGNoYS5pc0QyQ0xvYWRlZCgpPyhhLnJlY2FwdGNoYS5sb2FkKCksZ3JlY2FwdGNoYS5leGVjdXRlKGEucmVjYXB0Y2hhLndpZGdldElkKSxhLnJlY2FwdGNoYS5vbik6JC5EZWZlcnJlZCgpLnJlc29sdmUoKX0sCnJlc2V0VG9rZW46ZnVuY3Rpb24oKXthLnJlY2FwdGNoYS5pc0QyQ0xvYWRlZCgpJiYoZ3JlY2FwdGNoYS5yZXNldChhLnJlY2FwdGNoYS53aWRnZXRJZCksYS5yZWNhcHRjaGEub249JC5EZWZlcnJlZCgpKX0sc2V0UmVzcG9uc2U6ZnVuY3Rpb24oKXt9fSxzYW5pdGl6ZUhUTUw6ZnVuY3Rpb24oYil7cmV0dXJuIGVuY29kZVVSSShiKX0sc2hvdWxkRGlzcGxheVB1cmNoYXNlSW50ZW50Q29udGFjdDooKT0+e2lmKG51bGw9PT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjYXNQdXJjaGFzZUludGVudCIpfHxkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjYXNQdXJjaGFzZUludGVudCAuc3RlcENvbnRhY3QiKS5jbGFzc0xpc3QuY29udGFpbnMoImhpZGRlbiIpKXJldHVybiExO2xldCBiPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNhc1B1cmNoYXNlSW50ZW50IC5zdGVwQ29udGFjdCIpLmRhdGFzZXQuZGVwYXJ0bWVudHM7Yj1iLnNwbGl0KCI7Iik7aWYoLTE8Yi5pbmRleE9mKGEuZGVwYXJ0bWVudC50b0xvd2VyQ2FzZSgpKSlyZXR1cm4hMDsKdmFyIGQ9InVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZT9kb2N1bWVudC5sb2NhdGlvbi5wYXRobmFtZTpkb2N1bWVudC5sb2NhdGlvbi5ocmVmLm1hdGNoKC9bQS16XTpcL1wvW15cL10rXC8oW15cP10rKVw\/Py4qLylbMV07ZD1hLnNhbml0aXplSFRNTChkKTtsZXQgYz1PYmplY3QudmFsdWVzKE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyh7bmV3OlsibmV1ZiIsIm5ldyJdLHVzZWQ6WyJvY2Nhc2lvbiIsInVzZWQiXSxzZXJ2aWNlOlsic2VydmljZSIsImVudHJldGllbiIsIm1haW50ZW5hbmNlIiwicmVwYWlyIl0sZmluYW5jZTpbImZpbmFuY2VtZW50IiwiZmluYW5jZSIsImNyZWRpdCIsImxvYW4iXX0pLmZpbHRlcihmPT57W2ZdPWY7cmV0dXJuLTE8Yi5pbmRleE9mKGYpfSkpKS5mbGF0KCk7cmV0dXJuKG5ldyBSZWdFeHAoIigiK2Muam9pbigifCIpKyIpIikpLnRlc3QoZC50b0xvd2VyQ2FzZSgpKX19O2pRdWVyeShmdW5jdGlvbihiKXtiPQpqc19kMmNfZ2V0X3ZhbCgiSVNWTSIpO3ZhciBkPWpzX2QyY19nZXRfdmFsKCJmZmRMMSIpLGM9anNfZDJjX2dldF92YWwoIkdSV0wiKS5zcGxpdCgiOyIpO2EuaWdub3JlQ2FwdGNoYT1ifHwtMSE9Yy5pbmRleE9mKGQpO2EuaWdub3JlQ2FwdGNoYXx8YS5yZWNhcHRjaGEuaW5pdCgpfSk7YS5yZXNldENhbGxiYWNrcygpO2EuYXNrUHVyY2hhc2VJbnRlbnQ9ZnVuY3Rpb24oYil7dmFyIGQ9InVuZGVpbmZlZCIhPXR5cGVvZiBiLnBhdGhuYW1lP2IucGF0aG5hbWU6Yi5ocmVmLm1hdGNoKC9bQS16XTpcL1wvW15cL10rXC8oW15cP10rKVw\/Py4qLylbMV07dmFyIGM9UmVnRXhwKCIoZGVtb25zdHJhdGV1cnN8ZGVtb3xsaXF1aWRhdGlvbnxjbGVhcmFuY2V8cHJvbW90aW9uc3xuZXVmfG5ld3xvY2Nhc2lvbnx1c2VkfGNyZWRpdHxmaW5hbmNlbWVudCkiKTtiPXtkZW1vbnN0cmF0ZXVyczoiZGVtbyIsY2xlYXJhbmNlOiJsaXF1aWRhdGlvbiIsIm5ldyI6Im5ldWYiLHByb21vdGlvbnM6InByb21vIiwKdXNlZDoib2NjYXNpb24iLGNyZWRpdDoiZmluYW5jZW1lbnQifTtyZXR1cm4gYy50ZXN0KGQudG9Mb3dlckNhc2UoKSk\/KGQ9ZC5tYXRjaChjKSxudWxsIT1kJiYoYS5wdXJjaGFzZV9pbnRlbnRfc2VjdGlvbj0idW5kZWZpbmVkIiE9dHlwZW9mIGJbZFsxXV0\/YltkWzFdXTpkWzFdKSwhMCk6ITF9KGRvY3VtZW50LmxvY2F0aW9uKTtyZXR1cm4gYX0oKSxlbWFpbFRyYWNraW5nPWZ1bmN0aW9uKCl7dmFyIGU9e2JyYW5kOiIiLG1vZGVsOiIiLHllYXI6IiIsaXNwcm9tbzohMSxpc2V4cHJlc3M6ITEsaXNob21lcGFnZTohMSxzZWN0aW9uOiIiLHRleHRDYXJTZWN0aW9uVHlwZToiVVNFRCIsaXNNb2JpbGVOZXdWRFA6ITEsaXNGdWxsV2lkdGg6ITEsYnV0dG9uUG9zaXRpb246IiIsZGVhbGVyTmFtZToiIn0sZz1mdW5jdGlvbihjKXt2YXIgZj1bXSxrPWMuYnJhbmQ\/Yy5icmFuZDplbWFpbEhhbmRsZXIubWFrZSxtPWMubW9kZWw\/Yy5tb2RlbDplbWFpbEhhbmRsZXIubW9kZWw7Yz1jLnllYXI\/CmMueWVhcjplbWFpbEhhbmRsZXIueWVhcjtrLmxlbmd0aCYmZi5wdXNoKGspO20ubGVuZ3RoJiZmLnB1c2gobSk7Yy5sZW5ndGgmJmYucHVzaChjKTtyZXR1cm4gZi5qb2luKCItIil9LGE9ZnVuY3Rpb24oYyl7dmFyIGY9eyJob21lcGFnZS5odG1sIjoiSG9tZS1QYWdlIiwiY29udGFjdHVzLmh0bWwiOiJDb250YWN0VXMiLCJuZXdjYXJkZXRhaWwuaHRtbCI6Ik5ldy1WRFAiLCJuZXdjYXJzLmh0bWwiOiJOZXctU1JQIiwiYnVpbGRhbmRwcmljZS5odG1sIjoiTmV3LUImUCIsInJlc3VtZS1idWlsZGFuZHByaWNlLmh0bWwiOiJOZXctQiZQLVJlc3VtZSIsImNvbXBhcmVOZXdWZWhpY2xlcy5odG1sIjoiTmV3LUNvbXBhcmUiLCJ1c2VkY2Fycy5odG1sIjoiVXNlZC1TUlAiLCJjYXJkZXRhaWwuaHRtbCI6IlVzZWQtVkRQIiwiY3JlZGl0Lmh0bWwiOiJEZW1hbmRlcyAtIEZpbmFuY2VtZW50IiwiZGVhbGVydHJhY2suaHRtbCI6IkRlbWFuZGVzIC0gRmluYW5jZW1lbnQiLCJwcm9tb3Rpb24uaHRtbCI6IlByb21vdGlvbnMiLAoicHJvbW90aW9uc2FsZXMuaHRtbCI6IlByb21vdGlvbnMiLCJwcm9tb3Rpb25zZXJ2aWNlLmh0bWwiOiJQcm9tb3Rpb25zIiwicGFydHNSZXF1ZXN0Lmh0bWwiOiJEZW1hbmRlcyAtIFBp77+9Y2VzIiwic2VydmljZXMuaHRtbCI6IlNlcnZpY2UiLCJzZXJ2aWNlUmVxdWVzdC5odG1sIjoiRGVtYW5kZXMgLSBSRFYgU2VydmljZSIsImJvZHlTaG9wLmh0bWwiOiJEZW1hbmRlcyAtIFJEViBDYXJvc3NlcmllIiwidGlyZXNSZXF1ZXN0Lmh0bWwiOiJEZW1hbmRlcyAtIFBuZXVzIiwib3VydGVhbS5odG1sIjoiVGVhbSIsInRlc3Rkcml2ZS5odG1sIjoiRGVtYW5kZXMgLSBFc3NhaXMtUm91dGllci1PY2Nhc2lvbiIsInRlc3Rkcml2ZW5ldy5odG1sIjoiRGVtYW5kZXMgLSBFc3NhaXMtUm91dGllci1OZXVmIiwiYnJvY2h1cmVzLmh0bWwiOiJEZW1hbmRlcyAtIEJyb2NodXJlcyIsImpvYm9mZmVyLmh0bWwiOiJEZW1hbmRlcyAtIEVtcGxvaXMiLCJtYWtlb2ZmZXJuZXcuaHRtbCI6IkRlbWFuZGVzIC0gT2ZmcmUgLSBOZXVmIiwKIm1ha2VvZmZlci5odG1sIjoiRGVtYW5kZXMgLSBPZmZyZSAtIE9jY2FzaW9uIiwicHJpY2VyZXF1ZXN0bmV3Lmh0bWwiOiJEZW1hbmRlcyAtIFByaXggLSBOZXVmIiwicHJpY2VyZXF1ZXN0Lmh0bWwiOiJEZW1hbmRlcyAtIFByaXggLSBPY2Nhc2lvbiIsImZpbmRjYXIuaHRtbCI6IkRlbWFuZGVzIC0gUmVjaGVyY2hlIE9jY2FzaW9uIiwidHJhZGVpbm5ldy5odG1sIjoiRGVtYW5kZXMgLSBFY2hhbmdlIE5ldWYiLCJ0cmFkZWluLmh0bWwiOiJEZW1hbmRlcyAtIEVjaGFuZ2UgT2NjYXNpb24ifSxrPS0xIT0oYy5jdXJyZW50VVJMfHwiIikuaW5kZXhPZigic3RlcD1yZXN1bWUiKSxtPS0xIT0oYy5jdXJyZW50VVJMfHwiIikuaW5kZXhPZigic3RlcD1vcHRpb25zIik7ImJ1aWxkYW5kcHJpY2UuaHRtbCI9PWMucGFnZUlEJiYoa3x8bSkmJihjLnBhZ2VJRD0icmVzdW1lLWJ1aWxkYW5kcHJpY2UuaHRtbCIpO3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgZltjLnBhZ2VJRF0\/ZltjLnBhZ2VJRF06CiJPdGhlciJ9LGI9ZnVuY3Rpb24oYyl7dmFyIGY9IkRlbWFuZGVzIixrPWMuYnJhbmQ\/Yy5icmFuZDplbWFpbEhhbmRsZXIubWFrZSxtPWMubW9kZWw\/Yy5tb2RlbDplbWFpbEhhbmRsZXIubW9kZWw7Yy5pc3Byb21vJiYoZis9Ii1Qcm9tb3Rpb24iKTswPGsubGVuZ3RoJiYwPG0ubGVuZ3RoJiYhYy5pc2hvbWVwYWdlP2Y9Yy5pc3Byb21vP2YrKCItIitnKGMpKTpmK1siIixrLG0sYy5zZWN0aW9uXS5qb2luKCItIik6Yy5pc3Byb21vJiZjLmlzaG9tZXBhZ2UmJihmKz0iLUluZGV4Iik7IjEiPT1jLmlzZXhwcmVzcyYmKGMudGV4dENhclNlY3Rpb25UeXBlJiYoZj0iRGVtYW5kZXMtRXhwcmVzcyIpLGYrPSItIitnKGMpLGYrPSItIitjLnNlY3Rpb24pO3JldHVybiBmfSxkPWZ1bmN0aW9uKGMpe3ZhciBmPTEyMDA8d2luZG93LnNjcmVlbi5hdmFpbFdpZHRoPyI+MTIwMHB4IC0gIi5pc0Z1bGxXaWR0aDoiPDEyMDBweCAtIE5vcm1hbCBWRFAiO1tmLGMuYnV0dG9uUG9zaXRpb25dLmpvaW4oIi0iKTsKYz1bYy5kZWFsZXJOYW1lLGYsIkxlYWQiXS5qb2luKCItIik7Z2FUcmFjaygiYyIsIk5ldy1WRFAtRGVza3RvcC1MYXlvdXQtQ1IiLGFjdGlvbixjLDEpfTt0aGlzLnRyYWNrPWZ1bmN0aW9uKGMpe2lmKGdldENvb2tpZSgibGVhZFNlbmQiKSlyZXR1cm4gZGVidWcoImxlYWQgc2VudCIpO3NldENvb2tpZSgibGVhZFNlbmQiLCEwLDEpO2M9JC5leHRlbmQoe30sZSxjKTtjLmN1cnJlbnRVUkw9Yy5jdXJyZW50VVJMP2MuY3VycmVudFVSTDp3aW5kb3cubG9jYXRpb24uaHJlZjtjLmlzcHJvbW89IjEiPT1jLmlzcHJvbW87Yy5pc2hvbWVwYWdlPSIxIj09Yy5pc2hvbWVwYWdlO3ZhciBmPWEoYyk7Z2FUcmFjaygiIiwiQ291cnJpZWxzIixjLmxhYmVsLGIoYyksMSk7Z2FUcmFjaygiYyIsIkNvdXJyaWVscy1kZXB0IixjLmRlcGFydG1lbnQsZyhjKSwxKTtnYVRyYWNrKCJjIiwiQ291cnJpZWxzLXBhZ2UiLGYsYy5sZWFkVHlwZSwxKTtjLmlzTW9iaWxlTmV3VkRQJiYiTmV3LVZEUCI9PWYmJgpkKGMpO3RyeXtkMmNfZ2FBY2NvdW50cy5hbGwubWFwKGZ1bmN0aW9uKGspe2d0YWcoImNvbmZpZyIsayx7cGFnZV9wYXRoOiIvY29uZmlybWF0aW9uLmh0bWwifSl9KSxndGFnKCJjb25maWciLCJHLVo1UThaNUM3S0YiLHtwYWdlX3BhdGg6Ii9jb25maXJtYXRpb24uaHRtbCJ9KX1jYXRjaChrKXtkZWJ1ZyhrKX19O3JldHVybiB0aGlzfSgpLGdldE1haWxTZW50SGFuZGxlcj1mdW5jdGlvbihlKXt2YXIgZz17dGltZW91dENhbGxiYWNrOm51bGwsdGltZW91dDpudWxsfTtnLmlkVG9BZGQ9ZT9lOiIiOyQoIiNlbWFpbFN1Y2Nlc3NNZXNzYWdlIikuZmluZCgiLmRlZmF1bHRTdWNjZXNzIikuc2hvdygpOyQoIiNlbWFpbFN1Y2Nlc3NNZXNzYWdlIikuZmluZCgiLnNlcnZpY2VTdWNjZXNzIikuaGlkZSgpOyQoIiNlbWFpbFN1Y2Nlc3NNZXNzYWdlIitlKS5sZW5ndGh8fChlPSIiLGcuaWRUb0FkZD0iIiwiU0VSVklDRSIhPWVtYWlsSGFuZGxlci5kZXBhcnRtZW50JiYiUEFSVFMiIT1lbWFpbEhhbmRsZXIuZGVwYXJ0bWVudCl8fAooJCgiI2VtYWlsU3VjY2Vzc01lc3NhZ2UiKS5maW5kKCIuZGVmYXVsdFN1Y2Nlc3MiKS5oaWRlKCksJCgiI2VtYWlsU3VjY2Vzc01lc3NhZ2UiKS5maW5kKCIuc2VydmljZVN1Y2Nlc3MiKS5zaG93KCkpO2cuc2hvd1N1Y2Nlc3M9ZnVuY3Rpb24oKXtnZXRDb29raWUoInByZXZlbnREdXBsaWNhdGVDcmVkaXRTY29yZSIpfHxnZXRDb29raWUoImNyZWRpdFNjb3JlQ29uZmlybVBvcHVwU2hvd24iKXx8Z2V0Q29va2llKCJjcmVkaXRTY29yZUVtYmVkZGVkRmlsbGVkIil8fCIiIT1lbWFpbEhhbmRsZXIudXNlclBob25lJiYiIiE9ZW1haWxIYW5kbGVyLnVzZXJBZGRyZXNzJiYiIiE9ZW1haWxIYW5kbGVyLmJpcnRoZGF0ZXx8Im5ldyIhPWVtYWlsSGFuZGxlci5kZXBhcnRtZW50LnRvTG93ZXJDYXNlKCkmJiJ1c2VkIiE9ZW1haWxIYW5kbGVyLmRlcGFydG1lbnQudG9Mb3dlckNhc2UoKXx8ISQoIiNjcmVkaXRTY29yZUNvbmZpcm1Qb3B1cENvbnRhaW5lciIpLmxlbmd0aHx8IlRyYWRlSW5CYXJQb3B1cENvbnRhaW5lciI9PQplbWFpbEhhbmRsZXIucG9wdXBkaXY\/KCQoIiNlbWFpbFN1Y2Nlc3NNZXNzYWdlIitlKS5wYXJlbnQoKS5pcygiYm9keSIpfHwkKCIjZW1haWxTdWNjZXNzTWVzc2FnZSIrZSkuYXBwZW5kVG8oImJvZHkiKSwkKCIjZW1haWxTdWNjZXNzTWVzc2FnZSIrZSkucmV2ZWFsKHthbmltYXRpb246ImZhZGVBbmRQb3AiLGFuaW1hdGlvbnNwZWVkOjMwMCxjbG9zZW9uYmFja2dyb3VuZGNsaWNrOiExLGRpc21pc3Ntb2RhbGNsYXNzOiJjbG9zZS1yZXZlYWwtbW9kYWwifSksJCgiI2VtYWlsU3VjY2Vzc01lc3NhZ2UiK2UrIiAuY29uZmlybV9zdWNjZXNzQ29udGludWUiKS5vbigiY2xpY2siLGcuY2xvc2VTdWNjZXNzKSk6JCgiI2NyZWRpdFNjb3JlQ29uZmlybVBvcHVwQ29udGFpbmVyIikucG9wdXBpemUoKS5zZXRUcmlnZ2VyKCJjbGljayIpLm9wZW4oMSk7JCgiLnVpLWxvYWRlci1iYWNrZ3JvdW5kIikuaGlkZSgpOyQoIiNlbWFpbG1zZ2ZybSIrZy5pZFRvQWRkKS50cmlnZ2VyKCJzdWJtaXQiKX07CmcuY2xvc2VTdWNjZXNzPWZ1bmN0aW9uKCl7JCgiI2VtYWlsU3VjY2Vzc01lc3NhZ2UiK2cuaWRUb0FkZCkudHJpZ2dlcigicmV2ZWFsOmNsb3NlIik7bnVsbCE9Zy50aW1lb3V0Q2FsbGJhY2smJmcudGltZW91dENhbGxiYWNrKCk7cmV0dXJuITF9O2cuc2hvd0ZhaWw9ZnVuY3Rpb24oKXskKCIjZW1haWxGYWlsTWVzc2FnZSIrZy5pZFRvQWRkKS5yZXZlYWwoe2FuaW1hdGlvbjoiZmFkZUFuZFBvcCIsYW5pbWF0aW9uc3BlZWQ6MzAwLGNsb3Nlb25iYWNrZ3JvdW5kY2xpY2s6ITEsZGlzbWlzc21vZGFsY2xhc3M6ImNsb3NlLXJldmVhbC1tb2RhbCJ9KTskKCIjZW1haWxGYWlsTWVzc2FnZSIrZSsiIC5jb25maXJtX2ZhaWxDb250aW51ZSIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXskKCIjZW1haWxGYWlsTWVzc2FnZSIrZSkudHJpZ2dlcigicmV2ZWFsOmNsb3NlIil9KTskKCIudWktbG9hZGVyLWJhY2tncm91bmQiKS5oaWRlKCl9O3JldHVybiBnfSxtYWlsU2VudEhhbmRsZXI9bmV3IGdldE1haWxTZW50SGFuZGxlcigiIik7CmZ1bmN0aW9uIHN0b3JhZ2VBdmFpbGFibGUoZSl7dHJ5e3ZhciBnPXdpbmRvd1tlXTtnLnNldEl0ZW0oIl9fc3RvcmFnZV90ZXN0X18iLCJfX3N0b3JhZ2VfdGVzdF9fIik7Zy5yZW1vdmVJdGVtKCJfX3N0b3JhZ2VfdGVzdF9fIik7cmV0dXJuITB9Y2F0Y2goYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiBET01FeGNlcHRpb24mJigyMj09PWEuY29kZXx8MTAxND09PWEuY29kZXx8IlF1b3RhRXhjZWVkZWRFcnJvciI9PT1hLm5hbWV8fCJOU19FUlJPUl9ET01fUVVPVEFfUkVBQ0hFRCI9PT1hLm5hbWUpJiZnJiYwIT09Zy5sZW5ndGh9fQp2YXIgZm9ybUZpbGw9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLGc9c3RvcmFnZUF2YWlsYWJsZSgibG9jYWxTdG9yYWdlIiksYT1udWxsLGI9ITAsZD1bXSxjPXtuYW1lOlsiaW5wdXQubmFtZSIsJ2lucHV0W25hbWU9Im5hbWUiXSddLHBvc3RhbDpbImlucHV0LnBvc3RhbCIsJ2lucHV0W25hbWU9InBvc3RhbCJdJ10sZmlyc3ROYW1lOidpbnB1dC5maXJzdE5hbWUgaW5wdXQuZmlyc3RuYW1lIGlucHV0W25hbWU9ImZpcnN0bmFtZSJdIGlucHV0W25hbWU9ImZpcnN0TmFtZSJdIGlucHV0I2ZpcnN0bmFtZSBpbnB1dCNmaXJzdE5hbWUgaW5wdXQjbWluaV9mbmFtZScuc3BsaXQoIiAiKSxsYXN0TmFtZTonaW5wdXQubGFzdE5hbWUgaW5wdXQubGFzdG5hbWUgaW5wdXRbbmFtZT0ibGFzdG5hbWUiXSBpbnB1dFtuYW1lPSJsYXN0TmFtZSJdIGlucHV0I2xhc3RuYW1lIGlucHV0I2xhc3ROYW1lIGlucHV0I21pbmlfbG5hbWUnLnNwbGl0KCIgIikscGhvbmU6WyJpbnB1dC5waG9uZSIsJ2lucHV0W25hbWU9InBob25lIl0nLAonaW5wdXRbbmFtZT0icGhvbmVOdW1iZXIiXScsImlucHV0I21pbmlfcGhvbmUiLCdbdHlwZT0idGVsIl0nXSxlbWFpbDpbImlucHV0LmVtYWlsIiwnaW5wdXRbbmFtZT0iZW1haWwiXScsJ2lucHV0W25hbWU9ImVtYWlsQWRkcmVzcyJdJywiaW5wdXQjbWluaV9lbWFpbCJdfSxmPWZ1bmN0aW9uKHApe2lmKCFnKXJldHVybiExO3ZhciBoPWxvY2FsU3RvcmFnZS5nZXRJdGVtKCJmb3JtRmlsbERhdGEiKTtpZihudWxsPT09aClyZXR1cm4hMTskLmFqYXgoe3R5cGU6IlBPU1QiLHVybDoiL3Byb3h5X3NkMmMvc2VydmljZS9kMmMuZW5jcnlwdGlvbi5nZXQiLGRhdGE6e2RhdGE6aH19KS5kb25lKGZ1bmN0aW9uKGwpe2lmKGwmJiJmdW5jdGlvbiI9PT10eXBlb2YgcCl0cnl7cChKU09OLnBhcnNlKGwuZGF0YSkpfWNhdGNoKHUpe2NvbnNvbGUubG9nKHUpfX0pfSxrPWZ1bmN0aW9uKCl7Yj0hMDthPW51bGw7ZC5mb3JFYWNoKGZ1bmN0aW9uKHApe3AuZmlsbGVkPSExfSl9LG09ZnVuY3Rpb24ocCl7cSgidXNlci5sb2FkZWQiLApmdW5jdGlvbigpe2lmKCFuKHApKXtkLnB1c2goe3Njb3BlOnAsZmlsbGVkOiEwfSk7Zm9yKHZhciBoIGluIGMpYS5oYXNPd25Qcm9wZXJ0eShoKSYmcC5maW5kKCQoY1toXS5qb2luKCIsIikpKS52YWwoYVtoXSk7cigiZm9ybS5maWxsZWQiKX19KTtudWxsPT09YSYmYj8oYj0hMSxmKGZ1bmN0aW9uKGgpe2gucG9zdGFsPWgucG9zdGFsLnRvVXBwZXJDYXNlKCk7aC5maXJzdE5hbWU9aC5maXJzdE5hbWUudHJpbSgpO2gubGFzdE5hbWU9aC5sYXN0TmFtZS50cmltKCk7ZW1haWxIYW5kbGVyLnVzZXJQb3N0YWw9aC5wb3N0YWw7ZW1haWxIYW5kbGVyLnVzZXJFbWFpbD1oLmVtYWlsO2VtYWlsSGFuZGxlci51c2VyRmlyc3ROYW1lPWguZmlyc3ROYW1lO2VtYWlsSGFuZGxlci51c2VyTGFzdE5hbWU9aC5sYXN0TmFtZTtlbWFpbEhhbmRsZXIudXNlclBob25lPWgucGhvbmU7aC5uYW1lPShoLmZpcnN0TmFtZSsiICIraC5sYXN0TmFtZSkudHJpbSgpO2E9aDtyKCJ1c2VyLmxvYWRlZCIpfSkpOgphJiZyKCJ1c2VyLmxvYWRlZCIpfSxuPWZ1bmN0aW9uKHApe3JldHVybihfc2NvcGU9ZC5maW5kKGZ1bmN0aW9uKGgpe2lmKGguc2NvcGUuaXMocCkpcmV0dXJuIGh9KSk\/X3Njb3BlLmZpbGxlZDohMX0sdD1bXSxyPWZ1bmN0aW9uKHApe3ZhciBoPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpO2lmKHRbcF0pe3ZhciBsPXRbcF0uc2xpY2UoKTt2YXIgdT1sLmxlbmd0aDtmb3IoaT0wO2k8dTtpKyspbFtpXS5hcHBseSh0aGlzLGgpfX0sdj1mdW5jdGlvbihwLGgpe3RbcF18fCh0W3BdPVtdKTt0W3BdLnB1c2goaCl9LHE9ZnVuY3Rpb24ocCxoKXt2KHAsZnVuY3Rpb24gdSgpe3RbcF0uc3BsaWNlKHRbcF0uaW5kZXhPZih1KSwxKTtoLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pfTskKGZ1bmN0aW9uKCl7ZyYmKCQoZG9jdW1lbnQpLm9uKCJwb3B1cGl6ZXIub25PcGVuIixmdW5jdGlvbihwLGgpe3A9aC50YXJnZXQ\/aC50YXJnZXQ6JChoKTttKHApfSksJChkb2N1bWVudCkub24oInBvcHVwaXplci5vbkNsb3NlIiwKZnVuY3Rpb24ocCxoKXt9KSwkKCJmb3JtIikuZWFjaChmdW5jdGlvbihwLGgpe20oJChoKSl9KSl9KTtyZXR1cm4gZT17c2F2ZTpmdW5jdGlvbihwKXtpZighZylyZXR1cm4hMTthJiYiIj09PXAucG9zdGFsJiYocC5wb3N0YWw9YS5wb3N0YWwpOyQuYWpheCh7dHlwZToiUE9TVCIsdXJsOiIvcHJveHlfc2QyYy9zZXJ2aWNlL2QyYy5lbmNyeXB0aW9uLnNldCIsZGF0YTp7ZGF0YTpKU09OLnN0cmluZ2lmeShwKX19KS5kb25lKGZ1bmN0aW9uKGgpe2gmJihsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgiZm9ybUZpbGxEYXRhIixoLmRhdGEpLGsoKSl9KX19fSgpOwovKiogL20vanMvamhhc2h0YWJsZS5qcyAqKi8KdmFyIF9fX2QyY19qaGFzaHRhYmxlanNfY19vbj0iMjAyNS0wNS0yMyAxNzowNzowNyI7J3VzZSBzdHJpY3QnO3ZhciBfX19kMmNfamhhc2h0YWJsZWpzX2Nfb249IjIwMjQtMDEtMzEgMTQ6MzU6MTkiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfamhhc2h0YWJsZWpzX2Nfb249IjIwMjMtMDEtMTIgMTE6MzM6NDkiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfamhhc2h0YWJsZWpzX2Nfb249IjIwMjMtMDEtMTIgMTA6NDM6MzMiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfamhhc2h0YWJsZWpzX2Nfb249IjIwMjEtMTItMTUgMTI6NDA6MTMiOyJ1c2Ugc3RyaWN0IjsKdmFyIEhhc2h0YWJsZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHUoYSl7aWYoInN0cmluZyI9PXR5cGVvZiBhKXJldHVybiBhO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBhLmhhc2hDb2RlKXJldHVybiBhPWEuaGFzaENvZGUoKSwic3RyaW5nIj09dHlwZW9mIGE\/YTp1KGEpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBhLnRvU3RyaW5nKXJldHVybiBhLnRvU3RyaW5nKCk7dHJ5e3JldHVybiBTdHJpbmcoYSl9Y2F0Y2goYyl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhKX19ZnVuY3Rpb24gQihhLGMpe3JldHVybiBhLmVxdWFscyhjKX1mdW5jdGlvbiBDKGEsYyl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGMuZXF1YWxzP2MuZXF1YWxzKGEpOmE9PT1jfWZ1bmN0aW9uIHYoYSl7cmV0dXJuIGZ1bmN0aW9uKGMpe2lmKG51bGw9PT1jKXRocm93IEVycm9yKCJudWxsIGlzIG5vdCBhIHZhbGlkICIrYSk7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBjKXRocm93IEVycm9yKGErCiIgbXVzdCBub3QgYmUgdW5kZWZpbmVkIik7fX1mdW5jdGlvbiBxKGEsYyxoLGQpe3RoaXNbMF09YTt0aGlzLmVudHJpZXM9W107dGhpcy5hZGRFbnRyeShjLGgpO251bGwhPT1kJiYodGhpcy5nZXRFcXVhbGl0eUZ1bmN0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIGR9KX1mdW5jdGlvbiByKGEpe3JldHVybiBmdW5jdGlvbihjKXtmb3IodmFyIGg9dGhpcy5lbnRyaWVzLmxlbmd0aCxkLGs9dGhpcy5nZXRFcXVhbGl0eUZ1bmN0aW9uKGMpO2gtLTspaWYoZD10aGlzLmVudHJpZXNbaF0sayhjLGRbMF0pKXN3aXRjaChhKXtjYXNlIDA6cmV0dXJuITA7Y2FzZSAxOnJldHVybiBkO2Nhc2UgMjpyZXR1cm5baCxkWzFdXX1yZXR1cm4hMX19ZnVuY3Rpb24gdyhhKXtyZXR1cm4gZnVuY3Rpb24oYyl7Zm9yKHZhciBoPWMubGVuZ3RoLGQ9MCxrPXRoaXMuZW50cmllcy5sZW5ndGg7ZDxrOysrZCljW2grZF09dGhpcy5lbnRyaWVzW2RdW2FdfX1mdW5jdGlvbiBtKGEsYyl7cmV0dXJuKGE9YVtjXSkmJgphIGluc3RhbmNlb2YgcT9hOm51bGx9ZnVuY3Rpb24geChhLGMpe3ZhciBoPXRoaXMsZD1bXSxrPXt9LG49ImZ1bmN0aW9uIj09dHlwZW9mIGE\/YTp1LEQ9ImZ1bmN0aW9uIj09dHlwZW9mIGM\/YzpudWxsO3RoaXMucHV0PWZ1bmN0aW9uKGIsZSl7cChiKTt5KGUpO3ZhciBmPW4oYiksZyxsPW51bGw7KGc9bShrLGYpKT8oZj1nLmdldEVudHJ5Rm9yS2V5KGIpKT8obD1mWzFdLGZbMV09ZSk6Zy5hZGRFbnRyeShiLGUpOihnPW5ldyBxKGYsYixlLEQpLGRbZC5sZW5ndGhdPWcsa1tmXT1nKTtyZXR1cm4gbH07dGhpcy5nZXQ9ZnVuY3Rpb24oYil7cChiKTt2YXIgZT1uKGIpO2lmKGU9bShrLGUpKWlmKGI9ZS5nZXRFbnRyeUZvcktleShiKSlyZXR1cm4gYlsxXTtyZXR1cm4gbnVsbH07dGhpcy5jb250YWluc0tleT1mdW5jdGlvbihiKXtwKGIpO3ZhciBlPW4oYik7cmV0dXJuKGU9bShrLGUpKT9lLmNvbnRhaW5zS2V5KGIpOiExfTt0aGlzLmNvbnRhaW5zVmFsdWU9ZnVuY3Rpb24oYil7eShiKTsKZm9yKHZhciBlPWQubGVuZ3RoO2UtLTspaWYoZFtlXS5jb250YWluc1ZhbHVlKGIpKXJldHVybiEwO3JldHVybiExfTt0aGlzLmNsZWFyPWZ1bmN0aW9uKCl7ZC5sZW5ndGg9MDtrPXt9fTt0aGlzLmlzRW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4hZC5sZW5ndGh9O3ZhciB0PWZ1bmN0aW9uKGIpe3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgZT1bXSxmPWQubGVuZ3RoO2YtLTspZFtmXVtiXShlKTtyZXR1cm4gZX19O3RoaXMua2V5cz10KCJrZXlzIik7dGhpcy52YWx1ZXM9dCgidmFsdWVzIik7dGhpcy5lbnRyaWVzPXQoImdldEVudHJpZXMiKTt0aGlzLnJlbW92ZT1mdW5jdGlvbihiKXtwKGIpO3ZhciBlPW4oYiksZj1udWxsLGc9bShrLGUpO2lmKGcmJihmPWcucmVtb3ZlRW50cnlGb3JLZXkoYiksbnVsbCE9PWYmJiFnLmVudHJpZXMubGVuZ3RoKSl7YTp7Zm9yKGI9ZC5sZW5ndGg7Yi0tOylpZihnPWRbYl0sZT09PWdbMF0pYnJlYWsgYTtiPW51bGx9eihkLGIpO2RlbGV0ZSBrW2VdfXJldHVybiBmfTsKdGhpcy5zaXplPWZ1bmN0aW9uKCl7Zm9yKHZhciBiPTAsZT1kLmxlbmd0aDtlLS07KWIrPWRbZV0uZW50cmllcy5sZW5ndGg7cmV0dXJuIGJ9O3RoaXMuZWFjaD1mdW5jdGlvbihiKXtmb3IodmFyIGU9aC5lbnRyaWVzKCksZj1lLmxlbmd0aCxnO2YtLTspZz1lW2ZdLGIoZ1swXSxnWzFdKX07dGhpcy5wdXRBbGw9ZnVuY3Rpb24oYixlKXtiPWIuZW50cmllcygpO2Zvcih2YXIgZixnLGwsQT1iLmxlbmd0aCxFPSJmdW5jdGlvbiI9PXR5cGVvZiBlO0EtLTspZj1iW0FdLGc9ZlswXSxmPWZbMV0sRSYmKGw9aC5nZXQoZykpJiYoZj1lKGcsbCxmKSksaC5wdXQoZyxmKX07dGhpcy5jbG9uZT1mdW5jdGlvbigpe3ZhciBiPW5ldyB4KGEsYyk7Yi5wdXRBbGwoaCk7cmV0dXJuIGJ9fXZhciB6PSJmdW5jdGlvbiI9PXR5cGVvZiBBcnJheS5wcm90b3R5cGUuc3BsaWNlP2Z1bmN0aW9uKGEsYyl7YS5zcGxpY2UoYywxKX06ZnVuY3Rpb24oYSxjKXt2YXIgaDtpZihjPT09YS5sZW5ndGgtMSlhLmxlbmd0aD0KYztlbHNle3ZhciBkPWEuc2xpY2UoYysxKTthLmxlbmd0aD1jO3ZhciBrPTA7Zm9yKGg9ZC5sZW5ndGg7azxoOysraylhW2Mra109ZFtrXX19LHA9digia2V5IikseT12KCJ2YWx1ZSIpO3EucHJvdG90eXBlPXtnZXRFcXVhbGl0eUZ1bmN0aW9uOmZ1bmN0aW9uKGEpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBhLmVxdWFscz9COkN9LGdldEVudHJ5Rm9yS2V5OnIoMSksZ2V0RW50cnlBbmRJbmRleEZvcktleTpyKDIpLHJlbW92ZUVudHJ5Rm9yS2V5OmZ1bmN0aW9uKGEpe3JldHVybihhPXRoaXMuZ2V0RW50cnlBbmRJbmRleEZvcktleShhKSk\/KHoodGhpcy5lbnRyaWVzLGFbMF0pLGFbMV0pOm51bGx9LGFkZEVudHJ5OmZ1bmN0aW9uKGEsYyl7dGhpcy5lbnRyaWVzW3RoaXMuZW50cmllcy5sZW5ndGhdPVthLGNdfSxrZXlzOncoMCksdmFsdWVzOncoMSksZ2V0RW50cmllczpmdW5jdGlvbihhKXtmb3IodmFyIGM9YS5sZW5ndGgsaD0wLGQ9dGhpcy5lbnRyaWVzLmxlbmd0aDtoPGQ7KytoKWFbYysKaF09dGhpcy5lbnRyaWVzW2hdLnNsaWNlKDApfSxjb250YWluc0tleTpyKDApLGNvbnRhaW5zVmFsdWU6ZnVuY3Rpb24oYSl7Zm9yKHZhciBjPXRoaXMuZW50cmllcy5sZW5ndGg7Yy0tOylpZihhPT09dGhpcy5lbnRyaWVzW2NdWzFdKXJldHVybiEwO3JldHVybiExfX07cmV0dXJuIHh9KCk7Ci8qKiAvbS9qcy9uZXdjYXJzLmpzICoqLwp2YXIgX19fZDJjX25ld2NhcnNqc19jX29uPSIyMDI2LTAxLTEyIDEwOjE0OjEyIjsndXNlIHN0cmljdCc7dmFyICRqc2NvbXA9JGpzY29tcHx8e307JGpzY29tcC5zY29wZT17fTskanNjb21wLkFTU1VNRV9FUzU9ITE7JGpzY29tcC5BU1NVTUVfTk9fTkFUSVZFX01BUD0hMTskanNjb21wLkFTU1VNRV9OT19OQVRJVkVfU0VUPSExOyRqc2NvbXAuU0lNUExFX0ZST1VORF9QT0xZRklMTD0hMTskanNjb21wLklTT0xBVEVfUE9MWUZJTExTPSExOyRqc2NvbXAuRk9SQ0VfUE9MWUZJTExfUFJPTUlTRT0hMTskanNjb21wLkZPUkNFX1BPTFlGSUxMX1BST01JU0VfV0hFTl9OT19VTkhBTkRMRURfUkVKRUNUSU9OPSExOyRqc2NvbXAuZGVmaW5lUHJvcGVydHk9JGpzY29tcC5BU1NVTUVfRVM1fHwiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmRlZmluZVByb3BlcnRpZXM\/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKGEsYixlKXtpZihhPT1BcnJheS5wcm90b3R5cGV8fGE9PU9iamVjdC5wcm90b3R5cGUpcmV0dXJuIGE7YVtiXT1lLnZhbHVlO3JldHVybiBhfTsKJGpzY29tcC5nZXRHbG9iYWw9ZnVuY3Rpb24oYSl7YT1bIm9iamVjdCI9PXR5cGVvZiBnbG9iYWxUaGlzJiZnbG9iYWxUaGlzLGEsIm9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdywib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYsIm9iamVjdCI9PXR5cGVvZiBnbG9iYWwmJmdsb2JhbF07Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDsrK2Ipe3ZhciBlPWFbYl07aWYoZSYmZS5NYXRoPT1NYXRoKXJldHVybiBlfXRocm93IEVycm9yKCJDYW5ub3QgZmluZCBnbG9iYWwgb2JqZWN0Iik7fTskanNjb21wLmdsb2JhbD0kanNjb21wLmdldEdsb2JhbCh0aGlzKTskanNjb21wLklTX1NZTUJPTF9OQVRJVkU9ImZ1bmN0aW9uIj09PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT09dHlwZW9mIFN5bWJvbCgieCIpOyRqc2NvbXAuVFJVU1RfRVM2X1BPTFlGSUxMUz0hJGpzY29tcC5JU09MQVRFX1BPTFlGSUxMU3x8JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFOyRqc2NvbXAucG9seWZpbGxzPXt9OwokanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbD17fTskanNjb21wLlBPTFlGSUxMX1BSRUZJWD0iJGpzY3AkIjt2YXIgJGpzY29tcCRsb29rdXBQb2x5ZmlsbGVkVmFsdWU9ZnVuY3Rpb24oYSxiKXt2YXIgZT0kanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbFtiXTtpZihudWxsPT1lKXJldHVybiBhW2JdO2U9YVtlXTtyZXR1cm4gdm9pZCAwIT09ZT9lOmFbYl19OyRqc2NvbXAucG9seWZpbGw9ZnVuY3Rpb24oYSxiLGUsZyl7YiYmKCRqc2NvbXAuSVNPTEFURV9QT0xZRklMTFM\/JGpzY29tcC5wb2x5ZmlsbElzb2xhdGVkKGEsYixlLGcpOiRqc2NvbXAucG9seWZpbGxVbmlzb2xhdGVkKGEsYixlLGcpKX07CiRqc2NvbXAucG9seWZpbGxVbmlzb2xhdGVkPWZ1bmN0aW9uKGEsYixlLGcpe2U9JGpzY29tcC5nbG9iYWw7YT1hLnNwbGl0KCIuIik7Zm9yKGc9MDtnPGEubGVuZ3RoLTE7ZysrKXt2YXIgaD1hW2ddO2lmKCEoaCBpbiBlKSlyZXR1cm47ZT1lW2hdfWE9YVthLmxlbmd0aC0xXTtnPWVbYV07Yj1iKGcpO2IhPWcmJm51bGwhPWImJiRqc2NvbXAuZGVmaW5lUHJvcGVydHkoZSxhLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Yn0pfTsKJGpzY29tcC5wb2x5ZmlsbElzb2xhdGVkPWZ1bmN0aW9uKGEsYixlLGcpe3ZhciBoPWEuc3BsaXQoIi4iKTthPTE9PT1oLmxlbmd0aDtnPWhbMF07Zz0hYSYmZyBpbiAkanNjb21wLnBvbHlmaWxscz8kanNjb21wLnBvbHlmaWxsczokanNjb21wLmdsb2JhbDtmb3IodmFyIG49MDtuPGgubGVuZ3RoLTE7bisrKXt2YXIgdD1oW25dO2lmKCEodCBpbiBnKSlyZXR1cm47Zz1nW3RdfWg9aFtoLmxlbmd0aC0xXTtlPSRqc2NvbXAuSVNfU1lNQk9MX05BVElWRSYmImVzNiI9PT1lP2dbaF06bnVsbDtiPWIoZSk7bnVsbCE9YiYmKGE\/JGpzY29tcC5kZWZpbmVQcm9wZXJ0eSgkanNjb21wLnBvbHlmaWxscyxoLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Yn0pOmIhPT1lJiYodm9pZCAwPT09JGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbaF0mJihlPTFFOSpNYXRoLnJhbmRvbSgpPj4+MCwkanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbFtoXT0kanNjb21wLklTX1NZTUJPTF9OQVRJVkU\/CiRqc2NvbXAuZ2xvYmFsLlN5bWJvbChoKTokanNjb21wLlBPTFlGSUxMX1BSRUZJWCtlKyIkIitoKSwkanNjb21wLmRlZmluZVByb3BlcnR5KGcsJGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbaF0se2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpifSkpKX07JGpzY29tcC51bmRlcnNjb3JlUHJvdG9DYW5CZVNldD1mdW5jdGlvbigpe3ZhciBhPXthOiEwfSxiPXt9O3RyeXtyZXR1cm4gYi5fX3Byb3RvX189YSxiLmF9Y2F0Y2goZSl7fXJldHVybiExfTsKJGpzY29tcC5zZXRQcm90b3R5cGVPZj0kanNjb21wLlRSVVNUX0VTNl9QT0xZRklMTFMmJiJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3Quc2V0UHJvdG90eXBlT2Y\/T2JqZWN0LnNldFByb3RvdHlwZU9mOiRqc2NvbXAudW5kZXJzY29yZVByb3RvQ2FuQmVTZXQoKT9mdW5jdGlvbihhLGIpe2EuX19wcm90b19fPWI7aWYoYS5fX3Byb3RvX18hPT1iKXRocm93IG5ldyBUeXBlRXJyb3IoYSsiIGlzIG5vdCBleHRlbnNpYmxlIik7cmV0dXJuIGF9Om51bGw7JGpzY29tcC5hcnJheUl0ZXJhdG9ySW1wbD1mdW5jdGlvbihhKXt2YXIgYj0wO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBiPGEubGVuZ3RoP3tkb25lOiExLHZhbHVlOmFbYisrXX06e2RvbmU6ITB9fX07JGpzY29tcC5hcnJheUl0ZXJhdG9yPWZ1bmN0aW9uKGEpe3JldHVybntuZXh0OiRqc2NvbXAuYXJyYXlJdGVyYXRvckltcGwoYSl9fTsKJGpzY29tcC5tYWtlSXRlcmF0b3I9ZnVuY3Rpb24oYSl7dmFyIGI9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvciYmYVtTeW1ib2wuaXRlcmF0b3JdO3JldHVybiBiP2IuY2FsbChhKTokanNjb21wLmFycmF5SXRlcmF0b3IoYSl9OyRqc2NvbXAuZ2VuZXJhdG9yPXt9OyRqc2NvbXAuZ2VuZXJhdG9yLmVuc3VyZUl0ZXJhdG9yUmVzdWx0SXNPYmplY3RfPWZ1bmN0aW9uKGEpe2lmKCEoYSBpbnN0YW5jZW9mIE9iamVjdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiSXRlcmF0b3IgcmVzdWx0ICIrYSsiIGlzIG5vdCBhbiBvYmplY3QiKTt9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0PWZ1bmN0aW9uKCl7dGhpcy5pc1J1bm5pbmdfPSExO3RoaXMueWllbGRBbGxJdGVyYXRvcl89bnVsbDt0aGlzLnlpZWxkUmVzdWx0PXZvaWQgMDt0aGlzLm5leHRBZGRyZXNzPTE7dGhpcy5maW5hbGx5QWRkcmVzc189dGhpcy5jYXRjaEFkZHJlc3NfPTA7dGhpcy5maW5hbGx5Q29udGV4dHNfPXRoaXMuYWJydXB0Q29tcGxldGlvbl89bnVsbH07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuc3RhcnRfPWZ1bmN0aW9uKCl7aWYodGhpcy5pc1J1bm5pbmdfKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTt0aGlzLmlzUnVubmluZ189ITB9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnN0b3BfPWZ1bmN0aW9uKCl7dGhpcy5pc1J1bm5pbmdfPSExfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuanVtcFRvRXJyb3JIYW5kbGVyXz1mdW5jdGlvbigpe3RoaXMubmV4dEFkZHJlc3M9dGhpcy5jYXRjaEFkZHJlc3NffHx0aGlzLmZpbmFsbHlBZGRyZXNzX307JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUubmV4dF89ZnVuY3Rpb24oYSl7dGhpcy55aWVsZFJlc3VsdD1hfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS50aHJvd189ZnVuY3Rpb24oYSl7dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz17ZXhjZXB0aW9uOmEsaXNFeGNlcHRpb246ITB9O3RoaXMuanVtcFRvRXJyb3JIYW5kbGVyXygpfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5yZXR1cm49ZnVuY3Rpb24oYSl7dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz17cmV0dXJuOmF9O3RoaXMubmV4dEFkZHJlc3M9dGhpcy5maW5hbGx5QWRkcmVzc199OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5qdW1wVGhyb3VnaEZpbmFsbHlCbG9ja3M9ZnVuY3Rpb24oYSl7dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz17anVtcFRvOmF9O3RoaXMubmV4dEFkZHJlc3M9dGhpcy5maW5hbGx5QWRkcmVzc199OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnlpZWxkPWZ1bmN0aW9uKGEsYil7dGhpcy5uZXh0QWRkcmVzcz1iO3JldHVybnt2YWx1ZTphfX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUueWllbGRBbGw9ZnVuY3Rpb24oYSxiKXthPSRqc2NvbXAubWFrZUl0ZXJhdG9yKGEpO3ZhciBlPWEubmV4dCgpOyRqc2NvbXAuZ2VuZXJhdG9yLmVuc3VyZUl0ZXJhdG9yUmVzdWx0SXNPYmplY3RfKGUpO2lmKGUuZG9uZSl0aGlzLnlpZWxkUmVzdWx0PWUudmFsdWUsdGhpcy5uZXh0QWRkcmVzcz1iO2Vsc2UgcmV0dXJuIHRoaXMueWllbGRBbGxJdGVyYXRvcl89YSx0aGlzLnlpZWxkKGUudmFsdWUsYil9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5qdW1wVG89ZnVuY3Rpb24oYSl7dGhpcy5uZXh0QWRkcmVzcz1hfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5qdW1wVG9FbmQ9ZnVuY3Rpb24oKXt0aGlzLm5leHRBZGRyZXNzPTB9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnNldENhdGNoRmluYWxseUJsb2Nrcz1mdW5jdGlvbihhLGIpe3RoaXMuY2F0Y2hBZGRyZXNzXz1hO3ZvaWQgMCE9YiYmKHRoaXMuZmluYWxseUFkZHJlc3NfPWIpfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5zZXRGaW5hbGx5QmxvY2s9ZnVuY3Rpb24oYSl7dGhpcy5jYXRjaEFkZHJlc3NfPTA7dGhpcy5maW5hbGx5QWRkcmVzc189YXx8MH07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUubGVhdmVUcnlCbG9jaz1mdW5jdGlvbihhLGIpe3RoaXMubmV4dEFkZHJlc3M9YTt0aGlzLmNhdGNoQWRkcmVzc189Ynx8MH07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmVudGVyQ2F0Y2hCbG9jaz1mdW5jdGlvbihhKXt0aGlzLmNhdGNoQWRkcmVzc189YXx8MDthPXRoaXMuYWJydXB0Q29tcGxldGlvbl8uZXhjZXB0aW9uO3RoaXMuYWJydXB0Q29tcGxldGlvbl89bnVsbDtyZXR1cm4gYX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuZW50ZXJGaW5hbGx5QmxvY2s9ZnVuY3Rpb24oYSxiLGUpe2U\/dGhpcy5maW5hbGx5Q29udGV4dHNfW2VdPXRoaXMuYWJydXB0Q29tcGxldGlvbl86dGhpcy5maW5hbGx5Q29udGV4dHNfPVt0aGlzLmFicnVwdENvbXBsZXRpb25fXTt0aGlzLmNhdGNoQWRkcmVzc189YXx8MDt0aGlzLmZpbmFsbHlBZGRyZXNzXz1ifHwwfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUubGVhdmVGaW5hbGx5QmxvY2s9ZnVuY3Rpb24oYSxiKXtiPXRoaXMuZmluYWxseUNvbnRleHRzXy5zcGxpY2UoYnx8MClbMF07aWYoYj10aGlzLmFicnVwdENvbXBsZXRpb25fPXRoaXMuYWJydXB0Q29tcGxldGlvbl98fGIpe2lmKGIuaXNFeGNlcHRpb24pcmV0dXJuIHRoaXMuanVtcFRvRXJyb3JIYW5kbGVyXygpO3ZvaWQgMCE9Yi5qdW1wVG8mJnRoaXMuZmluYWxseUFkZHJlc3NfPGIuanVtcFRvPyh0aGlzLm5leHRBZGRyZXNzPWIuanVtcFRvLHRoaXMuYWJydXB0Q29tcGxldGlvbl89bnVsbCk6dGhpcy5uZXh0QWRkcmVzcz10aGlzLmZpbmFsbHlBZGRyZXNzX31lbHNlIHRoaXMubmV4dEFkZHJlc3M9YX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuZm9ySW49ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyAkanNjb21wLmdlbmVyYXRvci5Db250ZXh0LlByb3BlcnR5SXRlcmF0b3IoYSl9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LlByb3BlcnR5SXRlcmF0b3I9ZnVuY3Rpb24oYSl7dGhpcy5vYmplY3RfPWE7dGhpcy5wcm9wZXJ0aWVzXz1bXTtmb3IodmFyIGIgaW4gYSl0aGlzLnByb3BlcnRpZXNfLnB1c2goYik7dGhpcy5wcm9wZXJ0aWVzXy5yZXZlcnNlKCl9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQuUHJvcGVydHlJdGVyYXRvci5wcm90b3R5cGUuZ2V0TmV4dD1mdW5jdGlvbigpe2Zvcig7MDx0aGlzLnByb3BlcnRpZXNfLmxlbmd0aDspe3ZhciBhPXRoaXMucHJvcGVydGllc18ucG9wKCk7aWYoYSBpbiB0aGlzLm9iamVjdF8pcmV0dXJuIGF9cmV0dXJuIG51bGx9OyRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV89ZnVuY3Rpb24oYSl7dGhpcy5jb250ZXh0Xz1uZXcgJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dDt0aGlzLnByb2dyYW1fPWF9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS5uZXh0Xz1mdW5jdGlvbihhKXt0aGlzLmNvbnRleHRfLnN0YXJ0XygpO2lmKHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl8pcmV0dXJuIHRoaXMueWllbGRBbGxTdGVwXyh0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfLm5leHQsYSx0aGlzLmNvbnRleHRfLm5leHRfKTt0aGlzLmNvbnRleHRfLm5leHRfKGEpO3JldHVybiB0aGlzLm5leHRTdGVwXygpfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUucmV0dXJuXz1mdW5jdGlvbihhKXt0aGlzLmNvbnRleHRfLnN0YXJ0XygpO3ZhciBiPXRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl87aWYoYilyZXR1cm4gdGhpcy55aWVsZEFsbFN0ZXBfKCJyZXR1cm4iaW4gYj9iWyJyZXR1cm4iXTpmdW5jdGlvbihlKXtyZXR1cm57dmFsdWU6ZSxkb25lOiEwfX0sYSx0aGlzLmNvbnRleHRfLnJldHVybik7dGhpcy5jb250ZXh0Xy5yZXR1cm4oYSk7cmV0dXJuIHRoaXMubmV4dFN0ZXBfKCl9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS50aHJvd189ZnVuY3Rpb24oYSl7dGhpcy5jb250ZXh0Xy5zdGFydF8oKTtpZih0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfKXJldHVybiB0aGlzLnlpZWxkQWxsU3RlcF8odGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yX1sidGhyb3ciXSxhLHRoaXMuY29udGV4dF8ubmV4dF8pO3RoaXMuY29udGV4dF8udGhyb3dfKGEpO3JldHVybiB0aGlzLm5leHRTdGVwXygpfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUueWllbGRBbGxTdGVwXz1mdW5jdGlvbihhLGIsZSl7dHJ5e3ZhciBnPWEuY2FsbCh0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfLGIpOyRqc2NvbXAuZ2VuZXJhdG9yLmVuc3VyZUl0ZXJhdG9yUmVzdWx0SXNPYmplY3RfKGcpO2lmKCFnLmRvbmUpcmV0dXJuIHRoaXMuY29udGV4dF8uc3RvcF8oKSxnO3ZhciBoPWcudmFsdWV9Y2F0Y2gobil7cmV0dXJuIHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl89bnVsbCx0aGlzLmNvbnRleHRfLnRocm93XyhuKSx0aGlzLm5leHRTdGVwXygpfXRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl89bnVsbDtlLmNhbGwodGhpcy5jb250ZXh0XyxoKTtyZXR1cm4gdGhpcy5uZXh0U3RlcF8oKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLm5leHRTdGVwXz1mdW5jdGlvbigpe2Zvcig7dGhpcy5jb250ZXh0Xy5uZXh0QWRkcmVzczspdHJ5e3ZhciBhPXRoaXMucHJvZ3JhbV8odGhpcy5jb250ZXh0Xyk7aWYoYSlyZXR1cm4gdGhpcy5jb250ZXh0Xy5zdG9wXygpLHt2YWx1ZTphLnZhbHVlLGRvbmU6ITF9fWNhdGNoKGIpe3RoaXMuY29udGV4dF8ueWllbGRSZXN1bHQ9dm9pZCAwLHRoaXMuY29udGV4dF8udGhyb3dfKGIpfXRoaXMuY29udGV4dF8uc3RvcF8oKTtpZih0aGlzLmNvbnRleHRfLmFicnVwdENvbXBsZXRpb25fKXthPXRoaXMuY29udGV4dF8uYWJydXB0Q29tcGxldGlvbl87dGhpcy5jb250ZXh0Xy5hYnJ1cHRDb21wbGV0aW9uXz1udWxsO2lmKGEuaXNFeGNlcHRpb24pdGhyb3cgYS5leGNlcHRpb247cmV0dXJue3ZhbHVlOmEucmV0dXJuLGRvbmU6ITB9fXJldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19OwokanNjb21wLmdlbmVyYXRvci5HZW5lcmF0b3JfPWZ1bmN0aW9uKGEpe3RoaXMubmV4dD1mdW5jdGlvbihiKXtyZXR1cm4gYS5uZXh0XyhiKX07dGhpcy50aHJvdz1mdW5jdGlvbihiKXtyZXR1cm4gYS50aHJvd18oYil9O3RoaXMucmV0dXJuPWZ1bmN0aW9uKGIpe3JldHVybiBhLnJldHVybl8oYil9O3RoaXNbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfX07JGpzY29tcC5nZW5lcmF0b3IuY3JlYXRlR2VuZXJhdG9yPWZ1bmN0aW9uKGEsYil7Yj1uZXcgJGpzY29tcC5nZW5lcmF0b3IuR2VuZXJhdG9yXyhuZXcgJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXyhiKSk7JGpzY29tcC5zZXRQcm90b3R5cGVPZiYmYS5wcm90b3R5cGUmJiRqc2NvbXAuc2V0UHJvdG90eXBlT2YoYixhLnByb3RvdHlwZSk7cmV0dXJuIGJ9OwokanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3I9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihnKXtyZXR1cm4gYS5uZXh0KGcpfWZ1bmN0aW9uIGUoZyl7cmV0dXJuIGEudGhyb3coZyl9cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGcsaCl7ZnVuY3Rpb24gbih0KXt0LmRvbmU\/Zyh0LnZhbHVlKTpQcm9taXNlLnJlc29sdmUodC52YWx1ZSkudGhlbihiLGUpLnRoZW4obixoKX1uKGEubmV4dCgpKX0pfTskanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3JGdW5jdGlvbj1mdW5jdGlvbihhKXtyZXR1cm4gJGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yKGEoKSl9OyRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvclByb2dyYW09ZnVuY3Rpb24oYSl7cmV0dXJuICRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvcihuZXcgJGpzY29tcC5nZW5lcmF0b3IuR2VuZXJhdG9yXyhuZXcgJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXyhhKSkpfTsKbGV0ICRqc2NvbXAkb3B0Y2hhaW4kdG1wMTkzNzM4OTg1OSQwOwpuZXdDYXJzPXtpc01vYmlsZToiMSI9PT0obnVsbD09KCRqc2NvbXAkb3B0Y2hhaW4kdG1wMTkzNzM4OTg1OSQwPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpc01vYmlsZSIpKT92b2lkIDA6JGpzY29tcCRvcHRjaGFpbiR0bXAxOTM3Mzg5ODU5JDAudmFsdWUpLGNvbnRhaW5lcjpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibmV3Y2FyQ29udGFpbmVyIikscmVzaXplTWFpbldpbmRvdzpmdW5jdGlvbigpe2lmKCFuZXdDYXJzLmlzTW9iaWxlKXt2YXIgYT0kKCIjcmlnaHRTaWRlIikuaGVpZ2h0KCktMzUsYj0kKCIjbmV3Y2FyQ29udGFpbmVyIikuaGVpZ2h0KCk7IWlzTmFOKGEpJiYhaXNOYU4oYikmJmE+YiYmKCQoIiNuZXdjYXJDb250YWluZXIiKS5oZWlnaHQoYSksJCgiI2Zvb3RlckRpdiIpLmNzcygicGFkZGluZyIsIjBweCIpKX19LHNldFBheW1lbnRUb29sdGlwczooKT0+e25ld0NhcnMuaXNNb2JpbGU\/JCgiLmRpdkNhcnNCb3hXcmFwcGVyIikuZWFjaChmdW5jdGlvbigpeyQodGhpcykuZmluZCgiLmRpdkNhclNpbmdsZU91dGVyQm94IC5kaXZDYXJQYXltZW50Q29udGFpbmVyIC5wYXltZW50SW5mb0J1YmJsZSAucGF5bWVudFRvb2x0aXAiKS5lYWNoKGZ1bmN0aW9uKCl7dHJ5e3ZhciBhPSQodGhpcykuYXR0cigiZGF0YS10b29sdGlwIik7CiQodGhpcykuZGFya1Rvb2x0aXAoe2NvbnRlbnQ6YSxncmF2aXR5OiJlYXN0Iix0aGVtZToibGlnaHQiLHRyaWdnZXI6ImNsaWNrIixhbmltYXRpb246ImZsaXBJbiJ9KX1jYXRjaChiKXt9fSl9KTokKCIuZGl2Q2Fyc0JveFdyYXBwZXIiKS5lYWNoKGZ1bmN0aW9uKCl7JCh0aGlzKS5maW5kKCIuZGl2Q2FyU2luZ2xlT3V0ZXJCb3giKS5vbigibW91c2VlbnRlciBtb3VzZWxlYXZlIixmdW5jdGlvbihhKXt0cnl7aWYoJCh0aGlzKS5kYXRhKCJ0b29sdGlwQ3JlYXRlZCIpKXJldHVybiExOyQodGhpcykuZGF0YSgidG9vbHRpcENyZWF0ZWQiLDEpOyQodGhpcykuZmluZCgiLmRpdkNhclBheW1lbnRDb250YWluZXJUb29sdGlwIikuZGFya1Rvb2x0aXAoe2dyYXZpdHk6Indlc3QiLHRoZW1lOiJsaWdodCIsdHJpZ2dlcjoiaG92ZXIiLGFuaW1hdGlvbjoiZmxpcEluIn0pfWNhdGNoKGIpe319KX0pfSxuZXdDYXJzRmlsdGVyOigpPT57ZnVuY3Rpb24gYSgpe3ZhciBjPSQoIi5kaXZDYXRlZ29yeUJveFdyYXBwZXIiKS5tYXAoZnVuY3Rpb24oZCwKZil7cmV0dXJuIHBhcnNlSW50KCQoZikuYXR0cigibmJWaXNpYmxlIikpfSkuZ2V0KCkucmVkdWNlKGZ1bmN0aW9uKGQsZil7cmV0dXJuIGQrZn0sMCk7cmV0dXJue2ZpbHRlcnM6e3N0YXR1czoiTmV3Iixib2R5U3R5bGU6JCgiaW5wdXQ6Y2hlY2tlZC5maWx0ZXJDaGVjay5jYXRlZ29yeSIpLm1hcChmdW5jdGlvbihkLGYpe3JldHVybiAkKGYpLnZhbCgpfSkuZ2V0KCksZnVlbFR5cGU6JCgiaW5wdXQ6Y2hlY2tlZC5maWx0ZXJDaGVjay5mdWVsdHlwZSIpLm1hcChmdW5jdGlvbihkLGYpe3JldHVybiAkKGYpLmRhdGEoImVzc2VuY2UiKX0pLmdldCgpLGRyaXZlVHJhaW46JCgiaW5wdXQ6Y2hlY2tlZC5maWx0ZXJDaGVjay5kcml2ZXRyYWluIikubWFwKGZ1bmN0aW9uKGQsZil7cmV0dXJuICQoZikuZGF0YSgiZHJpdmV0cmFpbiIpfSkuZ2V0KCksbWF4UHJpY2U6cC5tYXgsbWluUHJpY2U6cC5taW59LHZlaGljbGVDb3VudDpjfX12YXIgYj0hMTt0cnl7InVuZGVmaW5lZCI9PWpRdWVyeS5icm93c2VyLm1zaWU\/CmI9ITA6OTw9cGFyc2VJbnQoalF1ZXJ5LmJyb3dzZXIudmVyc2lvbiwxMCkmJihiPSEwKX1jYXRjaChjKXt9aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBib3hCbG9ja3N8fDE+Ym94QmxvY2tzLmxlbmd0aCliPSExOy0xPHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImNhbWlvbnMtY29tbWVyY2lhdXgiKSYmKGI9ITEpO2lmKGIpe3ZhciBlPW5ld0NhcnMuZ2V0RmlsdGVyKCk7Yj1nZXRVcmxWYXJzKCk7dmFyIGc9Yi5oYXNPd25Qcm9wZXJ0eSgiYm9keSIpLGg9Yi5oYXNPd25Qcm9wZXJ0eSgiZnVlbCIpO25ld0NhcnMuY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoIi5maWx0ZXJDaGVjayIpLmZvckVhY2goYz0+e2cmJmMuY2xhc3NMaXN0LmNvbnRhaW5zKCJjYXRlZ29yeSIpfHxoJiZjLmNsYXNzTGlzdC5jb250YWlucygiZnVlbHR5cGUiKXx8KGMuY2hlY2tlZD0hZS5oYXNPd25Qcm9wZXJ0eShjLmlkKXx8ITA9PT1lW2MuaWRdKX0pOyQoIiNmaWx0ZXJNYWluQm94Iikuc2hvdygpOwpmb3IodmFyIG4gaW4gYm94QmxvY2tzKXtiPTA7Zm9yKHZhciB0IGluIGJveEJsb2Nrc1tuXSliKys7JCgiI2NsYXNzIituKyJfY29udGFpbmVyIikuYXR0cigibmJWaXNpYmxlIixiKX0kKCIuZmlsdGVyQ2hlY2siKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7dmFyIGM9JCh0aGlzKTtuZXdDYXJzLnNldEZpbHRlcihjLmF0dHIoImlkIiksYy5pcygiOmNoZWNrZWQiKSk7c2V0VGltZW91dCh4LDEwMCk7aWYoYy5oYXNDbGFzcygiY2F0ZWdvcnkiKSl7dmFyIGQ9Yy52YWwoKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7QihkKX0sMTAwKX19KTskKCIucmFkaW9Tb3J0Iikub24oImNsaWNrIixmdW5jdGlvbigpe0MoJCh0aGlzKS52YWwoKSl9KTskKCIuZmlsdGVyU3BhbiIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXt2YXIgYz0kKHRoaXMpO25ld0NhcnMuc2V0RmlsdGVyKCJmaWx0ZXJTcGFuIixjLmF0dHIoInJlbCIpKTtjPSIjIitjLmF0dHIoInJlbCIpOyQoYykudHJpZ2dlcigiY2xpY2siKX0pOwp2YXIgeT0iIix3PSIiLEc9ZnVuY3Rpb24oYyxkKXtyZXR1cm4gYy5jb25zbz09ZC5jb25zbz8wOmMuY29uc28+ZC5jb25zbz8xOi0xfSxIPWZ1bmN0aW9uKGMsZCl7cmV0dXJuIGMuY29uc289PWQuY29uc28\/MDpjLmNvbnNvPmQuY29uc28\/LTE6MX0sST1mdW5jdGlvbihjLGQpe3JldHVybiBjLnByaWNlPT1kLnByaWNlPzA6Yy5wcmljZT5kLnByaWNlPzE6LTF9LEo9ZnVuY3Rpb24oYyxkKXtyZXR1cm4gYy5wcmljZT09ZC5wcmljZT8wOmMucHJpY2U+ZC5wcmljZT8tMToxfSxLPWZ1bmN0aW9uKGMsZCl7cmV0dXJuIGMuY2FyTW9kZWw9PWQuY2FyTW9kZWw\/Yy55ZWFyPmQueWVhcj8tMTpjLnllYXI8ZC55ZWFyPzE6MDpjLmNhck1vZGVsPmQuY2FyTW9kZWw\/MTotMX0sQz1mdW5jdGlvbihjLGQpe3c9InVuZGVmaW5lZCIhPT10eXBlb2YgZD9kOnk9PWM\/IkFzYyI9PXc\/IkRlc2MiOiJBc2MiOiJBc2MiO3k9YztuZXdDYXJzLnNldEZpbHRlcigic29ydEJ5Iix5KTtuZXdDYXJzLnNldEZpbHRlcigic29ydERpciIsCncpO2Zvcih2YXIgZiBpbiBib3hCbG9ja3Mpe2M9MTtkPVtdO2Zvcih2YXIgbSBpbiBib3hCbG9ja3NbZl0pe3ZhciBsPWJveEJsb2Nrc1tmXVttXTtsLnZpc2libGUmJihkW2QubGVuZ3RoXT1sKX1zd2l0Y2goeSl7Y2FzZSAicHJpY2UiOiJBc2MiPT13P2Quc29ydChJKTpkLnNvcnQoSik7YnJlYWs7Y2FzZSAibW9kZWwiOmQuc29ydChLKTticmVhaztjYXNlICJjb25zbyI6IkFzYyI9PXc\/ZC5zb3J0KEcpOmQuc29ydChIKX1kLnNvcnQoZnVuY3Rpb24oayx1KXtyZXR1cm4gay5zcGVjaWFsT3JkZXI9PXUuc3BlY2lhbE9yZGVyPzA6ay5zcGVjaWFsT3JkZXI+dS5zcGVjaWFsT3JkZXI\/MTotMX0pO2ZvcihsPTA7bDxkLmxlbmd0aDtsKyspZFtsXS52aXNpYmxlJiYoZFtsXS5wb3NpdGlvbiE9bCsxJiYoZFtsXS5wb3NpdGlvbj1sKzEsQShmLCJmYnhfIitmKyJfIitkW2xdLmlkLCJtb3ZlIixsKzEpKSxjKyspfX0sTD1mdW5jdGlvbigpe2Zvcih2YXIgYyBpbiBib3hCbG9ja3Mpe3ZhciBkPQoxLGY7Zm9yKGYgaW4gYm94QmxvY2tzW2NdKXt2YXIgbT1ib3hCbG9ja3NbY11bZl07bS52aXNpYmxlJiZtLnBvc2l0aW9uIT1kJiYobS5wb3NpdGlvbj1kLEEoYyxmLCJtb3ZlIixkKSk7QShjLGYsbS52aXNpYmxlPyJzaG93IjoiaGlkZSIpO20udmlzaWJsZSYmZCsrfSQoIiNjbGFzcyIrYysiX2NvbnRhaW5lciIpLmF0dHIoIm5iVmlzaWJsZSIsZC0xKX19LEQ9ZnVuY3Rpb24oYyxkKXtmb3IodmFyIGY9MCxtPTE7bTxkO20rKyl7dmFyIGw9JCgiIyIrYyttKTswPGwubGVuZ3RoJiZsLnByb3AoImNoZWNrZWQiKSYmKGYrPU1hdGgucG93KDIsbS0xKSl9cmV0dXJuIGZ9LHg9ZnVuY3Rpb24oKXt2YXIgYz1EKCJmaWx0ZXJFc3NlbmNlQ2hlY2siLDYpLGQ9RCgiZmlsdGVyRHJpdmVUcmFpbkNoZWNrIiw0KSxmPVtdLG09W107JCgiLmZpbHRlckNoZWNrLmNhdGVnb3J5IikuZWFjaChmdW5jdGlvbigpeyQodGhpcykuaXMoIjpjaGVja2VkIikmJmYucHVzaCgkKHRoaXMpLnZhbCgpKX0pO3ZhciBsPQohMTswPCQoIi5maWx0ZXJDaGVjay5jYXJNYWtlIikubGVuZ3RoJiYoJCgiLmZpbHRlckNoZWNrLmNhck1ha2UiKS5lYWNoKGZ1bmN0aW9uKCl7JCh0aGlzKS5pcygiOmNoZWNrZWQiKSYmbS5wdXNoKCQodGhpcykudmFsKCkpfSksbD0hMCk7Zm9yKHZhciBrIGluIGJveEJsb2Nrcyl7dmFyIHU9MCxxO2ZvcihxIGluIGJveEJsb2Nrc1trXSl7dmFyIE09cGFyc2VJbnQoYm94QmxvY2tzW2tdW3FdLmZ1ZWwsMTApLHY9ITE7dj0odj0odj0odj0odj0hKHBhcnNlSW50KGJveEJsb2Nrc1trXVtxXS5kcml2ZXRyYWluLDEwKSZkKSl8fCEoTSZjKSl8fCEoIWJveEJsb2Nrc1trXVtxXS5jYXJDYXRlZ29yeXx8LTE8JC5pbkFycmF5KGJveEJsb2Nrc1trXVtxXS5jYXJDYXRlZ29yeSxmKSkpfHwhKCExPT09bHx8LTE8JC5pbkFycmF5KGJveEJsb2Nrc1trXVtxXS5jYXJNYWtlLG0pJiZsKSl8fCEoMD09Ym94QmxvY2tzW2tdW3FdLnByaWNlfHxib3hCbG9ja3Nba11bcV0ucHJpY2U8PXAubWF4JiYKYm94QmxvY2tzW2tdW3FdLnByaWNlPj1wLm1pbik7Ym94QmxvY2tzW2tdW3FdLnZpc2libGU9IXY7Ym94QmxvY2tzW2tdW3FdLnZpc2libGUmJnUrK30kKCIjY2xhc3MiK2srIl9jb250YWluZXIiKS5hdHRyKCJuYlZpc2libGUiLHUpO0Ioayl9TCgpOyIxIj09PSQoImJvZHkiKS5kYXRhKCJmaWx0ZXJzOmxvYWQiKSYmJCgiYm9keSIpLnRyaWdnZXIoJC5leHRlbmQoe3R5cGU6ImZpbHRlcnM6Y2hhbmdlIn0sYSgpKSl9LEI9ZnVuY3Rpb24oYyl7dmFyIGQ9JCgiI2NsYXNzIitjKyJfY29udGFpbmVyIik7aWYoMDxkLmxlbmd0aCl7dmFyIGY9JCgiI3Nob3dDbGFzc18iK2MpOzA9PT1mLmxlbmd0aCYmKGY9JCgnaW5wdXRbZGF0YS1lc3NlbmNlPSInK2MrJyJdJykpO2Y9Zi5pcygiOmNoZWNrZWQiKTswPHBhcnNlSW50KGQuYXR0cigibmJWaXNpYmxlIiksMTApPyhmJiYoZC5hdHRyKCJzdGF0ZSIsIm9wZW4iKSxkLmZhZGVJbig2MDApLG5ld0NhcnMuaXNNb2JpbGV8fChmPU1hdGguY2VpbChwYXJzZUludChkLmF0dHIoIm5iVmlzaWJsZSIpLAoxMCkvMyksJCgiLkNMQVNTXyIrYykuYW5pbWF0ZSh7aGVpZ2h0OnIuaGVpZ2h0KmYrInB4In0sNjAwKSksZj0hMCksZnx8RShkKSk6RShkKX19LEU9ZnVuY3Rpb24oYyl7Yy5hdHRyKCJzdGF0ZSIsImNsb3NlIik7Yy5mYWRlT3V0KDYwMCk7cmV0dXJuITB9LEE9ZnVuY3Rpb24oYyxkLGYsbSxsKXtpZigiaGlkZSI9PWYpJCgiIyIrZCkuYW5pbWF0ZSh7b3BhY2l0eTowfSw2MDAsZnVuY3Rpb24oKXskKHRoaXMpLmF0dHIoImlzLWJveC12aXNpYmxlIiwwKS5jc3MoInZpc2liaWxpdHkiLCJoaWRkZW4iKX0pLGJveEJsb2Nrc1tjXVtkXS52aXNpYmxlPSExLHNpdGVQYWdlLmlzTW9iaWxlJiYobmV3Q2Fycy5jb250YWluZXIucXVlcnlTZWxlY3RvcihgIyR7ZH1gKS5oaWRkZW49ITApO2Vsc2UgaWYoInNob3ciPT1mKSQoIiMiK2QpLmNzcygidmlzaWJpbGl0eSIsInZpc2libGUiKS5hbmltYXRlKHtvcGFjaXR5OjF9LDYwMCxmdW5jdGlvbigpeyQodGhpcykuYXR0cigiaXMtYm94LXZpc2libGUiLAoxKX0pLGJveEJsb2Nrc1tjXVtkXS52aXNpYmxlPSEwLHNpdGVQYWdlLmlzTW9iaWxlJiYobmV3Q2Fycy5jb250YWluZXIucXVlcnlTZWxlY3RvcihgIyR7ZH1gKS5oaWRkZW49ITEpO2Vsc2UgaWYoIXNpdGVQYWdlLmlzTW9iaWxlKXt2YXIgaz0kKCIuZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIiKS53aWR0aCgpO2M9TWF0aC5mbG9vcihrL3Iud2lkdGgpO2Y9Ym94UG9zaXRpb25zW2RdO2s9TWF0aC5mbG9vcihrL2MpO2M9e2xlZnQ6Iis9IisoKG0tMSklYyprLShmLTEpJWMqaykrInB4Iix0b3A6Iis9IisoTWF0aC5mbG9vcigobS0xKS9jKSpyLmhlaWdodC1NYXRoLmZsb29yKChmLTEpL2MpKnIuaGVpZ2h0KSsicHgifTt2b2lkIDA9PWw\/JCgiIyIrZCkuYWRkQ2xhc3MoIk1vdmluZ0JveCIpLmFuaW1hdGUoYyw2MDAsZnVuY3Rpb24oKXskKHRoaXMpLnJlbW92ZUNsYXNzKCJNb3ZpbmdCb3giKX0pOiQoIiMiK2QpLmFkZENsYXNzKCJNb3ZpbmdCb3giKS5hbmltYXRlKGMsNjAwLGZ1bmN0aW9uKCl7JCh0aGlzKS5yZW1vdmVDbGFzcygiTW92aW5nQm94Iik7CmV2YWwobCl9KTtib3hQb3NpdGlvbnNbZF09bX19LEY9ZnVuY3Rpb24oKXt2YXIgYz17d2lkdGg6MCxoZWlnaHQ6MH07JCgnLmRpdkNhclNpbmdsZU91dGVyQm94W2lzLWJveC12aXNpYmxlPSIxIl06Zmlyc3QnKS5lYWNoKGZ1bmN0aW9uKCl7Yy53aWR0aD0kKHRoaXMpLm91dGVyV2lkdGgoITApO2MuaGVpZ2h0PSQodGhpcykub3V0ZXJIZWlnaHQoITApfSk7cmV0dXJuIGN9LHo9OTYwOyQoIi5kaXZDYXJTaW5nbGVPdXRlckJveCIpLmF0dHIoImlzLWJveC12aXNpYmxlIiwxKTt2YXIgcj1GKCk7MDwkKCJCT0RZLmlzRnVsbFdpZHRoUGFnZSIpLmxlbmd0aCYmMDwkKCJCT0RZLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQiKS5sZW5ndGgmJigxMzAwPHdpbmRvdy5pbm5lcldpZHRoJiYoej0xMjAwKSwkKHdpbmRvdykub24oInJlc2l6ZSIsZnVuY3Rpb24oKXt2YXIgYz16O3o9MTMwMDx3aW5kb3cuaW5uZXJXaWR0aD8xMjAwOjk2MDtjIT16JiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7TigpfSl9KSk7CnZhciBOPWZ1bmN0aW9uKCl7dmFyIGM9cjtyPUYoKTskKCIuZGl2Q2Fyc0JveFdyYXBwZXIiKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9MDskKHRoaXMpLmZpbmQoIi5kaXZDYXJTaW5nbGVPdXRlckJveCIpLmVhY2goZnVuY3Rpb24oKXt2YXIgZj1wYXJzZUludCgkKHRoaXMpLmNzcygidG9wIikpLG09cGFyc2VJbnQoJCh0aGlzKS5jc3MoImxlZnQiKSk7MD09PWYmJjA9PT1tfHwkKHRoaXMpLmNzcyh7dG9wOnIuaGVpZ2h0KihmL3BhcnNlSW50KGMuaGVpZ2h0KSkrInB4In0pLmNzcyh7bGVmdDpyLndpZHRoKihtL3BhcnNlSW50KGMud2lkdGgpKSsicHgifSk7MT09PXBhcnNlSW50KCQodGhpcykuYXR0cigiaXMtYm94LXZpc2libGUiKSkmJmQrK30pO2QmJiQodGhpcykuY3NzKHtoZWlnaHQ6TWF0aC5mbG9vcihkLzMpKnIuaGVpZ2h0KyhkJTM\/ci5oZWlnaHQ6MCkrInB4In0pfSl9LHA9e21pbjowLG1heDoxRTZ9OyhmdW5jdGlvbigpe3ZhciBjPSQoIiNwcmljZVJhbmdlU2xpZGVyRmlsdGVyQ29udGFpbmVyIik7CmlmKDA8Yy5sZW5ndGgpe3ZhciBkPWMuZmluZCgiZGl2LnJhbmdlLXNsaWRlciIpO2lmKDA8ZC5sZW5ndGgpe3ZhciBmPW51bGwsbT1mdW5jdGlvbihsLGspe3A9e21pbjpEMkNVdGlscy5OdW1iZXIucm91bmREb3duKGsudmFsdWVzWzBdLDFFMyksbWF4OkQyQ1V0aWxzLk51bWJlci5yb3VuZFVwKGsudmFsdWVzWzFdLDFFMyl9O251bGwhPT1sJiZuZXdDYXJzLnNldEZpbHRlcigic2V0U2hvd2VkVmFsdWVzIixwLm1pbisiOiIrcC5tYXgpO2MuZmluZCgic3Bhbi5wcmljZS1taW4iKS50ZXh0KHAubWluLnRvTG9jYWxlU3RyaW5nKCkpO2MuZmluZCgic3Bhbi5wcmljZS1tYXgiKS50ZXh0KHAubWF4LnRvTG9jYWxlU3RyaW5nKCkpO2NsZWFyVGltZW91dChmKTtmPXNldFRpbWVvdXQoZnVuY3Rpb24oKXt4KCl9LDUwMCl9O3A9e21pbjpEMkNVdGlscy5OdW1iZXIucm91bmREb3duKGQuYXR0cigiYXR0ci1wcmljZS1taW4iKSksbWF4OkQyQ1V0aWxzLk51bWJlci5yb3VuZERvd24oZC5hdHRyKCJhdHRyLXByaWNlLW1heCIpKX07CmQuc2xpZGVyKHtyYW5nZTohMCxtaW46cC5taW4sbWF4OnAubWF4LHNsaWRlOm0sY2hhbmdlOm0sY3JlYXRlOmZ1bmN0aW9uKGwsayl7bD1uZXdDYXJzLmdldEZpbHRlcigpO2s9W3AubWluLHAubWF4XTsic3RyaW5nIj09PXR5cGVvZiBsLnNldFNob3dlZFZhbHVlcyYmKGs9bC5zZXRTaG93ZWRWYWx1ZXMuc3BsaXQoIjoiKSk7ZC5zbGlkZXIoInZhbHVlcyIsayk7bShudWxsLHt2YWx1ZXM6a30pO3NldFRpbWVvdXQoZnVuY3Rpb24oKXskKCJib2R5IikudHJpZ2dlcigkLmV4dGVuZCh7dHlwZToiZmlsdGVyczpsb2FkIn0sYSgpKSl9LDNFMyl9fSl9fX0pKCk7c2V0VGltZW91dChmdW5jdGlvbigpe3ZhciBjPSQoIiNzb3J0QnkiKTt2YXIgZD0kKCIjc29ydERpciIpLGY9Im1vZGVsIjt2YXIgbT0iQXNjIjt2YXIgbD17bW9kZWw6InJhZGlvTW9kbGUiLHByaWNlOiJyYWRpb1ByaWNlIixjb25zbzoicmFkaW9Db25zbyJ9O2MubGVuZ3RoJiZkLmxlbmd0aCYmKGY9Yy52YWwoKSxtPWQudmFsKCkpOwplJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBsW2Uuc29ydEJ5XT8oYz1lLnNvcnRCeSxtPWUuc29ydERpcik6Yz1mO3RyeXt2YXIgaz0kKCIjIitsW2NdKTtrLmxlbmd0aCYmay5wcm9wKCJjaGVja2VkIiwiY2hlY2tlZCIpO0MoYyxtKX1jYXRjaCh1KXt9fSw1MDApO2lmKCQoIiN0b2dnbGVGaWx0ZXJCdG4iKS5sZW5ndGgpJCgiI3RvZ2dsZUZpbHRlckJ0biIpLm9uKCJjbGljayB0YXAiLGZ1bmN0aW9uKCl7JCgiI3NpZGVTaWRlYmFyRmlsdGVyIikubGVuZ3RoJiYoJCgiI3NpZGVTaWRlYmFyRmlsdGVyIikuaGFzQ2xhc3MoIm9wZW4iKT8kKCIjc2lkZVNpZGViYXJGaWx0ZXIiKS5yZW1vdmVDbGFzcygib3BlbiIpOiQoIiNzaWRlU2lkZWJhckZpbHRlciIpLmFkZENsYXNzKCJvcGVuIikpfSk7aWYoJCgiI2Nsb3NlU2lkZWJhckJ0biIpLmxlbmd0aCkkKCIjY2xvc2VTaWRlYmFyQnRuIikub24oImNsaWNrIHRhcCIsZnVuY3Rpb24oKXskKCIjc2lkZVNpZGViYXJGaWx0ZXIiKS5sZW5ndGgmJgokKCIjc2lkZVNpZGViYXJGaWx0ZXIiKS5oYXNDbGFzcygib3BlbiIpJiYkKCIjc2lkZVNpZGViYXJGaWx0ZXIiKS5yZW1vdmVDbGFzcygib3BlbiIpfSk7JCgiLnNlbGVjdFRvZ2dsZVdyYXBwZXJDYXJNYWtlIikubGVuZ3RoJiYoJCgiI3NlbGVjdEFsbEJ0bkNhck1ha2UiKS5vbigiY2xpY2sgdGFwIixmdW5jdGlvbigpeyQoIi5maWx0ZXJDaGVjay5jYXJNYWtlIikucHJvcCgiY2hlY2tlZCIsITApO3NldFRpbWVvdXQoeCwxMDApfSksJCgiI3Vuc2VsZWN0QWxsQnRuQ2FyTWFrZSIpLm9uKCJjbGljayB0YXAiLGZ1bmN0aW9uKCl7JCgiLmZpbHRlckNoZWNrLmNhck1ha2UiKS5wcm9wKCJjaGVja2VkIiwhMSk7c2V0VGltZW91dCh4LDEwMCl9KSl9fSxzZXRGaWx0ZXI6KGEsYik9Pnt2YXIgZT17fSxnPV9sb2NhbFN0b3JhZ2VHZXQoIm5ld1N2cEZpbHRlciIpO251bGwhPWcmJiJvYmplY3QiIT10eXBlb2YgZyYmKGU9SlNPTi5wYXJzZShnKSk7Zz13aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7CnZvaWQgMD09ZVtnXSYmKGVbZ109e30pO2VbZ11bYV09YjtfbG9jYWxTdG9yYWdlU2V0KCJuZXdTdnBGaWx0ZXIiLEpTT04uc3RyaW5naWZ5KGUpKX0sZ2V0RmlsdGVyOigpPT57bGV0IGE9ITE7dmFyIGI9X2xvY2FsU3RvcmFnZUdldCgibmV3U3ZwRmlsdGVyIik7bGV0IGU9e307bnVsbCE9YiYmIm9iamVjdCIhPXR5cGVvZiBiJiYoZT1KU09OLnBhcnNlKGIpKTtiPXdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTt2b2lkIDAhPWVbYl0mJihhPWVbYl0pO3JldHVybiBhfSxzZXRQcmljZVRvb2xUaXBzOigpPT57bmV3Q2Fycy5pc01vYmlsZXx8ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmNhclByaWNlSW5pdGlhbFRvb2xUaXBJY29uIikuZm9yRWFjaChhPT57bGV0IGI9YS5kYXRhc2V0LnRvb2x0aXA7JChhKS5kYXJrVG9vbHRpcCh7Y29udGVudDpiLGdyYXZpdHk6Indlc3QiLHRoZW1lOiJsaWdodCIsdHJpZ2dlcjoiaG92ZXIiLGFuaW1hdGlvbjoiZmxpcEluIn0pfSl9LHNldEV2ZW50czooKT0+CntuZXdDYXJzLmlzTW9iaWxlfHwoJCgiaW1nW2Vycm9yaW1nXSIpLm9uKCJlcnJvciIsZnVuY3Rpb24oKXt0aGlzLnNyYz0kKHRoaXMpLmF0dHIoImVycm9yaW1nIil9KSwkKCJpbWdbbXVsdGlpbWc9dHJ1ZV0iKS5lYWNoKGZ1bmN0aW9uKCl7JCh0aGlzKS5vbigibW91c2VvdmVyIixmdW5jdGlvbigpeyQodGhpcykuYXR0cigic3JjIiwkKHRoaXMpLmF0dHIoImNvbG9yaW1nIikpfSk7JCh0aGlzKS5vbigibW91c2VvdXQiLGZ1bmN0aW9uKCl7JCh0aGlzKS5hdHRyKCJzcmMiLCQodGhpcykuYXR0cigiYmxhY2tpbWciKSl9KX0pKX0sZ2V0SW52ZW50b3J5RGF0YTooKT0+e2NvbnN0IGE9KGIsZSk9PntsZXQgZz0iRlJFTkNIIj09ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbHVlPyJmciI6ImVuIjtmZXRjaChgLyR7Z30vYWpheC9nZXRJbnZlbnRvcnlEYXRhYCx7bWV0aG9kOiJQT1NUIixoZWFkZXJzOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24iLAoiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyIsY2hhcnNldDoiVVRGLTgifSxib2R5Om5ldyBVUkxTZWFyY2hQYXJhbXMoYil9KS50aGVuKGg9PntpZigidW5kZWZpbmVkIiE9dHlwZW9mIGgmJiEwPT09aC5vayYmMjAwPT1oLnN0YXR1cylyZXR1cm4gaC5qc29uKCl9KS50aGVuKGg9PntpZigidW5kZWZpbmVkIiE9dHlwZW9mIGguc3RhdHVzJiYic3VjY2VzcyI9PWguc3RhdHVzKXtsZXQgbj1oLmNvdW50O2g9aC51cmw7bGV0IHQ9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2luU3RvY2tMYWJlbCIpLnZhbHVlOzA8biYmKGUucGFyZW50Tm9kZS5pbnNlcnRBZGphY2VudEhUTUwoImJlZm9yZWVuZCIsYDxhIGhyZWY9IiR7aH0iPiR7bn0gJHt0fTwvYT5gKSxlLnBhcmVudE5vZGUuaGlkZGVuPSExKX19KS5jYXRjaChmdW5jdGlvbihoKXt9KX07ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaW5wdXRbZGF0YS10eXBlPSJpbnZkYXRhIl0nKS5mb3JFYWNoKGI9Pgp7YSh7bWFrZTpiLmRhdGFzZXQubWFrZSxtb2RlbDpiLmRhdGFzZXQubW9kZWwseWVhcjpiLmRhdGFzZXQueWVhcixzdHlsZWlkczpiLmRhdGFzZXQuc3R5bGVpZHMsaHlicmlkOmIuZGF0YXNldC5oeWJyaWR9LGIpfSl9LGdldFBheW1lbnREYXRhOigpPT57Y29uc3QgYT0oYixlLGcpPT4kanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3JGdW5jdGlvbihmdW5jdGlvbiooKXt0cnl7Y29uc3QgaD15aWVsZCh5aWVsZCBmZXRjaChgLyR7ZW5jb2RlVVJJQ29tcG9uZW50KGcpfS9hamF4L2dldFNob3dyb29tUGF5bWVudEh0bWxgLHttZXRob2Q6IlBPU1QiLGhlYWRlcnM6e0FjY2VwdDoiYXBwbGljYXRpb24vanNvbiIsIkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsiLGNoYXJzZXQ6IlVURi04In0sYm9keTpuZXcgVVJMU2VhcmNoUGFyYW1zKGIpfSkpLmpzb24oKTtlLnBhcmVudE5vZGUucXVlcnlTZWxlY3RvcigiLnNrZWxldG9uLWJsb2NrIikuaGlkZGVuPQohMDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGguc3RhdHVzJiYic3VjY2VzcyI9PWguc3RhdHVzKXtsZXQgbj1oLmNvbnRlbnQ7MDxuLmxlbmd0aCYmKGUucGFyZW50Tm9kZS5pbnNlcnRBZGphY2VudEhUTUwoImJlZm9yZWVuZCIsbiksZS5wYXJlbnROb2RlLmhpZGRlbj0hMSl9fWNhdGNoKGgpe319KTtkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dFtkYXRhLXR5cGU9InBheW1lbnRkYXRhIl0nKS5mb3JFYWNoKGI9PntsZXQgZT0iRlJFTkNIIj09ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbHVlPyJmciI6ImVuIjthKHtzdHlsZWlkOmIuZGF0YXNldC5zdHlsZWlkLHRpdGxlOmIuZGF0YXNldC50aXRsZSxocmVmOmIuZGF0YXNldC5ocmVmLGxpbmtTdHlsZTpiLmRhdGFzZXQubGlua3N0eWxlLGxpbmtDbGFzczpiLmRhdGFzZXQubGlua2NsYXNzLGNvbnRhaW5lckNsYXNzOmIuZGF0YXNldC5jb250YWluZXJjbGFzcyxwcm9tb1RleHQ6Yi5kYXRhc2V0LnByb21vdGV4dCwKbGFuZzplfSxiLGUpfSl9fTskKHdpbmRvdykub24oImxvYWQiLGZ1bmN0aW9uKCl7bmV3Q2Fycy5yZXNpemVNYWluV2luZG93KCl9KTtkb2NSZWFkeUFyci5wdXNoKCgpPT57bmV3Q2Fycy5nZXRQYXltZW50RGF0YSgpO25ld0NhcnMuc2V0UGF5bWVudFRvb2x0aXBzKCk7bmV3Q2Fycy5zZXRFdmVudHMoKTtuZXdDYXJzLm5ld0NhcnNGaWx0ZXIoKTtuZXdDYXJzLnNldFByaWNlVG9vbFRpcHMoKTtuZXdDYXJzLmdldEludmVudG9yeURhdGEoKX0pOwovKiogL20vanMvanF1ZXJ5LnVpLnRvdWNoLXB1bmNoLm1pbi5qcyAqKi8KLyohCiAqIGpRdWVyeSBVSSBUb3VjaCBQdW5jaCAwLjIuMwogKgogKiBDb3B5cmlnaHQgMjAxMeKAkzIwMTQsIERhdmUgRnVyZmVybwogKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgb3IgR1BMIFZlcnNpb24gMiBsaWNlbnNlcy4KICoKICogRGVwZW5kczoKICogIGpxdWVyeS51aS53aWRnZXQuanMKICogIGpxdWVyeS51aS5tb3VzZS5qcwogKi8KIWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGYoYSxiKXtpZighKGEub3JpZ2luYWxFdmVudC50b3VjaGVzLmxlbmd0aD4xKSl7YS5wcmV2ZW50RGVmYXVsdCgpO3ZhciBjPWEub3JpZ2luYWxFdmVudC5jaGFuZ2VkVG91Y2hlc1swXSxkPWRvY3VtZW50LmNyZWF0ZUV2ZW50KCJNb3VzZUV2ZW50cyIpO2QuaW5pdE1vdXNlRXZlbnQoYiwhMCwhMCx3aW5kb3csMSxjLnNjcmVlblgsYy5zY3JlZW5ZLGMuY2xpZW50WCxjLmNsaWVudFksITEsITEsITEsITEsMCxudWxsKSxhLnRhcmdldC5kaXNwYXRjaEV2ZW50KGQpfX1pZihhLnN1cHBvcnQudG91Y2g9Im9udG91Y2hlbmQiaW4gZG9jdW1lbnQsYS5zdXBwb3J0LnRvdWNoKXt2YXIgZSxiPWEudWkubW91c2UucHJvdG90eXBlLGM9Yi5fbW91c2VJbml0LGQ9Yi5fbW91c2VEZXN0cm95O2IuX3RvdWNoU3RhcnQ9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpczshZSYmYi5fbW91c2VDYXB0dXJlKGEub3JpZ2luYWxFdmVudC5jaGFuZ2VkVG91Y2hlc1swXSkmJihlPSEwLGIuX3RvdWNoTW92ZWQ9ITEsZihhLCJtb3VzZW92ZXIiKSxmKGEsIm1vdXNlbW92ZSIpLGYoYSwibW91c2Vkb3duIikpfSxiLl90b3VjaE1vdmU9ZnVuY3Rpb24oYSl7ZSYmKHRoaXMuX3RvdWNoTW92ZWQ9ITAsZihhLCJtb3VzZW1vdmUiKSl9LGIuX3RvdWNoRW5kPWZ1bmN0aW9uKGEpe2UmJihmKGEsIm1vdXNldXAiKSxmKGEsIm1vdXNlb3V0IiksdGhpcy5fdG91Y2hNb3ZlZHx8ZihhLCJjbGljayIpLGU9ITEpfSxiLl9tb3VzZUluaXQ9ZnVuY3Rpb24oKXt2YXIgYj10aGlzO2IuZWxlbWVudC5vbih7dG91Y2hzdGFydDphLnByb3h5KGIsIl90b3VjaFN0YXJ0IiksdG91Y2htb3ZlOmEucHJveHkoYiwiX3RvdWNoTW92ZSIpLHRvdWNoZW5kOmEucHJveHkoYiwiX3RvdWNoRW5kIil9KSxjLmNhbGwoYil9LGIuX21vdXNlRGVzdHJveT1mdW5jdGlvbigpe3ZhciBiPXRoaXM7Yi5lbGVtZW50Lm9mZih7dG91Y2hzdGFydDphLnByb3h5KGIsIl90b3VjaFN0YXJ0IiksdG91Y2htb3ZlOmEucHJveHkoYiwiX3RvdWNoTW92ZSIpLHRvdWNoZW5kOmEucHJveHkoYiwiX3RvdWNoRW5kIil9KSxkLmNhbGwoYil9fX0oalF1ZXJ5KTsvKkVPRiovOwovKiogL20vanMvcGF5bWVudENhbGN1bGF0b3IuanMgKiovCnZhciBfX19kMmNfcGF5bWVudENhbGN1bGF0b3Jqc19jX29uPSIyMDI2LTAyLTI3IDEwOjMwOjA3IjsndXNlIHN0cmljdCc7ZnVuY3Rpb24gcG9wdXBDYWxjdWxhdG9ySW5pdGlhbGl6ZWQoKXtmdW5jdGlvbiBhKCl7ZCYmZC5hYm9ydCgpO2NhbGNVcGRhdGVQYXltZW50WGhyJiYoY2FsY1VwZGF0ZVBheW1lbnRYaHIuYWJvcnQoKSxjYWxjVXBkYXRlUGF5bWVudFhocj1udWxsKTt2YXIgYj0oJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/Ii9lbiI6Ii9mciIpKyIvYWpheC9nZXRQYXltZW50RGF0YUZvclN0eWxlSUQ\/d3N3aWR0aD0wIixlPWdldFBvcENvbnRhaW5TZXR0aW5ncygpLGs9Z2V0T3B0aW9uc0Ftb3VudChlKSxsPWdldEFjY2Vzc29yaWVzQW1vdW50KGUpO2xldCBoPWdldFNlbGVjdGVkQWNjZXNzb3JpZXMoZSk7dmFyIHI9Z2V0UHJvdGVjdGlvblBsYW5zQW1vdW50KGUpLHE9ZS5oYXNPd25Qcm9wZXJ0eSgibm9UcmltU2VsZWN0IikmJiJ0cnVlIj09ZS5ub1RyaW1TZWxlY3R8fCJ1c2VkY2Fycy5odG1sIj09JCgiI1BBR0VJRCIpLnZhbCgpfHwKImNhcmRldGFpbC5odG1sIj09JCgiI1BBR0VJRCIpLnZhbCgpLHU9ZS5oYXNPd25Qcm9wZXJ0eSgic3RvY2tOdW1iZXIiKT9lLnN0b2NrTnVtYmVyOiIiLHk9ZS5oYXNPd25Qcm9wZXJ0eSgidmluIik\/ZS52aW46IiI7aWYocSYmIXUpe3ZhciBuPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwaG9uZXN0b2NrbnVtYmVyIik7biYmKHU9bi52YWx1ZXx8IiIpfXEmJiF5JiYobj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGhvbmV2aW4iKSkmJih5PW4udmFsdWV8fCIiKTtxJiYhZS5zdHlsZWlkJiYobj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWN0aXZlU3R5bGVJRCIpKSYmKGUuc3R5bGVpZD1uLnZhbHVlfHxlLnN0eWxlaWQpO2lmKCJjYXNoIj09JCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGUgLmFjdGl2ZVBheW1lbnRUeXBlIikuYXR0cigiZGF0YS10eXBlIikpZW5hYmxlQ2FzaE9wdGlvbigpO2Vsc2V7bj1wYXJzZUludCgkKCIucGF5bWVudENhbGN1bGF0b3JUcmFkZUluVmFsdWUiKS52YWwoKXx8CjApK3BhcnNlSW50KCQoIiNwYXltZW50Q2FsY3VsYXRvckRvd25QYXltZW50IikudmFsKCl8fDApO3ZhciB4PVtdO2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5jb25kaXRpb25hbC1yZWJhdGUtY2hlY2tib3giKS5mb3JFYWNoKGZ1bmN0aW9uKGYpe2YuY2hlY2tlZCYmKGY9Zi5nZXRBdHRyaWJ1dGUoImRhdGEtY29uZGl0aW9uYWwtcmViYXRlLWlkIikpJiZ4LnB1c2goZil9KTt2YXIgdD1udWxsO0Nvb2tpZXMuZ2V0KCJwYXltZW50Q2FsY3VsYXRvclNlbGVjdGVkT3B0aW9ucyIpJiYodD1Db29raWVzLmdldCgicGF5bWVudENhbGN1bGF0b3JTZWxlY3RlZE9wdGlvbnMiKS5zcGxpdCgiLSIpKTt2YXIgQT0kKCIjcGF5bWVudENhbGN1bGF0b3JLbUFsbG93YW5jZSIpLnZhbCgpOyFBJiZ0JiZ0WzNdJiYoQT10WzNdKTt2YXIgej0kKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50VHlwZSAuYWN0aXZlUGF5bWVudFR5cGUiKS5hdHRyKCJkYXRhLXR5cGUiKTsheiYmdCYmdFswXSYmKHo9CnRbMF0pOyEkKCIjcGF5bWVudENhbGN1bGF0b3JJbnRlcnZhbCIpLnZhbCgpJiZ0JiZ0WzJdJiYkKCIjcGF5bWVudENhbGN1bGF0b3JJbnRlcnZhbCIpLnZhbCh0WzJdKTtkPSQuYWpheCh7dXJsOmIsdHlwZToiUE9TVCIsZGF0YVR5cGU6IkpTT04iLGRhdGE6e3N0eWxlaWQ6ZS5zdHlsZWlkLHBheW1lbnRUeXBlOnosZG93bnBheW1lbnQ6bixvcHRpb25zQW1vdW50OmsscGF5bWVudEZyZXF1ZW5jeTokKCIjcGF5bWVudENhbGN1bGF0b3JJbnRlcnZhbCIpLnZhbCgpLGttQWxsb3dhbmNlOkEsb3B0aW9uczprLGlzSW52ZW50b3J5OnEsc246dSx2aW46eSxjb25kaXRpb25hbFJlYmF0ZUlkczp4LmpvaW4oIiwiKSxhY2Nlc3NvcmllczpsLHNlbGVjdGVkQWNjZXNzb3JpZXM6aCxwcm90ZWN0aW9uUGxhbnM6cn0sc3VjY2VzczpmdW5jdGlvbihmKXtmLmN1cnJlbnRQYXltZW50JiZmLmN1cnJlbnRQYXltZW50Lmxlbmd0aCYmKHNob3dQYXltZW50cyhmLmN1cnJlbnRQYXltZW50LGYucGF5bWVudEZlZXMsCmYubWFrZWlkLGYpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgdz0kKCcjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgaW5wdXRbbmFtZT0ic2VsZWN0ZWRQYXltZW50Il06Y2hlY2tlZCcpO3cubGVuZ3RoJiYiTkVXQ0FSUyIhPSgkKCIjdGFyZ2V0UGFnZSIpLnZhbCgpfHwhMSkmJiJVU0VEQ0FSUyIhPSgkKCIjdGFyZ2V0UGFnZSIpLnZhbCgpfHwhMSkmJih3PXtjdXJyZW50UGF5bWVudDp3LmF0dHIoImRhdGEtcmVhbHBheW1lbnQiKSxjdXJyZW50UmF0ZTp3LmF0dHIoImRhdGEtcmF0ZSIpLHBheW1lbnRUZXJtOncudmFsKCkscGF5bWVudFR5cGU6JCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGUgLmFjdGl2ZVBheW1lbnRUeXBlIikuYXR0cigiZGF0YS10eXBlIikscGF5bWVudEludGVydmFsOiQoIiNwYXltZW50Q2FsY3VsYXRvckludGVydmFsIikudmFsKCkscGF5bWVudERvd25QYXltZW50OnBhcnNlSW50KCQoIi5wYXltZW50Q2FsY3VsYXRvclRyYWRlSW5WYWx1ZSIpLnZhbCgpfHwKMCkrcGFyc2VJbnQoJCgiI3BheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnQiKS52YWwoKXx8MCksdG90YWxJbnRlcmVzdDp3LmF0dHIoImRhdGEtdG90YWxpbnRlcmVzdCIpLGx1eGVUYXhBbW91bnQ6dy5hdHRyKCJkYXRhLWx1eGVUYXhBbW91bnQiKSxyYXRlVHlwZTp3LmF0dHIoImRhdGEtcmF0ZXR5cGUiKSxlZmZlY3RpdmVSYXRlOncuYXR0cigiZGF0YS1lZmZlY3RpdmVSYXRlIiksdG90YWxDb3N0OncuYXR0cigiZGF0YS10b3RhbENvc3QiKX0sY2hhbmdlUGFnZVBheW1lbnRWYWx1ZSh3KSl9LDI1MCkpfX0pfX12YXIgZD1udWxsOyQoIiNwYXltZW50Q2FsY3VsYXRvckludGVydmFsIikub24oImNoYW5nZSIsZnVuY3Rpb24oKXthKCl9KTskKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50VHlwZSBsaSIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXskKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50VHlwZSBsaSIpLnJlbW92ZUNsYXNzKCJhY3RpdmVQYXltZW50VHlwZSIpO3ZhciBiPQpkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLmNhbGMtcGF5bWVudC1jYXNoIik7JCh0aGlzKS5hZGRDbGFzcygiYWN0aXZlUGF5bWVudFR5cGUiKTtzd2l0Y2goITApe2Nhc2UgImxlYXNpbmciPT09JCh0aGlzKS5hdHRyKCJkYXRhLXR5cGUiKTpiLmhpZGRlbj0hMDskKCIucGF5bWVudENhbGN1bGF0b3JLbUFsbG93YW5jZUNvbnRhaW5lciIpLnNob3coKTskKCIucGF5bWVudENhbGN1bGF0b3JJbnB1dENvbnRhaW5lciIpLnNob3coKTticmVhaztjYXNlICJmaW5hbmNpbmciPT09JCh0aGlzKS5hdHRyKCJkYXRhLXR5cGUiKTpiLmhpZGRlbj0hMDskKCIucGF5bWVudENhbGN1bGF0b3JLbUFsbG93YW5jZUNvbnRhaW5lciIpLmhpZGUoKTskKCIucGF5bWVudENhbGN1bGF0b3JJbnB1dENvbnRhaW5lciIpLnNob3coKTticmVhaztjYXNlICJjYXNoIj09PSQodGhpcykuYXR0cigiZGF0YS10eXBlIik6Yi5oaWRkZW49ITEsJCgiLnBheW1lbnRDYWxjdWxhdG9ySW5wdXRDb250YWluZXIiKS5oaWRlKCksCiQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXIiKS5oaWRlKCksJCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcldpdGhUYXhlcyIpLmhpZGUoKSxudWxsIT09Q29va2llcy5nZXQoInBheW1lbnRDYWxjdWxhdG9yU2VsZWN0ZWRPcHRpb25zIikmJihiPUNvb2tpZXMuZ2V0KCJwYXltZW50Q2FsY3VsYXRvclNlbGVjdGVkT3B0aW9ucyIpLnNwbGl0KCItIiksYlswXT0iY2FzaCIsQ29va2llcy5zZXQoInBheW1lbnRDYWxjdWxhdG9yU2VsZWN0ZWRPcHRpb25zIixiLmpvaW4oIi0iKSxudWxsLCIvIikpLHdpbmRvdy5wYXltZW50U2VsZWN0Q2hhbmdlZD0hMCwidW5kZWZpbmVkIiE9PXR5cGVvZiBtb2RlbENvbmZpZyYmImZ1bmN0aW9uIj09PXR5cGVvZiBtb2RlbENvbmZpZy5zZXRCTlBWaWV3JiZtb2RlbENvbmZpZy5zZXRCTlBWaWV3KCEwLCJjYXNoIil9JCgiI3BheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnQiKS50cmlnZ2VyKCJibHVyIil9KTskKCIjcGF5bWVudENhbGN1bGF0b3JLbUFsbG93YW5jZSIpLm9uKCJjaGFuZ2UiLApmdW5jdGlvbigpe2EoKX0pOyQoIiNwYXltZW50Q2FsY3VsYXRvckRvd25QYXltZW50Iikub24oImJsdXIiLGZ1bmN0aW9uKCl7bGV0IGI9cGFyc2VJbnQoJCh0aGlzKS52YWwoKS5yZXBsYWNlKC9bXlxkXS9nLCIiKSl8fDA7aWYoImxlYXNpbmciPT09JCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGUgLmFjdGl2ZVBheW1lbnRUeXBlIikuYXR0cigiZGF0YS10eXBlIikpe3ZhciBlPXBhcnNlSW50KCQoIiNtYXhEb3duUGF5bWVudEZvclRyaW0iKS52YWwoKSl8fDA7Yj5lJiYoYj1lKX1lbHNlIGU9cGFyc2VJbnQoJCgiI21heERvd25QYXltZW50RmluYW5jZUZvclRyaW0iKS52YWwoKSl8fDAsYj5lJiYoYj1lKTskKHRoaXMpLnZhbChiKTthKCl9KTskKCIucGF5bWVudENhbGN1bGF0b3JUcmFkZUluVmFsdWUiKS5vbigiYmx1ciIsZnVuY3Rpb24oKXtsZXQgYj1wYXJzZUludCgkKHRoaXMpLmF0dHIoIm1heCIpKXx8MCxlPXBhcnNlSW50KCQodGhpcykudmFsKCkpfHwwO2U9ZT4KYj9iOmU7JCh0aGlzKS52YWwoZSk7X2xvY2FsU3RvcmFnZVNldCgidHJhZGVpbl9jdXJyZW50X3ZhbHVlIixKU09OLnN0cmluZ2lmeSh7dmFsdWU6ZX0pLDEpO2EoKX0pOyQoIiNwYXltZW50Q2FsY3VsYXRvckluY2x1ZGVUYXhDaGVjayIpLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7JCh0aGlzKS5pcygiOmNoZWNrZWQiKT8oJCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lciIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyV2l0aFRheGVzIikuc2hvdygpLCQoIi5wYXltZW50Q2FsY3VsYXRvclRheGVJbmNsdWRlZCIpLnNob3coKSwkKCIucGF5bWVudENhbGN1bGF0b3JUYXhlTm90SW5jbHVkZWQiKS5oaWRlKCkpOigkKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyV2l0aFRheGVzIikuaGlkZSgpLCQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXIiKS5zaG93KCksJCgiLnBheW1lbnRDYWxjdWxhdG9yVGF4ZUluY2x1ZGVkIikuaGlkZSgpLAokKCIucGF5bWVudENhbGN1bGF0b3JUYXhlTm90SW5jbHVkZWQiKS5zaG93KCkpfSk7JCgiI3BheW1lbnRDYWxjdWxhdG9yQ2FsbFRvQWN0aW9uQ29udGFpbmVyIGEiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7Z2V0UG9wQ29udGFpblNldHRpbmdzKCkuYWxyZWFkeUluaXQ9ITA7d2luZG93LnBheW1lbnRTZWxlY3RDaGFuZ2VkJiYod2luZG93LnRlbXBQYXltZW50U2VsZWN0Q2hhbmdlZD0hMCk7d2luZG93LnBheW1lbnRTZWxlY3RDaGFuZ2VkPSExO3ZvaWQgMCE9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLnZlaGljbGVDb25maWd1cmF0b3JEUiIpJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBtb2RlbENvbmZpZyYmbW9kZWxDb25maWcuY2hhbmdlUGF5bWVudFBsYW5Qb3B1cCgpOyQoIiNwYXltZW50Q2FsY3VsYXRvclBvcHVwQ29udGFpbmVyIikucG9wdXBpemUoKS5jbG9zZSgpfSk7JCgiI3BheW1lbnRDYWxjdWxhdG9yUG9wdXBDb250YWluZXIgLmNsb3NlLXJldmVhbC1tb2RhbCIpLm9uKCJjbGljayIsCmZ1bmN0aW9uKCl7dm9pZCAwIT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIudmVoaWNsZUNvbmZpZ3VyYXRvckRSIikmJiJ1bmRlZmluZWQiIT09dHlwZW9mIG1vZGVsQ29uZmlnJiZtb2RlbENvbmZpZy5jaGFuZ2VQYXltZW50UGxhblBvcHVwKCl9KTskKCIjcGF5bWVudENhbGN1bGF0b3JUcmltU2VsZWN0Iikub24oImNoYW5nZSIsZnVuY3Rpb24oKXt2YXIgYj1nZXRQb3BDb250YWluU2V0dGluZ3MoKTtiLnN0eWxlaWQ9JCh0aGlzKS52YWwoKTskKCIjYWN0aXZlU3R5bGVJRCIpLmxlbmd0aCYmJCgiI2FjdGl2ZVN0eWxlSUQiKS52YWwoYi5zdHlsZWlkKTtwYXltZW50Q2FsY3VsYXRvclBvcHVwSW5pdCgpO3VwZGF0ZVVybChiKX0pOyQoImJvZHkiKS5vbigiY2xpY2sgdGFwIiwiI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyIC5maW5hbmNpbmctb3B0aW9uLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXIgKiIsZnVuY3Rpb24oKXskKHRoaXMpLmZpbmQoJ2lucHV0W25hbWU9InNlbGVjdGVkUGF5bWVudCJdJykucHJvcCgiY2hlY2tlZCIsCiJjaGVja2VkIikudHJpZ2dlcigiY2hhbmdlIil9KTskKCJib2R5Iikub24oImNoYW5nZSIsJyNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciBpbnB1dFtuYW1lPSJzZWxlY3RlZFBheW1lbnQiXScsZnVuY3Rpb24oKXt2YXIgYj0kKHRoaXMpLnZhbCgpLGU9JCh0aGlzKS5hdHRyKCJkYXRhLXJhdGV0eXBlIik7JCgnaW5wdXRbbmFtZT0ic2VsZWN0ZWRQYXltZW50V2l0aFRheGVzIl1bdmFsdWU9IicrYisnIl1bZGF0YS1yYXRldHlwZT0iJytlKyciXScpLnByb3AoImNoZWNrZWQiLCEwKTskKCIjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLmZpbmFuY2luZy1vcHRpb24iKS5yZW1vdmVDbGFzcygic2VsZWN0ZWQiKTskKCdpbnB1dFtuYW1lPSJzZWxlY3RlZFBheW1lbnRXaXRoVGF4ZXMiXVt2YWx1ZT0iJytiKyciXVtkYXRhLXJhdGV0eXBlPSInK2UrJyJdJykuY2xvc2VzdCgiLmZpbmFuY2luZy1vcHRpb24iKS5hZGRDbGFzcygic2VsZWN0ZWQiKTskKHRoaXMpLmNsb3Nlc3QoIi5maW5hbmNpbmctb3B0aW9uIikuYWRkQ2xhc3MoInNlbGVjdGVkIil9KTsKJCgiYm9keSIpLm9uKCJjaGFuZ2UiLCcjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgaW5wdXRbbmFtZT0ic2VsZWN0ZWRQYXltZW50V2l0aFRheGVzIl0nLGZ1bmN0aW9uKCl7dmFyIGI9JCh0aGlzKS52YWwoKSxlPSQodGhpcykuYXR0cigiZGF0YS1yYXRldHlwZSIpOyQoJ2lucHV0W25hbWU9InNlbGVjdGVkUGF5bWVudCJdW3ZhbHVlPSInK2IrJyJdW2RhdGEtcmF0ZXR5cGU9IicrZSsnIl0nKS5wcm9wKCJjaGVja2VkIiwhMCkudHJpZ2dlcigiY2hhbmdlIil9KTt2YXIgYz0hMTskKCJib2R5Iikub24oImNoYW5nZSIsJyNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciBpbnB1dFtuYW1lPSJzZWxlY3RlZFBheW1lbnQiXScsZnVuY3Rpb24oKXt2YXIgYj1nZXRQb3BDb250YWluU2V0dGluZ3MoKSxlPSQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlIC5hY3RpdmVQYXltZW50VHlwZSIpLmF0dHIoImRhdGEtdHlwZSIpLGs9JCh0aGlzKS52YWwoKSxsPSQoIiNwYXltZW50Q2FsY3VsYXRvckludGVydmFsIikudmFsKCksCmg9JCgiI3BheW1lbnRDYWxjdWxhdG9yS21BbGxvd2FuY2UiKS52YWwoKSxyPSQoIiNwYXltZW50Q2FsY3VsYXRvckRvd25QYXltZW50IikudmFsKCk\/JCgiI3BheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnQiKS52YWwoKTowLHE9JCgiLnBheW1lbnRDYWxjdWxhdG9yVHJhZGVJblZhbHVlIikudmFsKCk\/JCgiLnBheW1lbnRDYWxjdWxhdG9yVHJhZGVJblZhbHVlIikudmFsKCk6MDtyPXBhcnNlSW50KHIpK3BhcnNlSW50KHEpO3I9ci50b0ZpeGVkKDApO3E9ZSsiLSIraysiLSIrbCsiLSIraCsiLSIrcjtxIT1Db29raWVzLmdldCgicGF5bWVudENhbGN1bGF0b3JTZWxlY3RlZE9wdGlvbnMiKSYmbnVsbCE9Q29va2llcy5nZXQoInBheW1lbnRDYWxjdWxhdG9yU2VsZWN0ZWRPcHRpb25zIikmJih3aW5kb3cucGF5bWVudFNlbGVjdENoYW5nZWQ9ITAsdm9pZCAwIT1Db29raWVzLmdldCgicGF5bWVudENhbGN1bGF0b3JTZWxlY3RlZE9wdGlvbnMiKS5zcGxpdCgiLSIpWzBdJiYidW5kZWZpbmVkIiE9CnR5cGVvZiBtb2RlbENvbmZpZyYmdm9pZCAwIT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIudmVoaWNsZUNvbmZpZ3VyYXRvckRSIikmJihjPSEwLG1vZGVsQ29uZmlnLnNldEJOUFZpZXcoYyxlKSksbnVsbCE9Q29va2llcy5nZXQoInBheW1lbnRDYWxjdWxhdG9yU2VsZWN0ZWRPcHRpb25zIikmJkNvb2tpZXMuc2V0KCJwcmV2aW91c3BheW1lbnRDYWxjdWxhdG9yU2VsZWN0ZWRPcHRpb25zIixDb29raWVzLmdldCgicGF5bWVudENhbGN1bGF0b3JTZWxlY3RlZE9wdGlvbnMiKSxudWxsLCIvIikpO2N8fCJ1bmRlZmluZWQiPT10eXBlb2YgbW9kZWxDb25maWd8fCJ1bmRlZmluZWQiPT09dHlwZW9mIG1vZGVsQ29uZmlnfHx2b2lkIDA9PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi52ZWhpY2xlQ29uZmlndXJhdG9yRFIiKXx8bW9kZWxDb25maWcuc2hvdWxkUmVsb2FkQk5QVmlld09uUGF5bWVudENoYW5nZShjLGUpO0Nvb2tpZXMuc2V0KCJwYXltZW50Q2FsY3VsYXRvclNlbGVjdGVkT3B0aW9ucyIsCnEsbnVsbCwiLyIpO3ZhciB1PSQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyJtb250aHMiOiJtb2lzIix5PSQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyIkIityKyIgZG93biBwYXltZW50IjpyKyIgJCBjb21wdGFudCI7cT0kKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8icGVyIHdlZWsgZm9yIjoicGFyIHNlbWFpbmUgcG91ciI7c3dpdGNoKGwpe2Nhc2UgIndlZWtseSI6cT0kKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8icGVyIHdlZWsgZm9yIjoicGFyIHNlbWFpbmUgcG91ciI7YnJlYWs7Y2FzZSAiYml3ZWVrbHkiOnE9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/InBlciAyIHdlZWtzIGZvciI6InBhciAyIHNlbWFpbmVzIHBvdXIiO2JyZWFrO2Nhc2UgInNlbWltb250aGx5IjpxPSQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyJ0d2ljZSBhIG1vbnRoIGZvciI6IjIgZm9pcyBwYXIgbW9pcyBwb3VyIjticmVhaztjYXNlICJtb250aGx5IjpxPQokKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8icGVyIG1vbnRoIGZvciI6InBhciBtb2lzIHBvdXIifWg9ImxlYXNpbmciPT09ZT9oKyJrbSI6IiI7dmFyIG49JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/ImxlYXNpbmciPT09ZT8iTGVhc2luZyI6IkZpbmFuY2luZyI6ImxlYXNpbmciPT09ZT8iTG9jYXRpb24iOiJGaW5hbmNlbWVudCI7Yi52ZWhpY2xlSW5mbyYmKGVtYWlsSGFuZGxlci5wYXltZW50VmVoaWNsZT1iLnZlaGljbGVJbmZvLm1ha2UrIiAiKyhiLnZlaGljbGVJbmZvLm1vZGVsfHxiLnZlaGljbGVJbmZvLkNGTW9kZWxOYW1lKSsiICIrYi52ZWhpY2xlSW5mby5DRlN0eWxlTmFtZSxlbWFpbEhhbmRsZXIucGF5bWVudFZlaGljbGU9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/Yi52ZWhpY2xlSW5mby55ZWFyKyIgIitlbWFpbEhhbmRsZXIucGF5bWVudFZlaGljbGU6ZW1haWxIYW5kbGVyLnBheW1lbnRWZWhpY2xlKyIgIitiLnZlaGljbGVJbmZvLnllYXIsCmVtYWlsSGFuZGxlci5wYXltZW50VmVoaWNsZSs9IigiK24rIiAiK3ErIiAiK2srIiAiK3UrIi4gIit5KyIuICIraCsiKSIsZW1haWxIYW5kbGVyLm1ha2U9Yi52ZWhpY2xlSW5mby5tYWtlLGVtYWlsSGFuZGxlci5tb2RlbD1iLnZlaGljbGVJbmZvLm1vZGVsfHxiLnZlaGljbGVJbmZvLkNGTW9kZWxOYW1lLGVtYWlsSGFuZGxlci50cmltPWIudmVoaWNsZUluZm8uQ0ZTdHlsZU5hbWUsZW1haWxIYW5kbGVyLnllYXI9Yi52ZWhpY2xlSW5mby55ZWFyKTtpZigiTkVXQ0FSUyIhPT0oJCgiI3RhcmdldFBhZ2UiKS52YWwoKXx8ITEpJiYiVVNFRENBUlMiIT09KCQoIiN0YXJnZXRQYWdlIikudmFsKCl8fCExKSl7cT0kKHRoaXMpLmF0dHIoImRhdGEtcmVhbHBheW1lbnQiKTtiPSQodGhpcykuYXR0cigiZGF0YS1yYXRlIik7aD0kKHRoaXMpLmF0dHIoImRhdGEtdG90YWxpbnRlcmVzdCIpO3U9JCh0aGlzKS5hdHRyKCJkYXRhLWx1eGVUYXhBbW91bnQiKTt5PSQodGhpcykuYXR0cigiZGF0YS1lZmZlY3RpdmVSYXRlIik7Cm49JCh0aGlzKS5hdHRyKCJkYXRhLXJhdGV0eXBlIik7dmFyIHg9JCh0aGlzKS5hdHRyKCJkYXRhLXRvdGFsQ29zdCIpO2NoYW5nZVBhZ2VQYXltZW50VmFsdWUoe2N1cnJlbnRQYXltZW50OnEsY3VycmVudFJhdGU6YixwYXltZW50VGVybTprLHBheW1lbnRUeXBlOmUscGF5bWVudEludGVydmFsOmwscGF5bWVudERvd25QYXltZW50OnIsdG90YWxJbnRlcmVzdDpoLGx1eGVUYXhBbW91bnQ6dSxyYXRlVHlwZTpuLGVmZmVjdGl2ZVJhdGU6eSx0b3RhbENvc3Q6eH0pfXk9IiIhPSQoIiNkaXNjbGFpbWVyUHJpY2VUZXh0IikudmFsKCk\/JCgiI2Rpc2NsYWltZXJQcmljZVRleHQiKS52YWwoKToiK3R4IjtpZigkKCIuYm5wX3BheW1lbnRfY29udGFpbmVyIikubGVuZ3RoKXt1PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKXx8IkZSRU5DSCI7cT0kKHRoaXMpLmF0dHIoImRhdGEtcmVhbHBheW1lbnQiKTtiPSQodGhpcykuYXR0cigiZGF0YS1yYXRlIik7aD0iMSI9PSQoIiNyb3VuZFBheW1lbnQiKS52YWwoKT8KMDoyO249cGFyc2VGbG9hdChxKS50b0ZpeGVkKGgpO249bi5yZXBsYWNlKC9cLihbMC05XSopLyxmdW5jdGlvbih0LEEpe3JldHVybic8c3VwIGNsYXNzPSJwZCI+JytBKyI8L3N1cD4ifSk7cT0kKCIjSU5URVJWQUxfU0hPUlRfV0VFS0xZIikudmFsKCk7aD01Mjtzd2l0Y2gobCl7Y2FzZSAid2Vla2x5IjpxPSQoIiNJTlRFUlZBTF9TSE9SVF9XRUVLTFkiKS52YWwoKTtoPTUyO2JyZWFrO2Nhc2UgImJpd2Vla2x5IjpxPSQoIiNJTlRFUlZBTF9TSE9SVF9CSVdFRUtMWSIpLnZhbCgpO2g9MjY7YnJlYWs7Y2FzZSAic2VtaW1vbnRobHkiOnE9JCgiI0lOVEVSVkFMX1NIT1JUX1NFTUlNT05USExZIikudmFsKCk7aD0yNDticmVhaztjYXNlICJtb250aGx5IjpxPSQoIiNJTlRFUlZBTF9TSE9SVF9NT05USExZIikudmFsKCksaD0xMn1sPXkrIi8iK3E7IjEiPT0kKCIjcGF5bWVudENhbGN1bGF0b3JTdHJpa2VQYXltZW50IikudmFsKCkmJiJibHVyIj09PSQoIiNwYXltZW50Q2FsY3VsYXRvclN0cmlrZVBheW1lbnRPcHRpb24iKS52YWwoKSYmCihuPSc8c3BhbiBjbGFzcz0iYmx1ci1wcmljZSI+JytuKyI8L3NwYW4+Iik7cT1EMkNVdGlscy5Gb3JtYXQudG9QcmljZShuKTtyPUQyQ1V0aWxzLkZvcm1hdC50b1ByaWNlKHIpKygiRU5HTElTSCI9PT11PyIgZG93biI6IiBjb21wdGFudCIpO2U9ImZpbmFuY2luZyI9PT1lPyJFTkdMSVNIIj09PXU\/aysiIG1vbnRocyBmaW4uIjoiRmluLiAiK2srIiBtb2lzIjoiRU5HTElTSCI9PT11P2srIiBtb250aHMgbGVhc2UiOiJMb2MuICIraysiIG1vaXMiO2I9cGFyc2VGbG9hdChiKS50b0ZpeGVkKDIpKyIlIjt1PWUrIiAvICIrcisiIEAgIitiKyI6IjsxPT0kKCIjaXNEUlNpdGUiKS5sZW5ndGgmJiIxIj09JCgiI2lzRFJTaXRlIikudmFsKCkmJihrPXBhcnNlSW50KHBhcnNlSW50KGspLzEyKmgpLGg9c3RvcmUuZ2V0KCJpMThuIikuUEFZTUVOVFMudG9Mb3dlckNhc2UoKSx1PWUrIiAvICIraysiICIraCsiIC8gIityKyIgQCAiK2IrIjoiKTskKCIuYm5wX3BheW1lbnRfY29udGFpbmVyIC5icC1wYXltZW50LWRlc2MiKS5odG1sKHUpOwokKCIuYm5wX3BheW1lbnRfY29udGFpbmVyIC5icC1wYXltZW50LWFtb3VudCIpLmh0bWwocSk7JCgiLmJucF9wYXltZW50X2NvbnRhaW5lciAuYnAtdGF4LXR4dCIpLnRleHQobCk7az0kKHRoaXMpLmNsb3Nlc3QoIi5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRXcmFwcGVyQ29udGFpbmVyIik7IjEiPT0kKCIjaXNtb2JpbGUiKS52YWwoKSYmKGs9JCh0aGlzKS5jbG9zZXN0KCIucGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlckNvbnRhaW5lciIpLmZpbmQoIi5wYXltZW50VG9vbHRpcCIpKTtrPWsuYXR0cigiZGF0YS10b29sdGlwIik7az1TdHJpbmcoaykucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7Iik7Y2hhbmdlQm5QVG9vbFRpcE1lc3NhZ2Uoayk7InVuZGVmaW5lZCIhPT10eXBlb2YgbW9kZWxDb25maWcmJihtb2RlbENvbmZpZy5zYXZlQ29uZmlnKCksbW9kZWxDb25maWcuY2FsY3VsYXRlQWNjUGF5bWVudHMoKSl9fSk7CiQoImJvZHkiKS5vbigiY2hhbmdlIiwiLmNvbmRpdGlvbmFsLXJlYmF0ZS1jaGVja2JveCIsZnVuY3Rpb24oKXtpZigkKCIjcGF5bWVudENhbGN1bGF0b3JQb3B1cENvbnRhaW5lciIpLmlzKCI6dmlzaWJsZSIpfHwkKCIjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIiKS5pcygiOnZpc2libGUiKSkiY2FzaCI9PT0kKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50VHlwZSAuYWN0aXZlUGF5bWVudFR5cGUiKS5hdHRyKCJkYXRhLXR5cGUiKT9jYWxjVXBkYXRlUGF5bWVudEluZm8oKTphKCl9KX1mdW5jdGlvbiBlc2NhcGVIVE1MKGEpe3JldHVybiBTdHJpbmcoYSkucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7IikucmVwbGFjZSgvJy9nLCImIzM5OyIpfQp2YXIgY3RhUGF5bWVudFRleHRGcj1bXSxjdGFQYXltZW50VGV4dEVuPVtdLGNhbGNDdXJQYXltZW50PXt9LGN0YVBheW1lbnRWYWx1ZXM9W10sY2FzaFByaWNlRm9yUGFnZT1udWxsLGNhbGNVcGRhdGVQYXltZW50WGhyPW51bGw7CmZ1bmN0aW9uIHVwZGF0ZVVybChhKXt0cnl7aWYoIWEudmVoaWNsZUluZm8pcmV0dXJuO3ZhciBkPWEudmVoaWNsZUluZm8sYz0idW5kZWZpbmVkIiE9dHlwZW9mIG5ld2NhckRldGFpbHM\/bmV3Y2FyRGV0YWlscy5hY3RpdmVNb2RlbC5zdHlsZXM6ZC5tb2RlbEpTT04uc3R5bGVzLGI9d2luZG93LnBhcmVudC5sb2NhdGlvbi5ocmVmLnNwbGl0KCIvIikuc2xpY2UoMCwtMSkuam9pbigiLyIpLGU9Yy5maWx0ZXIoZnVuY3Rpb24oayl7cmV0dXJuIGsuaWQ9PWEuc3R5bGVpZH0pLnBvcCgpfWNhdGNoKGspe2NvbnNvbGUuZXJyb3Ioayk7cmV0dXJufWUmJihjPWUuZW5nbGlzaFRyaW18fCIiLGQ9Z2V0Q3VycmVudFZlaGljbGVQYXRoKGQpKyItIitjLnJlcGxhY2UoL1xzfC0vZywiICIpLGMubGVuZ3RoJiZ3aW5kb3cucGFyZW50Lmhpc3RvcnkucHVzaFN0YXRlKHt9LCIiLGIrIi8iK2QrIi5odG1sIikpfQpmdW5jdGlvbiBjaGFuZ2VCblBUb29sVGlwTWVzc2FnZShhKXthPSc8c3BhbiBjbGFzcz0icGF5bWVudFRvb2x0aXAgZmFsIGZhLWluZm8tY2lyY2xlIiBkYXRhLXRvb2x0aXA9IicrYSsnIj48L3NwYW4+JzskKCIucGF5bWVudEluZm9CdWJibGVCblAiKS5odG1sKGEpO3RyeXt2YXIgZD0kKCIucGF5bWVudEluZm9CdWJibGVCblAgLnBheW1lbnRUb29sdGlwIikuYXR0cigiZGF0YS10b29sdGlwIik7JCgiLnBheW1lbnRJbmZvQnViYmxlQm5QIC5wYXltZW50VG9vbHRpcCIpLmRhcmtUb29sdGlwKHtjb250ZW50OmQsZ3Jhdml0eToic291dGgiLHRoZW1lOiJsaWdodCIsdHJpZ2dlcjoiaG92ZXIiLGFuaW1hdGlvbjoiZmFkZUluIn0pfWNhdGNoKGMpe319CmZ1bmN0aW9uIHBvcHVwaXplck9uQ2xvc2UoYSxkKXsicGF5bWVudENhbGN1bGF0b3JQb3B1cENvbnRhaW5lciIhPT1hLmN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudC5pZCYmKHdpbmRvdy50ZW1wUGF5bWVudFNlbGVjdENoYW5nZWQmJih3aW5kb3cudGVtcFBheW1lbnRTZWxlY3RDaGFuZ2VkPSExLHdpbmRvdy5wYXltZW50U2VsZWN0Q2hhbmdlZD0hMCksJCgiI3BheW1lbnRDYWxjdWxhdG9yUG9wdXBDb250YWluZXIiKS5wb3B1cGl6ZSgpLm9wZW4oMSksJCgiLnJldmVhbC1tb2RhbCIpLm9mZigicG9wdXBpemVyLmNsb3NlIixwb3B1cGl6ZXJPbkNsb3NlKSl9CmZ1bmN0aW9uIGdldFBvcENvbnRhaW5TZXR0aW5ncygpe3ZhciBhPSQoIiNwYXltZW50Q2FsY3VsYXRvclBvcHVwQ29udGFpbmVyIikuZGF0YSgicG9wdXBTZXR0aW5ncyIpO2Eubm9Nb3RvaW5zaWdodExlYXNlUGF5bWVudHM9ITE7YS5ub01vdG9pbnNpZ2h0RmluYW5jZVBheW1lbnRzPSExO2lmKCJ1bmRlZmluZWQiPT09dHlwZW9mIGEpcmV0dXJuITE7InVuZGVmaW5lZCIhPXR5cGVvZiBzZWFyY2hEZXRhaWxzJiZzZWFyY2hEZXRhaWxzLnZlaGljbGU\/KGEucGF5bWVudFR5cGU9IjEiPT0oc2VhcmNoRGV0YWlscy52ZWhpY2xlLm5vTW90b2luc2lnaHRMZWFzZVBheW1lbnRzfHwhMSk\/ImZpbmFuY2UiOmEucGF5bWVudFR5cGUsYS5wYXltZW50VHlwZT0iMSI9PShzZWFyY2hEZXRhaWxzLnZlaGljbGUubm9Nb3RvaW5zaWdodFBheW1lbnR8fCExKT8ibGVhc2UiOmEucGF5bWVudFR5cGUsYS5ub01vdG9pbnNpZ2h0TGVhc2VQYXltZW50cz0iMSI9PShzZWFyY2hEZXRhaWxzLnZlaGljbGUubm9Nb3RvaW5zaWdodExlYXNlUGF5bWVudHN8fAohMSk\/ITA6ITEsYS5ub01vdG9pbnNpZ2h0RmluYW5jZVBheW1lbnRzPSIxIj09KHNlYXJjaERldGFpbHMudmVoaWNsZS5ub01vdG9pbnNpZ2h0UGF5bWVudHx8ITEpPyEwOiExKTooYS5wYXltZW50VHlwZT0iMSI9PShhLm5vTGVhc2V8fCExKT8iZmluYW5jZSI6YS5wYXltZW50VHlwZSxhLnBheW1lbnRUeXBlPSIxIj09KGEubm9GaW5hbmNlfHwhMSk\/ImxlYXNlIjphLnBheW1lbnRUeXBlLGEubm9Nb3RvaW5zaWdodExlYXNlUGF5bWVudHM9IjEiPT0oYS5ub0xlYXNlfHwhMSk\/ITA6ITEsYS5ub01vdG9pbnNpZ2h0RmluYW5jZVBheW1lbnRzPSIxIj09KGEubm9GaW5hbmNlfHwhMSk\/ITA6ITEpO3JldHVybiBhfQpmdW5jdGlvbiBjaGFuZ2VQYWdlUGF5bWVudFZhbHVlKGEpe3ZhciBkPWEuY3VycmVudFBheW1lbnQsYz1hLmN1cnJlbnRSYXRlLGI9YS5wYXltZW50VGVybSxlPWEucGF5bWVudFR5cGUsaz1hLnBheW1lbnRJbnRlcnZhbCxsPWEucGF5bWVudERvd25QYXltZW50LGg9YS50b3RhbEludGVyZXN0LHI9YS5sdXhlVGF4QW1vdW50LHE9YS5yYXRlVHlwZSx1PWEuZWZmZWN0aXZlUmF0ZSx5PWEudG90YWxDb3N0LG49JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/IkVOR0xJU0giOiJGUkVOQ0giLHg9Z2V0UG9wQ29udGFpblNldHRpbmdzKCksdD0iMSI9PSQoIiNwYXltZW50Q2FsY3VsYXRvclJvdW5kUGF5bWVudCIpLnZhbCgpPzA6MixBPTI9PXQ\/TWF0aC5mbG9vcihwYXJzZUZsb2F0KGQpKS50b0ZpeGVkKDApOnBhcnNlRmxvYXQoZCkudG9GaXhlZCgwKTtkPXBhcnNlRmxvYXQoZCkudG9GaXhlZCh0KTt0PWQuc3BsaXQoIi4iKVsxXXx8IiI7ZD1kLnJlcGxhY2UoL1wuKFswLTldKikvLApmdW5jdGlvbihCLEUpe3JldHVybic8c3VwIGNsYXNzPSJwZCI+JytFKyI8L3N1cD4ifSk7IjEiPT0kKCIjcGF5bWVudENhbGN1bGF0b3JTdHJpa2VQYXltZW50IikudmFsKCkmJiJibHVyIj09PSQoIiNwYXltZW50Q2FsY3VsYXRvclN0cmlrZVBheW1lbnRPcHRpb24iKS52YWwoKSYmKGQ9JzxzcGFuIGNsYXNzPSJibHVyLXByaWNlIj4nK2QrIjwvc3Bhbj4iKTt2YXIgej1EMkNVdGlscy5Gb3JtYXQudG9QcmljZShkKSxmPWQrIiQiLHc9IiQiK2Qsdj0ibGVhc2luZyI9PT1lPyJMb2NhdGlvbiI6IkZpbmFuY2VtZW50IixwPSJsZWFzaW5nIj09PWU\/IkxlYXNpbmciOiJGaW5hbmNpbmciLG09YysiJSIsZz0iIiE9JCgiI2Rpc2NsYWltZXJQcmljZVRleHQiKS52YWwoKT8kKCIjZGlzY2xhaW1lclByaWNlVGV4dCIpLnZhbCgpOiIrdHgiLEQ9ZysiL21vaXMiLEM9ZysiL210aCI7c3dpdGNoKGspe2Nhc2UgIndlZWtseSI6RD1nKyIvc2VtIjtDPWcrIi93ZWVrIjticmVhaztjYXNlICJiaXdlZWtseSI6RD0KZysiLzJzZW0iO0M9ZysiLzJ3ZWVrIjticmVhaztjYXNlICJzZW1pbW9udGhseSI6RD1nKyIvYmltZW5zdWVsIjtDPWcrIi9zZW1pbW9udGhseSI7YnJlYWs7ZGVmYXVsdDpEPWcrIi9tb2lzIixDPWcrIi9tb250aCJ9dmFyIEY9IjEiPT0kKCIjcGF5bWVudENhbGN1bGF0b3JTdHJpa2VQYXltZW50IikudmFsKCk\/InNjcmF0Y2giPT09JCgiI3BheW1lbnRDYWxjdWxhdG9yU3RyaWtlUGF5bWVudE9wdGlvbiIpLnZhbCgpPyJzdHJpa2UtcHJpY2UtYmxhY2siOiIiOiIiO2c9RDJDVXRpbHMuRm9ybWF0LnRvUHJpY2UobCkrIiBjb21wdGFudCI7dmFyIEo9RDJDVXRpbHMuRm9ybWF0LnRvUHJpY2UobCkrIiBkb3duIHBheW1lbnQiO2w9disiICIrYisiIG1vaXMiO3A9cCsiICIrYisiIG1vbnRocyI7ej0nPHNwYW4gY2xhc3M9InR4dC1wYXltZW50ICcrRisnIj4nK3orJzwvc3Bhbj4gQCA8c3BhbiBjbGFzcz0idHh0LXBheW1lbnQiPicrbSsiPC9zcGFuPiI7MDx1LWMmJih6Kz1mb3JtYXRFZmZlY3RpdmVSYXRlVGV4dCh1LAonIGNsYXNzPSJ0eHQtcGF5bWVudCIgJykpO3U9KCJFTkdMSVNIIj09PW4\/QzpEKSsiICIrKCJFTkdMSVNIIj09PW4\/SjpnKSsoIjEiPT0kKCIjaXNtb2JpbGUiKS52YWwoKT8iIjonIDxzcGFuIHN0eWxlPSJmb250LXdlaWdodDo3MDA7Y29sb3I6IzAwMDsiIGNsYXNzPSJ2ZHBJbmZvVG9vbHRpcCBmYXIgZmEtaW5mby1jaXJjbGUiPjwvc3Bhbj4nKTskKCIucGF5bWVudFdyYXBwZXIgLnBheW1lbnRMaW5lMiwgLnBheW1lbnRXcmFwcGVyTW9iaWxlVkRQIC5wYXltZW50TGluZTEiKS5odG1sKCJFTkdMSVNIIj09PW4\/cDpsKTskKCIucGF5bWVudFdyYXBwZXIgLnBheW1lbnRMaW5lMSwgLnBheW1lbnRXcmFwcGVyTW9iaWxlVkRQIC5wYXltZW50TGluZTIiKS5odG1sKHopOyQoIi5wYXltZW50V3JhcHBlciAucGF5bWVudExpbmUzLCAucGF5bWVudFdyYXBwZXJNb2JpbGVWRFAgLnBheW1lbnRMaW5lMyIpLmh0bWwodSk7Zz16PSIiO2NhbGNDdXJQYXltZW50LmN1cnJlbnRQYXltZW50JiYKY2FsY0N1clBheW1lbnQuY3VycmVudFBheW1lbnQubGVuZ3RoJiYoZz1jYWxjQ3VyUGF5bWVudC5jdXJyZW50UGF5bWVudFswXS50b3RhbCx6PWBBZmZpY2jDg8KpIMODwqAgJHtnfSRgLGc9YExpc3RlZCBhdCAkJHtnfWApO2N0YVBheW1lbnRUZXh0RnI9W2Ake2Z9ICR7RH1gLGAke2x9IEAgJHttfWAsYCR7en1gXTtjdGFQYXltZW50VGV4dEVuPVtgJHt3fSAke0N9YCxgJHtwfSBAICR7bX1gLGAke2d9YF07Y3RhUGF5bWVudFZhbHVlcz1bYS5jdXJyZW50UGF5bWVudCxjLGIsa107d2luZG93LnBhcmVudC5BTVAmJndpbmRvdy5wYXJlbnQuQU1QLnNldFN0YXRlKHtTU1JfU1RBVEU6e2xlYXNlVGVybVRleHQ6IkVOR0xJU0giPT09bj9wOmwsbGVhc2VQYXltZW50VHh0OkEsbGVhc2VQYXltZW50RGVjaW1hbDp0LGxlYXNlUmF0ZTptLGxlYXNlVGF4VGV4dDp1fX0pO2NhbGNDdXJQYXltZW50LmN1clRlcm09YjtjYWxjQ3VyUGF5bWVudC5jdXJSYXRlPWM7Y2FsY0N1clBheW1lbnQuY3VySW50ZXJ2YWw9Cms7Y2FsY0N1clBheW1lbnQudGF4VGV4dEZyPUQ7Y2FsY0N1clBheW1lbnQudGF4VGV4dEVuPUM7YT0oJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/Ii9lbiI6Ii9mciIpKyIvYWpheC9nZXRQYXltZW50VG9vbHRpcEJ5U3R5bGVJRD93c3dpZHRoPTAiO2U9ImxlYXNpbmciPT1lPyJsZWFzZSI6ImZpbmFuY2UiO249Z2V0T3B0aW9uc0Ftb3VudCh4KTtBPXguaGFzT3duUHJvcGVydHkoIm5vVHJpbVNlbGVjdCIpJiYidHJ1ZSI9PXgubm9UcmltU2VsZWN0fHwidXNlZGNhcnMuaHRtbCI9PT0kKCIjUEFHRUlEIikudmFsKCl8fCJjYXJkZXRhaWwuaHRtbCI9PT0kKCIjUEFHRUlEIikudmFsKCk7dD14Lmhhc093blByb3BlcnR5KCJzdG9ja051bWJlciIpP3guc3RvY2tOdW1iZXI6IiI7Zj14Lmhhc093blByb3BlcnR5KCJ2aW4iKT94LnZpbjoiIjt3PWdldEFjY2Vzc29yaWVzQW1vdW50KHgpO209Z2V0U2VsZWN0ZWRBY2Nlc3Nvcmllcyh4KTtEPWdldFByb3RlY3Rpb25QbGFuc0Ftb3VudCh4KTsKbGV0IEw9W107ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmNvbmRpdGlvbmFsLXJlYmF0ZS1jaGVja2JveCIpLmZvckVhY2goZnVuY3Rpb24oQil7Qi5jaGVja2VkJiYoQj1CLmdldEF0dHJpYnV0ZSgiZGF0YS1jb25kaXRpb25hbC1yZWJhdGUtaWQiKSkmJkwucHVzaChCKX0pO0EmJiF0JiYoQz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGhvbmVzdG9ja251bWJlciIpKSYmKHQ9Qy52YWx1ZXx8IiIpO0EmJiFmJiYoQz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGhvbmV2aW4iKSkmJihmPUMudmFsdWV8fCIiKTskLmFqYXgoe3VybDphLHR5cGU6IlBPU1QiLGRhdGFUeXBlOiJIVE1MIixkYXRhOntzdHlsZWlkOnguc3R5bGVpZCx0eXBlOmUscGF5bWVudDpwYXJzZUZsb2F0KGQpLHRlcm06cGFyc2VJbnQoYikscmF0ZTpwYXJzZUZsb2F0KGMpLGludGVydmFsOmssb3B0aW9uczpuLHRvdGFsSW50ZXJlc3Q6aCxpc0ludmVudG9yeTpBLHNuOnQsdmluOmYsbHV4ZVRheEFtb3VudDpyLApyYXRlX3R5cGU6cSx0b3RhbENvc3Q6eSxjb25kaXRpb25hbFJlYmF0ZUlkczpMLmpvaW4oIiwiKSxhY2Nlc3Nvcmllczp3LHNlbGVjdGVkQWNjZXNzb3JpZXM6bSxwcm90ZWN0aW9uUGxhbnM6RH0sYmVmb3JlU2VuZDpmdW5jdGlvbihCKXt0cnl7bGV0IEU9JCgibWV0YVtuYW1lPSdjc3JmLWRvbWFpbi1jaGVjayddIik7RS5sZW5ndGgmJkIuc2V0UmVxdWVzdEhlYWRlcigiY3NyZi1kb21haW4tY2hlY2siLEUuYXR0cigiY29udGVudCIpKX1jYXRjaChFKXtjb25zb2xlLmVycm9yKEIpfX0sc3VjY2VzczpmdW5jdGlvbihCKXskKCIjZGFya3Rvb2x0aXAtcGF5bWVudFdyYXBwZXIsICNkYXJrdG9vbHRpcC12ZHBQYXltZW50VG9vbHRpcCwgI2Rhcmt0b29sdGlwLXZkcEluZm9Ub29sdGlwLCAjZGFya3Rvb2x0aXAtdmRwVXNlZEluZm9Ub29sdGlwIikucmVtb3ZlKCk7dmFyIEU9JCgiLm5ld1ZkcEFjdGlvbnMiKS5oYXNDbGFzcygid2VzdCIpPyJ3ZXN0IjokKCIudXNlZFZkcEFjdGlvbnMiKS5oYXNDbGFzcygid2VzdCIpPwoid2VzdCI6ImVhc3QiOyQoIi52ZHBQYXltZW50VG9vbHRpcCwgLnBheW1lbnRXcmFwcGVyIC52ZHBJbmZvVG9vbHRpcCwgLnBheW1lbnRXcmFwcGVyIC52ZHBVc2VkSW5mb1Rvb2x0aXAiKS5kYXJrVG9vbHRpcCh7Y29udGVudDpCLGdyYXZpdHk6RSx0aGVtZToibGlnaHQiLHRyaWdnZXI6ImhvdmVyIixhbmltYXRpb246ImZsaXBJbiJ9KX19KX0KZnVuY3Rpb24gZ2V0Q3VycmVudFZlaGljbGVQYXRoKGEpe3ZhciBkPVtkMmNtZWRpYS51cmwuc2FuaXRpemUoYS5tYWtlKSxkMmNtZWRpYS51cmwuc2FuaXRpemUoYS5tb2RlbCksZDJjbWVkaWEudXJsLnNhbml0aXplKGEueWVhcildLmpvaW4oIi0iKTsiRU5HTElTSCI9PT0oJCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpfHwiRlJFTkNIIikmJihkPVtkMmNtZWRpYS51cmwuc2FuaXRpemUoYS5tYWtlKSxkMmNtZWRpYS51cmwuc2FuaXRpemUoYS5tb2RlbCksZDJjbWVkaWEudXJsLnNhbml0aXplKGEueWVhcildLmpvaW4oIi0iKSk7cmV0dXJuIGR9CmZ1bmN0aW9uIHNob3dQYXltZW50cyhhLGQsYyxiKXskKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyIikuaHRtbCgiIik7JCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcldpdGhUYXhlcyIpLmh0bWwoIiIpO3ZhciBlPSIxIj09JCgiI3BheW1lbnRDYWxjdWxhdG9yUm91bmRQYXltZW50IikudmFsKCk\/MDoyOyIxIj09JCgiI3BheW1lbnRDYWxjdWxhdG9yU3RyaWtlUGF5bWVudCIpLnZhbCgpJiYkKCIjcGF5bWVudENhbGN1bGF0b3JTdHJpa2VQYXltZW50T3B0aW9uIikudmFsKCk7dmFyIGs9W10sbD0kKCIjb2VtQ2VydGlmaWNhdGlvbiIpLnZhbCgpfHwwOyJmaW5hbmNlIj09YVswXS50eXBlJiZhWzBdLmRvd25wYXltZW50PmIubWF4RG93bkZpbmFuY2U\/KCQoIiNwYXltZW50Q2FsY3VsYXRvckRvd25QYXltZW50RXJyb3JNZXNzYWdlIikuc2hvdygpLCQoIiNwYXltZW50Q2FsY3VsYXRvckRvd25QYXltZW50RXJyb3JNZXNzYWdlRmluYW5jZSIpLnNob3coKSwKJCgiI3BheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnRFcnJvck1lc3NhZ2VMZWFzZSIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyIikuaGlkZSgpLCQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXJXaXRoVGF4ZXMiKS5oaWRlKCksJCgiI3BheW1lbnRDYWxjdWxhdG9yTm90aWNlQ29udGFpbmVyIikucHJvcCgiaGlkZGVuIiwhMCkpOiJsZWFzZSI9PWFbMF0udHlwZSYmYVswXS5kb3ducGF5bWVudD5iLm1heERvd24\/KCQoIiNwYXltZW50Q2FsY3VsYXRvckRvd25QYXltZW50RXJyb3JNZXNzYWdlIikuc2hvdygpLCQoIiNwYXltZW50Q2FsY3VsYXRvckRvd25QYXltZW50RXJyb3JNZXNzYWdlRmluYW5jZSIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudEVycm9yTWVzc2FnZUxlYXNlIikuc2hvdygpLCQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXIiKS5oaWRlKCksJCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcldpdGhUYXhlcyIpLmhpZGUoKSwKJCgiI3BheW1lbnRDYWxjdWxhdG9yTm90aWNlQ29udGFpbmVyIikucHJvcCgiaGlkZGVuIiwhMCkpOigkKCIjcGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudEVycm9yTWVzc2FnZSIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudEVycm9yTWVzc2FnZUZpbmFuY2UiKS5oaWRlKCksJCgiI3BheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnRFcnJvck1lc3NhZ2VMZWFzZSIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JOb3RpY2VDb250YWluZXIiKS5wcm9wKCJoaWRkZW4iLCExKSwkKCIjcGF5bWVudENhbGN1bGF0b3JJbmNsdWRlVGF4Q2hlY2siKS5pcygiOmNoZWNrZWQiKT8oJCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcldpdGhUYXhlcyIpLnNob3coKSwkKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyIikuaGlkZSgpKTooJCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lciIpLnNob3coKSwkKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyV2l0aFRheGVzIikuaGlkZSgpKSk7CjU8YS5sZW5ndGg\/YS5mb3JFYWNoKGZ1bmN0aW9uKHYpeygwPT12LnRlcm0lMTJ8fDY0PT12LnRlcm18fDQwPT1jJiY1MT09di50ZXJtfHwyMD09YyYmWzI3LDMwLDM5LDQyXS5pbmNsdWRlcyh2LnRlcm0pfHxbMTYsMjFdLmluY2x1ZGVzKGMpfHw0Mj09di50ZXJtJiYxMDE0PT1sfHxbMzAsNDJdLmluY2x1ZGVzKHYudGVybSkmJls0NzE1NjIsNDcxNTYzLDQ3MTU2NF0uaW5jbHVkZXMocGFyc2VJbnQoc2V0dGluZ3Muc3R5bGVpZCkpfHwyNz09di50ZXJtJiYyNz09Y3x8NTI9PXYudGVybSYmMzk9PWMpJiZrLnB1c2godil9KTprPWE7dmFyIGg9e30scj0hMTtrLmZvckVhY2goZnVuY3Rpb24odixwKXtPYmplY3QuaGFzT3duKGgsdi50ZXJtKT9yPSEwOmhbdi50ZXJtXT17fTtoW3YudGVybV1bdi5yYXRlX3R5cGVdPXB9KTt2YXIgcT1bXSx1PSExLHk9ITE7Q29va2llcy5nZXQoInBheW1lbnRDYWxjdWxhdG9yU2VsZWN0ZWRPcHRpb25zIikmJih1PUNvb2tpZXMuZ2V0KCJwYXltZW50Q2FsY3VsYXRvclNlbGVjdGVkT3B0aW9ucyIpLnNwbGl0KCItIilbMV18fAohMSx5PUNvb2tpZXMuZ2V0KCJwYXltZW50Q2FsY3VsYXRvclNlbGVjdGVkT3B0aW9ucyIpLnNwbGl0KCItIilbMF18fCExKTtpZihhWzBdJiYibGVhc2UiPT1hWzBdLnR5cGUmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGFbMF0ua21fYWxsb3dhbmNlKXt2YXIgbj0wPGIuY3VycmVudFBheW1lbnRbMF0ua21fYWxsb3dhbmNlP2IuY3VycmVudFBheW1lbnRbMF0ua21fYWxsb3dhbmNlOjJFNDskKCIjcGF5bWVudENhbGN1bGF0b3JLbUFsbG93YW5jZSIpLnZhbChuKX1sZXQgeD1iLnRvdGFsSW5jZW50aXZlLHQ9cj8kKCIjTE9XRVNUUEFZTUVOVF9MQUJFTCIpLnZhbCgpOiIiLEE9cj8kKCIjTE9XRVNUUkFURV9MQUJFTCIpLnZhbCgpOiIiO3ZhciB6PTA7JCgiI3BheW1lbnRDYWxjdWxhdG9yTm90aWNlQ29udGFpbmVyIC5qcy10ZW1wS21BbGxvd2VkIikucmVtb3ZlKCk7JC5lYWNoKGssZnVuY3Rpb24odixwKXtpZighcS5pbmNsdWRlcyhwLnRlcm0pKXtxLnB1c2gocC50ZXJtKTt2YXIgbT0KInN0YW5kYXJkIj09cC5yYXRlX3R5cGV8fDI+T2JqZWN0LmtleXMoaFtwLnRlcm1dKS5sZW5ndGg\/cDprW2hbcC50ZXJtXS5zdGFuZGFyZF0sZz0yPT1PYmplY3Qua2V5cyhoW3AudGVybV0pLmxlbmd0aD9rW2hbcC50ZXJtXS5zdWJ2ZW50ZWRdOiExLEQ9Mj09T2JqZWN0LmtleXMoaFtwLnRlcm1dKS5sZW5ndGg\/aFtwLnRlcm1dLnN1YnZlbnRlZDohMSxDPXAudGVybSxGPXAuZG93bnBheW1lbnQudG9GaXhlZCgwKSxKPW0ucGF5bWVudC50b0ZpeGVkKGUpLEw9bS5wYXltZW50LnRvRml4ZWQoZSk7Sj1KLnJlcGxhY2UoL1wuKFswLTldKikvLGZ1bmN0aW9uKE8sSyl7cmV0dXJuJzxzdXAgY2xhc3M9InBkIj4nK0srIjwvc3VwPiJ9KTt2YXIgQj1tLnBheW1lbnRXaXRoVGF4ZXMudG9GaXhlZChlKSxFPW0ucGF5bWVudFdpdGhUYXhlcy50b0ZpeGVkKGUpO0I9Qi5yZXBsYWNlKC9cLihbMC05XSopLyxmdW5jdGlvbihPLEspe3JldHVybic8c3VwIGNsYXNzPSJwZCI+JytLKyI8L3N1cD4ifSk7CnZhciBUPW0ucmF0ZSxkYT0icGF5bWVudCIrdjt2PSJwYXltZW50Iit2KyJ3aXRoVGF4ZXMiO0M9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/IjxzcGFuPiIrQysiPC9zcGFuPiBtb250aCI6IjxzcGFuPiIrQysiPC9zcGFuPiBtb2lzIjtGPWA8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj4ke0Z9PC9zcGFuPmArKCQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyIgZG93biBwYXltZW50IjoiIGNvbXB0YW50Iik7dmFyIFU9IiIhPSQoIiNkaXNjbGFpbWVyUHJpY2VUZXh0IikudmFsKCk\/IjxkaXY+IiskKCIjZGlzY2xhaW1lclByaWNlVGV4dCIpLnZhbCgpKyI8L2Rpdj4iOiIrdHgiLE09bS5jYWxjdWxhdGVkRWZmZWN0aXZlUmF0ZT9tLmNhbGN1bGF0ZWRFZmZlY3RpdmVSYXRlOjAsUD0iIjswPHBhcnNlRmxvYXQoTSktbS5yYXRlJiYoUCs9Zm9ybWF0RWZmZWN0aXZlUmF0ZVRleHQoTSwiIiwnY2xhc3M9Ii1mczEwIicpKTt2YXIgVj1tLnRvdGFsT2JsaWdhdGlvbkFtb3VudD8KbS50b3RhbE9ibGlnYXRpb25BbW91bnQ6MCxXPSdkYXRhLXRvb2x0aXA9IicrbS50b29sdGlwKyciJyxYPSdkYXRhLXRvb2x0aXA9IicrbS50b29sdGlwV2l0aFRheGVzKyciJyxHLGVhPW51bGwhPShHPW0ubTJkX2ZpbmFuY2UpP0c6eDtHPSJzaW5nbGUtY29sdW1uIjtwPXUmJnU9PXAudGVybSYmeSYmeT09JCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGUgLmFjdGl2ZVBheW1lbnRUeXBlIikuYXR0cigiZGF0YS10eXBlIik\/ImNoZWNrZWQiOiIiO3ZhciBRPSJzbWFsbC1ib3giLEg9IiIsST0iIjtpZihnKXtHPSJsZWZ0LXNlY3Rpb24iO1E9IiI7SD1nLnBheW1lbnQudG9GaXhlZChlKTtsZXQgTz1nLnBheW1lbnQudG9GaXhlZChlKTtIPUgucmVwbGFjZSgvXC4oWzAtOV0qKS8sZnVuY3Rpb24oZmEsUil7cmV0dXJuJzxzdXAgY2xhc3M9InBkIj4nK1IrIjwvc3VwPiJ9KTtJPWcucGF5bWVudFdpdGhUYXhlcy50b0ZpeGVkKGUpO2xldCBLPWcucGF5bWVudFdpdGhUYXhlcy50b0ZpeGVkKGUpOwpJPUkucmVwbGFjZSgvXC4oWzAtOV0qKS8sZnVuY3Rpb24oZmEsUil7cmV0dXJuJzxzdXAgY2xhc3M9InBkIj4nK1IrIjwvc3VwPiJ9KTt2YXIgWT1nLnJhdGUudG9GaXhlZCgyKSxoYT0icGF5bWVudCIrRDtEPSJwYXltZW50IitEKyJ3aXRoVGF4ZXMiO2xldCBOPWcuY2FsY3VsYXRlZEVmZmVjdGl2ZVJhdGU\/Zy5jYWxjdWxhdGVkRWZmZWN0aXZlUmF0ZTowLFM9IiI7MDxwYXJzZUZsb2F0KE4pLWcucmF0ZSYmKFMrPWZvcm1hdEVmZmVjdGl2ZVJhdGVUZXh0KE4sIiIsJ2NsYXNzPSItZnMxMCInKSk7bGV0IFo9Zy50b3RhbE9ibGlnYXRpb25BbW91bnQ\/Zy50b3RhbE9ibGlnYXRpb25BbW91bnQ6MCxhYT0nZGF0YS10b29sdGlwPSInK2cudG9vbHRpcCsnIicsYmE9J2RhdGEtdG9vbHRpcD0iJytnLnRvb2x0aXBXaXRoVGF4ZXMrJyInLGNhPWcubTJkX2ZpbmFuY2U7SD0nXHQ8ZGl2IGlkPSInK2hhKyciIGNsYXNzPSJyaWdodC1zZWN0aW9uIHBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXJDb250YWluZXIiICcrCmFhKyc+XHRcdDxkaXYgY2xhc3M9Imxvd2VzdC1yYXRlIj4nK1krJyUgPGkgY2xhc3M9ImZhcyBmYS1pbmZvLWNpcmNsZSBpbmZvLWljb24gcGF5bWVudFRvb2x0aXAgcmlnaHRUb29sdGlwIiAnK2FhKyI+PC9pPiIrUysnPC9kaXY+XHRcdDxkaXYgY2xhc3M9ImFjdHVhbC1wYXltZW50Ij48c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj4nK0grJzwvc3Bhbj48L2Rpdj5cdFx0PGRpdiBjbGFzcz0iZGV0YWlsc1RheCI+JytVKyc8L2Rpdj5cdFx0PGRpdiBjbGFzcz0icmFkaW8tY29udGFpbmVyIj5cdFx0XHQ8aW5wdXRcdFx0XHRcdFx0dHlwZT0icmFkaW8iXHRcdFx0XHRcdG5hbWU9InNlbGVjdGVkUGF5bWVudCJcdFx0XHRcdFx0dmFsdWU9IicrZy50ZXJtKyciXHRcdFx0XHRcdGRhdGEtYmFzZXBheW1lbnQ9IicrZy5wYXltZW50KyciXHRcdFx0XHRcdGRhdGEtcmVhbHBheW1lbnQ9IicrZy5wYXltZW50KyciXHRcdFx0XHRcdGRhdGEtcmF0ZXR5cGU9IicrZy5yYXRlX3R5cGUrJyJcdFx0XHRcdFx0ZGF0YS1kaXNwbGF5ZWRwYXltZW50PSInKwpPKyciXHRcdFx0XHRcdGRhdGEtcmVzaWR1YWw9IicrZy5yZXNpZHVhbCsnIlx0XHRcdFx0XHRkYXRhLXRvdGFsaW50ZXJlc3Q9IicrZy50b3RhbEludGVyZXN0KyciXHRcdFx0XHRcdGRhdGEtbHV4ZVRheEFtb3VudD0iJytnLmx1eGVUYXhBbW91bnQrJyJcdFx0XHRcdFx0ZGF0YS1lZmZlY3RpdmVSYXRlPSInK04rJyJcdFx0XHRcdFx0ZGF0YS10b3RhbENvc3Q9IicrWisnIlx0XHRcdFx0XHRkYXRhLXJhdGU9IicrZy5yYXRlKyciICAgICAgICAgICAgICAgICBkYXRhLXJlc2lkdWFsPSInK2cucmVzaWR1YWxWYWx1ZSsnIiAgICAgICAgICAgICAgICAgZGF0YS10b3RhbGluY2VudGl2ZT0iJytjYSsnIiAgICAgICAgICAgICAgICAgZGF0YS1nc3Q9IjAiICAgICAgICAgICAgICAgICBkYXRhLWhzdD0iMCIgICAgICAgICAgICAgICAgIGRhdGEtcHN0PSIwIlx0XHRcdFx0Plx0XHRcdDxsYWJlbD4nK0ErIjwvbGFiZWw+XHRcdDwvZGl2Plx0PC9kaXY+IjtJPSdcdDxkaXYgaWQ9IicrRCsKJyIgY2xhc3M9InJpZ2h0LXNlY3Rpb24gcGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlckNvbnRhaW5lciIgJytiYSsnPlx0XHQ8ZGl2IGNsYXNzPSJsb3dlc3QtcmF0ZSI+JytZKyclIDxpIGNsYXNzPSJmYXMgZmEtaW5mby1jaXJjbGUgaW5mby1pY29uIHBheW1lbnRUb29sdGlwIHJpZ2h0VG9vbHRpcCIgJytiYSsiPjwvaT4iK1MrJzwvZGl2Plx0XHQ8ZGl2IGNsYXNzPSJhY3R1YWwtcGF5bWVudCI+PHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+JytJKyc8L3NwYW4+PC9kaXY+XHRcdDxkaXYgY2xhc3M9InJhZGlvLWNvbnRhaW5lciI+XHRcdFx0PGlucHV0XHRcdFx0XHRcdHR5cGU9InJhZGlvIlx0XHRcdFx0XHRuYW1lPSJzZWxlY3RlZFBheW1lbnRXaXRoVGF4ZXMiXHRcdFx0XHRcdHZhbHVlPSInK2cudGVybSsnIlx0XHRcdFx0XHRkYXRhLWJhc2VwYXltZW50PSInK2cucGF5bWVudCsnIlx0XHRcdFx0XHRkYXRhLXJlYWxwYXltZW50PSInK2cucGF5bWVudFdpdGhUYXhlcysKJyJcdFx0XHRcdFx0ZGF0YS1yYXRldHlwZT0iJytnLnJhdGVfdHlwZSsnIlx0XHRcdFx0XHRkYXRhLWRpc3BsYXllZHBheW1lbnQ9IicrSysnIlx0XHRcdFx0XHRkYXRhLXJlc2lkdWFsPSInK2cucmVzaWR1YWxXaXRoVGF4ZXMrJyJcdFx0XHRcdFx0ZGF0YS10b3RhbGludGVyZXN0PSInK2cudG90YWxJbnRlcmVzdFdpdGhUYXhlcysnIlx0XHRcdFx0XHRkYXRhLWx1eGVUYXhBbW91bnQ9IicrZy5sdXhlVGF4QW1vdW50KyciXHRcdFx0XHRcdGRhdGEtZWZmZWN0aXZlUmF0ZT0iJytOKyciXHRcdFx0XHRcdGRhdGEtdG90YWxDb3N0PSInK1orJyJcdFx0XHRcdFx0ZGF0YS1yYXRlPSInK2cucmF0ZSsnIiAgICAgICAgICAgICAgICAgZGF0YS1yZXNpZHVhbD0iJytnLnJlc2lkdWFsVmFsdWVXaXRoVGF4ZXMrJyIgICAgICAgICAgICAgICAgIGRhdGEtdG90YWxpbmNlbnRpdmU9IicrY2ErJyIgICAgICAgICAgICAgICAgIGRhdGEtZ3N0PSInK2cuZ3N0KyciICAgICAgICAgICAgICAgICBkYXRhLWhzdD0iJysKZy5oc3QrJyIgICAgICAgICAgICAgICAgIGRhdGEtcHN0PSInK2cucHN0KyciXHRcdFx0XHQ+XHRcdFx0PGxhYmVsPicrQSsiPC9sYWJlbD5cdFx0PC9kaXY+XHQ8L2Rpdj4ifWc9JzxkaXYgY2xhc3M9ImZpbmFuY2luZy1vcHRpb24gcGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlciAnK1ErJyI+XHQ8ZGl2IGNsYXNzPSJ0ZXJtIj4nK0MrJzwvZGl2Plx0PGRpdiBjbGFzcz0iZG93bi1wYXltZW50Ij4nK0YrJzwvZGl2Plx0PGRpdiBjbGFzcz0ic2VwYXJhdG9yUGF5Ij48L2Rpdj5cdDxkaXYgY2xhc3M9ImNvbnRlbnQtY29udGFpbmVyIj5cdFx0PGRpdiBpZD0iJytkYSsnIiBjbGFzcz0iJytHKycgcGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlckNvbnRhaW5lciIgJytXKyc+XHRcdFx0PGRpdiBjbGFzcz0ibG93ZXN0LXBheW1lbnQiPjxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPicrSisnPC9zcGFuPiA8aSBjbGFzcz0iZmFzIGZhLWluZm8tY2lyY2xlIGluZm8taWNvbiBwYXltZW50VG9vbHRpcCBsZWZ0VG9vbHRpcCIgJysKVysnPjwvaT48L2Rpdj5cdFx0XHQ8ZGl2IGNsYXNzPSJkZXRhaWxzVGF4Ij4nK1UrJzwvZGl2Plx0XHRcdDxkaXYgY2xhc3M9ImFjdHVhbC1yYXRlIj4nK1QrIiUgIitQKyc8L2Rpdj5cdFx0XHQ8ZGl2IGNsYXNzPSJyYWRpby1jb250YWluZXIiPlx0XHRcdFx0PGlucHV0IFx0XHRcdFx0XHR0eXBlPSJyYWRpbyJcdFx0XHRcdFx0JytwKydcdFx0XHRcdFx0bmFtZT0ic2VsZWN0ZWRQYXltZW50Ilx0XHRcdFx0XHR2YWx1ZT0iJyttLnRlcm0rJyJcdFx0XHRcdFx0ZGF0YS1iYXNlcGF5bWVudD0iJyttLnBheW1lbnQrJyJcdFx0XHRcdFx0ZGF0YS1yZWFscGF5bWVudD0iJyttLnBheW1lbnQrJyJcdFx0XHRcdFx0ZGF0YS1yYXRldHlwZT0iJyttLnJhdGVfdHlwZSsnIlx0XHRcdFx0XHRkYXRhLWRpc3BsYXllZHBheW1lbnQ9IicrTCsnIlx0XHRcdFx0XHRkYXRhLXJlc2lkdWFsPSInK20ucmVzaWR1YWwrJyJcdFx0XHRcdFx0ZGF0YS10b3RhbGludGVyZXN0PSInK20udG90YWxJbnRlcmVzdCsKJyJcdFx0XHRcdFx0ZGF0YS1sdXhlVGF4QW1vdW50PSInK20ubHV4ZVRheEFtb3VudCsnIlx0XHRcdFx0XHRkYXRhLWVmZmVjdGl2ZVJhdGU9IicrTSsnIlx0XHRcdFx0XHRkYXRhLXRvdGFsQ29zdD0iJytWKyciXHRcdFx0XHRcdGRhdGEtcmF0ZT0iJyttLnJhdGUrJyIgICAgICAgICAgICAgICAgIGRhdGEtcmVzaWR1YWw9IicrbS5yZXNpZHVhbFZhbHVlKyciICAgICAgICAgICAgICAgICBkYXRhLXRvdGFsaW5jZW50aXZlPSInK2VhKyciICAgICAgICAgICAgICAgICBkYXRhLWdzdD0iMCIgICAgICAgICAgICAgICAgIGRhdGEtaHN0PSIwIiAgICAgICAgICAgICAgICAgZGF0YS1wc3Q9IjAiXHRcdFx0XHQ+XHRcdFx0XHQ8bGFiZWw+Jyt0KyI8L2xhYmVsPlx0XHRcdDwvZGl2Plx0XHQ8L2Rpdj4iK0grIlx0PC9kaXY+PC9kaXY+IjtCPSc8ZGl2IGNsYXNzPSJmaW5hbmNpbmctb3B0aW9uIHBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXIgJytRKyciPlx0PGRpdiBjbGFzcz0idGVybSI+JysKQysnPC9kaXY+XHQ8ZGl2IGNsYXNzPSJkb3duLXBheW1lbnQiPicrRisnPC9kaXY+XHQ8ZGl2IGNsYXNzPSJzZXBhcmF0b3JQYXkiPjwvZGl2Plx0PGRpdiBjbGFzcz0iY29udGVudC1jb250YWluZXIiPlx0XHQ8ZGl2IGlkPSInK3YrJyIgY2xhc3M9IicrRysnIHBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXJDb250YWluZXIiICcrWCsnPlx0XHRcdDxkaXYgY2xhc3M9Imxvd2VzdC1wYXltZW50Ij48c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj4nK0IrJzwvc3Bhbj4gPGkgY2xhc3M9ImZhcyBmYS1pbmZvLWNpcmNsZSBpbmZvLWljb24gcGF5bWVudFRvb2x0aXAgbGVmdFRvb2x0aXAiICcrWCsnPjwvaT48L2Rpdj5cdFx0XHQ8ZGl2IGNsYXNzPSJhY3R1YWwtcmF0ZSI+JytUKyIlICIrUCsnPC9kaXY+XHRcdFx0PGRpdiBjbGFzcz0icmFkaW8tY29udGFpbmVyIj5cdFx0XHRcdDxpbnB1dCBcdFx0XHRcdFx0dHlwZT0icmFkaW8iXHRcdFx0XHRcdCcrcCsnXHRcdFx0XHRcdG5hbWU9InNlbGVjdGVkUGF5bWVudFdpdGhUYXhlcyJcdFx0XHRcdFx0dmFsdWU9IicrCm0udGVybSsnIlx0XHRcdFx0XHRkYXRhLWJhc2VwYXltZW50PSInK20ucGF5bWVudCsnIlx0XHRcdFx0XHRkYXRhLXJlYWxwYXltZW50PSInK20ucGF5bWVudFdpdGhUYXhlcysnIlx0XHRcdFx0XHRkYXRhLXJhdGV0eXBlPSInK20ucmF0ZV90eXBlKyciXHRcdFx0XHRcdGRhdGEtZGlzcGxheWVkcGF5bWVudD0iJytFKyciXHRcdFx0XHRcdGRhdGEtcmVzaWR1YWw9IicrbS5yZXNpZHVhbCsnIlx0XHRcdFx0XHRkYXRhLXRvdGFsaW50ZXJlc3Q9IicrbS50b3RhbEludGVyZXN0KyciXHRcdFx0XHRcdGRhdGEtbHV4ZVRheEFtb3VudD0iJyttLmx1eGVUYXhBbW91bnQrJyJcdFx0XHRcdFx0ZGF0YS1lZmZlY3RpdmVSYXRlPSInK00rJyJcdFx0XHRcdFx0ZGF0YS10b3RhbENvc3Q9IicrVisnIlx0XHRcdFx0XHRkYXRhLXJhdGU9IicrbS5yYXRlKyciICAgICAgICAgICAgICAgICBkYXRhLXJlc2lkdWFsPSInK20ucmVzaWR1YWxWYWx1ZVdpdGhUYXhlcysnIiAgICAgICAgICAgICAgICAgZGF0YS10b3RhbGluY2VudGl2ZT0iJysKeCsnIiAgICAgICAgICAgICAgICAgZGF0YS1nc3Q9IicrbS5nc3QrJyIgICAgICAgICAgICAgICAgIGRhdGEtaHN0PSInK20uaHN0KyciICAgICAgICAgICAgICAgICBkYXRhLXBzdD0iJyttLnBzdCsnIlx0XHRcdFx0Plx0XHRcdFx0PGxhYmVsPicrdCsiPC9sYWJlbD5cdFx0XHQ8L2Rpdj5cdFx0PC9kaXY+IitJKyJcdDwvZGl2PjwvZGl2PiI7MD09bS5wYXltZW50V2l0aFRheGVzJiYoQj0iIik7JCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lciIpLmFwcGVuZChnKTskKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyV2l0aFRheGVzIikuYXBwZW5kKEIpO3orK319KTtuPSQoJyNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciBpbnB1dFtuYW1lPSJzZWxlY3RlZFBheW1lbnQiXVtjaGVja2VkXScpLmxlbmd0aD8kKCcjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgaW5wdXRbbmFtZT0ic2VsZWN0ZWRQYXltZW50Il1bY2hlY2tlZF0nKVswXTokKCcjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgaW5wdXRbbmFtZT0ic2VsZWN0ZWRQYXltZW50Il0nKS5sYXN0KClbMF07CiQobikucHJvcCgiY2hlY2tlZCIsImNoZWNrZWQiKS50cmlnZ2VyKCJjaGFuZ2UiKTtuPXBheW1lbnRDYWxjdWxhdG9yRm9ybWF0TnVtYmVyKGFbMF0udG90YWwudG9GaXhlZCgwKSk7JCgiI3BheW1lbnRDYWxjdWxhdG9yTm90aWNlVG90YWwiKS50ZXh0KG4pOyJsZWFzZSI9PWFbMF0udHlwZT8obj1wYXltZW50Q2FsY3VsYXRvckZvcm1hdE51bWJlcihhWzBdLmttX2FsbG93YW5jZS50b0ZpeGVkKDApKSwkKCIjcGF5bWVudENhbGN1bGF0b3JOb3RpY2VLTSIpLnRleHQobiksJCgiLnBheW1lbnRDYWxjdWxhdG9yTm90aWNlQ2FzaCIpLnByb3AoImhpZGRlbiIsITApLCQoIiNwYXltZW50Q2FsY3VsYXRvck5vdGljZUxlYXNlIikuc2hvdygpLCQoIi5wYXltZW50Q2FsY3VsYXRvck5vdGljZUZpbmFuY2UiKS5oaWRlKCkpOigkKCIjcGF5bWVudENhbGN1bGF0b3JOb3RpY2VMZWFzZSIpLmhpZGUoKSwkKCIucGF5bWVudENhbGN1bGF0b3JOb3RpY2VDYXNoIikucHJvcCgiaGlkZGVuIiwhMCksCiQoIi5wYXltZW50Q2FsY3VsYXRvck5vdGljZUZpbmFuY2UiKS5zaG93KCkpOyQoIi5wYXltZW50Q2FsY3VsYXRvckNvbW1vbk5vdGljZSIpLnNob3coKTskKCIjcGF5bWVudENhbGN1bGF0b3JJbmNsdWRlVGF4Q2hlY2siKS5pcygiOmNoZWNrZWQiKT8oJCgiLnBheW1lbnRDYWxjdWxhdG9yVGF4ZUluY2x1ZGVkIikuc2hvdygpLCQoIi5wYXltZW50Q2FsY3VsYXRvclRheGVOb3RJbmNsdWRlZCIpLmhpZGUoKSk6KCQoIi5wYXltZW50Q2FsY3VsYXRvclRheGVJbmNsdWRlZCIpLmhpZGUoKSwkKCIucGF5bWVudENhbGN1bGF0b3JUYXhlTm90SW5jbHVkZWQiKS5zaG93KCkpOzA8ZD8oZD1wYXltZW50Q2FsY3VsYXRvckZvcm1hdE51bWJlcihkLnRvRml4ZWQoMCkpLCQoIiNwYXltZW50Q2FsY3VsYXRvck5vdGljZUZlZXMiKS50ZXh0KGQpLCQoIiNwYXltZW50Q2FsY3VsYXRvck5vdGljZUluY2x1ZGVkRmVlcyIpLnNob3coKSk6JCgiI3BheW1lbnRDYWxjdWxhdG9yTm90aWNlSW5jbHVkZWRGZWVzIikuaGlkZSgpOwokKCIjcGF5bWVudENhbGN1bGF0b3JDdXN0b21GZWVzICNwYXltZW50Q2FsY3VsYXRvckN1c3RvbUZlZXNMaXN0IikuZW1wdHkoKTtpZihiLmN1c3RvbUZlZXMubGVuZ3RoKXt2YXIgZj0iPHVsPiI7JC5lYWNoKGIuY3VzdG9tRmVlcyxmdW5jdGlvbih2LHApe3Y9ZXNjYXBlSFRNTCgkKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT9hdG9iKHAuZGVzY0VuKTphdG9iKHAuZGVzY0ZyKSk7cD1wYXltZW50Q2FsY3VsYXRvckZvcm1hdE51bWJlcihwLmFtb3VudC50b0ZpeGVkKDApKTtwPUQyQ1V0aWxzLkZvcm1hdC50b1ByaWNlKHApO2YrPSI8bGk+Iit2KyIgOiAiK3ArIjwvbGk+In0pO2YrPSI8L3VsPiI7JCgiI3BheW1lbnRDYWxjdWxhdG9yQ3VzdG9tRmVlcyAjcGF5bWVudENhbGN1bGF0b3JDdXN0b21GZWVzTGlzdCIpLmFwcGVuZChmKTskKCIjcGF5bWVudENhbGN1bGF0b3JDdXN0b21GZWVzIikuc2hvdygpfWVsc2UgJCgiI3BheW1lbnRDYWxjdWxhdG9yQ3VzdG9tRmVlcyIpLmhpZGUoKTsKZD0ibGVhc2UiPT1hWzBdLnR5cGU\/KCQoIiNwYXltZW50Q2FsY3VsYXRvckxlYXNlVGV4dCIpLnZhbCgpfHwiIikudG9Mb3dlckNhc2UoKTooJCgiI3BheW1lbnRDYWxjdWxhdG9yRmluYW5jZVRleHQiKS52YWwoKXx8IiIpLnRvTG93ZXJDYXNlKCk7JCgiI3BheW1lbnRDYWxjdWxhdG9yTm90aWNlVHlwZSIpLnRleHQoZCk7MDxhWzBdLnJlYmF0ZT8oYT0kKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iJCIrYVswXS5yZWJhdGU6YVswXS5yZWJhdGUrIiAkIiwkKCIjcGF5bWVudENhbGN1bGF0b3JOb3RpY2VSZWJhdGUiKS50ZXh0KGEpLCQoIiNwYXltZW50Q2FsY3VsYXRvck5vdGljZUluY2x1ZGVkUmViYXRlcyIpLnNob3coKSk6JCgiI3BheW1lbnRDYWxjdWxhdG9yTm90aWNlSW5jbHVkZWRSZWJhdGVzIikuaGlkZSgpO2lmKGIuY29uZGl0aW9uYWxSZWJhdGVzJiYwPGIuY29uZGl0aW9uYWxSZWJhdGVzLmxlbmd0aCl7dmFyIHc9IiI7Yi5jb25kaXRpb25hbFJlYmF0ZXMuZm9yRWFjaChmdW5jdGlvbih2KXt2YXIgcD0KcGF5bWVudENhbGN1bGF0b3JGb3JtYXROdW1iZXIodi5hbW91bnQudG9TdHJpbmcoKSk7dys9IjxsaT4iK3YubmFtZSsiOiAtIitEMkNVdGlscy5Gb3JtYXQudG9QcmljZShwKSsiPC9saT4ifSk7dyYmJCgiI3BheW1lbnRDYWxjdWxhdG9yTm90aWNlSW5jbHVkZWRSZWJhdGVzIikuYWZ0ZXIoJzxkaXYgaWQ9InBheW1lbnRDYWxjdWxhdG9yTm90aWNlQ29uZGl0aW9uYWxSZWJhdGVzIiBjbGFzcz0icGF5bWVudENhbGN1bGF0b3JOb3RpY2VTZWN0aW9uIj48c3Ryb25nPicrKCQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyJTZWxlY3RlZCBDb25kaXRpb25hbCBSZWJhdGVzOiI6IlJhYmFpcyBjb25kaXRpb25uZWxzIHPDg8KpbGVjdGlvbm7Dg8KpczoiKSsiPC9zdHJvbmc+PHVsPiIrdysiPC91bD48L2Rpdj4iKX1lbHNlICQoIiNwYXltZW50Q2FsY3VsYXRvck5vdGljZUNvbmRpdGlvbmFsUmViYXRlcyIpLnJlbW92ZSgpO3NldFBheW1lbnRDYWxjdWxhdG9yUG9wdXBUb29sdGlwKCl9CmZ1bmN0aW9uIHNldFBheW1lbnRDYWxjdWxhdG9yUG9wdXBUb29sdGlwKCl7aWYoIjEiPT0kKCIjaXNtb2JpbGUiKS52YWwoKSkkKCIjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXJDb250YWluZXIgLnBheW1lbnRUb29sdGlwIikuZWFjaChmdW5jdGlvbihkKXt0cnl7dmFyIGM9JCh0aGlzKS5hdHRyKCJkYXRhLXRvb2x0aXAiKSxiPSQodGhpcykuaGFzQ2xhc3MoImxlZnRUb29sdGlwIik\/Indlc3QiOiJlYXN0IjskKHRoaXMpLmRhcmtUb29sdGlwKHtjb250ZW50OmMsZ3Jhdml0eTpiLHRoZW1lOiJsaWdodCIsdHJpZ2dlcjoiY2xpY2siLGFuaW1hdGlvbjoiZmxpcEluIn0pfWNhdGNoKGUpe319KTtlbHNle2Zvcih2YXIgYT0wOzU+YTthKyspJCgiI2Rhcmt0b29sdGlwLXBheW1lbnQiK2EpLmxlbmd0aCYmKCQoIiNkYXJrdG9vbHRpcC1wYXltZW50IithKS5yZW1vdmUoKSwKJCgiI2Rhcmt0b29sdGlwLXBheW1lbnQiK2ErIndpdGhUYXhlcyIpLnJlbW92ZSgpKTskKCIjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXJDb250YWluZXIiKS5lYWNoKGZ1bmN0aW9uKCl7dHJ5e3ZhciBkPSQodGhpcykuYXR0cigiZGF0YS10b29sdGlwIiksYz0kKHRoaXMpLmZpbmQoIi5wYXltZW50VG9vbHRpcCIpLGI9ImVhc3QiO2MuaGFzQ2xhc3MoImxlZnRUb29sdGlwIik\/Yj0id2VzdCI6Yy5oYXNDbGFzcygicmlnaHRUb29sdGlwIikmJihiPSJlYXN0Iik7JCh0aGlzKS5kYXJrVG9vbHRpcCh7Y29udGVudDpkLGdyYXZpdHk6Yix0aGVtZToibGlnaHQiLHRyaWdnZXI6ImhvdmVyIn0pfWNhdGNoKGUpe319KX19CmZ1bmN0aW9uIHNldFBheW1lbnRDYWxjdWxhdG9yVmVoaWNsZUluZm8oYSl7dmFyIGQ9Z2V0UG9wQ29udGFpblNldHRpbmdzKCk7ZC52ZWhpY2xlSW5mbz1hOyQoIiNwYXltZW50Q2FsY3VsYXRvclZlaGljbGVJbmZvWWVhciIpLnRleHQoYS55ZWFyKTt2YXIgYz1hLkNGTW9kZWxOYW1lfHxhLm1vZGVsLGI9YS5tYWtlLnRvVXBwZXJDYXNlKCkrIiAiK2MudG9VcHBlckNhc2UoKTsiTUVSQ0VERVMtQkVOWiIhPWEubWFrZS50b1VwcGVyQ2FzZSgpfHwvXGJzcHJpbnRlclxiL2kudGVzdChjKXx8KGI9YS5tYWtlLnRvVXBwZXJDYXNlKCkpO2lmKCJidWlsZGFuZHByaWNlLmh0bWwiPT0kKCIjUEFHRUlEIikudmFsKCl8fGQuaGFzT3duUHJvcGVydHkoIm5vVHJpbVNlbGVjdCIpJiYidHJ1ZSI9PWQubm9UcmltU2VsZWN0fHwidXNlZGNhcnMuaHRtbCI9PSQoIiNQQUdFSUQiKS52YWwoKXx8ImNhcmRldGFpbC5odG1sIj09JCgiI1BBR0VJRCIpLnZhbCgpKWIrPSIgIithLkNGU3R5bGVOYW1lLnRvVXBwZXJDYXNlKCksCiQoIiNwYXltZW50Q2FsY3VsYXRvclRyaW1TZWxlY3QiKS5oaWRlKCk7JCgiI3BheW1lbnRDYWxjdWxhdG9yVmVoaWNsZUluZm9NYWtlTW9kZWxUcmltIikudGV4dChiKTtjPWEubWFrZSsifHx8IitjKyJ8fHwiK2EueWVhcjtkLmhhc093blByb3BlcnR5KCJzdG9ja051bWJlciIpJiYoYys9Inx8fChTdG9jazoiK2Quc3RvY2tOdW1iZXIrIikiKTtDb29raWVzLnNldCgibGFzdHZpZXdlZHZlaGljbGUiLGMsbnVsbCwiLyIpO2EuaW1hZ2VzWzBdJiYoYz0oYS5pbWFnZXNbMF0rIiIpLnJlcGxhY2UoL2h0dHAocz8pOlwvXC9tZWRpYS4oY2hyb21lZGF0YXxjYXJib29rKS5jb21cL01lZGlhR2FsbGVyeVwvbWVkaWFcLy8sIi8vY2FyaW1hZ2VzLmQyY21lZGlhLmNhL25ld2NhcnMvY2IlQ0IvJU1BS0UvJU1PREVMLyVZRUFSLyIpLnJlcGxhY2UoIiVDQiIsTWF0aC5yb3VuZCg5OSpNYXRoLnJhbmRvbSgpKSsxRTUpLnJlcGxhY2UoIiVNQUtFIixhLm1ha2UucmVwbGFjZSgiLSIsIl8iKSkucmVwbGFjZSgiJU1PREVMIiwKYS5tb2RlbC5yZXBsYWNlKCItIiwiXyIpKS5yZXBsYWNlKCIlWUVBUiIsYS55ZWFyKSwkKCIjcGF5bWVudENhbGN1bGF0b3JWZWhpY2xlSW1hZ2VEaXYiKS5odG1sKCc8aW1nIGlkPSJwYXltZW50Q2FsY3VsYXRvclZlaGljbGVJbWFnZSIgc3JjPSInK2MucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7IikucmVwbGFjZSgvJy9nLCImIzAzOTsiKSsnIiBjbGFzcz0icGF5bWVudENhbGN1bGF0b3JWZWhpY2xlSW1hZ2UiPicpKTskKCIjcGF5bWVudENhbGN1bGF0b3JUcmltU2VsZWN0IG9wdGlvbiIpLnJlbW92ZSgpOygidW5kZWZpbmVkIiE9dHlwZW9mIG5ld2NhckRldGFpbHM\/bmV3Y2FyRGV0YWlscy5hbGxTdHlsZXM6YS5tb2RlbEpTT04uc3R5bGVzKS5mb3JFYWNoKGZ1bmN0aW9uKGUpeyQoIiNwYXltZW50Q2FsY3VsYXRvclRyaW1TZWxlY3QiKS5hcHBlbmQobmV3IE9wdGlvbihlLkNGU3R5bGVOYW1lLAplLmlkKSl9KTskKCIjcGF5bWVudENhbGN1bGF0b3JUcmltU2VsZWN0IikudmFsKGQuc3R5bGVpZCk7Y2FsY1VwZGF0ZVBheW1lbnRJbmZvKCl9CmZ1bmN0aW9uIGNhbGNVcGRhdGVTdHlsZUluZm8oYSl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBuZXdjYXJEZXRhaWxzJiZuZXdjYXJEZXRhaWxzLmFjdGl2ZU1vZGVsKXt2YXIgZD1uZXdjYXJEZXRhaWxzLmFsbFN0eWxlcy5maWx0ZXIoZnVuY3Rpb24oYil7cmV0dXJuIGIuaWQ9PWF9KVswXTtkPWR8fG5ld2NhckRldGFpbHMuYWN0aXZlTW9kZWwuc3R5bGVzWzBdO2QubWFrZT1uZXdjYXJEZXRhaWxzLmFjdGl2ZU1vZGVsLm1ha2U7ZC5tb2RlbD1uZXdjYXJEZXRhaWxzLmFjdGl2ZU1vZGVsLm1vZGVsO2QuaW1hZ2VzPW5ld2NhckRldGFpbHMuYWN0aXZlTW9kZWwuaW1hZ2VzO3NldFBheW1lbnRDYWxjdWxhdG9yVmVoaWNsZUluZm8oZCl9ZWxzZXtkPXNldHRpbmdzLmhhc093blByb3BlcnR5KCJzdG9ja051bWJlciIpP3NldHRpbmdzLnN0b2NrTnVtYmVyOiIiO3ZhciBjPSgkKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iL2VuIjoiL2ZyIikrIi9hamF4L2dldFZlaGljbGVKc29uQnlTdHlsZUlEP3dzd2lkdGg9MCI7CiQuYWpheCh7dXJsOmMsdHlwZToiUE9TVCIsZGF0YVR5cGU6IkpTT04iLGRhdGE6e3N0eWxlaWQ6YSx2ZWhpY2xlaWQ6ZH0sc3VjY2VzczpmdW5jdGlvbihiKXtzZXRQYXltZW50Q2FsY3VsYXRvclZlaGljbGVJbmZvKGIpfX0pfX0KZnVuY3Rpb24gcGF5bWVudENhbGN1bGF0b3JQb3B1cEluaXQoKXt2YXIgYT1nZXRQb3BDb250YWluU2V0dGluZ3MoKTskKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50VHlwZSBsaSIpLnJlbW92ZUNsYXNzKCJhY3RpdmVQYXltZW50VHlwZSIpOyQoIiNwYXltZW50Q2FsY3VsYXRvcklzTmV3UG9wdXBFbmFibGVkIikudmFsKCk7IiIhPWEucHJvbW9CdXR0b25UZXh0JiYiMSIhPT1Db29raWVzLmdldCgicG9wdXBGb3JtRmlsbGVkIikmJiQoIiNwYXltZW50Q2FsY3VsYXRvcklzTmV3UG9wdXBFbmFibGVkIikudmFsKCk\/KC0xIT09YS5wcm9tb0J1dHRvblRleHQuaW5kZXhPZigiPGJyIikmJihhLnByb21vQnV0dG9uVGV4dD1hLnByb21vQnV0dG9uVGV4dC5zdWJzdHIoMCxhLnByb21vQnV0dG9uVGV4dC5pbmRleE9mKCI8YnIiKSkpLCQoIiNwYXltZW50Q2FsY3VsYXRvckNhbGxUb0FjdGlvbkNvbnRhaW5lciBhIikuaHRtbChhLnByb21vQnV0dG9uVGV4dCksJCgiI3BheW1lbnRDYWxjdWxhdG9yQ2FsbFRvQWN0aW9uQ29udGFpbmVyIikuc2hvdygpKToKJCgiI3BheW1lbnRDYWxjdWxhdG9yQ2FsbFRvQWN0aW9uQ29udGFpbmVyIikuaGlkZSgpO2xldCBkPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlIGxpW2RhdGEtdHlwZT0ibGVhc2luZyJdJyksYz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjcGF5bWVudENhbGN1bGF0b3JQYXltZW50VHlwZSBsaVtkYXRhLXR5cGU9ImZpbmFuY2luZyJdJyk7ZC5oaWRkZW49IjEiPT0oYS5ub01vdG9pbnNpZ2h0TGVhc2VQYXltZW50c3x8ITEpO2MuaGlkZGVuPSIxIj09KGEubm9Nb3RvaW5zaWdodEZpbmFuY2VQYXltZW50c3x8ITEpO2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciAuY2FsYy1wYXltZW50LWNhc2giKS5oaWRkZW49ITA7c2V0VGltZW91dCgoKT0+e2lmKF9sb2NhbFN0b3JhZ2VHZXQoInRyYWRlaW5fc3VibWl0X2RhdGEiKSYmIiI9PSQoIiNwYXltZW50VHJhZGVJblZhbHVlIikudmFsKCkpe3ZhciBiPQpKU09OLnBhcnNlKF9sb2NhbFN0b3JhZ2VHZXQoInRyYWRlaW5fc3VibWl0X2RhdGEiKSk7JCgiI3BheW1lbnRUcmFkZUluVmFsdWUiKS52YWwoYi52YWx1ZSk7X2xvY2FsU3RvcmFnZUdldCgidHJhZGVpbl9jdXJyZW50X3ZhbHVlIikmJihiPUpTT04ucGFyc2UoX2xvY2FsU3RvcmFnZUdldCgidHJhZGVpbl9jdXJyZW50X3ZhbHVlIikpLCQoIiNwYXltZW50VHJhZGVJblZhbHVlIikuYXR0cigiZGF0YS1jdXJyZW50IixiLnZhbHVlKSl9aWYoIiIhPSQoIiNwYXltZW50VHJhZGVJblZhbHVlIikudmFsKCkmJjA8JCgiI3BheW1lbnRUcmFkZUluVmFsdWUiKS52YWwoKSl7Yj1wYXJzZUludCgkKCIjcGF5bWVudFRyYWRlSW5WYWx1ZSIpLnZhbCgpKXx8MDt2YXIgZT1wYXJzZUludCgkKCIjcGF5bWVudFRyYWRlSW5WYWx1ZSIpLmF0dHIoImRhdGEtY3VycmVudCIpKXx8YjskKCIucGF5bWVudENhbGN1bGF0b3JUcmFkZUluVmFsdWUiKS52YWwoZSk7JCgiLnBheW1lbnRDYWxjdWxhdG9yVHJhZGVJblZhbHVlIikuYXR0cigibWF4IiwKYik7JCgiLnBheW1lbnRDYWxjdWxhdG9yVHJhZGVJbkJ1dHRvbiIpLmhpZGUoKTskKCIucGF5bWVudENhbGN1bGF0b3JUcmFkZUluVmFsdWUiKS5zaG93KCl9ZWxzZSAkKCIucGF5bWVudENhbGN1bGF0b3JUcmFkZUluVmFsdWUiKS52YWwoIiIpLCQoIi5wYXltZW50Q2FsY3VsYXRvclRyYWRlSW5CdXR0b24iKS5zaG93KCksJCgiLnBheW1lbnRDYWxjdWxhdG9yVHJhZGVJblZhbHVlIikuaGlkZSgpOyQoIi5wYXltZW50Q2FsY3VsYXRvclRyYWRlSW5WYWx1ZSIpLnRyaWdnZXIoImJsdXIiKTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEN0YVRyYWNrJiZDdGFUcmFjay5nZXRUcmFja1N0ZXAoIlBheW1lbnRDYWxjdWxhdG9yQWN0aW9uQm94Iikpe2xldCBrPW5ldyBDdXN0b21FdmVudCgidHJhY2tzdGVwLmNvbXBsZXRlIix7ZGV0YWlsOntzdGVwSWQ6IlBheW1lbnRDYWxjdWxhdG9yQWN0aW9uQm94Iixmb3JjZVVwZGF0ZTohMCxvbkNvbXBsZXRlOmg9PntoLmRhdGFzZXQuY29tcGxfdHh0X2ZyPQpoLmRhdGFzZXQuaW5pdF9jb21wbF90eHRfZnIucmVwbGFjZSgieyRQQVlNRU5UUkFURX0iLGN0YVBheW1lbnRUZXh0RnJbMF0pLnJlcGxhY2UoInskUEFZTUVOVFlQRX0iLGN0YVBheW1lbnRUZXh0RnJbMV0pO2guZGF0YXNldC5jb21wbF90eHRfZW49aC5kYXRhc2V0LmluaXRfY29tcGxfdHh0X2VuLnJlcGxhY2UoInskUEFZTUVOVFJBVEV9IixjdGFQYXltZW50VGV4dEVuWzBdKS5yZXBsYWNlKCJ7JFBBWU1FTlRZUEV9IixjdGFQYXltZW50VGV4dEVuWzFdKTtoPXtwYXltZW50Ont9fTtfbG9jYWxTdG9yYWdlR2V0KCJyZXRhaWxfdHJhY2tfZGF0YSIpJiYoaD1KU09OLnBhcnNlKF9sb2NhbFN0b3JhZ2VHZXQoInJldGFpbF90cmFja19kYXRhIikpKTtsZXQgcj0iRlJFTkNIIj09PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKT9jdGFQYXltZW50VGV4dEZyOmN0YVBheW1lbnRUZXh0RW47aC5wYXltZW50PXtsaXN0UHJpY2U6clsyXXx8IiIscGF5bWVudDpyWzBdfHwiIixyYXRlOnJbMV18fAoiIixwYXltZW50VmFsdWU6Y3RhUGF5bWVudFZhbHVlc3x8W119O19sb2NhbFN0b3JhZ2VTZXQoInJldGFpbF90cmFja19kYXRhIixKU09OLnN0cmluZ2lmeShoKSwzMCk7Q29va2llcy5zZXQoImN0YV9kYXRhX3ZhbGlkIiwxLDEsIi8iKX19fSk7Yj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjcGF5bWVudENhbGN1bGF0b3JDYWxsVG9BY3Rpb25Db250YWluZXIgYSIpO2IuaW5uZXJUZXh0PSJFTkdMSVNIIj09JCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpPyJDb25maXJtIjoiQ29uZmlybWVyIjtiLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixoPT57aC5wcmV2ZW50RGVmYXVsdCgpO2g9ImNhc2giPT09JCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGUgLmFjdGl2ZVBheW1lbnRUeXBlIikuYXR0cigiZGF0YS10eXBlIik7JCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lciIpLmlzKCI6aGlkZGVuIikmJiFofHxkb2N1bWVudC5kaXNwYXRjaEV2ZW50KGspOwokKCIjcGF5bWVudENhbGN1bGF0b3JQb3B1cENvbnRhaW5lciIpLnBvcHVwaXplKCkuY2xvc2UoKX0pO2U9aD0+e2g9ImNhc2giPT09JCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGUgLmFjdGl2ZVBheW1lbnRUeXBlIikuYXR0cigiZGF0YS10eXBlIik7JCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lciIpLmlzKCI6aGlkZGVuIikmJiFofHxkb2N1bWVudC5kaXNwYXRjaEV2ZW50KGspfTtsZXQgbD1hLnBheW1lbnRUeXBlO0Nvb2tpZXMuZ2V0KCJwYXltZW50Q2FsY3VsYXRvclNlbGVjdGVkT3B0aW9ucyIpJiYoYj1Db29raWVzLmdldCgicGF5bWVudENhbGN1bGF0b3JTZWxlY3RlZE9wdGlvbnMiKS5zcGxpdCgiLSIpLGw9InVuZGVmaW5lZCIhPWJbMF0\/YlswXTpsLGw9ImxlYXNpbmciPT09bD8ibGVhc2UiOiJmaW5hbmNpbmciPT09bD8iZmluYW5jZSI6bCk7ImxlYXNlIj09bCYmZD9kLmNsaWNrKCk6ImZpbmFuY2UiPT1sJiZjP2MuY2xpY2soKTpjYXNoVGFiLmNsaWNrKCk7CiQoIi5yZXZlYWwtbW9kYWwiKS5vZmYoInBvcHVwaXplci5jbG9zZSIsZSkub24oInBvcHVwaXplci5jbG9zZSIsZSk7JCgiI3BheW1lbnRDYWxjdWxhdG9yQ2FsbFRvQWN0aW9uQ29udGFpbmVyIikuc2hvdygpfX0sMTAwKTtjYWxjVXBkYXRlU3R5bGVJbmZvKGEuc3R5bGVpZCl9CmZ1bmN0aW9uIGNhbGNVcGRhdGVQYXltZW50SW5mbygpe3ZhciBhPWdldFBvcENvbnRhaW5TZXR0aW5ncygpLGQ9KCQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyIvZW4iOiIvZnIiKSsiL2FqYXgvZ2V0UGF5bWVudERhdGFGb3JTdHlsZUlEP3dzd2lkdGg9MCIsYz1hLnBheW1lbnRUeXBlLGI9MCxlPXBhcnNlSW50KCQoIi5wYXltZW50Q2FsY3VsYXRvclRyYWRlSW5WYWx1ZSIpLnZhbCgpfHwwKSxrPW51bGwsbD1udWxsLGg9Z2V0T3B0aW9uc0Ftb3VudChhKSxyPWdldEFjY2Vzc29yaWVzQW1vdW50KGEpLHE9Z2V0U2VsZWN0ZWRBY2Nlc3NvcmllcyhhKSx1PWdldFByb3RlY3Rpb25QbGFuc0Ftb3VudChhKSx5PWEuaGFzT3duUHJvcGVydHkoIm5vVHJpbVNlbGVjdCIpJiYidHJ1ZSI9PWEubm9UcmltU2VsZWN0fHwidXNlZGNhcnMuaHRtbCI9PSQoIiNQQUdFSUQiKS52YWwoKXx8ImNhcmRldGFpbC5odG1sIj09JCgiI1BBR0VJRCIpLnZhbCgpLApuPSExLHg9YS5oYXNPd25Qcm9wZXJ0eSgic3RvY2tOdW1iZXIiKT9hLnN0b2NrTnVtYmVyOiIiLHQ9YS5oYXNPd25Qcm9wZXJ0eSgidmluIik\/YS52aW46IiI7aWYoeSYmIXgpe3ZhciBBPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwaG9uZXN0b2NrbnVtYmVyIik7QSYmKHg9QS52YWx1ZXx8IiIpfXkmJiF0JiYoQT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGhvbmV2aW4iKSkmJih0PUEudmFsdWV8fCIiKTt5JiYhYS5zdHlsZWlkJiYoQT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWN0aXZlU3R5bGVJRCIpKSYmKGEuc3R5bGVpZD1BLnZhbHVlfHxhLnN0eWxlaWQpO0Nvb2tpZXMuZ2V0KCJwYXltZW50Q2FsY3VsYXRvclNlbGVjdGVkT3B0aW9ucyIpJiYobD1Db29raWVzLmdldCgicGF5bWVudENhbGN1bGF0b3JTZWxlY3RlZE9wdGlvbnMiKS5zcGxpdCgiLSIpLGM9InVuZGVmaW5lZCIhPWxbMF0\/bFswXTpjLG49bFsxXSxiPXBhcnNlSW50KGxbNF0pLWUsYj0wPmI\/MDpiLGs9CmxbMl0sbD1sWzNdKTthLm5vTW90b2luc2lnaHRMZWFzZVBheW1lbnRzJiYibGVhc2UiPT1jJiYoYz0iZmluYW5jZSIsbj0hMSxiPTAsbD1rPW51bGwpO2Eubm9Nb3RvaW5zaWdodEZpbmFuY2VQYXltZW50cyYmWyJmaW5hbmNlIiwiZmluYW5jaW5nIl0uaW5jbHVkZXMoYykmJihjPSJsZWFzZSIsbj0hMSxiPTAsbD1rPW51bGwpO2xldCB6PVtdO2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5jb25kaXRpb25hbC1yZWJhdGUtY2hlY2tib3giKS5mb3JFYWNoKGZ1bmN0aW9uKGYpe2YuY2hlY2tlZCYmKGY9Zi5nZXRBdHRyaWJ1dGUoImRhdGEtY29uZGl0aW9uYWwtcmViYXRlLWlkIikpJiZ6LnB1c2goZil9KTtjYWxjVXBkYXRlUGF5bWVudFhocj0kLmFqYXgoe3VybDpkLHR5cGU6IlBPU1QiLGRhdGFUeXBlOiJKU09OIixkYXRhOntzdHlsZWlkOmEuc3R5bGVpZCxwYXltZW50VHlwZTpjLGRvd25wYXltZW50OmUrYixvcHRpb25zQW1vdW50OmgscGF5bWVudEZyZXF1ZW5jeTprLGttQWxsb3dhbmNlOmwsCmlzSW52ZW50b3J5Onksb3B0aW9uczpoLHNuOngsdmluOnQsY29uZGl0aW9uYWxSZWJhdGVJZHM6ei5qb2luKCIsIiksYWNjZXNzb3JpZXM6cixzZWxlY3RlZEFjY2Vzc29yaWVzOnEscHJvdGVjdGlvblBsYW5zOnV9LHN1Y2Nlc3M6ZnVuY3Rpb24oZil7Zi5zZWxlY3RlZFRlcm09bjskKCIjbWF4RG93blBheW1lbnRGb3JUcmltIikudmFsKGYubWF4RG93bik7JCgiI21heERvd25QYXltZW50RmluYW5jZUZvclRyaW0iKS52YWwoZi5tYXhEb3duRmluYW5jZSk7JCgiI3BheW1lbnRDYWxjdWxhdG9yS21BbGxvd2FuY2Ugb3B0aW9uIikucmVtb3ZlKCk7JCgiI3BheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnQiKS52YWwoYik7Yz0ibGVhc2UiPT09Yz8ibGVhc2luZyI6ImZpbmFuY2UiPT09Yz8iZmluYW5jaW5nIjpjOyJjYXNoIj09PWMmJigkKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyIikuaGlkZSgpLCQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXJXaXRoVGF4ZXMiKS5oaWRlKCkpOwpmLmN1cnJlbnRQYXltZW50JiYwIT09Zi5jdXJyZW50UGF5bWVudC5sZW5ndGh8fCJjYXNoIj09PWM\/KCQoIiNwYXltZW50Q2FsY3VsYXRvckVycm9yTWVzc2FnZSIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudEVycm9yTWVzc2FnZSIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudEVycm9yTWVzc2FnZUZpbmFuY2UiKS5oaWRlKCksJCgiI3BheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnRFcnJvck1lc3NhZ2VMZWFzZSIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JPcHRpb25Db250YWluZXIiKS5zaG93KCksJCgiI3BheW1lbnRDYWxjdWxhdG9yTm90aWNlQ29udGFpbmVyIikucHJvcCgiaGlkZGVuIiwhMSksZi5jdXJyZW50UGF5bWVudCYmMDxmLmN1cnJlbnRQYXltZW50Lmxlbmd0aCYmKCQoIiNwYXltZW50Q2FsY3VsYXRvckludGVydmFsIikudmFsKGYuY3VycmVudFBheW1lbnRbMF0uaW50ZXJ2YWwpLGM9Y3x8KCJsZWFzZSI9PT0KZi5jdXJyZW50UGF5bWVudFswXS50eXBlPyJsZWFzaW5nIjoiZmluYW5jaW5nIikpKTooJCgiI3BheW1lbnRDYWxjdWxhdG9yT3B0aW9uQ29udGFpbmVyIikuaGlkZSgpLCQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXIiKS5oaWRlKCksJCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcldpdGhUYXhlcyIpLmhpZGUoKSwkKCIjcGF5bWVudENhbGN1bGF0b3JOb3RpY2VDb250YWluZXIiKS5wcm9wKCJoaWRkZW4iLCEwKSwkKCIjcGF5bWVudENhbGN1bGF0b3JFcnJvck1lc3NhZ2UiKS5zaG93KCkpOyQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlIGxpIikucmVtb3ZlQ2xhc3MoImFjdGl2ZVBheW1lbnRUeXBlIik7dm9pZCAwIT0kKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50VHlwZSBsaVtkYXRhLXR5cGU9JyIrYysiJ10iKSYmJCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGUgbGlbZGF0YS10eXBlPSciK2MrIiddIikuYWRkQ2xhc3MoImFjdGl2ZVBheW1lbnRUeXBlIik7CiJjYXNoIiE9PWMmJih2b2lkIDAhPWYuZmluYW5jZSYmMD09PWYuZmluYW5jZS5sZW5ndGg\/JCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGVGaW5hbmNlIikuaGlkZSgpOiQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlRmluYW5jZSIpLnNob3coKSx2b2lkIDAhPWYubGVhc2UmJjA9PT1mLmxlYXNlLmxlbmd0aD8kKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50VHlwZUxlYXNlIikuaGlkZSgpOiQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlTGVhc2UiKS5zaG93KCkpO2lmKGYubGVhc2UmJjA8Zi5sZWFzZS5sZW5ndGgpe3ZhciB3PVtdO2YubGVhc2UuZm9yRWFjaChmdW5jdGlvbihwKXstMT09JC5pbkFycmF5KHAua21fYWxsb3dhbmNlLHcpJiZ3LnB1c2gocC5rbV9hbGxvd2FuY2UpfSk7dy5mb3JFYWNoKGZ1bmN0aW9uKHApe3ZhciBtPXBheW1lbnRDYWxjdWxhdG9yRm9ybWF0TnVtYmVyKHAudG9GaXhlZCgwKSk7JCgiI3BheW1lbnRDYWxjdWxhdG9yS21BbGxvd2FuY2UiKS5hcHBlbmQobmV3IE9wdGlvbihtKwoiIGttIixwKSl9KTt2YXIgdj0yRTQ7Zi5jdXJyZW50UGF5bWVudFswXSYmInVuZGVmaW5lZCIhPT10eXBlb2YgZi5jdXJyZW50UGF5bWVudFswXS5rbV9hbGxvd2FuY2UmJih2PTA8Zi5jdXJyZW50UGF5bWVudFswXS5rbV9hbGxvd2FuY2U\/Zi5jdXJyZW50UGF5bWVudFswXS5rbV9hbGxvd2FuY2U6MkU0KTskKCIjcGF5bWVudENhbGN1bGF0b3JLbUFsbG93YW5jZSIpLnZhbCh2KX0ibGVhc2luZyI9PWM\/JCgiLnBheW1lbnRDYWxjdWxhdG9yS21BbGxvd2FuY2VDb250YWluZXIiKS5zaG93KCk6JCgiLnBheW1lbnRDYWxjdWxhdG9yS21BbGxvd2FuY2VDb250YWluZXIiKS5oaWRlKCk7Z2V0Q2FzaFByaWNlQmxvY2soZik7ImNhc2giPT09Yz9lbmFibGVDYXNoT3B0aW9uKCk6Zi5jdXJyZW50UGF5bWVudCYmZi5jdXJyZW50UGF5bWVudC5sZW5ndGgmJihjYWxjQ3VyUGF5bWVudD1mLHNob3dQYXltZW50cyhmLmN1cnJlbnRQYXltZW50LGYucGF5bWVudEZlZXMsZi5tYWtlaWQsZikpfX0pfQpmdW5jdGlvbiBlbmFibGVDYXNoT3B0aW9uKCl7JCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGUgbGkiKS5yZW1vdmVDbGFzcygiYWN0aXZlUGF5bWVudFR5cGUiKTskKCIjcGF5bWVudENhbGN1bGF0b3JQYXltZW50VHlwZSBsaVtkYXRhLXR5cGU9J2Nhc2gnXSIpLmFkZENsYXNzKCJhY3RpdmVQYXltZW50VHlwZSIpOyQoIi5wYXltZW50Q2FsY3VsYXRvcklucHV0Q29udGFpbmVyIikuaGlkZSgpOyQoIiNwYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXIiKS5oaWRlKCk7JCgiI3BheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcldpdGhUYXhlcyIpLmhpZGUoKTskKCIjcGF5bWVudENhbGN1bGF0b3JOb3RpY2VMZWFzZSIpLmhpZGUoKTskKCIucGF5bWVudENhbGN1bGF0b3JOb3RpY2VGaW5hbmNlIikuaGlkZSgpOyQoIiNwYXltZW50Q2FsY3VsYXRvckN1c3RvbUZlZXMiKS5oaWRlKCk7JCgiLnBheW1lbnRDYWxjdWxhdG9yQ29tbW9uTm90aWNlIikuaGlkZSgpOwokKCIjcGF5bWVudENhbGN1bGF0b3JOb3RpY2VJbmNsdWRlZEZlZXMiKS5oaWRlKCk7JCgiLnBheW1lbnRDYWxjdWxhdG9yTm90aWNlQ2FzaCIpLnByb3AoImhpZGRlbiIsITEpOyQoIiNwYXltZW50Q2FsY3VsYXRvckVycm9yTWVzc2FnZSIpLmhpZGUoKTskKCIjcGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudEVycm9yTWVzc2FnZSIpLmhpZGUoKTskKCIjcGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudEVycm9yTWVzc2FnZUZpbmFuY2UiKS5oaWRlKCk7JCgiI3BheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnRFcnJvck1lc3NhZ2VMZWFzZSIpLmhpZGUoKTskKCIjcGF5bWVudENhbGN1bGF0b3JPcHRpb25Db250YWluZXIiKS5zaG93KCk7ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyIC5jYWxjLXBheW1lbnQtY2FzaCIpLmhpZGRlbj0hMTskKCIjcGF5bWVudENhbGN1bGF0b3JOb3RpY2VDb250YWluZXIiKS5wcm9wKCJoaWRkZW4iLCExKTsKMT09JCgiI2lzRFJTaXRlIikubGVuZ3RoJiYiMSI9PSQoIiNpc0RSU2l0ZSIpLnZhbCgpJiZjaGFuZ2VQYWdlQ2FzaFZhbHVlKCl9CmZ1bmN0aW9uIGNoYW5nZVBhZ2VDYXNoVmFsdWUoKXtpZihudWxsIT09Y2FzaFByaWNlRm9yUGFnZSl7dmFyIGE9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/IkVOR0xJU0giOiJGUkVOQ0giLGQ9cGF5bWVudENhbGN1bGF0b3JGb3JtYXROdW1iZXIoY2FzaFByaWNlRm9yUGFnZS50b1N0cmluZygpKSxjPXN0b3JlLmdldCgiaTE4biIpLkRFRkFVTFRfUEFZTUVOVF9DQVNILGI9JzxzcGFuIGNsYXNzPSJ0eHQtcGF5bWVudCBmb3JtYXQtcHJpY2UiPicrZCsiPC9zcGFuPiIsZT1zdG9yZS5nZXQoImkxOG4iKS5MQUJFTF9CRUZPUkVfVEFYRVMudG9Mb3dlckNhc2UoKTskKCIucGF5bWVudFdyYXBwZXIgLnBheW1lbnRMaW5lMiwgLnBheW1lbnRXcmFwcGVyTW9iaWxlVkRQIC5wYXltZW50TGluZTEiKS5odG1sKGMpOyQoIi5wYXltZW50V3JhcHBlciAucGF5bWVudExpbmUxLCAucGF5bWVudFdyYXBwZXJNb2JpbGVWRFAgLnBheW1lbnRMaW5lMiIpLmh0bWwoYik7JCgiLnBheW1lbnRXcmFwcGVyIC5wYXltZW50TGluZTMsIC5wYXltZW50V3JhcHBlck1vYmlsZVZEUCAucGF5bWVudExpbmUzIikuaHRtbChlKTsKYT0iRU5HTElTSCI9PT1hPyIkIitkOmQrIiAkIjtjdGFQYXltZW50VGV4dEZyPVthLCJDb21wdGFudCIsIiJdO2N0YVBheW1lbnRUZXh0RW49W2EsIkNhc2giLCIiXTtjdGFQYXltZW50VmFsdWVzPVtjYXNoUHJpY2VGb3JQYWdlLDAsMCwiY2FzaCJdOyQoIi5ibnBfcGF5bWVudF9jb250YWluZXIiKS5sZW5ndGgmJigkKCIuYm5wX3BheW1lbnRfY29udGFpbmVyIikuaGlkZSgpLCQoIi5wYXltZW50SW5mb0J1YmJsZUJuUCIpLmhpZGUoKSk7JCgiI2Rhcmt0b29sdGlwLXBheW1lbnRXcmFwcGVyLCAjZGFya3Rvb2x0aXAtdmRwUGF5bWVudFRvb2x0aXAsICNkYXJrdG9vbHRpcC12ZHBJbmZvVG9vbHRpcCwgI2Rhcmt0b29sdGlwLXZkcFVzZWRJbmZvVG9vbHRpcCIpLnJlbW92ZSgpOyQoIi52ZHBQYXltZW50VG9vbHRpcCwgLnBheW1lbnRXcmFwcGVyIC52ZHBJbmZvVG9vbHRpcCwgLnBheW1lbnRXcmFwcGVyIC52ZHBVc2VkSW5mb1Rvb2x0aXAiKS5kYXJrVG9vbHRpcCh7b3BhY2l0eTowfSl9fQpmdW5jdGlvbiBnZXRDYXNoUHJpY2VCbG9jayhhKXt2YXIgZD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjcGF5bWVudENhbGN1bGF0b3JQb3B1cENvbnRhaW5lciIpLGM9Z2V0UG9wQ29udGFpblNldHRpbmdzKCksYj1jLmhhc093blByb3BlcnR5KCJub1RyaW1TZWxlY3QiKSYmInRydWUiPT1jLm5vVHJpbVNlbGVjdHx8InVzZWRjYXJzLmh0bWwiPT0kKCIjUEFHRUlEIikudmFsKCl8fCJjYXJkZXRhaWwuaHRtbCI9PSQoIiNQQUdFSUQiKS52YWwoKSxlPSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKXx8IkZSRU5DSCI7bGV0IGs9cGFyc2VJbnQoYS5vcmlnaW5hbFByaWNlfHxjLnZlaGljbGVJbmZvJiZjLnZlaGljbGVJbmZvLm1zcnBBbGxJbnx8MCk7dmFyIGw9cGF5bWVudENhbGN1bGF0b3JGb3JtYXROdW1iZXIoay50b1N0cmluZygpKTtsZXQgaD1kLnF1ZXJ5U2VsZWN0b3IoIi5jYWxjLXBheW1lbnQtY2FzaCIpO3ZhciByPSIxIj09ZC5xdWVyeVNlbGVjdG9yKCIjZGlzcGxheUJyZWFrZG93biIpLnZhbHVlOwpsZXQgcT0iMSI9PWQucXVlcnlTZWxlY3RvcigiI2hpZGVSZWJhdGVzIikudmFsdWU7dmFyIHU9IjEiPT1kLnF1ZXJ5U2VsZWN0b3IoIiNzY3JhdGNoT3JpZ2luYWxQcmljZSIpLnZhbHVlO2xldCB5PSJFTkdMSVNIIj09ZT8iU3RhcnRpbmcgYXQiOiLDg8KAIHBhcnRpciBkZSI7ZD0iRU5HTElTSCI9PWU\/IllvdXIgcHJpY2UiOiJWb3RyZSBwcml4IjtiJiYoeT0kKCIjTkVXSU5WX1BSSUNFX0xBQkVMX09SSUdJTkFMIikudmFsKCksZD0kKCIjTkVXSU5WX1BSSUNFX0xBQkVMX0ZJTkFMIikudmFsKCksYy52ZWhpY2xlSW5mbyYmeS5yZXBsYWNlKCJ7JE1BS0V9IixjLnZlaGljbGVJbmZvLm1ha2UpLnJlcGxhY2UoInskTU9ERUx9IixjLnZlaGljbGVJbmZvLkNGTW9kZWxOYW1lKS5yZXBsYWNlKCJ7JFZFUlNJT059IixjLnZlaGljbGVJbmZvLkNGU3R5bGVOYW1lKS5yZXBsYWNlKCJ7JFlFQVJ9IixjLnZlaGljbGVJbmZvLnllYXIpKTtsZXQgbj0iRU5HTElTSCI9PWU\/ImRlc2NFbiI6ImRlc2NGciI7CiQoIiNwYXltZW50Q2FsY3VsYXRvck5vdGljZVRvdGFsIikuaHRtbChrKTtjPXUmJmEucHJpY2VBbWVuZGVtZW50cyYmMD5hLnByaWNlQW1lbmRlbWVudHMudG90YWw\/InN0cmlrZS1wcmljZSI6IiI7bD1gCgkJPGRpdiBjbGFzcz0icHJpY2VSb3ciPgoJCQk8c3BhbiBjbGFzcz0icHJpY2VOYW1lIj4ke3ImJiFxP2Q6eX08L3NwYW4+CgkJCTxzcGFuIGNsYXNzPSJwcmljZS12YWx1ZSAkeyJmb3JtYXQtcHJpY2UifSAke2N9Ij4ke2x9PC9zcGFuPgoJCTwvZGl2PmA7aWYoMD09KGEucHJpY2VBbWVuZGVtZW50c3x8W10pLmxlbmd0aCloLmlubmVySFRNTD1sO2Vsc2V7dT0oYS5wcmljZUFtZW5kZW1lbnRzLmZlZXNMaXN0fHxbXSkucmVkdWNlKCh6LGYpPT57aWYoMD09Zi5hbW91bnQpcmV0dXJuIHo7bGV0IHc9cGF5bWVudENhbGN1bGF0b3JGb3JtYXROdW1iZXIoZi5hbW91bnQudG9TdHJpbmcoKSk7cmV0dXJuIHorYAoJCQk8ZGl2IGNsYXNzPSJwcmljZVJvdyI+CgkJCQk8c3BhbiBjbGFzcz0icHJpY2VOYW1lIj4ke2VzY2FwZUhUTUwoYXRvYihmW25dKSl9PC9zcGFuPgoJCQkJPHNwYW4gY2xhc3M9InByaWNlLXZhbHVlICR7ImZvcm1hdC1wcmljZSJ9Ij4ke3d9PC9zcGFuPgoJCQk8L2Rpdj4KCQlgfSwiIik7dmFyIHg9KGEucHJpY2VBbWVuZGVtZW50cy5pbmNlbnRpdmVzTGlzdHx8W10pLnJlZHVjZSgoeixmKT0+e2lmKDA9PWYuYW1vdW50KXJldHVybiB6O2xldCB3PXBheW1lbnRDYWxjdWxhdG9yRm9ybWF0TnVtYmVyKGYuYW1vdW50LnRvU3RyaW5nKCkpO3JldHVybiB6K2AKCQkJPGRpdiBjbGFzcz0icHJpY2VSb3ciPgoJCQkJPHNwYW4gY2xhc3M9InByaWNlTmFtZSI+JHtlc2NhcGVIVE1MKGF0b2IoZltuXSkpfTwvc3Bhbj4KCQkJCTxzcGFuIGNsYXNzPSJwcmljZS12YWx1ZSAkeyJmb3JtYXQtcHJpY2UifSI+LSR7d308L3NwYW4+CgkJCTwvZGl2PgoJCWB9LCIiKTtiPShhLnByaWNlQW1lbmRlbWVudHMucG9zdFRheEluY2VudGl2ZXNMaXN0fHxbXSkucmVkdWNlKCh6LGYpPT57aWYoMD09Zi5hbW91bnQpcmV0dXJuIHo7bGV0IHc9cGF5bWVudENhbGN1bGF0b3JGb3JtYXROdW1iZXIoZi5hbW91bnQudG9TdHJpbmcoKSk7cmV0dXJuIHorYAoJCQk8ZGl2IGNsYXNzPSJwcmljZVJvdyI+CgkJCQk8c3BhbiBjbGFzcz0icHJpY2VOYW1lIj4ke2VzY2FwZUhUTUwoYXRvYihmW25dKSl9PC9zcGFuPgoJCQkJPHNwYW4gY2xhc3M9InByaWNlLXZhbHVlICR7ImZvcm1hdC1wcmljZSJ9Ij4tJHt3fTwvc3Bhbj4KCQkJPC9kaXY+CgkJYH0sIiIpO3ZhciB0PWstKGEucHJpY2VBbWVuZGVtZW50cy50b3RhbEZlZXx8MCkrKGEucHJpY2VBbWVuZGVtZW50cy50b3RhbFJlYmF0ZXx8MCksQT0wPChhLnByaWNlQW1lbmRlbWVudHMuY29uZGl0aW9uYWxSZWJhdGVzVG90YWx8fDApO2U9QSYmYS5wcmljZUFtZW5kZW1lbnRzLmZpbmFsUHJpY2U\/YS5wcmljZUFtZW5kZW1lbnRzLmZpbmFsUHJpY2U6aztbIk5FV0NBUlMiLCJORVdDQVJERVRBSUxTIl0uaW5jbHVkZXMoc2l0ZVBhZ2UubmFtZSl8fCh0PWstKGEucHJpY2VBbWVuZGVtZW50cy50b3RhbEZlZXx8MCkrKGEucHJpY2VBbWVuZGVtZW50cy50b3RhbFJlYmF0ZXx8MCksZT1BJiZhLnByaWNlQW1lbmRlbWVudHMuZmluYWxQcmljZT9hLnByaWNlQW1lbmRlbWVudHMuZmluYWxQcmljZTprKTtjYXNoUHJpY2VGb3JQYWdlPWU7dD1wYXltZW50Q2FsY3VsYXRvckZvcm1hdE51bWJlcih0LnRvU3RyaW5nKCkpO2U9cGF5bWVudENhbGN1bGF0b3JGb3JtYXROdW1iZXIoZS50b1N0cmluZygpKTsKYT11Lmxlbmd0aHx8eC5sZW5ndGg7cj1yJiYhcSYmYT9gCgkJPGRpdiBjbGFzcz0icHJpY2VSb3ciPgoJCQk8c3BhbiBjbGFzcz0icHJpY2VOYW1lIj4ke3l9PC9zcGFuPgoJCQk8c3BhbiBjbGFzcz0icHJpY2UtdmFsdWUgJHsiZm9ybWF0LXByaWNlIn0gJHtjfSI+JHt0fTwvc3Bhbj4KCQk8L2Rpdj5gK3UreDoiIjthJiYobD1gCgkJCTxkaXYgY2xhc3M9InByaWNlUm93Ij4KCQkJCTxzcGFuIGNsYXNzPSJwcmljZU5hbWUiPiR7ZH08L3NwYW4+CgkJCQk8c3BhbiBjbGFzcz0iJHsiIiE9cj8icHJpY2VGaW5hbCI6IiJ9ICR7ImZvcm1hdC1wcmljZSJ9Ij4ke2V9PC9zcGFuPgoJCQk8L2Rpdj5gKTtoLmlubmVySFRNTD1yK2wrYn19CmZ1bmN0aW9uIGdldE9wdGlvbnNBbW91bnQoYSl7dmFyIGQ9YS5wYXltZW50T3B0aW9ucz9hLnBheW1lbnRPcHRpb25zOjA7YS5oYXNPd25Qcm9wZXJ0eSgibm9UcmltU2VsZWN0IikmJiJ0cnVlIj09YS5ub1RyaW1TZWxlY3R8fCJ1c2VkY2Fycy5odG1sIj09JCgiI1BBR0VJRCIpLnZhbCgpfHwkKCIjUEFHRUlEIikudmFsKCk7YT1hLmNvbnNpZGVySW52ZW50b3J5P2EuY29uc2lkZXJJbnZlbnRvcnk6IjAiO3ZhciBjPSJ1bmRlZmluZWQiIT10eXBlb2YgbW9kZWxDb25maWcmJiJmdW5jdGlvbiI9PT10eXBlb2YgbW9kZWxDb25maWcuZ2V0U2VsZWN0ZWRTdHlsZTtpZihjfHxhJiZjKWQ9bW9kZWxDb25maWcuZ2V0U2VsZWN0ZWRTdHlsZSgpLnNlbGVjdGVkT3B0aW9uc1RvdGFsLGE9cGFyc2VJbnQobW9kZWxDb25maWcuZ2V0U2VsZWN0ZWRTdHlsZSgpLmRlZmF1bHRPcHRpb25BbW91bnQpLDA8YSYmKGQtPWEsZD1NYXRoLm1heCgwLGQpKTtyZXR1cm4gZHx8MH0KZnVuY3Rpb24gZ2V0QWNjZXNzb3JpZXNBbW91bnQoYSl7dmFyIGQ9MDthLmhhc093blByb3BlcnR5KCJub1RyaW1TZWxlY3QiKSYmInRydWUiPT1hLm5vVHJpbVNlbGVjdHx8InVzZWRjYXJzLmh0bWwiPT0kKCIjUEFHRUlEIikudmFsKCl8fCQoIiNQQUdFSUQiKS52YWwoKTthPWEuY29uc2lkZXJJbnZlbnRvcnk\/YS5jb25zaWRlckludmVudG9yeToiMCI7dmFyIGM9InVuZGVmaW5lZCIhPXR5cGVvZiBtb2RlbENvbmZpZyYmImZ1bmN0aW9uIj09PXR5cGVvZiBtb2RlbENvbmZpZy5nZXRTZWxlY3RlZFN0eWxlOyhjfHxhJiZjKSYmdm9pZCAwIT1tb2RlbENvbmZpZy5nZXRTZWxlY3RlZFN0eWxlKCkuc2VsZWN0ZWRBY2NUb3RhbCYmKGQ9bW9kZWxDb25maWcuZ2V0U2VsZWN0ZWRTdHlsZSgpLnNlbGVjdGVkQWNjVG90YWwpO3JldHVybiBkfHwwfQpmdW5jdGlvbiBnZXRTZWxlY3RlZEFjY2Vzc29yaWVzKGEpe3ZhciBkPSIiO2E9YS5jb25zaWRlckludmVudG9yeT9hLmNvbnNpZGVySW52ZW50b3J5OiIwIjt2YXIgYz0idW5kZWZpbmVkIiE9dHlwZW9mIG1vZGVsQ29uZmlnJiYiZnVuY3Rpb24iPT09dHlwZW9mIG1vZGVsQ29uZmlnLmdldFNlbGVjdGVkU3R5bGU7KGN8fGEmJmMpJiZ2b2lkIDAhPW1vZGVsQ29uZmlnLmdldFNlbGVjdGVkU3R5bGUoKS5zZWxlY3RlZEFjY0lkcyYmKGQ9bW9kZWxDb25maWcuZ2V0U2VsZWN0ZWRTdHlsZSgpLnNlbGVjdGVkQWNjSWRzLmpvaW4oIiwiKSk7cmV0dXJuIGR8fCIifQpmdW5jdGlvbiBnZXRQcm90ZWN0aW9uUGxhbnNBbW91bnQoYSl7dmFyIGQ9MDthLmhhc093blByb3BlcnR5KCJub1RyaW1TZWxlY3QiKSYmInRydWUiPT1hLm5vVHJpbVNlbGVjdHx8InVzZWRjYXJzLmh0bWwiPT0kKCIjUEFHRUlEIikudmFsKCl8fCQoIiNQQUdFSUQiKS52YWwoKTthPWEuY29uc2lkZXJJbnZlbnRvcnk\/YS5jb25zaWRlckludmVudG9yeToiMCI7dmFyIGM9InVuZGVmaW5lZCIhPXR5cGVvZiBtb2RlbENvbmZpZyYmImZ1bmN0aW9uIj09PXR5cGVvZiBtb2RlbENvbmZpZy5nZXRTZWxlY3RlZFN0eWxlOyhjfHxhJiZjKSYmdm9pZCAwIT1tb2RlbENvbmZpZy5nZXRTZWxlY3RlZFN0eWxlKCkuc2VsZWN0ZWRQcm90ZWN0aW9uUGxhblRvdGFsJiYoZD1tb2RlbENvbmZpZy5nZXRTZWxlY3RlZFN0eWxlKCkuc2VsZWN0ZWRQcm90ZWN0aW9uUGxhblRvdGFsKTtyZXR1cm4gZHx8MH0KZnVuY3Rpb24gcGF5bWVudENhbGN1bGF0b3JGb3JtYXROdW1iZXIoYSl7cmV0dXJuIGEucmVwbGFjZSgvXEIoPz0oXGR7M30pKyg\/IVxkKSkvZywiLCIpfWZ1bmN0aW9uIHBheW1lbnRDYWxjdWxhdG9yQ2xpY2tlZFRyaWdnZXIoYSxkKXskKGEpLnRyaWdnZXIoInBheW1lbnRDYWxjdWxhdG9yLmNsaWNrIix7b3JpZ0V2ZW50OmR9KTthPW5ldyBFdmVudCgicGF5bWVudENhbGN1bGF0b3IuY2xpY2siKTtkb2N1bWVudC5kaXNwYXRjaEV2ZW50KGEpfWZ1bmN0aW9uIHBheW1lbnRDYWxjdWxhdG9yQ2xpY2tlZE5ld1ZEUFRyaWdnZXIoYSxkKXt2YXIgYz0kKCIjcG9wdXBtYWtlIikudmFsKCksYj0kKCIjcG9wdXBtb2RlbCIpLnZhbCgpLGU9JCgiI3BvcHVweWVhciIpLnZhbCgpO2dhVHJhY2soIl90cmFja0V2ZW50IiwiTmV3LVZEUC1PdXRib3VuZC1jbGlja3MiLCJDYWxjdWxhdHJpY2UiLGMrIi0iK2IrIi0iK2UpO3BheW1lbnRDYWxjdWxhdG9yQ2xpY2tlZFRyaWdnZXIoYSxkKX0KZnVuY3Rpb24gZm9ybWF0RWZmZWN0aXZlUmF0ZVRleHQoYSxkLGMpe2M9dm9pZCAwPT09Yz8iIjpjO2E9IjxzcGFuICIrZCsiPiIrYSsiPC9zcGFuPiUiO2E9IkVOR0xJU0giPT1hY3RpdmVMYW5nP2ErIiBBUFIiOiJUYXV4ICIrYTtyZXR1cm4gJCgiI2lzbW9iaWxlIikudmFsKCk\/Ijxici8+PGRpdiAiK2MrIj4oIithKyIpPC9kaXY+IjoiIDxkaXYgIitjKyI+KCAiK2ErIiApPC9kaXY+In07Ci8qKiAvbS9qcy92YW5pbGxhanMvaW1hc2subWluLmpzICoqLwohZnVuY3Rpb24odCxlKXsib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHMmJiJ1bmRlZmluZWQiIT10eXBlb2YgbW9kdWxlP2UoZXhwb3J0cyk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyJleHBvcnRzIl0sZSk6ZSgodD0idW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbFRoaXM\/Z2xvYmFsVGhpczp0fHxzZWxmKS5JTWFzaz17fSl9KHRoaXMsKGZ1bmN0aW9uKHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgZT0idW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbFRoaXM\/Z2xvYmFsVGhpczoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw\/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnt9LG49ZnVuY3Rpb24odCl7cmV0dXJuIHQmJnQuTWF0aD09TWF0aCYmdH0saT1uKCJvYmplY3QiPT10eXBlb2YgZ2xvYmFsVGhpcyYmZ2xvYmFsVGhpcyl8fG4oIm9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdyl8fG4oIm9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmKXx8bigib2JqZWN0Ij09dHlwZW9mIGUmJmUpfHxmdW5jdGlvbigpe3JldHVybiB0aGlzfSgpfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLHI9e30sdT1mdW5jdGlvbih0KXt0cnl7cmV0dXJuISF0KCl9Y2F0Y2godCl7cmV0dXJuITB9fSxzPSF1KChmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sMSx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSlbMV19KSksYT0hdSgoZnVuY3Rpb24oKXt2YXIgdD1mdW5jdGlvbigpe30uYmluZCgpO3JldHVybiJmdW5jdGlvbiIhPXR5cGVvZiB0fHx0Lmhhc093blByb3BlcnR5KCJwcm90b3R5cGUiKX0pKSxvPWEsbD1GdW5jdGlvbi5wcm90b3R5cGUuY2FsbCxoPW8\/bC5iaW5kKGwpOmZ1bmN0aW9uKCl7cmV0dXJuIGwuYXBwbHkobCxhcmd1bWVudHMpfSxjPXt9LGY9e30ucHJvcGVydHlJc0VudW1lcmFibGUscD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLGQ9cCYmIWYuY2FsbCh7MToyfSwxKTtjLmY9ZD9mdW5jdGlvbih0KXt2YXIgZT1wKHRoaXMsdCk7cmV0dXJuISFlJiZlLmVudW1lcmFibGV9OmY7dmFyIHYsZyxrPWZ1bmN0aW9uKHQsZSl7cmV0dXJue2VudW1lcmFibGU6ISgxJnQpLGNvbmZpZ3VyYWJsZTohKDImdCksd3JpdGFibGU6ISg0JnQpLHZhbHVlOmV9fSx5PWEsbT1GdW5jdGlvbi5wcm90b3R5cGUsYj1tLmJpbmQsXz1tLmNhbGwsQT15JiZiLmJpbmQoXyxfKSxDPXk\/ZnVuY3Rpb24odCl7cmV0dXJuIHQmJkEodCl9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZmdW5jdGlvbigpe3JldHVybiBfLmFwcGx5KHQsYXJndW1lbnRzKX19LEU9QyxGPUUoe30udG9TdHJpbmcpLFM9RSgiIi5zbGljZSksdz1mdW5jdGlvbih0KXtyZXR1cm4gUyhGKHQpLDgsLTEpfSxCPUMsRD11LHg9dyxNPWkuT2JqZWN0LE89QigiIi5zcGxpdCksUD1EKChmdW5jdGlvbigpe3JldHVybiFNKCJ6IikucHJvcGVydHlJc0VudW1lcmFibGUoMCl9KSk\/ZnVuY3Rpb24odCl7cmV0dXJuIlN0cmluZyI9PXgodCk\/Tyh0LCIiKTpNKHQpfTpNLFQ9aS5UeXBlRXJyb3IsST1mdW5jdGlvbih0KXtpZihudWxsPT10KXRocm93IFQoIkNhbid0IGNhbGwgbWV0aG9kIG9uICIrdCk7cmV0dXJuIHR9LGo9UCxSPUksVj1mdW5jdGlvbih0KXtyZXR1cm4gaihSKHQpKX0sTD1mdW5jdGlvbih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdH0sTj1MLFU9ZnVuY3Rpb24odCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0P251bGwhPT10Ok4odCl9LHo9aSxxPUwsSD1mdW5jdGlvbih0KXtyZXR1cm4gcSh0KT90OnZvaWQgMH0sWT1mdW5jdGlvbih0LGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDI\/SCh6W3RdKTp6W3RdJiZ6W3RdW2VdfSxaPUMoe30uaXNQcm90b3R5cGVPZiksRz1ZKCJuYXZpZ2F0b3IiLCJ1c2VyQWdlbnQiKXx8IiIsSz1pLCQ9RyxXPUsucHJvY2VzcyxYPUsuRGVubyxKPVcmJlcudmVyc2lvbnN8fFgmJlgudmVyc2lvbixRPUomJkoudjg7USYmKGc9KHY9US5zcGxpdCgiLiIpKVswXT4wJiZ2WzBdPDQ\/MTorKHZbMF0rdlsxXSkpLCFnJiYkJiYoISh2PSQubWF0Y2goL0VkZ2VcLyhcZCspLykpfHx2WzFdPj03NCkmJih2PSQubWF0Y2goL0Nocm9tZVwvKFxkKykvKSkmJihnPSt2WzFdKTt2YXIgdHQ9ZyxldD11LG50PSEhT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmIWV0KChmdW5jdGlvbigpe3ZhciB0PVN5bWJvbCgpO3JldHVybiFTdHJpbmcodCl8fCEoT2JqZWN0KHQpaW5zdGFuY2VvZiBTeW1ib2wpfHwhU3ltYm9sLnNoYW0mJnR0JiZ0dDw0MX0pKSxpdD1udCYmIVN5bWJvbC5zaGFtJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcixydD1ZLHV0PUwsc3Q9WixhdD1pdCxvdD1pLk9iamVjdCxsdD1hdD9mdW5jdGlvbih0KXtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3ZhciBlPXJ0KCJTeW1ib2wiKTtyZXR1cm4gdXQoZSkmJnN0KGUucHJvdG90eXBlLG90KHQpKX0saHQ9aS5TdHJpbmcsY3Q9TCxmdD1mdW5jdGlvbih0KXt0cnl7cmV0dXJuIGh0KHQpfWNhdGNoKHQpe3JldHVybiJPYmplY3QifX0scHQ9aS5UeXBlRXJyb3IsZHQ9ZnVuY3Rpb24odCl7aWYoY3QodCkpcmV0dXJuIHQ7dGhyb3cgcHQoZnQodCkrIiBpcyBub3QgYSBmdW5jdGlvbiIpfSx2dD1oLGd0PUwsa3Q9VSx5dD1pLlR5cGVFcnJvcixtdD17ZXhwb3J0czp7fX0sYnQ9aSxfdD1PYmplY3QuZGVmaW5lUHJvcGVydHksQXQ9ZnVuY3Rpb24odCxlKXt0cnl7X3QoYnQsdCx7dmFsdWU6ZSxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KX1jYXRjaChuKXtidFt0XT1lfXJldHVybiBlfSxDdD1BdCxFdD0iX19jb3JlLWpzX3NoYXJlZF9fIixGdD1pW0V0XXx8Q3QoRXQse30pLFN0PUZ0OyhtdC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFN0W3RdfHwoU3RbdF09dm9pZCAwIT09ZT9lOnt9KX0pKCJ2ZXJzaW9ucyIsW10pLnB1c2goe3ZlcnNpb246IjMuMjEuMCIsbW9kZToiZ2xvYmFsIixjb3B5cmlnaHQ6IqkgMjAxNC0yMDIyIERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpIixsaWNlbnNlOiJodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9ibG9iL3YzLjIxLjAvTElDRU5TRSIsc291cmNlOiJodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcyJ9KTt2YXIgd3Q9SSxCdD1pLk9iamVjdCxEdD1mdW5jdGlvbih0KXtyZXR1cm4gQnQod3QodCkpfSx4dD1EdCxNdD1DKHt9Lmhhc093blByb3BlcnR5KSxPdD1PYmplY3QuaGFzT3dufHxmdW5jdGlvbih0LGUpe3JldHVybiBNdCh4dCh0KSxlKX0sUHQ9QyxUdD0wLEl0PU1hdGgucmFuZG9tKCksanQ9UHQoMS4udG9TdHJpbmcpLFJ0PWZ1bmN0aW9uKHQpe3JldHVybiJTeW1ib2woIisodm9pZCAwPT09dD8iIjp0KSsiKV8iK2p0KCsrVHQrSXQsMzYpfSxWdD1pLEx0PW10LmV4cG9ydHMsTnQ9T3QsVXQ9UnQsenQ9bnQscXQ9aXQsSHQ9THQoIndrcyIpLFl0PVZ0LlN5bWJvbCxadD1ZdCYmWXQuZm9yLEd0PXF0P1l0Oll0JiZZdC53aXRob3V0U2V0dGVyfHxVdCxLdD1mdW5jdGlvbih0KXtpZighTnQoSHQsdCl8fCF6dCYmInN0cmluZyIhPXR5cGVvZiBIdFt0XSl7dmFyIGU9IlN5bWJvbC4iK3Q7enQmJk50KFl0LHQpP0h0W3RdPVl0W3RdOkh0W3RdPXF0JiZadD9adChlKTpHdChlKX1yZXR1cm4gSHRbdF19LCR0PWgsV3Q9VSxYdD1sdCxKdD1mdW5jdGlvbih0LGUpe3ZhciBuPXRbZV07cmV0dXJuIG51bGw9PW4\/dm9pZCAwOmR0KG4pfSxRdD1mdW5jdGlvbih0LGUpe3ZhciBuLGk7aWYoInN0cmluZyI9PT1lJiZndChuPXQudG9TdHJpbmcpJiYha3QoaT12dChuLHQpKSlyZXR1cm4gaTtpZihndChuPXQudmFsdWVPZikmJiFrdChpPXZ0KG4sdCkpKXJldHVybiBpO2lmKCJzdHJpbmciIT09ZSYmZ3Qobj10LnRvU3RyaW5nKSYmIWt0KGk9dnQobix0KSkpcmV0dXJuIGk7dGhyb3cgeXQoIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZSIpfSx0ZT1LdCxlZT1pLlR5cGVFcnJvcixuZT10ZSgidG9QcmltaXRpdmUiKSxpZT1mdW5jdGlvbih0LGUpe2lmKCFXdCh0KXx8WHQodCkpcmV0dXJuIHQ7dmFyIG4saT1KdCh0LG5lKTtpZihpKXtpZih2b2lkIDA9PT1lJiYoZT0iZGVmYXVsdCIpLG49JHQoaSx0LGUpLCFXdChuKXx8WHQobikpcmV0dXJuIG47dGhyb3cgZWUoIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZSIpfXJldHVybiB2b2lkIDA9PT1lJiYoZT0ibnVtYmVyIiksUXQodCxlKX0scmU9bHQsdWU9ZnVuY3Rpb24odCl7dmFyIGU9aWUodCwic3RyaW5nIik7cmV0dXJuIHJlKGUpP2U6ZSsiIn0sc2U9VSxhZT1pLmRvY3VtZW50LG9lPXNlKGFlKSYmc2UoYWUuY3JlYXRlRWxlbWVudCksbGU9ZnVuY3Rpb24odCl7cmV0dXJuIG9lP2FlLmNyZWF0ZUVsZW1lbnQodCk6e319LGhlPSFzJiYhdSgoZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KGxlKCJkaXYiKSwiYSIse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pLmF9KSksY2U9cyxmZT1oLHBlPWMsZGU9ayx2ZT1WLGdlPXVlLGtlPU90LHllPWhlLG1lPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7ci5mPWNlP21lOmZ1bmN0aW9uKHQsZSl7aWYodD12ZSh0KSxlPWdlKGUpLHllKXRyeXtyZXR1cm4gbWUodCxlKX1jYXRjaCh0KXt9aWYoa2UodCxlKSlyZXR1cm4gZGUoIWZlKHBlLmYsdCxlKSx0W2VdKX07dmFyIGJlPXt9LF9lPXMmJnUoKGZ1bmN0aW9uKCl7cmV0dXJuIDQyIT1PYmplY3QuZGVmaW5lUHJvcGVydHkoKGZ1bmN0aW9uKCl7fSksInByb3RvdHlwZSIse3ZhbHVlOjQyLHdyaXRhYmxlOiExfSkucHJvdG90eXBlfSkpLEFlPWksQ2U9VSxFZT1BZS5TdHJpbmcsRmU9QWUuVHlwZUVycm9yLFNlPWZ1bmN0aW9uKHQpe2lmKENlKHQpKXJldHVybiB0O3Rocm93IEZlKEVlKHQpKyIgaXMgbm90IGFuIG9iamVjdCIpfSx3ZT1zLEJlPWhlLERlPV9lLHhlPVNlLE1lPXVlLE9lPWkuVHlwZUVycm9yLFBlPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxUZT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLEllPSJlbnVtZXJhYmxlIixqZT0iY29uZmlndXJhYmxlIixSZT0id3JpdGFibGUiO2JlLmY9d2U\/RGU\/ZnVuY3Rpb24odCxlLG4pe2lmKHhlKHQpLGU9TWUoZSkseGUobiksImZ1bmN0aW9uIj09dHlwZW9mIHQmJiJwcm90b3R5cGUiPT09ZSYmInZhbHVlImluIG4mJlJlIGluIG4mJiFuLndyaXRhYmxlKXt2YXIgaT1UZSh0LGUpO2kmJmkud3JpdGFibGUmJih0W2VdPW4udmFsdWUsbj17Y29uZmlndXJhYmxlOmplIGluIG4\/bi5jb25maWd1cmFibGU6aS5jb25maWd1cmFibGUsZW51bWVyYWJsZTpJZSBpbiBuP24uZW51bWVyYWJsZTppLmVudW1lcmFibGUsd3JpdGFibGU6ITF9KX1yZXR1cm4gUGUodCxlLG4pfTpQZTpmdW5jdGlvbih0LGUsbil7aWYoeGUodCksZT1NZShlKSx4ZShuKSxCZSl0cnl7cmV0dXJuIFBlKHQsZSxuKX1jYXRjaCh0KXt9aWYoImdldCJpbiBufHwic2V0ImluIG4pdGhyb3cgT2UoIkFjY2Vzc29ycyBub3Qgc3VwcG9ydGVkIik7cmV0dXJuInZhbHVlImluIG4mJih0W2VdPW4udmFsdWUpLHR9O3ZhciBWZT1iZSxMZT1rLE5lPXM\/ZnVuY3Rpb24odCxlLG4pe3JldHVybiBWZS5mKHQsZSxMZSgxLG4pKX06ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0W2VdPW4sdH0sVWU9e2V4cG9ydHM6e319LHplPUwscWU9RnQsSGU9QyhGdW5jdGlvbi50b1N0cmluZyk7emUocWUuaW5zcGVjdFNvdXJjZSl8fChxZS5pbnNwZWN0U291cmNlPWZ1bmN0aW9uKHQpe3JldHVybiBIZSh0KX0pO3ZhciBZZSxaZSxHZSxLZT1xZS5pbnNwZWN0U291cmNlLCRlPUwsV2U9S2UsWGU9aS5XZWFrTWFwLEplPSRlKFhlKSYmL25hdGl2ZSBjb2RlLy50ZXN0KFdlKFhlKSksUWU9bXQuZXhwb3J0cyx0bj1SdCxlbj1RZSgia2V5cyIpLG5uPXt9LHJuPUplLHVuPWksc249Qyxhbj1VLG9uPU5lLGxuPU90LGhuPUZ0LGNuPWZ1bmN0aW9uKHQpe3JldHVybiBlblt0XXx8KGVuW3RdPXRuKHQpKX0sZm49bm4scG49Ik9iamVjdCBhbHJlYWR5IGluaXRpYWxpemVkIixkbj11bi5UeXBlRXJyb3Isdm49dW4uV2Vha01hcDtpZihybnx8aG4uc3RhdGUpe3ZhciBnbj1obi5zdGF0ZXx8KGhuLnN0YXRlPW5ldyB2biksa249c24oZ24uZ2V0KSx5bj1zbihnbi5oYXMpLG1uPXNuKGduLnNldCk7WWU9ZnVuY3Rpb24odCxlKXtpZih5bihnbix0KSl0aHJvdyBuZXcgZG4ocG4pO3JldHVybiBlLmZhY2FkZT10LG1uKGduLHQsZSksZX0sWmU9ZnVuY3Rpb24odCl7cmV0dXJuIGtuKGduLHQpfHx7fX0sR2U9ZnVuY3Rpb24odCl7cmV0dXJuIHluKGduLHQpfX1lbHNle3ZhciBibj1jbigic3RhdGUiKTtmbltibl09ITAsWWU9ZnVuY3Rpb24odCxlKXtpZihsbih0LGJuKSl0aHJvdyBuZXcgZG4ocG4pO3JldHVybiBlLmZhY2FkZT10LG9uKHQsYm4sZSksZX0sWmU9ZnVuY3Rpb24odCl7cmV0dXJuIGxuKHQsYm4pP3RbYm5dOnt9fSxHZT1mdW5jdGlvbih0KXtyZXR1cm4gbG4odCxibil9fXZhciBfbj17c2V0OlllLGdldDpaZSxoYXM6R2UsZW5mb3JjZTpmdW5jdGlvbih0KXtyZXR1cm4gR2UodCk\/WmUodCk6WWUodCx7fSl9LGdldHRlckZvcjpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIG47aWYoIWFuKGUpfHwobj1aZShlKSkudHlwZSE9PXQpdGhyb3cgZG4oIkluY29tcGF0aWJsZSByZWNlaXZlciwgIit0KyIgcmVxdWlyZWQiKTtyZXR1cm4gbn19fSxBbj1zLENuPU90LEVuPUZ1bmN0aW9uLnByb3RvdHlwZSxGbj1BbiYmT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixTbj1DbihFbiwibmFtZSIpLHduPVNuJiYic29tZXRoaW5nIj09PWZ1bmN0aW9uKCl7fS5uYW1lLEJuPVNuJiYoIUFufHxBbiYmRm4oRW4sIm5hbWUiKS5jb25maWd1cmFibGUpLERuPWkseG49TCxNbj1PdCxPbj1OZSxQbj1BdCxUbj1LZSxJbj17RVhJU1RTOlNuLFBST1BFUjp3bixDT05GSUdVUkFCTEU6Qm59LkNPTkZJR1VSQUJMRSxqbj1fbi5nZXQsUm49X24uZW5mb3JjZSxWbj1TdHJpbmcoU3RyaW5nKS5zcGxpdCgiU3RyaW5nIik7KFVlLmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4saSl7dmFyIHIsdT0hIWkmJiEhaS51bnNhZmUscz0hIWkmJiEhaS5lbnVtZXJhYmxlLGE9ISFpJiYhIWkubm9UYXJnZXRHZXQsbz1pJiZ2b2lkIDAhPT1pLm5hbWU\/aS5uYW1lOmU7eG4obikmJigiU3ltYm9sKCI9PT1TdHJpbmcobykuc2xpY2UoMCw3KSYmKG89IlsiK1N0cmluZyhvKS5yZXBsYWNlKC9eU3ltYm9sXCgoW14pXSopXCkvLCIkMSIpKyJdIiksKCFNbihuLCJuYW1lIil8fEluJiZuLm5hbWUhPT1vKSYmT24obiwibmFtZSIsbyksKHI9Um4obikpLnNvdXJjZXx8KHIuc291cmNlPVZuLmpvaW4oInN0cmluZyI9PXR5cGVvZiBvP286IiIpKSksdCE9PURuPyh1PyFhJiZ0W2VdJiYocz0hMCk6ZGVsZXRlIHRbZV0scz90W2VdPW46T24odCxlLG4pKTpzP3RbZV09bjpQbihlLG4pfSkoRnVuY3Rpb24ucHJvdG90eXBlLCJ0b1N0cmluZyIsKGZ1bmN0aW9uKCl7cmV0dXJuIHhuKHRoaXMpJiZqbih0aGlzKS5zb3VyY2V8fFRuKHRoaXMpfSkpO3ZhciBMbj17fSxObj1NYXRoLmNlaWwsVW49TWF0aC5mbG9vcix6bj1mdW5jdGlvbih0KXt2YXIgZT0rdDtyZXR1cm4gZSE9ZXx8MD09PWU\/MDooZT4wP1VuOk5uKShlKX0scW49em4sSG49TWF0aC5tYXgsWW49TWF0aC5taW4sWm49em4sR249TWF0aC5taW4sS249ZnVuY3Rpb24odCl7cmV0dXJuIHQ+MD9Hbihabih0KSw5MDA3MTk5MjU0NzQwOTkxKTowfSwkbj1LbixXbj1WLFhuPWZ1bmN0aW9uKHQsZSl7dmFyIG49cW4odCk7cmV0dXJuIG48MD9IbihuK2UsMCk6WW4obixlKX0sSm49ZnVuY3Rpb24odCl7cmV0dXJuICRuKHQubGVuZ3RoKX0sUW49ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUsbixpKXt2YXIgcix1PVduKGUpLHM9Sm4odSksYT1YbihpLHMpO2lmKHQmJm4hPW4pe2Zvcig7cz5hOylpZigocj11W2ErK10pIT1yKXJldHVybiEwfWVsc2UgZm9yKDtzPmE7YSsrKWlmKCh0fHxhIGluIHUpJiZ1W2FdPT09bilyZXR1cm4gdHx8YXx8MDtyZXR1cm4hdCYmLTF9fSx0aT17aW5jbHVkZXM6UW4oITApLGluZGV4T2Y6UW4oITEpfSxlaT1PdCxuaT1WLGlpPXRpLmluZGV4T2Yscmk9bm4sdWk9QyhbXS5wdXNoKSxzaT1mdW5jdGlvbih0LGUpe3ZhciBuLGk9bmkodCkscj0wLHU9W107Zm9yKG4gaW4gaSkhZWkocmksbikmJmVpKGksbikmJnVpKHUsbik7Zm9yKDtlLmxlbmd0aD5yOyllaShpLG49ZVtyKytdKSYmKH5paSh1LG4pfHx1aSh1LG4pKTtyZXR1cm4gdX0sYWk9WyJjb25zdHJ1Y3RvciIsImhhc093blByb3BlcnR5IiwiaXNQcm90b3R5cGVPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwidG9Mb2NhbGVTdHJpbmciLCJ0b1N0cmluZyIsInZhbHVlT2YiXSxvaT1zaSxsaT1haS5jb25jYXQoImxlbmd0aCIsInByb3RvdHlwZSIpO0xuLmY9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXN8fGZ1bmN0aW9uKHQpe3JldHVybiBvaSh0LGxpKX07dmFyIGhpPXt9O2hpLmY9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9sczt2YXIgY2k9WSxmaT1MbixwaT1oaSxkaT1TZSx2aT1DKFtdLmNvbmNhdCksZ2k9Y2koIlJlZmxlY3QiLCJvd25LZXlzIil8fGZ1bmN0aW9uKHQpe3ZhciBlPWZpLmYoZGkodCkpLG49cGkuZjtyZXR1cm4gbj92aShlLG4odCkpOmV9LGtpPU90LHlpPWdpLG1pPXIsYmk9YmUsX2k9dSxBaT1MLENpPS8jfFwucHJvdG90eXBlXC4vLEVpPWZ1bmN0aW9uKHQsZSl7dmFyIG49U2lbRmkodCldO3JldHVybiBuPT1CaXx8biE9d2kmJihBaShlKT9faShlKTohIWUpfSxGaT1FaS5ub3JtYWxpemU9ZnVuY3Rpb24odCl7cmV0dXJuIFN0cmluZyh0KS5yZXBsYWNlKENpLCIuIikudG9Mb3dlckNhc2UoKX0sU2k9RWkuZGF0YT17fSx3aT1FaS5OQVRJVkU9Ik4iLEJpPUVpLlBPTFlGSUxMPSJQIixEaT1FaSx4aT1pLE1pPXIuZixPaT1OZSxQaT1VZS5leHBvcnRzLFRpPUF0LElpPWZ1bmN0aW9uKHQsZSxuKXtmb3IodmFyIGk9eWkoZSkscj1iaS5mLHU9bWkuZixzPTA7czxpLmxlbmd0aDtzKyspe3ZhciBhPWlbc107a2kodCxhKXx8biYma2kobixhKXx8cih0LGEsdShlLGEpKX19LGppPURpLFJpPWZ1bmN0aW9uKHQsZSl7dmFyIG4saSxyLHUscyxhPXQudGFyZ2V0LG89dC5nbG9iYWwsbD10LnN0YXQ7aWYobj1vP3hpOmw\/eGlbYV18fFRpKGEse30pOih4aVthXXx8e30pLnByb3RvdHlwZSlmb3IoaSBpbiBlKXtpZih1PWVbaV0scj10Lm5vVGFyZ2V0R2V0PyhzPU1pKG4saSkpJiZzLnZhbHVlOm5baV0sIWppKG8\/aTphKyhsPyIuIjoiIyIpK2ksdC5mb3JjZWQpJiZ2b2lkIDAhPT1yKXtpZih0eXBlb2YgdT09dHlwZW9mIHIpY29udGludWU7SWkodSxyKX0odC5zaGFtfHxyJiZyLnNoYW0pJiZPaSh1LCJzaGFtIiwhMCksUGkobixpLHUsdCl9fSxWaT1zaSxMaT1haSxOaT1PYmplY3Qua2V5c3x8ZnVuY3Rpb24odCl7cmV0dXJuIFZpKHQsTGkpfSxVaT1zLHppPUMscWk9aCxIaT11LFlpPU5pLFppPWhpLEdpPWMsS2k9RHQsJGk9UCxXaT1PYmplY3QuYXNzaWduLFhpPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxKaT16aShbXS5jb25jYXQpLFFpPSFXaXx8SGkoKGZ1bmN0aW9uKCl7aWYoVWkmJjEhPT1XaSh7YjoxfSxXaShYaSh7fSwiYSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7WGkodGhpcywiYiIse3ZhbHVlOjMsZW51bWVyYWJsZTohMX0pfX0pLHtiOjJ9KSkuYilyZXR1cm4hMDt2YXIgdD17fSxlPXt9LG49U3ltYm9sKCksaT0iYWJjZGVmZ2hpamtsbW5vcHFyc3QiO3JldHVybiB0W25dPTcsaS5zcGxpdCgiIikuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZVt0XT10fSkpLDchPVdpKHt9LHQpW25dfHxZaShXaSh7fSxlKSkuam9pbigiIikhPWl9KSk\/ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49S2kodCksaT1hcmd1bWVudHMubGVuZ3RoLHI9MSx1PVppLmYscz1HaS5mO2k+cjspZm9yKHZhciBhLG89JGkoYXJndW1lbnRzW3IrK10pLGw9dT9KaShZaShvKSx1KG8pKTpZaShvKSxoPWwubGVuZ3RoLGM9MDtoPmM7KWE9bFtjKytdLFVpJiYhcWkocyxvLGEpfHwoblthXT1vW2FdKTtyZXR1cm4gbn06V2ksdHI9UWk7Umkoe3RhcmdldDoiT2JqZWN0IixzdGF0OiEwLGZvcmNlZDpPYmplY3QuYXNzaWduIT09dHJ9LHthc3NpZ246dHJ9KTt2YXIgZXI9e307ZXJbS3QoInRvU3RyaW5nVGFnIildPSJ6Ijt2YXIgbnI9aSxpcj0iW29iamVjdCB6XSI9PT1TdHJpbmcoZXIpLHJyPUwsdXI9dyxzcj1LdCgidG9TdHJpbmdUYWciKSxhcj1uci5PYmplY3Qsb3I9IkFyZ3VtZW50cyI9PXVyKGZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c30oKSksbHI9aXI\/dXI6ZnVuY3Rpb24odCl7dmFyIGUsbixpO3JldHVybiB2b2lkIDA9PT10PyJVbmRlZmluZWQiOm51bGw9PT10PyJOdWxsIjoic3RyaW5nIj09dHlwZW9mKG49ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbZV19Y2F0Y2godCl7fX0oZT1hcih0KSxzcikpP246b3I\/dXIoZSk6Ik9iamVjdCI9PShpPXVyKGUpKSYmcnIoZS5jYWxsZWUpPyJBcmd1bWVudHMiOml9LGhyPWkuU3RyaW5nLGNyPWZ1bmN0aW9uKHQpe2lmKCJTeW1ib2wiPT09bHIodCkpdGhyb3cgVHlwZUVycm9yKCJDYW5ub3QgY29udmVydCBhIFN5bWJvbCB2YWx1ZSB0byBhIHN0cmluZyIpO3JldHVybiBocih0KX0sZnI9em4scHI9Y3IsZHI9SSx2cj1pLlJhbmdlRXJyb3IsZ3I9ZnVuY3Rpb24odCl7dmFyIGU9cHIoZHIodGhpcykpLG49IiIsaT1mcih0KTtpZihpPDB8fGk9PTEvMCl0aHJvdyB2cigiV3JvbmcgbnVtYmVyIG9mIHJlcGV0aXRpb25zIik7Zm9yKDtpPjA7KGk+Pj49MSkmJihlKz1lKSkxJmkmJihuKz1lKTtyZXR1cm4gbn07Umkoe3RhcmdldDoiU3RyaW5nIixwcm90bzohMH0se3JlcGVhdDpncn0pO3ZhciBrcj1DLHlyPUtuLG1yPWNyLGJyPUksX3I9a3IoZ3IpLEFyPWtyKCIiLnNsaWNlKSxDcj1NYXRoLmNlaWwsRXI9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUsbixpKXt2YXIgcix1LHM9bXIoYnIoZSkpLGE9eXIobiksbz1zLmxlbmd0aCxsPXZvaWQgMD09PWk\/IiAiOm1yKGkpO3JldHVybiBhPD1vfHwiIj09bD9zOigodT1fcihsLENyKChyPWEtbykvbC5sZW5ndGgpKSkubGVuZ3RoPnImJih1PUFyKHUsMCxyKSksdD9zK3U6dStzKX19LEZyPXtzdGFydDpFcighMSksZW5kOkVyKCEwKX0sU3I9L1ZlcnNpb25cLzEwKD86XC5cZCspezEsMn0oPzogW1x3Li9dKyk\/KD86IE1vYmlsZVwvXHcrKT8gU2FmYXJpXC8vLnRlc3QoRyksd3I9RnIuc3RhcnQ7Umkoe3RhcmdldDoiU3RyaW5nIixwcm90bzohMCxmb3JjZWQ6U3J9LHtwYWRTdGFydDpmdW5jdGlvbih0KXtyZXR1cm4gd3IodGhpcyx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KTt2YXIgQnI9RnIuZW5kO2Z1bmN0aW9uIERyKHQpe3JldHVybiBEcj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sRHIodCl9ZnVuY3Rpb24geHIodCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBNcih0LGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgaT1lW25dO2kuZW51bWVyYWJsZT1pLmVudW1lcmFibGV8fCExLGkuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBpJiYoaS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsaS5rZXksaSl9fWZ1bmN0aW9uIE9yKHQsZSxuKXtyZXR1cm4gZSYmTXIodC5wcm90b3R5cGUsZSksbiYmTXIodCxuKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSx0fWZ1bmN0aW9uIFByKHQsZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUmJm51bGwhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7dC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGUmJklyKHQsZSl9ZnVuY3Rpb24gVHIodCl7cmV0dXJuIFRyPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24odCl7cmV0dXJuIHQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCl9LFRyKHQpfWZ1bmN0aW9uIElyKHQsZSl7cmV0dXJuIElyPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5fX3Byb3RvX189ZSx0fSxJcih0LGUpfWZ1bmN0aW9uIGpyKHQsZSl7aWYobnVsbD09dClyZXR1cm57fTt2YXIgbixpLHI9ZnVuY3Rpb24odCxlKXtpZihudWxsPT10KXJldHVybnt9O3ZhciBuLGkscj17fSx1PU9iamVjdC5rZXlzKHQpO2ZvcihpPTA7aTx1Lmxlbmd0aDtpKyspbj11W2ldLGUuaW5kZXhPZihuKT49MHx8KHJbbl09dFtuXSk7cmV0dXJuIHJ9KHQsZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHU9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0KTtmb3IoaT0wO2k8dS5sZW5ndGg7aSsrKW49dVtpXSxlLmluZGV4T2Yobik+PTB8fE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh0LG4pJiYocltuXT10W25dKX1yZXR1cm4gcn1mdW5jdGlvbiBScih0LGUpe2lmKGUmJigib2JqZWN0Ij09dHlwZW9mIGV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlKSlyZXR1cm4gZTtpZih2b2lkIDAhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKHZvaWQgMD09PXQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gdH0odCl9ZnVuY3Rpb24gVnIodCl7dmFyIGU9ZnVuY3Rpb24oKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLChmdW5jdGlvbigpe30pKSksITB9Y2F0Y2godCl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciBuLGk9VHIodCk7aWYoZSl7dmFyIHI9VHIodGhpcykuY29uc3RydWN0b3I7bj1SZWZsZWN0LmNvbnN0cnVjdChpLGFyZ3VtZW50cyxyKX1lbHNlIG49aS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIFJyKHRoaXMsbil9fWZ1bmN0aW9uIExyKHQsZSl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsZSkmJm51bGwhPT0odD1Ucih0KSk7KTtyZXR1cm4gdH1mdW5jdGlvbiBOcigpe3JldHVybiBOcj0idW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0OmZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1Mcih0LGUpO2lmKGkpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaSxlKTtyZXR1cm4gci5nZXQ\/ci5nZXQuY2FsbChhcmd1bWVudHMubGVuZ3RoPDM\/dDpuKTpyLnZhbHVlfX0sTnIuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIFVyKHQsZSxuLGkpe3JldHVybiBVcj0idW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3Quc2V0P1JlZmxlY3Quc2V0OmZ1bmN0aW9uKHQsZSxuLGkpe3ZhciByLHU9THIodCxlKTtpZih1KXtpZigocj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHUsZSkpLnNldClyZXR1cm4gci5zZXQuY2FsbChpLG4pLCEwO2lmKCFyLndyaXRhYmxlKXJldHVybiExfWlmKHI9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihpLGUpKXtpZighci53cml0YWJsZSlyZXR1cm4hMTtyLnZhbHVlPW4sT2JqZWN0LmRlZmluZVByb3BlcnR5KGksZSxyKX1lbHNlIWZ1bmN0aW9uKHQsZSxuKXtlIGluIHQ\/T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnRbZV09bn0oaSxlLG4pO3JldHVybiEwfSxVcih0LGUsbixpKX1mdW5jdGlvbiB6cih0LGUsbixpLHIpe2lmKCFVcih0LGUsbixpfHx0KSYmcil0aHJvdyBuZXcgRXJyb3IoImZhaWxlZCB0byBzZXQgcHJvcGVydHkiKTtyZXR1cm4gbn1mdW5jdGlvbiBxcih0LGUpe3JldHVybiBmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiB0fSh0KXx8ZnVuY3Rpb24odCxlKXt2YXIgbj1udWxsPT10P251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXXx8dFsiQEBpdGVyYXRvciJdO2lmKG51bGw9PW4pcmV0dXJuO3ZhciBpLHIsdT1bXSxzPSEwLGE9ITE7dHJ5e2ZvcihuPW4uY2FsbCh0KTshKHM9KGk9bi5uZXh0KCkpLmRvbmUpJiYodS5wdXNoKGkudmFsdWUpLCFlfHx1Lmxlbmd0aCE9PWUpO3M9ITApO31jYXRjaCh0KXthPSEwLHI9dH1maW5hbGx5e3RyeXtzfHxudWxsPT1uLnJldHVybnx8bi5yZXR1cm4oKX1maW5hbGx5e2lmKGEpdGhyb3cgcn19cmV0dXJuIHV9KHQsZSl8fGZ1bmN0aW9uKHQsZSl7aWYoIXQpcmV0dXJuO2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gSHIodCxlKTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkuc2xpY2UoOCwtMSk7Ik9iamVjdCI9PT1uJiZ0LmNvbnN0cnVjdG9yJiYobj10LmNvbnN0cnVjdG9yLm5hbWUpO2lmKCJNYXAiPT09bnx8IlNldCI9PT1uKXJldHVybiBBcnJheS5mcm9tKHQpO2lmKCJBcmd1bWVudHMiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIEhyKHQsZSl9KHQsZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBIcih0LGUpeyhudWxsPT1lfHxlPnQubGVuZ3RoKSYmKGU9dC5sZW5ndGgpO2Zvcih2YXIgbj0wLGk9bmV3IEFycmF5KGUpO248ZTtuKyspaVtuXT10W25dO3JldHVybiBpfVJpKHt0YXJnZXQ6IlN0cmluZyIscHJvdG86ITAsZm9yY2VkOlNyfSx7cGFkRW5kOmZ1bmN0aW9uKHQpe3JldHVybiBCcih0aGlzLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pLFJpKHtnbG9iYWw6ITB9LHtnbG9iYWxUaGlzOml9KTt2YXIgWXI9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe3hyKHRoaXMsdCksT2JqZWN0LmFzc2lnbih0aGlzLHtpbnNlcnRlZDoiIixyYXdJbnNlcnRlZDoiIixza2lwOiExLHRhaWxTaGlmdDowfSxlKX1yZXR1cm4gT3IodCxbe2tleToiYWdncmVnYXRlIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yYXdJbnNlcnRlZCs9dC5yYXdJbnNlcnRlZCx0aGlzLnNraXA9dGhpcy5za2lwfHx0LnNraXAsdGhpcy5pbnNlcnRlZCs9dC5pbnNlcnRlZCx0aGlzLnRhaWxTaGlmdCs9dC50YWlsU2hpZnQsdGhpc319LHtrZXk6Im9mZnNldCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGFpbFNoaWZ0K3RoaXMuaW5zZXJ0ZWQubGVuZ3RofX1dKSx0fSgpO2Z1bmN0aW9uIFpyKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdHx8dCBpbnN0YW5jZW9mIFN0cmluZ312YXIgR3I9Ik5PTkUiLEtyPSJMRUZUIiwkcj0iRk9SQ0VfTEVGVCIsV3I9IlJJR0hUIixYcj0iRk9SQ0VfUklHSFQiO2Z1bmN0aW9uIEpyKHQpe3JldHVybiB0LnJlcGxhY2UoLyhbLiorP149IToke30oKXxbXF1cL1xcXSkvZywiXFwkMSIpfWZ1bmN0aW9uIFFyKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpP3Q6W3QsbmV3IFlyXX1mdW5jdGlvbiB0dSh0LGUpe2lmKGU9PT10KXJldHVybiEwO3ZhciBuLGk9QXJyYXkuaXNBcnJheShlKSxyPUFycmF5LmlzQXJyYXkodCk7aWYoaSYmcil7aWYoZS5sZW5ndGghPXQubGVuZ3RoKXJldHVybiExO2ZvcihuPTA7bjxlLmxlbmd0aDtuKyspaWYoIXR1KGVbbl0sdFtuXSkpcmV0dXJuITE7cmV0dXJuITB9aWYoaSE9cilyZXR1cm4hMTtpZihlJiZ0JiYib2JqZWN0Ij09PURyKGUpJiYib2JqZWN0Ij09PURyKHQpKXt2YXIgdT1lIGluc3RhbmNlb2YgRGF0ZSxzPXQgaW5zdGFuY2VvZiBEYXRlO2lmKHUmJnMpcmV0dXJuIGUuZ2V0VGltZSgpPT10LmdldFRpbWUoKTtpZih1IT1zKXJldHVybiExO3ZhciBhPWUgaW5zdGFuY2VvZiBSZWdFeHAsbz10IGluc3RhbmNlb2YgUmVnRXhwO2lmKGEmJm8pcmV0dXJuIGUudG9TdHJpbmcoKT09dC50b1N0cmluZygpO2lmKGEhPW8pcmV0dXJuITE7dmFyIGw9T2JqZWN0LmtleXMoZSk7Zm9yKG49MDtuPGwubGVuZ3RoO24rKylpZighT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbFtuXSkpcmV0dXJuITE7Zm9yKG49MDtuPGwubGVuZ3RoO24rKylpZighdHUodFtsW25dXSxlW2xbbl1dKSlyZXR1cm4hMTtyZXR1cm4hMH1yZXR1cm4hKCFlfHwhdHx8ImZ1bmN0aW9uIiE9dHlwZW9mIGV8fCJmdW5jdGlvbiIhPXR5cGVvZiB0KSYmZS50b1N0cmluZygpPT09dC50b1N0cmluZygpfXZhciBldT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxuLGkscil7Zm9yKHhyKHRoaXMsdCksdGhpcy52YWx1ZT1lLHRoaXMuY3Vyc29yUG9zPW4sdGhpcy5vbGRWYWx1ZT1pLHRoaXMub2xkU2VsZWN0aW9uPXI7dGhpcy52YWx1ZS5zbGljZSgwLHRoaXMuc3RhcnRDaGFuZ2VQb3MpIT09dGhpcy5vbGRWYWx1ZS5zbGljZSgwLHRoaXMuc3RhcnRDaGFuZ2VQb3MpOyktLXRoaXMub2xkU2VsZWN0aW9uLnN0YXJ0fXJldHVybiBPcih0LFt7a2V5OiJzdGFydENoYW5nZVBvcyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIE1hdGgubWluKHRoaXMuY3Vyc29yUG9zLHRoaXMub2xkU2VsZWN0aW9uLnN0YXJ0KX19LHtrZXk6Imluc2VydGVkQ291bnQiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnNvclBvcy10aGlzLnN0YXJ0Q2hhbmdlUG9zfX0se2tleToiaW5zZXJ0ZWQiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlLnN1YnN0cih0aGlzLnN0YXJ0Q2hhbmdlUG9zLHRoaXMuaW5zZXJ0ZWRDb3VudCl9fSx7a2V5OiJyZW1vdmVkQ291bnQiLGdldDpmdW5jdGlvbigpe3JldHVybiBNYXRoLm1heCh0aGlzLm9sZFNlbGVjdGlvbi5lbmQtdGhpcy5zdGFydENoYW5nZVBvc3x8dGhpcy5vbGRWYWx1ZS5sZW5ndGgtdGhpcy52YWx1ZS5sZW5ndGgsMCl9fSx7a2V5OiJyZW1vdmVkIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vbGRWYWx1ZS5zdWJzdHIodGhpcy5zdGFydENoYW5nZVBvcyx0aGlzLnJlbW92ZWRDb3VudCl9fSx7a2V5OiJoZWFkIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZS5zdWJzdHJpbmcoMCx0aGlzLnN0YXJ0Q2hhbmdlUG9zKX19LHtrZXk6InRhaWwiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlLnN1YnN0cmluZyh0aGlzLnN0YXJ0Q2hhbmdlUG9zK3RoaXMuaW5zZXJ0ZWRDb3VudCl9fSx7a2V5OiJyZW1vdmVEaXJlY3Rpb24iLGdldDpmdW5jdGlvbigpe3JldHVybiF0aGlzLnJlbW92ZWRDb3VudHx8dGhpcy5pbnNlcnRlZENvdW50P0dyOnRoaXMub2xkU2VsZWN0aW9uLmVuZCE9PXRoaXMuY3Vyc29yUG9zJiZ0aGlzLm9sZFNlbGVjdGlvbi5zdGFydCE9PXRoaXMuY3Vyc29yUG9zfHx0aGlzLm9sZFNlbGVjdGlvbi5lbmQhPT10aGlzLm9sZFNlbGVjdGlvbi5zdGFydD9LcjpXcn19XSksdH0oKSxudT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06IiIsbj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MCxpPWFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwO3hyKHRoaXMsdCksdGhpcy52YWx1ZT1lLHRoaXMuZnJvbT1uLHRoaXMuc3RvcD1pfXJldHVybiBPcih0LFt7a2V5OiJ0b1N0cmluZyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZX19LHtrZXk6ImV4dGVuZCIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy52YWx1ZSs9U3RyaW5nKHQpfX0se2tleToiYXBwZW5kVG8iLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LmFwcGVuZCh0aGlzLnRvU3RyaW5nKCkse3RhaWw6ITB9KS5hZ2dyZWdhdGUodC5fYXBwZW5kUGxhY2Vob2xkZXIoKSl9fSx7a2V5OiJzdGF0ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJue3ZhbHVlOnRoaXMudmFsdWUsZnJvbTp0aGlzLmZyb20sc3RvcDp0aGlzLnN0b3B9fSxzZXQ6ZnVuY3Rpb24odCl7T2JqZWN0LmFzc2lnbih0aGlzLHQpfX0se2tleToidW5zaGlmdCIsdmFsdWU6ZnVuY3Rpb24odCl7aWYoIXRoaXMudmFsdWUubGVuZ3RofHxudWxsIT10JiZ0aGlzLmZyb20+PXQpcmV0dXJuIiI7dmFyIGU9dGhpcy52YWx1ZVswXTtyZXR1cm4gdGhpcy52YWx1ZT10aGlzLnZhbHVlLnNsaWNlKDEpLGV9fSx7a2V5OiJzaGlmdCIsdmFsdWU6ZnVuY3Rpb24oKXtpZighdGhpcy52YWx1ZS5sZW5ndGgpcmV0dXJuIiI7dmFyIHQ9dGhpcy52YWx1ZVt0aGlzLnZhbHVlLmxlbmd0aC0xXTtyZXR1cm4gdGhpcy52YWx1ZT10aGlzLnZhbHVlLnNsaWNlKDAsLTEpLHR9fV0pLHR9KCk7ZnVuY3Rpb24gaXUodCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOnt9O3JldHVybiBuZXcgaXUuSW5wdXRNYXNrKHQsZSl9dmFyIHJ1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXt4cih0aGlzLHQpLHRoaXMuX3ZhbHVlPSIiLHRoaXMuX3VwZGF0ZShPYmplY3QuYXNzaWduKHt9LHQuREVGQVVMVFMsZSkpLHRoaXMuaXNJbml0aWFsaXplZD0hMH1yZXR1cm4gT3IodCxbe2tleToidXBkYXRlT3B0aW9ucyIsdmFsdWU6ZnVuY3Rpb24odCl7T2JqZWN0LmtleXModCkubGVuZ3RoJiZ0aGlzLndpdGhWYWx1ZVJlZnJlc2godGhpcy5fdXBkYXRlLmJpbmQodGhpcyx0KSl9fSx7a2V5OiJfdXBkYXRlIix2YWx1ZTpmdW5jdGlvbih0KXtPYmplY3QuYXNzaWduKHRoaXMsdCl9fSx7a2V5OiJzdGF0ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJue192YWx1ZTp0aGlzLnZhbHVlfX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuX3ZhbHVlPXQuX3ZhbHVlfX0se2tleToicmVzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fdmFsdWU9IiJ9fSx7a2V5OiJ2YWx1ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ZhbHVlfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5yZXNvbHZlKHQpfX0se2tleToicmVzb2x2ZSIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmVzZXQoKSx0aGlzLmFwcGVuZCh0LHtpbnB1dDohMH0sIiIpLHRoaXMuZG9Db21taXQoKSx0aGlzLnZhbHVlfX0se2tleToidW5tYXNrZWRWYWx1ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWV9LHNldDpmdW5jdGlvbih0KXt0aGlzLnJlc2V0KCksdGhpcy5hcHBlbmQodCx7fSwiIiksdGhpcy5kb0NvbW1pdCgpfX0se2tleToidHlwZWRWYWx1ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9QYXJzZSh0aGlzLnZhbHVlKX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMudmFsdWU9dGhpcy5kb0Zvcm1hdCh0KX19LHtrZXk6InJhd0lucHV0VmFsdWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmV4dHJhY3RJbnB1dCgwLHRoaXMudmFsdWUubGVuZ3RoLHtyYXc6ITB9KX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMucmVzZXQoKSx0aGlzLmFwcGVuZCh0LHtyYXc6ITB9LCIiKSx0aGlzLmRvQ29tbWl0KCl9fSx7a2V5OiJpc0NvbXBsZXRlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4hMH19LHtrZXk6ImlzRmlsbGVkIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0NvbXBsZXRlfX0se2tleToibmVhcmVzdElucHV0UG9zIix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0fX0se2tleToiZXh0cmFjdElucHV0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTowLGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOnRoaXMudmFsdWUubGVuZ3RoO3JldHVybiB0aGlzLnZhbHVlLnNsaWNlKHQsZSl9fSx7a2V5OiJleHRyYWN0VGFpbCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MCxlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp0aGlzLnZhbHVlLmxlbmd0aDtyZXR1cm4gbmV3IG51KHRoaXMuZXh0cmFjdElucHV0KHQsZSksdCl9fSx7a2V5OiJhcHBlbmRUYWlsIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gWnIodCkmJih0PW5ldyBudShTdHJpbmcodCkpKSx0LmFwcGVuZFRvKHRoaXMpfX0se2tleToiX2FwcGVuZENoYXJSYXciLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0Pyh0aGlzLl92YWx1ZSs9dCxuZXcgWXIoe2luc2VydGVkOnQscmF3SW5zZXJ0ZWQ6dH0pKTpuZXcgWXJ9fSx7a2V5OiJfYXBwZW5kQ2hhciIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsbj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e30saT1hcmd1bWVudHMubGVuZ3RoPjI\/YXJndW1lbnRzWzJdOnZvaWQgMCxyPXRoaXMuc3RhdGUsdT1Rcih0aGlzLmRvUHJlcGFyZSh0LG4pKSxzPXFyKHUsMik7aWYodD1zWzBdLChlPShlPXNbMV0pLmFnZ3JlZ2F0ZSh0aGlzLl9hcHBlbmRDaGFyUmF3KHQsbikpKS5pbnNlcnRlZCl7dmFyIGEsbz0hMSE9PXRoaXMuZG9WYWxpZGF0ZShuKTtpZihvJiZudWxsIT1pKXt2YXIgbD10aGlzLnN0YXRlOyEwPT09dGhpcy5vdmVyd3JpdGUmJihhPWkuc3RhdGUsaS51bnNoaWZ0KHRoaXMudmFsdWUubGVuZ3RoKSk7dmFyIGg9dGhpcy5hcHBlbmRUYWlsKGkpOyhvPWgucmF3SW5zZXJ0ZWQ9PT1pLnRvU3RyaW5nKCkpJiZoLmluc2VydGVkfHwic2hpZnQiIT09dGhpcy5vdmVyd3JpdGV8fCh0aGlzLnN0YXRlPWwsYT1pLnN0YXRlLGkuc2hpZnQoKSxvPShoPXRoaXMuYXBwZW5kVGFpbChpKSkucmF3SW5zZXJ0ZWQ9PT1pLnRvU3RyaW5nKCkpLG8mJmguaW5zZXJ0ZWQmJih0aGlzLnN0YXRlPWwpfW98fChlPW5ldyBZcix0aGlzLnN0YXRlPXIsaSYmYSYmKGkuc3RhdGU9YSkpfXJldHVybiBlfX0se2tleToiX2FwcGVuZFBsYWNlaG9sZGVyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBuZXcgWXJ9fSx7a2V5OiJfYXBwZW5kRWFnZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBZcn19LHtrZXk6ImFwcGVuZCIsdmFsdWU6ZnVuY3Rpb24odCxlLG4pe2lmKCFacih0KSl0aHJvdyBuZXcgRXJyb3IoInZhbHVlIHNob3VsZCBiZSBzdHJpbmciKTt2YXIgaT1uZXcgWXIscj1acihuKT9uZXcgbnUoU3RyaW5nKG4pKTpuO2UmJmUudGFpbCYmKGUuX2JlZm9yZVRhaWxTdGF0ZT10aGlzLnN0YXRlKTtmb3IodmFyIHU9MDt1PHQubGVuZ3RoOysrdSlpLmFnZ3JlZ2F0ZSh0aGlzLl9hcHBlbmRDaGFyKHRbdV0sZSxyKSk7cmV0dXJuIG51bGwhPXImJihpLnRhaWxTaGlmdCs9dGhpcy5hcHBlbmRUYWlsKHIpLnRhaWxTaGlmdCksdGhpcy5lYWdlciYmbnVsbCE9ZSYmZS5pbnB1dCYmdCYmaS5hZ2dyZWdhdGUodGhpcy5fYXBwZW5kRWFnZXIoKSksaX19LHtrZXk6InJlbW92ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MCxlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp0aGlzLnZhbHVlLmxlbmd0aDtyZXR1cm4gdGhpcy5fdmFsdWU9dGhpcy52YWx1ZS5zbGljZSgwLHQpK3RoaXMudmFsdWUuc2xpY2UoZSksbmV3IFlyfX0se2tleToid2l0aFZhbHVlUmVmcmVzaCIsdmFsdWU6ZnVuY3Rpb24odCl7aWYodGhpcy5fcmVmcmVzaGluZ3x8IXRoaXMuaXNJbml0aWFsaXplZClyZXR1cm4gdCgpO3RoaXMuX3JlZnJlc2hpbmc9ITA7dmFyIGU9dGhpcy5yYXdJbnB1dFZhbHVlLG49dGhpcy52YWx1ZSxpPXQoKTtyZXR1cm4gdGhpcy5yYXdJbnB1dFZhbHVlPWUsdGhpcy52YWx1ZSYmdGhpcy52YWx1ZSE9PW4mJjA9PT1uLmluZGV4T2YodGhpcy52YWx1ZSkmJnRoaXMuYXBwZW5kKG4uc2xpY2UodGhpcy52YWx1ZS5sZW5ndGgpLHt9LCIiKSxkZWxldGUgdGhpcy5fcmVmcmVzaGluZyxpfX0se2tleToicnVuSXNvbGF0ZWQiLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKHRoaXMuX2lzb2xhdGVkfHwhdGhpcy5pc0luaXRpYWxpemVkKXJldHVybiB0KHRoaXMpO3RoaXMuX2lzb2xhdGVkPSEwO3ZhciBlPXRoaXMuc3RhdGUsbj10KHRoaXMpO3JldHVybiB0aGlzLnN0YXRlPWUsZGVsZXRlIHRoaXMuX2lzb2xhdGVkLG59fSx7a2V5OiJkb1ByZXBhcmUiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fTtyZXR1cm4gdGhpcy5wcmVwYXJlP3RoaXMucHJlcGFyZSh0LHRoaXMsZSk6dH19LHtrZXk6ImRvVmFsaWRhdGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybighdGhpcy52YWxpZGF0ZXx8dGhpcy52YWxpZGF0ZSh0aGlzLnZhbHVlLHRoaXMsdCkpJiYoIXRoaXMucGFyZW50fHx0aGlzLnBhcmVudC5kb1ZhbGlkYXRlKHQpKX19LHtrZXk6ImRvQ29tbWl0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY29tbWl0JiZ0aGlzLmNvbW1pdCh0aGlzLnZhbHVlLHRoaXMpfX0se2tleToiZG9Gb3JtYXQiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmZvcm1hdD90aGlzLmZvcm1hdCh0LHRoaXMpOnR9fSx7a2V5OiJkb1BhcnNlIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wYXJzZT90aGlzLnBhcnNlKHQsdGhpcyk6dH19LHtrZXk6InNwbGljZSIsdmFsdWU6ZnVuY3Rpb24odCxlLG4saSl7dmFyIHIsdT10K2Uscz10aGlzLmV4dHJhY3RUYWlsKHUpO3RoaXMuZWFnZXImJihpPWZ1bmN0aW9uKHQpe3N3aXRjaCh0KXtjYXNlIEtyOnJldHVybiAkcjtjYXNlIFdyOnJldHVybiBYcjtkZWZhdWx0OnJldHVybiB0fX0oaSkscj10aGlzLmV4dHJhY3RJbnB1dCgwLHUse3JhdzohMH0pKTt2YXIgYT10aGlzLm5lYXJlc3RJbnB1dFBvcyh0LGU+MSYmMCE9PXQmJiF0aGlzLmVhZ2VyP0dyOmkpLG89bmV3IFlyKHt0YWlsU2hpZnQ6YS10fSkuYWdncmVnYXRlKHRoaXMucmVtb3ZlKGEpKTtpZih0aGlzLmVhZ2VyJiZpIT09R3ImJnI9PT10aGlzLnJhd0lucHV0VmFsdWUpaWYoaT09PSRyKWZvcih2YXIgbDtyPT09dGhpcy5yYXdJbnB1dFZhbHVlJiYobD10aGlzLnZhbHVlLmxlbmd0aCk7KW8uYWdncmVnYXRlKG5ldyBZcih7dGFpbFNoaWZ0Oi0xfSkpLmFnZ3JlZ2F0ZSh0aGlzLnJlbW92ZShsLTEpKTtlbHNlIGk9PT1YciYmcy51bnNoaWZ0KCk7cmV0dXJuIG8uYWdncmVnYXRlKHRoaXMuYXBwZW5kKG4se2lucHV0OiEwfSxzKSl9fSx7a2V5OiJtYXNrRXF1YWxzIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5tYXNrPT09dH19XSksdH0oKTtmdW5jdGlvbiB1dSh0KXtpZihudWxsPT10KXRocm93IG5ldyBFcnJvcigibWFzayBwcm9wZXJ0eSBzaG91bGQgYmUgZGVmaW5lZCIpO3JldHVybiB0IGluc3RhbmNlb2YgUmVnRXhwP2l1Lk1hc2tlZFJlZ0V4cDpacih0KT9pdS5NYXNrZWRQYXR0ZXJuOnQgaW5zdGFuY2VvZiBEYXRlfHx0PT09RGF0ZT9pdS5NYXNrZWREYXRlOnQgaW5zdGFuY2VvZiBOdW1iZXJ8fCJudW1iZXIiPT10eXBlb2YgdHx8dD09PU51bWJlcj9pdS5NYXNrZWROdW1iZXI6QXJyYXkuaXNBcnJheSh0KXx8dD09PUFycmF5P2l1Lk1hc2tlZER5bmFtaWM6aXUuTWFza2VkJiZ0LnByb3RvdHlwZSBpbnN0YW5jZW9mIGl1Lk1hc2tlZD90OnQgaW5zdGFuY2VvZiBpdS5NYXNrZWQ\/dC5jb25zdHJ1Y3Rvcjp0IGluc3RhbmNlb2YgRnVuY3Rpb24\/aXUuTWFza2VkRnVuY3Rpb246KGNvbnNvbGUud2FybigiTWFzayBub3QgZm91bmQgZm9yIG1hc2siLHQpLGl1Lk1hc2tlZCl9ZnVuY3Rpb24gc3UodCl7aWYoaXUuTWFza2VkJiZ0IGluc3RhbmNlb2YgaXUuTWFza2VkKXJldHVybiB0O3ZhciBlPSh0PU9iamVjdC5hc3NpZ24oe30sdCkpLm1hc2s7aWYoaXUuTWFza2VkJiZlIGluc3RhbmNlb2YgaXUuTWFza2VkKXJldHVybiBlO3ZhciBuPXV1KGUpO2lmKCFuKXRocm93IG5ldyBFcnJvcigiTWFza2VkIGNsYXNzIGlzIG5vdCBmb3VuZCBmb3IgcHJvdmlkZWQgbWFzaywgYXBwcm9wcmlhdGUgbW9kdWxlIG5lZWRzIHRvIGJlIGltcG9ydCBtYW51YWxseSBiZWZvcmUgY3JlYXRpbmcgbWFzay4iKTtyZXR1cm4gbmV3IG4odCl9cnUuREVGQVVMVFM9e2Zvcm1hdDpmdW5jdGlvbih0KXtyZXR1cm4gdH0scGFyc2U6ZnVuY3Rpb24odCl7cmV0dXJuIHR9fSxpdS5NYXNrZWQ9cnUsaXUuY3JlYXRlTWFzaz1zdTt2YXIgYXU9WyJtYXNrIl0sb3U9ezA6L1xkLyxhOi9bXHUwMDQxLVx1MDA1QVx1MDA2MS1cdTAwN0FcdTAwQUFcdTAwQjVcdTAwQkFcdTAwQzAtXHUwMEQ2XHUwMEQ4LVx1MDBGNlx1MDBGOC1cdTAyQzFcdTAyQzYtXHUwMkQxXHUwMkUwLVx1MDJFNFx1MDJFQ1x1MDJFRVx1MDM3MC1cdTAzNzRcdTAzNzZcdTAzNzdcdTAzN0EtXHUwMzdEXHUwMzg2XHUwMzg4LVx1MDM4QVx1MDM4Q1x1MDM4RS1cdTAzQTFcdTAzQTMtXHUwM0Y1XHUwM0Y3LVx1MDQ4MVx1MDQ4QS1cdTA1MjdcdTA1MzEtXHUwNTU2XHUwNTU5XHUwNTYxLVx1MDU4N1x1MDVEMC1cdTA1RUFcdTA1RjAtXHUwNUYyXHUwNjIwLVx1MDY0QVx1MDY2RVx1MDY2Rlx1MDY3MS1cdTA2RDNcdTA2RDVcdTA2RTVcdTA2RTZcdTA2RUVcdTA2RUZcdTA2RkEtXHUwNkZDXHUwNkZGXHUwNzEwXHUwNzEyLVx1MDcyRlx1MDc0RC1cdTA3QTVcdTA3QjFcdTA3Q0EtXHUwN0VBXHUwN0Y0XHUwN0Y1XHUwN0ZBXHUwODAwLVx1MDgxNVx1MDgxQVx1MDgyNFx1MDgyOFx1MDg0MC1cdTA4NThcdTA4QTBcdTA4QTItXHUwOEFDXHUwOTA0LVx1MDkzOVx1MDkzRFx1MDk1MFx1MDk1OC1cdTA5NjFcdTA5NzEtXHUwOTc3XHUwOTc5LVx1MDk3Rlx1MDk4NS1cdTA5OENcdTA5OEZcdTA5OTBcdTA5OTMtXHUwOUE4XHUwOUFBLVx1MDlCMFx1MDlCMlx1MDlCNi1cdTA5QjlcdTA5QkRcdTA5Q0VcdTA5RENcdTA5RERcdTA5REYtXHUwOUUxXHUwOUYwXHUwOUYxXHUwQTA1LVx1MEEwQVx1MEEwRlx1MEExMFx1MEExMy1cdTBBMjhcdTBBMkEtXHUwQTMwXHUwQTMyXHUwQTMzXHUwQTM1XHUwQTM2XHUwQTM4XHUwQTM5XHUwQTU5LVx1MEE1Q1x1MEE1RVx1MEE3Mi1cdTBBNzRcdTBBODUtXHUwQThEXHUwQThGLVx1MEE5MVx1MEE5My1cdTBBQThcdTBBQUEtXHUwQUIwXHUwQUIyXHUwQUIzXHUwQUI1LVx1MEFCOVx1MEFCRFx1MEFEMFx1MEFFMFx1MEFFMVx1MEIwNS1cdTBCMENcdTBCMEZcdTBCMTBcdTBCMTMtXHUwQjI4XHUwQjJBLVx1MEIzMFx1MEIzMlx1MEIzM1x1MEIzNS1cdTBCMzlcdTBCM0RcdTBCNUNcdTBCNURcdTBCNUYtXHUwQjYxXHUwQjcxXHUwQjgzXHUwQjg1LVx1MEI4QVx1MEI4RS1cdTBCOTBcdTBCOTItXHUwQjk1XHUwQjk5XHUwQjlBXHUwQjlDXHUwQjlFXHUwQjlGXHUwQkEzXHUwQkE0XHUwQkE4LVx1MEJBQVx1MEJBRS1cdTBCQjlcdTBCRDBcdTBDMDUtXHUwQzBDXHUwQzBFLVx1MEMxMFx1MEMxMi1cdTBDMjhcdTBDMkEtXHUwQzMzXHUwQzM1LVx1MEMzOVx1MEMzRFx1MEM1OFx1MEM1OVx1MEM2MFx1MEM2MVx1MEM4NS1cdTBDOENcdTBDOEUtXHUwQzkwXHUwQzkyLVx1MENBOFx1MENBQS1cdTBDQjNcdTBDQjUtXHUwQ0I5XHUwQ0JEXHUwQ0RFXHUwQ0UwXHUwQ0UxXHUwQ0YxXHUwQ0YyXHUwRDA1LVx1MEQwQ1x1MEQwRS1cdTBEMTBcdTBEMTItXHUwRDNBXHUwRDNEXHUwRDRFXHUwRDYwXHUwRDYxXHUwRDdBLVx1MEQ3Rlx1MEQ4NS1cdTBEOTZcdTBEOUEtXHUwREIxXHUwREIzLVx1MERCQlx1MERCRFx1MERDMC1cdTBEQzZcdTBFMDEtXHUwRTMwXHUwRTMyXHUwRTMzXHUwRTQwLVx1MEU0Nlx1MEU4MVx1MEU4Mlx1MEU4NFx1MEU4N1x1MEU4OFx1MEU4QVx1MEU4RFx1MEU5NC1cdTBFOTdcdTBFOTktXHUwRTlGXHUwRUExLVx1MEVBM1x1MEVBNVx1MEVBN1x1MEVBQVx1MEVBQlx1MEVBRC1cdTBFQjBcdTBFQjJcdTBFQjNcdTBFQkRcdTBFQzAtXHUwRUM0XHUwRUM2XHUwRURDLVx1MEVERlx1MEYwMFx1MEY0MC1cdTBGNDdcdTBGNDktXHUwRjZDXHUwRjg4LVx1MEY4Q1x1MTAwMC1cdTEwMkFcdTEwM0ZcdTEwNTAtXHUxMDU1XHUxMDVBLVx1MTA1RFx1MTA2MVx1MTA2NVx1MTA2Nlx1MTA2RS1cdTEwNzBcdTEwNzUtXHUxMDgxXHUxMDhFXHUxMEEwLVx1MTBDNVx1MTBDN1x1MTBDRFx1MTBEMC1cdTEwRkFcdTEwRkMtXHUxMjQ4XHUxMjRBLVx1MTI0RFx1MTI1MC1cdTEyNTZcdTEyNThcdTEyNUEtXHUxMjVEXHUxMjYwLVx1MTI4OFx1MTI4QS1cdTEyOERcdTEyOTAtXHUxMkIwXHUxMkIyLVx1MTJCNVx1MTJCOC1cdTEyQkVcdTEyQzBcdTEyQzItXHUxMkM1XHUxMkM4LVx1MTJENlx1MTJEOC1cdTEzMTBcdTEzMTItXHUxMzE1XHUxMzE4LVx1MTM1QVx1MTM4MC1cdTEzOEZcdTEzQTAtXHUxM0Y0XHUxNDAxLVx1MTY2Q1x1MTY2Ri1cdTE2N0ZcdTE2ODEtXHUxNjlBXHUxNkEwLVx1MTZFQVx1MTcwMC1cdTE3MENcdTE3MEUtXHUxNzExXHUxNzIwLVx1MTczMVx1MTc0MC1cdTE3NTFcdTE3NjAtXHUxNzZDXHUxNzZFLVx1MTc3MFx1MTc4MC1cdTE3QjNcdTE3RDdcdTE3RENcdTE4MjAtXHUxODc3XHUxODgwLVx1MThBOFx1MThBQVx1MThCMC1cdTE4RjVcdTE5MDAtXHUxOTFDXHUxOTUwLVx1MTk2RFx1MTk3MC1cdTE5NzRcdTE5ODAtXHUxOUFCXHUxOUMxLVx1MTlDN1x1MUEwMC1cdTFBMTZcdTFBMjAtXHUxQTU0XHUxQUE3XHUxQjA1LVx1MUIzM1x1MUI0NS1cdTFCNEJcdTFCODMtXHUxQkEwXHUxQkFFXHUxQkFGXHUxQkJBLVx1MUJFNVx1MUMwMC1cdTFDMjNcdTFDNEQtXHUxQzRGXHUxQzVBLVx1MUM3RFx1MUNFOS1cdTFDRUNcdTFDRUUtXHUxQ0YxXHUxQ0Y1XHUxQ0Y2XHUxRDAwLVx1MURCRlx1MUUwMC1cdTFGMTVcdTFGMTgtXHUxRjFEXHUxRjIwLVx1MUY0NVx1MUY0OC1cdTFGNERcdTFGNTAtXHUxRjU3XHUxRjU5XHUxRjVCXHUxRjVEXHUxRjVGLVx1MUY3RFx1MUY4MC1cdTFGQjRcdTFGQjYtXHUxRkJDXHUxRkJFXHUxRkMyLVx1MUZDNFx1MUZDNi1cdTFGQ0NcdTFGRDAtXHUxRkQzXHUxRkQ2LVx1MUZEQlx1MUZFMC1cdTFGRUNcdTFGRjItXHUxRkY0XHUxRkY2LVx1MUZGQ1x1MjA3MVx1MjA3Rlx1MjA5MC1cdTIwOUNcdTIxMDJcdTIxMDdcdTIxMEEtXHUyMTEzXHUyMTE1XHUyMTE5LVx1MjExRFx1MjEyNFx1MjEyNlx1MjEyOFx1MjEyQS1cdTIxMkRcdTIxMkYtXHUyMTM5XHUyMTNDLVx1MjEzRlx1MjE0NS1cdTIxNDlcdTIxNEVcdTIxODNcdTIxODRcdTJDMDAtXHUyQzJFXHUyQzMwLVx1MkM1RVx1MkM2MC1cdTJDRTRcdTJDRUItXHUyQ0VFXHUyQ0YyXHUyQ0YzXHUyRDAwLVx1MkQyNVx1MkQyN1x1MkQyRFx1MkQzMC1cdTJENjdcdTJENkZcdTJEODAtXHUyRDk2XHUyREEwLVx1MkRBNlx1MkRBOC1cdTJEQUVcdTJEQjAtXHUyREI2XHUyREI4LVx1MkRCRVx1MkRDMC1cdTJEQzZcdTJEQzgtXHUyRENFXHUyREQwLVx1MkRENlx1MkREOC1cdTJEREVcdTJFMkZcdTMwMDVcdTMwMDZcdTMwMzEtXHUzMDM1XHUzMDNCXHUzMDNDXHUzMDQxLVx1MzA5Nlx1MzA5RC1cdTMwOUZcdTMwQTEtXHUzMEZBXHUzMEZDLVx1MzBGRlx1MzEwNS1cdTMxMkRcdTMxMzEtXHUzMThFXHUzMUEwLVx1MzFCQVx1MzFGMC1cdTMxRkZcdTM0MDAtXHU0REI1XHU0RTAwLVx1OUZDQ1x1QTAwMC1cdUE0OENcdUE0RDAtXHVBNEZEXHVBNTAwLVx1QTYwQ1x1QTYxMC1cdUE2MUZcdUE2MkFcdUE2MkJcdUE2NDAtXHVBNjZFXHVBNjdGLVx1QTY5N1x1QTZBMC1cdUE2RTVcdUE3MTctXHVBNzFGXHVBNzIyLVx1QTc4OFx1QTc4Qi1cdUE3OEVcdUE3OTAtXHVBNzkzXHVBN0EwLVx1QTdBQVx1QTdGOC1cdUE4MDFcdUE4MDMtXHVBODA1XHVBODA3LVx1QTgwQVx1QTgwQy1cdUE4MjJcdUE4NDAtXHVBODczXHVBODgyLVx1QThCM1x1QThGMi1cdUE4RjdcdUE4RkJcdUE5MEEtXHVBOTI1XHVBOTMwLVx1QTk0Nlx1QTk2MC1cdUE5N0NcdUE5ODQtXHVBOUIyXHVBOUNGXHVBQTAwLVx1QUEyOFx1QUE0MC1cdUFBNDJcdUFBNDQtXHVBQTRCXHVBQTYwLVx1QUE3Nlx1QUE3QVx1QUE4MC1cdUFBQUZcdUFBQjFcdUFBQjVcdUFBQjZcdUFBQjktXHVBQUJEXHVBQUMwXHVBQUMyXHVBQURCLVx1QUFERFx1QUFFMC1cdUFBRUFcdUFBRjItXHVBQUY0XHVBQjAxLVx1QUIwNlx1QUIwOS1cdUFCMEVcdUFCMTEtXHVBQjE2XHVBQjIwLVx1QUIyNlx1QUIyOC1cdUFCMkVcdUFCQzAtXHVBQkUyXHVBQzAwLVx1RDdBM1x1RDdCMC1cdUQ3QzZcdUQ3Q0ItXHVEN0ZCXHVGOTAwLVx1RkE2RFx1RkE3MC1cdUZBRDlcdUZCMDAtXHVGQjA2XHVGQjEzLVx1RkIxN1x1RkIxRFx1RkIxRi1cdUZCMjhcdUZCMkEtXHVGQjM2XHVGQjM4LVx1RkIzQ1x1RkIzRVx1RkI0MFx1RkI0MVx1RkI0M1x1RkI0NFx1RkI0Ni1cdUZCQjFcdUZCRDMtXHVGRDNEXHVGRDUwLVx1RkQ4Rlx1RkQ5Mi1cdUZEQzdcdUZERjAtXHVGREZCXHVGRTcwLVx1RkU3NFx1RkU3Ni1cdUZFRkNcdUZGMjEtXHVGRjNBXHVGRjQxLVx1RkY1QVx1RkY2Ni1cdUZGQkVcdUZGQzItXHVGRkM3XHVGRkNBLVx1RkZDRlx1RkZEMi1cdUZGRDdcdUZGREEtXHVGRkRDXS8sIioiOi8uL30sbHU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe3hyKHRoaXMsdCk7dmFyIG49ZS5tYXNrLGk9anIoZSxhdSk7dGhpcy5tYXNrZWQ9c3Uoe21hc2s6bn0pLE9iamVjdC5hc3NpZ24odGhpcyxpKX1yZXR1cm4gT3IodCxbe2tleToicmVzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5pc0ZpbGxlZD0hMSx0aGlzLm1hc2tlZC5yZXNldCgpfX0se2tleToicmVtb3ZlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTowLGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOnRoaXMudmFsdWUubGVuZ3RoO3JldHVybiAwPT09dCYmZT49MT8odGhpcy5pc0ZpbGxlZD0hMSx0aGlzLm1hc2tlZC5yZW1vdmUodCxlKSk6bmV3IFlyfX0se2tleToidmFsdWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hc2tlZC52YWx1ZXx8KHRoaXMuaXNGaWxsZWQmJiF0aGlzLmlzT3B0aW9uYWw\/dGhpcy5wbGFjZWhvbGRlckNoYXI6IiIpfX0se2tleToidW5tYXNrZWRWYWx1ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFza2VkLnVubWFza2VkVmFsdWV9fSx7a2V5OiJpc0NvbXBsZXRlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gQm9vbGVhbih0aGlzLm1hc2tlZC52YWx1ZSl8fHRoaXMuaXNPcHRpb25hbH19LHtrZXk6Il9hcHBlbmRDaGFyIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e307aWYodGhpcy5pc0ZpbGxlZClyZXR1cm4gbmV3IFlyO3ZhciBuPXRoaXMubWFza2VkLnN0YXRlLGk9dGhpcy5tYXNrZWQuX2FwcGVuZENoYXIodCxlKTtyZXR1cm4gaS5pbnNlcnRlZCYmITE9PT10aGlzLmRvVmFsaWRhdGUoZSkmJihpLmluc2VydGVkPWkucmF3SW5zZXJ0ZWQ9IiIsdGhpcy5tYXNrZWQuc3RhdGU9biksaS5pbnNlcnRlZHx8dGhpcy5pc09wdGlvbmFsfHx0aGlzLmxhenl8fGUuaW5wdXR8fChpLmluc2VydGVkPXRoaXMucGxhY2Vob2xkZXJDaGFyKSxpLnNraXA9IWkuaW5zZXJ0ZWQmJiF0aGlzLmlzT3B0aW9uYWwsdGhpcy5pc0ZpbGxlZD1Cb29sZWFuKGkuaW5zZXJ0ZWQpLGl9fSx7a2V5OiJhcHBlbmQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ7cmV0dXJuKHQ9dGhpcy5tYXNrZWQpLmFwcGVuZC5hcHBseSh0LGFyZ3VtZW50cyl9fSx7a2V5OiJfYXBwZW5kUGxhY2Vob2xkZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9bmV3IFlyO3JldHVybiB0aGlzLmlzRmlsbGVkfHx0aGlzLmlzT3B0aW9uYWx8fCh0aGlzLmlzRmlsbGVkPSEwLHQuaW5zZXJ0ZWQ9dGhpcy5wbGFjZWhvbGRlckNoYXIpLHR9fSx7a2V5OiJfYXBwZW5kRWFnZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBZcn19LHtrZXk6ImV4dHJhY3RUYWlsIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0O3JldHVybih0PXRoaXMubWFza2VkKS5leHRyYWN0VGFpbC5hcHBseSh0LGFyZ3VtZW50cyl9fSx7a2V5OiJhcHBlbmRUYWlsIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0O3JldHVybih0PXRoaXMubWFza2VkKS5hcHBlbmRUYWlsLmFwcGx5KHQsYXJndW1lbnRzKX19LHtrZXk6ImV4dHJhY3RJbnB1dCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MCxlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp0aGlzLnZhbHVlLmxlbmd0aCxuPWFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwO3JldHVybiB0aGlzLm1hc2tlZC5leHRyYWN0SW5wdXQodCxlLG4pfX0se2tleToibmVhcmVzdElucHV0UG9zIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06R3Isbj0wLGk9dGhpcy52YWx1ZS5sZW5ndGgscj1NYXRoLm1pbihNYXRoLm1heCh0LG4pLGkpO3N3aXRjaChlKXtjYXNlIEtyOmNhc2UgJHI6cmV0dXJuIHRoaXMuaXNDb21wbGV0ZT9yOm47Y2FzZSBXcjpjYXNlIFhyOnJldHVybiB0aGlzLmlzQ29tcGxldGU\/cjppO2RlZmF1bHQ6cmV0dXJuIHJ9fX0se2tleToiZG9WYWxpZGF0ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdCxlO3JldHVybih0PXRoaXMubWFza2VkKS5kb1ZhbGlkYXRlLmFwcGx5KHQsYXJndW1lbnRzKSYmKCF0aGlzLnBhcmVudHx8KGU9dGhpcy5wYXJlbnQpLmRvVmFsaWRhdGUuYXBwbHkoZSxhcmd1bWVudHMpKX19LHtrZXk6ImRvQ29tbWl0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMubWFza2VkLmRvQ29tbWl0KCl9fSx7a2V5OiJzdGF0ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJue21hc2tlZDp0aGlzLm1hc2tlZC5zdGF0ZSxpc0ZpbGxlZDp0aGlzLmlzRmlsbGVkfX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMubWFza2VkLnN0YXRlPXQubWFza2VkLHRoaXMuaXNGaWxsZWQ9dC5pc0ZpbGxlZH19XSksdH0oKSxodT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7eHIodGhpcyx0KSxPYmplY3QuYXNzaWduKHRoaXMsZSksdGhpcy5fdmFsdWU9IiIsdGhpcy5pc0ZpeGVkPSEwfXJldHVybiBPcih0LFt7a2V5OiJ2YWx1ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ZhbHVlfX0se2tleToidW5tYXNrZWRWYWx1ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNVbm1hc2tpbmc\/dGhpcy52YWx1ZToiIn19LHtrZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2lzUmF3SW5wdXQ9ITEsdGhpcy5fdmFsdWU9IiJ9fSx7a2V5OiJyZW1vdmUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0\/YXJndW1lbnRzWzBdOjAsZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dGhpcy5fdmFsdWUubGVuZ3RoO3JldHVybiB0aGlzLl92YWx1ZT10aGlzLl92YWx1ZS5zbGljZSgwLHQpK3RoaXMuX3ZhbHVlLnNsaWNlKGUpLHRoaXMuX3ZhbHVlfHwodGhpcy5faXNSYXdJbnB1dD0hMSksbmV3IFlyfX0se2tleToibmVhcmVzdElucHV0UG9zIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06R3Isbj0wLGk9dGhpcy5fdmFsdWUubGVuZ3RoO3N3aXRjaChlKXtjYXNlIEtyOmNhc2UgJHI6cmV0dXJuIG47ZGVmYXVsdDpyZXR1cm4gaX19fSx7a2V5OiJleHRyYWN0SW5wdXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0\/YXJndW1lbnRzWzBdOjAsZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dGhpcy5fdmFsdWUubGVuZ3RoLG49YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0\/YXJndW1lbnRzWzJdOnt9O3JldHVybiBuLnJhdyYmdGhpcy5faXNSYXdJbnB1dCYmdGhpcy5fdmFsdWUuc2xpY2UodCxlKXx8IiJ9fSx7a2V5OiJpc0NvbXBsZXRlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4hMH19LHtrZXk6ImlzRmlsbGVkIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gQm9vbGVhbih0aGlzLl92YWx1ZSl9fSx7a2V5OiJfYXBwZW5kQ2hhciIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOnt9LG49bmV3IFlyO2lmKHRoaXMuX3ZhbHVlKXJldHVybiBuO3ZhciBpPXRoaXMuY2hhcj09PXQscj1pJiYodGhpcy5pc1VubWFza2luZ3x8ZS5pbnB1dHx8ZS5yYXcpJiYhdGhpcy5lYWdlciYmIWUudGFpbDtyZXR1cm4gciYmKG4ucmF3SW5zZXJ0ZWQ9dGhpcy5jaGFyKSx0aGlzLl92YWx1ZT1uLmluc2VydGVkPXRoaXMuY2hhcix0aGlzLl9pc1Jhd0lucHV0PXImJihlLnJhd3x8ZS5pbnB1dCksbn19LHtrZXk6Il9hcHBlbmRFYWdlciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXBwZW5kQ2hhcih0aGlzLmNoYXIpfX0se2tleToiX2FwcGVuZFBsYWNlaG9sZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PW5ldyBZcjtyZXR1cm4gdGhpcy5fdmFsdWV8fCh0aGlzLl92YWx1ZT10Lmluc2VydGVkPXRoaXMuY2hhciksdH19LHtrZXk6ImV4dHJhY3RUYWlsIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXXx8dGhpcy52YWx1ZS5sZW5ndGgsbmV3IG51KCIiKX19LHtrZXk6ImFwcGVuZFRhaWwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBacih0KSYmKHQ9bmV3IG51KFN0cmluZyh0KSkpLHQuYXBwZW5kVG8odGhpcyl9fSx7a2V5OiJhcHBlbmQiLHZhbHVlOmZ1bmN0aW9uKHQsZSxuKXt2YXIgaT10aGlzLl9hcHBlbmRDaGFyKHRbMF0sZSk7cmV0dXJuIG51bGwhPW4mJihpLnRhaWxTaGlmdCs9dGhpcy5hcHBlbmRUYWlsKG4pLnRhaWxTaGlmdCksaX19LHtrZXk6ImRvQ29tbWl0Iix2YWx1ZTpmdW5jdGlvbigpe319LHtrZXk6InN0YXRlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm57X3ZhbHVlOnRoaXMuX3ZhbHVlLF9pc1Jhd0lucHV0OnRoaXMuX2lzUmF3SW5wdXR9fSxzZXQ6ZnVuY3Rpb24odCl7T2JqZWN0LmFzc2lnbih0aGlzLHQpfX1dKSx0fSgpLGN1PVsiY2h1bmtzIl0sZnU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0\/YXJndW1lbnRzWzBdOltdLG49YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOjA7eHIodGhpcyx0KSx0aGlzLmNodW5rcz1lLHRoaXMuZnJvbT1ufXJldHVybiBPcih0LFt7a2V5OiJ0b1N0cmluZyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jaHVua3MubWFwKFN0cmluZykuam9pbigiIil9fSx7a2V5OiJleHRlbmQiLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKFN0cmluZyhlKSl7WnIoZSkmJihlPW5ldyBudShTdHJpbmcoZSkpKTt2YXIgbj10aGlzLmNodW5rc1t0aGlzLmNodW5rcy5sZW5ndGgtMV0saT1uJiYobi5zdG9wPT09ZS5zdG9wfHxudWxsPT1lLnN0b3ApJiZlLmZyb209PT1uLmZyb20rbi50b1N0cmluZygpLmxlbmd0aDtpZihlIGluc3RhbmNlb2YgbnUpaT9uLmV4dGVuZChlLnRvU3RyaW5nKCkpOnRoaXMuY2h1bmtzLnB1c2goZSk7ZWxzZSBpZihlIGluc3RhbmNlb2YgdCl7aWYobnVsbD09ZS5zdG9wKWZvcih2YXIgcjtlLmNodW5rcy5sZW5ndGgmJm51bGw9PWUuY2h1bmtzWzBdLnN0b3A7KShyPWUuY2h1bmtzLnNoaWZ0KCkpLmZyb20rPWUuZnJvbSx0aGlzLmV4dGVuZChyKTtlLnRvU3RyaW5nKCkmJihlLnN0b3A9ZS5ibG9ja0luZGV4LHRoaXMuY2h1bmtzLnB1c2goZSkpfX19fSx7a2V5OiJhcHBlbmRUbyIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2YgaXUuTWFza2VkUGF0dGVybikpcmV0dXJuIG5ldyBudSh0aGlzLnRvU3RyaW5nKCkpLmFwcGVuZFRvKGUpO2Zvcih2YXIgbj1uZXcgWXIsaT0wO2k8dGhpcy5jaHVua3MubGVuZ3RoJiYhbi5za2lwOysraSl7dmFyIHI9dGhpcy5jaHVua3NbaV0sdT1lLl9tYXBQb3NUb0Jsb2NrKGUudmFsdWUubGVuZ3RoKSxzPXIuc3RvcCxhPXZvaWQgMDtpZihudWxsIT1zJiYoIXV8fHUuaW5kZXg8PXMpJiYoKHIgaW5zdGFuY2VvZiB0fHxlLl9zdG9wcy5pbmRleE9mKHMpPj0wKSYmbi5hZ2dyZWdhdGUoZS5fYXBwZW5kUGxhY2Vob2xkZXIocykpLGE9ciBpbnN0YW5jZW9mIHQmJmUuX2Jsb2Nrc1tzXSksYSl7dmFyIG89YS5hcHBlbmRUYWlsKHIpO28uc2tpcD0hMSxuLmFnZ3JlZ2F0ZShvKSxlLl92YWx1ZSs9by5pbnNlcnRlZDt2YXIgbD1yLnRvU3RyaW5nKCkuc2xpY2Uoby5yYXdJbnNlcnRlZC5sZW5ndGgpO2wmJm4uYWdncmVnYXRlKGUuYXBwZW5kKGwse3RhaWw6ITB9KSl9ZWxzZSBuLmFnZ3JlZ2F0ZShlLmFwcGVuZChyLnRvU3RyaW5nKCkse3RhaWw6ITB9KSl9cmV0dXJuIG59fSx7a2V5OiJzdGF0ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJue2NodW5rczp0aGlzLmNodW5rcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnN0YXRlfSkpLGZyb206dGhpcy5mcm9tLHN0b3A6dGhpcy5zdG9wLGJsb2NrSW5kZXg6dGhpcy5ibG9ja0luZGV4fX0sc2V0OmZ1bmN0aW9uKGUpe3ZhciBuPWUuY2h1bmtzLGk9anIoZSxjdSk7T2JqZWN0LmFzc2lnbih0aGlzLGkpLHRoaXMuY2h1bmtzPW4ubWFwKChmdW5jdGlvbihlKXt2YXIgbj0iY2h1bmtzImluIGU\/bmV3IHQ6bmV3IG51O3JldHVybiBuLnN0YXRlPWUsbn0pKX19LHtrZXk6InVuc2hpZnQiLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKCF0aGlzLmNodW5rcy5sZW5ndGh8fG51bGwhPXQmJnRoaXMuZnJvbT49dClyZXR1cm4iIjtmb3IodmFyIGU9bnVsbCE9dD90LXRoaXMuZnJvbTp0LG49MDtuPHRoaXMuY2h1bmtzLmxlbmd0aDspe3ZhciBpPXRoaXMuY2h1bmtzW25dLHI9aS51bnNoaWZ0KGUpO2lmKGkudG9TdHJpbmcoKSl7aWYoIXIpYnJlYWs7KytufWVsc2UgdGhpcy5jaHVua3Muc3BsaWNlKG4sMSk7aWYocilyZXR1cm4gcn1yZXR1cm4iIn19LHtrZXk6InNoaWZ0Iix2YWx1ZTpmdW5jdGlvbigpe2lmKCF0aGlzLmNodW5rcy5sZW5ndGgpcmV0dXJuIiI7Zm9yKHZhciB0PXRoaXMuY2h1bmtzLmxlbmd0aC0xOzA8PXQ7KXt2YXIgZT10aGlzLmNodW5rc1t0XSxuPWUuc2hpZnQoKTtpZihlLnRvU3RyaW5nKCkpe2lmKCFuKWJyZWFrOy0tdH1lbHNlIHRoaXMuY2h1bmtzLnNwbGljZSh0LDEpO2lmKG4pcmV0dXJuIG59cmV0dXJuIiJ9fV0pLHR9KCkscHU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsbil7eHIodGhpcyx0KSx0aGlzLm1hc2tlZD1lLHRoaXMuX2xvZz1bXTt2YXIgaT1lLl9tYXBQb3NUb0Jsb2NrKG4pfHwobjwwP3tpbmRleDowLG9mZnNldDowfTp7aW5kZXg6dGhpcy5tYXNrZWQuX2Jsb2Nrcy5sZW5ndGgsb2Zmc2V0OjB9KSxyPWkub2Zmc2V0LHU9aS5pbmRleDt0aGlzLm9mZnNldD1yLHRoaXMuaW5kZXg9dSx0aGlzLm9rPSExfXJldHVybiBPcih0LFt7a2V5OiJibG9jayIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFza2VkLl9ibG9ja3NbdGhpcy5pbmRleF19fSx7a2V5OiJwb3MiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hc2tlZC5fYmxvY2tTdGFydFBvcyh0aGlzLmluZGV4KSt0aGlzLm9mZnNldH19LHtrZXk6InN0YXRlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm57aW5kZXg6dGhpcy5pbmRleCxvZmZzZXQ6dGhpcy5vZmZzZXQsb2s6dGhpcy5va319LHNldDpmdW5jdGlvbih0KXtPYmplY3QuYXNzaWduKHRoaXMsdCl9fSx7a2V5OiJwdXNoU3RhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fbG9nLnB1c2godGhpcy5zdGF0ZSl9fSx7a2V5OiJwb3BTdGF0ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9sb2cucG9wKCk7cmV0dXJuIHRoaXMuc3RhdGU9dCx0fX0se2tleToiYmluZEJsb2NrIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuYmxvY2t8fCh0aGlzLmluZGV4PDAmJih0aGlzLmluZGV4PTAsdGhpcy5vZmZzZXQ9MCksdGhpcy5pbmRleD49dGhpcy5tYXNrZWQuX2Jsb2Nrcy5sZW5ndGgmJih0aGlzLmluZGV4PXRoaXMubWFza2VkLl9ibG9ja3MubGVuZ3RoLTEsdGhpcy5vZmZzZXQ9dGhpcy5ibG9jay52YWx1ZS5sZW5ndGgpKX19LHtrZXk6Il9wdXNoTGVmdCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHRoaXMucHVzaFN0YXRlKCksdGhpcy5iaW5kQmxvY2soKTswPD10aGlzLmluZGV4Oy0tdGhpcy5pbmRleCx0aGlzLm9mZnNldD0obnVsbD09PShlPXRoaXMuYmxvY2spfHx2b2lkIDA9PT1lP3ZvaWQgMDplLnZhbHVlLmxlbmd0aCl8fDApe3ZhciBlO2lmKHQoKSlyZXR1cm4gdGhpcy5vaz0hMH1yZXR1cm4gdGhpcy5vaz0hMX19LHtrZXk6Il9wdXNoUmlnaHQiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih0aGlzLnB1c2hTdGF0ZSgpLHRoaXMuYmluZEJsb2NrKCk7dGhpcy5pbmRleDx0aGlzLm1hc2tlZC5fYmxvY2tzLmxlbmd0aDsrK3RoaXMuaW5kZXgsdGhpcy5vZmZzZXQ9MClpZih0KCkpcmV0dXJuIHRoaXMub2s9ITA7cmV0dXJuIHRoaXMub2s9ITF9fSx7a2V5OiJwdXNoTGVmdEJlZm9yZUZpbGxlZCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybiB0aGlzLl9wdXNoTGVmdCgoZnVuY3Rpb24oKXtpZighdC5ibG9jay5pc0ZpeGVkJiZ0LmJsb2NrLnZhbHVlKXJldHVybiB0Lm9mZnNldD10LmJsb2NrLm5lYXJlc3RJbnB1dFBvcyh0Lm9mZnNldCwkciksMCE9PXQub2Zmc2V0fHx2b2lkIDB9KSl9fSx7a2V5OiJwdXNoTGVmdEJlZm9yZUlucHV0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIHRoaXMuX3B1c2hMZWZ0KChmdW5jdGlvbigpe2lmKCF0LmJsb2NrLmlzRml4ZWQpcmV0dXJuIHQub2Zmc2V0PXQuYmxvY2submVhcmVzdElucHV0UG9zKHQub2Zmc2V0LEtyKSwhMH0pKX19LHtrZXk6InB1c2hMZWZ0QmVmb3JlUmVxdWlyZWQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gdGhpcy5fcHVzaExlZnQoKGZ1bmN0aW9uKCl7aWYoISh0LmJsb2NrLmlzRml4ZWR8fHQuYmxvY2suaXNPcHRpb25hbCYmIXQuYmxvY2sudmFsdWUpKXJldHVybiB0Lm9mZnNldD10LmJsb2NrLm5lYXJlc3RJbnB1dFBvcyh0Lm9mZnNldCxLciksITB9KSl9fSx7a2V5OiJwdXNoUmlnaHRCZWZvcmVGaWxsZWQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gdGhpcy5fcHVzaFJpZ2h0KChmdW5jdGlvbigpe2lmKCF0LmJsb2NrLmlzRml4ZWQmJnQuYmxvY2sudmFsdWUpcmV0dXJuIHQub2Zmc2V0PXQuYmxvY2submVhcmVzdElucHV0UG9zKHQub2Zmc2V0LFhyKSx0Lm9mZnNldCE9PXQuYmxvY2sudmFsdWUubGVuZ3RofHx2b2lkIDB9KSl9fSx7a2V5OiJwdXNoUmlnaHRCZWZvcmVJbnB1dCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybiB0aGlzLl9wdXNoUmlnaHQoKGZ1bmN0aW9uKCl7aWYoIXQuYmxvY2suaXNGaXhlZClyZXR1cm4gdC5vZmZzZXQ9dC5ibG9jay5uZWFyZXN0SW5wdXRQb3ModC5vZmZzZXQsR3IpLCEwfSkpfX0se2tleToicHVzaFJpZ2h0QmVmb3JlUmVxdWlyZWQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gdGhpcy5fcHVzaFJpZ2h0KChmdW5jdGlvbigpe2lmKCEodC5ibG9jay5pc0ZpeGVkfHx0LmJsb2NrLmlzT3B0aW9uYWwmJiF0LmJsb2NrLnZhbHVlKSlyZXR1cm4gdC5vZmZzZXQ9dC5ibG9jay5uZWFyZXN0SW5wdXRQb3ModC5vZmZzZXQsR3IpLCEwfSkpfX1dKSx0fSgpLGR1PWZ1bmN0aW9uKHQpe1ByKG4sdCk7dmFyIGU9VnIobik7ZnVuY3Rpb24gbigpe3JldHVybiB4cih0aGlzLG4pLGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBPcihuLFt7a2V5OiJfdXBkYXRlIix2YWx1ZTpmdW5jdGlvbih0KXt0Lm1hc2smJih0LnZhbGlkYXRlPWZ1bmN0aW9uKGUpe3JldHVybiBlLnNlYXJjaCh0Lm1hc2spPj0wfSksTnIoVHIobi5wcm90b3R5cGUpLCJfdXBkYXRlIix0aGlzKS5jYWxsKHRoaXMsdCl9fV0pLG59KHJ1KTtpdS5NYXNrZWRSZWdFeHA9ZHU7dmFyIHZ1PVsiX2Jsb2NrcyJdLGd1PWZ1bmN0aW9uKHQpe1ByKG4sdCk7dmFyIGU9VnIobik7ZnVuY3Rpb24gbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fTtyZXR1cm4geHIodGhpcyxuKSx0LmRlZmluaXRpb25zPU9iamVjdC5hc3NpZ24oe30sb3UsdC5kZWZpbml0aW9ucyksZS5jYWxsKHRoaXMsT2JqZWN0LmFzc2lnbih7fSxuLkRFRkFVTFRTLHQpKX1yZXR1cm4gT3Iobixbe2tleToiX3VwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e307dC5kZWZpbml0aW9ucz1PYmplY3QuYXNzaWduKHt9LHRoaXMuZGVmaW5pdGlvbnMsdC5kZWZpbml0aW9ucyksTnIoVHIobi5wcm90b3R5cGUpLCJfdXBkYXRlIix0aGlzKS5jYWxsKHRoaXMsdCksdGhpcy5fcmVidWlsZE1hc2soKX19LHtrZXk6Il9yZWJ1aWxkTWFzayIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy5kZWZpbml0aW9uczt0aGlzLl9ibG9ja3M9W10sdGhpcy5fc3RvcHM9W10sdGhpcy5fbWFza2VkQmxvY2tzPXt9O3ZhciBpPXRoaXMubWFzaztpZihpJiZlKWZvcih2YXIgcj0hMSx1PSExLHM9MDtzPGkubGVuZ3RoOysrcyl7aWYodGhpcy5ibG9ja3MpaWYoImNvbnRpbnVlIj09PWZ1bmN0aW9uKCl7dmFyIGU9aS5zbGljZShzKSxuPU9iamVjdC5rZXlzKHQuYmxvY2tzKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiAwPT09ZS5pbmRleE9mKHQpfSkpO24uc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5sZW5ndGgtdC5sZW5ndGh9KSk7dmFyIHI9blswXTtpZihyKXt2YXIgdT1zdShPYmplY3QuYXNzaWduKHtwYXJlbnQ6dCxsYXp5OnQubGF6eSxlYWdlcjp0LmVhZ2VyLHBsYWNlaG9sZGVyQ2hhcjp0LnBsYWNlaG9sZGVyQ2hhcixvdmVyd3JpdGU6dC5vdmVyd3JpdGV9LHQuYmxvY2tzW3JdKSk7cmV0dXJuIHUmJih0Ll9ibG9ja3MucHVzaCh1KSx0Ll9tYXNrZWRCbG9ja3Nbcl18fCh0Ll9tYXNrZWRCbG9ja3Nbcl09W10pLHQuX21hc2tlZEJsb2Nrc1tyXS5wdXNoKHQuX2Jsb2Nrcy5sZW5ndGgtMSkpLHMrPXIubGVuZ3RoLTEsImNvbnRpbnVlIn19KCkpY29udGludWU7dmFyIGE9aVtzXSxvPWEgaW4gZTtpZihhIT09bi5TVE9QX0NIQVIpaWYoInsiIT09YSYmIn0iIT09YSlpZigiWyIhPT1hJiYiXSIhPT1hKXtpZihhPT09bi5FU0NBUEVfQ0hBUil7aWYoKytzLCEoYT1pW3NdKSlicmVhaztvPSExfXZhciBsPW8\/bmV3IGx1KHtwYXJlbnQ6dGhpcyxsYXp5OnRoaXMubGF6eSxlYWdlcjp0aGlzLmVhZ2VyLHBsYWNlaG9sZGVyQ2hhcjp0aGlzLnBsYWNlaG9sZGVyQ2hhcixtYXNrOmVbYV0saXNPcHRpb25hbDp1fSk6bmV3IGh1KHtjaGFyOmEsZWFnZXI6dGhpcy5lYWdlcixpc1VubWFza2luZzpyfSk7dGhpcy5fYmxvY2tzLnB1c2gobCl9ZWxzZSB1PSF1O2Vsc2Ugcj0hcjtlbHNlIHRoaXMuX3N0b3BzLnB1c2godGhpcy5fYmxvY2tzLmxlbmd0aCl9fX0se2tleToic3RhdGUiLGdldDpmdW5jdGlvbigpe3JldHVybiBPYmplY3QuYXNzaWduKHt9LE5yKFRyKG4ucHJvdG90eXBlKSwic3RhdGUiLHRoaXMpLHtfYmxvY2tzOnRoaXMuX2Jsb2Nrcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnN0YXRlfSkpfSl9LHNldDpmdW5jdGlvbih0KXt2YXIgZT10Ll9ibG9ja3MsaT1qcih0LHZ1KTt0aGlzLl9ibG9ja3MuZm9yRWFjaCgoZnVuY3Rpb24odCxuKXtyZXR1cm4gdC5zdGF0ZT1lW25dfSkpLHpyKFRyKG4ucHJvdG90eXBlKSwic3RhdGUiLGksdGhpcywhMCl9fSx7a2V5OiJyZXNldCIsdmFsdWU6ZnVuY3Rpb24oKXtOcihUcihuLnByb3RvdHlwZSksInJlc2V0Iix0aGlzKS5jYWxsKHRoaXMpLHRoaXMuX2Jsb2Nrcy5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdC5yZXNldCgpfSkpfX0se2tleToiaXNDb21wbGV0ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Jsb2Nrcy5ldmVyeSgoZnVuY3Rpb24odCl7cmV0dXJuIHQuaXNDb21wbGV0ZX0pKX19LHtrZXk6ImlzRmlsbGVkIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYmxvY2tzLmV2ZXJ5KChmdW5jdGlvbih0KXtyZXR1cm4gdC5pc0ZpbGxlZH0pKX19LHtrZXk6ImlzRml4ZWQiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9ibG9ja3MuZXZlcnkoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmlzRml4ZWR9KSl9fSx7a2V5OiJpc09wdGlvbmFsIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYmxvY2tzLmV2ZXJ5KChmdW5jdGlvbih0KXtyZXR1cm4gdC5pc09wdGlvbmFsfSkpfX0se2tleToiZG9Db21taXQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fYmxvY2tzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiB0LmRvQ29tbWl0KCl9KSksTnIoVHIobi5wcm90b3R5cGUpLCJkb0NvbW1pdCIsdGhpcykuY2FsbCh0aGlzKX19LHtrZXk6InVubWFza2VkVmFsdWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9ibG9ja3MucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2UudW5tYXNrZWRWYWx1ZX0pLCIiKX0sc2V0OmZ1bmN0aW9uKHQpe3pyKFRyKG4ucHJvdG90eXBlKSwidW5tYXNrZWRWYWx1ZSIsdCx0aGlzLCEwKX19LHtrZXk6InZhbHVlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYmxvY2tzLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlLnZhbHVlfSksIiIpfSxzZXQ6ZnVuY3Rpb24odCl7enIoVHIobi5wcm90b3R5cGUpLCJ2YWx1ZSIsdCx0aGlzLCEwKX19LHtrZXk6ImFwcGVuZFRhaWwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBOcihUcihuLnByb3RvdHlwZSksImFwcGVuZFRhaWwiLHRoaXMpLmNhbGwodGhpcyx0KS5hZ2dyZWdhdGUodGhpcy5fYXBwZW5kUGxhY2Vob2xkZXIoKSl9fSx7a2V5OiJfYXBwZW5kRWFnZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQsZT1uZXcgWXIsbj1udWxsPT09KHQ9dGhpcy5fbWFwUG9zVG9CbG9jayh0aGlzLnZhbHVlLmxlbmd0aCkpfHx2b2lkIDA9PT10P3ZvaWQgMDp0LmluZGV4O2lmKG51bGw9PW4pcmV0dXJuIGU7dGhpcy5fYmxvY2tzW25dLmlzRmlsbGVkJiYrK247Zm9yKHZhciBpPW47aTx0aGlzLl9ibG9ja3MubGVuZ3RoOysraSl7dmFyIHI9dGhpcy5fYmxvY2tzW2ldLl9hcHBlbmRFYWdlcigpO2lmKCFyLmluc2VydGVkKWJyZWFrO2UuYWdncmVnYXRlKHIpfXJldHVybiBlfX0se2tleToiX2FwcGVuZENoYXJSYXciLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSxuPXRoaXMuX21hcFBvc1RvQmxvY2sodGhpcy52YWx1ZS5sZW5ndGgpLGk9bmV3IFlyO2lmKCFuKXJldHVybiBpO2Zvcih2YXIgcj1uLmluZGV4OzsrK3Ipe3ZhciB1LHM9dGhpcy5fYmxvY2tzW3JdO2lmKCFzKWJyZWFrO3ZhciBhPXMuX2FwcGVuZENoYXIodCxPYmplY3QuYXNzaWduKHt9LGUse19iZWZvcmVUYWlsU3RhdGU6bnVsbD09PSh1PWUuX2JlZm9yZVRhaWxTdGF0ZSl8fHZvaWQgMD09PXU\/dm9pZCAwOnUuX2Jsb2Nrc1tyXX0pKSxvPWEuc2tpcDtpZihpLmFnZ3JlZ2F0ZShhKSxvfHxhLnJhd0luc2VydGVkKWJyZWFrfXJldHVybiBpfX0se2tleToiZXh0cmFjdFRhaWwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTowLG49YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOnRoaXMudmFsdWUubGVuZ3RoLGk9bmV3IGZ1O3JldHVybiBlPT09bnx8dGhpcy5fZm9yRWFjaEJsb2Nrc0luUmFuZ2UoZSxuLChmdW5jdGlvbihlLG4scix1KXt2YXIgcz1lLmV4dHJhY3RUYWlsKHIsdSk7cy5zdG9wPXQuX2ZpbmRTdG9wQmVmb3JlKG4pLHMuZnJvbT10Ll9ibG9ja1N0YXJ0UG9zKG4pLHMgaW5zdGFuY2VvZiBmdSYmKHMuYmxvY2tJbmRleD1uKSxpLmV4dGVuZChzKX0pKSxpfX0se2tleToiZXh0cmFjdElucHV0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTowLGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOnRoaXMudmFsdWUubGVuZ3RoLG49YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0\/YXJndW1lbnRzWzJdOnt9O2lmKHQ9PT1lKXJldHVybiIiO3ZhciBpPSIiO3JldHVybiB0aGlzLl9mb3JFYWNoQmxvY2tzSW5SYW5nZSh0LGUsKGZ1bmN0aW9uKHQsZSxyLHUpe2krPXQuZXh0cmFjdElucHV0KHIsdSxuKX0pKSxpfX0se2tleToiX2ZpbmRTdG9wQmVmb3JlIix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGUsbj0wO248dGhpcy5fc3RvcHMubGVuZ3RoOysrbil7dmFyIGk9dGhpcy5fc3RvcHNbbl07aWYoIShpPD10KSlicmVhaztlPWl9cmV0dXJuIGV9fSx7a2V5OiJfYXBwZW5kUGxhY2Vob2xkZXIiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj1uZXcgWXI7aWYodGhpcy5sYXp5JiZudWxsPT10KXJldHVybiBuO3ZhciBpPXRoaXMuX21hcFBvc1RvQmxvY2sodGhpcy52YWx1ZS5sZW5ndGgpO2lmKCFpKXJldHVybiBuO3ZhciByPWkuaW5kZXgsdT1udWxsIT10P3Q6dGhpcy5fYmxvY2tzLmxlbmd0aDtyZXR1cm4gdGhpcy5fYmxvY2tzLnNsaWNlKHIsdSkuZm9yRWFjaCgoZnVuY3Rpb24oaSl7aWYoIWkubGF6eXx8bnVsbCE9dCl7dmFyIHI9bnVsbCE9aS5fYmxvY2tzP1tpLl9ibG9ja3MubGVuZ3RoXTpbXSx1PWkuX2FwcGVuZFBsYWNlaG9sZGVyLmFwcGx5KGkscik7ZS5fdmFsdWUrPXUuaW5zZXJ0ZWQsbi5hZ2dyZWdhdGUodSl9fSkpLG59fSx7a2V5OiJfbWFwUG9zVG9CbG9jayIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPSIiLG49MDtuPHRoaXMuX2Jsb2Nrcy5sZW5ndGg7KytuKXt2YXIgaT10aGlzLl9ibG9ja3Nbbl0scj1lLmxlbmd0aDtpZih0PD0oZSs9aS52YWx1ZSkubGVuZ3RoKXJldHVybntpbmRleDpuLG9mZnNldDp0LXJ9fX19LHtrZXk6Il9ibG9ja1N0YXJ0UG9zIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYmxvY2tzLnNsaWNlKDAsdCkucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2UudmFsdWUubGVuZ3RofSksMCl9fSx7a2V5OiJfZm9yRWFjaEJsb2Nrc0luUmFuZ2UiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp0aGlzLnZhbHVlLmxlbmd0aCxuPWFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwLGk9dGhpcy5fbWFwUG9zVG9CbG9jayh0KTtpZihpKXt2YXIgcj10aGlzLl9tYXBQb3NUb0Jsb2NrKGUpLHU9ciYmaS5pbmRleD09PXIuaW5kZXgscz1pLm9mZnNldCxhPXImJnU\/ci5vZmZzZXQ6dGhpcy5fYmxvY2tzW2kuaW5kZXhdLnZhbHVlLmxlbmd0aDtpZihuKHRoaXMuX2Jsb2Nrc1tpLmluZGV4XSxpLmluZGV4LHMsYSksciYmIXUpe2Zvcih2YXIgbz1pLmluZGV4KzE7bzxyLmluZGV4OysrbyluKHRoaXMuX2Jsb2Nrc1tvXSxvLDAsdGhpcy5fYmxvY2tzW29dLnZhbHVlLmxlbmd0aCk7bih0aGlzLl9ibG9ja3Nbci5pbmRleF0sci5pbmRleCwwLHIub2Zmc2V0KX19fX0se2tleToicmVtb3ZlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTowLGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOnRoaXMudmFsdWUubGVuZ3RoLGk9TnIoVHIobi5wcm90b3R5cGUpLCJyZW1vdmUiLHRoaXMpLmNhbGwodGhpcyx0LGUpO3JldHVybiB0aGlzLl9mb3JFYWNoQmxvY2tzSW5SYW5nZSh0LGUsKGZ1bmN0aW9uKHQsZSxuLHIpe2kuYWdncmVnYXRlKHQucmVtb3ZlKG4scikpfSkpLGl9fSx7a2V5OiJuZWFyZXN0SW5wdXRQb3MiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpHcjtpZighdGhpcy5fYmxvY2tzLmxlbmd0aClyZXR1cm4gMDt2YXIgbj1uZXcgcHUodGhpcyx0KTtpZihlPT09R3IpcmV0dXJuIG4ucHVzaFJpZ2h0QmVmb3JlSW5wdXQoKT9uLnBvczoobi5wb3BTdGF0ZSgpLG4ucHVzaExlZnRCZWZvcmVJbnB1dCgpP24ucG9zOnRoaXMudmFsdWUubGVuZ3RoKTtpZihlPT09S3J8fGU9PT0kcil7aWYoZT09PUtyKXtpZihuLnB1c2hSaWdodEJlZm9yZUZpbGxlZCgpLG4ub2smJm4ucG9zPT09dClyZXR1cm4gdDtuLnBvcFN0YXRlKCl9aWYobi5wdXNoTGVmdEJlZm9yZUlucHV0KCksbi5wdXNoTGVmdEJlZm9yZVJlcXVpcmVkKCksbi5wdXNoTGVmdEJlZm9yZUZpbGxlZCgpLGU9PT1Lcil7aWYobi5wdXNoUmlnaHRCZWZvcmVJbnB1dCgpLG4ucHVzaFJpZ2h0QmVmb3JlUmVxdWlyZWQoKSxuLm9rJiZuLnBvczw9dClyZXR1cm4gbi5wb3M7aWYobi5wb3BTdGF0ZSgpLG4ub2smJm4ucG9zPD10KXJldHVybiBuLnBvcztuLnBvcFN0YXRlKCl9cmV0dXJuIG4ub2s\/bi5wb3M6ZT09PSRyPzA6KG4ucG9wU3RhdGUoKSxuLm9rP24ucG9zOihuLnBvcFN0YXRlKCksbi5vaz9uLnBvczowKSl9cmV0dXJuIGU9PT1Xcnx8ZT09PVhyPyhuLnB1c2hSaWdodEJlZm9yZUlucHV0KCksbi5wdXNoUmlnaHRCZWZvcmVSZXF1aXJlZCgpLG4ucHVzaFJpZ2h0QmVmb3JlRmlsbGVkKCk\/bi5wb3M6ZT09PVhyP3RoaXMudmFsdWUubGVuZ3RoOihuLnBvcFN0YXRlKCksbi5vaz9uLnBvczoobi5wb3BTdGF0ZSgpLG4ub2s\/bi5wb3M6dGhpcy5uZWFyZXN0SW5wdXRQb3ModCxLcikpKSk6dH19LHtrZXk6Im1hc2tlZEJsb2NrIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5tYXNrZWRCbG9ja3ModClbMF19fSx7a2V5OiJtYXNrZWRCbG9ja3MiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj10aGlzLl9tYXNrZWRCbG9ja3NbdF07cmV0dXJuIG4\/bi5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9ibG9ja3NbdF19KSk6W119fV0pLG59KHJ1KTtndS5ERUZBVUxUUz17bGF6eTohMCxwbGFjZWhvbGRlckNoYXI6Il8ifSxndS5TVE9QX0NIQVI9ImAiLGd1LkVTQ0FQRV9DSEFSPSJcXCIsZ3UuSW5wdXREZWZpbml0aW9uPWx1LGd1LkZpeGVkRGVmaW5pdGlvbj1odSxpdS5NYXNrZWRQYXR0ZXJuPWd1O3ZhciBrdT1mdW5jdGlvbih0KXtQcihuLHQpO3ZhciBlPVZyKG4pO2Z1bmN0aW9uIG4oKXtyZXR1cm4geHIodGhpcyxuKSxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gT3Iobixbe2tleToiX21hdGNoRnJvbSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWF4TGVuZ3RoLVN0cmluZyh0aGlzLmZyb20pLmxlbmd0aH19LHtrZXk6Il91cGRhdGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3Q9T2JqZWN0LmFzc2lnbih7dG86dGhpcy50b3x8MCxmcm9tOnRoaXMuZnJvbXx8MCxtYXhMZW5ndGg6dGhpcy5tYXhMZW5ndGh8fDB9LHQpO3ZhciBlPVN0cmluZyh0LnRvKS5sZW5ndGg7bnVsbCE9dC5tYXhMZW5ndGgmJihlPU1hdGgubWF4KGUsdC5tYXhMZW5ndGgpKSx0Lm1heExlbmd0aD1lO2Zvcih2YXIgaT1TdHJpbmcodC5mcm9tKS5wYWRTdGFydChlLCIwIikscj1TdHJpbmcodC50bykucGFkU3RhcnQoZSwiMCIpLHU9MDt1PHIubGVuZ3RoJiZyW3VdPT09aVt1XTspKyt1O3QubWFzaz1yLnNsaWNlKDAsdSkucmVwbGFjZSgvMC9nLCJcXDAiKSsiMCIucmVwZWF0KGUtdSksTnIoVHIobi5wcm90b3R5cGUpLCJfdXBkYXRlIix0aGlzKS5jYWxsKHRoaXMsdCl9fSx7a2V5OiJpc0NvbXBsZXRlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gTnIoVHIobi5wcm90b3R5cGUpLCJpc0NvbXBsZXRlIix0aGlzKSYmQm9vbGVhbih0aGlzLnZhbHVlKX19LHtrZXk6ImJvdW5kYXJpZXMiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPSIiLG49IiIsaT1xcih0Lm1hdGNoKC9eKFxEKikoXGQqKShcRCopLyl8fFtdLDMpLHI9aVsxXSx1PWlbMl07cmV0dXJuIHUmJihlPSIwIi5yZXBlYXQoci5sZW5ndGgpK3Usbj0iOSIucmVwZWF0KHIubGVuZ3RoKSt1KSxbZT1lLnBhZEVuZCh0aGlzLm1heExlbmd0aCwiMCIpLG49bi5wYWRFbmQodGhpcy5tYXhMZW5ndGgsIjkiKV19fSx7a2V5OiJkb1ByZXBhcmUiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGk9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOnt9LHI9UXIoTnIoVHIobi5wcm90b3R5cGUpLCJkb1ByZXBhcmUiLHRoaXMpLmNhbGwodGhpcyx0LnJlcGxhY2UoL1xEL2csIiIpLGkpKSx1PXFyKHIsMik7aWYodD11WzBdLGU9dVsxXSwhdGhpcy5hdXRvZml4fHwhdClyZXR1cm4gdDt2YXIgcz1TdHJpbmcodGhpcy5mcm9tKS5wYWRTdGFydCh0aGlzLm1heExlbmd0aCwiMCIpLGE9U3RyaW5nKHRoaXMudG8pLnBhZFN0YXJ0KHRoaXMubWF4TGVuZ3RoLCIwIiksbz10aGlzLnZhbHVlK3Q7aWYoby5sZW5ndGg+dGhpcy5tYXhMZW5ndGgpcmV0dXJuIiI7dmFyIGw9dGhpcy5ib3VuZGFyaWVzKG8pLGg9cXIobCwyKSxjPWhbMF0sZj1oWzFdO3JldHVybiBOdW1iZXIoZik8dGhpcy5mcm9tP3Nbby5sZW5ndGgtMV06TnVtYmVyKGMpPnRoaXMudG8\/InBhZCI9PT10aGlzLmF1dG9maXgmJm8ubGVuZ3RoPHRoaXMubWF4TGVuZ3RoP1siIixlLmFnZ3JlZ2F0ZSh0aGlzLmFwcGVuZChzW28ubGVuZ3RoLTFdK3QsaSkpXTphW28ubGVuZ3RoLTFdOnR9fSx7a2V5OiJkb1ZhbGlkYXRlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0LGU9dGhpcy52YWx1ZSxpPWUuc2VhcmNoKC9bXjBdLyk7aWYoLTE9PT1pJiZlLmxlbmd0aDw9dGhpcy5fbWF0Y2hGcm9tKXJldHVybiEwO2Zvcih2YXIgcj10aGlzLmJvdW5kYXJpZXMoZSksdT1xcihyLDIpLHM9dVswXSxhPXVbMV0sbz1hcmd1bWVudHMubGVuZ3RoLGw9bmV3IEFycmF5KG8pLGg9MDtoPG87aCsrKWxbaF09YXJndW1lbnRzW2hdO3JldHVybiB0aGlzLmZyb208PU51bWJlcihhKSYmTnVtYmVyKHMpPD10aGlzLnRvJiYodD1OcihUcihuLnByb3RvdHlwZSksImRvVmFsaWRhdGUiLHRoaXMpKS5jYWxsLmFwcGx5KHQsW3RoaXNdLmNvbmNhdChsKSl9fV0pLG59KGd1KTtpdS5NYXNrZWRSYW5nZT1rdTt2YXIgeXU9ZnVuY3Rpb24odCl7UHIobix0KTt2YXIgZT1WcihuKTtmdW5jdGlvbiBuKHQpe3JldHVybiB4cih0aGlzLG4pLGUuY2FsbCh0aGlzLE9iamVjdC5hc3NpZ24oe30sbi5ERUZBVUxUUyx0KSl9cmV0dXJuIE9yKG4sW3trZXk6Il91cGRhdGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3QubWFzaz09PURhdGUmJmRlbGV0ZSB0Lm1hc2ssdC5wYXR0ZXJuJiYodC5tYXNrPXQucGF0dGVybik7dmFyIGU9dC5ibG9ja3M7dC5ibG9ja3M9T2JqZWN0LmFzc2lnbih7fSxuLkdFVF9ERUZBVUxUX0JMT0NLUygpKSx0Lm1pbiYmKHQuYmxvY2tzLlkuZnJvbT10Lm1pbi5nZXRGdWxsWWVhcigpKSx0Lm1heCYmKHQuYmxvY2tzLlkudG89dC5tYXguZ2V0RnVsbFllYXIoKSksdC5taW4mJnQubWF4JiZ0LmJsb2Nrcy5ZLmZyb209PT10LmJsb2Nrcy5ZLnRvJiYodC5ibG9ja3MubS5mcm9tPXQubWluLmdldE1vbnRoKCkrMSx0LmJsb2Nrcy5tLnRvPXQubWF4LmdldE1vbnRoKCkrMSx0LmJsb2Nrcy5tLmZyb209PT10LmJsb2Nrcy5tLnRvJiYodC5ibG9ja3MuZC5mcm9tPXQubWluLmdldERhdGUoKSx0LmJsb2Nrcy5kLnRvPXQubWF4LmdldERhdGUoKSkpLE9iamVjdC5hc3NpZ24odC5ibG9ja3MsdGhpcy5ibG9ja3MsZSksT2JqZWN0LmtleXModC5ibG9ja3MpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBuPXQuYmxvY2tzW2VdOyEoImF1dG9maXgiaW4gbikmJiJhdXRvZml4ImluIHQmJihuLmF1dG9maXg9dC5hdXRvZml4KX0pKSxOcihUcihuLnByb3RvdHlwZSksIl91cGRhdGUiLHRoaXMpLmNhbGwodGhpcyx0KX19LHtrZXk6ImRvVmFsaWRhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0LGU9dGhpcy5kYXRlLGk9YXJndW1lbnRzLmxlbmd0aCxyPW5ldyBBcnJheShpKSx1PTA7dTxpO3UrKylyW3VdPWFyZ3VtZW50c1t1XTtyZXR1cm4odD1OcihUcihuLnByb3RvdHlwZSksImRvVmFsaWRhdGUiLHRoaXMpKS5jYWxsLmFwcGx5KHQsW3RoaXNdLmNvbmNhdChyKSkmJighdGhpcy5pc0NvbXBsZXRlfHx0aGlzLmlzRGF0ZUV4aXN0KHRoaXMudmFsdWUpJiZudWxsIT1lJiYobnVsbD09dGhpcy5taW58fHRoaXMubWluPD1lKSYmKG51bGw9PXRoaXMubWF4fHxlPD10aGlzLm1heCkpfX0se2tleToiaXNEYXRlRXhpc3QiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmZvcm1hdCh0aGlzLnBhcnNlKHQsdGhpcyksdGhpcykuaW5kZXhPZih0KT49MH19LHtrZXk6ImRhdGUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnR5cGVkVmFsdWV9LHNldDpmdW5jdGlvbih0KXt0aGlzLnR5cGVkVmFsdWU9dH19LHtrZXk6InR5cGVkVmFsdWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlzQ29tcGxldGU\/TnIoVHIobi5wcm90b3R5cGUpLCJ0eXBlZFZhbHVlIix0aGlzKTpudWxsfSxzZXQ6ZnVuY3Rpb24odCl7enIoVHIobi5wcm90b3R5cGUpLCJ0eXBlZFZhbHVlIix0LHRoaXMsITApfX0se2tleToibWFza0VxdWFscyIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1EYXRlfHxOcihUcihuLnByb3RvdHlwZSksIm1hc2tFcXVhbHMiLHRoaXMpLmNhbGwodGhpcyx0KX19XSksbn0oZ3UpO3l1LkRFRkFVTFRTPXtwYXR0ZXJuOiJkey59YG17Ln1gWSIsZm9ybWF0OmZ1bmN0aW9uKHQpe3JldHVybiB0P1tTdHJpbmcodC5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsIjAiKSxTdHJpbmcodC5nZXRNb250aCgpKzEpLnBhZFN0YXJ0KDIsIjAiKSx0LmdldEZ1bGxZZWFyKCldLmpvaW4oIi4iKToiIn0scGFyc2U6ZnVuY3Rpb24odCl7dmFyIGU9cXIodC5zcGxpdCgiLiIpLDMpLG49ZVswXSxpPWVbMV0scj1lWzJdO3JldHVybiBuZXcgRGF0ZShyLGktMSxuKX19LHl1LkdFVF9ERUZBVUxUX0JMT0NLUz1mdW5jdGlvbigpe3JldHVybntkOnttYXNrOmt1LGZyb206MSx0bzozMSxtYXhMZW5ndGg6Mn0sbTp7bWFzazprdSxmcm9tOjEsdG86MTIsbWF4TGVuZ3RoOjJ9LFk6e21hc2s6a3UsZnJvbToxOTAwLHRvOjk5OTl9fX0saXUuTWFza2VkRGF0ZT15dTt2YXIgbXU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7eHIodGhpcyx0KX1yZXR1cm4gT3IodCxbe2tleToic2VsZWN0aW9uU3RhcnQiLGdldDpmdW5jdGlvbigpe3ZhciB0O3RyeXt0PXRoaXMuX3Vuc2FmZVNlbGVjdGlvblN0YXJ0fWNhdGNoKHQpe31yZXR1cm4gbnVsbCE9dD90OnRoaXMudmFsdWUubGVuZ3RofX0se2tleToic2VsZWN0aW9uRW5kIixnZXQ6ZnVuY3Rpb24oKXt2YXIgdDt0cnl7dD10aGlzLl91bnNhZmVTZWxlY3Rpb25FbmR9Y2F0Y2godCl7fXJldHVybiBudWxsIT10P3Q6dGhpcy52YWx1ZS5sZW5ndGh9fSx7a2V5OiJzZWxlY3QiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7aWYobnVsbCE9dCYmbnVsbCE9ZSYmKHQhPT10aGlzLnNlbGVjdGlvblN0YXJ0fHxlIT09dGhpcy5zZWxlY3Rpb25FbmQpKXRyeXt0aGlzLl91bnNhZmVTZWxlY3QodCxlKX1jYXRjaCh0KXt9fX0se2tleToiX3Vuc2FmZVNlbGVjdCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt9fSx7a2V5OiJpc0FjdGl2ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuITF9fSx7a2V5OiJiaW5kRXZlbnRzIix2YWx1ZTpmdW5jdGlvbih0KXt9fSx7a2V5OiJ1bmJpbmRFdmVudHMiLHZhbHVlOmZ1bmN0aW9uKCl7fX1dKSx0fSgpO2l1Lk1hc2tFbGVtZW50PW11O3ZhciBidT1mdW5jdGlvbih0KXtQcihuLHQpO3ZhciBlPVZyKG4pO2Z1bmN0aW9uIG4odCl7dmFyIGk7cmV0dXJuIHhyKHRoaXMsbiksKGk9ZS5jYWxsKHRoaXMpKS5pbnB1dD10LGkuX2hhbmRsZXJzPXt9LGl9cmV0dXJuIE9yKG4sW3trZXk6InJvb3RFbGVtZW50IixnZXQ6ZnVuY3Rpb24oKXt2YXIgdCxlLG47cmV0dXJuIG51bGwhPT0odD1udWxsPT09KGU9KG49dGhpcy5pbnB1dCkuZ2V0Um9vdE5vZGUpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLmNhbGwobikpJiZ2b2lkIDAhPT10P3Q6ZG9jdW1lbnR9fSx7a2V5OiJpc0FjdGl2ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5wdXQ9PT10aGlzLnJvb3RFbGVtZW50LmFjdGl2ZUVsZW1lbnR9fSx7a2V5OiJfdW5zYWZlU2VsZWN0aW9uU3RhcnQiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlucHV0LnNlbGVjdGlvblN0YXJ0fX0se2tleToiX3Vuc2FmZVNlbGVjdGlvbkVuZCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5wdXQuc2VsZWN0aW9uRW5kfX0se2tleToiX3Vuc2FmZVNlbGVjdCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt0aGlzLmlucHV0LnNldFNlbGVjdGlvblJhbmdlKHQsZSl9fSx7a2V5OiJ2YWx1ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5wdXQudmFsdWV9LHNldDpmdW5jdGlvbih0KXt0aGlzLmlucHV0LnZhbHVlPXR9fSx7a2V5OiJiaW5kRXZlbnRzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzO09iamVjdC5rZXlzKHQpLmZvckVhY2goKGZ1bmN0aW9uKGkpe3JldHVybiBlLl90b2dnbGVFdmVudEhhbmRsZXIobi5FVkVOVFNfTUFQW2ldLHRbaV0pfSkpfX0se2tleToidW5iaW5kRXZlbnRzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7T2JqZWN0LmtleXModGhpcy5faGFuZGxlcnMpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiB0Ll90b2dnbGVFdmVudEhhbmRsZXIoZSl9KSl9fSx7a2V5OiJfdG9nZ2xlRXZlbnRIYW5kbGVyIix2YWx1ZTpmdW5jdGlvbih0LGUpe3RoaXMuX2hhbmRsZXJzW3RdJiYodGhpcy5pbnB1dC5yZW1vdmVFdmVudExpc3RlbmVyKHQsdGhpcy5faGFuZGxlcnNbdF0pLGRlbGV0ZSB0aGlzLl9oYW5kbGVyc1t0XSksZSYmKHRoaXMuaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcih0LGUpLHRoaXMuX2hhbmRsZXJzW3RdPWUpfX1dKSxufShtdSk7YnUuRVZFTlRTX01BUD17c2VsZWN0aW9uQ2hhbmdlOiJrZXlkb3duIixpbnB1dDoiaW5wdXQiLGRyb3A6ImRyb3AiLGNsaWNrOiJjbGljayIsZm9jdXM6ImZvY3VzIixjb21taXQ6ImJsdXIifSxpdS5IVE1MTWFza0VsZW1lbnQ9YnU7dmFyIF91PWZ1bmN0aW9uKHQpe1ByKG4sdCk7dmFyIGU9VnIobik7ZnVuY3Rpb24gbigpe3JldHVybiB4cih0aGlzLG4pLGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBPcihuLFt7a2V5OiJfdW5zYWZlU2VsZWN0aW9uU3RhcnQiLGdldDpmdW5jdGlvbigpe3ZhciB0PXRoaXMucm9vdEVsZW1lbnQsZT10LmdldFNlbGVjdGlvbiYmdC5nZXRTZWxlY3Rpb24oKSxuPWUmJmUuYW5jaG9yT2Zmc2V0LGk9ZSYmZS5mb2N1c09mZnNldDtyZXR1cm4gbnVsbD09aXx8bnVsbD09bnx8bjxpP246aX19LHtrZXk6Il91bnNhZmVTZWxlY3Rpb25FbmQiLGdldDpmdW5jdGlvbigpe3ZhciB0PXRoaXMucm9vdEVsZW1lbnQsZT10LmdldFNlbGVjdGlvbiYmdC5nZXRTZWxlY3Rpb24oKSxuPWUmJmUuYW5jaG9yT2Zmc2V0LGk9ZSYmZS5mb2N1c09mZnNldDtyZXR1cm4gbnVsbD09aXx8bnVsbD09bnx8bj5pP246aX19LHtrZXk6Il91bnNhZmVTZWxlY3QiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7aWYodGhpcy5yb290RWxlbWVudC5jcmVhdGVSYW5nZSl7dmFyIG49dGhpcy5yb290RWxlbWVudC5jcmVhdGVSYW5nZSgpO24uc2V0U3RhcnQodGhpcy5pbnB1dC5maXJzdENoaWxkfHx0aGlzLmlucHV0LHQpLG4uc2V0RW5kKHRoaXMuaW5wdXQubGFzdENoaWxkfHx0aGlzLmlucHV0LGUpO3ZhciBpPXRoaXMucm9vdEVsZW1lbnQscj1pLmdldFNlbGVjdGlvbiYmaS5nZXRTZWxlY3Rpb24oKTtyJiYoci5yZW1vdmVBbGxSYW5nZXMoKSxyLmFkZFJhbmdlKG4pKX19fSx7a2V5OiJ2YWx1ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5wdXQudGV4dENvbnRlbnR9LHNldDpmdW5jdGlvbih0KXt0aGlzLmlucHV0LnRleHRDb250ZW50PXR9fV0pLG59KGJ1KTtpdS5IVE1MQ29udGVudGVkaXRhYmxlTWFza0VsZW1lbnQ9X3U7dmFyIEF1PVsibWFzayJdLEN1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLG4pe3hyKHRoaXMsdCksdGhpcy5lbD1lIGluc3RhbmNlb2YgbXU\/ZTplLmlzQ29udGVudEVkaXRhYmxlJiYiSU5QVVQiIT09ZS50YWdOYW1lJiYiVEVYVEFSRUEiIT09ZS50YWdOYW1lP25ldyBfdShlKTpuZXcgYnUoZSksdGhpcy5tYXNrZWQ9c3UobiksdGhpcy5fbGlzdGVuZXJzPXt9LHRoaXMuX3ZhbHVlPSIiLHRoaXMuX3VubWFza2VkVmFsdWU9IiIsdGhpcy5fc2F2ZVNlbGVjdGlvbj10aGlzLl9zYXZlU2VsZWN0aW9uLmJpbmQodGhpcyksdGhpcy5fb25JbnB1dD10aGlzLl9vbklucHV0LmJpbmQodGhpcyksdGhpcy5fb25DaGFuZ2U9dGhpcy5fb25DaGFuZ2UuYmluZCh0aGlzKSx0aGlzLl9vbkRyb3A9dGhpcy5fb25Ecm9wLmJpbmQodGhpcyksdGhpcy5fb25Gb2N1cz10aGlzLl9vbkZvY3VzLmJpbmQodGhpcyksdGhpcy5fb25DbGljaz10aGlzLl9vbkNsaWNrLmJpbmQodGhpcyksdGhpcy5hbGlnbkN1cnNvcj10aGlzLmFsaWduQ3Vyc29yLmJpbmQodGhpcyksdGhpcy5hbGlnbkN1cnNvckZyaWVuZGx5PXRoaXMuYWxpZ25DdXJzb3JGcmllbmRseS5iaW5kKHRoaXMpLHRoaXMuX2JpbmRFdmVudHMoKSx0aGlzLnVwZGF0ZVZhbHVlKCksdGhpcy5fb25DaGFuZ2UoKX1yZXR1cm4gT3IodCxbe2tleToibWFzayIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFza2VkLm1hc2t9LHNldDpmdW5jdGlvbih0KXtpZighdGhpcy5tYXNrRXF1YWxzKHQpKWlmKHQgaW5zdGFuY2VvZiBpdS5NYXNrZWR8fHRoaXMubWFza2VkLmNvbnN0cnVjdG9yIT09dXUodCkpe3ZhciBlPXN1KHttYXNrOnR9KTtlLnVubWFza2VkVmFsdWU9dGhpcy5tYXNrZWQudW5tYXNrZWRWYWx1ZSx0aGlzLm1hc2tlZD1lfWVsc2UgdGhpcy5tYXNrZWQudXBkYXRlT3B0aW9ucyh7bWFzazp0fSl9fSx7a2V5OiJtYXNrRXF1YWxzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZTtyZXR1cm4gbnVsbD09dHx8KG51bGw9PT0oZT10aGlzLm1hc2tlZCl8fHZvaWQgMD09PWU\/dm9pZCAwOmUubWFza0VxdWFscyh0KSl9fSx7a2V5OiJ2YWx1ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ZhbHVlfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5tYXNrZWQudmFsdWU9dCx0aGlzLnVwZGF0ZUNvbnRyb2woKSx0aGlzLmFsaWduQ3Vyc29yKCl9fSx7a2V5OiJ1bm1hc2tlZFZhbHVlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdW5tYXNrZWRWYWx1ZX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMubWFza2VkLnVubWFza2VkVmFsdWU9dCx0aGlzLnVwZGF0ZUNvbnRyb2woKSx0aGlzLmFsaWduQ3Vyc29yKCl9fSx7a2V5OiJ0eXBlZFZhbHVlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXNrZWQudHlwZWRWYWx1ZX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMubWFza2VkLnR5cGVkVmFsdWU9dCx0aGlzLnVwZGF0ZUNvbnRyb2woKSx0aGlzLmFsaWduQ3Vyc29yKCl9fSx7a2V5OiJfYmluZEV2ZW50cyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmVsLmJpbmRFdmVudHMoe3NlbGVjdGlvbkNoYW5nZTp0aGlzLl9zYXZlU2VsZWN0aW9uLGlucHV0OnRoaXMuX29uSW5wdXQsZHJvcDp0aGlzLl9vbkRyb3AsY2xpY2s6dGhpcy5fb25DbGljayxmb2N1czp0aGlzLl9vbkZvY3VzLGNvbW1pdDp0aGlzLl9vbkNoYW5nZX0pfX0se2tleToiX3VuYmluZEV2ZW50cyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmVsJiZ0aGlzLmVsLnVuYmluZEV2ZW50cygpfX0se2tleToiX2ZpcmVFdmVudCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsbj1uZXcgQXJyYXkoZT4xP2UtMTowKSxpPTE7aTxlO2krKyluW2ktMV09YXJndW1lbnRzW2ldO3ZhciByPXRoaXMuX2xpc3RlbmVyc1t0XTtyJiZyLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiB0LmFwcGx5KHZvaWQgMCxuKX0pKX19LHtrZXk6InNlbGVjdGlvblN0YXJ0IixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY3Vyc29yQ2hhbmdpbmc\/dGhpcy5fY2hhbmdpbmdDdXJzb3JQb3M6dGhpcy5lbC5zZWxlY3Rpb25TdGFydH19LHtrZXk6ImN1cnNvclBvcyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2N1cnNvckNoYW5naW5nP3RoaXMuX2NoYW5naW5nQ3Vyc29yUG9zOnRoaXMuZWwuc2VsZWN0aW9uRW5kfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5lbCYmdGhpcy5lbC5pc0FjdGl2ZSYmKHRoaXMuZWwuc2VsZWN0KHQsdCksdGhpcy5fc2F2ZVNlbGVjdGlvbigpKX19LHtrZXk6Il9zYXZlU2VsZWN0aW9uIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMudmFsdWUhPT10aGlzLmVsLnZhbHVlJiZjb25zb2xlLndhcm4oIkVsZW1lbnQgdmFsdWUgd2FzIGNoYW5nZWQgb3V0c2lkZSBvZiBtYXNrLiBTeW5jcm9uaXplIG1hc2sgdXNpbmcgYG1hc2sudXBkYXRlVmFsdWUoKWAgdG8gd29yayBwcm9wZXJseS4iKSx0aGlzLl9zZWxlY3Rpb249e3N0YXJ0OnRoaXMuc2VsZWN0aW9uU3RhcnQsZW5kOnRoaXMuY3Vyc29yUG9zfX19LHtrZXk6InVwZGF0ZVZhbHVlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMubWFza2VkLnZhbHVlPXRoaXMuZWwudmFsdWUsdGhpcy5fdmFsdWU9dGhpcy5tYXNrZWQudmFsdWV9fSx7a2V5OiJ1cGRhdGVDb250cm9sIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMubWFza2VkLnVubWFza2VkVmFsdWUsZT10aGlzLm1hc2tlZC52YWx1ZSxuPXRoaXMudW5tYXNrZWRWYWx1ZSE9PXR8fHRoaXMudmFsdWUhPT1lO3RoaXMuX3VubWFza2VkVmFsdWU9dCx0aGlzLl92YWx1ZT1lLHRoaXMuZWwudmFsdWUhPT1lJiYodGhpcy5lbC52YWx1ZT1lKSxuJiZ0aGlzLl9maXJlQ2hhbmdlRXZlbnRzKCl9fSx7a2V5OiJ1cGRhdGVPcHRpb25zIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10Lm1hc2ssbj1qcih0LEF1KSxpPSF0aGlzLm1hc2tFcXVhbHMoZSkscj0hdHUodGhpcy5tYXNrZWQsbik7aSYmKHRoaXMubWFzaz1lKSxyJiZ0aGlzLm1hc2tlZC51cGRhdGVPcHRpb25zKG4pLChpfHxyKSYmdGhpcy51cGRhdGVDb250cm9sKCl9fSx7a2V5OiJ1cGRhdGVDdXJzb3IiLHZhbHVlOmZ1bmN0aW9uKHQpe251bGwhPXQmJih0aGlzLmN1cnNvclBvcz10LHRoaXMuX2RlbGF5VXBkYXRlQ3Vyc29yKHQpKX19LHtrZXk6Il9kZWxheVVwZGF0ZUN1cnNvciIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLl9hYm9ydFVwZGF0ZUN1cnNvcigpLHRoaXMuX2NoYW5naW5nQ3Vyc29yUG9zPXQsdGhpcy5fY3Vyc29yQ2hhbmdpbmc9c2V0VGltZW91dCgoZnVuY3Rpb24oKXtlLmVsJiYoZS5jdXJzb3JQb3M9ZS5fY2hhbmdpbmdDdXJzb3JQb3MsZS5fYWJvcnRVcGRhdGVDdXJzb3IoKSl9KSwxMCl9fSx7a2V5OiJfZmlyZUNoYW5nZUV2ZW50cyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl9maXJlRXZlbnQoImFjY2VwdCIsdGhpcy5faW5wdXRFdmVudCksdGhpcy5tYXNrZWQuaXNDb21wbGV0ZSYmdGhpcy5fZmlyZUV2ZW50KCJjb21wbGV0ZSIsdGhpcy5faW5wdXRFdmVudCl9fSx7a2V5OiJfYWJvcnRVcGRhdGVDdXJzb3IiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fY3Vyc29yQ2hhbmdpbmcmJihjbGVhclRpbWVvdXQodGhpcy5fY3Vyc29yQ2hhbmdpbmcpLGRlbGV0ZSB0aGlzLl9jdXJzb3JDaGFuZ2luZyl9fSx7a2V5OiJhbGlnbkN1cnNvciIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmN1cnNvclBvcz10aGlzLm1hc2tlZC5uZWFyZXN0SW5wdXRQb3ModGhpcy5tYXNrZWQubmVhcmVzdElucHV0UG9zKHRoaXMuY3Vyc29yUG9zLEtyKSl9fSx7a2V5OiJhbGlnbkN1cnNvckZyaWVuZGx5Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc2VsZWN0aW9uU3RhcnQ9PT10aGlzLmN1cnNvclBvcyYmdGhpcy5hbGlnbkN1cnNvcigpfX0se2tleToib24iLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX2xpc3RlbmVyc1t0XXx8KHRoaXMuX2xpc3RlbmVyc1t0XT1bXSksdGhpcy5fbGlzdGVuZXJzW3RdLnB1c2goZSksdGhpc319LHtrZXk6Im9mZiIsdmFsdWU6ZnVuY3Rpb24odCxlKXtpZighdGhpcy5fbGlzdGVuZXJzW3RdKXJldHVybiB0aGlzO2lmKCFlKXJldHVybiBkZWxldGUgdGhpcy5fbGlzdGVuZXJzW3RdLHRoaXM7dmFyIG49dGhpcy5fbGlzdGVuZXJzW3RdLmluZGV4T2YoZSk7cmV0dXJuIG4+PTAmJnRoaXMuX2xpc3RlbmVyc1t0XS5zcGxpY2UobiwxKSx0aGlzfX0se2tleToiX29uSW5wdXQiLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKHRoaXMuX2lucHV0RXZlbnQ9dCx0aGlzLl9hYm9ydFVwZGF0ZUN1cnNvcigpLCF0aGlzLl9zZWxlY3Rpb24pcmV0dXJuIHRoaXMudXBkYXRlVmFsdWUoKTt2YXIgZT1uZXcgZXUodGhpcy5lbC52YWx1ZSx0aGlzLmN1cnNvclBvcyx0aGlzLnZhbHVlLHRoaXMuX3NlbGVjdGlvbiksbj10aGlzLm1hc2tlZC5yYXdJbnB1dFZhbHVlLGk9dGhpcy5tYXNrZWQuc3BsaWNlKGUuc3RhcnRDaGFuZ2VQb3MsZS5yZW1vdmVkLmxlbmd0aCxlLmluc2VydGVkLGUucmVtb3ZlRGlyZWN0aW9uKS5vZmZzZXQscj1uPT09dGhpcy5tYXNrZWQucmF3SW5wdXRWYWx1ZT9lLnJlbW92ZURpcmVjdGlvbjpHcix1PXRoaXMubWFza2VkLm5lYXJlc3RJbnB1dFBvcyhlLnN0YXJ0Q2hhbmdlUG9zK2kscik7ciE9PUdyJiYodT10aGlzLm1hc2tlZC5uZWFyZXN0SW5wdXRQb3ModSxHcikpLHRoaXMudXBkYXRlQ29udHJvbCgpLHRoaXMudXBkYXRlQ3Vyc29yKHUpLGRlbGV0ZSB0aGlzLl9pbnB1dEV2ZW50fX0se2tleToiX29uQ2hhbmdlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMudmFsdWUhPT10aGlzLmVsLnZhbHVlJiZ0aGlzLnVwZGF0ZVZhbHVlKCksdGhpcy5tYXNrZWQuZG9Db21taXQoKSx0aGlzLnVwZGF0ZUNvbnRyb2woKSx0aGlzLl9zYXZlU2VsZWN0aW9uKCl9fSx7a2V5OiJfb25Ecm9wIix2YWx1ZTpmdW5jdGlvbih0KXt0LnByZXZlbnREZWZhdWx0KCksdC5zdG9wUHJvcGFnYXRpb24oKX19LHtrZXk6Il9vbkZvY3VzIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLmFsaWduQ3Vyc29yRnJpZW5kbHkoKX19LHtrZXk6Il9vbkNsaWNrIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLmFsaWduQ3Vyc29yRnJpZW5kbHkoKX19LHtrZXk6ImRlc3Ryb3kiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fdW5iaW5kRXZlbnRzKCksdGhpcy5fbGlzdGVuZXJzLmxlbmd0aD0wLGRlbGV0ZSB0aGlzLmVsfX1dKSx0fSgpO2l1LklucHV0TWFzaz1DdTt2YXIgRXU9ZnVuY3Rpb24odCl7UHIobix0KTt2YXIgZT1WcihuKTtmdW5jdGlvbiBuKCl7cmV0dXJuIHhyKHRoaXMsbiksZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIE9yKG4sW3trZXk6Il91cGRhdGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3QuZW51bSYmKHQubWFzaz0iKiIucmVwZWF0KHQuZW51bVswXS5sZW5ndGgpKSxOcihUcihuLnByb3RvdHlwZSksIl91cGRhdGUiLHRoaXMpLmNhbGwodGhpcyx0KX19LHtrZXk6ImRvVmFsaWRhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0LGU9dGhpcyxpPWFyZ3VtZW50cy5sZW5ndGgscj1uZXcgQXJyYXkoaSksdT0wO3U8aTt1Kyspclt1XT1hcmd1bWVudHNbdV07cmV0dXJuIHRoaXMuZW51bS5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4gdC5pbmRleE9mKGUudW5tYXNrZWRWYWx1ZSk+PTB9KSkmJih0PU5yKFRyKG4ucHJvdG90eXBlKSwiZG9WYWxpZGF0ZSIsdGhpcykpLmNhbGwuYXBwbHkodCxbdGhpc10uY29uY2F0KHIpKX19XSksbn0oZ3UpO2l1Lk1hc2tlZEVudW09RXU7dmFyIEZ1PWZ1bmN0aW9uKHQpe1ByKG4sdCk7dmFyIGU9VnIobik7ZnVuY3Rpb24gbih0KXtyZXR1cm4geHIodGhpcyxuKSxlLmNhbGwodGhpcyxPYmplY3QuYXNzaWduKHt9LG4uREVGQVVMVFMsdCkpfXJldHVybiBPcihuLFt7a2V5OiJfdXBkYXRlIix2YWx1ZTpmdW5jdGlvbih0KXtOcihUcihuLnByb3RvdHlwZSksIl91cGRhdGUiLHRoaXMpLmNhbGwodGhpcyx0KSx0aGlzLl91cGRhdGVSZWdFeHBzKCl9fSx7a2V5OiJfdXBkYXRlUmVnRXhwcyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD0iXiIrKHRoaXMuYWxsb3dOZWdhdGl2ZT8iWyt8XFwtXT8iOiIiKSxlPSh0aGlzLnNjYWxlPyIoIitKcih0aGlzLnJhZGl4KSsiXFxkezAsIit0aGlzLnNjYWxlKyJ9KT8iOiIiKSsiJCI7dGhpcy5fbnVtYmVyUmVnRXhwSW5wdXQ9bmV3IFJlZ0V4cCh0KyIoMHwoWzEtOV0rXFxkKikpPyIrZSksdGhpcy5fbnVtYmVyUmVnRXhwPW5ldyBSZWdFeHAodCsiXFxkKiIrZSksdGhpcy5fbWFwVG9SYWRpeFJlZ0V4cD1uZXcgUmVnRXhwKCJbIit0aGlzLm1hcFRvUmFkaXgubWFwKEpyKS5qb2luKCIiKSsiXSIsImciKSx0aGlzLl90aG91c2FuZHNTZXBhcmF0b3JSZWdFeHA9bmV3IFJlZ0V4cChKcih0aGlzLnRob3VzYW5kc1NlcGFyYXRvciksImciKX19LHtrZXk6Il9yZW1vdmVUaG91c2FuZHNTZXBhcmF0b3JzIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5yZXBsYWNlKHRoaXMuX3Rob3VzYW5kc1NlcGFyYXRvclJlZ0V4cCwiIil9fSx7a2V5OiJfaW5zZXJ0VGhvdXNhbmRzU2VwYXJhdG9ycyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC5zcGxpdCh0aGlzLnJhZGl4KTtyZXR1cm4gZVswXT1lWzBdLnJlcGxhY2UoL1xCKD89KFxkezN9KSsoPyFcZCkpL2csdGhpcy50aG91c2FuZHNTZXBhcmF0b3IpLGUuam9pbih0aGlzLnJhZGl4KX19LHtrZXk6ImRvUHJlcGFyZSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU7dD10LnJlcGxhY2UodGhpcy5fbWFwVG9SYWRpeFJlZ0V4cCx0aGlzLnJhZGl4KTtmb3IodmFyIGk9dGhpcy5fcmVtb3ZlVGhvdXNhbmRzU2VwYXJhdG9ycyh0KSxyPWFyZ3VtZW50cy5sZW5ndGgsdT1uZXcgQXJyYXkocj4xP3ItMTowKSxzPTE7czxyO3MrKyl1W3MtMV09YXJndW1lbnRzW3NdO3ZhciBhPVFyKChlPU5yKFRyKG4ucHJvdG90eXBlKSwiZG9QcmVwYXJlIix0aGlzKSkuY2FsbC5hcHBseShlLFt0aGlzLGldLmNvbmNhdCh1KSkpLG89cXIoYSwyKSxsPW9bMF0saD1vWzFdO3JldHVybiB0JiYhaSYmKGguc2tpcD0hMCksW2wsaF19fSx7a2V5OiJfc2VwYXJhdG9yc0NvdW50Iix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXSxuPTAsaT0wO2k8dDsrK2kpdGhpcy5fdmFsdWUuaW5kZXhPZih0aGlzLnRob3VzYW5kc1NlcGFyYXRvcixpKT09PWkmJigrK24sZSYmKHQrPXRoaXMudGhvdXNhbmRzU2VwYXJhdG9yLmxlbmd0aCkpO3JldHVybiBufX0se2tleToiX3NlcGFyYXRvcnNDb3VudEZyb21TbGljZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06dGhpcy5fdmFsdWU7cmV0dXJuIHRoaXMuX3NlcGFyYXRvcnNDb3VudCh0aGlzLl9yZW1vdmVUaG91c2FuZHNTZXBhcmF0b3JzKHQpLmxlbmd0aCwhMCl9fSx7a2V5OiJleHRyYWN0SW5wdXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0\/YXJndW1lbnRzWzBdOjAsZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dGhpcy52YWx1ZS5sZW5ndGgsaT1hcmd1bWVudHMubGVuZ3RoPjI\/YXJndW1lbnRzWzJdOnZvaWQgMCxyPXRoaXMuX2FkanVzdFJhbmdlV2l0aFNlcGFyYXRvcnModCxlKSx1PXFyKHIsMik7cmV0dXJuIHQ9dVswXSxlPXVbMV0sdGhpcy5fcmVtb3ZlVGhvdXNhbmRzU2VwYXJhdG9ycyhOcihUcihuLnByb3RvdHlwZSksImV4dHJhY3RJbnB1dCIsdGhpcykuY2FsbCh0aGlzLHQsZSxpKSl9fSx7a2V5OiJfYXBwZW5kQ2hhclJhdyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOnt9O2lmKCF0aGlzLnRob3VzYW5kc1NlcGFyYXRvcilyZXR1cm4gTnIoVHIobi5wcm90b3R5cGUpLCJfYXBwZW5kQ2hhclJhdyIsdGhpcykuY2FsbCh0aGlzLHQsZSk7dmFyIGk9ZS50YWlsJiZlLl9iZWZvcmVUYWlsU3RhdGU\/ZS5fYmVmb3JlVGFpbFN0YXRlLl92YWx1ZTp0aGlzLl92YWx1ZSxyPXRoaXMuX3NlcGFyYXRvcnNDb3VudEZyb21TbGljZShpKTt0aGlzLl92YWx1ZT10aGlzLl9yZW1vdmVUaG91c2FuZHNTZXBhcmF0b3JzKHRoaXMudmFsdWUpO3ZhciB1PU5yKFRyKG4ucHJvdG90eXBlKSwiX2FwcGVuZENoYXJSYXciLHRoaXMpLmNhbGwodGhpcyx0LGUpO3RoaXMuX3ZhbHVlPXRoaXMuX2luc2VydFRob3VzYW5kc1NlcGFyYXRvcnModGhpcy5fdmFsdWUpO3ZhciBzPWUudGFpbCYmZS5fYmVmb3JlVGFpbFN0YXRlP2UuX2JlZm9yZVRhaWxTdGF0ZS5fdmFsdWU6dGhpcy5fdmFsdWUsYT10aGlzLl9zZXBhcmF0b3JzQ291bnRGcm9tU2xpY2Uocyk7cmV0dXJuIHUudGFpbFNoaWZ0Kz0oYS1yKSp0aGlzLnRob3VzYW5kc1NlcGFyYXRvci5sZW5ndGgsdS5za2lwPSF1LnJhd0luc2VydGVkJiZ0PT09dGhpcy50aG91c2FuZHNTZXBhcmF0b3IsdX19LHtrZXk6Il9maW5kU2VwYXJhdG9yQXJvdW5kIix2YWx1ZTpmdW5jdGlvbih0KXtpZih0aGlzLnRob3VzYW5kc1NlcGFyYXRvcil7dmFyIGU9dC10aGlzLnRob3VzYW5kc1NlcGFyYXRvci5sZW5ndGgrMSxuPXRoaXMudmFsdWUuaW5kZXhPZih0aGlzLnRob3VzYW5kc1NlcGFyYXRvcixlKTtpZihuPD10KXJldHVybiBufXJldHVybi0xfX0se2tleToiX2FkanVzdFJhbmdlV2l0aFNlcGFyYXRvcnMiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fZmluZFNlcGFyYXRvckFyb3VuZCh0KTtuPj0wJiYodD1uKTt2YXIgaT10aGlzLl9maW5kU2VwYXJhdG9yQXJvdW5kKGUpO3JldHVybiBpPj0wJiYoZT1pK3RoaXMudGhvdXNhbmRzU2VwYXJhdG9yLmxlbmd0aCksW3QsZV19fSx7a2V5OiJyZW1vdmUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0\/YXJndW1lbnRzWzBdOjAsZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06dGhpcy52YWx1ZS5sZW5ndGgsbj10aGlzLl9hZGp1c3RSYW5nZVdpdGhTZXBhcmF0b3JzKHQsZSksaT1xcihuLDIpO3Q9aVswXSxlPWlbMV07dmFyIHI9dGhpcy52YWx1ZS5zbGljZSgwLHQpLHU9dGhpcy52YWx1ZS5zbGljZShlKSxzPXRoaXMuX3NlcGFyYXRvcnNDb3VudChyLmxlbmd0aCk7dGhpcy5fdmFsdWU9dGhpcy5faW5zZXJ0VGhvdXNhbmRzU2VwYXJhdG9ycyh0aGlzLl9yZW1vdmVUaG91c2FuZHNTZXBhcmF0b3JzKHIrdSkpO3ZhciBhPXRoaXMuX3NlcGFyYXRvcnNDb3VudEZyb21TbGljZShyKTtyZXR1cm4gbmV3IFlyKHt0YWlsU2hpZnQ6KGEtcykqdGhpcy50aG91c2FuZHNTZXBhcmF0b3IubGVuZ3RofSl9fSx7a2V5OiJuZWFyZXN0SW5wdXRQb3MiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7aWYoIXRoaXMudGhvdXNhbmRzU2VwYXJhdG9yKXJldHVybiB0O3N3aXRjaChlKXtjYXNlIEdyOmNhc2UgS3I6Y2FzZSAkcjp2YXIgbj10aGlzLl9maW5kU2VwYXJhdG9yQXJvdW5kKHQtMSk7aWYobj49MCl7dmFyIGk9bit0aGlzLnRob3VzYW5kc1NlcGFyYXRvci5sZW5ndGg7aWYodDxpfHx0aGlzLnZhbHVlLmxlbmd0aDw9aXx8ZT09PSRyKXJldHVybiBufWJyZWFrO2Nhc2UgV3I6Y2FzZSBYcjp2YXIgcj10aGlzLl9maW5kU2VwYXJhdG9yQXJvdW5kKHQpO2lmKHI+PTApcmV0dXJuIHIrdGhpcy50aG91c2FuZHNTZXBhcmF0b3IubGVuZ3RofXJldHVybiB0fX0se2tleToiZG9WYWxpZGF0ZSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9KHQuaW5wdXQ\/dGhpcy5fbnVtYmVyUmVnRXhwSW5wdXQ6dGhpcy5fbnVtYmVyUmVnRXhwKS50ZXN0KHRoaXMuX3JlbW92ZVRob3VzYW5kc1NlcGFyYXRvcnModGhpcy52YWx1ZSkpO2lmKGUpe3ZhciBpPXRoaXMubnVtYmVyO2U9ZSYmIWlzTmFOKGkpJiYobnVsbD09dGhpcy5taW58fHRoaXMubWluPj0wfHx0aGlzLm1pbjw9dGhpcy5udW1iZXIpJiYobnVsbD09dGhpcy5tYXh8fHRoaXMubWF4PD0wfHx0aGlzLm51bWJlcjw9dGhpcy5tYXgpfXJldHVybiBlJiZOcihUcihuLnByb3RvdHlwZSksImRvVmFsaWRhdGUiLHRoaXMpLmNhbGwodGhpcyx0KX19LHtrZXk6ImRvQ29tbWl0Iix2YWx1ZTpmdW5jdGlvbigpe2lmKHRoaXMudmFsdWUpe3ZhciB0PXRoaXMubnVtYmVyLGU9dDtudWxsIT10aGlzLm1pbiYmKGU9TWF0aC5tYXgoZSx0aGlzLm1pbikpLG51bGwhPXRoaXMubWF4JiYoZT1NYXRoLm1pbihlLHRoaXMubWF4KSksZSE9PXQmJih0aGlzLnVubWFza2VkVmFsdWU9U3RyaW5nKGUpKTt2YXIgaT10aGlzLnZhbHVlO3RoaXMubm9ybWFsaXplWmVyb3MmJihpPXRoaXMuX25vcm1hbGl6ZVplcm9zKGkpKSx0aGlzLnBhZEZyYWN0aW9uYWxaZXJvcyYmdGhpcy5zY2FsZT4wJiYoaT10aGlzLl9wYWRGcmFjdGlvbmFsWmVyb3MoaSkpLHRoaXMuX3ZhbHVlPWl9TnIoVHIobi5wcm90b3R5cGUpLCJkb0NvbW1pdCIsdGhpcykuY2FsbCh0aGlzKX19LHtrZXk6Il9ub3JtYWxpemVaZXJvcyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fcmVtb3ZlVGhvdXNhbmRzU2VwYXJhdG9ycyh0KS5zcGxpdCh0aGlzLnJhZGl4KTtyZXR1cm4gZVswXT1lWzBdLnJlcGxhY2UoL14oXEQqKSgwKikoXGQqKS8sKGZ1bmN0aW9uKHQsZSxuLGkpe3JldHVybiBlK2l9KSksdC5sZW5ndGgmJiEvXGQkLy50ZXN0KGVbMF0pJiYoZVswXT1lWzBdKyIwIiksZS5sZW5ndGg+MSYmKGVbMV09ZVsxXS5yZXBsYWNlKC8wKiQvLCIiKSxlWzFdLmxlbmd0aHx8KGUubGVuZ3RoPTEpKSx0aGlzLl9pbnNlcnRUaG91c2FuZHNTZXBhcmF0b3JzKGUuam9pbih0aGlzLnJhZGl4KSl9fSx7a2V5OiJfcGFkRnJhY3Rpb25hbFplcm9zIix2YWx1ZTpmdW5jdGlvbih0KXtpZighdClyZXR1cm4gdDt2YXIgZT10LnNwbGl0KHRoaXMucmFkaXgpO3JldHVybiBlLmxlbmd0aDwyJiZlLnB1c2goIiIpLGVbMV09ZVsxXS5wYWRFbmQodGhpcy5zY2FsZSwiMCIpLGUuam9pbih0aGlzLnJhZGl4KX19LHtrZXk6InVubWFza2VkVmFsdWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZW1vdmVUaG91c2FuZHNTZXBhcmF0b3JzKHRoaXMuX25vcm1hbGl6ZVplcm9zKHRoaXMudmFsdWUpKS5yZXBsYWNlKHRoaXMucmFkaXgsIi4iKX0sc2V0OmZ1bmN0aW9uKHQpe3pyKFRyKG4ucHJvdG90eXBlKSwidW5tYXNrZWRWYWx1ZSIsdC5yZXBsYWNlKCIuIix0aGlzLnJhZGl4KSx0aGlzLCEwKX19LHtrZXk6InR5cGVkVmFsdWUiLGdldDpmdW5jdGlvbigpe3JldHVybiBOdW1iZXIodGhpcy51bm1hc2tlZFZhbHVlKX0sc2V0OmZ1bmN0aW9uKHQpe3pyKFRyKG4ucHJvdG90eXBlKSwidW5tYXNrZWRWYWx1ZSIsU3RyaW5nKHQpLHRoaXMsITApfX0se2tleToibnVtYmVyIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50eXBlZFZhbHVlfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy50eXBlZFZhbHVlPXR9fSx7a2V5OiJhbGxvd05lZ2F0aXZlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaWduZWR8fG51bGwhPXRoaXMubWluJiZ0aGlzLm1pbjwwfHxudWxsIT10aGlzLm1heCYmdGhpcy5tYXg8MH19XSksbn0ocnUpO0Z1LkRFRkFVTFRTPXtyYWRpeDoiLCIsdGhvdXNhbmRzU2VwYXJhdG9yOiIiLG1hcFRvUmFkaXg6WyIuIl0sc2NhbGU6MixzaWduZWQ6ITEsbm9ybWFsaXplWmVyb3M6ITAscGFkRnJhY3Rpb25hbFplcm9zOiExfSxpdS5NYXNrZWROdW1iZXI9RnU7dmFyIFN1PWZ1bmN0aW9uKHQpe1ByKG4sdCk7dmFyIGU9VnIobik7ZnVuY3Rpb24gbigpe3JldHVybiB4cih0aGlzLG4pLGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBPcihuLFt7a2V5OiJfdXBkYXRlIix2YWx1ZTpmdW5jdGlvbih0KXt0Lm1hc2smJih0LnZhbGlkYXRlPXQubWFzayksTnIoVHIobi5wcm90b3R5cGUpLCJfdXBkYXRlIix0aGlzKS5jYWxsKHRoaXMsdCl9fV0pLG59KHJ1KTtpdS5NYXNrZWRGdW5jdGlvbj1TdTt2YXIgd3U9WyJjb21waWxlZE1hc2tzIiwiY3VycmVudE1hc2tSZWYiLCJjdXJyZW50TWFzayJdLEJ1PWZ1bmN0aW9uKHQpe1ByKG4sdCk7dmFyIGU9VnIobik7ZnVuY3Rpb24gbih0KXt2YXIgaTtyZXR1cm4geHIodGhpcyxuKSwoaT1lLmNhbGwodGhpcyxPYmplY3QuYXNzaWduKHt9LG4uREVGQVVMVFMsdCkpKS5jdXJyZW50TWFzaz1udWxsLGl9cmV0dXJuIE9yKG4sW3trZXk6Il91cGRhdGUiLHZhbHVlOmZ1bmN0aW9uKHQpe05yKFRyKG4ucHJvdG90eXBlKSwiX3VwZGF0ZSIsdGhpcykuY2FsbCh0aGlzLHQpLCJtYXNrImluIHQmJih0aGlzLmNvbXBpbGVkTWFza3M9QXJyYXkuaXNBcnJheSh0Lm1hc2spP3QubWFzay5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBzdSh0KX0pKTpbXSl9fSx7a2V5OiJfYXBwZW5kQ2hhclJhdyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOnt9LG49dGhpcy5fYXBwbHlEaXNwYXRjaCh0LGUpO3JldHVybiB0aGlzLmN1cnJlbnRNYXNrJiZuLmFnZ3JlZ2F0ZSh0aGlzLmN1cnJlbnRNYXNrLl9hcHBlbmRDaGFyKHQsZSkpLG59fSx7a2V5OiJfYXBwbHlEaXNwYXRjaCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06IiIsZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e30sbj1lLnRhaWwmJm51bGwhPWUuX2JlZm9yZVRhaWxTdGF0ZT9lLl9iZWZvcmVUYWlsU3RhdGUuX3ZhbHVlOnRoaXMudmFsdWUsaT10aGlzLnJhd0lucHV0VmFsdWUscj1lLnRhaWwmJm51bGwhPWUuX2JlZm9yZVRhaWxTdGF0ZT9lLl9iZWZvcmVUYWlsU3RhdGUuX3Jhd0lucHV0VmFsdWU6aSx1PWkuc2xpY2Uoci5sZW5ndGgpLHM9dGhpcy5jdXJyZW50TWFzayxhPW5ldyBZcixvPXMmJnMuc3RhdGU7aWYodGhpcy5jdXJyZW50TWFzaz10aGlzLmRvRGlzcGF0Y2godCxPYmplY3QuYXNzaWduKHt9LGUpKSx0aGlzLmN1cnJlbnRNYXNrKWlmKHRoaXMuY3VycmVudE1hc2shPT1zKXtpZih0aGlzLmN1cnJlbnRNYXNrLnJlc2V0KCkscil7dmFyIGw9dGhpcy5jdXJyZW50TWFzay5hcHBlbmQocix7cmF3OiEwfSk7YS50YWlsU2hpZnQ9bC5pbnNlcnRlZC5sZW5ndGgtbi5sZW5ndGh9dSYmKGEudGFpbFNoaWZ0Kz10aGlzLmN1cnJlbnRNYXNrLmFwcGVuZCh1LHtyYXc6ITAsdGFpbDohMH0pLnRhaWxTaGlmdCl9ZWxzZSB0aGlzLmN1cnJlbnRNYXNrLnN0YXRlPW87cmV0dXJuIGF9fSx7a2V5OiJfYXBwZW5kUGxhY2Vob2xkZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fYXBwbHlEaXNwYXRjaC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIHRoaXMuY3VycmVudE1hc2smJnQuYWdncmVnYXRlKHRoaXMuY3VycmVudE1hc2suX2FwcGVuZFBsYWNlaG9sZGVyKCkpLHR9fSx7a2V5OiJfYXBwZW5kRWFnZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fYXBwbHlEaXNwYXRjaC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIHRoaXMuY3VycmVudE1hc2smJnQuYWdncmVnYXRlKHRoaXMuY3VycmVudE1hc2suX2FwcGVuZEVhZ2VyKCkpLHR9fSx7a2V5OiJkb0Rpc3BhdGNoIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e307cmV0dXJuIHRoaXMuZGlzcGF0Y2godCx0aGlzLGUpfX0se2tleToiZG9WYWxpZGF0ZSIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZSxpPWFyZ3VtZW50cy5sZW5ndGgscj1uZXcgQXJyYXkoaSksdT0wO3U8aTt1Kyspclt1XT1hcmd1bWVudHNbdV07cmV0dXJuKHQ9TnIoVHIobi5wcm90b3R5cGUpLCJkb1ZhbGlkYXRlIix0aGlzKSkuY2FsbC5hcHBseSh0LFt0aGlzXS5jb25jYXQocikpJiYoIXRoaXMuY3VycmVudE1hc2t8fChlPXRoaXMuY3VycmVudE1hc2spLmRvVmFsaWRhdGUuYXBwbHkoZSxyKSl9fSx7a2V5OiJyZXNldCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdDtudWxsPT09KHQ9dGhpcy5jdXJyZW50TWFzayl8fHZvaWQgMD09PXR8fHQucmVzZXQoKSx0aGlzLmNvbXBpbGVkTWFza3MuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIHQucmVzZXQoKX0pKX19LHtrZXk6InZhbHVlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJyZW50TWFzaz90aGlzLmN1cnJlbnRNYXNrLnZhbHVlOiIifSxzZXQ6ZnVuY3Rpb24odCl7enIoVHIobi5wcm90b3R5cGUpLCJ2YWx1ZSIsdCx0aGlzLCEwKX19LHtrZXk6InVubWFza2VkVmFsdWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnJlbnRNYXNrP3RoaXMuY3VycmVudE1hc2sudW5tYXNrZWRWYWx1ZToiIn0sc2V0OmZ1bmN0aW9uKHQpe3pyKFRyKG4ucHJvdG90eXBlKSwidW5tYXNrZWRWYWx1ZSIsdCx0aGlzLCEwKX19LHtrZXk6InR5cGVkVmFsdWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnJlbnRNYXNrP3RoaXMuY3VycmVudE1hc2sudHlwZWRWYWx1ZToiIn0sc2V0OmZ1bmN0aW9uKHQpe3ZhciBlPVN0cmluZyh0KTt0aGlzLmN1cnJlbnRNYXNrJiYodGhpcy5jdXJyZW50TWFzay50eXBlZFZhbHVlPXQsZT10aGlzLmN1cnJlbnRNYXNrLnVubWFza2VkVmFsdWUpLHRoaXMudW5tYXNrZWRWYWx1ZT1lfX0se2tleToiaXNDb21wbGV0ZSIsZ2V0OmZ1bmN0aW9uKCl7dmFyIHQ7cmV0dXJuIEJvb2xlYW4obnVsbD09PSh0PXRoaXMuY3VycmVudE1hc2spfHx2b2lkIDA9PT10P3ZvaWQgMDp0LmlzQ29tcGxldGUpfX0se2tleToiaXNGaWxsZWQiLGdldDpmdW5jdGlvbigpe3ZhciB0O3JldHVybiBCb29sZWFuKG51bGw9PT0odD10aGlzLmN1cnJlbnRNYXNrKXx8dm9pZCAwPT09dD92b2lkIDA6dC5pc0ZpbGxlZCl9fSx7a2V5OiJyZW1vdmUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQsZT1uZXcgWXI7dGhpcy5jdXJyZW50TWFzayYmZS5hZ2dyZWdhdGUoKHQ9dGhpcy5jdXJyZW50TWFzaykucmVtb3ZlLmFwcGx5KHQsYXJndW1lbnRzKSkuYWdncmVnYXRlKHRoaXMuX2FwcGx5RGlzcGF0Y2goKSk7cmV0dXJuIGV9fSx7a2V5OiJzdGF0ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5hc3NpZ24oe30sTnIoVHIobi5wcm90b3R5cGUpLCJzdGF0ZSIsdGhpcykse19yYXdJbnB1dFZhbHVlOnRoaXMucmF3SW5wdXRWYWx1ZSxjb21waWxlZE1hc2tzOnRoaXMuY29tcGlsZWRNYXNrcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnN0YXRlfSkpLGN1cnJlbnRNYXNrUmVmOnRoaXMuY3VycmVudE1hc2ssY3VycmVudE1hc2s6dGhpcy5jdXJyZW50TWFzayYmdGhpcy5jdXJyZW50TWFzay5zdGF0ZX0pfSxzZXQ6ZnVuY3Rpb24odCl7dmFyIGU9dC5jb21waWxlZE1hc2tzLGk9dC5jdXJyZW50TWFza1JlZixyPXQuY3VycmVudE1hc2ssdT1qcih0LHd1KTt0aGlzLmNvbXBpbGVkTWFza3MuZm9yRWFjaCgoZnVuY3Rpb24odCxuKXtyZXR1cm4gdC5zdGF0ZT1lW25dfSkpLG51bGwhPWkmJih0aGlzLmN1cnJlbnRNYXNrPWksdGhpcy5jdXJyZW50TWFzay5zdGF0ZT1yKSx6cihUcihuLnByb3RvdHlwZSksInN0YXRlIix1LHRoaXMsITApfX0se2tleToiZXh0cmFjdElucHV0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0O3JldHVybiB0aGlzLmN1cnJlbnRNYXNrPyh0PXRoaXMuY3VycmVudE1hc2spLmV4dHJhY3RJbnB1dC5hcHBseSh0LGFyZ3VtZW50cyk6IiJ9fSx7a2V5OiJleHRyYWN0VGFpbCIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZSxpPWFyZ3VtZW50cy5sZW5ndGgscj1uZXcgQXJyYXkoaSksdT0wO3U8aTt1Kyspclt1XT1hcmd1bWVudHNbdV07cmV0dXJuIHRoaXMuY3VycmVudE1hc2s\/KHQ9dGhpcy5jdXJyZW50TWFzaykuZXh0cmFjdFRhaWwuYXBwbHkodCxyKTooZT1OcihUcihuLnByb3RvdHlwZSksImV4dHJhY3RUYWlsIix0aGlzKSkuY2FsbC5hcHBseShlLFt0aGlzXS5jb25jYXQocikpfX0se2tleToiZG9Db21taXQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jdXJyZW50TWFzayYmdGhpcy5jdXJyZW50TWFzay5kb0NvbW1pdCgpLE5yKFRyKG4ucHJvdG90eXBlKSwiZG9Db21taXQiLHRoaXMpLmNhbGwodGhpcyl9fSx7a2V5OiJuZWFyZXN0SW5wdXRQb3MiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0LGUsaT1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KGkpLHU9MDt1PGk7dSsrKXJbdV09YXJndW1lbnRzW3VdO3JldHVybiB0aGlzLmN1cnJlbnRNYXNrPyh0PXRoaXMuY3VycmVudE1hc2spLm5lYXJlc3RJbnB1dFBvcy5hcHBseSh0LHIpOihlPU5yKFRyKG4ucHJvdG90eXBlKSwibmVhcmVzdElucHV0UG9zIix0aGlzKSkuY2FsbC5hcHBseShlLFt0aGlzXS5jb25jYXQocikpfX0se2tleToib3ZlcndyaXRlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJyZW50TWFzaz90aGlzLmN1cnJlbnRNYXNrLm92ZXJ3cml0ZTpOcihUcihuLnByb3RvdHlwZSksIm92ZXJ3cml0ZSIsdGhpcyl9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oJyJvdmVyd3JpdGUiIG9wdGlvbiBpcyBub3QgYXZhaWxhYmxlIGluIGR5bmFtaWMgbWFzaywgdXNlIHRoaXMgb3B0aW9uIGluIHNpYmxpbmdzJyl9fSx7a2V5OiJlYWdlciIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3VycmVudE1hc2s\/dGhpcy5jdXJyZW50TWFzay5lYWdlcjpOcihUcihuLnByb3RvdHlwZSksImVhZ2VyIix0aGlzKX0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybignImVhZ2VyIiBvcHRpb24gaXMgbm90IGF2YWlsYWJsZSBpbiBkeW5hbWljIG1hc2ssIHVzZSB0aGlzIG9wdGlvbiBpbiBzaWJsaW5ncycpfX0se2tleToibWFza0VxdWFscyIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCkmJnRoaXMuY29tcGlsZWRNYXNrcy5ldmVyeSgoZnVuY3Rpb24oZSxuKXt2YXIgaTtyZXR1cm4gZS5tYXNrRXF1YWxzKG51bGw9PT0oaT10W25dKXx8dm9pZCAwPT09aT92b2lkIDA6aS5tYXNrKX0pKX19XSksbn0ocnUpO0J1LkRFRkFVTFRTPXtkaXNwYXRjaDpmdW5jdGlvbih0LGUsbil7aWYoZS5jb21waWxlZE1hc2tzLmxlbmd0aCl7dmFyIGk9ZS5yYXdJbnB1dFZhbHVlLHI9ZS5jb21waWxlZE1hc2tzLm1hcCgoZnVuY3Rpb24oZSxyKXtyZXR1cm4gZS5yZXNldCgpLGUuYXBwZW5kKGkse3JhdzohMH0pLGUuYXBwZW5kKHQsbikse3dlaWdodDplLnJhd0lucHV0VmFsdWUubGVuZ3RoLGluZGV4OnJ9fSkpO3JldHVybiByLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUud2VpZ2h0LXQud2VpZ2h0fSkpLGUuY29tcGlsZWRNYXNrc1tyWzBdLmluZGV4XX19fSxpdS5NYXNrZWREeW5hbWljPUJ1O3ZhciBEdT17TUFTS0VEOiJ2YWx1ZSIsVU5NQVNLRUQ6InVubWFza2VkVmFsdWUiLFRZUEVEOiJ0eXBlZFZhbHVlIn07ZnVuY3Rpb24geHUodCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOkR1Lk1BU0tFRCxuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpEdS5NQVNLRUQsaT1zdSh0KTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGkucnVuSXNvbGF0ZWQoKGZ1bmN0aW9uKGkpe3JldHVybiBpW2VdPXQsaVtuXX0pKX19ZnVuY3Rpb24gTXUodCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsbj1uZXcgQXJyYXkoZT4xP2UtMTowKSxpPTE7aTxlO2krKyluW2ktMV09YXJndW1lbnRzW2ldO3JldHVybiB4dS5hcHBseSh2b2lkIDAsbikodCl9aXUuUElQRV9UWVBFPUR1LGl1LmNyZWF0ZVBpcGU9eHUsaXUucGlwZT1NdTt0cnl7Z2xvYmFsVGhpcy5JTWFzaz1pdX1jYXRjaCh0KXt9dC5IVE1MQ29udGVudGVkaXRhYmxlTWFza0VsZW1lbnQ9X3UsdC5IVE1MTWFza0VsZW1lbnQ9YnUsdC5JbnB1dE1hc2s9Q3UsdC5NYXNrRWxlbWVudD1tdSx0Lk1hc2tlZD1ydSx0Lk1hc2tlZERhdGU9eXUsdC5NYXNrZWREeW5hbWljPUJ1LHQuTWFza2VkRW51bT1FdSx0Lk1hc2tlZEZ1bmN0aW9uPVN1LHQuTWFza2VkTnVtYmVyPUZ1LHQuTWFza2VkUGF0dGVybj1ndSx0Lk1hc2tlZFJhbmdlPWt1LHQuTWFza2VkUmVnRXhwPWR1LHQuUElQRV9UWVBFPUR1LHQuY3JlYXRlTWFzaz1zdSx0LmNyZWF0ZVBpcGU9eHUsdC5kZWZhdWx0PWl1LHQucGlwZT1NdSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9KSk7DQovLyMgc291cmNlTWFwcGluZ1VSTD1pbWFzay5taW4uanMubWFwOwovKiogL20vanMvdmFuaWxsYWpzL2Zvcm0uanMgKiovCnZhciBfX19kMmNfZm9ybWpzX2Nfb249IjIwMjUtMDUtMjMgMTc6MDU6MjAiOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX2Zvcm1qc19jX29uPSIyMDI0LTAxLTMxIDE0OjMzOjA5IjsidXNlIHN0cmljdCI7X19fZDJjX2Zvcm1qc19jX29uPSIyMDIzLTA0LTI3IDEwOjMwOjQ5IjsidXNlIHN0cmljdCI7CmNvbnN0IEZvcm09ZnVuY3Rpb24oKXt0aGlzLk1BU0tTPXtwaG9uZToiMDAwIDAwMC0wMDAwIixzaW46IjAwMCAwMDAgMDAwIixwb3N0YWxDb2RlOiJhMGEgMGEwIn07dGhpcy5tYXNrPShhLGIpPT57YT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGEpO2EubGVuZ3RoJiZhLmZvckVhY2goYz0+e0lNYXNrKGMsYil9KX07dGhpcy5tYXNrTnVtYmVyPShhLGIpPT57bGV0IGM9e21hc2s6TnVtYmVyLG1pbjowfTtiJiYoYy5tYXg9Yik7dGhpcy5tYXNrKGEsYyl9O3RoaXMubWFza1Bob25lPWE9Pnt0aGlzLm1hc2soYSx7bWFzazpbe21hc2s6dGhpcy5NQVNLUy5waG9uZX0se21hc2s6YDEgJHt0aGlzLk1BU0tTLnBob25lfWB9XX0pfTt0aGlzLm1hc2tQb3N0YWxDb2RlPWE9Pnt0aGlzLm1hc2soYSx7bWFzazp0aGlzLk1BU0tTLnBvc3RhbENvZGUscHJlcGFyZTpiPT5iLnRvVXBwZXJDYXNlKCl9KX19OwovKiogL20vanMvZ2VuZXJpY01haWwuanMgKiovCnZhciBfX19kMmNfZ2VuZXJpY01haWxqc19jX29uPSIyMDI1LTA1LTIzIDE3OjEwOjE1IjsndXNlIHN0cmljdCc7dmFyIF9fX2QyY19nZW5lcmljTWFpbGpzX2Nfb249IjIwMjQtMTEtMjggMTA6MzA6MTEiOyJ1c2Ugc3RyaWN0IjsKR2VuZXJpY01haWw9ZnVuY3Rpb24odil7ZnVuY3Rpb24gbShjKXtjPWMudG9TdHJpbmcoKTtyZXR1cm4gYy5yZXBsYWNlKC88XC8\/W14+XSs+L2dpLCIiKX12YXIgYj10aGlzO2IubWFpbElEPXY7Yi5lbWFpbFNlbnQ9ZnVuY3Rpb24oYyl7bWFpbFNlbnRIYW5kbGVyPWdldE1haWxTZW50SGFuZGxlcihiLm1haWxJRCk7Yz8oInVuZGVmaW5lZCIhPXR5cGVvZiBtYWlsU2VudEhhbmRsZXImJihtYWlsU2VudEhhbmRsZXIudGltZW91dENhbGxiYWNrPWIubXNnU2VudEZpbmlzaGVkSGFuZGxlcixtYWlsU2VudEhhbmRsZXIuc2hvd1N1Y2Nlc3MoKSksYi5jbGVhckZvcm0oKSk6InVuZGVmaW5lZCIhPXR5cGVvZiBtYWlsU2VudEhhbmRsZXImJihtYWlsU2VudEhhbmRsZXIudGltZW91dENhbGxiYWNrPWIubXNnU2VudEZpbmlzaGVkSGFuZGxlcixtYWlsU2VudEhhbmRsZXIuc2hvd0ZhaWwoKSl9O2IuY2xlYXJGb3JtPWZ1bmN0aW9uKCl7dmFyIGM9Yi5qcVNjb3BlO2lmKCJ1bmRlZmluZWQiPT09CnR5cGVvZiBjfHwiIj09YylpZigkKCIuSW5uZXJCb3hMYXllciIpLmxlbmd0aCljPSIuSW5uZXJCb3hMYXllciI7ZWxzZSByZXR1cm47JCgiLmpxVHJhbnNmb3JtSW5wdXRXcmFwcGVyIGlucHV0LCAuanFUcmFuc2Zvcm1UZXh0YXJlYSB0ZXh0YXJlYSIsYykuZWFjaChmdW5jdGlvbigpeyQodGhpcykudmFsKCIiKTskKHRoaXMpLmF0dHIoInBsYWNlaG9sZGVyIiwkKHRoaXMpLmF0dHIoImFsdCIpKX0pOyQoIiNmb290ZXJEaXYgI2xlYWRTZW50IikucmVtb3ZlKCl9O2IubXNnU2VudEZpbmlzaGVkSGFuZGxlcj1mdW5jdGlvbigpe307Yi5iYW5kcExpbms9ZnVuY3Rpb24oYyl7cmV0dXJuIGVtYWlsSGFuZGxlci5iYW5kcExpbmsoYyl9O2Iuc2F2ZT1mdW5jdGlvbihjKXsidW5kZWZpbmVkIiE9PXR5cGVvZiBkZWJ1ZyYmZGVidWcoYyk7aWYoIWIuX3ZhbGlkYXRlRmllbGRzKCkpcmV0dXJuICQoImh0bWwsIGJvZHkiKS5hbmltYXRlKHtzY3JvbGxUb3A6JCgiLnZhbGlkaXR5LWVycm9uZW91czpmaXJzdCIpLm9mZnNldCgpLnRvcC0KMTAwfSwyRTMpLCExO2IucHJlcGFyZSgpO2VtYWlsSGFuZGxlci5zZW5kTWFpbCgpfTtiLnByZXBhcmU9ZnVuY3Rpb24oKXt2YXIgYz1mdW5jdGlvbihoKXt4PShoKyIiKS5zcGxpdCgiLiIpO3gxPXhbMF07eDI9MTx4Lmxlbmd0aD8iLiIreFsxXToiIjtmb3IoaD0vKFxkKykoXGR7M30pLztoLnRlc3QoeDEpOyl4MT14MS5yZXBsYWNlKGgsIiQxLCQyIik7cmV0dXJuIHgxK3gyfSxnPWIuanFTY29wZT9iLmpxU2NvcGU6Ii5Jbm5lckJveExheWVyIixrPSIiLGE9IiIsZT0iIixkPSIiLGY9IiI7az0wPCQoIiNlbWFpbFN1YmplY3REZWZfIitiLm1haWxJRCxnKS5sZW5ndGg\/JCgiI2VtYWlsU3ViamVjdERlZl8iK2IubWFpbElELGcpLnRleHQoKTowPCQoIiNlbWFpbFN1YmplY3REZWYiLGcpLmxlbmd0aD8kKCIjZW1haWxTdWJqZWN0RGVmIixnKS50ZXh0KCk6JCgiI2VtYWlsU3ViamVjdERlZiIpLnRleHQoKTthPTA8JCgiI2VtYWlsQm9keURlZl8iK2IubWFpbElELGcpLmxlbmd0aD8kKCIjZW1haWxCb2R5RGVmXyIrCmIubWFpbElELGcpLmh0bWwoKTokKCIjZW1haWxCb2R5RGVmIixnKS5sZW5ndGg\/JCgiI2VtYWlsQm9keURlZiIsZykuaHRtbCgpOiQoIiNlbWFpbEJvZHlEZWYiKS5odG1sKCk7dmFyIGw9InVuZGVmaW5lZCIhPXR5cGVvZiAkKCIjdGV4dElzRGVtbyIpLmF0dHIoImlkIikmJiIxIj09JCgiI3RleHRJc0RlbW8iKS52YWwoKT8hMDohMTsidW5kZWZpbmVkIiE9dHlwZW9mIG1haWxRdWlja0VtYWlsJiZudWxsIT1tYWlsUXVpY2tFbWFpbCYmInN0cmluZyI9PT10eXBlb2YgbWFpbFF1aWNrRW1haWwubWVzc2FnZSYmKGVtYWlsSGFuZGxlci5jb21tZW50cz1tYWlsUXVpY2tFbWFpbC5tZXNzYWdlKTtzd2l0Y2goYi5tYWlsSUQpe2Nhc2UgIlF1aWNrRW1haWwiOmNhc2UgIlF1aWNrRW1haWxOZXdJbnZlbnRvcnkiOmNhc2UgIm1lbnVDb250YWN0VXMiOmVtYWlsSGFuZGxlci5wb3B1cGRpdj0icXVpY2tFbWFpbEZvcm0iO21haWxRdWlja0VtYWlsLmFzc2lnblZhbHVlcygpO2E9YS5yZXBsYWNlKC97XCROQU1FfS9nLApkMmNtZWRpYS5jYXBpdGFsaXNlRmlyc3RMZXR0ZXJPZkV2ZXJ5V29yZChtYWlsUXVpY2tFbWFpbC5uYW1lKSkucmVwbGFjZSgve1wkRU1BSUx9L2csbWFpbFF1aWNrRW1haWwuZW1haWwpO2E9YS5yZXBsYWNlKC97XCRFTUFJTFBIT05FfS9nLG1haWxRdWlja0VtYWlsLnBob25lKS5yZXBsYWNlKC97XCRNRVNTQUdFfS9nLG1haWxRdWlja0VtYWlsLm1lc3NhZ2UpO2E9YS5yZXBsYWNlKC97XCRFTUFJTE1BS0V9L2csbWFpbFF1aWNrRW1haWwubWFrZSkucmVwbGFjZSgve1wkRU1BSUxNT0RFTH0vZyxtYWlsUXVpY2tFbWFpbC5tb2RlbCk7YT1hLnJlcGxhY2UoL3tcJEVNQUlMWUVBUn0vZyxtYWlsUXVpY2tFbWFpbC55ZWFyKS5yZXBsYWNlKC97XCRTVE9DS05VTUJFUn0vZyxtYWlsUXVpY2tFbWFpbC5zdG9ja051bWJlcik7YT1hLnJlcGxhY2UoL3tcJERFUEFSVE1FTlQyfS9nLG1haWxRdWlja0VtYWlsLmRlcGFydG1lbnQpO2E9YS5yZXBsYWNlKC9DaXR5Oi9nLCIiKTsidW5kZWZpbmVkIiE9CnR5cGVvZiBtYWlsUXVpY2tFbWFpbC5yb2FkVGVzdCYmbnVsbCE9bWFpbFF1aWNrRW1haWwucm9hZFRlc3QmJihhPWEucmVwbGFjZSgve1wkRU1BSUxST0FEVEVTVH0vZyxtYWlsUXVpY2tFbWFpbC5yb2FkVGVzdCkucmVwbGFjZSgve1wkRU1BSUxDQVJEfS9nLG1haWxRdWlja0VtYWlsLmdpZnRDYXJkKSk7ZW1haWxIYW5kbGVyLnVzZXJFbWFpbD1tYWlsUXVpY2tFbWFpbC5lbWFpbDtlbWFpbEhhbmRsZXIudXNlckZpcnN0TmFtZT1tYWlsUXVpY2tFbWFpbC5uYW1lO2VtYWlsSGFuZGxlci51c2VyUGhvbmU9bWFpbFF1aWNrRW1haWwucGhvbmU7ZT1tYWlsUXVpY2tFbWFpbC5tZXNzYWdlO2VtYWlsSGFuZGxlci50cmltPSQoIiNleHByZXNzY2FydHJpbSIpLnZhbCgpO2VtYWlsSGFuZGxlci52aW49JCgiI2V4cHJlc3NjYXJ2aW4iKS52YWwoKTtlbWFpbEhhbmRsZXIucHJpY2U9JCgiI2V4cHJlc3NjYXJwcmljZSIpLnZhbCgpO2VtYWlsSGFuZGxlci5tYWtlPSQoIiNleHByZXNzY2FybWFrZSIpLnZhbCgpOwplbWFpbEhhbmRsZXIubW9kZWw9JCgiI2V4cHJlc3NjYXJtb2RlbCIpLnZhbCgpO2VtYWlsSGFuZGxlci55ZWFyPSQoIiNleHByZXNzY2FyeWVhciIpLnZhbCgpO2VtYWlsSGFuZGxlci5zdG9ja051bWJlcj1tYWlsUXVpY2tFbWFpbC5zdG9ja051bWJlcjsidW5kZWZpbmVkIj09dHlwZW9mICQoIiNleHByZXNzY2FyaWQiKS5hdHRyKCJpZCIpP2VtYWlsSGFuZGxlci5jYXJpZD0iIjplbWFpbEhhbmRsZXIuY2FyaWQ9JCgiI2V4cHJlc3NjYXJpZCIpLnZhbCgpOyQoImlucHV0LmxhYmVsZW1haWwiKS52YWwoIkRlbWFuZGVzLUV4cHJlc3MiKTskKCJpbnB1dC5pc2V4cHJlc3MiKS52YWwoIjEiKTsidW5kZWZpbmVkIiE9dHlwZW9mIHNlYXJjaEVuZ2luZSYmKCQoImlucHV0LmJyYW5kZW1haWwiKS52YWwobWFpbFF1aWNrRW1haWwubWFrZSksJCgiaW5wdXQubW9kZWxlbWFpbCIpLnZhbChtYWlsUXVpY2tFbWFpbC5tb2RlbCksJCgiaW5wdXQueWVhcmVtYWlsIikudmFsKG1haWxRdWlja0VtYWlsLnllYXIpKTsKInVuZGVmaW5lZCIhPXR5cGVvZiAkKCIjZXhwcmVzc2NhcmlkIikuYXR0cigiaWQiKT8wPCQoIiNleHByZXNzY2FyaWQiKS52YWwoKS5sZW5ndGg\/ZW1haWxIYW5kbGVyLmNvbmRpdGlvbj0iVXNlZCI6ZW1haWxIYW5kbGVyLmNvbmRpdGlvbj0wPG1haWxRdWlja0VtYWlsLm1ha2UubGVuZ3RoPyJOZXciOiJVbmtub3duIjplbWFpbEhhbmRsZXIuY29uZGl0aW9uPSJVbmtub3duIjsiIiE9PW1haWxRdWlja0VtYWlsLmRlcGFydG1lbnQmJihlbWFpbEhhbmRsZXIuZGVwYXJ0bWVudD1tYWlsUXVpY2tFbWFpbC5kZXBhcnRtZW50KTtkPW1haWxRdWlja0VtYWlsLmdldFNlbmRUbygpO2Y9bWFpbFF1aWNrRW1haWwuZ2V0U2VuZFRvQWRmKCk7YnJlYWs7Y2FzZSAiUmViYXRlQ291cG9uUHJvbW8iOm1haWxRdWlja0VtYWlsLmFzc2lnblZhbHVlcygpO2U9bWFpbFF1aWNrRW1haWwubWVzc2FnZTthPWEucmVwbGFjZSgve1wkTkFNRX0vZyxkMmNtZWRpYS5jYXBpdGFsaXNlRmlyc3RMZXR0ZXJPZkV2ZXJ5V29yZChtYWlsUXVpY2tFbWFpbC5uYW1lKSkucmVwbGFjZSgve1wkRU1BSUx9L2csCm1haWxRdWlja0VtYWlsLmVtYWlsKTthPWEucmVwbGFjZSgve1wkRU1BSUxQSE9ORX0vZyxtYWlsUXVpY2tFbWFpbC5waG9uZSkucmVwbGFjZSgve1wkTUVTU0FHRX0vZyxtYWlsUXVpY2tFbWFpbC5tZXNzYWdlKTthPWEucmVwbGFjZSgve1wkQ09VUE9OTUFLRX0vZywkKCIjY291cG9ubWFrZSIpLnZhbCgpKS5yZXBsYWNlKC97XCRDT1VQT05NT0RFTH0vZywkKCIjY291cG9ubW9kZWwiKS52YWwoKSk7YT1hLnJlcGxhY2UoL3tcJENPVVBPTllFQVJ9L2csJCgiI2NvdXBvbnllYXIiKS52YWwoKSkucmVwbGFjZSgve1wkQ09VUE9OU1RPQ0tOVU1CRVJ9L2csJCgiI2NvdXBvbnN0b2NrbnVtYmVyIikudmFsKCkpO2E9YS5yZXBsYWNlKC97XCRDT1VQT05WQUxVRX0vZywkKCIjY291cG9uVmFsdWUiKS52YWwoKSsiJCIpLnJlcGxhY2UoL3tcJFBSSUNFfS9nLCQoIiN2ZWhpY2xlT3JpZ1ByaWNlIikudmFsKCkrIiQiKTtlbWFpbEhhbmRsZXIubWFrZT0kKCIjY291cG9ubWFrZSIpLnZhbCgpOwplbWFpbEhhbmRsZXIubW9kZWw9JCgiI2NvdXBvbm1vZGVsIikudmFsKCk7ZW1haWxIYW5kbGVyLnllYXI9JCgiI2NvdXBvbnllYXIiKS52YWwoKTtlbWFpbEhhbmRsZXIudXNlckVtYWlsPW1haWxRdWlja0VtYWlsLmVtYWlsO2VtYWlsSGFuZGxlci51c2VyRmlyc3ROYW1lPW1haWxRdWlja0VtYWlsLm5hbWU7ZW1haWxIYW5kbGVyLnVzZXJQaG9uZT1tYWlsUXVpY2tFbWFpbC5waG9uZTtlbWFpbEhhbmRsZXIudHJpbT0kKCIjY291cG9udmVoaWNsZXRyaW0iKS52YWwoKTtlbWFpbEhhbmRsZXIudmluPSQoIiNjb3Vwb252ZWhpY2xldmluIikudmFsKCk7ZW1haWxIYW5kbGVyLnByaWNlPSQoIiN2ZWhpY2xlT3JpZ1ByaWNlIikudmFsKCk7ZW1haWxIYW5kbGVyLnN0b2NrTnVtYmVyPSQoIiNjb3Vwb25zdG9ja251bWJlciIpLnZhbCgpO2VtYWlsSGFuZGxlci5jYXJpZD0kKCIjY291cG9udmVoaWNsZWlkIikudmFsKCk7JCgiaW5wdXQubGFiZWxlbWFpbCIpLnZhbCgiUmViYXRlQ291cG9uUHJvbW8iKTsKInVuZGVmaW5lZCIhPXR5cGVvZiBzZWFyY2hFbmdpbmUmJigkKCJpbnB1dC5icmFuZGVtYWlsIikudmFsKCQoIiNjb3Vwb25tYWtlIikudmFsKCkpLCQoImlucHV0Lm1vZGVsZW1haWwiKS52YWwoJCgiI2NvdXBvbm1vZGVsIikudmFsKCkpLCQoImlucHV0LnllYXJlbWFpbCIpLnZhbCgkKCIjY291cG9ueWVhciIpLnZhbCgpKSk7ZW1haWxIYW5kbGVyLmNvbmRpdGlvbj0iVXNlZCI7Yi5lbWFpbFNlbnQ9ZnVuY3Rpb24oaCl7JCgiLmNsb3NlLXJldmVhbC1tb2RhbCIpLnRyaWdnZXIoImNsaWNrIil9O2JyZWFrO2Nhc2UgIkNhcnByb29mTWFpbCI6ZW1haWxIYW5kbGVyLnBvcHVwZGl2PSJjYXJwcm9vZk1haW5EaXYiO2s9JCgiI2VtYWlsU3ViamVjdERlZjIiKS50ZXh0KCk7YT0kKCIjZW1haWxCb2R5RGVmMiIpLmh0bWwoKTskKCJpbnB1dC5sYWJlbGVtYWlsIikudmFsKCJEZW1hbmRlcy1DYXJQcm9vZiIpOyQoImlucHV0LmlzZXhwcmVzcyIpLnZhbCgiMCIpOyQoImlucHV0LmJyYW5kZW1haWwiKS52YWwoY2FycHJvb2ZIYW5kbGVyLm1ha2UpOwokKCJpbnB1dC5tb2RlbGVtYWlsIikudmFsKGNhcnByb29mSGFuZGxlci5tb2RlbCk7JCgiaW5wdXQueWVhcmVtYWlsIikudmFsKGNhcnByb29mSGFuZGxlci55ZWFyKTthPWEucmVwbGFjZSgve1wkTkFNRX0vZyxkMmNtZWRpYS5jYXBpdGFsaXNlRmlyc3RMZXR0ZXJPZkV2ZXJ5V29yZChjYXJwcm9vZkhhbmRsZXIubmFtZSkpLnJlcGxhY2UoL3tcJEVNQUlMfS9nLGNhcnByb29mSGFuZGxlci5lbWFpbCk7YT1hLnJlcGxhY2UoL3tcJEVNQUlMTUFLRX0vZyxjYXJwcm9vZkhhbmRsZXIubWFrZSkucmVwbGFjZSgve1wkRU1BSUxNT0RFTH0vZyxjYXJwcm9vZkhhbmRsZXIubW9kZWwpLnJlcGxhY2UoL3tcJEVNQUlMWUVBUn0vZyxjYXJwcm9vZkhhbmRsZXIueWVhcik7YT1hLnJlcGxhY2UoL3tcJENPTE9SfS9nLGNhcnByb29mSGFuZGxlci5jb2xvcikucmVwbGFjZSgve1wkU1RPQ0tOVU1CRVJ9L2csY2FycHJvb2ZIYW5kbGVyLnN0b2NrTnVtYmVyKS5yZXBsYWNlKC97XCRFTUFJTFBIT05FfS9nLApjYXJwcm9vZkhhbmRsZXIucGhvbmUpO2VtYWlsSGFuZGxlci51c2VyRW1haWw9Y2FycHJvb2ZIYW5kbGVyLmVtYWlsO2VtYWlsSGFuZGxlci51c2VyRmlyc3ROYW1lPWNhcnByb29mSGFuZGxlci5uYW1lO2VtYWlsSGFuZGxlci51c2VyUGhvbmU9Y2FycHJvb2ZIYW5kbGVyLnBob25lO2VtYWlsSGFuZGxlci5tYWtlPWNhcnByb29mSGFuZGxlci5tYWtlO2VtYWlsSGFuZGxlci5tb2RlbD1jYXJwcm9vZkhhbmRsZXIubW9kZWw7ZW1haWxIYW5kbGVyLnllYXI9Y2FycHJvb2ZIYW5kbGVyLnllYXI7ZW1haWxIYW5kbGVyLnRyaW09JCgiI2NhcnByb29mY2FydHJpbSIpLnZhbCgpO2VtYWlsSGFuZGxlci52aW49JCgiI2NhcnByb29mY2FydmluIikudmFsKCk7ZW1haWxIYW5kbGVyLnByaWNlPSQoIiNjYXJwcm9vZmNhcnByaWNlIikudmFsKCk7ZW1haWxIYW5kbGVyLnN0b2NrTnVtYmVyPWNhcnByb29mSGFuZGxlci5zdG9ja051bWJlcjtlbWFpbEhhbmRsZXIuY2FyaWQ9JCgiI2NhcnByb29mY2FyaWQiKS52YWwoKTsKZD1jYXJwcm9vZkhhbmRsZXIuc2VuZFRvLmxlbmd0aCYmIiIhPWNhcnByb29mSGFuZGxlci5zZW5kVG8\/Y2FycHJvb2ZIYW5kbGVyLnNlbmRUbzokKCIjdGV4dFNlbmRUb0VtYWlsIikubGVuZ3RoPyQoIiN0ZXh0U2VuZFRvRW1haWwiKS52YWwoKToiIjtmPWNhcnByb29mSGFuZGxlci5zZW5kVG9BZGYubGVuZ3RoJiYiIiE9Y2FycHJvb2ZIYW5kbGVyLnNlbmRUb0FkZj9jYXJwcm9vZkhhbmRsZXIuc2VuZFRvQWRmOiQoIiN0ZXh0U2VuZFRvRW1haWxBREYiKS5sZW5ndGg\/JCgiI3RleHRTZW5kVG9FbWFpbEFERiIpLnZhbCgpOiIiO2VtYWlsSGFuZGxlci5kZWFsZXJOYW1lPWNhcnByb29mSGFuZGxlci5kZWFsZXJOYW1lO2JyZWFrO2Nhc2UgIkN1c3RvbWVyUmF0aW5nIjplbWFpbEhhbmRsZXIucG9wdXBkaXY9IkN1c3RvbWVyUmF0aW5nIjttYWlsUmF0aW5nLmFzc2lnblZhbHVlcygpO2E9YS5yZXBsYWNlKC97XCRSQVRJTkdNRVNTQUdFfS9nLG1haWxSYXRpbmcubWVzc2FnZSkucmVwbGFjZSgve1wkTE5BTUV9L2csCmQyY21lZGlhLmNhcGl0YWxpc2VGaXJzdExldHRlck9mRXZlcnlXb3JkKG1haWxSYXRpbmcudXNlckxhc3ROYW1lKSkucmVwbGFjZSgve1wkRk5BTUV9L2csZDJjbWVkaWEuY2FwaXRhbGlzZUZpcnN0TGV0dGVyT2ZFdmVyeVdvcmQobWFpbFJhdGluZy51c2VyRmlyc3ROYW1lKSkucmVwbGFjZSgve1wkRU1BSUx9L2csbWFpbFJhdGluZy51c2VyRW1haWwpLnJlcGxhY2UoL3tcJFBIT05FfS9nLG1haWxSYXRpbmcudXNlclBob25lKS5yZXBsYWNlKC97XCRSQVRJTkdTVEFSU30vZyxtYWlsUmF0aW5nLnJhdGluZykucmVwbGFjZSgve1wkQ0xJRU5UTkFNRX0vZyxtYWlsUmF0aW5nLnVzZXJGaXJzdE5hbWUrIiAiK21haWxSYXRpbmcudXNlckxhc3ROYW1lKTtrPWsucmVwbGFjZSgve1wkQ0xJRU5UTkFNRX0vZyxtYWlsUmF0aW5nLnVzZXJGaXJzdE5hbWUrIiAiK21haWxSYXRpbmcudXNlckxhc3ROYW1lKTtlbWFpbEhhbmRsZXIudmluPSIiO2VtYWlsSGFuZGxlci5wcmljZT0wO2VtYWlsSGFuZGxlci5zdG9ja051bWJlcj0KIiI7ZW1haWxIYW5kbGVyLmNhcmlkPSIiO2VtYWlsSGFuZGxlci5jb25kaXRpb249IlVua25vd24iO2VtYWlsSGFuZGxlci51c2VyRmlyc3ROYW1lPW1haWxSYXRpbmcudXNlckZpcnN0TmFtZTtlbWFpbEhhbmRsZXIudXNlckxhc3ROYW1lPW1haWxSYXRpbmcudXNlckxhc3ROYW1lO2VtYWlsSGFuZGxlci51c2VyUGhvbmU9bWFpbFJhdGluZy51c2VyUGhvbmU7ZW1haWxIYW5kbGVyLnVzZXJFbWFpbD1tYWlsUmF0aW5nLnVzZXJFbWFpbDtkPW1haWxSYXRpbmcuc2VuZFRvO2Y9IiAgIjticmVhaztjYXNlICJoZWFkZXJTZXJ2aWNlIjplbWFpbEhhbmRsZXIucG9wdXBkaXY9Im1lbnVTZXJ2aWNlIjtzZXJ2aWNlRm9ybV9oZWFkZXJTZXJ2aWNlLnNldEVtYWlsU2VudENhbGxiYWNrKCk7YT1zZXJ2aWNlRm9ybV9oZWFkZXJTZXJ2aWNlLnNldEVtYWlsSGFuZGxlclZhbHVlc0FuZEJvZHkoYSk7ZD1zZXJ2aWNlRm9ybV9oZWFkZXJTZXJ2aWNlLmdldFNlbmRUbygpO2srPSIgRXhwcmVzcyI7CmJyZWFrO2Nhc2UgIm1lbnVTZXJ2aWNlIjplbWFpbEhhbmRsZXIucG9wdXBkaXY9Im1lbnVTZXJ2aWNlIjtzZXJ2aWNlRm9ybV9tZW51U2VydmljZS5zZXRFbWFpbFNlbnRDYWxsYmFjaygpO2E9c2VydmljZUZvcm1fbWVudVNlcnZpY2Uuc2V0RW1haWxIYW5kbGVyVmFsdWVzQW5kQm9keShhKTtkPXNlcnZpY2VGb3JtX21lbnVTZXJ2aWNlLmdldFNlbmRUbygpO2srPSIgRXhwcmVzcyI7YnJlYWs7ZGVmYXVsdDoiIj09ZCYmInVuZGVmaW5lZCIhPXR5cGVvZiAkKCIjdGV4dFNlbmRUb0VtYWlsIikuYXR0cigiaWQiKSYmKGQ9JCgiI3RleHRTZW5kVG9FbWFpbCIpLnZhbCgpKTsiIj09ZiYmInVuZGVmaW5lZCIhPXR5cGVvZiAkKCIjdGV4dFNlbmRUb0VtYWlsQURGIikuYXR0cigiaWQiKSYmMzwkKCIjdGV4dFNlbmRUb0VtYWlsQURGIikudmFsKCkubGVuZ3RoJiYoZj0kKCIjdGV4dFNlbmRUb0VtYWlsQURGIikudmFsKCkpOyJ1bmRlZmluZWQiIT10eXBlb2YgbWFpbFZlaGljbGVXaWRnZXQmJgoobWFpbFZlaGljbGVXaWRnZXQuYXNzaWduVmFsdWVzKCksYT1hLnJlcGxhY2UoL3tcJEVNQUlMTUFLRX0vZyxtYWlsVmVoaWNsZVdpZGdldC5tYWtlKS5yZXBsYWNlKC97XCRFTUFJTE1PREVMfS9nLG1haWxWZWhpY2xlV2lkZ2V0Lm1vZGVsKS5yZXBsYWNlKC97XCRFTUFJTFlFQVJ9L2csbWFpbFZlaGljbGVXaWRnZXQueWVhcikucmVwbGFjZSgve1wkQ09MT1J9L2csbWFpbFZlaGljbGVXaWRnZXQuY29sb3IpLnJlcGxhY2UoL3tcJEVNQUlMU1RPQ0tOVU1CRVJ9L2csbWFpbFZlaGljbGVXaWRnZXQuc3RvY2tOdW1iZXIpLnJlcGxhY2UoL3tcJFNUT0NLTlVNQkVSfS9nLG1haWxWZWhpY2xlV2lkZ2V0LnN0b2NrTnVtYmVyKS5yZXBsYWNlKC97XCRGUk9NWUVBUn0vZyxtYWlsVmVoaWNsZVdpZGdldC5mcm9tWWVhcikucmVwbGFjZSgve1wkVE9ZRUFSfS9nLG1haWxWZWhpY2xlV2lkZ2V0LnRvWWVhcikucmVwbGFjZSgve1wkSU5URU5USU9OfS9nLG1haWxWZWhpY2xlV2lkZ2V0LmludGVudGlvbikucmVwbGFjZSgve1wkUExBVEVTfS9nLAptYWlsVmVoaWNsZVdpZGdldC5wbGF0ZXMpLnJlcGxhY2UoL3tcJFZJTn0vZyxtYWlsVmVoaWNsZVdpZGdldC52aW4pLG1haWxWZWhpY2xlV2lkZ2V0Lm9kb21vdGVyJiYoYT1hLnJlcGxhY2UoL3tcJEtNfS9nLGMobWFpbFZlaGljbGVXaWRnZXQub2RvbW90ZXIpKSksJCgiaW5wdXQuYnJhbmRlbWFpbCIpLmxlbmd0aCYmJCgiaW5wdXQuYnJhbmRlbWFpbCIpLnZhbChtYWlsVmVoaWNsZVdpZGdldC5tYWtlKSwkKCJpbnB1dC5tb2RlbGVtYWlsIikubGVuZ3RoJiYkKCJpbnB1dC5tb2RlbGVtYWlsIikudmFsKG1haWxWZWhpY2xlV2lkZ2V0Lm1vZGVsKSwkKCJpbnB1dC55ZWFyZW1haWwiKS5sZW5ndGgmJiQoImlucHV0LnllYXJlbWFpbCIpLnZhbChtYWlsVmVoaWNsZVdpZGdldC55ZWFyKSxlbWFpbEhhbmRsZXIubWFrZT1tYWlsVmVoaWNsZVdpZGdldC5tYWtlLGVtYWlsSGFuZGxlci5tb2RlbD1tYWlsVmVoaWNsZVdpZGdldC5tb2RlbCxlbWFpbEhhbmRsZXIueWVhcj1tYWlsVmVoaWNsZVdpZGdldC55ZWFyLAplbWFpbEhhbmRsZXIudHJpbT0kKCIjY2FydHJpbSIpLnZhbCgpLGVtYWlsSGFuZGxlci52aW49bWFpbFZlaGljbGVXaWRnZXQudmluLGVtYWlsSGFuZGxlci5wcmljZT0kKCIjY2FycHJpY2UiKS52YWwoKSxlbWFpbEhhbmRsZXIuc3RvY2tOdW1iZXI9bWFpbFZlaGljbGVXaWRnZXQuc3RvY2tOdW1iZXIsZW1haWxIYW5kbGVyLmNhcmlkPSQoIiNjYXJpZCIpLnZhbCgpLDA8JCgiI2NhcmlkIikudmFsKCkubGVuZ3RofHxlbWFpbEhhbmRsZXIueWVhcjwobmV3IERhdGUpLmdldEZ1bGxZZWFyKCk\/ZW1haWxIYW5kbGVyLmNvbmRpdGlvbj0iVXNlZCI6ZW1haWxIYW5kbGVyLmNvbmRpdGlvbj0wPG1haWxWZWhpY2xlV2lkZ2V0Lm1ha2UubGVuZ3RoPyJOZXciOiJVbmtub3duIik7YT1hLnJlcGxhY2UoL3tcJFBMQVRFU30vZywiIik7InVuZGVmaW5lZCIhPXR5cGVvZiBtYWlsVmVoaWNsZVdpZGdldEV4JiYkKCIjdmVoaWNsZVNlbGVjdEZvcm1FeCIpLmxlbmd0aCYmKG1haWxWZWhpY2xlV2lkZ2V0RXguYXNzaWduVmFsdWVzKCksCmE9YS5yZXBsYWNlKC97XCRNQUtFRVh9L2csbWFpbFZlaGljbGVXaWRnZXRFeC5tYWtlKS5yZXBsYWNlKC97XCRNT0RFTEVYfS9nLG1haWxWZWhpY2xlV2lkZ2V0RXgubW9kZWwpLnJlcGxhY2UoL3tcJFlFQVJFWH0vZyxtYWlsVmVoaWNsZVdpZGdldEV4LnllYXIpLnJlcGxhY2UoL3tcJENPTE9SRVh9L2csbWFpbFZlaGljbGVXaWRnZXRFeC5jb2xvcikucmVwbGFjZSgve1wkVFJJTUVYfS9nLG1haWxWZWhpY2xlV2lkZ2V0RXgudHJpbSkucmVwbGFjZSgve1wkVFJBTlNNSVNTSU9OfS9nLG1haWxWZWhpY2xlV2lkZ2V0RXgudHJhbnNtaXNzaW9uKS5yZXBsYWNlKC97XCRLTX0vZyxjKG1haWxWZWhpY2xlV2lkZ2V0RXgub2RvbW90ZXIpKS5yZXBsYWNlKC97XCRWSU5FWH0vZyxtYWlsVmVoaWNsZVdpZGdldEV4LnZpbikucmVwbGFjZSgve1wkRFJJVkVUUkFJTn0vZyxtYWlsVmVoaWNsZVdpZGdldEV4LmRyaXZldHJhaW4pLnJlcGxhY2UoL3tcJEdBU30vZyxtYWlsVmVoaWNsZVdpZGdldEV4LmZ1ZWwpLAokKCJpbnB1dC5icmFuZGVtYWlsIikubGVuZ3RoJiYwPG1haWxWZWhpY2xlV2lkZ2V0RXgubWFrZS5sZW5ndGgmJiQoImlucHV0LmJyYW5kZW1haWwiKS52YWwobWFpbFZlaGljbGVXaWRnZXRFeC5tYWtlKSwkKCJpbnB1dC5tb2RlbGVtYWlsIikubGVuZ3RoJiYwPG1haWxWZWhpY2xlV2lkZ2V0RXgubW9kZWwubGVuZ3RoJiYkKCJpbnB1dC5tb2RlbGVtYWlsIikudmFsKG1haWxWZWhpY2xlV2lkZ2V0RXgubW9kZWwpLCQoImlucHV0LnllYXJlbWFpbCIpLmxlbmd0aCYmMDxtYWlsVmVoaWNsZVdpZGdldEV4Lm1ha2UubGVuZ3RoJiYkKCJpbnB1dC55ZWFyZW1haWwiKS52YWwobWFpbFZlaGljbGVXaWRnZXRFeC55ZWFyKSxlbWFpbEhhbmRsZXIubWFrZT1tYWlsVmVoaWNsZVdpZGdldEV4Lm1ha2UsZW1haWxIYW5kbGVyLm1vZGVsPW1haWxWZWhpY2xlV2lkZ2V0RXgubW9kZWwsZW1haWxIYW5kbGVyLnllYXI9bWFpbFZlaGljbGVXaWRnZXRFeC55ZWFyLGVtYWlsSGFuZGxlci50cmltPW1haWxWZWhpY2xlV2lkZ2V0RXgudHJpbSwKInVuZGVmaW5lZCIhPXR5cGVvZiBlbWFpbEhhbmRsZXIuaXNUcmFkZUluQmFyfHwiUHJpY2VWZWhpY2xlIiE9Yi5tYWlsSUQmJiJQcmljZVZlaGljbGVOZXciIT1iLm1haWxJRCYmIkVzdGhldGljUmVxdWVzdCIhPWIubWFpbElEfHwoZW1haWxIYW5kbGVyLm1ha2U9bWFpbFZlaGljbGVXaWRnZXQubWFrZSxlbWFpbEhhbmRsZXIubW9kZWw9bWFpbFZlaGljbGVXaWRnZXQubW9kZWwsZW1haWxIYW5kbGVyLnllYXI9bWFpbFZlaGljbGVXaWRnZXQueWVhcixlbWFpbEhhbmRsZXIudHJpbT1tYWlsVmVoaWNsZVdpZGdldC50cmltLCJQcmljZVZlaGljbGUiIT1iLm1haWxJRCYmIlByaWNlVmVoaWNsZU5ldyIhPWIubWFpbElEKXx8KGVtYWlsSGFuZGxlci5jYXIyX21ha2U9bWFpbFZlaGljbGVXaWRnZXRFeC5tYWtlLGVtYWlsSGFuZGxlci5jYXIyX21vZGVsPW1haWxWZWhpY2xlV2lkZ2V0RXgubW9kZWwsZW1haWxIYW5kbGVyLmNhcjJfdHJpbT1tYWlsVmVoaWNsZVdpZGdldEV4LnRyaW0sCmVtYWlsSGFuZGxlci5jYXIyX3llYXI9bWFpbFZlaGljbGVXaWRnZXRFeC55ZWFyLGVtYWlsSGFuZGxlci5jYXIyX2NvbG9yPW1haWxWZWhpY2xlV2lkZ2V0RXguY29sb3IsZW1haWxIYW5kbGVyLmNhcjJfb2RvbWV0ZXI9YyhtYWlsVmVoaWNsZVdpZGdldEV4Lm9kb21vdGVyKSxlbWFpbEhhbmRsZXIuY2FyMl92aW49bWFpbFZlaGljbGVXaWRnZXRFeC52aW4sZW1haWxIYW5kbGVyLmNhcjJfdHJhbnNtaXNzb249bWFpbFZlaGljbGVXaWRnZXRFeC50cmFuc21pc3Npb24sZW1haWxIYW5kbGVyLmNhcjJfZHJpdmV0cmFpbj1tYWlsVmVoaWNsZVdpZGdldEV4LmRyaXZldHJhaW4sZW1haWxIYW5kbGVyLmNhcjJfZnVlbHR5cGU9bWFpbFZlaGljbGVXaWRnZXRFeC5mdWVsLGE9YS5yZXBsYWNlKC97XCRUUkFERUlOTE9XfS9nLCJOL0EiKSxhPWEucmVwbGFjZSgve1wkVFJBREVJTkhJR0h9L2csIk4vQSIpLGE9YS5yZXBsYWNlKC97XCRUUkFERUlOQVZHfS9nLCJOL0EiKSksZW1haWxIYW5kbGVyLnZpbj0KIiIsZW1haWxIYW5kbGVyLnByaWNlPTAsZW1haWxIYW5kbGVyLnN0b2NrTnVtYmVyPSIiLGVtYWlsSGFuZGxlci5jYXJpZD0iIiwwPCQoIiNjYXJpZCIpLnZhbCgpLmxlbmd0aD9lbWFpbEhhbmRsZXIuY29uZGl0aW9uPSJVc2VkIjplbWFpbEhhbmRsZXIuY29uZGl0aW9uPTA8bWFpbFZlaGljbGVXaWRnZXRFeC5tYWtlLmxlbmd0aD8iTmV3IjoiVW5rbm93biIpO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgJCgiI3NlcnZpY2VQYWNrYWdlcyIpLnByb3AoImlkIikpe3ZhciBuPSExLHI9IiI7JCgiaW5wdXQuc2VsZWN0ZWRTZXJ2aWNlIikuZWFjaChmdW5jdGlvbihoLHApe2g9JChwKTtoLmlzKCI6Y2hlY2tlZCIpJiYocis9Ijxicj4iK2gudmFsKCksbj0hMCl9KTtuJiYocj0iPGJyPjxicj48dT4iKyQoIiNzZWxlY3RlZFNlcnZpY2VzVGl0bGUiKS52YWwoKSsiPC91PiIrcik7YT1hLnJlcGxhY2UoL3tcJFNFTEVDVEVEU0VSVklDRVN9L2cscil9InVuZGVmaW5lZCIhPXR5cGVvZiBtYWlsVXNlckluZm8mJgoobWFpbFVzZXJJbmZvLmFzc2lnblZhbHVlcygpLGE9YS5yZXBsYWNlKC97XCRGTkFNRX0vZyxkMmNtZWRpYS5jYXBpdGFsaXNlRmlyc3RMZXR0ZXJPZkV2ZXJ5V29yZChtYWlsVXNlckluZm8uZmlyc3ROYW1lKSkucmVwbGFjZSgve1wkTE5BTUV9L2csZDJjbWVkaWEuY2FwaXRhbGlzZUZpcnN0TGV0dGVyT2ZFdmVyeVdvcmQobWFpbFVzZXJJbmZvLmxhc3ROYW1lKSkucmVwbGFjZSgve1wkRU1BSUxQSE9ORX0vZyxtYWlsVXNlckluZm8ucGhvbmUpLnJlcGxhY2UoL3tcJEVNQUlMfS9nLG1haWxVc2VySW5mby5lbWFpbCkpOyJ1bmRlZmluZWQiIT10eXBlb2YgbWFpbEpvYk9mZmVyJiYobWFpbEpvYk9mZmVyLmFzc2lnblZhbHVlcygpLGQ9JCgiI3RleHRTZW5kVG9FbWFpbCIpLnZhbCgpLGY9JCgiI3RleHRTZW5kVG9FbWFpbEFERiIpLnZhbCgpLGE9YS5yZXBsYWNlKC97XCRKT0JQT1NUfS9nLG0oZDJjbWVkaWEuY2FwaXRhbGlzZUZpcnN0TGV0dGVyT2ZFdmVyeVdvcmQobWFpbEpvYk9mZmVyLmpvYlBvc2l0b24pKSkucmVwbGFjZSgve1wkSk9CREVQQVJUTUVOVH0vZywKbShkMmNtZWRpYS5jYXBpdGFsaXNlRmlyc3RMZXR0ZXJPZkV2ZXJ5V29yZChtYWlsSm9iT2ZmZXIuam9iRGVwYXJ0bWVudCkpKS5yZXBsYWNlKC97XCRKT0JNU0d9L2csbShtYWlsSm9iT2ZmZXIuam9iTWVzc2FnZSkpKTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIG1haWxVc2VyQWRkcmVzcyl7bWFpbFVzZXJBZGRyZXNzLmFzc2lnblZhbHVlcygpO3ZhciBxPXRyaW0obWFpbFVzZXJBZGRyZXNzLmFkZHJlc3NBcHArIiAiK21haWxVc2VyQWRkcmVzcy5hZGRyZXNzTnVtYmVyKyIgIittYWlsVXNlckFkZHJlc3MuYWRkcmVzc1N0cmVldCk7YT1hLnJlcGxhY2UoL3tcJENVUlJFTlRBRERSRVNTfS9nLG0ocSkpLnJlcGxhY2UoL3tcJENVUlJFTlRDSVRZfS9nLG0obWFpbFVzZXJBZGRyZXNzLmNpdHkpKS5yZXBsYWNlKC97XCRDVVJSRU5UUFJPVklOQ0V9L2csbShtYWlsVXNlckFkZHJlc3MucHJvdmluY2UpKS5yZXBsYWNlKC97XCRDVVJSRU5UUE9TVEFMQ09ERX0vZyxtKG1haWxVc2VyQWRkcmVzcy5wb3N0YWxDb2RlKSl9InVuZGVmaW5lZCIhPQp0eXBlb2YgbWFpbFNjaGVkdWxlJiYobWFpbFNjaGVkdWxlLmFzc2lnblZhbHVlcygpLGE9YS5yZXBsYWNlKC97XCREQVRFMX0vZyxtYWlsU2NoZWR1bGUuZmlyc3RDaG9pY2UpLnJlcGxhY2UoL3tcJERBVEUyfS9nLG1haWxTY2hlZHVsZS5zZWNvbmRDaG9pY2UpLnJlcGxhY2UoL3tcJFdBSVRJTkdPTlNJVEV9L2csbWFpbFNjaGVkdWxlLndhaXRpbmdPblNpdGUpLnJlcGxhY2UoL3tcJFRSQU5TUE9SVE9QVElPTn0vZyxtYWlsU2NoZWR1bGUuZ2V0VHJhbnNwb3J0T3B0aW9uVGV4dCgpKSxlbWFpbEhhbmRsZXIuc2VydmljZURhdGUxPW1haWxTY2hlZHVsZS5maXJzdENob2ljZSxlbWFpbEhhbmRsZXIuc2VydmljZURhdGUyPW1haWxTY2hlZHVsZS5zZWNvbmRDaG9pY2UsZW1haWxIYW5kbGVyLndhaXRpbmdPblNpdGU9bWFpbFNjaGVkdWxlLndhaXRpbmdPblNpdGUsZW1haWxIYW5kbGVyLnRyYW5zcG9ydE9wdGlvbj1tYWlsU2NoZWR1bGUudHJhbnNwb3J0T3B0aW9uKTt2YXIgdD1xPSIiLAp1PSIiOyJ1bmRlZmluZWQiIT10eXBlb2YgJCgiI2ZpbmFuY2VPcHRpb25EaXYiKS5hdHRyKCJpZCIpJiYoImNoZWNrZWQiPT0kKCIjZmluYW5jZU9wdGlvbkRpdiBpbnB1dCIpLmF0dHIoImNoZWNrZWQiKT9xPSQoIiN0ZXh0Q2FzaCIpLnZhbCgpOihxPSJjaGVja2VkIj09JCgiI2ZpbmFuY2VPcHRpb25EaXYyIGlucHV0IikuYXR0cigiY2hlY2tlZCIpPyQoIiN0ZXh0RmluYW5jZSIpLnZhbCgpOiQoIiN0ZXh0TGVhc2UiKS52YWwoKSx1PSQoIiNmaW5hbmNlVGVybVNlbGVjdCIpLnZhbCgpKSwidW5kZWZpbmVkIiE9dHlwZW9mICQoIiN2ZWhpY2xlT2ZmZXIiKS5hdHRyKCJpZCIpJiYodD0iJCIrYygkKCIjdmVoaWNsZU9mZmVyIikudmFsKCkpKSxhPWEucmVwbGFjZSgve1wkUEFZTUVOVH0vZyxxKS5yZXBsYWNlKC97XCRQQVlNRU5UVEVSTX0vZyx1KS5yZXBsYWNlKC97XCRPRkZFUn0vZyx0KSk7InVuZGVmaW5lZCIhPXR5cGVvZiAkKCIjcXVlc3Rpb25zQ29tbWVudHMiKS5hdHRyKCJpZCIpJiYKKGU9bSgkKCIjcXVlc3Rpb25zQ29tbWVudHMiKS52YWwoKSksYT1hLnJlcGxhY2UoL3tcJFFVRVNUSU9OU30vZyxlKSxlbWFpbEhhbmRsZXIuY29tbWVudHM9ZSk7InVuZGVmaW5lZCIhPXR5cGVvZiAkKCIjcmVxdWVzdFR5cGUiKS5hdHRyKCJpZCIpJiYoYT1hLnJlcGxhY2UoL3tcJERFTUFOREV9L2csJCgiI3JlcXVlc3RUeXBlIikudmFsKCkpKX0kKCIjdGVzdERyaXZlVHlwZSIpLmxlbmd0aCYmKGE9YS5yZXBsYWNlKC97XCRURVNURFJJVkVUWVBFfS9nLCQoIiN0ZXN0RHJpdmVUeXBlIikudmFsKCkpLGE9IlZpcnR1YWwiPT0kKCIjdGVzdERyaXZlVHlwZSIpLnZhbCgpfHwiVmlydHVlbCI9PSQoIiN0ZXN0RHJpdmVUeXBlIikudmFsKCk\/YS5yZXBsYWNlKC97XCRURVNURFJJVkVWSVJUVUFMfS9nLCQoIiNwcmVmZXJlZFZpcnR1YWxUb29sIikudmFsKCkpOmEucmVwbGFjZSgve1wkVEVTVERSSVZFVklSVFVBTH0vZywiTi9BIikpOyQoZykuZmluZCgiI3NlcnZpY2VFbWFpbHNTZWxlY3QiKS5sZW5ndGg\/CmVtYWlsSGFuZGxlci5kZWFsZXJOYW1lPSQoZykuZmluZCgiI3NlcnZpY2VFbWFpbHNTZWxlY3QiKS5maW5kKCI6c2VsZWN0ZWQiKS5odG1sKCk6IjEiPT0kKCIjaXNNb2JpbGUiKS52YWwoKSYmJCgiI3NlcnZpY2VFbWFpbHNTZWxlY3QiKS5sZW5ndGgmJihlbWFpbEhhbmRsZXIuZGVhbGVyTmFtZT0kKCIjc2VydmljZUVtYWlsc1NlbGVjdCIpLmZpbmQoIjpzZWxlY3RlZCIpLmh0bWwoKSk7ZW1haWxIYW5kbGVyLmRlYWxlck5hbWUmJihhPWEucmVwbGFjZSgieyRERUFMRVJOQU1FfSIsZW1haWxIYW5kbGVyLmRlYWxlck5hbWUpKTthPWEucmVwbGFjZSgve1wkKERBVEVbMTJdKX0vZyxmdW5jdGlvbihoLHApe2g9JCgnaW5wdXRbbmFtZT0iJytwLnRvTG93ZXJDYXNlKCkrJyJdJyxnKTtyZXR1cm4gMDxoLmxlbmd0aD8obmV3IERhdGUoaC52YWwoKSkpLmRhdGVGb3JtYXQoIlktbS1kIEg6aSIpOiIifSk7Yz0iIjswPCQoIiNsYXN0dmlld2VkbWFrZSIpLnZhbCgpLmxlbmd0aCYmKGM9JCgiI2xhc3R2aWV3ZWRtYWtlIikudmFsKCkrCiIgIiskKCIjbGFzdHZpZXdlZG1vZGVsIikudmFsKCkrIiAiKyQoIiNsYXN0dmlld2VkeWVhciIpLnZhbCgpKyIgIiskKCIjbGFzdHZpZXdlZHN0b2NrbnVtYmVyIikudmFsKCkpO2E9YS5yZXBsYWNlKCJ7JExBU1RWRUhJQ0xFVklFV0VEfSIsYyk7YT1hLnJlcGxhY2UoUmVnRXhwKCJ7XFwkKFFVRVNUSU9OU3xNRVNTQUdFfFJBVElOR01FU1NBR0V8RU1BSUxQSE9ORXxFTUFJTE1BS0V8RU1BSUxNT0RFTHxFTUFJTFlFQVJ8UEFZTUVOVHxQQVlNRU5UVEVSTXxPRkZFUnxTVE9DS05VTUJFUnxDT0xPUnxGTkFNRXxMTkFNRXxFTUFJTHxLTXxWSU5FWHxTRUxFQ1RFRFNFUlZJQ0VTfEVNQUlMQ0lUWXxQTEFURVN8REFURTF8REFURTJ8VFJBTlNQT1JUT1BUSU9OKX0iLCJnIiksIiIpO2E9YS5yZXBsYWNlKC97XCRFTUFJTEJVSUxEQU5EUFJJQ0V9L2csYi5iYW5kcExpbmsoKSk7IiI9PWQmJiJ1bmRlZmluZWQiIT10eXBlb2YgJCgiI2V4cHJlc3NTZW5kVG9FbWFpbCIpLmF0dHIoImlkIikmJgooZD1sJiYidW5kZWZpbmVkIiE9dHlwZW9mICQoIiNleHByZXNzU2VuZFRvRW1haWxORVciKS5hdHRyKCJpZCIpJiYwPCQoIiNleHByZXNzU2VuZFRvRW1haWxORVciKS52YWwoKS5sZW5ndGg\/JCgiI2V4cHJlc3NTZW5kVG9FbWFpbE5FVyIpLnZhbCgpOiQoIiNleHByZXNzU2VuZFRvRW1haWwiKS52YWwoKSk7aWYoIiI9PWYmJiJ1bmRlZmluZWQiIT10eXBlb2YgJCgiI2V4cHJlc3NTZW5kVG9FbWFpbEFERiIpLmF0dHIoImlkIikpaWYobCYmInVuZGVmaW5lZCIhPXR5cGVvZiAkKCIjZXhwcmVzc1NlbmRUb0VtYWlsQURGTkVXIikuYXR0cigiaWQiKSYmMDwkKCIjZXhwcmVzc1NlbmRUb0VtYWlsQURGTkVXIikudmFsKCkubGVuZ3RoKWY9JCgiI2V4cHJlc3NTZW5kVG9FbWFpbEFERk5FVyIpLnZhbCgpO2Vsc2UgaWYoInNlcnZpY2UiPT1lbWFpbEhhbmRsZXIuZGVwYXJ0bWVudC50b0xvd2VyQ2FzZSgpfHxiJiYoIm1lbnVTZXJ2aWNlIj09Yi5tYWlsSUR8fCJoZWFkZXJTZXJ2aWNlIj09CmIubWFpbElEKSlmPSQoIiNleHByZXNzU2VuZFRvRW1haWxBREZTRVJWSUNFIikudmFsKCk7IiI9PWQmJiQoIiNleHByZXNzSW5EZW1vIikubGVuZ3RoJiYiMSI9PSQoIiNleHByZXNzSW5EZW1vIikudmFsKCkmJihlbWFpbEhhbmRsZXIuY29uZGl0aW9uPSJOZXciLDA8JCgiI2V4cHJlc3NTZW5kVG9FbWFpbE5FVyIpLnZhbCgpLmxlbmd0aCYmKGQ9JCgiI2V4cHJlc3NTZW5kVG9FbWFpbE5FVyIpLnZhbCgpKSk7IlF1aWNrRW1haWwiPT1iLm1haWxJRCYmInVuZGVmaW5lZCIhPT10eXBlb2YgZSYmMDxlLmxlbmd0aCYmMDwkKCIjc2VydmljZUVtYWlsIikubGVuZ3RoJiYwPCQoIiNzZXJ2aWNlQWRmRW1haWwiKS5sZW5ndGgmJih0ZXJtcz0icmFwcGVsO3NlcnZpY2U7aHVpbGU7cGllY2VzO3Bp77+9Y2VzO3BuZXVzO3RyYW5zbWlzc2lvbjthY2Nlc3NvaXJlczthbHRlcm5hdGV1cjthbnRpcm91aWxsZTthbnRpLXJvdWlsbGU7YmF0dGVyaWU7YmF0ZXJpZTty77+9cGFyYXRpb247cGVpbnR1cmU7ZnJlaW5zO2Rpc3F1ZXM7Y2Fycm9zc2VyaWU7Y2F0YWx5c2V1cjtjaG9jO2RlbWFycmV1cjvvv71jaGFwcGVtZW50O21vdGV1cjtlc3N1aWUtZ2xhY2U7ZXNzdWktZ2xhY2U7IGZldXg7Y2xpZ25vdGFudDtrbGF4b247ZmlsdHJlO2hvcmxvZ2U7cmFkaW87dG9pdC1vdXZyYW50OyBtYWc7IG1hZ3M7be+\/vWNhbmlxdWU7bXVmZmxlcjtuYXZpZ2F0aW9uO29yZGluYXRldXI7IHBoYXJlcztsdW1p77+9cmVzO2x1bWllcmU7cHJvYmzvv71tZTtwcm9ibGVtZTtyZWNhbGw7cGFydHM7dGlyZTthY2Nlc3NvcmllczthbHRlcm5hdG9yO3J1c3Rwcm9vZmluZztiYXR0ZXJ5O3JlcGFpcjtwYWludDticmFrZTtkaXNrczsgYm9keTtzdGFydGVyO2V4aGF1c3Q7ZW5naW5lO3dpcGVyO3dpcGVyczsgZmxhc2g7IGxpZ2h0O2ZsYXNoZXI7Zmxhc2hlcnM7IGhvcm47ZmlsdGVyO2Nsb2NrO3Jvb2Y7bWVjYW5pYztjb21wdXRlcjtlY3U7cHJvYmxlbSIuc3BsaXQoIjsiKSwKbWF0Y2hlZFRlcm1zPVtdLCQuZWFjaCh0ZXJtcyxmdW5jdGlvbihoLHApe2lmKC0xPGUuaW5kZXhPZihwKSlyZXR1cm4gZD0kKCIjc2VydmljZUVtYWlsIikudmFsKCksZj0kKCIjc2VydmljZUFkZkVtYWlsIikudmFsKCksITF9KSk7ZW1haWxIYW5kbGVyLnN1YmplY3Q9aztlbWFpbEhhbmRsZXIuYm9keT1hO2VtYWlsSGFuZGxlci5zZW5kVG89ZDtlbWFpbEhhbmRsZXIuc2VuZEZyb209IiI7ZW1haWxIYW5kbGVyLm1haWxJRD1iLm1haWxJRDtlbWFpbEhhbmRsZXIuY2FsbGJhY2s9Yi5lbWFpbFNlbnQ7InVuZGVmaW5lZCIhPXR5cGVvZiBtYWlsVXNlckluZm8mJiJtZW51Q29udGFjdFVzIiE9ZW1haWxIYW5kbGVyLm1haWxJRCYmIm1lbnVTZXJ2aWNlIiE9ZW1haWxIYW5kbGVyLm1haWxJRCYmKGVtYWlsSGFuZGxlci51c2VyRW1haWw9bWFpbFVzZXJJbmZvLmVtYWlsLGVtYWlsSGFuZGxlci51c2VyRmlyc3ROYW1lPW1haWxVc2VySW5mby5maXJzdE5hbWUsZW1haWxIYW5kbGVyLnVzZXJMYXN0TmFtZT0KbWFpbFVzZXJJbmZvLmxhc3ROYW1lLGVtYWlsSGFuZGxlci51c2VyUGhvbmU9bWFpbFVzZXJJbmZvLnBob25lKTsidW5kZWZpbmVkIiE9dHlwZW9mIG1haWxKb2JPZmZlciYmKGVtYWlsSGFuZGxlci51c2VyQXR0YWNobWVudFBhdGg9bWFpbEpvYk9mZmVyLmpvYkZpbGUpO2VtYWlsSGFuZGxlci5zZW5kVG9BREZGb3JtYXQ9ZjstMSE9ZW1haWxIYW5kbGVyLmJvZHkudG9Mb3dlckNhc2UoKS5pbmRleE9mKCJ0ZXN0QGQyY21lZGlhLmNhIikmJiQoImlucHV0LnRlc3Rtb2RlIikudmFsKCIxIik7JChnKS5maW5kKCIjc2VydmljZUVtYWlsc1NlbGVjdCIpLmxlbmd0aD9lbWFpbEhhbmRsZXIuc2VuZFRvPSQoZykuZmluZCgiI3NlcnZpY2VFbWFpbHNTZWxlY3QiKS52YWwoKToiMSI9PSQoIiNpc01vYmlsZSIpLnZhbCgpJiYkKCIjc2VydmljZUVtYWlsc1NlbGVjdCIpLmxlbmd0aCYmKGVtYWlsSGFuZGxlci5zZW5kVG89JCgiI3NlcnZpY2VFbWFpbHNTZWxlY3QiKS52YWwoKSl9O2IuX3ZhbGlkYXRlRmllbGRzPQpmdW5jdGlvbihjKXt2YXIgZz0hMSxrPSQoIiNNaXNzaW5nVmFsaWRhdGlvbk1zZyIpLmh0bWwoKSxhPXRoaXMuanFTY29wZTtpZigiI3F1aWNrRW1haWxGb3JtIj09YSlyZXR1cm4hMDskLnZhbGlkaXR5LnN0YXJ0KCk7dmFyIGU9Ii5Jbm5lckJveExheWVyIjswPCQoIi5tYWluX2xlZnRfYm94IikubGVuZ3RoJiYoZT0iLm1haW5fbGVmdF9ib3giKTthPWIuanFTY29wZT9iLmpxU2NvcGU6ZTsxPiQoYSkubGVuZ3RoJiYoYT0iI25ld2RldGFpbHMiKTsxPiQoYSkubGVuZ3RoJiYoYT0iLm5ldy1kZXRhaWxzIik7MT4kKGEpLmxlbmd0aCYmKGE9ImJvZHkiKTsidW5kZWZpbmVkIiE9PXR5cGVvZiBkZWJ1ZyYmZGVidWcoYyk7Yz0kKGEpLmZpbmQoIi5yZXF1aXJlZCwudmFsaWRhdGUiKTskKGEpLmZpbmQoImlucHV0Om5vdCg6aGlkZGVuKSwgdGV4dGFyZWEiKS5ub25IdG1sKCk7Yy5maWx0ZXIoIi5yZXF1aXJlZCIpLmVhY2goZnVuY3Rpb24oKXskKHRoaXMpLnJlcXVpcmUoKS5ub25IdG1sKCl9KTsKYy5maWx0ZXIoIi5yZXF1aXJlZC1waG9uZSIpLmVhY2goZnVuY3Rpb24oKXskKHRoaXMpLnJlcXVpcmUoKS52YWxpZGF0ZVBob25lKCl9KTtjLmZpbHRlcigiLnBob25lOm5vdCgucmVxdWlyZWQtcGhvbmUpIikuZWFjaCgobCxuKT0+eyQobikudmFsaWRhdGVQaG9uZSgpfSk7ZT0kKCIjcGhvbmUxLCNwaG9uZTIsI3Bob25lMyIsYSkuZmlsdGVyKCI6dmlzaWJsZSIpO2lmKDA8ZS5sZW5ndGgpe3ZhciBkLGY7bGV0IGwsbjswPChlWzBdLnZhbHVlKyhudWxsIT0obD1udWxsPT0oZD1lWzFdKT92b2lkIDA6ZC52YWx1ZSk\/bDoiIikrKG51bGwhPShuPW51bGw9PShmPWVbMl0pP3ZvaWQgMDpmLnZhbHVlKT9uOiIiKSkubGVuZ3RoJiYkKGUpLnZhbGlkYXRlUGhvbmUoKX1jLmZpbHRlcigiLnppcCIpLmVhY2goZnVuY3Rpb24oKXsoJCh0aGlzKS5pcygiLnJlcXVpcmVkIil8fDAhPSQodGhpcykudmFsKCkubGVuZ3RoKSYmJCh0aGlzKS5yZXF1aXJlUG9zdGFsQ29kZSgpfSk7MT09JCgiLnZpbiIpLmxlbmd0aCYmCigkKCIudmluIikuaXMoIi5yZXF1aXJlZCIpJiYkKCIudmluIikucmVxdWlyZSgpLm5vbkh0bWwoKSwwPCQoIi52aW4iKS52YWwoKS5sZW5ndGgmJiQoIi52aW4iKS5taW5MZW5ndGgoMTcpKTsxPT0kKCIudmluRXgiKS5sZW5ndGgmJigkKCIudmluRXgiKS5pcygiLnJlcXVpcmVkIikmJiQoIi52aW5FeCIpLnJlcXVpcmUoKS5ub25IdG1sKCksMDwkKCIudmluRXgiKS52YWwoKS5sZW5ndGgmJiQoIi52aW5FeCIpLm1pbkxlbmd0aCgxNykpO2MuZmlsdGVyKCIuZW1haWwiKS5lYWNoKGZ1bmN0aW9uKCl7KCQodGhpcykuaXMoIi5yZXF1aXJlZCIpfHwwIT0kKHRoaXMpLnZhbCgpLmxlbmd0aCkmJiQodGhpcykudmFsaWRFbWFpbEFkZHJlc3MoKX0pOyQoYSkuZmluZCgiLnZhbGlkYXRlLWdyb3VwIikuZWFjaChmdW5jdGlvbigpe3ZhciBsPSQodGhpcykudmFsKCk7JChsLGEpLnZhbGlkQWxsb3JOb25lKCl9KTtjLmZpbHRlcigiLnVwbG9hZCIpLmVhY2goZnVuY3Rpb24oKXshJCh0aGlzKS5pcygiLnJlcXVpcmVkIikmJgowPT0kKHRoaXMpLnZhbCgpLmxlbmd0aHx8IiIhPSQodGhpcykudmFsKCl8fCgkKCIjdXBsb2FkU3RhdHVzIikuY3NzKCJjb2xvciIsInJlZCIpLCQoIiN1cGxvYWRTdGF0dXMiKS5odG1sKCQoIiNmaWxlVXBsb2FkUmVxdWVzdCIpLnZhbCgpKSwkKCIjdXBsb2FkU3RhdHVzIikuc2hvdygpKX0pO2Q9JC52YWxpZGl0eS5yZXBvcnQuZXJyb3JzOyQoIiNlbWFpbCIpLm1hdGNoKCJlbWFpbCIpOyQudmFsaWRpdHkucmVwb3J0LmVycm9ycz5kJiYoZj0kKCIjTWlzc2luZ1ZhbGlkYXRpb25Nc2ciKS50ZXh0KCkrIi48YnIvPiIrJCgiI2VtYWlsRXJyb3JNc2ciLCIjdXNlckluZm9Gb3JtIikudmFsKCkrIi4iLDA9PWQmJihmPSQoIiNlbWFpbEVycm9yTXNnIiwiI3VzZXJJbmZvRm9ybSIpLnZhbCgpKSwkKCIjTWlzc2luZ1ZhbGlkYXRpb25Nc2ciKS5odG1sKGYpKTsidW5kZWZpbmVkIiE9dHlwZW9mIG1haWxVc2VySW5mbyYmImZ1bmN0aW9uIj09dHlwZW9mIG1haWxVc2VySW5mby5hZGRlZFZhbGlkYXRpb24mJgptYWlsVXNlckluZm8uYWRkZWRWYWxpZGF0aW9uKGEpOyQudmFsaWRpdHkuZW5kKCkudmFsaWQ\/Zz0hMDooJCgiI01pc3NpbmdWYWxpZGF0aW9uTXNnIikuc2hvdygpLCQoIiNNaXNzaW5nVmFsaWRhdGlvbk1zZyIpLmNlbnRlcigpLCQoZG9jdW1lbnQpLm9uZSgibW91c2Vkb3duIixmdW5jdGlvbihsKXskLnZhbGlkaXR5LmNsZWFyKCk7JCgiI01pc3NpbmdWYWxpZGF0aW9uTXNnIikuaGlkZSgpOyQoIiNNaXNzaW5nVmFsaWRhdGlvbk1zZyIpLmh0bWwoayl9KSk7cmV0dXJuIGd9fTt2YXIgbWFpbFBhZ2U9bmV3IEdlbmVyaWNNYWlsOwokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpezA8JCgiI3RvcGlzbW9iaWxlIikubGVuZ3RoJiYxPCQoIiN0b3Bpc21vYmlsZSIpLnZhbCgpJiYobWFpbFBhZ2UuanFTY29wZT0iLm5ldy1kZXRhaWxzIik7JCgiI3NlbmRFbWFpbEZvcm0gYnV0dG9uIikub24oImNsaWNrIHRhcCIsbWFpbFBhZ2Uuc2F2ZSk7JCgiI3NlbmRFbWFpbEZvcm1TdWJtaXQiKS5vbigiY2xpY2sgdGFwIixtYWlsUGFnZS5zYXZlKTttYWlsUGFnZS5tYWlsSUQ9JCgiI3RleHRTYXZlTWFpbElEIikudmFsKCk7JC52YWxpZGl0eS5zZXR1cCh7b3V0cHV0TW9kZToic3VtbWFyeSIsc2Nyb2xsVG86ITF9KTtqUXVlcnkuZm4uY2VudGVyPWZ1bmN0aW9uKCl7JCgiaXNtb2JpbGUiKSYmMDwkKCIjc2VuZEVtYWlsRm9ybVN1Ym1pdCIpLmxlbmd0aD90aGlzLmNzcyh7cG9zaXRpb246ImFic29sdXRlIixsZWZ0OigkKHdpbmRvdykud2lkdGgoKS0kKCIjTWlzc2luZ1ZhbGlkYXRpb25Nc2ciKS5vdXRlcldpZHRoKCkpLzIsCnRvcDokKCIjc2VuZEVtYWlsRm9ybVN1Ym1pdCIpLnBvc2l0aW9uKCkudG9wLTEwfSk6dGhpcy5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsbGVmdDooJCh3aW5kb3cpLndpZHRoKCktJCgiI2NvbnRhaW5lciIpLm91dGVyV2lkdGgoKSkvMix0b3A6KCQod2luZG93KS5oZWlnaHQoKS0kKCIjY29udGFpbmVyIikub3V0ZXJIZWlnaHQoKSkvMn0pO3JldHVybiB0aGlzfTsidW5kZWZpbmVkIiE9dHlwZW9mIG1haWxQYWdlLm1haWxJRCYmZW1haWxIYW5kbGVyLmxvZ0Zvcm1SZXF1ZXN0KCJGb3JtTG9hZGVkIixtYWlsUGFnZS5tYWlsSUQpfSk7Ci8qKiAvbS9qcy9wb3B1cGl6ZXIuanMgKiovCnZhciBfX19kMmNfcG9wdXBpemVyanNfY19vbj0iMjAyNi0wMS0xMyAxNjozMDowNiI7J3VzZSBzdHJpY3QnO2lzU2NyYXRjaEFuZFNhdmU9InVuZGVmaW5lZCI9PXR5cGVvZiBpc1NjcmF0Y2hBbmRTYXZlPyIiOmlzU2NyYXRjaEFuZFNhdmU7cG9wdXBXaWRnZXRfcGFnZVZpZXdzSW5jcmVtZW50ZWQ9InVuZGVmaW5lZCI9PXR5cGVvZiBwb3B1cFdpZGdldF9wYWdlVmlld3NJbmNyZW1lbnRlZD8iIjpwb3B1cFdpZGdldF9wYWdlVmlld3NJbmNyZW1lbnRlZDtzaG93UG9wdXBXaWRnZXQ9ImZ1bmN0aW9uIiE9dHlwZW9mIHNob3dQb3B1cFdpZGdldD9mdW5jdGlvbigpe306c2hvd1BvcHVwV2lkZ2V0O2FjdGl2YXRlUG9wdXBCZWZvcmVMb2FkPSJmdW5jdGlvbiIhPXR5cGVvZiBhY3RpdmF0ZVBvcHVwQmVmb3JlTG9hZD9mdW5jdGlvbigpe306YWN0aXZhdGVQb3B1cEJlZm9yZUxvYWQ7CnZhciBwb3B1cElzU3VibWl0dGluZz0hMSxDUG9wdXBTdXBlcnZpc29yPWZ1bmN0aW9uKCl7dmFyIGM9dGhpcztjLm9ubG9hZFF1ZXVlPVtdO2MuaW5kZXg9MDtjLmlzQW5pbWF0aW5nPSExO2MucG9wdXBzPVtdO2MucmVnaXN0ZXI9ZnVuY3Rpb24oYSl7dmFyIGs9MDswPE51bWJlcihhLnNldHRpbmdzLnNob3dvbmxvYWQpJiYhMCE9PWEuc2V0dGluZ3Muc2hvd29ubG9hZCYmKGs9YS5zZXR0aW5ncy5zaG93b25sb2FkKTt2YXIgYj0xOzE8YS5zZXR0aW5ncy5wcmlvcml0eSYmKGI9YS5zZXR0aW5ncy5wcmlvcml0eSk7MSE9Q29va2llcy5nZXQoIm5vdXNlZGN0YSIpfHwidXNlZGNhcnMuaHRtbCIhPSQoIiNQQUdFSUQiKS52YWwoKSYmImNhcmRldGFpbC5odG1sIiE9JCgiI1BBR0VJRCIpLnZhbCgpP2Mub25sb2FkUXVldWUucHVzaCh7cG9wdXA6YSxkZWxheTprLHByaW9yaXR5OmJ9KTpjb25zb2xlLmxvZygiTm90IHNob3dpbmcgcG9wdXAgb25sb2FkLCBiZWNhdXNlIGl0cyBhIHVzZWQgcGFnZSBhbmQgdGhlIGNvb2tpZSBub3VzZWRjdGEgaXMgc2V0Iil9OwpjLnJlcG9zaXRpb249ZnVuY3Rpb24oKXtpZighKHBvcHVwaXplckFjdGl2ZSgpfHwidW5kZWZpbmVkIiE9dHlwZW9mIG1vZGVsQ29uZmlnJiZtb2RlbENvbmZpZy5pc0FjdGl2ZSYmbW9kZWxDb25maWcuaXNBY3RpdmUoKSkpcmV0dXJuICQoImJvZHkiKS5jc3MoIm92ZXJmbG93IiwiYXV0byIpLCExO2lmKGMuaXNBbmltYXRpbmcpcmV0dXJuITE7dmFyIGE9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cuaW5uZXJIZWlnaHQ\/d2luZG93LmlubmVySGVpZ2h0OiQod2luZG93KS5oZWlnaHQoKSxrPSQoZG9jdW1lbnQpLnNjcm9sbFRvcCgpLGI9L01vYmkvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk\/NToyMDskKCIucmV2ZWFsLW1vZGFsIikuZWFjaChmdW5jdGlvbihkLGYpe2Q9JCh0aGlzKTtpZigidmlzaWJsZSI9PWQuY3NzKCJ2aXNpYmlsaXR5Iikpe2Y9ZC5vZmZzZXQoKS50b3A7dmFyIGg9ZC5vdXRlckhlaWdodCgpLGw9ZitoO2lmKGE8aCtifHxuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC8oaVBob25lfGlQb2QpL2cpKXtpZigkKCJib2R5IikuY3NzKCJvdmVyZmxvdyIsCiJhdXRvIiksaz5sfHxrK2E8ZilmPWsrYixjLmlzQW5pbWF0aW5nPSEwLGQuYW5pbWF0ZSh7dG9wOmYrInB4In0sMjAwLGZ1bmN0aW9uKCl7Yy5pc0FuaW1hdGluZz0hMX0pfWVsc2UgZj1rKyhhLWgpLzIsZj1mPGI\/YjpmLGMuaXNBbmltYXRpbmc9ITAsZC5hbmltYXRlKHt0b3A6ZisicHgifSwyMDAsZnVuY3Rpb24oKXtjLmlzQW5pbWF0aW5nPSExfSl9fSl9O2Muc2hvdz1mdW5jdGlvbigpe2lmKCEoMDwkKCIjZGlzYWJsZVBvcHVwcyIpLmxlbmd0aCYmIjEiPT0kKCIjZGlzYWJsZVBvcHVwcyIpLnZhbCgpKSYmKGMub25sb2FkUXVldWUuc29ydChmdW5jdGlvbihhLGspe2lmKGEucHJpb3JpdHk+ay5wcmlvcml0eSlyZXR1cm4gMTtpZihhLnByaW9yaXR5PGsucHJpb3JpdHkpcmV0dXJuLTE7aWYoYS5wcmlvcml0eT09ay5wcmlvcml0eSlyZXR1cm4gYS5kZWxheTxrLmRlbGF5PzE6LTF9KSwoIkJVSUxEQU5EUFJJQ0UiIT1wYWdlfHwiLTEiIT13aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKCJzdGVwPXJlc3VtZSIpKSYmCjA8Yy5vbmxvYWRRdWV1ZS5sZW5ndGgpKXtmb3Ioa2V5IGluIGMub25sb2FkUXVldWUpaWYoMT09Yy5vbmxvYWRRdWV1ZVtrZXldLnBvcHVwLnNldHRpbmdzLmVuZFBvcHVwUXVldWUpcmV0dXJuIGMub25sb2FkUXVldWVba2V5XS5wb3B1cC5vcGVuKGMub25sb2FkUXVldWVba2V5XS5kZWxheSksITE7Zm9yKGtleSBpbiBjLm9ubG9hZFF1ZXVlKWMub25sb2FkUXVldWVba2V5XS5wb3B1cC5vcGVuKGMub25sb2FkUXVldWVba2V5XS5kZWxheSl9fTt2YXIgbT1mdW5jdGlvbigpe2lmKHBvcHVwaXplckFjdGl2ZSgpKXJldHVybiBzZXRUaW1lb3V0KG0sNTAwKSwhMTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aWYocG9wdXBpemVyQWN0aXZlKCkpcmV0dXJuIG0oKTskLnBvc3RNZXNzYWdlKCJjbG9zZVBvcHVwIiwiKiIsd2luZG93LnBhcmVudCl9LDFFMyl9O3NldFRpbWVvdXQoZnVuY3Rpb24oKXswPCQoIiNhdXRvYXViYWluZV9wb3B1cCIpLmxlbmd0aCYmImZhbHNlIiE9JCgiI2F1dG9hdWJhaW5lX3BvcHVwIikudmFsKCkmJgptKCl9LDVFMyl9LHBvcHVwU3VwZXJ2aXNvcj1uZXcgQ1BvcHVwU3VwZXJ2aXNvcixwb3B1cGl6ZXJBY3RpdmU9ZnVuY3Rpb24oKXtpZihwb3B1cGl6ZXJDb25maWcucG9wdXBPcGVuKXJldHVybiEwO3ZhciBjPSExOyQoIi5yZXZlYWwtbW9kYWwsIC5yZXZlYWwtbW9kZWwtZG8tbm90LXNob3ciKS5lYWNoKGZ1bmN0aW9uKCl7aWYoMSE9Yyl7dmFyIG09JCh0aGlzKTtpZighbS5pcygiOmhpZGRlbiIpKXN3aXRjaChtLmNzcygidmlzaWJpbGl0eSIpKXtjYXNlICJ1bmRlZmluZWQiOmNhc2UgInZpc2libGUiOmM9ITB9fX0pO2lmKCQoIi5wcF9vdmVybGF5IikuaXMoIjp2aXNpYmxlIil8fGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5tb2RhbC1vdmVybGF5IikpYz0hMDtyZXR1cm4gY30scG9wdXBpemVyQ29uZmlnPXt9OyQuZXh0ZW5kKCEwLHBvcHVwaXplckNvbmZpZyx7cG9wdXBPcGVuOiExfSk7CnZhciBwb3B1cGl6ZXI9ZnVuY3Rpb24oYyxtKXt2YXIgYT10aGlzLGs9ImF1dG8iO2M\/YS50YXJnZXQ9YzpjPWEudGFyZ2V0O2Euc2V0dGluZ3M9bTthLnNldFRyaWdnZXI9ZnVuY3Rpb24oYil7az0ic3RyaW5nIj09dHlwZW9mIGImJiJjbGljayI9PWIudG9Mb3dlckNhc2UoKT8iY2xpY2siOiJhdXRvIjthLnNldHRpbmdzLnRyaWdnZXI9aztyZXR1cm4gYX07YS5pbml0PWZ1bmN0aW9uKCl7dmFyIGI9ImZ1bmN0aW9uIj09dHlwZW9mIGEuc2V0dGluZ3Mub25CZWZvcmVJbml0aWFsaXplLGQ9ImZ1bmN0aW9uIj09dHlwZW9mIGEuc2V0dGluZ3Mub25BZnRlckluaXRpYWxpemU7aWYoYS5pc0NvbnRlbnRMb2FkZWQoKXx8IWImJiFkKXtpZihiKXt2YXIgZj1hLnNldHRpbmdzLm9uQmVmb3JlSW5pdGlhbGl6ZS5jYWxsKGMsYSk7aWYoMD09ZilyZXR1cm59Yj0hMTtpZihhLnNldHRpbmdzLnRocmVzaG9sZCYmYS5zZXR0aW5ncy5tYWlucG9wdXApe2Euc2V0dGluZ3Muc2hvd29ubG9hZD0hMTsKaWYoImZ1bmN0aW9uIj09dHlwZW9mIGEuc2V0dGluZ3Mub25BZnRlckluaXRpYWxpemUmJihiPSEwLGY9YS5zZXR0aW5ncy5vbkFmdGVySW5pdGlhbGl6ZS5jYWxsKGMsYSksMD09Zikpe2Euc2F2ZVNldHRpbmdzKCk7cmV0dXJufXRocmVzaG9sZEV4ZWMoYS5zZXR0aW5ncy50aHJlc2hvbGRWYWx1ZS8xMDAsYS5leGVjT3Blbil9aWYoYS5zZXR0aW5ncy5zY3JvbGx1cCYmYS5zZXR0aW5ncy5tYWlucG9wdXApe2Euc2V0dGluZ3Muc2hvd29ubG9hZD0hMTtpZihkJiYoYj0hMCxmPWEuc2V0dGluZ3Mub25BZnRlckluaXRpYWxpemUuY2FsbChjLGEpLDA9PWYpKXthLnNhdmVTZXR0aW5ncygpO3JldHVybn1zY3JvbGx1cEV4ZWMoYS5leGVjT3Blbil9Yy5hZGRDbGFzcygicmV2ZWFsLW1vZGFsIik7InVuZGVmaW5lZCIhPXR5cGVvZiBhLnNldHRpbmdzLmFkZGVkQ2xhc3NlcyYmMDxhLnNldHRpbmdzLmFkZGVkQ2xhc3Nlcy5sZW5ndGgmJmMuYWRkQ2xhc3MoYS5zZXR0aW5ncy5hZGRlZENsYXNzZXMpOwokKCJmb3JtIixjKS5vbigic3VibWl0IixhLnN1Ym1pdCk7Zj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTthLnNldHRpbmdzLmFuaW1hdGlvbiYmZi5nZXRDb250ZXh0JiYoInVuZGVmaW5lZCIhPXR5cGVvZiBhLnNldHRpbmdzLmFuaW1hdGlvbi5lZmZlY3QmJihhLnNldHRpbmdzLnJldmVhbC5hbmltYXRpb249ImV4dGVybmFsQW5pbWF0aW9uIixjLmFkZENsYXNzKGEuc2V0dGluZ3MuYW5pbWF0aW9uLmVmZmVjdCkpLCJ1bmRlZmluZWQiIT10eXBlb2YgYS5zZXR0aW5ncy5hbmltYXRpb24uc3BlZWQmJmMuYWRkQ2xhc3MoYS5zZXR0aW5ncy5hbmltYXRpb24uc3BlZWQpKTthLnNldHRpbmdzLmluaXRpYWxpemVkPSEwO2MudHJpZ2dlcigicG9wdXBpemVyLmluaXRpYWxpemVkIixhKTtpZihkJiYhYiYmKGY9YS5zZXR0aW5ncy5vbkFmdGVySW5pdGlhbGl6ZS5jYWxsKGMsYSksMD09Zikpe2Euc2F2ZVNldHRpbmdzKCk7cmV0dXJufWEuc2F2ZVNldHRpbmdzKCk7ZD0kKCIjaGlkZGVuU2tpcE9ubG9hZFByaW50c2NyZWVuIik7CmlmKDA8ZC5sZW5ndGgmJiJET19TS0lQX1BPUFVQIj09ZC52YWwoKSlyZXR1cm4hMTshYS5zZXR0aW5ncy5zaG93b25sb2FkfHxudWxsIT1Db29raWVzLmdldCgicG9wdXBGb3JtRmlsbGVkIil8fG51bGwhPUNvb2tpZXMuZ2V0KGEuc2V0dGluZ3MuY29va2llTmFtZSl8fDEhPWEuc2V0dGluZ3MuY2xvc2VCdXR0b24mJjAhPWEuc2V0dGluZ3MuY2xvc2VCdXR0b258fCgtMSE9d2luZG93LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3JlcXVlc3QvIil8fC0xIT13aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZGVtYW5kZXMvIikpJiYtMT09YS5zZXR0aW5ncy5uYW1lLmluZGV4T2YoImltYWdlUG9wdXAiKXx8cG9wdXBTdXBlcnZpc29yLnJlZ2lzdGVyKGEpOyQoZG9jdW1lbnQpLm9mZigiY2xpY2siLCIuIittLnJldmVhbC5kaXNtaXNzbW9kYWxjbGFzcykub24oImNsaWNrIiwiLiIrbS5yZXZlYWwuZGlzbWlzc21vZGFsY2xhc3MsZnVuY3Rpb24oaCl7Yy50cmlnZ2VyKCJwb3B1cGl6ZXIuY2xvc2UiLApjKX0pOyQoZG9jdW1lbnQpLm9mZigia2V5dXAiKS5vbigia2V5dXAiLGZ1bmN0aW9uKGgpezI3PT09aC53aGljaCYmYy50cmlnZ2VyKCJwb3B1cGl6ZXIuY2xvc2UiLGMpfSk7InVuZGVmaW5lZCIhPT10eXBlb2YgYS5zZXR0aW5ncy5mb3JtLmZyb21BQSYmKGVtYWlsSGFuZGxlci5mcm9tQUE9YS5zZXR0aW5ncy5mb3JtLmZyb21BQSk7cmV0dXJuIGF9YS5sb2FkKGEuaW5pdCl9O2Eub25PcGVuPWZ1bmN0aW9uKCl7YS5pc0NvbnRlbnRMb2FkZWQoKXx8YS5sb2FkKCk7aWYoImF1dG8iPT1rJiZudWxsIT1Db29raWVzLmdldChhLnNldHRpbmdzLmNvb2tpZU5hbWUpKXJldHVybiExO2MuZmluZCgiLnBvcHVwaXplckJvZHkiKS5zaG93KCk7aWYobnVsbCE9Q29va2llcy5nZXQoInBvcHVwRm9ybUZpbGxlZCIpfHxudWxsIT1Db29raWVzLmdldChhLnNldHRpbmdzLmNvb2tpZU5hbWUpKWMuZmluZCgiLmNsb3NlLXJldmVhbC1tb2RhbCIpLnJlbW92ZUNsYXNzKCJtb2RhbC1jbG9zZS1oaWRlIiksCmMuZmluZCgiLmNsb3NlLXJldmVhbC1tb2RhbCIpLnNob3coKTthLmNyZWF0ZUNvbmZpcm1Gb3JtKCk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGEuc2V0dGluZ3Mub25CZWZvcmVPcGVuJiYwPT1hLnNldHRpbmdzLm9uQmVmb3JlT3Blbi5jYWxsKGMsYSkpcmV0dXJuITE7dmFyIGI9Ii9wb3B1cC0iK2EudGFyZ2V0LmZpbmQoIi5lbWFpbFN1YmplY3QiKS50ZXh0KCkucmVwbGFjZSgvW1xuXHJdL2csIiAiKTthLnRhcmdldC5maW5kKCIjaW1hZ2VQb3B1cExlYWRUeXBlIikubGVuZ3RoJiYoYj0iL3BvcHVwLSIrYS50YXJnZXQuZmluZCgiI2ltYWdlUG9wdXBMZWFkVHlwZSIpLmF0dHIoImRhdGEtdHJhbnNsYXRlZCIpLnJlcGxhY2UoL1tcblxyXS9nLCIgIikpO2EudGFyZ2V0LmZpbmQoIiNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciIpLmxlbmd0aCYmKGI9JCgiYm9keSIpLmhhc0NsYXNzKCJGUkVOQ0giKT8iL25ldWZzL2NhbGN1bGF0cmljZS1wcmV0LWF1dG8tcG9wdXAuaHRtbCI6Ii9uZXcvY2FyLWxvYW4tY2FsY3VsYXRvci1wb3B1cC5odG1sIik7CmdhUGFnZVZpZXcoYik7Z2E0UGFnZVZpZXcoYik7YS5sb2dFdmVudCgicG9wdXAub3BlbiIpOyJsaXZlIj09JCgiI3RvcGRlcGxveW1lbnR0eXBlIikudmFsKCkmJmdhVHJhY2soImMuX3RyYWNrRXZlbnQiLCJQb3B1cC1MYXVuY2hlZCIsYS5zZXR0aW5ncy5uYW1lLHdpbmRvdy5sb2NhdGlvbi5ocmVmLDEpO2Euc2V0dGluZ3MuY291bnRkb3duJiZhLmluaXRDb3VudGRvd24oKTtjLmRhdGEoIm9wZW4iLCEwKTtwb3B1cGl6ZXJDb25maWcucG9wdXBPcGVuPSEwOyJvbk9wZW4iPT1hLnNldHRpbmdzLmNvb2tpZUNyZWF0ZSYmYS5zZXRDb29raWUoKTtiPWMuZmluZCgiZm9ybSIpLmZpcnN0KCk7Yi5maW5kKCdpbnB1dCBbdHlwZT0idGV4dCJdJykuZWFjaChmdW5jdGlvbigpeyQodGhpcykub2ZmKCJmb2N1cyBibHVyIGNoYW5nZSIpLmNzcygiY29sb3IiLCIjMDAwIik7JCh0aGlzKS5hdHRyKCJwbGFjZWhvbGRlciIsJCh0aGlzKS5hdHRyKCJhbHQiKSl9KTt2YXIgZD1uZXcgRm9ybTtkLm1hc2tQaG9uZShjLmZpbmQoImZvcm0iKS5zZWxlY3RvcisKIiBpbnB1dC5waG9uZSIpO2QubWFza1Bob25lKGMuZmluZCgiZm9ybSIpLnNlbGVjdG9yKyIgaW5wdXQubW9iaWxlIik7MDxiLmZpbmQoIi5waG9uZS5yZXF1aXJlZCIpLmxlbmd0aD9lbWFpbEhhbmRsZXIucGhvbmVNYW5kYXRvcnk9MTplbWFpbEhhbmRsZXIucGhvbmVNYW5kYXRvcnk9MDthLnNldHRpbmdzLmZvcm0uZW1haWxpZCYmZW1haWxIYW5kbGVyLmxvZ0Zvcm1SZXF1ZXN0KCJGb3JtTG9hZGVkIixhLnNldHRpbmdzLmZvcm0uZW1haWxpZCxhLnNldHRpbmdzLmZvcm0ub2ZmZXJ0eXBlKTthLnNldHRpbmdzLnJldmVhbC5jbG9zZWQ9YS5vbkNsb3NlO2MucmV2ZWFsKGEuc2V0dGluZ3MucmV2ZWFsKTskKCIjZmxvYXRQcm9tb1RvcEJ0bkNvbnRhaW5lciIpLmhpZGUoKTskKCIjY29udGFpbmVyRmxCIikuaGlkZSgpOyQoIiN0b2FzdC1jb250YWluZXIiKS5oaWRlKCk7JCgiI2FsZXJ0TXNnQ29udGFpbmVyIikuaGlkZSgpO2Euc2V0dGluZ3MuZm9ybS5PS0J1dHRvbkNsYXNzJiYoYj0KYS5zZXR0aW5ncy5mb3JtLk9LQnV0dG9uQ2xhc3MsIi4iPT1iWzBdJiYoYj1iLnN1YnN0cmluZygxKSksJCgiLiIrYixjKS5vZmYoImNsaWNrIikub24oImNsaWNrIixhLnN1Ym1pdCkpO2Euc2V0dGluZ3MuZm9ybS5DYW5jZWxCdXR0b25DbGFzcyYmKGI9YS5zZXR0aW5ncy5mb3JtLkNhbmNlbEJ1dHRvbkNsYXNzLCIuIj09YlswXSYmKGI9Yi5zdWJzdHJpbmcoMSkpLCQoIi4iK2IsYykub2ZmKCJjbGljayIpLm9uKCJjbGljayIsYS5jYW5jZWwpKTtjLnRyaWdnZXIoInBvcHVwaXplci5vbk9wZW4iLGEpfTthLm9uQ2xvc2U9ZnVuY3Rpb24oKXtjLmRhdGEoIm9wZW4iLCExKTtwb3B1cGl6ZXJDb25maWcucG9wdXBPcGVuPSExO2Euc2V0dGluZ3Muc3VibWl0dGVkfHxhLmxvZ0V2ZW50KCJwb3B1cC5jYW5jZWwiKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7JCgiI3RvYXN0LWNvbnRhaW5lciIpLnNob3coKX0sNTAwKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7JCgiLnJldmVhbC1tb2RhbC1iZyIpLmxlbmd0aCYmCiQoIi5yZXZlYWwtbW9kYWwtYmciKS5yZW1vdmUoKX0sMUUzKTtjLnRyaWdnZXIoInBvcHVwaXplci5vbkNsb3NlIixhKTsiZnVuY3Rpb24iPT10eXBlb2YgYS5zZXR0aW5ncy5vbkNsb3NlJiZhLnNldHRpbmdzLm9uQ2xvc2UuY2FsbChjLGEpfTthLnN1Ym1pdD1mdW5jdGlvbigpe2lmKHBvcHVwSXNTdWJtaXR0aW5nKXJldHVybiExO3BvcHVwSXNTdWJtaXR0aW5nPSEwO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtwb3B1cElzU3VibWl0dGluZz0hMX0sM0UzKTt2YXIgYj1jLmZpbmQoImZvcm0iKS5maXJzdCgpLGQ9W10sZj0iIixoPSIiLGw9W10scD1bXSxnPSEwLHQ9IiIsej0iIixBPSIiO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBhLnNldHRpbmdzLm9uQmVmb3JlVmFsaWRhdGlvbilzd2l0Y2goYS5zZXR0aW5ncy5vbkJlZm9yZVZhbGlkYXRpb24uY2FsbChiLGMsYSkpe2Nhc2UgITE6Y2FzZSAwOnJldHVybiBwb3B1cElzU3VibWl0dGluZz0hMTtjYXNlIC0xOmc9ITF9aWYoZyl7JC52YWxpZGl0eS5zZXR1cCh7b3V0cHV0TW9kZToicG9wdXAiLApzY3JvbGxUbzohMX0pLnN0YXJ0KCk7Yi5maW5kKCJpbnB1dDpub3QoOmhpZGRlbiksIHRleHRhcmVhIikubm9uSHRtbCgpO2IuZmluZCgiaW5wdXQucmVxdWlyZWQsIHNlbGVjdC5yZXF1aXJlZCwgdGV4dGFyZWEucmVxdWlyZWQiKS5yZXF1aXJlKCk7dmFyIHY9ITEsQj0hMSx3PSExO2IuZmluZCgiaW5wdXQiKS5maWx0ZXIoIi5yZXFSYWRpbyIpLnJhZGlvT3B0aW9uQ2hvc2VuKCk7Yi5maW5kKCJpbnB1dCIpLmVhY2goZnVuY3Rpb24oKXt2YXIgZT0kKHRoaXMpO2UuaGFzQ2xhc3MoImVtYWlsIikmJihlLmhhc0NsYXNzKCJyZXF1aXJlZCIpfHwwPGUudmFsKCkubGVuZ3RoKSYmKHc9ITApO2lmKGUuaGFzQ2xhc3MoInBob25lIil8fGUuaGFzQ2xhc3MoIm1vYmlsZSIpKWlmKEI9ITAsZS5oYXNDbGFzcygicmVxdWlyZWQiKXx8MDxlLnZhbCgpLmxlbmd0aCl2PSEwfSk7MD09diYmMD09dyYmKEI\/dj0hMDp3PSEwKTtiLmZpbmQoImlucHV0IikuZWFjaChmdW5jdGlvbigpe3ZhciBlPSQodGhpcyk7CmUuaGFzQ2xhc3MoImVtYWlsIikmJmUudmFsaWRFbWFpbEFkZHJlc3MoKTtlLmhhc0NsYXNzKCJwaG9uZSIpJiZlLnZhbGlkYXRlUGhvbmUoKTtlLmhhc0NsYXNzKCJtb2JpbGUiKSYmZS52YWxpZGF0ZU1vYmlsZSgpfSk7MT5jLmZpbmQoIi5NaXNzaW5nVmFsaWRhdGlvbk1zZyIpLmxlbmd0aCYmYy5hcHBlbmQoJzxkaXYgY2xhc3M9Ik1pc3NpbmdWYWxpZGF0aW9uTXNnIj48L2Rpdj4nKTtpZighJC52YWxpZGl0eS5lbmQoKS52YWxpZClyZXR1cm4gJCgiLk1pc3NpbmdWYWxpZGF0aW9uTXNnIixjKS5zaG93KCksJChkb2N1bWVudCkub24oIm1vdXNlZG93biIsZnVuY3Rpb24oZSl7JCgiLk1pc3NpbmdWYWxpZGF0aW9uTXNnIixjKS5oaWRlKCk7JCh0aGlzKS5vZmYoZSl9KSxhLmxvZ0V2ZW50KCJwb3B1cC52YWxpZGF0aW9uRmFpbGVkIikscG9wdXBJc1N1Ym1pdHRpbmc9ITF9aWYoImZ1bmN0aW9uIj09dHlwZW9mIGEuc2V0dGluZ3Mub25CZWZvcmVzdWJtaXQpe2c9ITA7dHJ5e2c9YS5zZXR0aW5ncy5vbkJlZm9yZXN1Ym1pdC5jYWxsKGMsCmEpfWNhdGNoKGUpe2NvbnNvbGUubG9nKCJPbiBiZWZvcmUgc3VibWl0IGZhaWxlZCwgcmV0dXJuaW5nIHRydWUuIixlKX1pZigwPT1nKXJldHVybiBhLnNldHRpbmdzLmNsb3NlT25TdWJtaXQmJmEuY2xvc2UoKSwhMX1hLmxvZ0V2ZW50KCJwb3B1cC5zdWJtaXQiKTtiLmZpbmQoImlucHV0IikuZWFjaChmdW5jdGlvbigpe3ZhciBlPSQodGhpcyk7KGUuaGFzQ2xhc3MoImVtYWlsIil8fCJlbWFpbCI9PT1lLmF0dHIoInR5cGUiKSkmJmQucHVzaChlLnZhbCgpKTtlLmhhc0NsYXNzKCJwb3N0YWwiKSYmKGY9ZS52YWwoKSk7ZS5oYXNDbGFzcygidHJhZGVpbiIpJiYoaD1lLnZhbCgpKTsoZS5oYXNDbGFzcygicGhvbmUiKXx8ZS5oYXNDbGFzcygibW9iaWxlIil8fCJ0ZWwiPT09ZS5hdHRyKCJ0eXBlIikpJiZwLnB1c2goZS52YWwoKSk7InVuZGVmaW5lZCI9PXR5cGVvZiBlLmF0dHIoIm5hbWUiKSYmZS5hdHRyKCJuYW1lIiwiIik7KGUuaGFzQ2xhc3MoIm5hbWUiKXx8Im5hbWUiPT1lLmF0dHIoIm5hbWUiKS50b0xvd2VyQ2FzZSgpKSYmCmwucHVzaChlLnZhbCgpKTsoZS5oYXNDbGFzcygiZmlyc3RuYW1lIil8fCJmaXJzdG5hbWUiPT1lLmF0dHIoIm5hbWUiKS50b0xvd2VyQ2FzZSgpKSYmbC51bnNoaWZ0KGUudmFsKCkpOyhlLmhhc0NsYXNzKCJsYXN0bmFtZSIpfHwibGFzdG5hbWUiPT1lLmF0dHIoIm5hbWUiKS50b0xvd2VyQ2FzZSgpKSYmbC5wdXNoKGUudmFsKCkpO2lmKGUuaGFzQ2xhc3MoImNvbW1lbnQiKXx8ImNvbW1lbnQiPT1lLmF0dHIoIm5hbWUiKS50b0xvd2VyQ2FzZSgpKXQ9ZS52YWwoKTtpZihlLmhhc0NsYXNzKCJhZGRyZXNzIil8fCJhZGRyZXNzIj09ZS5hdHRyKCJuYW1lIikudG9Mb3dlckNhc2UoKSl6PWUudmFsKCk7aWYoZS5oYXNDbGFzcygiYmlydGhkYXRlIil8fCJiaXJ0aGRhdGUiPT1lLmF0dHIoIm5hbWUiKS50b0xvd2VyQ2FzZSgpKUE9ZS52YWwoKX0pO2c9Yi5zZXJpYWxpemVBcnJheSgpO3ZhciB4PSQoIi5lbWFpbEJvZHkiLGMpLmh0bWwoKSsiIix1PSQoIi5lbWFpbFN1YmplY3QiLGMpLmh0bWwoKSsKIiI7IlByaWNlVmVoaWNsZSI9PWEuc2V0dGluZ3MuZm9ybS5lbWFpbGlkJiYwPT1iLmZpbmQoIltuYW1lPW5vQ0JCXSIpLnZhbCgpJiYiU01TIj09Yi5maW5kKCIjdHJhZGVJbkJhclNtc09yRW1haWxTbXM6Y2hlY2tlZCIpLnZhbCgpJiYodSs9IiAoU01TKSIpO3ZhciBxPVtdO1tdLnB1c2guYXBwbHkocSxnKTtbXS5wdXNoLmFwcGx5KHEsYS5nbG9iYWxSZXBsYWNlbWVudHMoKSk7JC5lYWNoKHEsZnVuY3Rpb24oKXt2YXIgZT1uZXcgUmVnRXhwKCJ7XFwkIit0aGlzLm5hbWUudG9VcHBlckNhc2UoKSsifSIsImciKSxuPXRoaXMudmFsdWU7IlNFQVJDSEVEVkVISUNMRSI9PXRoaXMubmFtZS50b1VwcGVyQ2FzZSgpJiYobj0iPHNwYW4gaWQ9J3BoU0VBUkNIVkVISUNMRSc+IituKyI8L3NwYW4+Iik7eD14LnJlcGxhY2UoZSxuKTt1PXUucmVwbGFjZShlLHRoaXMudmFsdWUpfSk7Zz17c2VuZFRvOmEuc2V0dGluZ3MuZm9ybS5zZW5kVG8sc2VuZFRvQURGRm9ybWF0OmEuc2V0dGluZ3MuZm9ybS5zZW5kVG9BREYsCmNvbmRpdGlvbjphLnNldHRpbmdzLnZlaGljbGVTdGF0ZSxtYWlsSUQ6YS5zZXR0aW5ncy5mb3JtLmVtYWlsaWQsc3ViamVjdDp1LGJvZHk6eCx1c2VyUG9zdGFsOmYsYWRkcmVzczp6LGJpcnRoZGF0ZTpBLHRyYWRlaW46aCxwb3B1cGRpdjoiIix1c2VyRW1haWw6ZC5qb2luKCI7IiksdXNlck5hbWU6bC5qb2luKCIgIiksdXNlclBob25lOnAuam9pbigiLCIpLHNtczphLnNldHRpbmdzLmZvcm0uc21zLHBvcHVwT2ZmZXJUeXBlOmEuc2V0dGluZ3MuZm9ybS5vZmZlcnR5cGUsY29tbWVudHM6dH07JC5leHRlbmQoITAsZW1haWxIYW5kbGVyLGcpOyJzdHJpbmciPT10eXBlb2YgZW1haWxIYW5kbGVyLnVzZXJOYW1lJiYoZz1lbWFpbEhhbmRsZXIudXNlck5hbWUuc3BsaXQoIiAiKSxlbWFpbEhhbmRsZXIudXNlckZpcnN0TmFtZT1nLnNoaWZ0KCksZW1haWxIYW5kbGVyLnVzZXJMYXN0TmFtZT1nLmpvaW4oIiAiKSk7ZW1haWxIYW5kbGVyLnBvcHVwZGl2PWEudGFyZ2V0LmF0dHIoImlkIik7CmlmKGEuc2V0dGluZ3MuZmlsbGZsYWcpdmFyIEM9ZnVuY3Rpb24oKXtDb29raWVzLnNldCgicG9wdXBGb3JtRmlsbGVkIiwiMSIsOTAsIi8iKTtjLnRyaWdnZXIoInBvcHVwaXplci5mb3JtRmlsbGVkIixhKX07aWYoImZ1bmN0aW9uIj09dHlwZW9mIGVtYWlsSGFuZGxlci5jYWxsYmFjayYmMDxlbWFpbEhhbmRsZXIuY2FsbGJhY2subGVuZ3RoKXZhciBEPWVtYWlsSGFuZGxlci5jYWxsYmFjazt2YXIgRT1mdW5jdGlvbigpe3JldHVybiEwfTsiZnVuY3Rpb24iPT10eXBlb2YgYS5zZXR0aW5ncy5vbkFmdGVyc3VibWl0JiYoRT1hLnNldHRpbmdzLm9uQWZ0ZXJzdWJtaXQpO2VtYWlsSGFuZGxlci5vbkJlZm9yZVNob3dDb25zZW50PWZ1bmN0aW9uKCl7Yy5jc3Moe29wYWNpdHk6MSx2aXNpYmlsaXR5OiJoaWRkZW4ifSk7ZW1haWxIYW5kbGVyLm9uQmVmb3JlU2hvd0NvbnNlbnQ9ITF9O2VtYWlsSGFuZGxlci5vbkFmdGVyQ29uc2VudD1mdW5jdGlvbihlKXthLnNldHRpbmdzLmNsb3NlT25TdWJtaXQ\/CmEuY2xvc2UoKTpjLnJldmVhbChhLnNldHRpbmdzLnJldmVhbCk7ZW1haWxIYW5kbGVyLm9uQmVmb3JlU2hvd0NvbnNlbnQ9ITE7ZW1haWxIYW5kbGVyLm9uQWZ0ZXJDb25zZW50PSExfTtlbWFpbEhhbmRsZXIub25EdXBsaWNhdGVTZW5kPWZ1bmN0aW9uKCl7YS5zZXR0aW5ncy5jbG9zZU9uU3VibWl0JiZhLmNsb3NlKCk7ZW1haWxIYW5kbGVyLnJlc2V0Q2FsbGJhY2tzKCl9O2VtYWlsSGFuZGxlci5jYWxsYmFjaz1mdW5jdGlvbihlKXt2YXIgbj0hMTthLnNldHRpbmdzLmZvcm0uc2hvd0VtYWlsQ29uZmlybWF0aW9uJiYobj1nZXRNYWlsU2VudEhhbmRsZXIoIl8iK2MuYXR0cigiaWQiKSksbi50aW1lb3V0Q2FsbGJhY2s9ZnVuY3Rpb24oKXtiLnRyaWdnZXIoInJlc2V0Iil9KTt2YXIgRj1hLnNldHRpbmdzLmNsb3NlT25TdWJtaXQ7aWYoZSlhLmxvZ0V2ZW50KCJwb3B1cC5sZWFkX3NlbnQiKSwwPT1FLmNhbGwoYyxhKSYmKEY9ITEpLCJmdW5jdGlvbiI9PXR5cGVvZiBDJiZDKCksImZ1bmN0aW9uIj09CnR5cGVvZiBEJiZEKCksIm9uU3VibWl0Ij09YS5zZXR0aW5ncy5jb29raWVDcmVhdGUmJmEuc2V0Q29va2llKCksRiYmImhpZGRlbiIhPWMuY3NzKCJ2aXNpYmlsaXR5IikmJmEuY2xvc2UoIkNPTlNFTlQiKSxhLnNldHRpbmdzLm1haW5wb3B1cCYmKGVtYWlsSGFuZGxlci5tYWluUHJvbW89ITApLG4\/bi5zaG93U3VjY2VzcygpOjA8JCgiZm9ybSMiK2MuYXR0cigiaWQiKSsiX2NvbmZpcm0iKS5sZW5ndGgmJiQoImZvcm0jIitjLmF0dHIoImlkIikrIl9jb25maXJtIikudHJpZ2dlcigic3VibWl0Iik7ZWxzZXtufHwobj1nZXRNYWlsU2VudEhhbmRsZXIoKSk7dHJ5e24uc2hvd0ZhaWwoKX1jYXRjaChHKXt9fXNldFRpbWVvdXQoZW1haWxIYW5kbGVyLnJlc2V0Q2FsbGJhY2tzKCksMUUzKX07YS5zYXZlU2V0dGluZ3Moe3N1Ym1pdHRlZDohMH0pO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBhLnNldHRpbmdzLm9uQmVmb3JlU2VuZE1haWwmJjA9PWEuc2V0dGluZ3Mub25CZWZvcmVTZW5kTWFpbC5jYWxsKGMsCmEpKXJldHVybiExO2Euc2V0RGVmYXVsdEFERigpOyJmdW5jdGlvbiI9PXR5cGVvZiBhLnNldHRpbmdzLm9uQURGJiYoZz1hLnNldHRpbmdzLm9uQURGLmNhbGwoYyxhKSwib2JqZWN0Ij09dHlwZW9mIGcmJiQuZXh0ZW5kKGEuc2V0dGluZ3MuQURGLGcpKTtnPSJtYWtlIG1vZGVsIHllYXIgc3RvY2tOdW1iZXIgdHJpbSB2aW4gcHJpY2UgY2FyaWQiLnNwbGl0KCIgIik7cT1hLnNldHRpbmdzLkFERjtmb3IodmFyIHk9MDt5PGcubGVuZ3RoO3krKyl7dmFyIHI9Z1t5XTtlbWFpbEhhbmRsZXJbcl09IiIhPWVtYWlsSGFuZGxlcltyXT9lbWFpbEhhbmRsZXJbcl06cVtyXT9xW3JdOmVtYWlsSGFuZGxlcltyXX1lbWFpbEhhbmRsZXIuYm9keT1hLmNsZWFuQmxhbmtWYXJpYWJsZXMoZW1haWxIYW5kbGVyLmJvZHkpO2Euc2hvd1B1cmNoYXNlSW50ZW50UG9wdXAoKXx8ZW1haWxIYW5kbGVyLnNlbmRNYWlsKGEuc2V0dGluZ3MuYnlwYXNzQ29uc2VudCk7cmV0dXJuITB9O2Euc2hvd1B1cmNoYXNlSW50ZW50UG9wdXA9CmZ1bmN0aW9uKCl7aWYoYS5zZXR0aW5ncy5wdXJjaGFzZUludGVudFBvcHVwKXt2YXIgYj0kKCIjaW50ZXJzdGl0aWFsVmVoaWNsZUludGVudCIpO2lmKDE+Yi5sZW5ndGh8fG51bGwhPUNvb2tpZXMuZ2V0KCJwdXJjaGFzZV9pbnRlbnQiKSlyZXR1cm4hMTtnYVRyYWNrKCJfdHJhY2tFdmVudCIsIkludGVudGlvbnMgZCdhY2hhdCIsIlBvcHVwIHZ1cyIsYS5zZXR0aW5ncy5nb29nbGVUcmFja2luZy5sYWJlbCwxKTtjLmNzcyh7b3BhY2l0eToxLHZpc2liaWxpdHk6ImhpZGRlbiJ9KTtiLmZpbmQoImZvcm0iKS5vbigic3VibWl0IixmdW5jdGlvbigpe3ZhciBkPSQodGhpcyksZj1kLmZpbmQoImlucHV0Iik7JC52YWxpZGl0eS5zZXR1cCh7b3V0cHV0TW9kZToicG9wdXAifSkuc3RhcnQoKTtkLmZpbmQoImlucHV0Om5vdCg6aGlkZGVuKSwgdGV4dGFyZWEiKS5ub25IdG1sKCk7Zi5maWx0ZXIoIi5yZXF1aXJlZCIpLnJlcXVpcmUoKS5ub25IdG1sKCk7Zi5maWx0ZXIoIi5yZXFSYWRpbyIpLnJhZGlvT3B0aW9uQ2hvc2VuKCk7CmlmKCQudmFsaWRpdHkuZW5kKCkudmFsaWQpe2IudHJpZ2dlcigicmV2ZWFsOmNsb3NlIik7dmFyIGg9e3B1cmNoYXNlX2ludGVudDohMH07ZC5zZXJpYWxpemVBcnJheSgpLm1hcChmdW5jdGlvbihsLHAsZyl7aFtsLm5hbWVdPWwudmFsdWV9KTtDb29raWVzLnNldCgicHVyY2hhc2VfaW50ZW50IixoLnB1cmNoYXNlX2ludGVudCwzMCwiLyIpO2dhVHJhY2soIl90cmFja0V2ZW50IiwiSW50ZW50aW9ucyBkJ2FjaGF0IiwiUmVwb25zZXMiLGgucHVyY2hhc2VfaW50ZW50LDEpO2VtYWlsSGFuZGxlci5zZW5kTWFpbChhLnNldHRpbmdzLmJ5cGFzc0NvbnNlbnQpfXJldHVybiExfSk7Yi5yZXZlYWwoe2Nsb3NlX29uX2JhY2tncm91bmRfY2xpY2s6ITEsZGlzbWlzc19tb2RhbF9jbGFzczoiX19OVUxMX18ifSk7cmV0dXJuITB9cmV0dXJuITF9O2EuZ2xvYmFsUmVwbGFjZW1lbnRzPWZ1bmN0aW9uKCl7dmFyIGI9W107JCgiaW5wdXRbdHlwZT1oaWRkZW5dIikuZWFjaChmdW5jdGlvbigpe3ZhciBnPQokKHRoaXMpLmF0dHIoIm5hbWUiKTtnPSJ1bmRlZmluZWQiIT10eXBlb2YgZz9nOiQodGhpcykuYXR0cigiaWQiKTtpZighZylyZXR1cm4hMDt2YXIgdD0hMTsiZW1haWxidWlsZGFuZHByaWNlIj09Zy50b0xvd2VyQ2FzZSgpJiYiIj09JCh0aGlzKS52YWwoKS5yZXBsYWNlKC8gL2csIiIpJiYodD0hMCk7dHx8KCJicmFuZCI9PWcudG9Mb3dlckNhc2UoKSYmYi5wdXNoKHtuYW1lOiJtYWtlIix2YWx1ZTokKHRoaXMpLnZhbCgpfSksYi5wdXNoKHtuYW1lOmcsdmFsdWU6JCh0aGlzKS52YWwoKX0pKX0pO3ZhciBkPSIiO2lmKDA8JCgiI2xhc3R2aWV3ZWRtYWtlIikubGVuZ3RoJiYwPCQoIiNsYXN0dmlld2VkbWFrZSIpLnZhbCgpLmxlbmd0aCl7dmFyIGY9JCgiI2xhc3R2aWV3ZWRzdG9ja251bWJlciIpLnZhbCgpO2Q9JCgiI2xhc3R2aWV3ZWRtYWtlIikudmFsKCk7dmFyIGg9JCgiI2xhc3R2aWV3ZWRtb2RlbCIpLnZhbCgpLGw9JCgiI2xhc3R2aWV3ZWR5ZWFyIikudmFsKCkscD0kKCIjbGFzdHZpZXdlZHRyaW0iKS52YWwoKXx8CiIiO2Q9ZCsiICIraCsiICIrbCsocC5sZW5ndGg\/IiAiK3A6IiIpO2QrPTA8Zi5sZW5ndGg\/IiAoU3RvY2sjICIrZisiKSI6IiJ9Yi5wdXNoKHtuYW1lOiJMQVNUVkVISUNMRVZJRVdFRCIsdmFsdWU6ZH0pO3JldHVybiBifTthLmNsZWFuQmxhbmtWYXJpYWJsZXM9ZnVuY3Rpb24oYil7dmFyIGQ9Yi5yZXBsYWNlKC97XCRRVUVTVElPTlN9L2csIiIpLnJlcGxhY2UoL3tcJE1FU1NBR0V9L2csIiIpLnJlcGxhY2UoL3tcJEVNQUlMUEhPTkV9L2csIiIpLnJlcGxhY2UoL3tcJEVNQUlMTUFLRX0vZywiIikucmVwbGFjZSgve1wkRU1BSUxNT0RFTH0vZywiIikucmVwbGFjZSgve1wkRU1BSUxZRUFSfS9nLCIiKS5yZXBsYWNlKC97XCRQQVlNRU5UfS9nLCIiKS5yZXBsYWNlKC97XCRQQVlNRU5UVEVSTX0vZywiIikucmVwbGFjZSgve1wkT0ZGRVJ9L2csIiIpLnJlcGxhY2UoL3tcJFNUT0NLTlVNQkVSfS9nLCIiKS5yZXBsYWNlKC97XCRDT0xPUn0vZywiIikucmVwbGFjZSgve1wkRk5BTUV9L2csCiIiKS5yZXBsYWNlKC97XCRMTkFNRX0vZywiIikucmVwbGFjZSgve1wkRU1BSUx9L2csIiIpLnJlcGxhY2UoL3tcJFVTRVJQSE9ORX0vZywiIik7bWFpbFBhZ2UmJmIucmVwbGFjZSgve1wkRU1BSUxCVUlMREFORFBSSUNFfS9nLG1haWxQYWdlLmJhbmRwTGluaygpKTtyZXR1cm4gZH07YS5jYW5jZWw9ZnVuY3Rpb24oKXthLmNsb3NlKCJDQU5DRUwiKX07YS5vcGVuPWZ1bmN0aW9uKGIpe2lmKDE9PWMuZGF0YSgib3BlbiIpKXJldHVybiExOyJvYmplY3QiPT10eXBlb2YgYiYmLTEhPSJjbGljayB0YXAiLmluZGV4T2YoYi50eXBlLnRvTG93ZXJDYXNlKCkpJiYoaz0iY2xpY2siKTtpZighaXNOYU4oYikpcmV0dXJuIHNldFRpbWVvdXQoYS5vcGVuLDFFMypiKTtpZighYS5pc0NvbnRlbnRMb2FkZWQoKSlyZXR1cm4gYS5sb2FkKGEub3Blbik7aWYoInVuZGVmaW5lZCIhPT10eXBlb2Ygd2luZG93Lm5ld1ZEUFZpZGVvSXNQbGF5aW5nJiYxPT13aW5kb3cubmV3VkRQVmlkZW9Jc1BsYXlpbmcmJgoiY2xpY2siIT1rfHxhLmlzQWN0aXZlKCkpcmV0dXJuIGEub3Blbig1KTthLm9uT3BlbigpO3JldHVybiBhfTthLmV4ZWNPcGVuPWZ1bmN0aW9uKCl7bnVsbD09Q29va2llcy5nZXQoInBvcHVwU2hvd25FeGVjIikmJihDb29raWVzLnNldCgicG9wdXBTaG93bkV4ZWMiLCIxIixudWxsLHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSksYS5vcGVuKDApKX07YS5pbml0Q291bnRkb3duPWZ1bmN0aW9uKCl7dHJ5e3ZhciBiPW5ldyBEYXRlKDFFMyphLnNldHRpbmdzLmNvdW50ZG93bik7aWYoMDxjLmZpbmQoIi5jb3VudGRvd24iKS5sZW5ndGgpe3ZhciBkPWMuZmluZCgiLmNvdW50ZG93biIpLGY9bmV3IERhdGUsaD1iLmdldFRpbWUoKS1mLmdldFRpbWUoKTtpZigwPGgpe3ZhciBsPVtNYXRoLmZsb29yKGgvODY0RTUpLE1hdGguZmxvb3IoaCU4NjRFNS8zNkU1KSxNYXRoLmZsb29yKGglODY0RTUlMzZFNS82RTQpLE1hdGguZmxvb3IoaCU4NjRFNSUzNkU1JTZFNC8xRTMpXTtmb3IoYj0wO2I8CmwubGVuZ3RoO2IrKylsW2JdPTk8bFtiXT9sW2JdLnRvU3RyaW5nKCk6IjAiK2xbYl07dmFyIHA9bC5qb2luKCI6Iik7ZC5jb3VudGRvd24oe3N0YXJ0VGltZTpwLGltYWdlOiIvaW1hZ2VzL2RpZ2l0c19zbWFsbC5wbmciLGRpZ2l0V2lkdGg6MjksZGlnaXRIZWlnaHQ6NDN9KX1lbHNlIGQuaGlkZSgpfX1jYXRjaChnKXsidW5kZWZpbmVkIiE9PXR5cGVvZiBkZWJ1ZyYmKGRlYnVnKGcpLGRlYnVnKCJJbnZhbGlkIGRhdGUgIixhLnNldHRpbmdzLmNvdW50ZG93bikpfX07YS5jbG9zZT1mdW5jdGlvbihiKXtpZigiQ0FOQ0VMIj09YiYmImZ1bmN0aW9uIj09dHlwZW9mIGEuc2V0dGluZ3Mub25CZWZvcmVDYW5jZWwpe3ZhciBkPWEuc2V0dGluZ3Mub25CZWZvcmVDYW5jZWwuY2FsbChjLGEpO2lmKDA9PWQpcmV0dXJuITF9aWYoImZ1bmN0aW9uIj09dHlwZW9mIGEuc2V0dGluZ3Mub25CZWZvcmVDbG9zZSYmKGQ9YS5zZXR0aW5ncy5vbkJlZm9yZUNsb3NlLmNhbGwoYyxhLGIpLDA9PWQpKXJldHVybiExOwpjLnRyaWdnZXIoInJldmVhbDpjbG9zZSIpfTthLmlzQWN0aXZlPWZ1bmN0aW9uKCl7cmV0dXJuIHBvcHVwaXplckFjdGl2ZSgpfTthLnNldENvb2tpZT1mdW5jdGlvbigpe0Nvb2tpZXMuc2V0KGEuc2V0dGluZ3MuY29va2llTmFtZSwiMSIsYS5zZXR0aW5ncy5jb29raWVEdXJhdGlvbiwiLyIpO3ZhciBiPWEuc2V0dGluZ3MuY29va2llTmFtZS50b0xvd2VyQ2FzZSgpO2lmKCJyZWJhdGVzaG93biI9PWJ8fCJyZWJhdGVvdGhlcnNob3duIj09YiYmInVzZWQiPT0kKCIjY3VycmVudFN0YXR1cyIpLnZhbCgpKWI9bmV3IERhdGUsYi5zZXRUaW1lKGIuZ2V0VGltZSgpKzE4RTQpLENvb2tpZXMuc2V0KCJ1c2VkU2xpZGVyUG9wdXBEaXNwbGF5ZWQiLCIxIixiLCIvIil9O2Euc2F2ZVNldHRpbmdzPWZ1bmN0aW9uKGIpe2I9InVuZGVmaW5lZCI9PXR5cGVvZiBiP3t9OmI7Yj0ib2JqZWN0IiE9dHlwZW9mIGI\/e3VzZXJEZWZpbmVkTm9uT2JqZWN0OmJ9OmI7Yy5kYXRhKCJwb3B1cFNldHRpbmdzIiwKJC5leHRlbmQoITAsYS5zZXR0aW5ncyxiKSl9O2Euc2V0RGVmYXVsdEFERj1mdW5jdGlvbigpe3ZhciBiPSQoIiNwb3B1cG1ha2UiKS52YWwoKSxkPSQoIiNwb3B1cG1vZGVsIikudmFsKCksZj0kKCIjcG9wdXB5ZWFyIikudmFsKCk7MDwkKCJpbnB1dC5icmFuZGVtYWlsIikudmFsKCkubGVuZ3RoJiYwPCQoImlucHV0Lm1vZGVsZW1haWwiKS52YWwoKS5sZW5ndGgmJjA8JCgiaW5wdXQueWVhcmVtYWlsIikudmFsKCkubGVuZ3RoJiYoYj0kKCJpbnB1dC5icmFuZGVtYWlsIikudmFsKCksZD0kKCJpbnB1dC5tb2RlbGVtYWlsIikudmFsKCksZj0kKCJpbnB1dC55ZWFyZW1haWwiKS52YWwoKSk7YS5zZXR0aW5ncy5BREY9e21ha2U6Yixtb2RlbDpkLHllYXI6ZixzdG9ja051bWJlcjokKCIjcG9wdXBzdG9ja251bWJlciIpLnZhbCgpfX07YS5sb2dFdmVudD1mdW5jdGlvbihiKXt2YXIgZD1hLnNldHRpbmdzLmZvcm07ZD1kLm9mZmVydHlwZT9kLm9mZmVydHlwZToiRU1BSUxJRF8iK2QuZW1haWxpZDsKaWYoIWIpcmV0dXJuITE7JChhLnRhcmdldCkudHJpZ2dlcihiKTtpZigicG9wdXAubGVhZF9zZW50Ij09Yil7dmFyIGY9ay5yZXBsYWNlKC8oXlthLXpdezF9KS9nLGZ1bmN0aW9uKGwpe3JldHVybiBsLnRvVXBwZXJDYXNlKCl9KSxoPWQyY21lZGlhLnBhZ2VEZXBhcnRtZW50KCk7Z2FUcmFjaygiYy5fdHJhY2tFdmVudCIsIlBvcHVwLWxlYWRzIixmLGgsMSl9InVuZGVmaW5lZCIhPXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZyYmInVuZGVmaW5lZCIhPXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50PygidW5kZWZpbmVkIiE9PXR5cGVvZiBkZWJ1ZyYmZGVidWcoIkxvZyBFdmVudCIsYixkLGEpLGFjdGl2ZVVzZXJQcm9maWxlTW5nLmxvZ1BhZ2VWaWV3RXZlbnQoYixkKSk6InVuZGVmaW5lZCIhPT10eXBlb2YgZGVidWcmJmRlYnVnKCIhVU5MT0dHRUQgRVZFTlQhIixiLGQpfTthLmlzQ29udGVudExvYWRlZD1mdW5jdGlvbigpe2lmKCFhLnRhcmdldFswXS5oYXNBdHRyaWJ1dGUoImRhdGEtbGF6eWxvYWRpZCIpKXJldHVybiEwOwp2YXIgYj0wPT09YS50YXJnZXQuaHRtbCgpLnRyaW0oKS5sZW5ndGgsZD1hLnNldHRpbmdzLmNvbnRlbnRMb2FkZWR8fCExO3JldHVybiFiJiZkfTthLmxvYWQ9ZnVuY3Rpb24oYil7YS5pc0NvbnRlbnRMb2FkZWQoKT8oYS5zZXR0aW5ncy5jb250ZW50TG9hZGVkPSEwLGIoKSk6JC5hamF4KHt0eXBlOiJHRVQiLGNhY2hlOiEwLHVybDooIkVOR0xJU0giPT09JCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpPyIvZW4iOiIvZnIiKSsiL2FqYXgvZ2V0UG9wdXBDb250ZW50IixkYXRhOnt3c3dpZHRoOiIwIixfOmEuc2V0dGluZ3MuaWRlbnQsaWQ6YS50YXJnZXQuZGF0YSgibGF6eWxvYWRpZCIpLG1ha2U6JCgiI2xhc3R2aWV3ZWRtYWtlIikudmFsKCl8fCIiLG1vZGVsOiQoIiNsYXN0dmlld2VkbW9kZWwiKS52YWwoKXx8IiIseWVhcjokKCIjbGFzdHZpZXdlZHllYXIiKS52YWwoKXx8IiIsdHJpbTokKCIjbGFzdHZpZXdlZHRyaW0iKS52YWwoKXx8IiIsCnN0b2NrTnVtYmVyOiQoIiNsYXN0dmlld2Vkc3RvY2tudW1iZXIiKS52YWwoKXx8IiIsdmVoaWNsZUlkOiQoIiN0b3BjYXJpZCIpLnZhbCgpfHwwfSxzdWNjZXNzOmZ1bmN0aW9uKGQpe2EudGFyZ2V0Lmh0bWwoZCk7YS5zZXR0aW5ncy5jb250ZW50TG9hZGVkPSEwOyJmdW5jdGlvbiI9PT10eXBlb2YgYWRkTm9UcmFuc2xhdGVFbWFpbERlZiYmYWRkTm9UcmFuc2xhdGVFbWFpbERlZigpO2IoKX19KX07YS5jcmVhdGVDb25maXJtRm9ybT1mdW5jdGlvbigpe3ZhciBiPWEudGFyZ2V0LmF0dHIoImlkIikrIl9jb25maXJtIjsxPiQoIiNjb25maXJtX2Zvcm1zIikubGVuZ3RoJiYkKCJib2R5IikuYXBwZW5kKCQoIjxkaXY+PC9kaXY+IikuYXR0cigiaWQiLCJjb25maXJtX2Zvcm1zIikpO2lmKDE+JCgiIyIrYikubGVuZ3RoJiZhLnNldHRpbmdzLmNvbmZpcm1Gb3JtJiYwIT09YS5zZXR0aW5ncy5jb25maXJtRm9ybS5sZW5ndGgpe2I9JCgiPGZvcm0+PC9mb3JtPiIpLmF0dHIoImlkIixiKS5hdHRyKCJtZXRob2QiLAoiUE9TVCIpLmF0dHIoImFjdGlvbiIsIi9jb25maXJtYXRpb24uaHRtbCIpLmF0dHIoInRhcmdldCIsImlmcmFtZWd0cmFjayIpO3ZhciBkPSQoIiNhdXRvYXViYWluZV9wb3B1cCIpO2Q9W3tuYW1lOiJndGFnX2NvbnZlcnNpb24iLHZhbHVlOiJndGFnIn0se25hbWU6ImxlYWRfZGVwYXJ0bWVudCIsdmFsdWU6IiJ9LHtuYW1lOiJsZWFkVHlwZSIsdmFsdWU6IiJ9LHtuYW1lOiJwYWdlSUQiLHZhbHVlOiIifSx7bmFtZToiY3VycmVudFVSTCIsdmFsdWU6IiJ9LHtuYW1lOiJidXR0b25Qb3NpdGlvbiIsdmFsdWU6IiJ9LHtuYW1lOiJkZWFsZXJOYW1lIix2YWx1ZToiIn0se25hbWU6ImlzRnVsbFdpZHRoIix2YWx1ZToiIn0se25hbWU6ImlzTW9iaWxlTmV3VkRQIix2YWx1ZToiIn0se25hbWU6InRlc3Rtb2RlIix2YWx1ZToiMCIsY2xhc3M6InRlc3Rtb2RlIn0se25hbWU6ImZyb21BdXRvQXViYWluZSIsdmFsdWU6MDxkLmxlbmd0aCYmImZhbHNlIiE9ZC52YWwoKX1dO1tdLnB1c2guYXBwbHkoZCwKYS5zZXR0aW5ncy5jb25maXJtRm9ybSk7Zm9yKHZhciBmPTA7ZjxkLmxlbmd0aDtmKyspJCgiPGlucHV0IC8+IikuYXR0cigidHlwZSIsImhpZGRlbiIpLmF0dHIoZFtmXSkuYXBwZW5kVG8oYik7JCgiI2NvbmZpcm1fZm9ybXMiKS5hcHBlbmQoYik7Yi5vbigic3VibWl0IixvbkNvbmZpcm1TdWJtaXQpfTE+JCgiI2d0cmFja0ZyYW1lIikubGVuZ3RoJiYkKCI8aWZyYW1lPjwvaWZyYW1lPiIpLmF0dHIoe3dpZHRoOjEsaGVpZ2h0OjEsZnJhbWVCb3JkZXI6MCxpZDoiZ3RyYWNrRnJhbWUiLG5hbWU6ImlmcmFtZWd0cmFjayIsc3R5bGU6IndpZHRoOiAxcHg7IGhlaWdodDogMXB4OyJ9KS5hcHBlbmRUbygiI2NvbmZpcm1fZm9ybXMiKX07cmV0dXJuIGF9OwpqUXVlcnkoZnVuY3Rpb24oYyl7dmFyIG09YygiI3NpdGVjb21waWxlaWQiKS5sZW5ndGg\/YygiI3NpdGVjb21waWxlaWQiKS52YWwoKTpNYXRoLnJvdW5kKDFFNypNYXRoLnJhbmRvbSgpKS50b1N0cmluZygxNik7Yy5mbi5wb3B1cGl6ZT1mdW5jdGlvbihhKXthPWE\/YTp7fTt2YXIgaz17cmV2ZWFsOnthbmltYXRpb246ImZhZGVBbmRQb3AiLGFuaW1hdGlvbnNwZWVkOjMwMCxjbG9zZW9uYmFja2dyb3VuZGNsaWNrOiExLGRpc21pc3Ntb2RhbGNsYXNzOiJjbG9zZS1yZXZlYWwtbW9kYWwifSxmb3JtOntlbWFpbGlkOjAsb2ZmZXJ0eXBlOjAsbmFtZTowLHNlbmRUbzowLHNlbmRUb0FERjowLE9LQnV0dG9uQ2xhc3M6InN1Ym1pdEJ0biIsQ2FuY2VsQnV0dG9uQ2xhc3M6ImNhbmNlbEJ0biIsc2hvd0VtYWlsQ29uZmlybWF0aW9uOiExfSxBREY6e21ha2U6IiIsbW9kZWw6IiIseWVhcjoiIixzdG9ja051bWJlcjoiIn0saWRlbnQ6bSxlbmRQb3B1cFF1ZXVlOiExLHByaW9yaXR5OjEsYW5pbWF0aW9uOiExLApub3RyYW5zZm9ybTohMSxmaWxsZmxhZzohMSxzdWJtaXR0ZWQ6ITEsc2hvd29ubG9hZDohMSxjb29raWVOYW1lOiExLGNvb2tpZUR1cmF0aW9uOjYwLGNsb3NlT25TdWJtaXQ6ITAsYWRkZWRDbGFzc2VzOiIifTtpZigxPT10aGlzLmxlbmd0aCl7dmFyIGI9dGhpcy5kYXRhKCJwb3B1cFNldHRpbmdzIik\/dGhpcy5kYXRhKCJwb3B1cFNldHRpbmdzIik6e307c2V0dGluZ3M9e307Yy5leHRlbmQoITAsc2V0dGluZ3MsayxiLGEpOyFzZXR0aW5ncy5jb29raWVOYW1lJiYwPHRoaXMuYXR0cigiaWQiKS5sZW5ndGgmJihzZXR0aW5ncy5jb29raWVOYW1lPSJjcHBfIit0aGlzLmF0dHIoImlkIikpOyFzZXR0aW5ncy5uYW1lJiYwPHRoaXMuYXR0cigiaWQiKS5sZW5ndGgmJihzZXR0aW5ncy5uYW1lPXRoaXMuYXR0cigiaWQiKS5yZXBsYWNlKC9Db250YWluZXJcYi8sIiIpKTt0aGlzLmRhdGEoInBvcHVwU2V0dGluZ3MiLHNldHRpbmdzKTthPW5ldyBwb3B1cGl6ZXIodGhpcyxzZXR0aW5ncyk7CnNldHRpbmdzLmluaXRpYWxpemVkfHwoYS5pbml0KCkscG9wdXBTdXBlcnZpc29yLnBvcHVwcy5wdXNoKGEpKTtyZXR1cm4gYX1wb3B1cHM9W107dGhpcy5lYWNoKGZ1bmN0aW9uKCl7cG9wdXBzLnB1c2goYyh0aGlzKS5wb3B1cGl6ZSgpKX0pO3JldHVybiBwb3B1cHN9O3NldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgYT1udWxsO2Mod2luZG93KS5vbigidG91Y2htb3ZlLCBvbnNjcm9sbCwgc2Nyb2xsIG1vdXNld2hlZWwgcmVzaXplIixmdW5jdGlvbihrKXtjbGVhclRpbWVvdXQoYSk7YT1zZXRUaW1lb3V0KHBvcHVwU3VwZXJ2aXNvci5yZXBvc2l0aW9uLDFFMyl9KX0sMUUzKX0pOwovKiogL20vanMvdnRpcC5qcyAqKi8KdmFyIF9fX2QyY192dGlwanNfY19vbj0iMjAyNS0wNS0yMyAxNzoxMDo0NyI7J3VzZSBzdHJpY3QnO3ZhciBfX19kMmNfdnRpcGpzX2Nfb249IjIwMjQtMDMtMjUgMTI6MzU6MzkiOyJ1c2Ugc3RyaWN0IjsKdGhpcy52dGlwPWZ1bmN0aW9uKCl7dGhpcy54T2Zmc2V0PS0xMDt0aGlzLnlPZmZzZXQ9MTA7JCgiLnZ0aXAiKS5vZmYoKS5vbigiaG92ZXIiLGZ1bmN0aW9uKGEpe3RoaXMudD10aGlzLnRpdGxlO3RoaXMudGl0bGU9IiI7dGhpcy50b3A9YS5wYWdlWSt5T2Zmc2V0O3RoaXMubGVmdD1hLnBhZ2VYK3hPZmZzZXQ7JCgiYm9keSIpLmFwcGVuZCgnPHAgaWQ9InZ0aXAiIHN0eWxlPSJ6LWluZGV4OjEwMDAwMDsiPjxpbWcgaWQ9InZ0aXBBcnJvdyIgLz4nK3RoaXMudCsiPC9wPiIpOyQoInAjdnRpcCAjdnRpcEFycm93IikuYXR0cigic3JjIiwiL2ltYWdlcy9zY3JhdGNoL3Z0aXBfYXJyb3cucG5nIik7JCgicCN2dGlwIikuY3NzKCJ0b3AiLHRoaXMudG9wKyJweCIpLmNzcygibGVmdCIsdGhpcy5sZWZ0KyJweCIpLmZhZGVJbigic2xvdyIpfSxmdW5jdGlvbigpe3RoaXMudGl0bGU9dGhpcy50OyQoInAjdnRpcCIpLmZhZGVPdXQoInNsb3ciKS5yZW1vdmUoKX0pLm9uKCJtb3VzZW1vdmUiLApmdW5jdGlvbihhKXt0aGlzLnRvcD1hLnBhZ2VZK3lPZmZzZXQ7dGhpcy5sZWZ0PWEucGFnZVgreE9mZnNldDskKCJwI3Z0aXAiKS5jc3MoInRvcCIsdGhpcy50b3ArInB4IikuY3NzKCJsZWZ0Iix0aGlzLmxlZnQrInB4Iil9KX07alF1ZXJ5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbihhKXt2dGlwKCl9KTsKLyoqIC9tL2pzL3dTY3JhdGNoUGFkLmpzICoqLwp2YXIgX19fZDJjX3dTY3JhdGNoUGFkanNfY19vbj0iMjAyNS0wNS0yMyAxNzoxMzozNyI7J3VzZSBzdHJpY3QnO3ZhciBfX19kMmNfd1NjcmF0Y2hQYWRqc19jX29uPSIyMDI0LTA0LTEyIDE4OjMwOjA2IjsidXNlIHN0cmljdCI7CihmdW5jdGlvbihkKXtmdW5jdGlvbiBoKGIsYSl7dGhpcy5zcD1udWxsO3RoaXMuc2V0dGluZ3M9Yjt0aGlzLiRlbGVtPWE7dGhpcy5lbmFibGVkPSEwO3RoaXMuc2NyYXRjaD0hMTt0aGlzLmN0eD10aGlzLmNhbnZhcz1udWxsO3JldHVybiB0aGlzfWQuZm4ud1NjcmF0Y2hQYWQ9ZnVuY3Rpb24oYixhKXtpZigiZW5hYmxlIj09YilkKHRoaXMpLmRhdGEoIl93U2NyYXRjaFBhZCIpLmVuYWJsZSgpO2Vsc2V7aWYoIm9iamVjdCI9PT10eXBlb2YgYilhPWI7ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIGIpe3ZhciBjPVtdLGY9dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9ZCh0aGlzKS5kYXRhKCJfd1NjcmF0Y2hQYWQiKTtlJiYoInJlc2V0Ij09PWI\/ZS5yZXNldCgpOiJjbGVhciI9PT1iP2UuY2xlYXIoKToiZW5hYmxlZCI9PT1iP2UuZW5hYmxlZD0hMD09PWE6dm9pZCAwIT09ZC5mbi53U2NyYXRjaFBhZC5kZWZhdWx0U2V0dGluZ3NbYl0mJih2b2lkIDAhPT1hP2Uuc2V0dGluZ3NbYl09CmE6Yy5wdXNoKGUuc2V0dGluZ3NbYl0pKSl9KTtyZXR1cm4gMT09PWMubGVuZ3RoP2NbMF06MDxjLmxlbmd0aD9jOmZ9YT1kLmV4dGVuZCh7fSxkLmZuLndTY3JhdGNoUGFkLmRlZmF1bHRTZXR0aW5ncyxhfHx7fSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlPWQodGhpcyksZz1qUXVlcnkuZXh0ZW5kKCEwLHt9LGEpO2lmKCFkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKS5nZXRDb250ZXh0KXt2YXIgaz0iQnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IEhUTUw1IGNhbnZhcywgcGxlYXNlIHVwZ3JhZGUgdG8gYSBtb3JlIG1vZGVybiBicm93c2VyLiI7ZCgiI3RleHREb2VzTm90U3VwcG9ydEhUTUw1IikubGVuZ3RoJiYoaz1kKCIjdGV4dERvZXNOb3RTdXBwb3J0SFRNTDUiKS52YWwoKSk7ZS5jc3MoInBhZGRpbmctdG9wIiwiNjBweCIpO2UuY3NzKCJoZWlnaHQiLCI1NXB4Iik7ZS5odG1sKGspOyJ1bmRlZmluZWQiIT10eXBlb2YgZy5pZFRvQWRkJiZkKCIjYmxvY2thZ2UiKwpnLmlkVG9BZGQpLmxlbmd0aCYmZCgiI2Jsb2NrYWdlIitnLmlkVG9BZGQpLmNzcygidG9wIixwYXJzZUludChkKCIjYmxvY2thZ2UiK2cuaWRUb0FkZCkuY3NzKCJ0b3AiKSkrMzArInB4Iik7cmV0dXJuITF9Zz1uZXcgaChnLGUpO2UuYXBwZW5kKGcuZ2VuZXJhdGUoKSk7Zy5waXhlbHM9Zy5jYW52YXMud2lkdGgqZy5jYW52YXMuaGVpZ2h0O2UuZGF0YSgiX3dTY3JhdGNoUGFkIixnKTtnLmluaXQoKX0pfX07ZC5mbi53U2NyYXRjaFBhZC5kZWZhdWx0U2V0dGluZ3M9e3dpZHRoOjYwMCxoZWlnaHQ6MTE1LGltYWdlOiIvaW1hZ2VzL3NjcmF0Y2gvc2xpZGUyLnBuZyIsaW1hZ2UyOiIvaW1hZ2VzL3BvcHVwcy9zdHlsZTIvc2NyYXRjaC5wbmciLGltYWdlRGlzYWJsZWQ6Ii9pbWFnZXMvcG9wdXBzL3N0eWxlMi9zY3JhdGNoX2Rpc2FibGVkLnBuZyIsY29sb3I6IiMzMzY2OTkiLG92ZXJsYXk6Im5vbmUiLHNpemU6MzAscmVhbHRpbWVQZXJjZW50OiExLHNjcmF0Y2hEb3duOm51bGwsc2NyYXRjaFVwOm51bGwsCnNjcmF0Y2hNb3ZlOm51bGwsY3Vyc29yOm51bGwsaWRUb0FkZDoiIixiYWNrZ3JvdW5kQ29sb3I6IiMwMTBhMjgiLGVuYWJsZWQ6ITB9O2gucHJvdG90eXBlPXtnZW5lcmF0ZTpmdW5jdGlvbigpe3RoaXMuY2FudmFzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpO3RoaXMuY3R4PXRoaXMuY2FudmFzLmdldENvbnRleHQoIjJkIik7dGhpcy5zcD1kKCI8ZGl2PjwvZGl2PiIpLmNzcyh7cG9zaXRpb246InJlbGF0aXZlIn0pLmFwcGVuZChkKHRoaXMuY2FudmFzKS5hdHRyKCJ3aWR0aCIsdGhpcy5zZXR0aW5ncy53aWR0aCsicHgiKS5hdHRyKCJoZWlnaHQiLHRoaXMuc2V0dGluZ3MuaGVpZ2h0KyJweCIpLmF0dHIoInN0eWxlIiwicG9zaXRpb246YWJzb2x1dGU7bGVmdDotMnB4O3RvcDotMXB4O3otaW5kZXg6MTsiKSk7dGhpcy5zZXR0aW5ncy5lbmFibGVkJiZ0aGlzLmVuYWJsZSgpO3JldHVybiB0aGlzLnNwfSxlbmFibGU6ZnVuY3Rpb24oKXt0aGlzLmRyYXdJbWFnZSh0aGlzLnNldHRpbmdzLmltYWdlMiwKITApO3RoaXMuYmluZEJyb3dzZXIoKTt0aGlzLmJpbmRNb2JpbGUodGhpcy5zcCl9LGJpbmRCcm93c2VyOmZ1bmN0aW9uKGIpe3ZhciBhPXRoaXM7ZCh0aGlzLmNhbnZhcykub24oIm1vdXNlZG93biIsZnVuY3Rpb24oYyl7aWYoIWEuZW5hYmxlZClyZXR1cm4hMDtjLnByZXZlbnREZWZhdWx0KCk7Yy5zdG9wUHJvcGFnYXRpb24oKTthLmNhbnZhc19vZmZzZXQ9ZChhLmNhbnZhcykub2Zmc2V0KCk7YS5zY3JhdGNoPSEwO2Euc2NyYXRjaEZ1bmMoYyxhLCJEb3duIil9KS5vbigibW91c2Vtb3ZlIixmdW5jdGlvbihjKXtjLnByZXZlbnREZWZhdWx0KCk7Yy5zdG9wUHJvcGFnYXRpb24oKTthLnNjcmF0Y2gmJmEuc2NyYXRjaEZ1bmMoYyxhLCJNb3ZlIil9KS5vbigibW91c2V1cCIsZnVuY3Rpb24oYyl7Yy5wcmV2ZW50RGVmYXVsdCgpO2Muc3RvcFByb3BhZ2F0aW9uKCk7YS5zY3JhdGNoJiYoYS5zY3JhdGNoPSExLGEuc2NyYXRjaEZ1bmMoYyxhLCJVcCIpKX0pfSxiaW5kTW9iaWxlOmZ1bmN0aW9uKGIpe2Iub24oInRvdWNoc3RhcnQgdG91Y2htb3ZlIHRvdWNoZW5kIHRvdWNoY2FuY2VsIiwKZnVuY3Rpb24oKXt2YXIgYT1ldmVudC5jaGFuZ2VkVG91Y2hlc1swXTtzd2l0Y2goZXZlbnQudHlwZSl7Y2FzZSAidG91Y2hzdGFydCI6dmFyIGM9Im1vdXNlZG93biI7YnJlYWs7Y2FzZSAidG91Y2htb3ZlIjpjPSJtb3VzZW1vdmUiO2JyZWFrO2Nhc2UgInRvdWNoZW5kIjpjPSJtb3VzZXVwIjticmVhaztkZWZhdWx0OnJldHVybn12YXIgZj1kb2N1bWVudC5jcmVhdGVFdmVudCgiTW91c2VFdmVudCIpO2YuaW5pdE1vdXNlRXZlbnQoYywhMCwhMCx3aW5kb3csMSxhLnNjcmVlblgsYS5zY3JlZW5ZLGEuY2xpZW50WCxhLmNsaWVudFksITEsITEsITEsITEsMCxudWxsKTthLnRhcmdldC5kaXNwYXRjaEV2ZW50KGYpO2V2ZW50LnByZXZlbnREZWZhdWx0KCl9KX0saW5pdDpmdW5jdGlvbigpe3RoaXMuc3AuY3NzKCJ3aWR0aCIsdGhpcy5zZXR0aW5ncy53aWR0aC0yKTt0aGlzLnNwLmNzcygiaGVpZ2h0Iix0aGlzLnNldHRpbmdzLmhlaWdodC0yKTt0aGlzLnNwLmNzcygiY3Vyc29yIix0aGlzLnNldHRpbmdzLmN1cnNvcj8KJ3VybCgiJyt0aGlzLnNldHRpbmdzLmN1cnNvcisnIiksIGRlZmF1bHQnOiJkZWZhdWx0Iik7ZCh0aGlzLmNhbnZhcykuY3NzKHtjdXJzb3I6dGhpcy5zZXR0aW5ncy5jdXJzb3I\/J3VybCgiJyt0aGlzLnNldHRpbmdzLmN1cnNvcisnIiksIGRlZmF1bHQnOiJkZWZhdWx0In0pO3RoaXMuY2FudmFzLndpZHRoPXRoaXMuc2V0dGluZ3Mud2lkdGg7dGhpcy5jYW52YXMuaGVpZ2h0PXRoaXMuc2V0dGluZ3MuaGVpZ2h0O3RoaXMucGl4ZWxzPXRoaXMuY2FudmFzLndpZHRoKnRoaXMuY2FudmFzLmhlaWdodDt0aGlzLnNldHRpbmdzLmltYWdlMj8odGhpcy5kcmF3SW1hZ2UodGhpcy5zZXR0aW5ncy5pbWFnZTIpLHRoaXMuc2V0dGluZ3MuZW5hYmxlZHx8dGhpcy5kcmF3SW1hZ2UodGhpcy5zZXR0aW5ncy5pbWFnZURpc2FibGVkLCEwKSk6KCJub25lIiE9dGhpcy5zZXR0aW5ncy5vdmVybGF5Pyh0aGlzLnNldHRpbmdzLmltYWdlJiZ0aGlzLmRyYXdJbWFnZSh0aGlzLnNldHRpbmdzLmltYWdlKSwKdGhpcy5jdHguZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uPXRoaXMuc2V0dGluZ3Mub3ZlcmxheSk6dGhpcy5zZXRCZ0ltYWdlKCksdGhpcy5jdHguZmlsbFN0eWxlPXRoaXMuc2V0dGluZ3MuY29sb3IsdGhpcy5jdHguYmVnaW5QYXRoKCksdGhpcy5jdHgucmVjdCgwLDAsdGhpcy5zZXR0aW5ncy53aWR0aCx0aGlzLnNldHRpbmdzLmhlaWdodCksdGhpcy5jdHguZmlsbCgpKX0scmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLmN0eC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb249InNvdXJjZS1vdmVyIjt0aGlzLmluaXQoKX0sY2xlYXI6ZnVuY3Rpb24oKXt0aGlzLmN0eC5jbGVhclJlY3QoMCwwLHRoaXMuc2V0dGluZ3Mud2lkdGgsdGhpcy5zZXR0aW5ncy5oZWlnaHQpfSxzZXRCZ0ltYWdlOmZ1bmN0aW9uKCl7dGhpcy5zZXR0aW5ncy5pbWFnZSYmKHRoaXMuc3AuYWRkQ2xhc3MoInNjcmF0Y2hEaXZUZXh0IiksdGhpcy5zcC5jc3MoImJhY2tncm91bmQtY29sb3IiLHRoaXMuc2V0dGluZ3MuYmFja2dyb3VuZENvbG9yKSwKdGhpcy5zcC5hcHBlbmQoIjxkaXYgaWQ9J3NjcmF0Y2hEaXZUZXh0Iit0aGlzLnNldHRpbmdzLmlkVG9BZGQrIicgc3R5bGU9J3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtc2l6ZTozMHB4O2NvbG9yOiNmZmY7bWFyZ2luLWxlZnQ6MHB4O3BhZGRpbmctbGVmdDoxMHB4O3BhZGRpbmctcmlnaHQ6MTBweDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MjBweDt6LWluZGV4OjA7Jz4iK2QoIiNzY3JhdGNoSW5wdXRUZXh0Iit0aGlzLnNldHRpbmdzLmlkVG9BZGQpLnZhbCgpKyI8L2Rpdj4iKSl9LGRyYXdJbWFnZTpmdW5jdGlvbihiLGEpe3ZhciBjPXRoaXMsZj1uZXcgSW1hZ2U7Zi5zcmM9YjtkKGYpLm9uKCJsb2FkIixmdW5jdGlvbigpe2MuY3R4LmRyYXdJbWFnZShmLDAsMCk7InVuZGVmaW5lZCIhPXR5cGVvZiBhJiZhfHxjLnNldEJnSW1hZ2UoKX0pfSxzY3JhdGNoRnVuYzpmdW5jdGlvbihiLGEsYyl7Yi5wYWdlWD1NYXRoLmZsb29yKGIucGFnZVgtYS5jYW52YXNfb2Zmc2V0LmxlZnQpO2IucGFnZVk9Ck1hdGguZmxvb3IoYi5wYWdlWS1hLmNhbnZhc19vZmZzZXQudG9wKTthWyJzY3JhdGNoIitjXShiLGEpOyh0aGlzLnNldHRpbmdzLnJlYWx0aW1lUGVyY2VudHx8IlVwIj09YykmJmEuc2V0dGluZ3NbInNjcmF0Y2giK2NdJiZhLnNldHRpbmdzWyJzY3JhdGNoIitjXS5hcHBseShhLFtiLGEuc2NyYXRjaFBlcmNlbnRhZ2UoYSldKX0sc2NyYXRjaFBlcmNlbnRhZ2U6ZnVuY3Rpb24oYil7Zm9yKHZhciBhPTAsYz1iLmN0eC5nZXRJbWFnZURhdGEoMCwwLGIuY2FudmFzLndpZHRoLGIuY2FudmFzLmhlaWdodCksZj0wLGU9Yy5kYXRhLmxlbmd0aDtmPGU7Zis9NCkwPT1jLmRhdGFbZl0mJjA9PWMuZGF0YVtmKzFdJiYwPT1jLmRhdGFbZisyXSYmMD09Yy5kYXRhW2YrM10mJmErKztyZXR1cm4gYS9iLnBpeGVscyoxMDB9LHNjcmF0Y2hEb3duOmZ1bmN0aW9uKGIsYSl7YS5jdHguZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uPSJkZXN0aW5hdGlvbi1vdXQiO2EuY3R4LmxpbmVKb2luPSJyb3VuZCI7CmEuY3R4LmxpbmVDYXA9InJvdW5kIjthLmN0eC5zdHJva2VTdHlsZT1hLnNldHRpbmdzLmNvbG9yO2EuY3R4LmxpbmVXaWR0aD1hLnNldHRpbmdzLnNpemU7YS5jdHguYmVnaW5QYXRoKCk7YS5jdHguYXJjKGIucGFnZVgsYi5wYWdlWSxhLnNldHRpbmdzLnNpemUvMiwwLDIqTWF0aC5QSSwhMCk7YS5jdHguY2xvc2VQYXRoKCk7YS5jdHguZmlsbCgpO2EuY3R4LmJlZ2luUGF0aCgpO2EuY3R4Lm1vdmVUbyhiLnBhZ2VYLGIucGFnZVkpfSxzY3JhdGNoTW92ZTpmdW5jdGlvbihiLGEpe2EuY3R4LmxpbmVUbyhiLnBhZ2VYLGIucGFnZVkpO2EuY3R4LnN0cm9rZSgpfSxzY3JhdGNoVXA6ZnVuY3Rpb24oYixhKXthLmN0eC5jbG9zZVBhdGgoKX19fSkoalF1ZXJ5KTsKLyoqIC9tL2pzL3N3ZnN0b3JlLmpzICoqLwp2YXIgX19fZDJjX3N3ZnN0b3JlanNfY19vbj0iMjAyNS0wNS0yMyAxNzoxMjoyMSI7J3VzZSBzdHJpY3QnO3ZhciBfX19kMmNfc3dmc3RvcmVqc19jX29uPSIyMDI0LTAxLTMxIDE0OjM3OjUzIjsidXNlIHN0cmljdCI7X19fZDJjX3N3ZnN0b3JlanNfY19vbj0iMjAyMy0wMS0xMiAxMTozNToxOCI7InVzZSBzdHJpY3QiO19fX2QyY19zd2ZzdG9yZWpzX2Nfb249IjIwMjMtMDEtMTIgMTA6NDQ6NTgiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfc3dmc3RvcmVqc19jX29uPSIyMDIxLTEyLTE1IDEyOjQyOjMxIjsidXNlIHN0cmljdCI7CihmdW5jdGlvbigpe2Z1bmN0aW9uIGcoYSl7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBhKXRocm93IlN3ZlN0b3JlIEVycm9yOiBGdW5jdGlvbnMgY2Fubm90IGJlIHVzZWQgYXMga2V5cyBvciB2YWx1ZXMuIjt9dmFyIGg9MCxtPS9bXmEtejAtOV9dL2dpO3dpbmRvdy5Td2ZTdG9yZT1mdW5jdGlvbihhKXtmdW5jdGlvbiBlKGQpe3ZhciBiPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYik7Yi5pZD0iU3dmU3RvcmVfIithLm5hbWVzcGFjZSsiXyIraCsrO2R8fChiLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsYi5zdHlsZS50b3A9Ii0yMDAwcHgiLGIuc3R5bGUubGVmdD0iLTIwMDBweCIpO3JldHVybiBifWE9YXx8e307dmFyIGY9e3N3Zl91cmw6InN0b3JhZ2Uuc3dmIixuYW1lc3BhY2U6InN3ZnN0b3JlIixwYXRoOm51bGwsZGVidWc6ITEsdGltZW91dDoxMCxvbnJlYWR5Om51bGwsb25lcnJvcjpudWxsfTtmb3IoYyBpbiBmKWYuaGFzT3duUHJvcGVydHkoYykmJgooYS5oYXNPd25Qcm9wZXJ0eShjKXx8KGFbY109ZltjXSkpO2EubmFtZXNwYWNlPWEubmFtZXNwYWNlLnJlcGxhY2UobSwiXyIpO2lmKHdpbmRvdy5Td2ZTdG9yZVthLm5hbWVzcGFjZV0pdGhyb3ciVGhlcmUgaXMgYWxyZWFkeSBhbiBpbnN0YW5jZSBvZiBTd2ZTdG9yZSB1c2luZyB0aGUgJyIrYS5uYW1lc3BhY2UrIicgbmFtZXNwYWNlLiBVc2UgdGhhdCBpbnN0YW5jZSBvciBzcGVjaWZ5IGFuIGFsdGVybmF0ZSBuYW1lc3BhY2UgaW4gdGhlIGNvbmZpZy4iO3RoaXMuY29uZmlnPWE7aWYoYS5kZWJ1Zyl7aWYoInVuZGVmaW5lZCI9PT10eXBlb2YgY29uc29sZSl7dmFyIG49ZSghMCk7d2luZG93LmNvbnNvbGU9e2xvZzpmdW5jdGlvbihkKXt2YXIgYj1lKCEwKTtiLmlubmVySFRNTD1kO24uYXBwZW5kQ2hpbGQoYil9fX10aGlzLmxvZz1mdW5jdGlvbihkLGIsayl7Yj0ic3dmU3RvcmUiPT09Yj8ic3dmIjpiO2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIGNvbnNvbGVbZF0pY29uc29sZVtkXSgiU3dmU3RvcmUgLSAiKwphLm5hbWVzcGFjZSsiICgiK2IrIik6ICIrayk7ZWxzZSBjb25zb2xlLmxvZygiU3dmU3RvcmUgLSAiK2EubmFtZXNwYWNlKyI6ICIrZCsiICgiK2IrIik6ICIrayl9fWVsc2UgdGhpcy5sb2c9ZnVuY3Rpb24oKXt9O3RoaXMubG9nKCJpbmZvIiwianMiLCJJbml0aWFsaXppbmcuLi4iKTtTd2ZTdG9yZVthLm5hbWVzcGFjZV09dGhpcztmPWUoYS5kZWJ1Zyk7dmFyIGM9IlN3ZlN0b3JlXyIrYS5uYW1lc3BhY2UrIl8iK2grKyxsPSJsb2dmbj1Td2ZTdG9yZS4iK2EubmFtZXNwYWNlKyIubG9nJmFtcDtvbmxvYWQ9U3dmU3RvcmUuIithLm5hbWVzcGFjZSsiLm9ubG9hZCZhbXA7b25lcnJvcj1Td2ZTdG9yZS4iK2EubmFtZXNwYWNlKyIub25lcnJvciZhbXA7IisoYS5wYXRoPyJMU09QYXRoPSIrYS5wYXRoKyImYW1wOyI6IiIpKyJMU09OYW1lPSIrYS5uYW1lc3BhY2U7Zi5pbm5lckhUTUw9JzxvYmplY3QgaGVpZ2h0PSIxMDAiIHdpZHRoPSI1MDAiIGNvZGViYXNlPSJodHRwczovL2Rvd25sb2FkLm1hY3JvbWVkaWEuY29tL3B1Yi9zaG9ja3dhdmUvY2Ficy9mbGFzaC9zd2ZsYXNoLmNhYiIgaWQ9IicrCmMrJyIgY2xhc3NpZD0iY2xzaWQ6RDI3Q0RCNkUtQUU2RC0xMWNmLTk2QjgtNDQ0NTUzNTQwMDAwIj4gICAgPHBhcmFtIHZhbHVlPSInK2Euc3dmX3VybCsnIiBuYW1lPSJtb3ZpZSI+ICA8cGFyYW0gdmFsdWU9IicrbCsnIiBuYW1lPSJGbGFzaFZhcnMiPiAgIDxwYXJhbSB2YWx1ZT0iYWx3YXlzIiBuYW1lPSJhbGxvd1NjcmlwdEFjY2VzcyI+ICA8ZW1iZWQgaGVpZ2h0PSIzNzUiIGFsaWduPSJtaWRkbGUiIHdpZHRoPSI1MDAiIHBsdWdpbnNwYWdlPSJodHRwczovL3d3dy5tYWNyb21lZGlhLmNvbS9nby9nZXRmbGFzaHBsYXllciIgZmxhc2h2YXJzPSInK2wrJyIgdHlwZT0iYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giIGFsbG93c2NyaXB0YWNjZXNzPSJhbHdheXMiIHF1YWxpdHk9ImhpZ2giIGxvb3A9ImZhbHNlIiBwbGF5PSJ0cnVlIiBuYW1lPSInK2MrJyIgYmdjb2xvcj0iI2ZmZmZmZiIgc3JjPSInK2Euc3dmX3VybCsnIj48L29iamVjdD4nO3RoaXMuc3dmPWRvY3VtZW50W2NdfHwKd2luZG93W2NdO3RoaXMuX3RpbWVvdXQ9c2V0VGltZW91dChmdW5jdGlvbigpe1N3ZlN0b3JlW2EubmFtZXNwYWNlXS5sb2coImVycm9yIiwianMiLCJUaW1lb3V0IHJlYWNoZWQsIGFzc3VtaW5nICIrYS5zd2ZfdXJsKyIgZmFpbGVkIHRvIGxvYWQgYW5kIGZpcmluZyB0aGUgb25lcnJvciBjYWxsYmFjay4iKTtpZihhLm9uZXJyb3IpYS5vbmVycm9yKCl9LDFFMyphLnRpbWVvdXQpfTtTd2ZTdG9yZS5wcm90b3R5cGU9e3ZlcnNpb246IjEuOSIscmVhZHk6ITEsc2V0OmZ1bmN0aW9uKGEsZSl7dGhpcy5fY2hlY2tSZWFkeSgpO2coYSk7ZyhlKTt0aGlzLnN3Zi5zZXQoYSxlKX0sZ2V0OmZ1bmN0aW9uKGEpe3RoaXMuX2NoZWNrUmVhZHkoKTtnKGEpO3JldHVybiB0aGlzLnN3Zi5nZXQoYSl9LGdldEFsbDpmdW5jdGlvbigpe3RoaXMuX2NoZWNrUmVhZHkoKTt2YXIgYT10aGlzLnN3Zi5nZXRBbGwoKTthLl9fZmxhc2hCdWdGaXgmJmRlbGV0ZSBhLl9fZmxhc2hCdWdGaXg7cmV0dXJuIGF9LApjbGVhcjpmdW5jdGlvbihhKXt0aGlzLl9jaGVja1JlYWR5KCk7ZyhhKTt0aGlzLnN3Zi5jbGVhcihhKX0sX2NoZWNrUmVhZHk6ZnVuY3Rpb24oKXtpZighdGhpcy5yZWFkeSl0aHJvdyJTd2ZTdG9yZSBpcyBub3QgeWV0IGZpbmlzaGVkIGluaXRpYWxpemluZy4gUGFzcyBhIGNvbmZpZy5vbnJlYWR5IGNhbGxiYWNrIG9yIHdhaXQgdW50aWwgdGhpcy5yZWFkeSBpcyB0cnVlIGJlZm9yZSB0cnlpbmcgdG8gdXNlIGEgU3dmU3RvcmUgaW5zdGFuY2UuIjt9LG9ubG9hZDpmdW5jdGlvbigpe3ZhciBhPXRoaXM7c2V0VGltZW91dChmdW5jdGlvbigpe2NsZWFyVGltZW91dChhLl90aW1lb3V0KTthLnJlYWR5PSEwO2Euc2V0KCJfX2ZsYXNoQnVnRml4IiwiMSIpO2lmKGEuY29uZmlnLm9ucmVhZHkpYS5jb25maWcub25yZWFkeSgpfSwwKX0sb25lcnJvcjpmdW5jdGlvbigpe2NsZWFyVGltZW91dCh0aGlzLl90aW1lb3V0KTtpZih0aGlzLmNvbmZpZy5vbmVycm9yKXRoaXMuY29uZmlnLm9uZXJyb3IoKX19fSkoKTsKLyoqIC9tL2pzL2pxdWVyeS5jb3VudGRvd24uanMgKiovCnZhciBfX19kMmNfanF1ZXJ5Y291bnRkb3duanNfY19vbj0iMjAyNS0wNS0yMyAxNzowOTozMiI7J3VzZSBzdHJpY3QnO3ZhciBfX19kMmNfanF1ZXJ5Y291bnRkb3duanNfY19vbj0iMjAyNC0wMS0zMSAxNDozNjoxMiI7InVzZSBzdHJpY3QiO19fX2QyY19qcXVlcnljb3VudGRvd25qc19jX29uPSIyMDIzLTAxLTEyIDExOjQwOjI1IjsidXNlIHN0cmljdCI7X19fZDJjX2pxdWVyeWNvdW50ZG93bmpzX2Nfb249IjIwMjMtMDEtMTIgMTA6NTA6MTAiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfanF1ZXJ5Y291bnRkb3duanNfY19vbj0iMjAyMS0xMi0xNSAxMjo1MDozNSI7InVzZSBzdHJpY3QiOwpqUXVlcnkuZm4uY291bnRkb3duPWZ1bmN0aW9uKGgpe2lmKDE8dGhpcy5sZW5ndGgpcmV0dXJuICQodGhpcykuZWFjaChmdW5jdGlvbigpeyQodGhpcykuY291bnRkb3duKGgpfSksdGhpcztpZih0aGlzLmRhdGEoImNvdW50aW5nIikpcmV0dXJuIHRoaXM7dGhpcy5kYXRhKCJjb3VudGluZyIsITApO3ZhciBhPXtzdGVwVGltZTo2MCxmb3JtYXQ6ImRkOmhoOm1tOnNzIixzdGFydFRpbWU6IjAxOjEyOjMyOjU1IixkaWdpdEltYWdlczo2LGRpZ2l0V2lkdGg6NTMsZGlnaXRIZWlnaHQ6NzcsdGltZXJFbmQ6ZnVuY3Rpb24oKXt9LGltYWdlOiJkaWdpdHMucG5nIn0sYz1bXSxmPWZ1bmN0aW9uKGIsZCl7cmV0dXJuIHZvaWQgMCE9PWQ\/Y1tiXS5jc3Moe21hcmdpblRvcDpkKyJweCJ9KTpwYXJzZUludChjW2JdLmNzcygibWFyZ2luVG9wIikucmVwbGFjZSgicHgiLCIiKSl9LGs9ZnVuY3Rpb24oYil7Y1tiXS5fZGlnaXRJbml0aWFsPS0oY1tiXS5fX21heCphLmRpZ2l0SGVpZ2h0KmEuZGlnaXRJbWFnZXMpOwpyZXR1cm4gZnVuY3Rpb24gZSgpe210b3A9ZihiKSthLmRpZ2l0SGVpZ2h0O2lmKG10b3A9PWEuZGlnaXRIZWlnaHQpaWYoZihiLGNbYl0uX2RpZ2l0SW5pdGlhbCksMDxiKWsoYi0xKSgpLDA8YiYmdm9pZCAwIT09Y1tiXS5fX2NvbmRtYXgmJmNbYi0xXS5fZGlnaXRJbml0aWFsPT1mKGItMSkmJmYoYiwtKGNbYl0uX19jb25kbWF4KmEuZGlnaXRIZWlnaHQqYS5kaWdpdEltYWdlcykpO2Vsc2V7Y2xlYXJJbnRlcnZhbChsKTtmb3IodmFyIGc9MDtnPGMubGVuZ3RoO2crKylmKGcsMCk7YS50aW1lckVuZCgpfWVsc2UgZihiLG10b3ApLDAhPWYoYikvYS5kaWdpdEhlaWdodCVhLmRpZ2l0SW1hZ2VzJiZzZXRUaW1lb3V0KGUsYS5zdGVwVGltZSksMD09bXRvcCYmKGNbYl0uX19pc21heD0hMCl9fTskLmV4dGVuZChhLGgpO3RoaXMuY3NzKHtoZWlnaHQ6YS5kaWdpdEhlaWdodCxvdmVyZmxvdzoiaGlkZGVuIn0pOyhmdW5jdGlvbihiKXtmb3IodmFyIGQ9MCxlPTA7ZTxhLnN0YXJ0VGltZS5sZW5ndGg7ZSsrKXtpZigwPD0KcGFyc2VJbnQoYS5zdGFydFRpbWVbZV0pKXtlbGVtPSQoJzxkaXYgaWQ9ImNudF8nK2UrJyIgY2xhc3M9ImNudERpZ2l0IiAvPicpLmNzcyh7aGVpZ2h0OmEuZGlnaXRIZWlnaHQqYS5kaWdpdEltYWdlcyoxMCxmbG9hdDoibGVmdCIsYmFja2dyb3VuZDoidXJsKCciK2EuaW1hZ2UrIicpIix3aWR0aDphLmRpZ2l0V2lkdGh9KTtjLnB1c2goZWxlbSk7ZihkLC0ocGFyc2VJbnQoYS5zdGFydFRpbWVbZV0pKmEuZGlnaXRIZWlnaHQqYS5kaWdpdEltYWdlcykpO2NbZF0uX19tYXg9OTtzd2l0Y2goYS5mb3JtYXRbZV0pe2Nhc2UgImgiOmNbZF0uX19tYXg9MD09ZCUyPzI6OTswPT1kJTImJihjW2RdLl9fY29uZG1heD00KTticmVhaztjYXNlICJkIjpjW2RdLl9fbWF4PTk7YnJlYWs7Y2FzZSAibSI6Y2FzZSAicyI6Y1tkXS5fX21heD0wPT1kJTI\/NTo5fSsrZH1lbHNlIGVsZW09JCgnPGRpdiBjbGFzcz0iY250U2VwYXJhdG9yIi8+JykuY3NzKHtmbG9hdDoibGVmdCJ9KS50ZXh0KGEuc3RhcnRUaW1lW2VdKTsKYi5hcHBlbmQoZWxlbSl9fSkodGhpcyk7dmFyIGw9c2V0SW50ZXJ2YWwoayhjLmxlbmd0aC0xKSwxRTMpfTsKLyoqIC9tL2pzL2RhdGVVdGlscy5qcyAqKi8KdmFyIF9fX2QyY19kYXRlVXRpbHNqc19jX29uPSIyMDI1LTA1LTIzIDE3OjA5OjQ2IjsndXNlIHN0cmljdCc7dmFyIF9fX2QyY19kYXRlVXRpbHNqc19jX29uPSIyMDI0LTAxLTMxIDE0OjM2OjAxIjsidXNlIHN0cmljdCI7X19fZDJjX2RhdGVVdGlsc2pzX2Nfb249IjIwMjMtMDEtMTIgMTE6MzQ6MzMiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfZGF0ZVV0aWxzanNfY19vbj0iMjAyMy0wMS0xMiAxMDo0NDoxNCI7InVzZSBzdHJpY3QiO19fX2QyY19kYXRlVXRpbHNqc19jX29uPSIyMDIxLTEyLTE1IDEyOjQxOjIzIjsidXNlIHN0cmljdCI7RGF0ZS5wcm90b3R5cGUuYW1vdW50QmV0d2Vlbj1mdW5jdGlvbihhLGIsYyxkKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIGF8fG51bGw9PWF8fCJ1bmRlZmluZWQiPT10eXBlb2YgYnx8bnVsbD09YilyZXR1cm4gbnVsbDthPWEuZ2V0VGltZSgpO2I9Yi5nZXRUaW1lKCk7cmV0dXJuIE1hdGguZmxvb3IoKGItYS1kKS9jKX07Ci8qKiAvbS9qcy9kMmNfYXNjX2dhNC5qcyAqKi8KdmFyIF9fX2QyY19kMmNhc2NnYTRqc19jX29uPSIyMDI2LTAyLTAzIDE2OjMwOjAzIjsndXNlIHN0cmljdCc7dmFyIGFzY1RvcENhckRldGFpbHM9ITEsYXNjTGFzdFNlYXJjaEZpbHRlclNvcnQ9ITEsYXNjTGFzdEZpbHRlckNsaWNrPSExLGFzY0xhc3RDdGFDbGljaz0hMTtmdW5jdGlvbiBkMmFzY1B1YmxpY2F0aW9uRGF0ZShkKXtpZigiIj09ZClyZXR1cm4iIjt2YXIgaD1uZXcgRGF0ZShkKTtkPSIiKyhoLmdldE1vbnRoKCkrMSk7dmFyIGs9IiIraC5nZXREYXRlKCk7aD1oLmdldEZ1bGxZZWFyKCk7MTA+cGFyc2VGbG9hdChkKSYmKGQ9IjAiK2QpOzEwPnBhcnNlRmxvYXQoaykmJihrPSIwIitrKTtyZXR1cm5bZCxrLGhdLmpvaW4oIi8iKX1mdW5jdGlvbiBlbnN1cmVUcnV0aHkoZCl7cmV0dXJuIGQ\/ZDoiIn0KZnVuY3Rpb24gYXNjVXBkYXRlVG9wQ2FyRGF0YShkKXtpZighMSE9PWQpe2xldCBoPWQyYXNjUHVibGljYXRpb25EYXRlKGVuc3VyZVRydXRoeShkLmRhdGVfbGlzdGluZykpLGs9ZC5tYWtlY2VydCsiIjthc2NUb3BDYXJEZXRhaWxzPXtpdGVtX2lkOmVuc3VyZVRydXRoeShkLk5JViksaXRlbV9udW1iZXI6ZW5zdXJlVHJ1dGh5KGQuaWQpLGl0ZW1fcHJpY2U6ZW5zdXJlVHJ1dGh5KGQucHJpY2UpLGl0ZW1fY29uZGl0aW9uOmVuc3VyZVRydXRoeShkLnZjYXRlZ29yeSkudG9Mb3dlckNhc2UoKSxpdGVtX3llYXI6ZW5zdXJlVHJ1dGh5KGQueWVhcikudG9Mb3dlckNhc2UoKSxpdGVtX21ha2U6ZW5zdXJlVHJ1dGh5KGQubWFrZSkudG9Mb3dlckNhc2UoKSxpdGVtX21vZGVsOmVuc3VyZVRydXRoeShkLm1vZGVsKS50b0xvd2VyQ2FzZSgpLGl0ZW1fdmFyaWFudDplbnN1cmVUcnV0aHkoZC52ZXJzaW9uKS50b0xvd2VyQ2FzZSgpLGl0ZW1fY29sb3I6ZW5zdXJlVHJ1dGh5KGQuY29sb3IpLnRvTG93ZXJDYXNlKCksCml0ZW1fdHlwZTplbnN1cmVUcnV0aHkoZC5ib2R5VHlwZUlEKS50b0xvd2VyQ2FzZSgpLGl0ZW1fY2F0ZWdvcnk6ZW5zdXJlVHJ1dGh5KCIiKSxpdGVtX2Z1ZWxfdHlwZTplbnN1cmVUcnV0aHkoZC52Y2FyYnVyYW50KS50b0xvd2VyQ2FzZSgpLGl0ZW1faW52ZW50b3J5X2RhdGU6ZW5zdXJlVHJ1dGh5KGgpfTsiMjEiIT1rJiYiMCIhPWsmJmQyYXNjLnNldFZlaGljbGVTdGF0dXMoIkNQTyIpfWVsc2UgZD0kKCIjYXNjX2RpZ2l0YWxfZGF0YV9pbmZvIiksYXNjVG9wQ2FyRGV0YWlscz17aXRlbV9jb25kaXRpb246Im5ldyIsaXRlbV95ZWFyOiQoImlucHV0W25hbWU9J3llYXInXSIsZCkudmFsKCksaXRlbV9tYWtlOiQoImlucHV0W25hbWU9J21ha2UnXSIsZCkudmFsKCksaXRlbV9tb2RlbDokKCJpbnB1dFtuYW1lPSdtb2RlbCddIixkKS52YWwoKSxpdGVtX3R5cGU6JCgiaW5wdXRbbmFtZT0ndmVoaWNsZUNhdGVnb3J5J10iLGQpLnZhbCgpfTtjb25zb2xlLmxvZygiR0E0IGFzY1RvcENhckRldGFpbHMiLAphc2NUb3BDYXJEZXRhaWxzKX0KZnVuY3Rpb24gZDJhc2NSZXNvbHZlUGFnZUlkKGQpe2Q9ZC5yZXBsYWNlKC88XC8\/W14+XSsoPnwkKS9nLCIiKTtpZihkLmluY2x1ZGVzKCJzaTp2bHMiKSlyZXR1cm4ic2VhcmNoIGludmVudG9yeSI7aWYoZC5pbmNsdWRlcygiOnNpOnZlaGljbGUgZGV0YWlscyIpfHxkLmluY2x1ZGVzKCJ2ZWhpY2xlIikpcmV0dXJuInZkcCI7aWYoZC5pbmNsdWRlcygiY3VzdG9tOiIpKXJldHVybiJibG9nIjtpZihkLmluY2x1ZGVzKCJmaW5hbmNlIikpcmV0dXJuImNyZWRpdCI7aWYoZC5pbmNsdWRlcygic2VydmljZTpyZXF1ZXN0IGFwcG9pbnRtZW50IikpcmV0dXJuInJlcXVlc3QgYXBwb2ludG1lbnQiO2lmKGQuaW5jbHVkZXMoInNlcnZpY2U6b3JkZXIgcGFydHMiKSlyZXR1cm4ib3JkZXIgcGFydHMiO2lmKGQuaW5jbHVkZXMoImFib3V0IHVzOmNvbnRhY3QgdXMiKSlyZXR1cm4iY29udGFjdCB1cyI7aWYoZC5pbmNsdWRlcygiVU5LTk9XTiIpKXtpZigvYnVpbGQtYW5kLXByaWNlLy50ZXN0KHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSl8fC9jb25maWd1cmF0aW9uLWV0LXByaXgvLnRlc3Qod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKSlyZXR1cm4iYnVpbGQgYW5kIHByaWNlIjsKaWYoL3ByaWNlLW5ldy8udGVzdCh3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpfHwvcHJpeC1uZXVmLy50ZXN0KHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkpcmV0dXJuInByaWNlIHJlcXVlc3QiO2lmKC9icm9jaHVyZXMvLnRlc3Qod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKSlyZXR1cm4iYnJvY2h1cmUiO2lmKC9hdXRvLWpvYnMvLnRlc3Qod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKXx8L2VtcGxvaXMtYXV0b21vYmlsZS8udGVzdCh3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpKXJldHVybiJqb2JzIjtpZigvb3VydGVhbS8udGVzdCh3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpfHwvZXF1aXBlLy50ZXN0KHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkpcmV0dXJuIm91ciB0ZWFtIn1yZXR1cm4gZH0KZnVuY3Rpb24gZDJhc2NSZXNvbHZlTGVhZFR5cGUoZCxoKXtoPWgudG9Mb3dlckNhc2UoKTtsZXQgaz17fTtmb3IodmFyIGwgaW4gZClrW2wudG9Mb3dlckNhc2UoKV09ZFtsXTtsPSQoImh0bWwiKS5hdHRyKCJsYW5nIik7ZD0iIjtsPSJlbiI9PWwudG9Mb3dlckNhc2UoKXx8ImVuZyI9PWwudG9Mb3dlckNhc2UoKT8iRU5HTElTSCI6IkZSRU5DSCI7dm9pZCAwIT09a1toXSYmdm9pZCAwIT09a1toXVtsXSYmKGQ9a1toXVtsXSk7cmV0dXJuIGR9CmZ1bmN0aW9uIEQyQVNDKGQpe2QucGFnZUlkT3JnPWQucGFnZUlkO2QucGFnZUlkPWQyYXNjUmVzb2x2ZVBhZ2VJZChkLnBhZ2VJZCk7ZC5kZWFsZXJfbmFtZT0kKCIjaGlkZGVuRGVhbGVyTmFtZSIpLnZhbCgpO3ZhciBoPXtzdG9yZV9uYW1lOmQuZGVhbGVyX25hbWUudG9Mb3dlckNhc2UoKSxvZW1fY29kZTpkLnBhQ29kZSxvZW1fYnJhbmQ6ZC5jbGllbnQsYWZmaWxpYXRpb246IiIsbGFuZ3VhZ2U6ZC51c2VyTGFuZ3VhZ2UsY3VycmVuY3k6ImNhZCIscGFnZV90eXBlOmQucGFnZUlkLGl0ZW1zOltdLGV2ZW50czpbXSxtZWFzdXJlbWVudF9pZHM6WyJHLTZHRVoyV1dUM0wiXSxwbGF0Zm9ybV9jdXN0b206IiJ9LGs9e2FzY19jbGlja190b19jYWxsOlsiYS5waG9uZS1saW5rIiwiYS5waG9uZS1hY3Rpb24iXSxhc2NfY3RhX2ludGVyYWN0aW9uOiIudi1jYXJkIGE6bm90KC5waG9uZS1saW5rKTsubGVmdF9ib3ggYTsjZm9vdGVyIGE7I3NjcmF0Y2hhbmRzYXZlX2VtYmVkZGVkX2J0bl8xOyNQdWxsb3V0X0J1aWxkLWFuZC1QcmljZTsjbmV3VmRwRnVsbHdpZHRoVmlkZW9JZnJhbWUiLnNwbGl0KCI7IiksCmFzY19jdGFfaW50ZXJhY3Rpb246IiNwcm9tb0Rpc2NvdmVyQnV0dG9uIC5kaXZDYXJQYXltZW50Q2FsY3VsYXRvciAjc2NyYXRjaGFuZHNhdmVfZW1iZWRkZWQgLmxvYW5DYWxjdWxhdG9yVHJpZ2dlciAub2ZmZXItYnRuIC5jdFByb21vIC50cmFkZUluQmFyX2J0biIuc3BsaXQoIiAiKSxhc2NfY3RhX2ludGVyYWN0aW9uOlsiLm5ld1ZkcEFjdGlvbnMgYSIsIi5jdGEtdHBsIGEiXSxhc2NfZm9ybV9lbmdhZ2VtZW50OlsiaW5wdXQiLCJzZWxlY3QiLCJ0ZXh0YXJlYSJdLGFzY19tZWRpYV9pbnRlcmFjdGlvbjpbIiNuZXdWZHBGdWxsd2lkdGhWaWRlb0lmcmFtZSIsImltZyJdLGFzY19tZW51X2ludGVyYWN0aW9uOlsiLnVwX21lbnUgYSJdLGFzY19lbGVtZW50X2NvbmZpZ3VyYXRpb246WyIubGFuZ3VhZ2VCYXIgYSJdfSxsPSExO2NvbnNvbGUubG9nKCJEMkFTQyBMb2FkaW5nLi4uIixkKTt2YXIgZz1uZXcgZnVuY3Rpb24oKXt2YXIgZT10aGlzO2Uuc2V0VmVoaWNsZVN0YXR1cz1mdW5jdGlvbihiKXtsZXQgYT0KJCgiI2FzY19kaWdpdGFsX2RhdGFfaW5mbyBpbnB1dFtuYW1lPXZlaGljbGVTdGF0dXNdIik7aWYoIiIhPSQoIiNhc2NfZGlnaXRhbF9kYXRhX2luZm8gaW5wdXRbbmFtZT0nbWFrZSddIikudmFsKCkpe2xldCBjPXdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS50b0xvd2VyQ2FzZSgpO2EudmFsKC91c2VkLy50ZXN0KGMpfHwvb2NjYXNpb24vLnRlc3QoYyk\/IlVzZWQiOiJOZXciKX0hMSE9PWImJmEudmFsKGIpfTtlLnNldERpZ2l0YWxEYXRhPWZ1bmN0aW9uKGIsYSl7bGV0IGM9ZS5hZGRFdmVudChiLGEpO2lmKCExPT09YylyZXR1cm4hMTt2b2lkIDAhPT1jLmZvcm1fbmFtZSYmKGMuZm9ybV9uYW1lPWMuZm9ybV9uYW1lLnJlcGxhY2UoIm1lbnN1YWxpdD9zIiwibWVuc3VhbGl0ZXMiKSxjLmZvcm1fbmFtZT1jLmZvcm1fbmFtZS5yZXBsYWNlKCJ2P2hpY3VsZSIsInZlaGljdWxlIiksYy5mb3JtX25hbWU9Yy5mb3JtX25hbWUucmVwbGFjZSgiP3RhcGVzIiwiZXRhcGVzIiksYy5mb3JtX25hbWU9CiJEMkMgIitjLmZvcm1fbmFtZSk7dm9pZCAwIT09Yy5mb3JtX2xhbmcmJihjLmZvcm1fbGFuZz1lLnN0YW5kYXJkaXplRm9ybUxhbmcoYy5mb3JtX2xhbmcpKTtoLmV2ZW50cy51bnNoaWZ0KEpTT04uc3RyaW5naWZ5KHtuYW1lOmIscGFyYW1zOmN9KSk7InZkcCI9PWMucGFnZV90eXBlJiYoYy5wYWdlX3R5cGU9Iml0ZW0iKTsic2hvd3Jvb20iPT1jLnBhZ2VfdHlwZSYmKGMucGFnZV90eXBlPSJpdGVtIik7InNlYXJjaCBpbnZlbnRvcnkiPT1jLnBhZ2VfdHlwZSYmKGMucGFnZV90eXBlPSJpdGVtbGlzdCIpO2xldCBmPWUuZ2V0RXZlbnRUeXBlKGIpO2UucmVwb3J0KGYsYixjLGgpOyJhc2NfZm9ybV9zdWJtaXNzaW9uIj09YiYmKGUuc2V0RGlnaXRhbERhdGEoImFzY19mb3JtX3N1Ym1pc3Npb25fc2FsZXMiLGEpLGUuc2V0RGlnaXRhbERhdGEoIkQyQ19Gb3JtX3N1Ym1pc3Npb25fc2FsZXMiLGEpLGUuc2V0RGlnaXRhbERhdGEoIkQyQ19MZWFkcyIsYSksc2V0VGltZW91dChmdW5jdGlvbigpe2FzY0xhc3RDdGFDbGljaz0KITF9LDEyNTApKTsiYXNjX2NvbW1fc3VibWlzc2lvbiI9PWImJmUuc2V0RGlnaXRhbERhdGEoImFzY19jb21tX3N1Ym1pc3Npb25fc2FsZXMiLGEpfTtlLmdldEV2ZW50VHlwZT1mdW5jdGlvbihiKXtsZXQgYT0iZW5nYWdlbWVudCI7c3dpdGNoKGIpe2Nhc2UgImFzY19mb3JtX3N1Ym1pc3Npb24iOmNhc2UgImFzY19mb3JtX3N1Ym1pc3Npb25fcGFydHMiOmNhc2UgImFzY19mb3JtX3N1Ym1pc3Npb25fc2FsZXNfYXBwdCI6Y2FzZSAiYXNjX2Zvcm1fc3VibWlzc2lvbl9zYWxlcyI6Y2FzZSAiYXNjX2Zvcm1fc3VibWlzc2lvbl9zZXJ2aWNlIjphPSJjb252ZXJzaW9uIn1yZXR1cm4gYX07ZS5iaW5kRWxlbWVudHM9ZnVuY3Rpb24oYixhKXskLmVhY2goYSxmdW5jdGlvbihjLGYpeyQoZikuZWFjaChmdW5jdGlvbigpe2NvbnN0IG09JCh0aGlzKSxuPSJhc2NfZm9ybV9lbmdhZ2VtZW50Ij09Yj8iYmx1ciI6ImNsaWNrIjskKHRoaXMpLm9uKG4sZnVuY3Rpb24oKXtnLnNldERpZ2l0YWxEYXRhKGIsCm0pfSl9KX0pfTtlLmFkZEV2ZW50PWZ1bmN0aW9uKGIsYSl7dmFyIGM9e2V2ZW50X293bmVyOiJkMmMiLHBhZ2VfdHlwZTpkLnBhZ2VJZCxwYWdlX3VybDp3aW5kb3cubG9jYXRpb24uaHJlZixldmVudF9sYWJlbDpiLGV2ZW50X2NhdGVnb3J5OiQoIiNhc2NfZGlnaXRhbF9kYXRhX2luZm8gaW5wdXRbbmFtZT12ZWhpY2xlU3RhdHVzXSIpLnZhbCgpfSxmPSExIT09YXNjTGFzdEN0YUNsaWNrP2UuQ3RhVGV4dFBhcnNlcihhc2NMYXN0Q3RhQ2xpY2spOiIiO3N3aXRjaChiKXtjYXNlICJhc2NfcGFnZXZpZXciOmJyZWFrO2Nhc2UgImFzY19jbGlja190b19jYWxsIjpmPWEuaGFzQ2xhc3MoInBob25lLWxpbmsiKT9hLnRleHQoKTphLmF0dHIoImhyZWYiKTtmPWYucmVwbGFjZSgvW14wLTlcK10vZywiIik7Yz1PYmplY3QuYXNzaWduKHt9LGMse2NvbW1fcGhvbmVfbnVtYmVyOmYsZGVwYXJ0bWVudDplLmdldEQyY0RlcGFydG1lbnQoYSksYWZmaWxpYXRpb246IiJ9KTticmVhaztjYXNlICJhc2NfY3RhX2ludGVyYWN0aW9uIjpmPQplLkN0YVRleHRQYXJzZXIoYSk7ZS5pc0N0YUNsaWNrKGEpJiYoYXNjTGFzdEN0YUNsaWNrPWEpO2M9T2JqZWN0LmFzc2lnbih7fSxjLHtlbGVtZW50X3RleHQ6ZixlbGVtZW50X29yZGVyOiIiLGVsZW1lbnRfY29sb3I6IiIsZWxlbWVudF90eXBlOmUuZ2V0RWxlbWVudFR5cGUoYSksZXZlbnRfYWN0aW9uOiIiLGV2ZW5fYWN0aW9uX3Jlc3VsdDphLmF0dHIoImhyZWYiKT8icmVkaXJlY3QiOiJwb3B1cCIsbGlua191cmw6YS5hdHRyKCJocmVmIik\/YS5hdHRyKCJocmVmIik6IiJ9KTticmVhaztjYXNlICJhc2NfZm9ybV9lbmdhZ2VtZW50IjpmPWUuZ2V0TGVhZFR5cGVGb3JtTmFtZShhKTtpZighMT09PWYpcmV0dXJuITE7bGV0IG09ZS5hc2NUZXh0UmVwbGFjZXIoYS52YWwoKSksbj1lLmdldEQyY0RlcGFydG1lbnQoYSk7Y29uc29sZS5sb2coIkQyQVNDIEZvcm0gRW5nYWdlbWVudCBEZXRlY3RlZCIsZixuLGEpO2M9T2JqZWN0LmFzc2lnbih7fSxjLHtlbGVtZW50X3RleHQ6bSxjb21tX3R5cGU6ImZvcm0iLApjb21tX3N0YXR1czoic3RhcnQiLGRlcGFydG1lbnQ6bixmb3JtX25hbWU6Zixmb3JtX3R5cGU6ZS5nZXRGb3JtVHlwZShhKSxmb3JtX2xhbmc6JCgiaW5wdXRbbmFtZT0nbGFuZyddIikudmFsKCksZm9ybV9kZXB0Om59KTticmVhaztjYXNlICJhc2NfZm9ybV9zdWJtaXNzaW9uIjpjPU9iamVjdC5hc3NpZ24oe30sYyx7Y29tbV90eXBlOiJmb3JtIixjb21tX291dGNvbWU6ImNsb3NlIixzdWJtaXNzaW9uX2lkOiIiLGVsZW1lbnRfdGV4dDoic3VibWl0IixjdGFfdGV4dDpmLGN1c3RvbWVyX3Bob25lOmEuY29uZmlybV9waG9uZV9udW1iZXIsY3VzdG9tZXJfZW1haWw6YS5jb25maXJtX2VtYWlsLGRlcGFydG1lbnQ6ZS5nZXREMmNEZXBhcnRtZW50KGEpLGZvcm1fbmFtZTphLmxlYWRUeXBlLGZvcm1fdHlwZTplLmdldEZvcm1UeXBlKGEpLGZvcm1fbGFuZzokKCJpbnB1dFtuYW1lPSdsYW5nJ10iKS52YWwoKSxmb3JtX2RlcHQ6ZS5nZXREMmNEZXBhcnRtZW50KGEpfSk7YnJlYWs7Y2FzZSAiYXNjX2Zvcm1fc3VibWlzc2lvbl9wYXJ0cyI6Y2FzZSAiYXNjX2Zvcm1fc3VibWlzc2lvbl9zYWxlcyI6Y2FzZSAiYXNjX2Zvcm1fc3VibWlzc2lvbl9zYWxlc19hcHB0IjpjYXNlICJhc2NfZm9ybV9zdWJtaXNzaW9uX3NlcnZpY2UiOmNhc2UgImFzY19mb3JtX3N1Ym1pc3Npb25fc2VydmljZV9hcHB0IjpjYXNlICJEMkNfTGVhZHMiOmNvbnNvbGUubG9nKCJEMkFTQyBFbWFpbCBTZW50IC0gRGF0YSAyIiwKYSk7YS5jb25maXJtX3Bob25lX251bWJlcj12b2lkIDA9PT1hLmNvbmZpcm1fcGhvbmVfbnVtYmVyPyIiOmEuY29uZmlybV9waG9uZV9udW1iZXI7YS5jb25maXJtX2VtYWlsPXZvaWQgMD09PWEuY29uZmlybV9lbWFpbD8iIjphLmNvbmZpcm1fZW1haWw7Yz1PYmplY3QuYXNzaWduKHt9LGMse2NvbW1fdHlwZToiZm9ybSIsY29tbV9vdXRjb21lOmUuZ2V0Rm9ybU91dGNvbWUoYiksc3VibWlzc2lvbl9pZDoiIixlbGVtZW50X3RleHQ6ZS5hc2NUZXh0UmVwbGFjZXIoInN1Ym1pdCIpLGN0YV90ZXh0OmYsY3VzdG9tZXJfcGhvbmU6YS5jb25maXJtX3Bob25lX251bWJlcixjdXN0b21lcl9lbWFpbDphLmNvbmZpcm1fZW1haWwsZGVwYXJ0bWVudDplLmdldEQyY0RlcGFydG1lbnQoYSksZm9ybV9uYW1lOmEubGVhZFR5cGUsZm9ybV90eXBlOmUuZ2V0Rm9ybVR5cGUoYSksZm9ybV9sYW5nOiQoImlucHV0W25hbWU9J2xhbmcnXSIpLnZhbCgpLGZvcm1fZGVwdDplLmdldEQyY0RlcGFydG1lbnQoYSl9KTsKYnJlYWs7Y2FzZSAiRDJDX0Zvcm1fc3VibWlzc2lvbl9zYWxlcyI6Yz17Zm9ybV9maWxsZWQ6IlllcyJ9O2JyZWFrO2Nhc2UgImFzY19lbGVtZW50X2NvbmZpZ3VyYXRpb24iOmM9dm9pZCAwIT09YS5ldmVudF9hY3Rpb24\/T2JqZWN0LmFzc2lnbih7fSxjLHtldmVudF9hY3Rpb25fcmVzdWx0OmEuZXZlbnRfYWN0aW9uX3Jlc3VsdCxldmVudF9hY3Rpb246YS5ldmVudF9hY3Rpb24scHJvZHVjdF9uYW1lOiIiLGVsZW1lbnRfc3RhdGU6YS5maWx0ZXJJbmZvLnN0YXRlLGVsZW1lbnRfdHlwZToic2VhcmNoIj09YS5ldmVudF9hY3Rpb24\/ImZpbHRlciI6InNvcnQiLGVsZW1lbnRfc3VidHlwZTphLmZpbHRlckluZm8udHlwZSxlbGVtZW50X3RpdGxlOmEuZmlsdGVySW5mby5sYWJlbCxlbGVtZW50X3RleHQ6YS5maWx0ZXJJbmZvLnRpdGxlLGVsZW1lbnRfdmFsdWU6YS5maWx0ZXJJbmZvLnZhbHVlLGVsZW1lbnRfY29sb3I6IiIsZWxlbWVudF9wb3NpdGlvbjoiIixlbGVtZW50X29yZGVyOiIifSk6Ck9iamVjdC5hc3NpZ24oe30sYyx7ZXZlbnRfYWN0aW9uX3Jlc3VsdDoibGFuZ3VhZ2UiLGV2ZW50X2FjdGlvbjoiY2xpY2siLHByb2R1Y3RfbmFtZToiIixlbGVtZW50X3N0YXRlOjAsZWxlbWVudF90eXBlOiJsYW5ndWFnZSB0b2dnbGUsIixlbGVtZW50X3N1YnR5cGU6ImJ1dHRvbiIsZWxlbWVudF90aXRsZTplLmFzY1RleHRSZXBsYWNlcihhLnRleHQoKSksZWxlbWVudF90ZXh0OmUuYXNjVGV4dFJlcGxhY2VyKGEudGV4dCgpKSxlbGVtZW50X3ZhbHVlOmUuYXNjVGV4dFJlcGxhY2VyKGEudGV4dCgpKSxlbGVtZW50X2NvbG9yOiIiLGVsZW1lbnRfcG9zaXRpb246IiIsZWxlbWVudF9vcmRlcjoiIn0pO2JyZWFrO2Nhc2UgImFzY19tZWRpYV9pbnRlcmFjdGlvbiI6Yz1PYmplY3QuYXNzaWduKHt9LGMse2V2ZW50X2FjdGlvbl9yZXN1bHQ6IiIsYWZmaWxpYXRpb246IiIsbWVkaWFfdHlwZToiIixsaW5rX3VybDoiIixjcmVhdGl2ZV9uYW1lOiIifSk7YnJlYWs7Y2FzZSAiYXNjX21lbnVfaW50ZXJhY3Rpb24iOmM9Ck9iamVjdC5hc3NpZ24oe30sYyx7ZWxlbWVudF90ZXh0OmUuYXNjVGV4dFJlcGxhY2VyKGEudGV4dCgpKSxlbGVtZW50X3N1YnR5cGU6Im1lZ2FfbWVudSIsZWxlbWVudF90eXBlOmEuY2xvc2VzdCgibGkiKS5hdHRyKCJkYXRhLWlkIiksZXZlbnRfYWN0aW9uOiJjbGljayJ9KTticmVhaztjYXNlICJhc2NfcmV0YWlsX3Byb2Nlc3MiOmM9T2JqZWN0LmFzc2lnbih7fSxjLHtmbG93X25hbWU6ImZpbmFuY2UiLGVsZW1lbnRfdGl0bGU6IiIsZmxvd19vdXRjb21lOiJwcm9jZWVkIixpdGVtX3BheW1lbnQ6ImZpbmFuY2UiLGZsb3dfc3RhZ2U6IiJ9KTticmVhaztjYXNlICJhc2Nfc3BlY2lhbF9vZmZlciI6Yz1PYmplY3QuYXNzaWduKHt9LGMse3Byb21vdGlvbl9uYW1lOiQoImgyOmZpcnN0LWNoaWxkIixhKS5sZW5ndGg\/ZS5hc2NUZXh0UmVwbGFjZXIoJCgiaDI6Zmlyc3QtY2hpbGQiLGEpLnRleHQoKSk6IkRlYWxlciBQcm9tbyIsZGVwYXJ0bWVudDplLmdldEQyY0RlcGFydG1lbnQoYSksCnByb2R1Y3RfbmFtZToiIixlbGVtZW50X3Bvc2l0aW9uOiJmbG9hdGluZyIsZmxvd19vdXRjb21lOiJzdGFydCJ9KTticmVhaztjYXNlICJhc2NfY29tbV9zdWJtaXNzaW9uIjpjPU9iamVjdC5hc3NpZ24oe30sYyx7Y29tbV90eXBlOiJjaGF0IixhZmZpbGlhdGlvbjoibmF0aXZlIixkZXBhcnRtZW50OmUuZ2V0RDJjRGVwYXJ0bWVudChhKSxhZmZpbGlhdGlvbl9pZDoibXVsdGktdXNlciIsY29tbV9zdGF0dXM6ImNybV91cGRhdGUifSk7YnJlYWs7Y2FzZSAiYXNjX2NvbW1fc3VibWlzc2lvbl9zYWxlcyI6Yz1PYmplY3QuYXNzaWduKHt9LGMse2NvbW1fdHlwZToiY2hhdCIsYWZmaWxpYXRpb246Im5hdGl2ZSIsZGVwYXJ0bWVudDplLmdldEQyY0RlcGFydG1lbnQoYSksYWZmaWxpYXRpb25faWQ6Im11bHRpLXVzZXIiLGNvbW1fc3RhdHVzOiJjcm1fdXBkYXRlIixlbGVtZW50X3Bvc2l0aW9uOiJwb3AtdXAifSk7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gY29uc29sZS5sb2coIkQyQVNDIEVSUk9SKENPREU6MDAxKSIsCmIsYSksITF9ITEhPT1hc2NUb3BDYXJEZXRhaWxzJiYiRDJDX0Zvcm1fc3VibWlzc2lvbl9zYWxlcyIhPWImJihjPU9iamVjdC5hc3NpZ24oe30sYyxhc2NUb3BDYXJEZXRhaWxzKSk7Y29uc29sZS5sb2coIkdBNCBGaW5hbCBEaWdpdGFsIERhdGEiLGMpO3JldHVybiBjfTtlLmlzQ3RhQ2xpY2s9ZnVuY3Rpb24oYil7bGV0IGE9ITE7YiBpbnN0YW5jZW9mIGpRdWVyeSYmKDA8Yi5jbG9zZXN0KCIubmV3VmRwQWN0aW9ucyIpLmxlbmd0aCYmKGE9ITApLDA8Yi5jbG9zZXN0KCIuY3RhLXRwbCIpLmxlbmd0aCYmKGE9ITApLCJwcm9tb0Rpc2NvdmVyQnV0dG9uIj09Yi5hdHRyKCJpZCIpJiYoYT0hMCksYi5oYXNDbGFzcygiZGl2Q2FyUGF5bWVudENhbGN1bGF0b3IiKSYmKGE9ITApLDA8Yi5jbG9zZXN0KCIuZGl2Q2FyUGF5bWVudENhbGN1bGF0b3IiKS5sZW5ndGgmJihhPSEwKSwwPGIuY2xvc2VzdCgiI3NjcmF0Y2hhbmRzYXZlX2VtYmVkZGVkIikubGVuZ3RoJiYoYT0hMCksInNjcmF0Y2hhbmRzYXZlX2VtYmVkZGVkIj09CmIuYXR0cigiaWQiKSYmKGE9ITApLGIuaGFzQ2xhc3MoImxvYW5DYWxjdWxhdG9yVHJpZ2dlciIpJiYoYT0hMCksMDxiLmNsb3Nlc3QoIi5sb2FuQ2FsY3VsYXRvclRyaWdnZXIiKS5sZW5ndGgmJihhPSEwKSxiLmhhc0NsYXNzKCJjdFByb21vIikmJihhPSEwKSwwPGIuY2xvc2VzdCgiLmN0UHJvbW8iKS5sZW5ndGgmJihhPSEwKSxiLmhhc0NsYXNzKCJvZmZlci1idG4iKSYmKGE9ITApLDA8Yi5jbG9zZXN0KCIub2ZmZXItYnRuIikubGVuZ3RoJiYoYT0hMCksYi5oYXNDbGFzcygidHJhZGVJbkJhcl9idG4iKSYmKGE9ITApLDA8Yi5jbG9zZXN0KCIudHJhZGVJbkJhcl9idG4iKS5sZW5ndGgmJihhPSEwKSwiVFJBREVJTiI9PWIuYXR0cigiZGF0YS1pZCIpJiYoYT0hMCkpO3JldHVybiBhfTtlLnN0YW5kYXJkaXplRm9ybUxhbmc9ZnVuY3Rpb24oYil7dm9pZCAwPT09YiYmJCgiaHRtbCIpLmF0dHIoImxhbmciKTtiPWIudG9Mb3dlckNhc2UoKTsiZW5nIj09YiYmKGI9ImVuIik7ImVuZ2xpc2giPT0KYiYmKGI9ImVuIik7ImZybiI9PWImJihiPSJmciIpOyJmcmVuY2giPT1iJiYoYj0iZnIiKTsiZW4iIT1iJiYiZnIiIT1iJiYoYj0iZW4iKTtyZXR1cm4gYn07ZS5DdGFUZXh0UGFyc2VyPWZ1bmN0aW9uKGIpe2QucGFnZUlkLnRvTG93ZXJDYXNlKCk7bGV0IGE9d2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLnRvTG93ZXJDYXNlKCksYz0iIjtpZigvbmV3XC9pbnZlbnRvcnlcL3NlYXJjaC8udGVzdChhKXx8L25ldWZzXC9pbnZlbnRhaXJlXC9yZWNoZXJjaGUvLnRlc3QoYSkpYys9IkQyQyBDVEFNIC0gTmV3IEludmVudG9yeSBTUlA6ICI7ZWxzZSBpZigvbmV3XC9pbnZlbnRvcnkvLnRlc3QoYSl8fC9uZXVmc1wvaW52ZW50YWlyZS8udGVzdChhKSljKz0iRDJDIENUQU0gLSBOZXcgSW52ZW50b3J5IFZEUDogIjtlbHNlIGlmKC9uZXcvLnRlc3QoYSl8fC9uZXVmcy8udGVzdChhKSljKz0iRDJDIENUQU0gLSBOZXcgU2hvd1Jvb20gVkRQOiAiO2Vsc2UgaWYoL3VzZWQvLnRlc3QoYSl8fC9vY2Nhc2lvbi8udGVzdChhKSljKz0KIkQyQyBDVEFNIC0gVXNlZCBJbnZlbnRvcnkgVkRQOiAiO3JldHVybiBjK2UuYXNjVGV4dFJlcGxhY2VyKGIudGV4dCgpKX07ZS5nZXRMZWFkVHlwZUZvcm1OYW1lPWZ1bmN0aW9uKGIpe2xldCBhPTA8Yi5jbG9zZXN0KCJmb3JtIikubGVuZ3RoP2IuY2xvc2VzdCgiZm9ybSIpLmF0dHIoImlkIik6Yi5hdHRyKCJpZCIpLGM9ITE7ZC5wYWdlSWQuaW5jbHVkZXMoIm9yZGVyIHBhcnRzIikmJihjPSJQYXJ0c1JlcXVlc3QiKTtkLnBhZ2VJZC5pbmNsdWRlcygidGVzdCBkcml2ZSIpJiYoYz0iVGVzdERyaXZlIik7ZC5wYWdlSWQuaW5jbHVkZXMoInByaWNlIHJlcXVlc3QiKSYmKGM9IlByaWNlUmVxdWVzdCIpO2QucGFnZUlkLmluY2x1ZGVzKCJicm9jaHVyZSIpJiYoYz0iQnJvY2h1cmVzUmVxdWVzdCIpO2QucGFnZUlkLmluY2x1ZGVzKCJyZXF1ZXN0IGFwcG9pbnRtZW50IikmJihjPSJTZXJ2aWNlUmVxdWVzdCIpO2QucGFnZUlkLmluY2x1ZGVzKCJ0aXJlcyIpJiYoYz0iVGlyZXNSZXF1ZXN0Iik7CmQucGFnZUlkLmluY2x1ZGVzKCJib2R5IHNob3AiKSYmKGM9IkJvZHlTaG9wIik7ZC5wYWdlSWQuaW5jbHVkZXMoInJlY2FsbCIpJiYoYz0iUmVjYWxscyIpO2lmKGIgaW5zdGFuY2VvZiBqUXVlcnkmJigwPGIuY2xvc2VzdCgiLmRpdlNwYW5GaWx0ZXJzIikubGVuZ3RofHwwPGIuY2xvc2VzdCgiI2Jhbm5lcl9zZWFyY2hfYmFyX2NvbnRhaW5lciIpLmxlbmd0aCkpcmV0dXJuITE7Yj1lLmZvcm1EYXRhQnlJZChiKTtyZXR1cm4hMSE9PWI\/Yi5mb3JtTmFtZTohMSE9PWM\/ZDJhc2NSZXNvbHZlTGVhZFR5cGUoZC5mb3JtTWFwLGMpOiJVTktOT1dOOiAiK2F9O2UuZm9ybURhdGFCeUlkPWZ1bmN0aW9uKGIpe2lmKGIgaW5zdGFuY2VvZiBqUXVlcnkpe2xldCBhPTA8Yi5jbG9zZXN0KCJmb3JtIikubGVuZ3RoP2IuY2xvc2VzdCgiZm9ybSIpLmF0dHIoImlkIik6Yi5hdHRyKCJpZCIpO3ZvaWQgMD09PWEmJigwPGIuY2xvc2VzdCgiI2NvbnRhY3Rwb3B1cCIpLmxlbmd0aCYmKGE9IlJlcXVlc3QgZm9yIGNvbnRhY3QiKSwKMDxiLmNsb3Nlc3QoIi5jcmVkaXRTY29yZUlucHV0IikubGVuZ3RoJiYoYT0iY3JlZGl0U2NvcmUiKSwwPGIuY2xvc2VzdCgiI3NjcmF0Y2hBbmRTYXZlUG9wdXBDb250YWluZXJfYm5wIikubGVuZ3RoJiYoYT0iUmViYXRlQ291cG9uTmV3Qk5QIiksMDxiLmNsb3Nlc3QoIi5zY3JhdGNoYW5kc2F2ZV90ZXh0IikubGVuZ3RoJiYoYT0iUmViYXRlQ291cG9uIikpO2lmKGQucGFnZUlkLmluY2x1ZGVzKCJzaG93cm9vbTpjb21wYXJlIikmJnZvaWQgMCE9PWEmJmEuaW5jbHVkZXMoImZlYXR1cmVkUHJvZHVjdF8iKSlyZXR1cm57Zm9ybVR5cGU6InJlc2VhcmNoIixmb3JtTmFtZToiQ29tcGFyZUZvcm0ifTtpZigwPGIuY2xvc2VzdCgiI211bHRpZm9ybV9lbWJlZGRlZCIpLmxlbmd0aCYmMDxiLmNsb3Nlc3QoIiNtdWx0aWZvcm1fZW1iZWRkZWQiKS5maW5kKCIubXVsdGlmb3JtX2VtYmVkZGVkX3N0ZXAxIikubGVuZ3RoKXJldHVybntmb3JtVHlwZToiY29uc3VtZXJfY29udGFjdCIsZm9ybU5hbWU6IkRpc2NvdmVyT2ZmZXIifTsKc3dpdGNoKGEpe2Nhc2UgIm1pbmlmb3JtIjpjYXNlICJmaW5hbmNlX211bHRpc3RlcF9mb3JtIjpyZXR1cm57Zm9ybVR5cGU6ImZpbmFuY2VfY3JlZGl0Iixmb3JtTmFtZToiQ3JlZGl0TXVsdGlzdGVwUmVxdWVzdCJ9O2Nhc2UgImxvYW4tZm9ybSI6cmV0dXJue2Zvcm1UeXBlOiJmaW5hbmNlX2NyZWRpdCIsZm9ybU5hbWU6IlByaWNlUmVxdWVzdCJ9O2Nhc2UgImZvcm1EZWFsZXJBcHBvaW50bWVudCI6cmV0dXJue2Zvcm1UeXBlOiJjb25zdW1lcl9jb250YWN0Iixmb3JtTmFtZToiRGVhbGVyQXBwb2ludG1lbnQifTtjYXNlICJTbGlkZVdpZGdldEZvcm0iOnJldHVybntmb3JtVHlwZToiY29uc3VtZXJfY29udGFjdCIsZm9ybU5hbWU6IlNsaWRlV2lkZ2V0Rm9ybSJ9O2Nhc2UgImNyZWRpdFNjb3JlIjpyZXR1cm57Zm9ybVR5cGU6ImZpbmFuY2VfY3JlZGl0Iixmb3JtTmFtZToiQ3JlZGl0UmVxdWVzdF9TaG9ydCJ9O2Nhc2UgIlJlYmF0ZUNvdXBvbk5ld0JOUCI6cmV0dXJue2Zvcm1UeXBlOiJwcmUtb3JkZXIiLApmb3JtTmFtZToiUmViYXRlQ291cG9uTmV3Qk5QIn07Y2FzZSAiYmFubmVyX3NlYXJjaF9iYXJfc2VsZWN0X2JvZHkiOnJldHVybntmb3JtVHlwZToiY29uc3VtZXJfY29udGFjdCIsZm9ybU5hbWU6IkJhbm5lckZvcm0ifTtjYXNlICJwYXltZW50Q2FsY3VsYXRvckludGVydmFsIjpjYXNlICJwYXltZW50Q2FsY3VsYXRvclRyaW1TZWxlY3QiOmNhc2UgInBheW1lbnRDYWxjdWxhdG9yS21BbGxvd2FuY2UiOmNhc2UgInBheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnQiOnJldHVybntmb3JtVHlwZToiZmluYW5jZV9jcmVkaXQiLGZvcm1OYW1lOiJNb250aGx5UGF5bWVudHMifTtjYXNlICJjb250YWN0X2Zvcm0iOmNhc2UgImNvbnRhY3RfZm9ybTIiOmNhc2UgImNvbnRhY3RfZm9ybTMiOmNhc2UgIlJlcXVlc3QgZm9yIGNvbnRhY3QiOnJldHVybntmb3JtVHlwZToiY29uc3VtZXJfY29udGFjdCIsZm9ybU5hbWU6IkNvbnRhY3RSZXF1ZXN0In07Y2FzZSAicXVpY2tFbWFpbEZvcm0iOmNhc2UgIm1haWxFeHByZXNzUmVxdWVzdCI6cmV0dXJue2Zvcm1UeXBlOiJjb25zdW1lcl9jb250YWN0IiwKZm9ybU5hbWU6IlF1aWNrRW1haWwifTtjYXNlICJ0cmFkaW5NYWtlIjpjYXNlICJ0cmFkaW5ZZWFyIjpjYXNlICJ0cmFkaW5Nb2RlbCI6Y2FzZSAidHJhZGluVHJpbSI6Y2FzZSAidHJhZGVJbkJhclBvcHVwRm9ybSI6Y2FzZSAiU2VsbENhckZvcm0iOnJldHVybntmb3JtVHlwZToicmVzZWFyY2giLGZvcm1OYW1lOiJQcmljZVZlaGljbGUifX1pZigwPGIuY2xvc2VzdCgiLnNjcmF0Y2hib2R5IikubGVuZ3RofHwwPGIuY2xvc2VzdCgiLnNjcmF0Y2hib2R5MSIpLmxlbmd0aHx8MDxiLmNsb3Nlc3QoIi5zY3JhdGNoYm9keTIiKS5sZW5ndGh8fDA8Yi5jbG9zZXN0KCIuc2NyYXRjaGJvZHkzIikubGVuZ3RoKXJldHVybntmb3JtVHlwZToiY29uc3VtZXJfY29udGFjdCIsZm9ybU5hbWU6IlJlYmF0ZUNvdXBvbk5ldyJ9O2lmKDA8Yi5jbG9zZXN0KCIjbW9udGhseVBheW1lbnRzUG9wdXBDb250YWluZXIiKS5sZW5ndGgpcmV0dXJue2Zvcm1UeXBlOiJmaW5hbmNlX2NyZWRpdCIsZm9ybU5hbWU6Ik1vbnRobHlQYXltZW50cyJ9fXJldHVybiExfTsKZS5jb21tU3ViRGF0YVBhcnNlcj1mdW5jdGlvbihiLGEpe2xldCBjPXtmb3JtX25hbWU6IiIsZm9ybV90eXBlOiIiLGZvcm1fZGVwdDoiIixmb3JtX2xhbmc6IiJ9Oy9hc2NfY29tbV9zdWJtaXNzaW9uLy50ZXN0KGIpJiYiU2xpZGVXaWRnZXRGb3JtIj09YS5jbG9zZXN0KCJmb3JtIikuYXR0cigiaWQiKSYmKGMuZm9ybV9uYW1lPSJMZWFkOiBDaGF0IFN1Ym1pc3Npb24iKTtyZXR1cm4gY307ZS5hc2NUZXh0UmVwbGFjZXI9ZnVuY3Rpb24oYil7Yj1iLnJlcGxhY2UoLyhcclxufFxufFxyfFx0KS9nbSwiIik7Yj1iLnJlcGxhY2UoLzxcLz9bXj5dKyg+fCQpL2csIiIpO3JldHVybiBiPWIudHJpbSgpfTtlLmhhc2hUZXh0PWZ1bmN0aW9uKGIpe2I9KG5ldyBUZXh0RW5jb2RlcikuZW5jb2RlKGIudHJpbSgpLnRvTG93ZXJDYXNlKCkpO3JldHVybiBjcnlwdG8uc3VidGxlLmRpZ2VzdCgiU0hBLTI1NiIsYikudGhlbihhPT5BcnJheS5mcm9tKG5ldyBVaW50OEFycmF5KGEpKS5tYXAoYz0+CmMudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKSkuam9pbigiIikpfTtlLmdldEZvcm1PdXRjb21lPWZ1bmN0aW9uKGIpe3N3aXRjaChiKXtjYXNlICJhc2NfZm9ybV9zdWJtaXNzaW9uX3BhcnRzIjpjYXNlICJhc2NfZm9ybV9zdWJtaXNzaW9uX3NhbGVzIjpjYXNlICJhc2NfZm9ybV9zdWJtaXNzaW9uX3NlcnZpY2UiOmNhc2UgIkQyQ19MZWFkcyI6cmV0dXJuImNybV91cGRhdGUiO2Nhc2UgImFzY19mb3JtX3N1Ym1pc3Npb25fc2FsZXNfYXBwdCI6Y2FzZSAiYXNjX2Zvcm1fc3VibWlzc2lvbl9zZXJ2aWNlX2FwcHQiOnJldHVybiJhcHB0X2Jvb2tlZCJ9fTtlLmdldEQyY0RlcGFydG1lbnQ9ZnVuY3Rpb24oYil7bGV0IGE9ZC5wYWdlSWQudG9Mb3dlckNhc2UoKSxjPXdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS50b0xvd2VyQ2FzZSgpLGY9Ik9USEVSIjsvbmV1ZnMvLnRlc3QoYykmJihmPSJORVciKTsvbmV3Ly50ZXN0KGMpJiYoZj0iTkVXIik7L29jY2FzaW9uLy50ZXN0KGMpJiYKKGY9IlVTRUQiKTsvdXNlZC8udGVzdChjKSYmKGY9IlVTRUQiKTthLmluY2x1ZGVzKCJmaW5hbmNlIikmJihmPSJGSU5BTkNFIik7YS5pbmNsdWRlcygicmVxdWVzdCBhcHBvaW50bWVudCIpJiYoZj0iU0VSVklDRSIpO2EuaW5jbHVkZXMoInBhcnRzIikmJihmPSJTRVJWSUNFIik7YS5pbmNsdWRlcygidGlyZXMiKSYmKGY9IlNFUlZJQ0UiKTthLmluY2x1ZGVzKCJib2R5IHNob3AiKSYmKGY9IlNFUlZJQ0UiKTthLmluY2x1ZGVzKCJmaW5hbmNlIGRlcGFydG1lbnQiKSYmKGY9IkZJTkFOQ0UiKTthLmluY2x1ZGVzKCJjcmVkaXQiKSYmKGY9IkZJTkFOQ0UiKTthLmluY2x1ZGVzKCJjb250YWN0IHVzIikmJihmPSJTQUxFUyIpO2EuaW5jbHVkZXMoInJlY2FsbCIpJiYoZj0iU0VSVklDRSIpO2IgaW5zdGFuY2VvZiBqUXVlcnkmJigwPGIuY2xvc2VzdCgiI2ZpbmFuY2VNdWx0aXN0ZXBQb3B1cENvbnRhaW5lciIpLmxlbmd0aCYmKGY9IkZJTkFOQ0UiKSwiZmluYW5jZU11bHRpc3RlcFBvcHVwQ29udGFpbmVyIj09CmIuYXR0cigiaWQiKSYmKGY9IkZJTkFOQ0UiKSwwPGIuY2xvc2VzdCgiI1NlbGxDYXJGb3JtIikubGVuZ3RoJiYoZj0iRklOQU5DRSIpLHZvaWQgMCE9PWIuYXR0cigiZGF0YS1kZXBhcnRtZW50IikmJihmPWIuYXR0cigiZGF0YS1kZXBhcnRtZW50IikpKTtyZXR1cm4gZn07ZS5nZXRGb3JtVHlwZT1mdW5jdGlvbihiKXtsZXQgYT1kLnBhZ2VJZC50b0xvd2VyQ2FzZSgpO2lmKGEuaW5jbHVkZXMoInJlcXVlc3QgYXBwb2ludG1lbnQiKSlyZXR1cm4ic2VydmljZV9hcHBvaW50bWVudCI7aWYoYS5pbmNsdWRlcygib3JkZXIgcGFydHMiKXx8YS5pbmNsdWRlcygib3JkZXIgdGlyZXMiKSlyZXR1cm4icGFydHMiO2lmKGEuaW5jbHVkZXMoImJvZHkgc2hvcCIpKXJldHVybiJib2R5X3Nob3AiO2lmKGEuaW5jbHVkZXMoImZpbmFuY2UgZGVwYXJ0bWVudCIpfHxhLmluY2x1ZGVzKCJjcmVkaXQiKSlyZXR1cm4iY3JlZGl0IjtiPWUuZm9ybURhdGFCeUlkKGIpO3JldHVybiExIT09Yj9iLmZvcm1UeXBlOgoiY29uc3VtZXJfY29udGFjdCJ9O2UuZ2V0RWxlbWVudFR5cGU9ZnVuY3Rpb24oYil7cmV0dXJuInRvcEJhbm5lckltYWdlIj09Yi5hdHRyKCJpZCIpfHwwPGIuY2xvc2VzdCgiI3RvcEJhbm5lckltYWdlIikubGVuZ3RoPyJiYW5uZXIiOjA8Yi5jbG9zZXN0KCIuaGVhZGVyLWltYWdlLXdyYXBwZXIiKS5sZW5ndGg\/ImhlYWRlciI6MDxiLmNsb3Nlc3QoIi5sYW5ndWFnZUJhciIpLmxlbmd0aD8iYWNjZXNzaWJpbGl0eV90b29sIjowPGIuaGFzKCIuZGVhbGVyTWFwTGluayIpLmxlbmd0aD8ibWFwIjowPGIuY2xvc2VzdCgiLnNsaWRlcyIpLmxlbmd0aD8iZ2FsbGVyeSI6MDxiLmNsb3Nlc3QoIi51c2VkVmRwQWN0aW9ucyIpLmxlbmd0aD8iZGlnaXRhbF9yZXRhaWxpbmdfdG9vbCI6IlB1bGxvdXRfQnVpbGQtYW5kLVByaWNlIj09Yi5hdHRyKCIudXNlZFZkcEFjdGlvbnMiKT8iYmFubmVyIjoibmV3VmRwRnVsbHdpZHRoVmlkZW9JZnJhbWUiPT1iLmF0dHIoIi51c2VkVmRwQWN0aW9ucyIpPwoidmlkZW8iOiJkaWdpdGFsX3JldGFpbGluZyJ9O2UuZ2V0VmVoaWNsZUpTT049ZnVuY3Rpb24oYixhKXskLmdldCgiL2pzL2pzb24vIitiKyIuanNvbiIpLmRvbmUoZnVuY3Rpb24oYyl7Yy5pdGVtX251bWJlcj1iO2lmKCIiIT1hJiZ2b2lkIDAhPT1hKXdpbmRvd1thXShjKTtyZXR1cm4gY30pfTtlLnJlcG9ydD1mdW5jdGlvbihiLGEsYyxmKXtpZih2b2lkIDA9PT1kLnN1Yl9nYTR8fCJOIj09ZC5zdWJfZ2E0KWM9T2JqZWN0LmFzc2lnbih7fSxjLHtzZW5kX3RvOiJHLVo1UThaNUM3S0YifSk7aWYoITA9PT1sJiYiYXNjX2Zvcm1fZW5nYWdlbWVudCI9PWEpcmV0dXJuITE7Z3RhZygiZXZlbnQiLGEsYyk7bD0hMDtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bD0hMX0sMUUzKX07cmV0dXJuIGV9O3NldFRpbWVvdXQoZnVuY3Rpb24oKXtnLnNldFZlaGljbGVTdGF0dXMoITEpOyJ2ZHAiPT1kLnBhZ2VJZCYmKDA8JCgiI3RvcGNhcmlkIikubGVuZ3RoJiYiIiE9JCgiI3RvcGNhcmlkIikudmFsKCkmJgoiMCIhPSQoIiN0b3BjYXJpZCIpLnZhbCgpP2cuZ2V0VmVoaWNsZUpTT04oJCgiI3RvcGNhcmlkIikudmFsKCksImFzY1VwZGF0ZVRvcENhckRhdGEiKTphc2NVcGRhdGVUb3BDYXJEYXRhKCExKSk7c2V0VGltZW91dChmdW5jdGlvbigpeyQoZnVuY3Rpb24oYil7Zy5zZXREaWdpdGFsRGF0YSgiYXNjX3BhZ2V2aWV3Iix7fSl9KX0sMUUzKTskLmVhY2goayxmdW5jdGlvbihiLGEpe2cuYmluZEVsZW1lbnRzKGIsYSl9LCExKTskKCIucmV2ZWFsLW1vZGFsIikub25lKCJwb3B1cGl6ZXIub25PcGVuIixmdW5jdGlvbihiKXtnLnNldERpZ2l0YWxEYXRhKCJhc2Nfc3BlY2lhbF9vZmZlciIsJChiLnRhcmdldCkpO2cuYmluZEVsZW1lbnRzKCJhc2NfZm9ybV9lbmdhZ2VtZW50IixbJChiLnRhcmdldCkuZmluZCgiZm9ybSBpbnB1dCwgZm9ybSBzZWxlY3QsIGZvcm0gdGV4dGFyZWEiKV0pfSk7c2V0VGltZW91dCgoKT0+eyQoImFbZGF0YS1sZWFkLXRyaWdnZXI9J0RlYWxlckFwcG9pbnRtZW50J10iKS5vbigiY2xpY2siLApmdW5jdGlvbigpe2cuc2V0RGlnaXRhbERhdGEoImFzY19zcGVjaWFsX29mZmVyIiwkKCIjbW9kYWxEZWFsZXJBcHBvaW50bWVudCIpKX0pOyQoImFbZGF0YS1sZWFkLXRyaWdnZXI9J1BheXBhbFBheW1lbnQnXSIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtnLnNldERpZ2l0YWxEYXRhKCJhc2Nfc3BlY2lhbF9vZmZlciIsJCgiI21vZGFsUGF5cGFsUGF5bWVudCIpKX0pfSwxRTMpOzA8JCgiI2ZsdFNvcnRJZCIpLmxlbmd0aCYmKGFzY0xhc3RTZWFyY2hGaWx0ZXJTb3J0PSQoIiNmbHRTb3J0SWQgLmRpdkFjdGlvbldyYXBwZXIgLmRpdkxhYmVsIikuaHRtbCgpKTtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiB3aW5kb3cuQWJzdHJhY3RVc2VkU3JwT2JqZWN0KXt2YXIgZT1uZXcgQWJzdHJhY3RVc2VkU3JwT2JqZWN0KHtuYW1lOiJkMmNfaG9uZGFfZ3RtIn0pO2UuYWRkVXNlZFNycEV2ZW50T2JzZXJ2ZXIoInByb3h5IixmdW5jdGlvbihiKXtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBiLmNtZCYmCiJyZXF1ZXN0Ij09PWIuY21kJiYhMSE9PWIuZGF0YSl7bGV0IGE9Yi5kYXRhLmZpbHRlclN0YXRlLmZpbHRlclNlYXJjaDtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YS5yZXN1bHRzPWIuZGF0YS5maWx0ZXJTdGF0ZS5jb3VudFNlYXJjaFJlc3VsdHM7YS50eXBlZFNlYXJjaD1iLmRhdGEuZmlsdGVyU3RhdGUudHlwZWRTZWFyY2g7YS5ldmVudF9hY3Rpb25fcmVzdWx0PSJzZWFyY2giO2EuZXZlbnRfYWN0aW9uPSJzZWFyY2giO2EuZmlsdGVySW5mbz1hc2NMYXN0RmlsdGVyQ2xpY2s7YXNjTGFzdEZpbHRlckNsaWNrPSExO09iamVjdC5rZXlzKGEpLmluY2x1ZGVzKCJzb3J0IikmJmFzY0xhc3RTZWFyY2hGaWx0ZXJTb3J0IT1hLnNvcnRbMF0mJihhc2NMYXN0U2VhcmNoRmlsdGVyU29ydD1hLnNvcnRbMF0sYS5ldmVudF9hY3Rpb249InNvcnQiKTtnLnNldERpZ2l0YWxEYXRhKCJhc2NfZWxlbWVudF9jb25maWd1cmF0aW9uIixhKX0sMTAwKX19KTtlLmluaXRVc2VkU3JwT2JzZXJ2ZXIoKX0kKGRvY3VtZW50KS5vbigidXNlZFNycEZpbHRlcnMub25DaGFuZ2UiLAoiYm9keSIsKGIsYSk9PntiPSQoIiMiK2EuaWQpO2I9JCgiLmZsdFRpdGxlIixiKS50ZXh0KCk7bGV0IGM9YS52YWx1ZTt2YXIgZj0iIjtsZXQgbT0idGV4dF9zZWFyY2giO2EudmFsdWUmJmEudmFsdWUudG9TdHJpbmcoKS5pbmNsdWRlcygiOjoiKT8obT0iYnV0dG9uIixmPWEudmFsdWUuc3BsaXQoIjo6IiksYS52YWx1ZT1mWzBdLGY9ZlsxXSk6YS52YWx1ZSYmYS52YWx1ZS50b1N0cmluZygpLmluY2x1ZGVzKCIsIikmJihtPSJyYW5nZV9zbGlkZXIiKTthc2NMYXN0RmlsdGVyQ2xpY2s9e2lkOmEuaWQsdGl0bGU6YS5sYWJlbCx2YWx1ZTphLnZhbHVlLG9yZ192YWx1ZTpjLHN0YXRlOmYsdHlwZTptLGxhYmVsOmJ9fSk7JCgiYm9keSIpLm9uKCJlbWFpbEhhbmRsZXIuZW1haWxTZW50IixmdW5jdGlvbihiLGEpe2NvbnNvbGUubG9nKCJEMkFTQyBFbWFpbCBTZW50IFRyaWdnZXIiLGIsYSk7aWYodm9pZCAwIT09YS5kZXRhaWwubGVhZFR5cGUpe2I9YS5kZXRhaWwubGVhZFR5cGU7aWYoYi5pbmNsdWRlcygiTGVhZDogUmVxdWVzdCBmb3IgZmluYW5jaW5nIChNdWx0aXN0ZXApIil8fApiLmluY2x1ZGVzKCJMZWFkIDogRGVtYW5kZSBkZSBmaW5hbmNlbWVudCAoUGx1cyIpKXJldHVybiExO2IuaW5jbHVkZXMoIkxlYWQgOiBEZW1hbmRlIGRlIHZhbGV1ciIpJiYoYj0iTGVhZCA6IERlbWFuZGUgZGUgdmFsZXVyIGQnZWNoYW5nZSIpO2IudHJpbSgpO2EuZGV0YWlsLmxlYWRUeXBlPWJ9dm9pZCAwIT09YS5kZXRhaWwubGVhZFR5cGUmJiIiIT1hLmRldGFpbC5sZWFkVHlwZXx8dm9pZCAwPT09YS5kZXRhaWwubWFpbElkfHwoYS5kZXRhaWwubGVhZFR5cGU9ZDJhc2NSZXNvbHZlTGVhZFR5cGUoZC5mb3JtTWFwLGEuZGV0YWlsLm1haWxJZCkpO2EuZGV0YWlsLmxlYWROYW1lQXJyPWQuZm9ybU1hcDt2b2lkIDA9PT1hLmRldGFpbC5jb25maXJtX2VtYWlsJiYoYS5kZXRhaWwuY29uZmlybV9lbWFpbD0iIik7dm9pZCAwPT09YS5kZXRhaWwuY29uZmlybV9waG9uZV9udW1iZXImJihhLmRldGFpbC5jb25maXJtX3Bob25lX251bWJlcj0iIik7UHJvbWlzZS5hbGwoW2cuaGFzaFRleHQoYS5kZXRhaWwuY29uZmlybV9lbWFpbCksCmcuaGFzaFRleHQoYS5kZXRhaWwuY29uZmlybV9waG9uZV9udW1iZXIpXSkudGhlbihjPT57dmFyIFtmLG1dPWM7YS5kZXRhaWwuY29uZmlybV9lbWFpbD1mO2EuZGV0YWlsLmNvbmZpcm1fcGhvbmVfbnVtYmVyPW19KTt2b2lkIDAhPT1hc2NUb3BDYXJEZXRhaWxzLm1ha2UmJiIiIT1hc2NUb3BDYXJEZXRhaWxzLm1ha2V8fHZvaWQgMD09PWEuZGV0YWlsLm1ha2V8fCIiPT1hLmRldGFpbC5tYWtlfHwoYS5kZXRhaWwudmNhdGVnb3J5PWEuZGV0YWlsLmNvbmRpdGlvbixhLmRldGFpbC52ZXJzaW9uPWEuZGV0YWlsLnRyaW0sYS5kZXRhaWwuYm9keVR5cGVJRD1hLmRldGFpbC50cmltLGEuZGV0YWlsLmNvbG9yPSIiLGEuZGV0YWlsLnZjYXJidXJhbnQ9IiIsYS5kZXRhaWwuZGF0ZV9saXN0aW5nPSIiLGFzY1VwZGF0ZVRvcENhckRhdGEoYS5kZXRhaWwpKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Zy5zZXREaWdpdGFsRGF0YSgiYXNjX2Zvcm1fc3VibWlzc2lvbiIsYS5kZXRhaWwpfSwyNTApfSk7CiQoIiNTbGlkZVdpZGdldEZvcm0gYS5idG4tZGVmYXVsdCIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtsZXQgYj1kMmFzY1Jlc29sdmVMZWFkVHlwZShkLmZvcm1NYXAsIlNsaWRlV2lkZ2V0Rm9ybSIpO2cuc2V0RGlnaXRhbERhdGEoImFzY19mb3JtX3N1Ym1pc3Npb24iLHtkZXBhcnRtZW50OiJzYWxlcyIsbGVhZFR5cGU6YixjdXJyZW50VVJMOiIifSl9KTskKGRvY3VtZW50KS5vbigiZm9ybS5zdGVwIiwiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0iLGZ1bmN0aW9uKGIpe2cuc2V0RGlnaXRhbERhdGEoImFzY19yZXRhaWxfcHJvY2VzcyIsYil9KTskKGRvY3VtZW50KS5vbigibXVsdGlGb3JtRmluYW5jZVN1Ym1pdCIsZG9jdW1lbnQuYm9keSxmdW5jdGlvbihiKXtiPWQyYXNjUmVzb2x2ZUxlYWRUeXBlKGQuZm9ybU1hcCwiQ3JlZGl0TXVsdGlzdGVwUmVxdWVzdCIpO2cuc2V0RGlnaXRhbERhdGEoImFzY19mb3JtX3N1Ym1pc3Npb24iLHtkZXBhcnRtZW50OiJmaW5hbmNlIixsZWFkVHlwZTpiLApjdXJyZW50VVJMOiIifSl9KX0sMUUzKTt3aW5kb3cuZDJhc2M9Z307Ci8qKiAvbS9qcy9qcXVlcnkucmV2ZWFsLmpzICoqLwp2YXIgX19fZDJjX2pxdWVyeXJldmVhbGpzX2Nfb249IjIwMjUtMDUtMjMgMTc6MDY6NDIiOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX2pxdWVyeXJldmVhbGpzX2Nfb249IjIwMjQtMDUtMTQgMTA6MzA6MDUiOyJ1c2Ugc3RyaWN0IjsKKGZ1bmN0aW9uKGIpe2IoImJvZHkiKS5vbigiY2xpY2siLCJhW2RhdGEtcmV2ZWFsLWlkXSIsZnVuY3Rpb24oYSl7YS5wcmV2ZW50RGVmYXVsdCgpO2E9Yih0aGlzKS5hdHRyKCJkYXRhLXJldmVhbC1pZCIpO2IoIiMiK2EpLnJldmVhbChiKHRoaXMpLmRhdGEoKSl9KTtiLmZuLnJldmVhbD1mdW5jdGlvbihhKXthPWIuZXh0ZW5kKHt9LHthbmltYXRpb246ImZhZGVBbmRQb3AiLGFuaW1hdGlvbnNwZWVkOjMwMCxjbG9zZW9uYmFja2dyb3VuZGNsaWNrOiEwLGRpc21pc3Ntb2RhbGNsYXNzOiJjbG9zZS1yZXZlYWwtbW9kYWwiLGNsb3Nlb25lc2NhcGU6ITB9LGEpO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtmdW5jdGlvbiBmKCl7Im9iamVjdCI9PXR5cGVvZiBwb3B1cFN1cGVydmlzb3ImJnNldFRpbWVvdXQocG9wdXBTdXBlcnZpc29yLnJlcG9zaXRpb24sMUUzKTtnPSExfXZhciBjPWIodGhpcyksaD1wYXJzZUludChjLmNzcygidG9wIikpLG09Yy5oZWlnaHQoKStoLGc9ITEsCmQ9YigiLnJldmVhbC1tb2RhbC1iZyIpOzA9PWQubGVuZ3RoJiYoZD1iKCc8ZGl2IGNsYXNzPSJyZXZlYWwtbW9kYWwtYmciIC8+JykuaW5zZXJ0QWZ0ZXIoYykpO2Mub24oInJldmVhbDpvcGVuIixmdW5jdGlvbigpe3ZhciBrPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93LmlubmVySGVpZ2h0P3dpbmRvdy5pbm5lckhlaWdodDpiKHdpbmRvdykuaGVpZ2h0KCksbj1iKGMpLm91dGVySGVpZ2h0KCk7YihjKS5vZmZzZXQoKTtiKGRvY3VtZW50KS5zY3JvbGxUb3AoKTt2YXIgbD0vTW9iaS8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KT81OjIwLGU9KGstbikvMitsO2U9ZTxsfHxrPG4\/bDplOzA8YigiI2QyY19ib2R5Q29udGVudCIpLmxlbmd0aCYmKGUtPWIoIiNkMmNfYm9keUNvbnRlbnQiKS5vZmZzZXQoKS50b3ApOzA8YigiLnNsb3RNYWNoaW5lQ29udGFpbmVyIikubGVuZ3RoJiZiKCIuc2xvdE1hY2hpbmVDb250YWluZXIiKS5zaG93KCk7ZC5vZmYoImNsaWNrLm1vZGFsRXZlbnQiKTsKYigiLiIrYS5kaXNtaXNzbW9kYWxjbGFzcykub2ZmKCJjbGljay5tb2RhbEV2ZW50Iik7Z3x8KGc9ITAsImZhZGVBbmRQb3AiPT1hLmFuaW1hdGlvbiYmKGMuY3NzKHt0b3A6Yihkb2N1bWVudCkuc2Nyb2xsVG9wKCktbSxvcGFjaXR5OjAsdmlzaWJpbGl0eToidmlzaWJsZSJ9KSxkLmZhZGVJbihhLmFuaW1hdGlvbnNwZWVkLzIpLGMuZGVsYXkoYS5hbmltYXRpb25zcGVlZC8yKS5hbmltYXRlKHt0b3A6Yihkb2N1bWVudCkuc2Nyb2xsVG9wKCkrZSsicHgiLG9wYWNpdHk6MX0sYS5hbmltYXRpb25zcGVlZCxmKCkpKSwiZmFkZSI9PWEuYW5pbWF0aW9uJiYoYy5jc3Moe29wYWNpdHk6MCx2aXNpYmlsaXR5OiJ2aXNpYmxlIix0b3A6Yihkb2N1bWVudCkuc2Nyb2xsVG9wKCkrZX0pLGQuZmFkZUluKGEuYW5pbWF0aW9uc3BlZWQvMiksYy5kZWxheShhLmFuaW1hdGlvbnNwZWVkLzIpLmFuaW1hdGUoe29wYWNpdHk6MX0sYS5hbmltYXRpb25zcGVlZCxmKCkpKSwibm9uZSI9PWEuYW5pbWF0aW9uJiYKKGMuY3NzKHt2aXNpYmlsaXR5OiJ2aXNpYmxlIix0b3A6Yihkb2N1bWVudCkuc2Nyb2xsVG9wKCkrZX0pLGQuY3NzKHtkaXNwbGF5OiJibG9jayJ9KSxmKCkpLCJleHRlcm5hbEFuaW1hdGlvbiI9PWEuYW5pbWF0aW9uJiYoYy5jc3Moe3Zpc2liaWxpdHk6InZpc2libGUiLHRvcDpiKGRvY3VtZW50KS5zY3JvbGxUb3AoKStlLGRpc3BsYXk6Im5vbmUifSkuc2hvdygpLGQuY3NzKHtkaXNwbGF5OiJibG9jayJ9KSxmKCkpKTtjLm9mZigicmV2ZWFsOm9wZW4iKX0pO2Mub24oInJldmVhbDpjbG9zZSIsZnVuY3Rpb24oKXtiKCJib2R5IikuY3NzKCJvdmVyZmxvdyIsImF1dG8iKTtiKCIuc2xvdE1hY2hpbmVDb250YWluZXIiKS5oaWRlKCk7aWYoIWcmJihnPSEwLCJmYWRlQW5kUG9wIj09YS5hbmltYXRpb24mJihkLmRlbGF5KGEuYW5pbWF0aW9uc3BlZWQpLmZhZGVPdXQoYS5hbmltYXRpb25zcGVlZCksYy5hbmltYXRlKHt0b3A6Yihkb2N1bWVudCkuc2Nyb2xsVG9wKCktbSsicHgiLG9wYWNpdHk6MH0sCmEuYW5pbWF0aW9uc3BlZWQvMixmdW5jdGlvbigpe2MuY3NzKHt0b3A6aCxvcGFjaXR5OjEsdmlzaWJpbGl0eToiaGlkZGVuIn0pO2YoKX0pKSwiZmFkZSI9PWEuYW5pbWF0aW9uJiYoZC5kZWxheShhLmFuaW1hdGlvbnNwZWVkKS5mYWRlT3V0KGEuYW5pbWF0aW9uc3BlZWQpLGMuYW5pbWF0ZSh7b3BhY2l0eTowfSxhLmFuaW1hdGlvbnNwZWVkLGZ1bmN0aW9uKCl7Yy5jc3Moe29wYWNpdHk6MSx2aXNpYmlsaXR5OiJoaWRkZW4iLHRvcDpofSk7ZigpfSkpLCJub25lIj09YS5hbmltYXRpb24mJihjLmNzcyh7dmlzaWJpbGl0eToiaGlkZGVuIix0b3A6aH0pLGQuY3NzKHtkaXNwbGF5OiJub25lIn0pKSwiZXh0ZXJuYWxBbmltYXRpb24iPT1hLmFuaW1hdGlvbikpYy5oaWRlKCkub25lKCJhbmltYXRpb25FbmQiLGZ1bmN0aW9uKCl7Yih0aGlzKS5jc3Moe3Zpc2liaWxpdHk6ImhpZGRlbiIsdG9wOmgsZGlzcGxheToibm9uZSJ9KTtkLmNzcyh7ZGlzcGxheToibm9uZSJ9KX0pO2Mub2ZmKCJyZXZlYWw6Y2xvc2UiKTsKInVuZGVmaW5lZCIhPXR5cGVvZiBhLmNsb3NlZCYmYS5jbG9zZWQoKX0pO2MudHJpZ2dlcigicmV2ZWFsOm9wZW4iKTtiKCIuIithLmRpc21pc3Ntb2RhbGNsYXNzKS5vbigiY2xpY2subW9kYWxFdmVudCB0b3VjaHN0YXJ0IixmdW5jdGlvbigpe2MudHJpZ2dlcigicmV2ZWFsOmNsb3NlIil9KTthLmNsb3Nlb25iYWNrZ3JvdW5kY2xpY2smJihkLmNzcyh7Y3Vyc29yOiJwb2ludGVyIn0pLGQub24oImNsaWNrLm1vZGFsRXZlbnQiLGZ1bmN0aW9uKCl7Yy50cmlnZ2VyKCJyZXZlYWw6Y2xvc2UiKX0pKTtpZihhLmNsb3Nlb25lc2NhcGUpYigiYm9keSIpLm9uKCJrZXl1cCIsZnVuY3Rpb24oayl7Mjc9PT1rLndoaWNoJiZjLnRyaWdnZXIoInJldmVhbDpjbG9zZSIpfSl9KX19KShqUXVlcnkpOwovKiogL20vanMvcHJvbW9fZHluYW1pY19maWxlX2ZyLmpzICoqLwooZnVuY3Rpb24oKXt9KTsKLyoqIC9tL2pzL3RyYWRlSW5CYXIuanMgKiovCnZhciBfX19kMmNfdHJhZGVJbkJhcmpzX2Nfb249IjIwMjYtMDEtMjcgMTA6MzA6MDkiOyd1c2Ugc3RyaWN0JztmdW5jdGlvbiB0cmFkZUluQmFySW5pdGlhbGl6ZSgpe2Zvcih2YXIgcD0kKCdzZWxlY3RbbmFtZT0idHJhZGluTWFrZSJdJyksaz0kKCdzZWxlY3RbbmFtZT0idHJhZGluTW9kZWwiXScpLGw9JCgnc2VsZWN0W25hbWU9InRyYWRpblRyaW0iXScpLHE9JCgnc2VsZWN0W25hbWU9InRyYWRpblllYXIiXScpLGc9JCgnaW5wdXRbbmFtZT0idHJhZGluVmluIl0nKSx1PXt9LHc9KG5ldyBEYXRlKS5nZXRGdWxsWWVhcigpOzE5OTk8dzt3LS0pO3Aub24oImZvY3VzIixmdW5jdGlvbigpe3AuY3NzKCJiYWNrZ3JvdW5kIiwiI2ZmZmZmZiIpfSk7ay5vbigiZm9jdXMiLGZ1bmN0aW9uKCl7ay5jc3MoImJhY2tncm91bmQiLCIjZmZmZmZmIil9KTtsLm9uKCJmb2N1cyIsZnVuY3Rpb24oKXtsLmNzcygiYmFja2dyb3VuZCIsIiNmZmZmZmYiKX0pO3Eub24oImZvY3VzIixmdW5jdGlvbigpe3EuY3NzKCJiYWNrZ3JvdW5kIiwiI2ZmZmZmZiIpfSk7dmFyIGg9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/CiJFTkdMSVNIIjoiRlJFTkNIIixBPSc8b3B0aW9uIHZhbHVlPSIiPicrKCJFTkdMSVNIIj09aD8iTW9kZWwiOiJNb2QmZWdyYXZlO2xlIikrIjwvb3B0aW9uPiIsRD0nPG9wdGlvbiB2YWx1ZT0iIj4nKygiRU5HTElTSCI9PWg\/IlRyaW0iOiJWZXJzaW9uIikrIjwvb3B0aW9uPiIsRj0nPG9wdGlvbiB2YWx1ZT0iIj4nKygiRU5HTElTSCI9PWg\/IlllYXIiOiJBbm4mZWFjdXRlO2UiKSsiPC9vcHRpb24+IjskKGRvY3VtZW50KS5vbigidHJhZGVJbkJhci5jbG9uZWQiLGZ1bmN0aW9uKCl7cD0kKCdzZWxlY3RbbmFtZT0idHJhZGluTWFrZSJdJyk7az0kKCdzZWxlY3RbbmFtZT0idHJhZGluTW9kZWwiXScpO2w9JCgnc2VsZWN0W25hbWU9InRyYWRpblRyaW0iXScpO3E9JCgnc2VsZWN0W25hbWU9InRyYWRpblllYXIiXScpO2c9JCgnaW5wdXRbbmFtZT0idHJhZGluVmluIl0nKTtwLnZhbChwLnZhbCgpKTtxLnZhbChxLnZhbCgpKTtrLnZhbChrLnZhbCgpKTtsLnZhbChsLnZhbCgpKX0pOwpwLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7cC52YWwoJCh0aGlzKS52YWwoKSk7cS5lbXB0eSgpO2suZW1wdHkoKTtsLmVtcHR5KCk7IiIhPXRoaXMudmFsdWUmJiQuYWpheCh7dHlwZToiUE9TVCIsdXJsOigiRU5HTElTSCI9PWg\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L2dldFRyYWRlSW5CYXJEYXRhP3dzd2lkdGg9MCIsZGF0YVR5cGU6Impzb24iLGRhdGE6e2xhbmd1YWdlOmgsbWFrZTp0aGlzLnZhbHVlfSxzdWNjZXNzOmZ1bmN0aW9uKGIpe3U9YjtxLmFwcGVuZChGKTtmb3IodmFyIGYgaW4gYilxLmFwcGVuZCgnPG9wdGlvbiB2YWx1ZT0iJytmKyciPicrZisiPC9vcHRpb24+Iik7ZyYmZy5maXJzdCgpJiYiIiE9Zy5maXJzdCgpLmF0dHIoInZpblllYXIiKSYmKHEudmFsKGcuZmlyc3QoKS5hdHRyKCJ2aW5ZZWFyIikpLHEuZmlyc3QoKS50cmlnZ2VyKCJjaGFuZ2UiKSl9fSl9KTtxLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7dmFyIGI9JCh0aGlzKS52YWwoKSwKZj1wLnZhbCgpO3EudmFsKCQodGhpcykudmFsKCkpO2suZW1wdHkoKTtsLmVtcHR5KCk7aWYoMSE9JCgiaW5wdXRbbmFtZT1ub0NCQl0iKS52YWwoKSkkLmFqYXgoe3R5cGU6IlBPU1QiLHVybDooIkVOR0xJU0giPT1oPyIvZW4vIjoiL2ZyLyIpKyIvYWpheC9nZXRUcmFkZUluQmFyTW9kZWw\/d3N3aWR0aD0wIixkYXRhVHlwZToianNvbiIsZGF0YTp7bGFuZ3VhZ2U6aCxtYWtlOmYseWVhcjpifSxzdWNjZXNzOmZ1bmN0aW9uKGEpe2NvbnNvbGUubG9nKGEpO2suYXBwZW5kKEEpO2Zvcih2YXIgZD0wO2Q8YS5sZW5ndGg7ZCsrKXt2YXIgYz1hW2RdLm5hbWU7ay5hcHBlbmQoJzxvcHRpb24gdmFsdWU9IicrYysnIj4nK2MrIjwvb3B0aW9uPiIpfWcmJmcuZmlyc3QoKSYmIiIhPWcuZmlyc3QoKS5hdHRyKCJ2aW5Nb2RlbCIpJiYoay52YWwoZy5maXJzdCgpLmF0dHIoInZpbk1vZGVsIikpLGsuZmlyc3QoKS50cmlnZ2VyKCJjaGFuZ2UiKSk7Zy5maXJzdCgpLmF0dHIoInZpblllYXIiLAoiIik7Zy5maXJzdCgpLmF0dHIoInZpbk1vZGVsIiwiIil9fSk7ZWxzZSBpZigxPT0kKCJpbnB1dFtuYW1lPWlzQWNjdXRyYWRlXSIpLnZhbCgpKSQuYWpheCh7dHlwZToiUE9TVCIsdXJsOigiRU5HTElTSCI9PWg\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L2dldFRyYWRlSW5NbmdNb2RlbD93c3dpZHRoPTAiLGRhdGFUeXBlOiJqc29uIixkYXRhOntsYW5ndWFnZTpoLG1ha2U6Zix5ZWFyOmJ9LHN1Y2Nlc3M6ZnVuY3Rpb24oYSl7Y29uc29sZS5sb2coYSk7ay5hcHBlbmQoQSk7Zm9yKHZhciBkPTA7ZDxhLmxlbmd0aDtkKyspe3ZhciBjPWFbZF0ubmFtZTtrLmFwcGVuZCgnPG9wdGlvbiB2YWx1ZT0iJytjKyciPicrYysiPC9vcHRpb24+Iil9ZyYmZy5maXJzdCgpJiYiIiE9Zy5maXJzdCgpLmF0dHIoInZpbk1vZGVsIikmJihrLnZhbChnLmZpcnN0KCkuYXR0cigidmluTW9kZWwiKSksay5maXJzdCgpLnRyaWdnZXIoImNoYW5nZSIpKTtnLmZpcnN0KCkuYXR0cigidmluWWVhciIsCiIiKTtnLmZpcnN0KCkuYXR0cigidmluTW9kZWwiLCIiKX19KTtlbHNlIGlmKDA8T2JqZWN0LmtleXModSkubGVuZ3RoJiYiIiE9dGhpcy52YWx1ZSl7ay5hcHBlbmQoQSk7Zj17fTtmb3IodmFyIGU9MDtlPHVbYl0ubGVuZ3RoO2UrKykidW5kZWZpbmVkIj09dHlwZW9mIGZbdVtiXVtlXS5tb2RlbF0mJihrLmFwcGVuZCgnPG9wdGlvbiB2YWx1ZT0iJyt1W2JdW2VdLm1vZGVsKyciPicrdVtiXVtlXS5tb2RlbCsiPC9vcHRpb24+IiksZlt1W2JdW2VdLm1vZGVsXT11W2JdW2VdLm1vZGVsKX19KTtrLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKGIpe3ZhciBmPXAudmFsKCk7Yj1xLnZhbCgpO3ZhciBlPSQodGhpcykudmFsKCk7ay52YWwoJCh0aGlzKS52YWwoKSk7bC5lbXB0eSgpO2lmKDEhPSQoImlucHV0W25hbWU9bm9DQkJdIikudmFsKCkpJC5hamF4KHt0eXBlOiJQT1NUIix1cmw6KCJFTkdMSVNIIj09aD8iL2VuLyI6Ii9mci8iKSsiL2FqYXgvZ2V0VHJhZGVJbkJhclRyaW0\/d3N3aWR0aD0wIiwKZGF0YVR5cGU6Impzb24iLGRhdGE6e2xhbmd1YWdlOmgsbWFrZTpmLG1vZGVsOmUseWVhcjpifSxzdWNjZXNzOmZ1bmN0aW9uKGEpe2NvbnNvbGUubG9nKGEpO2wuYXBwZW5kKCc8b3B0aW9uIHZhbHVlPSIiPicrKCJFTkdMSVNIIj09aD8iVHJpbSI6IlZlcnNpb24iKSsiPC9vcHRpb24+Iik7Zm9yKHZhciBkPTAsYz0wO2M8YS5sZW5ndGg7YysrKXt2YXIgbT1hW2NdLnN0eWxlKyIgIithW2NdLnNlcmllcyx4PWFbY10udXZjO2QrKztsLmFwcGVuZCgnPG9wdGlvbiBkYXRhLXN0eWxlaWQ9IicreCsnIiB2YWx1ZT0iJyttKyciPicrbSsiPC9vcHRpb24+Iil9MT09ZCYmJCgib3B0aW9uOmVxKDEpIixsKS5wcm9wKCJzZWxlY3RlZCIsInNlbGVjdGVkIil9fSk7ZWxzZSBpZigxPT0kKCJpbnB1dFtuYW1lPWlzQWNjdXRyYWRlXSIpLnZhbCgpKSQuYWpheCh7dHlwZToiUE9TVCIsdXJsOigiRU5HTElTSCI9PWg\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L2dldFRyYWRlSW5NbmdUcmltP3dzd2lkdGg9MCIsCmRhdGFUeXBlOiJqc29uIixkYXRhOntsYW5ndWFnZTpoLG1ha2U6Zixtb2RlbDplLHllYXI6Yn0sc3VjY2VzczpmdW5jdGlvbihhKXtjb25zb2xlLmxvZyhhKTtsLmFwcGVuZCgnPG9wdGlvbiB2YWx1ZT0iIj4nKygiRU5HTElTSCI9PWg\/IlRyaW0iOiJWZXJzaW9uIikrIjwvb3B0aW9uPiIpO2Zvcih2YXIgZD0wLGM9MDtjPGEubGVuZ3RoO2MrKyl7dmFyIG09YVtjXS5uYW1lLHg9YVtjXS5pZDtkKys7bC5hcHBlbmQoJzxvcHRpb24gZGF0YS1zdHlsZWlkPSInK3grJyIgdmFsdWU9IicrbSsnIj4nK20rIjwvb3B0aW9uPiIpfTE9PWQmJiQoIm9wdGlvbjplcSgxKSIsbCkucHJvcCgic2VsZWN0ZWQiLCEwKX19KTtlbHNlIGlmKDA8T2JqZWN0LmtleXModSkubGVuZ3RoJiYiIiE9dGhpcy52YWx1ZSl7bC5hcHBlbmQoRCk7Zm9yKGU9Zj0wO2U8dVtiXS5sZW5ndGg7ZSsrKXVbYl1bZV0ubW9kZWw9PXRoaXMudmFsdWUmJihmKyssbC5hcHBlbmQoJzxvcHRpb24gZGF0YS1zdHlsZWlkPSInKwp1W2JdW2VdLnN0eWxlaWQrJyIgdmFsdWU9IicrdVtiXVtlXS50cmltKyciPicrdVtiXVtlXS50cmltKyI8L29wdGlvbj4iKSk7MT09ZiYmJCgib3B0aW9uOmVxKDEpIixsKS5wcm9wKCJzZWxlY3RlZCIsInNlbGVjdGVkIil9fSk7bC5vbigiY2hhbmdlIixmdW5jdGlvbigpe2wudmFsKCQodGhpcykudmFsKCkpfSk7dmFyIEI9ITE7aWYoMSE9JCgiaW5wdXRbbmFtZT1ub0NCQl0iKS52YWwoKSlnLm9uKCJrZXl1cCIsZnVuY3Rpb24oKXtnLnZhbCgkKHRoaXMpLnZhbCgpKTskKHRoaXMpLnZhbCgpJiYxNzw9JCh0aGlzKS52YWwoKS5sZW5ndGgmJiFCJiYoQj0hMCwkLmFqYXgoe3R5cGU6IlBPU1QiLHVybDooJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L2dldFRyYWRlSW5CYXJWYWx1ZT93c3dpZHRoPTAiLGRhdGFUeXBlOiJqc29uIixkYXRhOnt2aW46JCh0aGlzKS52YWwoKSxwcm92aW5jZTokKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJkZWFsZXJQcm92aW5jZVRyYWRlSW4iXScpLnZhbCgpfSwKc3VjY2VzczpmdW5jdGlvbihiKXtiJiZiLm1vZGVsJiZiLm1vZGVsX3llYXI\/KGcuZmlyc3QoKS5hdHRyKCJ2aW5Nb2RlbCIsYi5tb2RlbCksZy5maXJzdCgpLmF0dHIoInZpblllYXIiLGIubW9kZWxfeWVhcikscC52YWwoYi5tYWtlKSxwLmZpcnN0KCkudHJpZ2dlcigiY2hhbmdlIikscmVtb3ZlUmVkV2FybmluZ01lc3NhZ2UoKSxzd2l0Y2hUb1ZlaGljbGVBbmRGb2N1c1RyaW0oKSk6YWRkUmVkV2FybmluZ01lc3NhZ2UoJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/IlVucmVjb2duaXplZCBWSU4iOiJOSVYgbm9uIHJlY29ubnUiKX0sY29tcGxldGU6ZnVuY3Rpb24oYil7Qj0hMX19KSl9KTtlbHNlIGlmKDE9PSQoImlucHV0W25hbWU9aXNBY2N1dHJhZGVdIikudmFsKCkpZy5vbigia2V5dXAiLGZ1bmN0aW9uKCl7Zy52YWwoJCh0aGlzKS52YWwoKSk7JCh0aGlzKS52YWwoKSYmMTc8PSQodGhpcykudmFsKCkubGVuZ3RoJiYhQiYmKEI9ITAsJC5hamF4KHt0eXBlOiJQT1NUIiwKdXJsOigkKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iL2VuLyI6Ii9mci8iKSsiL2FqYXgvZ2V0VHJhZGVJbk1uZ1Zpbj93c3dpZHRoPTAiLGRhdGFUeXBlOiJqc29uIixkYXRhOnt2aW46JCh0aGlzKS52YWwoKSxwcm92aW5jZTokKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJkZWFsZXJQcm92aW5jZVRyYWRlSW4iXScpLnZhbCgpfSxzdWNjZXNzOmZ1bmN0aW9uKGIpe2ImJmIubW9kZWwmJmIueWVhcj8oZy5maXJzdCgpLmF0dHIoInZpbk1vZGVsIixiLm1vZGVsKSxnLmZpcnN0KCkuYXR0cigidmluWWVhciIsYi55ZWFyKSxwLnZhbChiLm1ha2UpLHAuZmlyc3QoKS50cmlnZ2VyKCJjaGFuZ2UiKSxyZW1vdmVSZWRXYXJuaW5nTWVzc2FnZSgpLHN3aXRjaFRvVmVoaWNsZUFuZEZvY3VzVHJpbSgpKTphZGRSZWRXYXJuaW5nTWVzc2FnZSgkKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iVW5yZWNvZ25pemVkIFZJTiI6Ik5JViBub24gcmVjb25udSIpfSwKY29tcGxldGU6ZnVuY3Rpb24oYil7Qj0hMX19KSl9KTt3PWdldFVybFZhcnMoKTtmb3IodmFyIEc9T2JqZWN0LmtleXModyksSD1HLmxlbmd0aCxJPXt9O0gtLTspe3ZhciBKPUdbSF07SVtKLnRvTG93ZXJDYXNlKCldPXdbSl19dz1JO3cudG1ha2UmJncudG1vZGVsJiZ3LnR5ZWFyJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bGF1bmNoVHJhZGVJblBvcHVwKCJhdXRvbWF0aWMiKX0sMUUzKTt3WyJ0cmFkZS1mdWxsIl0mJnNldFRpbWVvdXQoZnVuY3Rpb24oKXtsYXVuY2hUcmFkZUluUG9wdXAoImF1dG9tYXRpYyIpfSwxRTMpOyQoIi50cmFkZUluQmFyX2J0biIpLm9uKCJjbGljayIsZnVuY3Rpb24oYil7Yj0hMTsiIj09cC52YWwoKSYmKHAuY3NzKCJiYWNrZ3JvdW5kIiwiI0ZGN0U3OSIpLGI9ITApO2lmKCIiPT1rLnZhbCgpfHxudWxsPT1rLnZhbCgpKWsuY3NzKCJiYWNrZ3JvdW5kIiwiI0ZGN0U3OSIpLGI9ITA7aWYoIiI9PWwudmFsKCl8fG51bGw9PWwudmFsKCkpbC5jc3MoImJhY2tncm91bmQiLAoiI0ZGN0U3OSIpLGI9ITA7aWYoIiI9PXEudmFsKCl8fG51bGw9PXEudmFsKCkpcS5jc3MoImJhY2tncm91bmQiLCIjRkY3RTc5IiksYj0hMDswPT1iJiZsYXVuY2hUcmFkZUluUG9wdXAoInRyYWRlaW5iYXIiKX0pO2lmKCIxIj09JCgiI2lzTW9iaWxlIikudmFsKCl8fCIiPT1wLnZhbCgpfHwidW5kZWZpbmVkIj09PXR5cGVvZiBwLnZhbCgpfHwiIj09ay52YWwoKXx8IiI9PXEudmFsKCkpe3ZhciB5PSQoIiN0cmFkZUluQmFyUG9wdXBNYWtlIikscj0kKCIjdHJhZGVJbkJhclBvcHVwTW9kZWwiKSx2PSQoIiN0cmFkZUluQmFyUG9wdXBUcmltIiksej0kKCIjdHJhZGVJbkJhclBvcHVwWWVhciIpLG49JCgiI3RyYWRlSW5CYXJQb3B1cE5pdiIpLHQ9e30sRT1kMmNtZWRpYS5jYXBpdGFsaXNlRmlyc3RMZXR0ZXIody50bW9kZWw\/dy50bW9kZWwudG9Mb3dlckNhc2UoKToiIiksQz13LnR5ZWFyO2lmKDAhPSQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IkNCQk1PREVMU0VMRUNUIl0nKS52YWwoKSkkKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAubml2TWFrZU1vZGVsU2VsZWN0Iikub24oImNoYW5nZSIsCmZ1bmN0aW9uKCl7InZpbiI9PSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC5uaXZNYWtlTW9kZWxTZWxlY3Q6Y2hlY2tlZCIpLnZhbCgpPygkKCIjdHJhZGVJbkJhclBvcHVwTWFrZURpdkNvbnRhaW5lciIpLmhpZGUoKSwkKCIjdHJhZGVJbkJhclBvcHVwTW9kZWxEaXZDb250YWluZXIiKS5oaWRlKCksJCgiI3RyYWRlSW5CYXJQb3B1cFllYXJEaXZDb250YWluZXIiKS5oaWRlKCksJCgiI3RyYWRlSW5CYXJQb3B1cE5pdkRpdkNvbnRhaW5lciIpLmNzcygiZGlzcGxheSIsImlubGluZS1ibG9jayIpKTooJCgiI3RyYWRlSW5CYXJQb3B1cE5pdkRpdkNvbnRhaW5lciIpLmhpZGUoKSwkKCIjdHJhZGVJbkJhclBvcHVwTWFrZURpdkNvbnRhaW5lciIpLmNzcygiZGlzcGxheSIsImlubGluZS1ibG9jayIpLCQoIiN0cmFkZUluQmFyUG9wdXBNb2RlbERpdkNvbnRhaW5lciIpLmNzcygiZGlzcGxheSIsImlubGluZS1ibG9jayIpLCQoIiN0cmFkZUluQmFyUG9wdXBZZWFyRGl2Q29udGFpbmVyIikuY3NzKCJkaXNwbGF5IiwKImlubGluZS1ibG9jayIpKTsidW5kZWZpbmVkIiE9PXR5cGVvZiB0cmFkZWlucG9wdXBkMmMmJnRyYWRlaW5wb3B1cGQyYy50cmFkZUluQm90dG9tTG9nb0hlaWd0KCl9KTt5Lm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7eS52YWwoJCh0aGlzKS52YWwoKSk7ei5lbXB0eSgpO3IuZW1wdHkoKTt2LmVtcHR5KCk7IiIhPXRoaXMudmFsdWUmJiQuYWpheCh7dHlwZToiUE9TVCIsdXJsOigiRU5HTElTSCI9PWg\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L2dldFRyYWRlSW5CYXJEYXRhP3dzd2lkdGg9MCIsZGF0YVR5cGU6Impzb24iLGRhdGE6e2xhbmd1YWdlOmgsbWFrZTp0aGlzLnZhbHVlfSxzdWNjZXNzOmZ1bmN0aW9uKGIpe3Q9Yjt6LmFwcGVuZChGKTsiIiE9bi5hdHRyKCJ2aW5ZZWFyIikmJihDPW4uYXR0cigidmluWWVhciIpKTtmb3IodmFyIGYgaW4gYiliPSIiLEMmJihiPWY9PUM\/J3NlbGVjdGVkPSJzZWxlY3RlZCInOiIiKSx6LmFwcGVuZCgiPG9wdGlvbiAiKwpiKycgdmFsdWU9IicrZisnIj4nK2YrIjwvb3B0aW9uPiIpO0MmJih6LnRyaWdnZXIoImNoYW5nZSIpLEM9ITEpfX0pfSk7ei5vbigiY2hhbmdlIixmdW5jdGlvbigpe3oudmFsKCQodGhpcykudmFsKCkpO3IuZW1wdHkoKTt2LmVtcHR5KCk7dmFyIGI9JCh0aGlzKS52YWwoKSxmPXkudmFsKCk7aWYoMSE9JCgiaW5wdXRbbmFtZT1ub0NCQl0iKS52YWwoKSkkLmFqYXgoe3R5cGU6IlBPU1QiLHVybDooIkVOR0xJU0giPT1oPyIvZW4vIjoiL2ZyLyIpKyIvYWpheC9nZXRUcmFkZUluQmFyTW9kZWw\/d3N3aWR0aD0wIixkYXRhVHlwZToianNvbiIsZGF0YTp7bGFuZ3VhZ2U6aCxtYWtlOmYseWVhcjpifSxzdWNjZXNzOmZ1bmN0aW9uKGQpe2NvbnNvbGUubG9nKGQpO3IuYXBwZW5kKEEpO2Zvcih2YXIgYz0wO2M8ZC5sZW5ndGg7YysrKXt2YXIgbT1kW2NdLm5hbWU7ci5hcHBlbmQoJzxvcHRpb24gdmFsdWU9IicrbSsnIj4nK20rIjwvb3B0aW9uPiIpfSIiIT0Kbi5hdHRyKCJ2aW5Nb2RlbCIpJiYoci52YWwobi5hdHRyKCJ2aW5Nb2RlbCIpKSxyLnRyaWdnZXIoImNoYW5nZSIpKTtuLmF0dHIoInZpblllYXIiLCIiKTtuLmF0dHIoInZpbk1vZGVsIiwiIil9fSk7ZWxzZSBpZigxPT0kKCJpbnB1dFtuYW1lPWlzQWNjdXRyYWRlXSIpLnZhbCgpKSQuYWpheCh7dHlwZToiUE9TVCIsdXJsOigiRU5HTElTSCI9PWg\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L2dldFRyYWRlSW5NbmdNb2RlbD93c3dpZHRoPTAiLGRhdGFUeXBlOiJqc29uIixkYXRhOntsYW5ndWFnZTpoLG1ha2U6Zix5ZWFyOmJ9LHN1Y2Nlc3M6ZnVuY3Rpb24oZCl7Y29uc29sZS5sb2coZCk7ci5hcHBlbmQoQSk7Zm9yKHZhciBjPTA7YzxkLmxlbmd0aDtjKyspe3ZhciBtPWRbY10ubmFtZTtyLmFwcGVuZCgnPG9wdGlvbiB2YWx1ZT0iJyttKyciPicrbSsiPC9vcHRpb24+Iil9IiIhPW4uYXR0cigidmluTW9kZWwiKSYmKHIudmFsKG4uYXR0cigidmluTW9kZWwiKSksCnIudHJpZ2dlcigiY2hhbmdlIikpO24uYXR0cigidmluWWVhciIsIiIpO24uYXR0cigidmluTW9kZWwiLCIiKX19KTtlbHNlIGlmKDA8T2JqZWN0LmtleXModCkubGVuZ3RoJiYiIiE9dGhpcy52YWx1ZSl7ci5hcHBlbmQoQSk7Zj17fTtmb3IodmFyIGU9MDtlPHRbYl0ubGVuZ3RoO2UrKylpZigidW5kZWZpbmVkIj09dHlwZW9mIGZbdFtiXVtlXS5tb2RlbF0pe3ZhciBhPSIiO0UmJihhPXRbYl1bZV0ubW9kZWw9PUU\/J3NlbGVjdGVkPSJzZWxlY3RlZCInOiIiKTtyLmFwcGVuZCgiPG9wdGlvbiAiK2ErJyB2YWx1ZT0iJyt0W2JdW2VdLm1vZGVsKyciPicrdFtiXVtlXS5tb2RlbCsiPC9vcHRpb24+Iik7Zlt0W2JdW2VdLm1vZGVsXT10W2JdW2VdLm1vZGVsfUUmJihyLnRyaWdnZXIoImNoYW5nZSIpLEU9ITEpfX0pO3Iub24oImNoYW5nZSIsZnVuY3Rpb24oKXtyLnZhbCgkKHRoaXMpLnZhbCgpKTt2LmVtcHR5KCk7dmFyIGI9ei52YWwoKSxmPXkudmFsKCksZT0kKHRoaXMpLnZhbCgpOwppZigxIT0kKCJpbnB1dFtuYW1lPW5vQ0JCXSIpLnZhbCgpKSQuYWpheCh7dHlwZToiUE9TVCIsdXJsOigiRU5HTElTSCI9PWg\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L2dldFRyYWRlSW5CYXJUcmltP3dzd2lkdGg9MCIsZGF0YVR5cGU6Impzb24iLGRhdGE6e2xhbmd1YWdlOmgsbWFrZTpmLG1vZGVsOmUseWVhcjpifSxzdWNjZXNzOmZ1bmN0aW9uKGEpe2NvbnNvbGUubG9nKGEpO3YuYXBwZW5kKEQpO2Zvcih2YXIgZD0wLGM9MDtjPGEubGVuZ3RoO2MrKyl7dmFyIG09YVtjXS5zdHlsZSsiICIrYVtjXS5zZXJpZXMseD1hW2NdLnV2YztkKys7di5hcHBlbmQoJzxvcHRpb24gZGF0YS1zdHlsZWlkPSInK3grJyIgdmFsdWU9IicrbSsnIj4nK20rIjwvb3B0aW9uPiIpfTE9PWQmJiQoIm9wdGlvbjplcSgxKSIsdikucHJvcCgic2VsZWN0ZWQiLCJzZWxlY3RlZCIpfX0pO2Vsc2UgaWYoMT09JCgiaW5wdXRbbmFtZT1pc0FjY3V0cmFkZV0iKS52YWwoKSkkLmFqYXgoe3R5cGU6IlBPU1QiLAp1cmw6KCJFTkdMSVNIIj09aD8iL2VuLyI6Ii9mci8iKSsiL2FqYXgvZ2V0VHJhZGVJbk1uZ1RyaW0\/d3N3aWR0aD0wIixkYXRhVHlwZToianNvbiIsZGF0YTp7bGFuZ3VhZ2U6aCxtYWtlOmYsbW9kZWw6ZSx5ZWFyOmJ9LHN1Y2Nlc3M6ZnVuY3Rpb24oYSl7Y29uc29sZS5sb2coYSk7di5hcHBlbmQoRCk7Zm9yKHZhciBkPTAsYz0wO2M8YS5sZW5ndGg7YysrKXt2YXIgbT1hW2NdLm5hbWUseD1hW2NdLmlkO2QrKzt2LmFwcGVuZCgnPG9wdGlvbiBkYXRhLXN0eWxlaWQ9IicreCsnIiB2YWx1ZT0iJyttKyciPicrbSsiPC9vcHRpb24+Iil9MT09ZCYmJCgib3B0aW9uOmVxKDEpIix2KS5wcm9wKCJzZWxlY3RlZCIsITApfX0pO2Vsc2UgaWYoMDxPYmplY3Qua2V5cyh0KS5sZW5ndGgmJiIiIT10aGlzLnZhbHVlKXt2LmFwcGVuZChEKTtmb3IoZT1mPTA7ZTx0W2JdLmxlbmd0aDtlKyspdFtiXVtlXS5tb2RlbD09dGhpcy52YWx1ZSYmKGYrKyx2LmFwcGVuZCgnPG9wdGlvbiBkYXRhLXN0eWxlaWQ9IicrCnRbYl1bZV0uc3R5bGVpZCsnIiB2YWx1ZT0iJyt0W2JdW2VdLnRyaW0rJyI+Jyt0W2JdW2VdLnRyaW0rIjwvb3B0aW9uPiIpKTsxPT1mJiYkKCJvcHRpb246ZXEoMSkiLHYpLnByb3AoInNlbGVjdGVkIiwic2VsZWN0ZWQiKX19KTtpZigxIT0kKCJpbnB1dFtuYW1lPW5vQ0JCXSIpLnZhbCgpfHwxPT0kKCJpbnB1dFtuYW1lPWlzQWNjdXRyYWRlXSIpLnZhbCgpKXsxIT0kKCJpbnB1dFtuYW1lPW5vQ0JCXSIpLnZhbCgpPyh2Lm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7JC5hamF4KHt0eXBlOiJQT1NUIix1cmw6KCQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyIvZW4vIjoiL2ZyLyIpKyIvYWpheC9nZXRUcmFkZUluQmFyVmFsdWU\/d3N3aWR0aD0wIixkYXRhVHlwZToianNvbiIsZGF0YTp7dXZjOiQodGhpcykuZmluZCgiOmNoZWNrZWQiKS5hdHRyKCJkYXRhLXN0eWxlaWQiKSxwcm92aW5jZTokKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJkZWFsZXJQcm92aW5jZVRyYWRlSW4iXScpLnZhbCgpfSwKc3VjY2VzczpmdW5jdGlvbihhKXtjb25zb2xlLmxvZyhhKTskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBzZWxlY3RbbmFtZT0iVkVISUNMRU9QVElPTlMiXScpLmZpbmQoIm9wdGlvbiIpLnJlbW92ZSgpO2lmKGEuYWRkX2RlZHVjdF9saXN0Lmxlbmd0aCl7Zm9yKHZhciBkPTA7ZDxhLmFkZF9kZWR1Y3RfbGlzdC5sZW5ndGg7ZCsrKSQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIHNlbGVjdFtuYW1lPSJWRUhJQ0xFT1BUSU9OUyJdJykuYXBwZW5kKCc8b3B0aW9uIHZhbHVlPSInK2EuYWRkX2RlZHVjdF9saXN0W2RdLnVvYysnIj4nK2EuYWRkX2RlZHVjdF9saXN0W2RdLm5hbWUrIjwvb3B0aW9uPiIpOyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIHNlbGVjdFtuYW1lPSJWRUhJQ0xFT1BUSU9OUyJdJykubXVsdGlzZWxlY3Qoe2hlYWRlcjohMSxub25lU2VsZWN0ZWRUZXh0OiJPcHRpb25zIixzZWxlY3RlZFRleHQ6ZnVuY3Rpb24oYyxtLHgpe3JldHVybiAkKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8KYysiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0ibXVsdGlzZWxlY3RlZFRleHRWYWx1ZSJdJykudmFsKCk6YysiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0ibXVsdGlzZWxlY3RlZFRleHRWYWx1ZSJdJykudmFsKCkrKDE8Yz8icyI6IiIpfSxjbGFzc2VzOiJ0cmFkZUluQmFyTXVsdGlzZWxlY3QifSkubXVsdGlzZWxlY3QoInJlZnJlc2giKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAub3BlblZlaGljbGVPcHRpb25zIikuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC5tdWx0aXNlbGVjdFZlaGljbGVPcHRpb25zIikuc2hvdygpfWVsc2UgJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLm11bHRpc2VsZWN0VmVoaWNsZU9wdGlvbnMiKS5oaWRlKCksJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLm9wZW5WZWhpY2xlT3B0aW9ucyIpLnNob3coKX19KX0pLG4ub24oInBhc3RlIixmdW5jdGlvbigpe2xldCBhPSQodGhpcyk7c2V0VGltZW91dChmdW5jdGlvbigpe2EudHJpZ2dlcigia2V5dXAiKX0sCjIwMCl9KSxuLm9uKCJrZXl1cCIsZnVuY3Rpb24oKXskKHRoaXMpLnZhbCgpJiYxNzw9JCh0aGlzKS52YWwoKS5sZW5ndGgmJiQuYWpheCh7dHlwZToiUE9TVCIsdXJsOigkKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iL2VuLyI6Ii9mci8iKSsiL2FqYXgvZ2V0VHJhZGVJbkJhclZhbHVlP3dzd2lkdGg9MCIsZGF0YVR5cGU6Impzb24iLGRhdGE6e3ZpbjokKHRoaXMpLnZhbCgpLHByb3ZpbmNlOiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9ImRlYWxlclByb3ZpbmNlVHJhZGVJbiJdJykudmFsKCl9LHN1Y2Nlc3M6ZnVuY3Rpb24oYSl7YSYmYS5tb2RlbCYmYS5tb2RlbF95ZWFyPyhuLmZpcnN0KCkuYXR0cigidmluTW9kZWwiLGEubW9kZWwpLG4uZmlyc3QoKS5hdHRyKCJ2aW5ZZWFyIixhLm1vZGVsX3llYXIpLHkudmFsKGEubWFrZSkseS5maXJzdCgpLnRyaWdnZXIoImNoYW5nZSIpLGYoKSxlKCkpOmIoJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/CiJVbnJlY29nbml6ZWQgVklOIjoiTklWIG5vbiByZWNvbm51Iil9fSl9KSk6MT09JCgiaW5wdXRbbmFtZT1pc0FjY3V0cmFkZV0iKS52YWwoKSYmKHYub24oImNoYW5nZSIsZnVuY3Rpb24oKXskLmFqYXgoe3R5cGU6IlBPU1QiLHVybDooJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L2dldFRyYWRlSW5NbmdPcHRpb25zP3dzd2lkdGg9MCIsZGF0YVR5cGU6Impzb24iLGRhdGE6e2lkOiQodGhpcykuZmluZCgiOmNoZWNrZWQiKS5hdHRyKCJkYXRhLXN0eWxlaWQiKSxwcm92aW5jZTokKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJkZWFsZXJQcm92aW5jZVRyYWRlSW4iXScpLnZhbCgpfSxzdWNjZXNzOmZ1bmN0aW9uKGEpe2NvbnNvbGUubG9nKGEpOyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIHNlbGVjdFtuYW1lPSJWRUhJQ0xFT1BUSU9OUyJdJykuZmluZCgib3B0aW9uIikucmVtb3ZlKCk7aWYoYS5sZW5ndGgpe2Zvcih2YXIgZD0KMDtkPGEubGVuZ3RoO2QrKykkKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBzZWxlY3RbbmFtZT0iVkVISUNMRU9QVElPTlMiXScpLmFwcGVuZCgnPG9wdGlvbiB2YWx1ZT0iJythW2RdLmlkKyciPicrYVtkXS5uYW1lKyI8L29wdGlvbj4iKTskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBzZWxlY3RbbmFtZT0iVkVISUNMRU9QVElPTlMiXScpLm11bHRpc2VsZWN0KHtoZWFkZXI6ITEsbm9uZVNlbGVjdGVkVGV4dDoiT3B0aW9ucyIsc2VsZWN0ZWRUZXh0OmZ1bmN0aW9uKGMsbSx4KXtyZXR1cm4gJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/YysiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0ibXVsdGlzZWxlY3RlZFRleHRWYWx1ZSJdJykudmFsKCk6YysiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0ibXVsdGlzZWxlY3RlZFRleHRWYWx1ZSJdJykudmFsKCkrKDE8Yz8icyI6IiIpfSxjbGFzc2VzOiJ0cmFkZUluQmFyTXVsdGlzZWxlY3QifSkubXVsdGlzZWxlY3QoInJlZnJlc2giKTsKJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLm9wZW5WZWhpY2xlT3B0aW9ucyIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAubXVsdGlzZWxlY3RWZWhpY2xlT3B0aW9ucyIpLnNob3coKX1lbHNlICQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC5tdWx0aXNlbGVjdFZlaGljbGVPcHRpb25zIikuaGlkZSgpLCQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC5vcGVuVmVoaWNsZU9wdGlvbnMiKS5zaG93KCl9fSl9KSxuLm9uKCJwYXN0ZSIsZnVuY3Rpb24oKXtsZXQgYT0kKHRoaXMpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXthLnRyaWdnZXIoImtleXVwIil9LDIwMCl9KSxuLm9uKCJrZXl1cCIsZnVuY3Rpb24oKXskKHRoaXMpLnZhbCgpJiYxNzw9JCh0aGlzKS52YWwoKS5sZW5ndGgmJiQuYWpheCh7dHlwZToiUE9TVCIsdXJsOigkKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iL2VuLyI6Ii9mci8iKSsiL2FqYXgvZ2V0VHJhZGVJbk1uZ1Zpbj93c3dpZHRoPTAiLApkYXRhVHlwZToianNvbiIsZGF0YTp7dmluOiQodGhpcykudmFsKCkscHJvdmluY2U6JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iZGVhbGVyUHJvdmluY2VUcmFkZUluIl0nKS52YWwoKX0sc3VjY2VzczpmdW5jdGlvbihhKXthJiZhLm1vZGVsJiZhLnllYXI\/KG4uZmlyc3QoKS5hdHRyKCJ2aW5Nb2RlbCIsYS5tb2RlbCksbi5maXJzdCgpLmF0dHIoInZpblllYXIiLGEueWVhcikseS52YWwoYS5tYWtlKSx5LmZpcnN0KCkudHJpZ2dlcigiY2hhbmdlIiksZigpLGUoKSk6YigkKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iVW5yZWNvZ25pemVkIFZJTiI6Ik5JViBub24gcmVjb25udSIpfX0pfSkpO2Z1bmN0aW9uIGIoYSl7dmFyIGQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRyYWRlSW5CYXJQb3B1cE5pdkRpdkNvbnRhaW5lciIpO2lmKGQpe3ZhciBjPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWRXYXJuaW5nTWVzc2FnZSIpO2MmJmMucmVtb3ZlKCk7CmM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpO2MuaWQ9InJlZFdhcm5pbmdNZXNzYWdlIjtjLnRleHRDb250ZW50PWE7Yy5zdHlsZS5jb2xvcj0icmVkIjtjLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7Yy5zdHlsZS50b3A9IjUwJSI7Yy5zdHlsZS5yaWdodD0iOHB4IjtjLnN0eWxlLm1hcmdpblRvcD0iNHB4IjtjLnN0eWxlLmZvbnRTaXplPSIxMXB4IjtjLnN0eWxlLnRyYW5zZm9ybT0idHJhbnNsYXRlWSgtNTAlKSI7ZC5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiO2QuYXBwZW5kQ2hpbGQoYyl9fWZ1bmN0aW9uIGYoKXt2YXIgYT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVkV2FybmluZ01lc3NhZ2UiKTthJiZhLnJlbW92ZSgpfWZ1bmN0aW9uIGUoKXt2YXIgYT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibml2TWFrZU1vZGVsU2VsZWN0TW9kZWwiKTthJiZhLmNsaWNrKCk7KGE9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRyYWRlSW5CYXJQb3B1cFRyaW0iKSkmJgphLmZvY3VzKCl9fX19OwovKiogL20vanMvdHJhZGVpbnBvcHVwLmpzICoqLwp2YXIgX19fZDJjX3RyYWRlaW5wb3B1cGpzX2Nfb249IjIwMjYtMDItMjAgMTE6MzA6MzMiOyd1c2Ugc3RyaWN0Jzt2YXIgdHJhZGVpbnBvcHVwZDJjPXtpbml0OmZ1bmN0aW9uKCl7fSxvbkJlZm9yZVN1Ym1pdDpmdW5jdGlvbihhKXtlbWFpbEhhbmRsZXIuZGVwYXJ0bWVudD0iTkVXIjtlbWFpbEhhbmRsZXIuY29uZGl0aW9uPSJuZXciO2Euc2V0dGluZ3MudmVoaWNsZVN0YXRlPSJuZXciO2lmKCJ1c2VkY2Fycy5odG1sIj09JCgiI1BBR0VJRCIpLnZhbCgpfHwiMCI9PSQoImlucHV0W25hbWU9dHJhZGVJbkhhc05ld0RlcF0iKS52YWwoKSllbWFpbEhhbmRsZXIuZGVwYXJ0bWVudD0iVVNFRCIsZW1haWxIYW5kbGVyLmNvbmRpdGlvbj0idXNlZCIsYS5zZXR0aW5ncy52ZWhpY2xlU3RhdGU9InVzZWQiO2VtYWlsSGFuZGxlci5tYWtlPSQoIiNsYXN0dmlld2VkbWFrZSIpLnZhbCgpO2VtYWlsSGFuZGxlci5tb2RlbD0kKCIjbGFzdHZpZXdlZG1vZGVsIikudmFsKCk7ZW1haWxIYW5kbGVyLnllYXI9JCgiI2xhc3R2aWV3ZWR5ZWFyIikudmFsKCk7JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iRU1BSUxNQUtFIl0nKS52YWwoJCgiI2xhc3R2aWV3ZWRtYWtlIikudmFsKCkpOwokKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJFTUFJTE1PREVMIl0nKS52YWwoJCgiI2xhc3R2aWV3ZWRtb2RlbCIpLnZhbCgpKTskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJFTUFJTFlFQVIiXScpLnZhbCgkKCIjbGFzdHZpZXdlZHllYXIiKS52YWwoKSk7JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iU1RPQ0tOVU1CRVIiXScpLnZhbCgkKCIjbGFzdHZpZXdlZHN0b2NrbnVtYmVyIikudmFsKCkpOyQoIiN2ZWhpY2xlY29sb3IiKS5sZW5ndGgmJiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IkNPTE9SIl0nKS52YWwoJCgiI3ZlaGljbGVjb2xvciIpLnZhbCgpKTskKCIjdHJhZGVJbkJhclBvcHVwTWFrZSIpLmhhc0NsYXNzKCJyZXF1aXJlZCIpJiYiIiE9JCgiI3RyYWRlSW5CYXJQb3B1cE1ha2UiKS52YWwoKSYmKCQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1BS0VFWCJdJykudmFsKCQoIiN0cmFkZUluQmFyUG9wdXBNYWtlIikudmFsKCkpLAplbWFpbEhhbmRsZXIuY2FyMl9tYWtlPSQoIiN0cmFkZUluQmFyUG9wdXBNYWtlIikudmFsKCkpOyQoIiN0cmFkZUluQmFyUG9wdXBNb2RlbCIpLmhhc0NsYXNzKCJyZXF1aXJlZCIpJiYiIiE9JCgiI3RyYWRlSW5CYXJQb3B1cE1vZGVsIikudmFsKCkmJigkKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNT0RFTEVYIl0nKS52YWwoJCgiI3RyYWRlSW5CYXJQb3B1cE1vZGVsIikudmFsKCkpLGVtYWlsSGFuZGxlci5jYXIyX21vZGVsPSQoIiN0cmFkZUluQmFyUG9wdXBNb2RlbCIpLnZhbCgpKTskKCIjdHJhZGVJbkJhclBvcHVwVHJpbSIpLmhhc0NsYXNzKCJyZXF1aXJlZCIpJiYiIiE9JCgiI3RyYWRlSW5CYXJQb3B1cFRyaW0iKS52YWwoKSYmKCQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IlRSSU1FWCJdJykudmFsKCQoIiN0cmFkZUluQmFyUG9wdXBUcmltIikudmFsKCkpLCQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9InRyYWRlaW5iYXJTdHlsZWlkIl0nKS52YWwoJCgiI3RyYWRlSW5CYXJQb3B1cFRyaW0gb3B0aW9uOnNlbGVjdGVkIikuYXR0cigiZGF0YS1zdHlsZWlkIikpLAplbWFpbEhhbmRsZXIuY2FyMl90cmltPSQoIiN0cmFkZUluQmFyUG9wdXBUcmltIikudmFsKCkpOyQoIiN0cmFkZUluQmFyUG9wdXBZZWFyIikuaGFzQ2xhc3MoInJlcXVpcmVkIikmJiIiIT0kKCIjdHJhZGVJbkJhclBvcHVwWWVhciIpLnZhbCgpJiYoJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iWUVBUkVYIl0nKS52YWwoJCgiI3RyYWRlSW5CYXJQb3B1cFllYXIiKS52YWwoKSksZW1haWxIYW5kbGVyLmNhcjJfeWVhcj0kKCIjdHJhZGVJbkJhclBvcHVwWWVhciIpLnZhbCgpKTskKCIjdHJhZGVJbkJhclBvcHVwTml2IikubGVuZ3RoJiYiIiE9JCgiI3RyYWRlSW5CYXJQb3B1cE5pdiIpLnZhbCgpJiYkKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJWSU5FWCJdJykudmFsKCQoIiN0cmFkZUluQmFyUG9wdXBOaXYiKS52YWwoKSk7ZW1haWxIYW5kbGVyLmNhcjJfb2RvbWV0ZXI9JCgiI3JlYmF0ZU1pbGVhZ2VfdHJhZGVJbkJhclBvcHVwIikudmFsKCk7CmEuc2V0dGluZ3MuY2xvc2VPblN1Ym1pdD0hMTtpZighJCgiaW5wdXRbbmFtZT10cmFkZUluQmFyU21zT3JFbWFpbF06Y2hlY2tlZCIpLmxlbmd0aCYmMD09JCgiaW5wdXRbbmFtZT10cmFkZUluVmFsdWVDQkJDYWxsZWRdIikudmFsKCkmJjEhPSQoImlucHV0W25hbWU9bm9DQkJdIikudmFsKCkpcmV0dXJuIHRoaXMub25CZWZvcmVTdWJtaXRDQkJDYWxsKGEpLCExO2lmKCEkKCJpbnB1dFtuYW1lPXRyYWRlSW5CYXJTbXNPckVtYWlsXTpjaGVja2VkIikubGVuZ3RoJiYwPT0kKCJpbnB1dFtuYW1lPXRyYWRlSW5WYWx1ZUNCQkNhbGxlZF0iKS52YWwoKSYmMT09JCgiaW5wdXRbbmFtZT1pc0FjY3V0cmFkZV0iKS52YWwoKSlyZXR1cm4gdGhpcy5vbkJlZm9yZVN1Ym1pdEFjY3V0cmFkZUNhbGwoYSksITE7aWYoJCgiaW5wdXRbbmFtZT10cmFkZUluQmFyU21zT3JFbWFpbF06Y2hlY2tlZCIpLmxlbmd0aCYmMT09JCgiaW5wdXRbbmFtZT10cmFkZUluVmFsdWVDQkJDYWxsZWRdIikudmFsKCkmJgoxPT0kKCJpbnB1dFtuYW1lPXRyYWRlSW5WYWx1ZUNCQkF2YWlsYWJsZVZhbHVlc10iKS52YWwoKSYmMSE9JCgiaW5wdXRbbmFtZT1ub0NCQl0iKS52YWwoKSl0aGlzLm9uQmVmb3JlU3VibWl0Q0JCTWVzc2FnZShhKTtlbHNlIGlmKCQoImlucHV0W25hbWU9dHJhZGVJbkJhclNtc09yRW1haWxdOmNoZWNrZWQiKS5sZW5ndGgmJjE9PSQoImlucHV0W25hbWU9dHJhZGVJblZhbHVlQ0JCQ2FsbGVkXSIpLnZhbCgpJiYxPT0kKCJpbnB1dFtuYW1lPXRyYWRlSW5WYWx1ZUNCQkF2YWlsYWJsZVZhbHVlc10iKS52YWwoKSYmMT09JCgiaW5wdXRbbmFtZT1pc0FjY3V0cmFkZV0iKS52YWwoKSl0aGlzLm9uQmVmb3JlU3VibWl0QWNjdXRyYWRlTWVzc2FnZShhKTtpZigiMSI9PT0kKCJpbnB1dFtuYW1lPXN0ZXAzYWN0aXZlXSIpLnZhbCgpJiYiMCI9PT0kKCJpbnB1dFtuYW1lPXN0ZXAzZG9uZV0iKS52YWwoKSlyZXR1cm4gdGhpcy5pbml0VHJhZGVJblN0ZXAzKCksITE7YS5zZXR0aW5ncy5jbG9zZU9uU3VibWl0PQohMH0sb25BZnRlclN1Ym1pdDpmdW5jdGlvbihhKXskKCJib2R5IikudHJpZ2dlcigiVHJhZGVJbkJhclBvcHVwV2lkZ2V0X29uU3VibWl0IixbXSk7YT0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPWRlZmF1bHRTdWJtaXRNZXNhZ2VdIikudmFsKCk7MD09JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT10cmFkZUluVmFsdWVDQkJBdmFpbGFibGVWYWx1ZXNdIikudmFsKCkmJjEhPSQoImlucHV0W25hbWU9bm9DQkJdIikudmFsKCkmJihhPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9bm9WYWx1ZVN1Ym1pdE1lc2FnZV0iKS52YWwoKSk7bGV0IGw9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT10cmFkZUluTG93XSIpLnZhbCgpfHwwLGc9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT10cmFkZUluSGlnaF0iKS52YWwoKXx8MCxiPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9dHJhZGVJbkF2Z10iKS52YWwoKXx8CjA7dmFyIGQ9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iWUVBUkVYIl0nKS52YWwoKSsiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTUFLRUVYIl0nKS52YWwoKSsiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTU9ERUxFWCJdJykudmFsKCk6JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTUFLRUVYIl0nKS52YWwoKSsiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTU9ERUxFWCJdJykudmFsKCkrIiAiKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IllFQVJFWCJdJykudmFsKCk7aWYoMT09JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1SRUFMVElNRUVTVElNQVRFXSIpLnZhbCgpKXt2YXIgaD0kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJDQkJTSU5HTEVWQUxVRSJdJykudmFsKCk7CmxldCBjPSc8c3BhbiBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxNnB4OyI+PGJyPicrZCsiPC9zcGFuPiIsbj0iIjskKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iMSI9PWg\/Yys9Ijxicj5Fc3RpbWF0ZWQgVmFsdWU6ICQiK2I6KGMrPSI8YnI+TWluaW11bSBFc3RpbWF0ZWQgVmFsdWU6ICQiK2wsYys9Ijxicj5NYXhpbXVtIEVzdGltYXRlZCBWYWx1ZTogJCIrZyk6IjEiPT1oP2MrPSI8YnI+VmFsZXVyIGVzdGltw6llOiAiK2IrIiQiOihjKz0iPGJyPlZhbGV1ciBlc3RpbcOpZSBtaW5pbWFsZTogIitsKyIkIixjKz0iPGJyPlZhbGV1ciBlc3RpbcOpZSBtYXhpbWFsZTogIitnKyIkIik7bis9JzxkaXYgc3R5bGU9ImZvbnQtc2l6ZToxMnB4O21hcmdpbi10b3A6MTBweDsiPicrJCgiaW5wdXRbbmFtZT10cmFkZUluTXNnRGlzY2xhaW1lclRleHQxXSIpLnZhbCgpKyQoImlucHV0W25hbWU9dHJhZGVJbk1zZ0Rpc2NsYWltZXJUZXh0Ml0iKS52YWwoKSsKIjwvZGl2PiI7YSs9JzxkaXYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjIwcHg7Ij4nK2MrIjwvZGl2PiIrbn0kKCIjZW1haWxTdWNjZXNzTWVzc2FnZV9UcmFkZUluQmFyUG9wdXBDb250YWluZXIgcCIpLmh0bWwoIjxicj4iK2EpO2xldCBmPWlzTmFOKHBhcnNlSW50KGIpKT9nOmI7aXNOYU4ocGFyc2VJbnQoZikpfHwoYT1uZXcgQ3VzdG9tRXZlbnQoInRyYWNrc3RlcC5jb21wbGV0ZSIse2RldGFpbDp7c3RlcElkOiJUcmFkZUluQWN0aW9uQm94IixvbkNvbXBsZXRlOmM9PntjLmRhdGFzZXQuY29tcGxfdHh0X2ZyPWMuZGF0YXNldC5jb21wbF90eHRfZnIucmVwbGFjZSgieyRUUkFERUNBUn0iLGQpLnJlcGxhY2UoInskVFJBREVWQUx9IixmKTtjLmRhdGFzZXQuY29tcGxfdHh0X2VuPWMuZGF0YXNldC5jb21wbF90eHRfZW4ucmVwbGFjZSgieyRUUkFERUNBUn0iLGQpLnJlcGxhY2UoInskVFJBREVWQUx9IixmKTt2YXIgbj17eWVhcjokKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPVlFQVJFWF0iKS52YWwoKSwKbWFrZTokKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPU1BS0VFWF0iKS52YWwoKSxtb2RlbDokKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPU1PREVMRVhdIikudmFsKCksdHJpbTokKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPVRSSU1FWF0iKS52YWwoKSx2YWx1ZTpwYXJzZUludChmLnJlcGxhY2UoIiwiLCIiKSl9O19sb2NhbFN0b3JhZ2VTZXQoInRyYWRlaW5fc3VibWl0X2RhdGEiLEpTT04uc3RyaW5naWZ5KG4pLDEpO2lmKDE+cGFyc2VJbnQoZikpe249JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT16ZXJvVmFsdWVNZXNzYWdlRW5dIikudmFsKCk7bGV0IHI9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT16ZXJvVmFsdWVNZXNzYWdlRnJdIikudmFsKCk7Yy5kYXRhc2V0LmNvbXBsX3R4dF9mcj1gJHtkfSB8ICR7cn1gO2MuZGF0YXNldC5jb21wbF90eHRfZW49YCR7ZH0gfCAke259YH19LGZvcmNlVXBkYXRlOiEwfX0pLApkb2N1bWVudC5kaXNwYXRjaEV2ZW50KGEpKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBbbmFtZT10cmFkZUluQXZnXSIpLnZhbCgwKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBbbmFtZT10cmFkZUluTG93XSIpLnZhbCgwKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBbbmFtZT10cmFkZUluSGlnaF0iKS52YWwoMCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gW25hbWU9dHJhZGVJblZhbHVlQ0JCQXZhaWxhYmxlVmFsdWVzXSIpLnZhbCgwKTskKCIudHJhZGVJbkJhclN0ZXAxIikuc2hvdygpOyQoIi50cmFkZUluQmFyU3RlcDJUaXRsZSIpLnRleHQoJCgiLnRyYWRlSW5CYXJTdGVwMlRpdGxlIikudGV4dCgpLnJlcGxhY2UoIiAiK2QsIiIpKTskKCJpbnB1dFtuYW1lPXRyYWRlSW5CYXJTbXNPckVtYWlsXSIpLnJlbW92ZUNsYXNzKCJyZXFSYWRpbyIpOyQoIi50cmFkZUluQmFyU3RlcDIiKS5oaWRlKCk7JCgiaW5wdXRbbmFtZT10cmFkZUluVmFsdWVDQkJDYWxsZWRdIikudmFsKDApOwokKCJpbnB1dFtuYW1lPXRyYWRlSW5CYXJTbXNPckVtYWlsXTpjaGVja2VkIikucHJvcCgiY2hlY2tlZCIsITEpOyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIHNlbGVjdFtuYW1lPSJWRUhJQ0xFT1BUSU9OUyJdJykuZmluZCgib3B0aW9uIikucmVtb3ZlKCk7JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iUVVFU1RJT05TIl0nKS52YWwoIiIpfSxvbkJlZm9yZU9wZW46ZnVuY3Rpb24oKXtmb3IodmFyIGE9Z2V0VXJsVmFycygpLGw9T2JqZWN0LmtleXMoYSksZz1sLmxlbmd0aCxiPXt9O2ctLTspe3ZhciBkPWxbZ107YltkLnRvTG93ZXJDYXNlKCldPWFbZF19YT1iO3ZhciBoPSQoJ3NlbGVjdFtuYW1lPSJ0cmFkaW5NYWtlIl0nKS52YWwoKT8kKCdzZWxlY3RbbmFtZT0idHJhZGluTWFrZSJdJykudmFsKCk6ZDJjbWVkaWEuY2FwaXRhbGlzZUZpcnN0TGV0dGVyKGEudG1ha2U\/YS50bWFrZS50b0xvd2VyQ2FzZSgpOiIiKSxmPSQoJ3NlbGVjdFtuYW1lPSJ0cmFkaW5Nb2RlbCJdJykudmFsKCk\/CiQoJ3NlbGVjdFtuYW1lPSJ0cmFkaW5Nb2RlbCJdJykudmFsKCk6ZDJjbWVkaWEuY2FwaXRhbGlzZUZpcnN0TGV0dGVyKGEudG1vZGVsP2EudG1vZGVsLnRvTG93ZXJDYXNlKCk6IiIpO2w9JCgnc2VsZWN0W25hbWU9InRyYWRpblRyaW0iXScpLnZhbCgpPyQoJ3NlbGVjdFtuYW1lPSJ0cmFkaW5UcmltIl0nKS52YWwoKToiICI7Zz0kKCdzZWxlY3RbbmFtZT0idHJhZGluVHJpbSJdJykudmFsKCk\/JCgnc2VsZWN0W25hbWU9InRyYWRpblRyaW0iXSBvcHRpb246c2VsZWN0ZWQnKS5hdHRyKCJkYXRhLXN0eWxlaWQiKToiICI7dmFyIGM9JCgnc2VsZWN0W25hbWU9InRyYWRpblllYXIiXScpLnZhbCgpPyQoJ3NlbGVjdFtuYW1lPSJ0cmFkaW5ZZWFyIl0nKS52YWwoKTphLnR5ZWFyO2E9JCgnaW5wdXRbbmFtZT0idHJhZGluVmluIl0nKS52YWwoKT8kKCdpbnB1dFtuYW1lPSJ0cmFkaW5WaW4iXScpLnZhbCgpOiIiOyQoInRyYWRlSW5TZWxlY3RlZE1ha2UiKS52YWwoaCk7JCgidHJhZGVJblNlbGVjdGVkTW9kZWwiKS52YWwoZik7CiQoInRyYWRlSW5TZWxlY3RlZFRyaW0iKS52YWwobCk7JCgidHJhZGVJblNlbGVjdGVkWWVhciIpLnZhbChjKTskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNQUtFRVgiXScpLnZhbChoKTskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNT0RFTEVYIl0nKS52YWwoZik7JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iVFJJTUVYIl0nKS52YWwobCk7JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iWUVBUkVYIl0nKS52YWwoYyk7JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0idHJhZGVpbmJhclN0eWxlaWQiXScpLnZhbChnKTskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJWSU5FWCJdJykudmFsKGEpO2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIGNsaWVudFN0b3JhZ2Upe3ZhciBuO2E9bnVsbCE9KG49Y2xpZW50U3RvcmFnZS5nZXQoImZpcnN0bmFtZSIpKT9uOiIiO3ZhciByO249bnVsbCE9CihyPWNsaWVudFN0b3JhZ2UuZ2V0KCJsYXN0bmFtZSIpKT9yOiIiO3I9YSsoIiIhPW4\/IiAiK2NsaWVudFN0b3JhZ2UuZ2V0KCJsYXN0bmFtZSIpOiIiKTskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJGTkFNRSJdJykudmFsKHIpO3ZhciBlOyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IkVNQUlMUEhPTkUiXScpLnZhbChudWxsIT0oZT1jbGllbnRTdG9yYWdlLmdldCgiZW1haWwiKSk\/ZToiIik7dmFyIHU7JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iRU1BSUwiXScpLnZhbChudWxsIT0odT1jbGllbnRTdG9yYWdlLmdldCgicGhvbmUiKSk\/dToiIil9ZW1haWxIYW5kbGVyLmNhcjJfbWFrZT1oO2VtYWlsSGFuZGxlci5jYXIyX21vZGVsPWY7ZW1haWxIYW5kbGVyLmNhcjJfdHJpbT1sO2VtYWlsSGFuZGxlci5jYXIyX3llYXI9YztlbWFpbEhhbmRsZXIuY2FyMl9vZG9tZXRlcj0kKCIjcmViYXRlTWlsZWFnZV90cmFkZUluQmFyUG9wdXAiKS52YWwoKTsKZW1haWxIYW5kbGVyLmRlcGFydG1lbnQ9Ik5FVyI7aWYoInVzZWRjYXJzLmh0bWwiPT0kKCIjUEFHRUlEIikudmFsKCl8fCIwIj09JCgiaW5wdXRbbmFtZT10cmFkZUluSGFzTmV3RGVwXSIpLnZhbCgpKWVtYWlsSGFuZGxlci5kZXBhcnRtZW50PSJVU0VEIjtlPSQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyIgIitjKyIgIitoKyIgIitmOiIgIitoKyIgIitmKyIgIitjOyQoIiN0cmFkZUluQmFyUG9wdXBTZWxlY3RlZFZlaGljbGUiKS5odG1sKGUpO0Nvb2tpZXMuZ2V0KCJwb3B1cFBhZ2VWaWV3cyIpfHxDb29raWVzLnNldCgicG9wdXBQYWdlVmlld3MiLCIwIixudWxsLCIvIik7aWYoIjEiPT0kKCIjaXNNb2JpbGUiKS52YWwoKXx8IiI9PWh8fCIiPT1mfHwiIj09Yyl7IjEiIT0kKCIjaXNNb2JpbGUiKS52YWwoKSYmKCQoIiNUcmFkZUluQmFyUG9wdXBDb250YWluZXIiKS5jc3MoImhlaWdodCIsIjYzNXB4IiksJCgiI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyIpLmNzcygiaGVpZ2h0IiwKIjYzNXB4IikpOyQoIiN0cmFkZUluQmFyUG9wdXBNYWtlIikuYWRkQ2xhc3MoInJlcXVpcmVkIik7JCgiI3RyYWRlSW5CYXJQb3B1cE1ha2UiKS5lbXB0eSgpOyQoIiN0cmFkZUluQmFyUG9wdXBNb2RlbCIpLmFkZENsYXNzKCJyZXF1aXJlZCIpOyQoIiN0cmFkZUluQmFyUG9wdXBNb2RlbCIpLmVtcHR5KCk7JCgiI3RyYWRlSW5CYXJQb3B1cFllYXIiKS5hZGRDbGFzcygicmVxdWlyZWQiKTskKCIjdHJhZGVJbkJhclBvcHVwWWVhciIpLmVtcHR5KCk7InZpbiIhPSQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IkNCQk1PREVMU0VMRUNUIl0nKS52YWwoKT8oJCgiI3RyYWRlSW5CYXJQb3B1cE1ha2VEaXZDb250YWluZXIiKS5jc3MoImRpc3BsYXkiLCJpbmxpbmUtYmxvY2siKSwkKCIjdHJhZGVJbkJhclBvcHVwTW9kZWxEaXZDb250YWluZXIiKS5jc3MoImRpc3BsYXkiLCJpbmxpbmUtYmxvY2siKSwkKCIjdHJhZGVJbkJhclBvcHVwWWVhckRpdkNvbnRhaW5lciIpLmNzcygiZGlzcGxheSIsCiJpbmxpbmUtYmxvY2siKSk6JCgiI3RyYWRlSW5CYXJQb3B1cE5pdkRpdkNvbnRhaW5lciIpLmNzcygiZGlzcGxheSIsImlubGluZS1ibG9jayIpOzAhPSQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IkNCQk1PREVMU0VMRUNUIl0nKS52YWwoKSYmKCQoJy5uaXZNYWtlTW9kZWxTZWxlY3RDb250YWluZXIgLm5pdk1ha2VNb2RlbFNlbGVjdFt2YWx1ZT0iJyskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJDQkJNT0RFTFNFTEVDVCJdJykudmFsKCkrJyJdJykucHJvcCgiY2hlY2tlZCIsITApLCQoIi5uaXZNYWtlTW9kZWxTZWxlY3RDb250YWluZXIiKS5zaG93KCkpOyQoIiN0cmFkZUluQmFyUG9wdXBUcmltRGl2Q29udGFpbmVyIikuY3NzKCJkaXNwbGF5IiwiaW5saW5lLWJsb2NrIik7JCgiI3RyYWRlSW5CYXJQb3B1cFRyaW0iKS5hZGRDbGFzcygicmVxdWlyZWQiKTskKCIjdHJhZGVJbkJhclBvcHVwVHJpbSIpLmVtcHR5KCk7ZT0kKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8KIiB0cmFkZS1pbiEiOiIgw6ljaGFuZ2UhIjskKCIjdHJhZGVJbkJhclBvcHVwU2VsZWN0ZWRWZWhpY2xlIikuaHRtbChlKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAubml2TWFrZU1vZGVsU2VsZWN0IikubGVuZ3RoJiYkKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAubml2TWFrZU1vZGVsU2VsZWN0IikudHJpZ2dlcigiY2hhbmdlIik7dmFyIHE9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/IkVOR0xJU0giOiJGUkVOQ0giOyQuYWpheCh7dHlwZToiUE9TVCIsdXJsOigiRU5HTElTSCI9PXE\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L2dldFRyYWRlSW5CYXJEYXRhP3dzd2lkdGg9MCIsZGF0YVR5cGU6Impzb24iLGRhdGE6e2xhbmd1YWdlOnF9LHN1Y2Nlc3M6ZnVuY3Rpb24obSl7JCgiI3RyYWRlSW5CYXJQb3B1cE1ha2UiKS5hcHBlbmQoJzxvcHRpb24gdmFsdWU9IiI+JysoIkVOR0xJU0giPT1xPyJNYWtlIjoiTWFycXVlIikrIjwvb3B0aW9uPiIpOwpmb3IodmFyIGs9MDtrPG0ubGVuZ3RoO2srKyl7dmFyIHA9bVtrXS5tYWtlLnRvTG93ZXJDYXNlKCk9PWgudG9Mb3dlckNhc2UoKT8nc2VsZWN0ZWQ9InNlbGVjdGVkIic6IiI7bGV0IHQ9MT09JCgiaW5wdXRbbmFtZT1pc0FjY3V0cmFkZV0iKS52YWwoKT9tW2tdLm1ha2UudG9VcHBlckNhc2UoKTptW2tdLm1ha2U7JCgiI3RyYWRlSW5CYXJQb3B1cE1ha2UiKS5hcHBlbmQoIjxvcHRpb24gIitwKycgdmFsdWU9IicrdCsnIj4nK21ba10ubWFrZSsiPC9vcHRpb24+Iil9JCgiI3RyYWRlSW5CYXJQb3B1cE1ha2UiKS50cmlnZ2VyKCJjaGFuZ2UiKTskKCIjdHJhZGVJbkJhclBvcHVwTml2IikubGVuZ3RoJiYkKCIjdHJhZGVJbkJhclBvcHVwTml2IikudHJpZ2dlcigia2V5dXAiKX19KX1lbHNlIiAiPT1sPygkKCIjdHJhZGVJbkJhclBvcHVwVHJpbURpdkNvbnRhaW5lciIpLmNzcygiZGlzcGxheSIsImlubGluZS1ibG9jayIpLCQoIiN0cmFkZUluQmFyUG9wdXBUcmltIikuYWRkQ2xhc3MoInJlcXVpcmVkIiksCiQoIiN0cmFkZUluQmFyUG9wdXBUcmltIikuZW1wdHkoKSxxPSQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyJFTkdMSVNIIjoiRlJFTkNIIiwxIT0kKCJpbnB1dFtuYW1lPW5vQ0JCXSIpLnZhbCgpPyQuYWpheCh7dHlwZToiUE9TVCIsdXJsOigiRU5HTElTSCI9PXE\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L2dldFRyYWRlSW5CYXJUcmltP3dzd2lkdGg9MCIsZGF0YVR5cGU6Impzb24iLGRhdGE6e2xhbmd1YWdlOnEsbWFrZTpoLG1vZGVsOmYseWVhcjpjfSxzdWNjZXNzOmZ1bmN0aW9uKG0peyQoIiN0cmFkZUluQmFyUG9wdXBUcmltIikuYXBwZW5kKCc8b3B0aW9uIHZhbHVlPSIiPicrKCJFTkdMSVNIIj09cT8iVHJpbSI6IlZlcnNpb24iKSsiPC9vcHRpb24+Iik7Zm9yKHZhciBrPTA7azxtLmxlbmd0aDtrKyspe3ZhciBwPW1ba10uc3R5bGUrIiAiK21ba10uc2VyaWVzLHQ9bVtrXS51dmM7JCgiI3RyYWRlSW5CYXJQb3B1cFRyaW0iKS5hcHBlbmQoJzxvcHRpb24gZGF0YS1zdHlsZWlkPSInKwp0KyciIHZhbHVlPSInK3ArJyI+JytwKyI8L29wdGlvbj4iKX19fSk6MT09JCgiaW5wdXRbbmFtZT1pc0FjY3V0cmFkZV0iKS52YWwoKT8kLmFqYXgoe3R5cGU6IlBPU1QiLHVybDooIkVOR0xJU0giPT1xPyIvZW4vIjoiL2ZyLyIpKyIvYWpheC9nZXRUcmFkZUluTW5nVHJpbT93c3dpZHRoPTAiLGRhdGFUeXBlOiJqc29uIixkYXRhOntsYW5ndWFnZTpxLG1ha2U6aCxtb2RlbDpmLHllYXI6Y30sc3VjY2VzczpmdW5jdGlvbihtKXskKCIjdHJhZGVJbkJhclBvcHVwVHJpbSIpLmFwcGVuZCgnPG9wdGlvbiB2YWx1ZT0iIj4nKygiRU5HTElTSCI9PXE\/IlRyaW0iOiJWZXJzaW9uIikrIjwvb3B0aW9uPiIpO2Zvcih2YXIgaz0wO2s8bS5sZW5ndGg7aysrKXt2YXIgcD1tW2tdLm5hbWUsdD1tW2tdLmlkOyQoIiN0cmFkZUluQmFyUG9wdXBUcmltIikuYXBwZW5kKCc8b3B0aW9uIGRhdGEtc3R5bGVpZD0iJyt0KyciIHZhbHVlPSInK3ArJyI+JytwKyI8L29wdGlvbj4iKX19fSk6CiQuYWpheCh7dHlwZToiUE9TVCIsdXJsOigiRU5HTElTSCI9PXE\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L2dldFRyYWRlSW5CYXJEYXRhP3dzd2lkdGg9MCIsZGF0YVR5cGU6Impzb24iLGRhdGE6e2xhbmd1YWdlOnEsbWFrZTpofSxzdWNjZXNzOmZ1bmN0aW9uKG0peyQoIiN0cmFkZUluQmFyUG9wdXBUcmltIikuYXBwZW5kKCc8b3B0aW9uIHZhbHVlPSIiPicrKCJFTkdMSVNIIj09cT8iVHJpbSI6IlZlcnNpb24iKSsiPC9vcHRpb24+Iik7Zm9yKHZhciBrPTA7azxtW2NdLmxlbmd0aDtrKyspbVtjXVtrXS5tb2RlbC50b0xvd2VyQ2FzZSgpPT1mLnRvTG93ZXJDYXNlKCkmJiQoIiN0cmFkZUluQmFyUG9wdXBUcmltIikuYXBwZW5kKCc8b3B0aW9uIHZhbHVlPSInK21bY11ba10udHJpbSsnIj4nK21bY11ba10udHJpbSsiPC9vcHRpb24+Iil9fSkpOigkKCIjdHJhZGVJbkJhclBvcHVwTWFrZURpdkNvbnRhaW5lciIpLmhpZGUoKSwkKCIjdHJhZGVJbkJhclBvcHVwTWFrZSIpLnJlbW92ZUNsYXNzKCJyZXF1aXJlZCIpLAokKCIjdHJhZGVJbkJhclBvcHVwTW9kZWxEaXZDb250YWluZXIiKS5oaWRlKCksJCgiI3RyYWRlSW5CYXJQb3B1cE1vZGVsIikucmVtb3ZlQ2xhc3MoInJlcXVpcmVkIiksJCgiI3RyYWRlSW5CYXJQb3B1cFllYXJEaXZDb250YWluZXIiKS5oaWRlKCksJCgiI3RyYWRlSW5CYXJQb3B1cFllYXIiKS5yZW1vdmVDbGFzcygicmVxdWlyZWQiKSwkKCIjdHJhZGVJbkJhclBvcHVwVHJpbURpdkNvbnRhaW5lciIpLmhpZGUoKSwkKCIjdHJhZGVJbkJhclBvcHVwVHJpbSIpLnJlbW92ZUNsYXNzKCJyZXF1aXJlZCIpLDEhPSQoImlucHV0W25hbWU9bm9DQkJdIikudmFsKCk\/KCQoIi5uaXZNYWtlTW9kZWxTZWxlY3RDb250YWluZXIiKS5oaWRlKCksJCgiI3RyYWRlSW5CYXJQb3B1cE5pdkRpdkNvbnRhaW5lciIpLmhpZGUoKSwkLmFqYXgoe3R5cGU6IlBPU1QiLHVybDooJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L2dldFRyYWRlSW5CYXJWYWx1ZT93c3dpZHRoPTAiLApkYXRhVHlwZToianNvbiIsZGF0YTp7dXZjOiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9InRyYWRlaW5iYXJTdHlsZWlkIl0nKS52YWwoKSxwcm92aW5jZTokKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJkZWFsZXJQcm92aW5jZVRyYWRlSW4iXScpLnZhbCgpfSxzdWNjZXNzOmZ1bmN0aW9uKG0peyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIHNlbGVjdFtuYW1lPSJWRUhJQ0xFT1BUSU9OUyJdJykuZmluZCgib3B0aW9uIikucmVtb3ZlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLm11bHRpc2VsZWN0VmVoaWNsZU9wdGlvbnMiKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLm9wZW5WZWhpY2xlT3B0aW9ucyIpLnNob3coKX19KSk6MT09JCgiaW5wdXRbbmFtZT1pc0FjY3V0cmFkZV0iKS52YWwoKSYmKCQoIi5uaXZNYWtlTW9kZWxTZWxlY3RDb250YWluZXIiKS5oaWRlKCksJCgiI3RyYWRlSW5CYXJQb3B1cE5pdkRpdkNvbnRhaW5lciIpLmhpZGUoKSwKJC5hamF4KHt0eXBlOiJQT1NUIix1cmw6KCQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyIvZW4vIjoiL2ZyLyIpKyIvYWpheC9nZXRUcmFkZUluTW5nT3B0aW9ucz93c3dpZHRoPTAiLGRhdGFUeXBlOiJqc29uIixkYXRhOntpZDokKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJ0cmFkZWluYmFyU3R5bGVpZCJdJykudmFsKCkscHJvdmluY2U6JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iZGVhbGVyUHJvdmluY2VUcmFkZUluIl0nKS52YWwoKX0sc3VjY2VzczpmdW5jdGlvbihtKXskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBzZWxlY3RbbmFtZT0iVkVISUNMRU9QVElPTlMiXScpLmZpbmQoIm9wdGlvbiIpLnJlbW92ZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC5tdWx0aXNlbGVjdFZlaGljbGVPcHRpb25zIikuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC5vcGVuVmVoaWNsZU9wdGlvbnMiKS5zaG93KCl9fSkpKTsKYT1nZXRVcmxWYXJzKCk7ZT1hLmhhc093blByb3BlcnR5KCJ0cmFkZS12YWx1ZSIpJiYieWVzIj09YVsidHJhZGUtdmFsdWUiXTt1PWEuaGFzT3duUHJvcGVydHkoInRyYWRlLXZhbHVlIikmJiJubyI9PWFbInRyYWRlLXZhbHVlIl07cj0kKCdpbnB1dFtuYW1lPSJDQkJDaGVja1VzZXIiXScpLmxlbmd0aD9hdG9iKCQoJ2lucHV0W25hbWU9IkNCQkNoZWNrVXNlciJdJykudmFsKCkpOiIiO3V8fCI2Ni4xMzAuMTA3LjE1NyIhPXImJjEhPUNvb2tpZXMuZ2V0KCJEMkNVVUlEIikmJiFlfHwxPT0kKCJpbnB1dFtuYW1lPW5vQ0JCXSIpLnZhbCgpfHwoJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iRk5BTUUiXScpLmhpZGUoKSwkKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJFTUFJTFBIT05FIl0nKS5oaWRlKCksJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iRU1BSUwiXScpLmhpZGUoKSwkKCIudHJhZGVJbkJhckRlYWxlck1lc3NhZ2UiKS5zaG93KCkpOwokKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBbbmFtZT0iRU1BSUxQSE9ORSJdJykuZWFjaCgobSxrKT0+e0lNYXNrKGsse21hc2s6W3ttYXNrOiIwMDAgMDAwLTAwMDAifSx7bWFzazoiMSAwMDAgMDAwLTAwMDAifV19KX0pO3RoaXMudHJhZGVJbkJvdHRvbUxvZ29IZWlndCgpfSxvbkJlZm9yZVZhbGlkYXRpb246ZnVuY3Rpb24oYSl7dmFyIGw9Z2V0VXJsVmFycygpO2E9bC5oYXNPd25Qcm9wZXJ0eSgidHJhZGUtdmFsdWUiKSYmInllcyI9PWxbInRyYWRlLXZhbHVlIl07bD1sLmhhc093blByb3BlcnR5KCJ0cmFkZS12YWx1ZSIpJiYibm8iPT1sWyJ0cmFkZS12YWx1ZSJdO3ZhciBnPSQoJ2lucHV0W25hbWU9IkNCQkNoZWNrVXNlciJdJykubGVuZ3RoP2F0b2IoJCgnaW5wdXRbbmFtZT0iQ0JCQ2hlY2tVc2VyIl0nKS52YWwoKSk6IiI7aWYoIWwmJigiNjYuMTMwLjEwNy4xNTciPT1nfHwxPT1Db29raWVzLmdldCgiRDJDVVVJRCIpfHxhKSYmMSE9JCgiaW5wdXRbbmFtZT1ub0NCQl0iKS52YWwoKSl7JCgiI3JlYmF0ZU1pbGVhZ2VfdHJhZGVJbkJhclBvcHVwIikucmVtb3ZlQ2xhc3MoInZhbGlkaXR5LWVycm9uZW91cyIpOwokKCIjdHJhZGVJbkJhclBvcHVwTWFrZSIpLmhhc0NsYXNzKCJyZXF1aXJlZCIpJiYiIiE9JCgiI3RyYWRlSW5CYXJQb3B1cE1ha2UiKS52YWwoKSYmJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTUFLRUVYIl0nKS52YWwoJCgiI3RyYWRlSW5CYXJQb3B1cE1ha2UiKS52YWwoKSk7JCgiI3RyYWRlSW5CYXJQb3B1cE1vZGVsIikuaGFzQ2xhc3MoInJlcXVpcmVkIikmJiIiIT0kKCIjdHJhZGVJbkJhclBvcHVwTW9kZWwiKS52YWwoKSYmJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTU9ERUxFWCJdJykudmFsKCQoIiN0cmFkZUluQmFyUG9wdXBNb2RlbCIpLnZhbCgpKTskKCIjdHJhZGVJbkJhclBvcHVwVHJpbSIpLmhhc0NsYXNzKCJyZXF1aXJlZCIpJiYiIiE9JCgiI3RyYWRlSW5CYXJQb3B1cFRyaW0iKS52YWwoKSYmKCQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IlRSSU1FWCJdJykudmFsKCQoIiN0cmFkZUluQmFyUG9wdXBUcmltIikudmFsKCkpLAokKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJ0cmFkZWluYmFyU3R5bGVpZCJdJykudmFsKCQoIiN0cmFkZUluQmFyUG9wdXBUcmltIG9wdGlvbjpzZWxlY3RlZCIpLmF0dHIoImRhdGEtc3R5bGVpZCIpKSk7JCgiI3RyYWRlSW5CYXJQb3B1cFllYXIiKS5oYXNDbGFzcygicmVxdWlyZWQiKSYmIiIhPSQoIiN0cmFkZUluQmFyUG9wdXBZZWFyIikudmFsKCkmJiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IllFQVJFWCJdJykudmFsKCQoIiN0cmFkZUluQmFyUG9wdXBZZWFyIikudmFsKCkpO2lmKDE+JCgiI3JlYmF0ZU1pbGVhZ2VfdHJhZGVJbkJhclBvcHVwIikudmFsKCkpcmV0dXJuICQoIiNyZWJhdGVNaWxlYWdlX3RyYWRlSW5CYXJQb3B1cCIpLmFkZENsYXNzKCJ2YWxpZGl0eS1lcnJvbmVvdXMiKSwhMTthPSQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIHNlbGVjdFtuYW1lPSJWRUhJQ0xFT1BUSU9OUyJdJykuZmluZCgib3B0aW9uOnNlbGVjdGVkIikubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWV9KS5nZXQoKS5qb2luKCIsICIpOwp2YXIgYj0kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBzZWxlY3RbbmFtZT0iVkVISUNMRU9QVElPTlMiXScpLmZpbmQoIm9wdGlvbjpzZWxlY3RlZCIpLm1hcChmdW5jdGlvbigpe3JldHVybiB0aGlzLnRleHR9KS5nZXQoKS5qb2luKCIsICIpO2w9JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iS00iXScpLnZhbCgpOyQuYWpheCh7dHlwZToiUE9TVCIsdXJsOigkKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iL2VuLyI6Ii9mci8iKSsiL2FqYXgvZ2V0VHJhZGVJbkJhclZhbHVlP3dzd2lkdGg9MCIsZGF0YVR5cGU6Impzb24iLGRhdGE6e3V2YzokKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJ0cmFkZWluYmFyU3R5bGVpZCJdJykudmFsKCksb3B0aW9uczphLHZlaGljbGVLTTpsLHByb3ZpbmNlOiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9ImRlYWxlclByb3ZpbmNlVHJhZGVJbiJdJykudmFsKCl9LApzdWNjZXNzOmZ1bmN0aW9uKGQpe3ZhciBoPWQuY2FuYWRpYW5fdHJhZGVpbl92YWx1ZXx8ZC5iYXNlX3RyYWRlaW5fYXZnfHwwLGY9ZC5jYW5hZGlhbl90cmFkZWluX2xvd3x8ZC5iYXNlX3RyYWRlaW5fcm91Z2h8fDA7ZD1kLmNhbmFkaWFuX3RyYWRlaW5faGlnaHx8ZC5iYXNlX3RyYWRlaW5fY2xlYW58fDA7aD0iJCIrRDJDVXRpbHMuRm9ybWF0LnRvTnVtYmVyKGgpO2Y9IiQiK0QyQ1V0aWxzLkZvcm1hdC50b051bWJlcihmKTtkPSIkIitEMkNVdGlscy5Gb3JtYXQudG9OdW1iZXIoZCk7dmFyIGM9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iWUVBUkVYIl0nKS52YWwoKSsiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTUFLRUVYIl0nKS52YWwoKSsiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTU9ERUxFWCJdJykudmFsKCkrIiAiKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IlRSSU1FWCJdJykudmFsKCk6CiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1BS0VFWCJdJykudmFsKCkrIiAiKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1PREVMRVgiXScpLnZhbCgpKyIgIiskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJZRUFSRVgiXScpLnZhbCgpKyIgIiskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJUUklNRVgiXScpLnZhbCgpO2ImJihjKz0iICgiK2IrIikiKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhckRlYWxlclN0ZXAgLnRyYWRlSW5CYXJEZWFsZXJTdGVwTWFrZU1vZGVsWWVhciIpLnRleHQoYyk7IjEiPT0kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJDQkJTSU5HTEVWQUxVRSJdJykudmFsKCk\/KCQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyRGVhbGVyU3RlcCAudHJhZGVJbkJhckNCQk1pblZhbHVlIikucGFyZW50KCkuaGlkZSgpLCQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyRGVhbGVyU3RlcCAudHJhZGVJbkJhckNCQk1heFZhbHVlIikucGFyZW50KCkuaGlkZSgpKToKJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJEZWFsZXJTdGVwIC50cmFkZUluQmFyQ0JCQXZnVmFsdWUiKS5wYXJlbnQoKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJEZWFsZXJTdGVwIC50cmFkZUluQmFyQ0JCTWluVmFsdWUiKS50ZXh0KGYpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyRGVhbGVyU3RlcCAudHJhZGVJbkJhckNCQk1heFZhbHVlIikudGV4dChkKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhckRlYWxlclN0ZXAgLnRyYWRlSW5CYXJDQkJBdmdWYWx1ZSIpLnRleHQoaCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJEZWFsZXJTdGVwIikuc2hvdygpfX0pO3JldHVybiExfX0sb25CZWZvcmVTdWJtaXRDQkJDYWxsOmZ1bmN0aW9uKGEpe3ZhciBsPSQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIHNlbGVjdFtuYW1lPSJWRUhJQ0xFT1BUSU9OUyJdJykuZmluZCgib3B0aW9uOnNlbGVjdGVkIikubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWV9KS5nZXQoKS5qb2luKCIsICIpLApnPSQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIHNlbGVjdFtuYW1lPSJWRUhJQ0xFT1BUSU9OUyJdJykuZmluZCgib3B0aW9uOnNlbGVjdGVkIikubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGV4dH0pLmdldCgpLmpvaW4oIiwgIik7IiIhPWcmJiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IlFVRVNUSU9OUyJdJykudmFsKGcpO2c9JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iS00iXScpLnZhbCgpOyQuYWpheCh7dHlwZToiUE9TVCIsdXJsOigkKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iL2VuLyI6Ii9mci8iKSsiL2FqYXgvZ2V0VHJhZGVJbkJhclZhbHVlP3dzd2lkdGg9MCIsZGF0YVR5cGU6Impzb24iLGRhdGE6e3V2YzokKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJ0cmFkZWluYmFyU3R5bGVpZCJdJykudmFsKCksb3B0aW9uczpsLHZlaGljbGVLTTpnLHByb3ZpbmNlOiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9ImRlYWxlclByb3ZpbmNlVHJhZGVJbiJdJykudmFsKCl9LApzdWNjZXNzOmZ1bmN0aW9uKGIpe3ZhciBkPWIuY2FuYWRpYW5fdHJhZGVpbl92YWx1ZXx8Yi5iYXNlX3RyYWRlaW5fYXZnfHwwLGg9Yi5jYW5hZGlhbl90cmFkZWluX2xvd3x8Yi5iYXNlX3RyYWRlaW5fcm91Z2h8fDA7Yj1iLmNhbmFkaWFuX3RyYWRlaW5faGlnaHx8Yi5iYXNlX3RyYWRlaW5fY2xlYW58fDA7dmFyIGY9JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iQ0JCQURERURWQUxVRSJdJykudmFsKCksYz0kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJDQkJBRERFRFZBTFVFTUFLRVMiXScpLnZhbCgpLG49JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iQ0JCQURERURWQUxVRVRZUEUiXScpLnZhbCgpLHI9JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iQ0JCU0lOR0xFVkFMVUUiXScpLnZhbCgpOzAhPWYmJiIiIT1jJiYtMTxjLnNwbGl0KCI7IikuaW5kZXhPZigkKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNQUtFRVgiXScpLnZhbCgpKSYmCigiY2FzaCI9PW4\/KGQrPXBhcnNlSW50KGYpLGgrPXBhcnNlSW50KGYpLGIrPXBhcnNlSW50KGYpKToicGVyY2VudGFnZSI9PW4mJihmPTErZi8xMDAsZCo9ZixoKj1mLGIqPWYpKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBbbmFtZT10cmFkZUluQXZnXSIpLmF0dHIoImRhdGEtYXZnIixkKTtpZigkKCJpbnB1dFtuYW1lPWZpbmFuY2VUcmFkZUluTWFrZV0iKS5sZW5ndGgpe2Y9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1ZRUFSRVhdIikudmFsKCk7Yz0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPU1BS0VFWF0iKS52YWwoKTtuPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9TU9ERUxFWF0iKS52YWwoKTtsZXQgaz0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPVRSSU1FWF0iKS52YWwoKTskKCJpbnB1dFtuYW1lPWZpbmFuY2VUcmFkZUluTWFrZV0iKS52YWwoYyk7JCgiaW5wdXRbbmFtZT1maW5hbmNlVHJhZGVJbk1vZGVsXSIpLnZhbChuKTsKJCgiaW5wdXRbbmFtZT1maW5hbmNlVHJhZGVJblllYXJdIikudmFsKGYpOyQoImlucHV0W25hbWU9ZmluYW5jZVRyYWRlSW5UcmltXSIpLnZhbChrKTskKCJpbnB1dFtuYW1lPWZpbmFuY2VUcmFkZUluVmFsdWVdIikudmFsKCQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9dHJhZGVJbkF2Z10iKS5hdHRyKCJkYXRhLWF2ZyIpKTskKCIjcGF5bWVudFRyYWRlSW5WYWx1ZSIpLnZhbCgkKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPXRyYWRlSW5BdmddIikuYXR0cigiZGF0YS1hdmciKSk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT10cmFkZUluQXZnXSIpLmF0dHIoImRhdGEtYXZnIiwiIil9aWYoMT09YS5zZXR0aW5ncy5mb3JtdWx0aXN0ZXApe2xldCBrPWlzTmFOKHBhcnNlSW50KGQpKT8wOmQ7az1EMkNVdGlscy5Gb3JtYXQudG9OdW1iZXIoayk7ZW1haWxIYW5kbGVyLnVzZXJFbWFpbD0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPUVNQUlMXSIpLnZhbCgpOwplbWFpbEhhbmRsZXIudXNlclBob25lPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9RU1BSUxQSE9ORV0iKS52YWwoKTt2YXIgZTtkPW51bGwhPShlPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Rk5BTUVdIikudmFsKCkpP2U6IiI7dmFyIHU7ZT1udWxsIT0odT1kLnNwbGl0KCIgIilbMF0pP3U6IiI7dmFyIHE7dT1udWxsIT0ocT1kLnNwbGl0KCIgIilbMV0pP3E6IiI7ZW1haWxIYW5kbGVyLnVzZXJGaXJzdE5hbWU9ZTtlbWFpbEhhbmRsZXIudXNlckxhc3ROYW1lPXU7dmFyIG09JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iWUVBUkVYIl0nKS52YWwoKSsiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTUFLRUVYIl0nKS52YWwoKSsiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTU9ERUxFWCJdJykudmFsKCk6JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTUFLRUVYIl0nKS52YWwoKSsKIiAiKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1PREVMRVgiXScpLnZhbCgpKyIgIiskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJZRUFSRVgiXScpLnZhbCgpO2lzTmFOKHBhcnNlSW50KGspKXx8KHE9bmV3IEN1c3RvbUV2ZW50KCJ0cmFja3N0ZXAuY29tcGxldGUiLHtkZXRhaWw6e3N0ZXBJZDoiVHJhZGVJbkFjdGlvbkJveCIsb25Db21wbGV0ZTpwPT57cC5kYXRhc2V0LmNvbXBsX3R4dF9mcj1wLmRhdGFzZXQuY29tcGxfdHh0X2ZyLnJlcGxhY2UoInskVFJBREVDQVJ9IixtKS5yZXBsYWNlKCJ7JFRSQURFVkFMfSIsayk7cC5kYXRhc2V0LmNvbXBsX3R4dF9lbj1wLmRhdGFzZXQuY29tcGxfdHh0X2VuLnJlcGxhY2UoInskVFJBREVDQVJ9IixtKS5yZXBsYWNlKCJ7JFRSQURFVkFMfSIsayk7dmFyIHQ9e3llYXI6JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1ZRUFSRVhdIikudmFsKCksbWFrZTokKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPU1BS0VFWF0iKS52YWwoKSwKbW9kZWw6JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1NT0RFTEVYXSIpLnZhbCgpLHRyaW06JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1UUklNRVhdIikudmFsKCksdmFsdWU6cGFyc2VJbnQoay5yZXBsYWNlKCIsIiwiIikpfTtfbG9jYWxTdG9yYWdlU2V0KCJ0cmFkZWluX3N1Ym1pdF9kYXRhIixKU09OLnN0cmluZ2lmeSh0KSwxKTtpZigxPnBhcnNlSW50KGspKXt0PSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9emVyb1ZhbHVlTWVzc2FnZUVuXSIpLnZhbCgpO2xldCB2PSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9emVyb1ZhbHVlTWVzc2FnZUZyXSIpLnZhbCgpO3AuZGF0YXNldC5jb21wbF90eHRfZnI9YCR7bX0gfCAke3Z9YDtwLmRhdGFzZXQuY29tcGxfdHh0X2VuPWAke219IHwgJHt0fWB9fSxmb3JjZVVwZGF0ZTohMH19KSxkb2N1bWVudC5kaXNwYXRjaEV2ZW50KHEpKTthLnNldHRpbmdzLmZvcm11bHRpc3RlcD0KITE7YS5jbG9zZSgpfWVsc2UgJCgiaW5wdXRbbmFtZT10cmFkZUluVmFsdWVDQkJDYWxsZWRdIikudmFsKDEpLCIxIj09cj9iPWg9InJlbW92ZWVtcHR5IjpkPSJyZW1vdmVlbXB0eSIsMDxofHwwPGJ8fDA8ZD8oJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gW25hbWU9dHJhZGVJbkF2Z10iKS52YWwoRDJDVXRpbHMuRm9ybWF0LnRvTnVtYmVyKGQpKSwkKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBbbmFtZT10cmFkZUluTG93XSIpLnZhbChEMkNVdGlscy5Gb3JtYXQudG9OdW1iZXIoaCkpLCQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIFtuYW1lPXRyYWRlSW5IaWdoXSIpLnZhbChEMkNVdGlscy5Gb3JtYXQudG9OdW1iZXIoYikpLCQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIFtuYW1lPXRyYWRlSW5WYWx1ZUNCQkF2YWlsYWJsZVZhbHVlc10iKS52YWwoMSksJCgiLnRyYWRlSW5CYXJTdGVwMSIpLmhpZGUoKSxtPSQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IllFQVJFWCJdJykudmFsKCkrCiIgIiskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNQUtFRVgiXScpLnZhbCgpKyIgIiskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNT0RFTEVYIl0nKS52YWwoKTokKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNQUtFRVgiXScpLnZhbCgpKyIgIiskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNT0RFTEVYIl0nKS52YWwoKSsiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iWUVBUkVYIl0nKS52YWwoKSwkKCIudHJhZGVJbkJhclN0ZXAyVGl0bGUiKS50ZXh0KCQoIi50cmFkZUluQmFyU3RlcDJUaXRsZSIpLnRleHQoKSsiICIrbSksJCgiaW5wdXRbbmFtZT10cmFkZUluQmFyU21zT3JFbWFpbF0iKS5hZGRDbGFzcygicmVxUmFkaW8iKSwkKCIudHJhZGVJbkJhclN0ZXAyIikuc2hvdygpKToocG9wdXBJc1N1Ym1pdHRpbmc9ITEsJCgiaW5wdXRbbmFtZT1zdGVwM2RvbmVdIikudmFsKDEpLAokKCIudHJhZGVJbkJhclBvcHVwU3VibWl0IikudHJpZ2dlcigiY2xpY2siKSl9fSl9LG9uQmVmb3JlU3VibWl0QWNjdXRyYWRlQ2FsbDpmdW5jdGlvbihhKXt2YXIgbD0kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBzZWxlY3RbbmFtZT0iVkVISUNMRU9QVElPTlMiXScpLmZpbmQoIm9wdGlvbjpzZWxlY3RlZCIpLm1hcChmdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlfSkuZ2V0KCkuam9pbigiLCAiKSxnPSQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIHNlbGVjdFtuYW1lPSJWRUhJQ0xFT1BUSU9OUyJdJykuZmluZCgib3B0aW9uOnNlbGVjdGVkIikubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGV4dH0pLmdldCgpLmpvaW4oIiwgIik7IiIhPWcmJiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IlFVRVNUSU9OUyJdJykudmFsKGcpO2c9JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iS00iXScpLnZhbCgpO3ZhciBiPSQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIHNlbGVjdFtuYW1lPSJDT0xPUkVYIl0nKS5maW5kKCJvcHRpb246c2VsZWN0ZWQiKS5hdHRyKCJkYXRhLWlkIik7CiQuYWpheCh7dHlwZToiUE9TVCIsdXJsOigkKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iL2VuLyI6Ii9mci8iKSsiL2FqYXgvZ2V0VHJhZGVJbk1uZ1ZhbHVlP3dzd2lkdGg9MCIsZGF0YVR5cGU6Impzb24iLGRhdGE6e2lkOiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9InRyYWRlaW5iYXJTdHlsZWlkIl0nKS52YWwoKSxvcHRpb25zOmwsa206Zyxjb2xvcjpiLHByb3ZpbmNlOiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9ImRlYWxlclByb3ZpbmNlVHJhZGVJbiJdJykudmFsKCl9LHN1Y2Nlc3M6ZnVuY3Rpb24oZCl7dmFyIGg9ZC5hdmd8fDAsZj1kLmxvd3x8MDtkPWQuaGlnaHx8MDt2YXIgYz0kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJDQkJBRERFRFZBTFVFIl0nKS52YWwoKSxuPSQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IkNCQkFEREVEVkFMVUVNQUtFUyJdJykudmFsKCksCnI9JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iQ0JCQURERURWQUxVRVRZUEUiXScpLnZhbCgpLGU9JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iQ0JCU0lOR0xFVkFMVUUiXScpLnZhbCgpOzAhPWMmJiIiIT1uJiYtMTxuLnNwbGl0KCI7IikuaW5kZXhPZigkKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNQUtFRVgiXScpLnZhbCgpKSYmKCJjYXNoIj09cj8oaCs9cGFyc2VJbnQoYyksZis9cGFyc2VJbnQoYyksZCs9cGFyc2VJbnQoYykpOiJwZXJjZW50YWdlIj09ciYmKGM9MStjLzEwMCxoKj1jLGYqPWMsZCo9YykpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIFtuYW1lPXRyYWRlSW5BdmddIikuYXR0cigiZGF0YS1hdmciLGgpO2lmKCQoImlucHV0W25hbWU9ZmluYW5jZVRyYWRlSW5NYWtlXSIpLmxlbmd0aCl7Yz0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPVlFQVJFWF0iKS52YWwoKTtuPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9TUFLRUVYXSIpLnZhbCgpOwpyPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9TU9ERUxFWF0iKS52YWwoKTtsZXQgcD0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPVRSSU1FWF0iKS52YWwoKTskKCJpbnB1dFtuYW1lPWZpbmFuY2VUcmFkZUluTWFrZV0iKS52YWwobik7JCgiaW5wdXRbbmFtZT1maW5hbmNlVHJhZGVJbk1vZGVsXSIpLnZhbChyKTskKCJpbnB1dFtuYW1lPWZpbmFuY2VUcmFkZUluWWVhcl0iKS52YWwoYyk7JCgiaW5wdXRbbmFtZT1maW5hbmNlVHJhZGVJblRyaW1dIikudmFsKHApOyQoImlucHV0W25hbWU9ZmluYW5jZVRyYWRlSW5WYWx1ZV0iKS52YWwoJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT10cmFkZUluQXZnXSIpLmF0dHIoImRhdGEtYXZnIikpOyQoIiNwYXltZW50VHJhZGVJblZhbHVlIikudmFsKCQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9dHJhZGVJbkF2Z10iKS5hdHRyKCJkYXRhLWF2ZyIpKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPXRyYWRlSW5BdmddIikuYXR0cigiZGF0YS1hdmciLAoiIil9aWYoMT09YS5zZXR0aW5ncy5mb3JtdWx0aXN0ZXApe2xldCBwPWlzTmFOKHBhcnNlSW50KGgpKT8wOmg7cD1EMkNVdGlscy5Gb3JtYXQudG9OdW1iZXIocCk7ZW1haWxIYW5kbGVyLnVzZXJFbWFpbD0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPUVNQUlMXSIpLnZhbCgpO2VtYWlsSGFuZGxlci51c2VyUGhvbmU9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1FTUFJTFBIT05FXSIpLnZhbCgpO3ZhciB1O2g9bnVsbCE9KHU9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1GTkFNRV0iKS52YWwoKSk\/dToiIjt2YXIgcTt1PW51bGwhPShxPWguc3BsaXQoIiAiKVswXSk\/cToiIjt2YXIgbTtxPW51bGwhPShtPWguc3BsaXQoIiAiKVsxXSk\/bToiIjtlbWFpbEhhbmRsZXIudXNlckZpcnN0TmFtZT11O2VtYWlsSGFuZGxlci51c2VyTGFzdE5hbWU9cTt2YXIgaz0kKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJZRUFSRVgiXScpLnZhbCgpKwoiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTUFLRUVYIl0nKS52YWwoKSsiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTU9ERUxFWCJdJykudmFsKCk6JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTUFLRUVYIl0nKS52YWwoKSsiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTU9ERUxFWCJdJykudmFsKCkrIiAiKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IllFQVJFWCJdJykudmFsKCk7aXNOYU4ocGFyc2VJbnQocCkpfHwobT1uZXcgQ3VzdG9tRXZlbnQoInRyYWNrc3RlcC5jb21wbGV0ZSIse2RldGFpbDp7c3RlcElkOiJUcmFkZUluQWN0aW9uQm94IixvbkNvbXBsZXRlOnQ9Pnt0LmRhdGFzZXQuY29tcGxfdHh0X2ZyPXQuZGF0YXNldC5jb21wbF90eHRfZnIucmVwbGFjZSgieyRUUkFERUNBUn0iLGspLnJlcGxhY2UoInskVFJBREVWQUx9IixwKTt0LmRhdGFzZXQuY29tcGxfdHh0X2VuPQp0LmRhdGFzZXQuY29tcGxfdHh0X2VuLnJlcGxhY2UoInskVFJBREVDQVJ9IixrKS5yZXBsYWNlKCJ7JFRSQURFVkFMfSIscCk7dmFyIHY9e3llYXI6JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1ZRUFSRVhdIikudmFsKCksbWFrZTokKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPU1BS0VFWF0iKS52YWwoKSxtb2RlbDokKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPU1PREVMRVhdIikudmFsKCksdHJpbTokKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPVRSSU1FWF0iKS52YWwoKSx2YWx1ZTpwYXJzZUludChwLnJlcGxhY2UoIiwiLCIiKSl9O19sb2NhbFN0b3JhZ2VTZXQoInRyYWRlaW5fc3VibWl0X2RhdGEiLEpTT04uc3RyaW5naWZ5KHYpLDEpO2lmKDE+cGFyc2VJbnQocCkpe3Y9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT16ZXJvVmFsdWVNZXNzYWdlRW5dIikudmFsKCk7bGV0IHc9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT16ZXJvVmFsdWVNZXNzYWdlRnJdIikudmFsKCk7CnQuZGF0YXNldC5jb21wbF90eHRfZnI9YCR7a30gfCAke3d9YDt0LmRhdGFzZXQuY29tcGxfdHh0X2VuPWAke2t9IHwgJHt2fWB9fSxmb3JjZVVwZGF0ZTohMH19KSxkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG0pKTthLnNldHRpbmdzLmZvcm11bHRpc3RlcD0hMTthLmNsb3NlKCl9ZWxzZSAkKCJpbnB1dFtuYW1lPXRyYWRlSW5WYWx1ZUNCQkNhbGxlZF0iKS52YWwoMSksIjEiPT1lP2Q9Zj0icmVtb3ZlZW1wdHkiOmg9InJlbW92ZWVtcHR5IiwwPGZ8fDA8ZHx8MDxoPygkKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBbbmFtZT10cmFkZUluQXZnXSIpLnZhbChEMkNVdGlscy5Gb3JtYXQudG9OdW1iZXIoaCkpLCQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIFtuYW1lPXRyYWRlSW5Mb3ddIikudmFsKEQyQ1V0aWxzLkZvcm1hdC50b051bWJlcihmKSksJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gW25hbWU9dHJhZGVJbkhpZ2hdIikudmFsKEQyQ1V0aWxzLkZvcm1hdC50b051bWJlcihkKSksJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gW25hbWU9dHJhZGVJblZhbHVlQ0JCQXZhaWxhYmxlVmFsdWVzXSIpLnZhbCgxKSwKJCgiLnRyYWRlSW5CYXJTdGVwMSIpLmhpZGUoKSxrPSQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IllFQVJFWCJdJykudmFsKCkrIiAiKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1BS0VFWCJdJykudmFsKCkrIiAiKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1PREVMRVgiXScpLnZhbCgpOiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1BS0VFWCJdJykudmFsKCkrIiAiKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1PREVMRVgiXScpLnZhbCgpKyIgIiskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJZRUFSRVgiXScpLnZhbCgpLCQoIi50cmFkZUluQmFyU3RlcDJUaXRsZSIpLnRleHQoJCgiLnRyYWRlSW5CYXJTdGVwMlRpdGxlIikudGV4dCgpKyIgIitrKSwkKCJpbnB1dFtuYW1lPXRyYWRlSW5CYXJTbXNPckVtYWlsXSIpLmFkZENsYXNzKCJyZXFSYWRpbyIpLAp0cmFkZWlucG9wdXBkMmMuc2V0SGVpZ2h0TW9iaWxlKDIpLCQoIi50cmFkZUluQmFyU3RlcDIiKS5zaG93KCkpOihwb3B1cElzU3VibWl0dGluZz0hMSwkKCJpbnB1dFtuYW1lPXN0ZXAzZG9uZV0iKS52YWwoMSksJCgiLnRyYWRlSW5CYXJQb3B1cFN1Ym1pdCIpLnRyaWdnZXIoImNsaWNrIikpfX0pfSxvbkJlZm9yZVN1Ym1pdENCQk1lc3NhZ2U6ZnVuY3Rpb24oYSl7JCgiI3RyYWRlSW5CYXJQb3B1cFN1Ym1pdCIpLnByb3AoImRpc2FibGVkIiwhMCk7JCgiI3RyYWRlSW5CYXJQb3B1cFN1Ym1pdCIpLnBhcmVudCgpLmhpZGUoKTthPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9RU1BSUxdIikudmFsKCk7dmFyIGw9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1FTUFJTFBIT05FXSIpLnZhbCgpLGc9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1ZRUFSRVhdIikudmFsKCksYj0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPU1BS0VFWF0iKS52YWwoKSwKZD0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPU1PREVMRVhdIikudmFsKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1UUklNRVhdIikudmFsKCk7dmFyIGg9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT10cmFkZUluQXZnXSIpLnZhbCgpLGY9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT10cmFkZUluTG93XSIpLnZhbCgpLGM9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT10cmFkZUluSGlnaF0iKS52YWwoKTtnPSQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpP2crIiAiK2IrIiAiK2Q6YisiICIrZCsiICIrZztiPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9ZGVhbGVyTmFtZVRyYWRlSW5dIikudmFsKCk7ZD0kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJDQkJTSU5HTEVWQUxVRSJdJykudmFsKCk7dmFyIG49IiI7aWYoIlNNUyI9PSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9dHJhZGVJbkJhclNtc09yRW1haWxdOmNoZWNrZWQiKS52YWwoKSl2YXIgcj0KIlNNUyIsZT0iMSI9PWQ\/JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/IlRoZSBDYW5hZGlhbiBCbGFjayBCb29rIGVzdGltYXRlZCB0cmFkZSB2YWx1ZSBmb3IgeW91ciAiK2crIiBpcyAkIitoKyIuIFdlJ2xsIGNvbnRhY3QgeW91IHNob3J0bHkgdG8gZGlzY3Vzcy4gIitiKyIgIiskKCJpbnB1dFtuYW1lPXRyYWRlSW5Nc2dEaXNjbGFpbWVyVGV4dDFdIikudmFsKCkrJCgiaW5wdXRbbmFtZT10cmFkZUluTXNnRGlzY2xhaW1lclRleHQyXSIpLnZhbCgpOiJMYSB2YWxldXIgZCfDqWNoYW5nZSBlc3RpbcOpZSBDYW5hZGlhbiBCbGFjayBCb29rIHBvdXIgdm90cmUgIitnKyIgZXN0ICQiK2grIi4gTm91cyBjb21tdW5pcXVlcm9ucyBhdmVjIHZvdXMgc291cyBwZXUgcG91ciBlbiBkaXNjdXRlci4gIitiKyIgIiskKCJpbnB1dFtuYW1lPXRyYWRlSW5Nc2dEaXNjbGFpbWVyVGV4dDFdIikudmFsKCkrJCgiaW5wdXRbbmFtZT10cmFkZUluTXNnRGlzY2xhaW1lclRleHQyXSIpLnZhbCgpOgokKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iVGhlIENhbmFkaWFuIEJsYWNrIEJvb2sgZXN0aW1hdGVkIHRyYWRlIHZhbHVlIGZvciB5b3VyICIrZysiIGlzIGJldHdlZW4gJCIrZisiIGFuZCAkIitjKyIuIFdlJ2xsIGNvbnRhY3QgeW91IHNob3J0bHkgdG8gZGlzY3Vzcy4gIitiKyIgIiskKCJpbnB1dFtuYW1lPXRyYWRlSW5Nc2dEaXNjbGFpbWVyVGV4dDFdIikudmFsKCkrJCgiaW5wdXRbbmFtZT10cmFkZUluTXNnRGlzY2xhaW1lclRleHQyXSIpLnZhbCgpOiJMYSB2YWxldXIgZCfDqWNoYW5nZSBlc3RpbcOpZSBDYW5hZGlhbiBCbGFjayBCb29rIHBvdXIgdm90cmUgIitnKyIgc2Ugc2l0dWUgZW50cmUgJCIrZisiIGV0ICQiK2MrIi4gTm91cyBjb21tdW5pcXVlcm9ucyBhdmVjIHZvdXMgc291cyBwZXUgcG91ciBlbiBkaXNjdXRlci4gIitiKyIgIiskKCJpbnB1dFtuYW1lPXRyYWRlSW5Nc2dEaXNjbGFpbWVyVGV4dDFdIikudmFsKCkrJCgiaW5wdXRbbmFtZT10cmFkZUluTXNnRGlzY2xhaW1lclRleHQyXSIpLnZhbCgpOwplbHNlIHI9IkVNQUlMIixuPSQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyJJTVBPUlRBTlQ6IFlvdXIgdHJhZGUgdmFsdWUgZm9yIHlvdXIgIitnOiJJTVBPUlRBTlQ6IExhIHZhbGV1ciBkJ8OpY2hhbmdlIGRlIHZvdHJlICIrZywkKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8oZT0iSGkgIiskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPUZOQU1FXSIpLnZhbCgpKyIsPGJyPjxicj4iLGU9ZSsoIkZvbGxvd2luZyB1cCBvbiB5b3VyIHJlY2VudCB0cmFkZSBlc3RpbWF0ZSByZXF1ZXN0IGZvciBhICIrZysiLCBoZXJlIGlzIHRoZSBlc3RpbWF0ZSBmcm9tIHRoZSBDYW5hZGlhbiBCbGFjayBCb29rOjxicj48YnI+IikrKCQoImlucHV0W25hbWU9dHJhZGVJbk1zZ0Rpc2NsYWltZXJUZXh0MV0iKS52YWwoKSskKCJpbnB1dFtuYW1lPXRyYWRlSW5Nc2dEaXNjbGFpbWVyVGV4dDJdIikudmFsKCkrIjxicj48YnI+IiksZT0iMSI9PWQ\/ZSsoIkVzdGltYXRlZCBWYWx1ZTogJCIrCmgrIjxicj4iKTplKygiTWluaW11bSBFc3RpbWF0ZWQgVmFsdWU6ICQiK2YrIjxicj5NYXhpbXVtIEVzdGltYXRlZCBWYWx1ZTogJCIpKyhjKyI8YnI+IiksZSs9IihBY2NvcmRpbmcgdG8gQ2FuYWRpYW4gQmxhY2sgQm9vaywgbGVzcyByZWNvbmRpdGlvbmluZyBjb3N0cywgaWYgYXBwbGljYWJsZSk8YnI+PGJyPiIsZSs9IkEgcmVwcmVzZW50YXRpdmUgd2lsbCBjb250YWN0IHlvdSBzaG9ydGx5IHRvIGV4cGxhaW4gdGhlIGRldGFpbHMgb2YgdGhlIHZhbHVlcy48YnI+PGJyPiIsZSs9IlRoYW5rcyBmb3IgdHJ1c3RpbmcgIitiKyIhPGJyPjxicj4iKTooZT0iQm9uam91ciAiKyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Rk5BTUVdIikudmFsKCkrIiw8YnI+PGJyPiIsZT1lKygiU3VpdGUgw6Agdm90cmUgZGVtYW5kZSBkJ2VzdGltYXRpb24gZGUgbGEgdmFsZXVyIGRlIHZvdHJlIMOpY2hhbmdlIHBvdXIgdW4gIitnKyIsIHZvaWNpIGwnw6l2YWx1YXRpb24gZGUgdm90cmUgdsOpaGljdWxlIHNlbG9uIGxlIENhbmFkaWFuIEJsYWNrIEJvb2s6PGJyPjxicj4iKSsKKCQoImlucHV0W25hbWU9dHJhZGVJbk1zZ0Rpc2NsYWltZXJUZXh0MV0iKS52YWwoKSskKCJpbnB1dFtuYW1lPXRyYWRlSW5Nc2dEaXNjbGFpbWVyVGV4dDJdIikudmFsKCkrIjxicj48YnI+IiksZT0iMSI9PWQ\/ZSsoIlZhbGV1ciBlc3RpbcOpZTogJCIraCsiPGJyPiIpOmUrKCJWYWxldXIgZXN0aW3DqWUgbWluaW1hbGU6ICQiK2YrIjxicj5WYWxldXIgZXN0aW3DqWUgbWF4aW1hbGU6ICQiKSsoYysiPGJyPiIpLGUrPSIoU2Vsb24gbGUgQ2FuYWRpYW4gQmxhY2sgQm9vaywgbW9pbnMgbGVzIGNvw7t0cyBkZSByZWNvbmRpdGlvbm5lbWVudCBzaSBhcHBsaWNhYmxlKTxicj48YnI+IixlKz0iVW4gY29uc2VpbGxlciBlbnRyZXJhIGVuIGNvbW11bmljYXRpb24gc291cyBwZXUgYXZlYyB2b3VzIGFmaW4gZGUgZGlzY3V0ZXIgZGUgY2V0dGUgdmFsZXVyIGV0IHZvdXMgZW4gZXhwbGlxdWVyIGxlcyBkw6l0YWlscy48YnI+PGJyPiIsZSs9Ik1lcmNpIGRlIGZhaXJlIGNvbmZpYW5jZSDDoCAiKwpiKyIhPGJyPjxicj4iKTtlPWJ0b2EoZSk7bj1idG9hKG4pO2VtYWlsSGFuZGxlci5vbkFmdGVyTGVhZENyZWF0ZWQ9e2FjdGlvbjpyLHN1YmplY3Q6bixtZXNzYWdlOmUsZW1haWw6YSxwaG9uZTpsfX0sb25CZWZvcmVTdWJtaXRBY2N1dHJhZGVNZXNzYWdlOmZ1bmN0aW9uKGEpeyQoIiN0cmFkZUluQmFyUG9wdXBTdWJtaXQiKS5wcm9wKCJkaXNhYmxlZCIsITApOyQoIiN0cmFkZUluQmFyUG9wdXBTdWJtaXQiKS5wYXJlbnQoKS5oaWRlKCk7YT0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPUVNQUlMXSIpLnZhbCgpO3ZhciBsPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9RU1BSUxQSE9ORV0iKS52YWwoKSxnPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9WUVBUkVYXSIpLnZhbCgpLGI9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1NQUtFRVhdIikudmFsKCksZD0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPU1PREVMRVhdIikudmFsKCk7CiQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9VFJJTUVYXSIpLnZhbCgpO3ZhciBoPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9dHJhZGVJbkF2Z10iKS52YWwoKSxmPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9dHJhZGVJbkxvd10iKS52YWwoKSxjPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9dHJhZGVJbkhpZ2hdIikudmFsKCk7Zz0kKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT9nKyIgIitiKyIgIitkOmIrIiAiK2QrIiAiK2c7Yj0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPWRlYWxlck5hbWVUcmFkZUluXSIpLnZhbCgpO2Q9JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iQ0JCU0lOR0xFVkFMVUUiXScpLnZhbCgpO3ZhciBuPSIiO2lmKCJTTVMiPT0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPXRyYWRlSW5CYXJTbXNPckVtYWlsXTpjaGVja2VkIikudmFsKCkpdmFyIHI9CiJTTVMiLGU9IjEiPT1kPyQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyJBY2N1LVRyYWRlIGVzdGltYXRlZCB0cmFkZSB2YWx1ZSBmb3IgeW91ciAiK2crIiBpcyAkIitoKyIuIFdlJ2xsIGNvbnRhY3QgeW91IHNob3J0bHkgdG8gZGlzY3Vzcy4gIitiKyIgIiskKCJpbnB1dFtuYW1lPXRyYWRlSW5Nc2dEaXNjbGFpbWVyVGV4dDFdIikudmFsKCkrJCgiaW5wdXRbbmFtZT10cmFkZUluTXNnRGlzY2xhaW1lclRleHQyXSIpLnZhbCgpOiJMYSB2YWxldXIgZCfDqWNoYW5nZSBBY2N1LVRyYWRlIGVzdGltw6llIHBvdXIgdm90cmUgIitnKyIgZXN0ICQiK2grIi4gTm91cyBjb21tdW5pcXVlcm9ucyBhdmVjIHZvdXMgc291cyBwZXUgcG91ciBlbiBkaXNjdXRlci4gIitiKyIgIiskKCJpbnB1dFtuYW1lPXRyYWRlSW5Nc2dEaXNjbGFpbWVyVGV4dDFdIikudmFsKCkrJCgiaW5wdXRbbmFtZT10cmFkZUluTXNnRGlzY2xhaW1lclRleHQyXSIpLnZhbCgpOiQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPwoiQWNjdS1UcmFkZSBlc3RpbWF0ZWQgdHJhZGUgdmFsdWUgZm9yIHlvdXIgIitnKyIgaXMgYmV0d2VlbiAkIitmKyIgYW5kICQiK2MrIi4gV2UnbGwgY29udGFjdCB5b3Ugc2hvcnRseSB0byBkaXNjdXNzLiAiK2IrIiAiKyQoImlucHV0W25hbWU9dHJhZGVJbk1zZ0Rpc2NsYWltZXJUZXh0MV0iKS52YWwoKSskKCJpbnB1dFtuYW1lPXRyYWRlSW5Nc2dEaXNjbGFpbWVyVGV4dDJdIikudmFsKCk6IkxhIHZhbGV1ciBkJ8OpY2hhbmdlIEFjY3UtVHJhZGUgZXN0aW3DqWUgcG91ciB2b3RyZSAiK2crIiBzZSBzaXR1ZSBlbnRyZSAkIitmKyIgZXQgJCIrYysiLiBOb3VzIGNvbW11bmlxdWVyb25zIGF2ZWMgdm91cyBzb3VzIHBldSBwb3VyIGVuIGRpc2N1dGVyLiAiK2IrIiAiKyQoImlucHV0W25hbWU9dHJhZGVJbk1zZ0Rpc2NsYWltZXJUZXh0MV0iKS52YWwoKSskKCJpbnB1dFtuYW1lPXRyYWRlSW5Nc2dEaXNjbGFpbWVyVGV4dDJdIikudmFsKCk7ZWxzZSByPSJFTUFJTCIsbj0kKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8KIklNUE9SVEFOVDogWW91ciB0cmFkZSB2YWx1ZSBmb3IgeW91ciAiK2c6IklNUE9SVEFOVDogTGEgdmFsZXVyIGQnw6ljaGFuZ2UgZGUgdm90cmUgIitnLCQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyhlPSJIaSAiKyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Rk5BTUVdIikudmFsKCkrIiw8YnI+PGJyPiIsZT1lKygiRm9sbG93aW5nIHVwIG9uIHlvdXIgcmVjZW50IHRyYWRlIGVzdGltYXRlIHJlcXVlc3QgZm9yIGEgIitnKyIsIGhlcmUgaXMgdGhlIGVzdGltYXRlIGZyb20gQWNjdS1UcmFkZTo8YnI+PGJyPiIpKygkKCJpbnB1dFtuYW1lPXRyYWRlSW5Nc2dEaXNjbGFpbWVyVGV4dDFdIikudmFsKCkrJCgiaW5wdXRbbmFtZT10cmFkZUluTXNnRGlzY2xhaW1lclRleHQyXSIpLnZhbCgpKyI8YnI+PGJyPiIpLGU9IjEiPT1kP2UrKCJFc3RpbWF0ZWQgVmFsdWU6ICQiK2grIjxicj4iKTplKygiTWluaW11bSBFc3RpbWF0ZWQgVmFsdWU6ICQiK2YrIjxicj5NYXhpbXVtIEVzdGltYXRlZCBWYWx1ZTogJCIpKwooYysiPGJyPiIpLGUrPSIoQWNjb3JkaW5nIHRvIEFjY3UtVHJhZGUsIGxlc3MgcmVjb25kaXRpb25pbmcgY29zdHMsIGlmIGFwcGxpY2FibGUpPGJyPjxicj4iLGUrPSJBIHJlcHJlc2VudGF0aXZlIHdpbGwgY29udGFjdCB5b3Ugc2hvcnRseSB0byBleHBsYWluIHRoZSBkZXRhaWxzIG9mIHRoZSB2YWx1ZXMuPGJyPjxicj4iLGUrPSJUaGFua3MgZm9yIHRydXN0aW5nICIrYisiITxicj48YnI+Iik6KGU9IkJvbmpvdXIgIiskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPUZOQU1FXSIpLnZhbCgpKyIsPGJyPjxicj4iLGU9ZSsoIlN1aXRlIMOgIHZvdHJlIGRlbWFuZGUgZCdlc3RpbWF0aW9uIGRlIGxhIHZhbGV1ciBkZSB2b3RyZSDDqWNoYW5nZSBwb3VyIHVuICIrZysiLCB2b2ljaSBsJ8OpdmFsdWF0aW9uIGRlIHZvdHJlIHbDqWhpY3VsZSBzZWxvbiBBY2N1LVRyYWRlOjxicj48YnI+IikrKCQoImlucHV0W25hbWU9dHJhZGVJbk1zZ0Rpc2NsYWltZXJUZXh0MV0iKS52YWwoKSsKJCgiaW5wdXRbbmFtZT10cmFkZUluTXNnRGlzY2xhaW1lclRleHQyXSIpLnZhbCgpKyI8YnI+PGJyPiIpLGU9IjEiPT1kP2UrKCJWYWxldXIgZXN0aW3DqWU6ICQiK2grIjxicj4iKTplKygiVmFsZXVyIGVzdGltw6llIG1pbmltYWxlOiAkIitmKyI8YnI+VmFsZXVyIGVzdGltw6llIG1heGltYWxlOiAkIikrKGMrIjxicj4iKSxlKz0iKFNlbG9uIEFjY3UtVHJhZGUsIG1vaW5zIGxlcyBjb8O7dHMgZGUgcmVjb25kaXRpb25uZW1lbnQgc2kgYXBwbGljYWJsZSk8YnI+PGJyPiIsZSs9IlVuIGNvbnNlaWxsZXIgZW50cmVyYSBlbiBjb21tdW5pY2F0aW9uIHNvdXMgcGV1IGF2ZWMgdm91cyBhZmluIGRlIGRpc2N1dGVyIGRlIGNldHRlIHZhbGV1ciBldCB2b3VzIGVuIGV4cGxpcXVlciBsZXMgZMOpdGFpbHMuPGJyPjxicj4iLGUrPSJNZXJjaSBkZSBmYWlyZSBjb25maWFuY2Ugw6AgIitiKyIhPGJyPjxicj4iKTtlPWJ0b2EoZSk7bj1idG9hKG4pO2VtYWlsSGFuZGxlci5vbkFmdGVyTGVhZENyZWF0ZWQ9CnthY3Rpb246cixzdWJqZWN0Om4sbWVzc2FnZTplLGVtYWlsOmEscGhvbmU6bH19LGluaXRUcmFkZUluU3RlcDE6ZnVuY3Rpb24oKXskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBbbmFtZT10cmFkZUluQXZnXSIpLnZhbCgwKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBbbmFtZT10cmFkZUluTG93XSIpLnZhbCgwKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBbbmFtZT10cmFkZUluSGlnaF0iKS52YWwoMCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gW25hbWU9dHJhZGVJblZhbHVlQ0JCQXZhaWxhYmxlVmFsdWVzXSIpLnZhbCgwKTskKCJpbnB1dFtuYW1lPXRyYWRlSW5CYXJTbXNPckVtYWlsXSIpLnJlbW92ZUNsYXNzKCJyZXFSYWRpbyIpOyQoImlucHV0W25hbWU9dHJhZGVJblZhbHVlQ0JCQ2FsbGVkXSIpLnZhbCgwKTskKCJpbnB1dFtuYW1lPXRyYWRlSW5CYXJTbXNPckVtYWlsXTpjaGVja2VkIikucHJvcCgiY2hlY2tlZCIsITEpOyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIHNlbGVjdFtuYW1lPSJWRUhJQ0xFT1BUSU9OUyJdJykuZmluZCgib3B0aW9uIikucmVtb3ZlKCk7CiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IlFVRVNUSU9OUyJdJykudmFsKCIiKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXAxIikuc2hvdygpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDIiKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwMyIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXA0IikuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDUiKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwNiIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAjdHJhZGVJbkJhclBvcHVwU3VibWl0Iikuc2hvdygpO3RoaXMuc2V0SGVpZ2h0TW9iaWxlKDEpO3RoaXMudHJhZGVJbkJvdHRvbUxvZ29IZWlndCgpfSxpbml0VHJhZGVJblN0ZXAzOmZ1bmN0aW9uKCl7JCgiI3RyYWRlSW5TdGVwM1llcyIpLm9uKCJjbGljayIsCmZ1bmN0aW9uKCl7dHJhZGVpbnBvcHVwZDJjLnRyYWRlSW5TdGVwM1llcygpO3JldHVybiExfSk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gI3RyYWRlSW5CYXJQb3B1cFN1Ym1pdCIpLnBhcmVudCgpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXAxIikuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDIiKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwMyIpLnNob3coKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXA0IikuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDUiKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwNiIpLmhpZGUoKTt0aGlzLnNldEhlaWdodE1vYmlsZSgzKTskKCJpbnB1dFtuYW1lPXN0ZXAzZG9uZV0iKS52YWwoMSk7dGhpcy50cmFkZUluQm90dG9tTG9nb0hlaWd0KCl9LAp0cmFkZUluU3RlcDNZZXM6ZnVuY3Rpb24oKXt0aGlzLmluaXRUcmFkZUluU3RlcDQoKX0saW5pdFRyYWRlSW5TdGVwNDpmdW5jdGlvbigpeyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtICN0cmFkZUluQmFyUG9wdXBTdWJtaXQiKS5wYXJlbnQoKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwMSIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXAyIikuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDMiKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwNCIpLnNob3coKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXA1IikuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDYiKS5oaWRlKCk7dGhpcy5zZXRIZWlnaHRNb2JpbGUoNCk7JCgiI3RyYWRlSW5TdGVwNFllcyIpLm9uKCJjbGljayIsCmZ1bmN0aW9uKCl7aWYoIiI9PSQoIiN0cmFkZUluS2V5U2VsZWN0IikudmFsKCkpcmV0dXJuICQoIiN0cmFkZUluS2V5U2VsZWN0IikuYWRkQ2xhc3MoInZhbGlkaXR5LWVycm9uZW91cyIpLCExO3RyYWRlaW5wb3B1cGQyYy50cmFkZUluU3RlcDRDb250aW51ZSgpO3JldHVybiExfSk7JCgiI3RyYWRlSW5LZXlTZWxlY3QiKS5vbigiY2hhbmdlIixmdW5jdGlvbigpeyQoIiN0cmFkZUluS2V5U2VsZWN0IikucmVtb3ZlQ2xhc3MoInZhbGlkaXR5LWVycm9uZW91cyIpfSk7dGhpcy50cmFkZUluQm90dG9tTG9nb0hlaWd0KCl9LHRyYWRlSW5TdGVwNENvbnRpbnVlOmZ1bmN0aW9uKCl7IiI9PSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9VklORVhdIikudmFsKCk\/dGhpcy5pbml0VHJhZGVJblN0ZXA1KCk6dGhpcy5pbml0VHJhZGVJblN0ZXA2KCl9LGluaXRUcmFkZUluU3RlcDU6ZnVuY3Rpb24oKXskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAjdHJhZGVJbkJhclBvcHVwU3VibWl0IikucGFyZW50KCkuaGlkZSgpOwokKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXAxIikuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDIiKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwMyIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXA0IikuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDUiKS5zaG93KCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwNiIpLmhpZGUoKTt0aGlzLnNldEhlaWdodE1vYmlsZSg1KTskKCIjdHJhZGVJblN0ZXA1WWVzIikub24oImNsaWNrIixmdW5jdGlvbigpe3RyYWRlaW5wb3B1cGQyYy50cmFkZUluU3RlcDVDb250aW51ZSgpO3JldHVybiExfSk7dGhpcy50cmFkZUluQm90dG9tTG9nb0hlaWd0KCl9LHRyYWRlSW5TdGVwNUNvbnRpbnVlOmZ1bmN0aW9uKCl7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1WSU5FWF0iKS52YWwoJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gI3N0ZXA1VmluIikudmFsKCkpOwp0aGlzLmluaXRUcmFkZUluU3RlcDYoKX0saW5pdFRyYWRlSW5TdGVwNjpmdW5jdGlvbigpeyQoIiN0cmFkZUluQmFyUG9wdXBfZm9ybVcgI3RyYWRlSW5CYXJQb3B1cF9saW5lMSIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAjdHJhZGVJbkJhclBvcHVwU3VibWl0IikucGFyZW50KCkuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDEiKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwMiIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXAzIikuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDQiKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwNSIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXA2Iikuc2hvdygpO3RoaXMuc2V0SGVpZ2h0TW9iaWxlKDYpO3RoaXMuaW5pdEltYWdlVXBsb2FkKCk7CiQoIiN0cmFkZUluU3RlcDZZZXMiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7JCgiI3RyYWRlSW5TdGVwNlllcyIpLmhpZGUoKTt0cmFkZWlucG9wdXBkMmMudXBsb2FkSW1hZ2VzVG9CYWNrZW5kKCl9KTt0aGlzLnRyYWRlSW5Cb3R0b21Mb2dvSGVpZ3QoKX0saW5pdEltYWdlVXBsb2FkOmZ1bmN0aW9uKCl7ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnVwbG9hZC1hcmVhIikuZm9yRWFjaChhPT57Y29uc3QgbD1hLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3R5cGU9ImZpbGUiXScpLGc9YS5xdWVyeVNlbGVjdG9yKCIucGxhY2Vob2xkZXIiKSxiPWEucXVlcnlTZWxlY3RvcigiLmRlbGV0ZS1idG4iKSxkPWEucXVlcnlTZWxlY3RvcigiLmFkZC1pY29uIiksaD1hLmRhdGFzZXQub3ZlcmxheTtoJiYoYS5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2U9YHVybCgke2h9KWApO2EuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgpPT57bC52YWx1ZXx8bC5jbGljaygpfSk7CmwuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIixmPT57aWYoKGY9Zi50YXJnZXQuZmlsZXNbMF0pJiZmLnR5cGUuc3RhcnRzV2l0aCgiaW1hZ2UvIikpe2NvbnN0IGM9bmV3IEZpbGVSZWFkZXI7Yy5vbmxvYWQ9KCk9PntnLnNyYz1jLnJlc3VsdDtnLnN0eWxlLmRpc3BsYXk9ImJsb2NrIjthLnN0eWxlLmJhY2tncm91bmRJbWFnZT0ibm9uZSI7Yi5zdHlsZS5kaXNwbGF5PSJibG9jayI7ZC5zdHlsZS5kaXNwbGF5PSJub25lIn07Yy5yZWFkQXNEYXRhVVJMKGYpfWVsc2UgbC52YWx1ZT0iIn0pO2IuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGY9PntmLnN0b3BQcm9wYWdhdGlvbigpO2wudmFsdWU9IiI7Zy5zcmM9IiI7Zy5zdHlsZS5kaXNwbGF5PSJub25lIjthLnN0eWxlLmJhY2tncm91bmRJbWFnZT1gdXJsKCR7aH0pYDtiLnN0eWxlLmRpc3BsYXk9Im5vbmUiO2Quc3R5bGUuZGlzcGxheT0iZmxleCI7cmV0dXJuITF9KTtiLnN0eWxlLmRpc3BsYXk9Im5vbmUiO2cuc3R5bGUuZGlzcGxheT0KIm5vbmUifSl9LHVwbG9hZEltYWdlc1RvQmFja2VuZDpmdW5jdGlvbigpe3ZhciBhPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC51cGxvYWQtYXJlYSIpO2NvbnN0IGw9bmV3IEZvcm1EYXRhO2xldCBnPSExO2EuZm9yRWFjaChiPT57Yj1iLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3R5cGU9ImZpbGUiXScpOzA8Yi5maWxlcy5sZW5ndGgmJmIuZmlsZXNbMF0udHlwZS5zdGFydHNXaXRoKCJpbWFnZS8iKSYmKGwuYXBwZW5kKCJpbWFnZXNbXSIsYi5maWxlc1swXSxiLmdldEF0dHJpYnV0ZSgiZGF0YS1uYW1lIikpLGc9ITApfSk7Zz8oYT0kKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iRU5HTElTSCI6IkZSRU5DSCIsJC5hamF4KHt0eXBlOiJQT1NUIix1cmw6KCJFTkdMSVNIIj09YT8iL2VuLyI6Ii9mci8iKSsiL2FqYXgvdXBsb2FkVHJhZGVJbkltYWdlcyIsY29udGVudFR5cGU6ITEscHJvY2Vzc0RhdGE6ITEsZGF0YTpsLHN1Y2Nlc3M6ZnVuY3Rpb24oYil7aWYoYi5sZW5ndGgpeyRkYXRhT2JqPQpKU09OLnBhcnNlKGIpOyRpbWFnZUV4VmFsdWU9IiI7Zm9yKGI9MDtiPCRkYXRhT2JqLmxlbmd0aDtiKyspJGltYWdlRXhWYWx1ZSs9JGRhdGFPYmpbYl0uZmlsZW5hbWUrIiA6ICIrJGRhdGFPYmpbYl0uZmlsZVVybCsiIFxuIjskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJUUkFERUlOSU1BR0VFWCJdJykudmFsKCRpbWFnZUV4VmFsdWUpfSQoIi50cmFkZUluQmFyUG9wdXBTdWJtaXQiKS50cmlnZ2VyKCJjbGljayIpfX0pKTokKCIudHJhZGVJbkJhclBvcHVwU3VibWl0IikudHJpZ2dlcigiY2xpY2siKX0sc2V0SGVpZ2h0TW9iaWxlKGEpe2lmKCIxIj09JCgiI2lzbW9iaWxlIikudmFsKCkpc3dpdGNoKGEpe2Nhc2UgMjokKCIjVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIikuY3NzKCJoZWlnaHQiLCI1NDBweCIpOyQoIiN0cmFkZUluQmFyUG9wdXBfZm9ybVciKS5jc3MoImhlaWdodCIsIjUzMHB4Iik7YnJlYWs7Y2FzZSAzOiQoIiNUcmFkZUluQmFyUG9wdXBDb250YWluZXIiKS5jc3MoImhlaWdodCIsCiI2MDBweCIpOyQoIiN0cmFkZUluQmFyUG9wdXBfZm9ybVciKS5jc3MoImhlaWdodCIsIjU5MHB4Iik7YnJlYWs7Y2FzZSA0OiQoIiNUcmFkZUluQmFyUG9wdXBDb250YWluZXIiKS5jc3MoImhlaWdodCIsIjU0MHB4Iik7JCgiI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyIpLmNzcygiaGVpZ2h0IiwiNTMwcHgiKTticmVhaztjYXNlIDU6JCgiI1RyYWRlSW5CYXJQb3B1cENvbnRhaW5lciIpLmNzcygiaGVpZ2h0IiwiNTMwcHgiKTskKCIjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIikuY3NzKCJoZWlnaHQiLCI1MjBweCIpO2JyZWFrO2Nhc2UgNjokKCIjVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIikuY3NzKCJoZWlnaHQiLCI3NTBweCIpOyQoIiN0cmFkZUluQmFyUG9wdXBfZm9ybVciKS5jc3MoImhlaWdodCIsIjc0MHB4Iik7YnJlYWs7ZGVmYXVsdDokKCIjVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIikuY3NzKCJoZWlnaHQiLCI5NjBweCIpLCQoIiN0cmFkZUluQmFyUG9wdXBfZm9ybVciKS5jc3MoImhlaWdodCIsCiI5NDBweCIpfX0sdHJhZGVJbkJvdHRvbUxvZ29IZWlndDpmdW5jdGlvbigpe2lmKCQoIi50cmFkZUluQm90dG9tTG9nbyIpLmxlbmd0aCl7dmFyIGE9JCgiI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyIpO2xldCBsPSQoIi50cmFkZUluQm90dG9tTG9nbyIpO2E9YS5pbm5lckhlaWdodCgpLWwucG9zaXRpb24oKS50b3A7JCgiLnRyYWRlSW5Cb3R0b21Mb2dvIikuaGVpZ2h0KGErInB4Iil9fX07Ci8qKiAvbS9qcy9qcXVlcnkucHJldHR5UGhvdG8yLmpzICoqLwp2YXIgX19fZDJjX2pxdWVyeXByZXR0eVBob3RvMmpzX2Nfb249IjIwMjUtMDUtMjMgMTc6MTE6NDMiOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX2pxdWVyeXByZXR0eVBob3RvMmpzX2Nfb249IjIwMjQtMDMtMjUgMTI6MzM6MzMiOyJ1c2Ugc3RyaWN0IjsKKGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIHkoKXt2YXIgZT1sb2NhdGlvbi5ocmVmO3JldHVybiBoYXNodGFnPS0xIT09ZS5pbmRleE9mKCIjcHJldHR5UGhvdG8iKT9kZWNvZGVVUkkoZS5zdWJzdHJpbmcoZS5pbmRleE9mKCIjcHJldHR5UGhvdG8iKSsxLGUubGVuZ3RoKSk6ITF9ZnVuY3Rpb24gbChlLHApe2U9ZS5yZXBsYWNlKC9bXFtdLywiXFxbIikucmVwbGFjZSgvW1xdXS8sIlxcXSIpO2U9KG5ldyBSZWdFeHAoIltcXD8mXSIrZSsiPShbXiYjXSopIikpLmV4ZWMocCk7cmV0dXJuIG51bGw9PWU\/IiI6ZVsxXX1hLnByZXR0eVBob3RvPXt2ZXJzaW9uOiIzLjEuNSJ9O2EuZm4ucHJldHR5UGhvdG89ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gcCgpe2EoIi5wcF9sb2FkZXJJY29uIikuaGlkZSgpO3Byb2plY3RlZFRvcD1zY3JvbGxfcG9zLnNjcm9sbFRvcCsoay8yLWQuY29udGFpbmVySGVpZ2h0LzIpOzA+cHJvamVjdGVkVG9wJiYocHJvamVjdGVkVG9wPTApOyRwcHQuZmFkZVRvKGIuYW5pbWF0aW9uX3NwZWVkLAoxKTskcHBfcGljX2hvbGRlci5maW5kKCIucHBfY29udGVudCIpLmFuaW1hdGUoe2hlaWdodDpkLmNvbnRlbnRIZWlnaHQsd2lkdGg6ZC5jb250ZW50V2lkdGh9LGIuYW5pbWF0aW9uX3NwZWVkKTskcHBfcGljX2hvbGRlci5hbmltYXRlKHt0b3A6cHJvamVjdGVkVG9wLGxlZnQ6MD5oLzItZC5jb250YWluZXJXaWR0aC8yPzA6aC8yLWQuY29udGFpbmVyV2lkdGgvMix3aWR0aDpkLmNvbnRhaW5lcldpZHRofSxiLmFuaW1hdGlvbl9zcGVlZCxmdW5jdGlvbigpeyRwcF9waWNfaG9sZGVyLmZpbmQoIi5wcF9ob3ZlckNvbnRhaW5lciwjZnVsbFJlc0ltYWdlIikuaGVpZ2h0KGQuaGVpZ2h0KS53aWR0aChkLndpZHRoKTskcHBfcGljX2hvbGRlci5maW5kKCIucHBfZmFkZSIpLmZhZGVJbihiLmFuaW1hdGlvbl9zcGVlZCk7aXNTZXQmJiJpbWFnZSI9PXQocHBfaW1hZ2VzW3NldF9wb3NpdGlvbl0pPyRwcF9waWNfaG9sZGVyLmZpbmQoIi5wcF9ob3ZlckNvbnRhaW5lciIpLnNob3coKTokcHBfcGljX2hvbGRlci5maW5kKCIucHBfaG92ZXJDb250YWluZXIiKS5oaWRlKCk7CmIuYWxsb3dfZXhwYW5kJiYoZC5yZXNpemVkP2EoImEucHBfZXhwYW5kLGEucHBfY29udHJhY3QiKS5zaG93KCk6YSgiYS5wcF9leHBhbmQiKS5oaWRlKCkpOyFiLmF1dG9wbGF5X3NsaWRlc2hvd3x8cXx8dXx8YS5wcmV0dHlQaG90by5zdGFydFNsaWRlc2hvdygpO2IuY2hhbmdlcGljdHVyZWNhbGxiYWNrKCk7dT0hMH0pO2lzU2V0JiZiLm92ZXJsYXlfZ2FsbGVyeSYmImltYWdlIj09dChwcF9pbWFnZXNbc2V0X3Bvc2l0aW9uXSk\/KGl0ZW1XaWR0aD01NyxuYXZXaWR0aD0iZmFjZWJvb2siPT1iLnRoZW1lfHwicHBfZGVmYXVsdCI9PWIudGhlbWU\/NTA6MzAsaXRlbXNQZXJQYWdlPU1hdGguZmxvb3IoKGQuY29udGFpbmVyV2lkdGgtMTAwLW5hdldpZHRoKS9pdGVtV2lkdGgpLGl0ZW1zUGVyUGFnZT1pdGVtc1BlclBhZ2U8cHBfaW1hZ2VzLmxlbmd0aD9pdGVtc1BlclBhZ2U6cHBfaW1hZ2VzLmxlbmd0aCx0b3RhbFBhZ2U9TWF0aC5jZWlsKHBwX2ltYWdlcy5sZW5ndGgvaXRlbXNQZXJQYWdlKS0KMSwwPT10b3RhbFBhZ2U\/KG5hdldpZHRoPTAsJHBwX2dhbGxlcnkuZmluZCgiLnBwX2Fycm93X25leHQsLnBwX2Fycm93X3ByZXZpb3VzIikuaGlkZSgpKTokcHBfZ2FsbGVyeS5maW5kKCIucHBfYXJyb3dfbmV4dCwucHBfYXJyb3dfcHJldmlvdXMiKS5zaG93KCksZ2FsbGVyeVdpZHRoPWl0ZW1zUGVyUGFnZSppdGVtV2lkdGgsZnVsbEdhbGxlcnlXaWR0aD1wcF9pbWFnZXMubGVuZ3RoKml0ZW1XaWR0aCwkcHBfZ2FsbGVyeS5jc3MoIm1hcmdpbi1sZWZ0IiwtKGdhbGxlcnlXaWR0aC8yK25hdldpZHRoLzIpKS5maW5kKCJkaXY6Zmlyc3QiKS53aWR0aChnYWxsZXJ5V2lkdGgrNSkuZmluZCgidWwiKS53aWR0aChmdWxsR2FsbGVyeVdpZHRoKS5maW5kKCJsaS5zZWxlY3RlZCIpLnJlbW92ZUNsYXNzKCJzZWxlY3RlZCIpLGdvVG9QYWdlPU1hdGguZmxvb3Ioc2V0X3Bvc2l0aW9uL2l0ZW1zUGVyUGFnZSk8dG90YWxQYWdlP01hdGguZmxvb3Ioc2V0X3Bvc2l0aW9uL2l0ZW1zUGVyUGFnZSk6CnRvdGFsUGFnZSxhLnByZXR0eVBob3RvLmNoYW5nZUdhbGxlcnlQYWdlKGdvVG9QYWdlKSwkcHBfZ2FsbGVyeV9saS5maWx0ZXIoIjplcSgiK3NldF9wb3NpdGlvbisiKSIpLmFkZENsYXNzKCJzZWxlY3RlZCIpKTokcHBfcGljX2hvbGRlci5maW5kKCIucHBfY29udGVudCIpLm9mZigibW91c2VlbnRlciBtb3VzZWxlYXZlIik7ZS5hamF4Y2FsbGJhY2soKX1mdW5jdGlvbiB6KGMpeyRwcF9waWNfaG9sZGVyLmZpbmQoIiNwcF9mdWxsX3JlcyBvYmplY3QsI3BwX2Z1bGxfcmVzIGVtYmVkIikuY3NzKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7JHBwX3BpY19ob2xkZXIuZmluZCgiLnBwX2ZhZGUiKS5mYWRlT3V0KGIuYW5pbWF0aW9uX3NwZWVkLGZ1bmN0aW9uKCl7YSgiLnBwX2xvYWRlckljb24iKS5zaG93KCk7YygpfSl9ZnVuY3Rpb24gRyhjKXsxPGM\/YSgiLnBwX25hdiIpLnNob3coKTphKCIucHBfbmF2IikuaGlkZSgpfWZ1bmN0aW9uIGcoYyxmKXtyZXNpemVkPSExO0EoYyxmKTtpbWFnZVdpZHRoPQpjO2ltYWdlSGVpZ2h0PWY7aWYoKG0+aHx8bj5rKSYmZG9yZXNpemUmJmIuYWxsb3dfcmVzaXplJiYhcil7cmVzaXplZD0hMDtmb3IoZml0dGluZz0hMTshZml0dGluZzspbT5oPyhpbWFnZVdpZHRoPWgtNTAsaW1hZ2VIZWlnaHQ9Zi9jKmltYWdlV2lkdGgpOm4+az8oaW1hZ2VIZWlnaHQ9ay01MCxpbWFnZVdpZHRoPWMvZippbWFnZUhlaWdodCk6Zml0dGluZz0hMCxuPWltYWdlSGVpZ2h0LG09aW1hZ2VXaWR0aDsobT5ofHxuPmspJiZnKG0sbik7QShpbWFnZVdpZHRoLGltYWdlSGVpZ2h0KX1yZXR1cm57d2lkdGg6TWF0aC5mbG9vcihpbWFnZVdpZHRoKSxoZWlnaHQ6TWF0aC5mbG9vcihpbWFnZUhlaWdodCksY29udGFpbmVySGVpZ2h0Ok1hdGguZmxvb3IobiksY29udGFpbmVyV2lkdGg6TWF0aC5mbG9vcihtKSsyKmIuaG9yaXpvbnRhbF9wYWRkaW5nLGNvbnRlbnRIZWlnaHQ6TWF0aC5mbG9vcih2KSxjb250ZW50V2lkdGg6TWF0aC5mbG9vcihCKSxyZXNpemVkfX1mdW5jdGlvbiBBKGMsCmYpe2M9cGFyc2VGbG9hdChjKTtmPXBhcnNlRmxvYXQoZik7JHBwX2RldGFpbHM9JHBwX3BpY19ob2xkZXIuZmluZCgiLnBwX2RldGFpbHMiKTskcHBfZGV0YWlscy53aWR0aChjKTtkZXRhaWxzSGVpZ2h0PXBhcnNlRmxvYXQoJHBwX2RldGFpbHMuY3NzKCJtYXJnaW5Ub3AiKSkrcGFyc2VGbG9hdCgkcHBfZGV0YWlscy5jc3MoIm1hcmdpbkJvdHRvbSIpKTskcHBfZGV0YWlscz0kcHBfZGV0YWlscy5jbG9uZSgpLmFkZENsYXNzKGIudGhlbWUpLndpZHRoKGMpLmFwcGVuZFRvKGEoImJvZHkiKSkuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDotMUU0fSk7ZGV0YWlsc0hlaWdodCs9JHBwX2RldGFpbHMuaGVpZ2h0KCk7ZGV0YWlsc0hlaWdodD0zND49ZGV0YWlsc0hlaWdodD8zNjpkZXRhaWxzSGVpZ2h0OyRwcF9kZXRhaWxzLnJlbW92ZSgpOyRwcF90aXRsZT0kcHBfcGljX2hvbGRlci5maW5kKCIucHB0Iik7JHBwX3RpdGxlLndpZHRoKGMpO3RpdGxlSGVpZ2h0PXBhcnNlRmxvYXQoJHBwX3RpdGxlLmNzcygibWFyZ2luVG9wIikpKwpwYXJzZUZsb2F0KCRwcF90aXRsZS5jc3MoIm1hcmdpbkJvdHRvbSIpKTskcHBfdGl0bGU9JHBwX3RpdGxlLmNsb25lKCkuYXBwZW5kVG8oYSgiYm9keSIpKS5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOi0xRTR9KTt0aXRsZUhlaWdodCs9JHBwX3RpdGxlLmhlaWdodCgpOyRwcF90aXRsZS5yZW1vdmUoKTt2PWYrZGV0YWlsc0hlaWdodDtCPWM7bj12K3RpdGxlSGVpZ2h0KyRwcF9waWNfaG9sZGVyLmZpbmQoIi5wcF90b3AiKS5oZWlnaHQoKSskcHBfcGljX2hvbGRlci5maW5kKCIucHBfYm90dG9tIikuaGVpZ2h0KCk7bT1jfWZ1bmN0aW9uIHQoYyl7cmV0dXJuIGMubWF0Y2goL3lvdXR1YmVcLmNvbVwvd2F0Y2gvaSl8fGMubWF0Y2goL3lvdXR1XC5iZS9pKT8ieW91dHViZSI6Yy5tYXRjaCgvdmltZW9cLmNvbS9pKT8idmltZW8iOmMubWF0Y2goL1wubXA0L2kpPyJtcDQiOmMubWF0Y2goL2F2dTNkL2kpPyJhdnUzZCI6Yy5tYXRjaCgvXGIubW92XGIvaSk\/InF1aWNrdGltZSI6CmMubWF0Y2goL1xiLnN3ZlxiL2kpPyJmbGFzaCI6Yy5tYXRjaCgvXGJpZnJhbWU9dHJ1ZVxiL2kpPyJpZnJhbWUiOmMubWF0Y2goL1xiYWpheD10cnVlXGIvaSk\/ImFqYXgiOmMubWF0Y2goL1xiY3VzdG9tPXRydWVcYi9pKT8iY3VzdG9tIjoiIyI9PWMuc3Vic3RyKDAsMSk\/ImlubGluZSI6ImltYWdlIn1mdW5jdGlvbiB3KCl7ZG9yZXNpemUmJiJ1bmRlZmluZWQiIT10eXBlb2YgJHBwX3BpY19ob2xkZXImJihzY3JvbGxfcG9zPUMoKSxjb250ZW50SGVpZ2h0PSRwcF9waWNfaG9sZGVyLmhlaWdodCgpLGNvbnRlbnR3aWR0aD0kcHBfcGljX2hvbGRlci53aWR0aCgpLHByb2plY3RlZFRvcD1rLzIrc2Nyb2xsX3Bvcy5zY3JvbGxUb3AtY29udGVudEhlaWdodC8yLDA+cHJvamVjdGVkVG9wJiYocHJvamVjdGVkVG9wPTApLGNvbnRlbnRIZWlnaHQ+a3x8JHBwX3BpY19ob2xkZXIuY3NzKHt0b3A6cHJvamVjdGVkVG9wLGxlZnQ6aC8yK3Njcm9sbF9wb3Muc2Nyb2xsTGVmdC1jb250ZW50d2lkdGgvCjJ9KSl9ZnVuY3Rpb24gQygpe2lmKHNlbGYucGFnZVlPZmZzZXQpcmV0dXJue3Njcm9sbFRvcDpzZWxmLnBhZ2VZT2Zmc2V0LHNjcm9sbExlZnQ6c2VsZi5wYWdlWE9mZnNldH07aWYoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50JiZkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wKXJldHVybntzY3JvbGxUb3A6ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCxzY3JvbGxMZWZ0OmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0fTtpZihkb2N1bWVudC5ib2R5KXJldHVybntzY3JvbGxUb3A6ZG9jdW1lbnQuYm9keS5zY3JvbGxUb3Asc2Nyb2xsTGVmdDpkb2N1bWVudC5ib2R5LnNjcm9sbExlZnR9fWZ1bmN0aW9uIEQoYyl7Yi5zb2NpYWxfdG9vbHMmJihmYWNlYm9va19saWtlX2xpbms9Yi5zb2NpYWxfdG9vbHMucmVwbGFjZSgie2xvY2F0aW9uX2hyZWZ9IixlbmNvZGVVUklDb21wb25lbnQobG9jYXRpb24uaHJlZikpKTtiLm1hcmt1cD1iLm1hcmt1cC5yZXBsYWNlKCJ7cHBfc29jaWFsfSIsCiIiKTthKCJib2R5IikuYXBwZW5kKGIubWFya3VwKTskcHBfcGljX2hvbGRlcj1hKCIucHBfcGljX2hvbGRlciIpOyRwcHQ9YSgiLnBwdCIpOyRwcF9vdmVybGF5PWEoImRpdi5wcF9vdmVybGF5Iik7aWYoaXNTZXQmJmIub3ZlcmxheV9nYWxsZXJ5KXtjdXJyZW50R2FsbGVyeVBhZ2U9MDt0b0luamVjdD0iIjtmb3IoYz0wO2M8cHBfaW1hZ2VzLmxlbmd0aDtjKyspcHBfaW1hZ2VzW2NdLm1hdGNoKC9cYihqcGd8anBlZ3xwbmd8Z2lmKVxiL2dpKT8oY2xhc3NuYW1lPSIiLGltZ19zcmM9cHBfaW1hZ2VzW2NdKTooY2xhc3NuYW1lPSJkZWZhdWx0IixpbWdfc3JjPSIiKSx0b0luamVjdCs9IjxsaSBjbGFzcz0nIitjbGFzc25hbWUrIic+PGEgaHJlZj0nIyc+PGltZyBzcmM9JyIraW1nX3NyYysiJyB3aWR0aD0nNTAnIGFsdD0nJyAvPjwvYT48L2xpPiI7dG9JbmplY3Q9Yi5nYWxsZXJ5X21hcmt1cC5yZXBsYWNlKC97Z2FsbGVyeX0vZyx0b0luamVjdCk7JHBwX3BpY19ob2xkZXIuZmluZCgiI3BwX2Z1bGxfcmVzIikuYWZ0ZXIodG9JbmplY3QpOwokcHBfZ2FsbGVyeT1hKCIucHBfcGljX2hvbGRlciAucHBfZ2FsbGVyeSIpOyRwcF9nYWxsZXJ5X2xpPSRwcF9nYWxsZXJ5LmZpbmQoImxpIik7JHBwX2dhbGxlcnkuZmluZCgiLnBwX2Fycm93X25leHQiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7YS5wcmV0dHlQaG90by5jaGFuZ2VHYWxsZXJ5UGFnZSgibmV4dCIpO2EucHJldHR5UGhvdG8uc3RvcFNsaWRlc2hvdygpO3JldHVybiExfSk7JHBwX2dhbGxlcnkuZmluZCgiLnBwX2Fycm93X3ByZXZpb3VzIikub24oImNsaWNrIixmdW5jdGlvbigpe2EucHJldHR5UGhvdG8uY2hhbmdlR2FsbGVyeVBhZ2UoInByZXZpb3VzIik7YS5wcmV0dHlQaG90by5zdG9wU2xpZGVzaG93KCk7cmV0dXJuITF9KTskcHBfcGljX2hvbGRlci5maW5kKCIucHBfY29udGVudCIpLm9uKCJob3ZlciIsZnVuY3Rpb24oKXskcHBfcGljX2hvbGRlci5maW5kKCIucHBfZ2FsbGVyeTpub3QoLmRpc2FibGVkKSIpLmZhZGVJbigpfSxmdW5jdGlvbigpeyRwcF9waWNfaG9sZGVyLmZpbmQoIi5wcF9nYWxsZXJ5Om5vdCguZGlzYWJsZWQpIikuZmFkZU91dCgpfSk7Cml0ZW1XaWR0aD01NzskcHBfZ2FsbGVyeV9saS5lYWNoKGZ1bmN0aW9uKGYpe2EodGhpcykuZmluZCgiYSIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXthLnByZXR0eVBob3RvLmNoYW5nZVBhZ2UoZik7YS5wcmV0dHlQaG90by5zdG9wU2xpZGVzaG93KCk7cmV0dXJuITF9KX0pfWIuc2xpZGVzaG93JiYoJHBwX3BpY19ob2xkZXIuZmluZCgiLnBwX25hdiIpLnByZXBlbmQoJzxhIGhyZWY9IiMiIGNsYXNzPSJwcF9wbGF5Ij5QbGF5PC9hPicpLCRwcF9waWNfaG9sZGVyLmZpbmQoIi5wcF9uYXYgLnBwX3BsYXkiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7YS5wcmV0dHlQaG90by5zdGFydFNsaWRlc2hvdygpO3JldHVybiExfSkpOyRwcF9waWNfaG9sZGVyLmF0dHIoImNsYXNzIiwicHBfcGljX2hvbGRlciAiK2IudGhlbWUpOyRwcF9vdmVybGF5LmNzcyh7b3BhY2l0eTowLGhlaWdodDphKGRvY3VtZW50KS5oZWlnaHQoKSx3aWR0aDphKHdpbmRvdykud2lkdGgoKX0pLm9uKCJjbGljayIsZnVuY3Rpb24oKXtiLm1vZGFsfHwKYS5wcmV0dHlQaG90by5jbG9zZSgpfSk7YSgiYS5wcF9jbG9zZSIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXthLnByZXR0eVBob3RvLmNsb3NlKCk7cmV0dXJuITF9KTtpZihiLmFsbG93X2V4cGFuZClhKCJhLnBwX2V4cGFuZCIpLm9uKCJjbGljayIsZnVuY3Rpb24oZil7YSh0aGlzKS5oYXNDbGFzcygicHBfZXhwYW5kIik\/KGEodGhpcykucmVtb3ZlQ2xhc3MoInBwX2V4cGFuZCIpLmFkZENsYXNzKCJwcF9jb250cmFjdCIpLGRvcmVzaXplPSExKTooYSh0aGlzKS5yZW1vdmVDbGFzcygicHBfY29udHJhY3QiKS5hZGRDbGFzcygicHBfZXhwYW5kIiksZG9yZXNpemU9ITApO3ooZnVuY3Rpb24oKXthLnByZXR0eVBob3RvLm9wZW4oKX0pO3JldHVybiExfSk7JHBwX3BpY19ob2xkZXIuZmluZCgiLnBwX3ByZXZpb3VzLCAucHBfbmF2IC5wcF9hcnJvd19wcmV2aW91cyIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXthLnByZXR0eVBob3RvLmNoYW5nZVBhZ2UoInByZXZpb3VzIik7YS5wcmV0dHlQaG90by5zdG9wU2xpZGVzaG93KCk7CnJldHVybiExfSk7JHBwX3BpY19ob2xkZXIuZmluZCgiLnBwX25leHQsIC5wcF9uYXYgLnBwX2Fycm93X25leHQiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7YS5wcmV0dHlQaG90by5jaGFuZ2VQYWdlKCJuZXh0Iik7YS5wcmV0dHlQaG90by5zdG9wU2xpZGVzaG93KCk7cmV0dXJuITF9KTt3KCl9ZT1qUXVlcnkuZXh0ZW5kKHtob29rOiJyZWwiLGFuaW1hdGlvbl9zcGVlZDoiZmFzdCIsYWpheGNhbGxiYWNrOmZ1bmN0aW9uKCl7fSxzbGlkZXNob3c6NUUzLGF1dG9wbGF5X3NsaWRlc2hvdzohMSxvcGFjaXR5Oi44LHNob3dfdGl0bGU6ITAsYWxsb3dfcmVzaXplOiEwLGFsbG93X2V4cGFuZDohMCxkZWZhdWx0X3dpZHRoOjUwMCxkZWZhdWx0X2hlaWdodDozNDQsY291bnRlcl9zZXBhcmF0b3JfbGFiZWw6Ii8iLHRoZW1lOiJwcF9kZWZhdWx0Iixob3Jpem9udGFsX3BhZGRpbmc6MjAsaGlkZWZsYXNoOiExLHdtb2RlOiJvcGFxdWUiLGF1dG9wbGF5OiEwLG1vZGFsOiExLGRlZXBsaW5raW5nOiEwLApvdmVybGF5X2dhbGxlcnk6ITAsb3ZlcmxheV9nYWxsZXJ5X21heDozMCxrZXlib2FyZF9zaG9ydGN1dHM6ITAsY2hhbmdlcGljdHVyZWNhbGxiYWNrOmZ1bmN0aW9uKCl7fSxjYWxsYmFjazpmdW5jdGlvbigpe30saWU2X2ZhbGxiYWNrOiEwLG1hcmt1cDonPGRpdiBjbGFzcz0icHBfcGljX2hvbGRlciI+ICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBwdCI+Jm5ic3A7PC9kaXY+ICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBwX3RvcCI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcF9sZWZ0Ij48L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBwX21pZGRsZSI+PC9kaXY+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcF9yaWdodCI+PC9kaXY+ICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcF9jb250ZW50X2NvbnRhaW5lciI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcF9sZWZ0Ij4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJwcF9leHBhbmQiIHRpdGxlPSJFeHBhbmQgdGhlIGltYWdlIj5FeHBhbmQ8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcF9yaWdodCI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHBfY29udGVudCI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBwX2xvYWRlckljb24iPjwvZGl2PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcF9mYWRlIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJwcF9jbG9zZSIgaHJlZj0iIyI+Q2xvc2U8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcF9ob3ZlckNvbnRhaW5lciBqcXVlcnlwcDIiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJwcF9uZXh0IiBocmVmPSIjIj5uZXh0PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJwcF9wcmV2aW91cyIgaHJlZj0iIyI+cHJldmlvdXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9InBwX2Z1bGxfcmVzIj48L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBwX2RldGFpbHMiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJwcF9kZXNjcmlwdGlvbiI+PC9wPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBwX3NvY2lhbCI+e3BwX3NvY2lhbH08L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcF9ib3R0b20iPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHBfbGVmdCI+PC9kaXY+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcF9taWRkbGUiPjwvZGl2PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHBfcmlnaHQiPjwvZGl2PiAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcF9vdmVybGF5Ij48L2Rpdj4nLApnYWxsZXJ5X21hcmt1cDonPGRpdiBjbGFzcz0icHBfZ2FsbGVyeSI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9InBwX2Fycm93X3ByZXZpb3VzIj5QcmV2aW91czwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Z2FsbGVyeX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0icHBfYXJyb3dfbmV4dCI+TmV4dDwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PicsaW1hZ2VfbWFya3VwOic8aW1nIGlkPSJmdWxsUmVzSW1hZ2UiIHNyYz0ie3BhdGh9IiAvPicsZmxhc2hfbWFya3VwOic8b2JqZWN0IGNsYXNzaWQ9ImNsc2lkOkQyN0NEQjZFLUFFNkQtMTFjZi05NkI4LTQ0NDU1MzU0MDAwMCIgd2lkdGg9Int3aWR0aH0iIGhlaWdodD0ie2hlaWdodH0iPjxwYXJhbSBuYW1lPSJ3bW9kZSIgdmFsdWU9Int3bW9kZX0iIC8+PHBhcmFtIG5hbWU9ImFsbG93ZnVsbHNjcmVlbiIgdmFsdWU9InRydWUiIC8+PHBhcmFtIG5hbWU9ImFsbG93c2NyaXB0YWNjZXNzIiB2YWx1ZT0iYWx3YXlzIiAvPjxwYXJhbSBuYW1lPSJtb3ZpZSIgdmFsdWU9IntwYXRofSIgLz48ZW1iZWQgc3JjPSJ7cGF0aH0iIHR5cGU9ImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoIiBhbGxvd2Z1bGxzY3JlZW49InRydWUiIGFsbG93c2NyaXB0YWNjZXNzPSJhbHdheXMiIHdpZHRoPSJ7d2lkdGh9IiBoZWlnaHQ9IntoZWlnaHR9IiB3bW9kZT0ie3dtb2RlfSI+PC9lbWJlZD48L29iamVjdD4nLApxdWlja3RpbWVfbWFya3VwOic8b2JqZWN0IGNsYXNzaWQ9ImNsc2lkOjAyQkYyNUQ1LThDMTctNEIyMy1CQzgwLUQzNDg4QUJEREM2QiIgY29kZWJhc2U9Imh0dHA6Ly93d3cuYXBwbGUuY29tL3F0YWN0aXZleC9xdHBsdWdpbi5jYWIiIGhlaWdodD0ie2hlaWdodH0iIHdpZHRoPSJ7d2lkdGh9Ij48cGFyYW0gbmFtZT0ic3JjIiB2YWx1ZT0ie3BhdGh9Ij48cGFyYW0gbmFtZT0iYXV0b3BsYXkiIHZhbHVlPSJ7YXV0b3BsYXl9Ij48cGFyYW0gbmFtZT0idHlwZSIgdmFsdWU9InZpZGVvL3F1aWNrdGltZSI+PGVtYmVkIHNyYz0ie3BhdGh9IiBoZWlnaHQ9IntoZWlnaHR9IiB3aWR0aD0ie3dpZHRofSIgYXV0b3BsYXk9InthdXRvcGxheX0iIHR5cGU9InZpZGVvL3F1aWNrdGltZSIgcGx1Z2luc3BhZ2U9Imh0dHA6Ly93d3cuYXBwbGUuY29tL3F1aWNrdGltZS9kb3dubG9hZC8iPjwvZW1iZWQ+PC9vYmplY3Q+JyxpZnJhbWVfbWFya3VwOic8aWZyYW1lIHNyYyA9IntwYXRofSIgd2lkdGg9Int3aWR0aH0iIGhlaWdodD0ie2hlaWdodH0iIGZyYW1lYm9yZGVyPSJubyI+PC9pZnJhbWU+JywKaW5saW5lX21hcmt1cDonPGRpdiBjbGFzcz0icHBfaW5saW5lIj57Y29udGVudH08L2Rpdj4nLG1wNF9tYXJrdXA6Jzx2aWRlbyB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIiIHByZWxvYWQ9ImF1dG8iIGF1dG9wbGF5IGNvbnRyb2xzPSIiIGlkPSJwbGF5ZXIiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPjxzb3VyY2UgdHlwZT0idmlkZW8vbXA0IiBzcmM9IntwYXRofSI+PC9zb3VyY2U+PC92aWRlbz4nLGN1c3RvbV9tYXJrdXA6IiIsc29jaWFsX3Rvb2xzOic8ZGl2IGNsYXNzPSJ0d2l0dGVyIj48YSBocmVmPSJodHRwOi8vdHdpdHRlci5jb20vc2hhcmUiIGNsYXNzPSJ0d2l0dGVyLXNoYXJlLWJ1dHRvbiIgZGF0YS1jb3VudD0ibm9uZSI+VHdlZXQ8L2E+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cDovL3BsYXRmb3JtLnR3aXR0ZXIuY29tL3dpZGdldHMuanMiPlx4M2Mvc2NyaXB0PjwvZGl2PjxkaXYgY2xhc3M9ImZhY2Vib29rIj48aWZyYW1lIHNyYz0iLy93d3cuZmFjZWJvb2suY29tL3BsdWdpbnMvbGlrZS5waHA\/bG9jYWxlPWVuX1VTJmhyZWY9e2xvY2F0aW9uX2hyZWZ9JmFtcDtsYXlvdXQ9YnV0dG9uX2NvdW50JmFtcDtzaG93X2ZhY2VzPXRydWUmYW1wO3dpZHRoPTUwMCZhbXA7YWN0aW9uPWxpa2UmYW1wO2ZvbnQmYW1wO2NvbG9yc2NoZW1lPWxpZ2h0JmFtcDtoZWlnaHQ9MjMiIHNjcm9sbGluZz0ibm8iIGZyYW1lYm9yZGVyPSIwIiBzdHlsZT0iYm9yZGVyOm5vbmU7IG92ZXJmbG93OmhpZGRlbjsgd2lkdGg6NTAwcHg7IGhlaWdodDoyM3B4OyIgYWxsb3dUcmFuc3BhcmVuY3k9InRydWUiPjwvaWZyYW1lPjwvZGl2Pid9LAplKTt2YXIgYj17fSx4PXRoaXMscj0hMSxkLHUsdixCLG4sbSxrPWEod2luZG93KS5oZWlnaHQoKSxoPWEod2luZG93KS53aWR0aCgpLHE7ZG9yZXNpemU9ITA7c2Nyb2xsX3Bvcz1DKCk7YSh3aW5kb3cpLm9mZigicmVzaXplLnByZXR0eXBob3RvIikub24oInJlc2l6ZS5wcmV0dHlwaG90byIsZnVuY3Rpb24oKXt3KCk7az1hKHdpbmRvdykuaGVpZ2h0KCk7aD1hKHdpbmRvdykud2lkdGgoKTsidW5kZWZpbmVkIiE9dHlwZW9mICRwcF9vdmVybGF5JiYkcHBfb3ZlcmxheS5oZWlnaHQoYShkb2N1bWVudCkuaGVpZ2h0KCkpLndpZHRoKGgpfSk7aWYoZS5rZXlib2FyZF9zaG9ydGN1dHMpYShkb2N1bWVudCkub2ZmKCJrZXlkb3duLnByZXR0eXBob3RvIikub24oImtleWRvd24ucHJldHR5cGhvdG8iLGZ1bmN0aW9uKGMpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgJHBwX3BpY19ob2xkZXImJiRwcF9waWNfaG9sZGVyLmlzKCI6dmlzaWJsZSIpKXN3aXRjaChjLmtleUNvZGUpe2Nhc2UgMzc6YS5wcmV0dHlQaG90by5jaGFuZ2VQYWdlKCJwcmV2aW91cyIpOwpjLnByZXZlbnREZWZhdWx0KCk7YnJlYWs7Y2FzZSAzOTphLnByZXR0eVBob3RvLmNoYW5nZVBhZ2UoIm5leHQiKTtjLnByZXZlbnREZWZhdWx0KCk7YnJlYWs7Y2FzZSAyNzpiLm1vZGFsfHxhLnByZXR0eVBob3RvLmNsb3NlKCksYy5wcmV2ZW50RGVmYXVsdCgpfX0pO2EucHJldHR5UGhvdG8uaW5pdGlhbGl6ZT1mdW5jdGlvbigpe2I9ZTsicHBfZGVmYXVsdCI9PWIudGhlbWUmJihiLmhvcml6b250YWxfcGFkZGluZz0xNik7dGhlUmVsPWEodGhpcykuYXR0cihiLmhvb2spO2dhbGxlcnlSZWdFeHA9L1xbKD86LiopXF0vO3BwX2ltYWdlcz0oaXNTZXQ9Z2FsbGVyeVJlZ0V4cC5leGVjKHRoZVJlbCk\/ITA6ITEpP2pRdWVyeS5tYXAoeCxmdW5jdGlvbihjLGYpe2lmKC0xIT1hKGMpLmF0dHIoYi5ob29rKS5pbmRleE9mKHRoZVJlbCkpcmV0dXJuIGEoYykuYXR0cigiaHJlZiIpfSk6YS5tYWtlQXJyYXkoYSh0aGlzKS5hdHRyKCJocmVmIikpO3BwX3RpdGxlcz1pc1NldD9qUXVlcnkubWFwKHgsCmZ1bmN0aW9uKGMsZil7aWYoLTEhPWEoYykuYXR0cihiLmhvb2spLmluZGV4T2YodGhlUmVsKSlyZXR1cm4gYShjKS5maW5kKCJpbWciKS5hdHRyKCJhbHQiKT9hKGMpLmZpbmQoImltZyIpLmF0dHIoImFsdCIpOiIifSk6YS5tYWtlQXJyYXkoYSh0aGlzKS5maW5kKCJpbWciKS5hdHRyKCJhbHQiKSk7cHBfZGVzY3JpcHRpb25zPWlzU2V0P2pRdWVyeS5tYXAoeCxmdW5jdGlvbihjLGYpe2lmKC0xIT1hKGMpLmF0dHIoYi5ob29rKS5pbmRleE9mKHRoZVJlbCkpcmV0dXJuIGEoYykuYXR0cigidGl0bGUiKT9hKGMpLmF0dHIoInRpdGxlIik6IiJ9KTphLm1ha2VBcnJheShhKHRoaXMpLmF0dHIoInRpdGxlIikpO3BwX2ltYWdlcy5sZW5ndGg+Yi5vdmVybGF5X2dhbGxlcnlfbWF4JiYoYi5vdmVybGF5X2dhbGxlcnk9ITEpO3NldF9wb3NpdGlvbj1qUXVlcnkuaW5BcnJheShhKHRoaXMpLmF0dHIoImhyZWYiKSxwcF9pbWFnZXMpO3JlbF9pbmRleD1pc1NldD9zZXRfcG9zaXRpb246YSgiYVsiKwpiLmhvb2srIl49JyIrdGhlUmVsKyInXSIpLmluZGV4KGEodGhpcykpO0QodGhpcyk7aWYoYi5hbGxvd19yZXNpemUpYSh3aW5kb3cpLm9uKCJzY3JvbGwucHJldHR5cGhvdG8iLGZ1bmN0aW9uKCl7dygpfSk7YS5wcmV0dHlQaG90by5vcGVuKCk7cmV0dXJuITF9O2EucHJldHR5UGhvdG8ub3Blbj1mdW5jdGlvbihjLGYsRSxGKXsidW5kZWZpbmVkIj09dHlwZW9mIGImJihiPWUscHBfaW1hZ2VzPWEubWFrZUFycmF5KGMpLHBwX3RpdGxlcz1mP2EubWFrZUFycmF5KGYpOmEubWFrZUFycmF5KCIiKSxwcF9kZXNjcmlwdGlvbnM9RT9hLm1ha2VBcnJheShFKTphLm1ha2VBcnJheSgiIiksaXNTZXQ9MTxwcF9pbWFnZXMubGVuZ3RoPyEwOiExLHNldF9wb3NpdGlvbj1GP0Y6MCxEKGMudGFyZ2V0KSk7Yi5oaWRlZmxhc2gmJmEoIm9iamVjdCxlbWJlZCxpZnJhbWVbc3JjKj15b3V0dWJlXSxpZnJhbWVbc3JjKj12aW1lb10iKS5jc3MoInZpc2liaWxpdHkiLCJoaWRkZW4iKTtHKGEocHBfaW1hZ2VzKS5sZW5ndGgpOwphKCIucHBfbG9hZGVySWNvbiIpLnNob3coKTtiLmRlZXBsaW5raW5nJiYidW5kZWZpbmVkIiE9dHlwZW9mIHRoZVJlbCYmKGxvY2F0aW9uLmhhc2g9dGhlUmVsKyIvIityZWxfaW5kZXgrIi8iKTtiLnNvY2lhbF90b29scyYmKGZhY2Vib29rX2xpa2VfbGluaz1iLnNvY2lhbF90b29scy5yZXBsYWNlKCJ7bG9jYXRpb25faHJlZn0iLGVuY29kZVVSSUNvbXBvbmVudChsb2NhdGlvbi5ocmVmKSksJHBwX3BpY19ob2xkZXIuZmluZCgiLnBwX3NvY2lhbCIpLmh0bWwoZmFjZWJvb2tfbGlrZV9saW5rKSk7JHBwdC5pcygiOmhpZGRlbiIpJiYkcHB0LmNzcygib3BhY2l0eSIsMCkuc2hvdygpOyRwcF9vdmVybGF5LnNob3coKS5mYWRlVG8oYi5hbmltYXRpb25fc3BlZWQsYi5vcGFjaXR5KTskcHBfcGljX2hvbGRlci5maW5kKCIuY3VycmVudFRleHRIb2xkZXIiKS50ZXh0KHNldF9wb3NpdGlvbisxK2IuY291bnRlcl9zZXBhcmF0b3JfbGFiZWwrYShwcF9pbWFnZXMpLmxlbmd0aCk7InVuZGVmaW5lZCIhPQp0eXBlb2YgcHBfZGVzY3JpcHRpb25zW3NldF9wb3NpdGlvbl0mJiIiIT1wcF9kZXNjcmlwdGlvbnNbc2V0X3Bvc2l0aW9uXT8kcHBfcGljX2hvbGRlci5maW5kKCIucHBfZGVzY3JpcHRpb24iKS5zaG93KCkuaHRtbCh1bmVzY2FwZShwcF9kZXNjcmlwdGlvbnNbc2V0X3Bvc2l0aW9uXSkpOiRwcF9waWNfaG9sZGVyLmZpbmQoIi5wcF9kZXNjcmlwdGlvbiIpLmhpZGUoKTttb3ZpZV93aWR0aD1wYXJzZUZsb2F0KGwoIndpZHRoIixwcF9pbWFnZXNbc2V0X3Bvc2l0aW9uXSkpP2woIndpZHRoIixwcF9pbWFnZXNbc2V0X3Bvc2l0aW9uXSk6Yi5kZWZhdWx0X3dpZHRoLnRvU3RyaW5nKCk7bW92aWVfaGVpZ2h0PXBhcnNlRmxvYXQobCgiaGVpZ2h0IixwcF9pbWFnZXNbc2V0X3Bvc2l0aW9uXSkpP2woImhlaWdodCIscHBfaW1hZ2VzW3NldF9wb3NpdGlvbl0pOmIuZGVmYXVsdF9oZWlnaHQudG9TdHJpbmcoKTtyPSExOy0xIT1tb3ZpZV9oZWlnaHQuaW5kZXhPZigiJSIpJiYobW92aWVfaGVpZ2h0PQpwYXJzZUZsb2F0KGEod2luZG93KS5oZWlnaHQoKSpwYXJzZUZsb2F0KG1vdmllX2hlaWdodCkvMTAwLTE1MCkscj0hMCk7LTEhPW1vdmllX3dpZHRoLmluZGV4T2YoIiUiKSYmKG1vdmllX3dpZHRoPXBhcnNlRmxvYXQoYSh3aW5kb3cpLndpZHRoKCkqcGFyc2VGbG9hdChtb3ZpZV93aWR0aCkvMTAwLTE1MCkscj0hMCk7JHBwX3BpY19ob2xkZXIuZmFkZUluKGZ1bmN0aW9uKCl7Yi5zaG93X3RpdGxlJiYiIiE9cHBfdGl0bGVzW3NldF9wb3NpdGlvbl0mJiJ1bmRlZmluZWQiIT10eXBlb2YgcHBfdGl0bGVzW3NldF9wb3NpdGlvbl0\/JHBwdC5odG1sKHVuZXNjYXBlKHBwX3RpdGxlc1tzZXRfcG9zaXRpb25dKSk6JHBwdC5odG1sKCImbmJzcDsiKTtpbWdQcmVsb2FkZXI9IiI7c2tpcEluamVjdGlvbj0hMTtzd2l0Y2godChwcF9pbWFnZXNbc2V0X3Bvc2l0aW9uXSkpe2Nhc2UgImltYWdlIjppbWdQcmVsb2FkZXI9bmV3IEltYWdlO25leHRJbWFnZT1uZXcgSW1hZ2U7aXNTZXQmJnNldF9wb3NpdGlvbjwKYShwcF9pbWFnZXMpLmxlbmd0aC0xJiYobmV4dEltYWdlLnNyYz1wcF9pbWFnZXNbc2V0X3Bvc2l0aW9uKzFdKTtwcmV2SW1hZ2U9bmV3IEltYWdlO2lzU2V0JiZwcF9pbWFnZXNbc2V0X3Bvc2l0aW9uLTFdJiYocHJldkltYWdlLnNyYz1wcF9pbWFnZXNbc2V0X3Bvc2l0aW9uLTFdKTskcHBfcGljX2hvbGRlci5maW5kKCIjcHBfZnVsbF9yZXMiKVswXS5pbm5lckhUTUw9Yi5pbWFnZV9tYXJrdXAucmVwbGFjZSgve3BhdGh9L2cscHBfaW1hZ2VzW3NldF9wb3NpdGlvbl0pO2ltZ1ByZWxvYWRlci5vbmxvYWQ9ZnVuY3Rpb24oKXtkPWcoaW1nUHJlbG9hZGVyLndpZHRoLGltZ1ByZWxvYWRlci5oZWlnaHQpO3AoKX07aW1nUHJlbG9hZGVyLm9uZXJyb3I9ZnVuY3Rpb24oKXthbGVydCgiSW1hZ2UgY2Fubm90IGJlIGxvYWRlZC4gTWFrZSBzdXJlIHRoZSBwYXRoIGlzIGNvcnJlY3QgYW5kIGltYWdlIGV4aXN0LiIpO2EucHJldHR5UGhvdG8uY2xvc2UoKX07aW1nUHJlbG9hZGVyLnNyYz1wcF9pbWFnZXNbc2V0X3Bvc2l0aW9uXTsKYnJlYWs7Y2FzZSAieW91dHViZSI6ZD1nKG1vdmllX3dpZHRoLG1vdmllX2hlaWdodCk7bW92aWVfaWQ9bCgidiIscHBfaW1hZ2VzW3NldF9wb3NpdGlvbl0pOyIiPT1tb3ZpZV9pZCYmKG1vdmllX2lkPXBwX2ltYWdlc1tzZXRfcG9zaXRpb25dLnNwbGl0KCJ5b3V0dS5iZS8iKSxtb3ZpZV9pZD1tb3ZpZV9pZFsxXSwwPG1vdmllX2lkLmluZGV4T2YoIj8iKSYmKG1vdmllX2lkPW1vdmllX2lkLnN1YnN0cigwLG1vdmllX2lkLmluZGV4T2YoIj8iKSkpLDA8bW92aWVfaWQuaW5kZXhPZigiJiIpJiYobW92aWVfaWQ9bW92aWVfaWQuc3Vic3RyKDAsbW92aWVfaWQuaW5kZXhPZigiJiIpKSkpO21vdmllPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC8iK21vdmllX2lkO2woInJlbCIscHBfaW1hZ2VzW3NldF9wb3NpdGlvbl0pP21vdmllKz0iP3JlbD0iK2woInJlbCIscHBfaW1hZ2VzW3NldF9wb3NpdGlvbl0pOm1vdmllKz0iP3JlbD0xIjtiLmF1dG9wbGF5JiYobW92aWUrPSImYXV0b3BsYXk9MSIpOwp0b0luamVjdD1iLmlmcmFtZV9tYXJrdXAucmVwbGFjZSgve3dpZHRofS9nLGQud2lkdGgpLnJlcGxhY2UoL3toZWlnaHR9L2csZC5oZWlnaHQpLnJlcGxhY2UoL3t3bW9kZX0vZyxiLndtb2RlKS5yZXBsYWNlKC97cGF0aH0vZyxtb3ZpZSk7YnJlYWs7Y2FzZSAidmltZW8iOmQ9Zyhtb3ZpZV93aWR0aCxtb3ZpZV9oZWlnaHQpO21vdmllX2lkPXBwX2ltYWdlc1tzZXRfcG9zaXRpb25dO21vdmllPSJodHRwOi8vcGxheWVyLnZpbWVvLmNvbS92aWRlby8iK21vdmllX2lkLm1hdGNoKC9odHRwKHM\/KTpcL1wvKHd3d1wuKT92aW1lby5jb21cLyhcZCspLylbM10rIj90aXRsZT0wJmFtcDtieWxpbmU9MCZhbXA7cG9ydHJhaXQ9MCI7Yi5hdXRvcGxheSYmKG1vdmllKz0iJmF1dG9wbGF5PTE7Iik7dmltZW9fd2lkdGg9ZC53aWR0aCsiL2VtYmVkLz9tb29nX3dpZHRoPSIrZC53aWR0aDt0b0luamVjdD1iLmlmcmFtZV9tYXJrdXAucmVwbGFjZSgve3dpZHRofS9nLHZpbWVvX3dpZHRoKS5yZXBsYWNlKC97aGVpZ2h0fS9nLApkLmhlaWdodCkucmVwbGFjZSgve3BhdGh9L2csbW92aWUpO2JyZWFrO2Nhc2UgIm1wNCI6ZD1nKG1vdmllX3dpZHRoLG1vdmllX2hlaWdodCk7bW92aWVfdXJsPXBwX2ltYWdlc1tzZXRfcG9zaXRpb25dO3RvSW5qZWN0PWIubXA0X21hcmt1cC5yZXBsYWNlKC97cGF0aH0vZyxtb3ZpZV91cmwpO2JyZWFrO2Nhc2UgInF1aWNrdGltZSI6ZD1nKG1vdmllX3dpZHRoLG1vdmllX2hlaWdodCk7ZC5oZWlnaHQrPTE1O2QuY29udGVudEhlaWdodCs9MTU7ZC5jb250YWluZXJIZWlnaHQrPTE1O3RvSW5qZWN0PWIucXVpY2t0aW1lX21hcmt1cC5yZXBsYWNlKC97d2lkdGh9L2csZC53aWR0aCkucmVwbGFjZSgve2hlaWdodH0vZyxkLmhlaWdodCkucmVwbGFjZSgve3dtb2RlfS9nLGIud21vZGUpLnJlcGxhY2UoL3twYXRofS9nLHBwX2ltYWdlc1tzZXRfcG9zaXRpb25dKS5yZXBsYWNlKC97YXV0b3BsYXl9L2csYi5hdXRvcGxheSk7YnJlYWs7Y2FzZSAiZmxhc2giOmQ9Zyhtb3ZpZV93aWR0aCwKbW92aWVfaGVpZ2h0KTtmbGFzaF92YXJzPXBwX2ltYWdlc1tzZXRfcG9zaXRpb25dO2ZsYXNoX3ZhcnM9Zmxhc2hfdmFycy5zdWJzdHJpbmcocHBfaW1hZ2VzW3NldF9wb3NpdGlvbl0uaW5kZXhPZigiZmxhc2h2YXJzIikrMTAscHBfaW1hZ2VzW3NldF9wb3NpdGlvbl0ubGVuZ3RoKTtmaWxlbmFtZT1wcF9pbWFnZXNbc2V0X3Bvc2l0aW9uXTtmaWxlbmFtZT1maWxlbmFtZS5zdWJzdHJpbmcoMCxmaWxlbmFtZS5pbmRleE9mKCI\/IikpO3RvSW5qZWN0PWIuZmxhc2hfbWFya3VwLnJlcGxhY2UoL3t3aWR0aH0vZyxkLndpZHRoKS5yZXBsYWNlKC97aGVpZ2h0fS9nLGQuaGVpZ2h0KS5yZXBsYWNlKC97d21vZGV9L2csYi53bW9kZSkucmVwbGFjZSgve3BhdGh9L2csZmlsZW5hbWUrIj8iK2ZsYXNoX3ZhcnMpO2JyZWFrO2Nhc2UgImlmcmFtZSI6ZD1nKG1vdmllX3dpZHRoLG1vdmllX2hlaWdodCk7ZnJhbWVfdXJsPXBwX2ltYWdlc1tzZXRfcG9zaXRpb25dO2ZyYW1lX3VybD1mcmFtZV91cmwuc3Vic3RyKDAsCmZyYW1lX3VybC5pbmRleE9mKCJpZnJhbWUiKS0xKTt0b0luamVjdD1iLmlmcmFtZV9tYXJrdXAucmVwbGFjZSgve3dpZHRofS9nLGQud2lkdGgpLnJlcGxhY2UoL3toZWlnaHR9L2csZC5oZWlnaHQpLnJlcGxhY2UoL3twYXRofS9nLGZyYW1lX3VybCk7YnJlYWs7Y2FzZSAiYWpheCI6ZG9yZXNpemU9ITE7ZD1nKG1vdmllX3dpZHRoLG1vdmllX2hlaWdodCk7c2tpcEluamVjdGlvbj1kb3Jlc2l6ZT0hMDthLmdldChwcF9pbWFnZXNbc2V0X3Bvc2l0aW9uXSxmdW5jdGlvbihIKXt0b0luamVjdD1iLmlubGluZV9tYXJrdXAucmVwbGFjZSgve2NvbnRlbnR9L2csSCk7JHBwX3BpY19ob2xkZXIuZmluZCgiI3BwX2Z1bGxfcmVzIilbMF0uaW5uZXJIVE1MPXRvSW5qZWN0O3AoKX0pO2JyZWFrO2Nhc2UgImN1c3RvbSI6ZD1nKG1vdmllX3dpZHRoLG1vdmllX2hlaWdodCk7dG9JbmplY3Q9Yi5jdXN0b21fbWFya3VwO2JyZWFrO2Nhc2UgImlubGluZSI6bXlDbG9uZT1hKHBwX2ltYWdlc1tzZXRfcG9zaXRpb25dKS5jbG9uZSgpLmFwcGVuZCgnPGJyIGNsZWFyPSJhbGwiIC8+JykuY3NzKHt3aWR0aDpiLmRlZmF1bHRfd2lkdGh9KS53cmFwSW5uZXIoJzxkaXYgaWQ9InBwX2Z1bGxfcmVzIj48ZGl2IGNsYXNzPSJwcF9pbmxpbmUiPjwvZGl2PjwvZGl2PicpLmFwcGVuZFRvKGEoImJvZHkiKSkuc2hvdygpLApkb3Jlc2l6ZT0hMSxkPWcoYShteUNsb25lKS53aWR0aCgpLGEobXlDbG9uZSkuaGVpZ2h0KCkpLGRvcmVzaXplPSEwLGEobXlDbG9uZSkucmVtb3ZlKCksdG9JbmplY3Q9Yi5pbmxpbmVfbWFya3VwLnJlcGxhY2UoL3tjb250ZW50fS9nLGEocHBfaW1hZ2VzW3NldF9wb3NpdGlvbl0pLmh0bWwoKSl9aW1nUHJlbG9hZGVyfHxza2lwSW5qZWN0aW9ufHwoJHBwX3BpY19ob2xkZXIuZmluZCgiI3BwX2Z1bGxfcmVzIilbMF0uaW5uZXJIVE1MPXRvSW5qZWN0LHAoKSl9KTtyZXR1cm4hMX07YS5wcmV0dHlQaG90by5jaGFuZ2VQYWdlPWZ1bmN0aW9uKGMpe2N1cnJlbnRHYWxsZXJ5UGFnZT0wOyJwcmV2aW91cyI9PWM\/KHNldF9wb3NpdGlvbi0tLDA+c2V0X3Bvc2l0aW9uJiYoc2V0X3Bvc2l0aW9uPWEocHBfaW1hZ2VzKS5sZW5ndGgtMSkpOiJuZXh0Ij09Yz8oc2V0X3Bvc2l0aW9uKyssc2V0X3Bvc2l0aW9uPmEocHBfaW1hZ2VzKS5sZW5ndGgtMSYmKHNldF9wb3NpdGlvbj0wKSk6c2V0X3Bvc2l0aW9uPQpjO3JlbF9pbmRleD1zZXRfcG9zaXRpb247ZG9yZXNpemV8fChkb3Jlc2l6ZT0hMCk7Yi5hbGxvd19leHBhbmQmJmEoIi5wcF9jb250cmFjdCIpLnJlbW92ZUNsYXNzKCJwcF9jb250cmFjdCIpLmFkZENsYXNzKCJwcF9leHBhbmQiKTt6KGZ1bmN0aW9uKCl7YS5wcmV0dHlQaG90by5vcGVuKCl9KX07YS5wcmV0dHlQaG90by5jaGFuZ2VHYWxsZXJ5UGFnZT1mdW5jdGlvbihjKXsibmV4dCI9PWM\/KGN1cnJlbnRHYWxsZXJ5UGFnZSsrLGN1cnJlbnRHYWxsZXJ5UGFnZT50b3RhbFBhZ2UmJihjdXJyZW50R2FsbGVyeVBhZ2U9MCkpOiJwcmV2aW91cyI9PWM\/KGN1cnJlbnRHYWxsZXJ5UGFnZS0tLDA+Y3VycmVudEdhbGxlcnlQYWdlJiYoY3VycmVudEdhbGxlcnlQYWdlPXRvdGFsUGFnZSkpOmN1cnJlbnRHYWxsZXJ5UGFnZT1jO3NsaWRlX3NwZWVkPSJuZXh0Ij09Y3x8InByZXZpb3VzIj09Yz9iLmFuaW1hdGlvbl9zcGVlZDowO3NsaWRlX3RvPWN1cnJlbnRHYWxsZXJ5UGFnZSppdGVtc1BlclBhZ2UqCml0ZW1XaWR0aDskcHBfZ2FsbGVyeS5maW5kKCJ1bCIpLmFuaW1hdGUoe2xlZnQ6LXNsaWRlX3RvfSxzbGlkZV9zcGVlZCl9O2EucHJldHR5UGhvdG8uc3RhcnRTbGlkZXNob3c9ZnVuY3Rpb24oKXsidW5kZWZpbmVkIj09dHlwZW9mIHE\/KCRwcF9waWNfaG9sZGVyLmZpbmQoIi5wcF9wbGF5Iikub2ZmKCJjbGljayIpLnJlbW92ZUNsYXNzKCJwcF9wbGF5IikuYWRkQ2xhc3MoInBwX3BhdXNlIikub24oImNsaWNrIixmdW5jdGlvbigpe2EucHJldHR5UGhvdG8uc3RvcFNsaWRlc2hvdygpO3JldHVybiExfSkscT1zZXRJbnRlcnZhbChhLnByZXR0eVBob3RvLnN0YXJ0U2xpZGVzaG93LGIuc2xpZGVzaG93KSk6YS5wcmV0dHlQaG90by5jaGFuZ2VQYWdlKCJuZXh0Iil9O2EucHJldHR5UGhvdG8uc3RvcFNsaWRlc2hvdz1mdW5jdGlvbigpeyRwcF9waWNfaG9sZGVyLmZpbmQoIi5wcF9wYXVzZSIpLm9mZigiY2xpY2siKS5yZW1vdmVDbGFzcygicHBfcGF1c2UiKS5hZGRDbGFzcygicHBfcGxheSIpLm9uKCJjbGljayIsCmZ1bmN0aW9uKCl7YS5wcmV0dHlQaG90by5zdGFydFNsaWRlc2hvdygpO3JldHVybiExfSk7Y2xlYXJJbnRlcnZhbChxKTtxPXZvaWQgMH07YS5wcmV0dHlQaG90by5jbG9zZT1mdW5jdGlvbigpeyRwcF9vdmVybGF5LmlzKCI6YW5pbWF0ZWQiKXx8KGEucHJldHR5UGhvdG8uc3RvcFNsaWRlc2hvdygpLCRwcF9waWNfaG9sZGVyLnN0b3AoKS5maW5kKCJvYmplY3QsZW1iZWQiKS5jc3MoInZpc2liaWxpdHkiLCJoaWRkZW4iKSxhKCJkaXYucHBfcGljX2hvbGRlcixkaXYucHB0LC5wcF9mYWRlIikuZmFkZU91dChiLmFuaW1hdGlvbl9zcGVlZCxmdW5jdGlvbigpe2EodGhpcykucmVtb3ZlKCl9KSwkcHBfb3ZlcmxheS5mYWRlT3V0KGIuYW5pbWF0aW9uX3NwZWVkLGZ1bmN0aW9uKCl7Yi5oaWRlZmxhc2gmJmEoIm9iamVjdCxlbWJlZCxpZnJhbWVbc3JjKj15b3V0dWJlXSxpZnJhbWVbc3JjKj12aW1lb10iKS5jc3MoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7YSh0aGlzKS5yZW1vdmUoKTsKYSh3aW5kb3cpLm9mZigic2Nyb2xsLnByZXR0eXBob3RvIik7LTEhPT1sb2NhdGlvbi5ocmVmLmluZGV4T2YoIiNwcmV0dHlQaG90byIpJiYobG9jYXRpb24uaGFzaD0icHJldHR5UGhvdG8iKTtiLmNhbGxiYWNrKCk7ZG9yZXNpemU9ITA7dT0hMTtkZWxldGUgYn0pKX07IXBwX2FscmVhZHlJbml0aWFsaXplZCYmeSgpJiYocHBfYWxyZWFkeUluaXRpYWxpemVkPSEwLGhhc2hSZWw9aGFzaEluZGV4PXkoKSxoYXNoSW5kZXg9aGFzaEluZGV4LnN1YnN0cmluZyhoYXNoSW5kZXguaW5kZXhPZigiLyIpKzEsaGFzaEluZGV4Lmxlbmd0aC0xKSxoYXNoUmVsPWhhc2hSZWwuc3Vic3RyaW5nKDAsaGFzaFJlbC5pbmRleE9mKCIvIikpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXthKCJhWyIrZS5ob29rKyJePSciK2hhc2hSZWwrIiddOmVxKCIraGFzaEluZGV4KyIpIikudHJpZ2dlcigiY2xpY2siKX0sNTApKTtyZXR1cm4gdGhpcy5vZmYoImNsaWNrLnByZXR0eXBob3RvIikub24oImNsaWNrLnByZXR0eXBob3RvIiwKYS5wcmV0dHlQaG90by5pbml0aWFsaXplKX19KShqUXVlcnkpO3ZhciBwcF9hbHJlYWR5SW5pdGlhbGl6ZWQ9ITE7Ci8qKiAvbS9qcy9qcXVlcnkudHJhbnNpdGlvbi5taW4uanMgKiovCi8qIQogKiBqUXVlcnkgVHJhbnNpdCAtIENTUzMgdHJhbnNpdGlvbnMgYW5kIHRyYW5zZm9ybWF0aW9ucwogKiBDb3B5cmlnaHQoYykgMjAxMSBSaWNvIFN0YS4gQ3J1eiA8cmljb0ByaWNvc3RhY3J1ei5jb20+CiAqIE1JVCBMaWNlbnNlZC4KICoKICogaHR0cDovL3JpY29zdGFjcnV6LmNvbS9qcXVlcnkudHJhbnNpdAogKiBodHRwOi8vZ2l0aHViLmNvbS9yc3RhY3J1ei9qcXVlcnkudHJhbnNpdAogKi8KKGZ1bmN0aW9uKGQpe2Z1bmN0aW9uIGsoYSl7dmFyIGI9WyJNb3oiLCJXZWJraXQiLCJPIiwibXMiXSxjPWEuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrYS5zdWJzdHIoMSk7aWYoYSBpbiBpLnN0eWxlKXJldHVybiBhO2ZvcihhPTA7YTxiLmxlbmd0aDsrK2Epe3ZhciBkPWJbYV0rYztpZihkIGluIGkuc3R5bGUpcmV0dXJuIGR9fWZ1bmN0aW9uIGooYSl7InN0cmluZyI9PT10eXBlb2YgYSYmdGhpcy5wYXJzZShhKTtyZXR1cm4gdGhpc31mdW5jdGlvbiBwKGEsYixjKXshMD09PWI\/YS5xdWV1ZShjKTpiP2EucXVldWUoYixjKTpjKCl9ZnVuY3Rpb24gbShhKXt2YXIgYj1bXTtkLmVhY2goYSxmdW5jdGlvbihhKXthPWQuY2FtZWxDYXNlKGEpO2E9ZC50cmFuc2l0LnByb3BlcnR5TWFwW2FdfHxhO2E9cihhKTstMT09PWQuaW5BcnJheShhLGIpJiZiLnB1c2goYSl9KTtyZXR1cm4gYn1mdW5jdGlvbiBxKGEsYixjLGUpe2E9bShhKTtkLmNzc0Vhc2VbY10mJihjPWQuY3NzRWFzZVtjXSk7CnZhciBoPSIiK24oYikrIiAiK2M7MDxwYXJzZUludChlLDEwKSYmKGgrPSIgIituKGUpKTt2YXIgZj1bXTtkLmVhY2goYSxmdW5jdGlvbihhLGIpe2YucHVzaChiKyIgIitoKX0pO3JldHVybiBmLmpvaW4oIiwgIil9ZnVuY3Rpb24gZihhLGIpe2J8fChkLmNzc051bWJlclthXT0hMCk7ZC50cmFuc2l0LnByb3BlcnR5TWFwW2FdPWUudHJhbnNmb3JtO2QuY3NzSG9va3NbYV09e2dldDpmdW5jdGlvbihiKXtyZXR1cm4oZChiKS5jc3MoInRyYW5zZm9ybSIpfHxuZXcgaikuZ2V0KGEpfSxzZXQ6ZnVuY3Rpb24oYixlKXt2YXIgaD1kKGIpLmNzcygidHJhbnNmb3JtIil8fG5ldyBqO2guc2V0RnJvbVN0cmluZyhhLGUpO2QoYikuY3NzKHt0cmFuc2Zvcm06aH0pfX19ZnVuY3Rpb24gcihhKXtyZXR1cm4gYS5yZXBsYWNlKC8oW0EtWl0pL2csZnVuY3Rpb24oYSl7cmV0dXJuIi0iK2EudG9Mb3dlckNhc2UoKX0pfWZ1bmN0aW9uIGcoYSxiKXtyZXR1cm4ic3RyaW5nIj09PXR5cGVvZiBhJiYhYS5tYXRjaCgvXltcLTAtOVwuXSskLyk\/CmE6IiIrYStifWZ1bmN0aW9uIG4oYSl7ZC5meC5zcGVlZHNbYV0mJihhPWQuZnguc3BlZWRzW2FdKTtyZXR1cm4gZyhhLCJtcyIpfWQudHJhbnNpdD17dmVyc2lvbjoiMC4xLjMiLHByb3BlcnR5TWFwOnttYXJnaW5MZWZ0OiJtYXJnaW4iLG1hcmdpblJpZ2h0OiJtYXJnaW4iLG1hcmdpbkJvdHRvbToibWFyZ2luIixtYXJnaW5Ub3A6Im1hcmdpbiIscGFkZGluZ0xlZnQ6InBhZGRpbmciLHBhZGRpbmdSaWdodDoicGFkZGluZyIscGFkZGluZ0JvdHRvbToicGFkZGluZyIscGFkZGluZ1RvcDoicGFkZGluZyJ9LGVuYWJsZWQ6ITAsdXNlVHJhbnNpdGlvbkVuZDohMX07dmFyIGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksZT17fSxzPS0xPG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5pbmRleE9mKCJjaHJvbWUiKTtlLnRyYW5zaXRpb249aygidHJhbnNpdGlvbiIpO2UudHJhbnNpdGlvbkRlbGF5PWsoInRyYW5zaXRpb25EZWxheSIpO2UudHJhbnNmb3JtPWsoInRyYW5zZm9ybSIpOwplLnRyYW5zZm9ybU9yaWdpbj1rKCJ0cmFuc2Zvcm1PcmlnaW4iKTtpLnN0eWxlW2UudHJhbnNmb3JtXT0iIjtpLnN0eWxlW2UudHJhbnNmb3JtXT0icm90YXRlWSg5MGRlZykiO2UudHJhbnNmb3JtM2Q9IiIhPT1pLnN0eWxlW2UudHJhbnNmb3JtXTtkLmV4dGVuZChkLnN1cHBvcnQsZSk7dmFyIG89ZS50cmFuc2l0aW9uRW5kPXtNb3pUcmFuc2l0aW9uOiJ0cmFuc2l0aW9uZW5kIixPVHJhbnNpdGlvbjoib1RyYW5zaXRpb25FbmQiLFdlYmtpdFRyYW5zaXRpb246IndlYmtpdFRyYW5zaXRpb25FbmQiLG1zVHJhbnNpdGlvbjoiTVNUcmFuc2l0aW9uRW5kIn1bZS50cmFuc2l0aW9uXXx8bnVsbCxpPW51bGw7ZC5jc3NFYXNlPXtfZGVmYXVsdDoiZWFzZSIsImluIjoiZWFzZS1pbiIsb3V0OiJlYXNlLW91dCIsImluLW91dCI6ImVhc2UtaW4tb3V0IixzbmFwOiJjdWJpYy1iZXppZXIoMCwxLC41LDEpIn07ZC5jc3NIb29rcy50cmFuc2Zvcm09e2dldDpmdW5jdGlvbihhKXtyZXR1cm4gZChhKS5kYXRhKCJ0cmFuc2Zvcm0iKX0sCnNldDpmdW5jdGlvbihhLGIpe3ZhciBjPWI7YyBpbnN0YW5jZW9mIGp8fChjPW5ldyBqKGMpKTthLnN0eWxlW2UudHJhbnNmb3JtXT0iV2Via2l0VHJhbnNmb3JtIj09PWUudHJhbnNmb3JtJiYhcz9jLnRvU3RyaW5nKCEwKTpjLnRvU3RyaW5nKCk7ZChhKS5kYXRhKCJ0cmFuc2Zvcm0iLGMpfX07ZC5jc3NIb29rcy50cmFuc2Zvcm1PcmlnaW49e2dldDpmdW5jdGlvbihhKXtyZXR1cm4gYS5zdHlsZVtlLnRyYW5zZm9ybU9yaWdpbl19LHNldDpmdW5jdGlvbihhLGIpe2Euc3R5bGVbZS50cmFuc2Zvcm1PcmlnaW5dPWJ9fTtkLmNzc0hvb2tzLnRyYW5zaXRpb249e2dldDpmdW5jdGlvbihhKXtyZXR1cm4gYS5zdHlsZVtlLnRyYW5zaXRpb25dfSxzZXQ6ZnVuY3Rpb24oYSxiKXthLnN0eWxlW2UudHJhbnNpdGlvbl09Yn19O2YoInNjYWxlIik7ZigidHJhbnNsYXRlIik7Zigicm90YXRlIik7Zigicm90YXRlWCIpO2YoInJvdGF0ZVkiKTtmKCJyb3RhdGUzZCIpO2YoInBlcnNwZWN0aXZlIik7CmYoInNrZXdYIik7Zigic2tld1kiKTtmKCJ4IiwhMCk7ZigieSIsITApO2oucHJvdG90eXBlPXtzZXRGcm9tU3RyaW5nOmZ1bmN0aW9uKGEsYil7dmFyIGM9InN0cmluZyI9PT10eXBlb2YgYj9iLnNwbGl0KCIsIik6Yi5jb25zdHJ1Y3Rvcj09PUFycmF5P2I6W2JdO2MudW5zaGlmdChhKTtqLnByb3RvdHlwZS5zZXQuYXBwbHkodGhpcyxjKX0sc2V0OmZ1bmN0aW9uKGEpe3ZhciBiPUFycmF5LnByb3RvdHlwZS5zbGljZS5hcHBseShhcmd1bWVudHMsWzFdKTt0aGlzLnNldHRlclthXT90aGlzLnNldHRlclthXS5hcHBseSh0aGlzLGIpOnRoaXNbYV09Yi5qb2luKCIsIil9LGdldDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5nZXR0ZXJbYV0\/dGhpcy5nZXR0ZXJbYV0uYXBwbHkodGhpcyk6dGhpc1thXXx8MH0sc2V0dGVyOntyb3RhdGU6ZnVuY3Rpb24oYSl7dGhpcy5yb3RhdGU9ZyhhLCJkZWciKX0scm90YXRlWDpmdW5jdGlvbihhKXt0aGlzLnJvdGF0ZVg9ZyhhLCJkZWciKX0scm90YXRlWTpmdW5jdGlvbihhKXt0aGlzLnJvdGF0ZVk9CmcoYSwiZGVnIil9LHNjYWxlOmZ1bmN0aW9uKGEsYil7dm9pZCAwPT09YiYmKGI9YSk7dGhpcy5zY2FsZT1hKyIsIitifSxza2V3WDpmdW5jdGlvbihhKXt0aGlzLnNrZXdYPWcoYSwiZGVnIil9LHNrZXdZOmZ1bmN0aW9uKGEpe3RoaXMuc2tld1k9ZyhhLCJkZWciKX0scGVyc3BlY3RpdmU6ZnVuY3Rpb24oYSl7dGhpcy5wZXJzcGVjdGl2ZT1nKGEsInB4Iil9LHg6ZnVuY3Rpb24oYSl7dGhpcy5zZXQoInRyYW5zbGF0ZSIsYSxudWxsKX0seTpmdW5jdGlvbihhKXt0aGlzLnNldCgidHJhbnNsYXRlIixudWxsLGEpfSx0cmFuc2xhdGU6ZnVuY3Rpb24oYSxiKXt2b2lkIDA9PT10aGlzLl90cmFuc2xhdGVYJiYodGhpcy5fdHJhbnNsYXRlWD0wKTt2b2lkIDA9PT10aGlzLl90cmFuc2xhdGVZJiYodGhpcy5fdHJhbnNsYXRlWT0wKTtudWxsIT09YSYmKHRoaXMuX3RyYW5zbGF0ZVg9ZyhhLCJweCIpKTtudWxsIT09YiYmKHRoaXMuX3RyYW5zbGF0ZVk9ZyhiLCJweCIpKTt0aGlzLnRyYW5zbGF0ZT0KdGhpcy5fdHJhbnNsYXRlWCsiLCIrdGhpcy5fdHJhbnNsYXRlWX19LGdldHRlcjp7eDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl90cmFuc2xhdGVYfHwwfSx5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RyYW5zbGF0ZVl8fDB9LHNjYWxlOmZ1bmN0aW9uKCl7dmFyIGE9KHRoaXMuc2NhbGV8fCIxLDEiKS5zcGxpdCgiLCIpO2FbMF0mJihhWzBdPXBhcnNlRmxvYXQoYVswXSkpO2FbMV0mJihhWzFdPXBhcnNlRmxvYXQoYVsxXSkpO3JldHVybiBhWzBdPT09YVsxXT9hWzBdOmF9LHJvdGF0ZTNkOmZ1bmN0aW9uKCl7Zm9yKHZhciBhPSh0aGlzLnJvdGF0ZTNkfHwiMCwwLDAsMGRlZyIpLnNwbGl0KCIsIiksYj0wOzM+PWI7KytiKWFbYl0mJihhW2JdPXBhcnNlRmxvYXQoYVtiXSkpO2FbM10mJihhWzNdPWcoYVszXSwiZGVnIikpO3JldHVybiBhfX0scGFyc2U6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpczthLnJlcGxhY2UoLyhbYS16QS1aMC05XSspXCgoLio\/KVwpL2csZnVuY3Rpb24oYSxkLAplKXtiLnNldEZyb21TdHJpbmcoZCxlKX0pfSx0b1N0cmluZzpmdW5jdGlvbihhKXt2YXIgYj1bXSxjO2ZvcihjIGluIHRoaXMpaWYodGhpcy5oYXNPd25Qcm9wZXJ0eShjKSYmKGUudHJhbnNmb3JtM2R8fCEoInJvdGF0ZVgiPT09Y3x8InJvdGF0ZVkiPT09Y3x8InBlcnNwZWN0aXZlIj09PWN8fCJ0cmFuc2Zvcm1PcmlnaW4iPT09YykpKSJfIiE9PWNbMF0mJihhJiYic2NhbGUiPT09Yz9iLnB1c2goYysiM2QoIit0aGlzW2NdKyIsMSkiKTphJiYidHJhbnNsYXRlIj09PWM\/Yi5wdXNoKGMrIjNkKCIrdGhpc1tjXSsiLDApIik6Yi5wdXNoKGMrIigiK3RoaXNbY10rIikiKSk7cmV0dXJuIGIuam9pbigiICIpfX07ZC5mbi50cmFuc2l0aW9uPWQuZm4udHJhbnNpdD1mdW5jdGlvbihhLGIsYyxmKXt2YXIgaD10aGlzLGc9MCxpPSEwOyJmdW5jdGlvbiI9PT10eXBlb2YgYiYmKGY9YixiPXZvaWQgMCk7ImZ1bmN0aW9uIj09PXR5cGVvZiBjJiYoZj1jLGM9dm9pZCAwKTsidW5kZWZpbmVkIiE9PQp0eXBlb2YgYS5lYXNpbmcmJihjPWEuZWFzaW5nLGRlbGV0ZSBhLmVhc2luZyk7InVuZGVmaW5lZCIhPT10eXBlb2YgYS5kdXJhdGlvbiYmKGI9YS5kdXJhdGlvbixkZWxldGUgYS5kdXJhdGlvbik7InVuZGVmaW5lZCIhPT10eXBlb2YgYS5jb21wbGV0ZSYmKGY9YS5jb21wbGV0ZSxkZWxldGUgYS5jb21wbGV0ZSk7InVuZGVmaW5lZCIhPT10eXBlb2YgYS5xdWV1ZSYmKGk9YS5xdWV1ZSxkZWxldGUgYS5xdWV1ZSk7InVuZGVmaW5lZCIhPT10eXBlb2YgYS5kZWxheSYmKGc9YS5kZWxheSxkZWxldGUgYS5kZWxheSk7InVuZGVmaW5lZCI9PT10eXBlb2YgYiYmKGI9ZC5meC5zcGVlZHMuX2RlZmF1bHQpOyJ1bmRlZmluZWQiPT09dHlwZW9mIGMmJihjPWQuY3NzRWFzZS5fZGVmYXVsdCk7dmFyIGI9bihiKSxqPXEoYSxiLGMsZyksbD1kLnRyYW5zaXQuZW5hYmxlZCYmZS50cmFuc2l0aW9uP3BhcnNlSW50KGIsMTApK3BhcnNlSW50KGcsMTApOjA7aWYoMD09PWwpcmV0dXJuIHAoaCxpLGZ1bmN0aW9uKGIpe2guY3NzKGEpOwpmJiZmLmFwcGx5KGgpO2ImJmIoKX0pLGg7dmFyIGs9e30sbT1mdW5jdGlvbihiKXt2YXIgYz1mYWxzZSxnPWZ1bmN0aW9uKCl7YyYmaC5vZmYobyxnKTtsPjAmJmguZWFjaChmdW5jdGlvbigpe3RoaXMuc3R5bGVbZS50cmFuc2l0aW9uXT1rW3RoaXNdfHxudWxsfSk7dHlwZW9mIGY9PT0iZnVuY3Rpb24iJiZmLmFwcGx5KGgpO3R5cGVvZiBiPT09ImZ1bmN0aW9uIiYmYigpfTtpZihsPjAmJm8mJmQudHJhbnNpdC51c2VUcmFuc2l0aW9uRW5kKXtjPXRydWU7aC5vbihvLGcpfWVsc2Ugd2luZG93LnNldFRpbWVvdXQoZyxsKTtoLmVhY2goZnVuY3Rpb24oKXtsPjAmJih0aGlzLnN0eWxlW2UudHJhbnNpdGlvbl09aik7ZCh0aGlzKS5jc3MoYSl9KX07cChoLGksZnVuY3Rpb24oYSl7dmFyIGI9MDtlLnRyYW5zaXRpb249PT0iTW96VHJhbnNpdGlvbiImJmI8MjUmJihiPTI1KTt3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpe20oYSl9LGIpfSk7cmV0dXJuIHRoaXN9O2QudHJhbnNpdC5nZXRUcmFuc2l0aW9uVmFsdWU9CnF9KShqUXVlcnkpOy8qRU9GKi87Ci8qKiAvbS9qcy9qcXVlcnkudG91Y2hTd2lwZS5taW4uanMgKiovCihmdW5jdGlvbihnKXtnLmZuLnN3aXBlPWZ1bmN0aW9uKG0pe2lmKCF0aGlzKXJldHVybiBmYWxzZTt2YXIgYj17ZmluZ2VyczoxLHRocmVzaG9sZDo3NSxzd2lwZTpudWxsLHN3aXBlTGVmdDpudWxsLHN3aXBlUmlnaHQ6bnVsbCxzd2lwZVVwOm51bGwsc3dpcGVEb3duOm51bGwsc3dpcGVTdGF0dXM6bnVsbCxjbGljazpudWxsLHRyaWdnZXJPblRvdWNoRW5kOnRydWUsYWxsb3dQYWdlU2Nyb2xsOiJhdXRvIn0scD0ibGVmdCIsdj0icmlnaHQiLHc9InVwIix4PSJkb3duIix5PSJub25lIix6PSJob3Jpem9udGFsIixBPSJ2ZXJ0aWNhbCIsRz0iYXV0byIsSD0ic3RhcnQiLEI9Im1vdmUiLHE9ImVuZCIsbj0iY2FuY2VsIixkPSJvbnRvdWNoc3RhcnQiaW4gd2luZG93LEM9ZD8idG91Y2hzdGFydCI6Im1vdXNlZG93biIscj1kPyJ0b3VjaG1vdmUiOiJtb3VzZW1vdmUiLHM9ZD8idG91Y2hlbmQiOiJtb3VzZXVwIixjPSJzdGFydCI7aWYobS5hbGxvd1BhZ2VTY3JvbGw9PXVuZGVmaW5lZCYmDQoobS5zd2lwZSE9dW5kZWZpbmVkfHxtLnN3aXBlU3RhdHVzIT11bmRlZmluZWQpKW0uYWxsb3dQYWdlU2Nyb2xsPXk7bSYmZy5leHRlbmQoYixtKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gRChhKXt2YXIgZT1kP2EudG91Y2hlc1swXTphO2M9SDtpZihkKWs9YS50b3VjaGVzLmxlbmd0aDtkaXN0YW5jZT0wO2RpcmVjdGlvbj1udWxsO2lmKGs9PWIuZmluZ2Vyc3x8IWQpe2gueD1mLng9ZS5wYWdlWDtoLnk9Zi55PWUucGFnZVk7Yi5zd2lwZVN0YXR1cyYmbyhhLGMpfWVsc2UgbChhKTtpZihkKXtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKHIsdCk7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihzLHUpfWVsc2V7Zyhkb2N1bWVudCkub24ocix0KTtnKGRvY3VtZW50KS5vbihzLHUpfX1mdW5jdGlvbiB0KGEpe2lmKCEoYz09cXx8Yz09bikpe3ZhciBlPWQ\/YS50b3VjaGVzWzBdOmE7Zi54PWUucGFnZVg7Zi55PWUucGFnZVk7ZGlyZWN0aW9uPUUoKTtpZihkKWs9DQphLnRvdWNoZXMubGVuZ3RoO2M9QjtlPWRpcmVjdGlvbjtpZihiLmFsbG93UGFnZVNjcm9sbD09eSlhLnByZXZlbnREZWZhdWx0KCk7ZWxzZXt2YXIgaT1iLmFsbG93UGFnZVNjcm9sbD09Rztzd2l0Y2goZSl7Y2FzZSBwOmlmKGIuc3dpcGVMZWZ0JiZpfHwhaSYmYi5hbGxvd1BhZ2VTY3JvbGwhPXopYS5wcmV2ZW50RGVmYXVsdCgpO2JyZWFrO2Nhc2UgdjppZihiLnN3aXBlUmlnaHQmJml8fCFpJiZiLmFsbG93UGFnZVNjcm9sbCE9eilhLnByZXZlbnREZWZhdWx0KCk7YnJlYWs7Y2FzZSB3OmlmKGIuc3dpcGVVcCYmaXx8IWkmJmIuYWxsb3dQYWdlU2Nyb2xsIT1BKWEucHJldmVudERlZmF1bHQoKTticmVhaztjYXNlIHg6aWYoYi5zd2lwZURvd24mJml8fCFpJiZiLmFsbG93UGFnZVNjcm9sbCE9QSlhLnByZXZlbnREZWZhdWx0KCl9fWlmKGs9PWIuZmluZ2Vyc3x8IWQpe2Rpc3RhbmNlPUYoKTtiLnN3aXBlU3RhdHVzJiZvKGEsYyxkaXJlY3Rpb24sZGlzdGFuY2UpO2lmKCFiLnRyaWdnZXJPblRvdWNoRW5kKWlmKGRpc3RhbmNlPj0NCmIudGhyZXNob2xkKXtjPXE7byhhLGMpO2woYSl9fWVsc2V7Yz1uO28oYSxjKTtsKGEpfX19ZnVuY3Rpb24gdShhKXthLnByZXZlbnREZWZhdWx0KCk7ZGlzdGFuY2U9RigpO2RpcmVjdGlvbj1FKCk7aWYoYi50cmlnZ2VyT25Ub3VjaEVuZCl7Yz1xO2lmKChrPT1iLmZpbmdlcnN8fCFkKSYmZi54IT0wKWRpc3RhbmNlPj1iLnRocmVzaG9sZHx8KGM9bik7ZWxzZSBjPW47byhhLGMpO2woYSl9ZWxzZSBpZihjPT1CKXtjPW47byhhLGMpO2woYSl9aWYoZCl7ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihyLHQpO2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIocyx1KX1lbHNle2coZG9jdW1lbnQpLm9mZihyLHQpO2coZG9jdW1lbnQpLm9mZihzLHUpfX1mdW5jdGlvbiBsKCl7az0wO2gueD0wO2gueT0wO2YueD0wO2YueT0wfWZ1bmN0aW9uIG8oYSxlKXtpZihiLnN3aXBlU3RhdHVzKWIuc3dpcGVTdGF0dXMuY2FsbChqLGEsZSxkaXJlY3Rpb258fG51bGwsZGlzdGFuY2V8fA0KMCk7aWYoZT09bilpZihiLmNsaWNrJiYoaz09MXx8IWQpJiYoaXNOYU4oZGlzdGFuY2UpfHxkaXN0YW5jZT09MCkpYi5jbGljay5jYWxsKGosYSxhLnRhcmdldCk7aWYoZT09cSl7Yi5zd2lwZSYmYi5zd2lwZS5jYWxsKGosYSxkaXJlY3Rpb24sZGlzdGFuY2UpO3N3aXRjaChkaXJlY3Rpb24pe2Nhc2UgcDpiLnN3aXBlTGVmdCYmYi5zd2lwZUxlZnQuY2FsbChqLGEsZGlyZWN0aW9uLGRpc3RhbmNlKTticmVhaztjYXNlIHY6Yi5zd2lwZVJpZ2h0JiZiLnN3aXBlUmlnaHQuY2FsbChqLGEsZGlyZWN0aW9uLGRpc3RhbmNlKTticmVhaztjYXNlIHc6Yi5zd2lwZVVwJiZiLnN3aXBlVXAuY2FsbChqLGEsZGlyZWN0aW9uLGRpc3RhbmNlKTticmVhaztjYXNlIHg6Yi5zd2lwZURvd24mJmIuc3dpcGVEb3duLmNhbGwoaixhLGRpcmVjdGlvbixkaXN0YW5jZSl9fX1mdW5jdGlvbiBGKCl7cmV0dXJuIE1hdGgucm91bmQoTWF0aC5zcXJ0KE1hdGgucG93KGYueC1oLngsMikrTWF0aC5wb3coZi55LQ0KaC55LDIpKSl9ZnVuY3Rpb24gRSgpe3ZhciBhO2E9TWF0aC5yb3VuZChNYXRoLmF0YW4yKGYueS1oLnksaC54LWYueCkqMTgwL01hdGguUEkpO2lmKGE8MClhPTM2MC1NYXRoLmFicyhhKTthPWE7cmV0dXJuIGE8PTQ1JiZhPj0wP3A6YTw9MzYwJiZhPj0zMTU\/cDphPj0xMzUmJmE8PTIyNT92OmE+NDUmJmE8MTM1P3g6d312YXIgaj1nKHRoaXMpLGs9MCxoPXt4OjAseTowfSxmPXt4OjAseTowfTtpZihkKXt0aGlzLmFkZEV2ZW50TGlzdGVuZXIoQyxEKTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGNhbmNlbCIsbCl9ZWxzZXtqLm9uKEMsRCk7Zyhkb2N1bWVudCkub24oInRvdWNoY2FuY2VsIixsKX19KX19KShqUXVlcnkpOy8qRU9GKi87Ci8qKiAvbS9qcy9iYXNlNjQuanMgKiovCnZhciBfX19kMmNfYmFzZTY0anNfY19vbj0iMjAyNS0wNS0yMyAxNzowNjowOCI7J3VzZSBzdHJpY3QnO3ZhciBfX19kMmNfYmFzZTY0anNfY19vbj0iMjAyNC0wNy0wOCAxMDozMDowNSI7InVzZSBzdHJpY3QiOwp2YXIgQmFzZTY0PXtfa2V5U3RyOiJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPSIsX2I2NFRlc3Q6UmVnRXhwKCJeKD86W0EtWmEtejAtOSsvXXs0fSkqKD86W0EtWmEtejAtOSsvXXsyfT09fFtBLVphLXowLTkrL117M309KT8kIiksZW5jb2RlOmZ1bmN0aW9uKGEpe3ZhciBkPSIiLGM9MDtmb3IoYT1CYXNlNjQuX3V0ZjhfZW5jb2RlKGEpO2M8YS5sZW5ndGg7KXt2YXIgYj1hLmNoYXJDb2RlQXQoYysrKSxlPWEuY2hhckNvZGVBdChjKyspLGY9YS5jaGFyQ29kZUF0KGMrKyksZz1iPj4yO2I9KGImMyk8PDR8ZT4+NDt2YXIgaD0oZSYxNSk8PDJ8Zj4+NixrPWYmNjM7aXNOYU4oZSk\/aD1rPTY0OmlzTmFOKGYpJiYoaz02NCk7ZD1kK3RoaXMuX2tleVN0ci5jaGFyQXQoZykrdGhpcy5fa2V5U3RyLmNoYXJBdChiKSt0aGlzLl9rZXlTdHIuY2hhckF0KGgpK3RoaXMuX2tleVN0ci5jaGFyQXQoayl9cmV0dXJuIGR9LGRlY29kZTpmdW5jdGlvbihhKXt2YXIgZD0KIiIsYz0wO2ZvcihhPWEucmVwbGFjZSgvW15BLVphLXowLTlcK1wvPV0vZywiIik7YzxhLmxlbmd0aDspe3ZhciBiPXRoaXMuX2tleVN0ci5pbmRleE9mKGEuY2hhckF0KGMrKykpLGU9dGhpcy5fa2V5U3RyLmluZGV4T2YoYS5jaGFyQXQoYysrKSksZj10aGlzLl9rZXlTdHIuaW5kZXhPZihhLmNoYXJBdChjKyspKSxnPXRoaXMuX2tleVN0ci5pbmRleE9mKGEuY2hhckF0KGMrKykpO2I9Yjw8MnxlPj40O2U9KGUmMTUpPDw0fGY+PjI7dmFyIGg9KGYmMyk8PDZ8ZztkKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGIpOzY0IT1mJiYoZCs9U3RyaW5nLmZyb21DaGFyQ29kZShlKSk7NjQhPWcmJihkKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGgpKX1yZXR1cm4gQmFzZTY0Ll91dGY4X2RlY29kZShkKX0sX3V0ZjhfZW5jb2RlOmZ1bmN0aW9uKGEpe3ZhciBkPSIiO2E9YS5yZXBsYWNlKC9cclxuL2csIlxuIik7Zm9yKHZhciBjPTA7YzxhLmxlbmd0aDtjKyspe3ZhciBiPWEuY2hhckNvZGVBdChjKTsxMjg+CmI\/ZCs9U3RyaW5nLmZyb21DaGFyQ29kZShiKTooMTI3PGImJjIwNDg+Yj9kKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGI+PjZ8MTkyKTooZCs9U3RyaW5nLmZyb21DaGFyQ29kZShiPj4xMnwyMjQpLGQrPVN0cmluZy5mcm9tQ2hhckNvZGUoYj4+NiY2M3wxMjgpKSxkKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGImNjN8MTI4KSl9cmV0dXJuIGR9LF91dGY4X2RlY29kZTpmdW5jdGlvbihhKXtmb3IodmFyIGQ9IiIsYz0wLGIsZSxmO2M8YS5sZW5ndGg7KWI9YS5jaGFyQ29kZUF0KGMpLDEyOD5iPyhkKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGIpLGMrKyk6MTkxPGImJjIyND5iPyhlPWEuY2hhckNvZGVBdChjKzEpLGQrPVN0cmluZy5mcm9tQ2hhckNvZGUoKGImMzEpPDw2fGUmNjMpLGMrPTIpOihlPWEuY2hhckNvZGVBdChjKzEpLGY9YS5jaGFyQ29kZUF0KGMrMiksZCs9U3RyaW5nLmZyb21DaGFyQ29kZSgoYiYxNSk8PDEyfChlJjYzKTw8NnxmJjYzKSxjKz0zKTtyZXR1cm4gZH0sd2hpdGVMaXN0OmZ1bmN0aW9uKCl7cmV0dXJuWyJ0cmFpbGVycyJdfSwKaXNCYXNlNjQ6ZnVuY3Rpb24oYSl7cmV0dXJuIEJhc2U2NC53aGl0ZUxpc3QoKS5pbmNsdWRlcyhhLnRvTG93ZXJDYXNlKCkpfHwidW5kZWZpbmVkIj09PXR5cGVvZiBhfHwiIj09PWF8fCIiPT09YS50cmltKCl8fDQ+PWEubGVuZ3RoPyExOkJhc2U2NC5lbmNvZGUoQmFzZTY0LmRlY29kZShhKSk9PWF9fTsKLyoqIC9tL2pzL2QyY3Rjay91cHJvZmlsZS5maW5hbC5taW4uanMgKiovCmFjdGl2ZVVzZXJQcm9maWxlTW5nPXtvbnJlYWR5Om51bGwsb25ub3Rmb3VuZDpudWxsLGRpc2FibGVkOiExLHVpZDpudWxsLGFjdGl2ZVN0ZXA6MCxzd2ZTdG9yZTohMSxyZWdpc3RlcmVkUGFnZVZpZXdzOm51bGwscmVnaXN0ZXJlZEV2ZW50czpudWxsLHNlc3Npb25pZDpudWxsLHJlZ2lzdGVyZWRDYWxsYmFja3M6bnVsbCxyZWdpc3RlcmVkU2Vzc2lvbkNhbGxiYWNrczpudWxsLHBhZ2VWaWV3Q291bnQ6bnVsbCxfX3Byb3BlcnRpZXM6bnVsbCxqcXVlcnlBY3RpdmU6ITAsaXNEMkNTaXRlOiEwLF9fcmVzZXRWOjkscmVzZXRTZWNvbmRQYXNzOiExLF9fb3V0cHV0RGl2TXNnOiExLF9fb3V0cHV0Q29uc29sZU1zZzohMSxhamF4TW5nOnthc3luYzohMCxfbGFzdFg6bnVsbCx4OmZ1bmN0aW9uKCl7dHJ5e2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIFhNTEh0dHBSZXF1ZXN0KXJldHVybiBuZXcgWE1MSHR0cFJlcXVlc3Q7Zm9yKHZhciBhPVsiTVNYTUwyLlhtbEh0dHAuNS4wIiwKCQkJIk1TWE1MMi5YbWxIdHRwLjQuMCIsIk1TWE1MMi5YbWxIdHRwLjMuMCIsIk1TWE1MMi5YbWxIdHRwLjIuMCIsIk1pY3Jvc29mdC5YbWxIdHRwIl0sYixkPTA7ZDxhLmxlbmd0aDtkKyspdHJ5e2I9bmV3IEFjdGl2ZVhPYmplY3QoYVtkXSk7YnJlYWt9Y2F0Y2goYyl7fX1jYXRjaChjKXt9cmV0dXJuIGJ9LF9zZW5kOmZ1bmN0aW9uKGEsYixkLGMsZSxoKXt0cnl7dmFyIGY9dGhpcy54KCk7dGhpcy5fbGFzdFg9ZjtmLm9wZW4oZCxhLGUpO3RyeXtmLmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIixmdW5jdGlvbihxKXsidW5kZWZpbmVkIiE9dHlwZW9mIGgmJm51bGwhPWgmJmgoZixmLnN0YXR1c1RleHQsRXJyb3IoZi5yZXNwb25zZVRleHQpKX0pfWNhdGNoKHEpe31mLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpezQ9PWYucmVhZHlTdGF0ZT9iKGYucmVzcG9uc2VUZXh0KToidW5kZWZpbmVkIiE9dHlwZW9mIGgmJm51bGwhPWgmJmgoZixmLnN0YXR1c1RleHQsRXJyb3IoZi5yZXNwb25zZVRleHQpKX07CgkJCSJQT1NUIj09ZCYmZi5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LXR5cGUiLCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKTtmLnNlbmQoYyl9Y2F0Y2gocSl7InVuZGVmaW5lZCIhPXR5cGVvZiBoJiZudWxsIT1oJiZoKGYsInVua25vd24iLHEpfX0sYWpheDpmdW5jdGlvbihhKXt2YXIgYj10aGlzO3RyeXtpZigidW5kZWZpbmVkIj09dHlwZW9mIGEudHlwZSYmKGEudHlwZT0iR0VUIiksInVuZGVmaW5lZCI9PXR5cGVvZiBhLmRhdGEmJihhLmRhdGE9e30pLHdpbmRvdy5qUXVlcnkmJiJ1bmRlZmluZWQiIT10eXBlb2YgJC5hamF4KSQuYWpheChhKS5kb25lKGZ1bmN0aW9uKGMpeyJ1bmRlZmluZWQiIT10eXBlb2YgYS5kb25lJiZhLmRvbmUoYyl9KS5mYWlsKGZ1bmN0aW9uKGMsZSxoKXsidW5kZWZpbmVkIiE9dHlwZW9mIGEuZmFpbCYmYS5mYWlsKGMsZSxoKX0pLmFsd2F5cyhmdW5jdGlvbigpeyJ1bmRlZmluZWQiIT10eXBlb2YgYS5hbHdheXMmJmEuYWx3YXlzKCl9KS5kb25lKGZ1bmN0aW9uKGMpeyJ1bmRlZmluZWQiIT0KCQl0eXBlb2YgYS5zdWNjZXNzJiZhLnN1Y2Nlc3MoYyl9KS5hbHdheXMoZnVuY3Rpb24oYyxlKXsidW5kZWZpbmVkIiE9dHlwZW9mIGEuY29tcGxldGUmJmEuY29tcGxldGUoYi5fbGFzdFgsInVuZGVmaW5lZCIhPXR5cGVvZiBiLl9sYXN0WC5zdGF0dXNUZXh0P2IuX2xhc3RYLnN0YXR1c1RleHQ6IiIpfSk7ZWxzZXt2YXIgZD1iLl9nZXQ7InBvc3QiPT1hLnR5cGUudG9Mb3dlckNhc2UoKSYmKGQ9Yi5fcG9zdCk7ZChhLnVybCxhLmRhdGEsZnVuY3Rpb24oYyl7InVuZGVmaW5lZCIhPXR5cGVvZiBhLmRvbmUmJmEuZG9uZShjKTsidW5kZWZpbmVkIiE9dHlwZW9mIGEuc3VjY2VzcyYmYS5zdWNjZXNzKGMpOyJ1bmRlZmluZWQiIT10eXBlb2YgYS5jb21wbGV0ZSYmYS5jb21wbGV0ZSgpOyJ1bmRlZmluZWQiIT10eXBlb2YgYS5hbHdheXMmJmEuYWx3YXlzKCl9LGIuYXN5bmMsZnVuY3Rpb24oYyxlLGgpeyJ1bmRlZmluZWQiIT10eXBlb2YgYS5mYWlsJiZhLmZhaWwoYyxlLGgpfSl9fWNhdGNoKGMpe2NvbnNvbGUmJgoJCWNvbnNvbGUubG9nJiZjb25zb2xlLmxvZygiVW5leHBlY3RlZCBlcnJvciBhY2Nlc3NpbmcgYWpheE1uZy5nZXQ6ICVzIixjLm1lc3NhZ2UpfX0sX2dldDpmdW5jdGlvbihhLGIsZCxjLGUpe3ZhciBoPVtdLGY7Zm9yKGYgaW4gYiloLnB1c2goZW5jb2RlVVJJQ29tcG9uZW50KGYpKyI9IitlbmNvZGVVUklDb21wb25lbnQoYltmXSkpO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgY3x8bnVsbD09YyljPSEwO2FjdGl2ZVVzZXJQcm9maWxlTW5nLmFqYXhNbmcuX3NlbmQoYSsiPyIraC5qb2luKCImIiksZCwiR0VUIixudWxsLGMsZSl9LF9wb3N0OmZ1bmN0aW9uKGEsYixkLGMsZSl7dmFyIGg9W10sZjtmb3IoZiBpbiBiKWgucHVzaChlbmNvZGVVUklDb21wb25lbnQoZikrIj0iK2VuY29kZVVSSUNvbXBvbmVudChiW2ZdKSk7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBjfHxudWxsPT1jKWM9ITA7YWN0aXZlVXNlclByb2ZpbGVNbmcuYWpheE1uZy5fc2VuZChhLGQsIlBPU1QiLGguam9pbigiJiIpLAoJCQljLGUpfSxnZXRTY3JpcHQ6ZnVuY3Rpb24oYSxiKXt0cnl7aWYod2luZG93LmpRdWVyeSYmInVuZGVmaW5lZCIhPXR5cGVvZiAkLmdldFNjcmlwdCkkLmdldFNjcmlwdChhLGIpO2Vsc2V7dmFyIGQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0IiksYz1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IilbMF07ZC5hc3luYz0xO2Qub25sb2FkPWQub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKGUsaCl7aWYoaHx8IWQucmVhZHlTdGF0ZXx8L2xvYWRlZHxjb21wbGV0ZS8udGVzdChkLnJlYWR5U3RhdGUpKWQub25sb2FkPWQub25yZWFkeXN0YXRlY2hhbmdlPW51bGwsZD12b2lkIDAsIWgmJmImJnNldFRpbWVvdXQoYiwwKX07ZC5zcmM9YTtjLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGQsYyl9fWNhdGNoKGUpe2NvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZygiVW5leHBlY3RlZCBlcnJvciByZXRyaWV2aW5nIGpzIHNjcmlwdC4gVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuOiAlcyIsCgkJCWUubWVzc2FnZSl9fX0sY29va2llTW5nOntyZWFkQ29va2llVmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGI9bnVsbDt0cnl7aWYod2luZG93LmpRdWVyeSYmInVuZGVmaW5lZCIhPXR5cGVvZiAkLmNvb2tpZSliPSQuY29va2llKGEpLCJ1bmRlZmluZWQiPT10eXBlb2YgYiYmKGI9bnVsbCk7ZWxzZXthKz0iPSI7Zm9yKHZhciBkPWRvY3VtZW50LmNvb2tpZS5zcGxpdCgiOyIpLGM9MDtjPGQubGVuZ3RoO2MrKyl7Zm9yKHZhciBlPWRbY107IiAiPT1lLmNoYXJBdCgwKTspZT1lLnN1YnN0cmluZygxLGUubGVuZ3RoKTtpZigwPT1lLmluZGV4T2YoYSkpe2I9ZS5zdWJzdHJpbmcoYS5sZW5ndGgsZS5sZW5ndGgpO2JyZWFrfX19fWNhdGNoKGgpe2NvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZygiVW5leHBlY3RlZCBlcnJvciByZWFkaW5nIGNvb2tpZTogJXMiLGgubWVzc2FnZSl9cmV0dXJuIGJ9LHNldENvb2tpZVZhbHVlOmZ1bmN0aW9uKGEsYixkLGMpe3RyeXtpZighMCE9PXRoaXMuZGlzYWJsZWQpe2lmKCJ1bmRlZmluZWQiPT0KCQkJdHlwZW9mIGR8fG51bGw9PWQpZD0iLyI7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBjfHxudWxsPT1jKWM9MDsidW5kZWZpbmVkIj09dHlwZW9mIGImJihiPW51bGwpO3ZhciBlPW5ldyBEYXRlO2Uuc2V0VGltZShlLmdldFRpbWUoKSs4NjRFNSpjKTt3aW5kb3cualF1ZXJ5JiYidW5kZWZpbmVkIiE9dHlwZW9mICQuY29va2llPyQuY29va2llKGEsYix7cGF0aDpkLHNlY3VyZTohMCxleHBpcmVzOjA9PWM\/IiI6ZX0pOihleHBpcmVzPTAhPWM\/IjsgZXhwaXJlcz0iK2UudG9HTVRTdHJpbmcoKToiIixkb2N1bWVudC5jb29raWU9YSsiPSIrYitleHBpcmVzKyI7IHNlY3VyZTsgcGF0aD0iK2QsYiYmYWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLmxvZ0Nvb2tpZShhLGIsYyxkKSl9fWNhdGNoKGgpe2NvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZygiVW5leHBlY3RlZCBlcnJvciBzZXR0aW5nIGNvb2tpZTogJXMiLGgubWVzc2FnZSl9fSxkZWxldGVDb29raWU6ZnVuY3Rpb24oYSl7dHJ5e3dpbmRvdy5qUXVlcnkmJgoJCSJ1bmRlZmluZWQiIT10eXBlb2YgJC5jb29raWU\/KCQuY29va2llKGEsbnVsbCksJC5jb29raWUoYSxudWxsLHtwYXRoOiIvIn0pKTp0aGlzLnNldENvb2tpZVZhbHVlKGEsbnVsbCwtMSl9Y2F0Y2goYil7Y29uc29sZSYmY29uc29sZS5sb2cmJmNvbnNvbGUubG9nKCJVbmV4cGVjdGVkIGVycm9yIGRlbGV0aW5nIGNvb2tpZTogJXMiLGIubWVzc2FnZSl9fSxsb2dDb29raWU6ZnVuY3Rpb24oYSxiLGQsYyxlKXsidW5kZWZpbmVkIj09PXR5cGVvZiBlJiYoZT01KTsidW5kZWZpbmVkIj09PXR5cGVvZiB3aW5kb3cuQ29va2llTG9nZ2VyP2UmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXthY3RpdmVVc2VyUHJvZmlsZU1uZy5jb29raWVNbmcubG9nQ29va2llKGEsYixkLGMsZS0xKX0sMTAwKTp3aW5kb3cuQ29va2llTG9nZ2VyLmxvZyhhLGIsZCxjKX19LF9fdXNlUHJveHk6ZnVuY3Rpb24oKXtyZXR1cm4hMT09PXRoaXMuaXNEMkNTaXRlPyExOiEwfSxfaXNCb3Q6ZnVuY3Rpb24oKXtyZXR1cm4vYm90fGdvb2dsZWJvdHxjcmF3bGVyfHNwaWRlcnxyb2JvdHxjcmF3bGluZy9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk\/CgkJITA6ITF9LGdldFN0YXRzVVJJOmZ1bmN0aW9uKCl7dmFyIGE9Ii9wcm94eV9zZDJjLyI7dHJ5eyExPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuaXNEMkNTaXRlJiYoYT0iaHR0cDovL3N0YXRzLmQyY21lZGlhLmNhLyIsImh0dHBzOiI9PXdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCYmKGE9Imh0dHBzOi8vc3Nsc3RhdHMuZDJjbWVkaWEuY2EvIikpfWNhdGNoKGIpe2NvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZygiVW5leHBlY3RlZCBlcnJvciBjYXVnaHQgaW4gZ2V0U3RhdHNVUkk6ICVzIixiLm1lc3NhZ2UpLGE9Imh0dHBzOi8vc3Nsc3RhdHMuZDJjbWVkaWEuY2EvIn1yZXR1cm4gYX0sZ2V0RlBVUkk6ZnVuY3Rpb24oKXtpZighMD09PXRoaXMuZGlzYWJsZWQpcmV0dXJuIiI7dmFyIGE9Ii9qcy9kMmN0Y2svZnByaW50LnYyLm1pbi5qcyI7dHJ5e2E9ITE9PT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5pc0QyQ1NpdGU\/bnVsbCE9d2luZG93LmxvY2F0aW9uJiYidW5kZWZpbmVkIiE9Cgl0eXBlb2Ygd2luZG93LmxvY2F0aW9uLmhyZWYmJi0xIT13aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKCJjcm0yLmQyY21lZGlhLmNhIik\/Imh0dHBzOi8vY3JtMi5kMmNtZWRpYS5jYS9hc3NldHMvanMvZDJjdGNrL2ZwcmludC52Mi5qcyI6Imh0dHBzOi8vd3d3LmF1dG9hdWJhaW5lLmNvbS9qcy9kMmN0Y2svZnByaW50LnYyLm1pbi5qcyI6ITA9PT10aGlzLl9fb3V0cHV0RGl2TXNnPyIvanMvZDJjdGNrL2ZwcmludC52Mi5qcyI6Ii9qcy9kMmN0Y2svZnByaW50LnYyLm1pbi5qcyJ9Y2F0Y2goYil7Y29uc29sZSYmY29uc29sZS5sb2cmJmNvbnNvbGUubG9nKCJVbmV4cGVjdGVkIGVycm9yIGNhdWdodCBpbiBnZXRGUFVSSTogJXMiLGIubWVzc2FnZSksYT0iL2pzL2QyY3Rjay9mcHJpbnQudjIubWluLmpzIn1yZXR1cm4gYX0sZ2V0U2Vzc2lvbklEOmZ1bmN0aW9uKCl7aWYobnVsbCE9YWN0aXZlVXNlclByb2ZpbGVNbmcuc2Vzc2lvbmlkKXJldHVybiBhY3RpdmVVc2VyUHJvZmlsZU1uZy5zZXNzaW9uaWQ7CgkJdmFyIGE9d2luZG93LmFjdGl2ZVNlc3Npb25JRDtpZigidW5kZWZpbmVkIj09dHlwZW9mIGF8fG51bGw9PWF8fDA9PWEpcmV0dXJuIGFjdGl2ZVVzZXJQcm9maWxlTW5nLnNlc3Npb25pZD13aW5kb3cuYWN0aXZlU2Vzc2lvbklELGFjdGl2ZVVzZXJQcm9maWxlTW5nLnNlc3Npb25pZDthPWFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5yZWFkQ29va2llVmFsdWUoInVzaWQiKTtyZXR1cm4gbnVsbCE9YT8oYWN0aXZlVXNlclByb2ZpbGVNbmcuc2Vzc2lvbmlkPWEsYWN0aXZlVXNlclByb2ZpbGVNbmcuc2Vzc2lvbmlkKTowfSxyZWdpc3RlckNhbGxiYWNrOmZ1bmN0aW9uKGEpe2lmKCEwPT09dGhpcy5kaXNhYmxlZCl7aWYobnVsbCE9YSl0cnl7YSgpfWNhdGNoKGIpe31yZXR1cm4hMX1udWxsPT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlcmVkQ2FsbGJhY2tzJiYoYWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJlZENhbGxiYWNrcz1bXSk7InVuZGVmaW5lZCIhPXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQmJgoJbnVsbCE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkJiYibm9uZSIhPWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZD9hKCk6YWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJlZENhbGxiYWNrcy5wdXNoKGEpfSxyZWdpc3RlclNlc3Npb25DYWxsYmFjazpmdW5jdGlvbihhKXtpZighMD09PXRoaXMuZGlzYWJsZWQpe2lmKG51bGwhPWEpdHJ5e2EoKX1jYXRjaChiKXt9cmV0dXJuITF9bnVsbD09YWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJlZFNlc3Npb25DYWxsYmFja3MmJihhY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlcmVkU2Vzc2lvbkNhbGxiYWNrcz1bXSk7InVuZGVmaW5lZCIhPXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZy5zZXNzaW9uaWQmJm51bGwhPWFjdGl2ZVVzZXJQcm9maWxlTW5nLnNlc3Npb25pZCYmMCE9YWN0aXZlVXNlclByb2ZpbGVNbmcuc2Vzc2lvbmlkP2EoKTphY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlcmVkU2Vzc2lvbkNhbGxiYWNrcy5wdXNoKGEpfSwKCV9fbm90aWZ5VVVJRDpmdW5jdGlvbigpe3RyeXtpZighMD09PXRoaXMuZGlzYWJsZWQpe3RyeXtiKCl9Y2F0Y2goZCl7fXJldHVybiExfWlmKG51bGwhPWFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyZWRDYWxsYmFja3Mpe2Zvcih2YXIgYT0wO2E8YWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJlZENhbGxiYWNrcy5sZW5ndGg7YSsrKXt2YXIgYj1hY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlcmVkQ2FsbGJhY2tzW2FdO2IoKX1hY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlcmVkQ2FsbGJhY2tzPW51bGx9fWNhdGNoKGQpe2NvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZygiVW5leHBlY3RlZCBlcnJvciBjYXVnaHQgaW4gX19ub3RpZnlVVUlEOiAlcyIsZC5tZXNzYWdlKX19LF9fbm90aWZ5U2Vzc2lvbklEOmZ1bmN0aW9uKCl7aWYoITA9PT10aGlzLmRpc2FibGVkKXJldHVybiExO3ZhciBhPWFjdGl2ZVVzZXJQcm9maWxlTW5nLmdldFNlc3Npb25JRCgpOwoJCWlmKCJ1bmRlZmluZWQiPT10eXBlb2YgYXx8bnVsbD09YXx8IjAiPT1hfHwwPT1hKXZhciBiPXNldEludGVydmFsKGZ1bmN0aW9uKCl7dHJ5e251bGw9PWFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyZWRTZXNzaW9uQ2FsbGJhY2tzP2NsZWFySW50ZXJ2YWwoYik6MCE9PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmdldFNlc3Npb25JRCgpJiYoY2xlYXJJbnRlcnZhbChiKSxhY3RpdmVVc2VyUHJvZmlsZU1uZy5fX25vdGlmeVNlc3Npb25JRCgpKX1jYXRjaChkKXtjb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coIk5vdGlmeSBzZXNzaW9uaWQgZmFpbGVkIHdpdGg6ICVzIixkLm1lc3NhZ2UpfX0sNTAwKTtpZihudWxsIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlcmVkU2Vzc2lvbkNhbGxiYWNrcyl0cnl7Zm9yKGE9MDthPGFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyZWRTZXNzaW9uQ2FsbGJhY2tzLmxlbmd0aDthKyspKDAsYWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJlZFNlc3Npb25DYWxsYmFja3NbYV0pKCk7CgkJCWFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyZWRTZXNzaW9uQ2FsbGJhY2tzPW51bGx9Y2F0Y2goZCl7Y29uc29sZSYmY29uc29sZS5sb2cmJmNvbnNvbGUubG9nKCJVbmV4cGVjdGVkIGVycm9yIGNhdWdodCBpbiBfX25vdGlmeVNlc3Npb25JRDogJXMiLGQubWVzc2FnZSl9fSxsb2dNc2c6ZnVuY3Rpb24oYSl7dHJ5e2lmKCEwPT09dGhpcy5kaXNhYmxlZClyZXR1cm4hMTshMD09PXRoaXMuX19vdXRwdXREaXZNc2cmJiQoZG9jdW1lbnQuYm9keSkuYXBwZW5kKCI8ZGl2PiIrYSsiPC9kaXY+Iik7ITA9PT10aGlzLl9fb3V0cHV0Q29uc29sZU1zZyYmY29uc29sZSYmY29uc29sZS5sb2cmJmNvbnNvbGUubG9nKGEpfWNhdGNoKGIpe2NvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZygiVW5leHBlY3RlZCBlcnJvciBjYXVnaHQgaW4gbWVzc2FnZSBsb2dnaW5nLiBIb3cgaXJvbmljOiAlcyIsYi5tZXNzYWdlKX19LGNoZWNrU2NoZWR1bGVkUmVzZXQ6ZnVuY3Rpb24oKXt2YXIgYT0KCQkhMTt0cnl7aWYoITA9PT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5kaXNhYmxlZClyZXR1cm4hMTt2YXIgYj1hY3RpdmVVc2VyUHJvZmlsZU1uZy5jb29raWVNbmcucmVhZENvb2tpZVZhbHVlKCJ1dWlkX3JzdCIpO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgYnx8bnVsbD09YiliPTA7YiE9dGhpcy5fX3Jlc2V0ViYmKGE9ITAsYWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLnNldENvb2tpZVZhbHVlKCJ1dWlkX3JzdCIsdGhpcy5fX3Jlc2V0ViwiLyIsNEUzKSl9Y2F0Y2goZCl7dGhpcy5sb2dNc2coIlVuZXhwZWN0ZWQgZXJyb3IgaW4gc2NoZWR1bGVkIHJlc2V0IGNoZWNrOiAiK2QubWVzc2FnZSl9cmV0dXJuIGF9LGdldEFjdGl2ZVByb2ZpbGVpZDpmdW5jdGlvbigpe2lmKG51bGwhPXRoaXMudWlkKXJldHVybiBudWxsPT13aW5kb3cuYWN0aXZlUHJvZmlsZUlEJiYod2luZG93LmFjdGl2ZVByb2ZpbGVJRD10aGlzLnVpZCksdGhpcy51aWQ7aWYoITA9PT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5kaXNhYmxlZClyZXR1cm4gbnVsbDsKCQl2YXIgYT10aGlzLmNvb2tpZU1uZy5yZWFkQ29va2llVmFsdWUoInV1aWQiKTtpZihudWxsIT1hJiYwPGEubGVuZ3RoKXJldHVybiB0aGlzLmFjdGl2ZVByb2ZpbGVJRD10aGlzLnVpZD1hLHRoaXMuX19maXJlUmVhZHlFdmVudCgpLHRoaXMudWlkO2E9YWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLnJlYWRDb29raWVWYWx1ZSgidXVpZF92bGQzIik7aWYobnVsbCE9YSYmMCE9YS5sZW5ndGgpe2FjdGl2ZVVzZXJQcm9maWxlTW5nLl9fbG9hZFVzZXJEYXRhQ29va2llKCk7YWN0aXZlVXNlclByb2ZpbGVNbmcuZW5zdXJlVmFsaWRJRCgpO2lmKG51bGwhPWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZClyZXR1cm4gYWN0aXZlVXNlclByb2ZpbGVNbmcudWlkO2FjdGl2ZVVzZXJQcm9maWxlTW5nLl9fbG9hZExvY2FsU3RvcmFnZUNvb2tpZSgpO2FjdGl2ZVVzZXJQcm9maWxlTW5nLmVuc3VyZVZhbGlkSUQoKTtpZihudWxsIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQpcmV0dXJuIGFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZDsKCQkJYWN0aXZlVXNlclByb2ZpbGVNbmcuX19sb2FkR2xvYmFsU3RvcmFnZUNvb2tpZSgpO2FjdGl2ZVVzZXJQcm9maWxlTW5nLmVuc3VyZVZhbGlkSUQoKTtpZihudWxsIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQpcmV0dXJuIGFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZDthY3RpdmVVc2VyUHJvZmlsZU1uZy5fX2xvYWRTZXNzaW9uU3RvcmFnZUNvb2tpZSgpO2FjdGl2ZVVzZXJQcm9maWxlTW5nLmVuc3VyZVZhbGlkSUQoKTtpZihudWxsIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQpcmV0dXJuIGFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZDthY3RpdmVVc2VyUHJvZmlsZU1uZy5fX2xvYWRGcm9tTG9jYWxEQigpO2FjdGl2ZVVzZXJQcm9maWxlTW5nLmVuc3VyZVZhbGlkSUQoKTtpZihudWxsIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQpcmV0dXJuIGFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZDthY3RpdmVVc2VyUHJvZmlsZU1uZy5fX2xvYWRGTFZDb29raWUoKX1lbHNlIHNldFRpbWVvdXQoImFjdGl2ZVVzZXJQcm9maWxlTW5nLl9fY29udGludWVMb2FkKDMpIiwKCQkJNTAwKTtyZXR1cm4gbnVsbH0sZW5zdXJlVmFsaWRJRDpmdW5jdGlvbigpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmd8fCJzdHJpbmciPT10eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcudWlkJiYwPT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQubGVuZ3RoKWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZD1udWxsfSxzZXRBY3RpdmVQcm9maWxlaWQ6ZnVuY3Rpb24oKXtpZihudWxsPT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWR8fCEwPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQpcmV0dXJuITE7YWN0aXZlVXNlclByb2ZpbGVNbmcuc2V0REJDb29raWUoKTthY3RpdmVVc2VyUHJvZmlsZU1uZy5zZXRQTkdDb29raWUoKTthY3RpdmVVc2VyUHJvZmlsZU1uZy5zZXRFVGFnQ29va2llKCk7YWN0aXZlVXNlclByb2ZpbGVNbmcuc2V0VXNlckRhdGFDb29raWUoKTthY3RpdmVVc2VyUHJvZmlsZU1uZy5zZXRMb2NhbFN0b3JhZ2VDb29raWUoKTthY3RpdmVVc2VyUHJvZmlsZU1uZy5zZXRHbG9iYWxTdG9yYWdlQ29va2llKCk7CgkJYWN0aXZlVXNlclByb2ZpbGVNbmcuc2V0U2Vzc2lvblN0b3JhZ2VDb29raWUoKTthY3RpdmVVc2VyUHJvZmlsZU1uZy5zZXRGTFZDb29raWUoKTthY3RpdmVVc2VyUHJvZmlsZU1uZy5fX25vdGlmeVVVSUQoKX0sX19jb250aW51ZUxvYWQ6ZnVuY3Rpb24oYSl7aWYoITA9PT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5kaXNhYmxlZClyZXR1cm4hMTthY3RpdmVVc2VyUHJvZmlsZU1uZy5lbnN1cmVWYWxpZElEKCk7aWYobnVsbCE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKWFjdGl2ZVVzZXJQcm9maWxlTW5nLl9fZmlyZVJlYWR5RXZlbnQoKTtlbHNlIHN3aXRjaChhKXtjYXNlIDE6YWN0aXZlVXNlclByb2ZpbGVNbmcuX19sb2FkRVRhZ0Nvb2tpZSgpO2JyZWFrO2Nhc2UgMjphY3RpdmVVc2VyUHJvZmlsZU1uZy5fX2xvYWRQTkdDb29raWUoKTticmVhaztkZWZhdWx0OmFjdGl2ZVVzZXJQcm9maWxlTW5nLl9fZmlyZU5vdEZvdW5kKCl9fSxfX2ZpcmVSZWFkeUV2ZW50OmZ1bmN0aW9uKCl7aWYobnVsbCE9CgkJYWN0aXZlVXNlclByb2ZpbGVNbmcub25yZWFkeSlhY3RpdmVVc2VyUHJvZmlsZU1uZy5vbnJlYWR5KGFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCk7YWN0aXZlVXNlclByb2ZpbGVNbmcuX19ub3RpZnlVVUlEKCl9LF9fZmlyZU5vdEZvdW5kOmZ1bmN0aW9uKCl7aWYobnVsbCE9YWN0aXZlVXNlclByb2ZpbGVNbmcub25ub3Rmb3VuZClhY3RpdmVVc2VyUHJvZmlsZU1uZy5vbm5vdGZvdW5kKCl9LHNldEZMVkNvb2tpZTpmdW5jdGlvbigpe2lmKG51bGwhPWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCYmIm5vbmUiIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQpe2lmKCEwPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQpcmV0dXJuITE7dHJ5e2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgbmF2aWdhdG9yLnBsdWdpbnMmJiJvYmplY3QiPT10eXBlb2YgbmF2aWdhdG9yLnBsdWdpbnNbIlNob2Nrd2F2ZSBGbGFzaCJdfHx3aW5kb3cuQWN0aXZlWE9iamVjdCYmMCE9bmV3IEFjdGl2ZVhPYmplY3QoIlNob2Nrd2F2ZUZsYXNoLlNob2Nrd2F2ZUZsYXNoIikpe2lmKCFhY3RpdmVVc2VyUHJvZmlsZU1uZy5zd2ZTdG9yZSYmCgkJKGFjdGl2ZVVzZXJQcm9maWxlTW5nLnN3ZlN0b3JlPSEwLCJ1bmRlZmluZWQiPT10eXBlb2YgU3dmU3RvcmUpKXthY3RpdmVVc2VyUHJvZmlsZU1uZy5hamF4TW5nLmdldFNjcmlwdCgiL2pzL3N3ZnN0b3JlLmpzIixhY3RpdmVVc2VyUHJvZmlsZU1uZy5zZXRGTFZDb29raWUpO3JldHVybn10cnl7dmFyIGE9bmV3IFN3ZlN0b3JlKHtuYW1lc3BhY2U6InVwcm9maWxlIixzd2ZfdXJsOiIvZmxhc2gvc3RvcmFnZS5zd2YiLG9ucmVhZHk6ZnVuY3Rpb24oKXthLnNldCgidWlkIixhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQpfSxvbmVycm9yOmZ1bmN0aW9uKCl7fX0pfWNhdGNoKGIpeyJ1bmRlZmluZWQiIT10eXBlb2YgY29uc29sZSYmbnVsbCE9Y29uc29sZSYmY29uc29sZS5sb2cmJmNvbnNvbGUubG9nKCJVbmFibGUgdG8gc2V0IEZMViBDb29raWUuIEVycm9yOiAiK2IubWVzc2FnZSl9fX1jYXRjaChiKXsidW5kZWZpbmVkIiE9dHlwZW9mIGNvbnNvbGUmJm51bGwhPWNvbnNvbGUmJmNvbnNvbGUubG9nJiYKCWNvbnNvbGUubG9nKCJNQUlOOiBVbmFibGUgdG8gc2V0IEZMViBDb29raWUuIEVycm9yOiAiK2IubWVzc2FnZSl9fX0sX19sb2FkRkxWQ29va2llOmZ1bmN0aW9uKCl7aWYobnVsbD09YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgbmF2aWdhdG9yLnBsdWdpbnMmJiJvYmplY3QiPT10eXBlb2YgbmF2aWdhdG9yLnBsdWdpbnNbIlNob2Nrd2F2ZSBGbGFzaCJdfHx3aW5kb3cuQWN0aXZlWE9iamVjdCYmMCE9bmV3IEFjdGl2ZVhPYmplY3QoIlNob2Nrd2F2ZUZsYXNoLlNob2Nrd2F2ZUZsYXNoIikpe2lmKCFhY3RpdmVVc2VyUHJvZmlsZU1uZy5zd2ZTdG9yZSYmKGFjdGl2ZVVzZXJQcm9maWxlTW5nLnN3ZlN0b3JlPSEwLCJ1bmRlZmluZWQiPT10eXBlb2YgU3dmU3RvcmUpKXthY3RpdmVVc2VyUHJvZmlsZU1uZy5hamF4TW5nLmdldFNjcmlwdCgiL2pzL3N3ZnN0b3JlLmpzIiwKCQlhY3RpdmVVc2VyUHJvZmlsZU1uZy5fX2xvYWRGTFZDb29raWUpO3JldHVybn10cnl7dmFyIGE9bmV3IFN3ZlN0b3JlKHtuYW1lc3BhY2U6InVwcm9maWxlIixzd2ZfdXJsOiIvZmxhc2gvc3RvcmFnZS5zd2YiLG9ucmVhZHk6ZnVuY3Rpb24oKXt2YXIgYj1hLmdldCgidWlkIik7InVuZGVmaW5lZCIhPXR5cGVvZiBiJiZudWxsIT1iJiYoYWN0aXZlVXNlclByb2ZpbGVNbmcudWlkPWIpO2FjdGl2ZVVzZXJQcm9maWxlTW5nLl9fY29udGludWVMb2FkKDEpfSxvbmVycm9yOmZ1bmN0aW9uKCl7YWN0aXZlVXNlclByb2ZpbGVNbmcuX19jb250aW51ZUxvYWQoMSl9fSl9Y2F0Y2goYil7fX1lbHNlIGFjdGl2ZVVzZXJQcm9maWxlTW5nLl9fY29udGludWVMb2FkKDEpfX0sX19sb2FkRnJvbUxvY2FsREI6ZnVuY3Rpb24oKXtpZihudWxsPT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQpe2lmKCEwPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQpcmV0dXJuITE7dHJ5e3dpbmRvdy5vcGVuRGF0YWJhc2UmJgoJZGF0YWJhc2UudHJhbnNhY3Rpb24oZnVuY3Rpb24oYSl7YS5leGVjdXRlU3FsKCJTRUxFQ1QgdmFsdWUgRlJPTSB1cHJvZmlsZSBXSEVSRSBuYW1lPT8iLFsidWlkIl0sZnVuY3Rpb24oYixkKXsxPD1kLnJvd3MubGVuZ3RoJiYoYWN0aXZlVXNlclByb2ZpbGVNbmcudWlkPWQucm93cy5pdGVtKDApLnZhbHVlKX0sZnVuY3Rpb24oYixkKXt9KX0pfWNhdGNoKGEpe319fSxzZXREQkNvb2tpZTpmdW5jdGlvbigpe2lmKG51bGwhPWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCYmIm5vbmUiIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQpe2lmKCEwPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQpcmV0dXJuITE7dHJ5e2lmKHdpbmRvdy5vcGVuRGF0YWJhc2Upe3ZhciBhPXdpbmRvdy5vcGVuRGF0YWJhc2UoInNxbGl0ZV91cHJvZmlsZSIsIiIsInVwcm9maWxlIiwxMDQ4NTc2KTsidW5kZWZpbmVkIiE9dHlwZW9mIHZhbHVlJiZhLnRyYW5zYWN0aW9uKGZ1bmN0aW9uKGIpe2IuZXhlY3V0ZVNxbCgiQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgdXByb2ZpbGUoaWQgSU5URUdFUiBOT1QgTlVMTCBQUklNQVJZIEtFWSBBVVRPSU5DUkVNRU5ULCB1aWQgVEVYVCBOT1QgTlVMTCwgdmFsdWUgVEVYVCBOT1QgTlVMTCwgVU5JUVVFICh1aWQpKSIsCgkJW10sZnVuY3Rpb24oZCxjKXt9LGZ1bmN0aW9uKGQsYyl7fSk7Yi5leGVjdXRlU3FsKCJJTlNFUlQgT1IgUkVQTEFDRSBJTlRPIHVwcm9maWxlKHVpZCwgdmFsdWUpIFZBTFVFUyg\/LCA\/KSIsWyJ1aWQiLGFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZF0sZnVuY3Rpb24oZCxjKXt9LGZ1bmN0aW9uKGQsYyl7fSl9KX19Y2F0Y2goYil7fX19LF9fbG9hZFBOR0Nvb2tpZTpmdW5jdGlvbigpe2lmKG51bGw9PWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCl7aWYoITA9PT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5kaXNhYmxlZClyZXR1cm4hMTt0cnl7aWYoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIikuZ2V0Q29udGV4dCl7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7YS5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iO2Euc3R5bGUucG9zaXRpb249ImFic29sdXRlIjthLndpZHRoPTIwMDthLmhlaWdodD0xO3ZhciBiPWEuZ2V0Q29udGV4dCgiMmQiKSxkPW5ldyBJbWFnZTsKCQlkLnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiI7ZC5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiO2Quc3JjPSIvaW1hZ2VzX2FwaS9kMmNpZ2NhY2hlMS5wbmciO2Qub25lcnJvcj1mdW5jdGlvbigpe2FjdGl2ZVVzZXJQcm9maWxlTW5nLl9fY29udGludWVMb2FkKDMpfTtkLm9ubG9hZD1mdW5jdGlvbigpe3RyeXtiLmRyYXdJbWFnZShkLDAsMCk7Zm9yKHZhciBjPWIuZ2V0SW1hZ2VEYXRhKDAsMCwyMDAsMSkuZGF0YSxlPSIiLGg9MCxmPWMubGVuZ3RoO2g8ZiYmMCE9Y1toXTtoKz00KXtlKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGNbaF0pO2lmKDA9PWNbaCsxXSlicmVhaztlKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGNbaCsxXSk7aWYoMD09Y1toKzJdKWJyZWFrO2UrPVN0cmluZy5mcm9tQ2hhckNvZGUoY1toKzJdKX0wPGUubGVuZ3RoJiYoYWN0aXZlVXNlclByb2ZpbGVNbmcudWlkPWUpfWNhdGNoKHEpe31hY3RpdmVVc2VyUHJvZmlsZU1uZy5fX2NvbnRpbnVlTG9hZCgzKX19fWNhdGNoKGMpe319fSwKCXNldFBOR0Nvb2tpZTpmdW5jdGlvbigpe2lmKG51bGwhPWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCYmIm5vbmUiIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQpe2lmKCEwPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQpcmV0dXJuITE7dmFyIGE9bmV3IEltYWdlO2Euc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIjthLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7YS5zcmM9Ii9pbWFnZXNfYXBpL2QyY2lnY2FjaGUxLnBuZz92YWw9IithY3RpdmVVc2VyUHJvZmlsZU1uZy51aWR9fSxfX2xvYWRFVGFnQ29va2llOmZ1bmN0aW9uKCl7aWYobnVsbD09YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO3RoaXMuYWpheE1uZy5hamF4KHt1cmw6Ii9pbWFnZXNfYXBpL2QyY2lnY2FjaGUyLnBuZyIsdHlwZToiR0VUIixzdWNjZXNzOmZ1bmN0aW9uKGEpe2FjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZD1hfSwKCQljb21wbGV0ZTpmdW5jdGlvbihhLGIpe2FjdGl2ZVVzZXJQcm9maWxlTW5nLl9fY29udGludWVMb2FkKDIpfX0pfX0sc2V0RVRhZ0Nvb2tpZTpmdW5jdGlvbigpe2lmKG51bGwhPWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCYmIm5vbmUiIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQpe2lmKCEwPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQpcmV0dXJuITE7dmFyIGE9bmV3IEltYWdlO2Euc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIjthLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7YS5zcmM9Ii9pbWFnZXNfYXBpL2QyY2lnY2FjaGUyLnBuZz92YWw9IithY3RpdmVVc2VyUHJvZmlsZU1uZy51aWR9fSxfX2xvYWRVc2VyRGF0YUNvb2tpZTpmdW5jdGlvbigpe2lmKG51bGw9PWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCl7aWYoITA9PT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5kaXNhYmxlZClyZXR1cm4hMTt0cnl7dmFyIGE9dGhpcy5jcmVhdGVFbGVtKCJkaXYiLCJ1c2VyZGF0YV9lbCIsCgkJMSk7YS5zdHlsZS5iZWhhdmlvcj0idXJsKCNkZWZhdWx0I3VzZXJEYXRhKSI7YS5sb2FkKCJ1aWQiKTthY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ9YS5nZXRBdHRyaWJ1dGUoInVpZCIpfWNhdGNoKGIpe319fSxzZXRVc2VyRGF0YUNvb2tpZTpmdW5jdGlvbigpe2lmKG51bGwhPWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCYmIm5vbmUiIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQpe2lmKCEwPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQpcmV0dXJuITE7dHJ5e3ZhciBhPXRoaXMuY3JlYXRlRWxlbSgiZGl2IiwidXNlcmRhdGFfZWwiLDEpO2Euc3R5bGUuYmVoYXZpb3I9InVybCgjZGVmYXVsdCN1c2VyRGF0YSkiO2Euc2V0QXR0cmlidXRlKCJ1aWQiLGFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCk7YS5zYXZlKCJ1aWQiKX1jYXRjaChiKXt9fX0sX19sb2FkTG9jYWxTdG9yYWdlQ29va2llOmZ1bmN0aW9uKCl7aWYobnVsbD09YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXtpZighMD09PQoJCWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO3RyeXt3aW5kb3cubG9jYWxTdG9yYWdlJiYoYWN0aXZlVXNlclByb2ZpbGVNbmcudWlkPWxvY2FsU3RvcmFnZS5nZXRJdGVtKCJ1aWQiKSl9Y2F0Y2goYSl7fX19LHNldExvY2FsU3RvcmFnZUNvb2tpZTpmdW5jdGlvbigpe2lmKG51bGwhPWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCYmIm5vbmUiIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQpe2lmKCEwPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQpcmV0dXJuITE7dHJ5e3dpbmRvdy5sb2NhbFN0b3JhZ2UmJmxvY2FsU3RvcmFnZS5zZXRJdGVtKCJ1aWQiLGFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCl9Y2F0Y2goYSl7fX19LF9fbG9hZEdsb2JhbFN0b3JhZ2VDb29raWU6ZnVuY3Rpb24oKXtpZihudWxsPT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQpe2lmKCEwPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQpcmV0dXJuITE7dHJ5e2lmKHdpbmRvdy5nbG9iYWxTdG9yYWdlKXJldHVybiB0aGlzLmdldEhvc3QoKSwKCQlldmFsKCJhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQgPSBnbG9iYWxTdG9yYWdlW2hvc3RdLnVpZCIpfWNhdGNoKGEpe319fSxzZXRHbG9iYWxTdG9yYWdlQ29va2llOmZ1bmN0aW9uKCl7aWYobnVsbCE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkJiYibm9uZSIhPWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCl7aWYoITA9PT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5kaXNhYmxlZClyZXR1cm4hMTt0cnl7d2luZG93Lmdsb2JhbFN0b3JhZ2UmJih0aGlzLmdldEhvc3QoKSxldmFsKCJnbG9iYWxTdG9yYWdlW2hvc3RdLnVpZCA9IGFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCIpKX1jYXRjaChhKXt9fX0sX19sb2FkU2Vzc2lvblN0b3JhZ2VDb29raWU6ZnVuY3Rpb24oKXtpZihudWxsPT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQpe2lmKCEwPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQpcmV0dXJuITE7dHJ5e3dpbmRvdy5zZXNzaW9uU3RvcmFnZSYmKGFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZD0KCQl3aW5kb3cuc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgidWlkIikpfWNhdGNoKGEpe319fSxzZXRTZXNzaW9uU3RvcmFnZUNvb2tpZTpmdW5jdGlvbigpe2lmKG51bGwhPWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCYmIm5vbmUiIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQpe2lmKCEwPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQpcmV0dXJuITE7dHJ5e3dpbmRvdy5zZXNzaW9uU3RvcmFnZSYmd2luZG93LnNlc3Npb25TdG9yYWdlLnNldEl0ZW0oInVpZCIsYWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKX1jYXRjaChhKXt9fX0scmVnaXN0ZXJQYWdlVmlldzpmdW5jdGlvbigpe2lmKCEwPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQpcmV0dXJuITA7bnVsbD09YWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJlZFBhZ2VWaWV3cyYmKGFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyZWRQYWdlVmlld3M9W10pO2Zvcih2YXIgYT0wO2E8YWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJlZFBhZ2VWaWV3cy5sZW5ndGg7YSsrKWlmKHdpbmRvdy5sb2NhdGlvbi5ocmVmPT0KCQlhY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlcmVkUGFnZVZpZXdzW2FdKXJldHVybiExO2FjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyZWRQYWdlVmlld3MucHVzaCh3aW5kb3cubG9jYXRpb24uaHJlZik7cmV0dXJuITB9LHJlZ2lzdGVyUGFnZVZpZXdFdmVudDpmdW5jdGlvbihhLGIsZCl7aWYoITA9PT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5kaXNhYmxlZClyZXR1cm4hMDtpZigidW5kZWZpbmVkIj09dHlwZW9mIGR8fG51bGw9PWQpZD0iIjthPWErInx8fCIrYisifHx8IitkO251bGw9PWFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyZWRFdmVudHMmJihhY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlcmVkRXZlbnRzPVtdKTtmb3IoYj0wO2I8YWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJlZEV2ZW50cy5sZW5ndGg7YisrKWlmKGE9PWFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyZWRFdmVudHNbYl0pcmV0dXJuITE7YWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJlZEV2ZW50cy5wdXNoKGEpOwoJCXJldHVybiEwfSxsb2dQYWdlVmlld0V2ZW50OmZ1bmN0aW9uKGEsYixkKXtpZighYWN0aXZlVXNlclByb2ZpbGVNbmcuX2lzQm90KCkpe2lmKCEwPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQpcmV0dXJuITE7aWYoYWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJQYWdlVmlld0V2ZW50KGEsYikpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgZHx8bnVsbD09ZClkPSIiO2lmKG51bGw9PWFjdGl2ZVVzZXJQcm9maWxlTW5nLnNlc3Npb25pZHx8MD09YWN0aXZlVXNlclByb2ZpbGVNbmcuc2Vzc2lvbmlkKWFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyU2Vzc2lvbkNhbGxiYWNrKGZ1bmN0aW9uKCl7YWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudChhLGIsZCl9KTtlbHNle3ZhciBjPTA7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3cubGFzdFZpZXdJRCl7dmFyIGU9YWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLnJlYWRDb29raWVWYWx1ZSgidXZpZXciKTsKCQludWxsIT1lJiYoYz1lKX1lbHNlIGM9d2luZG93Lmxhc3RQYWdlVmlld0lEOyJ1bmRlZmluZWQiPT10eXBlb2YgY3x8bnVsbD09Y3x8MD09Yz9jb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coIlVuYWJsZSB0byBpZGVudGlmeSBsYXN0IHZpZXcgaWQiKTooZT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5nZXRTdGF0c1VSSSgpLGM9e3NpZDphY3RpdmVVc2VyUHJvZmlsZU1uZy5nZXRTZXNzaW9uSUQoKSxhY3Rpb246ImV2ZW50Iix2aWV3aWQ6YyxldmVudDphLGVjYXRlZ29yeTpiLGFkZGVkSW5mbzoidW5kZWZpbmVkIiE9dHlwZW9mIGQ\/ZDoiIn0sYWN0aXZlVXNlclByb2ZpbGVNbmcuYWpheE1uZy5hamF4KHt1cmw6ZSsic2VydmljZS9zZXNzaW9uTW5nLnBocCIsdHlwZToiUE9TVCIsZGF0YTpjfSkpfX19fSxsb2dQYWdlVmlld0V4OmZ1bmN0aW9uKCl7dHJ5e2lmKCFhY3RpdmVVc2VyUHJvZmlsZU1uZy5faXNCb3QoKSYmYWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJQYWdlVmlldygpKXtpZighMD09PQoJCWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO3ZhciBhPW51bGw7InVuZGVmaW5lZCIhPXR5cGVvZiBnZXRVcmxWYXJzJiYoYT1nZXRVcmxWYXJzKCkpO2dldEN1c3RvbVZSQj1mdW5jdGlvbihrLHcpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgY3VzdG9tX3ZhcmlhYmxlcyYmbnVsbCE9Y3VzdG9tX3ZhcmlhYmxlcylmb3IodmFyIHUgaW4gY3VzdG9tX3ZhcmlhYmxlcyl7aWYodS5uYW1lPT1rKXJldHVybiB1LnZhbHVlfWVsc2UgcmV0dXJuIHd9O2dldENLVmFsdWU9ZnVuY3Rpb24oayx3KXt2YXIgdT1nZXRDdXN0b21WUkIoayxudWxsKTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHUmJm51bGwhPXUpcmV0dXJuIHU7dT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5jb29raWVNbmcucmVhZENvb2tpZVZhbHVlKGspO3JldHVybiJ1bmRlZmluZWQiPT10eXBlb2YgdXx8bnVsbD09dT9udWxsPT1hfHwidW5kZWZpbmVkIj09dHlwZW9mIGFba10\/InVuZGVmaW5lZCI9PXR5cGVvZiB3PwoJCSIiOnc6YVtrXTp1fTtnZXRVUkxWYWx1ZT1mdW5jdGlvbihrLHcpe2s9ay5yZXBsYWNlKC9bXFtdLywiXFxbIikucmVwbGFjZSgvW1xdXS8sIlxcXSIpO2s9KG5ldyBSZWdFeHAoIltcXD8mXSIraysiPShbXiYjXSopIikpLmV4ZWMod2luZG93LmxvY2F0aW9uLmhyZWYpO2s9bnVsbD09az9udWxsOmtbMV07cmV0dXJuInVuZGVmaW5lZCI9PXR5cGVvZiBrfHxudWxsPT1rfHwwPT1rLnRvU3RyaW5nKCkubGVuZ3RoP3c6a307dmFyIGI9IiIsZD0wLGM9IkZSRU5DSCIsZT1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IiksaD1mdW5jdGlvbihrKXt2YXIgdz17bWFrZToiIixtb2RlbDoiIix5ZWFyOiIiLHByaWNlOjAsc2l0ZWlkOjAsZGVhbGVyaWQ6MCxsYW5ndWFnZToiRlJFTkNIIn07aWYoIWspcmV0dXJuIHc7az1rLnNwbGl0KC9bOyZdLyk7Zm9yKHZhciB1PTA7dTxrLmxlbmd0aDt1Kyspe3ZhciBCPWtbdV0uc3BsaXQoIj0iKTtpZihCJiYyPT1CLmxlbmd0aCl7dmFyIEU9CgkJdW5lc2NhcGUoQlswXSk7Qj11bmVzY2FwZShCWzFdKTtCPUIucmVwbGFjZSgvXCsvZywiICIpO3dbRV09Qn19cmV0dXJuIHd9O2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgZSYmbnVsbCE9ZSlmb3IodmFyIGY9MDtmPGUubGVuZ3RoO2YrKyl7dmFyIHE9ZVtmXTtpZigtMSE9cS5zcmMuaW5kZXhPZigiL3VwbGlnaHQuanM\/Iikpe3ZhciBwPXEuc3JjLnJlcGxhY2UoL15bXlw\/XStcPz8vLCIiKSx5PWgocCk7dmFyIGw9eS5tYWtlO3ZhciBDPXkubW9kZWw7Yj15LnllYXI7dmFyIEE9eS5zaXRlaWQ7dmFyIHo9eS5kZWFsZXJpZDtkPXkucHJpY2U7Yz15Lmxhbmd1YWdlO2JyZWFrfX12YXIgbT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5nZXRTZXNzaW9uSUQoKTtlPTA7aWYoInVuZGVmaW5lZCI9PW18fDA9PW0pe209MDt2YXIgcj1hY3RpdmVVc2VyUHJvZmlsZU1uZy5jb29raWVNbmcucmVhZENvb2tpZVZhbHVlKCJ1c2lkX3RtcCIpO2lmKCJ1bmRlZmluZWQiPT10eXBlb2Ygcnx8bnVsbD09cil7dmFyIHg9CgkJbmV3IERhdGU7eC5zZXRUaW1lKHguZ2V0VGltZSgpKzcyRTUpO3ZhciBnPSI7IGV4cGlyZXM9Iit4LnRvR01UU3RyaW5nKCk7ZG9jdW1lbnQuY29va2llPSJ1c2lkX3RtcD0xIitnKyI7IHBhdGg9LyJ9ZWxzZSBlPSEwfXZhciBuPXdpbmRvdy5sb2NhdGlvbi5ocmVmO2lmKC0xPG4uaW5kZXhPZigic3RlcD1yZXN1bWUiKSl7dmFyIHQ9YWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLnJlYWRDb29raWVWYWx1ZSgic2Vzc2lkIik7bis9IiZzZXNzaWQ9IisoInVuZGVmaW5lZCIhPXR5cGVvZiB0fHxudWxsIT10P3Q6Ik5VTEwiKX12YXIgdj17c2lkOm0sdXVpZDp3aW5kb3cuYWN0aXZlUHJvZmlsZUlELHNpdGVpZDpBLGRlYWxlcmlkOnosdXRtU291cmNlOmdldFVSTFZhbHVlKCJ1dG1fc291cmNlIiwiIiksdXRtQ2FtcGFpZ246Z2V0VVJMVmFsdWUoInV0bV9jYW1wYWlnbiIsIm9yZ2FuaWMiKSx1dG1LZXl3b3JkOmdldENLVmFsdWUoInV0bV9rZXl3b3JkIiksdXRtTGFuZGluZzpnZXRDS1ZhbHVlKCJ1dG1fbGFuZGluZyIpLAoJCXV0bVNvdXJjZVJldGFyZ2V0aW5nOmdldENLVmFsdWUoInV0bV9zb3VyY2VfcmV0YXJnZXRpbmciKSx1dG1DYW1wYWlnblJldGFyZ2V0aW5nOmdldENLVmFsdWUoInV0bV9jYW1wYWlnbl9yZXRhcmdldGluZyIpLG1ha2U6bCxtb2RlbDpDLHllYXI6aXNOYU4oYik\/KG5ldyBEYXRlKS5nZXRGdWxsWWVhcigpOmIsbGFuZ3VhZ2U6YyxwYWdlOiJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93LmFjdGl2ZVBhZ2U\/IiI6d2luZG93LmFjdGl2ZVBhZ2UscHJpY2U6ZCxzbG9va3VwOmUsaHJlZjpufSxEPWFjdGl2ZVVzZXJQcm9maWxlTW5nLmdldFN0YXRzVVJJKCk7dj1KU09OLnN0cmluZ2lmeSh2KTt2PXYucmVwbGFjZUFsbCgiLyIsIlxcLyIpO3RoaXMuYWpheE1uZy5hamF4KHt1cmw6RCsic2VydmljZS9zZXNzaW9uTW5nLnBocCIsZGF0YTp2LGRvbmU6ZnVuY3Rpb24oayl7dHJ5e2lmKCJzdHJpbmciPT10eXBlb2YgayYmKGs9SlNPTi5wYXJzZShrKSksInVuZGVmaW5lZCIhPXR5cGVvZiBrJiYKCQludWxsIT1rJiYoay5jb25zdHJ1Y3Rvcj09W10uY29uc3RydWN0b3J8fGsuY29uc3RydWN0b3I9PXt9LmNvbnN0cnVjdG9yKSl7bT1rLnNlc3Npb25pZDtsYXN0Vmlld0lEPWsudmlld2lkO2FjdGl2ZVVzZXJQcm9maWxlTW5nLl9sb2FkUHJvcGVydGllcyhrLnByb3BlcnRpZXMpO3dpbmRvdy5hY3RpdmVTZXNzaW9uSUQ9bTt3aW5kb3cubGFzdFBhZ2VWaWV3SUQ9bGFzdFZpZXdJRDthY3RpdmVVc2VyUHJvZmlsZU1uZy5zZXNzaW9uaWQ9bTt2YXIgdz1uZXcgRGF0ZTt3LnNldFRpbWUody5nZXRUaW1lKCkrNzJFNSk7dmFyIHU9IjsgZXhwaXJlcz0iK3cudG9HTVRTdHJpbmcoKTtkb2N1bWVudC5jb29raWU9InVzaWQ9IittK3UrIjsgcGF0aD0vIjtkb2N1bWVudC5jb29raWU9InV2aWV3PSIrbGFzdFZpZXdJRCt1KyI7IHBhdGg9LyI7YWN0aXZlVXNlclByb2ZpbGVNbmcuX2RlbGV0ZUNvb2tpZSgidXNpZF90bXAiKTthY3RpdmVVc2VyUHJvZmlsZU1uZy5fX25vdGlmeVNlc3Npb25JRCgpfX1jYXRjaChCKXt9dHJ5e251bGwhPQoJCXNpdGVXZWJzb2NrZXRMaXN0ZW5lci5zaXRlaWQmJnNpdGVXZWJzb2NrZXRMaXN0ZW5lci5jb25uZWN0KCl9Y2F0Y2goQil7fX19KX19Y2F0Y2goayl7Y29uc29sZSYmY29uc29sZS5sb2cmJmNvbnNvbGUubG9nKCJVbmFibGUgdG8gc3RhdCBwYWdlIGR1ZSB0byBlcnJvcjogIitrLm1lc3NhZ2UpfX0sbG9nUGFnZVZpZXc6ZnVuY3Rpb24oKXt0cnl7aWYoIWFjdGl2ZVVzZXJQcm9maWxlTW5nLl9pc0JvdCgpJiZhY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlclBhZ2VWaWV3KCkpe2lmKCEwPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQpcmV0dXJuITE7aWYoITE9PT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5qcXVlcnlBY3RpdmUpcmV0dXJuIHRoaXMubG9nUGFnZVZpZXdFeCgpO3ZhciBhPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGEmJm51bGwhPWEpZm9yKHZhciBiPTA7YjxhLmxlbmd0aDtiKyspaWYoLTEhPQoJCWFbYl0uc3JjLmluZGV4T2YoIi91cGxpZ2h0LmpzPyIpKXJldHVybiB0aGlzLmxvZ1BhZ2VWaWV3RXgoKTt2YXIgZD1udWxsOyJ1bmRlZmluZWQiIT10eXBlb2YgZ2V0VXJsVmFycyYmKGQ9Z2V0VXJsVmFycygpKTtnZXRDdXN0b21WUkI9ZnVuY3Rpb24oZyxuKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGN1c3RvbV92YXJpYWJsZXMmJm51bGwhPWN1c3RvbV92YXJpYWJsZXMpZm9yKHZhciB0IGluIGN1c3RvbV92YXJpYWJsZXMpe2lmKHQubmFtZT09ZylyZXR1cm4gdC52YWx1ZX1lbHNlIHJldHVybiBufTtnZXRDS1ZhbHVlPWZ1bmN0aW9uKGcsbil7dmFyIHQ9bnVsbDt0cnl7dmFyIHY9Z2V0Q3VzdG9tVlJCKGcsbnVsbCk7InVuZGVmaW5lZCIhPXR5cGVvZiB2JiZudWxsIT12JiYodD12KTtpZihudWxsPT10JiYodD1hY3RpdmVVc2VyUHJvZmlsZU1uZy5jb29raWVNbmcucmVhZENvb2tpZVZhbHVlKGcpLG51bGw9PXQpKXtpZihudWxsPT1kfHwidW5kZWZpbmVkIj09dHlwZW9mIGRbZ10pcmV0dXJuInVuZGVmaW5lZCI9PQoJdHlwZW9mIG4\/IiI6bjt0PWRbZ119fWNhdGNoKEQpe2NvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZygiVW5leHBlY3RlZCBlcnJvciByZXRyaWV2aW5nIGNrVmFsdWUgLS0gJXMiLEQubWVzc2FnZSl9cmV0dXJuIHR9O2dldFVSTFZhbHVlPWZ1bmN0aW9uKGcsbil7Zz1nLnJlcGxhY2UoL1tcW10vLCJcXFsiKS5yZXBsYWNlKC9bXF1dLywiXFxdIik7Zz0obmV3IFJlZ0V4cCgiW1xcPyZdIitnKyI9KFteJiNdKikiKSkuZXhlYyh3aW5kb3cubG9jYXRpb24uaHJlZik7Zz1udWxsPT1nP251bGw6Z1sxXTtyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIGd8fG51bGw9PWd8fDA9PWcudG9TdHJpbmcoKS5sZW5ndGg\/bjpnfTthPWZ1bmN0aW9uKCl7aWYoITE9PT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5qcXVlcnlBY3RpdmUpcmV0dXJuW107dmFyIGc9W107dHJ5e3ZhciBuPVtdLHQ9ZnVuY3Rpb24oayx3KXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mICQoIiMiK2spLmF0dHIoImlkIikmJgoJKGs9JCgiIyIraykudmFsKCksInN0cmluZyI9PXR5cGVvZiBrJiYwPGsubGVuZ3RoJiYtMT09ay5pbmRleE9mKCIjIyIpKT9rOnd9O24ucHVzaCgicG9wdXAiKTtuLnB1c2goInBob25lIik7bi5wdXNoKCJsYXN0dmlld2VkIik7bi5wdXNoKCJleHByZXNzY2FyIik7Zm9yKHZhciB2PTA7djxuLmxlbmd0aDt2Kyspe3ZhciBEPXQoblt2XSsibWFrZSIsbnVsbCk7aWYobnVsbCE9RCl7Zy5wdXNoKEQpO2cucHVzaCh0KG5bdl0rIm1vZGVsIixudWxsKSk7Zy5wdXNoKHQoblt2XSsieWVhciIsbnVsbCkpO2JyZWFrfX19Y2F0Y2goayl7Zz1bXSxnLnB1c2goIiIpLGcucHVzaCgiIiksZy5wdXNoKCIiKX0wPT1nLmxlbmd0aCYmZy5wdXNoKCIiKTsxPT1nLmxlbmd0aCYmZy5wdXNoKCIiKTsyPT1nLmxlbmd0aCYmZy5wdXNoKCIiKTtyZXR1cm4gZ307dmFyIGM9Yj0iIixlPSIiO3RyeXt2YXIgaD1hKCk7Yj0wPGgubGVuZ3RoP2hbMF06YjtjPTE8aC5sZW5ndGg\/aFsxXTpjO2U9MjxoLmxlbmd0aD8KCQloWzJdOmV9Y2F0Y2goZyl7ZT1jPWI9IiJ9dHJ5e2lmKCJ1bmRlZmluZWQiIT10eXBlb2Ygc2VhcmNoQ3JpdGVyaWEmJm51bGwhPXNlYXJjaENyaXRlcmlhKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIGJ8fG51bGw9PWJ8fDA9PWIubGVuZ3RoKWI9LTE9PXNlYXJjaENyaXRlcmlhLm1ha2U\/IiI6c2VhcmNoQ3JpdGVyaWEubWFrZTtpZigidW5kZWZpbmVkIj09dHlwZW9mIGN8fG51bGw9PWN8fDA9PWMubGVuZ3RoKWM9LTE9PXNlYXJjaENyaXRlcmlhLm1vZGVsPyIiOnNlYXJjaENyaXRlcmlhLm1vZGVsO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgZXx8bnVsbD09ZXx8MD09ZS5sZW5ndGgpZT0tMT09c2VhcmNoQ3JpdGVyaWEueWVhcj8iIjpzZWFyY2hDcml0ZXJpYS55ZWFyfWlmKG51bGw9PWJ8fDA9PWIubGVuZ3RoKSJ1bmRlZmluZWQiIT10eXBlb2YgbWFrZSYmbnVsbCE9bWFrZSYmMDxtYWtlLmxlbmd0aCYmIjAiIT1tYWtlP2I9bWFrZTooYj0kKCIjcG9wdXBtYWtlIikudmFsKCksInVuZGVmaW5lZCI9PQoJdHlwZW9mIGImJihiPSQoIiNhY3RpdmVNYWtlIikudmFsKCkpLCJ1bmRlZmluZWQiPT10eXBlb2YgYiYmKGI9JCgiI2Nhck1ha2UiKS52YWwoKSksInVuZGVmaW5lZCI9PXR5cGVvZiBiJiYoYj0kKCdpbnB1dFtuYW1lPSJtYWtlIl0nKS52YWwoKSksInVuZGVmaW5lZCI9PXR5cGVvZiBiJiYoYj1nZXRDS1ZhbHVlKCJtYWtlIiwiIikpKTtpZihudWxsPT1jfHwwPT1jLmxlbmd0aCkidW5kZWZpbmVkIiE9dHlwZW9mIG1vZGVsJiZudWxsIT1tb2RlbCYmMDxtb2RlbC5sZW5ndGgmJiIwIiE9bW9kZWw\/Yz1tb2RlbDooYz0kKCIjcG9wdXBtb2RlbCIpLnZhbCgpLCJ1bmRlZmluZWQiPT10eXBlb2YgYyYmKGM9JCgiI2FjdGl2ZU1vZGVsIikudmFsKCkpLCJ1bmRlZmluZWQiPT10eXBlb2YgYyYmKGM9JCgiI2Nhck1vZGVsIikudmFsKCkpLCJ1bmRlZmluZWQiPT10eXBlb2YgYyYmKGM9JCgnaW5wdXRbbmFtZT0ibW9kZWwiXScpLnZhbCgpKSwidW5kZWZpbmVkIj09dHlwZW9mIGMmJihjPWdldENLVmFsdWUoIm1vZGVsIiwKCQkiIikpKTtpZihudWxsPT1lfHwwPT1lLmxlbmd0aCkidW5kZWZpbmVkIiE9dHlwZW9mIHllYXImJm51bGwhPXllYXImJiFpc05hTih5ZWFyKSYmMDx5ZWFyLmxlbmd0aCYmIjAiIT15ZWFyP2U9eWVhcjooZT0kKCIjcG9wdXB5ZWFyIikudmFsKCksInVuZGVmaW5lZCI9PXR5cGVvZiBlJiYoZT0kKCIjYWN0aXZlWWVhciIpLnZhbCgpKSwidW5kZWZpbmVkIj09dHlwZW9mIGUmJihlPSQoIiNjYXJZZWFyIikudmFsKCkpLCJ1bmRlZmluZWQiPT10eXBlb2YgZSYmKGU9JCgiI3llYXIiKS52YWwoKSksInVuZGVmaW5lZCI9PXR5cGVvZiBlJiYoZT0kKCdpbnB1dFtuYW1lPSJ5bWF4VGV4dCJdJykudmFsKCkpLCJ1bmRlZmluZWQiPT10eXBlb2YgZSYmKGU9JCgnaW5wdXRbbmFtZT0ieW1pblRleHQiXScpLnZhbCgpKSwidW5kZWZpbmVkIj09dHlwZW9mIGUmJihlPWdldENLVmFsdWUoInllYXIiLChuZXcgRGF0ZSkuZ2V0RnVsbFllYXIoKSkpKX1jYXRjaChnKXtjb25zb2xlJiZjb25zb2xlLmxvZyYmCgljb25zb2xlLmxvZygiVW5leHBlY3RlZCBlcnJvciBpZGVudGlmeWluZyBtYWtlLW1vZGVsLXllYXI6ICIrZy5tZXNzYWdlKSxudWxsPT1iJiYoYj0iIiksbnVsbD09YyYmKGM9IiIpLG51bGw9PWUmJihlPSIiKX12YXIgZj0wO2lmKCExIT09YWN0aXZlVXNlclByb2ZpbGVNbmcuanF1ZXJ5QWN0aXZlKXtpZigiVVNFRENBUlMiPT13aW5kb3cuYWN0aXZlUGFnZSl7dmFyIHE9MDskKCJkaXYuYm94MTcwIGRpdi5tYWluX3BpY2JveCBkaXYuYm94Ml9kZXRhaWxzX21pZCBkaXYuYm94Ml9kZXRhaWxzX3RleHQgc3BhbiIpLmVhY2goZnVuY3Rpb24oKXt2YXIgZz0kKHRoaXMpLnRleHQoKTstMSE9Zy5pbmRleE9mKCIkIikmJihxKyssZis9cGFyc2VJbnQoZy5yZXBsYWNlKCIkIiwiIikucmVwbGFjZSgiLCIsIiIpKSl9KTtmPTA8cT9mL3E6MDtpc05hTihmKSYmKGY9MCl9MCE9ZiYmIWlzTmFOKGYpfHwidW5kZWZpbmVkIj09dHlwZW9mICQoIiNjdXJyZW50Q2FyUHJpY2UiKS5hdHRyKCJpZCIpfHwKCShmPXBhcnNlSW50KCQoIiNjdXJyZW50Q2FyUHJpY2UiKS52YWwoKS5yZXBsYWNlKCIkIiwiIikucmVwbGFjZSgiLCIsIiIpKSk7MCE9ZiYmIWlzTmFOKGYpfHwidW5kZWZpbmVkIj09dHlwZW9mICQoIiNjYXJwcmljZSIpLmF0dHIoImlkIil8fChmPXBhcnNlSW50KCQoIiNjYXJwcmljZSIpLnZhbCgpLnJlcGxhY2UoIiQiLCIiKS5yZXBsYWNlKCIsIiwiIikpKTswIT1mJiYhaXNOYU4oZil8fCJ1bmRlZmluZWQiPT10eXBlb2YgJCgiI2NhclByaWNlIikuYXR0cigiaWQiKXx8KGY9cGFyc2VJbnQoJCgiI2NhclByaWNlIikudmFsKCkucmVwbGFjZSgiJCIsIiIpLnJlcGxhY2UoIiwiLCIiKSkpOzAhPWYmJiFpc05hTihmKXx8InVuZGVmaW5lZCI9PXR5cGVvZiAkKCIjZXhwcmVzc2NhcnByaWNlIikuYXR0cigiaWQiKXx8KGY9cGFyc2VJbnQoJCgiI2V4cHJlc3NjYXJwcmljZSIpLnZhbCgpLnJlcGxhY2UoIiQiLCIiKS5yZXBsYWNlKCIsIiwiIikpKTswIT1mJiYhaXNOYU4oZil8fCJ1bmRlZmluZWQiPT0KCXR5cGVvZiAkKCIjY2FycHJvb2ZjYXJwcmljZSIpLmF0dHIoImlkIil8fChmPXBhcnNlSW50KCQoIiNjYXJwcm9vZmNhcnByaWNlIikudmFsKCkucmVwbGFjZSgiJCIsIiIpLnJlcGxhY2UoIiwiLCIiKSkpOzAhPWYmJiFpc05hTihmKXx8InVuZGVmaW5lZCI9PXR5cGVvZiAkKCIjc2VhcmNoUmVzdWx0c0F2Z1ByaWNlIikuYXR0cigiaWQiKXx8KGY9cGFyc2VJbnQoJCgiI3NlYXJjaFJlc3VsdHNBdmdQcmljZSIpLnZhbCgpLnJlcGxhY2UoIiQiLCIiKS5yZXBsYWNlKCIsIiwiIikpKTswIT1mJiYhaXNOYU4oZil8fCJ1bmRlZmluZWQiPT10eXBlb2YgJCgnaW5wdXRbbmFtZT0icG1pbiJdJykuYXR0cigiaWQiKXx8KGY9cGFyc2VJbnQoJCgnaW5wdXRbbmFtZT0icG1pbiJdJykudmFsKCkucmVwbGFjZSgiJCIsIiIpLnJlcGxhY2UoIiwiLCIiKSkpOzAhPWYmJiFpc05hTihmKXx8InVuZGVmaW5lZCI9PXR5cGVvZiAkKCdpbnB1dFtuYW1lPSJwbWF4Il0nKS5hdHRyKCJpZCIpfHwoZj1wYXJzZUludCgkKCdpbnB1dFtuYW1lPSJwbWF4Il0nKS52YWwoKS5yZXBsYWNlKCIkIiwKCQkiIikucmVwbGFjZSgiLCIsIiIpKSk7MCE9ZiYmIWlzTmFOKGYpfHwidW5kZWZpbmVkIj09dHlwZW9mICQoIiNjYXJQcmljZSIpLmF0dHIoImlkIil8fChmPSQoIiNjYXJQcmljZSIpLmhhc0NsYXNzKCJib3gyX2RldGFpbHNfdGV4dDI1Iik\/cGFyc2VJbnQoJCgiI2NhclByaWNlIikuY2hpbGRyZW4oIjpmaXJzdCIpLnRleHQoKS5yZXBsYWNlKCIkIiwiIikucmVwbGFjZSgiLCIsIiIpKTpwYXJzZUludCgkKCIjY2FyUHJpY2UiKS50ZXh0KCkucmVwbGFjZSgiJCIsIiIpLnJlcGxhY2UoIiwiLCIiKSkpO2lzTmFOKGYpJiYoZj0wKTt2YXIgcD0wLHk9MDsidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdy5hY3RpdmVTaXRlSUQmJm51bGwhPXdpbmRvdy5hY3RpdmVTaXRlSUQmJjAhPXdpbmRvdy5hY3RpdmVTaXRlSUQ\/cD13aW5kb3cuYWN0aXZlU2l0ZUlEOihwPSQoIiNzaXRlSUQiKS52YWwoKSwidW5kZWZpbmVkIj09dHlwZW9mIHAmJihwPSQoIiN0b3BzaXRlaWQiKS52YWwoKSksInVuZGVmaW5lZCI9PQoJdHlwZW9mIHAmJihwPTApKTsidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdy5hY3RpdmVEZWFsZXJJRCYmKHk9d2luZG93LmFjdGl2ZVNpdGVJRCk7dmFyIGw9YWN0aXZlVXNlclByb2ZpbGVNbmcuZ2V0U2Vzc2lvbklEKCksQz0wO2lmKCJ1bmRlZmluZWQiPT1sfHwwPT1sfHwiMCI9PWwpaWYobD0wLCJ1bmRlZmluZWQiPT10eXBlb2YgJC5jb29raWUoInVzaWRfdG1wIikpe3ZhciBBPW5ldyBEYXRlO0Euc2V0VGltZShBLmdldFRpbWUoKSs3MkU1KTt2YXIgej0iOyBleHBpcmVzPSIrQS50b0dNVFN0cmluZygpO2RvY3VtZW50LmNvb2tpZT0idXNpZF90bXA9MSIreisiOyBwYXRoPS8ifWVsc2UgQz0hMDt2YXIgbT13aW5kb3cubG9jYXRpb24uaHJlZjstMTxtLmluZGV4T2YoInN0ZXA9cmVzdW1lIikmJihtKz0iJnNlc3NpZD0iKygidW5kZWZpbmVkIiE9dHlwZW9mICQuY29va2llKCJzZXNzaWQiKT8kLmNvb2tpZSgic2Vzc2lkIik6Ik5VTEwiKSl9dmFyIHI9e3NpZDpsLHV1aWQ6YWN0aXZlVXNlclByb2ZpbGVNbmcuZ2V0QWN0aXZlUHJvZmlsZWlkKCksCgkJc2l0ZWlkOnAsZGVhbGVyaWQ6eSx1dG1Tb3VyY2U6Z2V0VVJMVmFsdWUoInV0bV9zb3VyY2UiLCIiKSx1dG1DYW1wYWlnbjpnZXRVUkxWYWx1ZSgidXRtX2NhbXBhaWduIiwib3JnYW5pYyIpLHV0bUtleXdvcmQ6Z2V0Q0tWYWx1ZSgidXRtX2tleXdvcmQiKSx1dG1MYW5kaW5nOmdldENLVmFsdWUoInV0bV9sYW5kaW5nIiksdXRtU291cmNlUmV0YXJnZXRpbmc6Z2V0Q0tWYWx1ZSgidXRtX3NvdXJjZV9yZXRhcmdldGluZyIpLHV0bUNhbXBhaWduUmV0YXJnZXRpbmc6Z2V0Q0tWYWx1ZSgidXRtX2NhbXBhaWduX3JldGFyZ2V0aW5nIiksbWFrZTpiLG1vZGVsOmMseWVhcjppc05hTihlKT8obmV3IERhdGUpLmdldEZ1bGxZZWFyKCk6ZSxsYW5ndWFnZTokKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCkscGFnZToidW5kZWZpbmVkIj09dHlwZW9mIHdpbmRvdy5hY3RpdmVQYWdlPyIiOndpbmRvdy5hY3RpdmVQYWdlLHByaWNlOmYsc2xvb2t1cDpDLGhyZWY6bX0seD1hY3RpdmVVc2VyUHJvZmlsZU1uZy5nZXRTdGF0c1VSSSgpOwoJCXI9SlNPTi5zdHJpbmdpZnkocik7cj1yLnJlcGxhY2VBbGwoIi8iLCJcXC8iKTt0aGlzLmFqYXhNbmcuYWpheCh7dHlwZToiUE9TVCIsdXJsOngrInNlcnZpY2Uvc2Vzc2lvbk1uZy5waHAiLGNvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04IixkYXRhOnIsZG9uZTpmdW5jdGlvbihnKXsic3RyaW5nIj09dHlwZW9mIGcmJihnPUpTT04ucGFyc2UoZykpOyJ1bmRlZmluZWQiPT10eXBlb2YgZ3x8bnVsbD09Z3x8Zy5jb25zdHJ1Y3RvciE9W10uY29uc3RydWN0b3ImJmcuY29uc3RydWN0b3IhPXt9LmNvbnN0cnVjdG9yfHwobD1nLnNlc3Npb25pZCxsYXN0Vmlld0lEPWcudmlld2lkLGFjdGl2ZVVzZXJQcm9maWxlTW5nLl9sb2FkUHJvcGVydGllcyhnLnByb3BlcnRpZXMpLHdpbmRvdy5hY3RpdmVTZXNzaW9uSUQ9bCx3aW5kb3cubGFzdFBhZ2VWaWV3SUQ9bGFzdFZpZXdJRCxhY3RpdmVVc2VyUHJvZmlsZU1uZy5zZXNzaW9uaWQ9bCxhY3RpdmVVc2VyUHJvZmlsZU1uZy5jb29raWVNbmcuc2V0Q29va2llVmFsdWUoInVzaWQiLAoJCQkJbCwiLyIsMiksYWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLnNldENvb2tpZVZhbHVlKCJ1dmlldyIsbGFzdFZpZXdJRCwiLyIsMiksYWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLmRlbGV0ZUNvb2tpZSgidXNpZF90bXAiKSxhY3RpdmVVc2VyUHJvZmlsZU1uZy5fX25vdGlmeVNlc3Npb25JRCgpKX0sZmFpbDpmdW5jdGlvbihnLG4sdCl7Y29uc29sZSYmY29uc29sZS5sb2cmJmNvbnNvbGUubG9nKCJVbmFibGUgdG8gbG9nIHBhZ2Ugdmlldy4gRXJyb3I6ICIrdC5tZXNzYWdlKX0sYWx3YXlzOmZ1bmN0aW9uKCl7fX0pfX1jYXRjaChnKXtjb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coIlVuYWJsZSB0byBzdGF0IHBhZ2UgZHVlIHRvIGVycm9yOiAiK2cubWVzc2FnZSl9fSxfbG9hZFByb3BlcnRpZXM6ZnVuY3Rpb24oYSl7dHJ5eyJ1bmRlZmluZWQiIT10eXBlb2YgYSYmbnVsbCE9YSYmKGFjdGl2ZVVzZXJQcm9maWxlTW5nLl9fcHJvcGVydGllcz1hLGFjdGl2ZVVzZXJQcm9maWxlTW5nLnBhZ2VWaWV3Q291bnQ9CgkJYS5wYWdldmlld3MpfWNhdGNoKGIpe319LGdldFByb3BlcnR5OmZ1bmN0aW9uKGEsYil7cmV0dXJuInVuZGVmaW5lZCI9PXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZy5fX3Byb3BlcnRpZXN8fG51bGw9PWFjdGl2ZVVzZXJQcm9maWxlTW5nLl9fcHJvcGVydGllcz9udWxsOiJ1bmRlZmluZWQiPT10eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcuX19wcm9wZXJ0aWVzW2FdPyJ1bmRlZmluZWQiIT10eXBlb2YgYj9iOiIiOmFjdGl2ZVVzZXJQcm9maWxlTW5nLl9fcHJvcGVydGllc1thXX0sYWRkUHJvcGVydHk6ZnVuY3Rpb24oYSxiLGQpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgYXx8bnVsbD09YXx8MD09YS5sZW5ndGh8fCJ1bmRlZmluZWQiPT10eXBlb2YgYnx8bnVsbD09Ynx8InVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3cuYWN0aXZlUHJvZmlsZUlEKXJldHVybiBudWxsOyJ1bmRlZmluZWQiPT10eXBlb2YgZCYmKGQ9IlVQREFURSIpO2FjdGl2ZVVzZXJQcm9maWxlTW5nLmdldFN0YXRzVVJJKCk7CgkJdGhpcy5hamF4TW5nLmFqYXgoe3R5cGU6IkdFVCIsYWN0aW9uOiJhZGRwcm9wZXJ0eSIsdXVpZDphY3RpdmVVc2VyUHJvZmlsZU1uZy5nZXRBY3RpdmVQcm9maWxlaWQoKSxzaWQ6YWN0aXZlVXNlclByb2ZpbGVNbmcuZ2V0U2Vzc2lvbklEKCkscG5hbWU6YSxwdmFsdWU6YixwbW9kZTpkfSk7cmV0dXJuITB9LHRhZ0Jyb3dzZXI6ZnVuY3Rpb24oYSxiKXt0cnl7dmFyIGQ9YSxjPXRoaXM7aWYoITA9PT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5kaXNhYmxlZClyZXR1cm4hMTtpZigidW5kZWZpbmVkIj09dHlwZW9mIGF8fG51bGw9PWEpZD1mdW5jdGlvbihoKXt0cnl7dmFyIGY9bmV3IFN0cmluZyhoKTtmPWYudHJpbSgpO2lmKDA8Zi5sZW5ndGgpe2MubG9nTXNnKCJUYWdnZWQgd2l0aCB1dWlkID0+ICIrZik7dmFyIHE9Yy5nZXRBY3RpdmVQcm9maWxlaWQoKTthY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ9Zi50cmltKCk7bnVsbCE9cSYmInVuZGVmaW5lZCIhPXR5cGVvZiBxLmxlbmd0aCYmCgkwPHEubGVuZ3RoJiZhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQhPXEmJmMuY29va2llTW5nLnNldENvb2tpZVZhbHVlKCJ1dWlkX3YxIixxLCIvIiwxODApO2MuY29va2llTW5nLnNldENvb2tpZVZhbHVlKCJ1dWlkIixhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQsIi8iLDVFMyk7Yy5jb29raWVNbmcuc2V0Q29va2llVmFsdWUoInV1aWRfdmxkMyIsITAsIi8iLDVFMyk7Yy5zZXRBY3RpdmVQcm9maWxlaWQoKX19Y2F0Y2gocCl7Yy5sb2dNc2coIlVuZXhwZWN0ZWQgZXJyb3IgcmV0dXJuZWQgZnJvbSB0YWdnaW5nOiAiK3AubWVzc2FnZSl9fTt0aGlzLmxvZ01zZygiR2VuZXJhdGluZyBmaW5nZXJwcmludCIpO3ZhciBlPXRoaXMuZ2V0RlBVUkkoKTtjLmFqYXhNbmcuZ2V0U2NyaXB0KGUsZnVuY3Rpb24oKXt0cnl7dmFyIGg9ZnVuY3Rpb24obCl7dHJ5e2MubG9nTXNnKCJGaW5nZXJwcmludGVkOiAiK2wpO3ZhciBDPWMuZ2V0QWN0aXZlUHJvZmlsZWlkKCksQT1lbmNvZGVVUkkod2luZG93LmxvY2F0aW9uLm9yaWdpbik7CgkJaWYoInVuZGVmaW5lZCI9PXR5cGVvZiBsfHxudWxsPT1sKXJldHVybiExO3ZhciB6PSExO2FjdGl2ZVVzZXJQcm9maWxlTW5nLmlzRDJDU2l0ZSYmMz09d2luZG93LmFjdGl2ZVNpdGVJRCYmKHo9ITApO2MuY29va2llTW5nLnNldENvb2tpZVZhbHVlKCJ1dWZwIixsLCIvIiw1RTMpO3ZhciBtPXtkOkEsZnAxOmwuc3Vic3RyaW5nKDAsOCksZnAyOmwuc3Vic3RyaW5nKDgsMTYpLGZwMzpsLnN1YnN0cmluZygxNiwyNCksZnA0Omwuc3Vic3RyaW5nKDI0LDMyKSx1aWQ6QyxhY3Rpb246InVwZ3JhZGVmcCIsZGJtOnosdjphY3RpdmVVc2VyUHJvZmlsZU1uZy5fX3Jlc2V0Vn0scj1hY3RpdmVVc2VyUHJvZmlsZU1uZy5nZXRTdGF0c1VSSSgpO2MubG9nTXNnKHIrInNlcnZpY2UvZDJjLnVwZ3JhZGUudjYuZnAuanMiKTtjLmxvZ01zZyhKU09OLnN0cmluZ2lmeShtKSk7Yy5hamF4TW5nLmFqYXgoe3VybDpyKyJzZXJ2aWNlL2QyYy51cGdyYWRlLnY2LmZwLmpzIix0eXBlOiJHRVQiLGRhdGE6bSwKCQkJZG9uZTpmdW5jdGlvbih4KXt0cnl7Yy5sb2dNc2coIlVVSUQgYWZ0ZXIgdXByb2ZpbGUgdXBkYXRlOiAiK3gpLCJ1bmRlZmluZWQiIT10eXBlb2YgZCYmbnVsbCE9ZD9kKHgpOmMuY29va2llTW5nLnNldENvb2tpZVZhbHVlKCJ1dWlkIix4LCIvIiw1RTMpLCJ1bmRlZmluZWQiIT10eXBlb2YgYiYmbnVsbCE9YiYmYigpfWNhdGNoKGcpe319fSl9Y2F0Y2goeCl7Yy5sb2dNc2coIlVuZXhwZWN0ZWQgZXJyb3IgZXhlY3V0aW5nIHRhZ01lIHN0ZXA6ICIreC5tZXNzYWdlKX19LGY9ITE7dHJ5e25hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZigiV2luIiksbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJNYWMiKSxuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIkxpbnV4IiksbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJBbmRyb2lkIiksLTEhPW5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZigibGlrZSBNYWMiKSYmKGY9ITApLGxvY2F0aW9uLnByb3RvY29sLmluZGV4T2YoImh0dHBzIil9Y2F0Y2gobCl7fXZhciBxPQoJCXtwcmVwcm9jZXNzb3I6bnVsbCxhdWRpbzp7dGltZW91dDoxRTMsZXhjbHVkZUlPUzExOmZ9LGZvbnRzOntzd2ZDb250YWluZXJJZDoiZGN0a2RpdmZwMiIsc3dmUGF0aDoiZmxhc2gvY29tcGlsZWQvRm9udExpc3Quc3dmIix1c2VyRGVmaW5lZEZvbnRzOltdLGV4dGVuZGVkSnNGb250czohMX0sc2NyZWVuOntkZXRlY3RTY3JlZW5PcmllbnRhdGlvbjohMH0scGx1Z2luczp7c29ydFBsdWdpbnNGb3I6Wy9wYWxlbW9vbi9pXSxleGNsdWRlSUU6ITF9LGV4dHJhQ29tcG9uZW50czpbXSxOT1RfQVZBSUxBQkxFOiJub3QgYXZhaWxhYmxlIixFUlJPUjoiZXJyb3IiLEVYQ0xVREVEOiJleGNsdWRlZCJ9LHA9ITE7bnVsbCE9d2luZG93JiZudWxsIT13aW5kb3cubG9jYXRpb24mJiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93LmxvY2F0aW9uLmhyZWYmJigtMTx3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKCJkMmNkZWJ1Zz0xIil8fC0xIT13aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKCJjcm0yLmQyY21lZGlhLmNhIikpJiYKCShwPSEwKTt2YXIgeT1mdW5jdGlvbihsKXt0cnl7dmFyIEM9ZnVuY3Rpb24oeil7ej16Lm1hcChmdW5jdGlvbihtKXt2YXIgcj0iIjt0cnl7c3dpdGNoKHAmJmNvbnNvbGUubG9nKG0ua2V5LnRvTG93ZXJDYXNlKCkpLG0ua2V5LnRvTG93ZXJDYXNlKCkpe2Nhc2UgImNhbnZhcyI6Y2FzZSAid2ViZ2wiOmNhc2UgImFkYmxvY2siOnI9IiI7YnJlYWs7Y2FzZSAidXNlcmFnZW50IjppZigwPG0udmFsdWUubGVuZ3RoJiYtMSE9bS52YWx1ZS5pbmRleE9mKCIgIikpZm9yKHZhciB4PW0udmFsdWUuc3BsaXQoIiAiKSxnPTA7Zzx4Lmxlbmd0aDtnKyspe3ZhciBuPXhbZ107aWYoLTEhPW4uaW5kZXhPZigiLyIpKXt2YXIgdD1uLnNwbGl0KCIvIik7cis9dFswXX1lbHNlLTE9PW4uaW5kZXhPZigiLiIpJiYocis9bil9cCYmY29uc29sZS5sb2coIlVzZXIgQWdlbnQgLS0gIityKTticmVhaztkZWZhdWx0OiJ1bmRlZmluZWQiIT10eXBlb2YgQXJyYXkuaXNBcnJheSYmQXJyYXkuaXNBcnJheShtLnZhbHVlKXx8CgltLnZhbHVlLmNvbnN0cnVjdG9yPT09QXJyYXk\/KG0udmFsdWUuc29ydCgpLHI9bS52YWx1ZS5qb2luKCkpOnI9bS52YWx1ZX19Y2F0Y2godil7Y29uc29sZSYmY29uc29sZS5sb2cmJmNvbnNvbGUubG9nKCJGUCBGYWlsZWQgLS0gJXMgLSAlbyIsdi5tZXNzYWdlLG0pfWlmKCJ1bmRlZmluZWQiPT10eXBlb2Ygcnx8bnVsbD09cilyPSIiO3JldHVybiByfSk7ei5zb3J0KCk7cmV0dXJuIHp9KGwpO3AmJmNvbnNvbGUubG9nKCJ0byBoYXNoOiAlbyIsQyk7dmFyIEE9RmluZ2VycHJpbnQyLng2NGhhc2gxMjgoQy5qb2luKCIiKSwzMSk7cCYmY29uc29sZS5sb2coIkZQID0+ICVzIixBKTtoKEEpO2MubG9nTXNnKCJGaW5nZXJwcmludDogIitBKX1jYXRjaCh6KXtjb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coIkZQMiBGYWlsZWQgLS0gJXMiLHoubWVzc2FnZSl9fTt3aW5kb3cucmVxdWVzdElkbGVDYWxsYmFjaz9yZXF1ZXN0SWRsZUNhbGxiYWNrKGZ1bmN0aW9uKCl7dHJ5e0ZpbmdlcnByaW50Mi5nZXQocSwKCQl5KX1jYXRjaChsKXtjLmxvZ01zZygiMS5VbmFibGUgdG8gaW5zdGFudGlhdGUgRlAyLiBFcnJvcjogIitsLm1lc3NhZ2UpfX0pOnNldFRpbWVvdXQoZnVuY3Rpb24oKXt0cnl7RmluZ2VycHJpbnQyLmdldChxLHkpfWNhdGNoKGwpe2MubG9nTXNnKCIyLlVuYWJsZSB0byBpbnN0YW50aWF0ZSBGUDIuIEVycm9yOiAiK2wubWVzc2FnZSl9fSw1MDApfWNhdGNoKGwpe2MubG9nTXNnKCJVbmV4cGVjdGVkIGVycm9yIGV4ZWN1dGluZyBmaXJzdCBzdGVwOiAiK2wubWVzc2FnZSl9fSl9Y2F0Y2goaCl7Yy5sb2dNc2coIlVuZXhwZWN0ZWQgZXJyb3IgZXhlY3V0aW5nIGZpcnN0IHN0ZXA6ICIraC5tZXNzYWdlKX19LHVwZGF0ZUZQOmZ1bmN0aW9uKCl7dHJ5e2lmKCEwPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQpcmV0dXJuITE7dGhpcy5sb2dNc2coIlN0YXJ0aW5nIFNhZmFyaSBSdW4iKTtpZighMT09PXRoaXMucmVzZXRTZWNvbmRQYXNzKXt0aGlzLnJlc2V0U2Vjb25kUGFzcz0KCQkhMDt0aGlzLmxvZ01zZygiU3RhcnRpbmcgZmlyc3QgcGFzcyIpO3ZhciBhPXRoaXMuY29va2llTW5nLnJlYWRDb29raWVWYWx1ZSgidXVpZCIpLGI9dGhpcy5jb29raWVNbmcucmVhZENvb2tpZVZhbHVlKCJ1dWlkX2lvc18yIik7dGhpcy5sb2dNc2coIlVVSUQuICIrYSsiIC0tIElPU1JFU0VULiAiK2IpO251bGw9PWF8fG51bGw9PWI\/KHRoaXMubG9nTXNnKCJEcm9wcGluZyByZXNldCBjb29raWUiKSx0aGlzLmNvb2tpZU1uZy5zZXRDb29raWVWYWx1ZSgidXVpZF9pb3NfMiIsMSwiLyIsNUUzKSx0aGlzLnRhZ0Jyb3dzZXIobnVsbCkpOih0aGlzLmxvZ01zZygiU2Vjb25kIHBhc3MsIG5vdGhpbmcgdG8gZG8iKSx3aW5kb3cuX19fZDJjQ1RLTWV0aG9kKCkpfWVsc2Ugd2luZG93Ll9fX2QyY0NUS01ldGhvZCgpfWNhdGNoKGQpe3RoaXMubG9nTXNnKCJVbmV4cGVjdGVkIGVycm9yIHVwZGF0aW5nIG1vYmlsZSBjb29raWU6ICIrZC5tZXNzYWdlKX19fTsKd2luZG93Ll9fX2QyY0NUS01ldGhvZD1mdW5jdGlvbigpe3RyeXtpZighYWN0aXZlVXNlclByb2ZpbGVNbmcuX2lzQm90KCkmJiEwIT09YWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQpe2FjdGl2ZVVzZXJQcm9maWxlTW5nLmpxdWVyeUFjdGl2ZT13aW5kb3cualF1ZXJ5PyEwOiExO3ZhciBhPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0b3BzaXRlaWQiKTtpZihudWxsPT1hfHwidW5kZWZpbmVkIj09dHlwZW9mIGEudmFsdWV8fGlzTmFOKGEudmFsdWUpKWFjdGl2ZVVzZXJQcm9maWxlTW5nLmxvZ01zZygiTG9hZGluZyBmcHN5c3RlbSBvbiBub24gZDJjIHdlYnNpdGUiKSxhY3RpdmVVc2VyUHJvZmlsZU1uZy5pc0QyQ1NpdGU9ITE7ZWxzZSB0cnl7d2luZG93LmFjdGl2ZVNpdGVJRD1wYXJzZUludChhLnZhbHVlKX1jYXRjaChwKXt3aW5kb3cuYWN0aXZlU2l0ZUlEPXZvaWQgMH12YXIgYj1hY3RpdmVVc2VyUHJvZmlsZU1uZy5jaGVja1NjaGVkdWxlZFJlc2V0KCksZD1hY3RpdmVVc2VyUHJvZmlsZU1uZy5jb29raWVNbmcucmVhZENvb2tpZVZhbHVlKCJ1c2lkIik7CglpZigidW5kZWZpbmVkIj09dHlwZW9mIHdpbmRvdy5hY3RpdmVTZXNzaW9uSUR8fG51bGw9PXdpbmRvdy5hY3RpdmVTZXNzaW9uSUQpd2luZG93LmFjdGl2ZVNlc3Npb25JRD0wO251bGw9PWR8fGlzTmFOKGQpfHwod2luZG93LmFjdGl2ZVNlc3Npb25JRD1kKTthY3RpdmVVc2VyUHJvZmlsZU1uZy5jb29raWVNbmcuZGVsZXRlQ29va2llKCJ1dWlkX3ZsZCIpO3ZhciBjPWFjdGl2ZVVzZXJQcm9maWxlTW5nLmdldFN0YXRzVVJJKCksZT1mdW5jdGlvbigpe3RyeXsidW5kZWZpbmVkIj09dHlwZW9mIHdpbmRvdy5zdGF0RXhlY3V0ZWQmJigidW5kZWZpbmVkIiE9dHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nJiZudWxsIT1hY3RpdmVVc2VyUHJvZmlsZU1uZyYmInVuZGVmaW5lZCIhPXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlldz8oYWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXcoKSx3aW5kb3cuc3RhdEV4ZWN1dGVkPSEwKTphY3RpdmVVc2VyUHJvZmlsZU1uZy5hamF4TW5nLmFqYXgoe3VybDpjKwoJCQkic2VydmljZS9zZXNzaW9uTW5nLnBocCIsdHlwZToiR0VUIixkYXRhOnthY3Rpb246InVua25vd24iLG1zZzoiMS5FaXRoZXIgYWN0aXZlVXNlclByb2ZpbGVNbmcgaXMgbm90IGRlZmluZWQgb3IgbG9nUGFnZVZpZXcgaXMgbm90IGRlZmluZWQifX0pKX1jYXRjaChwKXthY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dNc2cocC5tZXNzYWdlKSxhY3RpdmVVc2VyUHJvZmlsZU1uZy5hamF4TW5nLmFqYXgoe3VybDpjKyJzZXJ2aWNlL3Nlc3Npb25NbmcucGhwIix0eXBlOiJHRVQiLGRhdGE6e2FjdGlvbjoidW5rbm93biIsbXNnOnAubWVzc2FnZX19KX19LGg9YWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLnJlYWRDb29raWVWYWx1ZSgidXVpZCIpLGY9bnVsbD09aHx8MD09aC5sZW5ndGg\/ITE6ITA7aD1hY3RpdmVVc2VyUHJvZmlsZU1uZy5jb29raWVNbmcucmVhZENvb2tpZVZhbHVlKCJ1dWlkX3ZsZDMiKTt2YXIgcT1udWxsPT1ofHwwPT1oLmxlbmd0aD8hMTohMDtpZighYiYmZiYmCgkJcSl7YWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJDYWxsYmFjayhlKTtpZigidW5kZWZpbmVkIj09dHlwZW9mIHdpbmRvdy5hY3RpdmVQcm9maWxlSUR8fG51bGw9PXdpbmRvdy5hY3RpdmVQcm9maWxlSUQpd2luZG93LmFjdGl2ZVByb2ZpbGVJRD1hY3RpdmVVc2VyUHJvZmlsZU1uZy5nZXRBY3RpdmVQcm9maWxlaWQoKTthY3RpdmVVc2VyUHJvZmlsZU1uZy5fX25vdGlmeVVVSUQoKX1lbHNlIGFjdGl2ZVVzZXJQcm9maWxlTW5nLnNlc3Npb25pZD1udWxsLHdpbmRvdy5hY3RpdmVTZXNzaW9uSUQ9bnVsbCxhY3RpdmVVc2VyUHJvZmlsZU1uZy50YWdCcm93c2VyKG51bGwsZnVuY3Rpb24oKXthY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlckNhbGxiYWNrKGUpfSl9fWNhdGNoKHApe2M9YWN0aXZlVXNlclByb2ZpbGVNbmcuZ2V0U3RhdHNVUkkoKSxhY3RpdmVVc2VyUHJvZmlsZU1uZy5hamF4TW5nLl9nZXQoYysic2VydmljZS9zZXNzaW9uTW5nLnBocD9hY3Rpb249dW5rbm93biZtc2c9Mi4iKwoJZW5jb2RlVVJJQ29tcG9uZW50KHAubWVzc2FnZSkpLGNvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZygiMS4gVW5leHBlY3RlZCBlcnJvciBvY2N1cmVkIGxvYWRpbmcgdXByb2ZpbGUuZmluYWwuanMuIEVycm9yOiAiK3AubWVzc2FnZSl9fTsKdHJ5e2xldCBhPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNkaXNhYmxlSW50ZXJuYWxTZXNzaW9uIik7aWYobnVsbCE9YSYmIjEiPT1hLnZhbHVlKXthY3RpdmVVc2VyUHJvZmlsZU1uZy5kaXNhYmxlZD0hMDthY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ9bnVsbDtsZXQgYj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjdG9wc2l0ZWlkIik7bnVsbCE9YiYmKGI9cGFyc2VJbnQoYi52YWx1ZSkpO2lzTmFOKGIpfHwyMzUhPWI\/KGFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5kZWxldGVDb29raWUoInV1aWQiKSxhY3RpdmVVc2VyUHJvZmlsZU1uZy5jb29raWVNbmcuZGVsZXRlQ29va2llKCJ1aWQiKSxhY3RpdmVVc2VyUHJvZmlsZU1uZy5jb29raWVNbmcuZGVsZXRlQ29va2llKCJ1dWlkX3JzdCIpLGFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5kZWxldGVDb29raWUoInVzaWQiKSxhY3RpdmVVc2VyUHJvZmlsZU1uZy5jb29raWVNbmcuZGVsZXRlQ29va2llKCJ1dmlldyIpLAoJYWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLmRlbGV0ZUNvb2tpZSgidXNpZCIpLGFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5kZWxldGVDb29raWUoInVzaWRfdG1wIiksYWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLmRlbGV0ZUNvb2tpZSgidXVpZF92MSIpLGFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5kZWxldGVDb29raWUoInV1aWRfdmxkMyIpLGFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5kZWxldGVDb29raWUoInV1ZnAiKSxhY3RpdmVVc2VyUHJvZmlsZU1uZy5jb29raWVNbmcuZGVsZXRlQ29va2llKCJ1dWlkX2lvc18yIikpOmNvbnNvbGUubG9nKCJieXBhc3NpbmcgY29va2llIHB1cmdlIil9ZWxzZSJsb2FkaW5nIiE9ZG9jdW1lbnQucmVhZHlTdGF0ZT93aW5kb3cuX19fZDJjQ1RLTWV0aG9kKCk6ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcj9kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIix3aW5kb3cuX19fZDJjQ1RLTWV0aG9kKToKCWRvY3VtZW50LmF0dGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLGZ1bmN0aW9uKCl7ImNvbXBsZXRlIj09ZG9jdW1lbnQucmVhZHlTdGF0ZSYmd2luZG93Ll9fX2QyY0NUS01ldGhvZCgpfSl9Y2F0Y2goYSl7Y29uc29sZSYmY29uc29sZS5sb2cmJmNvbnNvbGUubG9nKCI1LiBVbmV4cGVjdGVkIGVycm9yIG9jY3VyZWQgbG9hZGluZyB1cHJvZmlsZS5maW5hbC5qcy4gRXJyb3I6ICIrYS5tZXNzYWdlKX07Ci8qKiAvbS9qcy9rYy5mYWIuanMgKiovCnZhciBfX19kMmNfa2NmYWJqc19jX29uPSIyMDI1LTA1LTIzIDE3OjAzOjE4IjsndXNlIHN0cmljdCc7dmFyIF9fX2QyY19rY2ZhYmpzX2Nfb249IjIwMjQtMDMtMjUgMTI6MzA6MTgiOyJ1c2Ugc3RyaWN0IjsKKGZ1bmN0aW9uKGEpe2Eua2N8fChhLmtjPXt9KTthLmtjLmZhYj1mdW5jdGlvbihoLGUsbCl7dmFyIGI9dGhpcztiLiRlbD1hKGgpO2IuZWw9aDtiLiRlbC5kYXRhKCJrYy5mYWIiLGIpO3ZhciBmLGs7Yi5pbml0PWZ1bmN0aW9uKCl7aWYoInVuZGVmaW5lZCI9PT10eXBlb2YgZXx8bnVsbD09PWUpZT1be3VybDpudWxsLGJnY29sb3I6InJlZCIsaWNvbjoiKyJ9LHt1cmw6Imh0dHA6Ly93d3cuZXhhbXBsZS5jb20iLGJnY29sb3I6Im9yYW5nZSIsaWNvbjoiKyJ9LHt1cmw6Imh0dHA6Ly93d3cuZXhhbXBsZS5jb20iLGJnY29sb3I6InllbGxvdyIsaWNvbjoiKyJ9XTtiLmxpbmtzPWU7aWYoMDxiLmxpbmtzLmxlbmd0aCl7bWFpbl9idG49Yi5saW5rc1swXTtjb2xvcl9zdHlsZT1tYWluX2J0bi5jb2xvcj8iY29sb3I6IittYWluX2J0bi5jb2xvcisiOyI6IiI7YmdfY29sb3Jfc3R5bGU9bWFpbl9idG4uYmdjb2xvcj8iYmFja2dyb3VuZC1jb2xvcjoiK21haW5fYnRuLmJnY29sb3IrIjsiOgoiIjttYWluX2J0bl9kb209IjxidXR0b24gZGF0YS1saW5rLWhyZWY9JyIrKG1haW5fYnRuLnVybD9tYWluX2J0bi51cmw6IiIpKyInIGRhdGEtbGluay10YXJnZXQ9JyIrKG1haW5fYnRuLnRhcmdldD9tYWluX2J0bi50YXJnZXQ6IiIpKyInIGNsYXNzPSdrY19mYWJfbWFpbl9idG4nIHN0eWxlPSciK2JnX2NvbG9yX3N0eWxlKyInPjxzcGFuIHN0eWxlPSciK2NvbG9yX3N0eWxlKyInPiIrbWFpbl9idG4uaWNvbisiPC9zcGFuPjwvYnV0dG9uPiI7c3ViX2ZhYl9idG5zX2RvbT0iIjtiLmxpbmtzLnNoaWZ0KCk7Zm9yKHZhciBjPTA7YzxiLmxpbmtzLmxlbmd0aDtjKyspY29sb3Jfc3R5bGU9Yi5saW5rc1tjXS5jb2xvcj8iY29sb3I6IitiLmxpbmtzW2NdLmNvbG9yKyI7IjoiIixiZ19jb2xvcl9zdHlsZT1iLmxpbmtzW2NdLmJnY29sb3I\/ImJhY2tncm91bmQtY29sb3I6IitiLmxpbmtzW2NdLmJnY29sb3IrIjsiOiIiLHN1Yl9mYWJfYnRuc19kb20rPSI8ZGl2PjxidXR0b24gZGF0YS1saW5rLXRpdGxlPSciKwpiLmxpbmtzW2NdLnRpdGxlKyInIGRhdGEtbGluay1ocmVmPSciKyhiLmxpbmtzW2NdLnVybD9iLmxpbmtzW2NdLnVybDoiIikrIicgZGF0YS1saW5rLXRhcmdldD0nIisoYi5saW5rc1tjXS50YXJnZXQ\/Yi5saW5rc1tjXS50YXJnZXQ6IiIpKyInIGNsYXNzPSdzdWJfZmFiX2J0bicgc3R5bGU9JyIrYmdfY29sb3Jfc3R5bGUrIic+PHNwYW4gc3R5bGU9JyIrY29sb3Jfc3R5bGUrIic+IitiLmxpbmtzW2NdLmljb24rIjwvc3Bhbj48L2J1dHRvbj48L2Rpdj4iO3N1Yl9mYWJfYnRuc19kb209IjxkaXYgY2xhc3M9J3N1Yl9mYWJfYnRuc193cmFwcGVyJz4iK3N1Yl9mYWJfYnRuc19kb20rIjwvZGl2PiI7Yi4kZWwuYXBwZW5kKHN1Yl9mYWJfYnRuc19kb20pLmFwcGVuZChtYWluX2J0bl9kb20pfWVsc2UidW5kZWZpbmVkIj09dHlwZW9mIGNvbnNvbGUmJih3aW5kb3cuY29uc29sZT17bG9nOmZ1bmN0aW9uKGcpe2FsZXJ0KGcpfX0pLGNvbnNvbGUubG9nKCJJbnZhbGlkIGxpbmtzIGFycmF5IHBhcmFtIik7CmIub3B0aW9ucz1hLmV4dGVuZCh7fSxhLmtjLmZhYi5kZWZhdWx0T3B0aW9ucyxsKTtmPWIuJGVsLmZpbmQoIi5rY19mYWJfbWFpbl9idG4iKTtrPWIuJGVsLmZpbmQoIi5zdWJfZmFiX2J0bnNfd3JhcHBlciIpO2Yub24oImNsaWNrIixmdW5jdGlvbihnKXswPGEodGhpcykuYXR0cigiZGF0YS1saW5rLWhyZWYiKS5sZW5ndGgmJihhKHRoaXMpLmF0dHIoImRhdGEtbGluay10YXJnZXQiKT93aW5kb3cub3BlbihhKHRoaXMpLmF0dHIoImRhdGEtbGluay1ocmVmIiksYSh0aGlzKS5hdHRyKCJkYXRhLWxpbmstdGFyZ2V0IikpOndpbmRvdy5sb2NhdGlvbi5ocmVmPWEodGhpcykuYXR0cigiZGF0YS1saW5rLWhyZWYiKSk7ay50b2dnbGVDbGFzcygic2hvdyIpOzA8YSgiLmtjX2ZhYl9vdmVybGF5IikubGVuZ3RoPyhhKCIua2NfZmFiX292ZXJsYXkiKS5yZW1vdmUoKSxmLnRyaWdnZXIoImJsdXIiKSk6KGYudHJpZ2dlcigiZm9jdXMiKSxhKCJib2R5IikuYXBwZW5kKCc8ZGl2IGNsYXNzPSJrY19mYWJfb3ZlcmxheSIgPjwvZGl2PicpLAphKCJib2R5Iikub24oInRvdWNoc3RhcnQiLGZ1bmN0aW9uKCl7Zi50cmlnZ2VyKCJibHVyIil9KSk7MCE9PWEodGhpcykuZmluZCgiLmluayIpLmxlbmd0aCYmYSh0aGlzKS5maW5kKCIuaW5rIikucmVtb3ZlKCk7YSh0aGlzKS5wcmVwZW5kKCI8c3BhbiBjbGFzcz0naW5rJz48L3NwYW4+Iik7aW5rPWEodGhpcykuZmluZCgiLmluayIpO2luay5oZWlnaHQoKXx8aW5rLndpZHRoKCl8fChkPU1hdGgubWF4KGEodGhpcykub3V0ZXJXaWR0aCgpLGEodGhpcykub3V0ZXJIZWlnaHQoKSksaW5rLmNzcyh7aGVpZ2h0OmQsd2lkdGg6ZH0pKTt4PWcucGFnZVgtYSh0aGlzKS5vZmZzZXQoKS5sZWZ0LWluay53aWR0aCgpLzI7eT1nLnBhZ2VZLWEodGhpcykub2Zmc2V0KCkudG9wLWluay5oZWlnaHQoKS8yO2luay5jc3Moe3RvcDp5KyJweCIsbGVmdDp4KyJweCJ9KS5hZGRDbGFzcygiYW5pbWF0ZSIpfSk7ay5maW5kKCIuc3ViX2ZhYl9idG4iKS5vbigibW91c2Vkb3duIixmdW5jdGlvbihnKXswPAphKHRoaXMpLmF0dHIoImRhdGEtbGluay1ocmVmIikubGVuZ3RoJiYoYSh0aGlzKS5hdHRyKCJkYXRhLWxpbmstdGFyZ2V0Iik\/d2luZG93Lm9wZW4oYSh0aGlzKS5hdHRyKCJkYXRhLWxpbmstaHJlZiIpLGEodGhpcykuYXR0cigiZGF0YS1saW5rLXRhcmdldCIpKTp3aW5kb3cubG9jYXRpb24uaHJlZj1hKHRoaXMpLmF0dHIoImRhdGEtbGluay1ocmVmIikpfSk7Zi5mb2N1c291dChmdW5jdGlvbigpe2sucmVtb3ZlQ2xhc3MoInNob3ciKTtvdmVybGF5PWEoIi5rY19mYWJfb3ZlcmxheSIpO292ZXJsYXkucmVtb3ZlKCk7YSgiYm9keSIpLm9mZigidG91Y2hzdGFydCIpfSl9O2IuaW5pdCgpfTthLmtjLmZhYi5kZWZhdWx0T3B0aW9ucz17fTthLmZuLmtjX2ZhYj1mdW5jdGlvbihoLGUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtuZXcgYS5rYy5mYWIodGhpcyxoLGUpfSl9fSkoalF1ZXJ5KTsKLyoqIC9tL2pzL29wZW5ob3Vycy5qcyAqKi8KdmFyIF9fX2QyY19vcGVuaG91cnNqc19jX29uPSIyMDI1LTA1LTIzIDE3OjExOjAzIjsndXNlIHN0cmljdCc7dmFyIF9fX2QyY19vcGVuaG91cnNqc19jX29uPSIyMDI1LTAzLTE4IDE0OjMwOjA4IjsidXNlIHN0cmljdCI7CnZhciBPcGVuSG91cnM9ZnVuY3Rpb24oYil7ZnVuY3Rpb24gYyhkKXt2YXIgZT0kKHRoaXMpLnNpYmxpbmdzKCIuZXhwYW5kYWJsZV9jb250ZW50IikuZXEoMCkuaGFzQ2xhc3MoIm9wZW5faG91cnNfbWFwX2FjdGl2ZSIpOyQoZC5jdXJyZW50VGFyZ2V0KS5maW5kKCIubWFwX29wZW5faG91cnNfZXhwYW5kX2Fycm93IikudG9nZ2xlQ2xhc3MoImV4cGFuZGVkIik7JCh0aGlzKS5wYXJlbnRzKGEub3B0aW9ucy5jb250YWluZXIpLmZpbmQoIi5vcGVuX2hvdXJzX21hcF9hY3RpdmUiKS5zbGlkZVRvZ2dsZSgic2xvdyIpOyQodGhpcykucGFyZW50cyhhLm9wdGlvbnMuY29udGFpbmVyKS5maW5kKCIub3Blbl9ob3Vyc19tYXBfYWN0aXZlIikucmVtb3ZlQ2xhc3MoIm9wZW5faG91cnNfbWFwX2FjdGl2ZSIpO2V8fCgkKHRoaXMpLnNpYmxpbmdzKCIuZXhwYW5kYWJsZV9jb250ZW50IikuZXEoMCkuc2xpZGVUb2dnbGUoInNsb3ciKSwkKHRoaXMpLnNpYmxpbmdzKCIuZXhwYW5kYWJsZV9jb250ZW50IikuZXEoMCkuYWRkQ2xhc3MoIm9wZW5faG91cnNfbWFwX2FjdGl2ZSIpKX0KdmFyIGE9dGhpczthLm9wdGlvbnM9YjthLiRjb250YWluZXI9JChhLm9wdGlvbnMuY29udGFpbmVyKTthLmluaXQ9ZnVuY3Rpb24oKXthLiRjb250YWluZXIuZmluZCgiLm1hcF9vcGVuX2hvdXJzX2V4cGFuZCIpLm9uKCJjbGljayBhdXRvX29wZW4iLGMpOzA8YS4kY29udGFpbmVyLmZpbmQoIi5tYXBfb3Blbl9ob3Vyc19leHBhbmQuZGVmYXVsdF9vcGVuZWQiKS5sZW5ndGg\/YS4kY29udGFpbmVyLmZpbmQoIi5tYXBfb3Blbl9ob3Vyc19leHBhbmQuZGVmYXVsdF9vcGVuZWQiKS50cmlnZ2VyKCJhdXRvX29wZW4iKToyIT0kKCIuZXhwYW5kYWJsZV9jb250ZW50IikubGVuZ3RofHwwPCQoIi5leHBhbmRhYmxlX2NvbnRlbnQiKS5maW5kKCIudmlzaXRDb250YWN0SGVhZGVyIikubGVuZ3RoP2Eub3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgiYXV0b09wZW4iKSYmIWEub3B0aW9ucy5hdXRvT3Blbnx8YS4kY29udGFpbmVyLmZpbmQoIi5tYXBfb3Blbl9ob3Vyc19leHBhbmQiKS5maXJzdCgpLnRyaWdnZXIoImF1dG9fb3BlbiIpOgokKCIuZXhwYW5kYWJsZV9jb250ZW50Iikuc2xpZGVUb2dnbGUoInNsb3ciKS5hZGRDbGFzcygib3Blbl9ob3Vyc19tYXBfYWN0aXZlIil9O3JldHVybiBhfTsKLyoqIC9tL2pzL2dvb2dsZW1hcHMuanMgKiovCnZhciBfX19kMmNfZ29vZ2xlbWFwc2pzX2Nfb249IjIwMjYtMDEtMTIgMTA6MTQ6NTQiOyd1c2Ugc3RyaWN0JztjbGFzcyBHb29nbGVNYXBzV3JhcHBlcntjb25zdHJ1Y3RvcihhKXt0aGlzLnByZXZpb3VzSW5mb1dpbmRvdz0hMTt0aGlzLm9wdGlvbnM9e2VsZW1lbnQ6YSYmYS5lbGVtZW50P2EuZWxlbWVudDoiIixjZW50ZXI6YSYmYS5jZW50ZXI\/YS5jZW50ZXI6e2xhdDo0NS40NjcyNzcsbG5nOi03My44MzQ1MjZ9LGNlbnRlck9mZnNldDphJiZhLmNlbnRlck9mZnNldD9hLmNlbnRlck9mZnNldDp7eDowLHk6MH0sem9vbTphJiZhLnpvb20\/YS56b29tOjksYWRkcmVzc2VzOmEmJmEuYWRkcmVzc2VzP2EuYWRkcmVzc2VzOltdLG9uQmVmb3JlSW5pdDphJiZhLm9uQmVmb3JlSW5pdD9hLm9uQmVmb3JlSW5pdDpmdW5jdGlvbigpe30sb25BZnRlckluaXQ6YSYmYS5vbkFmdGVySW5pdD9hLm9uQWZ0ZXJJbml0OmZ1bmN0aW9uKCl7fSxvbkFmdGVyTWFya2VyQ3JlYXRlZDphJiZhLm9uQWZ0ZXJNYXJrZXJDcmVhdGVkP2Eub25BZnRlck1hcmtlckNyZWF0ZWQ6ZnVuY3Rpb24oKXt9fX1zdGF0aWMgc2V0R29vZ2xlTWFwKCl7dmFyIGE9CjAsZT1mdW5jdGlvbigpe2dvb2dsZS5tYXBzLk1hcC5wcm90b3R5cGUuc2V0Q2VudGVyV2l0aE9mZnNldD1mdW5jdGlvbihrLGcsbCl7dmFyIGM9dGhpcyxiPW5ldyBnb29nbGUubWFwcy5PdmVybGF5VmlldztiLm9uQWRkPWZ1bmN0aW9uKCl7dmFyIGY9dGhpcy5nZXRQcm9qZWN0aW9uKCksZD1mLmZyb21MYXRMbmdUb0NvbnRhaW5lclBpeGVsKGspO2QueCs9ZztkLnkrPWw7Yy5zZXRDZW50ZXIoZi5mcm9tQ29udGFpbmVyUGl4ZWxUb0xhdExuZyhkKSl9O2IuZHJhdz1mdW5jdGlvbigpe307Yi5zZXRNYXAodGhpcyl9fTtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBnb29nbGUpZSgpO2Vsc2UgdmFyIGg9c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXs0PmE\/InVuZGVmaW5lZCIhPT10eXBlb2YgZ29vZ2xlPyhjbGVhckludGVydmFsKGgpLGUoKSk6YSsrOmNsZWFySW50ZXJ2YWwoaCl9LDFFMyl9aW5pdCgpe3ZhciBhPXRoaXMsZT1hLm9wdGlvbnMuY2VudGVyT2Zmc2V0Lng\/YS5vcHRpb25zLmNlbnRlck9mZnNldC54OgowLGg9YS5vcHRpb25zLmNlbnRlck9mZnNldC55P2Eub3B0aW9ucy5jZW50ZXJPZmZzZXQueTowLGs9bmV3IGdvb2dsZS5tYXBzLkxhdExuZ0JvdW5kczthLm9wdGlvbnMub25CZWZvcmVJbml0KCk7aWYoYS5vcHRpb25zLmFkZHJlc3Nlcy5sZW5ndGgpe3ZhciBnPWEub3B0aW9ucy5jZW50ZXIsbD1uZXcgZ29vZ2xlLm1hcHMuR2VvY29kZXIsYz1uZXcgZ29vZ2xlLm1hcHMuTWFwKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGEub3B0aW9ucy5lbGVtZW50KSx7em9vbTphLm9wdGlvbnMuem9vbSxjZW50ZXI6YS5vcHRpb25zLmNlbnRlcixtYXBUeXBlSWQ6Z29vZ2xlLm1hcHMuTWFwVHlwZUlkLlJPQURNQVAsZ2VzdHVyZUhhbmRsaW5nOiJncmVlZHkiLHNjcm9sbHdoZWVsOiExLG1hcFR5cGVDb250cm9sOiExfSk7Z29vZ2xlLm1hcHMuZXZlbnQuYWRkTGlzdGVuZXJPbmNlKGMsImlkbGUiLGZ1bmN0aW9uKCl7YS5vcHRpb25zLmFkZHJlc3Nlcy5tYXAoZnVuY3Rpb24oYixmLGQpe2Y9ZnVuY3Rpb24obiwKcSl7dHJ5e2lmKHE9PWdvb2dsZS5tYXBzLkdlb2NvZGVyU3RhdHVzLk9LKXtrLmV4dGVuZChuWzBdLmdlb21ldHJ5LmxvY2F0aW9uKTtjLmZpdEJvdW5kcyhrKTtjLnNldFpvb20oYS5vcHRpb25zLnpvb20pO2c9Yy5nZXRCb3VuZHMoKS5nZXRDZW50ZXIoKTtjLnNldENlbnRlcldpdGhPZmZzZXQoZyxlLGgpO3ZhciBwPW5ldyBnb29nbGUubWFwcy5JbmZvV2luZG93KHtjb250ZW50OmIuaW5mb3dpbmRvd30pLG09bmV3IGdvb2dsZS5tYXBzLk1hcmtlcih7bWFwOmMscG9zaXRpb246blswXS5nZW9tZXRyeS5sb2NhdGlvbix0aXRsZTpiLnRpdGxlLGljb246Yi5pY29ufSk7bS5hZGRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKCl7YS5wcmV2aW91c0luZm9XaW5kb3cmJmEucHJldmlvdXNJbmZvV2luZG93LmNsb3NlKCk7YS5wcmV2aW91c0luZm9XaW5kb3c9cDtwLm9wZW4oYyxtKX0pO2Eub3B0aW9ucy5vbkFmdGVyTWFya2VyQ3JlYXRlZChiLG0pfX1jYXRjaChyKXtjb25zb2xlLmxvZyhyKX19OwphLmhhc0xhdChiKSYmYS5oYXNMbmcoYik\/KGQ9bmV3IGdvb2dsZS5tYXBzLkxhdExuZyhOdW1iZXIoYi5nZW9tZXRyeS5sb2NhdGlvbi5sYXQpLE51bWJlcihiLmdlb21ldHJ5LmxvY2F0aW9uLmxuZykpLGYoW3tnZW9tZXRyeTp7bG9jYXRpb246ZH19XSwiT0siKSk6bC5nZW9jb2RlKHthZGRyZXNzOmIuYWRkcmVzc30sZil9KX0pO2dvb2dsZS5tYXBzLmV2ZW50LmFkZERvbUxpc3RlbmVyKHdpbmRvdywicmVzaXplIixmdW5jdGlvbigpe2Muc2V0Q2VudGVyV2l0aE9mZnNldChnLGUsaCl9KX1hLm9wdGlvbnMub25BZnRlckluaXQoKX1faGFzTGF0TG5nUHJvcChhLGUpe3JldHVybiBhLmhhc093blByb3BlcnR5KCJnZW9tZXRyeSIpJiZhLmdlb21ldHJ5Lmhhc093blByb3BlcnR5KCJsb2NhdGlvbiIpJiZhLmdlb21ldHJ5LmxvY2F0aW9uLmhhc093blByb3BlcnR5KGUpJiYiZmFsc2UiIT1hLmdlb21ldHJ5LmxvY2F0aW9uW2VdPyEwOiExfWhhc0xhdChhKXtyZXR1cm4gdGhpcy5faGFzTGF0TG5nUHJvcChhLAoibGF0Iil9aGFzTG5nKGEpe3JldHVybiB0aGlzLl9oYXNMYXRMbmdQcm9wKGEsImxuZyIpfX07Ci8qKiAvbS9qcy9mb290ZXJXaWRnZXRfTS5qcyAqKi8KdmFyIF9fX2QyY19mb290ZXJXaWRnZXRNanNfY19vbj0iMjAyNi0wMS0xMiAxMDoxMzoxNiI7J3VzZSBzdHJpY3QnO3ZhciB0cmFja0Zvb3Rlck1hcExvYWQ9ZnVuY3Rpb24oKXt2YXIgYT0kKCIjdGFyZ2V0UGFnZSIpLnZhbCgpOyJ1bmRlZmluZWQiPT1hJiYoYT0iVU5LTk9XTiIpO2dhVHJhY2soImMuX3RyYWNrRXZlbnQiLCJGb290ZXItTWFwLUxvYWQiLCJNb2JpbGUiLGEsMSl9OwppblZpZXdFeGVjKCIjZm9vdGVyR29vZ2xlTWFwIixmdW5jdGlvbigpe2lmKCQoIiNmb290ZXJHb29nbGVNYXAiKS5sZW5ndGgpdHJ5e0dvb2dsZU1hcHNXcmFwcGVyLnNldEdvb2dsZU1hcCgpO3ZhciBhPSQoIiNmb290ZXJHb29nbGVNYXBab29tIikudmFsKCksYz0xPHBhcnNlSW50KGEpJiYxOD49cGFyc2VJbnQoYSk\/cGFyc2VJbnQoYSk6OTt3aW5kb3cuZm9vdGVyR29vZ2xlTWFwT2JqZWN0PW5ldyBHb29nbGVNYXBzV3JhcHBlcih7ZWxlbWVudDoiZm9vdGVyR29vZ2xlTWFwIixhZGRyZXNzZXM6InVuZGVmaW5lZCIhPXR5cGVvZiBmb290ZXJNYXBBZGRyZXNzZXM\/Zm9vdGVyTWFwQWRkcmVzc2VzOltdLHpvb206YyxvbkJlZm9yZUluaXQ6ZnVuY3Rpb24oKXt0cmFja0Zvb3Rlck1hcExvYWQoKX0sb25BZnRlckluaXQ6ZnVuY3Rpb24oKXsidW5kZWZpbmVkIiE9dHlwZW9mIGZvb3Rlck1hcEFkZHJlc3NlcyYmMCE9Zm9vdGVyTWFwQWRkcmVzc2VzLmxlbmd0aHx8JCgiI2Zvb3Rlckdvb2dsZU1hcCIpLmhpZGUoKX19KTsKd2luZG93LmZvb3Rlckdvb2dsZU1hcE9iamVjdC5pbml0KCl9Y2F0Y2goYil7Y29uc29sZS5sb2coYil9fSk7aW5WaWV3RXhlYygiI2Zvb3Rlckdvb2dsZU1hcElmcmFtZSIsZnVuY3Rpb24oKXt0cmFja0Zvb3Rlck1hcExvYWQoKX0pOwokKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYSgpeyJ1bmRlZmluZWQiIT09dHlwZW9mIHdpbmRvdy5mb290ZXJHb29nbGVNYXBPYmplY3Q\/d2luZG93LmZvb3Rlckdvb2dsZU1hcE9iamVjdC5jYWxjdWxhdGVBbmREaXNwbGF5Um91dGUoKTooY29uc29sZS5sb2coIklDSSIpLHNldFRpbWVvdXQoYSw1MDApKX1pblZpZXdFeGVjKCIjbWFwX29wZW5faG91cnMiLGZ1bmN0aW9uKCl7KG5ldyBPcGVuSG91cnMoe2NvbnRhaW5lcjoiI21hcF9vcGVuX2hvdXJzIixhdXRvT3BlbjohMH0pKS5pbml0KCl9KTskKCJkaXYjcGhvbmVOdW1iZXJEaXYgbGkgYSIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXsidW5kZWZpbmVkIiE9dHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nJiYidW5kZWZpbmVkIiE9dHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nLmxvZ1BhZ2VWaWV3RXZlbnQmJmFjdGl2ZVVzZXJQcm9maWxlTW5nLmxvZ1BhZ2VWaWV3RXZlbnQoInBob25lLmNhbGwiLCQodGhpcykuYXR0cigiaHJlZiIpLnJlcGxhY2UoInRlbDoiLAoiIikpfSk7JCgiI2RpcmVjdGlvbnNCdXR0b25IZWFkZXIiKS5vbigiY2xpY2siLGZ1bmN0aW9uKGMpe2MucHJldmVudERlZmF1bHQoKTskKCJodG1sLCBib2R5IikuYW5pbWF0ZSh7c2Nyb2xsVG9wOiQoIiNmb290ZXJHb29nbGVNYXBIb3VycyIpLm9mZnNldCgpLnRvcH0sMkUzKTthKCl9KX0pOwp3aW5kb3cub25sb2FkPWZ1bmN0aW9uKCl7KGZ1bmN0aW9uKCl7dmFyIGE9e25ld19nZW9sb2M6ITEsdXNlckNvb3JkOiExLHJlc3VsdDohMSxwcmV2X2dlb2xvYzpDb29raWVzLmdldCgiZ2VvbG9jUHJvY2Vzc2VkIik\/SlNPTi5wYXJzZShDb29raWVzLmdldCgiZ2VvbG9jUHJvY2Vzc2VkIikpOiExLGRlYWxlcl92aXNpdGVkOkNvb2tpZXMuZ2V0KCJkZWFsZXJWaXNpdGVkIik\/SlNPTi5wYXJzZShDb29raWVzLmdldCgiZGVhbGVyVmlzaXRlZCIpKTohMSxkZWFsZXJBZGRyZXNzOiIiLGdldFByZXZMb2NhdGlvbjpmdW5jdGlvbigpe3JldHVybiBDb29raWVzLmdldCgiZ2VvbG9jUHJvY2Vzc2VkIik\/SlNPTi5wYXJzZShDb29raWVzLmdldCgiZ2VvbG9jUHJvY2Vzc2VkIikpOiExfSxwcm9jZXNzVXNlckxvY2F0aW9uOmZ1bmN0aW9uKGIpe2EubmV3X2dlb2xvYz1iO3N3aXRjaCghMCl7Y2FzZSAwPT1hLnByZXZfZ2VvbG9jfHxhLnByZXZfZ2VvbG9jLmFjY2VwdGVkIT1iLnJlc3VsdDphLm5ld19nZW9sb2MubG9jYXRpb25fc3RyPQoxPT1iLnJlc3VsdD9iLmdlb2NvZGVfYWRkcmVzc19zdHIrIigiK2IuYWNjdXJhY3krIikiOiJHZW9sb2NhdGlvbiByZWZ1c2VkIjthLm5ld19nZW9sb2MuZGVzY3JpcHRpb249MT09Yi5yZXN1bHQ\/IkFDQ0VQVEVEIjoiIjthLnVzZXJDb29yZD17bGF0OmIubGF0aXR1ZGUsImxvbmciOmIubG9uZ2l0dWRlfTthLmNvbXBhcmVUb0RlYWxlckxvY2F0aW9uKCk7YnJlYWs7Y2FzZSAxPT1hLnByZXZfZ2VvbG9jLmFjY2VwdGVkJiYxPT1iLnJlc3VsdDp2YXIgZD17bGF0OmEucHJldl9nZW9sb2MubGF0aXR1ZGUsImxvbmciOmEucHJldl9nZW9sb2MubG9uZ2l0dWRlfTthLnVzZXJDb29yZD17bGF0OmIubGF0aXR1ZGUsImxvbmciOmIubG9uZ2l0dWRlfTsyMDA8Yy5nZXREaXN0YW5jZShkLGEudXNlckNvb3JkKSYmKGEubmV3X2dlb2xvYy5kZXNjcmlwdGlvbj0iVVBEQVRFRCIsYS5uZXdfZ2VvbG9jLmxvY2F0aW9uX3N0cj1iLmdlb2NvZGVfYWRkcmVzc19zdHIrIigiK2IuYWNjdXJhY3krIikiLAphLmNvbXBhcmVUb0RlYWxlckxvY2F0aW9uKCkpfX0sY29tcGFyZVRvRGVhbGVyTG9jYXRpb246ZnVuY3Rpb24oYil7Im9iamVjdCI9PXR5cGVvZiBiJiZiLmxhdCYmYi5sb25nPzIwMT5jLmdldERpc3RhbmNlKGEudXNlckNvb3JkLGIpPzA9PWEuZGVhbGVyX3Zpc2l0ZWQmJihhLm5ld19nZW9sb2MubG9jYXRpb25fc3RyPWEuZGVhbGVyQWRkcmVzcysiKCIrYS5uZXdfZ2VvbG9jLmFjY3VyYWN5KyIpIixhLm5ld19nZW9sb2MuZGVzY3JpcHRpb249IkRFQUxFUl9MT0NBVElPTiIsYS5sb2dQYWdlRXZlbnQoYS5uZXdfZ2VvbG9jLmxvY2F0aW9uX3N0ciksYj1uZXcgRGF0ZSxiLnNldEhvdXJzKDIzLDU5LDU5LDApLENvb2tpZXMuc2V0KCJkZWFsZXJWaXNpdGVkIiwxLGIsIi8iKSk6MD09YS5wcmV2X2dlb2xvYyYmYS5sb2dQYWdlRXZlbnQoYS5uZXdfZ2VvbG9jLmxvY2F0aW9uX3N0cik6YS5nZXREZWFsZXJDb29yZCgpfSxnZXREZWFsZXJDb29yZDpmdW5jdGlvbigpe2EuZGVhbGVyQWRkcmVzcz0KJCgnbWV0YVtuYW1lPSJnZW8ucGxhY2VuYW1lIl0nKS5wcm9wKCJjb250ZW50Iik7Yy5nZXRBZGRyZXNzQ29vcmQoYS5kZWFsZXJBZGRyZXNzLGEuY29tcGFyZVRvRGVhbGVyTG9jYXRpb24pfSxsb2dQYWdlRXZlbnQ6ZnVuY3Rpb24oYil7YiYmMDxiLmxlbmd0aCYmMT09YS5uZXdfZ2VvbG9jLnJlc3VsdCYmInVuZGVmaW5lZCIhPXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZyYmInVuZGVmaW5lZCIhPXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50JiYoYj1hLm5ld19nZW9sb2MuZGVzY3JpcHRpb24rIjogIitiLGFjdGl2ZVVzZXJQcm9maWxlTW5nLmxvZ1BhZ2VWaWV3RXZlbnQoIlRSQUNLX0dFT0xPQyIsYikpO2dldFVVSUQ9ZnVuY3Rpb24oKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdy5hY3RpdmVQcm9maWxlSUQmJm51bGwhPXdpbmRvdy5hY3RpdmVQcm9maWxlSUQ\/d2luZG93LmFjdGl2ZVByb2ZpbGVJRDoidW5kZWZpbmVkIiE9CnR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZyYmbnVsbCE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkP2FjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZDoidW5kZWZpbmVkIiE9dHlwZW9mIENvb2tpZXMmJiJ1bmRlZmluZWQiIT1Db29raWVzLmdldCgidXVpZCIpJiZudWxsIT1Db29raWVzLmdldCgidXVpZCIpP0Nvb2tpZXMuZ2V0KCJ1dWlkIik6IiJ9O2I9InVuZGVmaW5lZCIhPXR5cGVvZiBDb29raWVzJiYidW5kZWZpbmVkIiE9dHlwZW9mIENvb2tpZXMuZ2V0KCJ1c2lkIikmJm51bGwhPUNvb2tpZXMuZ2V0KCJ1c2lkIik\/Q29va2llcy5nZXQoInVzaWQiKTowO3ZhciBkPWdldFVVSUQoKSxlPSQoIiNzaXRlSUQiKS52YWwoKTskLmFqYXgoe3R5cGU6IlBPU1QiLHVybDoiaHR0cHM6Ly9yZXN0LmQyY21lZGlhLmNhL2dlb2xvY1RyYWNraW5nL3NpdGV2aXNpdG9yIixkYXRhOnt1dWlkOmQsc2Vzc2lvbmlkOmIsc2l0ZUlEOmUsc3RhdHVzOmEubmV3X2dlb2xvYy5nZW9sb2Nfc3RhdHVzLApkZXNjOmEubmV3X2dlb2xvYy5kZXNjcmlwdGlvbixsYXRpdHVkZTphLm5ld19nZW9sb2MubGF0aXR1ZGUsbG9uZ2l0dWRlOmEubmV3X2dlb2xvYy5sb25naXR1ZGUscG9zdGFsX2NvZGU6YS5uZXdfZ2VvbG9jLnBvc3RhbF9jb2RlLGFjY3VyYWN5OmEubmV3X2dlb2xvYy5hY2N1cmFjeSxhZGRyZXNzOmEubmV3X2dlb2xvYy5nZW9jb2RlX2FkZHJlc3Nfc3RyLGxvY2F0aW9uX3N0cjphLm5ld19nZW9sb2MubG9jYXRpb25fc3RyLGdlb2xvY19kYXRlOmEubmV3X2dlb2xvYy5nZW9sb2NfZGF0ZX0sc3VjY2VzczpmdW5jdGlvbihmKXt9LGZhaWx1cmU6ZnVuY3Rpb24oZil7fX0pfX07aWYoInVuZGVmaW5lZCIhPXR5cGVvZiAkKCIjYXNrVmlzaXRvckdlb2xvYyIpLnZhbCgpJiYxPT0kKCIjYXNrVmlzaXRvckdlb2xvYyIpLnZhbCgpJiYidW5kZWZpbmVkIiE9dHlwZW9mIGdlb0xvY2F0b3Ipe3ZhciBjPW5ldyBnZW9Mb2NhdG9yKGEucHJvY2Vzc1VzZXJMb2NhdGlvbik7Yy5mb3JjZUdlb2xvY0F0dGVtcHQ9CiEwO2MuZ2V0TG9jYXRpb24oKX19KSgpfTskKGZ1bmN0aW9uKCl7JCgiLmNFeHBlbmRMaXN0IEJVVFRPTiIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXt2YXIgYT0kKHRoaXMpLmNsb3Nlc3QoImRpdi5jRm9vdGVyQ2FyTGlua3MiKTthLmxlbmd0aCYmKGEuaGFzQ2xhc3MoImNMaXN0RXhwZW5kZWQiKXx8YS5hZGRDbGFzcygiY0xpc3RFeHBlbmRlZCIpLmZpbmQoIi5jRXhwZW5kTGlzdCIpLmhpZGUoKSl9KX0pOwovKiogL20vanMvdG9hc3RyLmpzICoqLwp2YXIgX19fZDJjX3RvYXN0cmpzX2Nfb249IjIwMjUtMDUtMjMgMTc6MTI6MDkiOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX3RvYXN0cmpzX2Nfb249IjIwMjQtMDMtMjYgMTI6MzA6MTUiOyJ1c2Ugc3RyaWN0IjsKKGZ1bmN0aW9uKHope3ooWyJqcXVlcnkiXSxmdW5jdGlvbihkKXtyZXR1cm4gZnVuY3Rpb24oKXtmdW5jdGlvbiBuKGEsYyl7YXx8KGE9bCgpKTtmPWQoIiMiK2EuY29udGFpbmVySWQpO2lmKGYubGVuZ3RoKXJldHVybiBmO2MmJihmPWQoIjxkaXYvPiIpLmF0dHIoImlkIixhLmNvbnRhaW5lcklkKS5hZGRDbGFzcyhhLnBvc2l0aW9uQ2xhc3MpLmF0dHIoImFyaWEtbGl2ZSIsInBvbGl0ZSIpLmF0dHIoInJvbGUiLCJhbGVydCIpLmNzcygiY29sb3IiLGEuY29sb3IpLGYuYXBwZW5kVG8oZChhLnRhcmdldCkpKTtyZXR1cm4gZn1mdW5jdGlvbiBBKGEsYyxlKXtlPWUmJmUuZm9yY2U\/ZS5mb3JjZTohMTtyZXR1cm4gYSYmKGV8fDA9PT1kKCI6Zm9jdXMiLGEpLmxlbmd0aCk\/KGFbYy5oaWRlTWV0aG9kXSh7ZHVyYXRpb246Yy5oaWRlRHVyYXRpb24sZWFzaW5nOmMuaGlkZUVhc2luZyxjb21wbGV0ZTpmdW5jdGlvbigpe3UoYSl9fSksITApOiExfWZ1bmN0aW9uIEUoKXtyZXR1cm57dGFwVG9EaXNtaXNzOiEwLAp0b2FzdENsYXNzOiJ0b2FzdCIsY29udGFpbmVySWQ6InRvYXN0LWNvbnRhaW5lciIsZGVidWc6ITEsc2hvd01ldGhvZDoiZmFkZUluIixzaG93RHVyYXRpb246MzAwLHNob3dFYXNpbmc6InN3aW5nIixvblNob3duOmZ1bmN0aW9uKCl7ZCgiLnRyYWRlSW5CYXJNb2JpbGVCdXR0b24iKS5hZGRDbGFzcygid2l0aFRvYXN0ZXIiKTtkKCIucHJvbW9Ub3BCdG4uZmxvYXRpbmciKS5hZGRDbGFzcygid2l0aFRvYXN0ZXIiKX0saGlkZU1ldGhvZDoiZmFkZU91dCIsaGlkZUR1cmF0aW9uOjFFMyxoaWRlRWFzaW5nOiJzd2luZyIsb25IaWRkZW46ZnVuY3Rpb24oKXtkKCIudHJhZGVJbkJhck1vYmlsZUJ1dHRvbiIpLnJlbW92ZUNsYXNzKCJ3aXRoVG9hc3RlciIpO2QoIi5wcm9tb1RvcEJ0bi5mbG9hdGluZyIpLnJlbW92ZUNsYXNzKCJ3aXRoVG9hc3RlciIpfSxvbkNsb3NlOmZ1bmN0aW9uKCl7ZCgiLnRyYWRlSW5CYXJNb2JpbGVCdXR0b24iKS5yZW1vdmVDbGFzcygid2l0aFRvYXN0ZXIiKTsKZCgiLnByb21vVG9wQnRuLmZsb2F0aW5nIikucmVtb3ZlQ2xhc3MoIndpdGhUb2FzdGVyIil9LGV4dGVuZGVkVGltZU91dDoxRTMsaWNvbkNsYXNzZXM6e2Vycm9yOiJ0b2FzdC1lcnJvciIsaW5mbzoidG9hc3QtaW5mbyIsc3VjY2VzczoidG9hc3Qtc3VjY2VzcyIsd2FybmluZzoidG9hc3Qtd2FybmluZyJ9LGljb25DbGFzczoidG9hc3QtaW5mbyIsY29sb3I6IiNGRkYiLGJnQ29sb3I6IiIscG9zaXRpb25DbGFzczoidG9hc3QtdG9wLXJpZ2h0Iix0aW1lT3V0OjVFMyx0aXRsZUNsYXNzOiJ0b2FzdC10aXRsZSIsbWVzc2FnZUNsYXNzOiJ0b2FzdC1tZXNzYWdlIix0YXJnZXQ6ImJvZHkiLGNsb3NlSHRtbDonPGJ1dHRvbiB0eXBlPSJidXR0b24iPiZ0aW1lczs8L2J1dHRvbj4nLG5ld2VzdE9uVG9wOiEwLHByZXZlbnREdXBsaWNhdGVzOiExLHByb2dyZXNzQmFyOiExfX1mdW5jdGlvbiByKGEpe2Z1bmN0aW9uIGMoayl7aWYoIWQoIjpmb2N1cyIsZykubGVuZ3RofHxrKXJldHVybiBjbGVhclRpbWVvdXQoaC5pbnRlcnZhbElkKSwKZ1tiLmhpZGVNZXRob2RdKHtkdXJhdGlvbjpiLmhpZGVEdXJhdGlvbixlYXNpbmc6Yi5oaWRlRWFzaW5nLGNvbXBsZXRlOmZ1bmN0aW9uKCl7dShnKTtpZihiLm9uSGlkZGVuJiYiaGlkZGVuIiE9PW0uc3RhdGUpYi5vbkhpZGRlbigpO20uc3RhdGU9ImhpZGRlbiI7bS5lbmRUaW1lPW5ldyBEYXRlO3AmJnAobSl9fSl9ZnVuY3Rpb24gZSgpe2lmKDA8Yi50aW1lT3V0fHwwPGIuZXh0ZW5kZWRUaW1lT3V0KXY9c2V0VGltZW91dChjLGIuZXh0ZW5kZWRUaW1lT3V0KSxoLm1heEhpZGVUaW1lPXBhcnNlRmxvYXQoYi5leHRlbmRlZFRpbWVPdXQpLGguaGlkZUV0YT0obmV3IERhdGUpLmdldFRpbWUoKStoLm1heEhpZGVUaW1lfWZ1bmN0aW9uIEYoKXtjbGVhclRpbWVvdXQodik7aC5oaWRlRXRhPTA7Zy5zdG9wKCEwLCEwKVtiLnNob3dNZXRob2RdKHtkdXJhdGlvbjpiLnNob3dEdXJhdGlvbixlYXNpbmc6Yi5zaG93RWFzaW5nfSl9ZnVuY3Rpb24gRygpe3ZhciBrPShoLmhpZGVFdGEtKG5ldyBEYXRlKS5nZXRUaW1lKCkpLwpoLm1heEhpZGVUaW1lKjEwMDt3LndpZHRoKGsrIiUiKX12YXIgYj1sKCkseD1hLmljb25DbGFzc3x8Yi5pY29uQ2xhc3M7InVuZGVmaW5lZCIhPT10eXBlb2YgYS5vcHRpb25zT3ZlcnJpZGUmJihiPWQuZXh0ZW5kKGIsYS5vcHRpb25zT3ZlcnJpZGUpLHg9YS5vcHRpb25zT3ZlcnJpZGUuaWNvbkNsYXNzfHx4KTthOntpZihiLnByZXZlbnREdXBsaWNhdGVzKWlmKGEubWVzc2FnZT09PXkpe3ZhciBxPSEwO2JyZWFrIGF9ZWxzZSB5PWEubWVzc2FnZTtxPSExfWlmKCFxKXtCKys7Zj1uKGIsITApO3ZhciB2PW51bGwsZz1kKCI8ZGl2Lz4iKTtxPWQoIjxkaXYvPiIpO3ZhciBDPWQoIjxkaXYvPiIpLHc9ZCgiPGRpdi8+IiksdD1kKGIuY2xvc2VIdG1sKSxoPXtpbnRlcnZhbElkOm51bGwsaGlkZUV0YTpudWxsLG1heEhpZGVUaW1lOm51bGx9LG09e3RvYXN0SWQ6QixzdGF0ZToidmlzaWJsZSIsc3RhcnRUaW1lOm5ldyBEYXRlLG9wdGlvbnM6YixtYXA6YX07NjxiLmJnQ29sb3IubGVuZ3RoJiYKZy5jc3MoImJhY2tncm91bmQtY29sb3IiLGIuYmdDb2xvcik7YS5pY29uQ2xhc3MmJmcuYWRkQ2xhc3MoYi50b2FzdENsYXNzKS5hZGRDbGFzcyh4KTthLnRpdGxlJiYocS5hcHBlbmQoYS50aXRsZSkuYWRkQ2xhc3MoYi50aXRsZUNsYXNzKSxnLmFwcGVuZChxKSk7YS5tZXNzYWdlJiYoQy5hcHBlbmQoYS5tZXNzYWdlKS5hZGRDbGFzcyhiLm1lc3NhZ2VDbGFzcyksZy5hcHBlbmQoQykpO2IuY2xvc2VCdXR0b24mJih0LmFkZENsYXNzKCJ0b2FzdC1jbG9zZS1idXR0b24iKS5hdHRyKCJyb2xlIiwiYnV0dG9uIiksZy5wcmVwZW5kKHQpKTtiLnByb2dyZXNzQmFyJiYody5hZGRDbGFzcygidG9hc3QtcHJvZ3Jlc3MiKSxnLnByZXBlbmQodykpO2IubmV3ZXN0T25Ub3A\/Zi5wcmVwZW5kKGcpOmYuYXBwZW5kKGcpO2cuaGlkZSgpO2dbYi5zaG93TWV0aG9kXSh7ZHVyYXRpb246Yi5zaG93RHVyYXRpb24sZWFzaW5nOmIuc2hvd0Vhc2luZyxjb21wbGV0ZTpiLm9uU2hvd259KTswPGIudGltZU91dCYmCih2PXNldFRpbWVvdXQoYyxiLnRpbWVPdXQpLGgubWF4SGlkZVRpbWU9cGFyc2VGbG9hdChiLnRpbWVPdXQpLGguaGlkZUV0YT0obmV3IERhdGUpLmdldFRpbWUoKStoLm1heEhpZGVUaW1lLGIucHJvZ3Jlc3NCYXImJihoLmludGVydmFsSWQ9c2V0SW50ZXJ2YWwoRywxMCkpKTsoZnVuY3Rpb24oKXtnLm9uKCJtb3VzZWVudGVyIixGKS5vbigibW91c2VsZWF2ZSIsZSk7aWYoIWIub25jbGljayYmYi50YXBUb0Rpc21pc3MpZy5vbigiY2xpY2siLGMpO2lmKGIuY2xvc2VCdXR0b24mJnQpdC5vbigiY2xpY2siLGZ1bmN0aW9uKGspe2suc3RvcFByb3BhZ2F0aW9uP2suc3RvcFByb3BhZ2F0aW9uKCk6dm9pZCAwIT09ay5jYW5jZWxCdWJibGUmJiEwIT09ay5jYW5jZWxCdWJibGUmJihrLmNhbmNlbEJ1YmJsZT0hMCk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGIub25DbG9zZSliLm9uQ2xvc2UoKTtjKCEwKX0pO2lmKGIub25jbGljaylnLm9uKCJjbGljayIsZnVuY3Rpb24oKXtiLm9uY2xpY2soKTsKYygpfSl9KSgpO3AmJnAobSk7Yi5kZWJ1ZyYmY29uc29sZSYmY29uc29sZS5sb2cobSk7cmV0dXJuIGd9fWZ1bmN0aW9uIGwoKXtyZXR1cm4gZC5leHRlbmQoe30sRSgpLEQub3B0aW9ucyl9ZnVuY3Rpb24gdShhKXtmfHwoZj1uKCkpO2EuaXMoIjp2aXNpYmxlIil8fChhLnJlbW92ZSgpLDA9PT1mLmNoaWxkcmVuKCkubGVuZ3RoJiYoZi5yZW1vdmUoKSx5PXZvaWQgMCkpfXZhciBmLHAsQj0wLEQ9e2NsZWFyOmZ1bmN0aW9uKGEsYyl7dmFyIGU9bCgpO2Z8fG4oZSk7aWYoIUEoYSxlLGMpKWZvcihhPWYuY2hpbGRyZW4oKSxjPWEubGVuZ3RoLTE7MDw9YztjLS0pQShkKGFbY10pLGUpfSxyZW1vdmU6ZnVuY3Rpb24oYSl7dmFyIGM9bCgpO2Z8fG4oYyk7YSYmMD09PWQoIjpmb2N1cyIsYSkubGVuZ3RoP3UoYSk6Zi5jaGlsZHJlbigpLmxlbmd0aCYmZi5yZW1vdmUoKX0sZXJyb3I6ZnVuY3Rpb24oYSxjLGUpe3JldHVybiByKHt0eXBlOiJlcnJvciIsaWNvbkNsYXNzOmwoKS5pY29uQ2xhc3Nlcy5lcnJvciwKbWVzc2FnZTphLG9wdGlvbnNPdmVycmlkZTplLHRpdGxlOmN9KX0sZ2V0Q29udGFpbmVyOm4saW5mbzpmdW5jdGlvbihhLGMsZSl7cmV0dXJuIHIoe3R5cGU6ImluZm8iLGljb25DbGFzczpsKCkuaWNvbkNsYXNzZXMuaW5mbyxtZXNzYWdlOmEsb3B0aW9uc092ZXJyaWRlOmUsdGl0bGU6Y30pfSxvcHRpb25zOnt9LHN1YnNjcmliZTpmdW5jdGlvbihhKXtwPWF9LHN1Y2Nlc3M6ZnVuY3Rpb24oYSxjLGUpe3JldHVybiByKHt0eXBlOiJzdWNjZXNzIixpY29uQ2xhc3M6bCgpLmljb25DbGFzc2VzLnN1Y2Nlc3MsbWVzc2FnZTphLG9wdGlvbnNPdmVycmlkZTplLHRpdGxlOmN9KX0sdmVyc2lvbjoiMi4xLjEiLHdhcm5pbmc6ZnVuY3Rpb24oYSxjLGUpe3JldHVybiByKHt0eXBlOiJ3YXJuaW5nIixpY29uQ2xhc3M6bCgpLmljb25DbGFzc2VzLndhcm5pbmcsbWVzc2FnZTphLG9wdGlvbnNPdmVycmlkZTplLHRpdGxlOmN9KX19LHk7cmV0dXJuIER9KCl9KX0pKCJmdW5jdGlvbiI9PT10eXBlb2YgZGVmaW5lJiYKZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24oeixkKXsidW5kZWZpbmVkIiE9PXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzP21vZHVsZS5leHBvcnRzPWQocmVxdWlyZSgianF1ZXJ5IikpOndpbmRvdy50b2FzdHI9ZCh3aW5kb3cualF1ZXJ5KX0pOwovKiogL20vanMvZGVhbGVyU21zTnVtYmVyLmpzICoqLwp2YXIgX19fZDJjX2RlYWxlclNtc051bWJlcmpzX2Nfb249IjIwMjUtMDUtMjMgMTc6MDk6NTAiOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX2RlYWxlclNtc051bWJlcmpzX2Nfb249IjIwMjQtMDMtMTkgMTE6MzA6MDciOyJ1c2Ugc3RyaWN0IjsKd2luZG93LmRlYWxlclNtc051bWJlcj13aW5kb3cuZGVhbGVyU21zTnVtYmVyfHxuZXcgZnVuY3Rpb24oKXt0aGlzLl9uYW1lPSJkZWFsZXJTbXNOdW1iZXIiO3RoaXMuX3JpZD0wO3RoaXMuX29icz1bXTt0aGlzLl9idWlsZFF1ZXJ5PWZ1bmN0aW9uKGEsYyl7Yz0ic3RyaW5nIj09PXR5cGVvZiBjP2M6KCQoImJvZHkuRU5HTElTSCIpLmxlbmd0aD8iL2VuLyI6Ii9mci8iKSsiYWpheC9nZXREZWFsZXJTbXNOdW1iZXIiO3ZhciBiLGQ9e3dzd2lkdGg6IjAifSxnPVsiVVVJRCIsIm1lc3NhZ2VUeXBlIl07Yys9Ij8iO2ZvcihiIGluIGcpaWYoInVuZGVmaW5lZCI9PT10eXBlb2YgYVtnW2JdXXx8IiI9PWFbZ1tiXV0pcmV0dXJuIHRoaXMuX29uRXJyb3IoJ21hbmRhdG9yeSBmaWVsZCBpcyBtaXNzaW5nICInK2dbYl0rJyInKSwhMTtmb3IoYiBpbiBhKWEuaGFzT3duUHJvcGVydHkoYikmJihkW2JdPWFbYl0pO2ZvcihiIGluIGQpZC5oYXNPd25Qcm9wZXJ0eShiKSYmCihjKz0iJiIrYisiPSIrZW5jb2RlVVJJQ29tcG9uZW50KGRbYl0pKTtyZXR1cm4gY307dGhpcy5fb25FcnJvcj1mdW5jdGlvbihhKXtjb25zb2xlLmVycm9yKHRoaXMuX25hbWUsYSl9O3RoaXMuX25vdGlmeU9ic2VydmVyPWZ1bmN0aW9uKGEsYyl7dGhpcy5fb2JzW2FdKGMpO2RlbGV0ZSB0aGlzLl9vYnNbYV19O3RoaXMuX2RvUmVxdWVzdD1mdW5jdGlvbihhLGMpe3ZhciBiPXRoaXMuX29uUmVzcG9uc2UuYmluZCh0aGlzKTskLmFqYXgoe2NiOmIscmlkOmMsdHlwZToiR0VUIixjYWNoZTohMSxhc3luYzohMCxkYXRhVHlwZToianNvbiIsdXJsOmF9KS5kb25lKGZ1bmN0aW9uKGQpe3RoaXMuY2IodGhpcy5yaWQsbnVsbD09PWQ\/ITE6ZCwhMSl9KS5mYWlsKGZ1bmN0aW9uKGQsZyl7dGhpcy5jYih0aGlzLnJpZCwhMSxnKX0pfTt0aGlzLl9vblJlc3BvbnNlPWZ1bmN0aW9uKGEsYyxiKXtpZighMSE9PWIpdGhpcy5fb25FcnJvcigicmVzcG9uc2UgZXJyb3I6ICIrYik7ZWxzZSB0cnl7ITE9PT0KYz90aGlzLl9vbkVycm9yKCIuZGF0YSBlcXVhbCBmYWxzZSIpOiJ1bmRlZmluZWQiIT09dHlwZW9mIGMuc3VjY2VzcyYmITAhPT1jLnN1Y2Nlc3M\/KHRoaXMuX29uRXJyb3IoIi5kYXRhIGVycm9yOiAiK2MuZXJyb3JNZXNzYWdlKSxjPSExKTooYj0hMSwic3RyaW5nIiE9PXR5cGVvZiBjLmRhdGEubnVtYmVyJiYodGhpcy5fb25FcnJvcigiLmRhdGEgaW52YWxpZCBzbXMgbnVtYmVyIiksYj0hMCksInN0cmluZyIhPT10eXBlb2YgYy5kYXRhLm1lc3NhZ2UmJih0aGlzLl9vbkVycm9yKCIubWVzc2FnZSBpbnZhbGlkIHNtcyBtZXNzYWdlIiksYj0hMCksYz1iPyExOntzbXNudW1iZXI6Yy5kYXRhLm51bWJlcixzbXNtZXNzYWdlOmMuZGF0YS5tZXNzYWdlLHNtc2NvZGU6Yy5kYXRhLnNtc0NvZGV9KX1jYXRjaChkKXt0aGlzLl9vbkVycm9yKCIuZGF0YSBleGNlcHRpb246IitkKSxjPSExfXRoaXMuX25vdGlmeU9ic2VydmVyKGEsYyl9O3RoaXMuX2FkZE9ic2VydmVyPWZ1bmN0aW9uKGEpe2lmKCJmdW5jdGlvbiI9PT0KdHlwZW9mIGEpe3ZhciBjPXRoaXMuX3JpZCsrO3RoaXMuX29ic1tjXT1hO3JldHVybiBjfXRoaXMuX29uRXJyb3IoImlzIG5vdCBhIHZhbGlkIGNhbGxiYWNrIGZ1bmN0aW9uIik7cmV0dXJuITF9O3RoaXMuX2FkZENvbW1vblZhbHVlc1RvRGF0YT1mdW5jdGlvbihhLGMsYil7Im9iamVjdCIhPT10eXBlb2YgYiYmKGI9e30pO2IuVVVJRD1hO2Iuc2Vzc2lvbklkPWM7Yi50ZWNobm9sb2d5PSJIVE1MIjthPWdldENvb2tpZSgiZ2NsaWQiKT9nZXRDb29raWUoImdjbGlkIik6IiI7bnVsbCE9PWEmJiJ1bmRlZmluZWQiIT09YSYmIiIhPT1hJiYhMSE9PWEmJihiLmdvb2dsZUNsaWNrSWQ9YSk7YT1nZXRHYUNsaWVudElkKCk7bnVsbCE9PWEmJiJ1bmRlZmluZWQiIT09YSYmIiIhPT1hJiYhMSE9PWEmJihiLmdhQ2xpZW50SWQ9YSk7YT0kKCIjdGV4dFNlbmRUb0VtYWlsIikubGVuZ3RoPyQoIiN0ZXh0U2VuZFRvRW1haWwiKS52YWwoKToiIjsiIiE9PWEmJihiLnNlbmRUb0VtYWlsPWEpO2E9CiQoIiN0ZXh0U2VuZFRvRW1haWxBREYiKS5sZW5ndGg\/JCgiI3RleHRTZW5kVG9FbWFpbEFERiIpLnZhbCgpOiIiOyIiIT09YSYmKGIuc2VuZFRvRW1haWxBZGY9YSk7YT0kKCdpbnB1dFtkYXRhLWZvcnZhcj0iT1ZFUldSSVRURVJERUFMRVIiXScpLmxlbmd0aD8kKCdpbnB1dFtkYXRhLWZvcnZhcj0iT1ZFUldSSVRURVJERUFMRVIiXScpLnZhbCgpOiIiOyIiIT09YSYmKGIuZGVhbGVyTmFtZT1hKTtsZXQgZD1iLm1ha2UudG9Mb3dlckNhc2UoKTtpZigkKCIjbXVsdGktYWRkcmVzcy1zdWJtaXNzaW9uIikubGVuZ3RoJiYiIiE9PWQmJiJjYXJkZXRhaWwuaHRtbCIhPSQoIiNQQUdFSUQiKS52YWwoKSl7YT0kKCIjbXVsdGktYWRkcmVzcy1zdWJtaXNzaW9uIikuZmluZCgic2VsZWN0Iik7bGV0IGc9ZW1haWxIYW5kbGVyLmdldERlcCgpO2EuZmluZCgib3B0aW9uW2RhdGEtYnJhbmRzXSIpLmVhY2goZnVuY3Rpb24oZSxmKXtlPSQoZikuZGF0YSgiYnJhbmRzIikudG9Mb3dlckNhc2UoKTsKaWYoIiIhPWUmJmUuc3BsaXQoIiwiKS5pbmNsdWRlcyhkKSl7bGV0IGg9ZT0iIixrPWYudGV4dDtzd2l0Y2goZyl7Y2FzZSAiVVNFRCI6ZT0kKGYpLmRhdGEoImVtYWlsdXNlZCIpO2g9JChmKS5kYXRhKCJlbWFpbGFkZnVzZWQiKTticmVhaztjYXNlICJTRVJWSUNFIjplPSQoZikuZGF0YSgiZW1haWxzZXJ2aWNlIik7aD0kKGYpLmRhdGEoImVtYWlsYWRmc2VydmljZSIpO2JyZWFrO2Nhc2UgIlBBUlRTIjplPSQoZikuZGF0YSgiZW1haWxwYXJ0cyIpfHwkKGYpLmRhdGEoImVtYWlsc2VydmljZSIpO2g9JChmKS5kYXRhKCJlbWFpbGFkZnBhcnRzIil8fCQoZikuZGF0YSgiZW1haWxhZGZzZXJ2aWNlIik7YnJlYWs7Y2FzZSAiRklOQU5DRSI6ZT0kKGYpLmRhdGEoImVtYWlsZmluYW5jZSIpO2g9JChmKS5kYXRhKCJlbWFpbGFkZmZpbmFuY2UiKTticmVhaztjYXNlICJORVciOmU9JChmKS5kYXRhKCJlbWFpbCIpLGg9JChmKS5kYXRhKCJlbWFpbGFkZiIpfWlmKCIiIT09ZXx8IiIhPT1oKWIuc2VuZFRvRW1haWw9CmUsYi5zZW5kVG9FbWFpbEFkZj1oLGIuZGVhbGVyTmFtZT1rfX0pfWE9JCgiI0NBTVBBSUdOSUQiKS5sZW5ndGg\/JCgiI0NBTVBBSUdOSUQiKS52YWwoKToiIjsiIiE9PWEmJihiLmNhbXBhaWduSWQ9YSk7Y29uc29sZS5sb2codGhpcy5fbmFtZSsiLmRhdGEiLGIpO3JldHVybiBifTt0aGlzLl9pbml0PWZ1bmN0aW9uKGEsYyxiLGQsZyl7dmFyIGU7aWYoITE9PT0oYT10aGlzLl9idWlsZFF1ZXJ5KHRoaXMuX2FkZENvbW1vblZhbHVlc1RvRGF0YShhLGMsYiksZykpfHwhMT09PShlPXRoaXMuX2FkZE9ic2VydmVyKGQpKSlyZXR1cm4hMTtzZXRUaW1lb3V0KHRoaXMuX2RvUmVxdWVzdC5iaW5kKHRoaXMsYSxlKSl9O3RoaXMuZ2V0U21zTnVtYmVyPWZ1bmN0aW9uKGEsYyxiKXtpZigib2JqZWN0Ij09PXR5cGVvZiB3aW5kb3cuYWN0aXZlVXNlclByb2ZpbGVNbmcpYWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJDYWxsYmFjayh0aGlzLl9pbml0LmJpbmQodGhpcyx3aW5kb3cuYWN0aXZlVXNlclByb2ZpbGVNbmcudWlkLAp3aW5kb3cuYWN0aXZlVXNlclByb2ZpbGVNbmcuZ2V0U2Vzc2lvbklEKCksYSxjLGIpKTtlbHNlIHJldHVybiB0aGlzLl9vbkVycm9yKCciYWN0aXZlVXNlclByb2ZpbGVNbmciIGlzIG5vdCBhbiBvYmplY3QnKSwhMTtyZXR1cm4hMH19OwovKiogL20vanMvZ2VvTG9jYXRpb24uanMgKiovCnZhciBfX19kMmNfZ2VvTG9jYXRpb25qc19jX29uPSIyMDI1LTA1LTIzIDE3OjEwOjI0IjsndXNlIHN0cmljdCc7dmFyIF9fX2QyY19nZW9Mb2NhdGlvbmpzX2Nfb249IjIwMjUtMDItMjYgMDk6MzA6MTEiOyJ1c2Ugc3RyaWN0IjsKdmFyIGdlb0xvY2F0b3I9ZnVuY3Rpb24oZil7dmFyIGE9dGhpczthLm1hcHNBUElLZXk9bnVsbDthLnVzZUhUTUw1PSEwO2EuZ2VvY29kZUxvY2F0aW9uPSEwO2EuYXR0ZW1wdFBhZ2VOdW09MDthLnRyYWNrTG9jYXRpb25HQT0hMTthLmZvcmNlR2VvbG9jQXR0ZW1wdD0hMTthLnNob3dQb2ludGVyTWVzc2FnZT0hMDthLnRpbWVvdXRzPVtdO2EuYnJvd3Nlcj0iIjthLmlzTW9iaWxlPSIxIj09JCgiI2lzbW9iaWxlIikudmFsKCk7YS5nZW9sb2NTdGF0dXNlcz17T0s6IlNVQ0NFU1MiLFJFRlVTRUQ6IlJFRlVTRUQiLENPT0tJRV9BQ0NFUFRFRDoiUFJFX0FDQ0VQVEVEIixDT09LSUVfUkVGVVNFRDoiUFJFX1JFRlVTRUQiLENBTkNFTEVEOiJDQU5DRUxFRCIsRkFJTDoiRkFJTEVEIn07YS5nZW9sb2NFcnJvcnM9e0lOVkFMSURfUkVTUE9OU0U6IklOVkFMSURfUkVTUE9OU0UiLENPTk5FQ1RJT05fRkFJTEVEOiJDT05ORUNUSU9OX0ZBSUxFRCIsR0VPTE9DX0ZBSUxFRDoiR0VPTE9DX0ZBSUxFRCIsCkdFT0xPQ19SRUZVU0VEOiJHRU9MT0NfUkVGVVNFRCIsR0VPQ09ERV9GQUlMRUQ6IkdFT0NPREVfRkFJTEVEIn07YS5nZW9sb2NSZXN1bHQ9e3Jlc3VsdDowLGdlb2xvY19kYXRlOiIiLGdlb2xvY19zdGF0dXM6YS5nZW9sb2NTdGF0dXNlcy5GQUlMLGdlb2NvZGVfc3RhdHVzOjAsbGF0aXR1ZGU6MCxsb25naXR1ZGU6MCxhY2N1cmFjeTowLHBvc3RhbF9jb2RlOiIiLGdlb2NvZGVfYWRkcmVzczoiIixnZW9jb2RlX2FkZHJlc3Nfc3RyOiIifTthLmdlb2xvY0NhbGxiYWNrPWZ1bmN0aW9uKCl7ZihhLmdlb2xvY1Jlc3VsdCk7Zj1mdW5jdGlvbigpe2NvbnNvbGUubG9nKCJHZW8gY2FsbGJhY2sgYWxyZWFkeSBmaXJlZC4iKX19O2EuX2luaXQ9ZnVuY3Rpb24oKXthLmlzTW9iaWxlJiYoYS5zaG93UG9pbnRlck1lc3NhZ2U9ITEpO2lmKDA8YS5hdHRlbXB0UGFnZU51bSl7dmFyIGI9bnVsbCE9Q29va2llcy5nZXQoImdlb2xvY1BhZ2VWaWV3cyIpP3BhcnNlSW50KENvb2tpZXMuZ2V0KCJnZW9sb2NQYWdlVmlld3MiKSkrCjE6MTtDb29raWVzLnNldCgiZ2VvbG9jUGFnZVZpZXdzIixiPGEuYXR0ZW1wdFBhZ2VOdW0\/YjowLG51bGwsIi8iKTtpZihiPGEuYXR0ZW1wdFBhZ2VOdW0pcmV0dXJuIGEuZ2VvbG9jUmVzdWx0LnJlc3VsdD0wLGEuZ2VvbG9jUmVzdWx0LnN0YXR1cz1hLmdlb2xvY1N0YXR1c2VzLkNBTkNFTEVELGEuZ2VvbG9jQ2FsbGJhY2soKSwhMX1pZighYS5mb3JjZUdlb2xvY0F0dGVtcHQmJkNvb2tpZXMuZ2V0KCJnZW9sb2NQcm9jZXNzZWQiKSlyZXR1cm4gYj1KU09OLnBhcnNlKENvb2tpZXMuZ2V0KCJnZW9sb2NQcm9jZXNzZWQiKSksIjEiPT1iLmFjY2VwdGVkPyhhLmdlb2xvY1Jlc3VsdC5yZXN1bHQ9MSxhLmdlb2xvY1Jlc3VsdC5nZW9sb2NfZGF0ZT1iLmdlb2xvY19kYXRlLGEuZ2VvbG9jUmVzdWx0Lmdlb2xvY19zdGF0dXM9YS5nZW9sb2NTdGF0dXNlcy5DT09LSUVfQUNDRVBURUQsYS5nZW9sb2NSZXN1bHQubGF0aXR1ZGU9Yi5sYXRpdGl1ZGUsYS5nZW9sb2NSZXN1bHQubG9uZ2l0dWRlPQpiLmxvbmdpdHVkZSxhLmdlb2xvY1Jlc3VsdC5nZW9jb2RlX2FkZHJlc3M9Yi5hZGRyZXNzLGEuZ2VvbG9jUmVzdWx0Lmdlb2NvZGVfYWRkcmVzc19zdHI9Yi5hZGRyZXNzX3N0cik6KGEuZ2VvbG9jUmVzdWx0LnJlc3VsdD0wLGEuZ2VvbG9jUmVzdWx0LnN0YXR1cz1hLmdlb2xvY1N0YXR1c2VzLkNPT0tJRV9SRUZVU0VEKSxhLmdlb2xvY0NhbGxiYWNrKCksITE7aWYoImh0dHBzOiIhPWxvY2F0aW9uLnByb3RvY29sKXJldHVybiBhLmdlb2xvY1Jlc3VsdC5yZXN1bHQ9MCxhLmdlb2xvY1Jlc3VsdC5zdGF0dXM9YS5nZW9sb2NTdGF0dXNlcy5DQU5DRUxFRCxhLmdlb2xvY0NhbGxiYWNrKCksITE7aWYobHRfSUU5fHwhbmF2aWdhdG9yLmdlb2xvY2F0aW9uKWEudXNlSFRNTDU9ITE7bmF2aWdhdG9yLmJyb3dzZXI9ZnVuY3Rpb24oKXt2YXIgYz1uYXZpZ2F0b3IudXNlckFnZW50LGQ9Yy5tYXRjaCgvKG9wZXJhfGNocm9tZXxzYWZhcml8ZmlyZWZveHxtc2llfHRyaWRlbnQoPz1cLykpXC8\/XHMqKFxkKykvaSl8fApbXTtpZigvdHJpZGVudC9pLnRlc3QoZFsxXSkpe3ZhciBlPS9cYnJ2WyA6XSsoXGQrKS9nLmV4ZWMoYyl8fFtdO3JldHVybiJJRXhwbG9yZXIgIisoZVsxXXx8IiIpfWlmKCJDaHJvbWUiPT09ZFsxXSYmKGU9Yy5tYXRjaCgvXGJPUFJcLyhcZCspLyksbnVsbCE9ZSkpcmV0dXJuIk9wZXJhICIrZVsxXTtkPWRbMl0\/W2RbMV0sZFsyXV06W25hdmlnYXRvci5hcHBOYW1lLG5hdmlnYXRvci5hcHBWZXJzaW9uLCItPyJdO251bGwhPShlPWMubWF0Y2goL3ZlcnNpb25cLyhcZCspL2kpKSYmZC5zcGxpY2UoMSwxLGVbMV0pO3JldHVybiBkLmpvaW4oIiAiKX0oKTthLmJyb3dzZXI9bmF2aWdhdG9yLmJyb3dzZXI7cmV0dXJuITB9O2EuaGFuZGxlTG9jYXRpb25TdWNjZXNzPWZ1bmN0aW9uKCl7dmFyIGI9IkxhdGl0dWRlOiAiK2EuZ2VvbG9jUmVzdWx0LmxhdGl0dWRlKyI7IExvbmdpdHVkZTogIithLmdlb2xvY1Jlc3VsdC5sb25naXR1ZGU7Mzw9YS5nZW9sb2NSZXN1bHQucG9zdGFsX2NvZGUubGVuZ3RoJiYKKGI9YS5nZW9sb2NSZXN1bHQucG9zdGFsX2NvZGUpO2EudHJhY2tMb2NhdGlvbigiR2VvbG9jYXRpb24iLCJBY2NlcHRlZCIsYik7YS5nZW9sb2NSZXN1bHQuZ2VvbG9jX2RhdGU9KG5ldyBEYXRlKS5nZXRUaW1lKCk7Yj1uZXcgRGF0ZTtiLnNldEhvdXJzKDIzLDU5LDU5LDApO0Nvb2tpZXMuc2V0KCJnZW9sb2NQcm9jZXNzZWQiLEpTT04uc3RyaW5naWZ5KHthY2NlcHRlZDoxLGdlb2xvY19kYXRlOmEuZ2VvbG9jUmVzdWx0Lmdlb2xvY19kYXRlLGxhdGl0dWRlOmEuZ2VvbG9jUmVzdWx0LmxhdGl0dWRlLGxvbmdpdHVkZTphLmdlb2xvY1Jlc3VsdC5sb25naXR1ZGUscG9zdGFsX2NvZGU6YS5nZW9sb2NSZXN1bHQucG9zdGFsX2NvZGUsYWNjdXJhY3k6YS5nZW9sb2NSZXN1bHQuYWNjdXJhY3ksYWRkcmVzczphLmdlb2xvY1Jlc3VsdC5nZW9jb2RlX2FkZHJlc3MsYWRkcmVzc19zdHI6YS5nZW9sb2NSZXN1bHQuZ2VvY29kZV9hZGRyZXNzX3N0cn0pLGIsIi8iKTthLmdlb2xvY0NhbGxiYWNrKCl9OwphLmhhbmRsZUxvY2F0aW9uRXJyb3I9ZnVuY3Rpb24oYixjKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIGN8fG51bGw9PWMpYz0iIjthLmdlb2xvY1Jlc3VsdC5yZXN1bHQ9MDthLmdlb2xvY1Jlc3VsdC5nZW9sb2NfZGF0ZT0obmV3IERhdGUpLmdldFRpbWUoKTthLmdlb2xvY1Jlc3VsdC5nZW9sb2Nfc3RhdHVzPWEuZ2VvbG9jU3RhdHVzZXMuRkFJTDtzd2l0Y2goYil7Y2FzZSBhLmdlb2xvY0Vycm9ycy5JTlZBTElEX1JFU1BPTlNFOmM9Ikdlb2xvYyBlcnJvciBtZXNhZ2U6IEludmFsaWQgcmVzcG9uc2UgZGF0YSI7YnJlYWs7Y2FzZSBhLmdlb2xvY0Vycm9ycy5DT05ORUNUSU9OX0ZBSUxFRDpjPSJHZW9sb2MgZXJyb3IgbWVzYWdlOiBDb25lY3Rpb24gZmFpbGVkIjticmVhaztjYXNlIGEuZ2VvbG9jRXJyb3JzLkdFT0xPQ19SRUZVU0VEOmEuZ2VvbG9jUmVzdWx0Lmdlb2xvY19zdGF0dXM9YS5nZW9sb2NTdGF0dXNlcy5SRUZVU0VEO2JyZWFrO2Nhc2UgYS5nZW9sb2NFcnJvcnMuR0VPTE9DX0ZBSUxFRDpicmVhazsKY2FzZSBhLmdlb2xvY0Vycm9ycy5HRU9DT0RFX0ZBSUxFRDpjPSJHZW9sb2MgZXJyb3IgbWVzYWdlOiBJbnZhbGlkIHJlc3BvbnNlIGRhdGEiO2JyZWFrO2RlZmF1bHQ6Yz0iVW5rbm93biBlcnJvciBvY3VycmVkIn1hLnRyYWNrTG9jYXRpb24oIkdlb2xvY2F0aW9uIiwiRmFpbGVkIixjKTthLmdlb2xvY0NhbGxiYWNrKCl9O2EuZ2V0TG9jYXRpb249ZnVuY3Rpb24oKXthLl9pbml0KCkmJigwPT1hLnVzZUhUTUw1P2EuZ2V0R29vZ2xlU2VydmljZUxvY2F0aW9uKCk6YS5nZXRIVE1MNUxvY2F0aW9uKCkpfTthLmdldEdvb2dsZVNlcnZpY2VMb2NhdGlvbj1mdW5jdGlvbigpe2EuaGFuZGxlTG9jYXRpb25TdWNjZXNzKCk7cmV0dXJuITF9O2EuZ2V0SFRNTDVMb2NhdGlvbj1mdW5jdGlvbigpe2Euc2hvd0dlb2xvY01zZygpO25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZnVuY3Rpb24oYil7YS5oaWRlR2VvbG9jTXNnKCk7YS5jbGVhclNldFRpbWVvdXRzKCk7CmEuZ2VvbG9jUmVzdWx0LnJlc3VsdD0xO2EuZ2VvbG9jUmVzdWx0Lmdlb2xvY19zdGF0dXM9YS5nZW9sb2NTdGF0dXNlcy5PSzthLmdlb2xvY1Jlc3VsdC5sYXRpdHVkZT1iLmNvb3Jkcy5sYXRpdHVkZTthLmdlb2xvY1Jlc3VsdC5sb25naXR1ZGU9Yi5jb29yZHMubG9uZ2l0dWRlO2EuZ2VvbG9jUmVzdWx0LmFjY3VyYWN5PWIuY29vcmRzLmFjY3VyYWN5O2lmKDEhPWEuZ2VvY29kZUxvY2F0aW9uKXJldHVybiBhLmhhbmRsZUxvY2F0aW9uU3VjY2VzcygpLCExO2EubGF0TG9uZ0dlb2NvZGUoYi5jb29yZHMubGF0aXR1ZGUsYi5jb29yZHMubG9uZ2l0dWRlKX0sZnVuY3Rpb24oYil7Y29uc29sZS5sb2coYik7dmFyIGM9Ikdlb2xvYyBlcnJvciBjb2RlOiAiK2IuY29kZSsiLCBnZW9sb2MgZXJyb3IgbWVzYWdlOiAiK2IubWVzc2FnZTthLmhpZGVHZW9sb2NNc2coKTthLmNsZWFyU2V0VGltZW91dHMoKTtDb29raWVzLnNldCgiZ2VvbG9jUHJvY2Vzc2VkIixKU09OLnN0cmluZ2lmeSh7YWNjZXB0ZWQ6MH0pLAoxLCIvIik7dmFyIGQ9YS5nZW9sb2NFcnJvcnMuR0VPTE9DX1JFRlVTRUQ7MSE9cGFyc2VJbnQoYi5jb2RlKSYmKGQ9YS5nZW9sb2NFcnJvcnMuR0VPTE9DX0ZBSUxFRCk7YS5oYW5kbGVMb2NhdGlvbkVycm9yKGQsYyl9LHt0aW1lb3V0OjI1RTN9KX07YS5sYXRMb25nR2VvY29kZT1mdW5jdGlvbihiLGMpe2EuZ2VvbG9jUmVzdWx0Lmdlb2NvZGVfYWRkcmVzcz1iKyJ8IitjO2EuZ2VvbG9jUmVzdWx0Lmdlb2NvZGVfYWRkcmVzc19zdHI9IkxhdGl0dWRlOiAiK2IrIjsgTG9uZ2l0dWRlOiAiK2M7YS5oYW5kbGVMb2NhdGlvblN1Y2Nlc3MoKX07YS50cmFja1Bvc3RhbD1mdW5jdGlvbigpe2lmKCRjb29raWU9Q29va2llcy5nZXQoIkhUTUw1R2VvIikpaWYoJGNvb2tpZT1KU09OLnBhcnNlKCRjb29raWUpLCRjb29raWUucG9zdGFsX2NvZGUpcmV0dXJuO2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIGEuZ2VvbG9jUmVzdWx0LnBvc3RhbF9jb2RlJiYiIiE9PWEuZ2VvbG9jUmVzdWx0LnBvc3RhbF9jb2RlKXt2YXIgYj0KYS5nZW9sb2NSZXN1bHQucG9zdGFsX2NvZGUrInwiK2EuZ2VvbG9jUmVzdWx0LmFjY3VyYWN5OyJ1bmRlZmluZWQiIT10eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcmJiJ1bmRlZmluZWQiIT10eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudD8oInVuZGVmaW5lZCIhPT10eXBlb2YgZGVidWcmJmRlYnVnKCJMb2cgRXZlbnQiLGEuZ2VvbG9jUmVzdWx0LnBvc3RhbF9jb2RlLCJIVE1MNUdlby5wb3N0YWwiKSxhY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50KGIsIkhUTUw1R2VvLnBvc3RhbCIpKToidW5kZWZpbmVkIiE9PXR5cGVvZiBkZWJ1ZyYmZGVidWcoIiFVTkxPR0dFRCBFVkVOVCEiLGEuZ2VvbG9jUmVzdWx0LnBvc3RhbF9jb2RlLCJIVE1MNUdlby5wb3N0YWwiKTtiPW5ldyBEYXRlO2Iuc2V0SG91cnMoMjMsNTksNTksMCk7Q29va2llcy5zZXQoIkhUTUw1R2VvIixKU09OLnN0cmluZ2lmeSh7cG9zdGFsX2NvZGU6MX0pLGIsIi8iKX19OwphLmdldEFkZHJlc3NDb29yZD1mdW5jdGlvbihiLGMpe3JldHVybiExfTthLnRyYWNrTG9jYXRpb249ZnVuY3Rpb24oYixjLGQpe2lmKCFhLnRyYWNrTG9jYXRpb25HQSlyZXR1cm4hMX07YS5jbGVhclNldFRpbWVvdXRzPWZ1bmN0aW9uKCl7Zm9yKHZhciBiPTA7YjxhLnRpbWVvdXRzLmxlbmd0aDtiKyspY2xlYXJUaW1lb3V0KGEudGltZW91dHNbYl0pO2EudGltZW91dHM9W119O2Euc2hvd0dlb2xvY01zZz1mdW5jdGlvbigpe2lmKCFhLnNob3dQb2ludGVyTWVzc2FnZSlyZXR1cm4hMTthLmNsZWFyU2V0VGltZW91dHMoKTt2YXIgYj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Z2VvbG9jRmFpbCgpfSwzRTQpO2EudGltZW91dHMucHVzaChiKTtpZigtMTxhLmJyb3dzZXIuaW5kZXhPZigiRmlyZWZveCIpfHwtMTxhLmJyb3dzZXIuaW5kZXhPZigiSUUiKSkkKCIuZ2VvbG9jLW1vZGFsLWJnIikub2ZmKCJjbGljayIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtnZW9sb2NGYWlsKCk7Y2xlYXJUaW1lb3V0KGIpfSksCiQoIiNnZW9sb2NhdGlvbk1zZyIpLm9mZigiY2xpY2siKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7Z2VvbG9jRmFpbCgpO2NsZWFyVGltZW91dChiKX0pLCQoIiNnZW9sb2NhdGlvbk1zZ0lFIikub2ZmKCJjbGljayIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtnZW9sb2NGYWlsKCk7Y2xlYXJUaW1lb3V0KGIpfSk7dmFyIGM9Imdlb2xvY2F0aW9uTXNnIixkPSEwLGU9e3RvcDoiMCIsbGVmdDoiMCJ9O3N3aXRjaCghMCl7Y2FzZSAtMTxhLmJyb3dzZXIuaW5kZXhPZigiSUUiKTplPXtib3R0b206IjBweCIsbGVmdDoiNDMlIn07Yz0iZ2VvbG9jYXRpb25Nc2dJRSI7YnJlYWs7Y2FzZSAtMTxhLmJyb3dzZXIuaW5kZXhPZigiRmlyZWZveCIpOmU9e3RvcDoiOTBweCIsbGVmdDoiNXB4In07JCgiaW1nLmJ1dHRvbl9wb2ludGVyIikuY3NzKCJsZWZ0IiwiNzVweCIpOyQoImltZy5idXR0b25fcG9pbnRlciIpLmNzcygidG9wIiwiMzVweCIpOy0xPT0kKCIjdHh0VXNlckFnZW50IikudmFsKCkuaW5kZXhPZigiV2luZG93cyIpJiYKJCgiaW1nLmJ1dHRvbl9wb2ludGVyIikuY3NzKCJsZWZ0IiwiMTc1cHgiKTticmVhaztjYXNlIC0xPGEuYnJvd3Nlci5pbmRleE9mKCJDaHJvbWUiKTplPXt0b3A6IjY1cHgiLGxlZnQ6IjBweCJ9OyQoImltZy5idXR0b25fcG9pbnRlciIpLmNzcygibGVmdCIsIjIxMHB4Iik7LTE9PSQoIiN0eHRVc2VyQWdlbnQiKS52YWwoKS5pbmRleE9mKCJXaW5kb3dzIikmJihlPXt0b3A6Ijc1cHgiLGxlZnQ6IjUwcHgifSwkKCJpbWcuYnV0dG9uX3BvaW50ZXIiKS5jc3MoImxlZnQiLCIyNDBweCIpKTticmVhaztjYXNlIC0xPGEuYnJvd3Nlci5pbmRleE9mKCJTYWZhcmkiKTplPXt0b3A6IjUxNXB4IixsZWZ0OiIzNSUifTtkPSEwO2JyZWFrO2Nhc2UgLTE8YS5icm93c2VyLmluZGV4T2YoIk9wZXJhIik6ZT17dG9wOiIwIixsZWZ0OiIwIn07ZD0hMTticmVhaztkZWZhdWx0OmU9e3RvcDoiMCIsbGVmdDoiMCJ9LGQ9ITF9ZCYmKCJ1bmRlZmluZWQiIT10eXBlb2YgJCgiLnJldmVhbC1tb2RhbC1iZyIpLnZhbCgpJiYKImJsb2NrIj09JCgiLnJldmVhbC1tb2RhbC1iZyIpLmNzcygiZGlzcGxheSIpJiYkKCIucmV2ZWFsLW1vZGFsLWJnIikuaGlkZSgpLCQoIi5nZW9sb2MtbW9kYWwtYmciKS5zaG93KCksJCgiIyIrYykuY3NzKGUpLCQoIiMiK2MpLnNob3coKSwidW5kZWZpbmVkIj09dHlwZW9mIHNpdGVTZWN0aW9uJiYoc2l0ZVNlY3Rpb249IlVOREVGSU5FRCIpLGEudHJhY2tMb2NhdGlvbigiR2VvbG9jYXRpb24iLCJTZWN0aW9uLSIrc2l0ZVNlY3Rpb24sIiIpKX07YS5oaWRlR2VvbG9jTXNnPWZ1bmN0aW9uKGIpe2lmKCFhLnNob3dQb2ludGVyTWVzc2FnZSlyZXR1cm4hMTtpZigidW5kZWZpbmVkIj09dHlwZW9mIGJ8fG51bGw9PWIpYj0hMTskKCIuZ2VvbG9jLW1vZGFsLWJnIikuaGlkZSgpO2J8fCgkKCIjZ2VvbG9jYXRpb25Nc2ciKS5oaWRlKCksJCgiI2dlb2xvY2F0aW9uTXNnSUUiKS5oaWRlKCkpfTthLmdlb2xvY0ZhaWw9ZnVuY3Rpb24oKXstMTxhLmJyb3dzZXIuaW5kZXhPZigiSUUiKSYmCmxvY2F0aW9uLnJlbG9hZCgpO292ZXJsYXlPbmx5PSEwO2lmKC0xPGEuYnJvd3Nlci5pbmRleE9mKCJGaXJlZm94Iil8fC0xPGEuYnJvd3Nlci5pbmRleE9mKCJJRSIpKW92ZXJsYXlPbmx5PSExO2EuaGlkZUdlb2xvY01zZyhvdmVybGF5T25seSk7cmV0dXJuITF9O2EuZ2V0RGlzdGFuY2U9ZnVuY3Rpb24oYixjLGQpe3JldHVybiBhLmdldERpc3RhbmNlSGF2ZXJzaW5lKGIsYyl9O2EuZ2V0RGlzdGFuY2VIYXZlcnNpbmU9ZnVuY3Rpb24oYixjKXt2YXIgZD0oYy5sYXQtYi5sYXQpKk1hdGguUEkvMTgwLGU9KGMubG9uZy1iLmxvbmcpKk1hdGguUEkvMTgwO2I9TWF0aC5zaW4oZC8yKSpNYXRoLnNpbihkLzIpK01hdGguY29zKGIubGF0Kk1hdGguUEkvMTgwKSpNYXRoLmNvcyhjLmxhdCpNYXRoLlBJLzE4MCkqTWF0aC5zaW4oZS8yKSpNYXRoLnNpbihlLzIpO3JldHVybigxMjc1NjI3NCpNYXRoLmF0YW4yKE1hdGguc3FydChiKSxNYXRoLnNxcnQoMS1iKSkpLnRvRml4ZWQoMil9O2EuZ2V0RGlzdGFuY2VHbWFwcz0KZnVuY3Rpb24oYixjKXtyZXR1cm4gYS5nZXREaXN0YW5jZUhhdmVyc2luZShiLGMpfX07Ci8qKiAvbS9qcy9wcmludFRoaXMuanMgKiovCnZhciBfX19kMmNfcHJpbnRUaGlzanNfY19vbj0iMjAyNS0wNS0yMyAxNzoxMTo0MCI7J3VzZSBzdHJpY3QnO3ZhciBfX19kMmNfcHJpbnRUaGlzanNfY19vbj0iMjAyNC0wNy0zMCAxMDozMDowOCI7InVzZSBzdHJpY3QiOwooZnVuY3Rpb24oYyl7ZnVuY3Rpb24gcihkLGUpe2UmJmQuYXBwZW5kKGUuanF1ZXJ5P2UuY2xvbmUoKTplKX1mdW5jdGlvbiB0KGQsZSxrKXt2YXIgZj1lLmNsb25lKGsuZm9ybVZhbHVlcyk7ay5mb3JtVmFsdWVzJiZ1KGUsZiwic2VsZWN0LCB0ZXh0YXJlYSIpO2sucmVtb3ZlU2NyaXB0cyYmZi5maW5kKCJzY3JpcHQiKS5yZW1vdmUoKTtrLnByaW50Q29udGFpbmVyP2YuYXBwZW5kVG8oZCk6Zi5lYWNoKGZ1bmN0aW9uKCl7Yyh0aGlzKS5jaGlsZHJlbigpLmFwcGVuZFRvKGQpfSl9ZnVuY3Rpb24gdShkLGUsayl7dmFyIGY9ZC5maW5kKGspO2UuZmluZChrKS5lYWNoKGZ1bmN0aW9uKGcscSl7YyhxKS52YWwoZi5lcShnKS52YWwoKSl9KX12YXIgYTtjLmZuLnByaW50VGhpcz1mdW5jdGlvbihkKXthPWMuZXh0ZW5kKHt9LGMuZm4ucHJpbnRUaGlzLmRlZmF1bHRzLGQpO3ZhciBlPXRoaXMgaW5zdGFuY2VvZiBqUXVlcnk\/dGhpczpjKHRoaXMpO2Q9InByaW50VGhpcy0iKyhuZXcgRGF0ZSkuZ2V0VGltZSgpOwppZih3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUhPT1kb2N1bWVudC5kb21haW4mJm5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL21zaWUvaSkpe3ZhciBrPSdqYXZhc2NyaXB0OmRvY3VtZW50LndyaXRlKCI8aGVhZD48c2NyaXB0PmRvY3VtZW50LmRvbWFpbj1cXCInK2RvY3VtZW50LmRvbWFpbisnXFwiO1x4M2Mvc2NyaXB0PjwvaGVhZD48Ym9keT48L2JvZHk+IiknLGY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7Zi5uYW1lPSJwcmludElmcmFtZSI7Zi5pZD1kO2YuY2xhc3NOYW1lPSJNU0lFIjtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGYpO2Yuc3JjPWt9ZWxzZSBjKCI8aWZyYW1lIGlkPSciK2QrIicgbmFtZT0ncHJpbnRJZnJhbWUnIC8+IikuYXBwZW5kVG8oImJvZHkiKTt2YXIgZz1jKCIjIitkKTthLmRlYnVnfHxnLmNzcyh7cG9zaXRpb246ImFic29sdXRlIix3aWR0aDoiMHB4IixoZWlnaHQ6IjBweCIsbGVmdDoiLTYwMHB4Iix0b3A6Ii02MDBweCJ9KTsKc2V0VGltZW91dChmdW5jdGlvbigpe2Z1bmN0aW9uIHEoYixwKXtiPWIuZ2V0KDApO2I9Yi5jb250ZW50V2luZG93fHxiLmNvbnRlbnREb2N1bWVudHx8YjtiPWIuZG9jdW1lbnR8fGIuY29udGVudERvY3VtZW50fHxiO2Iub3BlbigpO2Iud3JpdGUocCk7Yi5jbG9zZSgpfWEuZG9jdHlwZVN0cmluZyYmcShnLGEuZG9jdHlwZVN0cmluZyk7dmFyIG09Zy5jb250ZW50cygpLGw9bS5maW5kKCJoZWFkIiksbj1tLmZpbmQoImJvZHkiKSxoPWMoImJhc2UiKTtoPSEwPT09YS5iYXNlJiYwPGgubGVuZ3RoP2guYXR0cigiaHJlZiIpOiJzdHJpbmciPT09dHlwZW9mIGEuYmFzZT9hLmJhc2U6ZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2wrIi8vIitkb2N1bWVudC5sb2NhdGlvbi5ob3N0O2wuYXBwZW5kKCc8YmFzZSBocmVmPSInK2grJyI+Jyk7YS5pbXBvcnRDU1MmJmMoImxpbmtbcmVsPXN0eWxlc2hlZXRdIikuZWFjaChmdW5jdGlvbigpe3ZhciBiPWModGhpcykuYXR0cigiaHJlZiIpO2lmKGIpe3ZhciBwPQpjKHRoaXMpLmF0dHIoIm1lZGlhIil8fCJhbGwiO2wuYXBwZW5kKCI8bGluayB0eXBlPSd0ZXh0L2NzcycgcmVsPSdzdHlsZXNoZWV0JyBocmVmPSciK2IrIicgbWVkaWE9JyIrcCsiJy8+Iil9fSk7YS5pbXBvcnRTdHlsZSYmYygic3R5bGUiKS5lYWNoKGZ1bmN0aW9uKCl7bC5hcHBlbmQodGhpcy5vdXRlckhUTUwpfSk7YS5wYWdlVGl0bGUmJmwuYXBwZW5kKCI8dGl0bGU+IithLnBhZ2VUaXRsZSsiPC90aXRsZT4iKTthLmxvYWRDU1MmJihBcnJheS5pc0FycmF5KGEubG9hZENTUyk\/alF1ZXJ5LmVhY2goYS5sb2FkQ1NTLGZ1bmN0aW9uKGIscCl7bC5hcHBlbmQoIjxsaW5rIHR5cGU9J3RleHQvY3NzJyByZWw9J3N0eWxlc2hlZXQnIGhyZWY9JyIrdGhpcysiJy8+Iil9KTpsLmFwcGVuZCgiPGxpbmsgdHlwZT0ndGV4dC9jc3MnIHJlbD0nc3R5bGVzaGVldCcgaHJlZj0nIithLmxvYWRDU1MrIicvPiIpKTtpZihoPWEuY29weVRhZ0NsYXNzZXMpaD0hMD09PWg\/ImJoIjpoLC0xIT09aC5pbmRleE9mKCJiIikmJgpuLmFkZENsYXNzKGMoImJvZHkiKVswXS5jbGFzc05hbWUpLC0xIT09aC5pbmRleE9mKCJoIikmJm0uZmluZCgiaHRtbCIpLmFkZENsYXNzKGMoImh0bWwiKVswXS5jbGFzc05hbWUpO3IobixhLmhlYWRlcik7aWYoYS5jYW52YXMpe3ZhciB2PTA7ZS5maW5kKCJjYW52YXMiKS5hZGRCYWNrKCJjYW52YXMiKS5lYWNoKGZ1bmN0aW9uKCl7Yyh0aGlzKS5hdHRyKCJkYXRhLXByaW50dGhpcyIsdisrKX0pfXQobixlLGEpO2EuY2FudmFzJiZuLmZpbmQoImNhbnZhcyIpLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1jKHRoaXMpLmRhdGEoInByaW50dGhpcyIpO2I9YygnW2RhdGEtcHJpbnR0aGlzPSInK2IrJyJdJyk7dGhpcy5nZXRDb250ZXh0KCIyZCIpLmRyYXdJbWFnZShiWzBdLDAsMCk7Yi5yZW1vdmVEYXRhKCJwcmludHRoaXMiKX0pO2EucmVtb3ZlSW5saW5lJiYoaXNGdW5jdGlvbihjLnJlbW92ZUF0dHIpP20uZmluZCgiYm9keSAqIikucmVtb3ZlQXR0cigic3R5bGUiKTptLmZpbmQoImJvZHkgKiIpLmF0dHIoInN0eWxlIiwKIiIpKTtyKG4sYS5mb290ZXIpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtnLmhhc0NsYXNzKCJNU0lFIik\/KHdpbmRvdy5mcmFtZXMucHJpbnRJZnJhbWUudHJpZ2dlcigiZm9jdXMiKSxsLmFwcGVuZCgiPHNjcmlwdD4gIHdpbmRvdy5wcmludCgpOyBceDNjL3NjcmlwdD4iKSk6ZG9jdW1lbnQucXVlcnlDb21tYW5kU3VwcG9ydGVkKCJwcmludCIpP2dbMF0uY29udGVudFdpbmRvdy5kb2N1bWVudC5leGVjQ29tbWFuZCgicHJpbnQiLCExLG51bGwpOihnWzBdLmNvbnRlbnRXaW5kb3cudHJpZ2dlcigiZm9jdXMiKSxnWzBdLmNvbnRlbnRXaW5kb3cucHJpbnQoKSk7YS5kZWJ1Z3x8c2V0VGltZW91dChmdW5jdGlvbigpe2cucmVtb3ZlKCl9LDFFMyl9LGEucHJpbnREZWxheSl9LDMzMyl9O2MuZm4ucHJpbnRUaGlzLmRlZmF1bHRzPXtkZWJ1ZzohMSxpbXBvcnRDU1M6ITAsaW1wb3J0U3R5bGU6ITEscHJpbnRDb250YWluZXI6ITAsbG9hZENTUzoiIixwYWdlVGl0bGU6IiIscmVtb3ZlSW5saW5lOiExLApwcmludERlbGF5OjMzMyxoZWFkZXI6bnVsbCxmb290ZXI6bnVsbCxmb3JtVmFsdWVzOiEwLGNhbnZhczohMSxiYXNlOiExLGRvY3R5cGVTdHJpbmc6IjwhRE9DVFlQRSBodG1sPiIscmVtb3ZlU2NyaXB0czohMSxjb3B5VGFnQ2xhc3NlczohMX19KShqUXVlcnkpOwovKiogL20vanMvcG9wdXAuanMgKiovCnZhciBfX19kMmNfcG9wdXBqc19jX29uPSIyMDI1LTA1LTIzIDE3OjExOjI3IjsndXNlIHN0cmljdCc7dmFyIF9fX2QyY19wb3B1cGpzX2Nfb249IjIwMjQtMDMtMTUgMTA6MzA6MTAiOyJ1c2Ugc3RyaWN0Ijt2YXIgYWN0aXZhdGVkUG9wdXBEaXZJRD0iIixtYWluUG9wdXBEaXZJRD0iIixwb3B1cE9uQWZ0ZXJTdWJtaXRDbG9zZT0hMSxpc1BvcHVwSW5pdGlhbGl6ZWQ9ITE7CmZ1bmN0aW9uIHNob3dQb3B1cFdpZGdldChhLGI9ITApe3ZhciBjPSExPT09Yj8hMTohMDtpZihpc1Ntc1RleHRVc0Zvcm0oKSYmYilyZXR1cm4gc2hvd1Ntc1RleHRVc0Zvcm0oYyksITE7aWYoITE9PT1pc1BvcHVwSW5pdGlhbGl6ZWQpcmV0dXJuITE7YT1hP2E6e307c2V0dGluZ3M9e3Nob3dNYWluUG9wdXA6ITEsZG9Ob3RSZWRpcmVjdDohMSxldmVudFR5cGU6ImNsaWNrIixkZWxheTohMX07JC5leHRlbmQoc2V0dGluZ3MsYSk7YT1zZXR0aW5ncy5kb05vdFJlZGlyZWN0O2I9c2V0dGluZ3MuZXZlbnRUeXBlO2M9c2V0dGluZ3MuZGVsYXk7dmFyIGQ9MDxhY3RpdmF0ZWRQb3B1cERpdklELmxlbmd0aD9hY3RpdmF0ZWRQb3B1cERpdklEOiExOyEwPT09c2V0dGluZ3Muc2hvd01haW5Qb3B1cCYmMDxtYWluUG9wdXBEaXZJRC5sZW5ndGgmJihkPW1haW5Qb3B1cERpdklEKTtpZihkJiYwPGQubGVuZ3RoKSQoIiMiK2QpLnBvcHVwaXplKCkuc2V0VHJpZ2dlcihiKS5vcGVuKGMpO2Vsc2UgaWYoImZ1bmN0aW9uIj09PQp0eXBlb2Ygc2hvd1BvcHVwV2lkZ2V0T0xEKXNob3dQb3B1cFdpZGdldE9MRCghMSk7ZWxzZSBpZighMT09PWEpMDwkKCIjcHJvbW9TZWN0aW9ubmFibGVkIikubGVuZ3RoJiYiMCIhPSQoIiNwcm9tb1NlY3Rpb25uYWJsZWQiKS52YWwoKT93aW5kb3cubG9jYXRpb24uaHJlZj0iRU5HTElTSCI9PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKT8iL291ci1wcm9tb3Rpb25zLmh0bWwiOiIvcHJvbW90aW9ucy5odG1sIjp3aW5kb3cubG9jYXRpb24uaHJlZj0iLyI7ZWxzZSByZXR1cm4hMX1mdW5jdGlvbiBwb3B1cFBvc3RNZXNzYWdlT25BdXRvYXViYWluZSgpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXskLnBvc3RNZXNzYWdlKCJjbG9zZVBvcHVwIiwiKiIscGFyZW50KX0sMUUzKX0KZnVuY3Rpb24gcG9wdXBEZWZhdWx0T25BZnRlckluaXRpYWxpemUoYSxiLGMsZCxlLGYsZyl7aXNQb3B1cEluaXRpYWxpemVkPSEwO2MmJihtYWluUG9wdXBEaXZJRD1mK2QpO3JldHVybiBiPT1hJiZjfHwicmVzZXQiPT1iJiZjPyhhY3RpdmF0ZWRQb3B1cERpdklEPWYrZCwidXNlZGNhcnMuaHRtbCIhPWV8fGc\/Im5ld2NhcnMuaHRtbCIhPWV8fGc\/ITA6KGNvbnNvbGUubG9nKCJwb3B1cC5qcyBwb3B1cERlZmF1bHRPbkFmdGVySW5pdGlhbGl6ZSAtIG5ld2NhcnMgcmV0dXJucyBmYWxzZS4gUG9wdXAgbWF5IGJlIGNhbmNlbGxlZC4iKSwhMSk6KHRoaXMuY29uc29sZSYmInVuZGVmaW5lZCIhPT10eXBlb2YgY29uc29sZS5sb2cmJmNvbnNvbGUubG9nKCJwb3B1cC5qcyBwb3B1cERlZmF1bHRPbkFmdGVySW5pdGlhbGl6ZSAtIHVzZWRjYXJzICByZXR1cm5zIGZhbHNlLiBQb3B1cCBtYXkgYmUgY2FuY2VsbGVkLiIpLCExKSk6ITF9CmZ1bmN0aW9uIHBvcHVwY2xvc2VQREYoYSxiKXskKCIjcG9wdXBkaXZwZGYiK2EpLmxlbmd0aCYmJCgiI3BvcHVwZGl2cGRmIithKS5jc3MoImRpc3BsYXkiLCJub25lIik7JCgiI3BvcHVwZGlmcGRmbW9kYWwiKS5sZW5ndGgmJiQoIiNwb3B1cGRpZnBkZm1vZGFsIikucmVtb3ZlKCk7JCgiI3BvcHVwZGl2cGRmaWZyYW1lIikubGVuZ3RoJiYkKCIjcG9wdXBkaXZwZGZpZnJhbWUiKS5yZW1vdmUoKTtiJiZwb3B1cFBvc3RNZXNzYWdlT25BdXRvYXViYWluZSgpfWZ1bmN0aW9uIHByaW50UERGSUZyYW1lKCl7d2luZG93LmZyYW1lcy5wb3B1cGRpdnBkZmlmcmFtZS5wcmludE1lKCl9ZnVuY3Rpb24gcG9wdXBUcmltKGEpe3JldHVybiBhLnJlcGxhY2UoL15ccyt8XHMrJC9nbSwiIil9CmZ1bmN0aW9uIHNob3dQb3B1cFdpZGdldEFkZFZlaGljbGUoYSl7JCgnaW5wdXRbbmFtZT0ic2VhcmNoZWR2ZWhpY2xlIl0nKS5lYWNoKGZ1bmN0aW9uKCl7JCh0aGlzKS52YWwoYSl9KTtzaG93UG9wdXBXaWRnZXQoKX1mdW5jdGlvbiBzaG93U3BlY2lhbFNjaGVkdWxlT25sb2FkKCl7dmFyIGE9JCgiI3NwZWNpYWxTY2hlZHVsZSIpOzA8YS5sZW5ndGgmJmEucG9wdXBpemUoe3Nob3dvbmxvYWQ6ITAsY29va2llTmFtZToic3BTY2hlZHVsZURpc3BsYXllZCIsY29va2llQ3JlYXRlOiJvbk9wZW4iLGNsb3NlQnV0dG9uOiEwfSl9ZnVuY3Rpb24gc2hvd1NwZWNpYWxTY2hlZHVsZSgpeyQoIiNzcGVjaWFsU2NoZWR1bGUiKS5wb3B1cGl6ZSgpLnNldFRyaWdnZXIoImNsaWNrIikub3BlbigpfWZ1bmN0aW9uIHNob3dUcmFkZUJvb3N0UG9wdXAoKXskKCIjVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIikucG9wdXBpemUoKS5zZXRUcmlnZ2VyKCJjbGljayIpLm9wZW4oKX0KZnVuY3Rpb24gaXNTbXNUZXh0VXNGb3JtKCl7bGV0IGE9WyJuZXdjYXJkZXRhaWwuaHRtbCIsIm5ld2NhcnMuaHRtbCJdLGI9WyJjYXJkZXRhaWwuaHRtbCIsInVzZWRjYXJzLmh0bWwiXTtyZXR1cm4iMSI9PSQoIiNEaXNjb3VudFBvcHVwTmV3UmViYXRlU2hvd1RleHRVcyIpLnZhbCgpJiZhLmluY2x1ZGVzKCQoIiNQQUdFSUQiKS52YWwoKSl8fCIxIj09JCgiI0Rpc2NvdW50UG9wdXBVc2VkUmViYXRlU2hvd1RleHRVcyIpLnZhbCgpJiZiLmluY2x1ZGVzKCQoIiNQQUdFSUQiKS52YWwoKSk\/ITA6ITF9ZnVuY3Rpb24gc2hvd1Ntc1RleHRVc0Zvcm0oYT0hMCl7JCgiI2lzTW9iaWxlIikubGVuZ3RoJiYiMSI9PSQoIiNpc01vYmlsZSIpLnZhbCgpJiYhMSE9PWE\/ZGVhbGVyTGluZVNtcygpOmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNzbGlkZWl0ICNvcGVuLWl0ZW0iKS5jaGVja2VkPSEwfTsKLyoqIC9tL2pzL2NvbnRhY3RQb3B1cC5qcyAqKi8KdmFyIF9fX2QyY19jb250YWN0UG9wdXBqc19jX29uPSIyMDI2LTAxLTEyIDEwOjEzOjQ2IjsndXNlIHN0cmljdCc7dmFyIGNvbnRhY3RQb3B1cD17cG9wdXA6JCgiI2NvbnRhY3Rwb3B1cCIpLG9wdGlvbnM6e3R5cGU6IiJ9LHNldENvbmZpZzpmdW5jdGlvbihhKXtjb250YWN0UG9wdXAub3B0aW9ucz0kLmV4dGVuZCh7fSxjb250YWN0UG9wdXAub3B0aW9ucyxhKTtyZXR1cm4gY29udGFjdFBvcHVwfSxpbml0OmZ1bmN0aW9uKCl7Y29udGFjdFBvcHVwLnNldENvbmZpZyh7dHlwZTpzZWxmLnNldHRpbmdzLmZvcm0udHlwZX0pO2NvbnRhY3RQb3B1cC5wb3B1cC5wb3B1cGl6ZSh7b25CZWZvcmVTZW5kTWFpbDpjb250YWN0UG9wdXAub25CZWZvcmVTZW5kTWFpbH0pLm9wZW4oKTtyZXR1cm4gY29udGFjdFBvcHVwfSxvbkJlZm9yZVNlbmRNYWlsOmZ1bmN0aW9uKGEpe2NvbnRhY3RQb3B1cC5zZXRFbWFpbEhhbmRsZXJGcm9tQWRkcmVzc2VzKCk7ZW1haWxIYW5kbGVyLmNvbmRpdGlvbj1jb250YWN0UG9wdXAuZ2V0Q29uZGl0aW9uKCk7ZW1haWxIYW5kbGVyLmRlcGFydG1lbnQ9Y29udGFjdFBvcHVwLmdldFR5cGUoKS50b1VwcGVyQ2FzZSgpOwoiQk5QIj09ZW1haWxIYW5kbGVyLmRlcGFydG1lbnQmJihlbWFpbEhhbmRsZXIuZGVwYXJ0bWVudD0iTkVXIik7ZW1haWxIYW5kbGVyLnNraXBHZXREZXA9ITA7ZW1haWxIYW5kbGVyLmJvZHk9ZW1haWxIYW5kbGVyLmJvZHkucmVwbGFjZSgieyROQU1FfSIsZW1haWxIYW5kbGVyLnVzZXJGaXJzdE5hbWUrIiAiK2VtYWlsSGFuZGxlci51c2VyTGFzdE5hbWUpfSxnZXRDb25kaXRpb246ZnVuY3Rpb24oKXtzd2l0Y2goY29udGFjdFBvcHVwLmdldFR5cGUoKSl7Y2FzZSAiYm5wIjpjYXNlICJuZXciOmNhc2UgIm1hbnVmYWN0dXJlciI6cmV0dXJuIm5ldyI7ZGVmYXVsdDpyZXR1cm4idXNlZCJ9fSxnZXRUeXBlOmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnRhY3RQb3B1cC5vcHRpb25zLnR5cGV9LHNldEVtYWlsSGFuZGxlckZyb21BZGRyZXNzZXM6ZnVuY3Rpb24oKXt2YXIgYT1jb250YWN0UG9wdXAuZ2V0VHlwZSgpO3RyeXt2YXIgYj1jb250YWN0UG9wdXAuZ2V0RW1haWxzKGEpOyIiPT09Yi5zZW5kVG8mJgoiIj09PWIuc2VuZFRvQURGJiYoYj1jb250YWN0UG9wdXAuZ2V0RW1haWxzKCJ1c2VkIikpO3ZhciBjPWIuc2VuZFRvLGQ9Yi5zZW5kVG9BREY7IiI9PT1jJiYiIj09PWQmJmNvbnNvbGUubG9nKCJXYXJuaW5nOiBib3RoIGVtYWlsIGFuZCBBREYgYWRkcmVzc2VzIGFyZSBlbXB0eSEiKTtpZigkKCIjY3VzdG9tRm9ybV9vcmlnaW5hbHNlbmR0byIpLmxlbmd0aCYmIk90aGVyIj09JCgiI2N1c3RvbUZvcm1fb3JpZ2luYWxzZW5kdG8iKS52YWwoKSl7dmFyIGU9JCgiI2N1c3RvbUZvcm1fc2VuZHRvIikudmFsKCksZj0kKCIjY3VzdG9tRm9ybV9zZW5kdG9BREYiKS52YWwoKTtpZigiIiE9PWV8fCIiIT09ZiljPWUsZD1mfWVtYWlsSGFuZGxlci5zZW5kVG89YztlbWFpbEhhbmRsZXIuc2VuZFRvQURGRm9ybWF0PWR9Y2F0Y2goZyl7Y29uc29sZS5sb2coZyl9cmV0dXJuIGNvbnRhY3RQb3B1cH0sZ2V0RW1haWxzOmZ1bmN0aW9uKGEpe3ZhciBiPSQoIiNoaWRkZW5Db250YWN0cG9wdXAiKTsKImJucCI9PWEmJihhPSJuZXciKTt2YXIgYz1iLmZpbmQoIiNlbWFpbF8iK2EpLnZhbCgpO2E9Yi5maW5kKCIjZW1haWxBREZfIithKS52YWwoKTtyZXR1cm57c2VuZFRvOmMsc2VuZFRvQURGOmF9fX0saW5pdENvbnRhY3Rwb3B1cD1mdW5jdGlvbihhKXthLnByZXZlbnREZWZhdWx0KCk7Y29udGFjdFBvcHVwLmluaXQoKX0sY29udGFjdFBvcHVwU3VibWl0PWZ1bmN0aW9uKCl7JCgiI2NvbnRhY3Rwb3B1cCIpLnBvcHVwaXplKCkuc3VibWl0KCl9LGNvbnRhY3RQb3B1cENsb3NlPWZ1bmN0aW9uKCl7JCgiI2NvbnRhY3Rwb3B1cCIpLnBvcHVwaXplKCkuY2xvc2UoKX07Ci8qKiAvbS9qcy9uZWJDYWwvbmViRGF0ZUZuLmpzICoqLwp2YXIgX19fZDJjX25lYkRhdGVGbmpzX2Nfb249IjIwMjUtMDUtMjMgMTc6MDQ6MjQiOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX25lYkRhdGVGbmpzX2Nfb249IjIwMjQtMDEtMzEgMTQ6MzE6NTciOyJ1c2Ugc3RyaWN0IjtfX19kMmNfbmViRGF0ZUZuanNfY19vbj0iMjAyMy0wMS0xMiAxMTozMjoyMyI7InVzZSBzdHJpY3QiO19fX2QyY19uZWJEYXRlRm5qc19jX29uPSIyMDIzLTAxLTEyIDEwOjQyOjE2IjsidXNlIHN0cmljdCI7X19fZDJjX25lYkRhdGVGbmpzX2Nfb249IjIwMjEtMTItMTUgMTI6Mzg6MzkiOyJ1c2Ugc3RyaWN0Ijtjb25zdCBuZWJEYXRlRm49e307CiQoImJvZHkiKS5oYXNDbGFzcygiRlJFTkNIIik\/JC5uZWJMYW5nPXttb250aE5hbWVzOiJKYW52aWVyIEYmZWFjdXRlO3ZyaWVyIE1hcnMgQXZyaWwgTWFpIEp1aW4gSnVpbGxldCBBbyZ1Y2lyYzt0IFNlcHRlbWJyZSBPY3RvYnJlIE5vdmVtYnJlIEQmZWFjdXRlO2NlbWJyZSIuc3BsaXQoIiAiKSxtb250aE5hbWVzU2hvcnQ6IkphbnYuIEYmZWFjdXRlO3ZyLiBNYXJzIEF2ci4gTWFpIEp1aW4gSnVpbC4gQW8mdWNpcmM7dCBTZXB0LiBPY3QuIE5vdi4gRCZlYWN1dGU7Yy4iLnNwbGl0KCIgIiksZGF5TmFtZXM6IkRpbWFuY2hlIEx1bmRpIE1hcmRpIE1lcmNyZWRpIEpldWRpIFZlbmRyZWRpIFNhbWVkaSIuc3BsaXQoIiAiKSxkYXlOYW1lc1Nob3J0OiJEaW0gTHVuIE1hciBNZXIgSmV1IFZlbiBTYW0iLnNwbGl0KCIgIiksZGF5TmFtZXNNaW46IkRpIEx1IE1hIE1lIEplIFZlIFNhIi5zcGxpdCgiICIpLHdlZWtIZWFkZXI6IlNtIixkYXRlRm9ybWF0OiJ5LU0tZCIsZmlyc3REYXk6MSwKaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiIsaW52YWxpZERhdGVGb3JtYXQ6ImludmFsaWRfZGF0ZSJ9OiQubmViTGFuZz17bW9udGhOYW1lczoiSmFudWFyeSBGZWJydWFyeSBNYXJjaCBBcHJpbCBNYXkgSnVuZSBKdWx5IEF1Z3VzdCBTZXB0ZW1iZXIgT2N0b2JlciBOb3ZlbWJlciBEZWNlbWJlciIuc3BsaXQoIiAiKSxtb250aE5hbWVzU2hvcnQ6Ikphbi4gRmViLiBNYXIuIEFwci4gTWF5IEp1bi4gSnVsLiBBdWcuIFNlcHQuIE9jdC4gTm92LiBEZWMuIi5zcGxpdCgiICIpLGRheU5hbWVzOiJTdW5kYXkgTW9uZGF5IFR1ZXNkYXkgV2VkbmVzZGF5IFRodXJzZGF5IEZyaWRheSBTYXR1cmRheSIuc3BsaXQoIiAiKSxkYXlOYW1lc1Nob3J0OiJTdW4gTW9uIFR1ZSBXZWQgVGh1IEZyaSBTYXQiLnNwbGl0KCIgIiksZGF5TmFtZXNNaW46IlN1IE1vIFR1IFdlIFRoIEZyIFNhIi5zcGxpdCgiICIpLHdlZWtIZWFkZXI6IlNtIixkYXRlRm9ybWF0OiJ5LU0tZCIsCmZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiIsaW52YWxpZERhdGVGb3JtYXQ6ImludmFsaWRfZGF0ZSJ9O0RhdGUuTFo9ZnVuY3Rpb24oYSl7cmV0dXJuKDA+YXx8OTxhPyIiOiIwIikrYX07bmViRGF0ZUZuLkxaPWZ1bmN0aW9uKGEpe3JldHVybigwPmF8fDk8YT8iIjoiMCIpK2F9O0RhdGUucHJlZmVyQW1lcmljYW5Gb3JtYXQ9ITA7bmViRGF0ZUZuLmNsZWFyVGltZT1mdW5jdGlvbihhKXthIGluc3RhbmNlb2YgRGF0ZSYmKGEuc2V0SG91cnMoMCksYS5zZXRNaW51dGVzKDApLGEuc2V0U2Vjb25kcygwKSxhLnNldE1pbGxpc2Vjb25kcygwKSk7cmV0dXJuIGF9OwpEYXRlLnByb3RvdHlwZS50b015c3FsRm9ybWF0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0RnVsbFllYXIoKSsiLSIrRGF0ZS5MWigxK3RoaXMuZ2V0TW9udGgoKSkrIi0iK0RhdGUuTFoodGhpcy5nZXREYXRlKCkpKyIgIitEYXRlLkxaKHRoaXMuZ2V0SG91cnMoKSkrIjoiK0RhdGUuTFoodGhpcy5nZXRNaW51dGVzKCkpKyI6IitEYXRlLkxaKHRoaXMuZ2V0U2Vjb25kcygpKX07RGF0ZS5wcm90b3R5cGUuaXNMZWFwWWVhcj1mdW5jdGlvbigpe3JldHVybiAyOT09KG5ldyBEYXRlKHRoaXMuZ2V0RnVsbFllYXIoKSwxLDI5KSkuZ2V0RGF0ZSgpfTtEYXRlLnByb3RvdHlwZS5nZXRMYXN0RGF5T2ZNb250aENhbD1mdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZSh0aGlzLmdldEZ1bGxZZWFyKCksdGhpcy5nZXRNb250aCgpKzEsMCkpLmdldERhdGUoKX07RGF0ZS5wcm90b3R5cGUuc2V0RGF5PWZ1bmN0aW9uKGEpe3RoaXMuc2V0RGF0ZShhKTtyZXR1cm4gdGhpc307CkRhdGUucHJvdG90eXBlLnNldE1vbj1mdW5jdGlvbihhKXt0aGlzLnNldE1vbnRoKGEpO3JldHVybiB0aGlzfTtEYXRlLnByb3RvdHlwZS5zZXRZZWFyPWZ1bmN0aW9uKGEpe3RoaXMuc2V0RnVsbFllYXIoYSk7cmV0dXJuIHRoaXN9O0RhdGUucHJvdG90eXBlLmFkZERheT1mdW5jdGlvbihhKXt0aGlzLnNldERhdGUodGhpcy5nZXREYXRlKCkrYSk7cmV0dXJuIHRoaXN9O0RhdGUucHJvdG90eXBlLmFkZE1vbj1mdW5jdGlvbihhKXt0aGlzLnNldE1vbnRoKHRoaXMuZ2V0TW9udGgoKSthKTtyZXR1cm4gdGhpc307RGF0ZS5wcm90b3R5cGUuYWRkWWVhcj1mdW5jdGlvbihhKXt0aGlzLnNldEZ1bGxZZWFyKHRoaXMuZ2V0RnVsbFllYXIoKSthKTtyZXR1cm4gdGhpc307RGF0ZS5wYXJzZURhdGVUaW1lPWZ1bmN0aW9uKGEpe2E9YS5zcGxpdCgvWy0gOl0vKTtyZXR1cm4gbmV3IERhdGUoYVswXSxhWzFdLTEsYVsyXSxhWzNdLGFbNF0sYVs1XSl9OwpuZWJEYXRlRm4ucGFyc2VTdHJpbmc9ZnVuY3Rpb24oYSxlKXtpZigidW5kZWZpbmVkIj09PXR5cGVvZiBlfHxudWxsPT09ZXx8IiI9PT1lKXtlPVsiTS9kL3kiLCJNLWQteSIsIk0uZC55IiwiTS9kIiwiTS1kIl07dmFyIGM9WyJkL00veSIsImQtTS15IiwiZC5NLnkiLCJkL00iLCJkLU0iXTtlPVsieS1NLWQ7TU1NIGQsIHk7TU1NIGQseTt5LU1NTS1kO2QtTU1NLXk7TU1NIGQ7TU1NLWQ7ZC1NTU0iLnNwbGl0KCI7IiksRGF0ZS5wcmVmZXJBbWVyaWNhbkZvcm1hdD9lOmMsRGF0ZS5wcmVmZXJBbWVyaWNhbkZvcm1hdD9jOmVdO2ZvcihjPTA7YzxlLmxlbmd0aDtjKyspZm9yKHZhciBoPWVbY10saz0wO2s8aC5sZW5ndGg7aysrKXt2YXIgbj1uZWJEYXRlRm4ucGFyc2VTdHJpbmcoYSxoW2tdKTtpZihudWxsIT09bilyZXR1cm4gbn1yZXR1cm4gbnVsbH10aGlzLmlzSW50ZWdlcj1mdW5jdGlvbih1KXtmb3IodmFyIHE9MDtxPHUubGVuZ3RoO3ErKylpZigtMT09IjEyMzQ1Njc4OTAiLmluZGV4T2YodS5jaGFyQXQocSkpKXJldHVybiExOwpyZXR1cm4hMH07dGhpcy5nZXRJbnQ9ZnVuY3Rpb24odSxxLHksdyl7Zm9yKDt3Pj15O3ctLSl7dmFyIHg9dS5zdWJzdHJpbmcocSxxK3cpO2lmKHgubGVuZ3RoPHkpYnJlYWs7aWYodGhpcy5pc0ludGVnZXIoeCkpcmV0dXJuIHh9cmV0dXJuIG51bGx9O2ErPSIiO2UrPSIiO2g9Yz0wO3ZhciBtPSIiLGI9IiIsbD0obmV3IERhdGUpLmdldEZ1bGxZZWFyKCksZz0xLGQ9MSxmPTAscj0wLHQ9MCx2PSIiO209W107Zm9yKGI9MDtoPGUubGVuZ3RoOyl7bT1lLmNoYXJBdChoKTtmb3IoYj0iIjtlLmNoYXJBdChoKT09bSYmaDxlLmxlbmd0aDspYis9ZS5jaGFyQXQoaCsrKTtpZigieXl5eSI9PWJ8fCJ5eSI9PWJ8fCJ5Ij09Yil7Inl5eXkiPT1iJiYobj1rPTQpOyJ5eSI9PWImJihuPWs9Mik7InkiPT1iJiYoaz0yLG49NCk7bD10aGlzLmdldEludChhLGMsayxuKTtpZihudWxsPT09bClyZXR1cm4gbnVsbDtjKz1sLmxlbmd0aDsyPT1sLmxlbmd0aCYmKGw9NzA8bD8xOTAwKyhsLTApOjJFMysKKGwtMCkpfWVsc2UgaWYoIk1NTSI9PWJ8fCJOTk4iPT1iKXtnPTA7bT0iTU1NIj09Yj8kLm5lYkxhbmcubW9udGhOYW1lcy5jb25jYXQoJC5uZWJMYW5nLm1vbnRoTmFtZXNTaG9ydCk6JC5uZWJMYW5nLm1vbnRoTmFtZXNTaG9ydDtmb3IoYj0wO2I8bS5sZW5ndGg7YisrKXt2YXIgcD1tW2JdO2lmKGEuc3Vic3RyaW5nKGMsYytwLmxlbmd0aCkudG9Mb3dlckNhc2UoKT09cC50b0xvd2VyQ2FzZSgpKXtnPWIlMTIrMTtjKz1wLmxlbmd0aDticmVha319aWYoMT5nfHwxMjxnKXJldHVybiBudWxsfWVsc2UgaWYoIkVFIj09Ynx8IkUiPT1iKWZvcihtPSJFRSI9PWI\/JC5uZWJMYW5nLmRheU5hbWVzOiQubmViTGFuZy5kYXlOYW1lc1Nob3J0LGI9MDtiPG0ubGVuZ3RoO2IrKyl7aWYocD1tW2JdLGEuc3Vic3RyaW5nKGMsYytwLmxlbmd0aCkudG9Mb3dlckNhc2UoKT09cC50b0xvd2VyQ2FzZSgpKXtjKz1wLmxlbmd0aDticmVha319ZWxzZSBpZigiTU0iPT1ifHwiTSI9PWIpe2c9dGhpcy5nZXRJbnQoYSwKYyxiLmxlbmd0aCwyKTtpZihudWxsPT09Z3x8MT5nfHwxMjxnKXJldHVybiBudWxsO2MrPWcubGVuZ3RofWVsc2UgaWYoImRkIj09Ynx8ImQiPT1iKXtkPXRoaXMuZ2V0SW50KGEsYyxiLmxlbmd0aCwyKTtpZihudWxsPT09ZHx8MT5kfHwzMTxkKXJldHVybiBudWxsO2MrPWQubGVuZ3RofWVsc2UgaWYoImhoIj09Ynx8ImgiPT1iKXtmPXRoaXMuZ2V0SW50KGEsYyxiLmxlbmd0aCwyKTtpZihudWxsPT09Znx8MT5mfHwxMjxmKXJldHVybiBudWxsO2MrPWYubGVuZ3RofWVsc2UgaWYoIkhIIj09Ynx8IkgiPT1iKXtmPXRoaXMuZ2V0SW50KGEsYyxiLmxlbmd0aCwyKTtpZihudWxsPT09Znx8MD5mfHwyMzxmKXJldHVybiBudWxsO2MrPWYubGVuZ3RofWVsc2UgaWYoIktLIj09Ynx8IksiPT1iKXtmPXRoaXMuZ2V0SW50KGEsYyxiLmxlbmd0aCwyKTtpZihudWxsPT09Znx8MD5mfHwxMTxmKXJldHVybiBudWxsO2MrPWYubGVuZ3RoO2YrK31lbHNlIGlmKCJrayI9PWJ8fCJrIj09Yil7Zj10aGlzLmdldEludChhLApjLGIubGVuZ3RoLDIpO2lmKG51bGw9PT1mfHwxPmZ8fDI0PGYpcmV0dXJuIG51bGw7Yys9Zi5sZW5ndGg7Zi0tfWVsc2UgaWYoIm1tIj09Ynx8Im0iPT1iKXtyPXRoaXMuZ2V0SW50KGEsYyxiLmxlbmd0aCwyKTtpZihudWxsPT09cnx8MD5yfHw1OTxyKXJldHVybiBudWxsO2MrPXIubGVuZ3RofWVsc2UgaWYoInNzIj09Ynx8InMiPT1iKXt0PXRoaXMuZ2V0SW50KGEsYyxiLmxlbmd0aCwyKTtpZihudWxsPT09dHx8MD50fHw1OTx0KXJldHVybiBudWxsO2MrPXQubGVuZ3RofWVsc2UgaWYoImEiPT1iKXtpZigiYW0iPT1hLnN1YnN0cmluZyhjLGMrMikudG9Mb3dlckNhc2UoKSl2PSJBTSI7ZWxzZSBpZigicG0iPT1hLnN1YnN0cmluZyhjLGMrMikudG9Mb3dlckNhc2UoKSl2PSJQTSI7ZWxzZSByZXR1cm4gbnVsbDtjKz0yfWVsc2V7aWYoYS5zdWJzdHJpbmcoYyxjK2IubGVuZ3RoKSE9YilyZXR1cm4gbnVsbDtjKz1iLmxlbmd0aH19aWYoYyE9YS5sZW5ndGgpcmV0dXJuIG51bGw7aWYoMj09CmcpaWYoMD09PWwlNCYmMCE9PWwlMTAwfHwwPT09bCU0MDApe2lmKDI5PGQpcmV0dXJuIG51bGx9ZWxzZSBpZigyODxkKXJldHVybiBudWxsO2lmKDMwPGQmJig0PT1nfHw2PT1nfHw5PT1nfHwxMT09ZykpcmV0dXJuIG51bGw7MTI+ZiYmIlBNIj09dj9mPWYtMCsxMjoxMTxmJiYiQU0iPT12JiYoZi09MTIpO3JldHVybiBuZXcgRGF0ZShsLGctMSxkLGYscix0KX07RGF0ZS5pc1ZhbGlkPWZ1bmN0aW9uKGEsZSl7cmV0dXJuIG51bGwhPT1uZWJEYXRlRm4ucGFyc2VTdHJpbmcoYSxlKX07RGF0ZS5wcm90b3R5cGUuZGlmZj1mdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09PWE\/ITE6dGhpcy5nZXRUaW1lKCk9PWEuZ2V0VGltZSgpPzA6dGhpcy5nZXRUaW1lKCk+YS5nZXRUaW1lKCk\/LTE6MX07CkRhdGUucHJvdG90eXBlLmZvcm1hdD1mdW5jdGlvbihhKXthKz0iIjt2YXIgZT0iIixjPTAsaD10aGlzLmdldEZ1bGxZZWFyKCkrIiIsaz10aGlzLmdldE1vbnRoKCkrMSxuPXRoaXMuZ2V0RGF0ZSgpLG09dGhpcy5nZXREYXkoKSxiPXRoaXMuZ2V0SG91cnMoKSxsPXRoaXMuZ2V0TWludXRlcygpLGc9dGhpcy5nZXRTZWNvbmRzKCksZD17fTs0PmgubGVuZ3RoJiYoaD0iIisoK2grMTkwMCkpO2QueT0iIitoO2QueXl5eT1oO2QueXk9aC5zdWJzdHJpbmcoMiw0KTtkLk09aztkLk1NPURhdGUuTFooayk7ZC5NTU09JC5uZWJMYW5nLm1vbnRoTmFtZXNbay0xXTtkLk5OTj0kLm5lYkxhbmcubW9udGhOYW1lc1Nob3J0W2stMV07ZC5kPW47ZC5kZD1EYXRlLkxaKG4pO2QuRT0kLm5lYkxhbmcuZGF5TmFtZXNTaG9ydFttXTtkLkVFPSQubmViTGFuZy5kYXlOYW1lc1ttXTtkLkg9YjtkLkhIPURhdGUuTFooYik7ZC5oPTA9PT1iPzEyOjEyPGI\/Yi0xMjpiO2QuaGg9RGF0ZS5MWihkLmgpO2QuSz0KZC5oLTE7ZC5rPWQuSCsxO2QuS0s9RGF0ZS5MWihkLkspO2Qua2s9RGF0ZS5MWihkLmspO2QuYT0xMTxiPyJQTSI6IkFNIjtkLm09bDtkLm1tPURhdGUuTFoobCk7ZC5zPWc7Zm9yKGQuc3M9RGF0ZS5MWihnKTtjPGEubGVuZ3RoOyl7aD1hLmNoYXJBdChjKTtmb3Ioaz0iIjthLmNoYXJBdChjKT09aCYmYzxhLmxlbmd0aDspays9YS5jaGFyQXQoYysrKTtlPSJ1bmRlZmluZWQiIT10eXBlb2YgZFtrXT9lK2Rba106ZStrfXJldHVybiBlfTsKRGF0ZS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGEsZSl7aWYoInVuZGVmaW5lZCI9PT10eXBlb2YgYXx8bnVsbD09PWF8fCJ1bmRlZmluZWQiPT09dHlwZW9mIGV8fG51bGw9PT1lKXJldHVybiB0aGlzO2U9K2U7aWYoInkiPT1hKXRoaXMuc2V0RnVsbFllYXIodGhpcy5nZXRGdWxsWWVhcigpK2UpO2Vsc2UgaWYoIk0iPT1hKXRoaXMuc2V0TW9udGgodGhpcy5nZXRNb250aCgpK2UpO2Vsc2UgaWYoImQiPT1hKXRoaXMuc2V0RGF0ZSh0aGlzLmdldERhdGUoKStlKTtlbHNlIGlmKCJ3Ij09YSlmb3IoYT0wPGU\/MTotMTswIT09ZTspe2Zvcih0aGlzLmFkZCgiZCIsYSk7MD09PXRoaXMuZ2V0RGF5KCl8fDY9PT10aGlzLmdldERheSgpOyl0aGlzLmFkZCgiZCIsYSk7ZS09YX1lbHNlImgiPT1hP3RoaXMuc2V0SG91cnModGhpcy5nZXRIb3VycygpK2UpOiJtIj09YT90aGlzLnNldE1pbnV0ZXModGhpcy5nZXRNaW51dGVzKCkrZSk6InMiPT1hJiZ0aGlzLnNldFNlY29uZHModGhpcy5nZXRTZWNvbmRzKCkrCmUpO3JldHVybiB0aGlzfTtEYXRlLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBuZXcgRGF0ZSh0aGlzLmdldFRpbWUoKSl9OwovKiogL20vanMvbmViQ2FsL25lYkNhbC5qcyAqKi8KdmFyIF9fX2QyY19uZWJDYWxqc19jX29uPSIyMDI1LTA1LTIzIDE3OjA0OjIyIjsndXNlIHN0cmljdCc7dmFyIF9fX2QyY19uZWJDYWxqc19jX29uPSIyMDI0LTA0LTE2IDExOjMwOjA3IjsidXNlIHN0cmljdCI7CihmdW5jdGlvbihlKXtlLm5lYkNhbD1mdW5jdGlvbihoLGcpe3ZhciBsPXtzbGlkZUR1cmF0aW9uOjUwMCxmYWRlRHVyYXRpb246MjAwLHRvZ2dsZUR1cmF0aW9uOjIwMCxwcmVmaWxsOiExLGRlZmF1bHREYXRlOnZvaWQgMCxsaW5rV2l0aElucHV0OiEwLGtleU5hdmlnYXRpb246ITAsdGhlbWU6ImRlZmF1bHQiLGRlZmF1bHRWaWV3OiJtb250aCIsc3RhcnRNb25kYXk6ITEsYWx3YXlzU2hvdzohMSxpbmplY3RJbnNpZGVUYXJnZXQ6ITEsZm9ybWF0OiJ5eXl5LU1NLWRkIixhbGlnblg6Im1pZGRsZSIsYWxpZ25ZOiJib3R0b20iLG9mZnNldFg6MjAsb2Zmc2V0WTowLHBvcnRyYWl0OiEwLHBpY2thYmxlOiEwLHRvZ2dsZXI6dm9pZCAwLGRpc2FsbG93VXNlcklucHV0OiExLG1pbkRhdGU6dm9pZCAwLG1heERhdGU6dm9pZCAwLGV4Y2x1ZGVkV2Vla2RheXM6dm9pZCAwLGV4Y2x1ZGVkRGF0ZXM6dm9pZCAwLGNyZWF0ZUhpZGRlbklucHV0OiExLGhpZGRlbklucHV0TmFtZToiZGF0ZSIsaGlkZGVuSW5wdXRGb3JtYXQ6IiV0IiwKb25TZWxlY3Q6ITEsb25WaWV3Q2hhbmdlOiExfSxhPXRoaXM7YS5vcHRpb25zPXt9O2EudGFyZ2V0PWUoaCk7YS5pbml0PWZ1bmN0aW9uKCl7YS5vcHRpb25zPWUuZXh0ZW5kKHt9LGwsZyk7YS50b2RheT1uZWJEYXRlRm4uY2xlYXJUaW1lKG5ldyBEYXRlKTthLnRyYW5zaXRpb25pbmc9ITE7dm9pZCAwIT09YS5vcHRpb25zLmRlZmF1bHREYXRlP2Euc2VsZWN0ZWREYXRlPW5lYkRhdGVGbi5jbGVhclRpbWUobmViRGF0ZUZuLnBhcnNlU3RyaW5nKGEub3B0aW9ucy5kZWZhdWx0RGF0ZSkpOmEub3B0aW9ucy5saW5rV2l0aElucHV0JiZ2b2lkIDAhPT1hLnRhcmdldC52YWwoKSYmMCE9PWEudGFyZ2V0LnZhbCgpJiYoYS5zZWxlY3RlZERhdGU9bmViRGF0ZUZuLmNsZWFyVGltZShuZWJEYXRlRm4ucGFyc2VTdHJpbmcoYS50YXJnZXQudmFsKCkpKSk7aWYodm9pZCAwPT09YS5zZWxlY3RlZERhdGV8fG51bGw9PT1hLnNlbGVjdGVkRGF0ZSlhLnNlbGVjdGVkRGF0ZT1hLnRvZGF5LmNsb25lKCk7CmEuZWxlbWVudD1lKCc8ZGl2IGNsYXNzPSJuZWJDYWwgJythLm9wdGlvbnMudGhlbWUrJyIgc3R5bGU9ImRpc3BsYXk6ICcrKGEub3B0aW9ucy5hbHdheXNTaG93PyJibG9jayI6Im5vbmUiKSsnIj48ZGl2IGNsYXNzPSJjYWwtd3JhcHBlciI+PGRpdiBjbGFzcz0iY2FsLWhlYWRlciI+PGRpdiBjbGFzcz0iY2FsLWFycm93LWxlZnQiPjwvZGl2PjxkaXYgY2xhc3M9ImNhbC1hcnJvdy1yaWdodCI+PC9kaXY+PGRpdiBjbGFzcz0iY2FsLWxhYmVsIGNhbC1jbGlja2FibGUiPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9ImNhbC1ib2R5Ij48ZGl2IGNsYXNzPSJjYWwtaW5uZXIiPjxkaXYgY2xhc3M9ImNhbC1jb250YWluZXIgYSI+PC9kaXY+PGRpdiBjbGFzcz0iY2FsLWNvbnRhaW5lciBiIj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJjYWwtZm9vdGVyIj48L2Rpdj48L2Rpdj48L2Rpdj4nKTthLm9wdGlvbnMuaW5qZWN0SW5zaWRlVGFyZ2V0PyhhLmVsZW1lbnQuYWRkQ2xhc3MoImlubGluZSIpLAphLmVsZW1lbnQuYXBwZW5kVG8oYS50YXJnZXQpKTooYS5lbGVtZW50LmFwcGVuZFRvKGUoImJvZHkiKSksYS5wb3NpdGlvbigpLGUod2luZG93KS5vbigicmVzaXplIixhLnBvc2l0aW9uKSk7YS5jdXJyZW50Q29udGFpbmVyPWEuZWxlbWVudC5maW5kKCIuY2FsLWNvbnRhaW5lci5hIikuY3NzKCJ6LWluZGV4Iiw5OTkpO2EudGVtcENvbnRhaW5lcj1hLmVsZW1lbnQuZmluZCgiLmNhbC1jb250YWluZXIuYiIpLmNzcygiei1pbmRleCIsOTk4KTthLmhlYWRlcj1hLmVsZW1lbnQuZmluZCgiLmNhbC1oZWFkZXIiKTthLmxhYmVsPWEuaGVhZGVyLmZpbmQoIi5jYWwtbGFiZWwiKTthLmFycm93TGVmdD1hLmhlYWRlci5maW5kKCIuY2FsLWFycm93LWxlZnQiKTthLmFycm93UmlnaHQ9YS5oZWFkZXIuZmluZCgiLmNhbC1hcnJvdy1yaWdodCIpO2EubGFiZWwub24oImNsaWNrIixhLmxldmVsVXApO2EuYXJyb3dMZWZ0Lm9uKCJjbGljayIsYS5zbGlkZUxlZnQpO2EuYXJyb3dSaWdodC5vbigiY2xpY2siLAphLnNsaWRlUmlnaHQpO3ZvaWQgMCE9PWEub3B0aW9ucy5taW5EYXRlJiYoYS5vcHRpb25zLm1pbkRhdGU9bmViRGF0ZUZuLmNsZWFyVGltZShuZWJEYXRlRm4ucGFyc2VTdHJpbmcoYS5vcHRpb25zLm1pbkRhdGUpKSk7dm9pZCAwIT09YS5vcHRpb25zLm1heERhdGUmJihhLm9wdGlvbnMubWF4RGF0ZT1uZWJEYXRlRm4uY2xlYXJUaW1lKG5lYkRhdGVGbi5wYXJzZVN0cmluZyhhLm9wdGlvbnMubWF4RGF0ZSkpKTtpZih2b2lkIDAhPT1hLm9wdGlvbnMuZXhjbHVkZWREYXRlcyl7dmFyIGI9W107YS5vcHRpb25zLmV4Y2x1ZGVkRGF0ZXMuZWFjaChmdW5jdGlvbihjKXtiLmluY2x1ZGUoYS5mb3JtYXQobmViRGF0ZUZuLmNsZWFyVGltZShuZWJEYXRlRm4ucGFyc2VTdHJpbmcoYykpLCIldCIpKX0pO2Eub3B0aW9ucy5leGNsdWRlZERhdGVzPWJ9YS5vcHRpb25zLmNyZWF0ZUhpZGRlbklucHV0JiYoYS5oaWRkZW5JbnB1dD0obmV3IEVsZW1lbnQoImlucHV0Iix7dHlwZToiaGlkZGVuIiwKbmFtZTphLm9wdGlvbnMuaGlkZGVuSW5wdXROYW1lfSkpLmFwcGVuZFRvKGEudGFyZ2V0KSk7IWEub3B0aW9ucy5kaXNhbGxvd1VzZXJJbnB1dCYmYS5vcHRpb25zLmxpbmtXaXRoSW5wdXQmJiJpbnB1dCI9PWEudGFyZ2V0LmF0dHIoInRhZyIpJiZhLnRhcmdldC5hZGRFdmVudCgia2V5dXAiLGZ1bmN0aW9uKCl7YS5zZXREYXRlKGEudGFyZ2V0LmF0dHIoInZhbHVlIiksITEpfSk7dm9pZCAwIT09YS5vcHRpb25zLnRvZ2dsZXImJihhLm9wdGlvbnMudG9nZ2xlcj1lKGEub3B0aW9ucy50b2dnbGVyKSk7KHZvaWQgMCE9PWEub3B0aW9ucy50b2dnbGVyP2Eub3B0aW9ucy50b2dnbGVyOmEudGFyZ2V0KS5vbigiZm9jdXMiLGEuc2hvdykub24oImNsaWNrIixhLnNob3cpO2lmKCFhLm9wdGlvbnMuYWx3YXlzU2hvdyllKGRvY3VtZW50KS5vbigibW91c2Vkb3duIixhLm91dHNpZGVDbGljayk7IklOUFVUIj09YS50YXJnZXQucHJvcCgidGFnTmFtZSIpJiYoYS50YXJnZXQudHJpZ2dlcigia2V5ZG93biIsCmEub25LZXlEb3duKSxhLnRhcmdldC50cmlnZ2VyKCJrZXl1cCIsYS5vbktleVVwKSxhLm9wdGlvbnMuZGlzYWxsb3dVc2VySW5wdXQmJmEudGFyZ2V0LmFkZEV2ZW50KCJjb250ZXh0bWVudSIsJGxhbWJkYSghMSkpKTthLnNlbGVjdGVkRGF0ZT1hLmNvcnJlY3REYXRlKGEuc2VsZWN0ZWREYXRlKTthLm9wdGlvbnMucHJlZmlsbCYmYS5waWNrKCk7YS52aWV3RGF0ZT1uZWJEYXRlRm4uY2xlYXJUaW1lKGEuc2VsZWN0ZWREYXRlLmNsb25lKCkuc2V0RGF5KDEpKTthLnZpZXc9YS5vcHRpb25zLmRlZmF1bHRWaWV3O2EucmVuZGVyKCl9O2EucmVuZGVyPWZ1bmN0aW9uKCl7YS5jdXJyZW50Q29udGFpbmVyLmVtcHR5KCk7c3dpdGNoKGEudmlldyl7Y2FzZSAiZGVjYWRlIjphLnJlbmRlckRlY2FkZSgpO2JyZWFrO2Nhc2UgInllYXIiOmEucmVuZGVyWWVhcigpO2JyZWFrO2RlZmF1bHQ6YS5yZW5kZXJNb250aCgpfXJldHVybiBhfTthLnJlbmRlck1vbnRoPWZ1bmN0aW9uKCl7YS52aWV3PQoibW9udGgiO2EuY3VycmVudENvbnRhaW5lci5lbXB0eSgpLmFkZENsYXNzKCJjYWwtbW9udGgiKTthLm9wdGlvbnMucGlja2FibGUmJmEuY3VycmVudENvbnRhaW5lci5hZGRDbGFzcygiY2FsLXBpY2thYmxlIik7dmFyIGI9ZS5uZWJMYW5nLGM9YS52aWV3RGF0ZS5nZXREYXkoKS0oYS5vcHRpb25zLnN0YXJ0TW9uZGF5PzE6MCk7LTE9PWMmJihjPTYpO2EubGFiZWwuaHRtbChiLm1vbnRoTmFtZXNbYS52aWV3RGF0ZS5nZXRNb250aCgpXSsiICIrYS52aWV3RGF0ZS5mb3JtYXQoInl5eXkiKSk7Zm9yKHZhciBkPWUoIjxkaXY+PC9kaXY+IikuYWRkQ2xhc3MoImNhbC1yb3ciKS5hcHBlbmRUbyhhLmN1cnJlbnRDb250YWluZXIpLGY9YS5vcHRpb25zLnN0YXJ0TW9uZGF5PzE6MDtmPChhLm9wdGlvbnMuc3RhcnRNb25kYXk\/ODo3KTtmKyspe3ZhciBrPWUoIjxkaXY+PC9kaXY+IikuaHRtbChiLmRheU5hbWVzU2hvcnRbYS5vcHRpb25zLnN0YXJ0TW9uZGF5JiY3PT1mPzA6Zl0pLmFwcGVuZFRvKGQpOwprLmh0bWwoay5odG1sKCkpfWQ9ZSgiPGRpdj48L2Rpdj4iKS5hZGRDbGFzcygiY2FsLXJvdyIpLmFwcGVuZFRvKGEuY3VycmVudENvbnRhaW5lcik7Yj1hLnZpZXdEYXRlLmNsb25lKCkuYWRkKCJNIiwtMSkuZ2V0TGFzdERheU9mTW9udGhDYWwoKTtmb3IoZj0wO2Y8YztmKyspYS5pbmplY3REYXkoZCxhLnZpZXdEYXRlLmNsb25lKCkuYWRkKCJNIiwtMSkuc2V0RGF5KGItKGMtZikrMSksITApO2ZvcihmPTE7Zjw9YS52aWV3RGF0ZS5nZXRMYXN0RGF5T2ZNb250aENhbCgpO2YrKylhLmluamVjdERheShkLGEudmlld0RhdGUuY2xvbmUoKS5zZXREYXkoZikpLDc9PWQuY2hpbGRyZW4oKS5sZW5ndGgmJihkPWUoIjxkaXY+PC9kaXY+IikuYWRkQ2xhc3MoImNhbC1yb3ciKS5hcHBlbmRUbyhhLmN1cnJlbnRDb250YWluZXIpKTtiPTgtZC5jaGlsZHJlbigpLmxlbmd0aDtjPWEudmlld0RhdGUuY2xvbmUoKS5hZGQoIk0iLDEpLnNldERheSgxKTtmb3IoZj0xO2Y8YjtmKyspYS5pbmplY3REYXkoZCwKYy5jbG9uZSgpLnNldERheShmKSwhMCk7Zm9yKGI9YS5jdXJyZW50Q29udGFpbmVyLmZpbmQoIi5jYWwtcm93IikubGVuZ3RoOzc+YjtiKyspZm9yKGQ9ZSgiPGRpdj48L2Rpdj4iKS5hZGRDbGFzcygiY2FsLXJvdyIpLmFwcGVuZFRvKGEuY3VycmVudENvbnRhaW5lciksaz0wOzc+aztrKyspYS5pbmplY3REYXkoZCxjLmNsb25lKCkuc2V0RGF5KGYpLCEwKSxmKys7YS5yZW5kZXJBZnRlcigpfTthLmluamVjdERheT1mdW5jdGlvbihiLGMsZCl7Yj1lKCI8ZGl2PjwvZGl2PiIpLmh0bWwoYy5nZXREYXRlKCkpLmFwcGVuZFRvKGIpO2IuZGF0YSgiZGF0ZSIsYyk7ZCYmYi5hZGRDbGFzcygiY2FsLW91dHNpZGUiKTtpZih2b2lkIDAhPT1hLm9wdGlvbnMubWluRGF0ZSYmYS5vcHRpb25zLm1pbkRhdGU+Y3x8dm9pZCAwIT09YS5vcHRpb25zLm1heERhdGUmJmEub3B0aW9ucy5tYXhEYXRlPGN8fHZvaWQgMCE9PWEub3B0aW9ucy5leGNsdWRlZFdlZWtkYXlzJiZhLm9wdGlvbnMuZXhjbHVkZWRXZWVrZGF5cy5jb250YWlucyhjLmZvcm1hdCgiRSIpLnRvSW50KCkpfHwKdm9pZCAwIT09YS5vcHRpb25zLmV4Y2x1ZGVkRGF0ZXMmJmEub3B0aW9ucy5leGNsdWRlZERhdGVzLmNvbnRhaW5zKGEuZm9ybWF0KGMsIiV0IikpKWIuYWRkQ2xhc3MoImNhbC1ub24tc2VsZWN0YWJsZSIpO2Vsc2UgaWYoYS5vcHRpb25zLnBpY2thYmxlKWIub24oImNsaWNrIixhLnBpY2spO2MuZm9ybWF0KCJkIik9PWEudG9kYXkuZm9ybWF0KCJkIikmJmIuYWRkQ2xhc3MoImNhbC10b2RheSIpO2R8fGMuZm9ybWF0KCJkIikhPWEuc2VsZWN0ZWREYXRlLmZvcm1hdCgiZCIpfHxiLmFkZENsYXNzKCJjYWwtc2VsZWN0ZWQiKX07YS5yZW5kZXJZZWFyPWZ1bmN0aW9uKCl7YS52aWV3PSJ5ZWFyIjthLmN1cnJlbnRDb250YWluZXIuYWRkQ2xhc3MoImNhbC15ZWFyLWRlY2FkZSAiKyhhLm9wdGlvbnMucG9ydHJhaXQ\/ImNhbC1wb3J0cmFpdCI6ImNhbC1sYW5kc2NhcGUiKSk7dmFyIGI9ZS5uZWJMYW5nLm1vbnRoTmFtZXNTaG9ydDthLmxhYmVsLmh0bWwoYS52aWV3RGF0ZS5mb3JtYXQoInl5eXkiKSk7CmZvcih2YXIgYz1lKCI8ZGl2PjwvZGl2PiIpLmFkZENsYXNzKCJjYWwtcm93IikuYXBwZW5kVG8oYS5jdXJyZW50Q29udGFpbmVyKSxkPTE7MTM+ZDtkKyspe3ZhciBmPWUoIjxkaXY+PC9kaXY+IikuaHRtbChiW2QtMV0pLmFwcGVuZFRvKGMpLGs9YS52aWV3RGF0ZS5jbG9uZSgpLnNldE1vbihkLTEpO2YuZGF0YSgiZGF0ZSIsayk7aWYodm9pZCAwIT09YS5vcHRpb25zLm1pbkRhdGUmJmEub3B0aW9ucy5taW5EYXRlLmNsb25lKCkuc2V0RGF5KDEpPmt8fHZvaWQgMCE9PWEub3B0aW9ucy5tYXhEYXRlJiZhLm9wdGlvbnMubWF4RGF0ZS5jbG9uZSgpLnNldERheSgxKTxrKWYuYWRkQ2xhc3MoImNhbC1ub24tc2VsZWN0YWJsZSIpO2Vsc2UgZi5vbigiY2xpY2siLGEubGV2ZWxEb3duKTtkLTE9PWEudG9kYXkuZ2V0TW9udGgoKSYmYS52aWV3RGF0ZS5nZXRGdWxsWWVhcigpPT1hLnRvZGF5LmdldEZ1bGxZZWFyKCkmJmYuYWRkQ2xhc3MoImNhbC10b2RheSIpO2QtMT09YS5zZWxlY3RlZERhdGUuZ2V0TW9udGgoKSYmCmEudmlld0RhdGUuZ2V0RnVsbFllYXIoKT09YS5zZWxlY3RlZERhdGUuZ2V0RnVsbFllYXIoKSYmZi5hZGRDbGFzcygiY2FsLXNlbGVjdGVkIik7ZCUoYS5vcHRpb25zLnBvcnRyYWl0PzM6NCl8fDEyPT1kfHwoYz1lKCI8ZGl2PjwvZGl2PiIpLmFkZENsYXNzKCJjYWwtcm93IikuYXBwZW5kVG8oYS5jdXJyZW50Q29udGFpbmVyKSl9YS5yZW5kZXJBZnRlcigpfTthLnJlbmRlckRlY2FkZT1mdW5jdGlvbigpe2EubGFiZWwucmVtb3ZlQ2xhc3MoImNhbC1jbGlja2FibGUiKTthLnZpZXc9ImRlY2FkZSI7YS5jdXJyZW50Q29udGFpbmVyLmFkZENsYXNzKCJjYWwteWVhci1kZWNhZGUgIisoYS5vcHRpb25zLnBvcnRyYWl0PyJjYWwtcG9ydHJhaXQiOiJjYWwtbGFuZHNjYXBlIikpO3ZhciBiO2ZvcihiPXBhcnNlSW50KGEudmlld0RhdGUuZm9ybWF0KCJ5eXl5IikpO2IlMTI7KWItLTthLmxhYmVsLmh0bWwoYisiICYjMTUwOyAiKyhiKzExKSk7Zm9yKHZhciBjPWUoIjxkaXY+PC9kaXY+IikuYWRkQ2xhc3MoImNhbC1yb3ciKS5hcHBlbmRUbyhhLmN1cnJlbnRDb250YWluZXIpLApkPWI7ZDxiKzEyO2QrKyl7dmFyIGY9ZSgiPGRpdj48L2Rpdj4iKS5odG1sKGQpLmFwcGVuZFRvKGMpLGs9YS52aWV3RGF0ZS5jbG9uZSgpLnNldFllYXIoZCk7Zi5kYXRhKCJkYXRlIixrKTtpZih2b2lkIDAhPT1hLm9wdGlvbnMubWluRGF0ZSYmYS5vcHRpb25zLm1pbkRhdGUuZ2V0RnVsbFllYXIoKT5kfHx2b2lkIDAhPT1hLm9wdGlvbnMubWF4RGF0ZSYmYS5vcHRpb25zLm1heERhdGUuZ2V0RnVsbFllYXIoKTxkKWYuYWRkQ2xhc3MoImNhbC1ub24tc2VsZWN0YWJsZSIpO2Vsc2UgZi5vbigiY2xpY2siLGEubGV2ZWxEb3duKTtkPT1hLnRvZGF5LmdldEZ1bGxZZWFyKCkmJmYuYWRkQ2xhc3MoImNhbC10b2RheSIpO2Q9PWEuc2VsZWN0ZWREYXRlLmdldEZ1bGxZZWFyKCkmJmYuYWRkQ2xhc3MoImNhbC1zZWxlY3RlZCIpOyhkKzEpJShhLm9wdGlvbnMucG9ydHJhaXQ\/Mzo0KXx8ZD09YisxMXx8KGM9ZSgiPGRpdj48L2Rpdj4iKS5hZGRDbGFzcygiY2FsLXJvdyIpLmFwcGVuZFRvKGEuY3VycmVudENvbnRhaW5lcikpfWEucmVuZGVyQWZ0ZXIoKX07CmEucmVuZGVyQWZ0ZXI9ZnVuY3Rpb24oKXtmb3IodmFyIGI9YS5jdXJyZW50Q29udGFpbmVyLmZpbmQoIi5jYWwtcm93IiksYz0wO2M8Yi5sZW5ndGg7YysrKWUoYltjXSkuYWRkQ2xhc3MoImNhbC1yb3cgIisiYWJjZGVmZyIuc3BsaXQoIiIpW2NdKyIgIisoYyUyPyJjYWwtZXZlbiI6ImNhbC1vZGQiKSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGEub3B0aW9ucy5vblZpZXdDaGFuZ2UpYS5vcHRpb25zLm9uVmlld0NoYW5nZShhLnZpZXcsYS5zZWxlY3RlZERhdGUsYS52aWV3RGF0ZSl9O2Euc2xpZGVMZWZ0PWZ1bmN0aW9uKCl7YS50cmFuc2l0aW9uaW5nJiYoYS50ZW1wQ29udGFpbmVyLmNzcyh7bGVmdDowfSkuc3RvcCgpLGEudGVtcENvbnRhaW5lci5jc3Moe2xlZnQ6MH0pLnN0b3AoKSxhLnRyYW5zaXRpb25pbmc9ITEpO2Euc3dpdGNoQ29udGFpbmVycygpO3N3aXRjaChhLnZpZXcpe2Nhc2UgIm1vbnRoIjphLnZpZXdEYXRlLmFkZCgiTSIsLTEpO2JyZWFrO2Nhc2UgInllYXIiOmEudmlld0RhdGUuYWRkKCJ5IiwKLTEpO2JyZWFrO2Nhc2UgImRlY2FkZSI6YS52aWV3RGF0ZS5zZXRGdWxsWWVhcihhLnZpZXdEYXRlLmdldEZ1bGxZZWFyKCktMTIpfWEucmVuZGVyKCk7YS50cmFuc2l0aW9uaW5nPSEwO2EuY3VycmVudENvbnRhaW5lci5jc3Moe2xlZnQ6LWEuY3VycmVudENvbnRhaW5lci53aWR0aCgpfSkuYW5pbWF0ZSh7bGVmdDowfSxhLm9wdGlvbnMuc2xpZGVEdXJhdGlvbik7YS50ZW1wQ29udGFpbmVyLmNzcyh7bGVmdDowfSkuYW5pbWF0ZSh7bGVmdDphLnRlbXBDb250YWluZXIud2lkdGgoKX0sYS5vcHRpb25zLnNsaWRlRHVyYXRpb24sZnVuY3Rpb24oKXtlKHRoaXMpLmNzcyh7bGVmdDowfSk7YS50cmFuc2l0aW9uaW5nPSExfSl9O2Euc2xpZGVSaWdodD1mdW5jdGlvbigpe2EudHJhbnNpdGlvbmluZyYmKGEudGVtcENvbnRhaW5lci5jc3Moe2xlZnQ6MH0pLnN0b3AoKSxhLnRlbXBDb250YWluZXIuY3NzKHtsZWZ0OjB9KS5zdG9wKCksYS50cmFuc2l0aW9uaW5nPSExKTthLnN3aXRjaENvbnRhaW5lcnMoKTsKc3dpdGNoKGEudmlldyl7Y2FzZSAibW9udGgiOmEudmlld0RhdGUuYWRkKCJNIiwxKTticmVhaztjYXNlICJ5ZWFyIjphLnZpZXdEYXRlLmFkZCgieSIsMSk7YnJlYWs7Y2FzZSAiZGVjYWRlIjphLnZpZXdEYXRlLnNldEZ1bGxZZWFyKGEudmlld0RhdGUuZ2V0RnVsbFllYXIoKSsxMil9YS5yZW5kZXIoKTthLnRyYW5zaXRpb25pbmc9ITA7YS5jdXJyZW50Q29udGFpbmVyLmNzcyh7bGVmdDphLmN1cnJlbnRDb250YWluZXIud2lkdGgoKX0pLmFuaW1hdGUoe2xlZnQ6MH0sYS5vcHRpb25zLnNsaWRlRHVyYXRpb24pO2EudGVtcENvbnRhaW5lci5jc3Moe2xlZnQ6MH0pLmFuaW1hdGUoe2xlZnQ6LWEudGVtcENvbnRhaW5lci53aWR0aCgpfSxhLm9wdGlvbnMuc2xpZGVEdXJhdGlvbixmdW5jdGlvbigpe2UodGhpcykuY3NzKHtsZWZ0OjB9KTthLnRyYW5zaXRpb25pbmc9ITF9KX07YS5sZXZlbERvd249ZnVuY3Rpb24oYil7aWYoIWEudHJhbnNpdGlvbmluZyl7YS5zd2l0Y2hDb250YWluZXJzKCk7CmEudmlld0RhdGU9ZShiLnRhcmdldCkuZGF0YSgiZGF0ZSIpO3N3aXRjaChhLnZpZXcpe2Nhc2UgInllYXIiOmEucmVuZGVyTW9udGgoKTticmVhaztjYXNlICJkZWNhZGUiOmEucmVuZGVyWWVhcigpfWEudHJhbnNpdGlvbmluZz0hMDthLmN1cnJlbnRDb250YWluZXIuZmFkZUluKGEub3B0aW9ucy5mYWRlRHVyYXRpb24sZnVuY3Rpb24oKXthLnRyYW5zaXRpb25pbmc9ITF9KTthLnRlbXBDb250YWluZXIuZmFkZU91dChhLm9wdGlvbnMuZmFkZUR1cmF0aW9uKX19O2EubGV2ZWxVcD1mdW5jdGlvbigpe2lmKCJkZWNhZGUiIT1hLnZpZXcmJiFhLnRyYW5zaXRpb25pbmcpe2Euc3dpdGNoQ29udGFpbmVycygpO3N3aXRjaChhLnZpZXcpe2Nhc2UgIm1vbnRoIjphLnJlbmRlclllYXIoKTticmVhaztjYXNlICJ5ZWFyIjphLnJlbmRlckRlY2FkZSgpfWEudHJhbnNpdGlvbmluZz0hMDthLmN1cnJlbnRDb250YWluZXIuZmFkZUluKGEub3B0aW9ucy5mYWRlRHVyYXRpb24sZnVuY3Rpb24oKXthLnRyYW5zaXRpb25pbmc9CiExfSk7YS50ZW1wQ29udGFpbmVyLmZhZGVPdXQoYS5vcHRpb25zLmZhZGVEdXJhdGlvbil9fTthLmNoYW5nZVZpZXc9ZnVuY3Rpb24oYil7aWYoIWEudHJhbnNpdGlvbmluZyYmYiE9YS52aWV3KXthLnN3aXRjaENvbnRhaW5lcnMoKTtzd2l0Y2goYil7Y2FzZSAibW9udGgiOmEucmVuZGVyTW9udGgoKTticmVhaztjYXNlICJ5ZWFyIjphLnJlbmRlclllYXIoKTticmVhaztjYXNlICJkZWNhZGUiOmEucmVuZGVyRGVjYWRlKCl9YS50cmFuc2l0aW9uaW5nPSEwO2EuY3VycmVudENvbnRhaW5lci5mYWRlSW4oYS5vcHRpb25zLmZhZGVEdXJhdGlvbixmdW5jdGlvbigpe2EudHJhbnNpdGlvbmluZz0hMX0pO2EudGVtcENvbnRhaW5lci5mYWRlT3V0KGEub3B0aW9ucy5mYWRlRHVyYXRpb24pfX07YS51cGRhdGVNaW5EYXRlPWZ1bmN0aW9uKGIpe2lmKCFhLnRyYW5zaXRpb25pbmcmJihiPW5lYkRhdGVGbi5wYXJzZVN0cmluZyhiKSxudWxsIT09Yikpe2Eub3B0aW9ucy5taW5EYXRlPW5lYkRhdGVGbi5jbGVhclRpbWUoYik7CmEuc3dpdGNoQ29udGFpbmVycygpO3N3aXRjaChhLnZpZXcpe2Nhc2UgIm1vbnRoIjphLnJlbmRlck1vbnRoKCk7YnJlYWs7Y2FzZSAieWVhciI6YS5yZW5kZXJZZWFyKCk7YnJlYWs7Y2FzZSAiZGVjYWRlIjphLnJlbmRlckRlY2FkZSgpfWEudHJhbnNpdGlvbmluZz0hMDthLmN1cnJlbnRDb250YWluZXIuZmFkZUluKGEub3B0aW9ucy5mYWRlRHVyYXRpb24sZnVuY3Rpb24oKXthLnRyYW5zaXRpb25pbmc9ITF9KTthLnRlbXBDb250YWluZXIuZmFkZU91dChhLm9wdGlvbnMuZmFkZUR1cmF0aW9uKX19O2EudXBkYXRlTWF4RGF0ZT1mdW5jdGlvbihiKXtpZighYS50cmFuc2l0aW9uaW5nJiYoYj1uZWJEYXRlRm4ucGFyc2VTdHJpbmcoYiksbnVsbCE9PWIpKXthLm9wdGlvbnMubWF4RGF0ZT1uZWJEYXRlRm4uY2xlYXJUaW1lKGIpO2Euc3dpdGNoQ29udGFpbmVycygpO3N3aXRjaChhLnZpZXcpe2Nhc2UgIm1vbnRoIjphLnJlbmRlck1vbnRoKCk7YnJlYWs7Y2FzZSAieWVhciI6YS5yZW5kZXJZZWFyKCk7CmJyZWFrO2Nhc2UgImRlY2FkZSI6YS5yZW5kZXJEZWNhZGUoKX1hLnRyYW5zaXRpb25pbmc9ITA7YS5jdXJyZW50Q29udGFpbmVyLmZhZGVJbihhLm9wdGlvbnMuZmFkZUR1cmF0aW9uLGZ1bmN0aW9uKCl7YS50cmFuc2l0aW9uaW5nPSExfSk7YS50ZW1wQ29udGFpbmVyLmZhZGVPdXQoYS5vcHRpb25zLmZhZGVEdXJhdGlvbil9fTthLnN3aXRjaENvbnRhaW5lcnM9ZnVuY3Rpb24oKXthLmN1cnJlbnRDb250YWluZXI9YS5jdXJyZW50Q29udGFpbmVyLmhhc0NsYXNzKCJhIik\/YS5lbGVtZW50LmZpbmQoIi5jYWwtY29udGFpbmVyLmIiKTphLmVsZW1lbnQuZmluZCgiLmNhbC1jb250YWluZXIuYSIpO2EudGVtcENvbnRhaW5lcj1hLnRlbXBDb250YWluZXIuaGFzQ2xhc3MoImEiKT9hLmVsZW1lbnQuZmluZCgiLmNhbC1jb250YWluZXIuYiIpOmEuZWxlbWVudC5maW5kKCIuY2FsLWNvbnRhaW5lci5hIik7YS5jdXJyZW50Q29udGFpbmVyLmVtcHR5KCkucmVtb3ZlQ2xhc3MoImNhbC1tb250aCBjYWwteWVhci1kZWNhZGUgIisKKGEub3B0aW9ucy5wb3J0cmFpdD8iY2FsLXBvcnRyYWl0IjoiY2FsLWxhbmRzY2FwZSIpKS5jc3Moe29wYWNpdHk6MSxkaXNwbGF5OiJibG9jayIsInotaW5kZXgiOjk5OX0pO2EudGVtcENvbnRhaW5lci5jc3MoInotaW5kZXgiLDk5OCk7YS5sYWJlbC5hZGRDbGFzcygiY2FsLWNsaWNrYWJsZSIpO2EuYXJyb3dMZWZ0LmNzcygidmlzaWJpbGl0eSIsInZpc2libGUiKTthLmFycm93UmlnaHQuY3NzKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpfTthLnBvc2l0aW9uPWZ1bmN0aW9uKCl7dmFyIGI9YS50YXJnZXQuZ2V0Q29vcmRpbmF0ZXMoKTtzd2l0Y2goYS5vcHRpb25zLmFsaWduWCl7Y2FzZSAibGVmdCI6dmFyIGM9Yi5sZWZ0O2JyZWFrO2Nhc2UgIm1pZGRsZSI6Yz1iLmxlZnQrYi53aWR0aC8yLWEuZWxlbWVudC53aWR0aCgpLzI7YnJlYWs7ZGVmYXVsdDpjYXNlICJyaWdodCI6Yz1iLmxlZnQrYi53aWR0aH1zd2l0Y2goYS5vcHRpb25zLmFsaWduWSl7Y2FzZSAiYm90dG9tIjpiPWIudG9wKwpiLmhlaWdodDticmVhaztjYXNlICJ0b3AiOmI9Yi50b3AtYS5lbGVtZW50LmdldEhlaWdodCgpO2JyZWFrO2RlZmF1bHQ6Y2FzZSAiY2VpbGluZyI6Yj1iLnRvcH1jKz1wYXJzZUludChhLm9wdGlvbnMub2Zmc2V0WCk7Yis9cGFyc2VJbnQoYS5vcHRpb25zLm9mZnNldFkpO2EuZWxlbWVudC5jc3Moe3RvcDpiLGxlZnQ6Y30pfTthLnNob3c9ZnVuY3Rpb24oKXthLnZpc2libGV8fGEub3B0aW9ucy5hbHdheXNTaG93fHwoYS52aXNpYmxlPSEwLGEuZWxlbWVudC5mYWRlSW4oYS5vcHRpb25zLnRvZ2dsZUR1cmF0aW9uKSxhLnBvc2l0aW9uKCkpfTthLmhpZGU9ZnVuY3Rpb24oKXthLnZpc2libGUmJiFhLm9wdGlvbnMuYWx3YXlzU2hvdyYmKGEudmlzaWJsZT0hMSxhLmVsZW1lbnQuZmFkZU91dChhLm9wdGlvbnMudG9nZ2xlRHVyYXRpb24pKX07YS50b2dnbGU9ZnVuY3Rpb24oKXthLnZpc2libGU\/YS5oaWRlKCk6YS5zaG93KCl9O2Eub3V0c2lkZUNsaWNrPWZ1bmN0aW9uKGIpe2lmKGEudmlzaWJsZSl7dmFyIGM9CmEuZWxlbWVudC5nZXRDb29yZGluYXRlcygpLGQ9YS50YXJnZXQuZ2V0Q29vcmRpbmF0ZXMoKTsoYi5wYWdlWDxjLmxlZnR8fGIucGFnZVg+Yy5sZWZ0K2Mud2lkdGh8fGIucGFnZVk8Yy50b3B8fGIucGFnZVk+Yy50b3ArYy5oZWlnaHQpJiYoYi5wYWdlWDxkLmxlZnR8fGIucGFnZVg+ZC5sZWZ0K2Qud2lkdGh8fGIucGFnZVk8ZC50b3B8fGIucGFnZVk+ZC50b3ArZC5oZWlnaHQpJiZhLmhpZGUoKX19O2EucGljaz1mdW5jdGlvbihiKXt2b2lkIDAhPT1iJiYoYS5zZWxlY3RlZERhdGU9ZShiLnRhcmdldCkuZGF0YSgiZGF0ZSIpLGEuZWxlbWVudC5maW5kKCIuY2FsLXNlbGVjdGVkIikucmVtb3ZlQ2xhc3MoImNhbC1zZWxlY3RlZCIpLGUoYi50YXJnZXQpLmFkZENsYXNzKCJjYWwtc2VsZWN0ZWQiKSxlKGIudGFyZ2V0KS5oYXNDbGFzcygiY2FsLW91dHNpZGUiKT9hLm9wdGlvbnMuYWx3YXlzU2hvdz8wPGEuc2VsZWN0ZWREYXRlLmRpZmYoYS52aWV3RGF0ZSk\/YS5zbGlkZUxlZnQoKToKYS5zbGlkZVJpZ2h0KCk6KGEudmlld0RhdGU9YS5zZWxlY3RlZERhdGUuY2xvbmUoKS5zZXREYXkoMSksc2V0VGltZW91dChhLnJlbmRlciwzMDApKTpzZXRUaW1lb3V0KGEuaGlkZSwxNTApKTtiPWEuZm9ybWF0KGEuc2VsZWN0ZWREYXRlKTtiPWUoIjx0ZXh0YXJlYSAvPiIpLmh0bWwoYikudGV4dCgpO2lmKCFhLm9wdGlvbnMuaW5qZWN0SW5zaWRlVGFyZ2V0KXN3aXRjaChhLnRhcmdldC5wcm9wKCJ0YWdOYW1lIikudG9Mb3dlckNhc2UoKSl7Y2FzZSAiaW5wdXQiOmEudGFyZ2V0LnZhbChiKTticmVhaztkZWZhdWx0OmEudGFyZ2V0Lmh0bWwoYil9dm9pZCAwIT09YS5oaWRkZW5JbnB1dCYmYS5oaWRkZW5JbnB1dC5zZXQoInZhbHVlIixhLmZvcm1hdChhLnNlbGVjdGVkRGF0ZSxhLm9wdGlvbnMuaGlkZGVuSW5wdXRGb3JtYXQpKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgYS5vcHRpb25zLm9uU2VsZWN0KWEub3B0aW9ucy5vblNlbGVjdChhLnNlbGVjdGVkRGF0ZSk7cmV0dXJuIGF9OwphLmZvcm1hdD1mdW5jdGlvbihiLGMpe3ZvaWQgMD09PWMmJihjPXRoaXMub3B0aW9ucy5mb3JtYXQpO2lmKHZvaWQgMCE9PWIpcmV0dXJuIGM9Yy5yZXBsYWNlKC8lKFthLXolXSkvZ2ksZnVuY3Rpb24oZCxmKXtzd2l0Y2goZil7Y2FzZSAiRCI6cmV0dXJuIGIuZ2V0KCJkYXRlIik7Y2FzZSAibiI6cmV0dXJuIGIuZ2V0KCJtbyIpKzE7Y2FzZSAidCI6cmV0dXJuIHBhcnNlSW50KGIuZ2V0VGltZSgpLzFFMyl9cmV0dXJuIiUiK2Z9KSxiLmZvcm1hdChjKX07YS5vbktleURvd249ZnVuY3Rpb24oYil7aWYoYS5vcHRpb25zLmtleU5hdmlnYXRpb24pe3ZhciBjPWEuc2VsZWN0ZWREYXRlLmNsb25lKCksZD0hMCxmPSExO3N3aXRjaChiLndoaWNoKXtjYXNlIDM3OmMuYWRkKCJkIiwtMSk7Zj0hMDtkPSExO2JyZWFrO2Nhc2UgMzk6Yy5hZGQoImQiLDEpO2Y9ITA7YnJlYWs7Y2FzZSAzODpjLmFkZCgiTSIsLTEpO2Y9ITA7ZD0hMTticmVhaztjYXNlIDQwOmMuYWRkKCJNIiwxKTtmPSEwO2JyZWFrOwpjYXNlIDk6c2V0VGltZW91dChhLmhpZGUsMTUwKX1mJiYoYz1hLmNvcnJlY3REYXRlKGMsZCksMCE9PWEuc2VsZWN0ZWREYXRlLmRpZmYoYykmJmEuc2V0RGF0ZShjKSl9aWYoYS5vcHRpb25zLmRpc2FsbG93VXNlcklucHV0KXJldHVybiExfTthLm9uS2V5VXA9ZnVuY3Rpb24oKXsvXlxkezR9LVxkezJ9LVxkezJ9JC8udGVzdChhLnRhcmdldC52YWwoKSkmJihhLnNldERhdGUobmViRGF0ZUZuLnBhcnNlU3RyaW5nKGEudGFyZ2V0LnZhbCgpKSksYS50YXJnZXQucmVtb3ZlQ2xhc3MoImludmFsaWRJbnB1dCB0b29sdGlwIikucmVtb3ZlQXR0cigidGl0bGUiKSk7L15cZHsyfS0vLnRlc3QoYS50YXJnZXQudmFsKCkpfHwvXlxkezR9LSgxWzMtOV18KFsyLTldWzAtOV0pKS8udGVzdChhLnRhcmdldC52YWwoKSk\/YS50YXJnZXQuYWRkQ2xhc3MoImludmFsaWRJbnB1dCIpLmF0dHIoInRpdGxlIixlLm5lYkxhbmcuaW52YWxpZERhdGVGb3JtYXQpLnRvb2x0aXAoe3Rvb2x0aXBDbGFzczoiYWxidW1fdG9vbHRpcCIsCnBvc2l0aW9uOntteToiY2VudGVyIHRvcCszMCIsYXQ6IiJ9LHNob3c6e2VmZmVjdDoiZmFkZUluIixkdXJhdGlvbjo1MDB9LGNsb3NlOmZ1bmN0aW9uKCl7ZSh0aGlzKS5yZW1vdmUoKX19KTphLnRhcmdldC5yZW1vdmVDbGFzcygiaW52YWxpZElucHV0IHRvb2x0aXAiKS5yZW1vdmVBdHRyKCJ0aXRsZSIpfTthLmNvcnJlY3REYXRlPWZ1bmN0aW9uKGIsYyl7dm9pZCAwPT09YyYmKGM9ITApO3ZvaWQgMCE9PWEub3B0aW9ucy5taW5EYXRlJiYwPGIuZGlmZihhLm9wdGlvbnMubWluRGF0ZSk\/Yj1hLm9wdGlvbnMubWluRGF0ZS5jbG9uZSgpOnZvaWQgMCE9PWEub3B0aW9ucy5tYXhEYXRlJiYwPmIuZGlmZihhLm9wdGlvbnMubWF4RGF0ZSkmJihiPWEub3B0aW9ucy5tYXhEYXRlLmNsb25lKCkpO2Zvcih2YXIgZD0wO3ZvaWQgMCE9PWEub3B0aW9ucy5leGNsdWRlZFdlZWtkYXlzJiZhLm9wdGlvbnMuZXhjbHVkZWRXZWVrZGF5cy5jb250YWlucyhiLmZvcm1hdCgiRSIpLnRvSW50KCkpfHwKdm9pZCAwIT09YS5vcHRpb25zLm1pbkRhdGUmJjA8Yi5kaWZmKGEub3B0aW9ucy5taW5EYXRlKXx8dm9pZCAwIT09YS5vcHRpb25zLm1heERhdGUmJjA+Yi5kaWZmKGEub3B0aW9ucy5tYXhEYXRlKXx8dm9pZCAwIT09YS5vcHRpb25zLmV4Y2x1ZGVkRGF0ZXMmJmEub3B0aW9ucy5leGNsdWRlZERhdGVzLmNvbnRhaW5zKGEuZm9ybWF0KGIsIiV0IikpOyl7aWYoMzE9PWQpYz0hYztlbHNlIGlmKDYyPT1kKXtiPWEub3B0aW9ucy5taW5EYXRlLmNsb25lKCk7YnJlYWt9Yz9iLmFkZCgiZCIsMSk6Yi5hZGQoImQiLC0xKTtkKyt9cmV0dXJuIGJ9O2Euc2V0RGF0ZT1mdW5jdGlvbihiLGMpe3ZvaWQgMD09PWMmJihjPSEwKTtiPW5lYkRhdGVGbi5jbGVhclRpbWUoImRhdGUiPT10eXBlb2YgYj9iOm5lYkRhdGVGbi5wYXJzZVN0cmluZyhiKSk7bnVsbCE9PWImJihhLnNlbGVjdGVkRGF0ZT1hLmNvcnJlY3REYXRlKGIpLGEudmlld0RhdGU9YS5zZWxlY3RlZERhdGUuY2xvbmUoKS5zZXREYXkoMSksCmEucmVuZGVyKCksYyYmYS5waWNrKCkpO3JldHVybiBhfTthLmdldERhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gYS5zZWxlY3RlZERhdGV9O2EuaW5pdCgpfTtlLmZuLm5lYkNhbD1mdW5jdGlvbihoLGcpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtpZih2b2lkIDA9PT1lKHRoaXMpLmRhdGEoIm5lYkNhbCIpKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIGh8fCJvYmplY3QiPT10eXBlb2YgaCl7dmFyIGw9bmV3IGUubmViQ2FsKHRoaXMsaCk7ZSh0aGlzKS5kYXRhKCJuZWJDYWwiLGwpfX1lbHNlIHN3aXRjaChoKXtjYXNlICJjaGFuZ2VWaWV3IjppZigidW5kZWZpbmVkIj09dHlwZW9mIGcpYnJlYWs7ZSh0aGlzKS5kYXRhKCJuZWJDYWwiKS5jaGFuZ2VWaWV3KGcpO2JyZWFrO2Nhc2UgIm1pbkRhdGUiOmlmKCJ1bmRlZmluZWQiPT10eXBlb2YgZylicmVhaztlKHRoaXMpLmRhdGEoIm5lYkNhbCIpLnVwZGF0ZU1pbkRhdGUoZyk7YnJlYWs7Y2FzZSAibWF4RGF0ZSI6aWYoInVuZGVmaW5lZCI9PQp0eXBlb2YgZylicmVhaztlKHRoaXMpLmRhdGEoIm5lYkNhbCIpLnVwZGF0ZU1heERhdGUoZyk7YnJlYWs7Y2FzZSAic2V0RGF0ZSI6aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBnKWJyZWFrO2UodGhpcykuZGF0YSgibmViQ2FsIikuc2V0RGF0ZShnKTticmVhaztjYXNlICJyZXBvc2l0aW9uIjplKHRoaXMpLmRhdGEoIm5lYkNhbCIpLnBvc2l0aW9uKCl9fSl9O2UuZm4uZ2V0Q29vcmRpbmF0ZXM9ZnVuY3Rpb24oaCl7aD1lKHRoaXMpLm9mZnNldCgpO3ZhciBnPWUodGhpcykud2lkdGgoKSxsPWUodGhpcykuaGVpZ2h0KCksYT1lKHdpbmRvdykud2lkdGgoKS1oLmxlZnQtZyxiPWUod2luZG93KS5oZWlnaHQoKS1oLnRvcC1sO3JldHVybnt0b3A6aC50b3AsbGVmdDpoLmxlZnQsd2lkdGg6ZyxoZWlnaHQ6bCxyaWdodDphLGJvdHRvbTpifX19KShqUXVlcnkpOwovKiogL20vanMvdnVlL3Z1ZS5taW4uanMgKiovCi8qIQ0KICogVnVlLmpzIHYyLjYuMTENCiAqIChjKSAyMDE0LTIwMTkgRXZhbiBZb3UNCiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4NCiAqLw0KIWZ1bmN0aW9uKGUsdCl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz10KCk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUodCk6KGU9ZXx8c2VsZikuVnVlPXQoKX0odGhpcyxmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0Ijt2YXIgZT1PYmplY3QuZnJlZXplKHt9KTtmdW5jdGlvbiB0KGUpe3JldHVybiBudWxsPT1lfWZ1bmN0aW9uIG4oZSl7cmV0dXJuIG51bGwhPWV9ZnVuY3Rpb24gcihlKXtyZXR1cm4hMD09PWV9ZnVuY3Rpb24gaShlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGV8fCJudW1iZXIiPT10eXBlb2YgZXx8InN5bWJvbCI9PXR5cGVvZiBlfHwiYm9vbGVhbiI9PXR5cGVvZiBlfWZ1bmN0aW9uIG8oZSl7cmV0dXJuIG51bGwhPT1lJiYib2JqZWN0Ij09dHlwZW9mIGV9dmFyIGE9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztmdW5jdGlvbiBzKGUpe3JldHVybiJbb2JqZWN0IE9iamVjdF0iPT09YS5jYWxsKGUpfWZ1bmN0aW9uIGMoZSl7dmFyIHQ9cGFyc2VGbG9hdChTdHJpbmcoZSkpO3JldHVybiB0Pj0wJiZNYXRoLmZsb29yKHQpPT09dCYmaXNGaW5pdGUoZSl9ZnVuY3Rpb24gdShlKXtyZXR1cm4gbihlKSYmImZ1bmN0aW9uIj09dHlwZW9mIGUudGhlbiYmImZ1bmN0aW9uIj09dHlwZW9mIGUuY2F0Y2h9ZnVuY3Rpb24gbChlKXtyZXR1cm4gbnVsbD09ZT8iIjpBcnJheS5pc0FycmF5KGUpfHxzKGUpJiZlLnRvU3RyaW5nPT09YT9KU09OLnN0cmluZ2lmeShlLG51bGwsMik6U3RyaW5nKGUpfWZ1bmN0aW9uIGYoZSl7dmFyIHQ9cGFyc2VGbG9hdChlKTtyZXR1cm4gaXNOYU4odCk\/ZTp0fWZ1bmN0aW9uIHAoZSx0KXtmb3IodmFyIG49T2JqZWN0LmNyZWF0ZShudWxsKSxyPWUuc3BsaXQoIiwiKSxpPTA7aTxyLmxlbmd0aDtpKyspbltyW2ldXT0hMDtyZXR1cm4gdD9mdW5jdGlvbihlKXtyZXR1cm4gbltlLnRvTG93ZXJDYXNlKCldfTpmdW5jdGlvbihlKXtyZXR1cm4gbltlXX19dmFyIGQ9cCgic2xvdCxjb21wb25lbnQiLCEwKSx2PXAoImtleSxyZWYsc2xvdCxzbG90LXNjb3BlLGlzIik7ZnVuY3Rpb24gaChlLHQpe2lmKGUubGVuZ3RoKXt2YXIgbj1lLmluZGV4T2YodCk7aWYobj4tMSlyZXR1cm4gZS5zcGxpY2UobiwxKX19dmFyIG09T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiB5KGUsdCl7cmV0dXJuIG0uY2FsbChlLHQpfWZ1bmN0aW9uIGcoZSl7dmFyIHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHRbbl18fCh0W25dPWUobikpfX12YXIgXz0vLShcdykvZyxiPWcoZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZShfLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ\/dC50b1VwcGVyQ2FzZSgpOiIifSl9KSwkPWcoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKX0pLHc9L1xCKFtBLVpdKS9nLEM9ZyhmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKHcsIi0kMSIpLnRvTG93ZXJDYXNlKCl9KTt2YXIgeD1GdW5jdGlvbi5wcm90b3R5cGUuYmluZD9mdW5jdGlvbihlLHQpe3JldHVybiBlLmJpbmQodCl9OmZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbihuKXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoO3JldHVybiByP3I+MT9lLmFwcGx5KHQsYXJndW1lbnRzKTplLmNhbGwodCxuKTplLmNhbGwodCl9cmV0dXJuIG4uX2xlbmd0aD1lLmxlbmd0aCxufTtmdW5jdGlvbiBrKGUsdCl7dD10fHwwO2Zvcih2YXIgbj1lLmxlbmd0aC10LHI9bmV3IEFycmF5KG4pO24tLTspcltuXT1lW24rdF07cmV0dXJuIHJ9ZnVuY3Rpb24gQShlLHQpe2Zvcih2YXIgbiBpbiB0KWVbbl09dFtuXTtyZXR1cm4gZX1mdW5jdGlvbiBPKGUpe2Zvcih2YXIgdD17fSxuPTA7bjxlLmxlbmd0aDtuKyspZVtuXSYmQSh0LGVbbl0pO3JldHVybiB0fWZ1bmN0aW9uIFMoZSx0LG4pe312YXIgVD1mdW5jdGlvbihlLHQsbil7cmV0dXJuITF9LEU9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9O2Z1bmN0aW9uIE4oZSx0KXtpZihlPT09dClyZXR1cm4hMDt2YXIgbj1vKGUpLHI9byh0KTtpZighbnx8IXIpcmV0dXJuIW4mJiFyJiZTdHJpbmcoZSk9PT1TdHJpbmcodCk7dHJ5e3ZhciBpPUFycmF5LmlzQXJyYXkoZSksYT1BcnJheS5pc0FycmF5KHQpO2lmKGkmJmEpcmV0dXJuIGUubGVuZ3RoPT09dC5sZW5ndGgmJmUuZXZlcnkoZnVuY3Rpb24oZSxuKXtyZXR1cm4gTihlLHRbbl0pfSk7aWYoZSBpbnN0YW5jZW9mIERhdGUmJnQgaW5zdGFuY2VvZiBEYXRlKXJldHVybiBlLmdldFRpbWUoKT09PXQuZ2V0VGltZSgpO2lmKGl8fGEpcmV0dXJuITE7dmFyIHM9T2JqZWN0LmtleXMoZSksYz1PYmplY3Qua2V5cyh0KTtyZXR1cm4gcy5sZW5ndGg9PT1jLmxlbmd0aCYmcy5ldmVyeShmdW5jdGlvbihuKXtyZXR1cm4gTihlW25dLHRbbl0pfSl9Y2F0Y2goZSl7cmV0dXJuITF9fWZ1bmN0aW9uIGooZSx0KXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKylpZihOKGVbbl0sdCkpcmV0dXJuIG47cmV0dXJuLTF9ZnVuY3Rpb24gRChlKXt2YXIgdD0hMTtyZXR1cm4gZnVuY3Rpb24oKXt0fHwodD0hMCxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9fXZhciBMPSJkYXRhLXNlcnZlci1yZW5kZXJlZCIsTT1bImNvbXBvbmVudCIsImRpcmVjdGl2ZSIsImZpbHRlciJdLEk9WyJiZWZvcmVDcmVhdGUiLCJjcmVhdGVkIiwiYmVmb3JlTW91bnQiLCJtb3VudGVkIiwiYmVmb3JlVXBkYXRlIiwidXBkYXRlZCIsImJlZm9yZURlc3Ryb3kiLCJkZXN0cm95ZWQiLCJhY3RpdmF0ZWQiLCJkZWFjdGl2YXRlZCIsImVycm9yQ2FwdHVyZWQiLCJzZXJ2ZXJQcmVmZXRjaCJdLEY9e29wdGlvbk1lcmdlU3RyYXRlZ2llczpPYmplY3QuY3JlYXRlKG51bGwpLHNpbGVudDohMSxwcm9kdWN0aW9uVGlwOiExLGRldnRvb2xzOiExLHBlcmZvcm1hbmNlOiExLGVycm9ySGFuZGxlcjpudWxsLHdhcm5IYW5kbGVyOm51bGwsaWdub3JlZEVsZW1lbnRzOltdLGtleUNvZGVzOk9iamVjdC5jcmVhdGUobnVsbCksaXNSZXNlcnZlZFRhZzpULGlzUmVzZXJ2ZWRBdHRyOlQsaXNVbmtub3duRWxlbWVudDpULGdldFRhZ05hbWVzcGFjZTpTLHBhcnNlUGxhdGZvcm1UYWdOYW1lOkUsbXVzdFVzZVByb3A6VCxhc3luYzohMCxfbGlmZWN5Y2xlSG9va3M6SX0sUD0vYS16QS1aXHUwMEI3XHUwMEMwLVx1MDBENlx1MDBEOC1cdTAwRjZcdTAwRjgtXHUwMzdEXHUwMzdGLVx1MUZGRlx1MjAwQy1cdTIwMERcdTIwM0YtXHUyMDQwXHUyMDcwLVx1MjE4Rlx1MkMwMC1cdTJGRUZcdTMwMDEtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRkQvO2Z1bmN0aW9uIFIoZSx0LG4scil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEhcix3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9KX12YXIgSD1uZXcgUmVnRXhwKCJbXiIrUC5zb3VyY2UrIi4kX1xcZF0iKTt2YXIgQixVPSJfX3Byb3RvX18iaW57fSx6PSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93LFY9InVuZGVmaW5lZCIhPXR5cGVvZiBXWEVudmlyb25tZW50JiYhIVdYRW52aXJvbm1lbnQucGxhdGZvcm0sSz1WJiZXWEVudmlyb25tZW50LnBsYXRmb3JtLnRvTG93ZXJDYXNlKCksSj16JiZ3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLHE9SiYmL21zaWV8dHJpZGVudC8udGVzdChKKSxXPUomJkouaW5kZXhPZigibXNpZSA5LjAiKT4wLFo9SiYmSi5pbmRleE9mKCJlZGdlLyIpPjAsRz0oSiYmSi5pbmRleE9mKCJhbmRyb2lkIiksSiYmL2lwaG9uZXxpcGFkfGlwb2R8aW9zLy50ZXN0KEopfHwiaW9zIj09PUspLFg9KEomJi9jaHJvbWVcL1xkKy8udGVzdChKKSxKJiYvcGhhbnRvbWpzLy50ZXN0KEopLEomJkoubWF0Y2goL2ZpcmVmb3hcLyhcZCspLykpLFk9e30ud2F0Y2gsUT0hMTtpZih6KXRyeXt2YXIgZWU9e307T2JqZWN0LmRlZmluZVByb3BlcnR5KGVlLCJwYXNzaXZlIix7Z2V0OmZ1bmN0aW9uKCl7UT0hMH19KSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidGVzdC1wYXNzaXZlIixudWxsLGVlKX1jYXRjaChlKXt9dmFyIHRlPWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMD09PUImJihCPSF6JiYhViYmInVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWwmJihnbG9iYWwucHJvY2VzcyYmInNlcnZlciI9PT1nbG9iYWwucHJvY2Vzcy5lbnYuVlVFX0VOVikpLEJ9LG5lPXomJndpbmRvdy5fX1ZVRV9ERVZUT09MU19HTE9CQUxfSE9PS19fO2Z1bmN0aW9uIHJlKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlJiYvbmF0aXZlIGNvZGUvLnRlc3QoZS50b1N0cmluZygpKX12YXIgaWUsb2U9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJnJlKFN5bWJvbCkmJiJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmcmUoUmVmbGVjdC5vd25LZXlzKTtpZT0idW5kZWZpbmVkIiE9dHlwZW9mIFNldCYmcmUoU2V0KT9TZXQ6ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7dGhpcy5zZXQ9T2JqZWN0LmNyZWF0ZShudWxsKX1yZXR1cm4gZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKGUpe3JldHVybiEwPT09dGhpcy5zZXRbZV19LGUucHJvdG90eXBlLmFkZD1mdW5jdGlvbihlKXt0aGlzLnNldFtlXT0hMH0sZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnNldD1PYmplY3QuY3JlYXRlKG51bGwpfSxlfSgpO3ZhciBhZT1TLHNlPTAsY2U9ZnVuY3Rpb24oKXt0aGlzLmlkPXNlKyssdGhpcy5zdWJzPVtdfTtjZS5wcm90b3R5cGUuYWRkU3ViPWZ1bmN0aW9uKGUpe3RoaXMuc3Vicy5wdXNoKGUpfSxjZS5wcm90b3R5cGUucmVtb3ZlU3ViPWZ1bmN0aW9uKGUpe2godGhpcy5zdWJzLGUpfSxjZS5wcm90b3R5cGUuZGVwZW5kPWZ1bmN0aW9uKCl7Y2UudGFyZ2V0JiZjZS50YXJnZXQuYWRkRGVwKHRoaXMpfSxjZS5wcm90b3R5cGUubm90aWZ5PWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMuc3Vicy5zbGljZSgpLHQ9MCxuPWUubGVuZ3RoO3Q8bjt0KyspZVt0XS51cGRhdGUoKX0sY2UudGFyZ2V0PW51bGw7dmFyIHVlPVtdO2Z1bmN0aW9uIGxlKGUpe3VlLnB1c2goZSksY2UudGFyZ2V0PWV9ZnVuY3Rpb24gZmUoKXt1ZS5wb3AoKSxjZS50YXJnZXQ9dWVbdWUubGVuZ3RoLTFdfXZhciBwZT1mdW5jdGlvbihlLHQsbixyLGksbyxhLHMpe3RoaXMudGFnPWUsdGhpcy5kYXRhPXQsdGhpcy5jaGlsZHJlbj1uLHRoaXMudGV4dD1yLHRoaXMuZWxtPWksdGhpcy5ucz12b2lkIDAsdGhpcy5jb250ZXh0PW8sdGhpcy5mbkNvbnRleHQ9dm9pZCAwLHRoaXMuZm5PcHRpb25zPXZvaWQgMCx0aGlzLmZuU2NvcGVJZD12b2lkIDAsdGhpcy5rZXk9dCYmdC5rZXksdGhpcy5jb21wb25lbnRPcHRpb25zPWEsdGhpcy5jb21wb25lbnRJbnN0YW5jZT12b2lkIDAsdGhpcy5wYXJlbnQ9dm9pZCAwLHRoaXMucmF3PSExLHRoaXMuaXNTdGF0aWM9ITEsdGhpcy5pc1Jvb3RJbnNlcnQ9ITAsdGhpcy5pc0NvbW1lbnQ9ITEsdGhpcy5pc0Nsb25lZD0hMSx0aGlzLmlzT25jZT0hMSx0aGlzLmFzeW5jRmFjdG9yeT1zLHRoaXMuYXN5bmNNZXRhPXZvaWQgMCx0aGlzLmlzQXN5bmNQbGFjZWhvbGRlcj0hMX0sZGU9e2NoaWxkOntjb25maWd1cmFibGU6ITB9fTtkZS5jaGlsZC5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb21wb25lbnRJbnN0YW5jZX0sT2JqZWN0LmRlZmluZVByb3BlcnRpZXMocGUucHJvdG90eXBlLGRlKTt2YXIgdmU9ZnVuY3Rpb24oZSl7dm9pZCAwPT09ZSYmKGU9IiIpO3ZhciB0PW5ldyBwZTtyZXR1cm4gdC50ZXh0PWUsdC5pc0NvbW1lbnQ9ITAsdH07ZnVuY3Rpb24gaGUoZSl7cmV0dXJuIG5ldyBwZSh2b2lkIDAsdm9pZCAwLHZvaWQgMCxTdHJpbmcoZSkpfWZ1bmN0aW9uIG1lKGUpe3ZhciB0PW5ldyBwZShlLnRhZyxlLmRhdGEsZS5jaGlsZHJlbiYmZS5jaGlsZHJlbi5zbGljZSgpLGUudGV4dCxlLmVsbSxlLmNvbnRleHQsZS5jb21wb25lbnRPcHRpb25zLGUuYXN5bmNGYWN0b3J5KTtyZXR1cm4gdC5ucz1lLm5zLHQuaXNTdGF0aWM9ZS5pc1N0YXRpYyx0LmtleT1lLmtleSx0LmlzQ29tbWVudD1lLmlzQ29tbWVudCx0LmZuQ29udGV4dD1lLmZuQ29udGV4dCx0LmZuT3B0aW9ucz1lLmZuT3B0aW9ucyx0LmZuU2NvcGVJZD1lLmZuU2NvcGVJZCx0LmFzeW5jTWV0YT1lLmFzeW5jTWV0YSx0LmlzQ2xvbmVkPSEwLHR9dmFyIHllPUFycmF5LnByb3RvdHlwZSxnZT1PYmplY3QuY3JlYXRlKHllKTtbInB1c2giLCJwb3AiLCJzaGlmdCIsInVuc2hpZnQiLCJzcGxpY2UiLCJzb3J0IiwicmV2ZXJzZSJdLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9eWVbZV07UihnZSxlLGZ1bmN0aW9uKCl7Zm9yKHZhciBuPVtdLHI9YXJndW1lbnRzLmxlbmd0aDtyLS07KW5bcl09YXJndW1lbnRzW3JdO3ZhciBpLG89dC5hcHBseSh0aGlzLG4pLGE9dGhpcy5fX29iX187c3dpdGNoKGUpe2Nhc2UicHVzaCI6Y2FzZSJ1bnNoaWZ0IjppPW47YnJlYWs7Y2FzZSJzcGxpY2UiOmk9bi5zbGljZSgyKX1yZXR1cm4gaSYmYS5vYnNlcnZlQXJyYXkoaSksYS5kZXAubm90aWZ5KCksb30pfSk7dmFyIF9lPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGdlKSxiZT0hMDtmdW5jdGlvbiAkZShlKXtiZT1lfXZhciB3ZT1mdW5jdGlvbihlKXt2YXIgdDt0aGlzLnZhbHVlPWUsdGhpcy5kZXA9bmV3IGNlLHRoaXMudm1Db3VudD0wLFIoZSwiX19vYl9fIix0aGlzKSxBcnJheS5pc0FycmF5KGUpPyhVPyh0PWdlLGUuX19wcm90b19fPXQpOmZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9MCxpPW4ubGVuZ3RoO3I8aTtyKyspe3ZhciBvPW5bcl07UihlLG8sdFtvXSl9fShlLGdlLF9lKSx0aGlzLm9ic2VydmVBcnJheShlKSk6dGhpcy53YWxrKGUpfTtmdW5jdGlvbiBDZShlLHQpe3ZhciBuO2lmKG8oZSkmJiEoZSBpbnN0YW5jZW9mIHBlKSlyZXR1cm4geShlLCJfX29iX18iKSYmZS5fX29iX18gaW5zdGFuY2VvZiB3ZT9uPWUuX19vYl9fOmJlJiYhdGUoKSYmKEFycmF5LmlzQXJyYXkoZSl8fHMoZSkpJiZPYmplY3QuaXNFeHRlbnNpYmxlKGUpJiYhZS5faXNWdWUmJihuPW5ldyB3ZShlKSksdCYmbiYmbi52bUNvdW50Kyssbn1mdW5jdGlvbiB4ZShlLHQsbixyLGkpe3ZhciBvPW5ldyBjZSxhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KTtpZighYXx8ITEhPT1hLmNvbmZpZ3VyYWJsZSl7dmFyIHM9YSYmYS5nZXQsYz1hJiZhLnNldDtzJiYhY3x8MiE9PWFyZ3VtZW50cy5sZW5ndGh8fChuPWVbdF0pO3ZhciB1PSFpJiZDZShuKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXt2YXIgdD1zP3MuY2FsbChlKTpuO3JldHVybiBjZS50YXJnZXQmJihvLmRlcGVuZCgpLHUmJih1LmRlcC5kZXBlbmQoKSxBcnJheS5pc0FycmF5KHQpJiZmdW5jdGlvbiBlKHQpe2Zvcih2YXIgbj12b2lkIDAscj0wLGk9dC5sZW5ndGg7cjxpO3IrKykobj10W3JdKSYmbi5fX29iX18mJm4uX19vYl9fLmRlcC5kZXBlbmQoKSxBcnJheS5pc0FycmF5KG4pJiZlKG4pfSh0KSkpLHR9LHNldDpmdW5jdGlvbih0KXt2YXIgcj1zP3MuY2FsbChlKTpuO3Q9PT1yfHx0IT10JiZyIT1yfHxzJiYhY3x8KGM\/Yy5jYWxsKGUsdCk6bj10LHU9IWkmJkNlKHQpLG8ubm90aWZ5KCkpfX0pfX1mdW5jdGlvbiBrZShlLHQsbil7aWYoQXJyYXkuaXNBcnJheShlKSYmYyh0KSlyZXR1cm4gZS5sZW5ndGg9TWF0aC5tYXgoZS5sZW5ndGgsdCksZS5zcGxpY2UodCwxLG4pLG47aWYodCBpbiBlJiYhKHQgaW4gT2JqZWN0LnByb3RvdHlwZSkpcmV0dXJuIGVbdF09bixuO3ZhciByPWUuX19vYl9fO3JldHVybiBlLl9pc1Z1ZXx8ciYmci52bUNvdW50P246cj8oeGUoci52YWx1ZSx0LG4pLHIuZGVwLm5vdGlmeSgpLG4pOihlW3RdPW4sbil9ZnVuY3Rpb24gQWUoZSx0KXtpZihBcnJheS5pc0FycmF5KGUpJiZjKHQpKWUuc3BsaWNlKHQsMSk7ZWxzZXt2YXIgbj1lLl9fb2JfXztlLl9pc1Z1ZXx8biYmbi52bUNvdW50fHx5KGUsdCkmJihkZWxldGUgZVt0XSxuJiZuLmRlcC5ub3RpZnkoKSl9fXdlLnByb3RvdHlwZS53YWxrPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1PYmplY3Qua2V5cyhlKSxuPTA7bjx0Lmxlbmd0aDtuKyspeGUoZSx0W25dKX0sd2UucHJvdG90eXBlLm9ic2VydmVBcnJheT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MCxuPWUubGVuZ3RoO3Q8bjt0KyspQ2UoZVt0XSl9O3ZhciBPZT1GLm9wdGlvbk1lcmdlU3RyYXRlZ2llcztmdW5jdGlvbiBTZShlLHQpe2lmKCF0KXJldHVybiBlO2Zvcih2YXIgbixyLGksbz1vZT9SZWZsZWN0Lm93bktleXModCk6T2JqZWN0LmtleXModCksYT0wO2E8by5sZW5ndGg7YSsrKSJfX29iX18iIT09KG49b1thXSkmJihyPWVbbl0saT10W25dLHkoZSxuKT9yIT09aSYmcyhyKSYmcyhpKSYmU2UocixpKTprZShlLG4saSkpO3JldHVybiBlfWZ1bmN0aW9uIFRlKGUsdCxuKXtyZXR1cm4gbj9mdW5jdGlvbigpe3ZhciByPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3QuY2FsbChuLG4pOnQsaT0iZnVuY3Rpb24iPT10eXBlb2YgZT9lLmNhbGwobixuKTplO3JldHVybiByP1NlKHIsaSk6aX06dD9lP2Z1bmN0aW9uKCl7cmV0dXJuIFNlKCJmdW5jdGlvbiI9PXR5cGVvZiB0P3QuY2FsbCh0aGlzLHRoaXMpOnQsImZ1bmN0aW9uIj09dHlwZW9mIGU\/ZS5jYWxsKHRoaXMsdGhpcyk6ZSl9OnQ6ZX1mdW5jdGlvbiBFZShlLHQpe3ZhciBuPXQ\/ZT9lLmNvbmNhdCh0KTpBcnJheS5pc0FycmF5KHQpP3Q6W3RdOmU7cmV0dXJuIG4\/ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLG49MDtuPGUubGVuZ3RoO24rKyktMT09PXQuaW5kZXhPZihlW25dKSYmdC5wdXNoKGVbbl0pO3JldHVybiB0fShuKTpufWZ1bmN0aW9uIE5lKGUsdCxuLHIpe3ZhciBpPU9iamVjdC5jcmVhdGUoZXx8bnVsbCk7cmV0dXJuIHQ\/QShpLHQpOml9T2UuZGF0YT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG4\/VGUoZSx0LG4pOnQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6VGUoZSx0KX0sSS5mb3JFYWNoKGZ1bmN0aW9uKGUpe09lW2VdPUVlfSksTS5mb3JFYWNoKGZ1bmN0aW9uKGUpe09lW2UrInMiXT1OZX0pLE9lLndhdGNoPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKGU9PT1ZJiYoZT12b2lkIDApLHQ9PT1ZJiYodD12b2lkIDApLCF0KXJldHVybiBPYmplY3QuY3JlYXRlKGV8fG51bGwpO2lmKCFlKXJldHVybiB0O3ZhciBpPXt9O2Zvcih2YXIgbyBpbiBBKGksZSksdCl7dmFyIGE9aVtvXSxzPXRbb107YSYmIUFycmF5LmlzQXJyYXkoYSkmJihhPVthXSksaVtvXT1hP2EuY29uY2F0KHMpOkFycmF5LmlzQXJyYXkocyk\/czpbc119cmV0dXJuIGl9LE9lLnByb3BzPU9lLm1ldGhvZHM9T2UuaW5qZWN0PU9lLmNvbXB1dGVkPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKCFlKXJldHVybiB0O3ZhciBpPU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIEEoaSxlKSx0JiZBKGksdCksaX0sT2UucHJvdmlkZT1UZTt2YXIgamU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dD9lOnR9O2Z1bmN0aW9uIERlKGUsdCxuKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgdCYmKHQ9dC5vcHRpb25zKSxmdW5jdGlvbihlLHQpe3ZhciBuPWUucHJvcHM7aWYobil7dmFyIHIsaSxvPXt9O2lmKEFycmF5LmlzQXJyYXkobikpZm9yKHI9bi5sZW5ndGg7ci0tOykic3RyaW5nIj09dHlwZW9mKGk9bltyXSkmJihvW2IoaSldPXt0eXBlOm51bGx9KTtlbHNlIGlmKHMobikpZm9yKHZhciBhIGluIG4paT1uW2FdLG9bYihhKV09cyhpKT9pOnt0eXBlOml9O2UucHJvcHM9b319KHQpLGZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5pbmplY3Q7aWYobil7dmFyIHI9ZS5pbmplY3Q9e307aWYoQXJyYXkuaXNBcnJheShuKSlmb3IodmFyIGk9MDtpPG4ubGVuZ3RoO2krKylyW25baV1dPXtmcm9tOm5baV19O2Vsc2UgaWYocyhuKSlmb3IodmFyIG8gaW4gbil7dmFyIGE9bltvXTtyW29dPXMoYSk\/QSh7ZnJvbTpvfSxhKTp7ZnJvbTphfX19fSh0KSxmdW5jdGlvbihlKXt2YXIgdD1lLmRpcmVjdGl2ZXM7aWYodClmb3IodmFyIG4gaW4gdCl7dmFyIHI9dFtuXTsiZnVuY3Rpb24iPT10eXBlb2YgciYmKHRbbl09e2JpbmQ6cix1cGRhdGU6cn0pfX0odCksIXQuX2Jhc2UmJih0LmV4dGVuZHMmJihlPURlKGUsdC5leHRlbmRzLG4pKSx0Lm1peGlucykpZm9yKHZhciByPTAsaT10Lm1peGlucy5sZW5ndGg7cjxpO3IrKyllPURlKGUsdC5taXhpbnNbcl0sbik7dmFyIG8sYT17fTtmb3IobyBpbiBlKWMobyk7Zm9yKG8gaW4gdCl5KGUsbyl8fGMobyk7ZnVuY3Rpb24gYyhyKXt2YXIgaT1PZVtyXXx8amU7YVtyXT1pKGVbcl0sdFtyXSxuLHIpfXJldHVybiBhfWZ1bmN0aW9uIExlKGUsdCxuLHIpe2lmKCJzdHJpbmciPT10eXBlb2Ygbil7dmFyIGk9ZVt0XTtpZih5KGksbikpcmV0dXJuIGlbbl07dmFyIG89YihuKTtpZih5KGksbykpcmV0dXJuIGlbb107dmFyIGE9JChvKTtyZXR1cm4geShpLGEpP2lbYV06aVtuXXx8aVtvXXx8aVthXX19ZnVuY3Rpb24gTWUoZSx0LG4scil7dmFyIGk9dFtlXSxvPSF5KG4sZSksYT1uW2VdLHM9UGUoQm9vbGVhbixpLnR5cGUpO2lmKHM+LTEpaWYobyYmIXkoaSwiZGVmYXVsdCIpKWE9ITE7ZWxzZSBpZigiIj09PWF8fGE9PT1DKGUpKXt2YXIgYz1QZShTdHJpbmcsaS50eXBlKTsoYzwwfHxzPGMpJiYoYT0hMCl9aWYodm9pZCAwPT09YSl7YT1mdW5jdGlvbihlLHQsbil7aWYoIXkodCwiZGVmYXVsdCIpKXJldHVybjt2YXIgcj10LmRlZmF1bHQ7aWYoZSYmZS4kb3B0aW9ucy5wcm9wc0RhdGEmJnZvaWQgMD09PWUuJG9wdGlvbnMucHJvcHNEYXRhW25dJiZ2b2lkIDAhPT1lLl9wcm9wc1tuXSlyZXR1cm4gZS5fcHJvcHNbbl07cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHImJiJGdW5jdGlvbiIhPT1JZSh0LnR5cGUpP3IuY2FsbChlKTpyfShyLGksZSk7dmFyIHU9YmU7JGUoITApLENlKGEpLCRlKHUpfXJldHVybiBhfWZ1bmN0aW9uIEllKGUpe3ZhciB0PWUmJmUudG9TdHJpbmcoKS5tYXRjaCgvXlxzKmZ1bmN0aW9uIChcdyspLyk7cmV0dXJuIHQ\/dFsxXToiIn1mdW5jdGlvbiBGZShlLHQpe3JldHVybiBJZShlKT09PUllKHQpfWZ1bmN0aW9uIFBlKGUsdCl7aWYoIUFycmF5LmlzQXJyYXkodCkpcmV0dXJuIEZlKHQsZSk\/MDotMTtmb3IodmFyIG49MCxyPXQubGVuZ3RoO248cjtuKyspaWYoRmUodFtuXSxlKSlyZXR1cm4gbjtyZXR1cm4tMX1mdW5jdGlvbiBSZShlLHQsbil7bGUoKTt0cnl7aWYodClmb3IodmFyIHI9dDtyPXIuJHBhcmVudDspe3ZhciBpPXIuJG9wdGlvbnMuZXJyb3JDYXB0dXJlZDtpZihpKWZvcih2YXIgbz0wO288aS5sZW5ndGg7bysrKXRyeXtpZighMT09PWlbb10uY2FsbChyLGUsdCxuKSlyZXR1cm59Y2F0Y2goZSl7QmUoZSxyLCJlcnJvckNhcHR1cmVkIGhvb2siKX19QmUoZSx0LG4pfWZpbmFsbHl7ZmUoKX19ZnVuY3Rpb24gSGUoZSx0LG4scixpKXt2YXIgbzt0cnl7KG89bj9lLmFwcGx5KHQsbik6ZS5jYWxsKHQpKSYmIW8uX2lzVnVlJiZ1KG8pJiYhby5faGFuZGxlZCYmKG8uY2F0Y2goZnVuY3Rpb24oZSl7cmV0dXJuIFJlKGUscixpKyIgKFByb21pc2UvYXN5bmMpIil9KSxvLl9oYW5kbGVkPSEwKX1jYXRjaChlKXtSZShlLHIsaSl9cmV0dXJuIG99ZnVuY3Rpb24gQmUoZSx0LG4pe2lmKEYuZXJyb3JIYW5kbGVyKXRyeXtyZXR1cm4gRi5lcnJvckhhbmRsZXIuY2FsbChudWxsLGUsdCxuKX1jYXRjaCh0KXt0IT09ZSYmVWUodCxudWxsLCJjb25maWcuZXJyb3JIYW5kbGVyIil9VWUoZSx0LG4pfWZ1bmN0aW9uIFVlKGUsdCxuKXtpZigheiYmIVZ8fCJ1bmRlZmluZWQiPT10eXBlb2YgY29uc29sZSl0aHJvdyBlO2NvbnNvbGUuZXJyb3IoZSl9dmFyIHplLFZlPSExLEtlPVtdLEplPSExO2Z1bmN0aW9uIHFlKCl7SmU9ITE7dmFyIGU9S2Uuc2xpY2UoMCk7S2UubGVuZ3RoPTA7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0KyspZVt0XSgpfWlmKCJ1bmRlZmluZWQiIT10eXBlb2YgUHJvbWlzZSYmcmUoUHJvbWlzZSkpe3ZhciBXZT1Qcm9taXNlLnJlc29sdmUoKTt6ZT1mdW5jdGlvbigpe1dlLnRoZW4ocWUpLEcmJnNldFRpbWVvdXQoUyl9LFZlPSEwfWVsc2UgaWYocXx8InVuZGVmaW5lZCI9PXR5cGVvZiBNdXRhdGlvbk9ic2VydmVyfHwhcmUoTXV0YXRpb25PYnNlcnZlcikmJiJbb2JqZWN0IE11dGF0aW9uT2JzZXJ2ZXJDb25zdHJ1Y3Rvcl0iIT09TXV0YXRpb25PYnNlcnZlci50b1N0cmluZygpKXplPSJ1bmRlZmluZWQiIT10eXBlb2Ygc2V0SW1tZWRpYXRlJiZyZShzZXRJbW1lZGlhdGUpP2Z1bmN0aW9uKCl7c2V0SW1tZWRpYXRlKHFlKX06ZnVuY3Rpb24oKXtzZXRUaW1lb3V0KHFlLDApfTtlbHNle3ZhciBaZT0xLEdlPW5ldyBNdXRhdGlvbk9ic2VydmVyKHFlKSxYZT1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShTdHJpbmcoWmUpKTtHZS5vYnNlcnZlKFhlLHtjaGFyYWN0ZXJEYXRhOiEwfSksemU9ZnVuY3Rpb24oKXtaZT0oWmUrMSklMixYZS5kYXRhPVN0cmluZyhaZSl9LFZlPSEwfWZ1bmN0aW9uIFllKGUsdCl7dmFyIG47aWYoS2UucHVzaChmdW5jdGlvbigpe2lmKGUpdHJ5e2UuY2FsbCh0KX1jYXRjaChlKXtSZShlLHQsIm5leHRUaWNrIil9ZWxzZSBuJiZuKHQpfSksSmV8fChKZT0hMCx6ZSgpKSwhZSYmInVuZGVmaW5lZCIhPXR5cGVvZiBQcm9taXNlKXJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihlKXtuPWV9KX12YXIgUWU9bmV3IGllO2Z1bmN0aW9uIGV0KGUpeyFmdW5jdGlvbiBlKHQsbil7dmFyIHIsaTt2YXIgYT1BcnJheS5pc0FycmF5KHQpO2lmKCFhJiYhbyh0KXx8T2JqZWN0LmlzRnJvemVuKHQpfHx0IGluc3RhbmNlb2YgcGUpcmV0dXJuO2lmKHQuX19vYl9fKXt2YXIgcz10Ll9fb2JfXy5kZXAuaWQ7aWYobi5oYXMocykpcmV0dXJuO24uYWRkKHMpfWlmKGEpZm9yKHI9dC5sZW5ndGg7ci0tOyllKHRbcl0sbik7ZWxzZSBmb3IoaT1PYmplY3Qua2V5cyh0KSxyPWkubGVuZ3RoO3ItLTspZSh0W2lbcl1dLG4pfShlLFFlKSxRZS5jbGVhcigpfXZhciB0dD1nKGZ1bmN0aW9uKGUpe3ZhciB0PSImIj09PWUuY2hhckF0KDApLG49In4iPT09KGU9dD9lLnNsaWNlKDEpOmUpLmNoYXJBdCgwKSxyPSIhIj09PShlPW4\/ZS5zbGljZSgxKTplKS5jaGFyQXQoMCk7cmV0dXJue25hbWU6ZT1yP2Uuc2xpY2UoMSk6ZSxvbmNlOm4sY2FwdHVyZTpyLHBhc3NpdmU6dH19KTtmdW5jdGlvbiBudChlLHQpe2Z1bmN0aW9uIG4oKXt2YXIgZT1hcmd1bWVudHMscj1uLmZucztpZighQXJyYXkuaXNBcnJheShyKSlyZXR1cm4gSGUocixudWxsLGFyZ3VtZW50cyx0LCJ2LW9uIGhhbmRsZXIiKTtmb3IodmFyIGk9ci5zbGljZSgpLG89MDtvPGkubGVuZ3RoO28rKylIZShpW29dLG51bGwsZSx0LCJ2LW9uIGhhbmRsZXIiKX1yZXR1cm4gbi5mbnM9ZSxufWZ1bmN0aW9uIHJ0KGUsbixpLG8sYSxzKXt2YXIgYyx1LGwsZjtmb3IoYyBpbiBlKXU9ZVtjXSxsPW5bY10sZj10dChjKSx0KHUpfHwodChsKT8odCh1LmZucykmJih1PWVbY109bnQodSxzKSkscihmLm9uY2UpJiYodT1lW2NdPWEoZi5uYW1lLHUsZi5jYXB0dXJlKSksaShmLm5hbWUsdSxmLmNhcHR1cmUsZi5wYXNzaXZlLGYucGFyYW1zKSk6dSE9PWwmJihsLmZucz11LGVbY109bCkpO2ZvcihjIGluIG4pdChlW2NdKSYmbygoZj10dChjKSkubmFtZSxuW2NdLGYuY2FwdHVyZSl9ZnVuY3Rpb24gaXQoZSxpLG8pe3ZhciBhO2UgaW5zdGFuY2VvZiBwZSYmKGU9ZS5kYXRhLmhvb2t8fChlLmRhdGEuaG9vaz17fSkpO3ZhciBzPWVbaV07ZnVuY3Rpb24gYygpe28uYXBwbHkodGhpcyxhcmd1bWVudHMpLGgoYS5mbnMsYyl9dChzKT9hPW50KFtjXSk6bihzLmZucykmJnIocy5tZXJnZWQpPyhhPXMpLmZucy5wdXNoKGMpOmE9bnQoW3MsY10pLGEubWVyZ2VkPSEwLGVbaV09YX1mdW5jdGlvbiBvdChlLHQscixpLG8pe2lmKG4odCkpe2lmKHkodCxyKSlyZXR1cm4gZVtyXT10W3JdLG98fGRlbGV0ZSB0W3JdLCEwO2lmKHkodCxpKSlyZXR1cm4gZVtyXT10W2ldLG98fGRlbGV0ZSB0W2ldLCEwfXJldHVybiExfWZ1bmN0aW9uIGF0KGUpe3JldHVybiBpKGUpP1toZShlKV06QXJyYXkuaXNBcnJheShlKT9mdW5jdGlvbiBlKG8sYSl7dmFyIHM9W107dmFyIGMsdSxsLGY7Zm9yKGM9MDtjPG8ubGVuZ3RoO2MrKyl0KHU9b1tjXSl8fCJib29sZWFuIj09dHlwZW9mIHV8fChsPXMubGVuZ3RoLTEsZj1zW2xdLEFycmF5LmlzQXJyYXkodSk\/dS5sZW5ndGg+MCYmKHN0KCh1PWUodSwoYXx8IiIpKyJfIitjKSlbMF0pJiZzdChmKSYmKHNbbF09aGUoZi50ZXh0K3VbMF0udGV4dCksdS5zaGlmdCgpKSxzLnB1c2guYXBwbHkocyx1KSk6aSh1KT9zdChmKT9zW2xdPWhlKGYudGV4dCt1KToiIiE9PXUmJnMucHVzaChoZSh1KSk6c3QodSkmJnN0KGYpP3NbbF09aGUoZi50ZXh0K3UudGV4dCk6KHIoby5faXNWTGlzdCkmJm4odS50YWcpJiZ0KHUua2V5KSYmbihhKSYmKHUua2V5PSJfX3ZsaXN0IithKyJfIitjKyJfXyIpLHMucHVzaCh1KSkpO3JldHVybiBzfShlKTp2b2lkIDB9ZnVuY3Rpb24gc3QoZSl7cmV0dXJuIG4oZSkmJm4oZS50ZXh0KSYmITE9PT1lLmlzQ29tbWVudH1mdW5jdGlvbiBjdChlLHQpe2lmKGUpe2Zvcih2YXIgbj1PYmplY3QuY3JlYXRlKG51bGwpLHI9b2U\/UmVmbGVjdC5vd25LZXlzKGUpOk9iamVjdC5rZXlzKGUpLGk9MDtpPHIubGVuZ3RoO2krKyl7dmFyIG89cltpXTtpZigiX19vYl9fIiE9PW8pe2Zvcih2YXIgYT1lW29dLmZyb20scz10O3M7KXtpZihzLl9wcm92aWRlZCYmeShzLl9wcm92aWRlZCxhKSl7bltvXT1zLl9wcm92aWRlZFthXTticmVha31zPXMuJHBhcmVudH1pZighcyYmImRlZmF1bHQiaW4gZVtvXSl7dmFyIGM9ZVtvXS5kZWZhdWx0O25bb109ImZ1bmN0aW9uIj09dHlwZW9mIGM\/Yy5jYWxsKHQpOmN9fX1yZXR1cm4gbn19ZnVuY3Rpb24gdXQoZSx0KXtpZighZXx8IWUubGVuZ3RoKXJldHVybnt9O2Zvcih2YXIgbj17fSxyPTAsaT1lLmxlbmd0aDtyPGk7cisrKXt2YXIgbz1lW3JdLGE9by5kYXRhO2lmKGEmJmEuYXR0cnMmJmEuYXR0cnMuc2xvdCYmZGVsZXRlIGEuYXR0cnMuc2xvdCxvLmNvbnRleHQhPT10JiZvLmZuQ29udGV4dCE9PXR8fCFhfHxudWxsPT1hLnNsb3QpKG4uZGVmYXVsdHx8KG4uZGVmYXVsdD1bXSkpLnB1c2gobyk7ZWxzZXt2YXIgcz1hLnNsb3QsYz1uW3NdfHwobltzXT1bXSk7InRlbXBsYXRlIj09PW8udGFnP2MucHVzaC5hcHBseShjLG8uY2hpbGRyZW58fFtdKTpjLnB1c2gobyl9fWZvcih2YXIgdSBpbiBuKW5bdV0uZXZlcnkobHQpJiZkZWxldGUgblt1XTtyZXR1cm4gbn1mdW5jdGlvbiBsdChlKXtyZXR1cm4gZS5pc0NvbW1lbnQmJiFlLmFzeW5jRmFjdG9yeXx8IiAiPT09ZS50ZXh0fWZ1bmN0aW9uIGZ0KHQsbixyKXt2YXIgaSxvPU9iamVjdC5rZXlzKG4pLmxlbmd0aD4wLGE9dD8hIXQuJHN0YWJsZTohbyxzPXQmJnQuJGtleTtpZih0KXtpZih0Ll9ub3JtYWxpemVkKXJldHVybiB0Ll9ub3JtYWxpemVkO2lmKGEmJnImJnIhPT1lJiZzPT09ci4ka2V5JiYhbyYmIXIuJGhhc05vcm1hbClyZXR1cm4gcjtmb3IodmFyIGMgaW4gaT17fSx0KXRbY10mJiIkIiE9PWNbMF0mJihpW2NdPXB0KG4sYyx0W2NdKSl9ZWxzZSBpPXt9O2Zvcih2YXIgdSBpbiBuKXUgaW4gaXx8KGlbdV09ZHQobix1KSk7cmV0dXJuIHQmJk9iamVjdC5pc0V4dGVuc2libGUodCkmJih0Ll9ub3JtYWxpemVkPWkpLFIoaSwiJHN0YWJsZSIsYSksUihpLCIka2V5IixzKSxSKGksIiRoYXNOb3JtYWwiLG8pLGl9ZnVuY3Rpb24gcHQoZSx0LG4pe3ZhciByPWZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD9uLmFwcGx5KG51bGwsYXJndW1lbnRzKTpuKHt9KTtyZXR1cm4oZT1lJiYib2JqZWN0Ij09dHlwZW9mIGUmJiFBcnJheS5pc0FycmF5KGUpP1tlXTphdChlKSkmJigwPT09ZS5sZW5ndGh8fDE9PT1lLmxlbmd0aCYmZVswXS5pc0NvbW1lbnQpP3ZvaWQgMDplfTtyZXR1cm4gbi5wcm94eSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7Z2V0OnIsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxyfWZ1bmN0aW9uIGR0KGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGVbdF19fWZ1bmN0aW9uIHZ0KGUsdCl7dmFyIHIsaSxhLHMsYztpZihBcnJheS5pc0FycmF5KGUpfHwic3RyaW5nIj09dHlwZW9mIGUpZm9yKHI9bmV3IEFycmF5KGUubGVuZ3RoKSxpPTAsYT1lLmxlbmd0aDtpPGE7aSsrKXJbaV09dChlW2ldLGkpO2Vsc2UgaWYoIm51bWJlciI9PXR5cGVvZiBlKWZvcihyPW5ldyBBcnJheShlKSxpPTA7aTxlO2krKylyW2ldPXQoaSsxLGkpO2Vsc2UgaWYobyhlKSlpZihvZSYmZVtTeW1ib2wuaXRlcmF0b3JdKXtyPVtdO2Zvcih2YXIgdT1lW1N5bWJvbC5pdGVyYXRvcl0oKSxsPXUubmV4dCgpOyFsLmRvbmU7KXIucHVzaCh0KGwudmFsdWUsci5sZW5ndGgpKSxsPXUubmV4dCgpfWVsc2UgZm9yKHM9T2JqZWN0LmtleXMoZSkscj1uZXcgQXJyYXkocy5sZW5ndGgpLGk9MCxhPXMubGVuZ3RoO2k8YTtpKyspYz1zW2ldLHJbaV09dChlW2NdLGMsaSk7cmV0dXJuIG4ocil8fChyPVtdKSxyLl9pc1ZMaXN0PSEwLHJ9ZnVuY3Rpb24gaHQoZSx0LG4scil7dmFyIGksbz10aGlzLiRzY29wZWRTbG90c1tlXTtvPyhuPW58fHt9LHImJihuPUEoQSh7fSxyKSxuKSksaT1vKG4pfHx0KTppPXRoaXMuJHNsb3RzW2VdfHx0O3ZhciBhPW4mJm4uc2xvdDtyZXR1cm4gYT90aGlzLiRjcmVhdGVFbGVtZW50KCJ0ZW1wbGF0ZSIse3Nsb3Q6YX0saSk6aX1mdW5jdGlvbiBtdChlKXtyZXR1cm4gTGUodGhpcy4kb3B0aW9ucywiZmlsdGVycyIsZSl8fEV9ZnVuY3Rpb24geXQoZSx0KXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT8tMT09PWUuaW5kZXhPZih0KTplIT09dH1mdW5jdGlvbiBndChlLHQsbixyLGkpe3ZhciBvPUYua2V5Q29kZXNbdF18fG47cmV0dXJuIGkmJnImJiFGLmtleUNvZGVzW3RdP3l0KGkscik6bz95dChvLGUpOnI\/QyhyKSE9PXQ6dm9pZCAwfWZ1bmN0aW9uIF90KGUsdCxuLHIsaSl7aWYobilpZihvKG4pKXt2YXIgYTtBcnJheS5pc0FycmF5KG4pJiYobj1PKG4pKTt2YXIgcz1mdW5jdGlvbihvKXtpZigiY2xhc3MiPT09b3x8InN0eWxlIj09PW98fHYobykpYT1lO2Vsc2V7dmFyIHM9ZS5hdHRycyYmZS5hdHRycy50eXBlO2E9cnx8Ri5tdXN0VXNlUHJvcCh0LHMsbyk\/ZS5kb21Qcm9wc3x8KGUuZG9tUHJvcHM9e30pOmUuYXR0cnN8fChlLmF0dHJzPXt9KX12YXIgYz1iKG8pLHU9QyhvKTtjIGluIGF8fHUgaW4gYXx8KGFbb109bltvXSxpJiYoKGUub258fChlLm9uPXt9KSlbInVwZGF0ZToiK29dPWZ1bmN0aW9uKGUpe25bb109ZX0pKX07Zm9yKHZhciBjIGluIG4pcyhjKX1lbHNlO3JldHVybiBlfWZ1bmN0aW9uIGJ0KGUsdCl7dmFyIG49dGhpcy5fc3RhdGljVHJlZXN8fCh0aGlzLl9zdGF0aWNUcmVlcz1bXSkscj1uW2VdO3JldHVybiByJiYhdD9yOih3dChyPW5bZV09dGhpcy4kb3B0aW9ucy5zdGF0aWNSZW5kZXJGbnNbZV0uY2FsbCh0aGlzLl9yZW5kZXJQcm94eSxudWxsLHRoaXMpLCJfX3N0YXRpY19fIitlLCExKSxyKX1mdW5jdGlvbiAkdChlLHQsbil7cmV0dXJuIHd0KGUsIl9fb25jZV9fIit0KyhuPyJfIituOiIiKSwhMCksZX1mdW5jdGlvbiB3dChlLHQsbil7aWYoQXJyYXkuaXNBcnJheShlKSlmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyllW3JdJiYic3RyaW5nIiE9dHlwZW9mIGVbcl0mJkN0KGVbcl0sdCsiXyIrcixuKTtlbHNlIEN0KGUsdCxuKX1mdW5jdGlvbiBDdChlLHQsbil7ZS5pc1N0YXRpYz0hMCxlLmtleT10LGUuaXNPbmNlPW59ZnVuY3Rpb24geHQoZSx0KXtpZih0KWlmKHModCkpe3ZhciBuPWUub249ZS5vbj9BKHt9LGUub24pOnt9O2Zvcih2YXIgciBpbiB0KXt2YXIgaT1uW3JdLG89dFtyXTtuW3JdPWk\/W10uY29uY2F0KGksbyk6b319ZWxzZTtyZXR1cm4gZX1mdW5jdGlvbiBrdChlLHQsbixyKXt0PXR8fHskc3RhYmxlOiFufTtmb3IodmFyIGk9MDtpPGUubGVuZ3RoO2krKyl7dmFyIG89ZVtpXTtBcnJheS5pc0FycmF5KG8pP2t0KG8sdCxuKTpvJiYoby5wcm94eSYmKG8uZm4ucHJveHk9ITApLHRbby5rZXldPW8uZm4pfXJldHVybiByJiYodC4ka2V5PXIpLHR9ZnVuY3Rpb24gQXQoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rPTIpe3ZhciByPXRbbl07InN0cmluZyI9PXR5cGVvZiByJiZyJiYoZVt0W25dXT10W24rMV0pfXJldHVybiBlfWZ1bmN0aW9uIE90KGUsdCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlP3QrZTplfWZ1bmN0aW9uIFN0KGUpe2UuX289JHQsZS5fbj1mLGUuX3M9bCxlLl9sPXZ0LGUuX3Q9aHQsZS5fcT1OLGUuX2k9aixlLl9tPWJ0LGUuX2Y9bXQsZS5faz1ndCxlLl9iPV90LGUuX3Y9aGUsZS5fZT12ZSxlLl91PWt0LGUuX2c9eHQsZS5fZD1BdCxlLl9wPU90fWZ1bmN0aW9uIFR0KHQsbixpLG8sYSl7dmFyIHMsYz10aGlzLHU9YS5vcHRpb25zO3kobywiX3VpZCIpPyhzPU9iamVjdC5jcmVhdGUobykpLl9vcmlnaW5hbD1vOihzPW8sbz1vLl9vcmlnaW5hbCk7dmFyIGw9cih1Ll9jb21waWxlZCksZj0hbDt0aGlzLmRhdGE9dCx0aGlzLnByb3BzPW4sdGhpcy5jaGlsZHJlbj1pLHRoaXMucGFyZW50PW8sdGhpcy5saXN0ZW5lcnM9dC5vbnx8ZSx0aGlzLmluamVjdGlvbnM9Y3QodS5pbmplY3QsbyksdGhpcy5zbG90cz1mdW5jdGlvbigpe3JldHVybiBjLiRzbG90c3x8ZnQodC5zY29wZWRTbG90cyxjLiRzbG90cz11dChpLG8pKSxjLiRzbG90c30sT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInNjb3BlZFNsb3RzIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZnQodC5zY29wZWRTbG90cyx0aGlzLnNsb3RzKCkpfX0pLGwmJih0aGlzLiRvcHRpb25zPXUsdGhpcy4kc2xvdHM9dGhpcy5zbG90cygpLHRoaXMuJHNjb3BlZFNsb3RzPWZ0KHQuc2NvcGVkU2xvdHMsdGhpcy4kc2xvdHMpKSx1Ll9zY29wZUlkP3RoaXMuX2M9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9UHQocyxlLHQsbixyLGYpO3JldHVybiBpJiYhQXJyYXkuaXNBcnJheShpKSYmKGkuZm5TY29wZUlkPXUuX3Njb3BlSWQsaS5mbkNvbnRleHQ9byksaX06dGhpcy5fYz1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gUHQocyxlLHQsbixyLGYpfX1mdW5jdGlvbiBFdChlLHQsbixyLGkpe3ZhciBvPW1lKGUpO3JldHVybiBvLmZuQ29udGV4dD1uLG8uZm5PcHRpb25zPXIsdC5zbG90JiYoKG8uZGF0YXx8KG8uZGF0YT17fSkpLnNsb3Q9dC5zbG90KSxvfWZ1bmN0aW9uIE50KGUsdCl7Zm9yKHZhciBuIGluIHQpZVtiKG4pXT10W25dfVN0KFR0LnByb3RvdHlwZSk7dmFyIGp0PXtpbml0OmZ1bmN0aW9uKGUsdCl7aWYoZS5jb21wb25lbnRJbnN0YW5jZSYmIWUuY29tcG9uZW50SW5zdGFuY2UuX2lzRGVzdHJveWVkJiZlLmRhdGEua2VlcEFsaXZlKXt2YXIgcj1lO2p0LnByZXBhdGNoKHIscil9ZWxzZXsoZS5jb21wb25lbnRJbnN0YW5jZT1mdW5jdGlvbihlLHQpe3ZhciByPXtfaXNDb21wb25lbnQ6ITAsX3BhcmVudFZub2RlOmUscGFyZW50OnR9LGk9ZS5kYXRhLmlubGluZVRlbXBsYXRlO24oaSkmJihyLnJlbmRlcj1pLnJlbmRlcixyLnN0YXRpY1JlbmRlckZucz1pLnN0YXRpY1JlbmRlckZucyk7cmV0dXJuIG5ldyBlLmNvbXBvbmVudE9wdGlvbnMuQ3RvcihyKX0oZSxXdCkpLiRtb3VudCh0P2UuZWxtOnZvaWQgMCx0KX19LHByZXBhdGNoOmZ1bmN0aW9uKHQsbil7dmFyIHI9bi5jb21wb25lbnRPcHRpb25zOyFmdW5jdGlvbih0LG4scixpLG8pe3ZhciBhPWkuZGF0YS5zY29wZWRTbG90cyxzPXQuJHNjb3BlZFNsb3RzLGM9ISEoYSYmIWEuJHN0YWJsZXx8cyE9PWUmJiFzLiRzdGFibGV8fGEmJnQuJHNjb3BlZFNsb3RzLiRrZXkhPT1hLiRrZXkpLHU9ISEob3x8dC4kb3B0aW9ucy5fcmVuZGVyQ2hpbGRyZW58fGMpO3QuJG9wdGlvbnMuX3BhcmVudFZub2RlPWksdC4kdm5vZGU9aSx0Ll92bm9kZSYmKHQuX3Zub2RlLnBhcmVudD1pKTtpZih0LiRvcHRpb25zLl9yZW5kZXJDaGlsZHJlbj1vLHQuJGF0dHJzPWkuZGF0YS5hdHRyc3x8ZSx0LiRsaXN0ZW5lcnM9cnx8ZSxuJiZ0LiRvcHRpb25zLnByb3BzKXskZSghMSk7Zm9yKHZhciBsPXQuX3Byb3BzLGY9dC4kb3B0aW9ucy5fcHJvcEtleXN8fFtdLHA9MDtwPGYubGVuZ3RoO3ArKyl7dmFyIGQ9ZltwXSx2PXQuJG9wdGlvbnMucHJvcHM7bFtkXT1NZShkLHYsbix0KX0kZSghMCksdC4kb3B0aW9ucy5wcm9wc0RhdGE9bn1yPXJ8fGU7dmFyIGg9dC4kb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzO3QuJG9wdGlvbnMuX3BhcmVudExpc3RlbmVycz1yLHF0KHQscixoKSx1JiYodC4kc2xvdHM9dXQobyxpLmNvbnRleHQpLHQuJGZvcmNlVXBkYXRlKCkpfShuLmNvbXBvbmVudEluc3RhbmNlPXQuY29tcG9uZW50SW5zdGFuY2Usci5wcm9wc0RhdGEsci5saXN0ZW5lcnMsbixyLmNoaWxkcmVuKX0saW5zZXJ0OmZ1bmN0aW9uKGUpe3ZhciB0LG49ZS5jb250ZXh0LHI9ZS5jb21wb25lbnRJbnN0YW5jZTtyLl9pc01vdW50ZWR8fChyLl9pc01vdW50ZWQ9ITAsWXQociwibW91bnRlZCIpKSxlLmRhdGEua2VlcEFsaXZlJiYobi5faXNNb3VudGVkPygodD1yKS5faW5hY3RpdmU9ITEsZW4ucHVzaCh0KSk6WHQociwhMCkpfSxkZXN0cm95OmZ1bmN0aW9uKGUpe3ZhciB0PWUuY29tcG9uZW50SW5zdGFuY2U7dC5faXNEZXN0cm95ZWR8fChlLmRhdGEua2VlcEFsaXZlP2Z1bmN0aW9uIGUodCxuKXtpZihuJiYodC5fZGlyZWN0SW5hY3RpdmU9ITAsR3QodCkpKXJldHVybjtpZighdC5faW5hY3RpdmUpe3QuX2luYWN0aXZlPSEwO2Zvcih2YXIgcj0wO3I8dC4kY2hpbGRyZW4ubGVuZ3RoO3IrKyllKHQuJGNoaWxkcmVuW3JdKTtZdCh0LCJkZWFjdGl2YXRlZCIpfX0odCwhMCk6dC4kZGVzdHJveSgpKX19LER0PU9iamVjdC5rZXlzKGp0KTtmdW5jdGlvbiBMdChpLGEscyxjLGwpe2lmKCF0KGkpKXt2YXIgZj1zLiRvcHRpb25zLl9iYXNlO2lmKG8oaSkmJihpPWYuZXh0ZW5kKGkpKSwiZnVuY3Rpb24iPT10eXBlb2YgaSl7dmFyIHA7aWYodChpLmNpZCkmJnZvaWQgMD09PShpPWZ1bmN0aW9uKGUsaSl7aWYocihlLmVycm9yKSYmbihlLmVycm9yQ29tcCkpcmV0dXJuIGUuZXJyb3JDb21wO2lmKG4oZS5yZXNvbHZlZCkpcmV0dXJuIGUucmVzb2x2ZWQ7dmFyIGE9SHQ7YSYmbihlLm93bmVycykmJi0xPT09ZS5vd25lcnMuaW5kZXhPZihhKSYmZS5vd25lcnMucHVzaChhKTtpZihyKGUubG9hZGluZykmJm4oZS5sb2FkaW5nQ29tcCkpcmV0dXJuIGUubG9hZGluZ0NvbXA7aWYoYSYmIW4oZS5vd25lcnMpKXt2YXIgcz1lLm93bmVycz1bYV0sYz0hMCxsPW51bGwsZj1udWxsO2EuJG9uKCJob29rOmRlc3Ryb3llZCIsZnVuY3Rpb24oKXtyZXR1cm4gaChzLGEpfSk7dmFyIHA9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTAsbj1zLmxlbmd0aDt0PG47dCsrKXNbdF0uJGZvcmNlVXBkYXRlKCk7ZSYmKHMubGVuZ3RoPTAsbnVsbCE9PWwmJihjbGVhclRpbWVvdXQobCksbD1udWxsKSxudWxsIT09ZiYmKGNsZWFyVGltZW91dChmKSxmPW51bGwpKX0sZD1EKGZ1bmN0aW9uKHQpe2UucmVzb2x2ZWQ9QnQodCxpKSxjP3MubGVuZ3RoPTA6cCghMCl9KSx2PUQoZnVuY3Rpb24odCl7bihlLmVycm9yQ29tcCkmJihlLmVycm9yPSEwLHAoITApKX0pLG09ZShkLHYpO3JldHVybiBvKG0pJiYodShtKT90KGUucmVzb2x2ZWQpJiZtLnRoZW4oZCx2KTp1KG0uY29tcG9uZW50KSYmKG0uY29tcG9uZW50LnRoZW4oZCx2KSxuKG0uZXJyb3IpJiYoZS5lcnJvckNvbXA9QnQobS5lcnJvcixpKSksbihtLmxvYWRpbmcpJiYoZS5sb2FkaW5nQ29tcD1CdChtLmxvYWRpbmcsaSksMD09PW0uZGVsYXk\/ZS5sb2FkaW5nPSEwOmw9c2V0VGltZW91dChmdW5jdGlvbigpe2w9bnVsbCx0KGUucmVzb2x2ZWQpJiZ0KGUuZXJyb3IpJiYoZS5sb2FkaW5nPSEwLHAoITEpKX0sbS5kZWxheXx8MjAwKSksbihtLnRpbWVvdXQpJiYoZj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Zj1udWxsLHQoZS5yZXNvbHZlZCkmJnYobnVsbCl9LG0udGltZW91dCkpKSksYz0hMSxlLmxvYWRpbmc\/ZS5sb2FkaW5nQ29tcDplLnJlc29sdmVkfX0ocD1pLGYpKSlyZXR1cm4gZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgbz12ZSgpO3JldHVybiBvLmFzeW5jRmFjdG9yeT1lLG8uYXN5bmNNZXRhPXtkYXRhOnQsY29udGV4dDpuLGNoaWxkcmVuOnIsdGFnOml9LG99KHAsYSxzLGMsbCk7YT1hfHx7fSwkbihpKSxuKGEubW9kZWwpJiZmdW5jdGlvbihlLHQpe3ZhciByPWUubW9kZWwmJmUubW9kZWwucHJvcHx8InZhbHVlIixpPWUubW9kZWwmJmUubW9kZWwuZXZlbnR8fCJpbnB1dCI7KHQuYXR0cnN8fCh0LmF0dHJzPXt9KSlbcl09dC5tb2RlbC52YWx1ZTt2YXIgbz10Lm9ufHwodC5vbj17fSksYT1vW2ldLHM9dC5tb2RlbC5jYWxsYmFjaztuKGEpPyhBcnJheS5pc0FycmF5KGEpPy0xPT09YS5pbmRleE9mKHMpOmEhPT1zKSYmKG9baV09W3NdLmNvbmNhdChhKSk6b1tpXT1zfShpLm9wdGlvbnMsYSk7dmFyIGQ9ZnVuY3Rpb24oZSxyLGkpe3ZhciBvPXIub3B0aW9ucy5wcm9wcztpZighdChvKSl7dmFyIGE9e30scz1lLmF0dHJzLGM9ZS5wcm9wcztpZihuKHMpfHxuKGMpKWZvcih2YXIgdSBpbiBvKXt2YXIgbD1DKHUpO290KGEsYyx1LGwsITApfHxvdChhLHMsdSxsLCExKX1yZXR1cm4gYX19KGEsaSk7aWYocihpLm9wdGlvbnMuZnVuY3Rpb25hbCkpcmV0dXJuIGZ1bmN0aW9uKHQscixpLG8sYSl7dmFyIHM9dC5vcHRpb25zLGM9e30sdT1zLnByb3BzO2lmKG4odSkpZm9yKHZhciBsIGluIHUpY1tsXT1NZShsLHUscnx8ZSk7ZWxzZSBuKGkuYXR0cnMpJiZOdChjLGkuYXR0cnMpLG4oaS5wcm9wcykmJk50KGMsaS5wcm9wcyk7dmFyIGY9bmV3IFR0KGksYyxhLG8sdCkscD1zLnJlbmRlci5jYWxsKG51bGwsZi5fYyxmKTtpZihwIGluc3RhbmNlb2YgcGUpcmV0dXJuIEV0KHAsaSxmLnBhcmVudCxzKTtpZihBcnJheS5pc0FycmF5KHApKXtmb3IodmFyIGQ9YXQocCl8fFtdLHY9bmV3IEFycmF5KGQubGVuZ3RoKSxoPTA7aDxkLmxlbmd0aDtoKyspdltoXT1FdChkW2hdLGksZi5wYXJlbnQscyk7cmV0dXJuIHZ9fShpLGQsYSxzLGMpO3ZhciB2PWEub247aWYoYS5vbj1hLm5hdGl2ZU9uLHIoaS5vcHRpb25zLmFic3RyYWN0KSl7dmFyIG09YS5zbG90O2E9e30sbSYmKGEuc2xvdD1tKX0hZnVuY3Rpb24oZSl7Zm9yKHZhciB0PWUuaG9va3x8KGUuaG9vaz17fSksbj0wO248RHQubGVuZ3RoO24rKyl7dmFyIHI9RHRbbl0saT10W3JdLG89anRbcl07aT09PW98fGkmJmkuX21lcmdlZHx8KHRbcl09aT9NdChvLGkpOm8pfX0oYSk7dmFyIHk9aS5vcHRpb25zLm5hbWV8fGw7cmV0dXJuIG5ldyBwZSgidnVlLWNvbXBvbmVudC0iK2kuY2lkKyh5PyItIit5OiIiKSxhLHZvaWQgMCx2b2lkIDAsdm9pZCAwLHMse0N0b3I6aSxwcm9wc0RhdGE6ZCxsaXN0ZW5lcnM6dix0YWc6bCxjaGlsZHJlbjpjfSxwKX19fWZ1bmN0aW9uIE10KGUsdCl7dmFyIG49ZnVuY3Rpb24obixyKXtlKG4sciksdChuLHIpfTtyZXR1cm4gbi5fbWVyZ2VkPSEwLG59dmFyIEl0PTEsRnQ9MjtmdW5jdGlvbiBQdChlLGEscyxjLHUsbCl7cmV0dXJuKEFycmF5LmlzQXJyYXkocyl8fGkocykpJiYodT1jLGM9cyxzPXZvaWQgMCkscihsKSYmKHU9RnQpLGZ1bmN0aW9uKGUsaSxhLHMsYyl7aWYobihhKSYmbihhLl9fb2JfXykpcmV0dXJuIHZlKCk7bihhKSYmbihhLmlzKSYmKGk9YS5pcyk7aWYoIWkpcmV0dXJuIHZlKCk7QXJyYXkuaXNBcnJheShzKSYmImZ1bmN0aW9uIj09dHlwZW9mIHNbMF0mJigoYT1hfHx7fSkuc2NvcGVkU2xvdHM9e2RlZmF1bHQ6c1swXX0scy5sZW5ndGg9MCk7Yz09PUZ0P3M9YXQocyk6Yz09PUl0JiYocz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKylpZihBcnJheS5pc0FycmF5KGVbdF0pKXJldHVybiBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLGUpO3JldHVybiBlfShzKSk7dmFyIHUsbDtpZigic3RyaW5nIj09dHlwZW9mIGkpe3ZhciBmO2w9ZS4kdm5vZGUmJmUuJHZub2RlLm5zfHxGLmdldFRhZ05hbWVzcGFjZShpKSx1PUYuaXNSZXNlcnZlZFRhZyhpKT9uZXcgcGUoRi5wYXJzZVBsYXRmb3JtVGFnTmFtZShpKSxhLHMsdm9pZCAwLHZvaWQgMCxlKTphJiZhLnByZXx8IW4oZj1MZShlLiRvcHRpb25zLCJjb21wb25lbnRzIixpKSk\/bmV3IHBlKGksYSxzLHZvaWQgMCx2b2lkIDAsZSk6THQoZixhLGUscyxpKX1lbHNlIHU9THQoaSxhLGUscyk7cmV0dXJuIEFycmF5LmlzQXJyYXkodSk\/dTpuKHUpPyhuKGwpJiZmdW5jdGlvbiBlKGksbyxhKXtpLm5zPW87ImZvcmVpZ25PYmplY3QiPT09aS50YWcmJihvPXZvaWQgMCxhPSEwKTtpZihuKGkuY2hpbGRyZW4pKWZvcih2YXIgcz0wLGM9aS5jaGlsZHJlbi5sZW5ndGg7czxjO3MrKyl7dmFyIHU9aS5jaGlsZHJlbltzXTtuKHUudGFnKSYmKHQodS5ucyl8fHIoYSkmJiJzdmciIT09dS50YWcpJiZlKHUsbyxhKX19KHUsbCksbihhKSYmZnVuY3Rpb24oZSl7byhlLnN0eWxlKSYmZXQoZS5zdHlsZSk7byhlLmNsYXNzKSYmZXQoZS5jbGFzcyl9KGEpLHUpOnZlKCl9KGUsYSxzLGMsdSl9dmFyIFJ0LEh0PW51bGw7ZnVuY3Rpb24gQnQoZSx0KXtyZXR1cm4oZS5fX2VzTW9kdWxlfHxvZSYmIk1vZHVsZSI9PT1lW1N5bWJvbC50b1N0cmluZ1RhZ10pJiYoZT1lLmRlZmF1bHQpLG8oZSk\/dC5leHRlbmQoZSk6ZX1mdW5jdGlvbiBVdChlKXtyZXR1cm4gZS5pc0NvbW1lbnQmJmUuYXN5bmNGYWN0b3J5fWZ1bmN0aW9uIHp0KGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0Kyspe3ZhciByPWVbdF07aWYobihyKSYmKG4oci5jb21wb25lbnRPcHRpb25zKXx8VXQocikpKXJldHVybiByfX1mdW5jdGlvbiBWdChlLHQpe1J0LiRvbihlLHQpfWZ1bmN0aW9uIEt0KGUsdCl7UnQuJG9mZihlLHQpfWZ1bmN0aW9uIEp0KGUsdCl7dmFyIG49UnQ7cmV0dXJuIGZ1bmN0aW9uIHIoKXtudWxsIT09dC5hcHBseShudWxsLGFyZ3VtZW50cykmJm4uJG9mZihlLHIpfX1mdW5jdGlvbiBxdChlLHQsbil7UnQ9ZSxydCh0LG58fHt9LFZ0LEt0LEp0LGUpLFJ0PXZvaWQgMH12YXIgV3Q9bnVsbDtmdW5jdGlvbiBadChlKXt2YXIgdD1XdDtyZXR1cm4gV3Q9ZSxmdW5jdGlvbigpe1d0PXR9fWZ1bmN0aW9uIEd0KGUpe2Zvcig7ZSYmKGU9ZS4kcGFyZW50KTspaWYoZS5faW5hY3RpdmUpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gWHQoZSx0KXtpZih0KXtpZihlLl9kaXJlY3RJbmFjdGl2ZT0hMSxHdChlKSlyZXR1cm59ZWxzZSBpZihlLl9kaXJlY3RJbmFjdGl2ZSlyZXR1cm47aWYoZS5faW5hY3RpdmV8fG51bGw9PT1lLl9pbmFjdGl2ZSl7ZS5faW5hY3RpdmU9ITE7Zm9yKHZhciBuPTA7bjxlLiRjaGlsZHJlbi5sZW5ndGg7bisrKVh0KGUuJGNoaWxkcmVuW25dKTtZdChlLCJhY3RpdmF0ZWQiKX19ZnVuY3Rpb24gWXQoZSx0KXtsZSgpO3ZhciBuPWUuJG9wdGlvbnNbdF0scj10KyIgaG9vayI7aWYobilmb3IodmFyIGk9MCxvPW4ubGVuZ3RoO2k8bztpKyspSGUobltpXSxlLG51bGwsZSxyKTtlLl9oYXNIb29rRXZlbnQmJmUuJGVtaXQoImhvb2s6Iit0KSxmZSgpfXZhciBRdD1bXSxlbj1bXSx0bj17fSxubj0hMSxybj0hMSxvbj0wO3ZhciBhbj0wLHNuPURhdGUubm93O2lmKHomJiFxKXt2YXIgY249d2luZG93LnBlcmZvcm1hbmNlO2NuJiYiZnVuY3Rpb24iPT10eXBlb2YgY24ubm93JiZzbigpPmRvY3VtZW50LmNyZWF0ZUV2ZW50KCJFdmVudCIpLnRpbWVTdGFtcCYmKHNuPWZ1bmN0aW9uKCl7cmV0dXJuIGNuLm5vdygpfSl9ZnVuY3Rpb24gdW4oKXt2YXIgZSx0O2Zvcihhbj1zbigpLHJuPSEwLFF0LnNvcnQoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5pZC10LmlkfSksb249MDtvbjxRdC5sZW5ndGg7b24rKykoZT1RdFtvbl0pLmJlZm9yZSYmZS5iZWZvcmUoKSx0PWUuaWQsdG5bdF09bnVsbCxlLnJ1bigpO3ZhciBuPWVuLnNsaWNlKCkscj1RdC5zbGljZSgpO29uPVF0Lmxlbmd0aD1lbi5sZW5ndGg9MCx0bj17fSxubj1ybj0hMSxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKyllW3RdLl9pbmFjdGl2ZT0hMCxYdChlW3RdLCEwKX0obiksZnVuY3Rpb24oZSl7dmFyIHQ9ZS5sZW5ndGg7Zm9yKDt0LS07KXt2YXIgbj1lW3RdLHI9bi52bTtyLl93YXRjaGVyPT09biYmci5faXNNb3VudGVkJiYhci5faXNEZXN0cm95ZWQmJll0KHIsInVwZGF0ZWQiKX19KHIpLG5lJiZGLmRldnRvb2xzJiZuZS5lbWl0KCJmbHVzaCIpfXZhciBsbj0wLGZuPWZ1bmN0aW9uKGUsdCxuLHIsaSl7dGhpcy52bT1lLGkmJihlLl93YXRjaGVyPXRoaXMpLGUuX3dhdGNoZXJzLnB1c2godGhpcykscj8odGhpcy5kZWVwPSEhci5kZWVwLHRoaXMudXNlcj0hIXIudXNlcix0aGlzLmxhenk9ISFyLmxhenksdGhpcy5zeW5jPSEhci5zeW5jLHRoaXMuYmVmb3JlPXIuYmVmb3JlKTp0aGlzLmRlZXA9dGhpcy51c2VyPXRoaXMubGF6eT10aGlzLnN5bmM9ITEsdGhpcy5jYj1uLHRoaXMuaWQ9Kytsbix0aGlzLmFjdGl2ZT0hMCx0aGlzLmRpcnR5PXRoaXMubGF6eSx0aGlzLmRlcHM9W10sdGhpcy5uZXdEZXBzPVtdLHRoaXMuZGVwSWRzPW5ldyBpZSx0aGlzLm5ld0RlcElkcz1uZXcgaWUsdGhpcy5leHByZXNzaW9uPSIiLCJmdW5jdGlvbiI9PXR5cGVvZiB0P3RoaXMuZ2V0dGVyPXQ6KHRoaXMuZ2V0dGVyPWZ1bmN0aW9uKGUpe2lmKCFILnRlc3QoZSkpe3ZhciB0PWUuc3BsaXQoIi4iKTtyZXR1cm4gZnVuY3Rpb24oZSl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe2lmKCFlKXJldHVybjtlPWVbdFtuXV19cmV0dXJuIGV9fX0odCksdGhpcy5nZXR0ZXJ8fCh0aGlzLmdldHRlcj1TKSksdGhpcy52YWx1ZT10aGlzLmxhenk\/dm9pZCAwOnRoaXMuZ2V0KCl9O2ZuLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oKXt2YXIgZTtsZSh0aGlzKTt2YXIgdD10aGlzLnZtO3RyeXtlPXRoaXMuZ2V0dGVyLmNhbGwodCx0KX1jYXRjaChlKXtpZighdGhpcy51c2VyKXRocm93IGU7UmUoZSx0LCdnZXR0ZXIgZm9yIHdhdGNoZXIgIicrdGhpcy5leHByZXNzaW9uKyciJyl9ZmluYWxseXt0aGlzLmRlZXAmJmV0KGUpLGZlKCksdGhpcy5jbGVhbnVwRGVwcygpfXJldHVybiBlfSxmbi5wcm90b3R5cGUuYWRkRGVwPWZ1bmN0aW9uKGUpe3ZhciB0PWUuaWQ7dGhpcy5uZXdEZXBJZHMuaGFzKHQpfHwodGhpcy5uZXdEZXBJZHMuYWRkKHQpLHRoaXMubmV3RGVwcy5wdXNoKGUpLHRoaXMuZGVwSWRzLmhhcyh0KXx8ZS5hZGRTdWIodGhpcykpfSxmbi5wcm90b3R5cGUuY2xlYW51cERlcHM9ZnVuY3Rpb24oKXtmb3IodmFyIGU9dGhpcy5kZXBzLmxlbmd0aDtlLS07KXt2YXIgdD10aGlzLmRlcHNbZV07dGhpcy5uZXdEZXBJZHMuaGFzKHQuaWQpfHx0LnJlbW92ZVN1Yih0aGlzKX12YXIgbj10aGlzLmRlcElkczt0aGlzLmRlcElkcz10aGlzLm5ld0RlcElkcyx0aGlzLm5ld0RlcElkcz1uLHRoaXMubmV3RGVwSWRzLmNsZWFyKCksbj10aGlzLmRlcHMsdGhpcy5kZXBzPXRoaXMubmV3RGVwcyx0aGlzLm5ld0RlcHM9bix0aGlzLm5ld0RlcHMubGVuZ3RoPTB9LGZuLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oKXt0aGlzLmxhenk\/dGhpcy5kaXJ0eT0hMDp0aGlzLnN5bmM\/dGhpcy5ydW4oKTpmdW5jdGlvbihlKXt2YXIgdD1lLmlkO2lmKG51bGw9PXRuW3RdKXtpZih0blt0XT0hMCxybil7Zm9yKHZhciBuPVF0Lmxlbmd0aC0xO24+b24mJlF0W25dLmlkPmUuaWQ7KW4tLTtRdC5zcGxpY2UobisxLDAsZSl9ZWxzZSBRdC5wdXNoKGUpO25ufHwobm49ITAsWWUodW4pKX19KHRoaXMpfSxmbi5wcm90b3R5cGUucnVuPWZ1bmN0aW9uKCl7aWYodGhpcy5hY3RpdmUpe3ZhciBlPXRoaXMuZ2V0KCk7aWYoZSE9PXRoaXMudmFsdWV8fG8oZSl8fHRoaXMuZGVlcCl7dmFyIHQ9dGhpcy52YWx1ZTtpZih0aGlzLnZhbHVlPWUsdGhpcy51c2VyKXRyeXt0aGlzLmNiLmNhbGwodGhpcy52bSxlLHQpfWNhdGNoKGUpe1JlKGUsdGhpcy52bSwnY2FsbGJhY2sgZm9yIHdhdGNoZXIgIicrdGhpcy5leHByZXNzaW9uKyciJyl9ZWxzZSB0aGlzLmNiLmNhbGwodGhpcy52bSxlLHQpfX19LGZuLnByb3RvdHlwZS5ldmFsdWF0ZT1mdW5jdGlvbigpe3RoaXMudmFsdWU9dGhpcy5nZXQoKSx0aGlzLmRpcnR5PSExfSxmbi5wcm90b3R5cGUuZGVwZW5kPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMuZGVwcy5sZW5ndGg7ZS0tOyl0aGlzLmRlcHNbZV0uZGVwZW5kKCl9LGZuLnByb3RvdHlwZS50ZWFyZG93bj1mdW5jdGlvbigpe2lmKHRoaXMuYWN0aXZlKXt0aGlzLnZtLl9pc0JlaW5nRGVzdHJveWVkfHxoKHRoaXMudm0uX3dhdGNoZXJzLHRoaXMpO2Zvcih2YXIgZT10aGlzLmRlcHMubGVuZ3RoO2UtLTspdGhpcy5kZXBzW2VdLnJlbW92ZVN1Yih0aGlzKTt0aGlzLmFjdGl2ZT0hMX19O3ZhciBwbj17ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OlMsc2V0OlN9O2Z1bmN0aW9uIGRuKGUsdCxuKXtwbi5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1t0XVtuXX0scG4uc2V0PWZ1bmN0aW9uKGUpe3RoaXNbdF1bbl09ZX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbixwbil9ZnVuY3Rpb24gdm4oZSl7ZS5fd2F0Y2hlcnM9W107dmFyIHQ9ZS4kb3B0aW9uczt0LnByb3BzJiZmdW5jdGlvbihlLHQpe3ZhciBuPWUuJG9wdGlvbnMucHJvcHNEYXRhfHx7fSxyPWUuX3Byb3BzPXt9LGk9ZS4kb3B0aW9ucy5fcHJvcEtleXM9W107ZS4kcGFyZW50JiYkZSghMSk7dmFyIG89ZnVuY3Rpb24obyl7aS5wdXNoKG8pO3ZhciBhPU1lKG8sdCxuLGUpO3hlKHIsbyxhKSxvIGluIGV8fGRuKGUsIl9wcm9wcyIsbyl9O2Zvcih2YXIgYSBpbiB0KW8oYSk7JGUoITApfShlLHQucHJvcHMpLHQubWV0aG9kcyYmZnVuY3Rpb24oZSx0KXtlLiRvcHRpb25zLnByb3BzO2Zvcih2YXIgbiBpbiB0KWVbbl09ImZ1bmN0aW9uIiE9dHlwZW9mIHRbbl0\/Uzp4KHRbbl0sZSl9KGUsdC5tZXRob2RzKSx0LmRhdGE\/ZnVuY3Rpb24oZSl7dmFyIHQ9ZS4kb3B0aW9ucy5kYXRhO3ModD1lLl9kYXRhPSJmdW5jdGlvbiI9PXR5cGVvZiB0P2Z1bmN0aW9uKGUsdCl7bGUoKTt0cnl7cmV0dXJuIGUuY2FsbCh0LHQpfWNhdGNoKGUpe3JldHVybiBSZShlLHQsImRhdGEoKSIpLHt9fWZpbmFsbHl7ZmUoKX19KHQsZSk6dHx8e30pfHwodD17fSk7dmFyIG49T2JqZWN0LmtleXModCkscj1lLiRvcHRpb25zLnByb3BzLGk9KGUuJG9wdGlvbnMubWV0aG9kcyxuLmxlbmd0aCk7Zm9yKDtpLS07KXt2YXIgbz1uW2ldO3ImJnkocixvKXx8KGE9dm9pZCAwLDM2IT09KGE9KG8rIiIpLmNoYXJDb2RlQXQoMCkpJiY5NSE9PWEmJmRuKGUsIl9kYXRhIixvKSl9dmFyIGE7Q2UodCwhMCl9KGUpOkNlKGUuX2RhdGE9e30sITApLHQuY29tcHV0ZWQmJmZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5fY29tcHV0ZWRXYXRjaGVycz1PYmplY3QuY3JlYXRlKG51bGwpLHI9dGUoKTtmb3IodmFyIGkgaW4gdCl7dmFyIG89dFtpXSxhPSJmdW5jdGlvbiI9PXR5cGVvZiBvP286by5nZXQ7cnx8KG5baV09bmV3IGZuKGUsYXx8UyxTLGhuKSksaSBpbiBlfHxtbihlLGksbyl9fShlLHQuY29tcHV0ZWQpLHQud2F0Y2gmJnQud2F0Y2ghPT1ZJiZmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiB0KXt2YXIgcj10W25dO2lmKEFycmF5LmlzQXJyYXkocikpZm9yKHZhciBpPTA7aTxyLmxlbmd0aDtpKyspX24oZSxuLHJbaV0pO2Vsc2UgX24oZSxuLHIpfX0oZSx0LndhdGNoKX12YXIgaG49e2xhenk6ITB9O2Z1bmN0aW9uIG1uKGUsdCxuKXt2YXIgcj0hdGUoKTsiZnVuY3Rpb24iPT10eXBlb2Ygbj8ocG4uZ2V0PXI\/eW4odCk6Z24obikscG4uc2V0PVMpOihwbi5nZXQ9bi5nZXQ\/ciYmITEhPT1uLmNhY2hlP3luKHQpOmduKG4uZ2V0KTpTLHBuLnNldD1uLnNldHx8UyksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxwbil9ZnVuY3Rpb24geW4oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fY29tcHV0ZWRXYXRjaGVycyYmdGhpcy5fY29tcHV0ZWRXYXRjaGVyc1tlXTtpZih0KXJldHVybiB0LmRpcnR5JiZ0LmV2YWx1YXRlKCksY2UudGFyZ2V0JiZ0LmRlcGVuZCgpLHQudmFsdWV9fWZ1bmN0aW9uIGduKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlLmNhbGwodGhpcyx0aGlzKX19ZnVuY3Rpb24gX24oZSx0LG4scil7cmV0dXJuIHMobikmJihyPW4sbj1uLmhhbmRsZXIpLCJzdHJpbmciPT10eXBlb2YgbiYmKG49ZVtuXSksZS4kd2F0Y2godCxuLHIpfXZhciBibj0wO2Z1bmN0aW9uICRuKGUpe3ZhciB0PWUub3B0aW9ucztpZihlLnN1cGVyKXt2YXIgbj0kbihlLnN1cGVyKTtpZihuIT09ZS5zdXBlck9wdGlvbnMpe2Uuc3VwZXJPcHRpb25zPW47dmFyIHI9ZnVuY3Rpb24oZSl7dmFyIHQsbj1lLm9wdGlvbnMscj1lLnNlYWxlZE9wdGlvbnM7Zm9yKHZhciBpIGluIG4pbltpXSE9PXJbaV0mJih0fHwodD17fSksdFtpXT1uW2ldKTtyZXR1cm4gdH0oZSk7ciYmQShlLmV4dGVuZE9wdGlvbnMsciksKHQ9ZS5vcHRpb25zPURlKG4sZS5leHRlbmRPcHRpb25zKSkubmFtZSYmKHQuY29tcG9uZW50c1t0Lm5hbWVdPWUpfX1yZXR1cm4gdH1mdW5jdGlvbiB3bihlKXt0aGlzLl9pbml0KGUpfWZ1bmN0aW9uIENuKGUpe2UuY2lkPTA7dmFyIHQ9MTtlLmV4dGVuZD1mdW5jdGlvbihlKXtlPWV8fHt9O3ZhciBuPXRoaXMscj1uLmNpZCxpPWUuX0N0b3J8fChlLl9DdG9yPXt9KTtpZihpW3JdKXJldHVybiBpW3JdO3ZhciBvPWUubmFtZXx8bi5vcHRpb25zLm5hbWUsYT1mdW5jdGlvbihlKXt0aGlzLl9pbml0KGUpfTtyZXR1cm4oYS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShuLnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPWEsYS5jaWQ9dCsrLGEub3B0aW9ucz1EZShuLm9wdGlvbnMsZSksYS5zdXBlcj1uLGEub3B0aW9ucy5wcm9wcyYmZnVuY3Rpb24oZSl7dmFyIHQ9ZS5vcHRpb25zLnByb3BzO2Zvcih2YXIgbiBpbiB0KWRuKGUucHJvdG90eXBlLCJfcHJvcHMiLG4pfShhKSxhLm9wdGlvbnMuY29tcHV0ZWQmJmZ1bmN0aW9uKGUpe3ZhciB0PWUub3B0aW9ucy5jb21wdXRlZDtmb3IodmFyIG4gaW4gdCltbihlLnByb3RvdHlwZSxuLHRbbl0pfShhKSxhLmV4dGVuZD1uLmV4dGVuZCxhLm1peGluPW4ubWl4aW4sYS51c2U9bi51c2UsTS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2FbZV09bltlXX0pLG8mJihhLm9wdGlvbnMuY29tcG9uZW50c1tvXT1hKSxhLnN1cGVyT3B0aW9ucz1uLm9wdGlvbnMsYS5leHRlbmRPcHRpb25zPWUsYS5zZWFsZWRPcHRpb25zPUEoe30sYS5vcHRpb25zKSxpW3JdPWEsYX19ZnVuY3Rpb24geG4oZSl7cmV0dXJuIGUmJihlLkN0b3Iub3B0aW9ucy5uYW1lfHxlLnRhZyl9ZnVuY3Rpb24ga24oZSx0KXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lLmluZGV4T2YodCk+LTE6InN0cmluZyI9PXR5cGVvZiBlP2Uuc3BsaXQoIiwiKS5pbmRleE9mKHQpPi0xOihuPWUsIltvYmplY3QgUmVnRXhwXSI9PT1hLmNhbGwobikmJmUudGVzdCh0KSk7dmFyIG59ZnVuY3Rpb24gQW4oZSx0KXt2YXIgbj1lLmNhY2hlLHI9ZS5rZXlzLGk9ZS5fdm5vZGU7Zm9yKHZhciBvIGluIG4pe3ZhciBhPW5bb107aWYoYSl7dmFyIHM9eG4oYS5jb21wb25lbnRPcHRpb25zKTtzJiYhdChzKSYmT24obixvLHIsaSl9fX1mdW5jdGlvbiBPbihlLHQsbixyKXt2YXIgaT1lW3RdOyFpfHxyJiZpLnRhZz09PXIudGFnfHxpLmNvbXBvbmVudEluc3RhbmNlLiRkZXN0cm95KCksZVt0XT1udWxsLGgobix0KX0hZnVuY3Rpb24odCl7dC5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24odCl7dmFyIG49dGhpcztuLl91aWQ9Ym4rKyxuLl9pc1Z1ZT0hMCx0JiZ0Ll9pc0NvbXBvbmVudD9mdW5jdGlvbihlLHQpe3ZhciBuPWUuJG9wdGlvbnM9T2JqZWN0LmNyZWF0ZShlLmNvbnN0cnVjdG9yLm9wdGlvbnMpLHI9dC5fcGFyZW50Vm5vZGU7bi5wYXJlbnQ9dC5wYXJlbnQsbi5fcGFyZW50Vm5vZGU9cjt2YXIgaT1yLmNvbXBvbmVudE9wdGlvbnM7bi5wcm9wc0RhdGE9aS5wcm9wc0RhdGEsbi5fcGFyZW50TGlzdGVuZXJzPWkubGlzdGVuZXJzLG4uX3JlbmRlckNoaWxkcmVuPWkuY2hpbGRyZW4sbi5fY29tcG9uZW50VGFnPWkudGFnLHQucmVuZGVyJiYobi5yZW5kZXI9dC5yZW5kZXIsbi5zdGF0aWNSZW5kZXJGbnM9dC5zdGF0aWNSZW5kZXJGbnMpfShuLHQpOm4uJG9wdGlvbnM9RGUoJG4obi5jb25zdHJ1Y3RvciksdHx8e30sbiksbi5fcmVuZGVyUHJveHk9bixuLl9zZWxmPW4sZnVuY3Rpb24oZSl7dmFyIHQ9ZS4kb3B0aW9ucyxuPXQucGFyZW50O2lmKG4mJiF0LmFic3RyYWN0KXtmb3IoO24uJG9wdGlvbnMuYWJzdHJhY3QmJm4uJHBhcmVudDspbj1uLiRwYXJlbnQ7bi4kY2hpbGRyZW4ucHVzaChlKX1lLiRwYXJlbnQ9bixlLiRyb290PW4\/bi4kcm9vdDplLGUuJGNoaWxkcmVuPVtdLGUuJHJlZnM9e30sZS5fd2F0Y2hlcj1udWxsLGUuX2luYWN0aXZlPW51bGwsZS5fZGlyZWN0SW5hY3RpdmU9ITEsZS5faXNNb3VudGVkPSExLGUuX2lzRGVzdHJveWVkPSExLGUuX2lzQmVpbmdEZXN0cm95ZWQ9ITF9KG4pLGZ1bmN0aW9uKGUpe2UuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpLGUuX2hhc0hvb2tFdmVudD0hMTt2YXIgdD1lLiRvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnM7dCYmcXQoZSx0KX0obiksZnVuY3Rpb24odCl7dC5fdm5vZGU9bnVsbCx0Ll9zdGF0aWNUcmVlcz1udWxsO3ZhciBuPXQuJG9wdGlvbnMscj10LiR2bm9kZT1uLl9wYXJlbnRWbm9kZSxpPXImJnIuY29udGV4dDt0LiRzbG90cz11dChuLl9yZW5kZXJDaGlsZHJlbixpKSx0LiRzY29wZWRTbG90cz1lLHQuX2M9ZnVuY3Rpb24oZSxuLHIsaSl7cmV0dXJuIFB0KHQsZSxuLHIsaSwhMSl9LHQuJGNyZWF0ZUVsZW1lbnQ9ZnVuY3Rpb24oZSxuLHIsaSl7cmV0dXJuIFB0KHQsZSxuLHIsaSwhMCl9O3ZhciBvPXImJnIuZGF0YTt4ZSh0LCIkYXR0cnMiLG8mJm8uYXR0cnN8fGUsbnVsbCwhMCkseGUodCwiJGxpc3RlbmVycyIsbi5fcGFyZW50TGlzdGVuZXJzfHxlLG51bGwsITApfShuKSxZdChuLCJiZWZvcmVDcmVhdGUiKSxmdW5jdGlvbihlKXt2YXIgdD1jdChlLiRvcHRpb25zLmluamVjdCxlKTt0JiYoJGUoITEpLE9iamVjdC5rZXlzKHQpLmZvckVhY2goZnVuY3Rpb24obil7eGUoZSxuLHRbbl0pfSksJGUoITApKX0obiksdm4obiksZnVuY3Rpb24oZSl7dmFyIHQ9ZS4kb3B0aW9ucy5wcm92aWRlO3QmJihlLl9wcm92aWRlZD0iZnVuY3Rpb24iPT10eXBlb2YgdD90LmNhbGwoZSk6dCl9KG4pLFl0KG4sImNyZWF0ZWQiKSxuLiRvcHRpb25zLmVsJiZuLiRtb3VudChuLiRvcHRpb25zLmVsKX19KHduKSxmdW5jdGlvbihlKXt2YXIgdD17Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RhdGF9fSxuPXtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcHJvcHN9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsIiRkYXRhIix0KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsIiRwcm9wcyIsbiksZS5wcm90b3R5cGUuJHNldD1rZSxlLnByb3RvdHlwZS4kZGVsZXRlPUFlLGUucHJvdG90eXBlLiR3YXRjaD1mdW5jdGlvbihlLHQsbil7aWYocyh0KSlyZXR1cm4gX24odGhpcyxlLHQsbik7KG49bnx8e30pLnVzZXI9ITA7dmFyIHI9bmV3IGZuKHRoaXMsZSx0LG4pO2lmKG4uaW1tZWRpYXRlKXRyeXt0LmNhbGwodGhpcyxyLnZhbHVlKX1jYXRjaChlKXtSZShlLHRoaXMsJ2NhbGxiYWNrIGZvciBpbW1lZGlhdGUgd2F0Y2hlciAiJytyLmV4cHJlc3Npb24rJyInKX1yZXR1cm4gZnVuY3Rpb24oKXtyLnRlYXJkb3duKCl9fX0od24pLGZ1bmN0aW9uKGUpe3ZhciB0PS9eaG9vazovO2UucHJvdG90eXBlLiRvbj1mdW5jdGlvbihlLG4pe3ZhciByPXRoaXM7aWYoQXJyYXkuaXNBcnJheShlKSlmb3IodmFyIGk9MCxvPWUubGVuZ3RoO2k8bztpKyspci4kb24oZVtpXSxuKTtlbHNlKHIuX2V2ZW50c1tlXXx8KHIuX2V2ZW50c1tlXT1bXSkpLnB1c2gobiksdC50ZXN0KGUpJiYoci5faGFzSG9va0V2ZW50PSEwKTtyZXR1cm4gcn0sZS5wcm90b3R5cGUuJG9uY2U9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO2Z1bmN0aW9uIHIoKXtuLiRvZmYoZSxyKSx0LmFwcGx5KG4sYXJndW1lbnRzKX1yZXR1cm4gci5mbj10LG4uJG9uKGUsciksbn0sZS5wcm90b3R5cGUuJG9mZj1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXM7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIG4uX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpLG47aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKHZhciByPTAsaT1lLmxlbmd0aDtyPGk7cisrKW4uJG9mZihlW3JdLHQpO3JldHVybiBufXZhciBvLGE9bi5fZXZlbnRzW2VdO2lmKCFhKXJldHVybiBuO2lmKCF0KXJldHVybiBuLl9ldmVudHNbZV09bnVsbCxuO2Zvcih2YXIgcz1hLmxlbmd0aDtzLS07KWlmKChvPWFbc10pPT09dHx8by5mbj09PXQpe2Euc3BsaWNlKHMsMSk7YnJlYWt9cmV0dXJuIG59LGUucHJvdG90eXBlLiRlbWl0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2V2ZW50c1tlXTtpZih0KXt0PXQubGVuZ3RoPjE\/ayh0KTp0O2Zvcih2YXIgbj1rKGFyZ3VtZW50cywxKSxyPSdldmVudCBoYW5kbGVyIGZvciAiJytlKyciJyxpPTAsbz10Lmxlbmd0aDtpPG87aSsrKUhlKHRbaV0sdGhpcyxuLHRoaXMscil9cmV0dXJuIHRoaXN9fSh3biksZnVuY3Rpb24oZSl7ZS5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMscj1uLiRlbCxpPW4uX3Zub2RlLG89WnQobik7bi5fdm5vZGU9ZSxuLiRlbD1pP24uX19wYXRjaF9fKGksZSk6bi5fX3BhdGNoX18obi4kZWwsZSx0LCExKSxvKCksciYmKHIuX192dWVfXz1udWxsKSxuLiRlbCYmKG4uJGVsLl9fdnVlX189biksbi4kdm5vZGUmJm4uJHBhcmVudCYmbi4kdm5vZGU9PT1uLiRwYXJlbnQuX3Zub2RlJiYobi4kcGFyZW50LiRlbD1uLiRlbCl9LGUucHJvdG90eXBlLiRmb3JjZVVwZGF0ZT1mdW5jdGlvbigpe3RoaXMuX3dhdGNoZXImJnRoaXMuX3dhdGNoZXIudXBkYXRlKCl9LGUucHJvdG90eXBlLiRkZXN0cm95PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztpZighZS5faXNCZWluZ0Rlc3Ryb3llZCl7WXQoZSwiYmVmb3JlRGVzdHJveSIpLGUuX2lzQmVpbmdEZXN0cm95ZWQ9ITA7dmFyIHQ9ZS4kcGFyZW50OyF0fHx0Ll9pc0JlaW5nRGVzdHJveWVkfHxlLiRvcHRpb25zLmFic3RyYWN0fHxoKHQuJGNoaWxkcmVuLGUpLGUuX3dhdGNoZXImJmUuX3dhdGNoZXIudGVhcmRvd24oKTtmb3IodmFyIG49ZS5fd2F0Y2hlcnMubGVuZ3RoO24tLTspZS5fd2F0Y2hlcnNbbl0udGVhcmRvd24oKTtlLl9kYXRhLl9fb2JfXyYmZS5fZGF0YS5fX29iX18udm1Db3VudC0tLGUuX2lzRGVzdHJveWVkPSEwLGUuX19wYXRjaF9fKGUuX3Zub2RlLG51bGwpLFl0KGUsImRlc3Ryb3llZCIpLGUuJG9mZigpLGUuJGVsJiYoZS4kZWwuX192dWVfXz1udWxsKSxlLiR2bm9kZSYmKGUuJHZub2RlLnBhcmVudD1udWxsKX19fSh3biksZnVuY3Rpb24oZSl7U3QoZS5wcm90b3R5cGUpLGUucHJvdG90eXBlLiRuZXh0VGljaz1mdW5jdGlvbihlKXtyZXR1cm4gWWUoZSx0aGlzKX0sZS5wcm90b3R5cGUuX3JlbmRlcj1mdW5jdGlvbigpe3ZhciBlLHQ9dGhpcyxuPXQuJG9wdGlvbnMscj1uLnJlbmRlcixpPW4uX3BhcmVudFZub2RlO2kmJih0LiRzY29wZWRTbG90cz1mdChpLmRhdGEuc2NvcGVkU2xvdHMsdC4kc2xvdHMsdC4kc2NvcGVkU2xvdHMpKSx0LiR2bm9kZT1pO3RyeXtIdD10LGU9ci5jYWxsKHQuX3JlbmRlclByb3h5LHQuJGNyZWF0ZUVsZW1lbnQpfWNhdGNoKG4pe1JlKG4sdCwicmVuZGVyIiksZT10Ll92bm9kZX1maW5hbGx5e0h0PW51bGx9cmV0dXJuIEFycmF5LmlzQXJyYXkoZSkmJjE9PT1lLmxlbmd0aCYmKGU9ZVswXSksZSBpbnN0YW5jZW9mIHBlfHwoZT12ZSgpKSxlLnBhcmVudD1pLGV9fSh3bik7dmFyIFNuPVtTdHJpbmcsUmVnRXhwLEFycmF5XSxUbj17S2VlcEFsaXZlOntuYW1lOiJrZWVwLWFsaXZlIixhYnN0cmFjdDohMCxwcm9wczp7aW5jbHVkZTpTbixleGNsdWRlOlNuLG1heDpbU3RyaW5nLE51bWJlcl19LGNyZWF0ZWQ6ZnVuY3Rpb24oKXt0aGlzLmNhY2hlPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5rZXlzPVtdfSxkZXN0cm95ZWQ6ZnVuY3Rpb24oKXtmb3IodmFyIGUgaW4gdGhpcy5jYWNoZSlPbih0aGlzLmNhY2hlLGUsdGhpcy5rZXlzKX0sbW91bnRlZDpmdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy4kd2F0Y2goImluY2x1ZGUiLGZ1bmN0aW9uKHQpe0FuKGUsZnVuY3Rpb24oZSl7cmV0dXJuIGtuKHQsZSl9KX0pLHRoaXMuJHdhdGNoKCJleGNsdWRlIixmdW5jdGlvbih0KXtBbihlLGZ1bmN0aW9uKGUpe3JldHVybiFrbih0LGUpfSl9KX0scmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy4kc2xvdHMuZGVmYXVsdCx0PXp0KGUpLG49dCYmdC5jb21wb25lbnRPcHRpb25zO2lmKG4pe3ZhciByPXhuKG4pLGk9dGhpcy5pbmNsdWRlLG89dGhpcy5leGNsdWRlO2lmKGkmJighcnx8IWtuKGkscikpfHxvJiZyJiZrbihvLHIpKXJldHVybiB0O3ZhciBhPXRoaXMuY2FjaGUscz10aGlzLmtleXMsYz1udWxsPT10LmtleT9uLkN0b3IuY2lkKyhuLnRhZz8iOjoiK24udGFnOiIiKTp0LmtleTthW2NdPyh0LmNvbXBvbmVudEluc3RhbmNlPWFbY10uY29tcG9uZW50SW5zdGFuY2UsaChzLGMpLHMucHVzaChjKSk6KGFbY109dCxzLnB1c2goYyksdGhpcy5tYXgmJnMubGVuZ3RoPnBhcnNlSW50KHRoaXMubWF4KSYmT24oYSxzWzBdLHMsdGhpcy5fdm5vZGUpKSx0LmRhdGEua2VlcEFsaXZlPSEwfXJldHVybiB0fHxlJiZlWzBdfX19OyFmdW5jdGlvbihlKXt2YXIgdD17Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEZ9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiY29uZmlnIix0KSxlLnV0aWw9e3dhcm46YWUsZXh0ZW5kOkEsbWVyZ2VPcHRpb25zOkRlLGRlZmluZVJlYWN0aXZlOnhlfSxlLnNldD1rZSxlLmRlbGV0ZT1BZSxlLm5leHRUaWNrPVllLGUub2JzZXJ2YWJsZT1mdW5jdGlvbihlKXtyZXR1cm4gQ2UoZSksZX0sZS5vcHRpb25zPU9iamVjdC5jcmVhdGUobnVsbCksTS5mb3JFYWNoKGZ1bmN0aW9uKHQpe2Uub3B0aW9uc1t0KyJzIl09T2JqZWN0LmNyZWF0ZShudWxsKX0pLGUub3B0aW9ucy5fYmFzZT1lLEEoZS5vcHRpb25zLmNvbXBvbmVudHMsVG4pLGZ1bmN0aW9uKGUpe2UudXNlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2luc3RhbGxlZFBsdWdpbnN8fCh0aGlzLl9pbnN0YWxsZWRQbHVnaW5zPVtdKTtpZih0LmluZGV4T2YoZSk+LTEpcmV0dXJuIHRoaXM7dmFyIG49ayhhcmd1bWVudHMsMSk7cmV0dXJuIG4udW5zaGlmdCh0aGlzKSwiZnVuY3Rpb24iPT10eXBlb2YgZS5pbnN0YWxsP2UuaW5zdGFsbC5hcHBseShlLG4pOiJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlLmFwcGx5KG51bGwsbiksdC5wdXNoKGUpLHRoaXN9fShlKSxmdW5jdGlvbihlKXtlLm1peGluPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLm9wdGlvbnM9RGUodGhpcy5vcHRpb25zLGUpLHRoaXN9fShlKSxDbihlKSxmdW5jdGlvbihlKXtNLmZvckVhY2goZnVuY3Rpb24odCl7ZVt0XT1mdW5jdGlvbihlLG4pe3JldHVybiBuPygiY29tcG9uZW50Ij09PXQmJnMobikmJihuLm5hbWU9bi5uYW1lfHxlLG49dGhpcy5vcHRpb25zLl9iYXNlLmV4dGVuZChuKSksImRpcmVjdGl2ZSI9PT10JiYiZnVuY3Rpb24iPT10eXBlb2YgbiYmKG49e2JpbmQ6bix1cGRhdGU6bn0pLHRoaXMub3B0aW9uc1t0KyJzIl1bZV09bixuKTp0aGlzLm9wdGlvbnNbdCsicyJdW2VdfX0pfShlKX0od24pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3bi5wcm90b3R5cGUsIiRpc1NlcnZlciIse2dldDp0ZX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3bi5wcm90b3R5cGUsIiRzc3JDb250ZXh0Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHZub2RlJiZ0aGlzLiR2bm9kZS5zc3JDb250ZXh0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3biwiRnVuY3Rpb25hbFJlbmRlckNvbnRleHQiLHt2YWx1ZTpUdH0pLHduLnZlcnNpb249IjIuNi4xMSI7dmFyIEVuPXAoInN0eWxlLGNsYXNzIiksTm49cCgiaW5wdXQsdGV4dGFyZWEsb3B0aW9uLHNlbGVjdCxwcm9ncmVzcyIpLGpuPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4idmFsdWUiPT09biYmTm4oZSkmJiJidXR0b24iIT09dHx8InNlbGVjdGVkIj09PW4mJiJvcHRpb24iPT09ZXx8ImNoZWNrZWQiPT09biYmImlucHV0Ij09PWV8fCJtdXRlZCI9PT1uJiYidmlkZW8iPT09ZX0sRG49cCgiY29udGVudGVkaXRhYmxlLGRyYWdnYWJsZSxzcGVsbGNoZWNrIiksTG49cCgiZXZlbnRzLGNhcmV0LHR5cGluZyxwbGFpbnRleHQtb25seSIpLE1uPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIEhuKHQpfHwiZmFsc2UiPT09dD8iZmFsc2UiOiJjb250ZW50ZWRpdGFibGUiPT09ZSYmTG4odCk\/dDoidHJ1ZSJ9LEluPXAoImFsbG93ZnVsbHNjcmVlbixhc3luYyxhdXRvZm9jdXMsYXV0b3BsYXksY2hlY2tlZCxjb21wYWN0LGNvbnRyb2xzLGRlY2xhcmUsZGVmYXVsdCxkZWZhdWx0Y2hlY2tlZCxkZWZhdWx0bXV0ZWQsZGVmYXVsdHNlbGVjdGVkLGRlZmVyLGRpc2FibGVkLGVuYWJsZWQsZm9ybW5vdmFsaWRhdGUsaGlkZGVuLGluZGV0ZXJtaW5hdGUsaW5lcnQsaXNtYXAsaXRlbXNjb3BlLGxvb3AsbXVsdGlwbGUsbXV0ZWQsbm9ocmVmLG5vcmVzaXplLG5vc2hhZGUsbm92YWxpZGF0ZSxub3dyYXAsb3BlbixwYXVzZW9uZXhpdCxyZWFkb25seSxyZXF1aXJlZCxyZXZlcnNlZCxzY29wZWQsc2VhbWxlc3Msc2VsZWN0ZWQsc29ydGFibGUsdHJhbnNsYXRlLHRydWVzcGVlZCx0eXBlbXVzdG1hdGNoLHZpc2libGUiKSxGbj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIsUG49ZnVuY3Rpb24oZSl7cmV0dXJuIjoiPT09ZS5jaGFyQXQoNSkmJiJ4bGluayI9PT1lLnNsaWNlKDAsNSl9LFJuPWZ1bmN0aW9uKGUpe3JldHVybiBQbihlKT9lLnNsaWNlKDYsZS5sZW5ndGgpOiIifSxIbj1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZXx8ITE9PT1lfTtmdW5jdGlvbiBCbihlKXtmb3IodmFyIHQ9ZS5kYXRhLHI9ZSxpPWU7bihpLmNvbXBvbmVudEluc3RhbmNlKTspKGk9aS5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGUpJiZpLmRhdGEmJih0PVVuKGkuZGF0YSx0KSk7Zm9yKDtuKHI9ci5wYXJlbnQpOylyJiZyLmRhdGEmJih0PVVuKHQsci5kYXRhKSk7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYobihlKXx8bih0KSlyZXR1cm4gem4oZSxWbih0KSk7cmV0dXJuIiJ9KHQuc3RhdGljQ2xhc3MsdC5jbGFzcyl9ZnVuY3Rpb24gVW4oZSx0KXtyZXR1cm57c3RhdGljQ2xhc3M6em4oZS5zdGF0aWNDbGFzcyx0LnN0YXRpY0NsYXNzKSxjbGFzczpuKGUuY2xhc3MpP1tlLmNsYXNzLHQuY2xhc3NdOnQuY2xhc3N9fWZ1bmN0aW9uIHpuKGUsdCl7cmV0dXJuIGU\/dD9lKyIgIit0OmU6dHx8IiJ9ZnVuY3Rpb24gVm4oZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk\/ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9IiIsaT0wLG89ZS5sZW5ndGg7aTxvO2krKyluKHQ9Vm4oZVtpXSkpJiYiIiE9PXQmJihyJiYocis9IiAiKSxyKz10KTtyZXR1cm4gcn0oZSk6byhlKT9mdW5jdGlvbihlKXt2YXIgdD0iIjtmb3IodmFyIG4gaW4gZSllW25dJiYodCYmKHQrPSIgIiksdCs9bik7cmV0dXJuIHR9KGUpOiJzdHJpbmciPT10eXBlb2YgZT9lOiIifXZhciBLbj17c3ZnOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsbWF0aDoiaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCJ9LEpuPXAoImh0bWwsYm9keSxiYXNlLGhlYWQsbGluayxtZXRhLHN0eWxlLHRpdGxlLGFkZHJlc3MsYXJ0aWNsZSxhc2lkZSxmb290ZXIsaGVhZGVyLGgxLGgyLGgzLGg0LGg1LGg2LGhncm91cCxuYXYsc2VjdGlvbixkaXYsZGQsZGwsZHQsZmlnY2FwdGlvbixmaWd1cmUscGljdHVyZSxocixpbWcsbGksbWFpbixvbCxwLHByZSx1bCxhLGIsYWJicixiZGksYmRvLGJyLGNpdGUsY29kZSxkYXRhLGRmbixlbSxpLGtiZCxtYXJrLHEscnAscnQscnRjLHJ1YnkscyxzYW1wLHNtYWxsLHNwYW4sc3Ryb25nLHN1YixzdXAsdGltZSx1LHZhcix3YnIsYXJlYSxhdWRpbyxtYXAsdHJhY2ssdmlkZW8sZW1iZWQsb2JqZWN0LHBhcmFtLHNvdXJjZSxjYW52YXMsc2NyaXB0LG5vc2NyaXB0LGRlbCxpbnMsY2FwdGlvbixjb2wsY29sZ3JvdXAsdGFibGUsdGhlYWQsdGJvZHksdGQsdGgsdHIsYnV0dG9uLGRhdGFsaXN0LGZpZWxkc2V0LGZvcm0saW5wdXQsbGFiZWwsbGVnZW5kLG1ldGVyLG9wdGdyb3VwLG9wdGlvbixvdXRwdXQscHJvZ3Jlc3Msc2VsZWN0LHRleHRhcmVhLGRldGFpbHMsZGlhbG9nLG1lbnUsbWVudWl0ZW0sc3VtbWFyeSxjb250ZW50LGVsZW1lbnQsc2hhZG93LHRlbXBsYXRlLGJsb2NrcXVvdGUsaWZyYW1lLHRmb290IikscW49cCgic3ZnLGFuaW1hdGUsY2lyY2xlLGNsaXBwYXRoLGN1cnNvcixkZWZzLGRlc2MsZWxsaXBzZSxmaWx0ZXIsZm9udC1mYWNlLGZvcmVpZ25PYmplY3QsZyxnbHlwaCxpbWFnZSxsaW5lLG1hcmtlcixtYXNrLG1pc3NpbmctZ2x5cGgscGF0aCxwYXR0ZXJuLHBvbHlnb24scG9seWxpbmUscmVjdCxzd2l0Y2gsc3ltYm9sLHRleHQsdGV4dHBhdGgsdHNwYW4sdXNlLHZpZXciLCEwKSxXbj1mdW5jdGlvbihlKXtyZXR1cm4gSm4oZSl8fHFuKGUpfTtmdW5jdGlvbiBabihlKXtyZXR1cm4gcW4oZSk\/InN2ZyI6Im1hdGgiPT09ZT8ibWF0aCI6dm9pZCAwfXZhciBHbj1PYmplY3QuY3JlYXRlKG51bGwpO3ZhciBYbj1wKCJ0ZXh0LG51bWJlcixwYXNzd29yZCxzZWFyY2gsZW1haWwsdGVsLHVybCIpO2Z1bmN0aW9uIFluKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSl7dmFyIHQ9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihlKTtyZXR1cm4gdHx8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iil9cmV0dXJuIGV9dmFyIFFuPU9iamVjdC5mcmVlemUoe2NyZWF0ZUVsZW1lbnQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KGUpO3JldHVybiJzZWxlY3QiIT09ZT9uOih0LmRhdGEmJnQuZGF0YS5hdHRycyYmdm9pZCAwIT09dC5kYXRhLmF0dHJzLm11bHRpcGxlJiZuLnNldEF0dHJpYnV0ZSgibXVsdGlwbGUiLCJtdWx0aXBsZSIpLG4pfSxjcmVhdGVFbGVtZW50TlM6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKEtuW2VdLHQpfSxjcmVhdGVUZXh0Tm9kZTpmdW5jdGlvbihlKXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZSl9LGNyZWF0ZUNvbW1lbnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoZSl9LGluc2VydEJlZm9yZTpmdW5jdGlvbihlLHQsbil7ZS5pbnNlcnRCZWZvcmUodCxuKX0scmVtb3ZlQ2hpbGQ6ZnVuY3Rpb24oZSx0KXtlLnJlbW92ZUNoaWxkKHQpfSxhcHBlbmRDaGlsZDpmdW5jdGlvbihlLHQpe2UuYXBwZW5kQ2hpbGQodCl9LHBhcmVudE5vZGU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUucGFyZW50Tm9kZX0sbmV4dFNpYmxpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuIGUubmV4dFNpYmxpbmd9LHRhZ05hbWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudGFnTmFtZX0sc2V0VGV4dENvbnRlbnQ6ZnVuY3Rpb24oZSx0KXtlLnRleHRDb250ZW50PXR9LHNldFN0eWxlU2NvcGU6ZnVuY3Rpb24oZSx0KXtlLnNldEF0dHJpYnV0ZSh0LCIiKX19KSxlcj17Y3JlYXRlOmZ1bmN0aW9uKGUsdCl7dHIodCl9LHVwZGF0ZTpmdW5jdGlvbihlLHQpe2UuZGF0YS5yZWYhPT10LmRhdGEucmVmJiYodHIoZSwhMCksdHIodCkpfSxkZXN0cm95OmZ1bmN0aW9uKGUpe3RyKGUsITApfX07ZnVuY3Rpb24gdHIoZSx0KXt2YXIgcj1lLmRhdGEucmVmO2lmKG4ocikpe3ZhciBpPWUuY29udGV4dCxvPWUuY29tcG9uZW50SW5zdGFuY2V8fGUuZWxtLGE9aS4kcmVmczt0P0FycmF5LmlzQXJyYXkoYVtyXSk\/aChhW3JdLG8pOmFbcl09PT1vJiYoYVtyXT12b2lkIDApOmUuZGF0YS5yZWZJbkZvcj9BcnJheS5pc0FycmF5KGFbcl0pP2Fbcl0uaW5kZXhPZihvKTwwJiZhW3JdLnB1c2gobyk6YVtyXT1bb106YVtyXT1vfX12YXIgbnI9bmV3IHBlKCIiLHt9LFtdKSxycj1bImNyZWF0ZSIsImFjdGl2YXRlIiwidXBkYXRlIiwicmVtb3ZlIiwiZGVzdHJveSJdO2Z1bmN0aW9uIGlyKGUsaSl7cmV0dXJuIGUua2V5PT09aS5rZXkmJihlLnRhZz09PWkudGFnJiZlLmlzQ29tbWVudD09PWkuaXNDb21tZW50JiZuKGUuZGF0YSk9PT1uKGkuZGF0YSkmJmZ1bmN0aW9uKGUsdCl7aWYoImlucHV0IiE9PWUudGFnKXJldHVybiEwO3ZhciByLGk9bihyPWUuZGF0YSkmJm4ocj1yLmF0dHJzKSYmci50eXBlLG89bihyPXQuZGF0YSkmJm4ocj1yLmF0dHJzKSYmci50eXBlO3JldHVybiBpPT09b3x8WG4oaSkmJlhuKG8pfShlLGkpfHxyKGUuaXNBc3luY1BsYWNlaG9sZGVyKSYmZS5hc3luY0ZhY3Rvcnk9PT1pLmFzeW5jRmFjdG9yeSYmdChpLmFzeW5jRmFjdG9yeS5lcnJvcikpfWZ1bmN0aW9uIG9yKGUsdCxyKXt2YXIgaSxvLGE9e307Zm9yKGk9dDtpPD1yOysraSluKG89ZVtpXS5rZXkpJiYoYVtvXT1pKTtyZXR1cm4gYX12YXIgYXI9e2NyZWF0ZTpzcix1cGRhdGU6c3IsZGVzdHJveTpmdW5jdGlvbihlKXtzcihlLG5yKX19O2Z1bmN0aW9uIHNyKGUsdCl7KGUuZGF0YS5kaXJlY3RpdmVzfHx0LmRhdGEuZGlyZWN0aXZlcykmJmZ1bmN0aW9uKGUsdCl7dmFyIG4scixpLG89ZT09PW5yLGE9dD09PW5yLHM9dXIoZS5kYXRhLmRpcmVjdGl2ZXMsZS5jb250ZXh0KSxjPXVyKHQuZGF0YS5kaXJlY3RpdmVzLHQuY29udGV4dCksdT1bXSxsPVtdO2ZvcihuIGluIGMpcj1zW25dLGk9Y1tuXSxyPyhpLm9sZFZhbHVlPXIudmFsdWUsaS5vbGRBcmc9ci5hcmcsZnIoaSwidXBkYXRlIix0LGUpLGkuZGVmJiZpLmRlZi5jb21wb25lbnRVcGRhdGVkJiZsLnB1c2goaSkpOihmcihpLCJiaW5kIix0LGUpLGkuZGVmJiZpLmRlZi5pbnNlcnRlZCYmdS5wdXNoKGkpKTtpZih1Lmxlbmd0aCl7dmFyIGY9ZnVuY3Rpb24oKXtmb3IodmFyIG49MDtuPHUubGVuZ3RoO24rKylmcih1W25dLCJpbnNlcnRlZCIsdCxlKX07bz9pdCh0LCJpbnNlcnQiLGYpOmYoKX1sLmxlbmd0aCYmaXQodCwicG9zdHBhdGNoIixmdW5jdGlvbigpe2Zvcih2YXIgbj0wO248bC5sZW5ndGg7bisrKWZyKGxbbl0sImNvbXBvbmVudFVwZGF0ZWQiLHQsZSl9KTtpZighbylmb3IobiBpbiBzKWNbbl18fGZyKHNbbl0sInVuYmluZCIsZSxlLGEpfShlLHQpfXZhciBjcj1PYmplY3QuY3JlYXRlKG51bGwpO2Z1bmN0aW9uIHVyKGUsdCl7dmFyIG4scixpPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoIWUpcmV0dXJuIGk7Zm9yKG49MDtuPGUubGVuZ3RoO24rKykocj1lW25dKS5tb2RpZmllcnN8fChyLm1vZGlmaWVycz1jciksaVtscihyKV09cixyLmRlZj1MZSh0LiRvcHRpb25zLCJkaXJlY3RpdmVzIixyLm5hbWUpO3JldHVybiBpfWZ1bmN0aW9uIGxyKGUpe3JldHVybiBlLnJhd05hbWV8fGUubmFtZSsiLiIrT2JqZWN0LmtleXMoZS5tb2RpZmllcnN8fHt9KS5qb2luKCIuIil9ZnVuY3Rpb24gZnIoZSx0LG4scixpKXt2YXIgbz1lLmRlZiYmZS5kZWZbdF07aWYobyl0cnl7byhuLmVsbSxlLG4scixpKX1jYXRjaChyKXtSZShyLG4uY29udGV4dCwiZGlyZWN0aXZlICIrZS5uYW1lKyIgIit0KyIgaG9vayIpfX12YXIgcHI9W2VyLGFyXTtmdW5jdGlvbiBkcihlLHIpe3ZhciBpPXIuY29tcG9uZW50T3B0aW9ucztpZighKG4oaSkmJiExPT09aS5DdG9yLm9wdGlvbnMuaW5oZXJpdEF0dHJzfHx0KGUuZGF0YS5hdHRycykmJnQoci5kYXRhLmF0dHJzKSkpe3ZhciBvLGEscz1yLmVsbSxjPWUuZGF0YS5hdHRyc3x8e30sdT1yLmRhdGEuYXR0cnN8fHt9O2ZvcihvIGluIG4odS5fX29iX18pJiYodT1yLmRhdGEuYXR0cnM9QSh7fSx1KSksdSlhPXVbb10sY1tvXSE9PWEmJnZyKHMsbyxhKTtmb3IobyBpbihxfHxaKSYmdS52YWx1ZSE9PWMudmFsdWUmJnZyKHMsInZhbHVlIix1LnZhbHVlKSxjKXQodVtvXSkmJihQbihvKT9zLnJlbW92ZUF0dHJpYnV0ZU5TKEZuLFJuKG8pKTpEbihvKXx8cy5yZW1vdmVBdHRyaWJ1dGUobykpfX1mdW5jdGlvbiB2cihlLHQsbil7ZS50YWdOYW1lLmluZGV4T2YoIi0iKT4tMT9ocihlLHQsbik6SW4odCk\/SG4obik\/ZS5yZW1vdmVBdHRyaWJ1dGUodCk6KG49ImFsbG93ZnVsbHNjcmVlbiI9PT10JiYiRU1CRUQiPT09ZS50YWdOYW1lPyJ0cnVlIjp0LGUuc2V0QXR0cmlidXRlKHQsbikpOkRuKHQpP2Uuc2V0QXR0cmlidXRlKHQsTW4odCxuKSk6UG4odCk\/SG4obik\/ZS5yZW1vdmVBdHRyaWJ1dGVOUyhGbixSbih0KSk6ZS5zZXRBdHRyaWJ1dGVOUyhGbix0LG4pOmhyKGUsdCxuKX1mdW5jdGlvbiBocihlLHQsbil7aWYoSG4obikpZS5yZW1vdmVBdHRyaWJ1dGUodCk7ZWxzZXtpZihxJiYhVyYmIlRFWFRBUkVBIj09PWUudGFnTmFtZSYmInBsYWNlaG9sZGVyIj09PXQmJiIiIT09biYmIWUuX19pZXBoKXt2YXIgcj1mdW5jdGlvbih0KXt0LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLGUucmVtb3ZlRXZlbnRMaXN0ZW5lcigiaW5wdXQiLHIpfTtlLmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IixyKSxlLl9faWVwaD0hMH1lLnNldEF0dHJpYnV0ZSh0LG4pfX12YXIgbXI9e2NyZWF0ZTpkcix1cGRhdGU6ZHJ9O2Z1bmN0aW9uIHlyKGUscil7dmFyIGk9ci5lbG0sbz1yLmRhdGEsYT1lLmRhdGE7aWYoISh0KG8uc3RhdGljQ2xhc3MpJiZ0KG8uY2xhc3MpJiYodChhKXx8dChhLnN0YXRpY0NsYXNzKSYmdChhLmNsYXNzKSkpKXt2YXIgcz1CbihyKSxjPWkuX3RyYW5zaXRpb25DbGFzc2VzO24oYykmJihzPXpuKHMsVm4oYykpKSxzIT09aS5fcHJldkNsYXNzJiYoaS5zZXRBdHRyaWJ1dGUoImNsYXNzIixzKSxpLl9wcmV2Q2xhc3M9cyl9fXZhciBncixfcixiciwkcix3cixDcix4cj17Y3JlYXRlOnlyLHVwZGF0ZTp5cn0sa3I9L1tcdykuK1wtXyRcXV0vO2Z1bmN0aW9uIEFyKGUpe3ZhciB0LG4scixpLG8sYT0hMSxzPSExLGM9ITEsdT0hMSxsPTAsZj0wLHA9MCxkPTA7Zm9yKHI9MDtyPGUubGVuZ3RoO3IrKylpZihuPXQsdD1lLmNoYXJDb2RlQXQociksYSkzOT09PXQmJjkyIT09biYmKGE9ITEpO2Vsc2UgaWYocykzND09PXQmJjkyIT09biYmKHM9ITEpO2Vsc2UgaWYoYyk5Nj09PXQmJjkyIT09biYmKGM9ITEpO2Vsc2UgaWYodSk0Nz09PXQmJjkyIT09biYmKHU9ITEpO2Vsc2UgaWYoMTI0IT09dHx8MTI0PT09ZS5jaGFyQ29kZUF0KHIrMSl8fDEyND09PWUuY2hhckNvZGVBdChyLTEpfHxsfHxmfHxwKXtzd2l0Y2godCl7Y2FzZSAzNDpzPSEwO2JyZWFrO2Nhc2UgMzk6YT0hMDticmVhaztjYXNlIDk2OmM9ITA7YnJlYWs7Y2FzZSA0MDpwKys7YnJlYWs7Y2FzZSA0MTpwLS07YnJlYWs7Y2FzZSA5MTpmKys7YnJlYWs7Y2FzZSA5MzpmLS07YnJlYWs7Y2FzZSAxMjM6bCsrO2JyZWFrO2Nhc2UgMTI1OmwtLX1pZig0Nz09PXQpe2Zvcih2YXIgdj1yLTEsaD12b2lkIDA7dj49MCYmIiAiPT09KGg9ZS5jaGFyQXQodikpO3YtLSk7aCYma3IudGVzdChoKXx8KHU9ITApfX1lbHNlIHZvaWQgMD09PWk\/KGQ9cisxLGk9ZS5zbGljZSgwLHIpLnRyaW0oKSk6bSgpO2Z1bmN0aW9uIG0oKXsob3x8KG89W10pKS5wdXNoKGUuc2xpY2UoZCxyKS50cmltKCkpLGQ9cisxfWlmKHZvaWQgMD09PWk\/aT1lLnNsaWNlKDAscikudHJpbSgpOjAhPT1kJiZtKCksbylmb3Iocj0wO3I8by5sZW5ndGg7cisrKWk9T3IoaSxvW3JdKTtyZXR1cm4gaX1mdW5jdGlvbiBPcihlLHQpe3ZhciBuPXQuaW5kZXhPZigiKCIpO2lmKG48MClyZXR1cm4nX2YoIicrdCsnIikoJytlKyIpIjt2YXIgcj10LnNsaWNlKDAsbiksaT10LnNsaWNlKG4rMSk7cmV0dXJuJ19mKCInK3IrJyIpKCcrZSsoIikiIT09aT8iLCIraTppKX1mdW5jdGlvbiBTcihlLHQpe2NvbnNvbGUuZXJyb3IoIltWdWUgY29tcGlsZXJdOiAiK2UpfWZ1bmN0aW9uIFRyKGUsdCl7cmV0dXJuIGU\/ZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGVbdF19KS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KTpbXX1mdW5jdGlvbiBFcihlLHQsbixyLGkpeyhlLnByb3BzfHwoZS5wcm9wcz1bXSkpLnB1c2goUnIoe25hbWU6dCx2YWx1ZTpuLGR5bmFtaWM6aX0scikpLGUucGxhaW49ITF9ZnVuY3Rpb24gTnIoZSx0LG4scixpKXsoaT9lLmR5bmFtaWNBdHRyc3x8KGUuZHluYW1pY0F0dHJzPVtdKTplLmF0dHJzfHwoZS5hdHRycz1bXSkpLnB1c2goUnIoe25hbWU6dCx2YWx1ZTpuLGR5bmFtaWM6aX0scikpLGUucGxhaW49ITF9ZnVuY3Rpb24ganIoZSx0LG4scil7ZS5hdHRyc01hcFt0XT1uLGUuYXR0cnNMaXN0LnB1c2goUnIoe25hbWU6dCx2YWx1ZTpufSxyKSl9ZnVuY3Rpb24gRHIoZSx0LG4scixpLG8sYSxzKXsoZS5kaXJlY3RpdmVzfHwoZS5kaXJlY3RpdmVzPVtdKSkucHVzaChScih7bmFtZTp0LHJhd05hbWU6bix2YWx1ZTpyLGFyZzppLGlzRHluYW1pY0FyZzpvLG1vZGlmaWVyczphfSxzKSksZS5wbGFpbj0hMX1mdW5jdGlvbiBMcihlLHQsbil7cmV0dXJuIG4\/Il9wKCIrdCsnLCInK2UrJyIpJzplK3R9ZnVuY3Rpb24gTXIodCxuLHIsaSxvLGEscyxjKXt2YXIgdTsoaT1pfHxlKS5yaWdodD9jP249IigiK24rIik9PT0nY2xpY2snPydjb250ZXh0bWVudSc6KCIrbisiKSI6ImNsaWNrIj09PW4mJihuPSJjb250ZXh0bWVudSIsZGVsZXRlIGkucmlnaHQpOmkubWlkZGxlJiYoYz9uPSIoIituKyIpPT09J2NsaWNrJz8nbW91c2V1cCc6KCIrbisiKSI6ImNsaWNrIj09PW4mJihuPSJtb3VzZXVwIikpLGkuY2FwdHVyZSYmKGRlbGV0ZSBpLmNhcHR1cmUsbj1McigiISIsbixjKSksaS5vbmNlJiYoZGVsZXRlIGkub25jZSxuPUxyKCJ+IixuLGMpKSxpLnBhc3NpdmUmJihkZWxldGUgaS5wYXNzaXZlLG49THIoIiYiLG4sYykpLGkubmF0aXZlPyhkZWxldGUgaS5uYXRpdmUsdT10Lm5hdGl2ZUV2ZW50c3x8KHQubmF0aXZlRXZlbnRzPXt9KSk6dT10LmV2ZW50c3x8KHQuZXZlbnRzPXt9KTt2YXIgbD1Scih7dmFsdWU6ci50cmltKCksZHluYW1pYzpjfSxzKTtpIT09ZSYmKGwubW9kaWZpZXJzPWkpO3ZhciBmPXVbbl07QXJyYXkuaXNBcnJheShmKT9vP2YudW5zaGlmdChsKTpmLnB1c2gobCk6dVtuXT1mP28\/W2wsZl06W2YsbF06bCx0LnBsYWluPSExfWZ1bmN0aW9uIElyKGUsdCxuKXt2YXIgcj1GcihlLCI6Iit0KXx8RnIoZSwidi1iaW5kOiIrdCk7aWYobnVsbCE9cilyZXR1cm4gQXIocik7aWYoITEhPT1uKXt2YXIgaT1GcihlLHQpO2lmKG51bGwhPWkpcmV0dXJuIEpTT04uc3RyaW5naWZ5KGkpfX1mdW5jdGlvbiBGcihlLHQsbil7dmFyIHI7aWYobnVsbCE9KHI9ZS5hdHRyc01hcFt0XSkpZm9yKHZhciBpPWUuYXR0cnNMaXN0LG89MCxhPWkubGVuZ3RoO288YTtvKyspaWYoaVtvXS5uYW1lPT09dCl7aS5zcGxpY2UobywxKTticmVha31yZXR1cm4gbiYmZGVsZXRlIGUuYXR0cnNNYXBbdF0scn1mdW5jdGlvbiBQcihlLHQpe2Zvcih2YXIgbj1lLmF0dHJzTGlzdCxyPTAsaT1uLmxlbmd0aDtyPGk7cisrKXt2YXIgbz1uW3JdO2lmKHQudGVzdChvLm5hbWUpKXJldHVybiBuLnNwbGljZShyLDEpLG99fWZ1bmN0aW9uIFJyKGUsdCl7cmV0dXJuIHQmJihudWxsIT10LnN0YXJ0JiYoZS5zdGFydD10LnN0YXJ0KSxudWxsIT10LmVuZCYmKGUuZW5kPXQuZW5kKSksZX1mdW5jdGlvbiBIcihlLHQsbil7dmFyIHI9bnx8e30saT1yLm51bWJlcixvPSIkJHYiO3IudHJpbSYmKG89Iih0eXBlb2YgJCR2ID09PSAnc3RyaW5nJz8gJCR2LnRyaW0oKTogJCR2KSIpLGkmJihvPSJfbigiK28rIikiKTt2YXIgYT1Ccih0LG8pO2UubW9kZWw9e3ZhbHVlOiIoIit0KyIpIixleHByZXNzaW9uOkpTT04uc3RyaW5naWZ5KHQpLGNhbGxiYWNrOiJmdW5jdGlvbiAoJCR2KSB7IithKyJ9In19ZnVuY3Rpb24gQnIoZSx0KXt2YXIgbj1mdW5jdGlvbihlKXtpZihlPWUudHJpbSgpLGdyPWUubGVuZ3RoLGUuaW5kZXhPZigiWyIpPDB8fGUubGFzdEluZGV4T2YoIl0iKTxnci0xKXJldHVybigkcj1lLmxhc3RJbmRleE9mKCIuIikpPi0xP3tleHA6ZS5zbGljZSgwLCRyKSxrZXk6JyInK2Uuc2xpY2UoJHIrMSkrJyInfTp7ZXhwOmUsa2V5Om51bGx9O19yPWUsJHI9d3I9Q3I9MDtmb3IoOyF6cigpOylWcihicj1VcigpKT9Kcihicik6OTE9PT1iciYmS3IoYnIpO3JldHVybntleHA6ZS5zbGljZSgwLHdyKSxrZXk6ZS5zbGljZSh3cisxLENyKX19KGUpO3JldHVybiBudWxsPT09bi5rZXk\/ZSsiPSIrdDoiJHNldCgiK24uZXhwKyIsICIrbi5rZXkrIiwgIit0KyIpIn1mdW5jdGlvbiBVcigpe3JldHVybiBfci5jaGFyQ29kZUF0KCsrJHIpfWZ1bmN0aW9uIHpyKCl7cmV0dXJuICRyPj1ncn1mdW5jdGlvbiBWcihlKXtyZXR1cm4gMzQ9PT1lfHwzOT09PWV9ZnVuY3Rpb24gS3IoZSl7dmFyIHQ9MTtmb3Iod3I9JHI7IXpyKCk7KWlmKFZyKGU9VXIoKSkpSnIoZSk7ZWxzZSBpZig5MT09PWUmJnQrKyw5Mz09PWUmJnQtLSwwPT09dCl7Q3I9JHI7YnJlYWt9fWZ1bmN0aW9uIEpyKGUpe2Zvcih2YXIgdD1lOyF6cigpJiYoZT1VcigpKSE9PXQ7KTt9dmFyIHFyLFdyPSJfX3IiLFpyPSJfX2MiO2Z1bmN0aW9uIEdyKGUsdCxuKXt2YXIgcj1xcjtyZXR1cm4gZnVuY3Rpb24gaSgpe251bGwhPT10LmFwcGx5KG51bGwsYXJndW1lbnRzKSYmUXIoZSxpLG4scil9fXZhciBYcj1WZSYmIShYJiZOdW1iZXIoWFsxXSk8PTUzKTtmdW5jdGlvbiBZcihlLHQsbixyKXtpZihYcil7dmFyIGk9YW4sbz10O3Q9by5fd3JhcHBlcj1mdW5jdGlvbihlKXtpZihlLnRhcmdldD09PWUuY3VycmVudFRhcmdldHx8ZS50aW1lU3RhbXA+PWl8fGUudGltZVN0YW1wPD0wfHxlLnRhcmdldC5vd25lckRvY3VtZW50IT09ZG9jdW1lbnQpcmV0dXJuIG8uYXBwbHkodGhpcyxhcmd1bWVudHMpfX1xci5hZGRFdmVudExpc3RlbmVyKGUsdCxRP3tjYXB0dXJlOm4scGFzc2l2ZTpyfTpuKX1mdW5jdGlvbiBRcihlLHQsbixyKXsocnx8cXIpLnJlbW92ZUV2ZW50TGlzdGVuZXIoZSx0Ll93cmFwcGVyfHx0LG4pfWZ1bmN0aW9uIGVpKGUscil7aWYoIXQoZS5kYXRhLm9uKXx8IXQoci5kYXRhLm9uKSl7dmFyIGk9ci5kYXRhLm9ufHx7fSxvPWUuZGF0YS5vbnx8e307cXI9ci5lbG0sZnVuY3Rpb24oZSl7aWYobihlW1dyXSkpe3ZhciB0PXE\/ImNoYW5nZSI6ImlucHV0IjtlW3RdPVtdLmNvbmNhdChlW1dyXSxlW3RdfHxbXSksZGVsZXRlIGVbV3JdfW4oZVtacl0pJiYoZS5jaGFuZ2U9W10uY29uY2F0KGVbWnJdLGUuY2hhbmdlfHxbXSksZGVsZXRlIGVbWnJdKX0oaSkscnQoaSxvLFlyLFFyLEdyLHIuY29udGV4dCkscXI9dm9pZCAwfX12YXIgdGksbmk9e2NyZWF0ZTplaSx1cGRhdGU6ZWl9O2Z1bmN0aW9uIHJpKGUscil7aWYoIXQoZS5kYXRhLmRvbVByb3BzKXx8IXQoci5kYXRhLmRvbVByb3BzKSl7dmFyIGksbyxhPXIuZWxtLHM9ZS5kYXRhLmRvbVByb3BzfHx7fSxjPXIuZGF0YS5kb21Qcm9wc3x8e307Zm9yKGkgaW4gbihjLl9fb2JfXykmJihjPXIuZGF0YS5kb21Qcm9wcz1BKHt9LGMpKSxzKWkgaW4gY3x8KGFbaV09IiIpO2ZvcihpIGluIGMpe2lmKG89Y1tpXSwidGV4dENvbnRlbnQiPT09aXx8ImlubmVySFRNTCI9PT1pKXtpZihyLmNoaWxkcmVuJiYoci5jaGlsZHJlbi5sZW5ndGg9MCksbz09PXNbaV0pY29udGludWU7MT09PWEuY2hpbGROb2Rlcy5sZW5ndGgmJmEucmVtb3ZlQ2hpbGQoYS5jaGlsZE5vZGVzWzBdKX1pZigidmFsdWUiPT09aSYmIlBST0dSRVNTIiE9PWEudGFnTmFtZSl7YS5fdmFsdWU9bzt2YXIgdT10KG8pPyIiOlN0cmluZyhvKTtpaShhLHUpJiYoYS52YWx1ZT11KX1lbHNlIGlmKCJpbm5lckhUTUwiPT09aSYmcW4oYS50YWdOYW1lKSYmdChhLmlubmVySFRNTCkpeyh0aT10aXx8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLmlubmVySFRNTD0iPHN2Zz4iK28rIjwvc3ZnPiI7Zm9yKHZhciBsPXRpLmZpcnN0Q2hpbGQ7YS5maXJzdENoaWxkOylhLnJlbW92ZUNoaWxkKGEuZmlyc3RDaGlsZCk7Zm9yKDtsLmZpcnN0Q2hpbGQ7KWEuYXBwZW5kQ2hpbGQobC5maXJzdENoaWxkKX1lbHNlIGlmKG8hPT1zW2ldKXRyeXthW2ldPW99Y2F0Y2goZSl7fX19fWZ1bmN0aW9uIGlpKGUsdCl7cmV0dXJuIWUuY29tcG9zaW5nJiYoIk9QVElPTiI9PT1lLnRhZ05hbWV8fGZ1bmN0aW9uKGUsdCl7dmFyIG49ITA7dHJ5e249ZG9jdW1lbnQuYWN0aXZlRWxlbWVudCE9PWV9Y2F0Y2goZSl7fXJldHVybiBuJiZlLnZhbHVlIT09dH0oZSx0KXx8ZnVuY3Rpb24oZSx0KXt2YXIgcj1lLnZhbHVlLGk9ZS5fdk1vZGlmaWVycztpZihuKGkpKXtpZihpLm51bWJlcilyZXR1cm4gZihyKSE9PWYodCk7aWYoaS50cmltKXJldHVybiByLnRyaW0oKSE9PXQudHJpbSgpfXJldHVybiByIT09dH0oZSx0KSl9dmFyIG9pPXtjcmVhdGU6cmksdXBkYXRlOnJpfSxhaT1nKGZ1bmN0aW9uKGUpe3ZhciB0PXt9LG49LzooLispLztyZXR1cm4gZS5zcGxpdCgvOyg\/IVteKF0qXCkpL2cpLmZvckVhY2goZnVuY3Rpb24oZSl7aWYoZSl7dmFyIHI9ZS5zcGxpdChuKTtyLmxlbmd0aD4xJiYodFtyWzBdLnRyaW0oKV09clsxXS50cmltKCkpfX0pLHR9KTtmdW5jdGlvbiBzaShlKXt2YXIgdD1jaShlLnN0eWxlKTtyZXR1cm4gZS5zdGF0aWNTdHlsZT9BKGUuc3RhdGljU3R5bGUsdCk6dH1mdW5jdGlvbiBjaShlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9PKGUpOiJzdHJpbmciPT10eXBlb2YgZT9haShlKTplfXZhciB1aSxsaT0vXi0tLyxmaT0vXHMqIWltcG9ydGFudCQvLHBpPWZ1bmN0aW9uKGUsdCxuKXtpZihsaS50ZXN0KHQpKWUuc3R5bGUuc2V0UHJvcGVydHkodCxuKTtlbHNlIGlmKGZpLnRlc3QobikpZS5zdHlsZS5zZXRQcm9wZXJ0eShDKHQpLG4ucmVwbGFjZShmaSwiIiksImltcG9ydGFudCIpO2Vsc2V7dmFyIHI9dmkodCk7aWYoQXJyYXkuaXNBcnJheShuKSlmb3IodmFyIGk9MCxvPW4ubGVuZ3RoO2k8bztpKyspZS5zdHlsZVtyXT1uW2ldO2Vsc2UgZS5zdHlsZVtyXT1ufX0sZGk9WyJXZWJraXQiLCJNb3oiLCJtcyJdLHZpPWcoZnVuY3Rpb24oZSl7aWYodWk9dWl8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLnN0eWxlLCJmaWx0ZXIiIT09KGU9YihlKSkmJmUgaW4gdWkpcmV0dXJuIGU7Zm9yKHZhciB0PWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKSxuPTA7bjxkaS5sZW5ndGg7bisrKXt2YXIgcj1kaVtuXSt0O2lmKHIgaW4gdWkpcmV0dXJuIHJ9fSk7ZnVuY3Rpb24gaGkoZSxyKXt2YXIgaT1yLmRhdGEsbz1lLmRhdGE7aWYoISh0KGkuc3RhdGljU3R5bGUpJiZ0KGkuc3R5bGUpJiZ0KG8uc3RhdGljU3R5bGUpJiZ0KG8uc3R5bGUpKSl7dmFyIGEscyxjPXIuZWxtLHU9by5zdGF0aWNTdHlsZSxsPW8ubm9ybWFsaXplZFN0eWxlfHxvLnN0eWxlfHx7fSxmPXV8fGwscD1jaShyLmRhdGEuc3R5bGUpfHx7fTtyLmRhdGEubm9ybWFsaXplZFN0eWxlPW4ocC5fX29iX18pP0Eoe30scCk6cDt2YXIgZD1mdW5jdGlvbihlLHQpe3ZhciBuLHI9e307aWYodClmb3IodmFyIGk9ZTtpLmNvbXBvbmVudEluc3RhbmNlOykoaT1pLmNvbXBvbmVudEluc3RhbmNlLl92bm9kZSkmJmkuZGF0YSYmKG49c2koaS5kYXRhKSkmJkEocixuKTsobj1zaShlLmRhdGEpKSYmQShyLG4pO2Zvcih2YXIgbz1lO289by5wYXJlbnQ7KW8uZGF0YSYmKG49c2koby5kYXRhKSkmJkEocixuKTtyZXR1cm4gcn0ociwhMCk7Zm9yKHMgaW4gZil0KGRbc10pJiZwaShjLHMsIiIpO2ZvcihzIGluIGQpKGE9ZFtzXSkhPT1mW3NdJiZwaShjLHMsbnVsbD09YT8iIjphKX19dmFyIG1pPXtjcmVhdGU6aGksdXBkYXRlOmhpfSx5aT0vXHMrLztmdW5jdGlvbiBnaShlLHQpe2lmKHQmJih0PXQudHJpbSgpKSlpZihlLmNsYXNzTGlzdCl0LmluZGV4T2YoIiAiKT4tMT90LnNwbGl0KHlpKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiBlLmNsYXNzTGlzdC5hZGQodCl9KTplLmNsYXNzTGlzdC5hZGQodCk7ZWxzZXt2YXIgbj0iICIrKGUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIikrIiAiO24uaW5kZXhPZigiICIrdCsiICIpPDAmJmUuc2V0QXR0cmlidXRlKCJjbGFzcyIsKG4rdCkudHJpbSgpKX19ZnVuY3Rpb24gX2koZSx0KXtpZih0JiYodD10LnRyaW0oKSkpaWYoZS5jbGFzc0xpc3QpdC5pbmRleE9mKCIgIik+LTE\/dC5zcGxpdCh5aSkuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gZS5jbGFzc0xpc3QucmVtb3ZlKHQpfSk6ZS5jbGFzc0xpc3QucmVtb3ZlKHQpLGUuY2xhc3NMaXN0Lmxlbmd0aHx8ZS5yZW1vdmVBdHRyaWJ1dGUoImNsYXNzIik7ZWxzZXtmb3IodmFyIG49IiAiKyhlLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpKyIgIixyPSIgIit0KyIgIjtuLmluZGV4T2Yocik+PTA7KW49bi5yZXBsYWNlKHIsIiAiKTsobj1uLnRyaW0oKSk\/ZS5zZXRBdHRyaWJ1dGUoImNsYXNzIixuKTplLnJlbW92ZUF0dHJpYnV0ZSgiY2xhc3MiKX19ZnVuY3Rpb24gYmkoZSl7aWYoZSl7aWYoIm9iamVjdCI9PXR5cGVvZiBlKXt2YXIgdD17fTtyZXR1cm4hMSE9PWUuY3NzJiZBKHQsJGkoZS5uYW1lfHwidiIpKSxBKHQsZSksdH1yZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU\/JGkoZSk6dm9pZCAwfX12YXIgJGk9ZyhmdW5jdGlvbihlKXtyZXR1cm57ZW50ZXJDbGFzczplKyItZW50ZXIiLGVudGVyVG9DbGFzczplKyItZW50ZXItdG8iLGVudGVyQWN0aXZlQ2xhc3M6ZSsiLWVudGVyLWFjdGl2ZSIsbGVhdmVDbGFzczplKyItbGVhdmUiLGxlYXZlVG9DbGFzczplKyItbGVhdmUtdG8iLGxlYXZlQWN0aXZlQ2xhc3M6ZSsiLWxlYXZlLWFjdGl2ZSJ9fSksd2k9eiYmIVcsQ2k9InRyYW5zaXRpb24iLHhpPSJhbmltYXRpb24iLGtpPSJ0cmFuc2l0aW9uIixBaT0idHJhbnNpdGlvbmVuZCIsT2k9ImFuaW1hdGlvbiIsU2k9ImFuaW1hdGlvbmVuZCI7d2kmJih2b2lkIDA9PT13aW5kb3cub250cmFuc2l0aW9uZW5kJiZ2b2lkIDAhPT13aW5kb3cub253ZWJraXR0cmFuc2l0aW9uZW5kJiYoa2k9IldlYmtpdFRyYW5zaXRpb24iLEFpPSJ3ZWJraXRUcmFuc2l0aW9uRW5kIiksdm9pZCAwPT09d2luZG93Lm9uYW5pbWF0aW9uZW5kJiZ2b2lkIDAhPT13aW5kb3cub253ZWJraXRhbmltYXRpb25lbmQmJihPaT0iV2Via2l0QW5pbWF0aW9uIixTaT0id2Via2l0QW5pbWF0aW9uRW5kIikpO3ZhciBUaT16P3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU\/d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZS5iaW5kKHdpbmRvdyk6c2V0VGltZW91dDpmdW5jdGlvbihlKXtyZXR1cm4gZSgpfTtmdW5jdGlvbiBFaShlKXtUaShmdW5jdGlvbigpe1RpKGUpfSl9ZnVuY3Rpb24gTmkoZSx0KXt2YXIgbj1lLl90cmFuc2l0aW9uQ2xhc3Nlc3x8KGUuX3RyYW5zaXRpb25DbGFzc2VzPVtdKTtuLmluZGV4T2YodCk8MCYmKG4ucHVzaCh0KSxnaShlLHQpKX1mdW5jdGlvbiBqaShlLHQpe2UuX3RyYW5zaXRpb25DbGFzc2VzJiZoKGUuX3RyYW5zaXRpb25DbGFzc2VzLHQpLF9pKGUsdCl9ZnVuY3Rpb24gRGkoZSx0LG4pe3ZhciByPU1pKGUsdCksaT1yLnR5cGUsbz1yLnRpbWVvdXQsYT1yLnByb3BDb3VudDtpZighaSlyZXR1cm4gbigpO3ZhciBzPWk9PT1DaT9BaTpTaSxjPTAsdT1mdW5jdGlvbigpe2UucmVtb3ZlRXZlbnRMaXN0ZW5lcihzLGwpLG4oKX0sbD1mdW5jdGlvbih0KXt0LnRhcmdldD09PWUmJisrYz49YSYmdSgpfTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YzxhJiZ1KCl9LG8rMSksZS5hZGRFdmVudExpc3RlbmVyKHMsbCl9dmFyIExpPS9cYih0cmFuc2Zvcm18YWxsKSgsfCQpLztmdW5jdGlvbiBNaShlLHQpe3ZhciBuLHI9d2luZG93LmdldENvbXB1dGVkU3R5bGUoZSksaT0ocltraSsiRGVsYXkiXXx8IiIpLnNwbGl0KCIsICIpLG89KHJba2krIkR1cmF0aW9uIl18fCIiKS5zcGxpdCgiLCAiKSxhPUlpKGksbykscz0ocltPaSsiRGVsYXkiXXx8IiIpLnNwbGl0KCIsICIpLGM9KHJbT2krIkR1cmF0aW9uIl18fCIiKS5zcGxpdCgiLCAiKSx1PUlpKHMsYyksbD0wLGY9MDtyZXR1cm4gdD09PUNpP2E+MCYmKG49Q2ksbD1hLGY9by5sZW5ndGgpOnQ9PT14aT91PjAmJihuPXhpLGw9dSxmPWMubGVuZ3RoKTpmPShuPShsPU1hdGgubWF4KGEsdSkpPjA\/YT51P0NpOnhpOm51bGwpP249PT1DaT9vLmxlbmd0aDpjLmxlbmd0aDowLHt0eXBlOm4sdGltZW91dDpsLHByb3BDb3VudDpmLGhhc1RyYW5zZm9ybTpuPT09Q2kmJkxpLnRlc3QocltraSsiUHJvcGVydHkiXSl9fWZ1bmN0aW9uIElpKGUsdCl7Zm9yKDtlLmxlbmd0aDx0Lmxlbmd0aDspZT1lLmNvbmNhdChlKTtyZXR1cm4gTWF0aC5tYXguYXBwbHkobnVsbCx0Lm1hcChmdW5jdGlvbih0LG4pe3JldHVybiBGaSh0KStGaShlW25dKX0pKX1mdW5jdGlvbiBGaShlKXtyZXR1cm4gMWUzKk51bWJlcihlLnNsaWNlKDAsLTEpLnJlcGxhY2UoIiwiLCIuIikpfWZ1bmN0aW9uIFBpKGUscil7dmFyIGk9ZS5lbG07bihpLl9sZWF2ZUNiKSYmKGkuX2xlYXZlQ2IuY2FuY2VsbGVkPSEwLGkuX2xlYXZlQ2IoKSk7dmFyIGE9YmkoZS5kYXRhLnRyYW5zaXRpb24pO2lmKCF0KGEpJiYhbihpLl9lbnRlckNiKSYmMT09PWkubm9kZVR5cGUpe2Zvcih2YXIgcz1hLmNzcyxjPWEudHlwZSx1PWEuZW50ZXJDbGFzcyxsPWEuZW50ZXJUb0NsYXNzLHA9YS5lbnRlckFjdGl2ZUNsYXNzLGQ9YS5hcHBlYXJDbGFzcyx2PWEuYXBwZWFyVG9DbGFzcyxoPWEuYXBwZWFyQWN0aXZlQ2xhc3MsbT1hLmJlZm9yZUVudGVyLHk9YS5lbnRlcixnPWEuYWZ0ZXJFbnRlcixfPWEuZW50ZXJDYW5jZWxsZWQsYj1hLmJlZm9yZUFwcGVhciwkPWEuYXBwZWFyLHc9YS5hZnRlckFwcGVhcixDPWEuYXBwZWFyQ2FuY2VsbGVkLHg9YS5kdXJhdGlvbixrPVd0LEE9V3QuJHZub2RlO0EmJkEucGFyZW50OylrPUEuY29udGV4dCxBPUEucGFyZW50O3ZhciBPPSFrLl9pc01vdW50ZWR8fCFlLmlzUm9vdEluc2VydDtpZighT3x8JHx8IiI9PT0kKXt2YXIgUz1PJiZkP2Q6dSxUPU8mJmg\/aDpwLEU9TyYmdj92OmwsTj1PJiZifHxtLGo9TyYmImZ1bmN0aW9uIj09dHlwZW9mICQ\/JDp5LEw9TyYmd3x8ZyxNPU8mJkN8fF8sST1mKG8oeCk\/eC5lbnRlcjp4KSxGPSExIT09cyYmIVcsUD1CaShqKSxSPWkuX2VudGVyQ2I9RChmdW5jdGlvbigpe0YmJihqaShpLEUpLGppKGksVCkpLFIuY2FuY2VsbGVkPyhGJiZqaShpLFMpLE0mJk0oaSkpOkwmJkwoaSksaS5fZW50ZXJDYj1udWxsfSk7ZS5kYXRhLnNob3d8fGl0KGUsImluc2VydCIsZnVuY3Rpb24oKXt2YXIgdD1pLnBhcmVudE5vZGUsbj10JiZ0Ll9wZW5kaW5nJiZ0Ll9wZW5kaW5nW2Uua2V5XTtuJiZuLnRhZz09PWUudGFnJiZuLmVsbS5fbGVhdmVDYiYmbi5lbG0uX2xlYXZlQ2IoKSxqJiZqKGksUil9KSxOJiZOKGkpLEYmJihOaShpLFMpLE5pKGksVCksRWkoZnVuY3Rpb24oKXtqaShpLFMpLFIuY2FuY2VsbGVkfHwoTmkoaSxFKSxQfHwoSGkoSSk\/c2V0VGltZW91dChSLEkpOkRpKGksYyxSKSkpfSkpLGUuZGF0YS5zaG93JiYociYmcigpLGomJmooaSxSKSksRnx8UHx8UigpfX19ZnVuY3Rpb24gUmkoZSxyKXt2YXIgaT1lLmVsbTtuKGkuX2VudGVyQ2IpJiYoaS5fZW50ZXJDYi5jYW5jZWxsZWQ9ITAsaS5fZW50ZXJDYigpKTt2YXIgYT1iaShlLmRhdGEudHJhbnNpdGlvbik7aWYodChhKXx8MSE9PWkubm9kZVR5cGUpcmV0dXJuIHIoKTtpZighbihpLl9sZWF2ZUNiKSl7dmFyIHM9YS5jc3MsYz1hLnR5cGUsdT1hLmxlYXZlQ2xhc3MsbD1hLmxlYXZlVG9DbGFzcyxwPWEubGVhdmVBY3RpdmVDbGFzcyxkPWEuYmVmb3JlTGVhdmUsdj1hLmxlYXZlLGg9YS5hZnRlckxlYXZlLG09YS5sZWF2ZUNhbmNlbGxlZCx5PWEuZGVsYXlMZWF2ZSxnPWEuZHVyYXRpb24sXz0hMSE9PXMmJiFXLGI9QmkodiksJD1mKG8oZyk\/Zy5sZWF2ZTpnKSx3PWkuX2xlYXZlQ2I9RChmdW5jdGlvbigpe2kucGFyZW50Tm9kZSYmaS5wYXJlbnROb2RlLl9wZW5kaW5nJiYoaS5wYXJlbnROb2RlLl9wZW5kaW5nW2Uua2V5XT1udWxsKSxfJiYoamkoaSxsKSxqaShpLHApKSx3LmNhbmNlbGxlZD8oXyYmamkoaSx1KSxtJiZtKGkpKToocigpLGgmJmgoaSkpLGkuX2xlYXZlQ2I9bnVsbH0pO3k\/eShDKTpDKCl9ZnVuY3Rpb24gQygpe3cuY2FuY2VsbGVkfHwoIWUuZGF0YS5zaG93JiZpLnBhcmVudE5vZGUmJigoaS5wYXJlbnROb2RlLl9wZW5kaW5nfHwoaS5wYXJlbnROb2RlLl9wZW5kaW5nPXt9KSlbZS5rZXldPWUpLGQmJmQoaSksXyYmKE5pKGksdSksTmkoaSxwKSxFaShmdW5jdGlvbigpe2ppKGksdSksdy5jYW5jZWxsZWR8fChOaShpLGwpLGJ8fChIaSgkKT9zZXRUaW1lb3V0KHcsJCk6RGkoaSxjLHcpKSl9KSksdiYmdihpLHcpLF98fGJ8fHcoKSl9fWZ1bmN0aW9uIEhpKGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZSYmIWlzTmFOKGUpfWZ1bmN0aW9uIEJpKGUpe2lmKHQoZSkpcmV0dXJuITE7dmFyIHI9ZS5mbnM7cmV0dXJuIG4ocik\/QmkoQXJyYXkuaXNBcnJheShyKT9yWzBdOnIpOihlLl9sZW5ndGh8fGUubGVuZ3RoKT4xfWZ1bmN0aW9uIFVpKGUsdCl7ITAhPT10LmRhdGEuc2hvdyYmUGkodCl9dmFyIHppPWZ1bmN0aW9uKGUpe3ZhciBvLGEscz17fSxjPWUubW9kdWxlcyx1PWUubm9kZU9wcztmb3Iobz0wO288cnIubGVuZ3RoOysrbylmb3Ioc1tycltvXV09W10sYT0wO2E8Yy5sZW5ndGg7KythKW4oY1thXVtycltvXV0pJiZzW3JyW29dXS5wdXNoKGNbYV1bcnJbb11dKTtmdW5jdGlvbiBsKGUpe3ZhciB0PXUucGFyZW50Tm9kZShlKTtuKHQpJiZ1LnJlbW92ZUNoaWxkKHQsZSl9ZnVuY3Rpb24gZihlLHQsaSxvLGEsYyxsKXtpZihuKGUuZWxtKSYmbihjKSYmKGU9Y1tsXT1tZShlKSksZS5pc1Jvb3RJbnNlcnQ9IWEsIWZ1bmN0aW9uKGUsdCxpLG8pe3ZhciBhPWUuZGF0YTtpZihuKGEpKXt2YXIgYz1uKGUuY29tcG9uZW50SW5zdGFuY2UpJiZhLmtlZXBBbGl2ZTtpZihuKGE9YS5ob29rKSYmbihhPWEuaW5pdCkmJmEoZSwhMSksbihlLmNvbXBvbmVudEluc3RhbmNlKSlyZXR1cm4gZChlLHQpLHYoaSxlLmVsbSxvKSxyKGMpJiZmdW5jdGlvbihlLHQscixpKXtmb3IodmFyIG8sYT1lO2EuY29tcG9uZW50SW5zdGFuY2U7KWlmKGE9YS5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGUsbihvPWEuZGF0YSkmJm4obz1vLnRyYW5zaXRpb24pKXtmb3Iobz0wO288cy5hY3RpdmF0ZS5sZW5ndGg7KytvKXMuYWN0aXZhdGVbb10obnIsYSk7dC5wdXNoKGEpO2JyZWFrfXYocixlLmVsbSxpKX0oZSx0LGksbyksITB9fShlLHQsaSxvKSl7dmFyIGY9ZS5kYXRhLHA9ZS5jaGlsZHJlbixtPWUudGFnO24obSk\/KGUuZWxtPWUubnM\/dS5jcmVhdGVFbGVtZW50TlMoZS5ucyxtKTp1LmNyZWF0ZUVsZW1lbnQobSxlKSxnKGUpLGgoZSxwLHQpLG4oZikmJnkoZSx0KSx2KGksZS5lbG0sbykpOnIoZS5pc0NvbW1lbnQpPyhlLmVsbT11LmNyZWF0ZUNvbW1lbnQoZS50ZXh0KSx2KGksZS5lbG0sbykpOihlLmVsbT11LmNyZWF0ZVRleHROb2RlKGUudGV4dCksdihpLGUuZWxtLG8pKX19ZnVuY3Rpb24gZChlLHQpe24oZS5kYXRhLnBlbmRpbmdJbnNlcnQpJiYodC5wdXNoLmFwcGx5KHQsZS5kYXRhLnBlbmRpbmdJbnNlcnQpLGUuZGF0YS5wZW5kaW5nSW5zZXJ0PW51bGwpLGUuZWxtPWUuY29tcG9uZW50SW5zdGFuY2UuJGVsLG0oZSk\/KHkoZSx0KSxnKGUpKToodHIoZSksdC5wdXNoKGUpKX1mdW5jdGlvbiB2KGUsdCxyKXtuKGUpJiYobihyKT91LnBhcmVudE5vZGUocik9PT1lJiZ1Lmluc2VydEJlZm9yZShlLHQscik6dS5hcHBlbmRDaGlsZChlLHQpKX1mdW5jdGlvbiBoKGUsdCxuKXtpZihBcnJheS5pc0FycmF5KHQpKWZvcih2YXIgcj0wO3I8dC5sZW5ndGg7KytyKWYodFtyXSxuLGUuZWxtLG51bGwsITAsdCxyKTtlbHNlIGkoZS50ZXh0KSYmdS5hcHBlbmRDaGlsZChlLmVsbSx1LmNyZWF0ZVRleHROb2RlKFN0cmluZyhlLnRleHQpKSl9ZnVuY3Rpb24gbShlKXtmb3IoO2UuY29tcG9uZW50SW5zdGFuY2U7KWU9ZS5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGU7cmV0dXJuIG4oZS50YWcpfWZ1bmN0aW9uIHkoZSx0KXtmb3IodmFyIHI9MDtyPHMuY3JlYXRlLmxlbmd0aDsrK3Ipcy5jcmVhdGVbcl0obnIsZSk7bihvPWUuZGF0YS5ob29rKSYmKG4oby5jcmVhdGUpJiZvLmNyZWF0ZShucixlKSxuKG8uaW5zZXJ0KSYmdC5wdXNoKGUpKX1mdW5jdGlvbiBnKGUpe3ZhciB0O2lmKG4odD1lLmZuU2NvcGVJZCkpdS5zZXRTdHlsZVNjb3BlKGUuZWxtLHQpO2Vsc2UgZm9yKHZhciByPWU7cjspbih0PXIuY29udGV4dCkmJm4odD10LiRvcHRpb25zLl9zY29wZUlkKSYmdS5zZXRTdHlsZVNjb3BlKGUuZWxtLHQpLHI9ci5wYXJlbnQ7bih0PVd0KSYmdCE9PWUuY29udGV4dCYmdCE9PWUuZm5Db250ZXh0JiZuKHQ9dC4kb3B0aW9ucy5fc2NvcGVJZCkmJnUuc2V0U3R5bGVTY29wZShlLmVsbSx0KX1mdW5jdGlvbiBfKGUsdCxuLHIsaSxvKXtmb3IoO3I8PWk7KytyKWYobltyXSxvLGUsdCwhMSxuLHIpfWZ1bmN0aW9uIGIoZSl7dmFyIHQscixpPWUuZGF0YTtpZihuKGkpKWZvcihuKHQ9aS5ob29rKSYmbih0PXQuZGVzdHJveSkmJnQoZSksdD0wO3Q8cy5kZXN0cm95Lmxlbmd0aDsrK3Qpcy5kZXN0cm95W3RdKGUpO2lmKG4odD1lLmNoaWxkcmVuKSlmb3Iocj0wO3I8ZS5jaGlsZHJlbi5sZW5ndGg7KytyKWIoZS5jaGlsZHJlbltyXSl9ZnVuY3Rpb24gJChlLHQscil7Zm9yKDt0PD1yOysrdCl7dmFyIGk9ZVt0XTtuKGkpJiYobihpLnRhZyk\/KHcoaSksYihpKSk6bChpLmVsbSkpfX1mdW5jdGlvbiB3KGUsdCl7aWYobih0KXx8bihlLmRhdGEpKXt2YXIgcixpPXMucmVtb3ZlLmxlbmd0aCsxO2ZvcihuKHQpP3QubGlzdGVuZXJzKz1pOnQ9ZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBuKCl7MD09LS1uLmxpc3RlbmVycyYmbChlKX1yZXR1cm4gbi5saXN0ZW5lcnM9dCxufShlLmVsbSxpKSxuKHI9ZS5jb21wb25lbnRJbnN0YW5jZSkmJm4ocj1yLl92bm9kZSkmJm4oci5kYXRhKSYmdyhyLHQpLHI9MDtyPHMucmVtb3ZlLmxlbmd0aDsrK3Ipcy5yZW1vdmVbcl0oZSx0KTtuKHI9ZS5kYXRhLmhvb2spJiZuKHI9ci5yZW1vdmUpP3IoZSx0KTp0KCl9ZWxzZSBsKGUuZWxtKX1mdW5jdGlvbiBDKGUsdCxyLGkpe2Zvcih2YXIgbz1yO288aTtvKyspe3ZhciBhPXRbb107aWYobihhKSYmaXIoZSxhKSlyZXR1cm4gb319ZnVuY3Rpb24geChlLGksbyxhLGMsbCl7aWYoZSE9PWkpe24oaS5lbG0pJiZuKGEpJiYoaT1hW2NdPW1lKGkpKTt2YXIgcD1pLmVsbT1lLmVsbTtpZihyKGUuaXNBc3luY1BsYWNlaG9sZGVyKSluKGkuYXN5bmNGYWN0b3J5LnJlc29sdmVkKT9PKGUuZWxtLGksbyk6aS5pc0FzeW5jUGxhY2Vob2xkZXI9ITA7ZWxzZSBpZihyKGkuaXNTdGF0aWMpJiZyKGUuaXNTdGF0aWMpJiZpLmtleT09PWUua2V5JiYocihpLmlzQ2xvbmVkKXx8cihpLmlzT25jZSkpKWkuY29tcG9uZW50SW5zdGFuY2U9ZS5jb21wb25lbnRJbnN0YW5jZTtlbHNle3ZhciBkLHY9aS5kYXRhO24odikmJm4oZD12Lmhvb2spJiZuKGQ9ZC5wcmVwYXRjaCkmJmQoZSxpKTt2YXIgaD1lLmNoaWxkcmVuLHk9aS5jaGlsZHJlbjtpZihuKHYpJiZtKGkpKXtmb3IoZD0wO2Q8cy51cGRhdGUubGVuZ3RoOysrZClzLnVwZGF0ZVtkXShlLGkpO24oZD12Lmhvb2spJiZuKGQ9ZC51cGRhdGUpJiZkKGUsaSl9dChpLnRleHQpP24oaCkmJm4oeSk\/aCE9PXkmJmZ1bmN0aW9uKGUscixpLG8sYSl7Zm9yKHZhciBzLGMsbCxwPTAsZD0wLHY9ci5sZW5ndGgtMSxoPXJbMF0sbT1yW3ZdLHk9aS5sZW5ndGgtMSxnPWlbMF0sYj1pW3ldLHc9IWE7cDw9diYmZDw9eTspdChoKT9oPXJbKytwXTp0KG0pP209clstLXZdOmlyKGgsZyk\/KHgoaCxnLG8saSxkKSxoPXJbKytwXSxnPWlbKytkXSk6aXIobSxiKT8oeChtLGIsbyxpLHkpLG09clstLXZdLGI9aVstLXldKTppcihoLGIpPyh4KGgsYixvLGkseSksdyYmdS5pbnNlcnRCZWZvcmUoZSxoLmVsbSx1Lm5leHRTaWJsaW5nKG0uZWxtKSksaD1yWysrcF0sYj1pWy0teV0pOmlyKG0sZyk\/KHgobSxnLG8saSxkKSx3JiZ1Lmluc2VydEJlZm9yZShlLG0uZWxtLGguZWxtKSxtPXJbLS12XSxnPWlbKytkXSk6KHQocykmJihzPW9yKHIscCx2KSksdChjPW4oZy5rZXkpP3NbZy5rZXldOkMoZyxyLHAsdikpP2YoZyxvLGUsaC5lbG0sITEsaSxkKTppcihsPXJbY10sZyk\/KHgobCxnLG8saSxkKSxyW2NdPXZvaWQgMCx3JiZ1Lmluc2VydEJlZm9yZShlLGwuZWxtLGguZWxtKSk6ZihnLG8sZSxoLmVsbSwhMSxpLGQpLGc9aVsrK2RdKTtwPnY\/XyhlLHQoaVt5KzFdKT9udWxsOmlbeSsxXS5lbG0saSxkLHksbyk6ZD55JiYkKHIscCx2KX0ocCxoLHksbyxsKTpuKHkpPyhuKGUudGV4dCkmJnUuc2V0VGV4dENvbnRlbnQocCwiIiksXyhwLG51bGwseSwwLHkubGVuZ3RoLTEsbykpOm4oaCk\/JChoLDAsaC5sZW5ndGgtMSk6bihlLnRleHQpJiZ1LnNldFRleHRDb250ZW50KHAsIiIpOmUudGV4dCE9PWkudGV4dCYmdS5zZXRUZXh0Q29udGVudChwLGkudGV4dCksbih2KSYmbihkPXYuaG9vaykmJm4oZD1kLnBvc3RwYXRjaCkmJmQoZSxpKX19fWZ1bmN0aW9uIGsoZSx0LGkpe2lmKHIoaSkmJm4oZS5wYXJlbnQpKWUucGFyZW50LmRhdGEucGVuZGluZ0luc2VydD10O2Vsc2UgZm9yKHZhciBvPTA7bzx0Lmxlbmd0aDsrK28pdFtvXS5kYXRhLmhvb2suaW5zZXJ0KHRbb10pfXZhciBBPXAoImF0dHJzLGNsYXNzLHN0YXRpY0NsYXNzLHN0YXRpY1N0eWxlLGtleSIpO2Z1bmN0aW9uIE8oZSx0LGksbyl7dmFyIGEscz10LnRhZyxjPXQuZGF0YSx1PXQuY2hpbGRyZW47aWYobz1vfHxjJiZjLnByZSx0LmVsbT1lLHIodC5pc0NvbW1lbnQpJiZuKHQuYXN5bmNGYWN0b3J5KSlyZXR1cm4gdC5pc0FzeW5jUGxhY2Vob2xkZXI9ITAsITA7aWYobihjKSYmKG4oYT1jLmhvb2spJiZuKGE9YS5pbml0KSYmYSh0LCEwKSxuKGE9dC5jb21wb25lbnRJbnN0YW5jZSkpKXJldHVybiBkKHQsaSksITA7aWYobihzKSl7aWYobih1KSlpZihlLmhhc0NoaWxkTm9kZXMoKSlpZihuKGE9YykmJm4oYT1hLmRvbVByb3BzKSYmbihhPWEuaW5uZXJIVE1MKSl7aWYoYSE9PWUuaW5uZXJIVE1MKXJldHVybiExfWVsc2V7Zm9yKHZhciBsPSEwLGY9ZS5maXJzdENoaWxkLHA9MDtwPHUubGVuZ3RoO3ArKyl7aWYoIWZ8fCFPKGYsdVtwXSxpLG8pKXtsPSExO2JyZWFrfWY9Zi5uZXh0U2libGluZ31pZighbHx8ZilyZXR1cm4hMX1lbHNlIGgodCx1LGkpO2lmKG4oYykpe3ZhciB2PSExO2Zvcih2YXIgbSBpbiBjKWlmKCFBKG0pKXt2PSEwLHkodCxpKTticmVha30hdiYmYy5jbGFzcyYmZXQoYy5jbGFzcyl9fWVsc2UgZS5kYXRhIT09dC50ZXh0JiYoZS5kYXRhPXQudGV4dCk7cmV0dXJuITB9cmV0dXJuIGZ1bmN0aW9uKGUsaSxvLGEpe2lmKCF0KGkpKXt2YXIgYyxsPSExLHA9W107aWYodChlKSlsPSEwLGYoaSxwKTtlbHNle3ZhciBkPW4oZS5ub2RlVHlwZSk7aWYoIWQmJmlyKGUsaSkpeChlLGkscCxudWxsLG51bGwsYSk7ZWxzZXtpZihkKXtpZigxPT09ZS5ub2RlVHlwZSYmZS5oYXNBdHRyaWJ1dGUoTCkmJihlLnJlbW92ZUF0dHJpYnV0ZShMKSxvPSEwKSxyKG8pJiZPKGUsaSxwKSlyZXR1cm4gayhpLHAsITApLGU7Yz1lLGU9bmV3IHBlKHUudGFnTmFtZShjKS50b0xvd2VyQ2FzZSgpLHt9LFtdLHZvaWQgMCxjKX12YXIgdj1lLmVsbSxoPXUucGFyZW50Tm9kZSh2KTtpZihmKGkscCx2Ll9sZWF2ZUNiP251bGw6aCx1Lm5leHRTaWJsaW5nKHYpKSxuKGkucGFyZW50KSlmb3IodmFyIHk9aS5wYXJlbnQsZz1tKGkpO3k7KXtmb3IodmFyIF89MDtfPHMuZGVzdHJveS5sZW5ndGg7KytfKXMuZGVzdHJveVtfXSh5KTtpZih5LmVsbT1pLmVsbSxnKXtmb3IodmFyIHc9MDt3PHMuY3JlYXRlLmxlbmd0aDsrK3cpcy5jcmVhdGVbd10obnIseSk7dmFyIEM9eS5kYXRhLmhvb2suaW5zZXJ0O2lmKEMubWVyZ2VkKWZvcih2YXIgQT0xO0E8Qy5mbnMubGVuZ3RoO0ErKylDLmZuc1tBXSgpfWVsc2UgdHIoeSk7eT15LnBhcmVudH1uKGgpPyQoW2VdLDAsMCk6bihlLnRhZykmJmIoZSl9fXJldHVybiBrKGkscCxsKSxpLmVsbX1uKGUpJiZiKGUpfX0oe25vZGVPcHM6UW4sbW9kdWxlczpbbXIseHIsbmksb2ksbWksej97Y3JlYXRlOlVpLGFjdGl2YXRlOlVpLHJlbW92ZTpmdW5jdGlvbihlLHQpeyEwIT09ZS5kYXRhLnNob3c\/UmkoZSx0KTp0KCl9fTp7fV0uY29uY2F0KHByKX0pO1cmJmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInNlbGVjdGlvbmNoYW5nZSIsZnVuY3Rpb24oKXt2YXIgZT1kb2N1bWVudC5hY3RpdmVFbGVtZW50O2UmJmUudm1vZGVsJiZYaShlLCJpbnB1dCIpfSk7dmFyIFZpPXtpbnNlcnRlZDpmdW5jdGlvbihlLHQsbixyKXsic2VsZWN0Ij09PW4udGFnPyhyLmVsbSYmIXIuZWxtLl92T3B0aW9ucz9pdChuLCJwb3N0cGF0Y2giLGZ1bmN0aW9uKCl7VmkuY29tcG9uZW50VXBkYXRlZChlLHQsbil9KTpLaShlLHQsbi5jb250ZXh0KSxlLl92T3B0aW9ucz1bXS5tYXAuY2FsbChlLm9wdGlvbnMsV2kpKTooInRleHRhcmVhIj09PW4udGFnfHxYbihlLnR5cGUpKSYmKGUuX3ZNb2RpZmllcnM9dC5tb2RpZmllcnMsdC5tb2RpZmllcnMubGF6eXx8KGUuYWRkRXZlbnRMaXN0ZW5lcigiY29tcG9zaXRpb25zdGFydCIsWmkpLGUuYWRkRXZlbnRMaXN0ZW5lcigiY29tcG9zaXRpb25lbmQiLEdpKSxlLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsR2kpLFcmJihlLnZtb2RlbD0hMCkpKX0sY29tcG9uZW50VXBkYXRlZDpmdW5jdGlvbihlLHQsbil7aWYoInNlbGVjdCI9PT1uLnRhZyl7S2koZSx0LG4uY29udGV4dCk7dmFyIHI9ZS5fdk9wdGlvbnMsaT1lLl92T3B0aW9ucz1bXS5tYXAuY2FsbChlLm9wdGlvbnMsV2kpO2lmKGkuc29tZShmdW5jdGlvbihlLHQpe3JldHVybiFOKGUsclt0XSl9KSkoZS5tdWx0aXBsZT90LnZhbHVlLnNvbWUoZnVuY3Rpb24oZSl7cmV0dXJuIHFpKGUsaSl9KTp0LnZhbHVlIT09dC5vbGRWYWx1ZSYmcWkodC52YWx1ZSxpKSkmJlhpKGUsImNoYW5nZSIpfX19O2Z1bmN0aW9uIEtpKGUsdCxuKXtKaShlLHQsbiksKHF8fFopJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7SmkoZSx0LG4pfSwwKX1mdW5jdGlvbiBKaShlLHQsbil7dmFyIHI9dC52YWx1ZSxpPWUubXVsdGlwbGU7aWYoIWl8fEFycmF5LmlzQXJyYXkocikpe2Zvcih2YXIgbyxhLHM9MCxjPWUub3B0aW9ucy5sZW5ndGg7czxjO3MrKylpZihhPWUub3B0aW9uc1tzXSxpKW89aihyLFdpKGEpKT4tMSxhLnNlbGVjdGVkIT09byYmKGEuc2VsZWN0ZWQ9byk7ZWxzZSBpZihOKFdpKGEpLHIpKXJldHVybiB2b2lkKGUuc2VsZWN0ZWRJbmRleCE9PXMmJihlLnNlbGVjdGVkSW5kZXg9cykpO2l8fChlLnNlbGVjdGVkSW5kZXg9LTEpfX1mdW5jdGlvbiBxaShlLHQpe3JldHVybiB0LmV2ZXJ5KGZ1bmN0aW9uKHQpe3JldHVybiFOKHQsZSl9KX1mdW5jdGlvbiBXaShlKXtyZXR1cm4iX3ZhbHVlImluIGU\/ZS5fdmFsdWU6ZS52YWx1ZX1mdW5jdGlvbiBaaShlKXtlLnRhcmdldC5jb21wb3Npbmc9ITB9ZnVuY3Rpb24gR2koZSl7ZS50YXJnZXQuY29tcG9zaW5nJiYoZS50YXJnZXQuY29tcG9zaW5nPSExLFhpKGUudGFyZ2V0LCJpbnB1dCIpKX1mdW5jdGlvbiBYaShlLHQpe3ZhciBuPWRvY3VtZW50LmNyZWF0ZUV2ZW50KCJIVE1MRXZlbnRzIik7bi5pbml0RXZlbnQodCwhMCwhMCksZS5kaXNwYXRjaEV2ZW50KG4pfWZ1bmN0aW9uIFlpKGUpe3JldHVybiFlLmNvbXBvbmVudEluc3RhbmNlfHxlLmRhdGEmJmUuZGF0YS50cmFuc2l0aW9uP2U6WWkoZS5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGUpfXZhciBRaT17bW9kZWw6Vmksc2hvdzp7YmluZDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dC52YWx1ZSxpPShuPVlpKG4pKS5kYXRhJiZuLmRhdGEudHJhbnNpdGlvbixvPWUuX192T3JpZ2luYWxEaXNwbGF5PSJub25lIj09PWUuc3R5bGUuZGlzcGxheT8iIjplLnN0eWxlLmRpc3BsYXk7ciYmaT8obi5kYXRhLnNob3c9ITAsUGkobixmdW5jdGlvbigpe2Uuc3R5bGUuZGlzcGxheT1vfSkpOmUuc3R5bGUuZGlzcGxheT1yP286Im5vbmUifSx1cGRhdGU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXQudmFsdWU7IXIhPSF0Lm9sZFZhbHVlJiYoKG49WWkobikpLmRhdGEmJm4uZGF0YS50cmFuc2l0aW9uPyhuLmRhdGEuc2hvdz0hMCxyP1BpKG4sZnVuY3Rpb24oKXtlLnN0eWxlLmRpc3BsYXk9ZS5fX3ZPcmlnaW5hbERpc3BsYXl9KTpSaShuLGZ1bmN0aW9uKCl7ZS5zdHlsZS5kaXNwbGF5PSJub25lIn0pKTplLnN0eWxlLmRpc3BsYXk9cj9lLl9fdk9yaWdpbmFsRGlzcGxheToibm9uZSIpfSx1bmJpbmQ6ZnVuY3Rpb24oZSx0LG4scixpKXtpfHwoZS5zdHlsZS5kaXNwbGF5PWUuX192T3JpZ2luYWxEaXNwbGF5KX19fSxlbz17bmFtZTpTdHJpbmcsYXBwZWFyOkJvb2xlYW4sY3NzOkJvb2xlYW4sbW9kZTpTdHJpbmcsdHlwZTpTdHJpbmcsZW50ZXJDbGFzczpTdHJpbmcsbGVhdmVDbGFzczpTdHJpbmcsZW50ZXJUb0NsYXNzOlN0cmluZyxsZWF2ZVRvQ2xhc3M6U3RyaW5nLGVudGVyQWN0aXZlQ2xhc3M6U3RyaW5nLGxlYXZlQWN0aXZlQ2xhc3M6U3RyaW5nLGFwcGVhckNsYXNzOlN0cmluZyxhcHBlYXJBY3RpdmVDbGFzczpTdHJpbmcsYXBwZWFyVG9DbGFzczpTdHJpbmcsZHVyYXRpb246W051bWJlcixTdHJpbmcsT2JqZWN0XX07ZnVuY3Rpb24gdG8oZSl7dmFyIHQ9ZSYmZS5jb21wb25lbnRPcHRpb25zO3JldHVybiB0JiZ0LkN0b3Iub3B0aW9ucy5hYnN0cmFjdD90byh6dCh0LmNoaWxkcmVuKSk6ZX1mdW5jdGlvbiBubyhlKXt2YXIgdD17fSxuPWUuJG9wdGlvbnM7Zm9yKHZhciByIGluIG4ucHJvcHNEYXRhKXRbcl09ZVtyXTt2YXIgaT1uLl9wYXJlbnRMaXN0ZW5lcnM7Zm9yKHZhciBvIGluIGkpdFtiKG8pXT1pW29dO3JldHVybiB0fWZ1bmN0aW9uIHJvKGUsdCl7aWYoL1xkLWtlZXAtYWxpdmUkLy50ZXN0KHQudGFnKSlyZXR1cm4gZSgia2VlcC1hbGl2ZSIse3Byb3BzOnQuY29tcG9uZW50T3B0aW9ucy5wcm9wc0RhdGF9KX12YXIgaW89ZnVuY3Rpb24oZSl7cmV0dXJuIGUudGFnfHxVdChlKX0sb289ZnVuY3Rpb24oZSl7cmV0dXJuInNob3ciPT09ZS5uYW1lfSxhbz17bmFtZToidHJhbnNpdGlvbiIscHJvcHM6ZW8sYWJzdHJhY3Q6ITAscmVuZGVyOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj10aGlzLiRzbG90cy5kZWZhdWx0O2lmKG4mJihuPW4uZmlsdGVyKGlvKSkubGVuZ3RoKXt2YXIgcj10aGlzLm1vZGUsbz1uWzBdO2lmKGZ1bmN0aW9uKGUpe2Zvcig7ZT1lLnBhcmVudDspaWYoZS5kYXRhLnRyYW5zaXRpb24pcmV0dXJuITB9KHRoaXMuJHZub2RlKSlyZXR1cm4gbzt2YXIgYT10byhvKTtpZighYSlyZXR1cm4gbztpZih0aGlzLl9sZWF2aW5nKXJldHVybiBybyhlLG8pO3ZhciBzPSJfX3RyYW5zaXRpb24tIit0aGlzLl91aWQrIi0iO2Eua2V5PW51bGw9PWEua2V5P2EuaXNDb21tZW50P3MrImNvbW1lbnQiOnMrYS50YWc6aShhLmtleSk\/MD09PVN0cmluZyhhLmtleSkuaW5kZXhPZihzKT9hLmtleTpzK2Eua2V5OmEua2V5O3ZhciBjPShhLmRhdGF8fChhLmRhdGE9e30pKS50cmFuc2l0aW9uPW5vKHRoaXMpLHU9dGhpcy5fdm5vZGUsbD10byh1KTtpZihhLmRhdGEuZGlyZWN0aXZlcyYmYS5kYXRhLmRpcmVjdGl2ZXMuc29tZShvbykmJihhLmRhdGEuc2hvdz0hMCksbCYmbC5kYXRhJiYhZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC5rZXk9PT1lLmtleSYmdC50YWc9PT1lLnRhZ30oYSxsKSYmIVV0KGwpJiYoIWwuY29tcG9uZW50SW5zdGFuY2V8fCFsLmNvbXBvbmVudEluc3RhbmNlLl92bm9kZS5pc0NvbW1lbnQpKXt2YXIgZj1sLmRhdGEudHJhbnNpdGlvbj1BKHt9LGMpO2lmKCJvdXQtaW4iPT09cilyZXR1cm4gdGhpcy5fbGVhdmluZz0hMCxpdChmLCJhZnRlckxlYXZlIixmdW5jdGlvbigpe3QuX2xlYXZpbmc9ITEsdC4kZm9yY2VVcGRhdGUoKX0pLHJvKGUsbyk7aWYoImluLW91dCI9PT1yKXtpZihVdChhKSlyZXR1cm4gdTt2YXIgcCxkPWZ1bmN0aW9uKCl7cCgpfTtpdChjLCJhZnRlckVudGVyIixkKSxpdChjLCJlbnRlckNhbmNlbGxlZCIsZCksaXQoZiwiZGVsYXlMZWF2ZSIsZnVuY3Rpb24oZSl7cD1lfSl9fXJldHVybiBvfX19LHNvPUEoe3RhZzpTdHJpbmcsbW92ZUNsYXNzOlN0cmluZ30sZW8pO2Z1bmN0aW9uIGNvKGUpe2UuZWxtLl9tb3ZlQ2ImJmUuZWxtLl9tb3ZlQ2IoKSxlLmVsbS5fZW50ZXJDYiYmZS5lbG0uX2VudGVyQ2IoKX1mdW5jdGlvbiB1byhlKXtlLmRhdGEubmV3UG9zPWUuZWxtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpfWZ1bmN0aW9uIGxvKGUpe3ZhciB0PWUuZGF0YS5wb3Msbj1lLmRhdGEubmV3UG9zLHI9dC5sZWZ0LW4ubGVmdCxpPXQudG9wLW4udG9wO2lmKHJ8fGkpe2UuZGF0YS5tb3ZlZD0hMDt2YXIgbz1lLmVsbS5zdHlsZTtvLnRyYW5zZm9ybT1vLldlYmtpdFRyYW5zZm9ybT0idHJhbnNsYXRlKCIrcisicHgsIitpKyJweCkiLG8udHJhbnNpdGlvbkR1cmF0aW9uPSIwcyJ9fWRlbGV0ZSBzby5tb2RlO3ZhciBmbz17VHJhbnNpdGlvbjphbyxUcmFuc2l0aW9uR3JvdXA6e3Byb3BzOnNvLGJlZm9yZU1vdW50OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMuX3VwZGF0ZTt0aGlzLl91cGRhdGU9ZnVuY3Rpb24obixyKXt2YXIgaT1adChlKTtlLl9fcGF0Y2hfXyhlLl92bm9kZSxlLmtlcHQsITEsITApLGUuX3Zub2RlPWUua2VwdCxpKCksdC5jYWxsKGUsbixyKX19LHJlbmRlcjpmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy50YWd8fHRoaXMuJHZub2RlLmRhdGEudGFnfHwic3BhbiIsbj1PYmplY3QuY3JlYXRlKG51bGwpLHI9dGhpcy5wcmV2Q2hpbGRyZW49dGhpcy5jaGlsZHJlbixpPXRoaXMuJHNsb3RzLmRlZmF1bHR8fFtdLG89dGhpcy5jaGlsZHJlbj1bXSxhPW5vKHRoaXMpLHM9MDtzPGkubGVuZ3RoO3MrKyl7dmFyIGM9aVtzXTtjLnRhZyYmbnVsbCE9Yy5rZXkmJjAhPT1TdHJpbmcoYy5rZXkpLmluZGV4T2YoIl9fdmxpc3QiKSYmKG8ucHVzaChjKSxuW2Mua2V5XT1jLChjLmRhdGF8fChjLmRhdGE9e30pKS50cmFuc2l0aW9uPWEpfWlmKHIpe2Zvcih2YXIgdT1bXSxsPVtdLGY9MDtmPHIubGVuZ3RoO2YrKyl7dmFyIHA9cltmXTtwLmRhdGEudHJhbnNpdGlvbj1hLHAuZGF0YS5wb3M9cC5lbG0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbltwLmtleV0\/dS5wdXNoKHApOmwucHVzaChwKX10aGlzLmtlcHQ9ZSh0LG51bGwsdSksdGhpcy5yZW1vdmVkPWx9cmV0dXJuIGUodCxudWxsLG8pfSx1cGRhdGVkOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcmV2Q2hpbGRyZW4sdD10aGlzLm1vdmVDbGFzc3x8KHRoaXMubmFtZXx8InYiKSsiLW1vdmUiO2UubGVuZ3RoJiZ0aGlzLmhhc01vdmUoZVswXS5lbG0sdCkmJihlLmZvckVhY2goY28pLGUuZm9yRWFjaCh1byksZS5mb3JFYWNoKGxvKSx0aGlzLl9yZWZsb3c9ZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQsZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2lmKGUuZGF0YS5tb3ZlZCl7dmFyIG49ZS5lbG0scj1uLnN0eWxlO05pKG4sdCksci50cmFuc2Zvcm09ci5XZWJraXRUcmFuc2Zvcm09ci50cmFuc2l0aW9uRHVyYXRpb249IiIsbi5hZGRFdmVudExpc3RlbmVyKEFpLG4uX21vdmVDYj1mdW5jdGlvbiBlKHIpe3ImJnIudGFyZ2V0IT09bnx8ciYmIS90cmFuc2Zvcm0kLy50ZXN0KHIucHJvcGVydHlOYW1lKXx8KG4ucmVtb3ZlRXZlbnRMaXN0ZW5lcihBaSxlKSxuLl9tb3ZlQ2I9bnVsbCxqaShuLHQpKX0pfX0pKX0sbWV0aG9kczp7aGFzTW92ZTpmdW5jdGlvbihlLHQpe2lmKCF3aSlyZXR1cm4hMTtpZih0aGlzLl9oYXNNb3ZlKXJldHVybiB0aGlzLl9oYXNNb3ZlO3ZhciBuPWUuY2xvbmVOb2RlKCk7ZS5fdHJhbnNpdGlvbkNsYXNzZXMmJmUuX3RyYW5zaXRpb25DbGFzc2VzLmZvckVhY2goZnVuY3Rpb24oZSl7X2kobixlKX0pLGdpKG4sdCksbi5zdHlsZS5kaXNwbGF5PSJub25lIix0aGlzLiRlbC5hcHBlbmRDaGlsZChuKTt2YXIgcj1NaShuKTtyZXR1cm4gdGhpcy4kZWwucmVtb3ZlQ2hpbGQobiksdGhpcy5faGFzTW92ZT1yLmhhc1RyYW5zZm9ybX19fX07d24uY29uZmlnLm11c3RVc2VQcm9wPWpuLHduLmNvbmZpZy5pc1Jlc2VydmVkVGFnPVduLHduLmNvbmZpZy5pc1Jlc2VydmVkQXR0cj1Fbix3bi5jb25maWcuZ2V0VGFnTmFtZXNwYWNlPVpuLHduLmNvbmZpZy5pc1Vua25vd25FbGVtZW50PWZ1bmN0aW9uKGUpe2lmKCF6KXJldHVybiEwO2lmKFduKGUpKXJldHVybiExO2lmKGU9ZS50b0xvd2VyQ2FzZSgpLG51bGwhPUduW2VdKXJldHVybiBHbltlXTt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KGUpO3JldHVybiBlLmluZGV4T2YoIi0iKT4tMT9HbltlXT10LmNvbnN0cnVjdG9yPT09d2luZG93LkhUTUxVbmtub3duRWxlbWVudHx8dC5jb25zdHJ1Y3Rvcj09PXdpbmRvdy5IVE1MRWxlbWVudDpHbltlXT0vSFRNTFVua25vd25FbGVtZW50Ly50ZXN0KHQudG9TdHJpbmcoKSl9LEEod24ub3B0aW9ucy5kaXJlY3RpdmVzLFFpKSxBKHduLm9wdGlvbnMuY29tcG9uZW50cyxmbyksd24ucHJvdG90eXBlLl9fcGF0Y2hfXz16P3ppOlMsd24ucHJvdG90eXBlLiRtb3VudD1mdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihlLHQsbil7dmFyIHI7cmV0dXJuIGUuJGVsPXQsZS4kb3B0aW9ucy5yZW5kZXJ8fChlLiRvcHRpb25zLnJlbmRlcj12ZSksWXQoZSwiYmVmb3JlTW91bnQiKSxyPWZ1bmN0aW9uKCl7ZS5fdXBkYXRlKGUuX3JlbmRlcigpLG4pfSxuZXcgZm4oZSxyLFMse2JlZm9yZTpmdW5jdGlvbigpe2UuX2lzTW91bnRlZCYmIWUuX2lzRGVzdHJveWVkJiZZdChlLCJiZWZvcmVVcGRhdGUiKX19LCEwKSxuPSExLG51bGw9PWUuJHZub2RlJiYoZS5faXNNb3VudGVkPSEwLFl0KGUsIm1vdW50ZWQiKSksZX0odGhpcyxlPWUmJno\/WW4oZSk6dm9pZCAwLHQpfSx6JiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Ri5kZXZ0b29scyYmbmUmJm5lLmVtaXQoImluaXQiLHduKX0sMCk7dmFyIHBvPS9ce1x7KCg\/Oi58XHI\/XG4pKz8pXH1cfS9nLHZvPS9bLS4qKz9eJHt9KCl8W1xdXC9cXF0vZyxobz1nKGZ1bmN0aW9uKGUpe3ZhciB0PWVbMF0ucmVwbGFjZSh2bywiXFwkJiIpLG49ZVsxXS5yZXBsYWNlKHZvLCJcXCQmIik7cmV0dXJuIG5ldyBSZWdFeHAodCsiKCg\/Oi58XFxuKSs\/KSIrbiwiZyIpfSk7dmFyIG1vPXtzdGF0aWNLZXlzOlsic3RhdGljQ2xhc3MiXSx0cmFuc2Zvcm1Ob2RlOmZ1bmN0aW9uKGUsdCl7dC53YXJuO3ZhciBuPUZyKGUsImNsYXNzIik7biYmKGUuc3RhdGljQ2xhc3M9SlNPTi5zdHJpbmdpZnkobikpO3ZhciByPUlyKGUsImNsYXNzIiwhMSk7ciYmKGUuY2xhc3NCaW5kaW5nPXIpfSxnZW5EYXRhOmZ1bmN0aW9uKGUpe3ZhciB0PSIiO3JldHVybiBlLnN0YXRpY0NsYXNzJiYodCs9InN0YXRpY0NsYXNzOiIrZS5zdGF0aWNDbGFzcysiLCIpLGUuY2xhc3NCaW5kaW5nJiYodCs9ImNsYXNzOiIrZS5jbGFzc0JpbmRpbmcrIiwiKSx0fX07dmFyIHlvLGdvPXtzdGF0aWNLZXlzOlsic3RhdGljU3R5bGUiXSx0cmFuc2Zvcm1Ob2RlOmZ1bmN0aW9uKGUsdCl7dC53YXJuO3ZhciBuPUZyKGUsInN0eWxlIik7biYmKGUuc3RhdGljU3R5bGU9SlNPTi5zdHJpbmdpZnkoYWkobikpKTt2YXIgcj1JcihlLCJzdHlsZSIsITEpO3ImJihlLnN0eWxlQmluZGluZz1yKX0sZ2VuRGF0YTpmdW5jdGlvbihlKXt2YXIgdD0iIjtyZXR1cm4gZS5zdGF0aWNTdHlsZSYmKHQrPSJzdGF0aWNTdHlsZToiK2Uuc3RhdGljU3R5bGUrIiwiKSxlLnN0eWxlQmluZGluZyYmKHQrPSJzdHlsZTooIitlLnN0eWxlQmluZGluZysiKSwiKSx0fX0sX289ZnVuY3Rpb24oZSl7cmV0dXJuKHlvPXlvfHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSkuaW5uZXJIVE1MPWUseW8udGV4dENvbnRlbnR9LGJvPXAoImFyZWEsYmFzZSxicixjb2wsZW1iZWQsZnJhbWUsaHIsaW1nLGlucHV0LGlzaW5kZXgsa2V5Z2VuLGxpbmssbWV0YSxwYXJhbSxzb3VyY2UsdHJhY2ssd2JyIiksJG89cCgiY29sZ3JvdXAsZGQsZHQsbGksb3B0aW9ucyxwLHRkLHRmb290LHRoLHRoZWFkLHRyLHNvdXJjZSIpLHdvPXAoImFkZHJlc3MsYXJ0aWNsZSxhc2lkZSxiYXNlLGJsb2NrcXVvdGUsYm9keSxjYXB0aW9uLGNvbCxjb2xncm91cCxkZCxkZXRhaWxzLGRpYWxvZyxkaXYsZGwsZHQsZmllbGRzZXQsZmlnY2FwdGlvbixmaWd1cmUsZm9vdGVyLGZvcm0saDEsaDIsaDMsaDQsaDUsaDYsaGVhZCxoZWFkZXIsaGdyb3VwLGhyLGh0bWwsbGVnZW5kLGxpLG1lbnVpdGVtLG1ldGEsb3B0Z3JvdXAsb3B0aW9uLHBhcmFtLHJwLHJ0LHNvdXJjZSxzdHlsZSxzdW1tYXJ5LHRib2R5LHRkLHRmb290LHRoLHRoZWFkLHRpdGxlLHRyLHRyYWNrIiksQ289L15ccyooW15ccyInPD5cLz1dKykoPzpccyooPSlccyooPzoiKFteIl0qKSIrfCcoW14nXSopJyt8KFteXHMiJz08PmBdKykpKT8vLHhvPS9eXHMqKCg\/OnYtW1x3LV0rOnxAfDp8IylcW1tePV0rXF1bXlxzIic8PlwvPV0qKSg\/OlxzKig9KVxzKig\/OiIoW14iXSopIit8JyhbXiddKiknK3woW15ccyInPTw+YF0rKSkpPy8sa289IlthLXpBLVpfXVtcXC1cXC4wLTlfYS16QS1aIitQLnNvdXJjZSsiXSoiLEFvPSIoKD86IitrbysiXFw6KT8iK2tvKyIpIixPbz1uZXcgUmVnRXhwKCJePCIrQW8pLFNvPS9eXHMqKFwvPyk+LyxUbz1uZXcgUmVnRXhwKCJePFxcLyIrQW8rIltePl0qPiIpLEVvPS9ePCFET0NUWVBFIFtePl0rPi9pLE5vPS9ePCFcLS0vLGpvPS9ePCFcWy8sRG89cCgic2NyaXB0LHN0eWxlLHRleHRhcmVhIiwhMCksTG89e30sTW89eyImbHQ7IjoiPCIsIiZndDsiOiI+IiwiJnF1b3Q7IjonIicsIiZhbXA7IjoiJiIsIiYjMTA7IjoiXG4iLCImIzk7IjoiXHQiLCImIzM5OyI6IicifSxJbz0vJig\/Omx0fGd0fHF1b3R8YW1wfCMzOSk7L2csRm89LyYoPzpsdHxndHxxdW90fGFtcHwjMzl8IzEwfCM5KTsvZyxQbz1wKCJwcmUsdGV4dGFyZWEiLCEwKSxSbz1mdW5jdGlvbihlLHQpe3JldHVybiBlJiZQbyhlKSYmIlxuIj09PXRbMF19O2Z1bmN0aW9uIEhvKGUsdCl7dmFyIG49dD9GbzpJbztyZXR1cm4gZS5yZXBsYWNlKG4sZnVuY3Rpb24oZSl7cmV0dXJuIE1vW2VdfSl9dmFyIEJvLFVvLHpvLFZvLEtvLEpvLHFvLFdvLFpvPS9eQHxedi1vbjovLEdvPS9edi18XkB8Xjp8XiMvLFhvPS8oW1xzXFNdKj8pXHMrKD86aW58b2YpXHMrKFtcc1xTXSopLyxZbz0vLChbXixcfVxdXSopKD86LChbXixcfVxdXSopKT8kLyxRbz0vXlwofFwpJC9nLGVhPS9eXFsuKlxdJC8sdGE9LzooLiopJC8sbmE9L146fF5cLnxedi1iaW5kOi8scmE9L1wuW14uXF1dKyg\/PVteXF1dKiQpL2csaWE9L152LXNsb3QoOnwkKXxeIy8sb2E9L1tcclxuXS8sYWE9L1xzKy9nLHNhPWcoX28pLGNhPSJfZW1wdHlfIjtmdW5jdGlvbiB1YShlLHQsbil7cmV0dXJue3R5cGU6MSx0YWc6ZSxhdHRyc0xpc3Q6dCxhdHRyc01hcDptYSh0KSxyYXdBdHRyc01hcDp7fSxwYXJlbnQ6bixjaGlsZHJlbjpbXX19ZnVuY3Rpb24gbGEoZSx0KXtCbz10Lndhcm58fFNyLEpvPXQuaXNQcmVUYWd8fFQscW89dC5tdXN0VXNlUHJvcHx8VCxXbz10LmdldFRhZ05hbWVzcGFjZXx8VDt0LmlzUmVzZXJ2ZWRUYWc7em89VHIodC5tb2R1bGVzLCJ0cmFuc2Zvcm1Ob2RlIiksVm89VHIodC5tb2R1bGVzLCJwcmVUcmFuc2Zvcm1Ob2RlIiksS289VHIodC5tb2R1bGVzLCJwb3N0VHJhbnNmb3JtTm9kZSIpLFVvPXQuZGVsaW1pdGVyczt2YXIgbixyLGk9W10sbz0hMSE9PXQucHJlc2VydmVXaGl0ZXNwYWNlLGE9dC53aGl0ZXNwYWNlLHM9ITEsYz0hMTtmdW5jdGlvbiB1KGUpe2lmKGwoZSksc3x8ZS5wcm9jZXNzZWR8fChlPWZhKGUsdCkpLGkubGVuZ3RofHxlPT09bnx8bi5pZiYmKGUuZWxzZWlmfHxlLmVsc2UpJiZkYShuLHtleHA6ZS5lbHNlaWYsYmxvY2s6ZX0pLHImJiFlLmZvcmJpZGRlbilpZihlLmVsc2VpZnx8ZS5lbHNlKWE9ZSwodT1mdW5jdGlvbihlKXt2YXIgdD1lLmxlbmd0aDtmb3IoO3QtLTspe2lmKDE9PT1lW3RdLnR5cGUpcmV0dXJuIGVbdF07ZS5wb3AoKX19KHIuY2hpbGRyZW4pKSYmdS5pZiYmZGEodSx7ZXhwOmEuZWxzZWlmLGJsb2NrOmF9KTtlbHNle2lmKGUuc2xvdFNjb3BlKXt2YXIgbz1lLnNsb3RUYXJnZXR8fCciZGVmYXVsdCInOyhyLnNjb3BlZFNsb3RzfHwoci5zY29wZWRTbG90cz17fSkpW29dPWV9ci5jaGlsZHJlbi5wdXNoKGUpLGUucGFyZW50PXJ9dmFyIGEsdTtlLmNoaWxkcmVuPWUuY2hpbGRyZW4uZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLnNsb3RTY29wZX0pLGwoZSksZS5wcmUmJihzPSExKSxKbyhlLnRhZykmJihjPSExKTtmb3IodmFyIGY9MDtmPEtvLmxlbmd0aDtmKyspS29bZl0oZSx0KX1mdW5jdGlvbiBsKGUpe2lmKCFjKWZvcih2YXIgdDsodD1lLmNoaWxkcmVuW2UuY2hpbGRyZW4ubGVuZ3RoLTFdKSYmMz09PXQudHlwZSYmIiAiPT09dC50ZXh0OyllLmNoaWxkcmVuLnBvcCgpfXJldHVybiBmdW5jdGlvbihlLHQpe2Zvcih2YXIgbixyLGk9W10sbz10LmV4cGVjdEhUTUwsYT10LmlzVW5hcnlUYWd8fFQscz10LmNhbkJlTGVmdE9wZW5UYWd8fFQsYz0wO2U7KXtpZihuPWUsciYmRG8ocikpe3ZhciB1PTAsbD1yLnRvTG93ZXJDYXNlKCksZj1Mb1tsXXx8KExvW2xdPW5ldyBSZWdFeHAoIihbXFxzXFxTXSo\/KSg8LyIrbCsiW14+XSo+KSIsImkiKSkscD1lLnJlcGxhY2UoZixmdW5jdGlvbihlLG4scil7cmV0dXJuIHU9ci5sZW5ndGgsRG8obCl8fCJub3NjcmlwdCI9PT1sfHwobj1uLnJlcGxhY2UoLzwhXC0tKFtcc1xTXSo\/KS0tPi9nLCIkMSIpLnJlcGxhY2UoLzwhXFtDREFUQVxbKFtcc1xTXSo\/KV1dPi9nLCIkMSIpKSxSbyhsLG4pJiYobj1uLnNsaWNlKDEpKSx0LmNoYXJzJiZ0LmNoYXJzKG4pLCIifSk7Yys9ZS5sZW5ndGgtcC5sZW5ndGgsZT1wLEEobCxjLXUsYyl9ZWxzZXt2YXIgZD1lLmluZGV4T2YoIjwiKTtpZigwPT09ZCl7aWYoTm8udGVzdChlKSl7dmFyIHY9ZS5pbmRleE9mKCItLVx4M2UiKTtpZih2Pj0wKXt0LnNob3VsZEtlZXBDb21tZW50JiZ0LmNvbW1lbnQoZS5zdWJzdHJpbmcoNCx2KSxjLGMrdiszKSxDKHYrMyk7Y29udGludWV9fWlmKGpvLnRlc3QoZSkpe3ZhciBoPWUuaW5kZXhPZigiXT4iKTtpZihoPj0wKXtDKGgrMik7Y29udGludWV9fXZhciBtPWUubWF0Y2goRW8pO2lmKG0pe0MobVswXS5sZW5ndGgpO2NvbnRpbnVlfXZhciB5PWUubWF0Y2goVG8pO2lmKHkpe3ZhciBnPWM7Qyh5WzBdLmxlbmd0aCksQSh5WzFdLGcsYyk7Y29udGludWV9dmFyIF89eCgpO2lmKF8pe2soXyksUm8oXy50YWdOYW1lLGUpJiZDKDEpO2NvbnRpbnVlfX12YXIgYj12b2lkIDAsJD12b2lkIDAsdz12b2lkIDA7aWYoZD49MCl7Zm9yKCQ9ZS5zbGljZShkKTshKFRvLnRlc3QoJCl8fE9vLnRlc3QoJCl8fE5vLnRlc3QoJCl8fGpvLnRlc3QoJCl8fCh3PSQuaW5kZXhPZigiPCIsMSkpPDApOylkKz13LCQ9ZS5zbGljZShkKTtiPWUuc3Vic3RyaW5nKDAsZCl9ZDwwJiYoYj1lKSxiJiZDKGIubGVuZ3RoKSx0LmNoYXJzJiZiJiZ0LmNoYXJzKGIsYy1iLmxlbmd0aCxjKX1pZihlPT09bil7dC5jaGFycyYmdC5jaGFycyhlKTticmVha319ZnVuY3Rpb24gQyh0KXtjKz10LGU9ZS5zdWJzdHJpbmcodCl9ZnVuY3Rpb24geCgpe3ZhciB0PWUubWF0Y2goT28pO2lmKHQpe3ZhciBuLHIsaT17dGFnTmFtZTp0WzFdLGF0dHJzOltdLHN0YXJ0OmN9O2ZvcihDKHRbMF0ubGVuZ3RoKTshKG49ZS5tYXRjaChTbykpJiYocj1lLm1hdGNoKHhvKXx8ZS5tYXRjaChDbykpOylyLnN0YXJ0PWMsQyhyWzBdLmxlbmd0aCksci5lbmQ9YyxpLmF0dHJzLnB1c2gocik7aWYobilyZXR1cm4gaS51bmFyeVNsYXNoPW5bMV0sQyhuWzBdLmxlbmd0aCksaS5lbmQ9YyxpfX1mdW5jdGlvbiBrKGUpe3ZhciBuPWUudGFnTmFtZSxjPWUudW5hcnlTbGFzaDtvJiYoInAiPT09ciYmd28obikmJkEocikscyhuKSYmcj09PW4mJkEobikpO2Zvcih2YXIgdT1hKG4pfHwhIWMsbD1lLmF0dHJzLmxlbmd0aCxmPW5ldyBBcnJheShsKSxwPTA7cDxsO3ArKyl7dmFyIGQ9ZS5hdHRyc1twXSx2PWRbM118fGRbNF18fGRbNV18fCIiLGg9ImEiPT09biYmImhyZWYiPT09ZFsxXT90LnNob3VsZERlY29kZU5ld2xpbmVzRm9ySHJlZjp0LnNob3VsZERlY29kZU5ld2xpbmVzO2ZbcF09e25hbWU6ZFsxXSx2YWx1ZTpIbyh2LGgpfX11fHwoaS5wdXNoKHt0YWc6bixsb3dlckNhc2VkVGFnOm4udG9Mb3dlckNhc2UoKSxhdHRyczpmLHN0YXJ0OmUuc3RhcnQsZW5kOmUuZW5kfSkscj1uKSx0LnN0YXJ0JiZ0LnN0YXJ0KG4sZix1LGUuc3RhcnQsZS5lbmQpfWZ1bmN0aW9uIEEoZSxuLG8pe3ZhciBhLHM7aWYobnVsbD09biYmKG49YyksbnVsbD09byYmKG89YyksZSlmb3Iocz1lLnRvTG93ZXJDYXNlKCksYT1pLmxlbmd0aC0xO2E+PTAmJmlbYV0ubG93ZXJDYXNlZFRhZyE9PXM7YS0tKTtlbHNlIGE9MDtpZihhPj0wKXtmb3IodmFyIHU9aS5sZW5ndGgtMTt1Pj1hO3UtLSl0LmVuZCYmdC5lbmQoaVt1XS50YWcsbixvKTtpLmxlbmd0aD1hLHI9YSYmaVthLTFdLnRhZ31lbHNlImJyIj09PXM\/dC5zdGFydCYmdC5zdGFydChlLFtdLCEwLG4sbyk6InAiPT09cyYmKHQuc3RhcnQmJnQuc3RhcnQoZSxbXSwhMSxuLG8pLHQuZW5kJiZ0LmVuZChlLG4sbykpfUEoKX0oZSx7d2FybjpCbyxleHBlY3RIVE1MOnQuZXhwZWN0SFRNTCxpc1VuYXJ5VGFnOnQuaXNVbmFyeVRhZyxjYW5CZUxlZnRPcGVuVGFnOnQuY2FuQmVMZWZ0T3BlblRhZyxzaG91bGREZWNvZGVOZXdsaW5lczp0LnNob3VsZERlY29kZU5ld2xpbmVzLHNob3VsZERlY29kZU5ld2xpbmVzRm9ySHJlZjp0LnNob3VsZERlY29kZU5ld2xpbmVzRm9ySHJlZixzaG91bGRLZWVwQ29tbWVudDp0LmNvbW1lbnRzLG91dHB1dFNvdXJjZVJhbmdlOnQub3V0cHV0U291cmNlUmFuZ2Usc3RhcnQ6ZnVuY3Rpb24oZSxvLGEsbCxmKXt2YXIgcD1yJiZyLm5zfHxXbyhlKTtxJiYic3ZnIj09PXAmJihvPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciByPWVbbl07eWEudGVzdChyLm5hbWUpfHwoci5uYW1lPXIubmFtZS5yZXBsYWNlKGdhLCIiKSx0LnB1c2gocikpfXJldHVybiB0fShvKSk7dmFyIGQsdj11YShlLG8scik7cCYmKHYubnM9cCksInN0eWxlIiE9PShkPXYpLnRhZyYmKCJzY3JpcHQiIT09ZC50YWd8fGQuYXR0cnNNYXAudHlwZSYmInRleHQvamF2YXNjcmlwdCIhPT1kLmF0dHJzTWFwLnR5cGUpfHx0ZSgpfHwodi5mb3JiaWRkZW49ITApO2Zvcih2YXIgaD0wO2g8Vm8ubGVuZ3RoO2grKyl2PVZvW2hdKHYsdCl8fHY7c3x8KCFmdW5jdGlvbihlKXtudWxsIT1GcihlLCJ2LXByZSIpJiYoZS5wcmU9ITApfSh2KSx2LnByZSYmKHM9ITApKSxKbyh2LnRhZykmJihjPSEwKSxzP2Z1bmN0aW9uKGUpe3ZhciB0PWUuYXR0cnNMaXN0LG49dC5sZW5ndGg7aWYobilmb3IodmFyIHI9ZS5hdHRycz1uZXcgQXJyYXkobiksaT0wO2k8bjtpKyspcltpXT17bmFtZTp0W2ldLm5hbWUsdmFsdWU6SlNPTi5zdHJpbmdpZnkodFtpXS52YWx1ZSl9LG51bGwhPXRbaV0uc3RhcnQmJihyW2ldLnN0YXJ0PXRbaV0uc3RhcnQscltpXS5lbmQ9dFtpXS5lbmQpO2Vsc2UgZS5wcmV8fChlLnBsYWluPSEwKX0odik6di5wcm9jZXNzZWR8fChwYSh2KSxmdW5jdGlvbihlKXt2YXIgdD1GcihlLCJ2LWlmIik7aWYodCllLmlmPXQsZGEoZSx7ZXhwOnQsYmxvY2s6ZX0pO2Vsc2V7bnVsbCE9RnIoZSwidi1lbHNlIikmJihlLmVsc2U9ITApO3ZhciBuPUZyKGUsInYtZWxzZS1pZiIpO24mJihlLmVsc2VpZj1uKX19KHYpLGZ1bmN0aW9uKGUpe251bGwhPUZyKGUsInYtb25jZSIpJiYoZS5vbmNlPSEwKX0odikpLG58fChuPXYpLGE\/dSh2KToocj12LGkucHVzaCh2KSl9LGVuZDpmdW5jdGlvbihlLHQsbil7dmFyIG89aVtpLmxlbmd0aC0xXTtpLmxlbmd0aC09MSxyPWlbaS5sZW5ndGgtMV0sdShvKX0sY2hhcnM6ZnVuY3Rpb24oZSx0LG4pe2lmKHImJighcXx8InRleHRhcmVhIiE9PXIudGFnfHxyLmF0dHJzTWFwLnBsYWNlaG9sZGVyIT09ZSkpe3ZhciBpLHUsbCxmPXIuY2hpbGRyZW47aWYoZT1jfHxlLnRyaW0oKT8ic2NyaXB0Ij09PShpPXIpLnRhZ3x8InN0eWxlIj09PWkudGFnP2U6c2EoZSk6Zi5sZW5ndGg\/YT8iY29uZGVuc2UiPT09YSYmb2EudGVzdChlKT8iIjoiICI6bz8iICI6IiI6IiIpY3x8ImNvbmRlbnNlIiE9PWF8fChlPWUucmVwbGFjZShhYSwiICIpKSwhcyYmIiAiIT09ZSYmKHU9ZnVuY3Rpb24oZSx0KXt2YXIgbj10P2hvKHQpOnBvO2lmKG4udGVzdChlKSl7Zm9yKHZhciByLGksbyxhPVtdLHM9W10sYz1uLmxhc3RJbmRleD0wO3I9bi5leGVjKGUpOyl7KGk9ci5pbmRleCk+YyYmKHMucHVzaChvPWUuc2xpY2UoYyxpKSksYS5wdXNoKEpTT04uc3RyaW5naWZ5KG8pKSk7dmFyIHU9QXIoclsxXS50cmltKCkpO2EucHVzaCgiX3MoIit1KyIpIikscy5wdXNoKHsiQGJpbmRpbmciOnV9KSxjPWkrclswXS5sZW5ndGh9cmV0dXJuIGM8ZS5sZW5ndGgmJihzLnB1c2gobz1lLnNsaWNlKGMpKSxhLnB1c2goSlNPTi5zdHJpbmdpZnkobykpKSx7ZXhwcmVzc2lvbjphLmpvaW4oIisiKSx0b2tlbnM6c319fShlLFVvKSk\/bD17dHlwZToyLGV4cHJlc3Npb246dS5leHByZXNzaW9uLHRva2Vuczp1LnRva2Vucyx0ZXh0OmV9OiIgIj09PWUmJmYubGVuZ3RoJiYiICI9PT1mW2YubGVuZ3RoLTFdLnRleHR8fChsPXt0eXBlOjMsdGV4dDplfSksbCYmZi5wdXNoKGwpfX0sY29tbWVudDpmdW5jdGlvbihlLHQsbil7aWYocil7dmFyIGk9e3R5cGU6Myx0ZXh0OmUsaXNDb21tZW50OiEwfTtyLmNoaWxkcmVuLnB1c2goaSl9fX0pLG59ZnVuY3Rpb24gZmEoZSx0KXt2YXIgbixyOyhyPUlyKG49ZSwia2V5IikpJiYobi5rZXk9ciksZS5wbGFpbj0hZS5rZXkmJiFlLnNjb3BlZFNsb3RzJiYhZS5hdHRyc0xpc3QubGVuZ3RoLGZ1bmN0aW9uKGUpe3ZhciB0PUlyKGUsInJlZiIpO3QmJihlLnJlZj10LGUucmVmSW5Gb3I9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtmb3IoO3Q7KXtpZih2b2lkIDAhPT10LmZvcilyZXR1cm4hMDt0PXQucGFyZW50fXJldHVybiExfShlKSl9KGUpLGZ1bmN0aW9uKGUpe3ZhciB0OyJ0ZW1wbGF0ZSI9PT1lLnRhZz8odD1GcihlLCJzY29wZSIpLGUuc2xvdFNjb3BlPXR8fEZyKGUsInNsb3Qtc2NvcGUiKSk6KHQ9RnIoZSwic2xvdC1zY29wZSIpKSYmKGUuc2xvdFNjb3BlPXQpO3ZhciBuPUlyKGUsInNsb3QiKTtuJiYoZS5zbG90VGFyZ2V0PSciIic9PT1uPyciZGVmYXVsdCInOm4sZS5zbG90VGFyZ2V0RHluYW1pYz0hKCFlLmF0dHJzTWFwWyI6c2xvdCJdJiYhZS5hdHRyc01hcFsidi1iaW5kOnNsb3QiXSksInRlbXBsYXRlIj09PWUudGFnfHxlLnNsb3RTY29wZXx8TnIoZSwic2xvdCIsbixmdW5jdGlvbihlLHQpe3JldHVybiBlLnJhd0F0dHJzTWFwWyI6Iit0XXx8ZS5yYXdBdHRyc01hcFsidi1iaW5kOiIrdF18fGUucmF3QXR0cnNNYXBbdF19KGUsInNsb3QiKSkpO2lmKCJ0ZW1wbGF0ZSI9PT1lLnRhZyl7dmFyIHI9UHIoZSxpYSk7aWYocil7dmFyIGk9dmEociksbz1pLm5hbWUsYT1pLmR5bmFtaWM7ZS5zbG90VGFyZ2V0PW8sZS5zbG90VGFyZ2V0RHluYW1pYz1hLGUuc2xvdFNjb3BlPXIudmFsdWV8fGNhfX1lbHNle3ZhciBzPVByKGUsaWEpO2lmKHMpe3ZhciBjPWUuc2NvcGVkU2xvdHN8fChlLnNjb3BlZFNsb3RzPXt9KSx1PXZhKHMpLGw9dS5uYW1lLGY9dS5keW5hbWljLHA9Y1tsXT11YSgidGVtcGxhdGUiLFtdLGUpO3Auc2xvdFRhcmdldD1sLHAuc2xvdFRhcmdldER5bmFtaWM9ZixwLmNoaWxkcmVuPWUuY2hpbGRyZW4uZmlsdGVyKGZ1bmN0aW9uKGUpe2lmKCFlLnNsb3RTY29wZSlyZXR1cm4gZS5wYXJlbnQ9cCwhMH0pLHAuc2xvdFNjb3BlPXMudmFsdWV8fGNhLGUuY2hpbGRyZW49W10sZS5wbGFpbj0hMX19fShlKSxmdW5jdGlvbihlKXsic2xvdCI9PT1lLnRhZyYmKGUuc2xvdE5hbWU9SXIoZSwibmFtZSIpKX0oZSksZnVuY3Rpb24oZSl7dmFyIHQ7KHQ9SXIoZSwiaXMiKSkmJihlLmNvbXBvbmVudD10KTtudWxsIT1GcihlLCJpbmxpbmUtdGVtcGxhdGUiKSYmKGUuaW5saW5lVGVtcGxhdGU9ITApfShlKTtmb3IodmFyIGk9MDtpPHpvLmxlbmd0aDtpKyspZT16b1tpXShlLHQpfHxlO3JldHVybiBmdW5jdGlvbihlKXt2YXIgdCxuLHIsaSxvLGEscyxjLHU9ZS5hdHRyc0xpc3Q7Zm9yKHQ9MCxuPXUubGVuZ3RoO3Q8bjt0KyspaWYocj1pPXVbdF0ubmFtZSxvPXVbdF0udmFsdWUsR28udGVzdChyKSlpZihlLmhhc0JpbmRpbmdzPSEwLChhPWhhKHIucmVwbGFjZShHbywiIikpKSYmKHI9ci5yZXBsYWNlKHJhLCIiKSksbmEudGVzdChyKSlyPXIucmVwbGFjZShuYSwiIiksbz1BcihvKSwoYz1lYS50ZXN0KHIpKSYmKHI9ci5zbGljZSgxLC0xKSksYSYmKGEucHJvcCYmIWMmJiJpbm5lckh0bWwiPT09KHI9YihyKSkmJihyPSJpbm5lckhUTUwiKSxhLmNhbWVsJiYhYyYmKHI9YihyKSksYS5zeW5jJiYocz1CcihvLCIkZXZlbnQiKSxjP01yKGUsJyJ1cGRhdGU6IisoJytyKyIpIixzLG51bGwsITEsMCx1W3RdLCEwKTooTXIoZSwidXBkYXRlOiIrYihyKSxzLG51bGwsITEsMCx1W3RdKSxDKHIpIT09YihyKSYmTXIoZSwidXBkYXRlOiIrQyhyKSxzLG51bGwsITEsMCx1W3RdKSkpKSxhJiZhLnByb3B8fCFlLmNvbXBvbmVudCYmcW8oZS50YWcsZS5hdHRyc01hcC50eXBlLHIpP0VyKGUscixvLHVbdF0sYyk6TnIoZSxyLG8sdVt0XSxjKTtlbHNlIGlmKFpvLnRlc3Qocikpcj1yLnJlcGxhY2UoWm8sIiIpLChjPWVhLnRlc3QocikpJiYocj1yLnNsaWNlKDEsLTEpKSxNcihlLHIsbyxhLCExLDAsdVt0XSxjKTtlbHNle3ZhciBsPShyPXIucmVwbGFjZShHbywiIikpLm1hdGNoKHRhKSxmPWwmJmxbMV07Yz0hMSxmJiYocj1yLnNsaWNlKDAsLShmLmxlbmd0aCsxKSksZWEudGVzdChmKSYmKGY9Zi5zbGljZSgxLC0xKSxjPSEwKSksRHIoZSxyLGksbyxmLGMsYSx1W3RdKX1lbHNlIE5yKGUscixKU09OLnN0cmluZ2lmeShvKSx1W3RdKSwhZS5jb21wb25lbnQmJiJtdXRlZCI9PT1yJiZxbyhlLnRhZyxlLmF0dHJzTWFwLnR5cGUscikmJkVyKGUsciwidHJ1ZSIsdVt0XSl9KGUpLGV9ZnVuY3Rpb24gcGEoZSl7dmFyIHQ7aWYodD1GcihlLCJ2LWZvciIpKXt2YXIgbj1mdW5jdGlvbihlKXt2YXIgdD1lLm1hdGNoKFhvKTtpZighdClyZXR1cm47dmFyIG49e307bi5mb3I9dFsyXS50cmltKCk7dmFyIHI9dFsxXS50cmltKCkucmVwbGFjZShRbywiIiksaT1yLm1hdGNoKFlvKTtpPyhuLmFsaWFzPXIucmVwbGFjZShZbywiIikudHJpbSgpLG4uaXRlcmF0b3IxPWlbMV0udHJpbSgpLGlbMl0mJihuLml0ZXJhdG9yMj1pWzJdLnRyaW0oKSkpOm4uYWxpYXM9cjtyZXR1cm4gbn0odCk7biYmQShlLG4pfX1mdW5jdGlvbiBkYShlLHQpe2UuaWZDb25kaXRpb25zfHwoZS5pZkNvbmRpdGlvbnM9W10pLGUuaWZDb25kaXRpb25zLnB1c2godCl9ZnVuY3Rpb24gdmEoZSl7dmFyIHQ9ZS5uYW1lLnJlcGxhY2UoaWEsIiIpO3JldHVybiB0fHwiIyIhPT1lLm5hbWVbMF0mJih0PSJkZWZhdWx0IiksZWEudGVzdCh0KT97bmFtZTp0LnNsaWNlKDEsLTEpLGR5bmFtaWM6ITB9OntuYW1lOiciJyt0KyciJyxkeW5hbWljOiExfX1mdW5jdGlvbiBoYShlKXt2YXIgdD1lLm1hdGNoKHJhKTtpZih0KXt2YXIgbj17fTtyZXR1cm4gdC5mb3JFYWNoKGZ1bmN0aW9uKGUpe25bZS5zbGljZSgxKV09ITB9KSxufX1mdW5jdGlvbiBtYShlKXtmb3IodmFyIHQ9e30sbj0wLHI9ZS5sZW5ndGg7bjxyO24rKyl0W2Vbbl0ubmFtZV09ZVtuXS52YWx1ZTtyZXR1cm4gdH12YXIgeWE9L154bWxuczpOU1xkKy8sZ2E9L15OU1xkKzovO2Z1bmN0aW9uIF9hKGUpe3JldHVybiB1YShlLnRhZyxlLmF0dHJzTGlzdC5zbGljZSgpLGUucGFyZW50KX12YXIgYmE9W21vLGdvLHtwcmVUcmFuc2Zvcm1Ob2RlOmZ1bmN0aW9uKGUsdCl7aWYoImlucHV0Ij09PWUudGFnKXt2YXIgbixyPWUuYXR0cnNNYXA7aWYoIXJbInYtbW9kZWwiXSlyZXR1cm47aWYoKHJbIjp0eXBlIl18fHJbInYtYmluZDp0eXBlIl0pJiYobj1JcihlLCJ0eXBlIikpLHIudHlwZXx8bnx8IXJbInYtYmluZCJdfHwobj0iKCIrclsidi1iaW5kIl0rIikudHlwZSIpLG4pe3ZhciBpPUZyKGUsInYtaWYiLCEwKSxvPWk\/IiYmKCIraSsiKSI6IiIsYT1udWxsIT1GcihlLCJ2LWVsc2UiLCEwKSxzPUZyKGUsInYtZWxzZS1pZiIsITApLGM9X2EoZSk7cGEoYyksanIoYywidHlwZSIsImNoZWNrYm94IiksZmEoYyx0KSxjLnByb2Nlc3NlZD0hMCxjLmlmPSIoIituKyIpPT09J2NoZWNrYm94JyIrbyxkYShjLHtleHA6Yy5pZixibG9jazpjfSk7dmFyIHU9X2EoZSk7RnIodSwidi1mb3IiLCEwKSxqcih1LCJ0eXBlIiwicmFkaW8iKSxmYSh1LHQpLGRhKGMse2V4cDoiKCIrbisiKT09PSdyYWRpbyciK28sYmxvY2s6dX0pO3ZhciBsPV9hKGUpO3JldHVybiBGcihsLCJ2LWZvciIsITApLGpyKGwsIjp0eXBlIixuKSxmYShsLHQpLGRhKGMse2V4cDppLGJsb2NrOmx9KSxhP2MuZWxzZT0hMDpzJiYoYy5lbHNlaWY9cyksY319fX1dO3ZhciAkYSx3YSxDYT17ZXhwZWN0SFRNTDohMCxtb2R1bGVzOmJhLGRpcmVjdGl2ZXM6e21vZGVsOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10LnZhbHVlLGk9dC5tb2RpZmllcnMsbz1lLnRhZyxhPWUuYXR0cnNNYXAudHlwZTtpZihlLmNvbXBvbmVudClyZXR1cm4gSHIoZSxyLGkpLCExO2lmKCJzZWxlY3QiPT09bykhZnVuY3Rpb24oZSx0LG4pe3ZhciByPSd2YXIgJCRzZWxlY3RlZFZhbCA9IEFycmF5LnByb3RvdHlwZS5maWx0ZXIuY2FsbCgkZXZlbnQudGFyZ2V0Lm9wdGlvbnMsZnVuY3Rpb24obyl7cmV0dXJuIG8uc2VsZWN0ZWR9KS5tYXAoZnVuY3Rpb24obyl7dmFyIHZhbCA9ICJfdmFsdWUiIGluIG8gPyBvLl92YWx1ZSA6IG8udmFsdWU7cmV0dXJuICcrKG4mJm4ubnVtYmVyPyJfbih2YWwpIjoidmFsIikrIn0pOyI7cj1yKyIgIitCcih0LCIkZXZlbnQudGFyZ2V0Lm11bHRpcGxlID8gJCRzZWxlY3RlZFZhbCA6ICQkc2VsZWN0ZWRWYWxbMF0iKSxNcihlLCJjaGFuZ2UiLHIsbnVsbCwhMCl9KGUscixpKTtlbHNlIGlmKCJpbnB1dCI9PT1vJiYiY2hlY2tib3giPT09YSkhZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4mJm4ubnVtYmVyLGk9SXIoZSwidmFsdWUiKXx8Im51bGwiLG89SXIoZSwidHJ1ZS12YWx1ZSIpfHwidHJ1ZSIsYT1JcihlLCJmYWxzZS12YWx1ZSIpfHwiZmFsc2UiO0VyKGUsImNoZWNrZWQiLCJBcnJheS5pc0FycmF5KCIrdCsiKT9faSgiK3QrIiwiK2krIik+LTEiKygidHJ1ZSI9PT1vPyI6KCIrdCsiKSI6IjpfcSgiK3QrIiwiK28rIikiKSksTXIoZSwiY2hhbmdlIiwidmFyICQkYT0iK3QrIiwkJGVsPSRldmVudC50YXJnZXQsJCRjPSQkZWwuY2hlY2tlZD8oIitvKyIpOigiK2ErIik7aWYoQXJyYXkuaXNBcnJheSgkJGEpKXt2YXIgJCR2PSIrKHI\/Il9uKCIraSsiKSI6aSkrIiwkJGk9X2koJCRhLCQkdik7aWYoJCRlbC5jaGVja2VkKXskJGk8MCYmKCIrQnIodCwiJCRhLmNvbmNhdChbJCR2XSkiKSsiKX1lbHNleyQkaT4tMSYmKCIrQnIodCwiJCRhLnNsaWNlKDAsJCRpKS5jb25jYXQoJCRhLnNsaWNlKCQkaSsxKSkiKSsiKX19ZWxzZXsiK0JyKHQsIiQkYyIpKyJ9IixudWxsLCEwKX0oZSxyLGkpO2Vsc2UgaWYoImlucHV0Ij09PW8mJiJyYWRpbyI9PT1hKSFmdW5jdGlvbihlLHQsbil7dmFyIHI9biYmbi5udW1iZXIsaT1JcihlLCJ2YWx1ZSIpfHwibnVsbCI7RXIoZSwiY2hlY2tlZCIsIl9xKCIrdCsiLCIrKGk9cj8iX24oIitpKyIpIjppKSsiKSIpLE1yKGUsImNoYW5nZSIsQnIodCxpKSxudWxsLCEwKX0oZSxyLGkpO2Vsc2UgaWYoImlucHV0Ij09PW98fCJ0ZXh0YXJlYSI9PT1vKSFmdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5hdHRyc01hcC50eXBlLGk9bnx8e30sbz1pLmxhenksYT1pLm51bWJlcixzPWkudHJpbSxjPSFvJiYicmFuZ2UiIT09cix1PW8\/ImNoYW5nZSI6InJhbmdlIj09PXI\/V3I6ImlucHV0IixsPSIkZXZlbnQudGFyZ2V0LnZhbHVlIjtzJiYobD0iJGV2ZW50LnRhcmdldC52YWx1ZS50cmltKCkiKSxhJiYobD0iX24oIitsKyIpIik7dmFyIGY9QnIodCxsKTtjJiYoZj0iaWYoJGV2ZW50LnRhcmdldC5jb21wb3NpbmcpcmV0dXJuOyIrZiksRXIoZSwidmFsdWUiLCIoIit0KyIpIiksTXIoZSx1LGYsbnVsbCwhMCksKHN8fGEpJiZNcihlLCJibHVyIiwiJGZvcmNlVXBkYXRlKCkiKX0oZSxyLGkpO2Vsc2UgaWYoIUYuaXNSZXNlcnZlZFRhZyhvKSlyZXR1cm4gSHIoZSxyLGkpLCExO3JldHVybiEwfSx0ZXh0OmZ1bmN0aW9uKGUsdCl7dC52YWx1ZSYmRXIoZSwidGV4dENvbnRlbnQiLCJfcygiK3QudmFsdWUrIikiLHQpfSxodG1sOmZ1bmN0aW9uKGUsdCl7dC52YWx1ZSYmRXIoZSwiaW5uZXJIVE1MIiwiX3MoIit0LnZhbHVlKyIpIix0KX19LGlzUHJlVGFnOmZ1bmN0aW9uKGUpe3JldHVybiJwcmUiPT09ZX0saXNVbmFyeVRhZzpibyxtdXN0VXNlUHJvcDpqbixjYW5CZUxlZnRPcGVuVGFnOiRvLGlzUmVzZXJ2ZWRUYWc6V24sZ2V0VGFnTmFtZXNwYWNlOlpuLHN0YXRpY0tleXM6ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVkdWNlKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29uY2F0KHQuc3RhdGljS2V5c3x8W10pfSxbXSkuam9pbigiLCIpfShiYSl9LHhhPWcoZnVuY3Rpb24oZSl7cmV0dXJuIHAoInR5cGUsdGFnLGF0dHJzTGlzdCxhdHRyc01hcCxwbGFpbixwYXJlbnQsY2hpbGRyZW4sYXR0cnMsc3RhcnQsZW5kLHJhd0F0dHJzTWFwIisoZT8iLCIrZToiIikpfSk7ZnVuY3Rpb24ga2EoZSx0KXtlJiYoJGE9eGEodC5zdGF0aWNLZXlzfHwiIiksd2E9dC5pc1Jlc2VydmVkVGFnfHxULGZ1bmN0aW9uIGUodCl7dC5zdGF0aWM9ZnVuY3Rpb24oZSl7aWYoMj09PWUudHlwZSlyZXR1cm4hMTtpZigzPT09ZS50eXBlKXJldHVybiEwO3JldHVybiEoIWUucHJlJiYoZS5oYXNCaW5kaW5nc3x8ZS5pZnx8ZS5mb3J8fGQoZS50YWcpfHwhd2EoZS50YWcpfHxmdW5jdGlvbihlKXtmb3IoO2UucGFyZW50Oyl7aWYoInRlbXBsYXRlIiE9PShlPWUucGFyZW50KS50YWcpcmV0dXJuITE7aWYoZS5mb3IpcmV0dXJuITB9cmV0dXJuITF9KGUpfHwhT2JqZWN0LmtleXMoZSkuZXZlcnkoJGEpKSl9KHQpO2lmKDE9PT10LnR5cGUpe2lmKCF3YSh0LnRhZykmJiJzbG90IiE9PXQudGFnJiZudWxsPT10LmF0dHJzTWFwWyJpbmxpbmUtdGVtcGxhdGUiXSlyZXR1cm47Zm9yKHZhciBuPTAscj10LmNoaWxkcmVuLmxlbmd0aDtuPHI7bisrKXt2YXIgaT10LmNoaWxkcmVuW25dO2UoaSksaS5zdGF0aWN8fCh0LnN0YXRpYz0hMSl9aWYodC5pZkNvbmRpdGlvbnMpZm9yKHZhciBvPTEsYT10LmlmQ29uZGl0aW9ucy5sZW5ndGg7bzxhO28rKyl7dmFyIHM9dC5pZkNvbmRpdGlvbnNbb10uYmxvY2s7ZShzKSxzLnN0YXRpY3x8KHQuc3RhdGljPSExKX19fShlKSxmdW5jdGlvbiBlKHQsbil7aWYoMT09PXQudHlwZSl7aWYoKHQuc3RhdGljfHx0Lm9uY2UpJiYodC5zdGF0aWNJbkZvcj1uKSx0LnN0YXRpYyYmdC5jaGlsZHJlbi5sZW5ndGgmJigxIT09dC5jaGlsZHJlbi5sZW5ndGh8fDMhPT10LmNoaWxkcmVuWzBdLnR5cGUpKXJldHVybiB2b2lkKHQuc3RhdGljUm9vdD0hMCk7aWYodC5zdGF0aWNSb290PSExLHQuY2hpbGRyZW4pZm9yKHZhciByPTAsaT10LmNoaWxkcmVuLmxlbmd0aDtyPGk7cisrKWUodC5jaGlsZHJlbltyXSxufHwhIXQuZm9yKTtpZih0LmlmQ29uZGl0aW9ucylmb3IodmFyIG89MSxhPXQuaWZDb25kaXRpb25zLmxlbmd0aDtvPGE7bysrKWUodC5pZkNvbmRpdGlvbnNbb10uYmxvY2ssbil9fShlLCExKSl9dmFyIEFhPS9eKFtcdyRfXSt8XChbXildKj9cKSlccyo9PnxeZnVuY3Rpb24oPzpccytbXHckXSspP1xzKlwoLyxPYT0vXChbXildKj9cKTsqJC8sU2E9L15bQS1aYS16XyRdW1x3JF0qKD86XC5bQS1aYS16XyRdW1x3JF0qfFxbJ1teJ10qPyddfFxbIlteIl0qPyJdfFxbXGQrXXxcW1tBLVphLXpfJF1bXHckXSpdKSokLyxUYT17ZXNjOjI3LHRhYjo5LGVudGVyOjEzLHNwYWNlOjMyLHVwOjM4LGxlZnQ6MzcscmlnaHQ6MzksZG93bjo0MCxkZWxldGU6WzgsNDZdfSxFYT17ZXNjOlsiRXNjIiwiRXNjYXBlIl0sdGFiOiJUYWIiLGVudGVyOiJFbnRlciIsc3BhY2U6WyIgIiwiU3BhY2ViYXIiXSx1cDpbIlVwIiwiQXJyb3dVcCJdLGxlZnQ6WyJMZWZ0IiwiQXJyb3dMZWZ0Il0scmlnaHQ6WyJSaWdodCIsIkFycm93UmlnaHQiXSxkb3duOlsiRG93biIsIkFycm93RG93biJdLGRlbGV0ZTpbIkJhY2tzcGFjZSIsIkRlbGV0ZSIsIkRlbCJdfSxOYT1mdW5jdGlvbihlKXtyZXR1cm4iaWYoIitlKyIpcmV0dXJuIG51bGw7In0samE9e3N0b3A6IiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsiLHByZXZlbnQ6IiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyIsc2VsZjpOYSgiJGV2ZW50LnRhcmdldCAhPT0gJGV2ZW50LmN1cnJlbnRUYXJnZXQiKSxjdHJsOk5hKCIhJGV2ZW50LmN0cmxLZXkiKSxzaGlmdDpOYSgiISRldmVudC5zaGlmdEtleSIpLGFsdDpOYSgiISRldmVudC5hbHRLZXkiKSxtZXRhOk5hKCIhJGV2ZW50Lm1ldGFLZXkiKSxsZWZ0Ok5hKCInYnV0dG9uJyBpbiAkZXZlbnQgJiYgJGV2ZW50LmJ1dHRvbiAhPT0gMCIpLG1pZGRsZTpOYSgiJ2J1dHRvbicgaW4gJGV2ZW50ICYmICRldmVudC5idXR0b24gIT09IDEiKSxyaWdodDpOYSgiJ2J1dHRvbicgaW4gJGV2ZW50ICYmICRldmVudC5idXR0b24gIT09IDIiKX07ZnVuY3Rpb24gRGEoZSx0KXt2YXIgbj10PyJuYXRpdmVPbjoiOiJvbjoiLHI9IiIsaT0iIjtmb3IodmFyIG8gaW4gZSl7dmFyIGE9TGEoZVtvXSk7ZVtvXSYmZVtvXS5keW5hbWljP2krPW8rIiwiK2ErIiwiOnIrPSciJytvKyciOicrYSsiLCJ9cmV0dXJuIHI9InsiK3Iuc2xpY2UoMCwtMSkrIn0iLGk\/bisiX2QoIityKyIsWyIraS5zbGljZSgwLC0xKSsiXSkiOm4rcn1mdW5jdGlvbiBMYShlKXtpZighZSlyZXR1cm4iZnVuY3Rpb24oKXt9IjtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiJbIitlLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gTGEoZSl9KS5qb2luKCIsIikrIl0iO3ZhciB0PVNhLnRlc3QoZS52YWx1ZSksbj1BYS50ZXN0KGUudmFsdWUpLHI9U2EudGVzdChlLnZhbHVlLnJlcGxhY2UoT2EsIiIpKTtpZihlLm1vZGlmaWVycyl7dmFyIGk9IiIsbz0iIixhPVtdO2Zvcih2YXIgcyBpbiBlLm1vZGlmaWVycylpZihqYVtzXSlvKz1qYVtzXSxUYVtzXSYmYS5wdXNoKHMpO2Vsc2UgaWYoImV4YWN0Ij09PXMpe3ZhciBjPWUubW9kaWZpZXJzO28rPU5hKFsiY3RybCIsInNoaWZ0IiwiYWx0IiwibWV0YSJdLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hY1tlXX0pLm1hcChmdW5jdGlvbihlKXtyZXR1cm4iJGV2ZW50LiIrZSsiS2V5In0pLmpvaW4oInx8IikpfWVsc2UgYS5wdXNoKHMpO3JldHVybiBhLmxlbmd0aCYmKGkrPWZ1bmN0aW9uKGUpe3JldHVybiJpZighJGV2ZW50LnR5cGUuaW5kZXhPZigna2V5JykmJiIrZS5tYXAoTWEpLmpvaW4oIiYmIikrIilyZXR1cm4gbnVsbDsifShhKSksbyYmKGkrPW8pLCJmdW5jdGlvbigkZXZlbnQpeyIraSsodD8icmV0dXJuICIrZS52YWx1ZSsiKCRldmVudCkiOm4\/InJldHVybiAoIitlLnZhbHVlKyIpKCRldmVudCkiOnI\/InJldHVybiAiK2UudmFsdWU6ZS52YWx1ZSkrIn0ifXJldHVybiB0fHxuP2UudmFsdWU6ImZ1bmN0aW9uKCRldmVudCl7Iisocj8icmV0dXJuICIrZS52YWx1ZTplLnZhbHVlKSsifSJ9ZnVuY3Rpb24gTWEoZSl7dmFyIHQ9cGFyc2VJbnQoZSwxMCk7aWYodClyZXR1cm4iJGV2ZW50LmtleUNvZGUhPT0iK3Q7dmFyIG49VGFbZV0scj1FYVtlXTtyZXR1cm4iX2soJGV2ZW50LmtleUNvZGUsIitKU09OLnN0cmluZ2lmeShlKSsiLCIrSlNPTi5zdHJpbmdpZnkobikrIiwkZXZlbnQua2V5LCIrSlNPTi5zdHJpbmdpZnkocikrIikifXZhciBJYT17b246ZnVuY3Rpb24oZSx0KXtlLndyYXBMaXN0ZW5lcnM9ZnVuY3Rpb24oZSl7cmV0dXJuIl9nKCIrZSsiLCIrdC52YWx1ZSsiKSJ9fSxiaW5kOmZ1bmN0aW9uKGUsdCl7ZS53cmFwRGF0YT1mdW5jdGlvbihuKXtyZXR1cm4iX2IoIituKyIsJyIrZS50YWcrIicsIit0LnZhbHVlKyIsIisodC5tb2RpZmllcnMmJnQubW9kaWZpZXJzLnByb3A\/InRydWUiOiJmYWxzZSIpKyh0Lm1vZGlmaWVycyYmdC5tb2RpZmllcnMuc3luYz8iLHRydWUiOiIiKSsiKSJ9fSxjbG9hazpTfSxGYT1mdW5jdGlvbihlKXt0aGlzLm9wdGlvbnM9ZSx0aGlzLndhcm49ZS53YXJufHxTcix0aGlzLnRyYW5zZm9ybXM9VHIoZS5tb2R1bGVzLCJ0cmFuc2Zvcm1Db2RlIiksdGhpcy5kYXRhR2VuRm5zPVRyKGUubW9kdWxlcywiZ2VuRGF0YSIpLHRoaXMuZGlyZWN0aXZlcz1BKEEoe30sSWEpLGUuZGlyZWN0aXZlcyk7dmFyIHQ9ZS5pc1Jlc2VydmVkVGFnfHxUO3RoaXMubWF5YmVDb21wb25lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuISFlLmNvbXBvbmVudHx8IXQoZS50YWcpfSx0aGlzLm9uY2VJZD0wLHRoaXMuc3RhdGljUmVuZGVyRm5zPVtdLHRoaXMucHJlPSExfTtmdW5jdGlvbiBQYShlLHQpe3ZhciBuPW5ldyBGYSh0KTtyZXR1cm57cmVuZGVyOiJ3aXRoKHRoaXMpe3JldHVybiAiKyhlP1JhKGUsbik6J19jKCJkaXYiKScpKyJ9IixzdGF0aWNSZW5kZXJGbnM6bi5zdGF0aWNSZW5kZXJGbnN9fWZ1bmN0aW9uIFJhKGUsdCl7aWYoZS5wYXJlbnQmJihlLnByZT1lLnByZXx8ZS5wYXJlbnQucHJlKSxlLnN0YXRpY1Jvb3QmJiFlLnN0YXRpY1Byb2Nlc3NlZClyZXR1cm4gSGEoZSx0KTtpZihlLm9uY2UmJiFlLm9uY2VQcm9jZXNzZWQpcmV0dXJuIEJhKGUsdCk7aWYoZS5mb3ImJiFlLmZvclByb2Nlc3NlZClyZXR1cm4gemEoZSx0KTtpZihlLmlmJiYhZS5pZlByb2Nlc3NlZClyZXR1cm4gVWEoZSx0KTtpZigidGVtcGxhdGUiIT09ZS50YWd8fGUuc2xvdFRhcmdldHx8dC5wcmUpe2lmKCJzbG90Ij09PWUudGFnKXJldHVybiBmdW5jdGlvbihlLHQpe3ZhciBuPWUuc2xvdE5hbWV8fCciZGVmYXVsdCInLHI9cWEoZSx0KSxpPSJfdCgiK24rKHI\/IiwiK3I6IiIpLG89ZS5hdHRyc3x8ZS5keW5hbWljQXR0cnM\/R2EoKGUuYXR0cnN8fFtdKS5jb25jYXQoZS5keW5hbWljQXR0cnN8fFtdKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJue25hbWU6YihlLm5hbWUpLHZhbHVlOmUudmFsdWUsZHluYW1pYzplLmR5bmFtaWN9fSkpOm51bGwsYT1lLmF0dHJzTWFwWyJ2LWJpbmQiXTshbyYmIWF8fHJ8fChpKz0iLG51bGwiKTtvJiYoaSs9IiwiK28pO2EmJihpKz0obz8iIjoiLG51bGwiKSsiLCIrYSk7cmV0dXJuIGkrIikifShlLHQpO3ZhciBuO2lmKGUuY29tcG9uZW50KW49ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXQuaW5saW5lVGVtcGxhdGU\/bnVsbDpxYSh0LG4sITApO3JldHVybiJfYygiK2UrIiwiK1ZhKHQsbikrKHI\/IiwiK3I6IiIpKyIpIn0oZS5jb21wb25lbnQsZSx0KTtlbHNle3ZhciByOyghZS5wbGFpbnx8ZS5wcmUmJnQubWF5YmVDb21wb25lbnQoZSkpJiYocj1WYShlLHQpKTt2YXIgaT1lLmlubGluZVRlbXBsYXRlP251bGw6cWEoZSx0LCEwKTtuPSJfYygnIitlLnRhZysiJyIrKHI\/IiwiK3I6IiIpKyhpPyIsIitpOiIiKSsiKSJ9Zm9yKHZhciBvPTA7bzx0LnRyYW5zZm9ybXMubGVuZ3RoO28rKyluPXQudHJhbnNmb3Jtc1tvXShlLG4pO3JldHVybiBufXJldHVybiBxYShlLHQpfHwidm9pZCAwIn1mdW5jdGlvbiBIYShlLHQpe2Uuc3RhdGljUHJvY2Vzc2VkPSEwO3ZhciBuPXQucHJlO3JldHVybiBlLnByZSYmKHQucHJlPWUucHJlKSx0LnN0YXRpY1JlbmRlckZucy5wdXNoKCJ3aXRoKHRoaXMpe3JldHVybiAiK1JhKGUsdCkrIn0iKSx0LnByZT1uLCJfbSgiKyh0LnN0YXRpY1JlbmRlckZucy5sZW5ndGgtMSkrKGUuc3RhdGljSW5Gb3I\/Iix0cnVlIjoiIikrIikifWZ1bmN0aW9uIEJhKGUsdCl7aWYoZS5vbmNlUHJvY2Vzc2VkPSEwLGUuaWYmJiFlLmlmUHJvY2Vzc2VkKXJldHVybiBVYShlLHQpO2lmKGUuc3RhdGljSW5Gb3Ipe2Zvcih2YXIgbj0iIixyPWUucGFyZW50O3I7KXtpZihyLmZvcil7bj1yLmtleTticmVha31yPXIucGFyZW50fXJldHVybiBuPyJfbygiK1JhKGUsdCkrIiwiK3Qub25jZUlkKysrIiwiK24rIikiOlJhKGUsdCl9cmV0dXJuIEhhKGUsdCl9ZnVuY3Rpb24gVWEoZSx0LG4scil7cmV0dXJuIGUuaWZQcm9jZXNzZWQ9ITAsZnVuY3Rpb24gZSh0LG4scixpKXtpZighdC5sZW5ndGgpcmV0dXJuIGl8fCJfZSgpIjt2YXIgbz10LnNoaWZ0KCk7cmV0dXJuIG8uZXhwPyIoIitvLmV4cCsiKT8iK2Eoby5ibG9jaykrIjoiK2UodCxuLHIsaSk6IiIrYShvLmJsb2NrKTtmdW5jdGlvbiBhKGUpe3JldHVybiByP3IoZSxuKTplLm9uY2U\/QmEoZSxuKTpSYShlLG4pfX0oZS5pZkNvbmRpdGlvbnMuc2xpY2UoKSx0LG4scil9ZnVuY3Rpb24gemEoZSx0LG4scil7dmFyIGk9ZS5mb3Isbz1lLmFsaWFzLGE9ZS5pdGVyYXRvcjE\/IiwiK2UuaXRlcmF0b3IxOiIiLHM9ZS5pdGVyYXRvcjI\/IiwiK2UuaXRlcmF0b3IyOiIiO3JldHVybiBlLmZvclByb2Nlc3NlZD0hMCwocnx8Il9sIikrIigoIitpKyIpLGZ1bmN0aW9uKCIrbythK3MrIil7cmV0dXJuICIrKG58fFJhKShlLHQpKyJ9KSJ9ZnVuY3Rpb24gVmEoZSx0KXt2YXIgbj0ieyIscj1mdW5jdGlvbihlLHQpe3ZhciBuPWUuZGlyZWN0aXZlcztpZighbilyZXR1cm47dmFyIHIsaSxvLGEscz0iZGlyZWN0aXZlczpbIixjPSExO2ZvcihyPTAsaT1uLmxlbmd0aDtyPGk7cisrKXtvPW5bcl0sYT0hMDt2YXIgdT10LmRpcmVjdGl2ZXNbby5uYW1lXTt1JiYoYT0hIXUoZSxvLHQud2FybikpLGEmJihjPSEwLHMrPSd7bmFtZToiJytvLm5hbWUrJyIscmF3TmFtZToiJytvLnJhd05hbWUrJyInKyhvLnZhbHVlPyIsdmFsdWU6KCIrby52YWx1ZSsiKSxleHByZXNzaW9uOiIrSlNPTi5zdHJpbmdpZnkoby52YWx1ZSk6IiIpKyhvLmFyZz8iLGFyZzoiKyhvLmlzRHluYW1pY0FyZz9vLmFyZzonIicrby5hcmcrJyInKToiIikrKG8ubW9kaWZpZXJzPyIsbW9kaWZpZXJzOiIrSlNPTi5zdHJpbmdpZnkoby5tb2RpZmllcnMpOiIiKSsifSwiKX1pZihjKXJldHVybiBzLnNsaWNlKDAsLTEpKyJdIn0oZSx0KTtyJiYobis9cisiLCIpLGUua2V5JiYobis9ImtleToiK2Uua2V5KyIsIiksZS5yZWYmJihuKz0icmVmOiIrZS5yZWYrIiwiKSxlLnJlZkluRm9yJiYobis9InJlZkluRm9yOnRydWUsIiksZS5wcmUmJihuKz0icHJlOnRydWUsIiksZS5jb21wb25lbnQmJihuKz0ndGFnOiInK2UudGFnKyciLCcpO2Zvcih2YXIgaT0wO2k8dC5kYXRhR2VuRm5zLmxlbmd0aDtpKyspbis9dC5kYXRhR2VuRm5zW2ldKGUpO2lmKGUuYXR0cnMmJihuKz0iYXR0cnM6IitHYShlLmF0dHJzKSsiLCIpLGUucHJvcHMmJihuKz0iZG9tUHJvcHM6IitHYShlLnByb3BzKSsiLCIpLGUuZXZlbnRzJiYobis9RGEoZS5ldmVudHMsITEpKyIsIiksZS5uYXRpdmVFdmVudHMmJihuKz1EYShlLm5hdGl2ZUV2ZW50cywhMCkrIiwiKSxlLnNsb3RUYXJnZXQmJiFlLnNsb3RTY29wZSYmKG4rPSJzbG90OiIrZS5zbG90VGFyZ2V0KyIsIiksZS5zY29wZWRTbG90cyYmKG4rPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLmZvcnx8T2JqZWN0LmtleXModCkuc29tZShmdW5jdGlvbihlKXt2YXIgbj10W2VdO3JldHVybiBuLnNsb3RUYXJnZXREeW5hbWljfHxuLmlmfHxuLmZvcnx8S2Eobil9KSxpPSEhZS5pZjtpZighcilmb3IodmFyIG89ZS5wYXJlbnQ7bzspe2lmKG8uc2xvdFNjb3BlJiZvLnNsb3RTY29wZSE9PWNhfHxvLmZvcil7cj0hMDticmVha31vLmlmJiYoaT0hMCksbz1vLnBhcmVudH12YXIgYT1PYmplY3Qua2V5cyh0KS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIEphKHRbZV0sbil9KS5qb2luKCIsIik7cmV0dXJuInNjb3BlZFNsb3RzOl91KFsiK2ErIl0iKyhyPyIsbnVsbCx0cnVlIjoiIikrKCFyJiZpPyIsbnVsbCxmYWxzZSwiK2Z1bmN0aW9uKGUpe3ZhciB0PTUzODEsbj1lLmxlbmd0aDtmb3IoO247KXQ9MzMqdF5lLmNoYXJDb2RlQXQoLS1uKTtyZXR1cm4gdD4+PjB9KGEpOiIiKSsiKSJ9KGUsZS5zY29wZWRTbG90cyx0KSsiLCIpLGUubW9kZWwmJihuKz0ibW9kZWw6e3ZhbHVlOiIrZS5tb2RlbC52YWx1ZSsiLGNhbGxiYWNrOiIrZS5tb2RlbC5jYWxsYmFjaysiLGV4cHJlc3Npb246IitlLm1vZGVsLmV4cHJlc3Npb24rIn0sIiksZS5pbmxpbmVUZW1wbGF0ZSl7dmFyIG89ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmNoaWxkcmVuWzBdO2lmKG4mJjE9PT1uLnR5cGUpe3ZhciByPVBhKG4sdC5vcHRpb25zKTtyZXR1cm4iaW5saW5lVGVtcGxhdGU6e3JlbmRlcjpmdW5jdGlvbigpeyIrci5yZW5kZXIrIn0sc3RhdGljUmVuZGVyRm5zOlsiK3Iuc3RhdGljUmVuZGVyRm5zLm1hcChmdW5jdGlvbihlKXtyZXR1cm4iZnVuY3Rpb24oKXsiK2UrIn0ifSkuam9pbigiLCIpKyJdfSJ9fShlLHQpO28mJihuKz1vKyIsIil9cmV0dXJuIG49bi5yZXBsYWNlKC8sJC8sIiIpKyJ9IixlLmR5bmFtaWNBdHRycyYmKG49Il9iKCIrbisnLCInK2UudGFnKyciLCcrR2EoZS5keW5hbWljQXR0cnMpKyIpIiksZS53cmFwRGF0YSYmKG49ZS53cmFwRGF0YShuKSksZS53cmFwTGlzdGVuZXJzJiYobj1lLndyYXBMaXN0ZW5lcnMobikpLG59ZnVuY3Rpb24gS2EoZSl7cmV0dXJuIDE9PT1lLnR5cGUmJigic2xvdCI9PT1lLnRhZ3x8ZS5jaGlsZHJlbi5zb21lKEthKSl9ZnVuY3Rpb24gSmEoZSx0KXt2YXIgbj1lLmF0dHJzTWFwWyJzbG90LXNjb3BlIl07aWYoZS5pZiYmIWUuaWZQcm9jZXNzZWQmJiFuKXJldHVybiBVYShlLHQsSmEsIm51bGwiKTtpZihlLmZvciYmIWUuZm9yUHJvY2Vzc2VkKXJldHVybiB6YShlLHQsSmEpO3ZhciByPWUuc2xvdFNjb3BlPT09Y2E\/IiI6U3RyaW5nKGUuc2xvdFNjb3BlKSxpPSJmdW5jdGlvbigiK3IrIil7cmV0dXJuICIrKCJ0ZW1wbGF0ZSI9PT1lLnRhZz9lLmlmJiZuPyIoIitlLmlmKyIpPyIrKHFhKGUsdCl8fCJ1bmRlZmluZWQiKSsiOnVuZGVmaW5lZCI6cWEoZSx0KXx8InVuZGVmaW5lZCI6UmEoZSx0KSkrIn0iLG89cj8iIjoiLHByb3h5OnRydWUiO3JldHVybiJ7a2V5OiIrKGUuc2xvdFRhcmdldHx8JyJkZWZhdWx0IicpKyIsZm46IitpK28rIn0ifWZ1bmN0aW9uIHFhKGUsdCxuLHIsaSl7dmFyIG89ZS5jaGlsZHJlbjtpZihvLmxlbmd0aCl7dmFyIGE9b1swXTtpZigxPT09by5sZW5ndGgmJmEuZm9yJiYidGVtcGxhdGUiIT09YS50YWcmJiJzbG90IiE9PWEudGFnKXt2YXIgcz1uP3QubWF5YmVDb21wb25lbnQoYSk\/IiwxIjoiLDAiOiIiO3JldHVybiIiKyhyfHxSYSkoYSx0KStzfXZhciBjPW4\/ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49MCxyPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBpPWVbcl07aWYoMT09PWkudHlwZSl7aWYoV2EoaSl8fGkuaWZDb25kaXRpb25zJiZpLmlmQ29uZGl0aW9ucy5zb21lKGZ1bmN0aW9uKGUpe3JldHVybiBXYShlLmJsb2NrKX0pKXtuPTI7YnJlYWt9KHQoaSl8fGkuaWZDb25kaXRpb25zJiZpLmlmQ29uZGl0aW9ucy5zb21lKGZ1bmN0aW9uKGUpe3JldHVybiB0KGUuYmxvY2spfSkpJiYobj0xKX19cmV0dXJuIG59KG8sdC5tYXliZUNvbXBvbmVudCk6MCx1PWl8fFphO3JldHVybiJbIitvLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gdShlLHQpfSkuam9pbigiLCIpKyJdIisoYz8iLCIrYzoiIil9fWZ1bmN0aW9uIFdhKGUpe3JldHVybiB2b2lkIDAhPT1lLmZvcnx8InRlbXBsYXRlIj09PWUudGFnfHwic2xvdCI9PT1lLnRhZ31mdW5jdGlvbiBaYShlLHQpe3JldHVybiAxPT09ZS50eXBlP1JhKGUsdCk6Mz09PWUudHlwZSYmZS5pc0NvbW1lbnQ\/KHI9ZSwiX2UoIitKU09OLnN0cmluZ2lmeShyLnRleHQpKyIpIik6Il92KCIrKDI9PT0obj1lKS50eXBlP24uZXhwcmVzc2lvbjpYYShKU09OLnN0cmluZ2lmeShuLnRleHQpKSkrIikiO3ZhciBuLHJ9ZnVuY3Rpb24gR2EoZSl7Zm9yKHZhciB0PSIiLG49IiIscj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgaT1lW3JdLG89WGEoaS52YWx1ZSk7aS5keW5hbWljP24rPWkubmFtZSsiLCIrbysiLCI6dCs9JyInK2kubmFtZSsnIjonK28rIiwifXJldHVybiB0PSJ7Iit0LnNsaWNlKDAsLTEpKyJ9IixuPyJfZCgiK3QrIixbIituLnNsaWNlKDAsLTEpKyJdKSI6dH1mdW5jdGlvbiBYYShlKXtyZXR1cm4gZS5yZXBsYWNlKC9cdTIwMjgvZywiXFx1MjAyOCIpLnJlcGxhY2UoL1x1MjAyOS9nLCJcXHUyMDI5Iil9bmV3IFJlZ0V4cCgiXFxiIisiZG8saWYsZm9yLGxldCxuZXcsdHJ5LHZhcixjYXNlLGVsc2Usd2l0aCxhd2FpdCxicmVhayxjYXRjaCxjbGFzcyxjb25zdCxzdXBlcix0aHJvdyx3aGlsZSx5aWVsZCxkZWxldGUsZXhwb3J0LGltcG9ydCxyZXR1cm4sc3dpdGNoLGRlZmF1bHQsZXh0ZW5kcyxmaW5hbGx5LGNvbnRpbnVlLGRlYnVnZ2VyLGZ1bmN0aW9uLGFyZ3VtZW50cyIuc3BsaXQoIiwiKS5qb2luKCJcXGJ8XFxiIikrIlxcYiIpO2Z1bmN0aW9uIFlhKGUsdCl7dHJ5e3JldHVybiBuZXcgRnVuY3Rpb24oZSl9Y2F0Y2gobil7cmV0dXJuIHQucHVzaCh7ZXJyOm4sY29kZTplfSksU319ZnVuY3Rpb24gUWEoZSl7dmFyIHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtyZXR1cm4gZnVuY3Rpb24obixyLGkpeyhyPUEoe30scikpLndhcm47ZGVsZXRlIHIud2Fybjt2YXIgbz1yLmRlbGltaXRlcnM\/U3RyaW5nKHIuZGVsaW1pdGVycykrbjpuO2lmKHRbb10pcmV0dXJuIHRbb107dmFyIGE9ZShuLHIpLHM9e30sYz1bXTtyZXR1cm4gcy5yZW5kZXI9WWEoYS5yZW5kZXIsYykscy5zdGF0aWNSZW5kZXJGbnM9YS5zdGF0aWNSZW5kZXJGbnMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBZYShlLGMpfSksdFtvXT1zfX12YXIgZXMsdHMsbnM9KGVzPWZ1bmN0aW9uKGUsdCl7dmFyIG49bGEoZS50cmltKCksdCk7ITEhPT10Lm9wdGltaXplJiZrYShuLHQpO3ZhciByPVBhKG4sdCk7cmV0dXJue2FzdDpuLHJlbmRlcjpyLnJlbmRlcixzdGF0aWNSZW5kZXJGbnM6ci5zdGF0aWNSZW5kZXJGbnN9fSxmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQsbil7dmFyIHI9T2JqZWN0LmNyZWF0ZShlKSxpPVtdLG89W107aWYobilmb3IodmFyIGEgaW4gbi5tb2R1bGVzJiYoci5tb2R1bGVzPShlLm1vZHVsZXN8fFtdKS5jb25jYXQobi5tb2R1bGVzKSksbi5kaXJlY3RpdmVzJiYoci5kaXJlY3RpdmVzPUEoT2JqZWN0LmNyZWF0ZShlLmRpcmVjdGl2ZXN8fG51bGwpLG4uZGlyZWN0aXZlcykpLG4pIm1vZHVsZXMiIT09YSYmImRpcmVjdGl2ZXMiIT09YSYmKHJbYV09blthXSk7ci53YXJuPWZ1bmN0aW9uKGUsdCxuKXsobj9vOmkpLnB1c2goZSl9O3ZhciBzPWVzKHQudHJpbSgpLHIpO3JldHVybiBzLmVycm9ycz1pLHMudGlwcz1vLHN9cmV0dXJue2NvbXBpbGU6dCxjb21waWxlVG9GdW5jdGlvbnM6UWEodCl9fSkoQ2EpLHJzPShucy5jb21waWxlLG5zLmNvbXBpbGVUb0Z1bmN0aW9ucyk7ZnVuY3Rpb24gaXMoZSl7cmV0dXJuKHRzPXRzfHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSkuaW5uZXJIVE1MPWU\/JzxhIGhyZWY9IlxuIi8+JzonPGRpdiBhPSJcbiIvPicsdHMuaW5uZXJIVE1MLmluZGV4T2YoIiYjMTA7Iik+MH12YXIgb3M9ISF6JiZpcyghMSksYXM9ISF6JiZpcyghMCksc3M9ZyhmdW5jdGlvbihlKXt2YXIgdD1ZbihlKTtyZXR1cm4gdCYmdC5pbm5lckhUTUx9KSxjcz13bi5wcm90b3R5cGUuJG1vdW50O3JldHVybiB3bi5wcm90b3R5cGUuJG1vdW50PWZ1bmN0aW9uKGUsdCl7aWYoKGU9ZSYmWW4oZSkpPT09ZG9jdW1lbnQuYm9keXx8ZT09PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudClyZXR1cm4gdGhpczt2YXIgbj10aGlzLiRvcHRpb25zO2lmKCFuLnJlbmRlcil7dmFyIHI9bi50ZW1wbGF0ZTtpZihyKWlmKCJzdHJpbmciPT10eXBlb2YgcikiIyI9PT1yLmNoYXJBdCgwKSYmKHI9c3MocikpO2Vsc2V7aWYoIXIubm9kZVR5cGUpcmV0dXJuIHRoaXM7cj1yLmlubmVySFRNTH1lbHNlIGUmJihyPWZ1bmN0aW9uKGUpe2lmKGUub3V0ZXJIVE1MKXJldHVybiBlLm91dGVySFRNTDt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gdC5hcHBlbmRDaGlsZChlLmNsb25lTm9kZSghMCkpLHQuaW5uZXJIVE1MfShlKSk7aWYocil7dmFyIGk9cnMocix7b3V0cHV0U291cmNlUmFuZ2U6ITEsc2hvdWxkRGVjb2RlTmV3bGluZXM6b3Msc2hvdWxkRGVjb2RlTmV3bGluZXNGb3JIcmVmOmFzLGRlbGltaXRlcnM6bi5kZWxpbWl0ZXJzLGNvbW1lbnRzOm4uY29tbWVudHN9LHRoaXMpLG89aS5yZW5kZXIsYT1pLnN0YXRpY1JlbmRlckZucztuLnJlbmRlcj1vLG4uc3RhdGljUmVuZGVyRm5zPWF9fXJldHVybiBjcy5jYWxsKHRoaXMsZSx0KX0sd24uY29tcGlsZT1ycyx3bn0pOwovKiogL20vanMvdnVlL3Z1ZS10aGUtbWFzay5qcyAqKi8KdmFyIF9fX2QyY192dWV0aGVtYXNranNfY19vbj0iMjAyNS0wNS0yMyAxNzowNTozOCI7J3VzZSBzdHJpY3QnO3ZhciBfX19kMmNfdnVldGhlbWFza2pzX2Nfb249IjIwMjQtMDEtMzEgMTQ6MzM6MTUiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfdnVldGhlbWFza2pzX2Nfb249IjIwMjMtMDEtMTIgMTE6NDA6NTUiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfdnVldGhlbWFza2pzX2Nfb249IjIwMjMtMDEtMTIgMTA6NTA6NDEiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfdnVldGhlbWFza2pzX2Nfb249IjIwMjEtMTItMTUgMTI6NTE6MjQiOyJ1c2Ugc3RyaWN0IjsKKGZ1bmN0aW9uKGgsYyl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz1jKCk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoW10sYyk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP2V4cG9ydHMuVnVlVGhlTWFzaz1jKCk6aC5WdWVUaGVNYXNrPWMoKX0pKHRoaXMsZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oaCl7ZnVuY3Rpb24gYyhkKXtpZihhW2RdKXJldHVybiBhW2RdLmV4cG9ydHM7dmFyIGU9YVtkXT17aTpkLGw6ITEsZXhwb3J0czp7fX07cmV0dXJuIGhbZF0uY2FsbChlLmV4cG9ydHMsZSxlLmV4cG9ydHMsYyksZS5sPSEwLGUuZXhwb3J0c312YXIgYT17fTtyZXR1cm4gYy5tPWgsYy5jPWEsYy5pPWZ1bmN0aW9uKGQpe3JldHVybiBkfSxjLmQ9ZnVuY3Rpb24oZCxlLGwpe2MubyhkLGUpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxlLHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMCwKZ2V0Omx9KX0sYy5uPWZ1bmN0aW9uKGQpe3ZhciBlPWQmJmQuX19lc01vZHVsZT9mdW5jdGlvbigpe3JldHVybiBkLmRlZmF1bHR9OmZ1bmN0aW9uKCl7cmV0dXJuIGR9O3JldHVybiBjLmQoZSwiYSIsZSksZX0sYy5vPWZ1bmN0aW9uKGQsZSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLGUpfSxjLnA9Ii4iLGMoYy5zPTEwKX0oW2Z1bmN0aW9uKGgsYyl7aC5leHBvcnRzPXsiIyI6e3BhdHRlcm46L1xkL30sWDp7cGF0dGVybjovWzAtOWEtekEtWl0vfSxTOntwYXR0ZXJuOi9bYS16QS1aXS99LEE6e3BhdHRlcm46L1thLXpBLVpdLyx0cmFuc2Zvcm06ZnVuY3Rpb24oYSl7cmV0dXJuIGEudG9Mb2NhbGVVcHBlckNhc2UoKX19LGE6e3BhdHRlcm46L1thLXpBLVpdLyx0cmFuc2Zvcm06ZnVuY3Rpb24oYSl7cmV0dXJuIGEudG9Mb2NhbGVMb3dlckNhc2UoKX19LCIhIjp7ZXNjYXBlOiEwfX19LGZ1bmN0aW9uKGgsYyxhKXtmdW5jdGlvbiBkKGIpe3ZhciBmPQpkb2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnQiKTtyZXR1cm4gZi5pbml0RXZlbnQoYiwhMCwhMCksZn12YXIgZT1hKDIpO2g9YSgwKTt2YXIgbD1hLm4oaCk7Yy5hPWZ1bmN0aW9uKGIsZil7dmFyIGc9Zi52YWx1ZTtpZigoQXJyYXkuaXNBcnJheShnKXx8InN0cmluZyI9PXR5cGVvZiBnKSYmKGc9e21hc2s6Zyx0b2tlbnM6bC5hfSksIklOUFVUIiE9PWIudGFnTmFtZS50b0xvY2FsZVVwcGVyQ2FzZSgpKXtmPWIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0Iik7aWYoMSE9PWYubGVuZ3RoKXRocm93IEVycm9yKCJ2LW1hc2sgZGlyZWN0aXZlIHJlcXVpcmVzIDEgaW5wdXQsIGZvdW5kICIrZi5sZW5ndGgpO2I9ZlswXX1iLm9uaW5wdXQ9ZnVuY3Rpb24obSl7aWYobS5pc1RydXN0ZWQpe3ZhciBrPWIuc2VsZWN0aW9uRW5kO209Yi52YWx1ZVtrLTFdO2ZvcihiLnZhbHVlPWEuaShlLmEpKGIudmFsdWUsZy5tYXNrLCEwLGcudG9rZW5zKTtrPGIudmFsdWUubGVuZ3RoJiZiLnZhbHVlLmNoYXJBdChrLQoxKSE9PW07KWsrKztiPT09ZG9jdW1lbnQuYWN0aXZlRWxlbWVudCYmKGIuc2V0U2VsZWN0aW9uUmFuZ2UoayxrKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yi5zZXRTZWxlY3Rpb25SYW5nZShrLGspfSwwKSk7Yi5kaXNwYXRjaEV2ZW50KGQoImlucHV0IikpfX07Zj1hLmkoZS5hKShiLnZhbHVlLGcubWFzaywhMCxnLnRva2Vucyk7ZiE9PWIudmFsdWUmJihiLnZhbHVlPWYsYi5kaXNwYXRjaEV2ZW50KGQoImlucHV0IikpKX19LGZ1bmN0aW9uKGgsYyxhKXt2YXIgZD1hKDYpLGU9YSg1KTtjLmE9ZnVuY3Rpb24obCxiKXt2YXIgZj0hKDI8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdLGc9YXJndW1lbnRzWzNdO3JldHVybiBBcnJheS5pc0FycmF5KGIpP2EuaShlLmEpKGQuYSxiLGcpKGwsYixmLGcpOmEuaShkLmEpKGwsYixmLGcpfX0sZnVuY3Rpb24oaCxjLGEpe2Z1bmN0aW9uIGQoZyl7Zy5jb21wb25lbnQoYi5hLm5hbWUsYi5hKTsKZy5kaXJlY3RpdmUoIm1hc2siLGwuYSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KGMsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2g9YSgwKTt2YXIgZT1hLm4oaCksbD1hKDEpO2g9YSg3KTt2YXIgYj1hLm4oaCk7YS5kKGMsIlRoZU1hc2siLGZ1bmN0aW9uKCl7cmV0dXJuIGIuYX0pO2EuZChjLCJtYXNrIixmdW5jdGlvbigpe3JldHVybiBsLmF9KTthLmQoYywidG9rZW5zIixmdW5jdGlvbigpe3JldHVybiBlLmF9KTthLmQoYywidmVyc2lvbiIsZnVuY3Rpb24oKXtyZXR1cm4gZn0pO3ZhciBmPSIwLjExLjEiO2MuZGVmYXVsdD1kOyJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cuVnVlJiZ3aW5kb3cuVnVlLnVzZShkKX0sZnVuY3Rpb24oaCxjLGEpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShjLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtoPWEoMSk7dmFyIGQ9YSgwKSxlPWEubihkKSxsPWEoMik7Yy5kZWZhdWx0PXtuYW1lOiJUaGVNYXNrIixwcm9wczp7dmFsdWU6W1N0cmluZywKTnVtYmVyXSxtYXNrOnt0eXBlOltTdHJpbmcsQXJyYXldLHJlcXVpcmVkOiEwfSxtYXNrZWQ6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSx0b2tlbnM6e3R5cGU6T2JqZWN0LGRlZmF1bHQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5hfX19LGRpcmVjdGl2ZXM6e21hc2s6aC5hfSxkYXRhOmZ1bmN0aW9uKCl7cmV0dXJue2xhc3RWYWx1ZTpudWxsLGRpc3BsYXk6dGhpcy52YWx1ZX19LHdhdGNoOnt2YWx1ZTpmdW5jdGlvbihiKXtiIT09dGhpcy5sYXN0VmFsdWUmJih0aGlzLmRpc3BsYXk9Yil9LG1hc2tlZDpmdW5jdGlvbigpe3RoaXMucmVmcmVzaCh0aGlzLmRpc3BsYXkpfX0sY29tcHV0ZWQ6e2NvbmZpZzpmdW5jdGlvbigpe3JldHVybnttYXNrOnRoaXMubWFzayx0b2tlbnM6dGhpcy50b2tlbnMsbWFza2VkOnRoaXMubWFza2VkfX19LG1ldGhvZHM6e29uSW5wdXQ6ZnVuY3Rpb24oYil7Yi5pc1RydXN0ZWR8fHRoaXMucmVmcmVzaChiLnRhcmdldC52YWx1ZSl9LHJlZnJlc2g6ZnVuY3Rpb24oYil7dGhpcy5kaXNwbGF5PQpiO2I9YS5pKGwuYSkoYix0aGlzLm1hc2ssdGhpcy5tYXNrZWQsdGhpcy50b2tlbnMpO2IhPT10aGlzLmxhc3RWYWx1ZSYmKHRoaXMubGFzdFZhbHVlPWIsdGhpcy4kZW1pdCgiaW5wdXQiLGIpKX19fX0sZnVuY3Rpb24oaCxjLGEpe2MuYT1mdW5jdGlvbihkLGUsbCl7cmV0dXJuIGU9ZS5zb3J0KGZ1bmN0aW9uKGIsZil7cmV0dXJuIGIubGVuZ3RoLWYubGVuZ3RofSksZnVuY3Rpb24oYixmKXtmb3IodmFyIGc9ISgyPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1syXSl8fGFyZ3VtZW50c1syXSxtPTA7bTxlLmxlbmd0aDspe3ZhciBrPWVbbV07bSsrO3ZhciBuPWVbbV07aWYoIShuJiZkKGIsbiwhMCxsKS5sZW5ndGg+ay5sZW5ndGgpKXJldHVybiBkKGIsayxnLGwpfXJldHVybiIifX19LGZ1bmN0aW9uKGgsYyxhKXtjLmE9ZnVuY3Rpb24oZCxlKXt2YXIgbD0hKDI8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdLGI9CmFyZ3VtZW50c1szXTtkPWR8fCIiO2U9ZXx8IiI7Zm9yKHZhciBmPTAsZz0wLG09IiI7ZjxlLmxlbmd0aCYmZzxkLmxlbmd0aDspe3ZhciBrPWVbZl0sbj1iW2tdLHA9ZFtnXTtuJiYhbi5lc2NhcGU\/KG4ucGF0dGVybi50ZXN0KHApJiYobSs9bi50cmFuc2Zvcm0\/bi50cmFuc2Zvcm0ocCk6cCxmKyspLGcrKyk6KG4mJm4uZXNjYXBlJiYoZisrLGs9ZVtmXSksbCYmKG0rPWspLHA9PT1rJiZnKyssZisrKX1mb3IoZz0iIjtmPGUubGVuZ3RoJiZsOyl7az1lW2ZdO2lmKGJba10pe2c9IiI7YnJlYWt9Zys9aztmKyt9cmV0dXJuIG0rZ319LGZ1bmN0aW9uKGgsYyxhKXtjPWEoOCkoYSg0KSxhKDkpLG51bGwsbnVsbCk7aC5leHBvcnRzPWMuZXhwb3J0c30sZnVuY3Rpb24oaCxjKXtoLmV4cG9ydHM9ZnVuY3Rpb24oYSxkLGUsbCl7dmFyIGIsZj1hPWF8fHt9LGc9dHlwZW9mIGEuZGVmYXVsdDsib2JqZWN0IiE9PWcmJiJmdW5jdGlvbiIhPT1nfHwoYj1hLGY9YS5kZWZhdWx0KTthPSJmdW5jdGlvbiI9PQp0eXBlb2YgZj9mLm9wdGlvbnM6ZjtpZihkJiYoYS5yZW5kZXI9ZC5yZW5kZXIsYS5zdGF0aWNSZW5kZXJGbnM9ZC5zdGF0aWNSZW5kZXJGbnMpLGUmJihhLl9zY29wZUlkPWUpLGwpe3ZhciBtPWEuY29tcHV0ZWR8fChhLmNvbXB1dGVkPXt9KTtPYmplY3Qua2V5cyhsKS5mb3JFYWNoKGZ1bmN0aW9uKGspe3ZhciBuPWxba107bVtrXT1mdW5jdGlvbigpe3JldHVybiBufX0pfXJldHVybntlc01vZHVsZTpiLGV4cG9ydHM6ZixvcHRpb25zOmF9fX0sZnVuY3Rpb24oaCxjKXtoLmV4cG9ydHM9e3JlbmRlcjpmdW5jdGlvbigpe3ZhciBhPXRoaXMuJGNyZWF0ZUVsZW1lbnQ7cmV0dXJuKHRoaXMuX3NlbGYuX2N8fGEpKCJpbnB1dCIse2RpcmVjdGl2ZXM6W3tuYW1lOiJtYXNrIixyYXdOYW1lOiJ2LW1hc2siLHZhbHVlOnRoaXMuY29uZmlnLGV4cHJlc3Npb246ImNvbmZpZyJ9XSxhdHRyczp7dHlwZToidGV4dCJ9LGRvbVByb3BzOnt2YWx1ZTp0aGlzLmRpc3BsYXl9LG9uOntpbnB1dDp0aGlzLm9uSW5wdXR9fSl9LApzdGF0aWNSZW5kZXJGbnM6W119fSxmdW5jdGlvbihoLGMsYSl7aC5leHBvcnRzPWEoMyl9XSl9KTsKLyoqIC9tL2pzL2ZpbmFuY2VfbXVsdGlzdGVwLmpzICoqLwp2YXIgX19fZDJjX2ZpbmFuY2VtdWx0aXN0ZXBqc19jX29uPSIyMDI2LTAzLTA2IDA5OjMwOjAzIjsndXNlIHN0cmljdCc7dmFyICRqc2NvbXA9JGpzY29tcHx8e307JGpzY29tcC5zY29wZT17fTskanNjb21wLkFTU1VNRV9FUzU9ITE7JGpzY29tcC5BU1NVTUVfTk9fTkFUSVZFX01BUD0hMTskanNjb21wLkFTU1VNRV9OT19OQVRJVkVfU0VUPSExOyRqc2NvbXAuU0lNUExFX0ZST1VORF9QT0xZRklMTD0hMTskanNjb21wLklTT0xBVEVfUE9MWUZJTExTPSExOyRqc2NvbXAuRk9SQ0VfUE9MWUZJTExfUFJPTUlTRT0hMTskanNjb21wLkZPUkNFX1BPTFlGSUxMX1BST01JU0VfV0hFTl9OT19VTkhBTkRMRURfUkVKRUNUSU9OPSExOyRqc2NvbXAuZGVmaW5lUHJvcGVydHk9JGpzY29tcC5BU1NVTUVfRVM1fHwiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmRlZmluZVByb3BlcnRpZXM\/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKGIsaCxtKXtpZihiPT1BcnJheS5wcm90b3R5cGV8fGI9PU9iamVjdC5wcm90b3R5cGUpcmV0dXJuIGI7YltoXT1tLnZhbHVlO3JldHVybiBifTsKJGpzY29tcC5nZXRHbG9iYWw9ZnVuY3Rpb24oYil7Yj1bIm9iamVjdCI9PXR5cGVvZiBnbG9iYWxUaGlzJiZnbG9iYWxUaGlzLGIsIm9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdywib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYsIm9iamVjdCI9PXR5cGVvZiBnbG9iYWwmJmdsb2JhbF07Zm9yKHZhciBoPTA7aDxiLmxlbmd0aDsrK2gpe3ZhciBtPWJbaF07aWYobSYmbS5NYXRoPT1NYXRoKXJldHVybiBtfXRocm93IEVycm9yKCJDYW5ub3QgZmluZCBnbG9iYWwgb2JqZWN0Iik7fTskanNjb21wLmdsb2JhbD0kanNjb21wLmdldEdsb2JhbCh0aGlzKTskanNjb21wLklTX1NZTUJPTF9OQVRJVkU9ImZ1bmN0aW9uIj09PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT09dHlwZW9mIFN5bWJvbCgieCIpOyRqc2NvbXAuVFJVU1RfRVM2X1BPTFlGSUxMUz0hJGpzY29tcC5JU09MQVRFX1BPTFlGSUxMU3x8JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFOyRqc2NvbXAucG9seWZpbGxzPXt9OwokanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbD17fTskanNjb21wLlBPTFlGSUxMX1BSRUZJWD0iJGpzY3AkIjt2YXIgJGpzY29tcCRsb29rdXBQb2x5ZmlsbGVkVmFsdWU9ZnVuY3Rpb24oYixoKXt2YXIgbT0kanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbFtoXTtpZihudWxsPT1tKXJldHVybiBiW2hdO209YlttXTtyZXR1cm4gdm9pZCAwIT09bT9tOmJbaF19OyRqc2NvbXAucG9seWZpbGw9ZnVuY3Rpb24oYixoLG0sbil7aCYmKCRqc2NvbXAuSVNPTEFURV9QT0xZRklMTFM\/JGpzY29tcC5wb2x5ZmlsbElzb2xhdGVkKGIsaCxtLG4pOiRqc2NvbXAucG9seWZpbGxVbmlzb2xhdGVkKGIsaCxtLG4pKX07CiRqc2NvbXAucG9seWZpbGxVbmlzb2xhdGVkPWZ1bmN0aW9uKGIsaCxtLG4pe209JGpzY29tcC5nbG9iYWw7Yj1iLnNwbGl0KCIuIik7Zm9yKG49MDtuPGIubGVuZ3RoLTE7bisrKXt2YXIgcT1iW25dO2lmKCEocSBpbiBtKSlyZXR1cm47bT1tW3FdfWI9YltiLmxlbmd0aC0xXTtuPW1bYl07aD1oKG4pO2ghPW4mJm51bGwhPWgmJiRqc2NvbXAuZGVmaW5lUHJvcGVydHkobSxiLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6aH0pfTsKJGpzY29tcC5wb2x5ZmlsbElzb2xhdGVkPWZ1bmN0aW9uKGIsaCxtLG4pe3ZhciBxPWIuc3BsaXQoIi4iKTtiPTE9PT1xLmxlbmd0aDtuPXFbMF07bj0hYiYmbiBpbiAkanNjb21wLnBvbHlmaWxscz8kanNjb21wLnBvbHlmaWxsczokanNjb21wLmdsb2JhbDtmb3IodmFyIHY9MDt2PHEubGVuZ3RoLTE7disrKXt2YXIgeT1xW3ZdO2lmKCEoeSBpbiBuKSlyZXR1cm47bj1uW3ldfXE9cVtxLmxlbmd0aC0xXTttPSRqc2NvbXAuSVNfU1lNQk9MX05BVElWRSYmImVzNiI9PT1tP25bcV06bnVsbDtoPWgobSk7bnVsbCE9aCYmKGI\/JGpzY29tcC5kZWZpbmVQcm9wZXJ0eSgkanNjb21wLnBvbHlmaWxscyxxLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6aH0pOmghPT1tJiYodm9pZCAwPT09JGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbcV0mJihtPTFFOSpNYXRoLnJhbmRvbSgpPj4+MCwkanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbFtxXT0kanNjb21wLklTX1NZTUJPTF9OQVRJVkU\/CiRqc2NvbXAuZ2xvYmFsLlN5bWJvbChxKTokanNjb21wLlBPTFlGSUxMX1BSRUZJWCttKyIkIitxKSwkanNjb21wLmRlZmluZVByb3BlcnR5KG4sJGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbcV0se2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpofSkpKX07JGpzY29tcC51bmRlcnNjb3JlUHJvdG9DYW5CZVNldD1mdW5jdGlvbigpe3ZhciBiPXthOiEwfSxoPXt9O3RyeXtyZXR1cm4gaC5fX3Byb3RvX189YixoLmF9Y2F0Y2gobSl7fXJldHVybiExfTsKJGpzY29tcC5zZXRQcm90b3R5cGVPZj0kanNjb21wLlRSVVNUX0VTNl9QT0xZRklMTFMmJiJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3Quc2V0UHJvdG90eXBlT2Y\/T2JqZWN0LnNldFByb3RvdHlwZU9mOiRqc2NvbXAudW5kZXJzY29yZVByb3RvQ2FuQmVTZXQoKT9mdW5jdGlvbihiLGgpe2IuX19wcm90b19fPWg7aWYoYi5fX3Byb3RvX18hPT1oKXRocm93IG5ldyBUeXBlRXJyb3IoYisiIGlzIG5vdCBleHRlbnNpYmxlIik7cmV0dXJuIGJ9Om51bGw7JGpzY29tcC5hcnJheUl0ZXJhdG9ySW1wbD1mdW5jdGlvbihiKXt2YXIgaD0wO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBoPGIubGVuZ3RoP3tkb25lOiExLHZhbHVlOmJbaCsrXX06e2RvbmU6ITB9fX07JGpzY29tcC5hcnJheUl0ZXJhdG9yPWZ1bmN0aW9uKGIpe3JldHVybntuZXh0OiRqc2NvbXAuYXJyYXlJdGVyYXRvckltcGwoYil9fTsKJGpzY29tcC5tYWtlSXRlcmF0b3I9ZnVuY3Rpb24oYil7dmFyIGg9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvciYmYltTeW1ib2wuaXRlcmF0b3JdO3JldHVybiBoP2guY2FsbChiKTokanNjb21wLmFycmF5SXRlcmF0b3IoYil9OyRqc2NvbXAuZ2VuZXJhdG9yPXt9OyRqc2NvbXAuZ2VuZXJhdG9yLmVuc3VyZUl0ZXJhdG9yUmVzdWx0SXNPYmplY3RfPWZ1bmN0aW9uKGIpe2lmKCEoYiBpbnN0YW5jZW9mIE9iamVjdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiSXRlcmF0b3IgcmVzdWx0ICIrYisiIGlzIG5vdCBhbiBvYmplY3QiKTt9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0PWZ1bmN0aW9uKCl7dGhpcy5pc1J1bm5pbmdfPSExO3RoaXMueWllbGRBbGxJdGVyYXRvcl89bnVsbDt0aGlzLnlpZWxkUmVzdWx0PXZvaWQgMDt0aGlzLm5leHRBZGRyZXNzPTE7dGhpcy5maW5hbGx5QWRkcmVzc189dGhpcy5jYXRjaEFkZHJlc3NfPTA7dGhpcy5maW5hbGx5Q29udGV4dHNfPXRoaXMuYWJydXB0Q29tcGxldGlvbl89bnVsbH07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuc3RhcnRfPWZ1bmN0aW9uKCl7aWYodGhpcy5pc1J1bm5pbmdfKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTt0aGlzLmlzUnVubmluZ189ITB9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnN0b3BfPWZ1bmN0aW9uKCl7dGhpcy5pc1J1bm5pbmdfPSExfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuanVtcFRvRXJyb3JIYW5kbGVyXz1mdW5jdGlvbigpe3RoaXMubmV4dEFkZHJlc3M9dGhpcy5jYXRjaEFkZHJlc3NffHx0aGlzLmZpbmFsbHlBZGRyZXNzX307JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUubmV4dF89ZnVuY3Rpb24oYil7dGhpcy55aWVsZFJlc3VsdD1ifTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS50aHJvd189ZnVuY3Rpb24oYil7dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz17ZXhjZXB0aW9uOmIsaXNFeGNlcHRpb246ITB9O3RoaXMuanVtcFRvRXJyb3JIYW5kbGVyXygpfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5yZXR1cm49ZnVuY3Rpb24oYil7dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz17cmV0dXJuOmJ9O3RoaXMubmV4dEFkZHJlc3M9dGhpcy5maW5hbGx5QWRkcmVzc199OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5qdW1wVGhyb3VnaEZpbmFsbHlCbG9ja3M9ZnVuY3Rpb24oYil7dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz17anVtcFRvOmJ9O3RoaXMubmV4dEFkZHJlc3M9dGhpcy5maW5hbGx5QWRkcmVzc199OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnlpZWxkPWZ1bmN0aW9uKGIsaCl7dGhpcy5uZXh0QWRkcmVzcz1oO3JldHVybnt2YWx1ZTpifX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUueWllbGRBbGw9ZnVuY3Rpb24oYixoKXtiPSRqc2NvbXAubWFrZUl0ZXJhdG9yKGIpO3ZhciBtPWIubmV4dCgpOyRqc2NvbXAuZ2VuZXJhdG9yLmVuc3VyZUl0ZXJhdG9yUmVzdWx0SXNPYmplY3RfKG0pO2lmKG0uZG9uZSl0aGlzLnlpZWxkUmVzdWx0PW0udmFsdWUsdGhpcy5uZXh0QWRkcmVzcz1oO2Vsc2UgcmV0dXJuIHRoaXMueWllbGRBbGxJdGVyYXRvcl89Yix0aGlzLnlpZWxkKG0udmFsdWUsaCl9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5qdW1wVG89ZnVuY3Rpb24oYil7dGhpcy5uZXh0QWRkcmVzcz1ifTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5qdW1wVG9FbmQ9ZnVuY3Rpb24oKXt0aGlzLm5leHRBZGRyZXNzPTB9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnNldENhdGNoRmluYWxseUJsb2Nrcz1mdW5jdGlvbihiLGgpe3RoaXMuY2F0Y2hBZGRyZXNzXz1iO3ZvaWQgMCE9aCYmKHRoaXMuZmluYWxseUFkZHJlc3NfPWgpfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5zZXRGaW5hbGx5QmxvY2s9ZnVuY3Rpb24oYil7dGhpcy5jYXRjaEFkZHJlc3NfPTA7dGhpcy5maW5hbGx5QWRkcmVzc189Ynx8MH07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUubGVhdmVUcnlCbG9jaz1mdW5jdGlvbihiLGgpe3RoaXMubmV4dEFkZHJlc3M9Yjt0aGlzLmNhdGNoQWRkcmVzc189aHx8MH07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmVudGVyQ2F0Y2hCbG9jaz1mdW5jdGlvbihiKXt0aGlzLmNhdGNoQWRkcmVzc189Ynx8MDtiPXRoaXMuYWJydXB0Q29tcGxldGlvbl8uZXhjZXB0aW9uO3RoaXMuYWJydXB0Q29tcGxldGlvbl89bnVsbDtyZXR1cm4gYn07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuZW50ZXJGaW5hbGx5QmxvY2s9ZnVuY3Rpb24oYixoLG0pe20\/dGhpcy5maW5hbGx5Q29udGV4dHNfW21dPXRoaXMuYWJydXB0Q29tcGxldGlvbl86dGhpcy5maW5hbGx5Q29udGV4dHNfPVt0aGlzLmFicnVwdENvbXBsZXRpb25fXTt0aGlzLmNhdGNoQWRkcmVzc189Ynx8MDt0aGlzLmZpbmFsbHlBZGRyZXNzXz1ofHwwfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUubGVhdmVGaW5hbGx5QmxvY2s9ZnVuY3Rpb24oYixoKXtoPXRoaXMuZmluYWxseUNvbnRleHRzXy5zcGxpY2UoaHx8MClbMF07aWYoaD10aGlzLmFicnVwdENvbXBsZXRpb25fPXRoaXMuYWJydXB0Q29tcGxldGlvbl98fGgpe2lmKGguaXNFeGNlcHRpb24pcmV0dXJuIHRoaXMuanVtcFRvRXJyb3JIYW5kbGVyXygpO3ZvaWQgMCE9aC5qdW1wVG8mJnRoaXMuZmluYWxseUFkZHJlc3NfPGguanVtcFRvPyh0aGlzLm5leHRBZGRyZXNzPWguanVtcFRvLHRoaXMuYWJydXB0Q29tcGxldGlvbl89bnVsbCk6dGhpcy5uZXh0QWRkcmVzcz10aGlzLmZpbmFsbHlBZGRyZXNzX31lbHNlIHRoaXMubmV4dEFkZHJlc3M9Yn07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuZm9ySW49ZnVuY3Rpb24oYil7cmV0dXJuIG5ldyAkanNjb21wLmdlbmVyYXRvci5Db250ZXh0LlByb3BlcnR5SXRlcmF0b3IoYil9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LlByb3BlcnR5SXRlcmF0b3I9ZnVuY3Rpb24oYil7dGhpcy5vYmplY3RfPWI7dGhpcy5wcm9wZXJ0aWVzXz1bXTtmb3IodmFyIGggaW4gYil0aGlzLnByb3BlcnRpZXNfLnB1c2goaCk7dGhpcy5wcm9wZXJ0aWVzXy5yZXZlcnNlKCl9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQuUHJvcGVydHlJdGVyYXRvci5wcm90b3R5cGUuZ2V0TmV4dD1mdW5jdGlvbigpe2Zvcig7MDx0aGlzLnByb3BlcnRpZXNfLmxlbmd0aDspe3ZhciBiPXRoaXMucHJvcGVydGllc18ucG9wKCk7aWYoYiBpbiB0aGlzLm9iamVjdF8pcmV0dXJuIGJ9cmV0dXJuIG51bGx9OyRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV89ZnVuY3Rpb24oYil7dGhpcy5jb250ZXh0Xz1uZXcgJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dDt0aGlzLnByb2dyYW1fPWJ9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS5uZXh0Xz1mdW5jdGlvbihiKXt0aGlzLmNvbnRleHRfLnN0YXJ0XygpO2lmKHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl8pcmV0dXJuIHRoaXMueWllbGRBbGxTdGVwXyh0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfLm5leHQsYix0aGlzLmNvbnRleHRfLm5leHRfKTt0aGlzLmNvbnRleHRfLm5leHRfKGIpO3JldHVybiB0aGlzLm5leHRTdGVwXygpfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUucmV0dXJuXz1mdW5jdGlvbihiKXt0aGlzLmNvbnRleHRfLnN0YXJ0XygpO3ZhciBoPXRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl87aWYoaClyZXR1cm4gdGhpcy55aWVsZEFsbFN0ZXBfKCJyZXR1cm4iaW4gaD9oWyJyZXR1cm4iXTpmdW5jdGlvbihtKXtyZXR1cm57dmFsdWU6bSxkb25lOiEwfX0sYix0aGlzLmNvbnRleHRfLnJldHVybik7dGhpcy5jb250ZXh0Xy5yZXR1cm4oYik7cmV0dXJuIHRoaXMubmV4dFN0ZXBfKCl9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS50aHJvd189ZnVuY3Rpb24oYil7dGhpcy5jb250ZXh0Xy5zdGFydF8oKTtpZih0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfKXJldHVybiB0aGlzLnlpZWxkQWxsU3RlcF8odGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yX1sidGhyb3ciXSxiLHRoaXMuY29udGV4dF8ubmV4dF8pO3RoaXMuY29udGV4dF8udGhyb3dfKGIpO3JldHVybiB0aGlzLm5leHRTdGVwXygpfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUueWllbGRBbGxTdGVwXz1mdW5jdGlvbihiLGgsbSl7dHJ5e3ZhciBuPWIuY2FsbCh0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfLGgpOyRqc2NvbXAuZ2VuZXJhdG9yLmVuc3VyZUl0ZXJhdG9yUmVzdWx0SXNPYmplY3RfKG4pO2lmKCFuLmRvbmUpcmV0dXJuIHRoaXMuY29udGV4dF8uc3RvcF8oKSxuO3ZhciBxPW4udmFsdWV9Y2F0Y2godil7cmV0dXJuIHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl89bnVsbCx0aGlzLmNvbnRleHRfLnRocm93Xyh2KSx0aGlzLm5leHRTdGVwXygpfXRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl89bnVsbDttLmNhbGwodGhpcy5jb250ZXh0XyxxKTtyZXR1cm4gdGhpcy5uZXh0U3RlcF8oKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLm5leHRTdGVwXz1mdW5jdGlvbigpe2Zvcig7dGhpcy5jb250ZXh0Xy5uZXh0QWRkcmVzczspdHJ5e3ZhciBiPXRoaXMucHJvZ3JhbV8odGhpcy5jb250ZXh0Xyk7aWYoYilyZXR1cm4gdGhpcy5jb250ZXh0Xy5zdG9wXygpLHt2YWx1ZTpiLnZhbHVlLGRvbmU6ITF9fWNhdGNoKGgpe3RoaXMuY29udGV4dF8ueWllbGRSZXN1bHQ9dm9pZCAwLHRoaXMuY29udGV4dF8udGhyb3dfKGgpfXRoaXMuY29udGV4dF8uc3RvcF8oKTtpZih0aGlzLmNvbnRleHRfLmFicnVwdENvbXBsZXRpb25fKXtiPXRoaXMuY29udGV4dF8uYWJydXB0Q29tcGxldGlvbl87dGhpcy5jb250ZXh0Xy5hYnJ1cHRDb21wbGV0aW9uXz1udWxsO2lmKGIuaXNFeGNlcHRpb24pdGhyb3cgYi5leGNlcHRpb247cmV0dXJue3ZhbHVlOmIucmV0dXJuLGRvbmU6ITB9fXJldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19OwokanNjb21wLmdlbmVyYXRvci5HZW5lcmF0b3JfPWZ1bmN0aW9uKGIpe3RoaXMubmV4dD1mdW5jdGlvbihoKXtyZXR1cm4gYi5uZXh0XyhoKX07dGhpcy50aHJvdz1mdW5jdGlvbihoKXtyZXR1cm4gYi50aHJvd18oaCl9O3RoaXMucmV0dXJuPWZ1bmN0aW9uKGgpe3JldHVybiBiLnJldHVybl8oaCl9O3RoaXNbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfX07JGpzY29tcC5nZW5lcmF0b3IuY3JlYXRlR2VuZXJhdG9yPWZ1bmN0aW9uKGIsaCl7aD1uZXcgJGpzY29tcC5nZW5lcmF0b3IuR2VuZXJhdG9yXyhuZXcgJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXyhoKSk7JGpzY29tcC5zZXRQcm90b3R5cGVPZiYmYi5wcm90b3R5cGUmJiRqc2NvbXAuc2V0UHJvdG90eXBlT2YoaCxiLnByb3RvdHlwZSk7cmV0dXJuIGh9OwokanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3I9ZnVuY3Rpb24oYil7ZnVuY3Rpb24gaChuKXtyZXR1cm4gYi5uZXh0KG4pfWZ1bmN0aW9uIG0obil7cmV0dXJuIGIudGhyb3cobil9cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKG4scSl7ZnVuY3Rpb24gdih5KXt5LmRvbmU\/bih5LnZhbHVlKTpQcm9taXNlLnJlc29sdmUoeS52YWx1ZSkudGhlbihoLG0pLnRoZW4odixxKX12KGIubmV4dCgpKX0pfTskanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3JGdW5jdGlvbj1mdW5jdGlvbihiKXtyZXR1cm4gJGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yKGIoKSl9OyRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvclByb2dyYW09ZnVuY3Rpb24oYil7cmV0dXJuICRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvcihuZXcgJGpzY29tcC5nZW5lcmF0b3IuR2VuZXJhdG9yXyhuZXcgJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXyhiKSkpfTsKZnVuY3Rpb24gaW5pdGlhbGl6ZUZpbmFuY2VNdWx0aVN0ZXAoYil7ZnVuY3Rpb24gaChkKXtzd2l0Y2goZCl7Y2FzZSAiRW1haWwgcHJvdmlkZWQiOmNhc2UgIlBob25lIHByb3ZpZGVkIjpPfHwoJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0iLGIpLnRyaWdnZXIoInBvcHVwaXplci5zdWJtaXR0ZWQiKSxPPSEwKX0iZnVuY3Rpb24iPT09dHlwZW9mIGdhVHJhY2smJmdhVHJhY2soIl90cmFja0V2ZW50IiwiVXNlZC1TUlAtRmluYW5jZS1Qb3B1cCIsZCx3aW5kb3cubG9jYXRpb24uaHJlZiwxKX1mdW5jdGlvbiBtKGQpeyQuYWpheCh7dXJsOiIvIit3KyIvYWpheC9nZXRCYW5uZXJTZWFyY2hCYXJNYWtlcz93c3dpZHRoPTAiLGRhdGFUeXBlOiJKU09OIixkYXRhOnt0eXBlOmQudG9Mb3dlckNhc2UoKX0sc3VjY2VzczpmdW5jdGlvbihjKXskKCIjZmluYW5jZU11bHRpc3RlcE1ha2UiLGIpLmh0bWwoJCgiI2ZpbmFuY2VNdWx0aXN0ZXBNYWtlIG9wdGlvbjpmaXJzdCIsCmIpWzBdLm91dGVySFRNTCk7JCgiI2ZpbmFuY2VNdWx0aXN0ZXBNb2RlbCIsYikuaHRtbCgkKCIjZmluYW5jZU11bHRpc3RlcE1vZGVsIG9wdGlvbjpmaXJzdCIsYilbMF0ub3V0ZXJIVE1MKTskKCIjZmluYW5jZU11bHRpc3RlcFRyaW0iLGIpLmh0bWwoJCgiI2ZpbmFuY2VNdWx0aXN0ZXBUcmltIG9wdGlvbjpmaXJzdCIsYilbMF0ub3V0ZXJIVE1MKTskLmVhY2goYyxmdW5jdGlvbihlLGYpeyQoIiNmaW5hbmNlTXVsdGlzdGVwTWFrZSIsYikuYXBwZW5kKCc8b3B0aW9uIHZhbHVlPSInK2YubWFrZSsnIj4nK2YudGl0bGUyKyI8L29wdGlvbj4iKX0pfX0pfWZ1bmN0aW9uIG4oZCxjKXskLmFqYXgoe3VybDoiLyIrdysiL2FqYXgvZ2V0QmFubmVyU2VhcmNoQmFyTW9kZWxzP3dzd2lkdGg9MCIsZGF0YVR5cGU6IkpTT04iLGRhdGE6e21ha2U6YnRvYShjKSx0eXBlOmQudG9Mb3dlckNhc2UoKX0sc3VjY2VzczpmdW5jdGlvbihlKXskKCIjZmluYW5jZU11bHRpc3RlcE1vZGVsIiwKYikuaHRtbCgkKCIjZmluYW5jZU11bHRpc3RlcE1vZGVsIG9wdGlvbjpmaXJzdCIsYilbMF0ub3V0ZXJIVE1MKTskKCIjZmluYW5jZU11bHRpc3RlcFRyaW0iLGIpLmh0bWwoJCgiI2ZpbmFuY2VNdWx0aXN0ZXBUcmltIG9wdGlvbjpmaXJzdCIsYilbMF0ub3V0ZXJIVE1MKTskLmVhY2goZSxmdW5jdGlvbihmLGcpeyQoIiNmaW5hbmNlTXVsdGlzdGVwTW9kZWwiLGIpLmFwcGVuZCgnPG9wdGlvbiBkYXRhLW1vZGVsPSInK2cubW9kZWxOYW1lKyciIGRhdGEteWVhcj0iJytnLnllYXIrJyIgdmFsdWU9IicrZy50aXRsZTIrJyI+JytnLnRpdGxlMisiPC9vcHRpb24+Iil9KX19KX1mdW5jdGlvbiBxKGQsYyxlKXskLmFqYXgoe3VybDoiLyIrdysiL2FqYXgvZ2V0TmV3VHJpbXM\/d3N3aWR0aD0wIixkYXRhVHlwZToiSlNPTiIsZGF0YTp7bWFrZTpkLG1vZGVsOmMseWVhcjplfSxzdWNjZXNzOmZ1bmN0aW9uKGYpeyQoIiNmaW5hbmNlTXVsdGlzdGVwVHJpbSIsCmIpLmh0bWwoJCgiI2ZpbmFuY2VNdWx0aXN0ZXBUcmltIG9wdGlvbjpmaXJzdCIsYilbMF0ub3V0ZXJIVE1MKTskLmVhY2goZixmdW5jdGlvbihnLGwpeyQoIiNmaW5hbmNlTXVsdGlzdGVwVHJpbSIsYikuYXBwZW5kKCc8b3B0aW9uIGRhdGEtcHJpY2U9IicrbC5wcmljZSsnIiBkYXRhLXN0eWxlaWQ9IicrbC5zdHlsZWlkKyciIHZhbHVlPSInK2wudHJpbSsnIj4nK2wudHJpbSsiPC9vcHRpb24+Iil9KX19KX1mdW5jdGlvbiB2KGQsYyl7JC5hamF4KHt1cmw6Ii8iK3crIi9hamF4L2dldEludmVudG9yeVRyaW1zP3dzd2lkdGg9MCIsZGF0YVR5cGU6IkpTT04iLGRhdGE6e21ha2U6ZCxtb2RlbDpjfSxzdWNjZXNzOmZ1bmN0aW9uKGUpeyQoIiNmaW5hbmNlTXVsdGlzdGVwVHJpbSIsYikuaHRtbCgkKCIjZmluYW5jZU11bHRpc3RlcFRyaW0gb3B0aW9uOmZpcnN0IixiKVswXS5vdXRlckhUTUwpOyQuZWFjaChlLGZ1bmN0aW9uKGYsZyl7JCgiI2ZpbmFuY2VNdWx0aXN0ZXBUcmltIiwKYikuYXBwZW5kKCc8b3B0aW9uIGRhdGEtcHJpY2U9IicrZy5vcmlnaW5hbHByaWNlKyciIGRhdGEtdmVoaWNsZWlkPSInK2cudmVoaWNsZWlkKyciIGRhdGEteWVhcj0iJytnLnllYXIrJyIgZGF0YS1pc25ldz0iJytnLmlzbmV3KyciIGRhdGEtaXNkZW1vPSInK2cuZGVtbysnIiBkYXRhLXN0b2NrbnVtYmVyPSInK2cuc3RvY2tudW1iZXIrJyIgZGF0YS1taWxlYWdlPSInK2cubWlsZWFnZSsnIiBkYXRhLXN0eWxlaWQ9IicrZy5zdHlsZWlkKyciIHZhbHVlPSInK2cudHJpbSsnIj4nK2cudGl0bGUrIjwvb3B0aW9uPiIpfSl9fSl9ZnVuY3Rpb24geShkKXskLmFqYXgoe3VybDoiLyIrdysiL2FqYXgvZ2V0VXNlZENhbGN1bGF0b3JIVE1MP3dzd2lkdGg9MCIsZGF0YVR5cGU6IkpTT04iLGRhdGE6e2NhcmlkOmR9LHN1Y2Nlc3M6ZnVuY3Rpb24oYyl7Yy52YWxpZD8oJCgiI2ZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciIsYikuaHRtbChjLmh0bWwpLAokKCIjZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIixiKS5maW5kKCIuY2FsYy1mb3JtIikuZmluZCgiLnVzZWRDYWxjdWxhdG9yRG93blBheW1lbnQiKS5hZnRlcigkKCIuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yVHJhZGVJbiIsYikuaHRtbCgpKSxWKCksJCgiI2ZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAucGF5bWVudENhbGN1bGF0b3JUcmFkZUluRmluYWwiKS52YWwoYS5mb3JtZGF0YS50cmFkZUluVmFsdWUpLCQoIiNmaW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLnBheW1lbnRDYWxjdWxhdG9yVHJhZGVJbkZpbmFsIikuYXR0cigibWF4IixhLmZvcm1kYXRhLnRyYWRlSW5WYWx1ZSksJCgiI2ZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciIsYikuc2hvdygpKTooYS5mb3JtZGF0YS5ub1BheW1lbnQ9ITAsJCgiI2ZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciIsYikuaGlkZSgpLGEubmV4dCghMCkpfX0pfWZ1bmN0aW9uIFYoKXskKCIuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5kb3ducGF5bWVudCIpLm9uKCJibHVyIiwKZnVuY3Rpb24oKXtDKCl9KTskKCIuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5ub09mTW9udGhzIikub24oImNoYW5nZSIsZnVuY3Rpb24oKXt2YXIgZD0kKHRoaXMpLmZpbmQoIm9wdGlvbjpzZWxlY3RlZCIpOyQoIi5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLmludGVyZXN0cmF0ZSIpLnZhbChkLmF0dHIoImRhdGEtcmF0ZSIpKTtDKCl9KTskKCIuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5wYXltZW50RnJlcXVlbmN5Iikub24oImNoYW5nZSIsZnVuY3Rpb24oKXtDKCl9KTtDKCl9ZnVuY3Rpb24gQygpe3ZhciBkPXBhcnNlRmxvYXQoJCgiLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAuaW50ZXJlc3RyYXRlIixiKS52YWwoKS5yZXBsYWNlKCIsIiwiLiIpKS50b0ZpeGVkKDIpLzEwMCxjPXBhcnNlRmxvYXQoJCgiLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAubm9PZk1vbnRocyIsYikudmFsKCkpLzEyLGU9cGFyc2VGbG9hdCgkKCIuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5sb2FuYW1vdW50IiwKYikudmFsKCkpLnRvRml4ZWQoMik7JCgiLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAuZmVlYW1vdW50IixiKS5sZW5ndGgmJihlPXBhcnNlRmxvYXQoZSkrcGFyc2VGbG9hdCgkKCIuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5mZWVhbW91bnQiLGIpLnZhbCgpLnJlcGxhY2UoIiwiLCIiKSkpOzE9PSQoIiN1c2V0YXhlcyIsYikudmFsKCkmJihlKj1wYXJzZUZsb2F0KCQoIiN0YXhlcyIpLnZhbCgpKS50b0ZpeGVkKDIpLzEwMCsxKTswPCQoIi5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLmRvd25wYXltZW50IixiKS52YWwoKSYmKGUtPXBhcnNlRmxvYXQoJCgiLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAuZG93bnBheW1lbnQiLGIpLnZhbCgpKS50b0ZpeGVkKDIpKTt2YXIgZj0iIixnPTEyO3N3aXRjaCgkKCIuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5wYXltZW50RnJlcXVlbmN5IixiKS52YWwoKSl7Y2FzZSAid2VlayI6Zz0KNTI7Zj0kKCIjd2Vla1RleHQiKS52YWwoKTticmVhaztjYXNlICIyd2Vla3MiOmc9MjY7Zj0kKCIjMndlZWtzVGV4dCIpLnZhbCgpO2JyZWFrO2Nhc2UgIm1vbnRobHkiOmY9JCgiI21vbnRobHlUZXh0IikudmFsKCk7Zz0xMjticmVhaztjYXNlICJiaW1vbnRobHkiOmY9JCgiI2JpbW9udGhseVRleHQiKS52YWwoKSxnPTI0fWMqPWc7MDxkPyhkLz1nLGc9TWF0aC5wb3coZCsxLGMpLGUqPWQqZy8oZy0xKSk6ZS89YztlPU1hdGgucm91bmQoMTAwKmUpLzEwMDtpc05hTihlKSYmKGU9MCk7JCgiLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAub3V0cHV0cHJpY2UiLGIpLnZhbCgiJCIrZSk7JCgiLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAub3V0cHV0cHJpY2UtdHh0IixiKS5odG1sKCIkIitlKTtmPSQoIiNlc3RpbWRhdGVkUGF5bWVudFRleHQiLGIpLnZhbCgpLnJlcGxhY2UoIiMjRlJFUVVFTkNZIyMiLGYpOyQoIi5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLmVzdGltYXRlZFRleHQiLApiKS5odG1sKCI8c3Ryb25nPiIrZisiPC9zdHJvbmc+Iik7Zj0kKCJib2R5IikuaGFzQ2xhc3MoIkZSRU5DSCIpPyJGaW5hbmNlbWVudCI6IkZpbmFuY2luZyI7YS5mb3JtZGF0YS5wYXltZW50VHlwZT1mO2EuZm9ybWRhdGEucGF5bWVudFR5cGVSZWFsPSJmaW5hbmNpbmciO2EuZm9ybWRhdGEucGF5bWVudFRlcm09JCgiLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAubm9PZk1vbnRocyIsYikudmFsKCk7YS5mb3JtZGF0YS5wYXltZW50VmFsdWU9ZTthLmZvcm1kYXRhLnBheW1lbnREb3duUGF5bWVudD0kKCIuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5kb3ducGF5bWVudCIsYikudmFsKCl8fDA7YS5mb3JtZGF0YS5wYXltZW50SW50ZXJ2YWw9JCgiLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAucGF5bWVudEZyZXF1ZW5jeSIsYikudmFsKCk7YS5mb3JtZGF0YS5wYXltZW50UmF0ZT0kKCIuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5pbnRlcmVzdHJhdGUiLApiKS52YWwoKTthLmZvcm1kYXRhLnZlaGljbGVJbml0aWFsUHJpY2U9cGFyc2VJbnQoJCgiLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAubG9hbmFtb3VudCIsYikudmFsKCkpO2Y9cGFyc2VJbnQoJCgiLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAuZmVlYW1vdW50IixiKS52YWwoKS5yZXBsYWNlKCIsIiwiIikpO2EuZm9ybWRhdGEudmVoaWNsZUZpbmFsUHJpY2U9cGFyc2VJbnQoJCgiLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAubG9hbmFtb3VudCIsYikudmFsKCkpK2Y7YS5mb3JtZGF0YS5wYXltZW50VG90YWxGZWU9ZjtrLmNoZWNrVmFsaWRpdHkoKX1mdW5jdGlvbiBQKCl7IjEiPT0kKCIjRklOQU5DRV9NVUxUSVNURVBfaXNJbnN0YW50IixiKS52YWwoKSYmKCQoYikuZmluZCgiLmNvbmZpcm1hdGlvblRpdGxlIikuaGlkZSgpLCQoYikuZmluZCgiLmNvbmZpcm1hdGlvblRleHQiKS5zaG93KCksJChiKS5maW5kKCIuY3JlZGl0RGVjaXNpb24iKS5odG1sKCIiKSwKJChiKS5maW5kKCIuY3JlZGl0RGVjaXNpb24iKS5oaWRlKCkpO2lmKF9sb2NhbFN0b3JhZ2VHZXQoInRyYWRlaW5fc3VibWl0X2RhdGEiKSYmIiI9PSQoImlucHV0W25hbWU9ZmluYW5jZVRyYWRlSW5NYWtlXSIpLnZhbCgpKXt2YXIgZD1KU09OLnBhcnNlKF9sb2NhbFN0b3JhZ2VHZXQoInRyYWRlaW5fc3VibWl0X2RhdGEiKSk7JCgiaW5wdXRbbmFtZT1maW5hbmNlVHJhZGVJbk1ha2VdIikudmFsKGQubWFrZSk7JCgiaW5wdXRbbmFtZT1maW5hbmNlVHJhZGVJbk1vZGVsXSIpLnZhbChkLm1vZGVsKTskKCJpbnB1dFtuYW1lPWZpbmFuY2VUcmFkZUluWWVhcl0iKS52YWwoZC55ZWFyKTskKCJpbnB1dFtuYW1lPWZpbmFuY2VUcmFkZUluVHJpbV0iKS52YWwoZC50cmltKTskKCJpbnB1dFtuYW1lPWZpbmFuY2VUcmFkZUluVmFsdWVdIikudmFsKGQudmFsdWUpO19sb2NhbFN0b3JhZ2VHZXQoInRyYWRlaW5fY3VycmVudF92YWx1ZSIpJiYoZD1KU09OLnBhcnNlKF9sb2NhbFN0b3JhZ2VHZXQoInRyYWRlaW5fY3VycmVudF92YWx1ZSIpKSwKJCgiaW5wdXRbbmFtZT1maW5hbmNlVHJhZGVJblZhbHVlXSIpLmF0dHIoImRhdGEtY3VycmVudCIsZC52YWx1ZSkpfWEuc2hvd0Vycm9yPSExO2EucHVzaFBhcnRpYWw9ITE7ay5zZXREZXBhcnRtZW50KCk7ay5zZXRUcmFkZUluKCk7aWYoay51c2VySWQoKSkkLmFqYXgoe3VybDoiLyIrdysiL2FqYXgvZ2V0RmluYW5jZU11bHRpc3RlcFVzZXJJZEFuZERhdGE\/d3N3aWR0aD0wIixkYXRhVHlwZToiSlNPTiIsdHlwZToiUE9TVCIsZGF0YTp7dXNlcklkOmsudXNlcklkKCksZG9tYWluOlEsc2l0ZUlkOiQoIiNzaXRlSUQiKS52YWwoKXx8JCgiI3RvcHNpdGVpZCIpLnZhbCgpLGxhbmc6JCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpLGVtYWlsSGFuZGxlckpzb25PYmplY3Q6SlNPTi5zdHJpbmdpZnkoSCl9LHN1Y2Nlc3M6ZnVuY3Rpb24oZyl7Zy5JRHx8KGcuSUQ9LTEpO2sudXNlcklkKGcuSUQpO2cuZGF0YSYmKGEuZm9ybWRhdGE9SlNPTi5wYXJzZShnLmRhdGEpKTsKIiIhPWVtYWlsSGFuZGxlci51c2VyRmlyc3ROYW1lJiYidW5kZWZpbmVkIiE9ZW1haWxIYW5kbGVyLnVzZXJGaXJzdE5hbWUmJmEuZm9ybWRhdGEuZmlyc3ROYW1lIT1lbWFpbEhhbmRsZXIudXNlckZpcnN0TmFtZSYmKGEuZm9ybWRhdGEuZmlyc3ROYW1lPWVtYWlsSGFuZGxlci51c2VyRmlyc3ROYW1lKTsiIiE9ZW1haWxIYW5kbGVyLnVzZXJMYXN0TmFtZSYmInVuZGVmaW5lZCIhPWVtYWlsSGFuZGxlci51c2VyTGFzdE5hbWUmJmEuZm9ybWRhdGEubGFzdE5hbWUhPWVtYWlsSGFuZGxlci51c2VyTGFzdE5hbWUmJihhLmZvcm1kYXRhLmxhc3ROYW1lPWVtYWlsSGFuZGxlci51c2VyTGFzdE5hbWUpOyIiIT1lbWFpbEhhbmRsZXIudXNlckVtYWlsJiYidW5kZWZpbmVkIiE9ZW1haWxIYW5kbGVyLnVzZXJFbWFpbCYmYS5mb3JtZGF0YS5lbWFpbEFkZHJlc3MhPWVtYWlsSGFuZGxlci51c2VyRW1haWwmJihhLmZvcm1kYXRhLmVtYWlsQWRkcmVzcz1lbWFpbEhhbmRsZXIudXNlckVtYWlsKTsKIiIhPWVtYWlsSGFuZGxlci51c2VyUGhvbmUmJiJ1bmRlZmluZWQiIT1lbWFpbEhhbmRsZXIudXNlclBob25lJiZhLmZvcm1kYXRhLnBob25lTnVtYmVyIT1lbWFpbEhhbmRsZXIudXNlclBob25lJiYoYS5mb3JtZGF0YS5waG9uZU51bWJlcj1lbWFpbEhhbmRsZXIudXNlclBob25lLCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtIixiKS5maW5kKCdpbnB1dFtuYW1lPSJwaG9uZU51bWJlciJdJykudmFsKGEuZm9ybWRhdGEucGhvbmVOdW1iZXIpKTtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBjbGllbnRTdG9yYWdlKXtsZXQgbDthLmZvcm1kYXRhLmZpcnN0TmFtZT1udWxsIT0obD1rLmdldENsaWVudFN0b3JhZ2VEYXRhKCJmaXJzdG5hbWUiKSk\/bDphLmZvcm1kYXRhLmZpcnN0TmFtZTtsZXQgcDthLmZvcm1kYXRhLmxhc3ROYW1lPW51bGwhPShwPWsuZ2V0Q2xpZW50U3RvcmFnZURhdGEoImxhc3RuYW1lIikpP3A6YS5mb3JtZGF0YS5sYXN0TmFtZTtsZXQgcjthLmZvcm1kYXRhLmVtYWlsQWRkcmVzcz0KbnVsbCE9KHI9ay5nZXRDbGllbnRTdG9yYWdlRGF0YSgiZW1haWwiKSk\/cjphLmZvcm1kYXRhLmVtYWlsQWRkcmVzcztsZXQgdDthLmZvcm1kYXRhLnBob25lTnVtYmVyPW51bGwhPSh0PWsuZ2V0Q2xpZW50U3RvcmFnZURhdGEoInBob25lIikpP3Q6YS5mb3JtZGF0YS5waG9uZU51bWJlcjskKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSIsYikuZmluZCgnaW5wdXRbbmFtZT0icGhvbmVOdW1iZXIiXScpLnZhbChhLmZvcm1kYXRhLnBob25lTnVtYmVyKX0wPT1hLmZvcm1kYXRhLmFkZHJlc3NfeWVhcnMmJjA9PWEuZm9ybWRhdGEuYWRkcmVzc19tb250aHMmJihhLmZvcm1kYXRhLmFkZHJlc3M9IiIpO2cuc3RlcCYmKGEuc3RlcD1OdW1iZXIoZy5zdGVwKSxhLm5leHRTdGVwPWEubmV4dFN0ZXBEZWZhdWx0VmFsdWVzWyJzdGVwIitnLnN0ZXBdKTskKGRvY3VtZW50KS50cmlnZ2VyKCJjcmVkaXQubXVsdGlzdGVwLnNob3ciKTskKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSIsYikuc2hvdygpOwprLnNldEN1cnJlbnRNYWtlTW9kZWxZZWFyKCk7ay5vblNob3dGdW5jdGlvblRvUnVuKCk7YS5maXJzdFN0ZXA9ITF9LGNvbXBsZXRlOmZ1bmN0aW9uKGcpe2lmKCFnLmRhdGEpcmV0dXJuIGsudXNlcklkKC0xKSxsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgiZmluYW5jZV9tdWx0aXN0ZXAubGluZWFyX3N0ZXAiKSxQKCl9fSk7ZWxzZXthLnB1c2hQYXJ0aWFsPSExOyIiIT1lbWFpbEhhbmRsZXIudXNlckZpcnN0TmFtZSYmInVuZGVmaW5lZCIhPWVtYWlsSGFuZGxlci51c2VyRmlyc3ROYW1lJiYoYS5mb3JtZGF0YS5maXJzdE5hbWU9ZW1haWxIYW5kbGVyLnVzZXJGaXJzdE5hbWUpOyIiIT1lbWFpbEhhbmRsZXIudXNlckxhc3ROYW1lJiYidW5kZWZpbmVkIiE9ZW1haWxIYW5kbGVyLnVzZXJMYXN0TmFtZSYmKGEuZm9ybWRhdGEubGFzdE5hbWU9ZW1haWxIYW5kbGVyLnVzZXJMYXN0TmFtZSk7IiIhPWVtYWlsSGFuZGxlci51c2VyRW1haWwmJiJ1bmRlZmluZWQiIT1lbWFpbEhhbmRsZXIudXNlckVtYWlsJiYKKGEuZm9ybWRhdGEuZW1haWxBZGRyZXNzPWVtYWlsSGFuZGxlci51c2VyRW1haWwpOyIiIT1lbWFpbEhhbmRsZXIudXNlclBob25lJiYidW5kZWZpbmVkIiE9ZW1haWxIYW5kbGVyLnVzZXJQaG9uZSYmKGEuZm9ybWRhdGEucGhvbmVOdW1iZXI9ZW1haWxIYW5kbGVyLnVzZXJQaG9uZSwkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSIsYikuZmluZCgnaW5wdXRbbmFtZT0icGhvbmVOdW1iZXIiXScpLnZhbChhLmZvcm1kYXRhLnBob25lTnVtYmVyKSk7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgY2xpZW50U3RvcmFnZSl7dmFyIGM7YS5mb3JtZGF0YS5maXJzdE5hbWU9bnVsbCE9KGM9ay5nZXRDbGllbnRTdG9yYWdlRGF0YSgiZmlyc3RuYW1lIikpP2M6YS5mb3JtZGF0YS5maXJzdE5hbWU7dmFyIGU7YS5mb3JtZGF0YS5sYXN0TmFtZT1udWxsIT0oZT1rLmdldENsaWVudFN0b3JhZ2VEYXRhKCJsYXN0bmFtZSIpKT9lOmEuZm9ybWRhdGEubGFzdE5hbWU7dmFyIGY7YS5mb3JtZGF0YS5lbWFpbEFkZHJlc3M9Cm51bGwhPShmPWsuZ2V0Q2xpZW50U3RvcmFnZURhdGEoImVtYWlsIikpP2Y6YS5mb3JtZGF0YS5lbWFpbEFkZHJlc3M7bGV0IGc7YS5mb3JtZGF0YS5waG9uZU51bWJlcj1udWxsIT0oZz1rLmdldENsaWVudFN0b3JhZ2VEYXRhKCJwaG9uZSIpKT9nOmEuZm9ybWRhdGEucGhvbmVOdW1iZXI7JCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0iLGIpLmZpbmQoJ2lucHV0W25hbWU9InBob25lTnVtYmVyIl0nKS52YWwoYS5mb3JtZGF0YS5waG9uZU51bWJlcil9JCgnI21pbmlmb3JtIFtuYW1lPSJtdWx0aV9kZWFsZXJfc2VuZFRvIl0nKS5sZW5ndGgmJiIiIT0kKCcjbWluaWZvcm0gW25hbWU9Im11bHRpX2RlYWxlcl9zZW5kVG8iXScpLnZhbCgpJiYoYS5mb3JtZGF0YS5tdWx0aUZyb21NaW5pPSEwKTskKCIjbWF4X2J1ZGdldCIpLmxlbmd0aCYmKGEucHVzaFBhcnRpYWw9ITAsYz0iIixlPXBhcnNlRmxvYXQoJCgiI21heF9idWRnZXQiKS52YWwoKS5yZXBsYWNlKC9bXjAtOS4tXSsvZywiIikpLApjPWsuZ2V0Q3VycmVudEJ1ZGdldChlKSwiMSI9PXUmJmlzTmFOKGUpJiYoYz0iIiksYS5mb3JtZGF0YS5idWRnZXQ9Yyk7JCgiLnRyYWNrLXByb2dyZXNzIikubGVuZ3RoJiYobG9jYWxTdG9yYWdlLmdldEl0ZW0oInRyYWRlaW5fc3VibWl0X2RhdGEiKSYmKGEuZm9ybWRhdGEuY3VycmVudGx5RHJpdmluZz0iRklOQU5DRV9GT1JNX0FMUkVBRFlfRFJJVklOR19UUkFERSIpLGM9bG9jYWxTdG9yYWdlLmdldEl0ZW0oInJldGFpbF90cmFja19kYXRhIiksKGM9SlNPTi5wYXJzZShjKSkmJmMudmFsdWUmJihjPUpTT04ucGFyc2UoYy52YWx1ZSkpJiZjLnBheW1lbnQmJmMucGF5bWVudC5wYXltZW50VmFsdWUmJihlPWMucGF5bWVudC5wYXltZW50VmFsdWUsYz1lWzBdLGU9ZVszXSxmPSIiLGM9Im1vbnRobHkiPT1lP3BhcnNlRmxvYXQoYyk6IndlZWtseSI9PWU\/NTIqcGFyc2VGbG9hdChjKS8xMjoic2VtaW1vbnRobHkiPT1lPzI0KnBhcnNlRmxvYXQoYykvMTI6MjYqcGFyc2VGbG9hdChjKS8KMTIsZj1rLmdldEN1cnJlbnRCdWRnZXQoYyksYS5mb3JtZGF0YS5idWRnZXQ9ZikpO2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tuYW1lPSJidWRnZXQiXStsYWJlbCcpLmZvckVhY2goZz0+e2cuaW5uZXJIVE1MPWcuaW5uZXJIVE1MLnJlcGxhY2UoLyhcJFxkezMsNH18XGR7Myw0fVwkKS9nLGw9PkQyQ1V0aWxzLkZvcm1hdC50b1ByaWNlKGwucmVwbGFjZSgvXCQvZywiIikpKX0pOyQoZG9jdW1lbnQpLnRyaWdnZXIoImNyZWRpdC5tdWx0aXN0ZXAuc2hvdyIpOyQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtIixiKS5zaG93KCk7MD09YS5zdGVwJiYoJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fbmV4dF9idG4iLGIpLmhpZGUoKSwkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSIsYikub2ZmKCJjbGljay5ub0J1dHRvbiIsImlucHV0W3R5cGU9cmFkaW9dIiksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0iLGIpLm9uKCJjbGljay5ub0J1dHRvbiIsImlucHV0W3R5cGU9cmFkaW9dIiwKZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YS5uZXh0KCl9LDFFMyl9KSk7ay5zZXRDdXJyZW50TWFrZU1vZGVsWWVhcigpfX12YXIgej0kKCIjRklOQU5DRV9NVUxUSVNURVBfUEhPTkVfUE9TSVRJT05fQ0hFQ0siKS52YWwoKSxJPSQoIiNGSU5BTkNFX01VTFRJU1RFUF9QSE9ORV9QT1NJVElPTl9TRUxFQ1QiKS52YWwoKSxEPSQoIiNBRE1JTl9NQU5EQVRPUllfQ1JFRElUX0JVUkVBVV9DSEVDSyIpLnZhbCgpLEE9JCgiI0FTS19GT1JfU0lOX0NIRUNLIikudmFsKCksTz0hMSx1PSQoIiNGSU5BTkNFX01VTFRJU1RFUF9pc1NlY29uZENoYW5jZSIsYikudmFsKCkseD0kKCIjRklOQU5DRV9NVUxUSVNURVBfaXNJbnN0YW50IixiKS52YWwoKSxKPSQoIiNGSU5BTkNFX01VTFRJU1RFUF9pc1Z3RFIiLGIpLnZhbCgpLEs9MSxMPVsxLDIsMyw2LDcsMTMsMTQsMTVdLE09W3tmdW5jOiJ2YWxpZGF0ZU5vdEVtcHR5Iix2YWx1ZToiZW1wbG95bWVudFN0YXR1cyJ9XSxSPVtdLFM9Clt7ZnVuYzoidmFsaWRhdGVOb3RFbXB0eSIsdmFsdWU6ImZpcnN0TmFtZSJ9LHtmdW5jOiJ2YWxpZGF0ZU5vdEVtcHR5Iix2YWx1ZToibGFzdE5hbWUifSx7ZnVuYzoidmFsaWRhdGVOYW1lIix2YWx1ZToiIn1dLFQ9W3tmdW5jOiJ2YWxpZGF0ZU5vdEVtcHR5Iix2YWx1ZToiYWRkcmVzcyJ9XSxCPXtzdGVwMDoxLHN0ZXAxOjIsc3RlcDI6MyxzdGVwMzoiMCI9PXo\/NDoiYmVmb3JlIj09ST8xOTo0LHN0ZXA0OiIwIj09ej81OiJiZWZvcmUiPT1JPzU6MTksc3RlcDU6NixzdGVwNjo3LHN0ZXA3Ojgsc3RlcDg6OSxzdGVwOToxMSxzdGVwMTA6MTEsc3RlcDExOjEyLHN0ZXAxMjoxMyxzdGVwMTM6MTYsc3RlcDE0OjE2LHN0ZXAxNToxNixzdGVwMTY6MTcsc3RlcDE3OiIwIj09ej8xOTowPT1EPyIwIj09QT8iMSI9PXU\/MjM6ImRvbmUiOjIyOjIwLHN0ZXAxODoiMCI9PXo\/MD09RD8iMCI9PUE\/IjEiPT11PzIzOiJkb25lIjoyMjoyMDoiYmVmb3JlIj09ST80OjUsc3RlcDE5OjE4LHN0ZXAyMDoiMCI9PQpBPyIxIj09dT8yMzoiZG9uZSI6MjIsc3RlcDIyOiIxIj09dT8yMzoiZG9uZSIsc3RlcDIzOiJkb25lIn07b3B0aW9uYWxTdGVwcz1bXTsiMSI9PXUmJihvcHRpb25hbFN0ZXBzPVsyM10sIjAiPT1BJiYob3B0aW9uYWxTdGVwcz1bMjIsMjNdKSxMPVsxLDIsMyw2LDcsMTQsMTVdLE09W3tmdW5jOiJ2YWxpZGF0ZU5vdEVtcHR5Iix2YWx1ZToiZW1wbG95bWVudFN0YXR1cyJ9LHtmdW5jOiJ2YWxpZGF0ZU5vdEVtcHR5Iix2YWx1ZToiZW1wbG95bWVudEFkZGVkSW5mbyJ9LHtmdW5jOiJ2YWxpZGF0ZUVtcGxveWVySW5mbyIsdmFsdWU6IiJ9LHtmdW5jOiJ2YWxpZGF0ZU5vdEVtcHR5RW1wbG95ZXJTdGF0dXNUaW1lIix2YWx1ZToiIn1dLEI9e3N0ZXAwOjEsc3RlcDE6MixzdGVwMjozLHN0ZXAzOjE4LHN0ZXA0OjE5LHN0ZXA1OjYsc3RlcDY6NyxzdGVwNzo4LHN0ZXA4Ojksc3RlcDk6MjIsc3RlcDEwOjExLHN0ZXAxMToxMixzdGVwMTI6MTMsc3RlcDEzOjE2LHN0ZXAxNDoxNixzdGVwMTU6MTYsCnN0ZXAxNjoyMyxzdGVwMTg6NSxzdGVwMTk6MTEsc3RlcDIwOiJkb25lIixzdGVwMjI6NCxzdGVwMjM6MD09RD8iZG9uZSI6MjB9KTsiMSI9PXgmJihvcHRpb25hbFN0ZXBzPVsyMl0sSz0yNCxMPVsxLDIsMyw2LDcsMTQsMTVdLE09W3tmdW5jOiJ2YWxpZGF0ZU5vdEVtcHR5Iix2YWx1ZToiZW1wbG95bWVudFN0YXR1cyJ9LHtmdW5jOiJ2YWxpZGF0ZUVtcGxveW1lbnRBZGRlZEluZm8iLHZhbHVlOiJlbXBsb3ltZW50QWRkZWRJbmZvIn0se2Z1bmM6InZhbGlkYXRlRW1wbG95ZXJJbmZvIix2YWx1ZToiIn0se2Z1bmM6InZhbGlkYXRlTm90RW1wdHlFbXBsb3llclN0YXR1c1RpbWUiLHZhbHVlOiIifSx7ZnVuYzoidmFsaWRhdGVBZGRyZXNzRW1wbG95ZXIiLHZhbHVlOiJhZGRyZXNzRW1wbG95ZXIifV0sUj1be2Z1bmM6InZhbGlkYXRlRW1wbG95bWVudEFkZGVkSW5mbyIsdmFsdWU6ImVtcGxveW1lbnRBZGRlZEluZm8yIn0se2Z1bmM6InZhbGlkYXRlRW1wbG95ZXJJbmZvMiIsdmFsdWU6IiJ9LAp7ZnVuYzoidmFsaWRhdGVOb3RFbXB0eUVtcGxveWVyU3RhdHVzVGltZTIiLHZhbHVlOiIifSx7ZnVuYzoidmFsaWRhdGVBZGRyZXNzRW1wbG95ZXIyIix2YWx1ZToiYWRkcmVzc0VtcGxveWVyMiJ9XSxTPVt7ZnVuYzoidmFsaWRhdGVOb3RFbXB0eSIsdmFsdWU6ImZpcnN0TmFtZSJ9LHtmdW5jOiJ2YWxpZGF0ZU5vdEVtcHR5Iix2YWx1ZToibGFzdE5hbWUifSx7ZnVuYzoidmFsaWRhdGVOb3RFbXB0eSIsdmFsdWU6InRpdGxlIn0se2Z1bmM6InZhbGlkYXRlTmFtZSIsdmFsdWU6IiJ9XSxUPVt7ZnVuYzoidmFsaWRhdGVBZGRyZXNzIix2YWx1ZToiYWRkcmVzcyJ9XSxCPXtzdGVwMDoyNCxzdGVwMjQ6MjUsc3RlcDI1OjQsc3RlcDQ6MTksc3RlcDE5OjE4LHN0ZXAxODo1LHN0ZXA1Ojgsc3RlcDg6OSxzdGVwOToxMSxzdGVwMTE6MTIsc3RlcDEyOjEzLHN0ZXAyNzoyOCxzdGVwMjg6MTMsc3RlcDEzOjE2LHN0ZXAxNDoxNixzdGVwMTU6MTYsc3RlcDE2OjE3LHN0ZXAxNzoyMixzdGVwMjk6MjIsCnN0ZXAyMjowPT1EPzI2OjIwLHN0ZXAyMDoyNixzdGVwMjY6ImRvbmUifSwiMSI9PUomJihCLnN0ZXAyMj0zMCxCLnN0ZXAzMD0iZG9uZSIpKTt2YXIgYT1uZXcgVnVlKHtlbDokKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSIsYilbMF0sZGF0YTpmdW5jdGlvbigpe3JldHVybntjb250ZXh0OmIsYWpheFByb2Nlc3M6ITEsdXNlcklkOiIiLGNvbnZlcnNpb25TdWJtaXR0ZWQ6ITEsc2hvd0ljb246ITAscHVzaFBhcnRpYWw6ITEsY3VycmVudERlcHQ6Ik5FVyIsaW5pdFZlaGljbGVTZWxlY3Rpb25GaXJzdDohMCxzdGVwOjAsbmV4dFN0ZXA6SyxmaXJzdFN0ZXA6ITAsY2FsY3VsYXRvckZ1bmN0aW9uczoiIixjcmVkaXREZWNpc2lvbkhUTUw6IiIsZm9ybWRhdGE6e3ZlaGljbGVUeXBlOiIiLGJ1ZGdldDoiIixjdXJyZW50bHlEcml2aW5nOiIiLGVtYWlsQWRkcmVzczoiIixjcmVkaXRSYXRpbmc6IiIsZG93bk9wdGlvbnM6IiIsYmlydGhkYXRlWWVhcjoiIixiaXJ0aGRhdGVNb250aDoiIiwKYmlydGhkYXRlRGF5OiIiLGFkZHJlc3M6IiIsc3BsaXRBZGRyZXNzOltdLGFkZHJlc3NfeWVhcnM6MCxhZGRyZXNzX21vbnRoczowLGFkZHJlc3MyOiIiLHNwbGl0QWRkcmVzczI6W10sYWRkcmVzczJfeWVhcnM6MCxhZGRyZXNzMl9tb250aHM6MCxhZGRyZXNzRW1wbG95ZXI6IiIsc3BsaXRBZGRyZXNzRW1wbG95ZXI6W10scmVudE9yT3duOiIiLG1vbnRobHlQYXltZW50OjAsZW1wbG95bWVudFN0YXR1czoiIixlbXBsb3ltZW50QWRkZWRJbmZvOiIiLGVtcGxveWVyTmFtZToiIixlbXBsb3llclBob25lOiIiLGVtcGxveW1lbnRTdGF0dXNZZWFyOjAsZW1wbG95bWVudFN0YXR1c01vbnRoOjAsZW1wbG95bWVudEFkZGVkSW5mbzI6IiIsZW1wbG95ZXJOYW1lMjoiIixlbXBsb3llclBob25lMjoiIixlbXBsb3ltZW50U3RhdHVzWWVhcjI6MCxlbXBsb3ltZW50U3RhdHVzTW9udGgyOjAsYWRkcmVzc0VtcGxveWVyMjoiIixzcGxpdEFkZHJlc3NFbXBsb3llcjI6W10sd29ya2luZ1doaWxlSW5TY2hvb2w6IiIsCm90aGVyRW1wbG95bWVudFN0YXR1czoiIixtb250aGx5SW5jb21lOjAsbW9udGhseUluY29tZV95ZWFyczowLG1vbnRobHlJbmNvbWVfbW9udGhzOjAsdGl0bGU6IiIsZmlyc3ROYW1lOiIiLGxhc3ROYW1lOiIiLHBob25lTnVtYmVyOiIiLGN1cnJlbnRNYWtlOiIiLGN1cnJlbnRNb2RlbDoiIixjdXJyZW50TW9kZWxUZXh0OiIiLGN1cnJlbnRZZWFyOiIiLGN1cnJlbnRTdG9ja051bWJlcjoiIixjdXJyZW50TWlsZWFnZToxMCxjdXJyZW50VHJpbToiIixjdXJyZW50U3R5bGVpZDoiIixjdXJyZW50Q2FySWQ6IiIscGF5bWVudFR5cGU6IiIscGF5bWVudFR5cGVSZWFsOiIiLHBheW1lbnRUZXJtOiIiLHBheW1lbnRSYXRlVHlwZToiIixwYXltZW50VmFsdWU6IiIsYmFzZXBheW1lbnQ6IiIscGF5bWVudFRvdGFsSW5jZW50aXZlOjAscGF5bWVudFRvdGFsRmVlOjAscGF5bWVudEdTVDowLHBheW1lbnRIU1Q6MCxwYXltZW50UFNUOjAscGF5bWVudERvd25QYXltZW50OjAscGF5bWVudEttQWxsb3dhbmNlOjAsCnBheW1lbnRJbnRlcnZhbDoiIixwYXltZW50UmF0ZToiIixwYXltZW50UmVzaWR1YWxWYWx1ZTowLG5vUGF5bWVudDohMSxtdWx0aV9kZWFsZXJfc2VuZFRvOiIiLGNyZWRpdEJ1cmVhdUNyZWRpdDoiTk8iLFNJTjoiIixhZGRlZEluZm86IiIsdmVoaWNsZVNhbGVzRGVwdDoib3RoZXIiLHZlaGljbGVQcmljZToiIix2ZWhpY2xlVHJhbnNtaXNzaW9uOiIiLHZlaGljbGVUcmltOiIiLHZlaGljbGVDb2xvcjoiIixpbml0aWFsVGl0bGVTaG93OiEwLG11bHRpRnJvbU1pbmk6ITEsdHJhZGVJbk1ha2U6IiIsdHJhZGVJbk1vZGVsOiIiLHRyYWRlSW5ZZWFyOiIiLHRyYWRlSW5UcmltOiIiLHRyYWRlSW5WYWx1ZToiIix2ZWhpY2xlSW5pdGlhbFByaWNlOiIiLHZlaGljbGVGaW5hbFByaWNlOiIiLHBheW1lbnRGZWVzTGlzdDpbXSxwYXltZW50SW5jZW50aXZlc0xpc3Q6W10sY3JlZGl0QXBwbGljYXRpb25JZDoiIixjb25zZW50QWNjb3VudE1vbml0b3Jpbmc6IiIsY29uc2VudENyZWRpdEFzc2Vzc21lbnQ6IiIsCmNvbnNlbnRQaXBlZGE6IiIsY29uc2VudENhc2w6IiJ9LG5leHRTdGVwRGVmYXVsdFZhbHVlczpCLHZhbGlkYXRpb25SdWxlczp7c3RlcDE6W3tmdW5jOiJ2YWxpZGF0ZU5vdEVtcHR5Iix2YWx1ZToidmVoaWNsZVR5cGUifV0sc3RlcDI6W3tmdW5jOiJ2YWxpZGF0ZU5vdEVtcHR5Iix2YWx1ZToiYnVkZ2V0In1dLHN0ZXAzOlt7ZnVuYzoidmFsaWRhdGVOb3RFbXB0eSIsdmFsdWU6ImN1cnJlbnRseURyaXZpbmcifV0sc3RlcDQ6W3tmdW5jOiJ2YWxpZGF0ZU5vdEVtcHR5Iix2YWx1ZToiZW1haWxBZGRyZXNzIn0se2Z1bmM6InZhbGlkYXRlRW1haWwiLHZhbHVlOiJlbWFpbEFkZHJlc3MifV0sc3RlcDU6W3tmdW5jOiJ2YWxpZGF0ZU5vdEVtcHR5Iix2YWx1ZToibXVsdGlfZGVhbGVyX3NlbmRUbyJ9XSxzdGVwNjpbe2Z1bmM6InZhbGlkYXRlTm90RW1wdHkiLHZhbHVlOiJjcmVkaXRSYXRpbmcifV0sc3RlcDc6W3tmdW5jOiJ2YWxpZGF0ZU5vdEVtcHR5Iix2YWx1ZToiZG93bk9wdGlvbnMifV0sCnN0ZXA4Olt7ZnVuYzoidmFsaWRhdGVCaXJ0aGRhdGUiLHZhbHVlOiIifV0sc3RlcDk6VCxzdGVwMTE6W3tmdW5jOiJ2YWxpZGF0ZU5vdEVtcHR5QWRkcmVzc1RpbWUiLHZhbHVlOiIifV0sc3RlcDEyOlt7ZnVuYzoidmFsaWRhdGVOb3RFbXB0eSIsdmFsdWU6InJlbnRPck93biJ9LHtmdW5jOiJ2YWxpZGF0ZUlzTnVtYmVyIix2YWx1ZToibW9udGhseVBheW1lbnQifSx7ZnVuYzoidmFsaWRhdGVNb250aGx5UGF5bWVudCIsdmFsdWU6Im1vbnRobHlQYXltZW50In1dLHN0ZXAxMzpNLHN0ZXAxNDpbe2Z1bmM6InZhbGlkYXRlTm90RW1wdHkiLHZhbHVlOiJ3b3JraW5nV2hpbGVJblNjaG9vbCJ9XSxzdGVwMTU6W3tmdW5jOiJ2YWxpZGF0ZU5vdEVtcHR5Iix2YWx1ZToib3RoZXJFbXBsb3ltZW50U3RhdHVzIn1dLHN0ZXAxNjpbe2Z1bmM6InZhbGlkYXRlTW9yZVRoYW5aZXJvIix2YWx1ZToibW9udGhseUluY29tZSJ9LHtmdW5jOiJ2YWxpZGF0ZU1vbnRobHlJbmNvbWUiLHZhbHVlOiJtb250aGx5SW5jb21lIn1dLApzdGVwMTc6W3tmdW5jOiJ2YWxpZGF0ZU5vdEVtcHR5TW9udGhseUluY29tZVRpbWUiLHZhbHVlOiIifV0sc3RlcDE4OlMsc3RlcDE5Olt7ZnVuYzoidmFsaWRhdGVQaG9uZU51bWJlciIsdmFsdWU6InBob25lTnVtYmVyIn1dLHN0ZXAyMDpbe2Z1bmM6InZhbGlkYXRlQ2hlY2tlZENyZWRpdEJ1cmVhdSIsdmFsdWU6ImNyZWRpdEJ1cmVhdUNyZWRpdCJ9XSxzdGVwMjI6W3tmdW5jOiJ2YWxpZGF0ZVNJTiIsdmFsdWU6IlNJTiJ9XSxzdGVwMjQ6W3tmdW5jOiJ2YWxpZGF0ZVZlaGljbGUiLHZhbHVlOiIifV0sc3RlcDI1Olt7ZnVuYzoidmFsaWRhdGVQYXltZW50Iix2YWx1ZToiIn1dLHN0ZXAyNjpbe2Z1bmM6InZhbGlkYXRlQ29uc2VudCIsdmFsdWU6IiJ9XSxzdGVwMjc6W3tmdW5jOiJ2YWxpZGF0ZUFkZHJlc3MyIix2YWx1ZToiYWRkcmVzczIifV0sc3RlcDI4Olt7ZnVuYzoidmFsaWRhdGVOb3RFbXB0eUFkZHJlc3MyVGltZSIsdmFsdWU6IiJ9XSxzdGVwMjk6UixzdGVwMzA6W3tmdW5jOiJ2YWxpZGF0ZUNvbnNlbnRzIiwKdmFsdWU6IiJ9XX0sb25TaG93RnVuY3Rpb246e3N0ZXAyOlt7ZnVuYzoic3RlcDJWaWV3ZWRUcmFjayJ9XSxzdGVwNDpbe2Z1bmM6ImVtYWlsU3RlcFZpZXdlZFRyYWNrIn0se2Z1bmM6ImluaXRFbWFpbCJ9XSxzdGVwNjpbXSxzdGVwNzpbXSxzdGVwODpbe2Z1bmM6ImluaXRCaXJ0aGRhdGVDaGFuZ2UifV0sc3RlcDk6W3tmdW5jOiJpbml0R29vZ2xlQXV0b2NvbXBsZXRlIn1dLHN0ZXAyNzpbe2Z1bmM6ImluaXRHb29nbGVBdXRvY29tcGxldGUyIn1dLHN0ZXAxMzpbe2Z1bmM6ImluaXRHb29nbGVBdXRvY29tcGxldGVFbXBsb3llciJ9XSxzdGVwNTpbe2Z1bmM6ImluaXRTZWxlY3RNdWx0aURlYWxlciJ9XSxzdGVwMTk6W3tmdW5jOiJwaG9uZVN0ZXBWaWV3ZWRUcmFjayJ9LHtmdW5jOiJpbml0UGhvbmUifV0sc3RlcDI0Olt7ZnVuYzoiaW5pdFZlaGljbGVTZWxlY3Rpb24ifV0sc3RlcDI1Olt7ZnVuYzoiaW5pdENhbGN1bGF0b3IifV0sc3RlcDI2Olt7ZnVuYzoiaW5pdENvbnNlbnQifV0sCnN0ZXAyOTpbe2Z1bmM6ImluaXRHb29nbGVBdXRvY29tcGxldGVFbXBsb3llcjIifV19LG5vQ29uZmlybUJ1dHRvblN0ZXBzOkwsc2hvd0Vycm9yOiEwLHNlY29uZENoYW5jZVN0ZXBUb1NraXA6WzEsMiwzLDYsN10sb3B0aW9uYWxTdGVwOm9wdGlvbmFsU3RlcHN9fSxtZXRob2RzOntuZXh0OmZ1bmN0aW9uKGQpe2R8fCh0aGlzLnNob3dFcnJvcj0hMCx0aGlzLmZvcm1kYXRhLmluaXRpYWxUaXRsZVNob3c9ITEsdGhpcy5wdXNoUGFydGlhbD0hMCk7aWYodGhpcy52YWxpZGF0aW9uUnVsZXMuaGFzT3duUHJvcGVydHkoInN0ZXAiK3RoaXMuc3RlcCkpZm9yKHZhciBjPTA7Yzx0aGlzLnZhbGlkYXRpb25SdWxlc1sic3RlcCIrdGhpcy5zdGVwXS5sZW5ndGg7YysrKWlmKGtbdGhpcy52YWxpZGF0aW9uUnVsZXNbInN0ZXAiK3RoaXMuc3RlcF1bY10uZnVuY10odGhpcy5mb3JtZGF0YVt0aGlzLnZhbGlkYXRpb25SdWxlc1sic3RlcCIrdGhpcy5zdGVwXVtjXS52YWx1ZV0pKSQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX2Vycm9yIiwKYikuaHRtbCgiIiksJCgnW25hbWU9IicrdGhpcy52YWxpZGF0aW9uUnVsZXNbInN0ZXAiK3RoaXMuc3RlcF1bY10udmFsdWUrJyJdJyxiKS5jc3MoImJvcmRlci1jb2xvciIsIiIpO2Vsc2V7dGhpcy5zaG93RXJyb3ImJigkKCIjIit0aGlzLnZhbGlkYXRpb25SdWxlc1sic3RlcCIrdGhpcy5zdGVwXVtjXS52YWx1ZSsiRXJyb3JNc2ciLGIpLmxlbmd0aCYmJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoJCgiIyIrdGhpcy52YWxpZGF0aW9uUnVsZXNbInN0ZXAiK3RoaXMuc3RlcF1bY10udmFsdWUrIkVycm9yTXNnIixiKS52YWwoKSksJCgnW25hbWU9IicrdGhpcy52YWxpZGF0aW9uUnVsZXNbInN0ZXAiK3RoaXMuc3RlcF1bY10udmFsdWUrJyJdJyxiKS5jc3MoImJvcmRlci1jb2xvciIsInZhcigtLWxhYmVsLXJlcXVpcmVkLWNvbG9yKSIpKTtyZXR1cm59Zm9yKHRoaXMuc2hvd0Vycm9yPSExO2suaXNOZXh0U3RlcEZpbGxlZCgpOyk7aWYoMjEhPXRoaXMuc3RlcCl7ND09CnRoaXMuc3RlcCYmIiIhPWEuZm9ybWRhdGEuZW1haWxBZGRyZXNzJiZrLmVtYWlsUHJvdmlkZWRUcmFjaygpOzE5PT10aGlzLnN0ZXAmJiIiIT1hLmZvcm1kYXRhLnBob25lTnVtYmVyJiZrLnBob25lUHJvdmlkZWRUcmFjaygpO2lmKDk9PXRoaXMuc3RlcCl0cnl7dmFyIGU9JCgnI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaW5wdXRbbmFtZT0iYWRkcmVzcyJdJyxiKSxmPWUuZ29vZ2xlUGxhY2VzKCJnZXRBZGRyZXNzIiksZz0idW5kZWZpbmVkIiE9PXR5cGVvZiBmLnBvc3RhbC5sb25nX25hbWU\/Zi5wb3N0YWwubG9uZ19uYW1lOmUudmFsKCk7ZW1haWxIYW5kbGVyLnVzZXJQb3N0YWw9ZzsidW5kZWZpbmVkIiE9dHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nJiYidW5kZWZpbmVkIiE9dHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nLmxvZ1BhZ2VWaWV3RXZlbnQmJiIiIT1nJiYoInVuZGVmaW5lZCIhPT10eXBlb2YgZGVidWcmJmRlYnVnKCJMb2cgRXZlbnQiLGcsIlVzZXJGb3JtLnBvc3RhbCIpLAphY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50KGcsIlVzZXJGb3JtLnBvc3RhbCIpKX1jYXRjaChsKXtjb25zb2xlLmxvZyhsKX00PD10aGlzLnN0ZXAmJiF0aGlzLmNvbnZlcnNpb25TdWJtaXR0ZWQmJih0aGlzLmNvbnZlcnNpb25TdWJtaXR0ZWQ9ITAsYz0kKCIjZmluYW5jZU11bHRpc3RlcFBvcHVwQ29udGFpbmVyX2NvbmZpcm0iKSwwPT09Yy5sZW5ndGgmJihjPSQoIiNnZW5lcmljX2Zvcm1fY29uZmlybSIpKSxjLmZpbmQoJ2lucHV0W25hbWU9ImxlYWRUeXBlIl0nKS52YWwoJCh0aGlzLmNvbnRleHQpLmZpbmQoIi5lbWFpbFN1YmplY3QiKS50ZXh0KCkucmVwbGFjZSgvW1xuXHJdL2csIiAiKSksYy5maW5kKCdpbnB1dFtuYW1lPSJsZWFkX2RlcGFydG1lbnQiXScpLnZhbCgiRklOQU5DRSIpLGMuZmluZCgnaW5wdXRbbmFtZT0icGFnZUlEIl0nKS52YWwoJCgiI1BBR0VJRCIpLnZhbCgpKSxjLmZpbmQoJ2lucHV0W25hbWU9ImN1cnJlbnRVUkwiXScpLnZhbCh3aW5kb3cubG9jYXRpb24uaHJlZiksCmMuZmluZCgnaW5wdXRbbmFtZT0iaXNGdWxsV2lkdGgiXScpLnZhbCgkKCIjaXNGdWxsV2lkdGhQYWdlTmV3VkRQIikudmFsKCkpLGMuZmluZCgnaW5wdXRbbmFtZT0iZGVhbGVyTmFtZSJdJykudmFsKCQoIiNuZXdWRFBEZWFsZXJOYW1lIikudmFsKCkpLGMuZmluZCgnaW5wdXRbbmFtZT0iYnV0dG9uUG9zaXRpb24iXScpLnZhbCgkKCIjbmV3VkRQQnV0dG9uUG9zaXRpb24iKS52YWwoKSksYy5maW5kKCdpbnB1dFtuYW1lPSJpc01vYmlsZU5ld1ZEUCJdJykudmFsKCQoIiNpc21vYmlsZSIpLnZhbCgpKSxjLnRyaWdnZXIoInN1Ym1pdCIpLCJmdW5jdGlvbiI9PT10eXBlb2Ygd2luZG93LnRyYWNrQ29udmVyc2lvbiYmd2luZG93LnRyYWNrQ29udmVyc2lvbigpKTswIT10aGlzLnN0ZXAmJih0aGlzLnNob3dJY29uPSExKTt0aGlzLnN0ZXA9dGhpcy5uZXh0U3RlcDtsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgiZmluYW5jZV9tdWx0aXN0ZXAubGFzdF9zdGVwIik7ZHx8KGEuZmlyc3RTdGVwPwphLmZpcnN0U3RlcD0hMTprLnN0ZXBUcmlnZ2VyKCEwKSk7KCIiIT10aGlzLmZvcm1kYXRhLmVtYWlsQWRkcmVzcyYmKCIwIj09JCgiI0ZJTkFOQ0VfTVVMVElTVEVQX1BIT05FX1BPU0lUSU9OX0NIRUNLIikudmFsKCl8fCJhZnRlciI9PSQoIiNGSU5BTkNFX01VTFRJU1RFUF9QSE9ORV9QT1NJVElPTl9TRUxFQ1QiKS52YWwoKSl8fCIiIT10aGlzLmZvcm1kYXRhLnBob25lTnVtYmVyJiYiMSI9PSQoIiNGSU5BTkNFX01VTFRJU1RFUF9QSE9ORV9QT1NJVElPTl9DSEVDSyIpLnZhbCgpJiYiYmVmb3JlIj09JCgiI0ZJTkFOQ0VfTVVMVElTVEVQX1BIT05FX1BPU0lUSU9OX1NFTEVDVCIpLnZhbCgpKSYmay5tdWx0aURlYWxlckZvcm1TdGF0dXMoKSYmdGhpcy5wdXNoUGFydGlhbCYmKCIxIj09JCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gI09QRU5FREZST01JTUFHRVBPUFVQIixiKS52YWwoKT8kKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAjT1BFTkVERlJPTUlNQUdFUE9QVVAiLGIpLnZhbCgiMCIpOgprLnB1c2hEYXRhVG9TZXJ2ZXIoKSk7ay5zZXRDbGllbnRTdG9yYWdlRGF0YVZhbHVlcygpO3RoaXMubmV4dFN0ZXA9dGhpcy5uZXh0U3RlcERlZmF1bHRWYWx1ZXNbInN0ZXAiK3RoaXMuc3RlcF07MDw9dGhpcy5vcHRpb25hbFN0ZXAuaW5kZXhPZihhLnN0ZXApPyQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX25leHRfYnRuIGJ1dHRvbiIsYikuYWRkQ2xhc3MoImlzVmFsaWQiKTokKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9uZXh0X2J0biBidXR0b24iLGIpLnJlbW92ZUNsYXNzKCJpc1ZhbGlkIik7ay5vblNob3dGdW5jdGlvblRvUnVuKCk7MDw9dGhpcy5ub0NvbmZpcm1CdXR0b25TdGVwcy5pbmRleE9mKHRoaXMuc3RlcCk\/KCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX25leHRfYnRuIixiKS5oaWRlKCksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0iLGIpLm9mZigiY2xpY2subm9CdXR0b24iLCJpbnB1dFt0eXBlPXJhZGlvXSIpLCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtIiwKYikub24oImNsaWNrLm5vQnV0dG9uIiwiaW5wdXRbdHlwZT1yYWRpb10iLGZ1bmN0aW9uKCl7c2V0VGltZW91dChmdW5jdGlvbigpe2EubmV4dCgpfSwxRTMpfSkpOigkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9uZXh0X2J0biIsYikuc2hvdygpLCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtIixiKS5vZmYoImNsaWNrLm5vQnV0dG9uIiwiaW5wdXRbdHlwZT1yYWRpb10iKSk7ImRvbmUiPT10aGlzLnN0ZXAmJigiMSI9PXg\/IjEiPT1KP2suY3JlZGl0QXBwU3VtaXNzaW9uKCk6ay5yb3V0ZU9uZUNhbGwoKTprLnNlbmRFbWFpbCgpKX19LGdldExpbmVhcnN0ZXA6ZnVuY3Rpb24oZCl7dmFyIGM9bG9jYWxTdG9yYWdlLmdldEl0ZW0oImZpbmFuY2VfbXVsdGlzdGVwLmxpbmVhcl9zdGVwIik7Yz1wYXJzZUludChjP2M6MCk7aWYoMD09Y3x8aXNOYU4oYykpYz0xO2QmJihjKz0xLGxvY2FsU3RvcmFnZS5zZXRJdGVtKCJmaW5hbmNlX211bHRpc3RlcC5saW5lYXJfc3RlcCIsYykpO3JldHVybiBjfX19KSwKdz0iRU5HTElTSCI9PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKT8iZW4iOiJmciIsSD1lbWFpbEhhbmRsZXIuZ2V0SnNvbk9iamVjdCgpO3o9d2luZG93LmxvY2F0aW9uO3ZhciBRPXoucHJvdG9jb2wrIi8vIit6Lmhvc3Qsaz17aXNOZXh0U3RlcEZpbGxlZDpmdW5jdGlvbigpe2lmKCIxIj09eCYmIjEiPT1KJiZbMTksNCwzMF0uaW5jbHVkZXMoYS5uZXh0U3RlcCkpcmV0dXJuITE7aWYoIjEiPT11JiYwPD1hLnNlY29uZENoYW5jZVN0ZXBUb1NraXAuaW5kZXhPZihhLm5leHRTdGVwKSlyZXR1cm4gYS5uZXh0U3RlcD1hLm5leHRTdGVwRGVmYXVsdFZhbHVlc1sic3RlcCIrYS5uZXh0U3RlcF0sITA7aWYoKCIxIj09dXx8IjEiPT14KSYmMDw9YS5vcHRpb25hbFN0ZXAuaW5kZXhPZihhLm5leHRTdGVwKSlyZXR1cm4hMTtpZihhLnZhbGlkYXRpb25SdWxlcy5oYXNPd25Qcm9wZXJ0eSgic3RlcCIrYS5uZXh0U3RlcCkpe2Zvcih2YXIgZD0wO2Q8YS52YWxpZGF0aW9uUnVsZXNbInN0ZXAiKwphLm5leHRTdGVwXS5sZW5ndGg7ZCsrKWlmKCFrW2EudmFsaWRhdGlvblJ1bGVzWyJzdGVwIithLm5leHRTdGVwXVtkXS5mdW5jXShhLmZvcm1kYXRhW2EudmFsaWRhdGlvblJ1bGVzWyJzdGVwIithLm5leHRTdGVwXVtkXS52YWx1ZV0pKXJldHVybiExO2EubmV4dFN0ZXA9YS5uZXh0U3RlcERlZmF1bHRWYWx1ZXNbInN0ZXAiK2EubmV4dFN0ZXBdO3JldHVybiEwfX0sdmFsaWRhdGVOb3RFbXB0eTpmdW5jdGlvbihkKXtyZXR1cm4iIiE9ZCYmInVuZGVmaW5lZCIhPT10eXBlb2YgZH0sdmFsaWRhdGVOYW1lOmZ1bmN0aW9uKCl7dmFyIGQ9L15bQS16XHUwMEJGLVx1MUZGRlx1MkMwMC1cdUQ3RkYgJy1dKyQvO2xldCBjPWQudGVzdChhLmZvcm1kYXRhLmZpcnN0TmFtZSk7ZD1kLnRlc3QoYS5mb3JtZGF0YS5sYXN0TmFtZSk7YyYmZD8oJCgnW25hbWU9ImZpcnN0TmFtZSJdJyxiKS5jc3MoImJvcmRlci1jb2xvciIsIiIpLCQoJ1tuYW1lPSJmaXJzdE5hbWUiXScsYikuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwKIiIpLCQoJ1tuYW1lPSJsYXN0TmFtZSJdJyxiKS5jc3MoImJvcmRlci1jb2xvciIsIiIpLCQoJ1tuYW1lPSJsYXN0TmFtZSJdJyxiKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLCIiKSwkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9lcnJvciIsYikuaHRtbCgiIikpOihjfHwoJCgnW25hbWU9ImZpcnN0TmFtZSJdJyxiKS5jc3MoImJvcmRlci1jb2xvciIsIiNjODNlM2UiKSwkKCdbbmFtZT0iZmlyc3ROYW1lIl0nLGIpLmNzcygiYm9yZGVyLWJvdHRvbS13aWR0aCIsIjVweCIpKSxkfHwoJCgnW25hbWU9Imxhc3ROYW1lIl0nLGIpLmNzcygiYm9yZGVyLWNvbG9yIiwiI2M4M2UzZSIpLCQoJ1tuYW1lPSJsYXN0TmFtZSJdJyxiKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLCI1cHgiKSksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoJCgiI2ZpcnN0TmFtZUVycm9yTXNnIikudmFsKCkpKTtyZXR1cm4gYyYmZH0sdmFsaWRhdGVJc051bWJlcjpmdW5jdGlvbihkKXtyZXR1cm4gMDw9CmR9LHZhbGlkYXRlTW9udGhseUluY29tZTpmdW5jdGlvbihkKXtyZXR1cm4gOTk5OTk5Pj1kfSx2YWxpZGF0ZU1vbnRobHlQYXltZW50OmZ1bmN0aW9uKGQpe3JldHVybiA5OTk5OT49ZH0sdmFsaWRhdGVBZGRyZXNzOmZ1bmN0aW9uKGQpe3JldHVybiAwPGEuZm9ybWRhdGEuYWRkcmVzc195ZWFyc3x8MDxhLmZvcm1kYXRhLmFkZHJlc3NfbW9udGhzPyEwOiIiIT1kJiYoZD0kKCcjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSBpbnB1dFtkYXRhLWdvb2dsZS1wbGFjZXMtY3VzdG9tPSJ0cnVlIl1bbmFtZT0iYWRkcmVzcyJdJyxiKS5nb29nbGVQbGFjZXMoImdldEFkZHJlc3MiKSwiIiE9ZC5jaXR5JiYiIiE9ZC5zdHJlZXQpPyhhLmZvcm1kYXRhLnNwbGl0QWRkcmVzcz1kLCEwKTohMX0sdmFsaWRhdGVBZGRyZXNzMjpmdW5jdGlvbihkKXtyZXR1cm4gMDxhLmZvcm1kYXRhLmFkZHJlc3MyX3llYXJzfHwwPGEuZm9ybWRhdGEuYWRkcmVzczJfbW9udGhzPyEwOiIiIT1kJiYoZD0kKCcjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSBpbnB1dFtkYXRhLWdvb2dsZS1wbGFjZXMtY3VzdG9tPSJ0cnVlIl1bbmFtZT0iYWRkcmVzczIiXScsCmIpLmdvb2dsZVBsYWNlcygiZ2V0QWRkcmVzcyIpLCIiIT1kLmNpdHkmJiIiIT1kLnN0cmVldCk\/KGEuZm9ybWRhdGEuc3BsaXRBZGRyZXNzMj1kLCEwKTohMX0sdmFsaWRhdGVBZGRyZXNzRW1wbG95ZXI6ZnVuY3Rpb24oZCl7aWYoIkZJTkFOQ0VfRk9STV9FTVBMT1lNRU5UX1NUQVRVU19FTVBMT1lFRCIhPWEuZm9ybWRhdGEuZW1wbG95bWVudFN0YXR1cylyZXR1cm4hMDtpZigiIiE9ZCl7aWYoInVuZGVmaW5lZCIhPT1hLmZvcm1kYXRhLnNwbGl0QWRkcmVzc0VtcGxveWVyJiZudWxsIT09YS5mb3JtZGF0YS5zcGxpdEFkZHJlc3NFbXBsb3llciYmIm9iamVjdCI9PT10eXBlb2YgYS5mb3JtZGF0YS5zcGxpdEFkZHJlc3NFbXBsb3llciYmImNpdHkiaW4gYS5mb3JtZGF0YS5zcGxpdEFkZHJlc3NFbXBsb3llciYmIiIhPT1hLmZvcm1kYXRhLnNwbGl0QWRkcmVzc0VtcGxveWVyLmNpdHkpcmV0dXJuITA7ay5pbml0R29vZ2xlQXV0b2NvbXBsZXRlRW1wbG95ZXIoKTtkPSQoJyNmaW5hbmNlX211bHRpc3RlcF9mb3JtIGlucHV0W2RhdGEtZ29vZ2xlLXBsYWNlcy1jdXN0b209InRydWUiXVtuYW1lPSJhZGRyZXNzRW1wbG95ZXIiXScsCmIpLmdvb2dsZVBsYWNlcygiZ2V0QWRkcmVzcyIpO2lmKCIiIT1kLmNpdHkmJiIiIT1kLnN0cmVldClyZXR1cm4gYS5mb3JtZGF0YS5zcGxpdEFkZHJlc3NFbXBsb3llcj1kLCEwfXJldHVybiExfSx2YWxpZGF0ZUFkZHJlc3NFbXBsb3llcjI6ZnVuY3Rpb24oZCl7aWYoIiIhPWQpe2lmKCJ1bmRlZmluZWQiIT09YS5mb3JtZGF0YS5zcGxpdEFkZHJlc3NFbXBsb3llcjImJm51bGwhPT1hLmZvcm1kYXRhLnNwbGl0QWRkcmVzc0VtcGxveWVyMiYmIm9iamVjdCI9PT10eXBlb2YgYS5mb3JtZGF0YS5zcGxpdEFkZHJlc3NFbXBsb3llcjImJiJjaXR5ImluIGEuZm9ybWRhdGEuc3BsaXRBZGRyZXNzRW1wbG95ZXIyJiYiIiE9PWEuZm9ybWRhdGEuc3BsaXRBZGRyZXNzRW1wbG95ZXIyLmNpdHkpcmV0dXJuITA7ay5pbml0R29vZ2xlQXV0b2NvbXBsZXRlRW1wbG95ZXIyKCk7ZD0kKCcjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSBpbnB1dFtkYXRhLWdvb2dsZS1wbGFjZXMtY3VzdG9tPSJ0cnVlIl1bbmFtZT0iYWRkcmVzc0VtcGxveWVyMiJdJywKYikuZ29vZ2xlUGxhY2VzKCJnZXRBZGRyZXNzIik7aWYoIiIhPWQuY2l0eSYmIiIhPWQuc3RyZWV0KXJldHVybiBhLmZvcm1kYXRhLnNwbGl0QWRkcmVzc0VtcGxveWVyMj1kLCEwfXJldHVybiExfSx2YWxpZGF0ZVN0YXR1c1RpbWU6ZnVuY3Rpb24oZCl7aWYoIiIhPWQmJjEwPT1kLmxlbmd0aClyZXR1cm4gZD1kLnNwbGl0KCIvIiksbmV3IERhdGUoK2RbMl0sZFsxXS0xLCtkWzBdKTxuZXcgRGF0ZX0sdmFsaWRhdGVFbXBsb3ltZW50QWRkZWRJbmZvOmZ1bmN0aW9uKGQpe3ZhciBjPWEuZm9ybWRhdGEuZW1wbG95bWVudFN0YXR1cztyZXR1cm4iRklOQU5DRV9GT1JNX0VNUExPWU1FTlRfU1RBVFVTX0VNUExPWUVEIj09Y3x8IkZJTkFOQ0VfRk9STV9FTVBMT1lNRU5UX1NUQVRVU19TRUxGRU1QTE9ZRUQiPT1jfHwiRklOQU5DRV9GT1JNX0VNUExPWU1FTlRfU1RBVFVTX1NUVURFTlQiPT1jfHwiRklOQU5DRV9GT1JNX0VNUExPWU1FTlRfU1RBVFVTX09USEVSIj09Yz8iIiE9PWQmJiJ1bmRlZmluZWQiIT09CnR5cGVvZiBkOiEwfSx2YWxpZGF0ZUVtcGxveWVySW5mbzpmdW5jdGlvbigpe3JldHVybiJGSU5BTkNFX0ZPUk1fRU1QTE9ZTUVOVF9TVEFUVVNfRU1QTE9ZRUQiPT1hLmZvcm1kYXRhLmVtcGxveW1lbnRTdGF0dXM\/IiIhPT1hLmZvcm1kYXRhLmVtcGxveWVyTmFtZSYmInVuZGVmaW5lZCIhPT10eXBlb2YgYS5mb3JtZGF0YS5lbXBsb3llck5hbWUmJmsudmFsaWRhdGVQaG9uZU51bWJlckVtcGxveWVyKGEuZm9ybWRhdGEuZW1wbG95ZXJQaG9uZSk6ITB9LHZhbGlkYXRlRW1wbG95ZXJJbmZvMjpmdW5jdGlvbigpe3JldHVybiIiIT09YS5mb3JtZGF0YS5lbXBsb3llck5hbWUyJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBhLmZvcm1kYXRhLmVtcGxveWVyTmFtZTImJmsudmFsaWRhdGVQaG9uZU51bWJlckVtcGxveWVyMihhLmZvcm1kYXRhLmVtcGxveWVyUGhvbmUyKX0sdmFsaWRhdGVFbWFpbDpmdW5jdGlvbihkKXskLnZhbGlkaXR5LnNldHVwKHtvdXRwdXRNb2RlOiJjc3NPbmx5IixzY3JvbGxUbzohMX0pLnN0YXJ0KCk7CiQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtIixiKS5maW5kKCdpbnB1dFtuYW1lPSJlbWFpbEFkZHJlc3MiXScpLnZhbGlkRW1haWxBZGRyZXNzKCk7cmV0dXJuICQudmFsaWRpdHkuZW5kKCkudmFsaWR9LHZhbGlkYXRlQmlydGhkYXRlOmZ1bmN0aW9uKCl7dmFyIGQ9YS5mb3JtZGF0YS5iaXJ0aGRhdGVZZWFyLGM9YS5mb3JtZGF0YS5iaXJ0aGRhdGVNb250aCxlPWEuZm9ybWRhdGEuYmlydGhkYXRlRGF5O2lmKDMxPGV8fDEyPGN8fDE5MDA+ZHx8MD49ZXx8MD49Y3x8IiI9PWR8fCIiPT1jfHwiIj09ZXx8ND5kLmxlbmd0aClyZXR1cm4hMTtkPTE4PD1rLmNhbGN1bGF0ZUFnZShuZXcgRGF0ZShkLGMtMSxlKSxuZXcgRGF0ZSk7YS5zaG93RXJyb3ImJihkPyQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX2Vycm9yIixiKS5odG1sKCIiKTokKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9lcnJvciIsYikuaHRtbCgkKCIjYmlydGhkYXRlRXJyb3JNc2ciKS52YWwoKSkpO3JldHVybiBkfSwKY2FsY3VsYXRlQWdlOmZ1bmN0aW9uKGQsYyl7dmFyIGU9Yy5nZXRGdWxsWWVhcigpLGY9Yy5nZXRNb250aCgpO2M9Yy5nZXREYXRlKCk7dmFyIGc9ZC5nZXRGdWxsWWVhcigpLGw9ZC5nZXRNb250aCgpO2Q9ZC5nZXREYXRlKCk7ZS09ZztmLT1sO2lmKDA+Znx8MD09ZiYmMD5jLWQpZT1wYXJzZUludChlKS0xO3JldHVybiBlfSxoYXNVc2VyOmZ1bmN0aW9uKCl7cmV0dXJuISFsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgiZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV91c2VySWQiKX0sdXNlcklkOmZ1bmN0aW9uKGQpe2QmJigtMT09ZD8obG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oImZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fdXNlcklkIiksYS51c2VySWQ9ITEpOihsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgiZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV91c2VySWQiLGQpLGEudXNlcklkPWQpKTthLnVzZXJJZHx8KGEudXNlcklkPWxvY2FsU3RvcmFnZS5nZXRJdGVtKCJmaW5hbmNlX211bHRpc3RlcF9mb3JtX3VzZXJJZCIpKTsKcmV0dXJuIGEudXNlcklkfSxwdXNoRGF0YVRvU2VydmVyOmZ1bmN0aW9uKCl7aWYoIWEuYWpheFByb2Nlc3Mpe2EuYWpheFByb2Nlc3M9ITA7ay5zZXRUcmFkZUluKCk7dmFyIGQ9YS5mb3JtZGF0YSxjPWEuc3RlcCxlPSQoYikuZmluZCgiLmVtYWlsU3ViamVjdCIpLGY9JChiKS5maW5kKCIuZW1haWxCb2R5Iik7ZT1lLnRleHQoKT9lLnRleHQoKToiIjtmPWYuaHRtbCgpP2YuaHRtbCgpOiIiO3ZhciBnPSQoIiNjdXJyZW50U3RhdHVzIikudmFsKCk7ZW1haWxIYW5kbGVyLmJvZHk9ZjtlbWFpbEhhbmRsZXIuc3ViamVjdD1lO2suc2V0RW1haWxIYW5kbGVyU2VuZCgpO2VtYWlsSGFuZGxlci5tYWlsSUQ9IkNyZWRpdE11bHRpc3RlcFJlcXVlc3QiOyIxIj09dSYmKGVtYWlsSGFuZGxlci5tYWlsSUQ9IkNyZWRpdE11bHRpc3RlcFJlcXVlc3QybmRDaGFuY2UiKTsiMSI9PXgmJihlbWFpbEhhbmRsZXIubWFpbElEPSJDcmVkaXRNdWx0aXN0ZXBSZXF1ZXN0SW5zdGFudCIpO2VtYWlsSGFuZGxlci5kZXBhcnRtZW50PQoiRklOQU5DRSI7ZW1haWxIYW5kbGVyLmlzbW9iaWxlc2l0ZT0xPT0kKCIjaXNtb2JpbGUiKS52YWwoKT8iWUVTIjoiTk8iO2VtYWlsSGFuZGxlci5jb25kaXRpb249InVuZGVmaW5lZCI9PXR5cGVvZiBnPyJ1c2VkIjpnLnRvTG93ZXJDYXNlKCk7ZW1haWxIYW5kbGVyLmNyZWRpdERhdGE9ZDtIPWVtYWlsSGFuZGxlci5nZXRKc29uT2JqZWN0KCk7JC5hamF4KHt1cmw6Ii8iK3crIi9hamF4L3NldEZpbmFuY2VNdWx0aXN0ZXBEYXRhP3dzd2lkdGg9MCIsZGF0YVR5cGU6IkpTT04iLHR5cGU6IlBPU1QiLGRhdGE6e3VzZXJJZDprLnVzZXJJZCgpLGZvcm1kYXRhOmQsc3RlcDpjLGRvbWFpbjpRLHNpdGVJZDokKCIjc2l0ZUlEIikudmFsKCl8fCQoIiN0b3BzaXRlaWQiKS52YWwoKSxsYW5nOiQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKSxlbWFpbEhhbmRsZXJKc29uT2JqZWN0OkpTT04uc3RyaW5naWZ5KEgpfSxzdWNjZXNzOmZ1bmN0aW9uKGwpe2wuSUQmJgpsLmlkQ2hhbmdlZCYmay51c2VySWQobC5JRCl9LGNvbXBsZXRlOmZ1bmN0aW9uKGwpe2EuYWpheFByb2Nlc3M9ITF9fSl9fSxvblNob3dGdW5jdGlvblRvUnVuOmZ1bmN0aW9uKCl7aWYoYS5vblNob3dGdW5jdGlvbi5oYXNPd25Qcm9wZXJ0eSgic3RlcCIrYS5zdGVwKSYmInVuZGVmaW5lZCIhPXR5cGVvZiBhLm9uU2hvd0Z1bmN0aW9uWyJzdGVwIithLnN0ZXBdLmxlbmd0aClmb3IodmFyIGQ9MDtkPGEub25TaG93RnVuY3Rpb25bInN0ZXAiK2Euc3RlcF0ubGVuZ3RoO2QrKylrW2Eub25TaG93RnVuY3Rpb25bInN0ZXAiK2Euc3RlcF1bZF0uZnVuY10oKX0saW5pdEdvb2dsZUF1dG9jb21wbGV0ZTpmdW5jdGlvbigpe3ZhciBkPSQoJyNmaW5hbmNlX211bHRpc3RlcF9mb3JtIGlucHV0W2RhdGEtZ29vZ2xlLXBsYWNlcy1jdXN0b209InRydWUiXVtuYW1lPSJhZGRyZXNzIl0nLGIpWzBdLGM9bmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oKXtjLmRpc2Nvbm5lY3QoKTskKCcjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSBpbnB1dFtkYXRhLWdvb2dsZS1wbGFjZXMtY3VzdG9tPSJ0cnVlIl1bbmFtZT0iYWRkcmVzcyJdJywKYikuYXR0cigiYXV0b2NvbXBsZXRlIiwibmV3LXBhc3N3b3JkIil9KTtjLm9ic2VydmUoZCx7YXR0cmlidXRlczohMCxhdHRyaWJ1dGVGaWx0ZXI6WyJhdXRvY29tcGxldGUiXX0pO2Q9JCgiI0ZJTkFOQ0VfTVVMVElTVEVQX2RlYWxlckxhdCIpLnZhbCgpO3ZhciBlPSQoIiNGSU5BTkNFX01VTFRJU1RFUF9kZWFsZXJMb25nIikudmFsKCk7ZD17bGF0OmQsbG9uZzplLHJhZGl1czoyRTV9OyQoJyNmaW5hbmNlX211bHRpc3RlcF9mb3JtIGlucHV0W2RhdGEtZ29vZ2xlLXBsYWNlcy1jdXN0b209InRydWUiXVtuYW1lPSJhZGRyZXNzIl0nLGIpLmdvb2dsZVBsYWNlcyhkKX0saW5pdEdvb2dsZUF1dG9jb21wbGV0ZTI6ZnVuY3Rpb24oKXt2YXIgZD0kKCcjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSBpbnB1dFtkYXRhLWdvb2dsZS1wbGFjZXMtY3VzdG9tPSJ0cnVlIl1bbmFtZT0iYWRkcmVzczIiXScsYilbMF0sYz1uZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbigpe2MuZGlzY29ubmVjdCgpOwokKCcjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSBpbnB1dFtkYXRhLWdvb2dsZS1wbGFjZXMtY3VzdG9tPSJ0cnVlIl1bbmFtZT0iYWRkcmVzczIiXScsYikuYXR0cigiYXV0b2NvbXBsZXRlIiwibmV3LXBhc3N3b3JkIil9KTtjLm9ic2VydmUoZCx7YXR0cmlidXRlczohMCxhdHRyaWJ1dGVGaWx0ZXI6WyJhdXRvY29tcGxldGUiXX0pO2Q9JCgiI0ZJTkFOQ0VfTVVMVElTVEVQX2RlYWxlckxhdCIpLnZhbCgpO3ZhciBlPSQoIiNGSU5BTkNFX01VTFRJU1RFUF9kZWFsZXJMb25nIikudmFsKCk7ZD17bGF0OmQsbG9uZzplLHJhZGl1czoyRTV9OyQoJyNmaW5hbmNlX211bHRpc3RlcF9mb3JtIGlucHV0W2RhdGEtZ29vZ2xlLXBsYWNlcy1jdXN0b209InRydWUiXVtuYW1lPSJhZGRyZXNzMiJdJyxiKS5nb29nbGVQbGFjZXMoZCl9LGluaXRHb29nbGVBdXRvY29tcGxldGVFbXBsb3llcjpmdW5jdGlvbigpe3ZhciBkPSQoJyNmaW5hbmNlX211bHRpc3RlcF9mb3JtIGlucHV0W2RhdGEtZ29vZ2xlLXBsYWNlcy1jdXN0b209InRydWUiXVtuYW1lPSJhZGRyZXNzRW1wbG95ZXIiXScsCmIpWzBdLGM9bmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oKXtjLmRpc2Nvbm5lY3QoKTskKCcjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSBpbnB1dFtkYXRhLWdvb2dsZS1wbGFjZXMtY3VzdG9tPSJ0cnVlIl1bbmFtZT0iYWRkcmVzc0VtcGxveWVyIl0nLGIpLmF0dHIoImF1dG9jb21wbGV0ZSIsIm5ldy1wYXNzd29yZCIpfSk7Yy5vYnNlcnZlKGQse2F0dHJpYnV0ZXM6ITAsYXR0cmlidXRlRmlsdGVyOlsiYXV0b2NvbXBsZXRlIl19KTtkPSQoIiNGSU5BTkNFX01VTFRJU1RFUF9kZWFsZXJMYXQiKS52YWwoKTt2YXIgZT0kKCIjRklOQU5DRV9NVUxUSVNURVBfZGVhbGVyTG9uZyIpLnZhbCgpO2Q9e2xhdDpkLGxvbmc6ZSxyYWRpdXM6MkU1fTskKCcjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSBpbnB1dFtkYXRhLWdvb2dsZS1wbGFjZXMtY3VzdG9tPSJ0cnVlIl1bbmFtZT0iYWRkcmVzc0VtcGxveWVyIl0nLGIpLmdvb2dsZVBsYWNlcyhkKX0saW5pdEdvb2dsZUF1dG9jb21wbGV0ZUVtcGxveWVyMjpmdW5jdGlvbigpe3ZhciBkPQokKCcjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSBpbnB1dFtkYXRhLWdvb2dsZS1wbGFjZXMtY3VzdG9tPSJ0cnVlIl1bbmFtZT0iYWRkcmVzc0VtcGxveWVyMiJdJyxiKVswXSxjPW5ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKCl7Yy5kaXNjb25uZWN0KCk7JCgnI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaW5wdXRbZGF0YS1nb29nbGUtcGxhY2VzLWN1c3RvbT0idHJ1ZSJdW25hbWU9ImFkZHJlc3NFbXBsb3llcjIiXScsYikuYXR0cigiYXV0b2NvbXBsZXRlIiwibmV3LXBhc3N3b3JkIil9KTtjLm9ic2VydmUoZCx7YXR0cmlidXRlczohMCxhdHRyaWJ1dGVGaWx0ZXI6WyJhdXRvY29tcGxldGUiXX0pO2Q9JCgiI0ZJTkFOQ0VfTVVMVElTVEVQX2RlYWxlckxhdCIpLnZhbCgpO3ZhciBlPSQoIiNGSU5BTkNFX01VTFRJU1RFUF9kZWFsZXJMb25nIikudmFsKCk7ZD17bGF0OmQsbG9uZzplLHJhZGl1czoyRTV9OyQoJyNmaW5hbmNlX211bHRpc3RlcF9mb3JtIGlucHV0W2RhdGEtZ29vZ2xlLXBsYWNlcy1jdXN0b209InRydWUiXVtuYW1lPSJhZGRyZXNzRW1wbG95ZXIyIl0nLApiKS5nb29nbGVQbGFjZXMoZCl9LGluaXRCaXJ0aGRhdGVDaGFuZ2U6ZnVuY3Rpb24oKXskKCIuZmluYW5jZV9tdWx0aXN0ZXBfYmlydGhkYXRlX2lucHV0X2RpdiBpbnB1dCIpLm9uKCJrZXl1cCIsZnVuY3Rpb24oKXskKHRoaXMpLnZhbCgpLmxlbmd0aD09JCh0aGlzKS5hdHRyKCJtYXhsZW5ndGgiKSYmJCh0aGlzKS5wYXJlbnQoKS5uZXh0KCIuZmluYW5jZV9tdWx0aXN0ZXBfYmlydGhkYXRlX2lucHV0X2RpdiIpLmZpbmQoImlucHV0IikudHJpZ2dlcigiZm9jdXMiKX0pfSx2YWxpZGF0ZU5vdEVtcHR5RW1wbG95ZXJTdGF0dXNUaW1lOmZ1bmN0aW9uKCl7aWYoNzA8YS5mb3JtZGF0YS5lbXBsb3ltZW50U3RhdHVzWWVhcilyZXR1cm4gYS5zaG93RXJyb3ImJigkKCdbbmFtZT0iZW1wbG95bWVudFN0YXR1c1llYXIiXScpLmNzcygiYm9yZGVyLWNvbG9yIiwiI2M4M2UzZSIpLCQoJ1tuYW1lPSJlbXBsb3ltZW50U3RhdHVzWWVhciJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwKIjVweCIpLCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX2Vycm9yIixiKS5odG1sKCQoIiNhZGRyZXNzVGltZXNFcnJvck1zZyIpLnZhbCgpKSksITE7aWYoMTI8YS5mb3JtZGF0YS5lbXBsb3ltZW50U3RhdHVzTW9udGgpcmV0dXJuIGEuc2hvd0Vycm9yJiYoJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNNb250aCJdJykuY3NzKCJib3JkZXItY29sb3IiLCIjYzgzZTNlIiksJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNNb250aCJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiNXB4IiksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoJCgiI2FkZHJlc3NUaW1lc0Vycm9yTXNnIikudmFsKCkpKSwhMTtpZigwPj1hLmZvcm1kYXRhLmVtcGxveW1lbnRTdGF0dXNZZWFyJiYwPj1hLmZvcm1kYXRhLmVtcGxveW1lbnRTdGF0dXNNb250aClyZXR1cm4gYS5zaG93RXJyb3ImJigkKCdbbmFtZT0iZW1wbG95bWVudFN0YXR1c1llYXIiXScpLmNzcygiYm9yZGVyLWNvbG9yIiwKIiNjODNlM2UiKSwkKCdbbmFtZT0iZW1wbG95bWVudFN0YXR1c01vbnRoIl0nKS5jc3MoImJvcmRlci1jb2xvciIsIiNjODNlM2UiKSwkKCdbbmFtZT0iZW1wbG95bWVudFN0YXR1c1llYXIiXScpLmNzcygiYm9yZGVyLWJvdHRvbS13aWR0aCIsIjVweCIpLCQoJ1tuYW1lPSJlbXBsb3ltZW50U3RhdHVzTW9udGgiXScpLmNzcygiYm9yZGVyLWJvdHRvbS13aWR0aCIsIjVweCIpLCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX2Vycm9yIixiKS5odG1sKCQoIiNhZGRyZXNzVGltZXNFcnJvck1zZyIpLnZhbCgpKSksITE7YS5zaG93RXJyb3ImJigkKCdbbmFtZT0iZW1wbG95bWVudFN0YXR1c1llYXIiXScpLmNzcygiYm9yZGVyLWNvbG9yIiwiIiksJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNNb250aCJdJykuY3NzKCJib3JkZXItY29sb3IiLCIiKSwkKCdbbmFtZT0iZW1wbG95bWVudFN0YXR1c1llYXIiXScpLmNzcygiYm9yZGVyLWJvdHRvbS13aWR0aCIsIiIpLCQoJ1tuYW1lPSJlbXBsb3ltZW50U3RhdHVzTW9udGgiXScpLmNzcygiYm9yZGVyLWJvdHRvbS13aWR0aCIsCiIiKSwkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9lcnJvciIsYikuaHRtbCgiIikpOyIxIj09eCYmKDYwPjEyKnBhcnNlSW50KGEuZm9ybWRhdGEuZW1wbG95bWVudFN0YXR1c1llYXIpK3BhcnNlSW50KGEuZm9ybWRhdGEuZW1wbG95bWVudFN0YXR1c01vbnRoKT9hLm5leHRTdGVwRGVmYXVsdFZhbHVlcy5zdGVwMTc9Mjk6YS5uZXh0U3RlcERlZmF1bHRWYWx1ZXMuc3RlcDE3PTIyKTtyZXR1cm4hMH0sdmFsaWRhdGVOb3RFbXB0eUVtcGxveWVyU3RhdHVzVGltZTI6ZnVuY3Rpb24oKXtpZig3MDxhLmZvcm1kYXRhLmVtcGxveW1lbnRTdGF0dXNZZWFyMilyZXR1cm4gYS5zaG93RXJyb3ImJigkKCdbbmFtZT0iZW1wbG95bWVudFN0YXR1c1llYXIyIl0nKS5jc3MoImJvcmRlci1jb2xvciIsIiNjODNlM2UiKSwkKCdbbmFtZT0iZW1wbG95bWVudFN0YXR1c1llYXIyIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLCI1cHgiKSwkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9lcnJvciIsCmIpLmh0bWwoJCgiI2FkZHJlc3NUaW1lc0Vycm9yTXNnIikudmFsKCkpKSwhMTtpZigxMjxhLmZvcm1kYXRhLmVtcGxveW1lbnRTdGF0dXNNb250aDIpcmV0dXJuIGEuc2hvd0Vycm9yJiYoJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNNb250aDIiXScpLmNzcygiYm9yZGVyLWNvbG9yIiwiI2M4M2UzZSIpLCQoJ1tuYW1lPSJlbXBsb3ltZW50U3RhdHVzTW9udGgyIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLCI1cHgiKSwkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9lcnJvciIsYikuaHRtbCgkKCIjYWRkcmVzc1RpbWVzRXJyb3JNc2ciKS52YWwoKSkpLCExO2lmKDA+PWEuZm9ybWRhdGEuZW1wbG95bWVudFN0YXR1c1llYXIyJiYwPj1hLmZvcm1kYXRhLmVtcGxveW1lbnRTdGF0dXNNb250aDIpcmV0dXJuIGEuc2hvd0Vycm9yJiYoJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNZZWFyMiJdJykuY3NzKCJib3JkZXItY29sb3IiLCIjYzgzZTNlIiksJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNNb250aDIiXScpLmNzcygiYm9yZGVyLWNvbG9yIiwKIiNjODNlM2UiKSwkKCdbbmFtZT0iZW1wbG95bWVudFN0YXR1c1llYXIyIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLCI1cHgiKSwkKCdbbmFtZT0iZW1wbG95bWVudFN0YXR1c01vbnRoMiJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiNXB4IiksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fZXJyb3IiLGIpLmh0bWwoJCgiI2FkZHJlc3NUaW1lc0Vycm9yTXNnIikudmFsKCkpKSwhMTthLnNob3dFcnJvciYmKCQoJ1tuYW1lPSJlbXBsb3ltZW50U3RhdHVzWWVhcjIiXScpLmNzcygiYm9yZGVyLWNvbG9yIiwiIiksJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNNb250aDIiXScpLmNzcygiYm9yZGVyLWNvbG9yIiwiIiksJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNZZWFyMiJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiIiksJCgnW25hbWU9ImVtcGxveW1lbnRTdGF0dXNNb250aDIiXScpLmNzcygiYm9yZGVyLWJvdHRvbS13aWR0aCIsIiIpLCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX2Vycm9yIiwKYikuaHRtbCgiIikpO3JldHVybiEwfSx2YWxpZGF0ZU5vdEVtcHR5QWRkcmVzc1RpbWU6ZnVuY3Rpb24oKXtpZig3MDxhLmZvcm1kYXRhLmFkZHJlc3NfeWVhcnMpcmV0dXJuIGEuc2hvd0Vycm9yJiYoJCgnW25hbWU9ImFkZHJlc3NfeWVhcnMiXScpLmNzcygiYm9yZGVyLWNvbG9yIiwiI2M4M2UzZSIpLCQoJ1tuYW1lPSJhZGRyZXNzX3llYXJzIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLCI1cHgiKSwkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9lcnJvciIsYikuaHRtbCgkKCIjYWRkcmVzc1RpbWVzRXJyb3JNc2ciKS52YWwoKSkpLCExO2lmKDEyPGEuZm9ybWRhdGEuYWRkcmVzc19tb250aHMpcmV0dXJuIGEuc2hvd0Vycm9yJiYoJCgnW25hbWU9ImFkZHJlc3NfbW9udGhzIl0nKS5jc3MoImJvcmRlci1jb2xvciIsIiNjODNlM2UiKSwkKCdbbmFtZT0iYWRkcmVzc19tb250aHMiXScpLmNzcygiYm9yZGVyLWJvdHRvbS13aWR0aCIsIjVweCIpLCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX2Vycm9yIiwKYikuaHRtbCgkKCIjYWRkcmVzc1RpbWVzRXJyb3JNc2ciKS52YWwoKSkpLCExO2lmKDA+PWEuZm9ybWRhdGEuYWRkcmVzc195ZWFycyYmMD49YS5mb3JtZGF0YS5hZGRyZXNzX21vbnRocylyZXR1cm4gYS5zaG93RXJyb3ImJigkKCdbbmFtZT0iYWRkcmVzc195ZWFycyJdJykuY3NzKCJib3JkZXItY29sb3IiLCIjYzgzZTNlIiksJCgnW25hbWU9ImFkZHJlc3NfbW9udGhzIl0nKS5jc3MoImJvcmRlci1jb2xvciIsIiNjODNlM2UiKSwkKCdbbmFtZT0iYWRkcmVzc195ZWFycyJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiNXB4IiksJCgnW25hbWU9ImFkZHJlc3NfbW9udGhzIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLCI1cHgiKSwkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9lcnJvciIsYikuaHRtbCgkKCIjYWRkcmVzc1RpbWVzRXJyb3JNc2ciKS52YWwoKSkpLCExO2Euc2hvd0Vycm9yJiYoJCgnW25hbWU9ImFkZHJlc3NfeWVhcnMiXScpLmNzcygiYm9yZGVyLWNvbG9yIiwKIiIpLCQoJ1tuYW1lPSJhZGRyZXNzX21vbnRocyJdJykuY3NzKCJib3JkZXItY29sb3IiLCIiKSwkKCdbbmFtZT0iYWRkcmVzc195ZWFycyJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiIiksJCgnW25hbWU9ImFkZHJlc3NfbW9udGhzIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLCIiKSwkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9lcnJvciIsYikuaHRtbCgiIikpOyIxIj09eCYmKDI0PjEyKnBhcnNlSW50KGEuZm9ybWRhdGEuYWRkcmVzc195ZWFycykrcGFyc2VJbnQoYS5mb3JtZGF0YS5hZGRyZXNzX21vbnRocyk\/YS5uZXh0U3RlcERlZmF1bHRWYWx1ZXMuc3RlcDEyPTI3OmEubmV4dFN0ZXBEZWZhdWx0VmFsdWVzLnN0ZXAxMj0xMyk7cmV0dXJuITB9LHZhbGlkYXRlQ29uc2VudHM6ZnVuY3Rpb24oKXtyZXR1cm4iUUMiIT0kKCIjRklOQU5DRV9NVUxUSVNURVBfRGVhbGVyUHJvdmluY2UiLGIpLnZhbCgpfHxhLmZvcm1kYXRhLmNvbnNlbnRBY2NvdW50TW9uaXRvcmluZyYmCmEuZm9ybWRhdGEuY29uc2VudENyZWRpdEFzc2Vzc21lbnQ\/ITA6ITF9LHZhbGlkYXRlTm90RW1wdHlBZGRyZXNzMlRpbWU6ZnVuY3Rpb24oKXtpZig3MDxhLmZvcm1kYXRhLmFkZHJlc3MyX3llYXJzKXJldHVybiBhLnNob3dFcnJvciYmKCQoJ1tuYW1lPSJhZGRyZXNzMl95ZWFycyJdJykuY3NzKCJib3JkZXItY29sb3IiLCIjYzgzZTNlIiksJCgnW25hbWU9ImFkZHJlc3MyX3llYXJzIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLCI1cHgiKSwkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9lcnJvciIsYikuaHRtbCgkKCIjYWRkcmVzc1RpbWVzRXJyb3JNc2ciKS52YWwoKSkpLCExO2lmKDEyPGEuZm9ybWRhdGEuYWRkcmVzczJfbW9udGhzKXJldHVybiBhLnNob3dFcnJvciYmKCQoJ1tuYW1lPSJhZGRyZXNzMl9tb250aHMiXScpLmNzcygiYm9yZGVyLWNvbG9yIiwiI2M4M2UzZSIpLCQoJ1tuYW1lPSJhZGRyZXNzMl9tb250aHMiXScpLmNzcygiYm9yZGVyLWJvdHRvbS13aWR0aCIsCiI1cHgiKSwkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9lcnJvciIsYikuaHRtbCgkKCIjYWRkcmVzc1RpbWVzRXJyb3JNc2ciKS52YWwoKSkpLCExO2lmKDA+PWEuZm9ybWRhdGEuYWRkcmVzczJfeWVhcnMmJjA+PWEuZm9ybWRhdGEuYWRkcmVzczJfbW9udGhzKXJldHVybiBhLnNob3dFcnJvciYmKCQoJ1tuYW1lPSJhZGRyZXNzMl95ZWFycyJdJykuY3NzKCJib3JkZXItY29sb3IiLCIjYzgzZTNlIiksJCgnW25hbWU9ImFkZHJlc3MyX21vbnRocyJdJykuY3NzKCJib3JkZXItY29sb3IiLCIjYzgzZTNlIiksJCgnW25hbWU9ImFkZHJlc3MyX3llYXJzIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLCI1cHgiKSwkKCdbbmFtZT0iYWRkcmVzczJfbW9udGhzIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLCI1cHgiKSwkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9lcnJvciIsYikuaHRtbCgkKCIjYWRkcmVzczJUaW1lc0Vycm9yTXNnIikudmFsKCkpKSwhMTthLnNob3dFcnJvciYmCigkKCdbbmFtZT0iYWRkcmVzczJfeWVhcnMiXScpLmNzcygiYm9yZGVyLWNvbG9yIiwiIiksJCgnW25hbWU9ImFkZHJlc3MyX21vbnRocyJdJykuY3NzKCJib3JkZXItY29sb3IiLCIiKSwkKCdbbmFtZT0iYWRkcmVzczJfeWVhcnMiXScpLmNzcygiYm9yZGVyLWJvdHRvbS13aWR0aCIsIiIpLCQoJ1tuYW1lPSJhZGRyZXNzMl9tb250aHMiXScpLmNzcygiYm9yZGVyLWJvdHRvbS13aWR0aCIsIiIpLCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX2Vycm9yIixiKS5odG1sKCIiKSk7cmV0dXJuITB9LHZhbGlkYXRlTm90RW1wdHlNb250aGx5SW5jb21lVGltZTpmdW5jdGlvbigpe2lmKDcwPGEuZm9ybWRhdGEubW9udGhseUluY29tZV95ZWFycylyZXR1cm4gYS5zaG93RXJyb3ImJigkKCdbbmFtZT0ibW9udGhseUluY29tZV95ZWFycyJdJykuY3NzKCJib3JkZXItY29sb3IiLCIjYzgzZTNlIiksJCgnW25hbWU9Im1vbnRobHlJbmNvbWVfeWVhcnMiXScpLmNzcygiYm9yZGVyLWJvdHRvbS13aWR0aCIsCiI1cHgiKSwkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9lcnJvciIsYikuaHRtbCgkKCIjbW9udGhseUluY29tZVRpbWVzRXJyb3JNc2ciKS52YWwoKSkpLCExO2lmKDEyPGEuZm9ybWRhdGEubW9udGhseUluY29tZV9tb250aHMpcmV0dXJuIGEuc2hvd0Vycm9yJiYoJCgnW25hbWU9Im1vbnRobHlJbmNvbWVfbW9udGhzIl0nKS5jc3MoImJvcmRlci1jb2xvciIsIiNjODNlM2UiKSwkKCdbbmFtZT0ibW9udGhseUluY29tZV9tb250aHMiXScpLmNzcygiYm9yZGVyLWJvdHRvbS13aWR0aCIsIjVweCIpLCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX2Vycm9yIixiKS5odG1sKCQoIiNtb250aGx5SW5jb21lVGltZXNFcnJvck1zZyIpLnZhbCgpKSksITE7aWYoMD49YS5mb3JtZGF0YS5tb250aGx5SW5jb21lX3llYXJzJiYwPj1hLmZvcm1kYXRhLm1vbnRobHlJbmNvbWVfbW9udGhzKXJldHVybiBhLnNob3dFcnJvciYmKCQoJ1tuYW1lPSJtb250aGx5SW5jb21lX3llYXJzIl0nKS5jc3MoImJvcmRlci1jb2xvciIsCiIjYzgzZTNlIiksJCgnW25hbWU9Im1vbnRobHlJbmNvbWVfbW9udGhzIl0nKS5jc3MoImJvcmRlci1jb2xvciIsIiNjODNlM2UiKSwkKCdbbmFtZT0ibW9udGhseUluY29tZV95ZWFycyJdJykuY3NzKCJib3JkZXItYm90dG9tLXdpZHRoIiwiNXB4IiksJCgnW25hbWU9Im1vbnRobHlJbmNvbWVfbW9udGhzIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLCI1cHgiKSwkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9lcnJvciIsYikuaHRtbCgkKCIjbW9udGhseUluY29tZVRpbWVzRXJyb3JNc2ciKS52YWwoKSkpLCExO2Euc2hvd0Vycm9yJiYoJCgnW25hbWU9Im1vbnRobHlJbmNvbWVfeWVhcnMiXScpLmNzcygiYm9yZGVyLWNvbG9yIiwiIiksJCgnW25hbWU9Im1vbnRobHlJbmNvbWVfbW9udGhzIl0nKS5jc3MoImJvcmRlci1jb2xvciIsIiIpLCQoJ1tuYW1lPSJtb250aGx5SW5jb21lX3llYXJzIl0nKS5jc3MoImJvcmRlci1ib3R0b20td2lkdGgiLCIiKSwkKCdbbmFtZT0ibW9udGhseUluY29tZV9tb250aHMiXScpLmNzcygiYm9yZGVyLWJvdHRvbS13aWR0aCIsCiIiKSwkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9lcnJvciIsYikuaHRtbCgiIikpO3JldHVybiEwfSx2YWxpZGF0ZVBob25lTnVtYmVyOmZ1bmN0aW9uKGQpe3JldHVybiBkJiYocGhvbmU9ZC5yZXBsYWNlKCIoIiwiIikucmVwbGFjZSgiKSIsIiIpLnJlcGxhY2UoIiAiLCIiKS5yZXBsYWNlKCItIiwiIiksMTA9PXBob25lLmxlbmd0aCk\/KCQudmFsaWRpdHkuc2V0dXAoe291dHB1dE1vZGU6InBvcHVwIixzY3JvbGxUbzohMX0pLnN0YXJ0KCksJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0iLGIpLmZpbmQoJ2lucHV0W25hbWU9InBob25lTnVtYmVyIl0nKS52YWxpZGF0ZVBob25lKCksJC52YWxpZGl0eS5lbmQoKS52YWxpZCk6ITF9LHZhbGlkYXRlUGhvbmVOdW1iZXJFbXBsb3llcjpmdW5jdGlvbihkKXtyZXR1cm4gZCYmKHBob25lPWQucmVwbGFjZSgiKCIsIiIpLnJlcGxhY2UoIikiLCIiKS5yZXBsYWNlKCIgIiwiIikucmVwbGFjZSgiLSIsIiIpLDEwPT1waG9uZS5sZW5ndGgpPwooJC52YWxpZGl0eS5zZXR1cCh7b3V0cHV0TW9kZToicG9wdXAiLHNjcm9sbFRvOiExfSkuc3RhcnQoKSwkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSIsYikuZmluZCgiaW5wdXQuZW1wbG95ZXJQaG9uZSIpLnZhbGlkYXRlUGhvbmUoKSwkLnZhbGlkaXR5LmVuZCgpLnZhbGlkKTohMX0sdmFsaWRhdGVQaG9uZU51bWJlckVtcGxveWVyMjpmdW5jdGlvbihkKXtyZXR1cm4gZCYmKHBob25lPWQucmVwbGFjZSgiKCIsIiIpLnJlcGxhY2UoIikiLCIiKS5yZXBsYWNlKCIgIiwiIikucmVwbGFjZSgiLSIsIiIpLDEwPT1waG9uZS5sZW5ndGgpPygkLnZhbGlkaXR5LnNldHVwKHtvdXRwdXRNb2RlOiJwb3B1cCIsc2Nyb2xsVG86ITF9KS5zdGFydCgpLCQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtIixiKS5maW5kKCJpbnB1dC5lbXBsb3llclBob25lMiIpLnZhbGlkYXRlUGhvbmUoKSwkLnZhbGlkaXR5LmVuZCgpLnZhbGlkKTohMX0sdmFsaWRhdGVTSU46ZnVuY3Rpb24oZCl7cmV0dXJuKCIxIj09CnUmJiIwIj09QXx8IjEiPT14KSYmIiI9PWQmJjA8PWEub3B0aW9uYWxTdGVwLmluZGV4T2YoMjIpfHxkJiYoc2luPWQucmVwbGFjZUFsbCgiICIsIiIpLDk9PXNpbi5sZW5ndGgpPyEwOiExfSx2YWxpZGF0ZVZlaGljbGU6ZnVuY3Rpb24oKXt2YXIgZD0hMTtzd2l0Y2goYS5jdXJyZW50RGVwdCl7Y2FzZSAiVVNFRCI6ZD0iIiE9YS5mb3JtZGF0YS5jdXJyZW50TWFrZSYmIiIhPWEuZm9ybWRhdGEuY3VycmVudE1vZGVsJiYiIiE9YS5mb3JtZGF0YS5jdXJyZW50WWVhciYmIiIhPWEuZm9ybWRhdGEuY3VycmVudFN0b2NrTnVtYmVyJiYiIiE9YS5mb3JtZGF0YS5jdXJyZW50VHJpbSYmIiIhPWEuZm9ybWRhdGEuY3VycmVudENhcklkO2JyZWFrO2Nhc2UgIk5FV0lOViI6ZD0iIiE9YS5mb3JtZGF0YS5jdXJyZW50TWFrZSYmIiIhPWEuZm9ybWRhdGEuY3VycmVudE1vZGVsJiYiIiE9YS5mb3JtZGF0YS5jdXJyZW50WWVhciYmIiIhPWEuZm9ybWRhdGEuY3VycmVudFN0b2NrTnVtYmVyJiYiIiE9CmEuZm9ybWRhdGEuY3VycmVudFRyaW0mJiIiIT1hLmZvcm1kYXRhLmN1cnJlbnRDYXJJZCYmIiIhPWEuZm9ybWRhdGEuY3VycmVudFN0eWxlaWQ7YnJlYWs7Y2FzZSAiTkVXIjpkPSIiIT1hLmZvcm1kYXRhLmN1cnJlbnRNYWtlJiYiIiE9YS5mb3JtZGF0YS5jdXJyZW50TW9kZWwmJiIiIT1hLmZvcm1kYXRhLmN1cnJlbnRZZWFyJiYiIiE9YS5mb3JtZGF0YS5jdXJyZW50U3R5bGVpZCYmIiIhPWEuZm9ybWRhdGEuY3VycmVudFRyaW19cmV0dXJuIGR9LGluaXRWZWhpY2xlU2VsZWN0aW9uOmZ1bmN0aW9uKCl7YS5pbml0VmVoaWNsZVNlbGVjdGlvbkZpcnN0JiYoJCgnaW5wdXRbbmFtZT0iZmluYW5jZU11bHRpc3RlcERlcHQiXScsYikub24oImNoYW5nZSIsZnVuY3Rpb24oKXtsZXQgZD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmVoaWNsZVNlbGVjdGlvbldyYXBwZXIiKTtkLnJlcGxhY2VXaXRoKGQuY2xvbmVOb2RlKCEwKSk7ay5pbml0VmVoaWNsZVNlbGVjdGlvbigpfSksYS5pbml0VmVoaWNsZVNlbGVjdGlvbkZpcnN0PQohMSk7JCgiI2ZpbmFuY2VNdWx0aXN0ZXBNYWtlIixiKS5vZmYoImNoYW5nZSIpOyQoIiNmaW5hbmNlTXVsdGlzdGVwTW9kZWwiLGIpLm9mZigiY2hhbmdlIik7JCgiI2ZpbmFuY2VNdWx0aXN0ZXBUcmltIixiKS5vZmYoImNoYW5nZSIpOyJVU0VEIj09YS5jdXJyZW50RGVwdHx8Ik5FV0lOViI9PWEuY3VycmVudERlcHQ\/KG0oIm5ld2ludiIpLCQoIiNmaW5hbmNlTXVsdGlzdGVwTWFrZSIsYikub24oImNoYW5nZSIsZnVuY3Rpb24oKXsiIiE9JCgiI2ZpbmFuY2VNdWx0aXN0ZXBNYWtlIixiKS52YWwoKSYmKGEuZm9ybWRhdGEuY3VycmVudE1vZGVsPSIiLGEuZm9ybWRhdGEuY3VycmVudE1vZGVsVGV4dD0iIixhLmZvcm1kYXRhLmN1cnJlbnRUcmltPSIiLGEuZm9ybWRhdGEuY3VycmVudFllYXI9IiIsYS5mb3JtZGF0YS5jdXJyZW50U3R5bGVpZD0iIixhLmZvcm1kYXRhLnZlaGljbGVQcmljZT0iIixhLmZvcm1kYXRhLmN1cnJlbnRDYXJJZD0iIixhLmZvcm1kYXRhLmN1cnJlbnRTdG9ja051bWJlcj0KIiIsYS5mb3JtZGF0YS5jdXJyZW50TWlsZWFnZT0xMCxrLmNoZWNrVmFsaWRpdHkoKSxuKCJuZXdpbnYiLCQoIiNmaW5hbmNlTXVsdGlzdGVwTWFrZSIsYikudmFsKCkpKX0pLCQoIiNmaW5hbmNlTXVsdGlzdGVwTW9kZWwiLGIpLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7IiIhPSQoIiNmaW5hbmNlTXVsdGlzdGVwTWFrZSIsYikudmFsKCkmJiIiIT0kKCIjZmluYW5jZU11bHRpc3RlcE1vZGVsIixiKS52YWwoKSYmKGEuZm9ybWRhdGEuY3VycmVudFRyaW09IiIsYS5mb3JtZGF0YS5jdXJyZW50WWVhcj0iIixhLmZvcm1kYXRhLmN1cnJlbnRTdHlsZWlkPSIiLGEuZm9ybWRhdGEudmVoaWNsZVByaWNlPSIiLGEuZm9ybWRhdGEuY3VycmVudENhcklkPSIiLGEuZm9ybWRhdGEuY3VycmVudFN0b2NrTnVtYmVyPSIiLGEuZm9ybWRhdGEuY3VycmVudE1pbGVhZ2U9MTAsay5jaGVja1ZhbGlkaXR5KCksdigkKCIjZmluYW5jZU11bHRpc3RlcE1ha2UiLGIpLnZhbCgpLCQoIiNmaW5hbmNlTXVsdGlzdGVwTW9kZWwgb3B0aW9uOnNlbGVjdGVkIiwKYikuYXR0cigiZGF0YS1tb2RlbCIpKSl9KSwkKCIjZmluYW5jZU11bHRpc3RlcFRyaW0iLGIpLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7YS5mb3JtZGF0YS5jdXJyZW50TWFrZT0kKCIjZmluYW5jZU11bHRpc3RlcE1ha2UiLGIpLnZhbCgpO2EuZm9ybWRhdGEuY3VycmVudE1vZGVsPSQoIiNmaW5hbmNlTXVsdGlzdGVwTW9kZWwgb3B0aW9uOnNlbGVjdGVkIixiKS5hdHRyKCJkYXRhLW1vZGVsIik7YS5mb3JtZGF0YS5jdXJyZW50VHJpbT0kKCIjZmluYW5jZU11bHRpc3RlcFRyaW0iLGIpLnZhbCgpO2EuZm9ybWRhdGEuY3VycmVudFllYXI9JCgiI2ZpbmFuY2VNdWx0aXN0ZXBUcmltIG9wdGlvbjpzZWxlY3RlZCIsYikuYXR0cigiZGF0YS15ZWFyIik7YS5mb3JtZGF0YS5jdXJyZW50U3R5bGVpZD0kKCIjZmluYW5jZU11bHRpc3RlcFRyaW0gb3B0aW9uOnNlbGVjdGVkIixiKS5hdHRyKCJkYXRhLXN0eWxlaWQiKTthLmZvcm1kYXRhLnZlaGljbGVQcmljZT0kKCIjZmluYW5jZU11bHRpc3RlcFRyaW0gb3B0aW9uOnNlbGVjdGVkIiwKYikuYXR0cigiZGF0YS1wcmljZSIpO2EuZm9ybWRhdGEuY3VycmVudENhcklkPSQoIiNmaW5hbmNlTXVsdGlzdGVwVHJpbSBvcHRpb246c2VsZWN0ZWQiLGIpLmF0dHIoImRhdGEtdmVoaWNsZWlkIik7YS5mb3JtZGF0YS5jdXJyZW50U3RvY2tOdW1iZXI9JCgiI2ZpbmFuY2VNdWx0aXN0ZXBUcmltIG9wdGlvbjpzZWxlY3RlZCIsYikuYXR0cigiZGF0YS1zdG9ja251bWJlciIpO2EuZm9ybWRhdGEuY3VycmVudE1pbGVhZ2U9JCgiI2ZpbmFuY2VNdWx0aXN0ZXBUcmltIG9wdGlvbjpzZWxlY3RlZCIsYikuYXR0cigiZGF0YS1taWxlYWdlIik7dmFyIGQ9JCgiI2ZpbmFuY2VNdWx0aXN0ZXBUcmltIG9wdGlvbjpzZWxlY3RlZCIsYikuYXR0cigiZGF0YS1pc25ldyIpLGM9JCgiI2ZpbmFuY2VNdWx0aXN0ZXBUcmltIG9wdGlvbjpzZWxlY3RlZCIsYikuYXR0cigiZGF0YS1pc2RlbW8iKSYmIjEiPT0kKCdpbnB1dFtuYW1lPSJGSU5BTkNFX0RFTU9BU05FVyJdJyxiKS52YWwoKTthLmN1cnJlbnREZXB0PQoiMSI9PWR8fGM\/Ik5FV0lOViI6IlVTRUQiO2suY2hlY2tWYWxpZGl0eSgpfSkpOihtKGEuY3VycmVudERlcHQpLCQoIiNmaW5hbmNlTXVsdGlzdGVwTWFrZSIsYikub24oImNoYW5nZSIsZnVuY3Rpb24oKXsiIiE9JCgiI2ZpbmFuY2VNdWx0aXN0ZXBNYWtlIixiKS52YWwoKSYmKGEuZm9ybWRhdGEuY3VycmVudE1vZGVsPSIiLGEuZm9ybWRhdGEuY3VycmVudE1vZGVsVGV4dD0iIixhLmZvcm1kYXRhLmN1cnJlbnRZZWFyPSIiLGEuZm9ybWRhdGEuY3VycmVudFRyaW09IiIsYS5mb3JtZGF0YS5jdXJyZW50TWlsZWFnZT0xMCxhLmZvcm1kYXRhLmN1cnJlbnRTdHlsZWlkPSIiLGEuZm9ybWRhdGEudmVoaWNsZVByaWNlPSIiLGsuY2hlY2tWYWxpZGl0eSgpLG4oYS5jdXJyZW50RGVwdCwkKCIjZmluYW5jZU11bHRpc3RlcE1ha2UiLGIpLnZhbCgpKSl9KSwkKCIjZmluYW5jZU11bHRpc3RlcE1vZGVsIixiKS5vbigiY2hhbmdlIixmdW5jdGlvbigpeyIiIT0kKCIjZmluYW5jZU11bHRpc3RlcE1ha2UiLApiKS52YWwoKSYmIiIhPSQoIiNmaW5hbmNlTXVsdGlzdGVwTW9kZWwiLGIpLnZhbCgpJiYoYS5mb3JtZGF0YS5jdXJyZW50WWVhcj0iIixhLmZvcm1kYXRhLmN1cnJlbnRUcmltPSIiLGEuZm9ybWRhdGEuY3VycmVudE1pbGVhZ2U9MTAsYS5mb3JtZGF0YS5jdXJyZW50U3R5bGVpZD0iIixhLmZvcm1kYXRhLnZlaGljbGVQcmljZT0iIixrLmNoZWNrVmFsaWRpdHkoKSxxKCQoIiNmaW5hbmNlTXVsdGlzdGVwTWFrZSIsYikudmFsKCksJCgiI2ZpbmFuY2VNdWx0aXN0ZXBNb2RlbCBvcHRpb246c2VsZWN0ZWQiLGIpLmF0dHIoImRhdGEtbW9kZWwiKSwkKCIjZmluYW5jZU11bHRpc3RlcE1vZGVsIG9wdGlvbjpzZWxlY3RlZCIsYikuYXR0cigiZGF0YS15ZWFyIikpKX0pLCQoIiNmaW5hbmNlTXVsdGlzdGVwVHJpbSIsYikub24oImNoYW5nZSIsZnVuY3Rpb24oKXthLmZvcm1kYXRhLmN1cnJlbnRNYWtlPSQoIiNmaW5hbmNlTXVsdGlzdGVwTWFrZSIsYikudmFsKCk7YS5mb3JtZGF0YS5jdXJyZW50TW9kZWw9CiQoIiNmaW5hbmNlTXVsdGlzdGVwTW9kZWwgb3B0aW9uOnNlbGVjdGVkIixiKS5hdHRyKCJkYXRhLW1vZGVsIik7YS5mb3JtZGF0YS5jdXJyZW50WWVhcj0kKCIjZmluYW5jZU11bHRpc3RlcE1vZGVsIG9wdGlvbjpzZWxlY3RlZCIsYikuYXR0cigiZGF0YS15ZWFyIik7YS5mb3JtZGF0YS5jdXJyZW50VHJpbT0kKCIjZmluYW5jZU11bHRpc3RlcFRyaW0iLGIpLnZhbCgpO2EuZm9ybWRhdGEuY3VycmVudE1pbGVhZ2U9MTA7YS5mb3JtZGF0YS5jdXJyZW50U3R5bGVpZD0kKCIjZmluYW5jZU11bHRpc3RlcFRyaW0gb3B0aW9uOnNlbGVjdGVkIixiKS5hdHRyKCJkYXRhLXN0eWxlaWQiKTthLmZvcm1kYXRhLnZlaGljbGVQcmljZT0kKCIjZmluYW5jZU11bHRpc3RlcFRyaW0gb3B0aW9uOnNlbGVjdGVkIixiKS5hdHRyKCJkYXRhLXByaWNlIik7ay5jaGVja1ZhbGlkaXR5KCl9KSl9LHZhbGlkYXRlUGF5bWVudDpmdW5jdGlvbigpe3JldHVybiIiIT1hLmZvcm1kYXRhLnBheW1lbnRUeXBlJiYKIiIhPWEuZm9ybWRhdGEucGF5bWVudFRlcm0mJiIiIT1hLmZvcm1kYXRhLnBheW1lbnRJbnRlcnZhbCYmIiIhPWEuZm9ybWRhdGEucGF5bWVudFZhbHVlJiYiIiE9YS5mb3JtZGF0YS5wYXltZW50UmF0ZXx8YS5mb3JtZGF0YS5ub1BheW1lbnR9LGluaXRDYWxjdWxhdG9yOmZ1bmN0aW9uKCl7dmFyIGQ9JCgiYm9keSIpLmhhc0NsYXNzKCJGUkVOQ0giKT8iIHN1ciBjZSAiK2EuZm9ybWRhdGEuY3VycmVudE1ha2UrIiAiK2EuZm9ybWRhdGEuY3VycmVudE1vZGVsKyIgIithLmZvcm1kYXRhLmN1cnJlbnRZZWFyOiIgb24gdGhpcyAiK2EuZm9ybWRhdGEuY3VycmVudFllYXIrIiAiK2EuZm9ybWRhdGEuY3VycmVudE1ha2UrIiAiK2EuZm9ybWRhdGEuY3VycmVudE1vZGVsOyQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5tdWx0aXN0ZXBQYXltZW50VmVoaWNsZSIsYikudGV4dChkKTtpZigiTkVXIj09YS5jdXJyZW50RGVwdHx8Ik5FV0lOViI9PWEuY3VycmVudERlcHQpeyQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtX2Vycm9yIiwKYikuaHRtbCgiIik7YS5jYWxjdWxhdG9yRnVuY3Rpb25zPW5ldyBjYWxjdWxhdG9yRnVuY3Rpb25zKCIjIitiWzBdLmlkKyIgI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0iKTtkPSJORVdJTlYiPT1hLmN1cnJlbnREZXB0O2xldCBlPSJmaW5hbmNpbmciLGY9MCxnPTAsbD0kKCdpbnB1dFtuYW1lPSJBRE1JTl9TSE9XX0xPV0VTVF9QQVlNRU5UX0lOVEVSVkFMIl0nKS52YWwoKTt2YXIgYz0yRTQ7Q29va2llcy5nZXQoInBheW1lbnRDYWxjdWxhdG9yU2VsZWN0ZWRPcHRpb25zIikmJihjPUNvb2tpZXMuZ2V0KCJwYXltZW50Q2FsY3VsYXRvclNlbGVjdGVkT3B0aW9ucyIpLnNwbGl0KCItIiksZT0idW5kZWZpbmVkIiE9Y1swXT9jWzBdOmUsZj1jWzFdLGc9cGFyc2VJbnQoY1s0XSl8fDAsbD1jWzJdLGM9Y1szXSk7YS5jYWxjdWxhdG9yRnVuY3Rpb25zLmluaXQoYS5mb3JtZGF0YS5jdXJyZW50U3R5bGVpZCxlLGcsMCxsLGMsZCxhLmZvcm1kYXRhLmN1cnJlbnRTdG9ja051bWJlcik7JCgiYm9keSIpLm9mZigiY2hhbmdlIiwKIiMiK2JbMF0uaWQrJyAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAucGF5bWVudENhbGN1bGF0b3JQYXltZW50U2VsZWN0IGlucHV0W25hbWU9InNlbGVjdGVkUGF5bWVudCJdLCAjJytiWzBdLmlkKycgI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFNlbGVjdCBpbnB1dFtuYW1lPSJzZWxlY3RlZFBheW1lbnRXaXRoVGF4ZXMiXScpOyQoImJvZHkiKS5vZmYoIm5vUGF5bWVudCIsIiMiK2JbMF0uaWQrIiAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSIpOyQoImJvZHkiKS5vZmYoInBheW1lbnRzUmVhZHkiLCIjIitiWzBdLmlkKyIgI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0iKTskKCJib2R5Iikub24oIm5vUGF5bWVudCIsIiMiK2JbMF0uaWQrIiAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSIsZnVuY3Rpb24oKXthLmZvcm1kYXRhLm5vUGF5bWVudD0hMDthLm5leHQoITApfSk7JCgiYm9keSIpLm9uKCJjaGFuZ2UiLCIjIitiWzBdLmlkKycgI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFNlbGVjdCBpbnB1dFtuYW1lPSJzZWxlY3RlZFBheW1lbnQiXSwgIycrCmJbMF0uaWQrJyAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAucGF5bWVudENhbGN1bGF0b3JQYXltZW50U2VsZWN0IGlucHV0W25hbWU9InNlbGVjdGVkUGF5bWVudFdpdGhUYXhlcyJdJyxmdW5jdGlvbigpe3ZhciBwPSJmaW5hbmNpbmciPT1hLmNhbGN1bGF0b3JGdW5jdGlvbnMucGF5bWVudFR5cGU\/JCgiYm9keSIpLmhhc0NsYXNzKCJGUkVOQ0giKT8iRmluYW5jZW1lbnQiOiJGaW5hbmNpbmciOiJsZWFzaW5nIj09YS5jYWxjdWxhdG9yRnVuY3Rpb25zLnBheW1lbnRUeXBlPyQoImJvZHkiKS5oYXNDbGFzcygiRlJFTkNIIik\/IkxvY2F0aW9uIjoiTGVhc2luZyI6IiI7YS5mb3JtZGF0YS5wYXltZW50VHlwZT1wO2EuZm9ybWRhdGEucGF5bWVudFR5cGVSZWFsPWEuY2FsY3VsYXRvckZ1bmN0aW9ucy5wYXltZW50VHlwZTthLmZvcm1kYXRhLnBheW1lbnRUZXJtPSQodGhpcykudmFsKCk7YS5mb3JtZGF0YS5wYXltZW50UmF0ZVR5cGU9JCh0aGlzKS5hdHRyKCJkYXRhLXJhdGV0eXBlIik7CnA9JCh0aGlzKS5jbG9zZXN0KCIuZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IiKS5maW5kKCcucGF5bWVudENhbGN1bGF0b3JQYXltZW50U2VsZWN0IGlucHV0W25hbWU9InNlbGVjdGVkUGF5bWVudFdpdGhUYXhlcyJdW3ZhbHVlPSInK2EuZm9ybWRhdGEucGF5bWVudFRlcm0rJyJdW2RhdGEtcmF0ZXR5cGU9IicrYS5mb3JtZGF0YS5wYXltZW50UmF0ZVR5cGUrJyJdJyk7dmFyIHI7YS5mb3JtZGF0YS5wYXltZW50UmVzaWR1YWxWYWx1ZT1udWxsIT0ocj1wLmF0dHIoImRhdGEtcmVzaWR1YWwiKSk\/cjokKHRoaXMpLmF0dHIoImRhdGEtcmVzaWR1YWwiKTt2YXIgdDthLmZvcm1kYXRhLnBheW1lbnRWYWx1ZT1udWxsIT0odD1wLmF0dHIoImRhdGEtcmVhbHBheW1lbnQiKSk\/dDokKHRoaXMpLmF0dHIoImRhdGEtcmVhbHBheW1lbnQiKTt2YXIgRTthLmZvcm1kYXRhLmJhc2VwYXltZW50PW51bGwhPShFPXAuYXR0cigiZGF0YS1iYXNlcGF5bWVudCIpKT9FOiQodGhpcykuYXR0cigiZGF0YS1iYXNlcGF5bWVudCIpOwphLmZvcm1kYXRhLnBheW1lbnRUb3RhbEluY2VudGl2ZT1wLmF0dHIoImRhdGEtdG90YWxpbmNlbnRpdmUiKTthLmZvcm1kYXRhLnBheW1lbnRHU1Q9cC5hdHRyKCJkYXRhLWdzdCIpO2EuZm9ybWRhdGEucGF5bWVudEhTVD1wLmF0dHIoImRhdGEtaHN0Iik7YS5mb3JtZGF0YS5wYXltZW50UFNUPXAuYXR0cigiZGF0YS1wc3QiKTthLmZvcm1kYXRhLnZlaGljbGVJbml0aWFsUHJpY2U9cC5hdHRyKCJkYXRhLWluaXRpYWxQcmljZSIpO2EuZm9ybWRhdGEudmVoaWNsZUZpbmFsUHJpY2U9cC5hdHRyKCJkYXRhLWZpbmFsUHJpY2UiKTt2YXIgRjthLmZvcm1kYXRhLnBheW1lbnRGZWVzTGlzdD1udWxsIT0oRj1KU09OLnBhcnNlKGF0b2IocC5hdHRyKCJkYXRhLWZlZXNMaXN0IikpKSk\/RjpbXTtyPTA7Zm9yKHZhciBOIG9mIGEuZm9ybWRhdGEucGF5bWVudEZlZXNMaXN0KXIrPU4uYW1vdW50fHwwO2EuZm9ybWRhdGEucGF5bWVudFRvdGFsRmVlPXI7dmFyIEc7YS5mb3JtZGF0YS5wYXltZW50SW5jZW50aXZlc0xpc3Q9Cm51bGwhPShHPUpTT04ucGFyc2UoYXRvYihwLmF0dHIoImRhdGEtaW5jZW50aXZlc0xpc3QiKSkpKT9HOltdO2EuZm9ybWRhdGEucGF5bWVudERvd25QYXltZW50PWEuY2FsY3VsYXRvckZ1bmN0aW9ucy5kb3ducGF5bWVudHx8MDthLmZvcm1kYXRhLnBheW1lbnRLbUFsbG93YW5jZT1hLmNhbGN1bGF0b3JGdW5jdGlvbnMua21BbGxvd2FuY2U7YS5mb3JtZGF0YS5wYXltZW50SW50ZXJ2YWw9YS5jYWxjdWxhdG9yRnVuY3Rpb25zLnBheW1lbnRGcmVxdWVuY3k7YS5mb3JtZGF0YS5wYXltZW50UmF0ZT0kKHRoaXMpLmF0dHIoImRhdGEtcmF0ZSIpO2EuZm9ybWRhdGEudHJhZGVJblZhbHVlPWEuY2FsY3VsYXRvckZ1bmN0aW9ucy50cmFkZUluVmFsdWU7cj0ocGFyc2VJbnQoYS5mb3JtZGF0YS5wYXltZW50RG93blBheW1lbnQpfHwwKSsocGFyc2VJbnQoYS5mb3JtZGF0YS50cmFkZUluVmFsdWUpfHwwKTtDb29raWVzLnNldCgicGF5bWVudENhbGN1bGF0b3JTZWxlY3RlZE9wdGlvbnMiLAphLmZvcm1kYXRhLnBheW1lbnRUeXBlUmVhbCsiLSIrYS5mb3JtZGF0YS5wYXltZW50VGVybSsiLSIrYS5mb3JtZGF0YS5wYXltZW50SW50ZXJ2YWwrIi0iK2EuZm9ybWRhdGEucGF5bWVudEttQWxsb3dhbmNlKyItIityLG51bGwsIi8iKTsiTkVXQ0FSUyIhPSgkKCIjdGFyZ2V0UGFnZSIpLnZhbCgpfHwhMSkmJiJVU0VEQ0FSUyIhPSgkKCIjdGFyZ2V0UGFnZSIpLnZhbCgpfHwhMSkmJiJmdW5jdGlvbiI9PXR5cGVvZiBjaGFuZ2VQYWdlUGF5bWVudFZhbHVlJiYoRz0kKHRoaXMpLmF0dHIoImRhdGEtcmVhbHBheW1lbnQiKSxOPSQodGhpcykuYXR0cigiZGF0YS10b3RhbGludGVyZXN0IikscD0kKHRoaXMpLmF0dHIoImRhdGEtbHV4ZVRheEFtb3VudCIpLHI9ci50b0ZpeGVkKDApLHQ9JCh0aGlzKS5hdHRyKCJkYXRhLXJhdGV0eXBlIiksRT0kKHRoaXMpLmF0dHIoImRhdGEtZWZmZWN0aXZlUmF0ZSIpLEY9JCh0aGlzKS5hdHRyKCJkYXRhLXRvdGFsQ29zdCIpLGNoYW5nZVBhZ2VQYXltZW50VmFsdWUoe2N1cnJlbnRQYXltZW50OkcsCmN1cnJlbnRSYXRlOmEuZm9ybWRhdGEucGF5bWVudFJhdGUscGF5bWVudFRlcm06YS5mb3JtZGF0YS5wYXltZW50VGVybSxwYXltZW50VHlwZTphLmZvcm1kYXRhLnBheW1lbnRUeXBlUmVhbCxwYXltZW50SW50ZXJ2YWw6YS5mb3JtZGF0YS5wYXltZW50SW50ZXJ2YWwscGF5bWVudERvd25QYXltZW50OnIsdG90YWxJbnRlcmVzdDpOLGx1eGVUYXhBbW91bnQ6cCxyYXRlVHlwZTp0LGVmZmVjdGl2ZVJhdGU6RSx0b3RhbENvc3Q6Rn0pLCQoIiMiK2JbMF0uaWQrIiAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSIpLnRyaWdnZXIoInBheW1lbnRDaGFuZ2VkIikpO2suY2hlY2tWYWxpZGl0eSgpfSk7JCgiYm9keSIpLm9uKCJwYXltZW50c1JlYWR5IiwiIyIrYlswXS5pZCsiICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIixmdW5jdGlvbigpe2Y9YS5mb3JtZGF0YS5wYXltZW50VGVybT9hLmZvcm1kYXRhLnBheW1lbnRUZXJtOmY\/ZjowOzAhPWYmJjA8JCgiIyIrYlswXS5pZCsnICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRTZWxlY3QgaW5wdXRbbmFtZT0ic2VsZWN0ZWRQYXltZW50Il1bdmFsdWU9IicrCmYrJyJdJykubGVuZ3RoPyQoIiMiK2JbMF0uaWQrJyAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAucGF5bWVudENhbGN1bGF0b3JQYXltZW50U2VsZWN0IGlucHV0W25hbWU9InNlbGVjdGVkUGF5bWVudCJdW3ZhbHVlPSInK2YrJyJdJykuYXR0cigiY2hlY2tlZCIsImNoZWNrZWQiKS50cmlnZ2VyKCJjaGFuZ2UiKTooYS5mb3JtZGF0YS5wYXltZW50VHlwZT0iIixhLmZvcm1kYXRhLnBheW1lbnRUeXBlUmVhbD0iIixhLmZvcm1kYXRhLnBheW1lbnRUZXJtPSIiLGEuZm9ybWRhdGEucGF5bWVudFJhdGVUeXBlPSIiLGEuZm9ybWRhdGEucGF5bWVudFJlc2lkdWFsVmFsdWU9IiIsYS5mb3JtZGF0YS5wYXltZW50VmFsdWU9IiIsYS5mb3JtZGF0YS52ZWhpY2xlSW5pdGlhbFByaWNlPSIiLGEuZm9ybWRhdGEudmVoaWNsZUZpbmFsUHJpY2U9IiIsYS5mb3JtZGF0YS5wYXltZW50RmVlc0xpc3Q9W10sYS5mb3JtZGF0YS5wYXltZW50SW5jZW50aXZlc0xpc3Q9W10sYS5mb3JtZGF0YS5iYXNlcGF5bWVudD0KIiIsYS5mb3JtZGF0YS5wYXltZW50VG90YWxJbmNlbnRpdmU9MCxhLmZvcm1kYXRhLnBheW1lbnRUb3RhbEZlZT0wLGEuZm9ybWRhdGEucGF5bWVudEdTVD0wLGEuZm9ybWRhdGEucGF5bWVudEhTVD0wLGEuZm9ybWRhdGEucGF5bWVudFBTVD0wLGEuZm9ybWRhdGEucGF5bWVudERvd25QYXltZW50PTAsYS5mb3JtZGF0YS5wYXltZW50S21BbGxvd2FuY2U9MCxhLmZvcm1kYXRhLnBheW1lbnRJbnRlcnZhbD0iIixhLmZvcm1kYXRhLnBheW1lbnRSYXRlPSIiLGEuZm9ybWRhdGEudHJhZGVJblZhbHVlPSIiLGsuY2hlY2tWYWxpZGl0eSgpKTskKCIuZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IiLGIpLnNob3coKX0pO3NldFRpbWVvdXQoKCk9PntpZigidW5kZWZpbmVkIiE9dHlwZW9mIEN0YVRyYWNrJiZDdGFUcmFjay5nZXRUcmFja1N0ZXAoIlBheW1lbnRDYWxjdWxhdG9yQWN0aW9uQm94Iikpe2xldCBwPW5ldyBDdXN0b21FdmVudCgidHJhY2tzdGVwLmNvbXBsZXRlIix7ZGV0YWlsOntzdGVwSWQ6IlBheW1lbnRDYWxjdWxhdG9yQWN0aW9uQm94IiwKZm9yY2VVcGRhdGU6ITAsb25Db21wbGV0ZTpyPT57ci5kYXRhc2V0LmNvbXBsX3R4dF9mcj1yLmRhdGFzZXQuaW5pdF9jb21wbF90eHRfZnIucmVwbGFjZSgieyRQQVlNRU5UUkFURX0iLGN0YVBheW1lbnRUZXh0RnJbMF0pLnJlcGxhY2UoInskUEFZTUVOVFlQRX0iLGN0YVBheW1lbnRUZXh0RnJbMV0pO3IuZGF0YXNldC5jb21wbF90eHRfZW49ci5kYXRhc2V0LmluaXRfY29tcGxfdHh0X2VuLnJlcGxhY2UoInskUEFZTUVOVFJBVEV9IixjdGFQYXltZW50VGV4dEVuWzBdKS5yZXBsYWNlKCJ7JFBBWU1FTlRZUEV9IixjdGFQYXltZW50VGV4dEVuWzFdKTtyPXtwYXltZW50Ont9fTtfbG9jYWxTdG9yYWdlR2V0KCJyZXRhaWxfdHJhY2tfZGF0YSIpJiYocj1KU09OLnBhcnNlKF9sb2NhbFN0b3JhZ2VHZXQoInJldGFpbF90cmFja19kYXRhIikpKTtsZXQgdD0iRlJFTkNIIj09PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKT9jdGFQYXltZW50VGV4dEZyOmN0YVBheW1lbnRUZXh0RW47CnIucGF5bWVudD17bGlzdFByaWNlOnRbMl18fCIiLHBheW1lbnQ6dFswXXx8IiIscmF0ZTp0WzFdfHwiIixwYXltZW50VmFsdWU6Y3RhUGF5bWVudFZhbHVlc3x8W119O19sb2NhbFN0b3JhZ2VTZXQoInJldGFpbF90cmFja19kYXRhIixKU09OLnN0cmluZ2lmeShyKSwzMCk7Q29va2llcy5zZXQoImN0YV9kYXRhX3ZhbGlkIiwxLDEsIi8iKX19fSk7JCgiIyIrYlswXS5pZCsiICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIikub24oInBheW1lbnRDaGFuZ2VkIixmdW5jdGlvbigpe2RvY3VtZW50LmRpc3BhdGNoRXZlbnQocCl9KX19LDEwMCl9ZWxzZSAkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9lcnJvciIsYikuaHRtbCgiIikseShhLmZvcm1kYXRhLmN1cnJlbnRDYXJJZCl9LGluaXRFbWFpbDpmdW5jdGlvbigpe2suY2hlY2tWYWxpZGl0eSgpfSxpbml0UGhvbmU6ZnVuY3Rpb24oKXtrLmNoZWNrVmFsaWRpdHkoKX0saW5pdENvbnNlbnQ6ZnVuY3Rpb24oKXtsZXQgZD0iLyIrdysiL211bHRpc3RlcEluc3RhbnRDb25zZW50Lmh0bWwiOwokKCIjZmluYW5jZV9tdWx0aXN0ZXBfY29uc2VudF90ZXh0X2RpdiIsYikuYXR0cigic3JjIixkKTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsZnVuY3Rpb24oYyl7KGMub3JpZ2luPXdpbmRvdy5sb2NhdGlvbi5vcmlnaW4pJiYiY29uc2VudElmcmFtZUJvdHRvbSI9PT1jLmRhdGEmJiQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtICNmaW5hbmNlX211bHRpc3RlcF9mb3JtX25leHRfYnV0dG9uX2NvbnNlbnQiLGIpLmFkZENsYXNzKCJpc1ZhbGlkIil9LCExKX0sdmFsaWRhdGVDb25zZW50OmZ1bmN0aW9uKCl7aWYoJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fbmV4dF9idXR0b25fY29uc2VudCIsYikuaGFzQ2xhc3MoImlzVmFsaWQiKSlyZXR1cm4gYS5mb3JtZGF0YS5jcmVkaXRCdXJlYXVDcmVkaXQ9JCgiI3dvcmtpbmdXaGlsZUluU2Nob29sX3llcyIsYikuYXR0cigiZGF0YS10cmFuc2xhdGVkVmFsdWUiKSwhMDthLmZvcm1kYXRhLmNyZWRpdEJ1cmVhdUNyZWRpdD0KJCgiI3dvcmtpbmdXaGlsZUluU2Nob29sX25vIixiKS5hdHRyKCJkYXRhLXRyYW5zbGF0ZWRWYWx1ZSIpO3JldHVybiExfSx2YWxpZGF0ZUNoZWNrZWRDcmVkaXRCdXJlYXU6ZnVuY3Rpb24oZCl7aWYoJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0iLGIpLmZpbmQoJ2lucHV0W25hbWU9ImNyZWRpdEJ1cmVhdUNvbnNlbnQiXScpLmlzKCI6Y2hlY2tlZCIpKXJldHVybiBhLmZvcm1kYXRhLmNyZWRpdEJ1cmVhdUNyZWRpdD0kKCIjd29ya2luZ1doaWxlSW5TY2hvb2xfeWVzIixiKS5hdHRyKCJkYXRhLXRyYW5zbGF0ZWRWYWx1ZSIpLCEwO2EuZm9ybWRhdGEuY3JlZGl0QnVyZWF1Q3JlZGl0PSQoIiN3b3JraW5nV2hpbGVJblNjaG9vbF9ubyIsYikuYXR0cigiZGF0YS10cmFuc2xhdGVkVmFsdWUiKTtyZXR1cm4hMX0sdmFsaWRhdGVNb3JlVGhhblplcm86ZnVuY3Rpb24oZCl7cmV0dXJuIDA8ZH0sc2VuZEVtYWlsOmZ1bmN0aW9uKCl7dmFyIGQ9JChiKS5maW5kKCIuZW1haWxTdWJqZWN0IiksCmM9JChiKS5maW5kKCIuZW1haWxCb2R5Iik7ZD1kLnRleHQoKT9kLnRleHQoKToiIjtjPWMuaHRtbCgpP2MuaHRtbCgpOiIiO2lmKGQmJmMpe3ZhciBlPSQoJ1t2YWx1ZT0iJythLmZvcm1kYXRhLmVtcGxveW1lbnRTdGF0dXMrJyInKS5hdHRyKCJkYXRhLXRyYW5zbGF0ZWRWYWx1ZSIpOyIiIT1hLmZvcm1kYXRhLmVtcGxveW1lbnRBZGRlZEluZm8mJihlKz0iICgiK2EuZm9ybWRhdGEuZW1wbG95bWVudEFkZGVkSW5mbysiKSIpO2M9Yy5yZXBsYWNlKCJ7JEJPRFlUWVBFfSIsYS5mb3JtZGF0YS52ZWhpY2xlVHlwZT8kKCdbdmFsdWU9IicrYS5mb3JtZGF0YS52ZWhpY2xlVHlwZSsnIicpLmF0dHIoImRhdGEtdHJhbnNsYXRlZFZhbHVlIik6InJlbW92ZWVtcHR5Iik7Yz1jLnJlcGxhY2UoInskVElUTEV9IixhLmZvcm1kYXRhLnRpdGxlP2EuZm9ybWRhdGEudGl0bGU6InJlbW92ZWVtcHR5Iik7Yz1jLnJlcGxhY2UoInskRklSU1ROQU1FfSIsYS5mb3JtZGF0YS5maXJzdE5hbWUpO2M9Yy5yZXBsYWNlKCJ7JExBU1ROQU1FfSIsCmEuZm9ybWRhdGEubGFzdE5hbWUpO2M9Yy5yZXBsYWNlKCJ7JEVNQUlMfSIsYS5mb3JtZGF0YS5lbWFpbEFkZHJlc3MpO2M9Yy5yZXBsYWNlKCJ7JFBIT05FTlVNQkVSfSIsYS5mb3JtZGF0YS5waG9uZU51bWJlcik7Yz1jLnJlcGxhY2UoInskQklSVEhEQVl9IixhLmZvcm1kYXRhLmJpcnRoZGF0ZURheSsiLyIrYS5mb3JtZGF0YS5iaXJ0aGRhdGVNb250aCsiLyIrYS5mb3JtZGF0YS5iaXJ0aGRhdGVZZWFyKTtjPWMucmVwbGFjZSgieyRCVURHRVR9IixhLmZvcm1kYXRhLmJ1ZGdldD8kKCdbdmFsdWU9IicrYS5mb3JtZGF0YS5idWRnZXQrJyInKS5hdHRyKCJkYXRhLXRyYW5zbGF0ZWRWYWx1ZSIpOiJyZW1vdmVlbXB0eSIpO2M9Yy5yZXBsYWNlKCJ7JENVUlJFTlRMWURSSVZJTkd9IixhLmZvcm1kYXRhLmN1cnJlbnRseURyaXZpbmc\/JCgnW3ZhbHVlPSInK2EuZm9ybWRhdGEuY3VycmVudGx5RHJpdmluZysnIicpLmF0dHIoImRhdGEtdHJhbnNsYXRlZFZhbHVlIik6InJlbW92ZWVtcHR5Iik7CmM9Yy5yZXBsYWNlKCJ7JENVUlJFTlRFU1RJTUFURURDUkVESVRSQVRJTkd9IixhLmZvcm1kYXRhLmNyZWRpdFJhdGluZz8kKCdbdmFsdWU9IicrYS5mb3JtZGF0YS5jcmVkaXRSYXRpbmcrJyInKS5hdHRyKCJkYXRhLXRyYW5zbGF0ZWRWYWx1ZSIpOiJyZW1vdmVlbXB0eSIpO2M9Yy5yZXBsYWNlKCJ7JElOVEVSRVNURURET1dOT1BUSU9OfSIsYS5mb3JtZGF0YS5kb3duT3B0aW9ucz8kKCdbdmFsdWU9IicrYS5mb3JtZGF0YS5kb3duT3B0aW9ucysnIicpLmF0dHIoImRhdGEtdHJhbnNsYXRlZFZhbHVlIik6InJlbW92ZWVtcHR5Iik7Yz1jLnJlcGxhY2UoInskQ1VSUkVOVEFERFJFU1N9IixhLmZvcm1kYXRhLmFkZHJlc3MpO2M9Yy5yZXBsYWNlKCJ7JENVUlJFTlRSRVNJREVOQ0VUWVBFfSIsJCgnW3ZhbHVlPSInK2EuZm9ybWRhdGEucmVudE9yT3duKyciJykuYXR0cigiZGF0YS10cmFuc2xhdGVkVmFsdWUiKSk7Yz1jLnJlcGxhY2UoInskQ1VSUkVOVE9DQ1VQQVRJT05MRU5HVEh9IiwKYS5mb3JtZGF0YS5hZGRyZXNzX3llYXJzKyIgIiskKCIjRklOQU5DRV9GT1JNX0FERFJFU1NfVElNRVNfWUVBUlMiKS52YWwoKSsiICIrYS5mb3JtZGF0YS5hZGRyZXNzX21vbnRocysiICIrJCgiI0ZJTkFOQ0VfRk9STV9BRERSRVNTX1RJTUVTX01PTlRIUyIpLnZhbCgpKTtjPWMucmVwbGFjZSgieyRDVVJSRU5UTU9OVEhMWVJFTlR9IiwiJCIrYS5mb3JtZGF0YS5tb250aGx5UGF5bWVudCk7Yz1jLnJlcGxhY2UoInskQ1VSUkVOVE9DQ1VQQVRJT059IixlKTtjPWMucmVwbGFjZSgieyRXT1JLSU5HV0hJTEVJTlNDSE9PTH0iLCIiIT1hLmZvcm1kYXRhLndvcmtpbmdXaGlsZUluU2Nob29sPyQoJ1t2YWx1ZT0iJythLmZvcm1kYXRhLndvcmtpbmdXaGlsZUluU2Nob29sKyciJykuYXR0cigiZGF0YS10cmFuc2xhdGVkVmFsdWUiKToicmVtb3ZlZW1wdHkiKTtjPWMucmVwbGFjZSgieyRDVVJSRU5USU5DT01FU09VUkNFfSIsIiIhPWEuZm9ybWRhdGEub3RoZXJFbXBsb3ltZW50U3RhdHVzPwokKCdbdmFsdWU9IicrYS5mb3JtZGF0YS5vdGhlckVtcGxveW1lbnRTdGF0dXMrJyInKS5hdHRyKCJkYXRhLXRyYW5zbGF0ZWRWYWx1ZSIpOiJyZW1vdmVlbXB0eSIpO2M9Yy5yZXBsYWNlKCJ7JENVUlJFTlRNT05UTFlJTkNPTUV9IiwiJCIrYS5mb3JtZGF0YS5tb250aGx5SW5jb21lKTtjPWMucmVwbGFjZSgieyRDVVJSRU5UTU9OVEhMWUlOQ09NRUxFTkdUSH0iLGEuZm9ybWRhdGEubW9udGhseUluY29tZV95ZWFycysiICIrJCgiI0ZJTkFOQ0VfRk9STV9NT05USExZX0lOQ09NRV9USU1FU19ZRUFSUyIpLnZhbCgpKyIgIithLmZvcm1kYXRhLm1vbnRobHlJbmNvbWVfbW9udGhzKyIgIiskKCIjRklOQU5DRV9GT1JNX01PTlRITFlfSU5DT01FX1RJTUVTX01PTlRIUyIpLnZhbCgpKTsiIiE9YS5mb3JtZGF0YS5hZGRyZXNzMj8oYz1jLnJlcGxhY2UoInskUFJFVklPVVNBRERSRVNTfSIsYS5mb3JtZGF0YS5hZGRyZXNzMiksYz1jLnJlcGxhY2UoInskUFJFVklPVVNPQ0NVUEFUSU9OTEVOR1RIfSIsCmEuZm9ybWRhdGEuYWRkcmVzczJfeWVhcnMrIiAiKyQoIiNGSU5BTkNFX0ZPUk1fQUREUkVTU19USU1FU19ZRUFSUyIpLnZhbCgpKyIgIithLmZvcm1kYXRhLmFkZHJlc3MyX21vbnRocysiICIrJCgiI0ZJTkFOQ0VfRk9STV9BRERSRVNTX1RJTUVTX01PTlRIUyIpLnZhbCgpKSxjPWMucmVwbGFjZSgiIyNQUkVWSU9VU0FERFJFU1NJTkZPU1RBUlQjIyIsIiIpLGM9Yy5yZXBsYWNlKCIjI1BSRVZJT1VTQUREUkVTU0lORk9FTkQjIyIsIiIpKTpjPWMucmVwbGFjZSgvIyNQUkVWSU9VU0FERFJFU1NJTkZPU1RBUlQjI1tcc1xTXSojI1BSRVZJT1VTQUREUkVTU0lORk9FTkQjIy8sIiIpO2M9Yy5yZXBsYWNlKCJ7JENVUlJFTlRNQUtFfSIsIiIhPWEuZm9ybWRhdGEuY3VycmVudE1ha2U\/YS5mb3JtZGF0YS5jdXJyZW50TWFrZToicmVtb3ZlZW1wdHkiKTtjPWMucmVwbGFjZSgieyRDVVJSRU5UTU9ERUx9IiwiIiE9YS5mb3JtZGF0YS5jdXJyZW50TW9kZWw\/YS5mb3JtZGF0YS5jdXJyZW50TW9kZWw6CiJyZW1vdmVlbXB0eSIpO2M9Yy5yZXBsYWNlKCJ7JENVUlJFTlRZRUFSfSIsIiIhPWEuZm9ybWRhdGEuY3VycmVudFllYXI\/YS5mb3JtZGF0YS5jdXJyZW50WWVhcjoicmVtb3ZlZW1wdHkiKTtjPWMucmVwbGFjZSgieyRDVVJSRU5UU1RPQ0tOVU1CRVJ9IiwiIiE9YS5mb3JtZGF0YS5jdXJyZW50U3RvY2tOdW1iZXI\/YS5mb3JtZGF0YS5jdXJyZW50U3RvY2tOdW1iZXI6InJlbW92ZWVtcHR5Iik7Yz1jLnJlcGxhY2UoInskY3JlZGl0QnVyZWF1Q3JlZGl0fSIsIiIhPWEuZm9ybWRhdGEuY3JlZGl0QnVyZWF1Q3JlZGl0P2EuZm9ybWRhdGEuY3JlZGl0QnVyZWF1Q3JlZGl0OiJOTyIpO2M9Yy5yZXBsYWNlKCJ7JFNJTn0iLCJyZW1vdmVlbXB0eSIpO2M9Yy5yZXBsYWNlKCJ7JEFEREVESU5GT30iLCIiIT1hLmZvcm1kYXRhLmFkZGVkSW5mbz9hLmZvcm1kYXRhLmFkZGVkSW5mbzoicmVtb3ZlZW1wdHkiKTtjPWMucmVwbGFjZSgieyRFTVBMT1lFUn0iLCIiIT1hLmZvcm1kYXRhLmVtcGxveWVyTmFtZT8KYS5mb3JtZGF0YS5lbXBsb3llck5hbWU6InJlbW92ZWVtcHR5Iik7Yz1jLnJlcGxhY2UoInskRU1QTE9ZRVJQSE9ORX0iLCIiIT1hLmZvcm1kYXRhLmVtcGxveWVyUGhvbmU\/YS5mb3JtZGF0YS5lbXBsb3llclBob25lOiJyZW1vdmVlbXB0eSIpO2M9Yy5yZXBsYWNlKCJ7JEVNUExPWUVNRU5UU1RBVFVTVElNRX0iLGEuZm9ybWRhdGEuZW1wbG95bWVudFN0YXR1c1llYXIrIiAiKyQoIiNGSU5BTkNFX0ZPUk1fTU9OVEhMWV9JTkNPTUVfVElNRVNfWUVBUlMiKS52YWwoKSsiICIrYS5mb3JtZGF0YS5lbXBsb3ltZW50U3RhdHVzTW9udGgrIiAiKyQoIiNGSU5BTkNFX0ZPUk1fTU9OVEhMWV9JTkNPTUVfVElNRVNfTU9OVEhTIikudmFsKCkpO2M9Yy5yZXBsYWNlKCJ7JEVNUExPWUVSQUREUkVTU30iLCIiIT1hLmZvcm1kYXRhLmFkZHJlc3NFbXBsb3llcj9hLmZvcm1kYXRhLmFkZHJlc3NFbXBsb3llcjoicmVtb3ZlZW1wdHkiKTtjPWMucmVwbGFjZSgieyRDT05TRU5UQUNDT1VOVE1PTklUT1JJTkd9IiwKIiIhPWEuZm9ybWRhdGEuY29uc2VudEFjY291bnRNb25pdG9yaW5nPzE9PWEuZm9ybWRhdGEuY29uc2VudEFjY291bnRNb25pdG9yaW5nPyJZRVMiOiJOTyI6InJlbW92ZWVtcHR5Iik7Yz1jLnJlcGxhY2UoInskQ09OU0VOVENSRURJVEFTU0VTU01FTlR9IiwiIiE9YS5mb3JtZGF0YS5jb25zZW50Q3JlZGl0QXNzZXNzbWVudD8xPT1hLmZvcm1kYXRhLmNvbnNlbnRDcmVkaXRBc3Nlc3NtZW50PyJZRVMiOiJOTyI6InJlbW92ZWVtcHR5Iik7Yz1jLnJlcGxhY2UoInskQ09OU0VOVFBJUEVEQX0iLCIiIT1hLmZvcm1kYXRhLmNvbnNlbnRQaXBlZGE\/MT09YS5mb3JtZGF0YS5jb25zZW50UGlwZWRhPyJZRVMiOiJOTyI6InJlbW92ZWVtcHR5Iik7Yz1jLnJlcGxhY2UoInskQ09OU0VOVENBU0x9IiwiIiE9YS5mb3JtZGF0YS5jb25zZW50Q2FzbD8xPT1hLmZvcm1kYXRhLmNvbnNlbnRDYXNsPyJZRVMiOiJOTyI6InJlbW92ZWVtcHR5Iik7IiIhPWEuZm9ybWRhdGEuZW1wbG95ZXJOYW1lMj8oZT0KJCgnW3ZhbHVlPSJGSU5BTkNFX0ZPUk1fRU1QTE9ZTUVOVF9TVEFUVVNfRU1QTE9ZRUQiXScpLmF0dHIoImRhdGEtdHJhbnNsYXRlZFZhbHVlIiksIiIhPWEuZm9ybWRhdGEuZW1wbG95bWVudEFkZGVkSW5mbzImJihlKz0iICgiK2EuZm9ybWRhdGEuZW1wbG95bWVudEFkZGVkSW5mbzIrIikiKSxjPWMucmVwbGFjZSgieyRQUkVWSU9VU09DQ1VQQVRJT059IixlKSxjPWMucmVwbGFjZSgieyRQUkVWSU9VU0VNUExPWUVSfSIsIiIhPWEuZm9ybWRhdGEuZW1wbG95ZXJOYW1lMj9hLmZvcm1kYXRhLmVtcGxveWVyTmFtZTI6InJlbW92ZWVtcHR5IiksYz1jLnJlcGxhY2UoInskUFJFVklPVVNFTVBMT1lFUlBIT05FfSIsIiIhPWEuZm9ybWRhdGEuZW1wbG95ZXJQaG9uZTI\/YS5mb3JtZGF0YS5lbXBsb3llclBob25lMjoicmVtb3ZlZW1wdHkiKSxjPWMucmVwbGFjZSgieyRQUkVWSU9VU0VNUExPWUVNRU5UU1RBVFVTVElNRX0iLGEuZm9ybWRhdGEuZW1wbG95bWVudFN0YXR1c1llYXIyKyIgIisKJCgiI0ZJTkFOQ0VfRk9STV9NT05USExZX0lOQ09NRV9USU1FU19ZRUFSUyIpLnZhbCgpKyIgIithLmZvcm1kYXRhLmVtcGxveW1lbnRTdGF0dXNNb250aDIrIiAiKyQoIiNGSU5BTkNFX0ZPUk1fTU9OVEhMWV9JTkNPTUVfVElNRVNfTU9OVEhTIikudmFsKCkpLGM9Yy5yZXBsYWNlKCJ7JFBSRVZJT1VTRU1QTE9ZRVJBRERSRVNTfSIsIiIhPWEuZm9ybWRhdGEuYWRkcmVzc0VtcGxveWVyMj9hLmZvcm1kYXRhLmFkZHJlc3NFbXBsb3llcjI6InJlbW92ZWVtcHR5IiksYz1jLnJlcGxhY2UoIiMjUFJFVklPVVNPQ0NVUEFUSU9OU1RBUlQjIyIsIiIpLGM9Yy5yZXBsYWNlKCIjI1BSRVZJT1VTT0NDVVBBVElPTkVORCMjIiwiIikpOmM9Yy5yZXBsYWNlKC8jI1BSRVZJT1VTT0NDVVBBVElPTlNUQVJUIyNbXHNcU10qIyNQUkVWSU9VU09DQ1VQQVRJT05FTkQjIy8sIiIpO2M9Yy5yZXBsYWNlKCJ7JFBBWU1FTlRUWVBFfSIsIiIhPWEuZm9ybWRhdGEucGF5bWVudFR5cGU\/YS5mb3JtZGF0YS5wYXltZW50VHlwZToKInJlbW92ZWVtcHR5Iik7Yz1jLnJlcGxhY2UoInskUEFZTUVOVFRFUk19IiwiIiE9YS5mb3JtZGF0YS5wYXltZW50VGVybT9hLmZvcm1kYXRhLnBheW1lbnRUZXJtOiJyZW1vdmVlbXB0eSIpO2M9Yy5yZXBsYWNlKCJ7JFBBWU1FTlRET1dOUEFZTUVOVH0iLCIiIT1hLmZvcm1kYXRhLnBheW1lbnREb3duUGF5bWVudD9hLmZvcm1kYXRhLnBheW1lbnREb3duUGF5bWVudDoicmVtb3ZlZW1wdHkiKTtjPWMucmVwbGFjZSgieyRQQVlNRU5USU5URVJWQUx9IiwiIiE9YS5mb3JtZGF0YS5wYXltZW50SW50ZXJ2YWw\/YS5mb3JtZGF0YS5wYXltZW50SW50ZXJ2YWw6InJlbW92ZWVtcHR5Iik7Yz1jLnJlcGxhY2UoInskUEFZTUVOVEtNQUxMT1dBTkNFfSIsIiIhPWEuZm9ybWRhdGEucGF5bWVudEttQWxsb3dhbmNlP2EuZm9ybWRhdGEucGF5bWVudEttQWxsb3dhbmNlOiJyZW1vdmVlbXB0eSIpO2M9Yy5yZXBsYWNlKCJ7JFBBWU1FTlRWQUxVRX0iLCIiIT1hLmZvcm1kYXRhLnBheW1lbnRWYWx1ZT8KYS5mb3JtZGF0YS5wYXltZW50VmFsdWU6InJlbW92ZWVtcHR5Iik7Yz1jLnJlcGxhY2UoInskUEFZTUVOVFJBVEV9IiwiIiE9YS5mb3JtZGF0YS5wYXltZW50UmF0ZT9hLmZvcm1kYXRhLnBheW1lbnRSYXRlOiJyZW1vdmVlbXB0eSIpO2M9Yy5yZXBsYWNlKCJ7JE5PUEFZTUVOVH0iLGEuZm9ybWRhdGEubm9QYXltZW50PyIiOiJyZW1vdmVlbXB0eSIpO2M9Yy5yZXBsYWNlKCJ7JENSRURJVERFQ0lTSU9OfSIsYS5jcmVkaXREZWNpc2lvbkhUTUw\/YS5jcmVkaXREZWNpc2lvbkhUTUw6InJlbW92ZWVtcHR5Iik7IiIhPWEuZm9ybWRhdGEudHJhZGVJblZhbHVlPyhjPWMucmVwbGFjZSgieyRUUkFERU1BS0V9IixhLmZvcm1kYXRhLnRyYWRlSW5NYWtlKSxjPWMucmVwbGFjZSgieyRUUkFERU1PREVMfSIsYS5mb3JtZGF0YS50cmFkZUluTW9kZWwpLGM9Yy5yZXBsYWNlKCJ7JFRSQURFWUVBUn0iLGEuZm9ybWRhdGEudHJhZGVJblRyaW0pLGM9Yy5yZXBsYWNlKCJ7JFRSQURFVFJJTX0iLGEuZm9ybWRhdGEudHJhZGVJblllYXIpLApjPWMucmVwbGFjZSgieyRUUkFERVZBTFVFfSIsYS5mb3JtZGF0YS50cmFkZUluVmFsdWUpLGM9Yy5yZXBsYWNlKCIjI1RSQURFSU5JTkZPU1RBUlQjIyIsIiIpLGM9Yy5yZXBsYWNlKCIjI1RSQURFSU5JTkZPRU5EIyMiLCIiKSk6Yz1jLnJlcGxhY2UoLyMjVFJBREVJTklORk9TVEFSVCMjW1xzXFNdKiMjVFJBREVJTklORk9FTkQjIy8sIiIpO2M9ay5lbWFpbEJvZHlGb3JNdWx0aURlYWxlcihjKTtib2R5TG93ZXI9Yy50b0xvd2VyQ2FzZSgpO2ZvcihlPTA7LTE8Ym9keUxvd2VyLmluZGV4T2YoInJlbW92ZWVtcHR5Iik7KXtwb3M9Ym9keUxvd2VyLmluZGV4T2YoInJlbW92ZWVtcHR5Iik7aWYoLTE9PXBvcylicmVhaztycGxFbmQ9Ym9keUxvd2VyLmluZGV4T2YoIjxicj4iLHBvcyk7cnBsU3RhcnQ9Ym9keUxvd2VyLmxhc3RJbmRleE9mKCI8YnI+Iixwb3MpO2lmKC0xPT1ycGxFbmR8fC0xPT1ycGxTdGFydClicmVhaztycGxTdHJpbmc9Yy5zdWJzdHJpbmcocnBsU3RhcnQscnBsRW5kKTsKYz1jLnJlcGxhY2UocnBsU3RyaW5nLCIiKTtib2R5TG93ZXI9Yy50b0xvd2VyQ2FzZSgpO2UrKztpZig1MDxlKWJyZWFrfWVtYWlsSGFuZGxlci5zdWJqZWN0PWQ7ZW1haWxIYW5kbGVyLmJvZHk9YztrLnNldEVtYWlsSGFuZGxlclNlbmQoKTtlbWFpbEhhbmRsZXIubWFpbElEPSJDcmVkaXRNdWx0aXN0ZXBSZXF1ZXN0IjsiMSI9PXUmJihlbWFpbEhhbmRsZXIubWFpbElEPSJDcmVkaXRNdWx0aXN0ZXBSZXF1ZXN0Mm5kQ2hhbmNlIik7IjEiPT14JiYoZW1haWxIYW5kbGVyLm1haWxJRD0iQ3JlZGl0TXVsdGlzdGVwUmVxdWVzdEluc3RhbnQiKTtlbWFpbEhhbmRsZXIuZGVwYXJ0bWVudD0iRklOQU5DRSI7ZW1haWxIYW5kbGVyLmlzbW9iaWxlc2l0ZT0xPT0kKCIjaXNtb2JpbGUiKT8iWUVTIjoiTk8iO2VtYWlsSGFuZGxlci51c2VyRW1haWw9YS5mb3JtZGF0YS5lbWFpbEFkZHJlc3M7ZW1haWxIYW5kbGVyLnVzZXJGaXJzdE5hbWU9YS5mb3JtZGF0YS5maXJzdE5hbWU7ZW1haWxIYW5kbGVyLnVzZXJMYXN0TmFtZT0KYS5mb3JtZGF0YS5sYXN0TmFtZTtlbWFpbEhhbmRsZXIudXNlclBob25lPWEuZm9ybWRhdGEucGhvbmVOdW1iZXI7ZW1haWxIYW5kbGVyLmNvbnRhY3RBZGRyZXNzPWEuZm9ybWRhdGEuYWRkcmVzcztlbWFpbEhhbmRsZXIuY29udGFjdEJpcnRoPWEuZm9ybWRhdGEuYmlydGhkYXRlRGF5KyIvIithLmZvcm1kYXRhLmJpcnRoZGF0ZU1vbnRoKyIvIithLmZvcm1kYXRhLmJpcnRoZGF0ZVllYXI7ZW1haWxIYW5kbGVyLnNhbGVzRGVwdD1hLmZvcm1kYXRhLnZlaGljbGVTYWxlc0RlcHQ7ZW1haWxIYW5kbGVyLm1ha2U9YS5mb3JtZGF0YS5jdXJyZW50TWFrZTtlbWFpbEhhbmRsZXIubW9kZWw9YS5mb3JtZGF0YS5jdXJyZW50TW9kZWw7ZW1haWxIYW5kbGVyLnllYXI9YS5mb3JtZGF0YS5jdXJyZW50WWVhcjtlbWFpbEhhbmRsZXIuc3RvY2tOdW1iZXI9YS5mb3JtZGF0YS5jdXJyZW50U3RvY2tOdW1iZXI7ZW1haWxIYW5kbGVyLmRlcGFydG1lbnRCeVN0b2NrPSExO2VtYWlsSGFuZGxlci5za2lwR2VvTG9jPQohMDtlbWFpbEhhbmRsZXIucGFydGlhbD0hMTtlbWFpbEhhbmRsZXIuY2FsbGJhY2s9ZnVuY3Rpb24oZil7Zj9rLnNldEZpbmFuY2VGb3JtU3RhdHVzVG9TZW50KCk6Y29uc29sZS5sb2coZil9O2VtYWlsSGFuZGxlci5zZW5kTWFpbCghMSl9fSxzZXRGaW5hbmNlRm9ybVN0YXR1c1RvU2VudDpmdW5jdGlvbigpeyQuYWpheCh7dXJsOiIvIit3KyIvYWpheC9zZXRGaW5hbmNlTXVsdGlzdGVwRGF0YVN0YXR1c1RvU2VudD93c3dpZHRoPTAiLGRhdGFUeXBlOiJKU09OIix0eXBlOiJQT1NUIixkYXRhOnt1c2VySWQ6ay51c2VySWQoKX0sc3VjY2VzczpmdW5jdGlvbihkKXtsZXQgYz1uZXcgQ3VzdG9tRXZlbnQoInRyYWNrc3RlcC5jb21wbGV0ZSIse2RldGFpbDp7c3RlcElkOiJGaW5hbmNlQWN0aW9uQm94In19KTtkb2N1bWVudC5kaXNwYXRjaEV2ZW50KGMpO2lmKCJTVUNDRVNTIj09ZHx8bnVsbD09PWQpYS5zdGVwPTIxLGsudXNlcklkKC0xKSxsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgiZmluYW5jZV9tdWx0aXN0ZXAubGluZWFyX3N0ZXAiKSwKJChkb2N1bWVudC5ib2R5KS50cmlnZ2VyKCJtdWx0aUZvcm1GaW5hbmNlU3VibWl0Iil9fSl9LHJlc2V0Rm9ybTpmdW5jdGlvbigpe2EuZm9ybWRhdGE9e3ZlaGljbGVUeXBlOiIiLGJ1ZGdldDoiIixjdXJyZW50bHlEcml2aW5nOiIiLGVtYWlsQWRkcmVzczoiIixjcmVkaXRSYXRpbmc6IiIsZG93bk9wdGlvbnM6IiIsYmlydGhkYXRlWWVhcjoiIixiaXJ0aGRhdGVNb250aDoiIixiaXJ0aGRhdGVEYXk6IiIsYWRkcmVzczoiIixzcGxpdEFkZHJlc3M6W10sYWRkcmVzc195ZWFyczowLGFkZHJlc3NfbW9udGhzOjAsYWRkcmVzczI6IiIsc3BsaXRBZGRyZXNzMjpbXSxhZGRyZXNzMl95ZWFyczowLGFkZHJlc3MyX21vbnRoczowLGFkZHJlc3NFbXBsb3llcjoiIixzcGxpdEFkZHJlc3NFbXBsb3llcjpbXSxyZW50T3JPd246IiIsbW9udGhseVBheW1lbnQ6MCxlbXBsb3ltZW50U3RhdHVzOiIiLGVtcGxveW1lbnRBZGRlZEluZm86IiIsZW1wbG95ZXJOYW1lOiIiLGVtcGxveWVyUGhvbmU6IiIsCmVtcGxveW1lbnRTdGF0dXNZZWFyOjAsZW1wbG95bWVudFN0YXR1c01vbnRoOjAsZW1wbG95bWVudEFkZGVkSW5mbzI6IiIsZW1wbG95ZXJOYW1lMjoiIixlbXBsb3llclBob25lMjoiIixlbXBsb3ltZW50U3RhdHVzWWVhcjI6MCxlbXBsb3ltZW50U3RhdHVzTW9udGgyOjAsYWRkcmVzc0VtcGxveWVyMjoiIixzcGxpdEFkZHJlc3NFbXBsb3llcjI6W10sd29ya2luZ1doaWxlSW5TY2hvb2w6IiIsb3RoZXJFbXBsb3ltZW50U3RhdHVzOiIiLG1vbnRobHlJbmNvbWU6MCxtb250aGx5SW5jb21lX3llYXJzOjAsbW9udGhseUluY29tZV9tb250aHM6MCx0aXRsZToiIixmaXJzdE5hbWU6IiIsbGFzdE5hbWU6IiIscGhvbmVOdW1iZXI6IiIsY3VycmVudE1ha2U6IiIsY3VycmVudE1vZGVsOiIiLGN1cnJlbnRNb2RlbFRleHQ6IiIsY3VycmVudFllYXI6IiIsY3VycmVudFN0b2NrTnVtYmVyOiIiLGN1cnJlbnRNaWxlYWdlOjEwLGN1cnJlbnRUcmltOiIiLGN1cnJlbnRTdHlsZWlkOiIiLGN1cnJlbnRDYXJJZDoiIiwKcGF5bWVudFR5cGU6IiIscGF5bWVudFR5cGVSZWFsOiIiLHBheW1lbnRUZXJtOiIiLHBheW1lbnRSYXRlVHlwZToiIixwYXltZW50VmFsdWU6IiIsYmFzZXBheW1lbnQ6IiIscGF5bWVudFRvdGFsSW5jZW50aXZlOjAscGF5bWVudFRvdGFsRmVlOjAscGF5bWVudEdTVDowLHBheW1lbnRIU1Q6MCxwYXltZW50UFNUOjAscGF5bWVudERvd25QYXltZW50OjAscGF5bWVudEttQWxsb3dhbmNlOjAscGF5bWVudEludGVydmFsOiIiLHBheW1lbnRSYXRlOiIiLHBheW1lbnRSZXNpZHVhbFZhbHVlOjAsbm9QYXltZW50OiExLG11bHRpX2RlYWxlcl9zZW5kVG86IiIsY3JlZGl0QnVyZWF1Q3JlZGl0OiJOTyIsU0lOOiIiLGFkZGVkSW5mbzoiIix2ZWhpY2xlU2FsZXNEZXB0OiJvdGhlciIsdmVoaWNsZVByaWNlOiIiLHZlaGljbGVUcmFuc21pc3Npb246IiIsdmVoaWNsZVRyaW06IiIsdmVoaWNsZUNvbG9yOiIiLGluaXRpYWxUaXRsZVNob3c6ITAsbXVsdGlGcm9tTWluaTohMSx0cmFkZUluTWFrZToiIiwKdHJhZGVJbk1vZGVsOiIiLHRyYWRlSW5ZZWFyOiIiLHRyYWRlSW5UcmltOiIiLHRyYWRlSW5WYWx1ZToiIn19LGNyZWRpdEFwcFN1bWlzc2lvbjpmdW5jdGlvbigpe3ZhciBkPWEuZm9ybWRhdGEsYz0kKCIjc2l0ZUlEIikudmFsKCl8fCQoIiN0b3BzaXRlaWQiKS52YWwoKTtkLnNpdGVJZD1jO2QuY3VycmVudERlcHQ9YS5jdXJyZW50RGVwdDskKCIubXVsdGlzdGVwSW5zdGFudFNwaW5uZXIiKS5zaG93KCk7YS5mb3JtZGF0YS5jcmVkaXRCdXJlYXVDcmVkaXQ9IllFUyI7YS5zdGVwPTIxOyQuYWpheCh7dXJsOiIvIit3K2AvYWpheC9zdWJtaXRDcmVkaXRBcHBsaWNhdGlvbj93c3dpZHRoPSR7ZW5jb2RlVVJJQ29tcG9uZW50KCIwIil9YCxkYXRhVHlwZToiSlNPTiIsdHlwZToiUE9TVCIsZGF0YTpkLHN1Y2Nlc3M6ZnVuY3Rpb24oZSl7bGV0IGYsZyxsPWUuYXBwbGljYXRpb25JZDtpZihlLmVycm9yKWY9JCgiI0ZJTkFOQ0VfRk9STV9WV0NSRURJVF9WV0VSUk9SX01TR19VU0VSIiwKYikudmFsKCksZz0kKCIjRklOQU5DRV9GT1JNX1ZXQ1JFRElUX0VSUk9SX01TR19MRUFEIixiKS52YWwoKSxhLmNyZWRpdERlY2lzaW9uSFRNTD1nO2Vsc2UgaWYobCl7aWYoZj0kKCIjRklOQU5DRV9GT1JNX1ZXQ1JFRElUX1NVQ0NFU1NfTVNHX1VTRVIiLGIpLnZhbCgpK2wsZz0kKCIjRklOQU5DRV9GT1JNX1ZXQ1JFRElUX1NVQ0NFU1NfTVNHX0xFQUQiLGIpLnZhbCgpKyI8c3Ryb25nPiIrbCsiPC9zdHJvbmc+IixhLmNyZWRpdERlY2lzaW9uSFRNTD1nLGEuY3JlZGl0QXBwbGljYXRpb25JZD1sLGUuYXBwbGljYXRpb25TdGF0dXMmJmUuYXBwbGljYXRpb25TdGF0dXMuc3RhdHVzKXN3aXRjaChlLmFwcGxpY2F0aW9uU3RhdHVzLnN0YXR1cyl7Y2FzZSAiQXBwcm92ZWQiOmYrPSI8YnI+PGJyPiIrJCgiI0ZJTkFOQ0VfRk9STV9WV0NSRURJVF9BUFBST1ZBTF9NU0ciLGIpLnZhbCgpOyQoIiNGSU5BTkNFX0ZPUk1fVldDUkVESVRfQVBQUk9WQUxfTVNHIixiKS52YWwoKTticmVhaztjYXNlICJQZW5kaW5nIjpmKz0KIjxicj48YnI+IiskKCIjRklOQU5DRV9GT1JNX1ZXQ1JFRElUX1BFTkRJTkdfTVNHIixiKS52YWwoKTskKCIjRklOQU5DRV9GT1JNX1ZXQ1JFRElUX1BFTkRJTkdfTVNHIixiKS52YWwoKTticmVhaztkZWZhdWx0OmYrPSI8YnI+PGJyPiIrJCgiI0ZJTkFOQ0VfRk9STV9WV0NSRURJVF9OT0FQUFJPVkFMX01TRyIsYikudmFsKCksJCgiI0ZJTkFOQ0VfRk9STV9WV0NSRURJVF9OT0FQUFJPVkFMX01TRyIsYikudmFsKCl9fWVsc2UgZj0kKCIjRklOQU5DRV9GT1JNX1ZXQ1JFRElUX1ZXRVJST1JfTVNHX1VTRVIiLGIpLnZhbCgpLGc9JCgiI0ZJTkFOQ0VfRk9STV9WV0NSRURJVF9FUlJPUl9NU0dfTEVBRCIsYikudmFsKCksYS5jcmVkaXREZWNpc2lvbkhUTUw9ZzskKGIpLmZpbmQoIi5jb25maXJtYXRpb25UaXRsZSIpLmhpZGUoKTskKGIpLmZpbmQoIi5jb25maXJtYXRpb25UZXh0IikuaGlkZSgpOyQoYikuZmluZCgiLmNyZWRpdERlY2lzaW9uIikuaHRtbChmKTskKGIpLmZpbmQoIi5jcmVkaXREZWNpc2lvbiIpLnNob3coKTsKJCgiLm11bHRpc3RlcEluc3RhbnRTcGlubmVyIikuaGlkZSgpO2suc2VuZEVtYWlsKCl9fSl9LHJvdXRlT25lQ2FsbDpmdW5jdGlvbigpe3ZhciBkPWEuZm9ybWRhdGEsYz0kKCIjc2l0ZUlEIikudmFsKCl8fCQoIiN0b3BzaXRlaWQiKS52YWwoKTtkLnNpdGVJZD1jO2QuY3VycmVudERlcHQ9YS5jdXJyZW50RGVwdDskKCIubXVsdGlzdGVwSW5zdGFudFNwaW5uZXIiKS5zaG93KCk7YS5zdGVwPTIxOyhmdW5jdGlvbihlKXtyZXR1cm4gbmV3IFByb21pc2UoKGYsZyk9PiRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvckZ1bmN0aW9uKGZ1bmN0aW9uKigpe2U9ZSsiP2NiPSIrMjAzODM0NzQ5MypNYXRoLnJhbmRvbSgpO2xldCBsPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO2wuc2V0QXR0cmlidXRlKCJzcmMiLGUpO2wuc2V0QXR0cmlidXRlKCJhc3luYyIsImZhbHNlIik7bGV0IHA9ZG9jdW1lbnQuaGVhZDtwLmluc2VydEJlZm9yZShsLHAuZmlyc3RFbGVtZW50Q2hpbGQpOwpsLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCgpPT57ZigpfSwhMSl9KSl9KSgiL2pzL3JvdXRlMUhhbmRsZXIuanMiKS50aGVuKCgpPT57bGV0IGU9bmV3IHJvdXRlMUV2ZW50SGFuZGxlcighMSk7ZS5vbigiY29ubmVjdGVkIiwoZixnKT0+e2NvbnNvbGUubG9nKCJDb25uZWN0ZWQiKX0pO2Uub24oInJlYWR5IiwoZixnKT0+e2NvbnNvbGUubG9nKCJSZWFkeSIpO2UucmVxdWVzdENyZWRpdENoZWNrKGQpfSk7ZS5vbigiZXJyb3IiLChmLGcpPT57Y29uc29sZS5sb2coIkVycm9yOiAlbyIsZik7ZS5jbG9zZSgpO2suc2V0Q3JlZGl0RGVjaXNpb24oZi5tZXNzYWdlKTskKCIubXVsdGlzdGVwSW5zdGFudFNwaW5uZXIiKS5oaWRlKCk7ay5zZW5kRW1haWwoKX0pO2Uub24oImNyZWRpdENoZWNrQ29tcGxldGUiLChmLGcpPT57Y29uc29sZS5sb2coIkNyZWRpdCBDaGVjayBDb21wbGV0ZTogJW8iLGYpO2UuY2xvc2UoKTtrLnNldENyZWRpdERlY2lzaW9uKGYpOyQoIi5tdWx0aXN0ZXBJbnN0YW50U3Bpbm5lciIpLmhpZGUoKTsKay5zZW5kRW1haWwoKX0pO2Uub24oIndhaXRpbmdPblJvdXRlMSIsKGYsZyk9Pntjb25zb2xlLmxvZygiV2FpdGluZyBvbiBSb3V0ZSAxOiAlbyIsZil9KX0pfSxzZXRDcmVkaXREZWNpc2lvbjpmdW5jdGlvbihkKXt2YXIgYyxlPSIiO2lmKGQuanNvbil7dmFyIGY9ImFwcHJvdmVkIj09ZC5qc29uLnN0YXR1cz8iQXBwcm92ZWQiOiJEZW5pZWQiO3ZhciBnPW51bGwhPShjPWQuanNvbi5pZCk\/YzoiIjt2YXIgbDtjPW51bGwhPShsPWQuanNvbi5sZW5kZXIpP2w6IiI7ZC5qc29uLmVycm9ybXNnJiYiTm8gcGF5bWVudCI9PWQuanNvbi5lcnJvcm1zZyYmKGY9ZC5qc29uLmVycm9ybXNnLGM9Zz0iIik7ZT1kLmpzb24uZXJyb3Jtc2d9ZWxzZSBpZihkLnN0YXRlKXtmPSJEZW5pZWQiO3ZhciBwO2c9bnVsbCE9KHA9ZC5zdGF0ZS5pZCk\/cDoiIjtjPSIiO2QuZXJyb3Jtc2cmJiJObyBwYXltZW50Ij09ZC5lcnJvcm1zZyYmKGY9ZC5lcnJvcm1zZyxjPWc9IiIpO2U9ZC5lcnJvcm1zZz9kLmVycm9ybXNnOgpkLmVycm9yfWVsc2UgZj0iRGVuaWVkIixjPWc9IiI7IkFwcHJvdmVkIiE9Zj8obD0kKCIjRklOQU5DRV9GT1JNX1JPVVRFT05FX05PQVBQUk9WQUxfTVNHIikudmFsKCksIk5vIHBheW1lbnQiPT1mPyhmPSJFTkdMSVNIIj09JCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpP2Y6IlBhcyBkZSBwYWllbWVudCIsbD1sLnJlcGxhY2UoIiRSb3V0ZU9uZUlEIiwiIikucmVwbGFjZSgiJEVycm9yQ29kZSIsZikpOmw9Zz9sLnJlcGxhY2UoIiRSb3V0ZU9uZUlEIixnKS5yZXBsYWNlKCIkRXJyb3JDb2RlIixlKTpsLnJlcGxhY2UoIiRSb3V0ZU9uZUlEIiwiIikucmVwbGFjZSgiJEVycm9yQ29kZSIsZSkpOihsPSQoIiNGSU5BTkNFX0ZPUk1fUk9VVEVPTkVfQVBQUk9WQUxfTVNHIikudmFsKCksbD1sLnJlcGxhY2UoIiRNYWtlIixhLmZvcm1kYXRhLmN1cnJlbnRNYWtlKSxsPWwucmVwbGFjZSgiJE1vZGVsIixhLmZvcm1kYXRhLmN1cnJlbnRNb2RlbFRleHQpLGw9bC5yZXBsYWNlKCIkWWVhciIsCmEuZm9ybWRhdGEuY3VycmVudFllYXIpLGw9bC5yZXBsYWNlKCIkVmVyc2lvbiIsYS5mb3JtZGF0YS5jdXJyZW50VHJpbSksbD1sLnJlcGxhY2UoIiRMZW5kZXIiLGMpLGw9bC5yZXBsYWNlKCIkUmVmZXJlbmNlSUQiLGcpLGY9JCgnaW5wdXRbZGF0YS1mb3J2YXI9Ik9WRVJXUklUVEVSREVBTEVSIl0nKS52YWwoKSYmJCgnaW5wdXRbZGF0YS1mb3J2YXI9Ik9WRVJXUklUVEVSREVBTEVSIl0nKS5sZW5ndGg\/JCgnaW5wdXRbZGF0YS1mb3J2YXI9Ik9WRVJXUklUVEVSREVBTEVSIl0nKS52YWwoKToiIixwPSIiIT0kKCdpbnB1dFtkYXRhLWZvcnZhcj0iREVBTEVSIl0nKS52YWwoKSYmJCgnaW5wdXRbZGF0YS1mb3J2YXI9IkRFQUxFUiJdJykubGVuZ3RoPyQoJ2lucHV0W2RhdGEtZm9ydmFyPSJERUFMRVIiXScpLnZhbCgpOiQoIiNoaWRkZW5EZWFsZXJOYW1lIikudmFsKCksZj1mIT1wJiYiIiE9Zj9mOnAsbD1sLnJlcGxhY2UoIiREZWFsZXJOYW1lIixmKSxsPSIiIT1hLmZvcm1kYXRhLmN1cnJlbnRTdG9ja051bWJlcj8KbC5yZXBsYWNlKCIkU3RvY2siLGEuZm9ybWRhdGEuY3VycmVudFN0b2NrTnVtYmVyKTpsLnJlcGxhY2UoIihTdG9jayAkU3RvY2spIiwiIiksZj0iRU5HTElTSCI9PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKT8iQXBwcm92ZWQiOiJBcHByb3V2w6kiKTtjJiYoZis9IiAiK2MpO2cmJihmKz0iICgiK2crIikiKTtlJiYoZis9IlxuIitlKTtnPVtdO2Qucm91dGUxaWQmJmcucHVzaChkLnJvdXRlMWlkKTtkLnN0YXRlJiZkLnN0YXRlLmlkJiZnLnB1c2goZC5zdGF0ZS5pZCk7aWYoZC5oaXN0b3J5KWZvcihlPTA7ZTxkLmhpc3RvcnkubGVuZ3RoO2UrKylkLmhpc3RvcnlbZV0uaWQmJmcucHVzaChkLmhpc3RvcnlbZV0uaWQpO2VtYWlsSGFuZGxlci5vbkFmdGVyTGVhZENyZWF0ZWQ9e2FjdGlvbjoiUk9VVEVPTkUiLGNvbnZlcnNhdGlvbklkczpnfTthLmNyZWRpdERlY2lzaW9uSFRNTD1mOyQoYikuZmluZCgiLmNvbmZpcm1hdGlvblRpdGxlIikuaGlkZSgpOyQoYikuZmluZCgiLmNvbmZpcm1hdGlvblRleHQiKS5oaWRlKCk7CiQoYikuZmluZCgiLmNyZWRpdERlY2lzaW9uIikudGV4dChsKTskKGIpLmZpbmQoIi5jcmVkaXREZWNpc2lvbiIpLnNob3coKX0sc2V0Q3VycmVudE1ha2VNb2RlbFllYXI6ZnVuY3Rpb24oKXtpZigiMSI9PSQoIiNGSU5BTkNFX01VTFRJU1RFUF9pc0luc3RhbnQiLGIpLnZhbCgpKXthLnN0ZXA9MDthLm5leHRTdGVwPUs7YS5mb3JtZGF0YS5ub1BheW1lbnQ9ITE7YS5jYWxjdWxhdG9yRnVuY3Rpb25zPW51bGw7YS5mb3JtZGF0YS5wYXltZW50VHlwZT0iIjthLmZvcm1kYXRhLnBheW1lbnRUeXBlUmVhbD0iIjthLmZvcm1kYXRhLnBheW1lbnRUZXJtPSIiO2EuZm9ybWRhdGEucGF5bWVudFJhdGVUeXBlPSIiO2EuZm9ybWRhdGEucGF5bWVudFJlc2lkdWFsVmFsdWU9IiI7YS5mb3JtZGF0YS5wYXltZW50VmFsdWU9IiI7YS5mb3JtZGF0YS52ZWhpY2xlSW5pdGlhbFByaWNlPSIiO2EuZm9ybWRhdGEudmVoaWNsZUZpbmFsUHJpY2U9IiI7YS5mb3JtZGF0YS5wYXltZW50RmVlc0xpc3Q9W107CmEuZm9ybWRhdGEucGF5bWVudEluY2VudGl2ZXNMaXN0PVtdO2EuZm9ybWRhdGEuYmFzZXBheW1lbnQ9IiI7YS5mb3JtZGF0YS5wYXltZW50VG90YWxJbmNlbnRpdmU9MDthLmZvcm1kYXRhLnBheW1lbnRUb3RhbEZlZT0wO2EuZm9ybWRhdGEucGF5bWVudEdTVD0wO2EuZm9ybWRhdGEucGF5bWVudEhTVD0wO2EuZm9ybWRhdGEucGF5bWVudFBTVD0wO2EuZm9ybWRhdGEucGF5bWVudERvd25QYXltZW50PTA7YS5mb3JtZGF0YS50cmFkZUluVmFsdWU9IiI7YS5mb3JtZGF0YS5wYXltZW50S21BbGxvd2FuY2U9MDthLmZvcm1kYXRhLnBheW1lbnRJbnRlcnZhbD0iIjthLmZvcm1kYXRhLnBheW1lbnRSYXRlPSIiO3ZhciBkPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmaW5hbmNlTXVsdGlzdGVwTmV3Q2FsY3VsYXRvciIpO2QucmVwbGFjZVdpdGgoZC5jbG9uZU5vZGUoITApKX1hLmZvcm1kYXRhLmN1cnJlbnRNYWtlPSQoIiNwb3B1cG1ha2VNdWx0aXN0ZXBGb3JtIikubGVuZ3RoPyQoIiNwb3B1cG1ha2VNdWx0aXN0ZXBGb3JtIikudmFsKCk6CmEuZm9ybWRhdGEuY3VycmVudE1ha2U7YS5mb3JtZGF0YS5jdXJyZW50TW9kZWw9JCgiI3BvcHVwbW9kZWxNdWx0aXN0ZXBGb3JtIikubGVuZ3RoPyQoIiNwb3B1cG1vZGVsTXVsdGlzdGVwRm9ybSIpLnZhbCgpOmEuZm9ybWRhdGEuY3VycmVudE1vZGVsO2EuZm9ybWRhdGEuY3VycmVudFllYXI9JCgiI3BvcHVweWVhck11bHRpc3RlcEZvcm0iKS5sZW5ndGgmJjAhPSQoIiNwb3B1cHllYXJNdWx0aXN0ZXBGb3JtIikudmFsKCk\/JCgiI3BvcHVweWVhck11bHRpc3RlcEZvcm0iKS52YWwoKTphLmZvcm1kYXRhLmN1cnJlbnRZZWFyO2EuZm9ybWRhdGEuY3VycmVudFN0b2NrTnVtYmVyPSQoIiNwb3B1cHN0b2NrbnVtYmVyTXVsdGlzdGVwRm9ybSIpLmxlbmd0aD8kKCIjcG9wdXBzdG9ja251bWJlck11bHRpc3RlcEZvcm0iKS52YWwoKTphLmZvcm1kYXRhLmN1cnJlbnRTdG9ja051bWJlcjt2YXIgYz0kKCIjdG9wY2FyaWRNdWx0aXN0ZXBGb3JtIikudmFsKCk7MD09cGFyc2VJbnQoYykmJgooYz0iIik7aWYoIiIhPWEuZm9ybWRhdGEuY3VycmVudE1ha2UmJiIiIT1hLmZvcm1kYXRhLmN1cnJlbnRNb2RlbCYmIiIhPWEuZm9ybWRhdGEuY3VycmVudFllYXJ8fCIiIT1jKWlmKGMpJC5nZXRKU09OKCIvanMvanNvbi8iK2MrIi5qc29uIixmdW5jdGlvbihmKXthLmZvcm1kYXRhLnZlaGljbGVTYWxlc0RlcHQ9InVzZWQiO2EuY3VycmVudERlcHQ9IlVTRUQiO2lmKGYuaXNuZXd8fGYuZGVtbyYmIjEiPT0kKCdpbnB1dFtuYW1lPSJGSU5BTkNFX0RFTU9BU05FVyJdJyxiKS52YWwoKSlhLmZvcm1kYXRhLnZlaGljbGVTYWxlc0RlcHQ9Im5ldyIsYS5jdXJyZW50RGVwdD0iTkVXSU5WIixhLmZvcm1kYXRhLmN1cnJlbnRTdHlsZWlkPWYuc3R5bGVJZDswPGYubWFrZWNlcnQmJihhLmZvcm1kYXRhLnZlaGljbGVTYWxlc0RlcHQ9ImNwbyIpO3ZhciBnPShmLnRyYW5zbWlzc2lvbkVOKyIiKS5tYXRjaCgvKGF1dG9tYXRpY3xtYW51YWwpL2kpO2c9Zz9nWzBdOiIiO2EuZm9ybWRhdGEudmVoaWNsZUNvbG9yPQpmLmNvbG9yRU47YS5mb3JtZGF0YS52ZWhpY2xlUHJpY2U9Zi5vcmlnaW5hbFByaWNlO2EuZm9ybWRhdGEudmVoaWNsZVRhbnNtaXNzaW9uPWc7YS5mb3JtZGF0YS52ZWhpY2xlVHJpbT1mLnZlcnNpb247YS5mb3JtZGF0YS5jdXJyZW50VHJpbT1mLnZlcnNpb247YS5mb3JtZGF0YS5jdXJyZW50Q2FySWQ9YzthLmZvcm1kYXRhLmN1cnJlbnRNaWxlYWdlPWYubWlsZXM7c3dpdGNoKGYuYm9keVR5cGVJRCl7Y2FzZSAiU1VWIjphLmZvcm1kYXRhLnZlaGljbGVUeXBlPSJCT0RZVFlQRV9TVVYiO2JyZWFrO2Nhc2UgIlRSVUNLIjphLmZvcm1kYXRhLnZlaGljbGVUeXBlPSJCT0RZVFlQRV9UUlVDSyI7YnJlYWs7Y2FzZSAiTUlOSVZBTiI6YS5mb3JtZGF0YS52ZWhpY2xlVHlwZT0iQk9EWVRZUEVfTUlOSVZBTiI7YnJlYWs7ZGVmYXVsdDphLmZvcm1kYXRhLnZlaGljbGVUeXBlPSJCT0RZVFlQRV9DQVIifTA9PWEuc3RlcCYmYS5uZXh0KCEwKTtrLnBvcHVwTGF1bmNoZWRUcmFjaygpfSk7ZWxzZXthLmZvcm1kYXRhLnZlaGljbGVTYWxlc0RlcHQ9CiJuZXciO2Q9IkVOR0xJU0giPT0kKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCk\/Ii1lbiI6Ii1mciI7dXJsPSIvanNvbi8iK2EuZm9ybWRhdGEuY3VycmVudE1ha2UucmVwbGFjZSgiLSIsIl8iKS5yZXBsYWNlKCIgIiwiXyIpKyItIithLmZvcm1kYXRhLmN1cnJlbnRNb2RlbC5yZXBsYWNlKCItIiwiXyIpLnJlcGxhY2UoIiAiLCJfIikrIi0iK2EuZm9ybWRhdGEuY3VycmVudFllYXIrZCsiLmpzb24iO2lmKCJCTVciPT1hLmZvcm1kYXRhLmN1cnJlbnRNYWtlfHwiTWVyY2VkZXMtQmVueiI9PWEuZm9ybWRhdGEuY3VycmVudE1ha2Upe3ZhciBlPSQoIiN0ZXh0TW9kZWxPdmVycmlkZSIpLmxlbmd0aCYmJCgiI3RleHRNb2RlbE92ZXJyaWRlIikudmFsKCkubGVuZ3RoPyQoIiN0ZXh0TW9kZWxPdmVycmlkZSIpLnZhbCgpOmEuZm9ybWRhdGEuY3VycmVudE1vZGVsO3VybD0iL2pzb24vIithLmZvcm1kYXRhLmN1cnJlbnRNYWtlLnJlcGxhY2UoIi0iLCJfIikucmVwbGFjZSgiICIsIl8iKSsKIi0iK2UucmVwbGFjZSgiLSIsIl8iKS5yZXBsYWNlKCIgIiwiXyIpKyItIithLmZvcm1kYXRhLmN1cnJlbnRZZWFyK2QrIi5qc29uIn0wPD1hLmZvcm1kYXRhLmN1cnJlbnRNb2RlbC5pbmRleE9mKCJoeWJyaWQiKSYmKGU9JCgnaW5wdXRbZGF0YS1mb3J2YXI9Ik1PREVMRk9SRU1BSUwiXScpLmxlbmd0aCYmJCgnaW5wdXRbZGF0YS1mb3J2YXI9Ik1PREVMRk9SRU1BSUwiXScpLnZhbCgpLmxlbmd0aD8kKCdpbnB1dFtkYXRhLWZvcnZhcj0iTU9ERUxGT1JFTUFJTCJdJykudmFsKCk6YS5mb3JtZGF0YS5jdXJyZW50TW9kZWwsdXJsPSIvanNvbi8iK2EuZm9ybWRhdGEuY3VycmVudE1ha2UucmVwbGFjZSgiLSIsIl8iKSsiLSIrZS5yZXBsYWNlKCItIiwiXyIpKyItIithLmZvcm1kYXRhLmN1cnJlbnRZZWFyK2QrIi5qc29uIik7JCgiLnBheW1lbnRDYWxjdWxhdG9yVkRQIikubGVuZ3RoP2EuZm9ybWRhdGEuY3VycmVudFN0eWxlaWQ9JCgiLnBheW1lbnRDYWxjdWxhdG9yVkRQIikuYXR0cigiZGF0YS1zdHlsZWlkIik6CiQoIi5wYXltZW50Q2FsY0J0biIpLmxlbmd0aD9hLmZvcm1kYXRhLmN1cnJlbnRTdHlsZWlkPSQoIi5wYXltZW50Q2FsY0J0biIpLmF0dHIoImRhdGEtc3R5bGVpZCIpOiQoIiNhY3RpdmVTdHlsZUlEIikubGVuZ3RoJiYoYS5mb3JtZGF0YS5jdXJyZW50U3R5bGVpZD0kKCIjYWN0aXZlU3R5bGVJRCIpLnZhbCgpKTskLmdldEpTT04odXJsLGZ1bmN0aW9uKGYpe2lmKGYpe3N3aXRjaChmLnNlY3Rpb24pe2Nhc2UgInN1diI6YS5mb3JtZGF0YS52ZWhpY2xlVHlwZT0iQk9EWVRZUEVfU1VWIjticmVhaztjYXNlICJ0cnVja3MiOmEuZm9ybWRhdGEudmVoaWNsZVR5cGU9IkJPRFlUWVBFX1RSVUNLIjticmVhaztjYXNlICJtaW5pdmFucyI6YS5mb3JtZGF0YS52ZWhpY2xlVHlwZT0iQk9EWVRZUEVfTUlOSVZBTiI7YnJlYWs7ZGVmYXVsdDphLmZvcm1kYXRhLnZlaGljbGVUeXBlPSJCT0RZVFlQRV9DQVIifSIiIT1hLmZvcm1kYXRhLmN1cnJlbnRTdHlsZWlkJiZmLnN0eWxlcy5mb3JFYWNoKGZ1bmN0aW9uKGcpe2cuaWQ9PQphLmZvcm1kYXRhLmN1cnJlbnRTdHlsZWlkJiYoYS5mb3JtZGF0YS5jdXJyZW50VHJpbT0iIiE9Zy50cmltP2cudHJpbTpnLkNGU3R5bGVOYW1lLGEuZm9ybWRhdGEudmVoaWNsZVByaWNlPWcubXNycEFsbEluKX0pfTA9PWEuc3RlcCYmKGEubmV4dCghMCksay5wb3B1cExhdW5jaGVkVHJhY2soKSl9KX1lbHNlIiIhPWEuZm9ybWRhdGEuZW1haWxBZGRyZXNzJiYyMSE9YS5zdGVwJiYiMSIhPSQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtICNPUEVORURGUk9NSU1BR0VQT1BVUCIsYikudmFsKCkmJmEucHVzaFBhcnRpYWwmJmsucHVzaERhdGFUb1NlcnZlcigpLC0xPT1hLm9wdGlvbmFsU3RlcC5pbmRleE9mKGEuc3RlcCkmJmEubmV4dCghMCksay5wb3B1cExhdW5jaGVkVHJhY2soKX0sZ2V0Q2xpZW50U3RvcmFnZURhdGE6ZnVuY3Rpb24oZCl7bGV0IGM9IiI7InVuZGVmaW5lZCIhPT10eXBlb2YgY2xpZW50U3RvcmFnZSYmKGM9Y2xpZW50U3RvcmFnZS5nZXQoZCkpO3JldHVybiBjfSwKc2V0Q2xpZW50U3RvcmFnZURhdGE6ZnVuY3Rpb24oZCxjKXsidW5kZWZpbmVkIiE9PXR5cGVvZiBjbGllbnRTdG9yYWdlJiZjbGllbnRTdG9yYWdlLnNldChkLGMpfSxzZXRDbGllbnRTdG9yYWdlRGF0YVZhbHVlczpmdW5jdGlvbigpeyJ1bmRlZmluZWQiIT09dHlwZW9mIGNsaWVudFN0b3JhZ2UmJigiIiE9PWEuZm9ybWRhdGEuZmlyc3ROYW1lJiZrLnNldENsaWVudFN0b3JhZ2VEYXRhKCJmaXJzdG5hbWUiLGEuZm9ybWRhdGEuZmlyc3ROYW1lKSwiIiE9PWEuZm9ybWRhdGEubGFzdE5hbWUmJmsuc2V0Q2xpZW50U3RvcmFnZURhdGEoImxhc3RuYW1lIixhLmZvcm1kYXRhLmxhc3ROYW1lKSwiIiE9PWEuZm9ybWRhdGEuZW1haWxBZGRyZXNzJiZrLnNldENsaWVudFN0b3JhZ2VEYXRhKCJlbWFpbCIsYS5mb3JtZGF0YS5lbWFpbEFkZHJlc3MpLCIiIT09YS5mb3JtZGF0YS5waG9uZU51bWJlciYmay5zZXRDbGllbnRTdG9yYWdlRGF0YSgicGhvbmUiLGEuZm9ybWRhdGEucGhvbmVOdW1iZXIpKX0sCnNldERlcGFydG1lbnQ6ZnVuY3Rpb24oKXt2YXIgZD1lbWFpbEhhbmRsZXIuZ2V0RGVwKCk7aWYoIk5FVyIhPWR8fCJORVdJTlYiIT1kfHwiVVNFRCIhPWQpZD0iTkVXIjthLmN1cnJlbnREZXB0PWQ7Ik5FVyIhPWR8fCJjYXJkZXRhaWwuaHRtbCIhPSQoIiNQQUdFSUQiKS52YWwoKSYmInVzZWRjYXJzLmh0bWwiIT0kKCIjUEFHRUlEIikudmFsKCl8fChhLmN1cnJlbnREZXB0PSJORVdJTlYiKX0sc2V0VHJhZGVJbjpmdW5jdGlvbigpe2EuZm9ybWRhdGEudHJhZGVJbk1ha2U9JChiKS5maW5kKCdpbnB1dFtuYW1lPSJmaW5hbmNlVHJhZGVJbk1ha2UiXScpLnZhbCgpO2EuZm9ybWRhdGEudHJhZGVJbk1vZGVsPSQoYikuZmluZCgnaW5wdXRbbmFtZT0iZmluYW5jZVRyYWRlSW5Nb2RlbCJdJykudmFsKCk7YS5mb3JtZGF0YS50cmFkZUluWWVhcj0kKGIpLmZpbmQoJ2lucHV0W25hbWU9ImZpbmFuY2VUcmFkZUluWWVhciJdJykudmFsKCk7YS5mb3JtZGF0YS50cmFkZUluVHJpbT0kKGIpLmZpbmQoJ2lucHV0W25hbWU9ImZpbmFuY2VUcmFkZUluVHJpbSJdJykudmFsKCk7CmxldCBkPSQoYikuZmluZCgnaW5wdXRbbmFtZT0iZmluYW5jZVRyYWRlSW5WYWx1ZSJdJykudmFsKCksYz0kKGIpLmZpbmQoJ2lucHV0W25hbWU9ImZpbmFuY2VUcmFkZUluVmFsdWUiXScpLmF0dHIoImRhdGEtY3VycmVudCIpO2MmJiIiPT1hLmZvcm1kYXRhLnRyYWRlSW5WYWx1ZT9hLmZvcm1kYXRhLnRyYWRlSW5WYWx1ZT1jOiIiPT1hLmZvcm1kYXRhLnRyYWRlSW5WYWx1ZSYmKGEuZm9ybWRhdGEudHJhZGVJblZhbHVlPWQpOyIiIT1hLmZvcm1kYXRhLnRyYWRlSW5WYWx1ZSYmKCQoIi5wYXltZW50Q2FsY3VsYXRvclRyYWRlSW5GaW5hbCIsYikudmFsKGEuZm9ybWRhdGEudHJhZGVJblZhbHVlKSwkKCIucGF5bWVudENhbGN1bGF0b3JUcmFkZUluRmluYWwiLGIpLmF0dHIoIm1heCIsZCksJCgiLnBheW1lbnRDYWxjdWxhdG9yVHJhZGVJbkZpbmFsIixiKS5zaG93KCksJCgiLnBheW1lbnRDYWxjdWxhdG9yVHJhZGVJbkluaXRpYWwiLGIpLmhpZGUoKSl9LGdldEN1cnJlbnRCdWRnZXQ6ZnVuY3Rpb24oZCl7cmV0dXJuIjEiPT0KJCgnaW5wdXRbbmFtZT0iRklOQU5DRV9NVUxUSVNURVBfSElHSF9CVURHRVRfQ0hFQ0siXScpLnZhbCgpPzUwMD49ZD8iRklOQU5DRV9GT1JNX0JVREdFVF9VTkRFUl81MDAiOjY3Njw9ZCYmODUwPj1kPyJGSU5BTkNFX0ZPUk1fQlVER0VUX0JFVFdFRU5fNjc2X0FORF84NTAiOjg1MTw9ZCYmMTEwMD49ZD8iRklOQU5DRV9GT1JNX0JVREdFVF9CRVRXRUVOXzg1MV9BTkRfMTEwMCI6MTM1MDxkPyJGSU5BTkNFX0ZPUk1fQlVER0VUX09WRVJfMTM1MSI6NTAxPD1kJiY2NzU+PWQ\/IkZJTkFOQ0VfRk9STV9CVURHRVRfQkVUV0VFTl81MDFfQU5EXzY3NSI6IkZJTkFOQ0VfRk9STV9CVURHRVRfQkVUV0VFTl8xMTAxX0FORF8xMzUwIjoiMSI9PSQoJ2lucHV0W25hbWU9IkZJTkFOQ0VfTVVMVElTVEVQX1ZFUllISUdIX0JVREdFVF9DSEVDSyJdJykudmFsKCk\/OTAwPj1kPyJGSU5BTkNFX0ZPUk1fQlVER0VUX1VOREVSXzkwMCI6MTE1MTw9ZCYmMTQwMD49ZD8iRklOQU5DRV9GT1JNX0JVREdFVF9CRVRXRUVOXzExNTFfQU5EXzE0MDAiOgoxNDAxPD1kJiYxNjUwPj1kPyJGSU5BTkNFX0ZPUk1fQlVER0VUX0JFVFdFRU5fMTQwMV9BTkRfMTY1MCI6MTkwMDxkPyJGSU5BTkNFX0ZPUk1fQlVER0VUX09WRVJfMTkwMSI6OTAxPD1kJiYxMTUwPj1kPyJGSU5BTkNFX0ZPUk1fQlVER0VUX0JFVFdFRU5fOTAxX0FORF8xMTUwIjoiRklOQU5DRV9GT1JNX0JVREdFVF9CRVRXRUVOXzE2NTFfQU5EXzE5MDAiOjM1MD49ZD8iRklOQU5DRV9GT1JNX0JVREdFVF9VTkRFUl8zNTAiOjYwMTw9ZCYmNzUwPj1kPyJGSU5BTkNFX0ZPUk1fQlVER0VUX0JFVFdFRU5fNjAxX0FORF83NTAiOjc1MTw9ZCYmOTAwPj1kPyJGSU5BTkNFX0ZPUk1fQlVER0VUX0JFVFdFRU5fNzUxX0FORF85MDAiOjkwMDxkPyJGSU5BTkNFX0ZPUk1fQlVER0VUX09WRVJfOTAxIjozNTE8PWQmJjQ3NT49ZD8iRklOQU5DRV9GT1JNX0JVREdFVF9CRVRXRUVOXzM1MV9BTkRfNDc1IjoiRklOQU5DRV9GT1JNX0JVREdFVF9CRVRXRUVOXzQ3Nl9BTkRfNjAwIn0sc2V0RW1haWxIYW5kbGVyU2VuZDpmdW5jdGlvbigpe2lmKDA9PQphLmZvcm1kYXRhLm11bHRpRnJvbU1pbml8fCJmYWxzZSI9PWEuZm9ybWRhdGEubXVsdGlGcm9tTWluaSllbWFpbEhhbmRsZXIuc2VuZFRvPSQoIiNGSU5BTkNFX0ZPUk1fU0VORFRPX0VNQUlMIixiKS52YWwoKSxlbWFpbEhhbmRsZXIuc2VuZFRvQURGRm9ybWF0PSQoIiNGSU5BTkNFX0ZPUk1fU0VORFRPQURGX0VNQUlMIixiKS52YWwoKSxlbWFpbEhhbmRsZXIuZGVhbGVyTmFtZT0iIiE9JCgiI0ZJTkFOQ0VfRk9STV9ERUFMRVJOQU1FIixiKS52YWwoKT8kKCIjRklOQU5DRV9GT1JNX0RFQUxFUk5BTUUiLGIpLnZhbCgpOmVtYWlsSGFuZGxlci5kZWFsZXJOYW1lO2VtYWlsSGFuZGxlci52ZWhpY2xlVHlwZT1hLmZvcm1kYXRhLnZlaGljbGVUeXBlO2VtYWlsSGFuZGxlci5jYXJpZD1hLmZvcm1kYXRhLmN1cnJlbnRDYXJJZDtpZigtMT09PVstMSwiLTEiLCIiXS5pbmRleE9mKGEuZm9ybWRhdGEubXVsdGlfZGVhbGVyX3NlbmRUbykpe3ZhciBkPSQoIiNtdWx0aXN0ZXAtbXVsdGlhZGRyZXNzIiwKYikuZmluZCgic2VsZWN0IikuZmluZCgiOnNlbGVjdGVkIik7ZW1haWxIYW5kbGVyLnNlbmRUbz1kLmRhdGEoImVtYWlsZmluYW5jZSIpfHxkLmRhdGEoImVtYWlsIik7ZW1haWxIYW5kbGVyLnNlbGVjdGVkU2VuZFRvPWQuZGF0YSgiZW1haWxmaW5hbmNlIil8fGQuZGF0YSgiZW1haWwiKTtlbWFpbEhhbmRsZXIuc2VuZFRvQURGRm9ybWF0PWQuZGF0YSgiZW1haWxhZGZmaW5hbmNlIil8fGQuZGF0YSgiZW1haWxhZGYiKTtlbWFpbEhhbmRsZXIuc2VsZWN0ZWRTZW5kVG9BREZGb3JtYXQ9ZC5kYXRhKCJlbWFpbGFkZmZpbmFuY2UiKXx8ZC5kYXRhKCJlbWFpbGFkZiIpO2VtYWlsSGFuZGxlci5kZWFsZXJOYW1lPWQudGV4dCgpO2VtYWlsSGFuZGxlci5oYXNTZWxlY3RlZE11bHRpQWRkcmVzcz0hMH19LGluaXRTZWxlY3RNdWx0aURlYWxlcjpmdW5jdGlvbigpe3ZhciBkPSQoIiNtdWx0aS1hZGRyZXNzLXN1Ym1pc3Npb24iKTtpZigwPT09ZC5sZW5ndGgpYS5mb3JtZGF0YS5tdWx0aV9kZWFsZXJfc2VuZFRvPQotMSxhLm5leHQoITApO2Vsc2V7dmFyIGM9JCgiI1BPU1RfTEVBRF9TRU5EX1RPX0RFQUxFUl9UWVBFX1NFTEVDVCIpLmxlbmd0aD8kKCIjUE9TVF9MRUFEX1NFTkRfVE9fREVBTEVSX1RZUEVfU0VMRUNUIikudmFsKCk6ImxvY2F0aW9uIjsoMDwkKCIjdGFyZ2V0UGFnZSIpLmxlbmd0aCYmIkNBUkRFVEFJTFMiPT09JCgiI3RhcmdldFBhZ2UiKS52YWwoKXx8IiIhPSQoIiNwb3B1cHN0b2NrbnVtYmVyTXVsdGlzdGVwRm9ybSIpLnZhbCgpJiYiMSI9PSQoIiNGSU5BTkNFX0ZPUk1fQURNSU5fU0hPV1BIWVNJQ0FMQUREUkVTU19DSEVDSyIpLnZhbCgpKSYmImxvY2F0aW9uIj09Yz8oYS5mb3JtZGF0YS5tdWx0aV9kZWFsZXJfc2VuZFRvPS0xLGEubmV4dCghMCkpOiIiPT09JCgiI211bHRpc3RlcC1tdWx0aWFkZHJlc3MiLGIpLnRleHQoKS50cmltKCkmJigkKCIjbXVsdGlzdGVwLW11bHRpYWRkcmVzcyIsYikuYXBwZW5kKGQuaHRtbCgpKSwiIiE9PWEuZm9ybWRhdGEuY3VycmVudE1ha2UmJgoidW5kZWZpbmVkIiE9PXR5cGVvZiBtdWx0aURlYWxlclNlbGVjdCYmKGQ9JCgiI211bHRpc3RlcC1tdWx0aWFkZHJlc3MiLGIpLmZpbmQoInNlbGVjdCIpLG11bHRpRGVhbGVyU2VsZWN0LmZpbHRlcihkKS5ieU1ha2UoYS5mb3JtZGF0YS5jdXJyZW50TWFrZSkpLCQoIiNtdWx0aXN0ZXAtbXVsdGlhZGRyZXNzIixiKS5maW5kKCJzZWxlY3QiKS5vbigiY2hhbmdlIixmdW5jdGlvbigpeyQodGhpcykuY3NzKCJib3JkZXItY29sb3IiLCIiKTthLmZvcm1kYXRhLm11bHRpX2RlYWxlcl9zZW5kVG89JCh0aGlzKS52YWwoKTtrLmNoZWNrVmFsaWRpdHkoKX0pKX19LG11bHRpRGVhbGVyRm9ybVN0YXR1czpmdW5jdGlvbigpe3JldHVybiAwPT09JCgiI211bHRpLWFkZHJlc3Mtc3VibWlzc2lvbiIpLmxlbmd0aD8hMDoiIiE9PWEuZm9ybWRhdGEubXVsdGlfZGVhbGVyX3NlbmRUb30sZW1haWxCb2R5Rm9yTXVsdGlEZWFsZXI6ZnVuY3Rpb24oZCl7aWYoMD09PSQoIiNtdWx0aS1hZGRyZXNzLXN1Ym1pc3Npb24iKS5sZW5ndGgpcmV0dXJuIGQ7CnZhciBjPSQoIiNtdWx0aXN0ZXAtbXVsdGlhZGRyZXNzIixiKS5maW5kKCJzZWxlY3QgOnNlbGVjdGVkIiksZT0kKCIjcG9zdExlYWRMYWJlbCIpLnZhbCgpOyJ1bmRlZmluZWQiIT09dHlwZW9mIGUmJmMubGVuZ3RoPyhlPWUucmVwbGFjZSgieyRNVUxUSURFQUxFUk5BTUV9IixjLnRleHQoKSkucmVwbGFjZSgieyRQT1NUX0xFQURfRU1BSUxTfSIsIiIpLGQ9ZC5yZXBsYWNlKCJ7JERFQUxFUl9TRU5EVE99IixlKSk6JCgnaW5wdXRbZGF0YS1mb3J2YXI9Ik9WRVJXUklUVEVSREVBTEVSIl0nKS5sZW5ndGgmJiIiIT0kKCdpbnB1dFtkYXRhLWZvcnZhcj0iT1ZFUldSSVRURVJERUFMRVIiXScpLnZhbCgpJiYkKCdpbnB1dFtkYXRhLWZvcnZhcj0iREVBTEVSIl0nKS5sZW5ndGgmJiQoJ2lucHV0W2RhdGEtZm9ydmFyPSJPVkVSV1JJVFRFUkRFQUxFUiJdJykudmFsKCkhPSQoJ2lucHV0W2RhdGEtZm9ydmFyPSJERUFMRVIiXScpLnZhbCgpPyhjPSQoImJvZHkiKS5oYXNDbGFzcygiRlJFTkNIIik\/CiJDb25jZXNzaW9uIG\/vv70gZXN0IHNpdHXvv70gbGUgdu+\/vWhpY3VsZTogIjoiRGVhbGVyIHdoZXJlIHRoZSB2ZWhpY2xlIGlzIGxvY2F0ZWQ6ICIsYys9JCgnaW5wdXRbZGF0YS1mb3J2YXI9Ik9WRVJXUklUVEVSREVBTEVSIl0nKS52YWwoKSxkPWQucmVwbGFjZSgieyRERUFMRVJfU0VORFRPfSIsYykpOmQ9ZC5yZXBsYWNlKC88YnJccz9cLz57XCRERUFMRVJfU0VORFRPfShiclxzP1wvKT8vLCIiKS5yZXBsYWNlKCJ7JERFQUxFUl9TRU5EVE99IiwiIik7cmV0dXJuIGR9LGNoZWNrVmFsaWRpdHk6ZnVuY3Rpb24oKXtpZihhLnZhbGlkYXRpb25SdWxlcy5oYXNPd25Qcm9wZXJ0eSgic3RlcCIrYS5zdGVwKSlmb3IodmFyIGQ9MDtkPGEudmFsaWRhdGlvblJ1bGVzWyJzdGVwIithLnN0ZXBdLmxlbmd0aDtkKyspaWYoa1thLnZhbGlkYXRpb25SdWxlc1sic3RlcCIrYS5zdGVwXVtkXS5mdW5jXShhLmZvcm1kYXRhW2EudmFsaWRhdGlvblJ1bGVzWyJzdGVwIithLnN0ZXBdW2RdLnZhbHVlXSkpJCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fbmV4dF9idG4gYnV0dG9uI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fbmV4dF9idXR0b24iLApiKS5hZGRDbGFzcygiaXNWYWxpZCIpO2Vsc2V7JCgiI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fbmV4dF9idG4gYnV0dG9uI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fbmV4dF9idXR0b24iLGIpLnJlbW92ZUNsYXNzKCJpc1ZhbGlkIik7YnJlYWt9ZWxzZSAkKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9uZXh0X2J0biBidXR0b24jZmluYW5jZV9tdWx0aXN0ZXBfZm9ybV9uZXh0X2J1dHRvbiIsYikuYWRkQ2xhc3MoImlzVmFsaWQiKX0scG9wdXBMYXVuY2hlZFRyYWNrOmZ1bmN0aW9uKCl7aCgiUG9wdXAgbGF1bmNoZWQiKTshay51c2VySWQoKSYmYS5maXJzdFN0ZXAmJmxvY2FsU3RvcmFnZS5zZXRJdGVtKCJmaW5hbmNlX211bHRpc3RlcC5saW5lYXJfc3RlcCIsMSk7ay5zdGVwVHJpZ2dlcighMSl9LHN0ZXAyVmlld2VkVHJhY2s6ZnVuY3Rpb24oKXtoKCJTdGVwIDIgdmlld2VkIil9LGVtYWlsU3RlcFZpZXdlZFRyYWNrOmZ1bmN0aW9uKCl7aCgiRW1haWwgc3RlcCB2aWV3ZWQiKX0sCnBob25lU3RlcFZpZXdlZFRyYWNrOmZ1bmN0aW9uKCl7aCgiUGhvbmUgc3RlcCB2aWV3ZWQiKX0sZW1haWxQcm92aWRlZFRyYWNrOmZ1bmN0aW9uKCl7aCgiRW1haWwgcHJvdmlkZWQiKX0scGhvbmVQcm92aWRlZFRyYWNrOmZ1bmN0aW9uKCl7aCgiUGhvbmUgcHJvdmlkZWQiKX0sc3RlcFRyaWdnZXI6ZnVuY3Rpb24oZCl7ZD17c3RlcDphLmdldExpbmVhcnN0ZXAoZCksbWFrZTphLmZvcm1kYXRhLmN1cnJlbnRNYWtlLG1vZGVsOmEuZm9ybWRhdGEuY3VycmVudE1vZGVsLHllYXI6YS5mb3JtZGF0YS5jdXJyZW50WWVhcixib2R5VHlwZTphLmZvcm1kYXRhLnZlaGljbGVUeXBlLHNhbGVzRGVwdDphLmZvcm1kYXRhLnZlaGljbGVTYWxlc0RlcHQsdmVoaWNsZUNvbG9yOmEuZm9ybWRhdGEudmVoaWNsZUNvbG9yLHZlaGljbGVQcmljZTphLmZvcm1kYXRhLnZlaGljbGVQcmljZSx2ZWhpY2xlVGFuc21pc3Npb246YS5mb3JtZGF0YS52ZWhpY2xlVGFuc21pc3Npb24sdmVoaWNsZVRyaW06YS5mb3JtZGF0YS52ZWhpY2xlVHJpbX07CiQoIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtIixiKS50cmlnZ2VyKCJmb3JtLnN0ZXAiLGQpO2EuZmlyc3RTdGVwPSExfX07d2luZG93LmFwcFRlc3Q9YTt2YXIgVTskKCIjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSBpbnB1dCwgI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gc2VsZWN0LCAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSB0ZXh0YXJlYSIpLm9uKCJjaGFuZ2UgaW5wdXQiLGZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KFUpO1U9c2V0VGltZW91dChrLmNoZWNrVmFsaWRpdHksNTAwKX0pOyQoJyNmaW5hbmNlX211bHRpc3RlcF9mb3JtIGlucHV0W3R5cGU9Im51bWJlciJdJykub24oImZvY3VzIixmdW5jdGlvbigpeyQodGhpcykudHJpZ2dlcigic2VsZWN0Iil9KTtyZXR1cm57c3RhcnQ6UCxoYXNVc2VyOmsuaGFzVXNlcn19CiQoZnVuY3Rpb24oKXskKGRvY3VtZW50KS5vbigicmV2ZWFsOm9wZW4iLCIjZmluYW5jZU11bHRpc3RlcFBvcHVwQ29udGFpbmVyIixmdW5jdGlvbigpeyQoZG9jdW1lbnQpLnRyaWdnZXIoImNyZWRpdC5tdWx0aXN0ZXBwb3B1cC5zdGFydCIpfSk7JChkb2N1bWVudCkub24oInJldmVhbDpvcGVuIiwiI2ZpbmFuY2VNdWx0aXN0ZXBJbnN0YW50UG9wdXBDb250YWluZXIiLGZ1bmN0aW9uKCl7JChkb2N1bWVudCkudHJpZ2dlcigiY3JlZGl0Lm11bHRpc3RlcHBvcHVwLnN0YXJ0Iil9KX0pOwovKiogL20vanMvY2FsY3VsYXRvckZ1bmN0aW9ucy5qcyAqKi8KdmFyIF9fX2QyY19jYWxjdWxhdG9yRnVuY3Rpb25zanNfY19vbj0iMjAyNi0wMi0yMCAxMTozMDoxOCI7J3VzZSBzdHJpY3QnO2NsYXNzIGNhbGN1bGF0b3JGdW5jdGlvbnN7Y29uc3RydWN0b3IoYSl7dGhpcy5wYXJlbnQ9YTt0aGlzLnBhcmVudE5hbWU9dGhpcy5wYXJlbnQucmVwbGFjZSgiIyIsIiIpO3RoaXMuc2V0VHJpZ2dlcnMoKX1pbml0KGEsZSxiLGYsbSxnLGgscCxuKXt2YXIgcT10aGlzLnBhcmVudDt0aGlzLnN0eWxlaWQ9YTt0aGlzLnBheW1lbnRUeXBlPWU7dGhpcy50cmFkZUluVmFsdWU9JChxKyIgLnBheW1lbnRDYWxjdWxhdG9yVHJhZGVJbkZpbmFsIikudmFsKCk\/cGFyc2VJbnQoJChxKyIgLnBheW1lbnRDYWxjdWxhdG9yVHJhZGVJbkZpbmFsIikudmFsKCkpOjA7dGhpcy5kb3ducGF5bWVudD0wPmItdGhpcy50cmFkZUluVmFsdWU\/MDpiLXRoaXMudHJhZGVJblZhbHVlO3RoaXMub3B0aW9uc0Ftb3VudD1mO3RoaXMucGF5bWVudEZyZXF1ZW5jeT1tO3RoaXMua21BbGxvd2FuY2U9Zzt0aGlzLmlzSW52ZW50b3J5PWg\/aDohMTt0aGlzLnNuPXA\/cDoiIjt0aGlzLnZpbj1uPwpuOiIiO3RoaXMubG9hZFBheW1lbnRzKCEwKX1zZXRJbml0aWFsVmlldyhhKXt2YXIgZT10aGlzLnBhcmVudCxiPXRoaXM7JChlKyIgLnBheW1lbnRDYWxjdWxhdG9yS21BbGxvd2FuY2Ugb3B0aW9uIikucmVtb3ZlKCk7JChlKyIgLnBheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnQiKS52YWwodGhpcy5kb3ducGF5bWVudCk7JChlKyIgLnBheW1lbnRDYWxjdWxhdG9ySW50ZXJ2YWwiKS52YWwoYS5jdXJyZW50UGF5bWVudFswXS5pbnRlcnZhbCk7bGV0IGY9ImxlYXNlIj09YS5jdXJyZW50UGF5bWVudFswXS50eXBlPyJsZWFzaW5nIjoiZmluYW5jaW5nIjskKGUrIiAucGF5bWVudENhbGN1bGF0b3JQYXltZW50VHlwZSBsaSIpLnJlbW92ZUNsYXNzKCJhY3RpdmVQYXltZW50VHlwZSIpOyQoZSsiIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlIGxpW2RhdGEtdHlwZT0nIitmKyInXSIpLmFkZENsYXNzKCJhY3RpdmVQYXltZW50VHlwZSIpOzA9PWEuZmluYW5jZS5sZW5ndGg\/JChlKwoiIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlRmluYW5jZSIpLmhpZGUoKTokKGUrIiAucGF5bWVudENhbGN1bGF0b3JQYXltZW50VHlwZUZpbmFuY2UiKS5zaG93KCk7aWYoMD09YS5sZWFzZS5sZW5ndGgpJChlKyIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGVMZWFzZSIpLmhpZGUoKTtlbHNleyQoZSsiIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlTGVhc2UiKS5zaG93KCk7bGV0IGc9W107YS5sZWFzZS5mb3JFYWNoKGZ1bmN0aW9uKGgpey0xPT0kLmluQXJyYXkoaC5rbV9hbGxvd2FuY2UsZykmJmcucHVzaChoLmttX2FsbG93YW5jZSl9KTtnLmZvckVhY2goZnVuY3Rpb24oaCl7bGV0IHA9Yi5wYXltZW50Q2FsY3VsYXRvckZvcm1hdE51bWJlcihoLnRvRml4ZWQoMCkpOyQoZSsiIC5wYXltZW50Q2FsY3VsYXRvckttQWxsb3dhbmNlIikuYXBwZW5kKG5ldyBPcHRpb24ocCsiIGttIixoKSl9KTt2YXIgbT0yRTQ7YS5jdXJyZW50UGF5bWVudFswXSYmInVuZGVmaW5lZCIhPT0KdHlwZW9mIGEuY3VycmVudFBheW1lbnRbMF0ua21fYWxsb3dhbmNlJiYobT0wPGEuY3VycmVudFBheW1lbnRbMF0ua21fYWxsb3dhbmNlP2EuY3VycmVudFBheW1lbnRbMF0ua21fYWxsb3dhbmNlOjJFNCk7JChlKyIgLnBheW1lbnRDYWxjdWxhdG9yS21BbGxvd2FuY2UiKS52YWwobSl9dGhpcy5rbUFsbG93YW5jZT0kKGUrIiAucGF5bWVudENhbGN1bGF0b3JLbUFsbG93YW5jZSIpLnZhbCgpOyJsZWFzaW5nIj09Zj8kKGUrIiAucGF5bWVudENhbGN1bGF0b3JLbUFsbG93YW5jZUNvbnRhaW5lciIpLnNob3coKTokKGUrIiAucGF5bWVudENhbGN1bGF0b3JLbUFsbG93YW5jZUNvbnRhaW5lciIpLmhpZGUoKTskKCJib2R5Iikub24oImNsaWNrIHRhcCIsZSsiIC5maW5hbmNpbmctb3B0aW9uLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXIgKiIsZnVuY3Rpb24oKXskKHRoaXMpLmZpbmQoJ2lucHV0W25hbWU9InNlbGVjdGVkUGF5bWVudCJdJykucHJvcCgiY2hlY2tlZCIsImNoZWNrZWQiKS50cmlnZ2VyKCJjaGFuZ2UiKX0pOwokKCJib2R5Iikub24oImNoYW5nZSIsZSsnIGlucHV0W25hbWU9InNlbGVjdGVkUGF5bWVudCJdJyxmdW5jdGlvbigpe3ZhciBnPSQodGhpcykudmFsKCksaD0kKHRoaXMpLmF0dHIoImRhdGEtcmF0ZXR5cGUiKTskKGUrIiAuZmluYW5jaW5nLW9wdGlvbiIpLnJlbW92ZUNsYXNzKCJzZWxlY3RlZCIpOyQoJ2lucHV0W25hbWU9InNlbGVjdGVkUGF5bWVudFdpdGhUYXhlcyJdW3ZhbHVlPSInK2crJyJdW2RhdGEtcmF0ZXR5cGU9IicraCsnIl0nKS5jbG9zZXN0KCIuZmluYW5jaW5nLW9wdGlvbiIpLmFkZENsYXNzKCJzZWxlY3RlZCIpOyQoJ2lucHV0W25hbWU9InNlbGVjdGVkUGF5bWVudFdpdGhUYXhlcyJdW3ZhbHVlPSInK2crJyJdW2RhdGEtcmF0ZXR5cGU9IicraCsnIl0nKS5wcm9wKCJjaGVja2VkIiwhMCk7JCh0aGlzKS5jbG9zZXN0KCIuZmluYW5jaW5nLW9wdGlvbiIpLmFkZENsYXNzKCJzZWxlY3RlZCIpfSk7JCgiYm9keSIpLm9uKCJjaGFuZ2UiLGUrJyBpbnB1dFtuYW1lPSJzZWxlY3RlZFBheW1lbnRXaXRoVGF4ZXMiXScsCmZ1bmN0aW9uKCl7dmFyIGc9JCh0aGlzKS52YWwoKSxoPSQodGhpcykuYXR0cigiZGF0YS1yYXRldHlwZSIpOyQoZSsiIC5maW5hbmNpbmctb3B0aW9uIikucmVtb3ZlQ2xhc3MoInNlbGVjdGVkIik7JCgnaW5wdXRbbmFtZT0ic2VsZWN0ZWRQYXltZW50Il1bdmFsdWU9IicrZysnIl1bZGF0YS1yYXRldHlwZT0iJytoKyciXScpLmNsb3Nlc3QoIi5maW5hbmNpbmctb3B0aW9uIikuYWRkQ2xhc3MoInNlbGVjdGVkIik7JCgnaW5wdXRbbmFtZT0ic2VsZWN0ZWRQYXltZW50Il1bdmFsdWU9IicrZysnIl1bZGF0YS1yYXRldHlwZT0iJytoKyciXScpLnByb3AoImNoZWNrZWQiLCEwKTskKHRoaXMpLmNsb3Nlc3QoIi5maW5hbmNpbmctb3B0aW9uIikuYWRkQ2xhc3MoInNlbGVjdGVkIil9KX1zZXRUcmlnZ2Vycygpe3ZhciBhPXRoaXMucGFyZW50LGU9dGhpczskKGErIiAucGF5bWVudENhbGN1bGF0b3JQYXltZW50VHlwZSBsaSIpLm9mZigiY2xpY2siKTskKGErIiAucGF5bWVudENhbGN1bGF0b3JJbmNsdWRlVGF4Q2hlY2siKS5vZmYoImNoYW5nZSIpOwokKGErIiAucGF5bWVudENhbGN1bGF0b3JJbnRlcnZhbCIpLm9mZigiY2hhbmdlIik7JChhKyIgLnBheW1lbnRDYWxjdWxhdG9yS21BbGxvd2FuY2UiKS5vZmYoImNoYW5nZSIpOyQoYSsiIC5wYXltZW50Q2FsY3VsYXRvckRvd25QYXltZW50Iikub2ZmKCJibHVyIik7JChhKyIgLnBheW1lbnRDYWxjdWxhdG9yVHJhZGVJbkZpbmFsIikub2ZmKCJibHVyIik7JChhKyIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGUgbGkiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7JChhKyIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGUgbGkiKS5yZW1vdmVDbGFzcygiYWN0aXZlUGF5bWVudFR5cGUiKTskKHRoaXMpLmFkZENsYXNzKCJhY3RpdmVQYXltZW50VHlwZSIpO2UucGF5bWVudFR5cGU9JCh0aGlzKS5hdHRyKCJkYXRhLXR5cGUiKTsibGVhc2luZyI9PSQodGhpcykuYXR0cigiZGF0YS10eXBlIik\/JChhKyIgLnBheW1lbnRDYWxjdWxhdG9yS21BbGxvd2FuY2VDb250YWluZXIiKS5zaG93KCk6CiQoYSsiIC5wYXltZW50Q2FsY3VsYXRvckttQWxsb3dhbmNlQ29udGFpbmVyIikuaGlkZSgpO2UubG9hZFBheW1lbnRzKCl9KTskKGErIiAucGF5bWVudENhbGN1bGF0b3JJbmNsdWRlVGF4Q2hlY2siKS5vbigiY2hhbmdlIixmdW5jdGlvbigpeyQodGhpcykuaXMoIjpjaGVja2VkIik\/KCQoYSsiIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXIiKS5oaWRlKCksJChhKyIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcldpdGhUYXhlcyIpLnNob3coKSk6KCQoYSsiIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXJXaXRoVGF4ZXMiKS5oaWRlKCksJChhKyIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lciIpLnNob3coKSl9KTskKGErIiAucGF5bWVudENhbGN1bGF0b3JJbmNsdWRlVGF4Q2hlY2siKS50cmlnZ2VyKCJjaGFuZ2UiKTskKGErIiAucGF5bWVudENhbGN1bGF0b3JJbnRlcnZhbCIpLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7ZS5wYXltZW50RnJlcXVlbmN5PQokKHRoaXMpLnZhbCgpO2UubG9hZFBheW1lbnRzKCl9KTskKGErIiAucGF5bWVudENhbGN1bGF0b3JLbUFsbG93YW5jZSIpLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7ZS5rbUFsbG93YW5jZT0kKHRoaXMpLnZhbCgpO2UubG9hZFBheW1lbnRzKCl9KTskKGErIiAucGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudCIpLm9uKCJibHVyIixmdW5jdGlvbigpe2xldCBiPXBhcnNlSW50KCQodGhpcykudmFsKCkpP3BhcnNlSW50KCQodGhpcykudmFsKCkpOjA7ZS5kb3ducGF5bWVudD1iO2UubG9hZFBheW1lbnRzKCl9KTskKGErIiAucGF5bWVudENhbGN1bGF0b3JUcmFkZUluRmluYWwiKS5vbigiYmx1ciIsZnVuY3Rpb24oKXtsZXQgYj1wYXJzZUludCgkKHRoaXMpLmF0dHIoIm1heCIpKXx8MCxmPXBhcnNlSW50KCQodGhpcykudmFsKCkpfHwwO2Y9Zj5iP2I6ZjskKHRoaXMpLnZhbChmKTtlLnRyYWRlSW5WYWx1ZT1mO19sb2NhbFN0b3JhZ2VTZXQoInRyYWRlaW5fY3VycmVudF92YWx1ZSIsCkpTT04uc3RyaW5naWZ5KHt2YWx1ZTpmfSksMSk7ZS5sb2FkUGF5bWVudHMoKX0pfWxvYWRQYXltZW50cyhhKXthPWE\/YTohMTtsZXQgZT0oJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/Ii9lbiI6Ii9mciIpKyIvYWpheC9nZXRQYXltZW50RGF0YUZvclN0eWxlSUQ\/d3N3aWR0aD0wIjt2YXIgYj10aGlzO2IudHJhZGVJblZhbHVlPXBhcnNlSW50KCQoYi5wYXJlbnQrIiAucGF5bWVudENhbGN1bGF0b3JUcmFkZUluRmluYWwiKS52YWwoKT8kKGIucGFyZW50KyIgLnBheW1lbnRDYWxjdWxhdG9yVHJhZGVJbkZpbmFsIikudmFsKCk6MCk7JC5hamF4KHt1cmw6ZSx0eXBlOiJQT1NUIixkYXRhVHlwZToiSlNPTiIsZGF0YTp7c3R5bGVpZDpiLnN0eWxlaWQscGF5bWVudFR5cGU6Yi5wYXltZW50VHlwZSxkb3ducGF5bWVudDpiLmRvd25wYXltZW50K2IudHJhZGVJblZhbHVlLG9wdGlvbnNBbW91bnQ6Yi5vcHRpb25zQW1vdW50LHBheW1lbnRGcmVxdWVuY3k6Yi5wYXltZW50RnJlcXVlbmN5LAprbUFsbG93YW5jZTpiLmttQWxsb3dhbmNlLG9wdGlvbnM6Yi5vcHRpb25zQW1vdW50LGlzSW52ZW50b3J5OmIuaXNJbnZlbnRvcnksc246Yi5zbix2aW46Yi52aW4sZm9yY2VUYXhlczohMH0sc3VjY2VzczpmdW5jdGlvbihmKXtmLmN1cnJlbnRQYXltZW50JiZmLmN1cnJlbnRQYXltZW50Lmxlbmd0aD8oYSYmYi5zZXRJbml0aWFsVmlldyhmKSwidW5kZWZpbmVkIiE9PXR5cGVvZiBjYWxjQ3VyUGF5bWVudCYmKGNhbGNDdXJQYXltZW50PWYpLGIuc2hvd1BheW1lbnRzKGYuY3VycmVudFBheW1lbnQsZi5wYXltZW50RmVlcyxmLm1ha2VpZCxmKSwkKCJib2R5ICIrYi5wYXJlbnQpLnRyaWdnZXIoInBheW1lbnRzUmVhZHkiKSk6JCgiYm9keSAiK2IucGFyZW50KS50cmlnZ2VyKCJub1BheW1lbnQiKX19KX1zaG93UGF5bWVudHMoYSxlLGIsZil7dmFyIG09dGhpczskKG0ucGFyZW50KyIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lciIpLmh0bWwoIiIpOyQobS5wYXJlbnQrCiIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcldpdGhUYXhlcyIpLmh0bWwoIiIpO2xldCBnPSIxIj09JCgiI3BheW1lbnRDYWxjdWxhdG9yUm91bmRQYXltZW50IikudmFsKCk\/MDoyOyIxIj09JCgiI3BheW1lbnRDYWxjdWxhdG9yU3RyaWtlUGF5bWVudCIpLnZhbCgpJiYkKCIjcGF5bWVudENhbGN1bGF0b3JTdHJpa2VQYXltZW50T3B0aW9uIikudmFsKCk7bGV0IGg9W10scD0kKCIjb2VtQ2VydGlmaWNhdGlvbiIpLnZhbCgpfHwwOzU8YS5sZW5ndGg\/YS5mb3JFYWNoKGZ1bmN0aW9uKGspeygwPT1rLnRlcm0lMTJ8fDY0PT1rLnRlcm18fDQwPT1iJiY1MT09ay50ZXJtfHwyMD09YiYmWzI3LDMwLDM5LDQyXS5pbmNsdWRlcyhrLnRlcm0pfHxbMTYsMjFdLmluY2x1ZGVzKGIpfHw0Mj09ay50ZXJtJiYxMDE0PT1wfHxbMzAsNDJdLmluY2x1ZGVzKGsudGVybSkmJls0NzE1NjIsNDcxNTYzLDQ3MTU2NF0uaW5jbHVkZXMocGFyc2VJbnQoc2V0dGluZ3Muc3R5bGVpZCkpfHwKMjc9PWsudGVybSYmMjc9PWJ8fDUyPT1rLnRlcm0mJjM5PT1iKSYmaC5wdXNoKGspfSk6aD1hO3ZhciBuPXt9LHE9ITE7aC5mb3JFYWNoKGZ1bmN0aW9uKGssbCl7T2JqZWN0Lmhhc093bihuLGsudGVybSk\/cT0hMDpuW2sudGVybV09e307bltrLnRlcm1dW2sucmF0ZV90eXBlXT1sfSk7dmFyIEg9W107YVswXSYmImxlYXNlIj09YVswXS50eXBlJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBhWzBdLmttX2FsbG93YW5jZSYmKGE9MDxhWzBdLmttX2FsbG93YW5jZT9hWzBdLmttX2FsbG93YW5jZToyRTQsJChtLnBhcmVudCsiIC5wYXltZW50Q2FsY3VsYXRvckttQWxsb3dhbmNlIikudmFsKGEpLHRoaXMua21BbGxvd2FuY2U9JChtLnBhcmVudCsiIC5wYXltZW50Q2FsY3VsYXRvckttQWxsb3dhbmNlIikudmFsKCkpO2xldCBJPWYudG90YWxJbmNlbnRpdmUsSj1xPyQoIiNMT1dFU1RQQVlNRU5UX0xBQkVMIikudmFsKCk6IiIsSz1xPyQoIiNMT1dFU1RSQVRFX0xBQkVMIikudmFsKCk6IiIsClY9MDskLmVhY2goaCxmdW5jdGlvbihrLGwpe2lmKCFILmluY2x1ZGVzKGwudGVybSkpe0gucHVzaChsLnRlcm0pO3ZhciBkPSJzdGFuZGFyZCI9PWwucmF0ZV90eXBlfHwyPk9iamVjdC5rZXlzKG5bbC50ZXJtXSkubGVuZ3RoP2w6aFtuW2wudGVybV0uc3RhbmRhcmRdLGM9Mj09T2JqZWN0LmtleXMobltsLnRlcm1dKS5sZW5ndGg\/aFtuW2wudGVybV0uc3VidmVudGVkXTohMSx4PTI9PU9iamVjdC5rZXlzKG5bbC50ZXJtXSkubGVuZ3RoP25bbC50ZXJtXS5zdWJ2ZW50ZWQ6ITEsdj1sLnRlcm0seT1sLmRvd25wYXltZW50LnRvRml4ZWQoMCksQj1kLnBheW1lbnQudG9GaXhlZChnKSxXPWQucGF5bWVudC50b0ZpeGVkKGcpO0I9Qi5yZXBsYWNlKC9cLihbMC05XSopLyxmdW5jdGlvbihDLHcpe3JldHVybic8c3VwIGNsYXNzPSJwZCI+Jyt3KyI8L3N1cD4ifSk7bD1kLnBheW1lbnRXaXRoVGF4ZXMudG9GaXhlZChnKTt2YXIgWD1kLnBheW1lbnRXaXRoVGF4ZXMudG9GaXhlZChnKTtsPQpsLnJlcGxhY2UoL1wuKFswLTldKikvLGZ1bmN0aW9uKEMsdyl7cmV0dXJuJzxzdXAgY2xhc3M9InBkIj4nK3crIjwvc3VwPiJ9KTt2YXIgTD1kLnJhdGUsWT0icGF5bWVudCIraztrPSJwYXltZW50IitrKyJ3aXRoVGF4ZXMiO3Y9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/IjxzcGFuPiIrdisiPC9zcGFuPiBtb250aCI6IjxzcGFuPiIrdisiPC9zcGFuPiBtb2lzIjt5PWA8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj4ke3l9PC9zcGFuPmArKCQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyIgZG93biBwYXltZW50IjoiIGNvbXB0YW50Iik7dmFyIE09IiIhPSQoIiNkaXNjbGFpbWVyUHJpY2VUZXh0IikudmFsKCk\/IjxkaXY+IiskKCIjZGlzY2xhaW1lclByaWNlVGV4dCIpLnZhbCgpKyI8L2Rpdj4iOiIrdHgiLHo9ZC5jYWxjdWxhdGVkRWZmZWN0aXZlUmF0ZT9kLmNhbGN1bGF0ZWRFZmZlY3RpdmVSYXRlOjAsRD0iIjswPHBhcnNlRmxvYXQoeiktZC5yYXRlJiYoRCs9Cm0uZm9ybWF0RWZmZWN0aXZlUmF0ZVRleHRDYWxjKHosIiIsJ2NsYXNzPSItZnMxMCInKSk7dmFyIE49ZC50b3RhbE9ibGlnYXRpb25BbW91bnQ\/ZC50b3RhbE9ibGlnYXRpb25BbW91bnQ6MCxPPSdkYXRhLXRvb2x0aXA9IicrZC50b29sdGlwKyciJyxQPSdkYXRhLXRvb2x0aXA9IicrZC50b29sdGlwV2l0aFRheGVzKyciJyxyLFo9bnVsbCE9KHI9ZC5tMmRfZmluYW5jZSk\/cjpJO3I9InNpbmdsZS1jb2x1bW4iO3ZhciBFPSJzbWFsbC1ib3giLHQ9IiIsdT0iIjtpZihjKXtyPSJsZWZ0LXNlY3Rpb24iO0U9IiI7dD1jLnBheW1lbnQudG9GaXhlZChnKTtsZXQgQz1jLnBheW1lbnQudG9GaXhlZChnKTt0PXQucmVwbGFjZSgvXC4oWzAtOV0qKS8sZnVuY3Rpb24oYWEsRil7cmV0dXJuJzxzdXAgY2xhc3M9InBkIj4nK0YrIjwvc3VwPiJ9KTt1PWMucGF5bWVudFdpdGhUYXhlcy50b0ZpeGVkKGcpO2xldCB3PWMucGF5bWVudFdpdGhUYXhlcy50b0ZpeGVkKGcpO3U9dS5yZXBsYWNlKC9cLihbMC05XSopLywKZnVuY3Rpb24oYWEsRil7cmV0dXJuJzxzdXAgY2xhc3M9InBkIj4nK0YrIjwvc3VwPiJ9KTt2YXIgUT1jLnJhdGUudG9GaXhlZCgyKSxiYT0icGF5bWVudCIreDt4PSJwYXltZW50Iit4KyJ3aXRoVGF4ZXMiO2xldCBBPWMuY2FsY3VsYXRlZEVmZmVjdGl2ZVJhdGU\/Yy5jYWxjdWxhdGVkRWZmZWN0aXZlUmF0ZTowLEc9IiI7MDxwYXJzZUZsb2F0KEEpLWMucmF0ZSYmKEcrPW0uZm9ybWF0RWZmZWN0aXZlUmF0ZVRleHRDYWxjKEEsIiIsJ2NsYXNzPSItZnMxMCInKSk7bGV0IFI9Yy50b3RhbE9ibGlnYXRpb25BbW91bnQ\/Yy50b3RhbE9ibGlnYXRpb25BbW91bnQ6MCxTPSdkYXRhLXRvb2x0aXA9IicrYy50b29sdGlwKyciJyxUPSdkYXRhLXRvb2x0aXA9IicrYy50b29sdGlwV2l0aFRheGVzKyciJyxVPWMubTJkX2ZpbmFuY2U7dD0nXHQ8ZGl2IGlkPSInK2JhKyciIGNsYXNzPSJyaWdodC1zZWN0aW9uIHBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXJDb250YWluZXIiICcrUysnPlx0XHQ8ZGl2IGNsYXNzPSJsb3dlc3QtcmF0ZSI+JysKUSsnJSA8aSBjbGFzcz0iZmFzIGZhLWluZm8tY2lyY2xlIGluZm8taWNvbiBwYXltZW50VG9vbHRpcCByaWdodFRvb2x0aXAiICcrUysiPjwvaT4iK0crJzwvZGl2Plx0XHQ8ZGl2IGNsYXNzPSJhY3R1YWwtcGF5bWVudCI+PHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+Jyt0Kyc8L3NwYW4+PC9kaXY+XHRcdDxkaXYgY2xhc3M9ImRldGFpbHNUYXgiPicrTSsnPC9kaXY+XHRcdDxkaXYgY2xhc3M9InJhZGlvLWNvbnRhaW5lciBwYXltZW50Q2FsY3VsYXRvclBheW1lbnRTZWxlY3QiPlx0XHRcdDxpbnB1dFx0XHRcdFx0XHR0eXBlPSJyYWRpbyJcdFx0XHRcdFx0bmFtZT0ic2VsZWN0ZWRQYXltZW50Ilx0XHRcdFx0XHR2YWx1ZT0iJytjLnRlcm0rJyJcdFx0XHRcdFx0ZGF0YS1iYXNlcGF5bWVudD0iJytjLnBheW1lbnQrJyJcdFx0XHRcdFx0ZGF0YS1yZWFscGF5bWVudD0iJytjLnBheW1lbnQrJyJcdFx0XHRcdFx0ZGF0YS1yYXRldHlwZT0iJytjLnJhdGVfdHlwZSsnIlx0XHRcdFx0XHRkYXRhLWRpc3BsYXllZHBheW1lbnQ9IicrCkMrJyJcdFx0XHRcdFx0ZGF0YS1yZXNpZHVhbD0iJytjLnJlc2lkdWFsKyciXHRcdFx0XHRcdGRhdGEtdG90YWxpbnRlcmVzdD0iJytjLnRvdGFsSW50ZXJlc3QrJyJcdFx0XHRcdFx0ZGF0YS1sdXhlVGF4QW1vdW50PSInK2MubHV4ZVRheEFtb3VudCsnIlx0XHRcdFx0XHRkYXRhLWVmZmVjdGl2ZVJhdGU9IicrQSsnIlx0XHRcdFx0XHRkYXRhLXRvdGFsQ29zdD0iJytSKyciXHRcdFx0XHRcdGRhdGEtcmF0ZT0iJytjLnJhdGUrJyIgICAgICAgICAgICAgICAgIGRhdGEtcmVzaWR1YWw9IicrYy5yZXNpZHVhbFZhbHVlKyciICAgICAgICAgICAgICAgICBkYXRhLXRvdGFsaW5jZW50aXZlPSInK1UrJyIgICAgICAgICAgICAgICAgIGRhdGEtaW5pdGlhbFByaWNlPSInK2MuaW5pdGlhbFByaWNlKyciICAgICAgICAgICAgICAgICBkYXRhLWZpbmFsUHJpY2U9IicrYy5maW5hbFByaWNlKyciICAgICAgICAgICAgICAgICBkYXRhLWZlZXNMaXN0PSInK2J0b2EoSlNPTi5zdHJpbmdpZnkoYy5mZWVzTGlzdCkpKwonIiAgICAgICAgICAgICAgICAgZGF0YS1pbmNlbnRpdmVzTGlzdD0iJytidG9hKEpTT04uc3RyaW5naWZ5KGMuaW5jZW50aXZlc0xpc3QpKSsnIiAgICAgICAgICAgICAgICAgZGF0YS1nc3Q9IjAiICAgICAgICAgICAgICAgICBkYXRhLWhzdD0iMCIgICAgICAgICAgICAgICAgIGRhdGEtcHN0PSIwIlx0XHRcdFx0Plx0XHRcdDxsYWJlbCBjbGFzcz0iZmluYW5jZUNhbGMiPicrSysiPC9sYWJlbD5cdFx0PC9kaXY+XHQ8L2Rpdj4iO3U9J1x0PGRpdiBpZD0iJyt4KyciIGNsYXNzPSJyaWdodC1zZWN0aW9uIHBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXJDb250YWluZXIiICcrVCsnPlx0XHQ8ZGl2IGNsYXNzPSJsb3dlc3QtcmF0ZSI+JytRKyclIDxpIGNsYXNzPSJmYXMgZmEtaW5mby1jaXJjbGUgaW5mby1pY29uIHBheW1lbnRUb29sdGlwIHJpZ2h0VG9vbHRpcCIgJytUKyI+PC9pPiIrRysnPC9kaXY+XHRcdDxkaXYgY2xhc3M9ImFjdHVhbC1wYXltZW50Ij48c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj4nKwp1Kyc8L3NwYW4+PC9kaXY+XHRcdDxkaXYgY2xhc3M9InJhZGlvLWNvbnRhaW5lciBwYXltZW50Q2FsY3VsYXRvclBheW1lbnRTZWxlY3QiPlx0XHRcdDxpbnB1dFx0XHRcdFx0XHR0eXBlPSJyYWRpbyJcdFx0XHRcdFx0bmFtZT0ic2VsZWN0ZWRQYXltZW50V2l0aFRheGVzIlx0XHRcdFx0XHR2YWx1ZT0iJytjLnRlcm0rJyJcdFx0XHRcdFx0ZGF0YS1iYXNlcGF5bWVudD0iJytjLnBheW1lbnQrJyJcdFx0XHRcdFx0ZGF0YS1yZWFscGF5bWVudD0iJytjLnBheW1lbnRXaXRoVGF4ZXMrJyJcdFx0XHRcdFx0ZGF0YS1yYXRldHlwZT0iJytjLnJhdGVfdHlwZSsnIlx0XHRcdFx0XHRkYXRhLWRpc3BsYXllZHBheW1lbnQ9IicrdysnIlx0XHRcdFx0XHRkYXRhLXJlc2lkdWFsPSInK2MucmVzaWR1YWxXaXRoVGF4ZXMrJyJcdFx0XHRcdFx0ZGF0YS10b3RhbGludGVyZXN0PSInK2MudG90YWxJbnRlcmVzdFdpdGhUYXhlcysnIlx0XHRcdFx0XHRkYXRhLWx1eGVUYXhBbW91bnQ9IicrYy5sdXhlVGF4QW1vdW50KwonIlx0XHRcdFx0XHRkYXRhLWVmZmVjdGl2ZVJhdGU9IicrQSsnIlx0XHRcdFx0XHRkYXRhLXRvdGFsQ29zdD0iJytSKyciXHRcdFx0XHRcdGRhdGEtcmF0ZT0iJytjLnJhdGUrJyIgICAgICAgICAgICAgICAgIGRhdGEtcmVzaWR1YWw9IicrYy5yZXNpZHVhbFZhbHVlV2l0aFRheGVzKyciICAgICAgICAgICAgICAgICBkYXRhLXRvdGFsaW5jZW50aXZlPSInK1UrJyIgICAgICAgICAgICAgICAgIGRhdGEtaW5pdGlhbFByaWNlPSInK2MuaW5pdGlhbFByaWNlKyciICAgICAgICAgICAgICAgICBkYXRhLWZpbmFsUHJpY2U9IicrYy5maW5hbFByaWNlKyciICAgICAgICAgICAgICAgICBkYXRhLWZlZXNMaXN0PSInK2J0b2EoSlNPTi5zdHJpbmdpZnkoYy5mZWVzTGlzdCkpKyciICAgICAgICAgICAgICAgICBkYXRhLWluY2VudGl2ZXNMaXN0PSInK2J0b2EoSlNPTi5zdHJpbmdpZnkoYy5pbmNlbnRpdmVzTGlzdCkpKyciICAgICAgICAgICAgICAgICBkYXRhLWdzdD0iJytjLmdzdCsnIiAgICAgICAgICAgICAgICAgZGF0YS1oc3Q9IicrCmMuaHN0KyciICAgICAgICAgICAgICAgICBkYXRhLXBzdD0iJytjLnBzdCsnIlx0XHRcdFx0Plx0XHRcdDxsYWJlbCBjbGFzcz0iZmluYW5jZUNhbGMiPicrSysiPC9sYWJlbD5cdFx0PC9kaXY+XHQ8L2Rpdj4ifWM9JzxkaXYgY2xhc3M9ImZpbmFuY2luZy1vcHRpb24gcGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlciAnK0UrJyI+XHQ8ZGl2IGNsYXNzPSJ0ZXJtIj4nK3YrJzwvZGl2Plx0PGRpdiBjbGFzcz0iZG93bi1wYXltZW50Ij4nK3krJzwvZGl2Plx0PGRpdiBjbGFzcz0ic2VwYXJhdG9yUGF5Ij48L2Rpdj5cdDxkaXYgY2xhc3M9ImNvbnRlbnQtY29udGFpbmVyIj5cdFx0PGRpdiBpZD0iJytZKyciIGNsYXNzPSInK3IrJyBwYXltZW50Q2FsY3VsYXRvclBheW1lbnRXcmFwcGVyQ29udGFpbmVyIiAnK08rJz5cdFx0XHQ8ZGl2IGNsYXNzPSJsb3dlc3QtcGF5bWVudCI+PHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+JytCKyc8L3NwYW4+IDxpIGNsYXNzPSJmYXMgZmEtaW5mby1jaXJjbGUgaW5mby1pY29uIHBheW1lbnRUb29sdGlwIGxlZnRUb29sdGlwIiAnKwpPKyc+PC9pPjwvZGl2Plx0XHRcdDxkaXYgY2xhc3M9ImRldGFpbHNUYXgiPicrTSsnPC9kaXY+XHRcdFx0PGRpdiBjbGFzcz0iYWN0dWFsLXJhdGUiPicrTCsiJSAiK0QrJzwvZGl2Plx0XHRcdDxkaXYgY2xhc3M9InJhZGlvLWNvbnRhaW5lciBwYXltZW50Q2FsY3VsYXRvclBheW1lbnRTZWxlY3QiPlx0XHRcdFx0PGlucHV0IFx0XHRcdFx0XHR0eXBlPSJyYWRpbyJcdFx0XHRcdFx0XHRcdFx0XHRcdG5hbWU9InNlbGVjdGVkUGF5bWVudCJcdFx0XHRcdFx0dmFsdWU9IicrZC50ZXJtKyciXHRcdFx0XHRcdGRhdGEtYmFzZXBheW1lbnQ9IicrZC5wYXltZW50KyciXHRcdFx0XHRcdGRhdGEtcmVhbHBheW1lbnQ9IicrZC5wYXltZW50KyciXHRcdFx0XHRcdGRhdGEtcmF0ZXR5cGU9IicrZC5yYXRlX3R5cGUrJyJcdFx0XHRcdFx0ZGF0YS1kaXNwbGF5ZWRwYXltZW50PSInK1crJyJcdFx0XHRcdFx0ZGF0YS1yZXNpZHVhbD0iJytkLnJlc2lkdWFsKyciXHRcdFx0XHRcdGRhdGEtdG90YWxpbnRlcmVzdD0iJysKZC50b3RhbEludGVyZXN0KyciXHRcdFx0XHRcdGRhdGEtbHV4ZVRheEFtb3VudD0iJytkLmx1eGVUYXhBbW91bnQrJyJcdFx0XHRcdFx0ZGF0YS1lZmZlY3RpdmVSYXRlPSInK3orJyJcdFx0XHRcdFx0ZGF0YS10b3RhbENvc3Q9IicrTisnIlx0XHRcdFx0XHRkYXRhLXJhdGU9IicrZC5yYXRlKyciICAgICAgICAgICAgICAgICBkYXRhLXJlc2lkdWFsPSInK2QucmVzaWR1YWxWYWx1ZSsnIiAgICAgICAgICAgICAgICAgZGF0YS10b3RhbGluY2VudGl2ZT0iJytaKyciICAgICAgICAgICAgICAgICBkYXRhLWluaXRpYWxQcmljZT0iJytkLmluaXRpYWxQcmljZSsnIiAgICAgICAgICAgICAgICAgZGF0YS1maW5hbFByaWNlPSInK2QuZmluYWxQcmljZSsnIiAgICAgICAgICAgICAgICAgZGF0YS1mZWVzTGlzdD0iJytidG9hKEpTT04uc3RyaW5naWZ5KGQuZmVlc0xpc3QpKSsnIiAgICAgICAgICAgICAgICAgZGF0YS1pbmNlbnRpdmVzTGlzdD0iJytidG9hKEpTT04uc3RyaW5naWZ5KGQuaW5jZW50aXZlc0xpc3QpKSsKJyIgICAgICAgICAgICAgICAgIGRhdGEtZ3N0PSIwIiAgICAgICAgICAgICAgICAgZGF0YS1oc3Q9IjAiICAgICAgICAgICAgICAgICBkYXRhLXBzdD0iMCJcdFx0XHRcdD5cdFx0XHRcdDxsYWJlbCBjbGFzcz0iZmluYW5jZUNhbGMiPicrSisiPC9sYWJlbD5cdFx0XHQ8L2Rpdj5cdFx0PC9kaXY+Iit0KyJcdDwvZGl2PjwvZGl2PiI7ZD0nPGRpdiBjbGFzcz0iZmluYW5jaW5nLW9wdGlvbiBwYXltZW50Q2FsY3VsYXRvclBheW1lbnRXcmFwcGVyICcrRSsnIj5cdDxkaXYgY2xhc3M9InRlcm0iPicrdisnPC9kaXY+XHQ8ZGl2IGNsYXNzPSJkb3duLXBheW1lbnQiPicreSsnPC9kaXY+XHQ8ZGl2IGNsYXNzPSJzZXBhcmF0b3JQYXkiPjwvZGl2Plx0PGRpdiBjbGFzcz0iY29udGVudC1jb250YWluZXIiPlx0XHQ8ZGl2IGlkPSInK2srJyIgY2xhc3M9IicrcisnIHBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXJDb250YWluZXIiICcrUCsnPlx0XHRcdDxkaXYgY2xhc3M9Imxvd2VzdC1wYXltZW50Ij48c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj4nKwpsKyc8L3NwYW4+IDxpIGNsYXNzPSJmYXMgZmEtaW5mby1jaXJjbGUgaW5mby1pY29uIHBheW1lbnRUb29sdGlwIGxlZnRUb29sdGlwIiAnK1ArJz48L2k+PC9kaXY+XHRcdFx0PGRpdiBjbGFzcz0iYWN0dWFsLXJhdGUiPicrTCsiJSAiK0QrJzwvZGl2Plx0XHRcdDxkaXYgY2xhc3M9InJhZGlvLWNvbnRhaW5lciBwYXltZW50Q2FsY3VsYXRvclBheW1lbnRTZWxlY3QiPlx0XHRcdFx0PGlucHV0IFx0XHRcdFx0XHR0eXBlPSJyYWRpbyJcdFx0XHRcdFx0XHRcdFx0XHRcdG5hbWU9InNlbGVjdGVkUGF5bWVudFdpdGhUYXhlcyJcdFx0XHRcdFx0dmFsdWU9IicrZC50ZXJtKyciXHRcdFx0XHRcdGRhdGEtYmFzZXBheW1lbnQ9IicrZC5wYXltZW50KyciXHRcdFx0XHRcdGRhdGEtcmVhbHBheW1lbnQ9IicrZC5wYXltZW50V2l0aFRheGVzKyciXHRcdFx0XHRcdGRhdGEtcmF0ZXR5cGU9IicrZC5yYXRlX3R5cGUrJyJcdFx0XHRcdFx0ZGF0YS1kaXNwbGF5ZWRwYXltZW50PSInK1grJyJcdFx0XHRcdFx0ZGF0YS1yZXNpZHVhbD0iJysKZC5yZXNpZHVhbCsnIlx0XHRcdFx0XHRkYXRhLXRvdGFsaW50ZXJlc3Q9IicrZC50b3RhbEludGVyZXN0KyciXHRcdFx0XHRcdGRhdGEtbHV4ZVRheEFtb3VudD0iJytkLmx1eGVUYXhBbW91bnQrJyJcdFx0XHRcdFx0ZGF0YS1lZmZlY3RpdmVSYXRlPSInK3orJyJcdFx0XHRcdFx0ZGF0YS10b3RhbENvc3Q9IicrTisnIlx0XHRcdFx0XHRkYXRhLXJhdGU9IicrZC5yYXRlKyciICAgICAgICAgICAgICAgICBkYXRhLXJlc2lkdWFsPSInK2QucmVzaWR1YWxWYWx1ZVdpdGhUYXhlcysnIiAgICAgICAgICAgICAgICAgZGF0YS10b3RhbGluY2VudGl2ZT0iJytJKyciICAgICAgICAgICAgICAgICBkYXRhLWluaXRpYWxQcmljZT0iJytkLmluaXRpYWxQcmljZSsnIiAgICAgICAgICAgICAgICAgZGF0YS1maW5hbFByaWNlPSInK2QuZmluYWxQcmljZSsnIiAgICAgICAgICAgICAgICAgZGF0YS1mZWVzTGlzdD0iJytidG9hKEpTT04uc3RyaW5naWZ5KGQuZmVlc0xpc3QpKSsnIiAgICAgICAgICAgICAgICAgZGF0YS1pbmNlbnRpdmVzTGlzdD0iJysKYnRvYShKU09OLnN0cmluZ2lmeShkLmluY2VudGl2ZXNMaXN0KSkrJyIgICAgICAgICAgICAgICAgIGRhdGEtZ3N0PSInK2QuZ3N0KyciICAgICAgICAgICAgICAgICBkYXRhLWhzdD0iJytkLmhzdCsnIiAgICAgICAgICAgICAgICAgZGF0YS1wc3Q9IicrZC5wc3QrJyJcdFx0XHRcdD5cdFx0XHRcdDxsYWJlbCBjbGFzcz0iZmluYW5jZUNhbGMiPicrSisiPC9sYWJlbD5cdFx0XHQ8L2Rpdj5cdFx0PC9kaXY+Iit1KyJcdDwvZGl2PjwvZGl2PiI7JChtLnBhcmVudCsiIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXIiKS5hcHBlbmQoYyk7JChtLnBhcmVudCsiIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXJXaXRoVGF4ZXMiKS5hcHBlbmQoZCk7VisrfX0pO20uc2V0UGF5bWVudENhbGN1bGF0b3JQb3B1cFRvb2x0aXAoKX1zZXRQYXltZW50Q2FsY3VsYXRvclBvcHVwVG9vbHRpcCgpe3ZhciBhPXRoaXMucGFyZW50LGU9dGhpcy5wYXJlbnROYW1lO2lmKCIxIj09CiQoIiNpc21vYmlsZSIpLnZhbCgpKSQoYSsiIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRXcmFwcGVyIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRXcmFwcGVyQ29udGFpbmVyIC5wYXltZW50VG9vbHRpcCIpLmVhY2goZnVuY3Rpb24oZil7dHJ5e3ZhciBtPSQodGhpcykuYXR0cigiZGF0YS10b29sdGlwIiksZz0kKHRoaXMpLmhhc0NsYXNzKCJsZWZ0VG9vbHRpcCIpPyJ3ZXN0IjoiZWFzdCI7JCh0aGlzKS5kYXJrVG9vbHRpcCh7Y29udGVudDptLGdyYXZpdHk6Zyx0aGVtZToibGlnaHQiLHRyaWdnZXI6ImNsaWNrIixhbmltYXRpb246ImZsaXBJbiJ9KX1jYXRjaChoKXt9fSk7ZWxzZXtmb3IodmFyIGI9MDs1PmI7YisrKSQoIiNkYXJrdG9vbHRpcC0iK2UrInBheW1lbnQiK2IpLmxlbmd0aCYmKCQoIiNkYXJrdG9vbHRpcC0iK2UrInBheW1lbnQiK2IpLnJlbW92ZSgpLCQoIiNkYXJrdG9vbHRpcC0iK2UrInBheW1lbnQiK2IrIndpdGhUYXhlcyIpLnJlbW92ZSgpKTskKGErIiAucGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlciAucGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlckNvbnRhaW5lciIpLmVhY2goZnVuY3Rpb24oKXt0cnl7dmFyIGY9CiQodGhpcykuYXR0cigiZGF0YS10b29sdGlwIik7JCh0aGlzKS5kYXJrVG9vbHRpcCh7Y29udGVudDpmLGdyYXZpdHk6Im5vcnRoIix0aGVtZToibGlnaHQiLHRyaWdnZXI6ImhvdmVyIixhbmltYXRpb246Im5vbmUifSl9Y2F0Y2gobSl7fX0pfX1wYXltZW50Q2FsY3VsYXRvckZvcm1hdE51bWJlcihhKXtyZXR1cm4gYS5yZXBsYWNlKC9cQig\/PShcZHszfSkrKD8hXGQpKS9nLCIsIil9Zm9ybWF0RWZmZWN0aXZlUmF0ZVRleHRDYWxjKGEsZSxiKXtiPXZvaWQgMD09PWI\/IiI6YjthPSI8c3BhbiAiK2UrIj4iK2ErIjwvc3Bhbj4lIjthPSJFTkdMSVNIIj09YWN0aXZlTGFuZz9hKyIgQVBSIjoiVGF1eCAiK2E7cmV0dXJuICQoIiNpc21vYmlsZSIpLnZhbCgpPyI8YnIvPjxkaXYgIitiKyI+KCIrYSsiKTwvZGl2PiI6IiA8ZGl2ICIrYisiPiggIithKyIgKTwvZGl2PiJ9fTsKLyoqIC9tL2pzL3ZhbmlsbGFqcy9tb2RhbC5qcyAqKi8KdmFyIF9fX2QyY19tb2RhbGpzX2Nfb249IjIwMjYtMDItMjcgMTU6MzA6MDMiOyd1c2Ugc3RyaWN0Jztjb25zdCBNb2RhbHM9e30sTW9kYWw9ZnVuY3Rpb24oaCxiKXtsZXQgYz17fTtjb25zdCBuPXt0aXRsZTpoLGNvbnRlbnRUeXBlOiJub2RlIixjb250ZW50U3JjOiIiLGFmdGVySW5pdDooKT0+e319O2xldCBrPSIiO2NvbnN0IGU9aHRtbFRvTm9kZSgnPGRpdiBjbGFzcz0ibW9kYWwtb3ZlcmxheSI+PC9kaXY+JyksbD1mdW5jdGlvbihhKXthLm9uY2xpY2s9KCk9PmYoImNhbmNlbCIpfSxwPWZ1bmN0aW9uKCl7KGMucXVlcnlTZWxlY3RvcigiLm9rYXkiKXx8ITEpLm9uY2xpY2s9KCk9PmYoIm9rYXkiKTtjb25zdCBhPWMucXVlcnlTZWxlY3RvckFsbCgiLmNhbmNlbCIpfHwhMTsxPGEubGVuZ3RoPyQuZWFjaChhLGZ1bmN0aW9uKGQsZyl7bChnKX0pOmEmJmwoYVswXSl9LG09ZnVuY3Rpb24oYSl7IkVzY2FwZSI9PWEua2V5JiYoYS5wcmV2ZW50RGVmYXVsdCgpLGEuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5dXAiLAptLHtjYXB0dXJlOiEwfSksZigpKX0sZj1hPT57YT1hfHwiIjtzd2l0Y2goYSl7Y2FzZSAiY2FuY2VsIjoiZnVuY3Rpb24iPT10eXBlb2YgYi5vbkJlZm9yZUNhbmNlbCYmYi5vbkJlZm9yZUNhbmNlbC5jYWxsKCk7YnJlYWs7Y2FzZSAib2theSI6ImZ1bmN0aW9uIj09dHlwZW9mIGIub25CZWZvcmVTYXZlJiZiLm9uQmVmb3JlU2F2ZS5jYWxsKCl9ImZ1bmN0aW9uIj09dHlwZW9mIGIub25CZWZvcmVDbG9zZSYmYi5vbkJlZm9yZUNsb3NlLmNhbGwoYSk7ZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvd1k9ImF1dG8iO2MuY2xhc3NMaXN0LnRvZ2dsZSgiaXMtYWN0aXZlIiwhMSk7ZS5wYXJlbnROb2RlJiYoZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGUpLGsuZm9jdXMoKSl9O2I9T2JqZWN0LmFzc2lnbihuLGIpOyhmdW5jdGlvbigpe2NvbnN0IGE9K25ldyBEYXRlO3ZhciBkPSIiO3N3aXRjaChiLmNvbnRlbnRUeXBlKXtjYXNlICJub2RlIjpkPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGIuY29udGVudFNyYyk7CmQuaGlkZGVuPSExO2JyZWFrO2Nhc2UgImlmcmFtZSI6ZD1odG1sVG9Ob2RlKGA8ZGl2IGNsYXNzPSJpZnJhbWUtd3JhcHBlciI+CgkJCQkJCQkJPGlmcmFtZQoJCQkJCQkJCQlzcmM9IiR7Yi5jb250ZW50U3JjfSIKCQkJCQkJCQkJZnJhbWVib3JkZXI9IjAiCgkJCQkJCQkJCWFsbG93ZnVsbHNjcmVlbj0idHJ1ZSIKCQkJCQkJCQkJd2Via2l0YWxsb3dmdWxsc2NyZWVuPSJ0cnVlIgoJCQkJCQkJCQltb3phbGxvd2Z1bGxzY3JlZW49InRydWUiCgkJCQkJCQkJPjwvaWZyYW1lPgoJCQkJCQkJPC9kaXY+YCl9bGV0IGc9IiI7Yi5zaG93WWVzTm9CdXR0b25zJiYoZz1gPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIC1wIC0tczUgZmxleC1iZXR3ZWVuIj4KCQkJCTxkaXY+CgkJCQkJPHNwYW4gY2xhc3M9IiAtbXQyIG1haW5UZXh0IC1ib2xkIj4ke2IuYnV0dG9uVGV4dHx8IiJ9PC9zcGFuPgoJCQkJPC9kaXY+CgkJCQk8ZGl2PgoJCQkJCTxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGNhbmNlbCIgZGF0YS1kaXNtaXNzPSJtb2RhbCI+JHtiLm5vQnV0dG9ufHwiTm8ifTwvYnV0dG9uPgoJCQkJCTxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1tYWluMiBva2F5IiBkYXRhLWRpc21pc3M9Im1vZGFsIj4ke2IueWVzQnV0dG9ufHwiWWVzIn08L2J1dHRvbj4KCQkJCTwvZGl2PmApO2M9aHRtbFRvTm9kZShgCgkJCTxib3gtbGMgY2xhc3M9Im1vZGFsLXdyYXBwZXIgLWJnLXdoaXRlIC0tczAiPgoJCQkJPHN0YWNrLWxjIGNsYXNzPSItLXMwIj4KCQkJCQk8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIgZmxleC1iZXR3ZWVuIC1wIC0tczUiPgoJCQkJCQk8ZGl2IGNsYXNzPSJtb2RhbC10aXRsZSB0eHQtdXBwZXIgLWZzLWwgLWJvbGQiPgoJCQkJCQkJJHtiLnRpdGxlfQoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibW9kYWwtY29udHJvbCI+CgkJCQkJCQk8YnV0dG9uIHRpdGxlPSJjbG9zZSIgY2xhc3M9IngtY2xvc2UgY2FuY2VsIj48L2J1dHRvbj4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibW9kYWwtYm9keSIgaWQ9InEtJHthfSI+CgoJCQkJCTwvZGl2PgoJCQkJCSR7Z30KCQkJCTwvc3RhY2stbGM+CgkJCTwvYm94LWxjPgoJCWApO2MuaWQ9YG1vZGFsJHtofWA7Yy5zZXRBdHRyaWJ1dGUoInJvbGUiLCJkaWFsb2ciKTtjLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbGxlZGJ5IixgcS0ke2F9YCk7Yy5xdWVyeVNlbGVjdG9yKCIubW9kYWwtYm9keSIpLmFwcGVuZENoaWxkKGQpO2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYyk7ZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvd1k9ImhpZGRlbiI7Yi5hZnRlckluaXQoKTtwKCl9KSgpO3JldHVybntkaXNwbGF5OmZ1bmN0aW9uKCl7az1kb2N1bWVudC5hY3RpdmVFbGVtZW50O2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZSk7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5dXAiLG0se2NhcHR1cmU6ITB9KTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yy5jbGFzc0xpc3QudG9nZ2xlKCJpcy1hY3RpdmUiLCEwKX0sMSl9LGNsb3NlOmZ9fTsKLyoqIC9tL2pzL3ZhbmlsbGFqcy9sZWFkLmpzICoqLwp2YXIgX19fZDJjX2xlYWRqc19jX29uPSIyMDI2LTAyLTIwIDExOjMwOjA4IjsndXNlIHN0cmljdCc7dmFyICRqc2NvbXA9JGpzY29tcHx8e307JGpzY29tcC5zY29wZT17fTskanNjb21wLkFTU1VNRV9FUzU9ITE7JGpzY29tcC5BU1NVTUVfTk9fTkFUSVZFX01BUD0hMTskanNjb21wLkFTU1VNRV9OT19OQVRJVkVfU0VUPSExOyRqc2NvbXAuU0lNUExFX0ZST1VORF9QT0xZRklMTD0hMTskanNjb21wLklTT0xBVEVfUE9MWUZJTExTPSExOyRqc2NvbXAuRk9SQ0VfUE9MWUZJTExfUFJPTUlTRT0hMTskanNjb21wLkZPUkNFX1BPTFlGSUxMX1BST01JU0VfV0hFTl9OT19VTkhBTkRMRURfUkVKRUNUSU9OPSExOyRqc2NvbXAuZGVmaW5lUHJvcGVydHk9JGpzY29tcC5BU1NVTUVfRVM1fHwiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmRlZmluZVByb3BlcnRpZXM\/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKGIsYSxjKXtpZihiPT1BcnJheS5wcm90b3R5cGV8fGI9PU9iamVjdC5wcm90b3R5cGUpcmV0dXJuIGI7YlthXT1jLnZhbHVlO3JldHVybiBifTsKJGpzY29tcC5nZXRHbG9iYWw9ZnVuY3Rpb24oYil7Yj1bIm9iamVjdCI9PXR5cGVvZiBnbG9iYWxUaGlzJiZnbG9iYWxUaGlzLGIsIm9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdywib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYsIm9iamVjdCI9PXR5cGVvZiBnbG9iYWwmJmdsb2JhbF07Zm9yKHZhciBhPTA7YTxiLmxlbmd0aDsrK2Epe3ZhciBjPWJbYV07aWYoYyYmYy5NYXRoPT1NYXRoKXJldHVybiBjfXRocm93IEVycm9yKCJDYW5ub3QgZmluZCBnbG9iYWwgb2JqZWN0Iik7fTskanNjb21wLmdsb2JhbD0kanNjb21wLmdldEdsb2JhbCh0aGlzKTskanNjb21wLklTX1NZTUJPTF9OQVRJVkU9ImZ1bmN0aW9uIj09PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT09dHlwZW9mIFN5bWJvbCgieCIpOyRqc2NvbXAuVFJVU1RfRVM2X1BPTFlGSUxMUz0hJGpzY29tcC5JU09MQVRFX1BPTFlGSUxMU3x8JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFOyRqc2NvbXAucG9seWZpbGxzPXt9OwokanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbD17fTskanNjb21wLlBPTFlGSUxMX1BSRUZJWD0iJGpzY3AkIjt2YXIgJGpzY29tcCRsb29rdXBQb2x5ZmlsbGVkVmFsdWU9ZnVuY3Rpb24oYixhKXt2YXIgYz0kanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbFthXTtpZihudWxsPT1jKXJldHVybiBiW2FdO2M9YltjXTtyZXR1cm4gdm9pZCAwIT09Yz9jOmJbYV19OyRqc2NvbXAucG9seWZpbGw9ZnVuY3Rpb24oYixhLGMsZSl7YSYmKCRqc2NvbXAuSVNPTEFURV9QT0xZRklMTFM\/JGpzY29tcC5wb2x5ZmlsbElzb2xhdGVkKGIsYSxjLGUpOiRqc2NvbXAucG9seWZpbGxVbmlzb2xhdGVkKGIsYSxjLGUpKX07CiRqc2NvbXAucG9seWZpbGxVbmlzb2xhdGVkPWZ1bmN0aW9uKGIsYSxjLGUpe2M9JGpzY29tcC5nbG9iYWw7Yj1iLnNwbGl0KCIuIik7Zm9yKGU9MDtlPGIubGVuZ3RoLTE7ZSsrKXt2YXIgaD1iW2VdO2lmKCEoaCBpbiBjKSlyZXR1cm47Yz1jW2hdfWI9YltiLmxlbmd0aC0xXTtlPWNbYl07YT1hKGUpO2EhPWUmJm51bGwhPWEmJiRqc2NvbXAuZGVmaW5lUHJvcGVydHkoYyxiLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6YX0pfTsKJGpzY29tcC5wb2x5ZmlsbElzb2xhdGVkPWZ1bmN0aW9uKGIsYSxjLGUpe3ZhciBoPWIuc3BsaXQoIi4iKTtiPTE9PT1oLmxlbmd0aDtlPWhbMF07ZT0hYiYmZSBpbiAkanNjb21wLnBvbHlmaWxscz8kanNjb21wLnBvbHlmaWxsczokanNjb21wLmdsb2JhbDtmb3IodmFyIG49MDtuPGgubGVuZ3RoLTE7bisrKXt2YXIgcD1oW25dO2lmKCEocCBpbiBlKSlyZXR1cm47ZT1lW3BdfWg9aFtoLmxlbmd0aC0xXTtjPSRqc2NvbXAuSVNfU1lNQk9MX05BVElWRSYmImVzNiI9PT1jP2VbaF06bnVsbDthPWEoYyk7bnVsbCE9YSYmKGI\/JGpzY29tcC5kZWZpbmVQcm9wZXJ0eSgkanNjb21wLnBvbHlmaWxscyxoLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6YX0pOmEhPT1jJiYodm9pZCAwPT09JGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbaF0mJihjPTFFOSpNYXRoLnJhbmRvbSgpPj4+MCwkanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbFtoXT0kanNjb21wLklTX1NZTUJPTF9OQVRJVkU\/CiRqc2NvbXAuZ2xvYmFsLlN5bWJvbChoKTokanNjb21wLlBPTFlGSUxMX1BSRUZJWCtjKyIkIitoKSwkanNjb21wLmRlZmluZVByb3BlcnR5KGUsJGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbaF0se2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTphfSkpKX07JGpzY29tcC51bmRlcnNjb3JlUHJvdG9DYW5CZVNldD1mdW5jdGlvbigpe3ZhciBiPXthOiEwfSxhPXt9O3RyeXtyZXR1cm4gYS5fX3Byb3RvX189YixhLmF9Y2F0Y2goYyl7fXJldHVybiExfTsKJGpzY29tcC5zZXRQcm90b3R5cGVPZj0kanNjb21wLlRSVVNUX0VTNl9QT0xZRklMTFMmJiJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3Quc2V0UHJvdG90eXBlT2Y\/T2JqZWN0LnNldFByb3RvdHlwZU9mOiRqc2NvbXAudW5kZXJzY29yZVByb3RvQ2FuQmVTZXQoKT9mdW5jdGlvbihiLGEpe2IuX19wcm90b19fPWE7aWYoYi5fX3Byb3RvX18hPT1hKXRocm93IG5ldyBUeXBlRXJyb3IoYisiIGlzIG5vdCBleHRlbnNpYmxlIik7cmV0dXJuIGJ9Om51bGw7JGpzY29tcC5hcnJheUl0ZXJhdG9ySW1wbD1mdW5jdGlvbihiKXt2YXIgYT0wO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBhPGIubGVuZ3RoP3tkb25lOiExLHZhbHVlOmJbYSsrXX06e2RvbmU6ITB9fX07JGpzY29tcC5hcnJheUl0ZXJhdG9yPWZ1bmN0aW9uKGIpe3JldHVybntuZXh0OiRqc2NvbXAuYXJyYXlJdGVyYXRvckltcGwoYil9fTsKJGpzY29tcC5tYWtlSXRlcmF0b3I9ZnVuY3Rpb24oYil7dmFyIGE9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvciYmYltTeW1ib2wuaXRlcmF0b3JdO3JldHVybiBhP2EuY2FsbChiKTokanNjb21wLmFycmF5SXRlcmF0b3IoYil9OyRqc2NvbXAuZ2VuZXJhdG9yPXt9OyRqc2NvbXAuZ2VuZXJhdG9yLmVuc3VyZUl0ZXJhdG9yUmVzdWx0SXNPYmplY3RfPWZ1bmN0aW9uKGIpe2lmKCEoYiBpbnN0YW5jZW9mIE9iamVjdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiSXRlcmF0b3IgcmVzdWx0ICIrYisiIGlzIG5vdCBhbiBvYmplY3QiKTt9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0PWZ1bmN0aW9uKCl7dGhpcy5pc1J1bm5pbmdfPSExO3RoaXMueWllbGRBbGxJdGVyYXRvcl89bnVsbDt0aGlzLnlpZWxkUmVzdWx0PXZvaWQgMDt0aGlzLm5leHRBZGRyZXNzPTE7dGhpcy5maW5hbGx5QWRkcmVzc189dGhpcy5jYXRjaEFkZHJlc3NfPTA7dGhpcy5maW5hbGx5Q29udGV4dHNfPXRoaXMuYWJydXB0Q29tcGxldGlvbl89bnVsbH07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuc3RhcnRfPWZ1bmN0aW9uKCl7aWYodGhpcy5pc1J1bm5pbmdfKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTt0aGlzLmlzUnVubmluZ189ITB9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnN0b3BfPWZ1bmN0aW9uKCl7dGhpcy5pc1J1bm5pbmdfPSExfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuanVtcFRvRXJyb3JIYW5kbGVyXz1mdW5jdGlvbigpe3RoaXMubmV4dEFkZHJlc3M9dGhpcy5jYXRjaEFkZHJlc3NffHx0aGlzLmZpbmFsbHlBZGRyZXNzX307JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUubmV4dF89ZnVuY3Rpb24oYil7dGhpcy55aWVsZFJlc3VsdD1ifTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS50aHJvd189ZnVuY3Rpb24oYil7dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz17ZXhjZXB0aW9uOmIsaXNFeGNlcHRpb246ITB9O3RoaXMuanVtcFRvRXJyb3JIYW5kbGVyXygpfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5yZXR1cm49ZnVuY3Rpb24oYil7dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz17cmV0dXJuOmJ9O3RoaXMubmV4dEFkZHJlc3M9dGhpcy5maW5hbGx5QWRkcmVzc199OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5qdW1wVGhyb3VnaEZpbmFsbHlCbG9ja3M9ZnVuY3Rpb24oYil7dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz17anVtcFRvOmJ9O3RoaXMubmV4dEFkZHJlc3M9dGhpcy5maW5hbGx5QWRkcmVzc199OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnlpZWxkPWZ1bmN0aW9uKGIsYSl7dGhpcy5uZXh0QWRkcmVzcz1hO3JldHVybnt2YWx1ZTpifX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUueWllbGRBbGw9ZnVuY3Rpb24oYixhKXtiPSRqc2NvbXAubWFrZUl0ZXJhdG9yKGIpO3ZhciBjPWIubmV4dCgpOyRqc2NvbXAuZ2VuZXJhdG9yLmVuc3VyZUl0ZXJhdG9yUmVzdWx0SXNPYmplY3RfKGMpO2lmKGMuZG9uZSl0aGlzLnlpZWxkUmVzdWx0PWMudmFsdWUsdGhpcy5uZXh0QWRkcmVzcz1hO2Vsc2UgcmV0dXJuIHRoaXMueWllbGRBbGxJdGVyYXRvcl89Yix0aGlzLnlpZWxkKGMudmFsdWUsYSl9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5qdW1wVG89ZnVuY3Rpb24oYil7dGhpcy5uZXh0QWRkcmVzcz1ifTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5qdW1wVG9FbmQ9ZnVuY3Rpb24oKXt0aGlzLm5leHRBZGRyZXNzPTB9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnNldENhdGNoRmluYWxseUJsb2Nrcz1mdW5jdGlvbihiLGEpe3RoaXMuY2F0Y2hBZGRyZXNzXz1iO3ZvaWQgMCE9YSYmKHRoaXMuZmluYWxseUFkZHJlc3NfPWEpfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5zZXRGaW5hbGx5QmxvY2s9ZnVuY3Rpb24oYil7dGhpcy5jYXRjaEFkZHJlc3NfPTA7dGhpcy5maW5hbGx5QWRkcmVzc189Ynx8MH07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUubGVhdmVUcnlCbG9jaz1mdW5jdGlvbihiLGEpe3RoaXMubmV4dEFkZHJlc3M9Yjt0aGlzLmNhdGNoQWRkcmVzc189YXx8MH07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmVudGVyQ2F0Y2hCbG9jaz1mdW5jdGlvbihiKXt0aGlzLmNhdGNoQWRkcmVzc189Ynx8MDtiPXRoaXMuYWJydXB0Q29tcGxldGlvbl8uZXhjZXB0aW9uO3RoaXMuYWJydXB0Q29tcGxldGlvbl89bnVsbDtyZXR1cm4gYn07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuZW50ZXJGaW5hbGx5QmxvY2s9ZnVuY3Rpb24oYixhLGMpe2M\/dGhpcy5maW5hbGx5Q29udGV4dHNfW2NdPXRoaXMuYWJydXB0Q29tcGxldGlvbl86dGhpcy5maW5hbGx5Q29udGV4dHNfPVt0aGlzLmFicnVwdENvbXBsZXRpb25fXTt0aGlzLmNhdGNoQWRkcmVzc189Ynx8MDt0aGlzLmZpbmFsbHlBZGRyZXNzXz1hfHwwfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUubGVhdmVGaW5hbGx5QmxvY2s9ZnVuY3Rpb24oYixhKXthPXRoaXMuZmluYWxseUNvbnRleHRzXy5zcGxpY2UoYXx8MClbMF07aWYoYT10aGlzLmFicnVwdENvbXBsZXRpb25fPXRoaXMuYWJydXB0Q29tcGxldGlvbl98fGEpe2lmKGEuaXNFeGNlcHRpb24pcmV0dXJuIHRoaXMuanVtcFRvRXJyb3JIYW5kbGVyXygpO3ZvaWQgMCE9YS5qdW1wVG8mJnRoaXMuZmluYWxseUFkZHJlc3NfPGEuanVtcFRvPyh0aGlzLm5leHRBZGRyZXNzPWEuanVtcFRvLHRoaXMuYWJydXB0Q29tcGxldGlvbl89bnVsbCk6dGhpcy5uZXh0QWRkcmVzcz10aGlzLmZpbmFsbHlBZGRyZXNzX31lbHNlIHRoaXMubmV4dEFkZHJlc3M9Yn07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuZm9ySW49ZnVuY3Rpb24oYil7cmV0dXJuIG5ldyAkanNjb21wLmdlbmVyYXRvci5Db250ZXh0LlByb3BlcnR5SXRlcmF0b3IoYil9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LlByb3BlcnR5SXRlcmF0b3I9ZnVuY3Rpb24oYil7dGhpcy5vYmplY3RfPWI7dGhpcy5wcm9wZXJ0aWVzXz1bXTtmb3IodmFyIGEgaW4gYil0aGlzLnByb3BlcnRpZXNfLnB1c2goYSk7dGhpcy5wcm9wZXJ0aWVzXy5yZXZlcnNlKCl9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQuUHJvcGVydHlJdGVyYXRvci5wcm90b3R5cGUuZ2V0TmV4dD1mdW5jdGlvbigpe2Zvcig7MDx0aGlzLnByb3BlcnRpZXNfLmxlbmd0aDspe3ZhciBiPXRoaXMucHJvcGVydGllc18ucG9wKCk7aWYoYiBpbiB0aGlzLm9iamVjdF8pcmV0dXJuIGJ9cmV0dXJuIG51bGx9OyRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV89ZnVuY3Rpb24oYil7dGhpcy5jb250ZXh0Xz1uZXcgJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dDt0aGlzLnByb2dyYW1fPWJ9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS5uZXh0Xz1mdW5jdGlvbihiKXt0aGlzLmNvbnRleHRfLnN0YXJ0XygpO2lmKHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl8pcmV0dXJuIHRoaXMueWllbGRBbGxTdGVwXyh0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfLm5leHQsYix0aGlzLmNvbnRleHRfLm5leHRfKTt0aGlzLmNvbnRleHRfLm5leHRfKGIpO3JldHVybiB0aGlzLm5leHRTdGVwXygpfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUucmV0dXJuXz1mdW5jdGlvbihiKXt0aGlzLmNvbnRleHRfLnN0YXJ0XygpO3ZhciBhPXRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl87aWYoYSlyZXR1cm4gdGhpcy55aWVsZEFsbFN0ZXBfKCJyZXR1cm4iaW4gYT9hWyJyZXR1cm4iXTpmdW5jdGlvbihjKXtyZXR1cm57dmFsdWU6Yyxkb25lOiEwfX0sYix0aGlzLmNvbnRleHRfLnJldHVybik7dGhpcy5jb250ZXh0Xy5yZXR1cm4oYik7cmV0dXJuIHRoaXMubmV4dFN0ZXBfKCl9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS50aHJvd189ZnVuY3Rpb24oYil7dGhpcy5jb250ZXh0Xy5zdGFydF8oKTtpZih0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfKXJldHVybiB0aGlzLnlpZWxkQWxsU3RlcF8odGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yX1sidGhyb3ciXSxiLHRoaXMuY29udGV4dF8ubmV4dF8pO3RoaXMuY29udGV4dF8udGhyb3dfKGIpO3JldHVybiB0aGlzLm5leHRTdGVwXygpfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUueWllbGRBbGxTdGVwXz1mdW5jdGlvbihiLGEsYyl7dHJ5e3ZhciBlPWIuY2FsbCh0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfLGEpOyRqc2NvbXAuZ2VuZXJhdG9yLmVuc3VyZUl0ZXJhdG9yUmVzdWx0SXNPYmplY3RfKGUpO2lmKCFlLmRvbmUpcmV0dXJuIHRoaXMuY29udGV4dF8uc3RvcF8oKSxlO3ZhciBoPWUudmFsdWV9Y2F0Y2gobil7cmV0dXJuIHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl89bnVsbCx0aGlzLmNvbnRleHRfLnRocm93XyhuKSx0aGlzLm5leHRTdGVwXygpfXRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl89bnVsbDtjLmNhbGwodGhpcy5jb250ZXh0XyxoKTtyZXR1cm4gdGhpcy5uZXh0U3RlcF8oKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLm5leHRTdGVwXz1mdW5jdGlvbigpe2Zvcig7dGhpcy5jb250ZXh0Xy5uZXh0QWRkcmVzczspdHJ5e3ZhciBiPXRoaXMucHJvZ3JhbV8odGhpcy5jb250ZXh0Xyk7aWYoYilyZXR1cm4gdGhpcy5jb250ZXh0Xy5zdG9wXygpLHt2YWx1ZTpiLnZhbHVlLGRvbmU6ITF9fWNhdGNoKGEpe3RoaXMuY29udGV4dF8ueWllbGRSZXN1bHQ9dm9pZCAwLHRoaXMuY29udGV4dF8udGhyb3dfKGEpfXRoaXMuY29udGV4dF8uc3RvcF8oKTtpZih0aGlzLmNvbnRleHRfLmFicnVwdENvbXBsZXRpb25fKXtiPXRoaXMuY29udGV4dF8uYWJydXB0Q29tcGxldGlvbl87dGhpcy5jb250ZXh0Xy5hYnJ1cHRDb21wbGV0aW9uXz1udWxsO2lmKGIuaXNFeGNlcHRpb24pdGhyb3cgYi5leGNlcHRpb247cmV0dXJue3ZhbHVlOmIucmV0dXJuLGRvbmU6ITB9fXJldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19OwokanNjb21wLmdlbmVyYXRvci5HZW5lcmF0b3JfPWZ1bmN0aW9uKGIpe3RoaXMubmV4dD1mdW5jdGlvbihhKXtyZXR1cm4gYi5uZXh0XyhhKX07dGhpcy50aHJvdz1mdW5jdGlvbihhKXtyZXR1cm4gYi50aHJvd18oYSl9O3RoaXMucmV0dXJuPWZ1bmN0aW9uKGEpe3JldHVybiBiLnJldHVybl8oYSl9O3RoaXNbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfX07JGpzY29tcC5nZW5lcmF0b3IuY3JlYXRlR2VuZXJhdG9yPWZ1bmN0aW9uKGIsYSl7YT1uZXcgJGpzY29tcC5nZW5lcmF0b3IuR2VuZXJhdG9yXyhuZXcgJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXyhhKSk7JGpzY29tcC5zZXRQcm90b3R5cGVPZiYmYi5wcm90b3R5cGUmJiRqc2NvbXAuc2V0UHJvdG90eXBlT2YoYSxiLnByb3RvdHlwZSk7cmV0dXJuIGF9OwokanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3I9ZnVuY3Rpb24oYil7ZnVuY3Rpb24gYShlKXtyZXR1cm4gYi5uZXh0KGUpfWZ1bmN0aW9uIGMoZSl7cmV0dXJuIGIudGhyb3coZSl9cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGUsaCl7ZnVuY3Rpb24gbihwKXtwLmRvbmU\/ZShwLnZhbHVlKTpQcm9taXNlLnJlc29sdmUocC52YWx1ZSkudGhlbihhLGMpLnRoZW4obixoKX1uKGIubmV4dCgpKX0pfTskanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3JGdW5jdGlvbj1mdW5jdGlvbihiKXtyZXR1cm4gJGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yKGIoKSl9OyRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvclByb2dyYW09ZnVuY3Rpb24oYil7cmV0dXJuICRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvcihuZXcgJGpzY29tcC5nZW5lcmF0b3IuR2VuZXJhdG9yXyhuZXcgJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXyhiKSkpfTsKY29uc3QgTGVhZD1mdW5jdGlvbihiKXtjb25zdCBhPU9iamVjdC5hc3NpZ24oe30sYiksYz1hLmxlYWRJZHx8YS5uYW1lO2I9YS5sZWFkTm9kZTtjb25zdCBlPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmb3JtIitjKTtsZXQgaD0hMSxuPWUucXVlcnlTZWxlY3RvcigiLmxlYWRFbWFpbCBbZGF0YS1zdWJqZWN0XSIpLmlubmVyVGV4dCxwPWUucXVlcnlTZWxlY3RvcigiLmxlYWRFbWFpbCBbZGF0YS1ib2R5XSIpLmlubmVySFRNTCx5PWEudHJpZ2dlcixtPXt9O2NvbnN0IHo9KCk9PntBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGUuZWxlbWVudHMsZD0+e2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgZC5hdHRyaWJ1dGVzLm5hbWUpe3ZhciBmPWQuYXR0cmlidXRlcy5uYW1lLnZhbHVlfHwhMTtzd2l0Y2goITApe2Nhc2UgWyJuYW1lIl0uaW5jbHVkZXMoZi50b0xvd2VyQ2FzZSgpKTpjYXNlIFsiZmlyc3RuYW1lIl0uaW5jbHVkZXMoZi50b0xvd2VyQ2FzZSgpKTpjYXNlIFsibGFzdG5hbWUiXS5pbmNsdWRlcyhmLnRvTG93ZXJDYXNlKCkpOmNhc2UgImVtYWlsIj09CmYudG9Mb3dlckNhc2UoKTpjYXNlICJkYXRhIj09ZjpicmVhaztjYXNlICJwaG9uZSI9PWYudG9Mb3dlckNhc2UoKTpjYXNlICJ0ZWwiPT1kLnR5cGU6SU1hc2soZCx7bWFzazpbe21hc2s6IjAwMCAwMDAtMDAwMCJ9LHttYXNrOiIxIDAwMCAwMDAtMDAwMCJ9XX0pfX19KTsidW5kZWZpbmVkIiE9PXR5cGVvZiBjbGllbnRTdG9yYWdlJiZBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGUuZWxlbWVudHMsZD0+e2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgZC5hdHRyaWJ1dGVzLm5hbWUpe3ZhciBmPWQuYXR0cmlidXRlcy5uYW1lLnZhbHVlfHwhMTtzd2l0Y2goITApe2Nhc2UgWyJuYW1lIl0uaW5jbHVkZXMoZi50b0xvd2VyQ2FzZSgpKTp2YXIgZztmPW51bGwhPShnPWNsaWVudFN0b3JhZ2UuZ2V0KCJmaXJzdG5hbWUiKSk\/ZzoiIjt2YXIgaztnPW51bGwhPShrPWNsaWVudFN0b3JhZ2UuZ2V0KCJsYXN0bmFtZSIpKT9rOiIiO2s9ZisoIiIhPWc\/IiAiK2NsaWVudFN0b3JhZ2UuZ2V0KCJsYXN0bmFtZSIpOgoiIik7ZC52YWx1ZT1rO2JyZWFrO2Nhc2UgWyJmaXJzdG5hbWUiXS5pbmNsdWRlcyhmLnRvTG93ZXJDYXNlKCkpOmxldCBsO2QudmFsdWU9bnVsbCE9KGw9Y2xpZW50U3RvcmFnZS5nZXQoImZpcnN0bmFtZSIpKT9sOiIiO2JyZWFrO2Nhc2UgWyJsYXN0bmFtZSJdLmluY2x1ZGVzKGYudG9Mb3dlckNhc2UoKSk6bGV0IHI7ZC52YWx1ZT1udWxsIT0ocj1jbGllbnRTdG9yYWdlLmdldCgibGFzdG5hbWUiKSk\/cjoiIjticmVhaztjYXNlICJlbWFpbCI9PWYudG9Mb3dlckNhc2UoKTpsZXQgdjtkLnZhbHVlPW51bGwhPSh2PWNsaWVudFN0b3JhZ2UuZ2V0KCJlbWFpbCIpKT92OiIiO2JyZWFrO2Nhc2UgInBob25lIj09Zi50b0xvd2VyQ2FzZSgpOmxldCB3O2QudmFsdWU9bnVsbCE9KHc9Y2xpZW50U3RvcmFnZS5nZXQoInBob25lIikpP3c6IiJ9fX0pfSxEPSgpPT57aWYoaClyZXR1cm4hMTtoPSEwO0EoKS50aGVuKGQ9PntpZighZClyZXR1cm4gdCgicG9wdXAudmFsaWRhdGlvbkZhaWxlZCIpLApoPSExO2EudmFsaWRhdGVkPSEwO0IoKTtDKCl9KX0sQj0oKT0+e0FycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZS5lbGVtZW50cyxkPT57aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBkLmF0dHJpYnV0ZXMubmFtZSl7dmFyIGY9ZC5hdHRyaWJ1dGVzLm5hbWUudmFsdWV8fCExO2lmKGYpc3dpdGNoKG1bZl09ZC52YWx1ZSwhMCl7Y2FzZSBbIm5hbWUiXS5pbmNsdWRlcyhmLnRvTG93ZXJDYXNlKCkpOmQ9ZC52YWx1ZS5zcGxpdCgiICIpO20udXNlckZpcnN0TmFtZSs9ZC5zaGlmdCgpO20udXNlckxhc3ROYW1lKz1kLmpvaW4oIiAiKTticmVhaztjYXNlIFsiZmlyc3RuYW1lIl0uaW5jbHVkZXMoZi50b0xvd2VyQ2FzZSgpKTptLnVzZXJGaXJzdE5hbWUrPWQudmFsdWU7YnJlYWs7Y2FzZSBbImxhc3RuYW1lIl0uaW5jbHVkZXMoZi50b0xvd2VyQ2FzZSgpKTptLnVzZXJMYXN0TmFtZSs9ZC52YWx1ZTticmVhaztjYXNlICJlbWFpbCI9PWYudG9Mb3dlckNhc2UoKTptLnVzZXJFbWFpbD0KZC52YWx1ZTticmVhaztjYXNlICJwaG9uZSI9PWYudG9Mb3dlckNhc2UoKTpjYXNlICJ0ZWwiPT1kLnR5cGU6SU1hc2soZCx7bWFzazpbe21hc2s6IjAwMCAwMDAtMDAwMCJ9LHttYXNrOiIxIDAwMCAwMDAtMDAwMCJ9XX0pO20udXNlclBob25lPWQudmFsdWU7YnJlYWs7Y2FzZSAiZGF0YSI9PWY6Zm9yKGxldCBnIGluIGQuZGF0YXNldCltW2cucmVwbGFjZSgvLS4vZyxrPT5rWzFdLnRvVXBwZXJDYXNlKCkpXT1kLmRhdGFzZXRbZ119fX0pfSxDPSgpPT57aWYoITE9PT1hLm9uQmVmb3JlU3VibWl0KGEpKXJldHVybiBhLmNsb3NlT25TdWJtaXQmJnEoKSwhMTtpZihDb29raWVzLmdldChhLmxlYWRJZCkpcmV0dXJuIGg9ITEseCghMCksITE7RSgpO3QoInBvcHVwLnN1Ym1pdCIpO3ZhciBkO2lmKCJEaWdpdGFsUmV0YWlsIj09KG51bGw9PShkPW0pP3ZvaWQgMDpkLmludm9rZXIpKXtkPWNsaWVudFN0b3JhZ2UuZ2V0KCJjbGllbnRTdG9yYWdlIil8fHt9O3ZhciBmO2xldCBrO20ubGVhZEludm9rZXJTSUQ9CkYoKG51bGw9PWQ\/dm9pZCAwOm51bGw9PShmPWQuY29udGFjdCk\/dm9pZCAwOmYuZW1haWwpKyhudWxsPT1kP3ZvaWQgMDpudWxsPT0oaz1kLmNvbnRhY3QpP3ZvaWQgMDprLnBob25lKSk7ZW1haWxIYW5kbGVyLmxlYWRJbnZva2VyPSJEaWdpdGFsUmV0YWlsIjtlbWFpbEhhbmRsZXIuZGlnaXRhbFJldGFpbFNJRD1tLmxlYWRJbnZva2VyU0lEfWVtYWlsSGFuZGxlci5ib2R5PUcoKTtlbWFpbEhhbmRsZXIuc3ViamVjdD1uO09iamVjdC5hc3NpZ24oZW1haWxIYW5kbGVyLG0pOyJzdHJpbmciPT10eXBlb2YgZW1haWxIYW5kbGVyLnVzZXJOYW1lJiYoZj1lbWFpbEhhbmRsZXIudXNlck5hbWUuc3BsaXQoIiAiKSxlbWFpbEhhbmRsZXIudXNlckZpcnN0TmFtZT1mLnNoaWZ0KCksZW1haWxIYW5kbGVyLnVzZXJMYXN0TmFtZT1mLmpvaW4oIiAiKSk7ZW1haWxIYW5kbGVyLm9uQmVmb3JlU2hvd0NvbnNlbnQ9ZnVuY3Rpb24oKXtlbWFpbEhhbmRsZXIub25CZWZvcmVTaG93Q29uc2VudD0hMX07CmVtYWlsSGFuZGxlci5vbkFmdGVyQ29uc2VudD1mdW5jdGlvbihrKXtlbWFpbEhhbmRsZXIub25CZWZvcmVTaG93Q29uc2VudD0hMTtlbWFpbEhhbmRsZXIub25BZnRlckNvbnNlbnQ9ITF9O2VtYWlsSGFuZGxlci5vbkR1cGxpY2F0ZVNlbmQ9ZnVuY3Rpb24oKXtlbWFpbEhhbmRsZXIucmVzZXRDYWxsYmFja3MoKX07ZW1haWxIYW5kbGVyLmNhbGxiYWNrPWZ1bmN0aW9uKGspe3ZhciBsPSExO2Euc2hvd0VtYWlsQ29uZmlybWF0aW9uJiYobD1nZXRNYWlsU2VudEhhbmRsZXIoIl8iK2EubmFtZSksbC50aW1lb3V0Q2FsbGJhY2s9ZnVuY3Rpb24oKXtlLnJlc2V0KCl9KTtpZihrKXQoInBvcHVwLmxlYWRfc2VudCIpLCJmdW5jdGlvbiI9PXR5cGVvZiBvcmlnaW5hbENhbGxiYWNrJiZvcmlnaW5hbENhbGxiYWNrLmNhbGwoKSwib25TdWJtaXQiPT1hLmNvb2tpZUNyZWF0ZSYmQ29va2llcy5zZXQoYS5jb29raWVOYW1lLCIxIixhLmNvb2tpZUR1cmF0aW9uLCIvIiksYS5zdWJtaXRGbGFnJiYKQ29va2llcy5zZXQoInBvcHVwRm9ybUZpbGxlZCIsIjEiLDEsIi8iKSxhLmNsb3NlT25TdWJtaXQmJnEoIkNPTlNFTlQiKSxsP2wuc2hvd1N1Y2Nlc3MoKTowPCQoYGZvcm0jZm9ybSR7YS5uYW1lfV9jb25maXJtYCkubGVuZ3RoJiYkKGBmb3JtI2Zvcm0ke2EubmFtZX1fY29uZmlybWApLnRyaWdnZXIoInN1Ym1pdCIpO2Vsc2V7bHx8KGw9Z2V0TWFpbFNlbnRIYW5kbGVyKCkpO3RyeXtsLnNob3dGYWlsKCl9Y2F0Y2gocil7fX14KGspO3UoKTtzZXRUaW1lb3V0KGVtYWlsSGFuZGxlci5yZXNldENhbGxiYWNrcygpLDFFMyk7ayYmQ29va2llcy5zZXQoYS5sZWFkSWQsIjEiLDEsIi8iKX07YS5zdWJtaXR0ZWQ9ITA7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGEub25CZWZvcmVTZW5kTWFpbCYmMD09YS5vbkJlZm9yZVNlbmRNYWlsLmNhbGwoKSlyZXR1cm4hMTtsZXQgZz17fTsiZnVuY3Rpb24iPT10eXBlb2YgYS5vbkFERiYmKGc9YS5vbkFERi5jYWxsKCkpOyJtYWtlIG1vZGVsIHllYXIgc3RvY2tOdW1iZXIgdHJpbSB2aW4gcHJpY2UgY2FyaWQiLnNwbGl0KCIgIikuZm9yRWFjaChrPT4Ke2VtYWlsSGFuZGxlcltrXT1nW2tdfHxlbWFpbEhhbmRsZXJba119KTthLnB1cmNoYXNlSW50ZW50UG9wdXB8fGVtYWlsSGFuZGxlci5zZW5kTWFpbChhLmJ5cGFzc0NvbnNlbnQpO3JldHVybiEwfSx1PSgpPT57bT17dXNlckZpcnN0TmFtZToiIix1c2VyTGFzdE5hbWU6IiIsdXNlckVtYWlsOiIiLHVzZXJQaG9uZToiIn07aD0hMX0sQT1mdW5jdGlvbigpe3JldHVybiAkanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3JGdW5jdGlvbihmdW5jdGlvbiooKXtpZihhLnNraXBWYWxpZGF0aW9uKXJldHVybiEwO2NvbnN0IGQ9bmV3IFByaXN0aW5lKGUse2NsYXNzVG86ImZvcm0tbGFiZWwiLGVycm9yQ2xhc3M6ImludmFsaWQifSwhMSk7bGV0IGY9ZS5xdWVyeVNlbGVjdG9yKCdbbmFtZT0icGhvbmVudW0iXScpLGc9ITAsaz0hMDtpZihmLnJlcXVpcmVkfHxmLnZhbHVlKWc9bnVsbCxnPXlpZWxkIEgoZi52YWx1ZSk7bnVsbD09PWc\/KGQuYWRkVmFsaWRhdG9yKGYsZnVuY3Rpb24obCl7bD0KbC5yZXBsYWNlKC9bXjAtOV0rL2dpLCIiKTsiMSI9PWxbMF0mJihsPWwuc3Vic3RyaW5nKDEpKTtsPXBhcnNlSW50KGwuc3Vic3RyaW5nKDAsMykpO3JldHVybiBnPVs0MzgsNTE0LDI2Myw0NTAsNTc5LDgxOSwyNDksNzA1LDIyNiw1MTksMjg5LDM2NSw5MDUsNDE2LDQzNyw2NDcsMzQzLDYxMyw3MDksODczLDQxOCw1ODEsNTA2LDkwMl0uaW5jbHVkZXMobCl9LCJFbnRlciBhIHZhbGlkIHBob25lIG51bWJlciIsNSwhMSksaz1kLnZhbGlkYXRlKCkpOihrPWQudmFsaWRhdGUoKSYmZyxmLnBhcmVudEVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgiaW52YWxpZCIsIWcpKTtmLnJlcXVpcmVkJiYhZyYmInVuZGVmaW5lZCIhPXR5cGVvZiBlbWFpbEhhbmRsZXImJihlbWFpbEhhbmRsZXIucGhvbmVWYWxpZGF0aW9uQXR0ZW1wdHMrKyxlbWFpbEhhbmRsZXIucGhvbmVNYW5kYXRvcnk9ITApO3JldHVybiBrfSl9LEg9ZD0+JGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yRnVuY3Rpb24oZnVuY3Rpb24qKCl7bGV0IGY9Cm51bGw7ZD1kLnJlcGxhY2UoL1teMC05XSsvZ2ksIiIpO3lpZWxkIGF4aW9zLmdldCgiL3Byb3h5X3JkMmMvc2l0ZXMvc3ZjL3ZhbGlkYXRlUGhvbmVOdW1iZXIucGhwIix7dGltZW91dDoyRTMsZGF0YVR5cGU6Impzb24iLHBhcmFtczp7cGhvbmU6ZH0scmVzcG9uc2VUeXBlOiJqc29uIn0pLnRoZW4oZnVuY3Rpb24oZyl7InVuZGVmaW5lZCIhPT10eXBlb2YgZy5kYXRhLmlzT2smJihmPWcuZGF0YS5waG9uZU51bWJlcklzVmFsaWQpfSkuY2F0Y2goZnVuY3Rpb24oZyl7fSk7cmV0dXJuIGZ9KSxFPSgpPT57Y29uc3QgZD1kb2N1bWVudC5mb3Jtcy5lbWFpbG1zZ2ZybXx8ITE7aWYoIWQpcmV0dXJuITE7ZC5xdWVyeVNlbGVjdG9yKCdbbmFtZT0ibGFiZWwiJykudmFsdWU9YCR7YS50eXBlfSAoJHttLmNvbmRpdGlvbn0pYDtkLnF1ZXJ5U2VsZWN0b3IoJ1tuYW1lPSJzZWN0aW9uIicpLnZhbHVlPW0uY29uZGl0aW9ufSxHPWZ1bmN0aW9uKCl7bGV0IGQ9cCxmPXtuYW1lOlsiTU5BTUUiXSwKcGhvbmVudW06WyJNUEhPTkUiLCJQSE9ORSJdLGVtYWlsOlsiTU1BSUwiXX07T2JqZWN0LmtleXMobSkuZm9yRWFjaChnPT57dmFyIGs9bmV3IFJlZ0V4cCgie1xcJCIrZy50b1VwcGVyQ2FzZSgpKyJ9IiwiZyIpO2Q9ZC5yZXBsYWNlKGssbVtnXSk7ZltnXSYmKGs9bmV3IFJlZ0V4cCgie1xcJCgiK2ZbZ10uam9pbigifCIpKyIpfSIsImciKSxkPWQucmVwbGFjZShrLG1bZ10pKX0pO3JldHVybiBkfSx0PWZ1bmN0aW9uKGQpe3ZhciBmPWEudHlwZTtpZighZClyZXR1cm4hMTtpZigicG9wdXAubGVhZF9zZW50Ij09ZCl7dmFyIGc9ImNsaWNrIi5yZXBsYWNlKC8oXlthLXpdezF9KS9nLGZ1bmN0aW9uKGwpe3JldHVybiBsLnRvVXBwZXJDYXNlKCl9KSxrPWQyY21lZGlhLnBhZ2VEZXBhcnRtZW50KCk7Z2FUcmFjaygiYy5fdHJhY2tFdmVudCIsIlBvcHVwLWxlYWRzIixnLGssMSl9InVuZGVmaW5lZCIhPXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZyYmInVuZGVmaW5lZCIhPXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50PwooInVuZGVmaW5lZCIhPT10eXBlb2YgZGVidWcmJmRlYnVnKCJMb2cgRXZlbnQiLGQsZixzZWxmKSxhY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50KGQsZikpOiJ1bmRlZmluZWQiIT09dHlwZW9mIGRlYnVnJiZkZWJ1ZygiIVVOTE9HR0VEIEVWRU5UISIsZCxmKX0scT0oKT0+e2Eub25CZWZvcmVDbG9zZShhKTt1KCk7TW9kYWxzW2NdJiZNb2RhbHNbY10uY2xvc2UoKX0seD1kPT57YS5vbkFmdGVyU3VibWl0KGEsZCk7YS5jbG9zZU9uU3VibWl0JiZkJiZxKCk7ZCYmZS5yZXNldCgpfSxGPWQ9PntsZXQgZj0wO2lmKDA9PWQubGVuZ3RoKXJldHVybiBmO2ZvcihsZXQgZz0wLGs9ZC5sZW5ndGg7ZzxrO2crKyl7bGV0IGw9ZC5jaGFyQ29kZUF0KGcpO2Y9KGY8PDUpLWYrbDtmfD0wfXJldHVybiBNYXRoLmFicyhmKX07KCgpPT57JChlKS50cmlnZ2VyKCJwb3B1cGl6ZXIub25PcGVuIiwkKGUpKTt1KCk7eigpO2Uub25zdWJtaXQ9ZD0+e2QucHJldmVudERlZmF1bHQoKTsKRCgpfTthLm9uQmVmb3JlT3BlbihhKX0pKCk7cmV0dXJue2xlYWRJZDpjLGxlYWROb2RlOmIsdHJpZ2dlcjp5LGRpc3BsYXk6KCk9PnthLmRpc3BsYXk\/YS5kaXNwbGF5KGEpOihhLmNvbnRlbnRTcmM9YGxlYWQke2N9YCxNb2RhbHNbY118fChNb2RhbHNbY109bmV3IE1vZGFsKGMsYSkpLE1vZGFsc1tjXS5kaXNwbGF5KCkpfSxjbG9zZTpxfX0sTGVhZEhhbmRsZXI9ZnVuY3Rpb24oKXtjb25zdCBiPXtvbkJlZm9yZU9wZW46KCk9Pnt9LG9uQmVmb3JlVmFsaWRhdGlvbjooKT0+e30sb25CZWZvcmVTdWJtaXQ6KCk9Pnt9LG9uQWZ0ZXJTdWJtaXQ6KCk9Pnt9LG9uQmVmb3JlQ2FuY2VsOigpPT57fSxvbkJlZm9yZUNsb3NlOigpPT57fSxvbkNsb3NlOigpPT57fSxmb3JtOntlbWFpbGlkOm51bGwsb2ZmZXJ0eXBlOm51bGwsbmFtZTpudWxsLHNlbmRUbzpudWxsLHNlbmRUb0FERjpudWxsLE9LQnV0dG9uQ2xhc3M6InN1Ym1pdEJ0biIsQ2FuY2VsQnV0dG9uQ2xhc3M6ImNhbmNlbEJ0biIsCnNob3dFbWFpbENvbmZpcm1hdGlvbjohMSxmcm9tQUE6ITF9LGdldElkU3VmZml4OmE9Pk1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpEYXRlLm5vdygpKSxtb2RlOiJzdGF0aWMiLHRyaWdnZXI6ImF1dG8iLGRlbGF5OiExLGRpc3BsYXk6ITEsc3VibWl0dGVkOiExLGNsb3NlT25TdWJtaXQ6ITAsc3VibWl0RmxhZzohMSxieXBhc3NDb25zZW50OiExLHNob3dFbWFpbENvbmZpcm1hdGlvbjohMCxwdXJjaGFzZUludGVudFBvcHVwOiExfTtpbml0PSgpPT57InVuZGVmaW5lZCIhPT10eXBlb2Ygd2luZG93LkFic3RyYWN0VXNlZFNycE9iamVjdCYmKG5ldyBBYnN0cmFjdFVzZWRTcnBPYmplY3Qoe25hbWU6IlZpZXdEaXNjb3ZlckJ0bkhhbmRsZXIifSkpLmFkZFVzZWRTcnBFdmVudE9ic2VydmVyKCJjb250ZW50IixhZGRMZWFkRXZlbnRzKS5pbml0VXNlZFNycE9ic2VydmVyKCk7YWRkTGVhZEV2ZW50cygpfTthZGRMZWFkRXZlbnRzPSgpPT57ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtbGVhZC10cmlnZ2VyXSIpLmZvckVhY2goYT0+Cnt0aGlzLmluaXRMZWFkVHJpZ2dlcihhKX0pfTt0aGlzLmluaXRMZWFkVHJpZ2dlcj1hPT57YS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsYz0+e2Muc3RvcFByb3BhZ2F0aW9uKCk7Yz1hLmRhdGFzZXQubGVhZFRyaWdnZXI7bGV0IGU9YS5kYXRhc2V0LmxlYWRpZHx8ITE7TGVhZENvbmZpZ3NbY10udHJpZ2dlcj1hO2M9dGhpcy5nZXRMZWFkKGMsZSk7Yy5kaXNwbGF5KCk7YS5kYXRhc2V0LmxlYWRpZD1jLmxlYWRJZH0pfTt0aGlzLmdldExlYWQ9KGEsYyk9PntpZighKGM9TGVhZHNbY3x8YV0pKXt7Yz1hO2xldCBlPU9iamVjdC5hc3NpZ24oe30sYik7T2JqZWN0LmFzc2lnbihlLExlYWRDb25maWdzW2FdKTtjb25zdCBoPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGBsZWFkJHthfWApO2g\/KGE9aCwic3RhdGljIiE9ZS5tb2RlJiYoYz1gJHtlLm5hbWV9XyR7ZS5nZXRJZFN1ZmZpeChlKX1gLGE9aC5jbG9uZU5vZGUoITApLGEuc2V0QXR0cmlidXRlKCJpZCIsImxlYWQiK2MpLGEucXVlcnlTZWxlY3RvcigiZm9ybSIpLnNldEF0dHJpYnV0ZSgiaWQiLAoiZm9ybSIrYyksZG9jdW1lbnQuYm9keS5hcHBlbmQoYSkpLGUubGVhZElkPWMsZS5sZWFkTm9kZT1hLExlYWRzW2NdPW5ldyBMZWFkKGUpLGM9TGVhZHNbY10pOmM9ITF9fXJldHVybiBjfTtyZXR1cm57aW5pdCxpbml0TGVhZFRyaWdnZXIsZ2V0TGVhZH19O3ZhciBMZWFkcz1MZWFkc3x8e307ZG9jUmVhZHlBcnIucHVzaChMZWFkSGFuZGxlcigpLmluaXQpOwovKiogL20vanMvdmFuaWxsYWpzL2F4aW9zLm1pbi5qcyAqKi8KIWZ1bmN0aW9uKGUsdCl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz10KCk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoW10sdCk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP2V4cG9ydHMuYXhpb3M9dCgpOmUuYXhpb3M9dCgpfSh0aGlzLChmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgdD17fTtmdW5jdGlvbiBuKHIpe2lmKHRbcl0pcmV0dXJuIHRbcl0uZXhwb3J0czt2YXIgbz10W3JdPXtpOnIsbDohMSxleHBvcnRzOnt9fTtyZXR1cm4gZVtyXS5jYWxsKG8uZXhwb3J0cyxvLG8uZXhwb3J0cyxuKSxvLmw9ITAsby5leHBvcnRzfXJldHVybiBuLm09ZSxuLmM9dCxuLmQ9ZnVuY3Rpb24oZSx0LHIpe24ubyhlLHQpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHtlbnVtZXJhYmxlOiEwLGdldDpyfSl9LG4ucj1mdW5jdGlvbihlKXsidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLnRvU3RyaW5nVGFnJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSxuLnQ9ZnVuY3Rpb24oZSx0KXtpZigxJnQmJihlPW4oZSkpLDgmdClyZXR1cm4gZTtpZig0JnQmJiJvYmplY3QiPT10eXBlb2YgZSYmZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciByPU9iamVjdC5jcmVhdGUobnVsbCk7aWYobi5yKHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyLCJkZWZhdWx0Iix7ZW51bWVyYWJsZTohMCx2YWx1ZTplfSksMiZ0JiYic3RyaW5nIiE9dHlwZW9mIGUpZm9yKHZhciBvIGluIGUpbi5kKHIsbyxmdW5jdGlvbih0KXtyZXR1cm4gZVt0XX0uYmluZChudWxsLG8pKTtyZXR1cm4gcn0sbi5uPWZ1bmN0aW9uKGUpe3ZhciB0PWUmJmUuX19lc01vZHVsZT9mdW5jdGlvbigpe3JldHVybiBlLmRlZmF1bHR9OmZ1bmN0aW9uKCl7cmV0dXJuIGV9O3JldHVybiBuLmQodCwiYSIsdCksdH0sbi5vPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpfSxuLnA9IiIsbihuLnM9MTEpfShbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDMpLG89T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztmdW5jdGlvbiBpKGUpe3JldHVybiJbb2JqZWN0IEFycmF5XSI9PT1vLmNhbGwoZSl9ZnVuY3Rpb24gcyhlKXtyZXR1cm4gdm9pZCAwPT09ZX1mdW5jdGlvbiBhKGUpe3JldHVybiBudWxsIT09ZSYmIm9iamVjdCI9PXR5cGVvZiBlfWZ1bmN0aW9uIHUoZSl7aWYoIltvYmplY3QgT2JqZWN0XSIhPT1vLmNhbGwoZSkpcmV0dXJuITE7dmFyIHQ9T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpO3JldHVybiBudWxsPT09dHx8dD09PU9iamVjdC5wcm90b3R5cGV9ZnVuY3Rpb24gYyhlKXtyZXR1cm4iW29iamVjdCBGdW5jdGlvbl0iPT09by5jYWxsKGUpfWZ1bmN0aW9uIGYoZSx0KXtpZihudWxsIT1lKWlmKCJvYmplY3QiIT10eXBlb2YgZSYmKGU9W2VdKSxpKGUpKWZvcih2YXIgbj0wLHI9ZS5sZW5ndGg7bjxyO24rKyl0LmNhbGwobnVsbCxlW25dLG4sZSk7ZWxzZSBmb3IodmFyIG8gaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxvKSYmdC5jYWxsKG51bGwsZVtvXSxvLGUpfWUuZXhwb3J0cz17aXNBcnJheTppLGlzQXJyYXlCdWZmZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgQXJyYXlCdWZmZXJdIj09PW8uY2FsbChlKX0saXNCdWZmZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPT1lJiYhcyhlKSYmbnVsbCE9PWUuY29uc3RydWN0b3ImJiFzKGUuY29uc3RydWN0b3IpJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5jb25zdHJ1Y3Rvci5pc0J1ZmZlciYmZS5jb25zdHJ1Y3Rvci5pc0J1ZmZlcihlKX0saXNGb3JtRGF0YTpmdW5jdGlvbihlKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIEZvcm1EYXRhJiZlIGluc3RhbmNlb2YgRm9ybURhdGF9LGlzQXJyYXlCdWZmZXJWaWV3OmZ1bmN0aW9uKGUpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgQXJyYXlCdWZmZXImJkFycmF5QnVmZmVyLmlzVmlldz9BcnJheUJ1ZmZlci5pc1ZpZXcoZSk6ZSYmZS5idWZmZXImJmUuYnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXJ9LGlzU3RyaW5nOmZ1bmN0aW9uKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZX0saXNOdW1iZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBlfSxpc09iamVjdDphLGlzUGxhaW5PYmplY3Q6dSxpc1VuZGVmaW5lZDpzLGlzRGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBEYXRlXSI9PT1vLmNhbGwoZSl9LGlzRmlsZTpmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBGaWxlXSI9PT1vLmNhbGwoZSl9LGlzQmxvYjpmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBCbG9iXSI9PT1vLmNhbGwoZSl9LGlzRnVuY3Rpb246Yyxpc1N0cmVhbTpmdW5jdGlvbihlKXtyZXR1cm4gYShlKSYmYyhlLnBpcGUpfSxpc1VSTFNlYXJjaFBhcmFtczpmdW5jdGlvbihlKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIFVSTFNlYXJjaFBhcmFtcyYmZSBpbnN0YW5jZW9mIFVSTFNlYXJjaFBhcmFtc30saXNTdGFuZGFyZEJyb3dzZXJFbnY6ZnVuY3Rpb24oKXtyZXR1cm4oInVuZGVmaW5lZCI9PXR5cGVvZiBuYXZpZ2F0b3J8fCJSZWFjdE5hdGl2ZSIhPT1uYXZpZ2F0b3IucHJvZHVjdCYmIk5hdGl2ZVNjcmlwdCIhPT1uYXZpZ2F0b3IucHJvZHVjdCYmIk5TIiE9PW5hdmlnYXRvci5wcm9kdWN0KSYmKCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiYidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50KX0sZm9yRWFjaDpmLG1lcmdlOmZ1bmN0aW9uIGUoKXt2YXIgdD17fTtmdW5jdGlvbiBuKG4scil7dSh0W3JdKSYmdShuKT90W3JdPWUodFtyXSxuKTp1KG4pP3Rbcl09ZSh7fSxuKTppKG4pP3Rbcl09bi5zbGljZSgpOnRbcl09bn1mb3IodmFyIHI9MCxvPWFyZ3VtZW50cy5sZW5ndGg7cjxvO3IrKylmKGFyZ3VtZW50c1tyXSxuKTtyZXR1cm4gdH0sZXh0ZW5kOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZih0LChmdW5jdGlvbih0LG8pe2Vbb109biYmImZ1bmN0aW9uIj09dHlwZW9mIHQ\/cih0LG4pOnR9KSksZX0sdHJpbTpmdW5jdGlvbihlKXtyZXR1cm4gZS50cmltP2UudHJpbSgpOmUucmVwbGFjZSgvXlxzK3xccyskL2csIiIpfSxzdHJpcEJPTTpmdW5jdGlvbihlKXtyZXR1cm4gNjUyNzk9PT1lLmNoYXJDb2RlQXQoMCkmJihlPWUuc2xpY2UoMSkpLGV9fX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDApLG89bigxNyksaT1uKDUpLHM9eyJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQifTtmdW5jdGlvbiBhKGUsdCl7IXIuaXNVbmRlZmluZWQoZSkmJnIuaXNVbmRlZmluZWQoZVsiQ29udGVudC1UeXBlIl0pJiYoZVsiQ29udGVudC1UeXBlIl09dCl9dmFyIHUsYz17dHJhbnNpdGlvbmFsOntzaWxlbnRKU09OUGFyc2luZzohMCxmb3JjZWRKU09OUGFyc2luZzohMCxjbGFyaWZ5VGltZW91dEVycm9yOiExfSxhZGFwdGVyOigoInVuZGVmaW5lZCIhPXR5cGVvZiBYTUxIdHRwUmVxdWVzdHx8InVuZGVmaW5lZCIhPXR5cGVvZiBwcm9jZXNzJiYiW29iamVjdCBwcm9jZXNzXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocHJvY2VzcykpJiYodT1uKDYpKSx1KSx0cmFuc2Zvcm1SZXF1ZXN0OltmdW5jdGlvbihlLHQpe3JldHVybiBvKHQsIkFjY2VwdCIpLG8odCwiQ29udGVudC1UeXBlIiksci5pc0Zvcm1EYXRhKGUpfHxyLmlzQXJyYXlCdWZmZXIoZSl8fHIuaXNCdWZmZXIoZSl8fHIuaXNTdHJlYW0oZSl8fHIuaXNGaWxlKGUpfHxyLmlzQmxvYihlKT9lOnIuaXNBcnJheUJ1ZmZlclZpZXcoZSk\/ZS5idWZmZXI6ci5pc1VSTFNlYXJjaFBhcmFtcyhlKT8oYSh0LCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtOCIpLGUudG9TdHJpbmcoKSk6ci5pc09iamVjdChlKXx8dCYmImFwcGxpY2F0aW9uL2pzb24iPT09dFsiQ29udGVudC1UeXBlIl0\/KGEodCwiYXBwbGljYXRpb24vanNvbiIpLGZ1bmN0aW9uKGUsdCxuKXtpZihyLmlzU3RyaW5nKGUpKXRyeXtyZXR1cm4odHx8SlNPTi5wYXJzZSkoZSksci50cmltKGUpfWNhdGNoKGUpe2lmKCJTeW50YXhFcnJvciIhPT1lLm5hbWUpdGhyb3cgZX1yZXR1cm4obnx8SlNPTi5zdHJpbmdpZnkpKGUpfShlKSk6ZX1dLHRyYW5zZm9ybVJlc3BvbnNlOltmdW5jdGlvbihlKXt2YXIgdD10aGlzLnRyYW5zaXRpb25hbHx8Yy50cmFuc2l0aW9uYWwsbj10JiZ0LnNpbGVudEpTT05QYXJzaW5nLG89dCYmdC5mb3JjZWRKU09OUGFyc2luZyxzPSFuJiYianNvbiI9PT10aGlzLnJlc3BvbnNlVHlwZTtpZihzfHxvJiZyLmlzU3RyaW5nKGUpJiZlLmxlbmd0aCl0cnl7cmV0dXJuIEpTT04ucGFyc2UoZSl9Y2F0Y2goZSl7aWYocyl7aWYoIlN5bnRheEVycm9yIj09PWUubmFtZSl0aHJvdyBpKGUsdGhpcywiRV9KU09OX1BBUlNFIik7dGhyb3cgZX19cmV0dXJuIGV9XSx0aW1lb3V0OjAseHNyZkNvb2tpZU5hbWU6IlhTUkYtVE9LRU4iLHhzcmZIZWFkZXJOYW1lOiJYLVhTUkYtVE9LRU4iLG1heENvbnRlbnRMZW5ndGg6LTEsbWF4Qm9keUxlbmd0aDotMSx2YWxpZGF0ZVN0YXR1czpmdW5jdGlvbihlKXtyZXR1cm4gZT49MjAwJiZlPDMwMH0saGVhZGVyczp7Y29tbW9uOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKiJ9fX07ci5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCJdLChmdW5jdGlvbihlKXtjLmhlYWRlcnNbZV09e319KSksci5mb3JFYWNoKFsicG9zdCIsInB1dCIsInBhdGNoIl0sKGZ1bmN0aW9uKGUpe2MuaGVhZGVyc1tlXT1yLm1lcmdlKHMpfSkpLGUuZXhwb3J0cz1jfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dGhpcy5tZXNzYWdlPWV9ci5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iQ2FuY2VsIisodGhpcy5tZXNzYWdlPyI6ICIrdGhpcy5tZXNzYWdlOiIiKX0sci5wcm90b3R5cGUuX19DQU5DRUxfXz0hMCxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIG49bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpLHI9MDtyPG4ubGVuZ3RoO3IrKyluW3JdPWFyZ3VtZW50c1tyXTtyZXR1cm4gZS5hcHBseSh0LG4pfX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigwKTtmdW5jdGlvbiBvKGUpe3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoZSkucmVwbGFjZSgvJTNBL2dpLCI6IikucmVwbGFjZSgvJTI0L2csIiQiKS5yZXBsYWNlKC8lMkMvZ2ksIiwiKS5yZXBsYWNlKC8lMjAvZywiKyIpLnJlcGxhY2UoLyU1Qi9naSwiWyIpLnJlcGxhY2UoLyU1RC9naSwiXSIpfWUuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7aWYoIXQpcmV0dXJuIGU7dmFyIGk7aWYobilpPW4odCk7ZWxzZSBpZihyLmlzVVJMU2VhcmNoUGFyYW1zKHQpKWk9dC50b1N0cmluZygpO2Vsc2V7dmFyIHM9W107ci5mb3JFYWNoKHQsKGZ1bmN0aW9uKGUsdCl7bnVsbCE9ZSYmKHIuaXNBcnJheShlKT90Kz0iW10iOmU9W2VdLHIuZm9yRWFjaChlLChmdW5jdGlvbihlKXtyLmlzRGF0ZShlKT9lPWUudG9JU09TdHJpbmcoKTpyLmlzT2JqZWN0KGUpJiYoZT1KU09OLnN0cmluZ2lmeShlKSkscy5wdXNoKG8odCkrIj0iK28oZSkpfSkpKX0pKSxpPXMuam9pbigiJiIpfWlmKGkpe3ZhciBhPWUuaW5kZXhPZigiIyIpOy0xIT09YSYmKGU9ZS5zbGljZSgwLGEpKSxlKz0oLTE9PT1lLmluZGV4T2YoIj8iKT8iPyI6IiYiKStpfXJldHVybiBlfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4scixvKXtyZXR1cm4gZS5jb25maWc9dCxuJiYoZS5jb2RlPW4pLGUucmVxdWVzdD1yLGUucmVzcG9uc2U9byxlLmlzQXhpb3NFcnJvcj0hMCxlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybnttZXNzYWdlOnRoaXMubWVzc2FnZSxuYW1lOnRoaXMubmFtZSxkZXNjcmlwdGlvbjp0aGlzLmRlc2NyaXB0aW9uLG51bWJlcjp0aGlzLm51bWJlcixmaWxlTmFtZTp0aGlzLmZpbGVOYW1lLGxpbmVOdW1iZXI6dGhpcy5saW5lTnVtYmVyLGNvbHVtbk51bWJlcjp0aGlzLmNvbHVtbk51bWJlcixzdGFjazp0aGlzLnN0YWNrLGNvbmZpZzp0aGlzLmNvbmZpZyxjb2RlOnRoaXMuY29kZSxzdGF0dXM6dGhpcy5yZXNwb25zZSYmdGhpcy5yZXNwb25zZS5zdGF0dXM\/dGhpcy5yZXNwb25zZS5zdGF0dXM6bnVsbH19LGV9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMCksbz1uKDE4KSxpPW4oMTkpLHM9big0KSxhPW4oMjApLHU9bigyMyksYz1uKDI0KSxmPW4oNyksbD1uKDEpLHA9bigyKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbih0LG4pe3ZhciBkLGg9ZS5kYXRhLG09ZS5oZWFkZXJzLHY9ZS5yZXNwb25zZVR5cGU7ZnVuY3Rpb24geSgpe2UuY2FuY2VsVG9rZW4mJmUuY2FuY2VsVG9rZW4udW5zdWJzY3JpYmUoZCksZS5zaWduYWwmJmUuc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoImFib3J0IixkKX1yLmlzRm9ybURhdGEoaCkmJmRlbGV0ZSBtWyJDb250ZW50LVR5cGUiXTt2YXIgZz1uZXcgWE1MSHR0cFJlcXVlc3Q7aWYoZS5hdXRoKXt2YXIgYj1lLmF1dGgudXNlcm5hbWV8fCIiLHg9ZS5hdXRoLnBhc3N3b3JkP3VuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChlLmF1dGgucGFzc3dvcmQpKToiIjttLkF1dGhvcml6YXRpb249IkJhc2ljICIrYnRvYShiKyI6Iit4KX12YXIgdz1hKGUuYmFzZVVSTCxlLnVybCk7ZnVuY3Rpb24gRSgpe2lmKGcpe3ZhciByPSJnZXRBbGxSZXNwb25zZUhlYWRlcnMiaW4gZz91KGcuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpOm51bGwsaT17ZGF0YTp2JiYidGV4dCIhPT12JiYianNvbiIhPT12P2cucmVzcG9uc2U6Zy5yZXNwb25zZVRleHQsc3RhdHVzOmcuc3RhdHVzLHN0YXR1c1RleHQ6Zy5zdGF0dXNUZXh0LGhlYWRlcnM6cixjb25maWc6ZSxyZXF1ZXN0Omd9O28oKGZ1bmN0aW9uKGUpe3QoZSkseSgpfSksKGZ1bmN0aW9uKGUpe24oZSkseSgpfSksaSksZz1udWxsfX1pZihnLm9wZW4oZS5tZXRob2QudG9VcHBlckNhc2UoKSxzKHcsZS5wYXJhbXMsZS5wYXJhbXNTZXJpYWxpemVyKSwhMCksZy50aW1lb3V0PWUudGltZW91dCwib25sb2FkZW5kImluIGc\/Zy5vbmxvYWRlbmQ9RTpnLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe2cmJjQ9PT1nLnJlYWR5U3RhdGUmJigwIT09Zy5zdGF0dXN8fGcucmVzcG9uc2VVUkwmJjA9PT1nLnJlc3BvbnNlVVJMLmluZGV4T2YoImZpbGU6IikpJiZzZXRUaW1lb3V0KEUpfSxnLm9uYWJvcnQ9ZnVuY3Rpb24oKXtnJiYobihmKCJSZXF1ZXN0IGFib3J0ZWQiLGUsIkVDT05OQUJPUlRFRCIsZykpLGc9bnVsbCl9LGcub25lcnJvcj1mdW5jdGlvbigpe24oZigiTmV0d29yayBFcnJvciIsZSxudWxsLGcpKSxnPW51bGx9LGcub250aW1lb3V0PWZ1bmN0aW9uKCl7dmFyIHQ9ZS50aW1lb3V0PyJ0aW1lb3V0IG9mICIrZS50aW1lb3V0KyJtcyBleGNlZWRlZCI6InRpbWVvdXQgZXhjZWVkZWQiLHI9ZS50cmFuc2l0aW9uYWx8fGwudHJhbnNpdGlvbmFsO2UudGltZW91dEVycm9yTWVzc2FnZSYmKHQ9ZS50aW1lb3V0RXJyb3JNZXNzYWdlKSxuKGYodCxlLHIuY2xhcmlmeVRpbWVvdXRFcnJvcj8iRVRJTUVET1VUIjoiRUNPTk5BQk9SVEVEIixnKSksZz1udWxsfSxyLmlzU3RhbmRhcmRCcm93c2VyRW52KCkpe3ZhciBTPShlLndpdGhDcmVkZW50aWFsc3x8Yyh3KSkmJmUueHNyZkNvb2tpZU5hbWU\/aS5yZWFkKGUueHNyZkNvb2tpZU5hbWUpOnZvaWQgMDtTJiYobVtlLnhzcmZIZWFkZXJOYW1lXT1TKX0ic2V0UmVxdWVzdEhlYWRlciJpbiBnJiZyLmZvckVhY2gobSwoZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT1oJiYiY29udGVudC10eXBlIj09PXQudG9Mb3dlckNhc2UoKT9kZWxldGUgbVt0XTpnLnNldFJlcXVlc3RIZWFkZXIodCxlKX0pKSxyLmlzVW5kZWZpbmVkKGUud2l0aENyZWRlbnRpYWxzKXx8KGcud2l0aENyZWRlbnRpYWxzPSEhZS53aXRoQ3JlZGVudGlhbHMpLHYmJiJqc29uIiE9PXYmJihnLnJlc3BvbnNlVHlwZT1lLnJlc3BvbnNlVHlwZSksImZ1bmN0aW9uIj09dHlwZW9mIGUub25Eb3dubG9hZFByb2dyZXNzJiZnLmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixlLm9uRG93bmxvYWRQcm9ncmVzcyksImZ1bmN0aW9uIj09dHlwZW9mIGUub25VcGxvYWRQcm9ncmVzcyYmZy51cGxvYWQmJmcudXBsb2FkLmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixlLm9uVXBsb2FkUHJvZ3Jlc3MpLChlLmNhbmNlbFRva2VufHxlLnNpZ25hbCkmJihkPWZ1bmN0aW9uKGUpe2cmJihuKCFlfHxlJiZlLnR5cGU\/bmV3IHAoImNhbmNlbGVkIik6ZSksZy5hYm9ydCgpLGc9bnVsbCl9LGUuY2FuY2VsVG9rZW4mJmUuY2FuY2VsVG9rZW4uc3Vic2NyaWJlKGQpLGUuc2lnbmFsJiYoZS5zaWduYWwuYWJvcnRlZD9kKCk6ZS5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcigiYWJvcnQiLGQpKSksaHx8KGg9bnVsbCksZy5zZW5kKGgpfSkpfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDUpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbixvLGkpe3ZhciBzPW5ldyBFcnJvcihlKTtyZXR1cm4gcihzLHQsbixvLGkpfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuISghZXx8IWUuX19DQU5DRUxfXyl9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dD10fHx7fTt2YXIgbj17fTtmdW5jdGlvbiBvKGUsdCl7cmV0dXJuIHIuaXNQbGFpbk9iamVjdChlKSYmci5pc1BsYWluT2JqZWN0KHQpP3IubWVyZ2UoZSx0KTpyLmlzUGxhaW5PYmplY3QodCk\/ci5tZXJnZSh7fSx0KTpyLmlzQXJyYXkodCk\/dC5zbGljZSgpOnR9ZnVuY3Rpb24gaShuKXtyZXR1cm4gci5pc1VuZGVmaW5lZCh0W25dKT9yLmlzVW5kZWZpbmVkKGVbbl0pP3ZvaWQgMDpvKHZvaWQgMCxlW25dKTpvKGVbbl0sdFtuXSl9ZnVuY3Rpb24gcyhlKXtpZighci5pc1VuZGVmaW5lZCh0W2VdKSlyZXR1cm4gbyh2b2lkIDAsdFtlXSl9ZnVuY3Rpb24gYShuKXtyZXR1cm4gci5pc1VuZGVmaW5lZCh0W25dKT9yLmlzVW5kZWZpbmVkKGVbbl0pP3ZvaWQgMDpvKHZvaWQgMCxlW25dKTpvKHZvaWQgMCx0W25dKX1mdW5jdGlvbiB1KG4pe3JldHVybiBuIGluIHQ\/byhlW25dLHRbbl0pOm4gaW4gZT9vKHZvaWQgMCxlW25dKTp2b2lkIDB9dmFyIGM9e3VybDpzLG1ldGhvZDpzLGRhdGE6cyxiYXNlVVJMOmEsdHJhbnNmb3JtUmVxdWVzdDphLHRyYW5zZm9ybVJlc3BvbnNlOmEscGFyYW1zU2VyaWFsaXplcjphLHRpbWVvdXQ6YSx0aW1lb3V0TWVzc2FnZTphLHdpdGhDcmVkZW50aWFsczphLGFkYXB0ZXI6YSxyZXNwb25zZVR5cGU6YSx4c3JmQ29va2llTmFtZTphLHhzcmZIZWFkZXJOYW1lOmEsb25VcGxvYWRQcm9ncmVzczphLG9uRG93bmxvYWRQcm9ncmVzczphLGRlY29tcHJlc3M6YSxtYXhDb250ZW50TGVuZ3RoOmEsbWF4Qm9keUxlbmd0aDphLHRyYW5zcG9ydDphLGh0dHBBZ2VudDphLGh0dHBzQWdlbnQ6YSxjYW5jZWxUb2tlbjphLHNvY2tldFBhdGg6YSxyZXNwb25zZUVuY29kaW5nOmEsdmFsaWRhdGVTdGF0dXM6dX07cmV0dXJuIHIuZm9yRWFjaChPYmplY3Qua2V5cyhlKS5jb25jYXQoT2JqZWN0LmtleXModCkpLChmdW5jdGlvbihlKXt2YXIgdD1jW2VdfHxpLG89dChlKTtyLmlzVW5kZWZpbmVkKG8pJiZ0IT09dXx8KG5bZV09byl9KSksbn19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPXt2ZXJzaW9uOiIwLjI0LjAifX0sZnVuY3Rpb24oZSx0LG4pe2UuZXhwb3J0cz1uKDEyKX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDApLG89bigzKSxpPW4oMTMpLHM9big5KTt2YXIgYT1mdW5jdGlvbiBlKHQpe3ZhciBuPW5ldyBpKHQpLGE9byhpLnByb3RvdHlwZS5yZXF1ZXN0LG4pO3JldHVybiByLmV4dGVuZChhLGkucHJvdG90eXBlLG4pLHIuZXh0ZW5kKGEsbiksYS5jcmVhdGU9ZnVuY3Rpb24obil7cmV0dXJuIGUocyh0LG4pKX0sYX0obigxKSk7YS5BeGlvcz1pLGEuQ2FuY2VsPW4oMiksYS5DYW5jZWxUb2tlbj1uKDI2KSxhLmlzQ2FuY2VsPW4oOCksYS5WRVJTSU9OPW4oMTApLnZlcnNpb24sYS5hbGw9ZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UuYWxsKGUpfSxhLnNwcmVhZD1uKDI3KSxhLmlzQXhpb3NFcnJvcj1uKDI4KSxlLmV4cG9ydHM9YSxlLmV4cG9ydHMuZGVmYXVsdD1hfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMCksbz1uKDQpLGk9bigxNCkscz1uKDE1KSxhPW4oOSksdT1uKDI1KSxjPXUudmFsaWRhdG9ycztmdW5jdGlvbiBmKGUpe3RoaXMuZGVmYXVsdHM9ZSx0aGlzLmludGVyY2VwdG9ycz17cmVxdWVzdDpuZXcgaSxyZXNwb25zZTpuZXcgaX19Zi5wcm90b3R5cGUucmVxdWVzdD1mdW5jdGlvbihlKXsic3RyaW5nIj09dHlwZW9mIGU\/KGU9YXJndW1lbnRzWzFdfHx7fSkudXJsPWFyZ3VtZW50c1swXTplPWV8fHt9LChlPWEodGhpcy5kZWZhdWx0cyxlKSkubWV0aG9kP2UubWV0aG9kPWUubWV0aG9kLnRvTG93ZXJDYXNlKCk6dGhpcy5kZWZhdWx0cy5tZXRob2Q\/ZS5tZXRob2Q9dGhpcy5kZWZhdWx0cy5tZXRob2QudG9Mb3dlckNhc2UoKTplLm1ldGhvZD0iZ2V0Ijt2YXIgdD1lLnRyYW5zaXRpb25hbDt2b2lkIDAhPT10JiZ1LmFzc2VydE9wdGlvbnModCx7c2lsZW50SlNPTlBhcnNpbmc6Yy50cmFuc2l0aW9uYWwoYy5ib29sZWFuKSxmb3JjZWRKU09OUGFyc2luZzpjLnRyYW5zaXRpb25hbChjLmJvb2xlYW4pLGNsYXJpZnlUaW1lb3V0RXJyb3I6Yy50cmFuc2l0aW9uYWwoYy5ib29sZWFuKX0sITEpO3ZhciBuPVtdLHI9ITA7dGhpcy5pbnRlcmNlcHRvcnMucmVxdWVzdC5mb3JFYWNoKChmdW5jdGlvbih0KXsiZnVuY3Rpb24iPT10eXBlb2YgdC5ydW5XaGVuJiYhMT09PXQucnVuV2hlbihlKXx8KHI9ciYmdC5zeW5jaHJvbm91cyxuLnVuc2hpZnQodC5mdWxmaWxsZWQsdC5yZWplY3RlZCkpfSkpO3ZhciBvLGk9W107aWYodGhpcy5pbnRlcmNlcHRvcnMucmVzcG9uc2UuZm9yRWFjaCgoZnVuY3Rpb24oZSl7aS5wdXNoKGUuZnVsZmlsbGVkLGUucmVqZWN0ZWQpfSkpLCFyKXt2YXIgZj1bcyx2b2lkIDBdO2ZvcihBcnJheS5wcm90b3R5cGUudW5zaGlmdC5hcHBseShmLG4pLGY9Zi5jb25jYXQoaSksbz1Qcm9taXNlLnJlc29sdmUoZSk7Zi5sZW5ndGg7KW89by50aGVuKGYuc2hpZnQoKSxmLnNoaWZ0KCkpO3JldHVybiBvfWZvcih2YXIgbD1lO24ubGVuZ3RoOyl7dmFyIHA9bi5zaGlmdCgpLGQ9bi5zaGlmdCgpO3RyeXtsPXAobCl9Y2F0Y2goZSl7ZChlKTticmVha319dHJ5e289cyhsKX1jYXRjaChlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9Zm9yKDtpLmxlbmd0aDspbz1vLnRoZW4oaS5zaGlmdCgpLGkuc2hpZnQoKSk7cmV0dXJuIG99LGYucHJvdG90eXBlLmdldFVyaT1mdW5jdGlvbihlKXtyZXR1cm4gZT1hKHRoaXMuZGVmYXVsdHMsZSksbyhlLnVybCxlLnBhcmFtcyxlLnBhcmFtc1NlcmlhbGl6ZXIpLnJlcGxhY2UoL15cPy8sIiIpfSxyLmZvckVhY2goWyJkZWxldGUiLCJnZXQiLCJoZWFkIiwib3B0aW9ucyJdLChmdW5jdGlvbihlKXtmLnByb3RvdHlwZVtlXT1mdW5jdGlvbih0LG4pe3JldHVybiB0aGlzLnJlcXVlc3QoYShufHx7fSx7bWV0aG9kOmUsdXJsOnQsZGF0YToobnx8e30pLmRhdGF9KSl9fSkpLHIuZm9yRWFjaChbInBvc3QiLCJwdXQiLCJwYXRjaCJdLChmdW5jdGlvbihlKXtmLnByb3RvdHlwZVtlXT1mdW5jdGlvbih0LG4scil7cmV0dXJuIHRoaXMucmVxdWVzdChhKHJ8fHt9LHttZXRob2Q6ZSx1cmw6dCxkYXRhOm59KSl9fSkpLGUuZXhwb3J0cz1mfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMCk7ZnVuY3Rpb24gbygpe3RoaXMuaGFuZGxlcnM9W119by5wcm90b3R5cGUudXNlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdGhpcy5oYW5kbGVycy5wdXNoKHtmdWxmaWxsZWQ6ZSxyZWplY3RlZDp0LHN5bmNocm9ub3VzOiEhbiYmbi5zeW5jaHJvbm91cyxydW5XaGVuOm4\/bi5ydW5XaGVuOm51bGx9KSx0aGlzLmhhbmRsZXJzLmxlbmd0aC0xfSxvLnByb3RvdHlwZS5lamVjdD1mdW5jdGlvbihlKXt0aGlzLmhhbmRsZXJzW2VdJiYodGhpcy5oYW5kbGVyc1tlXT1udWxsKX0sby5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbihlKXtyLmZvckVhY2godGhpcy5oYW5kbGVycywoZnVuY3Rpb24odCl7bnVsbCE9PXQmJmUodCl9KSl9LGUuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMCksbz1uKDE2KSxpPW4oOCkscz1uKDEpLGE9bigyKTtmdW5jdGlvbiB1KGUpe2lmKGUuY2FuY2VsVG9rZW4mJmUuY2FuY2VsVG9rZW4udGhyb3dJZlJlcXVlc3RlZCgpLGUuc2lnbmFsJiZlLnNpZ25hbC5hYm9ydGVkKXRocm93IG5ldyBhKCJjYW5jZWxlZCIpfWUuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gdShlKSxlLmhlYWRlcnM9ZS5oZWFkZXJzfHx7fSxlLmRhdGE9by5jYWxsKGUsZS5kYXRhLGUuaGVhZGVycyxlLnRyYW5zZm9ybVJlcXVlc3QpLGUuaGVhZGVycz1yLm1lcmdlKGUuaGVhZGVycy5jb21tb258fHt9LGUuaGVhZGVyc1tlLm1ldGhvZF18fHt9LGUuaGVhZGVycyksci5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsInBvc3QiLCJwdXQiLCJwYXRjaCIsImNvbW1vbiJdLChmdW5jdGlvbih0KXtkZWxldGUgZS5oZWFkZXJzW3RdfSkpLChlLmFkYXB0ZXJ8fHMuYWRhcHRlcikoZSkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHUoZSksdC5kYXRhPW8uY2FsbChlLHQuZGF0YSx0LmhlYWRlcnMsZS50cmFuc2Zvcm1SZXNwb25zZSksdH0pLChmdW5jdGlvbih0KXtyZXR1cm4gaSh0KXx8KHUoZSksdCYmdC5yZXNwb25zZSYmKHQucmVzcG9uc2UuZGF0YT1vLmNhbGwoZSx0LnJlc3BvbnNlLmRhdGEsdC5yZXNwb25zZS5oZWFkZXJzLGUudHJhbnNmb3JtUmVzcG9uc2UpKSksUHJvbWlzZS5yZWplY3QodCl9KSl9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMCksbz1uKDEpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7dmFyIGk9dGhpc3x8bztyZXR1cm4gci5mb3JFYWNoKG4sKGZ1bmN0aW9uKG4pe2U9bi5jYWxsKGksZSx0KX0pKSxlfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDApO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3IuZm9yRWFjaChlLChmdW5jdGlvbihuLHIpe3IhPT10JiZyLnRvVXBwZXJDYXNlKCk9PT10LnRvVXBwZXJDYXNlKCkmJihlW3RdPW4sZGVsZXRlIGVbcl0pfSkpfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDcpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7dmFyIG89bi5jb25maWcudmFsaWRhdGVTdGF0dXM7bi5zdGF0dXMmJm8mJiFvKG4uc3RhdHVzKT90KHIoIlJlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgIituLnN0YXR1cyxuLmNvbmZpZyxudWxsLG4ucmVxdWVzdCxuKSk6ZShuKX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigwKTtlLmV4cG9ydHM9ci5pc1N0YW5kYXJkQnJvd3NlckVudigpP3t3cml0ZTpmdW5jdGlvbihlLHQsbixvLGkscyl7dmFyIGE9W107YS5wdXNoKGUrIj0iK2VuY29kZVVSSUNvbXBvbmVudCh0KSksci5pc051bWJlcihuKSYmYS5wdXNoKCJleHBpcmVzPSIrbmV3IERhdGUobikudG9HTVRTdHJpbmcoKSksci5pc1N0cmluZyhvKSYmYS5wdXNoKCJwYXRoPSIrbyksci5pc1N0cmluZyhpKSYmYS5wdXNoKCJkb21haW49IitpKSwhMD09PXMmJmEucHVzaCgic2VjdXJlIiksZG9jdW1lbnQuY29va2llPWEuam9pbigiOyAiKX0scmVhZDpmdW5jdGlvbihlKXt2YXIgdD1kb2N1bWVudC5jb29raWUubWF0Y2gobmV3IFJlZ0V4cCgiKF58O1xccyopKCIrZSsiKT0oW147XSopIikpO3JldHVybiB0P2RlY29kZVVSSUNvbXBvbmVudCh0WzNdKTpudWxsfSxyZW1vdmU6ZnVuY3Rpb24oZSl7dGhpcy53cml0ZShlLCIiLERhdGUubm93KCktODY0ZTUpfX06e3dyaXRlOmZ1bmN0aW9uKCl7fSxyZWFkOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LHJlbW92ZTpmdW5jdGlvbigpe319fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMjEpLG89bigyMik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJiFyKHQpP28oZSx0KTp0fX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuL14oW2Etel1bYS16XGRcK1wtXC5dKjopP1wvXC8vaS50ZXN0KGUpfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD9lLnJlcGxhY2UoL1wvKyQvLCIiKSsiLyIrdC5yZXBsYWNlKC9eXC8rLywiIik6ZX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigwKSxvPVsiYWdlIiwiYXV0aG9yaXphdGlvbiIsImNvbnRlbnQtbGVuZ3RoIiwiY29udGVudC10eXBlIiwiZXRhZyIsImV4cGlyZXMiLCJmcm9tIiwiaG9zdCIsImlmLW1vZGlmaWVkLXNpbmNlIiwiaWYtdW5tb2RpZmllZC1zaW5jZSIsImxhc3QtbW9kaWZpZWQiLCJsb2NhdGlvbiIsIm1heC1mb3J3YXJkcyIsInByb3h5LWF1dGhvcml6YXRpb24iLCJyZWZlcmVyIiwicmV0cnktYWZ0ZXIiLCJ1c2VyLWFnZW50Il07ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0LG4saSxzPXt9O3JldHVybiBlPyhyLmZvckVhY2goZS5zcGxpdCgiXG4iKSwoZnVuY3Rpb24oZSl7aWYoaT1lLmluZGV4T2YoIjoiKSx0PXIudHJpbShlLnN1YnN0cigwLGkpKS50b0xvd2VyQ2FzZSgpLG49ci50cmltKGUuc3Vic3RyKGkrMSkpLHQpe2lmKHNbdF0mJm8uaW5kZXhPZih0KT49MClyZXR1cm47c1t0XT0ic2V0LWNvb2tpZSI9PT10PyhzW3RdP3NbdF06W10pLmNvbmNhdChbbl0pOnNbdF0\/c1t0XSsiLCAiK246bn19KSkscyk6c319LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigwKTtlLmV4cG9ydHM9ci5pc1N0YW5kYXJkQnJvd3NlckVudigpP2Z1bmN0aW9uKCl7dmFyIGUsdD0vKG1zaWV8dHJpZGVudCkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpO2Z1bmN0aW9uIG8oZSl7dmFyIHI9ZTtyZXR1cm4gdCYmKG4uc2V0QXR0cmlidXRlKCJocmVmIixyKSxyPW4uaHJlZiksbi5zZXRBdHRyaWJ1dGUoImhyZWYiLHIpLHtocmVmOm4uaHJlZixwcm90b2NvbDpuLnByb3RvY29sP24ucHJvdG9jb2wucmVwbGFjZSgvOiQvLCIiKToiIixob3N0Om4uaG9zdCxzZWFyY2g6bi5zZWFyY2g\/bi5zZWFyY2gucmVwbGFjZSgvXlw\/LywiIik6IiIsaGFzaDpuLmhhc2g\/bi5oYXNoLnJlcGxhY2UoL14jLywiIik6IiIsaG9zdG5hbWU6bi5ob3N0bmFtZSxwb3J0Om4ucG9ydCxwYXRobmFtZToiLyI9PT1uLnBhdGhuYW1lLmNoYXJBdCgwKT9uLnBhdGhuYW1lOiIvIituLnBhdGhuYW1lfX1yZXR1cm4gZT1vKHdpbmRvdy5sb2NhdGlvbi5ocmVmKSxmdW5jdGlvbih0KXt2YXIgbj1yLmlzU3RyaW5nKHQpP28odCk6dDtyZXR1cm4gbi5wcm90b2NvbD09PWUucHJvdG9jb2wmJm4uaG9zdD09PWUuaG9zdH19KCk6ZnVuY3Rpb24oKXtyZXR1cm4hMH19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigxMCkudmVyc2lvbixvPXt9O1sib2JqZWN0IiwiYm9vbGVhbiIsIm51bWJlciIsImZ1bmN0aW9uIiwic3RyaW5nIiwic3ltYm9sIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSx0KXtvW2VdPWZ1bmN0aW9uKG4pe3JldHVybiB0eXBlb2Ygbj09PWV8fCJhIisodDwxPyJuICI6IiAiKStlfX0pKTt2YXIgaT17fTtvLnRyYW5zaXRpb25hbD1mdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gbyhlLHQpe3JldHVybiJbQXhpb3MgdiIrcisiXSBUcmFuc2l0aW9uYWwgb3B0aW9uICciK2UrIiciK3QrKG4\/Ii4gIituOiIiKX1yZXR1cm4gZnVuY3Rpb24obixyLHMpe2lmKCExPT09ZSl0aHJvdyBuZXcgRXJyb3IobyhyLCIgaGFzIGJlZW4gcmVtb3ZlZCIrKHQ\/IiBpbiAiK3Q6IiIpKSk7cmV0dXJuIHQmJiFpW3JdJiYoaVtyXT0hMCxjb25zb2xlLndhcm4obyhyLCIgaGFzIGJlZW4gZGVwcmVjYXRlZCBzaW5jZSB2Iit0KyIgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmVhciBmdXR1cmUiKSkpLCFlfHxlKG4scixzKX19LGUuZXhwb3J0cz17YXNzZXJ0T3B0aW9uczpmdW5jdGlvbihlLHQsbil7aWYoIm9iamVjdCIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIm9wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QiKTtmb3IodmFyIHI9T2JqZWN0LmtleXMoZSksbz1yLmxlbmd0aDtvLS0gPjA7KXt2YXIgaT1yW29dLHM9dFtpXTtpZihzKXt2YXIgYT1lW2ldLHU9dm9pZCAwPT09YXx8cyhhLGksZSk7aWYoITAhPT11KXRocm93IG5ldyBUeXBlRXJyb3IoIm9wdGlvbiAiK2krIiBtdXN0IGJlICIrdSl9ZWxzZSBpZighMCE9PW4pdGhyb3cgRXJyb3IoIlVua25vd24gb3B0aW9uICIraSl9fSx2YWxpZGF0b3JzOm99fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMik7ZnVuY3Rpb24gbyhlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJleGVjdXRvciBtdXN0IGJlIGEgZnVuY3Rpb24uIik7dmFyIHQ7dGhpcy5wcm9taXNlPW5ldyBQcm9taXNlKChmdW5jdGlvbihlKXt0PWV9KSk7dmFyIG49dGhpczt0aGlzLnByb21pc2UudGhlbigoZnVuY3Rpb24oZSl7aWYobi5fbGlzdGVuZXJzKXt2YXIgdCxyPW4uX2xpc3RlbmVycy5sZW5ndGg7Zm9yKHQ9MDt0PHI7dCsrKW4uX2xpc3RlbmVyc1t0XShlKTtuLl9saXN0ZW5lcnM9bnVsbH19KSksdGhpcy5wcm9taXNlLnRoZW49ZnVuY3Rpb24oZSl7dmFyIHQscj1uZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7bi5zdWJzY3JpYmUoZSksdD1lfSkpLnRoZW4oZSk7cmV0dXJuIHIuY2FuY2VsPWZ1bmN0aW9uKCl7bi51bnN1YnNjcmliZSh0KX0scn0sZSgoZnVuY3Rpb24oZSl7bi5yZWFzb258fChuLnJlYXNvbj1uZXcgcihlKSx0KG4ucmVhc29uKSl9KSl9by5wcm90b3R5cGUudGhyb3dJZlJlcXVlc3RlZD1mdW5jdGlvbigpe2lmKHRoaXMucmVhc29uKXRocm93IHRoaXMucmVhc29ufSxvLnByb3RvdHlwZS5zdWJzY3JpYmU9ZnVuY3Rpb24oZSl7dGhpcy5yZWFzb24\/ZSh0aGlzLnJlYXNvbik6dGhpcy5fbGlzdGVuZXJzP3RoaXMuX2xpc3RlbmVycy5wdXNoKGUpOnRoaXMuX2xpc3RlbmVycz1bZV19LG8ucHJvdG90eXBlLnVuc3Vic2NyaWJlPWZ1bmN0aW9uKGUpe2lmKHRoaXMuX2xpc3RlbmVycyl7dmFyIHQ9dGhpcy5fbGlzdGVuZXJzLmluZGV4T2YoZSk7LTEhPT10JiZ0aGlzLl9saXN0ZW5lcnMuc3BsaWNlKHQsMSl9fSxvLnNvdXJjZT1mdW5jdGlvbigpe3ZhciBlO3JldHVybnt0b2tlbjpuZXcgbygoZnVuY3Rpb24odCl7ZT10fSkpLGNhbmNlbDplfX0sZS5leHBvcnRzPW99LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5hcHBseShudWxsLHQpfX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiJvYmplY3QiPT10eXBlb2YgZSYmITA9PT1lLmlzQXhpb3NFcnJvcn19XSl9KSk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWF4aW9zLm1pbi5tYXA7Ci8qKiAvbS9qcy92YW5pbGxhanMvcHJpc3RpbmUubWluLmpzICoqLwohZnVuY3Rpb24oZSxyKXsib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHMmJiJ1bmRlZmluZWQiIT10eXBlb2YgbW9kdWxlP21vZHVsZS5leHBvcnRzPXIoKToiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShyKTooZT0idW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbFRoaXM\/Z2xvYmFsVGhpczplfHxzZWxmKS5QcmlzdGluZT1yKCl9KHRoaXMsKGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciBlPXtlbjp7cmVxdWlyZWQ6IlRoaXMgZmllbGQgaXMgcmVxdWlyZWQiLGVtYWlsOiJUaGlzIGZpZWxkIHJlcXVpcmVzIGEgdmFsaWQgZS1tYWlsIGFkZHJlc3MiLG51bWJlcjoiVGhpcyBmaWVsZCByZXF1aXJlcyBhIG51bWJlciIsaW50ZWdlcjoiVGhpcyBmaWVsZCByZXF1aXJlcyBhbiBpbnRlZ2VyIHZhbHVlIix1cmw6IlRoaXMgZmllbGQgcmVxdWlyZXMgYSB2YWxpZCB3ZWJzaXRlIFVSTCIsdGVsOiJUaGlzIGZpZWxkIHJlcXVpcmVzIGEgdmFsaWQgdGVsZXBob25lIG51bWJlciIsbWF4bGVuZ3RoOiJUaGlzIGZpZWxkcyBsZW5ndGggbXVzdCBiZSA8ICR7MX0iLG1pbmxlbmd0aDoiVGhpcyBmaWVsZHMgbGVuZ3RoIG11c3QgYmUgPiAkezF9IixtaW46Ik1pbmltdW0gdmFsdWUgZm9yIHRoaXMgZmllbGQgaXMgJHsxfSIsbWF4OiJNYXhpbXVtIHZhbHVlIGZvciB0aGlzIGZpZWxkIGlzICR7MX0iLHBhdHRlcm46IlBsZWFzZSBtYXRjaCB0aGUgcmVxdWVzdGVkIGZvcm1hdCIsZXF1YWxzOiJUaGUgdHdvIGZpZWxkcyBkbyBub3QgbWF0Y2gifX07ZnVuY3Rpb24gcihlKXt2YXIgcj1hcmd1bWVudHM7cmV0dXJuIHRoaXMucmVwbGFjZSgvXCR7KFtee31dKil9L2csKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHJbdF19KSl9ZnVuY3Rpb24gdChlKXtyZXR1cm4gZS5wcmlzdGluZS5zZWxmLmZvcm0ucXVlcnlTZWxlY3RvckFsbCgnaW5wdXRbbmFtZT0iJytlLmdldEF0dHJpYnV0ZSgibmFtZSIpKyciXTpjaGVja2VkJykubGVuZ3RofXZhciBuPXtjbGFzc1RvOiJmb3JtLWdyb3VwIixlcnJvckNsYXNzOiJoYXMtZGFuZ2VyIixzdWNjZXNzQ2xhc3M6Imhhcy1zdWNjZXNzIixlcnJvclRleHRQYXJlbnQ6ImZvcm0tZ3JvdXAiLGVycm9yVGV4dFRhZzoiZGl2IixlcnJvclRleHRDbGFzczoidGV4dC1oZWxwIn0saT1bInJlcXVpcmVkIiwibWluIiwibWF4IiwibWlubGVuZ3RoIiwibWF4bGVuZ3RoIiwicGF0dGVybiJdLHM9L14oKFtePD4oKVxbXF1cXC4sOzpcc0AiXSsoXC5bXjw+KClcW1xdXFwuLDs6XHNAIl0rKSopfCgiLisiKSlAKChcW1swLTldezEsM31cLlswLTldezEsM31cLlswLTldezEsM31cLlswLTldezEsM31dKXwoKFthLXpBLVpcLTAtOV0rXC4pK1thLXpBLVpdezIsfSkpJC8sYT0vLW1lc3NhZ2UoPzotKFthLXpdezJ9KD86X1tBLVpdezJ9KT8pKT8vLG89ImVuIixsPXt9LHU9ZnVuY3Rpb24oZSxyKXtyLm5hbWU9ZSx2b2lkIDA9PT1yLnByaW9yaXR5JiYoci5wcmlvcml0eT0xKSxsW2VdPXJ9O2Z1bmN0aW9uIGYodCxzLHUpe3ZhciBmPXRoaXM7ZnVuY3Rpb24gYyhlLHIsdCxuKXt2YXIgaT1sW3RdO2lmKGkmJihlLnB1c2goaSksbikpe3ZhciBzPSJwYXR0ZXJuIj09PXQ\/W25dOm4uc3BsaXQoIiwiKTtzLnVuc2hpZnQobnVsbCksclt0XT1zfX1mdW5jdGlvbiBwKHQpe2Zvcih2YXIgbj1bXSxpPSEwLHM9MDt0LnZhbGlkYXRvcnNbc107cysrKXt2YXIgYT10LnZhbGlkYXRvcnNbc10sbD10LnBhcmFtc1thLm5hbWVdP3QucGFyYW1zW2EubmFtZV06W107aWYobFswXT10LmlucHV0LnZhbHVlLCFhLmZuLmFwcGx5KHQuaW5wdXQsbCkmJihpPSExLCJmdW5jdGlvbiI9PXR5cGVvZiBhLm1zZz9uLnB1c2goYS5tc2codC5pbnB1dC52YWx1ZSxsKSk6InN0cmluZyI9PXR5cGVvZiBhLm1zZz9uLnB1c2goci5hcHBseShhLm1zZyxsKSk6YS5tc2c9PT1PYmplY3QoYS5tc2cpJiZhLm1zZ1tvXT9uLnB1c2goci5hcHBseShhLm1zZ1tvXSxsKSk6dC5tZXNzYWdlc1tvXSYmdC5tZXNzYWdlc1tvXVthLm5hbWVdP24ucHVzaChyLmFwcGx5KHQubWVzc2FnZXNbb11bYS5uYW1lXSxsKSk6ZVtvXSYmZVtvXVthLm5hbWVdJiZuLnB1c2goci5hcHBseShlW29dW2EubmFtZV0sbCkpLCEwPT09YS5oYWx0KSlicmVha31yZXR1cm4gdC5lcnJvcnM9bixpfWZ1bmN0aW9uIG0oZSl7aWYoZS5lcnJvckVsZW1lbnRzKXJldHVybiBlLmVycm9yRWxlbWVudHM7dmFyIHI9ZnVuY3Rpb24oZSxyKXtmb3IoOyhlPWUucGFyZW50RWxlbWVudCkmJiFlLmNsYXNzTGlzdC5jb250YWlucyhyKTspO3JldHVybiBlfShlLmlucHV0LGYuY29uZmlnLmNsYXNzVG8pLHQ9bnVsbCxuPW51bGw7cmV0dXJuKHQ9Zi5jb25maWcuY2xhc3NUbz09PWYuY29uZmlnLmVycm9yVGV4dFBhcmVudD9yOnIucXVlcnlTZWxlY3RvcigiLiIrZi5jb25maWcuZXJyb3JUZXh0UGFyZW50KSkmJigobj10LnF1ZXJ5U2VsZWN0b3IoIi5wcmlzdGluZS1lcnJvciIpKXx8KChuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZi5jb25maWcuZXJyb3JUZXh0VGFnKSkuY2xhc3NOYW1lPSJwcmlzdGluZS1lcnJvciAiK2YuY29uZmlnLmVycm9yVGV4dENsYXNzLHQuYXBwZW5kQ2hpbGQobiksbi5wcmlzdGluZURpc3BsYXk9bi5zdHlsZS5kaXNwbGF5KSksZS5lcnJvckVsZW1lbnRzPVtyLG5dfWZ1bmN0aW9uIGQoZSl7dmFyIHI9bShlKSx0PXJbMF0sbj1yWzFdO3QmJih0LmNsYXNzTGlzdC5yZW1vdmUoZi5jb25maWcuc3VjY2Vzc0NsYXNzKSx0LmNsYXNzTGlzdC5hZGQoZi5jb25maWcuZXJyb3JDbGFzcykpLG4mJihuLmlubmVySFRNTD1lLmVycm9ycy5qb2luKCI8YnIvPiIpLG4uc3R5bGUuZGlzcGxheT1uLnByaXN0aW5lRGlzcGxheXx8IiIpfWZ1bmN0aW9uIGgoZSl7dmFyIHI9ZnVuY3Rpb24oZSl7dmFyIHI9bShlKSx0PXJbMF0sbj1yWzFdO3JldHVybiB0JiYodC5jbGFzc0xpc3QucmVtb3ZlKGYuY29uZmlnLmVycm9yQ2xhc3MpLHQuY2xhc3NMaXN0LnJlbW92ZShmLmNvbmZpZy5zdWNjZXNzQ2xhc3MpKSxuJiYobi5pbm5lckhUTUw9IiIsbi5zdHlsZS5kaXNwbGF5PSJub25lIikscn0oZSlbMF07ciYmci5jbGFzc0xpc3QuYWRkKGYuY29uZmlnLnN1Y2Nlc3NDbGFzcyl9cmV0dXJuIGZ1bmN0aW9uKGUscix0KXtlLnNldEF0dHJpYnV0ZSgibm92YWxpZGF0ZSIsInRydWUiKSxmLmZvcm09ZSxmLmNvbmZpZz1mdW5jdGlvbihlLHIpe2Zvcih2YXIgdCBpbiByKXQgaW4gZXx8KGVbdF09clt0XSk7cmV0dXJuIGV9KHJ8fHt9LG4pLGYubGl2ZT0hKCExPT09dCksZi5maWVsZHM9QXJyYXkuZnJvbShlLnF1ZXJ5U2VsZWN0b3JBbGwoImlucHV0Om5vdChbdHlwZV49aGlkZGVuXSk6bm90KFt0eXBlXj1zdWJtaXRdKSwgc2VsZWN0LCB0ZXh0YXJlYSIpKS5tYXAoZnVuY3Rpb24oZSl7dmFyIHI9W10sdD17fSxuPXt9O3JldHVybltdLmZvckVhY2guY2FsbChlLmF0dHJpYnV0ZXMsKGZ1bmN0aW9uKGUpe2lmKC9eZGF0YS1wcmlzdGluZS0vLnRlc3QoZS5uYW1lKSl7dmFyIHM9ZS5uYW1lLnN1YnN0cigxNCksbz1zLm1hdGNoKGEpO2lmKG51bGwhPT1vKXt2YXIgbD12b2lkIDA9PT1vWzFdPyJlbiI6b1sxXTtyZXR1cm4gbi5oYXNPd25Qcm9wZXJ0eShsKXx8KG5bbF09e30pLHZvaWQobltsXVtzLnNsaWNlKDAscy5sZW5ndGgtb1swXS5sZW5ndGgpXT1lLnZhbHVlKX0idHlwZSI9PT1zJiYocz1lLnZhbHVlKSxjKHIsdCxzLGUudmFsdWUpfWVsc2V+aS5pbmRleE9mKGUubmFtZSk\/YyhyLHQsZS5uYW1lLGUudmFsdWUpOiJ0eXBlIj09PWUubmFtZSYmYyhyLHQsZS52YWx1ZSl9KSksci5zb3J0KChmdW5jdGlvbihlLHIpe3JldHVybiByLnByaW9yaXR5LWUucHJpb3JpdHl9KSksZi5saXZlJiZlLmFkZEV2ZW50TGlzdGVuZXIoflsicmFkaW8iLCJjaGVja2JveCJdLmluZGV4T2YoZS5nZXRBdHRyaWJ1dGUoInR5cGUiKSk\/ImNoYW5nZSI6ImlucHV0IixmdW5jdGlvbihlKXtmLnZhbGlkYXRlKGUudGFyZ2V0KX0uYmluZChmKSksZS5wcmlzdGluZT17aW5wdXQ6ZSx2YWxpZGF0b3JzOnIscGFyYW1zOnQsbWVzc2FnZXM6bixzZWxmOmZ9fS5iaW5kKGYpKX0odCxzLHUpLGYudmFsaWRhdGU9ZnVuY3Rpb24oZSxyKXtyPWUmJiEwPT09cnx8ITA9PT1lO3ZhciB0PWYuZmllbGRzOyEwIT09ZSYmITEhPT1lJiYoZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50P3Q9W2UucHJpc3RpbmVdOihlIGluc3RhbmNlb2YgTm9kZUxpc3R8fGUgaW5zdGFuY2VvZih3aW5kb3cuJHx8QXJyYXkpfHxlIGluc3RhbmNlb2YgQXJyYXkpJiYodD1BcnJheS5mcm9tKGUpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUucHJpc3RpbmV9KSkpKTtmb3IodmFyIG49ITAsaT0wO3RbaV07aSsrKXt2YXIgcz10W2ldO3Aocyk\/IXImJmgocyk6KG49ITEsIXImJmQocykpfXJldHVybiBufSxmLmdldEVycm9ycz1mdW5jdGlvbihlKXtpZighZSl7Zm9yKHZhciByPVtdLHQ9MDt0PGYuZmllbGRzLmxlbmd0aDt0Kyspe3ZhciBuPWYuZmllbGRzW3RdO24uZXJyb3JzLmxlbmd0aCYmci5wdXNoKHtpbnB1dDpuLmlucHV0LGVycm9yczpuLmVycm9yc30pfXJldHVybiByfXJldHVybiBlLnRhZ05hbWUmJiJzZWxlY3QiPT09ZS50YWdOYW1lLnRvTG93ZXJDYXNlKCk\/ZS5wcmlzdGluZS5lcnJvcnM6ZS5sZW5ndGg\/ZVswXS5wcmlzdGluZS5lcnJvcnM6ZS5wcmlzdGluZS5lcnJvcnN9LGYuYWRkVmFsaWRhdG9yPWZ1bmN0aW9uKGUscix0LG4saSl7ZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50PyhlLnByaXN0aW5lLnZhbGlkYXRvcnMucHVzaCh7Zm46cixtc2c6dCxwcmlvcml0eTpuLGhhbHQ6aX0pLGUucHJpc3RpbmUudmFsaWRhdG9ycy5zb3J0KChmdW5jdGlvbihlLHIpe3JldHVybiByLnByaW9yaXR5LWUucHJpb3JpdHl9KSkpOmNvbnNvbGUud2FybigiVGhlIHBhcmFtZXRlciBlbGVtIG11c3QgYmUgYSBkb20gZWxlbWVudCIpfSxmLmFkZEVycm9yPWZ1bmN0aW9uKGUscil7KGU9ZS5sZW5ndGg\/ZVswXTplKS5wcmlzdGluZS5lcnJvcnMucHVzaChyKSxkKGUucHJpc3RpbmUpfSxmLnJlc2V0PWZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7Zi5maWVsZHNbZV07ZSsrKWYuZmllbGRzW2VdLmVycm9yRWxlbWVudHM9bnVsbDtBcnJheS5mcm9tKGYuZm9ybS5xdWVyeVNlbGVjdG9yQWxsKCIucHJpc3RpbmUtZXJyb3IiKSkubWFwKChmdW5jdGlvbihlKXtlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZSl9KSksQXJyYXkuZnJvbShmLmZvcm0ucXVlcnlTZWxlY3RvckFsbCgiLiIrZi5jb25maWcuY2xhc3NUbykpLm1hcCgoZnVuY3Rpb24oZSl7ZS5jbGFzc0xpc3QucmVtb3ZlKGYuY29uZmlnLnN1Y2Nlc3NDbGFzcyksZS5jbGFzc0xpc3QucmVtb3ZlKGYuY29uZmlnLmVycm9yQ2xhc3MpfSkpfSxmLmRlc3Ryb3k9ZnVuY3Rpb24oKXtmLnJlc2V0KCksZi5maWVsZHMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZGVsZXRlIGUuaW5wdXQucHJpc3RpbmV9KSksZi5maWVsZHM9W119LGYuc2V0R2xvYmFsQ29uZmlnPWZ1bmN0aW9uKGUpe249ZX0sZn1yZXR1cm4gdSgidGV4dCIse2ZuOmZ1bmN0aW9uKGUpe3JldHVybiEwfSxwcmlvcml0eTowfSksdSgicmVxdWlyZWQiLHtmbjpmdW5jdGlvbihlKXtyZXR1cm4icmFkaW8iPT09dGhpcy50eXBlfHwiY2hlY2tib3giPT09dGhpcy50eXBlP3QodGhpcyk6dm9pZCAwIT09ZSYmIiIhPT1lfSxwcmlvcml0eTo5OSxoYWx0OiEwfSksdSgiZW1haWwiLHtmbjpmdW5jdGlvbihlKXtyZXR1cm4hZXx8cy50ZXN0KGUpfX0pLHUoIm51bWJlciIse2ZuOmZ1bmN0aW9uKGUpe3JldHVybiFlfHwhaXNOYU4ocGFyc2VGbG9hdChlKSl9LHByaW9yaXR5OjJ9KSx1KCJpbnRlZ2VyIix7Zm46ZnVuY3Rpb24oZSl7cmV0dXJuIWV8fC9eXGQrJC8udGVzdChlKX19KSx1KCJtaW5sZW5ndGgiLHtmbjpmdW5jdGlvbihlLHIpe3JldHVybiFlfHxlLmxlbmd0aD49cGFyc2VJbnQocil9fSksdSgibWF4bGVuZ3RoIix7Zm46ZnVuY3Rpb24oZSxyKXtyZXR1cm4hZXx8ZS5sZW5ndGg8PXBhcnNlSW50KHIpfX0pLHUoIm1pbiIse2ZuOmZ1bmN0aW9uKGUscil7cmV0dXJuIWV8fCgiY2hlY2tib3giPT09dGhpcy50eXBlP3QodGhpcyk+PXBhcnNlSW50KHIpOnBhcnNlRmxvYXQoZSk+PXBhcnNlRmxvYXQocikpfX0pLHUoIm1heCIse2ZuOmZ1bmN0aW9uKGUscil7cmV0dXJuIWV8fCgiY2hlY2tib3giPT09dGhpcy50eXBlP3QodGhpcyk8PXBhcnNlSW50KHIpOnBhcnNlRmxvYXQoZSk8PXBhcnNlRmxvYXQocikpfX0pLHUoInBhdHRlcm4iLHtmbjpmdW5jdGlvbihlLHIpe3ZhciB0PXIubWF0Y2gobmV3IFJlZ0V4cCgiXi8oLio\/KS8oW2dpbXldKikkIikpO3JldHVybiFlfHxuZXcgUmVnRXhwKHRbMV0sdFsyXSkudGVzdChlKX19KSx1KCJlcXVhbHMiLHtmbjpmdW5jdGlvbihlLHIpe3ZhciB0PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Iocik7cmV0dXJuIHQmJighZSYmIXQudmFsdWV8fHQudmFsdWU9PT1lKX19KSxmLmFkZFZhbGlkYXRvcj1mdW5jdGlvbihlLHIsdCxuLGkpe3UoZSx7Zm46cixtc2c6dCxwcmlvcml0eTpuLGhhbHQ6aX0pfSxmLmFkZE1lc3NhZ2VzPWZ1bmN0aW9uKHIsdCl7dmFyIG49ZS5oYXNPd25Qcm9wZXJ0eShyKT9lW3JdOmVbcl09e307T2JqZWN0LmtleXModCkuZm9yRWFjaCgoZnVuY3Rpb24oZSxyKXtuW2VdPXRbZV19KSl9LGYuc2V0TG9jYWxlPWZ1bmN0aW9uKGUpe289ZX0sZn0pKTsKCi8vRXh0ZW5zaW9uCi8vIEEgdmFsaWRhdG9yIHRvIGNoZWNrIGlmIHRoZSBpbnB1dCB2YWx1ZSBpcyB3aXRoaW4gYSBzcGVjaWZpZWQgcmFuZ2UKLy8gVGhlIGdsb2JhbCB2YWxpZGF0b3IgbXVzdCBiZSBhZGRlZCBiZWZvcmUgY3JlYXRpbmcgdGhlIHByaXN0aW5lIGluc3RhbmNlCgovLyBQcmlzdGluZS5hZGRWYWxpZGF0b3IoInBob25lIiwgZnVuY3Rpb24ocGhvbmUpIHsKCi8vIAl2YXIgVmFsaWRBcmVhQ29kZXMgPSBbCi8vIAkJNDM4LDUxNCwyNjMsNDUwLDU3OSw4MTksMjQ5LDcwNSwyMjYsCi8vIAkJNTE5LDI4OSwzNjUsOTA1LDQxNiw0MzcsNjQ3LDM0MywKLy8gCQk2MTMsNzA5LDg3Myw0MTgsNTgxLDUwNiw5MDIKLy8gCV07CgovLyAJcGhvbmUgPSBwaG9uZS5yZXBsYWNlKC9bXjAtOV0rL2dpLCAnJyk7Ci8vIAlpZih0eXBlb2YgZW1haWxIYW5kbGVyIT0ndW5kZWZpbmVkJyAmJiB0aGlzLmhhc0NsYXNzKCdyZXF1aXJlZCcpKSB7Ci8vIAkJZW1haWxIYW5kbGVyLnBob25lTWFuZGF0b3J5PXRydWU7Ci8vIAl9Ci8vIAlpZiggcGhvbmVbMF0gPT0gJzEnICl7Ci8vIAkJcGhvbmUgPSBwaG9uZS5zdWJzdHJpbmcoIDEgKTsKLy8gCX0KCi8vIAl2YXIgYXJlYUNvZGUgPSBwYXJzZUludCggcGhvbmUuc3Vic3RyaW5nKDAsMykgKTsKCi8vIAlheGlvcy5nZXQoJ2h0dHBzOi8vYXV0b2F1YmFpbmUuY29tL3NlcnZpY2VzL3ZhbGlkYXRlUGhvbmVOdW1iZXIucGhwJyx7Ci8vIAkJdGltZW91dDoyMDAwLAovLyAJCWRhdGFUeXBlOiAnanNvbicsCi8vIAkJcGFyYW1zOiB7cGhvbmU6IHBob25lfSwKLy8gCQlyZXNwb25zZVR5cGU6ICdqc29uJwovLyAJfSkKLy8gCS50aGVuKGZ1bmN0aW9uKHJlcykgewoKLy8gCQlpZiAodHlwZW9mIHJlcy5pc09rICE9PSAndW5kZWZpbmVkJyl7Ci8vIAkJCWlmIChyZXMucGhvbmVOdW1iZXJJc1ZhbGlkID09PSBmYWxzZSkgewovLyAJCQkJLy9jb25zb2xlLmxvZygncGhvbmUgJytwaG9uZSsnIGlzIGludmFsaWQnKTsKLy8gCQkJCWlmKHR5cGVvZiBlbWFpbEhhbmRsZXIhPSd1bmRlZmluZWQnICYmIGVtYWlsSGFuZGxlci5waG9uZU1hbmRhdG9yeSApIHsKLy8gCQkJCQllbWFpbEhhbmRsZXIucGhvbmVWYWxpZGF0aW9uQXR0ZW1wdHMrKzsKLy8gCQkJCX0KLy8gCQkJCXJldHVybiB0cnVlOwovLyAJCQl9Ci8vIAkJCX0gZWxzZSB7Ci8vIAkJCS8vdmFsaWRhdGUgYXJlYWNvZGUgYXQgbGVhc3QKLy8gCQkJaWYoIHR5cGVvZiBWYWxpZEFyZWFDb2Rlcy5pbmRleE9mICE9ICd1bmRlZmluZWQnICYmCVZhbGlkQXJlYUNvZGVzLmluZGV4T2YoIGFyZWFDb2RlICkgPT0gLTEgKXsKLy8gCQkJCXJldHVybiBmYWxzZTsKLy8gCQkJfQovLyAJCX0KCi8vIAl9KQovLyAJLmNhdGNoKGZ1bmN0aW9uKGVycm9yKSB7Ci8vIAkJLy8gdmFsaWRhdGUgYXJlYWNvZGUgYXQgbGVhc3QKLy8gCQlpZiggdHlwZW9mIFZhbGlkQXJlYUNvZGVzLmluZGV4T2YgIT0gJ3VuZGVmaW5lZCcgJiYJVmFsaWRBcmVhQ29kZXMuaW5kZXhPZiggYXJlYUNvZGUgKSA9PSAtMSApewovLyAJCWlmKHR5cGVvZiBlbWFpbEhhbmRsZXIhPSd1bmRlZmluZWQnCSYmIGVtYWlsSGFuZGxlci5waG9uZU1hbmRhdG9yeSkgZW1haWxIYW5kbGVyLnBob25lVmFsaWRhdGlvbkF0dGVtcHRzKys7Ci8vIAkJCXJldHVybiBmYWxzZTsKLy8gCQl9Ci8vIAkJLy9jb25zb2xlLmxvZygidmFsaWRpdHkgdmFsaWRhdGVQaG9uZU51bWJlciBuZXR3b3JrIGVycm9yIik7CgovLyAJCXJldHVybiBmYWxzZTsKLy8gCX0pOwoKCgovLyB9LCAiVGhlIHZhbHVlICgkezB9KSBtdXN0IGJlIGJldHdlZW4gJHsxfSBhbmQgJHsyfSIsIDUsIGZhbHNlKTsKLyoqIC9tL2pzL3ZhbmlsbGFqcy9mbGF0cGlja3IubWluLmpzICoqLwovKiBmbGF0cGlja3IgdjQuNi45LCwgQGxpY2Vuc2UgTUlUICovCiFmdW5jdGlvbihlLHQpeyJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmInVuZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGU\/bW9kdWxlLmV4cG9ydHM9dCgpOiJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ\/ZGVmaW5lKHQpOihlPSJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOmV8fHNlbGYpLmZsYXRwaWNrcj10KCl9KHRoaXMsKGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciBlPWZ1bmN0aW9uKCl7cmV0dXJuKGU9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LG49MSxhPWFyZ3VtZW50cy5sZW5ndGg7bjxhO24rKylmb3IodmFyIGkgaW4gdD1hcmd1bWVudHNbbl0pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsaSkmJihlW2ldPXRbaV0pO3JldHVybiBlfSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtmdW5jdGlvbiB0KCl7Zm9yKHZhciBlPTAsdD0wLG49YXJndW1lbnRzLmxlbmd0aDt0PG47dCsrKWUrPWFyZ3VtZW50c1t0XS5sZW5ndGg7dmFyIGE9QXJyYXkoZSksaT0wO2Zvcih0PTA7dDxuO3QrKylmb3IodmFyIG89YXJndW1lbnRzW3RdLHI9MCxsPW8ubGVuZ3RoO3I8bDtyKyssaSsrKWFbaV09b1tyXTtyZXR1cm4gYX12YXIgbj1bIm9uQ2hhbmdlIiwib25DbG9zZSIsIm9uRGF5Q3JlYXRlIiwib25EZXN0cm95Iiwib25LZXlEb3duIiwib25Nb250aENoYW5nZSIsIm9uT3BlbiIsIm9uUGFyc2VDb25maWciLCJvblJlYWR5Iiwib25WYWx1ZVVwZGF0ZSIsIm9uWWVhckNoYW5nZSIsIm9uUHJlQ2FsZW5kYXJQb3NpdGlvbiJdLGE9e19kaXNhYmxlOltdLGFsbG93SW5wdXQ6ITEsYWxsb3dJbnZhbGlkUHJlbG9hZDohMSxhbHRGb3JtYXQ6IkYgaiwgWSIsYWx0SW5wdXQ6ITEsYWx0SW5wdXRDbGFzczoiZm9ybS1jb250cm9sIGlucHV0IixhbmltYXRlOiJvYmplY3QiPT10eXBlb2Ygd2luZG93JiYtMT09PXdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIk1TSUUiKSxhcmlhRGF0ZUZvcm1hdDoiRiBqLCBZIixhdXRvRmlsbERlZmF1bHRUaW1lOiEwLGNsaWNrT3BlbnM6ITAsY2xvc2VPblNlbGVjdDohMCxjb25qdW5jdGlvbjoiLCAiLGRhdGVGb3JtYXQ6IlktbS1kIixkZWZhdWx0SG91cjoxMixkZWZhdWx0TWludXRlOjAsZGVmYXVsdFNlY29uZHM6MCxkaXNhYmxlOltdLGRpc2FibGVNb2JpbGU6ITEsZW5hYmxlU2Vjb25kczohMSxlbmFibGVUaW1lOiExLGVycm9ySGFuZGxlcjpmdW5jdGlvbihlKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIGNvbnNvbGUmJmNvbnNvbGUud2FybihlKX0sZ2V0V2VlazpmdW5jdGlvbihlKXt2YXIgdD1uZXcgRGF0ZShlLmdldFRpbWUoKSk7dC5zZXRIb3VycygwLDAsMCwwKSx0LnNldERhdGUodC5nZXREYXRlKCkrMy0odC5nZXREYXkoKSs2KSU3KTt2YXIgbj1uZXcgRGF0ZSh0LmdldEZ1bGxZZWFyKCksMCw0KTtyZXR1cm4gMStNYXRoLnJvdW5kKCgodC5nZXRUaW1lKCktbi5nZXRUaW1lKCkpLzg2NGU1LTMrKG4uZ2V0RGF5KCkrNiklNykvNyl9LGhvdXJJbmNyZW1lbnQ6MSxpZ25vcmVkRm9jdXNFbGVtZW50czpbXSxpbmxpbmU6ITEsbG9jYWxlOiJkZWZhdWx0IixtaW51dGVJbmNyZW1lbnQ6NSxtb2RlOiJzaW5nbGUiLG1vbnRoU2VsZWN0b3JUeXBlOiJkcm9wZG93biIsbmV4dEFycm93OiI8c3ZnIHZlcnNpb249JzEuMScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB4bWxuczp4bGluaz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluaycgdmlld0JveD0nMCAwIDE3IDE3Jz48Zz48L2c+PHBhdGggZD0nTTEzLjIwNyA4LjQ3MmwtNy44NTQgNy44NTQtMC43MDctMC43MDcgNy4xNDYtNy4xNDYtNy4xNDYtNy4xNDggMC43MDctMC43MDcgNy44NTQgNy44NTR6JyAvPjwvc3ZnPiIsbm9DYWxlbmRhcjohMSxub3c6bmV3IERhdGUsb25DaGFuZ2U6W10sb25DbG9zZTpbXSxvbkRheUNyZWF0ZTpbXSxvbkRlc3Ryb3k6W10sb25LZXlEb3duOltdLG9uTW9udGhDaGFuZ2U6W10sb25PcGVuOltdLG9uUGFyc2VDb25maWc6W10sb25SZWFkeTpbXSxvblZhbHVlVXBkYXRlOltdLG9uWWVhckNoYW5nZTpbXSxvblByZUNhbGVuZGFyUG9zaXRpb246W10scGx1Z2luczpbXSxwb3NpdGlvbjoiYXV0byIscG9zaXRpb25FbGVtZW50OnZvaWQgMCxwcmV2QXJyb3c6IjxzdmcgdmVyc2lvbj0nMS4xJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHhtbG5zOnhsaW5rPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJyB2aWV3Qm94PScwIDAgMTcgMTcnPjxnPjwvZz48cGF0aCBkPSdNNS4yMDcgOC40NzFsNy4xNDYgNy4xNDctMC43MDcgMC43MDctNy44NTMtNy44NTQgNy44NTQtNy44NTMgMC43MDcgMC43MDctNy4xNDcgNy4xNDZ6JyAvPjwvc3ZnPiIsc2hvcnRoYW5kQ3VycmVudE1vbnRoOiExLHNob3dNb250aHM6MSxzdGF0aWM6ITEsdGltZV8yNGhyOiExLHdlZWtOdW1iZXJzOiExLHdyYXA6ITF9LGk9e3dlZWtkYXlzOntzaG9ydGhhbmQ6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSxsb25naGFuZDpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il19LG1vbnRoczp7c2hvcnRoYW5kOlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl0sbG9uZ2hhbmQ6WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdfSxkYXlzSW5Nb250aDpbMzEsMjgsMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzFdLGZpcnN0RGF5T2ZXZWVrOjAsb3JkaW5hbDpmdW5jdGlvbihlKXt2YXIgdD1lJTEwMDtpZih0PjMmJnQ8MjEpcmV0dXJuInRoIjtzd2l0Y2godCUxMCl7Y2FzZSAxOnJldHVybiJzdCI7Y2FzZSAyOnJldHVybiJuZCI7Y2FzZSAzOnJldHVybiJyZCI7ZGVmYXVsdDpyZXR1cm4idGgifX0scmFuZ2VTZXBhcmF0b3I6IiB0byAiLHdlZWtBYmJyZXZpYXRpb246IldrIixzY3JvbGxUaXRsZToiU2Nyb2xsIHRvIGluY3JlbWVudCIsdG9nZ2xlVGl0bGU6IkNsaWNrIHRvIHRvZ2dsZSIsYW1QTTpbIkFNIiwiUE0iXSx5ZWFyQXJpYUxhYmVsOiJZZWFyIixtb250aEFyaWFMYWJlbDoiTW9udGgiLGhvdXJBcmlhTGFiZWw6IkhvdXIiLG1pbnV0ZUFyaWFMYWJlbDoiTWludXRlIix0aW1lXzI0aHI6ITF9LG89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9MiksKCIwMDAiK2UpLnNsaWNlKC0xKnQpfSxyPWZ1bmN0aW9uKGUpe3JldHVybiEwPT09ZT8xOjB9O2Z1bmN0aW9uIGwoZSx0KXt2YXIgbjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT10aGlzO2NsZWFyVGltZW91dChuKSxuPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cmV0dXJuIGUuYXBwbHkoYSxhcmd1bWVudHMpfSksdCl9fXZhciBjPWZ1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2YgQXJyYXk\/ZTpbZV19O2Z1bmN0aW9uIGQoZSx0LG4pe2lmKCEwPT09bilyZXR1cm4gZS5jbGFzc0xpc3QuYWRkKHQpO2UuY2xhc3NMaXN0LnJlbW92ZSh0KX1mdW5jdGlvbiBzKGUsdCxuKXt2YXIgYT13aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlKTtyZXR1cm4gdD10fHwiIixuPW58fCIiLGEuY2xhc3NOYW1lPXQsdm9pZCAwIT09biYmKGEudGV4dENvbnRlbnQ9biksYX1mdW5jdGlvbiB1KGUpe2Zvcig7ZS5maXJzdENoaWxkOyllLnJlbW92ZUNoaWxkKGUuZmlyc3RDaGlsZCl9ZnVuY3Rpb24gZihlLHQpe3JldHVybiB0KGUpP2U6ZS5wYXJlbnROb2RlP2YoZS5wYXJlbnROb2RlLHQpOnZvaWQgMH1mdW5jdGlvbiBtKGUsdCl7dmFyIG49cygiZGl2IiwibnVtSW5wdXRXcmFwcGVyIiksYT1zKCJpbnB1dCIsIm51bUlucHV0ICIrZSksaT1zKCJzcGFuIiwiYXJyb3dVcCIpLG89cygic3BhbiIsImFycm93RG93biIpO2lmKC0xPT09bmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJNU0lFIDkuMCIpP2EudHlwZT0ibnVtYmVyIjooYS50eXBlPSJ0ZXh0IixhLnBhdHRlcm49IlxcZCoiKSx2b2lkIDAhPT10KWZvcih2YXIgciBpbiB0KWEuc2V0QXR0cmlidXRlKHIsdFtyXSk7cmV0dXJuIG4uYXBwZW5kQ2hpbGQoYSksbi5hcHBlbmRDaGlsZChpKSxuLmFwcGVuZENoaWxkKG8pLG59ZnVuY3Rpb24gZyhlKXt0cnl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGUuY29tcG9zZWRQYXRoP2UuY29tcG9zZWRQYXRoKClbMF06ZS50YXJnZXR9Y2F0Y2godCl7cmV0dXJuIGUudGFyZ2V0fX12YXIgcD1mdW5jdGlvbigpe30saD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG4ubW9udGhzW3Q\/InNob3J0aGFuZCI6ImxvbmdoYW5kIl1bZV19LHY9e0Q6cCxGOmZ1bmN0aW9uKGUsdCxuKXtlLnNldE1vbnRoKG4ubW9udGhzLmxvbmdoYW5kLmluZGV4T2YodCkpfSxHOmZ1bmN0aW9uKGUsdCl7ZS5zZXRIb3VycyhwYXJzZUZsb2F0KHQpKX0sSDpmdW5jdGlvbihlLHQpe2Uuc2V0SG91cnMocGFyc2VGbG9hdCh0KSl9LEo6ZnVuY3Rpb24oZSx0KXtlLnNldERhdGUocGFyc2VGbG9hdCh0KSl9LEs6ZnVuY3Rpb24oZSx0LG4pe2Uuc2V0SG91cnMoZS5nZXRIb3VycygpJTEyKzEyKnIobmV3IFJlZ0V4cChuLmFtUE1bMV0sImkiKS50ZXN0KHQpKSl9LE06ZnVuY3Rpb24oZSx0LG4pe2Uuc2V0TW9udGgobi5tb250aHMuc2hvcnRoYW5kLmluZGV4T2YodCkpfSxTOmZ1bmN0aW9uKGUsdCl7ZS5zZXRTZWNvbmRzKHBhcnNlRmxvYXQodCkpfSxVOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBEYXRlKDFlMypwYXJzZUZsb2F0KHQpKX0sVzpmdW5jdGlvbihlLHQsbil7dmFyIGE9cGFyc2VJbnQodCksaT1uZXcgRGF0ZShlLmdldEZ1bGxZZWFyKCksMCwyKzcqKGEtMSksMCwwLDAsMCk7cmV0dXJuIGkuc2V0RGF0ZShpLmdldERhdGUoKS1pLmdldERheSgpK24uZmlyc3REYXlPZldlZWspLGl9LFk6ZnVuY3Rpb24oZSx0KXtlLnNldEZ1bGxZZWFyKHBhcnNlRmxvYXQodCkpfSxaOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBEYXRlKHQpfSxkOmZ1bmN0aW9uKGUsdCl7ZS5zZXREYXRlKHBhcnNlRmxvYXQodCkpfSxoOmZ1bmN0aW9uKGUsdCl7ZS5zZXRIb3VycyhwYXJzZUZsb2F0KHQpKX0saTpmdW5jdGlvbihlLHQpe2Uuc2V0TWludXRlcyhwYXJzZUZsb2F0KHQpKX0sajpmdW5jdGlvbihlLHQpe2Uuc2V0RGF0ZShwYXJzZUZsb2F0KHQpKX0sbDpwLG06ZnVuY3Rpb24oZSx0KXtlLnNldE1vbnRoKHBhcnNlRmxvYXQodCktMSl9LG46ZnVuY3Rpb24oZSx0KXtlLnNldE1vbnRoKHBhcnNlRmxvYXQodCktMSl9LHM6ZnVuY3Rpb24oZSx0KXtlLnNldFNlY29uZHMocGFyc2VGbG9hdCh0KSl9LHU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IERhdGUocGFyc2VGbG9hdCh0KSl9LHc6cCx5OmZ1bmN0aW9uKGUsdCl7ZS5zZXRGdWxsWWVhcigyZTMrcGFyc2VGbG9hdCh0KSl9fSxEPXtEOiIoXFx3KykiLEY6IihcXHcrKSIsRzoiKFxcZFxcZHxcXGQpIixIOiIoXFxkXFxkfFxcZCkiLEo6IihcXGRcXGR8XFxkKVxcdysiLEs6IiIsTToiKFxcdyspIixTOiIoXFxkXFxkfFxcZCkiLFU6IiguKykiLFc6IihcXGRcXGR8XFxkKSIsWToiKFxcZHs0fSkiLFo6IiguKykiLGQ6IihcXGRcXGR8XFxkKSIsaDoiKFxcZFxcZHxcXGQpIixpOiIoXFxkXFxkfFxcZCkiLGo6IihcXGRcXGR8XFxkKSIsbDoiKFxcdyspIixtOiIoXFxkXFxkfFxcZCkiLG46IihcXGRcXGR8XFxkKSIsczoiKFxcZFxcZHxcXGQpIix1OiIoLispIix3OiIoXFxkXFxkfFxcZCkiLHk6IihcXGR7Mn0pIn0sdz17WjpmdW5jdGlvbihlKXtyZXR1cm4gZS50b0lTT1N0cmluZygpfSxEOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdC53ZWVrZGF5cy5zaG9ydGhhbmRbdy53KGUsdCxuKV19LEY6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBoKHcubihlLHQsbiktMSwhMSx0KX0sRzpmdW5jdGlvbihlLHQsbil7cmV0dXJuIG8ody5oKGUsdCxuKSl9LEg6ZnVuY3Rpb24oZSl7cmV0dXJuIG8oZS5nZXRIb3VycygpKX0sSjpmdW5jdGlvbihlLHQpe3JldHVybiB2b2lkIDAhPT10Lm9yZGluYWw\/ZS5nZXREYXRlKCkrdC5vcmRpbmFsKGUuZ2V0RGF0ZSgpKTplLmdldERhdGUoKX0sSzpmdW5jdGlvbihlLHQpe3JldHVybiB0LmFtUE1bcihlLmdldEhvdXJzKCk+MTEpXX0sTTpmdW5jdGlvbihlLHQpe3JldHVybiBoKGUuZ2V0TW9udGgoKSwhMCx0KX0sUzpmdW5jdGlvbihlKXtyZXR1cm4gbyhlLmdldFNlY29uZHMoKSl9LFU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0VGltZSgpLzFlM30sVzpmdW5jdGlvbihlLHQsbil7cmV0dXJuIG4uZ2V0V2VlayhlKX0sWTpmdW5jdGlvbihlKXtyZXR1cm4gbyhlLmdldEZ1bGxZZWFyKCksNCl9LGQ6ZnVuY3Rpb24oZSl7cmV0dXJuIG8oZS5nZXREYXRlKCkpfSxoOmZ1bmN0aW9uKGUpe3JldHVybiBlLmdldEhvdXJzKCklMTI\/ZS5nZXRIb3VycygpJTEyOjEyfSxpOmZ1bmN0aW9uKGUpe3JldHVybiBvKGUuZ2V0TWludXRlcygpKX0sajpmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXREYXRlKCl9LGw6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC53ZWVrZGF5cy5sb25naGFuZFtlLmdldERheSgpXX0sbTpmdW5jdGlvbihlKXtyZXR1cm4gbyhlLmdldE1vbnRoKCkrMSl9LG46ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0TW9udGgoKSsxfSxzOmZ1bmN0aW9uKGUpe3JldHVybiBlLmdldFNlY29uZHMoKX0sdTpmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRUaW1lKCl9LHc6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0RGF5KCl9LHk6ZnVuY3Rpb24oZSl7cmV0dXJuIFN0cmluZyhlLmdldEZ1bGxZZWFyKCkpLnN1YnN0cmluZygyKX19LGI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb25maWcsbj12b2lkIDA9PT10P2E6dCxvPWUubDEwbixyPXZvaWQgMD09PW8\/aTpvLGw9ZS5pc01vYmlsZSxjPXZvaWQgMCE9PWwmJmw7cmV0dXJuIGZ1bmN0aW9uKGUsdCxhKXt2YXIgaT1hfHxyO3JldHVybiB2b2lkIDA9PT1uLmZvcm1hdERhdGV8fGM\/dC5zcGxpdCgiIikubWFwKChmdW5jdGlvbih0LGEsbyl7cmV0dXJuIHdbdF0mJiJcXCIhPT1vW2EtMV0\/d1t0XShlLGksbik6IlxcIiE9PXQ\/dDoiIn0pKS5qb2luKCIiKTpuLmZvcm1hdERhdGUoZSx0LGkpfX0sQz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbmZpZyxuPXZvaWQgMD09PXQ\/YTp0LG89ZS5sMTBuLHI9dm9pZCAwPT09bz9pOm87cmV0dXJuIGZ1bmN0aW9uKGUsdCxpLG8pe2lmKDA9PT1lfHxlKXt2YXIgbCxjPW98fHIsZD1lO2lmKGUgaW5zdGFuY2VvZiBEYXRlKWw9bmV3IERhdGUoZS5nZXRUaW1lKCkpO2Vsc2UgaWYoInN0cmluZyIhPXR5cGVvZiBlJiZ2b2lkIDAhPT1lLnRvRml4ZWQpbD1uZXcgRGF0ZShlKTtlbHNlIGlmKCJzdHJpbmciPT10eXBlb2YgZSl7dmFyIHM9dHx8KG58fGEpLmRhdGVGb3JtYXQsdT1TdHJpbmcoZSkudHJpbSgpO2lmKCJ0b2RheSI9PT11KWw9bmV3IERhdGUsaT0hMDtlbHNlIGlmKC9aJC8udGVzdCh1KXx8L0dNVCQvLnRlc3QodSkpbD1uZXcgRGF0ZShlKTtlbHNlIGlmKG4mJm4ucGFyc2VEYXRlKWw9bi5wYXJzZURhdGUoZSxzKTtlbHNle2w9biYmbi5ub0NhbGVuZGFyP25ldyBEYXRlKChuZXcgRGF0ZSkuc2V0SG91cnMoMCwwLDAsMCkpOm5ldyBEYXRlKChuZXcgRGF0ZSkuZ2V0RnVsbFllYXIoKSwwLDEsMCwwLDAsMCk7Zm9yKHZhciBmPXZvaWQgMCxtPVtdLGc9MCxwPTAsaD0iIjtnPHMubGVuZ3RoO2crKyl7dmFyIHc9c1tnXSxiPSJcXCI9PT13LEM9IlxcIj09PXNbZy0xXXx8YjtpZihEW3ddJiYhQyl7aCs9RFt3XTt2YXIgTT1uZXcgUmVnRXhwKGgpLmV4ZWMoZSk7TSYmKGY9ITApJiZtWyJZIiE9PXc\/InB1c2giOiJ1bnNoaWZ0Il0oe2ZuOnZbd10sdmFsOk1bKytwXX0pfWVsc2UgYnx8KGgrPSIuIik7bS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgdD1lLmZuLG49ZS52YWw7cmV0dXJuIGw9dChsLG4sYyl8fGx9KSl9bD1mP2w6dm9pZCAwfX1pZihsIGluc3RhbmNlb2YgRGF0ZSYmIWlzTmFOKGwuZ2V0VGltZSgpKSlyZXR1cm4hMD09PWkmJmwuc2V0SG91cnMoMCwwLDAsMCksbDtuLmVycm9ySGFuZGxlcihuZXcgRXJyb3IoIkludmFsaWQgZGF0ZSBwcm92aWRlZDogIitkKSl9fX07ZnVuY3Rpb24gTShlLHQsbil7cmV0dXJuIHZvaWQgMD09PW4mJihuPSEwKSwhMSE9PW4\/bmV3IERhdGUoZS5nZXRUaW1lKCkpLnNldEhvdXJzKDAsMCwwLDApLW5ldyBEYXRlKHQuZ2V0VGltZSgpKS5zZXRIb3VycygwLDAsMCwwKTplLmdldFRpbWUoKS10LmdldFRpbWUoKX12YXIgeT04NjRlNTtmdW5jdGlvbiB4KGUpe3ZhciB0PWUuZGVmYXVsdEhvdXIsbj1lLmRlZmF1bHRNaW51dGUsYT1lLmRlZmF1bHRTZWNvbmRzO2lmKHZvaWQgMCE9PWUubWluRGF0ZSl7dmFyIGk9ZS5taW5EYXRlLmdldEhvdXJzKCksbz1lLm1pbkRhdGUuZ2V0TWludXRlcygpLHI9ZS5taW5EYXRlLmdldFNlY29uZHMoKTt0PGkmJih0PWkpLHQ9PT1pJiZuPG8mJihuPW8pLHQ9PT1pJiZuPT09byYmYTxyJiYoYT1lLm1pbkRhdGUuZ2V0U2Vjb25kcygpKX1pZih2b2lkIDAhPT1lLm1heERhdGUpe3ZhciBsPWUubWF4RGF0ZS5nZXRIb3VycygpLGM9ZS5tYXhEYXRlLmdldE1pbnV0ZXMoKTsodD1NYXRoLm1pbih0LGwpKT09PWwmJihuPU1hdGgubWluKGMsbikpLHQ9PT1sJiZuPT09YyYmKGE9ZS5tYXhEYXRlLmdldFNlY29uZHMoKSl9cmV0dXJue2hvdXJzOnQsbWludXRlczpuLHNlY29uZHM6YX19ImZ1bmN0aW9uIiE9dHlwZW9mIE9iamVjdC5hc3NpZ24mJihPYmplY3QuYXNzaWduPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl0W24tMV09YXJndW1lbnRzW25dO2lmKCFlKXRocm93IFR5cGVFcnJvcigiQ2Fubm90IGNvbnZlcnQgdW5kZWZpbmVkIG9yIG51bGwgdG8gb2JqZWN0Iik7Zm9yKHZhciBhPWZ1bmN0aW9uKHQpe3QmJk9iamVjdC5rZXlzKHQpLmZvckVhY2goKGZ1bmN0aW9uKG4pe3JldHVybiBlW25dPXRbbl19KSl9LGk9MCxvPXQ7aTxvLmxlbmd0aDtpKyspe3ZhciByPW9baV07YShyKX1yZXR1cm4gZX0pO2Z1bmN0aW9uIEUocCx2KXt2YXIgdz17Y29uZmlnOmUoZSh7fSxhKSxULmRlZmF1bHRDb25maWcpLGwxMG46aX07ZnVuY3Rpb24gRShlKXtyZXR1cm4gZS5iaW5kKHcpfWZ1bmN0aW9uIGsoKXt2YXIgZT13LmNvbmZpZzshMT09PWUud2Vla051bWJlcnMmJjE9PT1lLnNob3dNb250aHN8fCEwIT09ZS5ub0NhbGVuZGFyJiZ3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKChmdW5jdGlvbigpe2lmKHZvaWQgMCE9PXcuY2FsZW5kYXJDb250YWluZXImJih3LmNhbGVuZGFyQ29udGFpbmVyLnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiIsdy5jYWxlbmRhckNvbnRhaW5lci5zdHlsZS5kaXNwbGF5PSJibG9jayIpLHZvaWQgMCE9PXcuZGF5c0NvbnRhaW5lcil7dmFyIHQ9KHcuZGF5cy5vZmZzZXRXaWR0aCsxKSplLnNob3dNb250aHM7dy5kYXlzQ29udGFpbmVyLnN0eWxlLndpZHRoPXQrInB4Iix3LmNhbGVuZGFyQ29udGFpbmVyLnN0eWxlLndpZHRoPXQrKHZvaWQgMCE9PXcud2Vla1dyYXBwZXI\/dy53ZWVrV3JhcHBlci5vZmZzZXRXaWR0aDowKSsicHgiLHcuY2FsZW5kYXJDb250YWluZXIuc3R5bGUucmVtb3ZlUHJvcGVydHkoInZpc2liaWxpdHkiKSx3LmNhbGVuZGFyQ29udGFpbmVyLnN0eWxlLnJlbW92ZVByb3BlcnR5KCJkaXNwbGF5Iil9fSkpfWZ1bmN0aW9uIEkoZSl7aWYoMD09PXcuc2VsZWN0ZWREYXRlcy5sZW5ndGgpe3ZhciB0PXZvaWQgMD09PXcuY29uZmlnLm1pbkRhdGV8fE0obmV3IERhdGUsdy5jb25maWcubWluRGF0ZSk+PTA\/bmV3IERhdGU6bmV3IERhdGUody5jb25maWcubWluRGF0ZS5nZXRUaW1lKCkpLG49eCh3LmNvbmZpZyk7dC5zZXRIb3VycyhuLmhvdXJzLG4ubWludXRlcyxuLnNlY29uZHMsdC5nZXRNaWxsaXNlY29uZHMoKSksdy5zZWxlY3RlZERhdGVzPVt0XSx3LmxhdGVzdFNlbGVjdGVkRGF0ZU9iaj10fXZvaWQgMCE9PWUmJiJibHVyIiE9PWUudHlwZSYmZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpO3ZhciB0PSJrZXlkb3duIj09PWUudHlwZSxuPWcoZSksYT1uO3ZvaWQgMCE9PXcuYW1QTSYmbj09PXcuYW1QTSYmKHcuYW1QTS50ZXh0Q29udGVudD13LmwxMG4uYW1QTVtyKHcuYW1QTS50ZXh0Q29udGVudD09PXcubDEwbi5hbVBNWzBdKV0pO3ZhciBpPXBhcnNlRmxvYXQoYS5nZXRBdHRyaWJ1dGUoIm1pbiIpKSxsPXBhcnNlRmxvYXQoYS5nZXRBdHRyaWJ1dGUoIm1heCIpKSxjPXBhcnNlRmxvYXQoYS5nZXRBdHRyaWJ1dGUoInN0ZXAiKSksZD1wYXJzZUludChhLnZhbHVlLDEwKSxzPWUuZGVsdGF8fCh0PzM4PT09ZS53aGljaD8xOi0xOjApLHU9ZCtjKnM7aWYodm9pZCAwIT09YS52YWx1ZSYmMj09PWEudmFsdWUubGVuZ3RoKXt2YXIgZj1hPT09dy5ob3VyRWxlbWVudCxtPWE9PT13Lm1pbnV0ZUVsZW1lbnQ7dTxpPyh1PWwrdStyKCFmKSsocihmKSYmcighdy5hbVBNKSksbSYmaih2b2lkIDAsLTEsdy5ob3VyRWxlbWVudCkpOnU+bCYmKHU9YT09PXcuaG91ckVsZW1lbnQ\/dS1sLXIoIXcuYW1QTSk6aSxtJiZqKHZvaWQgMCwxLHcuaG91ckVsZW1lbnQpKSx3LmFtUE0mJmYmJigxPT09Yz91K2Q9PT0yMzpNYXRoLmFicyh1LWQpPmMpJiYody5hbVBNLnRleHRDb250ZW50PXcubDEwbi5hbVBNW3Iody5hbVBNLnRleHRDb250ZW50PT09dy5sMTBuLmFtUE1bMF0pXSksYS52YWx1ZT1vKHUpfX0oZSk7dmFyIGE9dy5faW5wdXQudmFsdWU7UygpLGJlKCksdy5faW5wdXQudmFsdWUhPT1hJiZ3Ll9kZWJvdW5jZWRDaGFuZ2UoKX1mdW5jdGlvbiBTKCl7aWYodm9pZCAwIT09dy5ob3VyRWxlbWVudCYmdm9pZCAwIT09dy5taW51dGVFbGVtZW50KXt2YXIgZSx0LG49KHBhcnNlSW50KHcuaG91ckVsZW1lbnQudmFsdWUuc2xpY2UoLTIpLDEwKXx8MCklMjQsYT0ocGFyc2VJbnQody5taW51dGVFbGVtZW50LnZhbHVlLDEwKXx8MCklNjAsaT12b2lkIDAhPT13LnNlY29uZEVsZW1lbnQ\/KHBhcnNlSW50KHcuc2Vjb25kRWxlbWVudC52YWx1ZSwxMCl8fDApJTYwOjA7dm9pZCAwIT09dy5hbVBNJiYoZT1uLHQ9dy5hbVBNLnRleHRDb250ZW50LG49ZSUxMisxMipyKHQ9PT13LmwxMG4uYW1QTVsxXSkpO3ZhciBvPXZvaWQgMCE9PXcuY29uZmlnLm1pblRpbWV8fHcuY29uZmlnLm1pbkRhdGUmJncubWluRGF0ZUhhc1RpbWUmJncubGF0ZXN0U2VsZWN0ZWREYXRlT2JqJiYwPT09TSh3LmxhdGVzdFNlbGVjdGVkRGF0ZU9iaix3LmNvbmZpZy5taW5EYXRlLCEwKTtpZih2b2lkIDAhPT13LmNvbmZpZy5tYXhUaW1lfHx3LmNvbmZpZy5tYXhEYXRlJiZ3Lm1heERhdGVIYXNUaW1lJiZ3LmxhdGVzdFNlbGVjdGVkRGF0ZU9iaiYmMD09PU0ody5sYXRlc3RTZWxlY3RlZERhdGVPYmosdy5jb25maWcubWF4RGF0ZSwhMCkpe3ZhciBsPXZvaWQgMCE9PXcuY29uZmlnLm1heFRpbWU\/dy5jb25maWcubWF4VGltZTp3LmNvbmZpZy5tYXhEYXRlOyhuPU1hdGgubWluKG4sbC5nZXRIb3VycygpKSk9PT1sLmdldEhvdXJzKCkmJihhPU1hdGgubWluKGEsbC5nZXRNaW51dGVzKCkpKSxhPT09bC5nZXRNaW51dGVzKCkmJihpPU1hdGgubWluKGksbC5nZXRTZWNvbmRzKCkpKX1pZihvKXt2YXIgYz12b2lkIDAhPT13LmNvbmZpZy5taW5UaW1lP3cuY29uZmlnLm1pblRpbWU6dy5jb25maWcubWluRGF0ZTsobj1NYXRoLm1heChuLGMuZ2V0SG91cnMoKSkpPT09Yy5nZXRIb3VycygpJiZhPGMuZ2V0TWludXRlcygpJiYoYT1jLmdldE1pbnV0ZXMoKSksYT09PWMuZ2V0TWludXRlcygpJiYoaT1NYXRoLm1heChpLGMuZ2V0U2Vjb25kcygpKSl9TyhuLGEsaSl9fWZ1bmN0aW9uIF8oZSl7dmFyIHQ9ZXx8dy5sYXRlc3RTZWxlY3RlZERhdGVPYmo7dCYmTyh0LmdldEhvdXJzKCksdC5nZXRNaW51dGVzKCksdC5nZXRTZWNvbmRzKCkpfWZ1bmN0aW9uIE8oZSx0LG4pe3ZvaWQgMCE9PXcubGF0ZXN0U2VsZWN0ZWREYXRlT2JqJiZ3LmxhdGVzdFNlbGVjdGVkRGF0ZU9iai5zZXRIb3VycyhlJTI0LHQsbnx8MCwwKSx3LmhvdXJFbGVtZW50JiZ3Lm1pbnV0ZUVsZW1lbnQmJiF3LmlzTW9iaWxlJiYody5ob3VyRWxlbWVudC52YWx1ZT1vKHcuY29uZmlnLnRpbWVfMjRocj9lOigxMitlKSUxMisxMipyKGUlMTI9PTApKSx3Lm1pbnV0ZUVsZW1lbnQudmFsdWU9byh0KSx2b2lkIDAhPT13LmFtUE0mJih3LmFtUE0udGV4dENvbnRlbnQ9dy5sMTBuLmFtUE1bcihlPj0xMildKSx2b2lkIDAhPT13LnNlY29uZEVsZW1lbnQmJih3LnNlY29uZEVsZW1lbnQudmFsdWU9byhuKSkpfWZ1bmN0aW9uIEYoZSl7dmFyIHQ9ZyhlKSxuPXBhcnNlSW50KHQudmFsdWUpKyhlLmRlbHRhfHwwKTsobi8xZTM+MXx8IkVudGVyIj09PWUua2V5JiYhL1teXGRdLy50ZXN0KG4udG9TdHJpbmcoKSkpJiZRKG4pfWZ1bmN0aW9uIEEoZSx0LG4sYSl7cmV0dXJuIHQgaW5zdGFuY2VvZiBBcnJheT90LmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBBKGUsdCxuLGEpfSkpOmUgaW5zdGFuY2VvZiBBcnJheT9lLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBBKGUsdCxuLGEpfSkpOihlLmFkZEV2ZW50TGlzdGVuZXIodCxuLGEpLHZvaWQgdy5faGFuZGxlcnMucHVzaCh7cmVtb3ZlOmZ1bmN0aW9uKCl7cmV0dXJuIGUucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LG4pfX0pKX1mdW5jdGlvbiBOKCl7cGUoIm9uQ2hhbmdlIil9ZnVuY3Rpb24gUChlLHQpe3ZhciBuPXZvaWQgMCE9PWU\/dy5wYXJzZURhdGUoZSk6dy5sYXRlc3RTZWxlY3RlZERhdGVPYmp8fCh3LmNvbmZpZy5taW5EYXRlJiZ3LmNvbmZpZy5taW5EYXRlPncubm93P3cuY29uZmlnLm1pbkRhdGU6dy5jb25maWcubWF4RGF0ZSYmdy5jb25maWcubWF4RGF0ZTx3Lm5vdz93LmNvbmZpZy5tYXhEYXRlOncubm93KSxhPXcuY3VycmVudFllYXIsaT13LmN1cnJlbnRNb250aDt0cnl7dm9pZCAwIT09biYmKHcuY3VycmVudFllYXI9bi5nZXRGdWxsWWVhcigpLHcuY3VycmVudE1vbnRoPW4uZ2V0TW9udGgoKSl9Y2F0Y2goZSl7ZS5tZXNzYWdlPSJJbnZhbGlkIGRhdGUgc3VwcGxpZWQ6ICIrbix3LmNvbmZpZy5lcnJvckhhbmRsZXIoZSl9dCYmdy5jdXJyZW50WWVhciE9PWEmJihwZSgib25ZZWFyQ2hhbmdlIiksSygpKSwhdHx8dy5jdXJyZW50WWVhcj09PWEmJncuY3VycmVudE1vbnRoPT09aXx8cGUoIm9uTW9udGhDaGFuZ2UiKSx3LnJlZHJhdygpfWZ1bmN0aW9uIFkoZSl7dmFyIHQ9ZyhlKTt+dC5jbGFzc05hbWUuaW5kZXhPZigiYXJyb3ciKSYmaihlLHQuY2xhc3NMaXN0LmNvbnRhaW5zKCJhcnJvd1VwIik\/MTotMSl9ZnVuY3Rpb24gaihlLHQsbil7dmFyIGE9ZSYmZyhlKSxpPW58fGEmJmEucGFyZW50Tm9kZSYmYS5wYXJlbnROb2RlLmZpcnN0Q2hpbGQsbz1oZSgiaW5jcmVtZW50Iik7by5kZWx0YT10LGkmJmkuZGlzcGF0Y2hFdmVudChvKX1mdW5jdGlvbiBIKGUsdCxuLGEpe3ZhciBpPVgodCwhMCksbz1zKCJzcGFuIiwiZmxhdHBpY2tyLWRheSAiK2UsdC5nZXREYXRlKCkudG9TdHJpbmcoKSk7cmV0dXJuIG8uZGF0ZU9iaj10LG8uJGk9YSxvLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsdy5mb3JtYXREYXRlKHQsdy5jb25maWcuYXJpYURhdGVGb3JtYXQpKSwtMT09PWUuaW5kZXhPZigiaGlkZGVuIikmJjA9PT1NKHQsdy5ub3cpJiYody50b2RheURhdGVFbGVtPW8sby5jbGFzc0xpc3QuYWRkKCJ0b2RheSIpLG8uc2V0QXR0cmlidXRlKCJhcmlhLWN1cnJlbnQiLCJkYXRlIikpLGk\/KG8udGFiSW5kZXg9LTEsdmUodCkmJihvLmNsYXNzTGlzdC5hZGQoInNlbGVjdGVkIiksdy5zZWxlY3RlZERhdGVFbGVtPW8sInJhbmdlIj09PXcuY29uZmlnLm1vZGUmJihkKG8sInN0YXJ0UmFuZ2UiLHcuc2VsZWN0ZWREYXRlc1swXSYmMD09PU0odCx3LnNlbGVjdGVkRGF0ZXNbMF0sITApKSxkKG8sImVuZFJhbmdlIix3LnNlbGVjdGVkRGF0ZXNbMV0mJjA9PT1NKHQsdy5zZWxlY3RlZERhdGVzWzFdLCEwKSksIm5leHRNb250aERheSI9PT1lJiZvLmNsYXNzTGlzdC5hZGQoImluUmFuZ2UiKSkpKTpvLmNsYXNzTGlzdC5hZGQoImZsYXRwaWNrci1kaXNhYmxlZCIpLCJyYW5nZSI9PT13LmNvbmZpZy5tb2RlJiZmdW5jdGlvbihlKXtyZXR1cm4hKCJyYW5nZSIhPT13LmNvbmZpZy5tb2RlfHx3LnNlbGVjdGVkRGF0ZXMubGVuZ3RoPDIpJiYoTShlLHcuc2VsZWN0ZWREYXRlc1swXSk+PTAmJk0oZSx3LnNlbGVjdGVkRGF0ZXNbMV0pPD0wKX0odCkmJiF2ZSh0KSYmby5jbGFzc0xpc3QuYWRkKCJpblJhbmdlIiksdy53ZWVrTnVtYmVycyYmMT09PXcuY29uZmlnLnNob3dNb250aHMmJiJwcmV2TW9udGhEYXkiIT09ZSYmbiU3PT0xJiZ3LndlZWtOdW1iZXJzLmluc2VydEFkamFjZW50SFRNTCgiYmVmb3JlZW5kIiwiPHNwYW4gY2xhc3M9J2ZsYXRwaWNrci1kYXknPiIrdy5jb25maWcuZ2V0V2Vlayh0KSsiPC9zcGFuPiIpLHBlKCJvbkRheUNyZWF0ZSIsbyksb31mdW5jdGlvbiBMKGUpe2UuZm9jdXMoKSwicmFuZ2UiPT09dy5jb25maWcubW9kZSYmYWUoZSl9ZnVuY3Rpb24gVyhlKXtmb3IodmFyIHQ9ZT4wPzA6dy5jb25maWcuc2hvd01vbnRocy0xLG49ZT4wP3cuY29uZmlnLnNob3dNb250aHM6LTEsYT10O2EhPW47YSs9ZSlmb3IodmFyIGk9dy5kYXlzQ29udGFpbmVyLmNoaWxkcmVuW2FdLG89ZT4wPzA6aS5jaGlsZHJlbi5sZW5ndGgtMSxyPWU+MD9pLmNoaWxkcmVuLmxlbmd0aDotMSxsPW87bCE9cjtsKz1lKXt2YXIgYz1pLmNoaWxkcmVuW2xdO2lmKC0xPT09Yy5jbGFzc05hbWUuaW5kZXhPZigiaGlkZGVuIikmJlgoYy5kYXRlT2JqKSlyZXR1cm4gY319ZnVuY3Rpb24gUihlLHQpe3ZhciBuPWVlKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnR8fGRvY3VtZW50LmJvZHkpLGE9dm9pZCAwIT09ZT9lOm4\/ZG9jdW1lbnQuYWN0aXZlRWxlbWVudDp2b2lkIDAhPT13LnNlbGVjdGVkRGF0ZUVsZW0mJmVlKHcuc2VsZWN0ZWREYXRlRWxlbSk\/dy5zZWxlY3RlZERhdGVFbGVtOnZvaWQgMCE9PXcudG9kYXlEYXRlRWxlbSYmZWUody50b2RheURhdGVFbGVtKT93LnRvZGF5RGF0ZUVsZW06Vyh0PjA\/MTotMSk7dm9pZCAwPT09YT93Ll9pbnB1dC5mb2N1cygpOm4\/ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49LTE9PT1lLmNsYXNzTmFtZS5pbmRleE9mKCJNb250aCIpP2UuZGF0ZU9iai5nZXRNb250aCgpOncuY3VycmVudE1vbnRoLGE9dD4wP3cuY29uZmlnLnNob3dNb250aHM6LTEsaT10PjA\/MTotMSxvPW4tdy5jdXJyZW50TW9udGg7byE9YTtvKz1pKWZvcih2YXIgcj13LmRheXNDb250YWluZXIuY2hpbGRyZW5bb10sbD1uLXcuY3VycmVudE1vbnRoPT09bz9lLiRpK3Q6dDwwP3IuY2hpbGRyZW4ubGVuZ3RoLTE6MCxjPXIuY2hpbGRyZW4ubGVuZ3RoLGQ9bDtkPj0wJiZkPGMmJmQhPSh0PjA\/YzotMSk7ZCs9aSl7dmFyIHM9ci5jaGlsZHJlbltkXTtpZigtMT09PXMuY2xhc3NOYW1lLmluZGV4T2YoImhpZGRlbiIpJiZYKHMuZGF0ZU9iaikmJk1hdGguYWJzKGUuJGktZCk+PU1hdGguYWJzKHQpKXJldHVybiBMKHMpfXcuY2hhbmdlTW9udGgoaSksUihXKGkpLDApfShhLHQpOkwoYSl9ZnVuY3Rpb24gQihlLHQpe2Zvcih2YXIgbj0obmV3IERhdGUoZSx0LDEpLmdldERheSgpLXcubDEwbi5maXJzdERheU9mV2Vlays3KSU3LGE9dy51dGlscy5nZXREYXlzSW5Nb250aCgodC0xKzEyKSUxMixlKSxpPXcudXRpbHMuZ2V0RGF5c0luTW9udGgodCxlKSxvPXdpbmRvdy5kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkscj13LmNvbmZpZy5zaG93TW9udGhzPjEsbD1yPyJwcmV2TW9udGhEYXkgaGlkZGVuIjoicHJldk1vbnRoRGF5IixjPXI\/Im5leHRNb250aERheSBoaWRkZW4iOiJuZXh0TW9udGhEYXkiLGQ9YSsxLW4sdT0wO2Q8PWE7ZCsrLHUrKylvLmFwcGVuZENoaWxkKEgobCxuZXcgRGF0ZShlLHQtMSxkKSxkLHUpKTtmb3IoZD0xO2Q8PWk7ZCsrLHUrKylvLmFwcGVuZENoaWxkKEgoIiIsbmV3IERhdGUoZSx0LGQpLGQsdSkpO2Zvcih2YXIgZj1pKzE7Zjw9NDItbiYmKDE9PT13LmNvbmZpZy5zaG93TW9udGhzfHx1JTchPTApO2YrKyx1Kyspby5hcHBlbmRDaGlsZChIKGMsbmV3IERhdGUoZSx0KzEsZiVpKSxmLHUpKTt2YXIgbT1zKCJkaXYiLCJkYXlDb250YWluZXIiKTtyZXR1cm4gbS5hcHBlbmRDaGlsZChvKSxtfWZ1bmN0aW9uIEooKXtpZih2b2lkIDAhPT13LmRheXNDb250YWluZXIpe3Uody5kYXlzQ29udGFpbmVyKSx3LndlZWtOdW1iZXJzJiZ1KHcud2Vla051bWJlcnMpO2Zvcih2YXIgZT1kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksdD0wO3Q8dy5jb25maWcuc2hvd01vbnRoczt0Kyspe3ZhciBuPW5ldyBEYXRlKHcuY3VycmVudFllYXIsdy5jdXJyZW50TW9udGgsMSk7bi5zZXRNb250aCh3LmN1cnJlbnRNb250aCt0KSxlLmFwcGVuZENoaWxkKEIobi5nZXRGdWxsWWVhcigpLG4uZ2V0TW9udGgoKSkpfXcuZGF5c0NvbnRhaW5lci5hcHBlbmRDaGlsZChlKSx3LmRheXM9dy5kYXlzQ29udGFpbmVyLmZpcnN0Q2hpbGQsInJhbmdlIj09PXcuY29uZmlnLm1vZGUmJjE9PT13LnNlbGVjdGVkRGF0ZXMubGVuZ3RoJiZhZSgpfX1mdW5jdGlvbiBLKCl7aWYoISh3LmNvbmZpZy5zaG93TW9udGhzPjF8fCJkcm9wZG93biIhPT13LmNvbmZpZy5tb250aFNlbGVjdG9yVHlwZSkpe3ZhciBlPWZ1bmN0aW9uKGUpe3JldHVybiEodm9pZCAwIT09dy5jb25maWcubWluRGF0ZSYmdy5jdXJyZW50WWVhcj09PXcuY29uZmlnLm1pbkRhdGUuZ2V0RnVsbFllYXIoKSYmZTx3LmNvbmZpZy5taW5EYXRlLmdldE1vbnRoKCkpJiYhKHZvaWQgMCE9PXcuY29uZmlnLm1heERhdGUmJncuY3VycmVudFllYXI9PT13LmNvbmZpZy5tYXhEYXRlLmdldEZ1bGxZZWFyKCkmJmU+dy5jb25maWcubWF4RGF0ZS5nZXRNb250aCgpKX07dy5tb250aHNEcm9wZG93bkNvbnRhaW5lci50YWJJbmRleD0tMSx3Lm1vbnRoc0Ryb3Bkb3duQ29udGFpbmVyLmlubmVySFRNTD0iIjtmb3IodmFyIHQ9MDt0PDEyO3QrKylpZihlKHQpKXt2YXIgbj1zKCJvcHRpb24iLCJmbGF0cGlja3ItbW9udGhEcm9wZG93bi1tb250aCIpO24udmFsdWU9bmV3IERhdGUody5jdXJyZW50WWVhcix0KS5nZXRNb250aCgpLnRvU3RyaW5nKCksbi50ZXh0Q29udGVudD1oKHQsdy5jb25maWcuc2hvcnRoYW5kQ3VycmVudE1vbnRoLHcubDEwbiksbi50YWJJbmRleD0tMSx3LmN1cnJlbnRNb250aD09PXQmJihuLnNlbGVjdGVkPSEwKSx3Lm1vbnRoc0Ryb3Bkb3duQ29udGFpbmVyLmFwcGVuZENoaWxkKG4pfX19ZnVuY3Rpb24gVSgpe3ZhciBlLHQ9cygiZGl2IiwiZmxhdHBpY2tyLW1vbnRoIiksbj13aW5kb3cuZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO3cuY29uZmlnLnNob3dNb250aHM+MXx8InN0YXRpYyI9PT13LmNvbmZpZy5tb250aFNlbGVjdG9yVHlwZT9lPXMoInNwYW4iLCJjdXItbW9udGgiKToody5tb250aHNEcm9wZG93bkNvbnRhaW5lcj1zKCJzZWxlY3QiLCJmbGF0cGlja3ItbW9udGhEcm9wZG93bi1tb250aHMiKSx3Lm1vbnRoc0Ryb3Bkb3duQ29udGFpbmVyLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsdy5sMTBuLm1vbnRoQXJpYUxhYmVsKSxBKHcubW9udGhzRHJvcGRvd25Db250YWluZXIsImNoYW5nZSIsKGZ1bmN0aW9uKGUpe3ZhciB0PWcoZSksbj1wYXJzZUludCh0LnZhbHVlLDEwKTt3LmNoYW5nZU1vbnRoKG4tdy5jdXJyZW50TW9udGgpLHBlKCJvbk1vbnRoQ2hhbmdlIil9KSksSygpLGU9dy5tb250aHNEcm9wZG93bkNvbnRhaW5lcik7dmFyIGE9bSgiY3VyLXllYXIiLHt0YWJpbmRleDoiLTEifSksaT1hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpWzBdO2kuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIix3LmwxMG4ueWVhckFyaWFMYWJlbCksdy5jb25maWcubWluRGF0ZSYmaS5zZXRBdHRyaWJ1dGUoIm1pbiIsdy5jb25maWcubWluRGF0ZS5nZXRGdWxsWWVhcigpLnRvU3RyaW5nKCkpLHcuY29uZmlnLm1heERhdGUmJihpLnNldEF0dHJpYnV0ZSgibWF4Iix3LmNvbmZpZy5tYXhEYXRlLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKSksaS5kaXNhYmxlZD0hIXcuY29uZmlnLm1pbkRhdGUmJncuY29uZmlnLm1pbkRhdGUuZ2V0RnVsbFllYXIoKT09PXcuY29uZmlnLm1heERhdGUuZ2V0RnVsbFllYXIoKSk7dmFyIG89cygiZGl2IiwiZmxhdHBpY2tyLWN1cnJlbnQtbW9udGgiKTtyZXR1cm4gby5hcHBlbmRDaGlsZChlKSxvLmFwcGVuZENoaWxkKGEpLG4uYXBwZW5kQ2hpbGQobyksdC5hcHBlbmRDaGlsZChuKSx7Y29udGFpbmVyOnQseWVhckVsZW1lbnQ6aSxtb250aEVsZW1lbnQ6ZX19ZnVuY3Rpb24gcSgpe3Uody5tb250aE5hdiksdy5tb250aE5hdi5hcHBlbmRDaGlsZCh3LnByZXZNb250aE5hdiksdy5jb25maWcuc2hvd01vbnRocyYmKHcueWVhckVsZW1lbnRzPVtdLHcubW9udGhFbGVtZW50cz1bXSk7Zm9yKHZhciBlPXcuY29uZmlnLnNob3dNb250aHM7ZS0tOyl7dmFyIHQ9VSgpO3cueWVhckVsZW1lbnRzLnB1c2godC55ZWFyRWxlbWVudCksdy5tb250aEVsZW1lbnRzLnB1c2godC5tb250aEVsZW1lbnQpLHcubW9udGhOYXYuYXBwZW5kQ2hpbGQodC5jb250YWluZXIpfXcubW9udGhOYXYuYXBwZW5kQ2hpbGQody5uZXh0TW9udGhOYXYpfWZ1bmN0aW9uICQoKXt3LndlZWtkYXlDb250YWluZXI\/dSh3LndlZWtkYXlDb250YWluZXIpOncud2Vla2RheUNvbnRhaW5lcj1zKCJkaXYiLCJmbGF0cGlja3Itd2Vla2RheXMiKTtmb3IodmFyIGU9dy5jb25maWcuc2hvd01vbnRocztlLS07KXt2YXIgdD1zKCJkaXYiLCJmbGF0cGlja3Itd2Vla2RheWNvbnRhaW5lciIpO3cud2Vla2RheUNvbnRhaW5lci5hcHBlbmRDaGlsZCh0KX1yZXR1cm4geigpLHcud2Vla2RheUNvbnRhaW5lcn1mdW5jdGlvbiB6KCl7aWYody53ZWVrZGF5Q29udGFpbmVyKXt2YXIgZT13LmwxMG4uZmlyc3REYXlPZldlZWssbj10KHcubDEwbi53ZWVrZGF5cy5zaG9ydGhhbmQpO2U+MCYmZTxuLmxlbmd0aCYmKG49dChuLnNwbGljZShlLG4ubGVuZ3RoKSxuLnNwbGljZSgwLGUpKSk7Zm9yKHZhciBhPXcuY29uZmlnLnNob3dNb250aHM7YS0tOyl3LndlZWtkYXlDb250YWluZXIuY2hpbGRyZW5bYV0uaW5uZXJIVE1MPSJcbiAgICAgIDxzcGFuIGNsYXNzPSdmbGF0cGlja3Itd2Vla2RheSc+XG4gICAgICAgICIrbi5qb2luKCI8L3NwYW4+PHNwYW4gY2xhc3M9J2ZsYXRwaWNrci13ZWVrZGF5Jz4iKSsiXG4gICAgICA8L3NwYW4+XG4gICAgICAifX1mdW5jdGlvbiBHKGUsdCl7dm9pZCAwPT09dCYmKHQ9ITApO3ZhciBuPXQ\/ZTplLXcuY3VycmVudE1vbnRoO248MCYmITA9PT13Ll9oaWRlUHJldk1vbnRoQXJyb3d8fG4+MCYmITA9PT13Ll9oaWRlTmV4dE1vbnRoQXJyb3d8fCh3LmN1cnJlbnRNb250aCs9biwody5jdXJyZW50TW9udGg8MHx8dy5jdXJyZW50TW9udGg+MTEpJiYody5jdXJyZW50WWVhcis9dy5jdXJyZW50TW9udGg+MTE\/MTotMSx3LmN1cnJlbnRNb250aD0ody5jdXJyZW50TW9udGgrMTIpJTEyLHBlKCJvblllYXJDaGFuZ2UiKSxLKCkpLEooKSxwZSgib25Nb250aENoYW5nZSIpLERlKCkpfWZ1bmN0aW9uIFYoZSl7cmV0dXJuISghdy5jb25maWcuYXBwZW5kVG98fCF3LmNvbmZpZy5hcHBlbmRUby5jb250YWlucyhlKSl8fHcuY2FsZW5kYXJDb250YWluZXIuY29udGFpbnMoZSl9ZnVuY3Rpb24gWihlKXtpZih3LmlzT3BlbiYmIXcuY29uZmlnLmlubGluZSl7dmFyIHQ9ZyhlKSxuPVYodCksYT10PT09dy5pbnB1dHx8dD09PXcuYWx0SW5wdXR8fHcuZWxlbWVudC5jb250YWlucyh0KXx8ZS5wYXRoJiZlLnBhdGguaW5kZXhPZiYmKH5lLnBhdGguaW5kZXhPZih3LmlucHV0KXx8fmUucGF0aC5pbmRleE9mKHcuYWx0SW5wdXQpKSxpPSJibHVyIj09PWUudHlwZT9hJiZlLnJlbGF0ZWRUYXJnZXQmJiFWKGUucmVsYXRlZFRhcmdldCk6IWEmJiFuJiYhVihlLnJlbGF0ZWRUYXJnZXQpLG89IXcuY29uZmlnLmlnbm9yZWRGb2N1c0VsZW1lbnRzLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmNvbnRhaW5zKHQpfSkpO2kmJm8mJih2b2lkIDAhPT13LnRpbWVDb250YWluZXImJnZvaWQgMCE9PXcubWludXRlRWxlbWVudCYmdm9pZCAwIT09dy5ob3VyRWxlbWVudCYmIiIhPT13LmlucHV0LnZhbHVlJiZ2b2lkIDAhPT13LmlucHV0LnZhbHVlJiZJKCksdy5jbG9zZSgpLHcuY29uZmlnJiYicmFuZ2UiPT09dy5jb25maWcubW9kZSYmMT09PXcuc2VsZWN0ZWREYXRlcy5sZW5ndGgmJih3LmNsZWFyKCExKSx3LnJlZHJhdygpKSl9fWZ1bmN0aW9uIFEoZSl7aWYoISghZXx8dy5jb25maWcubWluRGF0ZSYmZTx3LmNvbmZpZy5taW5EYXRlLmdldEZ1bGxZZWFyKCl8fHcuY29uZmlnLm1heERhdGUmJmU+dy5jb25maWcubWF4RGF0ZS5nZXRGdWxsWWVhcigpKSl7dmFyIHQ9ZSxuPXcuY3VycmVudFllYXIhPT10O3cuY3VycmVudFllYXI9dHx8dy5jdXJyZW50WWVhcix3LmNvbmZpZy5tYXhEYXRlJiZ3LmN1cnJlbnRZZWFyPT09dy5jb25maWcubWF4RGF0ZS5nZXRGdWxsWWVhcigpP3cuY3VycmVudE1vbnRoPU1hdGgubWluKHcuY29uZmlnLm1heERhdGUuZ2V0TW9udGgoKSx3LmN1cnJlbnRNb250aCk6dy5jb25maWcubWluRGF0ZSYmdy5jdXJyZW50WWVhcj09PXcuY29uZmlnLm1pbkRhdGUuZ2V0RnVsbFllYXIoKSYmKHcuY3VycmVudE1vbnRoPU1hdGgubWF4KHcuY29uZmlnLm1pbkRhdGUuZ2V0TW9udGgoKSx3LmN1cnJlbnRNb250aCkpLG4mJih3LnJlZHJhdygpLHBlKCJvblllYXJDaGFuZ2UiKSxLKCkpfX1mdW5jdGlvbiBYKGUsdCl7dmFyIG47dm9pZCAwPT09dCYmKHQ9ITApO3ZhciBhPXcucGFyc2VEYXRlKGUsdm9pZCAwLHQpO2lmKHcuY29uZmlnLm1pbkRhdGUmJmEmJk0oYSx3LmNvbmZpZy5taW5EYXRlLHZvaWQgMCE9PXQ\/dDohdy5taW5EYXRlSGFzVGltZSk8MHx8dy5jb25maWcubWF4RGF0ZSYmYSYmTShhLHcuY29uZmlnLm1heERhdGUsdm9pZCAwIT09dD90OiF3Lm1heERhdGVIYXNUaW1lKT4wKXJldHVybiExO2lmKCF3LmNvbmZpZy5lbmFibGUmJjA9PT13LmNvbmZpZy5kaXNhYmxlLmxlbmd0aClyZXR1cm4hMDtpZih2b2lkIDA9PT1hKXJldHVybiExO2Zvcih2YXIgaT0hIXcuY29uZmlnLmVuYWJsZSxvPW51bGwhPT0obj13LmNvbmZpZy5lbmFibGUpJiZ2b2lkIDAhPT1uP246dy5jb25maWcuZGlzYWJsZSxyPTAsbD12b2lkIDA7cjxvLmxlbmd0aDtyKyspe2lmKCJmdW5jdGlvbiI9PXR5cGVvZihsPW9bcl0pJiZsKGEpKXJldHVybiBpO2lmKGwgaW5zdGFuY2VvZiBEYXRlJiZ2b2lkIDAhPT1hJiZsLmdldFRpbWUoKT09PWEuZ2V0VGltZSgpKXJldHVybiBpO2lmKCJzdHJpbmciPT10eXBlb2YgbCl7dmFyIGM9dy5wYXJzZURhdGUobCx2b2lkIDAsITApO3JldHVybiBjJiZjLmdldFRpbWUoKT09PWEuZ2V0VGltZSgpP2k6IWl9aWYoIm9iamVjdCI9PXR5cGVvZiBsJiZ2b2lkIDAhPT1hJiZsLmZyb20mJmwudG8mJmEuZ2V0VGltZSgpPj1sLmZyb20uZ2V0VGltZSgpJiZhLmdldFRpbWUoKTw9bC50by5nZXRUaW1lKCkpcmV0dXJuIGl9cmV0dXJuIWl9ZnVuY3Rpb24gZWUoZSl7cmV0dXJuIHZvaWQgMCE9PXcuZGF5c0NvbnRhaW5lciYmKC0xPT09ZS5jbGFzc05hbWUuaW5kZXhPZigiaGlkZGVuIikmJi0xPT09ZS5jbGFzc05hbWUuaW5kZXhPZigiZmxhdHBpY2tyLWRpc2FibGVkIikmJncuZGF5c0NvbnRhaW5lci5jb250YWlucyhlKSl9ZnVuY3Rpb24gdGUoZSl7IShlLnRhcmdldD09PXcuX2lucHV0KXx8ISh3LnNlbGVjdGVkRGF0ZXMubGVuZ3RoPjB8fHcuX2lucHV0LnZhbHVlLmxlbmd0aD4wKXx8ZS5yZWxhdGVkVGFyZ2V0JiZWKGUucmVsYXRlZFRhcmdldCl8fHcuc2V0RGF0ZSh3Ll9pbnB1dC52YWx1ZSwhMCxlLnRhcmdldD09PXcuYWx0SW5wdXQ\/dy5jb25maWcuYWx0Rm9ybWF0OncuY29uZmlnLmRhdGVGb3JtYXQpfWZ1bmN0aW9uIG5lKGUpe3ZhciB0PWcoZSksbj13LmNvbmZpZy53cmFwP3AuY29udGFpbnModCk6dD09PXcuX2lucHV0LGE9dy5jb25maWcuYWxsb3dJbnB1dCxpPXcuaXNPcGVuJiYoIWF8fCFuKSxvPXcuY29uZmlnLmlubGluZSYmbiYmIWE7aWYoMTM9PT1lLmtleUNvZGUmJm4pe2lmKGEpcmV0dXJuIHcuc2V0RGF0ZSh3Ll9pbnB1dC52YWx1ZSwhMCx0PT09dy5hbHRJbnB1dD93LmNvbmZpZy5hbHRGb3JtYXQ6dy5jb25maWcuZGF0ZUZvcm1hdCksdC5ibHVyKCk7dy5vcGVuKCl9ZWxzZSBpZihWKHQpfHxpfHxvKXt2YXIgcj0hIXcudGltZUNvbnRhaW5lciYmdy50aW1lQ29udGFpbmVyLmNvbnRhaW5zKHQpO3N3aXRjaChlLmtleUNvZGUpe2Nhc2UgMTM6cj8oZS5wcmV2ZW50RGVmYXVsdCgpLEkoKSxzZSgpKTp1ZShlKTticmVhaztjYXNlIDI3OmUucHJldmVudERlZmF1bHQoKSxzZSgpO2JyZWFrO2Nhc2UgODpjYXNlIDQ2Om4mJiF3LmNvbmZpZy5hbGxvd0lucHV0JiYoZS5wcmV2ZW50RGVmYXVsdCgpLHcuY2xlYXIoKSk7YnJlYWs7Y2FzZSAzNzpjYXNlIDM5OmlmKHJ8fG4pdy5ob3VyRWxlbWVudCYmdy5ob3VyRWxlbWVudC5mb2N1cygpO2Vsc2UgaWYoZS5wcmV2ZW50RGVmYXVsdCgpLHZvaWQgMCE9PXcuZGF5c0NvbnRhaW5lciYmKCExPT09YXx8ZG9jdW1lbnQuYWN0aXZlRWxlbWVudCYmZWUoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkpKXt2YXIgbD0zOT09PWUua2V5Q29kZT8xOi0xO2UuY3RybEtleT8oZS5zdG9wUHJvcGFnYXRpb24oKSxHKGwpLFIoVygxKSwwKSk6Uih2b2lkIDAsbCl9YnJlYWs7Y2FzZSAzODpjYXNlIDQwOmUucHJldmVudERlZmF1bHQoKTt2YXIgYz00MD09PWUua2V5Q29kZT8xOi0xO3cuZGF5c0NvbnRhaW5lciYmdm9pZCAwIT09dC4kaXx8dD09PXcuaW5wdXR8fHQ9PT13LmFsdElucHV0P2UuY3RybEtleT8oZS5zdG9wUHJvcGFnYXRpb24oKSxRKHcuY3VycmVudFllYXItYyksUihXKDEpLDApKTpyfHxSKHZvaWQgMCw3KmMpOnQ9PT13LmN1cnJlbnRZZWFyRWxlbWVudD9RKHcuY3VycmVudFllYXItYyk6dy5jb25maWcuZW5hYmxlVGltZSYmKCFyJiZ3LmhvdXJFbGVtZW50JiZ3LmhvdXJFbGVtZW50LmZvY3VzKCksSShlKSx3Ll9kZWJvdW5jZWRDaGFuZ2UoKSk7YnJlYWs7Y2FzZSA5OmlmKHIpe3ZhciBkPVt3LmhvdXJFbGVtZW50LHcubWludXRlRWxlbWVudCx3LnNlY29uZEVsZW1lbnQsdy5hbVBNXS5jb25jYXQody5wbHVnaW5FbGVtZW50cykuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gZX0pKSxzPWQuaW5kZXhPZih0KTtpZigtMSE9PXMpe3ZhciB1PWRbcysoZS5zaGlmdEtleT8tMToxKV07ZS5wcmV2ZW50RGVmYXVsdCgpLCh1fHx3Ll9pbnB1dCkuZm9jdXMoKX19ZWxzZSF3LmNvbmZpZy5ub0NhbGVuZGFyJiZ3LmRheXNDb250YWluZXImJncuZGF5c0NvbnRhaW5lci5jb250YWlucyh0KSYmZS5zaGlmdEtleSYmKGUucHJldmVudERlZmF1bHQoKSx3Ll9pbnB1dC5mb2N1cygpKX19aWYodm9pZCAwIT09dy5hbVBNJiZ0PT09dy5hbVBNKXN3aXRjaChlLmtleSl7Y2FzZSB3LmwxMG4uYW1QTVswXS5jaGFyQXQoMCk6Y2FzZSB3LmwxMG4uYW1QTVswXS5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKTp3LmFtUE0udGV4dENvbnRlbnQ9dy5sMTBuLmFtUE1bMF0sUygpLGJlKCk7YnJlYWs7Y2FzZSB3LmwxMG4uYW1QTVsxXS5jaGFyQXQoMCk6Y2FzZSB3LmwxMG4uYW1QTVsxXS5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKTp3LmFtUE0udGV4dENvbnRlbnQ9dy5sMTBuLmFtUE1bMV0sUygpLGJlKCl9KG58fFYodCkpJiZwZSgib25LZXlEb3duIixlKX1mdW5jdGlvbiBhZShlKXtpZigxPT09dy5zZWxlY3RlZERhdGVzLmxlbmd0aCYmKCFlfHxlLmNsYXNzTGlzdC5jb250YWlucygiZmxhdHBpY2tyLWRheSIpJiYhZS5jbGFzc0xpc3QuY29udGFpbnMoImZsYXRwaWNrci1kaXNhYmxlZCIpKSl7Zm9yKHZhciB0PWU\/ZS5kYXRlT2JqLmdldFRpbWUoKTp3LmRheXMuZmlyc3RFbGVtZW50Q2hpbGQuZGF0ZU9iai5nZXRUaW1lKCksbj13LnBhcnNlRGF0ZSh3LnNlbGVjdGVkRGF0ZXNbMF0sdm9pZCAwLCEwKS5nZXRUaW1lKCksYT1NYXRoLm1pbih0LHcuc2VsZWN0ZWREYXRlc1swXS5nZXRUaW1lKCkpLGk9TWF0aC5tYXgodCx3LnNlbGVjdGVkRGF0ZXNbMF0uZ2V0VGltZSgpKSxvPSExLHI9MCxsPTAsYz1hO2M8aTtjKz15KVgobmV3IERhdGUoYyksITApfHwobz1vfHxjPmEmJmM8aSxjPG4mJighcnx8Yz5yKT9yPWM6Yz5uJiYoIWx8fGM8bCkmJihsPWMpKTtmb3IodmFyIGQ9MDtkPHcuY29uZmlnLnNob3dNb250aHM7ZCsrKWZvcih2YXIgcz13LmRheXNDb250YWluZXIuY2hpbGRyZW5bZF0sdT1mdW5jdGlvbihhLGkpe3ZhciBjLGQsdSxmPXMuY2hpbGRyZW5bYV0sbT1mLmRhdGVPYmouZ2V0VGltZSgpLGc9cj4wJiZtPHJ8fGw+MCYmbT5sO3JldHVybiBnPyhmLmNsYXNzTGlzdC5hZGQoIm5vdEFsbG93ZWQiKSxbImluUmFuZ2UiLCJzdGFydFJhbmdlIiwiZW5kUmFuZ2UiXS5mb3JFYWNoKChmdW5jdGlvbihlKXtmLmNsYXNzTGlzdC5yZW1vdmUoZSl9KSksImNvbnRpbnVlIik6byYmIWc\/ImNvbnRpbnVlIjooWyJzdGFydFJhbmdlIiwiaW5SYW5nZSIsImVuZFJhbmdlIiwibm90QWxsb3dlZCJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe2YuY2xhc3NMaXN0LnJlbW92ZShlKX0pKSx2b2lkKHZvaWQgMCE9PWUmJihlLmNsYXNzTGlzdC5hZGQodDw9dy5zZWxlY3RlZERhdGVzWzBdLmdldFRpbWUoKT8ic3RhcnRSYW5nZSI6ImVuZFJhbmdlIiksbjx0JiZtPT09bj9mLmNsYXNzTGlzdC5hZGQoInN0YXJ0UmFuZ2UiKTpuPnQmJm09PT1uJiZmLmNsYXNzTGlzdC5hZGQoImVuZFJhbmdlIiksbT49ciYmKDA9PT1sfHxtPD1sKSYmKGQ9bix1PXQsKGM9bSk+TWF0aC5taW4oZCx1KSYmYzxNYXRoLm1heChkLHUpKSYmZi5jbGFzc0xpc3QuYWRkKCJpblJhbmdlIikpKSl9LGY9MCxtPXMuY2hpbGRyZW4ubGVuZ3RoO2Y8bTtmKyspdShmKX19ZnVuY3Rpb24gaWUoKXshdy5pc09wZW58fHcuY29uZmlnLnN0YXRpY3x8dy5jb25maWcuaW5saW5lfHxjZSgpfWZ1bmN0aW9uIG9lKGUpe3JldHVybiBmdW5jdGlvbih0KXt2YXIgbj13LmNvbmZpZ1siXyIrZSsiRGF0ZSJdPXcucGFyc2VEYXRlKHQsdy5jb25maWcuZGF0ZUZvcm1hdCksYT13LmNvbmZpZ1siXyIrKCJtaW4iPT09ZT8ibWF4IjoibWluIikrIkRhdGUiXTt2b2lkIDAhPT1uJiYod1sibWluIj09PWU\/Im1pbkRhdGVIYXNUaW1lIjoibWF4RGF0ZUhhc1RpbWUiXT1uLmdldEhvdXJzKCk+MHx8bi5nZXRNaW51dGVzKCk+MHx8bi5nZXRTZWNvbmRzKCk+MCksdy5zZWxlY3RlZERhdGVzJiYody5zZWxlY3RlZERhdGVzPXcuc2VsZWN0ZWREYXRlcy5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBYKGUpfSkpLHcuc2VsZWN0ZWREYXRlcy5sZW5ndGh8fCJtaW4iIT09ZXx8XyhuKSxiZSgpKSx3LmRheXNDb250YWluZXImJihkZSgpLHZvaWQgMCE9PW4\/dy5jdXJyZW50WWVhckVsZW1lbnRbZV09bi5nZXRGdWxsWWVhcigpLnRvU3RyaW5nKCk6dy5jdXJyZW50WWVhckVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKGUpLHcuY3VycmVudFllYXJFbGVtZW50LmRpc2FibGVkPSEhYSYmdm9pZCAwIT09biYmYS5nZXRGdWxsWWVhcigpPT09bi5nZXRGdWxsWWVhcigpKX19ZnVuY3Rpb24gcmUoKXtyZXR1cm4gdy5jb25maWcud3JhcD9wLnF1ZXJ5U2VsZWN0b3IoIltkYXRhLWlucHV0XSIpOnB9ZnVuY3Rpb24gbGUoKXsib2JqZWN0IiE9dHlwZW9mIHcuY29uZmlnLmxvY2FsZSYmdm9pZCAwPT09VC5sMTBuc1t3LmNvbmZpZy5sb2NhbGVdJiZ3LmNvbmZpZy5lcnJvckhhbmRsZXIobmV3IEVycm9yKCJmbGF0cGlja3I6IGludmFsaWQgbG9jYWxlICIrdy5jb25maWcubG9jYWxlKSksdy5sMTBuPWUoZSh7fSxULmwxMG5zLmRlZmF1bHQpLCJvYmplY3QiPT10eXBlb2Ygdy5jb25maWcubG9jYWxlP3cuY29uZmlnLmxvY2FsZToiZGVmYXVsdCIhPT13LmNvbmZpZy5sb2NhbGU\/VC5sMTBuc1t3LmNvbmZpZy5sb2NhbGVdOnZvaWQgMCksRC5LPSIoIit3LmwxMG4uYW1QTVswXSsifCIrdy5sMTBuLmFtUE1bMV0rInwiK3cubDEwbi5hbVBNWzBdLnRvTG93ZXJDYXNlKCkrInwiK3cubDEwbi5hbVBNWzFdLnRvTG93ZXJDYXNlKCkrIikiLHZvaWQgMD09PWUoZSh7fSx2KSxKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHAuZGF0YXNldHx8e30pKSkudGltZV8yNGhyJiZ2b2lkIDA9PT1ULmRlZmF1bHRDb25maWcudGltZV8yNGhyJiYody5jb25maWcudGltZV8yNGhyPXcubDEwbi50aW1lXzI0aHIpLHcuZm9ybWF0RGF0ZT1iKHcpLHcucGFyc2VEYXRlPUMoe2NvbmZpZzp3LmNvbmZpZyxsMTBuOncubDEwbn0pfWZ1bmN0aW9uIGNlKGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB3LmNvbmZpZy5wb3NpdGlvbil7aWYodm9pZCAwIT09dy5jYWxlbmRhckNvbnRhaW5lcil7cGUoIm9uUHJlQ2FsZW5kYXJQb3NpdGlvbiIpO3ZhciB0PWV8fHcuX3Bvc2l0aW9uRWxlbWVudCxuPUFycmF5LnByb3RvdHlwZS5yZWR1Y2UuY2FsbCh3LmNhbGVuZGFyQ29udGFpbmVyLmNoaWxkcmVuLChmdW5jdGlvbihlLHQpe3JldHVybiBlK3Qub2Zmc2V0SGVpZ2h0fSksMCksYT13LmNhbGVuZGFyQ29udGFpbmVyLm9mZnNldFdpZHRoLGk9dy5jb25maWcucG9zaXRpb24uc3BsaXQoIiAiKSxvPWlbMF0scj1pLmxlbmd0aD4xP2lbMV06bnVsbCxsPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksYz13aW5kb3cuaW5uZXJIZWlnaHQtbC5ib3R0b20scz0iYWJvdmUiPT09b3x8ImJlbG93IiE9PW8mJmM8biYmbC50b3A+bix1PXdpbmRvdy5wYWdlWU9mZnNldCtsLnRvcCsocz8tbi0yOnQub2Zmc2V0SGVpZ2h0KzIpO2lmKGQody5jYWxlbmRhckNvbnRhaW5lciwiYXJyb3dUb3AiLCFzKSxkKHcuY2FsZW5kYXJDb250YWluZXIsImFycm93Qm90dG9tIixzKSwhdy5jb25maWcuaW5saW5lKXt2YXIgZj13aW5kb3cucGFnZVhPZmZzZXQrbC5sZWZ0LG09ITEsZz0hMTsiY2VudGVyIj09PXI\/KGYtPShhLWwud2lkdGgpLzIsbT0hMCk6InJpZ2h0Ij09PXImJihmLT1hLWwud2lkdGgsZz0hMCksZCh3LmNhbGVuZGFyQ29udGFpbmVyLCJhcnJvd0xlZnQiLCFtJiYhZyksZCh3LmNhbGVuZGFyQ29udGFpbmVyLCJhcnJvd0NlbnRlciIsbSksZCh3LmNhbGVuZGFyQ29udGFpbmVyLCJhcnJvd1JpZ2h0IixnKTt2YXIgcD13aW5kb3cuZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aC0od2luZG93LnBhZ2VYT2Zmc2V0K2wucmlnaHQpLGg9ZithPndpbmRvdy5kb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoLHY9cCthPndpbmRvdy5kb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoO2lmKGQody5jYWxlbmRhckNvbnRhaW5lciwicmlnaHRNb3N0IixoKSwhdy5jb25maWcuc3RhdGljKWlmKHcuY2FsZW5kYXJDb250YWluZXIuc3R5bGUudG9wPXUrInB4IixoKWlmKHYpe3ZhciBEPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPW51bGwsdD0wO3Q8ZG9jdW1lbnQuc3R5bGVTaGVldHMubGVuZ3RoO3QrKyl7dmFyIG49ZG9jdW1lbnQuc3R5bGVTaGVldHNbdF07dHJ5e24uY3NzUnVsZXN9Y2F0Y2goZSl7Y29udGludWV9ZT1uO2JyZWFrfXJldHVybiBudWxsIT1lP2U6KGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKSxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGEpLGEuc2hlZXQpO3ZhciBhfSgpO2lmKHZvaWQgMD09PUQpcmV0dXJuO3ZhciBiPXdpbmRvdy5kb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoLEM9TWF0aC5tYXgoMCxiLzItYS8yKSxNPUQuY3NzUnVsZXMubGVuZ3RoLHk9IntsZWZ0OiIrbC5sZWZ0KyJweDtyaWdodDphdXRvO30iO2Qody5jYWxlbmRhckNvbnRhaW5lciwicmlnaHRNb3N0IiwhMSksZCh3LmNhbGVuZGFyQ29udGFpbmVyLCJjZW50ZXJNb3N0IiwhMCksRC5pbnNlcnRSdWxlKCIuZmxhdHBpY2tyLWNhbGVuZGFyLmNlbnRlck1vc3Q6YmVmb3JlLC5mbGF0cGlja3ItY2FsZW5kYXIuY2VudGVyTW9zdDphZnRlciIreSxNKSx3LmNhbGVuZGFyQ29udGFpbmVyLnN0eWxlLmxlZnQ9QysicHgiLHcuY2FsZW5kYXJDb250YWluZXIuc3R5bGUucmlnaHQ9ImF1dG8ifWVsc2Ugdy5jYWxlbmRhckNvbnRhaW5lci5zdHlsZS5sZWZ0PSJhdXRvIix3LmNhbGVuZGFyQ29udGFpbmVyLnN0eWxlLnJpZ2h0PXArInB4IjtlbHNlIHcuY2FsZW5kYXJDb250YWluZXIuc3R5bGUubGVmdD1mKyJweCIsdy5jYWxlbmRhckNvbnRhaW5lci5zdHlsZS5yaWdodD0iYXV0byJ9fX1lbHNlIHcuY29uZmlnLnBvc2l0aW9uKHcsZSl9ZnVuY3Rpb24gZGUoKXt3LmNvbmZpZy5ub0NhbGVuZGFyfHx3LmlzTW9iaWxlfHwoSygpLERlKCksSigpKX1mdW5jdGlvbiBzZSgpe3cuX2lucHV0LmZvY3VzKCksLTEhPT13aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJNU0lFIil8fHZvaWQgMCE9PW5hdmlnYXRvci5tc01heFRvdWNoUG9pbnRzP3NldFRpbWVvdXQody5jbG9zZSwwKTp3LmNsb3NlKCl9ZnVuY3Rpb24gdWUoZSl7ZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCk7dmFyIHQ9ZihnKGUpLChmdW5jdGlvbihlKXtyZXR1cm4gZS5jbGFzc0xpc3QmJmUuY2xhc3NMaXN0LmNvbnRhaW5zKCJmbGF0cGlja3ItZGF5IikmJiFlLmNsYXNzTGlzdC5jb250YWlucygiZmxhdHBpY2tyLWRpc2FibGVkIikmJiFlLmNsYXNzTGlzdC5jb250YWlucygibm90QWxsb3dlZCIpfSkpO2lmKHZvaWQgMCE9PXQpe3ZhciBuPXQsYT13LmxhdGVzdFNlbGVjdGVkRGF0ZU9iaj1uZXcgRGF0ZShuLmRhdGVPYmouZ2V0VGltZSgpKSxpPShhLmdldE1vbnRoKCk8dy5jdXJyZW50TW9udGh8fGEuZ2V0TW9udGgoKT53LmN1cnJlbnRNb250aCt3LmNvbmZpZy5zaG93TW9udGhzLTEpJiYicmFuZ2UiIT09dy5jb25maWcubW9kZTtpZih3LnNlbGVjdGVkRGF0ZUVsZW09biwic2luZ2xlIj09PXcuY29uZmlnLm1vZGUpdy5zZWxlY3RlZERhdGVzPVthXTtlbHNlIGlmKCJtdWx0aXBsZSI9PT13LmNvbmZpZy5tb2RlKXt2YXIgbz12ZShhKTtvP3cuc2VsZWN0ZWREYXRlcy5zcGxpY2UocGFyc2VJbnQobyksMSk6dy5zZWxlY3RlZERhdGVzLnB1c2goYSl9ZWxzZSJyYW5nZSI9PT13LmNvbmZpZy5tb2RlJiYoMj09PXcuc2VsZWN0ZWREYXRlcy5sZW5ndGgmJncuY2xlYXIoITEsITEpLHcubGF0ZXN0U2VsZWN0ZWREYXRlT2JqPWEsdy5zZWxlY3RlZERhdGVzLnB1c2goYSksMCE9PU0oYSx3LnNlbGVjdGVkRGF0ZXNbMF0sITApJiZ3LnNlbGVjdGVkRGF0ZXMuc29ydCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5nZXRUaW1lKCktdC5nZXRUaW1lKCl9KSkpO2lmKFMoKSxpKXt2YXIgcj13LmN1cnJlbnRZZWFyIT09YS5nZXRGdWxsWWVhcigpO3cuY3VycmVudFllYXI9YS5nZXRGdWxsWWVhcigpLHcuY3VycmVudE1vbnRoPWEuZ2V0TW9udGgoKSxyJiYocGUoIm9uWWVhckNoYW5nZSIpLEsoKSkscGUoIm9uTW9udGhDaGFuZ2UiKX1pZihEZSgpLEooKSxiZSgpLGl8fCJyYW5nZSI9PT13LmNvbmZpZy5tb2RlfHwxIT09dy5jb25maWcuc2hvd01vbnRocz92b2lkIDAhPT13LnNlbGVjdGVkRGF0ZUVsZW0mJnZvaWQgMD09PXcuaG91ckVsZW1lbnQmJncuc2VsZWN0ZWREYXRlRWxlbSYmdy5zZWxlY3RlZERhdGVFbGVtLmZvY3VzKCk6TChuKSx2b2lkIDAhPT13LmhvdXJFbGVtZW50JiZ2b2lkIDAhPT13LmhvdXJFbGVtZW50JiZ3LmhvdXJFbGVtZW50LmZvY3VzKCksdy5jb25maWcuY2xvc2VPblNlbGVjdCl7dmFyIGw9InNpbmdsZSI9PT13LmNvbmZpZy5tb2RlJiYhdy5jb25maWcuZW5hYmxlVGltZSxjPSJyYW5nZSI9PT13LmNvbmZpZy5tb2RlJiYyPT09dy5zZWxlY3RlZERhdGVzLmxlbmd0aCYmIXcuY29uZmlnLmVuYWJsZVRpbWU7KGx8fGMpJiZzZSgpfU4oKX19dy5wYXJzZURhdGU9Qyh7Y29uZmlnOncuY29uZmlnLGwxMG46dy5sMTBufSksdy5faGFuZGxlcnM9W10sdy5wbHVnaW5FbGVtZW50cz1bXSx3LmxvYWRlZFBsdWdpbnM9W10sdy5fYmluZD1BLHcuX3NldEhvdXJzRnJvbURhdGU9Xyx3Ll9wb3NpdGlvbkNhbGVuZGFyPWNlLHcuY2hhbmdlTW9udGg9Ryx3LmNoYW5nZVllYXI9USx3LmNsZWFyPWZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09ZSYmKGU9ITApO3ZvaWQgMD09PXQmJih0PSEwKTt3LmlucHV0LnZhbHVlPSIiLHZvaWQgMCE9PXcuYWx0SW5wdXQmJih3LmFsdElucHV0LnZhbHVlPSIiKTt2b2lkIDAhPT13Lm1vYmlsZUlucHV0JiYody5tb2JpbGVJbnB1dC52YWx1ZT0iIik7dy5zZWxlY3RlZERhdGVzPVtdLHcubGF0ZXN0U2VsZWN0ZWREYXRlT2JqPXZvaWQgMCwhMD09PXQmJih3LmN1cnJlbnRZZWFyPXcuX2luaXRpYWxEYXRlLmdldEZ1bGxZZWFyKCksdy5jdXJyZW50TW9udGg9dy5faW5pdGlhbERhdGUuZ2V0TW9udGgoKSk7aWYoITA9PT13LmNvbmZpZy5lbmFibGVUaW1lKXt2YXIgbj14KHcuY29uZmlnKSxhPW4uaG91cnMsaT1uLm1pbnV0ZXMsbz1uLnNlY29uZHM7TyhhLGksbyl9dy5yZWRyYXcoKSxlJiZwZSgib25DaGFuZ2UiKX0sdy5jbG9zZT1mdW5jdGlvbigpe3cuaXNPcGVuPSExLHcuaXNNb2JpbGV8fCh2b2lkIDAhPT13LmNhbGVuZGFyQ29udGFpbmVyJiZ3LmNhbGVuZGFyQ29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoIm9wZW4iKSx2b2lkIDAhPT13Ll9pbnB1dCYmdy5faW5wdXQuY2xhc3NMaXN0LnJlbW92ZSgiYWN0aXZlIikpO3BlKCJvbkNsb3NlIil9LHcuX2NyZWF0ZUVsZW1lbnQ9cyx3LmRlc3Ryb3k9ZnVuY3Rpb24oKXt2b2lkIDAhPT13LmNvbmZpZyYmcGUoIm9uRGVzdHJveSIpO2Zvcih2YXIgZT13Ll9oYW5kbGVycy5sZW5ndGg7ZS0tOyl3Ll9oYW5kbGVyc1tlXS5yZW1vdmUoKTtpZih3Ll9oYW5kbGVycz1bXSx3Lm1vYmlsZUlucHV0KXcubW9iaWxlSW5wdXQucGFyZW50Tm9kZSYmdy5tb2JpbGVJbnB1dC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHcubW9iaWxlSW5wdXQpLHcubW9iaWxlSW5wdXQ9dm9pZCAwO2Vsc2UgaWYody5jYWxlbmRhckNvbnRhaW5lciYmdy5jYWxlbmRhckNvbnRhaW5lci5wYXJlbnROb2RlKWlmKHcuY29uZmlnLnN0YXRpYyYmdy5jYWxlbmRhckNvbnRhaW5lci5wYXJlbnROb2RlKXt2YXIgdD13LmNhbGVuZGFyQ29udGFpbmVyLnBhcmVudE5vZGU7aWYodC5sYXN0Q2hpbGQmJnQucmVtb3ZlQ2hpbGQodC5sYXN0Q2hpbGQpLHQucGFyZW50Tm9kZSl7Zm9yKDt0LmZpcnN0Q2hpbGQ7KXQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodC5maXJzdENoaWxkLHQpO3QucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KX19ZWxzZSB3LmNhbGVuZGFyQ29udGFpbmVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQody5jYWxlbmRhckNvbnRhaW5lcik7dy5hbHRJbnB1dCYmKHcuaW5wdXQudHlwZT0idGV4dCIsdy5hbHRJbnB1dC5wYXJlbnROb2RlJiZ3LmFsdElucHV0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQody5hbHRJbnB1dCksZGVsZXRlIHcuYWx0SW5wdXQpO3cuaW5wdXQmJih3LmlucHV0LnR5cGU9dy5pbnB1dC5fdHlwZSx3LmlucHV0LmNsYXNzTGlzdC5yZW1vdmUoImZsYXRwaWNrci1pbnB1dCIpLHcuaW5wdXQucmVtb3ZlQXR0cmlidXRlKCJyZWFkb25seSIpKTtbIl9zaG93VGltZUlucHV0IiwibGF0ZXN0U2VsZWN0ZWREYXRlT2JqIiwiX2hpZGVOZXh0TW9udGhBcnJvdyIsIl9oaWRlUHJldk1vbnRoQXJyb3ciLCJfX2hpZGVOZXh0TW9udGhBcnJvdyIsIl9faGlkZVByZXZNb250aEFycm93IiwiaXNNb2JpbGUiLCJpc09wZW4iLCJzZWxlY3RlZERhdGVFbGVtIiwibWluRGF0ZUhhc1RpbWUiLCJtYXhEYXRlSGFzVGltZSIsImRheXMiLCJkYXlzQ29udGFpbmVyIiwiX2lucHV0IiwiX3Bvc2l0aW9uRWxlbWVudCIsImlubmVyQ29udGFpbmVyIiwickNvbnRhaW5lciIsIm1vbnRoTmF2IiwidG9kYXlEYXRlRWxlbSIsImNhbGVuZGFyQ29udGFpbmVyIiwid2Vla2RheUNvbnRhaW5lciIsInByZXZNb250aE5hdiIsIm5leHRNb250aE5hdiIsIm1vbnRoc0Ryb3Bkb3duQ29udGFpbmVyIiwiY3VycmVudE1vbnRoRWxlbWVudCIsImN1cnJlbnRZZWFyRWxlbWVudCIsIm5hdmlnYXRpb25DdXJyZW50TW9udGgiLCJzZWxlY3RlZERhdGVFbGVtIiwiY29uZmlnIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7dHJ5e2RlbGV0ZSB3W2VdfWNhdGNoKGUpe319KSl9LHcuaXNFbmFibGVkPVgsdy5qdW1wVG9EYXRlPVAsdy5vcGVuPWZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09dCYmKHQ9dy5fcG9zaXRpb25FbGVtZW50KTtpZighMD09PXcuaXNNb2JpbGUpe2lmKGUpe2UucHJldmVudERlZmF1bHQoKTt2YXIgbj1nKGUpO24mJm4uYmx1cigpfXJldHVybiB2b2lkIDAhPT13Lm1vYmlsZUlucHV0JiYody5tb2JpbGVJbnB1dC5mb2N1cygpLHcubW9iaWxlSW5wdXQuY2xpY2soKSksdm9pZCBwZSgib25PcGVuIil9aWYody5faW5wdXQuZGlzYWJsZWR8fHcuY29uZmlnLmlubGluZSlyZXR1cm47dmFyIGE9dy5pc09wZW47dy5pc09wZW49ITAsYXx8KHcuY2FsZW5kYXJDb250YWluZXIuY2xhc3NMaXN0LmFkZCgib3BlbiIpLHcuX2lucHV0LmNsYXNzTGlzdC5hZGQoImFjdGl2ZSIpLHBlKCJvbk9wZW4iKSxjZSh0KSk7ITA9PT13LmNvbmZpZy5lbmFibGVUaW1lJiYhMD09PXcuY29uZmlnLm5vQ2FsZW5kYXImJighMSE9PXcuY29uZmlnLmFsbG93SW5wdXR8fHZvaWQgMCE9PWUmJncudGltZUNvbnRhaW5lci5jb250YWlucyhlLnJlbGF0ZWRUYXJnZXQpfHxzZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiB3LmhvdXJFbGVtZW50LnNlbGVjdCgpfSksNTApKX0sdy5yZWRyYXc9ZGUsdy5zZXQ9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT09ZSYmIm9iamVjdCI9PXR5cGVvZiBlKWZvcih2YXIgYSBpbiBPYmplY3QuYXNzaWduKHcuY29uZmlnLGUpLGUpdm9pZCAwIT09ZmVbYV0mJmZlW2FdLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlKCl9KSk7ZWxzZSB3LmNvbmZpZ1tlXT10LHZvaWQgMCE9PWZlW2VdP2ZlW2VdLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlKCl9KSk6bi5pbmRleE9mKGUpPi0xJiYody5jb25maWdbZV09Yyh0KSk7dy5yZWRyYXcoKSxiZSghMCl9LHcuc2V0RGF0ZT1mdW5jdGlvbihlLHQsbil7dm9pZCAwPT09dCYmKHQ9ITEpO3ZvaWQgMD09PW4mJihuPXcuY29uZmlnLmRhdGVGb3JtYXQpO2lmKDAhPT1lJiYhZXx8ZSBpbnN0YW5jZW9mIEFycmF5JiYwPT09ZS5sZW5ndGgpcmV0dXJuIHcuY2xlYXIodCk7bWUoZSxuKSx3LmxhdGVzdFNlbGVjdGVkRGF0ZU9iaj13LnNlbGVjdGVkRGF0ZXNbdy5zZWxlY3RlZERhdGVzLmxlbmd0aC0xXSx3LnJlZHJhdygpLFAodm9pZCAwLHQpLF8oKSwwPT09dy5zZWxlY3RlZERhdGVzLmxlbmd0aCYmdy5jbGVhcighMSk7YmUodCksdCYmcGUoIm9uQ2hhbmdlIil9LHcudG9nZ2xlPWZ1bmN0aW9uKGUpe2lmKCEwPT09dy5pc09wZW4pcmV0dXJuIHcuY2xvc2UoKTt3Lm9wZW4oZSl9O3ZhciBmZT17bG9jYWxlOltsZSx6XSxzaG93TW9udGhzOltxLGssJF0sbWluRGF0ZTpbUF0sbWF4RGF0ZTpbUF0sY2xpY2tPcGVuczpbZnVuY3Rpb24oKXshMD09PXcuY29uZmlnLmNsaWNrT3BlbnM\/KEEody5faW5wdXQsImZvY3VzIix3Lm9wZW4pLEEody5faW5wdXQsImNsaWNrIix3Lm9wZW4pKToody5faW5wdXQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHcub3Blbiksdy5faW5wdXQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2xpY2siLHcub3BlbikpfV19O2Z1bmN0aW9uIG1lKGUsdCl7dmFyIG49W107aWYoZSBpbnN0YW5jZW9mIEFycmF5KW49ZS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiB3LnBhcnNlRGF0ZShlLHQpfSkpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIERhdGV8fCJudW1iZXIiPT10eXBlb2YgZSluPVt3LnBhcnNlRGF0ZShlLHQpXTtlbHNlIGlmKCJzdHJpbmciPT10eXBlb2YgZSlzd2l0Y2gody5jb25maWcubW9kZSl7Y2FzZSJzaW5nbGUiOmNhc2UidGltZSI6bj1bdy5wYXJzZURhdGUoZSx0KV07YnJlYWs7Y2FzZSJtdWx0aXBsZSI6bj1lLnNwbGl0KHcuY29uZmlnLmNvbmp1bmN0aW9uKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiB3LnBhcnNlRGF0ZShlLHQpfSkpO2JyZWFrO2Nhc2UicmFuZ2UiOm49ZS5zcGxpdCh3LmwxMG4ucmFuZ2VTZXBhcmF0b3IpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHcucGFyc2VEYXRlKGUsdCl9KSl9ZWxzZSB3LmNvbmZpZy5lcnJvckhhbmRsZXIobmV3IEVycm9yKCJJbnZhbGlkIGRhdGUgc3VwcGxpZWQ6ICIrSlNPTi5zdHJpbmdpZnkoZSkpKTt3LnNlbGVjdGVkRGF0ZXM9dy5jb25maWcuYWxsb3dJbnZhbGlkUHJlbG9hZD9uOm4uZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIERhdGUmJlgoZSwhMSl9KSksInJhbmdlIj09PXcuY29uZmlnLm1vZGUmJncuc2VsZWN0ZWREYXRlcy5zb3J0KChmdW5jdGlvbihlLHQpe3JldHVybiBlLmdldFRpbWUoKS10LmdldFRpbWUoKX0pKX1mdW5jdGlvbiBnZShlKXtyZXR1cm4gZS5zbGljZSgpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlfHwibnVtYmVyIj09dHlwZW9mIGV8fGUgaW5zdGFuY2VvZiBEYXRlP3cucGFyc2VEYXRlKGUsdm9pZCAwLCEwKTplJiYib2JqZWN0Ij09dHlwZW9mIGUmJmUuZnJvbSYmZS50bz97ZnJvbTp3LnBhcnNlRGF0ZShlLmZyb20sdm9pZCAwKSx0bzp3LnBhcnNlRGF0ZShlLnRvLHZvaWQgMCl9OmV9KSkuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gZX0pKX1mdW5jdGlvbiBwZShlLHQpe2lmKHZvaWQgMCE9PXcuY29uZmlnKXt2YXIgbj13LmNvbmZpZ1tlXTtpZih2b2lkIDAhPT1uJiZuLmxlbmd0aD4wKWZvcih2YXIgYT0wO25bYV0mJmE8bi5sZW5ndGg7YSsrKW5bYV0ody5zZWxlY3RlZERhdGVzLHcuaW5wdXQudmFsdWUsdyx0KTsib25DaGFuZ2UiPT09ZSYmKHcuaW5wdXQuZGlzcGF0Y2hFdmVudChoZSgiY2hhbmdlIikpLHcuaW5wdXQuZGlzcGF0Y2hFdmVudChoZSgiaW5wdXQiKSkpfX1mdW5jdGlvbiBoZShlKXt2YXIgdD1kb2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnQiKTtyZXR1cm4gdC5pbml0RXZlbnQoZSwhMCwhMCksdH1mdW5jdGlvbiB2ZShlKXtmb3IodmFyIHQ9MDt0PHcuc2VsZWN0ZWREYXRlcy5sZW5ndGg7dCsrKWlmKDA9PT1NKHcuc2VsZWN0ZWREYXRlc1t0XSxlKSlyZXR1cm4iIit0O3JldHVybiExfWZ1bmN0aW9uIERlKCl7dy5jb25maWcubm9DYWxlbmRhcnx8dy5pc01vYmlsZXx8IXcubW9udGhOYXZ8fCh3LnllYXJFbGVtZW50cy5mb3JFYWNoKChmdW5jdGlvbihlLHQpe3ZhciBuPW5ldyBEYXRlKHcuY3VycmVudFllYXIsdy5jdXJyZW50TW9udGgsMSk7bi5zZXRNb250aCh3LmN1cnJlbnRNb250aCt0KSx3LmNvbmZpZy5zaG93TW9udGhzPjF8fCJzdGF0aWMiPT09dy5jb25maWcubW9udGhTZWxlY3RvclR5cGU\/dy5tb250aEVsZW1lbnRzW3RdLnRleHRDb250ZW50PWgobi5nZXRNb250aCgpLHcuY29uZmlnLnNob3J0aGFuZEN1cnJlbnRNb250aCx3LmwxMG4pKyIgIjp3Lm1vbnRoc0Ryb3Bkb3duQ29udGFpbmVyLnZhbHVlPW4uZ2V0TW9udGgoKS50b1N0cmluZygpLGUudmFsdWU9bi5nZXRGdWxsWWVhcigpLnRvU3RyaW5nKCl9KSksdy5faGlkZVByZXZNb250aEFycm93PXZvaWQgMCE9PXcuY29uZmlnLm1pbkRhdGUmJih3LmN1cnJlbnRZZWFyPT09dy5jb25maWcubWluRGF0ZS5nZXRGdWxsWWVhcigpP3cuY3VycmVudE1vbnRoPD13LmNvbmZpZy5taW5EYXRlLmdldE1vbnRoKCk6dy5jdXJyZW50WWVhcjx3LmNvbmZpZy5taW5EYXRlLmdldEZ1bGxZZWFyKCkpLHcuX2hpZGVOZXh0TW9udGhBcnJvdz12b2lkIDAhPT13LmNvbmZpZy5tYXhEYXRlJiYody5jdXJyZW50WWVhcj09PXcuY29uZmlnLm1heERhdGUuZ2V0RnVsbFllYXIoKT93LmN1cnJlbnRNb250aCsxPncuY29uZmlnLm1heERhdGUuZ2V0TW9udGgoKTp3LmN1cnJlbnRZZWFyPncuY29uZmlnLm1heERhdGUuZ2V0RnVsbFllYXIoKSkpfWZ1bmN0aW9uIHdlKGUpe3JldHVybiB3LnNlbGVjdGVkRGF0ZXMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdy5mb3JtYXREYXRlKHQsZSl9KSkuZmlsdGVyKChmdW5jdGlvbihlLHQsbil7cmV0dXJuInJhbmdlIiE9PXcuY29uZmlnLm1vZGV8fHcuY29uZmlnLmVuYWJsZVRpbWV8fG4uaW5kZXhPZihlKT09PXR9KSkuam9pbigicmFuZ2UiIT09dy5jb25maWcubW9kZT93LmNvbmZpZy5jb25qdW5jdGlvbjp3LmwxMG4ucmFuZ2VTZXBhcmF0b3IpfWZ1bmN0aW9uIGJlKGUpe3ZvaWQgMD09PWUmJihlPSEwKSx2b2lkIDAhPT13Lm1vYmlsZUlucHV0JiZ3Lm1vYmlsZUZvcm1hdFN0ciYmKHcubW9iaWxlSW5wdXQudmFsdWU9dm9pZCAwIT09dy5sYXRlc3RTZWxlY3RlZERhdGVPYmo\/dy5mb3JtYXREYXRlKHcubGF0ZXN0U2VsZWN0ZWREYXRlT2JqLHcubW9iaWxlRm9ybWF0U3RyKToiIiksdy5pbnB1dC52YWx1ZT13ZSh3LmNvbmZpZy5kYXRlRm9ybWF0KSx2b2lkIDAhPT13LmFsdElucHV0JiYody5hbHRJbnB1dC52YWx1ZT13ZSh3LmNvbmZpZy5hbHRGb3JtYXQpKSwhMSE9PWUmJnBlKCJvblZhbHVlVXBkYXRlIil9ZnVuY3Rpb24gQ2UoZSl7dmFyIHQ9ZyhlKSxuPXcucHJldk1vbnRoTmF2LmNvbnRhaW5zKHQpLGE9dy5uZXh0TW9udGhOYXYuY29udGFpbnModCk7bnx8YT9HKG4\/LTE6MSk6dy55ZWFyRWxlbWVudHMuaW5kZXhPZih0KT49MD90LnNlbGVjdCgpOnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJhcnJvd1VwIik\/dy5jaGFuZ2VZZWFyKHcuY3VycmVudFllYXIrMSk6dC5jbGFzc0xpc3QuY29udGFpbnMoImFycm93RG93biIpJiZ3LmNoYW5nZVllYXIody5jdXJyZW50WWVhci0xKX1yZXR1cm4gZnVuY3Rpb24oKXt3LmVsZW1lbnQ9dy5pbnB1dD1wLHcuaXNPcGVuPSExLGZ1bmN0aW9uKCl7dmFyIHQ9WyJ3cmFwIiwid2Vla051bWJlcnMiLCJhbGxvd0lucHV0IiwiYWxsb3dJbnZhbGlkUHJlbG9hZCIsImNsaWNrT3BlbnMiLCJ0aW1lXzI0aHIiLCJlbmFibGVUaW1lIiwibm9DYWxlbmRhciIsImFsdElucHV0Iiwic2hvcnRoYW5kQ3VycmVudE1vbnRoIiwiaW5saW5lIiwic3RhdGljIiwiZW5hYmxlU2Vjb25kcyIsImRpc2FibGVNb2JpbGUiXSxpPWUoZSh7fSxKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHAuZGF0YXNldHx8e30pKSksdiksbz17fTt3LmNvbmZpZy5wYXJzZURhdGU9aS5wYXJzZURhdGUsdy5jb25maWcuZm9ybWF0RGF0ZT1pLmZvcm1hdERhdGUsT2JqZWN0LmRlZmluZVByb3BlcnR5KHcuY29uZmlnLCJlbmFibGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdy5jb25maWcuX2VuYWJsZX0sc2V0OmZ1bmN0aW9uKGUpe3cuY29uZmlnLl9lbmFibGU9Z2UoZSl9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHcuY29uZmlnLCJkaXNhYmxlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHcuY29uZmlnLl9kaXNhYmxlfSxzZXQ6ZnVuY3Rpb24oZSl7dy5jb25maWcuX2Rpc2FibGU9Z2UoZSl9fSk7dmFyIHI9InRpbWUiPT09aS5tb2RlO2lmKCFpLmRhdGVGb3JtYXQmJihpLmVuYWJsZVRpbWV8fHIpKXt2YXIgbD1ULmRlZmF1bHRDb25maWcuZGF0ZUZvcm1hdHx8YS5kYXRlRm9ybWF0O28uZGF0ZUZvcm1hdD1pLm5vQ2FsZW5kYXJ8fHI\/Ikg6aSIrKGkuZW5hYmxlU2Vjb25kcz8iOlMiOiIiKTpsKyIgSDppIisoaS5lbmFibGVTZWNvbmRzPyI6UyI6IiIpfWlmKGkuYWx0SW5wdXQmJihpLmVuYWJsZVRpbWV8fHIpJiYhaS5hbHRGb3JtYXQpe3ZhciBkPVQuZGVmYXVsdENvbmZpZy5hbHRGb3JtYXR8fGEuYWx0Rm9ybWF0O28uYWx0Rm9ybWF0PWkubm9DYWxlbmRhcnx8cj8iaDppIisoaS5lbmFibGVTZWNvbmRzPyI6UyBLIjoiIEsiKTpkKyIgaDppIisoaS5lbmFibGVTZWNvbmRzPyI6UyI6IiIpKyIgSyJ9T2JqZWN0LmRlZmluZVByb3BlcnR5KHcuY29uZmlnLCJtaW5EYXRlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHcuY29uZmlnLl9taW5EYXRlfSxzZXQ6b2UoIm1pbiIpfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHcuY29uZmlnLCJtYXhEYXRlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHcuY29uZmlnLl9tYXhEYXRlfSxzZXQ6b2UoIm1heCIpfSk7dmFyIHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3cuY29uZmlnWyJtaW4iPT09ZT8iX21pblRpbWUiOiJfbWF4VGltZSJdPXcucGFyc2VEYXRlKHQsIkg6aTpTIil9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkody5jb25maWcsIm1pblRpbWUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdy5jb25maWcuX21pblRpbWV9LHNldDpzKCJtaW4iKX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3LmNvbmZpZywibWF4VGltZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB3LmNvbmZpZy5fbWF4VGltZX0sc2V0OnMoIm1heCIpfSksInRpbWUiPT09aS5tb2RlJiYody5jb25maWcubm9DYWxlbmRhcj0hMCx3LmNvbmZpZy5lbmFibGVUaW1lPSEwKTtPYmplY3QuYXNzaWduKHcuY29uZmlnLG8saSk7Zm9yKHZhciB1PTA7dTx0Lmxlbmd0aDt1Kyspdy5jb25maWdbdFt1XV09ITA9PT13LmNvbmZpZ1t0W3VdXXx8InRydWUiPT09dy5jb25maWdbdFt1XV07bi5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDAhPT13LmNvbmZpZ1tlXX0pKS5mb3JFYWNoKChmdW5jdGlvbihlKXt3LmNvbmZpZ1tlXT1jKHcuY29uZmlnW2VdfHxbXSkubWFwKEUpfSkpLHcuaXNNb2JpbGU9IXcuY29uZmlnLmRpc2FibGVNb2JpbGUmJiF3LmNvbmZpZy5pbmxpbmUmJiJzaW5nbGUiPT09dy5jb25maWcubW9kZSYmIXcuY29uZmlnLmRpc2FibGUubGVuZ3RoJiYhdy5jb25maWcuZW5hYmxlJiYhdy5jb25maWcud2Vla051bWJlcnMmJi9BbmRyb2lkfHdlYk9TfGlQaG9uZXxpUGFkfGlQb2R8QmxhY2tCZXJyeXxJRU1vYmlsZXxPcGVyYSBNaW5pL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtmb3IodT0wO3U8dy5jb25maWcucGx1Z2lucy5sZW5ndGg7dSsrKXt2YXIgZj13LmNvbmZpZy5wbHVnaW5zW3VdKHcpfHx7fTtmb3IodmFyIG0gaW4gZiluLmluZGV4T2YobSk+LTE\/dy5jb25maWdbbV09YyhmW21dKS5tYXAoRSkuY29uY2F0KHcuY29uZmlnW21dKTp2b2lkIDA9PT1pW21dJiYody5jb25maWdbbV09ZlttXSl9aS5hbHRJbnB1dENsYXNzfHwody5jb25maWcuYWx0SW5wdXRDbGFzcz1yZSgpLmNsYXNzTmFtZSsiICIrdy5jb25maWcuYWx0SW5wdXRDbGFzcyk7cGUoIm9uUGFyc2VDb25maWciKX0oKSxsZSgpLGZ1bmN0aW9uKCl7aWYody5pbnB1dD1yZSgpLCF3LmlucHV0KXJldHVybiB2b2lkIHcuY29uZmlnLmVycm9ySGFuZGxlcihuZXcgRXJyb3IoIkludmFsaWQgaW5wdXQgZWxlbWVudCBzcGVjaWZpZWQiKSk7dy5pbnB1dC5fdHlwZT13LmlucHV0LnR5cGUsdy5pbnB1dC50eXBlPSJ0ZXh0Iix3LmlucHV0LmNsYXNzTGlzdC5hZGQoImZsYXRwaWNrci1pbnB1dCIpLHcuX2lucHV0PXcuaW5wdXQsdy5jb25maWcuYWx0SW5wdXQmJih3LmFsdElucHV0PXMody5pbnB1dC5ub2RlTmFtZSx3LmNvbmZpZy5hbHRJbnB1dENsYXNzKSx3Ll9pbnB1dD13LmFsdElucHV0LHcuYWx0SW5wdXQucGxhY2Vob2xkZXI9dy5pbnB1dC5wbGFjZWhvbGRlcix3LmFsdElucHV0LmRpc2FibGVkPXcuaW5wdXQuZGlzYWJsZWQsdy5hbHRJbnB1dC5yZXF1aXJlZD13LmlucHV0LnJlcXVpcmVkLHcuYWx0SW5wdXQudGFiSW5kZXg9dy5pbnB1dC50YWJJbmRleCx3LmFsdElucHV0LnR5cGU9InRleHQiLHcuaW5wdXQuc2V0QXR0cmlidXRlKCJ0eXBlIiwiaGlkZGVuIiksIXcuY29uZmlnLnN0YXRpYyYmdy5pbnB1dC5wYXJlbnROb2RlJiZ3LmlucHV0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHcuYWx0SW5wdXQsdy5pbnB1dC5uZXh0U2libGluZykpO3cuY29uZmlnLmFsbG93SW5wdXR8fHcuX2lucHV0LnNldEF0dHJpYnV0ZSgicmVhZG9ubHkiLCJyZWFkb25seSIpO3cuX3Bvc2l0aW9uRWxlbWVudD13LmNvbmZpZy5wb3NpdGlvbkVsZW1lbnR8fHcuX2lucHV0fSgpLGZ1bmN0aW9uKCl7dy5zZWxlY3RlZERhdGVzPVtdLHcubm93PXcucGFyc2VEYXRlKHcuY29uZmlnLm5vdyl8fG5ldyBEYXRlO3ZhciBlPXcuY29uZmlnLmRlZmF1bHREYXRlfHwoIklOUFVUIiE9PXcuaW5wdXQubm9kZU5hbWUmJiJURVhUQVJFQSIhPT13LmlucHV0Lm5vZGVOYW1lfHwhdy5pbnB1dC5wbGFjZWhvbGRlcnx8dy5pbnB1dC52YWx1ZSE9PXcuaW5wdXQucGxhY2Vob2xkZXI\/dy5pbnB1dC52YWx1ZTpudWxsKTtlJiZtZShlLHcuY29uZmlnLmRhdGVGb3JtYXQpO3cuX2luaXRpYWxEYXRlPXcuc2VsZWN0ZWREYXRlcy5sZW5ndGg+MD93LnNlbGVjdGVkRGF0ZXNbMF06dy5jb25maWcubWluRGF0ZSYmdy5jb25maWcubWluRGF0ZS5nZXRUaW1lKCk+dy5ub3cuZ2V0VGltZSgpP3cuY29uZmlnLm1pbkRhdGU6dy5jb25maWcubWF4RGF0ZSYmdy5jb25maWcubWF4RGF0ZS5nZXRUaW1lKCk8dy5ub3cuZ2V0VGltZSgpP3cuY29uZmlnLm1heERhdGU6dy5ub3csdy5jdXJyZW50WWVhcj13Ll9pbml0aWFsRGF0ZS5nZXRGdWxsWWVhcigpLHcuY3VycmVudE1vbnRoPXcuX2luaXRpYWxEYXRlLmdldE1vbnRoKCksdy5zZWxlY3RlZERhdGVzLmxlbmd0aD4wJiYody5sYXRlc3RTZWxlY3RlZERhdGVPYmo9dy5zZWxlY3RlZERhdGVzWzBdKTt2b2lkIDAhPT13LmNvbmZpZy5taW5UaW1lJiYody5jb25maWcubWluVGltZT13LnBhcnNlRGF0ZSh3LmNvbmZpZy5taW5UaW1lLCJIOmkiKSk7dm9pZCAwIT09dy5jb25maWcubWF4VGltZSYmKHcuY29uZmlnLm1heFRpbWU9dy5wYXJzZURhdGUody5jb25maWcubWF4VGltZSwiSDppIikpO3cubWluRGF0ZUhhc1RpbWU9ISF3LmNvbmZpZy5taW5EYXRlJiYody5jb25maWcubWluRGF0ZS5nZXRIb3VycygpPjB8fHcuY29uZmlnLm1pbkRhdGUuZ2V0TWludXRlcygpPjB8fHcuY29uZmlnLm1pbkRhdGUuZ2V0U2Vjb25kcygpPjApLHcubWF4RGF0ZUhhc1RpbWU9ISF3LmNvbmZpZy5tYXhEYXRlJiYody5jb25maWcubWF4RGF0ZS5nZXRIb3VycygpPjB8fHcuY29uZmlnLm1heERhdGUuZ2V0TWludXRlcygpPjB8fHcuY29uZmlnLm1heERhdGUuZ2V0U2Vjb25kcygpPjApfSgpLHcudXRpbHM9e2dldERheXNJbk1vbnRoOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PWUmJihlPXcuY3VycmVudE1vbnRoKSx2b2lkIDA9PT10JiYodD13LmN1cnJlbnRZZWFyKSwxPT09ZSYmKHQlND09MCYmdCUxMDAhPTB8fHQlNDAwPT0wKT8yOTp3LmwxMG4uZGF5c0luTW9udGhbZV19fSx3LmlzTW9iaWxlfHxmdW5jdGlvbigpe3ZhciBlPXdpbmRvdy5kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7aWYody5jYWxlbmRhckNvbnRhaW5lcj1zKCJkaXYiLCJmbGF0cGlja3ItY2FsZW5kYXIiKSx3LmNhbGVuZGFyQ29udGFpbmVyLnRhYkluZGV4PS0xLCF3LmNvbmZpZy5ub0NhbGVuZGFyKXtpZihlLmFwcGVuZENoaWxkKCh3Lm1vbnRoTmF2PXMoImRpdiIsImZsYXRwaWNrci1tb250aHMiKSx3LnllYXJFbGVtZW50cz1bXSx3Lm1vbnRoRWxlbWVudHM9W10sdy5wcmV2TW9udGhOYXY9cygic3BhbiIsImZsYXRwaWNrci1wcmV2LW1vbnRoIiksdy5wcmV2TW9udGhOYXYuaW5uZXJIVE1MPXcuY29uZmlnLnByZXZBcnJvdyx3Lm5leHRNb250aE5hdj1zKCJzcGFuIiwiZmxhdHBpY2tyLW5leHQtbW9udGgiKSx3Lm5leHRNb250aE5hdi5pbm5lckhUTUw9dy5jb25maWcubmV4dEFycm93LHEoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodywiX2hpZGVQcmV2TW9udGhBcnJvdyIse2dldDpmdW5jdGlvbigpe3JldHVybiB3Ll9faGlkZVByZXZNb250aEFycm93fSxzZXQ6ZnVuY3Rpb24oZSl7dy5fX2hpZGVQcmV2TW9udGhBcnJvdyE9PWUmJihkKHcucHJldk1vbnRoTmF2LCJmbGF0cGlja3ItZGlzYWJsZWQiLGUpLHcuX19oaWRlUHJldk1vbnRoQXJyb3c9ZSl9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHcsIl9oaWRlTmV4dE1vbnRoQXJyb3ciLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdy5fX2hpZGVOZXh0TW9udGhBcnJvd30sc2V0OmZ1bmN0aW9uKGUpe3cuX19oaWRlTmV4dE1vbnRoQXJyb3chPT1lJiYoZCh3Lm5leHRNb250aE5hdiwiZmxhdHBpY2tyLWRpc2FibGVkIixlKSx3Ll9faGlkZU5leHRNb250aEFycm93PWUpfX0pLHcuY3VycmVudFllYXJFbGVtZW50PXcueWVhckVsZW1lbnRzWzBdLERlKCksdy5tb250aE5hdikpLHcuaW5uZXJDb250YWluZXI9cygiZGl2IiwiZmxhdHBpY2tyLWlubmVyQ29udGFpbmVyIiksdy5jb25maWcud2Vla051bWJlcnMpe3ZhciB0PWZ1bmN0aW9uKCl7dy5jYWxlbmRhckNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJoYXNXZWVrcyIpO3ZhciBlPXMoImRpdiIsImZsYXRwaWNrci13ZWVrd3JhcHBlciIpO2UuYXBwZW5kQ2hpbGQocygic3BhbiIsImZsYXRwaWNrci13ZWVrZGF5Iix3LmwxMG4ud2Vla0FiYnJldmlhdGlvbikpO3ZhciB0PXMoImRpdiIsImZsYXRwaWNrci13ZWVrcyIpO3JldHVybiBlLmFwcGVuZENoaWxkKHQpLHt3ZWVrV3JhcHBlcjplLHdlZWtOdW1iZXJzOnR9fSgpLG49dC53ZWVrV3JhcHBlcixhPXQud2Vla051bWJlcnM7dy5pbm5lckNvbnRhaW5lci5hcHBlbmRDaGlsZChuKSx3LndlZWtOdW1iZXJzPWEsdy53ZWVrV3JhcHBlcj1ufXcuckNvbnRhaW5lcj1zKCJkaXYiLCJmbGF0cGlja3ItckNvbnRhaW5lciIpLHcuckNvbnRhaW5lci5hcHBlbmRDaGlsZCgkKCkpLHcuZGF5c0NvbnRhaW5lcnx8KHcuZGF5c0NvbnRhaW5lcj1zKCJkaXYiLCJmbGF0cGlja3ItZGF5cyIpLHcuZGF5c0NvbnRhaW5lci50YWJJbmRleD0tMSksSigpLHcuckNvbnRhaW5lci5hcHBlbmRDaGlsZCh3LmRheXNDb250YWluZXIpLHcuaW5uZXJDb250YWluZXIuYXBwZW5kQ2hpbGQody5yQ29udGFpbmVyKSxlLmFwcGVuZENoaWxkKHcuaW5uZXJDb250YWluZXIpfXcuY29uZmlnLmVuYWJsZVRpbWUmJmUuYXBwZW5kQ2hpbGQoZnVuY3Rpb24oKXt3LmNhbGVuZGFyQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoImhhc1RpbWUiKSx3LmNvbmZpZy5ub0NhbGVuZGFyJiZ3LmNhbGVuZGFyQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoIm5vQ2FsZW5kYXIiKTt2YXIgZT14KHcuY29uZmlnKTt3LnRpbWVDb250YWluZXI9cygiZGl2IiwiZmxhdHBpY2tyLXRpbWUiKSx3LnRpbWVDb250YWluZXIudGFiSW5kZXg9LTE7dmFyIHQ9cygic3BhbiIsImZsYXRwaWNrci10aW1lLXNlcGFyYXRvciIsIjoiKSxuPW0oImZsYXRwaWNrci1ob3VyIix7ImFyaWEtbGFiZWwiOncubDEwbi5ob3VyQXJpYUxhYmVsfSk7dy5ob3VyRWxlbWVudD1uLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpWzBdO3ZhciBhPW0oImZsYXRwaWNrci1taW51dGUiLHsiYXJpYS1sYWJlbCI6dy5sMTBuLm1pbnV0ZUFyaWFMYWJlbH0pO3cubWludXRlRWxlbWVudD1hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpWzBdLHcuaG91ckVsZW1lbnQudGFiSW5kZXg9dy5taW51dGVFbGVtZW50LnRhYkluZGV4PS0xLHcuaG91ckVsZW1lbnQudmFsdWU9byh3LmxhdGVzdFNlbGVjdGVkRGF0ZU9iaj93LmxhdGVzdFNlbGVjdGVkRGF0ZU9iai5nZXRIb3VycygpOncuY29uZmlnLnRpbWVfMjRocj9lLmhvdXJzOmZ1bmN0aW9uKGUpe3N3aXRjaChlJTI0KXtjYXNlIDA6Y2FzZSAxMjpyZXR1cm4gMTI7ZGVmYXVsdDpyZXR1cm4gZSUxMn19KGUuaG91cnMpKSx3Lm1pbnV0ZUVsZW1lbnQudmFsdWU9byh3LmxhdGVzdFNlbGVjdGVkRGF0ZU9iaj93LmxhdGVzdFNlbGVjdGVkRGF0ZU9iai5nZXRNaW51dGVzKCk6ZS5taW51dGVzKSx3LmhvdXJFbGVtZW50LnNldEF0dHJpYnV0ZSgic3RlcCIsdy5jb25maWcuaG91ckluY3JlbWVudC50b1N0cmluZygpKSx3Lm1pbnV0ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJzdGVwIix3LmNvbmZpZy5taW51dGVJbmNyZW1lbnQudG9TdHJpbmcoKSksdy5ob3VyRWxlbWVudC5zZXRBdHRyaWJ1dGUoIm1pbiIsdy5jb25maWcudGltZV8yNGhyPyIwIjoiMSIpLHcuaG91ckVsZW1lbnQuc2V0QXR0cmlidXRlKCJtYXgiLHcuY29uZmlnLnRpbWVfMjRocj8iMjMiOiIxMiIpLHcuaG91ckVsZW1lbnQuc2V0QXR0cmlidXRlKCJtYXhsZW5ndGgiLCIyIiksdy5taW51dGVFbGVtZW50LnNldEF0dHJpYnV0ZSgibWluIiwiMCIpLHcubWludXRlRWxlbWVudC5zZXRBdHRyaWJ1dGUoIm1heCIsIjU5Iiksdy5taW51dGVFbGVtZW50LnNldEF0dHJpYnV0ZSgibWF4bGVuZ3RoIiwiMiIpLHcudGltZUNvbnRhaW5lci5hcHBlbmRDaGlsZChuKSx3LnRpbWVDb250YWluZXIuYXBwZW5kQ2hpbGQodCksdy50aW1lQ29udGFpbmVyLmFwcGVuZENoaWxkKGEpLHcuY29uZmlnLnRpbWVfMjRociYmdy50aW1lQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoInRpbWUyNGhyIik7aWYody5jb25maWcuZW5hYmxlU2Vjb25kcyl7dy50aW1lQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoImhhc1NlY29uZHMiKTt2YXIgaT1tKCJmbGF0cGlja3Itc2Vjb25kIik7dy5zZWNvbmRFbGVtZW50PWkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0IilbMF0sdy5zZWNvbmRFbGVtZW50LnZhbHVlPW8ody5sYXRlc3RTZWxlY3RlZERhdGVPYmo\/dy5sYXRlc3RTZWxlY3RlZERhdGVPYmouZ2V0U2Vjb25kcygpOmUuc2Vjb25kcyksdy5zZWNvbmRFbGVtZW50LnNldEF0dHJpYnV0ZSgic3RlcCIsdy5taW51dGVFbGVtZW50LmdldEF0dHJpYnV0ZSgic3RlcCIpKSx3LnNlY29uZEVsZW1lbnQuc2V0QXR0cmlidXRlKCJtaW4iLCIwIiksdy5zZWNvbmRFbGVtZW50LnNldEF0dHJpYnV0ZSgibWF4IiwiNTkiKSx3LnNlY29uZEVsZW1lbnQuc2V0QXR0cmlidXRlKCJtYXhsZW5ndGgiLCIyIiksdy50aW1lQ29udGFpbmVyLmFwcGVuZENoaWxkKHMoInNwYW4iLCJmbGF0cGlja3ItdGltZS1zZXBhcmF0b3IiLCI6IikpLHcudGltZUNvbnRhaW5lci5hcHBlbmRDaGlsZChpKX13LmNvbmZpZy50aW1lXzI0aHJ8fCh3LmFtUE09cygic3BhbiIsImZsYXRwaWNrci1hbS1wbSIsdy5sMTBuLmFtUE1bcigody5sYXRlc3RTZWxlY3RlZERhdGVPYmo\/dy5ob3VyRWxlbWVudC52YWx1ZTp3LmNvbmZpZy5kZWZhdWx0SG91cik+MTEpXSksdy5hbVBNLnRpdGxlPXcubDEwbi50b2dnbGVUaXRsZSx3LmFtUE0udGFiSW5kZXg9LTEsdy50aW1lQ29udGFpbmVyLmFwcGVuZENoaWxkKHcuYW1QTSkpO3JldHVybiB3LnRpbWVDb250YWluZXJ9KCkpO2Qody5jYWxlbmRhckNvbnRhaW5lciwicmFuZ2VNb2RlIiwicmFuZ2UiPT09dy5jb25maWcubW9kZSksZCh3LmNhbGVuZGFyQ29udGFpbmVyLCJhbmltYXRlIiwhMD09PXcuY29uZmlnLmFuaW1hdGUpLGQody5jYWxlbmRhckNvbnRhaW5lciwibXVsdGlNb250aCIsdy5jb25maWcuc2hvd01vbnRocz4xKSx3LmNhbGVuZGFyQ29udGFpbmVyLmFwcGVuZENoaWxkKGUpO3ZhciBpPXZvaWQgMCE9PXcuY29uZmlnLmFwcGVuZFRvJiZ2b2lkIDAhPT13LmNvbmZpZy5hcHBlbmRUby5ub2RlVHlwZTtpZigody5jb25maWcuaW5saW5lfHx3LmNvbmZpZy5zdGF0aWMpJiYody5jYWxlbmRhckNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKHcuY29uZmlnLmlubGluZT8iaW5saW5lIjoic3RhdGljIiksdy5jb25maWcuaW5saW5lJiYoIWkmJncuZWxlbWVudC5wYXJlbnROb2RlP3cuZWxlbWVudC5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh3LmNhbGVuZGFyQ29udGFpbmVyLHcuX2lucHV0Lm5leHRTaWJsaW5nKTp2b2lkIDAhPT13LmNvbmZpZy5hcHBlbmRUbyYmdy5jb25maWcuYXBwZW5kVG8uYXBwZW5kQ2hpbGQody5jYWxlbmRhckNvbnRhaW5lcikpLHcuY29uZmlnLnN0YXRpYykpe3ZhciBsPXMoImRpdiIsImZsYXRwaWNrci13cmFwcGVyIik7dy5lbGVtZW50LnBhcmVudE5vZGUmJncuZWxlbWVudC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShsLHcuZWxlbWVudCksbC5hcHBlbmRDaGlsZCh3LmVsZW1lbnQpLHcuYWx0SW5wdXQmJmwuYXBwZW5kQ2hpbGQody5hbHRJbnB1dCksbC5hcHBlbmRDaGlsZCh3LmNhbGVuZGFyQ29udGFpbmVyKX13LmNvbmZpZy5zdGF0aWN8fHcuY29uZmlnLmlubGluZXx8KHZvaWQgMCE9PXcuY29uZmlnLmFwcGVuZFRvP3cuY29uZmlnLmFwcGVuZFRvOndpbmRvdy5kb2N1bWVudC5ib2R5KS5hcHBlbmRDaGlsZCh3LmNhbGVuZGFyQ29udGFpbmVyKX0oKSxmdW5jdGlvbigpe3cuY29uZmlnLndyYXAmJlsib3BlbiIsImNsb3NlIiwidG9nZ2xlIiwiY2xlYXIiXS5mb3JFYWNoKChmdW5jdGlvbihlKXtBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKHcuZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS0iK2UrIl0iKSwoZnVuY3Rpb24odCl7cmV0dXJuIEEodCwiY2xpY2siLHdbZV0pfSkpfSkpO2lmKHcuaXNNb2JpbGUpcmV0dXJuIHZvaWQgZnVuY3Rpb24oKXt2YXIgZT13LmNvbmZpZy5lbmFibGVUaW1lP3cuY29uZmlnLm5vQ2FsZW5kYXI\/InRpbWUiOiJkYXRldGltZS1sb2NhbCI6ImRhdGUiO3cubW9iaWxlSW5wdXQ9cygiaW5wdXQiLHcuaW5wdXQuY2xhc3NOYW1lKyIgZmxhdHBpY2tyLW1vYmlsZSIpLHcubW9iaWxlSW5wdXQudGFiSW5kZXg9MSx3Lm1vYmlsZUlucHV0LnR5cGU9ZSx3Lm1vYmlsZUlucHV0LmRpc2FibGVkPXcuaW5wdXQuZGlzYWJsZWQsdy5tb2JpbGVJbnB1dC5yZXF1aXJlZD13LmlucHV0LnJlcXVpcmVkLHcubW9iaWxlSW5wdXQucGxhY2Vob2xkZXI9dy5pbnB1dC5wbGFjZWhvbGRlcix3Lm1vYmlsZUZvcm1hdFN0cj0iZGF0ZXRpbWUtbG9jYWwiPT09ZT8iWS1tLWRcXFRIOmk6UyI6ImRhdGUiPT09ZT8iWS1tLWQiOiJIOmk6UyIsdy5zZWxlY3RlZERhdGVzLmxlbmd0aD4wJiYody5tb2JpbGVJbnB1dC5kZWZhdWx0VmFsdWU9dy5tb2JpbGVJbnB1dC52YWx1ZT13LmZvcm1hdERhdGUody5zZWxlY3RlZERhdGVzWzBdLHcubW9iaWxlRm9ybWF0U3RyKSk7dy5jb25maWcubWluRGF0ZSYmKHcubW9iaWxlSW5wdXQubWluPXcuZm9ybWF0RGF0ZSh3LmNvbmZpZy5taW5EYXRlLCJZLW0tZCIpKTt3LmNvbmZpZy5tYXhEYXRlJiYody5tb2JpbGVJbnB1dC5tYXg9dy5mb3JtYXREYXRlKHcuY29uZmlnLm1heERhdGUsIlktbS1kIikpO3cuaW5wdXQuZ2V0QXR0cmlidXRlKCJzdGVwIikmJih3Lm1vYmlsZUlucHV0LnN0ZXA9U3RyaW5nKHcuaW5wdXQuZ2V0QXR0cmlidXRlKCJzdGVwIikpKTt3LmlucHV0LnR5cGU9ImhpZGRlbiIsdm9pZCAwIT09dy5hbHRJbnB1dCYmKHcuYWx0SW5wdXQudHlwZT0iaGlkZGVuIik7dHJ5e3cuaW5wdXQucGFyZW50Tm9kZSYmdy5pbnB1dC5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh3Lm1vYmlsZUlucHV0LHcuaW5wdXQubmV4dFNpYmxpbmcpfWNhdGNoKGUpe31BKHcubW9iaWxlSW5wdXQsImNoYW5nZSIsKGZ1bmN0aW9uKGUpe3cuc2V0RGF0ZShnKGUpLnZhbHVlLCExLHcubW9iaWxlRm9ybWF0U3RyKSxwZSgib25DaGFuZ2UiKSxwZSgib25DbG9zZSIpfSkpfSgpO3ZhciBlPWwoaWUsNTApO3cuX2RlYm91bmNlZENoYW5nZT1sKE4sMzAwKSx3LmRheXNDb250YWluZXImJiEvaVBob25lfGlQYWR8aVBvZC9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkmJkEody5kYXlzQ29udGFpbmVyLCJtb3VzZW92ZXIiLChmdW5jdGlvbihlKXsicmFuZ2UiPT09dy5jb25maWcubW9kZSYmYWUoZyhlKSl9KSk7QSh3aW5kb3cuZG9jdW1lbnQuYm9keSwia2V5ZG93biIsbmUpLHcuY29uZmlnLmlubGluZXx8dy5jb25maWcuc3RhdGljfHxBKHdpbmRvdywicmVzaXplIixlKTt2b2lkIDAhPT13aW5kb3cub250b3VjaHN0YXJ0P0Eod2luZG93LmRvY3VtZW50LCJ0b3VjaHN0YXJ0IixaKTpBKHdpbmRvdy5kb2N1bWVudCwibW91c2Vkb3duIixaKTtBKHdpbmRvdy5kb2N1bWVudCwiZm9jdXMiLFose2NhcHR1cmU6ITB9KSwhMD09PXcuY29uZmlnLmNsaWNrT3BlbnMmJihBKHcuX2lucHV0LCJmb2N1cyIsdy5vcGVuKSxBKHcuX2lucHV0LCJjbGljayIsdy5vcGVuKSk7dm9pZCAwIT09dy5kYXlzQ29udGFpbmVyJiYoQSh3Lm1vbnRoTmF2LCJjbGljayIsQ2UpLEEody5tb250aE5hdixbImtleXVwIiwiaW5jcmVtZW50Il0sRiksQSh3LmRheXNDb250YWluZXIsImNsaWNrIix1ZSkpO2lmKHZvaWQgMCE9PXcudGltZUNvbnRhaW5lciYmdm9pZCAwIT09dy5taW51dGVFbGVtZW50JiZ2b2lkIDAhPT13LmhvdXJFbGVtZW50KXt2YXIgdD1mdW5jdGlvbihlKXtyZXR1cm4gZyhlKS5zZWxlY3QoKX07QSh3LnRpbWVDb250YWluZXIsWyJpbmNyZW1lbnQiXSxJKSxBKHcudGltZUNvbnRhaW5lciwiYmx1ciIsSSx7Y2FwdHVyZTohMH0pLEEody50aW1lQ29udGFpbmVyLCJjbGljayIsWSksQShbdy5ob3VyRWxlbWVudCx3Lm1pbnV0ZUVsZW1lbnRdLFsiZm9jdXMiLCJjbGljayJdLHQpLHZvaWQgMCE9PXcuc2Vjb25kRWxlbWVudCYmQSh3LnNlY29uZEVsZW1lbnQsImZvY3VzIiwoZnVuY3Rpb24oKXtyZXR1cm4gdy5zZWNvbmRFbGVtZW50JiZ3LnNlY29uZEVsZW1lbnQuc2VsZWN0KCl9KSksdm9pZCAwIT09dy5hbVBNJiZBKHcuYW1QTSwiY2xpY2siLChmdW5jdGlvbihlKXtJKGUpLE4oKX0pKX13LmNvbmZpZy5hbGxvd0lucHV0JiZBKHcuX2lucHV0LCJibHVyIix0ZSl9KCksKHcuc2VsZWN0ZWREYXRlcy5sZW5ndGh8fHcuY29uZmlnLm5vQ2FsZW5kYXIpJiYody5jb25maWcuZW5hYmxlVGltZSYmXyh3LmNvbmZpZy5ub0NhbGVuZGFyP3cubGF0ZXN0U2VsZWN0ZWREYXRlT2JqOnZvaWQgMCksYmUoITEpKSxrKCk7dmFyIHQ9L14oKD8hY2hyb21lfGFuZHJvaWQpLikqc2FmYXJpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTshdy5pc01vYmlsZSYmdCYmY2UoKSxwZSgib25SZWFkeSIpfSgpLHd9ZnVuY3Rpb24gayhlLHQpe2Zvcih2YXIgbj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnR9KSksYT1bXSxpPTA7aTxuLmxlbmd0aDtpKyspe3ZhciBvPW5baV07dHJ5e2lmKG51bGwhPT1vLmdldEF0dHJpYnV0ZSgiZGF0YS1mcC1vbWl0IikpY29udGludWU7dm9pZCAwIT09by5fZmxhdHBpY2tyJiYoby5fZmxhdHBpY2tyLmRlc3Ryb3koKSxvLl9mbGF0cGlja3I9dm9pZCAwKSxvLl9mbGF0cGlja3I9RShvLHR8fHt9KSxhLnB1c2goby5fZmxhdHBpY2tyKX1jYXRjaChlKXtjb25zb2xlLmVycm9yKGUpfX1yZXR1cm4gMT09PWEubGVuZ3RoP2FbMF06YX0idW5kZWZpbmVkIiE9dHlwZW9mIEhUTUxFbGVtZW50JiYidW5kZWZpbmVkIiE9dHlwZW9mIEhUTUxDb2xsZWN0aW9uJiYidW5kZWZpbmVkIiE9dHlwZW9mIE5vZGVMaXN0JiYoSFRNTENvbGxlY3Rpb24ucHJvdG90eXBlLmZsYXRwaWNrcj1Ob2RlTGlzdC5wcm90b3R5cGUuZmxhdHBpY2tyPWZ1bmN0aW9uKGUpe3JldHVybiBrKHRoaXMsZSl9LEhUTUxFbGVtZW50LnByb3RvdHlwZS5mbGF0cGlja3I9ZnVuY3Rpb24oZSl7cmV0dXJuIGsoW3RoaXNdLGUpfSk7dmFyIFQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU\/ayh3aW5kb3cuZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChlKSx0KTplIGluc3RhbmNlb2YgTm9kZT9rKFtlXSx0KTprKGUsdCl9O3JldHVybiBULmRlZmF1bHRDb25maWc9e30sVC5sMTBucz17ZW46ZSh7fSxpKSxkZWZhdWx0OmUoe30saSl9LFQubG9jYWxpemU9ZnVuY3Rpb24odCl7VC5sMTBucy5kZWZhdWx0PWUoZSh7fSxULmwxMG5zLmRlZmF1bHQpLHQpfSxULnNldERlZmF1bHRzPWZ1bmN0aW9uKHQpe1QuZGVmYXVsdENvbmZpZz1lKGUoe30sVC5kZWZhdWx0Q29uZmlnKSx0KX0sVC5wYXJzZURhdGU9Qyh7fSksVC5mb3JtYXREYXRlPWIoe30pLFQuY29tcGFyZURhdGVzPU0sInVuZGVmaW5lZCIhPXR5cGVvZiBqUXVlcnkmJnZvaWQgMCE9PWpRdWVyeS5mbiYmKGpRdWVyeS5mbi5mbGF0cGlja3I9ZnVuY3Rpb24oZSl7cmV0dXJuIGsodGhpcyxlKX0pLERhdGUucHJvdG90eXBlLmZwX2luY3I9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBEYXRlKHRoaXMuZ2V0RnVsbFllYXIoKSx0aGlzLmdldE1vbnRoKCksdGhpcy5nZXREYXRlKCkrKCJzdHJpbmciPT10eXBlb2YgZT9wYXJzZUludChlLDEwKTplKSl9LCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiYod2luZG93LmZsYXRwaWNrcj1UKSxUfSkpOwovKiogL20vanMvdmFuaWxsYWpzL2ZsYXRwaWNrci5mci5qcyAqKi8KdmFyIF9fX2QyY19mbGF0cGlja3JmcmpzX2Nfb249IjIwMjUtMDUtMjMgMTc6MDU6MTciOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX2ZsYXRwaWNrcmZyanNfY19vbj0iMjAyNC0wMS0zMSAxNDozMjo0NiI7InVzZSBzdHJpY3QiO19fX2QyY19mbGF0cGlja3JmcmpzX2Nfb249IjIwMjMtMDEtMTIgMTE6NDE6NDYiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfZmxhdHBpY2tyZnJqc19jX29uPSIyMDIzLTAxLTEyIDEwOjUxOjMwIjsidXNlIHN0cmljdCI7X19fZDJjX2ZsYXRwaWNrcmZyanNfY19vbj0iMjAyMS0xMi0yMSAxMzozMDo1MiI7InVzZSBzdHJpY3QiOwooZnVuY3Rpb24oYixhKXsib2JqZWN0Ij09PXR5cGVvZiBleHBvcnRzJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBtb2R1bGU\/YShleHBvcnRzKToiZnVuY3Rpb24iPT09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyJleHBvcnRzIl0sYSk6KGI9InVuZGVmaW5lZCIhPT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOmJ8fHNlbGYsYShiLmZyPXt9KSl9KSh0aGlzLGZ1bmN0aW9uKGIpe3ZhciBhPSJ1bmRlZmluZWQiIT09dHlwZW9mIHdpbmRvdyYmdm9pZCAwIT09d2luZG93LmZsYXRwaWNrcj93aW5kb3cuZmxhdHBpY2tyOntsMTBuczp7fX0sYz17Zmlyc3REYXlPZldlZWs6MSx3ZWVrZGF5czp7c2hvcnRoYW5kOiJkaW0gbHVuIG1hciBtZXIgamV1IHZlbiBzYW0iLnNwbGl0KCIgIiksbG9uZ2hhbmQ6ImRpbWFuY2hlIGx1bmRpIG1hcmRpIG1lcmNyZWRpIGpldWRpIHZlbmRyZWRpIHNhbWVkaSIuc3BsaXQoIiAiKX0sbW9udGhzOntzaG9ydGhhbmQ6ImphbnYgZsOpdnIgbWFycyBhdnIgbWFpIGp1aW4ganVpbCBhb8O7dCBzZXB0IG9jdCBub3YgZMOpYyIuc3BsaXQoIiAiKSwKbG9uZ2hhbmQ6ImphbnZpZXIgZsOpdnJpZXIgbWFycyBhdnJpbCBtYWkganVpbiBqdWlsbGV0IGFvw7t0IHNlcHRlbWJyZSBvY3RvYnJlIG5vdmVtYnJlIGTDqWNlbWJyZSIuc3BsaXQoIiAiKX0sb3JkaW5hbDpmdW5jdGlvbihkKXtyZXR1cm4gMTxkPyIiOiJlciJ9LHJhbmdlU2VwYXJhdG9yOiIgYXUgIix3ZWVrQWJicmV2aWF0aW9uOiJTZW0iLHNjcm9sbFRpdGxlOiJEw6lmaWxlciBwb3VyIGF1Z21lbnRlciBsYSB2YWxldXIiLHRvZ2dsZVRpdGxlOiJDbGlxdWVyIHBvdXIgYmFzY3VsZXIiLHRpbWVfMjRocjohMH07YS5sMTBucy5mcj1jO2E9YS5sMTBucztiLkZyZW5jaD1jO2IuZGVmYXVsdD1hO09iamVjdC5kZWZpbmVQcm9wZXJ0eShiLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0pOwovKiogL20vanMvZnIubmV3Y2Fycy5pbmxpbmUuanMgKiovCnZhciBqc19kMmNfZ2V0X3ZhbD0oanNfZDJjX2dldF92YWx8fGZ1bmN0aW9uKGlkKXt0cnl7cmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS52YWx1ZTt9Y2F0Y2goZXgpe2lmKGNvbnNvbGUmJmNvbnNvbGUubG9nKWNvbnNvbGUubG9nKCJTeXN0ZW0gZmFpbGVkIHdoaWxlIHJldHJpZXZpbmcgcmVwbGFjZW1lbnQgdmFsdWU6ICIraWQsZXgpO3JldHVybicnO319KTt2YXIgaWRlbnRfYmEwZmJmYmIxZDdhMGMzMWJjMzMxZjE4Y2JhZTUwZTk7dHJ5e0QyQVNDKHsidXNlckxhbmd1YWdlIjoiZnJlIiwicGFDb2RlIjoiNjcyMCIsImNsaWVudCI6ImhvbmRhIiwicGFnZUlkIjoic2hvd3Jvb20iLCJvZW1JbmZvIjp7Im9lbURlYWxlckNvZGUiOiI2NzIwIiwiMCI6IjY3MjAiLCJvZW0iOiJIb25kYSIsIjEiOiJIb25kYSJ9LCJkZWFsZXJfbmFtZSI6IiIsImZvcm1NYXAiOnsiQURGQnVybGluZ3Rvbl9DZW50cmVfLV9FVl9Ub3VyXy1fRHJpdmVmZSI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIEJ1cmxpbmd0b24gQ2VudHJlIC0gRVYgVG91ciAtIERyaXZlZmVzdCArIEtpYSBTaWduIFVwIFdhcm0gTGVhZDogQ29udGFjdCBEZWFsZXIiLCJFTkdMSVNIIjoiTGVhZCBGcm9tIEJ1cmxpbmd0b24gQ2VudHJlIC0gRVYgVG91ciAtIERyaXZlZmVzdCArIEtpYSBTaWduIFVwIFdhcm0gTGVhZDogQ29udGFjdCBEZWFsZXIifSwiQURGY2FtcGJlbGxyaXZlcmNhcnMuY2FfKEQyQ19NZWRpYSlfLV9MZSI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIGNhbXBiZWxscml2ZXJjYXJzLmNhIChEMkMgTWVkaWEpIC0gTGVhZDogVmVoaWNsZSBBdmFpbGFiaWxpdHkgW0dvb2dsZSAtIFVzZWQgICBMb2NfcGh5c2ljYWw9OTAwMTYxM10iLCJFTkdMSVNIIjoiTGVhZCBGcm9tIGNhbXBiZWxscml2ZXJjYXJzLmNhIChEMkMgTWVkaWEpIC0gTGVhZDogVmVoaWNsZSBBdmFpbGFiaWxpdHkgW0dvb2dsZSAtIFVzZWQgICBMb2NfcGh5c2ljYWw9OTAwMTYxM10ifSwiQURGY2FybWF0Y2hlci5jYV8oRDJDX01lZGlhKV8tX0xlYWQ6X0FwcCI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIGNhcm1hdGNoZXIuY2EgKEQyQyBNZWRpYSkgLSBMZWFkOiBBcHBvaW50bWVudCByZXF1ZXN0IFtHb29nbGUgLSBPcmdhbmljXSIsIkVOR0xJU0giOiJMZWFkIEZyb20gY2FybWF0Y2hlci5jYSAoRDJDIE1lZGlhKSAtIExlYWQ6IEFwcG9pbnRtZW50IHJlcXVlc3QgW0dvb2dsZSAtIE9yZ2FuaWNdIn0sIkFERmNhcm1hdGNoZXIuY2FfKEQyQ19NZWRpYSlfLV9MZWFkOl9DYXIiOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBjYXJtYXRjaGVyLmNhIChEMkMgTWVkaWEpIC0gTGVhZDogQ2FyRmF4IHJlcXVlc3QgW0dvb2dsZSAtIE9yZ2FuaWNdIiwiRU5HTElTSCI6IkxlYWQgRnJvbSBjYXJtYXRjaGVyLmNhIChEMkMgTWVkaWEpIC0gTGVhZDogQ2FyRmF4IHJlcXVlc3QgW0dvb2dsZSAtIE9yZ2FuaWNdIn0sIkFERmNhcm1hdGNoZXIuY2FfKEQyQ19NZWRpYSlfLV9MZWFkOl9PZmYiOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBjYXJtYXRjaGVyLmNhIChEMkMgTWVkaWEpIC0gTGVhZDogT2ZmZXIgb24gYSB2ZWhpY2xlIFtHb29nbGUgLSBPcmdhbmljXSIsIkVOR0xJU0giOiJMZWFkIEZyb20gY2FybWF0Y2hlci5jYSAoRDJDIE1lZGlhKSAtIExlYWQ6IE9mZmVyIG9uIGEgdmVoaWNsZSBbR29vZ2xlIC0gT3JnYW5pY10ifSwiQURGY2FybWF0Y2hlci5jYV8oRDJDX01lZGlhKV8tX0xlYWQ6X1BERiI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIGNhcm1hdGNoZXIuY2EgKEQyQyBNZWRpYSkgLSBMZWFkOiBQREYgcmVxdWVzdCAtIFZlaGljbGUgaW4gaW52ZW50b3J5IFtHb29nbGUgLSBPcmdhbmljXSIsIkVOR0xJU0giOiJMZWFkIEZyb20gY2FybWF0Y2hlci5jYSAoRDJDIE1lZGlhKSAtIExlYWQ6IFBERiByZXF1ZXN0IC0gVmVoaWNsZSBpbiBpbnZlbnRvcnkgW0dvb2dsZSAtIE9yZ2FuaWNdIn0sIkFERmNhcm1hdGNoZXIuY2FfKEQyQ19NZWRpYSlfLV9MZWFkOl9SZXEiOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBjYXJtYXRjaGVyLmNhIChEMkMgTWVkaWEpIC0gTGVhZDogUmVxdWVzdCBmb3IgZmluYW5jaW5nIChNdWx0aXN0ZXApIFtHb29nbGUgLSBPcmdhbmljXSIsIkVOR0xJU0giOiJMZWFkIEZyb20gY2FybWF0Y2hlci5jYSAoRDJDIE1lZGlhKSAtIExlYWQ6IFJlcXVlc3QgZm9yIGZpbmFuY2luZyAoTXVsdGlzdGVwKSBbR29vZ2xlIC0gT3JnYW5pY10ifSwiQURGY2FybWF0Y2hlci5jYV8oRDJDX01lZGlhKV8tX0xlYWQ6X1NlciI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIGNhcm1hdGNoZXIuY2EgKEQyQyBNZWRpYSkgLSBMZWFkOiBTZXJ2aWNlIGFwcG9pbnRtZW50IHJlcXVlc3QgW0ZhY2Vib29rIC0gT3JnYW5pY10iLCJFTkdMSVNIIjoiTGVhZCBGcm9tIGNhcm1hdGNoZXIuY2EgKEQyQyBNZWRpYSkgLSBMZWFkOiBTZXJ2aWNlIGFwcG9pbnRtZW50IHJlcXVlc3QgW0ZhY2Vib29rIC0gT3JnYW5pY10ifSwiQURGY2FybWF0Y2hlci5jYV8oRDJDX01lZGlhKV8tX0xlYWQ6X1RyYSI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIGNhcm1hdGNoZXIuY2EgKEQyQyBNZWRpYSkgLSBMZWFkOiBUcmFkZS1pbiByZXF1ZXN0IFtHb29nbGUgLSBPcmdhbmljXSIsIkVOR0xJU0giOiJMZWFkIEZyb20gY2FybWF0Y2hlci5jYSAoRDJDIE1lZGlhKSAtIExlYWQ6IFRyYWRlLWluIHJlcXVlc3QgW0dvb2dsZSAtIE9yZ2FuaWNdIn0sIkFERmNhcm1hdGNoZXIuY2FfKEQyQ19NZWRpYSlfLV9MZWFkOl9WZWgiOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBjYXJtYXRjaGVyLmNhIChEMkMgTWVkaWEpIC0gTGVhZDogVmVoaWNsZSBBdmFpbGFiaWxpdHkgW0dvb2dsZSAtIE9yZ2FuaWNdIiwiRU5HTElTSCI6IkxlYWQgRnJvbSBjYXJtYXRjaGVyLmNhIChEMkMgTWVkaWEpIC0gTGVhZDogVmVoaWNsZSBBdmFpbGFiaWxpdHkgW0dvb2dsZSAtIE9yZ2FuaWNdIn0sIkFERmNhcm1hdGNoZXIuY2FfKEQyQ19NZWRpYV8tX09yZ2FuaWMpXy0iOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBjYXJtYXRjaGVyLmNhIChEMkMgTWVkaWEgLSBPcmdhbmljKSAtIExlYWQ6IFZlaGljbGUgQXZhaWxhYmlsaXR5IFtPcmdhbmljXSIsIkVOR0xJU0giOiJMZWFkIEZyb20gY2FybWF0Y2hlci5jYSAoRDJDIE1lZGlhIC0gT3JnYW5pYykgLSBMZWFkOiBWZWhpY2xlIEF2YWlsYWJpbGl0eSBbT3JnYW5pY10ifSwiQURGZGFuaWVscGFyZWRvZGdlLmNvbV8ocGFyX0QyQ19NZWRpYSlfLSI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIGRhbmllbHBhcmVkb2RnZS5jb20gKHBhciBEMkMgTWVkaWEpIC0gRDJDIE1lZGlhIC0gTGVhZCA6IFZvaXIgbCdvZmZyZSBjb3Vwb24gU1JQIFtHb29nbGUgLSBOZXVmLXZsYV0iLCJFTkdMSVNIIjoiTGVhZCBGcm9tIGRhbmllbHBhcmVkb2RnZS5jb20gKHBhciBEMkMgTWVkaWEpIC0gRDJDIE1lZGlhIC0gTGVhZCA6IFZvaXIgbCdvZmZyZSBjb3Vwb24gU1JQIFtHb29nbGUgLSBOZXVmLXZsYV0ifSwiQURGZGVtb2NybS5kMmNtZWRpYS5jYV8oRDJDX01lZGlhXy1fT3JnYSI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIGRlbW9jcm0uZDJjbWVkaWEuY2EgKEQyQyBNZWRpYSAtIE9yZ2FuaWMpIC0gTGVhZDogUmVxdWVzdCBmb3IgYSByZWJhdGUgY291cG9uIChpbnZlbnRvcnkgdmVoaWNsZSkgW09yZ2FuaWNdIiwiRU5HTElTSCI6IkxlYWQgRnJvbSBkZW1vY3JtLmQyY21lZGlhLmNhIChEMkMgTWVkaWEgLSBPcmdhbmljKSAtIExlYWQ6IFJlcXVlc3QgZm9yIGEgcmViYXRlIGNvdXBvbiAoaW52ZW50b3J5IHZlaGljbGUpIFtPcmdhbmljXSJ9LCJBREZNb25fc2l0ZV8tX0QyQ19NZWRpYV8tX0xlYWRfOl9EZW1hbmRlIjp7IkZSRU5DSCI6IkRlbWFuZGUgZGUgTW9uIHNpdGUgLSBEMkMgTWVkaWEgLSBMZWFkIDogRGVtYW5kZSBkZSB2YWxldXIgZCcmQXRpbGRlOyZjb3B5O2NoYW5nZSAoU01TKSBbR29vZ2xlIC0gT3JnYW5pY10iLCJFTkdMSVNIIjoiTGVhZCBGcm9tIE1vbiBzaXRlIC0gRDJDIE1lZGlhIC0gTGVhZCA6IERlbWFuZGUgZGUgdmFsZXVyIGQnJkF0aWxkZTsmY29weTtjaGFuZ2UgKFNNUykgW0dvb2dsZSAtIE9yZ2FuaWNdIn0sIkFERnBhbGxhZGlub2F1dG9ncm91cC5jb21fKEQyQ19NZWRpYSlfLV8iOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBwYWxsYWRpbm9hdXRvZ3JvdXAuY29tIChEMkMgTWVkaWEpIC0gTGVhZDogQ2FyRmF4IHJlcXVlc3QgW0dvb2dsZSAtIFVzZWQtdmxhICAgTG9jX3BoeXNpY2FsPTkwMDExNDFdIiwiRU5HTElTSCI6IkxlYWQgRnJvbSBwYWxsYWRpbm9hdXRvZ3JvdXAuY29tIChEMkMgTWVkaWEpIC0gTGVhZDogQ2FyRmF4IHJlcXVlc3QgW0dvb2dsZSAtIFVzZWQtdmxhICAgTG9jX3BoeXNpY2FsPTkwMDExNDFdIn0sIkFERnBhbGxhZGlub2F1dG9ncm91cC5jb21fKEQyQ19NZWRpYSlfXy0iOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBwYWxsYWRpbm9hdXRvZ3JvdXAuY29tIChEMkMgTWVkaWEpICAtIExlYWQ6IFJlcXVlc3QgZm9yIGNvbnRhY3QgW0ZhY2Vib29rIC0gVXNlZCBbIEtleXdvcmQ6IFVzZWQrVHJ1Y2tdICBMb2NfIiwiRU5HTElTSCI6IkxlYWQgRnJvbSBwYWxsYWRpbm9hdXRvZ3JvdXAuY29tIChEMkMgTWVkaWEpICAtIExlYWQ6IFJlcXVlc3QgZm9yIGNvbnRhY3QgW0ZhY2Vib29rIC0gVXNlZCBbIEtleXdvcmQ6IFVzZWQrVHJ1Y2tdICBMb2NfcCJ9LCJBREZwYWxsYWRpbm9hdXRvZ3JvdXAuY29tXyhEMkNfX01lZGlhKV8tIjp7IkZSRU5DSCI6IkRlbWFuZGUgZGUgcGFsbGFkaW5vYXV0b2dyb3VwLmNvbSAoRDJDICBNZWRpYSkgLSBMZWFkOiBUcmFkZS1pbiByZXF1ZXN0IFtHb29nbGUgLSBUcmFkZSAgIExvY19waHlzaWNhbD05MDAxMTE4XSIsIkVOR0xJU0giOiJMZWFkIEZyb20gcGFsbGFkaW5vYXV0b2dyb3VwLmNvbSAoRDJDICBNZWRpYSkgLSBMZWFkOiBUcmFkZS1pbiByZXF1ZXN0IFtHb29nbGUgLSBUcmFkZSAgIExvY19waHlzaWNhbD05MDAxMTE4XSJ9LCJBREZwYWxsYWRpbm9hdXRvZ3JvdXAuY29tX18oRDJDX01lZGlhKV8tIjp7IkZSRU5DSCI6IkRlbWFuZGUgZGUgcGFsbGFkaW5vYXV0b2dyb3VwLmNvbSAgKEQyQyBNZWRpYSkgLSBMZWFkOiBUcmFkZS1pbiByZXF1ZXN0IFtHb29nbGUgLSBUcmFkZSAgIExvY19waHlzaWNhbD05MDAxMTMzXSIsIkVOR0xJU0giOiJMZWFkIEZyb20gcGFsbGFkaW5vYXV0b2dyb3VwLmNvbSAgKEQyQyBNZWRpYSkgLSBMZWFkOiBUcmFkZS1pbiByZXF1ZXN0IFtHb29nbGUgLSBUcmFkZSAgIExvY19waHlzaWNhbD05MDAxMTMzXSJ9LCJBREZwYWxsYWRpbm9zdWJhcnUuY2FfKHBhcl9EMkNfTWVkaWFfLV9PIjp7IkZSRU5DSCI6IkRlbWFuZGUgZGUgcGFsbGFkaW5vc3ViYXJ1LmNhIChwYXIgRDJDIE1lZGlhIC0gT3JnYW5pYykgLSBEMkMgTWVkaWEgLSBMZWFkOiBQREYgYnJvY2h1cmUgcmVxdWVzdCBbT3JnYW5pY10iLCJFTkdMSVNIIjoiTGVhZCBGcm9tIHBhbGxhZGlub3N1YmFydS5jYSAocGFyIEQyQyBNZWRpYSAtIE9yZ2FuaWMpIC0gRDJDIE1lZGlhIC0gTGVhZDogUERGIGJyb2NodXJlIHJlcXVlc3QgW09yZ2FuaWNdIn0sIkFERlNjYXJib3JvdWdoX1Rvd25fQ2VudHJlXy1fRVZfVG91cl8tX0QiOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBTY2FyYm9yb3VnaCBUb3duIENlbnRyZSAtIEVWIFRvdXIgLSBEcml2ZWZlc3QgKyBLaWEgU2lnbiBVcCBXYXJtIExlYWQ6IENvbnRhY3QgRGVhbGVyIiwiRU5HTElTSCI6IkxlYWQgRnJvbSBTY2FyYm9yb3VnaCBUb3duIENlbnRyZSAtIEVWIFRvdXIgLSBEcml2ZWZlc3QgKyBLaWEgU2lnbiBVcCBXYXJtIExlYWQ6IENvbnRhY3QgRGVhbGVyIn0sIkFERlNoZXJ3YXlfR2FyZGVuc18tX0VWX1RvdXJfLV9Ecml2ZWZlc3QiOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBTaGVyd2F5IEdhcmRlbnMgLSBFViBUb3VyIC0gRHJpdmVmZXN0IFNpZ24gVXAgV2FybSBMZWFkOiBDb250YWN0IERlYWxlciIsIkVOR0xJU0giOiJMZWFkIEZyb20gU2hlcndheSBHYXJkZW5zIC0gRVYgVG91ciAtIERyaXZlZmVzdCBTaWduIFVwIFdhcm0gTGVhZDogQ29udGFjdCBEZWFsZXIifSwiQURGU3F1YXJlX09uZV8tX0VWX1RvdXJfLV9Ecml2ZWZlc3RfK19LaSI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIFNxdWFyZSBPbmUgLSBFViBUb3VyIC0gRHJpdmVmZXN0ICsgS2lhIFNpZ24gVXAgV2FybSBMZWFkOiBDb250YWN0IERlYWxlciIsIkVOR0xJU0giOiJMZWFkIEZyb20gU3F1YXJlIE9uZSAtIEVWIFRvdXIgLSBEcml2ZWZlc3QgKyBLaWEgU2lnbiBVcCBXYXJtIExlYWQ6IENvbnRhY3QgRGVhbGVyIn0sIkFERlNxdWFyZV9PbmVfLV9FVl9Ub3VyXy1fS2lhX1NpZ25fVXBfSG8iOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBTcXVhcmUgT25lIC0gRVYgVG91ciAtIEtpYSBTaWduIFVwIEhvdCBMZWFkOiBDb250YWN0IERlYWxlciIsIkVOR0xJU0giOiJMZWFkIEZyb20gU3F1YXJlIE9uZSAtIEVWIFRvdXIgLSBLaWEgU2lnbiBVcCBIb3QgTGVhZDogQ29udGFjdCBEZWFsZXIifSwiQURGVXBwZXJfQ2FuYWRhX01hbGxfLV9FVl9Ub3VyXy1fRHJpdmVmZSI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIFVwcGVyIENhbmFkYSBNYWxsIC0gRVYgVG91ciAtIERyaXZlZmVzdCBTaWduIFVwIFdhcm0gTGVhZDogQ29udGFjdCBEZWFsZXIiLCJFTkdMSVNIIjoiTGVhZCBGcm9tIFVwcGVyIENhbmFkYSBNYWxsIC0gRVYgVG91ciAtIERyaXZlZmVzdCBTaWduIFVwIFdhcm0gTGVhZDogQ29udGFjdCBEZWFsZXIifSwiQXZhaWxhYmlsaXR5VXNlZCI6eyJGUkVOQ0giOiJMZWFkOiBEaXNwb25pYmlsaXRlIGQndW4gdmVoaWN1bGUiLCJFTkdMSVNIIjoiTGVhZDogVmVoaWNsZSBBdmFpbGFiaWxpdHkifSwiQmFubmVyRm9ybSI6eyJGUkVOQ0giOiJMZWFkOiBEZW1hbmRlIGRlIGZvcm0gYmFubmVyIiwiRU5HTElTSCI6IkxlYWQ6IEJhbm5lciBGb3JtIFJlcXVlc3QifSwiQmVzdFByaWNlUmVxdWVzdE5ldyI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSAgbWVpbGxldXIgcHJpeCAodmVoaWN1bGUgbmV1ZikiLCJFTkdMSVNIIjoiTGVhZDogUmVxdWVzdCBmb3IgYSBiZXN0IHByaWNlIChuZXcgdmVoaWNsZSkifSwiQm9keVNob3AiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgcmVuZGV6LXZvdXMgZW4gY2Fyb3NzZXJpZSIsIkVOR0xJU0giOiJMZWFkOiBWZWhpY2xlIGJvZHkgc2hvcCBhcHBvaW50bWVudCByZXF1ZXN0In0sIkJyb2NodXJlcyI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBicm9jaHVyZSIsIkVOR0xJU0giOiJMZWFkIDogQnJvY2h1cmUgcmVxdWVzdCJ9LCJCcm9jaHVyZXNSZXF1ZXN0Ijp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIGJyb2NodXJlIiwiRU5HTElTSCI6IkxlYWQgOiBCcm9jaHVyZSByZXF1ZXN0In0sIkJ1aWxkQW5kUHJpY2VfU2F2ZSI6eyJGUkVOQ0giOiJMZWFkOiBDb25maWd1cmF0aW9uIGQndW4gdmVoaWN1bGUgbmV1ZiIsIkVOR0xJU0giOiJMZWFkOiBOZXcgVmVoaWNsZSBDb25maWd1cmF0aW9uIChCdWlsZCAmIFByaWNlKSJ9LCJCdWlsZEFuZFByaWNlX1N0b2NrIjp7IkZSRU5DSCI6IkxlYWQ6IERpc3BvbmliaWxpdGUgZCd1biB2ZWhpY3VsZSIsIkVOR0xJU0giOiJMZWFkOiBWZWhpY2xlIEF2YWlsYWJpbGl0eSJ9LCJDYXJwcm9vZk1haWwiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgQ2FyRmF4IiwiRU5HTElTSCI6IkxlYWQ6IENhckZheCByZXF1ZXN0In0sIkNvbnRhY3RSZXF1ZXN0Ijp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIGNvbnRhY3QiLCJFTkdMSVNIIjoiTGVhZDogUmVxdWVzdCBmb3IgY29udGFjdCJ9LCJDb250YWN0VXNSZXF1ZXN0Ijp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIGNvbnRhY3QiLCJFTkdMSVNIIjoiTGVhZDogUmVxdWVzdCBmb3IgY29udGFjdCJ9LCJDb250YWN0VmlzaXRSZXF1ZXN0Ijp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIGNvbnRhY3QgVmVudGUiLCJFTkdMSVNIIjoiTGVhZDogUmVxdWVzdCBmb3IgY29udGFjdCBTYWxlcyJ9LCJDb250YWN0VmlzaXRSZXF1ZXN0TmV3Ijp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIGNvbnRhY3QgVmVudGUiLCJFTkdMSVNIIjoiTGVhZDogUmVxdWVzdCBmb3IgY29udGFjdCBTYWxlcyJ9LCJDcmVkaXRCb29zdE11bHRpIjp7IkZSRU5DSCI6IkxlYWQ6IERlbWFuZGUgZGUgcHJlcXVhbGlmaWNhdGlvbiBkZSBjcmVkaXQiLCJFTkdMSVNIIjoiTGVhZDogUmVxdWVzdCBmb3IgQ3JlZGl0IFByZS1RdWFsaWZpY2F0aW9uIn0sIkNyZWRpdE11bHRpc3RlcFJlcXVlc3QiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgZmluYW5jZW1lbnQgKFBsdXNpZXVycyBldGFwZXMpIiwiRU5HTElTSCI6IkxlYWQ6IFJlcXVlc3QgZm9yIGZpbmFuY2luZyAoTXVsdGlzdGVwKSJ9LCJDcmVkaXRNdWx0aXN0ZXBSZXF1ZXN0Mm5kQ2hhbmNlIjp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIGZpbmFuY2VtZW50IChQbHVzaWV1cnMgZXRhcGVzIDJlIGNoYW5jZSkiLCJFTkdMSVNIIjoiTGVhZDogUmVxdWVzdCBmb3IgZmluYW5jaW5nIChNdWxpc3RlcCAybmQgY2hhbmNlKSJ9LCJDcmVkaXRNdWx0aXN0ZXBSZXF1ZXN0SW5zdGFudCI6eyJGUkVOQ0giOiJMZWFkOiBBcHByb2JhdGlvbiBkZSBjcmVkaXQgaW5zdGFudGFuZWUiLCJFTkdMSVNIIjoiTGVhZDogSW5zdGFudCBDcmVkaXQgQXBwcm92YWwifSwiQ3JlZGl0UmVxdWVzdCI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBmaW5hbmNlbWVudCIsIkVOR0xJU0giOiJMZWFkOiBSZXF1ZXN0IGZvciBmaW5hbmNpbmcifSwiQ3JlZGl0UmVxdWVzdE1vYmlsZSI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBmaW5hbmNlbWVudCIsIkVOR0xJU0giOiJMZWFkOiBSZXF1ZXN0IGZvciBmaW5hbmNpbmcifSwiQ3JlZGl0UmVxdWVzdE1vYmlsZUZ1bGwiOnsiRlJFTkNIIjoiTGVhZDogUmVxdWVzdCBmb3IgZmluYW5jaW5nIiwiRU5HTElTSCI6IkxlYWQ6IFJlcXVlc3QgZm9yIGZpbmFuY2luZyJ9LCJDcmVkaXRSZXF1ZXN0X1Nob3J0Ijp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIGZpbmFuY2VtZW50ICh2ZXJzaW9uIGNvdXJ0ZSkiLCJFTkdMSVNIIjoiTGVhZCA6IENyZWRpdCBhcHBsaWNhdGlvbiAoc2hvcnQgdmVyc2lvbikifSwiRGVhbGVyQXBwb2ludG1lbnQiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgcmVuZGV6LXZvdXMiLCJFTkdMSVNIIjoiTGVhZDogQXBwb2ludG1lbnQgcmVxdWVzdCJ9LCJEaXNjb3Zlck9mZmVyIjp7IkZSRU5DSCI6IkxlYWQgOiBWb2lyIGwnb2ZmcmUgY291cG9uIFNSUCIsIkVOR0xJU0giOiJMZWFkOiBTZWUgT2ZmZXIgQ291cG9uIGluIFNSUCJ9LCJFc3RoZXRpY1JlcXVlc3QiOnsiRlJFTkNIIjoiTGVhZDogRGVtYW5kZSBkZSByZW5kZXotdm91cyBhIGwnZXN0aGV0cXVlIGV0IGxhdmUtYXV0byIsIkVOR0xJU0giOiJMZWFkOiBWZWhpY2xlIGVzdGhldGljIGFuZCBjYXIgd2FzaCBhcHBvaW50bWVudCByZXF1ZXN0In0sImZhY2Vib29rQ29ubmVjdCI6eyJGUkVOQ0giOiJMZWFkOiBSYWJhaXMgRmFjZWJvb2siLCJFTkdMSVNIIjoiTGVhZDogRmFjZWJvb2sgUmViYXRlIn0sIkZpbmRWZWhpY2xlIjp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIHJlY2hlcmNoZSBkZSB2ZWhpY3VsZSIsIkVOR0xJU0giOiJMZWFkOiBSZXF1ZXN0IHRvIGZpbmQgYSBwcmUtb3duZWQgdmVoaWNsZSJ9LCJoZWFkZXJTZXJ2aWNlIjp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIHJlbmRlei12b3VzIGF1IHNlcnZpY2UgRXhwcmVzcyIsIkVOR0xJU0giOiJMZWFkOiBTZXJ2aWNlIGFwcG9pbnRtZW50IHJlcXVlc3QgRXhwcmVzcyJ9LCJNYWtlT2ZmZXIiOnsiRlJFTkNIIjoiTGVhZCA6IE9mZnJlIGQnYWNoYXQgc3VyIHVuIHZlaGljdWxlIiwiRU5HTElTSCI6IkxlYWQ6IE9mZmVyIG9uIGEgdmVoaWNsZSJ9LCJNYWtlT2ZmZXJOZXciOnsiRlJFTkNIIjoiTGVhZCA6IE9mZnJlIGQnYWNoYXQgc3VyIHVuIHZlaGljdWxlIiwiRU5HTElTSCI6IkxlYWQ6IE9mZmVyIG9uIGEgdmVoaWNsZSJ9LCJtZW51U2VydmljZSI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSByZW5kZXotdm91cyBhdSBzZXJ2aWNlIEV4cHJlc3MiLCJFTkdMSVNIIjoiTGVhZDogU2VydmljZSBhcHBvaW50bWVudCByZXF1ZXN0IEV4cHJlc3MifSwiTW9udGhseVBheW1lbnRzIjp7IkZSRU5DSCI6IkRlbWFuZGUgZGUgbWVuc3VhbGl0ZXMiLCJFTkdMSVNIIjoiUmVxdWVzdCBmb3IgbW9udGhseSBwYXltZW50cyJ9LCJNb250aGx5UGF5bWVudHNfTkVXIjp7IkZSRU5DSCI6IkRlbWFuZGUgZGUgbWVuc3VhbGl0ZXMiLCJFTkdMSVNIIjoiUmVxdWVzdCBmb3IgbW9udGhseSBwYXltZW50cyJ9LCJNb250aGx5UGF5bWVudHNfU01TIjp7IkZSRU5DSCI6IkRlbWFuZGUgZGUgbWVuc3VhbGl0ZXMgLSBTTVMiLCJFTkdMSVNIIjoiUmVxdWVzdCBmb3IgbW9udGhseSBwYXltZW50cyAtIFNNUyJ9LCJNb250aGx5UGF5bWVudHNfU01TX05FVyI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIG1lbnN1YWxpdGVzIC0gU01TIiwiRU5HTElTSCI6IlJlcXVlc3QgZm9yIG1vbnRobHkgcGF5bWVudHMgLSBTTVMifSwiUGFydHNSZXF1ZXN0Ijp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIGNvbW1hbmRlIHBpJmVncmF2ZTtjZSIsIkVOR0xJU0giOiJMZWFkOiBSZXF1ZXN0IGZvciB2ZWhpY2xlIHBhcnRzIn0sIlBob3RvUmVxdWVzdCI6eyJGUkVOQ0giOiJMZWFkOiBEZW1hbmRlIGRlIHBob3RvcyIsIkVOR0xJU0giOiJMZWFkOiBQaG90byByZXF1ZXN0In0sIlBvcFVwSW5zdGFudFJlYmF0ZSI6eyJGUkVOQ0giOiJMZWFkOiBEZW1hbmRlIGRlIFJhYmFpcyBJbnN0YW50YW5lIiwiRU5HTElTSCI6IkxlYWQ6IEluc3RhbnQgUmViYXRlIHJlcXVlc3QifSwiUG9wVXBJbnN0YW50UmViYXRlMyI6eyJGUkVOQ0giOiJMZWFkOiBEZW1hbmRlIGRlIFJhYmFpcyBJbnN0YW50YW5lIiwiRU5HTElTSCI6IkxlYWQ6IEluc3RhbnQgUmViYXRlIHJlcXVlc3QifSwiUG9wVXBJbnN0YW50UmViYXRlQUEiOnsiRlJFTkNIIjoiTGVhZDogRGVtYW5kZSBkZSBSYWJhaXMgSW5zdGFudGFuZSIsIkVOR0xJU0giOiJMZWFkOiBJbnN0YW50IFJlYmF0ZSByZXF1ZXN0In0sIlByaWNlUmVxdWVzdCI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBwcml4IiwiRU5HTElTSCI6IkxlYWQ6IFByaWNlIHJlcXVlc3QifSwiUHJpY2VSZXF1ZXN0TmV3Ijp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIHByaXgiLCJFTkdMSVNIIjoiTGVhZDogUHJpY2UgcmVxdWVzdCJ9LCJQcmljZVZlaGljbGUiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgdmFsZXVyIGQnZWNoYW5nZSIsIkVOR0xJU0giOiJMZWFkOiBUcmFkZS1pbiByZXF1ZXN0In0sIlByaWNlVmVoaWNsZUFjY3V0cmFkZSI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSB2YWxldXIgZCdlY2hhbmdlIiwiRU5HTElTSCI6IkxlYWQgOiBMZWFkOiBUcmFkZS1pbiByZXF1ZXN0In0sIlByaWNlVmVoaWNsZU5ldyI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSB2YWxldXIgZCdlY2hhbmdlIiwiRU5HTElTSCI6IkxlYWQ6IFRyYWRlLWluIHJlcXVlc3QifSwiUXVpY2tFbWFpbCI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBFeHByZXNzIiwiRU5HTElTSCI6IkxlYWQ6IEV4cHJlc3MgcmVxdWVzdCJ9LCJRdWlja0VtYWlsTmV3SW52ZW50b3J5Ijp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIEV4cHJlc3MgKGludmVudGFpcmUgbmV1ZikiLCJFTkdMSVNIIjoiTGVhZDogRXhwcmVzcyByZXF1ZXN0IChuZXcgaW52ZW50b3J5KSJ9LCJSZWJhdGVDb3Vwb24iOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgY291cG9uIHJhYmFpcyAodmVoaWN1bGUgZW4gaW52ZW50YWlyZSkiLCJFTkdMSVNIIjoiTGVhZDogUmVxdWVzdCBmb3IgYSByZWJhdGUgY291cG9uIChpbnZlbnRvcnkgdmVoaWNsZSkifSwiUmViYXRlQ291cG9uSW52ZW50b3J5Ijp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIGNvdXBvbiByYWJhaXMgKGludmVudGFpcmUpIiwiRU5HTElTSCI6IkxlYWQ6IFJlcXVlc3QgZm9yIGEgcmViYXRlIGNvdXBvbiAoaW52ZW50b3J5KSJ9LCJSZWJhdGVDb3Vwb25OZXciOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgY291cG9uIHJhYmFpcyIsIkVOR0xJU0giOiJMZWFkOiBSZXF1ZXN0IGZvciBhIHJlYmF0ZSBjb3Vwb24ifSwiUmViYXRlQ291cG9uTmV3Qk5QIjp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIGNvdXBvbiByYWJhaXMgKGNvbmZpZ3VyYXRldXIpIiwiRU5HTElTSCI6IkxlYWQ6IFJlcXVlc3QgZm9yIGEgcmViYXRlIGNvdXBvbiAoY29uZmlndXJhdG9yKSJ9LCJSZWJhdGVDb3Vwb25OZXdJbnZlbnRvcnkiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgY291cG9uIHJhYmFpcyAoaW52ZW50YWlyZSkiLCJFTkdMSVNIIjoiTGVhZDogUmVxdWVzdCBmb3IgYSByZWJhdGUgY291cG9uIChpbnZlbnRvcnkpIn0sIlJlYmF0ZUNvdXBvbk5ld1NsaWRlciI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBjb3Vwb24gcmFiYWlzIChjYXJvdXNlbCkiLCJFTkdMSVNIIjoiTGVhZDogUmVxdWVzdCBmb3IgYSByZWJhdGUgY291cG9uIChzbGlkZXIpIn0sIlJlYmF0ZUNvdXBvblByb21vIjp7IkZSRU5DSCI6IkxlYWQ6IERlbWFuZGUgZGUgY291cG9uIHJhYmFpcyAoYm91dG9uICdQcm9tb3Rpb25zJykiLCJFTkdMSVNIIjoiTGVhZDogUmViYXRlIENvdXBvbiByZXF1ZXN0ICgnUHJvbW90aW9ucycgYnV0dG9uKSJ9LCJSZWJhdGVDb3Vwb25TbGlkZXIiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgY291cG9uIHJhYmFpcyAoY2Fyb3VzZWwpIiwiRU5HTElTSCI6IkxlYWQ6IFJlcXVlc3QgZm9yIGEgcmViYXRlIGNvdXBvbiAoc2xpZGVyKSJ9LCJSZWJhdGVDb3Vwb25Vc2VkU2xpZGVyIjp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIGNvdXBvbiByYWJhaXMgKGNhcm91c2VsKSIsIkVOR0xJU0giOiJMZWFkOiBSZXF1ZXN0IGZvciBhIHJlYmF0ZSBjb3Vwb24gKHNsaWRlcikifSwiUmVjYWxscyI6eyJGUkVOQ0giOiJEZW1hbmRlIGQnaW5mb3JtYXRpb24gc3VyIGxlcyByYXBwZWxzIiwiRU5HTElTSCI6IlJlY2FsbCBpbmZvcm1hdGlvbiByZXF1ZXN0In0sIlJlc2VydmVJdE5vdyI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBwb3VyIHJlc2VydmVyIHVuIHZlaGljdWxlIiwiRU5HTElTSCI6IkxlYWQgOiBSZXF1ZXN0IHRvIHByZS1vcmRlciBhIHZlaGljbGUifSwiUmVzZXJ2ZUl0Tm93TmV3Ijp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIHBvdXIgcmVzZXJ2ZXIgdW4gdmVoaWN1bGUiLCJFTkdMSVNIIjoiTGVhZCA6IFJlcXVlc3QgdG8gcHJlLW9yZGVyIGEgdmVoaWNsZSJ9LCJTZWxsQ2FyIjp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIFZlbmRleiBWZWhpY3VsZSIsIkVOR0xJU0giOiJMZWFkIDogUmVxdWVzdCB0byBidXkgeW91ciBjYXIifSwiU2VsbENhcl9TaG9ydCI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBWZW5kZXotbm91cyB2b3RyZSB2ZWhpY3VsZSAodmVyc2lvbiBjb3VydGUpIiwiRU5HTElTSCI6IkxlYWQgOiBSZXF1ZXN0IHRvIGJ1eSB5b3VyIGNhciAoU2hvcnQgdmVyc2lvbikifSwiU2VydmljZVJlcXVlc3QiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgcmVuZGV6LXZvdXMgYXUgc2VydmljZSIsIkVOR0xJU0giOiJMZWFkOiBTZXJ2aWNlIGFwcG9pbnRtZW50IHJlcXVlc3QifSwiU01TTGVhZCI6eyJGUkVOQ0giOiJMZWFkOiBEZW1hbmRlIFNNUyAoVGV4dG8pIiwiRU5HTElTSCI6IkxlYWQ6IFNNUyByZXF1ZXN0In0sIlNNU0xlYWRfb2xkIjp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIFNNUyAoVGV4dG8pIiwiRU5HTElTSCI6IkxlYWQgOiBTTVMgcmVxdWVzdCJ9LCJTcGVjc1JlcXVlc3QiOnsiRlJFTkNIIjoiTGVhZDogRGVtYW5kZSBkZSBmaWNoZSBQREYgLSBWZWhpY3VsZSBlbiBpbnZlbnRhaXJlIiwiRU5HTElTSCI6IkxlYWQ6IFBERiByZXF1ZXN0IC0gVmVoaWNsZSBpbiBpbnZlbnRvcnkifSwiU3BlY3NSZXF1ZXN0TmV3Ijp7IkZSRU5DSCI6IkxlYWQ6IERlbWFuZGUgZGUgYnJvY2h1cmUgUERGIiwiRU5HTElTSCI6IkxlYWQ6IFBERiBicm9jaHVyZSByZXF1ZXN0In0sIlNSUENvbnRhY3RVcyI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBjb250YWN0IFNSUCIsIkVOR0xJU0giOiJMZWFkIDogUmVxdWVzdCBmb3IgY29udGFjdCBTUlAifSwiVGVzdERyaXZlIjp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGQnZXNzYWkgcm91dGllciIsIkVOR0xJU0giOiJMZWFkOiBSZXF1ZXN0IGZvciBhIHRlc3QgZHJpdmUifSwiVGVzdERyaXZlTmV3Ijp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGQnZXNzYWkgcm91dGllciIsIkVOR0xJU0giOiJMZWFkOiBSZXF1ZXN0IGZvciBhIHRlc3QgZHJpdmUifSwiVGlyZXNSZXF1ZXN0Ijp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIHBuZXVzIiwiRU5HTElTSCI6IkxlYWQ6IFJlcXVlc3QgZm9yIHRpcmVzIn0sIlByb21vTWFpbCI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkJ2ludml0YXRpb24gYSBsYSB2ZW50ZSBwcml2ZWUiLCJFTkdMSVNIIjoiTGVhZDogUmVxdWVzdCBmb3IgaW52aXRhdGlvbiB0byBwcml2YXRlIHNhbGUifSwiU2xpZGVXaWRnZXRGb3JtIjp7IkZSRU5DSCI6IlVJVEVYVCIsIkVOR0xJU0giOiJVSVRFWFQifSwiQ29tcGFyZUZvcm0iOnsiRlJFTkNIIjoiVUlURVhUIiwiRU5HTElTSCI6IlVJVEVYVCJ9LCJTZWFyY2hGaWx0ZXJzIjp7IkZSRU5DSCI6IlVJVEVYVCIsIkVOR0xJU0giOiJVSVRFWFQifSwiaGVhZGVyR2xvYmFsU2VhcmNoIjp7IkZSRU5DSCI6IlVJVEVYVCIsIkVOR0xJU0giOiJVSVRFWFQifX0sInN1Yl9nYTQiOiJZIn0pO31jYXRjaChlenoxKXtpZihjb25zb2xlJiZjb25zb2xlLmxvZykKY29uc29sZS5sb2coZXp6MSk7fQp2YXIgaWRlbnRfOWZmNTE4OTgxMWE5NzZkMjM4M2JiNTQ0MTdmYTBkZTI7dHJ5eyhmdW5jdGlvbih3LGQsdCxyLHUpe3ZhciBmLG4saTt3W3VdPXdbdV18fFtdLGY9ZnVuY3Rpb24oKXt2YXIgbz17dGk6IjUwNzkzOTEiLGVuYWJsZUF1dG9TcGFUcmFja2luZzp0cnVlfTtvLnE9d1t1XSx3W3VdPW5ldyBVRVQobyksd1t1XS5wdXNoKCJwYWdlTG9hZCIpfSxuPWQuY3JlYXRlRWxlbWVudCh0KSxuLnNyYz1yLG4uYXN5bmM9MSxuLm9ubG9hZD1uLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe3ZhciBzPXRoaXMucmVhZHlTdGF0ZTtzJiZzIT09ImxvYWRlZCImJnMhPT0iY29tcGxldGUifHwoZigpLG4ub25sb2FkPW4ub25yZWFkeXN0YXRlY2hhbmdlPW51bGwpfSxpPWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUodClbMF0saS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShuLGkpfSkod2luZG93LGRvY3VtZW50LCJzY3JpcHQiLCIvL2JhdC5iaW5nLmNvbS9iYXQuanMiLCJ1ZXRxIik7fWNhdGNoKGV6ejEpe2lmKGNvbnNvbGUmJmNvbnNvbGUubG9nKQpjb25zb2xlLmxvZyhlenoxKTt9CnZhciBpZGVudF8xNWRiZTFlYzRiYjgxOWYzYmU5YWYwYmI5MTczMWQ5Zjt0cnl7dmFyIGRlcGxveW1lbnRUeXBlPScnK2pzX2QyY19nZXRfdmFsKCIyZWpoYmMweXlvZzB3d3ciKSsnJztpZihkZXBsb3ltZW50VHlwZT09J2xpdmUnKXtnYVRyYWNrKCdfdHJhY2tFdmVudCcsJ1BhZ2VzIHZ1ZXMnLCdTZWN0aW9uLU5ldWYtTW9iaWxlJywnJywxKTtnYVRyYWNrKCdjLl90cmFja0V2ZW50JywnTW9iaWxlIHBhZ2V2aWV3cycsJ1N0YW5kYXJkIE1vYmlsZScsd2luZG93LmxvY2F0aW9uLmhyZWYsJzEnKTt9ZWxzZSBpZihkZXBsb3ltZW50VHlwZT09J3N0YWdpbmcnKXtnYVRyYWNrKCdiLl90cmFja0V2ZW50JywnTW9iaWxlIHBhZ2V2aWV3cycsJ1N0YW5kYXJkIE1vYmlsZScsd2luZG93LmxvY2F0aW9uLmhyZWYsJzEnKTt9fWNhdGNoKGV6ejEpe2lmKGNvbnNvbGUmJmNvbnNvbGUubG9nKQpjb25zb2xlLmxvZyhlenoxKTt9CnZhciBpZGVudF81ODgxMTVlN2FiNmNlNTJkM2RmNmQwY2NhM2MwMDdhMzt0cnl7ZnVuY3Rpb24gc2hvd1Bob25lUG9wdXAoKXtnYVRyYWNrKCdfdHJhY2tFdmVudCcsJ1RlbGVwaG9uZXMnLCdTaXRlLU1vYmlsZScsJycsMSk7dmFyIGh0bWw9UGhvbmVzVG9SZXBsYWNlLnJlcGxhY2UoYXRvYigiUEdScGRpQmpiR0Z6Y3owbmJXVnVkU2MrUEhWc0lHTnNZWE56UFNKemRHRmpheTFzWXlJK1BHeHBQZ29KUEdFZ0lHaHlaV1k5SW5SbGJEcDdKRlZ6WldSUVNFOU9SVVpQVWsxQlZGUkZSSDBpSUhSaGNtZGxkRDBpWDNObGJHWWlJSE4wZVd4bFBTSm1iMjUwTFhOcGVtVTZJREl5Y0hnN0lpQmtZWFJoTFdSbGNHRnlkRzFsYm5ROUlsTmhiR1Z6SWo0S0NRazhhU0JqYkdGemN6MGlabUVnWm1FdGNHaHZibVVpSUhOMGVXeGxQU0p0WVhKbmFXNDZJRE53ZUNBeE1IQjRJREFnTVRWd2VEc2lQand2YVQ0S0NRbEg2VzdwY21Gc0NnazhMMkUrQ2drS1BDOXNhVDQ4TDNWc1Bqd3ZaR2wyUGc9PSIpKTtpZigkKGh0bWwpLmZpbmQoJ2EnKS5sZW5ndGg9PTEpeyQoJyNwaG9uZU51bWJlckRpdicpLmh0bWwoaHRtbCkuZmluZCgnYScpWzBdLmNsaWNrKCk7cmV0dXJuO30KJCgnI3Bob25lTnVtYmVyRGl2JykuaHRtbChodG1sKS5yZXZlYWwoe2FuaW1hdGlvbjonZmFkZUFuZFBvcCcsYW5pbWF0aW9uc3BlZWQ6MzAwLGNsb3Nlb25iYWNrZ3JvdW5kY2xpY2s6dHJ1ZSxkaXNtaXNzbW9kYWxjbGFzczonY2xvc2UtcmV2ZWFsLW1vZGFsJ30pO30KZnVuY3Rpb24gY2hlY2tBdXRoKCl7Z2FwaS5hdXRoLmF1dGhvcml6ZSh7Y2xpZW50X2lkOmdhcGljbGllbnRJZCxzY29wZTpnYXBpc2NvcGVzLGltbWVkaWF0ZTpmYWxzZX0saGFuZGxlQXV0aFJlc3VsdCk7fQpmdW5jdGlvbiBoYW5kbGVBdXRoUmVzdWx0KGF1dGhSZXN1bHQpe2lmKGF1dGhSZXN1bHQmJiFhdXRoUmVzdWx0LmVycm9yKXtvcGVuR29vZ2xlTWFwKHRydWUpO31lbHNle29wZW5Hb29nbGVNYXAoZmFsc2UpO319CmZ1bmN0aW9uIG9wZW5Hb29nbGVNYXAoKXt2YXIgbWFwVG9Vc2U9IiIranNfZDJjX2dldF92YWwoIjE0MDRyYTA0Yndya280d2ciKSsiIjt2YXIgdXJsPSJodHRwOi8vbWFwcy4iK21hcFRvVXNlKyIuY29tLz9xPTQ1NStDb3VudHkrUm9hZCsxNyUyQytIYXdrZXNidXJ5JTJDK09udGFyaW8lMkMrSzZBKzJSMiZ6PTEzIjt3aW5kb3cub3Blbih1cmwpO319Y2F0Y2goZXp6MSl7aWYoY29uc29sZSYmY29uc29sZS5sb2cpCmNvbnNvbGUubG9nKGV6ejEpO30KdmFyIGlkZW50XzYxZGI0ZmUyMWM0ZTA3ZDRhMDk5NmI4OGIzZmVlMzJhO3RyeXtqUXVlcnkoZnVuY3Rpb24oJCl7JCgiI1RyYWRlSW5CYXJQb3B1cENvbnRhaW5lciIpLnBvcHVwaXplKHsib25CZWZvcmVPcGVuIjpmdW5jdGlvbigpe3RyYWRlaW5wb3B1cGQyYy5vbkJlZm9yZU9wZW4oKTt9LCJvbkJlZm9yZXN1Ym1pdCI6ZnVuY3Rpb24ocG9wdXApe3JldHVybiB0cmFkZWlucG9wdXBkMmMub25CZWZvcmVTdWJtaXQocG9wdXApO30sIm9uQWZ0ZXJzdWJtaXQiOmZ1bmN0aW9uKHBvcHVwKXt0cmFkZWlucG9wdXBkMmMub25BZnRlclN1Ym1pdChwb3B1cCk7Q29va2llcy5zZXQoJ3BvcHVwRm9ybUZpbGxlZCcsbnVsbCxudWxsLCcvJyk7Q29va2llcy5zZXQoJ3RyYWRlSW5Qb3B1cFNob3duJyxudWxsLG51bGwsJy8nKTtpZigkKCcjdHJhZGVJbkJhcicpLmxlbmd0aCl7JCgnI3RyYWRlSW5CYXInKS5oaWRlKCk7fQppZigkKCcjdHJhZGVpbkJhckZsb2F0JykubGVuZ3RoKXskKCcjdHJhZGVpbkJhckZsb2F0JykuaGlkZSgpO319LCJvbkJlZm9yZVZhbGlkYXRpb24iOmZ1bmN0aW9uKHBvcHVwKXtyZXR1cm4gdHJhZGVpbnBvcHVwZDJjLm9uQmVmb3JlVmFsaWRhdGlvbihwb3B1cCk7fSwib25CZWZvcmVDbG9zZSI6ZnVuY3Rpb24ocG9wdXApe0Nvb2tpZXMuZ2V0KCd0cmFkZUluUG9wdXBTaG93bicsbnVsbCxudWxsLCcvJyk7JCgnI3RyYWRlSW5CYXJQb3B1cFN1Ym1pdCcpLnByb3AoJ2Rpc2FibGVkJyxmYWxzZSk7JCgnI3RyYWRlSW5CYXJQb3B1cFN1Ym1pdCcpLnNob3coKTt0cmFkZWlucG9wdXBkMmMuaW5pdFRyYWRlSW5TdGVwMSgpOyQoJ2lucHV0W25hbWU9c3RlcDNkb25lXScpLnZhbCgwKTskKCcjbGVhZFNlbnQnKS5yZW1vdmUoKTskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhckRlYWxlclN0ZXAnKS5oaWRlKCk7fSwib25CZWZvcmVJbml0aWFsaXplIjpmdW5jdGlvbihwb3B1cCl7cG9wdXAuc2V0dGluZ3MuZm9ybS5zZW5kVG89cG9wdXAuc2V0dGluZ3MuZm9ybS5zZW5kVG87cG9wdXAuc2V0dGluZ3MuZm9ybS5zZW5kVG9BREY9cG9wdXAuc2V0dGluZ3MuZm9ybS5zZW5kVG9BREY7fSwib25BZnRlckluaXRpYWxpemUiOmZ1bmN0aW9uKHNlbGYpe3RyYWRlSW5CYXJJbml0aWFsaXplKCk7dHJhZGVpbnBvcHVwZDJjLmluaXQoKTt3aW5kb3cubGF1bmNoVHJhZGVJblBvcHVwPWZ1bmN0aW9uKHNvdXJjZSl7dmFyIHA9JCgiI1RyYWRlSW5CYXJQb3B1cENvbnRhaW5lciIpLnBvcHVwaXplKHtwb3B1cEV2ZW50U291cmNlOnNvdXJjZX0pO2lmKHNvdXJjZSE9ImF1dG9tYXRpYyIpe3Auc2V0VHJpZ2dlcigiY2xpY2siKTt9CnAub3BlbigpO3JldHVybiBmYWxzZTt9CmlmKHR5cGVvZiBwb3B1cERlZmF1bHRPbkFmdGVySW5pdGlhbGl6ZSE9InVuZGVmaW5lZCIpe3ZhciBwb3B1cFR5cGU9InVzZWQiO3ZhciBjdXJyZW50UGFnZT0iIitqc19kMmNfZ2V0X3ZhbCgiMTZkN3Z3dDY2cG1vd28wayIpKyIiO3ZhciB0bXA9cG9wdXBEZWZhdWx0T25BZnRlckluaXRpYWxpemUoInVzZWQiLCIiK2pzX2QyY19nZXRfdmFsKCI2anlwNDY2NHZnd3M4MHciKSsiIixmYWxzZSwidHJhZGVJbkJhclBvcHVwIiwiIitqc19kMmNfZ2V0X3ZhbCgiMTZkN3Z3dDY2cG1vd28wayIpKyIiLCJUcmFkZUluQmFyUG9wdXBDb250YWluZXIiLGZhbHNlKTtyZXR1cm4gdG1wO319LCJvbkJlZm9yZVNlbmRNYWlsIjpmdW5jdGlvbihwb3B1cCl7aWYoJ2JjaGFycm9uQGdyb3VwZWdhZ25lLmNvbTthbWFoZXJAZ3JvdXBlZ2FnbmUuY29tJz09Jycpe2lmKGVtYWlsSGFuZGxlci5nZXREZXAoKT09J05FVycpe2VtYWlsSGFuZGxlci5zZW5kVG89J2U2ZTMxNGIxMzFkNzZlZGE5MWRkMGNkYzExYjA5MTk4fDE1MDgxOTE2NDknO2VtYWlsSGFuZGxlci5zZW5kVG9BREZGb3JtYXQ9JzdhYWQwOTk4ZWQ2MjliNzczMjYxODUyYjU2MWI4ZWM3fDE1MDgxOTE2NDknO2VtYWlsSGFuZGxlci5zZW5kVG9BREY9JzdhYWQwOTk4ZWQ2MjliNzczMjYxODUyYjU2MWI4ZWM3fDE1MDgxOTE2NDknO31lbHNle2VtYWlsSGFuZGxlci5zZW5kVG89J2U2ZTMxNGIxMzFkNzZlZGE5MWRkMGNkYzExYjA5MTk4fDE1MDgxOTE2NDknO2VtYWlsSGFuZGxlci5zZW5kVG9BREZGb3JtYXQ9JzdhYWQwOTk4ZWQ2MjliNzczMjYxODUyYjU2MWI4ZWM3fDE1MDgxOTE2NDknO2VtYWlsSGFuZGxlci5zZW5kVG9BREY9JzdhYWQwOTk4ZWQ2MjliNzczMjYxODUyYjU2MWI4ZWM3fDE1MDgxOTE2NDknO319CmlmKGVtYWlsSGFuZGxlci5nZXREZXAoKT09J05FVycpe2VtYWlsSGFuZGxlci5tYWlsSUQ9J3ByaWNldmVoaWNsZW5ldyc7fWVsc2V7ZW1haWxIYW5kbGVyLm1haWxJRD0ncHJpY2V2ZWhpY2xlJzt9fSwib25BZnRlckNvbnNlbnQiOmZ1bmN0aW9uKHBvcHVwKXskKCcjdHJhZGVJbkJhclBvcHVwU3VibWl0JykucHJvcCgnZGlzYWJsZWQnLGZhbHNlKTskKCcjdHJhZGVJbkJhclBvcHVwU3VibWl0Jykuc2hvdygpO30sImNvb2tpZUR1cmF0aW9uIjo2MCwiY29va2llTmFtZSI6InRyYWRlSW5Qb3B1cFNob3duIiwiY29va2llQ3JlYXRlIjoib25TdWJtaXQiLCJnb29nbGVUcmFja2luZyI6eyJpZFN1ZmZpeCI6IiIsImxhYmVsIjoiIiwibGFiZWxzZWN0aW9uIjoiIiwiaXNleHByZXNzIjowLCJpc3Byb21vIjowLCJpc2hvbWVwYWdlIjowLCJpc21vYmlsZSI6MH0sImZvcm0iOnsiZW1haWxpZCI6IlByaWNlVmVoaWNsZUFjY3V0cmFkZSIsIm9mZmVydHlwZSI6InRyYWRlSW5CYXJQb3B1cCIsIm5hbWUiOm51bGwsInNlbmRUbyI6ImJjaGFycm9uQGdyb3VwZWdhZ25lLmNvbTthbWFoZXJAZ3JvdXBlZ2FnbmUuY29tIiwic2VuZFRvQURGIjoiZDJjLWhhd2tlc2J1cnlob25kYUBsZWFkYWN0aXZpeC5jYSIsIk9LQnV0dG9uQ2xhc3MiOiJ0cmFkZUluQmFyUG9wdXBTdWJtaXQiLCJDYW5jZWxCdXR0b25DbGFzcyI6ImNhbmNlbEJ0biIsInNob3dFbWFpbENvbmZpcm1hdGlvbiI6dHJ1ZSwiZnJvbUFBIjpmYWxzZSwiY29uZmlybWF0aW9uIjp7InRpdGxlIjpudWxsLCJib2R5IjpudWxsfX0sInN0YXRlIjpbXSwidmVoaWNsZVN0YXRlIjoidXNlZCIsImNsb3NlT25TdWJtaXQiOmZhbHNlLCJmaWxsZmxhZyI6ZmFsc2UsIm5vdHJhbnNmb3JtIjp0cnVlLCJuYW1lIjpmYWxzZSwiYW5pbWF0aW9uIjoiZmFkZUFuZFBvcCIsImFuaW1hdGlvblNwZWVkIjozMDAsImNsb3NlT25CYWNrZ3JvdW5kQ2xpY2siOmZhbHNlLCJkaXNtaXNzTW9kYWxDbGFzcyI6ImNsb3NlLXJldmVhbC1tb2RhbCIsImNsb3NlQnV0dG9uIjp0cnVlLCJieXBhc3NDb25zZW50IjpmYWxzZSwidGhyZXNob2xkIjpmYWxzZSwidGhyZXNob2xkVmFsdWUiOmZhbHNlLCJzY3JvbGx1cCI6ZmFsc2UsIm1haW5wb3B1cCI6ZmFsc2UsImNvdW50ZG93biI6MTc3MzcyMDAwMCwiY29uZmlybUZvcm0iOltdfSk7fSk7fWNhdGNoKGV6ejEpe2lmKGNvbnNvbGUmJmNvbnNvbGUubG9nKQpjb25zb2xlLmxvZyhlenoxKTt9CnZhciBpZGVudF9lMjVkNmNmYWIzOTI3ZDc4ZDllMmY1YTJlMzQ3NjAxNjt0cnl7bWFpbFNlbnRIYW5kbGVyPWdldE1haWxTZW50SGFuZGxlcignX1RyYWRlSW5CYXJQb3B1cENvbnRhaW5lcicpO31jYXRjaChlenoxKXtpZihjb25zb2xlJiZjb25zb2xlLmxvZykKY29uc29sZS5sb2coZXp6MSk7fQp2YXIgaWRlbnRfNGQyNWJhMDY0MTcxMzg3ODVhY2ZhNTAwNjViYmJhYTk7dHJ5e31jYXRjaChlenoxKXtpZihjb25zb2xlJiZjb25zb2xlLmxvZykKY29uc29sZS5sb2coZXp6MSk7fQp2YXIgaWRlbnRfNjM5MjJmYmQyOTBjM2Y1Y2Q3OWZmNTk2MzM4YTg1OTk7dHJ5e3ZhciBlc2ZEZWxheT0xMDtmdW5jdGlvbiBlc2NhcGVGcmFtZSgpe2lmKChkb2N1bWVudC5sb2NhdGlvbisnJykuaW5kZXhPZignbmZyPTEnKT09LTEpcmV0dXJuOyQoJ2EnKS5ub3QoJ1t0YXJnZXRdJykuZWFjaChmdW5jdGlvbigpe3ZhciBlbD0kKHRoaXMpO3ZhciB0YXJnZXQ9ZWwuYXR0cigndGFyZ2V0Jyk7dmFyIGhyZWY9ZWwuYXR0cignaHJlZicpO2lmKHRhcmdldCYmdGFyZ2V0Lmxlbmd0aD4wKXtyZXR1cm47fQppZighaHJlZilyZXR1cm47dmFyIHByb3RvY29sPWhyZWYubWF0Y2goL14oW2EtejAtOV0rKTovKTtpZihwcm90b2NvbCE9bnVsbCYmIXByb3RvY29sWzFdLm1hdGNoKC9eaHR0cC8pKXtyZXR1cm47fQppZihocmVmWzBdPT09JyMnKXtyZXR1cm47fQplbC5hdHRyKCd0YXJnZXQnLCdfdG9wJyk7fSk7c2V0VGltZW91dChlc2NhcGVGcmFtZSwxMDAqZXNmRGVsYXkrKyk7fQpqUXVlcnkoZXNjYXBlRnJhbWUpO2Z1bmN0aW9uIHRvZ2dsZVN1Ym1lbnVzKG9iail7JChvYmopLmNsb3Nlc3QoJ2xpJykuZmluZCgnLnN1Ym1lbnVJdGVtQ29udGFpbmVyLCAuc3VibWVudUl0ZW1DaGlsZENvbnRhaW5lcicpLmZpcnN0KCkuc2xpZGVUb2dnbGUoJ3Nsb3cnKTtpZigkKG9iaikuaGFzQ2xhc3MoJ21lbnVDb2xscGFzZScpKXskKG9iaikucmVtb3ZlQ2xhc3MoJ21lbnVDb2xscGFzZScpO31lbHNleyQob2JqKS5hZGRDbGFzcygnbWVudUNvbGxwYXNlJyk7fQpyZXR1cm4gZmFsc2U7fQpmdW5jdGlvbiBnZXRQYXJhbWV0ZXJCeU5hbWUobmFtZSl7bmFtZT1uYW1lLnJlcGxhY2UoL1tcW10vLCJcWyIpLnJlcGxhY2UoL1tcXV0vLCJcXSIpO3ZhciByZWdleD1uZXcgUmVnRXhwKCJbXD8mXSIrbmFtZSsiPShbXiYjXSopIikscmVzdWx0cz1yZWdleC5leGVjKGxvY2F0aW9uLnNlYXJjaCk7cmV0dXJuIHJlc3VsdHM9PW51bGw\/IiI6ZGVjb2RlVVJJQ29tcG9uZW50KHJlc3VsdHNbMV0ucmVwbGFjZSgvXCsvZywiICIpKTt9CnZhciB1dG1fc291cmNlPWdldFBhcmFtZXRlckJ5TmFtZSgndXRtX3NvdXJjZScpO2pRdWVyeShmdW5jdGlvbigkKXskKCcubm90Q2xpY2thYmxlJykub24oJ2NsaWNrJyxmdW5jdGlvbihldmVudCl7ZXZlbnQucHJldmVudERlZmF1bHQoKTt0b2dnbGVTdWJtZW51cygkKCcubWVudUV4cGFuZCcsdGhpcykpO3JldHVybiBmYWxzZTt9KTskKCcubWVudUV4cGFuZCcpLm9uKCdjbGljaycsZnVuY3Rpb24oZXZlbnQpe2V2ZW50LnByZXZlbnREZWZhdWx0KCk7dG9nZ2xlU3VibWVudXMoJCgnLm1lbnVFeHBhbmQnLHRoaXMuY2xvc2VzdCgnLm1lbnUtaXRlbScpKSk7cmV0dXJuIGZhbHNlO30pO2lmKCQoJy51c2VkcGhvbmVmb3JtYXRlZCcpLmxlbmd0aD4wJiYkKCcjYWdlbnRwaG9uZScpLmxlbmd0aD4wJiYkKCcjYWdlbnRwaG9uZScpLnZhbCgpLmxlbmd0aD41KXskKCcudXNlZHBob25lZm9ybWF0ZWQnKS5hdHRyKCdocmVmJywndGVsOicrJCgnI2FnZW50cGhvbmUnKS52YWwoKSk7fQpzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7JCh3aW5kb3cpLm9uKCdvcmllbnRhdGlvbmNoYW5nZScsZnVuY3Rpb24oZXZlbnQpe2lmKHdpbmRvdy5vcmllbnRhdGlvbj09OTB8fHdpbmRvdy5vcmllbnRhdGlvbj09LTkwfHx3aW5kb3cub3JpZW50YXRpb249PTI3MCl7JCgnbWV0YVtuYW1lPSJ2aWV3cG9ydCJdJykuYXR0cignY29udGVudCcsJ2hlaWdodD1kZXZpY2Utd2lkdGgsd2lkdGg9ZGV2aWNlLWhlaWdodCxpbml0aWFsLXNjYWxlPTEsbWF4aW11bS1zY2FsZT0zJyk7JCh3aW5kb3cpLnRyaWdnZXIoJ3Jlc2l6ZScpO31lbHNleyQoJ21ldGFbbmFtZT0idmlld3BvcnQiXScpLmF0dHIoJ2NvbnRlbnQnLCdoZWlnaHQ9ZGV2aWNlLWhlaWdodCx3aWR0aD1kZXZpY2Utd2lkdGgsaW5pdGlhbC1zY2FsZT0xLG1heGltdW0tc2NhbGU9MycpOyQod2luZG93KS50cmlnZ2VyKCdyZXNpemUnKTt9fSkudHJpZ2dlcignb3JpZW50YXRpb25jaGFuZ2UnKTtpZih1dG1fc291cmNlIT0iIil7Q29va2llcy5zZXQoJ3V0bV9sYW5kaW5nX2Zvb3RlcicsbnVsbCxudWxsLCIvIik7fQppZihDb29raWVzLmdldCgidXRtX2xhbmRpbmdfZm9vdGVyIik9PW51bGwpe0Nvb2tpZXMuc2V0KCd1dG1fbGFuZGluZ19mb290ZXInLHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSxudWxsLCIvIik7fX0pO30sMTAwMDApO2Z1bmN0aW9uIHNob3dOb3JtYWxTaXRlKCl7dmFyIGRvbWFpbj0iIitqc19kMmNfZ2V0X3ZhbCgidTZ0aHJ3OW9sY2c4dzh3IikrIiI7Q29va2llcy5zZXQoJ1VzZUZ1bGxTaXRlJywnMScsbnVsbCwiLyIsZG9tYWluKTt3aW5kb3cubG9jYXRpb24uaHJlZj0nJytqc19kMmNfZ2V0X3ZhbCgiY291OWhtNDI5MWMwa29jIikrJyc7fX1jYXRjaChlenoxKXtpZihjb25zb2xlJiZjb25zb2xlLmxvZykKY29uc29sZS5sb2coZXp6MSk7fQp2YXIgaWRlbnRfYTkzMWEwZjgyODQ4ZmVjYTJjMTU3ZDcwODcwNThhZjM7dHJ5eyFmdW5jdGlvbihmLGIsZSx2LG4sdCxzKXtpZihmLmZicSlyZXR1cm47bj1mLmZicT1mdW5jdGlvbigpe24uY2FsbE1ldGhvZD9uLmNhbGxNZXRob2QuYXBwbHkobixhcmd1bWVudHMpOm4ucXVldWUucHVzaChhcmd1bWVudHMpfTtpZighZi5fZmJxKWYuX2ZicT1uO24ucHVzaD1uO24ubG9hZGVkPSEwO24udmVyc2lvbj0nMi4wJztuLnF1ZXVlPVtdO3Q9Yi5jcmVhdGVFbGVtZW50KGUpO3QuYXN5bmM9ITA7dC5zcmM9djtzPWIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoZSlbMF07cy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0LHMpfSh3aW5kb3csZG9jdW1lbnQsJ3NjcmlwdCcsJ2h0dHBzOi8vY29ubmVjdC5mYWNlYm9vay5uZXQvZW5fVVMvZmJldmVudHMuanMnKTtmYnEoJ2luaXQnLCc2ODM0MjI0NzIxOTQ5NjQnKTtmYnEoJ3RyYWNrJywnVmlld0NvbnRlbnQnKTt9Y2F0Y2goZXp6MSl7aWYoY29uc29sZSYmY29uc29sZS5sb2cpCmNvbnNvbGUubG9nKGV6ejEpO30KdmFyIGlkZW50XzMxNGNhYTViZjU5MDkyYzZmN2NmNmEyZmM3MmU5NTEzO3RyeXtpZih0eXBlb2YgcGFnZSE9PSd1bmRlZmluZWQnJiZwYWdlPT0iTkVXQ0FSREVUQUlMUyIpeyQoZG9jdW1lbnQpLm9uKCdjbGljaycsJ2EnLGZ1bmN0aW9uKCl7dmFyIG9iaj0kKHRoaXMpO3ZhciBocmVmPW9iai5hdHRyKCdocmVmJyk7dmFyIHRleHQ9b2JqLnRleHQoKTtpZih0ZXh0Lmxlbmd0aD4wJiZvYmouZmluZCgnaW1nJykubGVuZ3RoPT0wJiZ0eXBlb2YgaHJlZiE9J3VuZGVmaW5lZCcpe3ZhciB0aXRsZT0kKCcuYnJhbmRlbWFpbFtuYW1lPSJicmFuZCJdJykudmFsKCkrJy0nKyQoJy5tb2RlbGVtYWlsW25hbWU9Im1vZGVsIl0nKS52YWwoKSsnLScrJCgnLnllYXJlbWFpbCcpLnZhbCgpO2lmKGhyZWYhPSIjIiYmaHJlZiE9IiImJmhyZWYuaW5kZXhPZigiamF2YXNjcmlwdCIpPDAmJmhyZWYuaW5kZXhPZigneycpPDApe3RpdGxlPWhyZWY7fQpnYVRyYWNrKCdfdHJhY2tFdmVudCcsJ05ldy1WRFAtT3V0Ym91bmQtY2xpY2tzJyxvYmoudGV4dCgpLHRpdGxlKTt9fSl9fWNhdGNoKGV6ejEpe2lmKGNvbnNvbGUmJmNvbnNvbGUubG9nKQpjb25zb2xlLmxvZyhlenoxKTt9CnZhciBpZGVudF9lNTEwNzc4YjNkZGY0YjkxYjIzZDc4MWIwODA2M2VlZTt0cnl7alF1ZXJ5KGZ1bmN0aW9uKCQpe3ZhciBpc1ZEUFBhZ2U9JCgnI3BhZ2UnKS52YWwoKT09J2RldGFpbHNOZXcnJiYkKCcjaGFzUERGJykudmFsKCk9PScxJztmdW5jdGlvbiBsb2dQYWdlVmlld0V2ZW50KGV2ZW50LGV2ZW50Q2F0ZWdvcnksYWRkZWRJbmZvKXt0cnl7YWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudChldmVudCxldmVudENhdGVnb3J5LGFkZGVkSW5mbyk7fWNhdGNoKGUpe2NvbnNvbGUubG9nKGUpO319CnZhciBtYWtlVGV4dD0kKCdbbmFtZT0iYnJhbmQiXScpLmxlbmd0aD4wPyQoJ1tuYW1lPSJicmFuZCJdJykudmFsKCk6Jyc7dmFyIG1vZGVsVGV4dD0kKCdbbmFtZT0ibW9kZWwiXScpLmxlbmd0aD4wPyQoJ1tuYW1lPSJtb2RlbCJdJykudmFsKCk6Jyc7dmFyIHllYXJUZXh0PSQoJ1tuYW1lPSJ5ZWFyIl0nKS5sZW5ndGg+MD8kKCdbbmFtZT0ieWVhciJdJykudmFsKCk6Jyc7bWFrZVRleHQ9bWFrZVRleHQ\/bWFrZVRleHQ6KCQoJyNwb3B1cG1ha2UnKS5sZW5ndGg+MD8kKCcjcG9wdXBtYWtlJykudmFsKCk6JyAnKTttb2RlbFRleHQ9bW9kZWxUZXh0P21vZGVsVGV4dDooJCgnI3BvcHVwbW9kZWwnKS5sZW5ndGg+MD8kKCcjcG9wdXBtb2RlbCcpLnZhbCgpOicgJyk7eWVhclRleHQ9eWVhclRleHQ\/eWVhclRleHQ6KCQoJyNwb3B1cHllYXInKS5sZW5ndGg+MD8kKCcjcG9wdXB5ZWFyJykudmFsKCk6JyAnKTt2YXIgdmRwVG9hc3RlclBERlRleHQ9ImRlIGNlICIranNfZDJjX2dldF92YWwoImNra242ZXQ5MDN3b3NrIikrIiAiK2pzX2QyY19nZXRfdmFsKCI0MmNsc2h5cXN4d2tza28iKSsiICIranNfZDJjX2dldF92YWwoIjFwOTZwcTIydDI3NGNjYyIpKyIgbWFpbnRlbmFudCEiO3ZkcFRvYXN0ZXJQREZUZXh0PXZkcFRvYXN0ZXJQREZUZXh0LnJlcGxhY2UoJyMjTUFLRSMjJyxtYWtlVGV4dCk7dmRwVG9hc3RlclBERlRleHQ9dmRwVG9hc3RlclBERlRleHQucmVwbGFjZSgnIyNNT0RFTCMjJyxtb2RlbFRleHQpO3ZkcFRvYXN0ZXJQREZUZXh0PXZkcFRvYXN0ZXJQREZUZXh0LnJlcGxhY2UoJyMjWUVBUiMjJyx5ZWFyVGV4dCk7dmFyIG9wdGlvbnNUb2FzdGVyMj17Im9uQ2xvc2UiOmZ1bmN0aW9uKCl7cmV0dXJuIGZhbHNlO30sImNsb3NlQnV0dG9uIjp0cnVlLCJkZWJ1ZyI6ZmFsc2UsIm5ld2VzdE9uVG9wIjpmYWxzZSwicHJvZ3Jlc3NCYXIiOmZhbHNlLCJwb3NpdGlvbkNsYXNzIjoidG9hc3QtYm90dG9tLWZ1bGwtd2lkdGgiLCJwcmV2ZW50RHVwbGljYXRlcyI6ZmFsc2UsIm9uY2xpY2siOmZ1bmN0aW9uKCl7Z2FUcmFjaygnX3RyYWNrRXZlbnQnLCdNb2JpbGUtVG9hc3RlcnMnLCdOZXVmLVZpZGVvJyx3aW5kb3cubG9jYXRpb24uaHJlZiwxKTt0b1Ntc1BERigndmlkZW9MaW5rJyk7bG9nUGFnZVZpZXdFdmVudCgnTW9iaWxlLVRvYXN0ZXInLCdUT0FTVEVSX01fRVZFTlRfTkVXX1ZJREVPJyk7cmV0dXJuIGZhbHNlO30sInNob3dEdXJhdGlvbiI6IjMwMCIsImhpZGVEdXJhdGlvbiI6IjEwMDAiLCJ0aW1lT3V0IjoiMCIsImV4dGVuZGVkVGltZU91dCI6IjEwMDAiLCJzaG93RWFzaW5nIjoic3dpbmciLCJoaWRlRWFzaW5nIjoibGluZWFyIiwic2hvd01ldGhvZCI6InNsaWRlRG93biIsImhpZGVNZXRob2QiOiJmYWRlT3V0IiwiY29sb3IiOiIjZmZmZmZmIiwiYmdDb2xvciI6IiMwMDAwMDAifTtpZihpc1ZEUFBhZ2UmJicxJz09dHJ1ZSl7dmFyIHRleHRCcm9jaHVyZT0nT3VpISBUZXh0ZXotbW9pIGxhIGJyb2NodXJlJzt2YXIgdGV4dFRvVXNlPXRleHRCcm9jaHVyZTt2YXIgdmRwVG9hc3Rlck1vZGVsWWVhcj12ZHBUb2FzdGVyUERGVGV4dDt0b2FzdHIub3B0aW9ucz17Im9uQ2xvc2UiOmZ1bmN0aW9uKCl7ZGVsYXllZFZpZGVvVG9hc3Rlcih2ZHBUb2FzdGVyUERGVGV4dCxvcHRpb25zVG9hc3RlcjIpO30sImNsb3NlQnV0dG9uIjp0cnVlLCJkZWJ1ZyI6ZmFsc2UsIm5ld2VzdE9uVG9wIjpmYWxzZSwicHJvZ3Jlc3NCYXIiOmZhbHNlLCJwb3NpdGlvbkNsYXNzIjoidG9hc3QtYm90dG9tLWZ1bGwtd2lkdGgiLCJwcmV2ZW50RHVwbGljYXRlcyI6ZmFsc2UsIm9uY2xpY2siOmZ1bmN0aW9uKCl7Z2FUcmFjaygnX3RyYWNrRXZlbnQnLCdNb2JpbGUtVG9hc3RlcnMnLCdOZXVmLUJyb2NodXJlJyx3aW5kb3cubG9jYXRpb24uaHJlZiwxKTt0b1Ntc1BERignYnJvY2h1cmVSZXF1ZXN0Jyk7ZGVsYXllZFZpZGVvVG9hc3Rlcih2ZHBUb2FzdGVyUERGVGV4dCxvcHRpb25zVG9hc3RlcjIpO2xvZ1BhZ2VWaWV3RXZlbnQoJ01vYmlsZS1Ub2FzdGVyJywnVE9BU1RFUl9NX0VWRU5UX05FV19CUk9DSFVSRScpO3JldHVybiBmYWxzZTt9LCJzaG93RHVyYXRpb24iOiIzMDAiLCJoaWRlRHVyYXRpb24iOiIxMDAwIiwidGltZU91dCI6IjAiLCJleHRlbmRlZFRpbWVPdXQiOiIxMDAwIiwic2hvd0Vhc2luZyI6InN3aW5nIiwiaGlkZUVhc2luZyI6ImxpbmVhciIsInNob3dNZXRob2QiOiJzbGlkZURvd24iLCJoaWRlTWV0aG9kIjoiZmFkZU91dCIsImNvbG9yIjoiI2ZmZmZmZiIsImJnQ29sb3IiOiIjMDAwMDAwIn07c2V0VGltZW91dChmdW5jdGlvbigpe3RvYXN0ci5zdWNjZXNzKHZkcFRvYXN0ZXJNb2RlbFllYXIrIjxici8+IENsaXF1ZXogaWNpLiIsdGV4dFRvVXNlKTskKCcjdG9hc3QtY29udGFpbmVyJykuY3NzKCd6LWluZGV4JywnMjE0NzQ4MzY0MScpOyQoJyN0b2FzdC1jb250YWluZXIgPiBkaXYnKS5jc3MoJ29wYWNpdHknLCcwLjk1Jyk7fSwwKTt9ZWxzZSBpZigkKCcjcGFnZScpLnZhbCgpPT0nZGV0YWlsc05ldycmJicnPT10cnVlKXt2YXIgdGV4dEJlc3RQcmljZT0nT3VpISBUZXh0ZXotbW9pIHZvdHJlIG1laWxsZXVyIHByaXgnO3ZhciB0ZXh0VG9Vc2U9dGV4dEJlc3RQcmljZTt2YXIgdmRwVG9hc3Rlck1vZGVsWWVhcj0ic3VyIGNlICIranNfZDJjX2dldF92YWwoIjQyY2xzaHlxc3h3a3NrbyIpKyIgIitqc19kMmNfZ2V0X3ZhbCgiMXA5NnBxMjJ0Mjc0Y2NjIikrIiBNQUlOVEVOQU5UISI7dmRwVG9hc3Rlck1vZGVsWWVhcj12ZHBUb2FzdGVyTW9kZWxZZWFyLnJlcGxhY2UoJycranNfZDJjX2dldF92YWwoIjQyY2xzaHlxc3h3a3NrbyIpKycnLG1vZGVsVGV4dCk7dmRwVG9hc3Rlck1vZGVsWWVhcj12ZHBUb2FzdGVyTW9kZWxZZWFyLnJlcGxhY2UoJycranNfZDJjX2dldF92YWwoIjFwOTZwcTIydDI3NGNjYyIpKycnLHllYXJUZXh0KTt0b2FzdHIub3B0aW9ucz17Im9uQ2xvc2UiOmZ1bmN0aW9uKCl7ZGVsYXllZFZpZGVvVG9hc3Rlcih2ZHBUb2FzdGVyUERGVGV4dCxvcHRpb25zVG9hc3RlcjIpO30sImNsb3NlQnV0dG9uIjp0cnVlLCJkZWJ1ZyI6ZmFsc2UsIm5ld2VzdE9uVG9wIjpmYWxzZSwicHJvZ3Jlc3NCYXIiOmZhbHNlLCJwb3NpdGlvbkNsYXNzIjoidG9hc3QtYm90dG9tLWZ1bGwtd2lkdGgiLCJwcmV2ZW50RHVwbGljYXRlcyI6ZmFsc2UsIm9uY2xpY2siOmZ1bmN0aW9uKCl7Z2FUcmFjaygnX3RyYWNrRXZlbnQnLCdNb2JpbGUtVG9hc3RlcnMnLCdOZXVmLUJlc3QtUHJpY2UnLHdpbmRvdy5sb2NhdGlvbi5ocmVmLDEpO3RvU21zUERGKCdiZXN0UHJpY2VOZXcnKTtkZWxheWVkVmlkZW9Ub2FzdGVyKHZkcFRvYXN0ZXJQREZUZXh0LG9wdGlvbnNUb2FzdGVyMik7bG9nUGFnZVZpZXdFdmVudCgnTW9iaWxlLVRvYXN0ZXInLCdUT0FTVEVSX01fRVZFTlRfTkVXX0JFU1RfUFJJQ0UnKTtyZXR1cm4gZmFsc2U7fSwic2hvd0R1cmF0aW9uIjoiMzAwIiwiaGlkZUR1cmF0aW9uIjoiMTAwMCIsInRpbWVPdXQiOiIwIiwiZXh0ZW5kZWRUaW1lT3V0IjoiMTAwMCIsInNob3dFYXNpbmciOiJzd2luZyIsImhpZGVFYXNpbmciOiJsaW5lYXIiLCJzaG93TWV0aG9kIjoic2xpZGVEb3duIiwiaGlkZU1ldGhvZCI6ImZhZGVPdXQiLCJjb2xvciI6IiNmZmZmZmYiLCJiZ0NvbG9yIjoiIzAwMDAwMCJ9O3NldFRpbWVvdXQoZnVuY3Rpb24oKXt0b2FzdHIuc3VjY2Vzcyh2ZHBUb2FzdGVyTW9kZWxZZWFyKyI8YnIvPiBDbGlxdWV6IGljaS4iLHRleHRUb1VzZSk7JCgnI3RvYXN0LWNvbnRhaW5lcicpLmNzcygnei1pbmRleCcsJzIxNDc0ODM2NDEnKTskKCcjdG9hc3QtY29udGFpbmVyID4gZGl2JykuY3NzKCdvcGFjaXR5JywnMC45NScpO30sMCk7fX0pO2Z1bmN0aW9uIGRlbGF5ZWRWaWRlb1RvYXN0ZXIodHh0LG9wdCl7aWYoJCgnI2hhc1ZJREVPJykudmFsKCk9PScxJyYmJzEnPT10cnVlKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dG9hc3RyLnN1Y2Nlc3ModHh0KyIgQ2xpcXVleiBpY2kuIiwiT3VpISBUZXh0ZXotbW9pIGxlIGxpZW4gZHUgdmlkZW8iLG9wdCk7JCgnI3RvYXN0LWNvbnRhaW5lcicpLmNzcygnei1pbmRleCcsJzIxNDc0ODM2NDEnKTskKCcjdG9hc3QtY29udGFpbmVyID4gZGl2JykuY3NzKCdvcGFjaXR5JywnMC45NScpO30sMTAwMDApO319CmZ1bmN0aW9uIHRvU21zUERGKG1lc3NhZ2VUeXBlKXtpZih0eXBlb2YgZGVhbGVyU21zTnVtYmVyPT09J29iamVjdCcpe3ZhciBkYXRhPXtkZXB0OigkKCcjbmV3U2VjdGlvbk92ZXJyaWRlJykubGVuZ3RoJiYkKCcjbmV3U2VjdGlvbk92ZXJyaWRlJykudmFsKCk9PScxJyk\/J05FVyc6KHR5cGVvZiBlbWFpbEhhbmRsZXI9PT0nb2JqZWN0Jz9lbWFpbEhhbmRsZXIuZ2V0RGVwKCkudG9VcHBlckNhc2UoKTonTkVXJyksbWVzc2FnZVR5cGU6bWVzc2FnZVR5cGV9O3ZhciB5ZWFyPSQoJ1tuYW1lPSJ5ZWFyIl0nKS5sZW5ndGg+MD8kKCdbbmFtZT0ieWVhciJdJykudmFsKCk6JycsbWFrZT0kKCdbbmFtZT0iYnJhbmQiXScpLmxlbmd0aD4wPyQoJ1tuYW1lPSJicmFuZCJdJykudmFsKCk6JycsbW9kZWw9JCgnW25hbWU9Im1vZGVsIl0nKS5sZW5ndGg+MD8kKCdbbmFtZT0ibW9kZWwiXScpLnZhbCgpOicnO2lmKHllYXI9PScnKXt5ZWFyPSQoJyNwb3B1cHllYXInKS5sZW5ndGg\/JCgnI3BvcHVweWVhcicpLnZhbCgpOicnO30KaWYobWFrZT09Jycpe21ha2U9JCgnI3BvcHVwbWFrZScpLmxlbmd0aD8kKCcjcG9wdXBtYWtlJykudmFsKCk6Jyc7fQppZihtb2RlbD09Jycpe21vZGVsPSQoJyNwb3B1cG1vZGVsJykubGVuZ3RoPyQoJyNwb3B1cG1vZGVsJykudmFsKCk6Jyc7fQppZihtYWtlIT09Jycpe2RhdGEubWFrZT1tYWtlO30KaWYobW9kZWwhPT0nJyl7ZGF0YS5tb2RlbD1tb2RlbDt9CmlmKHllYXIhPT0nJyl7ZGF0YS55ZWFyPXllYXI7fQpkYXRhLnZlaGljbGVJZD0nJztkYXRhLlZJTj0nJztkYXRhLnByaWNlPScnO2RhdGEubW9kZWxJZD0nJztpZihzaXRlUGFnZS5uYW1lPSdDQVJERVRBSUxTJyYmdHlwZW9mIHNlYXJjaERldGFpbHM9PT0nb2JqZWN0JyYmdHlwZW9mIHNlYXJjaERldGFpbHMudmVoaWNsZT09PSdvYmplY3QnKXtkYXRhLnZlaGljbGVJZD1zZWFyY2hEZXRhaWxzLnZlaGljbGVJRDtkYXRhLlZJTj1zZWFyY2hEZXRhaWxzLnZlaGljbGUuTklWO2RhdGEucHJpY2U9c2VhcmNoRGV0YWlscy52ZWhpY2xlLnByaWNlO30KaWYoc2l0ZVBhZ2UubmFtZT0nTkVXQ0FSREVUQUlMUycmJnR5cGVvZiBuZXdjYXJEZXRhaWxzPT09J29iamVjdCcmJnR5cGVvZiBuZXdjYXJEZXRhaWxzLmFjdGl2ZU1vZGVsPT09J29iamVjdCcpe2RhdGEubW9kZWxJZD1uZXdjYXJEZXRhaWxzLmFjdGl2ZU1vZGVsLmlkfHwnJzt9CmRlYWxlclNtc051bWJlci5nZXRTbXNOdW1iZXIoZGF0YSxmdW5jdGlvbihyc3Ape2lmKHJzcCE9PWZhbHNlKXt2YXIgc2VwPSgvV2luZG93c1xzUGhvbmUvaSkudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KT8nPyc6Jz8mJzt2YXIgbG5rPSdzbXM6Jytyc3Auc21zbnVtYmVyK3NlcCsnYm9keT0nK2VuY29kZVVSSUNvbXBvbmVudChyc3Auc21zbWVzc2FnZSk7Y29uc29sZS5sb2cobG5rKTt3aW5kb3cubG9jYXRpb24uaHJlZj1sbms7fX0pO319fWNhdGNoKGV6ejEpe2lmKGNvbnNvbGUmJmNvbnNvbGUubG9nKQpjb25zb2xlLmxvZyhlenoxKTt9CnZhciBpZGVudF83NTQyZjlkZDdiZTM5Y2VkYjM0MTRiYzg4MjIyOTlkMzt0cnl7dmFyIHRlc3QxMjM9dHJ1ZTtqUXVlcnkoZnVuY3Rpb24oJCl7aWYoQ29va2llcy5nZXQoJ25vdXNlZGN0YScpPT0nMScpe3JldHVybiBmYWxzZTt9CnZhciBpc1VzZWRWRFBQYWdlPSQoJyNwYWdlJykudmFsKCk9PSdkZXRhaWxzVXNlZCc7ZnVuY3Rpb24gbG9nUGFnZVZpZXdFdmVudChldmVudCxldmVudENhdGVnb3J5LGFkZGVkSW5mbyl7dHJ5e2FjdGl2ZVVzZXJQcm9maWxlTW5nLmxvZ1BhZ2VWaWV3RXZlbnQoZXZlbnQsZXZlbnRDYXRlZ29yeSxhZGRlZEluZm8pO31jYXRjaChlKXtjb25zb2xlLmxvZyhlKTt9fQp2YXIgdmRwVG9hc3RlclVzZWRNYWtlTW9kZWxZZWFyVGV4dD0ic3VyIGNlICIranNfZDJjX2dldF92YWwoIjQyY2xzaHlxc3h3a3NrbyIpKyIgIitqc19kMmNfZ2V0X3ZhbCgiMXA5NnBxMjJ0Mjc0Y2NjIikrIiAoIitqc19kMmNfZ2V0X3ZhbCgiM3NiNnhzZ2JrazRrNDQiKSsiKSBtYWludGVuYW50ISI7dmRwVG9hc3RlclVzZWRNYWtlTW9kZWxZZWFyVGV4dD12ZHBUb2FzdGVyVXNlZE1ha2VNb2RlbFllYXJUZXh0LnJlcGxhY2UoJyMjTU9ERUwjIycsJCgnI3Bob25lbW9kZWwnKS52YWwoKSk7dmRwVG9hc3RlclVzZWRNYWtlTW9kZWxZZWFyVGV4dD12ZHBUb2FzdGVyVXNlZE1ha2VNb2RlbFllYXJUZXh0LnJlcGxhY2UoJyMjWUVBUiMjJywkKCcjcGhvbmVteWVhcicpLnZhbCgpKTt2ZHBUb2FzdGVyVXNlZE1ha2VNb2RlbFllYXJUZXh0PXZkcFRvYXN0ZXJVc2VkTWFrZU1vZGVsWWVhclRleHQucmVwbGFjZSgnIyNTVE9DS05VTUJFUiMjJywnIycrJCgnI3Bob25lc3RvY2tudW1iZXInKS52YWwoKSk7dmRwVG9hc3RlclVzZWRNYWtlTW9kZWxZZWFyVGV4dDI9dmRwVG9hc3RlclVzZWRNYWtlTW9kZWxZZWFyVGV4dC5yZXBsYWNlKCcgbWFpbnRlbmFudCEnLCcnKTt2ZHBUb2FzdGVyVXNlZE1ha2VNb2RlbFllYXJUZXh0Mj12ZHBUb2FzdGVyVXNlZE1ha2VNb2RlbFllYXJUZXh0LnJlcGxhY2UoJyBub3chJywnJyk7dmFyIG9wdGlvbnNUb2FzdGVyMj17Im9uQ2xvc2UiOmZ1bmN0aW9uKCl7cmV0dXJuIGZhbHNlO30sImNsb3NlQnV0dG9uIjp0cnVlLCJkZWJ1ZyI6ZmFsc2UsIm5ld2VzdE9uVG9wIjpmYWxzZSwicHJvZ3Jlc3NCYXIiOmZhbHNlLCJwb3NpdGlvbkNsYXNzIjoidG9hc3QtYm90dG9tLWZ1bGwtd2lkdGgiLCJwcmV2ZW50RHVwbGljYXRlcyI6ZmFsc2UsIm9uY2xpY2siOmZ1bmN0aW9uKCl7Z2FUcmFjaygnX3RyYWNrRXZlbnQnLCdNb2JpbGUtVG9hc3RlcnMnLCdPY2Nhc2lvbi1QcmljZS1Ecm9wJyx3aW5kb3cubG9jYXRpb24uaHJlZiwxKTt0b1Ntc1VzZWRNZXNzYWdlKCdwcmljZURyb3BVc2VkJyk7bG9nUGFnZVZpZXdFdmVudCgnTW9iaWxlLVRvYXN0ZXInLCdUT0FTVEVSX01fRVZFTlRfUFJJQ0VfRFJPUCcpO3JldHVybiBmYWxzZTt9LCJzaG93RHVyYXRpb24iOiIzMDAiLCJoaWRlRHVyYXRpb24iOiIxMDAwIiwidGltZU91dCI6IjAiLCJleHRlbmRlZFRpbWVPdXQiOiIxMDAwIiwic2hvd0Vhc2luZyI6InN3aW5nIiwiaGlkZUVhc2luZyI6ImxpbmVhciIsInNob3dNZXRob2QiOiJzbGlkZURvd24iLCJoaWRlTWV0aG9kIjoiZmFkZU91dCIsImNvbG9yIjoiI2ZmZmZmZiIsImJnQ29sb3IiOiIjMDAwMDAwIn07aWYoaXNVc2VkVkRQUGFnZSl7dG9hc3RyLm9wdGlvbnM9eyJvbkNsb3NlIjpmdW5jdGlvbigpe2RlbGF5ZWRTZWNvbmRUb2FzdGVyKHZkcFRvYXN0ZXJVc2VkTWFrZU1vZGVsWWVhclRleHQyLG9wdGlvbnNUb2FzdGVyMik7fSwiY2xvc2VCdXR0b24iOnRydWUsImRlYnVnIjpmYWxzZSwibmV3ZXN0T25Ub3AiOmZhbHNlLCJwcm9ncmVzc0JhciI6ZmFsc2UsInBvc2l0aW9uQ2xhc3MiOiJ0b2FzdC1ib3R0b20tZnVsbC13aWR0aCIsInByZXZlbnREdXBsaWNhdGVzIjpmYWxzZSwib25jbGljayI6ZnVuY3Rpb24oKXtnYVRyYWNrKCdfdHJhY2tFdmVudCcsJ01vYmlsZS1Ub2FzdGVycycsJ09jY2FzaW9uLUJlc3QtUHJpY2UnLHdpbmRvdy5sb2NhdGlvbi5ocmVmLDEpO3RvU21zVXNlZE1lc3NhZ2UoJ2Jlc3RQcmljZVVzZWQnKTtkZWxheWVkU2Vjb25kVG9hc3Rlcih2ZHBUb2FzdGVyVXNlZE1ha2VNb2RlbFllYXJUZXh0MixvcHRpb25zVG9hc3RlcjIpO2xvZ1BhZ2VWaWV3RXZlbnQoJ01vYmlsZS1Ub2FzdGVyJywnVE9BU1RFUl9NX0VWRU5UX0JFU1RfUFJJQ0UnKTtyZXR1cm4gZmFsc2U7fSwic2hvd0R1cmF0aW9uIjoiMzAwIiwiaGlkZUR1cmF0aW9uIjoiMTAwMCIsInRpbWVPdXQiOiIwIiwiZXh0ZW5kZWRUaW1lT3V0IjoiMTAwMCIsInNob3dFYXNpbmciOiJzd2luZyIsImhpZGVFYXNpbmciOiJsaW5lYXIiLCJzaG93TWV0aG9kIjoic2xpZGVEb3duIiwiaGlkZU1ldGhvZCI6ImZhZGVPdXQiLCJjb2xvciI6IiNmZmZmZmYiLCJiZ0NvbG9yIjoiIzAwMDAwMCJ9O3NldFRpbWVvdXQoZnVuY3Rpb24oKXt0b2FzdHIuc3VjY2Vzcyh2ZHBUb2FzdGVyVXNlZE1ha2VNb2RlbFllYXJUZXh0MisiIENsaXF1ZXogaWNpLiIsIlRleHRlei1tb2kgdm90cmUgbWVpbGxldXIgcHJpeCIpOyQoJyN0b2FzdC1jb250YWluZXInKS5jc3MoJ3otaW5kZXgnLCcyMTQ3NDgzNjQxJyk7JCgnI3RvYXN0LWNvbnRhaW5lciA+IGRpdicpLmNzcygnb3BhY2l0eScsJzAuOTUnKTt9LDApO30KcmV0dXJuO30pO2Z1bmN0aW9uIGRlbGF5ZWRTZWNvbmRUb2FzdGVyKHR4dCxvcHQpe2lmKDEpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXt0b2FzdHIuc3VjY2Vzcyh0eHQrIiBDbGlxdWV6IGljaS4iLCJUZXh0ZXotbW9pIGxvcnNxdSdpbCB5IGF1cmEgdW5lIGJhaXNzZSBkZSBwcml4IixvcHQpOyQoJyN0b2FzdC1jb250YWluZXInKS5jc3MoJ3otaW5kZXgnLCcyMTQ3NDgzNjQxJyk7JCgnI3RvYXN0LWNvbnRhaW5lciA+IGRpdicpLmNzcygnb3BhY2l0eScsJzAuOTUnKTt9LDEwMDAwKTt9fQpmdW5jdGlvbiB0b1Ntc1VzZWRNZXNzYWdlKG1lc3NhZ2VUeXBlKXtpZih0eXBlb2YgZGVhbGVyU21zTnVtYmVyPT09J29iamVjdCcpe3ZhciBkYXRhPXtkZXB0OigkKCcjbmV3U2VjdGlvbk92ZXJyaWRlJykubGVuZ3RoJiYkKCcjbmV3U2VjdGlvbk92ZXJyaWRlJykudmFsKCk9PScxJyk\/J05FVyc6KHR5cGVvZiBlbWFpbEhhbmRsZXI9PT0nb2JqZWN0Jz9lbWFpbEhhbmRsZXIuZ2V0RGVwKCkudG9VcHBlckNhc2UoKTonVVNFRCcpLG1lc3NhZ2VUeXBlOm1lc3NhZ2VUeXBlfTt2YXIgeWVhcj0kKCcjcGhvbmVteWVhcicpLmxlbmd0aD8kKCcjcGhvbmVteWVhcicpLnZhbCgpOicnLG1ha2U9JCgnI3Bob25lbWFrZScpLmxlbmd0aD8kKCcjcGhvbmVtYWtlJykudmFsKCk6JycsbW9kZWw9JCgnI3Bob25lbW9kZWwnKS5sZW5ndGg\/JCgnI3Bob25lbW9kZWwnKS52YWwoKTonJyxzdG9ja251bT0kKCcjcGhvbmVzdG9ja251bWJlcicpLmxlbmd0aD8kKCcjcGhvbmVzdG9ja251bWJlcicpLnZhbCgpOicnLG93bmVySWQ9JCgnI3ZlaGljbGVPd25lcklkJykubGVuZ3RoPyQoJyN2ZWhpY2xlT3duZXJJZCcpLnZhbCgpOicnO2lmKG1ha2UhPT0nJyl7ZGF0YS5tYWtlPW1ha2U7fQppZihtb2RlbCE9PScnKXtkYXRhLm1vZGVsPW1vZGVsO30KaWYoeWVhciE9PScnKXtkYXRhLnllYXI9eWVhcjt9CmlmKHN0b2NrbnVtIT09Jycpe2RhdGEuc3RvY2tOdW1iZXI9c3RvY2tudW07fQppZihvd25lcklkIT09Jycpe2RhdGEuZGVhbGVySWQ9b3duZXJJZDt9CmRhdGEudmVoaWNsZUlkPScnO2RhdGEuVklOPScnO2RhdGEucHJpY2U9Jyc7ZGF0YS5tb2RlbElkPScnO2lmKHNpdGVQYWdlLm5hbWU9J0NBUkRFVEFJTFMnJiZ0eXBlb2Ygc2VhcmNoRGV0YWlscz09PSdvYmplY3QnJiZ0eXBlb2Ygc2VhcmNoRGV0YWlscy52ZWhpY2xlPT09J29iamVjdCcpe2RhdGEudmVoaWNsZUlkPXNlYXJjaERldGFpbHMudmVoaWNsZUlEO2RhdGEuVklOPXNlYXJjaERldGFpbHMudmVoaWNsZS5OSVY7ZGF0YS5wcmljZT1zZWFyY2hEZXRhaWxzLnZlaGljbGUucHJpY2U7fQppZihzaXRlUGFnZS5uYW1lPSdORVdDQVJERVRBSUxTJyYmdHlwZW9mIG5ld2NhckRldGFpbHM9PT0nb2JqZWN0JyYmdHlwZW9mIG5ld2NhckRldGFpbHMuYWN0aXZlTW9kZWw9PT0nb2JqZWN0Jyl7ZGF0YS5tb2RlbElkPW5ld2NhckRldGFpbHMuYWN0aXZlTW9kZWwuaWR8fCcnO30KZGVhbGVyU21zTnVtYmVyLmdldFNtc051bWJlcihkYXRhLGZ1bmN0aW9uKHJzcCl7aWYocnNwIT09ZmFsc2Upe3ZhciBzZXA9KC9XaW5kb3dzXHNQaG9uZS9pKS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpPyc\/JzonPyYnO3ZhciBsbms9J3NtczonK3JzcC5zbXNudW1iZXIrc2VwKydib2R5PScrZW5jb2RlVVJJQ29tcG9uZW50KHJzcC5zbXNtZXNzYWdlKTtjb25zb2xlLmxvZygnU01TSFJFRjonLGxuayk7d2luZG93LmxvY2F0aW9uLmhyZWY9bG5rO319KTt9fX1jYXRjaChlenoxKXtpZihjb25zb2xlJiZjb25zb2xlLmxvZykKY29uc29sZS5sb2coZXp6MSk7fQp2YXIgaWRlbnRfYTU0OTgxZDI2MDZhNmQwZjNmNzFlNGJhNDhkY2NmNjc7dHJ5e2pRdWVyeShmdW5jdGlvbigkKXtpZigkKCcjZ2VuZXJpY19mb3JtX2NvbmZpcm0nKS5sZW5ndGg8MSl7dmFyIEZvcm09JCgnPGZvcm0gaWQ9ImdlbmVyaWNfZm9ybV9jb25maXJtIiB0YXJnZXQ9ImlmcmFtZWd0cmFjayIgbWV0aG9kPSJwb3N0IiBhY3Rpb249Ii9jb25maXJtYXRpb24uaHRtbCI+PC9mb3JtPicpO3ZhciBtYWtlVmFsPSIiK2pzX2QyY19nZXRfdmFsKCIxZXJpdjkwMHBkYTg4d3c4IikrIiI7dmFyIG1vZGVsVmFsPSIiK2pzX2QyY19nZXRfdmFsKCIxMHBhN3YzcWVsZGNvc2siKSsiIjt2YXIgeWVhclZhbD0iIitqc19kMmNfZ2V0X3ZhbCgicjgyemZreGEyZHdzczAwIikrIiI7dmFyIHJlZmVyYWxWYWw9IiIranNfZDJjX2dldF92YWwoImkzZ3NheGdzNWprOHdjayIpKyIiO3ZhciBzZWN0aW9uVmFsPScnK2pzX2QyY19nZXRfdmFsKCJzbzd5dXFhajRkd2NjOHMiKSsnJzt2YXIgZnJvbUF1dG9hdWJhaW5lPSQoJyNhdXRvYXViYWluZV9wb3B1cCcpLmxlbmd0aD4wJiYoJCgnI2F1dG9hdWJhaW5lX3BvcHVwJykudmFsKCkhPSdmYWxzZScpO3ZhciBpbnB1dHM9KFt7Im5hbWUiOiJsYWJlbCIsInZhbHVlIjoiIiwiY2xhc3MiOiJsYWJlbGVtYWlsIn0seyJuYW1lIjoic2VjdGlvbiIsInZhbHVlIjoiIiwiY2xhc3MiOiJsYWJlbHNlY3Rpb24ifSx7Im5hbWUiOiJicmFuZCIsInZhbHVlIjptYWtlVmFsLCJjbGFzcyI6ImJyYW5kZW1haWwifSx7Im5hbWUiOiJtb2RlbCIsInZhbHVlIjptb2RlbFZhbCwiY2xhc3MiOiJtb2RlbGVtYWlsIn0seyJuYW1lIjoieWVhciIsInZhbHVlIjp5ZWFyVmFsLCJjbGFzcyI6InllYXJlbWFpbCJ9LHsibmFtZSI6Imdvb2dsZWlkIiwidmFsdWUiOiIifSx7Im5hbWUiOiJnb29nbGVpZGQyY21lZGlhIiwidmFsdWUiOiIifSx7Im5hbWUiOiJiaW5nY29uaWQiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImJpbmdhY3Rpb25pZCIsInZhbHVlIjoiIn0seyJuYW1lIjoiYmluZ2RvbWFpbmlkIiwidmFsdWUiOiIifSx7Im5hbWUiOiJndGFnX2NvbnZlcnNpb24iLCJ2YWx1ZSI6Imd0YWcifSx7Im5hbWUiOiJhZHJvbGxBZHYiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImFkcm9sbFBpeCIsInZhbHVlIjoiIn0seyJuYW1lIjoiZmFjZWJvb2tDb25JZCIsInZhbHVlIjoiNjgzNDIyNDcyMTk0OTY0In0seyJuYW1lIjoibGVhZF9kZXBhcnRtZW50IiwidmFsdWUiOiIifSx7Im5hbWUiOiJsZWFkVHlwZSIsInZhbHVlIjoiIn0seyJuYW1lIjoicGFnZUlEIiwidmFsdWUiOiIifSx7Im5hbWUiOiJjdXJyZW50VVJMIiwidmFsdWUiOiIifSx7Im5hbWUiOiJkb21haW4iLCJ2YWx1ZSI6Imhhd2tlc2J1cnlob25kYS5jYSJ9LHsibmFtZSI6InJlZmVycmVyIiwidmFsdWUiOnJlZmVyYWxWYWx9LHsibmFtZSI6ImlzZXhwcmVzcyIsInZhbHVlIjoiIiwiY2xhc3MiOiJpc2V4cHJlc3MifSx7Im5hbWUiOiJpc3Byb21vIiwidmFsdWUiOiIifSx7Im5hbWUiOiJpc2hvbWVwYWdlIiwidmFsdWUiOiIifSx7Im5hbWUiOiJ0ZXN0bW9kZSIsInZhbHVlIjoiMCIsImNsYXNzIjoidGVzdG1vZGUifSx7Im5hbWUiOiJ0ZXh0Q2FyU2VjdGlvblR5cGUiLCJ2YWx1ZSI6c2VjdGlvblZhbH0seyJuYW1lIjoibGFuZyIsInZhbHVlIjoiRlJFTkNIIn0seyJuYW1lIjoiYnV0dG9uUG9zaXRpb24iLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImRlYWxlck5hbWUiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImlzRnVsbFdpZHRoIiwidmFsdWUiOiIifSx7Im5hbWUiOiJpc01vYmlsZU5ld1ZEUCIsInZhbHVlIjoiIn0seyJuYW1lIjoiZnJvbUF1dG9BdWJhaW5lIiwidmFsdWUiOjB9XSk7Zm9yKHZhciBpPTA7aTxpbnB1dHMubGVuZ3RoO2krKyl7JCgnPGlucHV0IHR5cGU9ImhpZGRlbiIgLz4nKS5hdHRyKGlucHV0c1tpXSkuYXBwZW5kVG8oRm9ybSk7fQpGb3JtLmFwcGVuZFRvKCdib2R5Jyk7Rm9ybS5vbignc3VibWl0JyxvbkNvbmZpcm1TdWJtaXQpO30KaWYoJCgnI2d0cmFja0ZyYW1lJykubGVuZ3RoPDEpeyQoJzxpZnJhbWU+PC9pZnJhbWU+JykuYXR0cih7d2lkdGg6MSxoZWlnaHQ6MSxmcmFtZUJvcmRlcjowLGlkOidndHJhY2tGcmFtZScsbmFtZTonaWZyYW1lZ3RyYWNrJyxzdHlsZTond2lkdGg6MXB4O2hlaWdodDoxcHg7Jyx0aXRsZTonZnJhbWUnfSkuYXBwZW5kVG8oJyNjb25maXJtX2Zvcm1zJyk7fX0pO31jYXRjaChlenoxKXtpZihjb25zb2xlJiZjb25zb2xlLmxvZykKY29uc29sZS5sb2coZXp6MSk7fQp2YXIgaWRlbnRfZjIxYzZmY2FiMjMzNzQwZTAwMjAxYjQ5YWI2ZDE4Zjc7dHJ5e2pRdWVyeShmdW5jdGlvbigkKXskKCIjY29udGFjdHBvcHVwIikucG9wdXBpemUoeyJvbkFmdGVySW5pdGlhbGl6ZSI6ZnVuY3Rpb24oc2VsZil7Y29udGFjdFBvcHVwLnNldENvbmZpZyh7dHlwZTpzZWxmLnNldHRpbmdzLmZvcm0udHlwZX0pO2lmKHR5cGVvZiBwb3B1cERlZmF1bHRPbkFmdGVySW5pdGlhbGl6ZSE9InVuZGVmaW5lZCIpe3ZhciB0bXA9cG9wdXBEZWZhdWx0T25BZnRlckluaXRpYWxpemUoIm5ldyIsIiIranNfZDJjX2dldF92YWwoIjZqeXA0NjY0dmd3czgwdyIpKyIiLHRydWUsIiIsIiIranNfZDJjX2dldF92YWwoIjE2ZDd2d3Q2NnBtb3dvMGsiKSsiIiwiY29udGFjdHBvcHVwIixmYWxzZSk7aWYoZmFsc2UmJnRtcClzZWxmLnNldHRpbmdzLnNob3dvbmxvYWQ9MzA7cmV0dXJuIHRtcDt9fSwib25CZWZvcmVTZW5kTWFpbCI6ZnVuY3Rpb24oc2VsZil7Y29udGFjdFBvcHVwLm9uQmVmb3JlU2VuZE1haWwoKTt9LCJjb29raWVEdXJhdGlvbiI6MzAsImNvb2tpZU5hbWUiOm51bGwsImNvb2tpZUNyZWF0ZSI6bnVsbCwiZ29vZ2xlVHJhY2tpbmciOnsiaWRTdWZmaXgiOiIiLCJsYWJlbCI6IiIsImxhYmVsc2VjdGlvbiI6IiIsImlzZXhwcmVzcyI6MCwiaXNwcm9tbyI6MCwiaXNob21lcGFnZSI6MCwiaXNtb2JpbGUiOjB9LCJmb3JtIjp7ImVtYWlsaWQiOiJDb250YWN0VXNSZXF1ZXN0Iiwic2VuZFRvIjpudWxsLCJzZW5kVG9BREYiOm51bGwsInNob3dFbWFpbENvbmZpcm1hdGlvbiI6dHJ1ZSwiY29uZmlybWF0aW9uIjp7InRpdGxlIjoiVm90cmUgbWVzc2FnZSBhIGJpZW4gJmVhY3V0ZTt0JmVhY3V0ZTsgZW52b3kmZWFjdXRlOyEiLCJib2R5IjoiTWVyY2khIFVuIG1lbWJyZSBkZSBub3RyZSAmZWFjdXRlO3F1aXBlIHZvdXMgY29udGFjdGVyYSBzb3VzIHBldS4ifSwidHlwZSI6Im5ldyJ9LCJzdGF0ZSI6W10sInZlaGljbGVTdGF0ZSI6InVzZWQiLCJjbG9zZU9uU3VibWl0Ijp0cnVlLCJmaWxsZmxhZyI6ZmFsc2UsIm5vdHJhbnNmb3JtIjp0cnVlLCJuYW1lIjpmYWxzZSwiYW5pbWF0aW9uIjoiZmFkZUFuZFBvcCIsImFuaW1hdGlvblNwZWVkIjozMDAsImNsb3NlT25CYWNrZ3JvdW5kQ2xpY2siOmZhbHNlLCJkaXNtaXNzTW9kYWxDbGFzcyI6ImNsb3NlLXJldmVhbC1tb2RhbCIsImNsb3NlQnV0dG9uIjp0cnVlLCJieXBhc3NDb25zZW50IjpmYWxzZSwidGhyZXNob2xkIjpmYWxzZSwidGhyZXNob2xkVmFsdWUiOiI3NSIsInNjcm9sbHVwIjpmYWxzZSwibWFpbnBvcHVwIjp0cnVlLCJjb3VudGRvd24iOjE3NzM3MjAwMDAsImNvbmZpcm1Gb3JtIjpbXX0pO30pO31jYXRjaChlenoxKXtpZihjb25zb2xlJiZjb25zb2xlLmxvZykKY29uc29sZS5sb2coZXp6MSk7fQp2YXIgaWRlbnRfM2Q3ODU0Mjc0MTI1ZWE2OWIwMjQ1NzU2NDZhNjk4ZGM7dHJ5e21haWxTZW50SGFuZGxlcj1nZXRNYWlsU2VudEhhbmRsZXIoJ19jb250YWN0cG9wdXAnKTt9Y2F0Y2goZXp6MSl7aWYoY29uc29sZSYmY29uc29sZS5sb2cpCmNvbnNvbGUubG9nKGV6ejEpO30KdmFyIGlkZW50X2VhMDJlMGUxN2IxZTE3MTY0MzZhNDhjMzhhNzI2ZWYyO3RyeXtqUXVlcnkoZnVuY3Rpb24oJCl7JCgiI2NyZWRpdFNjb3JlUG9wdXBDb250YWluZXIiKS5wb3B1cGl6ZSh7Im9uQWZ0ZXJzdWJtaXQiOmZ1bmN0aW9uKHNlbGYpe3NldENvb2tpZSgnY3JlZGl0U2NvcmVFbWJlZGRlZEZpbGxlZCcsMSwzMCk7aWYodHlwZW9mIGdVc2VkU3JwQXBweiE9PSd1bmRlZmluZWQnKXtnVXNlZFNycEFwcHouZmlsdGVySW50ZXJmYWNlLmNsZWFyUHJveHlDYWNoZUFuZFJlRmV0Y2goKTt9fSwib25BZnRlckluaXRpYWxpemUiOmZ1bmN0aW9uKHNlbGYpeyhuZXcgRm9ybSgpKS5tYXNrUGhvbmUoIiNjcmVkaXRTY29yZVBvcHVwQ29udGFpbmVyICNjcmVkaXRTY29yZVBob25lIik7dmFyIGxhbmc9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/ImVuIjoiZnIiO3ZhciBzdGFydERhdGU9bmV3IERhdGUoKTtzdGFydERhdGUuc2V0RnVsbFllYXIoc3RhcnREYXRlLmdldEZ1bGxZZWFyKCktMzApO3ZhciBtYXhEYXRlPW5ldyBEYXRlKCk7bWF4RGF0ZS5zZXRGdWxsWWVhcihtYXhEYXRlLmdldEZ1bGxZZWFyKCktMTgpO3ZhciBtaW5EYXRlPW5ldyBEYXRlKCk7bWluRGF0ZS5zZXRGdWxsWWVhcihtaW5EYXRlLmdldEZ1bGxZZWFyKCktMTIwKTskKCIuY3JlZGl0U2NvcmVCaXJ0aGRhdGUiKS5uZWJDYWwoe21heERhdGU6bWF4RGF0ZS5mb3JtYXQoInl5eXktTU0tZGQiKSxtaW5EYXRlOm1pbkRhdGUuZm9ybWF0KCJ5eXl5LU1NLWRkIiksZGVmYXVsdERhdGU6c3RhcnREYXRlLmZvcm1hdCgieXl5eS1NTS1kZCIpLGZvcm1hdDoiZGQgTU1NIHl5eXkiLGRlZmF1bHRWaWV3OiJkZWNhZGUifSk7JCgnI2NyZWRpdFNjb3JlUG9wdXBDb250YWluZXIgaW5wdXRbZGF0YS1nb29nbGUtcGxhY2VzLWN1c3RvbT0idHJ1ZSJdJykuZ29vZ2xlUGxhY2VzKCk7dmFyIHBvcHVwVHlwZT0ibmV3IjtpZih0eXBlb2YgcG9wdXBEZWZhdWx0T25BZnRlckluaXRpYWxpemUhPSJ1bmRlZmluZWQiKXt2YXIgdG1wPXBvcHVwRGVmYXVsdE9uQWZ0ZXJJbml0aWFsaXplKCJuZXciLCIiK2pzX2QyY19nZXRfdmFsKCI2anlwNDY2NHZnd3M4MHciKSsiIixmYWxzZSwiIiwiIitqc19kMmNfZ2V0X3ZhbCgiMTZkN3Z3dDY2cG1vd28wayIpKyIiLCJjcmVkaXRTY29yZVBvcHVwQ29udGFpbmVyIixmYWxzZSk7aWYoMCYmdG1wKXtzZWxmLnNldHRpbmdzLnNob3dvbmxvYWQ9MTA7fQplbHNle3NlbGYuc2V0dGluZ3Muc2hvd29ubG9hZD1mYWxzZTt9CnJldHVybiB0bXA7fX0sImNvb2tpZUR1cmF0aW9uIjo2MCwiY29va2llTmFtZSI6ImNyZWRpdFNjb3JlU2hvd24iLCJjb29raWVDcmVhdGUiOiJvbk9wZW4iLCJnb29nbGVUcmFja2luZyI6eyJpZFN1ZmZpeCI6IiIsImxhYmVsIjoiIiwibGFiZWxzZWN0aW9uIjoiIiwiaXNleHByZXNzIjowLCJpc3Byb21vIjowLCJpc2hvbWVwYWdlIjowLCJpc21vYmlsZSI6MH0sImZvcm0iOnsiZW1haWxpZCI6IkNyZWRpdFNjb3JlIiwib2ZmZXJ0eXBlIjoiQ3JlZGl0U2NvcmUiLCJuYW1lIjpudWxsLCJzZW5kVG8iOiIiK2pzX2QyY19nZXRfdmFsKCIxM2RxdHNuY2Q4MXdrODQ0IikrIiIsInNlbmRUb0FERiI6IiIranNfZDJjX2dldF92YWwoIjVjY3lnazkyNW1nd2cwIikrIiIsIk9LQnV0dG9uQ2xhc3MiOiJjcmVkaXRTY29yZV9idG4iLCJDYW5jZWxCdXR0b25DbGFzcyI6ImNhbmNlbEJ0biIsInNob3dFbWFpbENvbmZpcm1hdGlvbiI6dHJ1ZSwiZnJvbUFBIjpmYWxzZSwiY29uZmlybWF0aW9uIjp7InRpdGxlIjoiVm90cmUgZGVtYW5kZSBhIGJpZW4gJmVhY3V0ZTt0JmVhY3V0ZTsgZW52b3kmZWFjdXRlO2UhIiwiYm9keSI6Ik1lcmNpISBVbiBjb25zZWlsbGVyIGNvbW11bmlxdWVyYSBhdmVjIHZvdXMgcG91ciB2b3VzIGRvbm5lciBsZXMgZCZlYWN1dGU7dGFpbHMgc3VyIHZvdHJlIHBvdGVudGllbCBkZSBjciZlYWN1dGU7ZGl0LiJ9fSwic3RhdGUiOltdLCJ2ZWhpY2xlU3RhdGUiOiJ1c2VkIiwiY2xvc2VPblN1Ym1pdCI6dHJ1ZSwiZmlsbGZsYWciOmZhbHNlLCJub3RyYW5zZm9ybSI6dHJ1ZSwibmFtZSI6ZmFsc2UsImFuaW1hdGlvbiI6ImZhZGVBbmRQb3AiLCJhbmltYXRpb25TcGVlZCI6MzAwLCJjbG9zZU9uQmFja2dyb3VuZENsaWNrIjpmYWxzZSwiZGlzbWlzc01vZGFsQ2xhc3MiOiJjbG9zZS1yZXZlYWwtbW9kYWwiLCJjbG9zZUJ1dHRvbiI6dHJ1ZSwiYnlwYXNzQ29uc2VudCI6ZmFsc2UsInRocmVzaG9sZCI6ZmFsc2UsInRocmVzaG9sZFZhbHVlIjowLCJzY3JvbGx1cCI6ZmFsc2UsIm1haW5wb3B1cCI6ZmFsc2UsInNob3dvbmxvYWQiOmZhbHNlLCJjb3VudGRvd24iOjE3NzM3MjAwMDAsImNvbmZpcm1Gb3JtIjpbXX0pO30pO31jYXRjaChlenoxKXtpZihjb25zb2xlJiZjb25zb2xlLmxvZykKY29uc29sZS5sb2coZXp6MSk7fQp2YXIgaWRlbnRfZDY2ZjVkOTQ4NTk3NDJjNmE1MWY4YmFkOWMwZGZhZTA7dHJ5e21haWxTZW50SGFuZGxlcj1nZXRNYWlsU2VudEhhbmRsZXIoJ19jcmVkaXRTY29yZVBvcHVwQ29udGFpbmVyJyk7fWNhdGNoKGV6ejEpe2lmKGNvbnNvbGUmJmNvbnNvbGUubG9nKQpjb25zb2xlLmxvZyhlenoxKTt9CnZhciBpZGVudF81NTc1NDFmNGJkNjUxOTBhODBmNWQ0ZDlhZTViY2Y2NTt0cnl7alF1ZXJ5KGZ1bmN0aW9uKCQpeyQoIiNjcmVkaXRTY29yZUNvbmZpcm1Qb3B1cENvbnRhaW5lciIpLnBvcHVwaXplKHsib25CZWZvcmVPcGVuIjpmdW5jdGlvbihzZWxmKXtpZihlbWFpbEhhbmRsZXIpeyQoIiNjcmVkaXRTY29yZUNvbmZpcm1Qb3B1cENvbnRhaW5lciAuY3JlZGl0U2NvcmVDb25maXJtSW5wdXQgLmZpcnN0bmFtZSIpLnZhbChlbWFpbEhhbmRsZXIudXNlckZpcnN0TmFtZSk7JCgiI2NyZWRpdFNjb3JlQ29uZmlybVBvcHVwQ29udGFpbmVyIC5jcmVkaXRTY29yZUNvbmZpcm1JbnB1dCAubGFzdG5hbWUiKS52YWwoZW1haWxIYW5kbGVyLnVzZXJMYXN0TmFtZSk7JCgiI2NyZWRpdFNjb3JlQ29uZmlybVBvcHVwQ29udGFpbmVyIC5jcmVkaXRTY29yZUNvbmZpcm1JbnB1dCAuZW1haWwiKS52YWwoZW1haWxIYW5kbGVyLnVzZXJFbWFpbCk7JCgiI2NyZWRpdFNjb3JlQ29uZmlybVBvcHVwQ29udGFpbmVyIC5jcmVkaXRTY29yZUNvbmZpcm1JbnB1dCAucGhvbmUiKS52YWwoZW1haWxIYW5kbGVyLnVzZXJQaG9uZSk7JCgiI2NyZWRpdFNjb3JlQ29uZmlybVBvcHVwQ29udGFpbmVyIC5jcmVkaXRTY29yZUNvbmZpcm1JbnB1dCAuYmlydGhkYXRlIikudmFsKGVtYWlsSGFuZGxlci5iaXJ0aGRhdGUpOyQoIiNjcmVkaXRTY29yZUNvbmZpcm1Qb3B1cENvbnRhaW5lciAuY3JlZGl0U2NvcmVDb25maXJtSW5wdXQgLmFkZHJlc3MiKS52YWwoZW1haWxIYW5kbGVyLnVzZXJBZGRyZXNzKTt9fSwib25CZWZvcmVzdWJtaXQiOmZ1bmN0aW9uKHNlbGYpe2VtYWlsSGFuZGxlci5sZWFkVGl0bGVUZXh0PSQoIiNjcmVkaXRTY29yZUNvbmZpcm1Qb3B1cENvbnRhaW5lciAuY3JlZGl0U2NvcmVDb25maXJtSW5wdXQgI2NyZWRpdFNjb3JlTGVhZFR5cGUiKS52YWwoKTt9LCJvbkFmdGVyc3VibWl0IjpmdW5jdGlvbihzZWxmKXtzZXRDb29raWUoJ2NyZWRpdFNjb3JlRW1iZWRkZWRGaWxsZWQnLDEsMzApO2lmKHR5cGVvZiBnVXNlZFNycEFwcHohPT0ndW5kZWZpbmVkJyl7Z1VzZWRTcnBBcHB6LmZpbHRlckludGVyZmFjZS5jbGVhclByb3h5Q2FjaGVBbmRSZUZldGNoKCk7fX0sIm9uQWZ0ZXJJbml0aWFsaXplIjpmdW5jdGlvbihzZWxmKXsobmV3IEZvcm0oKSkubWFza1Bob25lKCIjY3JlZGl0U2NvcmVDb25maXJtUG9wdXBDb250YWluZXIgLmNyZWRpdFNjb3JlUGhvbmUiKTt2YXIgbGFuZz0kKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iZW4iOiJmciI7dmFyIHN0YXJ0RGF0ZT1uZXcgRGF0ZSgpO3N0YXJ0RGF0ZS5zZXRGdWxsWWVhcihzdGFydERhdGUuZ2V0RnVsbFllYXIoKS0zMCk7dmFyIG1heERhdGU9bmV3IERhdGUoKTttYXhEYXRlLnNldEZ1bGxZZWFyKG1heERhdGUuZ2V0RnVsbFllYXIoKS0xOCk7dmFyIG1pbkRhdGU9bmV3IERhdGUoKTttaW5EYXRlLnNldEZ1bGxZZWFyKG1pbkRhdGUuZ2V0RnVsbFllYXIoKS0xMjApOyQoIiNjcmVkaXRTY29yZUNvbmZpcm1Qb3B1cENvbnRhaW5lciAuY3JlZGl0U2NvcmVCaXJ0aGRhdGUiKS5uZWJDYWwoe21heERhdGU6bWF4RGF0ZS5mb3JtYXQoInl5eXktTU0tZGQiKSxtaW5EYXRlOm1pbkRhdGUuZm9ybWF0KCJ5eXl5LU1NLWRkIiksZGVmYXVsdERhdGU6c3RhcnREYXRlLmZvcm1hdCgieXl5eS1NTS1kZCIpLGZvcm1hdDoiZGQgTU1NIHl5eXkiLGRlZmF1bHRWaWV3OiJkZWNhZGUifSk7JCgnI2NyZWRpdFNjb3JlQ29uZmlybVBvcHVwQ29udGFpbmVyIGlucHV0W2RhdGEtZ29vZ2xlLXBsYWNlcy1jdXN0b209InRydWUiXScpLmdvb2dsZVBsYWNlcygpO30sImNvb2tpZUR1cmF0aW9uIjo2MCwiY29va2llTmFtZSI6ImNyZWRpdFNjb3JlQ29uZmlybVBvcHVwU2hvd24iLCJjb29raWVDcmVhdGUiOiJvbk9wZW4iLCJnb29nbGVUcmFja2luZyI6eyJpZFN1ZmZpeCI6IiIsImxhYmVsIjoiIiwibGFiZWxzZWN0aW9uIjoiIiwiaXNleHByZXNzIjowLCJpc3Byb21vIjowLCJpc2hvbWVwYWdlIjowLCJpc21vYmlsZSI6MH0sImZvcm0iOnsiZW1haWxpZCI6IkNyZWRpdFNjb3JlIiwib2ZmZXJ0eXBlIjoiQ3JlZGl0U2NvcmUiLCJuYW1lIjpudWxsLCJzZW5kVG8iOiIiK2pzX2QyY19nZXRfdmFsKCIxM2RxdHNuY2Q4MXdrODQ0IikrIiIsInNlbmRUb0FERiI6IiIranNfZDJjX2dldF92YWwoIjVjY3lnazkyNW1nd2cwIikrIiIsIk9LQnV0dG9uQ2xhc3MiOiJjcmVkaXRTY29yZUNvbmZpcm1fYnRuIiwiQ2FuY2VsQnV0dG9uQ2xhc3MiOiJjYW5jZWxCdG4iLCJzaG93RW1haWxDb25maXJtYXRpb24iOnRydWUsImZyb21BQSI6ZmFsc2UsImNvbmZpcm1hdGlvbiI6eyJ0aXRsZSI6IlZvdHJlIGRlbWFuZGUgYSBiaWVuICZlYWN1dGU7dCZlYWN1dGU7IGVudm95JmVhY3V0ZTtlISIsImJvZHkiOiJNZXJjaSEgVW4gY29uc2VpbGxlciBjb21tdW5pcXVlcmEgYXZlYyB2b3VzIHBvdXIgdm91cyBkb25uZXIgbGVzIGQmZWFjdXRlO3RhaWxzIHN1ciB2b3RyZSBwb3RlbnRpZWwgZGUgY3ImZWFjdXRlO2RpdC4ifX0sInN0YXRlIjpbXSwidmVoaWNsZVN0YXRlIjoidXNlZCIsImNsb3NlT25TdWJtaXQiOnRydWUsImZpbGxmbGFnIjpmYWxzZSwibm90cmFuc2Zvcm0iOnRydWUsIm5hbWUiOmZhbHNlLCJhbmltYXRpb24iOiJmYWRlQW5kUG9wIiwiYW5pbWF0aW9uU3BlZWQiOjMwMCwiY2xvc2VPbkJhY2tncm91bmRDbGljayI6ZmFsc2UsImRpc21pc3NNb2RhbENsYXNzIjoiY2xvc2UtcmV2ZWFsLW1vZGFsIiwiY2xvc2VCdXR0b24iOnRydWUsImJ5cGFzc0NvbnNlbnQiOmZhbHNlLCJ0aHJlc2hvbGQiOmZhbHNlLCJ0aHJlc2hvbGRWYWx1ZSI6MCwic2Nyb2xsdXAiOmZhbHNlLCJtYWlucG9wdXAiOmZhbHNlLCJzaG93b25sb2FkIjpmYWxzZSwiY291bnRkb3duIjoxNzczNzIwMDAwLCJjb25maXJtRm9ybSI6W119KTt9KTt9Y2F0Y2goZXp6MSl7aWYoY29uc29sZSYmY29uc29sZS5sb2cpCmNvbnNvbGUubG9nKGV6ejEpO30KdmFyIGlkZW50XzM2Mzg3ZDkyMDk2ODc4ZDc5YjA1NjkxNWVjYjUzNDhmO3RyeXttYWlsU2VudEhhbmRsZXI9Z2V0TWFpbFNlbnRIYW5kbGVyKCdfY3JlZGl0U2NvcmVDb25maXJtUG9wdXBDb250YWluZXInKTt9Y2F0Y2goZXp6MSl7aWYoY29uc29sZSYmY29uc29sZS5sb2cpCmNvbnNvbGUubG9nKGV6ejEpO30KdmFyIGlkZW50XzM5ODA3OWMzMDA1ZmUyNGNhZTI3NGVjNGNkOTdjNDQ1O3RyeXtqUXVlcnkoZnVuY3Rpb24oJCl7JCgiI2ZpbmFuY2VNdWx0aXN0ZXBQb3B1cENvbnRhaW5lciIpLnBvcHVwaXplKHsib25BZnRlckluaXRpYWxpemUiOmZ1bmN0aW9uKHNlbGYpe3ZhciBtdWx0aXN0ZXA9aW5pdGlhbGl6ZUZpbmFuY2VNdWx0aVN0ZXAoc2VsZi50YXJnZXQpOyQoZG9jdW1lbnQpLm9uKCdjcmVkaXQubXVsdGlzdGVwcG9wdXAuc3RhcnQnLGZ1bmN0aW9uKGUpe211bHRpc3RlcC5zdGFydCgpO30pO30sImNvb2tpZUR1cmF0aW9uIjozMCwiY29va2llTmFtZSI6bnVsbCwiY29va2llQ3JlYXRlIjpudWxsLCJnb29nbGVUcmFja2luZyI6eyJpZFN1ZmZpeCI6IiIsImxhYmVsIjoiIiwibGFiZWxzZWN0aW9uIjoiIiwiaXNleHByZXNzIjowLCJpc3Byb21vIjowLCJpc2hvbWVwYWdlIjowLCJpc21vYmlsZSI6MH0sImZvcm0iOnsiZW1haWxpZCI6IkNyZWRpdE11bHRpc3RlcFJlcXVlc3QiLCJvZmZlcnR5cGUiOiJDcmVkaXRNdWx0aXN0ZXBSZXF1ZXN0IiwibmFtZSI6bnVsbCwic2VuZFRvIjoiIitqc19kMmNfZ2V0X3ZhbCgiMTNkcXRzbmNkODF3azg0NCIpKyIiLCJzZW5kVG9BREYiOiIiK2pzX2QyY19nZXRfdmFsKCI1Y2N5Z2s5MjVtZ3dnMCIpKyIiLCJPS0J1dHRvbkNsYXNzIjoic3VibWl0QnRuIiwiQ2FuY2VsQnV0dG9uQ2xhc3MiOiJjYW5jZWxCdG4iLCJzaG93RW1haWxDb25maXJtYXRpb24iOmZhbHNlLCJmcm9tQUEiOmZhbHNlLCJjb25maXJtYXRpb24iOnsidGl0bGUiOm51bGwsImJvZHkiOm51bGx9fSwic3RhdGUiOltdLCJ2ZWhpY2xlU3RhdGUiOiJ1c2VkIiwiY2xvc2VPblN1Ym1pdCI6dHJ1ZSwiZmlsbGZsYWciOmZhbHNlLCJub3RyYW5zZm9ybSI6dHJ1ZSwibmFtZSI6ZmFsc2UsImFuaW1hdGlvbiI6ImZhZGVBbmRQb3AiLCJhbmltYXRpb25TcGVlZCI6MzAwLCJjbG9zZU9uQmFja2dyb3VuZENsaWNrIjpmYWxzZSwiZGlzbWlzc01vZGFsQ2xhc3MiOiJjbG9zZS1yZXZlYWwtbW9kYWwiLCJjbG9zZUJ1dHRvbiI6dHJ1ZSwiYnlwYXNzQ29uc2VudCI6ZmFsc2UsInRocmVzaG9sZCI6ZmFsc2UsInRocmVzaG9sZFZhbHVlIjowLCJzY3JvbGx1cCI6ZmFsc2UsIm1haW5wb3B1cCI6ZmFsc2UsInNob3dvbmxvYWQiOmZhbHNlLCJjb3VudGRvd24iOjE3NzM3MjAwMDAsImNvbmZpcm1Gb3JtIjpbeyJuYW1lIjoibGFiZWwiLCJ2YWx1ZSI6IiIsImNsYXNzIjoibGFiZWxlbWFpbCJ9LHsibmFtZSI6InNlY3Rpb24iLCJ2YWx1ZSI6IiIsImNsYXNzIjoibGFiZWxzZWN0aW9uIn0seyJuYW1lIjoiYnJhbmQiLCJ2YWx1ZSI6IiIranNfZDJjX2dldF92YWwoIjFlcml2OTAwcGRhODh3dzgiKSsiIiwiY2xhc3MiOiJicmFuZGVtYWlsIn0seyJuYW1lIjoibW9kZWwiLCJ2YWx1ZSI6IiIranNfZDJjX2dldF92YWwoIjEwcGE3djNxZWxkY29zayIpKyIiLCJjbGFzcyI6Im1vZGVsZW1haWwifSx7Im5hbWUiOiJ5ZWFyIiwidmFsdWUiOiIiK2pzX2QyY19nZXRfdmFsKCJyODJ6Zmt4YTJkd3NzMDAiKSsiIiwiY2xhc3MiOiJ5ZWFyZW1haWwifSx7Im5hbWUiOiJnb29nbGVpZCIsInZhbHVlIjoiIn0seyJuYW1lIjoiZ29vZ2xlaWRkMmNtZWRpYSIsInZhbHVlIjoiIn0seyJuYW1lIjoiYmluZ2NvbmlkIiwidmFsdWUiOiIifSx7Im5hbWUiOiJiaW5nYWN0aW9uaWQiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImJpbmdkb21haW5pZCIsInZhbHVlIjoiIn0seyJuYW1lIjoiYWRyb2xsQWR2IiwidmFsdWUiOiIifSx7Im5hbWUiOiJhZHJvbGxQaXgiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImZhY2Vib29rQ29uSWQiLCJ2YWx1ZSI6IjY4MzQyMjQ3MjE5NDk2NCJ9LHsibmFtZSI6ImRvbWFpbiIsInZhbHVlIjoiaGF3a2VzYnVyeWhvbmRhLmNhIn0seyJuYW1lIjoicmVmZXJyZXIiLCJ2YWx1ZSI6IiIranNfZDJjX2dldF92YWwoImkzZ3NheGdzNWprOHdjayIpKyIifSx7Im5hbWUiOiJpc2V4cHJlc3MiLCJ2YWx1ZSI6IjAiLCJjbGFzcyI6ImlzZXhwcmVzcyJ9LHsibmFtZSI6ImlzcHJvbW8iLCJ2YWx1ZSI6IjAifSx7Im5hbWUiOiJpc2hvbWVwYWdlIiwidmFsdWUiOiIwIn0seyJuYW1lIjoidGV4dENhclNlY3Rpb25UeXBlIiwidmFsdWUiOiIiK2pzX2QyY19nZXRfdmFsKCJzbzd5dXFhajRkd2NjOHMiKSsiIn0seyJuYW1lIjoiZnJvbUFBIiwidmFsdWUiOiIifSx7Im5hbWUiOiJsYW5nIiwidmFsdWUiOiJGUkVOQ0gifV19KTt9KTt9Y2F0Y2goZXp6MSl7aWYoY29uc29sZSYmY29uc29sZS5sb2cpCmNvbnNvbGUubG9nKGV6ejEpO30KdmFyIGlkZW50XzU5YThkOGQ1MTYxMDM2NTA4OTE5ZDkzMWQwYzRkYTVlO3RyeXtqUXVlcnkoZnVuY3Rpb24oJCl7JCgiI3BheW1lbnRDYWxjdWxhdG9yUG9wdXBDb250YWluZXIiKS5wb3B1cGl6ZSh7Im9uQmVmb3JlT3BlbiI6ZnVuY3Rpb24oc2VsZil7aWYoc2VsZi5zZXR0aW5ncy5hbHJlYWR5SW5pdCl7c2VsZi5zZXR0aW5ncy5hbHJlYWR5SW5pdD1mYWxzZTtpZihDb29raWVzLmdldCgncG9wdXBGb3JtRmlsbGVkJyk9PSIxIil7JCgiI3BheW1lbnRDYWxjdWxhdG9yQ2FsbFRvQWN0aW9uQ29udGFpbmVyIikuaGlkZSgpO30KcmV0dXJuIHRydWU7fQppZighc2VsZi5zZXR0aW5ncy5zdHlsZWlkKXJldHVybiBmYWxzZTtzZWxmLnNldHRpbmdzLmluaXRpYWxTdHlsZWlkPXNlbGYuc2V0dGluZ3Muc3R5bGVpZDtpZigkKCIuYm5wX3BheW1lbnRfY29udGFpbmVyIikubGVuZ3RoKXtzZWxmLnNldHRpbmdzLnBheW1lbnRPcHRpb25zPXBhcnNlSW50KCQoIiNvcHRpb25QcmljZVRvdGFsIikuaHRtbCgpLnJlcGxhY2UoIiwiLCIiKSk7fQpnYVRyYWNrKCdjLl90cmFja0V2ZW50JywnQ2xpcXVlcyBDYWxjdWxhdHJpY2UnLCdOZXVmJywnT3BlbicsMSk7cGF5bWVudENhbGN1bGF0b3JQb3B1cEluaXQoKTt9LCJvbkNsb3NlIjpmdW5jdGlvbihzZWxmKXtpZighc2VsZi5zZXR0aW5ncy5hbHJlYWR5SW5pdCl7Z2FUcmFjaygnYy5fdHJhY2tFdmVudCcsJ0NsaXF1ZXMgQ2FsY3VsYXRyaWNlJywnTmV1ZicsJ0Nsb3NlJywxKTt9CmlmKCgoJCgnI3RhcmdldFBhZ2UnKS52YWwoKXx8ZmFsc2UpPT0nTkVXQ0FSUyd8fCgkKCcjdGFyZ2V0UGFnZScpLnZhbCgpfHxmYWxzZSk9PSdVU0VEQ0FSUycpJiZ3aW5kb3cucGF5bWVudFNlbGVjdENoYW5nZWQ9PXRydWUpe2xvY2F0aW9uLnJlbG9hZCgpO319LCJvbkFmdGVySW5pdGlhbGl6ZSI6ZnVuY3Rpb24oc2VsZil7cG9wdXBDYWxjdWxhdG9ySW5pdGlhbGl6ZWQoKTt9LCJjb29raWVEdXJhdGlvbiI6MzAsImNvb2tpZU5hbWUiOm51bGwsImNvb2tpZUNyZWF0ZSI6bnVsbCwiZ29vZ2xlVHJhY2tpbmciOnsiaWRTdWZmaXgiOiIiLCJsYWJlbCI6IiIsImxhYmVsc2VjdGlvbiI6IiIsImlzZXhwcmVzcyI6MCwiaXNwcm9tbyI6MCwiaXNob21lcGFnZSI6MCwiaXNtb2JpbGUiOjB9LCJmb3JtIjp7ImVtYWlsaWQiOm51bGwsIm9mZmVydHlwZSI6bnVsbCwibmFtZSI6bnVsbCwic2VuZFRvIjpudWxsLCJzZW5kVG9BREYiOm51bGwsIk9LQnV0dG9uQ2xhc3MiOiJzdWJtaXRCdG4iLCJDYW5jZWxCdXR0b25DbGFzcyI6ImNhbmNlbEJ0biIsInNob3dFbWFpbENvbmZpcm1hdGlvbiI6ZmFsc2UsImZyb21BQSI6ZmFsc2UsImNvbmZpcm1hdGlvbiI6eyJ0aXRsZSI6bnVsbCwiYm9keSI6bnVsbH19LCJzdGF0ZSI6W10sInZlaGljbGVTdGF0ZSI6InVzZWQiLCJjbG9zZU9uU3VibWl0Ijp0cnVlLCJmaWxsZmxhZyI6ZmFsc2UsIm5vdHJhbnNmb3JtIjp0cnVlLCJuYW1lIjpmYWxzZSwiYW5pbWF0aW9uIjoiZmFkZUFuZFBvcCIsImFuaW1hdGlvblNwZWVkIjozMDAsImNsb3NlT25CYWNrZ3JvdW5kQ2xpY2siOmZhbHNlLCJkaXNtaXNzTW9kYWxDbGFzcyI6ImNsb3NlLXJldmVhbC1tb2RhbCIsImNsb3NlQnV0dG9uIjp0cnVlLCJieXBhc3NDb25zZW50IjpmYWxzZSwidGhyZXNob2xkIjpmYWxzZSwidGhyZXNob2xkVmFsdWUiOmZhbHNlLCJzY3JvbGx1cCI6ZmFsc2UsIm1haW5wb3B1cCI6ZmFsc2UsInNob3dvbmxvYWQiOmZhbHNlLCJjb3VudGRvd24iOjE3NzM3MjAwMDAsImNvbmZpcm1Gb3JtIjpbeyJuYW1lIjoibGFiZWwiLCJ2YWx1ZSI6IiIsImNsYXNzIjoibGFiZWxlbWFpbCJ9LHsibmFtZSI6InNlY3Rpb24iLCJ2YWx1ZSI6IiIsImNsYXNzIjoibGFiZWxzZWN0aW9uIn0seyJuYW1lIjoiYnJhbmQiLCJ2YWx1ZSI6IiIranNfZDJjX2dldF92YWwoIjFlcml2OTAwcGRhODh3dzgiKSsiIiwiY2xhc3MiOiJicmFuZGVtYWlsIn0seyJuYW1lIjoibW9kZWwiLCJ2YWx1ZSI6IiIranNfZDJjX2dldF92YWwoIjEwcGE3djNxZWxkY29zayIpKyIiLCJjbGFzcyI6Im1vZGVsZW1haWwifSx7Im5hbWUiOiJ5ZWFyIiwidmFsdWUiOiIiK2pzX2QyY19nZXRfdmFsKCJyODJ6Zmt4YTJkd3NzMDAiKSsiIiwiY2xhc3MiOiJ5ZWFyZW1haWwifSx7Im5hbWUiOiJnb29nbGVpZCIsInZhbHVlIjoiIn0seyJuYW1lIjoiZ29vZ2xlaWRkMmNtZWRpYSIsInZhbHVlIjoiIn0seyJuYW1lIjoiYmluZ2NvbmlkIiwidmFsdWUiOiIifSx7Im5hbWUiOiJiaW5nYWN0aW9uaWQiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImJpbmdkb21haW5pZCIsInZhbHVlIjoiIn0seyJuYW1lIjoiYWRyb2xsQWR2IiwidmFsdWUiOiIifSx7Im5hbWUiOiJhZHJvbGxQaXgiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImZhY2Vib29rQ29uSWQiLCJ2YWx1ZSI6IjY4MzQyMjQ3MjE5NDk2NCJ9LHsibmFtZSI6ImRvbWFpbiIsInZhbHVlIjoiaGF3a2VzYnVyeWhvbmRhLmNhIn0seyJuYW1lIjoicmVmZXJyZXIiLCJ2YWx1ZSI6IiIranNfZDJjX2dldF92YWwoImkzZ3NheGdzNWprOHdjayIpKyIifSx7Im5hbWUiOiJpc2V4cHJlc3MiLCJ2YWx1ZSI6IjAiLCJjbGFzcyI6ImlzZXhwcmVzcyJ9LHsibmFtZSI6ImlzcHJvbW8iLCJ2YWx1ZSI6IjAifSx7Im5hbWUiOiJpc2hvbWVwYWdlIiwidmFsdWUiOiIwIn0seyJuYW1lIjoidGV4dENhclNlY3Rpb25UeXBlIiwidmFsdWUiOiIiK2pzX2QyY19nZXRfdmFsKCJzbzd5dXFhajRkd2NjOHMiKSsiIn0seyJuYW1lIjoiZnJvbUFBIiwidmFsdWUiOiIifSx7Im5hbWUiOiJsYW5nIiwidmFsdWUiOiJGUkVOQ0gifV19KTt9KTt9Y2F0Y2goZXp6MSl7aWYoY29uc29sZSYmY29uc29sZS5sb2cpCmNvbnNvbGUubG9nKGV6ejEpO307Ci8qKiAvbS9qcy9za2VsZXRvbi5jb250cm9sbGVyLmpzICoqLwp2YXIgX19fZDJjX3NrZWxldG9uY29udHJvbGxlcmpzX2Nfb249IjIwMjYtMDEtMTIgMTA6MTQ6NDIiOyd1c2Ugc3RyaWN0Jzt0cnl7alF1ZXJ5KGZ1bmN0aW9uKGMpe2xldCBlO2NvbnNvbGUubG9nKCJHU1BFRUQtQUZURVItSlFVRVJZOiIrKERhdGUubm93KCktKG51bGwhPShlPXdpbmRvdy5nVGVzdFNwZWVkQ29ubik\/ZTowKSkvMUUzKTt3aW5kb3cuZ1Jlc291cmNlTG9hZGVyQW5kSnF1ZXJ5SXNSZWFkeT0hMDtzZXRUaW1lb3V0KCgpPT57dmFyIGI9YygiI2VtYmVkLWNvbnRhaW5lci15b3V0dWJlLWhvbWVwYWdlLWJ5aWQiKTtjb25zb2xlLmxvZygiU0tFTEVUT058I2VtYmVkLWNvbnRhaW5lci15b3V0dWJlLWhvbWVwYWdlLWJ5aWQiKTtpZihiLmxlbmd0aCl7dmFyIGE9Yi5hdHRyKCJkYXRhLWlmcmFtZS1hdHRyaWJ1dGVzIik7InVuZGVmaW5lZCIhPT1hJiZ2b2lkIDAhPT1hJiYoYT1KU09OLnBhcnNlKGF0b2IoYSkpLGMoIjxpZnJhbWUvPiIsYSkuYXBwZW5kVG8oYikpfX0sN0UzKTtzZXRUaW1lb3V0KCgpPT57dmFyIGI9YygiI2VtYmVkLWNvbnRhaW5lci1tYXBzLWhvbWVwYWdlLWJ5aWQiKTsKY29uc29sZS5sb2coIlNLRUxFVE9OfCNlbWJlZC1jb250YWluZXItbWFwcy1ob21lcGFnZS1ieWlkIik7aWYoYi5sZW5ndGgpe3ZhciBhPWIuYXR0cigiZGF0YS1pZnJhbWUtYXR0cmlidXRlcyIpOyJ1bmRlZmluZWQiIT09YSYmdm9pZCAwIT09YSYmKGE9SlNPTi5wYXJzZShhdG9iKGEpKSxpbmplY3RHb29nbGVNYXBzS2V5KGZ1bmN0aW9uKGYpe2Euc3JjPWEuc3JjLnJlcGxhY2UoIl9fS0VZX18iLGYpO2MoIjxpZnJhbWUvPiIsYSkuYXBwZW5kVG8oYil9KSl9fSw3RTMpO3dpbmRvdy5kZWxheWVkQ3NzPWZ1bmN0aW9uKGIpe3ZhciBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7YS50eXBlPSJ0ZXh0L2NzcyI7YS5zdHlsZVNoZWV0P2Euc3R5bGVTaGVldC5jc3NUZXh0PWI6YS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShiKSk7Y29uc29sZS5sb2coIlNLRUxFVE9OfERFTEFZRURMT0FEQ1NTfCIrYik7ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChhKX07CndpbmRvdy5kZWxheWVkQ3NzKCIuaGlkZU9uUHJlTG9hZHt2aXNpYmlsaXR5OnZpc2libGUgIWltcG9ydGFudDt9Iik7c2V0VGltZW91dCgoKT0+e2NvbnNvbGUubG9nKCJTS0VMRVRPTnxzZXR0aW5nIG1lbnUgbXV0YXRpb24gb2JzZXJ2ZXIiKTt0cnl7bnVsbCE9PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5za2VsZXRvbi5za2VsZXRvbi1kZXNrdG9wLnNrZWxldG9uLWNvbmQtMiIpJiYobmV3IE11dGF0aW9uT2JzZXJ2ZXIoKGEsZik9Pntmb3IoY29uc3QgZCBvZiBhKSJhdHRyaWJ1dGVzIj09PWQudHlwZSYmImNsYXNzIj09PWQuYXR0cmlidXRlTmFtZSYmZC50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCJ1cF9tZW51IikmJihhPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5za2VsZXRvbi5za2VsZXRvbi1kZXNrdG9wLnNrZWxldG9uLWNvbmQtMiIpLGQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygiZml4ZWQiKT9hLmNsYXNzTGlzdC5jb250YWlucygiZml4ZWQiKXx8YS5jbGFzc0xpc3QuYWRkKCJmaXhlZCIpOgphLmNsYXNzTGlzdC5jb250YWlucygiZml4ZWQiKSYmYS5jbGFzc0xpc3QucmVtb3ZlKCJmaXhlZCIpKX0pKS5vYnNlcnZlKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5za2VsZXRvbi5za2VsZXRvbi1kZXNrdG9wLnNrZWxldG9uLWNvbmQtMiA+IC51cF9tZW51Iikse2F0dHJpYnV0ZXM6ITAsY2hpbGRMaXN0OiEwLHN1YnRyZWU6ITB9KX1jYXRjaChhKXtjb25zb2xlLmVycm9yKCJTS0VMRVRPTnwuc2tlbGV0b24uc2tlbGV0b24tZGVza3RvcC5za2VsZXRvbi1jb25kLTIiLGEpfWNvbnNvbGUubG9nKCJTS0VMRVRPTnxpcy1sb2FkZWQtbm93Iik7Y29uc3QgYj1jKCIuc2tlbGV0b24iKTtiLmFkZENsYXNzKCJpcy1sb2FkZWQtbm93Iik7c2V0VGltZW91dCgoKT0+e2NvbnNvbGUubG9nKCJTS0VMRVRPTnxyZW1vdmluZyBza2VsZXRvbnMgZmlyc3QgaW1nIGJhY2tncm91bmQiKTtiLmZpbmQoImltZy5pcy1za2VsZXRvbi1iZy1pbWciKS5yZW1vdmUoKX0sMzx3aW5kb3cuZ1NwZWVkQ29ubj8KMUU0OjZFMyl9LDIwMCl9KX1jYXRjaChjKXt9Ow==","menu_new":"","html":"Cgk8c3R5bGU+CgkJaHRtbCB7Zm9udC1zaXplOjEwMCU7fQoJCW1haW4gKiB7bWFyZ2luOmluaXRpYWw7fQoJCWZvb3RlciB7Y2xlYXI6IGJvdGg7fQoJPC9zdHlsZT4KCgk8ZGl2IGlkPSJkMmNfYm9keUNvbnRlbnQiIGNsYXNzPSJkMmMtZW1iZWRkZWQtY29udGVudC1tb2JpbGUiPgoKCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iYWN0aXZlc2l0ZWxhbmd1YWdlIiB2YWx1ZT0iRlJFTkNIIi8+CgoJCTxpbnB1dAoJCQl0eXBlPSJoaWRkZW4iCgkJCWlkPSJkMmNEYXRhU3RvcmUiCgkJCWRhdGEtYmFzZXVybD0iaHR0cHM6Ly9oYXdrZXNidXJ5aG9uZGEuY2EiCgkJCWRhdGEtYm9keWNsYXNzPSIgaGVhZGluZ0NhcHNPbiBGUkVOQ0ggTmV3U3JwMiBOZXdTcnAyTW9iaWxlIgoJCQlkYXRhLWlzbW9iaWxlPSIxIgoJCT4KCgkJPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9sZCtqc29uIj4KICAgIHsiQGNvbnRleHQiOiJodHRwczpcL1wvc2NoZW1hLm9yZyIsIkB0eXBlIjoiV2ViU2l0ZSIsIm5hbWUiOiJIYXdrZXNidXJ5IEhvbmRhIiwidXJsIjoiaHR0cHM6XC9cL3d3dy5oYXdrZXNidXJ5aG9uZGEuY2FcLyIsInBvdGVudGlhbEFjdGlvbiI6eyJAdHlwZSI6IlNlYXJjaEFjdGlvbiIsInRhcmdldCI6Imh0dHBzOlwvXC93d3cuaGF3a2VzYnVyeWhvbmRhLmNhXC9vY2Nhc2lvblwvcmVjaGVyY2hlLmh0bWw\/cT17c2VhcmNoX3Rlcm1fc3RyaW5nfSIsInF1ZXJ5LWlucHV0IjoicmVxdWlyZWQgbmFtZT1zZWFyY2hfdGVybV9zdHJpbmcifX0KPC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9sZCtqc29uIj4KICAgIHsiQGNvbnRleHQiOiJodHRwczpcL1wvc2NoZW1hLm9yZyIsIkB0eXBlIjoiQXV0b21vdGl2ZUJ1c2luZXNzIiwidXJsIjoiaHR0cHM6XC9cL3d3dy5oYXdrZXNidXJ5aG9uZGEuY2EiLCJuYW1lIjoiSGF3a2VzYnVyeSBIb25kYSIsImltYWdlIjoiaHR0cHM6XC9cL3d3dy5oYXdrZXNidXJ5aG9uZGEuY2FcL2ltYWdlc1wvTG9nb01vYmlsZVwvaGF3a2VzYnVyeWhvbmRhLWxvZ28tZGFyay5wbmciLCJsb2dvIjoiaHR0cHM6XC9cL3d3dy5oYXdrZXNidXJ5aG9uZGEuY2FcL2ltYWdlc1wvTG9nb01vYmlsZVwvaGF3a2VzYnVyeWhvbmRhLWxvZ28tZGFyay5wbmciLCJzYW1lQXMiOlsiaHR0cHM6XC9cL3d3dy5mYWNlYm9vay5jb21cL2hvbmRhaGF3a2VzYnVyeVwvIiwiaHR0cDpcL1wvd3d3LnlvdXR1YmUuY29tXC9jaGFubmVsXC9VQ2s1SW5jOV95VjBPUHlUcG51MmZzUVEiXSwiZ2VvIjp7IkB0eXBlIjoiR2VvQ29vcmRpbmF0ZXMiLCJsYXRpdHVkZSI6IjQ1LjU4OTI5NDIwMDAiLCJsb25naXR1ZGUiOiItNzQuNTkyNjE0NDAwMCJ9LCJhZGRyZXNzIjp7IkB0eXBlIjoiUG9zdGFsQWRkcmVzcyIsInN0cmVldEFkZHJlc3MiOiI0NTUgQ291bnR5IFJvYWQgMTciLCJhZGRyZXNzTG9jYWxpdHkiOiJIYXdrZXNidXJ5IiwiYWRkcmVzc1JlZ2lvbiI6Ik9udGFyaW8iLCJwb3N0YWxDb2RlIjoiSzZBIDJSMiIsImFkZHJlc3NDb3VudHJ5IjoiQ0EifSwidGVsZXBob25lIjoiNjEzLTYzMi01MjIyIiwicHJpY2VSYW5nZSI6IjMwMjcwJC02MjA5MCQiLCJvcGVuaW5nSG91cnNTcGVjaWZpY2F0aW9uIjpbeyJAdHlwZSI6Ik9wZW5pbmdIb3Vyc1NwZWNpZmljYXRpb24iLCJkYXlPZldlZWsiOiJNb25kYXkiLCJvcGVucyI6IjA5OjAwIiwiY2xvc2VzIjoiMTk6MDAifSx7IkB0eXBlIjoiT3BlbmluZ0hvdXJzU3BlY2lmaWNhdGlvbiIsImRheU9mV2VlayI6IlR1ZXNkYXkiLCJvcGVucyI6IjA5OjAwIiwiY2xvc2VzIjoiMTk6MDAifSx7IkB0eXBlIjoiT3BlbmluZ0hvdXJzU3BlY2lmaWNhdGlvbiIsImRheU9mV2VlayI6IldlZG5lc2RheSIsIm9wZW5zIjoiMDk6MDAiLCJjbG9zZXMiOiIxOTowMCJ9LHsiQHR5cGUiOiJPcGVuaW5nSG91cnNTcGVjaWZpY2F0aW9uIiwiZGF5T2ZXZWVrIjoiVGh1cnNkYXkiLCJvcGVucyI6IjA5OjAwIiwiY2xvc2VzIjoiMTk6MDAifSx7IkB0eXBlIjoiT3BlbmluZ0hvdXJzU3BlY2lmaWNhdGlvbiIsImRheU9mV2VlayI6IkZyaWRheSIsIm9wZW5zIjoiMDk6MDAiLCJjbG9zZXMiOiIxODowMCJ9LHsiQHR5cGUiOiJPcGVuaW5nSG91cnNTcGVjaWZpY2F0aW9uIiwiZGF5T2ZXZWVrIjoiU2F0dXJkYXkiLCJvcGVucyI6IjA5OjAwIiwiY2xvc2VzIjoiMTU6MDAifV19Cjwvc2NyaXB0PjxsaW5rIHJlbD0iaWNvbiIgaHJlZj0iaHR0cHM6Ly9oYXdrZXNidXJ5aG9uZGEuY2EvaW1hZ2VzL0Zhdmljb24vaG9uZGEtZmF2aWNvbi5zdmciPjxsaW5rIHJlbD0iYWx0ZXJuYXRlIiBocmVmPSJodHRwczovL3d3dy5oYXdrZXNidXJ5aG9uZGEuY2EvZW5nLyIgaHJlZmxhbmc9ImVuLWNhIj48bGluayByZWw9InByZWxvYWQiIGFzPSJpbWFnZSIgaHJlZj0iaHR0cHM6Ly9oYXdrZXNidXJ5aG9uZGEuY2EvaW1hZ2VzL0xvZ29Nb2JpbGUvaGF3a2VzYnVyeWhvbmRhLWxvZ28tZGFyay53ZWJwIj48bGluayByZWw9InByZWxvYWQiIGhyZWY9Ii8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZGVza3RvcC1hd2Vzb21lL3dlYmZvbnRzL2ZhLWxpZ2h0LTMwMC53b2ZmMiIgYXM9ImZvbnQiIHR5cGU9ImZvbnQvV09GRjIiIGNyb3Nzb3JpZ2luPjxsaW5rIHJlbD0icHJlbG9hZCIgaHJlZj0iLy9mb250cy5kMmNtZWRpYS5jYS93ZWJmb250cy9kZXNrdG9wLWF3ZXNvbWUvd2ViZm9udHMvZmEtc29saWQtOTAwLndvZmYyIiBhcz0iZm9udCIgdHlwZT0iZm9udC9XT0ZGMiIgY3Jvc3NvcmlnaW4+PGxpbmsgcmVsPSJwcmVsb2FkIiBocmVmPSIvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1yZWd1bGFyLTQwMC53b2ZmMiIgYXM9ImZvbnQiIHR5cGU9ImZvbnQvV09GRjIiIGNyb3Nzb3JpZ2luPjxsaW5rIHJlbD0icHJlbG9hZCIgaHJlZj0iLy9mb250cy5kMmNtZWRpYS5jYS9IZWx2ZXRpY2FOZXVlTFQtVGhpbi1JdGFsaWMud29mZjIiIGFzPSJmb250IiB0eXBlPSJmb250L1dPRkYyIiBjcm9zc29yaWdpbj48bGluayByZWw9InByZWxvYWQiIGhyZWY9Ii8vZm9udHMuZDJjbWVkaWEuY2EvSGVsdmV0aWNhTmV1ZUxULVRoaW4ud29mZjIiIGFzPSJmb250IiB0eXBlPSJmb250L1dPRkYyIiBjcm9zc29yaWdpbj48bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vaGF3a2VzYnVyeWhvbmRhLmNhL2Nzc19yL3Jlc291cmNlLmxvYWRlci5mci5jc3M\/dj0zJmFtcDtjc3NycGw9JmFtcDt3c3dpZHRoPTAmYW1wO2RldmljZT1tb2JpbGUmYW1wO3VhPVEwTkNiM1F2TWk0d0lDaG9kSFJ3Y3pvdkwyTnZiVzF2Ym1OeVlYZHNMbTl5Wnk5bVlYRXZLUT09Ij48bGluayByZWw9InByZWNvbm5lY3QiIGhyZWY9Imh0dHBzOi8vY2FyaW1hZ2VzLmQyY21lZGlhLmNhIiBjcm9zc29yaWdpbj48bGluayByZWw9InByZWNvbm5lY3QiIGhyZWY9Imh0dHBzOi8vaW1hZ2VzY2RuLmQyY21lZGlhLmNhIiBjcm9zc29yaWdpbj48bGluayByZWw9InByZWNvbm5lY3QiIGhyZWY9Imh0dHBzOi8vZm9udHMuZDJjbWVkaWEuY2EiIGNyb3Nzb3JpZ2luPjxsaW5rIHJlbD0iY2Fub25pY2FsIiBocmVmPSJodHRwczovL3d3dy5oYXdrZXNidXJ5aG9uZGEuY2EvZW1iZWRlci9wcm9jZXNzL2ZyL20iIGRhdGEtY2Fub25pY2FsLWhlYWRlci13aWRnZXQ9IjEiPjxkaXYgaWQ9ImFzY19kaWdpdGFsX2RhdGFfaW5mbyIgZGF0YS1hbmFseXRpY3M9Imdvb2dsZV9hbmFseXRpY3NfNCI+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InZlaGljbGVDYXRlZ29yeSIgdmFsdWU9IiI+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Im1ha2UiIHZhbHVlPSIiPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJtb2RlbCIgdmFsdWU9IiI+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InllYXIiIHZhbHVlPSIiPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ2aW4iIHZhbHVlPSIiPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ0cmltIiB2YWx1ZT0iIj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0icHJpY2UiIHZhbHVlPSIiPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJleHRjb2xvciIgdmFsdWU9IiI+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRhdGVfbGlzdGluZyIgdmFsdWU9IiI+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImQyYXNjX2lzQ2VydGlmaWVkIiB2YWx1ZT0iIj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idmVoaWNsZVN0YXR1cyIgdmFsdWU9IiI+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRlYWxlckNvZGUiIHZhbHVlPSI2NzIwIj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0icGFnZVR5cGUiIHZhbHVlPSJTaG93cm9vbSI+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRlYWxlcl9uYW1lIiB2YWx1ZT0iSGF3a2VzYnVyeSBIb25kYSI+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRlYWxlcl9hZGRyZXNzIiB2YWx1ZT0iNDU1IENvdW50eSBSb2FkIDE3LCBIYXdrZXNidXJ5LCAiPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkZWFsZXJfcG9zdGFsIiB2YWx1ZT0iSzZBIDJSMiI+CgkJPC9kaXY+CgkJPCEtLSBPTzo6YmEwZmJmYmIxZDdhMGMzMWJjMzMxZjE4Y2JhZTUwZTkgLS0+CjwhLS1FTkRfUkVNT1ZBQkxFX0NPREVfQkxPQ0tfQ09NTUVOVF8wMDAyLS0+Cgo8IS0tRU5EX1JFTU9WQUJMRV9DT0RFX0JMT0NLX0NPTU1FTlRfMDAwMS0tPgo8IS0tIEdsb2JhbCBzaXRlIHRhZyAoZ3RhZy5qcykgLSBHb29nbGUgQW5hbHl0aWNzIC0tPgoKPCEtLVNUQVJUX1JFTU9WQUJMRV9DT0RFX0JMT0NLX0NPTU1FTlRfMDAwMS0tPgo8c2NyaXB0IGFzeW5jIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xldGFnbWFuYWdlci5jb20vZ3RhZy9qcz9pZD1HLVAyQ0NKNFJHMFoiPjwvc2NyaXB0Pgo8IS0tRU5EX1JFTU9WQUJMRV9DT0RFX0JMT0NLX0NPTU1FTlRfMDAwMS0tPgoKPCEtLSAjI1ZNSlMyIyMgLS0+PCEtLSBHTyBJRCAtLT4KPCEtLSBCSU5HIFNDUklQVCAtLT4KPCEtLSBPTzo6OWZmNTE4OTgxMWE5NzZkMjM4M2JiNTQ0MTdmYTBkZTIgLS0+CiAgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIiBkYXRhLXJsPSIxIj4KLyoqIC9jc3Mvcm9vdC5jc3MgKiovCjpyb290eyAtLXJhdGlvOjEuMTU7IC0tczA6MDsgLS1zLTk6Y2FsYyh2YXIoLS1zLTgpIC8gdmFyKC0tcmF0aW8pKTsgLS1zLTg6Y2FsYyh2YXIoLS1zLTcpIC8gdmFyKC0tcmF0aW8pKTsgLS1zLTc6Y2FsYyh2YXIoLS1zLTYpIC8gdmFyKC0tcmF0aW8pKTsgLS1zLTY6Y2FsYyh2YXIoLS1zLTUpIC8gdmFyKC0tcmF0aW8pKTsgLS1zLTU6Y2FsYyh2YXIoLS1zLTQpIC8gdmFyKC0tcmF0aW8pKTsgLS1zLTQ6Y2FsYyh2YXIoLS1zLTMpIC8gdmFyKC0tcmF0aW8pKTsgLS1zLTM6Y2FsYyh2YXIoLS1zLTIpIC8gdmFyKC0tcmF0aW8pKTsgLS1zLTI6Y2FsYyh2YXIoLS1zLTEpIC8gdmFyKC0tcmF0aW8pKTsgLS1zLTE6Y2FsYyh2YXIoLS1zKSAvIHZhcigtLXJhdGlvKSk7IC0tczowLjVyZW07IC0tczE6Y2FsYyh2YXIoLS1zKSAqIHZhcigtLXJhdGlvKSk7IC0tczI6Y2FsYyh2YXIoLS1zMSkgKiB2YXIoLS1yYXRpbykpOyAtLXMzOmNhbGModmFyKC0tczIpICogdmFyKC0tcmF0aW8pKTsgLS1zNDpjYWxjKHZhcigtLXMzKSAqIHZhcigtLXJhdGlvKSk7IC0tczU6Y2FsYyh2YXIoLS1zNCkgKiB2YXIoLS1yYXRpbykpOyAtLXM2OmNhbGModmFyKC0tczUpICogdmFyKC0tcmF0aW8pKTsgLS1zNzpjYWxjKHZhcigtLXM2KSAqIHZhcigtLXJhdGlvKSk7IC0tczg6Y2FsYyh2YXIoLS1zNykgKiB2YXIoLS1yYXRpbykpOyAtLXM5OmNhbGModmFyKC0tczgpICogdmFyKC0tcmF0aW8pKTsgLS1mcy1iYXNlOjAuODc1cmVtOyAtLWZzOnZhcigtLWZzLWJhc2UpOyAtLWZzLTk6Y2FsYyh2YXIoLS1mcy04KSAvIHZhcigtLXJhdGlvKSk7IC0tZnMtOCA6Y2FsYyh2YXIoLS1mcy03KSAvIHZhcigtLXJhdGlvKSk7IC0tZnMtNyA6Y2FsYyh2YXIoLS1mcy02KSAvIHZhcigtLXJhdGlvKSk7IC0tZnMtNiA6Y2FsYyh2YXIoLS1mcy01KSAvIHZhcigtLXJhdGlvKSk7IC0tZnMtNSA6Y2FsYyh2YXIoLS1mcy00KSAvIHZhcigtLXJhdGlvKSk7IC0tZnMtNCA6Y2FsYyh2YXIoLS1mcy0zKSAvIHZhcigtLXJhdGlvKSk7IC0tZnMtMyA6Y2FsYyh2YXIoLS1mcy0yKSAvIHZhcigtLXJhdGlvKSk7IC0tZnMtMiA6Y2FsYyh2YXIoLS1mcy0xKSAvIHZhcigtLXJhdGlvKSk7IC0tZnMtMSA6Y2FsYyh2YXIoLS1mczApIC8gdmFyKC0tcmF0aW8pKTsgLS1mczAgOnZhcigtLWZzLWJhc2UsIDAuODc1cmVtKTsgLS1mczEgOmNhbGModmFyKC0tZnMwKSAqIHZhcigtLXJhdGlvKSk7IC0tZnMyIDpjYWxjKHZhcigtLWZzMSkgKiB2YXIoLS1yYXRpbykpOyAtLWZzMyA6Y2FsYyh2YXIoLS1mczIpICogdmFyKC0tcmF0aW8pKTsgLS1mczQgOmNhbGModmFyKC0tZnMzKSAqIHZhcigtLXJhdGlvKSk7IC0tZnM1IDpjYWxjKHZhcigtLWZzNCkgKiB2YXIoLS1yYXRpbykpOyAtLWZzNiA6Y2FsYyh2YXIoLS1mczUpICogdmFyKC0tcmF0aW8pKTsgLS1mczcgOmNhbGModmFyKC0tZnM2KSAqIHZhcigtLXJhdGlvKSk7IC0tZnM4IDpjYWxjKHZhcigtLWZzNykgKiB2YXIoLS1yYXRpbykpOyAtLWZzOSA6Y2FsYyh2YXIoLS1mczgpICogdmFyKC0tcmF0aW8pKTsgLS1kZWZhdWx0LWJsYWNrOiMxYjFiMWI7IC0tdGFiLWNvbG9yLXNwZWNpYWxjYXNlOiMxYjFiMWI7IC0tdGFiLWNvbG9yOiMxYjFiMWI7IC0tdGFiLXRleHQtY29sb3I6I2ZmZmZmZjsgLS10YWItY29sb3ItbW9iOiMxYjFiMWI7IC0tdGFiLXRleHQtY29sb3ItbW9iOiNmZmZmZmY7IC0tdGFiLWNvbG9yLW1vYi1leDojZWFlYWVhOyAtLXRhYi10ZXh0LWNvbG9yLW1vYi1leDojMWIxYjFiOyAtLW1lbnUtY29sb3ItYm9yZGVyOiMxYjFiMWI7IC0tbWVudS1jb2xvci1tb2I6I2ZmZmZmZjsgLS1tZW51LXRleHQtY29sb3ItbW9iOiMxYjFiMWI7IC0tbWVudS1jb2xvci1tb2ItZXg6I2YzZjNmMzsgLS1tZW51LXRleHQtY29sb3ItbW9iLWV4OiMxYjFiMWI7IC0tcHJvbW8tY29sb3I6I2UzMTczZTsgLS1wcm9tby10ZXh0LWNvbG9yOiNmZmZmZmY7IC0tbmV3c3JwLW1vZGVsLWNvbG9yOiMxYjFiMWI7IC0tZm9vdGVyLWxpbmstdGl0bGUtY29sOiMxYjFiMWI7IC0tZm9vdGVyLWl0ZW1zLWxpbmstY29sb3I6IzcwNzA3MDsgLS1mb290ZXItY29uZGl0aW9ucy1jb2xvcjojNzA3MDcwOyAtLWZvb3Rlci1iZy1jb2xvcjojZmFmYWZhOyAtLWdlbmVyYWwtYmctY29sb3I6I2ZmZmZmZjsgLS10b3AtcHJvbW8tYnRuLXR4dDojZmZmZmZmOyAtLXRvcC1wcm9tby1idG4tYmc6I2UzMTczZTsgLS1wcm9tby1idG4tY29sb3I6I2UzMTczZTsgLS1wcm9tby1idG4tdGV4dC1jb2xvcjojZmZmZmZmOyAtLXByb21vLWJ0bi1ob3Zlci1iZy1jb2xvcjojZTMxNzNlOyAtLXByb21vLWJ0bi1ob3Zlci10ZXh0LWNvbG9yOiNmZmZmZmY7IC0tcHJvbW8tYnRuLWJvcmRlci1yYWRpdXM6M3B4OyAtLWhvbWUtYmctY29sb3I6I2ZmZmZmZjsgLS1idXNpbmVzcy1kZXNjLXR4dC1jb2xvcjojNDY0NjQ2OyAtLWJ1c2luZXNzLWRlc2MtYmctY29sb3I6I2ZmZmZmZjsgLS1idXNpbmVzcy1kZXNjLXR4dC1jb2xvcl9tb2I6IzAwMDAwMDsgLS1idXNpbmVzcy1kZXNjLWJnLWNvbG9yX21vYjojZmZmZmZmOyAtLXVzZWQtc2xpZGVyLWJnOiNmZmZmZmY7IC0tdXNlZC1zbGlkZXItdHh0OiMwMDAwMDA7IC0tdXNlZC1zbGlkZXItcHJpY2U6IzFiMWIxYjsgLS1uZXctc2xpZGVyLWJnOjsgLS1uZXctdmRwLWJlc3RwcmljZS1idG4tYmctY29sb3I6I2UzMTczZTsgLS1uZXctdmRwLWJlc3RwcmljZS1idG4tdGV4dC1jb2xvcjojZmZmZmZmOyAtLWRlYWxlci1uYW1lLWNvbG9yOiMxYjFiMWI7IC0tbmV3cy1iZy1jb2xvcjojZmZmZmZmOyAtLW5ld3MtdGV4dC1jb2xvcjojMDAwMDAwOyAtLWV4aXQtcG9wdXAtYmdjb2w6I0UzMTczRTsgLS11c2VkLW9mZmVyLWJ0bi10ZXh0LWNvbG9yOiNmZmZmZmY7IC0tdXNlZC1vZmZlci1idG4tYmctY29sb3I6IzAwMDAwMDsgLS1maW5hbmNlLWJ0bi10ZXh0LWNvbG9yOiNmZmZmZmY7IC0tZmluYW5jZS1idG4tYmctY29sb3I6I2UzMTczZTsgLS1maW5hbmNlLWJ0bi10ZXh0LWNvbG9yLW5ld2ludjojZmZmZmZmOyAtLWZpbmFuY2UtYnRuLWJnLWNvbG9yLW5ld2ludjojZTMxNzNlOyAtLW1lbnUtaG92ZXItdGV4dC1jb2xvcjojZmZmZmZmOyAtLW1lbnUtaG92ZXItYmctY29sb3I6I2UzMTczZTsgLS1tZW51LWJnLWNvbG9yOnJnYigyNywyNywyNyk7IC0tbWFpbi1tZW51LWJnLWNvbG9yOnJnYigyNywyNywyNyk7IC0tZGVhbGVyLWFkZHJlc3MtY29sb3I6IzFiMWIxYjsgLS1kZWFsZXItYWRkcmVzcy1mb250LXNpemU6MTQ7IC0td2hpdGU6I2ZmZjsgLS1saWdodDojZjZmNmY2OyAtLWxpZ2h0LWdyYXk6I2VmZWZlZjsgLS1taWQtZ3JheTojZGRkOyAtLWdyYXk6Izk5OTsgLS1jbnRyLWdyYXk6Izc2NzY3NjsgLS1kYXJrLWdyYXk6IzY2NjsgLS1ibGFjay1ncmF5OiMzMzM7IC0tYmxhY2s6IzAwMDsgLS1ib3JkZXItdGhpbjoxcHg7IC0tYm9yZGVyLXRoaWNrOjJweDsgLS10eHQtdXBwZXI6dXBwZXJjYXNlOyAtLWZvbnQtbWVudTpIZWx2ZXRpY2FOZXVlTFQ7IC0tZm9udC1tZW51LW1vYjpIZWx2ZXRpY2FOZXVlTFQ7IC0tZm9udC1tZW51LXdlaWdodDo0MDA7IC0tZm9udC1oMTpOYXRpb25hbDsgLS1mb250LWgxLW1vYjpOYXRpb25hbDsgLS1mb250LWgxLXdlaWdodDo0MDA7IC0tZm9udC1oMjpOYXRpb25hbDsgLS1mb250LWgyLW1vYjpOYXRpb25hbDsgLS1mb250LWgyLXdlaWdodDo0MDA7IC0tZm9udC10ZXh0OkhlbHZldGljYU5ldWVMVDsgLS1mb250LXRleHQtbW9iOkhlbHZldGljYU5ldWVMVDsgLS1mb250LXRleHQtd2VpZ2h0OjQwMDsgLS1mb250LWJ1dHRvbnM6SGVsdmV0aWNhTmV1ZUxUOyAtLWZvbnQtYnV0dG9ucy1tb2I6SGVsdmV0aWNhTmV1ZUxUOyAtLWZvbnQtYnV0dG9ucy13ZWlnaHQ6NDAwOyAtLWNvcm5lci1yaWJib24tYmctY29sb3I6I2UzMTczZTsgLS1jb3JuZXItcmliYm9uLXRleHQtY29sb3I6I2ZmZmZmZjsgLS1ob21lcGFnZS1tZW51LWl0ZW0tY29sb3I6I2ZmZmZmZjsgLS1ob21lcGFnZS1oZWFkZXItaXRlbS1jb2xvcjojZmZmZmZmOyAtLWhvbWVwYWdlLWJhbm5lci1zZWFyY2gtYmFyLXZpZGVvLW9wYWNpdHk6OyAtLWhvbWVwYWdlLXNvY2lhbC1iZy1jb2xvcjojZmZmZmZmOyAtLWhvbWVwYWdlLXNvY2lhbC10ZXh0LWNvbG9yOiMwMDAwMDA7IC0taG9tZXBhZ2Utc29jaWFsLWxvZ28tY29sb3I6IzE4NzdGMjsgLS1wcm9tb3Rpb24tYmFja2dyb3VuZC1jb2xvcjojZmFmYWZhOyAtLXByb21vdGlvbi10ZXh0LWNvbG9yOiMxYjFiMWI7IC0tdW5kZXJiYW5uZXJfc2VhcmNoX2Jhcl9iZzojZWFlYWVhOyAtLXVuZGVyYmFubmVyX3NlYXJjaF9iYXJfY29sb3I6IzFiMWIxYjsgLS11bmRlcmJhbm5lcl9zZWFyY2hfYmFyX2J0bl9iZzojRTMxNzNFOyAtLXVuZGVyYmFubmVyX3NlYXJjaF9iYXJfYnRuX2NvbG9yOiNmZmZmZmY7IC0tbmV3dmRwLWJlc3RwcmljZS10ZXh0LWNvbG9yLXByaWNlOiNlMzE3M2U7IC0tYWRtaW4tc29jaWFsLWN1c3RvbS1jb2xvci1waWNrZXItdGV4dDojMDAwMDAwOyAtLWFkbWluLWdlbmVyYWwtaGVhZGVyLWJnLWNvbG9yOiNmZmZmZmY7IC0tYWRtaW4tZ2VuZXJhbC10ZXh0LXVzLWRlYWxlci1saW5lLXRleHQtY29sb3I6I2ZmZmZmZjsgLS1hZG1pbi1nZW5lcmFsLXRleHQtdXMtZGVhbGVyLWxpbmUtYmctY29sb3I6I0UzMTczRTsgLS10cmFkZWluYmFyLWJ0bi1iZzojRTMxNzNFOyAtLXRyYWRlaW5iYXItYnRuLWNvbG9yOiNmZmZmZmY7IC0tZGVmYXVsdC1ibGFjay10ZXh0OiMxYjFiMWI7IC0tcHJvbW8tYnRuLWJnLWNvbG9yOiNlMzE3M2U7IC0tdHJhZGVpbmJhci1iZzojZWFlYWVhOyAtLXRyYWRlaW5iYXItY29sb3I6IzFiMWIxYjsgLS1sYW5ndWFnZS1idG4tYWN0aXZlLWJnLWNvbG9yOiMxYjFiMWI7IC0taGVhZGVyLXNlcnZpY2UtYXBwb2ludG1lbnQtdGV4dC1jb2xvci1iZzojMWIxYjFiOyAtLWhlYWRlci1zZXJ2aWNlLWFwcG9pbnRtZW50LXRleHQtY29sb3I6I2ZmZmZmZjsgLS1hZG1pbi1nZW5lcmFsLWFsZXJ0LWJhci10ZXh0LWNvbG9yOiNmZmZmZmY7IC0tdG9wLXByb21vLWJ0bi10eHQtY29sb3I6cmdiKDI1NSwyNTUsMjU1KTsgLS10b3AtcHJvbW8tYnRuLWJnLWNvbG9yOnJnYigyNywyNywyNyk7IC0tbmV3LXZlaGljbGUtY2Fyb3VzZWwtdHh0LWNvbG9yOiMxYjFiMWI7IC0tZGlnaXRhbC1yZXRhaWxpbmctZHJhd2VyLXdpZHRoOiU7IH0gKiB7IGJvcmRlci1jb2xvcjppbmhlcml0OyBib3JkZXItc3R5bGU6c29saWQ7IGJvcmRlci13aWR0aDowOyBmb250LWZhbWlseTppbmhlcml0OyBsaW5lLWhlaWdodDoxLjJlbTsgfSBvbCwgdWwsIG1lbnUgeyBsaXN0LXN0eWxlOm5vbmU7IG1hcmdpbjowOyBwYWRkaW5nOjA7IH0gYSB7IHRleHQtZGVjb3JhdGlvbjpub25lOyBjb2xvcjppbmhlcml0OyB9IGgxLGgyLGgzLGg0LGg1LGg2LCBwIHsgbWFyZ2luOjA7IH0gaDEsaDIsaDMsaDQsaDUsaDZ7IGZvbnQtc2l6ZTppbmhlcml0OyBmb250LXdlaWdodDppbmhlcml0OyB9IGltZyB7IG1heC13aWR0aDoxMDAlOyB9IHRhYmxlIHsgYm9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlOyB9IHRleHRhcmVhIHsgd2hpdGUtc3BhY2U6cmV2ZXJ0OyB9IDp3aGVyZShbaGlkZGVuXSl7IGRpc3BsYXk6bm9uZSAhaW1wb3J0YW50OyB9IDp3aGVyZShbY29udGVudGVkaXRhYmxlXSl7IC1tb3otdXNlci1tb2RpZnk6cmVhZC13cml0ZTsgLXdlYmtpdC11c2VyLW1vZGlmeTpyZWFkLXdyaXRlOyBvdmVyZmxvdy13cmFwOmJyZWFrLXdvcmQ7IGxpbmUtYnJlYWs6YWZ0ZXItd2hpdGUtc3BhY2U7IC13ZWJraXQtbGluZS1icmVhazphZnRlci13aGl0ZS1zcGFjZTsgfSA6d2hlcmUoW2RyYWdnYWJsZT0idHJ1ZSJdKSB7IC13ZWJraXQtdXNlci1kcmFnOmVsZW1lbnQ7IH0gLnJlc3BvbnNpdmUtZWRpdG9yIC5jb250YWluZXItZmx1aWR7IG92ZXJmbG93LXg6aGlkZGVuOyB9IC5yZXNwb25zaXZlLWVkaXRvciAuY29udGFpbmVyLWZsdWlkICogeyBsaW5lLWhlaWdodDppbml0aWFsOyB9IC5ja2VkaXRvcldyYXBwZXJ7IG92ZXJmbG93LXg6aGlkZGVuOyBzY3JvbGxiYXItd2lkdGg6bm9uZTsgfSAqIHsgZm9udC12YXJpYW50LW51bWVyaWM6bGluaW5nLW51bXM7IH0KLyoqIC9jc3MvdjIvbmF2LmNzcyAqKi8KaGVhZGVyLm1vYmlsZS1oZWFkZXJ7IC0tdHh0LWNvbG9yOnZhcigtLW1lbnUtdGV4dC1jb2xvci1tb2IsIHZhcigtLXRhYi10ZXh0LWNvbG9yKSk7IHBvc2l0aW9uOnN0aWNreTsgdG9wOjA7IHdpZHRoOjEwMHZ3OyBoZWlnaHQ6My4ycmVtOyBib3gtc2hhZG93OnJnYmEoMCwgMCwgMCwgMC41KSAwIDAgNXB4IDNweDsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1tZW51LWNvbG9yLW1vYiwgdmFyKC0tdGFiLWNvbG9yKSk7IGNvbG9yOnZhcigtLXR4dC1jb2xvcik7IHotaW5kZXg6MTAwMDsgfSBkaXYubW9iaWxlLWhlYWRlci1zcGFjZXJ7IHBvc2l0aW9uOnJlbGF0aXZlOyB3aWR0aDoxMDB2dzsgaGVpZ2h0OjMuMnJlbTsgZGlzcGxheTpibG9jazsgfSBoZWFkZXIubW9iaWxlLWhlYWRlciA+ICogKyAqIHsgZGlzcGxheTpmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyBhbGlnbi1pdGVtczpjZW50ZXI7IGhlaWdodDoxMDAlOyB9IGhlYWRlci5tb2JpbGUtaGVhZGVyLnRhbGwgPiAqICsgKnsgYm9yZGVyLWxlZnQ6MXB4IHNvbGlkICNkZGQ7IGZsZXg6MSAxIGF1dG87IH0gaGVhZGVyIC5sb2dvLWFjdGlvbiB+ICogeyBtaW4td2lkdGg6Mi41cmVtOyB9IC5oZWFkZXItZGVhbGVyLW5hbWUgeyBjb2xvcjppbmhlcml0OyBmb250LXNpemU6dmFyKC0tZnMtMSk7IC0tZnM6dmFyKC0tZnMtMSk7IH0gaGVhZGVyIGFzaWRleyAtLXR4dC1jb2xvcjp2YXIoLS1tZW51LXRleHQtY29sb3ItbW9iLCB2YXIoLS10YWItdGV4dC1jb2xvcikpOyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjIuOTVyZW07IGxlZnQ6LTE5cmVtOyB3aWR0aDptaW4oODB2dywgMTlyZW0pOyBtaW4taGVpZ2h0OjEwMHZoOyBmb250LXNpemU6dmFyKC0tZnMpOyB0cmFuc2l0aW9uOnRyYW5zZm9ybSAzMDBtcyBlYXNlLWluOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLW1lbnUtY29sb3ItbW9iLCB2YXIoLS10YWItY29sb3IpKTsgY29sb3I6dmFyKC0tbWVudS10ZXh0LWNvbG9yKTsgbWF4LWhlaWdodDoxMDB2aDsgb3ZlcmZsb3c6YXV0bzsgei1pbmRleDoxMDA7IH0gbmF2eyAtLWZzOnZhcigtLWZzMSk7IGZvbnQtc2l6ZTp2YXIoLS1mcyk7IH0gbmF2IC5tZW51LWl0ZW0sIG5hdiAuc3VibWVudS1pdGVtIHsgcGFkZGluZzp2YXIoLS1zKTsgfSBuYXYgLm1lbnUtaXRlbXsgYWxpZ24taXRlbXM6Y2VudGVyOyB9IG5hdiAubWVudS1pdGVtLmludmVyc2UtY29sb3J7IGNvbG9yOnZhcigtLW1lbnUtaG92ZXItdGV4dC1jb2xvcik7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tbWVudS1ob3Zlci1iZy1jb2xvcik7IH0gbmF2IC5zdWJtZW51LWl0ZW17IGJvcmRlci1jb2xvcjp2YXIoLS1ncmF5KTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1tZW51LWNvbG9yLW1vYi1leCwgdmFyKC0tdGFiLWNvbG9yKSk7IGNvbG9yOnZhcigtLW1lbnUtdGV4dC1jb2xvci1tb2ItZXgpOyB9IG5hdiAuc3VibWVudS1pdGVtIHN2Zy5pY29uIHsgZmlsbDp2YXIoLS10YWItdGV4dC1jb2xvci1tb2ItZXgsIHZhcigtLXRhYi10ZXh0LWNvbG9yKSk7IH0gbmF2IC5tZW51LWdyb3VwIHsgYm9yZGVyLXRvcC13aWR0aDp2YXIoLS1ib3JkZXItdGhpbik7IH0gbmF2IC5tZW51LWdyb3VwIH4gLm1lbnUtZ3JvdXAgeyBib3JkZXItdG9wLXdpZHRoOjA7IH0gbmF2IC5tZW51Q29sbHBhc2Ugc3ZneyB0cmFuc2Zvcm06cm90YXRlKDE4MGRlZyk7IH0gI2hvbWVuYXYgbmF2eyAtLXR4dC1jb2xvcjp2YXIoLS10YWItdGV4dC1jb2xvci1tb2IsIHZhcigtLXRhYi10ZXh0LWNvbG9yKSk7IH0gI2hvbWVuYXYgbmF2IC5tZW51LWl0ZW17IGJhY2tncm91bmQ6dmFyKC0tdGFiLWNvbG9yLW1vYiwgdmFyKC0tdGFiLWNvbG9yKSk7IGNvbG9yOnZhcigtLXRhYi10ZXh0LWNvbG9yLW1vYiwgdmFyKC0tdGFiLXRleHQtY29sb3IpKTsgfSAjaG9tZW5hdiBuYXYgLm1lbnUtaXRlbS5pbnZlcnNlLWNvbG9yeyBjb2xvcjp2YXIoLS1tZW51LWhvdmVyLXRleHQtY29sb3IpOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLW1lbnUtaG92ZXItYmctY29sb3IpOyB9ICNob21lbmF2IG5hdiAuc3VibWVudS1pdGVteyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXRhYi1jb2xvci1tb2ItZXgsIHZhcigtLXRhYi1jb2xvcikpOyBjb2xvcjp2YXIoLS10YWItdGV4dC1jb2xvci1tb2ItZXgsIHZhcigtLXRhYi10ZXh0LWNvbG9yKSk7IH0gI2hvbWVuYXYgbmF2IGxpeyBwYWRkaW5nLXRvcDp2YXIoLS1zLTgpOyB9ICNob21lbmF2IG5hdiAubWVudS1pdGVteyBib3JkZXItcmFkaXVzOjAuMjVyZW07IH0gI2hvbWVuYXYgbmF2IC5tZW51LWl0ZW0uTEFOR1VBR0V7IGRpc3BsYXk6bm9uZTsgfSAuYnVyZ2VyLW1lbnUtY29udGFpbmVyeyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAuYnVyZ2VyX3RvcCB7IHRyYW5zZm9ybS1vcmlnaW46MCA1MCU7IH0gLmJ1cmdlcl9ib3R0b20geyB0cmFuc2Zvcm0tb3JpZ2luOjAgNTAlOyB9IC5idXJnZXItbWVudS1idXR0b24gPiBzcGFuIHsgd2lkdGg6MS42cmVtOyBoZWlnaHQ6MC4yNXJlbTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1tZW51LXRleHQtY29sb3ItbW9iKTsgYm9yZGVyLXJhZGl1czowLjI1cmVtOyB0cmFuc2l0aW9uOnRyYW5zZm9ybSAwLjRzIGVhc2U7IHotaW5kZXg6MTAxOyB9ICNibV90b2dnbGU6Y2hlY2tlZCB+IC5idXJnZXItbWVudS1idXR0b24gLmJ1cmdlcl90b3AsICNibV9ib3R0b21fdG9nZ2xlOmNoZWNrZWQgfiAuYnVyZ2VyLW1lbnUtYnV0dG9uIC5idXJnZXJfdG9weyBvcGFjaXR5OjE7IHRyYW5zZm9ybTpyb3RhdGUoNDVkZWcpIHRyYW5zbGF0ZSgwLjFyZW0sIDApOyB9ICNibV90b2dnbGU6Y2hlY2tlZCB+IC5idXJnZXItbWVudS1idXR0b24gLmJ1cmdlcl9taWRkbGUsICNibV9ib3R0b21fdG9nZ2xlOmNoZWNrZWQgfiAuYnVyZ2VyLW1lbnUtYnV0dG9uIC5idXJnZXJfbWlkZGxleyBvcGFjaXR5OjA7IHRyYW5zZm9ybTpyb3RhdGUoMGRlZykgc2NhbGUoMC4yLCAwLjIpOyB9ICNibV90b2dnbGU6Y2hlY2tlZCB+IC5idXJnZXItbWVudS1idXR0b24gLmJ1cmdlcl9ib3R0b20sICNibV9ib3R0b21fdG9nZ2xlOmNoZWNrZWQgfiAuYnVyZ2VyLW1lbnUtYnV0dG9uIC5idXJnZXJfYm90dG9teyBvcGFjaXR5OjE7IHRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKSB0cmFuc2xhdGUoMC4xcmVtLCAwKTsgfSAjYm1fdG9nZ2xlOmNoZWNrZWQgfiAuYnVyZ2VyLW1lbnUtYnV0dG9uIH4gYXNpZGV7IHRyYW5zZm9ybTp0cmFuc2xhdGUoMTlyZW0pOyB9IGxhYmVsW2Zvcj0iYm1fdG9nZ2xlIl17IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MDsgbGVmdDowOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgei1pbmRleDoxMDI7IH0gLnRoaW5MZWZ0IC5oZWFkZXItZGVhbGVyLW5hbWUgeyBmb250LXNpemU6dmFyKC0tZnMwKTsgbWFyZ2luLWxlZnQ6OHB4OyB9IC50aGluTGVmdCAubG9nby1hY3Rpb24gYSB7IGZsZXgtYmFzaXM6MTUlIH0gaGVhZGVyLnRoaW5MZWZ0IGFzaWRlIHsgbGVmdDp1bnNldDsgcmlnaHQ6MDsgdHJhbnNmb3JtOnNjYWxlWCgwKSB0cmFuc2xhdGVYKDE5cmVtKTsgdHJhbnNmb3JtLW9yaWdpbjoxMDAlIDUwJTsgfSAudGhpbkxlZnQgI2JtX3RvZ2dsZTpjaGVja2VkIH4gLmJ1cmdlci1tZW51LWJ1dHRvbiB+IGFzaWRleyB0cmFuc2Zvcm06dW5zZXQ7IH0KLyoqIC9jc3Mvc2tlbGV0b24uY3NzICoqLwouaGlkZU9uUHJlTG9hZCB7IHZpc2liaWxpdHk6aGlkZGVuOyB9IC5yZXZlYWwtbW9kYWwgeyB2aXNpYmlsaXR5OmhpZGRlbjsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDotMTAwMHB4OyB9IC5za2VsZXRvbiB7IGRpc3BsYXk6YmxvY2s7IHBvc2l0aW9uOnJlbGF0aXZlOyBtYXJnaW46MDsgcGFkZGluZzowOyBiYWNrZ3JvdW5kOiNlZWU7IH0gLnNrZWxldG9uOjpiZWZvcmUgeyBkaXNwbGF5OmZsZXg7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyBwb3NpdGlvbjphYnNvbHV0ZTsgei1pbmRleDo0OyBjb250ZW50OiIiOyBmb250LXNpemU6MC43NXJlbTsgbGluZS1oZWlnaHQ6MC43NXJlbTsgY29sb3I6Izg4ODsgYW5pbWF0aW9uOnNrZWxldG9uLWFuaW0gMnMgbGluZWFyIGluZmluaXRlOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyBsZXR0ZXItc3BhY2luZzowLjI1cmVtOyBhbGlnbi1pdGVtczpjZW50ZXI7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gQGtleWZyYW1lcyBza2VsZXRvbi1hbmltIHsgMCUgeyBjb250ZW50OiIiOyB9IDI1JSB7IGNvbnRlbnQ6InwiOyB9IDUwJSB7IGNvbnRlbnQ6Inx8IjsgfSA3NSUgeyBjb250ZW50OiJ8fHwiOyB9IH0gLnNrZWxldG9uIGRpdjpmaXJzdC1jaGlsZCwgLnNrZWxldG9uIHNwYW46Zmlyc3QtY2hpbGQgeyBvcGFjaXR5OjA7IHRyYW5zaXRpb246b3BhY2l0eSAuMzAwczsgfSAuc2tlbGV0b24uc2tlbGV0b24tZGVza3RvcC5za2VsZXRvbi1jb25kLTIgeyBiYWNrZ3JvdW5kOm5vbmU7IH0gLnNrZWxldG9uLnNrZWxldG9uLWRlc2t0b3Auc2tlbGV0b24tY29uZC0yLmZpeGVkIHsgd2lkdGg6aW5oZXJpdCAhaW1wb3J0YW50OyB9IC5za2VsZXRvbi5pcy1sb2FkZWQtbm93IHsgYmFja2dyb3VuZDp1bnNldDsgfSAuc2tlbGV0b24uaXMtbG9hZGVkLW5vdyBkaXY6Zmlyc3QtY2hpbGQsIC5za2VsZXRvbi5pcy1sb2FkZWQtbm93IHNwYW46Zmlyc3QtY2hpbGQgeyBvcGFjaXR5OjE7IH0gLnNrZWxldG9uLmlzLWxvYWRlZC1ub3c6OmJlZm9yZSB7IGNvbnRlbnQ6IiI7IGRpc3BsYXk6bm9uZTsgYW5pbWF0aW9uOnVuc2V0OyB9IC5za2VsZXRvbi5za2VsZXRvbi1kZXNrdG9wLnNrZWxldG9uLWNvbmQtMi5maXhlZC5pcy1sb2FkZWQtbm93ID4gZGl2OmZpcnN0LWNoaWxkIHsgb3BhY2l0eTouNzU7IH0gLnNrZWxldG9uLnNrZWxldG9uLWRlc2t0b3Auc2tlbGV0b24tY29uZC0yLmZpeGVkLmlzLWxvYWRlZC1ub3cgPiBkaXY6Zmlyc3QtY2hpbGQ6aG92ZXIgeyBvcGFjaXR5OjE7IH0KLyoqIC9jc3MvY3NzLmNzcyAqKi8KaHRtbCwgYm9keSwgc3BhbiwgYXBwbGV0LCBvYmplY3QsIGlmcmFtZSwgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgcCwgYmxvY2txdW90ZSwgcHJlLCBhYmJyLCBhY3JvbnltLCBhZGRyZXNzLCBiaWcsIGNpdGUsIGNvZGUsIGRlbCwgZGZuLCBlbSwgZm9udCwgaW1nLCBpbnMsIGtiZCwgcSwgcywgc2FtcCwgc21hbGwsIHN0cmlrZSwgc3Ryb25nLCBzdWIsIHN1cCwgdHQsIHZhciwgYiwgdSwgaSwgY2VudGVyLCBkbCwgZHQsIGRkLCBvbCwgdWwsIGxpLCBmaWVsZHNldCwgZm9ybSwgbGFiZWwsIGxlZ2VuZCwgdGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLCB0aCwgdGQgeyBtYXJnaW46MDsgcGFkZGluZzowOyB9IGh0bWx7IGZvbnQtc2l6ZToxcmVtIDsgfSBib2R5IHsgcGFkZGluZzowOyBtYXJnaW4tbGVmdDowcHg7IG1hcmdpbi10b3A6MDsgbWFyZ2luLXJpZ2h0OjBweDsgbWFyZ2luLWJvdHRvbTowcHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGZvbnQtZmFtaWx5OnZhcigtLWZvbnQtdGV4dCk7IGZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtdGV4dC13ZWlnaHQpOyBiYWNrZ3JvdW5kOiB0b3AgY2VudGVyIG5vLXJlcGVhdDsgYmFja2dyb3VuZC1pbWFnZTp1cmwoJy9pbWFnZXMvYmxhbmsuZ2lmJyk7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tZ2VuZXJhbC1iZy1jb2xvcik7IH0gaW5wdXQsIHRleHRhcmVhLCBzZWxlY3QsIGJ1dHRvbiB7IGZvbnQtZmFtaWx5OnZhcigtLWZvbnQtdGV4dCk7IGZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtdGV4dC13ZWlnaHQpOyB9IC5uYXYgbGkgYS50b3BfbGluaywgLnVwX21lbnUgdWwubmF2IHVsLnN1YiBsaSBhLnN1YnRpdGxlLCAuaW1nX21lbnUudXBfbWVudSB1bC5uYXYgI01haW5NZW51X05FVz51bC5zdWIgbGk+dWwuc3ViPmxpLmhhc1N1YiBsaSBhLCBib2R5IC53cmFwcGVyIC51cF9tZW51IC5uYXZ7IGZvbnQtZmFtaWx5OnZhcigtLWZvbnQtbWVudSk7IGZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtbWVudS13ZWlnaHQpOyB9IGgxeyBmb250LWZhbWlseTp2YXIoLS1mb250LWgxKTsgZm9udC13ZWlnaHQ6dmFyKC0tZm9udC1oMS13ZWlnaHQpOyBjbGVhcjpib3RoOyB9IC5mbi5vcmd7IGZvbnQtZmFtaWx5OnZhcigtLWZvbnQtaDEpOyBmb250LXdlaWdodDp2YXIoLS1mb250LWgxLXdlaWdodCk7IH0gaW5wdXRbdHlwZT1idXR0b25dLCBidXR0b24uanFUcmFuc2Zvcm1CdXR0b24gc3BhbiBzcGFuLCAuYnV0dG9uXzEgYSwgLmJ1dHRvbl8yIGEsIC5idXR0b25fMyBhLCAuYnV0dG9uX3VuZGVyIGEsIC5idXR0b25fY21wX2xlZnQgYSwgLmJ1dHRvbl9jbXBfcmlnaHQgYSwgLmJ1dHRvbl9jbXBfYWN0IGEsIC5wdWxsb3V0cyBhLCAuaWROYXYxIGxpIGEudG9wX2xpbmsxLCAuY3RhX3ByaWNlLmFsdCwgLmN0YV9jcmVkaXQuYWx0LCAuY3RhX3Rlc3REcml2ZSwgLmN0YV9ldmFsLmFsdCwgLmN0YV9zZXJ2aWNlLmFsdCwgLmN0YV9wYXJ0cy5hbHQsIC5jdGFfdGlyZXMuYWx0LCAuY3RhX3N2Y3Byb21vLmFsdCwgLmJveDE1IGgyIGEsIC5ib3gxOSBoMiBhLCAuYm94MjcgYSwgLnZpb3IsIC5idG4tZGVmYXVsdCwgLmJ0bi1zbSwgLmJ0bi1sZyB7IGZvbnQtZmFtaWx5OnZhcigtLWZvbnQtYnV0dG9ucyk7IGZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtYnV0dG9ucy13ZWlnaHQpOyB9IGgyLGgzLGg0LGg1LGg2eyBmb250LWZhbWlseTp2YXIoLS1mb250LWgyKTsgZm9udC13ZWlnaHQ6dmFyKC0tZm9udC1oMi13ZWlnaHQpOyB9IHN0cm9uZ3sgZm9udC13ZWlnaHQ6OTAwICFpbXBvcnRhbnQ7IH0gI21haW5EaXYud3JhcHBlciAudG9wX2JneyBtYXgtaGVpZ2h0OjI1MHB4OyBtaW4taGVpZ2h0OjExNXB4OyB9IC5oZWFkZXItaW1hZ2Utd3JhcHBlciBpbWcuaW1hZ2UtcGFkZGluZyB7IHBhZGRpbmctYm90dG9tOjEwcHg7IH0gLmNrZWRpdG9yV3JhcHBlciBoMiB7IG1hcmdpbi1sZWZ0OjBweCAhaW1wb3J0YW50OyBtYXJnaW4tcmlnaHQ6MHB4ICFpbXBvcnRhbnQ7IG1hcmdpbi10b3A6MTVweCAhaW1wb3J0YW50OyBtYXJnaW4tYm90dG9tOjE1cHggIWltcG9ydGFudDsgfSAuY2tlZGl0b3JXcmFwcGVyIGEgeyBmbG9hdDpub25lICFpbXBvcnRhbnQ7IG1hcmdpbi1sZWZ0OjBweCAhaW1wb3J0YW50OyBmb250LXNpemU6MTAwJSAhaW1wb3J0YW50OyB9IC5ja2VkaXRvcldyYXBwZXIgcCB7IGZsb2F0Om5vbmUgIWltcG9ydGFudDsgfSAuY2tlZGl0b3JXcmFwcGVyIHA6ZW1wdHkgeyBtYXJnaW4tYm90dG9tOjFyZW07IH0gLmNscnsgY2xlYXI6Ym90aDt9IC5mbGVmdHsgZmxvYXQ6bGVmdDsgfSBpbnB1dDppbnZhbGlke2JveC1zaGFkb3c6bm9uZTsgLW1vei1ib3gtc2hhZG93Om5vbmU7fSAuY29uZGl0aW9ucy0tY29udGFpbmVyIHsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpyb3c7IGp1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuOyBtYXJnaW4tYm90dG9tOjhweDsgfSAuY29uZGl0aW9ucy0tY29udGFpbmVyIC5jb25kaXRpb25zIHsgZmxleC1ncm93OjI7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGxpbmUtaGVpZ2h0OjE4cHg7IGNvbG9yOiM3MDcwNzA7IH0gLmNvbmRpdGlvbnNGb290ZXJ7IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXdlaWdodDpub3JtYWw7IGxpbmUtaGVpZ2h0OjE4cHg7IHRleHQtdHJhbnNmb3JtOm5vbmU7IHRleHQtYWxpZ246bGVmdDsgbWFyZ2luLWxlZnQ6NXB4OyBtYXJnaW4tdG9wOjI1cHg7IGNvbG9yOiM3MDcwNzA7IH0gLmNvbmRpdGlvbnMtLWNvbnRhaW5lciBhLCAuY29uZGl0aW9uc0Zvb3RlciBhIHsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgY3Vyc29yOnBvaW50ZXI7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiM3MDcwNzA7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgfSAuZXh0ZW5kZWRQaG9uZVRyaWdnZXIgYXsgY29sb3I6aW5oZXJpdDsgfSAubWFpbkRpdi13cmFwcGVyID4gLmxhbmd1YWdlQmFyLXplcm8geyBtYXJnaW46MDsgaGVpZ2h0OmluaGVyaXQ7IHdpZHRoOjEwMCU7IH0gLmhlYWRlci1zZWN0aW9uIC5sYW5ndWFnZUJhciB7IG1hcmdpbjowIGF1dG8gMi43NXJlbTsgd2lkdGg6aW5oZXJpdDsgfSAuaGVhZGVyLXNlY3Rpb24gLmxhbmd1YWdlQmFyICsgLnBob25lIHsgbWFyZ2luLWJvdHRvbTowLjVyZW07IH0gLmxhbmd1YWdlQmFyIHVsIGE6aG92ZXJ7Zm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzY2NjY2NjsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9IC5sYW5ndWFnZUJhciB1bCBhOnZpc2l0ZWR7cGFkZGluZy1yaWdodDozNXB4OyB3aWR0aDphdXRvOyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojNjY2NjY2OyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyB0ZXh0LWFsaWduOnJpZ2h0O30gLmxhbmd1YWdlQmFyLmxhbmd1YWdlQmFyLXplcm8geyBoZWlnaHQ6MDsgcGFkZGluZzowOyBtYXJnaW46MDsgfSAjbWFpbkRpdi53cmFwcGVyLm5vLWljb25zIHsgcGFkZGluZy10b3A6MC4wMXJlbTsgfSAudG9wX3JvdXsgd2lkdGg6OTYwcHg7IGhlaWdodDo0cHg7IGZsb2F0OmxlZnQ7IH0gLmxvZ297IH0gLmxvZ29Ob1BhZGRpbmcgaW1neyB3aWR0aDoxMDAlO30gLmxhbmd1YWdlQmFyIGEuZGVza3RvcF9sYW5nX2J1dHRvbiwgLmxhbmd1YWdlQmFyIHNwYW4uZGVza3RvcF9sYW5nX2J1dHRvbnsgcG9zaXRpb246cmVsYXRpdmU7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyBmb250LXNpemU6MC43NXJlbSA7IHdpZHRoOjI4cHg7IGhlaWdodDoyNnB4OyBwYWRkaW5nOjA7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdmVydGljYWwtYWxpZ246dG9wOyBib3JkZXI6MXB4IHNvbGlkICNCNkI3Qjk7IGNvbG9yOiNCNkI3Qjk7IGNvbG9yOiMxYjFiMWI7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IH0gLmxhbmd1YWdlQmFyIC5kZXNrdG9wX2xhbmdfYnV0dG9uLmFjdGl2ZSwgLmxhbmd1YWdlQmFyIGEuZGVza3RvcF9sYW5nX2J1dHRvbjpob3ZlcnsgY29sb3I6I2ZmZmZmZjsgY29sb3I6I2ZmZmZmZjsgYmFja2dyb3VuZC1jb2xvcjojQjZCN0I5OyBiYWNrZ3JvdW5kLWNvbG9yOiMxYjFiMWI7IH0gLmxhbmd1YWdlQmFyIHNwYW4uZGVza3RvcF9sYW5nX2J1dHRvbjpudGgtY2hpbGQoZXZlbiksIC5sYW5ndWFnZUJhciBhLmRlc2t0b3BfbGFuZ19idXR0b246bnRoLWNoaWxkKGV2ZW4peyBtYXJnaW4tbGVmdDoycHg7IH0gLmxhbmd1YWdlQmFyIGEuZGVza3RvcF9sYW5nX2J1dHRvbiBzcGFuLmRlc2t0b3BfbGFuZ19idXR0b25fdGV4dCwgLmxhbmd1YWdlQmFyIHNwYW4uZGVza3RvcF9sYW5nX2J1dHRvbiBzcGFuLmRlc2t0b3BfbGFuZ19idXR0b25fdGV4dHsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDo1MCU7IHRyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwgLTUwJSk7IH0gLmxvZ29Ob1BhZGRpbmd7IG1heC13aWR0aDo1MCU7IGZsb2F0OmxlZnQ7IG1hcmdpbi10b3A6LTRweDt9IC52LWNhcmQudG9wX2JnIHsgZGlzcGxheTpmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjsgYWxpZ24taXRlbXM6Y2VudGVyOyBtYXJnaW4tdG9wOjEwcHg7IH0gLnYtY2FyZC50b3BfYmcuLW10MCAuaGVhZGVyLXNlY3Rpb246bnRoLWNoaWxkKDIpIHsgbWFyZ2luLXRvcDo3NHB4OyB9IC5oZWFkZXItc2VjdGlvbiB7IGRpc3BsYXk6ZmxleDsgdmVydGljYWwtYWxpZ246bWlkZGxlOyBqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjsgYWxpZ24taXRlbXM6Y2VudGVyOyB9IC5oZWFkZXItaW1hZ2Utd3JhcHBlciB7IG1pbi1oZWlnaHQ6OTdweDsgfSAuaGVhZGVyLXNlY3Rpb24uaW1hZ2UgeyB3aWR0aDoyNSU7IH0gLmhlYWRlci1zZWN0aW9uLmltYWdlID4gLmhlYWRlci1pbWFnZS13cmFwcGVyIGltZyB7IG1heC1oZWlnaHQ6MjUwcHg7IH0gLmhlYWRlci1zZWN0aW9uID4gZGl2IHsgZGlzcGxheTppbmxpbmUtYmxvY2s7IH0gLmhlYWRlci1zZWN0aW9uIC5waG9uZSB7IHdpZHRoOmF1dG87IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOnZhcigtLWRlYWxlci1hZGRyZXNzLWNvbG9yKTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtYWxpZ246cmlnaHQ7IHBhZGRpbmc6MC41cmVtIDA7IH0gLmhlYWRlci1zZWN0aW9uOm50aC1jaGlsZCgyKS5pbWFnZSB7IHRleHQtYWxpZ246cmlnaHQ7IH0gLmhlYWRlci1zZWN0aW9uIC5waG9uZS5waG9uZV9yaWdodHsgdGV4dC1hbGlnbjpyaWdodDsgfSAuaGVhZGVyLXNlY3Rpb24gLnBob25lLnBob25lX2xlZnQgeyB0ZXh0LWFsaWduOmxlZnQ7IH0gLmhlYWRlci1zZWN0aW9uID4gLnYtY2FyZCB7IH0gLm11bHRpLWFkZHJlc3Mtd3JhcHBlci5leGNlcHRpb25TdHlsZXsgZGlzcGxheTpmbGV4OyB9IC5tdWx0aS1hZGRyZXNzLXdyYXBwZXIuZXhjZXB0aW9uU3R5bGUgLm11bHRpLWFkZHJlc3MtLXBob25leyB3aWR0aDphdXRvOyBhbGlnbi1pdGVtczpjZW50ZXI7IH0gLm11bHRpLWFkZHJlc3Mtd3JhcHBlci5leGNlcHRpb25TdHlsZSAubXVsdGktYWRkcmVzcy0tcGhvbmUgaXsgZm9udC1zaXplOjAuNjI1cmVtIDsgfSAubXVsdGktYWRkcmVzcy13cmFwcGVyLmV4Y2VwdGlvblN0eWxlIGF7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9IC5tdWx0aS1hZGRyZXNzIHsgZGlzcGxheTpmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7IH0gLm11bHRpLWFkZHJlc3MtLXBob25lIHsgd2lkdGg6MTMzcHg7IGRpc3BsYXk6ZmxleDsganVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47IH0gLm11bHRpLWFkZHJlc3MgaSB7IHBhZGRpbmctcmlnaHQ6NXB4OyBwYWRkaW5nLWxlZnQ6MTBweDsgfSAudG9wX2JnIHRhYmxlIHRib2R5IHRkOm50aC1jaGlsZCgyKSAuaGVhZGVyLXNlY3Rpb24geyB3aWR0aDoxMDAlOyB9IC50b3BfYmcuZGl2VGFibGUgLmhlYWRlci1zZWN0aW9uOm50aC1jaGlsZCgyKSB7IHRleHQtYWxpZ246cmlnaHQ7IH0gLnRvcF9iZyB0YWJsZSB0ZCAuaGVhZGVyLXNlY3Rpb24geyBkaXNwbGF5OmlubGluZS1ibG9jazsgfSAucGhvbmUgaDJ7IGZvbnQtc2l6ZToxLjVyZW0gOyBjb2xvcjojNTI1MjUyOyBmb250LXdlaWdodDpib2xkOyB0ZXh0LWRlY29yYXRpb246bm9uZTt9IC5waG9uZSBoMXsgZm9udC1zaXplOjEuODc1cmVtIDsgY29sb3I6IzUyNTI1MjsgZm9udC13ZWlnaHQ6Ym9sZDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7fSAucGhvbmUgZGl2Lm9yZ3sgZm9udC1zaXplOjEuMzc1cmVtIDsgY29sb3I6IzUyNTI1MjsgZm9udC13ZWlnaHQ6Ym9sZDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7fSAucGhvbmVfdGV4dCB7IGNvbG9yOnZhcigtLWRlYWxlci1hZGRyZXNzLWNvbG9yKTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHBhZGRpbmctbGVmdDoycHg7IHBhZGRpbmctdG9wOjJweDt9IC5waG9uZV90ZXh0IGF7IGNvbG9yOnZhcigtLWRlYWxlci1hZGRyZXNzLWNvbG9yKTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB3aWxsLWNoYW5nZTp0cmFuc2Zvcm07IHRyYW5zZm9ybS1vcmlnaW46cmlnaHQgY2VudGVyOyB0cmFuc2l0aW9uOnRyYW5zZm9ybSAwLjNzIGVhc2U7IH0gLnBob25lX3RleHQgYTpob3ZlcnsgdHJhbnNmb3JtOnNjYWxlKDAuOTMpOyBjb2xvcjojMDA1NzljOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSBhLnBob25lLWxpbmsgeyBkaXNwbGF5IDppbmxpbmUtYmxvY2sgIWltcG9ydGFudDsgcGFkZGluZyA6MCAhaW1wb3J0YW50OyBjb2xvciA6aW5oZXJpdDsgdGV4dC1kZWNvcmF0aW9uIDpub25lOyB9IGEucGhvbmUtbGluazpob3ZlciB7IGNvbG9yOmluaGVyaXQ7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9ICNzbGlkZXJ7IHdpZHRoOjk2MHB4OyBtYXJnaW4tbGVmdDowcHg7IGJveC1zaGFkb3c6bm9uZTsgfSAuY2VudGVyZWQge3Bvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjUwJTsgdG9wOjUwJTt9IC51cF9tZW51eyB3aWR0aDo5NjBweDsgaGVpZ2h0OjMxcHg7IHotaW5kZXg6MTExMTsgZmxvYXQ6cmlnaHQ7d2hpdGUtc3BhY2U6bm93cmFwOyB9IC5iYW5uZXJ7IHdpZHRoOjk2MHB4OyBoZWlnaHQ6MzAxcHg7IGZsb2F0OmxlZnQ7IG1hcmdpbi1sZWZ0OjJweDsgbWFyZ2luLWJvdHRvbTo2cHg7IH0gLm1lX3RvcHsgd2lkdGg6OTY3cHg7IGhlaWdodDo4cHg7IGZsb2F0OmxlZnQ7fSAubWVfYmd7IHdpZHRoOjk2N3B4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9tZV9iZ19yb3UucG5nKSBsZWZ0IHRvcCByZXBlYXQteTt9IC5tZV9kZXNje21hcmdpbjowcHg7aGVpZ2h0OmF1dG87Zm9udC1zaXplOjAuODc1cmVtIDsgb3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6NXB4IDE1cHh9IC5tZV9ib3V7IHdpZHRoOjk2N3B4OyBoZWlnaHQ6OXB4OyBmbG9hdDpsZWZ0O30gLm9uZXsgd2lkdGg6MjI1cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW4tbGVmdDoxMHB4OyBtYXJnaW4tdG9wOjhweDt9IC50d297IHdpZHRoOjIyNXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luLWxlZnQ6MTRweDsgbWFyZ2luLXRvcDo4cHg7fSAudGhyZWV7IHdpZHRoOjIyNXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luLWxlZnQ6MTRweDsgbWFyZ2luLXRvcDo4cHg7fSAuZm91cnsgd2lkdGg6MjI1cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW4tbGVmdDo0cHg7IG1hcmdpbi10b3A6NHB4O30gLlZvdXN7IGZvbnQtc2l6ZToxLjA2M3JlbSA7IGNvbG9yOiMxYjFiMWI7IHRleHQtZGVjb3JhdGlvbjpub25lOyBwYWRkaW5nLWJvdHRvbToycHg7fSAuY2xhc3N7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiM1NzU3NTc7IHRleHQtZGVjb3JhdGlvbjpub25lOyBwYWRkaW5nLWJvdHRvbTowcHg7IHBhZGRpbmctdG9wOjZweDt9IC5jbGFzczF7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiM1NzU3NTc7IHRleHQtZGVjb3JhdGlvbjpub25lOyBoZWlnaHQ6MTU3cHg7IG1hcmdpbi10b3A6NnB4O30gLmJvcmRlcntib3JkZXI6MXB4IHNvbGlkICNkM2QzZDM7IHdpZHRoOjIxOHB4O30gLmJveHsgd2lkdGg6NzVweDsgaGVpZ2h0OjczcHg7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nLXRvcDoxMHB4OyBtYXJnaW46MCBhdXRvO30gLmNhe2hlaWdodDoxNDNweDt9IC5ib3gyMjV7IHdpZHRoOjIyNXB4OyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojNTc1NzU3OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZy1ib3R0b206M3B4O30gLmJveDIyNHsgd2lkdGg6MjI1cHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmctYm90dG9tOjZweDt9IC5ib3gyMjN7IHdpZHRoOjIyNXB4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nLXRvcDozcHg7fSAubm9zeyB3aWR0aDo3MTBweDsgaGVpZ2h0OjEwMCU7IG1hcmdpbi10b3A6NXB4OyBmbG9hdDpsZWZ0OyBtYXJnaW4tcmlnaHQ6NXB4O30gLm5vc190b3B7IHdpZHRoOjcxNnB4OyBoZWlnaHQ6OXB4OyBmbG9hdDpsZWZ0O30gLm5vc19iZ3sgd2lkdGg6NzE2cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL25vc19iZy5wbmcpIGxlZnQgdG9wIHJlcGVhdC15O30gLm5vc19ib3V7IHdpZHRoOjcxNnB4OyBoZWlnaHQ6OXB4OyBmbG9hdDpsZWZ0O30gLm5vc190ZXh0e2hlaWdodDozMHB4OyBmb250LXNpemU6MS4xMjVyZW0gOyBjb2xvcjojNTc1NzU3OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7fSAuYXJvd3sgd2lkdGg6Njk1cHg7IGhlaWdodDoxNjBweDsgZmxvYXQ6bGVmdDsgbWFyZ2luLWxlZnQ6NHB4O30gLmNvbnsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzNjM2MzYzt9IC5kZXNjIHttYXgtd2lkdGg6MTAwJTt9IC5kZXNjX2JnIHt3aWR0aDoxMDAlOyBoZWlnaHQ6MjQ4cHg7IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKCIvaW1hZ2VzL25vc19iZy5wbmciKSByZXBlYXQteSBzY3JvbGwgbGVmdCB0b3AgdHJhbnNwYXJlbnQ7fSAuYWRkcnttYXJnaW4tdG9wOjI1cHg7fSAuYWRkcl9taWR7YmFja2dyb3VuZDp1cmwoL2ltYWdlcy9tZV9iZ19yb3UucG5nKSBsZWZ0IHRvcCByZXBlYXQteTt9IC5oaWRkZW57ZGlzcGxheTpub25lICFpbXBvcnRhbnQ7fSAuaG91cnNfcmVtIHsgdGV4dC1hbGlnbjpyaWdodDtsaW5lLWhlaWdodDoxOHB4OyBmbG9hdDpyaWdodDtwYWRkaW5nLXJpZ2h0OjE1cHg7IH0gLmhvdXJzX3JlbSBheyBmb250LXNpemU6MC42ODhyZW0gOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSAjbHt3aWR0aDo2MHB4OyBmbG9hdDpsZWZ0O30gLmRlcnt3aWR0aDo0NjBweDsgaGVpZ2h0OjI1NXB4OyBtYXJnaW4tdG9wOjFweDsgZmxvYXQ6bGVmdDt9IC5kZXJfdG9weyB3aWR0aDo0NjRweDsgaGVpZ2h0OjhweDsgZmxvYXQ6bGVmdDt9IC5kZXJfYmd7IHdpZHRoOjQ0NHB4OyBoZWlnaHQ6MjI2cHg7IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvZGVyX2JnLnBuZykgbGVmdCB0b3AgcmVwZWF0LXk7IHBhZGRpbmc6NnB4IDEwcHggMTBweCAxMHB4O30gLmRlcl9ib3V7IHdpZHRoOjQ2NHB4OyBoZWlnaHQ6OHB4OyBmbG9hdDpsZWZ0O30gLmRlbXt3aWR0aDo0OTVweDsgaGVpZ2h0OjI1NXB4OyBtYXJnaW4tdG9wOjNweDsgZmxvYXQ6bGVmdDsgbWFyZ2luLWxlZnQ6NXB4O21hcmdpbi1ib3R0b206NnB4O30gLnNib3gxeyB3aWR0aDoyNDBweDsgaGVpZ2h0OjEyM3B4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjAgNXB4IDEwcHggNXB4fSAuc2JveDJ7IHdpZHRoOjI0MHB4OyBoZWlnaHQ6MTIzcHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MCA1cHggMTBweCA1cHh9IC5zYm94M3sgd2lkdGg6MjQwcHg7IGhlaWdodDoxMjNweDsgZmxvYXQ6bGVmdDsgcGFkZGluZzowIDVweCAxMHB4IDVweH0gLnNib3g0eyB3aWR0aDoyNDBweDsgaGVpZ2h0OjEyM3B4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjAgNXB4IDEwcHggNXB4fSAuYm90dG9tNGJveGVze2Zsb2F0OmxlZnQ7d2lkdGg6MTAwJTtwYWRkaW5nOjA7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO30gLmJvdHRvbTRib3hlcyAqIHtib3gtc2l6aW5nOmJvcmRlci1ib3g7fSAuYm90dG9tNGJveGVzID4gLmJveDI0NXtmbG9hdDpsZWZ0O3dpZHRoOjI1JTttYXgtd2lkdGg6MjQ1cHg7fSAuYm90dG9tNGJveGVzID4gLmJveDI0MXtmbG9hdDpsZWZ0O21hcmdpbjoxMHB4IDZweDt9IC5ib3R0b200Ym94ZXMgPiAuYm94MjQxOmZpcnN0LWNoaWxke21hcmdpbi1sZWZ0OjBweDt9IC5ib3R0b200Ym94ZXMgPiAuYm94MjQxOmxhc3QtY2hpbGR7bWFyZ2luLXJpZ2h0OjBweDt9IEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDoxMDI0cHgpIHsgLmJvdHRvbTRib3hlcyB0YWJsZSB7IHBhZGRpbmc6MCAxMHB4OyB9IH0gLnNib3hVc2VkeyBmbG9hdDpsZWZ0OyB9IC5zYm94X3RvcHsgd2lkdGg6MjQ3cHg7IGhlaWdodDo1cHg7IGZsb2F0OmxlZnQ7fSAuc2JveF9iZ3sgd2lkdGg6MjQ3cHg7IGhlaWdodDoxMDdweDsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9zYm94X2JnLnBuZykgbGVmdCB0b3AgcmVwZWF0LXk7IGZvbnQtc2l6ZToxLjE4OHJlbSA7IGNvbG9yOiMxOTE5MTk7IHRleHQtYWxpZ246Y2VudGVyO30gLnNib3hfYm91eyB3aWR0aDoyNDdweDsgaGVpZ2h0OjVweDsgZmxvYXQ6bGVmdDt9IC5kYXsgbWFyZ2luLXRvcDoxMnB4O30gLmRhMXsgbWFyZ2luLXRvcDoxMHB4OyBmb250LXNpemU6MS4xODhyZW0gOyBjb2xvcjojMTkxOTE5OyB0ZXh0LWFsaWduOmNlbnRlcjt9IC5kYTEgaDF7IHBhZGRpbmc6MDsgbWFyZ2luOjA7IGZvbnQtc2l6ZToxLjg3NXJlbSA7IGNvbG9yOiMxOTE5MTk7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXdlaWdodDpub3JtYWw7fSAuYWRkbGluZXsgY29sb3I6IzFiMWIxYiFpbXBvcnRhbnQ7IG92ZXJmbG93OmhpZGRlbjsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gI3JldHVyblBvcHVwTmV4dE1vZGVseyBoZWlnaHQ6NDBweCFpbXBvcnRhbnQ7IH0gLmFkZGxpbmU6OmJlZm9yZSwgLmFkZGxpbmU6OmFmdGVyIHsgYmFja2dyb3VuZC1jb2xvcjojMDAwOyBjb250ZW50OiIiOyBkaXNwbGF5OmlubGluZS1ibG9jazsgaGVpZ2h0OjFweDsgcG9zaXRpb246cmVsYXRpdmU7IHZlcnRpY2FsLWFsaWduOm1pZGRsZTsgd2lkdGg6NTAlOyB9IC5hZGRsaW5lOmJlZm9yZSB7IHJpZ2h0OjAuNWVtOyBtYXJnaW4tbGVmdDotNTAlOyB9IC5hZGRsaW5lOmFmdGVyIHsgbGVmdDowLjVlbTsgbWFyZ2luLXJpZ2h0Oi01MCU7IH0gLnNib3gxIGEuY0xpbmssIC5zYm94MiBhLmNMaW5rLCAuc2JveDMgYS5jTGluaywgLnNib3g0IGEuY0xpbmt7IGRpc3BsYXk6YmxvY2s7IGhlaWdodDoxMDAlOyB3aWR0aDoxMDAlOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSAuc2JveDEgYS5jTGluazpob3ZlciwgLnNib3gyIGEuY0xpbms6aG92ZXIsIC5zYm94MyBhLmNMaW5rOmhvdmVyLCAuc2JveDQgYS5jTGluazpob3ZlcnsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0gLmhvbWVwYWdlLS1idXNpbmVzcy1kZXNjcmlwdGlvbiwgLmhvbWVwYWdlLS1idXNpbmVzcy1kZXNjcmlwdGlvbi1jZXJ0LCAuaG9tZXBhZ2UtLWJ1c2luZXNzLWRlc2NyaXB0aW9uIC5ib3JkZXJfYm94IHsgYmFja2dyb3VuZC1jb2xvcjojZmFmYWZhOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IGNvbG9yOiMxYjFiMWI7IGNvbG9yOiM0NjQ2NDY7IH0gLmhvbWVwYWdlLS1idXNpbmVzcy1kZXNjcmlwdGlvbiBhLCAuaG9tZXBhZ2UtLWJ1c2luZXNzLWRlc2NyaXB0aW9uLWNlcnQgYSB7IGNvbG9yOiMxYjFiMWI7IGNvbG9yOiM0NjQ2NDY7IH0gLmhvbWVwYWdlLS1idXNpbmVzcy1kZXNjcmlwdGlvbiAuYm9yZGVyX2JveCwgLmhvbWVwYWdlLS1idXNpbmVzcy1kZXNjcmlwdGlvbi1jZXJ0IC5ib3JkZXJfYm94IHsgYmFja2dyb3VuZC1jb2xvcjppbmhlcml0OyBjb2xvcjppbmhlcml0OyB9IC5ibGFja190ZXh0eyBmb250LXNpemU6MS41cmVtIDsgY29sb3I6IzE5MTkxOTsgbWFyZ2luLWJvdHRvbTo0cHg7fSAuZ3JheV90ZXh0eyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojMTkxOTE5O30gLmJ1dHsgZmxvYXQ6cmlnaHQ7IG1hcmdpbjowcHggMHB4IDBweCAwcHg7fSAubGluZXsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2QyZDJkMjsgbWFyZ2luLXRvcDo1cHg7IG1hcmdpbi1ib3R0b206NXB4O30gLnZpdnsgbWFyZ2luLXRvcDo1cHg7IG1hcmdpbi1sZWZ0OjVweDsgZm9udC1zaXplOjEuNXJlbSA7IGNvbG9yOiNmZmY7IGNvbG9yOiMxYjFiMWI7IHRleHQtYWxpZ246anVzdGlmeTt9IC50d3sgd2lkdGg6MjYwcHg7IGhlaWdodDo0MHB4OyBmbG9hdDpyaWdodDsgbWFyZ2luLXRvcDo1cHg7IHRleHQtYWxpZ246cmlnaHQ7fSAuRU5HTElTSCAudml2e3RleHQtdHJhbnNmb3JtOmNhcGl0YWxpemU7fSAuTWFpbkJveExheWVyIC52aXYgeyBtYXJnaW4tbGVmdDowOyB9IC5zb2NpYWwtc2hhcmluZ3sgd2lkdGg6MTAwJTsgY2xlYXI6Ym90aDsgZmxvYXQ6cmlnaHQ7IG1hcmdpbi10b3A6NXB4OyB9IC5zb2NpYWwtc2hhcmluZyA+IGRpdi5zb2NpYWx7IGZsb2F0OnJpZ2h0OyBwYWRkaW5nLWxlZnQ6NXB4OyB9IC5zb2NpYWwtc2hhcmluZyA+IGRpdi5zb2NpYWw6bGFzdC1jaGlsZHsgcGFkZGluZy1sZWZ0OjA7IH0gLnNvY2lhbC1zaGFyaW5nID4gZGl2LnNvY2lhbDpmaXJzdC1jaGlsZHsgcGFkZGluZy1yaWdodDo1cHg7IH0gLk1haW5Cb3hMYXllciAuc29jaWFsLXNoYXJpbmcgPiBkaXYuc29jaWFsOmZpcnN0LWNoaWxkeyBwYWRkaW5nLXJpZ2h0OjA7IH0gI2Zvb3RlckRpdiAuYWRkLCAjZm9vdGVyRGl2IC5hZGQgYSB7IGNvbG9yOnZhcigtLWZvb3Rlci1pdGVtcy1saW5rLWNvbG9yKTsgfSAjZm9vdGVyRGl2IC5hZGQgLm9yZ3sgY29sb3I6dmFyKC0tZm9vdGVyLWxpbmstdGl0bGUtY29sKTsgfSAucG91cnsgd2lkdGg6NzI1cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0O30gLnBhZ2Vub3t3aWR0aDoyMzZweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbi1sZWZ0OjVweDsgcGFkZGluZzowOyB0ZXh0LXRyYW5zZm9ybTpub25lOyBmb250LXdlaWdodDpub3JtYWw7IG1hcmdpbi10b3A6MTBweDsgfSAucGFnZW5vIHVseyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjAgMCAxNXB4IDA7IHBhZGRpbmc6MDsgd2lkdGg6MjM2cHg7IHRleHQtdHJhbnNmb3JtOm5vbmU7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgfSAucGFnZW5vIHVsIGxpeyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7ZGlzcGxheTpibG9jazsgZmxvYXQ6bm9uZTsgd2lkdGg6MjM2cHg7IHRleHQtdHJhbnNmb3JtOm5vbmU7IGZvbnQtd2VpZ2h0Om5vcm1hbDt9IC5wYWdlbm8gdWwgbGkgYXsgd2lkdGg6MjM3cHg7IG1hcmdpbjowOyBkaXNwbGF5OmJsb2NrOyBmbG9hdDpub25lOyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjp2YXIoLS1mb290ZXItaXRlbXMtbGluay1jb2xvcik7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXdlaWdodDpub3JtYWw7IGxpbmUtaGVpZ2h0OjE4cHg7IHRleHQtdHJhbnNmb3JtOm5vbmU7IHRleHQtYWxpZ246bGVmdDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgfSAucGFnZW5vIHVsIGxpIHNwYW4sIC5wYWdlbm8gdWwgbGkgYS5mdGl0bGV7IHdpZHRoOjIzNnB4OyBtYXJnaW46MDsgZGlzcGxheTpibG9jazsgZmxvYXQ6bm9uZTsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6I2ZmZjsgY29sb3I6dmFyKC0tZm9vdGVyLWxpbmstdGl0bGUtY29sKTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IG1hcmdpbi1ib3R0b206MTBweDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBsaW5lLWhlaWdodDoxOHB4OyB0ZXh0LWFsaWduOmxlZnQ7IH0gLnBhZ2VubyB1bCBsaSBhLmZ0aXRsZTpob3ZlcnsgbWFyZ2luLWJvdHRvbToxMHB4O30gLnBhZ2VubyB1bCBsaSBhOmhvdmVyeyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IGNvbG9yOnZhcigtLWZvb3Rlci1saW5rLXRpdGxlLWNvbCk7IHRleHQtZGVjb3JhdGlvbjpub25lOyBkaXNwbGF5OmJsb2NrOyBsaW5lLWhlaWdodDoxOHB4O30gLnBhZ2VubyBsaSBhLmFjdGl2ZXsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbjowOyBjb2xvcjojOTE5MTkxOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZGlzcGxheTpibG9jazsgbGluZS1oZWlnaHQ6MThweDt9IC5FTkdMSVNIIC5wYWdlbm8gdWwgbGkgYXt0ZXh0LXRyYW5zZm9ybTpjYXBpdGFsaXplO30gLmFkZHsgd2lkdGg6MjMwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojOTE5MTkxOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC13ZWlnaHQ6bm9ybWFsOyBsaW5lLWhlaWdodDoxOHB4OyB0ZXh0LXRyYW5zZm9ybTpub25lOyB0ZXh0LWFsaWduOnJpZ2h0OyB0ZXh0LXRyYW5zZm9ybTpub25lOyBtYXJnaW4tdG9wOjEwcHg7bWFyZ2luLWJvdHRvbToxMHB4O30gLmNvcHl7IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiM5MTkxOTE7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXdlaWdodDpub3JtYWw7IGxpbmUtaGVpZ2h0OjE4cHg7IHRleHQtdHJhbnNmb3JtOm5vbmU7IHRleHQtYWxpZ246bGVmdDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgbWFyZ2luLWxlZnQ6NXB4OyBtYXJnaW4tdG9wOjI1cHg7fSAuY29weSBheyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO2N1cnNvcjpwb2ludGVyOyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojOTE5MTkxOyBmb250LXdlaWdodDpub3JtYWx9IC5jb3B5IGE6aG92ZXJ7IGNvbG9yOiNkNGQ0ZDQ7IGZvbnQtd2VpZ2h0OmJvbGQ7fSAuZm9vdGVyLWxpc3RzIGxpID4gc3BhbiB7IHRleHQtdHJhbnNmb3JtOnZhcigtLXR4dC11cHBlcik7IH0gI2Zvb3RlcldyYXBwZXIgLnYtY2FyZC5hZGQgeyBsaW5lLWhlaWdodDppbml0aWFsOyB9ICNmb290ZXIgLmZvb3Rlci10aXRsZSB7IGZvbnQtc2l6ZTp2YXIoLS1mczQpOyBjb2xvcjp2YXIoLS1mb290ZXItbGluay10aXRsZS1jb2wsIHZhcigtLXdoaXRlKSk7IH0gLkVOR0xJU0ggI2Zvb3RlciAuZm9vdGVyLXRpdGxlIHsgdGV4dC10cmFuc2Zvcm06Y2FwaXRhbGl6ZTsgfSAjZm9vdGVyID4gLmZsZXgtYm94ID4gLmZvb3Rlci1sb2dvX19jb250YWluZXIgeyBtYXJnaW4tdG9wOjA7IG1hcmdpbi1yaWdodDp2YXIoLS1zNSk7IH0gI2Zvb3RlciA+IC5mbGV4LWJveCA+IC5mb290ZXItbG9nb19fY29udGFpbmVyIGltZyB7IG1heC13aWR0aDoxMDAlOyBtYXgtaGVpZ2h0OjE1MHB4OyB9IC5zb2NpYWwtbWVkaWEtaWNvbnMgeyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOnJvdzsganVzdGlmeS1jb250ZW50OmZsZXgtZW5kOyB0ZXh0LWFsaWduOnJpZ2h0OyB9IC5kZWFsZXItYWxpZ24tbGVmdCAuc29jaWFsLW1lZGlhLWljb25zIHsgdGV4dC1hbGlnbjpsZWZ0OyBqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydDsgfSAuc29jaWFsLW1lZGlhLWljb25zIC5zb2NpYWwtaWNvbnMgeyB3aWR0aCA6YXV0bzsgaGVpZ2h0OmF1dG87IG1hcmdpbjowIDRweDsgfSAjZm9vdGVyIGEuc29jaWFsLWxpbmsgPiBzdmcgeyBoZWlnaHQ6MjJweDsgbWFyZ2luLWxlZnQ6M3B4OyB9IGhlYWRlciAuaGVhZGVyLXNvY2lhbCAjc29jaWFsX21lZGlhX2ljb25zX2RpdiA+IGEgPiBzdmcgeyBoZWlnaHQ6MjFweDsgbWFyZ2luLXRvcDo0cHg7IH0gLnNvY2lhbC1tZWRpYS1pY29ucyAuc29jaWFsLWljb25zIC5mYWIgeyBtYXJnaW4tdG9wOjA7IGZvbnQtc2l6ZSA6MS45ZW07IGNvbG9yIDp2YXIoLS1mb290ZXItbGluay10aXRsZS1jb2wpOyB9IC5kaXZTcGFuLmRpdlNwYW4zID4gLmZvb3Rlci1sb2dvX19jb250YWluZXIgeyBtYXJnaW4tdG9wOjFyZW07IHRleHQtYWxpZ246cmlnaHQ7IH0gLmRlYWxlci1hbGlnbi1sZWZ0IC5mb290ZXItbG9nb19fY29udGFpbmVyIHsgdGV4dC1hbGlnbjpsZWZ0OyB9IC5kaXZTcGFuLmRpdlNwYW4zID4gLmZvb3Rlci1sb2dvX19jb250YWluZXIgaW1nIHsgbWF4LXdpZHRoOjE4MHB4OyBtYXgtaGVpZ2h0OjEwMHB4OyB9IEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDoxMDI0cHgpIHsgLmhlYWRlci1zZWN0aW9uIC5waG9uZS5waG9uZV9sZWZ0IHsgcGFkZGluZy1sZWZ0OjEwcHg7IH0gI2Zvb3RlciB7IHBhZGRpbmctbGVmdDoxMHB4OyBwYWRkaW5nLXJpZ2h0OjEwcHg7IH0gfSBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6OTk5cHgpIHsgI01haW5NZW51X1NFQVJDSF9CQVIgeyBkaXNwbGF5Om5vbmU7IH0gLnVwX21lbnUgdWwubmF2ID4gbGkuZmlyc3RNZW51IHsgcGFkZGluZy1sZWZ0OjEwcHg7IH0gLnVwX21lbnUgdWwubmF2ID4gbGk6bnRoLW9mLXR5cGUoMikgeyBwYWRkaW5nLXJpZ2h0OjEwcHg7IH0gLnVwX21lbnUgdWwubmF2ID4gbGk6bnRoLW9mLXR5cGUoMikgPiB1bC5zdWIgeyByaWdodDoxMHB4OyB9IC5sYW5ndWFnZUJhciBkaXY6Zmlyc3Qtb2YtdHlwZSB7IG1hcmdpbi1yaWdodDoxMHB4OyB9IC5tZW51NyAuZmluYW5jZS1tZW51LWZyZWVjcmVkaXQuY2VudGVyIHsgcmlnaHQ6LTE2MHB4ICFpbXBvcnRhbnQ7IGxlZnQ6YXV0bzsgfSAubWVudTggLmZpbmFuY2UtbWVudS1mcmVlY3JlZGl0LmNlbnRlciB7IHJpZ2h0Oi0xNjBweCAhaW1wb3J0YW50OyBsZWZ0OmF1dG87IH0gLm1lbnU1IC5maW5hbmNlLW1lbnUtZnJlZWNyZWRpdC5jZW50ZXIgeyByaWdodDotMzAwcHggIWltcG9ydGFudDsgbGVmdDphdXRvOyB9IH0gLmRpdlNwYW4ucGFnZW5vIHsgbWFyZ2luLWxlZnQ6MDsgfSAuZGl2U3Bhbi5wYWdlbm8gdWwgbGkgc3BhbiwgLmRpdlNwYW4ucGFnZW5vIHVsIGxpIGEuZnRpdGxlIHsgZm9udC1zaXplOjAuOTM4cmVtIDsgbWF4LXdpZHRoOjIyNXB4OyB9IC5kaXZTcGFuLnBhZ2VubyB1bCBsaSBhIHsgZm9udC1zaXplOjAuODc1cmVtIDsgfSAuYWRyIHsgbGluZS1oZWlnaHQ6MS4ycmVtOyBtYXJnaW46MC41cmVtIDA7IH0gI2Zvb3Rlci5kZWFsZXItcG9zaXRpb24tbGVmdCAuZm9vdGVyLXRpdGxlX19jb250YWluZXIgeyBtYXJnaW4tYm90dG9tOjJyZW07IH0gI2Zvb3Rlci5kZWFsZXItcG9zaXRpb24tbGVmdCAuZGl2U3BhbjMgeyBmbG9hdDpsZWZ0OyBtYXJnaW4tdG9wOjE1cHg7IHBhZGRpbmctcmlnaHQ6MzBweDsgdGV4dC1hbGlnbjpsZWZ0OyB9ICNmb290ZXIuZGVhbGVyLXBvc2l0aW9uLWxlZnQgLmRpdlNwYW45IHsgZmxvYXQ6cmlnaHQ7IH0gI2Zvb3Rlci5kZWFsZXItcG9zaXRpb24tbGVmdCAuc29jaWFsLXNoYXJpbmcgeyBmbG9hdDp1bnNldDsgY2xlYXI6dW5zZXQ7IG1hcmdpbjowOyB9ICNmb290ZXIuZGVhbGVyLXBvc2l0aW9uLWxlZnQgLnNvY2lhbCB7IGZsb2F0OmxlZnQ7IH0gI2Zvb3Rlci5kZWFsZXItcG9zaXRpb24tcmlnaHQuZGVhbGVyLWFsaWduLWxlZnQgLnNvY2lhbC1zaGFyaW5nIHsgd2lkdGg6MjUlOyBmbG9hdDpsZWZ0OyBwYWRkaW5nLWxlZnQ6NzUlOyB9ICNmb290ZXIuZGVhbGVyLXBvc2l0aW9uLXJpZ2h0LmRlYWxlci1hbGlnbi1sZWZ0IC5zb2NpYWwgeyBmbG9hdDpsZWZ0OyBtYXJnaW4tbGVmdDoxcmVtOyB9ICNmb290ZXIuZGVhbGVyLXBvc2l0aW9uLXJpZ2h0LmRlYWxlci1hbGlnbi1sZWZ0IC5zb2NpYWw6Zmlyc3QtY2hpbGQgeyBtYXJnaW46MDsgcGFkZGluZzowOyB9ICNmb290ZXIgLmljb24tdGV4dHsgbWFyZ2luLWJvdHRvbTouNHJlbTsgfSAjZm9vdGVyIC5pY29uLXRleHQgc3Bhbnsgd2lkdGg6MjBweDsgcGFkZGluZzowICFpbXBvcnRhbnQ7IH0gI2Zvb3RlciAuZm4ub3JnIHsgbGluZS1oZWlnaHQ6Mi4wNjI1cmVtOyB9IC5zbWFsbHBpY19ib3h7d2lkdGg6MzI5cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46MDt9IC5zbWFsbHBpYzQze3dpZHRoOjQzcHg7IGhlaWdodDozMXB4OyBmbG9hdDpsZWZ0OyBtYXJnaW46MCA1cHggMCAwOyBib3JkZXI6MnB4IHNvbGlkICNGRkZGRkY7fSAuZGV0YWlsc3t3aWR0aDo4MXB4OyBoZWlnaHQ6MzBweDsgZGlzcGxheTpibG9jazsgfSBhLmRldGFpbHN7d2lkdGg6ODFweDsgaGVpZ2h0OjMwcHg7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvZGV0YWlscy5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDt9IGE6aG92ZXIuZGV0YWlsc3t3aWR0aDo4MXB4OyBoZWlnaHQ6MzBweDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9kZXRhaWxzLnBuZykgbGVmdCAtMzJweCBuby1yZXBlYXQ7fSAuYmlnX3BpY2JveHttaW4taGVpZ2h0OjExMHB4O3dpZHRoOjE0NnB4O30gLmJpZ19waWNib3ggaW1neyBkaXNwbGF5OmJsb2NrOyB9IC5waWNib3hfdmlkZW9idG5fZW4sIC5waWNib3hfdmlkZW9idG5fZnIge2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjQ1cHg7fSAucGljYm94X3ZpZGVvYnRuX2VuIHtiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy92aWRlby1idG4tdGh1bWJfZW4ucG5nJykgbm8tcmVwZWF0IHNjcm9sbCAwIDAgLyAxMDAlIGF1dG8gdHJhbnNwYXJlbnQ7fSAucGljYm94X3ZpZGVvYnRuX2ZyIHtiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy92aWRlby1idG4tdGh1bWJfZnIucG5nJykgbm8tcmVwZWF0IHNjcm9sbCAwIDAgLyAxMDAlIGF1dG8gdHJhbnNwYXJlbnQ7fSAucGljYm94X3ZpZGVvYnRuX2VuOmhvdmVyIHtiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy92aWRlby1idG4tdGh1bWJfZW5faG92ZXIucG5nJykgbm8tcmVwZWF0IHNjcm9sbCAwIDAgLyAxMDAlIGF1dG8gdHJhbnNwYXJlbnQ7fSAucGljYm94X3ZpZGVvYnRuX2ZyOmhvdmVyIHtiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy92aWRlby1idG4tdGh1bWJfZnJfaG92ZXIucG5nJykgbm8tcmVwZWF0IHNjcm9sbCAwIDAgLyAxMDAlIGF1dG8gdHJhbnNwYXJlbnQ7fSAuYmlnX3BpY2JveF93cmFwcGVyIHsgd2lkdGg6MTQ2cHg7IGZsb2F0OmxlZnQ7IG1hcmdpbjowIDEwcHggMHB4IDIxcHg7IH0gLnRleHRfdGl0bGUgYXsgZGlzcGxheTpibG9jazt0ZXh0LWRlY29yYXRpb246bm9uZTsgd2lkdGg6MzI5cHg7IGhlaWdodDphdXRvOyBtYXJnaW46MDsgcGFkZGluZy1ib3R0b206NXB4OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojNDE0MTQxOyBmb250LXdlaWdodDpib2xkO30gLnRleHRfdGl0bGUye3dpZHRoOjMyOXB4OyBoZWlnaHQ6MzJweDsgZmxvYXQ6bGVmdDsgbWFyZ2luOjAgOyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojNDE0MTQxO30gLnNvbGRfY2FyX25vdGV7YmFja2dyb3VuZC1jb2xvcjojMUUxRTFFOyBib3JkZXItcmFkaXVzOjVweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjVweDsgY29sb3I6I0ZGRjsgd2lkdGg6MTAwJTsgcGFkZGluZzoxMHB4IDA7IHRleHQtYWxpZ246Y2VudGVyOyBtYXJnaW4tdG9wOjE1cHg7fSAuc29sZF9jYXJfbm90ZSBhIHtjb2xvcjojRkZGO30gLnNvbGRfY2FyX25vdGUgYTpob3ZlciB7Y29sb3I6I0JCQjt9IC50ZXh0X3RpdGxlM3t3aWR0aDozMjlweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbjowIDsgcGFkZGluZy1ib3R0b206N3B4OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojNDg0ODQ4O30gLnRleHRfYm94Mnt3aWR0aDozMjlweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbjowIDBweCAwcHggMHB4OyB9IC5tYWluX3BpY2JveHt3aWR0aDo2NzFweDsgbWluLWhlaWdodDoxNzBweDsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9saW5lLnBuZykgbGVmdCBib3R0b20gcmVwZWF0LXg7IGJhY2tncm91bmQtcG9zaXRpb246Ym90dG9tOyBwYWRkaW5nOjA7IG1hcmdpbjowIDt9IC5ib3gyX2RldGFpbHNfZm9vdGVyMnt3aWR0aDo2ODFweDsgaGVpZ2h0OjE1cHg7IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvYm94X2Zvb3Rlci5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDt9IC5ib3gyX2RldGFpbHNfbWlkRXh7d2lkdGg6MTAwJTsgaGVpZ2h0OmF1dG87IGJhY2tncm91bmQ6bm9uZTsgcGFkZGluZzowIDBweDtoZWlnaHQ6ODVweDt9IC5ib3gyX2RldGFpbHNfdGV4dCBzcGFueyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC1zaXplOjEuMTI1cmVtIDsgY29sb3I6I0ZGRkZGRjsgZm9udC13ZWlnaHQ6Ym9sZDt9IC5ib3gyX2RldGFpbHNfZm9vdGVyMjJ7d2lkdGg6OTcxcHg7IGhlaWdodDoxNXB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2JveF9mb290ZXIucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOjk3MXB4IGF1dG87fSAuYm94MTcwe3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjY3MXB4OyBtaW4taGVpZ2h0OjE3MHB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2xpbmUucG5nKSBsZWZ0IGJvdHRvbSBuby1yZXBlYXQ7IGJhY2tncm91bmQtcG9zaXRpb246Ym90dG9tOyBwYWRkaW5nOjA7IG1hcmdpbjowIDBweCAxMHB4IDA7fSAuY3VzdG9tQm94QmFzaWN7IHdpZHRoOjI0MXB4OyBoZWlnaHQ6MTE2cHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6NXB4IDAgMCAwOyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmxlZnQgdG9wOyBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7IGJhY2tncm91bmQtc2l6ZToyNDFweCAxMjFweDsgZm9udC1zaXplOjEuMTg4cmVtIDsgY29sb3I6IzE5MTkxOTsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgY3Vyc29yOnBvaW50ZXI7IH0gLmN1c3RvbUJveEJhc2ljOmhvdmVyeyBjb2xvcjojZmZmOyB9IC5jdXN0b201IHsgYmFja2dyb3VuZC1pbWFnZTp1cmwoL2ltYWdlcy9ib3gyMl9ob3Zlci5wbmcpOyB9IC5jdXN0b201NSB7IGJhY2tncm91bmQtaW1hZ2U6dXJsKC9pbWFnZXMvYm94MjIucG5nKTsgfSAuY3VzdG9tNjY1IHsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9ib3gyM19ob3Zlci5wbmcpOyB9IC5jdXN0b202NjU1IHsgYmFja2dyb3VuZC1pbWFnZTp1cmwoL2ltYWdlcy9ib3gyMy5wbmcpOyB9IC5jdXN0b202NzUgeyBiYWNrZ3JvdW5kLWltYWdlOnVybCgvaW1hZ2VzL2JveDI3LnBuZyk7IH0gLmN1c3RvbTY3NTUgeyBiYWNrZ3JvdW5kLWltYWdlOnVybCgvaW1hZ2VzL2JveDI3X2hvdmVyLnBuZyk7IH0gLmN1c3RvbTY4NSB7IGJhY2tncm91bmQtaW1hZ2U6dXJsKC9pbWFnZXMvYm94MjgucG5nKTsgfSAuY3VzdG9tNjg1NSB7IGJhY2tncm91bmQtaW1hZ2U6dXJsKC9pbWFnZXMvYm94MjhfaG92ZXIucG5nKTsgfSAuaW1hZ2VfcmliYm9uIHsgcG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6LTVweDsgdG9wOi00cHg7IHotaW5kZXg6MTsgb3ZlcmZsb3c6aGlkZGVuOyB3aWR0aDoxMTJweDsgaGVpZ2h0OjExMnB4OyB0ZXh0LWFsaWduOnJpZ2h0OyB9IC5pbWFnZV9yaWJib24gc3BhbiB7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNmZmZmZmY7IHRleHQtYWxpZ246Y2VudGVyOyBsaW5lLWhlaWdodDoyOHB4OyB0cmFuc2Zvcm06cm90YXRlKC00NWRlZyk7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpOyB3aWR0aDoxNDhweDsgZGlzcGxheTpibG9jazsgYmFja2dyb3VuZDojZTMxNzNlOyBib3gtc2hhZG93OjAgM3B4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDEpOyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjMwcHg7IGxlZnQ6LTMwcHg7IH0gLmltYWdlX3JpYmJvbiBzcGFuOjpiZWZvcmUgeyBjb250ZW50OiIiOyBwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDowcHg7IHRvcDoxMDAlOyB6LWluZGV4Oi0xOyBib3JkZXItbGVmdDozcHggc29saWQgI2UzMTczZTsgYm9yZGVyLXJpZ2h0OjNweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLWJvdHRvbTozcHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci10b3A6M3B4IHNvbGlkICNlMzE3M2U7IH0gLmltYWdlX3JpYmJvbiBzcGFuOjphZnRlciB7IGNvbnRlbnQ6IiI7IHBvc2l0aW9uOmFic29sdXRlOyByaWdodDowcHg7IHRvcDoxMDAlOyB6LWluZGV4Oi0xOyBib3JkZXItbGVmdDozcHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1yaWdodDozcHggc29saWQgI2UzMTczZTsgYm9yZGVyLWJvdHRvbTozcHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci10b3A6M3B4IHNvbGlkICNlMzE3M2U7IH0gLmltYWdlX3JpYmJvbl92ZHAgeyBwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDotNXB4OyB0b3A6LTZweDsgb3ZlcmZsb3c6aGlkZGVuOyB3aWR0aDoxOTRweDsgaGVpZ2h0OjE5NHB4OyB0ZXh0LWFsaWduOnJpZ2h0OyB6LWluZGV4OjQwOyB9IC5pbWFnZV9yaWJib25fdmRwIHNwYW4geyBmb250LXNpemU6MS4wNjNyZW0gOyBjb2xvcjojZmZmZmZmOyB0ZXh0LWFsaWduOmNlbnRlcjsgbGluZS1oZWlnaHQ6MzZweDsgdHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpOyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKTsgd2lkdGg6MjczcHg7IGRpc3BsYXk6YmxvY2s7IGJhY2tncm91bmQ6I2UzMTczZTsgYm94LXNoYWRvdzowIDNweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAxKTsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDo2N3B4OyBsZWZ0Oi01MXB4OyB9IC5pbWFnZV9yaWJib25fdmRwIHNwYW46OmJlZm9yZSB7IGNvbnRlbnQ6IiI7IHBvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjBweDsgdG9wOjEwMCU7IHotaW5kZXg6LTE7IGJvcmRlci1sZWZ0OjNweCBzb2xpZCAjMWIxYjFiOzsgYm9yZGVyLXJpZ2h0OjNweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLWJvdHRvbTozcHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci10b3A6M3B4IHNvbGlkICMxYjFiMWI7OyB9IC5pbWFnZV9yaWJib25fdmRwIHNwYW46OmFmdGVyIHsgY29udGVudDoiIjsgcG9zaXRpb246YWJzb2x1dGU7IHJpZ2h0OjBweDsgdG9wOjEwMCU7IHotaW5kZXg6LTE7IGJvcmRlci1sZWZ0OjNweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXJpZ2h0OjNweCBzb2xpZCAjMWIxYjFiOzsgYm9yZGVyLWJvdHRvbTozcHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci10b3A6M3B4IHNvbGlkICMxYjFiMWI7OyB9IC5yaWJib24tY29udGFpbmVyIHsgd2lkdGggOjMwMHB4OyBoZWlnaHQgOjMwMHB4OyBvdmVyZmxvdyA6aGlkZGVuOyBwb3NpdGlvbiA6YWJzb2x1dGU7IHRvcCA6MDsgbGVmdCA6MDsgfSAucmliYm9uLWNvbnRhaW5lciAuY29ybmVyLXJpYmJvbiB7IHotaW5kZXggOjU1NTsgbWFyZ2luIDowOyBwYWRkaW5nIDowLjVyZW0gMCAhaW1wb3J0YW50OyBib3gtc2hhZG93IDowIDNweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAxKTsgZm9udC1zaXplIDoxN3B4OyBsaW5lLWhlaWdodCA6MjNweDsgdGV4dC1hbGlnbiA6Y2VudGVyOyBwb3NpdGlvbiA6YWJzb2x1dGU7IHRvcCA6MDsgbGVmdCA6MDsgdHJhbnNmb3JtIDp0cmFuc2xhdGVYKC0zMCUpIHRyYW5zbGF0ZVkoMCUpIHJvdGF0ZSgtNDVkZWcpOyB0cmFuc2Zvcm0tb3JpZ2luIDp0b3AgcmlnaHQ7IGJhY2tncm91bmQgOiNlMzE3M2U7IGNvbG9yIDojZmZmZmZmOyB9IC5yaWJib24tY29udGFpbmVyIC5jb3JuZXItcmliYm9uOmJlZm9yZSwgLnJpYmJvbi1jb250YWluZXIgLmNvcm5lci1yaWJib246YWZ0ZXIgeyBjb250ZW50IDoiIjsgcG9zaXRpb24gOmFic29sdXRlOyB0b3AgOjA7IG1hcmdpbiA6MCAtMXB4OyB3aWR0aCA6MTAwJTsgaGVpZ2h0IDoxMDAlOyBiYWNrZ3JvdW5kIDojZTMxNzNlOyB9IC5yaWJib24tY29udGFpbmVyIC5jb3JuZXItcmliYm9uOmJlZm9yZSB7IGxlZnQ6MTAwJTsgfSAucmliYm9uLWNvbnRhaW5lciAuY29ybmVyLXJpYmJvbjphZnRlciB7IHJpZ2h0OjEwMCU7IH0gLnNlYXJjaHJpZ2h0IHsgd2lkdGg6MjgwcHg7IGhlaWdodDoxMTZweDsgcGFkZGluZzo1cHggMCAwIDA7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvcmlnaHQtc2VhcmNoLWJveC5wbmcpIGxlZnQgdG9wIHJlcGVhdC14OyBmb250LXNpemU6MS4xODhyZW0gOyBjb2xvcjojMTkxOTE5OyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC13ZWlnaHQ6bm9ybWFsO2N1cnNvcjpwb2ludGVyOyB9IC5zZWFyY2hyaWdodGhvdmVyIHsgd2lkdGg6MjgwcHg7IGhlaWdodDoxMTZweDsgcGFkZGluZzo1cHggMCAwIDA7IG1hcmdpbjowIDAgMCAwOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3JpZ2h0LXNlYXJjaC1ib3gtaG92ZXIucG5nKSBsZWZ0IHRvcCByZXBlYXQteDsgZm9udC1zaXplOjEuMTg4cmVtIDsgY29sb3I6I0ZGRkZGRjsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgY3Vyc29yOnBvaW50ZXI7IH0gLnNlYXJjaHJpZ2h0WFhYIHsgd2lkdGg6MjgwcHg7IGhlaWdodDoxMTZweDsgcGFkZGluZzo1cHggMCAwIDA7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvcmlnaHQtc2VhcmNoLWJveC5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdCAjZmYwMDAwOyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGRkZGOyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC13ZWlnaHQ6Ym9sZDtjdXJzb3I6cG9pbnRlcjsgYm9yZGVyLXJhZGl1czo4cHg7IC1tb3otYm9yZGVyLXJhZGl1czo4cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo4cHg7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSAuc2VhcmNocmlnaHRob3ZlclhYWCB7IHdpZHRoOjI4MHB4OyBoZWlnaHQ6MTE2cHg7IHBhZGRpbmc6NXB4IDAgMCAwOyBtYXJnaW46MCAwIDAgMDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9yaWdodC1zZWFyY2gtYm94LWhvdmVyLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0ICNmZjAwMDA7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNGRkZGRkY7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXdlaWdodDpib2xkOyBjdXJzb3I6cG9pbnRlcjsgYm9yZGVyLXJhZGl1czo4cHg7IC1tb3otYm9yZGVyLXJhZGl1czo4cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo4cHg7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSAuc2VhcmNocmlnaHQtdGV4dHsgbWFyZ2luLWxlZnQ6MTAwcHg7IHRleHQtYWxpZ246bGVmdDsgd2lkdGg6NjAlOyB9IC5zZWFyY2hyaWdodC10ZXh0IHB7IG1hcmdpbjoxNXB4IDAgMDsgfSAucGFnZW5vMntoZWlnaHQ6MjRweDsgfSAucGFnZW5vMiB1bHsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbjowOyBwYWRkaW5nOjA7IHRleHQtdHJhbnNmb3JtOm5vbmU7IH0gLnBhZ2VubzIgdWwgbGl7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBtYXJnaW46MDsgZGlzcGxheTppbmxpbmU7fSAucGFnZW5vMiB1bCBsaSBheyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMzMjMyMzI7IHRleHQtZGVjb3JhdGlvbjpub25lOyBwYWRkaW5nOjAgN3B4OyBtYXJnaW4tcmlnaHQ6MnB4OyBmb250LXdlaWdodDpib2xkOyBsaW5lLWhlaWdodDoyNHB4OyB0ZXh0LXRyYW5zZm9ybTpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC10cmFuc2Zvcm06bm9uZTsgYmFja2dyb3VuZDojYjNiNGI1OyBmbG9hdDpsZWZ0OyAtbW96LWJvcmRlci1yYWRpdXM6NHB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NHB4OyBib3JkZXItcmFkaXVzOjRweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6NHB4O30gLnBhZ2VubzIgdWwgbGkgYTpob3ZlcnsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbjowOyBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZzowIDdweDsgbWFyZ2luLXJpZ2h0OjJweDsgZm9udC13ZWlnaHQ6Ym9sZDsgbGluZS1oZWlnaHQ6MjRweDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IHRleHQtdHJhbnNmb3JtOm5vbmU7IGJhY2tncm91bmQ6IzI4MjgyODsgZmxvYXQ6bGVmdDsgLW1vei1ib3JkZXItcmFkaXVzOjRweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjRweDsgYm9yZGVyLXJhZGl1czo0cHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjRweDt9IC5wYWdlbm8yIGxpIGEuYWN0aXZleyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNGRkZGRkY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBwYWRkaW5nOjAgN3B4OyBtYXJnaW4tcmlnaHQ6MnB4OyBmb250LXdlaWdodDpib2xkOyBsaW5lLWhlaWdodDoyNHB4OyB0ZXh0LXRyYW5zZm9ybTpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC10cmFuc2Zvcm06bm9uZTsgYmFja2dyb3VuZDojMjgyODI4OyBmbG9hdDpsZWZ0OyAtbW96LWJvcmRlci1yYWRpdXM6NHB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NHB4OyBib3JkZXItcmFkaXVzOjRweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6NHB4O30gLm1haW5fYm94e3dpZHRoOjk2MHB4OyBtYXJnaW46MCBhdXRvO30gLm1haW5fbGVmdF9ib3h7d2lkdGg6NjcwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0O3BhZGRpbmctcmlnaHQ6MTBweDt9IC5tYWluX2xlZnRfYm94IHVse3BhZGRpbmc6MHB4O30gLmJveF9taWRfcm91bmQgeyBiYWNrZ3JvdW5kLWNvbG9yOnJnYigyNTUsMjU1LDI1NSk7IC1tcy1maWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MTAwKTsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LDEpOyBib3JkZXItcmFkaXVzOjVweDsgYm94LXNoYWRvdzpub25lOyBmbG9hdDpsZWZ0OyBoZWlnaHQ6YXV0bzsgbWFyZ2luLXRvcDoxMHB4OyB9IC5ib3hfdG9wX3JvdW5kIHsgZGlzcGxheTpub25lOyB9IC5ib3gyX2RldGFpbHNfZm9vdGVyMiB7IGRpc3BsYXk6bm9uZTsgfSAuZGV0YWlsc19ib3ggaW1nLnZpcHsgbWFyZ2luLXRvcDotNDhweDsgd2lkdGg6MTQwcHg7IGJvcmRlcjoxcHg7IGJvcmRlci1yYWRpdXM6NHB4OyB9IC5ib3hfdG9wX3JvdW5kMnt3aWR0aDo5NzFweDsgaGVpZ2h0OjE1cHg7IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvYm94X3RvcC5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDtiYWNrZ3JvdW5kLXNpemU6OTcxcHggYXV0bzsgbWFyZ2luLXRvcDo1cHg7fSAuYm94X21pZF9yb3VuZDJ7d2lkdGg6OTcxcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2JveF9taWQucG5nKSBsZWZ0IHRvcCByZXBlYXQteTtiYWNrZ3JvdW5kLXNpemU6OTcxcHggYXV0bzsgcGFkZGluZzowIDVweDt9IC5wYWdlX25hbWV7d2lkdGg6NjUwcHg7IGhlaWdodDozMHB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3Noby5wbmcpIGNlbnRlciBib3R0b20gbm8tcmVwZWF0OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmJvdHRvbTsgcGFkZGluZzowIDBweCAwcHggMjFweDsgbGluZS1oZWlnaHQ6MzBweDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzQxNDE0MTt9IC5wYWdlX25hbWUgYXsgbGluZS1oZWlnaHQ6MzBweDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzQxNDE0MTsgdGV4dC10cmFuc2Zvcm06bm9uZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7fSAucGFnZV9uYW1lIGE6aG92ZXJ7IGxpbmUtaGVpZ2h0OjMwcHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwMDU4OWM7IHRleHQtdHJhbnNmb3JtOm5vbmU7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fSB0YWJsZS52ZWhpY2xlTGlzdFRhYmxlIGF7ZGlzcGxheTp0YWJsZS1jZWxsOyB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bGluZS1oZWlnaHQ6MS4yO30gdGFibGUudmVoaWNsZUxpc3RUYWJsZSBhOmhvdmVye2Rpc3BsYXk6dGFibGUtY2VsbDsgdmVydGljYWwtYWxpZ246bWlkZGxlO2xpbmUtaGVpZ2h0OjEuMjt9IC5Qb3JzY2hlMnt3aWR0aDoxMDAlO2hlaWdodDozMXB4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjAgMHB4IDIwcHggMjFweDsgbWFyZ2luOjE1cHggMCAyNXB4IDA7IGxpbmUtaGVpZ2h0OjMxcHg7IGZvbnQtc2l6ZToxLjg3NXJlbSA7IGNvbG9yOiM0MTQxNDE7ZGlzcGxheTppbmxpbmV9IC5Qb3JzY2hlMiBoMXtmb250LXdlaWdodDpub3JtYWw7IGZvbnQtc2l6ZToxLjg3NXJlbSA7IGNvbG9yOiM0MTQxNDE7fSAuVHJpZXJwYXJ7IGZvbnQtc2l6ZTowLjc1cmVtIDsgY29sb3I6IzVCNjk5QzsgZm9udC13ZWlnaHQ6bm9ybWFsO3BhZGRpbmctbGVmdDo1cHg7fSAuc2VsZWN0ZWRfYm94Mnt3aWR0aDoxNzVweDsgaGVpZ2h0OjMxcHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MCAwcHggMHB4IDBweDsgbWFyZ2luOjE1cHggMDsgbGluZS1oZWlnaHQ6MzFweDsgZm9udC1zaXplOjEuODc1cmVtIDsgY29sb3I6IzQxNDE0MTt9IC5zZWxlY3RlZF9vcmRlcmJ5e3dpZHRoOjEzNXB4OyBmbG9hdDpyaWdodDsgcGFkZGluZzowIDBweCAwcHggMHB4OyBtYXJnaW46MTBweCAxMHB4IDBweCAwcHg7IGZvbnQtc2l6ZToxLjg3NXJlbSA7IGNvbG9yOiM0MTQxNDE7fSAucHJpeHt3aWR0aDo3OXB4OyBoZWlnaHQ6NzhweDsgZmxvYXQ6bGVmdDsgcG9zaXRpb246YWJzb2x1dGU7IHotaW5kZXg6MTE7IG1hcmdpbi10b3A6LTRweDsgbWFyZ2luLWxlZnQ6LTRweDsgdG9wOjBweDt9IC5wYWdlbm81e3dpZHRoOjEwMCU7IGhlaWdodDoyNHB4OyBtYXJnaW46MzBweCAwIDIwcHggMHB4OyBwYWRkaW5nOjA7IGZsb2F0OmxlZnQgfSAucGFnZW5vNnt3aWR0aDoyNTRweDsgaGVpZ2h0OjI0cHg7IGZsb2F0OmxlZnQ7IHRleHQtYWxpZ246cmlnaHQ7fSAuc3VpdmFudHt3aWR0aDoyODBweDsgaGVpZ2h0OjE5cHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmctdG9wOjVweDt9IC5tYWluX3JpZ2h0X2JveHt3aWR0aDoyODBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7fSAuYm94N3t3aWR0aDoyOTBweDsgaGVpZ2h0OjEycHg7IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvbGVmdF9ib3hfdG9wLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0OyB9IC5ib3g3TGlua3t3aWR0aDoyOTBweDsgaGVpZ2h0OjEycHg7IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvbGVmdF9ib3hfdG9wLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0OyB9IC5ib3g3X21pZHt3aWR0aDoyODBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvbGVmdF9ib3hfbWlkLnBuZykgbGVmdCB0b3AgcmVwZWF0LXk7IHBhZGRpbmc6MCAycHg7fSAuYm94N19taWRfZnVsbHt3aWR0aDo5NTZweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6bm9uZSBsZWZ0IHRvcCBuby1yZXBlYXQgMCAwIHRyYW5zcGFyZW50OyBwYWRkaW5nOjAgMnB4IDE1cHg7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNCQkI7fSAuc2ltdWxhcl92X2JveHsgd2lkdGg6MjY1cHg7IHBhZGRpbmc6MHB4IDBweCA1cHggMTBweDsgbWFyZ2luLWJvdHRvbTo1cHg7IH0gLmJveFNlYXJjaE5ld3N7bWFyZ2luLXRvcDotM3B4O21hcmdpbi1sZWZ0Oi01cHg7d2lkdGg6Mjg1cHg7IGhlaWdodDoxMnB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2xlZnRfYm94X3RvcF8yODAucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQ7fSAuYm94U2VhcmNoTmV3c19taWR7bWFyZ2luLWxlZnQ6LTVweDtwYWRkaW5nOjBweDt3aWR0aDoyODFweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvbGVmdF9ib3hfbWlkXzI4MC5wbmcpIGxlZnQgdG9wIHJlcGVhdC15OyB9IC5ib3hTZWFyY2hOZXdzX2Zvb3RlcjE1e21hcmdpbi1sZWZ0Oi01cHg7d2lkdGg6Mjg1cHg7IGhlaWdodDoxMnB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2xlZnRfYm94X2Zvb3Rlcl8yODAucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQ7fSAuYm94N0hfbWlke3dpZHRoOjI4MHB4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nLWJvdHRvbTo2cHg7fSAuUmVjaGVyY2hlMjJ7aGVpZ2h0OjIwcHg7IHBhZGRpbmc6MTBweCA3cHg7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGNvbG9yOiMxYjFiMWI7fSAuc2ltVGl0bGV7aGVpZ2h0OmF1dG87IHBhZGRpbmc6MHB4OyBmb250LXNpemU6MS4xMjVyZW0gOyBjb2xvcjojMGYxYTFlO30gLmJveDh7d2lkdGg6MjcwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjBweCAwcHggMHB4IDEwcHg7fSAuYm94OXt3aWR0aDoyMHB4OyBoZWlnaHQ6MThweDsgZmxvYXQ6bGVmdDsgcGFkZGluZzowcHggMHB4IDE0cHggMHB4OyBmb250LXNpemU6MS4xMjVyZW0gOyBjb2xvcjojMGYxYTFlO30gLmJveDExe3dpZHRoOjEwMHB4OyBoZWlnaHQ6MTFweDsgZmxvYXQ6bGVmdDsgcGFkZGluZzo3cHggMHB4IDE0cHggMHB4OyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojNTc1NzU3OyBsaW5lLWhlaWdodDoxOHB4O30gLmJveDEye3dpZHRoOjEzMHB4OyBoZWlnaHQ6MTFweDsgZmxvYXQ6bGVmdDsgcGFkZGluZzo3cHggMHB4IDE0cHggMHB4OyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojNTc1NzU3OyBsaW5lLWhlaWdodDoxOHB4O30gLnNlbGVjdF9ib3gxNHtoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZzowcHggMTBweCAwcHggMHB4OyBtYXJnaW4tYm90dG9tOjNweDt9IC5zZWxlY3RfYm94MTZ7aGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MHB4IDEwcHggMHB4IDEwcHg7IG1hcmdpbi1ib3R0b206M3B4O30gLnNlbGVjdF9ib3gxNXtoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZzoxMHB4IDEwcHggMHB4IDEwcHg7IG1hcmdpbi1ib3R0b206MTBweDt9IC5zZWxlY3RfYm94MTE1e3dpZHRoOjExNXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZzowcHggMHB4IDBweCAxMHB4OyBtYXJnaW4tYm90dG9tOjEwcHg7fSAuc2VsZWN0X2JveDgwe3dpZHRoOjgwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjBweCAwcHggMHB4IDBweDsgbWFyZ2luLWJvdHRvbToxMHB4O30gLmFfdGV4dHt3aWR0aDoyMHB4OyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojNTc1NzU3OyBsaW5lLWhlaWdodDozMXB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZzowIDVweDt9IC5ham91dGVye3dpZHRoOjEwMCU7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjEwcHggMDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6I0ZGRkZGRjsgYmFja2dyb3VuZC1jb2xvcjojMWYxZjFmO21hcmdpbjo1cHggMCAxMHB4IDBweDt9IC5ham91dGVyX2F7YmFja2dyb3VuZDp1cmwoIi9pbWFnZXMvc2VhcmNoLWRvd24tYXJyb3cucG5nIikgbm8tcmVwZWF0IHNjcm9sbCBsZWZ0IDNweCB0cmFuc3BhcmVudDsgcGFkZGluZy1sZWZ0OjI1cHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNGRkZGRkY7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9IC5ham91dGVyX2FfZnVsbHtiYWNrZ3JvdW5kOnVybCgiL2ltYWdlcy9zZWFyY2gtcmlnaHQtYXJyb3cucG5nIikgbm8tcmVwZWF0IHNjcm9sbCByaWdodCAtMXB4IHRyYW5zcGFyZW50OyBwYWRkaW5nLXJpZ2h0OjI1cHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNGRkZGRkY7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9IC5ib3gxM3t3aWR0aDoyNjBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MHB4IDEwcHggMHB4IDEwcHg7fSAuaW5wdXRfYm94Mnt3aWR0aDoyMHB4OyBoZWlnaHQ6MThweDsgZmxvYXQ6bGVmdDsgcGFkZGluZzowcHggMHB4IDE0cHggMHB4OyBmb250LXNpemU6MS4xMjVyZW0gOyBjb2xvcjojMGYxYTFlO30gLmlucHV0X3RleHR7IHdpZHRoOjE5NXB4OyBoZWlnaHQ6MTFweDsgZmxvYXQ6bGVmdDsgcGFkZGluZzozcHggMHB4IDdweCA1cHg7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiM1NzU3NTc7IGxpbmUtaGVpZ2h0OjE4cHg7IH0gLmJ1dHRvbl9ib3gye3dpZHRoOjI2MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgfSAuYnV0dG9uX2JveFMyeyB3aWR0aDoyNDZweDsgaGVpZ2h0OjI5cHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MTBweCAzcHggMTNweCAzcHg7IH0gLmJveC1mb290ZXIxNXt3aWR0aDoyOTBweDsgaGVpZ2h0OjEycHg7IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvbGVmdF9ib3hfZm9vdGVyLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0O30gLmRpc3sgbWFyZ2luLXRvcDo1cHg7IG1hcmdpbi1sZWZ0OjVweDsgd2lkdGg6MjQwcHg7fSAuZGlzX2N1c3RvbXsgd2lkdGg6MjQwcHg7d2lkdGg6MjQwcHg7fSAuZGlzX3RvcHsgd2lkdGg6MjQ2cHg7IGhlaWdodDo5cHg7IGZsb2F0OmxlZnQ7fSAuZGlzX3RvcF9jdXN0b217IHdpZHRoOjIzOHB4OyBoZWlnaHQ6NDBweDsgZmxvYXQ6bGVmdDsgY29sb3I6IzQ2NDY0NjsgYmFja2dyb3VuZDojZmZmZmZmO30gLmRpc19iZ3sgd2lkdGg6MjQ2cHg7IGhlaWdodDoxNTBweDsgZmxvYXQ6bGVmdDsgY29sb3I6IzI4MjgyODsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9kaXNfYmcucG5nKSBsZWZ0IHRvcCByZXBlYXQteTt9IC5fZGlzX2JneyB3aWR0aDoyNDBweDsgaGVpZ2h0OjIwMHB4OyBmbG9hdDpsZWZ0OyBjb2xvcjojMjgyODI4O30gLmRpc19iZ19jdXN0b217IGZsb2F0OmxlZnQ7IGNvbG9yOiMyODI4Mjg7IGJhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwxKTt9IC5fZGlzX2JnX2N1c3RvbXsgZmxvYXQ6bGVmdDsgY29sb3I6IzI4MjgyODsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LDEpO30gLmRpc19ib3V7IHdpZHRoOjI0NnB4OyBoZWlnaHQ6NTBweDsgZmxvYXQ6bGVmdDsgY29sb3I6IzJkMmQyZDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9kaXNfYm91LnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0O30gLl9kaXNfYm91eyB3aWR0aDoyNDBweDsgaGVpZ2h0OjM4cHg7IGZsb2F0OmxlZnQ7IGJvcmRlci1yYWRpdXM6MCAwIDZweCA2cHg7IG1hcmdpbi10b3A6MTRweDsgY29sb3I6IzJkMmQyZDs7IH0gLmRpc19ib3VfY3VzdG9teyB3aWR0aDoyMzhweDsgaGVpZ2h0OjUwcHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmctdG9wOjVweDsgY29sb3I6IzFiMWIxYjsgYmFja2dyb3VuZDojZmZmZmZmO30gLl9kaXNfYm91X2N1c3RvbXsgd2lkdGg6MjQwcHg7IGhlaWdodDo0MHB4OyBmbG9hdDpsZWZ0OyBjb2xvcjojMWIxYjFiOyBib3JkZXItcmFkaXVzOjAgMCA2cHggNnB4OyBtYXJnaW4tdG9wOjEycHg7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgfSAuZGlzX2JvdV8yeyB3aWR0aDoyNDZweDsgaGVpZ2h0OjlweDsgZmxvYXQ6bGVmdDsgY29sb3I6IzJkMmQyZDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9kaXNfYm91XzIucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQ7fSAuZGlzX3RleHR7IGZvbnQtc2l6ZToxLjQzOHJlbSA7IHBhZGRpbmc6NHB4IDBweCAwcHggMTVweDt9IC5sdW5kaV90ZXh0eyBmb250LXNpemU6MC44MTNyZW0gOyBwYWRkaW5nOjJweCAwcHggMHB4IDIwcHg7IGxpbmUtaGVpZ2h0OjE0cHg7fSAubHVuZGlfdGV4dF9ob21lcGFnZV9oMjQ4e2ZvbnQtc2l6ZTowLjgxM3JlbSA7IGxpbmUtaGVpZ2h0OjE4cHg7IHBhZGRpbmc6MTBweCAwIDAgMjBweDsgfSAubHVuZGlfdGV4dCB0aHt0ZXh0LWFsaWduOmxlZnQ7Zm9udC13ZWlnaHQ6bm9ybWFsO3dpZHRoOjYwcHg7fSAubHVuZGlfdGV4dCB0ZHt0ZXh0LWFsaWduOmxlZnQ7fSAucHsgaGVpZ2h0OjE2cHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6N3B4IDVweCAwcHggMTBweDsgZm9udC1zaXplOjAuODEzcmVtIDt9IC5leyBoZWlnaHQ6MTZweDsgZmxvYXQ6cmlnaHQ7IHBhZGRpbmc6N3B4IDBweCAwcHggMHB4OyBmb250LXNpemU6MC44NzVyZW0gO30gLmJveDI4OCwgLmJveDI4OF9jdXN0b217d2lkdGg6MjgwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyB9IC5fYm94Mjg4LCAuX2JveDI4OF9jdXN0b217d2lkdGg6MjgwcHg7IGZsb2F0OmxlZnQ7IH0gLmJveDI4OFVzZWR7d2lkdGg6MjgwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW4tbGVmdDowcHg7fSAuYm94Mjg4TmV3e3dpZHRoOjI4MHB4OyBmbG9hdDpsZWZ0OyB9IC5ib3gyODhOZXdfY3VzdG9te2Zsb2F0OmxlZnQ7fSAuYm94Mjg4TmV3UU0sIC5ib3gyODhOZXdRTV9tb2JpbGUgeyBib3JkZXItcmFkaXVzOjVweDsgYmFja2dyb3VuZC1jb2xvcjpyZ2IoMjU1LDI1NSwyNTUpOyAtbXMtZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTEwMCk7IGJhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwxKTsgYm94LXNoYWRvdzpub25lOyBjbGVhcjpib3RoOyBmbG9hdDpsZWZ0OyB3aWR0aDoyODBweDsgbWFyZ2luLWJvdHRvbTo1cHg7IH0gLmJveDI4OE5ld1FNX21vYmlsZSB7IHdpZHRoOjEwMCU7IH0gLmJveDI4OE5ld1FNX21vYmlsZSAuUmVjaGVyY2hlMjIgeyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAuYm94Mjg4TmV3UU1fbW9iaWxlIHRhYmxlIHsgd2lkdGg6MTAwJTsgfSAuYm94Mjg4TmV3UU1fbW9iaWxlIC5qcVRyYW5zZm9ybUlucHV0V3JhcHBlciB7IHdpZHRoOjEwMCUhaW1wb3J0YW50OyB9IC5ib3gyODhOZXdRTV9tb2JpbGUgLmpxVHJhbnNmb3JtSW5wdXRXcmFwcGVyIGlucHV0IHsgd2lkdGg6OTUlIWltcG9ydGFudDsgfSAuYm94Mjg4UU17IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW4tdG9wOjVweDsgZm9udC1zaXplOjAuODc1cmVtIDtmb250LXdlaWdodDpub3JtYWw7fSAuYm94Mjg4UU1fY3VzdG9te3dpZHRoOjI3OHB4O21hcmdpbjo1cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBvdmVyZmxvdzpoaWRkZW47Ym9yZGVyLXJhZGl1czo2cHg7Ym94LXNoYWRvdzowIDAgNHB4ICMzMzM7fSAudGV4dEFyZWFRTXsgZm9udC1zaXplOjAuODEzcmVtIDtsaW5lLWhlaWdodDoxNXB4O30gLmJveDI4OF90b3B7d2lkdGg6Mjg4cHg7IGhlaWdodDoxNHB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3JpZ2h0X2JveDRfdG9wLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0OyBtYXJnaW4tdG9wOjBweDt9IC5ib3gyODhfdG9wX2N1c3RvbXt3aWR0aDoyNzhweDsgaGVpZ2h0OjQwcHg7IGZsb2F0OmxlZnQ7IGNvbG9yOiM0NjQ2NDY7IGJhY2tncm91bmQ6I2ZmZmZmZjt9IC5fYm94Mjg4UU17IHdpZHRoOjI4MHB4OyB9IC5fYm94Mjg4X3RvcHt9IC5fYm94Mjg4X3RvcF9jdXN0b217IGhlaWdodDo0MHB4OyBmbG9hdDpsZWZ0OyBXaWR0aDoxMDAlOyBjb2xvcjojNDY0NjQ2OyBiYWNrZ3JvdW5kOiNmZmZmZmY7IGJvcmRlci1yYWRpdXM6NnB4IDZweCAwIDA7IH0gLl9ib3gyODgwX21pZHt9IC5fYm94Mjg4MF9taWRfY3VzdG9te2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwxKTt9IC5ib3gyODhfbWlkeyBib3gtc2hhZG93OjAgMCA1cHggIzMzMzMzMzsgYm9yZGVyLXJhZGl1czo1cHg7IG1hcmdpbi10b3A6NXB4OyBtYXJnaW4tbGVmdDo1cHg7IGZsb2F0OmxlZnQ7IGNvbG9yOiMyODI4Mjg7IGJhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwxKTsgfSAuYm94Mjg4X21pZF9jdXN0b217IGJveC1zaGFkb3c6MCAwIDVweCAjMzMzMzMzOyBib3JkZXItcmFkaXVzOjVweDsgbWFyZ2luLXRvcDo1cHg7IG1hcmdpbi1sZWZ0OjVweDsgZmxvYXQ6bGVmdDsgY29sb3I6IzI4MjgyODsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LDEpO30gLmJveDI4ODBfbWlke3dpZHRoOjI1OHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgY29sb3I6IzI4MjgyODsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9yaWdodF9ib3g0X21pZC5wbmcpIGxlZnQgdG9wIHJlcGVhdC15OyBwYWRkaW5nOjAgMTVweCAwcHggMTVweDt9IC5ib3gyODgwX21pZF9jdXN0b217d2lkdGg6MjI4cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjVweCAyNXB4OyBjb2xvcjojMjgyODI4OyBiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsMSk7fSAuYm94MjY5X21pZHt3aWR0aDoyNThweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvcmlnaHRfYm94NF9taWQucG5nKSBsZWZ0IHRvcCByZXBlYXQteTsgcGFkZGluZzowIDE1cHggMHB4IDE1cHg7fSAuem9vbTIye3dpZHRoOjI1OHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgdGV4dC1hbGlnbjpjZW50ZXI7fSAuc2VhcmNoX3JpZ2h0IHtiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3NlYXJjaC5wbmcpIDAgMCBuby1yZXBlYXQ7IHdpZHRoOjI3OHB4OyBoZWlnaHQ6MTExcHg7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbjo1cHggNXB4IDVweCA1cHh9IC5EZW1hbmRlMjJ7d2lkdGg6Mjc4cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzlhMDEwMTsgbGluZS1oZWlnaHQ6MjZweDsgbWFyZ2luLXRvcDo2N3B4O30gLkRlbWFuZGUyMiBheyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzlhMDEwMTsgbGluZS1oZWlnaHQ6MjBweCA7IHRleHQtZGVjb3JhdGlvbjpub25lO30gLkRlbWFuZGUyMiBhOmhvdmVyeyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzlhMDEwMTsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9IC5EZW1hbmRlMjIgc3BhbiBheyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzI5MjkyOTsgbGluZS1oZWlnaHQ6MjBweCA7IHRleHQtZGVjb3JhdGlvbjpub25lO30gLkRlbWFuZGUyMiBzcGFuIGE6aG92ZXJ7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMjkyOTI5OyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30gLmJveDI4OF9mb290ZXJ7d2lkdGg6Mjg4cHg7IGhlaWdodDoxNHB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3JpZ2h0X2JveDRfZm9vdGVyLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0O30gLmJveDI4OF9mb290ZXJfcXN7d2lkdGg6Mjg4cHg7IGhlaWdodDoxMXB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3JpZ2h0X2JveDRfZm9vdGVyLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0O30gLmJveDI4OF9mb290ZXJfcXN7d2lkdGg6Mjg4cHg7IGhlaWdodDoxMXB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3JpZ2h0X2JveDRfZm9vdGVyLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0O30gLmJveDI4OF9mb290ZXI1NXsgd2lkdGg6MjgwcHg7IGhlaWdodDo1MHB4OyBmbG9hdDpsZWZ0OyBjb2xvcjojMmQyZDJkOyBiYWNrZ3JvdW5kLWNvbG9yOiNDQkNCQ0I7IGJvcmRlci1yYWRpdXM6MCAwIDZweCA2cHg7IH0gLmJveDI4OF9mb290ZXI1NV9jdXN0b217IHdpZHRoOjI4MHB4OyBoZWlnaHQ6MzVweDsgcGFkZGluZy10b3A6NXB4OyBmbG9hdDpsZWZ0OyBjb2xvcjojMWIxYjFiOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IGJvcmRlci1yYWRpdXM6MCAwIDZweCA2cHg7IH0gLnAgYXt0ZXh0LWRlY29yYXRpb246bm9uZTt9IC5nYXAxMHt3aWR0aDoyMzBweDsgaGVpZ2h0OjEwcHg7IGZsb2F0OmxlZnQ7fSAucGFnZV9uYW1lMnt3aWR0aDo2NTBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MCAwIDIwcHggMDsgbGluZS1oZWlnaHQ6MzBweDsgZm9udC1zaXplOjEuNjI1cmVtIDsgY29sb3I6IzFiMWIxYjtmb250LXdlaWdodDpub3JtYWx9IC5wYWdlX25hbWUzeyB3aWR0aDoxMDAlO2JveC1zaXppbmc6Ym9yZGVyLWJveDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MHB4IDEwcHggMTBweCAxMHB4OyBsaW5lLWhlaWdodDozMHB4OyBmb250LXNpemU6MS41cmVtIDsgY29sb3I6IzI0MjQyNDt9IC5wYWdlX25hbWUzIGgxeyBmb250LXNpemU6MS44NzVyZW0gOyBjb2xvcjojMjQyNDI0O2ZvbnQtd2VpZ2h0Om5vcm1hbH0gLnBhZ2VfbmFtZTR7d2lkdGg6NjUwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3Noby5wbmcpIGNlbnRlciBib3R0b20gbm8tcmVwZWF0OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmJvdHRvbTsgcGFkZGluZzowIDBweCAxMHB4IDIxcHg7IGxpbmUtaGVpZ2h0OjMwcHg7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGNvbG9yOiMwMTRGODA7fSAucGFnZV9uYW1lNCBoMnsgZm9udC1zaXplOjEuNXJlbSA7IGNvbG9yOnJnYigyNywyNywyNyk7Zm9udC13ZWlnaHQ6bm9ybWFsfSAucGFnZV9uYW1lNXt3aWR0aDoxMDAlO2hlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3Noby5wbmcpIGNlbnRlciBib3R0b20gbm8tcmVwZWF0OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmJvdHRvbTsgcGFkZGluZzowIDBweCAxMHB4IDA7IG1hcmdpbi1ib3R0b206MTVweDsgbGluZS1oZWlnaHQ6MzBweDsgZm9udC1zaXplOjEuNXJlbSA7IGNvbG9yOiMyNDI0MjQ7Zm9udC13ZWlnaHQ6bm9ybWFsIH0gI3NlYXJjaENvbnRhaW5lclBhcmVudCAucGFnZV9uYW1lNTpub3QoOmZpcnN0LWNoaWxkKSB7IG1hcmdpbi10b3A6MzBweDsgfSAuYm94Ml90ZXh0e2hlaWdodDphdXRvOyB3aWR0aDoxMDAlOyBmbG9hdDpsZWZ0OyBsaW5lLWhlaWdodDoxOHB4OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMjQyNDI0OyB9IC5ib3gyX3RleHQgcHsgbGluZS1oZWlnaHQ6MThweDsgZm9udC1zaXplOjAuODc1cmVtIDtjb2xvcjojMWIxYjFiOyBtYXJnaW4tYm90dG9tOjIwcHg7fSAucG9zaXRpdmVSYXRpbmdUeHQgcHtmb250LXNpemU6MXJlbSA7fSAucG9zaXRpdmVSYXRpbmdUeHQgaDMsIC5wb3NpdGl2ZVJhdGluZ1R4dCBoNHtmb250LXdlaWdodDpub3JtYWw7fSAucG9zaXRpdmVSYXRpbmdUeHQgLmJ0bi1kZWZhdWx0e3RleHQtdHJhbnNmb3JtOm5vbmU7fSAucG9zaXRpdmVSYXRpbmdUeHQgLmJ0bi1kZWZhdWx0e2ZvbnQtc2l6ZToxLjI1cmVtIDt9IC5ldGFwZXt3aWR0aDphdXRvOyBoZWlnaHQ6NDZweDsgZmxvYXQ6bGVmdDsgbWFyZ2luLXJpZ2h0OjIwcHg7fSAudGV4dDF7d2lkdGg6YXV0bzsgaGVpZ2h0OjQ2cHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MCAwcHggMHB4IDBweDt9IC50ZXh0MSBhe3dpZHRoOmF1dG87IGhlaWdodDo0NnB4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjAgMHB4IDBweCAwcHg7IGxpbmUtaGVpZ2h0OjQ2cHg7IHRleHQtYWxpZ246bGVmdDsgZm9udC1zaXplOjEuODc1cmVtIDsgY29sb3I6IzQzNDM0MzsgZm9udC13ZWlnaHQ6Ym9sZDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtc2hhZG93OjFweCAxcHggMXB4ICNmM2YzZjM7IH0gLnRleHQxIGE6aG92ZXJ7d2lkdGg6YXV0bzsgaGVpZ2h0OjQ2cHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MCAwcHggMHB4IDBweDsgbGluZS1oZWlnaHQ6NDZweDsgdGV4dC1hbGlnbjpsZWZ0OyBmb250LXNpemU6MS44NzVyZW0gOyBjb2xvcjojNDM0MzQzOyBmb250LXdlaWdodDpib2xkOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1zaGFkb3c6MXB4IDFweCAxcHggI2YzZjNmMzsgfSAudGV4dDEgYS5hY3RpdmV7d2lkdGg6YXV0bzsgaGVpZ2h0OjQ2cHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MCAwcHggMHB4IDBweDsgbGluZS1oZWlnaHQ6NDZweDsgdGV4dC1hbGlnbjpsZWZ0OyBmb250LXNpemU6MS44NzVyZW0gOyBjb2xvcjojNDM0MzQzOyBmb250LXdlaWdodDpib2xkOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1zaGFkb3c6MXB4IDFweCAxcHggI2YzZjNmMzsgfSAub25lMXt3aWR0aDo0NnB4OyBoZWlnaHQ6NDZweDsgZmxvYXQ6cmlnaHQ7IG1hcmdpbi1sZWZ0OjEwcHg7fSAub25lMSBhe3dpZHRoOjQ2cHg7IGhlaWdodDo0NnB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzLzFfcm91bmQucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQ7IGZvbnQtc2l6ZToyLjI1cmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgY29sb3I6I0ZGRkZGRjsgbGluZS1oZWlnaHQ6NDZweDsgdGV4dC1hbGlnbjpjZW50ZXI7IHRleHQtZGVjb3JhdGlvbjpub25lO30gLm9uZTEgYTpob3Zlcnt3aWR0aDo0NnB4OyBoZWlnaHQ6NDZweDsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy8xX2hvdmVyLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0OyBmb250LXNpemU6Mi4yNXJlbSA7IGNvbG9yOiMxYjFiMWI7IGxpbmUtaGVpZ2h0OjQ2cHg7IGZvbnQtd2VpZ2h0OmJvbGQ7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LWRlY29yYXRpb246bm9uZTt9IC5vbmUxIGEuYWN0aXZle3dpZHRoOjQ2cHg7IGhlaWdodDo0NnB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzLzFfaG92ZXIucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQ7IGZvbnQtc2l6ZToyLjI1cmVtIDsgY29sb3I6IzFiMWIxYjsgbGluZS1oZWlnaHQ6NDZweDsgZm9udC13ZWlnaHQ6Ym9sZDsgdGV4dC1hbGlnbjpjZW50ZXI7IHRleHQtZGVjb3JhdGlvbjpub25lO30gLnNlbGVjdGlvbm5lent3aWR0aDphdXRvOyBoZWlnaHQ6YXV0byA7IGZsb2F0OmxlZnQ7IHBhZGRpbmctcmlnaHQ6NXB4OyBwYWRkaW5nLWxlZnQ6M3B4OyBwYWRkaW5nLXRvcDo0cHg7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiMxYTFhMWE7IGxpbmUtaGVpZ2h0OjIycHg7IGZvbnQtd2VpZ2h0OmJvbGQ7IHRleHQtYWxpZ246bGVmdDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7fSAuZm9ybXNfYm94MjJ7Ym94LXNpemluZzpib3JkZXItYm94OyB3aWR0aDoxMDAlOyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luOjAgMCAxMHB4IDA7IH0gLndpdGhfYm9yZGVyIHsgYm9yZGVyOjFweCBzb2xpZCAjZDRkNGQ0OyAtbW96LWJvcmRlci1yYWRpdXM6OHB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6OHB4OyAta2h0bWwtYm9yZGVyLXJhZGl1czo4cHg7IHBhZGRpbmc6MCAxNnB4OyB9IC5QcmVub217d2lkdGg6Mjc5cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMjQyNDI0IDsgcGFkZGluZzo4cHggMCAxMHB4IDA7fSAuUHJlbm9tIHNwYW57IGZvbnQtc2l6ZToxLjM3NXJlbSA7IGNvbG9yOiNmZjAxMDE7fSAuUHJlbm9tMnt3aWR0aDozMjFweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMyNDI0MjQgOyBwYWRkaW5nOjhweCAwIDEwcHggMDt9IC5QcmVub20yIHNwYW57IGZvbnQtc2l6ZToxLjM3NXJlbSA7IGNvbG9yOiNmZjAxMDE7fSAuUHJlbm9tM3t3aWR0aDoyNzlweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMyNDI0MjQgOyBwYWRkaW5nOjBweCAwIDEwcHggMDt9IC5QcmVub200e3dpZHRoOjMyMXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzI0MjQyNCA7IHBhZGRpbmc6MHB4IDAgMTBweCAwO30gLlByZW5vbTV7d2lkdGg6Mjc5cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMjQyNDI0IDsgcGFkZGluZzpweCAwIDEwcHggMDt9IC5QcmVub202e3dpZHRoOjIxNHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzI0MjQyNCA7IHBhZGRpbmc6MHB4IDAgMTBweCAwO30gLlByZW5vbTd7d2lkdGg6MTA3cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMjQyNDI0IDsgcGFkZGluZzowcHggMCAxMHB4IDA7fSAuUHJlbm9tOHt3aWR0aDoyNzlweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6cHggMCAxMHB4IDA7IGRpc3BsYXk6YmxvY2t9IC5QcmVub205e3dpZHRoOjIxNHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZzowcHggMCAxMHB4IDA7ZGlzcGxheTpibG9ja30gLlByZW5vbTEwe3dpZHRoOjEwN3B4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZzowcHggMCAxMHB4IDA7ZGlzcGxheTpibG9ja30gLnRleHQxNXt3aWR0aDoyODVweDsgZm9udC1zaXplOjAuODEzcmVtIDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGNvbG9yOiMyNDI0MjQgOyBwYWRkaW5nOjBweCAwIDNweCAwO30gLnRleHQxNnt3aWR0aDoxNzJweDsgZm9udC1zaXplOjAuODEzcmVtIDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGNvbG9yOiMyNDI0MjQgOyBwYWRkaW5nOjBweCAwIDNweCAwO30gLnRleHQxN3t3aWR0aDoxMTJweDsgZm9udC1zaXplOjAuODEzcmVtIDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGNvbG9yOiMyNDI0MjQgOyBwYWRkaW5nOjBweCAwIDNweCAwO30gLnRleHQxOHt3aWR0aDoyODVweDsgZm9udC1zaXplOjAuODEzcmVtIDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGNvbG9yOiMyNDI0MjQgOyBwYWRkaW5nOjhweCAwIDNweCAwO30gLnRleHQxNSBzcGFueyBmb250LXNpemU6MS4zNzVyZW0gOyBjb2xvcjojZmYwMTAxO30gLmJ1dHRvbjV7d2lkdGg6Mjg1cHg7IG1hcmdpbi1ib3R0b206MzBweDsgbWFyZ2luLXRvcDo3MHB4OyBmbG9hdDpsZWZ0OyBtYXJnaW4tcmlnaHQ6NXB4OyB0ZXh0LWFsaWduOnJpZ2h0OyB9IC5ib3hfZGF0ZXt3aWR0aDoxNjdweDsgbWFyZ2luLWJvdHRvbToxMHB4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nLXRvcDoxcHg7IG1hcmdpbi1yaWdodDo1cHg7fSAuYm94X2RhdGUye3dpZHRoOjEwN3B4OyBtYXJnaW4tYm90dG9tOjEwcHg7IGZsb2F0OmxlZnQ7IG1hcmdpbi1yaWdodDo1cHg7IHBhZGRpbmctdG9wOjBweDt9IC5ib3hfZGF0ZTN7d2lkdGg6ODBweDsgbWFyZ2luLWJvdHRvbToxMHB4OyBmbG9hdDpsZWZ0OyBtYXJnaW4tcmlnaHQ6NXB4O30gc3Bhbi5hc3RreyBjb2xvcjojRkYwMTAxO2ZvbnQtc2l6ZTowLjY4OHJlbSA7ZmxvYXQ6bGVmdDtwYWRkaW5nLXJpZ2h0OjNweDsgfSAuYm94NjF7d2lkdGg6MjgwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW4tdG9wOjEwcHg7IGRpc3BsYXk6YmxvY2s7IGNsZWFyOmJvdGg7IH0gLmJveDYxNjZ7d2lkdGg6MjgwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW4tdG9wOjEwcHg7IH0gLlBvbGl0aXF1ZXt3aWR0aDphdXRvOyBtYXJnaW4tYm90dG9tOjEwcHg7IGZsb2F0OmxlZnQ7IG1hcmdpbi1yaWdodDo1cHg7IHBhZGRpbmc6MCAycHggMHB4IDJweDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzBkNTlhZjsgbGluZS1oZWlnaHQ6MjJweDsgfSAuUG9saXRpcXVlIGF7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwZDU5YWY7IGxpbmUtaGVpZ2h0OjI0cHg7IHRleHQtZGVjb3JhdGlvbjpub25lOyBib3JkZXItYm90dG9tOjJweCBzb2xpZCAjNmI5MWJkOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9saW5lMy5wbmcpIGJvdHRvbSBsZWZ0IHJlcGVhdC14OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmJvdHRvbTt9IC5Qb2xpdGlxdWUgYTpob3ZlcnsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzI0MjQyNDsgbGluZS1oZWlnaHQ6MjRweDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9saW5lNC5wbmcpIGJvdHRvbSBsZWZ0IHJlcGVhdC14OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmJvdHRvbTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGJvcmRlci1ib3R0b206MnB4IHNvbGlkICMyNDI0MjQ7fSAudGV4dDE1NXt3aWR0aDoyODVweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiMyNDI0MjQgOyBwYWRkaW5nOjBweCAwIDNweCAwO30gLnRleHQxNTVjaGt7aGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiMyNDI0MjQgOyBwYWRkaW5nOjBweCAxMHB4IDEwcHggMTVweDt0ZXh0LWFsaWduOmxlZnQ7fSAuVmV1aWxsZXp7d2lkdGg6NjE3cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjE3cHggMDsgZm9udC1zaXplOjEuMzc1cmVtIDsgY29sb3I6IzFiMWIxYjtmb250LXdlaWdodDpub3JtYWx9IC5WZXVpbGxleiBzcGFue3RleHQtYWxpZ246bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzI0MjQyNDsgbGluZS1oZWlnaHQ6MjJweDt9IC5WZXVpbGxleiBzcGFuIGF7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMyNDI0MjQ7IGZsb2F0OnJpZ2h0OyBsaW5lLWhlaWdodDoyMnB4OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgYm9yZGVyLWJvdHRvbToycHggc29saWQgIzI0MjQyNDsgZGlzcGxheTpibG9ja30gLlZldWlsbGV6IHNwYW4gYTpob3ZlcnsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzAwNDQ2ZjsgZmxvYXQ6cmlnaHQ7IGxpbmUtaGVpZ2h0OjIycHg7IHRleHQtZGVjb3JhdGlvbjpub25lOyBib3JkZXItYm90dG9tOjJweCBzb2xpZCAjMDA0NDZmOyBkaXNwbGF5OmJsb2NrO30gLkh5cG90aGVxdWV7d2lkdGg6MTk1cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojMjQyNDI0IDsgcGFkZGluZzowOyBsaW5lLWhlaWdodDo1MHB4O30gLkh5cG90aGVxdWUyMnt3aWR0aDoyMjRweDsgbWFyZ2luLWJvdHRvbToxMHB4OyBmbG9hdDpsZWZ0O30gLkh5cG90aGVxdWUzM3t3aWR0aDo1MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzI0MjQyNCA7IHBhZGRpbmc6MHB4IDAgMTBweCAwOyBsaW5lLWhlaWdodDozNXB4O30gLmNpdmlxdWV7d2lkdGg6MTMwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojMjQyNDI0IDsgcGFkZGluZzowcHggMCAzcHggMDt9IC5SdWV7d2lkdGg6MjkwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojMjQyNDI0IDsgcGFkZGluZzowcHggMCAzcHggMDt9IC5BcHB7d2lkdGg6MTgwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojMjQyNDI0IDsgcGFkZGluZzowcHggMCAzcHggMDt9IC5mb3JtczEwMHt3aWR0aDoxMzBweDsgbWFyZ2luLWJvdHRvbToxMHB4OyBmbG9hdDpsZWZ0O30gLmZvcm1zMTAxe3dpZHRoOjI5MHB4OyBtYXJnaW4tYm90dG9tOjEwcHg7IGZsb2F0OmxlZnQ7fSAuZm9ybXMxMDJ7d2lkdGg6MTgwcHg7IG1hcmdpbi1ib3R0b206MTBweDsgZmxvYXQ6bGVmdDt9IC5WaWxsZXsgd2lkdGg6MjcwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojMjQyNDI0IDsgcGFkZGluZzowcHggMCAxM3B4IDA7fSAuUHJvdmluY2V7IHdpZHRoOjE1MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzI0MjQyNCA7IHBhZGRpbmc6MHB4IDAgMTNweCAwO30gLkNvZGV7IHdpZHRoOjE2MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzI0MjQyNCA7IHBhZGRpbmc6MHB4IDAgMTNweCAwO30gLmZvcm1zMTAzeyB3aWR0aDoxMDAlOyBtYXJnaW4tdG9wOjBweDsgfSAuZm9ybXMxMDR7IHdpZHRoOjEwMCU7IG1hcmdpbi10b3A6MHB4OyB9IC5mb3JtczEwNXsgd2lkdGg6MTAwJTsgbWFyZ2luLXRvcDowcHg7IH0gLmZvcm1zMTA2eyB3aWR0aDoxMDAlOyBtYXJnaW4tYm90dG9tOjEwcHg7IGZsb2F0OmxlZnR9IC5UeXBle3dpZHRoOjIwMHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzI0MjQyNCA7IHBhZGRpbmc6MHB4IDAgM3B4IDA7fSAuYm94NjAwe3dpZHRoOjYwMHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZy1sZWZ0OjBweDsgcGFkZGluZy1ib3R0b206MjBweDsgbWFyZ2luLXJpZ2h0OjBweDt9IC5EZW1hbmRlNTV7bWFyZ2luOjE1cHggMDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9kLnBuZykgMTBweCB0b3Agbm8tcmVwZWF0OyBwYWRkaW5nOjAgMCAwIDYycHg7IGxpbmUtaGVpZ2h0OjQwcHg7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGNvbG9yOiMxOTE5MTk7IGZvbnQtd2VpZ2h0OmJvbGQ7fSAuRGVtYW5kZTY2e21hcmdpbjoxNXB4IDA7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvY2FsMi5wbmcpIDEwcHggdG9wIG5vLXJlcGVhdDsgcGFkZGluZzowIDAgMCA2MnB4OyBsaW5lLWhlaWdodDoyMHB4OyBmb250LXNpemU6MS4xMjVyZW0gOyBjb2xvcjojMTkxOTE5OyBmb250LXdlaWdodDpib2xkO30gLkRlbWFuZGU3N3ttYXJnaW46MTVweCAwOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL20ucG5nKSAxMHB4IHRvcCBuby1yZXBlYXQ7IHBhZGRpbmc6MCAwIDAgNjJweDsgbGluZS1oZWlnaHQ6NDBweDsgZm9udC1zaXplOjEuMTI1cmVtIDsgY29sb3I6IzE5MTkxOTsgZm9udC13ZWlnaHQ6Ym9sZDt9IC5EZW1hbmRlODh7bWFyZ2luOjE1cHggMDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9mLnBuZykgMTBweCB0b3Agbm8tcmVwZWF0OyBwYWRkaW5nOjAgMCAwIDYycHg7IGxpbmUtaGVpZ2h0OjIwcHg7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGNvbG9yOiMxOTE5MTk7IGZvbnQtd2VpZ2h0OmJvbGQ7fSAuRGVtYW5kZTg4N3ttYXJnaW46MTVweCAwOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2YucG5nKSAxMHB4IHRvcCBuby1yZXBlYXQ7IHBhZGRpbmc6MCAwIDAgNjJweDsgbGluZS1oZWlnaHQ6MjBweDsgZm9udC1zaXplOjEuMTI1cmVtIDsgY29sb3I6IzE5MTkxOTsgZm9udC13ZWlnaHQ6Ym9sZDt9IC5ib3gyX3RleHQye3dpZHRoOjY0OHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZzoxMHB4IDBweCAxNXB4IDIzcHg7IGxpbmUtaGVpZ2h0OjE4cHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMyNDI0MjQ7fSAuYm94X2JyYW5ke3dpZHRoOjY0OHB4OyBmbG9hdDpsZWZ0O3BhZGRpbmc6MjBweCAwcHggMTVweCAwcHg7IGxpbmUtaGVpZ2h0OjE4cHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMyNDI0MjQ7IH0gLmJveDJfdGV4dDN7d2lkdGg6NjYxcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjAgMHB4IDEwcHggMTBweDsgbWFyZ2luLXRvcDoxNXB4OyBsaW5lLWhlaWdodDoxOHB4OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMjQyNDI0OyB9IC5jYXJfYm94e3dpZHRoOjIwOHB4OyBoZWlnaHQ6MTMwcHg7IGZsb2F0OmxlZnQ7IG1hcmdpbjowIDhweCAwIDA7IHBhZGRpbmc6MDsgYm9yZGVyOjA7fSAuY2FyX2ltYWdlc3t3aWR0aDoyMDhweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbjowOyBwYWRkaW5nOjA7IGJvcmRlcjowOyB0ZXh0LWFsaWduOmNlbnRlcjt9IC5jYXJfdGV4dHt3aWR0aDoyMDhweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGxpbmUtaGVpZ2h0OjEwcHg7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IGNvbG9yOiMxYjFiMWI7IHRleHQtYWxpZ246Y2VudGVyfSAuY2FyX3RleHQgYSB7dGV4dC1kZWNvcmF0aW9uOm5vbmU7IGNvbG9yOiMxYjFiMWI7IGxpbmUtaGVpZ2h0OjEuMTt9IC5jYXJfdGV4dCBhOmhvdmVyIHsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgY29sb3I6IzFiMWIxYn0gLmNhcl9ib3gyeyBoZWlnaHQ6YXV0bzsgbWFyZ2luOjAgMTBweCAxMHB4IDA7IG92ZXJmbG93OmhpZGRlbjsgYm9yZGVyLXJhZGl1czo1cHg7IC1tb3otYm9yZGVyLXJhZGl1czo1cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo1cHg7IGJhY2tncm91bmQtY29sb3I6I0ZGRjsgLW1vei1ib3gtc2hhZG93OjAgMCAxMHB4IDFweCByZ2JhKDAsMCwwLDAuMik7IC13ZWJraXQtYm94LXNoYWRvdzowIDAgMTBweCAxcHggcmdiYSgwLDAsMCwwLjIpOyBib3gtc2hhZG93OjAgMCAxMHB4IDFweCByZ2JhKDAsMCwwLDAuMik7IH0gLmNhcl9ib3gyX3RheHR7aGVpZ2h0OmF1dG87IHBhZGRpbmctYm90dG9tOjVweDsgZm9udC1zaXplOjFyZW0gOyBjb2xvcjojMzAzMDMwOyB0ZXh0LWFsaWduOmxlZnQ7IGxpbmUtaGVpZ2h0OjIxcHg7fSAucGljX2JveDJ7IGJvcmRlcjoxcHggc29saWQgI0FBQTsgYmFja2dyb3VuZDojRkZGRkZGOyBib3JkZXItcmFkaXVzOjNweDsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgfSAucGljX2JveDIgaW1nIHt3aWR0aDoxMDAlO30gLnByaW50e3dpZHRoOjE5MnB4OyBoZWlnaHQ6YXV0bzsgbWFyZ2luOjA7IHBhZGRpbmctdG9wOjdweDt9IC5wcmludCBheyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3ByaW50LnBuZykgMTBweCB0b3Agbm8tcmVwZWF0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMzAzMDMwOyBwYWRkaW5nLWxlZnQ6MzVweDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7fSAucHJpbnQgYTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9wcmludF9ob3Zlci5wbmcpIDEwcHggdG9wIG5vLXJlcGVhdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzAwNGE3ODsgcGFkZGluZy1sZWZ0OjM1cHg7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9IC5wYWdlX25hbWVfY29ue3dpZHRoOjg0MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZzoyMHB4IDIxcHggMTBweCAyMHB4OyB9IC5ob21lMnt3aWR0aDoyMzBweDsgaGVpZ2h0OmF1dG87IG1hcmdpbi1sZWZ0OjIwcHg7IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZToxcmVtIDsgY29sb3I6IzM3MzczNzsgbGluZS1oZWlnaHQ6MjRweDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0gLmhvbWUze3dpZHRoOjUxMHB4OyBoZWlnaHQ6YXV0bzsgbWFyZ2luLWxlZnQ6MTBweDsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjFyZW0gOyBjb2xvcjojMzczNzM3OyBsaW5lLWhlaWdodDoyNHB4OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSAudGV4dDIwe3dpZHRoOjMxMHB4OyBoZWlnaHQ6MzJweDsgZmxvYXQ6bGVmdDsgbWFyZ2luLXJpZ2h0OjEwcHg7IG1hcmdpbi1ib3R0b206MTBweDsgbGluZS1oZWlnaHQ6MzJweDsgdGV4dC1hbGlnbjpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMGQwZDBkOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSAudGV4dDIwIHNwYW57IGNvbG9yOiNGRjAwMDA7fSAuaW5wdXQyNXt3aWR0aDozMTBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbi1ib3R0b206MTBweDsgfSAudmV1eHt3aWR0aDo2MDBweDsgZmxvYXQ6bGVmdDsgbWFyZ2luLWJvdHRvbToxMHB4OyBwYWRkaW5nLXRvcDo1cHg7IGxpbmUtaGVpZ2h0OjE3cHg7IHRleHQtYWxpZ246bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzBkMGQwZDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IG1hcmdpbi1ib3R0b206MTBweDt9IC5Ob3N7d2lkdGg6MjY1cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOiMwMDAwMDA7IC1tb3otYm9yZGVyLXJhZGl1czo1cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo1cHg7IGJvcmRlci1yYWRpdXM6NXB4OyAta2h0bWwtYm9yZGVyLXJhZGl1czo1cHg7IHBhZGRpbmc6MTVweCAwIDE1cHggMTVweDsgbWFyZ2luOjVweCAwOyBmb250LXNpemU6MS41cmVtIDsgY29sb3I6I0ZGRkZGRjt9IC5idXR0b25fam9ib2ZmZXIgeyBkaXNwbGF5OmJsb2NrOyBsaW5lLWhlaWdodDo1MHB4OyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9pY29uX2VtcGxveS5wbmcnKSBuby1yZXBlYXQgc2Nyb2xsIDBweCAwcHggcmdiKDIzMSwgMjMyLCAyMzIpOyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC13ZWlnaHQ6Ym9sZDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHBhZGRpbmctbGVmdDo0MHB4OyBib3JkZXItcmFkaXVzOjNweDsgfSAuYnV0dG9uXzEsIC5idXR0b25fMiwgLmJ1dHRvbl8zIHsgbWFyZ2luLWJvdHRvbToxMHB4OyB9IC5idXR0b25fMSBhLCAuYnV0dG9uXzIgYSwgLmJ1dHRvbl8zIGEgeyBkaXNwbGF5OmJsb2NrOyB3aWR0aDoyNDlweDsgaGVpZ2h0OjM4cHg7IGJvcmRlci1yYWRpdXM6M3B4OyBmb250LXNpemU6MS4xMjVyZW0gOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IGxpbmUtaGVpZ2h0OjM4cHg7IH0gLmJ1dHRvbl8xIGEsIC5idXR0b25fMiBhIHsgYmFja2dyb3VuZDojMWIxYjFiOyBjb2xvcjojZmZmZmZmOyBib3JkZXI6MXB4IHNvbGlkICNmZmZmZmY7IH0gLmJ1dHRvbl8xIGE6aG92ZXIsIC5idXR0b25fMiBhOmhvdmVyeyBiYWNrZ3JvdW5kOiNlMzE3M2U7IGNvbG9yOiNmZmZmZmY7IGJvcmRlcjoxcHggc29saWQgI2ZmZmZmZjsgfSAuYnV0dG9uXzMgYXsgYmFja2dyb3VuZDojMDAwOyBjb2xvcjojRkZGOyBib3JkZXI6MXB4IHNvbGlkICMwMDA7IH0gLmJ1dHRvbl8zIGE6aG92ZXJ7IGJhY2tncm91bmQ6I0ZGRjsgY29sb3I6IzAwMDsgfSAuZmJDb25uZWN0QnRuIHsgcG9zaXRpb246cmVsYXRpdmU7IGJhY2tncm91bmQtY29sb3I6IzMwNTg5ODsgY29sb3I6I2ZmZjsgYm9yZGVyLXJhZGl1czozcHg7IGxpbmUtaGVpZ2h0OjM4cHg7IG1hcmdpbi1ib3R0b206MTBweDsgZm9udC1zaXplOjAuODc1cmVtIDsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gI2NoYXQtd2lkZ2V0LWNvbnRhaW5lciwgI2xpdmVfY2hhdF9zdGF0dXMsICNDaGF0RGl2LCAjcG9kaXVtLWJ1YmJsZSwgI2pjb250LCBqZGl2LCAjdHN3X3dyYXBwZXIsIC5mYl9kaWFsb2csIC5mYl9pZnJhbWVfd2lkZ2V0LCAuZmItY3VzdG9tZXJjaGF0LCAuZWstY2hhdCwgLm1hdGFkb3ItbGl2ZWNoYXQtMTIzNzg5LW1haW4td3JhcHBlciwgI21hdGFkb3ItY29ubmVjdC10ZXh0LWxhYmVsLCAjbWF0YWRvci1jb25uZWN0LXRleHQtbGFiZWwtYmFkZ2V7IHotaW5kZXg6MTAwMDAgIWltcG9ydGFudDsgfSBzdmcuY2hhdC1idWJibGV7IHdpZHRoOnJldmVydDsgaGVpZ2h0OnJldmVydDsgfSAuZmJDb25uZWN0QnRuIC5mYS1mYWNlYm9va3sgY29sb3I6IzMwNTg5ODsgfSBhLmZhY2Vib29rQ29ubmVjdEJ0biB7IGNvbG9yOiNmZmY7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC1mYW1pbHk6aW5oZXJpdDsgfSAuYnV0dG9uX3ZpZGVvc19mciBhLCAuYnV0dG9uX3ZpZGVvc19lbiBheyB3aWR0aDoyNDlweDsgaGVpZ2h0OjM4cHg7IGRpc3BsYXk6YmxvY2s7IH0gLmJ1dHRvbl92aWRlb3NfZnIgYXtiYWNrZ3JvdW5kOnVybCgiL2ltYWdlcy92aWRlb3MtYnV0dG9uX2ZyLnBuZyIpIG5vLXJlcGVhdCAwcHggMHB4IHRyYW5zcGFyZW50O30gLmJ1dHRvbl92aWRlb3NfZnIgYTpob3ZlcntiYWNrZ3JvdW5kOnVybCgiL2ltYWdlcy92aWRlb3MtYnV0dG9uLWhvdmVyX2ZyLnBuZyIpIG5vLXJlcGVhdCAwcHggMHB4IHRyYW5zcGFyZW50O30gLmJ1dHRvbl92aWRlb3NfZW4gYXtiYWNrZ3JvdW5kOnVybCgiL2ltYWdlcy92aWRlb3MtYnV0dG9uX2VuLnBuZyIpIG5vLXJlcGVhdCAwcHggMHB4IHRyYW5zcGFyZW50O30gLmJ1dHRvbl92aWRlb3NfZW4gYTpob3ZlcntiYWNrZ3JvdW5kOnVybCgiL2ltYWdlcy92aWRlb3MtYnV0dG9uLWhvdmVyX2VuLnBuZyIpIG5vLXJlcGVhdCAwcHggMHB4IHRyYW5zcGFyZW50O30gLmJ1dHRvbl92aWRlb19mciBhLCAuYnV0dG9uX3ZpZGVvX2VuIGF7IHdpZHRoOjE5M3B4OyBoZWlnaHQ6NTFweDsgZGlzcGxheTpibG9jazsgfSAuYnV0dG9uX3ZpZGVvX2ZyIGF7YmFja2dyb3VuZDp1cmwoIi9pbWFnZXMvdmlkZW8tYnV0dG9uX2ZyLnBuZyIpIG5vLXJlcGVhdCAwcHggMHB4IHRyYW5zcGFyZW50O30gLmJ1dHRvbl92aWRlb19mciBhOmhvdmVye2JhY2tncm91bmQ6dXJsKCIvaW1hZ2VzL3ZpZGVvLWJ1dHRvbi1ob3Zlcl9mci5wbmciKSBuby1yZXBlYXQgMHB4IDBweCB0cmFuc3BhcmVudDt9IC5idXR0b25fdmlkZW9fZW4gYXtiYWNrZ3JvdW5kOnVybCgiL2ltYWdlcy92aWRlby1idXR0b25fZW4ucG5nIikgbm8tcmVwZWF0IDBweCAwcHggdHJhbnNwYXJlbnQ7fSAuYnV0dG9uX3ZpZGVvX2VuIGE6aG92ZXJ7YmFja2dyb3VuZDp1cmwoIi9pbWFnZXMvdmlkZW8tYnV0dG9uLWhvdmVyX2VuLnBuZyIpIG5vLXJlcGVhdCAwcHggMHB4IHRyYW5zcGFyZW50O30gLmJ1dHRvbl91bmRlcnt3aWR0aDoyNDlweDsgcGFkZGluZzowcHg7IG1hcmdpbjoxMHB4IDBweDt9IC5idXR0b25fdW5kZXIgYXsgd2lkdGg6MTAwJTttaW4taGVpZ2h0OjM4cHg7IGJvcmRlci1yYWRpdXM6M3B4OyBmb250LXNpemU6MS4xMjVyZW0gOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IGxpbmUtaGVpZ2h0OjM4cHg7IHRleHQtc2hhZG93Om5vbmU7IGRpc3BsYXk6YmxvY2sgfSAuYnV0dG9uX3VuZGVyIGE6aG92ZXJ7IGJvcmRlci1yYWRpdXM6M3B4OyBmb250LXNpemU6MS4xMjVyZW0gOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IGxpbmUtaGVpZ2h0OjM4cHg7IHRleHQtc2hhZG93OjFweCAxcHggMXB4ICMwMDFlMzE7IH0gLmJ1dHRvbl91bmRlci5wcm9tbyBhe2JhY2tncm91bmQtY29sb3I6I2U4MGQwZDsgYmFja2dyb3VuZC1pbWFnZTpub25lOyBjb2xvcjojRkZGOyB3aWR0aDoyMzdweDsgbWFyZ2luLWxlZnQ6NXB4O30gLmJ1dHRvbl91bmRlci5wcm9tbzMgYXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjAwMDA7IGJhY2tncm91bmQtaW1hZ2U6bm9uZTsgY29sb3I6I0ZGRjsgd2lkdGg6MjM3cHg7IG1hcmdpbi1sZWZ0OjVweDt9IC5idXR0b25fdW5kZXIucHJvbW8gYTpob3ZlciwuYnV0dG9uX3VuZGVyLnByb21vMiBhOmhvdmVyLC5idXR0b25fdW5kZXIucHJvbW8zIGE6aG92ZXJ7YmFja2dyb3VuZC1pbWFnZTp1cmwoL2ltYWdlcy9idXR0b25fMWhvdmVyLnBuZyl9IC5idXR0b25fNHt3aWR0aDoyNDlweDsgaGVpZ2h0OjU3cHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MHB4OyBtYXJnaW4tYm90dG9tOjEwcHg7fSAuYnV0dG9uXzQgYXsgd2lkdGg6MjQ5cHg7IGhlaWdodDo1MHB4OyBwYWRkaW5nLXRvcDo3cHg7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvYnV0dG9uXzQucG5nKSBsZWZ0IHRvcCByZXBlYXQteDsgYm9yZGVyLXJhZGl1czozcHg7Zm9udC1zaXplOjEuMTI1cmVtIDsgY29sb3I6I0ZGRkZGRjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyOyBsaW5lLWhlaWdodDoyMnB4OyB0ZXh0LXNoYWRvdzoxcHggMXB4IDFweCAjMDAxZTMxOyBkaXNwbGF5OmJsb2NrIH0gLmJ1dHRvbl80IGE6aG92ZXJ7d2lkdGg6MjQ5cHg7IGhlaWdodDo1MHB4OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2J1dHRvbl80aG92ZXIucG5nKSBsZWZ0IHRvcCByZXBlYXQteDsgYm9yZGVyLXJhZGl1czozcHg7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGNvbG9yOiNGRkZGRkY7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjsgbGluZS1oZWlnaHQ6MjJweDsgdGV4dC1zaGFkb3c6MXB4IDFweCAxcHggIzAwMWUzMTsgfSAuY2hlY2tib3gxNTJ7d2lkdGg6YXV0bzsgaGVpZ2h0OjE4cHg7IGZsb2F0OmxlZnQ7IG1hcmdpbjowOyBwYWRkaW5nOjAgNnB4IDAgMDsgbWFyZ2luLXRvcDowOyBib3JkZXI6MDsgdG9wOjA7IH0gLkJhc2UyMnt3aWR0aDphdXRvOyBoZWlnaHQ6MThweDsgZmxvYXQ6bGVmdDsgbWFyZ2luLXJpZ2h0OjZweDsgcGFkZGluZzo2cHggNnB4IDAgMDsgbWFyZ2luLXRvcDowOyBib3JkZXI6MDsgdG9wOjA7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMxYjFiMWI7IHRleHQtZGVjb3JhdGlvbjpub25lO30gLmJveDk0MF9saW5le3dpZHRoOjk0MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9saW5lMjUucG5nKSBsZWZ0IGJvdHRvbSByZXBlYXQteDsgYmFja2dyb3VuZC1wb3NpdGlvbjpib3R0b207IGJvdHRvbTowO30gLndoaXRlX2JveHt3aWR0aDo5NDBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6I0ZGRkZGRjsgb3ZlcmZsb3c6aGlkZGVuOyAtbW96LWJvcmRlci1yYWRpdXMtdG9wbGVmdDo2cHg7IC1tb3otYm9yZGVyLXJhZGl1cy10b3ByaWdodDo2cHg7IC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21yaWdodDowcHg7IC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21sZWZ0OjA7IC13ZWJraXQtYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czo2cHg7IC13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NnB4OyAtd2Via2l0LWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjBweDsgLXdlYmtpdC1ib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjA7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6NnB4OyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czo2cHg7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MDsgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MDt9IC5ib3gxMDB7d2lkdGg6MjIwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMGYxYTFlOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1hbGlnbjpsZWZ0OyBwYWRkaW5nOjEzcHggMCAxNXB4IDEwcHg7fSAuYm94MTAxe3dpZHRoOjE3N3B4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzBmMWExZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nOjEzcHggMCAxNXB4O2JhY2tncm91bmQ6dXJsKCIvaW1hZ2VzL2xpbmUyNS5wbmciKSByZXBlYXQteCBzY3JvbGwgY2VudGVyIGJvdHRvbSAjRDlEOUQ5O30gLmJveDEwMnt3aWR0aDoxNzdweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwZjFhMWU7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZzoxM3B4IDAgMTVweDt9IC5ib3gxMDN7d2lkdGg6MTc3cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMGYxYTFlOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmc6MTNweCAwIDE1cHg7YmFja2dyb3VuZDp1cmwoIi9pbWFnZXMvbGluZTI1LnBuZyIpIHJlcGVhdC14IHNjcm9sbCBjZW50ZXIgYm90dG9tICNEOUQ5RDk7fSAuYm94MTA0e3dpZHRoOjE3OHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzBmMWExZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nOjEzcHggMCAxNXB4O30gLmJveEV2ZW57d2lkdGg6MTc3cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMGYxYTFlOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmc6MTNweCAwcHggMHB4IDBweDt9IC5ib3hPZGR7d2lkdGg6MTc3cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMGYxYTFlOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmc6MTNweCAwcHggMHB4IDBweDtiYWNrZ3JvdW5kOnVybCgiL2ltYWdlcy9saW5lMjUucG5nIikgcmVwZWF0LXggc2Nyb2xsIGNlbnRlciBib3R0b20gI0Q5RDlEOTt9IC5maWxlaW5wdXQtYnV0dG9uLCAuZmlsZWlucHV0LWJ1dHRvbjpob3ZlciB7IGZvbnQtc2l6ZTowLjg3NXJlbSAhaW1wb3J0YW50OyBsaW5lLWhlaWdodDozMXB4OyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAuZmlsZWlucHV0LWJ1dHRvbiBpbnB1dCB7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MDsgcmlnaHQ6MDsgbWFyZ2luOjA7IG9wYWNpdHk6MDsgLW1zLWZpbHRlcjonYWxwaGEob3BhY2l0eT0wKSc7IGN1cnNvcjpwb2ludGVyOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgfSAuYm94OTQwX21haW57d2lkdGg6OTQwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjBweCAwIDE1cHggMHB4OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2JveDIwMF9iZy5wbmcpIGxlZnQgdG9wIHJlcGVhdDsgLW1vei1ib3JkZXItcmFkaXVzOjZweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjZweDsgYm9yZGVyLXJhZGl1czo2cHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjZweDt9IC53aGl0ZV9ib3hfdGV4dDJ7d2lkdGg6MjMwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMGYxYTFlOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7fSAud2hpdGVfYm94X3RleHQze2JhY2tncm91bmQtY29sb3I6I0Y2RjZGNjtib3JkZXItbGVmdDoxcHggc29saWQgI0M5QzlDOTtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNDOUM5Qzk7cGFkZGluZzoxMHB4IDBweDt3aWR0aDoxNzVweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwZjFhMWU7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjt9IC53aGl0ZV9ib3hfdGV4dDR7cGFkZGluZzoxMHB4IDBweDt3aWR0aDoxNzdweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwZjFhMWU7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjt9IC53aGl0ZV9ib3hfdGV4dDV7YmFja2dyb3VuZC1jb2xvcjojRjZGNkY2O2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjQzlDOUM5O2JvcmRlci1yaWdodDoxcHggc29saWQgI0M5QzlDOTtwYWRkaW5nOjEwcHggMHB4O3dpZHRoOjE3NXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzBmMWExZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyOyB9IC53aGl0ZV9ib3hfdGV4dDZ7cGFkZGluZzoxMHB4IDBweDt3aWR0aDoxNzhweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwZjFhMWU7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjt9IC53aGl0ZV9ib3hfYmxhbmt7d2lkdGg6MTc4cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMGYxYTFlOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7fSAud2hpdGVfYm94X3RleHRPZGR7cGFkZGluZzoxMHB4IDBweDt3aWR0aDoxNzdweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwZjFhMWU7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjt9IC53aGl0ZV9ib3hfdGV4dEV2ZW57YmFja2dyb3VuZC1jb2xvcjojRjZGNkY2O2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjQzlDOUM5O2JvcmRlci1yaWdodDoxcHggc29saWQgI0M5QzlDOTtwYWRkaW5nOjEwcHggMHB4O3dpZHRoOjE3NXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzBmMWExZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyO30gLmJveF90aXRsZXt3aWR0aDo5MzBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MzBweCAwcHggNXB4IDEwcHg7IGZvbnQtc2l6ZTowLjkzOHJlbSA7IGNvbG9yOiMwZjFhMWU7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7fSAuY3VzdG9tXzIyIHt3aWR0aDoyNDFweDsgaGVpZ2h0OjEyMXB4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjBweDsgbWFyZ2luOjAgOHB4IDhweCAwOyBiYWNrZ3JvdW5kOiNlYmViZWI7LW1vei1ib3JkZXItcmFkaXVzOjhweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjhweDsgYm9yZGVyLXJhZGl1czo4cHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjhweDtjdXJzb3I6cG9pbnRlcjt9IC5jdXN0b21fMjIyIHt3aWR0aDoyNDFweDsgaGVpZ2h0OjEyMXB4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjBweDsgbWFyZ2luOjAgOHB4IDhweCAwOyBiYWNrZ3JvdW5kOiNmZmZmZmY7LW1vei1ib3JkZXItcmFkaXVzOjhweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjhweDsgYm9yZGVyLXJhZGl1czo4cHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjhweDtjdXJzb3I6cG9pbnRlcjt9IC50b3lvdGFfY2Ftcnl7d2lkdGg6NDMwcHg7IGhlaWdodDoyMjJweDsgZmxvYXQ6bGVmdDsgcGFkZGluZzoyMHB4IDBweCAwcHggMTBweDsgbWFyZ2luLXJpZ2h0OjhweDsgYmFja2dyb3VuZDojZWJlYmViOy1tb3otYm9yZGVyLXJhZGl1czo4cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo4cHg7IGJvcmRlci1yYWRpdXM6OHB4OyAta2h0bWwtYm9yZGVyLXJhZGl1czo4cHg7fSAudG95b3RhX2NhbXJ5IGgxeyBmb250LXNpemU6MS44NzVyZW0gOyBjb2xvcjojMzAzMDMwOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZy1ib3R0b206NXB4O30gLnRveW90YV9jYW1yeSBweyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojNWE1YTVhOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZy1ib3R0b206OHB4O30gLmJveDJfZGV0YWlsc190ZXh0MjV7d2lkdGg6MTAwJTsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbjoxNXB4IGF1dG87IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXNpemU6MS44NzVyZW0gOyBjb2xvcjojRkZGRkZGOyBmb250LXdlaWdodDpib2xkOyB0ZXh0LXNoYWRvdzoxcHggMXB4IDRweCAjODI4MjgyO30gLmJveDJfZGV0YWlsc190ZXh0MjUgc3BhbnsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGNvbG9yOiNmZmY7IGZvbnQtd2VpZ2h0OmJvbGQ7fSAuYm94MTV7Y3Vyc29yOnBvaW50ZXI7d2lkdGg6YXV0bzsgaGVpZ2h0OjIwcHg7IGZsb2F0OmxlZnQ7IG1hcmdpbjowcHg7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvbWVudTEwX2JnLnBuZykgbGVmdCB0b3AgcmVwZWF0LXg7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czozcHg7IHBhZGRpbmc6NHB4IDJweDsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6I0ZGRjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IG1hcmdpbi1yaWdodDoxcHg7IH0gLmJveDE1IGgye2N1cnNvcjpwb2ludGVyO2Zsb2F0OmxlZnQ7IHBhZGRpbmctcmlnaHQ6NXB4OyBwYWRkaW5nLXRvcDowcHg7fSAuYm94MTUgaDIgYXtjdXJzb3I6cG9pbnRlcjtmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9pY29uMi5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDsgZm9udC13ZWlnaHQ6bm9ybWFsO3BhZGRpbmctbGVmdDo0MHB4OyBwYWRkaW5nLXJpZ2h0OjBweDsgbGluZS1oZWlnaHQ6MjBweDt9IC5ib3gxNSBoMiBhOmhvdmVye2N1cnNvcjpwb2ludGVyO2Zsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNGRkZGRkY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2ljb24yLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0OyBmb250LXdlaWdodDpub3JtYWw7IGxpbmUtaGVpZ2h0OjIwcHg7fSAuYm94MTZ7d2lkdGg6YXV0bzsgaGVpZ2h0OjIwcHg7IGZsb2F0OmxlZnQ7IG1hcmdpbjowcHg7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvbWVudTEwX2JnLnBuZykgbGVmdCB0b3AgcmVwZWF0LXg7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czozcHg7IHBhZGRpbmc6NHB4IDRweCA0cHggOHB4OyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgbWFyZ2luLXJpZ2h0OjFweDsgfSAuYm94MTYgaDJ7ZmxvYXQ6bGVmdDsgcGFkZGluZy1yaWdodDo1cHg7IHBhZGRpbmctdG9wOjBweDt9IC5ib3gxNiBoMiBhe2Zsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNGRkY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2ljb24zLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0OyBmb250LXdlaWdodDpub3JtYWw7cGFkZGluZy1sZWZ0OjIwcHg7IHBhZGRpbmctcmlnaHQ6MHB4OyBsaW5lLWhlaWdodDoyMHB4O30gLmJveDE2IGgyIGE6aG92ZXJ7ZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6cmdiKDI1NSwyNTUsMjU1KTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvaWNvbjMucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQ7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgbGluZS1oZWlnaHQ6MjBweDt9IC5ib3gxN3t3aWR0aDphdXRvOyBoZWlnaHQ6MjBweDsgZmxvYXQ6bGVmdDsgbWFyZ2luOjBweDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9tZW51MTBfYmcucG5nKSBsZWZ0IHRvcCByZXBlYXQteDsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDsgcGFkZGluZzo0cHggNHB4IDRweCA4cHg7IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNGRkY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBtYXJnaW4tcmlnaHQ6MXB4OyB9IC5ib3gxNyBoMntmbG9hdDpsZWZ0OyBwYWRkaW5nLXJpZ2h0OjVweDsgcGFkZGluZy10b3A6MHB4O30gLmJveDE3IGgyIGF7ZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6I0ZGRjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvaWNvbjQucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQ7IGZvbnQtd2VpZ2h0Om5vcm1hbDtwYWRkaW5nLWxlZnQ6MjVweDsgcGFkZGluZy1yaWdodDowcHg7IGxpbmUtaGVpZ2h0OjIwcHg7fSAuYm94MTcgaDIgYTpob3ZlcntmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMDA1ODlkOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9pY29uNC5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBsaW5lLWhlaWdodDoyMHB4O30gLmJveDE4e3dpZHRoOmF1dG87IGhlaWdodDoyMHB4OyBmbG9hdDpsZWZ0OyBtYXJnaW46MHB4OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL21lbnUxMF9iZy5wbmcpIGxlZnQgdG9wIHJlcGVhdC14OyAtbW96LWJvcmRlci1yYWRpdXM6M3B4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4OyBib3JkZXItcmFkaXVzOjNweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6M3B4OyBwYWRkaW5nOjRweCA0cHggNHB4IDhweDsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6I0ZGRjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IG1hcmdpbi1yaWdodDoxcHg7IH0gLmJveDE4IGgye2Zsb2F0OmxlZnQ7IHBhZGRpbmctcmlnaHQ6NXB4OyBwYWRkaW5nLXRvcDowcHg7fSAuYm94MTggaDIgYXtmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9pY29uNS5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDsgZm9udC13ZWlnaHQ6bm9ybWFsO3BhZGRpbmctbGVmdDoyNXB4OyBwYWRkaW5nLXJpZ2h0OjVweDsgbGluZS1oZWlnaHQ6MjBweDt9IC5ib3gxOCBoMiBhOmhvdmVye2Zsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwMDU4OWQ7IHRleHQtZGVjb3JhdGlvbjpub25lOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2ljb241LnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0OyBmb250LXdlaWdodDpub3JtYWw7IGxpbmUtaGVpZ2h0OjIwcHg7fSAuYm94MTl7d2lkdGg6YXV0bzsgaGVpZ2h0OjIwcHg7IGZsb2F0OmxlZnQ7IG1hcmdpbjowcHg7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvbWVudTEwX2JnLnBuZykgbGVmdCB0b3AgcmVwZWF0LXg7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czozcHg7IHBhZGRpbmc6NHB4OyBwYWRkaW5nLXJpZ2h0OjNweDsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6I0ZGRjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IG1hcmdpbi1yaWdodDoxcHg7IH0gLmJveDE5IGgye2Zsb2F0OmxlZnQ7IHBhZGRpbmctcmlnaHQ6NXB4OyBwYWRkaW5nLXRvcDowcHg7fSAuYm94MTkgaDIgYXtmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9pY29uNi5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDsgZm9udC13ZWlnaHQ6bm9ybWFsO3BhZGRpbmctbGVmdDoyNXB4OyBsaW5lLWhlaWdodDoyMHB4O30gLmJveDE5IGgyIGE6aG92ZXJ7ZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzAwNTg5ZDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvaWNvbjYucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQ7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgbGluZS1oZWlnaHQ6MjBweDt9IC5ib3gxMTE0e2N1cnNvcjpwb2ludGVyO3dpZHRoOmF1dG87IGhlaWdodDoyMHB4OyBmbG9hdDpsZWZ0OyBtYXJnaW46MHB4OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2J1dHRvbl8xLnBuZykgbGVmdCB0b3AgcmVwZWF0LXg7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czozcHg7IHBhZGRpbmc6NHB4OyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgbWFyZ2luLXJpZ2h0OjFweDsgfSAuYm94MTExNCBoMntjdXJzb3I6cG9pbnRlcjtmbG9hdDpsZWZ0OyBwYWRkaW5nLXJpZ2h0OjVweDsgcGFkZGluZy10b3A6MHB4O30gLmJveDExMTQgaDIgYXtjdXJzb3I6cG9pbnRlcjtmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9pY29uMi5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDsgZm9udC13ZWlnaHQ6bm9ybWFsO3BhZGRpbmctbGVmdDo0MHB4OyBwYWRkaW5nLXJpZ2h0OjEwcHg7IGxpbmUtaGVpZ2h0OjIwcHg7fSAuYm94MTExNCBoMiBhOmhvdmVye2N1cnNvcjpwb2ludGVyO2Zsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwMDU4OWQ7IHRleHQtZGVjb3JhdGlvbjpub25lOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2ljb24yLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0OyBmb250LXdlaWdodDpub3JtYWw7IGxpbmUtaGVpZ2h0OjIwcHg7fSAuU3BlY2lmaWNhdGlvbnN7d2lkdGg6NjUxcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46MHB4OyBwYWRkaW5nOjEwcHggMDsgZm9udC1zaXplOjEuNXJlbSA7IGNvbG9yOiMyNTI1MjU7IHRleHQtZGVjb3JhdGlvbjpub25lO2ZvbnQtd2VpZ2h0Om5vcm1hbDttYXJnaW4tdG9wOjVweDt9IC5Nb3JiaTJ7d2lkdGg6NjMxcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjEwcHg7IG1hcmdpbjowcHg7IGJhY2tncm91bmQ6I0VGRUZFRjsgLW1vei1ib3JkZXItcmFkaXVzOjNweDtmb250LXdlaWdodDpub3JtYWw7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czozcHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiM1YTVhNWE7IHRleHQtZGVjb3JhdGlvbjpub25lO30gLk1vcmJpMiBweyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojNWE1YTVhOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZy1ib3R0b206OHB4O30gLmJveDI4ODlfbWlke3dpZHRoOjI3OHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9yaWdodF9ib3g0X21pZC5wbmcpIGxlZnQgdG9wIHJlcGVhdC15OyBwYWRkaW5nOjAgNXB4IDIwcHggNXB4O30gLk1vcmJpMjJ7d2lkdGg6NjUxcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjBweDsgbWFyZ2luOjBweDsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzVhNWE1YTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7fSAuYm94Mjg4OV9taWQgaDF7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjEwcHggMTBweCAyMHB4IDEwcHg7IGZvbnQtc2l6ZToxLjg3NXJlbSA7IGNvbG9yOiMyODI4Mjg7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXdlaWdodDpub3JtYWw7IHRleHQtYWxpZ246bGVmdDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgbGluZS1oZWlnaHQ6MjRweH0gLl9ib3gyODg5X21pZCBoMXsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MTBweCAxMHB4IDIwcHggMTBweDsgZm9udC1zaXplOjEuODc1cmVtIDsgY29sb3I6IzI4MjgyODsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgdGV4dC1hbGlnbjpsZWZ0OyB0ZXh0LXRyYW5zZm9ybTpub25lOyBsaW5lLWhlaWdodDoyNHB4fSAuYm94Mjg4OV9taWQgaDJ7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjRweCAxMHB4IDIwcHggMTVweDsgZm9udC1zaXplOjEuNXJlbSA7IGNvbG9yOiMyODI4Mjg7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXdlaWdodDpub3JtYWw7IHRleHQtYWxpZ246bGVmdDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgbGluZS1oZWlnaHQ6MjNweH0gI3NpbWlsYXJUaXRsZXsgcGFkZGluZzo0cHggMTBweCA5cHggMTVweDsgZm9udC1zaXplOjEuNDM4cmVtIDsgZm9udC13ZWlnaHQ6bm9ybWFsOyB9IC50YWJlNXt3aWR0aDo2MzFweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IH0gLnRhYmU1IHVseyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgfSAudGFiZTUgdWwgbGl7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBtYXJnaW46MDsgZGlzcGxheTpibG9jazt9IC50YWJlNSB1bCBsaSBzcGFue2N1cnNvcjpwb2ludGVyOyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMzMjMyMzI7IHRleHQtZGVjb3JhdGlvbjpub25lOyBwYWRkaW5nOjdweCAxNXB4IDdweCAxNXB4OyBtYXJnaW4tcmlnaHQ6MnB4OyBmb250LXdlaWdodDpub3JtYWw7IGxpbmUtaGVpZ2h0OjE4cHg7IHRleHQtdHJhbnNmb3JtOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LXRyYW5zZm9ybTpub25lOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3RhYl9iZy5wbmcpIGxlZnQgdG9wIHJlcGVhdC14OyBmbG9hdDpsZWZ0OyAtbW96LWJvcmRlci1yYWRpdXMtdG9wbGVmdDo2cHg7IC1tb3otYm9yZGVyLXJhZGl1cy10b3ByaWdodDo2cHg7IC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21yaWdodDowcHg7IC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21sZWZ0OjA7IC13ZWJraXQtYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czo2cHg7IC13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NnB4OyAtd2Via2l0LWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjBweDsgLXdlYmtpdC1ib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjA7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6NnB4OyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czo2cHg7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MDsgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MDt9IC50YWJlNSB1bCBsaSBzcGFuOmhvdmVyeyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzdiMDAwMDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHBhZGRpbmc6N3B4IDE1cHggN3B4IDE1cHg7IG1hcmdpbi1yaWdodDoycHg7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgbGluZS1oZWlnaHQ6MThweDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IHRleHQtdHJhbnNmb3JtOm5vbmU7IGJhY2tncm91bmQ6ICNlYmViZWI7IGZsb2F0OmxlZnQ7IC1tb3otYm9yZGVyLXJhZGl1cy10b3BsZWZ0OjZweDsgLW1vei1ib3JkZXItcmFkaXVzLXRvcHJpZ2h0OjZweDsgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbXJpZ2h0OjBweDsgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbWxlZnQ6MDsgLXdlYmtpdC1ib3JkZXItdG9wLWxlZnQtcmFkaXVzOjZweDsgLXdlYmtpdC1ib3JkZXItdG9wLXJpZ2h0LXJhZGl1czo2cHg7IC13ZWJraXQtYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MHB4OyAtd2Via2l0LWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MDsgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czo2cHg7IGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOjZweDsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowOyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowOyB9IC50YWJlNSB1bCBsaSBzcGFuLmFjdGl2ZXtjdXJzb3I6ZGVmYXVsdDsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiM3YjAwMDA7IHRleHQtZGVjb3JhdGlvbjpub25lOyBwYWRkaW5nOjdweCAxNXB4IDdweCAxNXB4OyBtYXJnaW4tcmlnaHQ6MnB4OyBmb250LXdlaWdodDpub3JtYWw7IGxpbmUtaGVpZ2h0OjE4cHg7IHRleHQtdHJhbnNmb3JtOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LXRyYW5zZm9ybTpub25lOyBiYWNrZ3JvdW5kOiAjZWJlYmViOyBmbG9hdDpsZWZ0OyAtbW96LWJvcmRlci1yYWRpdXMtdG9wbGVmdDo2cHg7IC1tb3otYm9yZGVyLXJhZGl1cy10b3ByaWdodDo2cHg7IC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21yaWdodDowcHg7IC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21sZWZ0OjA7IC13ZWJraXQtYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czo2cHg7IC13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NnB4OyAtd2Via2l0LWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjBweDsgLXdlYmtpdC1ib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjA7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6NnB4OyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czo2cHg7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MDsgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MDsgfSAudGFiX2RldGFpbHMye3dpZHRoOjYzMXB4OyBwYWRkaW5nOjEwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOiNFRkVGRUY7IC1tb3otYm9yZGVyLXJhZGl1cy10b3BsZWZ0OjBweDsgLW1vei1ib3JkZXItcmFkaXVzLXRvcHJpZ2h0OjBweDsgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbXJpZ2h0OjZweDsgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbWxlZnQ6NnB4OyAtd2Via2l0LWJvcmRlci10b3AtbGVmdC1yYWRpdXM6MHB4OyAtd2Via2l0LWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOjBweDsgLXdlYmtpdC1ib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czo2cHg7IC13ZWJraXQtYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo2cHg7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6MHB4OyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowcHg7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NnB4OyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czo2cHg7fSAuYm94MjV7d2lkdGg6NDg3cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46MHB4OyBiYWNrZ3JvdW5kOiNFRkVGRUY7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czozcHg7IG1hcmdpbjowIDEzcHggMCAwOyBwYWRkaW5nOjIwcHggMCAyMHB4IDIwcHg7fSAuYm94MjZ7d2lkdGg6MjQzcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0O30gLmJveDI2IHVseyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgfSAuYm94MjYgdWwgbGl7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBtYXJnaW46MDsgZGlzcGxheTpibG9jazt9IC5ib3gyNiB1bCBsaSBzcGFueyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMzMjMyMzI7IHRleHQtZGVjb3JhdGlvbjpub25lOyBwYWRkaW5nOjAgN3B4IDdweCAwcHg7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgbGluZS1oZWlnaHQ6MThweDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgdGV4dC1hbGlnbjpsZWZ0O30gLmJveDI2IHVsIGxpIGF7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBtYXJnaW46MDsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzMyMzIzMjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHBhZGRpbmc6MCA3cHggN3B4IDIycHg7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgbGluZS1oZWlnaHQ6MThweDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgdGV4dC1hbGlnbjpsZWZ0OyB9IC5ib3gyNiB1bCBsaSBhOmhvdmVyeyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiM3YjAwMDA7IHBhZGRpbmc6MCA3cHggN3B4IDIycHg7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgbGluZS1oZWlnaHQ6MThweDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgdGV4dC1hbGlnbjpsZWZ0OyB0ZXh0LXRyYW5zZm9ybTpub25lOyB9IC5ib3gyNiB1bCBsaSBhLmFjdGl2ZXsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbjowOyBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojN2IwMDAwOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZzowIDdweCA3cHggMjJweDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBsaW5lLWhlaWdodDoxOHB4OyB0ZXh0LWFsaWduOmxlZnQ7IHRleHQtdHJhbnNmb3JtOm5vbmU7IH0gLmJveDI3e3dpZHRoOjEzMXB4OyBoZWlnaHQ6MjhweDsgZmxvYXQ6bGVmdDsgbWFyZ2luLWJvdHRvbTo4cHg7IH0gLmJveDMze3dpZHRoOjYzMXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDt9IC5ib3gzMyB1bHsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbjowOyBwYWRkaW5nOjA7IHRleHQtdHJhbnNmb3JtOm5vbmU7IH0gLmJveDMzIHVsIGxpeyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IGRpc3BsYXk6YmxvY2s7fSAuYm94MzMgdWwgbGkgYXsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbjowOyBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMzIzMjMyOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZzowIDdweCA3cHggMHB4OyBtYXJnaW4tcmlnaHQ6MnB4OyBmb250LXdlaWdodDpib2xkOyBsaW5lLWhlaWdodDoxOHB4OyB0ZXh0LXRyYW5zZm9ybTpub25lOyB0ZXh0LWFsaWduOmxlZnQ7IHRleHQtdHJhbnNmb3JtOm5vbmU7fSAuYm94MzMgdWwgbGkgc3BhbnsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbjowOyBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMzIzMjMyOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZzowIDdweCA3cHggMHB4OyBtYXJnaW4tcmlnaHQ6MnB4OyBmb250LXdlaWdodDpib2xkOyBsaW5lLWhlaWdodDoxOHB4OyB0ZXh0LXRyYW5zZm9ybTpub25lOyB0ZXh0LWFsaWduOmxlZnQ7IHRleHQtdHJhbnNmb3JtOm5vbmU7fSAuYm94MzMgcHsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzMyMzIzMjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHBhZGRpbmc6MCAwcHggN3B4IDBweDsgZm9udC13ZWlnaHQ6Ym9sZDsgbGluZS1oZWlnaHQ6MThweDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgdGV4dC1hbGlnbjpsZWZ0OyB9IC5ib3gzMyB1bCBsaSBhOmhvdmVyeyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiM3YjAwMDA7IHRleHQtZGVjb3JhdGlvbjpub25lOyBwYWRkaW5nOjAgN3B4IDdweCAyMnB4OyBtYXJnaW4tcmlnaHQ6MnB4OyBmb250LXdlaWdodDpib2xkOyBsaW5lLWhlaWdodDoxOHB4OyB0ZXh0LXRyYW5zZm9ybTpub25lOyB0ZXh0LWFsaWduOmxlZnQ7IHRleHQtdHJhbnNmb3JtOm5vbmU7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvYXJyb3c4LnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0OyB9IC5Nb3RldXJ7d2lkdGg6MjgwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW4tYm90dG9tOjVweDt9IC5Nb3RldXIgaDJ7d2hpdGUtc3BhY2U6bm9ybWFsOyB3aWR0aDoxMzVweDsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuNzVyZW0gOyBjb2xvcjojMjAyMDIwO30gLk1vdGV1ciBoM3t3aGl0ZS1zcGFjZTpub3JtYWw7IHdpZHRoOjE0MHB4OyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44MTNyZW0gOyBmb250LXdlaWdodDpub3JtYWw7IGNvbG9yOiM1YTVhNWE7fSAuYm94MjYgdWwgbGkgc3BhbjpiZWZvcmUsLmJveDMzIHVsIGxpIHNwYW46YmVmb3JlLC5Nb3RldXIgaDI6YmVmb3JlIHsgY29udGVudDoiXGYxMzgiOyBmb250LWZhbWlseTonRm9udCBBd2Vzb21lIDUgUHJvJzsgZm9udC13ZWlnaHQ6OTAwOyBtYXJnaW4tcmlnaHQ6NXB4OyB9IC5ib3gyNyBhe3dpZHRoOjEzMXB4OyBoZWlnaHQ6MjhweDsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9idXR0b24xMF9iZy5wbmcpIGxlZnQgdG9wIHJlcGVhdC14IDsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6I0ZGRkZGRjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgcGFkZGluZzowOyBsaW5lLWhlaWdodDoyOHB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC10cmFuc2Zvcm06bm9uZTt9IC5ib3gyNyBhOmhvdmVye3dpZHRoOjEzMXB4OyBoZWlnaHQ6MjhweDsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9idXR0b24xMF9iZy5wbmcpIGxlZnQgLTMycHggcmVwZWF0LXggOyAtbW96LWJvcmRlci1yYWRpdXM6M3B4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4OyBib3JkZXItcmFkaXVzOjNweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6M3B4OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC13ZWlnaHQ6bm9ybWFsOyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC10cmFuc2Zvcm06bm9uZTsgbGluZS1oZWlnaHQ6MjhweDsgfSAuYm94Mjh7d2lkdGg6MTI3cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46MHB4OyBiYWNrZ3JvdW5kOiM2ZjZmNmYgdXJsKC9pbWFnZXMvbGl0ZXJfYmcucG5nKSBsZWZ0IHRvcCByZXBlYXQteDsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDsgcGFkZGluZzoxMHB4IDJweCAxMHB4IDJweDsgbWFyZ2luOjAgMHB4IDAgMDt9IC50ZXh0NDR7d2lkdGg6MTI3cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2xpdGVyX2xpbmUucG5nKSBsZWZ0IGJvdHRvbSByZXBlYXQteDsgYmFja2dyb3VuZC1wb3NpdGlvbjpib3R0b207IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nLWJvdHRvbTo1cHg7IG1hcmdpbi1ib3R0b206NXB4OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC13ZWlnaHQ6bm9ybWFsOyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC10cmFuc2Zvcm06bm9uZTsgbGluZS1oZWlnaHQ6MThweH0gLnRleHRfYm94NjB7d2lkdGg6MTMzcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjA7IH0gLnRleHRfYm94NjAgaDJ7d2lkdGg6MTMzcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjA7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMyNjI2MjY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXdlaWdodDpib2xkOyB0ZXh0LWFsaWduOmxlZnQ7IHRleHQtdHJhbnNmb3JtOm5vbmU7IGxpbmUtaGVpZ2h0OjE4cHh9IC50ZXh0X2JveDYwIGgze3dpZHRoOjEzM3B4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZzowOyBmb250LXNpemU6MXJlbSA7IGNvbG9yOiM3YjAwMDA7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXdlaWdodDpub3JtYWw7IHRleHQtYWxpZ246bGVmdDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgbGluZS1oZWlnaHQ6MThweH0gLnRleHRfYm94NjAgcHt3aWR0aDoxMzNweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6NXB4IDA7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMyNjI2MjY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXdlaWdodDpib2xkOyB0ZXh0LWFsaWduOmxlZnQ7IHRleHQtdHJhbnNmb3JtOm5vbmU7IGxpbmUtaGVpZ2h0OjE4cHh9IC52aW9ye3dpZHRoOmF1dG87IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjBweCAxMHB4OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3Zpb3IucG5nKSBsZWZ0IHRvcCByZXBlYXQteDsgbGluZS1oZWlnaHQ6MjJweDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6I0ZGRkZGRjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgdGV4dC1hbGlnbjpsZWZ0OyB0ZXh0LXRyYW5zZm9ybTpub25lOyAtbW96LWJvcmRlci1yYWRpdXM6NXB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NXB4OyBib3JkZXItcmFkaXVzOjVweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6NXB4OyB9IC5ib3gxMzN7d2lkdGg6MTMzcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjA7IG1hcmdpbjowO30gLmJveDI1OHt3aWR0aDoyNThweDsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2I5YjliOTsgcGFkZGluZzowIDEwcHggNXB4IDEwcHg7IG1hcmdpbi1ib3R0b206NXB4OyBmbG9hdDpsZWZ0O30gLmJveDExNnt3aWR0aDoxMTZweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGJvcmRlcjoycHggc29saWQgI0ZGRkZGRjsgcGFkZGluZzowOyBtYXJnaW4tcmlnaHQ6NXB4O30gLmJveDExNiBpbWd7d2lkdGg6MTIwcHg7IH0gLmJveDJ7d2lkdGg6MjYwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW4tcmlnaHQ6NDdweDsgbWFyZ2luLWxlZnQ6MjBweDsgcGFkZGluZzowIDAgMTBweCA1cHg7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiMyNDI0MjQgO30gLmJveDIgc3Bhbntmb250OmJvbGQgMTJweCBWZXJkYW5hLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBjb2xvcjojRkYwMDAwfSAuYm94M3t3aWR0aDoyNjBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbi1yaWdodDoyMHB4OyBwYWRkaW5nOjAgMCAxMHB4IDVweDsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzI0MjQyNCA7fSAuYm94MyBzcGFue2ZvbnQ6Ym9sZCAxMnB4IFZlcmRhbmEsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGNvbG9yOiNGRjAwMDB9IC5ib3g0e3dpZHRoOjI2NXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luOjBweCA0NXB4IDEwcHggMjBweDsgfSAuYm94NDR7d2lkdGg6MjY1cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46MHB4IDQ3cHggMTBweCAyMHB4OyBwb3NpdGlvbjpyZWxhdGl2ZTt9IC5ib3g1e3dpZHRoOjI2NXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luOjBweCAyMHB4IDEwcHggMDt9IC5ib3g2e3dpZHRoOjI4MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luOjEwcHggMHB4IDBweCAwO30gLmJveDU1e3dpZHRoOjI2NXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luOjBweCAyMHB4IDEwcHggMDtwb3NpdGlvbjpyZWxhdGl2ZTt9IC5saW4ye3dpZHRoOjYxN3B4OyBoZWlnaHQ6MnB4OyBmbG9hdDpsZWZ0OyBtYXJnaW46MHB4IDAgMTBweCAwOyBwYWRkaW5nOjA7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvbGluZTIucG5nKSBsZWZ0IHRvcCByZXBlYXQteDt9IC5ib3gxNHtwYWRkaW5nOjBweCAwOyBoZWlnaHQ6MTVweDsgZmxvYXQ6bGVmdH0gLmJveDIwe3BhZGRpbmc6MCAxMHB4OyBmbG9hdDpsZWZ0OyBsaW5lLWhlaWdodDoyN3B4OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMjQyNDI0IDsgZm9udC13ZWlnaHQ6Ym9sZDt9IC50ZXh0MzB7d2lkdGg6NjE3cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjE3cHggMDsgZm9udC1zaXplOjEuMzc1cmVtIDsgY29sb3I6IzI0MjQyNH0gLnRleHQzMCBzcGFue3BhZGRpbmctcmlnaHQ6MTBweDsgZmxvYXQ6cmlnaHQ7IHRleHQtYWxpZ246cmlnaHQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgY29sb3I6IzI0MjQyNDt9IC50ZXh0MzAgc3BhbiBzdHJvbmd7Zm9udDpib2xkIDIwcHggVmVyZGFuYSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgY29sb3I6I0ZGMDAwMCB9IC5ib3g2MTd7d2lkdGg6NjE3cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nLWxlZnQ6MHB4OyBwYWRkaW5nLWJvdHRvbToyMHB4OyBtYXJnaW4tcmlnaHQ6MHB4O30gLm1haW42MTd7d2lkdGg6NjE3cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nLWxlZnQ6MHB4OyBtYXJnaW4tdG9wOjE1cHg7fSAuYm94MjBBe3BhZGRpbmc6MCA1cHg7IGZsb2F0OmxlZnQ7IGxpbmUtaGVpZ2h0OjI1cHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMyNDI0MjQgOyBmb250LXdlaWdodDpib2xkO30gLm9uU2l0ZSArIC5wcmVmZXJyZWQsIC5wcmVmZXJyZWQ6aGFzKCsub25TaXRlKSB7IGFsaWduLXNlbGY6ZW5kOyB9ICNzZXJ2aWNlUGFja2FnZXMgdGFibGUge2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTsgd2lkdGg6MTAwJTsgbGluZS1oZWlnaHQ6MzBweDsgbWFyZ2luLWJvdHRvbToxNXB4OyBmb250LXNpemU6OTAlO30gI3NlcnZpY2VQYWNrYWdlcyB0YWJsZSB0Ym9keSB0cjpudGgtY2hpbGQob2RkKSB7YmFja2dyb3VuZDojZjNmM2YzO30gI3NlcnZpY2VQYWNrYWdlcyB0YWJsZSB0ZHtwYWRkaW5nLXRvcDowLjVyZW07IHZlcnRpY2FsLWFsaWduOnRvcDsgbGluZS1oZWlnaHQ6MS41O30gI3NlcnZpY2VQYWNrYWdlcyB0YWJsZSB0ZDpudGgtY2hpbGQoMikge3BhZGRpbmc6MC41cmVtO30gLmRldGFpbENhclRpdGxlLCAuZGV0YWlsQ2FyVGl0bGVXaWRlLCAuZGV0YWlsQ2FyVGl0bGVGdWxsIHt3b3JkLXdyYXA6YnJlYWstd29yZDtoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luOjBweDsgZm9udC1zaXplOjEuODc1cmVtIDsgY29sb3I6IzQxNDE0MTtmb250LXdlaWdodDpub3JtYWw7fSAuZGV0YWlsQ2FyVGl0bGUge3dpZHRoOjQ5MHB4O30gLmRldGFpbENhclRpdGxlV2lkZSB7d2lkdGg6Nzc1cHg7fSAuZGV0YWlsQ2FyVGl0bGVGdWxsIHt3aWR0aDoxMDAlO30gLm1haW5ib3hfdGV4dGFyZTYxN3toZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZy1sZWZ0OjBweDsgbWFyZ2luOjIwcHggMDsgdHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLCAwJSk7IHBvc2l0aW9uOnJlbGF0aXZlOyBsZWZ0OjUwJTt9IC50ZXh0Ym94MjJ7d2lkdGg6MzgxcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nLWxlZnQ6MHB4OyBtYXJnaW46MHB4IDBweCAwIDA7fSAuYnV0dG9uNTF7IHdpZHRoOmF1dG87IGhlaWdodDozNnB4OyBmbG9hdDpsZWZ0OyB9IC5idXR0b241MSBheyB3aWR0aDphdXRvOyBoZWlnaHQ6MzZweDsgZmxvYXQ6bGVmdDsgLW1vei1ib3JkZXItcmFkaXVzOjVweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjVweDsgYm9yZGVyLXJhZGl1czo1cHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjVweDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9idXR0b241LnBuZykgbGVmdCB0b3AgcmVwZWF0LXg7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGNvbG9yOiNGRkZGRkYgOyBwYWRkaW5nOjAgMTBweDsgbGluZS1oZWlnaHQ6MzZweDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTsgfSAuYnV0dG9uNTEgYTpob3Zlcnsgd2lkdGg6YXV0bzsgaGVpZ2h0OjM2cHg7IGZsb2F0OmxlZnQ7IC1tb3otYm9yZGVyLXJhZGl1czo1cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo1cHg7IGJvcmRlci1yYWRpdXM6NXB4OyAta2h0bWwtYm9yZGVyLXJhZGl1czo1cHg7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvYnV0dG9uNS5wbmcpIGxlZnQgLTQ0cHggcmVwZWF0LXg7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGNvbG9yOiNGRkZGRkYgOyBwYWRkaW5nOjAgMTBweDsgbGluZS1oZWlnaHQ6MzZweDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTt9IC50ZXh0NTV7d2lkdGg6MzgxcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nLWxlZnQ6MHB4OyBtYXJnaW46MHB4IDBweCAyMHB4IDA7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOnZhcigtLWRlZmF1bHQtYmxhY2spIDsgbGluZS1oZWlnaHQ6MThweDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0gLnRleHQ1NSBweyBwYWRkaW5nLWxlZnQ6MHB4IDVweCAwIDA7IG1hcmdpbjowcHggMHB4IDBweCAwOyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjp2YXIoLS1kZWZhdWx0LWJsYWNrKTsgbGluZS1oZWlnaHQ6MThweDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0gLnBpY2JveF8yMjF7aGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmctbGVmdDowcHg7IG1hcmdpbjowcHggMTVweCAwIDA7fSAucGljYm94XzIyMSBpbWcgeyB3aWR0aDozMzJweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czozcHg7IH0gLmlzRnVsbFdpZHRoUGFnZSAucGljYm94XzIyMSBpbWcgeyB3aWR0aDo0NDJweDsgfSAucGljYm94NjUxe3dpZHRoOjY1MXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luOjVweCAxMHB4IDBweDt9IC5waWNib3g5MzB7d2lkdGg6OTMwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46NXB4IDVweCAwcHg7fSAucGljYm94NjUxIGltZyB7IHdpZHRoOjY1MXB4OyB9IC5waWNib3g5MzAgaW1nIHsgd2lkdGg6OTMwcHg7IH0gLnBpY2JveDY1MSBpbWcsIC5waWNib3g5MzAgaW1nIHsgZmxvYXQ6bGVmdDsgY3Vyc29yOnBvaW50ZXI7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czozcHg7IH0gLnRvcFByb21vSW1hZ2UgaW1nIHsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDsgbWFyZ2luLXRvcDo1cHg7IHdpZHRoOjkzMHB4OyBjdXJzb3I6cG9pbnRlcjsgfSAudG9wUHJvbW9JbWFnZVVzZWQgaW1nIHsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDsgd2lkdGg6NjUwcHg7IGN1cnNvcjpwb2ludGVyOyB9IC50ZWFtX3RpdGxlX2RlYWxlcnttYXJnaW4tYm90dG9tOjE1cHg7IHRleHQtYWxpZ246Y2VudGVyO30gLmZvcm1zX2JveDY2MXt3aWR0aDo5NjBweDsgaGVpZ2h0OmF1dG87IG1hcmdpbjoxMHB4IGF1dG87IH0gLnBpY2JveDkwe3dpZHRoOjkwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW4tcmlnaHQ6OHB4OyBib3JkZXI6MXB4IHNvbGlkICNhY2FjYWM7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czozcHg7IH0gLnBpY2JveDkwIGltZyB7d2lkdGg6OTBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czozcHg7IH0gLnRleHRib3gxOTF7d2lkdGg6NTIlOyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODEzcmVtIDsgbGluZS1oZWlnaHQ6MS4yOyBjb2xvcjojMjQyNDI0OyB9IC50ZXh0Ym94MTkxIGg0eyBmb250LXNpemU6MS4xMjVyZW0gOyBjb2xvcjojMjQyNDI0OyBwYWRkaW5nLWJvdHRvbTo1cHg7IH0gLm1haW5ib3gyOTF7d2lkdGg6MjkxcHg7IG1pbi1oZWlnaHQ6MTIzcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46MCA1cHggMTBweCAwOyBiYWNrZ3JvdW5kOiNlNmU2ZTY7IGJvcmRlcjoxcHggc29saWQgI2Q0ZDRkNDsgLW1vei1ib3JkZXItcmFkaXVzOjhweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjhweDsgYm9yZGVyLXJhZGl1czo4cHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjhweDsgcGFkZGluZzoxNXB4IDEwcHg7fSAubGF6eXtib3JkZXI6MDtkaXNwbGF5Om5vbmV9IC50ZWNoU3BlY3N7d2lkdGg6NjIxcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46MHB4OyBwYWRkaW5nOjI1cHggMTVweDsgYmFja2dyb3VuZDojZWJlYmViOyBiYWNrZ3JvdW5kLXBvc2l0aW9uOnJpZ2h0IGJvdHRvbTsgLW1vei1ib3JkZXItcmFkaXVzLXRvcGxlZnQ6MHB4Oy1tb3otYm9yZGVyLXJhZGl1cy10b3ByaWdodDowcHg7LW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbXJpZ2h0OjZweDstbW96LWJvcmRlci1yYWRpdXMtYm90dG9tbGVmdDo2cHg7LXdlYmtpdC1ib3JkZXItdG9wLWxlZnQtcmFkaXVzOjBweDstd2Via2l0LWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOjBweDstd2Via2l0LWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjZweDstd2Via2l0LWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NnB4O2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MHB4O2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjBweDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjZweDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czo2cHg7fSAuZW1haWxfbGlua3t0ZXh0LWRlY29yYXRpb246bm9uZTsgY29sb3I6Izg4ODt9IC5lbWFpbF9saW5rOmhvdmVye3RleHQtZGVjb3JhdGlvbjpub25lOyBjb2xvcjojMzMzO30gLnBhZ2VfbmFtZTU1NSB7IGNvbG9yOiMyNDI0MjQ7IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZToxLjVyZW0gOyBmb250LXdlaWdodDpub3JtYWw7IGhlaWdodDphdXRvOyBsaW5lLWhlaWdodDozMHB4OyBwYWRkaW5nOjAgMCAxMHB4IDA7IHdpZHRoOjEwMCU7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgbWFyZ2luOjA7IH0gLnBhZ2VfbmFtZTU1NSBheyBjb2xvcjojMjQyNDI0OyB9IC5wYWdlX25hbWU1NTUgYTpob3ZlcnsgY29sb3I6IzI0MjQyNDsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgfSAucGFnZV9uYW1lNTU1IGE6dmlzaXRlZHsgY29sb3I6IzI0MjQyNDsgfSAucGFnZV9uYW1lTkVXNTU1IHsgY29sb3I6IzI0MjQyNDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBoZWlnaHQ6YXV0bzsgZm9udC1zaXplOjAuODc1cmVtIDsgfSAucGFnZV9uYW1lTkVXNTU1IGF7IGNvbG9yOiMyNDI0MjQ7IH0gLnBhZ2VfbmFtZU5FVzU1NSBhOmhvdmVyeyBjb2xvcjojMjQyNDI0OyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyB9IC5wYWdlX25hbWVORVc1NTUgYTp2aXNpdGVkeyBjb2xvcjojMjQyNDI0OyB9IC5ib3gyX3RleHQ0NCB7IGNvbG9yOiMyNDI0MjQ7IGZvbnQtc2l6ZToxcmVtOyBoZWlnaHQ6YXV0bzsgbGluZS1oZWlnaHQ6MThweDsgcGFkZGluZzoxMHB4IDAgMCAwOyB3aWR0aDphdXRvOyB9IC50ZXh0X2JveDExIHsgZmxvYXQ6bGVmdDsgaGVpZ2h0OmF1dG87IG1hcmdpbjowOyBwYWRkaW5nOjAgMjBweCAxMHB4IDA7IHdpZHRoOmF1dG87IGxpbmUtaGVpZ2h0OjIxcHg7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyB9IC50ZXh0X2JveDExIGg0IHsgY29sb3I6IzI0MjQyNDsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgaGVpZ2h0OmF1dG87IG1hcmdpbjowOyBwYWRkaW5nOjEwcHggMDsgfSAudGV4dF9ib3gxMSBhIHsgY29sb3I6IzI0MjQyNDsgZm9udC1zaXplOjAuNzVyZW0gOyBoZWlnaHQ6YXV0bzsgbWFyZ2luLWxlZnQ6MDsgcGFkZGluZzoxMHB4IDA7IGZsb2F0OmxlZnQ7IH0gLnRleHRfYm94MTEgYTpob3ZlciB7IGNvbG9yOiMyNDI0MjQ7IH0gLnRleHRfYm94MTEgYTp2aXNpdGVkIHsgY29sb3I6IzI0MjQyNDsgfSAudGV4dF9ib3gxMSB1bCwgLnRleHRfYm94MTEgcCB7IH0gLnRleHRfYm94MTEgdWwsIC50ZXh0X2JveDExIHAgeyBjb2xvcjojMjQyNDI0OyBmb250LXNpemU6MC44NzVyZW0gOyBoZWlnaHQ6YXV0bzsgbWFyZ2luOjA7IHBhZGRpbmc6MCAwIDVweDsgfSAudGV4dF9ib3gxMSB1bCB7IGxpc3Qtc3R5bGUtcG9zaXRpb246aW5zaWRlOyB9IC50ZXh0X2JveDExIHAgYSB7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IG1hcmdpbjowOyBwYWRkaW5nOjA7IGZsb2F0Om5vbmU7IH0gLnBpY2JveDMzNiB7IGJvcmRlcjoxcHggc29saWQgIzdEN0Q3RDsgZmxvYXQ6bGVmdDsgaGVpZ2h0OmF1dG87IG1hcmdpbi1yaWdodDo2OHB4OyB9IC5mb250X3NpemUyMSB7IGZvbnQtc2l6ZToxLjMxM3JlbSAhaW1wb3J0YW50OyB9IC5wYWdlX25hbWUxOCB7IGNvbG9yOiMyNDI0MjQ7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGhlaWdodDphdXRvOyBsaW5lLWhlaWdodDozMHB4OyBwYWRkaW5nOjAgMCAxMHB4IDA7IHdpZHRoOjEwMCU7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gLnBhZ2VfbmFtZTE4IGF7IGNvbG9yOiMyNDI0MjQ7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9IC5wYWdlX25hbWUxOCBhOmhvdmVyeyBjb2xvcjojMjQyNDI0OyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyB9IC52aWRlbzUgeyBmbG9hdDpsZWZ0OyBoZWlnaHQ6NDFweDsgbWFyZ2luLXRvcDo3MHB4OyBtYXJnaW4tbGVmdDo3MHB4OyB9IC5mbG9hdExvZ297IHdpZHRoOjYyMXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luOjBweDsgcGFkZGluZzoyNXB4IDE1cHg7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvTE9HT19HQV9UUkFOU1BBUkVOVC5wbmcpIHJpZ2h0IGJvdHRvbSBuby1yZXBlYXQ7IGJhY2tncm91bmQtcG9zaXRpb246cmlnaHQgYm90dG9tOyAtbW96LWJvcmRlci1yYWRpdXMtdG9wbGVmdDowcHg7LW1vei1ib3JkZXItcmFkaXVzLXRvcHJpZ2h0OjBweDstbW96LWJvcmRlci1yYWRpdXMtYm90dG9tcmlnaHQ6NnB4Oy1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21sZWZ0OjZweDstd2Via2l0LWJvcmRlci10b3AtbGVmdC1yYWRpdXM6MHB4Oy13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MHB4Oy13ZWJraXQtYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6NnB4Oy13ZWJraXQtYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo2cHg7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowcHg7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MHB4O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NnB4O2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjZweDsgfSAuYnV0dG9uMi5qcVRyYW5zZm9ybUJ1dHRvbiB7IGJhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7IGJvcmRlcjptZWRpdW0gbm9uZTsgY29sb3I6I0ZGRkZGRjsgY3Vyc29yOnBvaW50ZXI7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IG1hcmdpbjowOyBvdmVyZmxvdzp2aXNpYmxlOyBwYWRkaW5nOjA7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9IC5idXR0b24yLmpxVHJhbnNmb3JtQnV0dG9uIHNwYW4geyBiYWNrZ3JvdW5kOnVybCgiL2ltYWdlcy9idG5fcmlnaHQyLnBuZyIpIG5vLXJlcGVhdCBzY3JvbGwgcmlnaHQgdG9wIHRyYW5zcGFyZW50OyBkaXNwbGF5OmJsb2NrOyBmbG9hdDpsZWZ0OyBoZWlnaHQ6MzVweDsgbWFyZ2luOjA7IHBhZGRpbmc6MCA2cHggMCAwOyB9IC5idXR0b24yLmpxVHJhbnNmb3JtQnV0dG9uIHNwYW4gc3BhbiB7IGJhY2tncm91bmQ6dXJsKCIvaW1hZ2VzL2J0bl9sZWZ0Mi5wbmciKSBuby1yZXBlYXQgc2Nyb2xsIGxlZnQgdG9wIHRyYW5zcGFyZW50OyBjb2xvcjojRkZGRkZGOyBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MC44MTNyZW0gOyBmb250LXdlaWdodDpub3JtYWw7IGhlaWdodDoyNnB4OyBsaW5lLWhlaWdodDoxM3B4OyBwYWRkaW5nOjEycHggMTNweCAwIDE1cHg7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7IH0gLmJ1dHRvbjIuanFUcmFuc2Zvcm1CdXR0b25faG92ZXIgc3BhbiBzcGFuIHsgYmFja2dyb3VuZC1wb3NpdGlvbjpsZWZ0IC0zOHB4OyB9IC5idXR0b24yLmpxVHJhbnNmb3JtQnV0dG9uX2hvdmVyIHNwYW4geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOnJpZ2h0IC0zOHB4OyB9IC5idXR0b24yLmpxVHJhbnNmb3JtQnV0dG9uX2NsaWNrIHNwYW4gc3BhbiB7IGJhY2tncm91bmQtcG9zaXRpb246bGVmdCAtNjZweDsgfSAuYnV0dG9uMi5qcVRyYW5zZm9ybUJ1dHRvbl9jbGljayBzcGFuIHsgYmFja2dyb3VuZC1wb3NpdGlvbjpyaWdodCAtNjZweDsgfSAudmVoaWNsZUxpc3RUYWJsZSB7IG1hcmdpbjoxMHB4OyBmb250LXNpemU6MC43NXJlbSA7IGNvbG9yOiM0MTQxNDE7IH0gLnZlaGljbGVMaXN0VGFibGUgdHIgdGQgeyBib3JkZXItYm90dG9tOjFweCBkb3R0ZWQgIzY2NjY2NjsgaGVpZ2h0OjMwcHg7IH0gLnZlaGljbGVMaXN0VGFibGUgdHIgdGQgYXsgY29sb3I6IzQxNDE0MTsgZm9udC1zaXplOjAuNzVyZW0gOyB9IC52ZWhpY2xlTGlzdFRhYmxlIHRyIHRkIGE6aG92ZXJ7IGNvbG9yOiM0MTQxNDE7IGZvbnQtc2l6ZTowLjc1cmVtIDsgfSAudmVoaWNsZUxpc3RUYWJsZSB0ciB0ZCBhOnZpc2l0ZWR7IGNvbG9yOiM0MTQxNDE7IGZvbnQtc2l6ZTowLjc1cmVtIDsgfSAuZXhwYW5kUm93eyBiYWNrZ3JvdW5kLWNvbG9yOiMxZjFmMWY7IHRleHQtYWxpZ246cmlnaHQ7IGNvbG9yOiM0MTQxNDE7IG1hcmdpbi1sZWZ0OjRweDsgbWFyZ2luLXJpZ2h0OjJweDsgfSBkaXYuZXJyb3JNc2cgeyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmRkZGQ7IGJhY2tncm91bmQtaW1hZ2U6dXJsKCIvaW1hZ2VzL2Vycm9yLnBuZyIpOyBiYWNrZ3JvdW5kLXBvc2l0aW9uOjEwcHggY2VudGVyOyBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7IGJvcmRlcjoxcHggc29saWQ7IGNvbG9yOiNkMTAwMGM7IGRpc3BsYXk6bm9uZTsgZmxvYXQ6bGVmdDsgei1pbmRleDo5OTk5OyBwYWRkaW5nOjE1cHggMTBweCAxNXB4IDUwcHg7IH0gZGl2LmVtYWlsU2VudE1zZyB7IGJhY2tncm91bmQtY29sb3I6I2VmZmZlZjsgYmFja2dyb3VuZC1pbWFnZTp1cmwoIi9pbWFnZXMvYWNjZXB0ZWQucG5nIik7IGJhY2tncm91bmQtcG9zaXRpb246MTBweCBjZW50ZXI7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYm9yZGVyOjFweCBzb2xpZCAjMDk3NzAwOyBjb2xvcjojMDk3NzAwOyBkaXNwbGF5Om5vbmU7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MTVweCAxMHB4IDE1cHggNTBweDsgfSBkaXYudG95b3RJbWFnZSB7IGNvbG9yOiM2NjY2NjY7IGZvbnQtc2l6ZTozLjQzOHJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IGhlaWdodDoyNTBweDsgbGVmdDowOyBvcGFjaXR5OjAuODsgb3ZlcmZsb3c6aGlkZGVuOyBwYWRkaW5nOjVweCAxMHB4OyBwb3NpdGlvbjphYnNvbHV0ZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHdpZHRoOjM4MHB4OyB6LWluZGV4Ojg7IH0gZGl2LnRveW90SW1hZ2UgcCB7IHBhZGRpbmc6NXB4OyBtYXJnaW46MDsgZm9udC1zaXplOjAuOTM4cmVtIDsgY29sb3I6I0E2QTZBNjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0gZGl2Lm5ld0Nhck1haW5Cb3ggeyB3aWR0aDo5NjBweDsgbWFyZ2luOjAgYXV0bzsgfSBkaXYubmV3Q2FyTWFpbkJveDIgeyBtYXJnaW4tdG9wOjVweDsgfSBkaXYubmV3Q2FyTWFpbkJveDMgeyB3aWR0aDo5NjBweDsgaGVpZ2h0OjEycHg7IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvYm94OTcwX3RvcC5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDsgfSAuc3RvY2tJbWdTdHlsZXsgd2lkdGg6MTAwJTsgaGVpZ2h0OjUwJTsgZm9udC1zaXplOjIuMjVyZW0gOyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC13ZWlnaHQ6Ym9sZDsgcGFkZGluZy10b3A6MzBweDsgcG9zaXRpb246YWJzb2x1dGU7IG1hcmdpbjowcHg7IGNvbG9yOiMzMDMwMzA7IH0gI2ZpcnN0U2xpZGVySW1nIHsgYmFja2dyb3VuZC1jb2xvcjojZmZmOyBwb3NpdGlvbjphYnNvbHV0ZTsgei1pbmRleDoxNTsgd2lkdGg6MTAwJTsgaGVpZ2h0OmF1dG87IG9wYWNpdHk6MTsgcGFkZGluZzowOyBtYXJnaW46MDsgfSAjZmlyc3RTbGlkZXJJbWcgLnBsYWNlaG9sZGVyeyBib3JkZXI6MXB4IHNvbGlkICNGRkY7IHdpZHRoOjY0MHB4OyBoZWlnaHQ6NDgwcHg7IH0gI2ZpcnN0U2xpZGVySW1nIC5wbGFjZWhvbGRlciAuaW5uZXItcGxhY2Vob2xkZXJ7IHBvc2l0aW9uOmFic29sdXRlOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgb3ZlcmZsb3c6aGlkZGVuOyBkaXNwbGF5OmZsZXg7IHRvcDowOyBib3R0b206MDsgbGVmdDowOyByaWdodDowOyB9ICNmaXJzdFNsaWRlckltZyBJTUd7IGhlaWdodDphdXRvOyBtYXgtd2lkdGg6NjQwcHg7IG1heC1oZWlnaHQ6NDgwcHg7IHdpZHRoOmF1dG87IG1hcmdpbjphdXRvOyB9ICNmaXJzdFNsaWRlckltZy5mYWRlLW91dHsgdmlzaWJpbGl0eTpoaWRkZW47IG9wYWNpdHk6MDsgLXdlYmtpdC10cmFuc2l0aW9uOnZpc2liaWxpdHkgMW1zIDAuMjVzLCBvcGFjaXR5IDAuMjVzIGxpbmVhcjsgLW1vei10cmFuc2l0aW9uOnZpc2liaWxpdHkgMW1zIDAuMjVzLCBvcGFjaXR5IDAuMjVzIGxpbmVhcjsgLW8tdHJhbnNpdGlvbjp2aXNpYmlsaXR5IDFtcyAwLjI1cywgb3BhY2l0eSAwLjI1cyBsaW5lYXI7IHRyYW5zaXRpb246dmlzaWJpbGl0eSAxbXMgMC4yNXMsIG9wYWNpdHkgMC4yNXMgbGluZWFyOyB9ICNzb2NpYWxUaW1lbGluZXsgd2lkdGg6OTYwcHg7IGhlaWdodDphdXRvOyB9IGRpdi5uZXdDYXJNYWluQm94NCB7IHdpZHRoOjk0MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9ib3g5NzBfbWlkLnBuZykgbGVmdCB0b3AgcmVwZWF0LXk7IHBhZGRpbmc6MTBweCAxNXB4OyB9IGRpdi5uZXdDYXJUaXRsZUJveCBoMXsgd2lkdGg6OTQwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MS44NzVyZW0gOyBjb2xvcjojMzAzMDMwOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSAuZ3JheWJveCB7IGJhY2tncm91bmQtY29sb3I6I0VGRUZFRjsgYm9yZGVyOjFweCBzb2xpZCAjRkZGRkZGOyBib3JkZXItcmFkaXVzOjNweDsgY29sb3I6IzAwMDsgZm9udC1zaXplOjAuODEzcmVtIDsgbGluZS1oZWlnaHQ6bm9ybWFsOyBwYWRkaW5nOjEwcHggMCAxMHB4IDA7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LXNoYWRvdzowIDFweCAwICNGRkZGRkY7IH0gLmdyYXlib3ggPiBzcGFuIHsgY29sb3I6IzAwMDsgZm9udC1zaXplOjAuODEzcmVtIDsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLmdyYXlib3ggLnNtYWxsdGV4dCB7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNDQ0NDQ0M7IGJvcmRlci10b3A6MXB4IHNvbGlkICNDQ0NDQ0M7IGNvbG9yOiMzMzMzMzM7IGZvbnQtc2l6ZTowLjY4OHJlbSA7IG1hcmdpbi10b3A6MTBweDsgcGFkZGluZzoxMHB4OyB9IC5ncmF5Ym94IGgyIHsgY29sb3I6IzAwMDsgZm9udC1zaXplOjEuNXJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IG1hcmdpbjo1cHggYXV0bzsgfSAuZXh0ZW5kZWRQaG9uZXsgcG9zaXRpb246Zml4ZWQ7IGJhY2tncm91bmQtY29sb3I6IzY3Njc2NzsgY29sb3I6I2RkZDsgcGFkZGluZzowLjZlbTsgYm9yZGVyLXJhZGl1czo1cHg7IHotaW5kZXg6OTk5OTsgZm9udC1zaXplOjAuODc1cmVtIDsgdGV4dC1hbGlnbjpsZWZ0OyB9IC5leHRlbmRlZFBob25lIGxhYmVseyBkaXNwbGF5OmlubGluZS1ibG9jazsgfSAuZXh0ZW5kZWRQaG9uZSBzcGFueyBjb2xvcjojZmZmOyB9IC5waG9uZU5vdGV7IGZvbnQtc2l6ZTowLjY4OHJlbSA7IHBhZGRpbmctdG9wOjdweDsgfSAuYWRkZWRTZWFyY2hMaW5rc0RpdkV4IHsgY29sb3I6IzQxNDE0MTsgZm9udC1zaXplOjFyZW0gOyB0ZXh0LWFsaWduOmxlZnQ7IHBhZGRpbmctbGVmdDoyMHB4OyBwYWRkaW5nLXRvcDozMHB4OyB9IC5hZGRlZFNlYXJjaExpbmtzRGl2IGRpdnsgcGFkZGluZy1sZWZ0OjEwcHg7IHBhZGRpbmctdG9wOjEwcHg7IHdpZHRoOjIwMHB4OyBmbG9hdDpsZWZ0OyB9IC5hZGRlZFNlYXJjaExpbmtzRGl2IHVseyBtYXJnaW4tYm90dG9tOjIwcHg7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IG1hcmdpbi10b3A6NXB4OyB9IC5hZGRlZFNlYXJjaExpbmtzRGl2IHVsIGxpeyBsaXN0LXN0eWxlOm5vbmUgb3V0c2lkZSBub25lOyBkaXNwbGF5OmJsb2NrOyBtYXJnaW4tbGVmdDo0MHB4OyB0ZXh0LWluZGVudDotMTBweDsgfSAuYWRkZWRTZWFyY2hMaW5rc0RpdiB1bCBsaSBheyBjb2xvcjojMzMzOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgY3Vyc29yOnBvaW50ZXI7IH0gLmFkZGVkU2VhcmNoTGlua3NEaXYgdWwgbGkgYXsgYmFja2dyb3VuZDp1cmwoIi9pbWFnZXMvYXJyb3dfcmVkLnBuZyIpIG5vLXJlcGVhdCBzY3JvbGwgMCAxMHB4IHRyYW5zcGFyZW50OyBjb2xvcjojMzMzMzMzOyBtYXJnaW4tcmlnaHQ6MnB4OyBwYWRkaW5nOjZweCAxMHB4OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSAuYWRkZWRTZWFyY2hMaW5rc0RpdiB1bCBsaSBhOmhvdmVyIHsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgfSAuY29tcGFyZUxpbmtzIGF7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9IC5jb21wYXJlTGlua3MgYTpob3ZlcnsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgfSAuZW1haWxCb2R5LCAuZW1haWxTdWJqZWN0eyBkaXNwbGF5Om5vbmU7IH0gI2NvbnRhY3R1cyBkaXYuZXJyb3JNc2cgeyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmRkZGQ7IGJhY2tncm91bmQtaW1hZ2U6dXJsKCIvaW1hZ2VzL2Vycm9yLnBuZyIpOyBiYWNrZ3JvdW5kLXBvc2l0aW9uOjEwcHggY2VudGVyOyBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7IGJvcmRlcjoxcHggc29saWQ7IGNvbG9yOiNkMTAwMGM7IGRpc3BsYXk6bm9uZTsgZmxvYXQ6bGVmdDsgcGFkZGluZzoxNXB4IDEwcHggMTVweCA1MHB4OyB9ICNjb250YWN0dXMgZGl2LmVtYWlsU2VudE1zZyB7IGJhY2tncm91bmQtY29sb3I6I2VmZmZlZjsgYmFja2dyb3VuZC1pbWFnZTp1cmwoIi9pbWFnZXMvYWNjZXB0ZWQucG5nIik7IGJhY2tncm91bmQtcG9zaXRpb246MTBweCBjZW50ZXI7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYm9yZGVyOjFweCBzb2xpZCAjMDk3NzAwOyBjb2xvcjojMDk3NzAwOyBkaXNwbGF5Om5vbmU7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MTVweCAxMHB4IDE1cHggNTBweDsgfSAjUGFnZUZpbmFuY2UgLnN0ZXBBY3RpdmUgeyBiYWNrZ3JvdW5kOnVybCgiL2ltYWdlcy8xX2hvdmVyLnBuZyIpIG5vLXJlcGVhdCBzY3JvbGwgbGVmdCB0b3AgdHJhbnNwYXJlbnQ7IGNvbG9yOiMxYjFiMWI7IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZToyLjI1cmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgaGVpZ2h0OjQ2cHg7IGxpbmUtaGVpZ2h0OjQ2cHg7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgd2lkdGg6NDZweDsgbWFyZ2luLWxlZnQ6MTBweDsgfSAjUGFnZUZpbmFuY2UgLnN0ZXBVbmFjdGl2ZSB7IGJhY2tncm91bmQ6dXJsKCIvaW1hZ2VzLzFfcm91bmQucG5nIikgbm8tcmVwZWF0IHNjcm9sbCBsZWZ0IHRvcCB0cmFuc3BhcmVudDsgY29sb3I6I0ZGRkZGRjsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjIuMjVyZW0gOyBmb250LXdlaWdodDpib2xkOyBoZWlnaHQ6NDZweDsgbGluZS1oZWlnaHQ6NDZweDsgdGV4dC1hbGlnbjpjZW50ZXI7IHRleHQtZGVjb3JhdGlvbjpub25lOyB3aWR0aDo0NnB4OyBtYXJnaW4tbGVmdDoxMHB4OyB9ICNQYWdlRmluYW5jZSAudGV4dDEgc3BhbiB7IGNvbG9yOiM0MzQzNDM7IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZToxLjg3NXJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IGhlaWdodDo0NnB4OyBsaW5lLWhlaWdodDo0NnB4OyBwYWRkaW5nOjA7IHRleHQtYWxpZ246bGVmdDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtc2hhZG93OjFweCAxcHggMXB4ICNGM0YzRjM7IHdpZHRoOmF1dG87IH0gI1BhZ2VGaW5hbmNlIGRpdi5lbWFpbFNlbnRNc2cgeyBiYWNrZ3JvdW5kLWNvbG9yOiNCOEZGQjg7IGJhY2tncm91bmQtaW1hZ2U6dXJsKCIvaW1hZ2VzL2FjY2VwdGVkLnBuZyIpOyBiYWNrZ3JvdW5kLXBvc2l0aW9uOjEwcHggY2VudGVyOyBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7IGJvcmRlcjoxcHggc29saWQgIzBCOTYwMDsgY29sb3I6IzBCOTYwMDsgZGlzcGxheTpub25lOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjE1cHggMTBweCAxNXB4IDUwcHg7IH0gLm90aGVyX2xpbmtzIGF7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9IC5vdGhlcl9saW5rcyBhOmhvdmVyeyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyB9IC5wcm9tb3Rpb25TaWRlQnRuQSB7IGJhY2tncm91bmQ6I2UzMTczZTsgY29sb3I6I2ZmZmZmZjsgZGlzcGxheTpibG9jaztmb250LXNpemU6MS4yNXJlbSA7d2lkdGg6Zml0LWNvbnRlbnQ7aGVpZ2h0OjUzcHg7cGFkZGluZzoycHggMTVweCAwcHggMTVweDtjdXJzb3I6cG9pbnRlcjtsaW5lLWhlaWdodDo1M3B4O3RleHQtZGVjb3JhdGlvbjpub25lO2JhY2tncm91bmQtc2l6ZToxMDAlOyAtbW96LWJvcmRlci1yYWRpdXMtdG9wbGVmdDozcHg7IC1tb3otYm9yZGVyLXJhZGl1cy10b3ByaWdodDozcHg7IC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21yaWdodDowcHg7IC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21sZWZ0OjA7IC13ZWJraXQtYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6M3B4OyAtd2Via2l0LWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjA7IC13ZWJraXQtYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowOyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czozcHg7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6M3B4OyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czpweDsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowcHg7IHRyYW5zZm9ybTpyb3RhdGUoLTkwZGVnKTsgLW1zLXRyYW5zZm9ybTpyb3RhdGUoLTkwZGVnKTsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC05MGRlZyk7IH0gLmZvb3Rlck11bHRpQWRkcmVzczMgeyBib3JkZXItcmlnaHQ6MXB4ICM5MTkxOTEgc29saWQ7IHBhZGRpbmctcmlnaHQ6NzBweDsgbWFyZ2luLWxlZnQ6MTRweDsgY29sb3I6IzU3NTc1NzsgfSAuZm9vdGVyTXVsdGlBZGRyZXNzMiB7IGJvcmRlci1yaWdodDoxcHggIzkxOTE5MSBzb2xpZDsgcGFkZGluZy1yaWdodDoxNTBweDsgbWFyZ2luLWxlZnQ6OTNweDsgY29sb3I6IzU3NTc1NzsgfSAuZm9vdGVyTXVsdGlBZGRyZXNzMSB7IG1hcmdpbi1sZWZ0OjM0NXB4OyBjb2xvcjojNTc1NzU3OyB9IC5zbWFsbEFjdGlvbldlYnNpdGVDb2xvciB7IGJhY2tncm91bmQgOnVybCgiL2ltYWdlcy9ibF9iZzIucG5nIikgbGVmdCB0b3AgcmVwZWF0LXg7IGNvbG9yOnJnYigyNTUsMjU1LDI1NSk7IH0gLnNtYWxsQWN0aW9uV2Vic2l0ZUNvbG9yOmhvdmVyeyBiYWNrZ3JvdW5kIDp1cmwoIi9pbWFnZXMvbWVudTEwX2JnLnBuZyIpIGxlZnQgdG9wIHJlcGVhdC14OyBjb2xvcjojRkZGOyB9IC5uYXYgbGkgYS50b3BfbGluay5pc0JvbGQsIC5uYXYgbGkgYS5pc0JvbGR7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gI21haW5IZWFkZXIgZGl2LmJveDE1UGFkZGluZ3sgcGFkZGluZy10b3A6MTVweDsgfSAubmF2IC5ub3RDbGlja2FibGV7IGN1cnNvcjpkZWZhdWx0ICFpbXBvcnRhbnQ7IH0gLlMxMDBQZXJjZW50V2lkdGh7IHdpZHRoOjEwMCU7IH0gI2ZpbHRlck1haW5Cb3ggeyBjb2xvcjojMDAwOyB9ICNmaWx0ZXJNYWluQm94IC5maWx0ZXJTcGFuLCAjZmlsdGVyTWFpbkJveCAuZmlsdGVyQ2hlY2ssICNmaWx0ZXJNYWluQm94IC5yYWRpb1NvcnQgeyBjdXJzb3I6cG9pbnRlcjsgfSAuYkNvZGVTdHlsZSB7IGZsb2F0OmxlZnQ7IHdpZHRoOjI1JTsgZm9udC1zaXplOjAuOGVtOyBwYWRkaW5nLXRvcDoxNXB4OyBwYWRkaW5nLWJvdHRvbToxNXB4OyBiYWNrZ3JvdW5kLWNvbG9yOjsgfSAuYkNvZGVTb3J0IHsgZmxvYXQ6bGVmdDsgd2lkdGg6MTYlOyBiYWNrZ3JvdW5kLWNvbG9yOjsgZm9udC1zaXplOjAuOGVtOyBwYWRkaW5nLXRvcDoxNXB4OyBwYWRkaW5nLWJvdHRvbToxNXB4OyB9IC5iQ29kZVNvcnQgLmJDb2RlSGVhZGluZywgLmJDb2RlU3R5bGUgLmJDb2RlSGVhZGluZyB7IG1hcmdpbi1ib3R0b206NXB4OyBmb250LXdlaWdodDpib2xkOyBwYWRkaW5nLWxlZnQ6MnB4OyB9IC5wYWdlX25hbWU0Mnt3aWR0aDo5NDBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MCAwcHggMTBweCAyMXB4OyBsaW5lLWhlaWdodDozMHB4OyBmb250LXNpemU6MS41cmVtIDsgY29sb3I6IzFiMWIxYjt9IC5wYWdlX25hbWU0MiBoMiB7Zm9udC1zaXplOjEuNXJlbSA7IGNvbG9yOiMxYjFiMWI7Zm9udC13ZWlnaHQ6bm9ybWFsO2JvcmRlcjpub25lO30gLnBhZ2VfbmFtZTQyIGgyLm5vdGZpcnN0IHtmb250LXNpemU6MS41cmVtIDsgY29sb3I6IzFiMWIxYjtmb250LXdlaWdodDpub3JtYWw7bWFyZ2luLXRvcDowcHg7cGFkZGluZy10b3A6NDBweDtib3JkZXItdG9wOjFweCAjY2NjY2NjIHNvbGlkO3dpZHRoOjkyMHB4O30gI2ZpbHRlck1haW5Cb3gubmV3Y2Fyc3N0eWxlMnsgLW1vei1ib3JkZXItcmFkaXVzOjBweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjBweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6MHB4OyBib3JkZXItcmFkaXVzOjBweDsgYm9yZGVyOm5vbmU7IGJvcmRlci10b3A6MXB4IHNvbGlkICNiZWJlYmU7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNiZWJlYmU7IHdpZHRoOjk1NXB4OyBsZWZ0OjNweDsgfSBkaXYuaW1kZXYgbGFiZWx7IGZvbnQtd2VpZ2h0OmJvbGQ7IHBhZGRpbmctdG9wOjEwcHg7IH0gZGl2LmltZGV2IGRpdnsgYmFja2dyb3VuZDpub25lOyBiYWNrZ3JvdW5kLWNvbG9yOiNEOUQ5RDk7IHBhZGRpbmc6MTBweCAwcHggMTBweCAwcHg7IHdpZHRoOjEwMCU7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IH0gZGl2LmltZGV2X2lubmVyIHsgZm9udC13ZWlnaHQ6bm9ybWFsOyBtYXJnaW4tbGVmdDozMHB4OyB3aWR0aDo5MCUgIWltcG9ydGFudDsgfSB1bC5xdWl6IHtwYWRkaW5nOjEwcHggMCAxMHB4IDIwcHg7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBoZWlnaHQ6MTc1cHg7fSB1bC5xdWl6IGxpIHtwYWRkaW5nOjEwcHg7fSB1bC5xdWl6IGxpIGlucHV0IHttYXJnaW4tcmlnaHQ6MTBweDt9IC5uZXdzLWJvZHkge3dpZHRoOjEwMCU7dGV4dC1hbGlnbjpyaWdodDtmb250LXNpemU6MC44MTNyZW0gO2NvbG9yOiMxOTE5MTk7cGFkZGluZy1yaWdodDoxNXB4O21hcmdpbi10b3A6LTIwcHg7cGFkZGluZy1ib3R0b206MTBweDt9IC5uZXdzLWFsbC10ZXh0IHtjb2xvcjojMTkxOTE5O30gI25ld3NDb250YWluZXIgLnRleHRfYm94MTEgaW1nIHsgbWF4LXdpZHRoOjY0MHB4OyBkaXNwbGF5OmJsb2NrOyBtYXJnaW46NXB4IGF1dG87IH0gI25ld3NDb250YWluZXIgLnVzZWR7IGNsZWFyOmJvdGg7IH0gLmhvbWVfYWN0aW9uX2FkaiB7IHdpZHRoOjk2MXB4OyB9IC5ob21lX2FjdGlvbl9hZGoyIHsgd2lkdGg6NzMwcHghaW1wb3J0YW50OyBoZWlnaHQ6NjAwcHghaW1wb3J0YW50OyB9IC5ob21lX2VtYWlseyB3aWR0aDoyMzJweDsgbWFyZ2luLWxlZnQ6NXB4OyBtYXJnaW4tYm90dG9tOjVweDsgfSAud2lkZ2V0X21lbnVfYWRqMXsgZm9udC1zaXplOjAuOGVtOyB9IC53aWRnZXRfbWVudV9hZGoyeyBmbG9hdDpyaWdodDtwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6LTJweDsgfSAud2lkZ2V0X21lbnVfZXh0ZW5kZWRQaG9uZXsgZm9udC1zaXplOjAuOGVtOyBtYXJnaW4tbGVmdDoxMDRweDsgdG9wOjEzMnB4OyB9IC53aWRnZXRfbWVudV9hZGozeyBmb250LXNpemU6MC44ZW07Y29sb3I6IzU3NTc1Nztwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0Oi04cHg7IH0gLndpZGdldF9tZW51X2FkajR7IHBvc2l0aW9uOnJlbGF0aXZlOyBmb250LXNpemU6MC44ZW07IGRpc3BsYXk6dGFibGU7IH0gLnBob25lX3RleHQucmlnaHQgeyBmbG9hdDpub25lOyBoZWlnaHQ6aW5pdGlhbDsgbWFyZ2luLWxlZnQ6YXV0bzsgd2lkdGg6aW5oZXJpdDsgfSAucGhvbmVfdGV4dCAudGVsIHsgbWFyZ2luLWxlZnQ6MTBweDsgfSAucGhvbmVfdGV4dCBsYWJlbCB7IGRpc3BsYXk6ZmxleDsganVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47IG1hcmdpbi1ib3R0b206NHB4OyB9IC53aWRnZXRfbWVudV9hZGo0LnJpZ2h0IHsgcGFkZGluZy1sZWZ0OjEwcHg7IHRleHQtYWxpZ246cmlnaHQ7IH0gLndpZGdldF9tZW51X2FkajQubGVmdCB7IHBhZGRpbmctcmlnaHQ6MTBweDsgd2lkdGg6aW5oZXJpdDsgfSAud2lkZ2V0X21lbnVfYWRqNnsgZm9udC1zaXplOjAuOGVtO3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6LTNweDtjb2xvcjojNTc1NzU3O2N1cnNvcjpwb2ludGVyOyB9IC53aWRnZXRfZXhwcmVzc19tYWlsX3Bob25lX3RpdGxleyBib3JkZXItYm90dG9tOjFweCBzb2xpZCAjYWFhO3RleHQtYWxpZ246IGNlbnRlcjtmb250LXNpemU6MS41cmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgcGFkZGluZy1ib3R0b206OHB4OyBwYWRkaW5nLXRvcDo4cHg7IGNvbG9yOiMxYjFiMWI7IH0gLndpZGdldF9leHByZXNzX21haWxfYWRqMXsgcGFkZGluZzoxNXB4IDEwcHg7IGxpbmUtaGVpZ2h0OjYwcHg7IGZvbnQtc2l6ZToyZW07IHBhZGRpbmc6MTVweCAxMHB4O3RleHQtYWxpZ246Y2VudGVyOyB9IC5iYW5uZXJQb3B1cENsb3NleyBsZWZ0OjcxMHB4OyBwb3NpdGlvbjpyZWxhdGl2ZTsgd2lkdGg6MTVweDsgdG9wOjIwcHg7IGN1cnNvcjpwb2ludGVyOyB9IC5wcmljZU5vdGUgeyBjb2xvcjojNzU3NTc1OyBmb250LXN0eWxlOml0YWxpYzsgdGV4dC1hbGlnbjpqdXN0aWZ5OyBkaXNwbGF5OmJsb2NrOyBwYWRkaW5nLXJpZ2h0OjEwcHg7IGZvbnQtc2l6ZTowLjc1cmVtICFpbXBvcnRhbnQ7IG1hcmdpbi1ib3R0b206MTRweDsgfSAuc3RhY2tlZERpc2NsYWltZXJ7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbi10b3A6MTBweDsgfSBzcGFuLnN0YWNrZWREaXNjbGFpbWVyOmJlZm9yZXsgY29udGVudDoiKioiOyBwb3NpdGlvbjpyZWxhdGl2ZTsgZm9udC1zaXplOjFyZW07IH0gLnRvcHJpbnR7IGRpc3BsYXk6bm9uZTsgfSAucmVmZmVyZW5jZUNvbnRlbnREZW1vLCAucmVmZmVyZW5jZUNvbnRlbnRDbGVhcmFuY2V7IHBhZGRpbmc6MzBweCAyMHB4OyBib3JkZXItYm90dG9tOjFweCBzb2xpZCAjY2NjOyBtYXJnaW4tYm90dG9tOjIwcHg7IH0gLmJveDJfZGV0YWlsc190ZXh0MiAuY29tcGFyZUJ1dHRvbiwgLmJveDJfZGV0YWlsc190ZXh0MjIgLmNvbXBhcmVCdXR0b257IHBvc2l0aW9uOmFic29sdXRlOyBtYXJnaW4tdG9wOi0yMHB4OyB6LWluZGV4OjE7IGxlZnQ6LTMwcHg7IH0gLnZkcHsgY2xlYXI6Ym90aDsgd2lkdGg6MTYwcHg7IH0gLmNvbXBhcmVCdXR0b257IHRyYW5zaXRpb246Ym94LXNoYWRvdyAwLjI1cyBlYXNlLW91dCAwczsgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gMC4yNXMgZWFzZS1vdXQgMHM7IGRpc3BsYXk6bm9uZTsgfSBkaXYjc2xpZGVyLXByby0xMiB7IGJvcmRlcjoxcHggc29saWQgI0VCRUJFQjsgYm9yZGVyLXJhZGl1czozcHg7IGJhY2tncm91bmQ6I2ZmZjsgfSAjc2xpZGVyUHJvbW9BbGVydHsgYm9yZGVyLXJhZGl1czozcHggM3B4IDAgMDsgfSAuc2xpZGUtd3JhcHBlcnsgYm9yZGVyLXJhZGl1czozcHg7IH0gI3NsaWRlaXQgbGFiZWwub3BlbnsgYm9yZGVyLXJhZGl1czozcHggMCAwIDNweDsgfSBpbWcuaW1hZ2UgeyBib3JkZXItcmFkaXVzOjNweDsgfSAubmV3VmRwVmlld2VyIC5jb21wYXJlQnV0dG9ueyBwb3NpdGlvbjphYnNvbHV0ZTsgYm90dG9tOjJweDsgcmlnaHQ6MHB4OyB6LWluZGV4OjExMTE7IH0gLmxpdmVBbGVydF9saW5reyBjb2xvcjojRkZGRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAubGl2ZUFsZXJ0X2xpbms6aG92ZXIgeyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyB9IC5idXR0b24tdG9hc3RyeyBiYWNrZ3JvdW5kOiNGRkY7cGFkZGluZzo0cHggMjBweDtib3JkZXItcmFkaXVzOjVweDsgY29sb3I6I0JEMzYyRiFpbXBvcnRhbnQ7IH0gLmJ1dHRvbi10b2FzdHI6aG92ZXJ7IGJhY2tncm91bmQ6IzAwMDsgY29sb3I6I0ZGRjsgfSAucmV0dXJuUG9wdXBfc3VibWl0IHNwYW4geyBwb3NpdGlvbjphYnNvbHV0ZSFpbXBvcnRhbnQ7IHRvcDo1MCUhaW1wb3J0YW50OyBkaXNwbGF5OmJsb2NrIWltcG9ydGFudDsgdGV4dC1hbGlnbjpjZW50ZXIhaW1wb3J0YW50OyBsZWZ0OjAhaW1wb3J0YW50OyByaWdodDowIWltcG9ydGFudDsgcGFkZGluZzowIDhweCAwIDhweCFpbXBvcnRhbnQ7IGN1cnNvcjpwb2ludGVyIWltcG9ydGFudDsgZm9udC1zaXplOjAuODc1cmVtICFpbXBvcnRhbnQ7IG1hcmdpbjowIWltcG9ydGFudDsgY29sb3I6I0ZGRiFpbXBvcnRhbnQ7IG1hcmdpbi10b3A6LTlweCFpbXBvcnRhbnQ7IH0gcmV0dXJuUG9wdXBfc3VibWl0OmhvdmVyIHsgYmFja2dyb3VuZC1jb2xvcjojMGJiMWUwOyBjb2xvcjojZmZmOyB9IC5yZXR1cm5Qb3B1cF9zdWJtaXQgeyBkaXNwbGF5OmJsb2NrOyBib3JkZXItc3R5bGU6c29saWQ7IGJvcmRlci1yYWRpdXM6NXB4OyBsZWZ0OjIyOHB4OyB6LWluZGV4OjU7IHdpZHRoOjIyNXB4OyBoZWlnaHQ6NDBweDsgcG9zaXRpb246YWJzb2x1dGU7IGJhY2tncm91bmQtY29sb3I6I2U0MDAyMzsgdGV4dC1zaGFkb3c6MXB4IDFweCAjMDAyYjQ2OyBjb2xvcjojZmZmOyBib3JkZXItd2lkdGg6MXB4OyBib3JkZXItY29sb3I6IzMzMzMzMzsgZm9udC1zaXplOjFyZW0gOyBsaW5lLWhlaWdodDoxOXB4OyBmb250LXdlaWdodDpub3JtYWw7IHRleHQtYWxpZ246Y2VudGVyOyBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7IH0gI3JldHVyblBvcHVwRm9ybV93cmFwcGVyIHsgZGlzcGxheTpibG9jazsgYmFja2dyb3VuZDpyZ2JhKDY2LDY2LDY2LDEpOyBib3JkZXItc3R5bGU6bm9uZTsgYm9yZGVyLXJhZGl1czoxMXB4OyBsZWZ0OjI4MHB4OyB0b3A6MTU1cHg7IHotaW5kZXg6Mjsgd2lkdGg6NTMxcHg7IGhlaWdodDozODRweDsgcG9zaXRpb246YWJzb2x1dGU7IH0gI3JldHVyblBvcHVwVGlsdGV7IHdpZHRoOjMzNXB4OyBmbG9hdDpyaWdodDsgbWFyZ2luOjIwcHg7IGNvbG9yOiMxYjFiMWI7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IH0gI3JldHVyblBvcHVwVGlsdGUgLnJwX21jeyBmb250LXNpemU6MS4xMjVyZW0gIWltcG9ydGFudDsgfSAjcmV0dXJuUG9wdXBUaWx0ZTJ7IGNvbG9yOiNGRkY7IG1hcmdpbjoyMHB4IDEwcHggMjBweCAyMHB4OyBwYWRkaW5nOjA7IH0gLnJldHVyblBvcHVwRm9ybV9sYWJlbCB7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgZm9udC1zaXplOjAuODEzcmVtIDsgbGluZS1oZWlnaHQ6MTRweDsgY29sb3I6I2JmYmZiZjsgbWFyZ2luLWxlZnQ6MjBweDsgZGlzcGxheTppbmxpbmUtYmxvY2s7IH0gLnJldHVyblBvcHVwRm9ybV90YWJsZSB0ciB0ZHsgcGFkZGluZy1ib3R0b206MTBweDsgfSAucnBfbWMgeyBmb250LXNpemU6MC44NzVyZW0gIWltcG9ydGFudDsgY29sb3I6I2U0MDAyMyFpbXBvcnRhbnQ7IHBhZGRpbmc6MCFpbXBvcnRhbnQ7IG1hcmdpbjowIWltcG9ydGFudDsgfSAjZXhpdFBvcHVwQ29udGFpbmVyeyBwYWRkaW5nOjA7IGJhY2tncm91bmQtaW1hZ2U6bm9uZTsgfSAjZXhpdF9wb3B1cF9hY2N1dHJhZGVfZm9ybXsgaGVpZ2h0OjM0cmVtOyBiYWNrZ3JvdW5kLWltYWdlOnVybCgvaW1hZ2VzL3BvcHVwcy90cmFkZWluLWV4aXRwb3B1cC1mci5wbmcpOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWV4aXQtcG9wdXAtYmdjb2wsICNlZWUpOyB9IGJvZHkuRU5HTElTSCAjZXhpdF9wb3B1cF9hY2N1dHJhZGVfZm9ybXsgYmFja2dyb3VuZC1pbWFnZTp1cmwoL2ltYWdlcy9wb3B1cHMvdHJhZGVpbi1leGl0cG9wdXAtZW4ucG5nKTsgfSAuZXhpdF9wb3B1cF9idXR0b25zIGJ1dHRvbiB7IHdpZHRoOjExcmVtOyBmb250LXdlaWdodDpib2xkOyB9IC5leGl0X3BvcHVwX3RleHRfbGluZV8yeyBtYXJnaW4tdG9wOjI3cHg7IG1hcmdpbi1ib3R0b206NXB4OyB9IC5leGl0X3BvcHVwX3RleHRfbGluZV8zeyBmb250LXNpemU6MS42MjVyZW0gOyBtYXJnaW4tYm90dG9tOjNweDsgZm9udC13ZWlnaHQ6Ym9sZGVyOyB9IC5leGl0X3BvcHVwX3RleHRfbGluZV81IHsgbWFyZ2luLWJvdHRvbToyMHB4OyBmb250LXNpemU6MS42MjVyZW0gOyBmb250LXdlaWdodDpib2xkZXI7IG1hcmdpbi10b3A6NjNweDsgfSAjZXhpdF9wb3B1cF9hY2N1dHJhZGVfdGl0bGV7IGhlaWdodDo5NXB4OyB3aWR0aDo1NzBweDsgbWFyZ2luLXRvcDoyMHB4OyB9ICNleGl0X3BvcHVwX2FjY3V0cmFkZV90aXRsZS5fRlJFTkNIeyBiYWNrZ3JvdW5kLWltYWdlOnVybCgvaW1hZ2VzL3BvcHVwcy9hY2N1LXRyYWRlLWV4aXQtdGl0bGVfZnIucG5nKTsgfSAjZXhpdF9wb3B1cF9hY2N1dHJhZGVfdGl0bGUuX0VOR0xJU0h7IGJhY2tncm91bmQtaW1hZ2U6dXJsKC9pbWFnZXMvcG9wdXBzL2FjY3UtdHJhZGUtZXhpdC10aXRsZV9lbi5wbmcpOyB9ICNiZXN0UHJpY2VWZHBOZXdQb3B1cENvbnRhaW5lcnsgd2lkdGg6NDgwcHg7IGhlaWdodDo1MTBweDsgfSAjYmVzdFByaWNlVmRwTmV3UG9wdXBDb250YWluZXIgLnBvcHVwX2JneyB3aWR0aDo0ODBweDsgaGVpZ2h0OjUxNXB4OyB9ICNiZXN0UHJpY2VWZHBOZXdQb3B1cENvbnRhaW5lciAucG9wdXBfYmd7IGJhY2tncm91bmQtaW1hZ2U6dXJsKCcvaW1hZ2VzL3BvcHVwcy9mci9iZXN0UHJpY2VOZXdWZHAucG5nJyk7IH0gLnBvcHVwX2JneyBiYWNrZ3JvdW5kLWNvbG9yOiMxYjFiMWI7IGJhY2tncm91bmQtc2l6ZTo0ODBweCA1MTVweDsgfSAucG9wdXBGb3JtIC5hc3Rlcmlza3sgY29sb3I6I2QwMDsgZm9udC13ZWlnaHQ6Ym9sZDsgcGFkZGluZzowOyBmb250LXNpemU6aW5oZXJpdDsgbWFyZ2luOjA7IH0gLnBvcHVwRm9ybXsgei1pbmRleDo1MDsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDoyNDhweDsgaGVpZ2h0OjI0OXB4OyBsZWZ0OjgwcHg7IGJhY2tncm91bmQ6dXJsKCIvaW1hZ2VzL2NvdXBvbi1mb3JtLWJnLTIucG5nIikgbm8tcmVwZWF0OyB3aWR0aDozMzVweDsgcGFkZGluZzozMHB4OyB9IC5wb3B1cEZvcm1UaXRsZXsgaGVpZ2h0OjQwcHg7IG1hcmdpbjo4cHg7IGZvbnQtc2l6ZTowLjkzOHJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gLnBvcHVwRm9ybUlucHV0cyB0ZCB7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IHRleHQtYWxpZ246cmlnaHQ7IHBhZGRpbmctcmlnaHQ6MTBweDsgcGFkZGluZy1ib3R0b206M3B4OyB9IC5wb3B1cEZvcm0gaW5wdXR7IHdpZHRoOjIxMHB4OyB9ICNhc1B1cmNoYXNlSW50ZW50eyB3aWR0aDo2MDBweDsgcGFkZGluZzozMHB4IDMwcHg7IGhlaWdodDphdXRvOyBjb2xvcjojMDAwOyBiYWNrZ3JvdW5kLWNvbG9yOiNlZWU7IHotaW5kZXg6MTAwMDAyMTsgfSAjcHJvbW9EaXNjb3ZlckJ1dHRvbnsgfSAubmV3VmRwVmlld2VyIHsgd2lkdGg6NjQwcHg7IGhlaWdodDo0ODBweDsgZmxvYXQ6bGVmdDsgbWFyZ2luLWxlZnQ6MjBweDsgfSAubG9jYXRpb24tbmFtZXMgeyBwb3NpdGlvbjpzdGF0aWM7IH0gI01haW5NZW51X0RFQUxFUlNISVBTID4gdWwuc3ViID4gbGkgPiB1bCB7IHBvc2l0aW9uOnN0YXRpYzsgfSAuaW1nX21lbnUudXBfbWVudSB1bC5uYXYgdWwuc3ViIGxpIC5sb2NhdGlvbi1uYW1lcyB7IG1pbi13aWR0aDoyMDBweDsgfSAjTWFpbk1lbnVfREVBTEVSU0hJUFMgbGkubG9jYXRpb24tbmFtZXMgeyBtaW4td2lkdGg6MjAwcHg7IH0gLmxvY2F0aW9uLW5hbWVzLCAubG9jYXRpb24tbmFtZXMgbGkgeyBsaXN0LXN0eWxlOm5vbmU7IH0gLkwxMDAgeyBsZWZ0OjEwMCU7IH0gLlIxMDAgeyByaWdodDoxMDAlOyB9IC5sb2NhdGlvbi1uYW1lcyAubG9jYXRpb24tZGV0YWlscyB7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MDsgcGFkZGluZzoxNHB4OyBib3gtc2hhZG93OjAgNnB4IDEycHggcmdiYSgwLDAsMCwuMTc1KTsgZGlzcGxheTpub25lOyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyBtaW4td2lkdGg6MjkwcHg7IH0gLmxvY2F0aW9uLW5hbWVzIC5sb2NhdGlvbi1kZXRhaWxzID4gLnRpdGxlIHsgbWFyZ2luLWJvdHRvbToxZW07IGZvbnQtc2l6ZTppbml0aWFsOyBjb2xvcjojMDAwMDAwOyB9IC5sb2NhdGlvbi1uYW1lcyAubG9jYXRpb24tZGV0YWlscyA+IC5sb2NhdGlvbi1kZXRhaWxzLWxvZ28gPiBpbWcgeyBtYXgtd2lkdGg6MTAwJTsgbWFyZ2luLWJvdHRvbTo4cHg7IH0gbGkubG9jYXRpb24tbmFtZXM6aG92ZXIgLmxvY2F0aW9uLWRldGFpbHMgeyBkaXNwbGF5OmJsb2NrOyB9IGxpLmxvY2F0aW9uLW5hbWVzOmhvdmVyIC5tYWlubWVudS1zdWJtZW51IHsgb3BhY2l0eToxOyB2aXNpYmlsaXR5OnZpc2libGU7IH0gLmxvY2F0aW9uLW5hbWVzIC5sb2NhdGlvbi1kZXRhaWxzIC5sb2NhdGlvbi1kZXRhaWxzLWxvZ28geyBib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZTVlNWU1OyBtYXJnaW4tYm90dG9tOjhweDsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gI01haW5NZW51X0RFQUxFUlNISVBTIC5sb2NhdGlvbi1uYW1lcyAubWFpbm1lbnUtc3VibWVudSAubG9jYXRpb24tZGV0YWlscyB7IG1heC1oZWlnaHQ6NjB2aDsgcG9zaXRpb246c3RhdGljOyB9IC51cF9tZW51IHVsLm5hdiAubG9jYXRpb24tZGV0YWlscy1pbmZvIGEgeyBjb2xvcjojMWIxYjFiOyBwYWRkaW5nOjA7IH0gLmxvY2F0aW9uLWRldGFpbHMtaW5mbyAubG9jYXRpb24tc3BhY2luZy1tbC0xMyB7IG1hcmdpbi1sZWZ0OjEzLjQ5cHg7IH0gLnVwX21lbnUgdWwubmF2IGxpLmRldGFpbHMtaW5mby1saW5rIGEgeyBkaXNwbGF5OmlubGluZS1ibG9jazsgfSAudXBfbWVudSB1bC5uYXYgLmRldGFpbHMtaW5mby1saW5rOmhvdmVyIGEgeyBjb2xvcjojZmZmZmZmOyB9ICNNYWluTWVudV9ERUFMRVJTSElQUyA+IHVsLnN1YiA+IGxpID4gdWwgeyBtYXgtaGVpZ2h0OjYwdmg7IG92ZXJmbG93LXk6YXV0bzsgb3ZlcmZsb3cteDpoaWRkZW47IH0gYm9keSAud3JhcHBlciAudXBfbWVudSAubmF2ID4gbGk6aG92ZXIgdWwuc3ViIGxpOmhvdmVyIC5kZXRhaWxzLWluZm8tbGluayBsaTpob3ZlciBhIHsgZGlzcGxheTppbmxpbmUtYmxvY2s7IGJhY2tncm91bmQtaW1hZ2U6bm9uZTsgY29sb3I6I2ZmZmZmZjsgYmFja2dyb3VuZC1jb2xvcjojZTMxNzNlOyB9IGxpLmRldGFpbHMtaW5mby1saW5rOmhvdmVyIHsgYmFja2dyb3VuZC1jb2xvcjojZTMxNzNlOyBjb2xvcjojZmZmZmZmOyB9IC5sb2NhdGlvbi1kZXRhaWxzLWluZm8gdWwgbGkgeyBwYWRkaW5nLXRvcDo0cHg7IHBhZGRpbmctYm90dG9tOjRweDsgZm9udC13ZWlnaHQ6MjAwOyBmb250LXNpemU6MC44NzVyZW0gOyBtYXJnaW4tYm90dG9tOjVweDsgfSAubG9jYXRpb24tZGV0YWlscy1pbmZvID4gdWwgPiBsaTpiZWZvcmUgeyBjb250ZW50OiIgIjsgYm9yZGVyOnNvbGlkOyBib3JkZXItd2lkdGg6MCAycHggMnB4IDA7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyBwYWRkaW5nOjJweDsgYm9yZGVyLXJhZGl1czoycHg7IHRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKTsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC00NWRlZyk7IG1hcmdpbi1yaWdodDo3cHg7IG1hcmdpbi1ib3R0b206MXB4OyB9ICNNYWluTWVudV9ERUFMRVJTSElQUyB1bCB7IHBhZGRpbmc6MDsgfSBAbWVkaWEgcHJpbnR7IC50b3ByaW50eyBkaXNwbGF5OmJsb2NrO30gfSAubXItMTUgeyBtYXJnaW4tcmlnaHQ6MTVweDsgfSAubWwtMTUgeyBtYXJnaW4tbGVmdDoxNXB4OyB9IC5tbC03IHsgbWFyZ2luLWxlZnQ6N3B4OyB9IHNwYW4uYXJyb3cgeyBib3JkZXI6c29saWQ7IGJvcmRlci13aWR0aDowIDJweCAycHggMDsgZGlzcGxheTppbmxpbmUtYmxvY2s7IHBhZGRpbmc6MnB4OyBib3JkZXItcmFkaXVzOjFweDsgcG9zaXRpb246cmVsYXRpdmU7IHRvcDotMnB4OyB9IHNwYW4uYXJyb3cuYXJyb3ctbGFyZ2UgeyBib3JkZXItd2lkdGg6MCAzcHggM3B4IDA7IHBhZGRpbmc6NHB4OyBib3JkZXItcmFkaXVzOjNweDsgfSBzcGFuLmFycm93LmFycm93LXJpZ2h0IHsgdHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpOyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKTsgfSBzcGFuLmFycm93LmFycm93LWxlZnQgeyB0cmFuc2Zvcm06cm90YXRlKDEzNWRlZyk7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgxMzVkZWcpOyB9IHNwYW4uYXJyb3cuYXJyb3ctdXAgeyB0cmFuc2Zvcm06cm90YXRlKC0xMzVkZWcpOyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTEzNWRlZyk7IH0gc3Bhbi5hcnJvdy5hcnJvdy1kb3duIHsgdHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyk7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyk7IH0gLnRvcGJhcjNidG5XcmFweyBib3JkZXItcmFkaXVzOjVweDsgYmFja2dyb3VuZC1jb2xvcjojRTMxNzNFOyBib3JkZXI6MnB4IHNvbGlkICNENkQ2RDY7IHZlcnRpY2FsLWFsaWduOm1pZGRsZTsgaGVpZ2h0OjQycHg7IHBhZGRpbmc6MCAyMHB4OyBjb2xvcjojZmZmZmZmOyB9IC50b3BiYXIzYnRueyBmb250LXdlaWdodDpib2xkOyB0cmFuc2l0aW9uOi4yczsgZm9udC1zaXplOjAuODc1cmVtIDsgdGV4dC10cmFuc2Zvcm06Y2FwaXRhbGl6ZTsgYm9yZGVyLWNvbG9yOndoaXRlOyB0ZXh0LWFsaWduOmNlbnRlcjsgY3Vyc29yOnBvaW50ZXI7IGRpc3BsYXk6YmxvY2s7IHRleHQtZGVjb3JhdGlvbjpub25lOyBjb2xvcjppbmhlcml0OyB9IC50cmFkZUluQmFyX2J0bnsgZm9udC13ZWlnaHQ6Ym9sZDsgYm9yZGVyLXJhZGl1czo1cHg7IHRleHQtdHJhbnNmb3JtOnZhcigtLWNlcnQtdHh0LXRyYW5zZm9ybSwgdmFyKC0tdHh0LXVwcGVyKSk7IHRyYW5zaXRpb246LjJzOyBib3JkZXI6MnB4IHNvbGlkIHRyYW5zcGFyZW50OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjp3aGl0ZTsgYm9yZGVyLWNvbG9yOndoaXRlOyB0ZXh0LWFsaWduOmNlbnRlcjsgY3Vyc29yOnBvaW50ZXI7IGhlaWdodDo1MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiNFMzE3M0U7IGNvbG9yOiAjZmZmZmZmOyBib3JkZXI6MnB4IHNvbGlkICNENkQ2RDY7IG1pbi13aWR0aDoyMDBweDsgbWF4LXdpZHRoOjIwMHB4OyB9IC50cmFkZUluQmFyX2J0bjpob3ZlciwudG9wYmFyM2J0bldyYXA6aG92ZXJ7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgY29sb3I6I0UzMTczRSFpbXBvcnRhbnQ7IH0gI2dSYXRpbmdMYXJnZXsgYmFja2dyb3VuZDojMWExNzE4OyBjb2xvcjojZmZmZmZmOyBib3JkZXI6MXB4IHNvbGlkICNmZmZmZmY7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6NXB4IDBweDsgbWFyZ2luLXRvcDo1cHg7IGN1cnNvcjpwb2ludGVyOyBib3JkZXItcmFkaXVzOjNweDsgdGV4dC1hbGlnbjpjZW50ZXI7IHdpZHRoOjE1MHB4OyBtYXJnaW4tbGVmdDozMHB4OyB9ICNnUmF0aW5neyBjdXJzb3I6cG9pbnRlcjsgfSAudHJhZGVJblZpbklucHV0eyBoZWlnaHQ6NTBweDsgYm9yZGVyLXJhZGl1czo1cHg7IHRleHQtYWxpZ246Y2VudGVyOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IHdpZHRoOjEwMCU7IGZvbnQtc2l6ZToxcmVtIDsgY29sb3I6IzNjMzgzNjsgYm9yZGVyOjJweCBzb2xpZCAjRDZENkQ2OyB9IC50cmFkZUluVmluSW5wdXQ6OnBsYWNlaG9sZGVyeyBmb250LXNpemU6MXJlbSA7IGNvbG9yOiMzYzM4MzY7IH0gLnRyYWRlSW5PckxhYmVseyBtYXgtd2lkdGg6MjVweDsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIC5uaXZNYWtlTW9kZWxTZWxlY3RDb250YWluZXJ7IHdpZHRoOjEwMCU7IHBhZGRpbmc6MTJweDsgbWFyZ2luLXRvcDoxMHB4OyBmb250LXNpemU6MXJlbSA7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAubml2TWFrZU1vZGVsU2VsZWN0Q29udGFpbmVyIC5uaXZNYWtlTW9kZWxTZWxlY3R7IGRpc3BsYXk6bm9uZTsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIC5uaXZNYWtlTW9kZWxTZWxlY3RDb250YWluZXIgLm5pdk1ha2VNb2RlbFNlbGVjdExhYmVseyBkaXNwbGF5OmlubGluZS1ibG9jazsgbWFyZ2luOjAgMTJweDsgY3Vyc29yOnBvaW50ZXI7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAubml2TWFrZU1vZGVsU2VsZWN0Q29udGFpbmVyIC5uaXZNYWtlTW9kZWxTZWxlY3Q6Y2hlY2tlZCtsYWJlbHsgYm9yZGVyLWJvdHRvbToycHggc29saWQgYmxhY2s7IH0gLnRyYWRpblNlbGVjdFd7IG1pbi13aWR0aDoyMDBweDsgbWF4LXdpZHRoOjIwMHB4OyB9IC50cmFkaW5TZWxlY3RXLndpdGhWSU5NYWtleyBtaW4td2lkdGg6MTQwcHg7IG1heC13aWR0aDoxNDBweDsgfSAudHJhZGluU2VsZWN0Vy53aXRoVklOWWVhcnsgbWluLXdpZHRoOjgwcHg7IG1heC13aWR0aDo4MHB4OyB9IC50cmFkaW5JbnB1dFd7IG1pbi13aWR0aDoyMDBweDsgbWF4LXdpZHRoOjIwMHB4OyB9IC50cmFkaW5TZWxlY3RBeyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAudHJhZGluU2VsZWN0QTphZnRlciB7IGNvbnRlbnQ6IiAiOyBoZWlnaHQ6MDsgd2lkdGg6MDsgYm9yZGVyLWxlZnQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItcmlnaHQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItdG9wOjVweCBzb2xpZCAjMDAwMDAwOyBwb3NpdGlvbjphYnNvbHV0ZTsgcmlnaHQ6MTRweDsgdG9wOjE3cHg7IHRyYW5zaXRpb246YWxsIDAuM3MgbGluZWFyOyBwb2ludGVyLWV2ZW50czpub25lOyB9IC50cmFkaW5TZWxlY3R7IGNvbG9yOiMzYzM4MzY7IGJvcmRlcjoycHggc29saWQgI0Q2RDZENjsgYm9yZGVyLXJhZGl1czo1cHg7IHBhZGRpbmc6MTBweCAxMHB4OyBmb250LXNpemU6MXJlbSA7IGJhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwxKTsgYmFja2dyb3VuZC1wb3NpdGlvbjo5NSUgNTAlOyB3aWR0aDoxMDAlOyAtd2Via2l0LWFwcGVhcmFuY2U6bm9uZTsgLW1vei1hcHBlYXJhbmNlOm5vbmU7IHBhZGRpbmctcmlnaHQ6MjdweDsgaGVpZ2h0OjUwcHg7IH0gLnRyYWRpblNlbGVjdDphZnRlciB7IGNvbnRlbnQ6IiAiOyBoZWlnaHQ6MDsgd2lkdGg6MDsgYm9yZGVyLWxlZnQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItcmlnaHQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItdG9wOjVweCBzb2xpZCAjMDAwMDAwOyBwb3NpdGlvbjphYnNvbHV0ZTsgcmlnaHQ6MTRweDsgdG9wOjE3cHg7IHRyYW5zaXRpb246YWxsIDAuM3MgbGluZWFyOyB9IC5tdWx0aXNlbGVjdFZlaGljbGVPcHRpb25zIHNwYW57IGZvbnQtc2l6ZTowLjkzOHJlbSAhaW1wb3J0YW50OyBwYWRkaW5nOjAgIWltcG9ydGFudDsgbWFyZ2luOjAgIWltcG9ydGFudDsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIC50cmFkZUluQmFyTXVsdGlzZWxlY3R7IHdpZHRoOjU2OHB4IWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czowLjNyZW0haW1wb3J0YW50OyBib3JkZXItd2lkdGg6MXB4IWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czowLjNyZW0haW1wb3J0YW50OyBib3JkZXItY29sb3I6I2E5YTlhOSFpbXBvcnRhbnQ7IH0gLnVpLW11bHRpc2VsZWN0LW1lbnUudHJhZGVJbkJhck11bHRpc2VsZWN0eyBtaW4td2lkdGg6MjcycHg7IHotaW5kZXg6MTAwMDAyMDsgbWF4LWhlaWdodDoxMjBweDsgb3ZlcmZsb3c6c2Nyb2xsOyB9IC50cmFkZUluQmFyRGVhbGVyU3RlcHsgdGV4dC1hbGlnbjpjZW50ZXI7IG1hcmdpbi10b3A6MjVweDsgfSAudHJhZGVJbkJhckRlYWxlclN0ZXAgLnRyYWRlSW5CYXJEZWFsZXJTdGVwTWFrZU1vZGVsWWVhcnsgZm9udC13ZWlnaHQ6NzAwOyB9IC50cmFkZUluQmFyRGVhbGVyU3RlcCBzcGFueyBtYXJnaW46MCFpbXBvcnRhbnQ7IGZvbnQtd2VpZ2h0OjcwMCFpbXBvcnRhbnQ7IGNvbG9yOiMwMDAwMDAhaW1wb3J0YW50OyB9IEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDoxMDI0cHgpIHsgLnRyYWRpblNlbGVjdFcgeyBtaW4td2lkdGg6Y2FsYygoMjAwcHggLSB2YXIoLS1zKSkgLSB2YXIoLS1zLCAwLjVyZW0pKTsgbWF4LXdpZHRoOmNhbGMoKDIwMHB4IC0gdmFyKC0tcykpIC0gdmFyKC0tcywgMC41cmVtKSk7IH0gfSAjZ29vZ2xlUmV2aWV3c0Zvb3RlcnsgbWFyZ2luOjAgYXV0bzsgYmFja2dyb3VuZC1jb2xvcjojZmZmOyBib3JkZXItcmFkaXVzOjVweDsgbWF4LXdpZHRoOjk0MHB4OyBoZWlnaHQ6Mjc1cHg7IH0gLnJldmlldy1pdGVtIHsgZmxvYXQ6bGVmdDsgaGVpZ2h0OjE4NXB4OyB3aWR0aDoxMDAlOyBtYXgtd2lkdGg6NDYwcHg7IG1hcmdpbi1yaWdodDoxMHB4OyBib3JkZXItdG9wOjRweCBzb2xpZCAjRUJFQkVCOyBwYWRkaW5nLXRvcDoxMHB4OyB9IC5maXJzdGNoYXJ1cDo6Zmlyc3QtbGV0dGVyeyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7IH0gSS5pY29uLWNvbXBhcmUtMSwgc3Bhbi5pY29uLWNvbXBhcmUtMXsgY29sb3I6I2UzMTczZTsgfSBJLmljb24tY29tcGFyZS0xOmhvdmVyLCBzcGFuLmljb24tY29tcGFyZS0xOmhvdmVyeyBjb2xvcjojZmZmZmZmICFpbXBvcnRhbnQ7IHRleHQtc2hhZG93OiNlMzE3M2UgMXB4IDFweCwgI2UzMTczZSAtMXB4IDFweCwgI2UzMTczZSAtMXB4IC0xcHgsICNlMzE3M2UgMXB4IC0xcHg7IGJvcmRlci1yYWRpdXM6MjBweDsgYmFja2dyb3VuZC1jb2xvcjojZTMxNzNlOyB9IC5nUmF0aW5nLWljb24gaSB7IGZvbnQtc2l6ZToxLjA2M3JlbSA7IH0gLmdSYXRpbmctaWNvbiNnUmF0aW5nIHsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IHdpZHRoOjkwcHg7IGhlaWdodDoyOHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiMxYjFiMWI7IGNvbG9yOndoaXRlOyBjb2xvcjojZmZmZmZmOyBjb2xvcjojZmZmZmZmOyBnYXA6N3B4OyB9IC5nUmF0aW5nLWltZyNnUmF0aW5nIHsgYmFja2dyb3VuZC1pbWFnZTp1cmwoL2ltYWdlcy9ncmF0aW5nLnBuZyk7IGNvbG9yOiMzNTZDRjI7IHdpZHRoOjk1cHg7IGhlaWdodDoyOHB4OyBwYWRkaW5nOjRweCAzMXB4IDEwcHggMTBweDsgbWFyZ2luLXRvcDoxcHg7IH0gI2dSYXRpbmd7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgZm9udC1zaXplOjEuMDYzcmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgZGlzcGxheTpibG9jazsgfSBJTlBVVFt0eXBlPSJ0ZXh0Il0udmFsaWRpdHktZXJyb25lb3VzeyBib3JkZXI6MXB4IHNvbGlkICNkYzM1NDU7IGJhY2tncm91bmQtY29sb3I6I2ZhZDZkYyAhaW1wb3J0YW50OyB9IElOUFVUW3R5cGU9InRlbCJdLnZhbGlkaXR5LWVycm9uZW91c3sgYm9yZGVyOjFweCBzb2xpZCAjZGMzNTQ1OyBiYWNrZ3JvdW5kLWNvbG9yOiNmYWQ2ZGMgIWltcG9ydGFudDsgfSBJTlBVVFt0eXBlPSJlbWFpbCJdLnZhbGlkaXR5LWVycm9uZW91c3sgYm9yZGVyOjFweCBzb2xpZCAjZGMzNTQ1OyBiYWNrZ3JvdW5kLWNvbG9yOiNmYWQ2ZGMgIWltcG9ydGFudDsgfSBJTlBVVFt0eXBlPSJwYXNzd29yZCJdLnZhbGlkaXR5LWVycm9uZW91c3sgYm9yZGVyOjFweCBzb2xpZCAjZGMzNTQ1OyBiYWNrZ3JvdW5kLWNvbG9yOiNmYWQ2ZGMgIWltcG9ydGFudDsgfSBIMS5kZWZhdWx0eyBmb250LXNpemU6MS44NzVyZW0gOyBjb2xvcjojMWIxYjFiOyBmb250LXdlaWdodDpub3JtYWw7IGNsZWFyOmJvdGg7IHBhZGRpbmc6MCAwIDI1cHggMDsgfSBIMS5kZWZhdWx0IEF7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9IEgxLmRlZmF1bHQgSS5pY29uLCBIMS5kZWZhdWx0IHNwYW4uaWNvbiB7IGJvcmRlci1yYWRpdXM6MzBweDsgd2lkdGg6MjNweDsgaGVpZ2h0OjI5cHg7IHBhZGRpbmctdG9wOjRweDsgcGFkZGluZy1sZWZ0OjEwcHg7IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZToxLjU2M3JlbSA7IG1hcmdpbi1yaWdodDoxMHB4OyBib3JkZXI6MXB4IHNvbGlkICNmZmZmZmY7IGNvbG9yOiNmZmZmZmY7IGJhY2tncm91bmQtY29sb3I6IzFiMWIxYjsgYm94LXNpemluZzpjb250ZW50LWJveDsgfSBIMS5kZWZhdWx0IEkuaWNvbi5tdWx0aUxpbmVIMSwgSDEuZGVmYXVsdCBzcGFuLmljb24ubXVsdGlMaW5lSDF7IG1hcmdpbi10b3A6MTBweDsgfSBIMS5kZWZhdWx0IEkuaWNvbi5zaW5nbGVMaW5lSDEsIEgxLmRlZmF1bHQgc3Bhbi5pY29uLnNpbmdsZUxpbmVIMXsgbWFyZ2luLXRvcDoycHg7IH0gSDEuZGVmYXVsdCA+IERJVnsgZGlzcGxheTp0YWJsZS1yb3c7IH0gSDEuZGVmYXVsdCA+IERJViBESVY6bnRoLWNoaWxkKDEpeyBmb250LXdlaWdodDpib2xkOyB9IEgxLmRlZmF1bHQgPiBESVYgRElWOm50aC1jaGlsZCgyKXsgZm9udC13ZWlnaHQ6bm9ybWFsOyBjb2xvcjojNzU3NTc1OyBmb250LXNpemU6MS4xMjVyZW0gOyB9IEgxLmRlZmF1bHQgPiBESVYgRElWOm50aC1jaGlsZCgzKXsgZm9udC1zaXplOjAuOHJlbTsgZm9udC1zaXplOjAuOHJlbTsgY29sb3I6I2JiYjsgcGFkZGluZy10b3A6NXB4OyB9IGgxLmNrZWRpdG9yLWRlZmF1bHQgeyBmb250LXdlaWdodDpib2xkOyBmb250LXNpemU6Mi4xMjVyZW0gOyBwYWRkaW5nOjAgMCAxNXB4IDA7IGNvbG9yOiMxYjFiMWI7IH0gaDEuY2tlZGl0b3ItZGVmYXVsdDo6YmVmb3JlIHsgY29udGVudDoiXGYwNTQiOyBmb250LWZhbWlseTpGb250QXdlc29tZTsgd2lkdGg6MjhweDsgaGVpZ2h0OjM1cHg7IG1hcmdpbi1yaWdodDoxMHB4OyBwYWRkaW5nOjRweCAwIDAgMTFweDsgYm9yZGVyLXJhZGl1czo0MXB4OyBmb250LXNpemU6MS45MzhyZW0gOyBmbG9hdDpsZWZ0OyBib3JkZXI6MXB4IHNvbGlkICNmZmZmZmY7IGNvbG9yOiNmZmZmZmY7IGJhY2tncm91bmQtY29sb3I6IzFiMWIxYjsgfSBIMi5kZWZhdWx0eyBmb250LXNpemU6MS41cmVtIDsgY29sb3I6IzFiMWIxYjsgZm9udC13ZWlnaHQ6bm9ybWFsOyBjbGVhcjpib3RoOyBwYWRkaW5nOjEwcHggMDsgbWFyZ2luLXRvcDoxMHB4OyB9IEgyLmRlZmF1bHQgSS5pY29uLCBIMi5kZWZhdWx0IHNwYW4uaWNvbnsgYm9yZGVyLXJhZGl1czozMHB4OyB3aWR0aDoyMHB4OyBoZWlnaHQ6MjVweDsgcGFkZGluZy10b3A6NHB4OyBwYWRkaW5nLWxlZnQ6OXB4OyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MS4zNzVyZW0gOyBtYXJnaW4tcmlnaHQ6MTBweDsgYm9yZGVyOjFweCBzb2xpZCAjZmZmZmZmOyBjb2xvcjojZmZmZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiMxYjFiMWI7IH0gSDIuZGVmYXVsdCBJLmljb24ubXVsdGlMaW5lSDIsIEgyLmRlZmF1bHQgc3Bhbi5pY29uLm11bHRpTGluZUgyeyBtYXJnaW4tdG9wOjdweDsgfSBIMi5kZWZhdWx0IEkuaWNvbi5zaW5nbGVMaW5lSDIsIEgyLmRlZmF1bHQgc3Bhbi5pY29uLnNpbmdsZUxpbmVIMnsgbWFyZ2luLXRvcDowcHg7IH0gSDIuZGVmYXVsdCA+IERJVnsgZGlzcGxheTp0YWJsZS1yb3c7IH0gSDIuZGVmYXVsdCA+IERJViBESVY6bnRoLWNoaWxkKDEpeyBmb250LXdlaWdodDpib2xkOyB9IEgyLmRlZmF1bHQuY3JlZHNpaVVzZWRNaW5IZWlnaHQgLlRpdGxlVGV4dCB7IHdpZHRoOjgwJTsgfSBIMi5kZWZhdWx0ID4gRElWIERJVjpudGgtY2hpbGQoMil7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgY29sb3I6Izc1NzU3NTsgZm9udC1zaXplOjAuOTM4cmVtIDsgfSBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6MTMwMXB4KSB7IGJvZHkuaXNGdWxsV2lkdGhQYWdlLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQgI2ZpcnN0U2xpZGVySW1nIC5wbGFjZWhvbGRlcnsgd2lkdGg6ODAwcHg7IGhlaWdodDo2MDBweDsgfSBib2R5LmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkICNmaXJzdFNsaWRlckltZyBJTUd7IG1heC13aWR0aDo4MDBweDsgbWF4LWhlaWdodDo2MDBweDsgfSBCT0RZLmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIEgxLmRlZmF1bHQgeyB9IEJPRFkuaXNGdWxsV2lkdGhQYWdlLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQgSDEuZGVmYXVsdCA+IERJViBESVY6bnRoLWNoaWxkKDIpeyBmb250LXNpemU6MS40MzhyZW0gOyB9IEJPRFkuaXNGdWxsV2lkdGhQYWdlLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQgSDEuZGVmYXVsdCBJLmljb24sIEJPRFkuaXNGdWxsV2lkdGhQYWdlLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQgSDEuZGVmYXVsdCBzcGFuLmljb24geyB3aWR0aDoyOHB4OyBoZWlnaHQ6MzVweDsgZm9udC1zaXplOjEuOTM4cmVtIDsgcGFkZGluZy1sZWZ0OjExcHg7IGJvcmRlci1yYWRpdXM6NDFweDsgfSBCT0RZLmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIEgxLmRlZmF1bHQgSS5pY29uLm11bHRpTGluZUgxLCBCT0RZLmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIEgxLmRlZmF1bHQgc3Bhbi5pY29uLm11bHRpTGluZUgxeyBtYXJnaW4tdG9wOjExcHg7IH0gQk9EWS5pc0Z1bGxXaWR0aFBhZ2UuaXNQYWdlRnVsbFdpZHRoRW5hYmxlZCBIMS5kZWZhdWx0IEkuaWNvbi5zaW5nbGVMaW5lSDEsIEJPRFkuaXNGdWxsV2lkdGhQYWdlLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQgSDEuZGVmYXVsdCBzcGFuLmljb24uc2luZ2xlTGluZUgxeyBtYXJnaW4tdG9wOjFweDsgfSBCT0RZLmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIEgyLmRlZmF1bHQgeyBmb250LXNpemU6MS44NzVyZW0gOyB9IEJPRFkuaXNGdWxsV2lkdGhQYWdlLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQgSDIuZGVmYXVsdCA+IERJViBESVY6bnRoLWNoaWxkKDIpeyBmb250LXNpemU6MS4xODhyZW0gOyB9IEJPRFkuaXNGdWxsV2lkdGhQYWdlLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQgSDIuZGVmYXVsdC5jcmVkc2lpVXNlZE1pbkhlaWdodCAuVGl0bGVUZXh0IHsgd2lkdGg6OTAlOyB9IEJPRFkuaXNGdWxsV2lkdGhQYWdlLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQgSDIuZGVmYXVsdCBJLmljb24ubXVsdGlMaW5lSDIsIEJPRFkuaXNGdWxsV2lkdGhQYWdlLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQgSDIuZGVmYXVsdCBzcGFuLmljb24ubXVsdGlMaW5lSDJ7IG1hcmdpbi10b3A6MTFweDsgfSBCT0RZLmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIEgyLmRlZmF1bHQgSS5pY29uLnNpbmdsZUxpbmVIMiwgQk9EWS5pc0Z1bGxXaWR0aFBhZ2UuaXNQYWdlRnVsbFdpZHRoRW5hYmxlZCBIMi5kZWZhdWx0IHNwYW4uaWNvbi5zaW5nbGVMaW5lSDJ7IG1hcmdpbi10b3A6NHB4OyB9IH0gI2NpdHlUaXRsZSB7Y29sb3I6IzFiMWIxYjt9IC5tYWluX2xlZnRfYm94IHsgY29sb3I6IzFiMWIxYjsgfSAuZGl2VGFibGUgeyBkaXNwbGF5OnRhYmxlOyB9IC5kaXZUYWJsZS5hbGlnbi1jZW50ZXIgeyBtYXJnaW46MCBhdXRvOyB9IC5kaXZUYWJsZSAuZm9ybXNfYm94MjIsIC5kaXZUYWJsZSBmb3JtW25hbWU9InNlbmRFbWFpbEZvcm0iXSB7IHdpZHRoOjk0MHB4OyB9IC5kaXZUYWJsZSAudGV4dDMwIHsgd2lkdGg6MTAwJTsgfSAuc2VydmljZS10aXRsZSB7IG1hcmdpbi10b3A6MjBweDsgfSAuZnVsbFdpZHRoRm9ybSAuZm9ybXNfYm94MjIgeyB3aWR0aDoxMDAlOyBtYXJnaW4tbGVmdDowOyBtYXJnaW4tcmlnaHQ6MDsgYm94LXNpemluZzpib3JkZXItYm94OyB9IC5mdWxsV2lkdGhGb3JtIC50ZXh0MzAgeyB3aWR0aDoxMDAlOyB9IC5mb3JtLWdyb3VwIHsgbWFyZ2luLWJvdHRvbToxNXB4OyB9IC5pbmxpbmUtZm9ybS1ncm91cCB7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB9IC5mb3JtLWdyb3VwIGxhYmVsIHsgZGlzcGxheTppbmxpbmUtYmxvY2s7IG1heC13aWR0aDoxMDAlOyBtYXJnaW4tYm90dG9tOjVweDsgZm9udC13ZWlnaHQ6NzAwOyB9IC5kaXZTZWFyY2hNc2cgeyBmb250LXNpemU6MC45cmVtOyBtYXJnaW46MjBweCAwIDAgMDsgcGFkZGluZzoxNXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiNmN2Y3Zjc7IGJvcmRlci1yYWRpdXM6NXB4OyBjbGVhcjpib3RoOyB9IC5jcmVkc2lpTmV3IHsgZGlzcGxheTpibG9jazsgbWF4LXdpZHRoOjQ3MHB4OyBtaW4td2lkdGg6MzAwcHg7IHdpZHRoOjEwMCU7IGN1cnNvcjpwb2ludGVyOyBvdmVyZmxvdzpoaWRkZW47IGhlaWdodDphdXRvOyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjA7IHJpZ2h0OjA7IH0gLmNyZWRzaWlOZXdWRFAgeyBkaXNwbGF5OmJsb2NrOyBtYXgtd2lkdGg6MzUwcHg7IG1pbi13aWR0aDozMDBweDsgd2lkdGg6MTAwJTsgY3Vyc29yOnBvaW50ZXI7IG92ZXJmbG93OmhpZGRlbjsgaGVpZ2h0OmF1dG87IHBvc2l0aW9uOnJlbGF0aXZlOyB0b3A6MDsgcmlnaHQ6MDsgfSAuY3JlZHNpaVVzZWRNaW5IZWlnaHQgeyBtaW4taGVpZ2h0OjEzMHB4OyB9IC5jcmVkc2lpRmluYW5jZSB7IGRpc3BsYXk6YmxvY2s7IG1heC13aWR0aDo5NjBweDsgbWluLXdpZHRoOjMwMHB4OyB3aWR0aDoxMDAlOyBjdXJzb3I6cG9pbnRlcjsgb3ZlcmZsb3c6aGlkZGVuOyBwb3NpdGlvbjpyZWxhdGl2ZTsgaGVpZ2h0OjEyNXB4OyBtYXJnaW4tdG9wOjE1cHg7IH0gLmNyZWRzaWlGaW5hbmNlIC5jcmVkc2lpLXdpZGdldC1jb250YWluZXJ7IG1heC13aWR0aDoxMDAlIWltcG9ydGFudDsgfSAuY3JlZHNpaUZpbmFuY2VNZW51IHsgZGlzcGxheTpibG9jazsgbWF4LXdpZHRoOjM0NXB4OyBtaW4td2lkdGg6MzAwcHg7IHdpZHRoOjEwMCU7IGN1cnNvcjpwb2ludGVyOyBvdmVyZmxvdzpoaWRkZW47IGhlaWdodDphdXRvOyBwb3NpdGlvbjpyZWxhdGl2ZTsgdG9wOjA7IHJpZ2h0OjA7IH0gLmNyZWRzaWlEaXYgLmNyZWRzaWlGaW5hbmNlTWVudSB7IG1heC13aWR0aDozNzVweDsgfSAuY3JlZHNpaUZpbmFuY2VNZW51IC5jcmVkc2lpLXdpZGdldHsgYm9yZGVyOjA7IH0gLnByb21vLWNhcmQgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgaGVpZ2h0OmF1dG87IG1hcmdpbi1ib3R0b206MTBweDsgYmFja2dyb3VuZC1jb2xvcjojZjFmMWYxOyBwYWRkaW5nOjIwcHg7IG92ZXJmbG93OmhpZGRlbjsgfSAucHJvbW8tYm9keSAucGljX2JveDIgeyBtaW4taGVpZ2h0OjEzMHB4OyB9IC5wcm9tby1ob3ZlciB7IHBvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjA7IHRvcDowOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgLXdlYmtpdC10cmFuc2l0aW9uOmFsbCAwLjNzOyAtbW96LXRyYW5zaXRpb246YWxsIDAuM3M7IC1tcy10cmFuc2l0aW9uOmFsbCAwLjNzOyAtby10cmFuc2l0aW9uOmFsbCAwLjNzOyB0cmFuc2l0aW9uOmFsbCAwLjNzOyBvcGFjaXR5OjA7IH0gLnByb21vLWJvZHk6aG92ZXIgLnByb21vLWhvdmVyIHsgb3BhY2l0eToxOyB9IC5wcm9tby1ib2R5OmhvdmVyIC5wcm9tby1pbmZvIHsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSkgc2NhbGUoMSwxKTsgfSAucHJvbW8tbWFzayB7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MDsgbGVmdDowOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgYmFja2dyb3VuZDpyZ2JhKDAsMCwwLDAuNSk7IH0gLnByb21vLWluZm8geyBwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDowOyByaWdodDowOyB0b3A6NTAlOyB3aWR0aDozNSU7IG1hcmdpbjphdXRvOyAtd2Via2l0LWJvcmRlci1yYWRpdXM6MjVweDsgLW1vei1ib3JkZXItcmFkaXVzOjI1cHg7IGJvcmRlci1yYWRpdXM6MjVweDsgLXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTUwJSkgc2NhbGUoMCwwKTsgLW1vei10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTUwJSkgc2NhbGUoMCwwKTsgLW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xNTAlKSBzY2FsZSgwLDApOyAtby10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTUwJSkgc2NhbGUoMCwwKTsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTE1MCUpIHNjYWxlKDAsMCk7IC13ZWJraXQtYm94LXNoYWRvdzowIDAgMTBweCA1cHggcmJnYSgwLDAsMCwwLjIpOyAtbW96LWJveC1zaGFkb3c6MCAwIDEwcHggNXB4IHJiZ2EoMCwwLDAsMC4yKTsgYm94LXNoYWRvdzowIDAgMTBweCA1cHggcmJnYSgwLDAsMCwwLjIpOyAtd2Via2l0LXRyYW5zaXRpb246YWxsIDAuM3M7IC1tb3otdHJhbnNpdGlvbjphbGwgMC4zczsgLW1zLXRyYW5zaXRpb246YWxsIDAuM3M7IC1vLXRyYW5zaXRpb246YWxsIDAuM3M7IHRyYW5zaXRpb246YWxsIDAuM3M7IH0gLmZvcm0tZW5kIHsgZGlzcGxheTpmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyBhbGlnbi1pdGVtczpjZW50ZXI7IH0gLmZvcm0tZW5kIC5idG4td3JhcHBlciB7IG1hcmdpbjowIGF1dG87IH0gLmZvcm0tZW5kIC5lbXB0eS1zcGFjZSB7IG1hcmdpbjphdXRvOyB9IC5mb3JtLWVuZCAucHJvbW8tYnRuIHsgcG9zaXRpb246aW5pdGlhbDsgfSAuZm9ybS1lbmQgLnByaW50IHsgbWFyZ2luLWxlZnQ6YXV0bzsgd2lkdGg6aW5pdGlhbDsgfSAucHJvbW8tYnRuIHsgcGFkZGluZzoxMHB4IDEwcHggMTBweCAxMHB4OyB3aWR0aDoxMDAlOyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyBib3JkZXI6MXB4IHNvbGlkOyB0ZXh0LXRyYW5zZm9ybTp2YXIoLS1jZXJ0LXR4dC10cmFuc2Zvcm0sIHZhcigtLXR4dC11cHBlcikpOyBmb250LXdlaWdodDpub3JtYWw7IHBvc2l0aW9uOmFic29sdXRlOyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGJvcmRlci1jb2xvcjp2YXIoLS1wcm9tby1idG4tdGV4dC1jb2xvcik7IGNvbG9yOnZhcigtLXByb21vLWJ0bi10ZXh0LWNvbG9yKTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1wcm9tby1idG4tY29sb3IpOyBib3JkZXItcmFkaXVzOnZhcigtLXByb21vLWJ0bi1ib3JkZXItcmFkaXVzKTsgdHJhbnNpdGlvbjowLjI1czsgfSAucHJvbW9zIHsgYmFja2dyb3VuZDojZjFmMWYxOyBib3JkZXItcmFkaXVzOjVweDsgYm94LXNoYWRvdzowIDAgMTBweCAxcHggcmdiYSgwLDAsMCwwLjIpOyBwb3NpdGlvbjpyZWxhdGl2ZTsgY3Vyc29yOmRlZmF1bHQ7IG1hcmdpbjoxMnB4IDEwcHg7IGRpc3BsYXk6IGdyaWQ7IGdyaWQtcm93OnNwYW4gODsgZ3JpZC1jb2x1bW46c3BhbiAxOyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6c3ViZ3JpZDsgZ3JpZC10ZW1wbGF0ZS1yb3dzOnN1YmdyaWQ7IH0gLnByb21vcyAuaGVhZGVyIHsgZ3JpZC1hcmVhOmhlYWRlcjsgfSAjc2VydmljZSAucHJvbW9zIC5wcm9tby1jb250ZW50eyBkaXNwbGF5OmJsb2NrOyBncmlkLXJvdzphdXRvOyB9IC5wcm9tb3MgLnByb21vLWNvbnRlbnQgeyBncmlkLWFyZWE6Y29udGVudDsgZGlzcGxheTpncmlkOyBncmlkLXRlbXBsYXRlLXJvd3M6c3ViZ3JpZDsgZ3JpZC1yb3c6MiAvIDc7IH0gLnByb21vcyAucHJvbW8tZm9vdGVyIHsgZ3JpZC1hcmVhOmZvb3RlcjsgcGFkZGluZzowIDE1cHggMTVweCAxNXB4OyB9IC5wcm9tb3M6aG92ZXIgLnByb21vLWJ0biwgLnByb21vLWJ0bjpob3ZlciB7IGNvbG9yOnZhcigtLXByb21vLWJ0bi1ob3Zlci10ZXh0LWNvbG9yKTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1wcm9tby1idG4taG92ZXItYmctY29sb3IpOyBib3JkZXItY29sb3I6dmFyKC0tcHJvbW8tYnRuLWhvdmVyLXRleHQtY29sb3IpOyB9IC5wcm9tb3MgLnByb21vLWJ0biB7IHdpZHRoOmluaGVyaXQ7IHBvc2l0aW9uOmluaXRpYWw7IGRpc3BsYXk6YmxvY2s7IHBhZGRpbmc6MTVweCA0NXB4OyB9IC5wcm9tb3MucHJvbW8tc21hbGwgLnByb21vLWJ0biB7IHBhZGRpbmc6MTBweCAyNXB4OyB9IC5wcm9tby1icmVhayB7IGJvcmRlci10b3A6MXB4IHNvbGlkICNhYmFiYWI7IHBhZGRpbmctdG9wOjEwcHg7IG1hcmdpbjoxNXB4IDA7IH0gLnByb21vLWltYWdlLCAucHJvbW8tZGV0YWlscy1pbWFnZSB7IG92ZXJmbG93OmhpZGRlbjsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjVweCA1cHggMCAwOyAtbW96LWJvcmRlci1yYWRpdXM6NXB4IDVweCAwIDA7IGJvcmRlci1yYWRpdXM6NXB4IDVweCAwIDA7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBiYWNrZ3JvdW5kLXNpemU6Y29udGFpbjsgYmFja2dyb3VuZC1wb3NpdGlvbjpjZW50ZXI7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYXNwZWN0LXJhdGlvOnZhcigtLXByb21vLWltZy1yYXRpbywgbm9uZSk7IH0gLnByb21vLWRldGFpbHMtaW1hZ2V7IHdpZHRoOjEwMCU7IH0gLnByb21vczpob3ZlciAucHJvbW8taW1hZ2UgaW1nIHsgLXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMS4xKTsgLW1vei10cmFuc2Zvcm06c2NhbGUoMS4xKTsgLW1zLXRyYW5zZm9ybTpzY2FsZSgxLjEpOyAtby10cmFuc2Zvcm06c2NhbGUoMS4xKTsgdHJhbnNmb3JtOnNjYWxlKDEuMSk7IH0gLnByb21vLWltYWdlIGltZyB7IG1heC13aWR0aDoxMDAlOyB0cmFuc2l0aW9uOnRyYW5zZm9ybSAxczsgZGlzcGxheTp0YWJsZS1jZWxsOyBtYXJnaW46MCBhdXRvOyB9IC5wcm9tby1ib2R5IHsgcGFkZGluZzoxNXB4OyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAucHJvbW8tYm9keS5ncmlkIHsgZGlzcGxheTpncmlkOyBoZWlnaHQ6MTAwJTsgZ3JpZC10ZW1wbGF0ZS1yb3dzOjFmciAzZnI7IH0gLnByb21vLWJvZHkuZ3JpZCAucHJvbW8tY2FwdGlvbi5oZWFkZXIgeyBkaXNwbGF5OmdyaWQ7IGdyaWQtdGVtcGxhdGUtcm93czoxZnIgYXV0bzsgfSAucHJvbW8tY29udGVudC5wYWRkZWQgeyBwYWRkaW5nOjE1cHg7IH0gLnByb21vLWRlc2MgeyBkaXNwbGF5Om5vbmU7IH0gLnByb21vLXRpdGxlIHsgZm9udC1zaXplOjEuNXJlbSA7IGRpc3BsYXk6YmxvY2s7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6IzMzMzMzMzsgbWluLWhlaWdodDo3OHB4OyB9IC5wcm9tby1tZWRpdW0gLnByb21vLXRpdGxlIHsgbWluLWhlaWdodDo4N3B4OyB9IC5wcm9tby1zbWFsbCAucHJvbW8tdGl0bGUgeyBmb250LXNpemU6MS4yNXJlbSA7IH0gLnByb21vLWNhcHRpb24geyBjb2xvcjojMzMzMzMzOyB9IC5wcm9tby1jYXB0aW9uOm5vdCg6bGFzdC1jaGlsZCkgeyBtYXJnaW4tYm90dG9tOjEwcHg7IH0gLnByb21vLW9mZmVyIC5wcm9tby10aXRsZSB7IG1pbi1oZWlnaHQ6MDsgfSAucHJvbW8tc3ViY2FwdGlvbiB7IG1hcmdpbi10b3A6NXB4OyBmb250LXNpemU6MC44NzVyZW07IH0gLnByb21vLXN1YmNhcHRpb24uc3ViaGVhZGluZy4tbWggeyBtaW4taGVpZ2h0OjMxcHg7IH0gLnByb21vLXN1YmNhcHRpb24uZGVzY3JpcHRpb24uLW1oIHsgbWluLWhlaWdodDo0OHB4OyB9IC5wcm9tby1kaXNsY2FpbWVyIHsgZm9udC1zaXplOjAuNzVyZW07IH0gLnByb21vLWxpbmtzIHsgZGlzcGxheTpmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjsgYWxpZ24taXRlbXM6Y2VudGVyOyB9IC5wcm9tby1saW5rLWl0ZW0gLnByaW50IHsgd2lkdGg6YXV0bzsgdGV4dC1hbGlnbjpyaWdodDsgfSAucHJvbW9zLWNvbnRhaW5lci5ncmlkIHsgcG9zaXRpb246cmVsYXRpdmU7IGRpc3BsYXk6Z3JpZDsgfSAucHJvbW9zLWNvbnRhaW5lciAuZmEtYXJyb3ctZG93bi10by1saW5lIHsgZm9udC1zaXplOjJyZW07IGNvbG9yOiMwMDAwMDA7IHBvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjUwJTsgdG9wOjUwJTsgYmFja2dyb3VuZDojZmZmZmZmOyBwYWRkaW5nOjZweDsgYm9yZGVyLXJhZGl1czo1cHg7IGJveC1zaGFkb3c6MCAwIDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4yKTsgdHJhbnNpdGlvbjphbGwgMC4yNXMgZWFzZS1vdXQ7IH0gLnByb21vcy1jb250YWluZXIuZ3JpZC5wcm9tby1tZWRpdW0geyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDIsIDFmcik7IH0gLnByb21vcy1jb250YWluZXIuZ3JpZC5wcm9tby1zbWFsbCB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMywgMWZyKTsgfSAucHJvbW9zLWNvbnRhaW5lci5ncmlkLmNvbGxhcHNlIHsgaGVpZ2h0OjE0MnB4OyBvdmVyZmxvdzpoaWRkZW47IH0gLnByb21vcy1jb250YWluZXIuZ3JpZC5jb2xsYXBzZTo6YmVmb3JlIHsgY29udGVudDoiIjsgcG9zaXRpb246YWJzb2x1dGU7IGhlaWdodDoxMDAlOyB6LWluZGV4OjEwOyBsZWZ0OjEwcHg7IHJpZ2h0OjEwcHg7IHRvcDoxMHB4OyBib3JkZXItcmFkaXVzOjVweCA1cHggMCAwOyBiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgwZGVnLCByZ2IoMCAwIDAgLyAzMCUpIDAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDApIDEwMCUpIH0gLnByb21vcy1jb250YWluZXIuZ3JpZC5jb2xsYXBzZTpob3Zlcjo6YmVmb3JlIHsgYmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMGRlZywgcmdiKDEzOCAxMzggMTM4IC8gMzAlKSAwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwKSAxMDAlKTsgY3Vyc29yOnBvaW50ZXI7IH0gLnByb21vcy1jb250YWluZXIuZ3JpZC5jb2xsYXBzZTpob3ZlciAuZmEtYXJyb3ctZG93bi10by1saW5lIHsgdG9wOjU1JTsgY29sb3I6IzgzODM4MzsgfSAuYmFubmVyLWZvcm0geyBwb3NpdGlvbjpyZWxhdGl2ZTsgZGlzcGxheTp0YWJsZTsgbWFyZ2luOjAgYXV0bzsgfSAuYmFubmVyLWZvcm0gLk1haW5Cb3hMYXllciB7IHBvc2l0aW9uOmFic29sdXRlOyB6LWluZGV4OjEwOyBsZWZ0OjA7IHJpZ2h0OjA7IHRvcDowOyBkaXNwbGF5OnRhYmxlLWNlbGw7IGhlaWdodDoxMDAlOyB9IC5iYW5uZXItZm9ybS1ib3ggeyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NXB4OyAtbW96LWJvcmRlci1yYWRpdXM6NXB4OyBib3JkZXItcmFkaXVzOjVweDsgcG9zaXRpb246YWJzb2x1dGU7IHJpZ2h0OjA7IG1heC13aWR0aDozNTBweDsgd2lkdGg6MTAwJTsgbWFyZ2luLXRvcDozNXB4OyB9IEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDoxMzAxcHgpIHsgLk1haW5Cb3hMYXllciAuYmFubmVyLWZvcm0tYm94IHsgdG9wOjUwJTsgLXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTsgLW1vei10cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTsgLW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpOyAtby10cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSk7IG1hcmdpbi10b3A6MDsgfSB9IEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDoxMzAxcHgpIHsgLmJhbm5lci1mb3JtIC5iYW5uZXItZm9ybS1ib3ggeyBwYWRkaW5nOjE1cHg7IG1heC13aWR0aDoyNzBweDsgZm9udC1zaXplOjAuODEzcmVtIDsgfSAuYmFubmVyLWZvcm0gI2Jhbm5lckZvcm0gLmZvcm0tY29udHJvbCB7IHBhZGRpbmc6NHB4IDhweDsgaGVpZ2h0OjMwcHg7IG1hcmdpbi1ib3R0b206MTJweDsgfSAuYmFubmVyLWZvcm0gLmJhbm5lci1mb3JtLXRpdGxlIHsgZm9udC1zaXplOjE1cHQ7IH0gLmJhbm5lci1mb3JtIC5iYW5uZXItZm9ybS1zdWJ0aXRsZSB7IGZvbnQtc2l6ZToxMXB0OyB9IC5iYW5uZXItZm9ybSAuYnRuLmJhbm5lci1idG4geyBwYWRkaW5nOjRweCAxMnB4OyB9IH0gLm90aGVyTG9nb01lbnVDb250YWluZXJ7IGZsb2F0OmxlZnQ7IH0gLm90aGVyTG9nb01lbnVDb250YWluZXJSaWdodHsgZmxvYXQ6cmlnaHQ7IH0gLm90aGVyTG9nb01lbnVJbWFnZXsgbWF4LXdpZHRoOjI1MHB4OyBtYXgtaGVpZ2h0OjEwMHB4OyB9IC5jdGFib3gtLXdyYXBwZXIgeyBjbGVhcjpib3RoOyBwYWRkaW5nOjAuNzVyZW0gMDsgYmFja2dyb3VuZDojZmZmZmZmOyB9IC5jdGFib3gtLXRhYmxlIHsgd2lkdGg6ODUlIWltcG9ydGFudDsgbWF4LXdpZHRoOjEyMDBweDsgbWFyZ2luOmF1dG87IGJvcmRlci1zcGFjaW5nOjFyZW07IGJvcmRlci1jb2xsYXBzZTp1bnNldDsgfSAuY3RhYm94LS1jZWxsIHsgd2lkdGg6MjUlOyB0cmFuc2l0aW9uOmFsbCAwLjJzIGxpbmVhcjsgfSAuY3RhYm94LS1jZWxsOm5vdChbb25jbGljaz0nJ10pOmhvdmVyIHsgY3Vyc29yOnBvaW50ZXI7IH0gLmN0YWJveC0tY2VsbC5jdGFib3gtLWNlbGxfXzEgeyB3aWR0aDoxMDAlOyB9IC5jdGFib3gtLWNlbGwuY3RhYm94LS1jZWxsX18yIHsgd2lkdGg6NDgwcHg7IH0gLmN0YWJveC0tY2VsbC5jdGFib3gtLWNlbGxfXzMgeyB3aWR0aDozMyU7IH0gLmN0YWJveC0tY29udGFpbmVyIHsgcGFkZGluZzoxcmVtOyB9IC5jdGFib3gtLWNvbnRhaW5lciAuY3RhYm94LS1pY29uIHsgZm9udC1zaXplOjEuNTYzcmVtIDsgfSAuY3RhYm94LS1jb250YWluZXIgLmN0YWJveC0taWNvbi5jdGFib3gtLWljb25fX3RvcCB7IHBhZGRpbmctYm90dG9tOjEwcHg7IH0gLmN0YWJveC0tY29udGFpbmVyIC5jdGFib3gtLWljb24uY3RhYm94LS1pY29uX19sZWZ0IHsgZmxvYXQ6bGVmdDsgfSAuY3RhYm94LS1pY29uX19sZWZ0IH4gLmN0YWJveC0tdGl0bGUsIC5jdGFib3gtLWljb25fX2xlZnQgfiAuY3RhYm94LS1kZXNjcmlwdGlvbiwgLmN0YWJveC0taWNvbl9fbGVmdCB+IC5jdGFib3gtLWJ1dHRvbiB7IG1hcmdpbi1sZWZ0OjM1cHg7IH0gLmN0YWJveC0tY29udGFpbmVyIC5jdGFib3gtLXRpdGxlIHsgZm9udC13ZWlnaHQ6Ym9sZDsgZm9udC1zaXplOjEuNTYzcmVtIDsgfSAuY3RhYm94LS1jb250YWluZXIgLmN0YWJveC0tZGVzY3JpcHRpb24geyBtYXJnaW4tdG9wOjEwcHg7IH0gLmN0YWJveC0tY29udGFpbmVyIC5jdGFib3gtLWJ1dHRvbiB7IG1hcmdpbi10b3A6MjBweDsgfSAucGFyYWxsYXgtc2VjdGlvbiB7IGJhY2tncm91bmQtcG9zaXRpb246Y2VudGVyOyBiYWNrZ3JvdW5kLXNpemU6Y292ZXI7IGJhY2tncm91bmQtYXR0YWNobWVudDpsb2NhbDsgcGFkZGluZzoyNXB4IDA7IC13ZWJraXQtdHJhbnNpdGlvbjphbGwgMC4zczsgLW1vei10cmFuc2l0aW9uOmFsbCAwLjNzOyAtbXMtdHJhbnNpdGlvbjphbGwgMC4zczsgLW8tdHJhbnNpdGlvbjphbGwgMC4zczsgdHJhbnNpdGlvbjphbGwgMC4zczsgYmFja2dyb3VuZC1jb2xvcjojMDAwOyB9IC5wYXJhbGxheC1zZWN0aW9uIC5jb250YWluZXIgeyB3aWR0aDo2MCU7IHBhZGRpbmctcmlnaHQ6MTVweDsgcGFkZGluZy1sZWZ0OjE1cHg7IG1hcmdpbi1yaWdodDphdXRvOyBtYXJnaW4tbGVmdDphdXRvOyB9IC5wYXJhbGxheC1zZWN0aW9uIC5jb250YWluZXIubGFyZ2UgeyB3aWR0aDo4MCU7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfSAucGFyYWxsYXgtY29udGVudCB7IHdpZHRoOjQ1JTsgcGFkZGluZzo0MHB4IDQwcHg7IGJhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwwLjcpOyBjb2xvcjojZmZmOyB9IC5wYXJhbGxheC1jb250ZW50IC5wYXJhbGxheC1jb250ZW50LWJ1c2luZXNzLXRpdGxlIHsgZm9udC1zaXplOjEuNDM4cmVtICFpbXBvcnRhbnQ7IGZvbnQtd2VpZ2h0Om5vcm1hbCAhaW1wb3J0YW50OyBtYXJnaW4tYm90dG9tOjIwcHg7IGNvbG9yOmluaGVyaXQ7IH0gLnBhcmFsbGF4LWNvbnRlbnQgLnBhcmFsbGF4LWNvbnRlbnQtYnVzaW5lc3MtZGVzYyB7IGZvbnQtc2l6ZTowLjkzOHJlbSAhaW1wb3J0YW50OyB0ZXh0LWFsaWduOmxlZnQ7IGNvbG9yOmluaGVyaXQ7IH0gLnBhcmFsbGF4LWNvbnRlbnQgLnBhcmFsbGF4LWNvbnRlbnQtYnVzaW5lc3MtZGVzYyBheyBjb2xvcjppbmhlcml0OyB9IEBtZWRpYSAobWF4LXdpZHRoOjEzMzBweCkgeyAucGFyYWxsYXgtc2VjdGlvbiAuY29udGFpbmVyIHsgd2lkdGg6ODAlOyB9IC5wYXJhbGxheC1zZWN0aW9uIC5jb250YWluZXIubGFyZ2UgeyB3aWR0aDoxMDAlOyB9IH0gLnNyLW9ubHkgeyBwb3NpdGlvbjphYnNvbHV0ZSAhaW1wb3J0YW50OyB3aWR0aDoxcHggIWltcG9ydGFudDsgaGVpZ2h0OjFweCAhaW1wb3J0YW50OyBwYWRkaW5nOjAgIWltcG9ydGFudDsgbWFyZ2luOi0xcHggIWltcG9ydGFudDsgb3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnQ7IGNsaXA6cmVjdCgwLCAwLCAwLCAwKSAhaW1wb3J0YW50OyBib3JkZXI6MCAhaW1wb3J0YW50OyB9IC5ibnBfcHVsbG91dF9pbWd7IG1heC13aWR0aDoxMHJlbTsgbWFyZ2luOmF1dG87IH0gLmJucF9wdWxsb3V0X2NvbF9zZXBhcmF0b3J7IHdpZHRoOjFweDsgYmFja2dyb3VuZC1jb2xvcjojRUJFQkVCOyBoZWlnaHQ6OThweDsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDoyMHB4OyB9IC5ibnBfcHVsbG91dF9taWRfY29seyB3aWR0aDo3MCU7IGRpc3BsYXk6dGFibGUtY2VsbDsgfSAuYm5wX3B1bGxvdXRfbWlkX2NvbF9yaWdodHsgYm9yZGVyLWxlZnQtd2lkdGg6MXB4OyB9IC5ibnBfcHVsbG91dF9taWRfY29sX3NlcGFyYXRvcnsgd2lkdGg6MXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiNFQkVCRUI7IGhlaWdodDo0MHB4OyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjc4cHg7IH0gLmJucF9wdWxsb3V0X21pZF9jb2xfcHJpY2Vfd2l0aF90aXRsZXsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IHRleHQtYWxpZ246Y2VudGVyOyB3aWR0aDo0NSU7IH0gLmJucF9wdWxsb3V0X21pZF9jb2xfcHJpY2V7IGZvbnQtc2l6ZToycmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgfSBAbWVkaWEgKG1heC13aWR0aDoxMzMwcHgpIHsgLmJucF9wdWxsb3V0X21pZF9jb2wgeyB3aWR0aDo1MCU7IH0gLmJucF9wdWxsb3V0X21pZF9jb2xfcHJpY2Vfd2l0aF90aXRsZSB7IHdpZHRoOjEwMCU7IH0gLmJucF9wdWxsb3V0X2NvbF9zZXBhcmF0b3IgeyBoZWlnaHQ6MTY0cHg7IH0gLmJucF9wdWxsb3V0X21pZF9jb2xfc2VwYXJhdG9yIHsgaGVpZ2h0OjEwNnB4OyB9IH0gLnB1bGxvdXQtY29udGVudCAuY3JlZGl0U2NvcmVQdWxsb3V0SW1neyBoZWlnaHQ6MTEwcHg7IGJhY2tncm91bmQtY29sb3I6IzAwNDQ3ODsgfSAucHVsbG91dC1jb250ZW50IC5jcmVkaXRTY29yZVB1bGxvdXRCdXR0b257IGJhY2tncm91bmQ6IzQxN0YxQSAhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOjNweDsgY29sb3I6I2ZmZmZmZjsgcGFkZGluZzo3cHggMjBweCA3cHg7IGZvbnQtc2l6ZToxcmVtIDsgZm9udC13ZWlnaHQ6NzAwOyB0ZXh0LXNoYWRvdzowLjRweCAwOyB9IC5wdWxsb3V0LWNvbnRlbnQgLmNyZWRpdFNjb3JlUHVsbG91dENvbnRlbnR7IGNvbG9yOiMwMDAwMDA7IGZvbnQtc2l6ZToxLjU2M3JlbSA7IGZvbnQtd2VpZ2h0OjcwMDsgbWFyZ2luLWJvdHRvbTotMTVweDsgfSAucHVsbG91dC1jb250ZW50IC5jcmVkaXRTY29yZVB1bGxvdXRDb250ZW50U2NvcmV7IGNvbG9yOiMwMDAwMDA7IGZvbnQtd2VpZ2h0OjcwMDsgZm9udC1zaXplOjEuODc1cmVtIDsgdGV4dC1zaGFkb3c6MnB4IDA7IH0gLnB1bGxvdXQtY29udGVudCAuY3JlZGl0U2NvcmVQdWxsb3V0Q29udGVudEZyZWV7IGNvbG9yOiM0MTdGMUE7IGZvbnQtd2VpZ2h0OjcwMDsgZm9udC1zaXplOjIuODEzcmVtIDsgdGV4dC1zaGFkb3c6MnB4IDA7IH0gLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQuaXNGdWxsV2lkdGhQYWdlIC5wdWxsb3V0LWNvbnRlbnQgLmNyZWRpdFNjb3JlUHVsbG91dE1heFdpZHRoeyBtYXgtd2lkdGg6MTIwMHB4OyB9IC5wdWxsb3V0LWNvbnRlbnQgLmNyZWRpdFNjb3JlUHVsbG91dE1heFdpZHRoeyBtYXgtd2lkdGg6OTYwcHg7IH0gLnNsaWRlci1tYWluIGltZ3sgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gMC41cyBlYXNlLW91dCB9IC5jb21tdW5pY2F0aW9uUHJlZnsgcGFkZGluZzp2YXIoLS1pbnB1dC1wYWRkaW5nKTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbnB1dC1iZy1jb2xvcik7IGJvcmRlci1yYWRpdXM6dmFyKC0taW5wdXQtcmFkaXVzKTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1pbnB1dC1ib3JkZXItY29sb3IpOyBjb2xvcjojMjEyNTI5OyBmb250LXNpemU6dmFyKC0taW5wdXQtZm9udC1zaXplKTsgbGluZS1oZWlnaHQ6dmFyKC0taW5wdXQtbGluZS1oZWlnaHQpOyBmb250LXdlaWdodDo0MDA7IHdpZHRoOjUwJSAhaW1wb3J0YW50OyB9IC5kMmNmb3JtIHsgLS1sYWJlbC1yZXF1aXJlZC1zeW1ib2w6IioiOyAtLWxhYmVsLXJlcXVpcmVkLWNvbG9yOiNGRjAwMDA7IC0taW5wdXQtcGFkZGluZzp2YXIoLS1zLTEpIHZhcigtLXMxKTsgLS1pbnB1dC1iZy1jb2xvcjp2YXIoLS13aGl0ZSk7IC0taW5wdXQtYm9yZGVyLWNvbG9yOnZhcigtLW1pZC1ncmF5KTsgLS1pbnB1dC1yYWRpdXM6dmFyKC0tcy02KTsgLS1pbnB1dC1mb250LXNpemU6dmFyKC0tZnMwKTsgLS1pbnB1dC1saW5lLWhlaWdodDp2YXIoLS1mczIpOyB9IC5tYWluRGl2QWRqdXN0SGVhZGVyIC51cF9tZW51IC5TMTAwUGVyY2VudFdpZHRoIHsgYmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDsgfSAudXBfbWVudS5maXhlZCAuUzEwMFBlcmNlbnRXaWR0aHsgYmFja2dyb3VuZC1jb2xvcjpyZ2IoMjcsMjcsMjcpIH0gLm1haW5EaXZBZGp1c3RIZWFkZXIgLnYtY2FyZCAuYWRkcmVzcy1taWRkbGUgLm9yZywgLm1haW5EaXZBZGp1c3RIZWFkZXIgLnYtY2FyZCAuYWRkcmVzcy1taWRkbGUgLnN0cmVldC1hZGRyZXNzLCAubWFpbkRpdkFkanVzdEhlYWRlciAudi1jYXJkIC5hZGRyZXNzLW1pZGRsZSAubG9jYWxpdHksIC5tYWluRGl2QWRqdXN0SGVhZGVyIC52LWNhcmQgLmFkZHJlc3MtbWlkZGxlIC5yZWdpb24sIC5tYWluRGl2QWRqdXN0SGVhZGVyIC52LWNhcmQgLmFkZHJlc3MtbWlkZGxlIC5wb3N0YWwtY29kZSwgLm1haW5EaXZBZGp1c3RIZWFkZXIgLnYtY2FyZCAuYWRkcmVzcy1taWRkbGUgLmV4dGVuZGVkUGhvbmVUcmlnZ2VyLCAubWFpbkRpdkFkanVzdEhlYWRlciAudi1jYXJkIC5hZGRyZXNzLW1pZGRsZSAucGhvbmUtbGluayB7IGNvbG9yOnZhcigtLWhvbWVwYWdlLWhlYWRlci1pdGVtLWNvbG9yKSAhaW1wb3J0YW50OyB9IC5tYWluRGl2QWRqdXN0SGVhZGVyIC52LWNhcmQgLmFkZHJlc3MtbWlkZGxlIC5kZWFsZXJNYXBMaW5rIHN2ZyB7IGZpbGw6dmFyKC0taG9tZXBhZ2UtaGVhZGVyLWl0ZW0tY29sb3IpOyB9IC5tYWluRGl2QWRqdXN0SGVhZGVyIC52LWNhcmQgLmFkZHJlc3MtbWlkZGxlIC5mYS1jYXJldC1kb3duOjpiZWZvcmUsIC5tYWluRGl2QWRqdXN0SGVhZGVyIC52LWNhcmQgLmFkZHJlc3MtbWlkZGxlIC5mYS1waG9uZTo6YmVmb3JlIHsgY29sb3I6dmFyKC0taG9tZXBhZ2UtaGVhZGVyLWl0ZW0tY29sb3IpOyB9IC5tYWluRGl2QWRqdXN0SGVhZGVyIC51cF9tZW51IC5TMTAwUGVyY2VudFdpZHRoID4gdWwgPiBsaSA+IGEudG9wX2xpbmsgeyBjb2xvcjp2YXIoLS1ob21lcGFnZS1tZW51LWl0ZW0tY29sb3IpOyB9IC5tYWluRGl2QWRqdXN0SGVhZGVyIC5sYW5ndWFnZUJhciAuZ1JhdGluZy1pY29uI2dSYXRpbmcsIC5tYWluRGl2QWRqdXN0SGVhZGVyIC5sYW5ndWFnZUJhciAuZGVza3RvcF9sYW5nX2J1dHRvbi5hY3RpdmUsIC5tYWluRGl2QWRqdXN0SGVhZGVyIC5sYW5ndWFnZUJhciBhLmRlc2t0b3BfbGFuZ19idXR0b246aG92ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50OyBjb2xvcjp2YXIoLS1ob21lcGFnZS1oZWFkZXItaXRlbS1jb2xvcik7IGJvcmRlcjoxcHggc29saWQgdmFyKC0taG9tZXBhZ2UtaGVhZGVyLWl0ZW0tY29sb3IpOyB9IC5tYWluRGl2QWRqdXN0SGVhZGVyIC5sYW5ndWFnZUJhciAuZGVza3RvcF9sYW5nX2J1dHRvbiB7IGNvbG9yOiMwMDAwMDA7IGJhY2tncm91bmQ6cmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ob21lcGFnZS1oZWFkZXItaXRlbS1jb2xvcik7IH0gLm1haW5EaXZBZGp1c3RIZWFkZXIgLmxhbmd1YWdlQmFyIGRpdi5kMmMtZmF2cy1uYXYtd3JhcHBlciBpLmZhciB7IGNvbG9yOnZhcigtLWhvbWVwYWdlLWhlYWRlci1pdGVtLWNvbG9yKTsgfSAubWFpbkRpdkFkanVzdEhlYWRlciAubGFuZ3VhZ2VCYXIgLnNlcnZpY2UtaGVhZGVyLWZvcm0gLmJ0biB7IGJvcmRlci1jb2xvcjp2YXIoLS1ob21lcGFnZS1oZWFkZXItaXRlbS1jb2xvcik7IH0gLmxhbmd1YWdlQmFyIC5nUmF0aW5nLWljb24jZ1JhdGluZywgLmxhbmd1YWdlQmFyICNzZXJ2aWNlX2FwcG9pbnRfaGVhZGVyID4gYSwgLmxhbmd1YWdlQmFyIC5kZXNrdG9wX2xhbmdfYnV0dG9uIHsgYm9yZGVyLXJhZGl1czp2YXIoLS1wcm9tby1idG4tYm9yZGVyLXJhZGl1cykgIWltcG9ydGFudDsgfSAuZ1JhdGluZy1pY29uI2dSYXRpbmcgLnJhdGluZyB7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyBsaW5lLWhlaWdodDoxOyB9IC5tYXJnaW4tYm90dG9tLS00cHggeyBtYXJnaW4tYm90dG9tOi00cHg7IH0gLm1haW5EaXZBZGp1c3RIZWFkZXIgLmxhbmd1YWdlQmFyLCAubWFpbkRpdkFkanVzdEhlYWRlciAudi1jYXJkLCAubWFpbkRpdkFkanVzdEhlYWRlciAuYmFubmVyLXNlYXJjaC1ib3gtd3JhcHBlciB7IHotaW5kZXg6MjsgcG9zaXRpb246cmVsYXRpdmUgfQovKiogL2Nzcy9wcm9fZHJvcGRvd25fNC5jc3MgKiovCi5pZE5hdjEgeyBwYWRkaW5nOjA7IGxpc3Qtc3R5bGU6bm9uZTsgaGVpZ2h0OjI4cHg7IGZvbnQtc2l6ZTowLjc1cmVtIDsgZm9udC1zdHlsZTpub3JtYWw7IGZvbnQtd2VpZ2h0OmJvbGQ7IHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTsgY29sb3I6I0Y5RjlGOTsgfSAuaWROYXYxIGxpLnRvcCB7ZGlzcGxheTpibG9jazsgZmxvYXQ6bGVmdDsgaGVpZ2h0OjI4cHg7IHBhZGRpbmc6MDt9IC5pZE5hdjEgbGkudG9wMSB7ZGlzcGxheTpibG9jazsgZmxvYXQ6bGVmdDsgaGVpZ2h0OjI4cHg7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvYmxfaG92ZXIucG5nKSBsZWZ0IHRvcCByZXBlYXQteDsgcGFkZGluZzowOyBwYWRkaW5nLXJpZ2h0OjJweDsgZm9udC1zaXplOjAuODEzcmVtIDsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlOyBjb2xvcjojZmZmOyB0ZXh0LWFsaWduOmNlbnRlcjsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDt9IC5pZE5hdjEgbGkgYS50b3BfbGluayB7IGRpc3BsYXk6YmxvY2s7IGZsb2F0OmxlZnQ7IGhlaWdodDoyOHB4OyBsaW5lLWhlaWdodDozMHB4OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC1zaXplOjAuODEzcmVtIDsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlOyBmb250LXdlaWdodDpub3JtYWw7IHBhZGRpbmc6MHB4IDEycHggMHB4IDEycHg7IGN1cnNvcjpwb2ludGVyOyAtbW96LWJvcmRlci1yYWRpdXM6M3B4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4OyBib3JkZXItcmFkaXVzOjNweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6M3B4OyBiYWNrZ3JvdW5kOiMxYjFiMWI7IGNvbG9yOiNmZmZmZmY7IH0gLmlkTmF2MSBsaSBhLnRvcF9saW5rOmhvdmVyIHsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IGZpbHRlcjpicmlnaHRuZXNzKDk1JSk7IH0gLmlkTmF2MSBsaSBhLnRvcF9saW5rMSB7ZGlzcGxheTpibG9jazsgZmxvYXQ6bGVmdDsgaGVpZ2h0OjI4cHg7IGxpbmUtaGVpZ2h0OjMwcHg7IGNvbG9yOiNmZWZlZmU7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXNpemU6MC44MTNyZW0gOyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgcGFkZGluZzowcHggMTJweCAwcHggMTJweDsgY3Vyc29yOnBvaW50ZXI7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvYmxfaG92ZXIucG5nKSBsZWZ0IHRvcCByZXBlYXQteDsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDt9IC5pZE5hdjIgeyBwYWRkaW5nOjA7IGxpc3Qtc3R5bGU6bm9uZTsgaGVpZ2h0OjI4cHg7IGZvbnQtc2l6ZTowLjc1cmVtIDsgZm9udC1zdHlsZTpub3JtYWw7IGZvbnQtd2VpZ2h0OmJvbGQ7IHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTsgY29sb3I6I0Y5RjlGOTsgfSAuaWROYXYyIGxpLnRvcCB7ZGlzcGxheTpibG9jazsgZmxvYXQ6bGVmdDsgaGVpZ2h0OjI4cHg7IHBhZGRpbmc6MDsgcGFkZGluZy1yaWdodDoycHg7fSAuaWROYXYyIGxpLnRvcDEge2Rpc3BsYXk6YmxvY2s7IGZsb2F0OmxlZnQ7IGhlaWdodDoyOHB4OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2JsX2hvdmVyMi5wbmcpIGxlZnQgdG9wIHJlcGVhdC14OyBwYWRkaW5nOjA7IHBhZGRpbmctcmlnaHQ6MnB4OyBmb250LXNpemU6MC44MTNyZW0gOyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7IGNvbG9yOiNmZmY7IHRleHQtYWxpZ246Y2VudGVyOyAtbW96LWJvcmRlci1yYWRpdXM6M3B4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4OyBib3JkZXItcmFkaXVzOjNweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6M3B4O30gLmlkTmF2MiBsaSBhLnRvcF9saW5rIHtkaXNwbGF5OmJsb2NrOyBmbG9hdDpsZWZ0OyBoZWlnaHQ6MjhweDsgbGluZS1oZWlnaHQ6MzBweDsgY29sb3I6I2ZlZmVmZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTsgZm9udC13ZWlnaHQ6bm9ybWFsOyBwYWRkaW5nOjBweCAxMnB4IDBweCAxMnB4OyBjdXJzb3I6cG9pbnRlcjsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9ibF9iZzIucG5nKSBsZWZ0IHRvcCByZXBlYXQteDsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDt9IC5pZE5hdjIgbGkgYS50b3BfbGluazpob3ZlciB7Y29sb3I6I2ZmZjsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9ibF9ob3ZlcjIucG5nKSBsZWZ0IHRvcCByZXBlYXQteDsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDt9IC5pZE5hdjIgbGkgYS50b3BfbGluazEge2Rpc3BsYXk6YmxvY2s7IGZsb2F0OmxlZnQ7IGhlaWdodDoyOHB4OyBsaW5lLWhlaWdodDozMHB4OyBjb2xvcjojZmVmZWZlOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC1zaXplOjAuODEzcmVtIDsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlOyBmb250LXdlaWdodDpub3JtYWw7IHBhZGRpbmc6MHB4IDEycHggMHB4IDEycHg7IGN1cnNvcjpwb2ludGVyOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2JsX2hvdmVyMi5wbmcpIGxlZnQgdG9wIHJlcGVhdC14OyAtbW96LWJvcmRlci1yYWRpdXM6M3B4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4OyBib3JkZXItcmFkaXVzOjNweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6M3B4O30KLyoqIC9jc3MvanF1ZXJ5LXVpLWZhY3RvcnkvMS4xMy4yL2pxdWVyeS11aS5taW4uY3NzICoqLwoudWktaGVscGVyLWhpZGRlbntkaXNwbGF5Om5vbmV9LnVpLWhlbHBlci1oaWRkZW4tYWNjZXNzaWJsZXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweH0udWktaGVscGVyLXJlc2V0e21hcmdpbjowO3BhZGRpbmc6MDtib3JkZXI6MDtvdXRsaW5lOjA7bGluZS1oZWlnaHQ6MS4zO3RleHQtZGVjb3JhdGlvbjpub25lO2ZvbnQtc2l6ZToxMDAlO2xpc3Qtc3R5bGU6bm9uZX0udWktaGVscGVyLWNsZWFyZml4OmJlZm9yZSwudWktaGVscGVyLWNsZWFyZml4OmFmdGVye2NvbnRlbnQ6IiI7ZGlzcGxheTp0YWJsZTtib3JkZXItY29sbGFwc2U6Y29sbGFwc2V9LnVpLWhlbHBlci1jbGVhcmZpeDphZnRlcntjbGVhcjpib3RofS51aS1oZWxwZXItemZpeHt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3RvcDowO2xlZnQ6MDtwb3NpdGlvbjphYnNvbHV0ZTtvcGFjaXR5OjA7LW1zLWZpbHRlcjoiYWxwaGEob3BhY2l0eT0wKSJ9LnVpLWZyb250e3otaW5kZXg6MTAwfS51aS1zdGF0ZS1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdCFpbXBvcnRhbnQ7cG9pbnRlci1ldmVudHM6bm9uZX0udWktaWNvbntkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bWFyZ2luLXRvcDotLjI1ZW07cG9zaXRpb246cmVsYXRpdmU7dGV4dC1pbmRlbnQ6LTk5OTk5cHg7b3ZlcmZsb3c6aGlkZGVuO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdH0udWktd2lkZ2V0LWljb24tYmxvY2t7bGVmdDo1MCU7bWFyZ2luLWxlZnQ6LThweDtkaXNwbGF5OmJsb2NrfS51aS13aWRnZXQtb3ZlcmxheXtwb3NpdGlvbjpmaXhlZDt0b3A6MDtsZWZ0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJX0udWktYWNjb3JkaW9uIC51aS1hY2NvcmRpb24taGVhZGVye2Rpc3BsYXk6YmxvY2s7Y3Vyc29yOnBvaW50ZXI7cG9zaXRpb246cmVsYXRpdmU7bWFyZ2luOjJweCAwIDAgMDtwYWRkaW5nOi41ZW0gLjVlbSAuNWVtIC43ZW07Zm9udC1zaXplOjEwMCV9LnVpLWFjY29yZGlvbiAudWktYWNjb3JkaW9uLWNvbnRlbnR7cGFkZGluZzoxZW0gMi4yZW07Ym9yZGVyLXRvcDowO292ZXJmbG93OmF1dG99LnVpLXNsaWRlcntwb3NpdGlvbjpyZWxhdGl2ZTt0ZXh0LWFsaWduOmxlZnR9LnVpLXNsaWRlciAudWktc2xpZGVyLWhhbmRsZXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjI7d2lkdGg6MS4yZW07aGVpZ2h0OjEuMmVtO2N1cnNvcjpwb2ludGVyOy1tcy10b3VjaC1hY3Rpb246bm9uZTt0b3VjaC1hY3Rpb246bm9uZX0udWktc2xpZGVyIC51aS1zbGlkZXItcmFuZ2V7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxO2ZvbnQtc2l6ZTouN2VtO2Rpc3BsYXk6YmxvY2s7Ym9yZGVyOjA7YmFja2dyb3VuZC1wb3NpdGlvbjowIDB9LnVpLXNsaWRlci51aS1zdGF0ZS1kaXNhYmxlZCAudWktc2xpZGVyLWhhbmRsZSwudWktc2xpZGVyLnVpLXN0YXRlLWRpc2FibGVkIC51aS1zbGlkZXItcmFuZ2V7ZmlsdGVyOmluaGVyaXR9LnVpLXNsaWRlci1ob3Jpem9udGFse2hlaWdodDouOGVtfS51aS1zbGlkZXItaG9yaXpvbnRhbCAudWktc2xpZGVyLWhhbmRsZXt0b3A6LS4zZW07bWFyZ2luLWxlZnQ6LS42ZW19LnVpLXNsaWRlci1ob3Jpem9udGFsIC51aS1zbGlkZXItcmFuZ2V7dG9wOjA7aGVpZ2h0OjEwMCV9LnVpLXNsaWRlci1ob3Jpem9udGFsIC51aS1zbGlkZXItcmFuZ2UtbWlue2xlZnQ6MH0udWktc2xpZGVyLWhvcml6b250YWwgLnVpLXNsaWRlci1yYW5nZS1tYXh7cmlnaHQ6MH0udWktc2xpZGVyLXZlcnRpY2Fse3dpZHRoOi44ZW07aGVpZ2h0OjEwMHB4fS51aS1zbGlkZXItdmVydGljYWwgLnVpLXNsaWRlci1oYW5kbGV7bGVmdDotLjNlbTttYXJnaW4tbGVmdDowO21hcmdpbi1ib3R0b206LS42ZW19LnVpLXNsaWRlci12ZXJ0aWNhbCAudWktc2xpZGVyLXJhbmdle2xlZnQ6MDt3aWR0aDoxMDAlfS51aS1zbGlkZXItdmVydGljYWwgLnVpLXNsaWRlci1yYW5nZS1taW57Ym90dG9tOjB9LnVpLXNsaWRlci12ZXJ0aWNhbCAudWktc2xpZGVyLXJhbmdlLW1heHt0b3A6MH0udWktd2lkZ2V0e2ZvbnQtZmFtaWx5OkFyaWFsLEhlbHZldGljYSxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxZW19LnVpLXdpZGdldCAudWktd2lkZ2V0e2ZvbnQtc2l6ZToxZW19LnVpLXdpZGdldCBpbnB1dCwudWktd2lkZ2V0IHNlbGVjdCwudWktd2lkZ2V0IHRleHRhcmVhLC51aS13aWRnZXQgYnV0dG9ue2ZvbnQtZmFtaWx5OkFyaWFsLEhlbHZldGljYSxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxZW19LnVpLXdpZGdldC51aS13aWRnZXQtY29udGVudHtib3JkZXI6MXB4IHNvbGlkICNjNWM1YzV9LnVpLXdpZGdldC1jb250ZW50e2JvcmRlcjoxcHggc29saWQgI2RkZDtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzMzM30udWktd2lkZ2V0LWNvbnRlbnQgYXtjb2xvcjojMzMzfS51aS13aWRnZXQtaGVhZGVye2JvcmRlcjoxcHggc29saWQgI2RkZDtiYWNrZ3JvdW5kOiNlOWU5ZTk7Y29sb3I6IzMzMztmb250LXdlaWdodDpib2xkfS51aS13aWRnZXQtaGVhZGVyIGF7Y29sb3I6IzMzM30udWktc3RhdGUtZGVmYXVsdCwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWRlZmF1bHQsLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWRlZmF1bHQsLnVpLWJ1dHRvbixodG1sIC51aS1idXR0b24udWktc3RhdGUtZGlzYWJsZWQ6aG92ZXIsaHRtbCAudWktYnV0dG9uLnVpLXN0YXRlLWRpc2FibGVkOmFjdGl2ZXtib3JkZXI6MXB4IHNvbGlkICNjNWM1YzU7YmFja2dyb3VuZDojZjZmNmY2O2ZvbnQtd2VpZ2h0Om5vcm1hbDtjb2xvcjojNDU0NTQ1fS51aS1zdGF0ZS1kZWZhdWx0IGEsLnVpLXN0YXRlLWRlZmF1bHQgYTpsaW5rLC51aS1zdGF0ZS1kZWZhdWx0IGE6dmlzaXRlZCxhLnVpLWJ1dHRvbixhOmxpbmsudWktYnV0dG9uLGE6dmlzaXRlZC51aS1idXR0b24sLnVpLWJ1dHRvbntjb2xvcjojNDU0NTQ1O3RleHQtZGVjb3JhdGlvbjpub25lfS51aS1zdGF0ZS1ob3ZlciwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWhvdmVyLC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1ob3ZlciwudWktc3RhdGUtZm9jdXMsLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1mb2N1cywudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZm9jdXMsLnVpLWJ1dHRvbjpob3ZlciwudWktYnV0dG9uOmZvY3Vze2JvcmRlcjoxcHggc29saWQgI2NjYztiYWNrZ3JvdW5kOiNlZGVkZWQ7Zm9udC13ZWlnaHQ6bm9ybWFsO2NvbG9yOiMyYjJiMmJ9LnVpLXN0YXRlLWhvdmVyIGEsLnVpLXN0YXRlLWhvdmVyIGE6aG92ZXIsLnVpLXN0YXRlLWhvdmVyIGE6bGluaywudWktc3RhdGUtaG92ZXIgYTp2aXNpdGVkLC51aS1zdGF0ZS1mb2N1cyBhLC51aS1zdGF0ZS1mb2N1cyBhOmhvdmVyLC51aS1zdGF0ZS1mb2N1cyBhOmxpbmssLnVpLXN0YXRlLWZvY3VzIGE6dmlzaXRlZCxhLnVpLWJ1dHRvbjpob3ZlcixhLnVpLWJ1dHRvbjpmb2N1c3tjb2xvcjojMmIyYjJiO3RleHQtZGVjb3JhdGlvbjpub25lfS51aS12aXN1YWwtZm9jdXN7Ym94LXNoYWRvdzowIDAgM3B4IDFweCByZ2IoOTQsMTU4LDIxNCl9LnVpLXN0YXRlLWFjdGl2ZSwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWFjdGl2ZSwudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtYWN0aXZlLGEudWktYnV0dG9uOmFjdGl2ZSwudWktYnV0dG9uOmFjdGl2ZSwudWktYnV0dG9uLnVpLXN0YXRlLWFjdGl2ZTpob3Zlcntib3JkZXI6MXB4IHNvbGlkICMwMDNlZmY7YmFja2dyb3VuZDojMDA3ZmZmO2ZvbnQtd2VpZ2h0Om5vcm1hbDtjb2xvcjojZmZmfS51aS1pY29uLWJhY2tncm91bmQsLnVpLXN0YXRlLWFjdGl2ZSAudWktaWNvbi1iYWNrZ3JvdW5ke2JvcmRlcjojMDAzZWZmO2JhY2tncm91bmQtY29sb3I6I2ZmZn0udWktc3RhdGUtYWN0aXZlIGEsLnVpLXN0YXRlLWFjdGl2ZSBhOmxpbmssLnVpLXN0YXRlLWFjdGl2ZSBhOnZpc2l0ZWR7Y29sb3I6I2ZmZjt0ZXh0LWRlY29yYXRpb246bm9uZX0udWktc3RhdGUtaGlnaGxpZ2h0LC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtaGlnaGxpZ2h0LC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1oaWdobGlnaHR7Ym9yZGVyOjFweCBzb2xpZCAjZGFkNTVlO2JhY2tncm91bmQ6I2ZmZmE5MDtjb2xvcjojNzc3NjIwfS51aS1zdGF0ZS1jaGVja2Vke2JvcmRlcjoxcHggc29saWQgI2RhZDU1ZTtiYWNrZ3JvdW5kOiNmZmZhOTB9LnVpLXN0YXRlLWhpZ2hsaWdodCBhLC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtaGlnaGxpZ2h0IGEsLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWhpZ2hsaWdodCBhe2NvbG9yOiM3Nzc2MjB9LnVpLXN0YXRlLWVycm9yLC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtZXJyb3IsLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWVycm9ye2JvcmRlcjoxcHggc29saWQgI2YxYTg5OTtiYWNrZ3JvdW5kOiNmZGRmZGY7Y29sb3I6IzVmM2YzZn0udWktc3RhdGUtZXJyb3IgYSwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWVycm9yIGEsLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWVycm9yIGF7Y29sb3I6IzVmM2YzZn0udWktc3RhdGUtZXJyb3ItdGV4dCwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWVycm9yLXRleHQsLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWVycm9yLXRleHR7Y29sb3I6IzVmM2YzZn0udWktcHJpb3JpdHktcHJpbWFyeSwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXByaW9yaXR5LXByaW1hcnksLnVpLXdpZGdldC1oZWFkZXIgLnVpLXByaW9yaXR5LXByaW1hcnl7Zm9udC13ZWlnaHQ6Ym9sZH0udWktcHJpb3JpdHktc2Vjb25kYXJ5LC51aS13aWRnZXQtY29udGVudCAudWktcHJpb3JpdHktc2Vjb25kYXJ5LC51aS13aWRnZXQtaGVhZGVyIC51aS1wcmlvcml0eS1zZWNvbmRhcnl7b3BhY2l0eTouNzstbXMtZmlsdGVyOiJhbHBoYShvcGFjaXR5PTcwKSI7Zm9udC13ZWlnaHQ6bm9ybWFsfS51aS1zdGF0ZS1kaXNhYmxlZCwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWRpc2FibGVkLC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1kaXNhYmxlZHtvcGFjaXR5Oi4zNTstbXMtZmlsdGVyOiJhbHBoYShvcGFjaXR5PTM1KSI7YmFja2dyb3VuZC1pbWFnZTpub25lfS51aS1zdGF0ZS1kaXNhYmxlZCAudWktaWNvbnstbXMtZmlsdGVyOiJhbHBoYShvcGFjaXR5PTM1KSJ9LnVpLWljb257d2lkdGg6MTZweDtoZWlnaHQ6MTZweH0udWktaWNvbiwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLWljb257YmFja2dyb3VuZC1pbWFnZTp1cmwoImltYWdlcy91aS1pY29uc180NDQ0NDRfMjU2eDI0MC5wbmciKX0udWktd2lkZ2V0LWhlYWRlciAudWktaWNvbntiYWNrZ3JvdW5kLWltYWdlOnVybCgiaW1hZ2VzL3VpLWljb25zXzQ0NDQ0NF8yNTZ4MjQwLnBuZyIpfS51aS1zdGF0ZS1ob3ZlciAudWktaWNvbiwudWktc3RhdGUtZm9jdXMgLnVpLWljb24sLnVpLWJ1dHRvbjpob3ZlciAudWktaWNvbiwudWktYnV0dG9uOmZvY3VzIC51aS1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKCJpbWFnZXMvdWktaWNvbnNfNTU1NTU1XzI1NngyNDAucG5nIil9LnVpLXN0YXRlLWFjdGl2ZSAudWktaWNvbiwudWktYnV0dG9uOmFjdGl2ZSAudWktaWNvbntiYWNrZ3JvdW5kLWltYWdlOnVybCgiaW1hZ2VzL3VpLWljb25zX2ZmZmZmZl8yNTZ4MjQwLnBuZyIpfS51aS1zdGF0ZS1oaWdobGlnaHQgLnVpLWljb24sLnVpLWJ1dHRvbiAudWktc3RhdGUtaGlnaGxpZ2h0LnVpLWljb257YmFja2dyb3VuZC1pbWFnZTp1cmwoImltYWdlcy91aS1pY29uc183Nzc2MjBfMjU2eDI0MC5wbmciKX0udWktc3RhdGUtZXJyb3IgLnVpLWljb24sLnVpLXN0YXRlLWVycm9yLXRleHQgLnVpLWljb257YmFja2dyb3VuZC1pbWFnZTp1cmwoImltYWdlcy91aS1pY29uc19jYzAwMDBfMjU2eDI0MC5wbmciKX0udWktYnV0dG9uIC51aS1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKCJpbWFnZXMvdWktaWNvbnNfNzc3Nzc3XzI1NngyNDAucG5nIil9LnVpLWljb24tYmxhbmsudWktaWNvbi1ibGFuay51aS1pY29uLWJsYW5re2JhY2tncm91bmQtaW1hZ2U6bm9uZX0udWktaWNvbi1jYXJldC0xLW57YmFja2dyb3VuZC1wb3NpdGlvbjowIDB9LnVpLWljb24tY2FyZXQtMS1uZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IDB9LnVpLWljb24tY2FyZXQtMS1le2JhY2tncm91bmQtcG9zaXRpb246LTMycHggMH0udWktaWNvbi1jYXJldC0xLXNle2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggMH0udWktaWNvbi1jYXJldC0xLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotNjVweCAwfS51aS1pY29uLWNhcmV0LTEtc3d7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAwfS51aS1pY29uLWNhcmV0LTEtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IDB9LnVpLWljb24tY2FyZXQtMS1ud3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAwfS51aS1pY29uLWNhcmV0LTItbi1ze2JhY2tncm91bmQtcG9zaXRpb246LTEyOHB4IDB9LnVpLWljb24tY2FyZXQtMi1lLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggMH0udWktaWNvbi10cmlhbmdsZS0xLW57YmFja2dyb3VuZC1wb3NpdGlvbjowIC0xNnB4fS51aS1pY29uLXRyaWFuZ2xlLTEtbmV7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtMTZweH0udWktaWNvbi10cmlhbmdsZS0xLWV7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtMTZweH0udWktaWNvbi10cmlhbmdsZS0xLXNle2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTE2cHh9LnVpLWljb24tdHJpYW5nbGUtMS1ze2JhY2tncm91bmQtcG9zaXRpb246LTY1cHggLTE2cHh9LnVpLWljb24tdHJpYW5nbGUtMS1zd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC0xNnB4fS51aS1pY29uLXRyaWFuZ2xlLTEtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC0xNnB4fS51aS1pY29uLXRyaWFuZ2xlLTEtbnd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggLTE2cHh9LnVpLWljb24tdHJpYW5nbGUtMi1uLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMTI4cHggLTE2cHh9LnVpLWljb24tdHJpYW5nbGUtMi1lLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTE2cHh9LnVpLWljb24tYXJyb3ctMS1ue2JhY2tncm91bmQtcG9zaXRpb246MCAtMzJweH0udWktaWNvbi1hcnJvdy0xLW5le2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTMycHh9LnVpLWljb24tYXJyb3ctMS1le2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTMycHh9LnVpLWljb24tYXJyb3ctMS1zZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC0zMnB4fS51aS1pY29uLWFycm93LTEtc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NXB4IC0zMnB4fS51aS1pY29uLWFycm93LTEtc3d7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtMzJweH0udWktaWNvbi1hcnJvdy0xLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtMzJweH0udWktaWNvbi1hcnJvdy0xLW53e2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IC0zMnB4fS51aS1pY29uLWFycm93LTItbi1ze2JhY2tncm91bmQtcG9zaXRpb246LTEyOHB4IC0zMnB4fS51aS1pY29uLWFycm93LTItbmUtc3d7YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTMycHh9LnVpLWljb24tYXJyb3ctMi1lLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTYwcHggLTMycHh9LnVpLWljb24tYXJyb3ctMi1zZS1ud3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNzZweCAtMzJweH0udWktaWNvbi1hcnJvd3N0b3AtMS1ue2JhY2tncm91bmQtcG9zaXRpb246LTE5MnB4IC0zMnB4fS51aS1pY29uLWFycm93c3RvcC0xLWV7YmFja2dyb3VuZC1wb3NpdGlvbjotMjA4cHggLTMycHh9LnVpLWljb24tYXJyb3dzdG9wLTEtc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMjRweCAtMzJweH0udWktaWNvbi1hcnJvd3N0b3AtMS13e2JhY2tncm91bmQtcG9zaXRpb246LTI0MHB4IC0zMnB4fS51aS1pY29uLWFycm93dGhpY2stMS1ue2JhY2tncm91bmQtcG9zaXRpb246MXB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2stMS1uZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2stMS1le2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGljay0xLXNle2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGljay0xLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotNjRweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrLTEtc3d7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrLTEtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2stMS1ud3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrLTItbi1ze2JhY2tncm91bmQtcG9zaXRpb246LTEyOHB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2stMi1uZS1zd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrLTItZS13e2JhY2tncm91bmQtcG9zaXRpb246LTE2MHB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2stMi1zZS1ud3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNzZweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrc3RvcC0xLW57YmFja2dyb3VuZC1wb3NpdGlvbjotMTkycHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGlja3N0b3AtMS1le2JhY2tncm91bmQtcG9zaXRpb246LTIwOHB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2tzdG9wLTEtc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMjRweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrc3RvcC0xLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotMjQwcHggLTQ4cHh9LnVpLWljb24tYXJyb3dyZXR1cm50aGljay0xLXd7YmFja2dyb3VuZC1wb3NpdGlvbjowIC02NHB4fS51aS1pY29uLWFycm93cmV0dXJudGhpY2stMS1ue2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTY0cHh9LnVpLWljb24tYXJyb3dyZXR1cm50aGljay0xLWV7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtNjRweH0udWktaWNvbi1hcnJvd3JldHVybnRoaWNrLTEtc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC02NHB4fS51aS1pY29uLWFycm93cmV0dXJuLTEtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC02NHB4fS51aS1pY29uLWFycm93cmV0dXJuLTEtbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC02NHB4fS51aS1pY29uLWFycm93cmV0dXJuLTEtZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC02NHB4fS51aS1pY29uLWFycm93cmV0dXJuLTEtc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAtNjRweH0udWktaWNvbi1hcnJvd3JlZnJlc2gtMS13e2JhY2tncm91bmQtcG9zaXRpb246LTEyOHB4IC02NHB4fS51aS1pY29uLWFycm93cmVmcmVzaC0xLW57YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTY0cHh9LnVpLWljb24tYXJyb3dyZWZyZXNoLTEtZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNjBweCAtNjRweH0udWktaWNvbi1hcnJvd3JlZnJlc2gtMS1ze2JhY2tncm91bmQtcG9zaXRpb246LTE3NnB4IC02NHB4fS51aS1pY29uLWFycm93LTR7YmFja2dyb3VuZC1wb3NpdGlvbjowIC04MHB4fS51aS1pY29uLWFycm93LTQtZGlhZ3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC04MHB4fS51aS1pY29uLWV4dGxpbmt7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtODBweH0udWktaWNvbi1uZXd3aW57YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtODBweH0udWktaWNvbi1yZWZyZXNoe2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTgwcHh9LnVpLWljb24tc2h1ZmZsZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC04MHB4fS51aS1pY29uLXRyYW5zZmVyLWUtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC04MHB4fS51aS1pY29uLXRyYW5zZmVydGhpY2stZS13e2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IC04MHB4fS51aS1pY29uLWZvbGRlci1jb2xsYXBzZWR7YmFja2dyb3VuZC1wb3NpdGlvbjowIC05NnB4fS51aS1pY29uLWZvbGRlci1vcGVue2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTk2cHh9LnVpLWljb24tZG9jdW1lbnR7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtOTZweH0udWktaWNvbi1kb2N1bWVudC1ie2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTk2cHh9LnVpLWljb24tbm90ZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC05NnB4fS51aS1pY29uLW1haWwtY2xvc2Vke2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTk2cHh9LnVpLWljb24tbWFpbC1vcGVue2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTk2cHh9LnVpLWljb24tc3VpdGNhc2V7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggLTk2cHh9LnVpLWljb24tY29tbWVudHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjhweCAtOTZweH0udWktaWNvbi1wZXJzb257YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTk2cHh9LnVpLWljb24tcHJpbnR7YmFja2dyb3VuZC1wb3NpdGlvbjotMTYwcHggLTk2cHh9LnVpLWljb24tdHJhc2h7YmFja2dyb3VuZC1wb3NpdGlvbjotMTc2cHggLTk2cHh9LnVpLWljb24tbG9ja2Vke2JhY2tncm91bmQtcG9zaXRpb246LTE5MnB4IC05NnB4fS51aS1pY29uLXVubG9ja2Vke2JhY2tncm91bmQtcG9zaXRpb246LTIwOHB4IC05NnB4fS51aS1pY29uLWJvb2ttYXJre2JhY2tncm91bmQtcG9zaXRpb246LTIyNHB4IC05NnB4fS51aS1pY29uLXRhZ3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yNDBweCAtOTZweH0udWktaWNvbi1ob21le2JhY2tncm91bmQtcG9zaXRpb246MCAtMTEycHh9LnVpLWljb24tZmxhZ3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC0xMTJweH0udWktaWNvbi1jYWxlbmRhcntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC0xMTJweH0udWktaWNvbi1jYXJ0e2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTExMnB4fS51aS1pY29uLXBlbmNpbHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC0xMTJweH0udWktaWNvbi1jbG9ja3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC0xMTJweH0udWktaWNvbi1kaXNre2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTExMnB4fS51aS1pY29uLWNhbGN1bGF0b3J7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggLTExMnB4fS51aS1pY29uLXpvb21pbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjhweCAtMTEycHh9LnVpLWljb24tem9vbW91dHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAtMTEycHh9LnVpLWljb24tc2VhcmNoe2JhY2tncm91bmQtcG9zaXRpb246LTE2MHB4IC0xMTJweH0udWktaWNvbi13cmVuY2h7YmFja2dyb3VuZC1wb3NpdGlvbjotMTc2cHggLTExMnB4fS51aS1pY29uLWdlYXJ7YmFja2dyb3VuZC1wb3NpdGlvbjotMTkycHggLTExMnB4fS51aS1pY29uLWhlYXJ0e2JhY2tncm91bmQtcG9zaXRpb246LTIwOHB4IC0xMTJweH0udWktaWNvbi1zdGFye2JhY2tncm91bmQtcG9zaXRpb246LTIyNHB4IC0xMTJweH0udWktaWNvbi1saW5re2JhY2tncm91bmQtcG9zaXRpb246LTI0MHB4IC0xMTJweH0udWktaWNvbi1jYW5jZWx7YmFja2dyb3VuZC1wb3NpdGlvbjowIC0xMjhweH0udWktaWNvbi1wbHVze2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTEyOHB4fS51aS1pY29uLXBsdXN0aGlja3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC0xMjhweH0udWktaWNvbi1taW51c3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC0xMjhweH0udWktaWNvbi1taW51c3RoaWNre2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTEyOHB4fS51aS1pY29uLWNsb3Nle2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTEyOHB4fS51aS1pY29uLWNsb3NldGhpY2t7YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtMTI4cHh9LnVpLWljb24ta2V5e2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IC0xMjhweH0udWktaWNvbi1saWdodGJ1bGJ7YmFja2dyb3VuZC1wb3NpdGlvbjotMTI4cHggLTEyOHB4fS51aS1pY29uLXNjaXNzb3Jze2JhY2tncm91bmQtcG9zaXRpb246LTE0NHB4IC0xMjhweH0udWktaWNvbi1jbGlwYm9hcmR7YmFja2dyb3VuZC1wb3NpdGlvbjotMTYwcHggLTEyOHB4fS51aS1pY29uLWNvcHl7YmFja2dyb3VuZC1wb3NpdGlvbjotMTc2cHggLTEyOHB4fS51aS1pY29uLWNvbnRhY3R7YmFja2dyb3VuZC1wb3NpdGlvbjotMTkycHggLTEyOHB4fS51aS1pY29uLWltYWdle2JhY2tncm91bmQtcG9zaXRpb246LTIwOHB4IC0xMjhweH0udWktaWNvbi12aWRlb3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMjRweCAtMTI4cHh9LnVpLWljb24tc2NyaXB0e2JhY2tncm91bmQtcG9zaXRpb246LTI0MHB4IC0xMjhweH0udWktaWNvbi1hbGVydHtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTE0NHB4fS51aS1pY29uLWluZm97YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtMTQ0cHh9LnVpLWljb24tbm90aWNle2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTE0NHB4fS51aS1pY29uLWhlbHB7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtMTQ0cHh9LnVpLWljb24tY2hlY2t7YmFja2dyb3VuZC1wb3NpdGlvbjotNjRweCAtMTQ0cHh9LnVpLWljb24tYnVsbGV0e2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTE0NHB4fS51aS1pY29uLXJhZGlvLW9ue2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTE0NHB4fS51aS1pY29uLXJhZGlvLW9mZntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAtMTQ0cHh9LnVpLWljb24tcGluLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTI4cHggLTE0NHB4fS51aS1pY29uLXBpbi1ze2JhY2tncm91bmQtcG9zaXRpb246LTE0NHB4IC0xNDRweH0udWktaWNvbi1wbGF5e2JhY2tncm91bmQtcG9zaXRpb246MCAtMTYwcHh9LnVpLWljb24tcGF1c2V7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtMTYwcHh9LnVpLWljb24tc2Vlay1uZXh0e2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTE2MHB4fS51aS1pY29uLXNlZWstcHJldntiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC0xNjBweH0udWktaWNvbi1zZWVrLWVuZHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC0xNjBweH0udWktaWNvbi1zZWVrLXN0YXJ0e2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTE2MHB4fS51aS1pY29uLXNlZWstZmlyc3R7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtMTYwcHh9LnVpLWljb24tc3RvcHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC0xNjBweH0udWktaWNvbi1lamVjdHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAtMTYwcHh9LnVpLWljb24tdm9sdW1lLW9mZntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjhweCAtMTYwcHh9LnVpLWljb24tdm9sdW1lLW9ue2JhY2tncm91bmQtcG9zaXRpb246LTE0NHB4IC0xNjBweH0udWktaWNvbi1wb3dlcntiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTE3NnB4fS51aS1pY29uLXNpZ25hbC1kaWFne2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTE3NnB4fS51aS1pY29uLXNpZ25hbHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC0xNzZweH0udWktaWNvbi1iYXR0ZXJ5LTB7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtMTc2cHh9LnVpLWljb24tYmF0dGVyeS0xe2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTE3NnB4fS51aS1pY29uLWJhdHRlcnktMntiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC0xNzZweH0udWktaWNvbi1iYXR0ZXJ5LTN7YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtMTc2cHh9LnVpLWljb24tY2lyY2xlLXBsdXN7YmFja2dyb3VuZC1wb3NpdGlvbjowIC0xOTJweH0udWktaWNvbi1jaXJjbGUtbWludXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtMTkycHh9LnVpLWljb24tY2lyY2xlLWNsb3Nle2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS10cmlhbmdsZS1le2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS10cmlhbmdsZS1ze2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS10cmlhbmdsZS13e2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS10cmlhbmdsZS1ue2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS1hcnJvdy1le2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtYXJyb3ctc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjhweCAtMTkycHh9LnVpLWljb24tY2lyY2xlLWFycm93LXd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS1hcnJvdy1ue2JhY2tncm91bmQtcG9zaXRpb246LTE2MHB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtem9vbWlue2JhY2tncm91bmQtcG9zaXRpb246LTE3NnB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtem9vbW91dHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xOTJweCAtMTkycHh9LnVpLWljb24tY2lyY2xlLWNoZWNre2JhY2tncm91bmQtcG9zaXRpb246LTIwOHB4IC0xOTJweH0udWktaWNvbi1jaXJjbGVzbWFsbC1wbHVze2JhY2tncm91bmQtcG9zaXRpb246MCAtMjA4cHh9LnVpLWljb24tY2lyY2xlc21hbGwtbWludXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtMjA4cHh9LnVpLWljb24tY2lyY2xlc21hbGwtY2xvc2V7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtMjA4cHh9LnVpLWljb24tc3F1YXJlc21hbGwtcGx1c3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC0yMDhweH0udWktaWNvbi1zcXVhcmVzbWFsbC1taW51c3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC0yMDhweH0udWktaWNvbi1zcXVhcmVzbWFsbC1jbG9zZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC0yMDhweH0udWktaWNvbi1ncmlwLWRvdHRlZC12ZXJ0aWNhbHtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTIyNHB4fS51aS1pY29uLWdyaXAtZG90dGVkLWhvcml6b250YWx7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtMjI0cHh9LnVpLWljb24tZ3JpcC1zb2xpZC12ZXJ0aWNhbHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC0yMjRweH0udWktaWNvbi1ncmlwLXNvbGlkLWhvcml6b250YWx7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtMjI0cHh9LnVpLWljb24tZ3JpcHNtYWxsLWRpYWdvbmFsLXNle2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTIyNHB4fS51aS1pY29uLWdyaXAtZGlhZ29uYWwtc2V7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtMjI0cHh9LnVpLWNvcm5lci1hbGwsLnVpLWNvcm5lci10b3AsLnVpLWNvcm5lci1sZWZ0LC51aS1jb3JuZXItdGx7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czozcHh9LnVpLWNvcm5lci1hbGwsLnVpLWNvcm5lci10b3AsLnVpLWNvcm5lci1yaWdodCwudWktY29ybmVyLXRye2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjNweH0udWktY29ybmVyLWFsbCwudWktY29ybmVyLWJvdHRvbSwudWktY29ybmVyLWxlZnQsLnVpLWNvcm5lci1ibHtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjNweH0udWktY29ybmVyLWFsbCwudWktY29ybmVyLWJvdHRvbSwudWktY29ybmVyLXJpZ2h0LC51aS1jb3JuZXItYnJ7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6M3B4fS51aS13aWRnZXQtb3ZlcmxheXtiYWNrZ3JvdW5kOiNhYWE7b3BhY2l0eTouMzstbXMtZmlsdGVyOkFscGhhKE9wYWNpdHk9MzApfS51aS13aWRnZXQtc2hhZG93ey13ZWJraXQtYm94LXNoYWRvdzowIDAgNXB4ICM2NjY7Ym94LXNoYWRvdzowIDAgNXB4ICM2NjZ9Ci8qKiAvY3NzL3N0eWxlLmNzcyAqKi8KaHRtbCwgYm9keSwgYXBwbGV0LCBvYmplY3QsIGlmcmFtZSwgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgYmxvY2txdW90ZSwgcHJlLCBhYmJyLCBhY3JvbnltLCBhZGRyZXNzLCBiaWcsIGNpdGUsIGNvZGUsIGRlbCwgZGZuLCBlbSwgZm9udCwgaW1nLCBpbnMsIGtiZCwgcSwgcywgc2FtcCwgc21hbGwsIHN0cmlrZSwgc3Ryb25nLCBzdWIsIHN1cCwgdHQsIHZhciwgYiwgdSwgaSwgY2VudGVyLCBkbCwgZHQsIGRkLCBvbCwgdWwsIGxpLCBmaWVsZHNldCwgZm9ybSwgbGFiZWwsIGxlZ2VuZCwgdGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLCB0aCwgdGQgeyBtYXJnaW46MDsgcGFkZGluZzowOyB9IGh0bWwgeyAtbXMtdGV4dC1zaXplLWFkanVzdDoxMDAlOyAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6MTAwJTsgfSBib2R5IHsgcGFkZGluZzowOyBtYXJnaW46MCAwIDAgMDsgYmFja2dyb3VuZDojRkZGRkZGOyBjb2xvcjojMzMzMzMzOyBmb250LWZhbWlseTp2YXIoLS1mb250LXRleHQtbW9iKTsgZm9udC13ZWlnaHQ6dmFyKC0tZm9udC10ZXh0LXdlaWdodCk7IGZvbnQtc2l6ZTowLjkzOHJlbSA7IH0gaW5wdXQsIHRleHRhcmVhLCBzZWxlY3QsIGJ1dHRvbiB7IGZvbnQtZmFtaWx5OnZhcigtLWZvbnQtdGV4dC1tb2IpOyBmb250LXdlaWdodDp2YXIoLS1mb250LXRleHQtd2VpZ2h0KTsgfSAuZnVsbFdpZHRoQnV0dG9uIGEsIC50b3BuYXYgdHIgdGQgYSwgYSNtb2JpbGVQcm9tb3Rpb25CdG4gc3BhbnsgZm9udC1mYW1pbHk6dmFyKC0tZm9udC1idXR0b25zLW1vYik7IGZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtYnV0dG9ucy13ZWlnaHQpOyB9IC5kZWFsZXItY29sb3IgeyBjb2xvcjojMWIxYjFiOyB9IC5oMmZvcm17IGZvbnQtd2VpZ2h0OmJvbGQ7IHRleHQtdHJhbnNmb3JtOnZhcigtLXR4dC11cHBlcik7IGJhY2tncm91bmQ6Izk5OTsgY29sb3I6d2hpdGU7IHBhZGRpbmc6NXB4IDEwcHg7IGZvbnQtc2l6ZTowLjkzOHJlbSA7IG1hcmdpbi10b3A6MTVweDsgfSAuLXNlbGVjdCB7IHBhZGRpbmc6MDsgbWFyZ2luOjA7IGJvcmRlcjoxcHggc29saWQgI2NjYzsgYm9yZGVyLXJhZGl1czozcHg7IG92ZXJmbG93OmhpZGRlbjsgYmFja2dyb3VuZC1jb2xvcjojZmZmOyBiYWNrZ3JvdW5kOiNmZmY7IHBvc2l0aW9uOnJlbGF0aXZlOyB9IC51c2VkX2RldGFpbHNfb3B0aW9uc190aXRsZSwgLm5ld19kZXRhaWxzX29wdGlvbnNfdGl0bGV7IGJhY2tncm91bmQtY29sb3I6I2NjYzsgY29sb3I6IzAwMDsgcGFkZGluZzoxMHB4OyBmb250LXNpemU6MS4xMjVyZW0gOyBtYXJnaW4tbGVmdDotMTBweDsgbWFyZ2luLXJpZ2h0Oi0xMHB4OyB9IC4tc2VsZWN0OmFmdGVyIHsgdG9wOjUwJTsgcmlnaHQ6NXB4OyBib3JkZXI6c29saWQgdHJhbnNwYXJlbnQ7IGNvbnRlbnQ6IiAiOyBoZWlnaHQ6MDsgd2lkdGg6MDsgcG9zaXRpb246YWJzb2x1dGU7IHBvaW50ZXItZXZlbnRzOm5vbmU7IGJvcmRlci1jb2xvcjpyZ2JhKDAsIDAsIDAsIDApOyBib3JkZXItdG9wLWNvbG9yOiMwMDAwMDA7IGJvcmRlci13aWR0aDo1cHg7IG1hcmdpbi10b3A6LTJweDsgei1pbmRleDoxMDA7IH0gLi1zZWxlY3Qgc2VsZWN0IHsgcGFkZGluZzo1cHggOHB4OyB3aWR0aDoxMDAlOyBib3JkZXI6bm9uZTsgYm94LXNoYWRvdzpub25lOyBiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50OyBiYWNrZ3JvdW5kLWltYWdlOm5vbmU7IC13ZWJraXQtYXBwZWFyYW5jZTpub25lOyAtbW96LWFwcGVhcmFuY2U6bm9uZTsgYXBwZWFyYW5jZTpub25lOyB9IC4tc2VsZWN0IHNlbGVjdDpmb2N1cyB7IG91dGxpbmU6bm9uZTsgfSBhLCBhOmhvdmVyIHsgb3V0bGluZTpub25lOyB9IC5uYXYgPiB1bCA+IGxpeyBtYXJnaW4tYm90dG9tOjNweDsgfSBoMXsgZm9udC1zaXplOjEuNGVtOyBwYWRkaW5nLXRvcDoxMHB4OyBmb250LWZhbWlseTp2YXIoLS1mb250LWgxLW1vYik7IGZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtaDEtd2VpZ2h0KTsgfSBzcGFuLmgyLWFsdCxzcGFuLmgzLWFsdHsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgfSBoMixoMyxoNCxoNSxoNixzcGFuLmgyLWFsdCxzcGFuLmgzLWFsdHsgZm9udC1mYW1pbHk6dmFyKC0tZm9udC1oMi1tb2IpOyBmb250LXdlaWdodDp2YXIoLS1mb250LWgyLXdlaWdodCk7IH0gaW5wdXRbdHlwZT1idXR0b25dLCAuZGV0YWlscyBhLCAuaC1idXR0b25zIHVsIGxpIGEsIC5wcmljZSwgLmRldGFpbHMsIC5kZXRhaWxzIGEsIC5idXR0b24tcHJvbW8zLCAuYnRuLWRlZmF1bHQsIC5idG4tc20sIC5idG4tbGcgeyBmb250LWZhbWlseTp2YXIoLS1mb250LWJ1dHRvbnMtbW9iKTsgZm9udC13ZWlnaHQ6dmFyKC0tZm9udC1idXR0b25zLXdlaWdodCk7IH0gLmNsZWFyeyBjbGVhcjpib3RoO30gYSwgYTpob3ZlciB7dGV4dC1kZWNvcmF0aW9uOm5vbmU7fSAuY29udGFpbmVyIHsgd2lkdGg6MTAwJTsgbWFyZ2luOjAgMCAwIDA7IH0gLnRvcCB7IGJhY2tncm91bmQ6IzIyMjIyMjsgYmFja2dyb3VuZDojZmZmZmZmOyBoZWlnaHQ6NTBweDsgfSAudG9wbmF2IC5idXJnZXItYnRuLWNvbnRhaW5lci5tZW51LXRhbGx7IHdpZHRoOjQwcHggIWltcG9ydGFudDsgfSAudG9wbmF2IGEgeyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC1zaXplOjFlbTsgZm9udC13ZWlnaHQ6Ym9sZDsgY29sb3I6I2ZmZmZmZjsgY29sb3I6IzFiMWIxYjsgfSAuYnVyZ2VyLW1lbnV7IGhlaWdodDoyMDAlICFpbXBvcnRhbnQ7IGJhY2tncm91bmQtY29sb3I6cmdiYSgwLCAwLCAwLCAwLjUpICFpbXBvcnRhbnQ7IH0gLnJpZ2h0Ym9yZGVyIHsgYm9yZGVyLXJpZ2h0OjFweCBzb2xpZDsgYm9yZGVyLWNvbG9yOiNmZmZmZmY7IGJvcmRlci1jb2xvcjojMWIxYjFiOyB9IC5sZWZ0Ym9yZGVyIHsgYm9yZGVyLWxlZnQ6MXB4IHNvbGlkOyBib3JkZXItY29sb3I6I2ZmZmZmZjsgYm9yZGVyLWNvbG9yOiMxYjFiMWI7IH0gLnRlbGVwaG9uZSwgLm1hcCB7ZGlzcGxheTpibG9jazsgaGVpZ2h0OjY0cHg7IHBhZGRpbmc6MjVweCAwIDAgMDt9IC50ZWxlcGhvbmUge2JhY2tncm91bmQ6dXJsKC9pbWFnZXMvaWNvbi1waG9uZS5wbmcpIG5vLXJlcGVhdCAyMHB4IDE1cHg7IH0gLm1hcCB7YmFja2dyb3VuZDp1cmwoL2ltYWdlcy9pY29uLW1hcC5wbmcpIG5vLXJlcGVhdCA1MHB4IDEwcHg7fSAuaGVhZGVyYmFyIHsgYmFja2dyb3VuZDojMzMzOyBjb2xvcjp3aGl0ZTsgYm94LXNoYWRvdzpyZ2JhKDAsIDAsIDAsIDAuNSkgMCAwIDVweCAzcHg7IGJhY2tncm91bmQ6I2ZmZmZmZjsgY29sb3I6IzFiMWIxYiB9IC5oZWFkZXJiYXIudGFsbCB7IHBvc2l0aW9uIDphYnNvbHV0ZTsgdG9wIDowOyB3aWR0aCA6MTAwJTsgfSAuaGVhZGVyYmFyIC50b3BuYXYgeyB3aWR0aCA6MTAwJTsgaGVpZ2h0IDoxMDAlOyBkaXNwbGF5IDpmbGV4OyBqdXN0aWZ5LWNvbnRlbnQgOnNwYWNlLWJldHdlZW47IGFsaWduLWl0ZW1zIDpjZW50ZXI7IH0gLmhlYWRlcmJhci50YWxsIC50b3BuYXYgeyBqdXN0aWZ5LWNvbnRlbnQ6c3RyZXRjaDsgfSAuaGVhZGVyYmFyIC50b3BuYXYgPiBkaXYgeyBoZWlnaHQgOjUwcHg7IGRpc3BsYXkgOmZsZXg7IGFsaWduLWl0ZW1zIDpjZW50ZXI7IH0gLmhlYWRlcmJhciAudG9wbmF2ID4gLmxvZ28tYWN0aW9uIHsgZmxleC1kaXJlY3Rpb24gOmNvbHVtbjsganVzdGlmeS1jb250ZW50IDpzcGFjZS1ldmVubHk7IH0gLmhlYWRlcmJhci50YWxsIC50b3BuYXYgPiBkaXY6bm90KC5idXJnZXItYnRuLWNvbnRhaW5lcikgeyBmbGV4LWdyb3c6MTsgfSAuaGVhZGVyYmFyLnRhbGwgLnRvcG5hdiA+IGRpdjpub3QoOmxhc3Qtb2YtdHlwZSkgeyBib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNkZGQ7IH0gLmhlYWRlcmJhciAubWVudS5idXJnZXItYnRuLWNvbnRhaW5lciB7IG1heC13aWR0aCA6NDBweDsgaGVpZ2h0IDo1MHB4OyB9IC5oZWFkZXJiYXIgLmJ1cmdlci1tZW51LWJ1dHRvbiwgLmhlYWRlcmJhci50YWxsIC50b3BuYXYgPiBkaXYgeyBkaXNwbGF5IDpmbGV4OyBqdXN0aWZ5LWNvbnRlbnQgOmNlbnRlcjsgYWxpZ24taXRlbXMgOmNlbnRlcjsgdGV4dC1jZW50ZXIgOmNlbnRlcjsgfSAuaGVhZGVyYmFyIC5idXJnZXItbWVudS1idXR0b24gaSB7IGZvbnQtc2l6ZToxLjI1cmVtOyBjb2xvcjojMWIxYjFiOyB9IC5oZWFkZXJiYXIgLmxvZ28tYWN0aW9uIGltZyB7IHBhZGRpbmcgOjA7IGhlaWdodCA6MTAwJTsgbWF4LWhlaWdodCA6NTBweDsgfSAuaGVhZGVyYmFyIC5oZWFkZXItZGVhbGVyLW5hbWUgeyBkaXNwbGF5IDpibG9jazsgdGV4dC1hbGlnbiA6Y2VudGVyOyBsaW5lLWhlaWdodCA6MS4zZW07IGZvbnQtc2l6ZSA6MC44cmVtOyBjb2xvciA6Izg4ODg4ODsgZm9udC1mYW1pbHkgOnZhcigtLWZvbnQtaDEtbW9iKTsgZm9udC13ZWlnaHQgOnZhcigtLWZvbnQtd2VpZ2h0LWgxLW1vYik7IH0gLmhlYWRlcmJhciAudG9wbmF2ID4gZGl2Om5vdCgubG9nby1hY3Rpb24pID4gYSB7IHRleHQtYWxpZ24gOmNlbnRlcjsgd2lkdGggOjEwMCU7IHBhZGRpbmcgOjAuNzVyZW07IH0gZGl2I3Bob25lTnVtYmVyRGl2IGxpIHsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbi1ib3R0b206MTVweDsgfSAjbmV3c0NvbnRhaW5lciBheyBjb2xvcjojMzMzOyB9ICNuZXdzQ29udGFpbmVyIGEudG9wX2xpbmsgeyBjb2xvcjojZmZmOyB9IC5uZXdzX2FydGljbGUgaDJ7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgZm9udC1zaXplOjEuMTI1cmVtIDsgfSAubmV3c19hcnRpY2xlIGgxLGgyLGgzLGg0LGg1LGg2eyBmb250LXdlaWdodDpub3JtYWw7IH0gLmFkZHJlc3MgeyBsZXR0ZXItc3BhY2luZzotMXB4OyBjb2xvcjojMzMzOyBmb250LXNpemU6MC44MTNyZW0gOyBmb250LXdlaWdodDpub3JtYWw7IGxpbmUtaGVpZ2h0Om5vcm1hbDsgd2lkdGg6NTAlOyBkaXNwbGF5OmlubGluZS1ibG9jazsgfSAuYWRkcmVzcywgLmxvZ28geyB2ZXJ0aWNhbC1hbGlnbjp0b3A7IH0gLmNvbnRlbnRzIHsgYmFja2dyb3VuZDojZmJmYmZiOyBwYWRkaW5nOjEwcHg7IH0gLmNvbnRlbnRzIGgyIHtmb250LXNpemU6MS41cmVtOyBsaW5lLWhlaWdodDoyLjI1cmVtO30gLmNvbnRlbnRzIHAge2ZvbnQtc2l6ZToxZW07IGxpbmUtaGVpZ2h0OjEuMWVtOyB0ZXh0LWFsaWduOmp1c3RpZnk7IGxldHRlci1zcGFjaW5nOjA7fSAubW9iaWxlX2J1c2luZXNzRGVzYyB7IGJhY2tncm91bmQ6I2ZmZmZmZiFpbXBvcnRhbnQ7IGNvbG9yOiMwMDAwMDAhaW1wb3J0YW50OyB9IC5tZW51IHsgd2lkdGg6MTAwJTsgY2xlYXI6Ym90aDsgfSAjbmV3c0NvbnRhaW5lciAubmV3c19hcnRpY2xlIGltZ1tzcmMqPScvY2tmaW5kZXInXXsgaGVpZ2h0OmF1dG8gIWltcG9ydGFudDsgbWF4LXdpZHRoOjEwMCUgIWltcG9ydGFudDsgfSAjbmV3c0NvbnRhaW5lciAubmV3c19hcnRpY2xlIGltZ3sgbWF4LXdpZHRoOjEwMCU7IGhlaWdodDphdXRvOyB9ICNuZXdzQ29udGFpbmVyIC5jbGVhcmZpeCB7IGhlaWdodDowcHg7IH0gLm1lbnUgdWwgbGkgYSBzcGFuIHtwYWRkaW5nLWxlZnQ6N3B4O30gLm1lbnUgdWwgbGkgYSBzcGFuLnRleHR2YWwge2xpbmUtaGVpZ2h0OjMycHg7ICMjTU9CSUxFX01FTlVfQ1NTIyN9IC5tZW51IHVsIGxpIGEgc3BhbiBpbWcge3BhZGRpbmctbGVmdDoxMHB4OyB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7fSAuYm90dG9tIC5saW5rcyBhIHsgY29sb3I6IzcwNzA3MDsgfSAuRU5HTElTSCAuYm90dG9tIC5saW5rcyB1bCBsaSBheyB0ZXh0LXRyYW5zZm9ybTpjYXBpdGFsaXplOyB9IC5ib3R0b20gLmxpbmtzIGRpdiB7IG1hcmdpbjoxNXB4IDA7IGRpc3BsYXk6YmxvY2s7IH0gLmJvdHRvbSB7IHBhZGRpbmc6MTBweDsgZGlzcGxheTpibG9jazsgLXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDBweCAxMHB4IDExcHggLTExcHggcmdiYSg1MCwgNTAsIDUwLCAwLjc1KTsgLW1vei1ib3gtc2hhZG93OiBpbnNldCAwcHggMTBweCAxMXB4IC0xMXB4IHJnYmEoNTAsIDUwLCA1MCwgMC43NSk7IGJveC1zaGFkb3c6IGluc2V0IDBweCAxMHB4IDExcHggLTExcHggcmdiYSg1MCwgNTAsIDUwLCAwLjc1KTsgYmFja2dyb3VuZC1jb2xvcjojZmFmYWZhOyBjb2xvcjojNzA3MDcwOyAtLXR4dC1jb2xvcjojNzA3MDcwOyB9IC5ib3R0b20gLmxpbmtzIHsgZm9udC1zaXplOjAuOTM4cmVtIDsgbGluZS1oZWlnaHQ6MjFweDsgY2xlYXI6Ym90aDsgcGFkZGluZy10b3A6NXB4OyB9IC5ib3R0b20gLmZvb3Rlcl9hZGRyZXNzIHNwYW57IGNvbG9yOmluaGVyaXQgIWltcG9ydGFudDsgfSAuYm90dG9tIC5saW5rcyBkaXYuZm9vdGVyX2xvZ28geyBtYXJnaW46MS4yNXJlbSAwIDEuNzVyZW0gMDsgfSAuYm90dG9tIC5saW5rcyBkaXYuZm9vdGVyX2xvZ28gaW1nIHsgbWF4LXdpZHRoOjE4MHB4OyBtYXgtaGVpZ2h0OjEwMHB4OyB9IGEuYnV0dG9uLXByb21vIHsgY29sb3I6I2ZmZmZmZiFpbXBvcnRhbnQ7IH0gLmJyZWFkY3J1bWJzIHsgZm9udC1zaXplIDowLjlyZW07IGNvbG9yIDojMjIyMjIyOyBmb250LXdlaWdodCA6Ym9sZDsgcGFkZGluZyA6MTVweDsgfSAuYnJlYWRjcnVtYnMgYSB7Y29sb3I6IzY2NjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0gLmJvdHRvbSAubGlua3MgZGl2LmZvb3Rlci1jYXJsaXN0aW5nIHsgcGFkZGluZy1ib3R0b206NXB4OyB9IC5jRm9vdGVyQ2FyTGlua3N7IHBhZGRpbmc6MCAwIDVweCAwOyB9IC5zZWFyY2hib3ggeyBiYWNrZ3JvdW5kOiNFNUU1RTU7IH0gLnNlYXJjaGJveCBoMyAudWktYWNjb3JkaW9uLWhlYWRlci1pY29uIHtwYWRkaW5nOjBweCA0cHggNnB4IDBweDsgY3Vyc29yOnBvaW50ZXI7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvZG93bmFycm93LnBuZykgbm8tcmVwZWF0IDk4JSBjZW50ZXI7IHRvcDoxOHB4IWltcG9ydGFudDt9IC5mb3JtYXJlYSB7IC13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIDFweCAzcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpOyAtbW96LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggM3B4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTsgYm94LXNoYWRvdzppbnNldCAwIDFweCAzcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpOyB9IC5mb3JtYXJlYSB0YWJsZSB0ciB0ZCB7IHBhZGRpbmc6NXB4OyB9IGlucHV0LCBpbnB1dFt0eXBlPXRleHRdLCBpbnB1dFt0eXBlPXRlbF0sIGlucHV0W3R5cGU9ZW1haWxdLCBzZWxlY3QsIHRleHRhcmVheyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NHB4OyAtbW96LWJvcmRlci1yYWRpdXM6NHB4OyBib3JkZXItcmFkaXVzOjRweDsgYm9yZGVyOjFweCBzb2xpZCAjY2NjOyBwYWRkaW5nOjVweDsgYm94LXNpemluZzpib3JkZXItYm94OyB9IC5jaGVja2JveCB7IHBvc2l0aW9uOnJlbGF0aXZlOyBkaXNwbGF5OmJsb2NrOyB9IC5jaGVja2JveCBpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsgd2lkdGg6YXV0bzsgb3BhY2l0eTowLjAwMDAwMDAxOyBwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDowOyBtYXJnaW4tbGVmdDotMnB4OyB9IC5jaGVja2JveF9oZWxwZXIgeyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOi00cHg7IGxlZnQ6LTRweDsgY3Vyc29yOnBvaW50ZXI7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZToxcmVtIDsgdXNlci1zZWxlY3Q6bm9uZTsgY29sb3I6I2U3ZTdlNzsgfSAuY2hlY2tib3hfaGVscGVyOmJlZm9yZSB7IGNvbnRlbnQ6Jyc7IHBvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjA7IHRvcDowOyBtYXJnaW46NHB4OyB3aWR0aDoxNXB4OyBoZWlnaHQ6MTVweDsgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gMC4yOHMgZWFzZTsgYm9yZGVyLXJhZGl1czoycHg7IGJvcmRlcjoxcHggc29saWQgI2NjYzsgYmFja2dyb3VuZDp3aGl0ZTsgfSAuY2hlY2tib3hfaGVscGVyOmFmdGVyIHsgY29udGVudDonJzsgZGlzcGxheTpibG9jazsgd2lkdGg6OHB4OyBoZWlnaHQ6NXB4OyBib3JkZXItYm90dG9tOjJweCBzb2xpZCAjMzMzOyBib3JkZXItbGVmdDoycHggc29saWQgIzMzMzsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC00NWRlZykgc2NhbGUoMCk7IC1tb3otdHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpIHNjYWxlKDApOyAtbXMtdHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpIHNjYWxlKDApOyB0cmFuc2Zvcm06cm90YXRlKC00NWRlZykgc2NhbGUoMCk7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6N3B4OyBsZWZ0OjhweDsgfSAuY2hlY2tib3ggaW5wdXRbdHlwZT0iY2hlY2tib3giXWNoZWNrZWQgfiAuY2hlY2tib3hfaGVscGVyOjpiZWZvcmUgeyBjb2xvcjojMzMzOyB9IC5jaGVja2JveCBpbnB1dFt0eXBlPSJjaGVja2JveCJdOmNoZWNrZWQgfiAuY2hlY2tib3hfaGVscGVyOjphZnRlciB7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpIHNjYWxlKDEpOyAtbW96LXRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKSBzY2FsZSgxKTsgLW1zLXRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKSBzY2FsZSgxKTsgdHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpIHNjYWxlKDEpOyB9IC5jaGVja2JveCBsYWJlbCB7IG1pbi1oZWlnaHQ6MjRweDsgcGFkZGluZy1sZWZ0OjI0cHg7IG1hcmdpbi1ib3R0b206MDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBjdXJzb3I6cG9pbnRlcjsgdmVydGljYWwtYWxpZ246c3ViOyB9IC5jaGVja2JveCBpbnB1dFt0eXBlPSJjaGVja2JveCJdOmZvY3VzICsgbGFiZWw6OmJlZm9yZSB7IG91dGxpbmU6cmdiKDU5LCAxNTMsIDI1MikgYXV0byA1cHg7IH0gc2VsZWN0eyBmb250LXNpemU6MC45MzhyZW0gOyB9IC5kcm9wZG93biB7d2lkdGg6OTUlOyBtYXJnaW46YXV0byA1cHg7fSAuYnV0dG9uIHtiYWNrZ3JvdW5kOiMzMzM7IGNvbG9yOiNmZmY7IGZvbnQtc2l6ZToxLjFlbTsgdGV4dC1hbGlnbjpjZW50ZXI7IHdpZHRoOjMwMHB4OyBwYWRkaW5nOjE1cHg7IGN1cnNvcjpwb2ludGVyfSAuaW1hZ2VfYm94IHsgcG9zaXRpb246cmVsYXRpdmU7IG1hcmdpbjo3cHg7IH0gLmltYWdlX2JveCBpbWd7IGJvcmRlcjoxcHggc29saWQgI2VlZTsgfSAjY29udGFpbmVyRmxCIHsgei1pbmRleDo5OTk5OTk5OyB9IC5pbWFnZV9yaWJib24geyBwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDozcHg7IHRvcDotNHB4OyB6LWluZGV4Ojg1MDsgb3ZlcmZsb3c6aGlkZGVuOyB3aWR0aDoxMTJweDsgaGVpZ2h0OjExMnB4OyB0ZXh0LWFsaWduOnJpZ2h0OyB9IC5pbWFnZV9yaWJib24gc3BhbiB7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNmZmZmZmY7IHRleHQtYWxpZ246Y2VudGVyOyBsaW5lLWhlaWdodDoyOHB4OyB0cmFuc2Zvcm06cm90YXRlKC00NWRlZyk7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpOyB3aWR0aDoxNDhweDsgZGlzcGxheTpibG9jazsgYmFja2dyb3VuZDojMWIxYjFiOyBib3gtc2hhZG93OjAgM3B4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDEpOyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjMwcHg7IGxlZnQ6LTMwcHg7IH0gLmltYWdlX3JpYmJvbiBzcGFuOjpiZWZvcmUgeyBjb250ZW50OiIiOyBwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDowcHg7IHRvcDoxMDAlOyB6LWluZGV4Oi0xOyBib3JkZXItbGVmdDozcHggc29saWQgIzFiMWIxYjsgYm9yZGVyLXJpZ2h0OjNweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLWJvdHRvbTozcHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci10b3A6M3B4IHNvbGlkICMxYjFiMWI7IH0gLmltYWdlX3JpYmJvbiBzcGFuOjphZnRlciB7IGNvbnRlbnQ6IiI7IHBvc2l0aW9uOmFic29sdXRlOyByaWdodDowcHg7IHRvcDoxMDAlOyB6LWluZGV4Oi0xOyBib3JkZXItbGVmdDozcHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1yaWdodDozcHggc29saWQgIzFiMWIxYjsgYm9yZGVyLWJvdHRvbTozcHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci10b3A6M3B4IHNvbGlkICMxYjFiMWI7IH0gLnJpYmJvbi1jb250YWluZXIgeyB3aWR0aCA6MjAwcHg7IGhlaWdodCA6MjAwcHg7IG92ZXJmbG93IDpoaWRkZW47IHBvc2l0aW9uIDphYnNvbHV0ZTsgdG9wIDowOyBsZWZ0IDowOyB9IC5yaWJib24tY29udGFpbmVyIC5jb3JuZXItcmliYm9uIHsgei1pbmRleCA6NTU1OyBtYXJnaW4gOjA7IHBhZGRpbmcgOjAuNXJlbSAwICFpbXBvcnRhbnQ7IGJveC1zaGFkb3cgOjAgM3B4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDEpOyBmb250LXNpemUgOjFyZW07IGxpbmUtaGVpZ2h0IDoxMnB4OyB0ZXh0LWFsaWduIDpjZW50ZXI7IHBvc2l0aW9uIDphYnNvbHV0ZTsgdG9wIDowOyBsZWZ0IDowOyB0cmFuc2Zvcm0gOnRyYW5zbGF0ZVgoLTM1JSkgdHJhbnNsYXRlWSgwJSkgcm90YXRlKC00NWRlZyk7IHRyYW5zZm9ybS1vcmlnaW4gOnRvcCByaWdodDsgYmFja2dyb3VuZCA6dmFyKC0tY29ybmVyLXJpYmJvbi1iZy1jb2xvcik7IGNvbG9yIDp2YXIoLS1jb3JuZXItcmliYm9uLXRleHQtY29sb3IpOyB9IC5yaWJib24tY29udGFpbmVyIC5jb3JuZXItcmliYm9uOmJlZm9yZSwgLnJpYmJvbi1jb250YWluZXIgLmNvcm5lci1yaWJib246YWZ0ZXIgeyBjb250ZW50IDoiIjsgcG9zaXRpb24gOmFic29sdXRlOyB0b3AgOjA7IG1hcmdpbiA6MCAtMXB4OyB3aWR0aCA6MTAwJTsgaGVpZ2h0IDoxMDAlOyBiYWNrZ3JvdW5kIDp2YXIoLS1jb3JuZXItcmliYm9uLWJnLWNvbG9yKTsgfSAucmliYm9uLWNvbnRhaW5lciAuY29ybmVyLXJpYmJvbjpiZWZvcmUgeyBsZWZ0OjEwMCU7IH0gLnJpYmJvbi1jb250YWluZXIgLmNvcm5lci1yaWJib246YWZ0ZXIgeyByaWdodDoxMDAlOyB9IC5oZWFkaW5nIHsgbWluLWhlaWdodDozNXB4OyBib3JkZXItYm90dG9tOjFweCBzb2xpZCAjODA4MDgwOyBiYWNrZ3JvdW5kOiNjY2NjY2M7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nOjEwcHggNXB4IDVweCA1cHg7IH0gLmhlYWRpbmcgdGFibGV7IHdpZHRoOjIyNXB4OyBtYXJnaW46MCBhdXRvOyB9ICNzZWFyY2hDb250YWluZXIgLml0ZW0geyBib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDAsMCwwLDAuMSk7IGJvcmRlci10b3A6MXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC40KTsgcGFkZGluZzoxMHB4IGluaGVyaXQ7IG1hcmdpbjowIDAgMCAwOyBkaXNwbGF5OmJsb2NrOyBjbGVhcjpib3RoOyBtaW4taGVpZ2h0OjgwcHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IH0gI3NlYXJjaENvbnRhaW5lciAuaXRlbSBpbWcge2Zsb2F0OmxlZnQ7IHdpZHRoOjkwcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7IC1tb3otYm9yZGVyLXJhZGl1czo0cHg7IGJvcmRlci1yYWRpdXM6NHB4OyBib3JkZXI6M3B4IHNvbGlkICNmZmY7IG1hcmdpbjouM2VtIDEwcHg7IC13ZWJraXQtYm94LXNoYWRvdzowIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjQpOyAtbW96LWJveC1zaGFkb3c6MCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC40KTsgYm94LXNoYWRvdzowIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjQpOyB9ICNzZWFyY2hDb250YWluZXIgLml0ZW0gaDMgeyBtYXJnaW46MCAwIDAgMDsgcGFkZGluZzowIDAgMCAwOyBmb250LXNpemU6MXJlbSA7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgY29sb3I6IzExMTsgbGluZS1oZWlnaHQ6MThweDsgbWFyZ2luLXRvcDo1cHg7IH0gLnByaWNlLCAuZGV0YWlscyB7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo2cHg7IC1tb3otYm9yZGVyLXJhZGl1czo2cHg7IGJvcmRlci1yYWRpdXM6NnB4OyAtd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC40KTsgLW1vei1ib3gtc2hhZG93Omluc2V0IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuNCk7IGJveC1zaGFkb3c6aW5zZXQgMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC40KTsgZm9udC13ZWlnaHQ6Ym9sZDsgcGFkZGluZzo3cHg7IGZsb2F0OmxlZnQ7IGRpc3BsYXk6YmxvY2s7IH0gLnByaWNlX3VzZWRfbGVmdCwucHJpY2VfdXNlZF9yaWdodHsgdGV4dC1hbGlnbjpsZWZ0OyBmb250LXNpemU6MS43NXJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IGJhY2tncm91bmQtY29sb3I6I0YyRjJGMjsgaGVpZ2h0OjYwcHg7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nOjA7IHdpZHRoOjUwJTsgfSAuc3BlY3NfdXNlZF9sZWZ0IHsgcGFkZGluZzo4cHggMTBweDsgY29sb3I6I2FhYWFhYTsgfSAuc3BlY3NfdXNlZF9yb3cyIHsgYmFja2dyb3VuZC1jb2xvcjojRjJGMkYyOyB9IC5zcGVjc191c2VkX2FmdGVyeyBiYWNrZ3JvdW5kLWNvbG9yOiNGMkYyRjI7IHBhZGRpbmctYm90dG9tOjEwcHg7IGJvcmRlci10b3A6MXB4IHNvbGlkICNjY2NjY2M7IH0gLnVzZWRfZGV0YWlsc19idG57IGRpc3BsYXk6YmxvY2s7IHdpZHRoOjI0MHB4OyBib3JkZXItcmFkaXVzOjNweDsgdmVydGljYWwtYWxpZ246bWlkZGxlOyBiYWNrZ3JvdW5kOiMwMDA7IG1hcmdpbjowIGF1dG87IHBhZGRpbmc6MTBweCAwOyB9IC51c2VkX2RldGFpbHNfYnRuIGF7IGNvbG9yOiNGRkY7IH0gLnByaWNlX3VzZWRfbGVmdCBzcGFueyBjb2xvcjojRDNEM0QzOyB9IC51c2VkX3NlYXJjaF9yZWJhdGV7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZToxLjE4OHJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gLnJlYmF0ZV9wcmljZXsgY29sb3I6cmVkOyB9IC51c2VkX3NlYXJjaF9yZWJhdGVfdGR7IHBhZGRpbmc6MTBweCAwOyB0ZXh0LWFsaWduOmNlbnRlcjsgYmFja2dyb3VuZDojZTZlNmU2OyB9IC5wcmljZSB7IGJhY2tncm91bmQtY29sb3I6I2NkY2RjZDsgY29sb3I6IzExMTsgZm9udC1zaXplOjAuNzVyZW0gOyBwYWRkaW5nLXRvcDo4cHg7IHdpZHRoOjM2JTsgcGFkZGluZy1ib3R0b206NXB4OyB9IHByaWNlX3NlYXJjaF91c2VkeyBiYWNrZ3JvdW5kOiNGMkYyRjI7IGhlaWdodDo0MHB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgdmVydGljYWwtYWxpZ246bWlkZGxlOyBmb250LXNpemU6MS41NjNyZW0gOyBmb250LXdlaWdodDpib2xkOyB9IC51c2VkX29sZF9wcmljZXsgZm9udC1zaXplOjEuMTI1cmVtIDsgY29sb3I6I2FhYWFhYTsgbGluZS1oZWlnaHQ6MTBweDsgfSAuZGV0YWlscyB7IGJhY2tncm91bmQ6LXdlYmtpdC1ncmFkaWVudChsaW5lYXIsbGVmdCB0b3AsbGVmdCBib3R0b20sY29sb3Itc3RvcCgwLjA1LCMwMDAwMDApLGNvbG9yLXN0b3AoMSwjMzMzMzMzKSk7IGJhY2tncm91bmQ6LW1vei1saW5lYXItZ3JhZGllbnQodG9wLCMwMDAwMDA1JSwjMzMzMzMzMTAwJSk7IGJhY2tncm91bmQ6LXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCMwMDAwMDA1JSwjMzMzMzMzMTAwJSk7IGJhY2tncm91bmQ6LW8tbGluZWFyLWdyYWRpZW50KHRvcCwjMDAwMDAwNSUsIzMzMzMzMzEwMCUpOyBiYWNrZ3JvdW5kOi1tcy1saW5lYXItZ3JhZGllbnQodG9wLCMwMDAwMDA1JSwjMzMzMzMzMTAwJSk7IGJhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwjMDAwMDAwNSUsIzMzMzMzMzEwMCUpOyBmaWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyMwMDAwMDAnLGVuZENvbG9yc3RyPScjMzMzMzMzJyxHcmFkaWVudFR5cGU9MCk7IGJhY2tncm91bmQtY29sb3I6IzMzMzMzMzsgbWFyZ2luLXJpZ2h0OjEwcHg7IGZvbnQtc2l6ZTowLjkzOHJlbSA7IG1hcmdpbi1sZWZ0OjVweDsgcGFkZGluZzo4cHggMjBweDsgbWFyZ2luLXJpZ2h0OjBweDsgfSAudmlkZW9zX3BpY3R1cmVzX2J1dHRvbnNfY29udGFpbmVyIHsgbWFyZ2luLWJvdHRvbTowcHghaW1wb3J0YW50OyB9IC5pLWNhbWVyYTpiZWZvcmV7IGNvbnRlbnQ6IlxmMDNkIjsgZm9udC1mYW1pbHk6IkZvbnQgQXdlc29tZSA1IFBybyI7IHBhZGRpbmctcmlnaHQ6NXB4OyBmb250LXdlaWdodDo5MDA7IHdpZHRoOjE1cHg7IH0gLmktcGhvdG86YmVmb3JlIHsgY29udGVudDoiXGYwMzAiOyBmb250LWZhbWlseToiRm9udCBBd2Vzb21lIDUgUHJvIjsgcGFkZGluZy1yaWdodDo1cHg7IGZvbnQtd2VpZ2h0OjkwMDsgd2lkdGg6MTVweDsgfSAuZnVsbFdpZHRoQnV0dG9ueyB3aWR0aDo5MCU7IHBhZGRpbmc6dmFyKC0tcyk7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgYm94LXNpemluZzpib3JkZXItYm94OyBtYXJnaW4tbGVmdDo1JTsgbWFyZ2luLXJpZ2h0OjUlOyBib3JkZXItcmFkaXVzOjNweDsgcG9zaXRpb246cmVsYXRpdmU7IH0gLmZ1bGxXaWR0aEJ1dHRvbiBhIHsgZGlzcGxheTppbmxpbmUtYmxvY2s7IH0gLmZiLmZ1bGxXaWR0aEJ1dHRvbnsgcG9zaXRpb246cmVsYXRpdmU7IGJhY2tncm91bmQtY29sb3I6IzNhNTg5ODsgY29sb3I6I2ZmZjsgfSAuZmIuZnVsbFdpZHRoQnV0dG9uIGEgeyBjb2xvcjojZmZmOyBtYXJnaW4tbGVmdDo1MHB4OyB9IC5mYiBzcGFuLmZhLXN0YWNreyBjb2xvcjojM2E1ODk4OyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjA7IH0gLnRleHRfc2xpZGUgYSB7IGhlaWdodDoxNHB4IWltcG9ydGFudDsgfSAjdmRwX3ByaWNlX2Jsb2NrLCN2ZHBfcHJpY2VfYmxvY2tfdXNlZHsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgIzAwMDsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1saWdodCk7IGJvcmRlci1jb2xvcjojYmJiOyB9ICN2ZHBfcHJpY2VfYmxvY2t7IG1pbi1oZWlnaHQ6MzBweDsgfSBkaXYjY29tcGxfdGFibGUgYSB7IGNvbG9yOiMzMzM7IH0gLmNoZXZyb24tcmlnaHQ6YWZ0ZXIgeyBjb250ZW50OiJcZjA1NCI7IGZvbnQtZmFtaWx5OiJGb250IEF3ZXNvbWUgNSBQcm8iOyBmb250LXN0eWxlOm5vcm1hbDsgZm9udC13ZWlnaHQ6OTAwOyB0ZXh0LWRlY29yYXRpb246aW5oZXJpdDsgcG9zaXRpb246YWJzb2x1dGU7IHJpZ2h0OjIlOyB9IGZ1bGxXaWR0aEJ1dHRvbjpiZWZvcmUgeyBmb250LWZhbWlseToiRm9udCBBd2Vzb21lIDUgUHJvIjsgZm9udC1zdHlsZTpub3JtYWw7IGZvbnQtd2VpZ2h0OjkwMDsgdGV4dC1kZWNvcmF0aW9uOmluaGVyaXQ7IHBhZGRpbmctcmlnaHQ6NXB4OyBwb3NpdGlvbjphYnNvbHV0ZTsgcmlnaHQ6MDsgcGFkZGluZy10b3A6MnB4OyB9ICNzb2NpYWxfbWVkaWFfaWNvbnNfZGl2eyBtYXJnaW4tdG9wOjE1cHg7IH0gI3NvY2lhbF9tZWRpYV9pY29uc19kaXYgKiArICp7IG1hcmdpbi1sZWZ0OjFyZW07IH0gI3NvY2lhbF9tZWRpYV9pY29uc19kaXYgLmZhYnsgZm9udC1zaXplOjEuNXJlbTsgfSAjc29jaWFsX21lZGlhX2ljb25zX2RpdiBheyBjb2xvcjojODA4MDgwOyB9IC5zb2NpYWwgeyB0ZXh0LWFsaWduOmNlbnRlcjsgd2lkdGg6MTlweDsgaGVpZ2h0OjE5cHg7IGZsb2F0OnJpZ2h0OyBiYWNrZ3JvdW5kOnJnYigyNTUsMjU1LDI1NSk7IGJvcmRlcjoxcHggc29saWQgcmdiKDIwNCwyMDQsMjA0KTsgYm94LXNoYWRvdzowIDJweCA0cHggcmdiYSgwLDAsMCwwLjE1KSwgaW5zZXQgMCAwIDUwcHggcmdiYSgwLDAsMCwwLjEpOyBib3JkZXItcmFkaXVzOjEwMHB4OyBtYXJnaW46MCAxMHB4IDBweCAwOyBwYWRkaW5nOjlweDsgfSAuc29jaWFsLXNoYXJlIHsgd2lkdGg6MTlweDsgaGVpZ2h0OjE5cHg7IGJhY2tncm91bmQ6cmdiKDI1NSwyNTUsMjU1KTsgYm9yZGVyLXJhZGl1czoxMDBweDsgbWFyZ2luOjAgMTBweCAwcHggMDsgfSAjc29jaWFsX21lZGlhX2ljb25zX2RpdiBhLnNvY2lhbCAuZmFieyBmb250LXNpemU6MS4xODhyZW0gOyB9IC5zb2NpYWwgaXsgZm9udC1zaXplOjEuMjVyZW0gOyB9IC5nb29nbGUtcGx1czpob3ZlcntiYWNrZ3JvdW5kOiNERDRCMzk7Y29sb3I6I0ZGRiFpbXBvcnRhbnQ7fSAuZmFjZWJvb2s6aG92ZXJ7YmFja2dyb3VuZDojM2I1OTk4O2NvbG9yOiNGRkYhaW1wb3J0YW50O30gLnR3aXR0ZXI6aG92ZXJ7YmFja2dyb3VuZDojMDBhY2VlO2NvbG9yOiNGRkYhaW1wb3J0YW50O30gLnBpbnRlcmVzdDpob3ZlcntiYWNrZ3JvdW5kOiNjODIzMmM7Y29sb3I6I0ZGRiFpbXBvcnRhbnQ7fSAubGlua2VkaW46aG92ZXJ7YmFja2dyb3VuZDojMGU3NmE4O2NvbG9yOiNGRkYhaW1wb3J0YW50O30gLnNreXBlOmhvdmVye2JhY2tncm91bmQ6IzAwYWZmMDtjb2xvcjojRkZGIWltcG9ydGFudDt9IC55b3V0dWJlOmhvdmVye2JhY2tncm91bmQ6I2M0MzAyYjtjb2xvcjojRkZGIWltcG9ydGFudDt9IC50dW1ibHI6aG92ZXJ7YmFja2dyb3VuZDojMzQ1MjZmO2NvbG9yOiNGRkYhaW1wb3J0YW50O30gLmRldGFpbHMgYSB7IGNvbG9yOiNmZmY7IGRpc3BsYXk6YmxvY2s7IHRleHQtYWxpZ246Y2VudGVyOyB9IC5wYWdpbmF0aW9uIHtjbGVhcjpib3RoOyBwYWRkaW5nOjVweDsgcGFkZGluZy1sZWZ0OjEwMHB4O30gLnBhZ2luYXRpb24gYSwgLnBhZ2luYXRpb24gYS5zZWxlY3RlZCB7IGRpc3BsYXk6YmxvY2s7IHBhZGRpbmc6NXB4IDdweDsgcGFkZGluZy10b3A6OHB4OyBmb250LXNpemU6MC45MzhyZW0gOyBjb2xvcjojZmZmOyBmb250LXdlaWdodDpib2xkOyB0ZXh0LWFsaWduOmNlbnRlcjsgZmxvYXQ6bGVmdDsgd2lkdGg6MTNweDsgbWFyZ2luOjRweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjZweDsgLW1vei1ib3JkZXItcmFkaXVzOjZweDsgYm9yZGVyLXJhZGl1czo2cHg7IH0gLnBhZ2luYXRpb24gYSB7YmFja2dyb3VuZDojNjY2IDt9IC5wYWdpbmF0aW9uIGEuc2VsZWN0ZWQge2JhY2tncm91bmQ6IzIyMiA7fSAucGFnZW5vNXt3aWR0aDoxMDAlO21hcmdpbjozMHB4IDAgMjBweCAwcHg7IHBhZGRpbmc6MDsgZmxvYXQ6bGVmdH0gLnBhZ2VfbmFtZTE4IGF7IGNvbG9yOiMzMzM7IH0gLnBhZ2VubzJ7aGVpZ2h0OjI0cHg7IH0gLnBhZ2VubzIgdWx7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBtYXJnaW46MDsgcGFkZGluZzowOyB0ZXh0LXRyYW5zZm9ybTpub25lOyB9IC5wYWdlbm8yIHVsIGxpeyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IGRpc3BsYXk6aW5saW5lO30gLnBhZ2VubzIgdWwgbGkgYXsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbjowOyBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMzIzMjMyOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZzowIDdweDsgbWFyZ2luLXJpZ2h0OjJweDsgZm9udC13ZWlnaHQ6Ym9sZDsgbGluZS1oZWlnaHQ6MjRweDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IHRleHQtdHJhbnNmb3JtOm5vbmU7IGJhY2tncm91bmQ6I2IzYjRiNTsgZmxvYXQ6bGVmdDsgLW1vei1ib3JkZXItcmFkaXVzOjRweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjRweDsgYm9yZGVyLXJhZGl1czo0cHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjRweDt9IC5wYWdlbm8yIHVsIGxpIGE6aG92ZXJ7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBtYXJnaW46MDsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6I0ZGRkZGRjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHBhZGRpbmc6MCA3cHg7IG1hcmdpbi1yaWdodDoycHg7IGZvbnQtd2VpZ2h0OmJvbGQ7IGxpbmUtaGVpZ2h0OjI0cHg7IHRleHQtdHJhbnNmb3JtOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LXRyYW5zZm9ybTpub25lOyBiYWNrZ3JvdW5kOiMyODI4Mjg7IGZsb2F0OmxlZnQ7IC1tb3otYm9yZGVyLXJhZGl1czo0cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7IGJvcmRlci1yYWRpdXM6NHB4OyAta2h0bWwtYm9yZGVyLXJhZGl1czo0cHg7fSAucGFnZW5vMiBsaSBhLmFjdGl2ZXsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbjowOyBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZzowIDdweDsgbWFyZ2luLXJpZ2h0OjJweDsgZm9udC13ZWlnaHQ6Ym9sZDsgbGluZS1oZWlnaHQ6MjRweDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IHRleHQtdHJhbnNmb3JtOm5vbmU7IGJhY2tncm91bmQ6IzI4MjgyODsgZmxvYXQ6bGVmdDsgLW1vei1ib3JkZXItcmFkaXVzOjRweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjRweDsgYm9yZGVyLXJhZGl1czo0cHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjRweDt9ICNwYWdlRGl2IGEgeyBjb2xvcjojZmZmOyB9ICNzZWFyY2hfdXNlZF9maWx0ZXItYm94LC5maWx0ZXItYWRqeyBiYWNrZ3JvdW5kOiM4MDgwODA7IGNvbG9yOndoaXRlOyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAjc2VhcmNoX3VzZWRfZmlsdGVyLWJveHsgcGFkZGluZzoxNXB4IDVweDsgfSAuZmlsdGVyLWFkansgcGFkZGluZzo1cHggNXB4OyB9ICNzZWFyY2hfdXNlZF9maWx0ZXItYm94IC5mYSwgLmZpbHRlci1hZGogLmZheyBmb250LXNpemU6MC45MzhyZW0gOyB9IC51aS1hY2NvcmRpb24taGVhZGVyLWljb257IG1hcmdpbi10b3A6LTExcHghaW1wb3J0YW50OyB9IC51aS1hY2NvcmRpb24tY29udGVudHsgYm9yZGVyLXJhZGl1czowIWltcG9ydGFudDsgYm9yZGVyOm5vbmUhaW1wb3J0YW50OyBib3gtc2hhZG93Om5vbmUhaW1wb3J0YW50OyB9ICNjaXR5VGl0bGV7IGNvbG9yOiM2NjY2NjY7IGZvbnQtc2l6ZTowLjkzOHJlbSA7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgZGlzcGxheTpibG9jazsgfSAudGl0bGVJbmZveyBmb250LXNpemU6MS4xMjVyZW0gIWltcG9ydGFudDsgZm9udC13ZWlnaHQ6bm9ybWFsIWltcG9ydGFudDsgZGlzcGxheTpibG9jayFpbXBvcnRhbnQ7IH0gLnRpdGxlQ2FyeyBmb250LXNpemU6MS4zNzVyZW0gIWltcG9ydGFudDsgZm9udC13ZWlnaHQ6bm9ybWFsIWltcG9ydGFudDsgZm9udC13ZWlnaHQ6Ym9sZCFpbXBvcnRhbnQ7IH0gLnNlYXJjaHJlc3VsdCBoMiwgI1NlYXJjaFRpdGxlIHsgY29sb3I6IzMzMzsgZm9udC1zaXplOjEuNTYzcmVtIDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBtYXJnaW46MCAwIDAgMDsgcGFkZGluZzoyNXB4IDAgMTBweCAxNXB4OyBjbGVhcjpib3RoOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IH0gLm5ldy1pdGVtIHsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSgwLDAsMCwwLjEpOyBwYWRkaW5nOjAgOyBtYXJnaW46MCAwIDAgMDsgZGlzcGxheTpibG9jazsgY2xlYXI6Ym90aDsgZm9udC1zaXplOjAuODc1cmVtIDsgZmxvYXQ6bGVmdDsgd2lkdGg6MTAwJTsgYmFja2dyb3VuZC1jb2xvcjojZmZmOyB9IC5uZXctaXRlbTpsYXN0LW9mLXR5cGV7IGJvcmRlci1ib3R0b206bm9uZTsgfSAubmV3X3ByaWNlX2Jsb2NreyBmb250LXNpemU6MC44NzVyZW0gOyBmb250LXdlaWdodDpub3JtYWw7IGZsb2F0OmxlZnQ7IGNsZWFyOmJvdGg7IG1hcmdpbi10b3A6LTVweDsgfSAubmV3X21ha2VfbmFtZXsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjAuODc1cmVtIDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBtYXJnaW4tYm90dG9tOi0zcHg7IH0gLm5ldy1pdGVtIC50aHVtYiB7IGZsb2F0OnJpZ2h0OyB3aWR0aDo0MCU7IG1hcmdpbjouM2VtIDBweDsgdGV4dC1hbGlnbjpyaWdodDsgfSAubmV3Y2FyX2Jsb2NrX2Rlc2MgYXsgY29sb3I6IzMzMzMzMzsgfSAubmV3X21vZGVsX25hbWV7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGZsb2F0OmxlZnQ7IG1hcmdpbi1yaWdodDo1cHg7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gLm5ld195ZWFyeyBmbG9hdDpsZWZ0OyB9IC5uZXctaXRlbSAudGh1bWIgaW1neyBtYXgtd2lkdGg6MTAwJTsgYm9yZGVyOjA7IH0gLm5ld2Nhcl9ibG9ja19kZXNjIHsgbWFyZ2luLXRvcDoxMHB4OyBwb3NpdGlvbjpyZWxhdGl2ZTsgcGFkZGluZzowOyBsaW5lLWhlaWdodDoyMHB4OyB3aWR0aDo1MCU7IHBhZGRpbmctbGVmdDoyNXB4OyBmbG9hdDpsZWZ0OyBjb2xvcjojMzMzOyB9IG5ld2Nhcl9ibG9jayBoM3sgfSAubmV3LWl0ZW0gaDMgeyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjEwcHg7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IHdpZHRoOjk1JTsgfSAubmV3LWl0ZW0gLmFycm93IHsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZC1jb2xvcjpyZ2IoMjcsMjcsMjcpOyBib3JkZXItcmFkaXVzOjE0cHg7IHdpZHRoOjE1cHg7IG1hcmdpbjozMHB4IDVweCAxMHB4IDEwcHg7IH0gLm5ldy1kZXRhaWxzIGgxLCAubmV3LWRldGFpbHMgaDIgLC51c2VkX3NlYXJjaF9pdGVtIGgyLCAudXNlZC1kZXRhaWxzIGgxLCAubmV3LWRldGFpbHMgc3Bhbi5oMi1hbHQgeyBjb2xvcjojMTExOyBjbGVhcjpib3RoOyBwb3NpdGlvbjpyZWxhdGl2ZTsgcGFkZGluZy1sZWZ0OjIwcHg7IGxpbmUtaGVpZ2h0OjIxcHg7IG1hcmdpbi1sZWZ0OjE1cHg7IG1hcmdpbi1yaWdodDoxNXB4OyBtYXJnaW4tYm90dG9tOjEwcHg7IH0gLm5ldy1kZXRhaWxzIC50Ym9yZGVyIHsgcGFkZGluZy10b3A6MTBweDsgYm9yZGVyLXRvcDoxcHggc29saWQgI2U3ZTdlNzsgfSAubmV3LWRldGFpbHMgaDEgLm1ha2VNb2RlbFllYXIsIC51c2VkX3NlYXJjaF9pdGVtIGgyIC5tYWtlTW9kZWxZZWFyLCAudXNlZC1kZXRhaWxzIGgxIC5tYWtlTW9kZWxZZWFyeyBmb250LXNpemU6MS41NjNyZW0gOyB9IC5uZXctZGV0YWlscyBoMSAudmVyc2lvbkZ1bGwsIC51c2VkX3NlYXJjaF9pdGVtIGgyIC52ZXJzaW9uRnVsbCwgLnVzZWQtZGV0YWlscyBoMSAudmVyc2lvbkZ1bGx7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgZm9udC1zaXplOjFyZW0gOyBvdmVyZmxvdy13cmFwOmFueXdoZXJlOyB9IC5uZXctZGV0YWlscyBoMSAuZGVhbGVyTGNhdGlvbkNhclRpdGxlLCAudXNlZF9zZWFyY2hfaXRlbSBoMiAuZGVhbGVyTGNhdGlvbkNhclRpdGxlLCAudXNlZC1kZXRhaWxzIGgxIC5kZWFsZXJMY2F0aW9uQ2FyVGl0bGUgeyBmb250LXdlaWdodDpub3JtYWw7IGNvbG9yOiM3NTc1NzU7IGZvbnQtc2l6ZTowLjkzOHJlbSA7IGxldHRlci1zcGFjaW5nOi0xcHg7IH0gLmZ1bGxXaWR0aEJ1dHRvbiBpeyBwYWRkaW5nLXJpZ2h0OjVweDsgbWluLXdpZHRoOjE4cHg7IH0gLnVzZWQtZGV0YWlscyBoMSBzcGFuLmZhLWNoZXZyb24tcmlnaHR7IG1pbi13aWR0aDoxLjVyZW07IG1pbi1oZWlnaHQ6MS41cmVtOyBmb250LXNpemU6MXJlbTsgcGFkZGluZzowOyBib3JkZXItcmFkaXVzOjFyZW07IG1hcmdpbjowIDVweCAwIDA7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyB9IC5uZXctZGV0YWlscyAjY2FyVGl0bGUgLmZhLWNoZXZyb24tcmlnaHQsIC51c2VkX3NlYXJjaF9pdGVtICNjYXJUaXRsZSAuZmEtY2hldnJvbi1yaWdodCwgLnVzZWQtZGV0YWlscyBoMSAuZmEtY2hldnJvbi1yaWdodHsgYm9yZGVyLXJhZGl1czoxM3B4OyB3aWR0aDoxNHB4OyBoZWlnaHQ6MTdweDsgcGFkZGluZy10b3A6M3B4OyBwYWRkaW5nLWxlZnQ6NnB4OyBtYXJnaW4tbGVmdDotMjhweDsgZmxvYXQ6bGVmdDsgbWFyZ2luLXRvcDoxNHB4OyBmb250LXNpemU6MC44NzVyZW0gOyBib3gtc2l6aW5nOmNvbnRlbnQtYm94OyBib3JkZXI6MXB4IHNvbGlkICNmZmZmZmY7IGJhY2tncm91bmQtY29sb3I6IzFiMWIxYjsgY29sb3I6I2ZmZmZmZjsgfSAjU2VhcmNoVGl0bGUgLmZhLWNoZXZyb24tcmlnaHR7IGJvcmRlci1yYWRpdXM6MzBweDsgd2lkdGg6MjNweCAhaW1wb3J0YW50OyBoZWlnaHQ6MjlweCAhaW1wb3J0YW50OyBwYWRkaW5nLXRvcDozcHggIWltcG9ydGFudDsgcGFkZGluZy1sZWZ0OjExcHggIWltcG9ydGFudDsgZmxvYXQ6bGVmdDsgbWFyZ2luLXRvcDo4cHg7IGZvbnQtc2l6ZToxLjVyZW0gIWltcG9ydGFudDsgYm9yZGVyOjFweCBzb2xpZCAjZmZmZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiMxYjFiMWI7IGNvbG9yOiNmZmZmZmYgOyBtYXJnaW4tcmlnaHQ6MTBweDsgfSAuZm9vdGVyX2Rpc2NsYW1lciBheyBjb2xvcjojNzA3MDcwIH0gLm5ld2Nhcl9ibG9ja19kZXNjIC5mYS1jaGV2cm9uLXJpZ2h0eyBib3JkZXItcmFkaXVzOjEwcHg7IHdpZHRoOjEycHg7IGhlaWdodDoxNHB4OyBwYWRkaW5nLXRvcDoycHg7IHBhZGRpbmctbGVmdDo0cHg7IG1hcmdpbi1sZWZ0Oi0yOHB4OyBmbG9hdDpsZWZ0OyBtYXJnaW4tdG9wOjE0cHg7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGJvcmRlcjoxcHggc29saWQgI2ZmZmZmZjsgYmFja2dyb3VuZC1jb2xvcjojMWIxYjFiOyBjb2xvcjojZmZmZmZmIDsgfSAubmV3LWRldGFpbHMgI21haW5Db21wYXJlVmlldyBoMiwgLm5ldy1kZXRhaWxzICNtYWluQ29tcGFyZVZpZXcgc3Bhbi5oMi1hbHQsIC5uZXctZGV0YWlscyAuYnJvY2h1cmUtaW1nLWJ0biBzcGFuLmgyLWFsdCwgaDIuYnJvY2h1cmUtaW1nLXRpdGxlIHsgY29sb3I6I2ZmZjsgZm9udC1zaXplOjAuOTM4cmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgbWFyZ2luOjAgMCAwIDA7IHBhZGRpbmc6N3B4IDAgN3B4IDEwcHg7IGNsZWFyOmJvdGg7IH0gLm5ldy1kZXRhaWxzICNtYWluQ29tcGFyZVZpZXcgc3Bhbi5oMi1hbHQsIC5uZXctZGV0YWlscyAuYnJvY2h1cmUtaW1nLWJ0biBzcGFuLmgyLWFsdCB7IGRpc3BsYXk6YmxvY2s7IH0gLm5ldy1kZXRhaWxzID4gcCB7cGFkZGluZzo3cHggMTBweDt9IC5vdGhlckxpbmtzIHsgbWFyZ2luOjMwcHggMCAxNXB4OyBwYWRkaW5nOjAgMTVweDsgfSAub3RoZXJMaW5rcyBhIHsgZGlzcGxheTpsaXN0LWl0ZW07IGZvbnQtc2l6ZToxLjFlbTsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgbGlzdC1zdHlsZS1wb3NpdGlvbjppbnNpZGU7IH0gLm90aGVyTGlua3MgYSArIGEgeyBtYXJnaW4tdG9wOjEwcHg7IH0gLnJhaXRpbmctZGV0YWlscyBoMXsgY29sb3I6IzExMTsgZm9udC1zaXplOjEuM2VtOyB0ZXh0LWFsaWduOmNlbnRlcjsgbWFyZ2luLWJvdHRvbToxMHB4OyB9IC5yYWl0aW5nLWRldGFpbHMgLmJveDJfdGV4dHsgdGV4dC1hbGlnbjpqdXN0aWZ5OyBwYWRkaW5nOjAgNXB4OyB9IC5wb3NpdGl2ZVJhdGluZ1R4dHtwYWRkaW5nOjEwcHg7fSAucG9zaXRpdmVSYXRpbmdUeHQgLmJ0bi1kZWZhdWx0e3RleHQtdHJhbnNmb3JtOm5vbmU7fSAucG9zaXRpdmVSYXRpbmdUeHQgcCB7Zm9udC1zaXplOjEuMDYzcmVtIDsgdGV4dC1hbGlnbjpqdXN0aWZ5O30gLnBhZ2VfbmFtZTJ7dGV4dC1hbGlnbjpjZW50ZXI7fSAub3VydGVhbSBhIHsgY29sb3I6IzMzMzMzMzsgfSAjc2VhcmNoX3VzZWRfZmlsdGVyeyBib3JkZXI6MDsgYm9yZGVyLXJhZGl1czp1bnNldDsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAjdXNlZE9wdGlvbnMgLmxpc3RpdGVtOmFmdGVyeyBjb250ZW50OiJcZjAwYyI7IGZvbnQtZmFtaWx5OiJGb250IEF3ZXNvbWUgNSBQcm8iOyBmb250LXdlaWdodDo5MDA7IHBhZGRpbmctcmlnaHQ6NXB4OyB3aWR0aDoxNXB4OyBmbG9hdDpyaWdodDsgfSAubGlzdGl0ZW0geyBib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDAsMCwwLDAuMSk7IHBhZGRpbmc6NXB4IDA7IGZvbnQtc2l6ZTowLjkzOHJlbSA7IH0gLmxpc3RpdGVtIGltZyB7d2lkdGg6MTAwJSAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7fSAubGlzdGl0ZW0gc3BhbiB7ZGlzcGxheTppbmxpbmUtYmxvY2s7fSAubGlzdGl0ZW0gLmxpc3RkZXNjIHtmbG9hdDpsZWZ0OyB3aWR0aDo1MCU7IG1hcmdpbi1sZWZ0OjVweDt9IC5saXN0aXRlbSAubGlzdHZhbCB7ZmxvYXQ6cmlnaHQ7d2lkdGg6NDUlOyB0ZXh0LWFsaWduOnJpZ2h0O21hcmdpbi1yaWdodDo1cHg7fSAuYmlnIHt3aWR0aDo5NSU7IGNsZWFyOmJvdGg7IG1hcmdpbjoxMHB4IGF1dG87IGRpc3BsYXk6YmxvY2s7IGhlaWdodDo0MHB4O30gLnByaWNldGV4dCB7Y29sb3I6IzExMTsgZm9udC1zaXplOjFyZW0gOyBmb250LXdlaWdodDpib2xkOyBtYXJnaW46MTBweCAwIDAgMDsgZGlzcGxheTpibG9jazsgZmxvYXQ6bGVmdH0gLnByaW50LCAubGlrZSB7ZmxvYXQ6cmlnaHQ7IHdpZHRoOjYwcHg7Zm9udC1zaXplOjAuNzVyZW0gOyB0ZXh0LWFsaWduOnJpZ2h0OyBtYXJnaW4tdG9wOjEwcHg7fSAub2xkLWRldGFpbHMgdGFibGV7IGJvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTsgfSAjc3BlY1RpdGxleyBib3JkZXItdG9wOjFweCBzb2xpZCAjYWFhYWFhOyBib3JkZXItYm90dG9tOjFweCBzb2xpZCAjYWFhYWFhOyBwYWRkaW5nLXRvcDoxMHB4OyBwYWRkaW5nLWJvdHRvbToxMHB4OyBwYWRkaW5nLWxlZnQ6MTBweDsgYmFja2dyb3VuZC1jb2xvcjojZWVlOyBtYXJnaW4tdG9wOjI1cHg7IH0gLm9sZC1kZXRhaWxzIHRhYmxlIHRyIHRkeyBwYWRkaW5nOjVweCAwcHggNXB4IDEwcHg7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNlNmU2ZTY7IH0gLm9sZC1kZXRhaWxzIHVseyBsaXN0LXN0eWxlOm5vbmU7IH0gLm9sZC1kZXRhaWxzIHRkIGkuZmEtY2hldnJvbi1yaWdodHsgYm9yZGVyLXJhZGl1czoxM3B4OyB3aWR0aDoxMnB4OyBoZWlnaHQ6MTRweDsgcGFkZGluZy10b3A6M3B4OyBwYWRkaW5nLWxlZnQ6NXB4OyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC43NXJlbSA7IG1hcmdpbjowcHg7IGJvcmRlcjoxcHggc29saWQgI2ZmZmZmZjsgYmFja2dyb3VuZC1jb2xvcjojMWIxYjFiOyBjb2xvcjojZmZmZmZmIDsgfSAub2xkLWRldGFpbHMgdHI6bnRoLWNoaWxkKGV2ZW4pIHsgYmFja2dyb3VuZDojZWVlOyB9IC5vdGhlckJHeyBiYWNrZ3JvdW5kOiNmZmZmZmYgIWltcG9ydGFudDsgfSAuYmdOb25leyBiYWNrZ3JvdW5kOm5vbmUgIWltcG9ydGFudDsgfSAudGV4dENvbG9yeyBjb2xvcjojMWIxYjFiICFpbXBvcnRhbnQ7IH0gLnRleHRDb2xvclVzZWRTUlBNb2JpbGV7IGNvbG9yOiNmZmZmZmYgIWltcG9ydGFudDsgfSAudGV4dF9zbGlkZSBhID4gYnsgZmxvYXQ6bGVmdCFpbXBvcnRhbnQ7IG92ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50OyBwb3NpdGlvbjpyZWxhdGl2ZSFpbXBvcnRhbnQ7IG1hcmdpbjowcHghaW1wb3J0YW50OyB3aWR0aDoxMDAlIWltcG9ydGFudDsgdG9wOi0zcHghaW1wb3J0YW50OyB3aWR0aDoyMDBweCFpbXBvcnRhbnQ7IGxlZnQ6MnB4OyB9IC5ncmF5YmcgeyBtYXJnaW46MTBweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjRweDsgLW1vei1ib3JkZXItcmFkaXVzOjRweDsgYm9yZGVyLXJhZGl1czo0cHg7IGNsZWFyOmJvdGg7IGRpc3BsYXk6YmxvY2s7IGJhY2tncm91bmQ6I2NmY2ZjZiB1cmwoL2ltYWdlcy9ncmF5YmcucG5nKSByZXBlYXQteCAwIDA7IHBhZGRpbmc6MCAxMHB4OyBoZWlnaHQ6NTBweDsgfSAudGV4dDEsIHRleHQyLCBwaWMge21hcmdpbjowIDAgMCAwOyBoZWlnaHQ6NTBweDsgZGlzcGxheTpibG9jazsgcGFkZGluZzowIDEwcHggMCAxMHB4OyBsaW5lLWhlaWdodDo1MHB4OyBmb250LXNpemU6MC44NzVyZW0gO30gLnRleHQxIHtib3JkZXItcmlnaHQ6MXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC42KTt9IC5waWMge2JvcmRlci1sZWZ0OjFweCBzb2xpZCByZ2JhKDAsMCwwLDAuMyk7IGJvcmRlci1yaWdodDoxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjYpO30gLnRleHQyIHtib3JkZXItbGVmdDoxcHggc29saWQgcmdiYSgwLDAsMCwwLjMpO30gLnByb21vaW1hZ2Uge2Zsb2F0OmxlZnQ7IHdpZHRoOjExMHB4OyBtYXJnaW4tdG9wOjdweDt9IC5wcm9tb2RldGFpbCB7ZmxvYXQ6bGVmdDsgd2lkdGg6MTcwcHg7fSAucHJvbW9kZXRhaWwgaDIge2ZvbnQtc2l6ZToxLjVyZW0gOyBtYXJnaW46LTEwcHggMCAwIDA7IHBhZGRpbmc6MCAwIDAgMH0gLnByb21vLWNhcmQgeyBtYXJnaW46MCAxNXB4IDEwcHg7IG1hcmdpbi1ib3R0b206OHB4OyBkaXNwbGF5OmJsb2NrOyBib3JkZXI6MXB4IHNvbGlkICNjOGM4Yzg7IHBhZGRpbmc6M3B4OyBib3JkZXItcmFkaXVzOjVweDsgYm94LXNoYWRvdzowcHggMHB4IDEwcHggMnB4ICNjOGM4Yzg7IH0gLnByb21vLWNhcmQgLnByb21vLWltYWdlIHsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLnByb21vLWNhcmQgLnByb21vLXRpdGxlIHsgZm9udC1zaXplOjEuMzEzcmVtIDsgZGlzcGxheTpibG9jazsgZm9udC13ZWlnaHQ6NjAwOyBjb2xvcjojMzMzOyBtYXJnaW4tdG9wOjhweDsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLnByb21vLWltYWdlIGltZyB7IHdpZHRoOjEwMCU7IH0gLnByb21vLWNhcmQgLnByb21vLWRldGFpbHMtd3JhcHBlciB7IH0gLnByb21vLWNhcHRpb24geyBjb2xvcjojMzMzMzMzOyB9IC5wcm9tby1jYXB0aW9uOm5vdCg6bGFzdC1jaGlsZCkgeyBtYXJnaW4tYm90dG9tOjE1cHg7IH0gLnByb21vLWNhcHRpb24gLnByb21vLXRpdGxlIHsgdGV4dC1hbGlnbjpsZWZ0OyB9IC5wcm9tby1vZmZlciAucHJvbW8tYm9keSAucHJvbW8tdGl0bGUgeyBtaW4taGVpZ2h0OjA7IH0gLnByb21vLXN1YmNhcHRpb24geyBtYXJnaW4tdG9wOjVweDsgZm9udC1zaXplOjAuODc1cmVtOyB9IC5wcm9tby1kZXRhaWxzLWJ0biB7IGJhY2tncm91bmQ6LXdlYmtpdC1ncmFkaWVudChsaW5lYXIsbGVmdCB0b3AsbGVmdCBib3R0b20sY29sb3Itc3RvcCgwLjA1LCMwMDAwMDApLGNvbG9yLXN0b3AoMSwjMzMzMzMzKSk7IGJhY2tncm91bmQ6LW1vei1saW5lYXItZ3JhZGllbnQodG9wLCMwMDAwMDA1JSwjMzMzMzMzMTAwJSk7IGJhY2tncm91bmQ6LXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCMwMDAwMDA1JSwjMzMzMzMzMTAwJSk7IGJhY2tncm91bmQ6LW8tbGluZWFyLWdyYWRpZW50KHRvcCwjMDAwMDAwNSUsIzMzMzMzMzEwMCUpOyBiYWNrZ3JvdW5kOi1tcy1saW5lYXItZ3JhZGllbnQodG9wLCMwMDAwMDA1JSwjMzMzMzMzMTAwJSk7IGJhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwjMDAwMDAwNSUsIzMzMzMzMzEwMCUpOyBmaWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyMwMDAwMDAnLGVuZENvbG9yc3RyPScjMzMzMzMzJyxHcmFkaWVudFR5cGU9MCk7IGJhY2tncm91bmQtY29sb3I6IzMzMzMzMzsgZm9udC1zaXplOjAuOTM4cmVtIDsgdGV4dC1hbGlnbjpjZW50ZXI7IGJvcmRlci1yYWRpdXM6NnB4OyBwYWRkaW5nOjdweDsgfSAucHJvbW8tY2FyZCAucHJvbW8tZGV0YWlscy1idG4gYSB7IGNvbG9yOndoaXRlOyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAuc2VydmljZS1zZWN0aW9uIHtjbGVhcjpib3RoOyBtYXJnaW46MTBweDsgZGlzcGxheTpibG9jazsgbWluLWhlaWdodDo4MHB4O30gLnNlcnZpY2Utc2VjdGlvbiBpbWcgeyB3aWR0aDoxMDAlOyBtYXJnaW4tYm90dG9tOjdweDsgfSAuc2VydmljZS1zZWN0aW9uIC5kZXRhaWxzIHsgYmFja2dyb3VuZDpyZ2IoNjgsNjgsNjgpOyB3aWR0aDoxNjVweDsgZmxvYXQ6bm9uZTsgZm9udC1zaXplOjAuNzVyZW0gOyBtYXJnaW4tdG9wOjVweDsgbWFyZ2luLWxlZnQ6MHB4OyB9IC5zZXJ2aWNlX2Rlc2N7IH0gLnNlcnZpY2VfbWFpbl9kZXNjIHsgbWFyZ2luOjEwcHg7IH0gLnNlcnZpY2VfbWFpbl9kZXNjIGF7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7IH0gLnN0ZXBzIHt9IC5zdGVwcyB1bCB7fSAuc3RlcHMgdWwgbGl7IGxpc3Qtc3R5bGU6bm9uZTsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IGZvbnQtc2l6ZTowLjkzOHJlbSA7IG1hcmdpbjowIDEwcHggMCAxMHB4OyBkaXNwbGF5OmJsb2NrOyB3aWR0aDo3MHB4OyBtYXJnaW4tYm90dG9tOjEwcHg7IGN1cnNvcjpkZWZhdWx0fSAuc3RlcHMgdWwgbGkgLmFjdGl2ZSwgLnN0ZXBzIHVsIGxpIC5pbmFjdGl2ZSB7IC13ZWJraXQtYm94LXNoYWRvdzowIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjMpOyAtbW96LWJveC1zaGFkb3c6MCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4zKTsgYm94LXNoYWRvdzowIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjMpOyAtd2Via2l0LWJvcmRlci1yYWRpdXM6MjVweDsgLW1vei1ib3JkZXItcmFkaXVzOjI1cHg7IGJvcmRlci1yYWRpdXM6MjVweDsgd2lkdGg6MjVweDsgaGVpZ2h0OjI1cHg7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZToxLjVyZW0gOyBmb250LXdlaWdodDpib2xkOyB0ZXh0LWFsaWduOmNlbnRlcjsgZmxvYXQ6cmlnaHQ7IG1hcmdpbi10b3A6LTJweDsgcGFkZGluZy1yaWdodDoxcHg7IGxpbmUtaGVpZ2h0OjI1cHg7IH0gLnN0ZXBzIHVsIGxpIC5hY3RpdmUgeyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3doaXRlLnBuZykgcmVwZWF0LXg7IGNvbG9yOiMxYjFiMWI7fSAuc3RlcHMgdWwgbGkgLmluYWN0aXZlIHtiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2JsYWNrLnBuZykgcmVwZWF0LXg7IGNvbG9yOiNmZmY7IH0gLmZvcm0ge21hcmdpbjoxMHB4O30gLmZvcm1zX2JveDIyIHsgYm94LXNpemluZzpib3JkZXItYm94OyB3aWR0aDoxMDAlOyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luOjAgMCAxMHB4IDA7IH0gLnZvaSB7IGZsb2F0OmxlZnQ7IG1hcmdpbi10b3A6OHB4OyB9ICNjcmVkaXRfdmlfYWR2YW5jZWQgbGFiZWwgaW5wdXQgeyBtYXJnaW4tdG9wOjEwcHg7IH0gc3Bhbi5hc3RrIHsgY29sb3I6I0ZGMDEwMTsgZm9udC1zaXplOjAuNjg4cmVtOyBmbG9hdDpsZWZ0OyBwYWRkaW5nLXJpZ2h0OjNweDsgfSAuY3JlZGl0LWNvbnNlbnRfX2NvbnRhaW5lciB7IGRpc3BsYXk6ZmxleDsgcGFkZGluZzowIDAuN3JlbTsgZm9udC1zaXplOjAuOHJlbTsgY29sb3I6IzI0MjQyNDsgfSAuY3JlZGl0LWNvbnNlbnRfX2NvbnRhaW5lciBkaXY6bm90KDpmaXJzdC1vZi10eXBlKSB7IG1hcmdpbi1sZWZ0OjAuN3JlbTsgfSAuZmllbGQgeyB3aWR0aDoxMDAlOyBib3JkZXItcmFkaXVzOjRweDsgYm9yZGVyOjFweCBzb2xpZCAjY2NjOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0gLmxhYmVsIHtwYWRkaW5nOjEwcHggMCAwIDA7fSAuZGVhbGVyYWRkcmVzcywgLmRlYWxlcnBob25lLCAuZGVhbGVyZW1haWwgeyBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7IGJhY2tncm91bmQtc2l6ZTozMHB4OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOjVweCAxM3B4OyBiYWNrZ3JvdW5kLWNvbG9yOiNkYmRiZGI7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7IC1tb3otYm9yZGVyLXJhZGl1czo0cHg7IGJvcmRlci1yYWRpdXM6NHB4OyBtYXJnaW46MTBweDsgZGlzcGxheTpibG9jazsgY2xlYXI6Ym90aDsgcGFkZGluZzoxNXB4IDEwcHggMTVweCA0MHB4OyBmb250LXdlaWdodDpub3JtYWwgfSAuZGVhbGVyYWRkcmVzcywgLmRlYWxlcnBob25lLCAuZGVhbGVyZW1haWwgeyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyB9IC5kZWFsZXJhZGRyZXNzOmJlZm9yZSB7IGNvbnRlbnQ6IlxmMDE1IjsgfSAuZGVhbGVycGhvbmU6YmVmb3JlIHsgY29udGVudDoiXGYwOTUiOyBtYXJnaW4tdG9wOjhweDsgfSAuZGVhbGVyZW1haWw6YmVmb3JlIHsgY29udGVudDoiXGYwZTAiOyB9IC5kZWFsZXJhZGRyZXNzOmJlZm9yZSwgLmRlYWxlcnBob25lOmJlZm9yZSwgLmRlYWxlcmVtYWlsOmJlZm9yZXsgZm9udC1mYW1pbHk6IkZvbnQgQXdlc29tZSA1IFBybyI7IGZvbnQtc3R5bGU6bm9ybWFsOyBmb250LXdlaWdodDo5MDA7IHRleHQtZGVjb3JhdGlvbjppbmhlcml0OyBjb2xvcjojMzMzOyBmb250LXNpemU6MS4xMjVyZW0gOyBwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDoyMXB4OyB9IC5kZWFsZXJwaG9uZSAjYWNjb3JkaW9uIC51aS1hY2NvcmRpb24taGVhZGVyLWljb24sIC5vcGVuX2hvdXJzX2NvbnRhaW5lciAudWktYWNjb3JkaW9uLWhlYWRlci1pY29uIHsgZGlzcGxheTpub25lOyB9IC5vcGVuX2hvdXJzX2NvbnRhaW5lciAubWFwX29wZW5faG91cnNfZXhwYW5kIHsgY29sb3I6IzAwMDAwMDsgfSAubWFwX29wZW5faG91cnNfbW9iaWxlIC52aXNpdENvbnRhY3RCdXR0b24sIC5vcGVuX2hvdXJzX2NvbnRhaW5lciAudmlzaXRDb250YWN0QnV0dG9ueyB3aWR0aDoxMDAlOyB0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZzoxMXB4IDVweCA5cHg7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IG1hcmdpbi10b3A6MTBweDsgYm94LXNpemluZzpib3JkZXItYm94OyBiYWNrZ3JvdW5kLWNvbG9yOiNlMzE3M2U7IGNvbG9yOiNmZmZmZmY7IH0gLmRlYWxlcnBob25lIC51aS1hY2NvcmRpb24gLnVpLWFjY29yZGlvbi1pY29uc3sgcGFkZGluZy1sZWZ0OjA7IH0gLmRlYWxlcnBob25lIC5mYS1jYWxlbmRhcnsgbWFyZ2luLWxlZnQ6MTNweDsgbWFyZ2luLXJpZ2h0OjVweDsgfSAuZGVhbGVycGhvbmUgLnVpLWFjY29yZGlvbi1jb250ZW50IHsgYmFja2dyb3VuZC1jb2xvcjojZjNmM2YzIWltcG9ydGFudDsgYm9yZGVyOm5vbmUhaW1wb3J0YW50OyB9IC5kZWFsZXJwaG9uZS51aS1hY2NvcmRpb24gLnVpLWFjY29yZGlvbi1oZWFkZXJ7IHBhZGRpbmc6OHB4OyB9IC5oMy5tb2JpbGVCdXR0b257IGZvbnQtc2l6ZTowLjkzOHJlbSA7IH0gLm1vYmlsZUJ1dHRvbkNvbnRhY3R7IGJvcmRlci1yYWRpdXM6NHB4OyBkaXNwbGF5OmJsb2NrOyBjdXJzb3I6cG9pbnRlcjsgcG9zaXRpb246cmVsYXRpdmU7IG1hcmdpbi10b3A6MnB4OyBwYWRkaW5nOi41ZW0gLjVlbSAuNWVtIC43ZW07IHpvb206MTsgcGFkZGluZy1sZWZ0OjIuMmVtOyBvdXRsaW5lOjA7IGxpbmUtaGVpZ2h0OjEuMzsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGxpc3Qtc3R5bGU6bm9uZTsgfSAubW9iaWxlQnV0dG9uQ29udGFjdCBpeyBtYXJnaW4tbGVmdDotMjBweDsgbWFyZ2luLXJpZ2h0OjEwcHg7IH0gLmJpZ2ZiIHtwYWRkaW5nOjMwcHggMDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9iaWdmYi5wbmcpIHJlcGVhdC14IDAgMH0gLmJ1dHRvbl9qb2JvZmZlciB7IGRpc3BsYXk6YmxvY2s7IGxpbmUtaGVpZ2h0OjUwcHg7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2ljb25fZW1wbG95LnBuZycpIG5vLXJlcGVhdCBzY3JvbGwgMHB4IDBweCByZ2IoMjMxLCAyMzIsIDIzMik7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXdlaWdodDpib2xkOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZy1sZWZ0OjQwcHg7IH0gZGl2LmVycm9yTXNnIHsgYmFja2dyb3VuZC1jb2xvcjojRkZCQUJBOyBiYWNrZ3JvdW5kLWltYWdlOnVybCgiL2ltYWdlcy9lcnJvci5wbmciKTsgYmFja2dyb3VuZC1wb3NpdGlvbjoxMHB4IGNlbnRlcjsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyBib3JkZXI6MXB4IHNvbGlkOyBjb2xvcjojRDgwMDBDOyBkaXNwbGF5Om5vbmU7IHBhZGRpbmc6MTVweCAxMHB4IDE1cHggNTBweDsgei1pbmRleDo5OTk5OyB9IC5lbWFpbEJvZHksIC5lbWFpbFN1YmplY3R7IGRpc3BsYXk6bm9uZTsgfSAuZmlsZWlucHV0LWJ1dHRvbiB7IGJhY2tncm91bmQ6dXJsKCIvaW1hZ2VzL2JsX2JnLnBuZyIpIHJlcGVhdC14IHNjcm9sbCBsZWZ0IHRvcCByZ2JhKDAsIDAsIDAsIDApOyB9IC5maWxlaW5wdXQtYnV0dG9uOmhvdmVyIHsgYmFja2dyb3VuZDp1cmwoIi9pbWFnZXMvYnV0dG9uXzIucG5nIikgcmVwZWF0LXggc2Nyb2xsIGxlZnQgdG9wIHJnYmEoMCwgMCwgMCwgMCk7IH0gLmZpbGVpbnB1dC1idXR0b24sIC5maWxlaW5wdXQtYnV0dG9uOmhvdmVyIHsgZm9udC1zaXplOjAuODc1cmVtICFpbXBvcnRhbnQ7IGxpbmUtaGVpZ2h0OjMxcHg7IHBvc2l0aW9uOnJlbGF0aXZlOyB9IC5maWxlaW5wdXQtYnV0dG9uIGlucHV0IHsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDowOyByaWdodDowOyBtYXJnaW46MDsgb3BhY2l0eTowOyAtbXMtZmlsdGVyOidhbHBoYShvcGFjaXR5PTApJzsgY3Vyc29yOnBvaW50ZXI7IH0gLnBhZ2VfbmFtZTV7aGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHdpZHRoOjEwMCUgIWltcG9ydGFudDtwYWRkaW5nOjAgMHB4IDEwcHggMjFweDsgbGluZS1oZWlnaHQ6MzBweDsgZm9udC1zaXplOjEuNXJlbSA7IGNvbG9yOiMyNDI0MjQ7Zm9udC13ZWlnaHQ6bm9ybWFsIH0gLnBpY2JveDkwe3dpZHRoOjkwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW4tcmlnaHQ6OHB4OyBib3JkZXI6MXB4IHNvbGlkICNhY2FjYWM7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo3cHg7IGJvcmRlci1yYWRpdXM6N3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czo3cHg7IH0gLnBpY2JveDkwIGltZyB7d2lkdGg6OTBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IC1tb3otYm9yZGVyLXJhZGl1czo3cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo3cHg7IGJvcmRlci1yYWRpdXM6N3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czo3cHg7IH0gLnRleHRib3gxOTF7d2lkdGg6MTkxcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44MTNyZW0gOyBsaW5lLWhlaWdodDoxLjI7IGNvbG9yOiMyNDI0MjQ7IH0gLnRleHRib3gxOTEgaDR7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGNvbG9yOiMyNDI0MjQ7IHBhZGRpbmctYm90dG9tOjVweDsgfSAubWFpbmJveDI5MXt3aWR0aDo5MyU7aGVpZ2h0OjExMnB4OyBmbG9hdDpsZWZ0OyBjbGVhcjpib3RoOyBtYXJnaW46MCA1cHggMTBweCAwOyBiYWNrZ3JvdW5kOiNlNmU2ZTY7IGJvcmRlcjoxcHggc29saWQgI2Q0ZDRkNDsgLW1vei1ib3JkZXItcmFkaXVzOjhweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjhweDsgYm9yZGVyLXJhZGl1czo4cHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjhweDsgcGFkZGluZzoxNXB4IDEwcHg7fSAubGF6eXtib3JkZXI6MDtkaXNwbGF5Om5vbmV9IC50ZWNoU3BlY3N7d2lkdGg6NjIxcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46MHB4OyBwYWRkaW5nOjI1cHggMTVweDsgYmFja2dyb3VuZDojZTZlN2U3OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOnJpZ2h0IGJvdHRvbTsgLW1vei1ib3JkZXItcmFkaXVzLXRvcGxlZnQ6MHB4Oy1tb3otYm9yZGVyLXJhZGl1cy10b3ByaWdodDowcHg7LW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbXJpZ2h0OjZweDstbW96LWJvcmRlci1yYWRpdXMtYm90dG9tbGVmdDo2cHg7LXdlYmtpdC1ib3JkZXItdG9wLWxlZnQtcmFkaXVzOjBweDstd2Via2l0LWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOjBweDstd2Via2l0LWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjZweDstd2Via2l0LWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NnB4O2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MHB4O2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjBweDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjZweDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czo2cHg7fSAudGV4dF9ib3gxMSBhIHsgY29sb3I6IzI0MjQyNDsgZmxvYXQ6bGVmdDsgaGVpZ2h0OmF1dG87IG1hcmdpbi1sZWZ0OjE1cHg7IHBhZGRpbmc6MTBweCAwOyB9IC50ZXh0X2JveDExIGEgeyBjb2xvcjojMjQyNDI0OyBmbG9hdDpsZWZ0OyBoZWlnaHQ6YXV0bzsgbWFyZ2luLWxlZnQ6MTVweDsgcGFkZGluZzoxMHB4IDA7IH0gLnRleHRfYm94MTEgdWwsIC50ZXh0X2JveDExIHAgeyBjb2xvcjojMjQyNDI0OyBmbG9hdDpsZWZ0OyBoZWlnaHQ6YXV0bzsgd2lkdGg6MTAwJTsgdGV4dC1hbGlnbjpqdXN0aWZ5OyB9IC50ZXh0X2JveDExIHAgaW1neyB3aWR0aDoxMDAlICFpbXBvcnRhbnQ7IGhlaWdodDphdXRvICFpbXBvcnRhbnQ7IG1hcmdpbjowIWltcG9ydGFudDsgcGFkZGluZzoxMHB4IDAhaW1wb3J0YW50OyB9IC5wcmljZU5vdGUgeyBjb2xvcjojNzU3NTc1OyBmb250LXNpemU6MC44NWVtOyBmb250LXN0eWxlOml0YWxpYzsgdGV4dC1hbGlnbjpqdXN0aWZ5OyBkaXNwbGF5OmJsb2NrOyBwYWRkaW5nLXJpZ2h0OjEwcHg7IGxpbmUtaGVpZ2h0OjEuMWVtOyBtYXJnaW46MTBweCAwOyB9IC5zdGFja2VkRGlzY2xhaW1lcnsgZGlzcGxheTpibG9jazsgbWFyZ2luLXRvcDoxMHB4OyB9IHNwYW4uc3RhY2tlZERpc2NsYWltZXI6YmVmb3JleyBjb250ZW50OiIqKiI7IHBvc2l0aW9uOnJlbGF0aXZlOyBmb250LXNpemU6MXJlbTsgfSAjbWFpbkNvbXBhcmVWaWV3eyBtYXJnaW46MDsgfSAjY29tcGxfdGFibGV7IG1hcmdpbi1ib3R0b206MjBweDsgfSAuaWROYXYxIHsgY29sb3I6I2Y5ZjlmOTsgZm9udC1zaXplOjAuNzVyZW0gOyBmb250LXN0eWxlOm5vcm1hbDsgZm9udC13ZWlnaHQ6Ym9sZDsgaGVpZ2h0OjI4cHg7IGxpc3Qtc3R5bGU6b3V0c2lkZSBub25lIG5vbmU7IHBhZGRpbmc6MDsgdGV4dC10cmFuc2Zvcm06dmFyKC0tdHh0LXVwcGVyKTsgfSAuaWROYXYxIGxpLnRvcCB7IGRpc3BsYXk6YmxvY2s7IGZsb2F0OmxlZnQ7IGhlaWdodDoyOHB4OyBwYWRkaW5nOjAgMnB4IDAgMDsgfSAuaWROYXYxIGxpLnRvcDEgeyBiYWNrZ3JvdW5kOnJnYmEoMCwgMCwgMCwgMCkgdXJsKCIvaW1hZ2VzL2JsX2hvdmVyLnBuZyIpIHJlcGVhdC14IHNjcm9sbCBsZWZ0IHRvcDsgYm9yZGVyLXJhZGl1czozcHg7IGNvbG9yOiNmZmY7IGRpc3BsYXk6YmxvY2s7IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGhlaWdodDoyOHB4OyBwYWRkaW5nOjAgMnB4IDAgMDsgdGV4dC1hbGlnbjpjZW50ZXI7IHRleHQtdHJhbnNmb3JtOnZhcigtLXR4dC11cHBlcik7IH0gLmlkTmF2MSBsaSBhLnRvcF9saW5rIHsgYmFja2dyb3VuZDpyZ2JhKDAsIDAsIDAsIDApIHVybCgiL2ltYWdlcy9ibF9iZy5wbmciKSByZXBlYXQteCBzY3JvbGwgbGVmdCB0b3A7IGJvcmRlci1yYWRpdXM6M3B4OyBjb2xvcjpyZ2IoMjU1LCAyNTUsIDI1NSk7IGN1cnNvcjpwb2ludGVyOyBkaXNwbGF5OmJsb2NrOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44MTNyZW0gOyBmb250LXdlaWdodDpub3JtYWw7IGhlaWdodDoyOHB4OyBsaW5lLWhlaWdodDozMHB4OyBwYWRkaW5nOjAgMTJweDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtdHJhbnNmb3JtOnZhcigtLXR4dC11cHBlcik7IH0gLmlkTmF2MSBsaSBhLnRvcF9saW5rOmhvdmVyIHsgYmFja2dyb3VuZDpyZ2JhKDAsIDAsIDAsIDApIHVybCgiL2ltYWdlcy9ibF9ob3Zlci5wbmciKSByZXBlYXQteCBzY3JvbGwgbGVmdCB0b3A7IGJvcmRlci1yYWRpdXM6M3B4OyBjb2xvcjojZmZmOyB9IC5pZE5hdjEgbGkgYS50b3BfbGluazEgeyBiYWNrZ3JvdW5kOnJnYmEoMCwgMCwgMCwgMCkgdXJsKCIvaW1hZ2VzL2JsX2hvdmVyLnBuZyIpIHJlcGVhdC14IHNjcm9sbCBsZWZ0IHRvcDsgYm9yZGVyLXJhZGl1czozcHg7IGNvbG9yOiNmZWZlZmU7IGN1cnNvcjpwb2ludGVyOyBkaXNwbGF5OmJsb2NrOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44MTNyZW0gOyBmb250LXdlaWdodDpub3JtYWw7IGhlaWdodDoyOHB4OyBsaW5lLWhlaWdodDozMHB4OyBwYWRkaW5nOjAgMTJweDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtdHJhbnNmb3JtOnZhcigtLXR4dC11cHBlcik7IH0gI2ZybVJlYmF0ZSAuaWROYXYxIGxpIGEudG9wX2xpbmsgeyBiYWNrZ3JvdW5kOnJnYmEoMCwgMCwgMCwgMCkgdXJsKCIvaW1hZ2VzL2J1dHRvbl9wb3B1cC5wbmciKSByZXBlYXQteCBzY3JvbGwgbGVmdCB0b3A7IGNvbG9yOiNmZmY7IH0gI2ZybVJlYmF0ZSAuaWROYXYxIGxpIGEudG9wX2xpbms6aG92ZXIgeyBiYWNrZ3JvdW5kOnJnYmEoMCwgMCwgMCwgMCkgdXJsKCIvaW1hZ2VzL2JsX2hvdmVyLnBuZyIpIHJlcGVhdC14IHNjcm9sbCBsZWZ0IHRvcDsgY29sb3I6I2ZmZjsgfSAudGV4dDIwIHsgZm9udC1zaXplOjAuODEzcmVtIDsgaGVpZ2h0OjIzcHg7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9IC5wcm9tb2NvZGVib3h7IC1tb3otYm94LXNoYWRvdzppbnNldCAwcHggLTNweCA3cHggMHB4ICNlODBkMGQ7IC13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwcHggLTNweCA3cHggMHB4ICNlODBkMGQ7IGJveC1zaGFkb3c6aW5zZXQgMHB4IC0zcHggN3B4IDBweCAjZTgwZDBkOyBiYWNrZ3JvdW5kOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20sIGNvbG9yLXN0b3AoMC4wNSwgI2ZmMzMzMyksIGNvbG9yLXN0b3AoMSwgI0RCMDAwMCkpOyBiYWNrZ3JvdW5kOi1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgI2ZmMzMzMyA1JSwgI0RCMDAwMCAxMDAlKTsgYmFja2dyb3VuZDotd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICNmZjMzMzMgNSUsICNEQjAwMDAgMTAwJSk7IGJhY2tncm91bmQ6LW8tbGluZWFyLWdyYWRpZW50KHRvcCwgI2ZmMzMzMyA1JSwgI0RCMDAwMCAxMDAlKTsgYmFja2dyb3VuZDotbXMtbGluZWFyLWdyYWRpZW50KHRvcCwgI2ZmMzMzMyA1JSwgI0RCMDAwMCAxMDAlKTsgYmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjZmYzMzMzIDUlLCAjREIwMDAwIDEwMCUpOyBmaWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyNmZjMzMzMnLCBlbmRDb2xvcnN0cj0nI0RCMDAwMCcsR3JhZGllbnRUeXBlPTApOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZjMzMzM7IGJvcmRlcjoxcHggc29saWQgI2Y1MWExYTsgY29sb3I6I0ZGRkZGRiFpbXBvcnRhbnQ7IGZvbnQtc2l6ZTowLjkzOHJlbSA7IHBhZGRpbmc6MTBweCAxMHB4IDA7IG1hcmdpbjowOyBtYXJnaW4tdG9wOjEwcHg7IG1hcmdpbi1sZWZ0OjM4cHg7IG1pbi13aWR0aDoxMDBweDsgYm9yZGVyLXJhZGl1czo2cHg7IGJveC1zaGFkb3c6aW5zZXQgMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC40KTsgZm9udC13ZWlnaHQ6Ym9sZDsgZmxvYXQ6bGVmdDsgZGlzcGxheTpibG9jazsgYm9yZGVyOjA7IHdpZHRoOjEwMHB4OyB9IC5kZXRhaWxQcmljZVdpdGhCdXR0b24geyBkaXNwbGF5OmlubGluZS1ibG9jazsgcG9zaXRpb246cmVsYXRpdmU7IG1hcmdpbi1sZWZ0OjVweDsgdmVydGljYWwtYWxpZ246dG9wOyBtYXJnaW4tYm90dG9tOjEwcHg7IG1hcmdpbi1yaWdodDo1cHg7IHdpZHRoOjQ5JTsgbWF4LXdpZHRoOjE5NXB4OyBtaW4td2lkdGg6MTIwcHg7IH0gLmRldGFpbFByaWNlV2l0aEJ1dHRvbiA+IC5kZXRhaWxQcmljZUJsb2NrIHsgbWFyZ2luLWxlZnQ6MDsgbWFyZ2luLWJvdHRvbTo5cHg7IH0gLmRldGFpbFByaWNlV2l0aEJ1dHRvbiA+IC5wcm9tb2NvZGVib3ggeyBtYXJnaW46MHB4OyB3aWR0aDoxMDAlOyBwYWRkaW5nOjZweCAwcHggM3B4IDBweDsgbWFyZ2luLXRvcDo5cHg7IH0gLmRldGFpbC1wcmljZS1wcm9tbyBoMiB7IGJhY2tncm91bmQtaW1hZ2U6dXJsKC9pbWFnZXMvYnV0dG9uX3Byb21vdGlvbi5wbmcpOyBjb2xvcjojRkZGOyBib3JkZXItcmFkaXVzOjhweDsgcGFkZGluZzo1cHggMDsgfSAuZGV0YWlsLXByaWNlLXByb21vIGEgeyBjb2xvcjojRkZGOyB9IC5kZXRhaWxQcmljZUJsb2NreyBkaXNwbGF5OmlubGluZS1ibG9jazsgbWFyZ2luLWxlZnQ6NXB4OyBwYWRkaW5nOjBweDsgYmFja2dyb3VuZC1jb2xvcjpsaWdodGdyZXk7IHZlcnRpY2FsLWFsaWduOnRvcDsgYm9yZGVyLXJhZGl1czo1cHg7IG1hcmdpbi1ib3R0b206MHB4OyB3aWR0aDoxMDAlOyBtYXgtd2lkdGg6MTk1cHg7IH0gLm5ldy1kZXRhaWxzIC5kZXRhaWxQcmljZVdpdGhCdXR0b24gPiAuZGV0YWlsUHJpY2VCbG9jayB7IG1hcmdpbi1ib3R0b206MHB4OyB9IEBtZWRpYShtYXgtd2lkdGg6MzA3cHgpIHsgLmRldGFpbFByaWNlQmxvY2sgeyBtYXgtd2lkdGg6MTc1cHg7IH0gfSAuZGV0YWlsUHJpY2VCbG9jayAjcmViYXRleyBtYXJnaW46MDsgYmFja2dyb3VuZC1jb2xvcjpibGFjazsgY29sb3I6d2hpdGU7IGJvcmRlci1yYWRpdXM6MCAwIDVweCA1cHg7IHBhZGRpbmc6NHB4IDAgMCAwOyB9IC5kZXRhaWxQcmljZUJsb2NrICNjYXJQcmljZXsgYmFja2dyb3VuZDpub25lOyBmb250LXNpemU6MS4yNXJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IHBhZGRpbmc6MHB4OyBjb2xvcjojMTExMTExOyBoZWlnaHQ6MjVweDsgfSAuc2NyYXRjaERldGFpbFByaWNleyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjNweDsgbGVmdDotMXB4OyB9IC5wcm9tb0JUTjpob3ZlciwgLnByb21vQlROIGE6aG92ZXIsIC5icm9jaHVyZUJ0bjpob3ZlciB7IGJhY2tncm91bmQ6I2UzMTczZSFpbXBvcnRhbnQ7IGNvbG9yOiNmZmZmZmYhaW1wb3J0YW50OyBib3JkZXI6bm9uZSFpbXBvcnRhbnQ7IH0gZGl2I2xlYXNlQ29tbWVudHMgeyBwYWRkaW5nLWJvdHRvbToxMHB4OyB9IC5kZXRhaWxQcmljZUJsb2NrICNjYXJQcmljZURpc2N7IGJhY2tncm91bmQ6bm9uZTsgZm9udC1zaXplOjEuMjVyZW0gOyBmb250LXdlaWdodDpib2xkOyBwYWRkaW5nOjBweDsgY29sb3I6I0Q0MDAwMDsgaGVpZ2h0OjIwcHg7IH0gLmRldGFpbFByaWNlQmxvY2sgI2NhclByaWNlUHJvbW97IGJhY2tncm91bmQ6bm9uZTsgZm9udC1zaXplOjEuMjVyZW0gOyBmb250LXdlaWdodDpib2xkOyB9ICNhc1B1cmNoYXNlSW50ZW50IC5hc1BJVGl0bGUgeyBmb250LXNpemU6MS4yNXJlbSAhaW1wb3J0YW50OyB9ICNhc1B1cmNoYXNlSW50ZW50IGxpIGxhYmVseyBtYXJnaW4tbGVmdDowcHghaW1wb3J0YW50OyB9ICNhc1B1cmNoYXNlSW50ZW50IC52aU9wdGlvbnN7IHBhZGRpbmc6MHB4IWltcG9ydGFudDsgfSAjYXNQdXJjaGFzZUludGVudCAudmlPcHRpb25zIGxpeyBoZWlnaHQ6MjBweCFpbXBvcnRhbnQ7IHdpZHRoOjI2MHB4IWltcG9ydGFudDsgcGFkZGluZzowIWltcG9ydGFudDsgbWFyZ2luOjJweCFpbXBvcnRhbnQ7IH0gI2FzUHVyY2hhc2VJbnRlbnQgLnN0ZXBzID4gbGl7IHBhZGRpbmc6MTBweCFpbXBvcnRhbnQ7IG1hcmdpbi1ib3R0b206NXB4IWltcG9ydGFudDsgfSAjYXNQdXJjaGFzZUludGVudCAuc3RlcHN7IHRleHQtaW5kZW50OjAhaW1wb3J0YW50OyB9ICNhc1B1cmNoYXNlSW50ZW50IC5hc3llcyB7IHBhZGRpbmctbGVmdDo2NXB4IWltcG9ydGFudDsgbWFyZ2luLXRvcDo4cHghaW1wb3J0YW50OyB9ICNhc1B1cmNoYXNlSW50ZW50IC5hc3llc25veyB3aWR0aDo2MHB4IWltcG9ydGFudDsgbWFyZ2luLXRvcDowcHghaW1wb3J0YW50OyB9ICNhc1B1cmNoYXNlSW50ZW50IGlucHV0eyBwYWRkaW5nIDowcHghaW1wb3J0YW50OyB9ICNteWNhcm91c2VsZGl2eyBtYXJnaW4tdG9wOjEwcHg7IH0gI215Y2Fyb3VzZWxkaXYuYmx1cnJ5Zmlyc3RpbWFnZXsgbWluLWhlaWdodDp2YXIoLS1tb2ItY2Fyb3VzZWwtbWluLWhlaWdodCk7IH0gI215Y2Fyb3VzZWxkaXYuYmx1cnJ5Zmlyc3RpbWFnZSAub3dsLWNhcm91c2VsIC5vd2wtaXRlbSBpbWd7IGJvcmRlcjowOyB9ICNteWNhcm91c2VsZGl2LmJsdXJyeWZpcnN0aW1hZ2UgLmxvYWRlcl9vd2x7IHZpc2liaWxpdHk6dmlzaWJsZTsgb3BhY2l0eToxOyB6LWluZGV4OjI7IHBvc2l0aW9uOmFic29sdXRlOyBoZWlnaHQ6MTAwJTsgd2lkdGg6MTAwJTsgb3ZlcmZsb3c6aGlkZGVuOyB9ICNteWNhcm91c2VsZGl2LmJsdXJyeWZpcnN0aW1hZ2UgLmxvYWRlcl9vd2wgLnBsYWNlaG9sZGVyeyBoZWlnaHQ6MTAwJTsgd2lkdGg6Y2FsYygxMDB2dyAtIDIwcHgpOyBwb3NpdGlvbjphYnNvbHV0ZTsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyBiYWNrZ3JvdW5kLXNpemU6Y29udGFpbjsgYmFja2dyb3VuZC1wb3NpdGlvbjpjZW50ZXIgY2VudGVyOyBtYXJnaW46MCAxMHB4OyB9ICNteWNhcm91c2VsZGl2LmJsdXJyeWZpcnN0aW1hZ2UgLmxvYWRlcl9vd2wuZmFkZS1vdXR7IHZpc2liaWxpdHk6aGlkZGVuOyBvcGFjaXR5OjA7IC13ZWJraXQtdHJhbnNpdGlvbjp2aXNpYmlsaXR5IDFtcyAxcywgb3BhY2l0eSAxcyBsaW5lYXI7IC1tb3otdHJhbnNpdGlvbjp2aXNpYmlsaXR5IDFtcyAxcywgb3BhY2l0eSAxcyBsaW5lYXI7IC1vLXRyYW5zaXRpb246dmlzaWJpbGl0eSAxbXMgMXMsIG9wYWNpdHkgMXMgbGluZWFyOyB0cmFuc2l0aW9uOnZpc2liaWxpdHkgMW1zIDFzLCBvcGFjaXR5IDFzIGxpbmVhcjsgfSBpbnB1dFt0eXBlPXJhZGlvXXsgLXdlYmtpdC1ib3gtc2hhZG93Om5vbmUhaW1wb3J0YW50OyAtbW96LWJveC1zaGFkb3c6IG5vbmUhaW1wb3J0YW50OyBib3gtc2hhZG93OiBub25lIWltcG9ydGFudDsgfSAubGFuZ3VhZ2VCYXJ7IG1heC13aWR0aDoyMDBweDsgfSAudWktd2lkZ2V0LWNvbnRlbnQsIC51aS13aWRnZXQtaGVhZGVyeyBiYWNrZ3JvdW5kOiNGMkYyRjIhaW1wb3J0YW50OyB9IC51aS1hY2NvcmRpb24gLnVpLWFjY29yZGlvbi1jb250ZW50IHsgcGFkZGluZzoxMHB4IWltcG9ydGFudDsgfSAudWktd2lkZ2V0LWNvbnRlbnQgeyBiYWNrZ3JvdW5kOiNlNmU2ZTYhaW1wb3J0YW50OyB9IC51aS10YWJzIC51aS10YWJzLW5hdiBsaXsgcGFkZGluZzoxcHggM3B4IWltcG9ydGFudDsgfSAjbWFpbkRpdl9OZXdNb2JpbGVMYW5kaW5nUGFnZXsgYmFja2dyb3VuZDojZmZmIHVybCgvaW1hZ2VzL2ZpbmFuY2UvaGVhZGVyLWJnLW1vYmlsZS5qcGcpIHRvcCBjZW50ZXIgbm8tcmVwZWF0IH0gLmNyZWRpdF9tX2hlYWRlciB7IHBvc2l0aW9uOnJlbGF0aXZlOyB9IC5jcmVkaXRfbV9oZWFkZXIgaW1nIHsgbWFyZ2luOjAgYXV0bzsgZGlzcGxheTpibG9jazsgd2lkdGg6MTAwJTsgfSAuY3JlZGl0X21fdGV4dC13cmFwcGVyIHsgcG9zaXRpb246YWJzb2x1dGU7IGhlaWdodDoxMDAlOyB3aWR0aDoxMDAlOyBsZWZ0OjUwJTsgdG9wOjA7IHRyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpOyB9IC5jcmVkaXRfbV90aW1lIHsgY29sb3I6IzhGMEQyMDsgZm9udC13ZWlnaHQ6NTAwOyB9IC5jcmVkaXRfbV9ib3ggeyBjb2xvcjojZmZmZmZmOyBmb250LXdlaWdodDpib2xkOyBtYXJnaW4tbGVmdDo0MCU7IG1hcmdpbi10b3A6OSU7IGxpbmUtaGVpZ2h0OjE1dnc7IH0gLmNyZWRpdF9tX2JveDIgeyBtYXJnaW4tbGVmdDo0NyU7IG1hcmdpbi10b3A6NSU7IGZvbnQtc2l6ZTo1LjV2dzsgdGV4dC1hbGlnbjpjZW50ZXI7IHdpZHRoOjQ1JTsgfSAuY3JlZGl0X21fYm94IC5jcmVkaXRfbV85OSB7IGZvbnQtc2l6ZToxOXZ3OyB9IC5jcmVkaXRfbV9ib3ggLmNyZWRpdF9tX2FwcHJvdmVkIHsgZm9udC1zaXplOjh2dzsgdGV4dC10cmFuc2Zvcm06dmFyKC0tdHh0LXVwcGVyKTsgfSAuY3JlZGl0X21fbG9nb3sgcG9zaXRpb246cmVsYXRpdmU7ZmxvYXQ6cmlnaHQ7aGVpZ2h0Ojg1cHg7bWFyZ2luLXJpZ2h0OjMwcHg7Y2xlYXI6Ym90aDsgfSAuY3JlZGl0X21fcGhvdG97IGhlaWdodDozNjNweDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9maW5hbmNlL21vYmlsZS1maW5hbmNpbmctaW1nLnBuZykgMCAwIG5vLXJlcGVhdDsgYmFja2dyb3VuZC1zaXplOjEwMCU7IH0gLmNyZWRpdF9tX2FwcHJvdmFsX2ZyeyBmbG9hdDpyaWdodDsgY2xlYXI6cmlnaHQ7IHdpZHRoOjE2M3B4OyBoZWlnaHQ6MTM3cHg7IG1hcmdpbjoyNXB4IDIwcHggMTBweCAwOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2ZpbmFuY2UvbG9nby1hcHByb3ZlZC1tb2JpbGVfcmVkX2ZyLnBuZykgMCAwIG5vLXJlcGVhdDsgfSAuY3JlZGl0X21fYXBwcm92YWxfZW57IGZsb2F0OnJpZ2h0OyBjbGVhcjpyaWdodDsgd2lkdGg6MTYzcHg7IGhlaWdodDoxMzdweDsgbWFyZ2luOjI1cHggMjBweCAxMHB4IDA7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvZmluYW5jZS9sb2dvLWFwcHJvdmVkLW1vYmlsZV9yZWRfZW4ucG5nKSAwIDAgbm8tcmVwZWF0OyB9IC5jcmVkaXRfbV9zdGFydGluZ2F0X3dyYXBwZXJ7IGZvbnQtc2l6ZToxLjVyZW0gOyBmb250LXdlaWdodDpsaWdodGVyICFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6MjRweDt0ZXh0LWFsaWduOmNlbnRlcjtjb2xvcjojMDI0MDZmO2NsZWFyOmJvdGg7bWFyZ2luLWJvdHRvbTozMHB4OyB9IC5jcmVkaXRfbV9zdGFydGluZ2F0IHsgbWFyZ2luLXRvcDoyNjBweDtmb250LXNpemU6MS40MzhyZW0gOyBmb250LXdlaWdodDpib2xkICFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6MjZweDtkaXNwbGF5OmJsb2NrOyB9IC5jcmVkaXRfbV9kZWxpdmVyeXsgZm9udC1zaXplOjEuNXJlbSA7IGZvbnQtd2VpZ2h0OmxpZ2h0ZXIgIWltcG9ydGFudDsgbGluZS1oZWlnaHQ6MjRweDt0ZXh0LWFsaWduOmNlbnRlcjtjb2xvcjojMDI0MDZmOyB9IC5jcmVkaXRfbV9jYWxsdXNfd3JhcHBlcnsgYmFja2dyb3VuZC1jb2xvcjojMDI2MmFjOyBiYWNrZ3JvdW5kLWltYWdlOi1tb3otbGluZWFyLWdyYWRpZW50KCMwMjYyYWMsIzAxMzc2MCk7IGJhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1saW5lYXItZ3JhZGllbnQoIzAyNjJhYywjMDEzNzYwKTsgYmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoIzAyNjJhYywjMDEzNzYwKTsgd2lkdGg6MTAwJTsgbWFyZ2luOjAgMCAyMHB4IDA7IGJvcmRlci1yYWRpdXM6M3B4OyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAuY3JlZGl0X21fY2FsbHVzLCAuY3JlZGl0X21fY2FsbHVzIGF7IGRpc3BsYXk6YmxvY2s7aGVpZ2h0OjU1cHg7d2lkdGg6MTAwJTtjb2xvcjojZmZmOyB9IC5jcmVkaXRfY2FsbF91c18xIHsgZm9udC1zaXplOjAuNzVyZW0gOyBmb250LXdlaWdodDpsaWdodGVyICFpbXBvcnRhbnQ7IGxpbmUtaGVpZ2h0OjEycHg7IGxpbmUtaGVpZ2h0OjU1cHg7IG1hcmdpbi1sZWZ0OjEwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsgYm90dG9tOjZweDsgfSAuY3JlZGl0X2NhbGxfdXNfMiB7IGNvbnRlbnQ6dXJsKC9pbWFnZXMvZmluYW5jZS9pY29uLXBob25lLXdoaXRlLnBuZyk7bWFyZ2luOjAgMTBweDsgfSAuY3JlZGl0X2NhbGxfdXNfMyB7IGZvbnQtc2l6ZToxLjM3NXJlbSA7IGZvbnQtd2VpZ2h0Om5vcm1hbCAhaW1wb3J0YW50OyBsaW5lLWhlaWdodDoyMnB4OyBsaW5lLWhlaWdodDo1NXB4OyBtYXJnaW4tcmlnaHQ6MTBweDsgfSAuY3JlZGl0X21faW5uZXIgeyBwYWRkaW5nOjE1cHggMTBweDsgfSAuY3JlZGl0X21fc2Vlbl9hbGx7IHBvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCU7IGhlaWdodDo0MDBweDsgbWFyZ2luOjAgYXV0bzsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9maW5hbmNlL2hlYWRlci1jb25kaXRpb25zLWJnLW1fcmVkLnBuZykgdG9wIGNlbnRlciBuby1yZXBlYXQ7IHotaW5kZXg6NTsgYm94LXNpemluZzpib3JkZXItYm94OyBjb2xvcjojZmZmOyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAuY3JlZGl0X21fc2Vlbl9hbGwgdWx7IHBhZGRpbmctdG9wOjIwcHg7Zm9udC1zaXplOjEuMTI1cmVtIDsgfSAuY3JlZGl0X21fc2Vlbl9hbGwgdWwgbGl7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQgIWltcG9ydGFudDsgbGluZS1oZWlnaHQ6MThweDsgdGV4dC10cmFuc2Zvcm06dmFyKC0tdHh0LXVwcGVyKTsgcGFkZGluZzo1cHg7IGJvcmRlci10b3A6MXB4IHJnYmEoMjU1LDI1NSwyNTUsMC4yKSBzb2xpZDsgfSAuY3JlZGl0X21fc2Vlbl9hbGwgdWwgbGk6Zmlyc3QtY2hpbGQgeyBwYWRkaW5nLXRvcDowOyBib3JkZXItdG9wOm5vbmU7IH0gLmNyZWRpdF9tX3NlZW5fYWxsIHB7IGZvbnQtc2l6ZToxLjkzOHJlbSA7IGxpbmUtaGVpZ2h0OjMxcHg7IHRleHQtdHJhbnNmb3JtOnZhcigtLXR4dC11cHBlcik7IG1hcmdpbjoyMHB4IDAgMCAwOyB9IC5jcmVkaXRfbV9mb3JtX3dyYXBwZXJ7IHRleHQtYWxpZ246Y2VudGVyOyBib3JkZXItcmlnaHQ6bm9uZTsgY29sb3I6IzAyNDA2ZjsgZm9udC13ZWlnaHQ6bm9ybWFsICFpbXBvcnRhbnQ7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgei1pbmRleDo3MDsgcGFkZGluZzoyMHB4IDEwcHggODBweCA1cHg7IHBvc2l0aW9uOnJlbGF0aXZlOyBib3JkZXI6NXB4IHNvbGlkICMwMjQwNmY7IGJvcmRlci1yYWRpdXM6MTBweDsgYmFja2dyb3VuZDojRkZGOyB3aWR0aDoxMDAlOyBtYXJnaW4tdG9wOjIwcHg7IH0gLmNyZWRpdF9tX2JlZm9yZV9mb3JteyBmb250LXNpemU6Mi4xMjVyZW0gOyBsaW5lLWhlaWdodDozNHB4OyB0ZXh0LXRyYW5zZm9ybTp2YXIoLS10eHQtdXBwZXIpOyB9IC5jcmVkaXRfbV9iZWZvcmVfZm9ybSBweyBmb250LXNpemU6MS4xODhyZW0gOyBsaW5lLWhlaWdodDoxOXB4OyBtYXJnaW4tdG9wOjE1cHg7IHRleHQtdHJhbnNmb3JtOm5vbmU7IH0gLmNyZWRpdF9tX2Zvcm1fYm90dG9teyBwb3NpdGlvbjphYnNvbHV0ZTsgYm90dG9tOi0ycHg7IGxlZnQ6LTJweDsgd2lkdGg6MTAwJTsgcGFkZGluZzoxMnB4IDJweCA4cHggMnB4OyBiYWNrZ3JvdW5kOiMwMjQwNmY7IGNvbG9yOiNmZmY7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXNpemU6MXJlbSA7IGZvbnQtd2VpZ2h0Om5vcm1hbCAhaW1wb3J0YW50OyBsaW5lLWhlaWdodDoxNnB4OyB9IC5jcmVkaXRfbV9hZnRlcl9mb3JteyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IGNvbG9yOiNmZmY7IHBhZGRpbmc6MzVweCAwOyBiYWNrZ3JvdW5kOiNmZmYgdXJsKC9pbWFnZXMvZmluYW5jZS9mZWF0LWJnX3JlZC5wbmcpOyBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MS4xMjVyZW0gOyBmb250LXdlaWdodDpub3JtYWwgIWltcG9ydGFudDsgbGluZS1oZWlnaHQ6MjBweDsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLmNyZWRpdF9tX2FmdGVyX2Zvcm0gc3BhbnsgfSAuY3JlZGl0X21fZm9ybV9ib3R0b20gcHsgcGFkZGluZzowOyBsaW5lLWhlaWdodDoxLjM7IH0gLmNyZWRpdF9tX2FmdGVyX2Zvcm0gaDJ7IGZvbnQtc2l6ZToxLjMxM3JlbSA7IGZvbnQtd2VpZ2h0OmJvbGQgIWltcG9ydGFudDsgbGluZS1oZWlnaHQ6MjVweDsgbWFyZ2luOjVweCAwIDAgMDsgcGFkZGluZzowOyB9IEBtZWRpYShtYXgtd2lkdGg6NDUwcHgpIHsgLmNyZWRpdF9tX2FmdGVyX2Zvcm0gaDJ7cGFkZGluZzowIDIwJTt9IC5jcmVkaXRfbV9mb3JtX2JvdHRvbSBwe3BhZGRpbmc6MCAyMCU7fSB9IEBtZWRpYShtYXgtd2lkdGg6NDAwcHgpIHsgLmNyZWRpdF9tX2FmdGVyX2Zvcm0gaDJ7cGFkZGluZzowIDE1JTt9IC5jcmVkaXRfbV9mb3JtX2JvdHRvbSBwe3BhZGRpbmc6MCAxNSU7fSB9IEBtZWRpYShtYXgtd2lkdGg6MzQwcHgpIHsgLmNyZWRpdF9tX2FmdGVyX2Zvcm0gaDJ7cGFkZGluZzowIDEwJTt9IC5jcmVkaXRfbV9mb3JtX2JvdHRvbSBwe3BhZGRpbmc6MCAxMCU7fSB9IC5jcmVkaXRfbV8zc3RlcHN7IG1hcmdpbi1sZWZ0OmF1dG87IG1hcmdpbi1yaWdodDphdXRvOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IHBvc2l0aW9uOnJlbGF0aXZlOyB0ZXh0LWFsaWduOmxlZnQ7IG1hcmdpbjowIGF1dG87IHBhZGRpbmctcmlnaHQ6MTBweDsgcGFkZGluZy1sZWZ0OjEwcHg7IG1heC13aWR0aDo5NjBweDsgfSAuY3JlZGl0X21fM3N0ZXBzIGgyeyBmb250LXNpemU6MS41NjNyZW0gOyBmb250LXdlaWdodDpub3JtYWwgIWltcG9ydGFudDsgbGluZS1oZWlnaHQ6MjVweDsgdGV4dC10cmFuc2Zvcm06dmFyKC0tdHh0LXVwcGVyKTsgbWFyZ2luLXRvcDowOyBwYWRkaW5nLXRvcDowOyBib3JkZXItdG9wOm5vbmU7IGNvbG9yOiMwMjQwNmY7IH0gLmNyZWRpdF9tXzNzdGVwcyB1bHsgbGlzdC1zdHlsZTpub25lOyB9IC5jcmVkaXRfbV8zc3RlcHMgbGl7IHBhZGRpbmc6MjBweCAyMHB4IDIwcHggMTEzcHg7IGJvcmRlci1yYWRpdXM6MTBweDsgcG9zaXRpb246cmVsYXRpdmU7IGJhY2tncm91bmQtY29sb3I6I2ZmZjsgbWFyZ2luLXRvcDoxMHB4OyB9IC5jcmVkaXRfbV8zc3RlcHNfd3JhcHBlcnsgcGFkZGluZzo0MHB4IDA7IGJhY2tncm91bmQ6I2UxZTFlMSB1cmwoL2ltYWdlcy9maW5hbmNlL3N0ZXBzLWJnLmpwZykgdG9wIGNlbnRlciBuby1yZXBlYXQ7IH0gLmNyZWRpdF9tXzNzdGVwcyB1bCBsaSBoM3sgZm9udC1zaXplOjEuMzc1cmVtIDsgZm9udC13ZWlnaHQ6bm9ybWFsICFpbXBvcnRhbnQ7IGxpbmUtaGVpZ2h0OjIycHg7IGNvbG9yOiMwMjQwNmY7IH0gLmNyZWRpdF9tXzNzdGVwcyB1bCBsaSBweyBsaW5lLWhlaWdodDoyMHB4OyBtYXJnaW46MCAwIDE1cHggMDsgcGFkZGluZzowOyBmb250LXNpemU6MS4xMjVyZW0gOyBmb250LXdlaWdodDpub3JtYWwgIWltcG9ydGFudDsgbGluZS1oZWlnaHQ6MThweDsgfSAuY3JlZGl0X21fM3N0ZXBzIHVsIGxpOmFmdGVyeyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjA7IGJvdHRvbTowOyBsZWZ0OjIwcHg7IG1hcmdpbjphdXRvIDA7IGNvbnRlbnQ6JyAnOyBkaXNwbGF5OmJsb2NrOyB3aWR0aDo3M3B4OyBoZWlnaHQ6NjZweDsgYmFja2dyb3VuZC1pbWFnZTp1cmwoJy9pbWFnZXMvZmluYW5jZS9zdGVwcy1tb2JpbGVfcmVkLnBuZycpOyBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7IH0gLmNyZWRpdF9tXzNzdGVwcyB1bCA+IGxpOmZpcnN0LWNoaWxkOmFmdGVyIHsgYmFja2dyb3VuZC1wb3NpdGlvbjotMTkxcHggMDsgfSAuY3JlZGl0X21fM3N0ZXBzIHVsID4gbGk6bnRoLWNoaWxkKDIpOmFmdGVyeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgMXB4OyB9IC5jcmVkaXRfbV8zc3RlcHMgdWwgPiBsaTpudGgtY2hpbGQoMyk6YWZ0ZXJ7IGJhY2tncm91bmQtcG9zaXRpb246LTkwcHggOXB4OyB9IC5jcmVkaXRfbV9mb290ZXJfd3JhcHBlcnsgcGFkZGluZzoxMHB4IDA7IH0gLmNyZWRpdF9tX2Zvb3RlcnsgYm94LXNpemluZzpib3JkZXItYm94OyBwb3NpdGlvbjpyZWxhdGl2ZTsgdGV4dC1hbGlnbjpsZWZ0OyBtYXJnaW46MCBhdXRvOyBwYWRkaW5nLXJpZ2h0OjEwcHg7IHBhZGRpbmctbGVmdDoxMHB4OyBtYXgtd2lkdGg6OTYwcHg7IH0gLmNyZWRpdF9tX2Zvb3RlciBoMiB7IG1hcmdpbjp2YXIoLS1zOSkgMCB2YXIoLS1zMykgMDsgbGluZS1oZWlnaHQ6MS43NXJlbTsgfSAuY3JlZGl0X21fZm9ybSBpbnB1dFt0eXBlPXRleHRdLCAuY3JlZGl0X21fZm9ybSBpbnB1dFt0eXBlPWRhdGVdLCAuY3JlZGl0X21fZm9ybSBpbnB1dFt0eXBlPW51bWJlcl0sIC5jcmVkaXRfbV9mb3JtIGlucHV0W3R5cGU9ZW1haWxdLCAuY3JlZGl0X21fZm9ybSBpbnB1dFt0eXBlPXRlbF0sIC5jcmVkaXRfbV9mb3JtIHNlbGVjdHsgaGVpZ2h0OjUwcHg7IGZvbnQtc2l6ZToxLjM3NXJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQgIWltcG9ydGFudDsgbGluZS1oZWlnaHQ6MjJweDsgd2lkdGg6MTAwJTsgbWFyZ2luLWJvdHRvbTowcHg7IGJvcmRlci1yYWRpdXM6MTBweDsgbWFyZ2luOjA7IHBhZGRpbmc6M3B4IDVweDsgYmFja2dyb3VuZC1jb2xvcjojREFEQURBOyBib3JkZXI6MXB4ICNDMkIzQjMgc29saWQ7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfSAuY3JlZGl0X21fZm9ybSB0YWJsZXsgd2lkdGg6MTAwJTsgcGFkZGluZzowIDEwcHg7IH0gLmNyZWRpdF9tX2Zvcm0gLmNyZWRpdF9yZXF1ZXN0X3N1Ym1pdHsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjEuODc1cmVtIDsgcGFkZGluZzo1cHg7IGZvbnQtd2VpZ2h0OmJvbGQgIWltcG9ydGFudDsgbGluZS1oZWlnaHQ6NjBweDsgbWFyZ2luOjMwcHggMCAzMHB4IDA7IGJveC1zaGFkb3c6bm9uZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGJhY2tncm91bmQ6bm9uZTsgYmFja2dyb3VuZC1jb2xvcjojY2YxNzFmOyBjb2xvcjojZmZmOyB0ZXh0LXRyYW5zZm9ybTp2YXIoLS10eHQtdXBwZXIpOyBib3JkZXItcmFkaXVzOjEwcHg7IH0gLmNyZWRpdF9tX2Zvcm0gLmxhYmVseyBmb250LXNpemU6MC44NzVyZW0gOyBmb250LXdlaWdodDpsaWdodGVyOyAhaW1wb3J0YW50OyBjb2xvcjojMjQyNDI0OyBmbG9hdDpsZWZ0OyB3aWR0aDoxMDAlOyB0ZXh0LWFsaWduOmxlZnQ7IH0gLmNyZWRpdF9tX3JlcXVpcmVkeyBjb2xvcjojYzAwOyB9ICNiZXN0UHJpY2VWZHBOZXdQb3B1cENvbnRhaW5lcnsgd2lkdGg6MjgwcHg7IGhlaWdodDo0OTBweDsgcGFkZGluZzoyNnB4IDEwcHggMTBweCAxMHB4OyB9ICNiZXN0UHJpY2VWZHBOZXdQb3B1cENvbnRhaW5lciAucG9wdXBfYmd7IHdpZHRoOjI4MHB4OyBoZWlnaHQ6NDkwcHg7IH0gI2Jlc3RQcmljZVZkcE5ld1BvcHVwQ29udGFpbmVyIC5wb3B1cF9iZ3sgYmFja2dyb3VuZC1pbWFnZTp1cmwoJy9pbWFnZXMvcG9wdXBzL20vZnIvYmVzdFByaWNlTmV3VmRwLnBuZycpOyB9IC5wb3B1cF9iZ3sgYmFja2dyb3VuZC1jb2xvcjojNDQ0NDQ0OyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gLnBvcHVwRm9ybSAuYXN0ZXJpc2t7IGNvbG9yOiNkMDA7IGZvbnQtd2VpZ2h0OmJvbGQ7IHBhZGRpbmc6MDsgZm9udC1zaXplOmluaGVyaXQ7IG1hcmdpbjowOyB9IC5wb3B1cEZvcm17IHotaW5kZXg6NTA7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6Mjc3cHg7IGhlaWdodDoyNDlweDsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB3aWR0aDoyNzBweDsgcGFkZGluZzozcHg7IH0gLnBvcHVwRm9ybSB0YWJsZXsgbWFyZ2luLWJvdHRvbToxMHB4OyB9IC5wb3B1cEZvcm1UaXRsZXsgaGVpZ2h0OjI1cHg7IG1hcmdpbjo4cHg7IGZvbnQtc2l6ZToxcmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAucG9wdXBGb3JtSW5wdXRzIHRkIHsgZm9udC1zaXplOjAuODc1cmVtIDsgdGV4dC1hbGlnbjpyaWdodDsgcGFkZGluZy1yaWdodDoxMHB4OyBwYWRkaW5nLWJvdHRvbTozcHg7IGxpbmUtaGVpZ2h0OjEzcHg7IG1pbi13aWR0aDo2MHB4OyB9IC5wb3B1cEZvcm0gaW5wdXR7IHdpZHRoOjE4MHB4OyB9ICNhc1B1cmNoYXNlSW50ZW50eyB3aWR0aDo4NSU7IG1heC13aWR0aDo2MDBweDsgcGFkZGluZzoxMHB4IDEwcHg7IHotaW5kZXg6MTAwMDAyMTsgfSAuc3RyaWtleyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAuc3RyaWtlOjphZnRlcnsgY29udGVudDonJzsgYm9yZGVyLWJvdHRvbToycHggc29saWQgI0NFMDAwMDsgcG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MDsgdG9wOjI1JTsgd2lkdGg6MTAwJTsgfSAucmVzcG9uc2l2ZS1jb250YWluZXIgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgb3ZlcmZsb3c6c2Nyb2xsOyAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaDsgfSAucmVzcG9uc2l2ZS1jb250YWluZXItMTZ4OSB7IHBhZGRpbmctYm90dG9tOjU2LjI1JTsgfSAucmVzcG9uc2l2ZS1jb250YWluZXItNHgzIHsgcGFkZGluZy1ib3R0b206NzUlOyB9IC5yZXNwb25zaXZlLWNvbnRhaW5lci0xMDAgeyBwYWRkaW5nLWJvdHRvbToxMDAlOyB3aWR0aDoxMDAlOyB9IC5yZXNwb25zaXZlLWNvbnRhaW5lci0xMCB7IHBhZGRpbmctYm90dG9tOjEwJTsgd2lkdGg6MTAwJTsgfSAucmVzcG9uc2l2ZS1jb250YWluZXIgaWZyYW1lIHsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDowOyBsZWZ0OjA7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyB9IC5yZXNwb25zaXZlLWNvbnRhaW5lciBbY2xhc3MqPSJjcmVkc2lpIl0gaWZyYW1lIHsgcG9zaXRpb246aW5oZXJpdDsgfSAucmVzcG9uc2l2ZS1lZGl0b3IgaWZyYW1leyBwb3NpdGlvbjppbml0aWFsOyB9IC5zdWJtZW51SXRlbUNvbnRhaW5lciAubG9jYXRpb24tbmFtZXMgYSwgLnN1Ym1lbnVJdGVtQ29udGFpbmVyIC5sb2NhdGlvbi1uYW1lcyAudGl0bGUsIC5zdWJtZW51SXRlbUNvbnRhaW5lciAubG9jYXRpb24tbmFtZXMgLmxvY2F0aW9uLWRldGFpbHMtaW5mbyBsaSB7IHBhZGRpbmctbGVmdDo5cHg7IH0gLnN1Ym1lbnVJdGVtQ29udGFpbmVyIC5zdWJtZW51SXRlbUNoaWxkQ29udGFpbmVyIHsgZGlzcGxheTpub25lOyB9IC5zdWJtZW51SXRlbUNoaWxkQ29udGFpbmVyIC5zdWJtZW51SXRlbUNoaWxkQ29udGFpbmVyIHsgZGlzcGxheTpibG9jazsgfSAuc3VibWVudUl0ZW1Db250YWluZXIgLnN1Ym1lbnVJdGVtQ2hpbGRDb250YWluZXIgLnN1Ym1lbnVJdGVtQ2hpbGRDb250YWluZXIgeyBkaXNwbGF5Om5vbmU7IH0gLnN1Ym1lbnVJdGVtQ29udGFpbmVyIC5sb2NhdGlvbi1uYW1lcyA+IGEgeyBiYWNrZ3JvdW5kLWNvbG9yOiNlMzE3M2U7IH0gbGkubG9jYXRpb24tbmFtZXMgeyB0ZXh0LWFsaWduOmxlZnQ7IH0gbGkubG9jYXRpb24tbmFtZXMubW9iaWxlIHsgbWFyZ2luLWJvdHRvbTowOyB9IGxpLmxvY2F0aW9uLW5hbWVzLm1vYmlsZSA+IGEgeyBmb250LXdlaWdodDpub3JtYWw7IGJvcmRlci1yYWRpdXM6MDsgYm9yZGVyOjFweCBzb2xpZCAjQkJCOyBib3JkZXItYm90dG9tOm5vbmU7IH0gLmxvY2F0aW9uLWRldGFpbHMgeyBmb250LXNpemU6MXJlbSA7IH0gLmxvY2F0aW9uLWRldGFpbHMtbG9nbyAudGl0bGUgeyBtYXJnaW4tdG9wOjhweDsgfSAubG9jYXRpb24tZGV0YWlscy1sb2dvIGltZyB7IG1hcmdpbi1ib3R0b206OHB4OyB9IC5sb2NhdGlvbi1kZXRhaWxzLWluZm8gdWwgbGk6bm90KC5kZXRhaWxzLWluZm8tbGluaykgeyBib3JkZXItbGVmdDpub25lOyBib3JkZXItcmlnaHQ6bm9uZTsgYm9yZGVyLWJvdHRvbTpub25lOyB9IC5sb2NhdGlvbi1kZXRhaWxzLWluZm8gdWwgbGk6bm90KDpmaXJzdC1jaGlsZCkgeyBib3JkZXI6bm9uZTsgfSAjZGVmYXVsdFRvcEJhbm5lclRleHQgeyB9IEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6MzIwcHgpIHsgI3RvcEJhbm5lckltYWdlLk5FV0NBUlMgI2RlZmF1bHRUb3BCYW5uZXJUaXRsZXsgZm9udC1zaXplOjEuMzc1cmVtICFpbXBvcnRhbnQ7IH0gI3RvcEJhbm5lckltYWdlLk5FV0NBUlMgI2RlZmF1bHRUb3BCYW5uZXJUZXh0eyBmb250LXNpemU6MS4xODhyZW0gIWltcG9ydGFudDsgfSAjdG9wQmFubmVySW1hZ2UuVVNFRENBUlMgI2RlZmF1bHRUb3BCYW5uZXJUaXRsZXsgZm9udC1zaXplOjEuMzc1cmVtICFpbXBvcnRhbnQ7IH0gI3RvcEJhbm5lckltYWdlLlVTRURDQVJTICNkZWZhdWx0VG9wQmFubmVyVGV4dHsgZm9udC1zaXplOjEuMTg4cmVtICFpbXBvcnRhbnQ7IH0gfSBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjMyMHB4KSB7ICN0b3BCYW5uZXJJbWFnZS5ORVdDQVJTICNkZWZhdWx0VG9wQmFubmVyVGl0bGUsI3RvcEJhbm5lckltYWdlLlVTRURDQVJTICNkZWZhdWx0VG9wQmFubmVyVGl0bGUgeyBmb250LXNpemU6MS4xODhyZW0gIWltcG9ydGFudDsgfSAjdG9wQmFubmVySW1hZ2UuTkVXQ0FSUyAjZGVmYXVsdFRvcEJhbm5lclRleHQsI3RvcEJhbm5lckltYWdlLlVTRURDQVJTICNkZWZhdWx0VG9wQmFubmVyVGV4dCB7IGZvbnQtc2l6ZToxLjA2M3JlbSAhaW1wb3J0YW50OyB9IH0gI3RvcEJhbm5lckltYWdlLlVTRURDQVJTICNkZWZhdWx0VG9wQmFubmVyV3JhcHsgaGVpZ2h0OjE2NXB4ICFpbXBvcnRhbnQ7IH0gI3RvcEJhbm5lckltYWdlLk5FV0NBUlMgI2RlZmF1bHRUb3BCYW5uZXJXcmFweyBoZWlnaHQ6MTY1cHggIWltcG9ydGFudDsgfSAjZGVmYXVsdFRvcEJhbm5lcnsgbWluLWhlaWdodDppbml0aWFsOyBoZWlnaHQ6YXV0bzsgfSAjZGVmYXVsdFRvcEJhbm5lcldyYXAgZGl2LmRlZmF1bHRUb3BCYW5uZXJCdG5XcmFwcGVyeyBtYXJnaW46MTBweCAwICFpbXBvcnRhbnQ7IH0gI2RlZmF1bHRUb3BCYW5uZXJXcmFwIHsgdG9wOjAhaW1wb3J0YW50OyBwYWRkaW5nOjE1cHggNHB4ICFpbXBvcnRhbnQ7IH0gI2RlZmF1bHRUb3BCYW5uZXJUaXRsZSB7IGxpbmUtaGVpZ2h0Om5vcm1hbCFpbXBvcnRhbnQ7IH0gI2RlZmF1bHRUb3BCYW5uZXJUZXh0IHsgfSAjZGVmYXVsdFRvcEJhbm5lckJ0biB7IGZvbnQtc2l6ZTowLjc1cmVtICFpbXBvcnRhbnQ7IG1hcmdpbi1ib3R0b206MTBweDsgZm9udC13ZWlnaHQ6bm9ybWFsIWltcG9ydGFudDsgcGFkZGluZzo0cHggMjBweCFpbXBvcnRhbnQ7IH0gLnByb21vQlROIGF7IGJvcmRlcjpub25lIWltcG9ydGFudDsgdGV4dC10cmFuc2Zvcm06dmFyKC0tdHh0LXVwcGVyKTsgfSAucHJvbW9CVE4uaXMtc3RpY2t5eyBwb3NpdGlvbjpzdGlja3k7IHRvcDozcmVtOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWxpZ2h0LWdyYXkpOyBhbGlnbi1pdGVtczpjZW50ZXI7IH0gLnNwZWNpYWwtc2NoZWR1bGUgeyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NHB4OyAtbW96LWJvcmRlci1yYWRpdXM6NHB4OyBib3JkZXItcmFkaXVzOjRweDsgY29sb3I6cmdiKDI1NSwyNTUsMjU1KTsgdGV4dC1hbGlnbjpsZWZ0OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjEuMWVtOyBmb250LXdlaWdodDpib2xkOyBwYWRkaW5nOjdweCA4cHggN3B4IDBweDsgYmFja2dyb3VuZDpyZ2IoNzIsIDcyLCA3Myk7IG1hcmdpbjoxMnB4IDEwcHggM3B4IDEwcHg7IH0gI2RlZmF1bHRUb3BCYW5uZXIgeyBoZWlnaHQ6YXV0bzsgfSBJTlBVVFt0eXBlPSJ0ZXh0Il0udmFsaWRpdHktZXJyb25lb3VzLCBJTlBVVFt0eXBlPSJkYXRlIl0udmFsaWRpdHktZXJyb25lb3VzLCBJTlBVVFt0eXBlPSJlbWFpbCJdLnZhbGlkaXR5LWVycm9uZW91cywgSU5QVVRbdHlwZT0idGVsIl0udmFsaWRpdHktZXJyb25lb3VzLCBJTlBVVFt0eXBlPSJwYXNzd29yZCJdLnZhbGlkaXR5LWVycm9uZW91cyB7IGJvcmRlcjoxcHggc29saWQgI2RjMzU0NTsgYmFja2dyb3VuZC1jb2xvcjojZmFkNmRjOyB9IFNFTEVDVC52YWxpZGl0eS1lcnJvbmVvdXN7IGJvcmRlcjoxcHggc29saWQgI2RjMzU0NTsgYmFja2dyb3VuZC1jb2xvcjojZmFkNmRjOyB9IFRFWFRBUkVBLnZhbGlkaXR5LWVycm9uZW91c3sgYm9yZGVyOjFweCBzb2xpZCAjZGMzNTQ1OyBiYWNrZ3JvdW5kLWNvbG9yOiNmYWQ2ZGM7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAudHJhZGluU2VsZWN0UG9wdXB7IGNvbG9yOiMzYzM4MzY7IGZvbnQtc2l6ZToxcmVtOyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsMSk7IGJhY2tncm91bmQtcG9zaXRpb246OTUlIDUwJTsgLXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7IC1tb3otYXBwZWFyYW5jZTpub25lOyBtYXJnaW46NXB4IDAgMDsgcGFkZGluZzowLjNyZW0haW1wb3J0YW50OyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgOjpwbGFjZWhvbGRlciB7IGNvbG9yOiNhOWE5YTk7IG9wYWNpdHk6MTsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIDotbXMtaW5wdXQtcGxhY2Vob2xkZXIgeyBjb2xvcjojYTlhOWE5OyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgOjotbXMtaW5wdXQtcGxhY2Vob2xkZXIgeyBjb2xvcjojYTlhOWE5OyB9IC5yZXZlYWwtbW9kYWwgOjpwbGFjZWhvbGRlciB7IGNvbG9yOiNhOWE5YTk7IG9wYWNpdHk6MTsgfSAucmV2ZWFsLW1vZGFsIDotbXMtaW5wdXQtcGxhY2Vob2xkZXIgeyBjb2xvcjojYTlhOWE5OyB9IC5yZXZlYWwtbW9kYWwgOjotbXMtaW5wdXQtcGxhY2Vob2xkZXIgeyBjb2xvcjojYTlhOWE5OyB9ICNhc1B1cmNoYXNlSW50ZW50ICp7IGJveC1zaXppbmc6Y29udGVudC1ib3ghaW1wb3J0YW50OyB9ICN0cmFkZUluQmFyUG9wdXBfdGl0bGV7IHRleHQtdHJhbnNmb3JtOnZhcigtLXR4dC11cHBlcik7IGZvbnQtd2VpZ2h0OmJvbGQ7IHRleHQtYWxpZ246Y2VudGVyOyBjb2xvcjojMWIxYjFiOyB9ICN0cmFkZUluQmFyUG9wdXBTZWxlY3RlZFZlaGljbGV7IG1hcmdpbi1ib3R0b206MTBweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGNvbG9yOiMxYjFiMWI7IH0gLnRyYWRpblNlbGVjdFd7IGZsb2F0OmxlZnQ7IG1hcmdpbi1sZWZ0OjEwcHg7IH0gLnRyYWRpblNlbGVjdEF7IHBvc2l0aW9uOnJlbGF0aXZlOyB9IC50cmFkaW5TZWxlY3RBOmFmdGVyIHsgY29udGVudDoiICI7IGhlaWdodDowOyB3aWR0aDowOyBib3JkZXItbGVmdDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1yaWdodDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci10b3A6NXB4IHNvbGlkICMwMDAwMDA7IHBvc2l0aW9uOmFic29sdXRlOyByaWdodDoxNHB4OyB0b3A6MTdweDsgdHJhbnNpdGlvbjphbGwgMC4zcyBsaW5lYXI7IHBvaW50ZXItZXZlbnRzOm5vbmU7IH0gLnRyYWRpbk5pdnsgd2lkdGg6MTAwJTsgcGFkZGluZzowLjRyZW07IGJvcmRlcjoxcHggc29saWQgI2E5YTlhOTsgYm9yZGVyLXJhZGl1czo1cHg7IH0gLnRyYWRpblNlbGVjdHsgY29sb3I6IzNjMzgzNjsgYm9yZGVyOjJweCBzb2xpZCAjI1RSQURFSU5KU0VMRUNUQk9SREVSQ09MT1IjIzsgYm9yZGVyLXJhZGl1czo1cHg7IHBhZGRpbmc6MTBweCAxMHB4OyBmb250LXNpemU6MXJlbSA7IGJhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuOSk7IGJhY2tncm91bmQtcG9zaXRpb246OTUlIDUwJTsgd2lkdGg6MjAwcHg7IC13ZWJraXQtYXBwZWFyYW5jZTpub25lOyAtbW96LWFwcGVhcmFuY2U6bm9uZTsgcGFkZGluZy1yaWdodDoyN3B4OyB9IC50cmFkaW5TZWxlY3Q6YWZ0ZXIgeyBjb250ZW50OiIgIjsgaGVpZ2h0OjA7IHdpZHRoOjA7IGJvcmRlci1sZWZ0OjVweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXJpZ2h0OjVweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXRvcDo1cHggc29saWQgIzAwMDAwMDsgcG9zaXRpb246YWJzb2x1dGU7IHJpZ2h0OjE0cHg7IHRvcDoxN3B4OyB0cmFuc2l0aW9uOmFsbCAwLjNzIGxpbmVhcjsgfSAudHJhZGVJbkJhck1vYmlsZUJ1dHRvbiB7IHBvc2l0aW9uOmZpeGVkOyBib3R0b206MTBweDsgbGVmdDoxMHB4OyB6LWluZGV4OjQ7IHdpZHRoOjE0MHB4ICFpbXBvcnRhbnQ7IGJvcmRlci13aWR0aDoxcHg7IHRleHQtYWxpZ246bGVmdDsgYmFja2dyb3VuZC1jb2xvcjojRTMxNzNFICFpbXBvcnRhbnQ7IGNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnQ7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBib3JkZXItcmFkaXVzOjhweDsgYm9yZGVyLXdpZHRoOjFweCAzcHggNHB4IDFweDsgYm9yZGVyLWNvbG9yOiMzMzMzMzM7IHBhZGRpbmctdG9wOjEwcHg7IH0gQk9EWS5Vc2VkU3JwMk1vYmlsZSAudHJhZGVJbkJhck1vYmlsZUJ1dHRvbnsgYm90dG9tOjZyZW07IH0gLnRyYWRlSW5CYXJNb2JpbGVCdXR0b24gaXsgZGlzcGxheTppbmxpbmUtZmxleDsgYm9yZGVyLXJhZGl1czoxMDAlOyB3aWR0aDoyZW07IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgYm9yZGVyOjJweCBzb2xpZCAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7IGhlaWdodDoxLjVlbTsgY29sb3I6IzAwMDsgZmxvYXQ6bGVmdDsgfSAudHJhZGVJbkJhck1vYmlsZUJ1dHRvbi53aXRoVG9hc3RlciB7IGJvdHRvbTo4MHB4OyB9IC50cmFkZUluQmFyTW9iaWxlQnV0dG9uIGEgeyBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50OyB9IC50cmFkZUluQmFyU3RlcDJ7IG1hcmdpbjo2MHB4IDA7IHRleHQtYWxpZ246Y2VudGVyOyB9IC50cmFkZUluQmFyU3RlcDIgLnRyYWRlSW5CYXJTdGVwMlF1ZXN0aW9ueyBtYXJnaW46MjBweCAwOyB9IC50cmFkZUluQmFyU3RlcDMgLnRyYWRlSW5CYXJTdGVwM1F1ZXN0aW9ueyBtYXJnaW46MjBweCAwOyB9IC50cmFkZUluQmFyU3RlcDIgLnJhZGlvX2RpdiBsYWJlbHsgd2lkdGg6NTBweDsgcGFkZGluZzowOyBtYXJnaW46NXB4OyBkaXNwbGF5OmlubGluZS1ibG9jayB9IC50cmFkZUluQmFyU3RlcDIgLnJhZGlvX2RpdiBpbnB1dHsgd2lkdGg6YXV0byAhaW1wb3J0YW50OyBwYWRkaW5nOjAgIWltcG9ydGFudDsgbWFyZ2luOjVweCAhaW1wb3J0YW50OyBib3JkZXI6bm9uZSAhaW1wb3J0YW50OyBoZWlnaHQ6YXV0byAhaW1wb3J0YW50OyB9IC5tdWx0aXNlbGVjdFZlaGljbGVPcHRpb25zeyBtYXJnaW4tdG9wOjVweDsgfSAubXVsdGlzZWxlY3RWZWhpY2xlT3B0aW9ucyBzcGFueyBmb250LXNpemU6MC45MzhyZW0gIWltcG9ydGFudDsgcGFkZGluZzowICFpbXBvcnRhbnQ7IG1hcmdpbjowICFpbXBvcnRhbnQ7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAudHJhZGVJbkJhck11bHRpc2VsZWN0eyB3aWR0aDoxMDAlIWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czowLjNyZW0haW1wb3J0YW50OyBib3JkZXItd2lkdGg6MXB4IWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czowLjNyZW0haW1wb3J0YW50OyBib3JkZXItY29sb3I6I2E5YTlhOSFpbXBvcnRhbnQ7IHBhZGRpbmc6MC4zcmVtIWltcG9ydGFudDsgfSAudWktbXVsdGlzZWxlY3QtbWVudS50cmFkZUluQmFyTXVsdGlzZWxlY3R7IHotaW5kZXg6MTAwMDAyMDsgbWF4LWhlaWdodDoxMTBweDsgb3ZlcmZsb3c6c2Nyb2xsOyB9IC50cmFkZUluQmFyRGVhbGVyU3RlcHsgdGV4dC1hbGlnbjpjZW50ZXI7IG1hcmdpbi10b3A6MjVweDsgfSAudHJhZGVJbkJhckRlYWxlclN0ZXAgLnRyYWRlSW5CYXJEZWFsZXJTdGVwTWFrZU1vZGVsWWVhcnsgZm9udC13ZWlnaHQ6NzAwOyB9IC50cmFkZUluQmFyRGVhbGVyU3RlcCBzcGFueyBtYXJnaW46MCFpbXBvcnRhbnQ7IGZvbnQtd2VpZ2h0OjcwMCFpbXBvcnRhbnQ7IGNvbG9yOiMwMDAwMDAhaW1wb3J0YW50OyBwYWRkaW5nOjAhaW1wb3J0YW50OyBmb250LXNpemU6MS4zMTNyZW0gIWltcG9ydGFudDsgfSAubW9kZWxub3llYXJCdXR0b25MaXN0eyBtaW4taGVpZ2h0OjQycHg7IG1hcmdpbjoxNXB4IDA7IH0gLm1vZGVsbm95ZWFyQnV0dG9uTGlzdCB1bHsgZmxvYXQ6bGVmdDsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IHBhZGRpbmc6MDsgfSAubW9kZWxub3llYXJCdXR0b25MaXN0IGxpeyBmbG9hdDpsZWZ0OyB0ZXh0LWFsaWduOmNlbnRlcjsgbWFyZ2luLXJpZ2h0OjNweDsgbGluZS1oZWlnaHQ6NDBweDsgcGFkZGluZzowcHggMTVweDsgY3Vyc29yOnBvaW50ZXI7IGJhY2tncm91bmQtY29sb3I6I2YwZjBmMDsgY29sb3I6IzFiMWIxYjsgYm9yZGVyOjFweCBzb2xpZCAjMDAwOyBib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgfSAubW9kZWxub3llYXJCdXR0b25MaXN0IGxpOmhvdmVyeyBjb2xvcjojZmZmZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiNlMzE3M2U7IGJvcmRlcjoxcHggc29saWQgI2ZmZmZmZjsgfSAubW9kZWxub3llYXJCdXR0b25MaXN0IHNwYW57IG1hcmdpbi1sZWZ0OjEwcHg7IGJvcmRlci1yYWRpdXM6MjBweDsgYmFja2dyb3VuZC1jb2xvcjojMDAwOyBjb2xvcjojZjBmMGYwOyBwYWRkaW5nOjJweCAxMHB4OyBmb250LXNpemU6MC44NzVyZW0gOyBmb250LXdlaWdodDo3MDA7IH0gLm1vZGVsbm95ZWFyQnV0dG9uTGlzdCBsaTpob3ZlciBzcGFueyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IGNvbG9yOiNlMzE3M2U7IH0gLm1vZGVsbm95ZWFyQnV0dG9uTGlzdCBsaS5tb2RlbG5veWVhckJ1dHRvblNlbGVjdGVkeyBiYWNrZ3JvdW5kLWNvbG9yOnJnYigxMSwxMSwxMSk7IGNvbG9yOnJnYigyNTUsMjU1LDI1NSk7IGJvcmRlcjoxcHggc29saWQgcmdiKDI1NSwyNTUsMjU1KTsgfSAubW9kZWxub3llYXJCdXR0b25MaXN0IGxpLm1vZGVsbm95ZWFyQnV0dG9uU2VsZWN0ZWQgc3BhbnsgYmFja2dyb3VuZC1jb2xvcjpyZ2IoMjU1LDI1NSwyNTUpOyBjb2xvcjpyZ2IoMTEsMTEsMTEpOyB9IC5tdWx0aWZvcm1fZm9vdGVyIC5tdWx0aWZvcm1fc3RlcDJ7IHRleHQtYWxpZ246Y2VudGVyOyB9IC5tdWx0aWZvcm1fYm9keXsgcGFkZGluZzozMHB4IDEwcHg7IH0gLm11bHRpZm9ybV90ZXh0eyBwYWRkaW5nLWJvdHRvbToxNXB4IWltcG9ydGFudDsgfSAubXVsdGlmb3JtX2J0bl8yeyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAucmViYXRlVGFneyBtYXJnaW46MCBhdXRvOyBwYWRkaW5nOjRweCA3cHggNHB4IDdweDsgdGV4dC1hbGlnbjpjZW50ZXI7IHdpZHRoOmZpdC1jb250ZW50OyBsaW5lLWhlaWdodDoxNXB4OyBib3JkZXItcmFkaXVzOjNweDsgYmFja2dyb3VuZDojZTMxNzNlIWltcG9ydGFudDsgY29sb3I6I2ZmZmZmZiFpbXBvcnRhbnQ7IHRleHQtc2hhZG93Om5vbmUhaW1wb3J0YW50OyB9IC5yZWJhdGVUYWcgc3Bhbi5yZWJhdGVUZXh0eyBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MC43NXJlbSA7IH0gLnJlYmF0ZVRhZyBzcGFuLnJlYmF0ZUFtb3VudHsgZGlzcGxheTpibG9jazsgZm9udC13ZWlnaHQ6NzAwOyBmb250LXNpemU6MXJlbSA7IH0gLmdyYXlib3ggLmNhci1wcmljZS1kb3duLWFycm93eyBtYXJnaW4tdG9wOi0yNXB4OyBtYXJnaW4tYm90dG9tOjBweDsgbWFyZ2luLWxlZnQ6MjBweDsgZmxvYXQ6bGVmdDsgcG9zaXRpb246cmVsYXRpdmU7IHotaW5kZXg6NTsgfSAuZ3JheWJveCAuY2FyLXByaWNlLWRvd24tYXJyb3cudXNlZHsgbWFyZ2luLWxlZnQ6NTBweDsgfSAucHJvbW9JbmZvV3JhcHBlcnsgd2lkdGg6MTAwJTsgaGVpZ2h0OjYwcHg7IGJvdHRvbTowOyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kLWNvbG9yOiNlZmVmZWY7IGRpc3BsYXk6aW5saW5lLXRhYmxlOyBtYXJnaW4tdG9wOi0yMHB4OyB9IC5kaXZDYXJQYXltZW50Q29udGFpbmVyeyB0ZXh0LWFsaWduOmNlbnRlcjsgY29sb3I6YmxhY2s7IH0gLnJlc3BvbnNpdmUtY29udGFpbmVyIC5jb250ZW50LXdyYXBwZXIgeyBtYXJnaW46MCAxNXB4OyB9IC5jYXJmYXggeyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAuY2FyZmF4IGltZyB7IHdpZHRoOjIwMHB4OyBwYWRkaW5nLXRvcDoxNXB4OyB9IC5jYXJmYXggLmNhcnByb29mLWJhZGdlID4gRElWeyBtYXgtd2lkdGg6bm9uZSAhaW1wb3J0YW50OyB3aWR0aDoxMDAlICFpbXBvcnRhbnQ7IHRleHQtYWxpZ246Y2VudGVyOyB9IC5jYXJmYXggLmNhcnByb29mLWJhZGdlID4gRElWIElNRyB7IG1heC13aWR0aDpub25lOyBoZWlnaHQ6NDBweDsgd2lkdGg6MTAwJTsgbWFyZ2luOjEwcHggMCAyMHB4OyB9IC5kaXZTZWFyY2hNc2cgeyBmb250LXNpemU6MC45cmVtOyBwYWRkaW5nOjE1cHg7IGJhY2tncm91bmQtY29sb3I6I2Y3ZjdmNzsgYm9yZGVyLXJhZGl1czo1cHg7IH0gLmJ1dHRvbl8xLCAuYnV0dG9uXzIsIC5idXR0b25fMyB7IG1hcmdpbi1ib3R0b206MTBweDsgfSAuYnV0dG9uXzEgYSwgLmJ1dHRvbl8yIGEsIC5idXR0b25fMyBhIHsgZGlzcGxheTpibG9jazsgd2lkdGg6MjQ5cHg7IGhlaWdodDozOHB4OyBib3JkZXItcmFkaXVzOjNweDsgZm9udC1zaXplOjEuMTI1cmVtIDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyOyBsaW5lLWhlaWdodDozOHB4OyB9IC5idXR0b25fMy5qcy1DVEEtbnVtYmVyIGEgPiAqOmZpcnN0LWNoaWxkeyBtYXJnaW4tcmlnaHQ6MC41cmVtOyB9IC5idXR0b25fMyBheyBiYWNrZ3JvdW5kOiMwMDA7IGNvbG9yOiNGRkY7IH0gLmJ1dHRvbl8zIGE6aG92ZXIsIC5idXR0b25fMyBhOmZvY3VzeyBiYWNrZ3JvdW5kOiM2NjY2NjY7IH0gI3Byb21vRGVzYyAuY2tlZGl0b3JXcmFwcGVyIGlmcmFtZSB7IG1heC13aWR0aDoxMDAlOyB9IEJPRFkuVXNlZFNycDJNb2JpbGUgSDEuZGVmYXVsdHsgZm9udC1zaXplOjEuMnJlbTsgbGluZS1oZWlnaHQ6MS4ycmVtOyBjb2xvcjojMWIxYjFiOyBmb250LXdlaWdodDpub3JtYWw7IGNsZWFyOmJvdGg7IHBhZGRpbmc6MCAwIDE1cHggMDsgZGlzcGxheTppbmxpbmUtZmxleDsgfSBCT0RZLlVzZWRWZHAyTW9iaWxlIEgxLmRlZmF1bHR7IHBhZGRpbmc6MTBweDsgYm94LXNpemluZzpib3JkZXItYm94OyBtYXJnaW46MDsgZGlzcGxheTppbmxpbmUtZmxleDsgfSBCT0RZLlVzZWRTcnAyTW9iaWxlIEgxLmRlZmF1bHQgQXsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0gQk9EWS5Vc2VkVmRwMk1vYmlsZSBIMS5kZWZhdWx0IEkuaWNvbiwgQk9EWS5Vc2VkU3JwMk1vYmlsZSBIMS5kZWZhdWx0IEkuaWNvbiB7IGJvcmRlci1yYWRpdXM6MzBweDsgd2lkdGg6MTZweDsgaGVpZ2h0OjIwcHg7IHBhZGRpbmctdG9wOjVweDsgcGFkZGluZy1sZWZ0OjhweDsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjFyZW0gOyBtYXJnaW4tcmlnaHQ6NXB4OyBib3JkZXI6MXB4IHNvbGlkICNmZmZmZmY7IGNvbG9yOiNmZmZmZmY7IGJhY2tncm91bmQtY29sb3I6IzFiMWIxYjsgfSBCT0RZLlVzZWRWZHAyTW9iaWxlIEgxLmRlZmF1bHQgSS5pY29uLm11bHRpTGluZUgxLCBCT0RZLlVzZWRTcnAyTW9iaWxlIEgxLmRlZmF1bHQgSS5pY29uLm11bHRpTGluZUgxeyBtYXJnaW4tdG9wOjBweDsgfSBCT0RZLlVzZWRWZHAyTW9iaWxlIEgxLmRlZmF1bHQgSS5pY29uLnNpbmdsZUxpbmVIMSwgQk9EWS5Vc2VkU3JwMk1vYmlsZSBIMS5kZWZhdWx0IEkuaWNvbi5zaW5nbGVMaW5lSDF7IG1hcmdpbi10b3A6MHB4OyB9IEJPRFkuVXNlZFZkcDJNb2JpbGUgSDEuZGVmYXVsdCA+IERJViwgQk9EWS5Vc2VkU3JwMk1vYmlsZSBIMS5kZWZhdWx0ID4gRElWeyBkaXNwbGF5OnRhYmxlLXJvdzsgfSBCT0RZLlVzZWRTcnAyTW9iaWxlIEgxLmRlZmF1bHQgPiBESVYgRElWOm50aC1jaGlsZCgxKXsgZm9udC13ZWlnaHQ6Ym9sZDsgfSBCT0RZLlVzZWRTcnAyTW9iaWxlIEgxLmRlZmF1bHQgPiBESVYgRElWOm50aC1jaGlsZCgyKXsgZm9udC13ZWlnaHQ6bm9ybWFsOyBjb2xvcjojNzU3NTc1OyBmb250LXNpemU6MC45cmVtOyB9IEJPRFkuVXNlZFNycDJNb2JpbGUgSDEuZGVmYXVsdCA+IERJViBESVY6bnRoLWNoaWxkKDMpeyBmb250LXNpemU6MC44cmVtOyBjb2xvcjojYmJiOyBwYWRkaW5nLXRvcDo1cHg7IH0gLmNhcmZheC5tb2JpbGUgZGl2eyBoZWlnaHQ6YXV0byFpbXBvcnRhbnQ7IH0gLmNhcmZheC5tb2JpbGUgZGl2IGF7IGRpc3BsYXk6YmxvY2shaW1wb3J0YW50OyB9IC5jcmVkc2lpTW9iaWxleyBkaXNwbGF5OmJsb2NrOyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAuY3JlZHNpaU1vYmlsZSAuY3JlZHNpaS13aWRnZXQtY29udGFpbmVyeyBtYXgtd2lkdGg6MTAwJSFpbXBvcnRhbnQ7IH0gLmJhbm5lci1mb3JtIC5NYWluQm94TGF5ZXIgeyB3aWR0aDppbml0aWFsOyB9IEJPRFkuVXNlZFZkcDJNb2JpbGUgLnNwZWNzLWltYWdlcy1ncm91cHsgcG9zaXRpb246cmVsYXRpdmU7IGRpc3BsYXk6ZmxleDsgZmxleC1mbG93OnJvdyB3cmFwOyBhbGlnbi1pdGVtczpjZW50ZXI7IGdyaWQtZ2FwOjMwcHg7IGJhY2tncm91bmQtY29sb3I6I2ZmZjsgbWFyZ2luOjMwcHggMTVweDsgfSBCT0RZLlVzZWRWZHAyTW9iaWxlIC5zcGVjcy1pbWFnZXMtZ3JvdXAgPiBkaXZ7IHRleHQtYWxpZ246Y2VudGVyOyBmbGV4OjEgMSA0NSU7IH0gQk9EWS5Vc2VkVmRwMk1vYmlsZSAuc3BlY3MtaW1hZ2VzLWdyb3VwID4gZGl2ID4gaW1nIHsgd2lkdGg6MTAwJTsgaGVpZ2h0OmF1dG87IHBhZGRpbmc6NXB4OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0gQk9EWS5Vc2VkVmRwMk1vYmlsZSAuc3BlY3MtaW1hZ2VzLWdyb3VwIC5jZXJ0LXRpdGxlIHsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjEuMWVtOyB9IEJPRFkuVXNlZFZkcDJNb2JpbGUgLnNwZWNzLWltYWdlcy1ncm91cCAuY2VydC1zdWJ0aXRsZSB7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbi1ib3R0b206MTBweDsgY29sb3I6Izc3NzsgZm9udC1zaXplOjAuOTVlbTsgbWFyZ2luLXRvcDo1cHg7IH0gQk9EWS5Vc2VkVmRwMk1vYmlsZSAuc3BlY3MtaW1hZ2VzLWdyb3VwIC5jZXJ0LWhpZ2hsaWdodGVkLXZhbHVlIHsgYmFja2dyb3VuZC1jb2xvcjojMDAwOyBib3JkZXI6MXB4IHNvbGlkICMwMDA7IGNvbG9yOiNGRkY7IHBhZGRpbmc6MTFweCAyMHB4IDlweCAyMHB4OyBib3JkZXItcmFkaXVzOjNweDsgZGlzcGxheTppbmxpbmUtYmxvY2s7IH0gLmNvbXBhcmVUYWJsZUltZyB7IGhlaWdodDo5MHB4OyBtYXJnaW46MCBhdXRvOyBkaXNwbGF5OmJsb2NrOyB9IC5kZWFsZXItaW5zaWRlLWNhbGwgYnV0dG9ueyBkaXNwbGF5Om5vbmUhaW1wb3J0YW50OyB9IC5icm9jaHVyZVBvc3RlciB7IHdpZHRoOjE3NXB4OyBtYXJnaW46MCBhdXRvOyBib3JkZXI6MXB4IHNvbGlkICNhYWE7IGJvcmRlci1yYWRpdXM6NHB4OyBvdmVyZmxvdzpoaWRkZW47IH0gLmJyb2NodXJlUG9zdGVyIGltZ3sgd2lkdGg6MTAwJTsgY3Vyc29yOnBvaW50ZXI7IH0gLnBoeXNpY2FsQWRkcmVzc0JveHsgYmFja2dyb3VuZC1jb2xvcjojRjdGNkY4OyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAudXZkcC1sb2NhdGVkLWF0LW1zZ3sgZm9udC1zaXplOjFyZW0gOyBjb2xvcjojNzA3MDcwOyBmb250LXdlaWdodDpsaWdodGVyOyBkaXNwbGF5OmJsb2NrOyBtYXJnaW4tdG9wOjVweDsgfSAudXZkcC1sb2NhdGVkLWRlYWxlci1uYW1leyBmb250LXNpemU6MS4zMTNyZW0gOyBkaXNwbGF5OmJsb2NrOyBtYXJnaW4tdG9wOjVweDsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAudXZkcC1sb2NhdGVkLWFkZHJlc3N7IGZvbnQtc2l6ZTowLjc1cmVtIDsgZGlzcGxheTpibG9jazsgbWFyZ2luOjVweCAwOyBmb250LXdlaWdodDpub3JtYWw7IH0gLnV2ZHAtbG9jYXRlZC13ZWJzaXRlIHsgZGlzcGxheTpibG9jazsgbWFyZ2luLXRvcDo1cHg7IGZvbnQtc2l6ZTp2YXIoLS1mcy0xKTsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAuZHJvcGRvd24tY29udGVudHsgZGlzcGxheTpub25lOyBwb3NpdGlvbjphYnNvbHV0ZTsgYmFja2dyb3VuZC1jb2xvcjojZjlmOWY5OyB3aWR0aDoxMDAlOyBib3gtc2hhZG93OjBweCA4cHggMTZweCAwcHggcmdiYSgwLDAsMCwwLjIpOyB6LWluZGV4OjE7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgbWFyZ2luOjEwcHggLTEwcHg7IH0gLmRyb3Bkb3duLWNvbnRlbnQgYXsgYmFja2dyb3VuZDp0cmFuc3BhcmVudDsgY29sb3I6IzAwMCAhaW1wb3J0YW50OyBib3JkZXI6bm9uZTsgZm9udC1zaXplOjAuODc1cmVtICFpbXBvcnRhbnQ7IHRleHQtZGVjb3JhdGlvbjpub25lOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IHdpZHRoOjEwMCU7IHBhZGRpbmc6OHB4OyB0ZXh0LWFsaWduOmxlZnQ7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBsaW5lLWhlaWdodDoxLjVyZW07IHBhZGRpbmctbGVmdDozMHB4OyB9IC50ZXN0ZHJpdmVJY29ueyBmb250LXNpemU6MS4zNzVyZW0gOyBtYXJnaW4tcmlnaHQ6MjBweDsgfSAucHJpY2VEaXZ7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjsgcGFkZGluZzowIDIwcHggMCAxMHB4OyBmbGV4LWZsb3c6d3JhcDsgfSAucHJpY2VNc2dEaXZ7IGZvbnQtc2l6ZTowLjc1cmVtICFpbXBvcnRhbnQ7IGRpc3BsYXk6YmxvY2s7IHdpZHRoOjUwJTsgdGV4dC1hbGlnbjpyaWdodCFpbXBvcnRhbnQ7IGNvbG9yOiM2ZDZkNmQgIWltcG9ydGFudDsgfSAucHJpY2VEaXZQcmljZS5tdWx0aWZlZXN7IGZvbnQtc2l6ZToxcmVtOyBjb2xvcjojNzA3MDcwOyB9IC5wcmljZURpdlByaWNleyBmb250LXNpemU6MS44NzVyZW0gOyBjb2xvcjpibGFjazsgfSAuaGFzQXZnIC5wcmljZURpdlByaWNleyBmb250LXNpemU6MS41NjNyZW0gOyB9IC5wcmljZURpc2NsYWltZXJEaXZ7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6ZW5kOyB3aWR0aDoxMDAlOyB9ICN2ZHBfcHJpY2VfYmxvY2sgLnByaWNlRGlzY2xhaW1lckRpdnsgcGFkZGluZzowIDIwcHggMCAxMHB4OyB3aWR0aDp1bnNldDsgfSAucHJpY2VEaXNjbGFpbWVyU3BhbnsgZm9udC1zaXplOjAuNzVyZW0gIWltcG9ydGFudDsgZGlzcGxheTpibG9jazsgdGV4dC1hbGlnbjpyaWdodCFpbXBvcnRhbnQ7IGNvbG9yOiM2ZDZkNmQgIWltcG9ydGFudDsgfSAucHJpY2VCYXJ7IGJvcmRlci10b3A6MXB4IHNvbGlkICNiOGI4Yjg7IG1hcmdpbjowIDEwcHggMCA1NSU7IH0gLmNhckluZm9zRGl2eyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyBib3JkZXItYm90dG9tOjFweCBzb2xpZCBibGFjazsgcGFkZGluZzo1cHggMSUgMHB4IDElOyB9IC5jYXJJbmZvUHJpY2VEaXZ7IGNvbG9yOiM3NTc1NzU7IGZvbnQtc2l6ZTowLjc1cmVtIDsgZGlzcGxheTppbmxpbmUtYmxvY2s7IG92ZXJmbG93OmhpZGRlbjsgfSAuY2FySW5mb1ByaWNlRGl2IGl7IG1hcmdpbi1yaWdodDoycHggfSAuY2FySW5mb0tNeyB0ZXh0LWFsaWduOmxlZnQ7IHdpZHRoOjI4JTsgfSAuY2FySW5mb01pZGRsZXsgdGV4dC1hbGlnbjpjZW50ZXI7IHdpZHRoOjI3JTsgfSAuY2FySW5mb0NvbG9yeyB0ZXh0LWFsaWduOnJpZ2h0OyB3aWR0aDo0MCU7IH0gI3ZkcHZpZGVveyBtYXgtd2lkdGg6MTAwdnc7IH0gI3ZkcHZpZGVvID4gKnsgbWF4LXdpZHRoOjEwMCU7IH0gLmJkY3R7IHBhZGRpbmc6MCAxMHB4OyBtYXJnaW46MjBweCAwOyBmbG9hdDpsZWZ0OyB3aWR0aDoxMDAlOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IGZvbnQtc2l6ZTowLjg1cmVtOyBjb2xvcjojNjY2OyB9IC5iZGN0IEgzeyBwYWRkaW5nOjA7IG1hcmdpbjowIDAgNXB4IDA7IGZvbnQtc2l6ZToxcmVtOyB9IC5iZGN0ID4gZGl2eyBwYWRkaW5nOjE1cHg7IGJhY2tncm91bmQtY29sb3I6I2VlZTsgYm9yZGVyLXJhZGl1czo3cHg7IH0gLnByb21vLWJ0biB7IHBhZGRpbmc6MTVweCAyMHB4OyBtYXJnaW46YXV0bzsgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsgYm9yZGVyOjFweCBzb2xpZDsgdGV4dC10cmFuc2Zvcm06dmFyKC0tY2VydC10eHQtdHJhbnNmb3JtLCB2YXIoLS10eHQtdXBwZXIpKTsgZm9udC13ZWlnaHQ6Ym9sZDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGJvcmRlci1jb2xvcjojZmZmZmZmOyBjb2xvcjojZmZmZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiMxYjFiMWI7IGJvcmRlci1yYWRpdXM6MjVweDsgZm9udC1zaXplOjAuOXJlbTsgfSAuLXRleHQtdXBwZXJjYXNlLCAuLXVwcGVyY2FzZSwgLnRleHQtdXBwZXJjYXNlIHsgdGV4dC10cmFuc2Zvcm06dmFyKC0tdHh0LXVwcGVyKTsgfSAjZGFya3Rvb2x0aXAtY2FyUHJpY2VJbml0aWFsVG9vbFRpcEljb257IHdpZHRoOjIwMHB4OyB9Ci8qKiAvY3NzL25ld2NhcnMuY3NzICoqLwouZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIgLmRpdkNhdGVnb3J5Qm94V3JhcHBlcnsgbWFyZ2luLWJvdHRvbTo0MHB4OyB9IC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyOmxhc3QtY2hpbGR7IG1hcmdpbi1ib3R0b206MDsgfSBIMS5kZWZhdWx0LmlzU2luZ2xlVGl0bGUuaXNCb3R0b21Cb3JkZXJlZCwgLmRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIC5kaXZDYXRlZ29yeUJveFdyYXBwZXIgSDJ7IGJvcmRlcjowOyB9IC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIC5kaXZDYXJzQm94V3JhcHBlciB7IGRpc3BsYXk6ZmxleDsgZmxleC1mbG93OnJvdyB3cmFwOyB9IC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIC5kaXZDYXJTaW5nbGVPdXRlckJveHsgcG9zaXRpb246cmVsYXRpdmU7IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQtY29sb3I6I2ZmZjsgYm9yZGVyLXJhZGl1czo3cHg7IG1hcmdpbjowIDAgMjBweCAwOyBwYWRkaW5nOjEwcHg7IGJvcmRlcjoxcHggI2FhYSBzb2xpZDsgYm94LXNpemluZzpib3JkZXItYm94OyB3aWR0aDoxMDAlOyBvdmVyZmxvdzpoaWRkZW47IH0gLmRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIC5kaXZDYXRlZ29yeUJveFdyYXBwZXIgLmRpdkNhclNpbmdsZU91dGVyQm94LmRpdk1ha2VMb2dvT25seXsgaGVpZ2h0OjE1NnB4OyB3aWR0aDphdXRvOyBtYXJnaW4tdG9wOjIwcHg7IHBhZGRpbmc6MjBweDsgYm9yZGVyLWNvbG9yOiNlZWU7IHRleHQtYWxpZ246Y2VudGVyOyB9IC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIC5kaXZDYXJTaW5nbGVPdXRlckJveC5kaXZNYWtlTG9nb09ubHkgSU1HIHsgaGVpZ2h0OjEwMCU7IHdpZHRoOmF1dG87IH0gLmRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIC5kaXZDYXRlZ29yeUJveFdyYXBwZXIgLmRpdkNhclNpbmdsZU91dGVyQm94OmFjdGl2ZSB7IGJvcmRlci1jb2xvcjojNjY2OyB9IC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIC5kaXZDYXJTaW5nbGVPdXRlckJveCAuZGl2Q2FyU2luZ2xlSW5uZXJCb3h7IG1hcmdpbjowOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgZmxvYXQ6bGVmdDsgb3BhY2l0eToxOyBvdmVyZmxvdzpoaWRkZW47IHBvc2l0aW9uOnJlbGF0aXZlOyB9IC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIC5kaXZDYXJTaW5nbGVPdXRlckJveCAuZGl2Q2FyU2luZ2xlSW5uZXJCb3ggLmRpdkNhclRpdGxlQ29udGFpbmVyeyBjbGVhcjpib3RoOyB3aWR0aDo3NSU7IH0gLmRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIC5kaXZDYXRlZ29yeUJveFdyYXBwZXIgLmRpdkNhclNpbmdsZU91dGVyQm94IC5kaXZDYXJTaW5nbGVJbm5lckJveCAuZGl2Q2FyVGl0bGVDb250YWluZXIgQXsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGRpc3BsYXk6YmxvY2s7IH0gLmRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIC5kaXZDYXRlZ29yeUJveFdyYXBwZXIgLmRpdkNhclNpbmdsZU91dGVyQm94IC5kaXZDYXJTaW5nbGVJbm5lckJveCAuZGl2Q2FyVGl0bGVDb250YWluZXIgc3Bhbi5zcGFuQ2FyTWFrZXsgZm9udC13ZWlnaHQ6bm9ybWFsOyBmb250LXNpemU6MS4wcmVtOyBsaW5lLWhlaWdodDoxLjJyZW07IHdpZHRoOmF1dG87IGhlaWdodDphdXRvOyBjb2xvcjojMWIxYjFiOyB9IC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIC5kaXZDYXJTaW5nbGVPdXRlckJveCAuZGl2Q2FyU2luZ2xlSW5uZXJCb3ggLmRpdkNhclRpdGxlQ29udGFpbmVyIHNwYW4uc3Bhbk1vZGVsTmFtZXsgZm9udC13ZWlnaHQ6Ym9sZDsgbGluZS1oZWlnaHQ6MS40cmVtOyBmb250LXNpemU6MS40cmVtOyB3aWR0aDphdXRvOyBoZWlnaHQ6YXV0bzsgY29sb3I6cmdiKDI3LDI3LDI3KTsgfSAuZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIgLmRpdkNhdGVnb3J5Qm94V3JhcHBlciAuZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggLmRpdkNhclNpbmdsZUlubmVyQm94IC5kaXZDYXJUaXRsZUNvbnRhaW5lciAuZGl2TmV3Q2FyU3RhcnRQcmljZSwgLmRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIC5kaXZDYXRlZ29yeUJveFdyYXBwZXIgLmRpdkNhclNpbmdsZU91dGVyQm94IC5kaXZDYXJTaW5nbGVJbm5lckJveCAuZGl2Q2FyVGl0bGVDb250YWluZXIgLmRpdk5ld0NhclByb21vUHJpY2V7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgZm9udC1zaXplOjFyZW07IHdpZHRoOmF1dG87IGhlaWdodDphdXRvOyBsaW5lLWhlaWdodDpub3JtYWw7IH0gLmRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIC5kaXZDYXRlZ29yeUJveFdyYXBwZXIgLmRpdkNhclNpbmdsZU91dGVyQm94IC5kaXZDYXJTaW5nbGVJbm5lckJveCAuZGl2Q2FySW1hZ2VDb250YWluZXJ7IHBvc2l0aW9uOnJlbGF0aXZlOyB3aWR0aDoxMDAlOyBtYXJnaW4tdG9wOjBweDsgbWFyZ2luLWJvdHRvbTotMTBweDsgbWluLWhlaWdodDoyNTBweDsgfSAuZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIgLmRpdkNhdGVnb3J5Qm94V3JhcHBlciAuZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggLmRpdkNhclNpbmdsZUlubmVyQm94IC5kaXZDYXJJbWFnZUNvbnRhaW5lciBBeyBmbG9hdDpsZWZ0OyBjbGVhcjpib3RoOyB3aWR0aDoxMDAlOyB9IC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIC5kaXZDYXJTaW5nbGVPdXRlckJveCAuZGl2Q2FyU2luZ2xlSW5uZXJCb3ggLmRpdkNhckltYWdlQ29udGFpbmVyIElNR3sgd2lkdGg6MTAwJTsgaGVpZ2h0OmF1dG87IH0gZGl2LmRpdkNhckZvb3RlckNvbnRhaW5lcnsgcG9zaXRpb246cmVsYXRpdmU7IGJvdHRvbTowcHg7IGxlZnQ6MDsgcmlnaHQ6MDsgd2lkdGg6MTAwJTsgfSBkaXYuY2FyUGF5bWVudFdyYXBwZXJ7IGhlaWdodDo2cmVtOyB9IC5yZWJhdGVUYWd7IHBhZGRpbmc6NXB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDoxMHB4OyByaWdodDoxMHB4OyBiYWNrZ3JvdW5kOiNlMzE3M2UhaW1wb3J0YW50OyBjb2xvcjojZmZmZmZmIWltcG9ydGFudDsgdGV4dC1zaGFkb3c6bm9uZSFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6NXB4OyB9IC5yZWJhdGVUYWcgc3Bhbi5yZWJhdGVUZXh0eyBmb250LXNpemU6MC44cmVtOyBsaW5lLWhlaWdodDoxcmVtOyB9IC5yZWJhdGVUYWcgc3Bhbi5yZWJhdGVBbW91bnR7IGRpc3BsYXk6YmxvY2s7IGZvbnQtd2VpZ2h0OjcwMDsgZm9udC1zaXplOjFyZW07IGxpbmUtaGVpZ2h0OjEuMnJlbTsgfSAuZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIgLmRpdkNhdGVnb3J5Qm94V3JhcHBlciAuZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggLmRpdkNhclNpbmdsZUlubmVyQm94IC5kaXZDYXJQYXltZW50Q29udGFpbmVyeyBwb3NpdGlvbjpyZWxhdGl2ZTsgdGV4dC1hbGlnbjpjZW50ZXI7IGJhY2tncm91bmQtY29sb3I6I2YzZjNmMzsgd2lkdGg6MTAwJTsgYm9yZGVyLXJhZGl1czowIDAgN3B4IDdweDsgcGFkZGluZzoxMHB4IDVweDsgYm94LXNpemluZzpib3JkZXItYm94OyB9IC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIC5kaXZDYXJTaW5nbGVPdXRlckJveCAuZGl2Q2FyU2luZ2xlSW5uZXJCb3ggLmRpdkNhclBheW1lbnRDb250YWluZXIgYXsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHBvc2l0aW9uOnJlbGF0aXZlOyB9IC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIC5kaXZDYXJTaW5nbGVPdXRlckJveCAuZGl2Q2FyU2luZ2xlSW5uZXJCb3ggLmRpdkNhclBheW1lbnRDb250YWluZXIgLnBheW1lbnRMaW5lMnsgZm9udC1zaXplOjEuM3JlbTsgY29sb3I6YmxhY2s7IH0gLmRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIC5kaXZDYXRlZ29yeUJveFdyYXBwZXIgLmRpdkNhclNpbmdsZU91dGVyQm94IC5kaXZDYXJTaW5nbGVJbm5lckJveCAuZGl2Q2FyUGF5bWVudENvbnRhaW5lciAucGF5bWVudExpbmUyIHNwYW57IGNvbG9yOiNlMzE3M2U7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gLmRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIC5kaXZDYXRlZ29yeUJveFdyYXBwZXIgLmRpdkNhclNpbmdsZU91dGVyQm94IC5kaXZDYXJTaW5nbGVJbm5lckJveCAuZGl2Q2FyUGF5bWVudENvbnRhaW5lciAucGF5bWVudExpbmUzeyBmb250LXNpemU6MC45cmVtOyBsaW5lLWhlaWdodDoxcmVtOyBjb2xvcjpncmV5OyB9IC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIC5kaXZDYXJTaW5nbGVPdXRlckJveCAuZGl2Q2FyU2luZ2xlSW5uZXJCb3ggLmRpdkNhclBheW1lbnRDb250YWluZXIgLnBheW1lbnRMaW5lMXsgZm9udC1zaXplOjAuOXJlbTsgbGluZS1oZWlnaHQ6MXJlbTsgY29sb3I6Z3JleTsgfSBkaXYuZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIgZGl2LmRpdkNhdGVnb3J5Qm94V3JhcHBlciBkaXYuZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggZGl2LmRpdkNhclNpbmdsZUlubmVyQm94IGRpdi5kaXZDYXJDb250YWN0Q1RBQ29udGFpbmVyeyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7IH0gZGl2LmRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIGRpdi5kaXZDYXRlZ29yeUJveFdyYXBwZXIgZGl2LmRpdkNhclNpbmdsZU91dGVyQm94IGRpdi5kaXZDYXJTaW5nbGVJbm5lckJveCBkaXYuZGl2Q2FyUGF5bWVudENvbnRhaW5lcldpdGhDVEF7IH0gLmRpdkNhclNpbmdsZU91dGVyQm94IC5kaXZDYXJQYXltZW50Q29udGFpbmVyVG9vbHRpcHsgZGlzcGxheTppbmxpbmUtdGFibGU7IHBhZGRpbmc6MCAxMHB4OyBjdXJzb3I6cG9pbnRlcjsgfSAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIC5kaXZDYXJTaW5nbGVPdXRlckJveCAuZGl2Q2FyUGF5bWVudENhbGN1bGF0b3IgeyBwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDoxMCU7IH0gLmRpdkNhdGVnb3J5Qm94V3JhcHBlciAuZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggLnBheW1lbnRJbmZvQnViYmxlIHsgcG9zaXRpb246YWJzb2x1dGU7IHJpZ2h0OjEwJTsgZGlzcGxheTppbmxpbmUtYmxvY2s7IGZvbnQtc2l6ZToxLjU2M3JlbSA7IHRvcDozMCU7IGNvbG9yOiMwMDA7IH0gLk5ld1NycDJNb2JpbGUgSDEuZGVmYXVsdHsgZm9udC1zaXplOjEuN3JlbTsgbGluZS1oZWlnaHQ6MS43cmVtOyBjb2xvcjojMWIxYjFiOyBmb250LXdlaWdodDpub3JtYWw7IGNsZWFyOmJvdGg7IHBhZGRpbmc6MCAwIDEwcHggMDsgd2lkdGg6MTAwJTsgbWFyZ2luLWJvdHRvbToxMHB4OyBib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZGRkOyB9IC5OZXdTcnAyTW9iaWxlIEgxLmRlZmF1bHQgQXsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0gLk5ld1NycDJNb2JpbGUgSDEuZGVmYXVsdCBJLmljb24geyBib3JkZXItcmFkaXVzOjMycHg7IHdpZHRoOjMycHg7IGhlaWdodDozMnB4OyBwYWRkaW5nLXRvcDowOyBwYWRkaW5nLWxlZnQ6MTBweDsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjEuMTI1cmVtIDsgbWFyZ2luLXJpZ2h0OjVweDsgYm94LXNpemluZzpib3JkZXItYm94OyBsaW5lLWhlaWdodDozMHB4OyBib3JkZXI6MXB4IHNvbGlkICNmZmZmZmY7IGNvbG9yOiNmZmZmZmY7IGJhY2tncm91bmQtY29sb3I6IzFiMWIxYjsgfSAuTmV3U3JwMk1vYmlsZSBIMS5kZWZhdWx0IEkuaWNvbi5tdWx0aUxpbmVIMXsgbWFyZ2luLXRvcDowcHg7IH0gLk5ld1NycDJNb2JpbGUgSDEuZGVmYXVsdCBJLmljb24uc2luZ2xlTGluZUgxeyBtYXJnaW4tdG9wOjBweDsgfSAuTmV3U3JwMk1vYmlsZSBIMS5kZWZhdWx0ID4gRElWeyBkaXNwbGF5OnRhYmxlLXJvdzsgfSAuTmV3U3JwMk1vYmlsZSBIMS5kZWZhdWx0ID4gRElWIERJVjpudGgtY2hpbGQoMSl7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gLk5ld1NycDJNb2JpbGUgSDEuZGVmYXVsdCA+IERJViBESVY6bnRoLWNoaWxkKDIpeyBmb250LXdlaWdodDpub3JtYWw7IGNvbG9yOiM3NTc1NzU7IGZvbnQtc2l6ZToxLjFyZW07IGxpbmUtaGVpZ2h0OjEuMnJlbTsgfSAuTmV3U3JwMk1vYmlsZSBIMS5kZWZhdWx0ID4gRElWIERJVjpudGgtY2hpbGQoMyl7IGZvbnQtc2l6ZTowLjhyZW07IGNvbG9yOiNiYmI7IHBhZGRpbmctdG9wOjVweDsgfSAuTmV3U3JwMk1vYmlsZSBIMi5kZWZhdWx0eyBmb250LXNpemU6MS40cmVtOyBsaW5lLWhlaWdodDoxLjRyZW07IGNvbG9yOiMxYjFiMWI7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgY2xlYXI6Ym90aDsgcGFkZGluZzoyMHB4IDA7IG1hcmdpbjowOyB9IC5OZXdTcnAyTW9iaWxlIEgyLmRlZmF1bHQgSS5pY29uIHsgYm9yZGVyLXJhZGl1czoyOHB4OyB3aWR0aDoyOHB4OyBoZWlnaHQ6MjhweDsgcGFkZGluZy10b3A6MDsgcGFkZGluZy1sZWZ0OjlweDsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjFyZW0gOyBsaW5lLWhlaWdodDoyNnB4OyBtYXJnaW4tcmlnaHQ6NXB4OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IGJvcmRlcjoxcHggc29saWQgI2ZmZmZmZjsgY29sb3I6I2ZmZmZmZjsgYmFja2dyb3VuZC1jb2xvcjojMWIxYjFiOyB9IC5OZXdTcnAyTW9iaWxlIEgyLmRlZmF1bHQgSS5pY29uLm11bHRpTGluZUgyeyBtYXJnaW4tdG9wOjBweDsgfSAuTmV3U3JwMk1vYmlsZSBIMi5kZWZhdWx0IEkuaWNvbi5zaW5nbGVMaW5lSDJ7IG1hcmdpbi10b3A6MHB4OyB9IC5OZXdTcnAyTW9iaWxlIEgyLmRlZmF1bHQgPiBESVZ7IGRpc3BsYXk6dGFibGUtcm93OyB9IC5OZXdTcnAyTW9iaWxlIEgyLmRlZmF1bHQgPiBESVYgRElWOm50aC1jaGlsZCgxKXsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAuTmV3U3JwMk1vYmlsZSBIMi5kZWZhdWx0ID4gRElWIERJVjpudGgtY2hpbGQoMil7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgY29sb3I6Izc1NzU3NTsgZm9udC1zaXplOjFyZW07IGxpbmUtaGVpZ2h0OjFyZW07IH0gLk5ld1NycDIuTmV3U3JwMk1vYmlsZSBkaXYuTWFpbkJveExheWVyIGRpdi5PdXRlckJveExheWVyIHsgcGFkZGluZzoxMHB4OyBmbG9hdDpsZWZ0OyB3aWR0aDoxMDAlOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0gLmNhcl90ZXh0IGEge3RleHQtZGVjb3JhdGlvbjpub25lOyBjb2xvcjojMWIxYjFiOyBsaW5lLWhlaWdodDoxLjE7fSAuY2FyX3RleHQgYTpob3ZlciB7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7IGNvbG9yOiMxYjFiMWJ9IC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIC5kaXZDYXJTaW5nbGVPdXRlckJveCAuZGl2Q2FyU2luZ2xlSW5uZXJCb3ggLmRpdkNhclRpdGxlQ29udGFpbmVyIC5kaXZDYXJJblN0b2NrTGlua3sgYmFja2dyb3VuZC1jb2xvcjojZWZlZmVmOyBwYWRkaW5nOjNweCA4cHg7IGJvcmRlci1yYWRpdXM6M3B4OyB3aWR0aDpmaXQtY29udGVudDsgY29sb3I6IzAwMDsgbWFyZ2luLXRvcDoxMHB4OyBwb3NpdGlvbjpyZWxhdGl2ZTsgei1pbmRleDozOyB9IC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIC5kaXZDYXJTaW5nbGVPdXRlckJveCAuZGl2Q2FyU2luZ2xlSW5uZXJCb3ggLmRpdkNhclRpdGxlQ29udGFpbmVyIC5kaXZDYXJJblN0b2NrTGluayBheyBjb2xvcjojMDAwOyB9IC5kaXZEaXNjbGFpbWVyQmxvY2t7IGJhY2tncm91bmQtY29sb3I6I2Y1ZjVmNTsgYm9yZGVyLXJhZGl1czozcHg7IH0gLmRpdkRpc2NsYWltZXJCbG9ja0NvbnRlbnR7IHBhZGRpbmc6MTVweCAwOyB9IC5kaXZEaXNjbGFpbWVyQmxvY2tUaXRsZXsgaGVpZ2h0OmF1dG87IGRpc3BsYXk6YmxvY2s7IGZvbnQtd2VpZ2h0OmJvbGQ7IHBhZGRpbmc6MCA0MHB4IDEwcHg7IGJhY2tncm91bmQ6bm9uZTsgbWFyZ2luOjA7IH0gLmRpdkRpc2NsYWltZXJCbG9ja1RleHR7IHBhZGRpbmc6MCA0MHB4OyBiYWNrZ3JvdW5kOm5vbmU7IG1hcmdpbjowOyB9IC5kaXZGaWx0ZXJPdXRlckJveCAuZGl2RmlsdGVyVGl0bGV7IGZvbnQtd2VpZ2h0OmJvbGQ7IHBhZGRpbmctYm90dG9tOjEwcHg7IHBhZGRpbmctdG9wOjIwcHg7IGZvbnQtc2l6ZToxcmVtIDsgfSAuZGl2RmlsdGVyT3V0ZXJCb3ggdWwgbGkgLmZpbHRlckNoZWNrLCAuZGl2RmlsdGVyT3V0ZXJCb3ggdWwgbGkgLnJhZGlvU29ydHsgcG9zaXRpb246YWJzb2x1dGU7IG9wYWNpdHk6MDsgd2lkdGg6MXB4OyBoZWlnaHQ6MXB4OyBvdmVyZmxvdzpoaWRkZW47IGNsaXA6cmVjdCgwIDAgMCAwKTsgfSAuZGl2RmlsdGVyT3V0ZXJCb3ggdWwgbGkgLmZpbHRlckNoZWNrKy5maWx0ZXJTcGFuLCAuZGl2RmlsdGVyT3V0ZXJCb3ggdWwgbGkgLnJhZGlvU29ydCsuZmlsdGVyU3BhbnsgYmFja2dyb3VuZC1jb2xvcjojRjZGNkY2OyBjb2xvcjojMzMzMzMzOyB9IC5kaXZGaWx0ZXJPdXRlckJveCB1bCBsaSAuZmlsdGVyQ2hlY2s6Y2hlY2tlZCsuZmlsdGVyU3BhbiwgLmRpdkZpbHRlck91dGVyQm94IHVsIGxpIC5yYWRpb1NvcnQ6Y2hlY2tlZCsuZmlsdGVyU3BhbnsgYmFja2dyb3VuZC1jb2xvcjojNjY2NjY2OyBjb2xvcjojRkZGOyB9IC5kaXZGaWx0ZXJPdXRlckJveCB1bCB7IGRpc3BsYXk6ZmxleDsgZmxleC13cmFwOndyYXA7IGNvbHVtbi1nYXA6MTBweDsgcm93LWdhcDo1cHg7IHBhZGRpbmc6MDsgbWFyZ2luOjA7IGFsaWduLWl0ZW1zOnN0cmV0Y2g7IH0gLmRpdkZpbHRlck91dGVyQm94IHVsIGxpeyBmbGV4OjAgMCBjYWxjKDUwJSAtIDVweCk7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfSAuZGl2RmlsdGVyT3V0ZXJCb3ggdWwgbGkgLmZpbHRlclNwYW57IGRpc3BsYXk6ZmxleDsgcGFkZGluZzo3cHggMjBweDsgYm9yZGVyOm5vbmU7IGJvcmRlci1yYWRpdXM6NXB4OyBjdXJzb3I6cG9pbnRlcjsgdGV4dC1hbGlnbjpjZW50ZXI7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXNpemU6MC44NzVyZW0gOyB0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgMC4zcyBlYXNlOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IG1hcmdpbi10b3A6NXB4OyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyB9IC5NYWluQm94TGF5ZXIgLmZpbHRlclRvZ2dsZVdyYXBwZXIgLmZpbHRlclRvZ2dsZUJ0biB7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyBwYWRkaW5nOjEwcHggMjBweDsgYmFja2dyb3VuZC1jb2xvcjojZTMxNzNlOyBjb2xvcjojZmZmZmZmOyBib3JkZXI6bm9uZTsgYm9yZGVyLXJhZGl1czo1cHg7IGN1cnNvcjpwb2ludGVyOyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC1zaXplOjFyZW0gOyB0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgMC4zcyBlYXNlOyB3aWR0aDoxMDAlOyB0ZXh0LWRlY29yYXRpb246bm9uZSFpbXBvcnRhbnQ7IH0gLk1haW5Cb3hMYXllciAuc2VsZWN0VG9nZ2xlV3JhcHBlcnsgZGlzcGxheTpmbGV4OyBmbGV4LXdyYXA6d3JhcDsgY29sdW1uLWdhcDoxMHB4OyByb3ctZ2FwOjVweDsgcGFkZGluZzowOyBtYXJnaW46MDsgYWxpZ24taXRlbXM6c3RyZXRjaDsgfSAuTWFpbkJveExheWVyIC5zZWxlY3RUb2dnbGVXcmFwcGVyIC5zZWxlY3RBbGxUb2dnbGVCdG4sIC5NYWluQm94TGF5ZXIgLnNlbGVjdFRvZ2dsZVdyYXBwZXIgLnVuc2VsZWN0QWxsVG9nZ2xlQnRuIHsgZGlzcGxheTppbmxpbmUtYmxvY2s7IHBhZGRpbmc6MTBweCAzcHg7IGJhY2tncm91bmQtY29sb3I6I2UzMTczZTsgY29sb3I6I2ZmZmZmZjsgYm9yZGVyOm5vbmU7IGJvcmRlci1yYWRpdXM6NXB4OyBjdXJzb3I6cG9pbnRlcjsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtc2l6ZToxcmVtIDsgdHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIDAuM3MgZWFzZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmUhaW1wb3J0YW50OyBmbGV4OjAgMCBjYWxjKDUwJSAtIDVweCk7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfSAuZGl2RmlsdGVyT3V0ZXJCb3ggZGl2LmRpdlByaWNlUmFuZ2VTbGlkZXIgeyBtYXJnaW46MHB4IDAgNDBweCAwIWltcG9ydGFudDsgfSAuZGl2UHJpY2VSYW5nZVNsaWRlciA+IC5kaXZTcGFuLmRpdlNwYW4xMjpub3QoLmRpdkZpbHRlclRpdGxlKSB7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyB9IC5kaXZQcmljZVJhbmdlU2xpZGVyIC5yYW5nZS1zbGlkZXItbGVmdCwgLmRpdlByaWNlUmFuZ2VTbGlkZXIgLnJhbmdlLXNsaWRlci1yaWdodCB7IHdpZHRoOmF1dG87IG1pbi13aWR0aDo0MHB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAuZGl2UHJpY2VSYW5nZVNsaWRlciAucmFuZ2Utc2xpZGVyLnVpLXNsaWRlciB7IGZsZXg6MSAxIGF1dG87IG1heC13aWR0aDo1MDBweDsgfSAuTWFpbkJveExheWVyIC5zaWRlU2lkZWJhciB7IHBvc2l0aW9uOmZpeGVkOyB0b3A6MDsgbGVmdDowOyB3aWR0aDozMDBweDsgaGVpZ2h0OjEwMCU7IGJhY2tncm91bmQtY29sb3I6I2ZmZjsgYm94LXNoYWRvdzotMnB4IDAgOHB4IHJnYmEoMCwwLDAsMC4zKTsgcGFkZGluZzowIDIwcHggMjBweCAyMHB4OyB6LWluZGV4OjEwMDA7IG92ZXJmbG93LXk6YXV0bzsgb3ZlcmZsb3cteDpoaWRkZW47IG1heC13aWR0aDoxMDAlOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IHRyYW5zZm9ybTp0cmFuc2xhdGVYKC0xMDAlKTsgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gMC4zcyBlYXNlOyB9IC5NYWluQm94TGF5ZXIgLnNpZGVTaWRlYmFyLm9wZW4geyB0cmFuc2Zvcm06dHJhbnNsYXRlWCgwKTsgZGlzcGxheTpibG9jazsgfSAuTWFpbkJveExheWVyIC5jbG9zZUJ0biB7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MTBweDsgcmlnaHQ6LTEwcHg7IGZvbnQtc2l6ZToxLjVyZW0gOyBiYWNrZ3JvdW5kOm5vbmU7IGJvcmRlcjpub25lOyBjdXJzb3I6cG9pbnRlcjsgei1pbmRleDoxMTsgfSAuTWFpbkJveExheWVyIC5zaWRlU2lkZWJhciAuZGl2RmlsdGVyQm94VGl0bGV7IGZvbnQtd2VpZ2h0OmJvbGQ7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IHBvc2l0aW9uOnN0aWNreTsgdG9wOjA7IGJhY2tncm91bmQtY29sb3I6I2ZmZjsgei1pbmRleDoxMDsgcGFkZGluZzoxMHB4IDAgMCAwOyB9IC5NYWluQm94TGF5ZXIgLnNpZGVTaWRlYmFyIC5zaWRlYmFySGVhZGVyIHsgcG9zaXRpb246c3RpY2t5OyB0b3A6MDsgYmFja2dyb3VuZC1jb2xvcjojZmZmOyB6LWluZGV4OjEwMDsgcGFkZGluZzoxMHB4IDAgMCAwOyBkaXNwbGF5OmZsZXg7IGp1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuOyBhbGlnbi1pdGVtczpjZW50ZXI7IH0KLyoqIC9jc3MvcmVkLmNzcyAqKi8KLm1lbnUgdWwgbGkgYSwgLm1lbnUgdWwgbGkgYTpob3ZlcnsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjRweDsgLW1vei1ib3JkZXItcmFkaXVzOjRweDsgYm9yZGVyLXJhZGl1czo0cHg7IGNvbG9yOiNmZmZmZmY7IGZpbGw6I2ZmZmZmZjsgdGV4dC1hbGlnbjpsZWZ0OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjEuMWVtOyBmb250LXdlaWdodDpib2xkOyBwYWRkaW5nOjVweCAwIDVweCA3cHg7IGJhY2tncm91bmQ6IzFiMWIxYjsgfSAudG9wbmF2IC5tZW51IHVsIGxpIGF7IGJhY2tncm91bmQ6I2ZmZmZmZjsgY29sb3I6IzFiMWIxYjsgZmlsbDojMWIxYjFiOyB9IC5tZW51IHVsIGxpIGE6aG92ZXJ7IGJvcmRlci1yYWRpdXM6M3B4IDNweCAwcHggMHB4OyB9IC5tZW51IC5wcm9tbyB7IG1hcmdpbjppbml0aWFsOyBtaW4taGVpZ2h0OmF1dG87IH0gLm1lbnUuYnVyZ2VyLWJ0bi1jb250YWluZXIgdWwgbGkgYSwgLm1lbnUuYnVyZ2VyLWJ0bi1jb250YWluZXIgdWwgbGkgYTpob3ZlcnsgYm9yZGVyLXJhZGl1czowOyB9IC5tb2JpbGVCdXR0b257IGNvbG9yOnJnYigyNTUsMjU1LDI1NSkgIWltcG9ydGFudDsgYmFja2dyb3VuZDpyZ2IoMjcsMjcsMjcpIWltcG9ydGFudDsgfSAubWVudSB1bCBsaSBhLmJsYWNrIHtiYWNrZ3JvdW5kOiMyMjI7fSAuaC1idXR0b25zIHVsIGxpIGEuYmxhY2sge2JhY2tncm91bmQ6IzAwMDtjb2xvcjojRkZGRkZGfSAuaC1idXR0b25zIHt9IC5oLWJ1dHRvbnMgdWwgbGkge2Zsb2F0OmxlZnQ7IGxpc3Qtc3R5bGU6bm9uZTsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbjowIDAgMTBweCAwcHg7ZGlzcGxheTpibG9jazsgdGV4dC1hbGlnbjpjZW50ZXI7fSAuaC1idXR0b25zIHVsIGxpIGEgeyBiYWNrZ3JvdW5kLWNvbG9yOnJnYigyNywyNywyNyk7IGNvbG9yOiNmZmY7IGZvbnQtd2VpZ2h0OmJvbGQ7IGRpc3BsYXk6YmxvY2s7IHBhZGRpbmc6NXB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NnB4OyAtbW96LWJvcmRlci1yYWRpdXM6NnB4OyBib3JkZXItcmFkaXVzOjZweDsgbWluLXdpZHRoOjk1cHg7IH0gLmRlYWxlcnBob25lIHVsIGxpIGEgeyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NHB4OyAtbW96LWJvcmRlci1yYWRpdXM6NHB4OyBib3JkZXItcmFkaXVzOjRweDsgY29sb3I6I2ZmZjsgdGV4dC1hbGlnbjpsZWZ0OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjEuMWVtOyBmb250LXdlaWdodDpib2xkOyBwYWRkaW5nOjEwcHg7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYmFja2dyb3VuZC1zaXplOjI1cHg7IGJhY2tncm91bmQtcG9zaXRpb246OTglIDZweDsgYmFja2dyb3VuZC1jb2xvcjojZDAwOyBiYWNrZ3JvdW5kLWltYWdlOnVybCgvaW1hZ2VzL2Fycm93LnBuZyk7IH0gLm1lbnUgbGkuaW52ZXJzZS1jb2xvciA+IGEgeyBjb2xvcjojZmZmZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiNlMzE3M2U7IGJvcmRlcjoxcHggc29saWQ7IH0gI2NoYXQtd2lkZ2V0LWNvbnRhaW5lciwgI2xpdmVfY2hhdF9zdGF0dXMsICNDaGF0RGl2LCAjcG9kaXVtLWJ1YmJsZSwgI2pjb250LCBqZGl2LCAjdHN3X3dyYXBwZXIsIC5mYl9kaWFsb2csIC5mYl9pZnJhbWVfd2lkZ2V0LCAuZmItY3VzdG9tZXJjaGF0LCAuZWstY2hhdCwgLm1hdGFkb3ItbGl2ZWNoYXQtMTIzNzg5LW1haW4td3JhcHBlciwgI21hdGFkb3ItY29ubmVjdC10ZXh0LWxhYmVsLCAjbWF0YWRvci1jb25uZWN0LXRleHQtbGFiZWwtYmFkZ2V7IHotaW5kZXg6MTAwMDAgIWltcG9ydGFudDsgfSBzdmcuY2hhdC1idWJibGV7IHdpZHRoOnJldmVydDsgaGVpZ2h0OnJldmVydDsgfSAuVXNlZFNycDJNb2JpbGUgaWZyYW1lI3BvZGl1bS1idWJibGV7IGJvdHRvbTozcmVtICFpbXBvcnRhbnQ7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAudHJhZGVJbkJhck11bHRpc2VsZWN0eyBtaW4td2lkdGg6MjI1cHg7IG1heC13aWR0aDoxMDAlIWltcG9ydGFudDsgfSAudWktbXVsdGlzZWxlY3QtbWVudS50cmFkZUluQmFyTXVsdGlzZWxlY3R7IHotaW5kZXg6MTAwMDAyMDsgbWF4LWhlaWdodDoxMTBweDsgb3ZlcmZsb3c6c2Nyb2xsOyB9IC5tdWx0aXNlbGVjdFZlaGljbGVPcHRpb25zeyBtYXJnaW4tdG9wOjVweDsgfSAubXVsdGlzZWxlY3RWZWhpY2xlT3B0aW9ucyBzcGFueyBmb250LXNpemU6MC45MzhyZW0gIWltcG9ydGFudDsgcGFkZGluZzowICFpbXBvcnRhbnQ7IG1hcmdpbjowICFpbXBvcnRhbnQ7IH0gLnRyYWRpbk5pdnsgd2lkdGg6MTAwJTsgcGFkZGluZzowLjRyZW07IGJvcmRlcjoxcHggc29saWQgI2E5YTlhOTsgYm9yZGVyLXJhZGl1czo1cHg7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAudHJhZGluTml2eyB3aWR0aDoxMDAlOyBwYWRkaW5nOjAuNXJlbTsgYm9yZGVyOjFweCBzb2xpZCAjYTlhOWE5OyBib3JkZXItcmFkaXVzOjVweDsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIC5uaXZNYWtlTW9kZWxTZWxlY3RDb250YWluZXJ7IHdpZHRoOjEwMCU7IGZvbnQtc2l6ZTowLjc1cmVtIDsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIC5uaXZNYWtlTW9kZWxTZWxlY3RDb250YWluZXIgLm5pdk1ha2VNb2RlbFNlbGVjdHsgZGlzcGxheTpub25lOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgLm5pdk1ha2VNb2RlbFNlbGVjdENvbnRhaW5lciAubml2TWFrZU1vZGVsU2VsZWN0TGFiZWx7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyBtYXJnaW46MCA1cHg7IGN1cnNvcjpwb2ludGVyOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgLm5pdk1ha2VNb2RlbFNlbGVjdENvbnRhaW5lciAubml2TWFrZU1vZGVsU2VsZWN0OmNoZWNrZWQrbGFiZWx7IGJvcmRlci1ib3R0b206MnB4IHNvbGlkIGJsYWNrOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgLnRyYWRlSW5CYXJNdWx0aXNlbGVjdHsgd2lkdGg6MTAwJSFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6MC4zcmVtIWltcG9ydGFudDsgYm9yZGVyLXdpZHRoOjFweCFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6MC4zcmVtIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiNhOWE5YTkhaW1wb3J0YW50OyBwYWRkaW5nOjAuM3JlbSFpbXBvcnRhbnQ7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAudHJhZGluU2VsZWN0UG9wdXB7IGNvbG9yOiMzYzM4MzY7IGZvbnQtc2l6ZToxcmVtOyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsMSk7IGJhY2tncm91bmQtcG9zaXRpb246OTUlIDUwJTsgLXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7IC1tb3otYXBwZWFyYW5jZTpub25lOyBtYXJnaW46NXB4IDAgMDsgcGFkZGluZzowLjNyZW0haW1wb3J0YW50OyB9Ci8qKiAvY3NzL2Rpdl9yYW5nZXNsaWRlci5jc3MgKiovCmRpdi5kaXZQcmljZVJhbmdlU2xpZGVyeyBtYXJnaW46MCAwIDEwcHggMDsgcGFkZGluZzowOyB9IGRpdi5kaXZQcmljZVJhbmdlU2xpZGVyIGRpdi5yYW5nZS1zbGlkZXItdGl0bGV7IGZvbnQtd2VpZ2h0OmJvbGQ7IHBhZGRpbmc6MCAwIDEwcHggMDsgfSBkaXYuZGl2UHJpY2VSYW5nZVNsaWRlciBkaXYucmFuZ2Utc2xpZGVyLXByaWNlc3sgcGFkZGluZzowIDAgMTVweCAwOyBmb250LXNpemU6MS4xMjVyZW0gOyB9IGRpdi5kaXZQcmljZVJhbmdlU2xpZGVyIGRpdi5yYW5nZS1zbGlkZXItcHJpY2VzIHNwYW4ucHJpY2UtbWlue30gZGl2LmRpdlByaWNlUmFuZ2VTbGlkZXIgZGl2LnJhbmdlLXNsaWRlci1wcmljZXMgc3Bhbi5wcmljZS1tYXh7fSBkaXYuZGl2UHJpY2VSYW5nZVNsaWRlciBkaXYucmFuZ2Utc2xpZGVyeyBib3JkZXItcmFkaXVzOjVweCAhaW1wb3J0YW50OyBoZWlnaHQ6MTBweDsgbWFyZ2luOjRweCA2cHggMCAtM3B4OyBwYWRkaW5nOjA7IGJvcmRlcjoxcHggc29saWQgI2NjYzsgfSBkaXYuZGl2UHJpY2VSYW5nZVNsaWRlciBkaXYucmFuZ2Utc2xpZGVyLWxlZnQsIGRpdi5kaXZQcmljZVJhbmdlU2xpZGVyIGRpdi5yYW5nZS1zbGlkZXItcmlnaHR7IGZvbnQtc2l6ZTowLjc1cmVtIDsgbGluZS1oZWlnaHQ6MjBweDsgY29sb3I6Izc1NzU3NTsgfSBkaXYuZGl2UHJpY2VSYW5nZVNsaWRlciBkaXYucmFuZ2Utc2xpZGVyLWxlZnR7IHRleHQtYWxpZ246bGVmdDsgfSBkaXYuZGl2UHJpY2VSYW5nZVNsaWRlciBkaXYucmFuZ2Utc2xpZGVyLXJpZ2h0eyB0ZXh0LWFsaWduOnJpZ2h0OyB9IGRpdi5kaXZQcmljZVJhbmdlU2xpZGVyIGRpdi5yYW5nZS1zbGlkZXIgZGl2LnVpLXNsaWRlci1yYW5nZXsgYmFja2dyb3VuZDojMWIxYjFiIWltcG9ydGFudDsgfSBkaXYuZGl2UHJpY2VSYW5nZVNsaWRlciBkaXYucmFuZ2Utc2xpZGVyIEEudWktc2xpZGVyLWhhbmRsZSwgZGl2LmRpdlByaWNlUmFuZ2VTbGlkZXIgZGl2LnJhbmdlLXNsaWRlciBzcGFuLnVpLXNsaWRlci1oYW5kbGV7IG1hcmdpbjotOHB4IDAgMCAtMTFweDsgYm9yZGVyOjFweCBzb2xpZCAjY2NjOyBwYWRkaW5nOjAgIWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czo1MHB4ICFpbXBvcnRhbnQ7IGJhY2tncm91bmQ6I2ZmZiAhaW1wb3J0YW50OyB0b3A6MDsgaGVpZ2h0OjI1cHg7IHdpZHRoOjI1cHg7IGN1cnNvcjpwb2ludGVyOyBvdXRsaW5lOm5vbmUgIWltcG9ydGFudDsgfSBkaXYuZGl2UHJpY2VSYW5nZVNsaWRlciBkaXYucmFuZ2Utc2xpZGVyIEEudWktc2xpZGVyLWhhbmRsZS51aS1zdGF0ZS1ob3ZlciwgZGl2LmRpdlByaWNlUmFuZ2VTbGlkZXIgZGl2LnJhbmdlLXNsaWRlciBBLnVpLXNsaWRlci1oYW5kbGUudWktc3RhdGUtYWN0aXZlLCBkaXYuZGl2UHJpY2VSYW5nZVNsaWRlciBkaXYucmFuZ2Utc2xpZGVyIHNwYW4udWktc2xpZGVyLWhhbmRsZS51aS1zdGF0ZS1ob3ZlciwgZGl2LmRpdlByaWNlUmFuZ2VTbGlkZXIgZGl2LnJhbmdlLXNsaWRlciBzcGFuLnVpLXNsaWRlci1oYW5kbGUudWktc3RhdGUtYWN0aXZleyBib3JkZXItY29sb3I6IzY2NjsgfSBkaXYuZGl2UHJpY2VSYW5nZVNsaWRlciBkaXYucmFuZ2Utc2xpZGVyIEEudWktc2xpZGVyLWhhbmRsZS51aS1zdGF0ZS1mb2N1cywgZGl2LmRpdlByaWNlUmFuZ2VTbGlkZXIgZGl2LnJhbmdlLXNsaWRlciBzcGFuLnVpLXNsaWRlci1oYW5kbGUudWktc3RhdGUtZm9jdXN7IG91dGxpbmU6bm9uZSAhaW1wb3J0YW50OyB9Ci8qKiAvY3NzL3BheW1lbnRDYWxjdWxhdG9yLmNzcyAqKi8KOmlzKCNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciwjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IpLmNhbGMtbW9iaWxlIHsgLS13cmFwLXBheW1lbnRzOndyYXA7IC0tbW9iaWxlLWRpc3BsYXk6bm9uZTsgLS1tb2ItZnVsbC13aWR0aDoxMDAlOyAtLXBheW1lbnQtbWluLXdpZHRoOjYuM3JlbTsgLS1oZWFkZXItZm9udC1zaXplOnZhcigtLWZzMik7IC0taGVhZGVyLWljb24tc2l6ZTp2YXIoLS1mczUpOyB9ICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lcnsgbWluLWhlaWdodDo0NTBweDsgY29sb3I6YmxhY2s7IH0gI3BheW1lbnRDYWxjdWxhdG9yUG9wdXBDb250YWluZXJ7IGJvcmRlcjo0cHggc29saWQgIzFiMWIxYjsgfSAjcGF5bWVudENhbGN1bGF0b3JQb3B1cENvbnRhaW5lcjpoYXMoLmNhbGMtbW9iaWxlKXsgYm94LXNpemluZzpib3JkZXItYm94OyB9ICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lci5jYWxjLW1vYmlsZSAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyLCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IuY2FsYy1tb2JpbGUgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcnsgb3ZlcmZsb3cteDp2aXNpYmxlOyBvdmVyZmxvdy15OnNjcm9sbDsgaGVpZ2h0OjM3MHB4OyBmbGV4LXdyYXA6d3JhcDsgfSAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyLCAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyV2l0aFRheGVzIHsgb3ZlcmZsb3cteDpzY3JvbGw7IGRpc3BsYXk6ZmxleDsgZ2FwOjEwcHg7IH0gLmZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXIsIC5maW5hbmNlTXVsdGlzdGVwTmV3Q2FsY3VsYXRvciAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyV2l0aFRheGVzIHsgd2lkdGg6MTAwJTsgfSAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyLmJveGVzNHsgd2lkdGg6NjQlOyB9IC5maW5hbmNlTXVsdGlzdGVwTmV3Q2FsY3VsYXRvciAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyLmJveGVzNCwgLmZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXJXaXRoVGF4ZXMuYm94ZXM0eyB3aWR0aDo4MCU7IH0gLnJldmVhbC1tb2RhbCAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyIHNwYW4sIC5yZXZlYWwtbW9kYWwgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcldpdGhUYXhlcyBzcGFueyBwYWRkaW5nOjAhaW1wb3J0YW50OyBtYXJnaW4tYm90dG9tOjAhaW1wb3J0YW50OyBjb2xvcjppbmhlcml0OyBmb250LXNpemU6aW5oZXJpdDsgfSAucGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlcnsgbWFyZ2luLWJvdHRvbTp2YXIoLS1zKTsgfSAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIuY2FsYy1tb2JpbGUgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXJ7IG1hcmdpbi1ib3R0b206MDsgfSAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyLmJveGVzNCAucGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlciwgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcldpdGhUYXhlcy5ib3hlczQgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXJ7IHdpZHRoOjI0JTsgfSAucGF5bWVudENhbGN1bGF0b3JMaW5leyBib3JkZXItYm90dG9tOjFweCBzb2xpZCBncmV5OyBtYXJnaW46MTBweCAwOyB9IC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRXcmFwcGVyIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRMaW5lMXsgZm9udC1zaXplOjAuNjg4cmVtIDsgfSAucmV2ZWFsLW1vZGFsIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRXcmFwcGVyIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRMaW5lMSBzcGFueyBmb250LXNpemU6MS43NXJlbSA7IGNvbG9yOiNlMzE3M2U7IH0gLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudExpbmUyeyBmb250LXNpemU6MC43NXJlbSA7IH0gLnJldmVhbC1tb2RhbCAucGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlciAucGF5bWVudENhbGN1bGF0b3JQYXltZW50TGluZTIgc3BhbnsgZm9udC1zaXplOjEuMzc1cmVtIDsgfSAucGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlciAucGF5bWVudENhbGN1bGF0b3JQYXltZW50TGluZTN7IGZvbnQtc2l6ZTowLjc1cmVtIDsgfSAucmV2ZWFsLW1vZGFsIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRXcmFwcGVyIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRMaW5lMyBzcGFueyBmb250LXNpemU6MS4yNXJlbSA7IH0gLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudExpbmU0eyBmb250LXNpemU6MC43NXJlbSA7IGNvbG9yOmdyZXk7IHdoaXRlLXNwYWNlOm5vcm1hbDsgfSAjcGF5bWVudENhbGN1bGF0b3JWZWhpY2xlSW1hZ2VEaXZ7IG1heC13aWR0aDozMyU7IHBvc2l0aW9uOmFic29sdXRlOyByaWdodDowOyB0b3A6LTUwJTsgZGlzcGxheTp2YXIoLS1tb2JpbGUtZGlzcGxheSwgaW5pdGlhbCk7IH0gLnBheW1lbnRDYWxjdWxhdG9yT3B0aW9uQ29udGFpbmVyeyB3aWR0aDptYXgodmFyKC0tbW9iLWZ1bGwtd2lkdGgsIDY2JSksIDIwcmVtKTsgfSAuY2FsYy1wYXltZW50c3sgbWF4LXdpZHRoOnZhcigtLW1vYi1mdWxsLXdpZHRoLCA2NiUpOyB9IC5jYWxjLXBheW1lbnRzIDppcygucHJpY2UtZnIsIC5wcmljZS1lbil7IHRleHQtYWxpZ246cmV2ZXJ0OyBtaW4td2lkdGg6dW5zZXQ7IH0gLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGVDb250YWluZXJ7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNjY2NjY2M7IH0gLmZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlQ29udGFpbmVyeyBtYXJnaW4tYm90dG9tOjEwcHg7IH0gLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGV7IGxpc3Qtc3R5bGU6bm9uZTsgcGFkZGluZzowIDA7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB9IC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlIGxpeyBwYWRkaW5nOjEwcHg7IGZsb2F0OmxlZnQ7IG1pbi13aWR0aDo1cmVtOyBjdXJzb3I6cG9pbnRlcjsgYm9yZGVyLXJhZGl1czo1cHggNXB4IDAgMDsgYm9yZGVyLWJvdHRvbTowcHg7IHRleHQtYWxpZ246Y2VudGVyOyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyB9IC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRUeXBlIGxpOmhvdmVyeyBiYWNrZ3JvdW5kLWNvbG9yOiNkOWQ5ZDk7IH0gLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGUgbGkuYWN0aXZlUGF5bWVudFR5cGV7IGJhY2tncm91bmQtY29sb3I6Izk4OTg5ODsgY29sb3I6d2hpdGU7IH0gLnBheW1lbnRDYWxjdWxhdG9ySW5wdXRDb250YWluZXJ7IG1hcmdpbi1ib3R0b206MTBweDsgfSAucGF5bWVudENhbGN1bGF0b3JJbnB1dENvbnRhaW5lciA+ICogeyBwYWRkaW5nLWJvdHRvbTowLjVyZW07IH0gLnBheW1lbnRDYWxjdWxhdG9ySW5wdXRDb250YWluZXIgbGFiZWx7IGNvbG9yOmdyZXk7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IG1hcmdpbi1sZWZ0OjNweDsgbWFyZ2luLWJvdHRvbTowOyB9IC5wYXltZW50Q2FsY3VsYXRvclRyaW1TZWxlY3R7IGJvcmRlci1yYWRpdXM6NXB4OyBwYWRkaW5nOjVweCA1cHg7IGZvbnQtc2l6ZToxcmVtIDsgbWluLXdpZHRoOjEwcmVtOyBtYXgtd2lkdGg6MjByZW07IC13ZWJraXQtYXBwZWFyYW5jZTpub25lOyAtbW96LWFwcGVhcmFuY2U6bm9uZTsgcGFkZGluZy1yaWdodDoyN3B4OyBiYWNrZ3JvdW5kLWltYWdlOnVybCgnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQWgwbEVRVlE0VDkzVE1RckNVQXpHOFY5eDhRemlpWVN1WGR6RkM3aDRBY0VMT1BRQWRYWW92WkNIRUFUbGdRVjVHRlRlMW96Smx6L2tTMUlwaktxdzN3UUJWeXkrK0pJMHkxR1RlN0RDQmJNQWNrZU5JUUtrL0JhbkFMQkIrMTZMdG5ERUxvTWNzTS9CRVNEbHoyaGVEUjNXZVB3S1NMbzVlb3h6M3o2Tk5jRkQrdnUzaWoxNEFxei9EeEdiS0I3Q0FBQUFBRWxGVGtTdVFtQ0MnKTsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOjk1JSBjZW50ZXI7IGJvcmRlci1jb2xvcjojYTlhOWE5OyBjb2xvcjppbmhlcml0OyBib3gtc2hhZG93Om5vbmU7IC13ZWJraXQtYm94LXNoYWRvdzpub25lOyB9IC5wYXltZW50Q2FsY3VsYXRvckludGVydmFsLCAuZDJjZm9ybSAucGF5bWVudENhbGN1bGF0b3JJbnRlcnZhbCB7IGJvcmRlci1yYWRpdXM6NXB4OyBwYWRkaW5nOjVweCA1cHg7IGZvbnQtc2l6ZToxcmVtIDsgbWluLXdpZHRoOjdyZW07IC13ZWJraXQtYXBwZWFyYW5jZTpub25lOyAtbW96LWFwcGVhcmFuY2U6bm9uZTsgcGFkZGluZy1yaWdodDoyN3B4OyBiYWNrZ3JvdW5kLWltYWdlOnVybCgnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQWgwbEVRVlE0VDkzVE1RckNVQXpHOFY5eDhRemlpWVN1WGR6RkM3aDRBY0VMT1BRQWRYWW92WkNIRUFUbGdRVjVHRlRlMW96Smx6L2tTMUlwaktxdzN3UUJWeXkrK0pJMHkxR1RlN0RDQmJNQWNrZU5JUUtrL0JhbkFMQkIrMTZMdG5ERUxvTWNzTS9CRVNEbHoyaGVEUjNXZVB3S1NMbzVlb3h6M3o2Tk5jRkQrdnUzaWoxNEFxei9EeEdiS0I3Q0FBQUFBRWxGVGtTdVFtQ0MnKTsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOjk1JSBjZW50ZXI7IGJvcmRlci1jb2xvcjojYTlhOWE5OyBjb2xvcjppbmhlcml0OyBib3gtc2hhZG93Om5vbmU7IC13ZWJraXQtYm94LXNoYWRvdzpub25lOyB9IC5wYXltZW50Q2FsY3VsYXRvckttQWxsb3dhbmNleyBib3JkZXItcmFkaXVzOjVweDsgcGFkZGluZzo1cHggNXB4OyBmb250LXNpemU6MXJlbSA7IHdpZHRoOjExMHB4OyAtd2Via2l0LWFwcGVhcmFuY2U6bm9uZTsgLW1vei1hcHBlYXJhbmNlOm5vbmU7IHBhZGRpbmctcmlnaHQ6MjdweDsgYmFja2dyb3VuZC1pbWFnZTp1cmwoJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFBQUFmOC85aEFBQUFoMGxFUVZRNFQ5M1RNUXJDVUF6RzhWOXg4UXppaVlTdVhkekZDN2g0QWNFTE9QUUFkWFlvdlpDSEVBVGxnUVY1R0ZUZTFvekpsei9rUzFJcGpLcXczd1FCVnl5KytKSTB5MUdUZTdEQ0JiTUFja2VOSVFLay9CYW5BTEJCKzE2THRuREVMb01jc00vQkVTRGx6MmhlRFIzV2VQd0tTTG81ZW94ejN6Nk5OY0ZEK3Z1M2lqMTRBcXovRHhHYktCN0NBQUFBQUVsRlRrU3VRbUNDJyk7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYmFja2dyb3VuZC1wb3NpdGlvbjo5NSUgY2VudGVyOyBib3JkZXItY29sb3I6I2E5YTlhOTsgY29sb3I6aW5oZXJpdDsgYm94LXNoYWRvdzpub25lOyAtd2Via2l0LWJveC1zaGFkb3c6bm9uZTsgfSAucGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudHsgYm9yZGVyOjFweCBzb2xpZCAjYTlhOWE5OyBib3JkZXItcmFkaXVzOjVweDsgcGFkZGluZzo1cHggNXB4OyBmb250LXNpemU6MXJlbSA7IHdpZHRoOjVyZW07IHBhZGRpbmctbGVmdDoyMHB4OyBiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZlcnNpb249JzEuMScgaGVpZ2h0PScyOHB4JyB3aWR0aD0nODVweCc+PHRleHQgeD0nNicgeT0nMjEnIGZpbGw9JycgZm9udC1zaXplPScxNicgZm9udC1mYW1pbHk9J2FyaWFsJz4kIik7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYmFja2dyb3VuZC1zaXplOjYwJTsgYmFja2dyb3VuZC1wb3NpdGlvbi15OjQwJTsgLW1vei1hcHBlYXJhbmNlOnRleHRmaWVsZDsgfSAucGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudDo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiwgLnBheW1lbnRDYWxjdWxhdG9yRG93blBheW1lbnQ6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b257IC13ZWJraXQtYXBwZWFyYW5jZTpub25lOyBtYXJnaW46MDsgfSAucGF5bWVudENhbGN1bGF0b3JOb3RpY2VDb250YWluZXJ7IG1pbi13aWR0aDoxOHJlbTsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6Izg2ODY4NjsgcGFkZGluZzowOyBtYXJnaW46MDsgZGlzcGxheTp2YXIoLS1tb2JpbGUtZGlzcGxheSwgaW5pdGlhbCk7IH0gLnBheW1lbnRDYWxjdWxhdG9yTm90aWNlQ29udGFpbmVyLmJveGVzNHsgd2lkdGg6MzAlOyB9IC5yZXZlYWwtbW9kYWwgLnBheW1lbnRDYWxjdWxhdG9yTm90aWNlQ29udGFpbmVyIHAsIC5yZXZlYWwtbW9kYWwgLnBheW1lbnRDYWxjdWxhdG9yTm90aWNlQ29udGFpbmVyIHNwYW57IGNvbG9yOmluaGVyaXQ7IHBhZGRpbmc6MDsgZm9udC1zaXplOjFyZW07IH0gLnBheW1lbnRDYWxjdWxhdG9yRXJyb3JNZXNzYWdleyB3aWR0aDo1MCU7IG1hcmdpbi10b3A6MzBweDsgfSAjcGF5bWVudENhbGN1bGF0b3JWZWhpY2xlSW5mb3sgcG9zaXRpb246cmVsYXRpdmU7IH0gI3BheW1lbnRDYWxjdWxhdG9yVmVoaWNsZUluZm8gLmljb257IGJvcmRlci1yYWRpdXM6NTAlOyBib3JkZXI6MXB4IHNvbGlkICNmZmZmZmY7IGNvbG9yOiNmZmZmZmY7IG1hcmdpbjowOyBwYWRkaW5nOjAuNHJlbTsgLS10eHQtY29sb3I6I2ZmZmZmZjsgLS1mczp2YXIoLS1oZWFkZXItaWNvbi1zaXplLCB2YXIoLS1mczcpKTsgYmFja2dyb3VuZC1jb2xvcjojZTMxNzNlOyB9ICNwYXltZW50Q2FsY3VsYXRvclZlaGljbGVJbmZvIGgyIHNwYW46Zmlyc3QtY2hpbGR7IGZvbnQtc2l6ZTp2YXIoLS1mczEpOyBmb250LXdlaWdodDpub3JtYWw7IH0gI3BheW1lbnRDYWxjdWxhdG9yVmVoaWNsZUluZm8gaDIgc3BhbnsgZm9udC1zaXplOnZhcigtLWhlYWRlci1mb250LXNpemUsIHZhcigtLWZzMykpOyBtYXJnaW46MDsgbGluZS1oZWlnaHQ6bm9ybWFsOyBmb250LXdlaWdodDo3MDA7IHBhZGRpbmc6MDsgfSAjcGF5bWVudENhbGN1bGF0b3JWZWhpY2xlSW5mbyBoM3sgZm9udC1zaXplOjEuMTg4cmVtIDsgfSAjcGF5bWVudENhbGN1bGF0b3JWZWhpY2xlSW5mbyBzcGFuLmgyLWFsdHsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgbWFyZ2luLWxlZnQ6dmFyKC0tcyk7IGZvbnQtc2l6ZTppbmhlcml0OyBmb250LXdlaWdodDp2YXIoLS1mb250LWgyLXdlaWdodCk7IGxpbmUtaGVpZ2h0OjEuMmVtOyBjb2xvcjp2YXIoLS1kZWZhdWx0LWJsYWNrKTsgfSAjcGF5bWVudENhbGN1bGF0b3JWZWhpY2xlSW5mbyAuaDItYWx0IHNwYW46Zmlyc3QtY2hpbGR7IGZvbnQtc2l6ZTp2YXIoLS1mczEpOyBmb250LXdlaWdodDpub3JtYWw7IH0gI3BheW1lbnRDYWxjdWxhdG9yVmVoaWNsZUluZm8gLmgyLWFsdCBzcGFueyBmb250LXNpemU6dmFyKC0taGVhZGVyLWZvbnQtc2l6ZSwgdmFyKC0tZnMzKSk7IG1hcmdpbjowOyBsaW5lLWhlaWdodDpub3JtYWw7IGZvbnQtd2VpZ2h0OjcwMDsgcGFkZGluZzowOyB9ICNwYXltZW50Q2FsY3VsYXRvclZlaGljbGVJbmZvIC5oMy1hbHR7IGZvbnQtc2l6ZToxLjE4OHJlbSA7IH0gLnBheW1lbnRDYWxjdWxhdG9yQ2FsbFRvQWN0aW9uQ29udGFpbmVyeyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAucGF5bWVudENhbGN1bGF0b3JDYWxsVG9BY3Rpb25Db250YWluZXIuYm94ZXM0eyB3aWR0aDo2NCU7IH0gLnBheW1lbnRDYWxjdWxhdG9yQ2FsbFRvQWN0aW9uQ29udGFpbmVyIGF7IHdpZHRoOm1pbig2NCUsMThyZW0pOyB9IC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRTZWxlY3R7IH0gLmZhLmZhLWNhbGN1bGF0b3J7IGNvbG9yOiMwMDAwMDA7IH0gLi1iZy1ibGFjayAuZmEuZmEtY2FsY3VsYXRvcnsgY29sb3I6I0ZGRkZGRjsgfSAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgc2VsZWN0OjotbXMtZXhwYW5kIHsgZGlzcGxheTpub25lOyB9IC5jYWxjLXBheW1lbnQtY2FzaCB7IHdpZHRoOm1pbigxN3JlbSw5MCUpOyBwYWRkaW5nOjAgMS41cmVtOyB9IC5jYWxjLXBheW1lbnQtY2FzaCBzcGFueyBtYXJnaW4tYm90dG9tOjA7IGZvbnQtc2l6ZTpyZXZlcnQ7IH0gLmNhbGMtcGF5bWVudC1jYXNoIC5wcmljZUZpbmFsIHsgcGFkZGluZy10b3A6dmFyKC0tcyk7IGJvcmRlci10b3A6MXB4IHNvbGlkICNiYmI7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gLmNhbGMtcGF5bWVudC1jYXNoIC5wcmljZVJvdyB7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjsgbGluZS1oZWlnaHQ6bm9ybWFsOyB9IC5jYWxjLXBheW1lbnQtY2FzaCAucHJpY2VOYW1leyBwYWRkaW5nOjA7IHRleHQtYWxpZ246bGVmdDsgZm9udC1zaXplOnZhcigtLWZzMCk7IH0gI3BheW1lbnRDYWxjdWxhdG9yT3B0aW9uQ29udGFpbmVyIC5wYXltZW50Q2FsY3VsYXRvclRyYWRlSW5CdXR0b257IGZvbnQtc2l6ZTowLjYyNXJlbSA7IGJvcmRlcjoxcHggc29saWQgI2E5YTlhOTsgYm9yZGVyLXJhZGl1czo1cHg7IGJhY2tncm91bmQtY29sb3I6d2hpdGU7IHdpZHRoOjEwNXB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgcGFkZGluZzoycHg7IGN1cnNvcjpwb2ludGVyOyB9ICNwYXltZW50Q2FsY3VsYXRvck9wdGlvbkNvbnRhaW5lciAucGF5bWVudENhbGN1bGF0b3JUcmFkZUluVmFsdWV7IGJvcmRlcjoxcHggc29saWQgI2E5YTlhOTsgYm9yZGVyLXJhZGl1czo1cHg7IHBhZGRpbmc6NXB4IDVweDsgZm9udC1zaXplOjFyZW0gOyB3aWR0aDoxMDBweDsgcGFkZGluZy1sZWZ0OjE1cHg7IGJhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgdmVyc2lvbj0nMS4xJyBoZWlnaHQ9JzI4cHgnIHdpZHRoPSc4NXB4Jz48dGV4dCB4PSc2JyB5PScyMScgZmlsbD0nJyBmb250LXNpemU9JzE2JyBmb250LWZhbWlseT0nYXJpYWwnPiQiKTsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyB9ICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciAuZmluYW5jaW5nLW9wdGlvbiwgI2ZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5maW5hbmNpbmctb3B0aW9uIHsgYm9yZGVyOjEuNXB4IHNvbGlkICNhYWE7IGJvcmRlci1yYWRpdXM6NnB4OyBwYWRkaW5nOjhweDsgd2lkdGg6MTkwcHg7IGJhY2tncm91bmQ6d2hpdGU7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBhbGlnbi1pdGVtczpjZW50ZXI7IHRleHQtYWxpZ246Y2VudGVyOyBmbGV4LXNocmluazowOyBtaW4td2lkdGg6MTg3cHg7IGJveC1zaXppbmc6Y29udGVudC1ib3ghaW1wb3J0YW50OyB9ICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciAuZmluYW5jaW5nLW9wdGlvbi5zZWxlY3RlZCwgI2ZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5maW5hbmNpbmctb3B0aW9uLnNlbGVjdGVkIHsgYm9yZGVyLWNvbG9yOiMwMDdCRkY7IGJveC1zaGFkb3c6MCAwIDEwcHggcmdiYSgwLCAxMjMsIDI1NSwgMC41KTsgfSAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLnRlcm0sICNmaW5hbmNlTXVsdGlzdGVwTmV3Q2FsY3VsYXRvciAudGVybSB7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IGNvbG9yOiMzMzM7IG1hcmdpbi1ib3R0b206MnB4OyB9ICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciAuZG93bi1wYXltZW50LCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLmRvd24tcGF5bWVudCB7IGZvbnQtc2l6ZTowLjYyNXJlbSA7IGNvbG9yOiM5OTk7IG1hcmdpbi1ib3R0b206NXB4OyB9ICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciAuc2VwYXJhdG9yUGF5LCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLnNlcGFyYXRvclBheSB7IHdpZHRoOjkwJTsgaGVpZ2h0OjFweDsgYmFja2dyb3VuZC1jb2xvcjojY2NjOyBtYXJnaW4tYm90dG9tOjZweDsgfSAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLmNvbnRlbnQtY29udGFpbmVyLCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLmNvbnRlbnQtY29udGFpbmVyIHsgZGlzcGxheTpmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjsgYWxpZ24taXRlbXM6Y2VudGVyOyB3aWR0aDoxMDAlOyBwYWRkaW5nLWJvdHRvbTo4cHg7IH0gI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyIC5sZWZ0LXNlY3Rpb24sICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciAucmlnaHQtc2VjdGlvbiwgI2ZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5sZWZ0LXNlY3Rpb24sICNmaW5hbmNlTXVsdGlzdGVwTmV3Q2FsY3VsYXRvciAucmlnaHQtc2VjdGlvbiB7IHdpZHRoOjUwJTsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmc6NnB4OyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLmxlZnQtc2VjdGlvbiwgI2ZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5sZWZ0LXNlY3Rpb24geyBib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNjY2M7IH0gI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyIC5sb3dlc3QtcGF5bWVudCwgI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyIC5sb3dlc3QtcmF0ZSwgI2ZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5sb3dlc3QtcGF5bWVudCwgI2ZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5sb3dlc3QtcmF0ZSB7IGZvbnQtc2l6ZToxLjI1cmVtIDsgY29sb3I6I2QzMmYyZjsgcG9zaXRpb246cmVsYXRpdmU7IH0gI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyIC5pbmZvLWljb24sICNmaW5hbmNlTXVsdGlzdGVwTmV3Q2FsY3VsYXRvciAuaW5mby1pY29uIHsgZm9udC1zaXplOjAuNzVyZW0gOyBjb2xvcjojNjY2OyBjdXJzb3I6cG9pbnRlcjsgbWFyZ2luLWxlZnQ6NHB4OyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjJweDsgfSAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLmFjdHVhbC1yYXRlLCAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLmFjdHVhbC1wYXltZW50LCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLmFjdHVhbC1yYXRlLCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLmFjdHVhbC1wYXltZW50IHsgZm9udC1zaXplOjAuOTM4cmVtIDsgbWFyZ2luLXRvcDo1cHg7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyIC5hY3R1YWwtcmF0ZSwgI2ZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5hY3R1YWwtcmF0ZSB7IGNvbG9yOiMzMzM7IH0gI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyIC5hY3R1YWwtcGF5bWVudCwgI2ZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5hY3R1YWwtcGF5bWVudCB7IGNvbG9yOiMwMDMzNjY7IH0gI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyIC5kZXRhaWxzVGF4LCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLmRldGFpbHNUYXggeyBmb250LXNpemU6MC42ODhyZW0gOyBjb2xvcjojMzMzOyBtYXJnaW4tdG9wOjJweDsgfSAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLnJhZGlvLWNvbnRhaW5lciwgI2ZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5yYWRpby1jb250YWluZXIgeyBkaXNwbGF5OmZsZXg7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjBweDsgbWFyZ2luLXRvcDo4cHg7IGZvbnQtc2l6ZTowLjY4OHJlbSA7IH0gI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyIGlucHV0W3R5cGU9InJhZGlvIl1bbmFtZT0ic2VsZWN0ZWRQYXltZW50Il0sICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciBpbnB1dFt0eXBlPSJyYWRpbyJdW25hbWU9InNlbGVjdGVkUGF5bWVudFdpdGhUYXhlcyJdLCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgaW5wdXRbdHlwZT0icmFkaW8iXVtuYW1lPSJzZWxlY3RlZFBheW1lbnQiXSwgI2ZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIGlucHV0W3R5cGU9InJhZGlvIl1bbmFtZT0ic2VsZWN0ZWRQYXltZW50V2l0aFRheGVzIl0geyBtYXJnaW4tcmlnaHQ6NHB4OyBvcGFjaXR5OnVuc2V0OyB3aWR0aDp1bnNldDsgaGVpZ2h0OnVuc2V0OyBwb3NpdGlvbjp1bnNldDsgfSAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLnNpbmdsZS1jb2x1bW4sICNmaW5hbmNlTXVsdGlzdGVwTmV3Q2FsY3VsYXRvciAuc2luZ2xlLWNvbHVtbiB7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IHdpZHRoOjEwMCU7IHBhZGRpbmc6OHB4OyB9ICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciAuc21hbGwtYm94LCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLnNtYWxsLWJveCB7IHdpZHRoOjEwMHB4OyBwYWRkaW5nOjhweDsgbWluLXdpZHRoOjEwMHB4OyBtYXgtd2lkdGg6MTAwcHg7IH0KLyoqIC9jc3MvZGFya3Rvb2x0aXAuY3NzICoqLwouZGFyay10b29sdGlwe2Rpc3BsYXk6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Zm9udC13ZWlnaHQ6bm9ybWFsO2hlaWdodDphdXRvO3RvcDowO2xlZnQ6MH0uZGFyay10b29sdGlwLnNtYWxse3BhZGRpbmc6NHB4O2ZvbnQtc2l6ZTowLjc1cmVtIDttYXgtd2lkdGg6MTUwcHg7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjJweDstbW96LWJvcmRlci1yYWRpdXM6MnB4O2JvcmRlci1yYWRpdXM6MnB4fS5kYXJrLXRvb2x0aXAubWVkaXVte3BhZGRpbmc6NnB4O2ZvbnQtc2l6ZTowLjY4OHJlbSA7bWF4LXdpZHRoOjIwMHB4Oy13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7LW1vei1ib3JkZXItcmFkaXVzOjRweDtib3JkZXItcmFkaXVzOjRweH0uZGFyay10b29sdGlwLmxhcmdle3BhZGRpbmc6MTZweDtmb250LXNpemU6MXJlbSA7bWF4LXdpZHRoOjI1MHB4Oy13ZWJraXQtYm9yZGVyLXJhZGl1czo2cHg7LW1vei1ib3JkZXItcmFkaXVzOjZweDtib3JkZXItcmFkaXVzOjZweH0uZGFyay10b29sdGlwIC50aXB7dHJhbnNmb3JtOnNjYWxlKDEuMDEpOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEuMDEpO3RyYW5zZm9ybTpzY2FsZSgxLjAxKTtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjA7aGVpZ2h0OjA7Ym9yZGVyLXN0eWxlOnNvbGlkO2xpbmUtaGVpZ2h0OjB9LmRhcmstdG9vbHRpcC5zb3V0aCAudGlwe2xlZnQ6NTAlO3RvcDoxMDAlfS5kYXJrLXRvb2x0aXAud2VzdCAudGlwe2xlZnQ6MDt0b3A6NTAlfS5kYXJrLXRvb2x0aXAubm9ydGggLnRpcHtsZWZ0OjUwJTt0b3A6MH0uZGFyay10b29sdGlwLmVhc3QgLnRpcHtsZWZ0OjEwMCU7dG9wOjUwJX0uZGFyay10b29sdGlwLnNvdXRoLnNtYWxsIC50aXB7Ym9yZGVyLXdpZHRoOjAgNXB4IDAgNXB4O21hcmdpbi1sZWZ0Oi01cHh9LmRhcmstdG9vbHRpcC5zb3V0aC5tZWRpdW0gLnRpcHtib3JkZXItd2lkdGg6MCA2cHggMCA2cHg7bWFyZ2luLWxlZnQ6LTZweH0uZGFyay10b29sdGlwLnNvdXRoLmxhcmdlIC50aXB7Ym9yZGVyLXdpZHRoOjAgMTJweCAwIDEycHg7bWFyZ2luLWxlZnQ6LTEycHh9LmRhcmstdG9vbHRpcC53ZXN0LnNtYWxsIC50aXB7Ym9yZGVyLXdpZHRoOjVweCA3cHggNXB4IDA7bWFyZ2luLWxlZnQ6LTdweDttYXJnaW4tdG9wOi01cHh9LmRhcmstdG9vbHRpcC53ZXN0Lm1lZGl1bSAudGlwe2JvcmRlci13aWR0aDo2cHggOHB4IDZweCAwO21hcmdpbi1sZWZ0Oi04cHg7bWFyZ2luLXRvcDotNnB4fS5kYXJrLXRvb2x0aXAud2VzdC5sYXJnZSAudGlwe2JvcmRlci13aWR0aDoxMnB4IDE0cHggMTJweCAwO21hcmdpbi1sZWZ0Oi0xNHB4O21hcmdpbi10b3A6LTEycHh9LmRhcmstdG9vbHRpcC5ub3J0aC5zbWFsbCAudGlwe2JvcmRlci13aWR0aDowIDVweCA3cHggNXB4O21hcmdpbi1sZWZ0Oi01cHg7bWFyZ2luLXRvcDotN3B4fS5kYXJrLXRvb2x0aXAubm9ydGgubWVkaXVtIC50aXB7Ym9yZGVyLXdpZHRoOjAgNnB4IDhweCA2cHg7bWFyZ2luLWxlZnQ6LTZweDttYXJnaW4tdG9wOi04cHh9LmRhcmstdG9vbHRpcC5ub3J0aC5sYXJnZSAudGlwe2JvcmRlci13aWR0aDowIDEycHggMTRweCAxMnB4O21hcmdpbi1sZWZ0Oi0xMnB4O21hcmdpbi10b3A6LTE0cHh9LmRhcmstdG9vbHRpcC5lYXN0LnNtYWxsIC50aXB7Ym9yZGVyLXdpZHRoOjVweCAwIDVweCAwO21hcmdpbi10b3A6LTVweH0uZGFyay10b29sdGlwLmVhc3QubWVkaXVtIC50aXB7Ym9yZGVyLXdpZHRoOjZweCAwIDZweCAwO21hcmdpbi10b3A6LTZweH0uZGFyay10b29sdGlwLmVhc3QubGFyZ2UgLnRpcHtib3JkZXItd2lkdGg6MTJweCAwIDEycHggMDttYXJnaW4tdG9wOi0xMnB4fS5kYXJrLXRvb2x0aXAgdWwuY29uZmlybXtsaXN0LXN0eWxlLXR5cGU6bm9uZTttYXJnaW4tdG9wOjVweDtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW46MCBhdXRvfS5kYXJrLXRvb2x0aXAgdWwuY29uZmlybSBsaXtwYWRkaW5nOjEwcHg7ZmxvYXQ6bGVmdDttYXJnaW46NXB4O21pbi13aWR0aDoyNXB4Oy13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7LW1vei1ib3JkZXItcmFkaXVzOjNweDstby1ib3JkZXItcmFkaXVzOjNweDtib3JkZXItcmFkaXVzOjNweH0uZGFyay10b29sdGlwLmRhcmt7YmFja2dyb3VuZC1jb2xvcjojZGFkOWRiO2NvbG9yOiMwMDB9LmRhcmstdG9vbHRpcC5saWdodHtiYWNrZ3JvdW5kLWNvbG9yOiNmNWY1ZjU7Y29sb3I6IzVlNWU1ZTtib3JkZXI6MXB4IHNvbGlkICM1ZTVlNWU7ei1pbmRleDoxMDAwMDMwfS5kYXJrLXRvb2x0aXAuZGFyay5zb3V0aCAudGlwe2JvcmRlci1jb2xvcjojZGFkOWRiIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O19ib3JkZXItY29sb3I6I2RhZDlkYiAjMDAwICMwMDAgIzAwMDtfZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5DaHJvbWEoY29sb3I9JyMwMDAwMDAnKX0uZGFyay10b29sdGlwLmRhcmsud2VzdCAudGlwe2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudCAjZGFkOWRiIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O19ib3JkZXItY29sb3I6IzAwMCAjZGFkOWRiICMwMDAgIzAwMDtfZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5DaHJvbWEoY29sb3I9JyMwMDAwMDAnKX0uZGFyay10b29sdGlwLmRhcmsubm9ydGggLnRpcHtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgI2RhZDlkYiB0cmFuc3BhcmVudDtfYm9yZGVyLWNvbG9yOiMwMDAgIzAwMCAjZGFkOWRiICMwMDA7X2ZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQ2hyb21hKGNvbG9yPScjMDAwMDAwJyl9LmRhcmstdG9vbHRpcC5kYXJrLmVhc3QgLnRpcHtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgI2RhZDlkYjtfYm9yZGVyLWNvbG9yOiMwMDAgIzAwMCAjMDAwICNkYWQ5ZGI7X2ZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQ2hyb21hKGNvbG9yPScjMDAwMDAwJyl9LmRhcmstdG9vbHRpcC5saWdodC5zb3V0aCAudGlwe2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtaW1hZ2U6dXJsKC9jc3MvdGlwcy5wbmcpO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDt3aWR0aDoxMnB4O2hlaWdodDo4cHh9LmRhcmstdG9vbHRpcC5saWdodC53ZXN0IC50aXB7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1pbWFnZTp1cmwoL2Nzcy90aXB3LnBuZyk7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O3dpZHRoOjhweDtoZWlnaHQ6MTJweH0uZGFyay10b29sdGlwLmxpZ2h0Lm5vcnRoIC50aXB7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1pbWFnZTp1cmwoL2Nzcy90aXBuLnBuZyk7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O3dpZHRoOjEycHg7aGVpZ2h0OjhweH0uZGFyay10b29sdGlwLmxpZ2h0LmVhc3QgLnRpcHtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtiYWNrZ3JvdW5kLWltYWdlOnVybCgvY3NzL3RpcGUucG5nKTtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1wb3NpdGlvbjpsZWZ0IGNlbnRlcjt3aWR0aDo4cHg7aGVpZ2h0OjEycHh9LmRhcmstdG9vbHRpcC5kYXJrIHVsLmNvbmZpcm0gbGl7YmFja2dyb3VuZC1jb2xvcjojNDE2ZTg1fS5kYXJrLXRvb2x0aXAuZGFyayB1bC5jb25maXJtIGxpOmhvdmVye2JhY2tncm91bmQtY29sb3I6IzQxN2U4NX0uZGFyay10b29sdGlwLmxpZ2h0IHVsLmNvbmZpcm0gbGl7YmFja2dyb3VuZC1jb2xvcjojYzFkYmRifS5kYXJrLXRvb2x0aXAubGlnaHQgdWwuY29uZmlybSBsaTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNkY2U4ZTh9LmFuaW1hdGVkey13ZWJraXQtYW5pbWF0aW9uLWZpbGwtbW9kZTpib3RoOy1tb3otYW5pbWF0aW9uLWZpbGwtbW9kZTpib3RoOy1tcy1hbmltYXRpb24tZmlsbC1tb2RlOmJvdGg7LW8tYW5pbWF0aW9uLWZpbGwtbW9kZTpib3RoO2FuaW1hdGlvbi1maWxsLW1vZGU6Ym90aDstd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjouNXM7LW1vei1hbmltYXRpb24tZHVyYXRpb246LjVzOy1tcy1hbmltYXRpb24tZHVyYXRpb246LjVzOy1vLWFuaW1hdGlvbi1kdXJhdGlvbjouNXM7YW5pbWF0aW9uLWR1cmF0aW9uOi41c31ALXdlYmtpdC1rZXlmcmFtZXMgZmxpcEluVXB7MC4wMDAxJXstd2Via2l0LXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWCgtOTBkZWcpO29wYWNpdHk6MH00MCV7LXdlYmtpdC10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoNWRlZyl9NzAley13ZWJraXQtdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVYKC01ZGVnKX0xMDAley13ZWJraXQtdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVYKDApO29wYWNpdHk6MX19QC1tb3ota2V5ZnJhbWVzIGZsaXBJblVwezAuMDAwMSV7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVYKC05MGRlZyk7b3BhY2l0eTowfTQwJXt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoNWRlZyl9NzAle3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWCgtNWRlZyl9MTAwJXt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoMCk7b3BhY2l0eToxfX1ALW8ta2V5ZnJhbWVzIGZsaXBJblVwezAuMDAwMSV7LW8tdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVYKC05MGRlZyk7b3BhY2l0eTowfTQwJXstby10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoNWRlZyl9NzAley1vLXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWCgtNWRlZyl9MTAwJXstby10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoMCk7b3BhY2l0eToxfX1Aa2V5ZnJhbWVzIGZsaXBJblVwezAuMDAwMSV7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVYKC05MGRlZyk7b3BhY2l0eTowfTQwJXt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoNWRlZyl9NzAle3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWCgtNWRlZyl9MTAwJXt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoMCk7b3BhY2l0eToxfX1ALXdlYmtpdC1rZXlmcmFtZXMgZmxpcEluUmlnaHR7MC4wMDAxJXstd2Via2l0LXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSgtOTBkZWcpO29wYWNpdHk6MH00MCV7LXdlYmtpdC10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVkoNWRlZyl9NzAley13ZWJraXQtdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKC01ZGVnKX0xMDAley13ZWJraXQtdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKDApO29wYWNpdHk6MX19QC1tb3ota2V5ZnJhbWVzIGZsaXBJblJpZ2h0ezAuMDAwMSV7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKC05MGRlZyk7b3BhY2l0eTowfTQwJXt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVkoNWRlZyl9NzAle3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSgtNWRlZyl9MTAwJXt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVkoMCk7b3BhY2l0eToxfX1ALW8ta2V5ZnJhbWVzIGZsaXBJblJpZ2h0ezAuMDAwMSV7LW8tdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKC05MGRlZyk7b3BhY2l0eTowfTQwJXstby10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVkoNWRlZyl9NzAley1vLXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSgtNWRlZyl9MTAwJXstby10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVkoMCk7b3BhY2l0eToxfX1Aa2V5ZnJhbWVzIGZsaXBJblJpZ2h0ezAuMDAwMSV7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKC05MGRlZyk7b3BhY2l0eTowfTQwJXt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVkoNWRlZyl9NzAle3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSgtNWRlZyl9MTAwJXt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVkoMCk7b3BhY2l0eToxfX0uZmxpcEluey13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTp2aXNpYmxlICFpbXBvcnRhbnQ7LW1vei1iYWNrZmFjZS12aXNpYmlsaXR5OnZpc2libGUgIWltcG9ydGFudDstby1iYWNrZmFjZS12aXNpYmlsaXR5OnZpc2libGUgIWltcG9ydGFudDtiYWNrZmFjZS12aXNpYmlsaXR5OnZpc2libGUgIWltcG9ydGFudH0uZmxpcEluLnNvdXRoLC5mbGlwSW4ubm9ydGh7LXdlYmtpdC1hbmltYXRpb24tbmFtZTpmbGlwSW5VcDstbW96LWFuaW1hdGlvbi1uYW1lOmZsaXBJblVwOy1vLWFuaW1hdGlvbi1uYW1lOmZsaXBJblVwO2FuaW1hdGlvbi1uYW1lOmZsaXBJblVwfS5mbGlwSW4ud2VzdCwuZmxpcEluLmVhc3R7LXdlYmtpdC1hbmltYXRpb24tbmFtZTpmbGlwSW5SaWdodDstbW96LWFuaW1hdGlvbi1uYW1lOmZsaXBJblJpZ2h0Oy1vLWFuaW1hdGlvbi1uYW1lOmZsaXBJblJpZ2h0O2FuaW1hdGlvbi1uYW1lOmZsaXBJblJpZ2h0fUAtd2Via2l0LWtleWZyYW1lcyBmYWRlSW57MHtvcGFjaXR5OjB9MTAwJXtvcGFjaXR5OjF9fUAtbW96LWtleWZyYW1lcyBmYWRlSW57MHtvcGFjaXR5OjB9MTAwJXtvcGFjaXR5OjF9fUAtby1rZXlmcmFtZXMgZmFkZUluezB7b3BhY2l0eTowfTEwMCV7b3BhY2l0eToxfX1Aa2V5ZnJhbWVzIGZhZGVJbnswe29wYWNpdHk6MH0xMDAle29wYWNpdHk6MX19LmZhZGVJbnstd2Via2l0LWFuaW1hdGlvbi1uYW1lOmZhZGVJbjstbW96LWFuaW1hdGlvbi1uYW1lOmZhZGVJbjstby1hbmltYXRpb24tbmFtZTpmYWRlSW47YW5pbWF0aW9uLW5hbWU6ZmFkZUlufQovKiogL2Nzcy9yZXZlYWwuY3NzICoqLwoucmV2ZWFsLW1vZGFsLWJnIHsgcG9zaXRpb246Zml4ZWQ7IGhlaWdodDoxMDAlOyB3aWR0aDoxMDAlOyBiYWNrZ3JvdW5kOiMwMDA7IGJhY2tncm91bmQ6cmdiYSgwLDAsMCwuOCk7IHotaW5kZXg6MTAwMDAwOTsgZGlzcGxheTpub25lOyB0b3A6MDsgbGVmdDowOyB9IC5yZXZlYWwtbW9kYWwgeyB2aXNpYmlsaXR5OmhpZGRlbjsgdG9wOi0xMDAwcHg7IHdpZHRoOm1pbig1MjBweCwgOTB2dyk7IGJhY2tncm91bmQ6I2VlZSB1cmwoL2ltYWdlcy9tb2RhbC1nbG9zcy5wbmcpIG5vLXJlcGVhdCAtMjAwcHggLTgwcHg7IGJhY2tncm91bmQtY29sb3I6I2VlZTsgcG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MDsgcmlnaHQ6MDsgbWFyZ2luOmF1dG87IHotaW5kZXg6MTAwMDAyMDsgcGFkZGluZzozMHB4IDQwcHggMzRweDsgLW1vei1ib3JkZXItcmFkaXVzOjVweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjVweDsgYm9yZGVyLXJhZGl1czo1cHg7IC1tb3otYm94LXNoYWRvdzowIDAgMTBweCByZ2JhKDAsMCwwLC40KTsgLXdlYmtpdC1ib3gtc2hhZG93OjAgMCAxMHB4IHJnYmEoMCwwLDAsLjQpOyAtYm94LXNoYWRvdzowIDAgMTBweCByZ2JhKDAsMCwwLC40KTsgfSAucmV2ZWFsLW1vZGVsLWRvLW5vdC1zaG93IHsgdmlzaWJpbGl0eTpoaWRkZW47IHRvcDoxMDBweDsgd2lkdGg6NTIwcHg7IHBvc2l0aW9uOmFic29sdXRlOyB6LWluZGV4OjEwMDAwMjA7IHBhZGRpbmc6MzBweCA0MHB4IDM0cHg7IGJhY2tncm91bmQ6bm9uZTsgLW1vei1ib3JkZXItcmFkaXVzOjBweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjBweDsgYm9yZGVyLXJhZGl1czowcHg7IC1tb3otYm94LXNoYWRvdzpub25lOyAtd2Via2l0LWJveC1zaGFkb3c6bm9uZTsgLWJveC1zaGFkb3c6bm9uZTsgfSAuLS1pcy1wb3B1cC1maXhlZC1jb250YWluZXIgeyBwb3NpdGlvbjpmaXhlZDsgdG9wOjA7IGxlZnQ6MDsgcmlnaHQ6MDsgei1pbmRleDoxMDAwMDAwMDA7IH0gLnJldmVhbC1tb2RhbC5zbWFsbCB7IHdpZHRoOjIwMHB4O30gLnJldmVhbC1tb2RhbC5tZWRpdW0geyB3aWR0aDo0MDBweDt9IC5yZXZlYWwtbW9kYWwubGFyZ2UgeyB3aWR0aDo2MDBweDt9IC5yZXZlYWwtbW9kYWwueGxhcmdlIHsgd2lkdGg6ODAwcHg7fSAucmV2ZWFsLW1vZGFsIC5jbG9zZS1yZXZlYWwtbW9kYWwgeyBmb250LXNpemU6MS4zNzVyZW0gOyBsaW5lLWhlaWdodDouNTsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDo5cHg7IHJpZ2h0OjEwcHg7IGNvbG9yOiM0NDQ7IHRleHQtc2hhZG93OjAgLTFweCAxcHggcmJnYSgwLDAsMCwuNik7IGZvbnQtd2VpZ2h0OmJvbGQ7IGN1cnNvcjpwb2ludGVyOyB9IC5jbG9zZS1yZXZlYWwtbW9kYWwubW9kYWwtY2xvc2UtaGlkZSB7IGRpc3BsYXk6bm9uZTsgfSAucmV2ZWFsLW1vZGFsIHNwYW4geyBwYWRkaW5nOjBweDsgZm9udC1zaXplOjEuNXJlbSA7IG1hcmdpbi1ib3R0b206MTBweDsgY29sb3I6IzQxNDE0MTsgfSAucmV2ZWFsLW1vZGFsIHNwYW4uc3VjY2VzcyB7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvY2lyY2xlLWdyZWVuLTI0LW5zLnBuZykgbm8tcmVwZWF0IHNjcm9sbCBsZWZ0IGNlbnRlciB0cmFuc3BhcmVudDsgfSAucmV2ZWFsLW1vZGFsIHNwYW4uZmFpbCB7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvY2lyY2xlLXJlZC0yNC1ucy5wbmcpIG5vLXJlcGVhdCBzY3JvbGwgbGVmdCBjZW50ZXIgdHJhbnNwYXJlbnQ7IH0gLnJldmVhbC1tb2RhbCBwIHsgbWFyZ2luOjAgOyBmb250LXNpemU6MC45MzhyZW0gOyBjb2xvcjojNDE0MTQxOyB9IC5wb3B1cC1kb20tbm93cmFwcGVyIHsgYmFja2dyb3VuZDpub25lICFpbXBvcnRhbnQ7IGJveC1zaGFkb3c6bm9uZTsgfSBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtZGV2aWNlLXdpZHRoOjQ4MHB4KSB7IC5yZXZlYWwtbW9kYWwsIC5yZXZlYWwtbW9kZWwtZG8tbm90LXNob3cgeyB0b3A6MTBweDsgei1pbmRleDoxMDAwMDIwOyBwYWRkaW5nOjAuNXJlbTsgcGFkZGluZy10b3A6MnJlbTsgfSAucmV2ZWFsLW1vZGFsIC5jbG9zZS1yZXZlYWwtbW9kYWwgeyBmb250LXNpemU6MS44NzVyZW0gOyBsaW5lLWhlaWdodDowLjY7IHJpZ2h0OjAuNXJlbTsgdG9wOjAuNXJlbTsgei1pbmRleDoxOyB9IH0gLmVtYWlsLWNvbnNlbnQtYm94IDppcygudGl0bGUtdHh0LCBwKXsgbWFyZ2luLWxlZnQ6MDsgcGFkZGluZzowOyBjb2xvcjojNDE0MTQxOyB9IC5lbWFpbC1jb25zZW50LWJveHsgYmFja2dyb3VuZC1jb2xvcjojZWVlOyBjb2xvcjojNDE0MTQxOyB9IC5lbWFpbC1jb25zZW50LWJveCAuaWNvbi10aXRsZXsgdGV4dC1hbGlnbjpjZW50ZXI7IH0KLyoqIC9jc3MvbWFpbi5jc3MgKiovCi4tbGVmdCB7ZmxvYXQ6bGVmdCFpbXBvcnRhbnQ7fSAuLXJpZ2h0IHtmbG9hdDpyaWdodH0gLi1zbWFsbCB7Zm9udC1zaXplOi44ZW07bWFyZ2luLWJvdHRvbToxLjg3NWVtO2xpbmUtaGVpZ2h0OjEuODc1ZW0haW1wb3J0YW50O30gLi1sYXJnZSB7Zm9udC1zaXplOjEuMmVtO2xpbmUtaGVpZ2h0OjIuNWVtO21hcmdpbi1ib3R0b206MS4yNWVtIWltcG9ydGFudDt9IC4taGlkZSB7ZGlzcGxheTpub25lIWltcG9ydGFudDt9IC4tcXVpZXQge2NvbG9yOiM2NjYhaW1wb3J0YW50O30gLi1sb3VkIHtjb2xvcjojMWIxYjFiIWltcG9ydGFudDt9IC4taGlnaGxpZ2h0IHtiYWNrZ3JvdW5kOiNmZjAhaW1wb3J0YW50O30gLi1hZGRlZCB7YmFja2dyb3VuZDojMDYwO2NvbG9yOiNmZmYhaW1wb3J0YW50O30gLi1yZW1vdmVkIHtiYWNrZ3JvdW5kOiM5MDA7Y29sb3I6I2ZmZiFpbXBvcnRhbnQ7fSAuLXB1c2gtZmlyc3Qge21hcmdpbi1sZWZ0OjA7cGFkZGluZy1sZWZ0OjAhaW1wb3J0YW50O30gLi1wdXNoLWxhc3Qge21hcmdpbi1yaWdodDowO3BhZGRpbmctcmlnaHQ6MCFpbXBvcnRhbnQ7fSAuLXB1c2gtbGVmdCB7bWFyZ2luLXRvcDowO3BhZGRpbmctdG9wOjAhaW1wb3J0YW50O30gLi1wdXNoLWJvdHRvbSB7bWFyZ2luLWJvdHRvbTowO3BhZGRpbmctYm90dG9tOjAhaW1wb3J0YW50O30gLi1ub2JvcmRlciB7Ym9yZGVyOjAhaW1wb3J0YW50O30gLi1ub2RlY29yYXRpb24sIC4tbm8tdGV4dC1kZWNvcmF0aW9uLCAuLW5vdGV4dC1kZWNvcmF0aW9uIHt0ZXh0LWRlY29yYXRpb246bm9uZSFpbXBvcnRhbnQ7fSAuLXRleHQtdXBwZXJjYXNlLCAuLXVwcGVyY2FzZSwgLnRleHQtdXBwZXJjYXNlIHt0ZXh0LXRyYW5zZm9ybTp2YXIoLS10eHQtdXBwZXIpO30gLi10ZXh0LWxvd2VyY2FzZSwgLi1sb3dlcmNhc2Uge3RleHQtdHJhbnNmb3JtOmxvd2VyY2FzZSFpbXBvcnRhbnQ7fSAuLWhpZGRlbiB7IGRpc3BsYXk6bm9uZTsgfSAuLXRleHQtYm9sZCwuYm9sZHtmb250LXdlaWdodDpib2xkIWltcG9ydGFudDt9IC4tdGV4dC1ub3JtYWwsLm5vcm1hbHtmb250LXdlaWdodDpub3JtYWwhaW1wb3J0YW50O30gLi1hbGlnbi10b3Age3ZlcnRpY2FsLWFsaWduOnRvcCFpbXBvcnRhbnQ7fSAuLWFsaWduLW1pZGRsZSB7dmVydGljYWwtYWxpZ246bWlkZGxlIWltcG9ydGFudDt9IC4tbGluZS1oMXsgbGluZS1oZWlnaHQ6MWVtOyB9IC4tbGluZS1oMnsgbGluZS1oZWlnaHQ6MmVtOyB9IC4tYm90dG9tMHsgYm90dG9tOjA7IH0gLi1ib3R0b20wLWltcG9ydGFudHsgYm90dG9tOjAhaW1wb3J0YW50OyB9IC5Qb3JzY2hlMnsgY2xlYXI6Ym90aDsgfSAuYmxhY2stdGV4dCB7IGNvbG9yOiMxYjFiMWI7IH0gOjpwbGFjZWhvbGRlciB7IHBhZGRpbmctdG9wOjFweDsgY29sb3I6I2E5YTlhOTsgb3BhY2l0eToxOyB9IDotbXMtaW5wdXQtcGxhY2Vob2xkZXIgeyBjb2xvcjojYTlhOWE5OyB9IDo6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsgY29sb3I6I2E5YTlhOTsgfSAjY2FyVGl0bGUgLmZhLWNoZXZyb24tcmlnaHQsIC5TcGVjaWZpY2F0aW9ucyAuZmEtY2hldnJvbi1yaWdodCB7IGJvcmRlci1yYWRpdXM6MzBweDsgd2lkdGg6MjBweDsgaGVpZ2h0OjI1cHg7IHBhZGRpbmctdG9wOjRweDsgcGFkZGluZy1sZWZ0OjlweDsgZmxvYXQ6bGVmdDsgbWFyZ2luLXRvcDo4cHg7IGZvbnQtc2l6ZToxLjM3NXJlbSA7IGJvcmRlcjoxcHggc29saWQgI2ZmZmZmZjsgYmFja2dyb3VuZC1jb2xvcjojMWIxYjFiOyBjb2xvcjojZmZmZmZmIDsgbWFyZ2luLXJpZ2h0OjEwcHg7IH0gLlNwZWNpZmljYXRpb25zIC5mYS1jaGV2cm9uLXJpZ2h0eyBtYXJnaW4tdG9wOjFweDsgfSAjY2FyVGl0bGUgLm1ha2VNb2RlbFllYXJ7IGZvbnQtc2l6ZToxLjU2M3JlbSA7IH0gI2NhclRpdGxlIC5kZWFsZXJMY2F0aW9uQ2FyVGl0bGUgeyBmb250LXdlaWdodDpub3JtYWw7IGNvbG9yOiM5YzljOWM7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGxldHRlci1zcGFjaW5nOi0xcHg7IH0gLmNhclRpdGxlIC5mYS1jaGV2cm9uLXJpZ2h0eyBib3JkZXItcmFkaXVzOjMwcHg7IHdpZHRoOjIwcHg7IGhlaWdodDoyNXB4OyBwYWRkaW5nLXRvcDo0cHg7IHBhZGRpbmctbGVmdDo5cHg7IGZsb2F0OmxlZnQ7IG1hcmdpbi10b3A6OHB4OyBmb250LXNpemU6MS4zNzVyZW0gOyBib3JkZXI6MXB4IHNvbGlkICNmZmZmZmY7IGJhY2tncm91bmQtY29sb3I6IzFiMWIxYjsgY29sb3I6I2ZmZmZmZiA7IG1hcmdpbi1yaWdodDoxMHB4OyB9IC5jYXJUaXRsZSAubWFrZU1vZGVsWWVhcnsgZm9udC1zaXplOjEuNDM4cmVtIDsgfSAuY2FyVGl0bGUgLmRlYWxlckxjYXRpb25DYXJUaXRsZSB7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgY29sb3I6IzljOWM5YzsgZm9udC1zaXplOjAuOTM4cmVtIDsgbGV0dGVyLXNwYWNpbmc6LTFweDsgfSAjU2VhcmNoVGl0bGUgLmZhLWNoZXZyb24tcmlnaHR7IGJvcmRlci1yYWRpdXM6MzBweDsgd2lkdGg6MzFweDsgaGVpZ2h0OjQxcHg7IHBhZGRpbmctdG9wOjVweDsgcGFkZGluZy1sZWZ0OjE0cHg7IGZsb2F0OmxlZnQ7IG1hcmdpbi10b3A6OHB4OyBmb250LXNpemU6Mi4xODhyZW0gOyBib3JkZXI6MXB4IHNvbGlkICNmZmZmZmY7IGJhY2tncm91bmQtY29sb3I6IzFiMWIxYjsgY29sb3I6I2ZmZmZmZiA7IG1hcmdpbi1yaWdodDoxMHB4OyB9ICNTZWFyY2hUaXRsZSAuZGVhbGVyTGNhdGlvbkNhclRpdGxlIHsgZm9udC13ZWlnaHQ6bm9ybWFsOyBjb2xvcjojOWM5YzljOyBmb250LXNpemU6MXJlbSA7IGxldHRlci1zcGFjaW5nOi0xcHg7IG1hcmdpbi1sZWZ0OjQ1cHg7IGRpc3BsYXk6YmxvY2s7IH0gLnVpLW11bHRpc2VsZWN0LWNoZWNrYm94ZXMgbGFiZWwgaW5wdXQgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgdG9wOjFweDsgbWFyZ2luLXJpZ2h0OjhweDsgaGVpZ2h0OjEzcHg7IH0gLnVpLXdpZGdldCwudWktc3RhdGUtaG92ZXIsIC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtaG92ZXIsIC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1ob3ZlciwgLnVpLXN0YXRlLWZvY3VzLCAudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWZvY3VzLCAudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZm9jdXMsIC51aS1zdGF0ZS1kZWZhdWx0LCAudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWRlZmF1bHQsIC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1kZWZhdWx0eyBiYWNrZ3JvdW5kOiNmZmYhaW1wb3J0YW50OyBjb2xvcjojNTU1OyBmb250LXNpemU6MC45MzhyZW0gIWltcG9ydGFudDsgfSAudWktc3RhdGUtZGVmYXVsdCwgLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1kZWZhdWx0LCAudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZGVmYXVsdHsgcGFkZGluZzo4cHggMTBweCFpbXBvcnRhbnQ7IH0gLnVpLW11bHRpc2VsZWN0LWNoZWNrYm94ZXMgbGl7IGZvbnQtc2l6ZTowLjkzOHJlbSAhaW1wb3J0YW50OyB9IC51aS1jb3JuZXItYWxseyBib3JkZXItcmFkaXVzOjBweCFpbXBvcnRhbnQ7IH0gLi1jb2xsYXBzZXsgYm9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlOyB9IC4tbGl7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyB9IC4tbm8tc2hhZG93LCAuLXNoYWRvdzAsIC4tbm9zaGFkb3d7IGJveC1zaGFkb3c6bm9uZSFpbXBvcnRhbnQ7IH0gLi11bmRlcmxpbmV7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUhaW1wb3J0YW50OyB9IC4tdG9wMHsgdG9wOjA7IH0gLi10ZXh0LWxlZnR7dGV4dC1hbGlnbjpsZWZ0IWltcG9ydGFudDt9IC4tdGV4dC1yaWdodHt0ZXh0LWFsaWduOnJpZ2h0IWltcG9ydGFudDt9IC4tdGV4dC1jZW50ZXJ7dGV4dC1hbGlnbjpjZW50ZXIhaW1wb3J0YW50O30gLi10ZXh0LXJlZCwgLi1yZWQtdGV4dHtjb2xvcjpyZWQhaW1wb3J0YW50O30gLi1ibG9ja3tkaXNwbGF5OmJsb2NrIWltcG9ydGFudDt9IC4taW5saW5lLWJsb2Nre2Rpc3BsYXk6aW5saW5lLWJsb2NrIWltcG9ydGFudDt9IC4tbm9uZSwgLi1oaWRkZW4sIC4taGlkZGUge2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnQ7fSAuLWlubGluZSB7ZGlzcGxheTppbmxpbmUhaW1wb3J0YW50O30gLi1jb2xvcjEgeyBjb2xvcjojNTc1NzU3IWltcG9ydGFudDt9IC4tdGl0bGUxIHsgZm9udC1zaXplOjEuNDM4cmVtICFpbXBvcnRhbnQ7IGZvbnQtY29sb3I6IzFiMWIxYiAhaW1wb3J0YW50OyB0ZXh0LWRlY29yYXRpb246bm9uZSFpbXBvcnRhbnQ7IH0gLi1pbnB1dCB7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGxpbmUtaGVpZ2h0OjE1cHg7IHZlcnRpY2FsLWFsaWduOm1pZGRsZTsgaGVpZ2h0OjMycHg7IGNvbG9yOiM0MDQwNDA7IHBhZGRpbmc6MHB4IDZweCFpbXBvcnRhbnQ7IG1hcmdpbjowcHg7IG91dGxpbmU6bm9uZTsgbWluLWhlaWdodDoyMHB4OyBib3JkZXI6MXB4IHNvbGlkICNjZWQ0ZGE7IGJvcmRlci1yYWRpdXM6LjI1cmVtOyB0cmFuc2l0aW9uOmJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LGJveC1zaGFkb3cgLjE1cyBlYXNlLWluLW91dDsgfSAuLWlucHV0OmZvY3VzLCAuLWlucHV0OmhvdmVyeyBib3JkZXItY29sb3I6IzgwYmRmZiAhaW1wb3J0YW50OyBib3gtc2hhZG93OjAgMCAwIDAuMnJlbSByZ2JhKDAsMTIzLDI1NSwuMjUpOyB9IC4tcG9zaXRpb24tc3RhdGljLCAuLXBvcy1zdGF0aWMsIC4tcG9zLXN0YXQge3Bvc2l0aW9uOnN0YXRpYyFpbXBvcnRhbnQ7fSAuLXBvc2l0aW9uLWFic29sdXRlLCAuLXBvcy1hYnNvbHV0ZSwgLi1wb3MtYWJzIHtwb3NpdGlvbjphYnNvbHV0ZSFpbXBvcnRhbnQ7fSAuLXBvc2l0aW9uLWZpeGVkLCAuLXBvcy1maXhlZCwgLi1wb3MtZml4IHtwb3NpdGlvbjpmaXhlZCFpbXBvcnRhbnQ7fSAuLXBvc2l0aW9uLXJlbGF0aXZlLCAuLXBvcy1yZWxhdGl2ZSwgLi1wb3MtcmVsIHtwb3NpdGlvbjpyZWxhdGl2ZSFpbXBvcnRhbnQ7fSAuLXBvc2l0aW9uLWluaGVyaXQsIC4tcG9zLWluaGVyaXQsIC4tcG9zLWluaCB7cG9zaXRpb246aW5oZXJpdCFpbXBvcnRhbnQ7fSAtbGgtMS0zLCAtbGluZS1oZWlnaHQtMS0zeyBsaW5lLWhlaWdodDoxLjM7IH0gLWxoLTIweyBsaW5lLWhlaWdodDoyMHB4OyB9IC4tZXJyb3IsIC4tYWxlcnQsIC4tbm90aWNlLCAuLXN1Y2Nlc3MsIC4taW5mbyB7cGFkZGluZzowLjhlbTttYXJnaW4tYm90dG9tOjFlbTtib3JkZXI6MnB4IHNvbGlkICNkZGQhaW1wb3J0YW50O30gLi1lcnJvciwgLi1hbGVydCB7YmFja2dyb3VuZDojZmJlM2U0O2NvbG9yOiM4YTFmMTE7Ym9yZGVyLWNvbG9yOiNmYmMyYzQhaW1wb3J0YW50O30gLi1ub3RpY2Uge2JhY2tncm91bmQ6I2ZmZjZiZjtjb2xvcjojNTE0NzIxO2JvcmRlci1jb2xvcjojZmZkMzI0IWltcG9ydGFudDt9IC4tc3VjY2VzcyB7YmFja2dyb3VuZDojZTZlZmMyO2NvbG9yOiMyNjQ0MDk7Ym9yZGVyLWNvbG9yOiNjNmQ4ODAhaW1wb3J0YW50O30gLi1pbmZvIHtiYWNrZ3JvdW5kOiNkNWVkZjg7Y29sb3I6IzIwNTc5MTtib3JkZXItY29sb3I6IzkyY2FlNCFpbXBvcnRhbnQ7fSAuLWVycm9yIGEsIC5hbGVydCBhIHtjb2xvcjojOGExZjExIWltcG9ydGFudDt9IC4tbm90aWNlIGEge2NvbG9yOiM1MTQ3MjEhaW1wb3J0YW50O30gLi1zdWNjZXNzIGEge2NvbG9yOiMyNjQ0MDkhaW1wb3J0YW50O30gLi1pbmZvIGEge2NvbG9yOiMyMDU3OTEhaW1wb3J0YW50O30gLi1ib3gge3BhZGRpbmc6MS41ZW07bWFyZ2luLWJvdHRvbToxLjVlbTtiYWNrZ3JvdW5kOiNlNWVDZjkhaW1wb3J0YW50O30gLWhyIHtiYWNrZ3JvdW5kOiNkZGRkZGQ7Y29sb3I6I2RkZGRkZDtjbGVhcjpib3RoO2Zsb2F0Om5vbmU7d2lkdGg6MTAwJTtoZWlnaHQ6MXB4O21hcmdpbjowIDAgMTdweDtib3JkZXI6bm9uZSFpbXBvcnRhbnQ7fSAtc3BhY2Uge2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojZmZmO3Zpc2liaWxpdHk6aGlkZGVuO2NsZWFyOmJvdGg7ZmxvYXQ6bm9uZTt3aWR0aDoxMDAlO2hlaWdodDoxcHg7bWFyZ2luOjAgMCAxN3B4O2JvcmRlcjpub25lIWltcG9ydGFudDt9IC4tY2xlYXJmaXg6YWZ0ZXIge2NvbnRlbnQ6IlwwMDIwIjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO2NsZWFyOmJvdGg7dmlzaWJpbGl0eTpoaWRkZW47b3ZlcmZsb3c6aGlkZGVuIWltcG9ydGFudDt9IC4tY2xlYXJmaXh7ZGlzcGxheTpibG9jayFpbXBvcnRhbnQ7fSAuLWNsZWFyIHtjbGVhcjpib3RoIWltcG9ydGFudDt9IC5pbnZpc2libGUge3Zpc2liaWxpdHk6aGlkZGVuO30gLmNsZWFyZml4OmFmdGVyIHtjb250ZW50OiIiOyBkaXNwbGF5OnRhYmxlOyBjbGVhcjpib3RoO30gLi1vdmVyZmxvdy1oaWRkZW4ge292ZXJmbG93OmhpZGRlbiFpbXBvcnRhbnQ7fSAuLXc1IHt3aWR0aDo1cHghaW1wb3J0YW50O30gLi13MTAge3dpZHRoOjEwcHghaW1wb3J0YW50O30gLi13MTUge3dpZHRoOjE1cHghaW1wb3J0YW50O30gLi13MTgge3dpZHRoOjE4cHghaW1wb3J0YW50O30gLi13MjAge3dpZHRoOjIwcHghaW1wb3J0YW50O30gLi13MjUge3dpZHRoOjI1cHghaW1wb3J0YW50O30gLi13MzAge3dpZHRoOjMwcHghaW1wb3J0YW50O30gLi13MzUge3dpZHRoOjM1cHghaW1wb3J0YW50O30gLi13NDAge3dpZHRoOjQwcHghaW1wb3J0YW50O30gLi13NDUge3dpZHRoOjQ1cHghaW1wb3J0YW50O30gLi13NTAge3dpZHRoOjUwcHghaW1wb3J0YW50O30gLi13NTUge3dpZHRoOjU1cHghaW1wb3J0YW50O30gLi13NjAge3dpZHRoOjYwcHghaW1wb3J0YW50O30gLi13NjUge3dpZHRoOjY1cHghaW1wb3J0YW50O30gLi13NzAge3dpZHRoOjcwcHghaW1wb3J0YW50O30gLi13NzMge3dpZHRoOjczcHghaW1wb3J0YW50O30gLi13NzUge3dpZHRoOjc1cHghaW1wb3J0YW50O30gLi13ODAge3dpZHRoOjgwcHghaW1wb3J0YW50O30gLi13ODUge3dpZHRoOjg1cHghaW1wb3J0YW50O30gLi13ODgge3dpZHRoOjg4cHghaW1wb3J0YW50O30gLi13OTAge3dpZHRoOjkwcHghaW1wb3J0YW50O30gLi13OTUge3dpZHRoOjk1cHghaW1wb3J0YW50O30gLi13MTAwIHt3aWR0aDoxMDBweCFpbXBvcnRhbnQ7fSAuLXcxMTAge3dpZHRoOjExMHB4IWltcG9ydGFudDt9IC4tdzEyMCB7d2lkdGg6MTIwcHghaW1wb3J0YW50O30gLi13MTI1IHt3aWR0aDoxMjVweCFpbXBvcnRhbnQ7fSAuLXcxMzAge3dpZHRoOjEzMHB4IWltcG9ydGFudDt9IC4tdzEzNSB7d2lkdGg6MTM1cHghaW1wb3J0YW50O30gLi13MTQwIHt3aWR0aDoxNDBweCFpbXBvcnRhbnQ7fSAuLXcxNDMge3dpZHRoOjE0M3B4IWltcG9ydGFudDt9IC4tdzE0NSB7d2lkdGg6MTQ1cHghaW1wb3J0YW50O30gLi13MTUwIHt3aWR0aDoxNTBweCFpbXBvcnRhbnQ7fSAuLXcxNzAge3dpZHRoOjE4MHB4IWltcG9ydGFudDt9IC4tdzE4MCB7d2lkdGg6MTgwcHghaW1wb3J0YW50O30gLi13MTg1IHt3aWR0aDoxODVweCFpbXBvcnRhbnQ7fSAuLXcxOTAge3dpZHRoOjE5MHB4IWltcG9ydGFudDt9IC4tdzIwMCB7d2lkdGg6MjAwcHghaW1wb3J0YW50O30gLi13MjEwIHt3aWR0aDoyMTBweCFpbXBvcnRhbnQ7fSAuLXcyMTUge3dpZHRoOjIxNXB4IWltcG9ydGFudDt9IC4tdzIyMCB7d2lkdGg6MjIwcHghaW1wb3J0YW50O30gLi13MjMwIHt3aWR0aDoyMzBweCFpbXBvcnRhbnQ7fSAuLXcyNDAge3dpZHRoOjI0MHB4IWltcG9ydGFudDt9IC4tdzI1MCB7d2lkdGg6MjUwcHghaW1wb3J0YW50O30gLi13MjU1IHt3aWR0aDoyNTVweCFpbXBvcnRhbnQ7fSAuLXcyNjAge3dpZHRoOjI2MHB4IWltcG9ydGFudDt9IC4tdzI3MCB7d2lkdGg6MjcwcHghaW1wb3J0YW50O30gLi13Mjc1IHt3aWR0aDoyNzVweCFpbXBvcnRhbnQ7fSAuLXcyODAge3dpZHRoOjI4MHB4IWltcG9ydGFudDt9IC4tdzI5MCB7d2lkdGg6MjkwcHghaW1wb3J0YW50O30gLi13MzAwIHt3aWR0aDozMDBweCFpbXBvcnRhbnQ7fSAuLXczMTUge3dpZHRoOjMxNXB4IWltcG9ydGFudDt9IC4tdzMyMCB7d2lkdGg6MzIwcHghaW1wb3J0YW50O30gLi13MzI1IHt3aWR0aDozMjVweCFpbXBvcnRhbnQ7fSAuLXczNTAge3dpZHRoOjM1MHB4IWltcG9ydGFudDt9IC4tdzQwMCB7d2lkdGg6NDAwcHghaW1wb3J0YW50O30gLi13NDUwIHt3aWR0aDo0NTBweCFpbXBvcnRhbnQ7fSAuLXc0NjAge3dpZHRoOjQ1MHB4IWltcG9ydGFudDt9IC4tdzUwMCB7d2lkdGg6NTAwcHghaW1wb3J0YW50O30gLi13NjMwIHt3aWR0aDo2MzBweCFpbXBvcnRhbnQ7fSAuLXc2MjAge3dpZHRoOjYyMHB4IWltcG9ydGFudDt9IC4tdzYyNSB7d2lkdGg6NjI1cHghaW1wb3J0YW50O30gLi13Njc1IHt3aWR0aDo2NzVweCFpbXBvcnRhbnQ7fSAuLXc2ODAge3dpZHRoOjY4MHB4IWltcG9ydGFudDt9IC4tdzY3MCB7d2lkdGg6NjcwcHghaW1wb3J0YW50O30gLi13NzAwIHt3aWR0aDo3MDBweCFpbXBvcnRhbnQ7fSAuLXc3MjAge3dpZHRoOjcyMHB4IWltcG9ydGFudDt9IC4tdzcyNSB7d2lkdGg6NzI1cHghaW1wb3J0YW50O30gLi13NzMwIHt3aWR0aDo3MzBweCFpbXBvcnRhbnQ7fSAuLXc3NTAge3dpZHRoOjc1MHB4IWltcG9ydGFudDt9IC4tdzgwMCB7d2lkdGg6ODAwcHghaW1wb3J0YW50O30gLi13OTAwIHt3aWR0aDo5MDBweCFpbXBvcnRhbnQ7fSAuLXc5Mzcge3dpZHRoOjkzN3B4IWltcG9ydGFudDt9IC4tdzk0MCB7d2lkdGg6OTQwcHghaW1wb3J0YW50O30gLi13OTYwIHt3aWR0aDo5NjBweCFpbXBvcnRhbnQ7fSAuLXc5NzAge3dpZHRoOjk3MHB4IWltcG9ydGFudDt9IC4tdzEwMDAge3dpZHRoOjEwMDBweCFpbXBvcnRhbnQ7fSAuLXc1cCB7d2lkdGg6NSUhaW1wb3J0YW50O30gLi13MTBwIHt3aWR0aDoxMCUhaW1wb3J0YW50O30gLi13MTVwIHt3aWR0aDoyMCUhaW1wb3J0YW50O30gLi13MjBwIHt3aWR0aDoyMCUhaW1wb3J0YW50O30gLi13cSwgLi13MjVwIHt3aWR0aDoyNSUhaW1wb3J0YW50O30gLi13MzBwIHt3aWR0aDozMCUhaW1wb3J0YW50O30gLi13MzVwIHt3aWR0aDozNSUhaW1wb3J0YW50O30gLi13NDBwIHt3aWR0aDo0MCUhaW1wb3J0YW50O30gLi13NDVwIHt3aWR0aDo0NSUhaW1wb3J0YW50O30gLi13aCwuLXc1MHAge3dpZHRoOjUwJSFpbXBvcnRhbnQ7fSAuLXc1NXAge3dpZHRoOjU1JSFpbXBvcnRhbnQ7fSAuLXc2MHAge3dpZHRoOjYwJSFpbXBvcnRhbnQ7fSAuLXc2NXAge3dpZHRoOjY1JSFpbXBvcnRhbnQ7fSAuLXc3MHAge3dpZHRoOjcwJSFpbXBvcnRhbnQ7fSAuLXc3NXAge3dpZHRoOjc1JSFpbXBvcnRhbnQ7fSAuLXc4MHAge3dpZHRoOjgwJSFpbXBvcnRhbnQ7fSAuLXc4NXAge3dpZHRoOjg1JSFpbXBvcnRhbnQ7fSAuLXc5MHAge3dpZHRoOjkwJSFpbXBvcnRhbnQ7fSAuLXc5NXAge3dpZHRoOjk1JSFpbXBvcnRhbnQ7fSAuLXdmLC4tdzEwMHAge3dpZHRoOjEwMCUhaW1wb3J0YW50O30gLi1tYXgtdy1ub25lIHttYXgtd2lkdGg6bm9uZSFpbXBvcnRhbnQ7fSAuLWg1IHtoZWlnaHQ6NXB4IWltcG9ydGFudDt9IC4taDYge2hlaWdodDo2cHghaW1wb3J0YW50O30gLi1oNyB7aGVpZ2h0OjdweCFpbXBvcnRhbnQ7fSAuLWg4IHtoZWlnaHQ6OHB4IWltcG9ydGFudDt9IC4taDkge2hlaWdodDo5cHghaW1wb3J0YW50O30gLi1oMTAge2hlaWdodDoxMHB4IWltcG9ydGFudDt9IC4taDExIHtoZWlnaHQ6MTFweCFpbXBvcnRhbnQ7fSAuLWgxMiB7aGVpZ2h0OjEycHghaW1wb3J0YW50O30gLi1oMTMge2hlaWdodDoxM3B4IWltcG9ydGFudDt9IC4taDE0IHtoZWlnaHQ6MTRweCFpbXBvcnRhbnQ7fSAuLWgxNSB7aGVpZ2h0OjE1cHghaW1wb3J0YW50O30gLi1oMjAge2hlaWdodDoyMHB4IWltcG9ydGFudDt9IC4taDI1IHtoZWlnaHQ6MjVweCFpbXBvcnRhbnQ7fSAuLWgzMCB7aGVpZ2h0OjMwcHghaW1wb3J0YW50O30gLi1oMzIge2hlaWdodDozMnB4IWltcG9ydGFudDt9IC4taDM1IHtoZWlnaHQ6MzVweCFpbXBvcnRhbnQ7fSAuLWg0MCB7aGVpZ2h0OjQwcHghaW1wb3J0YW50O30gLi1oNDUge2hlaWdodDo0NXB4IWltcG9ydGFudDt9IC4taDUwIHtoZWlnaHQ6NTBweCFpbXBvcnRhbnQ7fSAuLWg1NSB7aGVpZ2h0OjU1cHghaW1wb3J0YW50O30gLi1oNjAge2hlaWdodDo2MHB4IWltcG9ydGFudDt9IC4taDY1IHtoZWlnaHQ6NjVweCFpbXBvcnRhbnQ7fSAuLWg3MCB7aGVpZ2h0OjcwcHghaW1wb3J0YW50O30gLi1oNzUge2hlaWdodDo3NXB4IWltcG9ydGFudDt9IC4taDgwIHtoZWlnaHQ6ODBweCFpbXBvcnRhbnQ7fSAuLWg4NSB7aGVpZ2h0Ojg1cHghaW1wb3J0YW50O30gLi1oOTAge2hlaWdodDo5MHB4IWltcG9ydGFudDt9IC4taDk1IHtoZWlnaHQ6OTVweCFpbXBvcnRhbnQ7fSAuLWgxMDAge2hlaWdodDoxMDBweCFpbXBvcnRhbnQ7fSAuLWgxMTAge2hlaWdodDoxMTBweCFpbXBvcnRhbnQ7fSAuLWgxMjAge2hlaWdodDoxMjBweCFpbXBvcnRhbnQ7fSAuLWgxMzAge2hlaWdodDoxMzBweCFpbXBvcnRhbnQ7fSAuLWgxNDAge2hlaWdodDoxNDBweCFpbXBvcnRhbnQ7fSAuLWgxNTAge2hlaWdodDoxNTBweCFpbXBvcnRhbnQ7fSAuLWgxNjAge2hlaWdodDoxNjBweCFpbXBvcnRhbnQ7fSAuLWgxNzAge2hlaWdodDoxNzBweCFpbXBvcnRhbnQ7fSAuLWgxODAge2hlaWdodDoxODBweCFpbXBvcnRhbnQ7fSAuLWgxOTAge2hlaWdodDoxOTBweCFpbXBvcnRhbnQ7fSAuLWgyMDAge2hlaWdodDoyMDBweCFpbXBvcnRhbnQ7fSAuLWgyMjAge2hlaWdodDoyMjBweCFpbXBvcnRhbnQ7fSAuLWgyMzAge2hlaWdodDoyMzBweCFpbXBvcnRhbnQ7fSAuLWgyNDAge2hlaWdodDoyNDBweCFpbXBvcnRhbnQ7fSAuLWgyNDUge2hlaWdodDoyNDVweCFpbXBvcnRhbnQ7fSAuLWgyNDgge2hlaWdodDoyNDhweCFpbXBvcnRhbnQ7fSAuLWgyNTAge2hlaWdodDoyNTBweCFpbXBvcnRhbnQ7fSAuLWgyNTUge2hlaWdodDoyNTVweCFpbXBvcnRhbnQ7fSAuLWgyNjAge2hlaWdodDoyNjBweCFpbXBvcnRhbnQ7fSAuLWgzMDAge2hlaWdodDozMDBweCFpbXBvcnRhbnQ7fSAuLWgzNTAge2hlaWdodDozNTBweCFpbXBvcnRhbnQ7fSAuLWg0MDAge2hlaWdodDo0MDBweCFpbXBvcnRhbnQ7fSAuLWg0NTAge2hlaWdodDo0NTBweCFpbXBvcnRhbnQ7fSAuLWg1MDAge2hlaWdodDo1MDBweCFpbXBvcnRhbnQ7fSAuLWg1NTAge2hlaWdodDo1NTBweCFpbXBvcnRhbnQ7fSAuLWg2MDAge2hlaWdodDo2MDBweCFpbXBvcnRhbnQ7fSAuLWg2NTAge2hlaWdodDo2NTBweCFpbXBvcnRhbnQ7fSAuLWg3MDAge2hlaWdodDo3MDBweCFpbXBvcnRhbnQ7fSAuLWg3NTAge2hlaWdodDo3NTBweCFpbXBvcnRhbnQ7fSAuLWg4MDAge2hlaWdodDo4MDBweCFpbXBvcnRhbnQ7fSAuLWg5MDAge2hlaWdodDo5MDBweCFpbXBvcnRhbnQ7fSAuLWgxMDAwIHtoZWlnaHQ6MTAwMHB4IWltcG9ydGFudDt9IC4taDVwIHtoZWlnaHQ6NSUhaW1wb3J0YW50O30gLi1oMTBwIHtoZWlnaHQ6MTAlIWltcG9ydGFudDt9IC4taDE1cCB7aGVpZ2h0OjE1JSFpbXBvcnRhbnQ7fSAuLWgyMHAge2hlaWdodDoyMCUhaW1wb3J0YW50O30gLi1ocSwgLi1oMjVwIHtoZWlnaHQ6MjUlIWltcG9ydGFudDt9IC4taGgsLi1oNTBwIHtoZWlnaHQ6NTAlIWltcG9ydGFudDt9IC4taGYsLi1oMTAwcCB7aGVpZ2h0OjEwMCUhaW1wb3J0YW50O30gLi1ib3gtcy1ieyAtd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDsgLW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfSAuLWJveC1jb250ZW50eyBib3gtc2l6aW5nOmNvbnRlbnQtYm94OyB9IC4tZmxleHtkaXNwbGF5OmZsZXg7fSAuLWZsZXgtY29sdW1ue2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47fSAuLWFpLWNlbnRlcnthbGlnbi1pdGVtczpjZW50ZXI7fSAuLXAwLC4tbm9wYWRkaW5nLC4tbm9wYWRkaW5ncyB7cGFkZGluZzowO30gLi1wMSB7cGFkZGluZzoxcHghaW1wb3J0YW50O30gLi1wMiB7cGFkZGluZzoycHghaW1wb3J0YW50O30gLi1wMyB7cGFkZGluZzozcHghaW1wb3J0YW50O30gLi1wNCB7cGFkZGluZzo0cHghaW1wb3J0YW50O30gLi1wNSB7cGFkZGluZzo1cHghaW1wb3J0YW50O30gLi1wNiB7cGFkZGluZzo2cHghaW1wb3J0YW50O30gLi1wNyB7cGFkZGluZzo3cHghaW1wb3J0YW50O30gLi1wOCB7cGFkZGluZzo4cHghaW1wb3J0YW50O30gLi1wOSB7cGFkZGluZzo5cHghaW1wb3J0YW50O30gLi1wMTAge3BhZGRpbmc6MTBweCFpbXBvcnRhbnQ7fSAuLXAxNSB7cGFkZGluZzoxNXB4IWltcG9ydGFudDt9IC4tcDIwIHtwYWRkaW5nOjIwcHghaW1wb3J0YW50O30gLi1wMjUge3BhZGRpbmc6MjVweCFpbXBvcnRhbnQ7fSAuLXAzMCB7cGFkZGluZzozMHB4IWltcG9ydGFudDt9IC4tcDM1IHtwYWRkaW5nOjM1cHghaW1wb3J0YW50O30gLi1wNDAge3BhZGRpbmc6NDBweCFpbXBvcnRhbnQ7fSAuLXA0NSB7cGFkZGluZzo0NXB4IWltcG9ydGFudDt9IC4tcDUwIHtwYWRkaW5nOjUwcHghaW1wb3J0YW50O30gLi1wbDAge3BhZGRpbmctbGVmdDowIWltcG9ydGFudDt9IC4tcGwxIHtwYWRkaW5nLWxlZnQ6MXB4IWltcG9ydGFudDt9IC4tcGwyIHtwYWRkaW5nLWxlZnQ6MnB4IWltcG9ydGFudDt9IC4tcGwzIHtwYWRkaW5nLWxlZnQ6M3B4IWltcG9ydGFudDt9IC4tcGw0IHtwYWRkaW5nLWxlZnQ6NHB4IWltcG9ydGFudDt9IC4tcGw1IHtwYWRkaW5nLWxlZnQ6NXB4IWltcG9ydGFudDt9IC4tcGw2IHtwYWRkaW5nLWxlZnQ6NnB4IWltcG9ydGFudDt9IC4tcGw3IHtwYWRkaW5nLWxlZnQ6N3B4IWltcG9ydGFudDt9IC4tcGw4IHtwYWRkaW5nLWxlZnQ6OHB4IWltcG9ydGFudDt9IC4tcGw5IHtwYWRkaW5nLWxlZnQ6OXB4IWltcG9ydGFudDt9IC4tcGwxMCB7cGFkZGluZy1sZWZ0OjEwcHghaW1wb3J0YW50O30gLi1wbDE1IHtwYWRkaW5nLWxlZnQ6MTVweCFpbXBvcnRhbnQ7fSAuLXBsMTYge3BhZGRpbmctbGVmdDoxNnB4IWltcG9ydGFudDt9IC4tcGwxNyB7cGFkZGluZy1sZWZ0OjE3cHghaW1wb3J0YW50O30gLi1wbDIwIHtwYWRkaW5nLWxlZnQ6MjBweCFpbXBvcnRhbnQ7fSAuLXBsMjUge3BhZGRpbmctbGVmdDoyNXB4IWltcG9ydGFudDt9IC4tcGwzMCB7cGFkZGluZy1sZWZ0OjMwcHghaW1wb3J0YW50O30gLi1wbDM1IHtwYWRkaW5nLWxlZnQ6MzVweCFpbXBvcnRhbnQ7fSAuLXBsNDAge3BhZGRpbmctbGVmdDo0MHB4IWltcG9ydGFudDt9IC4tcGw0NSB7cGFkZGluZy1sZWZ0OjQ1cHghaW1wb3J0YW50O30gLi1wbDUwIHtwYWRkaW5nLWxlZnQ6NTBweCFpbXBvcnRhbnQ7fSAuLXBsNTUge3BhZGRpbmctbGVmdDo1NXB4IWltcG9ydGFudDt9IC4tcHIwIHtwYWRkaW5nLXJpZ2h0OjAhaW1wb3J0YW50O30gLi1wcjEge3BhZGRpbmctcmlnaHQ6MXB4IWltcG9ydGFudDt9IC4tcHIyIHtwYWRkaW5nLXJpZ2h0OjJweCFpbXBvcnRhbnQ7fSAuLXByMyB7cGFkZGluZy1yaWdodDozcHghaW1wb3J0YW50O30gLi1wcjQge3BhZGRpbmctcmlnaHQ6NHB4IWltcG9ydGFudDt9IC4tcHI1IHtwYWRkaW5nLXJpZ2h0OjVweCFpbXBvcnRhbnQ7fSAuLXByNiB7cGFkZGluZy1yaWdodDo2cHghaW1wb3J0YW50O30gLi1wcjcge3BhZGRpbmctcmlnaHQ6N3B4IWltcG9ydGFudDt9IC4tcHI4IHtwYWRkaW5nLXJpZ2h0OjhweCFpbXBvcnRhbnQ7fSAuLXByOSB7cGFkZGluZy1yaWdodDo5cHghaW1wb3J0YW50O30gLi1wcjEwIHtwYWRkaW5nLXJpZ2h0OjEwcHghaW1wb3J0YW50O30gLi1wcjE1IHtwYWRkaW5nLXJpZ2h0OjE1cHghaW1wb3J0YW50O30gLi1wcjIwIHtwYWRkaW5nLXJpZ2h0OjIwcHghaW1wb3J0YW50O30gLi1wcjI1IHtwYWRkaW5nLXJpZ2h0OjI1cHghaW1wb3J0YW50O30gLi1wcjMwIHtwYWRkaW5nLXJpZ2h0OjMwcHghaW1wb3J0YW50O30gLi1wcjM1IHtwYWRkaW5nLXJpZ2h0OjM1cHghaW1wb3J0YW50O30gLi1wcjQwIHtwYWRkaW5nLXJpZ2h0OjQwcHghaW1wb3J0YW50O30gLi1wcjQ1IHtwYWRkaW5nLXJpZ2h0OjQ1cHghaW1wb3J0YW50O30gLi1wcjUwIHtwYWRkaW5nLXJpZ2h0OjUwcHghaW1wb3J0YW50O30gLi1wcjU1IHtwYWRkaW5nLXJpZ2h0OjU1cHghaW1wb3J0YW50O30gLi1wdDB7cGFkZGluZy10b3A6MCFpbXBvcnRhbnQ7fSAuLXB0MSB7cGFkZGluZy10b3A6MXB4IWltcG9ydGFudDt9IC4tcHQyIHtwYWRkaW5nLXRvcDoycHghaW1wb3J0YW50O30gLi1wdDMge3BhZGRpbmctdG9wOjNweCFpbXBvcnRhbnQ7fSAuLXB0NCB7cGFkZGluZy10b3A6NHB4IWltcG9ydGFudDt9IC4tcHQ1IHtwYWRkaW5nLXRvcDo1cHghaW1wb3J0YW50O30gLi1wdDYge3BhZGRpbmctdG9wOjZweCFpbXBvcnRhbnQ7fSAuLXB0NyB7cGFkZGluZy10b3A6N3B4IWltcG9ydGFudDt9IC4tcHQ4IHtwYWRkaW5nLXRvcDo4cHghaW1wb3J0YW50O30gLi1wdDkge3BhZGRpbmctdG9wOjlweCFpbXBvcnRhbnQ7fSAuLXB0MTAge3BhZGRpbmctdG9wOjEwcHghaW1wb3J0YW50O30gLi1wdDE1IHtwYWRkaW5nLXRvcDoxNXB4IWltcG9ydGFudDt9IC4tcHQyMCB7cGFkZGluZy10b3A6MjBweCFpbXBvcnRhbnQ7fSAuLXB0MjUge3BhZGRpbmctdG9wOjI1cHghaW1wb3J0YW50O30gLi1wdDMwIHtwYWRkaW5nLXRvcDozMHB4IWltcG9ydGFudDt9IC4tcHQzNSB7cGFkZGluZy10b3A6MzVweCFpbXBvcnRhbnQ7fSAuLXB0NDAge3BhZGRpbmctdG9wOjQwcHghaW1wb3J0YW50O30gLi1wdDQ1IHtwYWRkaW5nLXRvcDo0NXB4IWltcG9ydGFudDt9IC4tcHQ1MCB7cGFkZGluZy10b3A6NTBweCFpbXBvcnRhbnQ7fSAuLXB0NTUge3BhZGRpbmctdG9wOjU1cHghaW1wb3J0YW50O30gLi1wdDIwMCB7cGFkZGluZy10b3A6MjAwcHghaW1wb3J0YW50O30gLi1wYjAge3BhZGRpbmctYm90dG9tOjAhaW1wb3J0YW50O30gLi1wYjEge3BhZGRpbmctYm90dG9tOjFweCFpbXBvcnRhbnQ7fSAuLXBiMiB7cGFkZGluZy1ib3R0b206MnB4IWltcG9ydGFudDt9IC4tcGIzIHtwYWRkaW5nLWJvdHRvbTozcHghaW1wb3J0YW50O30gLi1wYjQge3BhZGRpbmctYm90dG9tOjRweCFpbXBvcnRhbnQ7fSAuLXBiNSB7cGFkZGluZy1ib3R0b206NXB4IWltcG9ydGFudDt9IC4tcGI2IHtwYWRkaW5nLWJvdHRvbTo2cHghaW1wb3J0YW50O30gLi1wYjcge3BhZGRpbmctYm90dG9tOjdweCFpbXBvcnRhbnQ7fSAuLXBiOCB7cGFkZGluZy1ib3R0b206OHB4IWltcG9ydGFudDt9IC4tcGI5IHtwYWRkaW5nLWJvdHRvbTo5cHghaW1wb3J0YW50O30gLi1wYjEwIHtwYWRkaW5nLWJvdHRvbToxMHB4IWltcG9ydGFudDt9IC4tcGIxNSB7cGFkZGluZy1ib3R0b206MTVweCFpbXBvcnRhbnQ7fSAuLXBiMjAge3BhZGRpbmctYm90dG9tOjIwcHghaW1wb3J0YW50O30gLi1wYjI1IHtwYWRkaW5nLWJvdHRvbToyNXB4IWltcG9ydGFudDt9IC4tcGIzMCB7cGFkZGluZy1ib3R0b206MzBweCFpbXBvcnRhbnQ7fSAuLXBiNDAge3BhZGRpbmctYm90dG9tOjQwcHghaW1wb3J0YW50O30gLWJvcmRlci1yYWRpdXMwLC1yYWRpdXMwLC1yYWQwIHtib3JkZXItcmFkaXVzOjBweCFpbXBvcnRhbnQ7fSAtYm9yZGVyLXJhZGl1czEsLXJhZGl1czEsLXJhZDEge2JvcmRlci1yYWRpdXM6MHB4IWltcG9ydGFudDt9IC1ib3JkZXItcmFkaXVzMiwtcmFkaXVzMiwtcmFkMiB7Ym9yZGVyLXJhZGl1czowcHghaW1wb3J0YW50O30gLWJvcmRlci1yYWRpdXMzLC1yYWRpdXMzLC1yYWQzIHtib3JkZXItcmFkaXVzOjBweCFpbXBvcnRhbnQ7fSAtYm9yZGVyLXJhZGl1czQsLXJhZGl1czQsLXJhZDQge2JvcmRlci1yYWRpdXM6MHB4IWltcG9ydGFudDt9IC1ib3JkZXItcmFkaXVzNSwtcmFkaXVzNSwtcmFkNSB7Ym9yZGVyLXJhZGl1czowcHghaW1wb3J0YW50O30gLWJvcmRlci1yYWRpdXM2LC1yYWRpdXM2LC1yYWQ2IHtib3JkZXItcmFkaXVzOjBweCFpbXBvcnRhbnQ7fSAtYm9yZGVyLXJhZGl1czcsLXJhZGl1czcsLXJhZDcge2JvcmRlci1yYWRpdXM6MHB4IWltcG9ydGFudDt9IC1ib3JkZXItcmFkaXVzOCwtcmFkaXVzOCwtcmFkOCB7Ym9yZGVyLXJhZGl1czowcHghaW1wb3J0YW50O30gLWJvcmRlci1yYWRpdXM5LC1yYWRpdXM5LC1yYWQ5IHtib3JkZXItcmFkaXVzOjBweCFpbXBvcnRhbnQ7fSAtYm9yZGVyLXJhZGl1czEwLC1yYWRpdXMxMCwtcmFkMTAge2JvcmRlci1yYWRpdXM6MHB4IWltcG9ydGFudDt9IC4tbWF1dG8ge21hcmdpbjphdXRvIWltcG9ydGFudDt9IC4tbTAgLi1ub21hcmdpbnMsLi1ub21hcmdpbnttYXJnaW46MCFpbXBvcnRhbnQ7fSAuLW0xIHttYXJnaW46MXB4IWltcG9ydGFudDt9IC4tbTIge21hcmdpbjoycHghaW1wb3J0YW50O30gLi1tMyB7bWFyZ2luOjNweCFpbXBvcnRhbnQ7fSAuLW00IHttYXJnaW46NHB4IWltcG9ydGFudDt9IC4tbTUge21hcmdpbjo1cHghaW1wb3J0YW50O30gLi1tNiB7bWFyZ2luOjZweCFpbXBvcnRhbnQ7fSAuLW03IHttYXJnaW46N3B4IWltcG9ydGFudDt9IC4tbTgge21hcmdpbjo4cHghaW1wb3J0YW50O30gLi1tOSB7bWFyZ2luOjlweCFpbXBvcnRhbnQ7fSAuLW0xMCB7bWFyZ2luOjEwcHghaW1wb3J0YW50O30gLi1tMTUge21hcmdpbjoxNXB4IWltcG9ydGFudDt9IC4tbTIwIHttYXJnaW46MjBweCFpbXBvcnRhbnQ7fSAuLW0yMiB7bWFyZ2luOjIycHghaW1wb3J0YW50O30gLi1tMjUge21hcmdpbjoyNXB4IWltcG9ydGFudDt9IC4tbTVwIHttYXJnaW46NSUhaW1wb3J0YW50O30gLi1tMTBwIHttYXJnaW46MTAlIWltcG9ydGFudDt9IC4tbTE1cCB7bWFyZ2luOjE1JSFpbXBvcnRhbnQ7fSAuLW0yMHAge21hcmdpbjoyMCUhaW1wb3J0YW50O30gLi1tMjVwIHttYXJnaW46MjUlIWltcG9ydGFudDt9IC4tbWxhdXRvIHttYXJnaW4tbGVmdDphdXRvIWltcG9ydGFudDt9IC4tbWwwIHttYXJnaW4tbGVmdDowIWltcG9ydGFudDt9IC4tbWwxIHttYXJnaW4tbGVmdDoxcHghaW1wb3J0YW50O30gLi1tbDIge21hcmdpbi1sZWZ0OjJweCFpbXBvcnRhbnQ7fSAuLW1sMyB7bWFyZ2luLWxlZnQ6M3B4IWltcG9ydGFudDt9IC4tbWw0IHttYXJnaW4tbGVmdDo0cHghaW1wb3J0YW50O30gLi1tbDUge21hcmdpbi1sZWZ0OjVweCFpbXBvcnRhbnQ7fSAuLW1sNiB7bWFyZ2luLWxlZnQ6NnB4IWltcG9ydGFudDt9IC4tbWw3IHttYXJnaW4tbGVmdDo3cHghaW1wb3J0YW50O30gLi1tbDgge21hcmdpbi1sZWZ0OjhweCFpbXBvcnRhbnQ7fSAuLW1sOSB7bWFyZ2luLWxlZnQ6OXB4IWltcG9ydGFudDt9IC4tbWwxMCB7bWFyZ2luLWxlZnQ6MTBweCFpbXBvcnRhbnQ7fSAuLW1sMTUge21hcmdpbi1sZWZ0OjE1cHghaW1wb3J0YW50O30gLi1tbDIwIHttYXJnaW4tbGVmdDoyMHB4IWltcG9ydGFudDt9IC4tbWwyNSB7bWFyZ2luLWxlZnQ6MjVweCFpbXBvcnRhbnQ7fSAuLW1sMjcge21hcmdpbi1sZWZ0OjI3cHghaW1wb3J0YW50O30gLi1tbDMwIHttYXJnaW4tbGVmdDozMHB4IWltcG9ydGFudDt9IC4tbWw1MCB7bWFyZ2luLWxlZnQ6NTBweCFpbXBvcnRhbnQ7fSAuLW1sODAge21hcmdpbi1sZWZ0OjgwcHghaW1wb3J0YW50O30gLi1tbDEwMCB7bWFyZ2luLWxlZnQ6MTAwcHghaW1wb3J0YW50O30gLi1tbDEzMCB7bWFyZ2luLWxlZnQ6MTMwcHghaW1wb3J0YW50O30gLi1tbDE1MCB7bWFyZ2luLWxlZnQ6MTUwcHghaW1wb3J0YW50O30gLi1tbDJwIHttYXJnaW4tbGVmdDoyJSFpbXBvcnRhbnQ7fSAuLW1sM3Age21hcmdpbi1sZWZ0OjMlIWltcG9ydGFudDt9IC4tbWw1cCB7bWFyZ2luLWxlZnQ6NSUhaW1wb3J0YW50O30gLi1tbDEwcCB7bWFyZ2luLWxlZnQ6MTAlIWltcG9ydGFudDt9IC4tbWwxNXAge21hcmdpbi1sZWZ0OjE1JSFpbXBvcnRhbnQ7fSAuLW1sMjBwIHttYXJnaW4tbGVmdDoyMCUhaW1wb3J0YW50O30gLi1tbDI1cCB7bWFyZ2luLWxlZnQ6MjUlIWltcG9ydGFudDt9IC4tbXJhdXRvIHttYXJnaW4tcmlnaHQ6YXV0byFpbXBvcnRhbnQ7fSAuLW1yMCB7bWFyZ2luLXJpZ2h0OjAhaW1wb3J0YW50O30gLi1tcjEge21hcmdpbi1yaWdodDoxcHghaW1wb3J0YW50O30gLi1tcjIge21hcmdpbi1yaWdodDoycHghaW1wb3J0YW50O30gLi1tcjMge21hcmdpbi1yaWdodDozcHghaW1wb3J0YW50O30gLi1tcjQge21hcmdpbi1yaWdodDo0cHghaW1wb3J0YW50O30gLi1tcjUge21hcmdpbi1yaWdodDo1cHghaW1wb3J0YW50O30gLi1tcjYge21hcmdpbi1yaWdodDo2cHghaW1wb3J0YW50O30gLi1tcjcge21hcmdpbi1yaWdodDo3cHghaW1wb3J0YW50O30gLi1tcjgge21hcmdpbi1yaWdodDo4cHghaW1wb3J0YW50O30gLi1tcjkge21hcmdpbi1yaWdodDo5cHghaW1wb3J0YW50O30gLi1tcjEwIHttYXJnaW4tcmlnaHQ6MTBweCFpbXBvcnRhbnQ7fSAuLW1yMTUge21hcmdpbi1yaWdodDoxNXB4IWltcG9ydGFudDt9IC4tbXIyMCB7bWFyZ2luLXJpZ2h0OjIwcHghaW1wb3J0YW50O30gLi1tcjI1IHttYXJnaW4tcmlnaHQ6MjVweCFpbXBvcnRhbnQ7fSAuLW1yMzAge21hcmdpbi1yaWdodDozMHB4IWltcG9ydGFudDt9IC4tbXIzNSB7bWFyZ2luLXJpZ2h0OjM1cHghaW1wb3J0YW50O30gLi1tcjQwIHttYXJnaW4tcmlnaHQ6NDBweCFpbXBvcnRhbnQ7fSAuLW1yNDUge21hcmdpbi1yaWdodDo0NXB4IWltcG9ydGFudDt9IC4tbXI1MCB7bWFyZ2luLXJpZ2h0OjUwcHghaW1wb3J0YW50O30gLi1tcjEwMCB7bWFyZ2luLXJpZ2h0OjEwMHB4IWltcG9ydGFudDt9IC4tbXIycCB7bWFyZ2luLXJpZ2h0OjIlIWltcG9ydGFudDt9IC4tbXIzcCB7bWFyZ2luLXJpZ2h0OjMlIWltcG9ydGFudDt9IC4tbXI1cCB7bWFyZ2luLXJpZ2h0OjUlIWltcG9ydGFudDt9IC4tbXIxMHAge21hcmdpbi1yaWdodDoxMCUhaW1wb3J0YW50O30gLi1tcjE1cCB7bWFyZ2luLXJpZ2h0OjE1JSFpbXBvcnRhbnQ7fSAuLW1yMjBwIHttYXJnaW4tcmlnaHQ6MjAlIWltcG9ydGFudDt9IC4tbXIyNXAge21hcmdpbi1yaWdodDoyNSUhaW1wb3J0YW50O30gLi1tdGF1dG8ge21hcmdpbi10b3A6YXV0byFpbXBvcnRhbnQ7fSAuLW10LTd7bWFyZ2luLXRvcDotN3B4IWltcG9ydGFudDt9IC4tbXQwe21hcmdpbi10b3A6MCFpbXBvcnRhbnQ7fSAuLW10MSB7bWFyZ2luLXRvcDoxcHghaW1wb3J0YW50O30gLi1tdDIge21hcmdpbi10b3A6MnB4IWltcG9ydGFudDt9IC4tbXQzIHttYXJnaW4tdG9wOjNweCFpbXBvcnRhbnQ7fSAuLW10NCB7bWFyZ2luLXRvcDo0cHghaW1wb3J0YW50O30gLi1tdDUge21hcmdpbi10b3A6NXB4IWltcG9ydGFudDt9IC4tbXQ2IHttYXJnaW4tdG9wOjZweCFpbXBvcnRhbnQ7fSAuLW10NyB7bWFyZ2luLXRvcDo3cHghaW1wb3J0YW50O30gLi1tdDgge21hcmdpbi10b3A6OHB4IWltcG9ydGFudDt9IC4tbXQ5IHttYXJnaW4tdG9wOjlweCFpbXBvcnRhbnQ7fSAuLW10MTAge21hcmdpbi10b3A6MTBweCFpbXBvcnRhbnQ7fSAuLW10MTEge21hcmdpbi10b3A6MTFweCFpbXBvcnRhbnQ7fSAuLW10MTIge21hcmdpbi10b3A6MTJweCFpbXBvcnRhbnQ7fSAuLW10MTMge21hcmdpbi10b3A6MTNweCFpbXBvcnRhbnQ7fSAuLW10MTQge21hcmdpbi10b3A6MTRweCFpbXBvcnRhbnQ7fSAuLW10MTUge21hcmdpbi10b3A6MTVweCFpbXBvcnRhbnQ7fSAuLW10MjAge21hcmdpbi10b3A6MjBweCFpbXBvcnRhbnQ7fSAuLW10MjUge21hcmdpbi10b3A6MjVweCFpbXBvcnRhbnQ7fSAuLW10Mjcge21hcmdpbi10b3A6MjdweCFpbXBvcnRhbnQ7fSAuLW10MzAge21hcmdpbi10b3A6MzBweCFpbXBvcnRhbnQ7fSAuLW10MzUge21hcmdpbi10b3A6MzVweCFpbXBvcnRhbnQ7fSAuLW10NDAge21hcmdpbi10b3A6NDBweCFpbXBvcnRhbnQ7fSAuLW10NTAge21hcmdpbi10b3A6NTBweCFpbXBvcnRhbnQ7fSAuLW10MTE1IHttYXJnaW4tdG9wOjExNXB4IWltcG9ydGFudDt9IC4tbXQyMDAge21hcmdpbi10b3A6MjAwcHghaW1wb3J0YW50O30gLi1tYmF1dG8ge21hcmdpbi1ib3R0b206YXV0byFpbXBvcnRhbnQ7fSAuLW1iMCB7bWFyZ2luLWJvdHRvbTowIWltcG9ydGFudDt9IC4tbWIxIHttYXJnaW4tYm90dG9tOjFweCFpbXBvcnRhbnQ7fSAuLW1iMiB7bWFyZ2luLWJvdHRvbToycHghaW1wb3J0YW50O30gLi1tYjMge21hcmdpbi1ib3R0b206M3B4IWltcG9ydGFudDt9IC4tbWI0IHttYXJnaW4tYm90dG9tOjRweCFpbXBvcnRhbnQ7fSAuLW1iNSB7bWFyZ2luLWJvdHRvbTo1cHghaW1wb3J0YW50O30gLi1tYjYge21hcmdpbi1ib3R0b206NnB4IWltcG9ydGFudDt9IC4tbWI3IHttYXJnaW4tYm90dG9tOjdweCFpbXBvcnRhbnQ7fSAuLW1iOCB7bWFyZ2luLWJvdHRvbTo4cHghaW1wb3J0YW50O30gLi1tYjkge21hcmdpbi1ib3R0b206OXB4IWltcG9ydGFudDt9IC4tbWIxMCB7bWFyZ2luLWJvdHRvbToxMHB4IWltcG9ydGFudDt9IC4tbWIxNSB7bWFyZ2luLWJvdHRvbToxNXB4IWltcG9ydGFudDt9IC4tbWIyMCB7bWFyZ2luLWJvdHRvbToyMHB4IWltcG9ydGFudDt9IC4tbWIyNSB7bWFyZ2luLWJvdHRvbToyNXB4IWltcG9ydGFudDt9IC4tbWIzMCB7bWFyZ2luLWJvdHRvbTozMHB4IWltcG9ydGFudDt9IC4tbWI1MCB7bWFyZ2luLWJvdHRvbTo1MHB4IWltcG9ydGFudDt9IC4tdG9wLTEwLCAuLXQtMTAge3RvcDotMTBweCFpbXBvcnRhbnQ7fSAuLXRvcDAsIC4tdDAge3RvcDowcHghaW1wb3J0YW50O30gLi10b3AxLCAuLXQxIHt0b3A6MXB4IWltcG9ydGFudDt9IC4tdG9wMiwgLi10MiB7dG9wOjJweCFpbXBvcnRhbnQ7fSAuLXRvcDMsIC4tdDMge3RvcDozcHghaW1wb3J0YW50O30gLi10b3A0LCAuLXQ0IHt0b3A6NHB4IWltcG9ydGFudDt9IC4tdG9wNSwgLi10NSB7dG9wOjVweCFpbXBvcnRhbnQ7fSAuLXRvcDYsIC4tdDYge3RvcDo2cHghaW1wb3J0YW50O30gLi10b3A3LCAuLXQ3IHt0b3A6N3B4IWltcG9ydGFudDt9IC4tdG9wOCwgLi10OCB7dG9wOjhweCFpbXBvcnRhbnQ7fSAuLXRvcDksIC4tdDkge3RvcDo5cHghaW1wb3J0YW50O30gLi10b3AxMCwgLi10MTAge3RvcDoxMHB4IWltcG9ydGFudDt9IC4tdG9wMTUsIC4tdDE1IHt0b3A6MTVweCFpbXBvcnRhbnQ7fSAuLXRvcDIwLCAuLXQyMCB7dG9wOjIwcHghaW1wb3J0YW50O30gLi10b3AyNSwgLi10MjV7dG9wOjI1cHghaW1wb3J0YW50O30gLi10b3AzMCwgLi10MzAge3RvcDozMHB4IWltcG9ydGFudDt9IC4tdG9wMzUsIC4tdDM1IHt0b3A6MzVweCFpbXBvcnRhbnQ7fSAuLXRvcDQwLCAuLXQ0MCB7dG9wOjQwcHghaW1wb3J0YW50O30gLi10b3A0NSwgLi10NDUge3RvcDo0NXB4IWltcG9ydGFudDt9IC4tdG9wNTAsIC4tdDUwIHt0b3A6NTBweCFpbXBvcnRhbnQ7fSAuLXRvcDEwMCwgLi10MTAwIHt0b3A6MTAwcHghaW1wb3J0YW50O30gLi10b3AyMDAsIC4tdDIwMCB7dG9wOjIwMHB4IWltcG9ydGFudDt9IC4tdG9wNXAsIC4tdDVwIHt0b3A6NSUhaW1wb3J0YW50O30gLi10b3AxMHAsIC4tdDEwcCB7dG9wOjEwJSFpbXBvcnRhbnQ7fSAuLXRvcDE1cCwgLi10MTVwIHt0b3A6MTUlIWltcG9ydGFudDt9IC4tdG9wMjBwLCAuLXQyMHAge3RvcDoyMCUhaW1wb3J0YW50O30gLi10b3AyNXAsIC4tdDI1cCB7dG9wOjI1JSFpbXBvcnRhbnQ7fSAuLXRvcDUwcCwgLi10NTBwIHt0b3A6NTAlIWltcG9ydGFudDt9IC4tdG9wMTAwcCwgLi10MTAwcCB7dG9wOjEwMCUhaW1wb3J0YW50O30gLi1sZWZ0MCwgLi1sMCB7bGVmdDowcHghaW1wb3J0YW50O30gLi1sZWZ0MSwgLi1sMSB7bGVmdDoxcHghaW1wb3J0YW50O30gLi1sZWZ0MiwgLi1sMiB7bGVmdDoycHghaW1wb3J0YW50O30gLi1sZWZ0MywgLi1sMyB7bGVmdDozcHghaW1wb3J0YW50O30gLi1sZWZ0NCwgLi1sNCB7bGVmdDo0cHghaW1wb3J0YW50O30gLi1sZWZ0NSwgLi1sNSB7bGVmdDo1cHghaW1wb3J0YW50O30gLi1sZWZ0NiwgLi1sNiB7bGVmdDo2cHghaW1wb3J0YW50O30gLi1sZWZ0NywgLi1sNyB7bGVmdDo3cHghaW1wb3J0YW50O30gLi1sZWZ0OCwgLi1sOCB7bGVmdDo4cHghaW1wb3J0YW50O30gLi1sZWZ0OSwgLi1sOSB7bGVmdDo5cHghaW1wb3J0YW50O30gLi1sZWZ0MTAsIC4tbDEwIHtsZWZ0OjEwcHghaW1wb3J0YW50O30gLi1sZWZ0MTUsIC4tbDE1IHtsZWZ0OjE1cHghaW1wb3J0YW50O30gLi1sZWZ0MjAsIC4tbDIwIHtsZWZ0OjIwcHghaW1wb3J0YW50O30gLi1sZWZ0MjUsIC4tbDI1e2xlZnQ6MjVweCFpbXBvcnRhbnQ7fSAuLWxlZnQzMCwgLi1sMzAge2xlZnQ6MzBweCFpbXBvcnRhbnQ7fSAuLWxlZnQzNSwgLi1sMzUge2xlZnQ6MzVweCFpbXBvcnRhbnQ7fSAuLWxlZnQ0MCwgLi1sNDAge2xlZnQ6NDBweCFpbXBvcnRhbnQ7fSAuLWxlZnQ0NSwgLi1sNDUge2xlZnQ6NDVweCFpbXBvcnRhbnQ7fSAuLWxlZnQ1MCwgLi1sNTAge2xlZnQ6NTBweCFpbXBvcnRhbnQ7fSAuLWxlZnQ1NSwgLi1sNTUge2xlZnQ6NTVweCFpbXBvcnRhbnQ7fSAuLWxlZnQ2MCwgLi1sNjAge2xlZnQ6NjBweCFpbXBvcnRhbnQ7fSAuLWxlZnQ2NSwgLi1sNjUge2xlZnQ6NjVweCFpbXBvcnRhbnQ7fSAuLWxlZnQ3MCwgLi1sNzAge2xlZnQ6NzBweCFpbXBvcnRhbnQ7fSAuLWxlZnQ3NSwgLi1sNzUge2xlZnQ6NzVweCFpbXBvcnRhbnQ7fSAuLWxlZnQ4MCwgLi1sODAge2xlZnQ6ODBweCFpbXBvcnRhbnQ7fSAuLWxlZnQ4NSwgLi1sODUge2xlZnQ6ODVweCFpbXBvcnRhbnQ7fSAuLWxlZnQ5MCwgLi1sOTAge2xlZnQ6OTBweCFpbXBvcnRhbnQ7fSAuLWxlZnQ5NSwgLi1sOTUge2xlZnQ6OTVweCFpbXBvcnRhbnQ7fSAuLWxlZnQxMDAsIC4tbDEwMCB7bGVmdDoxMDBweCFpbXBvcnRhbnQ7fSAuLWxlZnQxNTAsIC4tbDE1MCB7bGVmdDoxNTBweCFpbXBvcnRhbnQ7fSAuLWxlZnQyMDAsIC4tbDIwMCB7bGVmdDoyMDBweCFpbXBvcnRhbnQ7fSAuLWxlZnQyNTAsIC4tbDI1MCB7bGVmdDoyNTBweCFpbXBvcnRhbnQ7fSAuLWxlZnQzMDAsIC4tbDMwMCB7bGVmdDozMDBweCFpbXBvcnRhbnQ7fSAuLWxlZnQ1cCwgLi1sNXAge2xlZnQ6NSUhaW1wb3J0YW50O30gLi1sZWZ0MTBwLCAuLWwxMHAge2xlZnQ6MTAlIWltcG9ydGFudDt9IC4tbGVmdDE1cCwgLi1sMTVwIHtsZWZ0OjE1JSFpbXBvcnRhbnQ7fSAuLWxlZnQyMHAsIC4tbDIwcCB7bGVmdDoyMCUhaW1wb3J0YW50O30gLi1sZWZ0MjVwLCAuLWwyNXAge2xlZnQ6MjUlIWltcG9ydGFudDt9IC4tbGVmdDQwcCwgLi1sNDBwIHtsZWZ0OjQwJSFpbXBvcnRhbnQ7fSAuLWxlZnQ1MHAsIC4tbDUwcCB7bGVmdDo1MCUhaW1wb3J0YW50O30gLi1sZWZ0MTAwcCwgLi1sMTAwcCB7bGVmdDoxMDAlIWltcG9ydGFudDt9IC4tcmlnaHQwLCAuLXIwIHtyaWdodDowcHghaW1wb3J0YW50O30gLi1yaWdodDEsIC4tcjEge3JpZ2h0OjFweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0MiwgLi1yMiB7cmlnaHQ6MnB4IWltcG9ydGFudDt9IC4tcmlnaHQzLCAuLXIzIHtyaWdodDozcHghaW1wb3J0YW50O30gLi1yaWdodDQsIC4tcjQge3JpZ2h0OjRweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0NSwgLi1yNSB7cmlnaHQ6NXB4IWltcG9ydGFudDt9IC4tcmlnaHQ2LCAuLXI2IHtyaWdodDo2cHghaW1wb3J0YW50O30gLi1yaWdodDcsIC4tcjcge3JpZ2h0OjdweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0OCwgLi1yOCB7cmlnaHQ6OHB4IWltcG9ydGFudDt9IC4tcmlnaHQ5LCAuLXI5IHtyaWdodDo5cHghaW1wb3J0YW50O30gLi1yaWdodDEwLCAuLXIxMCB7cmlnaHQ6MTBweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0MTUsIC4tcjE1IHtyaWdodDoxNXB4IWltcG9ydGFudDt9IC4tcmlnaHQyMCwgLi1yMjAge3JpZ2h0OjIwcHghaW1wb3J0YW50O30gLi1yaWdodDI1LCAuLXIyNSB7cmlnaHQ6MjVweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0MzAsIC4tcjMwIHtyaWdodDozMHB4IWltcG9ydGFudDt9IC4tcmlnaHQzNSwgLi1yMzUge3JpZ2h0OjM1cHghaW1wb3J0YW50O30gLi1yaWdodDQwLCAuLXI0MCB7cmlnaHQ6NDBweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0NDUsIC4tcjQ1IHtyaWdodDo0NXB4IWltcG9ydGFudDt9IC4tcmlnaHQ1MCwgLi1yNTAge3JpZ2h0OjUwcHghaW1wb3J0YW50O30gLi1yaWdodDU1LCAuLXI1NSB7cmlnaHQ6NTVweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0NjAsIC4tcjYwIHtyaWdodDo2MHB4IWltcG9ydGFudDt9IC4tcmlnaHQ2NSwgLi1yNjUge3JpZ2h0OjY1cHghaW1wb3J0YW50O30gLi1yaWdodDcwLCAuLXI3MCB7cmlnaHQ6NzBweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0NzUsIC4tcjc1IHtyaWdodDo3NXB4IWltcG9ydGFudDt9IC4tcmlnaHQ4MCwgLi1yODAge3JpZ2h0OjgwcHghaW1wb3J0YW50O30gLi1yaWdodDg1LCAuLXI4NSB7cmlnaHQ6ODVweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0OTAsIC4tcjkwIHtyaWdodDo5MHB4IWltcG9ydGFudDt9IC4tcmlnaHQ5NSwgLi1yOTUge3JpZ2h0Ojk1cHghaW1wb3J0YW50O30gLi1yaWdodDEwMCwgLi1yMTAwIHtyaWdodDoxMDBweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0MTUwLCAuLXIxNTAge3JpZ2h0OjE1MHB4IWltcG9ydGFudDt9IC4tcmlnaHQyMDAsIC4tcjIwMCB7cmlnaHQ6MjAwcHghaW1wb3J0YW50O30gLi1yaWdodDI1MCwgLi1yMjUwIHtyaWdodDoyNTBweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0NXAsIC4tcjVwIHtyaWdodDo1JSFpbXBvcnRhbnQ7fSAuLXJpZ2h0MTBwLCAuLXIxMHAge3JpZ2h0OjEwJSFpbXBvcnRhbnQ7fSAuLXJpZ2h0MTVwLCAuLXIxNXAge3JpZ2h0OjE1JSFpbXBvcnRhbnQ7fSAuLXJpZ2h0MjBwLCAuLXIyMHAge3JpZ2h0OjIwJSFpbXBvcnRhbnQ7fSAuLXJpZ2h0MjVwLCAuLXIyNXAge3JpZ2h0OjI1JSFpbXBvcnRhbnQ7fSAuLXJpZ2h0NTBwLCAuLXI1MHAge3JpZ2h0OjUwJSFpbXBvcnRhbnQ7fSAuLXJpZ2h0MTAwcCwgLi1yMTAwcCB7cmlnaHQ6MTAwJSFpbXBvcnRhbnQ7fSAuLXotaW5kZXg5OXt6LWluZGV4Ojk5IWltcG9ydGFudDt9IC4tei1pbmRleDEwMHt6LWluZGV4OjEwMCFpbXBvcnRhbnQ7fSAuLXotaW5kZXgxMDF7ei1pbmRleDoxMDEhaW1wb3J0YW50O30gLi16LWluZGV4MTAwMSwgLnppbmRleDEwMDF7IHotaW5kZXg6MTAwMSFpbXBvcnRhbnQ7IH0gLi16LWluZGV4MzYwMDEsIC56aW5kZXgzNjAwMXsgei1pbmRleDozNjAwMSFpbXBvcnRhbnQ7IH0gLi1uby1ib3JkZXItc3BhY2luZ3sgYm9yZGVyLXNwYWNpbmc6MCFpbXBvcnRhbnQ7IH0gLi10YWJsZXsgY2VsbHBhZGRpbmc6MCFpbXBvcnRhbnQ7IGNlbGxzcGFjaW5nOjAhaW1wb3J0YW50OyBib3JkZXI6MCFpbXBvcnRhbnQ7IH0gdGFibGUuLXRhYmxlIHRoZWFkIHRoIHsgYmFja2dyb3VuZDojYzNkOWZmIWltcG9ydGFudDsgfSB0YWJsZS4tdGFibGUgdHIgdGgsIHRhYmxlLi10YWJsZSB0ciB0ZCB7IHBhZGRpbmc6NHB4IDEwcHggNHB4IDVweCFpbXBvcnRhbnQ7IH0gdHIuLWJvcmRlci1ib3R0b20gdGQsIHRyLi1ib3JkZXItYm90dG9tIHRoIHsgYm9yZGVyLWJvdHRvbToxcHQgc29saWQgYmxhY2shaW1wb3J0YW50OyB9IC13aGl0ZS1zcGFjZS1ub3dyYXAge3doaXRlLXNwYWNlOm5vd3JhcCFpbXBvcnRhbnQ7fSAuLWN1cnNvci1hdXRvIHsgY3Vyc29yOmF1dG87IH0gLi1jdXJzb3ItZGVmYXVsdCB7IGN1cnNvcjpkZWZhdWx0OyB9IC4tY3Vyc29yLW5vbmUgeyBjdXJzb3I6bm9uZTsgfSAuLWN1cnNvci1jb250ZXh0LW1lbnUgeyBjdXJzb3I6Y29udGV4dC1tZW51OyB9IC4tY3Vyc29yLWhlbHAgeyBjdXJzb3I6aGVscDsgfSAuLWN1cnNvci1wb2ludGVyIHsgY3Vyc29yOnBvaW50ZXI7IH0gLi1jdXJzb3ItcHJvZ3Jlc3MgeyBjdXJzb3I6cHJvZ3Jlc3M7IH0gLi1jdXJzb3Itd2FpdCB7IGN1cnNvcjp3YWl0OyB9IC4tY3Vyc29yLWNlbGwgeyBjdXJzb3I6Y2VsbDsgfSAuLWN1cnNvci1jcm9zc2hhaXIgeyBjdXJzb3I6Y3Jvc3NoYWlyOyB9IC4tY3Vyc29yLXRleHQgeyBjdXJzb3I6dGV4dDsgfSAuLWN1cnNvci12ZXJ0aWNhbC10ZXh0IHsgY3Vyc29yOnZlcnRpY2FsLXRleHQ7IH0gLi1jdXJzb3ItYWxpYXMgeyBjdXJzb3I6YWxpYXM7IH0gLi1jdXJzb3ItY29weSB7IGN1cnNvcjpjb3B5OyB9IC4tY3Vyc29yLW1vdmUgeyBjdXJzb3I6bW92ZTsgfSAuLWN1cnNvci1uby1kcm9wIHsgY3Vyc29yOm5vLWRyb3A7IH0gLi1jdXJzb3Itbm90LWFsbG93ZWQgeyBjdXJzb3I6bm90LWFsbG93ZWQ7IH0gLi1jdXJzb3ItYWxsLXNjcm9sbCB7IGN1cnNvcjphbGwtc2Nyb2xsOyB9IC4tY3Vyc29yLWNvbC1yZXNpemUgeyBjdXJzb3I6Y29sLXJlc2l6ZTsgfSAuLWN1cnNvci1yb3ctcmVzaXplIHsgY3Vyc29yOnJvdy1yZXNpemU7IH0gLi1jdXJzb3Itbi1yZXNpemUgeyBjdXJzb3I6bi1yZXNpemU7IH0gLi1jdXJzb3ItZS1yZXNpemUgeyBjdXJzb3I6ZS1yZXNpemU7IH0gLi1jdXJzb3Itcy1yZXNpemUgeyBjdXJzb3I6cy1yZXNpemU7IH0gLi1jdXJzb3Itdy1yZXNpemUgeyBjdXJzb3I6dy1yZXNpemU7IH0gLi1jdXJzb3ItbnMtcmVzaXplIHsgY3Vyc29yOm5zLXJlc2l6ZTsgfSAuLWN1cnNvci1ldy1yZXNpemUgeyBjdXJzb3I6ZXctcmVzaXplOyB9IC4tY3Vyc29yLW5lLXJlc2l6ZSB7IGN1cnNvcjpuZS1yZXNpemU7IH0gLi1jdXJzb3ItbnctcmVzaXplIHsgY3Vyc29yOm53LXJlc2l6ZTsgfSAuLWN1cnNvci1zZS1yZXNpemUgeyBjdXJzb3I6c2UtcmVzaXplOyB9IC4tY3Vyc29yLXN3LXJlc2l6ZSB7IGN1cnNvcjpzdy1yZXNpemU7IH0gLi1jdXJzb3ItbmVzdy1yZXNpemUgeyBjdXJzb3I6bmVzdy1yZXNpemU7IH0gLi1jdXJzb3ItbndzZS1yZXNpemUgeyBjdXJzb3I6bndzZS1yZXNpemU7IH0gLi1mb250LXNpemUwLCAuLWZzMHsgZm9udC1zaXplOjAhaW1wb3J0YW50O30gLi1mb250LXNpemUxLCAuLWZzMXsgZm9udC1zaXplOjFweCFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTIsIC4tZnMyeyBmb250LXNpemU6MnB4IWltcG9ydGFudDt9IC4tZm9udC1zaXplMywgLi1mczN7IGZvbnQtc2l6ZTozcHghaW1wb3J0YW50O30gLi1mb250LXNpemU0LCAuLWZzNHsgZm9udC1zaXplOjRweCFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTUsIC4tZnM1eyBmb250LXNpemU6NXB4IWltcG9ydGFudDt9IC4tZm9udC1zaXplNiwgLi1mczZ7IGZvbnQtc2l6ZTo2cHghaW1wb3J0YW50O30gLi1mb250LXNpemU3LCAuLWZzN3sgZm9udC1zaXplOjdweCFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTgsIC4tZnM4eyBmb250LXNpemU6MC41cmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTksIC4tZnM5eyBmb250LXNpemU6MC41NjNyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMTAsIC4tZnMxMHsgZm9udC1zaXplOjAuNjI1cmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTExLCAuLWZzMTF7IGZvbnQtc2l6ZTowLjY4OHJlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUxMiwgLi1mczEyeyBmb250LXNpemU6MC43NXJlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUxMywgLi1mczEzeyBmb250LXNpemU6MC44MTNyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMTQsIC4tZnMxNHsgZm9udC1zaXplOjAuODc1cmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTE1LCAuLWZzMTV7IGZvbnQtc2l6ZTowLjkzOHJlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUxNiwgLi1mczE2eyBmb250LXNpemU6MXJlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUxNywgLi1mczE3eyBmb250LXNpemU6MS4wNjNyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMTgsIC4tZnMxOHsgZm9udC1zaXplOjEuMTI1cmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTE5LCAuLWZzMTl7IGZvbnQtc2l6ZToxLjE4OHJlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUyMCwgLi1mczIweyBmb250LXNpemU6MS4yNXJlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUyMSwgLi1mczIxeyBmb250LXNpemU6MS4zMTNyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMjIsIC4tZnMyMnsgZm9udC1zaXplOjEuMzc1cmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTIzLCAuLWZzMjN7IGZvbnQtc2l6ZToxLjQzOHJlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUyNCwgLi1mczI0eyBmb250LXNpemU6MS41cmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTI1LCAuLWZzMjV7IGZvbnQtc2l6ZToxLjU2M3JlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUyNiwgLi1mczI2eyBmb250LXNpemU6MS42MjVyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMjcsIC4tZnMyN3sgZm9udC1zaXplOjEuNjg4cmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTI4LCAuLWZzMjh7IGZvbnQtc2l6ZToxLjc1cmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTI5LCAuLWZzMjl7IGZvbnQtc2l6ZToxLjgxM3JlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUzMCwgLi1mczMweyBmb250LXNpemU6MS44NzVyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMzEsIC4tZnMzMXsgZm9udC1zaXplOjEuOTM4cmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTMyLCAuLWZzMzJ7IGZvbnQtc2l6ZToycmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTMzLCAuLWZzMzN7IGZvbnQtc2l6ZToyLjA2M3JlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUzNCwgLi1mczM0eyBmb250LXNpemU6Mi4xMjVyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMzUsIC4tZnMzNXsgZm9udC1zaXplOjIuMTg4cmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTM2LCAuLWZzMzZ7IGZvbnQtc2l6ZToyLjI1cmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTM3LCAuLWZzMzd7IGZvbnQtc2l6ZToyLjMxM3JlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUzOCwgLi1mczM4eyBmb250LXNpemU6Mi4zNzVyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMzksIC4tZnMzOXsgZm9udC1zaXplOjIuNDM4cmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTQwLCAuLWZzNDB7IGZvbnQtc2l6ZToyLjVyZW0gIWltcG9ydGFudDt9IC4tcmVkLWxpbmUtaDM1eyBoZWlnaHQ6MzVweDsgbWFyZ2luLWJvdHRvbTotMzVweDsgcG9zaXRpb246cmVsYXRpdmU7IHRvcDotMjVweDsgfSAjYnJlYWRjcnVtYnN7IGZvbnQtc2l6ZToxcmVtIDsgbWFyZ2luLWxlZnQ6MTBweDsgbWFyZ2luLXRvcDo4cHg7IG1hcmdpbi1ib3R0b206MTVweDsgY29sb3I6Izc1NzU3NTsgfSAuVXNlZFZkcDJNb2JpbGUgI2JyZWFkY3J1bWJzeyBmb250LXNpemU6MC45cmVtOyBjb2xvcjojMjIyMjIyOyBmb250LXdlaWdodDpib2xkOyBwYWRkaW5nOjEwcHg7IG1hcmdpbjowOyBsaW5lLWhlaWdodDoxLjI1cmVtOyB9ICNicmVhZGNydW1icyBheyBjb2xvcjojNzU3NTc1OyB9ICNjYXJwcm9vZl9tYWluLmNhcnByb29mX21haW57IHdpZHRoOjM0MHB4OyBoZWlnaHQ6YXV0bzsgYmFja2dyb3VuZC1jb2xvcjojZmZmOyBwYWRkaW5nOjIwcHg7IGRpc3BsYXk6bm9uZTsgei1pbmRleDo5OTk5OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IGJvcmRlci1yYWRpdXM6NXB4OyBwb3NpdGlvbjpmaXhlZDsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKTsgLW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSk7IGxlZnQ6NTAlOyB0b3A6NTAlOyB9ICNjYXJwcm9vZl9tYWluIC5jYXJwcm9vZkNsb3NlQnV0dG9ueyBmbG9hdDpyaWdodDsgdG9wOjA7IH0gI2NhcnByb29mX21haW4gLmNhcnByb29mTWFpbkRpdiB7IHdpZHRoOjEwMCU7IGhlaWdodDphdXRvOyBwYWRkaW5nOjA7IGJhY2tncm91bmQ6I2ZmZjsgYm94LXNpemluZzpib3JkZXItYm94OyBwb3NpdGlvbjpyZWxhdGl2ZTsgZmxvYXQ6bGVmdDsgfSAjY2FycHJvb2ZfbWFpbiAuY2FycHJvb2ZNYWluRGl2IFVMeyB3aWR0aDoxMDAlOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IHBhZGRpbmc6MCAhaW1wb3J0YW50OyB9ICNjYXJwcm9vZl9tYWluIC5jYXJwcm9vZk1haW5EaXYgVUwgTEkgeyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgd2lkdGg6MTAwJTsgZmxvYXQ6bGVmdDsgcGFkZGluZzowIDAgNXB4IDA7IH0gI2NhcnByb29mX21haW4gLmNhcnByb29mX2ZpZWxkeyBtYXJnaW4tYm90dG9tOjdweDsgfSAjY2FycHJvb2ZfbWFpbiAuY2FycHJvb2ZNZXNzYWdleyBmb250LXNpemU6MXJlbTsgY29sb3I6IzAwMDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBwYWRkaW5nLWJvdHRvbToxNXB4OyBwb3NpdGlvbjpyZWxhdGl2ZTsgZmxvYXQ6bGVmdDsgd2lkdGg6MTAwJTsgYm94LXNpemluZzpib3JkZXItYm94OyB9ICNpbm5lclBhZ2VEaXZ7IGRpc3BsYXk6dGFibGU7IH0gI2NhcnByb29mX21haW4gLmNhcnByb29mX2xhYmVseyBmb250LXNpemU6MXJlbTsgY29sb3I6IzY2NjY2NjsgZm9udC13ZWlnaHQ6Ym9sZDsgZGlzcGxheTpibG9jazsgZmxvYXQ6bGVmdDsgbWFyZ2luOjA7IHRleHQtYWxpZ246bGVmdDsgd2lkdGg6MTAwJTsgbGluZS1oZWlnaHQ6MjVweDsgYm94LXNpemluZzpib3JkZXItYm94OyB9ICNjYXJwcm9vZl9tYWluIC5jYXJwcm9vZl9pbnB1dHsgZm9udC1zaXplOjFyZW07IHBhZGRpbmc6NXB4OyBib3JkZXI6MXB4IHNvbGlkICNiOWJkYzE7IHdpZHRoOjEwMCU7IGNvbG9yOiM3OTc5Nzk7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgbWFyZ2luLWJvdHRvbToxMHB4OyBib3JkZXItcmFkaXVzOjVweDsgfSAjY2FycHJvb2ZfbWFpbiAuY2FycHJvb2ZfaW5wdXQ6Zm9jdXMgeyBiYWNrZ3JvdW5kLWNvbG9yOiNGNEY0RjQ7IGNvbG9yOiMxYjFiMWIgIWltcG9ydGFudDsgfSAjY2FycHJvb2ZfbWFpbiAucGhvbmVJbnB1dHsgZm9udC1zaXplOjFyZW07IHBhZGRpbmc6NXB4OyBib3JkZXI6MXB4IHNvbGlkICNiOWJkYzE7IHdpZHRoOjQ3cHg7IG1hcmdpbi1yaWdodDo1cHg7IGNvbG9yOiM3OTc5Nzk7IGJvcmRlci1yYWRpdXM6NXB4OyB9ICNjYXJwcm9vZl9tYWluIC5waG9uZUlucHV0OmZvY3VzIHsgYmFja2dyb3VuZC1jb2xvcjojRjRGNEY0OyBjb2xvcjojMWIxYjFiOyB9ICNjYXJwcm9vZl9tYWluIC5jYXJwcm9vZl9idXR0b25JRSB7IGJvcmRlcjoxcHggc29saWQgI0M4M0Y0MTsgbWFyZ2luOjEwcHggMTBweCAxMHB4IDA7IHBhZGRpbmc6M3B4IDEwcHg7IHRleHQtYWxpZ246Y2VudGVyOyBmbG9hdDpyaWdodDsgd2lkdGg6NjBweDsgY29sb3I6I2ZmZjsgY3Vyc29yOnBvaW50ZXI7IGJvcmRlci10b3AtY29sb3I6I0M4M0Y0MTsgYm9yZGVyLXJpZ2h0LWNvbG9yOiNDODNGNDE7IGJvcmRlci1ib3R0b20tY29sb3I6I0M4M0Y0MTsgYm9yZGVyLWxlZnQtY29sb3I6I0M4M0Y0MTsgYm9yZGVyLXRvcC13aWR0aDoxcHg7IGJvcmRlci1yaWdodC13aWR0aDoxcHg7IGJvcmRlci1ib3R0b20td2lkdGg6MXB4OyBib3JkZXItbGVmdC13aWR0aDoxcHg7IGJvcmRlci10b3Atc3R5bGU6c29saWQ7IGJvcmRlci1yaWdodC1zdHlsZTpzb2xpZDsgYm9yZGVyLWJvdHRvbS1zdHlsZTpzb2xpZDsgYm9yZGVyLWxlZnQtc3R5bGU6c29saWQ7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6OHB4OyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czo4cHg7IGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjhweDsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo4cHg7IGJveC1zaGFkb3c6MHB4IDJweCAzcHggIzY2NjsgYmFja2dyb3VuZC1pbWFnZTpub25lOyBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6c2Nyb2xsOyBiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQ7IGJhY2tncm91bmQtcG9zaXRpb246MCAwOyBiYWNrZ3JvdW5kLXNpemU6YXV0bzsgYmFja2dyb3VuZC1vcmlnaW46cGFkZGluZy1ib3g7IGJhY2tncm91bmQtY2xpcDpib3JkZXItYm94OyBiYWNrZ3JvdW5kLWNvbG9yOnJnYigyMDAsIDYzLCA2NSk7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgfSAjY2FycHJvb2ZfbWFpbiAuY2FycHJvb2ZfYnV0dG9uSUVIb3ZlciB7IGJhY2tncm91bmQtY29sb3I6I0M4M0Y0MTsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAjY2FycHJvb2ZfbWFpbiAuY2FycHJvb2ZfYnV0dG9uIHsgZm9udC1zaXplOjEuMnJlbTsgZmxvYXQ6cmlnaHQ7IG1hcmdpbjoyNXB4IDAgMDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBsaW5lLWhlaWdodDoxcmVtOyBwYWRkaW5nOjEwcHggMTVweDsgY3Vyc29yOnBvaW50ZXI7IGNvbG9yOiNmZmY7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LXNoYWRvdzowIC0xcHggMXB4ICM2NDc5OWU7IGJhY2tncm91bmQ6I2JiMDAwMzsgYmFja2dyb3VuZDotbW96LWxpbmVhci1ncmFkaWVudCh0b3AsICNDODNGNDEgMCUsICNiYjAwMDMgMTAwJSk7IGJhY2tncm91bmQ6LXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIDAlIDAlLCAwJSAxMDAlLCBmcm9tKCNDODNGNDEpLCB0bygjYmIwMDAzKSk7IGJvcmRlcjoxcHggc29saWQgIzVjNmY5MTsgLW1vei1ib3JkZXItcmFkaXVzOjVweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjVweDsgYm9yZGVyLXJhZGl1czo1cHg7IHdpZHRoOjEwMCU7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfSAjY2FycHJvb2ZfbWFpbiAuY2FycHJvb2ZfYnV0dG9uOmhvdmVyIHsgYmFja2dyb3VuZDojQzgzRjQxOyBjdXJzb3I6cG9pbnRlcjsgfSAjY2FycHJvb2ZfZGlhbG9nLW92ZXJsYXkgeyBiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjgpOyBwb3NpdGlvbjpmaXhlZDsgdG9wOjA7IGxlZnQ6MDsgcmlnaHQ6MDsgYm90dG9tOjA7IHotaW5kZXg6OTk5ODsgZGlzcGxheTpub25lOyB9IC5jYXJwcm9vZi1iYWRnZS5kZXNrdG9wIHsgbWFyZ2luLWxlZnQ6LTE1cHg7IGhlaWdodDo1NnB4OyBvdmVyZmxvdzpoaWRkZW47IG1hcmdpbi10b3A6LTEwcHg7IGZsb2F0OmxlZnQ7IH0gLnByZVByb2Nlc3Nvckh0bWxDYXJQb29mQVBJcmVwb3J0LmNhcnByb29mLWJhZGdlLmRlc2t0b3AsIC5wcmVQcm9jZXNzb3JDYXJQb29mQVBJcmVwb3J0VjUuY2FycHJvb2YtYmFkZ2UuZGVza3RvcCwgLnByZVByb2Nlc3Nvckh0bWxDYXJQcm9vZkRlZmF1bHQuY2FycHJvb2YtYmFkZ2UuZGVza3RvcCB7IHdpZHRoOjEwNnB4OyBtYXJnaW46MnB4IDVweCAwIDA7IGZsb2F0OmxlZnQ7IH0gI2NhcnByb29mX21haW4gaW1nIHsgd2lkdGg6NTAlOyBmbG9hdDpsZWZ0OyBwb3NpdGlvbjpyZWxhdGl2ZTsgbWFyZ2luOjAgMCAxNXB4IDA7IH0gI2FzUG9wVXB7IGJhY2tncm91bmQ6I2ZmZmZmZjsgd2lkdGg6NjAwcHg7IHBhZGRpbmc6MzBweDsgY29sb3I6IzFiMWIxYjsgei1pbmRleDoxMDAwMDIxOyB9ICNhc1BvcFVwIC5wb3B1cC1wb2xpY3kgeyBtaW4taGVpZ2h0OjEwMHB4OyBtYXgtaGVpZ2h0OjE1MHB4OyBvdmVyZmxvdy15OmF1dG87IH0gLnBvcHVwLXBvbGljeSBhIHsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgY29sb3I6Ymx1ZTsgfSAjYXNQb3BVcCAuYXNUaXRsZXsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtc2l6ZToyLjI1cmVtIDsgZm9udC13ZWlnaHQ6OyBtYXJnaW4tYm90dG9tOjIwcHg7IH0gI2FzUG9wVXAgLmJ0bkV4cGxpY2l0eyBmbG9hdDpsZWZ0OyBwYWRkaW5nLWxlZnQ6NzBweDsgd2lkdGg6MTAwcHg7IH0gI2FzUG9wVXAgLmJ0bkltcGxpY2l0eyBmbG9hdDpyaWdodDsgd2lkdGg6MTAwcHg7IHBhZGRpbmctcmlnaHQ6NzBweDsgfSAjYXNQdXJjaGFzZUludGVudC5yZXZlYWwtbW9kYWwgc3Bhbi5qcVRyYW5zZm9ybVJhZGlvV3JhcHBlcnsgcGFkZGluZzowOyBtYXJnaW46NnB4IDRweCAwOyB9ICNhc1B1cmNoYXNlSW50ZW50IC5wb3B1cC1wb2xpY3kgeyBtYXgtaGVpZ2h0OjE3MHB4OyBvdmVyZmxvdy15OmF1dG87IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gI2FzUHVyY2hhc2VJbnRlbnQgLmFzUElUaXRsZXsgdGV4dC1hbGlnbjpsZWZ0OyBmb250LXNpemU6MS41NjNyZW0gOyBtYXJnaW4tYm90dG9tOjA7IHBhZGRpbmctYm90dG9tOjEwcHg7IGRpc3BsYXk6YmxvY2s7IH0gI2FzUHVyY2hhc2VJbnRlbnQgLnZpVGV4dHsgY2xlYXI6Ym90aDsgZm9udC13ZWlnaHQ6Ym9sZDsgcGFkZGluZy1ib3R0b206MTBweDsgfSAjYXNQdXJjaGFzZUludGVudCAudmlPcHRpb25zeyBsaXN0LXN0eWxlOm5vbmU7IHBhZGRpbmc6NXB4OyBtYXJnaW4tYm90dG9tOjNweDsgfSAjYXNQdXJjaGFzZUludGVudCAudmlPcHRpb25zIGxpIHsgcGFkZGluZzoycHg7IH0gI2FzUHVyY2hhc2VJbnRlbnQgLnZpT3B0aW9ucyBsaXsgY2xlYXI6Ym90aDsgZm9udC1zaXplOjEwcHQ7IH0gI2FzUHVyY2hhc2VJbnRlbnQgbGkgbGFiZWx7IGZvbnQtc2l6ZToxMHB0OyB9ICNhc1B1cmNoYXNlSW50ZW50IC5idXR0b25EZWZhdWx0Q29sb3IgeyBtYXJnaW46MCBhdXRvIDVweDsgZGlzcGxheTpibG9jazsgY2xlYXI6Ym90aDsgfSAjYXNQdXJjaGFzZUludGVudCAuc3RlcHMgeyBsaXN0LXN0eWxlOmluc2lkZSBub25lIG5vbmU7IH0gI2FzUHVyY2hhc2VJbnRlbnQgLnN0ZXBzID4gbGl7IGJhY2tncm91bmQ6I2ZmZjsgYm9yZGVyOjFweCBzb2xpZCAjYmJiYmJiOyBib3JkZXItd2lkdGg6MCAxcHggMXB4IDA7IHBhZGRpbmc6MTVweDsgbWFyZ2luLWJvdHRvbToxNXB4OyBmb250LXNpemU6MTBwdDsgfSAjYXNQdXJjaGFzZUludGVudCAuYXN5ZXNubyB7IGZsb2F0OmxlZnQ7IHBhZGRpbmctcmlnaHQ6MTBweDsgd2lkdGg6OTBweDsgfSAjYXNQdXJjaGFzZUludGVudCAuYXN5ZXN7IHBhZGRpbmctbGVmdDo5MHB4OyB3aWR0aDo3MHB4OyB9IC5jb25zZW50LmRpc2NsYWltZXIgeyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyBjb2xvcjpibHVlOyBhbGlnbi1zZWxmOmNlbnRlcjsgbWFyZ2luLWJvdHRvbTp2YXIoLS1zLTMpOyBjdXJzb3I6aGVscDsgfSAuY3VzdG9tNV9sZWZ0LCAuY3VzdG9tMjVfbGVmdCwgLmN1c3RvbTM1X2xlZnQsIC5jdXN0b200NV9sZWZ0LCAuY3RhX3ByaWNlLC5jdGFfY3JlZGl0LC5jdGFfdGVzdERyaXZlLC5jdGFfZXZhbCwuY3RhX3N2Y3Byb21vLC5jdGFfc2VydmljZSwuY3RhX3BhcnRzLC5jdGFfdGlyZXMgeyB3aWR0aDoyODBweDsgaGVpZ2h0OjYxcHg7IHBhZGRpbmc6MCAxNXB4IDAgNjBweDsgZGlzcGxheTp0YWJsZS1jZWxsOyB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7IGZvbnQtc2l6ZToxcmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgY3Vyc29yOnBvaW50ZXI7IGNvbG9yOiMxOTE5MTk7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2JveDI1LnBuZycpIG5vLXJlcGVhdCBzY3JvbGwgbGVmdCB0b3A7IGJhY2tncm91bmQtc2l6ZTo1ODlweCA1NTBweDsgfSAuY3RhX3ByaWNlLmFsdDpob3ZlciwgLmN0YV9jcmVkaXQuYWx0OmhvdmVyLCAuY3RhX3Rlc3REcml2ZS5hbHQ6aG92ZXIsIC5jdGFfZXZhbC5hbHQ6aG92ZXIsIC5jdGFfc2VydmljZS5hbHQ6aG92ZXIsIC5jdGFfcGFydHMuYWx0OmhvdmVyLCAuY3RhX3RpcmVzLmFsdDpob3ZlciwgLmN0YV9zdmNwcm9tby5hbHQ6aG92ZXIgeyBjb2xvcjojMTkxOTE5OyB9IC5jdXN0b201NV9sZWZ0LCAuY3VzdG9tMjU1X2xlZnQsIC5jdXN0b20zNTVfbGVmdCwgLmN1c3RvbTQ1NV9sZWZ0LCAuY3RhX3ByaWNlLmFsdCwuY3RhX3ByaWNlOmhvdmVyLCAuY3RhX2NyZWRpdC5hbHQsIC5jdGFfY3JlZGl0OmhvdmVyLCAuY3RhX3Rlc3REcml2ZS5hbHQsIC5jdGFfdGVzdERyaXZlOmhvdmVyLCAuY3RhX2V2YWwuYWx0LCAuY3RhX2V2YWw6aG92ZXIsIC5jdGFfc2VydmljZS5hbHQsIC5jdGFfc2VydmljZTpob3ZlciwgLmN0YV9wYXJ0cy5hbHQsIC5jdGFfcGFydHM6aG92ZXIsIC5jdGFfdGlyZXMuYWx0LCAuY3RhX3RpcmVzOmhvdmVyLCAuY3RhX3N2Y3Byb21vLmFsdCwgLmN0YV9zdmNwcm9tbzpob3ZlciB7IGNvbG9yOiNGRkZGRkY7IH0gLmN0YV9wcmljZSwgLmN0YV9wcmljZS5hbHQ6aG92ZXIgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgMDsgfSAuY3RhX3ByaWNlLmFsdCwgLmN0YV9wcmljZTpob3ZlciB7IGJhY2tncm91bmQtcG9zaXRpb246LTMwOXB4IDA7IH0gLmN0YV9jcmVkaXQsIC5jdGFfY3JlZGl0LmFsdDpob3ZlciB7IGJhY2tncm91bmQtcG9zaXRpb246bGVmdCAtNjdweDsgfSAuY3RhX2NyZWRpdC5hbHQsIC5jdGFfY3JlZGl0OmhvdmVyIHsgYmFja2dyb3VuZC1wb3NpdGlvbjotMzA5cHggLTY3cHg7IH0gLmN0YV90ZXN0RHJpdmUsIC5jdGFfdGVzdERyaXZlLmFsdDpob3ZlciB7IGJhY2tncm91bmQtcG9zaXRpb246bGVmdCAtMTM1cHg7IH0gLmN0YV90ZXN0RHJpdmUuYWx0LCAuY3RhX3Rlc3REcml2ZTpob3ZlciB7IGJhY2tncm91bmQtcG9zaXRpb246LTMwOXB4IC0xMzVweDsgfSAuY3RhX2V2YWwsIC5jdGFfZXZhbC5hbHQ6aG92ZXIgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmxlZnQgLTIwNHB4OyB9IC5jdGFfZXZhbC5hbHQsIC5jdGFfZXZhbDpob3ZlciB7IGJhY2tncm91bmQtcG9zaXRpb246LTMwOXB4IC0yMDRweDsgfSAuY3RhX3N2Y3Byb21vLCAuY3RhX3N2Y3Byb21vLmFsdDpob3ZlciB7IGJhY2tncm91bmQtcG9zaXRpb246bGVmdCAtMjczcHg7IH0gLmN0YV9zdmNwcm9tby5hbHQsIC5jdGFfc3ZjcHJvbW86aG92ZXIgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMDlweCAtMjczcHg7IH0gLmN0YV9zZXJ2aWNlLCAuY3RhX3NlcnZpY2UuYWx0OmhvdmVyIHsgYmFja2dyb3VuZC1wb3NpdGlvbjpsZWZ0IC0zNDFweDsgfSAuY3RhX3NlcnZpY2UuYWx0LCAuY3RhX3NlcnZpY2U6aG92ZXIgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMDlweCAtMzQxcHg7IH0gLmN0YV9wYXJ0cywgLmN0YV9wYXJ0cy5hbHQ6aG92ZXIgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmxlZnQgLTQxMHB4OyB9IC5jdGFfcGFydHMuYWx0LCAuY3RhX3BhcnRzOmhvdmVyIHsgYmFja2dyb3VuZC1wb3NpdGlvbjotMzA5cHggLTQxMHB4OyB9IC5jdGFfdGlyZXMsIC5jdGFfdGlyZXMuYWx0OmhvdmVyIHsgYmFja2dyb3VuZC1wb3NpdGlvbjpsZWZ0IC00ODJweDsgfSAuY3RhX3RpcmVzLmFsdCwgLmN0YV90aXJlczpob3ZlciB7IGJhY2tncm91bmQtcG9zaXRpb246LTMwOXB4IC00ODJweDsgfSAuY3RhX3NlcnZpY2UuaGlkZV90ZXh0LCAuY3RhX3BhcnRzLmhpZGVfdGV4dCwgLmN0YV90aXJlcy5oaWRlX3RleHQsIC5jdGFfcHJpY2UuaGlkZV90ZXh0LCAuY3RhX2NyZWRpdC5oaWRlX3RleHQsIC5jdGFfdGVzdERyaXZlLmhpZGVfdGV4dCwgLmN0YV9ldmFsLmhpZGVfdGV4dCwgLmN0YV9zdmNwcm9tby5oaWRlX3RleHQgeyB0ZXh0LWluZGVudDotMjAwMGVtOyB9IGJvZHkuRlJFTkNIIC5jdGFfcHJpY2UuY3VzdG9tLCBib2R5LkZSRU5DSCAuY3RhX3ByaWNlLmN1c3RvbTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYmxhbmsuZ2lmJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX2NyZWRpdC5jdXN0b20sIGJvZHkuRlJFTkNIIC5jdGFfY3JlZGl0LmN1c3RvbTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYmxhbmsuZ2lmJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3Rlc3REcml2ZS5jdXN0b20sIGJvZHkuRlJFTkNIIC5jdGFfdGVzdERyaXZlLmN1c3RvbTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYmxhbmsuZ2lmJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX2V2YWwuY3VzdG9tLCBib2R5LkZSRU5DSCAuY3RhX2V2YWwuY3VzdG9tOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9ibGFuay5naWYnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfc2VydmljZS5jdXN0b20sIGJvZHkuRlJFTkNIIC5jdGFfc2VydmljZS5jdXN0b206aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2JsYW5rLmdpZicpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9wYXJ0cy5jdXN0b20sIGJvZHkuRlJFTkNIIC5jdGFfcGFydHMuY3VzdG9tOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9ibGFuay5naWYnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfdGlyZXMuY3VzdG9tLCBib2R5LkZSRU5DSCAuY3RhX3RpcmVzLmN1c3RvbTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYmxhbmsuZ2lmJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3N2Y3Byb21vLmN1c3RvbSwgYm9keS5GUkVOQ0ggLmN0YV9zdmNwcm9tby5jdXN0b206aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2JsYW5rLmdpZicpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfcHJpY2UuY3VzdG9tLCBib2R5LkVOR0xJU0ggLmN0YV9wcmljZS5jdXN0b206aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2JsYW5rLmdpZicpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfY3JlZGl0LmN1c3RvbSwgYm9keS5FTkdMSVNIIC5jdGFfY3JlZGl0LmN1c3RvbTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYmxhbmsuZ2lmJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV90ZXN0RHJpdmUuY3VzdG9tLCBib2R5LkVOR0xJU0ggLmN0YV90ZXN0RHJpdmUuY3VzdG9tOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9ibGFuay5naWYnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX2V2YWwuY3VzdG9tLCBib2R5LkVOR0xJU0ggLmN0YV9ldmFsLmN1c3RvbTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYmxhbmsuZ2lmJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9zZXJ2aWNlLmN1c3RvbSwgYm9keS5FTkdMSVNIIC5jdGFfc2VydmljZS5jdXN0b206aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2JsYW5rLmdpZicpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfcGFydHMuY3VzdG9tLCBib2R5LkVOR0xJU0ggLmN0YV9wYXJ0cy5jdXN0b206aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2JsYW5rLmdpZicpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfdGlyZXMuY3VzdG9tLCBib2R5LkVOR0xJU0ggLmN0YV90aXJlcy5jdXN0b206aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2JsYW5rLmdpZicpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfc3ZjcHJvbW8uY3VzdG9tLCBib2R5LkVOR0xJU0ggLmN0YV9zdmNwcm9tby5jdXN0b206aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2JsYW5rLmdpZicpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9wcmljZS5ibGFjaywgYm9keS5GUkVOQ0ggLmN0YV9wcmljZS5ibGFjazpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3ByaWNlX2JsYWNrX2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9jcmVkaXQuYmxhY2ssIGJvZHkuRlJFTkNIIC5jdGFfY3JlZGl0LmJsYWNrOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfZmluYW5jZV9ibGFja19mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfdGVzdERyaXZlLmJsYWNrLCBib2R5LkZSRU5DSCAuY3RhX3Rlc3REcml2ZS5ibGFjazpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3Rlc3Rkcml2ZV9ibGFja19mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfZXZhbC5ibGFjaywgYm9keS5GUkVOQ0ggLmN0YV9ldmFsLmJsYWNrOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfdHJhZGVpbl9ibGFja19mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfc2VydmljZS5ibGFjaywgYm9keS5GUkVOQ0ggLmN0YV9zZXJ2aWNlLmJsYWNrOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfc2VydmljZV9ibGFja19mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfcGFydHMuYmxhY2ssIGJvZHkuRlJFTkNIIC5jdGFfcGFydHMuYmxhY2s6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9wYXJ0c19ibGFja19mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfdGlyZXMuYmxhY2ssIGJvZHkuRlJFTkNIIC5jdGFfdGlyZXMuYmxhY2s6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV90aXJlc19ibGFja19mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfc3ZjcHJvbW8uYmxhY2ssIGJvZHkuRlJFTkNIIC5jdGFfc3ZjcHJvbW8uYmxhY2s6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9wcm9tb3NlcnZpY2VfYmxhY2tfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9wcmljZS5ibGFjaywgYm9keS5FTkdMSVNIIC5jdGFfcHJpY2UuYmxhY2s6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9wcmljZV9ibGFja19lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX2NyZWRpdC5ibGFjaywgYm9keS5FTkdMSVNIIC5jdGFfY3JlZGl0LmJsYWNrOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfZmluYW5jZV9ibGFja19lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3Rlc3REcml2ZS5ibGFjaywgYm9keS5FTkdMSVNIIC5jdGFfdGVzdERyaXZlLmJsYWNrOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfdGVzdGRyaXZlX2JsYWNrX2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfZXZhbC5ibGFjaywgYm9keS5FTkdMSVNIIC5jdGFfZXZhbC5ibGFjazpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3RyYWRlaW5fYmxhY2tfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9zZXJ2aWNlLmJsYWNrLCBib2R5LkVOR0xJU0ggLmN0YV9zZXJ2aWNlLmJsYWNrOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfc2VydmljZV9ibGFja19lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3BhcnRzLmJsYWNrLCBib2R5LkVOR0xJU0ggLmN0YV9wYXJ0cy5ibGFjazpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3BhcnRzX2JsYWNrX2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfdGlyZXMuYmxhY2ssIGJvZHkuRU5HTElTSCAuY3RhX3RpcmVzLmJsYWNrOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfdGlyZXNfYmxhY2tfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9zdmNwcm9tby5ibGFjaywgYm9keS5FTkdMSVNIIC5jdGFfc3ZjcHJvbW8uYmxhY2s6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9wcm9tb3NlcnZpY2VfYmxhY2tfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3ByaWNlLmJsdWUsIGJvZHkuRlJFTkNIIC5jdGFfcHJpY2UuYmx1ZTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3ByaWNlX2JsdWVfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX2NyZWRpdC5ibHVlLCBib2R5LkZSRU5DSCAuY3RhX2NyZWRpdC5ibHVlOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfZmluYW5jZV9ibHVlX2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV90ZXN0RHJpdmUuYmx1ZSwgYm9keS5GUkVOQ0ggLmN0YV90ZXN0RHJpdmUuYmx1ZTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3Rlc3Rkcml2ZV9ibHVlX2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9ldmFsLmJsdWUsIGJvZHkuRlJFTkNIIC5jdGFfZXZhbC5ibHVlOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfdHJhZGVpbl9ibHVlX2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9zZXJ2aWNlLmJsdWUsIGJvZHkuRlJFTkNIIC5jdGFfc2VydmljZS5ibHVlOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfc2VydmljZV9ibHVlX2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9wYXJ0cy5ibHVlLCBib2R5LkZSRU5DSCAuY3RhX3BhcnRzLmJsdWU6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9wYXJ0c19ibHVlX2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV90aXJlcy5ibHVlLCBib2R5LkZSRU5DSCAuY3RhX3RpcmVzLmJsdWU6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV90aXJlc19ibHVlX2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9zdmNwcm9tby5ibHVlLCBib2R5LkZSRU5DSCAuY3RhX3N2Y3Byb21vLmJsdWU6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9wcm9tb3NlcnZpY2VfYmx1ZV9mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3ByaWNlLmJsdWUsIGJvZHkuRU5HTElTSCAuY3RhX3ByaWNlLmJsdWU6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9wcmljZV9ibHVlX2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfY3JlZGl0LmJsdWUsIGJvZHkuRU5HTElTSCAuY3RhX2NyZWRpdC5ibHVlOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfZmluYW5jZV9ibHVlX2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfdGVzdERyaXZlLmJsdWUsIGJvZHkuRU5HTElTSCAuY3RhX3Rlc3REcml2ZS5ibHVlOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfdGVzdGRyaXZlX2JsdWVfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9ldmFsLmJsdWUsIGJvZHkuRU5HTElTSCAuY3RhX2V2YWwuYmx1ZTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3RyYWRlaW5fYmx1ZV9lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3NlcnZpY2UuYmx1ZSwgYm9keS5FTkdMSVNIIC5jdGFfc2VydmljZS5ibHVlOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfc2VydmljZV9ibHVlX2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfcGFydHMuYmx1ZSwgYm9keS5FTkdMSVNIIC5jdGFfcGFydHMuYmx1ZTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3BhcnRzX2JsdWVfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV90aXJlcy5ibHVlLCBib2R5LkVOR0xJU0ggLmN0YV90aXJlcy5ibHVlOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfdGlyZXNfYmx1ZV9lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3N2Y3Byb21vLmJsdWUsIGJvZHkuRU5HTElTSCAuY3RhX3N2Y3Byb21vLmJsdWU6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9wcm9tb3NlcnZpY2VfYmx1ZV9lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfcHJpY2UucmVkLCBib2R5LkZSRU5DSCAuY3RhX3ByaWNlLnJlZDpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3ByaWNlX3JlZF9mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfY3JlZGl0LnJlZCwgYm9keS5GUkVOQ0ggLmN0YV9jcmVkaXQucmVkOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfZmluYW5jZV9yZWRfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3Rlc3REcml2ZS5yZWQsIGJvZHkuRlJFTkNIIC5jdGFfdGVzdERyaXZlLnJlZDpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3Rlc3Rkcml2ZV9yZWRfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX2V2YWwucmVkLCBib2R5LkZSRU5DSCAuY3RhX2V2YWwucmVkOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfdHJhZGVpbl9yZWRfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3NlcnZpY2UucmVkLCBib2R5LkZSRU5DSCAuY3RhX3NlcnZpY2UucmVkOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfc2VydmljZV9yZWRfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3BhcnRzLnJlZCwgYm9keS5GUkVOQ0ggLmN0YV9wYXJ0cy5yZWQ6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9wYXJ0c19yZWRfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3RpcmVzLnJlZCwgYm9keS5GUkVOQ0ggLmN0YV90aXJlcy5yZWQ6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV90aXJlc19yZWRfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3N2Y3Byb21vLnJlZCwgYm9keS5GUkVOQ0ggLmN0YV9zdmNwcm9tby5yZWQ6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9wcm9tb3NlcnZpY2VfcmVkX2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfcHJpY2UucmVkLCBib2R5LkVOR0xJU0ggLmN0YV9wcmljZS5yZWQ6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9wcmljZV9yZWRfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9jcmVkaXQucmVkLCBib2R5LkVOR0xJU0ggLmN0YV9jcmVkaXQucmVkOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfZmluYW5jZV9yZWRfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV90ZXN0RHJpdmUucmVkLCBib2R5LkVOR0xJU0ggLmN0YV90ZXN0RHJpdmUucmVkOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfdGVzdGRyaXZlX3JlZF9lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX2V2YWwucmVkLCBib2R5LkVOR0xJU0ggLmN0YV9ldmFsLnJlZDpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3RyYWRlaW5fcmVkX2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfc2VydmljZS5yZWQsIGJvZHkuRU5HTElTSCAuY3RhX3NlcnZpY2UucmVkOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfc2VydmljZV9yZWRfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9wYXJ0cy5yZWQsIGJvZHkuRU5HTElTSCAuY3RhX3BhcnRzLnJlZDpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3BhcnRzX3JlZF9lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3RpcmVzLnJlZCwgYm9keS5FTkdMSVNIIC5jdGFfdGlyZXMucmVkOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfdGlyZXNfcmVkX2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfc3ZjcHJvbW8ucmVkLCBib2R5LkVOR0xJU0ggLmN0YV9zdmNwcm9tby5yZWQ6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9wcm9tb3NlcnZpY2VfcmVkX2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9wcmljZS5ncmV5LCBib2R5LkZSRU5DSCAuY3RhX3ByaWNlLmdyZXk6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9wcmljZV9ncmV5X2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9jcmVkaXQuZ3JleSwgYm9keS5GUkVOQ0ggLmN0YV9jcmVkaXQuZ3JleTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX2ZpbmFuY2VfZ3JleV9mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfdGVzdERyaXZlLmdyZXksIGJvZHkuRlJFTkNIIC5jdGFfdGVzdERyaXZlLmdyZXk6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV90ZXN0ZHJpdmVfZ3JleV9mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfZXZhbC5ncmV5LCBib2R5LkZSRU5DSCAuY3RhX2V2YWwuZ3JleTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3RyYWRlaW5fZ3JleV9mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfc2VydmljZS5ncmV5LCBib2R5LkZSRU5DSCAuY3RhX3NlcnZpY2UuZ3JleTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3NlcnZpY2VfZ3JleV9mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfcGFydHMuZ3JleSwgYm9keS5GUkVOQ0ggLmN0YV9wYXJ0cy5ncmV5OmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfcGFydHNfZ3JleV9mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfdGlyZXMuZ3JleSwgYm9keS5GUkVOQ0ggLmN0YV90aXJlcy5ncmV5OmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfdGlyZXNfZ3JleV9mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfc3ZjcHJvbW8uZ3JleSwgYm9keS5GUkVOQ0ggLmN0YV9zdmNwcm9tby5ncmV5OmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfcHJvbW9zZXJ2aWNlX2dyZXlfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9wcmljZS5ncmV5LCBib2R5LkVOR0xJU0ggLmN0YV9wcmljZS5ncmV5OmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfcHJpY2VfZ3JleV9lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX2NyZWRpdC5ncmV5LCBib2R5LkVOR0xJU0ggLmN0YV9jcmVkaXQuZ3JleTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX2ZpbmFuY2VfZ3JleV9lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3Rlc3REcml2ZS5ncmV5LCBib2R5LkVOR0xJU0ggLmN0YV90ZXN0RHJpdmUuZ3JleTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3Rlc3Rkcml2ZV9ncmV5X2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfZXZhbC5ncmV5LCBib2R5LkVOR0xJU0ggLmN0YV9ldmFsLmdyZXk6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV90cmFkZWluX2dyZXlfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9zZXJ2aWNlLmdyZXksIGJvZHkuRU5HTElTSCAuY3RhX3NlcnZpY2UuZ3JleTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3NlcnZpY2VfZ3JleV9lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3BhcnRzLmdyZXksIGJvZHkuRU5HTElTSCAuY3RhX3BhcnRzLmdyZXk6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9wYXJ0c19ncmV5X2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfdGlyZXMuZ3JleSwgYm9keS5FTkdMSVNIIC5jdGFfdGlyZXMuZ3JleTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3RpcmVzX2dyZXlfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9zdmNwcm9tby5ncmV5LCBib2R5LkVOR0xJU0ggLmN0YV9zdmNwcm9tby5ncmV5OmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfcHJvbW9zZXJ2aWNlX2dyZXlfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LmhlYWRpbmdDYXBzT24gaDEsIGJvZHkuaGVhZGluZ0NhcHNPbiBoMiwgYm9keS5oZWFkaW5nQ2Fwc09uIGgzLCBib2R5LmhlYWRpbmdDYXBzT24gc3Bhbi5oMi1hbHQsIGJvZHkuaGVhZGluZ0NhcHNPbiBzcGFuLmgzLWFsdCwgYm9keS5oZWFkaW5nQ2Fwc09uLlVzZWRTcnAyIC5jYXJCYXNpY3MgLmNhclRpdGxlIC5kaXZDaXR5LCBib2R5LmhlYWRpbmdDYXBzT24gLnYtY2FyZCAuaGVhZGVyLXNlY3Rpb24gLm9yZywgYm9keS5oZWFkaW5nQ2Fwc09uICNmb290ZXIgLm9yZywgYm9keS5oZWFkaW5nQ2Fwc09uIC5sb2dvYXJlYSAuYWRkcmVzcyAuYWRyIHNwYW46Zmlyc3QtY2hpbGQsIGJvZHkuaGVhZGluZ0NhcHNPbiAjZm9vdGVyIC52aXYsIGJvZHkuaGVhZGluZ0NhcHNPbiAuc2VhcmNoLWxpbmtzLXdyYXBwZXIgLnNlYXJjaC1saW5rLXRpdGxlLCBib2R5LmhlYWRpbmdDYXBzT24gLnBvcHVwaXplckJvZHkgI3RyYWRlSW5CYXJQb3B1cF9saW5lMSwgYm9keS5oZWFkaW5nQ2Fwc09uIC5jYXJvdXNzZWwgLmNhcm91c2VsVGFicyAudGFiLWxhYmVsLCBib2R5LmhlYWRpbmdDYXBzT24gLmZvcm1IZWFkaW5nLCBib2R5LmhlYWRpbmdDYXBzT24gLmNvbXBhcmUtdmVoaWNsZXMtZm9ybS10YWJsZSAudHJpbS1wcmV2aWV3IC5jb21wYXJlLXRpdGxlIHsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlICFpbXBvcnRhbnQ7IH0gYm9keS5oZWFkaW5nQ2Fwc09uIC5jYXJvdXNzZWwgLmNhcm91c2VsVGFicyAudGFiLWxhYmVsIHsgZm9udC1zaXplOjEuMjVyZW07IH0gQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOjEzMDFweCkgeyBib2R5LmhlYWRpbmdDYXBzT24gLmRpdkNlcnRpZmljYXRpb25CbG9jayBoMi5kZWZhdWx0IHsgZm9udC1zaXplOjEuNHJlbSAhaW1wb3J0YW50OyB9IH0gLmRpdkNlcnRpZmljYXRpb25CbG9jayBoMiBzcGFuLmljb24sIC5kaXZDZXJ0aWZpY2F0aW9uQmxvY2sgc3Bhbi5oMi1hbHQgc3Bhbi5pY29uIHsgbWluLXdpZHRoOjIwcHg7IH0gLmRpdkNlcnRpZmljYXRpb25CbG9jayAuY2VydC10aXRsZSB7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbi1sZWZ0OjIwcHg7IGZvbnQtc2l6ZToxLjNlbTsgfSAuZGl2Q2VydGlmaWNhdGlvbkJsb2NrIC5jZXJ0LXN1YnRpdGxlIHsgZGlzcGxheTpibG9jazsgbWFyZ2luLWxlZnQ6MjBweDsgbWFyZ2luLWJvdHRvbToxMHB4OyBjb2xvcjojNzc3OyBmb250LXNpemU6MWVtOyBtYXJnaW4tdG9wOjVweDsgfSAuZGl2Q2VydGlmaWNhdGlvbkJsb2NrIC5jZXJ0LWhpZ2hsaWdodGVkLXZhbHVlIHsgYmFja2dyb3VuZC1jb2xvcjojMDAwOyBib3JkZXI6MXB4IHNvbGlkICMwMDA7IGNvbG9yOiNGRkY7IHBhZGRpbmc6MTFweCAyMHB4IDlweCAyMHB4OyBib3JkZXItcmFkaXVzOjNweDsgZGlzcGxheTppbmxpbmUtYmxvY2s7IH0gLklubmVyQm94TGF5ZXIuZGl2Q2VydGlmaWNhdGlvbkJsb2NrLmlzT25lUm93IGltZyB7IG1heC13aWR0aDphdXRvICFpbXBvcnRhbnQ7IH0gLnVzZWRWZHBBY3Rpb25zIC5hY3Rpb24tYm94IGEuYnRuLWRlZmF1bHQgeyB3aWR0aDoxMDAlICFpbXBvcnRhbnQ7IGRpc3BsYXk6YmxvY2sgIWltcG9ydGFudDsgbWFyZ2luLWJvdHRvbToxMHB4ICFpbXBvcnRhbnQ7IH0gLmN0YV9wcmljZTpob3ZlciwgLmN0YV9jcmVkaXQ6aG92ZXIsIC5jdGFfdGVzdERyaXZlOmhvdmVyLCAuY3RhX2V2YWw6aG92ZXIsIC5jdGFfc2VydmljZTpob3ZlciwgLmN0YV9wYXJ0czpob3ZlciwgLmN0YV90aXJlczpob3ZlciwgLmN0YV9zdmNwcm9tbzpob3Zlcnsgb3BhY2l0eTowLjc1OyB9IC5zZWFyY2hfY2VydF9nZW5lcmljeyBoZWlnaHQ6NDRweDsgbWFyZ2luOjJweCA1cHggMCAwOyBmbG9hdDpsZWZ0OyBtYXJnaW4tdG9wOi0wcHg7IH0gI25ld0NhckluVXNlZFBhZ2V7IG1hcmdpbi10b3A6LTJweDsgbWFyZ2luLWJvdHRvbTo1cHg7IGRpc3BsYXk6bm9uZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0gI25ld0NhckluVXNlZFBhZ2UgLmJveDI4OF90b3B7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL3JpZ2h0X2JveDRfdG9wLnBuZycpIG5vLXJlcGVhdCBzY3JvbGwgbGVmdCB0b3AgdHJhbnNwYXJlbnQ7IH0gI25ld0NhckluVXNlZFBhZ2UgLmJveDI4ODBfbWlkeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9yaWdodF9ib3g0X21pZC5wbmcnKSByZXBlYXQteSBzY3JvbGwgbGVmdCB0b3AgdHJhbnNwYXJlbnQgfSAjbmV3Q2FySW5Vc2VkUGFnZSAuYm94Mjg4X2Zvb3Rlcl9xc3sgYmFja2dyb3VuZCA6dXJsKCcvaW1hZ2VzL3JpZ2h0X2JveDRfZm9vdGVyLnBuZycpIG5vLXJlcGVhdCBzY3JvbGwgbGVmdCB0b3AgdHJhbnNwYXJlbnQgfSAjbmV3Q2FySW5Vc2VkUGFnZV9zY3JhdGNoUHJpY2V7IHdpZHRoOjExMHB4OyBoZWlnaHQ6MzVweDsgZmxvYXQ6cmlnaHQ7IHBvc2l0aW9uOnJlbGF0aXZlOyBsZWZ0Oi04M3B4OyBkaXNwbGF5Om5vbmU7IH0gI25ld0NhckluVXNlZFBhZ2VfdGl0bGV7IGRpc3BsYXk6YmxvY2s7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC1zaXplOjAuOTM4cmVtIDtmb250LXdlaWdodDpib2xkO3RleHQtZGVjb3JhdGlvbjpub25lOyB9IHVsI2NyZWRpdF9kcml2ZXRyYWluLCB1bCNjcmVkaXRfZnVlbHR5cGUsIHVsI2NyZWRpdF9ib2R5VHlwZXMgeyBsaXN0LXN0eWxlOm5vbmU7IGZsb2F0OmxlZnQ7IHdpZHRoOjMzJTsgcGFkZGluZy1ib3R0b206MTBweDsgfSB1bCNjcmVkaXRfZHJpdmV0cmFpbiBsaSA+IGxhYmVsLCB1bCNjcmVkaXRfZnVlbHR5cGUgbGkgPiBsYWJlbCwgdWwjY3JlZGl0X2JvZHlUeXBlcyBsaSA+IGxhYmVseyBkaXNwbGF5OmJsb2NrOyBwYWRkaW5nLWJvdHRvbTo1cHg7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzI0MjQyNDsgZmxvYXQ6bm9uZTsgfSB1bCNjcmVkaXRfZHJpdmV0cmFpbiBsaSA+IGRpdiwgdWwjY3JlZGl0X2Z1ZWx0eXBlIGxpID4gZGl2LCB1bCNjcmVkaXRfYm9keVR5cGVzIGxpID4gZGl2eyBkaXNwbGF5OmJsb2NrOyBwYWRkaW5nLWJvdHRvbTo1cHg7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzFiMWIxYjsgZmxvYXQ6bm9uZTsgfSB1bCNjcmVkaXRfZHJpdmV0cmFpbiBsaSA+IGxhYmVsID4gc3BhbiwgdWwjY3JlZGl0X2Z1ZWx0eXBlIGxpID4gbGFiZWwgPiBzcGFuLCB1bCNjcmVkaXRfYm9keVR5cGVzIGxpID4gbGFiZWwgPiBzcGFueyBtYXJnaW4tcmlnaHQ6OHB4OyBtYXJnaW4tdG9wOjBweDsgfSAjY3JlZGl0X3ZpX2FkdmFuY2VkIGxhYmVseyBmbG9hdDpsZWZ0OyB9ICNjcmVkaXRfdmlfYWR2YW5jZWQgbGFiZWwgZGl2LmxhYmVseyBmbG9hdDpsZWZ0OyBsaW5lLWhlaWdodDozMnB4OyBtYXJnaW4tcmlnaHQ6NnB4OyB3aWR0aDoyMDBweDsgdGV4dC1hbGlnbjpyaWdodDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojMjQyNDI0OyB9IC5kZXRhaWxzX2JveCAuYm94Ml9kZXRhaWxzX21pZCAuYm94Ml9kZXRhaWxzX3RleHQsIC5kZXRhaWxzX2JveCAuYm94Ml9kZXRhaWxzX21pZCAuYm94Ml9kZXRhaWxzX3RleHQyNSBzcGFuLCAuZGV0YWlsc19ib3ggLmJveDJfZGV0YWlsc19taWQgLmJveDJfZGV0YWlsc190ZXh0IHNwYW57IGNvbG9yOiMxYjFiMWI7IH0gLnVzcC1jb2xvciB7IGNvbG9yOiMxYjFiMWI7IH0gLm15Y2Fyb3VzZWxfdGR7IGRpc3BsYXk6YmxvY2s7IHdpZHRoOjU2MHB4OyBvdmVyZmxvdzpoaWRkZW47IG1hcmdpbi1sZWZ0OjMwcHg7IG1hcmdpbi10b3A6MTBweDsgfSAudmVoaWNsZUNhcm91c2VseyB3aWR0aDoxOTBweDsgfSAuZGV0YWlsc19ib3gsIC5kZXRhaWxzX2JveCAuYm94Ml9kZXRhaWxzX21pZEV4IHsgYmFja2dyb3VuZDojYjViNWI0OyB9ICNleHRDb2xvclNlbGVjdC5maXhlZFdpZHRoICwgI2ludENvbG9yU2VsZWN0LmZpeGVkV2lkdGggeyB3aWR0aDoyMzBweDsgfSAuY29sb3JDaG9pY2V7IGhlaWdodDozMXB4OyB3aWR0aDozMXB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC1pbmRlbnQ6LTIwMDBlbTsgbGluZS1oZWlnaHQ6MzFweDsgZm9udC1zaXplOjAuOTM4cmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgZmxvYXQ6bGVmdDsgYm9yZGVyOjFweCBzb2xpZCAjMDAwOyBtYXJnaW46MnB4OyBjb2xvcjojZmZmOyB9IC5jb2xvckNob2ljZS5jaG9zZW4geyB0ZXh0LWluZGVudDowOyB9IC5jb2xvckNob2ljZS50YW4geyBiYWNrZ3JvdW5kLWNvbG9yOiNkMmI0OGM7IH0gLmNvbG9yQ2hvaWNlLmJsYWNrIHsgYmFja2dyb3VuZC1jb2xvcjojMDAwMDAwOyB9IC5jb2xvckNob2ljZS5nb2xkIHsgYmFja2dyb3VuZC1jb2xvcjojYjI5NjAwOyB9IC5jb2xvckNob2ljZS5icm93biB7IGJhY2tncm91bmQtY29sb3I6IzY2MzMwZTsgfSAuY29sb3JDaG9pY2UuZ3JlZW4geyBiYWNrZ3JvdW5kLWNvbG9yOiMwMDk5MDA7IH0gLmNvbG9yQ2hvaWNlLmdyYXkgeyBiYWNrZ3JvdW5kLWNvbG9yOiM5Nzk3OTc7IH0gLmNvbG9yQ2hvaWNlLmdyZXkgeyBiYWNrZ3JvdW5kLWNvbG9yOiM5Nzk3OTc7IH0gLmNvbG9yQ2hvaWNlLm9yYW5nZSB7IGJhY2tncm91bmQtY29sb3I6I2U2OTQwMDsgfSAuY29sb3JDaG9pY2Uuc2lsdmVyIHsgYmFja2dyb3VuZC1jb2xvcjojYzBjMGMwOyBjb2xvcjojMWIxYjFiOyB9IC5jb2xvckNob2ljZS5tYXV2ZSB7IGJhY2tncm91bmQtY29sb3I6I2Q0NzNkNDsgfSAuY29sb3JDaG9pY2UucmVkIHsgYmFja2dyb3VuZC1jb2xvcjojY2MwMDAwOyB9IC5jb2xvckNob2ljZS53aGl0ZSB7IGJhY2tncm91bmQtY29sb3I6I0ZGRkZGRjsgY29sb3I6IzFiMWIxYjsgfSAuY29sb3JDaG9pY2UueWVsbG93IHsgYmFja2dyb3VuZC1jb2xvcjojZjBjMDAwOyBjb2xvcjojMWIxYjFiOyB9IC5jb2xvckNob2ljZS5ibHVlIHsgYmFja2dyb3VuZC1jb2xvcjojMTkxOWM0OyB9IC5jb2xvckNob2ljZS5jb3BwZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiNBRjQ3NDQ7IH0gLmNvbG9yQ2hvaWNlLnB1cnBsZSB7IGJhY2tncm91bmQtY29sb3I6IzUzMTVCMjsgfSAubGlnaHQtZ3JheSB7IGJhY2tncm91bmQtY29sb3I6IzRiNGM0YzsgY29sb3I6IzFiMWIxYjt9IGEuY29sb3JDaG9pY2UgeyBjb2xvcjojZmZmOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSB0ci5ib3JkZXJfYm90dG9tX2xpbmUgdGQsIHRyLmJvcmRlcl9ib3R0b21fbGluZSB0aCB7IGJvcmRlci1ib3R0b206MXB0IHNvbGlkIGJsYWNrOyB9IC5ib3JkZXJfYm94eyBib3JkZXItcmFkaXVzOjVweDsgbWFyZ2luLWJvdHRvbTo1cHg7IGJhY2tncm91bmQtY29sb3I6cmdiKDI1NSwyNTUsMjU1KTsgLW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0xMDApOyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsMSk7IGJveC1zaGFkb3c6bm9uZTsgY2xlYXI6Ym90aDsgfSAuaG9tZXBhZ2UgLmJvcmRlcl9ib3h7IGJveC1zaGFkb3c6bm9uZSFpbXBvcnRhbnQ7IH0gI2hvbWVfc29jaWFsVGltZWxpbmV7IGJhY2tncm91bmQtY29sb3I6dmFyKC0taG9tZXBhZ2Utc29jaWFsLWJnLWNvbG9yKTsgfSAjZm9vdGVyV3JhcHBlcnsgd2lkdGg6MTAwJTsgbWFyZ2luLXRvcDowcHg7IGNsZWFyOmJvdGg7IHBhZGRpbmctdG9wOjE1cHg7IGNvbG9yOnZhcigtLWZvb3Rlci1pdGVtcy1saW5rLWNvbG9yKTsgY29sb3I6IzcwNzA3MDsgYmFja2dyb3VuZC1jb2xvcjojMWIxYjFiOyBiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmE7IH0gI2Zvb3RlcldyYXBwZXIgc3ZnIHsgZmlsbDp2YXIoLS1mb290ZXItbGluay10aXRsZS1jb2wpOyB9IC5jdXN0b21mb3JtX3N1Ym1pdHsgbWFyZ2luLXRvcDoyMHB4OyBtYXJnaW4tYm90dG9tOjIwcHg7IH0gLnNlZU9wdGlvbnN7IGRpc3BsYXk6bm9uZTsgfSAuc3RyaWtlLXByaWNlLCAuc3RyaWtlLXByaWNlLWJsYWNrLCAuc3RyaWtlLXByaWNlLXdoaXRlIHsgZGlzcGxheTppbmxpbmUtYmxvY2s7IHBvc2l0aW9uOnJlbGF0aXZlOyB9IC5zdHJpa2UtcHJpY2U6OmJlZm9yZSwgLnN0cmlrZS1wcmljZS1ibGFjazo6YmVmb3JlLCAuc3RyaWtlLXByaWNlLXdoaXRlOjpiZWZvcmUgeyBjb250ZW50OiIiOyBoZWlnaHQ6MnB4OyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjQwJTsgLW1vei10cmFuc2Zvcm06cm90YXRlKDdkZWcpOyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoN2RlZyk7IHRyYW5zZm9ybTpyb3RhdGUoN2RlZyk7IHRyYW5zZm9ybS1vcmlnaW46NTAlIDUwJSAwOyB3aWR0aDoxMDAlOyB9IC5zdHJpa2UtcHJpY2UuLXRoaW46OmJlZm9yZXsgaGVpZ2h0OjFweDsgfSAuc3RyaWtlLXByaWNlOjpiZWZvcmUgeyBiYWNrZ3JvdW5kOm5vbmUgcmVwZWF0IHNjcm9sbCAwIDAgIzAwMDsgfSAuc3RyaWtlLXByaWNlLWJsYWNrOjpiZWZvcmUgeyBiYWNrZ3JvdW5kOm5vbmUgcmVwZWF0IHNjcm9sbCAwIDAgYmxhY2s7IH0gLnN0cmlrZS1wcmljZS13aGl0ZTo6YmVmb3JlIHsgYmFja2dyb3VuZDpub25lIHJlcGVhdCBzY3JvbGwgMCAwIHdoaXRlOyB9IC5ibHVyLXByaWNlIHsgLXdlYmtpdC1maWx0ZXI6Ymx1cigwLjE1ZW0pOyAtbW96LWZpbHRlcjpibHVyKDAuMTVlbSk7IC1tcy1maWx0ZXI6Ymx1cigwLjE1ZW0pOyAtby1maWx0ZXI6Ymx1cigwLjE1ZW0pOyBmaWx0ZXI6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIGhlaWdodD0nMCcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJz48ZmlsdGVyIGlkPSdzdmdCbHVyJyB4PSctNSUnIHk9Jy01JScgd2lkdGg9JzExMCUnIGhlaWdodD0nMTEwJSc+PGZlR2F1c3NpYW5CbHVyIGluPSdTb3VyY2VHcmFwaGljJyBzdGREZXZpYXRpb249JzUnLz4jc3ZnQmx1ciIpOyBmaWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkJsdXIoUGl4ZWxSYWRpdXM9JzUnKTsgZmlsdGVyOmJsdXIoMC4xNWVtKTsgfSAubGVmdF9ib3h7IGJhY2tncm91bmQtY29sb3I6cmdiKDI1NSwyNTUsMjU1KTsgLW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0xMDApOyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsMSk7IG1hcmdpbi10b3A6MTBweCA7IHBhZGRpbmc6MTBweCAwIDEwcHg7IGZsb2F0OmxlZnQ7IGhlaWdodDphdXRvOyBib3JkZXItcmFkaXVzOjVweDsgYm94LXNoYWRvdzpub25lOyB9IC5idG4tZGVmYXVsdCwgLmJ0bi1zbSwgLmJ0bi1sZywuY3VzdG9tZm9ybV9zdWJtaXQsLnN1Ym1pdHsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgZGlzcGxheTppbmxpbmUtYmxvY2s7IGN1cnNvcjpwb2ludGVyOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC10cmFuc2Zvcm06dmFyKC0tY2VydC10eHQtdHJhbnNmb3JtLCB2YXIoLS10eHQtdXBwZXIpKTsgfSAuYnRuLWRlZmF1bHR7IGJhY2tncm91bmQtY29sb3I6IzFiMWIxYjsgfSAuYnRuLWRlZmF1bHQsIC5zdWJtaXQsIC5jdXN0b21mb3JtX3N1Ym1pdCwgaW5wdXRbdHlwZT1idXR0b25dLmJ0bi1kZWZhdWx0LCBpbnB1dFt0eXBlPXN1Ym1pdF0uYnRuLWRlZmF1bHQgeyBwYWRkaW5nOjExcHggMjBweCA5cHggMjBweDsgYm9yZGVyLXJhZGl1czozcHg7IH0gLmJ0bi1zbSwgaW5wdXRbdHlwZT1idXR0b25dLmJ0bi1zbSwgaW5wdXRbdHlwZT1zdWJtaXRdLmJ0bi1zbSB7IGZvbnQtc2l6ZTppbmhlcml0IWltcG9ydGFudDsgcGFkZGluZzo0cHggMTBweCFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6M3B4IWltcG9ydGFudDsgfSAuYnRuLWxnLCBpbnB1dFt0eXBlPWJ1dHRvbl0uYnRuLWxnLCBpbnB1dFt0eXBlPXN1Ym1pdF0uYnRuLWxnIHsgZm9udC1zaXplOjEuMDYzcmVtIDsgcGFkZGluZzoxMnB4IDUwcHg7IGJvcmRlci1yYWRpdXM6NnB4OyBmb250LXdlaWdodDpib2xkOyB9IC5idG4tZGVmYXVsdDpmb2N1cywgLmN1c3RvbWZvcm1fc3VibWl0OmZvY3VzLCAuYnRuLXNtOmZvY3VzLCAuYnRuLWxnOmZvY3VzLCAjZXhpdF9wb3B1cF95ZXM6Zm9jdXMsICNleGl0X3BvcHVwX25vOmZvY3VzIHsgb3V0bGluZTpub25lOyB9IC5idG4tZGVmYXVsdC5hcHBseS1jcmVkaXQgeyBkaXNwbGF5OmlubGluZS1ibG9jazsgdmVydGljYWwtYWxpZ246dG9wOyB3b3JkLXdyYXA6bm9ybWFsOyB3aWR0aDoxMDBweDsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmc6M3B4IDVweDsgZm9udC1zaXplOjAuNzVyZW0gOyB9IC5idG4tZGVmYXVsdCwgLmN1c3RvbWZvcm1fc3VibWl0LCBpbnB1dFt0eXBlPWJ1dHRvbl0uYnRuLWRlZmF1bHQsIGlucHV0W3R5cGU9c3VibWl0XS5idG4tZGVmYXVsdHsgZm9udC1zaXplOjAuOHJlbTsgfSAuYnRuLWRlZmF1bHQsIC5idG4tc20sLmJ0bi1sZywgLnN1Ym1pdCwgI3NsaWRlaXQgaW5wdXQuc2VuZCwgLmN1c3RvbWZvcm1fc3VibWl0IHsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS10YWItY29sb3IpOyBib3JkZXItd2lkdGg6MXB4OyBib3JkZXItc3R5bGU6c29saWQ7IGJvcmRlci1jb2xvcjp2YXIoLS10YWItdGV4dC1jb2xvcik7IGNvbG9yOnZhcigtLXRhYi10ZXh0LWNvbG9yKTsgdGV4dC1zaGFkb3c6bm9uZTsgfSAuYnRuLWRlZmF1bHQuYnRuLWJnLXNhbWUgeyBib3JkZXItY29sb3I6IzFiMWIxYjsgfSAuYnRuLWRlZmF1bHQuYnRuLWJnLXNhbWU6aG92ZXIgeyBib3JkZXItY29sb3I6I2UzMTczZTsgfSAuYnRuLWRlZmF1bHQ6aG92ZXIsIC5jdXN0b21mb3JtX3N1Ym1pdDpob3ZlciwgLmJ0bi1zbTpob3ZlciwgLmJ0bi1sZzpob3ZlciwgLnN1Ym1pdDpob3ZlciwgI3NsaWRlaXQgaW5wdXQuc2VuZDpob3ZlciB7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tbWVudS1ob3Zlci1iZy1jb2xvcik7IGJvcmRlci13aWR0aDoxcHg7IGJvcmRlci1zdHlsZTpzb2xpZDsgYm9yZGVyLWNvbG9yOnZhcigtLW1lbnUtaG92ZXItdGV4dC1jb2xvcik7IGNvbG9yOnZhcigtLW1lbnUtaG92ZXItdGV4dC1jb2xvcik7IH0gLmJ0bi1kZWZhdWx0LnByb21vY29sb3IsIC5idG4tc20ucHJvbW9jb2xvciwgLmJ0bi1sZy5wcm9tb2NvbG9yIHsgYmFja2dyb3VuZC1jb2xvcjojZTMxNzNlOyBib3JkZXI6MXB4IHNvbGlkICNlMzE3M2U7IGNvbG9yOiNmZmZmZmY7IH0gLmJ0bi1kZWZhdWx0LnByb21vY29sb3I6aG92ZXIsIC5idG4tc20ucHJvbW9jb2xvcjpob3ZlciwgLmJ0bi1sZy5wcm9tb2NvbG9yOmhvdmVyeyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IGNvbG9yOiNlMzE3M2U7IH0gLmJ0bi1kZWZhdWx0LmJsYWNrLCAuYnRuLXNtLmJsYWNrLCAuYnRuLWxnLmJsYWNrIHsgYmFja2dyb3VuZC1jb2xvciA6IzAwMDAwMDsgYm9yZGVyIDoxcHggc29saWQgIzAwMDAwMDsgY29sb3IgOiNmZmZmZmY7IH0gLmJ0bi1kZWZhdWx0LmJsYWNrLndpdGhib3JkZXIsIC5idG4tc20uYmxhY2sud2l0aGJvcmRlciwgLmJ0bi1sZy5ibGFjay53aXRoYm9yZGVyIHsgYm9yZGVyIDoxcHggc29saWQgI2ZmZmZmZjsgfSAuYnRuLWRlZmF1bHQuYmxhY2s6aG92ZXIsIC5idG4tc20uYmxhY2s6aG92ZXIsIC5idG4tbGcuYmxhY2s6aG92ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yIDojZmZmZmZmOyBjb2xvcjojMDAwMDAwOyB9IC5idG4tZGVmYXVsdC5ubywgLmJ0bi1zbS5ubywgLmJ0bi1sZy5ubyB7IGJhY2tncm91bmQtY29sb3I6I0ZGRjsgYm9yZGVyOjFweCBzb2xpZCAjNTU1OyBjb2xvcjojMDAwOyB9IC5idG4tZGVmYXVsdC5ubzpob3ZlciwgLmJ0bi1zbS5ubzpob3ZlciwgLmJ0bi1sZy5ubzpob3ZlcnsgYmFja2dyb3VuZC1jb2xvcjojNjY2NjY2OyBib3JkZXI6MXB4IHNvbGlkICM2NjY2NjY7IGNvbG9yOiNGRkZGRkY7IH0gLmJ0bi1kZWZhdWx0LmludmVydCwgLmJ0bi1zbS5pbnZlcnQsIC5idG4tbGcuaW52ZXJ0LCAuYnRuLWRlZmF1bHQuaW52ZXJ0LmZsYXQsIC5idG4tc20uaW52ZXJ0LmZsYXQsIC5idG4tbGcuaW52ZXJ0LmZsYXQgeyBiYWNrZ3JvdW5kOiB2YXIoLS10YWItdGV4dC1jb2xvcik7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tdGFiLXRleHQtY29sb3IpOyBjb2xvcjp2YXIoLS10YWItY29sb3IpOyBib3gtc2hhZG93Om5vbmU7IH0gLmJ0bi1kZWZhdWx0LmludmVydDpob3ZlciwgLmJ0bi1zbS5pbnZlcnQ6aG92ZXIsIC5idG4tbGcuaW52ZXJ0OmhvdmVyLCAuYnRuLWRlZmF1bHQuaW52ZXJ0LmZsYXQ6aG92ZXIsIC5idG4tc20uaW52ZXJ0LmZsYXQ6aG92ZXIsIC5idG4tbGcuaW52ZXJ0LmZsYXQ6aG92ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXRhYi1jb2xvcik7IGJvcmRlci1jb2xvcjp2YXIoLS10YWItdGV4dC1jb2xvcik7IGNvbG9yOnZhcigtLXRhYi10ZXh0LWNvbG9yKTsgfSAuYnRuLWRlZmF1bHQucmVkLCAuYnRuLXNtLnJlZCwgLmJ0bi1sZy5yZWQgeyBiYWNrZ3JvdW5kOiNmZjMzMzMhaW1wb3J0YW50OyBiYWNrZ3JvdW5kLWNvbG9yOiNmZjMzMzMhaW1wb3J0YW50OyBib3JkZXI6MXB4IHNvbGlkICNmNTFhMWEhaW1wb3J0YW50OyBjb2xvcjojRkZGRkZGIWltcG9ydGFudDsgfSAuYnRuLWRlZmF1bHQucmVkOmhvdmVyLCAuYnRuLXNtLnJlZDpob3ZlciwgLmJ0bi1sZy5yZWQ6aG92ZXJ7IGJhY2tncm91bmQ6IzMzMzMzMyFpbXBvcnRhbnQ7IGJhY2tncm91bmQtY29sb3I6IzMzMzMzMyFpbXBvcnRhbnQ7IGJvcmRlcjoxcHggc29saWQgIzMzMzMzMyFpbXBvcnRhbnQ7IGNvbG9yOiNGRkZGRkYhaW1wb3J0YW50OyB9IC5idG4tZGVmYXVsdC53aGl0ZSwgLmJ0bi1zbS53aGl0ZSwgLmJ0bi1sZy53aGl0ZSB7IGJhY2tncm91bmQ6I2ZmZjsgYm9yZGVyOjFweCBzb2xpZCAjMDAwOyBjb2xvcjojMWIxYjFiOyBib3gtc2hhZG93Om5vbmU7IH0gLmRlYWxlci1zZWxlY3Qtd3JhcHBlciB7IGRpc3BsYXk6Z3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnI7IGNvbHVtbi1nYXA6MS41cmVtOyByb3ctZ2FwOjAuNXJlbTsgZ3JpZC1hdXRvLWNvbHVtbnM6MC41ZnI7IG1hcmdpbi1ib3R0b206MTBweDsgbWFyZ2luLXRvcDoxNXB4OyB9IC5kZWFsZXItc2VsZWN0LXdyYXBwZXIgLmJ0biB7IHRleHQtd3JhcDphdXRvOyB0ZXh0LWFsaWduOmxlZnQ7IHBhZGRpbmctbGVmdDoxMHB4OyB0cmFuc2l0aW9uOjAuMnMgZWFzZS1pbi1vdXQ7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgfSAuZGVhbGVyLXNlbGVjdC13cmFwcGVyIC5idG4uZm9jdXNlZCwgLmRlYWxlci1zZWxlY3Qtd3JhcHBlciAuYnRuOmZvY3VzIHsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS10YWItdGV4dC1jb2xvcik7IGJvcmRlci13aWR0aDoxcHg7IGJvcmRlci1zdHlsZTpzb2xpZDsgYm9yZGVyLWNvbG9yOnZhcigtLXRhYi1jb2xvcik7IGNvbG9yOnZhcigtLXRhYi1jb2xvcik7IGJveC1zaGFkb3c6MCA2cHggMTJweCByZ2JhKDAsMCwwLC4xNzUpOyB0cmFuc2Zvcm06dHJhbnNsYXRlWCgycHgpOyB9IC5hcHBseS1jcmVkaXQgeyAtbW96LWJveC1zaGFkb3c6aW5zZXQgMHB4IC0zcHggN3B4IDBweCAjZjAyNDRiOyAtd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMHB4IC0zcHggN3B4IDBweCAjZjAyNDRiOyBib3gtc2hhZG93Omluc2V0IDBweCAtM3B4IDdweCAwcHggI2YwMjQ0YjsgYmFja2dyb3VuZDotd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBjb2xvci1zdG9wKDAuMDUsICNmZjRhNzEpLCBjb2xvci1zdG9wKDEsICNlMzE3M2UpKTsgYmFja2dyb3VuZDotbW96LWxpbmVhci1ncmFkaWVudCh0b3AsICNmZjRhNzEgNSUsICNlMzE3M2UgMTAwJSk7IGJhY2tncm91bmQ6LXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAjZmY0YTcxIDUlLCAjZTMxNzNlIDEwMCUpOyBiYWNrZ3JvdW5kOi1vLWxpbmVhci1ncmFkaWVudCh0b3AsICNmZjRhNzEgNSUsICNlMzE3M2UgMTAwJSk7IGJhY2tncm91bmQ6LW1zLWxpbmVhci1ncmFkaWVudCh0b3AsICNmZjRhNzEgNSUsICNlMzE3M2UgMTAwJSk7IGJhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgI2ZmNGE3MSA1JSwgI2UzMTczZSAxMDAlKTsgZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjZmYzMzMzJywgZW5kQ29sb3JzdHI9JyNEQjAwMDAnLEdyYWRpZW50VHlwZT0wKTsgYmFja2dyb3VuZC1jb2xvcjojZmY0YTcxOyBib3JkZXI6MXB4IHNvbGlkICNmZDMxNTg7IH0gLmFwcGx5LWNyZWRpdDpob3ZlciB7IGJhY2tncm91bmQ6LXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgY29sb3Itc3RvcCgwLjA1LCAjZmY0YTcxKSwgY29sb3Itc3RvcCgxLCAjZTMxNzNlKSk7IGJhY2tncm91bmQ6LW1vei1saW5lYXItZ3JhZGllbnQodG9wLCAjZTMxNzNlIDUlLCAjZmY0YTcxIDEwMCUpOyBiYWNrZ3JvdW5kOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgI2UzMTczZSA1JSwgI2ZmNGE3MSAxMDAlKTsgYmFja2dyb3VuZDotby1saW5lYXItZ3JhZGllbnQodG9wLCAjZTMxNzNlIDUlLCAjZmY0YTcxIDEwMCUpOyBiYWNrZ3JvdW5kOi1tcy1saW5lYXItZ3JhZGllbnQodG9wLCAjZTMxNzNlIDUlLCAjZmY0YTcxIDEwMCUpOyBiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICNlMzE3M2UgNSUsICNmZjRhNzEgMTAwJSk7IGZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI2ZmMzMzMycsIGVuZENvbG9yc3RyPScjREIwMDAwJyxHcmFkaWVudFR5cGU9MCk7IGJhY2tncm91bmQtY29sb3I6I2ZmNGE3MTsgfSAub2ZmZXItYnRueyBjb2xvcjp2YXIoLS1idG4tdHh0LWNvbCwgdmFyKC0tdXNlZC1vZmZlci1idG4tdGV4dC1jb2xvciwgI2ZmZikpOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJ0bi1iZy1jb2wsIHZhcigtLXVzZWQtb2ZmZXItYnRuLWJnLWNvbG9yLCB2YXIoLS1wcm9tby1jb2xvcikpKTsgfSA6aXMoLm5ld1ZkcEFjdGlvbnMsIC51c2VkVmRwQWN0aW9ucykgKnsgYm94LXNpemluZzpib3JkZXItYm94OyB9IDppcygubmV3VmRwQWN0aW9ucywgLnVzZWRWZHBBY3Rpb25zKSAucHJvbW9CVE57IHRleHQtYWxpZ246bGVmdDsgfSA6aXMoLm5ld1ZkcEFjdGlvbnMsIC51c2VkVmRwQWN0aW9ucykgLnByb21vQlROOjphZnRlcnsgZm9udC1mYW1pbHk6J0ZvbnQgQXdlc29tZSA1IFBybycsIHNlcmlmOyBmb250LXdlaWdodDo5MDA7IH0gOmlzKC5uZXdWZHBBY3Rpb25zLCAudXNlZFZkcEFjdGlvbnMsIC51c2VkLWRldGFpbHMsIC5uZXctZGV0YWlscykgLnByb21vQlROID4gc3Bhbi5mYXsgZGlzcGxheTpmbGV4OyB3aWR0aDoxLjVlbTsgaGVpZ2h0OjEuNWVtOyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IGNvbG9yOmluaGVyaXQ7IH0gOmlzKC5uZXdWZHBBY3Rpb25zLCAudXNlZFZkcEFjdGlvbnMpIC5jb21wbGV0ZWQucHJvbW9CVE46OmFmdGVyeyBjb250ZW50OiJcZjAwYyI7IGNvbG9yOmluaGVyaXQ7IH0gOmlzKC5uZXdWZHBBY3Rpb25zLCAudXNlZFZkcEFjdGlvbnMpIC5jb21wbGV0ZWQucHJvbW9CVE4gc3Bhbi5mYXsgY29sb3I6IzAwMDsgfSAuZ3JheWJveCAucHJvbW9CVE4sIC51c2VkVmRwQWN0aW9ucyAucHJvbW9CVE57IGJvcmRlci1yYWRpdXM6M3B4IWltcG9ydGFudDsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgdGV4dC1hbGlnbjp1bnNldDsgbGluZS1oZWlnaHQ6MS41cmVtOyB9IC5ncmF5Ym94IC5idXR0b25fdW5kZXIgLnByb21vQlROIHN0YWNrLWxjLCAubmV3VmRwQWN0aW9ucyAuYnV0dG9uX3VuZGVyIC5wcm9tb0JUTiBzdGFjay1sYyB7IGZsZXgtZ3JvdzoxICFpbXBvcnRhbnQ7IHRleHQtYWxpZ246Y2VudGVyICFpbXBvcnRhbnQ7IH0gLm11bHRpZm9ybV9lbWJlZGRlZF9mb290ZXIgLi1mb3JjZWQtLWEtY2ZhOjphZnRlciB7IGZsZXg6MCAxOyB9IC5ncmF5Ym94IC5wcm9tb0JUTi5idG4taWNvbmVkeyBqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydDsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IG1hcmdpbjphdXRvOyB3aWR0aDo5NSU7IH0gLmdyYXlib3ggLnByb21vQlROLmJ0bi1kZWZhdWx0IHNwYW4uZmF7IGRpc3BsYXk6bm9uZTsgfSAuZ3JheWJveCAucHJvbW9CVE4uYnRuLWljb25lZCBzcGFuLmZheyBkaXNwbGF5OmZsZXg7IH0gLmdyYXlib3ggLnByb21vQlROIHNwYW4sIC51c2VkVmRwQWN0aW9ucyAucHJvbW9CVE4gc3BhbnsgbWFyZ2luLWxlZnQ6dW5zZXQ7IGxpbmUtaGVpZ2h0OjEuNWVtOyB9IC5wcm9tb0JUTi5jaGV2cm9uLXJpZ2h0IC5jdGEtbGFiZWwgeyBwYWRkaW5nLXJpZ2h0OjEuNXJlbTsgfSAucHJvbW9CVE4sIC5wcm9tb0JUTiBhLCAuYnJvY2h1cmVCdG57IGJhY2tncm91bmQ6I2UzMTczZTsgY29sb3I6I2ZmZmZmZjsgdGV4dC1zaGFkb3c6bm9uZTsgYW5pbWF0aW9uOmFsbCAzczsgYm9yZGVyLWNvbG9yOiNlMzE3M2U7IH0gLnByb21vQlROOmhvdmVyLCAucHJvbW9CVE4gYTpob3ZlcnsgYmFja2dyb3VuZDojZTMxNzNlOyBjb2xvcjojZmZmZmZmOyBib3JkZXI6MXB4IHNvbGlkICNlMzE3M2U7IH0gLnByb21vQlROOmhvdmVyID4gKiA+IC5mYSwgLnByb21vQlROIGE6aG92ZXIgPiAqID4gLmZhIHsgYmFja2dyb3VuZDojZmZmZmZmOyBjb2xvcjojZTMxNzNlOyB9IC5wcm9tb0JUTi5ncm93OmhvdmVyIHsgdHJhbnNmb3JtOnNjYWxlKDEuMSk7IH0gLnByb21vQlROLmdyb3c6aG92ZXIsIC5wcm9tb0JUTi5ncm93OmhvdmVyID4gKiA+IC5mYSwgLnByb21vQlROLmdyb3cgYTpob3ZlciA+ICogPiAuZmEgeyB0cmFuc2l0aW9uOmFsbCAwLjNzIGxpbmVhcjsgfSA6bm90KC5jdGEtdHJhY2stdHBsKSAucHJvbW9CVE4ucmlwcGxlIHsgcG9zaXRpb246cmVsYXRpdmU7IHotaW5kZXg6MTsgb3ZlcmZsb3c6aGlkZGVuOyB0cmFuc2l0aW9uOjFzIGFsbCBlYXNlOyB9IDpub3QoLmN0YS10cmFjay10cGwpIC5wcm9tb0JUTi5yaXBwbGU6YmVmb3JlIHsgY29udGVudCA6IiAiOyBwb3NpdGlvbiA6YWJzb2x1dGU7IHotaW5kZXggOi0xOyBib3JkZXItcmFkaXVzIDoxMDBweDsgd2lkdGggOjAlOyBoZWlnaHQgOjEyMCU7IHRvcCA6NTAlOyBib3R0b20gOjUwJTsgbGVmdCA6NTAlOyByaWdodCA6NTAlOyB0cmFuc2Zvcm0gOnRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsgdHJhbnNpdGlvbiA6YWxsIDAuNnMgZWFzZTsgYm9yZGVyOnVuc2V0OyBiYWNrZ3JvdW5kOiNlMzE3M2U7IH0gOm5vdCguY3RhLXRyYWNrLXRwbCkgLnByb21vQlROLnJpcHBsZTpob3ZlciB7IGJhY2tncm91bmQ6I2UzMTczZTsgY29sb3I6dmFyKC0tcHJvbW8tYnRuLWhvdmVyLXRleHQtY29sb3IpOyBib3JkZXItY29sb3I6dmFyKC0tcHJvbW8tYnRuLWhvdmVyLXRleHQtY29sb3IpOzsgfSA6bm90KC5jdGEtdHJhY2stdHBsKSAucHJvbW9CVE4ucmlwcGxlOmhvdmVyOmJlZm9yZSB7IHdpZHRoOjEyMCU7IH0gLnByb21vQlROLnJpcHBsZTpob3ZlciBzcGFuLmZheyBjb2xvcjp2YXIoLS1wcm9tby1idG4taG92ZXItdGV4dC1jb2xvcik7IH0gLnByb21vQXJyb3csLnByb21vQ29sb3J7IGNvbG9yOiNlMzE3M2UhaW1wb3J0YW50OyB9IC5icm9jaHVyZUJ0bnsgYm9yZGVyOm5vbmU7IGRpc3BsYXk6YmxvY2s7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nOjVweDsgfSAudmRwLWJ0biB7IGJvcmRlci1yYWRpdXM6M3B4OyBtYXJnaW4tYm90dG9tOjEwcHg7IHRleHQtdHJhbnNmb3JtOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXNpemU6MS4wNjNyZW0gOyBwYWRkaW5nOjhweCA1cHg7IHdpZHRoOjIzN3B4OyB9IEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDo0MDBweCkgeyAuYnRuLWRlZmF1bHQsIC5jdXN0b21mb3JtX3N1Ym1pdCwgaW5wdXRbdHlwZT1idXR0b25dLmJ0bi1kZWZhdWx0LCBpbnB1dFt0eXBlPXN1Ym1pdF0uYnRuLWRlZmF1bHR7IGZvbnQtc2l6ZTppbmhlcml0OyB9IC5hcHBseS1jcmVkaXQgeyBiYWNrZ3JvdW5kOiNmZjRhNzE7IGJvcmRlcjoxcHggc29saWQgI2ZkMzE1ODsgfSAuYXBwbHktY3JlZGl0OmhvdmVyIHsgYmFja2dyb3VuZDp7JEFQUExZX0NSRURJVF9CVE5fQ09MT1JfRU5ESE9WRVJDT0xPUn07IH0gfSAuYmdfYmx1ZXsgYmFja2dyb3VuZC1jb2xvcjojMDY4OGZhIWltcG9ydGFudDsgY29sb3I6I2ZmZjsgfSAuYmdfcmVkeyBiYWNrZ3JvdW5kLWNvbG9yOiNmZjAwMDAhaW1wb3J0YW50OyBjb2xvcjojZmZmOyB9IC5iZ19ncmVlbnsgYmFja2dyb3VuZC1jb2xvcjojNjhhNTRiIWltcG9ydGFudDsgY29sb3I6I2ZmZjsgfSAuYmdfYmxhY2t7IGJhY2tncm91bmQtY29sb3I6IzAwMDAwMCFpbXBvcnRhbnQ7IGNvbG9yOiNmZmY7IH0gLmJnX2dyYXl7IGJhY2tncm91bmQtY29sb3I6Izc5Nzk3OSFpbXBvcnRhbnQ7IGNvbG9yOiNmZmY7IH0gLmJnX2JsdWUgYSwuYmdfcmVkIGEsLmJnX2dyZWVuIGEsLmJnX2JsYWNrIGEsLmJnX2dyYXkgYSB7IGNvbG9yOiNmZmY7IH0gLmJnX2RlZmF1bHR7IGJhY2tncm91bmQtY29sb3I6IzFiMWIxYiFpbXBvcnRhbnQ7IH0gLmJveDI3eyB3aWR0aDoxMzFweDsgaGVpZ2h0OjI4cHg7IGZsb2F0OmxlZnQ7IG1hcmdpbi1ib3R0b206OHB4OyB9IC5ib3gyNyBheyB3aWR0aDoxMzFweDsgaGVpZ2h0OjI4cHg7IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvYnV0dG9uMTBfYmcucG5nKSBsZWZ0IHRvcCByZXBlYXQteCA7IGJvcmRlci1yYWRpdXM6M3B4OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC13ZWlnaHQ6bm9ybWFsOyBwYWRkaW5nOjA7IGxpbmUtaGVpZ2h0OjI4cHg7IHRleHQtYWxpZ246IGNlbnRlcjsgdGV4dC10cmFuc2Zvcm06bm9uZTsgfSAuYm94MjcgYTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9idXR0b24xMF9iZy5wbmcpIGxlZnQgLTMycHggcmVwZWF0LXg7IGNvbG9yOiNGRkZGRkY7IH0gLmJveDI4eyB3aWR0aDoxMjdweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbjowcHg7IGJhY2tncm91bmQ6IzZmNmY2ZiB1cmwoL2ltYWdlcy9saXRlcl9iZy5wbmcpIGxlZnQgdG9wIHJlcGVhdC14OyBib3JkZXItcmFkaXVzOjNweDsgcGFkZGluZzoxMHB4IDJweCAxMHB4IDJweDsgbWFyZ2luOjAgMHB4IDAgMDsgfSAudGV4dDQ0eyB3aWR0aDoxMjdweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvbGl0ZXJfbGluZS5wbmcpIGxlZnQgYm90dG9tIHJlcGVhdC14OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmJvdHRvbTsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmctYm90dG9tOjVweDsgbWFyZ2luLWJvdHRvbTo1cHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNGRkZGRkY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXdlaWdodDpub3JtYWw7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LXRyYW5zZm9ybTpub25lOyBsaW5lLWhlaWdodDoxOHB4OyB9IC5jb25zdW1wdGlvbi1ub3QtYXZhaWxhYmxlID4gLnRleHQ0NCA+IHNwYW4gPiAjY2l0eUZ1ZWwgeyBkaXNwbGF5Om5vbmU7IH0gLmNvbnN1bXB0aW9uLW5vdC1hdmFpbGFibGUgPiAudGV4dDQ0ID4gc3BhbiA+ICNoaWdod2F5RnVlbCB7IGRpc3BsYXk6bm9uZTsgfSAudGV4dF9zbGlkZSBhIHsgaGVpZ2h0OjM4cHg7IG1hcmdpbi1yaWdodDowLjNlbTsgcGFkZGluZy10b3A6MXB4ICFpbXBvcnRhbnQ7IH0gLnRleHRfc2xpZGUgYSA+IGIgeyBkaXNwbGF5OmJsb2NrOyBvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudDsgcG9zaXRpb246cmVsYXRpdmU7IGhlaWdodDoyNXB4OyB3aWR0aDoxMDAlOyB9IC50ZXh0X3NsaWRlIGEgPiBiID4gbTEgeyBkaXNwbGF5OmlubGluZS1ibG9jazsgcG9zaXRpb246cmVsYXRpdmU7IHdoaXRlLXNwYWNlOm5vd3JhcDsgbGluZS1oZWlnaHQ6MzhweCAhaW1wb3J0YW50OyB0b3A6LThweDsgbGVmdDowOyB9IC50ZXh0X3NsaWRlLnRleHRfc2xpZGVfNCBhID4gYiA+IG0xIHsgYW5pbWF0aW9uOnRleHRfc2xpZGVfNCA0cyBlYXNlIDVzOyBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OmluZmluaXRlOyB9IC50ZXh0X3NsaWRlLnRleHRfc2xpZGVfMyBhID4gYiA+IG0xIHsgYW5pbWF0aW9uOnRleHRfc2xpZGVfMyAzcyBlYXNlIDRzOyBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OmluZmluaXRlOyB9IC50ZXh0X3NsaWRlLnRleHRfc2xpZGVfMiBhID4gYiA+IG0xIHsgYW5pbWF0aW9uOnRleHRfc2xpZGVfMiAycyBlYXNlIDJzOyBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OmluZmluaXRlOyB9IC50ZXh0X3NsaWRlLnByb21vY29kZWJveCB7IHBhZGRpbmc6MHB4IDBweDsgbWFyZ2luLWxlZnQ6MHB4OyB3aWR0aDoxMDAlOyBtYXJnaW4tdG9wOjlweDsgfSBAa2V5ZnJhbWVzIHRleHRfc2xpZGVfNCB7IDAlIHsgdG9wOi04cHg7IH0gMjUlIHsgdG9wOi00NnB4OyB9IDUwJSB7IHRvcDotODRweDsgfSA3NSUgeyB0b3A6LTEyMnB4OyB9IDEwMCUgeyB0b3A6LTE2MHB4OyB9IH0gQGtleWZyYW1lcyB0ZXh0X3NsaWRlXzMgeyAwJSB7IHRvcDotOHB4OyB9IDMzJSB7IHRvcDotNDZweDsgfSA2NiUgeyB0b3A6LTg0cHg7IH0gMTAwJSB7IHRvcDotMTIycHg7IH0gfSBAa2V5ZnJhbWVzIHRleHRfc2xpZGVfMiB7IDAlIHsgdG9wOi04cHg7IH0gNTAlIHsgdG9wOi00NnB4OyB9IDEwMCUgeyB0b3A6LTg0cHg7IH0gfSAubWFwIHsgd2lkdGg6MTAwJTsgdGV4dC1hbGlnbjpjZW50ZXI7IHBvc2l0aW9uOnJlbGF0aXZlOyB9IC5tYXAgLndyYXBwZXJ7IHBvc2l0aW9uOnN0YXRpYyAhaW1wb3J0YW50OyB9IC5tYXBfZGVhbGVyX2xpc3QgeyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjkpOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MDsgcGFkZGluZzowIDMwcHg7IHdpZHRoOjMxNXB4OyBoZWlnaHQ6MTAwJTsgdGV4dC1hbGlnbjpsZWZ0OyBvdmVyZmxvdy15OmF1dG87IH0gLm1hcF9kZWFsZXJfbGlzdF9pdGVtIHsgY3Vyc29yOnBvaW50ZXI7IHBhZGRpbmc6MTNweCAwOyBmb250LXNpemU6MC44MTNyZW0gOyB9IC5tYXBfZGVhbGVyX2xpc3RfaXRlbV9uYW1lIHsgcG9zaXRpb246YWJzb2x1dGU7IH0gLm1hcF9kZWFsZXJfbGlzdF9pdGVtX25hbWU6aG92ZXIgeyBmb250LXdlaWdodDo3MDA7IH0gLm1hcF9kZWFsZXJfbGlzdF9pdGVtX25hbWVfYWN0aXZlIHsgZm9udC13ZWlnaHQ6NzAwOyB9IC5tYXJrZXJTcGFuIHsgaGVpZ2h0OjE4cHg7IHdpZHRoOjIwcHg7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyBwb3NpdGlvbjpyZWxhdGl2ZTsgZGlzcGxheTppbmxpbmUtYmxvY2s7IH0gLm1hcmtlclNwYW46YmVmb3JlIHsgY29udGVudDonJzsgaGVpZ2h0OjRweDsgd2lkdGg6NHB4OyBib3JkZXI6MnB4IHNvbGlkICMzMzM7IGRpc3BsYXk6YmxvY2s7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MnB4OyBsZWZ0OjBweDsgei1pbmRleDoxOyBiYWNrZ3JvdW5kOiNmZmY7IGxpbmUtaGVpZ2h0OjI2cHg7IGJvcmRlci1yYWRpdXM6NDBweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjQwcHg7IC1tb3otYm9yZGVyLXJhZGl1czo0MHB4OyBjb2xvcjojZmZmOyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAubWFya2VyU3BhbjphZnRlciB7IGNvbnRlbnQ6Jyc7IGhlaWdodDowcHg7IHdpZHRoOjBweDsgZGlzcGxheTpibG9jazsgcG9zaXRpb246YWJzb2x1dGU7IGJvdHRvbToycHg7IGxlZnQ6MnB4OyBib3JkZXI6MTBweCB0cmFuc3BhcmVudCBzb2xpZDsgYm9yZGVyLXRvcC1jb2xvcjojMzMzOyBib3JkZXItd2lkdGg6N3B4IDJweCAwcHggMnB4OyB9IC5tYXBfb3Blbl9ob3VycyB7IGJhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuOSk7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDowOyB3aWR0aDo0MDBweDsgaGVpZ2h0OjEwMCU7IHRleHQtYWxpZ246bGVmdDsgfSAub3Blbl9ob3Vyc19jb250YWluZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjkpOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IHRleHQtYWxpZ246bGVmdDsgfSAubWFwX29wZW5faG91cnMgLm1hcF9vcGVuX2hvdXJzLS10aXRsZSwgLm9wZW5faG91cnNfY29udGFpbmVyIGgyLCAub3Blbl9ob3Vyc19jb250YWluZXIgc3Bhbi5oMi1hbHQgeyBmb250LXNpemU6MS41ZW07IGZvbnQtd2VpZ2h0OmJvbGQ7IHBhZGRpbmctbGVmdDoxNXB4OyBtYXJnaW4tdG9wOjIwcHg7IG1hcmdpbi1ib3R0b206MTBweDsgY29sb3I6aW5oZXJpdDsgfSAubWFwX29wZW5faG91cnMgdWwsIC5vcGVuX2hvdXJzX2NvbnRhaW5lciB1bCB7IHBhZGRpbmc6MCAwOyB9IC5tYXBfb3Blbl9ob3VycyB1bCBsaSwgLm9wZW5faG91cnNfY29udGFpbmVyIHVsIGxpIHsgbGlzdC1zdHlsZTpub25lOyBjdXJzb3I6cG9pbnRlcjsgY3Vyc29yOmhhbmQ7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNmM2YzZjM7IH0gLm1hcF9vcGVuX2hvdXJzX2V4cGFuZHsgcGFkZGluZzo2cHggMzBweCA4cHggMTVweDsgZGlzcGxheTpibG9jazsgfSAuZXhwYW5kYWJsZV9jb250ZW50eyBwYWRkaW5nOjBweCAxNnB4IDVweCAxNnB4OyBmb250LXNpemU6MC44NzVyZW0gOyBsaW5lLWhlaWdodDoxLjQyODU3MTQzOyB9IC5leHBhbmRhYmxlX2NvbnRlbnQgZGl2LCAuZXhwYW5kYWJsZV9jb250ZW50X211bHRpbG9jYXRpb24gZGl2IHsgZGlzcGxheSA6ZmxleDsgZmxleC1kaXJlY3Rpb24gOnJvdzsgfSAuZXhwYW5kYWJsZV9jb250ZW50ID4gZGl2ID4gc3BhbjpmaXJzdC1vZi10eXBlLCAuZXhwYW5kYWJsZV9jb250ZW50X211bHRpbG9jYXRpb24gZGl2IHNwYW46Zmlyc3Qtb2YtdHlwZSB7IHdpZHRoOjQwJTsgfSAuZXhwYW5kYWJsZV9jb250ZW50X211bHRpbG9jYXRpb257IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGxpbmUtaGVpZ2h0OjEuNDI4NTcxNDM7IG1hcmdpbi10b3A6MTVweDsgfSBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGggOjc1OXB4KSB7IC5leHBhbmRhYmxlX2NvbnRlbnQsIC5leHBhbmRhYmxlX2NvbnRlbnRfbXVsdGlsb2NhdGlvbiB7IGZvbnQtc2l6ZTppbmhlcml0OyB9IH0gLmV4cGFuZGFibGVfY29udGVudF9tdWx0aWxvY2F0aW9uIHRhYmxleyBtYXJnaW4tdG9wOjE1cHg7IH0gLm1hcF9vcGVuX2hvdXJzX2V4cGFuZF9hcnJvd3sgZmxvYXQ6cmlnaHQ7IG1hcmdpbi10b3A6M3B4OyB9IC5tYXBfb3Blbl9ob3Vyc19leHBhbmRfYXJyb3cuZXhwYW5kZWR7IHRyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKTsgfSAubWFwX29wZW5faG91cnNfbW9iaWxleyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjkpOyB9IC5tYXBfb3Blbl9ob3Vyc19tb2JpbGUgLm1hcF9vcGVuX2hvdXJzX21vYmlsZS0tdGl0bGUgeyBmb250LXNpemU6dmFyKC0tZnM0KTsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLm1hcF9vcGVuX2hvdXJzX21vYmlsZSB1bHsgcGFkZGluZzowIDA7IH0gLm1hcF9vcGVuX2hvdXJzX21vYmlsZSB1bCBsaXsgbGlzdC1zdHlsZTpub25lOyBjdXJzb3I6cG9pbnRlcjsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2YzZjNmMzsgfSAubWFpbl9sZWZ0X2JveCAjZm9vdGVyR29vZ2xlTWFwSG91cnNDb250YWluZXJ7IHdpZHRoOjk2MHB4OyB9IC52aWRlb0J0blNsaWRlciwgLnBob3RvQnRuU2xpZGVyeyBib3JkZXItcmFkaXVzOjUwJTsgYm9yZGVyOjFweCBzb2xpZCAjMWIxYjFiOyBjb2xvcjojMWIxYjFiOyB3aWR0aDo3NXB4OyBoZWlnaHQ6NzVweDsgYmFja2dyb3VuZC1jb2xvcjojZDVkNWQ1OyBvcGFjaXR5OjAuNTsgfSAudmlkZW9CdG5TbGlkZXI6aG92ZXIsIC5waG90b0J0blNsaWRlcjpob3ZlcnsgYm9yZGVyLXJhZGl1czo1MCU7IGJvcmRlcjoxcHggc29saWQgI2Q1ZDVkNTsgd2lkdGg6NzVweDsgaGVpZ2h0Ojc1cHg7IGJhY2tncm91bmQtY29sb3I6IzFiMWIxYjsgb3BhY2l0eTowLjU7IH0gLnBob3RvQnRuU2xpZGVyIC5mYSwgLnZpZGVvQnRuU2xpZGVyIC5mYXsgY29sb3I6IzFiMWIxYjsgfSAucGhvdG9CdG5TbGlkZXI6aG92ZXIgLmZhLCAudmlkZW9CdG5TbGlkZXI6aG92ZXIgLmZheyBjb2xvcjojZDVkNWQ1OyB9IC52aWRlb0J0blNsaWRlclVzZWQsIC5waG90b0J0blNsaWRlclVzZWR7IGJvcmRlci1yYWRpdXM6NTAlOyBib3JkZXI6MXB4IHNvbGlkICNiM2IzYjM7IGNvbG9yOiNiM2IzYjM7IHdpZHRoOjc1cHg7IGhlaWdodDo3NXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IG9wYWNpdHk6MC45OyB9IC52aWRlb0J0blNsaWRlclVzZWQ6aG92ZXIsIC5waG90b0J0blNsaWRlclVzZWQ6aG92ZXJ7IGJvcmRlci1yYWRpdXM6NTAlOyBib3JkZXI6MXB4IHNvbGlkICNmZmZmZmY7IHdpZHRoOjc1cHg7IGhlaWdodDo3NXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiNiM2IzYjM7IG9wYWNpdHk6MC41OyB9IC5waG90b0J0blNsaWRlclVzZWQgLmZhLCAudmlkZW9CdG5TbGlkZXJVc2VkIC5mYXsgY29sb3I6I2IzYjNiMzsgfSAucGhvdG9CdG5TbGlkZXJVc2VkOmhvdmVyIC5mYSwgLnZpZGVvQnRuU2xpZGVyVXNlZDpob3ZlciAuZmF7IGNvbG9yOiNmZmZmZmY7IH0gLnZpZGVvc19waWN0dXJlc19idXR0b25zX2NvbnRhaW5lcnsgbGVmdDo1cHg7IGJvdHRvbTo4MnB4OyBwb3NpdGlvbjpyZWxhdGl2ZTsgei1pbmRleDo5OTk7IGZsb2F0OmxlZnQ7IG1hcmdpbi1ib3R0b206LTgwcHg7IH0gLi1kaXNwbGF5LW5vbmV7IGRpc3BsYXk6bm9uZTsgfSAjZGVmYXVsdFRvcEJhbm5lcldyYXB7IHRleHQtYWxpZ246Y2VudGVyOyB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7IHBhZGRpbmc6NDBweCAxNXB4OyB9ICNkZWZhdWx0VG9wQmFubmVyeyB0ZXh0LWFsaWduOmNlbnRlcjsgd2lkdGg6MTAwJTsgYm9yZGVyLXJhZGl1czo2cHg7IGN1cnNvcjpwb2ludGVyOyB9ICNkZWZhdWx0VG9wQmFubmVyVGl0bGUsICNkZWZhdWx0VG9wQmFubmVyVGV4dHsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAjZGVmYXVsdFRvcEJhbm5lcldyYXAgZGl2LmRlZmF1bHRUb3BCYW5uZXJCdG5XcmFwcGVyeyBtYXJnaW46MzBweCAwIDIwcHggMDsgd2lkdGg6MTAwJTsgZmxvYXQ6bGVmdDsgfSAjZGVmYXVsdFRvcEJhbm5lckJ0bnsgcGFkZGluZzoxMHB4IDMwcHg7IGJhY2tncm91bmQ6YmxhY2s7IGJvcmRlcjoycHggd2hpdGUgc29saWQ7IGJvcmRlci1yYWRpdXM6M3B4OyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7IGZvbnQtd2VpZ2h0OmJvbGQ7IGNvbG9yOiNmZmZmZmY7IGJveC1zaGFkb3c6MHB4IDJweCAxM3B4IDBweCAjMWIxYjFiOyB9ICN0b3BCYW5uZXJJbWFnZS5ORVdDQVJTICNkZWZhdWx0VG9wQmFubmVyVGl0bGV7IGZvbnQtc2l6ZTozLjEyNXJlbSA7IH0gI3RvcEJhbm5lckltYWdlLk5FV0NBUlMgI2RlZmF1bHRUb3BCYW5uZXJUZXh0eyBmb250LXNpemU6Mi44MTNyZW0gOyB9ICN0b3BCYW5uZXJJbWFnZS5VU0VEQ0FSUyAjZGVmYXVsdFRvcEJhbm5lclRpdGxleyBmb250LXNpemU6My4xMjVyZW0gOyB9ICN0b3BCYW5uZXJJbWFnZS5VU0VEQ0FSUyAjZGVmYXVsdFRvcEJhbm5lclRleHR7IGZvbnQtc2l6ZToyLjgxM3JlbSA7IH0gI3RvcEJhbm5lckltYWdlOmVtcHR5eyBtYXJnaW46MCAhaW1wb3J0YW50OyBwYWRkaW5nOjAgIWltcG9ydGFudDsgfSAjdG9wQmFubmVySW1hZ2UuVVNFRENBUlMgI2RlZmF1bHRUb3BCYW5uZXJXcmFweyBoZWlnaHQ6MjY1cHg7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgcGFkZGluZzo0MHB4IDE1cHg7IH0gI3RvcEJhbm5lckltYWdlLk5FV0NBUlMgI2RlZmF1bHRUb3BCYW5uZXJXcmFweyBoZWlnaHQ6MjY1cHg7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgcGFkZGluZzo0MHB4IDE1cHg7IH0gI2dvb2dsZV9yZXZpZXdzeyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojNjY2OyB9ICNnb29nbGVfcmV2aWV3cyAucmV2aWV3LWl0ZW0gLnJldmlldy1zdGFycyB1bCB7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyBsaXN0LXN0eWxlOm5vbmU7IHBhZGRpbmc6MDsgfSAjZ29vZ2xlX3Jldmlld3MgLnJldmlldy1pdGVtIC5yZXZpZXctc3RhcnMgdWwgbGkgeyBmbG9hdDpsZWZ0OyBtYXJnaW4tcmlnaHQ6NXB4OyB3aWR0aDppbml0aWFsICFpbXBvcnRhbnQ7IHBhZGRpbmc6aW5pdGlhbDsgfSAjZ29vZ2xlX3Jldmlld3MgLnJldmlldy1pdGVtIC5yZXZpZXctc3RhcnMgdWwgbGkgaSB7IGNvbG9yOiNFNEIyNDg7IGZvbnQtc3R5bGU6bm9ybWFsOyBmb250LXNpemU6MC45MzhyZW0gOyB9ICNnb29nbGVfcmV2aWV3cyAucmV2aWV3LWl0ZW0gLnJldmlldy1zdGFycyB1bCBsaSBpLmluYWN0aXZlIHsgY29sb3I6I2M2YzZjNjsgfSAjZ29vZ2xlX3Jldmlld3MgLnJldmlldy1pdGVtIC5yZXZpZXctc3RhcjphZnRlciB7IGNvbnRlbnQ6IlwyNjA1IjsgfSAjZWFzeS1ncGxhY2VzLXJldmlld3MtYnV0eyBmb250LXdlaWdodDpib2xkOyBwYWRkaW5nOjVweCA4cHg7IGhlaWdodDoyN3B4OyBsaW5lLWhlaWdodDoyN3B4OyB9IC5yZXZpZXctYXV0aG9yeyB0ZXh0LXRyYW5zZm9ybTpjYXBpdGFsaXplOyB9ICNlYXN5LWdwbGFjZXMtcmV2aWV3cy1idXQuZGVmYXVsdHsgY29sb3I6IzQ0NDsgYmFja2dyb3VuZC1jb2xvcjojZjVmNWY1OyBiYWNrZ3JvdW5kLWltYWdlOi1tb3otbGluZWFyLWdyYWRpZW50KGNlbnRlciB0b3AgLCAjZjVmNWY1LCAjZjFmMWYxKTsgYm9yZGVyOjFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMSk7IH0gI2Vhc3ktZ3BsYWNlcy1yZXZpZXdzLWJ1dC5yZWR7IGNvbG9yOiNmZmY7IGJhY2tncm91bmQtY29sb3I6I2Y1ZjVmNTsgYmFja2dyb3VuZC1pbWFnZTotbW96LWxpbmVhci1ncmFkaWVudChjZW50ZXIgdG9wICwgI0RENEIzOSwgI0QxNDgzNik7IGJvcmRlcjoxcHggc29saWQgI0QxNDgzNjsgfSAjZWFzeS1ncGxhY2VzLXJldmlld3MtYnV0LmJsdWV7IGNvbG9yOiNmZmY7IGJhY2tncm91bmQtY29sb3I6IzREOTBGRTsgYmFja2dyb3VuZC1pbWFnZTotbW96LWxpbmVhci1ncmFkaWVudChjZW50ZXIgdG9wICwgIzREOTBGRSwgIzQ3ODdFRCk7IGJvcmRlcjoxcHggc29saWQgIzMwNzlFRDsgfSAuZW1iZWQtY29udGFpbmVyLXlvdXR1YmUgaWZyYW1lLCAuZW1iZWQtY29udGFpbmVyLXlvdXR1YmUgb2JqZWN0LCAuZW1iZWQtY29udGFpbmVyLXlvdXR1YmUgZW1iZWQgeyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjA7IGxlZnQ6MDsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IH0gLmVtYmVkLWNvbnRhaW5lci15b3V0dWJlMnsgcG9zaXRpb246cmVsYXRpdmU7IHBhZGRpbmctYm90dG9tOjU2LjI1JTsgaGVpZ2h0OjA7IG92ZXJmbG93OmhpZGRlbjsgbWF4LXdpZHRoOjEwMCU7IH0gLmVtYmVkLWNvbnRhaW5lci15b3V0dWJlMiBpZnJhbWUsIC5lbWJlZC1jb250YWluZXIteW91dHViZTIgb2JqZWN0LCAuZW1iZWQtY29udGFpbmVyLXlvdXR1YmUyIGVtYmVkIHsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDowOyBsZWZ0OjA7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyB9ICNzZWFyY2hDcml0ZXJpYVc6OmFmdGVyLCAjYWN0aW9uQm94QnRuOjphZnRlciwgI2xpbmtDb250YWluZXI6OmFmdGVyeyBjb250ZW50OicnOyBoZWlnaHQ6MXB4OyBkaXNwbGF5OmlubGluZS1ibG9jazsgbWFyZ2luLWJvdHRvbTonMTVweCc7IH0gI3NlYXJjaENyaXRlcmlhVzo6YWZ0ZXIsICNhY3Rpb25Cb3hCdG46OmFmdGVyLCAjbGlua0NvbnRhaW5lcjo6YWZ0ZXJ7IGJhY2tncm91bmQ6I2FhYTsgd2lkdGg6MjgwcHg7IH0gLmJhbm5lclBvcHVwQ2xvc2V7IGNvbG9yOiNhYWE7IH0gLnNlZVZpZGVvQnRuMXsgYmFja2dyb3VuZC1jb2xvcjojMDAwICFpbXBvcnRhbnQ7IGJvcmRlcjoxcHggc29saWQgI2ZmZiAhaW1wb3J0YW50OyBjb2xvcjojZmZmICFpbXBvcnRhbnQ7IH0gLnNlZVZpZGVvQnRuMTpob3ZlcnsgYmFja2dyb3VuZC1jb2xvcjojZmZmICFpbXBvcnRhbnQ7IGJvcmRlcjoxcHggc29saWQgIzAwMCAhaW1wb3J0YW50OyBjb2xvcjojMWIxYjFiICFpbXBvcnRhbnQ7IH0gI2JvdHRvbUxlZnRCYW5uZXJJbWFnZXsgbWFyZ2luOjEwcHggMHB4IDBweDsgZmxvYXQ6bGVmdDsgd2lkdGg6MTAwJTsgfSAjZGVmYXVsdEJvdHRvbUxlZnRCYW5uZXJ7IHRleHQtYWxpZ246Y2VudGVyOyB3aWR0aDoxMDAlOyBib3JkZXItcmFkaXVzOjZweDsgY3Vyc29yOnBvaW50ZXI7IH0gI2RlZmF1bHRCb3R0b21MZWZ0QmFubmVyV3JhcHsgdGV4dC1hbGlnbjpjZW50ZXI7IHZlcnRpY2FsLWFsaWduOm1pZGRsZTsgcGFkZGluZzoxNXB4OyB9ICNkZWZhdWx0Qm90dG9tTGVmdEJhbm5lclRpdGxleyBmb250LXdlaWdodDpib2xkOyBmb250LXNpemU6Mi4xODhyZW0gOyB9ICNkZWZhdWx0Qm90dG9tTGVmdEJhbm5lclRleHR7IGZvbnQtd2VpZ2h0OmJvbGQ7IGZvbnQtc2l6ZToxLjkzOHJlbSA7IH0gI2RlZmF1bHRCb3R0b21MZWZ0QmFubmVyV3JhcCBkaXYuZGVmYXVsdEJvdHRvbUxlZnRCYW5uZXJCdG5XcmFwcGVyeyBtYXJnaW46MjBweCAwIDEwcHggMDsgd2lkdGg6MTAwJTsgZmxvYXQ6bGVmdDsgfSAjZGVmYXVsdEJvdHRvbUxlZnRCYW5uZXJCdG57IHBhZGRpbmc6N3B4IDIxcHg7IGJhY2tncm91bmQ6YmxhY2s7IGJvcmRlcjoycHggd2hpdGUgc29saWQ7IGJvcmRlci1yYWRpdXM6M3B4OyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7IGZvbnQtd2VpZ2h0OmJvbGQ7IGNvbG9yOiNmZmZmZmY7IGJveC1zaGFkb3c6MHB4IDJweCAxM3B4IDBweCAjMWIxYjFiOyBmb250LXNpemU6NzAlOyB9IC5tYWluRGl2LXdyYXBwZXIgeyBwYWRkaW5nLXRvcDowLjAxcmVtOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IH0gLmxhbmd1YWdlQmFyICNzZXJ2aWNlX2FwcG9pbnRfaGVhZGVyID4gYSB7IHBhZGRpbmc6MCAxMnB4OyBoZWlnaHQ6MjZweDsgbGluZS1oZWlnaHQ6MjdweDsgYm9yZGVyLXJhZGl1czowOyB9ICNzZXJ2aWNlX2FwcG9pbnRfaGVhZGVyID4gYSB7IHRleHQtZGVjb3JhdGlvbjpub25lOyBiYWNrZ3JvdW5kLWNvbG9yOiMxYjFiMWI7IGJhY2tncm91bmQtY29sb3I6IzFiMWIxYjsgY29sb3I6d2hpdGU7IGNvbG9yOiNmZmZmZmY7IH0gI3NlcnZpY2VfYXBwb2ludF9oZWFkZXIgPiBhLmJ0biB7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgfSAubGFuZ3VhZ2VCYXIgI3NlcnZpY2VfYXBwb2ludF9oZWFkZXIgPiAuYnRuLWRlZmF1bHQ6aG92ZXIgeyBib3JkZXItY29sb3I6IzFiMWIxYjsgYm9yZGVyLWNvbG9yOiMxYjFiMWI7IH0gI3NlcnZpY2VfYXBwb2ludF9oZWFkZXIgLnNob3J0LXNlcnZpY2UtZm9ybSB7IGRpc3BsYXk6bm9uZTsgYm94LXNoYWRvdzowIDZweCAxMnB4IHJnYmEoMCwgMCwgMCwgLjE3NSk7IHBvc2l0aW9uOmFic29sdXRlOyB3aWR0aDozNTBweDsgcmlnaHQ6MDsgcGFkZGluZzoxNXB4OyB6LWluZGV4Ojk5OTk7IGJhY2tncm91bmQtY29sb3I6d2hpdGU7IGhlaWdodDphdXRvOyB0b3A6MjNweDsgfSAubGFuZ3VhZ2VCYXIgI3NlcnZpY2VfYXBwb2ludF9oZWFkZXIgZGl2Om5vdChbY2xhc3NdKSB7IGZsb2F0OmluaXRpYWw7IHdpZHRoOjEwMCU7IG1hcmdpbi1yaWdodDowOyB0ZXh0LWFsaWduOmluaXRpYWw7IH0gI3NlcnZpY2VfYXBwb2ludF9oZWFkZXI6aG92ZXIgLnNob3J0LXNlcnZpY2UtZm9ybSB7IGRpc3BsYXk6YmxvY2s7IH0gI3NlcnZpY2VfYXBwb2ludF9oZWFkZXIgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAjc2VydmljZV9hcHBvaW50X2hlYWRlci5pc09wZW4gLnNob3J0LXNlcnZpY2UtZm9ybSB7IGRpc3BsYXk6YmxvY2s7IH0gLmxhbmd1YWdlQmFyICNzZXJ2aWNlX2FwcG9pbnRfaGVhZGVyIC5tYWlsd2lkZ2V0LS1mb3JtLXJvdywgLmxhbmd1YWdlQmFyICNzZXJ2aWNlX2FwcG9pbnRfaGVhZGVyIC5tYWlsd2lkZ2V0LS1mb3JtLXJvdyBkaXYgeyBtYXJnaW4tcmlnaHQ6aW5oZXJpdDsgd2lkdGg6MTAwJSAhaW1wb3J0YW50OyBmbG9hdDpub25lOyB9IC5sYW5ndWFnZUJhciAjc2VydmljZV9hcHBvaW50X2hlYWRlciAubWFpbHdpZGdldC0tZm9ybS1yb3cgdGFibGUgdGV4dGFyZWEgeyB3aWR0aDpjYWxjKDEwMCUgKyAycHgpICFpbXBvcnRhbnQ7IH0gI3VzZWRfNDA0X21lc3NhZ2UgeyB0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZzozMHB4OyBib3JkZXI6MXB4IHNvbGlkICNmMDA7IG1hcmdpbjowIDAgMjBweCAwOyB9IC5hdWRpLXRpdGxlIGgyIHsgZm9udC13ZWlnaHQ6bm9ybWFsOyB9IC5hdWRpLWNvbG9yIHsgY29sb3I6I2JiMGEzMDsgZm9udC13ZWlnaHQ6Ym9sZDsgfSBkaXYjc29jaWFsX21lZGlhX2ljb25zX2RpdiB7IGZvbnQtc2l6ZTppbmhlcml0OyB9IGEuc29jaWFsLWxpbmsgeyAtLWZzOnZhcigtLWZzNik7IC0tdHh0LWNvbG9yOiMxYjFiMWI7IH0gI3NvY2lhbF9tZWRpYV9pY29uc19kaXYgLnNvY2lhbC1saW5rW2RhdGEtdG9vbHRpcD0nWW91dHViZSddIC5zb2NpYWwtaWNvbnMgeyBtYXJnaW4tcmlnaHQ6M3B4OyB9IC5wYXlwYWxfYnV0dG9uX2h0bWwgdGFibGV7IG1hcmdpbi1sZWZ0OmF1dG87IG1hcmdpbi1yaWdodDphdXRvOyBiYWNrZ3JvdW5kLWNvbG9yOmJsYWNrOyBjb2xvcjp3aGl0ZTsgd2lkdGg6MTAwJTsgcGFkZGluZzowIDAgMTBweCAwOyBib3JkZXItcmFkaXVzOjNweCAzcHggMCAwOyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAucGF5cGFsX2J1dHRvbl9odG1sIHRhYmxlIHRyOmZpcnN0LWNoaWxkeyBmb250LXNpemU6MS4xMjVyZW0gOyBoZWlnaHQ6NDBweDsgfSAucGF5cGFsX2J1dHRvbl9odG1sIHRhYmxlIHNlbGVjdHsgYm9yZGVyLXJhZGl1czo1cHg7IHdpZHRoOjIwMHB4OyBoZWlnaHQ6MzVweDsgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsgfSAucGF5cGFsX2J1dHRvbl9odG1sIGlucHV0W3R5cGU9ImltYWdlIl1bbmFtZT0ic3VibWl0Il17IHdpZHRoOjEwMCU7IGJvcmRlcjpub25lOyBwYWRkaW5nOjA7IH0gQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjQwMHB4KSB7IC5wYXlwYWxfYnV0dG9uX2h0bWx7IHdpZHRoOjkwJTsgbWFyZ2luOjAgYXV0bzsgfSB9ICNtdWx0aS1hZGRyZXNzLXN1Ym1pc3Npb24geyB6LWluZGV4OjEwMDAwMDAwMDIxOyB9ICNtdWx0aS1hZGRyZXNzLXN1Ym1pc3Npb24uZGVza3RvcCB7IHRleHQtYWxpZ246Y2VudGVyOyB9ICNtdWx0aS1hZGRyZXNzLXN1Ym1pc3Npb24uZGVza3RvcCBzZWxlY3QgeyBtYXgtd2lkdGg6MzAwcHg7IG1hcmdpbjowIGF1dG87IH0gI211bHRpLWFkZHJlc3Mtc3VibWlzc2lvbi5zbWFsbCB7IHBhZGRpbmc6MjBweCAxMHB4OyB9ICNtdWx0aS1hZGRyZXNzLXN1Ym1pc3Npb24gbGFiZWwgeyBkaXNwbGF5OmJsb2NrOyBtYXJnaW4tYm90dG9tOjVweDsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAjbXVsdGktYWRkcmVzcy1zdWJtaXNzaW9uICNtdXRsaUFkZHJlc3NTdWJtaXQgeyBtYXJnaW46MCBhdXRvOyBtYXJnaW4tdG9wOjhweDsgZGlzcGxheTp0YWJsZTsgfSAjbXVsdGktYWRkcmVzcy1zdWJtaXNzaW9uICNtdWx0aS1kZWFsZXItbWFwIHsgaGVpZ2h0OjUyMHB4OyBtYXJnaW4tYm90dG9tOjEycHg7IH0gI211bHRpLWFkZHJlc3Mtc3VibWlzc2lvbi5yZXZlYWwtbW9kYWwgc3BhbiB7IGZvbnQtc2l6ZTppbmhlcml0OyB9IC52YWxpZGl0eS1lcnJvbmVvdXMgeyBib3JkZXI6MXB4IHNvbGlkICNkYzM1NDU7IGJhY2tncm91bmQtY29sb3I6I2ZhZDZkYyFpbXBvcnRhbnQ7IH0gLmJveDQudmFsaWRpdHktZXJyb25lb3VzLCAuYm94NS52YWxpZGl0eS1lcnJvbmVvdXMgeyB3aWR0aDoyNjNweDsgfSAuZm9ybS1jb250cm9sIHsgZGlzcGxheTpibG9jazsgd2lkdGg6MTAwJTsgaGVpZ2h0OjM0cHg7IHBhZGRpbmc6NnB4IDEycHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGxpbmUtaGVpZ2h0OjEuNDI4NTcxNDM7IGNvbG9yOiM1NTU7IGJhY2tncm91bmQtY29sb3I6I2ZmZjsgYmFja2dyb3VuZC1pbWFnZTpub25lOyBib3JkZXI6MXB4IHNvbGlkICNjY2M7IGJvcmRlci1yYWRpdXM6NHB4OyAtd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA3NSk7IGJveC1zaGFkb3c6aW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA3NSk7IC13ZWJraXQtdHJhbnNpdGlvbjpib3JkZXItY29sb3IgZWFzZS1pbi1vdXQgLjE1cyxib3gtc2hhZG93IGVhc2UtaW4tb3V0IC4xNXM7IC1vLXRyYW5zaXRpb246Ym9yZGVyLWNvbG9yIGVhc2UtaW4tb3V0IC4xNXMsYm94LXNoYWRvdyBlYXNlLWluLW91dCAuMTVzOyAtd2Via2l0LXRyYW5zaXRpb246Ym9yZGVyLWNvbG9yIGVhc2UtaW4tb3V0IC4xNXMsLXdlYmtpdC1ib3gtc2hhZG93IGVhc2UtaW4tb3V0IC4xNXM7IHRyYW5zaXRpb246Ym9yZGVyLWNvbG9yIGVhc2UtaW4tb3V0IC4xNXMsLXdlYmtpdC1ib3gtc2hhZG93IGVhc2UtaW4tb3V0IC4xNXM7IHRyYW5zaXRpb246Ym9yZGVyLWNvbG9yIGVhc2UtaW4tb3V0IC4xNXMsYm94LXNoYWRvdyBlYXNlLWluLW91dCAuMTVzOyB0cmFuc2l0aW9uOmJvcmRlci1jb2xvciBlYXNlLWluLW91dCAuMTVzLGJveC1zaGFkb3cgZWFzZS1pbi1vdXQgLjE1cywtd2Via2l0LWJveC1zaGFkb3cgZWFzZS1pbi1vdXQgLjE1czsgfSAuYmFubmVyLWZvcm0tYm94IHsgcGFkZGluZzozMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOjsgY29sb3I6OyB9IC5iYW5uZXItZm9ybS10aXRsZSB7IGZvbnQtd2VpZ2h0OjYwMDsgZm9udC1zaXplOjE4cHQ7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7IG1hcmdpbi1ib3R0b206NXB4OyB9IC5iYW5uZXItZm9ybS1zdWJ0aXRsZSB7IGZvbnQtc2l6ZToxMS41cHQ7IG1hcmdpbi1ib3R0b206NXB4OyB9IC5iYW5uZXItZm9ybS1ib2R5IHsgbWFyZ2luLWJvdHRvbToyNXB4OyB9IC5iYW5uZXItZm9ybS1ib2R5IC5mb3JtLWNvbnRyb2wgeyBoZWlnaHQ6NDFweDsgbWFyZ2luLWJvdHRvbToxNXB4OyAtd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDsgLW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfSAuYmFubmVyLWZvcm0tYm94LWZvb3RlciB7IHRleHQtYWxpZ246Y2VudGVyOyBtYXJnaW4tdG9wOjI1cHg7IH0gLmJhbm5lci1mb3JtLWJveC1oZWFkZXIgeyB0ZXh0LWFsaWduOmNlbnRlcjsgbWFyZ2luLWJvdHRvbToxNXB4OyB9IC5idG4uYmFubmVyLWJ0biB7IHBhZGRpbmc6NnB4IDI0cHg7IGZvbnQtd2VpZ2h0OmJvbGQ7IHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTsgYmFja2dyb3VuZC1jb2xvcjpibGFjazsgY29sb3I6d2hpdGU7IGJhY2tncm91bmQtY29sb3I6OyBjb2xvcjo7IH0gLmJ0bi5iYW5uZXItYnRuOmhvdmVyIHsgYm94LXNoYWRvdzppbnNldCAwIDAgMTAwcHggMTAwcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOyB9IC5idG4geyBkaXNwbGF5OmlubGluZS1ibG9jazsgcGFkZGluZzo2cHggMTJweDsgbWFyZ2luLWJvdHRvbTowOyBmb250LXNpemU6MC44NzVyZW0gOyBmb250LXdlaWdodDo0MDA7IGxpbmUtaGVpZ2h0OjEuNDI4NTcxNDM7IHRleHQtYWxpZ246Y2VudGVyOyB3aGl0ZS1zcGFjZTpub3dyYXA7IHZlcnRpY2FsLWFsaWduOm1pZGRsZTsgLW1zLXRvdWNoLWFjdGlvbjptYW5pcHVsYXRpb247IHRvdWNoLWFjdGlvbjptYW5pcHVsYXRpb247IGN1cnNvcjpwb2ludGVyOyAtd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7IC1tb3otdXNlci1zZWxlY3Q6bm9uZTsgLW1zLXVzZXItc2VsZWN0Om5vbmU7IHVzZXItc2VsZWN0Om5vbmU7IGJvcmRlci1yYWRpdXM6NHB4OyB9IC5sYXp5bG9hZHsgdmlzaWJpbGl0eTpoaWRkZW47IH0gLmdib3ggeyBib3JkZXItcmFkaXVzOjVweDsgYm94LXNoYWRvdzowIDAgMTBweCAxcHggcmdiYSgwLDAsMCwwLjIpOyB9IC5wZCB7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7IGZvbnQtc2l6ZTowLjVlbTsgdmVydGljYWwtYWxpZ246c3VwZXI7IH0gLnVpLWxvYWRlci1iYWNrZ3JvdW5keyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgdG9wOjA7IHBhZGRpbmc6MDsgbWFyZ2luOjA7IGJhY2tncm91bmQ6cmdiYSgwLCAwLCAwLCAwLjMpOyBkaXNwbGF5Om5vbmU7IHBvc2l0aW9uOmZpeGVkOyB6LWluZGV4OjEwMDAwMDAwMDsgfSAudWktbG9hZGVyLWJhY2tncm91bmQtZ2lmeyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjUwJTsgbGVmdDo1MCU7IH0gLmQyY0Zvb3RlckNvb2tpZURlbGV0ZVRpdGxlIHsgZm9udC1zaXplOjEuM2VtOyB9IC5kMmNGb290ZXJDb29raWVEZWxldGVUZXh0IHsgbWFyZ2luLXRvcDozMHB4OyB9IC5tb250aGx5UGF5bWVudHNQb3B1cENvbnRhaW5lcl9idG57IGJhY2tncm91bmQ6I2UzMTczZTsgY29sb3I6I2ZmZmZmZjsgcGFkZGluZzoxMHB4IDIwcHggMTBweCAyMHB4OyBkaXNwbGF5OmlubGluZS1ibG9jazsgfSAubW9udGhseVBheW1lbnRzUG9wdXBDb250YWluZXJfYnRuIHNwYW57IGJhY2tncm91bmQ6I2UzMTczZTsgY29sb3I6I2ZmZmZmZjsgfSAjbW9udGhseVBheW1lbnRzUG9wdXBDb250YWluZXJfc21zeyBiYWNrZ3JvdW5kOiNlMzE3M2U7IGNvbG9yOiNmZmZmZmY7IH0gI21vbnRobHlQYXltZW50c1BvcHVwQ29udGFpbmVyX3NtcyBzcGFueyBiYWNrZ3JvdW5kOiNlMzE3M2U7IGNvbG9yOiNmZmZmZmY7IH0gLmJsYWNrQ29sb3JCb2xkeyBjb2xvcjojMDAwIWltcG9ydGFudDsgZm9udC13ZWlnaHQ6NzAwIWltcG9ydGFudDsgZm9udC1zaXplOjFyZW0gIWltcG9ydGFudDsgfSAuZmxleC1jZW50ZXIgLnJlc3BvbnNpdmUtZWRpdG9yIHsgZmxleC1ncm93OjE7IH0gLnJldmVhbC1tb2RhbHsgYm94LXNpemluZzpjb250ZW50LWJveDsgfSAuZ20tc3R5bGUtaXctZCB7IHBhZGRpbmctdG9wOjEycHg7IG1hcmdpbi1yaWdodDotMjRweDsgfSAuZ20tc3R5bGUgLmdtLXN0eWxlLWl3LWMgeyBmbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZTsgfQovKiogL2Nzcy9mb250cy5IZWx2ZXRpY2FOZXVlTFQuY3NzICoqLwpAZm9udC1mYWNle2ZvbnQtZGlzcGxheTpzd2FwO2ZvbnQtZmFtaWx5OidIZWx2ZXRpY2FOZXVlTFQnO2ZvbnQtd2VpZ2h0OjEwMDtmb250LXN0eWxlOm5vcm1hbDtzcmM6dXJsKCdodHRwczovL2ZvbnRzLmQyY21lZGlhLmNhL0hlbHZldGljYU5ldWVMVC1UaGluLndvZmYyJylmb3JtYXQoJ3dvZmYyJyksdXJsKCdodHRwczovL2ZvbnRzLmQyY21lZGlhLmNhL0hlbHZldGljYU5ldWVMVC1UaGluLm90ZicpZm9ybWF0KCdvcGVudHlwZScpO31AZm9udC1mYWNle2ZvbnQtZGlzcGxheTpzd2FwO2ZvbnQtZmFtaWx5OidIZWx2ZXRpY2FOZXVlTFQnO2ZvbnQtd2VpZ2h0OjEwMDtmb250LXN0eWxlOml0YWxpYztzcmM6dXJsKCdodHRwczovL2ZvbnRzLmQyY21lZGlhLmNhL0hlbHZldGljYU5ldWVMVC1UaGluLUl0YWxpYy53b2ZmMicpZm9ybWF0KCd3b2ZmMicpLHVybCgnaHR0cHM6Ly9mb250cy5kMmNtZWRpYS5jYS9IZWx2ZXRpY2FOZXVlTFQtVGhpbi1JdGFsaWMub3RmJylmb3JtYXQoJ29wZW50eXBlJyk7fUBmb250LWZhY2V7Zm9udC1kaXNwbGF5OnN3YXA7Zm9udC1mYW1pbHk6J0hlbHZldGljYU5ldWVMVCc7Zm9udC13ZWlnaHQ6MjAwO2ZvbnQtc3R5bGU6bm9ybWFsO3NyYzp1cmwoJ2h0dHBzOi8vZm9udHMuZDJjbWVkaWEuY2EvSGVsdmV0aWNhTmV1ZUxULVVsdHJhTGlnaHQud29mZjInKWZvcm1hdCgnd29mZjInKSx1cmwoJ2h0dHBzOi8vZm9udHMuZDJjbWVkaWEuY2EvSGVsdmV0aWNhTmV1ZUxULVVsdHJhTGlnaHQub3RmJylmb3JtYXQoJ29wZW50eXBlJyk7fUBmb250LWZhY2V7Zm9udC1kaXNwbGF5OnN3YXA7Zm9udC1mYW1pbHk6J0hlbHZldGljYU5ldWVMVCc7Zm9udC13ZWlnaHQ6MjAwO2ZvbnQtc3R5bGU6aXRhbGljO3NyYzp1cmwoJ2h0dHBzOi8vZm9udHMuZDJjbWVkaWEuY2EvSGVsdmV0aWNhTmV1ZUxULVVsdHJhTGlnaHQtSXRhbGljLndvZmYyJylmb3JtYXQoJ3dvZmYyJyksdXJsKCdodHRwczovL2ZvbnRzLmQyY21lZGlhLmNhL0hlbHZldGljYU5ldWVMVC1VbHRyYUxpZ2h0LUl0YWxpYy5vdGYnKWZvcm1hdCgnb3BlbnR5cGUnKTt9QGZvbnQtZmFjZXtmb250LWRpc3BsYXk6c3dhcDtmb250LWZhbWlseTonSGVsdmV0aWNhTmV1ZUxUJztmb250LXdlaWdodDozMDA7Zm9udC1zdHlsZTpub3JtYWw7c3JjOnVybCgnaHR0cHM6Ly9mb250cy5kMmNtZWRpYS5jYS9IZWx2ZXRpY2FOZXVlTFQtTGlnaHQud29mZjInKWZvcm1hdCgnd29mZjInKSx1cmwoJ2h0dHBzOi8vZm9udHMuZDJjbWVkaWEuY2EvSGVsdmV0aWNhTmV1ZUxULUxpZ2h0Lm90ZicpZm9ybWF0KCdvcGVudHlwZScpO31AZm9udC1mYWNle2ZvbnQtZGlzcGxheTpzd2FwO2ZvbnQtZmFtaWx5OidIZWx2ZXRpY2FOZXVlTFQnO2ZvbnQtd2VpZ2h0OjMwMDtmb250LXN0eWxlOml0YWxpYztzcmM6dXJsKCdodHRwczovL2ZvbnRzLmQyY21lZGlhLmNhL0hlbHZldGljYU5ldWVMVC1MaWdodC1JdGFsaWMud29mZjInKWZvcm1hdCgnd29mZjInKSx1cmwoJ2h0dHBzOi8vZm9udHMuZDJjbWVkaWEuY2EvSGVsdmV0aWNhTmV1ZUxULUxpZ2h0LUl0YWxpYy5vdGYnKWZvcm1hdCgnb3BlbnR5cGUnKTt9QGZvbnQtZmFjZXtmb250LWRpc3BsYXk6c3dhcDtmb250LWZhbWlseTonSGVsdmV0aWNhTmV1ZUxUJztmb250LXdlaWdodDo0MDA7Zm9udC1zdHlsZTpub3JtYWw7c3JjOnVybCgnaHR0cHM6Ly9mb250cy5kMmNtZWRpYS5jYS9IZWx2ZXRpY2FOZXVlTFQtUmVndWxhci53b2ZmMicpZm9ybWF0KCd3b2ZmMicpLHVybCgnaHR0cHM6Ly9mb250cy5kMmNtZWRpYS5jYS9IZWx2ZXRpY2FOZXVlTFQtUmVndWxhci5vdGYnKWZvcm1hdCgnb3BlbnR5cGUnKTt9QGZvbnQtZmFjZXtmb250LWRpc3BsYXk6c3dhcDtmb250LWZhbWlseTonSGVsdmV0aWNhTmV1ZUxUJztmb250LXdlaWdodDo0MDA7Zm9udC1zdHlsZTppdGFsaWM7c3JjOnVybCgnaHR0cHM6Ly9mb250cy5kMmNtZWRpYS5jYS9IZWx2ZXRpY2FOZXVlTFQtUmVndWxhci1JdGFsaWMud29mZjInKWZvcm1hdCgnd29mZjInKSx1cmwoJ2h0dHBzOi8vZm9udHMuZDJjbWVkaWEuY2EvSGVsdmV0aWNhTmV1ZUxULVJlZ3VsYXItSXRhbGljLm90ZicpZm9ybWF0KCdvcGVudHlwZScpO31AZm9udC1mYWNle2ZvbnQtZGlzcGxheTpzd2FwO2ZvbnQtZmFtaWx5OidIZWx2ZXRpY2FOZXVlTFQnO2ZvbnQtd2VpZ2h0OjUwMDtmb250LXN0eWxlOm5vcm1hbDtzcmM6dXJsKCdodHRwczovL2ZvbnRzLmQyY21lZGlhLmNhL0hlbHZldGljYU5ldWVMVC1NZWRpdW0ud29mZjInKWZvcm1hdCgnd29mZjInKSx1cmwoJ2h0dHBzOi8vZm9udHMuZDJjbWVkaWEuY2EvSGVsdmV0aWNhTmV1ZUxULU1lZGl1bS5vdGYnKWZvcm1hdCgnb3BlbnR5cGUnKTt9QGZvbnQtZmFjZXtmb250LWRpc3BsYXk6c3dhcDtmb250LWZhbWlseTonSGVsdmV0aWNhTmV1ZUxUJztmb250LXdlaWdodDo1MDA7Zm9udC1zdHlsZTppdGFsaWM7c3JjOnVybCgnaHR0cHM6Ly9mb250cy5kMmNtZWRpYS5jYS9IZWx2ZXRpY2FOZXVlTFQtTWVkaXVtLUl0YWxpYy53b2ZmMicpZm9ybWF0KCd3b2ZmMicpLHVybCgnaHR0cHM6Ly9mb250cy5kMmNtZWRpYS5jYS9IZWx2ZXRpY2FOZXVlTFQtTWVkaXVtLUl0YWxpYy5vdGYnKWZvcm1hdCgnb3BlbnR5cGUnKTt9QGZvbnQtZmFjZXtmb250LWRpc3BsYXk6c3dhcDtmb250LWZhbWlseTonSGVsdmV0aWNhTmV1ZUxUJztmb250LXdlaWdodDo3MDA7Zm9udC1zdHlsZTpub3JtYWw7c3JjOnVybCgnaHR0cHM6Ly9mb250cy5kMmNtZWRpYS5jYS9IZWx2ZXRpY2FOZXVlTFQtQm9sZC53b2ZmMicpZm9ybWF0KCd3b2ZmMicpLHVybCgnaHR0cHM6Ly9mb250cy5kMmNtZWRpYS5jYS9IZWx2ZXRpY2FOZXVlTFQtQm9sZC5vdGYnKWZvcm1hdCgnb3BlbnR5cGUnKTt9QGZvbnQtZmFjZXtmb250LWRpc3BsYXk6c3dhcDtmb250LWZhbWlseTonSGVsdmV0aWNhTmV1ZUxUJztmb250LXdlaWdodDo3MDA7Zm9udC1zdHlsZTppdGFsaWM7c3JjOnVybCgnaHR0cHM6Ly9mb250cy5kMmNtZWRpYS5jYS9IZWx2ZXRpY2FOZXVlTFQtQm9sZC1JdGFsaWMud29mZjInKWZvcm1hdCgnd29mZjInKSx1cmwoJ2h0dHBzOi8vZm9udHMuZDJjbWVkaWEuY2EvSGVsdmV0aWNhTmV1ZUxULUJvbGQtSXRhbGljLm90ZicpZm9ybWF0KCdvcGVudHlwZScpO31AZm9udC1mYWNle2ZvbnQtZGlzcGxheTpzd2FwO2ZvbnQtZmFtaWx5OidIZWx2ZXRpY2FOZXVlTFQnO2ZvbnQtd2VpZ2h0OjgwMDtmb250LXN0eWxlOm5vcm1hbDtzcmM6dXJsKCdodHRwczovL2ZvbnRzLmQyY21lZGlhLmNhL0hlbHZldGljYU5ldWVMVC1IZWF2eS53b2ZmMicpZm9ybWF0KCd3b2ZmMicpLHVybCgnaHR0cHM6Ly9mb250cy5kMmNtZWRpYS5jYS9IZWx2ZXRpY2FOZXVlTFQtSGVhdnkub3RmJylmb3JtYXQoJ29wZW50eXBlJyk7fUBmb250LWZhY2V7Zm9udC1kaXNwbGF5OnN3YXA7Zm9udC1mYW1pbHk6J0hlbHZldGljYU5ldWVMVCc7Zm9udC13ZWlnaHQ6ODAwO2ZvbnQtc3R5bGU6aXRhbGljO3NyYzp1cmwoJ2h0dHBzOi8vZm9udHMuZDJjbWVkaWEuY2EvSGVsdmV0aWNhTmV1ZUxULUhlYXZ5LUl0YWxpYy53b2ZmMicpZm9ybWF0KCd3b2ZmMicpLHVybCgnaHR0cHM6Ly9mb250cy5kMmNtZWRpYS5jYS9IZWx2ZXRpY2FOZXVlTFQtSGVhdnktSXRhbGljLm90ZicpZm9ybWF0KCdvcGVudHlwZScpO31AZm9udC1mYWNle2ZvbnQtZGlzcGxheTpzd2FwO2ZvbnQtZmFtaWx5OidIZWx2ZXRpY2FOZXVlTFQnO2ZvbnQtd2VpZ2h0OjkwMDtmb250LXN0eWxlOm5vcm1hbDtzcmM6dXJsKCdodHRwczovL2ZvbnRzLmQyY21lZGlhLmNhL0hlbHZldGljYU5ldWVMVC1CbGFjay53b2ZmMicpZm9ybWF0KCd3b2ZmMicpLHVybCgnaHR0cHM6Ly9mb250cy5kMmNtZWRpYS5jYS9IZWx2ZXRpY2FOZXVlTFQtQmxhY2sub3RmJylmb3JtYXQoJ29wZW50eXBlJyk7fUBmb250LWZhY2V7Zm9udC1kaXNwbGF5OnN3YXA7Zm9udC1mYW1pbHk6J0hlbHZldGljYU5ldWVMVCc7Zm9udC13ZWlnaHQ6OTAwO2ZvbnQtc3R5bGU6aXRhbGljO3NyYzp1cmwoJ2h0dHBzOi8vZm9udHMuZDJjbWVkaWEuY2EvSGVsdmV0aWNhTmV1ZUxULUJsYWNrLUl0YWxpYy53b2ZmMicpZm9ybWF0KCd3b2ZmMicpLHVybCgnaHR0cHM6Ly9mb250cy5kMmNtZWRpYS5jYS9IZWx2ZXRpY2FOZXVlTFQtQmxhY2stSXRhbGljLm90ZicpZm9ybWF0KCdvcGVudHlwZScpO30KLyoqIC9jc3MvZm9udHMuTmF0aW9uYWwuY3NzICoqLwpAZm9udC1mYWNle2ZvbnQtZGlzcGxheTpzd2FwO2ZvbnQtZmFtaWx5OidOYXRpb25hbCc7Zm9udC13ZWlnaHQ6MTAwO2ZvbnQtc3R5bGU6bm9ybWFsO3NpemUtYWRqdXN0OjExNiU7c3JjOnVybCgnaHR0cHM6Ly9mb250cy5kMmNtZWRpYS5jYS9OYXRpb25hbC1UaGluLndvZmYyJylmb3JtYXQoJ3dvZmYyJyksdXJsKCdodHRwczovL2ZvbnRzLmQyY21lZGlhLmNhL05hdGlvbmFsLVRoaW4ub3RmJylmb3JtYXQoJ29wZW50eXBlJyk7fUBmb250LWZhY2V7Zm9udC1kaXNwbGF5OnN3YXA7Zm9udC1mYW1pbHk6J05hdGlvbmFsJztmb250LXdlaWdodDoxMDA7Zm9udC1zdHlsZTppdGFsaWM7c2l6ZS1hZGp1c3Q6MTE2JTtzcmM6dXJsKCdodHRwczovL2ZvbnRzLmQyY21lZGlhLmNhL05hdGlvbmFsLVRoaW5JdGFsaWMud29mZjInKWZvcm1hdCgnd29mZjInKSx1cmwoJ2h0dHBzOi8vZm9udHMuZDJjbWVkaWEuY2EvTmF0aW9uYWwtVGhpbkl0YWxpYy5vdGYnKWZvcm1hdCgnb3BlbnR5cGUnKTt9QGZvbnQtZmFjZXtmb250LWRpc3BsYXk6c3dhcDtmb250LWZhbWlseTonTmF0aW9uYWwnO2ZvbnQtd2VpZ2h0OjMwMDtmb250LXN0eWxlOm5vcm1hbDtzaXplLWFkanVzdDoxMTYlO3NyYzp1cmwoJ2h0dHBzOi8vZm9udHMuZDJjbWVkaWEuY2EvTmF0aW9uYWwtTGlnaHQud29mZjInKWZvcm1hdCgnd29mZjInKSx1cmwoJ2h0dHBzOi8vZm9udHMuZDJjbWVkaWEuY2EvTmF0aW9uYWwtTGlnaHQub3RmJylmb3JtYXQoJ29wZW50eXBlJyk7fUBmb250LWZhY2V7Zm9udC1kaXNwbGF5OnN3YXA7Zm9udC1mYW1pbHk6J05hdGlvbmFsJztmb250LXdlaWdodDozMDA7Zm9udC1zdHlsZTppdGFsaWM7c2l6ZS1hZGp1c3Q6MTE2JTtzcmM6dXJsKCdodHRwczovL2ZvbnRzLmQyY21lZGlhLmNhL05hdGlvbmFsLUxpZ2h0SXRhbGljLndvZmYyJylmb3JtYXQoJ3dvZmYyJyksdXJsKCdodHRwczovL2ZvbnRzLmQyY21lZGlhLmNhL05hdGlvbmFsLUxpZ2h0SXRhbGljLm90ZicpZm9ybWF0KCdvcGVudHlwZScpO31AZm9udC1mYWNle2ZvbnQtZGlzcGxheTpzd2FwO2ZvbnQtZmFtaWx5OidOYXRpb25hbCc7Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc3R5bGU6bm9ybWFsO3NpemUtYWRqdXN0OjExNiU7c3JjOnVybCgnaHR0cHM6Ly9mb250cy5kMmNtZWRpYS5jYS9OYXRpb25hbC1SZWd1bGFyLndvZmYyJylmb3JtYXQoJ3dvZmYyJyksdXJsKCdodHRwczovL2ZvbnRzLmQyY21lZGlhLmNhL05hdGlvbmFsLVJlZ3VsYXIub3RmJylmb3JtYXQoJ29wZW50eXBlJyk7fUBmb250LWZhY2V7Zm9udC1kaXNwbGF5OnN3YXA7Zm9udC1mYW1pbHk6J05hdGlvbmFsJztmb250LXdlaWdodDo0MDA7Zm9udC1zdHlsZTppdGFsaWM7c2l6ZS1hZGp1c3Q6MTE2JTtzcmM6dXJsKCdodHRwczovL2ZvbnRzLmQyY21lZGlhLmNhL05hdGlvbmFsLVJlZ3VsYXJJdGFsaWMud29mZjInKWZvcm1hdCgnd29mZjInKSx1cmwoJ2h0dHBzOi8vZm9udHMuZDJjbWVkaWEuY2EvTmF0aW9uYWwtUmVndWxhckl0YWxpYy5vdGYnKWZvcm1hdCgnb3BlbnR5cGUnKTt9QGZvbnQtZmFjZXtmb250LWRpc3BsYXk6c3dhcDtmb250LWZhbWlseTonTmF0aW9uYWwnO2ZvbnQtd2VpZ2h0OjUwMDtmb250LXN0eWxlOm5vcm1hbDtzaXplLWFkanVzdDoxMTYlO3NyYzp1cmwoJ2h0dHBzOi8vZm9udHMuZDJjbWVkaWEuY2EvTmF0aW9uYWwtTWVkaXVtLndvZmYyJylmb3JtYXQoJ3dvZmYyJyksdXJsKCdodHRwczovL2ZvbnRzLmQyY21lZGlhLmNhL05hdGlvbmFsLU1lZGl1bS5vdGYnKWZvcm1hdCgnb3BlbnR5cGUnKTt9QGZvbnQtZmFjZXtmb250LWRpc3BsYXk6c3dhcDtmb250LWZhbWlseTonTmF0aW9uYWwnO2ZvbnQtd2VpZ2h0OjUwMDtmb250LXN0eWxlOml0YWxpYztzaXplLWFkanVzdDoxMTYlO3NyYzp1cmwoJ2h0dHBzOi8vZm9udHMuZDJjbWVkaWEuY2EvTmF0aW9uYWwtTWVkaXVtSXRhbGljLndvZmYyJylmb3JtYXQoJ3dvZmYyJyksdXJsKCdodHRwczovL2ZvbnRzLmQyY21lZGlhLmNhL05hdGlvbmFsLU1lZGl1bUl0YWxpYy5vdGYnKWZvcm1hdCgnb3BlbnR5cGUnKTt9QGZvbnQtZmFjZXtmb250LWRpc3BsYXk6c3dhcDtmb250LWZhbWlseTonTmF0aW9uYWwnO2ZvbnQtd2VpZ2h0OjYwMDtmb250LXN0eWxlOm5vcm1hbDtzaXplLWFkanVzdDoxMTYlO3NyYzp1cmwoJ2h0dHBzOi8vZm9udHMuZDJjbWVkaWEuY2EvTmF0aW9uYWwtU2VtaWJvbGQud29mZjInKWZvcm1hdCgnd29mZjInKSx1cmwoJ2h0dHBzOi8vZm9udHMuZDJjbWVkaWEuY2EvTmF0aW9uYWwtU2VtaWJvbGQub3RmJylmb3JtYXQoJ29wZW50eXBlJyk7fUBmb250LWZhY2V7Zm9udC1kaXNwbGF5OnN3YXA7Zm9udC1mYW1pbHk6J05hdGlvbmFsJztmb250LXdlaWdodDo2MDA7Zm9udC1zdHlsZTppdGFsaWM7c2l6ZS1hZGp1c3Q6MTE2JTtzcmM6dXJsKCdodHRwczovL2ZvbnRzLmQyY21lZGlhLmNhL05hdGlvbmFsLVNlbWlib2xkSXRhbGljLndvZmYyJylmb3JtYXQoJ3dvZmYyJyksdXJsKCdodHRwczovL2ZvbnRzLmQyY21lZGlhLmNhL05hdGlvbmFsLVNlbWlib2xkSXRhbGljLm90ZicpZm9ybWF0KCdvcGVudHlwZScpO31AZm9udC1mYWNle2ZvbnQtZGlzcGxheTpzd2FwO2ZvbnQtZmFtaWx5OidOYXRpb25hbCc7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc3R5bGU6bm9ybWFsO3NpemUtYWRqdXN0OjExNiU7c3JjOnVybCgnaHR0cHM6Ly9mb250cy5kMmNtZWRpYS5jYS9OYXRpb25hbC1Cb2xkLndvZmYyJylmb3JtYXQoJ3dvZmYyJyksdXJsKCdodHRwczovL2ZvbnRzLmQyY21lZGlhLmNhL05hdGlvbmFsLUJvbGQub3RmJylmb3JtYXQoJ29wZW50eXBlJyk7fUBmb250LWZhY2V7Zm9udC1kaXNwbGF5OnN3YXA7Zm9udC1mYW1pbHk6J05hdGlvbmFsJztmb250LXdlaWdodDo3MDA7Zm9udC1zdHlsZTppdGFsaWM7c2l6ZS1hZGp1c3Q6MTE2JTtzcmM6dXJsKCdodHRwczovL2ZvbnRzLmQyY21lZGlhLmNhL05hdGlvbmFsLUJvbGRJdGFsaWMud29mZjInKWZvcm1hdCgnd29mZjInKSx1cmwoJ2h0dHBzOi8vZm9udHMuZDJjbWVkaWEuY2EvTmF0aW9uYWwtQm9sZEl0YWxpYy5vdGYnKWZvcm1hdCgnb3BlbnR5cGUnKTt9QGZvbnQtZmFjZXtmb250LWRpc3BsYXk6c3dhcDtmb250LWZhbWlseTonTmF0aW9uYWwnO2ZvbnQtd2VpZ2h0OjgwMDtmb250LXN0eWxlOm5vcm1hbDtzaXplLWFkanVzdDoxMTYlO3NyYzp1cmwoJ2h0dHBzOi8vZm9udHMuZDJjbWVkaWEuY2EvTmF0aW9uYWwtRXh0cmFib2xkLndvZmYyJylmb3JtYXQoJ3dvZmYyJyksdXJsKCdodHRwczovL2ZvbnRzLmQyY21lZGlhLmNhL05hdGlvbmFsLUV4dHJhYm9sZC5vdGYnKWZvcm1hdCgnb3BlbnR5cGUnKTt9QGZvbnQtZmFjZXtmb250LWRpc3BsYXk6c3dhcDtmb250LWZhbWlseTonTmF0aW9uYWwnO2ZvbnQtd2VpZ2h0OjgwMDtmb250LXN0eWxlOml0YWxpYztzaXplLWFkanVzdDoxMTYlO3NyYzp1cmwoJ2h0dHBzOi8vZm9udHMuZDJjbWVkaWEuY2EvTmF0aW9uYWwtRXh0cmFib2xkSXRhbGljLndvZmYyJylmb3JtYXQoJ3dvZmYyJyksdXJsKCdodHRwczovL2ZvbnRzLmQyY21lZGlhLmNhL05hdGlvbmFsLUV4dHJhYm9sZEl0YWxpYy5vdGYnKWZvcm1hdCgnb3BlbnR5cGUnKTt9QGZvbnQtZmFjZXtmb250LWRpc3BsYXk6c3dhcDtmb250LWZhbWlseTonTmF0aW9uYWwnO2ZvbnQtd2VpZ2h0OjkwMDtmb250LXN0eWxlOm5vcm1hbDtzaXplLWFkanVzdDoxMTYlO3NyYzp1cmwoJ2h0dHBzOi8vZm9udHMuZDJjbWVkaWEuY2EvTmF0aW9uYWwtQmxhY2sud29mZjInKWZvcm1hdCgnd29mZjInKSx1cmwoJ2h0dHBzOi8vZm9udHMuZDJjbWVkaWEuY2EvTmF0aW9uYWwtQmxhY2sub3RmJylmb3JtYXQoJ29wZW50eXBlJyk7fUBmb250LWZhY2V7Zm9udC1kaXNwbGF5OnN3YXA7Zm9udC1mYW1pbHk6J05hdGlvbmFsJztmb250LXdlaWdodDo5MDA7Zm9udC1zdHlsZTppdGFsaWM7c2l6ZS1hZGp1c3Q6MTE2JTtzcmM6dXJsKCdodHRwczovL2ZvbnRzLmQyY21lZGlhLmNhL05hdGlvbmFsLUJsYWNrSXRhbGljLndvZmYyJylmb3JtYXQoJ3dvZmYyJyksdXJsKCdodHRwczovL2ZvbnRzLmQyY21lZGlhLmNhL05hdGlvbmFsLUJsYWNrSXRhbGljLm90ZicpZm9ybWF0KCdvcGVudHlwZScpO30KLyoqIC9jc3MvYmFzZS5jc3MgKiovCnN0YWNrLWxjLCAuc3RhY2stbGMgeyAtLXNwYWNlOnZhcigtLXMsIDAuNXJlbSk7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydDsgfSBzdGFjay1sYyA+ICosIC5zdGFjay1sYyA+ICogeyBtYXJnaW4tdG9wOjA7IG1hcmdpbi1ib3R0b206MDsgfSBzdGFjay1sYyA+ICogKyAqLCAuc3RhY2stbGMgPiAqICsgKiB7IG1hcmdpbi10b3A6dmFyKC0tc3BhY2UpOyB9IHN0YWNrLWxjLi0tczAgPiAqICsgKiwgLnN0YWNrLWxjLi0tczAgPiAqICsgKiB7IGJvcmRlci13aWR0aDowOyBib3JkZXItdG9wLXdpZHRoOnZhcigtLWJvcmRlci10aGluKTsgYm9yZGVyLWNvbG9yOmluaGVyaXQ7IH0gLmJveC1sYywgYm94LWxjIHsgLS1zcGFjZTp2YXIoLS1zLCAwLjVyZW0pOyBkaXNwbGF5OmJsb2NrOyBwYWRkaW5nOnZhcigtLXNwYWNlKTsgb3V0bGluZTp2YXIoLS1ib3JkZXItdGhpbikgdHJhbnNwYXJlbnQ7IG91dGxpbmUtb2Zmc2V0OmNhbGModmFyKC0tYm9yZGVyLXRoaW4pICogLTEpOyB9IC5ib3gtbGMsIGJveC1sYyAqIHsgY29sb3I6aW5oZXJpdDsgfSAuYmctYm94eyBjb2xvcjp2YXIoLS1ibGFjayk7IGJhY2tncm91bmQtY29sb3I6dmFyKC0td2hpdGUpOyBib3JkZXItd2lkdGg6dmFyKC0tYm9yZGVyLXRoaW4pOyB9IC5nbGFzcy1ib3h7IGJvcmRlcjpub25lOyBiYWNrZ3JvdW5kOm5vbmU7IGJhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7IGNvbG9yOmluaGVyaXQ7IH0gLmN0ci1ib3gsIC5mbGV4LWJveCwgLmZsZXgtY29sdW1uLCAuZmxleC1hcm91bmQsIC5mbGV4LWJldHdlZW4sIC5mbGV4LWV2ZW5seSwgLmZsZXgtY2VudGVyLCAuZmxleC1zdGFydCwgLmZsZXgtZW5kLCAuZmxleC1hdXRvLCAuZmxleC1lcXVhbHsgZGlzcGxheTpmbGV4OyB9IC5pbmxpbmUtYm94eyBkaXNwbGF5OmlubGluZS1ibG9jazsgfSAuc2hhZG93LWJveHsgYm94LXNoYWRvdzowIDAgMTBweCAycHggdmFyKC0tbWlkLWdyYXkpOyBib3JkZXItY29sb3I6dmFyKC0tbGlnaHQtZ3JheSk7IH0gLmZsZXgtYm94Om5vdCg6aXMoLmZsZXgtYmV0d2VlbiwuZmxleC1ldmVubHksLmZsZXgtYXJvdW5kKSkgPiAqICsgKnsgbWFyZ2luLWxlZnQ6dmFyKC0tcyk7IH0gLmdyb3VwLWxjLCBncm91cC1sYyB7IC0tc3BhY2U6dmFyKC0tcywgMC41cmVtKTsgfSAuZ3JvdXAtbGMgPiAqLCBncm91cC1sYyA+ICogeyBkaXNwbGF5OmZsZXg7IGZsZXgtd3JhcDp3cmFwOyBqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjsgYWxpZ24taXRlbXM6Y2VudGVyOyBtYXJnaW46Y2FsYyh2YXIoLS1zcGFjZSkgLyAyICogLTEpOyB9IC5ncm91cC1sYyA+ICogPiAqLCBncm91cC1sYyA+ICogPiAqIHsgbWFyZ2luOmNhbGModmFyKC0tc3BhY2UpIC8gMik7IH0gOmlzKC5zaWRlYmFyLWxjLHNpZGViYXItbGMpIHsgb3ZlcmZsb3c6aGlkZGVuOyB9IDppcyguc2lkZWJhci1sYyxzaWRlYmFyLWxjKSA+ICogeyAtLXNwYWNlOnZhcigtLXMsIDAuNXJlbSk7IGRpc3BsYXk6ZmxleDsgZmxleC13cmFwOndyYXA7IG1hcmdpbjpjYWxjKHZhcigtLXNwYWNlKSAvIDIgKiAtMSk7IH0gOmlzKC5zaWRlYmFyLWxjLHNpZGViYXItbGMpID4gKiA+ICogeyBtYXJnaW46Y2FsYyh2YXIoLS1zcGFjZSkgLyAyKTsgZmxleC1ncm93OjE7IH0gOmlzKC5zaWRlYmFyLWxjLHNpZGViYXItbGMpID4gKiA+IDpmaXJzdC1jaGlsZCB7IGZsZXgtYmFzaXM6MDsgZmxleC1ncm93Ojk5OTsgbWluLXdpZHRoOmNhbGModmFyKC0tc2lkZWJhci1icCwgNTAlKSAtIHZhcigtLXNwYWNlKSk7IH0gOmlzKC5zd2l0Y2hlci1sYyxzd2l0Y2hlci1sYykgPiAqIHsgLS1zcGFjZTp2YXIoLS1zLCAwLjVyZW0pOyBkaXNwbGF5OmZsZXg7IGZsZXgtd3JhcDp3cmFwOyBtYXJnaW46Y2FsYygodmFyKC0tc3BhY2UpIC8gMikgKiAtMSk7IH0gOmlzKC5zd2l0Y2hlci1sYyxzd2l0Y2hlci1sYykgPiAqID4gKiB7IGZsZXgtZ3JvdzoxOyBmbGV4LWJhc2lzOmNhbGMoKHZhcigtLXN3aXRjaC1icCwgMzByZW0pIC0gKDEwMCUgLSB2YXIoLS1zcGFjZSkpKSAqIDk5OSk7IG1hcmdpbjpjYWxjKHZhcigtLXNwYWNlKSAvIDIpOyB9IDppcyguc3dpdGNoZXItbGMsc3dpdGNoZXItbGMpID4gKiA+IDpudGgtbGFzdC1jaGlsZChuKzUpLCA6aXMoLnN3aXRjaGVyLWxjLHN3aXRjaGVyLWxjKSA+ICogPiA6bnRoLWxhc3QtY2hpbGQobis1KSB+ICogeyBmbGV4LWJhc2lzOjEwMCU7IH0gLi0tczB7LS1zcGFjZTp2YXIoLS1zMCk7fSAuLS1zLTl7LS1zcGFjZTp2YXIoLS1zLTkpO30gLi0tcy04ey0tc3BhY2U6dmFyKC0tcy04KTt9IC4tLXMtN3stLXNwYWNlOnZhcigtLXMtNyk7fSAuLS1zLTZ7LS1zcGFjZTp2YXIoLS1zLTYpO30gLi0tcy01ey0tc3BhY2U6dmFyKC0tcy01KTt9IC4tLXMtNHstLXNwYWNlOnZhcigtLXMtNCk7fSAuLS1zLTN7LS1zcGFjZTp2YXIoLS1zLTMpO30gLi0tcy0yey0tc3BhY2U6dmFyKC0tcy0yKTt9IC4tLXMtMXstLXNwYWNlOnZhcigtLXMtMSk7fSAuLS1zey0tc3BhY2U6dmFyKC0tcyk7fSAuLS1zMXstLXNwYWNlOnZhcigtLXMxKTt9IC4tLXMyey0tc3BhY2U6dmFyKC0tczIpO30gLi0tczN7LS1zcGFjZTp2YXIoLS1zMyk7fSAuLS1zNHstLXNwYWNlOnZhcigtLXM0KTt9IC4tLXM1ey0tc3BhY2U6dmFyKC0tczUpO30gLi0tczZ7LS1zcGFjZTp2YXIoLS1zNik7fSAuLS1zN3stLXNwYWNlOnZhcigtLXM3KTt9IC4tLXM4ey0tc3BhY2U6dmFyKC0tczgpO30gLi0tczl7LS1zcGFjZTp2YXIoLS1zOSk7fSAuLS1mcy05e2ZvbnQtc2l6ZTp2YXIoLS1mcy05KTstLWZzOnZhcigtLWZzLTkpO30gLi0tZnMtOHtmb250LXNpemU6dmFyKC0tZnMtOCk7LS1mczp2YXIoLS1mcy04KTt9IC4tLWZzLTd7Zm9udC1zaXplOnZhcigtLWZzLTcpOy0tZnM6dmFyKC0tZnMtNyk7fSAuLS1mcy02e2ZvbnQtc2l6ZTp2YXIoLS1mcy02KTstLWZzOnZhcigtLWZzLTYpO30gLi0tZnMtNXtmb250LXNpemU6dmFyKC0tZnMtNSk7LS1mczp2YXIoLS1mcy01KTt9IC4tLWZzLTR7Zm9udC1zaXplOnZhcigtLWZzLTQpOy0tZnM6dmFyKC0tZnMtNCk7fSAuLS1mcy0ze2ZvbnQtc2l6ZTp2YXIoLS1mcy0zKTstLWZzOnZhcigtLWZzLTMpO30gLi0tZnMtMntmb250LXNpemU6dmFyKC0tZnMtMik7LS1mczp2YXIoLS1mcy0yKTt9IC4tLWZzLTF7Zm9udC1zaXplOnZhcigtLWZzLTEpOy0tZnM6dmFyKC0tZnMtMSk7fSAuLS1mczB7Zm9udC1zaXplOnZhcigtLWZzMCk7LS1mczp2YXIoLS1mczApO30gLi0tZnMxe2ZvbnQtc2l6ZTp2YXIoLS1mczEpOy0tZnM6dmFyKC0tZnMxKTt9IC4tLWZzMntmb250LXNpemU6dmFyKC0tZnMyKTstLWZzOnZhcigtLWZzMik7fSAuLS1mczN7Zm9udC1zaXplOnZhcigtLWZzMyk7LS1mczp2YXIoLS1mczMpO30gLi0tZnM0e2ZvbnQtc2l6ZTp2YXIoLS1mczQpOy0tZnM6dmFyKC0tZnM0KTt9IC4tLWZzNXtmb250LXNpemU6dmFyKC0tZnM1KTstLWZzOnZhcigtLWZzNSk7fSAuLS1mczZ7Zm9udC1zaXplOnZhcigtLWZzNik7LS1mczp2YXIoLS1mczYpO30gLi0tZnM3e2ZvbnQtc2l6ZTp2YXIoLS1mczcpOy0tZnM6dmFyKC0tZnM3KTt9IC4tLWZzOHtmb250LXNpemU6dmFyKC0tZnM4KTstLWZzOnZhcigtLWZzOCk7fSAuLS1mczl7Zm9udC1zaXplOnZhcigtLWZzOSk7LS1mczp2YXIoLS1mczkpO30gLnNocmluay1ncm93e2ZsZXg6MSAxO30gLmZsZXgtd3JhcCB7ZmxleC13cmFwOndyYXA7fSAuZmxleC1yZXZlcnNlIHtmbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZTt9IC5mbGV4LWF1dG8gPiAqe2ZsZXg6MSAxIGF1dG87fSAuZmxleC1lcXVhbCA+ICp7ZmxleDoxIDE7fSAuYWxpZ24tY2VudGVyIHthbGlnbi1pdGVtczpjZW50ZXI7fSAuYWxpZ24tc3RhcnR7YWxpZ24taXRlbXM6ZmxleC1zdGFydDt9IC5hbGlnbi1lbmR7YWxpZ24taXRlbXM6ZmxleC1lbmQ7fSAuYWxpZ24tYmFzZWxpbmV7YWxpZ24taXRlbXM6YmFzZWxpbmU7fSAuZmxleC1jb2x1bW4ge2ZsZXgtZmxvdzpjb2x1bW47fSAuZmxleC1yb3cge2ZsZXgtZmxvdzpyb3c7fSAuZmxleC1hcm91bmR7anVzdGlmeS1jb250ZW50OnNwYWNlLWFyb3VuZDt9IC5mbGV4LWJldHdlZW57anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47fSAuZmxleC1ldmVubHl7anVzdGlmeS1jb250ZW50OnNwYWNlLWV2ZW5seTt9IC5mbGV4LWNlbnRlcntqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO30gLmZsZXgtc3RhcnR7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQ7fSAuZmxleC1lbmR7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO30gLi1wMCB7cGFkZGluZzowO30gLi1wdDAge3BhZGRpbmctdG9wOjA7fSAuLXBiMCB7cGFkZGluZy1ib3R0b206MDt9IC4tcHYwIHtwYWRkaW5nLXRvcDowO3BhZGRpbmctYm90dG9tOjB9IC4tcGgwIHtwYWRkaW5nLWxlZnQ6MDtwYWRkaW5nLXJpZ2h0OjB9IC4tcCB7cGFkZGluZzp2YXIoLS1zcGFjZSk7fSAuLXB2e3BhZGRpbmctdG9wOnZhcigtLXNwYWNlKTsgcGFkZGluZy1ib3R0b206dmFyKC0tc3BhY2UpO30gLi1waHtwYWRkaW5nLWxlZnQ6dmFyKC0tc3BhY2UpOyBwYWRkaW5nLXJpZ2h0OnZhcigtLXNwYWNlKTt9IC4tcHR7cGFkZGluZy10b3A6dmFyKC0tc3BhY2UpO30gLi1wYntwYWRkaW5nLWJvdHRvbTp2YXIoLS1zcGFjZSk7fSAuLW0wIHttYXJnaW46MDt9IC4tbXQwIHttYXJnaW4tdG9wOjA7fSAuLW1iMCB7bWFyZ2luLWJvdHRvbTowO30gLi1tdjAge21hcmdpbi10b3A6MDttYXJnaW4tYm90dG9tOjB9IC4tbWgwIHttYXJnaW4tbGVmdDowO21hcmdpbi1yaWdodDowfSAuLW0ge21hcmdpbjp2YXIoLS1zcGFjZSk7fSAuLW12e21hcmdpbi10b3A6dmFyKC0tc3BhY2UpOyBtYXJnaW4tYm90dG9tOnZhcigtLXNwYWNlKTt9IC4tbWh7bWFyZ2luLWxlZnQ6dmFyKC0tc3BhY2UpOyBtYXJnaW4tcmlnaHQ6dmFyKC0tc3BhY2UpO30gLi1tdHttYXJnaW4tdG9wOnZhcigtLXNwYWNlKTt9IC4tbWJ7bWFyZ2luLWJvdHRvbTp2YXIoLS1zcGFjZSk7fSAuLWIwIHtib3JkZXI6bm9uZTt9IC4tYjIge2JvcmRlci13aWR0aDoycHg7fSAuLWJ7Ym9yZGVyLXdpZHRoOjFweDt9IC4tYnR7Ym9yZGVyLXRvcC13aWR0aDoxcHg7fSAuLWJie2JvcmRlci1ib3R0b20td2lkdGg6MXB4O30gLi1idntib3JkZXItdG9wLXdpZHRoOjFweDtib3JkZXItYm90dG9tLXdpZHRoOjFweDt9IC4tYmh7Ym9yZGVyLWxlZnQtd2lkdGg6MXB4O2JvcmRlci1yaWdodC13aWR0aDoxcHg7fSAuLXctZnVsbCB7d2lkdGg6MTAwdnc7fSAuLXctMTAwIHt3aWR0aDoxMDAlO30gLi13LTUwIHt3aWR0aDo1MCU7fSAuLXctMzMge3dpZHRoOjMzLjMzJTt9IC4tdy0yNSB7d2lkdGg6MjUlO30gLi13LTUwdyB7d2lkdGg6NTB2dzt9IC4tZnMteHhze2ZvbnQtc2l6ZTowLjE1cmVtOyAtLWZzOjAuMTVyZW07fSAuLWZzLXhze2ZvbnQtc2l6ZTowLjVyZW07IC0tZnM6MC41cmVtO30gLi1mcy1ze2ZvbnQtc2l6ZTowLjc1cmVtOyAtLWZzOjAuNzVyZW07fSAuLWZzLXNye2ZvbnQtc2l6ZTowLjlyZW07IC0tZnM6MC45cmVtO30gLi1mcy1scntmb250LXNpemU6MS4xcmVtOyAtLWZzOjEuMXJlbTt9IC4tZnMtbHtmb250LXNpemU6MS4yNXJlbTsgLS1mczoxLjI1cmVtO30gLi1mcy14bHtmb250LXNpemU6MS41cmVtOyAtLWZzOjEuNXJlbTt9IC4tZnMteHhse2ZvbnQtc2l6ZToycmVtOyAtLWZzOjJyZW07fSAuLWZzLXh4eGx7Zm9udC1zaXplOjIuMjVyZW07IC0tZnM6Mi4yNXJlbTt9IC4tZncxIHtmb250LXdlaWdodDoxMDA7fSAuLWZ3MiB7Zm9udC13ZWlnaHQ6MjAwO30gLi1mdzMge2ZvbnQtd2VpZ2h0OjMwMDt9IC4tZnc0IHtmb250LXdlaWdodDo0MDA7fSAuLWZ3NSB7Zm9udC13ZWlnaHQ6NTAwO30gLi1mdzYge2ZvbnQtd2VpZ2h0OjYwMDt9IC4tZnc3IHtmb250LXdlaWdodDo3MDA7fSAuLWZ3OCB7Zm9udC13ZWlnaHQ6ODAwO30gLi1mdzkge2ZvbnQtd2VpZ2h0OjkwMDt9IC4tYm9sZCB7Zm9udC13ZWlnaHQ6Ym9sZDt9IC50eHQtcmVkIHtjb2xvcjojY2MwMDAwO30gLnR4dC1jZW50ZXJ7dGV4dC1hbGlnbjpjZW50ZXI7fSAudHh0LXJpZ2h0e3RleHQtYWxpZ246cmlnaHQ7fSAudHh0LWxlZnR7dGV4dC1hbGlnbjpsZWZ0O30gLnR4dC11cHBlcnt0ZXh0LXRyYW5zZm9ybTp2YXIoLS1jZXJ0LXR4dC10cmFuc2Zvcm0sIHZhcigtLXR4dC11cHBlciwgdXBwZXJjYXNlKSk7fSAudHh0LW5vdGV7Zm9udC1zdHlsZTppdGFsaWM7fSAudHh0LXBheW1lbnQge2NvbG9yOnZhcigtLW5ld3ZkcC1iZXN0cHJpY2UtdGV4dC1jb2xvci1wcmljZSkgIWltcG9ydGFudDt9IC4tcG9zcmVse3Bvc2l0aW9uOnJlbGF0aXZlO30gLmNlcnQtdHh0LXRyYW5zZm9ybXt0ZXh0LXRyYW5zZm9ybTp2YXIoLS1jZXJ0LXR4dC10cmFuc2Zvcm0sIG5vbmUpO30gW2hpZGRlbl0sIC5oaWRkZW4geyBkaXNwbGF5Om5vbmUgIWltcG9ydGFudDsgfSAuc2tlbGV0b24tc2xpZGVyID4gKnsgZGlzcGxheTpub25lOyB9IC5za2VsZXRvbi10eHR7IHRleHQtaW5kZW50OjEwMCU7IHdoaXRlLXNwYWNlOm5vd3JhcDsgb3ZlcmZsb3c6aGlkZGVuOyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjIxLCAyMjEsIDIyMSwgMC44KTsgYm9yZGVyLXJhZGl1czowLjVyZW07IH0gLnNrZWxldG9uLWJ0bnsgd2lkdGg6bWluKDIwcmVtLDEwMCUpOyBoZWlnaHQ6Mi41cmVtOyBib3JkZXItcmFkaXVzOjAuNXJlbTsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDIyMSwgMjIxLCAyMjEsIDAuOCk7IG1hcmdpbjphdXRvOyB9IC5za2VsZXRvbi1ibG9ja3sgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IGJhY2tncm91bmQtY29sb3I6cmdiYSgyMjEsIDIyMSwgMjIxLCAwLjgpOyB9IC5za2VsZXRvbi1zbGlkZXIsIC5za2VsZXRvbi10eHQsIC5za2VsZXRvbi1idG4sIC5za2VsZXRvbi1ibG9jayB7IHBvc2l0aW9uOnJlbGF0aXZlOyBvdmVyZmxvdzpoaWRkZW47IGRpc3BsYXk6YmxvY2s7IH0gLnNrZWxldG9uLXNsaWRlcjo6YWZ0ZXIsIC5za2VsZXRvbi10eHQ6OmFmdGVyLCAuc2tlbGV0b24tYnRuOjphZnRlciwgLnNrZWxldG9uLWJsb2NrOjphZnRlciB7IGNvbnRlbnQ6IiI7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MDsgcmlnaHQ6MDsgYm90dG9tOjA7IGxlZnQ6MDsgdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwMCUpOyBiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCg5MGRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwKSAwLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMikgMjAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSkgNjAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDApKTsgYW5pbWF0aW9uOnNoaW1tZXIgMnMgaW5maW5pdGU7IH0gLnNrZWxldG9uLXNsaWRlciB7IGJhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDUxMiA1MTInJTNFJTNDcGF0aCBkPSdNNDY0IDQ0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFYxMTJjMC0yNi41MSAyMS40OS00OCA0OC00OGg0MTZjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHYyODhjMCAyNi41MS0yMS40OSA0OC00OCA0OHpNMTEyIDEyMGMtMzAuOTI4IDAtNTYgMjUuMDcyLTU2IDU2czI1LjA3MiA1NiA1NiA1NiA1Ni0yNS4wNzIgNTYtNTYtMjUuMDcyLTU2LTU2LTU2ek02NCAzODRoMzg0VjI3MmwtODcuNTE1LTg3LjUxNWMtNC42ODYtNC42ODYtMTIuMjg0LTQuNjg2LTE2Ljk3MSAwTDIwOCAzMjBsLTU1LjUxNS01NS41MTVjLTQuNjg2LTQuNjg2LTEyLjI4NC00LjY4Ni0xNi45NzEgMEw2NCAzMzZ2NDh6JyBmaWxsPSclMjNlZWUnLyUzRSUzQy9zdmclM0UiKTsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmNlbnRlcjsgYmFja2dyb3VuZC1jb2xvcjojY2NjOyBvcGFjaXR5OjAuOTsgfSBAa2V5ZnJhbWVzIHNoaW1tZXIgeyAxMDAlIHt0cmFuc2Zvcm06dHJhbnNsYXRlWCgxMDAlKTt9IH0gQHN1cHBvcnRzICgtd2Via2l0LXRvdWNoLWNhbGxvdXQ6bm9uZSkgeyAuc2tlbGV0b24tc2xpZGVyOjphZnRlciwgLnNrZWxldG9uLXR4dDo6YWZ0ZXJ7IGFuaW1hdGlvbjpub25lOyB9IH0gLmNvbnRlbnQtc2tlbGV0b24geyBiYWNrZ3JvdW5kOiNlZWU7IGJvcmRlci1yYWRpdXM6MC41cmVtOyBvdmVyZmxvdzpoaWRkZW47IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyBtYXgtd2lkdGg6NDAwcHg7IHBvc2l0aW9uOnJlbGF0aXZlOyB9IC5jb250ZW50LXNrZWxldG9uLnJlY3RhbmdsZSB7IGFzcGVjdC1yYXRpbzp2YXIoLS1yYXRpbywgMTYvOSk7IH0gLmNvbnRlbnQtc2tlbGV0b24udGV4dCB7IGhlaWdodDphdXRvOyBwYWRkaW5nOjFyZW07IH0gLmNvbnRlbnQtc2tlbGV0b24udGV4dDo6YmVmb3JlLCAuY29udGVudC1za2VsZXRvbi50ZXh0OjphZnRlciB7IGNvbnRlbnQ6IiI7IGRpc3BsYXk6YmxvY2s7IGhlaWdodDoxcmVtOyBiYWNrZ3JvdW5kOiNkZGQ7IG1hcmdpbi1ib3R0b206MC41cmVtOyBib3JkZXItcmFkaXVzOjAuMjVyZW07IH0gLmNvbnRlbnQtc2tlbGV0b24udGV4dDo6YWZ0ZXIgeyB3aWR0aDo3MCU7IH0gLmNvbnRlbnQtc2tlbGV0b24uYWN0aXZlIHsgYmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoOTBkZWcsICNmOWY5ZjkgMjUlLCAjZGVkZWRlIDUwJSwgI2Y5ZjlmOSA3NSUpOyBiYWNrZ3JvdW5kLXNpemU6MjAwJSAxMDAlOyBhbmltYXRpb246c2hpbW1lciAycyBpbmZpbml0ZSBsaW5lYXI7IH0gQGtleWZyYW1lcyBzaGltbWVyIHsgMCUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOjIwMCUgMDsgfSAxMDAlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjotMjAwJSAwOyB9IH0gLmNvbnRlbnQtc2tlbGV0b24uZGVidWc6OmFmdGVyIHsgY29udGVudDphdHRyKGRhdGEtYmxvY2spICIgfCAiIGF0dHIoZGF0YS1zb3VyY2UpICIgfCAiIGF0dHIoZGF0YS1nZW5lcmF0ZWQtYXQpOyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjRweDsgbGVmdDo0cHg7IHJpZ2h0OjRweDsgZm9udC1zaXplOjAuN3JlbTsgZm9udC1mYW1pbHk6bW9ub3NwYWNlLCBzYW5zLXNlcmlmOyBjb2xvcjojZmZmOyBiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMC42KTsgcGFkZGluZzoycHggNHB4OyBib3JkZXItcmFkaXVzOjRweDsgei1pbmRleDoxMDsgcG9pbnRlci1ldmVudHM6bm9uZTsgfSBib2R5IHsgd2lkdGg6YXV0bzsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgZm9udC1zaXplOjFyZW07IGZvbnQtZmFtaWx5OnZhcigtLWZvbnQtdGV4dC1tb2IpOyBjb2xvcjp2YXIoLS1kZWZhdWx0LWJsYWNrKTsgZm9udC13ZWlnaHQ6dmFyKC0tZm9udC10ZXh0LXdlaWdodCk7IH0gdWwgeyBsaXN0LXN0eWxlOm5vbmU7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBsaXN0LXN0eWxlLXBvc2l0aW9uOmluaXRpYWw7IGxpc3Qtc3R5bGUtaW1hZ2U6aW5pdGlhbDsgfSAucmVzcG9uc2l2ZS1lZGl0b3IgdWwgeyBsaXN0LXN0eWxlOmluaGVyaXQ7IGxpc3Qtc3R5bGUtdHlwZTppbmhlcml0OyBsaXN0LXN0eWxlLXBvc2l0aW9uOmluaGVyaXQ7IGxpc3Qtc3R5bGUtaW1hZ2U6aW5oZXJpdDsgfSBzdmcsIHN2Zy5pY29ueyAtLWljb24tc2l6ZTpjYWxjKHZhcigtLWZzLCB2YXIoLS1mczApKSAvIHZhcigtLXJhdGlvKSk7IGZpbGw6dmFyKC0tdHh0LWNvbG9yLCB2YXIoLS1ibGFjaykpOyB3aWR0aDp2YXIoLS1pY29uLXNpemUpOyBoZWlnaHQ6dmFyKC0taWNvbi1zaXplKTsgfSBzdmcuYXV0aG9yaXplZC1ibGFja3tmaWxsOiMyODI4MjghaW1wb3J0YW50O30gc3ZnLmF1dGhvcml6ZWQtYmxhY2sta2lhe2ZpbGw6IzA1MTQxRiFpbXBvcnRhbnQ7fSBzdmcuYXV0aG9yaXplZC1yZWR7ZmlsbDojRkYwMDAwIWltcG9ydGFudDt9IHN2Zy5hdXRob3JpemVkLXdoaXRle2ZpbGw6I0ZGRkZGRiFpbXBvcnRhbnQ7fSAuYXV0aG9yaXplZC1yZWQtd2hpdGUtcGxheS1idG57YmFja2dyb3VuZDpyYWRpYWwtZ3JhZGllbnQoI0ZGRkZGRiA1MCUsdHJhbnNwYXJlbnQgNTAlKTt9IHN2Zy5vZ2NvbG9yLWZhY2Vib29re2ZpbGw6IzQyNjdCMiFpbXBvcnRhbnQ7fSBzdmcub2djb2xvci10d2l0dGVye2ZpbGw6IzFEQTFGMiFpbXBvcnRhbnQ7fSBzdmcub2djb2xvci14LXR3aXR0ZXJ7ZmlsbDojMTQxNzFBIWltcG9ydGFudDt9IHN2Zy5vZ2NvbG9yLXgtdHdpdHRlci13aGl0ZXtmaWxsOiNGRkZGRkYhaW1wb3J0YW50O30gc3ZnLm9nY29sb3ItbGlua2VkaW57ZmlsbDojMDA3N0I1IWltcG9ydGFudDt9IHN2Zy5vZ2NvbG9yLWJsb2dnZXJ7ZmlsbDojRkY1NzIyIWltcG9ydGFudDt9IHN2Zy5vZ2NvbG9yLXBpbnRlcmVzdHtmaWxsOiNFNjAwMjMhaW1wb3J0YW50O30gc3ZnLm9nY29sb3IteW91dHViZXtmaWxsOiNGRjAwMDAhaW1wb3J0YW50OyBiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudCgjRkZGRkZGIDUwJSx0cmFuc3BhcmVudCA1MCUpO30gc3ZnLm9nY29sb3ItaW5zdGFncmFte2ZpbGw6IzgzM0FCNCFpbXBvcnRhbnQ7fSBzdmcub2djb2xvci10aWt0b2t7ZmlsbDojZmYwMDUwIWltcG9ydGFudDt9IC5mYWNlYm9vay1vZ2ljb24tdHdlYWtze2hlaWdodDoyNHB4IWltcG9ydGFudDttYXJnaW4tdG9wOjJweCFpbXBvcnRhbnQ7fSAjZm9vdGVyIC5mYWNlYm9vay1vZ2ljb24tdHdlYWtze2hlaWdodDoyM3B4IWltcG9ydGFudDttYXJnaW4tdG9wOjBweCFpbXBvcnRhbnQ7fSAuaW5zdGFncmFtLW9naWNvbi10d2Vha3N7aGVpZ2h0OjI4cHghaW1wb3J0YW50O21hcmdpbi10b3A6MHB4IWltcG9ydGFudDt9ICNmb290ZXIgLmluc3RhZ3JhbS1vZ2ljb24tdHdlYWtze2hlaWdodDoyOXB4IWltcG9ydGFudDttYXJnaW4tdG9wOi00cHghaW1wb3J0YW50O30gc3ZnLmN1c3RvbW1lZGlhLWNvbG9ycGlja2Vye2ZpbGw6dmFyKC0tYWRtaW4tc29jaWFsLWN1c3RvbS1jb2xvci1waWNrZXItdGV4dCkhaW1wb3J0YW50O30gLnNvY2lhbC1tZWRpYV9fY29udGFpbmVyIC5iZy1hdXRob3JpemVkLWJsYWNre2JhY2tncm91bmQtY29sb3I6IzI4MjgyOCFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmJnLWF1dGhvcml6ZWQtYmxhY2sta2lhe2JhY2tncm91bmQtY29sb3I6IzA1MTQxRiFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmJnLWF1dGhvcml6ZWQtcmVke2JhY2tncm91bmQtY29sb3I6I0ZGMDAwMCFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmJnLWF1dGhvcml6ZWQtd2hpdGV7YmFja2dyb3VuZC1jb2xvcjojRkZGRkZGIWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYmctb2djb2xvci1mYWNlYm9va3tiYWNrZ3JvdW5kLWNvbG9yOiMzYTU5OTghaW1wb3J0YW50O30gLnNvY2lhbC1tZWRpYV9fY29udGFpbmVyIC5iZy1vZ2NvbG9yLXR3aXR0ZXJ7YmFja2dyb3VuZC1jb2xvcjojMDBhY2VkIWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYmctb2djb2xvci14LXR3aXR0ZXJ7YmFja2dyb3VuZC1jb2xvcjojMTQxNzFBIWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYmctb2djb2xvci14LXR3aXR0ZXItd2hpdGV7YmFja2dyb3VuZC1jb2xvcjojRkZGRkZGIWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYmctb2djb2xvci1saW5rZWRpbntiYWNrZ3JvdW5kLWNvbG9yOiMwMDc3QjUhaW1wb3J0YW50O30gLnNvY2lhbC1tZWRpYV9fY29udGFpbmVyIC5iZy1vZ2NvbG9yLWJsb2dnZXJ7YmFja2dyb3VuZC1jb2xvcjojRkY1NzIyIWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYmctb2djb2xvci1waW50ZXJlc3R7YmFja2dyb3VuZC1jb2xvcjojRTYwMDIzIWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYmctb2djb2xvci15b3V0dWJle2JhY2tncm91bmQtY29sb3I6I0ZGMDAwMCFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmJnLW9nY29sb3ItaW5zdGFncmFte2JhY2tncm91bmQtY29sb3I6I2YyMzk5NSFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmJnLW9nY29sb3ItdGlrdG9re2JhY2tncm91bmQtY29sb3I6I2ZmMDA1MCFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmJnLWN1c3RvbW1lZGlhLWNvbG9ycGlja2Vye2JhY2tncm91bmQtY29sb3I6dmFyKC0tYWRtaW4tc29jaWFsLWN1c3RvbS1jb2xvci1waWNrZXItdGV4dCkhaW1wb3J0YW50O30gLnNvY2lhbC1tZWRpYV9fY29udGFpbmVyIC5jLWF1dGhvcml6ZWQtYmxhY2t7Y29sb3I6IzI4MjgyOCFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmMtYXV0aG9yaXplZC1ibGFjay1raWF7Y29sb3I6IzA1MTQxRiFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmMtYXV0aG9yaXplZC1yZWR7Y29sb3I6I0ZGMDAwMCFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmMtYXV0aG9yaXplZC13aGl0ZXtjb2xvcjojRkZGRkZGIWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYy1vZ2NvbG9yLWZhY2Vib29re2NvbG9yOiMzYTU5OTghaW1wb3J0YW50O30gLnNvY2lhbC1tZWRpYV9fY29udGFpbmVyIC5jLW9nY29sb3ItdHdpdHRlcntjb2xvcjojMDBhY2VkIWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYy1vZ2NvbG9yLXgtdHdpdHRlcntjb2xvcjojMTQxNzFBIWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYy1vZ2NvbG9yLXgtdHdpdHRlci13aGl0ZXtjb2xvcjojRkZGRkZGIWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYy1vZ2NvbG9yLWxpbmtlZGlue2NvbG9yOiMwMDc3QjUhaW1wb3J0YW50O30gLnNvY2lhbC1tZWRpYV9fY29udGFpbmVyIC5jLW9nY29sb3ItYmxvZ2dlcntjb2xvcjojRkY1NzIyIWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYy1vZ2NvbG9yLXBpbnRlcmVzdHtjb2xvcjojRTYwMDIzIWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYy1vZ2NvbG9yLXlvdXR1YmV7Y29sb3I6I0ZGMDAwMCFpbXBvcnRhbnQ7IGJhY2tncm91bmQ6cmFkaWFsLWdyYWRpZW50KCNGRkZGRkYgNTAlLHRyYW5zcGFyZW50IDUwJSk7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmMtb2djb2xvci1pbnN0YWdyYW17Y29sb3I6I2YyMzk5NSFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmMtb2djb2xvci10aWt0b2t7Y29sb3I6I2ZmMDA1MCFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmMtY3VzdG9tbWVkaWEtY29sb3JwaWNrZXJ7Y29sb3I6dmFyKC0tYWRtaW4tc29jaWFsLWN1c3RvbS1jb2xvci1waWNrZXItdGV4dCkhaW1wb3J0YW50O30gLm5vdGUtYm94eyBkaXNwbGF5OmJsb2NrOyBib3JkZXItcmFkaXVzOjAuMjVyZW07IH0gLm5vdGUtc3VjY2Vzc3sgY29sb3I6IzE1NTcyNDsgYmFja2dyb3VuZC1jb2xvcjojZDRlZGRhOyBib3JkZXItY29sb3I6IzE1NTcyNDsgYm9yZGVyLXdpZHRoOnZhcigtLWJvcmRlci10aGluKTsgfSAubm90ZS1lcnJvcnsgY29sb3I6I2ZmZmZmZjsgYmFja2dyb3VuZC1jb2xvcjojZmYwMDAwOyBib3JkZXItY29sb3I6I2ZmMDAwMDsgYm9yZGVyLXdpZHRoOnZhcigtLWJvcmRlci10aGluKTsgfSB1bC5jaGVja2xpc3QgbGk6YmVmb3JleyBjb250ZW50OiIiOyBib3JkZXItbGVmdDowLjJyZW0gc29saWQ7IGJvcmRlci1ib3R0b206MC4ycmVtIHNvbGlkOyB3aWR0aDowLjdyZW07IGhlaWdodDowLjRyZW07IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB0cmFuc2Zvcm06cm90YXRlKC00NWRlZyk7IG1hcmdpbi1yaWdodDoxcmVtOyB9IHVsLmNoZWNrbGlzdCBsaXsgbWFyZ2luLXRvcDp2YXIoLS1zcGFjZSk7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyB9IC5pbnZhbGlkID4gOmlzKGlucHV0LHNlbGVjdCx0ZXh0YXJlYSl7IGJhY2tncm91bmQtY29sb3I6I2ZhZDZkYzsgfSAuLWJnLXdoaXRleyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXdoaXRlKTsgfSAuLWJnLWdyYXl7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tZ3JheSk7IGNvbG9yOnZhcigtLXdoaXRlKTsgfSAuLWJnLWRhcmstZ3JheXsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1kYXJrLWdyYXkpOyBjb2xvcjp2YXIoLS13aGl0ZSk7IH0gLi1iZy1ibGFjay1ncmF5eyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJsYWNrLWdyYXkpOyBjb2xvcjp2YXIoLS13aGl0ZSk7IH0gLi1iZy1ibGFja3sgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1ibGFjayk7IGNvbG9yOnZhcigtLXdoaXRlKTsgfSAuLWJnLWxpZ2h0eyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWxpZ2h0KTsgY29sb3I6dmFyKC0tYmxhY2spOyB9IC4tYmctbGlnaHQtZ3JheXsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1saWdodC1ncmF5KTsgY29sb3I6dmFyKC0tYmxhY2spOyB9IC4tYmctbm9uZXtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O30gLi1yb3VuZHsgYm9yZGVyLXJhZGl1czowLjNyZW07IH0gLnB1c2gtZG93bnsgcG9zaXRpb246YWJzb2x1dGU7IGJvdHRvbTowcHg7IH0gLnByaWNlLW1haW57IGNvbG9yOiNmZjAwMDA7IH0gLnByaWNlLXN0cmlrZXsgY29sb3I6Izk5OTsgdGV4dC1kZWNvcmF0aW9uOmxpbmUtdGhyb3VnaDsgfSAuZm9ybWF0LXByaWNleyBwb3NpdGlvbjpyZWxhdGl2ZTsgbWF4LXdpZHRoOmZpdC1jb250ZW50OyBtYXJnaW4tcmlnaHQ6MC43cmVtOyBsaW5lLWhlaWdodDoxZW07IH0gOmlzKC5FTkdMSVNILFtkYXRhLWxhbmc9ImVuIl0pIC5mb3JtYXQtcHJpY2V7IG1hcmdpbi1sZWZ0OjAuNnJlbTsgbWFyZ2luLXJpZ2h0OnVuc2V0OyB9IC5mb3JtYXQtcHJpY2U6YWZ0ZXJ7IGNvbnRlbnQ6IiQiOyBmb250LXNpemU6bWF4KDAuNXJlbSwwLjZlbSk7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6dmFyKC0tZm9ybWF0LXBpY2Utc2lnbi1wb3NpdGlvbiwwKTsgcmlnaHQ6LTAuNmVtOyBsaW5lLWhlaWdodDppbmhlcml0OyB9IC5maW5hbC1wcmljZSAuZm9ybWF0LXByaWNlOmFmdGVyeyBtYXJnaW4tdG9wOi01cHg7IH0gLmZpbmFsLXByaWNlIC5mb3JtYXQtcHJpY2V7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyBwYWRkaW5nLXJpZ2h0OjJweDsgfSA6aXMoLkVOR0xJU0gsW2RhdGEtbGFuZz0iZW4iXSkgLmZvcm1hdC1wcmljZTphZnRlcnsgbGVmdDotMC43ZW07IHJpZ2h0OnVuc2V0OyB9IC5wcmljZS1lbjpiZWZvcmV7IGNvbnRlbnQ6IiQiOyB9IDppcygucHJpY2UtZW4pOmJlZm9yZXsgZm9udC1zaXplOjAuNmVtOyBwb3NpdGlvbjpyZWxhdGl2ZTsgdG9wOi0wLjVlbTsgfSAucHJpY2UtZnI6YWZ0ZXJ7IGNvbnRlbnQ6IiAkIjsgfSA6aXMoLnByaWNlLWZyKTphZnRlcnsgZm9udC1zaXplOjAuNmVtOyBwb3NpdGlvbjpyZWxhdGl2ZTsgdG9wOi0wLjVlbTsgfSAuc2NyYXRjaC1vdmVyLCAuc2NyYXRjaC1sZWFzZXsgcG9zaXRpb246cmVsYXRpdmU7IH0gLnNjcmF0Y2gtb3ZlcjpiZWZvcmUsIC5zY3JhdGNoLWxlYXNlOmJlZm9yZXsgYmFja2dyb3VuZDpub25lIHJlcGVhdCBzY3JvbGwgMCAwIGJsYWNrOyBjb250ZW50OiIgIjsgaGVpZ2h0OjJweDsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDo0NSU7IC1tb3otdHJhbnNmb3JtOnJvdGF0ZSg3ZGVnKTsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDdkZWcpOyB0cmFuc2Zvcm06cm90YXRlKDdkZWcpOyB3aWR0aDo5MCU7IH0gLkVOR0xJU0ggOmlzKC5zY3JhdGNoLWxlYXNlLC5zY3JhdGNoLW92ZXIpOmhhcyguZm9ybWF0LXByaWNlKTpiZWZvcmV7IG1hcmdpbi1sZWZ0OjAuNXJlbTsgfSAuYmx1ci1vdmVyLCAuYmx1ci1sZWFzZSB7IC13ZWJraXQtZmlsdGVyOmJsdXIoMC4xNWVtKTsgLW1vei1maWx0ZXI6Ymx1cigwLjE1ZW0pOyAtbXMtZmlsdGVyOmJsdXIoMC4xNWVtKTsgLW8tZmlsdGVyOmJsdXIoMC4xNWVtKTsgZmlsdGVyOmJsdXIoMC4xNWVtKTsgfSAub3V0LXZpZXd7IHBvc2l0aW9uOmZpeGVkOyB0b3A6LTIwcHg7IGNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsMCk7IHotaW5kZXg6MDsgfSAudG9wLWZpeGVkIHsgcG9zaXRpb246Zml4ZWQ7IHRvcDozLjJyZW07IGxlZnQ6MDsgei1pbmRleDoxMDA7IGFsaWduLWl0ZW1zOmNlbnRlcjsgfSAuZml4ZWQtd3JhcHBlci50b3AtZml4ZWQgeyB3aWR0aDoxMDAlOyBwYWRkaW5nOnZhcigtLXMpOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWxpZ2h0LWdyYXkpOyBib3JkZXItYm90dG9tLXdpZHRoOjFweDsgYm9yZGVyLWJvdHRvbS1jb2xvcjojMDAwOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IGRpc3BsYXk6ZmxleDsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgfSAuZml4ZWQtd3JhcHBlci50b3AtZml4ZWQgPiAucHJvbW9CVE4geyBtYXJnaW46MDsgd2lkdGg6OTB2dzsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgfSAuZml4ZWQtd3JhcHBlci50b3AtZml4ZWQgLmN0YS1sYWJlbHsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLm1haW4tY29sb3JzeyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXRhYi1jb2xvcik7IGNvbG9yOnZhcigtLXRhYi10ZXh0LWNvbG9yKTsgfSAucHJvbW8tY29sb3JzeyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXRhYi1jb2xvcik7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tcHJvbW8tY29sb3IpOyBjb2xvcjp2YXIoLS10YWItdGV4dC1jb2xvcik7IGNvbG9yOnZhcigtLXByb21vLXRleHQtY29sb3IpOyB9IC5idG57IC0tYnRuLWJnLWNvbDp2YXIoLS10YWItY29sb3IpOyAtLWJ0bi10eHQtY29sOnZhcigtLXRhYi10ZXh0LWNvbG9yKTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1idG4tYmctY29sKTsgY29sb3I6dmFyKC0tYnRuLXR4dC1jb2wpOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJ0bi1icmQtY29sLCB2YXIoLS1idG4tdHh0LWNvbCkpOyBwYWRkaW5nOjAuNXJlbTsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAuYnRuLWRhcmstZ3JleSwgLmNiRGFya0dyZXl7IC0tYnRuLWJnLWNvbDojMzMzOyAtLWJ0bi10eHQtY29sOiNmZmY7IH0gW3JvbGU9ImJ1dHRvbiJdeyBjdXJzb3I6cG9pbnRlcjsgfSAuYnRuLXByb21veyAtLXR4dC1jb2xvcjp2YXIoLS1wcm9tby10ZXh0LWNvbG9yLCB2YXIoLS10YWItdGV4dC1jb2xvcikpOyBjb2xvcjp2YXIoLS10eHQtY29sb3IpOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXRhYi1jb2xvcik7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tcHJvbW8tY29sb3IpOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLXByb21vLXRleHQtY29sb3IpOyBwb3NpdGlvbjpyZWxhdGl2ZTsgYWxpZ24taXRlbXM6Y2VudGVyOyBib3JkZXI6bm9uZTsgfSAuYnRuLWN0YTphZnRlcnsgY29udGVudDoiXGYwNTQiOyBmb250LXN0eWxlOm5vcm1hbDsgdGV4dC1kZWNvcmF0aW9uOmluaGVyaXQ7IHBvc2l0aW9uOmFic29sdXRlOyByaWdodDoxcmVtOyBmb250LWZhbWlseTonRm9udCBBd2Vzb21lIDUgUHJvJzsgZm9udC13ZWlnaHQ6OTAwOyB9IC5idG4tbWFpbnsgLS1idG4tYmctY29sOnZhcigtLXRhYi1jb2xvcik7IC0tYnRuLXR4dC1jb2w6dmFyKC0tdGFiLXRleHQtY29sb3IpOyAtLWJ0bi1icmQtY29sOnZhcigtLXRhYi10ZXh0LWNvbG9yLCB2YXIoLS10YWItdGV4dC1jb2xvcikpOyB9IC5idG4tbWFpbjIsIC5idG4tbWFpbjpob3ZlcnsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1tZW51LWhvdmVyLWJnLWNvbG9yKTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1tZW51LWhvdmVyLXRleHQtY29sb3IpOyBjb2xvcjp2YXIoLS1tZW51LWhvdmVyLXRleHQtY29sb3IpOyB9IC5idG4tYmxhY2t7IGJhY2tncm91bmQtY29sb3I6IzAwMDsgY29sb3I6I2ZmZjsgLS10eHQtY29sb3I6I2ZmZjsgfSAuYnRuLWxpZ2h0eyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7IGJvcmRlcjoxcHggc29saWQgI2FhYTsgY29sb3I6Izg4ODsgfSAuYnRuLXN1Y2Nlc3N7IC0tYnRuLWJnLWNvbDojNGNhZjUwOyAtLWJ0bi10eHQtY29sOiNmZmY7IH0gLmJ0bi13YXJuaW5neyAtLWJ0bi1iZy1jb2w6I2ZmOTgwMDsgLS1idG4tdHh0LWNvbDojZmZmOyB9IC5ibnQtZGlzYWJsZWQsIC5idG5bZGlzYWJsZWRdIHsgY29sb3I6dmFyKC0tZ3JheSk7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tbGlnaHQtZ3JheSk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tZ3JheSk7IH0gLmJ0bi1lbWFpbC1tZSwgLmJ0bi10ZXh0LW1leyBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgfSAuYnRuLWVtYWlsLW1lOmJlZm9yZXsgY29udGVudDoiXGYwZTAiOyBmb250LXdlaWdodDo5MDA7IH0gLmJ0bi10ZXh0LW1lOmJlZm9yZXsgY29udGVudDoiXGYzY2QiOyBmb250LXNpemU6eC1sYXJnZTsgZm9udC13ZWlnaHQ6OTAwOyB9IC5idG4tZW1haWwtbWU6YmVmb3JlLCAuYnRuLXRleHQtbWU6YmVmb3JleyBmb250LWZhbWlseTonRm9udCBBd2Vzb21lIDUgUHJvJzsgbWFyZ2luLXJpZ2h0OjVweDsgcG9zaXRpb246cmVsYXRpdmU7IHRvcDotMXB4OyB9IGJ1dHRvbi5yb3VuZC1idXR0b257IGFsbDppbmhlcml0OyBib3JkZXItcmFkaXVzOjUwJTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS10YWItdGV4dC1jb2xvcik7IGZpbGw6dmFyKC0tdGFiLWNvbG9yKTsgcGFkZGluZzowLjNyZW07IGN1cnNvcjpwb2ludGVyOyB9IGJ1dHRvbi5pY29uLWJ1dHRvbnsgY29sb3I6dmFyKC0tcHJvbW8tYnRuLWNvbG9yKTsgYmFja2dyb3VuZC1jb2xvcjojZmZmOyBib3JkZXI6bm9uZTsgcGFkZGluZzowLjVyZW07IHdpZHRoOmF1dG87IH0gLngtY2xvc2V7IGJhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgYXJpYS1oaWRkZW49J3RydWUnIGZvY3VzYWJsZT0nZmFsc2UnIHZpZXdCb3g9JzAgMCAxMCAxMCclM0UlM0NzdHlsZSUzRS52ZXJ0JTdCZmlsbDolMjMwMDA7JTdEJTNDL3N0eWxlJTNFJTNDcmVjdCBjbGFzcz0ndmVydCcgaGVpZ2h0PSc4JyB3aWR0aD0nMicgeT0nMScgeD0nNCclM0UlM0MvcmVjdCUzRSUzQ3JlY3QgaGVpZ2h0PScyJyB3aWR0aD0nOCcgeT0nNCcgeD0nMSclM0UlM0MvcmVjdCUzRSUzQy9zdmclM0UiKTsgYmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDsgYm9yZGVyOm5vbmU7IHdpZHRoOjEuNXJlbTsgaGVpZ2h0OjEuNXJlbTsgdHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyk7IGN1cnNvcjpwb2ludGVyOyB9IDpub3QoLmNvbXBsZXRlZCkucmlwcGxlIHsgcG9zaXRpb246cmVsYXRpdmU7IG92ZXJmbG93OmhpZGRlbjsgdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsIDAsIDApOyB9IDpub3QoLmNvbXBsZXRlZCkucmlwcGxlOmFmdGVyIHsgY29udGVudDoiIjsgZGlzcGxheTpibG9jazsgcG9zaXRpb246YWJzb2x1dGU7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyB0b3A6MDsgbGVmdDowOyBwb2ludGVyLWV2ZW50czpub25lOyBiYWNrZ3JvdW5kLWltYWdlOnJhZGlhbC1ncmFkaWVudChjaXJjbGUsIHJnYigwLCAwLCAwKSAxMCUsIHRyYW5zcGFyZW50IDEwLjAxJSk7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYmFja2dyb3VuZC1wb3NpdGlvbjo1MCU7IHRyYW5zZm9ybTpzY2FsZSgxMCwxMCk7IG9wYWNpdHk6MDsgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjVzLCBvcGFjaXR5IDFzOyB9IDpub3QoLmNvbXBsZXRlZCkucmlwcGxlOmFjdGl2ZTphZnRlciB7IHRyYW5zZm9ybTpzY2FsZSgwLDApOyBvcGFjaXR5Oi4yOyB0cmFuc2l0aW9uOjBzOyB9IC5sb2dvYXJlYSB7IG1pbi1oZWlnaHQ6N3JlbTsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2VlZTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1hZG1pbi1nZW5lcmFsLWhlYWRlci1iZy1jb2xvcik7IH0gYSA+IDp3aGVyZSg6aXMoc3ZnLCAuZmEsIC5mYXMpOmZpcnN0LWNoaWxkOm5vdCg6b25seS1jaGlsZCkpeyBtYXJnaW4tcmlnaHQ6MC42cmVtOyB9IC5wcm9tb1RvcEJ0biA6aXMoYSxidXR0b24pIHsgLS1mczp2YXIoLS1mczEpOyAtLXR4dC1jb2xvcjp2YXIoLS10b3AtcHJvbW8tYnRuLXR4dCwgdmFyKC0tdG9wLXByb21vLWJ0bi10eHQtY29sb3IpKTsgYm9yZGVyLXJhZGl1czo0cHg7IGJvcmRlci10b3Atd2lkdGg6MXB4OyBib3JkZXItYm90dG9tLXdpZHRoOjFweDsgYm9yZGVyLWNvbG9yOiNmM2YzZjM7IGhlaWdodDozLjJyZW07IGZvbnQtc2l6ZTp2YXIoLS1mczEpOyBmb250LXdlaWdodDpib2xkOyBkaXNwbGF5OmZsZXg7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IGFsaWduLWl0ZW1zOmNlbnRlcjsgYmFja2dyb3VuZDp2YXIoLS10b3AtcHJvbW8tYnRuLWJnLCB2YXIoLS10b3AtcHJvbW8tYnRuLWJnLWNvbG9yKSk7IGNvbG9yOnZhcigtLXRvcC1wcm9tby1idG4tdHh0LCB2YXIoLS10b3AtcHJvbW8tYnRuLXR4dC1jb2xvcikpOyB9IC5wcm9tb1RvcEJ0bi5kZWFsZXJMaW5lQnV0dG9uIDppcyhhLGJ1dHRvbil7IC0tdHh0LWNvbG9yOnZhcigtLWFkbWluLWdlbmVyYWwtdGV4dC11cy1kZWFsZXItbGluZS10ZXh0LWNvbG9yKTsgYmFja2dyb3VuZDp2YXIoLS1hZG1pbi1nZW5lcmFsLXRleHQtdXMtZGVhbGVyLWxpbmUtYmctY29sb3IpOyBjb2xvcjp2YXIoLS1hZG1pbi1nZW5lcmFsLXRleHQtdXMtZGVhbGVyLWxpbmUtdGV4dC1jb2xvcik7IGJvcmRlci1jb2xvcjp2YXIoLS1hZG1pbi1nZW5lcmFsLXRleHQtdXMtZGVhbGVyLWxpbmUtdGV4dC1jb2xvcik7IHdpZHRoOjEwMCU7IH0gOmlzKC5wcm9tb1RvcEJ0bixsYWJlbCkuZmxvYXRpbmd7IHBvc2l0aW9uOmZpeGVkOyBib3R0b206MS41cmVtOyByaWdodDoxLjVyZW07IHotaW5kZXg6MTA7IH0gLnByb21vVG9wQnRuLmZsb2F0aW5nLndpdGhUb2FzdGVyIHtib3R0b206NnJlbTt9IC5wcm9tb1RvcEJ0bi5mbG9hdGluZyA6aXMoYSxidXR0b24peyAtLWZzOnZhcigtLWZzNSk7IHBhZGRpbmc6MXJlbTsgYm9yZGVyLXJhZGl1czo1MCU7IGJvcmRlci13aWR0aDoxcHg7IGhlaWdodDp1bnNldDsgfSAucHJvbW9Ub3BCdG4uZmxvYXRpbmcgOmlzKGEsYnV0dG9uKSBzcGFuIHtkaXNwbGF5Om5vbmU7fSAuaWNvbi1oZWFkaW5nIHNwYW4uZmF7IGZvbnQtc2l6ZTppbmhlcml0OyB3aWR0aDoxZW07IHBhZGRpbmc6MC4yZW07IGhlaWdodDoxZW07IHRleHQtYWxpZ246Y2VudGVyOyBib3JkZXItcmFkaXVzOjUwJTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ibGFjayk7IGNvbG9yOnZhcigtLXdoaXRlKTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1ibGFjayk7IGJveC1zaXppbmc6Y29udGVudC1ib3g7IH0gLmljb24taGVhZGluZyAuc2Vjb25kYXJ5VGV4dHsgY29sb3I6Izc1NzU3NTsgZm9udC1zaXplOjAuNzVlbTsgfSAuZ3JvdXBUYWJzID4gKnsgY3Vyc29yOnBvaW50ZXI7IGZvbnQtc2l6ZTpjYWxjKDEuMnJlbSArICgyMCAtIDE4KSAqICgoMTAwdncgLSAzMjBweCkgLyAoMTEwMCAtIDMwMCkpKTsgfSAuZ3JvdXBUYWJzID4gKjpob3ZlcnsgYmFja2dyb3VuZC1jb2xvcjojZWZlZmVmOyB9IC5ncm91cFRhYnMgLnRhYi1sYWJlbCwgLm5ld0NhclNsaWRlciAuY2Fyb3VzZWxUaXRsZXsgY29sb3I6dmFyKC0tbmV3LXZlaGljbGUtY2Fyb3VzZWwtdHh0LWNvbG9yLCB2YXIoLS1kZWZhdWx0LWJsYWNrKSk7IH0gLmdyb3VwVGFicyAuYWN0aXZlVGFiIC50YWItbGFiZWx7IGNvbG9yOnZhcigtLW5ldy12ZWhpY2xlLWNhcm91c2VsLXR4dC1jb2xvciwgdmFyKC0tZGVmYXVsdC1ibGFjaykpOyBib3JkZXItYm90dG9tOjNweCBzb2xpZDsgYm9yZGVyLWJvdHRvbS1jb2xvcjojMDAwOyBib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLXRhYi1jb2xvcik7IH0gLmNhclNsaWRlcnsgZGlzcGxheTpmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyB9IC5jYXJTbGlkZXIgPiAqeyB3aWR0aDptaW4oOTByZW0sMTAwJSk7IH0gLmNhclNsaWRlci4tYmctbGlnaHQtZ3JheSA+ICp7IG1heC13aWR0aDptaW4oNzVyZW0sMTAwJSk7IH0gLm5ld0NhckNhcmR7IGhlaWdodDoxMDAlOyBtaW4taGVpZ2h0OjI3cmVtOyBib3JkZXI6MXB4IHNvbGlkICNiYmI7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgcG9zaXRpb246cmVsYXRpdmU7IGJhY2tncm91bmQtY29sb3I6dmFyKC0td2hpdGUpOyB9IC5uZXdDYXJDYXJkIGltZ3sgd2lkdGg6MTAwJTsgbWFyZ2luLXRvcDotMXJlbTsgcG9zaXRpb246cmVsYXRpdmU7IH0gLmNhclBheW1lbnRXcmFwcGVyeyB3aWR0aDptaW4oMTAwJSwyNXJlbSk7IG1pbi1oZWlnaHQ6NXJlbTsgfSAuY2FyUGF5bWVudFdyYXBwZXIgLnBheW1lbnRCbG9ja3sgaGVpZ2h0OjEwMCU7IH0gLnBheW1lbnRzRGlzYWJsZWQgLm5ld0NhckNhcmR7IG1pbi1oZWlnaHQ6MjJyZW07IH0gLnZlaGljbGVDYXJvdXNlbCAubmV3Q2FyQ2FyZHsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS13aGl0ZSk7IHdpZHRoOjIzLjdyZW07IGJvcmRlcjoxcHggc29saWQgI2JiYjsgbWFyZ2luOjAgMC40cmVtOyBoZWlnaHQ6MTAwJSB9IC5uZXdDYXJDYXJkIC5wcm9tby1iYWRnZXsgaGVpZ2h0OmZpdC1jb250ZW50OyBtaW4td2lkdGg6NnJlbTsgfSAubmV3Q2FyQ2FyZDpob3ZlcnsgYm94LXNoYWRvdzowIDAgMTBweCAycHggdmFyKC0tbWlkLWdyYXkpOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWxpZ2h0LWdyYXkpOyB9IC5uZXdDYXJDYXJkOmhvdmVyIC5pblN0b2NrTGluayB7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgfSAubmV3Q2FyQ2FyZCAuY2FyZC1ib2R5eyBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgaGVpZ2h0OjEycmVtOyBvdmVyZmxvdzpoaWRkZW47IH0gLm5ld0NhckNhcmQgPiAuYm94LWxjeyBtYXJnaW4tdG9wOjA7IHBhZGRpbmctdG9wOjA7IHBhZGRpbmctYm90dG9tOjA7IH0gLm5ld0NhckNhcmQgPiAuYm94LWxjOmZpcnN0LWNoaWxkeyBwYWRkaW5nLXRvcDowLjVyZW07IG1heC1oZWlnaHQ6MTByZW07IH0gLm5ld0NhckNhcmQgLmRlc2t0b3BQYXltZW50eyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAubmV3Q2FyQ2FyZCBzcGFuLnBheW1lbnRDYWxjQnRuLmRlc2t0b3B7IHBvc2l0aW9uOmFic29sdXRlOyByaWdodDo3JTsgZm9udC1zaXplOjEuN2VtOyBjdXJzb3I6cG9pbnRlcjsgfSAudXNlZENhclNsaWRleyBkaXNwbGF5OmJsb2NrOyBib3JkZXI6MXB4IHNvbGlkICNiYmI7IGJhY2tncm91bmQtY29sb3I6I2ZmZjsgaGVpZ2h0OjEwMCU7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfSAudXNlZENhclNsaWRlICp7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfSAudXNlZENhclNsaWRlIC5zbGlkZUNvbnRlbnR7IGhlaWdodDoxMDAlIH0gLmFuaW1hdGVkLXRyaWFuZ2xlIHsgcG9zaXRpb246cmVsYXRpdmU7IG1hcmdpbi1yaWdodDoxMHB4OyB9IC5hbmltYXRlZC10cmlhbmdsZSA+IC5mYTo6YWZ0ZXIgeyBjb250ZW50OiJcZjA3MSI7IH0gLmFuaW1hdGVkLXRyaWFuZ2xlIGl7IHBvc2l0aW9uOnJlbGF0aXZlOyB9IC5hbmltYXRlZC10cmlhbmdsZSA+IHN2ZywgLmFuaW1hdGVkLXRyaWFuZ2xlID4gLmZhOjphZnRlciB7IGFuaW1hdGlvbjpyaXBwbGUtMSAxcyBpbmZpbml0ZSBlYXNlLWluLW91dDsgYW5pbWF0aW9uLWRlbGF5OjAuNXM7IGFuaW1hdGlvbjpyaXBwbGUtMiAxcyBpbmZpbml0ZSBlYXNlLWluLW91dDsgYW5pbWF0aW9uLWRlbGF5OjAuNzVzOyBwb3NpdGlvbjphYnNvbHV0ZTsgfSAuYW5pbWF0ZWQtdHJpYW5nbGUgPiAuZmE6OmFmdGVyeyB0b3A6MDsgbGVmdDowOyB9IC5hbmltYXRlZC10cmlhbmdsZSA+IHN2Z3sgdG9wOjFweDsgbGVmdDotMXJlbTsgfSBAa2V5ZnJhbWVzIHJpcHBsZS0xIHsgMCUgeyB0cmFuc2Zvcm06c2NhbGUoMSk7IG9wYWNpdHk6MTsgfSAxMDAlIHsgdHJhbnNmb3JtOnNjYWxlKDEuNyk7IG9wYWNpdHk6MDsgfSB9IEBrZXlmcmFtZXMgcmlwcGxlLTIgeyAwJSB7IHRyYW5zZm9ybTpzY2FsZSgxKTsgb3BhY2l0eToxOyB9IDEwMCUgeyB0cmFuc2Zvcm06c2NhbGUoMik7IG9wYWNpdHk6MDsgfSB9IHNwYW4uYXN0ZXJpeDphZnRlcnsgY29udGVudDoiKiI7IHBvc2l0aW9uOnJlbGF0aXZlOyBmb250LXNpemU6MnJlbTsgfSBkaXYucHJpY2VOb3RlLmFzdGVyaXg6YmVmb3JleyBjb250ZW50OiIqIjsgcG9zaXRpb246cmVsYXRpdmU7IGZvbnQtc2l6ZToxcmVtOyB9IGZvb3RlciB7IC13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwcHggMTBweCAxMXB4IC0xMXB4IHJnYmEoNTAsIDUwLCA1MCwgMC43NSk7IC1tb3otYm94LXNoYWRvdzogaW5zZXQgMHB4IDEwcHggMTFweCAtMTFweCByZ2JhKDUwLCA1MCwgNTAsIDAuNzUpOyBib3gtc2hhZG93OiBpbnNldCAwcHggMTBweCAxMXB4IC0xMXB4IHJnYmEoNTAsIDUwLCA1MCwgMC43NSk7IC0tdHh0LWNvbG9yOnZhcigtLWZvb3Rlci1pdGVtcy1saW5rLWNvbG9yKTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1mb290ZXItYmctY29sb3IpOyBjb2xvcjp2YXIoLS1mb290ZXItaXRlbXMtbGluay1jb2xvcik7IH0gYS52aXNpdENvbnRhY3RCdXR0b257IC0tdHh0LWNvbG9yOnZhcigtLXByb21vLWJ0bi10ZXh0LWNvbG9yKTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1wcm9tby1idG4tYmctY29sb3IpOyBjb2xvcjp2YXIoLS1wcm9tby1idG4tdGV4dC1jb2xvcik7IH0gLmNGb290ZXJDYXJMaW5rcyBsaS5jSXRlbUV4cGVuZHsgZGlzcGxheTpub25lOyB9IC5jRm9vdGVyQ2FyTGlua3MgaDMsIC5mb290ZXJfYWRkcmVzcyAuYWRyID4gc3BhbnsgY29sb3I6dmFyKC0tZm9vdGVyLWxpbmstdGl0bGUtY29sKTsgfSAuY0Zvb3RlckNhckxpbmtzIHNwYW4uaDMtYWx0IHsgZGlzcGxheTpibG9jazsgY29sb3I6dmFyKC0tZm9vdGVyLWxpbmstdGl0bGUtY29sKTsgfSAuY0Zvb3RlckNhckxpbmtzLmNMaXN0RXhwZW5kZWQgbGkuY0l0ZW1FeHBlbmR7IGRpc3BsYXk6YmxvY2s7IH0gLmNFeHBlbmRMaXN0IGJ1dHRvbnsgcGFkZGluZzp2YXIoLS1zKSAwOyBiYWNrZ3JvdW5kOm5vbmU7IH0gLmNvbmRpdGlvbnNGb290ZXIgeyBjb2xvcjp2YXIoLS1mb290ZXItY29uZGl0aW9ucy1jb2xvciwgIzkxOTE5MSk7IC0tdHh0LWNvbG9yOnZhcigtLWZvb3Rlci1jb25kaXRpb25zLWNvbG9yKTsgfSAudHJhZGVJbkJhck1vYmlsZUJ1dHRvbiB7IHBvc2l0aW9uOmZpeGVkOyBib3R0b206MTBweDsgbWFyZ2luOjVweCA1cHggMTVweCAxNXB4OyB6LWluZGV4OjQ7IHdpZHRoOjE0MHB4ICFpbXBvcnRhbnQ7IGJvcmRlci13aWR0aDoxcHg7IGJhY2tncm91bmQtY29sb3I6I2VhMDAyOTsgdGV4dC1hbGlnbjpsZWZ0OyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXRyYWRlaW5iYXItYnRuLWJnKTsgY29sb3I6IHZhcigtLXRyYWRlaW5iYXItYnRuLWNvbG9yKTsgYWxpZ24taXRlbXM6Y2VudGVyOyBib3JkZXItcmFkaXVzOjhweDsgYm9yZGVyLXdpZHRoOjFweCAzcHggNHB4IDFweDsgYm9yZGVyLWNvbG9yOiMzMzMzMzM7IHBhZGRpbmctdG9wOjEwcHg7IH0gLnRyYWRlSW5CYXJNb2JpbGVCdXR0b24gaXsgZGlzcGxheTppbmxpbmUtZmxleDsgYm9yZGVyLXJhZGl1czoxMDAlOyB3aWR0aDoyZW07IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgYm9yZGVyOjJweCBzb2xpZCAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7IGhlaWdodDoxLjVlbTsgY29sb3I6IzAwMDsgZmxvYXQ6bGVmdDsgfSAudHJhZGVJbkJhck1vYmlsZUJ1dHRvbi53aXRoVG9hc3RlciB7IGJvdHRvbTo1cmVtOyB9ICN0cmFkZUluQmFyUG9wdXBfbGluZTF7IGJhY2tncm91bmQtY29sb3I6I2YxZjFmMTsgYm9yZGVyOjFweCBzb2xpZCBncmV5OyBwYWRkaW5nOjIwcHggNDBweDsgZm9udC1zaXplOjEuMTI1cmVtIDsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLmJ0bi50cmFkZUluQmFyUG9wdXBTdWJtaXR7IHBhZGRpbmc6MC43NXJlbSAwLjM3NXJlbTsgYm9yZGVyLXdpZHRoOjFweDsgYm9yZGVyLWNvbG9yOiMwMDA7IGZvbnQtd2VpZ2h0OmJvbGQ7IGJvcmRlci1yYWRpdXM6M3B4OyBib3JkZXI6MXB4IHNvbGlkICMwMDA7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyBpbnB1dHsgbWFyZ2luOjVweCAwIDA7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtV3sgaGVpZ2h0OjU4MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7IGNvbG9yOnZhcigtLWRlZmF1bHQtYmxhY2stdGV4dCk7IHBhZGRpbmc6MTVweDsgcG9zaXRpb246cmVsYXRpdmU7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyBpbnB1dHsgcGFkZGluZzoxMXB4IDEwcHg7IGZvbnQtc2l6ZTowLjkzOHJlbSA7IHdpZHRoOjI1MHB4OyBtYXJnaW46NXB4IDAgMDsgYm9yZGVyOjFweCBzb2xpZCAjYTlhOWE5IWltcG9ydGFudDsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIC50cmFkaW5TZWxlY3RQb3B1cHsgY29sb3I6IzNjMzgzNjsgZm9udC1zaXplOjFyZW07IGJhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwxKTsgYmFja2dyb3VuZC1wb3NpdGlvbjo5NSUgNTAlOyBhcHBlYXJhbmNlOm5vbmU7IC13ZWJraXQtYXBwZWFyYW5jZTpub25lOyAtbW96LWFwcGVhcmFuY2U6bm9uZTsgbWFyZ2luOjVweCAwIDA7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyA6OnBsYWNlaG9sZGVyIHsgY29sb3I6I2E5YTlhOTsgb3BhY2l0eToxOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7IGNvbG9yOiNhOWE5YTk7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyA6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7IGNvbG9yOiNhOWE5YTk7IH0gLnRyYWRpblNlbGVjdCwgLnRyYWRpblNlbGVjdFBvcHVwIHsgY29sb3I6IzNjMzgzNjsgZm9udC1zaXplOjFyZW07IG1hcmdpbjo1cHggMCAwOyBhcHBlYXJhbmNlOm5vbmU7IC13ZWJraXQtYXBwZWFyYW5jZTpub25lOyAtbW96LWFwcGVhcmFuY2U6bm9uZTsgfSAudHJhZGluU2VsZWN0QSB7IHBvc2l0aW9uOnJlbGF0aXZlOyB9IC50cmFkaW5TZWxlY3RBOmFmdGVyIHsgY29udGVudDoiICI7IGhlaWdodDowOyB3aWR0aDowOyBib3JkZXItbGVmdDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1yaWdodDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci10b3A6NXB4IHNvbGlkICMwMDAwMDA7IHBvc2l0aW9uOmFic29sdXRlOyByaWdodDoxNHB4OyB0b3A6MTdweDsgdHJhbnNpdGlvbjphbGwgMC4zcyBsaW5lYXI7IHBvaW50ZXItZXZlbnRzOm5vbmU7IH0gLmVtYWlsQm9keSwgLmVtYWlsU3ViamVjdHsgZGlzcGxheTpub25lOyB9IC5yZXZlYWwtbW9kYWw6bm90KCNwYXltZW50Q2FsY3VsYXRvclBvcHVwQ29udGFpbmVyKSAqOm5vdCguZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgOmlzKGlucHV0LCBzZWxlY3QpKXsgYm94LXNpemluZzpib3JkZXItYm94OyB9IC5yZXZlYWwtbW9kYWw6bm90KCNwYXltZW50Q2FsY3VsYXRvclBvcHVwQ29udGFpbmVyKSA6aXMoaW5wdXRbdHlwZT0idGV4dCJdOm5vdCguZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5jYWxjLWZvcm0gaW5wdXQpLGlucHV0W3R5cGU9ImVtYWlsIl0saW5wdXRbdHlwZT0idGVsIl0sc2VsZWN0Om5vdCgucGF5bWVudENhbGN1bGF0b3JJbnRlcnZhbCwucGF5bWVudENhbGN1bGF0b3JLbUFsbG93YW5jZSwuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5jYWxjLWZvcm0gc2VsZWN0LCBzZWxlY3Quc3RlcDI0c2VsZWN0KSl7IHBhZGRpbmc6MC40cmVtOyBib3JkZXItd2lkdGg6MXB4OyBib3JkZXItcmFkaXVzOjAuM3JlbTsgd2lkdGg6MTAwJTsgYm9yZGVyLWNvbG9yOiNhOWE5YTk7IH0gW2RhdGEtcGFnZT0iSE9NRVBBR0UiXXsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1ob21lLWJnLWNvbG9yLCAjRkZGRkZGKTsgfSAueXQtYmctY29udGFpbmVyeyBwb3NpdGlvbjpyZWxhdGl2ZTsgb3ZlcmZsb3c6aGlkZGVuOyB9IC5iYW5uZXItYmctY29udGFpbmVyeyBiYWNrZ3JvdW5kLXNpemU6Y292ZXI7IGJhY2tncm91bmQtcG9zaXRpb246Y2VudGVyIGNlbnRlcjsgYmFja2dyb3VuZC1ibGVuZC1tb2RlOmNvbG9yOyB9ICN5b3V0dWJlX19jb250YWluZXJ7IHBvc2l0aW9uOnJlbGF0aXZlOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MDsgb3ZlcmZsb3c6aGlkZGVuOyBwYWRkaW5nLWJvdHRvbTptaW4oY2FsYygxMDB2aCAtIHZhcigtLWhlYWRlci1oZWlnaHQsMTByZW0pKSw2N3Z3KTsgYmFja2dyb3VuZC1jb2xvcjojODg4OyB9ICNob21lcGFnZV95b3V0dWJlX3BsYXllcnsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDotNDUlOyBsZWZ0Oi0xMCU7IGhlaWdodDoxOTAlOyB3aWR0aDoxMjAlOyBwb2ludGVyLWV2ZW50czpub25lOyB9ICN5b3V0dWJlX19jb250YWluZXI6aXMoLmZ1bGxIZWlnaHQsLnZpc2libGVIZWlnaHQpeyBwYWRkaW5nLWJvdHRvbTpjYWxjKDEwMHZoIC0gdmFyKC0taGVhZGVyLWhlaWdodCwxMHJlbSkpOyB9IDppcyguZnVsbEhlaWdodCwudmlzaWJsZUhlaWdodCkgI2hvbWVwYWdlX3lvdXR1YmVfcGxheWVyeyBoZWlnaHQ6MTAwJTsgdG9wOjA7IH0gI3lvdXR1YmVfX2NvbnRhaW5lci5mdWxsV2lkdGh7IHBhZGRpbmctYm90dG9tOjU2LjI1JTsgfSAjbW9iaWxlU2xpZGVyICN5b3V0dWJlX19jb250YWluZXJ7IHBhZGRpbmctYm90dG9tOm1heCg2N3Z3LDI0cmVtKTsgfSAjbW9iaWxlU2xpZGVyICN5b3V0dWJlX19jb250YWluZXIgI2Jhbm5lcl9zZWFyY2hfYmFyX2NvbnRhaW5lcnsgaGVpZ2h0Om1heCg2N3Z3LDI0cmVtKTsgbWluLWhlaWdodDoxOHJlbTsgei1pbmRleDoxOyB9IC5mdWxsV2lkdGggI2hvbWVwYWdlX3lvdXR1YmVfcGxheWVyeyBoZWlnaHQ6MTIwJTsgdG9wOi0xMCU7IH0gLnl0LXZpZGVveyBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7IGJhY2tncm91bmQtcG9zaXRpb246Y2VudGVyOyBiYWNrZ3JvdW5kLXNpemU6Y292ZXI7IH0gLnl0LXBsYXl7IGJhY2tncm91bmQtaW1hZ2U6dXJsKCdkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDU3NiA1MTIiPjwhLS0gRm9udCBBd2Vzb21lIEZyZWUgNS4xNS4xIGJ5IEBmb250YXdlc29tZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tIExpY2Vuc2UgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbS9saWNlbnNlL2ZyZWUgKEljb25zOkNDIEJZIDQuMCwgRm9udHM6U0lMIE9GTCAxLjEsIENvZGU6TUlUIExpY2Vuc2UpIC0tPjxwYXRoIGQ9Ik01NDkuNjU1IDEyNC4wODNjLTYuMjgxLTIzLjY1LTI0Ljc4Ny00Mi4yNzYtNDguMjg0LTQ4LjU5N0M0NTguNzgxIDY0IDI4OCA2NCAyODggNjRTMTE3LjIyIDY0IDc0LjYyOSA3NS40ODZjLTIzLjQ5NyA2LjMyMi00Mi4wMDMgMjQuOTQ3LTQ4LjI4NCA0OC41OTctMTEuNDEyIDQyLjg2Ny0xMS40MTIgMTMyLjMwNS0xMS40MTIgMTMyLjMwNXMwIDg5LjQzOCAxMS40MTIgMTMyLjMwNWM2LjI4MSAyMy42NSAyNC43ODcgNDEuNSA0OC4yODQgNDcuODIxQzExNy4yMiA0NDggMjg4IDQ0OCAyODggNDQ4czE3MC43OCAwIDIxMy4zNzEtMTEuNDg2YzIzLjQ5Ny02LjMyMSA0Mi4wMDMtMjQuMTcxIDQ4LjI4NC00Ny44MjEgMTEuNDEyLTQyLjg2NyAxMS40MTItMTMyLjMwNSAxMS40MTItMTMyLjMwNXMwLTg5LjQzOC0xMS40MTItMTMyLjMwNXptLTMxNy41MSAyMTMuNTA4VjE3NS4xODVsMTQyLjczOSA4MS4yMDUtMTQyLjczOSA4MS4yMDF6IiBmaWxsPSIlMjNjMzNjMmQiIC8lM0UlM0Mvc3ZnJTNFJyk7IHdpZHRoOjVyZW07IGhlaWdodDo1cmVtOyBiYWNrZ3JvdW5kLXNpemU6Y29udGFpbjsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyBiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50OyBvcGFjaXR5OjAuNzsgfSAuZW1iZWQtY29udGFpbmVyLXlvdXR1YmUgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgaGVpZ2h0OmNhbGMoMTAwdncgLyAoMTYgLyA5KSk7IG92ZXJmbG93OmhpZGRlbjsgbWF4LXdpZHRoOjEwMCU7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYmFja2dyb3VuZC1wb3NpdGlvbjpjZW50ZXI7IGJhY2tncm91bmQtc2l6ZTpjb3ZlcjsgfSAubW9iaWxlX2J1c2luZXNzRGVzYyB7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tYnVzaW5lc3MtZGVzYy1iZy1jb2xvcl9tb2IsIHZhcigtLWZvb3Rlci1iZy1jb2xvcikpOyBjb2xvcjp2YXIoLS1idXNpbmVzcy1kZXNjLXR4dC1jb2xvcl9tb2IsIHZhcigtLWZvb3Rlci1saW5rLXRpdGxlLWNvbCkpOyB9IC5idXNpbmVzc0Rlc2MgeyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJ1c2luZXNzLWRlc2MtYmctY29sb3JfbW9iLCB2YXIoLS1mb290ZXItYmctY29sb3IpKTsgY29sb3I6dmFyKC0tYnVzaW5lc3MtZGVzYy10eHQtY29sb3JfbW9iLCB2YXIoLS1mb290ZXItbGluay10aXRsZS1jb2wpKTsgfSAuYnVzaW5lc3NEZXNjICogeyBsaW5lLWhlaWdodDoxLjVyZW07IH0gLndyYXBwZXIgeyBtYXJnaW46MCBhdXRvOyB3aWR0aDo5NjBweDsgcG9zaXRpb246cmVsYXRpdmU7IH0gLmxhbmd1YWdlQmFyIHsgbWFyZ2luOjFyZW0gYXV0byA1cHg7IGhlaWdodDoyOHB4OyBwYWRkaW5nOjAgdmFyKC0tcyk7IH0gLnYtY2FyZC50b3BfYmcgeyBkaXNwbGF5OmZsZXg7IGp1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuOyBhbGlnbi1pdGVtczpjZW50ZXI7IG1hcmdpbi10b3A6MTBweDsgbWluLWhlaWdodDo4cmVtOyBwYWRkaW5nOjAgdmFyKC0tcyk7IH0gLmhlYWRlci1zZWN0aW9uIHsgZGlzcGxheTpmbGV4OyB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7IGFsaWduLWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjsgYWxpZ24taXRlbXM6Y2VudGVyOyB9ICN0cmFkZUluQmFyTW9iaWxleyBiYWNrZ3JvdW5kLWNvbG9yOmJsYWNrOyBjb2xvcjogd2hpdGU7IGJvcmRlci1yYWRpdXM6NXB4OyBkaXNwbGF5OmJsb2NrOyBtYXJnaW46M3B4IDVweCA1cHggNXB4OyB9ICN0cmFkZUluQmFyTW9iaWxlIC5taWRkbGV7IGNvbG9yOiNmZmZmZmY7IH0gI3RyYWRlSW5CYXJNb2JpbGUgI2RlZmF1bHRUb3BCYW5uZXJUaXRsZXsgcGFkZGluZzo1cHggMjBweCAwcHggMjBweDsgfSAjdHJhZGVJbkJhck1vYmlsZSAuZGVmYXVsdFRvcEJhbm5lckJ0bldyYXBwZXIgZGl2eyBtYXgtd2lkdGg6MzMwcHg7IG1hcmdpbjoxMHB4IGF1dG87IHBhZGRpbmc6MTJweCAwOyBib3JkZXItcmFkaXVzOjJweDsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1wcm9tby1idG4tYmctY29sb3IpOyB9ICN0cmFkZUluQmFyTW9iaWxlIC5kZWZhdWx0VG9wQmFubmVyQnRuV3JhcHBlciBheyB0ZXh0LWFsaWduOmNlbnRlcjsgbWFyZ2luOjAgYXV0bzsgZm9udC13ZWlnaHQ6NzAwOyB9ICN0cmFkZUluQmFyTW9iaWxlICNkZWZhdWx0VG9wQmFubmVyTG9nbyBzcGFueyBmb250LXNpemU6MC44cmVtOyBmb250LXdlaWdodDozMDA7IGNvbG9yOnZhcigtLW1pZC1ncmF5KTsgfSAjdHJhZGVJbkJhcnsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS10cmFkZWluYmFyLWJnKTsgY29sb3I6IHZhcigtLXRyYWRlaW5iYXItY29sb3IpOyB9ICN0cmFkZUluQmFyV01vYmlsZSwgI3RyYWRlSW5CYXJXIHsgZGlzcGxheTpmbGV4OyBtaW4taGVpZ2h0OjUwcHg7IG1hcmdpbjphdXRvOyB3aWR0aDptaW4oMTAwJSwxMzUwcHgpOyBwb3NpdGlvbjpyZWxhdGl2ZTsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgfSAubGFuZ3VhZ2VCYXIgLnNlcnZpY2UtaGVhZGVyLWZvcm0gPiBheyBwYWRkaW5nOjRweCAxMnB4OyBoZWlnaHQ6MThweDsgbGluZS1oZWlnaHQ6MThweDsgYm9yZGVyLXJhZGl1czowOyBmb250LXdlaWdodDpub3JtYWw7IGJhY2tncm91bmQtY29sb3I6dmFyKC0taGVhZGVyLXNlcnZpY2UtYXBwb2ludG1lbnQtdGV4dC1jb2xvci1iZywgdmFyKC0tbGFuZ3VhZ2UtYnRuLWFjdGl2ZS1iZy1jb2xvcikpOyBjb2xvcjp2YXIoLS1oZWFkZXItc2VydmljZS1hcHBvaW50bWVudC10ZXh0LWNvbG9yLCB3aGl0ZSApOyB9IC5sYW5ndWFnZUJhciAuc2VydmljZS1oZWFkZXItZm9ybSBhOmhvdmVyIHsgYm9yZGVyLWNvbG9yOnZhcigtLWhlYWRlci1zZXJ2aWNlLWFwcG9pbnRtZW50LXRleHQtY29sb3ItYmcsIHZhcigtLWxhbmd1YWdlLWJ0bi1hY3RpdmUtYmctY29sb3IpKTsgfSAjYWxlcnRNc2dDb250YWluZXJ7IHBvc2l0aW9uOnJlbGF0aXZlOyBiYWNrZ3JvdW5kLWNvbG9yOiMwMDA7IHotaW5kZXg6OTk5OyB3aWR0aDoxMDAlOyBjb2xvcjp3aGl0ZTsgYm94LXNpemluZzpib3JkZXItYm94OyBjb2xvcjp2YXIoLS1hZG1pbi1nZW5lcmFsLWFsZXJ0LWJhci10ZXh0LWNvbG9yKTsgZm9udC13ZWlnaHQ6NjAwOyB9ICNhbGVydE1zZ0NvbnRhaW5lci5zdGljay10b3B7IHBvc2l0aW9uOnN0aWNreTsgdG9wOjA7IHotaW5kZXg6OTk5OTk7IH0gLmZhLWZpeC1jZW50ZXI6YmVmb3JlIHsgd2lkdGg6MS41ZW07IGhlaWdodDoxLjVlbTsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgYWxpZ24taXRlbXM6Y2VudGVyOyBkaXNwbGF5OmZsZXg7IH0gI3lvdXR1YmVfX2NvbnRhaW5lci5mdWxsc2NyZWVueyBvYmplY3QtZml0OmNvdmVyOyBwb3NpdGlvbjpyZWxhdGl2ZTsgbGVmdDowOyByaWdodDowOyB0b3A6MDsgb3BhY2l0eTowLjg7IH0gLm1haW5EaXZBZGp1c3RIZWFkZXIgeyBwb3NpdGlvbjphYnNvbHV0ZTsgYmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDsgdHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIC4zcywgYm9yZGVyIC4zczsgdG9wOjA7IGxlZnQ6MDsgcmlnaHQ6MDsgYm90dG9tOjA7IH0gLm1haW5EaXZBZGp1c3RIZWFkZXIud2l0aC1hbGVydCB7IHRvcDo0MHB4OyB9IC5wYXltZW50QmxvY2tDb250YWluZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNlcnQtY29uY3JldGUtZ3JheSwgdmFyKC0tbGlnaHQtZ3JheSkpOyBjb2xvcjp2YXIoLS1kYXJrLWdyYXkpOyB9IC52ZWhpY2xlTG9jYXRpb257IGJvcmRlci10b3A6MXB4IHNvbGlkICNkZGQ7IHRleHQtYWxpZ246Y2VudGVyOyB9IC5saW5lU2VwYXJhdG9yeyBib3JkZXItdG9wOjFweCBzb2xpZCAjQTlBOUE5OyBtYXJnaW4tdG9wOjQwcHg7IG1hcmdpbi1ib3R0b206NDBweDsgfSAucmV2ZWFsLW1vZGFsIHNwYW4uZmEtaGFuZC1wb2ludGVyLWNvbG9yIHsgY29sb3I6I2ZmZmZmZjsgbWFyZ2luLXJpZ2h0OjVweDsgbWFyZ2luLXRvcDo1cHg7IH0gLmNvbmZsaWN0LXJlc29sdmUtb3B0aW9ucyB7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IH0KLyoqIC9jc3MvZm9udGF3ZXNvbWUtYWxsLm1pbi5jc3MgKiovCi5mYSwuZmFzLC5mYXIsLmZhbCwuZmFkLC5mYWJ7LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6Z3JheXNjYWxlOy13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC12YXJpYW50Om5vcm1hbDt0ZXh0LXJlbmRlcmluZzphdXRvO2xpbmUtaGVpZ2h0OjF9LmZhLWxne2ZvbnQtc2l6ZToxLjMzMzMzZW07bGluZS1oZWlnaHQ6Ljc1ZW07dmVydGljYWwtYWxpZ246LS4wNjY3ZW19LmZhLXhze2ZvbnQtc2l6ZTouNzVlbX0uZmEtc217Zm9udC1zaXplOi44NzVlbX0uZmEtMXh7Zm9udC1zaXplOjFlbX0uZmEtMnh7Zm9udC1zaXplOjJlbX0uZmEtM3h7Zm9udC1zaXplOjNlbX0uZmEtNHh7Zm9udC1zaXplOjRlbX0uZmEtNXh7Zm9udC1zaXplOjVlbX0uZmEtNnh7Zm9udC1zaXplOjZlbX0uZmEtN3h7Zm9udC1zaXplOjdlbX0uZmEtOHh7Zm9udC1zaXplOjhlbX0uZmEtOXh7Zm9udC1zaXplOjllbX0uZmEtMTB4e2ZvbnQtc2l6ZToxMGVtfS5mYS1md3t0ZXh0LWFsaWduOmNlbnRlcjt3aWR0aDoxLjI1ZW19LmZhLXVse2xpc3Qtc3R5bGUtdHlwZTpub25lO21hcmdpbi1sZWZ0OjIuNWVtO3BhZGRpbmctbGVmdDowfS5mYS11bCA+IGxpe3Bvc2l0aW9uOnJlbGF0aXZlfS5mYS1saXtsZWZ0Oi0yZW07cG9zaXRpb246YWJzb2x1dGU7dGV4dC1hbGlnbjpjZW50ZXI7d2lkdGg6MmVtO2xpbmUtaGVpZ2h0OmluaGVyaXR9LmZhLWJvcmRlcntib3JkZXI6c29saWQgLjA4ZW0gI2VlZTtib3JkZXItcmFkaXVzOi4xZW07cGFkZGluZzouMmVtIC4yNWVtIC4xNWVtfS5mYS1wdWxsLWxlZnR7ZmxvYXQ6bGVmdH0uZmEtcHVsbC1yaWdodHtmbG9hdDpyaWdodH0uZmEuZmEtcHVsbC1sZWZ0LC5mYXMuZmEtcHVsbC1sZWZ0LC5mYXIuZmEtcHVsbC1sZWZ0LC5mYWwuZmEtcHVsbC1sZWZ0LC5mYWIuZmEtcHVsbC1sZWZ0e21hcmdpbi1yaWdodDouM2VtfS5mYS5mYS1wdWxsLXJpZ2h0LC5mYXMuZmEtcHVsbC1yaWdodCwuZmFyLmZhLXB1bGwtcmlnaHQsLmZhbC5mYS1wdWxsLXJpZ2h0LC5mYWIuZmEtcHVsbC1yaWdodHttYXJnaW4tbGVmdDouM2VtfS5mYS1zcGluey13ZWJraXQtYW5pbWF0aW9uOmZhLXNwaW4gMnMgaW5maW5pdGUgbGluZWFyO2FuaW1hdGlvbjpmYS1zcGluIDJzIGluZmluaXRlIGxpbmVhcn0uZmEtcHVsc2V7LXdlYmtpdC1hbmltYXRpb246ZmEtc3BpbiAxcyBpbmZpbml0ZSBzdGVwcyg4KTthbmltYXRpb246ZmEtc3BpbiAxcyBpbmZpbml0ZSBzdGVwcyg4KX1ALXdlYmtpdC1rZXlmcmFtZXMgZmEtc3BpbnswJXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKX0xMDAley13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoMzYwZGVnKX19QGtleWZyYW1lcyBmYS1zcGluezAley13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgwZGVnKTt0cmFuc2Zvcm06cm90YXRlKDBkZWcpfTEwMCV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDM2MGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpfX0uZmEtcm90YXRlLTkwey1tcy1maWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkJhc2ljSW1hZ2Uocm90YXRpb249MSk7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDkwZGVnKTt0cmFuc2Zvcm06cm90YXRlKDkwZGVnKX0uZmEtcm90YXRlLTE4MHstbXMtZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5CYXNpY0ltYWdlKHJvdGF0aW9uPTIpOy13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKX0uZmEtcm90YXRlLTI3MHstbXMtZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5CYXNpY0ltYWdlKHJvdGF0aW9uPTMpOy13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgyNzBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoMjcwZGVnKX0uZmEtZmxpcC1ob3Jpem9udGFsey1tcy1maWx0ZXI6InByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5CYXNpY0ltYWdlKHJvdGF0aW9uPTAsbWlycm9yPTEpIjstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgtMSwxKTt0cmFuc2Zvcm06c2NhbGUoLTEsMSl9LmZhLWZsaXAtdmVydGljYWx7LW1zLWZpbHRlcjoicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkJhc2ljSW1hZ2Uocm90YXRpb249MixtaXJyb3I9MSkiOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEsLTEpO3RyYW5zZm9ybTpzY2FsZSgxLC0xKX0uZmEtZmxpcC1ib3RoLC5mYS1mbGlwLWhvcml6b250YWwuZmEtZmxpcC12ZXJ0aWNhbHstbXMtZmlsdGVyOiJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQmFzaWNJbWFnZShyb3RhdGlvbj0yLG1pcnJvcj0xKSI7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoLTEsLTEpO3RyYW5zZm9ybTpzY2FsZSgtMSwtMSl9OnJvb3QgLmZhLXJvdGF0ZS05MCw6cm9vdCAuZmEtcm90YXRlLTE4MCw6cm9vdCAuZmEtcm90YXRlLTI3MCw6cm9vdCAuZmEtZmxpcC1ob3Jpem9udGFsLDpyb290IC5mYS1mbGlwLXZlcnRpY2FsLDpyb290IC5mYS1mbGlwLWJvdGh7LXdlYmtpdC1maWx0ZXI6bm9uZTtmaWx0ZXI6bm9uZX0uZmEtc3RhY2t7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjJlbTtsaW5lLWhlaWdodDoyZW07cG9zaXRpb246cmVsYXRpdmU7dmVydGljYWwtYWxpZ246bWlkZGxlO3dpZHRoOjIuNWVtfS5mYS1zdGFjay0xeCwuZmEtc3RhY2stMnh7bGVmdDowO3Bvc2l0aW9uOmFic29sdXRlO3RleHQtYWxpZ246Y2VudGVyO3dpZHRoOjEwMCV9LmZhLXN0YWNrLTF4e2xpbmUtaGVpZ2h0OmluaGVyaXR9LmZhLXN0YWNrLTJ4e2ZvbnQtc2l6ZToyZW19LmZhLWludmVyc2V7Y29sb3I6I2ZmZn0uZmEtNTAwcHg6YmVmb3Jle2NvbnRlbnQ6IlxmMjZlIn0uZmEtYWNjZXNzaWJsZS1pY29uOmJlZm9yZXtjb250ZW50OiJcZjM2OCJ9LmZhLWFkZHJlc3MtYm9vazpiZWZvcmV7Y29udGVudDoiXGYyYjkifS5mYS1hZGRyZXNzLWNhcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMmJiIn0uZmEtYWlyLWZyZXNoZW5lcjpiZWZvcmV7Y29udGVudDoiXGY1ZDAifS5mYS1hbGFybS1jbG9jazpiZWZvcmV7Y29udGVudDoiXGYzNGUifS5mYS1hbWJ1bGFuY2U6YmVmb3Jle2NvbnRlbnQ6IlxmMGY5In0uZmEtYW5kcm9pZDpiZWZvcmV7Y29udGVudDoiXGYxN2IifS5mYS1hbmdsZS1kb3VibGUtZG93bjpiZWZvcmV7Y29udGVudDoiXGYxMDMifS5mYS1hbmdsZS1kb3VibGUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYxMDAifS5mYS1hbmdsZS1kb3VibGUtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTAxIn0uZmEtYW5nbGUtZG91YmxlLXVwOmJlZm9yZXtjb250ZW50OiJcZjEwMiJ9LmZhLWFuZ2xlLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTA3In0uZmEtYW5nbGUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYxMDQifS5mYS1hbmdsZS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYxMDUifS5mYS1hbmdsZS11cDpiZWZvcmV7Y29udGVudDoiXGYxMDYifS5mYS1hcHBsZTpiZWZvcmV7Y29udGVudDoiXGYxNzkifS5mYS1hcmNoaXZlOmJlZm9yZXtjb250ZW50OiJcZjE4NyJ9LmZhLWFycm93LWFsdC1jaXJjbGUtZG93bjpiZWZvcmV7Y29udGVudDoiXGYzNTgifS5mYS1hcnJvdy1hbHQtY2lyY2xlLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzU5In0uZmEtYXJyb3ctYWx0LWNpcmNsZS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYzNWEifS5mYS1hcnJvdy1hbHQtY2lyY2xlLXVwOmJlZm9yZXtjb250ZW50OiJcZjM1YiJ9LmZhLWFycm93LWFsdC1kb3duOmJlZm9yZXtjb250ZW50OiJcZjM1NCJ9LmZhLWFycm93LWFsdC1mcm9tLWJvdHRvbTpiZWZvcmV7Y29udGVudDoiXGYzNDYifS5mYS1hcnJvdy1hbHQtZnJvbS1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjM0NyJ9LmZhLWFycm93LWFsdC1mcm9tLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjM0OCJ9LmZhLWFycm93LWFsdC1mcm9tLXRvcDpiZWZvcmV7Y29udGVudDoiXGYzNDkifS5mYS1hcnJvdy1hbHQtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYzNTUifS5mYS1hcnJvdy1hbHQtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzU2In0uZmEtYXJyb3ctYWx0LXNxdWFyZS1kb3duOmJlZm9yZXtjb250ZW50OiJcZjM1MCJ9LmZhLWFycm93LWFsdC1zcXVhcmUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYzNTEifS5mYS1hcnJvdy1hbHQtc3F1YXJlLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjM1MiJ9LmZhLWFycm93LWFsdC1zcXVhcmUtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMzUzIn0uZmEtYXJyb3ctYWx0LXRvLWJvdHRvbTpiZWZvcmV7Y29udGVudDoiXGYzNGEifS5mYS1hcnJvdy1hbHQtdG8tbGVmdDpiZWZvcmV7Y29udGVudDoiXGYzNGIifS5mYS1hcnJvdy1hbHQtdG8tcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzRjIn0uZmEtYXJyb3ctYWx0LXRvLXRvcDpiZWZvcmV7Y29udGVudDoiXGYzNGQifS5mYS1hcnJvdy1hbHQtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMzU3In0uZmEtYXJyb3ctY2lyY2xlLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMGFiIn0uZmEtYXJyb3ctY2lyY2xlLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGE4In0uZmEtYXJyb3ctY2lyY2xlLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjBhOSJ9LmZhLWFycm93LWNpcmNsZS11cDpiZWZvcmV7Y29udGVudDoiXGYwYWEifS5mYS1hcnJvdy1kb3duOmJlZm9yZXtjb250ZW50OiJcZjA2MyJ9LmZhLWFycm93LWZyb20tYm90dG9tOmJlZm9yZXtjb250ZW50OiJcZjM0MiJ9LmZhLWFycm93LWZyb20tbGVmdDpiZWZvcmV7Y29udGVudDoiXGYzNDMifS5mYS1hcnJvdy1mcm9tLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjM0NCJ9LmZhLWFycm93LWZyb20tdG9wOmJlZm9yZXtjb250ZW50OiJcZjM0NSJ9LmZhLWFycm93LWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDYwIn0uZmEtYXJyb3ctcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDYxIn0uZmEtYXJyb3ctc3F1YXJlLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMzM5In0uZmEtYXJyb3ctc3F1YXJlLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzNhIn0uZmEtYXJyb3ctc3F1YXJlLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjMzYiJ9LmZhLWFycm93LXNxdWFyZS11cDpiZWZvcmV7Y29udGVudDoiXGYzM2MifS5mYS1hcnJvdy10by1ib3R0b206YmVmb3Jle2NvbnRlbnQ6IlxmMzNkIn0uZmEtYXJyb3ctdG8tbGVmdDpiZWZvcmV7Y29udGVudDoiXGYzM2UifS5mYS1hcnJvdy10by1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYzNDAifS5mYS1hcnJvdy10by10b3A6YmVmb3Jle2NvbnRlbnQ6IlxmMzQxIn0uZmEtYXJyb3ctdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMDYyIn0uZmEtYXJyb3dzOmJlZm9yZXtjb250ZW50OiJcZjA0NyJ9LmZhLWFycm93cy1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGIyIn0uZmEtYXJyb3dzLWFsdC1oOmJlZm9yZXtjb250ZW50OiJcZjMzNyJ9LmZhLWFycm93cy1hbHQtdjpiZWZvcmV7Y29udGVudDoiXGYzMzgifS5mYS1hcnJvd3MtaDpiZWZvcmV7Y29udGVudDoiXGYwN2UifS5mYS1hcnJvd3MtdjpiZWZvcmV7Y29udGVudDoiXGYwN2QifS5mYS1hc3Npc3RpdmUtbGlzdGVuaW5nLXN5c3RlbXM6YmVmb3Jle2NvbnRlbnQ6IlxmMmEyIn0uZmEtYXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWZhIn0uZmEtYXVkaW8tZGVzY3JpcHRpb246YmVmb3Jle2NvbnRlbnQ6IlxmMjllIn0uZmEtYXdhcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTU5In0uZmEtYmFkZ2U6YmVmb3Jle2NvbnRlbnQ6IlxmMzM1In0uZmEtYmFkZ2UtY2hlY2s6YmVmb3Jle2NvbnRlbnQ6IlxmMzM2In0uZmEtYmFuOmJlZm9yZXtjb250ZW50OiJcZjA1ZSJ9LmZhLWJhcmNvZGU6YmVmb3Jle2NvbnRlbnQ6IlxmMDJhIn0uZmEtYmFyY29kZS1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmNDYzIn0uZmEtYmFyczpiZWZvcmV7Y29udGVudDoiXGYwYzkifS5mYS1iYXR0ZXJ5LWZ1bGw6YmVmb3Jle2NvbnRlbnQ6IlxmMjQwIn0uZmEtYmF0dGVyeS1oYWxmOmJlZm9yZXtjb250ZW50OiJcZjI0MiJ9LmZhLWJlbGw6YmVmb3Jle2NvbnRlbnQ6IlxmMGYzIn0uZmEtYmVsbC1leGNsYW1hdGlvbjpiZWZvcmV7Y29udGVudDoiXGY4NDgifS5mYS1iZWxsLXBsdXM6YmVmb3Jle2NvbnRlbnQ6IlxmODQ5In0uZmEtYmVsbC1zbGFzaDpiZWZvcmV7Y29udGVudDoiXGYxZjYifS5mYS1ibG9nOmJlZm9yZXtjb250ZW50OiJcZjc4MSJ9LmZhLWJsb2dnZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMzdjIn0uZmEtYmxvZ2dlci1iOmJlZm9yZXtjb250ZW50OiJcZjM3ZCJ9LmZhLWJsdWV0b290aDpiZWZvcmV7Y29udGVudDoiXGYyOTMifS5mYS1ibHVldG9vdGgtYjpiZWZvcmV7Y29udGVudDoiXGYyOTQifS5mYS1ib2x0OmJlZm9yZXtjb250ZW50OiJcZjBlNyJ9LmZhLWJvb2ttYXJrOmJlZm9yZXtjb250ZW50OiJcZjAyZSJ9LmZhLWJveC1vcGVuOmJlZm9yZXtjb250ZW50OiJcZjQ5ZSJ9LmZhLWJyb2FkY2FzdC10b3dlcjpiZWZvcmV7Y29udGVudDoiXGY1MTkifS5mYS1idGM6YmVmb3Jle2NvbnRlbnQ6IlxmMTVhIn0uZmEtYnVnOmJlZm9yZXtjb250ZW50OiJcZjE4OCJ9LmZhLWJ1aWxkaW5nOmJlZm9yZXtjb250ZW50OiJcZjFhZCJ9LmZhLWJ1bGxob3JuOmJlZm9yZXtjb250ZW50OiJcZjBhMSJ9LmZhLWJ1bGxzZXllOmJlZm9yZXtjb250ZW50OiJcZjE0MCJ9LmZhLWJ1czpiZWZvcmV7Y29udGVudDoiXGYyMDcifS5mYS1idXMtYWx0OmJlZm9yZXtjb250ZW50OiJcZjU1ZSJ9LmZhLWJ1cy1zY2hvb2w6YmVmb3Jle2NvbnRlbnQ6IlxmNWRkIn0uZmEtY2FsY3VsYXRvcjpiZWZvcmV7Y29udGVudDoiXGYxZWMifS5mYS1jYWxjdWxhdG9yLWFsdDpiZWZvcmV7Y29udGVudDoiXGY2NGMifS5mYS1jYWxlbmRhcjpiZWZvcmV7Y29udGVudDoiXGYxMzMifS5mYS1jYWxlbmRhci1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDczIn0uZmEtY2FsZW5kYXItY2hlY2s6YmVmb3Jle2NvbnRlbnQ6IlxmMjc0In0uZmEtY2FsZW5kYXItZWRpdDpiZWZvcmV7Y29udGVudDoiXGYzMzMifS5mYS1jYWxlbmRhci1leGNsYW1hdGlvbjpiZWZvcmV7Y29udGVudDoiXGYzMzQifS5mYS1jYWxlbmRhci1taW51czpiZWZvcmV7Y29udGVudDoiXGYyNzIifS5mYS1jYWxlbmRhci10aW1lczpiZWZvcmV7Y29udGVudDoiXGYyNzMifS5mYS1jYW1lcmE6YmVmb3Jle2NvbnRlbnQ6IlxmMDMwIn0uZmEtY2FtZXJhLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzMzIifS5mYS1jYW1lcmEtaG9tZTpiZWZvcmV7Y29udGVudDoiXGY4ZmUifS5mYS1jYXI6YmVmb3Jle2NvbnRlbnQ6IlxmMWI5In0uZmEtY2FyLWFsdDpiZWZvcmV7Y29udGVudDoiXGY1ZGUifS5mYS1jYXItYmF0dGVyeTpiZWZvcmV7Y29udGVudDoiXGY1ZGYifS5mYS1jYXItYnVpbGRpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmODU5In0uZmEtY2FyLWJ1bXA6YmVmb3Jle2NvbnRlbnQ6IlxmNWUwIn0uZmEtY2FyLWJ1czpiZWZvcmV7Y29udGVudDoiXGY4NWEifS5mYS1jYXItY3Jhc2g6YmVmb3Jle2NvbnRlbnQ6IlxmNWUxIn0uZmEtY2FyLWdhcmFnZTpiZWZvcmV7Y29udGVudDoiXGY1ZTIifS5mYS1jYXItbWVjaGFuaWM6YmVmb3Jle2NvbnRlbnQ6IlxmNWUzIn0uZmEtY2FyLXNpZGU6YmVmb3Jle2NvbnRlbnQ6IlxmNWU0In0uZmEtY2FyLXRpbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmNWU1In0uZmEtY2FyLXdhc2g6YmVmb3Jle2NvbnRlbnQ6IlxmNWU2In0uZmEtY2FyYXZhbjpiZWZvcmV7Y29udGVudDoiXGY4ZmYifS5mYS1jYXJhdmFuLWFsdDpiZWZvcmV7Y29udGVudDoiXGUwMDAifS5mYS1jYXJldC1jaXJjbGUtZG93bjpiZWZvcmV7Y29udGVudDoiXGYzMmQifS5mYS1jYXJldC1jaXJjbGUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYzMmUifS5mYS1jYXJldC1jaXJjbGUtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzMwIn0uZmEtY2FyZXQtY2lyY2xlLXVwOmJlZm9yZXtjb250ZW50OiJcZjMzMSJ9LmZhLWNhcmV0LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMGQ3In0uZmEtY2FyZXQtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYwZDkifS5mYS1jYXJldC1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYwZGEifS5mYS1jYXJldC1zcXVhcmUtZG93bjpiZWZvcmV7Y29udGVudDoiXGYxNTAifS5mYS1jYXJldC1zcXVhcmUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYxOTEifS5mYS1jYXJldC1zcXVhcmUtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTUyIn0uZmEtY2FyZXQtc3F1YXJlLXVwOmJlZm9yZXtjb250ZW50OiJcZjE1MSJ9LmZhLWNhcmV0LXVwOmJlZm9yZXtjb250ZW50OiJcZjBkOCJ9LmZhLWNhcnM6YmVmb3Jle2NvbnRlbnQ6IlxmODViIn0uZmEtY2FydC1hcnJvdy1kb3duOmJlZm9yZXtjb250ZW50OiJcZjIxOCJ9LmZhLWNhcnQtcGx1czpiZWZvcmV7Y29udGVudDoiXGYyMTcifS5mYS1jYy1wYXlwYWw6YmVmb3Jle2NvbnRlbnQ6IlxmMWY0In0uZmEtY2VydGlmaWNhdGU6YmVmb3Jle2NvbnRlbnQ6IlxmMGEzIn0uZmEtY2hhaXI6YmVmb3Jle2NvbnRlbnQ6IlxmNmMwIn0uZmEtY2hhbGtib2FyZDpiZWZvcmV7Y29udGVudDoiXGY1MWIifS5mYS1jaGFyZ2luZy1zdGF0aW9uOmJlZm9yZXtjb250ZW50OiJcZjVlNyJ9LmZhLWNoYXJ0LWxpbmU6YmVmb3Jle2NvbnRlbnQ6IlxmMjAxIn0uZmEtY2hhcnQtbGluZS1kb3duOmJlZm9yZXtjb250ZW50OiJcZjY0ZCJ9LmZhLWNoZWNrOmJlZm9yZXtjb250ZW50OiJcZjAwYyJ9LmZhLWNoZWNrLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYwNTgifS5mYS1jaGVjay1kb3VibGU6YmVmb3Jle2NvbnRlbnQ6IlxmNTYwIn0uZmEtY2hlY2stc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjE0YSJ9LmZhLWNoZXZyb24tY2lyY2xlLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTNhIn0uZmEtY2hldnJvbi1jaXJjbGUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYxMzcifS5mYS1jaGV2cm9uLWNpcmNsZS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYxMzgifS5mYS1jaGV2cm9uLWNpcmNsZS11cDpiZWZvcmV7Y29udGVudDoiXGYxMzkifS5mYS1jaGV2cm9uLWRvdWJsZS1kb3duOmJlZm9yZXtjb250ZW50OiJcZjMyMiJ9LmZhLWNoZXZyb24tZG91YmxlLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzIzIn0uZmEtY2hldnJvbi1kb3VibGUtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzI0In0uZmEtY2hldnJvbi1kb3VibGUtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMzI1In0uZmEtY2hldnJvbi1kb3duOmJlZm9yZXtjb250ZW50OiJcZjA3OCJ9LmZhLWNoZXZyb24tbGVmdDpiZWZvcmV7Y29udGVudDoiXGYwNTMifS5mYS1jaGV2cm9uLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjA1NCJ9LmZhLWNoZXZyb24tc3F1YXJlLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMzI5In0uZmEtY2hldnJvbi1zcXVhcmUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYzMmEifS5mYS1jaGV2cm9uLXNxdWFyZS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYzMmIifS5mYS1jaGV2cm9uLXNxdWFyZS11cDpiZWZvcmV7Y29udGVudDoiXGYzMmMifS5mYS1jaGV2cm9uLXVwOmJlZm9yZXtjb250ZW50OiJcZjA3NyJ9LmZhLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYxMTEifS5mYS1jaXJjbGUtbm90Y2g6YmVmb3Jle2NvbnRlbnQ6IlxmMWNlIn0uZmEtY2l0eTpiZWZvcmV7Y29udGVudDoiXGY2NGYifS5mYS1jbGlwYm9hcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzI4In0uZmEtY2xvY2s6YmVmb3Jle2NvbnRlbnQ6IlxmMDE3In0uZmEtY2xvbmU6YmVmb3Jle2NvbnRlbnQ6IlxmMjRkIn0uZmEtY2xvc2VkLWNhcHRpb25pbmc6YmVmb3Jle2NvbnRlbnQ6IlxmMjBhIn0uZmEtY2xvdWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGMyIn0uZmEtY2xvdWQtZG93bmxvYWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGVkIn0uZmEtY2xvdWQtZG93bmxvYWQtYWx0OmJlZm9yZXtjb250ZW50OiJcZjM4MSJ9LmZhLWNsb3VkLXVwbG9hZDpiZWZvcmV7Y29udGVudDoiXGYwZWUifS5mYS1jbG91ZC11cGxvYWQtYWx0OmJlZm9yZXtjb250ZW50OiJcZjM4MiJ9LmZhLWNsdWI6YmVmb3Jle2NvbnRlbnQ6IlxmMzI3In0uZmEtY29mZmVlOmJlZm9yZXtjb250ZW50OiJcZjBmNCJ9LmZhLWNvZzpiZWZvcmV7Y29udGVudDoiXGYwMTMifS5mYS1jb2dzOmJlZm9yZXtjb250ZW50OiJcZjA4NSJ9LmZhLWNvbW1lbnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDc1In0uZmEtY29tbWVudC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjdhIn0uZmEtY29tbWVudC1hbHQtY2hlY2s6YmVmb3Jle2NvbnRlbnQ6IlxmNGEyIn0uZmEtY29tbWVudC1hbHQtZG9sbGFyOmJlZm9yZXtjb250ZW50OiJcZjY1MCJ9LmZhLWNvbW1lbnQtZG9sbGFyOmJlZm9yZXtjb250ZW50OiJcZjY1MSJ9LmZhLWNvbW1lbnRzOmJlZm9yZXtjb250ZW50OiJcZjA4NiJ9LmZhLWNvbW1lbnRzLWFsdDpiZWZvcmV7Y29udGVudDoiXGY0YjYifS5mYS1jb21tZW50cy1hbHQtZG9sbGFyOmJlZm9yZXtjb250ZW50OiJcZjY1MiJ9LmZhLWNvbW1lbnRzLWRvbGxhcjpiZWZvcmV7Y29udGVudDoiXGY2NTMifS5mYS1jb21wcmVzcy1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmNDIyIn0uZmEtY29tcHJlc3MtYXJyb3dzLWFsdDpiZWZvcmV7Y29udGVudDoiXGY3OGMifS5mYS1jb3B5OmJlZm9yZXtjb250ZW50OiJcZjBjNSJ9LmZhLWNvcHlyaWdodDpiZWZvcmV7Y29udGVudDoiXGYxZjkifS5mYS1jb3VjaDpiZWZvcmV7Y29udGVudDoiXGY0YjgifS5mYS1jcmVhdGl2ZS1jb21tb25zLXNoYXJlOmJlZm9yZXtjb250ZW50OiJcZjRmMiJ9LmZhLWNyZWRpdC1jYXJkOmJlZm9yZXtjb250ZW50OiJcZjA5ZCJ9LmZhLWN1dDpiZWZvcmV7Y29udGVudDoiXGYwYzQifS5mYS1kYXRhYmFzZTpiZWZvcmV7Y29udGVudDoiXGYxYzAifS5mYS1kZXNrdG9wOmJlZm9yZXtjb250ZW50OiJcZjEwOCJ9LmZhLWRpYW1vbmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjE5In0uZmEtZGlnaXRhbC10YWNob2dyYXBoOmJlZm9yZXtjb250ZW50OiJcZjU2NiJ9LmZhLWRvbGxhci1zaWduOmJlZm9yZXtjb250ZW50OiJcZjE1NSJ9LmZhLWRvdC1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTkyIn0uZmEtZG93bmxvYWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDE5In0uZmEtZWRpdDpiZWZvcmV7Y29udGVudDoiXGYwNDQifS5mYS1lbGxpcHNpcy1oOmJlZm9yZXtjb250ZW50OiJcZjE0MSJ9LmZhLWVsbGlwc2lzLWgtYWx0OmJlZm9yZXtjb250ZW50OiJcZjM5YiJ9LmZhLWVsbGlwc2lzLXY6YmVmb3Jle2NvbnRlbnQ6IlxmMTQyIn0uZmEtZWxsaXBzaXMtdi1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzljIn0uZmEtZW5naW5lLXdhcm5pbmc6YmVmb3Jle2NvbnRlbnQ6IlxmNWYyIn0uZmEtZW52ZWxvcGU6YmVmb3Jle2NvbnRlbnQ6IlxmMGUwIn0uZmEtZW52ZWxvcGUtb3BlbjpiZWZvcmV7Y29udGVudDoiXGYyYjYifS5mYS1lbnZlbG9wZS1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTk5In0uZmEtZXJhc2VyOmJlZm9yZXtjb250ZW50OiJcZjEyZCJ9LmZhLWV4Y2hhbmdlOmJlZm9yZXtjb250ZW50OiJcZjBlYyJ9LmZhLWV4Y2hhbmdlLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzNjIifS5mYS1leGNsYW1hdGlvbjpiZWZvcmV7Y29udGVudDoiXGYxMmEifS5mYS1leGNsYW1hdGlvbi1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMDZhIn0uZmEtZXhjbGFtYXRpb24tc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjMyMSJ9LmZhLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlOmJlZm9yZXtjb250ZW50OiJcZjA3MSJ9LmZhLWV4cGFuZC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmNDI0In0uZmEtZXhwYW5kLWFycm93czpiZWZvcmV7Y29udGVudDoiXGYzMWQifS5mYS1leHBhbmQtYXJyb3dzLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzMWUifS5mYS1leHRlcm5hbC1saW5rOmJlZm9yZXtjb250ZW50OiJcZjA4ZSJ9LmZhLWV4dGVybmFsLWxpbmstYWx0OmJlZm9yZXtjb250ZW50OiJcZjM1ZCJ9LmZhLWV4dGVybmFsLWxpbmstc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjE0YyJ9LmZhLWV4dGVybmFsLWxpbmstc3F1YXJlLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzNjAifS5mYS1leWU6YmVmb3Jle2NvbnRlbnQ6IlxmMDZlIn0uZmEtZXllLXNsYXNoOmJlZm9yZXtjb250ZW50OiJcZjA3MCJ9LmZhLWZhY2Vib29rOmJlZm9yZXtjb250ZW50OiJcZjA5YSJ9LmZhLWZhY2Vib29rLWY6YmVmb3Jle2NvbnRlbnQ6IlxmMzllIn0uZmEtZmFjZWJvb2stbWVzc2VuZ2VyOmJlZm9yZXtjb250ZW50OiJcZjM5ZiJ9LmZhLWZhY2Vib29rLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYwODIifS5mYS1mYXg6YmVmb3Jle2NvbnRlbnQ6IlxmMWFjIn0uZmEtZmlsZTpiZWZvcmV7Y29udGVudDoiXGYxNWIifS5mYS1maWxlLWFsdDpiZWZvcmV7Y29udGVudDoiXGYxNWMifS5mYS1maWxlLWFyY2hpdmU6YmVmb3Jle2NvbnRlbnQ6IlxmMWM2In0uZmEtZmlsZS1hdWRpbzpiZWZvcmV7Y29udGVudDoiXGYxYzcifS5mYS1maWxlLWNoYXJ0LWxpbmU6YmVmb3Jle2NvbnRlbnQ6IlxmNjU5In0uZmEtZmlsZS1jaGVjazpiZWZvcmV7Y29udGVudDoiXGYzMTYifS5mYS1maWxlLWNvZGU6YmVmb3Jle2NvbnRlbnQ6IlxmMWM5In0uZmEtZmlsZS1kb3dubG9hZDpiZWZvcmV7Y29udGVudDoiXGY1NmQifS5mYS1maWxlLWVkaXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzFjIn0uZmEtZmlsZS1leGNlbDpiZWZvcmV7Y29udGVudDoiXGYxYzMifS5mYS1maWxlLWV4Y2xhbWF0aW9uOmJlZm9yZXtjb250ZW50OiJcZjMxYSJ9LmZhLWZpbGUtZXhwb3J0OmJlZm9yZXtjb250ZW50OiJcZjU2ZSJ9LmZhLWZpbGUtaW1hZ2U6YmVmb3Jle2NvbnRlbnQ6IlxmMWM1In0uZmEtZmlsZS1pbXBvcnQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTZmIn0uZmEtZmlsZS1pbnZvaWNlLWRvbGxhcjpiZWZvcmV7Y29udGVudDoiXGY1NzEifS5mYS1maWxlLW1pbnVzOmJlZm9yZXtjb250ZW50OiJcZjMxOCJ9LmZhLWZpbGUtbXVzaWM6YmVmb3Jle2NvbnRlbnQ6IlxmOGI2In0uZmEtZmlsZS1wZGY6YmVmb3Jle2NvbnRlbnQ6IlxmMWMxIn0uZmEtZmlsZS1wbHVzOmJlZm9yZXtjb250ZW50OiJcZjMxOSJ9LmZhLWZpbGUtcG93ZXJwb2ludDpiZWZvcmV7Y29udGVudDoiXGYxYzQifS5mYS1maWxlLXNlYXJjaDpiZWZvcmV7Y29udGVudDoiXGY4NjUifS5mYS1maWxlLXRpbWVzOmJlZm9yZXtjb250ZW50OiJcZjMxNyJ9LmZhLWZpbGUtdXBsb2FkOmJlZm9yZXtjb250ZW50OiJcZjU3NCJ9LmZhLWZpbGUtdmlkZW86YmVmb3Jle2NvbnRlbnQ6IlxmMWM4In0uZmEtZmlsZS13b3JkOmJlZm9yZXtjb250ZW50OiJcZjFjMiJ9LmZhLWZpbHRlcjpiZWZvcmV7Y29udGVudDoiXGYwYjAifS5mYS1maW5nZXJwcmludDpiZWZvcmV7Y29udGVudDoiXGY1NzcifS5mYS1maXJlOmJlZm9yZXtjb250ZW50OiJcZjA2ZCJ9LmZhLWZsYWc6YmVmb3Jle2NvbnRlbnQ6IlxmMDI0In0uZmEtZmxhZy1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmNzRjIn0uZmEtZmxhZy1jaGVja2VyZWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTFlIn0uZmEtZmx1eC1jYXBhY2l0b3I6YmVmb3Jle2NvbnRlbnQ6IlxmOGJhIn0uZmEtZm9sZGVyOmJlZm9yZXtjb250ZW50OiJcZjA3YiJ9LmZhLWZvbGRlci1kb3dubG9hZDpiZWZvcmV7Y29udGVudDoiXGUwNTMifS5mYS1mb2xkZXItb3BlbjpiZWZvcmV7Y29udGVudDoiXGYwN2MifS5mYS1mb2xkZXItdXBsb2FkOmJlZm9yZXtjb250ZW50OiJcZTA1NCJ9LmZhLWZyb3duOmJlZm9yZXtjb250ZW50OiJcZjExOSJ9LmZhLWZyb3duLW9wZW46YmVmb3Jle2NvbnRlbnQ6IlxmNTdhIn0uZmEtZ2FsYWN0aWMtc2VuYXRlOmJlZm9yZXtjb250ZW50OiJcZjUwZCJ9LmZhLWdhcmFnZTpiZWZvcmV7Y29udGVudDoiXGUwMDkifS5mYS1nYXJhZ2UtY2FyOmJlZm9yZXtjb250ZW50OiJcZTAwYSJ9LmZhLWdhcmFnZS1vcGVuOmJlZm9yZXtjb250ZW50OiJcZTAwYiJ9LmZhLWdhcy1wdW1wOmJlZm9yZXtjb250ZW50OiJcZjUyZiJ9LmZhLWdhcy1wdW1wLXNsYXNoOmJlZm9yZXtjb250ZW50OiJcZjVmNCJ9LmZhLWdsYXNzZXM6YmVmb3Jle2NvbnRlbnQ6IlxmNTMwIn0uZmEtZ2xvYmU6YmVmb3Jle2NvbnRlbnQ6IlxmMGFjIn0uZmEtZ29vZ2xlOmJlZm9yZXtjb250ZW50OiJcZjFhMCJ9LmZhLWdyaXAtaG9yaXpvbnRhbDpiZWZvcmV7Y29udGVudDoiXGY1OGQifS5mYS1ncmlwLWxpbmVzOmJlZm9yZXtjb250ZW50OiJcZjdhNCJ9LmZhLWdyaXAtbGluZXMtdmVydGljYWw6YmVmb3Jle2NvbnRlbnQ6IlxmN2E1In0uZmEtZ3JpcC12ZXJ0aWNhbDpiZWZvcmV7Y29udGVudDoiXGY1OGUifS5mYS1oYW5kLWhvbGRpbmctdXNkOmJlZm9yZXtjb250ZW50OiJcZjRjMCJ9LmZhLWhhbmQtcG9pbnQtZG93bjpiZWZvcmV7Y29udGVudDoiXGYwYTcifS5mYS1oYW5kLXBvaW50LWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGE1In0uZmEtaGFuZC1wb2ludC1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYwYTQifS5mYS1oYW5kLXBvaW50LXVwOmJlZm9yZXtjb250ZW50OiJcZjBhNiJ9LmZhLWhhbmQtcG9pbnRlcjpiZWZvcmV7Y29udGVudDoiXGYyNWEifS5mYS1oYW5kcy11c2Q6YmVmb3Jle2NvbnRlbnQ6IlxmNGM1In0uZmEtaGFzaHRhZzpiZWZvcmV7Y29udGVudDoiXGYyOTIifS5mYS1oZWFydDpiZWZvcmV7Y29udGVudDoiXGYwMDQifS5mYS1oZWFydC1icm9rZW46YmVmb3Jle2NvbnRlbnQ6IlxmN2E5In0uZmEtaGV4YWdvbjpiZWZvcmV7Y29udGVudDoiXGYzMTIifS5mYS1oaXN0b3J5OmJlZm9yZXtjb250ZW50OiJcZjFkYSJ9LmZhLWhvbWU6YmVmb3Jle2NvbnRlbnQ6IlxmMDE1In0uZmEtaG9tZS1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmODBhIn0uZmEtaG9tZS1sZzpiZWZvcmV7Y29udGVudDoiXGY4MGIifS5mYS1ob21lLWxnLWFsdDpiZWZvcmV7Y29udGVudDoiXGY4MGMifS5mYS1ob3VzZTpiZWZvcmV7Y29udGVudDoiXGUwMGQifS5mYS1pLWN1cnNvcjpiZWZvcmV7Y29udGVudDoiXGYyNDYifS5mYS1pbmJveDpiZWZvcmV7Y29udGVudDoiXGYwMWMifS5mYS1pbmJveC1pbjpiZWZvcmV7Y29udGVudDoiXGYzMTAifS5mYS1pbmJveC1vdXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzExIn0uZmEtaW5mbzpiZWZvcmV7Y29udGVudDoiXGYxMjkifS5mYS1pbmZvLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYwNWEifS5mYS1pbmZvLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYzMGYifS5mYS1pbnN0YWdyYW06YmVmb3Jle2NvbnRlbnQ6IlxmMTZkIn0uZmEtaW5zdGFncmFtLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGUwNTUifS5mYS1rZXk6YmVmb3Jle2NvbnRlbnQ6IlxmMDg0In0uZmEtbGFuZ3VhZ2U6YmVmb3Jle2NvbnRlbnQ6IlxmMWFiIn0uZmEtbGFzc286YmVmb3Jle2NvbnRlbnQ6IlxmOGM4In0uZmEtbGVhZjpiZWZvcmV7Y29udGVudDoiXGYwNmMifS5mYS1sZXZlbC1kb3duOmJlZm9yZXtjb250ZW50OiJcZjE0OSJ9LmZhLWxldmVsLWRvd24tYWx0OmJlZm9yZXtjb250ZW50OiJcZjNiZSJ9LmZhLWxldmVsLXVwOmJlZm9yZXtjb250ZW50OiJcZjE0OCJ9LmZhLWxldmVsLXVwLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzYmYifS5mYS1saW5rZWRpbjpiZWZvcmV7Y29udGVudDoiXGYwOGMifS5mYS1saW5rZWRpbi1pbjpiZWZvcmV7Y29udGVudDoiXGYwZTEifS5mYS1sb2NhdGlvbi1hcnJvdzpiZWZvcmV7Y29udGVudDoiXGYxMjQifS5mYS1sb25nLWFycm93LWFsdC1kb3duOmJlZm9yZXtjb250ZW50OiJcZjMwOSJ9LmZhLWxvbmctYXJyb3ctYWx0LWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzBhIn0uZmEtbG9uZy1hcnJvdy1hbHQtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzBiIn0uZmEtbG9uZy1hcnJvdy1hbHQtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMzBjIn0uZmEtbG9uZy1hcnJvdy1kb3duOmJlZm9yZXtjb250ZW50OiJcZjE3NSJ9LmZhLWxvbmctYXJyb3ctbGVmdDpiZWZvcmV7Y29udGVudDoiXGYxNzcifS5mYS1sb25nLWFycm93LXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjE3OCJ9LmZhLWxvbmctYXJyb3ctdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMTc2In0uZmEtbWFnaWM6YmVmb3Jle2NvbnRlbnQ6IlxmMGQwIn0uZmEtbWFwOmJlZm9yZXtjb250ZW50OiJcZjI3OSJ9LmZhLW1hcC1tYXJrZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMDQxIn0uZmEtbWFwLW1hcmtlci1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2M1In0uZmEtbWFwLXBpbjpiZWZvcmV7Y29udGVudDoiXGYyNzYifS5mYS1tYXAtc2lnbnM6YmVmb3Jle2NvbnRlbnQ6IlxmMjc3In0uZmEtbWFya2VyOmJlZm9yZXtjb250ZW50OiJcZjVhMSJ9LmZhLW1lZGFsOmJlZm9yZXtjb250ZW50OiJcZjVhMiJ9LmZhLW1laDpiZWZvcmV7Y29udGVudDoiXGYxMWEifS5mYS1taWNyb2NoaXA6YmVmb3Jle2NvbnRlbnQ6IlxmMmRiIn0uZmEtbWljcm9waG9uZTpiZWZvcmV7Y29udGVudDoiXGYxMzAifS5mYS1taWNyb3Bob25lLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzYzkifS5mYS1taWNyb3Bob25lLWFsdC1zbGFzaDpiZWZvcmV7Y29udGVudDoiXGY1MzkifS5mYS1taWNyb3Bob25lLXNsYXNoOmJlZm9yZXtjb250ZW50OiJcZjEzMSJ9LmZhLW1pbmQtc2hhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmNjc3In0uZmEtbWludXM6YmVmb3Jle2NvbnRlbnQ6IlxmMDY4In0uZmEtbWludXMtY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjA1NiJ9LmZhLW1pbnVzLWhleGFnb246YmVmb3Jle2NvbnRlbnQ6IlxmMzA3In0uZmEtbWludXMtb2N0YWdvbjpiZWZvcmV7Y29udGVudDoiXGYzMDgifS5mYS1taW51cy1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTQ2In0uZmEtbW9iaWxlOmJlZm9yZXtjb250ZW50OiJcZjEwYiJ9LmZhLW1vYmlsZS1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2NkIn0uZmEtbW9iaWxlLWFuZHJvaWQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2NlIn0uZmEtbW9iaWxlLWFuZHJvaWQtYWx0OmJlZm9yZXtjb250ZW50OiJcZjNjZiJ9LmZhLW1vbmV5LWNoZWNrOmJlZm9yZXtjb250ZW50OiJcZjUzYyJ9LmZhLW1vbmV5LWNoZWNrLWFsdDpiZWZvcmV7Y29udGVudDoiXGY1M2QifS5mYS1tb25leS1jaGVjay1lZGl0OmJlZm9yZXtjb250ZW50OiJcZjg3MiJ9LmZhLW1vbmV5LWNoZWNrLWVkaXQtYWx0OmJlZm9yZXtjb250ZW50OiJcZjg3MyJ9LmZhLW1vdG9yY3ljbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMjFjIn0uZmEtbW91bnRhaW46YmVmb3Jle2NvbnRlbnQ6IlxmNmZjIn0uZmEtbW91c2UtcG9pbnRlcjpiZWZvcmV7Y29udGVudDoiXGYyNDUifS5mYS1tcDMtcGxheWVyOmJlZm9yZXtjb250ZW50OiJcZjhjZSJ9LmZhLW11c2ljOmJlZm9yZXtjb250ZW50OiJcZjAwMSJ9LmZhLW9jdGFnb246YmVmb3Jle2NvbnRlbnQ6IlxmMzA2In0uZmEtb2lsLWNhbjpiZWZvcmV7Y29udGVudDoiXGY2MTMifS5mYS1vaWwtdGVtcDpiZWZvcmV7Y29udGVudDoiXGY2MTQifS5mYS1wYWludC1icnVzaDpiZWZvcmV7Y29udGVudDoiXGYxZmMifS5mYS1wYWxldHRlOmJlZm9yZXtjb250ZW50OiJcZjUzZiJ9LmZhLXBhcGVyLXBsYW5lOmJlZm9yZXtjb250ZW50OiJcZjFkOCJ9LmZhLXBhc3RlOmJlZm9yZXtjb250ZW50OiJcZjBlYSJ9LmZhLXBheXBhbDpiZWZvcmV7Y29udGVudDoiXGYxZWQifS5mYS1wZW46YmVmb3Jle2NvbnRlbnQ6IlxmMzA0In0uZmEtcGVuLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzMDUifS5mYS1wZW4tZmFuY3k6YmVmb3Jle2NvbnRlbnQ6IlxmNWFjIn0uZmEtcGVuY2lsOmJlZm9yZXtjb250ZW50OiJcZjA0MCJ9LmZhLXBlbmNpbC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzAzIn0uZmEtcGVuY2lsLXJ1bGVyOmJlZm9yZXtjb250ZW50OiJcZjVhZSJ9LmZhLXBlb3BsZS1hcnJvd3M6YmVmb3Jle2NvbnRlbnQ6IlxlMDY4In0uZmEtcGhvbmU6YmVmb3Jle2NvbnRlbnQ6IlxmMDk1In0uZmEtcGhvbmUtYWx0OmJlZm9yZXtjb250ZW50OiJcZjg3OSJ9LmZhLXBob25lLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYwOTgifS5mYS1waG9uZS1zcXVhcmUtYWx0OmJlZm9yZXtjb250ZW50OiJcZjg3YiJ9LmZhLXBob25lLXZvbHVtZTpiZWZvcmV7Y29udGVudDoiXGYyYTAifS5mYS1waG90by12aWRlbzpiZWZvcmV7Y29udGVudDoiXGY4N2MifS5mYS1waW50ZXJlc3Q6YmVmb3Jle2NvbnRlbnQ6IlxmMGQyIn0uZmEtcGludGVyZXN0LXA6YmVmb3Jle2NvbnRlbnQ6IlxmMjMxIn0uZmEtcGludGVyZXN0LXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYwZDMifS5mYS1wbGF5OmJlZm9yZXtjb250ZW50OiJcZjA0YiJ9LmZhLXBsYXktY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjE0NCJ9LmZhLXBsdWc6YmVmb3Jle2NvbnRlbnQ6IlxmMWU2In0uZmEtcGx1czpiZWZvcmV7Y29udGVudDoiXGYwNjcifS5mYS1wbHVzLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYwNTUifS5mYS1wbHVzLWhleGFnb246YmVmb3Jle2NvbnRlbnQ6IlxmMzAwIn0uZmEtcGx1cy1vY3RhZ29uOmJlZm9yZXtjb250ZW50OiJcZjMwMSJ9LmZhLXBsdXMtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjBmZSJ9LmZhLXBvbzpiZWZvcmV7Y29udGVudDoiXGYyZmUifS5mYS1wcmludDpiZWZvcmV7Y29udGVudDoiXGYwMmYifS5mYS1xcmNvZGU6YmVmb3Jle2NvbnRlbnQ6IlxmMDI5In0uZmEtcXVlc3Rpb246YmVmb3Jle2NvbnRlbnQ6IlxmMTI4In0uZmEtcXVlc3Rpb24tY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjA1OSJ9LmZhLXF1ZXN0aW9uLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYyZmQifS5mYS1xdW90ZS1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjEwZCJ9LmZhLXF1b3RlLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjEwZSJ9LmZhLXJhbmRvbTpiZWZvcmV7Y29udGVudDoiXGYwNzQifS5mYS1yZWN0YW5nbGUtbGFuZHNjYXBlOmJlZm9yZXtjb250ZW50OiJcZjJmYSJ9LmZhLXJlY3RhbmdsZS1wb3J0cmFpdDpiZWZvcmV7Y29udGVudDoiXGYyZmIifS5mYS1yZWN0YW5nbGUtd2lkZTpiZWZvcmV7Y29udGVudDoiXGYyZmMifS5mYS1yZWN5Y2xlOmJlZm9yZXtjb250ZW50OiJcZjFiOCJ9LmZhLXJlZG86YmVmb3Jle2NvbnRlbnQ6IlxmMDFlIn0uZmEtcmVkby1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMmY5In0uZmEtcmVwZWF0OmJlZm9yZXtjb250ZW50OiJcZjM2MyJ9LmZhLXJlcGVhdC0xOmJlZm9yZXtjb250ZW50OiJcZjM2NSJ9LmZhLXJlcGVhdC0xLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzNjYifS5mYS1yZXBlYXQtYWx0OmJlZm9yZXtjb250ZW50OiJcZjM2NCJ9LmZhLXJlcGx5OmJlZm9yZXtjb250ZW50OiJcZjNlNSJ9LmZhLXJlcGx5LWFsbDpiZWZvcmV7Y29udGVudDoiXGYxMjIifS5mYS1yZXR3ZWV0OmJlZm9yZXtjb250ZW50OiJcZjA3OSJ9LmZhLXJldHdlZXQtYWx0OmJlZm9yZXtjb250ZW50OiJcZjM2MSJ9LmZhLXJvYWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDE4In0uZmEtcm9ib3Q6YmVmb3Jle2NvbnRlbnQ6IlxmNTQ0In0uZmEtcnNzOmJlZm9yZXtjb250ZW50OiJcZjA5ZSJ9LmZhLXJzcy1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTQzIn0uZmEtcnY6YmVmb3Jle2NvbnRlbnQ6IlxmN2JlIn0uZmEtc2F2ZTpiZWZvcmV7Y29udGVudDoiXGYwYzcifS5mYS1zY3Jld2RyaXZlcjpiZWZvcmV7Y29udGVudDoiXGY1NGEifS5mYS1zZWFyY2g6YmVmb3Jle2NvbnRlbnQ6IlxmMDAyIn0uZmEtc2VhcmNoLW1pbnVzOmJlZm9yZXtjb250ZW50OiJcZjAxMCJ9LmZhLXNlYXJjaC1wbHVzOmJlZm9yZXtjb250ZW50OiJcZjAwZSJ9LmZhLXNoYXBlczpiZWZvcmV7Y29udGVudDoiXGY2MWYifS5mYS1zaGFyZTpiZWZvcmV7Y29udGVudDoiXGYwNjQifS5mYS1zaGFyZS1hbGw6YmVmb3Jle2NvbnRlbnQ6IlxmMzY3In0uZmEtc2hhcmUtYWx0OmJlZm9yZXtjb250ZW50OiJcZjFlMCJ9LmZhLXNoYXJlLWFsdC1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMWUxIn0uZmEtc2hhcmUtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjE0ZCJ9LmZhLXNoaWVsZDpiZWZvcmV7Y29udGVudDoiXGYxMzIifS5mYS1zaGllbGQtYWx0OmJlZm9yZXtjb250ZW50OiJcZjNlZCJ9LmZhLXNob3BwaW5nLWJhc2tldDpiZWZvcmV7Y29udGVudDoiXGYyOTEifS5mYS1zaG9wcGluZy1jYXJ0OmJlZm9yZXtjb250ZW50OiJcZjA3YSJ9LmZhLXNodXR0bGUtdmFuOmJlZm9yZXtjb250ZW50OiJcZjViNiJ9LmZhLXNpZ24taW46YmVmb3Jle2NvbnRlbnQ6IlxmMDkwIn0uZmEtc2lnbi1pbi1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMmY2In0uZmEtc2lnbi1vdXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDhiIn0uZmEtc2lnbi1vdXQtYWx0OmJlZm9yZXtjb250ZW50OiJcZjJmNSJ9LmZhLXNpZ25hbDpiZWZvcmV7Y29udGVudDoiXGYwMTIifS5mYS1zaWduYWwtc3RyZWFtOmJlZm9yZXtjb250ZW50OiJcZjhkZCJ9LmZhLXNpdGVtYXA6YmVmb3Jle2NvbnRlbnQ6IlxmMGU4In0uZmEtc2xpZGVycy1oOmJlZm9yZXtjb250ZW50OiJcZjFkZSJ9LmZhLXNsaWRlcnMtaC1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmM2YwIn0uZmEtc2xpZGVycy12OmJlZm9yZXtjb250ZW50OiJcZjNmMSJ9LmZhLXNsaWRlcnMtdi1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmM2YyIn0uZmEtc21pbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTE4In0uZmEtc21zOmJlZm9yZXtjb250ZW50OiJcZjdjZCJ9LmZhLXNub3dmbGFrZTpiZWZvcmV7Y29udGVudDoiXGYyZGMifS5mYS1zb3J0OmJlZm9yZXtjb250ZW50OiJcZjBkYyJ9LmZhLXNvcnQtYWxwaGEtZG93bjpiZWZvcmV7Y29udGVudDoiXGYxNWQifS5mYS1zb3J0LWFscGhhLWRvd24tYWx0OmJlZm9yZXtjb250ZW50OiJcZjg4MSJ9LmZhLXNvcnQtYWxwaGEtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMTVlIn0uZmEtc29ydC1hbHBoYS11cC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmODgyIn0uZmEtc29ydC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmODgzIn0uZmEtc29ydC1hbW91bnQtZG93bjpiZWZvcmV7Y29udGVudDoiXGYxNjAifS5mYS1zb3J0LWFtb3VudC1kb3duLWFsdDpiZWZvcmV7Y29udGVudDoiXGY4ODQifS5mYS1zb3J0LWFtb3VudC11cDpiZWZvcmV7Y29udGVudDoiXGYxNjEifS5mYS1zb3J0LWFtb3VudC11cC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmODg1In0uZmEtc29ydC1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxlMDMwIn0uZmEtc29ydC1jaXJjbGUtZG93bjpiZWZvcmV7Y29udGVudDoiXGUwMzEifS5mYS1zb3J0LWNpcmNsZS11cDpiZWZvcmV7Y29udGVudDoiXGUwMzIifS5mYS1zb3J0LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMGRkIn0uZmEtc29ydC1udW1lcmljLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTYyIn0uZmEtc29ydC1udW1lcmljLWRvd24tYWx0OmJlZm9yZXtjb250ZW50OiJcZjg4NiJ9LmZhLXNvcnQtbnVtZXJpYy11cDpiZWZvcmV7Y29udGVudDoiXGYxNjMifS5mYS1zb3J0LW51bWVyaWMtdXAtYWx0OmJlZm9yZXtjb250ZW50OiJcZjg4NyJ9LmZhLXNvcnQtc2hhcGVzLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmODg4In0uZmEtc29ydC1zaGFwZXMtZG93bi1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmODg5In0uZmEtc29ydC1zaGFwZXMtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmODhhIn0uZmEtc29ydC1zaGFwZXMtdXAtYWx0OmJlZm9yZXtjb250ZW50OiJcZjg4YiJ9LmZhLXNvcnQtc2l6ZS1kb3duOmJlZm9yZXtjb250ZW50OiJcZjg4YyJ9LmZhLXNvcnQtc2l6ZS1kb3duLWFsdDpiZWZvcmV7Y29udGVudDoiXGY4OGQifS5mYS1zb3J0LXNpemUtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmODhlIn0uZmEtc29ydC1zaXplLXVwLWFsdDpiZWZvcmV7Y29udGVudDoiXGY4OGYifS5mYS1zb3J0LXVwOmJlZm9yZXtjb250ZW50OiJcZjBkZSJ9LmZhLXNwYWRlOmJlZm9yZXtjb250ZW50OiJcZjJmNCJ9LmZhLXNwaW5uZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMTEwIn0uZmEtc3Bpbm5lci10aGlyZDpiZWZvcmV7Y29udGVudDoiXGYzZjQifS5mYS1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMGM4In0uZmEtc3RhcjpiZWZvcmV7Y29udGVudDoiXGYwMDUifS5mYS1zdGFyLWV4Y2xhbWF0aW9uOmJlZm9yZXtjb250ZW50OiJcZjJmMyJ9LmZhLXN0YXItaGFsZjpiZWZvcmV7Y29udGVudDoiXGYwODkifS5mYS1zdGFyLWhhbGYtYWx0OmJlZm9yZXtjb250ZW50OiJcZjVjMCJ9LmZhLXN0ZWVyaW5nLXdoZWVsOmJlZm9yZXtjb250ZW50OiJcZjYyMiJ9LmZhLXN0aWNreS1ub3RlOmJlZm9yZXtjb250ZW50OiJcZjI0OSJ9LmZhLXN0b3B3YXRjaDpiZWZvcmV7Y29udGVudDoiXGYyZjIifS5mYS1zdG9yZTpiZWZvcmV7Y29udGVudDoiXGY1NGUifS5mYS1zdG9yZS1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTRmIn0uZmEtc3VpdGNhc2Utcm9sbGluZzpiZWZvcmV7Y29udGVudDoiXGY1YzEifS5mYS1zdW46YmVmb3Jle2NvbnRlbnQ6IlxmMTg1In0uZmEtc3luYzpiZWZvcmV7Y29udGVudDoiXGYwMjEifS5mYS1zeW5jLWFsdDpiZWZvcmV7Y29udGVudDoiXGYyZjEifS5mYS10YWJsZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTBhIn0uZmEtdGFibGV0LWFsdDpiZWZvcmV7Y29udGVudDoiXGYzZmEifS5mYS10YWNob21ldGVyOmJlZm9yZXtjb250ZW50OiJcZjBlNCJ9LmZhLXRhY2hvbWV0ZXItYWx0OmJlZm9yZXtjb250ZW50OiJcZjNmZCJ9LmZhLXRhY2hvbWV0ZXItYWx0LWF2ZXJhZ2U6YmVmb3Jle2NvbnRlbnQ6IlxmNjI0In0uZmEtdGFjaG9tZXRlci1hbHQtZmFzdDpiZWZvcmV7Y29udGVudDoiXGY2MjUifS5mYS10YWNob21ldGVyLWFsdC1mYXN0ZXN0OmJlZm9yZXtjb250ZW50OiJcZjYyNiJ9LmZhLXRhY2hvbWV0ZXItYWx0LXNsb3c6YmVmb3Jle2NvbnRlbnQ6IlxmNjI3In0uZmEtdGFjaG9tZXRlci1hbHQtc2xvd2VzdDpiZWZvcmV7Y29udGVudDoiXGY2MjgifS5mYS10YWNob21ldGVyLWF2ZXJhZ2U6YmVmb3Jle2NvbnRlbnQ6IlxmNjI5In0uZmEtdGFjaG9tZXRlci1mYXN0OmJlZm9yZXtjb250ZW50OiJcZjYyYSJ9LmZhLXRhY2hvbWV0ZXItZmFzdGVzdDpiZWZvcmV7Y29udGVudDoiXGY2MmIifS5mYS10YWNob21ldGVyLXNsb3c6YmVmb3Jle2NvbnRlbnQ6IlxmNjJjIn0uZmEtdGFjaG9tZXRlci1zbG93ZXN0OmJlZm9yZXtjb250ZW50OiJcZjYyZCJ9LmZhLXRhZzpiZWZvcmV7Y29udGVudDoiXGYwMmIifS5mYS10YWdzOmJlZm9yZXtjb250ZW50OiJcZjAyYyJ9LmZhLXRheGk6YmVmb3Jle2NvbnRlbnQ6IlxmMWJhIn0uZmEtdGVtcGVyYXR1cmUtaGlnaDpiZWZvcmV7Y29udGVudDoiXGY3NjkifS5mYS10ZW1wZXJhdHVyZS1sb3c6YmVmb3Jle2NvbnRlbnQ6IlxmNzZiIn0uZmEtdGV4dC1oZWlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDM0In0uZmEtdGV4dC13aWR0aDpiZWZvcmV7Y29udGVudDoiXGYwMzUifS5mYS10aGVybW9tZXRlci1oYWxmOmJlZm9yZXtjb250ZW50OiJcZjJjOSJ9LmZhLXRodW1icy1kb3duOmJlZm9yZXtjb250ZW50OiJcZjE2NSJ9LmZhLXRodW1icy11cDpiZWZvcmV7Y29udGVudDoiXGYxNjQifS5mYS10aWNrZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTQ1In0uZmEtdGlrdG9rOmJlZm9yZXtjb250ZW50OiJcZTA3YiJ9LmZhLXRpbWVzOmJlZm9yZXtjb250ZW50OiJcZjAwZCJ9LmZhLXRpbWVzLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYwNTcifS5mYS10aW1lcy1oZXhhZ29uOmJlZm9yZXtjb250ZW50OiJcZjJlZSJ9LmZhLXRpbWVzLW9jdGFnb246YmVmb3Jle2NvbnRlbnQ6IlxmMmYwIn0uZmEtdGltZXMtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjJkMyJ9LmZhLXRpbnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDQzIn0uZmEtdGlyZTpiZWZvcmV7Y29udGVudDoiXGY2MzEifS5mYS10aXJlLWZsYXQ6YmVmb3Jle2NvbnRlbnQ6IlxmNjMyIn0uZmEtdGlyZS1wcmVzc3VyZS13YXJuaW5nOmJlZm9yZXtjb250ZW50OiJcZjYzMyJ9LmZhLXRpcmUtcnVnZ2VkOmJlZm9yZXtjb250ZW50OiJcZjYzNCJ9LmZhLXRvZ2dsZS1vZmY6YmVmb3Jle2NvbnRlbnQ6IlxmMjA0In0uZmEtdG9nZ2xlLW9uOmJlZm9yZXtjb250ZW50OiJcZjIwNSJ9LmZhLXRvb2xzOmJlZm9yZXtjb250ZW50OiJcZjdkOSJ9LmZhLXRyYWlsZXI6YmVmb3Jle2NvbnRlbnQ6IlxlMDQxIn0uZmEtdHJhc2g6YmVmb3Jle2NvbnRlbnQ6IlxmMWY4In0uZmEtdHJhc2gtYWx0OmJlZm9yZXtjb250ZW50OiJcZjJlZCJ9LmZhLXRyYXNoLXJlc3RvcmU6YmVmb3Jle2NvbnRlbnQ6IlxmODI5In0uZmEtdHJhc2gtcmVzdG9yZS1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmODJhIn0uZmEtdHJhc2gtdW5kbzpiZWZvcmV7Y29udGVudDoiXGY4OTUifS5mYS10cmFzaC11bmRvLWFsdDpiZWZvcmV7Y29udGVudDoiXGY4OTYifS5mYS10cmlhbmdsZTpiZWZvcmV7Y29udGVudDoiXGYyZWMifS5mYS10cm9waHk6YmVmb3Jle2NvbnRlbnQ6IlxmMDkxIn0uZmEtdHJvcGh5LWFsdDpiZWZvcmV7Y29udGVudDoiXGYyZWIifS5mYS10cnVjazpiZWZvcmV7Y29udGVudDoiXGYwZDEifS5mYS10cnVjay1sb2FkaW5nOmJlZm9yZXtjb250ZW50OiJcZjRkZSJ9LmZhLXRydWNrLW1vbnN0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNjNiIn0uZmEtdHJ1Y2stcGlja3VwOmJlZm9yZXtjb250ZW50OiJcZjYzYyJ9LmZhLXR0eTpiZWZvcmV7Y29udGVudDoiXGYxZTQifS5mYS10djpiZWZvcmV7Y29udGVudDoiXGYyNmMifS5mYS10d2l0dGVyOmJlZm9yZXtjb250ZW50OiJcZjA5OSJ9LmZhLXR3aXR0ZXItc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjA4MSJ9LmZhLXVuZG86YmVmb3Jle2NvbnRlbnQ6IlxmMGUyIn0uZmEtdW5kby1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMmVhIn0uZmEtdXBsb2FkOmJlZm9yZXtjb250ZW50OiJcZjA5MyJ9LmZhLXVzZC1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMmU4In0uZmEtdXNkLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYyZTkifS5mYS11c2VyOmJlZm9yZXtjb250ZW50OiJcZjAwNyJ9LmZhLXVzZXItYWx0OmJlZm9yZXtjb250ZW50OiJcZjQwNiJ9LmZhLXVzZXItY2hlY2s6YmVmb3Jle2NvbnRlbnQ6IlxmNGZjIn0uZmEtdXNlci1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMmJkIn0uZmEtdXNlci1mcmllbmRzOmJlZm9yZXtjb250ZW50OiJcZjUwMCJ9LmZhLXVzZXJzOmJlZm9yZXtjb250ZW50OiJcZjBjMCJ9LmZhLXZpZGVvOmJlZm9yZXtjb250ZW50OiJcZjAzZCJ9LmZhLXZvaWNlbWFpbDpiZWZvcmV7Y29udGVudDoiXGY4OTcifS5mYS12b2x1bWU6YmVmb3Jle2NvbnRlbnQ6IlxmNmE4In0uZmEtdm9sdW1lLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMDI3In0uZmEtdm9sdW1lLW11dGU6YmVmb3Jle2NvbnRlbnQ6IlxmNmE5In0uZmEtdm9sdW1lLW9mZjpiZWZvcmV7Y29udGVudDoiXGYwMjYifS5mYS12b2x1bWUtc2xhc2g6YmVmb3Jle2NvbnRlbnQ6IlxmMmUyIn0uZmEtdm9sdW1lLXVwOmJlZm9yZXtjb250ZW50OiJcZjAyOCJ9LmZhLXdhZ29uLWNvdmVyZWQ6YmVmb3Jle2NvbnRlbnQ6IlxmOGVlIn0uZmEtd2Fsa2llLXRhbGtpZTpiZWZvcmV7Y29udGVudDoiXGY4ZWYifS5mYS13ZWJjYW06YmVmb3Jle2NvbnRlbnQ6IlxmODMyIn0uZmEtd2ViY2FtLXNsYXNoOmJlZm9yZXtjb250ZW50OiJcZjgzMyJ9LmZhLXdoZWVsY2hhaXI6YmVmb3Jle2NvbnRlbnQ6IlxmMTkzIn0uZmEtd2lmaTpiZWZvcmV7Y29udGVudDoiXGYxZWIifS5mYS13cmVuY2g6YmVmb3Jle2NvbnRlbnQ6IlxmMGFkIn0uZmEteW91dHViZTpiZWZvcmV7Y29udGVudDoiXGYxNjcifS5mYS15b3V0dWJlLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGY0MzEifS5mYS1zaGllbGQtY2hlY2s6YmVmb3Jle2NvbnRlbnQ6IlxmMmY3In0uZmEtbGluazpiZWZvcmV7Y29udGVudDoiXGYwYzEifS5mYS11bmxpbms6YmVmb3Jle2NvbnRlbnQ6IlxmMTI3In0uZmEtYmFkZ2UtZG9sbGFyOmJlZm9yZXtjb250ZW50OiJcZjY0NSJ9LmZhLXBlbi1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTRiIn0uZmEtY29tbWVudC1hbHQtZG90czpiZWZvcmV7Y29udGVudDoiXGY0YTMifS5mYS1hcnJvdy1kb3duLXRvLWxpbmU6YmVmb3Jle2NvbnRlbnQ6IlxmMzNkIn0uZmEtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzU2Ijt9LnNyLW9ubHl7Ym9yZGVyOjA7Y2xpcDpyZWN0KDAsMCwwLDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHh9LnNyLW9ubHktZm9jdXNhYmxlOmFjdGl2ZSwuc3Itb25seS1mb2N1c2FibGU6Zm9jdXN7Y2xpcDphdXRvO2hlaWdodDphdXRvO21hcmdpbjowO292ZXJmbG93OnZpc2libGU7cG9zaXRpb246c3RhdGljO3dpZHRoOmF1dG99QGZvbnQtZmFjZXtmb250LWZhbWlseTonRm9udCBBd2Vzb21lIDUgQnJhbmRzJztmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDo0MDA7Zm9udC1kaXNwbGF5OmJsb2NrO3NyYzp1cmwoLy9mb250cy5kMmNtZWRpYS5jYS93ZWJmb250cy9kZXNrdG9wLWF3ZXNvbWUvd2ViZm9udHMvZmEtYnJhbmRzLTQwMC5lb3QpO3NyYzp1cmwoLy9mb250cy5kMmNtZWRpYS5jYS93ZWJmb250cy9kZXNrdG9wLWF3ZXNvbWUvd2ViZm9udHMvZmEtYnJhbmRzLTQwMC5lb3Q\/I2llZml4KSBmb3JtYXQoImVtYmVkZGVkLW9wZW50eXBlIiksdXJsKC8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZGVza3RvcC1hd2Vzb21lL3dlYmZvbnRzL2ZhLWJyYW5kcy00MDAud29mZjIpIGZvcm1hdCgid29mZjIiKSx1cmwoLy9mb250cy5kMmNtZWRpYS5jYS93ZWJmb250cy9kZXNrdG9wLWF3ZXNvbWUvd2ViZm9udHMvZmEtYnJhbmRzLTQwMC53b2ZmKSBmb3JtYXQoIndvZmYiKSx1cmwoLy9mb250cy5kMmNtZWRpYS5jYS93ZWJmb250cy9kZXNrdG9wLWF3ZXNvbWUvd2ViZm9udHMvZmEtYnJhbmRzLTQwMC50dGYpIGZvcm1hdCgidHJ1ZXR5cGUiKSx1cmwoLy9mb250cy5kMmNtZWRpYS5jYS93ZWJmb250cy9kZXNrdG9wLWF3ZXNvbWUvd2ViZm9udHMvZmEtYnJhbmRzLTQwMC5zdmcjZm9udGF3ZXNvbWUpIGZvcm1hdCgic3ZnIil9LmZhYntmb250LWZhbWlseTonRm9udCBBd2Vzb21lIDUgQnJhbmRzJztmb250LXdlaWdodDo0MDB9QGZvbnQtZmFjZXtmb250LWZhbWlseTonRm9udCBBd2Vzb21lIDUgUHJvJztmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDozMDA7Zm9udC1kaXNwbGF5OmJsb2NrO3NyYzp1cmwoLy9mb250cy5kMmNtZWRpYS5jYS93ZWJmb250cy9kZXNrdG9wLWF3ZXNvbWUvd2ViZm9udHMvZmEtbGlnaHQtMzAwLmVvdCk7c3JjOnVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1saWdodC0zMDAuZW90PyNpZWZpeCkgZm9ybWF0KCJlbWJlZGRlZC1vcGVudHlwZSIpLHVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1saWdodC0zMDAud29mZjIpIGZvcm1hdCgid29mZjIiKSx1cmwoLy9mb250cy5kMmNtZWRpYS5jYS93ZWJmb250cy9kZXNrdG9wLWF3ZXNvbWUvd2ViZm9udHMvZmEtbGlnaHQtMzAwLndvZmYpIGZvcm1hdCgid29mZiIpLHVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1saWdodC0zMDAudHRmKSBmb3JtYXQoInRydWV0eXBlIiksdXJsKC8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZGVza3RvcC1hd2Vzb21lL3dlYmZvbnRzL2ZhLWxpZ2h0LTMwMC5zdmcjZm9udGF3ZXNvbWUpIGZvcm1hdCgic3ZnIil9LmZhbHtmb250LWZhbWlseTonRm9udCBBd2Vzb21lIDUgUHJvJztmb250LXdlaWdodDozMDB9QGZvbnQtZmFjZXtmb250LWZhbWlseTonRm9udCBBd2Vzb21lIDUgUHJvJztmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDo0MDA7Zm9udC1kaXNwbGF5OmJsb2NrO3NyYzp1cmwoLy9mb250cy5kMmNtZWRpYS5jYS93ZWJmb250cy9kZXNrdG9wLWF3ZXNvbWUvd2ViZm9udHMvZmEtcmVndWxhci00MDAuZW90KTtzcmM6dXJsKC8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZGVza3RvcC1hd2Vzb21lL3dlYmZvbnRzL2ZhLXJlZ3VsYXItNDAwLmVvdD8jaWVmaXgpIGZvcm1hdCgiZW1iZWRkZWQtb3BlbnR5cGUiKSx1cmwoLy9mb250cy5kMmNtZWRpYS5jYS93ZWJmb250cy9kZXNrdG9wLWF3ZXNvbWUvd2ViZm9udHMvZmEtcmVndWxhci00MDAud29mZjIpIGZvcm1hdCgid29mZjIiKSx1cmwoLy9mb250cy5kMmNtZWRpYS5jYS93ZWJmb250cy9kZXNrdG9wLWF3ZXNvbWUvd2ViZm9udHMvZmEtcmVndWxhci00MDAud29mZikgZm9ybWF0KCJ3b2ZmIiksdXJsKC8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZGVza3RvcC1hd2Vzb21lL3dlYmZvbnRzL2ZhLXJlZ3VsYXItNDAwLnR0ZikgZm9ybWF0KCJ0cnVldHlwZSIpLHVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1yZWd1bGFyLTQwMC5zdmcjZm9udGF3ZXNvbWUpIGZvcm1hdCgic3ZnIil9LmZhcntmb250LWZhbWlseTonRm9udCBBd2Vzb21lIDUgUHJvJztmb250LXdlaWdodDo0MDB9QGZvbnQtZmFjZXtmb250LWZhbWlseTonRm9udCBBd2Vzb21lIDUgUHJvJztmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDo5MDA7Zm9udC1kaXNwbGF5OmJsb2NrO3NyYzp1cmwoLy9mb250cy5kMmNtZWRpYS5jYS93ZWJmb250cy9kZXNrdG9wLWF3ZXNvbWUvd2ViZm9udHMvZmEtc29saWQtOTAwLmVvdCk7c3JjOnVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1zb2xpZC05MDAuZW90PyNpZWZpeCkgZm9ybWF0KCJlbWJlZGRlZC1vcGVudHlwZSIpLHVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1zb2xpZC05MDAud29mZjIpIGZvcm1hdCgid29mZjIiKSx1cmwoLy9mb250cy5kMmNtZWRpYS5jYS93ZWJmb250cy9kZXNrdG9wLWF3ZXNvbWUvd2ViZm9udHMvZmEtc29saWQtOTAwLndvZmYpIGZvcm1hdCgid29mZiIpLHVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1zb2xpZC05MDAudHRmKSBmb3JtYXQoInRydWV0eXBlIiksdXJsKC8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZGVza3RvcC1hd2Vzb21lL3dlYmZvbnRzL2ZhLXNvbGlkLTkwMC5zdmcjZm9udGF3ZXNvbWUpIGZvcm1hdCgic3ZnIil9LmZhLC5mYXN7Zm9udC1mYW1pbHk6J0ZvbnQgQXdlc29tZSA1IFBybychaW1wb3J0YW50O2ZvbnQtd2VpZ2h0OjkwMH1AZm9udC1mYWNle2ZvbnQtZGlzcGxheTpzd2FwO2ZvbnQtZmFtaWx5OidEMkNDdXN0b21JY29ucyc7c3JjOmxvY2FsKEQyQ0N1c3RvbUljb25zKSx1cmwoLy9mb250cy5kMmNtZWRpYS5jYS93ZWJmb250cy9kMmMtY3VzdG9tLWljb25zLmVvdD8jaWVmaXgpIGZvcm1hdCgiZW1iZWRkZWQtb3BlbnR5cGUiKSx1cmwoLy9mb250cy5kMmNtZWRpYS5jYS93ZWJmb250cy9kMmMtY3VzdG9tLWljb25zLndvZmYpIGZvcm1hdCgid29mZiIpLHVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2QyYy1jdXN0b20taWNvbnMudHRmKSBmb3JtYXQoInRydWV0eXBlIiksdXJsKC8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZDJjLWN1c3RvbS1pY29ucy5zdmcjc3ZnRm9udE5hbWUpIGZvcm1hdCgic3ZnIik7Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc3R5bGU6bm9ybWFsfS5mYS14LXR3aXR0ZXI6YmVmb3Jle2ZvbnQtZmFtaWx5OidEMkNDdXN0b21JY29ucycsc2VyaWY7Y29udGVudDoiXGU5MDAiO2Rpc3BsYXk6YmxvY2s7Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc3R5bGU6bm9ybWFsfQovKiogL2Nzcy9mb250LWF3ZXNvbWUuY29udGVudC5taW4uY3NzICoqLwouZmEtNTAwcHg6YmVmb3Jle2NvbnRlbnQ6IlxmMjZlIn0uZmEtYWNjZXNzaWJsZS1pY29uOmJlZm9yZXtjb250ZW50OiJcZjM2OCJ9LmZhLWFjY3Vzb2Z0OmJlZm9yZXtjb250ZW50OiJcZjM2OSJ9LmZhLWFkZHJlc3MtYm9vazpiZWZvcmV7Y29udGVudDoiXGYyYjkifS5mYS1hZGRyZXNzLWNhcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMmJiIn0uZmEtYWRqdXN0OmJlZm9yZXtjb250ZW50OiJcZjA0MiJ9LmZhLWFkbjpiZWZvcmV7Y29udGVudDoiXGYxNzAifS5mYS1hZHZlcnNhbDpiZWZvcmV7Y29udGVudDoiXGYzNmEifS5mYS1hZmZpbGlhdGV0aGVtZTpiZWZvcmV7Y29udGVudDoiXGYzNmIifS5mYS1hbGdvbGlhOmJlZm9yZXtjb250ZW50OiJcZjM2YyJ9LmZhLWFsaWduLWNlbnRlcjpiZWZvcmV7Y29udGVudDoiXGYwMzcifS5mYS1hbGlnbi1qdXN0aWZ5OmJlZm9yZXtjb250ZW50OiJcZjAzOSJ9LmZhLWFsaWduLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDM2In0uZmEtYWxpZ24tcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDM4In0uZmEtYW1hem9uOmJlZm9yZXtjb250ZW50OiJcZjI3MCJ9LmZhLWFtYXpvbi1wYXk6YmVmb3Jle2NvbnRlbnQ6IlxmNDJjIn0uZmEtYW1idWxhbmNlOmJlZm9yZXtjb250ZW50OiJcZjBmOSJ9LmZhLWFtZXJpY2FuLXNpZ24tbGFuZ3VhZ2UtaW50ZXJwcmV0aW5nOmJlZm9yZXtjb250ZW50OiJcZjJhMyJ9LmZhLWFtaWxpYTpiZWZvcmV7Y29udGVudDoiXGYzNmQifS5mYS1hbmNob3I6YmVmb3Jle2NvbnRlbnQ6IlxmMTNkIn0uZmEtYW5kcm9pZDpiZWZvcmV7Y29udGVudDoiXGYxN2IifS5mYS1hbmdlbGxpc3Q6YmVmb3Jle2NvbnRlbnQ6IlxmMjA5In0uZmEtYW5nbGUtZG91YmxlLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTAzIn0uZmEtYW5nbGUtZG91YmxlLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTAwIn0uZmEtYW5nbGUtZG91YmxlLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjEwMSJ9LmZhLWFuZ2xlLWRvdWJsZS11cDpiZWZvcmV7Y29udGVudDoiXGYxMDIifS5mYS1hbmdsZS1kb3duOmJlZm9yZXtjb250ZW50OiJcZjEwNyJ9LmZhLWFuZ2xlLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTA0In0uZmEtYW5nbGUtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTA1In0uZmEtYW5nbGUtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMTA2In0uZmEtYW5ncnljcmVhdGl2ZTpiZWZvcmV7Y29udGVudDoiXGYzNmUifS5mYS1hbmd1bGFyOmJlZm9yZXtjb250ZW50OiJcZjQyMCJ9LmZhLWFwcC1zdG9yZTpiZWZvcmV7Y29udGVudDoiXGYzNmYifS5mYS1hcHAtc3RvcmUtaW9zOmJlZm9yZXtjb250ZW50OiJcZjM3MCJ9LmZhLWFwcGVyOmJlZm9yZXtjb250ZW50OiJcZjM3MSJ9LmZhLWFwcGxlOmJlZm9yZXtjb250ZW50OiJcZjE3OSJ9LmZhLWFwcGxlLXBheTpiZWZvcmV7Y29udGVudDoiXGY0MTUifS5mYS1hcmNoaXZlOmJlZm9yZXtjb250ZW50OiJcZjE4NyJ9LmZhLWFycm93LWFsdC1jaXJjbGUtZG93bjpiZWZvcmV7Y29udGVudDoiXGYzNTgifS5mYS1hcnJvdy1hbHQtY2lyY2xlLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzU5In0uZmEtYXJyb3ctYWx0LWNpcmNsZS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYzNWEifS5mYS1hcnJvdy1hbHQtY2lyY2xlLXVwOmJlZm9yZXtjb250ZW50OiJcZjM1YiJ9LmZhLWFycm93LWNpcmNsZS1kb3duOmJlZm9yZXtjb250ZW50OiJcZjBhYiJ9LmZhLWFycm93LWNpcmNsZS1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjBhOCJ9LmZhLWFycm93LWNpcmNsZS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYwYTkifS5mYS1hcnJvdy1jaXJjbGUtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMGFhIn0uZmEtYXJyb3ctZG93bjpiZWZvcmV7Y29udGVudDoiXGYwNjMifS5mYS1hcnJvdy1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjA2MCJ9LmZhLWFycm93LXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjA2MSJ9LmZhLWFycm93LXVwOmJlZm9yZXtjb250ZW50OiJcZjA2MiJ9LmZhLWFycm93cy1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGIyIn0uZmEtYXJyb3dzLWFsdC1oOmJlZm9yZXtjb250ZW50OiJcZjMzNyJ9LmZhLWFycm93cy1hbHQtdjpiZWZvcmV7Y29udGVudDoiXGYzMzgifS5mYS1hc3Npc3RpdmUtbGlzdGVuaW5nLXN5c3RlbXM6YmVmb3Jle2NvbnRlbnQ6IlxmMmEyIn0uZmEtYXN0ZXJpc2s6YmVmb3Jle2NvbnRlbnQ6IlxmMDY5In0uZmEtYXN5bW1ldHJpazpiZWZvcmV7Y29udGVudDoiXGYzNzIifS5mYS1hdDpiZWZvcmV7Y29udGVudDoiXGYxZmEifS5mYS1hdWRpYmxlOmJlZm9yZXtjb250ZW50OiJcZjM3MyJ9LmZhLWF1ZGlvLWRlc2NyaXB0aW9uOmJlZm9yZXtjb250ZW50OiJcZjI5ZSJ9LmZhLWF1dG9wcmVmaXhlcjpiZWZvcmV7Y29udGVudDoiXGY0MWMifS5mYS1hdmlhbmV4OmJlZm9yZXtjb250ZW50OiJcZjM3NCJ9LmZhLWF2aWF0bzpiZWZvcmV7Y29udGVudDoiXGY0MjEifS5mYS1hd3M6YmVmb3Jle2NvbnRlbnQ6IlxmMzc1In0uZmEtYmFja3dhcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDRhIn0uZmEtYmFsYW5jZS1zY2FsZTpiZWZvcmV7Y29udGVudDoiXGYyNGUifS5mYS1iYW46YmVmb3Jle2NvbnRlbnQ6IlxmMDVlIn0uZmEtYmFuZGNhbXA6YmVmb3Jle2NvbnRlbnQ6IlxmMmQ1In0uZmEtYmFyY29kZTpiZWZvcmV7Y29udGVudDoiXGYwMmEifS5mYS1iYXJzOmJlZm9yZXtjb250ZW50OiJcZjBjOSJ9LmZhLWJhc2ViYWxsLWJhbGw6YmVmb3Jle2NvbnRlbnQ6IlxmNDMzIn0uZmEtYmFza2V0YmFsbC1iYWxsOmJlZm9yZXtjb250ZW50OiJcZjQzNCJ9LmZhLWJhdGg6YmVmb3Jle2NvbnRlbnQ6IlxmMmNkIn0uZmEtYmF0dGVyeS1lbXB0eTpiZWZvcmV7Y29udGVudDoiXGYyNDQifS5mYS1iYXR0ZXJ5LWZ1bGw6YmVmb3Jle2NvbnRlbnQ6IlxmMjQwIn0uZmEtYmF0dGVyeS1oYWxmOmJlZm9yZXtjb250ZW50OiJcZjI0MiJ9LmZhLWJhdHRlcnktcXVhcnRlcjpiZWZvcmV7Y29udGVudDoiXGYyNDMifS5mYS1iYXR0ZXJ5LXRocmVlLXF1YXJ0ZXJzOmJlZm9yZXtjb250ZW50OiJcZjI0MSJ9LmZhLWJlZDpiZWZvcmV7Y29udGVudDoiXGYyMzYifS5mYS1iZWVyOmJlZm9yZXtjb250ZW50OiJcZjBmYyJ9LmZhLWJlaGFuY2U6YmVmb3Jle2NvbnRlbnQ6IlxmMWI0In0uZmEtYmVoYW5jZS1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMWI1In0uZmEtYmVsbDpiZWZvcmV7Y29udGVudDoiXGYwZjMifS5mYS1iZWxsLXNsYXNoOmJlZm9yZXtjb250ZW50OiJcZjFmNiJ9LmZhLWJpY3ljbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMjA2In0uZmEtYmltb2JqZWN0OmJlZm9yZXtjb250ZW50OiJcZjM3OCJ9LmZhLWJpbm9jdWxhcnM6YmVmb3Jle2NvbnRlbnQ6IlxmMWU1In0uZmEtYmlydGhkYXktY2FrZTpiZWZvcmV7Y29udGVudDoiXGYxZmQifS5mYS1iaXRidWNrZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTcxIn0uZmEtYml0Y29pbjpiZWZvcmV7Y29udGVudDoiXGYzNzkifS5mYS1iaXR5OmJlZm9yZXtjb250ZW50OiJcZjM3YSJ9LmZhLWJsYWNrLXRpZTpiZWZvcmV7Y29udGVudDoiXGYyN2UifS5mYS1ibGFja2JlcnJ5OmJlZm9yZXtjb250ZW50OiJcZjM3YiJ9LmZhLWJsaW5kOmJlZm9yZXtjb250ZW50OiJcZjI5ZCJ9LmZhLWJsb2dnZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMzdjIn0uZmEtYmxvZ2dlci1iOmJlZm9yZXtjb250ZW50OiJcZjM3ZCJ9LmZhLWJsdWV0b290aDpiZWZvcmV7Y29udGVudDoiXGYyOTMifS5mYS1ibHVldG9vdGgtYjpiZWZvcmV7Y29udGVudDoiXGYyOTQifS5mYS1ib2xkOmJlZm9yZXtjb250ZW50OiJcZjAzMiJ9LmZhLWJvbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGU3In0uZmEtYm9tYjpiZWZvcmV7Y29udGVudDoiXGYxZTIifS5mYS1ib29rOmJlZm9yZXtjb250ZW50OiJcZjAyZCJ9LmZhLWJvb2ttYXJrOmJlZm9yZXtjb250ZW50OiJcZjAyZSJ9LmZhLWJvd2xpbmctYmFsbDpiZWZvcmV7Y29udGVudDoiXGY0MzYifS5mYS1icmFpbGxlOmJlZm9yZXtjb250ZW50OiJcZjJhMSJ9LmZhLWJyaWVmY2FzZTpiZWZvcmV7Y29udGVudDoiXGYwYjEifS5mYS1idGM6YmVmb3Jle2NvbnRlbnQ6IlxmMTVhIn0uZmEtYnVnOmJlZm9yZXtjb250ZW50OiJcZjE4OCJ9LmZhLWJ1aWxkaW5nOmJlZm9yZXtjb250ZW50OiJcZjFhZCJ9LmZhLWJ1bGxob3JuOmJlZm9yZXtjb250ZW50OiJcZjBhMSJ9LmZhLWJ1bGxzZXllOmJlZm9yZXtjb250ZW50OiJcZjE0MCJ9LmZhLWJ1cm9tb2JlbGV4cGVydGU6YmVmb3Jle2NvbnRlbnQ6IlxmMzdmIn0uZmEtYnVzOmJlZm9yZXtjb250ZW50OiJcZjIwNyJ9LmZhLWJ1eXNlbGxhZHM6YmVmb3Jle2NvbnRlbnQ6IlxmMjBkIn0uZmEtY2FsY3VsYXRvcjpiZWZvcmV7Y29udGVudDoiXGYxZWMifS5mYS1jYWxlbmRhcjpiZWZvcmV7Y29udGVudDoiXGYxMzMifS5mYS1jYWxlbmRhci1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDczIn0uZmEtY2FsZW5kYXItY2hlY2s6YmVmb3Jle2NvbnRlbnQ6IlxmMjc0In0uZmEtY2FsZW5kYXItbWludXM6YmVmb3Jle2NvbnRlbnQ6IlxmMjcyIn0uZmEtY2FsZW5kYXItcGx1czpiZWZvcmV7Y29udGVudDoiXGYyNzEifS5mYS1jYWxlbmRhci10aW1lczpiZWZvcmV7Y29udGVudDoiXGYyNzMifS5mYS1jYW1lcmE6YmVmb3Jle2NvbnRlbnQ6IlxmMDMwIn0uZmEtY2FtZXJhLXJldHJvOmJlZm9yZXtjb250ZW50OiJcZjA4MyJ9LmZhLWNhcjpiZWZvcmUsLmZhLWF1dG9tb2JpbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMWI5In0uZmEtY2FyZXQtZG93bjpiZWZvcmV7Y29udGVudDoiXGYwZDcifS5mYS1jYXJldC1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjBkOSJ9LmZhLWNhcmV0LXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjBkYSJ9LmZhLWNhcmV0LXNxdWFyZS1kb3duOmJlZm9yZXtjb250ZW50OiJcZjE1MCJ9LmZhLWNhcmV0LXNxdWFyZS1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjE5MSJ9LmZhLWNhcmV0LXNxdWFyZS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYxNTIifS5mYS1jYXJldC1zcXVhcmUtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMTUxIn0uZmEtY2FyZXQtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMGQ4In0uZmEtY2FydC1hcnJvdy1kb3duOmJlZm9yZXtjb250ZW50OiJcZjIxOCJ9LmZhLWNhcnQtcGx1czpiZWZvcmV7Y29udGVudDoiXGYyMTcifS5mYS1jYy1hbWF6b24tcGF5OmJlZm9yZXtjb250ZW50OiJcZjQyZCJ9LmZhLWNjLWFtZXg6YmVmb3Jle2NvbnRlbnQ6IlxmMWYzIn0uZmEtY2MtYXBwbGUtcGF5OmJlZm9yZXtjb250ZW50OiJcZjQxNiJ9LmZhLWNjLWRpbmVycy1jbHViOmJlZm9yZXtjb250ZW50OiJcZjI0YyJ9LmZhLWNjLWRpc2NvdmVyOmJlZm9yZXtjb250ZW50OiJcZjFmMiJ9LmZhLWNjLWpjYjpiZWZvcmV7Y29udGVudDoiXGYyNGIifS5mYS1jYy1tYXN0ZXJjYXJkOmJlZm9yZXtjb250ZW50OiJcZjFmMSJ9LmZhLWNjLXBheXBhbDpiZWZvcmV7Y29udGVudDoiXGYxZjQifS5mYS1jYy1zdHJpcGU6YmVmb3Jle2NvbnRlbnQ6IlxmMWY1In0uZmEtY2MtdmlzYTpiZWZvcmV7Y29udGVudDoiXGYxZjAifS5mYS1jZW50ZXJjb2RlOmJlZm9yZXtjb250ZW50OiJcZjM4MCJ9LmZhLWNlcnRpZmljYXRlOmJlZm9yZXtjb250ZW50OiJcZjBhMyJ9LmZhLWNoYXJ0LWFyZWE6YmVmb3Jle2NvbnRlbnQ6IlxmMWZlIn0uZmEtY2hhcnQtYmFyOmJlZm9yZXtjb250ZW50OiJcZjA4MCJ9LmZhLWNoYXJ0LWxpbmU6YmVmb3Jle2NvbnRlbnQ6IlxmMjAxIn0uZmEtY2hhcnQtcGllOmJlZm9yZXtjb250ZW50OiJcZjIwMCJ9LmZhLWNoZWNrOmJlZm9yZXtjb250ZW50OiJcZjAwYyJ9LmZhLWNoZWNrLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYwNTgifS5mYS1jaGVjay1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTRhIn0uZmEtY2hlc3M6YmVmb3Jle2NvbnRlbnQ6IlxmNDM5In0uZmEtY2hlc3MtYmlzaG9wOmJlZm9yZXtjb250ZW50OiJcZjQzYSJ9LmZhLWNoZXNzLWJvYXJkOmJlZm9yZXtjb250ZW50OiJcZjQzYyJ9LmZhLWNoZXNzLWtpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmNDNmIn0uZmEtY2hlc3Mta25pZ2h0OmJlZm9yZXtjb250ZW50OiJcZjQ0MSJ9LmZhLWNoZXNzLXBhd246YmVmb3Jle2NvbnRlbnQ6IlxmNDQzIn0uZmEtY2hlc3MtcXVlZW46YmVmb3Jle2NvbnRlbnQ6IlxmNDQ1In0uZmEtY2hlc3Mtcm9vazpiZWZvcmV7Y29udGVudDoiXGY0NDcifS5mYS1jaGV2cm9uLWNpcmNsZS1kb3duOmJlZm9yZXtjb250ZW50OiJcZjEzYSJ9LmZhLWNoZXZyb24tY2lyY2xlLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTM3In0uZmEtY2hldnJvbi1jaXJjbGUtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTM4In0uZmEtY2hldnJvbi1jaXJjbGUtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMTM5In0uZmEtY2hldnJvbi1kb3duOmJlZm9yZXtjb250ZW50OiJcZjA3OCJ9LmZhLWNoZXZyb24tbGVmdDpiZWZvcmV7Y29udGVudDoiXGYwNTMifS5mYS1jaGV2cm9uLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjA1NCJ9LmZhLWNoZXZyb24tdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMDc3In0uZmEtY2hpbGQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWFlIn0uZmEtY2hyb21lOmJlZm9yZXtjb250ZW50OiJcZjI2OCJ9LmZhLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYxMTEifS5mYS1jaXJjbGUtbm90Y2g6YmVmb3Jle2NvbnRlbnQ6IlxmMWNlIn0uZmEtY2xpcGJvYXJkOmJlZm9yZXtjb250ZW50OiJcZjMyOCJ9LmZhLWNsb2NrOmJlZm9yZXtjb250ZW50OiJcZjAxNyJ9LmZhLWNsb25lOmJlZm9yZXtjb250ZW50OiJcZjI0ZCJ9LmZhLWNsb3NlZC1jYXB0aW9uaW5nOmJlZm9yZXtjb250ZW50OiJcZjIwYSJ9LmZhLWNsb3VkOmJlZm9yZXtjb250ZW50OiJcZjBjMiJ9LmZhLWNsb3VkLWRvd25sb2FkLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzODEifS5mYS1jbG91ZC11cGxvYWQtYWx0OmJlZm9yZXtjb250ZW50OiJcZjM4MiJ9LmZhLWNsb3Vkc2NhbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMzgzIn0uZmEtY2xvdWRzbWl0aDpiZWZvcmV7Y29udGVudDoiXGYzODQifS5mYS1jbG91ZHZlcnNpZnk6YmVmb3Jle2NvbnRlbnQ6IlxmMzg1In0uZmEtY29kZTpiZWZvcmV7Y29udGVudDoiXGYxMjEifS5mYS1jb2RlLWJyYW5jaDpiZWZvcmV7Y29udGVudDoiXGYxMjYifS5mYS1jb2RlcGVuOmJlZm9yZXtjb250ZW50OiJcZjFjYiJ9LmZhLWNvZGllcGllOmJlZm9yZXtjb250ZW50OiJcZjI4NCJ9LmZhLWNvZmZlZTpiZWZvcmV7Y29udGVudDoiXGYwZjQifS5mYS1jb2c6YmVmb3Jle2NvbnRlbnQ6IlxmMDEzIn0uZmEtY29nczpiZWZvcmV7Y29udGVudDoiXGYwODUifS5mYS1nZWFyczpiZWZvcmV7Y29udGVudDoiXGYwODUifS5mYS1jb2x1bW5zOmJlZm9yZXtjb250ZW50OiJcZjBkYiJ9LmZhLWNvbW1lbnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDc1In0uZmEtY29tbWVudC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjdhIn0uZmEtY29tbWVudHM6YmVmb3Jle2NvbnRlbnQ6IlxmMDg2In0uZmEtY29tcGFzczpiZWZvcmV7Y29udGVudDoiXGYxNGUifS5mYS1jb21wcmVzczpiZWZvcmV7Y29udGVudDoiXGYwNjYifS5mYS1jb25uZWN0ZGV2ZWxvcDpiZWZvcmV7Y29udGVudDoiXGYyMGUifS5mYS1jb250YW86YmVmb3Jle2NvbnRlbnQ6IlxmMjZkIn0uZmEtY29weTpiZWZvcmV7Y29udGVudDoiXGYwYzUifS5mYS1jb3B5cmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWY5In0uZmEtY3BhbmVsOmJlZm9yZXtjb250ZW50OiJcZjM4OCJ9LmZhLWNyZWF0aXZlLWNvbW1vbnM6YmVmb3Jle2NvbnRlbnQ6IlxmMjVlIn0uZmEtY3JlZGl0LWNhcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDlkIn0uZmEtY3JvcDpiZWZvcmV7Y29udGVudDoiXGYxMjUifS5mYS1jcm9zc2hhaXJzOmJlZm9yZXtjb250ZW50OiJcZjA1YiJ9LmZhLWNzczM6YmVmb3Jle2NvbnRlbnQ6IlxmMTNjIn0uZmEtY3NzMy1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzhiIn0uZmEtY3ViZTpiZWZvcmV7Y29udGVudDoiXGYxYjIifS5mYS1jdWJlczpiZWZvcmV7Y29udGVudDoiXGYxYjMifS5mYS1jdXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGM0In0uZmEtY3V0dGxlZmlzaDpiZWZvcmV7Y29udGVudDoiXGYzOGMifS5mYS1kLWFuZC1kOmJlZm9yZXtjb250ZW50OiJcZjM4ZCJ9LmZhLWRhc2hjdWJlOmJlZm9yZXtjb250ZW50OiJcZjIxMCJ9LmZhLWRhdGFiYXNlOmJlZm9yZXtjb250ZW50OiJcZjFjMCJ9LmZhLWRlYWY6YmVmb3Jle2NvbnRlbnQ6IlxmMmE0In0uZmEtZGVsaWNpb3VzOmJlZm9yZXtjb250ZW50OiJcZjFhNSJ9LmZhLWRlcGxveWRvZzpiZWZvcmV7Y29udGVudDoiXGYzOGUifS5mYS1kZXNrcHJvOmJlZm9yZXtjb250ZW50OiJcZjM4ZiJ9LmZhLWRlc2t0b3A6YmVmb3Jle2NvbnRlbnQ6IlxmMTA4In0uZmEtZGV2aWFudGFydDpiZWZvcmV7Y29udGVudDoiXGYxYmQifS5mYS1kaWdnOmJlZm9yZXtjb250ZW50OiJcZjFhNiJ9LmZhLWRpZ2l0YWwtb2NlYW46YmVmb3Jle2NvbnRlbnQ6IlxmMzkxIn0uZmEtZGlzY29yZDpiZWZvcmV7Y29udGVudDoiXGYzOTIifS5mYS1kaXNjb3Vyc2U6YmVmb3Jle2NvbnRlbnQ6IlxmMzkzIn0uZmEtZG9jaHViOmJlZm9yZXtjb250ZW50OiJcZjM5NCJ9LmZhLWRvY2tlcjpiZWZvcmV7Y29udGVudDoiXGYzOTUifS5mYS1kb2xsYXItc2lnbjpiZWZvcmUsLmZhLWRvbGxhcjpiZWZvcmUsLmZhLXVzZDpiZWZvcmV7Y29udGVudDoiXGYxNTUifS5mYS1kb3QtY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjE5MiJ9LmZhLWRvd25sb2FkOmJlZm9yZXtjb250ZW50OiJcZjAxOSJ9LmZhLWRyYWZ0MmRpZ2l0YWw6YmVmb3Jle2NvbnRlbnQ6IlxmMzk2In0uZmEtZHJpYmJibGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTdkIn0uZmEtZHJpYmJibGUtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjM5NyJ9LmZhLWRyb3Bib3g6YmVmb3Jle2NvbnRlbnQ6IlxmMTZiIn0uZmEtZHJ1cGFsOmJlZm9yZXtjb250ZW50OiJcZjFhOSJ9LmZhLWR5YWxvZzpiZWZvcmV7Y29udGVudDoiXGYzOTkifS5mYS1lYXJseWJpcmRzOmJlZm9yZXtjb250ZW50OiJcZjM5YSJ9LmZhLWVkZ2U6YmVmb3Jle2NvbnRlbnQ6IlxmMjgyIn0uZmEtZWRpdDpiZWZvcmV7Y29udGVudDoiXGYwNDQifS5mYS1lamVjdDpiZWZvcmV7Y29udGVudDoiXGYwNTIifS5mYS1lbGVtZW50b3I6YmVmb3Jle2NvbnRlbnQ6IlxmNDMwIn0uZmEtZWxsaXBzaXMtaDpiZWZvcmV7Y29udGVudDoiXGYxNDEifS5mYS1lbGxpcHNpcy12OmJlZm9yZXtjb250ZW50OiJcZjE0MiJ9LmZhLWVtYmVyOmJlZm9yZXtjb250ZW50OiJcZjQyMyJ9LmZhLWVtcGlyZTpiZWZvcmV7Y29udGVudDoiXGYxZDEifS5mYS1lbnZlbG9wZTpiZWZvcmV7Y29udGVudDoiXGYwZTAifS5mYS1lbnZlbG9wZS1vcGVuOmJlZm9yZXtjb250ZW50OiJcZjJiNiJ9LmZhLWVudmVsb3BlLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxOTkifS5mYS1lbnZpcmE6YmVmb3Jle2NvbnRlbnQ6IlxmMjk5In0uZmEtZXJhc2VyOmJlZm9yZXtjb250ZW50OiJcZjEyZCJ9LmZhLWVybGFuZzpiZWZvcmV7Y29udGVudDoiXGYzOWQifS5mYS1ldGhlcmV1bTpiZWZvcmV7Y29udGVudDoiXGY0MmUifS5mYS1ldHN5OmJlZm9yZXtjb250ZW50OiJcZjJkNyJ9LmZhLWV1cm8tc2lnbjpiZWZvcmV7Y29udGVudDoiXGYxNTMifS5mYS1leGNoYW5nZS1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzYyIn0uZmEtZXhjbGFtYXRpb246YmVmb3Jle2NvbnRlbnQ6IlxmMTJhIn0uZmEtZXhjbGFtYXRpb24tY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjA2YSJ9LmZhLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlOmJlZm9yZXtjb250ZW50OiJcZjA3MSJ9LmZhLWV4cGFuZDpiZWZvcmV7Y29udGVudDoiXGYwNjUifS5mYS1leHBhbmQtYXJyb3dzLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzMWUifS5mYS1leHBlZGl0ZWRzc2w6YmVmb3Jle2NvbnRlbnQ6IlxmMjNlIn0uZmEtZXh0ZXJuYWwtbGluay1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzVkIn0uZmEtZXh0ZXJuYWwtbGluay1zcXVhcmUtYWx0OmJlZm9yZXtjb250ZW50OiJcZjM2MCJ9LmZhLWV5ZTpiZWZvcmV7Y29udGVudDoiXGYwNmUifS5mYS1leWUtZHJvcHBlcjpiZWZvcmV7Y29udGVudDoiXGYxZmIifS5mYS1leWUtc2xhc2g6YmVmb3Jle2NvbnRlbnQ6IlxmMDcwIn0uZmEtZmFjZWJvb2s6YmVmb3Jle2NvbnRlbnQ6IlxmMDlhIn0uZmEtZmFjZWJvb2stZjpiZWZvcmV7Y29udGVudDoiXGYzOWUifS5mYS1mYWNlYm9vay1tZXNzZW5nZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMzlmIn0uZmEtZmFjZWJvb2stc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjA4MiJ9LmZhLWZhc3QtYmFja3dhcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDQ5In0uZmEtZmFzdC1mb3J3YXJkOmJlZm9yZXtjb250ZW50OiJcZjA1MCJ9LmZhLWZheDpiZWZvcmV7Y29udGVudDoiXGYxYWMifS5mYS1mZW1hbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTgyIn0uZmEtZmlnaHRlci1qZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGZiIn0uZmEtZmlsZTpiZWZvcmUsLmZhLWZpbGUtbzpiZWZvcmV7Y29udGVudDoiXGYxNWIifS5mYS1maWxlLWFsdDpiZWZvcmV7Y29udGVudDoiXGYxNWMifS5mYS1maWxlLWFyY2hpdmU6YmVmb3Jle2NvbnRlbnQ6IlxmMWM2In0uZmEtZmlsZS1hdWRpbzpiZWZvcmV7Y29udGVudDoiXGYxYzcifS5mYS1maWxlLWNvZGU6YmVmb3Jle2NvbnRlbnQ6IlxmMWM5In0uZmEtZmlsZS1leGNlbDpiZWZvcmV7Y29udGVudDoiXGYxYzMifS5mYS1maWxlLWltYWdlOmJlZm9yZXtjb250ZW50OiJcZjFjNSJ9LmZhLWZpbGUtcGRmOmJlZm9yZXtjb250ZW50OiJcZjFjMSJ9LmZhLWZpbGUtcG93ZXJwb2ludDpiZWZvcmV7Y29udGVudDoiXGYxYzQifS5mYS1maWxlLXZpZGVvOmJlZm9yZXtjb250ZW50OiJcZjFjOCJ9LmZhLWZpbGUtd29yZDpiZWZvcmV7Y29udGVudDoiXGYxYzIifS5mYS1maWxtOmJlZm9yZXtjb250ZW50OiJcZjAwOCJ9LmZhLWZpbHRlcjpiZWZvcmV7Y29udGVudDoiXGYwYjAifS5mYS1maXJlOmJlZm9yZXtjb250ZW50OiJcZjA2ZCJ9LmZhLWZpcmUtZXh0aW5ndWlzaGVyOmJlZm9yZXtjb250ZW50OiJcZjEzNCJ9LmZhLWZpcmVmb3g6YmVmb3Jle2NvbnRlbnQ6IlxmMjY5In0uZmEtZmlyc3Qtb3JkZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMmIwIn0uZmEtZmlyc3RkcmFmdDpiZWZvcmV7Y29udGVudDoiXGYzYTEifS5mYS1mbGFnOmJlZm9yZXtjb250ZW50OiJcZjAyNCJ9LmZhLWZsYWctY2hlY2tlcmVkOmJlZm9yZXtjb250ZW50OiJcZjExZSJ9LmZhLWZsYXNrOmJlZm9yZXtjb250ZW50OiJcZjBjMyJ9LmZhLWZsaWNrcjpiZWZvcmV7Y29udGVudDoiXGYxNmUifS5mYS1mbGlwYm9hcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmNDRkIn0uZmEtZmx5OmJlZm9yZXtjb250ZW50OiJcZjQxNyJ9LmZhLWZvbGRlcjpiZWZvcmV7Y29udGVudDoiXGYwN2IifS5mYS1mb2xkZXItb3BlbjpiZWZvcmV7Y29udGVudDoiXGYwN2MifS5mYS1mb250OmJlZm9yZXtjb250ZW50OiJcZjAzMSJ9LmZhLWZvbnQtYXdlc29tZTpiZWZvcmV7Y29udGVudDoiXGYyYjQifS5mYS1mb250LWF3ZXNvbWUtYWx0OmJlZm9yZXtjb250ZW50OiJcZjM1YyJ9LmZhLWZvbnQtYXdlc29tZS1mbGFnOmJlZm9yZXtjb250ZW50OiJcZjQyNSJ9LmZhLWZvbnRpY29uczpiZWZvcmV7Y29udGVudDoiXGYyODAifS5mYS1mb250aWNvbnMtZmk6YmVmb3Jle2NvbnRlbnQ6IlxmM2EyIn0uZmEtZm9vdGJhbGwtYmFsbDpiZWZvcmV7Y29udGVudDoiXGY0NGUifS5mYS1mb3J0LWF3ZXNvbWU6YmVmb3Jle2NvbnRlbnQ6IlxmMjg2In0uZmEtZm9ydC1hd2Vzb21lLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzYTMifS5mYS1mb3J1bWJlZTpiZWZvcmV7Y29udGVudDoiXGYyMTEifS5mYS1mb3J3YXJkOmJlZm9yZXtjb250ZW50OiJcZjA0ZSJ9LmZhLWZvdXJzcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTgwIn0uZmEtZnJlZS1jb2RlLWNhbXA6YmVmb3Jle2NvbnRlbnQ6IlxmMmM1In0uZmEtZnJlZWJzZDpiZWZvcmV7Y29udGVudDoiXGYzYTQifS5mYS1mcm93bjpiZWZvcmV7Y29udGVudDoiXGYxMTkifS5mYS1mdXRib2w6YmVmb3Jle2NvbnRlbnQ6IlxmMWUzIn0uZmEtZ2FtZXBhZDpiZWZvcmV7Y29udGVudDoiXGYxMWIifS5mYS1nYXZlbDpiZWZvcmV7Y29udGVudDoiXGYwZTMifS5mYS1nZW06YmVmb3Jle2NvbnRlbnQ6IlxmM2E1In0uZmEtZ2VuZGVybGVzczpiZWZvcmV7Y29udGVudDoiXGYyMmQifS5mYS1nZXQtcG9ja2V0OmJlZm9yZXtjb250ZW50OiJcZjI2NSJ9LmZhLWdnOmJlZm9yZXtjb250ZW50OiJcZjI2MCJ9LmZhLWdnLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYyNjEifS5mYS1naWZ0OmJlZm9yZXtjb250ZW50OiJcZjA2YiJ9LmZhLWdpdDpiZWZvcmV7Y29udGVudDoiXGYxZDMifS5mYS1naXQtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjFkMiJ9LmZhLWdpdGh1YjpiZWZvcmV7Y29udGVudDoiXGYwOWIifS5mYS1naXRodWItYWx0OmJlZm9yZXtjb250ZW50OiJcZjExMyJ9LmZhLWdpdGh1Yi1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMDkyIn0uZmEtZ2l0a3Jha2VuOmJlZm9yZXtjb250ZW50OiJcZjNhNiJ9LmZhLWdpdGxhYjpiZWZvcmV7Y29udGVudDoiXGYyOTYifS5mYS1naXR0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNDI2In0uZmEtZ2xhc3MtbWFydGluaTpiZWZvcmV7Y29udGVudDoiXGYwMDAifS5mYS1nbGlkZTpiZWZvcmV7Y29udGVudDoiXGYyYTUifS5mYS1nbGlkZS1nOmJlZm9yZXtjb250ZW50OiJcZjJhNiJ9LmZhLWdsb2JlOmJlZm9yZXtjb250ZW50OiJcZjBhYyJ9LmZhLWdvZm9yZTpiZWZvcmV7Y29udGVudDoiXGYzYTcifS5mYS1nb2xmLWJhbGw6YmVmb3Jle2NvbnRlbnQ6IlxmNDUwIn0uZmEtZ29vZHJlYWRzOmJlZm9yZXtjb250ZW50OiJcZjNhOCJ9LmZhLWdvb2RyZWFkcy1nOmJlZm9yZXtjb250ZW50OiJcZjNhOSJ9LmZhLWdvb2dsZTpiZWZvcmV7Y29udGVudDoiXGYxYTAifS5mYS1nb29nbGUtZHJpdmU6YmVmb3Jle2NvbnRlbnQ6IlxmM2FhIn0uZmEtZ29vZ2xlLXBsYXk6YmVmb3Jle2NvbnRlbnQ6IlxmM2FiIn0uZmEtZ29vZ2xlLXBsdXM6YmVmb3Jle2NvbnRlbnQ6IlxmMmIzIn0uZmEtZ29vZ2xlLXBsdXMtZzpiZWZvcmV7Y29udGVudDoiXGYwZDUifS5mYS1nb29nbGUtcGx1cy1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMGQ0In0uZmEtZ29vZ2xlLXdhbGxldDpiZWZvcmV7Y29udGVudDoiXGYxZWUifS5mYS1ncmFkdWF0aW9uLWNhcDpiZWZvcmV7Y29udGVudDoiXGYxOWQifS5mYS1ncmF0aXBheTpiZWZvcmV7Y29udGVudDoiXGYxODQifS5mYS1ncmF2OmJlZm9yZXtjb250ZW50OiJcZjJkNiJ9LmZhLWdyaXBmaXJlOmJlZm9yZXtjb250ZW50OiJcZjNhYyJ9LmZhLWdydW50OmJlZm9yZXtjb250ZW50OiJcZjNhZCJ9LmZhLWd1bHA6YmVmb3Jle2NvbnRlbnQ6IlxmM2FlIn0uZmEtaC1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMGZkIn0uZmEtaGFja2VyLW5ld3M6YmVmb3Jle2NvbnRlbnQ6IlxmMWQ0In0uZmEtaGFja2VyLW5ld3Mtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjNhZiJ9LmZhLWhhbmQtbGl6YXJkOmJlZm9yZXtjb250ZW50OiJcZjI1OCJ9LmZhLWhhbmQtcGFwZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMjU2In0uZmEtaGFuZC1wZWFjZTpiZWZvcmV7Y29udGVudDoiXGYyNWIifS5mYS1oYW5kLXBvaW50LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMGE3In0uZmEtaGFuZC1wb2ludC1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjBhNSJ9LmZhLWhhbmQtcG9pbnQtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGE0In0uZmEtaGFuZC1wb2ludC11cDpiZWZvcmV7Y29udGVudDoiXGYwYTYifS5mYS1oYW5kLXBvaW50ZXI6YmVmb3JlLC5mYS1oYW5kLXBvaW50ZXItbzpiZWZvcmV7Y29udGVudDoiXGYyNWEifS5mYS1oYW5kLXJvY2s6YmVmb3Jle2NvbnRlbnQ6IlxmMjU1In0uZmEtaGFuZC1zY2lzc29yczpiZWZvcmV7Y29udGVudDoiXGYyNTcifS5mYS1oYW5kLXNwb2NrOmJlZm9yZXtjb250ZW50OiJcZjI1OSJ9LmZhLWhhbmRzaGFrZTpiZWZvcmV7Y29udGVudDoiXGYyYjUifS5mYS1oYXNodGFnOmJlZm9yZXtjb250ZW50OiJcZjI5MiJ9LmZhLWhkZDpiZWZvcmV7Y29udGVudDoiXGYwYTAifS5mYS1oZWFkaW5nOmJlZm9yZXtjb250ZW50OiJcZjFkYyJ9LmZhLWhlYWRwaG9uZXM6YmVmb3Jle2NvbnRlbnQ6IlxmMDI1In0uZmEtaGVhcnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDA0In0uZmEtaGVhcnRiZWF0OmJlZm9yZXtjb250ZW50OiJcZjIxZSJ9LmZhLWhpcHM6YmVmb3Jle2NvbnRlbnQ6IlxmNDUyIn0uZmEtaGlyZS1hLWhlbHBlcjpiZWZvcmV7Y29udGVudDoiXGYzYjAifS5mYS1oaXN0b3J5OmJlZm9yZXtjb250ZW50OiJcZjFkYSJ9LmZhLWhvY2tleS1wdWNrOmJlZm9yZXtjb250ZW50OiJcZjQ1MyJ9LmZhLWhvbWU6YmVmb3Jle2NvbnRlbnQ6IlxmMDE1In0uZmEtaG9vbGk6YmVmb3Jle2NvbnRlbnQ6IlxmNDI3In0uZmEtaG9zcGl0YWw6YmVmb3Jle2NvbnRlbnQ6IlxmMGY4In0uZmEtaG90amFyOmJlZm9yZXtjb250ZW50OiJcZjNiMSJ9LmZhLWhvdXJnbGFzczpiZWZvcmV7Y29udGVudDoiXGYyNTQifS5mYS1ob3VyZ2xhc3MtZW5kOmJlZm9yZXtjb250ZW50OiJcZjI1MyJ9LmZhLWhvdXJnbGFzcy1oYWxmOmJlZm9yZXtjb250ZW50OiJcZjI1MiJ9LmZhLWhvdXJnbGFzcy1zdGFydDpiZWZvcmV7Y29udGVudDoiXGYyNTEifS5mYS1ob3V6ejpiZWZvcmV7Y29udGVudDoiXGYyN2MifS5mYS1odG1sNTpiZWZvcmV7Y29udGVudDoiXGYxM2IifS5mYS1odWJzcG90OmJlZm9yZXtjb250ZW50OiJcZjNiMiJ9LmZhLWktY3Vyc29yOmJlZm9yZXtjb250ZW50OiJcZjI0NiJ9LmZhLWlkLWJhZGdlOmJlZm9yZXtjb250ZW50OiJcZjJjMSJ9LmZhLWlkLWNhcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMmMyIn0uZmEtaW1hZ2U6YmVmb3Jle2NvbnRlbnQ6IlxmMDNlIn0uZmEtaW1hZ2VzOmJlZm9yZXtjb250ZW50OiJcZjMwMiJ9LmZhLWltZGI6YmVmb3Jle2NvbnRlbnQ6IlxmMmQ4In0uZmEtaW5ib3g6YmVmb3Jle2NvbnRlbnQ6IlxmMDFjIn0uZmEtaW5kZW50OmJlZm9yZXtjb250ZW50OiJcZjAzYyJ9LmZhLWluZHVzdHJ5OmJlZm9yZXtjb250ZW50OiJcZjI3NSJ9LmZhLWluZm86YmVmb3Jle2NvbnRlbnQ6IlxmMTI5In0uZmEtaW5mby1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMDVhIn0uZmEtaW5zdGFncmFtOmJlZm9yZXtjb250ZW50OiJcZjE2ZCJ9LmZhLWludGVybmV0LWV4cGxvcmVyOmJlZm9yZXtjb250ZW50OiJcZjI2YiJ9LmZhLWlveGhvc3Q6YmVmb3Jle2NvbnRlbnQ6IlxmMjA4In0uZmEtaXRhbGljOmJlZm9yZXtjb250ZW50OiJcZjAzMyJ9LmZhLWl0dW5lczpiZWZvcmV7Y29udGVudDoiXGYzYjQifS5mYS1pdHVuZXMtbm90ZTpiZWZvcmV7Y29udGVudDoiXGYzYjUifS5mYS1qZW5raW5zOmJlZm9yZXtjb250ZW50OiJcZjNiNiJ9LmZhLWpvZ2V0OmJlZm9yZXtjb250ZW50OiJcZjNiNyJ9LmZhLWpvb21sYTpiZWZvcmV7Y29udGVudDoiXGYxYWEifS5mYS1qczpiZWZvcmV7Y29udGVudDoiXGYzYjgifS5mYS1qcy1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmM2I5In0uZmEtanNmaWRkbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMWNjIn0uZmEta2V5OmJlZm9yZXtjb250ZW50OiJcZjA4NCJ9LmZhLWtleWJvYXJkOmJlZm9yZXtjb250ZW50OiJcZjExYyJ9LmZhLWtleWNkbjpiZWZvcmV7Y29udGVudDoiXGYzYmEifS5mYS1raWNrc3RhcnRlcjpiZWZvcmV7Y29udGVudDoiXGYzYmIifS5mYS1raWNrc3RhcnRlci1rOmJlZm9yZXtjb250ZW50OiJcZjNiYyJ9LmZhLWtvcnZ1ZTpiZWZvcmV7Y29udGVudDoiXGY0MmYifS5mYS1sYW5ndWFnZTpiZWZvcmV7Y29udGVudDoiXGYxYWIifS5mYS1sYXB0b3A6YmVmb3Jle2NvbnRlbnQ6IlxmMTA5In0uZmEtbGFyYXZlbDpiZWZvcmV7Y29udGVudDoiXGYzYmQifS5mYS1sYXN0Zm06YmVmb3Jle2NvbnRlbnQ6IlxmMjAyIn0uZmEtbGFzdGZtLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYyMDMifS5mYS1sZWFmOmJlZm9yZXtjb250ZW50OiJcZjA2YyJ9LmZhLWxlYW5wdWI6YmVmb3Jle2NvbnRlbnQ6IlxmMjEyIn0uZmEtbGVtb246YmVmb3Jle2NvbnRlbnQ6IlxmMDk0In0uZmEtbGVzczpiZWZvcmV7Y29udGVudDoiXGY0MWQifS5mYS1sZXZlbC1kb3duLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzYmUifS5mYS1sZXZlbC11cC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2JmIn0uZmEtbGlmZS1yaW5nOmJlZm9yZXtjb250ZW50OiJcZjFjZCJ9LmZhLWxpZ2h0YnVsYjpiZWZvcmV7Y29udGVudDoiXGYwZWIifS5mYS1saW5lOmJlZm9yZXtjb250ZW50OiJcZjNjMCJ9LmZhLWxpbms6YmVmb3Jle2NvbnRlbnQ6IlxmMGMxIn0uZmEtbGlua2VkaW46YmVmb3Jle2NvbnRlbnQ6IlxmMDhjIn0uZmEtbGlua2VkaW4taW46YmVmb3Jle2NvbnRlbnQ6IlxmMGUxIn0uZmEtbGlub2RlOmJlZm9yZXtjb250ZW50OiJcZjJiOCJ9LmZhLWxpbnV4OmJlZm9yZXtjb250ZW50OiJcZjE3YyJ9LmZhLWxpcmEtc2lnbjpiZWZvcmV7Y29udGVudDoiXGYxOTUifS5mYS1saXN0OmJlZm9yZXtjb250ZW50OiJcZjAzYSJ9LmZhLWxpc3QtYWx0OmJlZm9yZXtjb250ZW50OiJcZjAyMiJ9LmZhLWxpc3Qtb2w6YmVmb3Jle2NvbnRlbnQ6IlxmMGNiIn0uZmEtbGlzdC11bDpiZWZvcmV7Y29udGVudDoiXGYwY2EifS5mYS1sb2NhdGlvbi1hcnJvdzpiZWZvcmV7Y29udGVudDoiXGYxMjQifS5mYS1sb2NrOmJlZm9yZXtjb250ZW50OiJcZjAyMyJ9LmZhLWxvY2stb3BlbjpiZWZvcmV7Y29udGVudDoiXGYzYzEifS5mYS1sb25nLWFycm93LWFsdC1kb3duOmJlZm9yZXtjb250ZW50OiJcZjMwOSJ9LmZhLWxvbmctYXJyb3ctYWx0LWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzBhIn0uZmEtbG9uZy1hcnJvdy1hbHQtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzBiIn0uZmEtbG9uZy1hcnJvdy1hbHQtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMzBjIn0uZmEtbG93LXZpc2lvbjpiZWZvcmV7Y29udGVudDoiXGYyYTgifS5mYS1seWZ0OmJlZm9yZXtjb250ZW50OiJcZjNjMyJ9LmZhLW1hZ2VudG86YmVmb3Jle2NvbnRlbnQ6IlxmM2M0In0uZmEtbWFnaWM6YmVmb3Jle2NvbnRlbnQ6IlxmMGQwIn0uZmEtbWFnbmV0OmJlZm9yZXtjb250ZW50OiJcZjA3NiJ9LmZhLW1hbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTgzIn0uZmEtbWFwOmJlZm9yZXtjb250ZW50OiJcZjI3OSJ9LmZhLW1hcC1tYXJrZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMDQxIn0uZmEtbWFwLW1hcmtlci1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2M1In0uZmEtbWFwLXBpbjpiZWZvcmV7Y29udGVudDoiXGYyNzYifS5mYS1tYXAtc2lnbnM6YmVmb3Jle2NvbnRlbnQ6IlxmMjc3In0uZmEtbWFyczpiZWZvcmV7Y29udGVudDoiXGYyMjIifS5mYS1tYXJzLWRvdWJsZTpiZWZvcmV7Y29udGVudDoiXGYyMjcifS5mYS1tYXJzLXN0cm9rZTpiZWZvcmV7Y29udGVudDoiXGYyMjkifS5mYS1tYXJzLXN0cm9rZS1oOmJlZm9yZXtjb250ZW50OiJcZjIyYiJ9LmZhLW1hcnMtc3Ryb2tlLXY6YmVmb3Jle2NvbnRlbnQ6IlxmMjJhIn0uZmEtbWF4Y2RuOmJlZm9yZXtjb250ZW50OiJcZjEzNiJ9LmZhLW1lZGFwcHM6YmVmb3Jle2NvbnRlbnQ6IlxmM2M2In0uZmEtbWVkaXVtOmJlZm9yZXtjb250ZW50OiJcZjIzYSJ9LmZhLW1lZGl1bS1tOmJlZm9yZXtjb250ZW50OiJcZjNjNyJ9LmZhLW1lZGtpdDpiZWZvcmV7Y29udGVudDoiXGYwZmEifS5mYS1tZWRydDpiZWZvcmV7Y29udGVudDoiXGYzYzgifS5mYS1tZWV0dXA6YmVmb3Jle2NvbnRlbnQ6IlxmMmUwIn0uZmEtbWVoOmJlZm9yZXtjb250ZW50OiJcZjExYSJ9LmZhLW1lcmN1cnk6YmVmb3Jle2NvbnRlbnQ6IlxmMjIzIn0uZmEtbWljcm9jaGlwOmJlZm9yZXtjb250ZW50OiJcZjJkYiJ9LmZhLW1pY3JvcGhvbmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTMwIn0uZmEtbWljcm9waG9uZS1zbGFzaDpiZWZvcmV7Y29udGVudDoiXGYxMzEifS5mYS1taWNyb3NvZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2NhIn0uZmEtbWludXM6YmVmb3Jle2NvbnRlbnQ6IlxmMDY4In0uZmEtbWludXMtY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjA1NiJ9LmZhLW1pbnVzLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxNDYifS5mYS1taXg6YmVmb3Jle2NvbnRlbnQ6IlxmM2NiIn0uZmEtbWl4Y2xvdWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjg5In0uZmEtbWl6dW5pOmJlZm9yZXtjb250ZW50OiJcZjNjYyJ9LmZhLW1vYmlsZTpiZWZvcmV7Y29udGVudDoiXGYxMGIifS5mYS1tb2JpbGUtYWx0OmJlZm9yZXtjb250ZW50OiJcZjNjZCJ9LmZhLW1vZHg6YmVmb3Jle2NvbnRlbnQ6IlxmMjg1In0uZmEtbW9uZXJvOmJlZm9yZXtjb250ZW50OiJcZjNkMCJ9LmZhLW1vbmV5LWJpbGwtYWx0OmJlZm9yZXtjb250ZW50OiJcZjNkMSJ9LmZhLW1vb246YmVmb3Jle2NvbnRlbnQ6IlxmMTg2In0uZmEtbW90b3JjeWNsZTpiZWZvcmV7Y29udGVudDoiXGYyMWMifS5mYS1tb3VzZS1wb2ludGVyOmJlZm9yZXtjb250ZW50OiJcZjI0NSJ9LmZhLW11c2ljOmJlZm9yZXtjb250ZW50OiJcZjAwMSJ9LmZhLW5hcHN0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmM2QyIn0uZmEtbmV1dGVyOmJlZm9yZXtjb250ZW50OiJcZjIyYyJ9LmZhLW5ld3NwYXBlcjpiZWZvcmUsLmZhLW5ld3NwYXBlci1vOmJlZm9yZXtjb250ZW50OiJcZjFlYSJ9LmZhLW5pbnRlbmRvLXN3aXRjaDpiZWZvcmV7Y29udGVudDoiXGY0MTgifS5mYS1ub2RlOmJlZm9yZXtjb250ZW50OiJcZjQxOSJ9LmZhLW5vZGUtanM6YmVmb3Jle2NvbnRlbnQ6IlxmM2QzIn0uZmEtbnBtOmJlZm9yZXtjb250ZW50OiJcZjNkNCJ9LmZhLW5zODpiZWZvcmV7Y29udGVudDoiXGYzZDUifS5mYS1udXRyaXRpb25peDpiZWZvcmV7Y29udGVudDoiXGYzZDYifS5mYS1vYmplY3QtZ3JvdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMjQ3In0uZmEtb2JqZWN0LXVuZ3JvdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMjQ4In0uZmEtb2Rub2tsYXNzbmlraTpiZWZvcmV7Y29udGVudDoiXGYyNjMifS5mYS1vZG5va2xhc3NuaWtpLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYyNjQifS5mYS1vcGVuY2FydDpiZWZvcmV7Y29udGVudDoiXGYyM2QifS5mYS1vcGVuaWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTliIn0uZmEtb3BlcmE6YmVmb3Jle2NvbnRlbnQ6IlxmMjZhIn0uZmEtb3B0aW4tbW9uc3RlcjpiZWZvcmV7Y29udGVudDoiXGYyM2MifS5mYS1vc2k6YmVmb3Jle2NvbnRlbnQ6IlxmNDFhIn0uZmEtb3V0ZGVudDpiZWZvcmV7Y29udGVudDoiXGYwM2IifS5mYS1wYWdlNDpiZWZvcmV7Y29udGVudDoiXGYzZDcifS5mYS1wYWdlbGluZXM6YmVmb3Jle2NvbnRlbnQ6IlxmMThjIn0uZmEtcGFpbnQtYnJ1c2g6YmVmb3Jle2NvbnRlbnQ6IlxmMWZjIn0uZmEtcGFsZmVkOmJlZm9yZXtjb250ZW50OiJcZjNkOCJ9LmZhLXBhcGVyLXBsYW5lOmJlZm9yZXtjb250ZW50OiJcZjFkOCJ9LmZhLXBhcGVyY2xpcDpiZWZvcmV7Y29udGVudDoiXGYwYzYifS5mYS1wYXJhZ3JhcGg6YmVmb3Jle2NvbnRlbnQ6IlxmMWRkIn0uZmEtcGFzdGU6YmVmb3Jle2NvbnRlbnQ6IlxmMGVhIn0uZmEtcGF0cmVvbjpiZWZvcmV7Y29udGVudDoiXGYzZDkifS5mYS1wYXVzZTpiZWZvcmV7Y29udGVudDoiXGYwNGMifS5mYS1wYXVzZS1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMjhiIn0uZmEtcGF3OmJlZm9yZXtjb250ZW50OiJcZjFiMCJ9LmZhLXBheXBhbDpiZWZvcmV7Y29udGVudDoiXGYxZWQifS5mYS1wZW4tc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjE0YiJ9LmZhLXBlbmNpbC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzAzIn0uZmEtcGVyY2VudDpiZWZvcmV7Y29udGVudDoiXGYyOTUifS5mYS1wZXJpc2NvcGU6YmVmb3Jle2NvbnRlbnQ6IlxmM2RhIn0uZmEtcGhhYnJpY2F0b3I6YmVmb3Jle2NvbnRlbnQ6IlxmM2RiIn0uZmEtcGhvZW5peC1mcmFtZXdvcms6YmVmb3Jle2NvbnRlbnQ6IlxmM2RjIn0uZmEtcGhvbmU6YmVmb3Jle2NvbnRlbnQ6IlxmMDk1In0uZmEtcGhvbmUtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjA5OCJ9LmZhLXBob25lLXZvbHVtZTpiZWZvcmV7Y29udGVudDoiXGYyYTAifS5mYS1waHA6YmVmb3Jle2NvbnRlbnQ6IlxmNDU3In0uZmEtcGllZC1waXBlcjpiZWZvcmV7Y29udGVudDoiXGYyYWUifS5mYS1waWVkLXBpcGVyLWFsdDpiZWZvcmV7Y29udGVudDoiXGYxYTgifS5mYS1waWVkLXBpcGVyLXBwOmJlZm9yZXtjb250ZW50OiJcZjFhNyJ9LmZhLXBpbnRlcmVzdDpiZWZvcmV7Y29udGVudDoiXGYwZDIifS5mYS1waW50ZXJlc3QtcDpiZWZvcmV7Y29udGVudDoiXGYyMzEifS5mYS1waW50ZXJlc3Qtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjBkMyJ9LmZhLXBsYW5lOmJlZm9yZXtjb250ZW50OiJcZjA3MiJ9LmZhLXBsYXk6YmVmb3Jle2NvbnRlbnQ6IlxmMDRiIn0uZmEtcGxheS1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTQ0In0uZmEtcGxheXN0YXRpb246YmVmb3Jle2NvbnRlbnQ6IlxmM2RmIn0uZmEtcGx1ZzpiZWZvcmV7Y29udGVudDoiXGYxZTYifS5mYS1wbHVzOmJlZm9yZXtjb250ZW50OiJcZjA2NyJ9LmZhLXBsdXMtY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjA1NSJ9LmZhLXBsdXMtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjBmZSJ9LmZhLXBvZGNhc3Q6YmVmb3Jle2NvbnRlbnQ6IlxmMmNlIn0uZmEtcG91bmQtc2lnbjpiZWZvcmV7Y29udGVudDoiXGYxNTQifS5mYS1wb3dlci1vZmY6YmVmb3Jle2NvbnRlbnQ6IlxmMDExIn0uZmEtcHJpbnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDJmIn0uZmEtcHJvZHVjdC1odW50OmJlZm9yZXtjb250ZW50OiJcZjI4OCJ9LmZhLXB1c2hlZDpiZWZvcmV7Y29udGVudDoiXGYzZTEifS5mYS1wdXp6bGUtcGllY2U6YmVmb3Jle2NvbnRlbnQ6IlxmMTJlIn0uZmEtcHl0aG9uOmJlZm9yZXtjb250ZW50OiJcZjNlMiJ9LmZhLXFxOmJlZm9yZXtjb250ZW50OiJcZjFkNiJ9LmZhLXFyY29kZTpiZWZvcmV7Y29udGVudDoiXGYwMjkifS5mYS1xdWVzdGlvbjpiZWZvcmV7Y29udGVudDoiXGYxMjgifS5mYS1xdWVzdGlvbi1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMDU5In0uZmEtcXVpZGRpdGNoOmJlZm9yZXtjb250ZW50OiJcZjQ1OCJ9LmZhLXF1aW5zY2FwZTpiZWZvcmV7Y29udGVudDoiXGY0NTkifS5mYS1xdW9yYTpiZWZvcmV7Y29udGVudDoiXGYyYzQifS5mYS1xdW90ZS1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjEwZCJ9LmZhLXF1b3RlLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjEwZSJ9LmZhLXJhbmRvbTpiZWZvcmV7Y29udGVudDoiXGYwNzQifS5mYS1yYXZlbHJ5OmJlZm9yZXtjb250ZW50OiJcZjJkOSJ9LmZhLXJlYWN0OmJlZm9yZXtjb250ZW50OiJcZjQxYiJ9LmZhLXJlYmVsOmJlZm9yZXtjb250ZW50OiJcZjFkMCJ9LmZhLXJlY3ljbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMWI4In0uZmEtcmVkLXJpdmVyOmJlZm9yZXtjb250ZW50OiJcZjNlMyJ9LmZhLXJlZGRpdDpiZWZvcmV7Y29udGVudDoiXGYxYTEifS5mYS1yZWRkaXQtYWxpZW46YmVmb3Jle2NvbnRlbnQ6IlxmMjgxIn0uZmEtcmVkZGl0LXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxYTIifS5mYS1yZWRvOmJlZm9yZXtjb250ZW50OiJcZjAxZSJ9LmZhLXJlZG8tYWx0OmJlZm9yZXtjb250ZW50OiJcZjJmOSJ9LmZhLXJlZ2lzdGVyZWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjVkIn0uZmEtcmVuZGFjdDpiZWZvcmV7Y29udGVudDoiXGYzZTQifS5mYS1yZW5yZW46YmVmb3Jle2NvbnRlbnQ6IlxmMThiIn0uZmEtcmVwbHk6YmVmb3Jle2NvbnRlbnQ6IlxmM2U1In0uZmEtcmVwbHktYWxsOmJlZm9yZXtjb250ZW50OiJcZjEyMiJ9LmZhLXJlcGx5ZDpiZWZvcmV7Y29udGVudDoiXGYzZTYifS5mYS1yZXNvbHZpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmM2U3In0uZmEtcmV0d2VldDpiZWZvcmV7Y29udGVudDoiXGYwNzkifS5mYS1yb2FkOmJlZm9yZXtjb250ZW50OiJcZjAxOCJ9LmZhLXJvY2tldDpiZWZvcmV7Y29udGVudDoiXGYxMzUifS5mYS1yb2NrZXRjaGF0OmJlZm9yZXtjb250ZW50OiJcZjNlOCJ9LmZhLXJvY2tybXM6YmVmb3Jle2NvbnRlbnQ6IlxmM2U5In0uZmEtcnNzOmJlZm9yZXtjb250ZW50OiJcZjA5ZSJ9LmZhLXJzcy1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTQzIn0uZmEtcnVibGUtc2lnbjpiZWZvcmV7Y29udGVudDoiXGYxNTgifS5mYS1ydXBlZS1zaWduOmJlZm9yZXtjb250ZW50OiJcZjE1NiJ9LmZhLXNhZmFyaTpiZWZvcmV7Y29udGVudDoiXGYyNjcifS5mYS1zYXNzOmJlZm9yZXtjb250ZW50OiJcZjQxZSJ9LmZhLXNhdmU6YmVmb3Jle2NvbnRlbnQ6IlxmMGM3In0uZmEtc2NobGl4OmJlZm9yZXtjb250ZW50OiJcZjNlYSJ9LmZhLXNjcmliZDpiZWZvcmV7Y29udGVudDoiXGYyOGEifS5mYS1zZWFyY2g6YmVmb3Jle2NvbnRlbnQ6IlxmMDAyIn0uZmEtc2VhcmNoLW1pbnVzOmJlZm9yZXtjb250ZW50OiJcZjAxMCJ9LmZhLXNlYXJjaC1wbHVzOmJlZm9yZXtjb250ZW50OiJcZjAwZSJ9LmZhLXNlYXJjaGVuZ2luOmJlZm9yZXtjb250ZW50OiJcZjNlYiJ9LmZhLXNlbGxjYXN0OmJlZm9yZXtjb250ZW50OiJcZjJkYSJ9LmZhLXNlbGxzeTpiZWZvcmV7Y29udGVudDoiXGYyMTMifS5mYS1zZXJ2ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMjMzIn0uZmEtc2VydmljZXN0YWNrOmJlZm9yZXtjb250ZW50OiJcZjNlYyJ9LmZhLXNoYXJlOmJlZm9yZXtjb250ZW50OiJcZjA2NCJ9LmZhLXNoYXJlLWFsdDpiZWZvcmV7Y29udGVudDoiXGYxZTAifS5mYS1zaGFyZS1hbHQtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjFlMSJ9LmZhLXNoYXJlLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxNGQifS5mYS1zaGVrZWwtc2lnbjpiZWZvcmV7Y29udGVudDoiXGYyMGIifS5mYS1zaGllbGQtYWx0OmJlZm9yZXtjb250ZW50OiJcZjNlZCJ9LmZhLXNoaXA6YmVmb3Jle2NvbnRlbnQ6IlxmMjFhIn0uZmEtc2hpcnRzaW5idWxrOmJlZm9yZXtjb250ZW50OiJcZjIxNCJ9LmZhLXNob3BwaW5nLWJhZzpiZWZvcmV7Y29udGVudDoiXGYyOTAifS5mYS1zaG9wcGluZy1iYXNrZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjkxIn0uZmEtc2hvcHBpbmctY2FydDpiZWZvcmV7Y29udGVudDoiXGYwN2EifS5mYS1zaG93ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMmNjIn0uZmEtc2lnbi1pbi1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMmY2In0uZmEtc2lnbi1sYW5ndWFnZTpiZWZvcmV7Y29udGVudDoiXGYyYTcifS5mYS1zaWduLW91dC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMmY1In0uZmEtc2lnbmFsOmJlZm9yZXtjb250ZW50OiJcZjAxMiJ9LmZhLXNpbXBseWJ1aWx0OmJlZm9yZXtjb250ZW50OiJcZjIxNSJ9LmZhLXNpc3RyaXg6YmVmb3Jle2NvbnRlbnQ6IlxmM2VlIn0uZmEtc2l0ZW1hcDpiZWZvcmV7Y29udGVudDoiXGYwZTgifS5mYS1za3lhdGxhczpiZWZvcmV7Y29udGVudDoiXGYyMTYifS5mYS1za3lwZTpiZWZvcmV7Y29udGVudDoiXGYxN2UifS5mYS1zbGFjazpiZWZvcmV7Y29udGVudDoiXGYxOTgifS5mYS1zbGFjay1oYXNoOmJlZm9yZXtjb250ZW50OiJcZjNlZiJ9LmZhLXNsaWRlcnMtaDpiZWZvcmV7Y29udGVudDoiXGYxZGUifS5mYS1zbGlkZXNoYXJlOmJlZm9yZXtjb250ZW50OiJcZjFlNyJ9LmZhLXNtaWxlOmJlZm9yZSwuZmEtc21pbGUtbzpiZWZvcmV7Y29udGVudDoiXGYxMTgifS5mYS1zbmFwY2hhdDpiZWZvcmV7Y29udGVudDoiXGYyYWIifS5mYS1zbmFwY2hhdC1naG9zdDpiZWZvcmV7Y29udGVudDoiXGYyYWMifS5mYS1zbmFwY2hhdC1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMmFkIn0uZmEtc25vd2ZsYWtlOmJlZm9yZXtjb250ZW50OiJcZjJkYyJ9LmZhLXNvcnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGRjIn0uZmEtc29ydC1hbHBoYS1kb3duOmJlZm9yZXtjb250ZW50OiJcZjE1ZCJ9LmZhLXNvcnQtYWxwaGEtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMTVlIn0uZmEtc29ydC1hbW91bnQtZG93bjpiZWZvcmV7Y29udGVudDoiXGYxNjAifS5mYS1zb3J0LWFtb3VudC11cDpiZWZvcmV7Y29udGVudDoiXGYxNjEifS5mYS1zb3J0LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMGRkIn0uZmEtc29ydC1udW1lcmljLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTYyIn0uZmEtc29ydC1udW1lcmljLXVwOmJlZm9yZXtjb250ZW50OiJcZjE2MyJ9LmZhLXNvcnQtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMGRlIn0uZmEtc291bmRjbG91ZDpiZWZvcmV7Y29udGVudDoiXGYxYmUifS5mYS1zcGFjZS1zaHV0dGxlOmJlZm9yZXtjb250ZW50OiJcZjE5NyJ9LmZhLXNwZWFrYXA6YmVmb3Jle2NvbnRlbnQ6IlxmM2YzIn0uZmEtc3Bpbm5lcjpiZWZvcmV7Y29udGVudDoiXGYxMTAifS5mYS1zcG90aWZ5OmJlZm9yZXtjb250ZW50OiJcZjFiYyJ9LmZhLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYwYzgifS5mYS1zcXVhcmUtZnVsbDpiZWZvcmV7Y29udGVudDoiXGY0NWMifS5mYS1zdGFjay1leGNoYW5nZTpiZWZvcmV7Y29udGVudDoiXGYxOGQifS5mYS1zdGFjay1vdmVyZmxvdzpiZWZvcmV7Y29udGVudDoiXGYxNmMifS5mYS1zdGFyOmJlZm9yZXtjb250ZW50OiJcZjAwNSJ9LmZhLXN0YXItaGFsZjpiZWZvcmV7Y29udGVudDoiXGYwODkifS5mYS1zdGF5bGlua2VkOmJlZm9yZXtjb250ZW50OiJcZjNmNSJ9LmZhLXN0ZWFtOmJlZm9yZXtjb250ZW50OiJcZjFiNiJ9LmZhLXN0ZWFtLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxYjcifS5mYS1zdGVhbS1zeW1ib2w6YmVmb3Jle2NvbnRlbnQ6IlxmM2Y2In0uZmEtc3RlcC1iYWNrd2FyZDpiZWZvcmV7Y29udGVudDoiXGYwNDgifS5mYS1zdGVwLWZvcndhcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDUxIn0uZmEtc3RldGhvc2NvcGU6YmVmb3Jle2NvbnRlbnQ6IlxmMGYxIn0uZmEtc3RpY2tlci1tdWxlOmJlZm9yZXtjb250ZW50OiJcZjNmNyJ9LmZhLXN0aWNreS1ub3RlOmJlZm9yZXtjb250ZW50OiJcZjI0OSJ9LmZhLXN0b3A6YmVmb3Jle2NvbnRlbnQ6IlxmMDRkIn0uZmEtc3RvcC1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMjhkIn0uZmEtc3RvcHdhdGNoOmJlZm9yZXtjb250ZW50OiJcZjJmMiJ9LmZhLXN0cmF2YTpiZWZvcmV7Y29udGVudDoiXGY0MjgifS5mYS1zdHJlZXQtdmlldzpiZWZvcmV7Y29udGVudDoiXGYyMWQifS5mYS1zdHJpa2V0aHJvdWdoOmJlZm9yZXtjb250ZW50OiJcZjBjYyJ9LmZhLXN0cmlwZTpiZWZvcmV7Y29udGVudDoiXGY0MjkifS5mYS1zdHJpcGUtczpiZWZvcmV7Y29udGVudDoiXGY0MmEifS5mYS1zdHVkaW92aW5hcmk6YmVmb3Jle2NvbnRlbnQ6IlxmM2Y4In0uZmEtc3R1bWJsZXVwb246YmVmb3Jle2NvbnRlbnQ6IlxmMWE0In0uZmEtc3R1bWJsZXVwb24tY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjFhMyJ9LmZhLXN1YnNjcmlwdDpiZWZvcmV7Y29udGVudDoiXGYxMmMifS5mYS1zdWJ3YXk6YmVmb3Jle2NvbnRlbnQ6IlxmMjM5In0uZmEtc3VpdGNhc2U6YmVmb3Jle2NvbnRlbnQ6IlxmMGYyIn0uZmEtc3VuOmJlZm9yZSwuZmEtc3VuLW86YmVmb3Jle2NvbnRlbnQ6IlxmMTg1In0uZmEtc3VwZXJwb3dlcnM6YmVmb3Jle2NvbnRlbnQ6IlxmMmRkIn0uZmEtc3VwZXJzY3JpcHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTJiIn0uZmEtc3VwcGxlOmJlZm9yZXtjb250ZW50OiJcZjNmOSJ9LmZhLXN5bmM6YmVmb3Jle2NvbnRlbnQ6IlxmMDIxIn0uZmEtc3luYy1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMmYxIn0uZmEtdGFibGU6YmVmb3Jle2NvbnRlbnQ6IlxmMGNlIn0uZmEtdGFibGUtdGVubmlzOmJlZm9yZXtjb250ZW50OiJcZjQ1ZCJ9LmZhLXRhYmxldDpiZWZvcmV7Y29udGVudDoiXGYxMGEifS5mYS10YWJsZXQtYWx0OmJlZm9yZXtjb250ZW50OiJcZjNmYSJ9LmZhLXRhY2hvbWV0ZXItYWx0OmJlZm9yZXtjb250ZW50OiJcZjNmZCJ9LmZhLXRhZzpiZWZvcmV7Y29udGVudDoiXGYwMmIifS5mYS10YWdzOmJlZm9yZXtjb250ZW50OiJcZjAyYyJ9LmZhLXRhc2tzOmJlZm9yZXtjb250ZW50OiJcZjBhZSJ9LmZhLXRheGk6YmVmb3Jle2NvbnRlbnQ6IlxmMWJhIn0uZmEtdGVsZWdyYW06YmVmb3Jle2NvbnRlbnQ6IlxmMmM2In0uZmEtdGVsZWdyYW0tcGxhbmU6YmVmb3Jle2NvbnRlbnQ6IlxmM2ZlIn0uZmEtdGVuY2VudC13ZWlibzpiZWZvcmV7Y29udGVudDoiXGYxZDUifS5mYS10ZXJtaW5hbDpiZWZvcmV7Y29udGVudDoiXGYxMjAifS5mYS10ZXh0LWhlaWdodDpiZWZvcmV7Y29udGVudDoiXGYwMzQifS5mYS10ZXh0LXdpZHRoOmJlZm9yZXtjb250ZW50OiJcZjAzNSJ9LmZhLXRoOmJlZm9yZXtjb250ZW50OiJcZjAwYSJ9LmZhLXRoLWxhcmdlOmJlZm9yZXtjb250ZW50OiJcZjAwOSJ9LmZhLXRoLWxpc3Q6YmVmb3Jle2NvbnRlbnQ6IlxmMDBiIn0uZmEtdGhlbWVpc2xlOmJlZm9yZXtjb250ZW50OiJcZjJiMiJ9LmZhLXRoZXJtb21ldGVyLWVtcHR5OmJlZm9yZXtjb250ZW50OiJcZjJjYiJ9LmZhLXRoZXJtb21ldGVyLWZ1bGw6YmVmb3Jle2NvbnRlbnQ6IlxmMmM3In0uZmEtdGhlcm1vbWV0ZXItaGFsZjpiZWZvcmV7Y29udGVudDoiXGYyYzkifS5mYS10aGVybW9tZXRlci1xdWFydGVyOmJlZm9yZXtjb250ZW50OiJcZjJjYSJ9LmZhLXRoZXJtb21ldGVyLXRocmVlLXF1YXJ0ZXJzOmJlZm9yZXtjb250ZW50OiJcZjJjOCJ9LmZhLXRodW1icy1kb3duOmJlZm9yZXtjb250ZW50OiJcZjE2NSJ9LmZhLXRodW1icy11cDpiZWZvcmV7Y29udGVudDoiXGYxNjQifS5mYS10aHVtYnRhY2s6YmVmb3Jle2NvbnRlbnQ6IlxmMDhkIn0uZmEtdGlja2V0LWFsdDpiZWZvcmV7Y29udGVudDoiXGYzZmYifS5mYS10aW1lczpiZWZvcmV7Y29udGVudDoiXGYwMGQifS5mYS10aW1lcy1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMDU3In0uZmEtdGludDpiZWZvcmV7Y29udGVudDoiXGYwNDMifS5mYS10b2dnbGUtb2ZmOmJlZm9yZXtjb250ZW50OiJcZjIwNCJ9LmZhLXRvZ2dsZS1vbjpiZWZvcmV7Y29udGVudDoiXGYyMDUifS5mYS10cmFkZW1hcms6YmVmb3Jle2NvbnRlbnQ6IlxmMjVjIn0uZmEtdHJhaW46YmVmb3Jle2NvbnRlbnQ6IlxmMjM4In0uZmEtdHJhbnNnZW5kZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMjI0In0uZmEtdHJhbnNnZW5kZXItYWx0OmJlZm9yZXtjb250ZW50OiJcZjIyNSJ9LmZhLXRyYXNoOmJlZm9yZXtjb250ZW50OiJcZjFmOCJ9LmZhLXRyYXNoLWFsdDpiZWZvcmV7Y29udGVudDoiXGYyZWQifS5mYS10cmVlOmJlZm9yZXtjb250ZW50OiJcZjFiYiJ9LmZhLXRyZWxsbzpiZWZvcmV7Y29udGVudDoiXGYxODEifS5mYS10cmlwYWR2aXNvcjpiZWZvcmV7Y29udGVudDoiXGYyNjIifS5mYS10cm9waHk6YmVmb3Jle2NvbnRlbnQ6IlxmMDkxIn0uZmEtdHJ1Y2s6YmVmb3Jle2NvbnRlbnQ6IlxmMGQxIn0uZmEtdHR5OmJlZm9yZXtjb250ZW50OiJcZjFlNCJ9LmZhLXR1bWJscjpiZWZvcmV7Y29udGVudDoiXGYxNzMifS5mYS10dW1ibHItc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjE3NCJ9LmZhLXR2OmJlZm9yZXtjb250ZW50OiJcZjI2YyJ9LmZhLXR3aXRjaDpiZWZvcmV7Y29udGVudDoiXGYxZTgifS5mYS10d2l0dGVyOmJlZm9yZXtjb250ZW50OiJcZjA5OSJ9LmZhLXR3aXR0ZXItc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjA4MSJ9LmZhLXR5cG8zOmJlZm9yZXtjb250ZW50OiJcZjQyYiJ9LmZhLXViZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNDAyIn0uZmEtdWlraXQ6YmVmb3Jle2NvbnRlbnQ6IlxmNDAzIn0uZmEtdW1icmVsbGE6YmVmb3Jle2NvbnRlbnQ6IlxmMGU5In0uZmEtdW5kZXJsaW5lOmJlZm9yZXtjb250ZW50OiJcZjBjZCJ9LmZhLXVuZG86YmVmb3Jle2NvbnRlbnQ6IlxmMGUyIn0uZmEtdW5kby1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMmVhIn0uZmEtdW5pcmVnaXN0cnk6YmVmb3Jle2NvbnRlbnQ6IlxmNDA0In0uZmEtdW5pdmVyc2FsLWFjY2VzczpiZWZvcmV7Y29udGVudDoiXGYyOWEifS5mYS11bml2ZXJzaXR5OmJlZm9yZXtjb250ZW50OiJcZjE5YyJ9LmZhLXVubGluazpiZWZvcmV7Y29udGVudDoiXGYxMjcifS5mYS11bmxvY2s6YmVmb3Jle2NvbnRlbnQ6IlxmMDljIn0uZmEtdW5sb2NrLWFsdDpiZWZvcmV7Y29udGVudDoiXGYxM2UifS5mYS11bnRhcHBkOmJlZm9yZXtjb250ZW50OiJcZjQwNSJ9LmZhLXVwbG9hZDpiZWZvcmV7Y29udGVudDoiXGYwOTMifS5mYS11c2I6YmVmb3Jle2NvbnRlbnQ6IlxmMjg3In0uZmEtdXNlcjpiZWZvcmV7Y29udGVudDoiXGYwMDcifS5mYS11c2VyLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYyYmQifS5mYS11c2VyLW1kOmJlZm9yZXtjb250ZW50OiJcZjBmMCJ9LmZhLXVzZXItcGx1czpiZWZvcmV7Y29udGVudDoiXGYyMzQifS5mYS11c2VyLXNlY3JldDpiZWZvcmV7Y29udGVudDoiXGYyMWIifS5mYS11c2VyLXRpbWVzOmJlZm9yZXtjb250ZW50OiJcZjIzNSJ9LmZhLXVzZXJzOmJlZm9yZXtjb250ZW50OiJcZjBjMCJ9LmZhLXVzc3VubmFoOmJlZm9yZXtjb250ZW50OiJcZjQwNyJ9LmZhLXV0ZW5zaWwtc3Bvb246YmVmb3Jle2NvbnRlbnQ6IlxmMmU1In0uZmEtdXRlbnNpbHM6YmVmb3Jle2NvbnRlbnQ6IlxmMmU3In0uZmEtdmFhZGluOmJlZm9yZXtjb250ZW50OiJcZjQwOCJ9LmZhLXZlbnVzOmJlZm9yZXtjb250ZW50OiJcZjIyMSJ9LmZhLXZlbnVzLWRvdWJsZTpiZWZvcmV7Y29udGVudDoiXGYyMjYifS5mYS12ZW51cy1tYXJzOmJlZm9yZXtjb250ZW50OiJcZjIyOCJ9LmZhLXZpYWNvaW46YmVmb3Jle2NvbnRlbnQ6IlxmMjM3In0uZmEtdmlhZGVvOmJlZm9yZXtjb250ZW50OiJcZjJhOSJ9LmZhLXZpYWRlby1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMmFhIn0uZmEtdmliZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNDA5In0uZmEtdmlkZW86YmVmb3Jle2NvbnRlbnQ6IlxmMDNkIn0uZmEtdmltZW86YmVmb3Jle2NvbnRlbnQ6IlxmNDBhIn0uZmEtdmltZW8tc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjE5NCJ9LmZhLXZpbWVvLXY6YmVmb3Jle2NvbnRlbnQ6IlxmMjdkIn0uZmEtdmluZTpiZWZvcmV7Y29udGVudDoiXGYxY2EifS5mYS12azpiZWZvcmV7Y29udGVudDoiXGYxODkifS5mYS12bnY6YmVmb3Jle2NvbnRlbnQ6IlxmNDBiIn0uZmEtdm9sbGV5YmFsbC1iYWxsOmJlZm9yZXtjb250ZW50OiJcZjQ1ZiJ9LmZhLXZvbHVtZS1kb3duOmJlZm9yZXtjb250ZW50OiJcZjAyNyJ9LmZhLXZvbHVtZS1vZmY6YmVmb3Jle2NvbnRlbnQ6IlxmMDI2In0uZmEtdm9sdW1lLXVwOmJlZm9yZXtjb250ZW50OiJcZjAyOCJ9LmZhLXZ1ZWpzOmJlZm9yZXtjb250ZW50OiJcZjQxZiJ9LmZhLXdlaWJvOmJlZm9yZXtjb250ZW50OiJcZjE4YSJ9LmZhLXdlaXhpbjpiZWZvcmV7Y29udGVudDoiXGYxZDcifS5mYS13aGF0c2FwcDpiZWZvcmV7Y29udGVudDoiXGYyMzIifS5mYS13aGF0c2FwcC1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmNDBjIn0uZmEtd2hlZWxjaGFpcjpiZWZvcmV7Y29udGVudDoiXGYxOTMifS5mYS13aG1jczpiZWZvcmV7Y29udGVudDoiXGY0MGQifS5mYS13aWZpOmJlZm9yZXtjb250ZW50OiJcZjFlYiJ9LmZhLXdpa2lwZWRpYS13OmJlZm9yZXtjb250ZW50OiJcZjI2NiJ9LmZhLXdpbmRvdy1jbG9zZTpiZWZvcmV7Y29udGVudDoiXGY0MTAifS5mYS13aW5kb3ctbWF4aW1pemU6YmVmb3Jle2NvbnRlbnQ6IlxmMmQwIn0uZmEtd2luZG93LW1pbmltaXplOmJlZm9yZXtjb250ZW50OiJcZjJkMSJ9LmZhLXdpbmRvdy1yZXN0b3JlOmJlZm9yZXtjb250ZW50OiJcZjJkMiJ9LmZhLXdpbmRvd3M6YmVmb3Jle2NvbnRlbnQ6IlxmMTdhIn0uZmEtd29uLXNpZ246YmVmb3Jle2NvbnRlbnQ6IlxmMTU5In0uZmEtd29yZHByZXNzOmJlZm9yZXtjb250ZW50OiJcZjE5YSJ9LmZhLXdvcmRwcmVzcy1zaW1wbGU6YmVmb3Jle2NvbnRlbnQ6IlxmNDExIn0uZmEtd3BiZWdpbm5lcjpiZWZvcmV7Y29udGVudDoiXGYyOTcifS5mYS13cGV4cGxvcmVyOmJlZm9yZXtjb250ZW50OiJcZjJkZSJ9LmZhLXdwZm9ybXM6YmVmb3Jle2NvbnRlbnQ6IlxmMjk4In0uZmEtd3JlbmNoOmJlZm9yZXtjb250ZW50OiJcZjBhZCJ9LmZhLXhib3g6YmVmb3Jle2NvbnRlbnQ6IlxmNDEyIn0uZmEteGluZzpiZWZvcmV7Y29udGVudDoiXGYxNjgifS5mYS14aW5nLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxNjkifS5mYS15LWNvbWJpbmF0b3I6YmVmb3Jle2NvbnRlbnQ6IlxmMjNiIn0uZmEteWFob286YmVmb3Jle2NvbnRlbnQ6IlxmMTllIn0uZmEteWFuZGV4OmJlZm9yZXtjb250ZW50OiJcZjQxMyJ9LmZhLXlhbmRleC1pbnRlcm5hdGlvbmFsOmJlZm9yZXtjb250ZW50OiJcZjQxNCJ9LmZhLXllbHA6YmVmb3Jle2NvbnRlbnQ6IlxmMWU5In0uZmEteWVuLXNpZ246YmVmb3Jle2NvbnRlbnQ6IlxmMTU3In0uZmEteW9hc3Q6YmVmb3Jle2NvbnRlbnQ6IlxmMmIxIn0uZmEteW91dHViZTpiZWZvcmV7Y29udGVudDoiXGYxNjcifS5mYS15b3V0dWJlLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGY0MzEifQovKiogL2Nzcy92Mi9hbmltYXRlLmNzcyAqKi8KLmFuaW0tYmVhdCB7IC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6YW5pbS1iZWF0OyBhbmltYXRpb24tbmFtZTphbmltLWJlYXQ7IC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OnZhcigtLWFuaW0tZGVsYXksMHMpOyBhbmltYXRpb24tZGVsYXk6dmFyKC0tYW5pbS1kZWxheSwwcyk7IC13ZWJraXQtYW5pbWF0aW9uLWRpcmVjdGlvbjp2YXIoLS1hbmltLWRpcmVjdGlvbixub3JtYWwpOyBhbmltYXRpb24tZGlyZWN0aW9uOnZhcigtLWFuaW0tZGlyZWN0aW9uLG5vcm1hbCk7IC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOnZhcigtLWFuaW0tZHVyYXRpb24sMXMpOyBhbmltYXRpb24tZHVyYXRpb246dmFyKC0tYW5pbS1kdXJhdGlvbiwxcyk7IC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDp2YXIoLS1hbmltLWl0ZXJhdGlvbi1jb3VudCxpbmZpbml0ZSk7IGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6dmFyKC0tYW5pbS1pdGVyYXRpb24tY291bnQsaW5maW5pdGUpOyAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tYW5pbS10aW1pbmcsZWFzZS1pbi1vdXQpOyBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLWFuaW0tdGltaW5nLGVhc2UtaW4tb3V0KSB9IC5hbmltLWJvdW5jZSB7IC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6YW5pbS1ib3VuY2U7IGFuaW1hdGlvbi1uYW1lOmFuaW0tYm91bmNlOyAtd2Via2l0LWFuaW1hdGlvbi1kZWxheTp2YXIoLS1hbmltLWRlbGF5LDBzKTsgYW5pbWF0aW9uLWRlbGF5OnZhcigtLWFuaW0tZGVsYXksMHMpOyAtd2Via2l0LWFuaW1hdGlvbi1kaXJlY3Rpb246dmFyKC0tYW5pbS1kaXJlY3Rpb24sbm9ybWFsKTsgYW5pbWF0aW9uLWRpcmVjdGlvbjp2YXIoLS1hbmltLWRpcmVjdGlvbixub3JtYWwpOyAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjp2YXIoLS1hbmltLWR1cmF0aW9uLDFzKTsgYW5pbWF0aW9uLWR1cmF0aW9uOnZhcigtLWFuaW0tZHVyYXRpb24sMXMpOyAtd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6dmFyKC0tYW5pbS1pdGVyYXRpb24tY291bnQsaW5maW5pdGUpOyBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnZhcigtLWFuaW0taXRlcmF0aW9uLWNvdW50LGluZmluaXRlKTsgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLWFuaW0tdGltaW5nLGN1YmljLWJlemllciguMjgsLjg0LC40MiwxKSk7IGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tYW5pbS10aW1pbmcsY3ViaWMtYmV6aWVyKC4yOCwuODQsLjQyLDEpKSB9IC5hbmltLWZhZGUgeyAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOmFuaW0tZmFkZTsgYW5pbWF0aW9uLW5hbWU6YW5pbS1mYWRlOyAtd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6dmFyKC0tYW5pbS1pdGVyYXRpb24tY291bnQsaW5maW5pdGUpOyBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnZhcigtLWFuaW0taXRlcmF0aW9uLWNvdW50LGluZmluaXRlKTsgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLWFuaW0tdGltaW5nLGN1YmljLWJlemllciguNCwwLC42LDEpKTsgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS1hbmltLXRpbWluZyxjdWJpYy1iZXppZXIoLjQsMCwuNiwxKSkgfSAuYW5pbS1iZWF0LWZhZGUsLmFuaW0tZmFkZSB7IC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OnZhcigtLWFuaW0tZGVsYXksMHMpOyBhbmltYXRpb24tZGVsYXk6dmFyKC0tYW5pbS1kZWxheSwwcyk7IC13ZWJraXQtYW5pbWF0aW9uLWRpcmVjdGlvbjp2YXIoLS1hbmltLWRpcmVjdGlvbixub3JtYWwpOyBhbmltYXRpb24tZGlyZWN0aW9uOnZhcigtLWFuaW0tZGlyZWN0aW9uLG5vcm1hbCk7IC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOnZhcigtLWFuaW0tZHVyYXRpb24sMXMpOyBhbmltYXRpb24tZHVyYXRpb246dmFyKC0tYW5pbS1kdXJhdGlvbiwxcykgfSAuYW5pbS1iZWF0LWZhZGUgeyAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOmFuaW0tYmVhdC1mYWRlOyBhbmltYXRpb24tbmFtZTphbmltLWJlYXQtZmFkZTsgLXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnZhcigtLWFuaW0taXRlcmF0aW9uLWNvdW50LGluZmluaXRlKTsgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDp2YXIoLS1hbmltLWl0ZXJhdGlvbi1jb3VudCxpbmZpbml0ZSk7IC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS1hbmltLXRpbWluZyxjdWJpYy1iZXppZXIoLjQsMCwuNiwxKSk7IGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tYW5pbS10aW1pbmcsY3ViaWMtYmV6aWVyKC40LDAsLjYsMSkpIH0gLmFuaW0tZmxpcCB7IC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6YW5pbS1mbGlwOyBhbmltYXRpb24tbmFtZTphbmltLWZsaXA7IC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OnZhcigtLWFuaW0tZGVsYXksMHMpOyBhbmltYXRpb24tZGVsYXk6dmFyKC0tYW5pbS1kZWxheSwwcyk7IC13ZWJraXQtYW5pbWF0aW9uLWRpcmVjdGlvbjp2YXIoLS1hbmltLWRpcmVjdGlvbixub3JtYWwpOyBhbmltYXRpb24tZGlyZWN0aW9uOnZhcigtLWFuaW0tZGlyZWN0aW9uLG5vcm1hbCk7IC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOnZhcigtLWFuaW0tZHVyYXRpb24sM3MpOyBhbmltYXRpb24tZHVyYXRpb246dmFyKC0tYW5pbS1kdXJhdGlvbiwzcyk7IC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDp2YXIoLS1hbmltLWl0ZXJhdGlvbi1jb3VudCxpbmZpbml0ZSk7IGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6dmFyKC0tYW5pbS1pdGVyYXRpb24tY291bnQsaW5maW5pdGUpOyAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tYW5pbS10aW1pbmcsZWFzZS1pbi1vdXQpOyBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLWFuaW0tdGltaW5nLGVhc2UtaW4tb3V0KSB9IC5hbmltLXNoYWtlIHsgLXdlYmtpdC1hbmltYXRpb24tbmFtZTphbmltLXNoYWtlOyBhbmltYXRpb24tbmFtZTphbmltLXNoYWtlOyAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjp2YXIoLS1hbmltLWR1cmF0aW9uLDFzKTsgYW5pbWF0aW9uLWR1cmF0aW9uOnZhcigtLWFuaW0tZHVyYXRpb24sMXMpOyAtd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6dmFyKC0tYW5pbS1pdGVyYXRpb24tY291bnQsaW5maW5pdGUpOyBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnZhcigtLWFuaW0taXRlcmF0aW9uLWNvdW50LGluZmluaXRlKTsgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLWFuaW0tdGltaW5nLGxpbmVhcik7IGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tYW5pbS10aW1pbmcsbGluZWFyKSB9IC5hbmltLXNoYWtlLC5hbmltLXNwaW4geyAtd2Via2l0LWFuaW1hdGlvbi1kZWxheTp2YXIoLS1hbmltLWRlbGF5LDBzKTsgYW5pbWF0aW9uLWRlbGF5OnZhcigtLWFuaW0tZGVsYXksMHMpOyAtd2Via2l0LWFuaW1hdGlvbi1kaXJlY3Rpb246dmFyKC0tYW5pbS1kaXJlY3Rpb24sbm9ybWFsKTsgYW5pbWF0aW9uLWRpcmVjdGlvbjp2YXIoLS1hbmltLWRpcmVjdGlvbixub3JtYWwpIH0gLmFuaW0tc3BpbiB7IC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6YW5pbS1zcGluOyBhbmltYXRpb24tbmFtZTphbmltLXNwaW47IC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOnZhcigtLWFuaW0tZHVyYXRpb24sMnMpOyBhbmltYXRpb24tZHVyYXRpb246dmFyKC0tYW5pbS1kdXJhdGlvbiwycyk7IC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDp2YXIoLS1hbmltLWl0ZXJhdGlvbi1jb3VudCxpbmZpbml0ZSk7IGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6dmFyKC0tYW5pbS1pdGVyYXRpb24tY291bnQsaW5maW5pdGUpOyAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tYW5pbS10aW1pbmcsbGluZWFyKTsgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS1hbmltLXRpbWluZyxsaW5lYXIpIH0gLmFuaW0tc3Bpbi1yZXZlcnNlIHsgLS1hbmltLWRpcmVjdGlvbjpyZXZlcnNlIH0gLmFuaW0tcHVsc2UsLmFuaW0tc3Bpbi1wdWxzZSB7IC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6YW5pbS1zcGluOyBhbmltYXRpb24tbmFtZTphbmltLXNwaW47IC13ZWJraXQtYW5pbWF0aW9uLWRpcmVjdGlvbjp2YXIoLS1hbmltLWRpcmVjdGlvbixub3JtYWwpOyBhbmltYXRpb24tZGlyZWN0aW9uOnZhcigtLWFuaW0tZGlyZWN0aW9uLG5vcm1hbCk7IC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOnZhcigtLWFuaW0tZHVyYXRpb24sMXMpOyBhbmltYXRpb24tZHVyYXRpb246dmFyKC0tYW5pbS1kdXJhdGlvbiwxcyk7IC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDp2YXIoLS1hbmltLWl0ZXJhdGlvbi1jb3VudCxpbmZpbml0ZSk7IGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6dmFyKC0tYW5pbS1pdGVyYXRpb24tY291bnQsaW5maW5pdGUpOyAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tYW5pbS10aW1pbmcsc3RlcHMoOCkpOyBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLWFuaW0tdGltaW5nLHN0ZXBzKDgpKSB9IEAtd2Via2l0LWtleWZyYW1lcyBhbmltLWJlYXQgeyAwJSw5MCUgeyAtd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKTsgdHJhbnNmb3JtOnNjYWxlKDEpIH0gNDUlIHsgLXdlYmtpdC10cmFuc2Zvcm06c2NhbGUodmFyKC0tYW5pbS1iZWF0LXNjYWxlLDEuMjUpKTsgdHJhbnNmb3JtOnNjYWxlKHZhcigtLWFuaW0tYmVhdC1zY2FsZSwxLjI1KSkgfSB9IEBrZXlmcmFtZXMgYW5pbS1iZWF0IHsgMCUsOTAlIHsgLXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSk7IHRyYW5zZm9ybTpzY2FsZSgxKSB9IDQ1JSB7IC13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKHZhcigtLWFuaW0tYmVhdC1zY2FsZSwxLjI1KSk7IHRyYW5zZm9ybTpzY2FsZSh2YXIoLS1hbmltLWJlYXQtc2NhbGUsMS4yNSkpIH0gfSBALXdlYmtpdC1rZXlmcmFtZXMgYW5pbS1ib3VuY2UgeyAwJSB7IC13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpIHRyYW5zbGF0ZVkoMCk7IHRyYW5zZm9ybTpzY2FsZSgxKSB0cmFuc2xhdGVZKDApIH0gMTAlIHsgLXdlYmtpdC10cmFuc2Zvcm06c2NhbGUodmFyKC0tYW5pbS1ib3VuY2Utc3RhcnQtc2NhbGUteCwxLjEpLHZhcigtLWFuaW0tYm91bmNlLXN0YXJ0LXNjYWxlLXksLjkpKSB0cmFuc2xhdGVZKDApOyB0cmFuc2Zvcm06c2NhbGUodmFyKC0tYW5pbS1ib3VuY2Utc3RhcnQtc2NhbGUteCwxLjEpLHZhcigtLWFuaW0tYm91bmNlLXN0YXJ0LXNjYWxlLXksLjkpKSB0cmFuc2xhdGVZKDApIH0gMzAlIHsgLXdlYmtpdC10cmFuc2Zvcm06c2NhbGUodmFyKC0tYW5pbS1ib3VuY2UtanVtcC1zY2FsZS14LC45KSx2YXIoLS1hbmltLWJvdW5jZS1qdW1wLXNjYWxlLXksMS4xKSkgdHJhbnNsYXRlWSh2YXIoLS1hbmltLWJvdW5jZS1oZWlnaHQsLS41ZW0pKTsgdHJhbnNmb3JtOnNjYWxlKHZhcigtLWFuaW0tYm91bmNlLWp1bXAtc2NhbGUteCwuOSksdmFyKC0tYW5pbS1ib3VuY2UtanVtcC1zY2FsZS15LDEuMSkpIHRyYW5zbGF0ZVkodmFyKC0tYW5pbS1ib3VuY2UtaGVpZ2h0LC0uNWVtKSkgfSA1MCUgeyAtd2Via2l0LXRyYW5zZm9ybTpzY2FsZSh2YXIoLS1hbmltLWJvdW5jZS1sYW5kLXNjYWxlLXgsMS4wNSksdmFyKC0tYW5pbS1ib3VuY2UtbGFuZC1zY2FsZS15LC45NSkpIHRyYW5zbGF0ZVkoMCk7IHRyYW5zZm9ybTpzY2FsZSh2YXIoLS1hbmltLWJvdW5jZS1sYW5kLXNjYWxlLXgsMS4wNSksdmFyKC0tYW5pbS1ib3VuY2UtbGFuZC1zY2FsZS15LC45NSkpIHRyYW5zbGF0ZVkoMCkgfSA1NyUgeyAtd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKSB0cmFuc2xhdGVZKHZhcigtLWFuaW0tYm91bmNlLXJlYm91bmQsLS4xMjVlbSkpOyB0cmFuc2Zvcm06c2NhbGUoMSkgdHJhbnNsYXRlWSh2YXIoLS1hbmltLWJvdW5jZS1yZWJvdW5kLC0uMTI1ZW0pKSB9IDY0JSB7IC13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpIHRyYW5zbGF0ZVkoMCk7IHRyYW5zZm9ybTpzY2FsZSgxKSB0cmFuc2xhdGVZKDApIH0gdG8geyAtd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKSB0cmFuc2xhdGVZKDApOyB0cmFuc2Zvcm06c2NhbGUoMSkgdHJhbnNsYXRlWSgwKSB9IH0gQGtleWZyYW1lcyBhbmltLWJvdW5jZSB7IDAlIHsgLXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSkgdHJhbnNsYXRlWSgwKTsgdHJhbnNmb3JtOnNjYWxlKDEpIHRyYW5zbGF0ZVkoMCkgfSAxMCUgeyAtd2Via2l0LXRyYW5zZm9ybTpzY2FsZSh2YXIoLS1hbmltLWJvdW5jZS1zdGFydC1zY2FsZS14LDEuMSksdmFyKC0tYW5pbS1ib3VuY2Utc3RhcnQtc2NhbGUteSwuOSkpIHRyYW5zbGF0ZVkoMCk7IHRyYW5zZm9ybTpzY2FsZSh2YXIoLS1hbmltLWJvdW5jZS1zdGFydC1zY2FsZS14LDEuMSksdmFyKC0tYW5pbS1ib3VuY2Utc3RhcnQtc2NhbGUteSwuOSkpIHRyYW5zbGF0ZVkoMCkgfSAzMCUgeyAtd2Via2l0LXRyYW5zZm9ybTpzY2FsZSh2YXIoLS1hbmltLWJvdW5jZS1qdW1wLXNjYWxlLXgsLjkpLHZhcigtLWFuaW0tYm91bmNlLWp1bXAtc2NhbGUteSwxLjEpKSB0cmFuc2xhdGVZKHZhcigtLWFuaW0tYm91bmNlLWhlaWdodCwtLjVlbSkpOyB0cmFuc2Zvcm06c2NhbGUodmFyKC0tYW5pbS1ib3VuY2UtanVtcC1zY2FsZS14LC45KSx2YXIoLS1hbmltLWJvdW5jZS1qdW1wLXNjYWxlLXksMS4xKSkgdHJhbnNsYXRlWSh2YXIoLS1hbmltLWJvdW5jZS1oZWlnaHQsLS41ZW0pKSB9IDUwJSB7IC13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKHZhcigtLWFuaW0tYm91bmNlLWxhbmQtc2NhbGUteCwxLjA1KSx2YXIoLS1hbmltLWJvdW5jZS1sYW5kLXNjYWxlLXksLjk1KSkgdHJhbnNsYXRlWSgwKTsgdHJhbnNmb3JtOnNjYWxlKHZhcigtLWFuaW0tYm91bmNlLWxhbmQtc2NhbGUteCwxLjA1KSx2YXIoLS1hbmltLWJvdW5jZS1sYW5kLXNjYWxlLXksLjk1KSkgdHJhbnNsYXRlWSgwKSB9IDU3JSB7IC13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpIHRyYW5zbGF0ZVkodmFyKC0tYW5pbS1ib3VuY2UtcmVib3VuZCwtLjEyNWVtKSk7IHRyYW5zZm9ybTpzY2FsZSgxKSB0cmFuc2xhdGVZKHZhcigtLWFuaW0tYm91bmNlLXJlYm91bmQsLS4xMjVlbSkpIH0gNjQlIHsgLXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSkgdHJhbnNsYXRlWSgwKTsgdHJhbnNmb3JtOnNjYWxlKDEpIHRyYW5zbGF0ZVkoMCkgfSB0byB7IC13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpIHRyYW5zbGF0ZVkoMCk7IHRyYW5zZm9ybTpzY2FsZSgxKSB0cmFuc2xhdGVZKDApIH0gfSBALXdlYmtpdC1rZXlmcmFtZXMgYW5pbS1mYWRlIHsgNTAlIHsgb3BhY2l0eTp2YXIoLS1hbmltLWZhZGUtb3BhY2l0eSwuNCkgfSB9IEBrZXlmcmFtZXMgYW5pbS1mYWRlIHsgNTAlIHsgb3BhY2l0eTp2YXIoLS1hbmltLWZhZGUtb3BhY2l0eSwuNCkgfSB9IEAtd2Via2l0LWtleWZyYW1lcyBhbmltLWJlYXQtZmFkZSB7IDAlLHRvIHsgb3BhY2l0eTp2YXIoLS1hbmltLWJlYXQtZmFkZS1vcGFjaXR5LC40KTsgLXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSk7IHRyYW5zZm9ybTpzY2FsZSgxKSB9IDUwJSB7IG9wYWNpdHk6MTsgLXdlYmtpdC10cmFuc2Zvcm06c2NhbGUodmFyKC0tYW5pbS1iZWF0LWZhZGUtc2NhbGUsMS4xMjUpKTsgdHJhbnNmb3JtOnNjYWxlKHZhcigtLWFuaW0tYmVhdC1mYWRlLXNjYWxlLDEuMTI1KSkgfSB9IEBrZXlmcmFtZXMgYW5pbS1iZWF0LWZhZGUgeyAwJSx0byB7IG9wYWNpdHk6dmFyKC0tYW5pbS1iZWF0LWZhZGUtb3BhY2l0eSwuNCk7IC13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpOyB0cmFuc2Zvcm06c2NhbGUoMSkgfSA1MCUgeyBvcGFjaXR5OjE7IC13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKHZhcigtLWFuaW0tYmVhdC1mYWRlLXNjYWxlLDEuMTI1KSk7IHRyYW5zZm9ybTpzY2FsZSh2YXIoLS1hbmltLWJlYXQtZmFkZS1zY2FsZSwxLjEyNSkpIH0gfSBALXdlYmtpdC1rZXlmcmFtZXMgYW5pbS1mbGlwIHsgNTAlIHsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlM2QodmFyKC0tYW5pbS1mbGlwLXgsMCksdmFyKC0tYW5pbS1mbGlwLXksMSksdmFyKC0tYW5pbS1mbGlwLXosMCksdmFyKC0tYW5pbS1mbGlwLWFuZ2xlLC0xODBkZWcpKTsgdHJhbnNmb3JtOnJvdGF0ZTNkKHZhcigtLWFuaW0tZmxpcC14LDApLHZhcigtLWFuaW0tZmxpcC15LDEpLHZhcigtLWFuaW0tZmxpcC16LDApLHZhcigtLWFuaW0tZmxpcC1hbmdsZSwtMTgwZGVnKSkgfSB9IEBrZXlmcmFtZXMgYW5pbS1mbGlwIHsgNTAlIHsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlM2QodmFyKC0tYW5pbS1mbGlwLXgsMCksdmFyKC0tYW5pbS1mbGlwLXksMSksdmFyKC0tYW5pbS1mbGlwLXosMCksdmFyKC0tYW5pbS1mbGlwLWFuZ2xlLC0xODBkZWcpKTsgdHJhbnNmb3JtOnJvdGF0ZTNkKHZhcigtLWFuaW0tZmxpcC14LDApLHZhcigtLWFuaW0tZmxpcC15LDEpLHZhcigtLWFuaW0tZmxpcC16LDApLHZhcigtLWFuaW0tZmxpcC1hbmdsZSwtMTgwZGVnKSkgfSB9IEAtd2Via2l0LWtleWZyYW1lcyBhbmltLXNoYWtlIHsgMCUgeyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTE1ZGVnKTsgdHJhbnNmb3JtOnJvdGF0ZSgtMTVkZWcpIH0gNCUgeyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMTVkZWcpOyB0cmFuc2Zvcm06cm90YXRlKDE1ZGVnKSB9IDglLDI0JSB7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgtMThkZWcpOyB0cmFuc2Zvcm06cm90YXRlKC0xOGRlZykgfSAxMiUsMjglIHsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDE4ZGVnKTsgdHJhbnNmb3JtOnJvdGF0ZSgxOGRlZykgfSAxNiUgeyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTIyZGVnKTsgdHJhbnNmb3JtOnJvdGF0ZSgtMjJkZWcpIH0gMjAlIHsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDIyZGVnKTsgdHJhbnNmb3JtOnJvdGF0ZSgyMmRlZykgfSAzMiUgeyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTEyZGVnKTsgdHJhbnNmb3JtOnJvdGF0ZSgtMTJkZWcpIH0gMzYlIHsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDEyZGVnKTsgdHJhbnNmb3JtOnJvdGF0ZSgxMmRlZykgfSA0MCUsdG8geyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMGRlZyk7IHRyYW5zZm9ybTpyb3RhdGUoMGRlZykgfSB9IEBrZXlmcmFtZXMgYW5pbS1zaGFrZSB7IDAlIHsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC0xNWRlZyk7IHRyYW5zZm9ybTpyb3RhdGUoLTE1ZGVnKSB9IDQlIHsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDE1ZGVnKTsgdHJhbnNmb3JtOnJvdGF0ZSgxNWRlZykgfSA4JSwyNCUgeyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTE4ZGVnKTsgdHJhbnNmb3JtOnJvdGF0ZSgtMThkZWcpIH0gMTIlLDI4JSB7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgxOGRlZyk7IHRyYW5zZm9ybTpyb3RhdGUoMThkZWcpIH0gMTYlIHsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC0yMmRlZyk7IHRyYW5zZm9ybTpyb3RhdGUoLTIyZGVnKSB9IDIwJSB7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgyMmRlZyk7IHRyYW5zZm9ybTpyb3RhdGUoMjJkZWcpIH0gMzIlIHsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC0xMmRlZyk7IHRyYW5zZm9ybTpyb3RhdGUoLTEyZGVnKSB9IDM2JSB7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgxMmRlZyk7IHRyYW5zZm9ybTpyb3RhdGUoMTJkZWcpIH0gNDAlLHRvIHsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDBkZWcpOyB0cmFuc2Zvcm06cm90YXRlKDBkZWcpIH0gfSBALXdlYmtpdC1rZXlmcmFtZXMgYW5pbS1zcGluIHsgMCUgeyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMGRlZyk7IHRyYW5zZm9ybTpyb3RhdGUoMGRlZykgfSB0byB7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgxdHVybik7IHRyYW5zZm9ybTpyb3RhdGUoMXR1cm4pIH0gfSBAa2V5ZnJhbWVzIGFuaW0tc3BpbiB7IDAlIHsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDBkZWcpOyB0cmFuc2Zvcm06cm90YXRlKDBkZWcpIH0gdG8geyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMXR1cm4pOyB0cmFuc2Zvcm06cm90YXRlKDF0dXJuKSB9IH0gQHN1cHBvcnRzICgtd2Via2l0LXRvdWNoLWNhbGxvdXQ6bm9uZSkgeyBib2R5ICNwcm9tb1RvcEJ0biAuYW5pbS1mbGlweyAtd2Via2l0LWFuaW1hdGlvbi1kZWxheTp1bnNldDsgYW5pbWF0aW9uLWRlbGF5OnVuc2V0OyAtd2Via2l0LWFuaW1hdGlvbi1kaXJlY3Rpb246dW5zZXQ7IGFuaW1hdGlvbi1kaXJlY3Rpb246dW5zZXQ7IC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOnVuc2V0OyBhbmltYXRpb24tZHVyYXRpb246dW5zZXQ7IC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDp1bnNldDsgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDp1bnNldDsgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOnVuc2V0OyBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOnVuc2V0OyB9IH0gLnB1bHNhdGluZy1jaXJjbGUgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgd2lkdGg6MzBweDsgaGVpZ2h0OjMwcHg7IGZsZXg6MCAwIGF1dG87ICY6YmVmb3JlIHsgY29udGVudDonJzsgcG9zaXRpb246cmVsYXRpdmU7IGRpc3BsYXk6YmxvY2s7IHdpZHRoOjMwMCU7IGhlaWdodDozMDAlOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IG1hcmdpbi1sZWZ0Oi0xMDAlOyBtYXJnaW4tdG9wOi0xMDAlOyBib3JkZXItcmFkaXVzOjQ1cHg7IGJhY2tncm91bmQtY29sb3I6IzAxYTRlOTsgYW5pbWF0aW9uOnB1bHNlLXJpbmcgMS4yNXMgY3ViaWMtYmV6aWVyKDAuMjE1LCAwLjYxLCAwLjM1NSwgMSkgaW5maW5pdGU7IH0gJjphZnRlciB7IGNvbnRlbnQ6Jyc7IHBvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjA7IHRvcDowOyBkaXNwbGF5OmJsb2NrOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsgYm9yZGVyLXJhZGl1czoxNXB4OyBib3gtc2hhZG93OjAgMCA4cHggcmdiYSgwLDAsMCwuMyk7IGFuaW1hdGlvbjpwdWxzZS1kb3QgMS4yNXMgY3ViaWMtYmV6aWVyKDAuNDU1LCAwLjAzLCAwLjUxNSwgMC45NTUpIC0uNHMgaW5maW5pdGU7IH0gfSBAa2V5ZnJhbWVzIHB1bHNlLXJpbmcgeyAwJSB7IHRyYW5zZm9ybTpzY2FsZSguMzMpOyB9IDgwJSwgMTAwJSB7IG9wYWNpdHk6MDsgfSB9IEBrZXlmcmFtZXMgcHVsc2UtZG90IHsgMCUgeyB0cmFuc2Zvcm06c2NhbGUoLjgpOyB9IDUwJSB7IHRyYW5zZm9ybTpzY2FsZSgxKTsgfSAxMDAlIHsgdHJhbnNmb3JtOnNjYWxlKC44KTsgfSB9Ci8qKiAvY3NzL2Rpdl9sYXllcnMuY3NzICoqLwpkaXYuTWFpbkJveExheWVyeyB3aWR0aDptaW4oMTAwJSw5NjBweCk7IG1hcmdpbjowIGF1dG87IH0gZGl2Lk1haW5Cb3hMYXllciBIMXsgd2lkdGg6OTQwcHg7IH0gZGl2Lk1haW5Cb3hMYXllciAucmVzcG9uc2l2ZS1lZGl0b3IgaDEgeyB3aWR0aDppbml0aWFsOyB9IGRpdi5NYWluQm94TGF5ZXIgZGl2LmNyZWRzaWlEaXYgSDF7IHdpZHRoOmF1dG87IH0gLmNyZWRzaWlEaXZ7IHdoaXRlLXNwYWNlOm5vcm1hbDsgfSBkaXYuTWFpbkJveExheWVyIGRpdi5MZWZ0Qm94TGF5ZXIgeyB9IGRpdi5NYWluQm94TGF5ZXIgZGl2LlJpZ2h0Qm94TGF5ZXIgeyB9IGRpdi5NYWluQm94TGF5ZXIgZGl2Lk91dGVyQm94TGF5ZXIgeyBwYWRkaW5nOjEwcHg7IGZsb2F0OmxlZnQ7IHdpZHRoOjk0MHB4OyB9IGRpdi5NYWluQm94TGF5ZXIgZGl2LklubmVyQm94TGF5ZXIgeyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZzowcHg7IG1hcmdpbjowcHg7IHdpZHRoOjEwMCU7IGNsZWFyOmJvdGg7IH0gZGl2Lk1haW5Cb3hMYXllciBkaXYuSW5uZXJCb3hMYXllci50b3BCb3JkZXJlZHsgYm9yZGVyLXRvcDoxcHggc29saWQgI2NjYzsgfSBkaXYuTWFpbkJveExheWVyIGRpdi5Jbm5lckJveExheWVyLmJvdHRvbUJvcmRlcmVkeyBib3JkZXItYm90dG9tOjFweCBzb2xpZCAjY2NjOyB9IGRpdi5NYWluQm94TGF5ZXIgZGl2LkJveENoaWxkIHsgfSBkaXYuTWFpbkJveExheWVyIGRpdi5Cb3hDaGlsZC5lYXN0eyBmbG9hdDpyaWdodDsgfSBkaXYuTWFpbkJveExheWVyIGRpdi5Cb3hDaGlsZC53ZXN0eyBmbG9hdDpsZWZ0OyB9IGJvZHkuaXNGdWxsV2lkdGhQYWdlLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQgZGl2Lk1haW5Cb3hMYXllciAjdG9wQmFubmVySW1hZ2V7IHdpZHRoOjk0MHB4OyBoZWlnaHQ6YXV0bzsgdGV4dC1hbGlnbjpjZW50ZXI7IG1hcmdpbjowIGF1dG87IH0gYm9keS5pc0Z1bGxXaWR0aFBhZ2UuaXNQYWdlRnVsbFdpZHRoRW5hYmxlZCBkaXYuTWFpbkJveExheWVyICN0b3BCYW5uZXJJbWFnZSA+IGltZ3sgbWF4LXdpZHRoOjEwMCUgIWltcG9ydGFudDsgfSBkaXYuTWFpbkJveExheWVyIGRpdi5PdXRlckJveExheWVyI2hpc3RvcnlEaXYgZGl2LklubmVyQm94TGF5ZXIgI2JyZWFkY3J1bWJzIHsgbWFyZ2luOjA7IH0gQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOjEzMDFweCkgeyBib2R5LmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIGRpdi5NYWluQm94TGF5ZXIgeyB3aWR0aDoxMjAwcHg7IH0gYm9keS5pc0Z1bGxXaWR0aFBhZ2UuaXNQYWdlRnVsbFdpZHRoRW5hYmxlZCBkaXYuTWFpbkJveExheWVyIGRpdi5PdXRlckJveExheWVyIHsgd2lkdGg6MTE4MHB4OyB9IGJvZHkuaXNGdWxsV2lkdGhQYWdlLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQgZGl2Lk1haW5Cb3hMYXllciBkaXYuT3V0ZXJCb3hMYXllci54dGltZUZyYW1lIHsgd2lkdGg6MTIwMHB4OyB9IGJvZHkuaXNGdWxsV2lkdGhQYWdlLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQgZGl2Lk1haW5Cb3hMYXllciBIMXsgd2lkdGg6MTE4MHB4OyB9IGJvZHkuaXNGdWxsV2lkdGhQYWdlLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQgZGl2Lk1haW5Cb3hMYXllciAucmVzcG9uc2l2ZS1lZGl0b3IgaDEgeyB3aWR0aDppbml0aWFsOyB9IGJvZHkuaXNGdWxsV2lkdGhQYWdlLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQgZGl2Lk1haW5Cb3hMYXllciBkaXYuY3JlZHNpaURpdiBIMXsgd2lkdGg6YXV0bzsgfSBib2R5LmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIGRpdi5NYWluQm94TGF5ZXIgI3RvcEJhbm5lckltYWdlIHsgd2lkdGg6MTE4MHB4OyB9IGJvZHkuaXNGdWxsV2lkdGhQYWdlLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQgZGl2Lk1haW5Cb3hMYXllciAjdG9wQmFubmVySW1hZ2UuVEVBTSB7IHdpZHRoOjk2MHB4OyB9IH0gZGl2Lk1haW5Cb3hMYXllci51Y3BDb250ZW50RnVsbFdpZHRoIHsgd2lkdGg6MTAwJSFpbXBvcnRhbnQ7IH0gZGl2Lk1haW5Cb3hMYXllciBkaXYuTGVmdEJveExheWVyLnVjcENvbnRlbnRGdWxsV2lkdGggeyB3aWR0aDoxMDAlIWltcG9ydGFudDsgfSBkaXYuTWFpbkJveExheWVyIGRpdi5PdXRlckJveExheWVyLnVjcENvbnRlbnRGdWxsV2lkdGggeyB3aWR0aDoxMDAlIWltcG9ydGFudDsgfQovKiogL2Nzcy9kaXZfc3BhbnMuY3NzICoqLwouZGl2U3BhbntmbG9hdDpsZWZ0O2JveC1zaXppbmc6Ym9yZGVyLWJveH0uZGl2U3Bhbi5kaXZTcGFuTGVmdHtmbG9hdDpsZWZ0fS5kaXZTcGFuLmRpdlNwYW5SaWdodHtmbG9hdDpyaWdodH0uZGl2U3Bhbi5kaXZTcGFuMXt3aWR0aDo4LjMzMzMzMzMzMzMzMzMzMyV9LmRpdlNwYW4uZGl2U3BhbjJ7d2lkdGg6MTYuNjY2NjY2NjY2NjY2NjclfS5kaXZTcGFuLmRpdlNwYW4ze3dpZHRoOjI1JX0uZGl2U3Bhbi5kaXZTcGFuNHt3aWR0aDozMy4zMzMzMzMzMzMzMzMzMyV9LmRpdlNwYW4uZGl2U3BhbjV7d2lkdGg6NDEuNjY2NjY2NjY2NjY2NjclfS5kaXZTcGFuLmRpdlNwYW42e3dpZHRoOjUwJX0uZGl2U3Bhbi5kaXZTcGFuN3t3aWR0aDo1OC4zMzMzMzMzMzMzMzMzMyV9LmRpdlNwYW4uZGl2U3Bhbjh7d2lkdGg6NjYuNjY2NjY2NjY2NjY2NjYlfS5kaXZTcGFuLmRpdlNwYW45e3dpZHRoOjc1JX0uZGl2U3Bhbi5kaXZTcGFuMTB7d2lkdGg6ODMuMzMzMzMzMzMzMzMzMzMlfS5kaXZTcGFuLmRpdlNwYW4xMXt3aWR0aDo5MS42NjY2NjY2NjY2NjY2NiV9LmRpdlNwYW4uZGl2U3BhbjEye3dpZHRoOjEwMCV9Ci8qKiAvY3NzL21lbnVpbWcuY3NzICoqLwoubWVudXNwcml0ZXtiYWNrZ3JvdW5kLWltYWdlOnVybCgvaW1hZ2VzL21lbnVpY29ucy9tZW51c3ByaXRlc2hlZXQucG5nKTtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7ZGlzcGxheTppbmxpbmUtdGFibGU7Ym9yZGVyOjB9Lm1lbnVzcHJpdGUtYXJyb3dfZG93bnt3aWR0aDozMnB4O2hlaWdodDozMnB4O2JhY2tncm91bmQtcG9zaXRpb246LTVweCAtNXB4fS5tZW51c3ByaXRlLWFycm93X3Vwe3dpZHRoOjMycHg7aGVpZ2h0OjMycHg7YmFja2dyb3VuZC1wb3NpdGlvbjotNXB4IC00N3B4fS5tZW51c3ByaXRlLWNvbnRhY3R7d2lkdGg6MzJweDtoZWlnaHQ6MzJweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOi01cHggLTg5cHh9Lm1lbnVzcHJpdGUtZGVtb2Nhcnt3aWR0aDozMnB4O2hlaWdodDozMnB4O2JhY2tncm91bmQtcG9zaXRpb246LTVweCAtMTMxcHh9Lm1lbnVzcHJpdGUtZmluYW5jZXt3aWR0aDozMnB4O2hlaWdodDozMnB4O2JhY2tncm91bmQtcG9zaXRpb246LTVweCAtMTczcHh9Lm1lbnVzcHJpdGUtaG9tZXt3aWR0aDozMnB4O2hlaWdodDozMnB4O2JhY2tncm91bmQtcG9zaXRpb246LTVweCAtMjE1cHh9Lm1lbnVzcHJpdGUtbmV3Y2Fye3dpZHRoOjMycHg7aGVpZ2h0OjMycHg7YmFja2dyb3VuZC1wb3NpdGlvbjotNXB4IC0yNTdweH0ubWVudXNwcml0ZS1vbGRjYXJ7d2lkdGg6MzJweDtoZWlnaHQ6MzJweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOi01cHggLTI5OXB4fS5tZW51c3ByaXRlLXByb21vdGlvbnN7d2lkdGg6MzJweDtoZWlnaHQ6MzJweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOi01cHggLTM0MXB4fS5tZW51c3ByaXRlLXNlcnZpY2V7d2lkdGg6MzJweDtoZWlnaHQ6MzJweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOi01cHggLTM4M3B4fQovKiogL2Nzcy9qcXVlcnkubXVsdGlzZWxlY3QuY3NzICoqLwoudWktbXVsdGlzZWxlY3R7cGFkZGluZzoycHggMCAycHggNHB4O3RleHQtYWxpZ246bGVmdH0udWktbXVsdGlzZWxlY3Qgc3Bhbi51aS1pY29ue2Zsb2F0OnJpZ2h0fS51aS1tdWx0aXNlbGVjdC1zaW5nbGUgLnVpLW11bHRpc2VsZWN0LWNoZWNrYm94ZXMgaW5wdXR7cG9zaXRpb246YWJzb2x1dGUgIWltcG9ydGFudDt0b3A6YXV0byAhaW1wb3J0YW50O2xlZnQ6LTk5OTlweH0udWktbXVsdGlzZWxlY3Qtc2luZ2xlIC51aS1tdWx0aXNlbGVjdC1jaGVja2JveGVzIGxhYmVse3BhZGRpbmc6NXB4ICFpbXBvcnRhbnR9LnVpLW11bHRpc2VsZWN0LWhlYWRlcnttYXJnaW4tYm90dG9tOjNweDtwYWRkaW5nOjNweCAwIDNweCA0cHh9LnVpLW11bHRpc2VsZWN0LWhlYWRlciB1bHtmb250LXNpemU6LjllbX0udWktbXVsdGlzZWxlY3QtaGVhZGVyIHVsIGxpe2Zsb2F0OmxlZnQ7cGFkZGluZzowIDEwcHggMCAwfS51aS1tdWx0aXNlbGVjdC1oZWFkZXIgYXt0ZXh0LWRlY29yYXRpb246bm9uZX0udWktbXVsdGlzZWxlY3QtaGVhZGVyIGE6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX0udWktbXVsdGlzZWxlY3QtaGVhZGVyIHNwYW4udWktaWNvbntmbG9hdDpsZWZ0fS51aS1tdWx0aXNlbGVjdC1oZWFkZXIgbGkudWktbXVsdGlzZWxlY3QtY2xvc2V7ZmxvYXQ6cmlnaHQ7dGV4dC1hbGlnbjpyaWdodDtwYWRkaW5nLXJpZ2h0OjB9LnVpLW11bHRpc2VsZWN0LW1lbnV7ZGlzcGxheTpub25lO3BhZGRpbmc6M3B4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDA7dGV4dC1hbGlnbjpsZWZ0fS51aS1tdWx0aXNlbGVjdC1jaGVja2JveGVze3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93LXk6YXV0b30udWktbXVsdGlzZWxlY3QtY2hlY2tib3hlcyBsYWJlbHtjdXJzb3I6ZGVmYXVsdDtkaXNwbGF5OmJsb2NrO2JvcmRlcjoxcHggc29saWQgdHJhbnNwYXJlbnQ7cGFkZGluZzozcHggMXB4fS51aS1tdWx0aXNlbGVjdC1jaGVja2JveGVzIGxhYmVsIGlucHV0e3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDoxcHh9LnVpLW11bHRpc2VsZWN0LWNoZWNrYm94ZXMgbGl7Y2xlYXI6Ym90aDtmb250LXNpemU6LjllbTtwYWRkaW5nLXJpZ2h0OjNweH0udWktbXVsdGlzZWxlY3QtY2hlY2tib3hlcyBsaS51aS1tdWx0aXNlbGVjdC1vcHRncm91cC1sYWJlbHt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXdlaWdodDpib2xkO2JvcmRlci1ib3R0b206MXB4IHNvbGlkfS51aS1tdWx0aXNlbGVjdC1jaGVja2JveGVzIGxpLnVpLW11bHRpc2VsZWN0LW9wdGdyb3VwLWxhYmVsIGF7ZGlzcGxheTpibG9jaztwYWRkaW5nOjNweDttYXJnaW46MXB4IDA7dGV4dC1kZWNvcmF0aW9uOm5vbmV9KiBodG1sIC51aS1tdWx0aXNlbGVjdC1jaGVja2JveGVzIGxhYmVse2JvcmRlcjowfS51aS1tdWx0aXNlbGVjdC1oYXNmaWx0ZXIgdWx7cG9zaXRpb246cmVsYXRpdmU7dG9wOjJweH0udWktbXVsdGlzZWxlY3QtZmlsdGVye2Zsb2F0OmxlZnQ7bWFyZ2luLXJpZ2h0OjEwcHg7Zm9udC1zaXplOjExcHh9LnVpLW11bHRpc2VsZWN0LWZpbHRlciBpbnB1dHt3aWR0aDoxMDBweDtmb250LXNpemU6MC42MjVyZW0gO21hcmdpbi1sZWZ0OjVweDtoZWlnaHQ6MTVweDtwYWRkaW5nOjJweDtib3JkZXI6MXB4IHNvbGlkICMyOTI5Mjk7LXdlYmtpdC1hcHBlYXJhbmNlOnRleHRmaWVsZDstd2Via2l0LWJveC1zaXppbmc6Y29udGVudC1ib3h9Ci8qKiAvY3NzL3RyYWRlaW5wb3B1cC5jc3MgKiovCi50cmFkZUluQmFyU21zT3JFbWFpbHsgd2lkdGg6NTAlOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgI3RyYWRlSW5CYXJTbXNPckVtYWlsU21zLCAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XICN0cmFkZUluQmFyU21zT3JFbWFpbEVtYWlseyB3aWR0aDo1MCU7IH0gLnRyYWRlSW5CYXJTdGVwMywgLnRyYWRlSW5CYXJTdGVwNCwgLnRyYWRlSW5CYXJTdGVwNSwgLnRyYWRlSW5CYXJTdGVwNnsgbWFyZ2luOjYwcHggMDsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLnRyYWRlSW5CYXJTdGVwNnsgbWFyZ2luOjAgMCAzMHB4IDA7IHRleHQtYWxpZ246Y2VudGVyOyB9IC50cmFkZUluQmFyU3RlcDMgLnRyYWRlSW5CYXJTdGVwM1F1ZXN0aW9uLCAudHJhZGVJbkJhclN0ZXA0IC50cmFkZUluQmFyU3RlcDRRdWVzdGlvbiwgLnRyYWRlSW5CYXJTdGVwNSAudHJhZGVJbkJhclN0ZXA1UXVlc3Rpb24sIC50cmFkZUluQmFyU3RlcDYgLnRyYWRlSW5CYXJTdGVwNlF1ZXN0aW9ueyBtYXJnaW46MjBweCAwOyB9ICN0cmFkZUluQmFyUG9wdXBTdWJtaXQsIC50cmFkZUluQmFyU3RlcDMgI3RyYWRlSW5TdGVwM1llcywgLnRyYWRlSW5CYXJTdGVwNCAjdHJhZGVJblN0ZXA0WWVzLCAudHJhZGVJbkJhclN0ZXA1ICN0cmFkZUluU3RlcDVZZXMsIC50cmFkZUluQmFyU3RlcDYgI3RyYWRlSW5TdGVwNlllc3sgYmFja2dyb3VuZDojRTMxNzNFOyBjb2xvcjojZmZmZmZmOyBwYWRkaW5nOjEycHggNnB4OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlcjp1bnNldDsgZm9udC1zaXplOjAuODc1cmVtIDsgZGlzcGxheTpibG9jazsgdGV4dC13cmFwOmF1dG87IH0gLnRyYWRlSW5CYXJTdGVwMyAjdHJhZGVJblN0ZXAzTm97IGJhY2tncm91bmQ6I2UwZTBlMDsgY29sb3I6IzMzMzsgcGFkZGluZzoxMnB4IDZweDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGJvcmRlci1yYWRpdXM6M3B4OyBib3JkZXI6dW5zZXQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGRpc3BsYXk6YmxvY2s7IHRleHQtd3JhcDphdXRvOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwNiAudHJhZGVJbkJhclN0ZXA2VGl0bGV7IGZvbnQtc2l6ZToxLjI1cmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XICN0cmFkZUluQmFyUG9wdXBfbGluZTF7IGJvcmRlci1yYWRpdXM6NnB4OyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnVwbG9hZGVyLWNvbnRhaW5lciB7IG1heC13aWR0aDo2MDBweDsgd2lkdGg6MTAwJTsgbWFyZ2luOjAgYXV0bzsgYmFja2dyb3VuZC1jb2xvcjojZmZmOyBwYWRkaW5nOjIwcHg7IGJvcmRlci1yYWRpdXM6OHB4OyBib3gtc2hhZG93OjAgNHB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMSk7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAjdHJhZGVJbkJhclBvcHVwRm9ybSAudXBsb2FkZXItY29udGFpbmVyIGgyIHsgZm9udC1zaXplOjEuMnJlbTsgbWFyZ2luLWJvdHRvbToxMHB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XICN0cmFkZUluQmFyUG9wdXBGb3JtIC51cGxvYWRlci1jb250YWluZXIgcCB7IGNvbG9yOiM2NjY7IG1hcmdpbi1ib3R0b206MjBweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtc2l6ZTowLjlyZW07IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAjdHJhZGVJbkJhclBvcHVwRm9ybSAuaW1hZ2UtZ3JpZCB7IGRpc3BsYXk6Z3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCg0LCAxZnIpOyBnYXA6MTVweDsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XICN0cmFkZUluQmFyUG9wdXBGb3JtIC51cGxvYWQtYXJlYSB7IHBvc2l0aW9uOnJlbGF0aXZlOyB3aWR0aDoxMDAlOyBhc3BlY3QtcmF0aW86MSAvIDE7IGJvcmRlcjoycHggZGFzaGVkICNjY2M7IGJvcmRlci1yYWRpdXM6MTBweDsgY3Vyc29yOnBvaW50ZXI7IG92ZXJmbG93OmhpZGRlbjsgYmFja2dyb3VuZC1zaXplOjkwJTsgYmFja2dyb3VuZC1wb3NpdGlvbjpjZW50ZXI7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYmFja2dyb3VuZC1jb2xvcjojZjVmNWY1OyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnVwbG9hZC1hcmVhIGlucHV0W3R5cGU9ImZpbGUiXSB7IGRpc3BsYXk6bm9uZTsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XICN0cmFkZUluQmFyUG9wdXBGb3JtIC5wbGFjZWhvbGRlciB7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MDsgbGVmdDowOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgb2JqZWN0LWZpdDpjb250YWluOyBkaXNwbGF5Om5vbmU7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAjdHJhZGVJbkJhclBvcHVwRm9ybSAucGxhY2Vob2xkZXItdGl0bGUgeyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjVweDsgbGVmdDo1MCU7IHRyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpOyBmb250LXNpemU6MC41cmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgY29sb3I6IzY2NjsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7IHBhZGRpbmc6MXB4IDZweDsgYm9yZGVyLXJhZGl1czo0cHg7IHBvaW50ZXItZXZlbnRzOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyOyB3aGl0ZS1zcGFjZTpub3dyYXA7IG92ZXJmbG93OmhpZGRlbjsgdGV4dC1vdmVyZmxvdzplbGxpcHNpczsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XICN0cmFkZUluQmFyUG9wdXBGb3JtIC5hZGQtaWNvbiB7IHBvc2l0aW9uOmFic29sdXRlOyBib3R0b206NXB4OyByaWdodDo1cHg7IGZvbnQtc2l6ZToxLjFyZW07IGNvbG9yOiMwMDdCRkY7IGJhY2tncm91bmQtY29sb3I6d2hpdGU7IGJvcmRlci1yYWRpdXM6NTAlOyB3aWR0aDoyOHB4OyBoZWlnaHQ6MjhweDsgZGlzcGxheTpmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyBhbGlnbi1pdGVtczpjZW50ZXI7IGJveC1zaGFkb3c6MCAycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4yKTsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XICN0cmFkZUluQmFyUG9wdXBGb3JtIC5kZWxldGUtYnRuIHsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDo1cHg7IHJpZ2h0OjVweDsgd2lkdGg6MjBweDsgaGVpZ2h0OjIwcHg7IGJhY2tncm91bmQtY29sb3I6cmdiYSgwLCAwLCAwLCAwLjcpOyBjb2xvcjp3aGl0ZTsgYm9yZGVyOm5vbmU7IGJvcmRlci1yYWRpdXM6NTAlOyBmb250LXNpemU6MC43NXJlbSA7IGxpbmUtaGVpZ2h0OjIwcHg7IGN1cnNvcjpwb2ludGVyOyBkaXNwbGF5Om5vbmU7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAjdHJhZGVJbkJhclBvcHVwRm9ybSAudXBsb2FkLWFyZWE6aG92ZXIgLmRlbGV0ZS1idG4geyBkaXNwbGF5OmZsZXg7IH0gLnRyYWRlSW5Cb3R0b21Mb2dveyB0ZXh0LWFsaWduOmNlbnRlcjsgY29sb3I6I2E5YTlhOTsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IG1hcmdpbi10b3A6MCFpbXBvcnRhbnQ7IH0gQG1lZGlhIChtYXgtd2lkdGg6NjAwcHgpIHsgI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAjdHJhZGVJbkJhclBvcHVwRm9ybSAudXBsb2FkZXItY29udGFpbmVyIHsgcGFkZGluZzoxNXB4OyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgI3RyYWRlSW5CYXJQb3B1cEZvcm0gLmltYWdlLWdyaWQgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDMsIDFmcik7IGdhcDoxMHB4OyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnBsYWNlaG9sZGVyLXRpdGxlIHsgZm9udC1zaXplOjAuNXJlbSA7IH0gfSBAbWVkaWEgKG1heC13aWR0aDo0MDBweCkgeyAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XICN0cmFkZUluQmFyUG9wdXBGb3JtIC5pbWFnZS1ncmlkIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgyLCAxZnIpOyBnYXA6OHB4OyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnBsYWNlaG9sZGVyLXRpdGxlIHsgZm9udC1zaXplOjAuNXJlbSA7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAjdHJhZGVJbkJhclBvcHVwRm9ybSAuYWRkLWljb24geyB3aWR0aDoyNHB4OyBoZWlnaHQ6MjRweDsgZm9udC1zaXplOjFyZW07IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAjdHJhZGVJbkJhclBvcHVwRm9ybSAuZGVsZXRlLWJ0biB7IHdpZHRoOjE2cHg7IGhlaWdodDoxNnB4OyBmb250LXNpemU6MC42MjVyZW0gOyB9IH0KLyoqIC9jc3MvYWR2YW5jZWQtc2xpZGVyLWJhc2UuY3NzICoqLwouYWR2YW5jZWQtc2xpZGVyIHsgcG9zaXRpb246cmVsYXRpdmU7IG92ZXJmbG93OnZpc2libGU7IG91dGxpbmU6bm9uZTsgbWFyZ2luLWxlZnQ6YXV0bzsgbWFyZ2luLXJpZ2h0OmF1dG87IH0gLmFkdmFuY2VkLXNsaWRlciAqIHsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgfSAuYWR2YW5jZWQtc2xpZGVyIC5zbGlkZXItbWFpbiB7IHBvc2l0aW9uOmFic29sdXRlOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgei1pbmRleDoxMDsgfSAuYWR2YW5jZWQtc2xpZGVyIC5zbGlkZS13cmFwcGVyIHsgcG9zaXRpb246cmVsYXRpdmU7IG92ZXJmbG93OnZpc2libGU7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyB6LWluZGV4OjEwOyB9IC5hZHZhbmNlZC1zbGlkZXIgdWwuc2xpZGVzIHsgcG9zaXRpb246YWJzb2x1dGU7IG92ZXJmbG93OmhpZGRlbjsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgbGlzdC1zdHlsZTpub25lOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgei1pbmRleDoxMDsgfSAuYWR2YW5jZWQtc2xpZGVyIGxpLnNsaWRlIHsgcG9zaXRpb246YWJzb2x1dGU7IG92ZXJmbG93OmhpZGRlbjsgZGlzcGxheTpmbGV4OyBtYXJnaW46MDsgcGFkZGluZzowOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgdmlzaWJpbGl0eTpoaWRkZW47IGxpc3Qtc3R5bGU6bm9uZTsgZmlsdGVyOmFscGhhKG9wYWNpdHk9MTAwKTsgb3BhY2l0eToxOyB9IC5hZHZhbmNlZC1zbGlkZXIgbGkuc2xpZGUgLmltYWdlLCAuYWR2YW5jZWQtc2xpZGVyIGxpLnNsaWRlIC50aHVtYm5haWwsIC5hZHZhbmNlZC1zbGlkZXIgbGkuc2xpZGUgLmNhcHRpb24sIC5hZHZhbmNlZC1zbGlkZXIgbGkuc2xpZGUgLmh0bWwgeyBwb3NpdGlvbjphYnNvbHV0ZTsgfSAuYWR2YW5jZWQtc2xpZGVyIGxpLnNsaWRlIGltZywgLmFkdmFuY2VkLXNsaWRlciAudGh1bWJuYWlsIGltZyB7IG1heC13aWR0aDpub25lOyBtYXgtaGVpZ2h0Om5vbmU7IGJvcmRlcjowIG5vbmU7IH0gLmFkdmFuY2VkLXNsaWRlciBsaS5zbGlkZSAuaHRtbCB7IG92ZXJmbG93OmhpZGRlbjsgfSAuYWR2YW5jZWQtc2xpZGVyIGxpLnNsaWRlIC52aWRlbyB7IH0gLmFkdmFuY2VkLXNsaWRlciBsaS5zbGlkZS5hY3RpdmUgLnZpZGVvIHsgfSAuYWR2YW5jZWQtc2xpZGVyIC5zbGljZS1jb250YWluZXIgeyBwb3NpdGlvbjphYnNvbHV0ZTsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IHotaW5kZXg6MTA7IH0gLmFkdmFuY2VkLXNsaWRlciAuc3dpcGVhYmxlLWNvbnRhaW5lciB7IHBvc2l0aW9uOmFic29sdXRlOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgb3ZlcmZsb3c6aGlkZGVuOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnN3aXBlYWJsZS1jb250YWluZXIgLnNsaWRlcyB7IC13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTsgLW1vei11c2VyLXNlbGVjdDpub25lOyAtby11c2VyLXNlbGVjdDpub25lOyB1c2VyLXNlbGVjdDpub25lOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnN3aXBlYWJsZS1jb250YWluZXIgLnNsaWRlcyAuc2VsZWN0YWJsZSB7IC13ZWJraXQtdXNlci1zZWxlY3Q6YXV0bzsgLW1vei11c2VyLXNlbGVjdDphdXRvOyAtby11c2VyLXNlbGVjdDphdXRvOyB1c2VyLXNlbGVjdDphdXRvOyBjdXJzb3I6YXV0bzsgfSAuYWR2YW5jZWQtc2xpZGVyIC5zd2lwZWFibGUtY29udGFpbmVyIC5ncmFiIHsgY3Vyc29yOmdyYWI7IH0gLmFkdmFuY2VkLXNsaWRlciAuc3dpcGVhYmxlLWNvbnRhaW5lciAuZ3JhYmJpbmcgeyBjdXJzb3I6Z3JhYmJpbmc7IH0gLmFkdmFuY2VkLXNsaWRlciAuc2xpY2UgeyBkaXNwbGF5OmJsb2NrOyBwb3NpdGlvbjphYnNvbHV0ZTsgfSAuYWR2YW5jZWQtc2xpZGVyIC5wcmVsb2FkZXIgeyBwb3NpdGlvbjphYnNvbHV0ZTsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9wcmVsb2FkZXIyLmdpZikgbm8tcmVwZWF0OyB3aWR0aDo2MnB4OyBoZWlnaHQ6MTRweDsgei1pbmRleDoxNTsgfSAuYWR2YW5jZWQtc2xpZGVyIC5zbGlkZS1hcnJvd3MgeyBwb3NpdGlvbjpzdGF0aWM7IH0gLmFkdmFuY2VkLXNsaWRlciAuc2xpZGUtYXJyb3dzIGEgeyBwb3NpdGlvbjphYnNvbHV0ZTsgei1pbmRleDozMDsgY3Vyc29yOnBvaW50ZXI7IH0gLmFkdmFuY2VkLXNsaWRlciAubGlnaHRib3gtaWNvbiB7IHBvc2l0aW9uOmFic29sdXRlOyB3aWR0aDo4MHB4OyBoZWlnaHQ6ODBweDsgdG9wOjUwJTsgbGVmdDo1MCU7IG1hcmdpbi10b3A6LTQwcHg7IG1hcmdpbi1sZWZ0Oi00MHB4OyBjdXJzb3I6cG9pbnRlcjsgei1pbmRleDoxMDsgfSAuYWR2YW5jZWQtc2xpZGVyIC5saWdodGJveC1pY29uLnBsYXkgeyBiYWNrZ3JvdW5kLWltYWdlOnVybCgvaW1hZ2VzL2xpZ2h0Ym94X3BsYXkucG5nKTsgfSAuYWR2YW5jZWQtc2xpZGVyIC5saWdodGJveC1pY29uLm1hZ25pZnlpbmcgeyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2xpZ2h0Ym94X21hZ25pZnlpbmdfc21hbGwucG5nKSBuby1yZXBlYXQ7IGZsb2F0OmxlZnQ7IGxlZnQ6MDsgdG9wOjA7IG1hcmdpbi1sZWZ0OjEwcHg7IG1hcmdpbi10b3A6MTBweDsgZGlzcGxheTpub25lOyB9IH0gLmFkdmFuY2VkLXNsaWRlciAubGlnaHRib3gtaWNvbi5oeXBlcmxpbmsgeyBiYWNrZ3JvdW5kLWltYWdlOnVybCgvaW1hZ2VzL2xpZ2h0Ym94X2h5cGVybGluay5wbmcpOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnNsaWRlc2hvdy1jb250cm9scyB7IHBvc2l0aW9uOmFic29sdXRlOyB6LWluZGV4OjQwOyBjdXJzb3I6cG9pbnRlcjsgfSAuYWR2YW5jZWQtc2xpZGVyIC5zaGFkb3cgeyBwb3NpdGlvbjphYnNvbHV0ZTsgaGVpZ2h0Ojk0cHg7IG1hcmdpbi10b3A6LTUwcHg7IHotaW5kZXg6NTsgfSAuYWR2YW5jZWQtc2xpZGVyIC5zaGFkb3cgLnNoYWRvdy1sZWZ0LCAuYWR2YW5jZWQtc2xpZGVyIC5zaGFkb3cgLnNoYWRvdy1yaWdodCwgLmFkdmFuY2VkLXNsaWRlciAuc2hhZG93IC5zaGFkb3ctbWlkZGxlIHsgZmxvYXQ6bGVmdDsgfSAuYWR2YW5jZWQtc2xpZGVyIC5mdWxsLXNjcmVlbi1jb250cm9scyB7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvZnVsbHNjcmVlbi5wbmcpIG5vLXJlcGVhdDsgcG9zaXRpb246YWJzb2x1dGU7IHdpZHRoOjMxcHg7IGhlaWdodDoyN3B4OyB0b3A6MjBweDsgbGVmdDoyMHB4OyB6LWluZGV4OjYwOyBjdXJzb3I6cG9pbnRlcjsgfSAuYWR2YW5jZWQtc2xpZGVyIC50aW1lci1hbmltYXRpb24geyBwb3NpdGlvbjphYnNvbHV0ZTsgei1pbmRleDo1MDsgfSAuYWR2YW5jZWQtc2xpZGVyIGNhbnZhcyB7IHBvc2l0aW9uOmFic29sdXRlOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRpbWVyLWFuaW1hdGlvbiAudGltZXItYW5pbWF0aW9uLWNvbnRyb2xzIHsgcG9zaXRpb246YWJzb2x1dGU7IGN1cnNvcjpwb2ludGVyOyB3aWR0aDoyMHB4OyBoZWlnaHQ6MjBweDsgdG9wOjUwJTsgbGVmdDo1MCU7IG1hcmdpbi10b3A6LTEwcHg7IG1hcmdpbi1sZWZ0Oi0xMHB4OyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRpbWVyLWFuaW1hdGlvbiAudGltZXItYW5pbWF0aW9uLWNvbnRyb2xzIHsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9wbGF5cGF1c2Vfc21hbGwucG5nKSBuby1yZXBlYXQ7IH0gLmFkdmFuY2VkLXNsaWRlciAudGltZXItYW5pbWF0aW9uLnBsYXkgLnRpbWVyLWFuaW1hdGlvbi1jb250cm9scyB7IGJhY2tncm91bmQtcG9zaXRpb246LTIwcHggMDsgfSAuYWR2YW5jZWQtc2xpZGVyIC50aW1lci1hbmltYXRpb24ucGF1c2UgLnRpbWVyLWFuaW1hdGlvbi1jb250cm9scyB7IGJhY2tncm91bmQtcG9zaXRpb246MCAwOyB9IC5hZHZhbmNlZC1zbGlkZXIgLmNhcHRpb24tY29udGFpbmVyIHsgb3ZlcmZsb3c6aGlkZGVuOyBwb3NpdGlvbjphYnNvbHV0ZTsgfSAuYWR2YW5jZWQtc2xpZGVyIC5jYXB0aW9uLWNvbnRhaW5lciAud3JhcHBlciB7IHBvc2l0aW9uOmFic29sdXRlOyB9IC5hZHZhbmNlZC1zbGlkZXIgLmNhcHRpb24tY29udGFpbmVyIC5iYWNrZ3JvdW5kIHsgcG9zaXRpb246YWJzb2x1dGU7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRodW1ibmFpbC13cmFwcGVyIHsgcG9zaXRpb246YWJzb2x1dGU7IH0gLmFkdmFuY2VkLXNsaWRlciAudGh1bWJuYWlsIHsgYmFja2dyb3VuZC1pbWFnZTp1cmwoL2ltYWdlcy9wcmVsb2FkZXIuZ2lmKTsgYmFja2dyb3VuZC1wb3NpdGlvbjpjZW50ZXI7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgcG9zaXRpb246YWJzb2x1dGU7IG92ZXJmbG93OmhpZGRlbjsgfSAuYWR2YW5jZWQtc2xpZGVyIC5zbGlkZS1idXR0b25zIHsgcG9zaXRpb246YWJzb2x1dGU7IHotaW5kZXg6MjA7IH0gLmFkdmFuY2VkLXNsaWRlciAuc2xpZGUtYnV0dG9ucyAubGVmdCwgLmFkdmFuY2VkLXNsaWRlciAuc2xpZGUtYnV0dG9ucyAucmlnaHQsIC5hZHZhbmNlZC1zbGlkZXIgLnNsaWRlLWJ1dHRvbnMgLm1pZGRsZSB7IGZsb2F0OmxlZnQ7IH0gLmFkdmFuY2VkLXNsaWRlciAuc2xpZGUtYnV0dG9ucyBhIHsgcG9zaXRpb246cmVsYXRpdmU7IGN1cnNvcjpwb2ludGVyOyBmbG9hdDpsZWZ0OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLmFkdmFuY2VkLXNsaWRlciAudGh1bWJuYWlsLXNjcm9sbGVyIHsgcG9zaXRpb246YWJzb2x1dGU7IHotaW5kZXg6MjA7IH0gLmFkdmFuY2VkLXNsaWRlciAudGh1bWJuYWlsLXNjcm9sbGVyIC52aXNpYmxlLWNvbnRhaW5lciB7IHBvc2l0aW9uOnJlbGF0aXZlOyBvdmVyZmxvdzpoaWRkZW47IH0gLmFkdmFuY2VkLXNsaWRlciAudGh1bWJuYWlsLXNjcm9sbGVyIC5jb250YWluZXIgeyBwb3NpdGlvbjphYnNvbHV0ZTsgb3ZlcmZsb3c6dmlzaWJsZTsgdG9wOjA7IGxlZnQ6MDsgbGlzdC1zdHlsZTpub25lOyBtYXJnaW46MDsgcGFkZGluZzowOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRodW1ibmFpbC1zY3JvbGxlciAudGh1bWJuYWlsLXdyYXBwZXIgeyBjdXJzb3I6cG9pbnRlcjsgbGlzdC1zdHlsZTpub25lOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRodW1ibmFpbC1zY3JvbGxlciAubGlnaHRib3gtaWNvbiB7IHBvc2l0aW9uOmFic29sdXRlOyB3aWR0aDozMHB4OyBoZWlnaHQ6MzBweDsgdG9wOjUwJTsgbGVmdDo1MCU7IG1hcmdpbi10b3A6LTE1cHg7IG1hcmdpbi1sZWZ0Oi0xNXB4OyBjdXJzb3I6cG9pbnRlcjsgfSAuYWR2YW5jZWQtc2xpZGVyIC50aHVtYm5haWwtc2Nyb2xsZXIgLmxpZ2h0Ym94LWljb24ucGxheSB7IGJhY2tncm91bmQtaW1hZ2U6dXJsKC9pbWFnZXMvbGlnaHRib3hfcGxheV9zbWFsbC5wbmcpOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRodW1ibmFpbC1zY3JvbGxlciAubGlnaHRib3gtaWNvbi5tYWduaWZ5aW5nIHsgYmFja2dyb3VuZC1pbWFnZTp1cmwoL2ltYWdlcy9saWdodGJveF9tYWduaWZ5aW5nX3NtYWxsLnBuZyk7IH0gLmFkdmFuY2VkLXNsaWRlciAudGh1bWJuYWlsLXNjcm9sbGVyIC5saWdodGJveC1pY29uLmh5cGVybGluayB7IGJhY2tncm91bmQtaW1hZ2U6dXJsKC9pbWFnZXMvbGlnaHRib3hfaHlwZXJsaW5rX3NtYWxsLnBuZyk7IH0gLmFkdmFuY2VkLXNsaWRlciAudGh1bWJuYWlsIC5jYXB0aW9uIHsgcG9zaXRpb246YWJzb2x1dGU7IHdpZHRoOjEwMCU7IH0gLmFkdmFuY2VkLXNsaWRlciAudGh1bWJuYWlsIC5jYXB0aW9uIC5iYWNrZ3JvdW5kIHsgcG9zaXRpb246YWJzb2x1dGU7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyB6LWluZGV4OjEwOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRodW1ibmFpbCAuY2FwdGlvbiAuY29udGVudCB7IHBvc2l0aW9uOmFic29sdXRlOyB3aWR0aDoxMDAlOyB6LWluZGV4OjIwOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRodW1ibmFpbC1zY3JvbGxlciAuYXJyb3dzIGEgeyBwb3NpdGlvbjphYnNvbHV0ZTsgY3Vyc29yOnBvaW50ZXI7IH0gLmFkdmFuY2VkLXNsaWRlciAudGh1bWJuYWlsLXNjcm9sbGVyIC5idXR0b25zIHsgcG9zaXRpb246YWJzb2x1dGU7IHdpZHRoOmF1dG87IH0gLmFkdmFuY2VkLXNsaWRlciAudGh1bWJuYWlsLXNjcm9sbGVyIC5idXR0b25zIGEgeyBwb3NpdGlvbjphYnNvbHV0ZTsgY3Vyc29yOnBvaW50ZXI7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9IC5hZHZhbmNlZC1zbGlkZXItdG9vbHRpcCB7IHBvc2l0aW9uOmFic29sdXRlOyB6LWluZGV4Ojk5OTk7IH0gLm9lbS1pbWctc2xpZGVyIC5zbGlkZSBhIHsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IH0gLm9lbS1pbWctc2xpZGVyIC5zbGlkZTpudGgtY2hpbGQoLW4rNCkgYSBpbWd7IHdpZHRoOjExNSUgIWltcG9ydGFudDsgfSAub2VtLWltZy1zbGlkZXIgLnNsaWRlIGEgaW1neyBoZWlnaHQ6YXV0byAhaW1wb3J0YW50OyBtYXJnaW46MCAhaW1wb3J0YW50OyBtYXgtd2lkdGg6bm9uZSAhaW1wb3J0YW50OyBtYXgtaGVpZ2h0Om5vbmUgIWltcG9ydGFudDsgcG9zaXRpb246cmVsYXRpdmUgIWltcG9ydGFudDsgbGVmdDppbml0aWFsICFpbXBvcnRhbnQ7IHRvcDppbml0aWFsICFpbXBvcnRhbnQ7IG1heC13aWR0aDp1bnNldCAhaW1wb3J0YW50OyBtYXgtaGVpZ2h0OnVuc2V0ICFpbXBvcnRhbnQ7IH0gLm9lbS1pbWctc2xpZGVyICNmaXJzdFNsaWRlckltZyAucGxhY2Vob2xkZXIgeyBiYWNrZ3JvdW5kLXNpemU6MTE1JTsgfQovKiogL2Nzcy90b2FzdHIuY3NzICoqLwoudG9hc3QtdGl0bGV7Zm9udC13ZWlnaHQ6Ym9sZH0udG9hc3QtbWVzc2FnZXstbXMtd29yZC13cmFwOmJyZWFrLXdvcmQ7d29yZC13cmFwOmJyZWFrLXdvcmR9LnRvYXN0LW1lc3NhZ2UgYSwudG9hc3QtbWVzc2FnZSBsYWJlbHtjb2xvcjojZmZmfS50b2FzdC1tZXNzYWdlIGE6aG92ZXJ7Y29sb3I6I2NjYzt0ZXh0LWRlY29yYXRpb246bm9uZX0udG9hc3QtY2xvc2UtYnV0dG9ue3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0Oi0wLjNlbTt0b3A6LTAuM2VtO2Zsb2F0OnJpZ2h0O2ZvbnQtc2l6ZToxLjI1cmVtIDtmb250LXdlaWdodDpib2xkO2NvbG9yOmluaGVyaXQ7LXdlYmtpdC10ZXh0LXNoYWRvdzowIDFweCAwICNmZmY7dGV4dC1zaGFkb3c6MCAxcHggMCAjZmZmO29wYWNpdHk6Ljg7LW1zLWZpbHRlcjphbHBoYShvcGFjaXR5PTgwKTtmaWx0ZXI6YWxwaGEob3BhY2l0eT04MCl9LnRvYXN0LWNsb3NlLWJ1dHRvbjpob3ZlciwudG9hc3QtY2xvc2UtYnV0dG9uOmZvY3Vze2NvbG9yOiMxYjFiMWI7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y3Vyc29yOnBvaW50ZXI7b3BhY2l0eTouNDstbXMtZmlsdGVyOmFscGhhKG9wYWNpdHk9NDApO2ZpbHRlcjphbHBoYShvcGFjaXR5PTQwKX1idXR0b24udG9hc3QtY2xvc2UtYnV0dG9ue3BhZGRpbmc6MDtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JvcmRlcjowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lfS50b2FzdC10b3AtY2VudGVye3RvcDowO3JpZ2h0OjA7d2lkdGg6MTAwJX0udG9hc3QtYm90dG9tLWNlbnRlcntib3R0b206MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LXRvcC1mdWxsLXdpZHRoe3RvcDowO3JpZ2h0OjA7d2lkdGg6MTAwJX0udG9hc3QtYm90dG9tLWZ1bGwtd2lkdGh7Ym90dG9tOjA7cmlnaHQ6MDt3aWR0aDoxMDAlfS50b2FzdC10b3AtbGVmdHt0b3A6MTJweDtsZWZ0OjEycHh9LnRvYXN0LXRvcC1yaWdodHt0b3A6MTJweDtyaWdodDoxMnB4fS50b2FzdC1ib3R0b20tcmlnaHR7cmlnaHQ6MTJweDtib3R0b206MTJweH0udG9hc3QtYm90dG9tLWxlZnR7Ym90dG9tOjEycHg7bGVmdDoxMnB4fSN0b2FzdC1jb250YWluZXJ7cG9zaXRpb246Zml4ZWQ7ei1pbmRleDo5OTk5OTk7Y29sb3I6I0ZGRn0jdG9hc3QtY29udGFpbmVyICp7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94fSN0b2FzdC1jb250YWluZXI+ZGl2e3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmhpZGRlbjttYXJnaW46MCAwIDZweDtwYWRkaW5nOjE1cHggMTVweCAxNXB4IDUwcHg7d2lkdGg6MzAwcHg7LW1vei1ib3JkZXItcmFkaXVzOjNweCAzcHggM3B4IDNweDstd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4IDNweCAzcHggM3B4O2JvcmRlci1yYWRpdXM6M3B4IDNweCAzcHggM3B4O2JhY2tncm91bmQtcG9zaXRpb246MTVweCBjZW50ZXI7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0Oy1tb3otYm94LXNoYWRvdzowIDAgMTJweCAjOTk5Oy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTJweCAjOTk5O2JveC1zaGFkb3c6MCAwIDEycHggIzk5OTtjb2xvcjppbmhlcml0O29wYWNpdHk6Ljg7LW1zLWZpbHRlcjphbHBoYShvcGFjaXR5PTgwKTtmaWx0ZXI6YWxwaGEob3BhY2l0eT04MCl9I3RvYXN0LWNvbnRhaW5lcj46aG92ZXJ7LW1vei1ib3gtc2hhZG93OjAgMCAxMnB4ICMwMDA7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCAxMnB4ICMwMDA7Ym94LXNoYWRvdzowIDAgMTJweCAjMDAwO29wYWNpdHk6MTstbXMtZmlsdGVyOmFscGhhKG9wYWNpdHk9MTAwKTtmaWx0ZXI6YWxwaGEob3BhY2l0eT0xMDApO2N1cnNvcjpwb2ludGVyfSN0b2FzdC1jb250YWluZXI+LnRvYXN0LWluZm97YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUFHd1NVUkJWRWhMdFphOVNnTkJFTWM5c1V4eFJjb1VLU3pTV0loWHBGTWhoWVdGaGFCZzR5UFlpV0NYWnhCTEVSc0xSUzNFUWtFZndDS2RqV0pBd1NLQ2dvS0NjdWR2NE81WUxydDdFemdYaGlVMy80K2IyY2ttd1ZqSlNwS2tRNndBaTRnd2hUK3ozd1JCY0V6MHlqU3NlVVRyY1J5ZnNIc1htRDBBbWJIT0M5SWk4VkltbnVYQlBnbEhwUTV3d1NWTTdzTm5URzdaYTRKd0RkQ2p4eUFpSDNueUEybXRhVEp1ZmlEWjVkQ2FxbEl0SUxoMU5IYXRmTjVza3ZqeDlaMzhtNjlDZ3p1WG1aZ1ZyUElHRTc2M0p4OXFLc1JveldZdzZ4T0hkRVIrbm4yS2tPK0JiK1VWNUNCTjZXQzZRdEJnYlJWb3pyYWhBYm1tNkh0VXNndFBDMTl0RmR4WFpZQk9ma2JtRkoxVmFIQTFWQUhqZDBwcDcwb1RaenZSK0VWcngyWWdmZHNxNmV1NTVCSFlSOGhsY2tpK24ra0VSVUZHOEJyQTBCd2plQXYyTThXTFFCdGN5K1NENmZOc21uQjNBbEJMcmdUdFZXMWMyUU40YlZXTEFUYUlTNjBKMkR1NXkxVGlKZ2pTQnZGVlpnVG13Q1UrZEFaRm9QeEdFRXM4bnlIQzlCd2UyR3ZFSnYyV1haYjB2amR5RlQ0Q3hrM2Uva0lxbE9Hb1ZMd3dQZXZwWUhUKzAwVCtoV3dYRGY0QUpBT1VxV2NEaGJ3QUFBQUFTVVZPUks1Q1lJST0iKSAhaW1wb3J0YW50fSN0b2FzdC1jb250YWluZXI+LnRvYXN0LWVycm9ye2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBSE9TVVJCVkVoTHJaYS9TZ05CRU1aemgwV0tDQ2xTQ0thSVlPRUQrQUFLZVFRTEc4SFd6dExDSW1CcllhZGdJZFkrZ0lLTllrQkZTd3U3Q0FvcUNna2tvR0JJL0UyOFBkYkxabWVETGd6WnpjeDgzL3paMlNTWEMxajlmcitJMUhxOTNnMnl4SDRpd00xdmtvQldBZHhDbXB6VHhma04yUmN5Wk5hSEZJa1NvMTArOGtneGtYSVVSVjVIR3hUbUZ1Yzc1QjJSZlFrcHhIRzhhQWdhQUZhMHRBSHFZRmZRN0l3ZTJ5aE9EazgrSjRDN3lBb1JUV0kzdy80a2xHUmdSNGxPN1JwbjkrZ3ZNeVdwK3V4Rmg4K0grQVJsZ04xbkp1SnVRQVl2TmtFbndHRmNrMThFcjRxM2VnRWMvb08rbWhMZEtnUnloZE5GaWFjQzBybE9DYmhOVno0SDlGbkFZZ0RCdlUzUUlpb1psSkZMSnRzb0hZUkRmaVpvVXlJeHFDdFJwVmxBTnEwRVU0ZEFwanJ0Z2V6UEZhZDVTMTlXZ2prYzBoTlZudUY0SGpWQTZDN1FyU0lieWxCK29aZTNhSGdCc3FsTnFLWUg0OGpYeUpLTXVBYml5Vko4S3phQjNlUmMwcGc5VndRNG5pRnJ5STY4cWlPaTNBYmp3ZHNmbkF0azBiQ2pUTEpLcjZtckQ5ZzhpcS9TL0I4MWhndU9NbFFUblZ5RzQwd0Fjam5tZ3NDTkVTRHJqbWU3d2ZmdFA0UDdTUDROM0NKWmR2em9OeUdxMmMvSFdPWEpHc3ZWZytSQS9rMk1DL3dONkkyWUEyUHQ4R2tBQUFBQVNVVk9SSzVDWUlJPSIpICFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3Qtc3VjY2Vzc3tiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCZ0FBQUFZQ0FZQUFBRGdkejM0QUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQURzTUFBQTdEQWNkdnFHUUFBQURzU1VSQlZFaExZMkFZQmZRTWdmLy8vM1A4Ky9ldkFJZ3ZBL0ZzSUYrQmF2WUREV01CR3JvYVNNTUJpRThWQzdBWkRySUZhTUZuaWkzQVpUalVnc1VVV1VEQThPZEFINmlRYlFFaHc0SHlHc1BFY0tCWEJJQzRBUmhleDRHNEJzam13ZVUxc29JRmFHZy9XdG9GWlJJWmRFdklNaHhrQ0NqWElWc0FUVjZnRkdBQ3M0UnN3MEVHZ0lJSDNRSllKZ0hTQVJRWkRyV0FCK2phd3pncytRMlVPNDlEN2puUlNSR29FRlJJTGNkbUVNV0dJMGNtMEpKMlFwWUExUkR2Y216SkVXaEFCaEQvcHFyTDBTMENXdUFCS2duUmtpOWxMc2VTN2cyQWxxd0hXUVNLSDRvS0xySUxwUkdoRVFDdzJMaVJVSWE0bHdBQUFBQkpSVTVFcmtKZ2dnPT0iKSAhaW1wb3J0YW50fSN0b2FzdC1jb250YWluZXI+LnRvYXN0LXdhcm5pbmd7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUFHWVNVUkJWRWhMNVpTdlRzTlFGTWJYWkdJQ01ZR1ltSmhBUUlKQUlDWVFQQUFDaVNEQjhBaUlDUVFKVDRDcVFFd2dKdllBU0FRQ2laaVltSmhBSUJBVENBUkp5KzlyVHNsZGQ4c0t1MU0wK2RMYjA1N3Y2L2xicS8yckswbVMvVFJOajljV05BS1BZSUpJSTdnSXhDY1E1MWN2cUlEK0dJRVg4QVNHNEIxYks1Z0laRmVRZm9KZEVYT2ZnWDRRQVFnN2tIMkE2NXlRODdseXhiMjdzZ2drQXpBdUZoYmJnMUsya2dDa0IxYlZ3eUlSOW0yTDdQUlBJaERVSVhnR3R5S3c1NzV5ejNsVE5zNlg0SlhualYrTEtNL20zTXlkblRidE9LSWp0ejZWaENCcTR2U20zbmNkckQybGswVmdVWFNWS2pWREpYSnppalcxUlFkc1U3Rjc3SGU4dTY4a29OWlR6OE96NXlHYTZKM0gzbFoweFlnWEJLMlF5bWxXV0ErUlduWWhza0xCdjJ2bUUraEJNQ3RiQTdLWDVkcld5UlQvMkpzcVoySXZmQjlZNGJXRE5NRmJKUkZtQzlFNzRTb1MwQ3F1bHdqa0MwKzVicGNWMUNaOE5NZWo0cGp5MFUrZG9EUXNHeW8xaHpWSnR0SWpoUTdHbkJ0UkZOMVVhclVsSDhGM3hpY3QrSFkwN3JFem9VR1BsV2NqUkZScjQvZ0NoWmdjM1pMMmQ4b0FBQUFBU1VWT1JLNUNZSUk9IikgIWltcG9ydGFudH0jdG9hc3QtY29udGFpbmVyLnRvYXN0LXRvcC1jZW50ZXI+ZGl2LCN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWNlbnRlcj5kaXZ7d2lkdGg6MzAwcHg7bWFyZ2luOmF1dG99I3RvYXN0LWNvbnRhaW5lci50b2FzdC10b3AtZnVsbC13aWR0aD5kaXYsI3RvYXN0LWNvbnRhaW5lci50b2FzdC1ib3R0b20tZnVsbC13aWR0aD5kaXZ7d2lkdGg6OTYlO21hcmdpbjphdXRvfS50b2FzdHtiYWNrZ3JvdW5kLWNvbG9yOiMwMzAzMDN9LnRvYXN0LXN1Y2Nlc3N7YmFja2dyb3VuZC1jb2xvcjojNTFhMzUxfS50b2FzdC1lcnJvcntiYWNrZ3JvdW5kLWNvbG9yOiNiZDM2MmZ9LnRvYXN0LWluZm97YmFja2dyb3VuZC1jb2xvcjojMmY5NmI0fS50b2FzdC13YXJuaW5ne2JhY2tncm91bmQtY29sb3I6I2Y4OTQwNn0udG9hc3QtcHJvZ3Jlc3N7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO2JvdHRvbTowO2hlaWdodDo0cHg7YmFja2dyb3VuZC1jb2xvcjojMDAwO29wYWNpdHk6LjQ7LW1zLWZpbHRlcjphbHBoYShvcGFjaXR5PTQwKTtmaWx0ZXI6YWxwaGEob3BhY2l0eT00MCl9QG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDoyNDBweCl7I3RvYXN0LWNvbnRhaW5lcj5kaXZ7cGFkZGluZzo4cHggOHB4IDhweCA1MHB4O3dpZHRoOjExZW19I3RvYXN0LWNvbnRhaW5lciAudG9hc3QtY2xvc2UtYnV0dG9ue3JpZ2h0Oi0wLjJlbTt0b3A6LTAuMmVtfX1AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjI0MXB4KSBhbmQgKG1heC13aWR0aDo0ODBweCl7I3RvYXN0LWNvbnRhaW5lcj5kaXZ7cGFkZGluZzo4cHggOHB4IDhweCA1MHB4O3dpZHRoOjE4ZW19I3RvYXN0LWNvbnRhaW5lciAudG9hc3QtY2xvc2UtYnV0dG9ue3JpZ2h0Oi0wLjJlbTt0b3A6LTAuMmVtfX1AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjQ4MXB4KSBhbmQgKG1heC13aWR0aDo3NjhweCl7I3RvYXN0LWNvbnRhaW5lcj5kaXZ7cGFkZGluZzoxNXB4IDE1cHggMTVweCA1MHB4O3dpZHRoOjI1ZW19fQovKiogL2Nzcy92ZWhpY2xlRmVhdHVyZVN1bW1hcnkucHJlbG9hZC5jc3MgKiovCi52ZHBGZWF0dXJlU3VtbWFyeXsgLS1zd2l0Y2gtYnA6NTByZW07IGJvcmRlci1jb2xvcjojY2NjY2NjOyBjbGVhcjpib3RoOyB9IC52c2ZpSXRlbVN1bW1hcnkgeyBmb250LXdlaWdodDo3MDA7IGZvbnQtc2l6ZToxLjJyZW07IH0gLnZkcEZlYXR1cmVDb25zdW1wdGlvbnsgZGlzcGxheTpmbGV4OyBmbGV4LXdyYXA6d3JhcDsgfSAudmRwRmVhdHVyZUNvbnN1bXB0aW9uID4gKnsgZmxleDoxIDEgMzElOyBtaW4td2lkdGg6OXJlbTsgfQovKiogL2Nzcy9rYy5mYWIuY3NzICoqLwojY29udGFpbmVyRmxCIHsgbWFyZ2luOjA7IHdpZHRoOjYwcHg7IGhlaWdodDo2MHB4OyBwb3NpdGlvbjpmaXhlZDtib3R0b206MjBweDtyaWdodDoxMHB4O30gI2NpcmNsZUZsQiB7IHBvc2l0aW9uOnJlbGF0aXZlOyB3aWR0aDoxMDAlOyBwYWRkaW5nLWJvdHRvbToxMDAlOyBvdmVyZmxvdzpoaWRkZW47IH0gI2NpcmNsZUZsQiB0ZXh0IHsgZm9udC1mYW1pbHk6J0hlbHZldGljYSBOZXVlJywgQXJpYWw7IGZvbnQtc2l6ZToxLjI1cmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAjY2lyY2xlRmxCIHN2ZyB7IHBvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjA7IHRvcDowOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgLXdlYmtpdC1hbmltYXRpb24tbmFtZTpyb3RhdGU7IC1tb3otYW5pbWF0aW9uLW5hbWU6cm90YXRlOyAtbXMtYW5pbWF0aW9uLW5hbWU6cm90YXRlOyAtby1hbmltYXRpb24tbmFtZTpyb3RhdGU7IGFuaW1hdGlvbi1uYW1lOnJvdGF0ZTsgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246NXM7IC1tb3otYW5pbWF0aW9uLWR1cmF0aW9uOjVzOyAtbXMtYW5pbWF0aW9uLWR1cmF0aW9uOjVzOyAtby1hbmltYXRpb24tZHVyYXRpb246NXM7IGFuaW1hdGlvbi1kdXJhdGlvbjo1czsgLXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OmluZmluaXRlOyAtbW96LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6aW5maW5pdGU7IC1tcy1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OmluZmluaXRlOyAtby1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OmluZmluaXRlOyBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OmluZmluaXRlOyAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246bGluZWFyOyAtbW96LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246bGluZWFyOyAtbXMtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpsaW5lYXI7IC1vLWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246bGluZWFyOyBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmxpbmVhcjsgfSBALXdlYmtpdC1rZXlmcmFtZXMgcm90YXRlIHsgZnJvbSB7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgwKTsgfSB0byB7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpOyB9IH0gQC1tb3ota2V5ZnJhbWVzIHJvdGF0ZSB7IGZyb20geyAtbW96LXRyYW5zZm9ybTpyb3RhdGUoMCk7IH0gdG8geyAtbW96LXRyYW5zZm9ybTpyb3RhdGUoMzYwZGVnKTsgfSB9IEAtbXMta2V5ZnJhbWVzIHJvdGF0ZSB7IGZyb20geyAtbXMtdHJhbnNmb3JtOnJvdGF0ZSgwKTsgfSB0byB7IC1tcy10cmFuc2Zvcm06cm90YXRlKDM2MGRlZyk7IH0gfSBALW8ta2V5ZnJhbWVzIHJvdGF0ZSB7IGZyb20geyAtby10cmFuc2Zvcm06cm90YXRlKDApOyB9IHRvIHsgLW8tdHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpOyB9IH0gQGtleWZyYW1lcyByb3RhdGUgeyBmcm9tIHsgdHJhbnNmb3JtOnJvdGF0ZSgwKTsgfSB0byB7IHRyYW5zZm9ybTpyb3RhdGUoMzYwZGVnKTsgfSB9ICNzaWduRmxCeyBjb2xvcjojZmZmO3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDotNDdweDtsZWZ0OjE5cHg7Zm9udC1zaXplOjIuMTg4cmVtIDsgei1pbmRleDo5OTk5OTk7IH0KLyoqIC9jc3MvY29udGFjdFBvcHVwLmNzcyAqKi8KI2NvbnRhY3Rwb3B1cCB7IHdpZHRoOjU5OHB4OyBtaW4td2lkdGg6MjMwcHg7IH0gI2NvbnRhY3Rwb3B1cC5tb2JpbGUgeyB3aWR0aDoxMDAlOyB9IC5jb250YWN0cG9wdXAubW9iaWxlIHRhYmxlLmpxVHJhbnNmb3JtVGV4dGFyZWEsIC5jb250YWN0cG9wdXAubW9iaWxlIHRhYmxlLmpxVHJhbnNmb3JtVGV4dGFyZWEgdGV4dGFyZWEuanF0cmFuc2Zvcm1kb25lIHsgd2lkdGg6MTAwJTsgfSAuY29udGFjdHBvcHVwLm1vYmlsZSB0YWJsZS5qcVRyYW5zZm9ybVRleHRhcmVhIHRkLmpxVHJhbnNmb3JtVGV4dGFyZWEtbWwsIC5jb250YWN0cG9wdXAubW9iaWxlIHRhYmxlLmpxVHJhbnNmb3JtVGV4dGFyZWEgdGQuanFUcmFuc2Zvcm1UZXh0YXJlYS1tciB7IGRpc3BsYXk6bm9uZTsgfSAjY29udGFjdHBvcHVwICogeyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0gI2NvbnRhY3Rwb3B1cC5yZXZlYWwtbW9kYWwgeyBwYWRkaW5nOjA7IH0gI2NvbnRhY3Rwb3B1cC5yZXZlYWwtbW9kYWwgLmNsb3NlLXJldmVhbC1tb2RhbCB7IGRpc3BsYXk6bm9uZTsgfSAjY29udGFjdHBvcHVwIC5jb250YWN0cG9wdXAtYm9keSB7IGJhY2tncm91bmQtY29sb3I6d2hpdGU7IHBhZGRpbmc6MzBweCAxMHB4IDEwcHg7IH0gLmNvbnRhY3Rwb3B1cC1ib2R5IGlucHV0IHsgd2lkdGg6MTAwJTsgfSAuY29udGFjdHBvcHVwLWJvZHkgLmRpdkJsb2NrUm93Om5vdCg6bGFzdC1jaGlsZCkgLmRpdlNwYW4geyBtYXJnaW4tYm90dG9tOjE1cHg7IH0gLmNvbnRhY3Rwb3B1cC1ib2R5IC5kaXZCbG9ja1JvdyAuZGl2U3BhbjY6Zmlyc3QtY2hpbGQgeyBwYWRkaW5nLXJpZ2h0OjE1cHg7IH0gLmNvbnRhY3Rwb3B1cC1ib2R5IC5kaXZCbG9ja1JvdyAuZGl2U3BhbjY6bGFzdC1jaGlsZCB7IHBhZGRpbmctbGVmdDoxNXB4OyB9IC5jb250YWN0cG9wdXAtYm9keSAuZGl2QmxvY2tSb3cgLmRpdlNwYW42IC5qcVRyYW5zZm9ybUlucHV0V3JhcHBlciB7IG1heC13aWR0aDoyNzRweCAhaW1wb3J0YW50OyB9IC5jb250YWN0cG9wdXAtaGVhZGVyIHsgYm9yZGVyLXJhZGl1czo1cHggNXB4IDAgMDsgcGFkZGluZzoxNXB4IDE1cHggMzBweCAxNXB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgcG9zaXRpb246cmVsYXRpdmU7IC13ZWJraXQtYm94LXNoYWRvdzowIDAgMTBweCAycHggcmdiYSgwLDAsMCwwLjMpOyAtbW96LWJveC1zaGFkb3c6MCAwIDEwcHggMnB4IHJnYmEoMCwwLDAsMC4zKTsgYm94LXNoYWRvdzowIDAgMTBweCAycHggcmdiYSgwLDAsMCwwLjMpOyBmb250LXNpemU6MS42MjVyZW0gOyBjb2xvcjojZmZmZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiMxYjFiMWI7IH0gLmNvbnRhY3Rwb3B1cC1oZWFkZXI6OmFmdGVyIHsgY29udGVudDoiIjsgcG9zaXRpb246YWJzb2x1dGU7IGJvdHRvbTotMTVweDsgbGVmdDo1MCU7IC13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlKTsgLW1vei10cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUpOyAtbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlKTsgLW8tdHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlKTsgdHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlKTsgYm9yZGVyLWxlZnQ6MzBweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXJpZ2h0OjMwcHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci10b3A6MTVweCBzb2xpZCAjMWIxYjFiOyB9IC5jb250YWN0cG9wdXAtaGVhZGVyIC5mYS10aW1lcyB7IHBvc2l0aW9uOmFic29sdXRlOyByaWdodDowLjVyZW07IHRvcDowLjVyZW07IGZvbnQtc2l6ZTppbml0aWFsOyB9IC5jb250YWN0cG9wdXAtaGVhZGVyIC5mYS10aW1lczpob3ZlciB7IGN1cnNvcjpwb2ludGVyOyB9IC5jb250YWN0cG9wdXAtaGVhZGVyIC5oZWFkZXItcmVwbGFjZSB7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB9IGJ1dHRvbi5jb250YWN0LXN1Ym1pdCB7IHBhZGRpbmc6MTBweCAxNXB4OyBkaXNwbGF5OmJsb2NrOyBmbG9hdDpsZWZ0OyB3aWR0aDoxMDAlOyBib3JkZXItY29sb3I6I2ZmZmZmZjsgYmFja2dyb3VuZDojMWIxYjFiOyB0cmFuc2l0aW9uOmFsbCAwLjI1czsgY29sb3I6I2ZmZmZmZjsgZm9udC13ZWlnaHQ6NjAwOyBtYXJnaW46MDsgYm9yZGVyOjFweCBzb2xpZDsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlOyBib3JkZXItcmFkaXVzOjNweDsgZm9udC1zaXplOjEuNTYzcmVtIDsgfSAuY29udGFjdC1zdWJtaXQ6aG92ZXIgeyBjdXJzb3I6cG9pbnRlcjsgYm9yZGVyLWNvbG9yOiNmZmZmZmY7IGJhY2tncm91bmQtY29sb3I6I2UzMTczZTsgY29sb3I6I2ZmZmZmZjsgfSAuY29udGFjdHBvcHVwLWZvb3RlciB7IH0gLmNvbnRhY3Rwb3B1cC1mb290ZXIgLmJ0bi13cmFwcGVyIHsgcGFkZGluZzoxMHB4OyB9ICNjb250YWN0cG9wdXAgLmpxVHJhbnNmb3JtSW5wdXRJbm5lciBkaXYgeyBoZWlnaHQ6MzBweDsgfSAjY29udGFjdHBvcHVwIC5qcVRyYW5zZm9ybUlucHV0SW5uZXIgZGl2LnZhbGlkaXR5LWVycm9uZW91cyB7IHdpZHRoOmluaGVyaXQ7IH0KLyoqIC9jc3MvZGl2X3RhYmxlcy5jc3MgKiovCmRpdi5kaXZUYWJsZVZpZXd7IGZsb2F0OmxlZnQ7IHdpZHRoOjEwMCU7IH0gZGl2LmRpdlRhYmxlVmlldyBkaXYuZGl2VGFibGVXcmFwZXJ7IH0gZGl2LmRpdlRhYmxlVmlldyBkaXYuZGl2VGl0bGV7IGRpc3BsYXk6YmxvY2s7IGZvbnQtd2VpZ2h0OmJvbGQ7IHRleHQtYWxpZ246bGVmdDsgZm9udC1zaXplOjAuOTM4cmVtIDsgcGFkZGluZzozMHB4IDBweCAxMHB4IDEwcHg7IGNvbG9yOiMxYjFiMWI7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LXRyYW5zZm9ybTp2YXIoLS10eHQtdXBwZXIpOyBoZWlnaHQ6YXV0bzsgfSBkaXYuZGl2VGFibGVWaWV3IGRpdi5kaXZUYWJsZU91dGVyeyBib3JkZXI6MXB4IHNvbGlkICNkZGQ7IHBhZGRpbmc6MDsgYm9yZGVyLXJhZGl1czo4cHg7IG1hcmdpbjowOyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LCAyNTUsIDI1NSwgMC43NSk7IG92ZXJmbG93OmhpZGRlbjsgfSBkaXYuZGl2VGFibGVWaWV3IGRpdi5kaXZUYWJsZXsgZGlzcGxheTp0YWJsZTsgd2lkdGg6MTAwJTsgcGFkZGluZzowOyBtYXJnaW46MDsgfSBkaXYuZGl2VGFibGVWaWV3IGRpdi5kaXZIZWFkaW5neyBkaXNwbGF5OnRhYmxlLXJvdzsgZm9udC13ZWlnaHQ6aW5pdGlhbDsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtd2VpZ2h0OmJvbGQ7IGhlaWdodDo0NXB4OyB9IGRpdi5kaXZUYWJsZVZpZXcgZGl2LmRpdlJvd3sgZGlzcGxheTp0YWJsZS1yb3c7IHdpZHRoOjEwMCU7IGhlaWdodDo2NXB4OyB9IGRpdi5kaXZUYWJsZVZpZXcgZGl2LmRpdkNlbGx7IGRpc3BsYXk6dGFibGUtY2VsbDsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2RkZDsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmc6MTVweCAxNXB4IDI1cHggMTVweDsgYm9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjZGRkOyBjb2xvcjojMWIxYjFiOyBmb250LXNpemU6MC44NzVyZW0gOyB9IGRpdi5kaXZUYWJsZVZpZXcgZGl2LmRpdkNlbGw6bGFzdC1jaGlsZHsgYm9yZGVyLXJpZ2h0OjFweCBzb2xpZCB0cmFuc3BhcmVudDsgfSBkaXYuZGl2VGFibGVWaWV3IGRpdi5kaXZIZWFkaW5nIGRpdi5kaXZDZWxseyBwYWRkaW5nOjEwcHggMTVweDsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwgMjU1LCAyNTUsIDEuMCk7IH0gZGl2LmRpdlRhYmxlVmlldyBkaXYuZGl2SGVhZGluZyBkaXYuZGl2Q2VsbDpudGgtY2hpbGQoZXZlbil7IGJhY2tncm91bmQtY29sb3I6I2VlZTsgfSBkaXYuZGl2VGFibGVWaWV3IGRpdi5kaXZIZWFkaW5nIGRpdi5kaXZDZWxsOmxhc3QtY2hpbGR7IGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOjhweDsgfSBkaXYuZGl2VGFibGVWaWV3IGRpdi5kaXZIZWFkaW5nIGRpdi5kaXZDZWxsOmZpcnN0LWNoaWxkeyBib3JkZXItdG9wLWxlZnQtcmFkaXVzOjhweDsgfSBkaXYuZGl2VGFibGVWaWV3IGRpdi5kaXZSb3c6bGFzdC1jaGlsZCBkaXYuZGl2Q2VsbHsgYm9yZGVyLWJvdHRvbTowcHg7IH0gZGl2LmRpdlRhYmxlVmlldyBkaXYuZGl2Um93IGRpdi5kaXZDZWxseyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTsgfSBkaXYuZGl2VGFibGVWaWV3IGRpdi5kaXZSb3cgZGl2LmRpdkNlbGw6bnRoLWNoaWxkKGV2ZW4peyBiYWNrZ3JvdW5kLWNvbG9yOiNmNmY3Zjg7IH0KLyoqIC9jc3MvZGl2X2Jsb2Nrcy5jc3MgKiovCmRpdi5kaXZCbG9ja1ZpZXd7IGRpc3BsYXk6YmxvY2s7IGZsb2F0OmxlZnQ7IHdpZHRoOjEwMCU7IH0gZGl2LmRpdkJsb2NrVmlldyBkaXYuZGl2QmxvY2tUaXRsZSwgZGl2LmRpdkJsb2NrVmlldyBsYWJlbC5kaXZCbG9ja1RpdGxleyBkaXNwbGF5OmJsb2NrOyBmb250LXdlaWdodDpib2xkOyB0ZXh0LWFsaWduOmxlZnQ7IHBhZGRpbmc6MzBweCAxMHB4IDEwcHggMTBweDsgY29sb3I6IzFiMWIxYjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtdHJhbnNmb3JtOnZhcigtLXR4dC11cHBlcik7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyB9IGRpdi5kaXZCbG9ja1ZpZXcgZGl2LmRpdkJsb2NrVGl0bGUuYmxvY2tUaXRsZVN0eWxlMiwgZGl2LmRpdkJsb2NrVmlldyBsYWJlbC5kaXZCbG9ja1RpdGxlLmJsb2NrVGl0bGVTdHlsZTJ7IHBhZGRpbmc6MCA0MHB4IDEwcHg7IH0gZGl2LmRpdkJsb2NrVmlldyBkaXYuZGl2QmxvY2tDb250ZW50eyBiYWNrZ3JvdW5kOm5vbmU7IHBhZGRpbmc6MTVweCAwcHg7IG1hcmdpbjowOyBmbG9hdDpsZWZ0OyB3aWR0aDoxMDAlOyB9IGRpdi5kaXZCbG9ja1ZpZXcgZGl2LmRpdkJsb2NrQ29udGVudCBkaXYuZGl2QmxvY2tDb2x1bW57IGJhY2tncm91bmQ6bm9uZTsgcGFkZGluZzowIDQwcHg7IG1hcmdpbjowOyB3aWR0aDo4NjBweCAhaW1wb3J0YW50OyBmbG9hdDpsZWZ0OyBmb250LXNpemU6aW5oZXJpdDsgfSBkaXYuZGl2QmxvY2tWaWV3IFVMLmRpdkJsb2NrTGlzdHsgYmFja2dyb3VuZDppbml0aWFsOyBwYWRkaW5nOjA7IG1hcmdpbjowIDAgMjBweCAwOyB9IGRpdi5kaXZCbG9ja1ZpZXcgVUwuZGl2QmxvY2tMaXN0IFVMLmRpdklubmVyQmxvY2tMaXN0IHsgcGFkZGluZzoxMHB4IDAgMCAwOyB9IGRpdi5kaXZCbG9ja1ZpZXcgVUwuZGl2QmxvY2tMaXN0LnNpemVGb3I0Q29sdW1uc0xpc3R7IH0gZGl2LmRpdkJsb2NrVmlldyBVTC5kaXZCbG9ja0xpc3Q6bm90KC5zaXplRm9yNENvbHVtbnNMaXN0KTpudGgtY2hpbGQoM24rMSksIGRpdi5kaXZCbG9ja1ZpZXcgVUwuZGl2QmxvY2tMaXN0LnNpemVGb3I0Q29sdW1uc0xpc3Q6bnRoLWNoaWxkKDRuKzEpeyBjbGVhcjpsZWZ0OyB9IGRpdi5kaXZCbG9ja1ZpZXcgVUwuZGl2QmxvY2tMaXN0IGRpdi5kaXZCbG9ja0xpc3RUaXRsZXsgYmFja2dyb3VuZDppbml0aWFsOyBwYWRkaW5nOjAgMCAxMHB4IDA7IG1hcmdpbjowOyB3aWR0aDoxMDAlOyBmbG9hdDpsZWZ0OyBmb250LXdlaWdodDpib2xkIH0gZGl2LmRpdkJsb2NrVmlldyBVTC5kaXZCbG9ja0xpc3QgTEkuZGl2TGlzdEl0ZW17IHBhZGRpbmc6MCAzMHB4IDEwcHggMTBweDsgbWFyZ2luOjA7IHRleHQtaW5kZW50OjA7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2Fycm93X3JlZC5wbmcnKSBuby1yZXBlYXQgc2Nyb2xsIDAgNXB4IHRyYW5zcGFyZW50OyB9IGRpdi5kaXZCbG9ja1ZpZXcgVUwuZGl2QmxvY2tMaXN0IExJLmRpdkxpc3RJdGVtID4gQXsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgYmFja2dyb3VuZDpub25lOyBmb250LXNpemU6aW5pdGlhbDsgfSBkaXYuZGl2QmxvY2tWaWV3IFVMLmRpdkJsb2NrTGlzdCBMSS5kaXZMaXN0VGl0bGUyeyBmb250LXNpemU6MS4xZW07IGJvcmRlcjowOyBtYXJnaW46MDsgcGFkZGluZzowIDAgMTBweCAwOyBmb250LXdlaWdodDpib2xkOyBsaXN0LXN0eWxlOm5vbmU7IH0gZGl2LmRpdkJsb2NrVmlldyBVTC5kaXZCbG9ja0xpc3QgTEkuZGl2TGlzdEl0ZW0yeyBwYWRkaW5nOjAgMzBweCAxMHB4IDEwcHg7IHRleHQtaW5kZW50OjA7IGxpc3Qtc3R5bGU6bm9uZSBvdXRzaWRlIG5vbmU7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbjowIDAgMCAxMnB4OyB9IGRpdi5kaXZCbG9ja1ZpZXcgVUwuZGl2QmxvY2tMaXN0IExJLmRpdkxpc3RJdGVtMjpiZWZvcmV7IGNvbnRlbnQ6IlxmMTM4IjsgZm9udC1mYW1pbHk6J0ZvbnQgQXdlc29tZSA1IFBybyc7IGZvbnQtd2VpZ2h0OjkwMDsgbWFyZ2luLXJpZ2h0OjA7IG1hcmdpbi1sZWZ0Oi0yMXB4OyBwYWRkaW5nLXJpZ2h0OjVweDsgZm9udC1zaXplOjAuODc1cmVtIDsgfSBkaXYuZGl2QmxvY2tWaWV3IFVMLmRpdkJsb2NrTGlzdCBVTC5kaXZJbm5lckJsb2NrTGlzdCBMSS5kaXZMaXN0SXRlbTI6YmVmb3JleyBmb250LXdlaWdodDpub3JtYWw7IH0gZGl2LmRpdkJsb2NrVmlldyBVTC5kaXZCbG9ja0xpc3QgVUwuZGl2SW5uZXJCbG9ja0xpc3QgTEkgeyBwYWRkaW5nOjAgMzBweCAxMHB4IDEwcHg7IH0gZGl2LmRpdkJsb2NrVmlldyBVTC5kaXZCbG9ja0xpc3QgTEkuZGl2TGlzdEl0ZW0ubm9TdHlsZUl0ZW17IHBhZGRpbmc6MCAwIDVweCAwOyBtYXJnaW46MDsgdGV4dC1pbmRlbnQ6MDsgYmFja2dyb3VuZDpub25lOyBsaXN0LXN0eWxlOm5vbmU7IH0gZGl2LmRpdkJsb2NrVmlldyBVTC5kaXZCbG9ja0xpc3QgTEkuZGl2TGlzdEl0ZW0ub25TYW1lTGluZXsgcGFkZGluZy1yaWdodDoxNXB4OyBkaXNwbGF5OmlubGluZS10YWJsZTsgfSBkaXYuZGl2QmxvY2tWaWV3IFVMLmRpdkJsb2NrTGlzdCBMSS5kaXZMaXN0SXRlbS5vblNhbWVMaW5lOmxhc3QtY2hpbGR7IHBhZGRpbmctcmlnaHQ6MDsgfSBkaXYuZGl2QmxvY2tWaWV3IGRpdi5kaXZCbG9ja1RhYmxlT3V0ZXJ7IH0gZGl2LmRpdkJsb2NrVmlldyBkaXYuZGl2QmxvY2tUYWJsZXsgZGlzcGxheTp0YWJsZTsgd2lkdGg6MTAwJTsgcGFkZGluZzowOyBtYXJnaW46MDsgfSBkaXYuZGl2QmxvY2tWaWV3IGRpdi5kaXZCbG9ja1Jvd3sgZGlzcGxheTp0YWJsZS1yb3c7IHdpZHRoOjEwMCU7IH0gZGl2LmRpdkJsb2NrVmlldyBkaXYuZGl2QmxvY2tDZWxseyBkaXNwbGF5OnRhYmxlLWNlbGw7IH0gZGl2LmRpdkRpc2NsYWltZXJCbG9ja3sgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1nZW5lcmFsLWJnLWNvbG9yKTsgYm9yZGVyLXJhZGl1czozcHg7IH0gQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOjEzMDFweCkgeyBib2R5LmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIGRpdi5kaXZCbG9ja1ZpZXcgZGl2LmRpdkJsb2NrQ29udGVudCBkaXYuZGl2QmxvY2tDb2x1bW4geyB3aWR0aDoxMTAwcHggIWltcG9ydGFudDsgfSB9Ci8qKiAvY3NzL2Zvcm1zL2Zvcm1zLnByZWxvYWQuY3NzICoqLwouZDJjZm9ybSB7IC0tbGFiZWwtcmVxdWlyZWQtc3ltYm9sOiIqIjsgLS1sYWJlbC1yZXF1aXJlZC1jb2xvcjojRkYwMDAwOyAtLWlucHV0LXBhZGRpbmc6dmFyKC0tcy0xKSB2YXIoLS1zMSk7IC0taW5wdXQtYmctY29sb3I6dmFyKC0td2hpdGUpOyAtLWlucHV0LWJvcmRlci1jb2xvcjp2YXIoLS1taWQtZ3JheSk7IC0taW5wdXQtcmFkaXVzOnZhcigtLXMtNik7IC0taW5wdXQtZm9udC1zaXplOnZhcigtLWZzMCk7IC0taW5wdXQtbGluZS1oZWlnaHQ6dmFyKC0tZnMyKTsgfSAuZDJjZm9ybSAqIHsgYm94LXNpemluZzpib3JkZXItYm94OyB9IC5kMmNmb3JtIGJveC1sYyB7IC0tc3BhY2U6dmFyKC0tcy00KTsgcGFkZGluZy1sZWZ0OjA7IHBhZGRpbmctcmlnaHQ6MDsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGFsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7IH0gLmQyY2Zvcm0tLXRoaW4gYm94LWxjIHsgLS1zcGFjZTp2YXIoLS1zLTkpOyB9IC5kMmNmb3JtLS1yb3cgc3RhY2stbGMgeyBmbGV4LWRpcmVjdGlvbjpyb3c7IGZsZXgtd3JhcDp3cmFwOyB9IC5kMmNmb3JtLS1yb3cgYm94LWxjIHsgcGFkZGluZy1yaWdodDp2YXIoLS1zcGFjZSk7IHBhZGRpbmctbGVmdDp2YXIoLS1zcGFjZSk7IH0gLmQyY2Zvcm0tLWhvcml6b250YWwgYm94LWxjIHsgZmxleC1kaXJlY3Rpb246cm93OyBhbGlnbi1pdGVtczpmbGV4LXN0YXJ0OyB9IC5kMmNmb3JtLS1ob3Jpem9udGFsIGJveC1sYyBsYWJlbCB7IG1pbi13aWR0aDoxMTVweDsgd2lkdGg6MzAlOyBwYWRkaW5nLXJpZ2h0OnZhcigtLXMpOyBtYXJnaW4tdG9wOnZhcigtLXMxKTsgbWFyZ2luLWJvdHRvbTowOyB9IC5kMmNmb3JtIGxhYmVsOmhhcyhbcmVxdWlyZWRdKSBzcGFuOmFmdGVyeyBjb2xvciA6dmFyKC0tbGFiZWwtcmVxdWlyZWQtY29sb3IpOyBjb250ZW50IDp2YXIoLS1sYWJlbC1yZXF1aXJlZC1zeW1ib2wpOyBwYWRkaW5nLWxlZnQgOnZhcigtLXMtNik7IH0gLmQyY2Zvcm0gbGFiZWw6bm90KC5maW5hbmNlQ2FsYyksIC5kMmNmb3JtIC5sYWJlbDpub3QoLmZpbmFuY2VDYWxjKSB7IG1hcmdpbi1ib3R0b206dmFyKC0tcy0zKTsgZm9udC1zaXplOnZhcigtLWlucHV0LWZvbnQtc2l6ZSk7IGxpbmUtaGVpZ2h0OnZhcigtLWlucHV0LWxpbmUtaGVpZ2h0KTsgZm9udC13ZWlnaHQ6NDAwOyB9IC5kMmNmb3JtIGxhYmVsLi0tcmVxdWlyZWQ6bm90KC50eHQtcmlnaHQpOmFmdGVyLCAuZDJjZm9ybSAubGFiZWwuLS1yZXF1aXJlZDpub3QoLnR4dC1yaWdodCk6YWZ0ZXIsIC5kMmNmb3JtIGxhYmVsLi1yZXF1aXJlZDpub3QoLnR4dC1yaWdodCk6YWZ0ZXIsIC5kMmNmb3JtIC5sYWJlbC4tcmVxdWlyZWQ6bm90KC50eHQtcmlnaHQpOmFmdGVyIHsgY29sb3IgOnZhcigtLWxhYmVsLXJlcXVpcmVkLWNvbG9yKTsgY29udGVudCA6dmFyKC0tbGFiZWwtcmVxdWlyZWQtc3ltYm9sKTsgcGFkZGluZy1sZWZ0IDp2YXIoLS1zLTYpOyB9IC5kMmNmb3JtIGxhYmVsLi0tcmVxdWlyZWQudHh0LXJpZ2h0OmJlZm9yZSwgLmQyY2Zvcm0gLmxhYmVsLi0tcmVxdWlyZWQudHh0LXJpZ2h0OmJlZm9yZSwgLmQyY2Zvcm0gbGFiZWwuLXJlcXVpcmVkLnR4dC1yaWdodDpiZWZvcmUsIC5kMmNmb3JtIC5sYWJlbC4tcmVxdWlyZWQudHh0LXJpZ2h0OmJlZm9yZSB7IGNvbG9yIDp2YXIoLS1sYWJlbC1yZXF1aXJlZC1jb2xvcik7IGNvbnRlbnQgOnZhcigtLWxhYmVsLXJlcXVpcmVkLXN5bWJvbCk7IHBhZGRpbmctcmlnaHQgOnZhcigtLXMtNik7IH0gLmQyY2Zvcm0gOndoZXJlKGlucHV0Om5vdChbdHlwZT1zdWJtaXRdLC5wYXltZW50Q2FsY3VsYXRvckRvd25QYXltZW50KTpub3QoW3R5cGU9InJhZGlvIl0pOm5vdChbdHlwZT0iY2hlY2tib3giXSkpLCAuZDJjZm9ybSBzZWxlY3Q6bm90KC5wYXltZW50Q2FsY3VsYXRvckludGVydmFsLC5wYXltZW50Q2FsY3VsYXRvckttQWxsb3dhbmNlLC5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLmNhbGMtZm9ybSBzZWxlY3QpLCAuZDJjZm9ybSB0ZXh0YXJlYSB7IHdpZHRoOjEwMCU7IHBhZGRpbmc6dmFyKC0taW5wdXQtcGFkZGluZyk7IGJhY2tncm91bmQtY29sb3I6dmFyKC0taW5wdXQtYmctY29sb3IpOyBib3JkZXItcmFkaXVzOnZhcigtLWlucHV0LXJhZGl1cyk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0taW5wdXQtYm9yZGVyLWNvbG9yKTsgY29sb3I6IzIxMjUyOTsgZm9udC1zaXplOnZhcigtLWlucHV0LWZvbnQtc2l6ZSk7IGxpbmUtaGVpZ2h0OnZhcigtLWlucHV0LWxpbmUtaGVpZ2h0KTsgZm9udC13ZWlnaHQ6NDAwOyB9IC5kMmNmb3JtIGlucHV0Om5vdChbdHlwZT1zdWJtaXRdKTpub3QoW3R5cGU9InJhZGlvIl0pOm5vdChbdHlwZT0iY2hlY2tib3giXSksIC5kMmNmb3JtIHNlbGVjdCB7IGhlaWdodDozNXB4OyB9IC5kMmNmb3JtIC5pbnZhbGlkID4gOmlzKGlucHV0LHNlbGVjdCx0ZXh0YXJlYSl7IGJhY2tncm91bmQtY29sb3I6I2ZhZDZkYzsgfSAuZDJjZm9ybSBpbnB1dDpkaXNhYmxlZCwgLmQyY2Zvcm0gaW5wdXQuZGlzYWJsZWQgeyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjM5LCAyMzksIDIzOSwgMC4zKTsgY29sb3I6cmdiKDg0LCA4NCwgODQpOyBib3JkZXItY29sb3I6cmdiYSgxMTgsIDExOCwgMTE4LCAwLjMpOyBjdXJzb3I6bm90LWFsbG93ZWQ7IH0gLmQyY2Zvcm0gaW5wdXQudHh0LXVwcGVyIHsgdGV4dC10cmFuc2Zvcm06bm9uZTsgfSAuZDJjZm9ybSBpbnB1dC50eHQtdXBwZXI6OnBsYWNlaG9sZGVyIHsgdGV4dC10cmFuc2Zvcm06dmFyKC0tdHh0LXVwcGVyLCB1cHBlcmNhc2UpOyB9IC5kMmNmb3JtIC5pbnB1dC1pY29uLWxlZnQsIC5kMmNmb3JtIC5pbnB1dC1pY29uLXJpZ2h0IHsgcG9zaXRpb246cmVsYXRpdmU7IH0gLmQyY2Zvcm0gLmlucHV0LWljb24geyBwb3NpdGlvbjphYnNvbHV0ZTsgei1pbmRleDoxOyB0b3A6dmFyKC0tczEpOyBmb250LXNpemU6dmFyKC0taW5wdXQtZm9udC1zaXplKTsgbGluZS1oZWlnaHQ6dmFyKC0taW5wdXQtbGluZS1oZWlnaHQpOyBjb2xvcjp2YXIoLS1kYXJrLWdyYXkpOyB9IC5kMmNmb3JtIC5pbnB1dC1pY29uLXJpZ2h0IC5pbnB1dC1pY29uIHsgcmlnaHQ6dmFyKC0tczQpOyB9IC5kMmNmb3JtIC5pbnB1dC1pY29uLWxlZnQgLmlucHV0LWljb24geyBsZWZ0OnZhcigtLXM0KTsgfSAuZDJjZm9ybSAuaW5wdXQtaWNvbi1sZWZ0IGlucHV0IHsgcGFkZGluZy1sZWZ0OnZhcigtLXM5KTsgfSAuZDJjZm9ybSAuc2VwYXJhdG9yIHsgd2lkdGg6MTAwJTsgYm9yZGVyLXRvcDoxcHggc29saWQgI2Q0ZDRkNDsgbWFyZ2luLXRvcDp2YXIoLS1zNyk7IG1hcmdpbi1ib3R0b206dmFyKC0tczcpOyB9IC5kMmNmb3JtIC5yYWRpby1pbmxpbmUgeyBkaXNwbGF5OmZsZXg7IHdpZHRoOjEwMCU7IH0gLmQyY2Zvcm0gLmNoZWNrYm94LWxpc3QgeyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgbWFyZ2luLWJvdHRvbTp2YXIoLS1zLTMpOyB9IC5kMmNmb3JtIC5jaGVja2JveC1saXN0ID4gKiB7IG1hcmdpbi1ib3R0b206MDsgfSAuZDJjZm9ybSAubXVsdGlwbGUtaW5wdXQgeyBkaXNwbGF5OmZsZXg7IHdpZHRoOjEwMCU7IH0gLmQyY2Zvcm0gLm11bHRpcGxlLWlucHV0ID4gKjpub3QoOmxhc3Qtb2YtdHlwZSkgeyBtYXJnaW4tcmlnaHQ6dmFyKC0tczEpOyB9IC5kMmNmb3JtIC5pbnB1dC1ncm91cCB7IGRpc3BsYXk6ZmxleDsgd2lkdGggOjEwMCU7IH0gLmQyY2Zvcm0gLmlucHV0LWdyb3VwIC5pbnB1dC1ncm91cC10ZXh0IHsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IHBhZGRpbmc6dmFyKC0taW5wdXQtcGFkZGluZyk7IGJhY2tncm91bmQ6dmFyKC0tbGlnaHQtZ3JheSk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0taW5wdXQtYm9yZGVyLWNvbG9yKTsgYm9yZGVyLXJhZGl1czp2YXIoLS1pbnB1dC1yYWRpdXMpOyBmb250LXNpemU6dmFyKC0taW5wdXQtZm9udC1zaXplKTsgbGluZS1oZWlnaHQ6dmFyKC0taW5wdXQtbGluZS1oZWlnaHQpOyB3aGl0ZS1zcGFjZTpub3dyYXA7IH0gLmQyY2Zvcm0gLmlucHV0LWdyb3VwID4gOm5vdCg6Zmlyc3QtY2hpbGQpIHsgYm9yZGVyLWxlZnQ6MDsgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czowICFpbXBvcnRhbnQ7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MCAhaW1wb3J0YW50OyB9IC5kMmNmb3JtIC5pbnB1dC1ncm91cCA+IDpub3QoOmxhc3QtY2hpbGQpIHsgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MCAhaW1wb3J0YW50OyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowICFpbXBvcnRhbnQ7IH0gQG1lZGlhIChtYXgtd2lkdGg6OTgwcHgpIHsgLmQyY2Zvcm0tLWhvcml6b250YWwgYm94LWxjIGxhYmVsIHsgbWluLXdpZHRoOjg1cHg7IH0gfQovKiogL2Nzcy9mb3Jtcy9mb3Jtcy5jc3MgKiovCi5kMmNmb3JtIGlucHV0Om5vdChbdHlwZT1zdWJtaXRdKTpub3QoW3R5cGU9InJhZGlvIl0pOm5vdChbdHlwZT0iY2hlY2tib3giXSksIC5kMmNmb3JtIHNlbGVjdCwgLmQyY2Zvcm0gdGV4dGFyZWEgeyB0cmFuc2l0aW9uOmJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LGJveC1zaGFkb3cgLjE1cyBlYXNlLWluLW91dDsgfSAuZDJjZm9ybSBpbnB1dDpub3QoW3R5cGU9c3VibWl0XSk6bm90KFt0eXBlPSJyYWRpbyJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pOmZvY3VzLCAuZDJjZm9ybSBzZWxlY3Q6Zm9jdXMsIC5kMmNmb3JtIHRleHRhcmVhOmZvY3VzIHsgYm9yZGVyLWNvbG9yOiM4NmI3ZmU7IG91dGxpbmU6MDsgYm94LXNoYWRvdzowIDAgMCAwLjJyZW0gcmdiKDEzIDExMCAyNTMgLyAyNSUpOyB9IC5kMmNmb3JtIC5pbnB1dC1ncm91cCBpbnB1dDpub3QoW3R5cGU9c3VibWl0XSk6bm90KFt0eXBlPSJyYWRpbyJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pOmZvY3VzLCAuZDJjZm9ybSAuaW5wdXQtZ3JvdXAgc2VsZWN0OmZvY3VzLCAuZDJjZm9ybSAuaW5wdXQtZ3JvdXAgdGV4dGFyZWE6Zm9jdXMgeyB6LWluZGV4OjM7IH0gLmQyY2Zvcm0gaW5wdXQudmFsaWRpdHktZXJyb25lb3VzLCAuZDJjZm9ybSBzZWxlY3QudmFsaWRpdHktZXJyb25lb3VzLCAuZDJjZm9ybSB0ZXh0YXJlYS52YWxpZGl0eS1lcnJvbmVvdXMsIC5kMmNmb3JtIC5pbnB1dC1ncm91cCAudmFsaWRpdHktZXJyb25lb3VzICsgLmlucHV0LWdyb3VwLXRleHQgeyBib3JkZXItY29sb3I6I2RjMzU0NSAhaW1wb3J0YW50OyBiYWNrZ3JvdW5kLWNvbG9yOiNmYWQ2ZGMgIWltcG9ydGFudDsgfSAuZDJjZm9ybSBpbnB1dC52YWxpZGl0eS1lcnJvbmVvdXM6OnBsYWNlaG9sZGVyLCAuZDJjZm9ybSB0ZXh0YXJlYS52YWxpZGl0eS1lcnJvbmVvdXM6OnBsYWNlaG9sZGVyLCAuZDJjZm9ybSBzZWxlY3QudmFsaWRpdHktZXJyb25lb3VzLCAuZDJjZm9ybSAuaW5wdXQtZ3JvdXAgLnZhbGlkaXR5LWVycm9uZW91cyArIC5pbnB1dC1ncm91cC10ZXh0IHsgY29sb3I6I2RjMzU0NTsgfQovKiogL2Nzcy9jcmVkaXRTY29yZVBvcHVwLmNzcyAqKi8KI2NyZWRpdFNjb3JlUG9wdXBDb250YWluZXJ7IGJhY2tncm91bmQ6d2hpdGU7IHBhZGRpbmc6MzBweCAyMHB4IDM0cHg7IG1heC13aWR0aDpjYWxjKDEwMHZ3IC0gNDBweCk7IH0gI2NyZWRpdFNjb3JlUG9wdXBDb250YWluZXIgc3BhbnsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgZm9udC1zaXplOjEuMTI1cmVtIDsgfSAjY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lciBzcGFuLmNyZWRpdFNjb3JlR3JlZW5Db2xvcnsgY29sb3I6IzRkOGYxNDsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAjY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lciBzcGFuLmNyZWRpdFNjb3JlQm9sZHsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAuY3JlZGl0U2NvcmVfYnRueyBjb2xvcjojZmZmZmZmOyBiYWNrZ3JvdW5kOiMwMDQ0Nzg7IH0gLmNyZWRpdFNjb3JlSW1hZ2V7IHdpZHRoOjEwMCU7IH0gI2NyZWRpdFNjb3JlUG9wdXBDb250YWluZXIgZGl2LmNyZWRpdFNjb3JlVGl0bGVDb250YWluZXJ7IHRleHQtYWxpZ246Y2VudGVyOyB9ICNjcmVkaXRTY29yZVBvcHVwQ29udGFpbmVyIGRpdi5jcmVkaXRTY29yZVRpdGxleyBmb250LXNpemU6MS4yNXJlbSA7IH0gI2NyZWRpdFNjb3JlUG9wdXBDb250YWluZXIgZGl2LmNyZWRpdFNjb3JlSW1hZ2VDb250YWluZXJ7IHRleHQtYWxpZ246Y2VudGVyOyB9ICNjcmVkaXRTY29yZVBvcHVwQ29udGFpbmVyIHNwYW4uY3JlZGl0U2NvcmVUaXRsZUZyZWV7IGZvbnQtc2l6ZToyLjgxM3JlbSA7IHRleHQtc2hhZG93OjJweCAwOyB9ICNjcmVkaXRTY29yZVBvcHVwQ29udGFpbmVyIHNwYW4uY3JlZGl0U2NvcmVUaXRsZVNjb3JleyBmb250LXNpemU6MS44MTNyZW0gOyB0ZXh0LXNoYWRvdzoxLjRweCAwOyB9ICNjcmVkaXRTY29yZVBvcHVwQ29udGFpbmVyIGlucHV0eyBoZWlnaHQ6MzJweDsgZm9udC1zaXplOjAuODEzcmVtIDsgd2lkdGg6MTM1cHg7IHBhZGRpbmc6MCAxMHB4OyBtYXJnaW4tYm90dG9tOjEwcHg7IGJvcmRlcjoxcHggc29saWQgI2VlZWVlZTsgYm94LXNpemluZzpjb250ZW50LWJveDsgfSAjY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lciAjY3JlZGl0U2NvcmVFbWFpbHsgd2lkdGg6Mjk2cHg7IH0gI2NyZWRpdFNjb3JlUG9wdXBDb250YWluZXIgI2NyZWRpdFNjb3JlQWRkcmVzc3sgd2lkdGg6Mjk2cHg7IH0gI2NyZWRpdFNjb3JlUG9wdXBDb250YWluZXIgLmNyZWRpdFNjb3JlX2J0bnsgd2lkdGg6MzIwcHg7IHRleHQtYWxpZ246Y2VudGVyOyBoZWlnaHQ6NDBweDsgYm94LXNpemluZzpib3JkZXItYm94OyAtd2Via2l0LWFwcGVhcmFuY2U6bm9uZTsgfSAjY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lciBkaXYuY3JlZGl0U2NvcmVFeHRyYVRleHR7IHRleHQtYWxpZ246Y2VudGVyOyB9ICNjcmVkaXRTY29yZVBvcHVwQ29udGFpbmVyIGRpdi5jcmVkaXRTY29yZUNvbnNlbnRNZXNzYWdleyBjb2xvcjojYjNiM2IzOyBmb250LXNpemU6MC42ODhyZW0gOyB0ZXh0LWFsaWduOmNlbnRlcjsgbWFyZ2luLXRvcDoycHg7IH0gI2NyZWRpdFNjb3JlUG9wdXBDb250YWluZXIgLmNyZWRpdFNjb3JlSW1hZ2V7IGJhY2tncm91bmQtY29sb3I6IzAwNDQ3ODsgfSAucGFjLWNvbnRhaW5lciB7IHotaW5kZXg6MTAwMDAyMTsgfQovKiogL2Nzcy9uZWJDYWwvbmViQ2FsLmNzcyAqKi8KLm5lYkNhbCAqIHsgb3ZlcmZsb3c6aGlkZGVuOyBwYWRkaW5nOjA7IG1hcmdpbjowOyBsaW5lLWhlaWdodDoxMDAlOyBiYWNrZ3JvdW5kLWNvbG9yIDp3aGl0ZTsgfSAubmViQ2FsIC5jYWwtaGVhZGVyIC5jYWwtYXJyb3ctbGVmdCwgLm5lYkNhbCAuY2FsLWhlYWRlciAuY2FsLWFycm93LXJpZ2h0IHsgY3Vyc29yOnBvaW50ZXI7fSAubmViQ2FsIC5jYWwtaGVhZGVyIC5jYWwtYXJyb3ctbGVmdCB7IGZsb2F0OmxlZnQ7IH0gLm5lYkNhbCAuY2FsLWhlYWRlciAuY2FsLWFycm93LWxlZnQ6YmVmb3JlIHsgY29udGVudDonPCc7IGZvbnQtd2VpZ2h0OmJvbGQ7IGNvbG9yOiM1MjNhMjk7IH0gLm5lYkNhbCAuY2FsLWhlYWRlciAuY2FsLWFycm93LXJpZ2h0IHsgZmxvYXQ6cmlnaHQ7IH0gLm5lYkNhbCAuY2FsLWhlYWRlciAuY2FsLWFycm93LXJpZ2h0OmJlZm9yZSB7IGNvbnRlbnQ6Jz4nOyBmb250LXdlaWdodDpib2xkOyBjb2xvcjojNTIzYTI5OyB9IC5uZWJDYWwgLmNhbC1oZWFkZXIgLmNhbC1sYWJlbCB7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyBvdmVyZmxvdzp2aXNpYmxlOyB3aWR0aDoxNDZweDsgfSAubmViQ2FsIC5jYWwtaGVhZGVyIC5jYWwtbGFiZWwuY2FsLWNsaWNrYWJsZSB7IGN1cnNvcjpwb2ludGVyOyB9IC5uZWJDYWwgLmNhbC1ib2R5IHsgcG9zaXRpb246cmVsYXRpdmU7IH0gLm5lYkNhbCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lciB7IHBvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjA7IH0gLm5lYkNhbCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lciAuY2FsLXJvdyBkaXYgeyBmbG9hdDpsZWZ0OyB9IC5uZWJDYWwgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIuY2FsLW1vbnRoLmNhbC1waWNrYWJsZSAuY2FsLXJvdyBkaXYsIC5uZWJDYWwgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIuY2FsLXllYXItZGVjYWRlIC5jYWwtcm93IGRpdiB7IGN1cnNvcjpwb2ludGVyO30gLm5lYkNhbCB7IGN1cnNvcjpkZWZhdWx0OyBwb3NpdGlvbjphYnNvbHV0ZTsgei1pbmRleDoxMDAwMDIwOyB0ZXh0LWFsaWduOmNlbnRlcjsgd2lkdGg6MjkwcHg7IGhlaWdodDoyMTVweDsgZm9udC1zaXplOjAuOTM4cmVtIDsgY29sb3I6IzUyM2EyOTsgfSAubmViQ2FsLmlubGluZSB7IHBvc2l0aW9uOnJlbGF0aXZlOyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLXdyYXBwZXIgeyBwYWRkaW5nOjAgNHB4OyBib3JkZXI6c29saWQgMXB4ICNkZGRlZDk7IC1tb3otYm94LXNoYWRvdzowcHggMHB4IDRweCAycHggI2Q4ZDhkODstd2Via2l0LWJveC1zaGFkb3c6MHB4IDBweCA0cHggMnB4ICNkOGQ4ZDg7Ym94LXNoYWRvdzowcHggMHB4IDRweCAycHggI2Q4ZDhkODt9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWhlYWRlciB7IGhlaWdodDoyNXB4OyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWhlYWRlciAuY2FsLWFycm93LWxlZnQsIC5uZWJDYWwuZGVmYXVsdCAuY2FsLWhlYWRlciAuY2FsLWFycm93LXJpZ2h0IHsgd2lkdGg6MTJweDsgaGVpZ2h0OjEzcHg7IG1hcmdpbjo2cHggN3B4OyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWhlYWRlciAuY2FsLWFycm93LWxlZnQgeyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWhlYWRlciAuY2FsLWFycm93LWxlZnQ6aG92ZXIgeyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWhlYWRlciAuY2FsLWFycm93LXJpZ2h0IHsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1oZWFkZXIgLmNhbC1hcnJvdy1yaWdodDpob3ZlciB7IH0gLm5lYkNhbC5kZWZhdWx0IC5jYWwtaGVhZGVyIC5jYWwtbGFiZWwgeyBsaW5lLWhlaWdodDoyNXB4OyBjb2xvcjojNTIzYTI5OyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7IH0gLm5lYkNhbC5kZWZhdWx0IC5jYWwtaGVhZGVyIC5jYWwtbGFiZWwuY2FsLWNsaWNrYWJsZSB7IGNvbG9yOiMwOGE1M2M7IH0gLm5lYkNhbC5kZWZhdWx0IC5jYWwtaGVhZGVyIC5jYWwtbGFiZWwuY2FsLWNsaWNrYWJsZTpob3ZlciB7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7IH0gLm5lYkNhbC5kZWZhdWx0IC5jYWwtYm9keSB7IGhlaWdodDoxODBweDsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIgeyB3aWR0aDoyOTBweDsgaGVpZ2h0OjE4MHB4OyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lciAuY2FsLXJvdyB7IHdpZHRoOjI5MHB4OyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lci5jYWwteWVhci1kZWNhZGUgLmNhbC1yb3cuY2FsLW9kZCBkaXYgeyBtYXJnaW46NXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiNkZWRlZGU7Ym9yZGVyOjFweCBzb2xpZCAjZDlkOWQ5O30gLm5lYkNhbC5kZWZhdWx0IC5jYWwtYm9keSAuY2FsLWlubmVyIC5jYWwtY29udGFpbmVyLmNhbC15ZWFyLWRlY2FkZSAuY2FsLXJvdy5jYWwtZXZlbiBkaXYgeyBtYXJnaW46NXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiNmMGYwZjA7Ym9yZGVyOjFweCBzb2xpZCAjZWNlY2VjO30gLm5lYkNhbC5kZWZhdWx0IC5jYWwtYm9keSAuY2FsLWlubmVyIC5jYWwtY29udGFpbmVyIC5jYWwtcm93IGRpdi5jYWwtdG9kYXkgeyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lciAuY2FsLXJvdyBkaXYuY2FsLXNlbGVjdGVkIHsgbWFyZ2luLWxlZnQ6NXB4OyBtYXJnaW4tcmlnaHQ6NXB4OyBoZWlnaHQ6MjBweDtmb250LXNpemU6MXJlbSA7Zm9udC13ZWlnaHQ6NjAwOyBjb2xvcjojZmZmICFpbXBvcnRhbnQ7dGV4dC1zaGFkb3c6MXB4IDFweCAwcHggIzM5YTY2MzsgYmFja2dyb3VuZC1jb2xvcjojNTRiYjAwOy13ZWJraXQtYm9yZGVyLXJhZGl1czo1cHg7LW1vei1ib3JkZXItcmFkaXVzOjVweDtib3JkZXItcmFkaXVzOjVweDt9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lciAuY2FsLXJvdyBkaXYuY2FsLW5vbi1zZWxlY3RhYmxlLCAubmViQ2FsLmRlZmF1bHQgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIgLmNhbC1yb3cgZGl2LmNhbC1ub24tc2VsZWN0YWJsZTpob3ZlciB7IGNvbG9yOiNiZGJkYmQgIWltcG9ydGFudDsgY3Vyc29yOmRlZmF1bHQgIWltcG9ydGFudDsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIuY2FsLW1vbnRoIC5jYWwtcm93LmEgZGl2IHsgY3Vyc29yOmRlZmF1bHQgIWltcG9ydGFudDsgY29sb3I6IzM3OWI1NyAhaW1wb3J0YW50O3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIuY2FsLW1vbnRoIC5jYWwtcm93IHsgaGVpZ2h0OjI2cHg7IH0gLm5lYkNhbC5kZWZhdWx0IC5jYWwtYm9keSAuY2FsLWlubmVyIC5jYWwtY29udGFpbmVyLmNhbC1tb250aCAuY2FsLXJvdyBkaXYgeyBtYXJnaW4tdG9wOjNweDsgd2lkdGg6NDBweDsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIuY2FsLW1vbnRoIC5jYWwtcm93IGRpdi5jYWwtc2VsZWN0ZWQgeyBtYXJnaW4tdG9wOjNweDsgd2lkdGg6MzBweDsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIuY2FsLW1vbnRoIC5jYWwtcm93IGRpdi5jYWwtZmlyc3QgeyBwYWRkaW5nLWxlZnQ6MTZweDsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIuY2FsLW1vbnRoIC5jYWwtcm93IGRpdi5jYWwtbGFzdCB7IHBhZGRpbmctcmlnaHQ6MTZweDsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIuY2FsLW1vbnRoIC5jYWwtcm93IGRpdi5jYWwtb3V0c2lkZSB7IGNvbG9yOiNkZWRlZGU7IH0gLm5lYkNhbC5kZWZhdWx0IC5jYWwtYm9keSAuY2FsLWlubmVyIC5jYWwtY29udGFpbmVyLmNhbC1tb250aCAuY2FsLXJvdy5jYWwtZXZlbiBkaXYuY2FsLW91dHNpZGUgeyBjb2xvcjojY2VjZWNlOyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lci5jYWwtbW9udGggLmNhbC1yb3cuYSBkaXYgeyBjb2xvcjojOWM5YzljOyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lci5jYWwteWVhci1kZWNhZGUgLmNhbC1yb3cgeyBoZWlnaHQ6NDJweDsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIuY2FsLXllYXItZGVjYWRlIC5jYWwtcm93IGRpdiB7IHdpZHRoOjgwcHg7bGluZS1oZWlnaHQ6MjdweDsgaGVpZ2h0OjI3cHg7IH0gLm5lYkNhbC5kZWZhdWx0IC5jYWwtYm9keSAuY2FsLWlubmVyIC5jYWwtY29udGFpbmVyLmNhbC15ZWFyLWRlY2FkZSAuY2FsLXJvdyBkaXYuY2FsLWZpcnN0IHsgbWFyZ2luLWxlZnQ6MTZweDsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIuY2FsLXllYXItZGVjYWRlIC5jYWwtcm93IGRpdi5jYWwtbGFzdCB7IG1hcmdpbi1yaWdodDoxNnB4OyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lci5jYWwteWVhci1kZWNhZGUgLmNhbC1yb3cgZGl2LmNhbC1zZWxlY3RlZCB7IGJhY2tncm91bmQtY29sb3I6IzU0YmIwMDt9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lci5jYWwtbW9udGguY2FsLXBpY2thYmxlIC5jYWwtcm93IGRpdjpob3ZlciwgLm5lYkNhbC5kZWZhdWx0IC5jYWwtYm9keSAuY2FsLWlubmVyIC5jYWwtY29udGFpbmVyLmNhbC15ZWFyLWRlY2FkZSAuY2FsLXJvdyBkaXY6aG92ZXIgeyBjb2xvcjojYjJjZmUxOyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWZvb3RlciB7IGhlaWdodDo0cHg7IH0KLyoqIC9jc3MvZmluYW5jZV9tdWx0aXN0ZXAuY3NzICoqLwojZmluYW5jZV9tdWx0aXN0ZXBfZm9ybXsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yeyB0ZXh0LWFsaWduOmxlZnQ7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaDJ7IHRleHQtYWxpZ246Y2VudGVyOyBtYXJnaW4tdG9wOjEwcHg7IG1hcmdpbi1ib3R0b206MTVweDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSBoM3sgdGV4dC1hbGlnbjpjZW50ZXI7IG1hcmdpbi10b3A6MTBweDsgbWFyZ2luLWJvdHRvbToxNXB4OyBmb250LXNpemU6MS4yNXJlbSA7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fbmV4dF9idG4geyB0ZXh0LWFsaWduOmNlbnRlcjsgbWFyZ2luLXRvcDoyNXB4OyBtYXJnaW4tYm90dG9tOjI1cHg7IHdpZHRoOjEwMCU7IHBvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjA7IGJvdHRvbTowOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtICNmaW5hbmNlX211bHRpc3RlcF9mb3JtX25leHRfYnRuIGJ1dHRvbnsgcGFkZGluZzoxN3B4IDY1cHggMTVweCA2NXB4OyBmb250LXNpemU6MS4yNXJlbSA7IGZvbnQtd2VpZ2h0OjQwMDsgd2lkdGg6MjgwcHg7IGJhY2tncm91bmQtY29sb3I6d2hpdGU7IGNvbG9yOiNDMEMwQzA7IGJvcmRlcjpub25lOyBjdXJzb3I6cG9pbnRlcjsgYm9yZGVyOjFweCBzb2xpZCAjQzBDMEMwOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtICNmaW5hbmNlX211bHRpc3RlcF9mb3JtX25leHRfYnRuIGJ1dHRvbi5pc1ZhbGlkeyBiYWNrZ3JvdW5kLWNvbG9yOiMxYjFiMWI7IGNvbG9yOiNmZmZmZmY7IGJvcmRlcjoxcHggc29saWQgIzAwMDAwMDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSBpbnB1dFt0eXBlPSJyYWRpbyJdeyBvcGFjaXR5OjA7IHdpZHRoOjA7IGhlaWdodDowOyBwb3NpdGlvbjphYnNvbHV0ZTsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSBsYWJlbC5yYWRpb19sYWJlbCB7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgcGFkZGluZzoxNXB4IDEwcHg7IGN1cnNvcjpwb2ludGVyOyBvcGFjaXR5OjE7IHRyYW5zaXRpb246YWxsIDFzIGVhc2UtaW4tb3V0OyBtYXJnaW4tYm90dG9tOjVweDsgYm9yZGVyOjFweCBzb2xpZCAjY2NjY2NjOyBib3JkZXItYm90dG9tLXdpZHRoOjVweDsgd2lkdGg6MTAwJTsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjEuMTI1cmVtIDsgbWluLWhlaWdodDoxMDJweDsgYmFja2dyb3VuZDojZmZmZmZmOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIGlucHV0W3R5cGU9InJhZGlvIl06Y2hlY2tlZCB+IGxhYmVsLnJhZGlvX2xhYmVsIHsgYm9yZGVyOjFweCBzb2xpZCAjMDAwOyBib3JkZXItYm90dG9tLXdpZHRoOjVweDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSBsYWJlbC5yYWRpb19sYWJlbDIgeyBib3JkZXI6MXB4IHNvbGlkIHJnYmEoMjUwLCAyNTAsIDI1MCwgMC4xNSk7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgcGFkZGluZzoxMHB4IDVweCA1cHggNXB4OyBjdXJzb3I6cG9pbnRlcjsgb3BhY2l0eToxOyB0cmFuc2l0aW9uOmFsbCAxcyBlYXNlLWluLW91dDsgbWFyZ2luLWJvdHRvbTo1cHg7IGJvcmRlcjoxcHggc29saWQgI2NjY2NjYzsgYm9yZGVyLWJvdHRvbS13aWR0aDo1cHg7IHdpZHRoOjEwMCU7IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IG1pbi1oZWlnaHQ6NDVweDsgYmFja2dyb3VuZDojZmZmZmZmOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIGlucHV0W3R5cGU9InJhZGlvIl06Y2hlY2tlZCB+IGxhYmVsLnJhZGlvX2xhYmVsMiB7IGJvcmRlcjoxcHggc29saWQgIzAwMDsgYm9yZGVyLWJvdHRvbS13aWR0aDo1cHg7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLnJhZGlvX2Rpdnsgd2lkdGg6NDUlOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5yYWRpb19kaXYucmRfd2lkZXsgd2lkdGg6NDYlOyBtaW4taGVpZ2h0Ojg4cHg7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLnJhZGlvX2RpdjpudGgtb2YtdHlwZShvZGQpeyBmbG9hdDpsZWZ0OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5yYWRpb19kaXY6bnRoLW9mLXR5cGUoZXZlbil7IGZsb2F0OnJpZ2h0OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIGlucHV0W3R5cGU9InRleHQiXXsgd2lkdGg6MjkwcHg7IGhlaWdodDo0MHB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC1zaXplOjEuMjVyZW0gOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIGlucHV0W3R5cGU9Im51bWJlciJdOm5vdCgucGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudCl7IGRpc3BsYXk6YmxvY2s7IGZsb2F0OmxlZnQ7IGJvcmRlcjoxcHggc29saWQgI2RkZGRkZDsgd2lkdGg6MTIwcHg7IGJvcmRlci1yaWdodDpub25lOyBtYXJnaW46MCAwIDEwcHg7IGxpbmUtaGVpZ2h0OjMwcHg7IGhlaWdodDo3NXB4OyBwYWRkaW5nOjA7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXNpemU6MS41cmVtIDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAubnVtYmVyLXR5cGUtbGFiZWx7IGRpc3BsYXk6YmxvY2s7IGZsb2F0OmxlZnQ7IGJvcmRlcjoxcHggc29saWQgI2RkZGRkZDsgd2lkdGg6MTIwcHg7IGNvbG9yOiMyNTI1MjU7IGhlaWdodDo3NXB4OyBsaW5lLWhlaWdodDozNXB4OyBmb250LXNpemU6MS41cmVtIDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAubnVtYmVyLXR5cGUtZGl2eyBmbG9hdDpsZWZ0OyBsZWZ0OjEwJTsgbWFyZ2luLXRvcDoyMHB4OyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZV9tdWx0aXN0ZXBfc2VsZWN0X2NvbnRhaW5lcnsgbWFyZ2luLXRvcDoxMHB4OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlX211bHRpc3RlcF9zZWxlY3RfY29udGFpbmVyX2Rpdnsgd2lkdGg6MTAwJTsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZV9tdWx0aXN0ZXBfc2VsZWN0X2NvbnRhaW5lciBzZWxlY3R7IGNvbG9yOiMzYzM4MzY7IGJvcmRlcjoycHggc29saWQgIzAwMDAwMDsgYm9yZGVyLXJhZGl1czo1cHg7IHBhZGRpbmc6MTBweCAxMHB4OyBmb250LXNpemU6MXJlbSA7IGJhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuOSk7IGJhY2tncm91bmQtcG9zaXRpb246OTUlIDUwJTsgd2lkdGg6OTBweDsgLXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7IC1tb3otYXBwZWFyYW5jZTpub25lOyBwYWRkaW5nLXJpZ2h0OjI3cHg7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VfbXVsdGlzdGVwX3NlbGVjdF9jb250YWluZXJfc2VsZWN0eyBwb3NpdGlvbjpyZWxhdGl2ZTsgd2lkdGg6NDAlOyBtYXJnaW46YXV0bzsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZV9tdWx0aXN0ZXBfc2VsZWN0X2NvbnRhaW5lcl9zZWxlY3Q6YWZ0ZXIgeyBjb250ZW50OiIgIjsgaGVpZ2h0OjA7IHdpZHRoOjA7IGJvcmRlci1sZWZ0OjVweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXJpZ2h0OjVweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXRvcDo1cHggc29saWQgIzAwMDsgcG9zaXRpb246YWJzb2x1dGU7IHJpZ2h0OjE0cHg7IHRvcDoxN3B4OyB0cmFuc2l0aW9uOmFsbCAuM3MgbGluZWFyOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5zdGVwMjRzZWxlY3R7IG1hcmdpbi10b3A6MTBweDsgcGFkZGluZzowLjVyZW07IGJhY2tncm91bmQtY29sb3I6d2hpdGU7IGJvcmRlci1yYWRpdXM6MC41cmVtOyBib3JkZXI6MXB4IHNvbGlkICNkZGQ7IGNvbG9yOiMyMTI1Mjk7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGxpbmUtaGVpZ2h0Om5vcm1hbDsgZm9udC13ZWlnaHQ6NDAwOyB3aWR0aDoxMDAlOyB9IC5wYWMtY29udGFpbmVyIHsgei1pbmRleDoxMDAwMDIxOyB9IGlucHV0Ojotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uLCBpbnB1dDo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiB7IC13ZWJraXQtYXBwZWFyYW5jZTpub25lOyBtYXJnaW46MDsgfSAjZmluYW5jZU11bHRpc3RlcFBvcHVwQ29udGFpbmVyeyBtYXgtd2lkdGg6Y2FsYygxMDB2dyAtIDIwcHgpOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtICNtdWx0aXN0ZXAtbXVsdGlhZGRyZXNzIHNlbGVjdCB7IG1heC13aWR0aDoyODBweDsgbWFyZ2luOjAgYXV0bzsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAjbXVsdGlzdGVwLW11bHRpYWRkcmVzcyBsYWJlbCB7IHRleHQtYWxpZ246Y2VudGVyOyBtYXJnaW4tdG9wOjI1cHg7IG1hcmdpbi1ib3R0b206MjVweDsgZm9udC1zaXplOjEuNXJlbSA7IGRpc3BsYXk6YmxvY2s7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gI211bHRpc3RlcC1tdWx0aWFkZHJlc3MgI211dGxpQWRkcmVzc1N1Ym1pdCB7IGRpc3BsYXk6bm9uZTsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZV9tdWx0aXN0ZXBfYmlydGhkYXRlX2lucHV0c3sgZGlzcGxheTppbmxpbmUtZmxleDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZV9tdWx0aXN0ZXBfYmlydGhkYXRlX2lucHV0X2RpdnsgbWFyZ2luOjIwcHggNXB4IDIwcHggNXB4OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlX211bHRpc3RlcF9iaXJ0aGRhdGVfaW5wdXRfZGl2IGxhYmVseyBmb250LXNpemU6MS4xMjVyZW0gOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlX211bHRpc3RlcF9iaXJ0aGRhdGVfaW5wdXRfZGl2IGlucHV0W3R5cGU9Im51bWJlciJdeyB3aWR0aDo4MHB4OyBoZWlnaHQ6NTBweDsgZGlzcGxheTpibG9jazsgZmxvYXQ6bm9uZTsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZV9tdWx0aXN0ZXBfYmlydGhkYXRlX2lucHV0X2RpdiBpbnB1dFt0eXBlPSJudW1iZXIiXS5iaXJ0aHllYXJ7IHdpZHRoOjEwMHB4OyB9IC5yZXZlYWwtbW9kYWwuZmluYW5jZV9iYWNrZ3JvdW5kX2ltYWdleyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9wb3B1cHMvZmluYW5jZXBvcHVwLWJnLW1vYmlsZS53ZWJwJyk7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VJY29uRGl2eyBwb3NpdGlvbjpyZWxhdGl2ZTsgaGVpZ2h0OjEzNXB4OyBtYXJnaW4tYm90dG9tOjEwcHg7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VJY29uRGl2IC5maW5hbmNlQ2FsY3sgY29sb3I6IzRlYmE1OTsgZm9udC1zaXplOjEwMHB4OyBsZWZ0OjM1JTsgcG9zaXRpb246YWJzb2x1dGU7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VJY29uRGl2IC5maW5hbmNlQ2FyeyBjb2xvcjojMDAwMDAwOyBmb250LXNpemU6MTAwcHg7IGxlZnQ6MzMlOyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjUwcHg7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmVtcGxveW1lbnRUZXh0TGFiZWx7IHdpZHRoOjQ1JTsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZW1wbG95bWVudFRleHRMYWJlbDJ7IG1hcmdpbi1yaWdodDoyNXB4OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5lbXBsb3ltZW50VGV4dHsgd2lkdGg6NjAlIWltcG9ydGFudDsgZm9udC1zaXplOjEuMTI1cmVtICFpbXBvcnRhbnQ7IGJvcmRlcjoxcHggc29saWQgI2NjY2NjYzsgaGVpZ2h0OjI1cHg7IG1hcmdpbi1ib3R0b206NXB4OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIGlucHV0W3R5cGU9Im51bWJlciJdLmVtcGxveW1lbnRTdGF0dXNUaW1leyB3aWR0aDo1MHB4OyBoZWlnaHQ6NTBweDsgYm9yZGVyOjFweCBzb2xpZCAjYTlhOWE5OyBib3JkZXItcmFkaXVzOjVweDsgYWxpZ24tc2VsZjpjZW50ZXI7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmVtcGxveW1lbnRBZGRlZEluZm97IHdpZHRoOjk1JTsgaGVpZ2h0OjUwcHg7IHJlc2l6ZTpub25lOyBtYXJnaW4tdG9wOjEwcHg7IG1hcmdpbi1ib3R0b206MTBweDsgYm9yZGVyOjFweCBzb2xpZCAjY2NjY2NjOyBmb250LXNpemU6MC45MzhyZW0gIWltcG9ydGFudDsgfSAuZmFkZS1lbnRlciwgLmZhZGUtbGVhdmUgeyBvcGFjaXR5OjA7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAuY2FsYy1mb3JteyB3aWR0aDoxMDAlOyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5jYWxjLWZvcm0gbGFiZWx7IG1hcmdpbi1ib3R0b206MTVweDsgcGFkZGluZzowOyBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47IHBvc2l0aW9uOnJlbGF0aXZlOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLmNhbGMtZm9ybSBsYWJlbC5wYXltZW50VmFsdWVMYWJlbHsganVzdGlmeS1jb250ZW50OnVuc2V0OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3Igc3BhbnsgZm9udC1zaXplOjFlbTsgd2lkdGg6NTAlOyB0ZXh0LWFsaWduOmxlZnQ7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciBpbnB1dHsgdGV4dC1hbGlnbjpsZWZ0OyBoZWlnaHQ6MjVweDsgZm9udC1zaXplOjFlbTsgY29sb3I6YmxhY2s7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciBzZWxlY3R7IGhlaWdodDoyOHB4OyBjb2xvcjpibGFjazsgZm9udC1zaXplOjFlbTsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5lc3RpbWF0ZWRUZXh0eyBmb250LXdlaWdodDo3MDA7IHdpZHRoOjcwJTsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5vdXRwdXRwcmljZS10eHR7IHdpZHRoOjM1JTsgbWFyZ2luLWxlZnQ6MzBweDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC50YXhlVGV4dHsgcG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MDsgYm90dG9tOi0xMHB4OyB3aWR0aDpmaXQtY29udGVudDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5pbnB1dCB7IGJvcmRlcjoxcHggc29saWQgIzk5OTsgYmFja2dyb3VuZDojZWVlOyBwYWRkaW5nOjAuMjVyZW07IGJvcmRlci1yYWRpdXM6MC4yNXJlbTsgd2lkdGg6bWluKDUwJSw2cmVtKTsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5jYWxjLWZvcm0gZGl2LmRvbGxhclNwYW57IGRpc3BsYXk6Y29udGVudHM7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciBkaXYuZG9sbGFyU3BhbiAuaW5wdXR7IHBhZGRpbmctbGVmdDoxMnB4OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLmNhbGMtZm9ybSBkaXYuZG9sbGFyU3Bhbjo6YmVmb3JleyBjb250ZW50OiIkIjsgZm9udC1zaXplOjFlbTsgcG9zaXRpb246YWJzb2x1dGU7IHJpZ2h0Ojg1cHg7IHRvcDo0OSU7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC00MyUpOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlX211bHRpc3RlcF9jb25zZW50X3RleHRfZGl2eyBvdmVyZmxvdy15OnNjcm9sbDsgaGVpZ2h0OjQ0MHB4OyB3aWR0aDoxMDAlOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5tdWx0aXN0ZXBQYXltZW50VmVoaWNsZXsgZm9udC1zaXplOmluaGVyaXQ7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXJ7IG1heC1oZWlnaHQ6MTc1cHg7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcnsgaGVpZ2h0OjI3NXB4OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLmNhbGMtZm9ybSAubG9hbmFtb3VudCwgI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAuY2FsYy1mb3JtIC5pbnRlcmVzdHJhdGV7IGJvcmRlcjowOyBiYWNrZ3JvdW5kLWNvbG9yOnVuc2V0OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLmNhbGMtZm9ybSBpbnB1dCwgI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAuY2FsYy1mb3JtIHNlbGVjdHsgYmFja2dyb3VuZC1jb2xvcjojZmZmOyBib3JkZXItcmFkaXVzOjAuM3JlbTsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAubXVsdGlzdGVwSW5pdGlhbFRpdGxleyBmb250LXdlaWdodDpib2xkOyBtYXJnaW4tdG9wOjA7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gc3Bhbi5oMi1hbHR7IHRleHQtYWxpZ246Y2VudGVyOyBtYXJnaW4tYm90dG9tOjE1cHg7IGZvbnQtc2l6ZTppbmhlcml0OyBkaXNwbGF5OmJsb2NrOyBjb2xvcjp2YXIoLS1kZWZhdWx0LWJsYWNrKTsgbWFyZ2luLWxlZnQ6MDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSBzcGFuLmgzLWFsdHsgdGV4dC1hbGlnbjpjZW50ZXI7IG1hcmdpbi10b3A6MTBweDsgbWFyZ2luLWJvdHRvbToxNXB4OyBmb250LXNpemU6MS4yNXJlbSA7IGRpc3BsYXk6YmxvY2s7IGZvbnQtZmFtaWx5OnZhcigtLWZvbnQtaDItbW9iKTsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuaGlkZGVuSW5wdXR7IGRpc3BsYXk6bm9uZTsgfSAuZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLnBheW1lbnRDYWxjdWxhdG9ySW5jbHVkZVRheENoZWNrRGl2eyBwb3NpdGlvbjphYnNvbHV0ZTsgbWFyZ2luLXRvcDoxMHB4OyByaWdodDowcHg7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5wYXltZW50Q2FsY3VsYXRvclRyYWRlSW5Jbml0aWFseyBmb250LXNpemU6MC42MjVyZW0gOyBib3JkZXI6MXB4IHNvbGlkICNhOWE5YTk7IGhlaWdodDozNXB4OyBib3JkZXItcmFkaXVzOjVweDsgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsgd2lkdGg6MTA1cHg7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyBwYWRkaW5nOjRweCAycHggNXB4OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlTXVsdGlzdGVwTmV3Q2FsY3VsYXRvciAucGF5bWVudENhbGN1bGF0b3JUcmFkZUluRmluYWx7IGJvcmRlcjoxcHggc29saWQgI2E5YTlhOTsgaGVpZ2h0OjM1cHg7IGJvcmRlci1yYWRpdXM6NXB4OyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyB3aWR0aDoxMDVweCFpbXBvcnRhbnQ7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nOjVweCAycHg7IGJhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgdmVyc2lvbj0nMS4xJyBoZWlnaHQ9JzI4cHgnIHdpZHRoPSc4NXB4Jz48dGV4dCB4PSc2JyB5PScyMScgZmlsbD0nJyBmb250LXNpemU9JzE2JyBmb250LWZhbWlseT0nYXJpYWwnPiQiKTsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLnBheW1lbnRDYWxjdWxhdG9yVHJhZGVJbkluaXRpYWx7IGZvbnQtc2l6ZTowLjYyNXJlbSA7IGJvcmRlcjoxcHggc29saWQgI2E5YTlhOTsgaGVpZ2h0OjM1cHg7IGJvcmRlci1yYWRpdXM6NXB4OyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyB3aWR0aDo5NnB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgcGFkZGluZzo1cHggMnB4OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLnBheW1lbnRDYWxjdWxhdG9yVHJhZGVJbkZpbmFseyBib3JkZXI6MXB4IHNvbGlkICNhOWE5YTk7IGhlaWdodDozNXB4OyBib3JkZXItcmFkaXVzOjVweDsgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsgd2lkdGg6OTZweCFpbXBvcnRhbnQ7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nOjVweCAycHg7IGJhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgdmVyc2lvbj0nMS4xJyBoZWlnaHQ9JzI4cHgnIHdpZHRoPSc4NXB4Jz48dGV4dCB4PSc2JyB5PScyMScgZmlsbD0nJyBmb250LXNpemU9JzE2JyBmb250LWZhbWlseT0nYXJpYWwnPiQiKTsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5mb3JtYXQtcHJpY2V7IG1hcmdpbi1ib3R0b206dW5zZXQ7IG1hcmdpbi1sZWZ0OjAuN3JlbTsgfSA6aXMoLkVOR0xJU0gsW2RhdGEtbGFuZz0iZW4iXSkgbGFiZWwgLmZvcm1hdC1wcmljZXsgbWFyZ2luLXJpZ2h0OjAuM3JlbTsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAudndDb25zZW50VGV4dHsgaGVpZ2h0OjE5MHB4OyBvdmVyZmxvdy15OnNjcm9sbDsgYmFja2dyb3VuZC1jb2xvcjojZmZmOyBwYWRkaW5nOjEwcHggMTBweDsgbGluZS1oZWlnaHQ6MS41ICFpbXBvcnRhbnQ7IH0gLnZ3Q29uc2VudFRleHQgaDF7IGZvbnQtc2l6ZToxLjI1cmVtICFpbXBvcnRhbnQ7IGZvbnQtd2VpZ2h0OjcwMCAhaW1wb3J0YW50OyBtYXJnaW46MCAwIDE2cHggMCAhaW1wb3J0YW50OyB9IC52d0NvbnNlbnRUZXh0IGgyeyBmb250LXNpemU6MXJlbSAhaW1wb3J0YW50OyBmb250LXdlaWdodDo3MDAgIWltcG9ydGFudDsgbWFyZ2luOjI0cHggMCAxMHB4IDAgIWltcG9ydGFudDsgfSAudndDb25zZW50VGV4dCBweyBmb250LXNpemU6MC44NzVyZW0gIWltcG9ydGFudDsgZm9udC13ZWlnaHQ6NDAwICFpbXBvcnRhbnQ7IGxpbmUtaGVpZ2h0OjEuNSAhaW1wb3J0YW50OyBtYXJnaW46MCAwIDEycHggMCAhaW1wb3J0YW50OyB0ZXh0LWFsaWduOmp1c3RpZnkgIWltcG9ydGFudDsgfSAudndDb25zZW50VGV4dCB1bHsgbWFyZ2luOjhweCAwIDE2cHggMjRweCAhaW1wb3J0YW50OyBwYWRkaW5nOjAgIWltcG9ydGFudDsgfSAudndDb25zZW50VGV4dCBsaXsgZm9udC1zaXplOjAuODc1cmVtICFpbXBvcnRhbnQ7IGZvbnQtd2VpZ2h0OjQwMCAhaW1wb3J0YW50OyBsaW5lLWhlaWdodDoxLjUgIWltcG9ydGFudDsgbWFyZ2luOjAgMCAxMnB4IDAgIWltcG9ydGFudDsgdGV4dC1hbGlnbjpqdXN0aWZ5ICFpbXBvcnRhbnQ7IH0gLnZ3Q29uc2VudFRleHQgc3Ryb25neyBmb250LXdlaWdodDo3MDAgIWltcG9ydGFudDsgfSAudndDb25zZW50VGV4dCBheyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lICFpbXBvcnRhbnQ7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLnZ3Q29uc2VudERpdnN7IG1hcmdpbi10b3A6MTBweDsgZm9udC1zaXplOjAuNzVyZW0gOyB0ZXh0LWFsaWduOmxlZnQ7IH0KLyoqIC9jc3MvY3JlZGl0U2NvcmVDb25maXJtUG9wdXAuY3NzICoqLwojY3JlZGl0U2NvcmVDb25maXJtUG9wdXBDb250YWluZXJ7IGJhY2tncm91bmQ6d2hpdGU7IHBhZGRpbmc6MzBweCAyMHB4IDM0cHg7IH0gI2NyZWRpdFNjb3JlQ29uZmlybVBvcHVwQ29udGFpbmVyIHNwYW57IG1hcmdpbjowOyBwYWRkaW5nOjA7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IH0gI2NyZWRpdFNjb3JlQ29uZmlybVBvcHVwQ29udGFpbmVyIHNwYW4uY3JlZGl0U2NvcmVHcmVlbkNvbG9yeyBjb2xvcjojNGQ4ZjE0OyBmb250LXdlaWdodDpib2xkOyB9ICNjcmVkaXRTY29yZUNvbmZpcm1Qb3B1cENvbnRhaW5lciBzcGFuLmNyZWRpdFNjb3JlQm9sZHsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAjY3JlZGl0U2NvcmVDb25maXJtX2J0bnsgY29sb3I6d2hpdGU7IGJhY2tncm91bmQ6IzRkOGYxNDsgfSAjY3JlZGl0U2NvcmVDb25maXJtUG9wdXBDb250YWluZXIgZGl2LmNyZWRpdFNjb3JlVGl0bGVDb250YWluZXJ7IHRleHQtYWxpZ246Y2VudGVyOyB9ICNjcmVkaXRTY29yZUNvbmZpcm1Qb3B1cENvbnRhaW5lciBkaXYuY3JlZGl0U2NvcmVUaXRsZXsgZm9udC1zaXplOjFyZW0gOyBtYXJnaW4tYm90dG9tOjEwcHg7IGZvbnQtd2VpZ2h0OjcwMDsgfSAjY3JlZGl0U2NvcmVDb25maXJtUG9wdXBDb250YWluZXIgc3Bhbi5jcmVkaXRTY29yZVRpdGxlRnJlZXsgZm9udC1zaXplOjIuNXJlbSA7IHRleHQtc2hhZG93OjJweCAwOyB9ICNjcmVkaXRTY29yZUNvbmZpcm1Qb3B1cENvbnRhaW5lciBzcGFuLmNyZWRpdFNjb3JlVGl0bGVTY29yZXsgZm9udC1zaXplOjEuNTYzcmVtIDsgdGV4dC1zaGFkb3c6MS40cHggMDsgfSAjY3JlZGl0U2NvcmVDb25maXJtUG9wdXBDb250YWluZXIgZGl2LmNyZWRpdFNjb3JlSW5wdXRDb25maXJteyBtYXJnaW4tdG9wOjI1cHg7IH0gI2NyZWRpdFNjb3JlQ29uZmlybVBvcHVwQ29udGFpbmVyIGRpdi5jcmVkaXRTY29yZUNvbmZpcm1JbnB1dCBpbnB1dHsgaGVpZ2h0OjMycHg7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IHdpZHRoOjIyMHB4OyBwYWRkaW5nOjAgMTBweDsgbWFyZ2luLWJvdHRvbToxMHB4OyBib3JkZXI6MXB4IHNvbGlkICNlZWVlZWU7IGJveC1zaXppbmc6Y29udGVudC1ib3g7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbi1sZWZ0OmF1dG87IG1hcmdpbi1yaWdodDphdXRvOyB9ICNjcmVkaXRTY29yZUNvbmZpcm1Qb3B1cENvbnRhaW5lciAjY3JlZGl0U2NvcmVBZGRyZXNzeyB3aWR0aDoyMjBweDsgfSAjY3JlZGl0U2NvcmVDb25maXJtUG9wdXBDb250YWluZXIgLmNyZWRpdFNjb3JlQ29uZmlybV9idG57IHdpZHRoOjI0MHB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgaGVpZ2h0OjQwcHg7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgLXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7IH0gI2NyZWRpdFNjb3JlQ29uZmlybVBvcHVwQ29udGFpbmVyIGRpdi5jcmVkaXRTY29yZUV4dHJhVGV4dHsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gI2NyZWRpdFNjb3JlQ29uZmlybVBvcHVwQ29udGFpbmVyIGRpdi5jcmVkaXRTY29yZUNvbnNlbnRNZXNzYWdleyBjb2xvcjojYjNiM2IzOyBmb250LXNpemU6MC42ODhyZW0gOyB0ZXh0LWFsaWduOmNlbnRlcjsgbWFyZ2luLXRvcDoycHg7IH0gI2NyZWRpdFNjb3JlQ29uZmlybVBvcHVwQ29udGFpbmVyIGRpdi5jcmVkaXRTY29yZUNvbmZpcm1Qb3B1cE1lc3NhZ2V7IHRleHQtYWxpZ246Y2VudGVyOyBib3JkZXItYm90dG9tOjFweCBzb2xpZCBibGFjazsgbWFyZ2luLWJvdHRvbToxMHB4OyBwYWRkaW5nLWJvdHRvbToyMHB4OyBtYXJnaW4tbGVmdDphdXRvOyBtYXJnaW4tcmlnaHQ6YXV0bzsgd2lkdGg6Mjg1cHg7IH0gI2NyZWRpdFNjb3JlQ29uZmlybVBvcHVwQ29udGFpbmVyIGRpdi5jcmVkaXRTY29yZUNvbmZpcm1Qb3B1cE1lc3NhZ2UgZGl2LmNyZWRpdFNjb3JlQ29uZmlybVBvcHVwTWVzc2FnZVRpdGxleyBmb250LXNpemU6MS41cmVtIDsgbWFyZ2luLWJvdHRvbToxMHB4OyB9ICNjcmVkaXRTY29yZUNvbmZpcm1Qb3B1cENvbnRhaW5lciBkaXYuY3JlZGl0U2NvcmVDb25maXJtUG9wdXBNZXNzYWdlIGRpdi5jcmVkaXRTY29yZUNvbmZpcm1Qb3B1cE1lc3NhZ2VUZXh0eyBmb250LXNpemU6MC44NzVyZW0gOyB9IC5wYWMtY29udGFpbmVyIHsgei1pbmRleDoxMDAwMDIxOyB9Ci8qKiAvY3NzL2Zvcm1zL2Zvcm1zLnByZWxvYWQuY3NzICoqLwouZDJjZm9ybSB7IC0tbGFiZWwtcmVxdWlyZWQtc3ltYm9sOiIqIjsgLS1sYWJlbC1yZXF1aXJlZC1jb2xvcjojRkYwMDAwOyAtLWlucHV0LXBhZGRpbmc6dmFyKC0tcy0xKSB2YXIoLS1zMSk7IC0taW5wdXQtYmctY29sb3I6dmFyKC0td2hpdGUpOyAtLWlucHV0LWJvcmRlci1jb2xvcjp2YXIoLS1taWQtZ3JheSk7IC0taW5wdXQtcmFkaXVzOnZhcigtLXMtNik7IC0taW5wdXQtZm9udC1zaXplOnZhcigtLWZzMCk7IC0taW5wdXQtbGluZS1oZWlnaHQ6dmFyKC0tZnMyKTsgfSAuZDJjZm9ybSAqIHsgYm94LXNpemluZzpib3JkZXItYm94OyB9IC5kMmNmb3JtIGJveC1sYyB7IC0tc3BhY2U6dmFyKC0tcy00KTsgcGFkZGluZy1sZWZ0OjA7IHBhZGRpbmctcmlnaHQ6MDsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGFsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7IH0gLmQyY2Zvcm0tLXRoaW4gYm94LWxjIHsgLS1zcGFjZTp2YXIoLS1zLTkpOyB9IC5kMmNmb3JtLS1yb3cgc3RhY2stbGMgeyBmbGV4LWRpcmVjdGlvbjpyb3c7IGZsZXgtd3JhcDp3cmFwOyB9IC5kMmNmb3JtLS1yb3cgYm94LWxjIHsgcGFkZGluZy1yaWdodDp2YXIoLS1zcGFjZSk7IHBhZGRpbmctbGVmdDp2YXIoLS1zcGFjZSk7IH0gLmQyY2Zvcm0tLWhvcml6b250YWwgYm94LWxjIHsgZmxleC1kaXJlY3Rpb246cm93OyBhbGlnbi1pdGVtczpmbGV4LXN0YXJ0OyB9IC5kMmNmb3JtLS1ob3Jpem9udGFsIGJveC1sYyBsYWJlbCB7IG1pbi13aWR0aDoxMTVweDsgd2lkdGg6MzAlOyBwYWRkaW5nLXJpZ2h0OnZhcigtLXMpOyBtYXJnaW4tdG9wOnZhcigtLXMxKTsgbWFyZ2luLWJvdHRvbTowOyB9IC5kMmNmb3JtIGxhYmVsOmhhcyhbcmVxdWlyZWRdKSBzcGFuOmFmdGVyeyBjb2xvciA6dmFyKC0tbGFiZWwtcmVxdWlyZWQtY29sb3IpOyBjb250ZW50IDp2YXIoLS1sYWJlbC1yZXF1aXJlZC1zeW1ib2wpOyBwYWRkaW5nLWxlZnQgOnZhcigtLXMtNik7IH0gLmQyY2Zvcm0gbGFiZWw6bm90KC5maW5hbmNlQ2FsYyksIC5kMmNmb3JtIC5sYWJlbDpub3QoLmZpbmFuY2VDYWxjKSB7IG1hcmdpbi1ib3R0b206dmFyKC0tcy0zKTsgZm9udC1zaXplOnZhcigtLWlucHV0LWZvbnQtc2l6ZSk7IGxpbmUtaGVpZ2h0OnZhcigtLWlucHV0LWxpbmUtaGVpZ2h0KTsgZm9udC13ZWlnaHQ6NDAwOyB9IC5kMmNmb3JtIGxhYmVsLi0tcmVxdWlyZWQ6bm90KC50eHQtcmlnaHQpOmFmdGVyLCAuZDJjZm9ybSAubGFiZWwuLS1yZXF1aXJlZDpub3QoLnR4dC1yaWdodCk6YWZ0ZXIsIC5kMmNmb3JtIGxhYmVsLi1yZXF1aXJlZDpub3QoLnR4dC1yaWdodCk6YWZ0ZXIsIC5kMmNmb3JtIC5sYWJlbC4tcmVxdWlyZWQ6bm90KC50eHQtcmlnaHQpOmFmdGVyIHsgY29sb3IgOnZhcigtLWxhYmVsLXJlcXVpcmVkLWNvbG9yKTsgY29udGVudCA6dmFyKC0tbGFiZWwtcmVxdWlyZWQtc3ltYm9sKTsgcGFkZGluZy1sZWZ0IDp2YXIoLS1zLTYpOyB9IC5kMmNmb3JtIGxhYmVsLi0tcmVxdWlyZWQudHh0LXJpZ2h0OmJlZm9yZSwgLmQyY2Zvcm0gLmxhYmVsLi0tcmVxdWlyZWQudHh0LXJpZ2h0OmJlZm9yZSwgLmQyY2Zvcm0gbGFiZWwuLXJlcXVpcmVkLnR4dC1yaWdodDpiZWZvcmUsIC5kMmNmb3JtIC5sYWJlbC4tcmVxdWlyZWQudHh0LXJpZ2h0OmJlZm9yZSB7IGNvbG9yIDp2YXIoLS1sYWJlbC1yZXF1aXJlZC1jb2xvcik7IGNvbnRlbnQgOnZhcigtLWxhYmVsLXJlcXVpcmVkLXN5bWJvbCk7IHBhZGRpbmctcmlnaHQgOnZhcigtLXMtNik7IH0gLmQyY2Zvcm0gOndoZXJlKGlucHV0Om5vdChbdHlwZT1zdWJtaXRdLC5wYXltZW50Q2FsY3VsYXRvckRvd25QYXltZW50KTpub3QoW3R5cGU9InJhZGlvIl0pOm5vdChbdHlwZT0iY2hlY2tib3giXSkpLCAuZDJjZm9ybSBzZWxlY3Q6bm90KC5wYXltZW50Q2FsY3VsYXRvckludGVydmFsLC5wYXltZW50Q2FsY3VsYXRvckttQWxsb3dhbmNlLC5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLmNhbGMtZm9ybSBzZWxlY3QpLCAuZDJjZm9ybSB0ZXh0YXJlYSB7IHdpZHRoOjEwMCU7IHBhZGRpbmc6dmFyKC0taW5wdXQtcGFkZGluZyk7IGJhY2tncm91bmQtY29sb3I6dmFyKC0taW5wdXQtYmctY29sb3IpOyBib3JkZXItcmFkaXVzOnZhcigtLWlucHV0LXJhZGl1cyk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0taW5wdXQtYm9yZGVyLWNvbG9yKTsgY29sb3I6IzIxMjUyOTsgZm9udC1zaXplOnZhcigtLWlucHV0LWZvbnQtc2l6ZSk7IGxpbmUtaGVpZ2h0OnZhcigtLWlucHV0LWxpbmUtaGVpZ2h0KTsgZm9udC13ZWlnaHQ6NDAwOyB9IC5kMmNmb3JtIGlucHV0Om5vdChbdHlwZT1zdWJtaXRdKTpub3QoW3R5cGU9InJhZGlvIl0pOm5vdChbdHlwZT0iY2hlY2tib3giXSksIC5kMmNmb3JtIHNlbGVjdCB7IGhlaWdodDozNXB4OyB9IC5kMmNmb3JtIC5pbnZhbGlkID4gOmlzKGlucHV0LHNlbGVjdCx0ZXh0YXJlYSl7IGJhY2tncm91bmQtY29sb3I6I2ZhZDZkYzsgfSAuZDJjZm9ybSBpbnB1dDpkaXNhYmxlZCwgLmQyY2Zvcm0gaW5wdXQuZGlzYWJsZWQgeyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjM5LCAyMzksIDIzOSwgMC4zKTsgY29sb3I6cmdiKDg0LCA4NCwgODQpOyBib3JkZXItY29sb3I6cmdiYSgxMTgsIDExOCwgMTE4LCAwLjMpOyBjdXJzb3I6bm90LWFsbG93ZWQ7IH0gLmQyY2Zvcm0gaW5wdXQudHh0LXVwcGVyIHsgdGV4dC10cmFuc2Zvcm06bm9uZTsgfSAuZDJjZm9ybSBpbnB1dC50eHQtdXBwZXI6OnBsYWNlaG9sZGVyIHsgdGV4dC10cmFuc2Zvcm06dmFyKC0tdHh0LXVwcGVyLCB1cHBlcmNhc2UpOyB9IC5kMmNmb3JtIC5pbnB1dC1pY29uLWxlZnQsIC5kMmNmb3JtIC5pbnB1dC1pY29uLXJpZ2h0IHsgcG9zaXRpb246cmVsYXRpdmU7IH0gLmQyY2Zvcm0gLmlucHV0LWljb24geyBwb3NpdGlvbjphYnNvbHV0ZTsgei1pbmRleDoxOyB0b3A6dmFyKC0tczEpOyBmb250LXNpemU6dmFyKC0taW5wdXQtZm9udC1zaXplKTsgbGluZS1oZWlnaHQ6dmFyKC0taW5wdXQtbGluZS1oZWlnaHQpOyBjb2xvcjp2YXIoLS1kYXJrLWdyYXkpOyB9IC5kMmNmb3JtIC5pbnB1dC1pY29uLXJpZ2h0IC5pbnB1dC1pY29uIHsgcmlnaHQ6dmFyKC0tczQpOyB9IC5kMmNmb3JtIC5pbnB1dC1pY29uLWxlZnQgLmlucHV0LWljb24geyBsZWZ0OnZhcigtLXM0KTsgfSAuZDJjZm9ybSAuaW5wdXQtaWNvbi1sZWZ0IGlucHV0IHsgcGFkZGluZy1sZWZ0OnZhcigtLXM5KTsgfSAuZDJjZm9ybSAuc2VwYXJhdG9yIHsgd2lkdGg6MTAwJTsgYm9yZGVyLXRvcDoxcHggc29saWQgI2Q0ZDRkNDsgbWFyZ2luLXRvcDp2YXIoLS1zNyk7IG1hcmdpbi1ib3R0b206dmFyKC0tczcpOyB9IC5kMmNmb3JtIC5yYWRpby1pbmxpbmUgeyBkaXNwbGF5OmZsZXg7IHdpZHRoOjEwMCU7IH0gLmQyY2Zvcm0gLmNoZWNrYm94LWxpc3QgeyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgbWFyZ2luLWJvdHRvbTp2YXIoLS1zLTMpOyB9IC5kMmNmb3JtIC5jaGVja2JveC1saXN0ID4gKiB7IG1hcmdpbi1ib3R0b206MDsgfSAuZDJjZm9ybSAubXVsdGlwbGUtaW5wdXQgeyBkaXNwbGF5OmZsZXg7IHdpZHRoOjEwMCU7IH0gLmQyY2Zvcm0gLm11bHRpcGxlLWlucHV0ID4gKjpub3QoOmxhc3Qtb2YtdHlwZSkgeyBtYXJnaW4tcmlnaHQ6dmFyKC0tczEpOyB9IC5kMmNmb3JtIC5pbnB1dC1ncm91cCB7IGRpc3BsYXk6ZmxleDsgd2lkdGggOjEwMCU7IH0gLmQyY2Zvcm0gLmlucHV0LWdyb3VwIC5pbnB1dC1ncm91cC10ZXh0IHsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IHBhZGRpbmc6dmFyKC0taW5wdXQtcGFkZGluZyk7IGJhY2tncm91bmQ6dmFyKC0tbGlnaHQtZ3JheSk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0taW5wdXQtYm9yZGVyLWNvbG9yKTsgYm9yZGVyLXJhZGl1czp2YXIoLS1pbnB1dC1yYWRpdXMpOyBmb250LXNpemU6dmFyKC0taW5wdXQtZm9udC1zaXplKTsgbGluZS1oZWlnaHQ6dmFyKC0taW5wdXQtbGluZS1oZWlnaHQpOyB3aGl0ZS1zcGFjZTpub3dyYXA7IH0gLmQyY2Zvcm0gLmlucHV0LWdyb3VwID4gOm5vdCg6Zmlyc3QtY2hpbGQpIHsgYm9yZGVyLWxlZnQ6MDsgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czowICFpbXBvcnRhbnQ7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MCAhaW1wb3J0YW50OyB9IC5kMmNmb3JtIC5pbnB1dC1ncm91cCA+IDpub3QoOmxhc3QtY2hpbGQpIHsgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MCAhaW1wb3J0YW50OyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowICFpbXBvcnRhbnQ7IH0gQG1lZGlhIChtYXgtd2lkdGg6OTgwcHgpIHsgLmQyY2Zvcm0tLWhvcml6b250YWwgYm94LWxjIGxhYmVsIHsgbWluLXdpZHRoOjg1cHg7IH0gfQovKiogL2Nzcy9mb3Jtcy9mb3Jtcy5jc3MgKiovCi5kMmNmb3JtIGlucHV0Om5vdChbdHlwZT1zdWJtaXRdKTpub3QoW3R5cGU9InJhZGlvIl0pOm5vdChbdHlwZT0iY2hlY2tib3giXSksIC5kMmNmb3JtIHNlbGVjdCwgLmQyY2Zvcm0gdGV4dGFyZWEgeyB0cmFuc2l0aW9uOmJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LGJveC1zaGFkb3cgLjE1cyBlYXNlLWluLW91dDsgfSAuZDJjZm9ybSBpbnB1dDpub3QoW3R5cGU9c3VibWl0XSk6bm90KFt0eXBlPSJyYWRpbyJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pOmZvY3VzLCAuZDJjZm9ybSBzZWxlY3Q6Zm9jdXMsIC5kMmNmb3JtIHRleHRhcmVhOmZvY3VzIHsgYm9yZGVyLWNvbG9yOiM4NmI3ZmU7IG91dGxpbmU6MDsgYm94LXNoYWRvdzowIDAgMCAwLjJyZW0gcmdiKDEzIDExMCAyNTMgLyAyNSUpOyB9IC5kMmNmb3JtIC5pbnB1dC1ncm91cCBpbnB1dDpub3QoW3R5cGU9c3VibWl0XSk6bm90KFt0eXBlPSJyYWRpbyJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pOmZvY3VzLCAuZDJjZm9ybSAuaW5wdXQtZ3JvdXAgc2VsZWN0OmZvY3VzLCAuZDJjZm9ybSAuaW5wdXQtZ3JvdXAgdGV4dGFyZWE6Zm9jdXMgeyB6LWluZGV4OjM7IH0gLmQyY2Zvcm0gaW5wdXQudmFsaWRpdHktZXJyb25lb3VzLCAuZDJjZm9ybSBzZWxlY3QudmFsaWRpdHktZXJyb25lb3VzLCAuZDJjZm9ybSB0ZXh0YXJlYS52YWxpZGl0eS1lcnJvbmVvdXMsIC5kMmNmb3JtIC5pbnB1dC1ncm91cCAudmFsaWRpdHktZXJyb25lb3VzICsgLmlucHV0LWdyb3VwLXRleHQgeyBib3JkZXItY29sb3I6I2RjMzU0NSAhaW1wb3J0YW50OyBiYWNrZ3JvdW5kLWNvbG9yOiNmYWQ2ZGMgIWltcG9ydGFudDsgfSAuZDJjZm9ybSBpbnB1dC52YWxpZGl0eS1lcnJvbmVvdXM6OnBsYWNlaG9sZGVyLCAuZDJjZm9ybSB0ZXh0YXJlYS52YWxpZGl0eS1lcnJvbmVvdXM6OnBsYWNlaG9sZGVyLCAuZDJjZm9ybSBzZWxlY3QudmFsaWRpdHktZXJyb25lb3VzLCAuZDJjZm9ybSAuaW5wdXQtZ3JvdXAgLnZhbGlkaXR5LWVycm9uZW91cyArIC5pbnB1dC1ncm91cC10ZXh0IHsgY29sb3I6I2RjMzU0NTsgfQovKiogL2Nzcy92Mi9tb2RhbC5jc3MgKiovCi5tb2RhbC13cmFwcGVyIHsgcG9zaXRpb246Zml4ZWQ7IHRvcDoxNTAlOyBsZWZ0OjUwJTsgdHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsgei1pbmRleDoxNjAwMTsgdHJhbnNpdGlvbjp0b3AgMTUwbXMgZWFzZS1pbjsgfSAubW9kYWwtd3JhcHBlci5pcy1hY3RpdmV7IHRvcDo1MCU7IH0gLm1vZGFsLXdyYXBwZXIgLm1vZGFsLWJvZHl7IG1pbi13aWR0aDoyMHJlbTsgbWF4LXdpZHRoOjEwMCU7IG1heC1oZWlnaHQ6ODV2aDsgb3ZlcmZsb3cteTphdXRvOyB9IC5tb2RhbC1vdmVybGF5eyBwb3NpdGlvbjpmaXhlZDsgdG9wOjA7IGxlZnQ6MDsgd2lkdGg6MTAwdnc7IGhlaWdodDoxMDB2aDsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLDAuNSk7IHotaW5kZXg6MTAwMDA7IH0gLmxvYWRpbmctb3ZlcmxheXsgcG9zaXRpb246YWJzb2x1dGU7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyB0b3A6MDsgbGVmdDowOyBiYWNrZ3JvdW5kLWltYWdlOnVybCgvaW1hZ2VzL2FqYXgtbG9hZGVyLmdpZik7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYmFja2dyb3VuZC1wb3NpdGlvbjpjZW50ZXI7IH0gLm1vZGFsLXdyYXBwZXIgOmlzKGlucHV0W3R5cGU9InRleHQiXSxpbnB1dFt0eXBlPSJlbWFpbCJdLGlucHV0W3R5cGU9InRlbCJdKXsgcGFkZGluZzowLjRyZW07IGJvcmRlcjoxcHggc29saWQgdmFyKC0tbWlkLWdyYXkpOyBib3JkZXItcmFkaXVzOjAuM3JlbTsgfSAubW9kYWwtYm9keSAuaWZyYW1lLXdyYXBwZXJ7IHdpZHRoOm1heCg5MHZ3LCAyMC41cmVtKTsgaGVpZ2h0Om1heCg4NHZoLCAzMHJlbSk7IHdpZHRoOmNsYW1wKDIwLjVyZW0sIG1heCg5MHZ3LCAyMC41cmVtKSwgNjByZW0pOyBoZWlnaHQ6Y2xhbXAoMzByZW0sIG1heCg4NHZoLCAzMHJlbSksIDYwcmVtKTsgfSAubW9kYWwtYm9keSAuaWZyYW1lLXdyYXBwZXIgaWZyYW1leyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgfQovKiogL2Nzcy92Mi9mbGF0cGlja3IubWluLmNzcyAqKi8KLmZsYXRwaWNrci1jYWxlbmRhcntiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O29wYWNpdHk6MDtkaXNwbGF5Om5vbmU7dGV4dC1hbGlnbjpjZW50ZXI7dmlzaWJpbGl0eTpoaWRkZW47cGFkZGluZzowOy13ZWJraXQtYW5pbWF0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmU7ZGlyZWN0aW9uOmx0cjtib3JkZXI6MDtmb250LXNpemU6MC44NzVyZW0gO2xpbmUtaGVpZ2h0OjI0cHg7Ym9yZGVyLXJhZGl1czo1cHg7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MzA3Ljg3NXB4Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDstbXMtdG91Y2gtYWN0aW9uOm1hbmlwdWxhdGlvbjt0b3VjaC1hY3Rpb246bWFuaXB1bGF0aW9uO2JhY2tncm91bmQ6I2ZmZjstd2Via2l0LWJveC1zaGFkb3c6MXB4IDAgMCAjZTZlNmU2LC0xcHggMCAwICNlNmU2ZTYsMCAxcHggMCAjZTZlNmU2LDAgLTFweCAwICNlNmU2ZTYsMCAzcHggMTNweCByZ2JhKDAsMCwwLDAuMDgpO2JveC1zaGFkb3c6MXB4IDAgMCAjZTZlNmU2LC0xcHggMCAwICNlNmU2ZTYsMCAxcHggMCAjZTZlNmU2LDAgLTFweCAwICNlNmU2ZTYsMCAzcHggMTNweCByZ2JhKDAsMCwwLDAuMDgpfS5mbGF0cGlja3ItY2FsZW5kYXIub3BlbiwuZmxhdHBpY2tyLWNhbGVuZGFyLmlubGluZXtvcGFjaXR5OjE7bWF4LWhlaWdodDo2NDBweDt2aXNpYmlsaXR5OnZpc2libGV9LmZsYXRwaWNrci1jYWxlbmRhci5vcGVue2Rpc3BsYXk6aW5saW5lLWJsb2NrO3otaW5kZXg6OTk5OTl9LmZsYXRwaWNrci1jYWxlbmRhci5hbmltYXRlLm9wZW57LXdlYmtpdC1hbmltYXRpb246ZnBGYWRlSW5Eb3duIDMwMG1zIGN1YmljLWJlemllciguMjMsMSwuMzIsMSk7YW5pbWF0aW9uOmZwRmFkZUluRG93biAzMDBtcyBjdWJpYy1iZXppZXIoLjIzLDEsLjMyLDEpfS5mbGF0cGlja3ItY2FsZW5kYXIuaW5saW5le2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246cmVsYXRpdmU7dG9wOjJweH0uZmxhdHBpY2tyLWNhbGVuZGFyLnN0YXRpY3twb3NpdGlvbjphYnNvbHV0ZTt0b3A6Y2FsYygxMDAlICsgMnB4KX0uZmxhdHBpY2tyLWNhbGVuZGFyLnN0YXRpYy5vcGVue3otaW5kZXg6OTk5O2Rpc3BsYXk6YmxvY2t9LmZsYXRwaWNrci1jYWxlbmRhci5tdWx0aU1vbnRoIC5mbGF0cGlja3ItZGF5cyAuZGF5Q29udGFpbmVyOm50aC1jaGlsZChuKzEpIC5mbGF0cGlja3ItZGF5LmluUmFuZ2U6bnRoLWNoaWxkKDduKzcpey13ZWJraXQtYm94LXNoYWRvdzpub25lICFpbXBvcnRhbnQ7Ym94LXNoYWRvdzpub25lICFpbXBvcnRhbnR9LmZsYXRwaWNrci1jYWxlbmRhci5tdWx0aU1vbnRoIC5mbGF0cGlja3ItZGF5cyAuZGF5Q29udGFpbmVyOm50aC1jaGlsZChuKzIpIC5mbGF0cGlja3ItZGF5LmluUmFuZ2U6bnRoLWNoaWxkKDduKzEpey13ZWJraXQtYm94LXNoYWRvdzotMnB4IDAgMCAjZTZlNmU2LDVweCAwIDAgI2U2ZTZlNjtib3gtc2hhZG93Oi0ycHggMCAwICNlNmU2ZTYsNXB4IDAgMCAjZTZlNmU2fS5mbGF0cGlja3ItY2FsZW5kYXIgLmhhc1dlZWtzIC5kYXlDb250YWluZXIsLmZsYXRwaWNrci1jYWxlbmRhciAuaGFzVGltZSAuZGF5Q29udGFpbmVye2JvcmRlci1ib3R0b206MDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MH0uZmxhdHBpY2tyLWNhbGVuZGFyIC5oYXNXZWVrcyAuZGF5Q29udGFpbmVye2JvcmRlci1sZWZ0OjB9LmZsYXRwaWNrci1jYWxlbmRhci5oYXNUaW1lIC5mbGF0cGlja3ItdGltZXtoZWlnaHQ6NDBweDtib3JkZXItdG9wOjFweCBzb2xpZCAjZTZlNmU2fS5mbGF0cGlja3ItY2FsZW5kYXIubm9DYWxlbmRhci5oYXNUaW1lIC5mbGF0cGlja3ItdGltZXtoZWlnaHQ6YXV0b30uZmxhdHBpY2tyLWNhbGVuZGFyOmJlZm9yZSwuZmxhdHBpY2tyLWNhbGVuZGFyOmFmdGVye3Bvc2l0aW9uOmFic29sdXRlO2Rpc3BsYXk6YmxvY2s7cG9pbnRlci1ldmVudHM6bm9uZTtib3JkZXI6c29saWQgdHJhbnNwYXJlbnQ7Y29udGVudDonJztoZWlnaHQ6MDt3aWR0aDowO2xlZnQ6MjJweH0uZmxhdHBpY2tyLWNhbGVuZGFyLnJpZ2h0TW9zdDpiZWZvcmUsLmZsYXRwaWNrci1jYWxlbmRhci5hcnJvd1JpZ2h0OmJlZm9yZSwuZmxhdHBpY2tyLWNhbGVuZGFyLnJpZ2h0TW9zdDphZnRlciwuZmxhdHBpY2tyLWNhbGVuZGFyLmFycm93UmlnaHQ6YWZ0ZXJ7bGVmdDphdXRvO3JpZ2h0OjIycHh9LmZsYXRwaWNrci1jYWxlbmRhci5hcnJvd0NlbnRlcjpiZWZvcmUsLmZsYXRwaWNrci1jYWxlbmRhci5hcnJvd0NlbnRlcjphZnRlcntsZWZ0OjUwJTtyaWdodDo1MCV9LmZsYXRwaWNrci1jYWxlbmRhcjpiZWZvcmV7Ym9yZGVyLXdpZHRoOjVweDttYXJnaW46MCAtNXB4fS5mbGF0cGlja3ItY2FsZW5kYXI6YWZ0ZXJ7Ym9yZGVyLXdpZHRoOjRweDttYXJnaW46MCAtNHB4fS5mbGF0cGlja3ItY2FsZW5kYXIuYXJyb3dUb3A6YmVmb3JlLC5mbGF0cGlja3ItY2FsZW5kYXIuYXJyb3dUb3A6YWZ0ZXJ7Ym90dG9tOjEwMCV9LmZsYXRwaWNrci1jYWxlbmRhci5hcnJvd1RvcDpiZWZvcmV7Ym9yZGVyLWJvdHRvbS1jb2xvcjojZTZlNmU2fS5mbGF0cGlja3ItY2FsZW5kYXIuYXJyb3dUb3A6YWZ0ZXJ7Ym9yZGVyLWJvdHRvbS1jb2xvcjojZmZmfS5mbGF0cGlja3ItY2FsZW5kYXIuYXJyb3dCb3R0b206YmVmb3JlLC5mbGF0cGlja3ItY2FsZW5kYXIuYXJyb3dCb3R0b206YWZ0ZXJ7dG9wOjEwMCV9LmZsYXRwaWNrci1jYWxlbmRhci5hcnJvd0JvdHRvbTpiZWZvcmV7Ym9yZGVyLXRvcC1jb2xvcjojZTZlNmU2fS5mbGF0cGlja3ItY2FsZW5kYXIuYXJyb3dCb3R0b206YWZ0ZXJ7Ym9yZGVyLXRvcC1jb2xvcjojZmZmfS5mbGF0cGlja3ItY2FsZW5kYXI6Zm9jdXN7b3V0bGluZTowfS5mbGF0cGlja3Itd3JhcHBlcntwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmlubGluZS1ibG9ja30uZmxhdHBpY2tyLW1vbnRoc3tkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LXdlYmtpdC1mbGV4O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4fS5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItbW9udGh7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjpyZ2JhKDAsMCwwLDAuOSk7ZmlsbDpyZ2JhKDAsMCwwLDAuOSk7aGVpZ2h0OjM0cHg7bGluZS1oZWlnaHQ6MTt0ZXh0LWFsaWduOmNlbnRlcjtwb3NpdGlvbjpyZWxhdGl2ZTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7b3ZlcmZsb3c6aGlkZGVuOy13ZWJraXQtYm94LWZsZXg6MTstd2Via2l0LWZsZXg6MTstbXMtZmxleDoxO2ZsZXg6MX0uZmxhdHBpY2tyLW1vbnRocyAuZmxhdHBpY2tyLXByZXYtbW9udGgsLmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1uZXh0LW1vbnRoe3RleHQtZGVjb3JhdGlvbjpub25lO2N1cnNvcjpwb2ludGVyO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2hlaWdodDozNHB4O3BhZGRpbmc6MTBweDt6LWluZGV4OjM7Y29sb3I6cmdiYSgwLDAsMCwwLjkpO2ZpbGw6cmdiYSgwLDAsMCwwLjkpfS5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItcHJldi1tb250aC5mbGF0cGlja3ItZGlzYWJsZWQsLmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1uZXh0LW1vbnRoLmZsYXRwaWNrci1kaXNhYmxlZHtkaXNwbGF5Om5vbmV9LmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1wcmV2LW1vbnRoIGksLmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1uZXh0LW1vbnRoIGl7cG9zaXRpb246cmVsYXRpdmV9LmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1wcmV2LW1vbnRoLmZsYXRwaWNrci1wcmV2LW1vbnRoLC5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItbmV4dC1tb250aC5mbGF0cGlja3ItcHJldi1tb250aHtsZWZ0OjB9IC5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItcHJldi1tb250aC5mbGF0cGlja3ItbmV4dC1tb250aCwuZmxhdHBpY2tyLW1vbnRocyAuZmxhdHBpY2tyLW5leHQtbW9udGguZmxhdHBpY2tyLW5leHQtbW9udGh7cmlnaHQ6MH0gLmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1wcmV2LW1vbnRoOmhvdmVyLC5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItbmV4dC1tb250aDpob3Zlcntjb2xvcjojOTU5ZWE5fS5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItcHJldi1tb250aDpob3ZlciBzdmcsLmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1uZXh0LW1vbnRoOmhvdmVyIHN2Z3tmaWxsOiNmNjQ3NDd9LmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1wcmV2LW1vbnRoIHN2ZywuZmxhdHBpY2tyLW1vbnRocyAuZmxhdHBpY2tyLW5leHQtbW9udGggc3Zne3dpZHRoOjE0cHg7aGVpZ2h0OjE0cHh9LmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1wcmV2LW1vbnRoIHN2ZyBwYXRoLC5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItbmV4dC1tb250aCBzdmcgcGF0aHstd2Via2l0LXRyYW5zaXRpb246ZmlsbCAuMXM7dHJhbnNpdGlvbjpmaWxsIC4xcztmaWxsOmluaGVyaXR9Lm51bUlucHV0V3JhcHBlcntwb3NpdGlvbjpyZWxhdGl2ZTtoZWlnaHQ6YXV0b30ubnVtSW5wdXRXcmFwcGVyIGlucHV0LC5udW1JbnB1dFdyYXBwZXIgc3BhbntkaXNwbGF5OmlubGluZS1ibG9ja30ubnVtSW5wdXRXcmFwcGVyIGlucHV0e3dpZHRoOjEwMCV9Lm51bUlucHV0V3JhcHBlciBpbnB1dDo6LW1zLWNsZWFye2Rpc3BsYXk6bm9uZX0ubnVtSW5wdXRXcmFwcGVyIGlucHV0Ojotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uLC5udW1JbnB1dFdyYXBwZXIgaW5wdXQ6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b257bWFyZ2luOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9Lm51bUlucHV0V3JhcHBlciBzcGFue3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7d2lkdGg6MTRweDtwYWRkaW5nOjAgNHB4IDAgMnB4O2hlaWdodDo1MCU7bGluZS1oZWlnaHQ6NTAlO29wYWNpdHk6MDtjdXJzb3I6cG9pbnRlcjtib3JkZXI6MXB4IHNvbGlkIHJnYmEoNTcsNTcsNTcsMC4xNSk7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94fS5udW1JbnB1dFdyYXBwZXIgc3Bhbjpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMC4xKX0ubnVtSW5wdXRXcmFwcGVyIHNwYW46YWN0aXZle2JhY2tncm91bmQ6cmdiYSgwLDAsMCwwLjIpfS5udW1JbnB1dFdyYXBwZXIgc3BhbjphZnRlcntkaXNwbGF5OmJsb2NrO2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGV9Lm51bUlucHV0V3JhcHBlciBzcGFuLmFycm93VXB7dG9wOjA7Ym9yZGVyLWJvdHRvbTowfS5udW1JbnB1dFdyYXBwZXIgc3Bhbi5hcnJvd1VwOmFmdGVye2JvcmRlci1sZWZ0OjRweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmlnaHQ6NHB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1ib3R0b206NHB4IHNvbGlkIHJnYmEoNTcsNTcsNTcsMC42KTt0b3A6MjYlfS5udW1JbnB1dFdyYXBwZXIgc3Bhbi5hcnJvd0Rvd257dG9wOjUwJX0ubnVtSW5wdXRXcmFwcGVyIHNwYW4uYXJyb3dEb3duOmFmdGVye2JvcmRlci1sZWZ0OjRweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmlnaHQ6NHB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci10b3A6NHB4IHNvbGlkIHJnYmEoNTcsNTcsNTcsMC42KTt0b3A6NDAlfS5udW1JbnB1dFdyYXBwZXIgc3BhbiBzdmd7d2lkdGg6aW5oZXJpdDtoZWlnaHQ6YXV0b30ubnVtSW5wdXRXcmFwcGVyIHNwYW4gc3ZnIHBhdGh7ZmlsbDpyZ2JhKDAsMCwwLDAuNSl9Lm51bUlucHV0V3JhcHBlcjpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMC4wNSl9Lm51bUlucHV0V3JhcHBlcjpob3ZlciBzcGFue29wYWNpdHk6MX0uZmxhdHBpY2tyLWN1cnJlbnQtbW9udGh7Zm9udC1zaXplOjEzNSU7bGluZS1oZWlnaHQ6aW5oZXJpdDtmb250LXdlaWdodDozMDA7Y29sb3I6aW5oZXJpdDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDo3NSU7bGVmdDoxMi41JTtwYWRkaW5nOjcuNDhweCAwIDAgMDtsaW5lLWhlaWdodDoxO2hlaWdodDozNHB4O2Rpc3BsYXk6aW5saW5lLWJsb2NrO3RleHQtYWxpZ246Y2VudGVyOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApfS5mbGF0cGlja3ItY3VycmVudC1tb250aCBzcGFuLmN1ci1tb250aHtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjppbmhlcml0O2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1sZWZ0Oi41Y2g7cGFkZGluZzowfS5mbGF0cGlja3ItY3VycmVudC1tb250aCBzcGFuLmN1ci1tb250aDpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMC4wNSl9LmZsYXRwaWNrci1jdXJyZW50LW1vbnRoIC5udW1JbnB1dFdyYXBwZXJ7d2lkdGg6NmNoO3dpZHRoOjdjaFwwO2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5mbGF0cGlja3ItY3VycmVudC1tb250aCAubnVtSW5wdXRXcmFwcGVyIHNwYW4uYXJyb3dVcDphZnRlcntib3JkZXItYm90dG9tLWNvbG9yOnJnYmEoMCwwLDAsMC45KX0uZmxhdHBpY2tyLWN1cnJlbnQtbW9udGggLm51bUlucHV0V3JhcHBlciBzcGFuLmFycm93RG93bjphZnRlcntib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsMC45KX0uZmxhdHBpY2tyLWN1cnJlbnQtbW9udGggaW5wdXQuY3VyLXllYXJ7YmFja2dyb3VuZDp0cmFuc3BhcmVudDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y29sb3I6aW5oZXJpdDtjdXJzb3I6dGV4dDtwYWRkaW5nOjAgMCAwIC41Y2g7bWFyZ2luOjA7ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXdlaWdodDozMDA7bGluZS1oZWlnaHQ6aW5oZXJpdDtoZWlnaHQ6YXV0bztib3JkZXI6MDtib3JkZXItcmFkaXVzOjA7dmVydGljYWwtYWxpZ246aW5pdGlhbDstd2Via2l0LWFwcGVhcmFuY2U6dGV4dGZpZWxkOy1tb3otYXBwZWFyYW5jZTp0ZXh0ZmllbGQ7YXBwZWFyYW5jZTp0ZXh0ZmllbGR9LmZsYXRwaWNrci1jdXJyZW50LW1vbnRoIGlucHV0LmN1ci15ZWFyOmZvY3Vze291dGxpbmU6MH0uZmxhdHBpY2tyLWN1cnJlbnQtbW9udGggaW5wdXQuY3VyLXllYXJbZGlzYWJsZWRdLC5mbGF0cGlja3ItY3VycmVudC1tb250aCBpbnB1dC5jdXIteWVhcltkaXNhYmxlZF06aG92ZXJ7Zm9udC1zaXplOjEwMCU7Y29sb3I6cmdiYSgwLDAsMCwwLjUpO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7cG9pbnRlci1ldmVudHM6bm9uZX0uZmxhdHBpY2tyLWN1cnJlbnQtbW9udGggLmZsYXRwaWNrci1tb250aERyb3Bkb3duLW1vbnRoc3thcHBlYXJhbmNlOm1lbnVsaXN0O2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym9yZGVyOm5vbmU7Ym9yZGVyLXJhZGl1czowO2JveC1zaXppbmc6Ym9yZGVyLWJveDtjb2xvcjppbmhlcml0O2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC13ZWlnaHQ6MzAwO2hlaWdodDphdXRvO2xpbmUtaGVpZ2h0OmluaGVyaXQ7bWFyZ2luOi0xcHggMCAwIDA7b3V0bGluZTpub25lO3BhZGRpbmc6MCAwIDAgLjVjaDtwb3NpdGlvbjpyZWxhdGl2ZTt2ZXJ0aWNhbC1hbGlnbjppbml0aWFsOy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94Oy13ZWJraXQtYXBwZWFyYW5jZTptZW51bGlzdDstbW96LWFwcGVhcmFuY2U6bWVudWxpc3Q7d2lkdGg6YXV0b30uZmxhdHBpY2tyLWN1cnJlbnQtbW9udGggLmZsYXRwaWNrci1tb250aERyb3Bkb3duLW1vbnRoczpmb2N1cywuZmxhdHBpY2tyLWN1cnJlbnQtbW9udGggLmZsYXRwaWNrci1tb250aERyb3Bkb3duLW1vbnRoczphY3RpdmV7b3V0bGluZTpub25lfS5mbGF0cGlja3ItY3VycmVudC1tb250aCAuZmxhdHBpY2tyLW1vbnRoRHJvcGRvd24tbW9udGhzOmhvdmVye2JhY2tncm91bmQ6cmdiYSgwLDAsMCwwLjA1KX0uZmxhdHBpY2tyLWN1cnJlbnQtbW9udGggLmZsYXRwaWNrci1tb250aERyb3Bkb3duLW1vbnRocyAuZmxhdHBpY2tyLW1vbnRoRHJvcGRvd24tbW9udGh7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtvdXRsaW5lOm5vbmU7cGFkZGluZzowfS5mbGF0cGlja3Itd2Vla2RheXN7YmFja2dyb3VuZDp0cmFuc3BhcmVudDt0ZXh0LWFsaWduOmNlbnRlcjtvdmVyZmxvdzpoaWRkZW47d2lkdGg6MTAwJTtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LXdlYmtpdC1mbGV4O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstd2Via2l0LWFsaWduLWl0ZW1zOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2hlaWdodDoyOHB4fS5mbGF0cGlja3Itd2Vla2RheXMgLmZsYXRwaWNrci13ZWVrZGF5Y29udGFpbmVye2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotd2Via2l0LWZsZXg7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtZmxleDoxOy13ZWJraXQtZmxleDoxOy1tcy1mbGV4OjE7ZmxleDoxfXNwYW4uZmxhdHBpY2tyLXdlZWtkYXl7Y3Vyc29yOmRlZmF1bHQ7Zm9udC1zaXplOjkwJTtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOnJnYmEoMCwwLDAsMC41NCk7bGluZS1oZWlnaHQ6MTttYXJnaW46MDt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmJsb2NrOy13ZWJraXQtYm94LWZsZXg6MTstd2Via2l0LWZsZXg6MTstbXMtZmxleDoxO2ZsZXg6MTtmb250LXdlaWdodDpib2xkZXJ9LmRheUNvbnRhaW5lciwuZmxhdHBpY2tyLXdlZWtze3BhZGRpbmc6MXB4IDAgMCAwfS5mbGF0cGlja3ItZGF5c3twb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW47ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi13ZWJraXQtZmxleDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1hbGlnbjpzdGFydDstd2Via2l0LWFsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7LW1zLWZsZXgtYWxpZ246c3RhcnQ7YWxpZ24taXRlbXM6ZmxleC1zdGFydDt3aWR0aDozMDcuODc1cHh9LmZsYXRwaWNrci1kYXlzOmZvY3Vze291dGxpbmU6MH0uZGF5Q29udGFpbmVye3BhZGRpbmc6MDtvdXRsaW5lOjA7dGV4dC1hbGlnbjpsZWZ0O3dpZHRoOjMwNy44NzVweDttaW4td2lkdGg6MzA3Ljg3NXB4O21heC13aWR0aDozMDcuODc1cHg7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O2Rpc3BsYXk6aW5saW5lLWJsb2NrO2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi13ZWJraXQtZmxleDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1mbGV4LXdyYXA6d3JhcDtmbGV4LXdyYXA6d3JhcDstbXMtZmxleC13cmFwOndyYXA7LW1zLWZsZXgtcGFjazpqdXN0aWZ5Oy13ZWJraXQtanVzdGlmeS1jb250ZW50OnNwYWNlLWFyb3VuZDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYXJvdW5kOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApO29wYWNpdHk6MX0uZGF5Q29udGFpbmVyICsgLmRheUNvbnRhaW5lcnstd2Via2l0LWJveC1zaGFkb3c6LTFweCAwIDAgI2U2ZTZlNjtib3gtc2hhZG93Oi0xcHggMCAwICNlNmU2ZTZ9LmZsYXRwaWNrci1kYXl7YmFja2dyb3VuZDpub25lO2JvcmRlcjoxcHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJhZGl1czoxNTBweDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y29sb3I6IzM5MzkzOTtjdXJzb3I6cG9pbnRlcjtmb250LXdlaWdodDo0MDA7d2lkdGg6MTQuMjg1NzE0MyU7LXdlYmtpdC1mbGV4LWJhc2lzOjE0LjI4NTcxNDMlOy1tcy1mbGV4LXByZWZlcnJlZC1zaXplOjE0LjI4NTcxNDMlO2ZsZXgtYmFzaXM6MTQuMjg1NzE0MyU7bWF4LXdpZHRoOjM5cHg7aGVpZ2h0OjM5cHg7bGluZS1oZWlnaHQ6MzlweDttYXJnaW46MDtkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTstd2Via2l0LWJveC1wYWNrOmNlbnRlcjstd2Via2l0LWp1c3RpZnktY29udGVudDpjZW50ZXI7LW1zLWZsZXgtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjt0ZXh0LWFsaWduOmNlbnRlcn0uZmxhdHBpY2tyLWRheS5pblJhbmdlLC5mbGF0cGlja3ItZGF5LnByZXZNb250aERheS5pblJhbmdlLC5mbGF0cGlja3ItZGF5Lm5leHRNb250aERheS5pblJhbmdlLC5mbGF0cGlja3ItZGF5LnRvZGF5LmluUmFuZ2UsLmZsYXRwaWNrci1kYXkucHJldk1vbnRoRGF5LnRvZGF5LmluUmFuZ2UsLmZsYXRwaWNrci1kYXkubmV4dE1vbnRoRGF5LnRvZGF5LmluUmFuZ2UsLmZsYXRwaWNrci1kYXk6aG92ZXIsLmZsYXRwaWNrci1kYXkucHJldk1vbnRoRGF5OmhvdmVyLC5mbGF0cGlja3ItZGF5Lm5leHRNb250aERheTpob3ZlciwuZmxhdHBpY2tyLWRheTpmb2N1cywuZmxhdHBpY2tyLWRheS5wcmV2TW9udGhEYXk6Zm9jdXMsLmZsYXRwaWNrci1kYXkubmV4dE1vbnRoRGF5OmZvY3Vze2N1cnNvcjpwb2ludGVyO291dGxpbmU6MDtiYWNrZ3JvdW5kOiNlNmU2ZTY7Ym9yZGVyLWNvbG9yOiNlNmU2ZTZ9LmZsYXRwaWNrci1kYXkudG9kYXl7Ym9yZGVyLWNvbG9yOiM5NTllYTl9LmZsYXRwaWNrci1kYXkudG9kYXk6aG92ZXIsLmZsYXRwaWNrci1kYXkudG9kYXk6Zm9jdXN7Ym9yZGVyLWNvbG9yOiM5NTllYTk7YmFja2dyb3VuZDojOTU5ZWE5O2NvbG9yOiNmZmZ9LmZsYXRwaWNrci1kYXkuc2VsZWN0ZWQsLmZsYXRwaWNrci1kYXkuc3RhcnRSYW5nZSwuZmxhdHBpY2tyLWRheS5lbmRSYW5nZSwuZmxhdHBpY2tyLWRheS5zZWxlY3RlZC5pblJhbmdlLC5mbGF0cGlja3ItZGF5LnN0YXJ0UmFuZ2UuaW5SYW5nZSwuZmxhdHBpY2tyLWRheS5lbmRSYW5nZS5pblJhbmdlLC5mbGF0cGlja3ItZGF5LnNlbGVjdGVkOmZvY3VzLC5mbGF0cGlja3ItZGF5LnN0YXJ0UmFuZ2U6Zm9jdXMsLmZsYXRwaWNrci1kYXkuZW5kUmFuZ2U6Zm9jdXMsLmZsYXRwaWNrci1kYXkuc2VsZWN0ZWQ6aG92ZXIsLmZsYXRwaWNrci1kYXkuc3RhcnRSYW5nZTpob3ZlciwuZmxhdHBpY2tyLWRheS5lbmRSYW5nZTpob3ZlciwuZmxhdHBpY2tyLWRheS5zZWxlY3RlZC5wcmV2TW9udGhEYXksLmZsYXRwaWNrci1kYXkuc3RhcnRSYW5nZS5wcmV2TW9udGhEYXksLmZsYXRwaWNrci1kYXkuZW5kUmFuZ2UucHJldk1vbnRoRGF5LC5mbGF0cGlja3ItZGF5LnNlbGVjdGVkLm5leHRNb250aERheSwuZmxhdHBpY2tyLWRheS5zdGFydFJhbmdlLm5leHRNb250aERheSwuZmxhdHBpY2tyLWRheS5lbmRSYW5nZS5uZXh0TW9udGhEYXl7YmFja2dyb3VuZDojNTY5ZmY3Oy13ZWJraXQtYm94LXNoYWRvdzpub25lO2JveC1zaGFkb3c6bm9uZTtjb2xvcjojZmZmO2JvcmRlci1jb2xvcjojNTY5ZmY3fS5mbGF0cGlja3ItZGF5LnNlbGVjdGVkLnN0YXJ0UmFuZ2UsLmZsYXRwaWNrci1kYXkuc3RhcnRSYW5nZS5zdGFydFJhbmdlLC5mbGF0cGlja3ItZGF5LmVuZFJhbmdlLnN0YXJ0UmFuZ2V7Ym9yZGVyLXJhZGl1czo1MHB4IDAgMCA1MHB4fS5mbGF0cGlja3ItZGF5LnNlbGVjdGVkLmVuZFJhbmdlLC5mbGF0cGlja3ItZGF5LnN0YXJ0UmFuZ2UuZW5kUmFuZ2UsLmZsYXRwaWNrci1kYXkuZW5kUmFuZ2UuZW5kUmFuZ2V7Ym9yZGVyLXJhZGl1czowIDUwcHggNTBweCAwfS5mbGF0cGlja3ItZGF5LnNlbGVjdGVkLnN0YXJ0UmFuZ2UgKyAuZW5kUmFuZ2U6bm90KDpudGgtY2hpbGQoN24rMSkpLC5mbGF0cGlja3ItZGF5LnN0YXJ0UmFuZ2Uuc3RhcnRSYW5nZSArIC5lbmRSYW5nZTpub3QoOm50aC1jaGlsZCg3bisxKSksLmZsYXRwaWNrci1kYXkuZW5kUmFuZ2Uuc3RhcnRSYW5nZSArIC5lbmRSYW5nZTpub3QoOm50aC1jaGlsZCg3bisxKSl7LXdlYmtpdC1ib3gtc2hhZG93Oi0xMHB4IDAgMCAjNTY5ZmY3O2JveC1zaGFkb3c6LTEwcHggMCAwICM1NjlmZjd9LmZsYXRwaWNrci1kYXkuc2VsZWN0ZWQuc3RhcnRSYW5nZS5lbmRSYW5nZSwuZmxhdHBpY2tyLWRheS5zdGFydFJhbmdlLnN0YXJ0UmFuZ2UuZW5kUmFuZ2UsLmZsYXRwaWNrci1kYXkuZW5kUmFuZ2Uuc3RhcnRSYW5nZS5lbmRSYW5nZXtib3JkZXItcmFkaXVzOjUwcHh9LmZsYXRwaWNrci1kYXkuaW5SYW5nZXtib3JkZXItcmFkaXVzOjA7LXdlYmtpdC1ib3gtc2hhZG93Oi01cHggMCAwICNlNmU2ZTYsNXB4IDAgMCAjZTZlNmU2O2JveC1zaGFkb3c6LTVweCAwIDAgI2U2ZTZlNiw1cHggMCAwICNlNmU2ZTZ9LmZsYXRwaWNrci1kYXkuZmxhdHBpY2tyLWRpc2FibGVkLC5mbGF0cGlja3ItZGF5LmZsYXRwaWNrci1kaXNhYmxlZDpob3ZlciwuZmxhdHBpY2tyLWRheS5wcmV2TW9udGhEYXksLmZsYXRwaWNrci1kYXkubmV4dE1vbnRoRGF5LC5mbGF0cGlja3ItZGF5Lm5vdEFsbG93ZWQsLmZsYXRwaWNrci1kYXkubm90QWxsb3dlZC5wcmV2TW9udGhEYXksLmZsYXRwaWNrci1kYXkubm90QWxsb3dlZC5uZXh0TW9udGhEYXl7Y29sb3I6cmdiYSg1Nyw1Nyw1NywwLjMpO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O2N1cnNvcjpkZWZhdWx0fS5mbGF0cGlja3ItZGF5LmZsYXRwaWNrci1kaXNhYmxlZCwuZmxhdHBpY2tyLWRheS5mbGF0cGlja3ItZGlzYWJsZWQ6aG92ZXJ7Y3Vyc29yOm5vdC1hbGxvd2VkO2NvbG9yOnJnYmEoNTcsNTcsNTcsMC4xKX0uZmxhdHBpY2tyLWRheS53ZWVrLnNlbGVjdGVke2JvcmRlci1yYWRpdXM6MDstd2Via2l0LWJveC1zaGFkb3c6LTVweCAwIDAgIzU2OWZmNyw1cHggMCAwICM1NjlmZjc7Ym94LXNoYWRvdzotNXB4IDAgMCAjNTY5ZmY3LDVweCAwIDAgIzU2OWZmN30uZmxhdHBpY2tyLWRheS5oaWRkZW57dmlzaWJpbGl0eTpoaWRkZW59LnJhbmdlTW9kZSAuZmxhdHBpY2tyLWRheXttYXJnaW4tdG9wOjFweH0uZmxhdHBpY2tyLXdlZWt3cmFwcGVye2Zsb2F0OmxlZnR9LmZsYXRwaWNrci13ZWVrd3JhcHBlciAuZmxhdHBpY2tyLXdlZWtze3BhZGRpbmc6MCAxMnB4Oy13ZWJraXQtYm94LXNoYWRvdzoxcHggMCAwICNlNmU2ZTY7Ym94LXNoYWRvdzoxcHggMCAwICNlNmU2ZTZ9LmZsYXRwaWNrci13ZWVrd3JhcHBlciAuZmxhdHBpY2tyLXdlZWtkYXl7ZmxvYXQ6bm9uZTt3aWR0aDoxMDAlO2xpbmUtaGVpZ2h0OjI4cHh9LmZsYXRwaWNrci13ZWVrd3JhcHBlciBzcGFuLmZsYXRwaWNrci1kYXksLmZsYXRwaWNrci13ZWVrd3JhcHBlciBzcGFuLmZsYXRwaWNrci1kYXk6aG92ZXJ7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO21heC13aWR0aDpub25lO2NvbG9yOnJnYmEoNTcsNTcsNTcsMC4zKTtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2N1cnNvcjpkZWZhdWx0O2JvcmRlcjpub25lfS5mbGF0cGlja3ItaW5uZXJDb250YWluZXJ7ZGlzcGxheTpibG9jaztkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LXdlYmtpdC1mbGV4O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtvdmVyZmxvdzpoaWRkZW59LmZsYXRwaWNrci1yQ29udGFpbmVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO3BhZGRpbmc6MDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3h9LmZsYXRwaWNrci10aW1le3RleHQtYWxpZ246Y2VudGVyO291dGxpbmU6MDtkaXNwbGF5OmJsb2NrO2hlaWdodDowO2xpbmUtaGVpZ2h0OjQwcHg7bWF4LWhlaWdodDo0MHB4Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtvdmVyZmxvdzpoaWRkZW47ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi13ZWJraXQtZmxleDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleH0uZmxhdHBpY2tyLXRpbWU6YWZ0ZXJ7Y29udGVudDoiIjtkaXNwbGF5OnRhYmxlO2NsZWFyOmJvdGh9LmZsYXRwaWNrci10aW1lIC5udW1JbnB1dFdyYXBwZXJ7LXdlYmtpdC1ib3gtZmxleDoxOy13ZWJraXQtZmxleDoxOy1tcy1mbGV4OjE7ZmxleDoxO3dpZHRoOjQwJTtoZWlnaHQ6NDBweDtmbG9hdDpsZWZ0fS5mbGF0cGlja3ItdGltZSAubnVtSW5wdXRXcmFwcGVyIHNwYW4uYXJyb3dVcDphZnRlcntib3JkZXItYm90dG9tLWNvbG9yOiMzOTM5Mzl9LmZsYXRwaWNrci10aW1lIC5udW1JbnB1dFdyYXBwZXIgc3Bhbi5hcnJvd0Rvd246YWZ0ZXJ7Ym9yZGVyLXRvcC1jb2xvcjojMzkzOTM5fS5mbGF0cGlja3ItdGltZS5oYXNTZWNvbmRzIC5udW1JbnB1dFdyYXBwZXJ7d2lkdGg6MjYlfS5mbGF0cGlja3ItdGltZS50aW1lMjRociAubnVtSW5wdXRXcmFwcGVye3dpZHRoOjQ5JX0uZmxhdHBpY2tyLXRpbWUgaW5wdXR7YmFja2dyb3VuZDp0cmFuc3BhcmVudDstd2Via2l0LWJveC1zaGFkb3c6bm9uZTtib3gtc2hhZG93Om5vbmU7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czowO3RleHQtYWxpZ246Y2VudGVyO21hcmdpbjowO3BhZGRpbmc6MDtoZWlnaHQ6aW5oZXJpdDtsaW5lLWhlaWdodDppbmhlcml0O2NvbG9yOiMzOTM5Mzk7Zm9udC1zaXplOjAuODc1cmVtIDtwb3NpdGlvbjpyZWxhdGl2ZTstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC1hcHBlYXJhbmNlOnRleHRmaWVsZDstbW96LWFwcGVhcmFuY2U6dGV4dGZpZWxkO2FwcGVhcmFuY2U6dGV4dGZpZWxkfS5mbGF0cGlja3ItdGltZSBpbnB1dC5mbGF0cGlja3ItaG91cntmb250LXdlaWdodDpib2xkfS5mbGF0cGlja3ItdGltZSBpbnB1dC5mbGF0cGlja3ItbWludXRlLC5mbGF0cGlja3ItdGltZSBpbnB1dC5mbGF0cGlja3Itc2Vjb25ke2ZvbnQtd2VpZ2h0OjQwMH0uZmxhdHBpY2tyLXRpbWUgaW5wdXQ6Zm9jdXN7b3V0bGluZTowO2JvcmRlcjowfS5mbGF0cGlja3ItdGltZSAuZmxhdHBpY2tyLXRpbWUtc2VwYXJhdG9yLC5mbGF0cGlja3ItdGltZSAuZmxhdHBpY2tyLWFtLXBte2hlaWdodDppbmhlcml0O2Zsb2F0OmxlZnQ7bGluZS1oZWlnaHQ6aW5oZXJpdDtjb2xvcjojMzkzOTM5O2ZvbnQtd2VpZ2h0OmJvbGQ7d2lkdGg6MiU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lOy13ZWJraXQtYWxpZ24tc2VsZjpjZW50ZXI7LW1zLWZsZXgtaXRlbS1hbGlnbjpjZW50ZXI7YWxpZ24tc2VsZjpjZW50ZXJ9LmZsYXRwaWNrci10aW1lIC5mbGF0cGlja3ItYW0tcG17b3V0bGluZTowO3dpZHRoOjE4JTtjdXJzb3I6cG9pbnRlcjt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXdlaWdodDo0MDB9LmZsYXRwaWNrci10aW1lIGlucHV0OmhvdmVyLC5mbGF0cGlja3ItdGltZSAuZmxhdHBpY2tyLWFtLXBtOmhvdmVyLC5mbGF0cGlja3ItdGltZSBpbnB1dDpmb2N1cywuZmxhdHBpY2tyLXRpbWUgLmZsYXRwaWNrci1hbS1wbTpmb2N1c3tiYWNrZ3JvdW5kOiNlZWV9LmZsYXRwaWNrci1pbnB1dFtyZWFkb25seV17Y3Vyc29yOnBvaW50ZXJ9QC13ZWJraXQta2V5ZnJhbWVzIGZwRmFkZUluRG93bntmcm9te29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLC0yMHB4LDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLC0yMHB4LDApfXRve29wYWNpdHk6MTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMCwwKX19QGtleWZyYW1lcyBmcEZhZGVJbkRvd257ZnJvbXtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtMjBweCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtMjBweCwwKX10b3tvcGFjaXR5OjE7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCl9fQovKiogL2Nzcy9pbmxpbmUuZnIubmV3Y2Fycy5jc3MgKiovCmJ1dHRvbiNvbmV0cnVzdC1hY2NlcHQtYnRuLWhhbmRsZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiMwYjUzOTQgIWltcG9ydGFudDsgY29sb3I6I2ZmZmZmZiAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6I2ZmZmZmZiAhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOjNweCAhaW1wb3J0YW50OyB9IGJ1dHRvbiNvbmV0cnVzdC1yZWplY3QtYWxsLWhhbmRsZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiMwYjUzOTQgIWltcG9ydGFudDsgY29sb3I6IzBiNTM5NCAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6IzBiNTM5NCAhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOjNweCAhaW1wb3J0YW50OyB9IGJ1dHRvbiNvbmV0cnVzdC1wYy1idG4taGFuZGxlciB7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZiAhaW1wb3J0YW50OyBjb2xvcjojNjk2OTY5ICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjojOTA5MDkwICFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6M3B4ICFpbXBvcnRhbnQ7IH0gYnV0dG9uLnNhdmUtcHJlZmVyZW5jZS1idG4taGFuZGxlci5vbmV0cnVzdC1jbG9zZS1idG4taGFuZGxlciB7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZiAhaW1wb3J0YW50OyBjb2xvcjojMGI1Mzk0ICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjojMGI1Mzk0ICFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6M3B4ICFpbXBvcnRhbnQ7IH0gYnV0dG9uLm90LXBjLXJlZnVzZS1hbGwtaGFuZGxlciB7IGJhY2tncm91bmQtY29sb3I6IzBiNTM5NCAhaW1wb3J0YW50OyBjb2xvcjojMGI1Mzk0ICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjojMGI1Mzk0ICFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6M3B4ICFpbXBvcnRhbnQ7IH0gYnV0dG9uI2FjY2VwdC1yZWNvbW1lbmRlZC1idG4taGFuZGxlcnsgYmFja2dyb3VuZC1jb2xvcjojMGI1Mzk0ICFpbXBvcnRhbnQ7IGNvbG9yOiNmZmZmZmYgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiNmZmZmZmYgIWltcG9ydGFudDsgZm9udC1zaXplOnNtYWxsICFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6M3B4ICFpbXBvcnRhbnQ7IH0gLm90LXBjLWxvZ28gaW1neyBjb250ZW50OnVybCgiL2ltYWdlcy9Mb2dvTW9iaWxlL2hhd2tlc2J1cnlob25kYS1sb2dvLWRhcmsud2VicCIpICFpbXBvcnRhbnQ7IH0gI29uZXRydXN0LXBjLXNkayAub3QtcGMtbG9nb3sgd2lkdGg6MzAlICFpbXBvcnRhbnQ7IGp1c3RpZnktY29udGVudDpsZWZ0ICFpbXBvcnRhbnQ7IH0gLm90LWJuci1sb2dveyBjb250ZW50OnVybCgiL2ltYWdlcy9Mb2dvTW9iaWxlL2hhd2tlc2J1cnlob25kYS1sb2dvLWRhcmsud2VicCIpICFpbXBvcnRhbnQ7IH0gI29uZXRydXN0LWJhbm5lci1zZGsub3QtYm5yLXctbG9nbyAub3QtYm5yLWxvZ297IHdpZHRoOjg1cHggIWltcG9ydGFudDsgaGVpZ2h0OmF1dG8gIWltcG9ydGFudDsgbWFyZ2luLWxlZnQ6MjVweCAhaW1wb3J0YW50OyB9ICNvbmV0cnVzdC1iYW5uZXItc2RrLm90LWJuci13LWxvZ28gI29uZXRydXN0LXBvbGljeSB7IG1hcmdpbi1sZWZ0OjExMHB4ICFpbXBvcnRhbnQ7IHBhZGRpbmctbGVmdDoyNXB4OyB9IEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDo0MjVweCl7ICNvbmV0cnVzdC1iYW5uZXItc2RrLm90LWJuci13LWxvZ28gLm90LWJuci1sb2dveyBwb3NpdGlvbjpyZWxhdGl2ZTsgbWFyZ2luOjE1cHggMCAxMHB4IDAgIWltcG9ydGFudDsgdHJhbnNmb3JtOmluaGVyaXQ7IHpvb206NDAlOyB9ICNvbmV0cnVzdC1iYW5uZXItc2RrLm90LWJuci13LWxvZ28gI29uZXRydXN0LXBvbGljeSB7IG1hcmdpbi1sZWZ0OjBweCAhaW1wb3J0YW50OyBwYWRkaW5nLWxlZnQ6MHB4OyBtYXJnaW4tdG9wOjVweDsgfSAjb25ldHJ1c3QtY29uc2VudC1zZGsgI29uZXRydXN0LXBvbGljeS10aXRsZXsgZm9udC1zaXplOjFlbSAhaW1wb3J0YW50OyB9ICNvbmV0cnVzdC1iYW5uZXItc2RrICNvbmV0cnVzdC1hY2NlcHQtYnRuLWhhbmRsZXIsICNvbmV0cnVzdC1iYW5uZXItc2RrICNvbmV0cnVzdC1yZWplY3QtYWxsLWhhbmRsZXIsICNvbmV0cnVzdC1iYW5uZXItc2RrICNvbmV0cnVzdC1wYy1idG4taGFuZGxlcnsgcGFkZGluZzoxMHB4IDEwcHg7IH0gI29uZXRydXN0LWJhbm5lci1zZGsgYnV0dG9uLCAjb25ldHJ1c3QtcGMtc2RrIGJ1dHRvbiwgI290LXNkay1jb29raWUtcG9saWN5IGJ1dHRvbnsgbWFyZ2luLWJvdHRvbTowLjVyZW07IH0gI29uZXRydXN0LXBjLXNkayBidXR0b24geyB3aWR0aDphdXRvOyB9ICNvbmV0cnVzdC1iYW5uZXItc2RrIC5vdC1zZGstY29udGFpbmVyLCAjb25ldHJ1c3QtcGMtc2RrIC5vdC1zZGstY29udGFpbmVyLCAjb3Qtc2RrLWNvb2tpZS1wb2xpY3kgLm90LXNkay1jb250YWluZXJ7IHBhZGRpbmc6NXB4IDIwcHg7IH0gI29uZXRydXN0LWJhbm5lci1zZGsgI29uZXRydXN0LXBvbGljeXsgbWFyZ2luOjA7IH0gI29uZXRydXN0LWJhbm5lci1zZGsgI29uZXRydXN0LWJ1dHRvbi1ncm91cCAjb25ldHJ1c3QtYWNjZXB0LWJ0bi1oYW5kbGVyeyBmb250LXNpemU6dmFyKC0tZnMwKTsgfSB9PC9zdHlsZT4KCiAgICAgICAKICAgICAgIDwhLS0gT086OjE1ZGJlMWVjNGJiODE5ZjNiZTlhZjBiYjkxNzMxZDlmIC0tPgogICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IsOgIHZlbmRyZSIgaWQ9InRleHRGb3JTYWxlIj4KICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJEw6l0YWlscyIgaWQ9InRleHREZXRhaWxzIj4KICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJUb3VzIiBpZD0idGV4dEFsbCI+CiAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iUHJpeCBSw6lkdWl0IiBpZD0idGV4dFJlZHVjZWQiPgogICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IlPDqWxlY3Rpb25uZXogdW5lIG1hcnF1ZSIgaWQ9InRleHRNYW51VGl0bGUiPgogICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IlZvaXIgbm9zIG1vZMOobGVzIEhvbmRhIiBpZD0idGV4dEJyYW5kVGl0bGUiPgogICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9Ik1vZMOobGVzIEhvbmRhIG5ldWZzIDIwMjUgJmFtcDsgMjAyNiIgaWQ9InRleHRNYWluVGl0bGUiPgogICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IkF1dG9zIG5ldXZlcyBIb25kYSAyMDI1ICZhbXA7IDIwMjYgw6AgeyRORVdDSVRZfSIgaWQ9InRleHRDYXJUaXRsZSI+CiAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iVlVTIG5ldWZzIEhvbmRhIDIwMjUgJmFtcDsgMjAyNiDDoCB7JE5FV0NJVFl9IiBpZD0idGV4dFNVVlRpdGxlIj4KICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJDYW1pb25zIG5ldWZzIEhvbmRhIDIwMjUgJmFtcDsgMjAyNiDDoCB7JE5FV0NJVFl9IiBpZD0idGV4dFRydWNrVGl0bGUiPgogICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9Ikh5YnJpZGVzIG5ldXZlcyBIb25kYSAyMDI1ICZhbXA7IDIwMjYgw6AgeyRORVdDSVRZfSIgaWQ9InRleHRIeWJyaWRUaXRsZSI+CiAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0ibm91dmVhdSIgaWQ9InRleHROZXciPgogICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IkhvbmRhIHskQ0xBU1NOQU1FfSAyMDI1ICZhbXA7IDIwMjYiIGlkPSJ0ZXh0Q2xhc3NWaWV3Ij4KICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJBY2N1ZWlsIiBpZD0idGV4dEhvbWUiPgogICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9Ii8iIGlkPSJ1cmlIb21lIj4KICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSIvbmV1ZnMvbm91dmVhdS5odG1sIiBpZD0idXJpTmV3Q2FycyI+CiAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iL25ldWZzLyIgaWQ9InRleHROZXdDYXJGb2xkZXIiPgogICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9Ik5vcyBtYXJxdWVzIiBpZD0idGV4dE1hbnVTZWxlY3QiPgogICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IkVuIFN0b2NrIC8gRGlzcG9uaWJsZXMiIGlkPSJpblN0b2NrTGFiZWwiPgogICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9Ii9pbWFnZXMvIiBpZD0idGV4dEJhc2VJbWFnZVBhdGgiPgogICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9Ii9wcm94eV9hdWIvIiBpZD0iYnJhbmRJbWFnZVBhdGgiPgogICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZm9yY2VUb0ZpbGxQb3B1cF9uZXciIHZhbHVlPSJub25lIj4KCSAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSIxIiBpZD0iaXNtb2JpbGUiPgogICAgICAgCQkJCTxzY3JpcHQ+CgoJCS8vZ2xvYmFsIHN0b3JlCgkJdmFyIHN0b3JlID0gbnVsbDsKCgkJY29uc3QgaW5pdFN0b3JlID0gKCkgPT4gewoKCQkJaWYodHlwZW9mIGNyZWF0ZURhdGFTdG9yZSAhPT0gJ2Z1bmN0aW9uJyl7CgkJCQlzZXRUaW1lb3V0KGluaXRTdG9yZSwgNTApOwoJCQkJcmV0dXJuOwoJCQl9CgoJCQlzdG9yZSA9IGNyZWF0ZURhdGFTdG9yZSh7ImNvbnRleHQiOnsibGFuZyI6IkZSRU5DSCIsInNob3J0TGFuZyI6ImZyIiwiaXNNb2JpbGUiOnRydWUsImNhdGVnb3J5IjoiYWxsIiwic2VjdGlvbiI6Ik5FVyIsImxvY2FsZSI6ImZyX0NBIiwiZGF0ZWZvcm1hdCI6IiVlICVCIn0sImRlYWxlckluZm8iOnsiYWRkcmVzcyI6IjQ1NSBDb3VudHkgUm9hZCAxNyIsImNpdHkiOiJIYXdrZXNidXJ5IiwicHJvdmluY2UiOiJPbnRhcmlvIiwicmVnaW9uIjoiIiwicG9zdGFsIjoiSzZBIDJSMiIsIm5hbWUiOiJIYXdrZXNidXJ5IEhvbmRhIiwiZW1haWwiOiJiY2hhcnJvbkBncm91cGVnYWduZS5jb207amNmaWxpb25AZ3JvdXBlZ2FnbmUuY29tIiwiZGVhbGVySUQiOiIxNzE3IiwiZGVhbGVyR3JvdXAiOnsiZ3JvdXBlTmFtZSI6Ikdyb3VwZSBHYWduXHUwMGU5IiwiZ3JvdXBlSUQiOiI0MTY1IiwiZGVhbGVycyI6W3siZGVhbGVySUQiOiIyNzEzIiwibmFtZSI6Ikdyb3VwZSBHYWduXHUwMGU5IE9jY2FzaW9uIiwic2l0ZUlEIjoiODg4IiwiaXNMaXZlIjoiWUVTIn0seyJkZWFsZXJJRCI6IjE3MTciLCJuYW1lIjoiSGF3a2VzYnVyeSBIb25kYSIsInNpdGVJRCI6IjE1NSIsImlzTGl2ZSI6IllFUyJ9LHsiZGVhbGVySUQiOiI2MzUiLCJuYW1lIjoiSGF3a2VzYnVyeSBLaWEiLCJzaXRlSUQiOiI4ODciLCJpc0xpdmUiOiJZRVMifSx7ImRlYWxlcklEIjoiMjY0MiIsIm5hbWUiOiJIb25kYSBMYWNodXRlIiwic2l0ZUlEIjoiNzU0IiwiaXNMaXZlIjoiWUVTIn0seyJkZWFsZXJJRCI6IjEyMjAiLCJuYW1lIjoiSG9uZGEgTm9yZCBTdWQgU3QtSlx1MDBlOXJcdTAwZjRtZSIsInNpdGVJRCI6IjEyMDgiLCJpc0xpdmUiOiJZRVMifSx7ImRlYWxlcklEIjoiMTgxOCIsIm5hbWUiOiJUb3lvdGEgTGFjaHV0ZSIsInNpdGVJRCI6IjEwMzUiLCJpc0xpdmUiOiJZRVMifSx7ImRlYWxlcklEIjoiMTAwMCIsIm5hbWUiOiJUb3lvdGEgU3RlLUFnYXRoZSIsInNpdGVJRCI6IjE2MiIsImlzTGl2ZSI6IllFUyJ9XX0sImZheCI6IiIsInBob25lIjoiNjEzLTYzMi01MjIyIiwibGF0aXR1ZGUiOiI0NS41ODkyOTQyMDAwIiwibG9uZ2l0dWRlIjoiLTc0LjU5MjYxNDQwMDAiLCJwcm92aW5jZV9jb2RlIjoiT04iLCJkZXRhaWxfcHJpeCI6IiIsImRldGFpbF9wcml4X2FuIjoiIiwiZGV0YWlsX3ByaXhfdXNlZCI6bnVsbCwiZGV0YWlsX3ByaXhfdXNlZF9hbiI6bnVsbCwib2VtRGVhbGVyQ29kZSI6IjY3MjAiLCJwcmljZV9kaXNjbGFpbWVyX3ByZWZlcmVuY2UiOiIwIiwicHJpY2VfZGlzY2xhaW1lcl9wcmVmZXJlbmNlX3VzZWQiOiIwIiwiZ21CQUMiOiIiLCJwbGFjZUlkIjoiQ2hJSkVaT0QyT2Jvemt3Uk10VW1PaVlZVjgwIn0sImlzVk0iOmZhbHNlLCJmaWVsZHMiOnsiU0hPV1JPT01fSU1BR0VfU09VUkNFX1RZUEUiOiJjaHJvbWUiLCJORVdfSU5WX0lNQUdFX1NPVVJDRV9UWVBFIjoiY2hyb21lIn0sImkxOG4iOnsiV0VCX1NJVEVfR0VORVJBVE9SX1BBR0VfTkVXSU5WIjoiXC9uZXVmc1wvaW52ZW50YWlyZVwvcmVjaGVyY2hlLmh0bWwiLCJQQVlNRU5UUyI6IlBhaWVtZW50cyIsIkRFRkFVTFRfUEFZTUVOVF9DQVNIIjoiQ29tcHRhbnQiLCJMQUJFTF9CRUZPUkVfVEFYRVMiOiJBdmFudCB0YXhlcyIsIkxBQkVMX1NBVkVfQlVJTERfVElUTEUiOiJFbnJlZ2lzdHJlciB2b3RyZSBjb25maWd1cmF0aW9uISIsIldFQlNJVEVfT0VNRFJfTE9BRF9CVUlMRF9UT09MVElQIjoiUmVzdGF1cmV6IHVuZSBjb25maWd1cmF0aW9uIHByXHUwMGU5Y1x1MDBlOWRlbW1lbnQgZW5yZWdpc3RyXHUwMGU5ZSBlbiBzYWlzaXNzYW50IHZvdHJlIGFkcmVzc2UgZS1tYWlsIG91IHZvdHJlIG51bVx1MDBlOXJvIGRlIHRcdTAwZTlsXHUwMGU5cGhvbmUuIiwiV0VCU0lURV9PRU1EUl9MT0FEX0JVSUxEX0VNQUlMX1BIT05FIjoiV0VCU0lURV9PRU1EUl9MT0FEX0JVSUxEX0VNQUlMX1BIT05FIiwiV0VCU0lURV9PRU1EUl9MT0FEX0JVSUxEX0VNQUlMX1BIT05FX0VSUk9SIjoiV0VCU0lURV9PRU1EUl9MT0FEX0JVSUxEX0VNQUlMX1BIT05FX0VSUk9SIiwiV0VCU0lURV9PRU1EUl9MT0FEX0JVSUxEX0VSUk9SIjoiV0VCU0lURV9PRU1EUl9MT0FEX0JVSUxEX0VSUk9SIiwiV0VCU0lURV9PRU1EUl9MT0FEX0JVSUxEX1JFRElSRUNUSU5HIjoiV0VCU0lURV9PRU1EUl9MT0FEX0JVSUxEX1JFRElSRUNUSU5HIiwiV0VCU0lURV9PRU1EUl9MT0FEX0JVSUxEX0xJU1RfRVJST1IiOiJXRUJTSVRFX09FTURSX0xPQURfQlVJTERfTElTVF9FUlJPUiIsIldFQlNJVEVfT0VNRFJfTE9BRF9CVUlMRF9JTlZBTElEX1RPS0VOIjoiV0VCU0lURV9PRU1EUl9MT0FEX0JVSUxEX0lOVkFMSURfVE9LRU4iLCJXRUJTSVRFX09FTURSX0xPQURfQlVJTERfTElTVCI6IldFQlNJVEVfT0VNRFJfTE9BRF9CVUlMRF9MSVNUIiwiV0VCU0lURV9PRU1EUl9MT0FEX0JVSUxEX0xJU1RfU0VMRUNUIjoiV0VCU0lURV9PRU1EUl9MT0FEX0JVSUxEX0xJU1RfU0VMRUNUIiwiV0VCU0lURV9PRU1EUl9MT0FEX0JVSUxEX0xJU1RfRkFJTEVEIjoiV0VCU0lURV9PRU1EUl9MT0FEX0JVSUxEX0xJU1RfRkFJTEVEIiwiV0VCU0lURV9PRU1EUl9NRkFfU0VORF9DT0RFIjoiV0VCU0lURV9PRU1EUl9NRkFfU0VORF9DT0RFIiwiV0VCU0lURV9PRU1EUl9NRkFfU1RBUlRfRVJST1IiOiJXRUJTSVRFX09FTURSX01GQV9TVEFSVF9FUlJPUiIsIldFQlNJVEVfT0VNRFJfTUZBX0VOVEVSX0NPREUiOiJXRUJTSVRFX09FTURSX01GQV9FTlRFUl9DT0RFIiwiV0VCU0lURV9PRU1EUl9NRkFfRU5URVJfQ09ERV9FUlJPUiI6IldFQlNJVEVfT0VNRFJfTUZBX0VOVEVSX0NPREVfRVJST1IiLCJXRUJTSVRFX09FTURSX01GQV9WRVJJRllfQ09ERSI6IldFQlNJVEVfT0VNRFJfTUZBX1ZFUklGWV9DT0RFIiwiV0VCU0lURV9PRU1EUl9NRkFfRVhQSVJFRF9DT0RFIjoiV0VCU0lURV9PRU1EUl9NRkFfRVhQSVJFRF9DT0RFIiwiV0VCU0lURV9PRU1EUl9NRkFfVkVSSUZZX0ZBSUxFRCI6IldFQlNJVEVfT0VNRFJfTUZBX1ZFUklGWV9GQUlMRUQiLCJXRUJTSVRFX09FTURSX1NBVkVfQlVJTERfVVBEQVRJTkciOiJXRUJTSVRFX09FTURSX1NBVkVfQlVJTERfVVBEQVRJTkciLCJXRUJTSVRFX09FTURSX1NBVkVfQlVJTERfVVBEQVRFX1NVQ0NFU1MiOiJXRUJTSVRFX09FTURSX1NBVkVfQlVJTERfVVBEQVRFX1NVQ0NFU1MiLCJXRUJTSVRFX09FTURSX1NBVkVfQlVJTERfVVBEQVRFX0VSUk9SIjoiV0VCU0lURV9PRU1EUl9TQVZFX0JVSUxEX1VQREFURV9FUlJPUiIsIldFQlNJVEVfT0VNRFJfU0FWRV9CVUlMRF9TQVZJTkciOiJXRUJTSVRFX09FTURSX1NBVkVfQlVJTERfU0FWSU5HIiwiV0VCU0lURV9PRU1EUl9TQVZFX0JVSUxEX1NBVkVfU1VDQ0VTUyI6IldFQlNJVEVfT0VNRFJfU0FWRV9CVUlMRF9TQVZFX1NVQ0NFU1MiLCJXRUJTSVRFX09FTURSX1NBVkVfQlVJTERfU0FWRV9FUlJPUiI6IldFQlNJVEVfT0VNRFJfU0FWRV9CVUlMRF9TQVZFX0VSUk9SIiwiV0VCU0lURV9PRU1EUl9CVE5fTE9BRCI6IldFQlNJVEVfT0VNRFJfQlROX0xPQUQiLCJXRUJTSVRFX09FTURSX0JUTl9WRVJJRlkiOiJXRUJTSVRFX09FTURSX0JUTl9WRVJJRlkiLCJXRUJTSVRFX09FTURSX0JUTl9SRVNFTkRfQ09ERSI6IldFQlNJVEVfT0VNRFJfQlROX1JFU0VORF9DT0RFIiwiV0VCU0lURV9PRU1EUl9NRkFfVkVSSUZJQ0FUSU9OX0NPREUiOiJXRUJTSVRFX09FTURSX01GQV9WRVJJRklDQVRJT05fQ09ERSIsIldFQlNJVEVfT0VNRFJfU0FWRV9CVUlMRF9NT0RBTF9USVRMRSI6IldFQlNJVEVfT0VNRFJfU0FWRV9CVUlMRF9NT0RBTF9USVRMRSJ9LCJzaG93T2VtSW1hZ2VzIjpmYWxzZX0pOwoJCX07CgoJCWluaXRTdG9yZSgpOwoKCTwvc2NyaXB0PgoJCQkJCQk8c3ZnIGFyaWEtaGlkZGVuPSJ0cnVlIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB3aWR0aDogMDsgaGVpZ2h0OiAwOyBvdmVyZmxvdzogaGlkZGVuOyIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KCQkJCQk8c3ltYm9sIGlkPSJpY29uLWNoZXZyb24tcmlnaHQiIHZpZXdib3g9IjAgMCAzMjAgNTEyIj4KCQk8cGF0aCBkPSJNMjg1LjQ3NiAyNzIuOTcxTDkxLjEzMiA0NjcuMzE0Yy05LjM3MyA5LjM3My0yNC41NjkgOS4zNzMtMzMuOTQxIDBsLTIyLjY2Ny0yMi42NjdjLTkuMzU3LTkuMzU3LTkuMzc1LTI0LjUyMi0uMDQtMzMuOTAxTDE4OC41MDUgMjU2IDM0LjQ4NCAxMDEuMjU1Yy05LjMzNS05LjM3OS05LjMxNy0yNC41NDQuMDQtMzMuOTAxbDIyLjY2Ny0yMi42NjdjOS4zNzMtOS4zNzMgMjQuNTY5LTkuMzczIDMzLjk0MSAwTDI4NS40NzUgMjM5LjAzYzkuMzczIDkuMzcyIDkuMzczIDI0LjU2OC4wMDEgMzMuOTQxeiI+PC9wYXRoPgoJPC9zeW1ib2w+CTxzeW1ib2wgaWQ9Imljb24tY2hldnJvbi1kb3duIiB2aWV3Ym94PSIwIDAgNDQ4IDUxMiI+CgkJPHBhdGggZD0iTTIwNy4wMjkgMzgxLjQ3NkwxMi42ODYgMTg3LjEzMmMtOS4zNzMtOS4zNzMtOS4zNzMtMjQuNTY5IDAtMzMuOTQxbDIyLjY2Ny0yMi42NjdjOS4zNTctOS4zNTcgMjQuNTIyLTkuMzc1IDMzLjkwMS0uMDRMMjI0IDI4NC41MDVsMTU0Ljc0NS0xNTQuMDIxYzkuMzc5LTkuMzM1IDI0LjU0NC05LjMxNyAzMy45MDEuMDRsMjIuNjY3IDIyLjY2N2M5LjM3MyA5LjM3MyA5LjM3MyAyNC41NjkgMCAzMy45NDFMMjQwLjk3MSAzODEuNDc2Yy05LjM3MyA5LjM3Mi0yNC41NjkgOS4zNzItMzMuOTQyIDB6Ij48L3BhdGg+Cgk8L3N5bWJvbD4JPHN5bWJvbCBpZD0iaWNvbi1zdGVlcmluZy13aGVlbCIgdmlld2JveD0iMCAwIDUxMiA1MTIiPgoJCTxwYXRoIGQ9Ik0wIDI1NkMwIDExNC42IDExNC42IDAgMjU2IDBDMzk3LjQgMCA1MTIgMTE0LjYgNTEyIDI1NkM1MTIgMzk3LjQgMzk3LjQgNTEyIDI1NiA1MTJDMTE0LjYgNTEyIDAgMzk3LjQgMCAyNTZ6TTE2OC45IDI4OEg2Ni42NUM4MC4xNCAzNjguNCAxNDMuNiA0MzEuOSAyMjQgNDQ1LjNWMzU4LjlMMTY4LjkgMjg4ek0yODggMzU4LjlWNDQ1LjNDMzY4LjQgNDMxLjkgNDMxLjkgMzY4LjQgNDQ1LjMgMjg4SDM0My4xTDI4OCAzNTguOXpNMzUyIDIyNEg0NDUuM0M0MzAuMSAxMzMuMiAzNTEuMSA2NCAyNTYgNjRDMTYwLjkgNjQgODEuODkgMTMzLjIgNjYuNjUgMjI0SDE2MEwxNjcuMiAyMDkuN0MxNzIuNiAxOTguOCAxODMuNyAxOTIgMTk1LjggMTkySDMxNi4yQzMyOC4zIDE5MiAzMzkuNCAxOTguOCAzNDQuOCAyMDkuN0wzNTIgMjI0eiI+PC9wYXRoPgoJPC9zeW1ib2w+CTxzeW1ib2wgaWQ9Imljb24tY2FyIiB2aWV3Ym94PSIwIDAgNTEyIDUxMiI+CgkJPHBhdGggZD0iTTQ5OS45OSAxNzZoLTU5Ljg3bC0xNi42NC00MS42QzQwNi4zOCA5MS42MyAzNjUuNTcgNjQgMzE5LjUgNjRoLTEyN2MtNDYuMDYgMC04Ni44OCAyNy42My0xMDMuOTkgNzAuNEw3MS44NyAxNzZIMTIuMDFDNC4yIDE3Ni0xLjUzIDE4My4zNC4zNyAxOTAuOTFsNiAyNEM3LjcgMjIwLjI1IDEyLjUgMjI0IDE4LjAxIDIyNGgyMC4wN0MyNC42NSAyMzUuNzMgMTYgMjUyLjc4IDE2IDI3MnY0OGMwIDE2LjEyIDYuMTYgMzAuNjcgMTYgNDEuOTNWNDE2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtMzJoMjU2djMyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtNTQuMDdjOS44NC0xMS4yNSAxNi0yNS44IDE2LTQxLjkzdi00OGMwLTE5LjIyLTguNjUtMzYuMjctMjIuMDctNDhINDk0YzUuNTEgMCAxMC4zMS0zLjc1IDExLjY0LTkuMDlsNi0yNGMxLjg5LTcuNTctMy44NC0xNC45MS0xMS42NS0xNC45MXptLTM1Mi4wNi0xNy44M2M3LjI5LTE4LjIyIDI0Ljk0LTMwLjE3IDQ0LjU3LTMwLjE3aDEyN2MxOS42MyAwIDM3LjI4IDExLjk1IDQ0LjU3IDMwLjE3TDM4NCAyMDhIMTI4bDE5LjkzLTQ5Ljgzek05NiAzMTkuOGMtMTkuMiAwLTMyLTEyLjc2LTMyLTMxLjlTNzYuOCAyNTYgOTYgMjU2czQ4IDI4LjcxIDQ4IDQ3Ljg1LTI4LjggMTUuOTUtNDggMTUuOTV6bTMyMCAwYy0xOS4yIDAtNDggMy4xOS00OC0xNS45NVMzOTYuOCAyNTYgNDE2IDI1NnMzMiAxMi43NiAzMiAzMS45LTEyLjggMzEuOS0zMiAzMS45eiI+PC9wYXRoPgoJPC9zeW1ib2w+CTxzeW1ib2wgaWQ9Imljb24tdGFnIiB2aWV3Ym94PSIwIDAgNTEyIDUxMiI+CgkJPHBhdGggZD0iTTAgMjUyLjExOFY0OEMwIDIxLjQ5IDIxLjQ5IDAgNDggMGgyMDQuMTE4YTQ4IDQ4IDAgMCAxIDMzLjk0MSAxNC4wNTlsMjExLjg4MiAyMTEuODgyYzE4Ljc0NSAxOC43NDUgMTguNzQ1IDQ5LjEzNyAwIDY3Ljg4MkwyOTMuODIzIDQ5Ny45NDFjLTE4Ljc0NSAxOC43NDUtNDkuMTM3IDE4Ljc0NS02Ny44ODIgMEwxNC4wNTkgMjg2LjA1OUE0OCA0OCAwIDAgMSAwIDI1Mi4xMTh6TTExMiA2NGMtMjYuNTEgMC00OCAyMS40OS00OCA0OHMyMS40OSA0OCA0OCA0OCA0OC0yMS40OSA0OC00OC0yMS40OS00OC00OC00OHoiPjwvcGF0aD4KCTwvc3ltYm9sPgk8c3ltYm9sIGlkPSJpY29uLWhhbmQtaG9sZGluZy11c2QiIHZpZXdib3g9IjAgMCA1NzYgNTEyIj4KCQk8cGF0aCBkPSJNMjcxLjA2LDE0NC4zbDU0LjI3LDE0LjNhOC41OSw4LjU5LDAsMCwxLDYuNjMsOC4xYzAsNC42LTQuMDksOC40LTkuMTIsOC40aC0zNS42YTMwLDMwLDAsMCwxLTExLjE5LTIuMmMtNS4yNC0yLjItMTEuMjgtMS43LTE1LjMsMmwtMTksMTcuNWExMS42OCwxMS42OCwwLDAsMC0yLjI1LDIuNjYsMTEuNDIsMTEuNDIsMCwwLDAsMy44OCwxNS43NCw4My43Nyw4My43NywwLDAsMCwzNC41MSwxMS41VjI0MGMwLDguOCw3LjgzLDE2LDE3LjM3LDE2aDE3LjM3YzkuNTUsMCwxNy4zOC03LjIsMTcuMzgtMTZWMjIyLjRjMzIuOTMtMy42LDU3Ljg0LTMxLDUzLjUtNjMtMy4xNS0yMy0yMi40Ni00MS4zLTQ2LjU2LTQ3LjdMMjgyLjY4LDk3LjRhOC41OSw4LjU5LDAsMCwxLTYuNjMtOC4xYzAtNC42LDQuMDktOC40LDkuMTItOC40aDM1LjZBMzAsMzAsMCwwLDEsMzMyLDgzLjFjNS4yMywyLjIsMTEuMjgsMS43LDE1LjMtMmwxOS0xNy41QTExLjMxLDExLjMxLDAsMCwwLDM2OC40Nyw2MWExMS40MywxMS40MywwLDAsMC0zLjg0LTE1Ljc4LDgzLjgyLDgzLjgyLDAsMCwwLTM0LjUyLTExLjVWMTZjMC04LjgtNy44Mi0xNi0xNy4zNy0xNkgyOTUuMzdDMjg1LjgyLDAsMjc4LDcuMiwyNzgsMTZWMzMuNmMtMzIuODksMy42LTU3Ljg1LDMxLTUzLjUxLDYzQzIyNy42MywxMTkuNiwyNDcsMTM3LjksMjcxLjA2LDE0NC4zWk01NjUuMjcsMzI4LjFjLTExLjgtMTAuNy0zMC4yLTEwLTQyLjYsMEw0MzAuMjcsNDAyYTYzLjY0LDYzLjY0LDAsMCwxLTQwLDE0SDI3MmExNiwxNiwwLDAsMSwwLTMyaDc4LjI5YzE1LjksMCwzMC43MS0xMC45LDMzLjI1LTI2LjZhMzEuMiwzMS4yLDAsMCwwLC40Ni01LjQ2QTMyLDMyLDAsMCwwLDM1MiwzMjBIMTkyYTExNy42NiwxMTcuNjYsMCwwLDAtNzQuMSwyNi4yOUw3MS40LDM4NEgxNkExNiwxNiwwLDAsMCwwLDQwMHY5NmExNiwxNiwwLDAsMCwxNiwxNkgzNzIuNzdhNjQsNjQsMCwwLDAsNDAtMTRMNTY0LDM3N2EzMiwzMiwwLDAsMCwxLjI4LTQ4LjlaIj48L3BhdGg+Cgk8L3N5bWJvbD4JPHN5bWJvbCBpZD0iaWNvbi10b29scyIgdmlld2JveD0iMCAwIDUxMiA1MTIiPgoJCTxwYXRoIGQ9Ik01MDEuMSAzOTUuN0wzODQgMjc4LjZjLTIzLjEtMjMuMS01Ny42LTI3LjYtODUuNC0xMy45TDE5MiAxNTguMVY5Nkw2NCAwIDAgNjRsOTYgMTI4aDYyLjFsMTA2LjYgMTA2LjZjLTEzLjYgMjcuOC05LjIgNjIuMyAxMy45IDg1LjRsMTE3LjEgMTE3LjFjMTQuNiAxNC42IDM4LjIgMTQuNiA1Mi43IDBsNTIuNy01Mi43YzE0LjUtMTQuNiAxNC41LTM4LjIgMC01Mi43ek0zMzEuNyAyMjVjMjguMyAwIDU0LjkgMTEgNzQuOSAzMWwxOS40IDE5LjRjMTUuOC02LjkgMzAuOC0xNi41IDQzLjgtMjkuNSAzNy4xLTM3LjEgNDkuNy04OS4zIDM3LjktMTM2LjctMi4yLTktMTMuNS0xMi4xLTIwLjEtNS41bC03NC40IDc0LjQtNjcuOS0xMS4zTDMzNCA5OC45bDc0LjQtNzQuNGM2LjYtNi42IDMuNC0xNy45LTUuNy0yMC4yLTQ3LjQtMTEuNy05OS42LjktMTM2LjYgMzcuOS0yOC41IDI4LjUtNDEuOSA2Ni4xLTQxLjIgMTAzLjZsODIuMSA4Mi4xYzguMS0xLjkgMTYuNS0yLjkgMjQuNy0yLjl6bS0xMDMuOSA4MmwtNTYuNy01Ni43TDE4LjcgNDAyLjhjLTI1IDI1LTI1IDY1LjUgMCA5MC41czY1LjUgMjUgOTAuNSAwbDEyMy42LTEyMy42Yy03LjYtMTkuOS05LjktNDEuNi01LTYyLjd6TTY0IDQ3MmMtMTMuMiAwLTI0LTEwLjgtMjQtMjQgMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGMwIDEzLjItMTAuNyAyNC0yNCAyNHoiPjwvcGF0aD4KCTwvc3ltYm9sPgk8c3ltYm9sIGlkPSJpY29uLW1hcC1tYXJrZXItYWx0IiB2aWV3Ym94PSIwIDAgMzg0IDUxMiI+CgkJPHBhdGggZD0iTTE3Mi4yNjggNTAxLjY3QzI2Ljk3IDI5MS4wMzEgMCAyNjkuNDEzIDAgMTkyIDAgODUuOTYxIDg1Ljk2MSAwIDE5MiAwczE5MiA4NS45NjEgMTkyIDE5MmMwIDc3LjQxMy0yNi45NyA5OS4wMzEtMTcyLjI2OCAzMDkuNjctOS41MzUgMTMuNzc0LTI5LjkzIDEzLjc3My0zOS40NjQgMHpNMTkyIDI3MmM0NC4xODMgMCA4MC0zNS44MTcgODAtODBzLTM1LjgxNy04MC04MC04MC04MCAzNS44MTctODAgODAgMzUuODE3IDgwIDgwIDgweiI+PC9wYXRoPgoJPC9zeW1ib2w+CTxzeW1ib2wgaWQ9Imljb24tZ2xvYmUiIHZpZXdib3g9IjAgMCA0OTYgNTEyIj4KCQk8cGF0aCBkPSJNMzM2LjUgMTYwQzMyMiA3MC43IDI4Ny44IDggMjQ4IDhzLTc0IDYyLjctODguNSAxNTJoMTc3ek0xNTIgMjU2YzAgMjIuMiAxLjIgNDMuNSAzLjMgNjRoMTg1LjNjMi4xLTIwLjUgMy4zLTQxLjggMy4zLTY0cy0xLjItNDMuNS0zLjMtNjRIMTU1LjNjLTIuMSAyMC41LTMuMyA0MS44LTMuMyA2NHptMzI0LjctOTZjLTI4LjYtNjcuOS04Ni41LTEyMC40LTE1OC0xNDEuNiAyNC40IDMzLjggNDEuMiA4NC43IDUwIDE0MS42aDEwOHpNMTc3LjIgMTguNEMxMDUuOCAzOS42IDQ3LjggOTIuMSAxOS4zIDE2MGgxMDhjOC43LTU2LjkgMjUuNS0xMDcuOCA0OS45LTE0MS42ek00ODcuNCAxOTJIMzcyLjdjMi4xIDIxIDMuMyA0Mi41IDMuMyA2NHMtMS4yIDQzLTMuMyA2NGgxMTQuNmM1LjUtMjAuNSA4LjYtNDEuOCA4LjYtNjRzLTMuMS00My41LTguNS02NHpNMTIwIDI1NmMwLTIxLjUgMS4yLTQzIDMuMy02NEg4LjZDMy4yIDIxMi41IDAgMjMzLjggMCAyNTZzMy4yIDQzLjUgOC42IDY0aDExNC42Yy0yLTIxLTMuMi00Mi41LTMuMi02NHptMzkuNSA5NmMxNC41IDg5LjMgNDguNyAxNTIgODguNSAxNTJzNzQtNjIuNyA4OC41LTE1MmgtMTc3em0xNTkuMyAxNDEuNmM3MS40LTIxLjIgMTI5LjQtNzMuNyAxNTgtMTQxLjZoLTEwOGMtOC44IDU2LjktMjUuNiAxMDcuOC01MCAxNDEuNnpNMTkuMyAzNTJjMjguNiA2Ny45IDg2LjUgMTIwLjQgMTU4IDE0MS42LTI0LjQtMzMuOC00MS4yLTg0LjctNTAtMTQxLjZoLTEwOHoiPjwvcGF0aD4KCTwvc3ltYm9sPgk8c3ltYm9sIGlkPSJpY29uLW5ld3NwYXBlciIgdmlld2JveD0iMCAwIDU3NiA1MTIiPgoJCTxwYXRoIGQ9Ik01NTIgNjRIODhjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHY4SDI0Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MjcyYzAgMzAuOTI4IDI1LjA3MiA1NiA1NiA1Nmg0NzJjMjYuNTEgMCA0OC0yMS40OSA0OC00OFY4OGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjR6TTU2IDQwMGE4IDggMCAwIDEtOC04VjE0NGgxNnYyNDhhOCA4IDAgMCAxLTggOHptMjM2LTE2SDE0MGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtOGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDE1MmM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjhjMCA2LjYyNy01LjM3MyAxMi0xMiAxMnptMjA4IDBIMzQ4Yy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi04YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMTUyYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2OGMwIDYuNjI3LTUuMzczIDEyLTEyIDEyem0tMjA4LTk2SDE0MGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtOGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDE1MmM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjhjMCA2LjYyNy01LjM3MyAxMi0xMiAxMnptMjA4IDBIMzQ4Yy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi04YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMTUyYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2OGMwIDYuNjI3LTUuMzczIDEyLTEyIDEyem0wLTk2SDE0MGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtNDBjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgzNjBjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY0MGMwIDYuNjI3LTUuMzczIDEyLTEyIDEyeiI+PC9wYXRoPgoJPC9zeW1ib2w+CgkJCTwvc3ZnPgoKCQkJCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImlzTW9iaWxlIiBuYW1lPSJpc01vYmlsZSIgdmFsdWU9IjEiPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iU2l0ZXNfUGFnZV9HZW5lcmFsX01lbnVfQlROIiB2YWx1ZT0iTWVudSBkw6lyb3VsYW50Ij4KCQkJCgkJCTxoZWFkZXIgY2xhc3M9Im1vYmlsZS1oZWFkZXIgZmxleC1ib3ggZmxleC1iZXR3ZWVuIGFsaWduLWNlbnRlciAtLWZzMiB0YWxsIiBoaWRkZW49IjEiPgoJCQkJCgkJCTxib3gtbGMgY2xhc3M9ImJ1cmdlci1tZW51LWNvbnRhaW5lciAtcGgiPgoJCQkJPGxhYmVsIGZvcj0iYm1fdG9nZ2xlIj48L2xhYmVsPgoJCQkJPGlucHV0IGlkPSJibV90b2dnbGUiIHR5cGU9ImNoZWNrYm94IiBoaWRkZW4+CgkJCQk8ZGl2IGlkPSJidXJnZXItbWVudS1idXR0b24iIGNsYXNzPSJzdGFjay1sYyBidXJnZXItbWVudS1idXR0b24gLS1zLTIiPgoJCQkJCTxzcGFuIGNsYXNzPSJidXJnZXJfdG9wIj48L3NwYW4+CgkJCQkJPHNwYW4gY2xhc3M9ImJ1cmdlcl9taWRkbGUiPjwvc3Bhbj4KCQkJCQk8c3BhbiBjbGFzcz0iYnVyZ2VyX2JvdHRvbSI+PC9zcGFuPgoJCQkJPC9kaXY+CgoJCQkJPGFzaWRlIGNsYXNzPSJidXJnZXItbmF2Ij4KCQkJCQkJCQk8bmF2PgoJCQkJPHVsPgoJCQkJCQkJCQk8bGkgY2xhc3M9IiIgaHJlZj0iP3BhdGg9Ij4KCQkJCQkKCQkJCQk8YSBjbGFzcz0iTkVXICAtYm9sZCAgbWVudS1pdGVtIGZsZXgtYm94IiBocmVmPSI\/cGF0aD0vbmV1ZnMvbm91dmVhdS5odG1sIiB0YXJnZXQ9Il90b3AiIG9uY2xpY2s9IiI+CgkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tc3RlZXJpbmctd2hlZWwiPjwvdXNlPjwvc3ZnPgoJCQkJCQk8c3BhbiBjbGFzcz0ic2hyaW5rLWdyb3cgc2tlbGV0b24tdHh0IiBkYXRhLW1lbnUtdHJhbnNsYXRlPSJORVciPk1PRMOITEVTPC9zcGFuPgoJCQkJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSJtZW51RXhwYW5kIC1wIC0tcy0zIiBhcmlhLWxhYmVsPSJNZW51IGTDqXJvdWxhbnQiPgoJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tZG93biI+PC91c2U+PC9zdmc+CgkJCQkJPC9zcGFuPgoJCQkJCTwvYT4KCQkJCQkJCQkJCTxkaXYgY2xhc3M9InN1Ym1lbnVJdGVtQ29udGFpbmVyIiBzdHlsZT0iZGlzcGxheTpub25lOyI+CgkJCQkJCTxzdGFjay1sYyBpZD0iaXRlbV9ORVciIGNsYXNzPSItLXMtOSI+CgkJCQkJCQkJCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBORVdfQlVJTERQUklDRSIgaHJlZj0iP3BhdGg9L2NvbmZpZ3VyYXRpb24tZXQtcHJpeC9jb25maWd1cmF0aW9uLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPlRvdXMgbGVzIG1vZMOobGVzPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgTkVXX0xPV0MiIGhyZWY9Ij9wYXRoPS9uZXVmcy9mYWlibGUtY29uc29tbWF0aW9uLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPkZhaWJsZSBjb25zb21tYXRpb248L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBORVdJTlYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9pbnZlbnRhaXJlL3JlY2hlcmNoZS5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5JbnZlbnRhaXJlIE5ldWYgKDI5KTwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IE5FV19TRURBTiIgaHJlZj0iP3BhdGg9L25ldWZzL2F1dG9zLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPkF1dG9tb2JpbGVzPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgTkVXX1NVViIgaHJlZj0iP3BhdGg9L25ldWZzL1ZVUy5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5WVVM8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBORVdfVFJVQ0tfTUlOSVZBTiIgaHJlZj0iP3BhdGg9L25ldWZzL25vdXZlYXUuaHRtbD9ib2R5PWNhbWlvbi1taW5pX2ZvdXJnb25uZXR0ZSIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+Q2FtaW9ucyAvIE1pbml2YW5zPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgTkVXX0hZQlJJRF9FTEVDVFJJQyIgaHJlZj0iP3BhdGg9L25ldWZzL25vdXZlYXUuaHRtbD9mdWVsPWh5YnJpZGUtZWxlY3RyaXF1ZSIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+SHlicmlkZXMgLyDDiWxlY3RyaXF1ZXM8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBCcm9jaHVyZSIgaHJlZj0iP3BhdGg9L2RlbWFuZGVzL2Jyb2NodXJlcy5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5Ccm9jaHVyZXM8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4KCQkJCQkJPC9zdGFjay1sYz4KCQkJCQk8L2Rpdj4KCQkJCTwvbGk+CgoJCQkJCgkJCQk8bGkgY2xhc3M9IiI+CgkJCQkJCgkJCQkJPGEgY2xhc3M9IlVTRUQgIC1ib2xkICBtZW51LWl0ZW0gZmxleC1ib3giIGhyZWY9Ij9wYXRoPS9vY2Nhc2lvbi9yZWNoZXJjaGUuaHRtbCIgdGFyZ2V0PSJfdG9wIiBvbmNsaWNrPSIiPgoJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNhciI+PC91c2U+PC9zdmc+CgkJCQkJCTxzcGFuIGNsYXNzPSJzaHJpbmstZ3JvdyBza2VsZXRvbi10eHQiIGRhdGEtbWVudS10cmFuc2xhdGU9IlVTRUQiPk9DQ0FTSU9OPC9zcGFuPgoJCQkJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSJtZW51RXhwYW5kIC1wIC0tcy0zIiBhcmlhLWxhYmVsPSJNZW51IGTDqXJvdWxhbnQiPgoJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tZG93biI+PC91c2U+PC9zdmc+CgkJCQkJPC9zcGFuPgoJCQkJCTwvYT4KCQkJCQkJCQkJCTxkaXYgY2xhc3M9InN1Ym1lbnVJdGVtQ29udGFpbmVyIiBzdHlsZT0iZGlzcGxheTpub25lOyI+CgkJCQkJCTxzdGFjay1sYyBpZD0iaXRlbV9VU0VEIiBjbGFzcz0iLS1zLTkiPgoJCQkJCQkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgVVNFRF9BTExJTlYiIGhyZWY9Ij9wYXRoPS9vY2Nhc2lvbi9yZWNoZXJjaGUuaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+SW52ZW50YWlyZSBjb21wbGV0ICgyMCk8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBVU0VEX0NFUlRJRklFRF9DQVJTIiBocmVmPSI\/cGF0aD0vb2NjYXNpb24vY2VydGlmaWVzLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPlbDqWhpY3VsZXMgY2VydGlmacOpcyAoMTgpPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgVVNFRF9MT1dDIiBocmVmPSI\/cGF0aD0vb2NjYXNpb24vZmFpYmxlLWNvbnNvbW1hdGlvbi5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5GYWlibGUgY29uc29tbWF0aW9uICgxKTwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IFVTRURfTEVTUzIwSyIgaHJlZj0iP3BhdGg9L29jY2FzaW9uL21vaW5zLWRlLTIwMDAwLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPk1vaW5zIGRlIDIwLDAwMCQgKDIpPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgVVNFRF9MRVNTMTBLIiBocmVmPSI\/cGF0aD0vb2NjYXNpb24vbW9pbnMtZGUtMTAwMDAuaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+TW9pbnMgZGUgMTAsMDAwJCAoMSk8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBVU0VEX0NBVF9DQVIiIGhyZWY9Ij9wYXRoPS9vY2Nhc2lvbi90eXBlL0F1dG9zLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPkF1dG9zICg3KTwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IFVTRURfQ0FUX1NVViIgaHJlZj0iP3BhdGg9L29jY2FzaW9uL3R5cGUvVlVTLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPlZVUyAoOSk8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBVU0VEX0NBVF9UUlVDSyIgaHJlZj0iP3BhdGg9L29jY2FzaW9uL3R5cGUvQ2FtaW9ucy5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5DYW1pb25zICgzKTwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IFVTRURfQ0FUX0hZQlJJRCIgaHJlZj0iP3BhdGg9L29jY2FzaW9uL2h5YnJpZGUuaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+SHlicmlkZSAoMyk8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBVU0VEX09USEVSIiBocmVmPSI\/cGF0aD0vb2NjYXNpb24vcmVjaGVyY2hlLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPkF1dHJlcyBtb2TDqGxlczwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IFVTRUQxIiBocmVmPSI\/cGF0aD0vb2NjYXNpb24vQWN1cmEtVExYLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPkFjdXJhIFRMWCAoMSk8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBVU0VEMiIgaHJlZj0iP3BhdGg9L29jY2FzaW9uL0NoZXZyb2xldC1Db2xvcmFkby5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5DaGV2cm9sZXQgQ29sb3JhZG8gKDEpPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgVVNFRDMiIGhyZWY9Ij9wYXRoPS9vY2Nhc2lvbi9Gb3JkLVJhbmdlci5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5Gb3JkIFJhbmdlciAoMSk8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBVU0VENCIgaHJlZj0iP3BhdGg9L29jY2FzaW9uL0dlbmVzaXMtRzcwLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPkdlbmVzaXMgRzcwICgxKTwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IFVTRUQ1IiBocmVmPSI\/cGF0aD0vb2NjYXNpb24vR01DLUNhbnlvbi5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5HTUMgQ2FueW9uICgxKTwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IFVTRUQ2IiBocmVmPSI\/cGF0aD0vb2NjYXNpb24vSG9uZGEtQ2l2aWMuaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+SG9uZGEgQ2l2aWMgKDQpPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgVVNFRDciIGhyZWY9Ij9wYXRoPS9vY2Nhc2lvbi9Ib25kYS1DUl9WLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPkhvbmRhIENSLVYgKDYpPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgVVNFRDgiIGhyZWY9Ij9wYXRoPS9vY2Nhc2lvbi9Ib25kYS1DUl9WX0h5YnJpZC5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5Ib25kYSBDUi1WIEh5YnJpZGUgKDEpPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgVVNFRDkiIGhyZWY9Ij9wYXRoPS9vY2Nhc2lvbi9KZWVwLVdyYW5nbGVyXzRfRG9vci5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5KZWVwIFdyYW5nbGVyIDQgRG9vciAoMSk8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBVU0VEMTAiIGhyZWY9Ij9wYXRoPS9vY2Nhc2lvbi9OZXdtYXItRHV0Y2hfU3Rhci5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5OZXdtYXIgRHV0Y2ggU3RhciAoMSk8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBVU0VEMTEiIGhyZWY9Ij9wYXRoPS9vY2Nhc2lvbi9Ub3lvdGEtQ29yb2xsYV9Dcm9zcy5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5Ub3lvdGEgQ29yb2xsYSBDcm9zcyAoMSk8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBVU0VEMTIiIGhyZWY9Ij9wYXRoPS9vY2Nhc2lvbi9Wb2xrc3dhZ2VuLUdvbGYuaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+Vm9sa3N3YWdlbiBHb2xmICgxKTwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgoJCQkJCQk8L3N0YWNrLWxjPgoJCQkJCTwvZGl2PgoJCQkJPC9saT4KCgkJCQkKCQkJCTxsaSBjbGFzcz0iIj4KCQkJCQkKCQkJCQk8YSBjbGFzcz0iUFJPTU8gIC1ib2xkICBtZW51LWl0ZW0gZmxleC1ib3giIGhyZWY9Ij9wYXRoPS9wcm9tb3Rpb25zLmh0bWwiIHRhcmdldD0iX3RvcCIgb25jbGljaz0iIj4KCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi10YWciPjwvdXNlPjwvc3ZnPgoJCQkJCQk8c3BhbiBjbGFzcz0ic2hyaW5rLWdyb3cgc2tlbGV0b24tdHh0Ij5QUk9NT1RJT05TPC9zcGFuPgoJCQkJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSJtZW51RXhwYW5kIC1wIC0tcy0zIiBhcmlhLWxhYmVsPSJNZW51IGTDqXJvdWxhbnQiPgoJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tZG93biI+PC91c2U+PC9zdmc+CgkJCQkJPC9zcGFuPgoJCQkJCTwvYT4KCQkJCQkJCQkJCTxkaXYgY2xhc3M9InN1Ym1lbnVJdGVtQ29udGFpbmVyIiBzdHlsZT0iZGlzcGxheTpub25lOyI+CgkJCQkJCTxzdGFjay1sYyBpZD0iaXRlbV9QUk9NTyIgY2xhc3M9Ii0tcy05Ij4KCQkJCQkJCQkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IFBST01PX01BTlVGQUNUVVJFUiIgaHJlZj0iP3BhdGg9L3Byb21vdGlvbnMuaHRtbCNtYW51ZmFjdHVyZXIiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPkluY2l0YXRpZnMgSG9uZGE8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4KCQkJCQkJPC9zdGFjay1sYz4KCQkJCQk8L2Rpdj4KCQkJCTwvbGk+CgoJCQkJCgkJCQk8bGkgY2xhc3M9IiI+CgkJCQkJCgkJCQkJPGEgY2xhc3M9IkZJTkFOQ0UgIC1ib2xkICBtZW51LWl0ZW0gZmxleC1ib3giIGhyZWY9Ij9wYXRoPS9kZW1hbmRlcy9maW5hbmNlbWVudC5odG1sIiB0YXJnZXQ9Il90b3AiIG9uY2xpY2s9IiI+CgkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24taGFuZC1ob2xkaW5nLXVzZCI+PC91c2U+PC9zdmc+CgkJCQkJCTxzcGFuIGNsYXNzPSJzaHJpbmstZ3JvdyBza2VsZXRvbi10eHQiPkZJTkFOQ0VNRU5UPC9zcGFuPgoJCQkJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSJtZW51RXhwYW5kIC1wIC0tcy0zIiBhcmlhLWxhYmVsPSJNZW51IGTDqXJvdWxhbnQiPgoJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tZG93biI+PC91c2U+PC9zdmc+CgkJCQkJPC9zcGFuPgoJCQkJCTwvYT4KCQkJCQkJCQkJCTxkaXYgY2xhc3M9InN1Ym1lbnVJdGVtQ29udGFpbmVyIiBzdHlsZT0iZGlzcGxheTpub25lOyI+CgkJCQkJCTxzdGFjay1sYyBpZD0iaXRlbV9GSU5BTkNFIiBjbGFzcz0iLS1zLTkiPgoJCQkJCQkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgNmU0MTg2NzUtZDY5Zi1lYWQ1LTQwODUtOSIgaHJlZj0iP3BhdGg9L3JlcXVlc3RzL2NyZWRpdC5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5EZW1hbmRlIGRlIGZpbmFuY2VtZW50PC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgYjQwMWViNDUtNjI2Zi0xNmY5LTQwYzctMSIgaHJlZj0iP3BhdGg9L2Zvcm11bGFpcmUtY29uc2VudGVtZW50Lmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPkZvcm11bGFpcmUgZGUgY29uc2VudGVtZW50PC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CgkJCQkJCTwvc3RhY2stbGM+CgkJCQkJPC9kaXY+CgkJCQk8L2xpPgoKCQkJCQoJCQkJPGxpIGNsYXNzPSIiPgoJCQkJCQoJCQkJCTxhIGNsYXNzPSJTRVJWSUNFICAtYm9sZCAgbWVudS1pdGVtIGZsZXgtYm94IiBocmVmPSI\/cGF0aD0vc2VydmljZXMtaG9uZGEuaHRtbCIgdGFyZ2V0PSJfdG9wIiBvbmNsaWNrPSIiPgoJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLXRvb2xzIj48L3VzZT48L3N2Zz4KCQkJCQkJPHNwYW4gY2xhc3M9InNocmluay1ncm93IHNrZWxldG9uLXR4dCI+U0VSVklDRTwvc3Bhbj4KCQkJCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0ibWVudUV4cGFuZCAtcCAtLXMtMyIgYXJpYS1sYWJlbD0iTWVudSBkw6lyb3VsYW50Ij4KCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLWRvd24iPjwvdXNlPjwvc3ZnPgoJCQkJCTwvc3Bhbj4KCQkJCQk8L2E+CgkJCQkJCQkJCQk8ZGl2IGNsYXNzPSJzdWJtZW51SXRlbUNvbnRhaW5lciIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgoJCQkJCQk8c3RhY2stbGMgaWQ9Iml0ZW1fU0VSVklDRSIgY2xhc3M9Ii0tcy05Ij4KCQkJCQkJCQkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IEFQUE9JTlQiIGhyZWY9Ij9wYXRoPS9kZW1hbmRlcy9yZW5kZXotdm91cy1hdS1zZXJ2aWNlLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPlByZW5kcmUgcmVuZGV6LXZvdXM8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBQSUVDRVMiIGhyZWY9Ij9wYXRoPS9kZW1hbmRlcy9jb21tYW5kZS1waWVjZXMtYWNjZXNzb2lyZXMtYXV0b21vYmlsZXMuaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+UGnDqGNlcyAmYW1wOyBBY2Nlc3NvaXJlczwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IEJPRFkiIGhyZWY9Ij9wYXRoPS9kZW1hbmRlcy9yZW5kZXotdm91cy1hdS1zZXJ2aWNlLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPkNhcnJvc3NlcmllPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgVElSRVMiIGhyZWY9Ij9wYXRoPS9kZW1hbmRlcy9jb21tYW5kZS1kZS1wbmV1cy5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5Db21tYW5kZXogdm9zIHBuZXVzIGljaSE8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBHQVJBR0UiIGhyZWY9Ij9wYXRoPS9kZW1hbmRlcy9yZW5kZXotdm91cy1hdS1zZXJ2aWNlLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPkVudHJldGllbiBldCBtw6ljYW5pcXVlPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CgkJCQkJCTwvc3RhY2stbGM+CgkJCQkJPC9kaXY+CgkJCQk8L2xpPgoKCQkJCQoJCQkJPGxpIGNsYXNzPSIiPgoJCQkJCQoJCQkJCTxhIGNsYXNzPSJDT05UQUNUICAtYm9sZCAgbWVudS1pdGVtIGZsZXgtYm94IiBocmVmPSI\/cGF0aD0vY29udGFjdGV6bm91cy5odG1sIiB0YXJnZXQ9Il90b3AiIG9uY2xpY2s9IiI+CgkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tbWFwLW1hcmtlci1hbHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQk8c3BhbiBjbGFzcz0ic2hyaW5rLWdyb3cgc2tlbGV0b24tdHh0Ij5OT1VTIEpPSU5EUkU8L3NwYW4+CgkJCQkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Im1lbnVFeHBhbmQgLXAgLS1zLTMiIGFyaWEtbGFiZWw9Ik1lbnUgZMOpcm91bGFudCI+CgkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1kb3duIj48L3VzZT48L3N2Zz4KCQkJCQk8L3NwYW4+CgkJCQkJPC9hPgoJCQkJCQkJCQkJPGRpdiBjbGFzcz0ic3VibWVudUl0ZW1Db250YWluZXIiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KCQkJCQkJPHN0YWNrLWxjIGlkPSJpdGVtX0NPTlRBQ1QiIGNsYXNzPSItLXMtOSI+CgkJCQkJCQkJCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBDT05UQUNUVVMiIGhyZWY9Ij9wYXRoPS9jb250YWN0ZXpub3VzLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPlBsdXMgZGUgZMOpdGFpbHM8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4KCQkJCQkJPC9zdGFjay1sYz4KCQkJCQk8L2Rpdj4KCQkJCTwvbGk+CgoJCQkJCgkJCQk8bGkgY2xhc3M9Im1lbnUtZ3JvdXAiPgoJCQkJCQoJCQkJCTxhIGNsYXNzPSJMQU5HVUFHRSAgLWJvbGQgIG1lbnUtaXRlbSBmbGV4LWJveCIgaHJlZj0iP3BhdGg9L2VuZy8iIHRhcmdldD0iX3RvcCIgb25jbGljaz0iIj4KCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1nbG9iZSI+PC91c2U+PC9zdmc+CgkJCQkJCTxzcGFuIGNsYXNzPSJzaHJpbmstZ3JvdyBza2VsZXRvbi10eHQiPkVuZ2xpc2g8L3NwYW4+CgkJCQkJCQoJCQkJCTwvYT4KCQkJCQkKCQkJCTwvbGk+CgoJCQkJCgkJCQk8bGkgY2xhc3M9Im1lbnUtZ3JvdXAiPgoJCQkJCQoJCQkJCTxhIGNsYXNzPSJORVdTICAgbWVudS1pdGVtIGZsZXgtYm94IiBocmVmPSI\/cGF0aD0vbm91dmVsbGVzLmh0bWwiIHRhcmdldD0iX3RvcCIgb25jbGljaz0iIj4KCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1uZXdzcGFwZXIiPjwvdXNlPjwvc3ZnPgoJCQkJCQk8c3BhbiBjbGFzcz0ic2hyaW5rLWdyb3cgc2tlbGV0b24tdHh0Ij5Ob3V2ZWxsZXM8L3NwYW4+CgkJCQkJCQoJCQkJCTwvYT4KCQkJCQkKCQkJCTwvbGk+CgoJCQkJCgoJCQkJPC91bD4KCQkJPC9uYXY+CgkJCQk8L2FzaWRlPgoJCQk8L2JveC1sYz4KCgkJCTxhIGNsYXNzPSJwaG9uZS1hY3Rpb24iIHRpdGxlPSJDb250YWN0ZXotbm91cyIgZGF0YS1kZXBhcnRtZW50PSJTYWxlcyIgaHJlZj0iP3BhdGg9dGVsOjYxMyUyMDYzMi01MjIyIj4KCQkJCTxzdmcgY2xhc3M9IiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Ym94PSIwIDAgNTEyIDUxMiI+PCEtLSBGb250IEF3ZXNvbWUgRnJlZSA1LjE1LjEgYnkgQGZvbnRhd2Vzb21lIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20gTGljZW5zZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tL2xpY2Vuc2UvZnJlZSAoSWNvbnM6IENDIEJZIDQuMCwgRm9udHM6IFNJTCBPRkwgMS4xLCBDb2RlOiBNSVQgTGljZW5zZSkgLS0+PHBhdGggZD0iTTQ5Ny4zOSAzNjEuOGwtMTEyLTQ4YTI0IDI0IDAgMCAwLTI4IDYuOWwtNDkuNiA2MC42QTM3MC42NiAzNzAuNjYgMCAwIDEgMTMwLjYgMjA0LjExbDYwLjYtNDkuNmEyMy45NCAyMy45NCAwIDAgMCA2LjktMjhsLTQ4LTExMkEyNC4xNiAyNC4xNiAwIDAgMCAxMjIuNi42MWwtMTA0IDI0QTI0IDI0IDAgMCAwIDAgNDhjMCAyNTYuNSAyMDcuOSA0NjQgNDY0IDQ2NGEyNCAyNCAwIDAgMCAyMy40LTE4LjZsMjQtMTA0YTI0LjI5IDI0LjI5IDAgMCAwLTE0LjAxLTI3LjZ6Ij48L3BhdGg+PC9zdmc+CgkJCQkKCQkJPC9hPgoKCQkJPGRpdiBjbGFzcz0ic2VydmljZS1hY3Rpb24iIGFyaWEtbGFiZWw9IiI+CgkJCQk8YSBocmVmPSI\/cGF0aD0vZGVtYW5kZXMvcmVuZGV6LXZvdXMtYXUtc2VydmljZS5odG1sIj4KCQkJCQk8c3ZnIGNsYXNzPSIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld2JveD0iMCAwIDUxMiA1MTIiPjwhLS0gRm9udCBBd2Vzb21lIEZyZWUgNS4xNS4xIGJ5IEBmb250YXdlc29tZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tIExpY2Vuc2UgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbS9saWNlbnNlL2ZyZWUgKEljb25zOiBDQyBCWSA0LjAsIEZvbnRzOiBTSUwgT0ZMIDEuMSwgQ29kZTogTUlUIExpY2Vuc2UpIC0tPjxwYXRoIGQ9Ik01MDcuNzMgMTA5LjFjLTIuMjQtOS4wMy0xMy41NC0xMi4wOS0yMC4xMi01LjUxbC03NC4zNiA3NC4zNi02Ny44OC0xMS4zMS0xMS4zMS02Ny44OCA3NC4zNi03NC4zNmM2LjYyLTYuNjIgMy40My0xNy45LTUuNjYtMjAuMTYtNDcuMzgtMTEuNzQtOTkuNTUuOTEtMTM2LjU4IDM3LjkzLTM5LjY0IDM5LjY0LTUwLjU1IDk3LjEtMzQuMDUgMTQ3LjJMMTguNzQgNDAyLjc2Yy0yNC45OSAyNC45OS0yNC45OSA2NS41MSAwIDkwLjUgMjQuOTkgMjQuOTkgNjUuNTEgMjQuOTkgOTAuNSAwbDIxMy4yMS0yMTMuMjFjNTAuMTIgMTYuNzEgMTA3LjQ3IDUuNjggMTQ3LjM3LTM0LjIyIDM3LjA3LTM3LjA3IDQ5LjctODkuMzIgMzcuOTEtMTM2Ljczek02NCA0NzJjLTEzLjI1IDAtMjQtMTAuNzUtMjQtMjQgMC0xMy4yNiAxMC43NS0yNCAyNC0yNHMyNCAxMC43NCAyNCAyNGMwIDEzLjI1LTEwLjc1IDI0LTI0IDI0eiI+PC9wYXRoPjwvc3ZnPgoJCQkJCQoJCQkJPC9hPgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0ibGVmdGJvcmRlciI+CgkJCQk8YSBjbGFzcz0iZ1JhdGluZy1pY29uIiBvbmNsaWNrPSJ3aW5kb3cub3BlbignaHR0cHM6Ly9zZWFyY2guZ29vZ2xlLmNvbS9sb2NhbC93cml0ZXJldmlldz9wbGFjZWlkPUNoSUpFWk9EMk9ib3prd1JNdFVtT2lZWVY4MCcpIiBkYXRhLXRvb2x0aXA9IlNjb3JlIG1veWVuIGRlIDQuMCA\/dG9pbGVzIHN1ciBsZXMgcmV2dWVzIEdvb2dsZSEiIHN0eWxlPSJkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjsiPgoJCQkJPHN2ZyBjbGFzcz0iIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdib3g9IjAgMCA0ODggNTEyIj48IS0tIEZvbnQgQXdlc29tZSBGcmVlIDUuMTUuMSBieSBAZm9udGF3ZXNvbWUgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbSBMaWNlbnNlIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20vbGljZW5zZS9mcmVlIChJY29uczogQ0MgQlkgNC4wLCBGb250czogU0lMIE9GTCAxLjEsIENvZGU6IE1JVCBMaWNlbnNlKSAtLT48cGF0aCBkPSJNNDg4IDI2MS44QzQ4OCA0MDMuMyAzOTEuMSA1MDQgMjQ4IDUwNCAxMTAuOCA1MDQgMCAzOTMuMiAwIDI1NlMxMTAuOCA4IDI0OCA4YzY2LjggMCAxMjMgMjQuNSAxNjYuMyA2NC45bC02Ny41IDY0LjlDMjU4LjUgNTIuNiA5NC4zIDExNi42IDk0LjMgMjU2YzAgODYuNSA2OS4xIDE1Ni42IDE1My43IDE1Ni42IDk4LjIgMCAxMzUtNzAuNCAxNDAuOC0xMDYuOUgyNDh2LTg1LjNoMjM2LjFjMi4zIDEyLjcgMy45IDI0LjkgMy45IDQxLjR6Ij48L3BhdGg+PC9zdmc+CgkJCQk8c3BhbiBzdHlsZT0iaGVpZ2h0OjE3cHg7IiBjbGFzcz0iLWJvbGQgLS1mczIiPjQuMDwvc3Bhbj4KCQkJCTxzdmcgY2xhc3M9IiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Ym94PSIwIDAgNTc2IDUxMiI+PCEtLSBGb250IEF3ZXNvbWUgRnJlZSA1LjE1LjEgYnkgQGZvbnRhd2Vzb21lIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20gTGljZW5zZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tL2xpY2Vuc2UvZnJlZSAoSWNvbnM6IENDIEJZIDQuMCwgRm9udHM6IFNJTCBPRkwgMS4xLCBDb2RlOiBNSVQgTGljZW5zZSkgLS0+PHBhdGggZD0iTTI1OS4zIDE3LjhMMTk0IDE1MC4yIDQ3LjkgMTcxLjVjLTI2LjIgMy44LTM2LjcgMzYuMS0xNy43IDU0LjZsMTA1LjcgMTAzLTI1IDE0NS41Yy00LjUgMjYuMyAyMy4yIDQ2IDQ2LjQgMzMuN0wyODggNDM5LjZsMTMwLjcgNjguN2MyMy4yIDEyLjIgNTAuOS03LjQgNDYuNC0zMy43bC0yNS0xNDUuNSAxMDUuNy0xMDNjMTktMTguNSA4LjUtNTAuOC0xNy43LTU0LjZMMzgyIDE1MC4yIDMxNi43IDE3LjhjLTExLjctMjMuNi00NS42LTIzLjktNTcuNCAweiI+PC9wYXRoPjwvc3ZnPgoJCQk8L2E+PC9kaXY+CgkJCTwvaGVhZGVyPgkKCQkJCQkJPGJveC1sYyBjbGFzcz0ibG9nb2FyZWEgZmxleC1lcXVhbCBhbGlnbi1jZW50ZXIiPgoJCQkJCQkJPGRpdiBjbGFzcz0ibG9nbyI+CgkJCQk8YSBocmVmPSI\/cGF0aD0vIiBjbGFzcz0iLWJsb2NrIiBpdGVtcHJvcD0idXJsIj4KCQkJCQk8aW1nIGFsdD0iTG9nbyIgY2xhc3M9ImxpdmVsb2FkIG9wdGFub24tY2F0ZWdvcnktQzAwMDEgb3B0YW5vbi1jYXRlZ29yeS1DMDAwMSIgZGF0YS1vdC1pZ25vcmUgZGF0YS1zY29kZXJlZj0iNDU2NDg1NjQ1LUgiIGl0ZW1wcm9wPSJpbWFnZSIgc3JjPSJodHRwczovL2hhd2tlc2J1cnlob25kYS5jYS8vaW1hZ2VzL0xvZ29Nb2JpbGUvaGF3a2VzYnVyeWhvbmRhLWxvZ28tZGFyay53ZWJwIiBkYXRhLWNvb2tpZWNvbnNlbnQ9Imlnbm9yZSI+CgkJCQk8L2E+CgkJCTwvZGl2Pgo8ZGl2IGNsYXNzPSJhZGRyZXNzIj4JCQkJPGRpdj4KCQkJCQk8c3RhY2stbGMgY2xhc3M9IiBhZHIiPgoJCQkJCQkKCQkJCQkJPHNwYW4gaXRlbXByb3A9Im5hbWUiIGNsYXNzPSItLWZzMSAtYm9sZCIgc3R5bGU9ImNvbG9yOiAjMWIxYjFiOyAiPkhhd2tlc2J1cnkgSG9uZGE8L3NwYW4+CgkJCQkJCQoJCQkJCQk8YSBocmVmPSJodHRwczovL3d3dy5nb29nbGUuY2EvbWFwcy9kaXIvP2FwaT0xJmFtcDtkZXN0aW5hdGlvbj1IYXdrZXNidXJ5JTJCSG9uZGElMkM0NTUrQ291bnR5K1JvYWQrMTclMkNIYXdrZXNidXJ5JTJDT04lMkNLNkErMlIyJmFtcDtkZXN0aW5hdGlvbl9wbGFjZV9pZD1DaElKRVpPRDJPYm96a3dSTXRVbU9pWVlWODAmYW1wO2hsPWZyJmFtcDt0PW0mYW1wO3o9MTYmYW1wO2llPVVURjgiIHRhcmdldD0iX2JsYW5rIiBhcmlhLWxhYmVsPSI0NTUgQ291bnR5IFJvYWQgMTcsIEhhd2tlc2J1cnksIE9OLCBLNkEgMlIyLiBHb29nbGUgTWFwIHMnb3V2cmUgZGFucyB1biBub3V2ZWwgb25nbGV0IiB0aXRsZT0iTG9jYXRpb24gOiA0NTUgQ291bnR5IFJvYWQgMTcsIEhhd2tlc2J1cnksIE9OLCBLNkEgMlIyIiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOm5vbmU7Y29sb3I6IzFiMWIxYjsgLS10eHQtY29sb3I6IzFiMWIxYjsiPgoJCQkJCQk8c3BhbiBzdHlsZT0iY29sb3I6ICMxYjFiMWI7ICIgaXRlbXByb3A9ImFkZHJlc3MiIGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cHM6Ly9zY2hlbWEub3JnL1Bvc3RhbEFkZHJlc3MiPgoJPHN2ZyBjbGFzcz0iIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdib3g9IjAgMCA1MTIgNTEyIj48IS0tIEZvbnQgQXdlc29tZSBGcmVlIDUuMTUuMSBieSBAZm9udGF3ZXNvbWUgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbSBMaWNlbnNlIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20vbGljZW5zZS9mcmVlIChJY29uczogQ0MgQlkgNC4wLCBGb250czogU0lMIE9GTCAxLjEsIENvZGU6IE1JVCBMaWNlbnNlKSAtLT48cGF0aCBkPSJNNDQ0LjUyIDMuNTJMMjguNzQgMTk1LjQyYy00Ny45NyAyMi4zOS0zMS45OCA5Mi43NSAxOS4xOSA5Mi43NWgxNzUuOTF2MTc1LjkxYzAgNTEuMTcgNzAuMzYgNjcuMTcgOTIuNzUgMTkuMTlsMTkxLjktNDE1Ljc4YzE1Ljk5LTM4LjM5LTI1LjU5LTc5Ljk3LTYzLjk3LTYzLjk3eiI+PC9wYXRoPjwvc3ZnPgoJPHNwYW4gY2xhc3M9InN0cmVldC1hZGRyZXNzIiBpdGVtcHJvcD0ic3RyZWV0QWRkcmVzcyI+NDU1IENvdW50eSBSb2FkIDE3PC9zcGFuPgoJPHNwYW4gY2xhc3M9ImxvY2FsaXR5IiBpdGVtcHJvcD0iYWRkcmVzc0xvY2FsaXR5Ij5IYXdrZXNidXJ5PC9zcGFuPiwKCTxzcGFuIGNsYXNzPSJyZWdpb24iIGl0ZW1wcm9wPSJhZGRyZXNzUmVnaW9uIj5PTjwvc3Bhbj4sCgk8c3BhbiBjbGFzcz0icG9zdGFsLWNvZGUiIGl0ZW1wcm9wPSJwb3N0YWxDb2RlIj5LNkEgMlIyPC9zcGFuPgo8L3NwYW4+CgkJCQkJCTwvYT4KCQkJCQk8L3N0YWNrLWxjPgoJCQkJCTxkaXYgaGlkZGVuPgoJCQkJCQk8bWV0YSBpdGVtcHJvcD0ibGF0aXR1ZGUiIGNvbnRlbnQ9IjQ1LjU4OTI5NDIwMDAiPgoJCQkJCQk8bWV0YSBpdGVtcHJvcD0ibG9uZ2l0dWRlIiBjb250ZW50PSItNzQuNTkyNjE0NDAwMCI+CgkJCQkJPC9kaXY+CgkJCQk8L2Rpdj48L2Rpdj4KCQkJPC9ib3gtbGM+CgkJCTxkaXYgaWQ9InByb21vVG9wQnRuIj48IS0tIHNlbV9ib29zdCBvbmx5IC0tPjwvZGl2PgoKCQkJPGRpdiBpZD0icGhvbmVOdW1iZXJEaXYiIGNsYXNzPSJyZXZlYWwtbW9kYWwiIHN0eWxlPSJ3aWR0aDo4MCU7bWFyZ2luLWxlZnQ6MHB4O2xlZnQ6NSU7cGFkZGluZzo1JTt6LWluZGV4OiA5OTk5OTk5O3Zpc2liaWxpdHk6aGlkZGVuO3RvcDogLTEwMDBweDtwb3NpdGlvbjogYWJzb2x1dGU7Ij48L2Rpdj4KCgkJCQoJCQkKCQkJPCEtLSBPTzo6NTg4MTE1ZTdhYjZjZTUyZDNkZjZkMGNjYTNjMDA3YTMgLS0+CgkJCTwhLS1lbmQgdG9wIC0tPgoKCiAgICAgICA8ZGl2IGNsYXNzPSJzZWFyY2hib3giPgogICAgICAgICAgICAgICA8ZGl2IGlkPSJuZXdjYXJDb250YWluZXIiIGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiBNYWluQm94TGF5ZXIiPgogICAgICAgIDwhLS0gSU5JVElBTCBMT0NBVElPTkJBUiAtLT4KICAgICAgICA8ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiBPdXRlckJveExheWVyIj4KICAgICAgICAJPGRpdiBjbGFzcz0iaGVhZGVySW1nIj48aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iMSIgaWQ9InRyYWRlSW5CYXJTdGlja3lCb3R0b20iPgo8IS0tU1RBUlRfUkVNT1ZBQkxFX0NPREVfQkxPQ0tfQ09NTUVOVF8wMDAxLS0+CgoJCQkJCTxkaXYgaWQ9InRyYWRlSW5CYXJNb2JpbGUiIGNsYXNzPSJib3gtbGMgLWNsZWFyIj4KICAgICAgICAgICAgCQk8ZGl2IGlkPSJ0cmFkZUluQmFyV01vYmlsZSIgY2xhc3M9ImZsZXgtYm94IGZsZXgtZXF1YWwiPgoJCQkJCTx0YWJsZSBjbGFzcz0ibWlkZGxlIiBpZD0iZGVmYXVsdFRvcEJhbm5lciI+CgkJCQkJPHRib2R5PgoJCQkJCQk8dHI+CgkJCQkJCTx0ZCBpZD0iZGVmYXVsdFRvcEJhbm5lcldyYXAiPgoJCQkJCQkJPGRpdiBpZD0iZGVmYXVsdFRvcEJhbm5lclRpdGxlIj48cD5Ew6ljb3V2cmV6IGxhIHZhbGV1ciBkZSB2b3RyZSDDqWNoYW5nZTwvcD48L2Rpdj4KCQkJCQkJCTxkaXYgY2xhc3M9ImRlZmF1bHRUb3BCYW5uZXJCdG5XcmFwcGVyIj4KCQkJCQkJCQk8ZGl2PjxhIGRhdGEtcG9wdXBpZD0iVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIj5SRUNFVkVaIFVOIEVTVElNw4kgR1JBVFVJVCE8L2E+PC9kaXY+CgkJCQkJCQk8L2Rpdj4KCQkJCQkJCTxkaXYgaWQ9ImRlZmF1bHRUb3BCYW5uZXJMb2dvIj4KCQkJCQkJCQk8cD48c3Bhbj5Qcm9wdWxzw6kgcGFyPC9zcGFuPiBBY2N1LVRyYWRlPC9wPgoJCQkJCQkJPC9kaXY+CgkJCQkJCTwvdGQ+CgkJCQkJCTwvdHI+CgkJCQkJPC90Ym9keT4KCQkJCQk8L3RhYmxlPgoJCQkJCTwvZGl2PgoJCQkJCTwvZGl2Pjxib3gtbGMgaWQ9InRyYWRlSW5CYXJNb2JpbGVCdXR0b24iIGNsYXNzPSJ0cmFkZUluQmFyTW9iaWxlQnV0dG9uIC0tZnMwIiBzdHlsZT0iZGlzcGxheTpmbGV4O3dpZHRoOjE0MHB4IWltcG9ydGFudDsiPjxpIGNsYXNzPSJmYSBmYS1zeW5jIGZhLXNwaW4iPjwvaT48YSBzdHlsZT0idGV4dC1hbGlnbjogbGVmdDt3aWR0aDogMTAwJTtmbG9hdDogbGVmdDt0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO2ZvbnQtc2l6ZTogLjlyZW07cGFkZGluZy1sZWZ0OiA1cHg7d2lkdGg6MTAwJTsiIGRhdGEtcG9wdXBpZD0iVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIj7DiXZhbHVleiB2b3RyZTxwIHN0eWxlPSJmb250LXNpemU6IDFyZW07Zm9udC13ZWlnaHQ6IGJvbGQ7Ij7DiUNIQU5HRSE8L3A+PC9hPjwvYm94LWxjPgkJCgkJPGRpdiBpZD0iVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIiBjbGFzcz0icmV2ZWFsLW1vZGFsICIgc3R5bGU9IndpZHRoOjMwMHB4O2hlaWdodDo5NjBweDsiIGRhdGEtbGF6eWxvYWRpZD0ibmV3Y2Fyc190cmFkZWluYmFycG9wdXBjb250YWluZXIiPgoJCQkKCQk8L2Rpdj4KCgkJPCEtLSBPTzo6NjFkYjRmZTIxYzRlMDdkNGEwOTk2Yjg4YjNmZWUzMmEgLS0+CgoJCQoKICAgIDxkaXYgaWQ9ImVtYWlsU3VjY2Vzc01lc3NhZ2VfVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIiBjbGFzcz0icmV2ZWFsLW1vZGFsIGVtYWlsLWNvbnNlbnQtYm94IiBzdHlsZT0id2lkdGg6NjAlOyI+CiAgICAgIDxkaXYgY2xhc3M9Imljb24tdGl0bGUiPgogICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9InRpdGxlLWljb24gc3VjY2VzcyAtbWwwIj48L3NwYW4+IC0tPgogICAgICAgIDxzcGFuIGNsYXNzPSJ0aXRsZS10eHQiPlZvdHJlIGRlbWFuZGUgYSBiaWVuIMOpdMOpIGVudm95w6llITwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICAgIDxwIGNsYXNzPSJkZWZhdWx0U3VjY2VzcyI+PGJyPkhhd2tlc2J1cnkgSG9uZGEgdm91cyByZW1lcmNpZSBkJ2F2b2lyIGNvbW11bmlxdcOpIHZvdHJlIGRlbWFuZGUuIFVuIGNvbnNlaWxsZXIgY29tbXVuaXF1ZXJhIGF2ZWMgdm91cyBzb3VzIHBldS48L3A+CiAgICAgIDxwIGNsYXNzPSJzZXJ2aWNlU3VjY2VzcyIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPjxicj5NZXJjaSBwb3VyIHZvdHJlIGRlbWFuZGUuIFVuIG1lbWJyZSBkZSBub3RyZSDDqXF1aXBlIGNvbW11bmlxdWVyYSBhdmVjIHZvdXMgc291cyBwZXUuPC9wPgogICAgICA8IS0tIDxhIGNsYXNzPSJjbG9zZS1yZXZlYWwtbW9kYWwiPiYjMjE1OzwvYT4gLS0+CiAgICAgIDxkaXYgY2xhc3M9ImVtYWlsLWNvbnNlbnQtYnRucyAtcHQyMCAtcmlnaHQgYW1wQ29uc2VudFJlc3BvbnNlU2VuZERpc21pc3MiPgogICAgICAgIDxhIGhyZWY9Ij9wYXRoPSMiIGNsYXNzPSIgLXVwcGVyY2FzZSBidG4tZGVmYXVsdCAiIG9uY2xpY2s9IiQoJy5jbG9zZS1yZXZlYWwtbW9kYWw6dmlzaWJsZScpLnRyaWdnZXIoJ2NsaWNrJyk7cmV0dXJuIGZhbHNlOyI+RmVybWVyPC9hPgogICAgICA8L2Rpdj4KICAgICAgPGZvcm0gaWQ9ImVtYWlsbXNnZnJtX1RyYWRlSW5CYXJQb3B1cENvbnRhaW5lciIgY2xhc3M9ImNvbmZpcm1faHRtbCIgdGFyZ2V0PSJpZnJhbWUiIG1ldGhvZD0icG9zdCIgYWN0aW9uPSIvY29uZmlybWF0aW9uLmh0bWwiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJsYWJlbCIgY2xhc3M9ImxhYmVsZW1haWwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzZWN0aW9uIiBjbGFzcz0ibGFiZWxzZWN0aW9uIiB2YWx1ZT0iT2NjYXNpb24iPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJicmFuZCIgY2xhc3M9ImJyYW5kZW1haWwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJtb2RlbCIgY2xhc3M9Im1vZGVsZW1haWwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ5ZWFyIiBjbGFzcz0ieWVhcmVtYWlsIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZ29vZ2xlaWQiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJnb29nbGVpZGQyY21lZGlhIiB2YWx1ZT0iIj4KCQkJCQkJICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhZHdvcmRzY29uaWQiIHZhbHVlPSI4ODE3NjI0NDYiPgoJCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWR3b3Jkc2xhYmVsaWQiIHZhbHVlPSJFSVQ2Q0p2MTltWVFqc0c2cEFNIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYmluZ2NvbmlkIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYmluZ2FjdGlvbmlkIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYmluZ2RvbWFpbmlkIiB2YWx1ZT0iIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFkcm9sbEFkdiIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFkcm9sbFBpeCIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmYWNlYm9va0NvbklkIiB2YWx1ZT0iNjgzNDIyNDcyMTk0OTY0Ij4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRvbWFpbiIgdmFsdWU9Imhhd2tlc2J1cnlob25kYS5jYSI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InJlZmVycmVyIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZGVwYXJ0bWVudCIgdmFsdWU9Ik5FVyI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImxlYWRfZGVwYXJ0bWVudCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzZXhwcmVzcyIgY2xhc3M9ImlzZXhwcmVzcyIgdmFsdWU9IjAiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc3Byb21vIiB2YWx1ZT0iMCI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzaG9tZXBhZ2UiIHZhbHVlPSIwIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idGVzdG1vZGUiIGNsYXNzPSJ0ZXN0bW9kZSIgdmFsdWU9IjAiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibGVhZFR5cGUiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJwYWdlSUQiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjdXJyZW50VVJMIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNDb25maXJtUG9wdXAiIHZhbHVlPSIiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY29uZmlybV9lbWFpbCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNvbmZpcm1fZmlyc3RfbmFtZSIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNvbmZpcm1fbGFzdF9uYW1lIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY29uZmlybV9waG9uZV9udW1iZXIiIHZhbHVlPSIiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNGdWxsV2lkdGgiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkZWFsZXJOYW1lIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYnV0dG9uUG9zaXRpb24iIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc01vYmlsZU5ld1ZEUCIgdmFsdWU9IjEiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmcm9tQXV0b0F1YmFpbmUiIHZhbHVlPSIiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9Ik5FVyIgbmFtZT0idGV4dENhclNlY3Rpb25UeXBlIiBzdHlsZT0iZGlzcGxheTpub25lOyI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImxhbmciIHZhbHVlPSJmciI+CiAgICAgIDwvZm9ybT4KICAgICAgPGlmcmFtZSB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBuYW1lPSJpZnJhbWUiIGZyYW1lYm9yZGVyPSIwIiBzdHlsZT0id2lkdGg6MXB4O2hlaWdodDoxcHg7Ij48L2lmcmFtZT4KICAgIDwvZGl2PgoKICAgIDxkaXYgaWQ9ImVtYWlsRmFpbE1lc3NhZ2VfVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIiBjbGFzcz0icmV2ZWFsLW1vZGFsIGVtYWlsLWNvbnNlbnQtYm94IiBzdHlsZT0id2lkdGg6NjAlOyI+CiAgICAgIDxzcGFuIGNsYXNzPSJmYWlsIj5VbmUgZXJyZXVyIHMnZXN0IHByb2R1aXRlPC9zcGFuPgogICAgICA8cD5Ob3VzIG4nYXZvbnMgcGFzIHB1IGVudm95ZXIgdm90cmUgbWVzc2FnZS4gUydpbCB2b3VzIHBsYcOudCByYWZyYcOuY2hpciBldCBlc3NheWV6IMOgIG5vdXZlYXU8L3A+CiAgICAgIDxkaXYgY2xhc3M9ImNsb3NlLXJldmVhbC1tb2RhbCI+PGVtIGNsYXNzPSJmYSBmYS10aW1lcy1jaXJjbGUiPjwvZW0+PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9Ii1wdDIwIC1yaWdodCBhbXBDb25zZW50UmVzcG9uc2VTZW5kRGlzbWlzcyI+CiAgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgY2xhc3M9IiAtdXBwZXJjYXNlIGJ0bi1kZWZhdWx0ICIgb25jbGljaz0iJCgnI2VtYWlsRmFpbE1lc3NhZ2UnKS50cmlnZ2VyKCdyZXZlYWw6Y2xvc2UnKTsiIHZhbHVlPSJGZXJtZXIiPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKCgkJCQk8IS0tIE9POjplMjVkNmNmYWIzOTI3ZDc4ZDllMmY1YTJlMzQ3NjAxNiAtLT4KCQkKDTwhLS0gVFJBREUgSU4gQkFSIE5FV0NBUlMgLS0+Cg0KPCEtLUVORF9SRU1PVkFCTEVfQ09ERV9CTE9DS19DT01NRU5UXzAwMDEtLT4KCjwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgaWQ9InVuZGVyQmFubmVyIj48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiBPdXRlckJveExheWVyIj4KICAgICAgICAJPGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIiPgogICAgICAgIAkJPGRpdiBjbGFzcz0iSW5uZXJCb3hMYXllciI+PGgxIGNsYXNzPSJkZWZhdWx0IEgxXzE2OTQgIj48ZGl2PjxkaXY+SG9uZGEgbmV1dmVzIDIwMjUgJmFtcDsgMjAyNiDDoCB2ZW5kcmXCoDwvZGl2PjxkaXY+w6AgSGF3a2VzYnVyeSAocHLDqHMgZGUgR2F0aW5lYXUgJmFtcDsgT3R0YXdhKcKgPC9kaXY+PC9kaXY+PC9oMT48L2Rpdj48ZGl2IGNsYXNzPSJJbm5lckJveExheWVyIj48L2Rpdj4JCQkJCTwhLS0gT1BFTiBNT0JJTEUgRklMVEVSIEJVVFRPTiAoJy5fX0xJTkVfXy4nKS0tPgoJPGRpdiBjbGFzcz0iZmlsdGVyVG9nZ2xlV3JhcHBlciI+CgkJPGJ1dHRvbiBpZD0idG9nZ2xlRmlsdGVyQnRuIiBjbGFzcz0iZmlsdGVyVG9nZ2xlQnRuIj5GaWx0cmVyPC9idXR0b24+Cgk8L2Rpdj4KCTwhLS0gQ0xPU0UgTU9CSUxFIEZJTFRFUiBCVVRUT04gKCcuX19MSU5FX18uJyktLT4KCQkJCTxkaXYgaWQ9InNpZGVTaWRlYmFyRmlsdGVyIiBjbGFzcz0ic2lkZVNpZGViYXIiPgoJCQkJCTxkaXYgY2xhc3M9InNpZGViYXJIZWFkZXIiPgoJCQkJCQk8ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiBkaXZGaWx0ZXJCb3hUaXRsZSI+CgkJCQkJCQlSYWZmaW5leiB2b3RyZSByZWNoZXJjaGUgOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGJ1dHRvbiBpZD0iY2xvc2VTaWRlYmFyQnRuIiBjbGFzcz0iY2xvc2VCdG4iPsOXPC9idXR0b24+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBpZD0iZmlsdGVyQ29udGVudCI+CgkJCQkJCTxkaXYgaWQ9ImZpbHRlck1haW5Cb3giIGNsYXNzPSJJbm5lckJveExheWVyIGJsYWNrLXRleHQiPgoJCQkJCQkJPGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIiPgoJCQkJCQkJCTxkaXYgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEyIGRpdkZpbHRlck91dGVyQm94Ij4KCQkJCQkJCQkJPGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIiPgoJCQkJCQkJCQkJPGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIiPgoJCQkJCQkJCQkJCTxkaXYgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEyIj48ZGl2IGNsYXNzPSJkaXZGaWx0ZXJUaXRsZSI+VHlwZSBkZSBjYXJyb3NzZXJpZTwvZGl2Pjx1bCBjbGFzcz0iIj48bGkgY2xhc3M9IiI+PGlucHV0IGNsYXNzPSJmaWx0ZXJDaGVjayBjYXRlZ29yeSIgaWQ9InNob3dDbGFzc19jYXIiIHR5cGU9ImNoZWNrYm94IiB2YWx1ZT0iY2FyIiBjaGVja2VkPjxsYWJlbCBjbGFzcz0iZmlsdGVyU3BhbiBjYXRlZ29yeSIgZm9yPSJzaG93Q2xhc3NfY2FyIj5BdXRvPC9sYWJlbD48L2xpPjxsaSBjbGFzcz0iIj48aW5wdXQgY2xhc3M9ImZpbHRlckNoZWNrIGNhdGVnb3J5IiBpZD0ic2hvd0NsYXNzX3RydWNrIiB0eXBlPSJjaGVja2JveCIgdmFsdWU9InRydWNrIiBjaGVja2VkPjxsYWJlbCBjbGFzcz0iZmlsdGVyU3BhbiBjYXRlZ29yeSIgZm9yPSJzaG93Q2xhc3NfdHJ1Y2siPkNhbWlvbjwvbGFiZWw+PC9saT48bGkgY2xhc3M9IiI+PGlucHV0IGNsYXNzPSJmaWx0ZXJDaGVjayBjYXRlZ29yeSIgaWQ9InNob3dDbGFzc19taW5pdmFuIiB0eXBlPSJjaGVja2JveCIgdmFsdWU9Im1pbml2YW4iIGNoZWNrZWQ+PGxhYmVsIGNsYXNzPSJmaWx0ZXJTcGFuIGNhdGVnb3J5IiBmb3I9InNob3dDbGFzc19taW5pdmFuIj5NaW5pLUZvdXJnb25uZXR0ZTwvbGFiZWw+PC9saT48bGkgY2xhc3M9IiI+PGlucHV0IGNsYXNzPSJmaWx0ZXJDaGVjayBjYXRlZ29yeSIgaWQ9InNob3dDbGFzc19zdXYiIHR5cGU9ImNoZWNrYm94IiB2YWx1ZT0ic3V2IiBjaGVja2VkPjxsYWJlbCBjbGFzcz0iZmlsdGVyU3BhbiBjYXRlZ29yeSIgZm9yPSJzaG93Q2xhc3Nfc3V2Ij5WVVM8L2xhYmVsPjwvbGk+PC91bD48L2Rpdj48ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiI+PC9kaXY+PGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIiPjxkaXYgY2xhc3M9ImRpdkZpbHRlclRpdGxlIj5Nb3RyaWNpdMOpPC9kaXY+PHVsIGNsYXNzPSIiPjxsaSBjbGFzcz0iIj48aW5wdXQgaWQ9ImZpbHRlckRyaXZlVHJhaW5DaGVjazEiIGNsYXNzPSJmaWx0ZXJDaGVjayBkcml2ZXRyYWluIiB0eXBlPSJjaGVja2JveCIgdmFsdWU9IjEiIGRhdGEtZHJpdmV0cmFpbj0iRldEIiBjaGVja2VkPjxsYWJlbCBmb3I9ImZpbHRlckRyaXZlVHJhaW5DaGVjazEiIGNsYXNzPSJmaWx0ZXJTcGFuIj5UcmFjdGlvbiBhdmFudDwvbGFiZWw+PC9saT48L3VsPjwvZGl2PjxkaXYgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEyIj48ZGl2IGNsYXNzPSJkaXZGaWx0ZXJUaXRsZSI+VHlwZSBkZSBjYXJidXJhbnQ8L2Rpdj48dWwgY2xhc3M9IiI+CTxsaSBjbGFzcz0iIj4KCQk8aW5wdXQgZGF0YS1lc3NlbmNlPSJlbGVjdHJpYyIgY2xhc3M9ImZpbHRlckNoZWNrIGZ1ZWx0eXBlIiBpZD0iZmlsdGVyRXNzZW5jZUNoZWNrMyIgdHlwZT0iY2hlY2tib3giIHZhbHVlPSIzIiBjaGVja2VkPgoJCTxsYWJlbCBmb3I9ImZpbHRlckVzc2VuY2VDaGVjazMiIGNsYXNzPSJmaWx0ZXJTcGFuIj4KCQkJw4lsZWN0cmlxdWUKCQk8L2xhYmVsPgoJPC9saT4JPGxpIGNsYXNzPSIiPgoJCTxpbnB1dCBkYXRhLWVzc2VuY2U9ImdhcyIgY2xhc3M9ImZpbHRlckNoZWNrIGZ1ZWx0eXBlIiBpZD0iZmlsdGVyRXNzZW5jZUNoZWNrMSIgdHlwZT0iY2hlY2tib3giIHZhbHVlPSIxIiBjaGVja2VkPgoJCTxsYWJlbCBmb3I9ImZpbHRlckVzc2VuY2VDaGVjazEiIGNsYXNzPSJmaWx0ZXJTcGFuIj4KCQkJRXNzZW5jZQoJCTwvbGFiZWw+Cgk8L2xpPgk8bGkgY2xhc3M9IiI+CgkJPGlucHV0IGRhdGEtZXNzZW5jZT0iaHlicmlkIiBjbGFzcz0iZmlsdGVyQ2hlY2sgZnVlbHR5cGUiIGlkPSJmaWx0ZXJFc3NlbmNlQ2hlY2s0IiB0eXBlPSJjaGVja2JveCIgdmFsdWU9IjQiIGNoZWNrZWQ+CgkJPGxhYmVsIGZvcj0iZmlsdGVyRXNzZW5jZUNoZWNrNCIgY2xhc3M9ImZpbHRlclNwYW4iPgoJCQlIeWJyaWRlCgkJPC9sYWJlbD4KCTwvbGk+PC91bD48L2Rpdj48ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiI+PGRpdiBjbGFzcz0iZGl2RmlsdGVyVGl0bGUiPlRyaWVyIHBhcjwvZGl2Pjx1bCBjbGFzcz0iIj48bGkgY2xhc3M9IiI+PGlucHV0IGlkPSJyYWRpb01vZGxlIiBjbGFzcz0icmFkaW9Tb3J0IiB0eXBlPSJyYWRpbyIgbmFtZT0ic29ydGJ5IiB2YWx1ZT0ibW9kZWwiIGNoZWNrZWQ+PGxhYmVsIGNsYXNzPSJmaWx0ZXJTcGFuIiBmb3I9InJhZGlvTW9kbGUiPk1vZMOobGU8bGkgY2xhc3M9IiI+PGlucHV0IGlkPSJyYWRpb1ByaWNlIiBjbGFzcz0icmFkaW9Tb3J0IiB0eXBlPSJyYWRpbyIgbmFtZT0ic29ydGJ5IiB2YWx1ZT0icHJpY2UiPjxsYWJlbCBjbGFzcz0iZmlsdGVyU3BhbiIgZm9yPSJyYWRpb1ByaWNlIj5Qcml4PC9sYWJlbD48L2xpPjxsaSBjbGFzcz0iIj48aW5wdXQgaWQ9InJhZGlvQ29uc28iIGNsYXNzPSJyYWRpb1NvcnQiIHR5cGU9InJhZGlvIiBuYW1lPSJzb3J0YnkiIHZhbHVlPSJjb25zbyI+PGxhYmVsIGNsYXNzPSJmaWx0ZXJTcGFuIiBmb3I9InJhZGlvQ29uc28iPkwvMTAwa208L2xhYmVsPjwvbGk+PC9sYWJlbD48L2xpPjwvdWw+PC9kaXY+CQkJCQkKCQkJCQkJCQkJCTwvZGl2PgoJCQkJCQkJCQkJPGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIiPgoJCQkJCQkJCQkJCQkJCQk8ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiBkaXZQcmljZVJhbmdlU2xpZGVyIiBpZD0icHJpY2VSYW5nZVNsaWRlckZpbHRlckNvbnRhaW5lciI+CgkJCQkJPGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIgZGl2RmlsdGVyVGl0bGUiPgoJCQkJCQlGb3VyY2hldHRlIGRlIHByaXgKCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiByYW5nZS1zbGlkZXItcHJpY2VzIj4KCQkJCQkJPHNwYW4gY2xhc3M9InByaWNlLW1pbiBmb3JtYXQtcHJpY2UiPjwvc3Bhbj7CoMKgw6DCoMKgPHNwYW4gY2xhc3M9InByaWNlLW1heCBmb3JtYXQtcHJpY2UiPjwvc3Bhbj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiI+CgkJCQkJCTxkaXYgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEgcmFuZ2Utc2xpZGVyLWxlZnQiPk1pbjwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW45IHJhbmdlLXNsaWRlciIgYXR0ci1wcmljZS1taW49IjMxMzAyIiBhdHRyLXByaWNlLW1heD0iNjMxMjIiPjwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xIHJhbmdlLXNsaWRlci1yaWdodCI+TWF4PC9kaXY+CgkJCQkJPC9kaXY+CgkJCQk8L2Rpdj4KCQkJCQkJCQkJCTwvZGl2PgoJCQkJCQkJCQk8L2Rpdj4KCQkJCQkJCQk8L2Rpdj4KCQkJCQkJCTwvZGl2PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PjwhLS0gT1BFTiBDQVRFR09SSUVTQk9YV1JBUFBFUiAoMTk4OCktLT48ZGl2IGNsYXNzPSJJbm5lckJveExheWVyIGRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIj48IS0tIE9QRU4gQ0FURUdPUllCT1hXUkFQUEVSICgyMDUyKSAtLT48ZGl2IGlkPSJjbGFzc2Nhcl9jb250YWluZXIiIGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiBkaXZDYXRlZ29yeUJveFdyYXBwZXIiIHN0YXRlPSJvcGVuIiBuYnZpc2libGU9IjEiPjxoMiBjbGFzcz0iZGVmYXVsdCBpY29uLWhlYWRpbmcgZmxleC1ib3ggYWxpZ24tY2VudGVyIj4KCTxzcGFuIGNsYXNzPSJmYSBmYS1jaGV2cm9uLXJpZ2h0IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9zcGFuPgoJPGJveC1sYyBjbGFzcz0iLXB2MCI+CgkJPGRpdiBjbGFzcz0ibWFpblRleHQgLWJvbGQiPkF1dG9zIG5ldXZlcyBIb25kYSAyMDI1ICZhbXA7IDIwMjY8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJzZWNvbmRhcnlUZXh0Ij7DoCBIYXdrZXNidXJ5IChwcsOocyBkZSBHYXRpbmVhdSAmYW1wOyBPdHRhd2EpPC9kaXY+Cgk8L2JveC1sYz4KPC9oMj48ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiBkaXZDYXJzQm94V3JhcHBlciBDTEFTU19jYXIiPgk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVPdXRlckJveCBkaXZDYXJTaW5nbGVPdXRlckJveFdpdGhDVEEgcmViYXRlQm9yZGVyQ29sb3IiIGlkPSJmYnhfY2FyXzEiPgoJCQoJCTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZUlubmVyQm94IiBpZD0iIj4KCQkJCgkJCTxkaXYgY2xhc3M9ImRpdkNhclRpdGxlQ29udGFpbmVyIj4KCQkJCTxhIHRpdGxlPSJIb25kYSBDaXZpYyBCZXJsaW5lIDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9Ib25kYS1DaXZpY19TZWRhbi0yMDI2Lmh0bWwiIGRhdGEtbWFrZT0iSG9uZGEiIGRhdGEtbW9kZWw9IkNpdmljIEJlcmxpbmUgMjAyNiI+CgkJCQkJPGgzPgoJCQkJCQk8c3BhbiBjbGFzcz0ic3BhbkNhck1ha2UgIj5Ib25kYTwvc3Bhbj48YnI+CgkJCQkJCTxzcGFuIGNsYXNzPSJtb2RlbE5hbWUgc3Bhbk1vZGVsTmFtZSI+Q2l2aWMgQmVybGluZSAyMDI2PC9zcGFuPgoJCQkJCTwvaDM+CgkJCQk8L2E+CgkJCQkgICAgPCEtLSBPUEVOIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CiAgICA8ZGl2IGNsYXNzPSJkaXZOZXdDYXJTdGFydFByaWNlIj4KICAgICAgICBMWCBiZXJsaW5lIENWVCDDoCBwYXJ0aXIgZGUKICAgICAgICA8c3BhbiBjbGFzcz0iIj4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+MzEgMzAyPC9zcGFuPjwvc3Bhbj4KICAgICAgICA8aSBzdHlsZT0iY29sb3I6IzAwMDtmb250LXNpemU6MjBweDsiIGNsYXNzPSJjYXJQcmljZUluaXRpYWxUb29sVGlwSWNvbiBmYWwgZmEtaW5mby1jaXJjbGUgYmxhY2tDb2xvckJvbGQiIGRhdGEtdG9vbHRpcD0nJmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtQRFNGOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDsyOCAzNDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtUcmFuc3BvcnQgJmFtcDsgUHLDqXBhcmF0aW9uOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDsxIDgzMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O0ZyYWlzIGFkbWluLiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDsxIDAwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1RheGUgc3VyIHBuZXVzJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzIzJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7T01WSUMmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MTAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtUYXhlIEFDOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDsxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtUb3RhbCZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDszMSAzMDMmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jz48L2k+CiAgICA8L2Rpdj4KICAgIDwhLS0gQ0xPU0UgTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4JCQkJCTxkaXYgY2xhc3M9ImRpdk5ld0NhckRpc2NsYWltZXJQcmljZSIgc3R5bGU9ImZvbnQtc2l6ZToxMnB4OyI+K1RWSCAmYW1wOyBMaWNlbnNlPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW5TdG9ja0xpbmsiIGhpZGRlbj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgZGF0YS10eXBlPSJpbnZkYXRhIiBkYXRhLW1ha2U9IkhvbmRhIiBkYXRhLW1vZGVsPSJDaXZpYyBTZWRhbiIgZGF0YS15ZWFyPSIyMDI2IiBkYXRhLXN0eWxlaWRzPSI0Nzg1ODgsNDc4NTg5IiBkYXRhLWh5YnJpZD0iMCI+Cgk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckltYWdlQ29udGFpbmVyIGZsZXgtY2VudGVyIGFsaWduLWNlbnRlciBkaXZDYXJJbWFnZUNvbnRhaW5lcldpdGhDVEEiPgoJCQkJPGEgdGl0bGU9IkhvbmRhIENpdmljIEJlcmxpbmUgMjAyNiIgaHJlZj0iP3BhdGg9L25ldWZzL0hvbmRhLUNpdmljX1NlZGFuLTIwMjYuaHRtbCI+CgkJCQkJPGltZyBhbHQ9IkhvbmRhIENpdmljIEJlcmxpbmUgMjAyNiIgYm9yZGVyPSIwIiBjbGFzcz0ibGl2ZWxvYWQgb3B0YW5vbi1jYXRlZ29yeS1DMDAwMSIgZGF0YS1pbWdzcmM9Imh0dHBzOi8vY2FyaW1hZ2VzLmQyY21lZGlhLmNhL25ld2NhcmltYWdlcy9mci9Ib25kYS9DaXZpY19TZWRhbi8yMDI2LzQ3ODU4OC9TaWx2ZXIvcHJvZmlsZS53ZWJwIiBzcmM9Imh0dHBzOi8vY2FyaW1hZ2VzLmQyY21lZGlhLmNhL25ld2NhcmltYWdlcy9mci9Ib25kYS9DaXZpY19TZWRhbi8yMDI2LzQ3ODU4OC9TaWx2ZXIvcHJvZmlsZS53ZWJwIiBkYXRhLW90LWlnbm9yZSBkYXRhLWNvb2tpZWNvbnNlbnQ9Imlnbm9yZSI+CgkJCQk8L2E+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJGb290ZXJDb250YWluZXIgc3RhY2stbGMgLS1zLTkiPgoJCQkJCTxkaXYgY2xhc3M9ImNhclBheW1lbnRXcmFwcGVyIj4KCQkJPGRpdiBjbGFzcz0iY29udGVudC1za2VsZXRvbiBodG1sLWJsb2NrIiBkYXRhLWJsb2NrPSJwYXltZW50QmxvY2siIGRhdGEtdHlwZT0iYmxvY2siIGRhdGEtc291cmNlPSJzZXJ2ZXIiIGRhdGEtY2FsbGJhY2s9InBheW1lbnRDYWxjQmxvY2siPgoJCQoJPGlucHV0IG5hbWU9ImJsb2NrLWRhdGEiIHR5cGU9ImhpZGRlbiIgdmFsdWU9J3sic3R5bGVpZCI6IjQ3ODU4OCIsInRpdGxlIjoiSG9uZGEgQ2l2aWMgQmVybGluZSAyMDI2IiwiaHJlZiI6IlwvbmV1ZnNcL0hvbmRhLUNpdmljX1NlZGFuLTIwMjYuaHRtbCIsImxpbmtzdHlsZSI6IiIsImxpbmtjbGFzcyI6IiIsImNvbnRhaW5lcmNsYXNzIjoiZGl2Q2FyUGF5bWVudENvbnRhaW5lcldpdGhDVEEiLCJwcm9tb3RleHQiOiJEXHUwMGU5Y291dnJleiBwbHVzISJ9Jz4KCTwvZGl2PgoJPC9kaXY+CgkJCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJDb250YWN0Q1RBQ29udGFpbmVyIj4KCQkJCTxidXR0b24gc3R5bGU9IndpZHRoOjEwMCU7IiBjbGFzcz0iYnRuLWRlZmF1bHQiIG9uY2xpY2s9ImphdmFzY3JpcHQ6dm9pZChvcGVuU2hvd3Jvb21Db250YWN0UG9wdXAoZXZlbnQsICdIb25kYScsICdDaXZpYyBTZWRhbicsICcyMDI2JykpOyI+CgkgICAgICAgICAgICAgICAgQ29udGFjdGV6LW5vdXMKCSAgICAgICAgICAgIDwvYnV0dG9uPgoJCQk8L2Rpdj4KCQkJPC9kaXY+CgkJPC9kaXY+Cgk8L2Rpdj4JPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggZGl2Q2FyU2luZ2xlT3V0ZXJCb3hXaXRoQ1RBIHJlYmF0ZUJvcmRlckNvbG9yIiBpZD0iZmJ4X2Nhcl8yIj4KCQkKCQk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVJbm5lckJveCIgaWQ9IiI+CgkJCQoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJUaXRsZUNvbnRhaW5lciI+CgkJCQk8YSB0aXRsZT0iSG9uZGEgQ2l2aWMgw4AgaGF5b24gMjAyNiIgaHJlZj0iP3BhdGg9L25ldWZzL0hvbmRhLUNpdmljX0hhdGNoYmFjay0yMDI2Lmh0bWwiIGRhdGEtbWFrZT0iSG9uZGEiIGRhdGEtbW9kZWw9IkNpdmljIEhheW9uIDIwMjYiPgoJCQkJCTxoMz4KCQkJCQkJPHNwYW4gY2xhc3M9InNwYW5DYXJNYWtlICI+SG9uZGE8L3NwYW4+PGJyPgoJCQkJCQk8c3BhbiBjbGFzcz0ibW9kZWxOYW1lIHNwYW5Nb2RlbE5hbWUiPkNpdmljIMOAIGhheW9uIDIwMjY8L3NwYW4+CgkJCQkJPC9oMz4KCQkJCTwvYT4KCQkJCSAgICA8IS0tIE9QRU4gTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KICAgIDxkaXYgY2xhc3M9ImRpdk5ld0NhclN0YXJ0UHJpY2UiPgogICAgICAgIFNwb3J0IMOgIGhheW9uIENWVCDDoCBwYXJ0aXIgZGUKICAgICAgICA8c3BhbiBjbGFzcz0iIj4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+MzUgMTYyPC9zcGFuPjwvc3Bhbj4KICAgICAgICA8aSBzdHlsZT0iY29sb3I6IzAwMDtmb250LXNpemU6MjBweDsiIGNsYXNzPSJjYXJQcmljZUluaXRpYWxUb29sVGlwSWNvbiBmYWwgZmEtaW5mby1jaXJjbGUgYmxhY2tDb2xvckJvbGQiIGRhdGEtdG9vbHRpcD0nJmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtQRFNGOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDszMiAyMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtUcmFuc3BvcnQgJmFtcDsgUHLDqXBhcmF0aW9uOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDsxIDgzMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O0ZyYWlzIGFkbWluLiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDsxIDAwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1RheGUgc3VyIHBuZXVzJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzIzJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7T01WSUMmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MTAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtUYXhlIEFDOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDsxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtUb3RhbCZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDszNSAxNjMmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jz48L2k+CiAgICA8L2Rpdj4KICAgIDwhLS0gQ0xPU0UgTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4JCQkJCTxkaXYgY2xhc3M9ImRpdk5ld0NhckRpc2NsYWltZXJQcmljZSIgc3R5bGU9ImZvbnQtc2l6ZToxMnB4OyI+K1RWSCAmYW1wOyBMaWNlbnNlPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW5TdG9ja0xpbmsiIGhpZGRlbj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgZGF0YS10eXBlPSJpbnZkYXRhIiBkYXRhLW1ha2U9IkhvbmRhIiBkYXRhLW1vZGVsPSJDaXZpYyBIYXRjaGJhY2siIGRhdGEteWVhcj0iMjAyNiIgZGF0YS1zdHlsZWlkcz0iNDgwMjgzIiBkYXRhLWh5YnJpZD0iMCI+Cgk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckltYWdlQ29udGFpbmVyIGZsZXgtY2VudGVyIGFsaWduLWNlbnRlciBkaXZDYXJJbWFnZUNvbnRhaW5lcldpdGhDVEEiPgoJCQkJPGEgdGl0bGU9IkhvbmRhIENpdmljIMOAIGhheW9uIDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9Ib25kYS1DaXZpY19IYXRjaGJhY2stMjAyNi5odG1sIj4KCQkJCQk8aW1nIGFsdD0iSG9uZGEgQ2l2aWMgw4AgaGF5b24gMjAyNiIgYm9yZGVyPSIwIiBjbGFzcz0ibGl2ZWxvYWQgb3B0YW5vbi1jYXRlZ29yeS1DMDAwMSIgZGF0YS1pbWdzcmM9Imh0dHBzOi8vY2FyaW1hZ2VzLmQyY21lZGlhLmNhL25ld2NhcmltYWdlcy9mci9Ib25kYS9DaXZpY19IYXRjaGJhY2svMjAyNi80ODAyODMvU2lsdmVyL3Byb2ZpbGUud2VicCIgc3JjPSJodHRwczovL2NhcmltYWdlcy5kMmNtZWRpYS5jYS9uZXdjYXJpbWFnZXMvZnIvSG9uZGEvQ2l2aWNfSGF0Y2hiYWNrLzIwMjYvNDgwMjgzL1NpbHZlci9wcm9maWxlLndlYnAiIGRhdGEtb3QtaWdub3JlIGRhdGEtY29va2llY29uc2VudD0iaWdub3JlIj4KCQkJCTwvYT4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckZvb3RlckNvbnRhaW5lciBzdGFjay1sYyAtLXMtOSI+CgkJCQkJPGRpdiBjbGFzcz0iY2FyUGF5bWVudFdyYXBwZXIiPgoJCQk8ZGl2IGNsYXNzPSJjb250ZW50LXNrZWxldG9uIGh0bWwtYmxvY2siIGRhdGEtYmxvY2s9InBheW1lbnRCbG9jayIgZGF0YS10eXBlPSJibG9jayIgZGF0YS1zb3VyY2U9InNlcnZlciIgZGF0YS1jYWxsYmFjaz0icGF5bWVudENhbGNCbG9jayI+CgkJCgk8aW5wdXQgbmFtZT0iYmxvY2stZGF0YSIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0neyJzdHlsZWlkIjoiNDgwMjgzIiwidGl0bGUiOiJIb25kYSBDaXZpYyAmYW1wO0FncmF2ZTsgaGF5b24gMjAyNiIsImhyZWYiOiJcL25ldWZzXC9Ib25kYS1DaXZpY19IYXRjaGJhY2stMjAyNi5odG1sIiwibGlua3N0eWxlIjoiIiwibGlua2NsYXNzIjoiIiwiY29udGFpbmVyY2xhc3MiOiJkaXZDYXJQYXltZW50Q29udGFpbmVyV2l0aENUQSIsInByb21vdGV4dCI6IkRcdTAwZTljb3V2cmV6IHBsdXMhIn0nPgoJPC9kaXY+Cgk8L2Rpdj4KCQkJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckNvbnRhY3RDVEFDb250YWluZXIiPgoJCQkJPGJ1dHRvbiBzdHlsZT0id2lkdGg6MTAwJTsiIGNsYXNzPSJidG4tZGVmYXVsdCIgb25jbGljaz0iamF2YXNjcmlwdDp2b2lkKG9wZW5TaG93cm9vbUNvbnRhY3RQb3B1cChldmVudCwgJ0hvbmRhJywgJ0NpdmljIEhhdGNoYmFjaycsICcyMDI2JykpOyI+CgkgICAgICAgICAgICAgICAgQ29udGFjdGV6LW5vdXMKCSAgICAgICAgICAgIDwvYnV0dG9uPgoJCQk8L2Rpdj4KCQkJPC9kaXY+CgkJPC9kaXY+Cgk8L2Rpdj4JPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggZGl2Q2FyU2luZ2xlT3V0ZXJCb3hXaXRoQ1RBIHJlYmF0ZUJvcmRlckNvbG9yIiBpZD0iZmJ4X2Nhcl8zIj4KCQkKCQk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVJbm5lckJveCIgaWQ9IiI+CgkJCQoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJUaXRsZUNvbnRhaW5lciI+CgkJCQk8YSB0aXRsZT0iSG9uZGEgQ2l2aWMgU2kgQmVybGluZSAyMDI2IiBocmVmPSI\/cGF0aD0vbmV1ZnMvSG9uZGEtQ2l2aWNfU2lfU2VkYW4tMjAyNi5odG1sIiBkYXRhLW1ha2U9IkhvbmRhIiBkYXRhLW1vZGVsPSJDaXZpYyBTaSBiZXJsaW5lIDIwMjYiPgoJCQkJCTxoMz4KCQkJCQkJPHNwYW4gY2xhc3M9InNwYW5DYXJNYWtlICI+SG9uZGE8L3NwYW4+PGJyPgoJCQkJCQk8c3BhbiBjbGFzcz0ibW9kZWxOYW1lIHNwYW5Nb2RlbE5hbWUiPkNpdmljIFNpIEJlcmxpbmUgMjAyNjwvc3Bhbj4KCQkJCQk8L2gzPgoJCQkJPC9hPgoJCQkJICAgIDwhLS0gT1BFTiBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgogICAgPGRpdiBjbGFzcz0iZGl2TmV3Q2FyU3RhcnRQcmljZSI+CiAgICAgICAgTWFudWVsbGUgw6AgcGFydGlyIGRlCiAgICAgICAgPHNwYW4gY2xhc3M9IiI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjM5IDU2Mjwvc3Bhbj48L3NwYW4+CiAgICAgICAgPGkgc3R5bGU9ImNvbG9yOiMwMDA7Zm9udC1zaXplOjIwcHg7IiBjbGFzcz0iY2FyUHJpY2VJbml0aWFsVG9vbFRpcEljb24gZmFsIGZhLWluZm8tY2lyY2xlIGJsYWNrQ29sb3JCb2xkIiBkYXRhLXRvb2x0aXA9JyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7UERTRjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MzYgNjAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7VHJhbnNwb3J0ICZhbXA7IFByw6lwYXJhdGlvbjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MSA4MzAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtGcmFpcyBhZG1pbi4mbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MSAwMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtUYXhlIHN1ciBwbmV1cyZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDsyMyZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O09NVklDJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzEwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7VGF4ZSBBQzombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7VG90YWwmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MzkgNTYzJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0Oyc+PC9pPgogICAgPC9kaXY+CiAgICA8IS0tIENMT1NFIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CQkJCQk8ZGl2IGNsYXNzPSJkaXZOZXdDYXJEaXNjbGFpbWVyUHJpY2UiIHN0eWxlPSJmb250LXNpemU6MTJweDsiPitUVkggJmFtcDsgTGljZW5zZTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckluU3RvY2tMaW5rIiBoaWRkZW4+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGRhdGEtdHlwZT0iaW52ZGF0YSIgZGF0YS1tYWtlPSJIb25kYSIgZGF0YS1tb2RlbD0iQ2l2aWMgU2kgU2VkYW4iIGRhdGEteWVhcj0iMjAyNiIgZGF0YS1zdHlsZWlkcz0iNDc4ODExIiBkYXRhLWh5YnJpZD0iMCI+Cgk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckltYWdlQ29udGFpbmVyIGZsZXgtY2VudGVyIGFsaWduLWNlbnRlciBkaXZDYXJJbWFnZUNvbnRhaW5lcldpdGhDVEEiPgoJCQkJPGEgdGl0bGU9IkhvbmRhIENpdmljIFNpIEJlcmxpbmUgMjAyNiIgaHJlZj0iP3BhdGg9L25ldWZzL0hvbmRhLUNpdmljX1NpX1NlZGFuLTIwMjYuaHRtbCI+CgkJCQkJPGltZyBhbHQ9IkhvbmRhIENpdmljIFNpIEJlcmxpbmUgMjAyNiIgYm9yZGVyPSIwIiBjbGFzcz0ibGl2ZWxvYWQgb3B0YW5vbi1jYXRlZ29yeS1DMDAwMSIgZGF0YS1pbWdzcmM9Imh0dHBzOi8vY2FyaW1hZ2VzLmQyY21lZGlhLmNhL25ld2NhcmltYWdlcy9mci9Ib25kYS9DaXZpY19TaV9TZWRhbi8yMDI2LzQ3ODgxMS9SZWQvcHJvZmlsZS53ZWJwIiBzcmM9Imh0dHBzOi8vY2FyaW1hZ2VzLmQyY21lZGlhLmNhL25ld2NhcmltYWdlcy9mci9Ib25kYS9DaXZpY19TaV9TZWRhbi8yMDI2LzQ3ODgxMS9SZWQvcHJvZmlsZS53ZWJwIiBkYXRhLW90LWlnbm9yZSBkYXRhLWNvb2tpZWNvbnNlbnQ9Imlnbm9yZSI+CgkJCQk8L2E+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJGb290ZXJDb250YWluZXIgc3RhY2stbGMgLS1zLTkiPgoJCQkJCTxkaXYgY2xhc3M9ImNhclBheW1lbnRXcmFwcGVyIj4KCQkJPGRpdiBjbGFzcz0iY29udGVudC1za2VsZXRvbiBodG1sLWJsb2NrIiBkYXRhLWJsb2NrPSJwYXltZW50QmxvY2siIGRhdGEtdHlwZT0iYmxvY2siIGRhdGEtc291cmNlPSJzZXJ2ZXIiIGRhdGEtY2FsbGJhY2s9InBheW1lbnRDYWxjQmxvY2siPgoJCQoJPGlucHV0IG5hbWU9ImJsb2NrLWRhdGEiIHR5cGU9ImhpZGRlbiIgdmFsdWU9J3sic3R5bGVpZCI6IjQ3ODgxMSIsInRpdGxlIjoiSG9uZGEgQ2l2aWMgU2kgQmVybGluZSAyMDI2IiwiaHJlZiI6IlwvbmV1ZnNcL0hvbmRhLUNpdmljX1NpX1NlZGFuLTIwMjYuaHRtbCIsImxpbmtzdHlsZSI6IiIsImxpbmtjbGFzcyI6IiIsImNvbnRhaW5lcmNsYXNzIjoiZGl2Q2FyUGF5bWVudENvbnRhaW5lcldpdGhDVEEiLCJwcm9tb3RleHQiOiJEXHUwMGU5Y291dnJleiBwbHVzISJ9Jz4KCTwvZGl2PgoJPC9kaXY+CgkJCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJDb250YWN0Q1RBQ29udGFpbmVyIj4KCQkJCTxidXR0b24gc3R5bGU9IndpZHRoOjEwMCU7IiBjbGFzcz0iYnRuLWRlZmF1bHQiIG9uY2xpY2s9ImphdmFzY3JpcHQ6dm9pZChvcGVuU2hvd3Jvb21Db250YWN0UG9wdXAoZXZlbnQsICdIb25kYScsICdDaXZpYyBTaSBTZWRhbicsICcyMDI2JykpOyI+CgkgICAgICAgICAgICAgICAgQ29udGFjdGV6LW5vdXMKCSAgICAgICAgICAgIDwvYnV0dG9uPgoJCQk8L2Rpdj4KCQkJPC9kaXY+CgkJPC9kaXY+Cgk8L2Rpdj4JPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggZGl2Q2FyU2luZ2xlT3V0ZXJCb3hXaXRoQ1RBIHJlYmF0ZUJvcmRlckNvbG9yIiBpZD0iZmJ4X2Nhcl80Ij4KCQk8ZGl2IGNsYXNzPSJyZWJhdGVUYWciPjxzcGFuIGNsYXNzPSJyZWJhdGVUZXh0Ij5yYWJhaXMganVzcXUnw6A8L3NwYW4+PHNwYW4gY2xhc3M9InJlYmF0ZUFtb3VudCI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjIgMDAwPC9zcGFuPjwvc3Bhbj48L2Rpdj4KCQk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVJbm5lckJveCIgaWQ9IiI+CgkJCQoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJUaXRsZUNvbnRhaW5lciI+CgkJCQk8YSB0aXRsZT0iSG9uZGEgQWNjb3JkIEJlcmxpbmUgMjAyNSIgaHJlZj0iP3BhdGg9L25ldWZzL0hvbmRhLUFjY29yZF9TZWRhbi0yMDI1Lmh0bWwiIGRhdGEtbWFrZT0iSG9uZGEiIGRhdGEtbW9kZWw9IkFjY29yZCBCZXJsaW5lIDIwMjUiPgoJCQkJCTxoMz4KCQkJCQkJPHNwYW4gY2xhc3M9InNwYW5DYXJNYWtlICI+SG9uZGE8L3NwYW4+PGJyPgoJCQkJCQk8c3BhbiBjbGFzcz0ibW9kZWxOYW1lIHNwYW5Nb2RlbE5hbWUiPkFjY29yZCBCZXJsaW5lIDIwMjU8L3NwYW4+CgkJCQkJPC9oMz4KCQkJCTwvYT4KCQkJCSAgICA8IS0tIE9QRU4gTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KICAgIDxkaXYgY2xhc3M9ImRpdk5ld0NhclN0YXJ0UHJpY2UiPgogICAgICAgIFNFIGJlcmxpbmUgQ1ZUIMOgIHBhcnRpciBkZQogICAgICAgIDxzcGFuIGNsYXNzPSIiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj40MSAyNjI8L3NwYW4+PC9zcGFuPgogICAgICAgIDxpIHN0eWxlPSJjb2xvcjojMDAwO2ZvbnQtc2l6ZToyMHB4OyIgY2xhc3M9ImNhclByaWNlSW5pdGlhbFRvb2xUaXBJY29uIGZhbCBmYS1pbmZvLWNpcmNsZSBibGFja0NvbG9yQm9sZCIgZGF0YS10b29sdGlwPScmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1BEU0Y6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzM4IDMwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1RyYW5zcG9ydCAmYW1wOyBQcsOpcGFyYXRpb246Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzEgODMwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7RnJhaXMgYWRtaW4uJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzEgMDAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7VGF4ZSBzdXIgcG5ldXMmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MjMmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtPTVZJQyZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDsxMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1RheGUgQUM6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzEwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1RvdGFsJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzQxIDI2MyZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsnPjwvaT4KICAgIDwvZGl2PgogICAgPCEtLSBDTE9TRSBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgkJCQkJPGRpdiBjbGFzcz0iZGl2TmV3Q2FyRGlzY2xhaW1lclByaWNlIiBzdHlsZT0iZm9udC1zaXplOjEycHg7Ij4rVFZIICZhbXA7IExpY2Vuc2U8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJblN0b2NrTGluayIgaGlkZGVuPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBkYXRhLXR5cGU9ImludmRhdGEiIGRhdGEtbWFrZT0iSG9uZGEiIGRhdGEtbW9kZWw9IkFjY29yZCBTZWRhbiIgZGF0YS15ZWFyPSIyMDI1IiBkYXRhLXN0eWxlaWRzPSI0NjQ1OTYiIGRhdGEtaHlicmlkPSIwIj4KCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW1hZ2VDb250YWluZXIgZmxleC1jZW50ZXIgYWxpZ24tY2VudGVyIGRpdkNhckltYWdlQ29udGFpbmVyV2l0aENUQSI+CgkJCQk8YSB0aXRsZT0iSG9uZGEgQWNjb3JkIEJlcmxpbmUgMjAyNSIgaHJlZj0iP3BhdGg9L25ldWZzL0hvbmRhLUFjY29yZF9TZWRhbi0yMDI1Lmh0bWwiPgoJCQkJCTxpbWcgYWx0PSJIb25kYSBBY2NvcmQgQmVybGluZSAyMDI1IiBib3JkZXI9IjAiIGNsYXNzPSJsYXp5bG9hZCBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLWltZ3NyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0hvbmRhL0FjY29yZF9TZWRhbi8yMDI1LzQ2NDU5Ni9TaWx2ZXIvcHJvZmlsZS53ZWJwIiBkYXRhLW90LWlnbm9yZSBkYXRhLWNvb2tpZWNvbnNlbnQ9Imlnbm9yZSI+CgkJCQk8L2E+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJGb290ZXJDb250YWluZXIgc3RhY2stbGMgLS1zLTkiPgoJCQkJCTxkaXYgY2xhc3M9ImNhclBheW1lbnRXcmFwcGVyIj4KCQkJPGRpdiBjbGFzcz0iY29udGVudC1za2VsZXRvbiBodG1sLWJsb2NrIiBkYXRhLWJsb2NrPSJwYXltZW50QmxvY2siIGRhdGEtdHlwZT0iYmxvY2siIGRhdGEtc291cmNlPSJzZXJ2ZXIiIGRhdGEtY2FsbGJhY2s9InBheW1lbnRDYWxjQmxvY2siPgoJCQoJPGlucHV0IG5hbWU9ImJsb2NrLWRhdGEiIHR5cGU9ImhpZGRlbiIgdmFsdWU9J3sic3R5bGVpZCI6IjQ2NDU5NiIsInRpdGxlIjoiSG9uZGEgQWNjb3JkIEJlcmxpbmUgMjAyNSIsImhyZWYiOiJcL25ldWZzXC9Ib25kYS1BY2NvcmRfU2VkYW4tMjAyNS5odG1sIiwibGlua3N0eWxlIjoiIiwibGlua2NsYXNzIjoiIiwiY29udGFpbmVyY2xhc3MiOiJkaXZDYXJQYXltZW50Q29udGFpbmVyV2l0aENUQSIsInByb21vdGV4dCI6IkRcdTAwZTljb3V2cmV6IHBsdXMhIn0nPgoJPC9kaXY+Cgk8L2Rpdj4KCQkJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckNvbnRhY3RDVEFDb250YWluZXIiPgoJCQkJPGJ1dHRvbiBzdHlsZT0id2lkdGg6MTAwJTsiIGNsYXNzPSJidG4tZGVmYXVsdCIgb25jbGljaz0iamF2YXNjcmlwdDp2b2lkKG9wZW5TaG93cm9vbUNvbnRhY3RQb3B1cChldmVudCwgJ0hvbmRhJywgJ0FjY29yZCBTZWRhbicsICcyMDI1JykpOyI+CgkgICAgICAgICAgICAgICAgQ29udGFjdGV6LW5vdXMKCSAgICAgICAgICAgIDwvYnV0dG9uPgoJCQk8L2Rpdj4KCQkJPC9kaXY+CgkJPC9kaXY+Cgk8L2Rpdj4JPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggZGl2Q2FyU2luZ2xlT3V0ZXJCb3hXaXRoQ1RBIHJlYmF0ZUJvcmRlckNvbG9yIiBpZD0iZmJ4X2Nhcl81Ij4KCQkKCQk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVJbm5lckJveCIgaWQ9IiI+CgkJCQoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJUaXRsZUNvbnRhaW5lciI+CgkJCQk8YSB0aXRsZT0iSG9uZGEgQWNjb3JkIEJlcmxpbmUgMjAyNiIgaHJlZj0iP3BhdGg9L25ldWZzL0hvbmRhLUFjY29yZF9TZWRhbi0yMDI2Lmh0bWwiIGRhdGEtbWFrZT0iSG9uZGEiIGRhdGEtbW9kZWw9IkFjY29yZCBCZXJsaW5lIDIwMjYiPgoJCQkJCTxoMz4KCQkJCQkJPHNwYW4gY2xhc3M9InNwYW5DYXJNYWtlICI+SG9uZGE8L3NwYW4+PGJyPgoJCQkJCQk8c3BhbiBjbGFzcz0ibW9kZWxOYW1lIHNwYW5Nb2RlbE5hbWUiPkFjY29yZCBCZXJsaW5lIDIwMjY8L3NwYW4+CgkJCQkJPC9oMz4KCQkJCTwvYT4KCQkJCSAgICA8IS0tIE9QRU4gTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KICAgIDxkaXYgY2xhc3M9ImRpdk5ld0NhclN0YXJ0UHJpY2UiPgogICAgICAgIFNFIGJlcmxpbmUgQ1ZUIMOgIHBhcnRpciBkZQogICAgICAgIDxzcGFuIGNsYXNzPSIiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj40MSA0NjI8L3NwYW4+PC9zcGFuPgogICAgICAgIDxpIHN0eWxlPSJjb2xvcjojMDAwO2ZvbnQtc2l6ZToyMHB4OyIgY2xhc3M9ImNhclByaWNlSW5pdGlhbFRvb2xUaXBJY29uIGZhbCBmYS1pbmZvLWNpcmNsZSBibGFja0NvbG9yQm9sZCIgZGF0YS10b29sdGlwPScmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1BEU0Y6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzM4IDUwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1RyYW5zcG9ydCAmYW1wOyBQcsOpcGFyYXRpb246Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzEgODMwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7RnJhaXMgYWRtaW4uJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzEgMDAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7VGF4ZSBzdXIgcG5ldXMmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MjMmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtPTVZJQyZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDsxMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1RheGUgQUM6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzEwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1RvdGFsJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzQxIDQ2MyZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsnPjwvaT4KICAgIDwvZGl2PgogICAgPCEtLSBDTE9TRSBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgkJCQkJPGRpdiBjbGFzcz0iZGl2TmV3Q2FyRGlzY2xhaW1lclByaWNlIiBzdHlsZT0iZm9udC1zaXplOjEycHg7Ij4rVFZIICZhbXA7IExpY2Vuc2U8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJblN0b2NrTGluayIgaGlkZGVuPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBkYXRhLXR5cGU9ImludmRhdGEiIGRhdGEtbWFrZT0iSG9uZGEiIGRhdGEtbW9kZWw9IkFjY29yZCBTZWRhbiIgZGF0YS15ZWFyPSIyMDI2IiBkYXRhLXN0eWxlaWRzPSI0ODMzNDYiIGRhdGEtaHlicmlkPSIwIj4KCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW1hZ2VDb250YWluZXIgZmxleC1jZW50ZXIgYWxpZ24tY2VudGVyIGRpdkNhckltYWdlQ29udGFpbmVyV2l0aENUQSI+CgkJCQk8YSB0aXRsZT0iSG9uZGEgQWNjb3JkIEJlcmxpbmUgMjAyNiIgaHJlZj0iP3BhdGg9L25ldWZzL0hvbmRhLUFjY29yZF9TZWRhbi0yMDI2Lmh0bWwiPgoJCQkJCTxpbWcgYWx0PSJIb25kYSBBY2NvcmQgQmVybGluZSAyMDI2IiBib3JkZXI9IjAiIGNsYXNzPSJsYXp5bG9hZCBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLWltZ3NyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0hvbmRhL0FjY29yZF9TZWRhbi8yMDI2LzQ4MzM0Ni9TaWx2ZXIvcHJvZmlsZS53ZWJwIiBkYXRhLW90LWlnbm9yZSBkYXRhLWNvb2tpZWNvbnNlbnQ9Imlnbm9yZSI+CgkJCQk8L2E+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJGb290ZXJDb250YWluZXIgc3RhY2stbGMgLS1zLTkiPgoJCQkJCTxkaXYgY2xhc3M9ImNhclBheW1lbnRXcmFwcGVyIj4KCQkJPGRpdiBjbGFzcz0iY29udGVudC1za2VsZXRvbiBodG1sLWJsb2NrIiBkYXRhLWJsb2NrPSJwYXltZW50QmxvY2siIGRhdGEtdHlwZT0iYmxvY2siIGRhdGEtc291cmNlPSJzZXJ2ZXIiIGRhdGEtY2FsbGJhY2s9InBheW1lbnRDYWxjQmxvY2siPgoJCQoJPGlucHV0IG5hbWU9ImJsb2NrLWRhdGEiIHR5cGU9ImhpZGRlbiIgdmFsdWU9J3sic3R5bGVpZCI6IjQ4MzM0NiIsInRpdGxlIjoiSG9uZGEgQWNjb3JkIEJlcmxpbmUgMjAyNiIsImhyZWYiOiJcL25ldWZzXC9Ib25kYS1BY2NvcmRfU2VkYW4tMjAyNi5odG1sIiwibGlua3N0eWxlIjoiIiwibGlua2NsYXNzIjoiIiwiY29udGFpbmVyY2xhc3MiOiJkaXZDYXJQYXltZW50Q29udGFpbmVyV2l0aENUQSIsInByb21vdGV4dCI6IkRcdTAwZTljb3V2cmV6IHBsdXMhIn0nPgoJPC9kaXY+Cgk8L2Rpdj4KCQkJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckNvbnRhY3RDVEFDb250YWluZXIiPgoJCQkJPGJ1dHRvbiBzdHlsZT0id2lkdGg6MTAwJTsiIGNsYXNzPSJidG4tZGVmYXVsdCIgb25jbGljaz0iamF2YXNjcmlwdDp2b2lkKG9wZW5TaG93cm9vbUNvbnRhY3RQb3B1cChldmVudCwgJ0hvbmRhJywgJ0FjY29yZCBTZWRhbicsICcyMDI2JykpOyI+CgkgICAgICAgICAgICAgICAgQ29udGFjdGV6LW5vdXMKCSAgICAgICAgICAgIDwvYnV0dG9uPgoJCQk8L2Rpdj4KCQkJPC9kaXY+CgkJPC9kaXY+Cgk8L2Rpdj48L2Rpdj48L2Rpdj48IS0tIENMT1NFIENBVEVHT1JZQk9YV1JBUFBFUiAoMjA2MCktLT48IS0tIE9QRU4gQ0FURUdPUllCT1hXUkFQUEVSICgyMDUyKSAtLT48ZGl2IGlkPSJjbGFzc3N1dl9jb250YWluZXIiIGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiBkaXZDYXRlZ29yeUJveFdyYXBwZXIiIHN0YXRlPSJvcGVuIiBuYnZpc2libGU9IjEiPjxoMiBjbGFzcz0iZGVmYXVsdCBpY29uLWhlYWRpbmcgZmxleC1ib3ggYWxpZ24tY2VudGVyIj4KCTxzcGFuIGNsYXNzPSJmYSBmYS1jaGV2cm9uLXJpZ2h0IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9zcGFuPgoJPGJveC1sYyBjbGFzcz0iLXB2MCI+CgkJPGRpdiBjbGFzcz0ibWFpblRleHQgLWJvbGQiPlZVUyBuZXVmcyBIb25kYSAyMDI2PC9kaXY+CgkJPGRpdiBjbGFzcz0ic2Vjb25kYXJ5VGV4dCI+w6AgSGF3a2VzYnVyeSAocHLDqHMgZGUgR2F0aW5lYXUgJmFtcDsgT3R0YXdhKTwvZGl2PgoJPC9ib3gtbGM+CjwvaDI+PGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIgZGl2Q2Fyc0JveFdyYXBwZXIgQ0xBU1Nfc3V2Ij4JPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggZGl2Q2FyU2luZ2xlT3V0ZXJCb3hXaXRoQ1RBIHJlYmF0ZUJvcmRlckNvbG9yIiBpZD0iZmJ4X3N1dl8xIj4KCQkKCQk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVJbm5lckJveCIgaWQ9IiI+CgkJCQoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJUaXRsZUNvbnRhaW5lciI+CgkJCQk8YSB0aXRsZT0iSG9uZGEgSFItViAyMDI2IiBocmVmPSI\/cGF0aD0vbmV1ZnMvSG9uZGEtSFJfVi0yMDI2Lmh0bWwiIGRhdGEtbWFrZT0iSG9uZGEiIGRhdGEtbW9kZWw9IkhSLVYgMjAyNiI+CgkJCQkJPGgzPgoJCQkJCQk8c3BhbiBjbGFzcz0ic3BhbkNhck1ha2UgIj5Ib25kYTwvc3Bhbj48YnI+CgkJCQkJCTxzcGFuIGNsYXNzPSJtb2RlbE5hbWUgc3Bhbk1vZGVsTmFtZSI+SFItViAyMDI2PC9zcGFuPgoJCQkJCTwvaDM+CgkJCQk8L2E+CgkJCQkgICAgPCEtLSBPUEVOIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CiAgICA8ZGl2IGNsYXNzPSJkaXZOZXdDYXJTdGFydFByaWNlIj4KICAgICAgICBMWCAyUk0gQ1ZUIMOgIHBhcnRpciBkZQogICAgICAgIDxzcGFuIGNsYXNzPSIiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj4zMyA0MzI8L3NwYW4+PC9zcGFuPgogICAgICAgIDxpIHN0eWxlPSJjb2xvcjojMDAwO2ZvbnQtc2l6ZToyMHB4OyIgY2xhc3M9ImNhclByaWNlSW5pdGlhbFRvb2xUaXBJY29uIGZhbCBmYS1pbmZvLWNpcmNsZSBibGFja0NvbG9yQm9sZCIgZGF0YS10b29sdGlwPScmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1BEU0Y6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzMwIDMwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1RyYW5zcG9ydCAmYW1wOyBQcsOpcGFyYXRpb246Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzIgMDAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7RnJhaXMgYWRtaW4uJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzEgMDAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7VGF4ZSBzdXIgcG5ldXMmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MjMmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtPTVZJQyZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDsxMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1RheGUgQUM6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzEwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1RvdGFsJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzMzIDQzMyZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsnPjwvaT4KICAgIDwvZGl2PgogICAgPCEtLSBDTE9TRSBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgkJCQkJPGRpdiBjbGFzcz0iZGl2TmV3Q2FyRGlzY2xhaW1lclByaWNlIiBzdHlsZT0iZm9udC1zaXplOjEycHg7Ij4rVFZIICZhbXA7IExpY2Vuc2U8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJblN0b2NrTGluayIgaGlkZGVuPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBkYXRhLXR5cGU9ImludmRhdGEiIGRhdGEtbWFrZT0iSG9uZGEiIGRhdGEtbW9kZWw9IkhSLVYiIGRhdGEteWVhcj0iMjAyNiIgZGF0YS1zdHlsZWlkcz0iNDc3Nzc0LDQ3Nzc3MSw0Nzc3NzIsNDc3NzczIiBkYXRhLWh5YnJpZD0iMCI+Cgk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckltYWdlQ29udGFpbmVyIGZsZXgtY2VudGVyIGFsaWduLWNlbnRlciBkaXZDYXJJbWFnZUNvbnRhaW5lcldpdGhDVEEiPgoJCQkJPGEgdGl0bGU9IkhvbmRhIEhSLVYgMjAyNiIgaHJlZj0iP3BhdGg9L25ldWZzL0hvbmRhLUhSX1YtMjAyNi5odG1sIj4KCQkJCQk8aW1nIGFsdD0iSG9uZGEgSFItViAyMDI2IiBib3JkZXI9IjAiIGNsYXNzPSJsaXZlbG9hZCBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLWltZ3NyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0hvbmRhL0hSX1YvMjAyNi80Nzc3NzQvR3JheS9wcm9maWxlLndlYnAiIHNyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0hvbmRhL0hSX1YvMjAyNi80Nzc3NzQvR3JheS9wcm9maWxlLndlYnAiIGRhdGEtb3QtaWdub3JlIGRhdGEtY29va2llY29uc2VudD0iaWdub3JlIj4KCQkJCTwvYT4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckZvb3RlckNvbnRhaW5lciBzdGFjay1sYyAtLXMtOSI+CgkJCQkJPGRpdiBjbGFzcz0iY2FyUGF5bWVudFdyYXBwZXIiPgoJCQk8ZGl2IGNsYXNzPSJjb250ZW50LXNrZWxldG9uIGh0bWwtYmxvY2siIGRhdGEtYmxvY2s9InBheW1lbnRCbG9jayIgZGF0YS10eXBlPSJibG9jayIgZGF0YS1zb3VyY2U9InNlcnZlciIgZGF0YS1jYWxsYmFjaz0icGF5bWVudENhbGNCbG9jayI+CgkJCgk8aW5wdXQgbmFtZT0iYmxvY2stZGF0YSIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0neyJzdHlsZWlkIjoiNDc3Nzc0IiwidGl0bGUiOiJIb25kYSBIUi1WIDIwMjYiLCJocmVmIjoiXC9uZXVmc1wvSG9uZGEtSFJfVi0yMDI2Lmh0bWwiLCJsaW5rc3R5bGUiOiIiLCJsaW5rY2xhc3MiOiIiLCJjb250YWluZXJjbGFzcyI6ImRpdkNhclBheW1lbnRDb250YWluZXJXaXRoQ1RBIiwicHJvbW90ZXh0IjoiRFx1MDBlOWNvdXZyZXogcGx1cyEifSc+Cgk8L2Rpdj4KCTwvZGl2PgoJCQkJCQkJPGRpdiBjbGFzcz0iZGl2Q2FyQ29udGFjdENUQUNvbnRhaW5lciI+CgkJCQk8YnV0dG9uIHN0eWxlPSJ3aWR0aDoxMDAlOyIgY2xhc3M9ImJ0bi1kZWZhdWx0IiBvbmNsaWNrPSJqYXZhc2NyaXB0OnZvaWQob3BlblNob3dyb29tQ29udGFjdFBvcHVwKGV2ZW50LCAnSG9uZGEnLCAnSFItVicsICcyMDI2JykpOyI+CgkgICAgICAgICAgICAgICAgQ29udGFjdGV6LW5vdXMKCSAgICAgICAgICAgIDwvYnV0dG9uPgoJCQk8L2Rpdj4KCQkJPC9kaXY+CgkJPC9kaXY+Cgk8L2Rpdj4JPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggZGl2Q2FyU2luZ2xlT3V0ZXJCb3hXaXRoQ1RBIHJlYmF0ZUJvcmRlckNvbG9yIiBpZD0iZmJ4X3N1dl8yIj4KCQkKCQk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVJbm5lckJveCIgaWQ9IiI+CgkJCQoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJUaXRsZUNvbnRhaW5lciI+CgkJCQk8YSB0aXRsZT0iSG9uZGEgQ1ItViAyMDI2IiBocmVmPSI\/cGF0aD0vbmV1ZnMvSG9uZGEtQ1JfVi0yMDI2Lmh0bWwiIGRhdGEtbWFrZT0iSG9uZGEiIGRhdGEtbW9kZWw9IkNSLVYgMjAyNiI+CgkJCQkJPGgzPgoJCQkJCQk8c3BhbiBjbGFzcz0ic3BhbkNhck1ha2UgIj5Ib25kYTwvc3Bhbj48YnI+CgkJCQkJCTxzcGFuIGNsYXNzPSJtb2RlbE5hbWUgc3Bhbk1vZGVsTmFtZSI+Q1ItViAyMDI2PC9zcGFuPgoJCQkJCTwvaDM+CgkJCQk8L2E+CgkJCQkgICAgPCEtLSBPUEVOIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CiAgICA8ZGl2IGNsYXNzPSJkaXZOZXdDYXJTdGFydFByaWNlIj4KICAgICAgICBMWCAyUk0gw6AgcGFydGlyIGRlCiAgICAgICAgPHNwYW4gY2xhc3M9IiI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjQwIDEwNzwvc3Bhbj48L3NwYW4+CiAgICAgICAgPGkgc3R5bGU9ImNvbG9yOiMwMDA7Zm9udC1zaXplOjIwcHg7IiBjbGFzcz0iY2FyUHJpY2VJbml0aWFsVG9vbFRpcEljb24gZmFsIGZhLWluZm8tY2lyY2xlIGJsYWNrQ29sb3JCb2xkIiBkYXRhLXRvb2x0aXA9JyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7UERTRjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MzYgOTc1Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7VHJhbnNwb3J0ICZhbXA7IFByw6lwYXJhdGlvbjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MiAwMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtGcmFpcyBhZG1pbi4mbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MSAwMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtUYXhlIHN1ciBwbmV1cyZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDsyMyZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O09NVklDJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzEwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7VGF4ZSBBQzombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7VG90YWwmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7NDAgMTA4Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0Oyc+PC9pPgogICAgPC9kaXY+CiAgICA8IS0tIENMT1NFIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CQkJCQk8ZGl2IGNsYXNzPSJkaXZOZXdDYXJEaXNjbGFpbWVyUHJpY2UiIHN0eWxlPSJmb250LXNpemU6MTJweDsiPitUVkggJmFtcDsgTGljZW5zZTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckluU3RvY2tMaW5rIiBoaWRkZW4+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGRhdGEtdHlwZT0iaW52ZGF0YSIgZGF0YS1tYWtlPSJIb25kYSIgZGF0YS1tb2RlbD0iQ1ItViIgZGF0YS15ZWFyPSIyMDI2IiBkYXRhLXN0eWxlaWRzPSI0Nzc3MzYsNDc3NzM0LDQ3NzczNSIgZGF0YS1oeWJyaWQ9IjAiPgoJPC9kaXY+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJbWFnZUNvbnRhaW5lciBmbGV4LWNlbnRlciBhbGlnbi1jZW50ZXIgZGl2Q2FySW1hZ2VDb250YWluZXJXaXRoQ1RBIj4KCQkJCTxhIHRpdGxlPSJIb25kYSBDUi1WIDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9Ib25kYS1DUl9WLTIwMjYuaHRtbCI+CgkJCQkJPGltZyBhbHQ9IkhvbmRhIENSLVYgMjAyNiIgYm9yZGVyPSIwIiBjbGFzcz0ibGF6eWxvYWQgb3B0YW5vbi1jYXRlZ29yeS1DMDAwMSIgZGF0YS1pbWdzcmM9Imh0dHBzOi8vY2FyaW1hZ2VzLmQyY21lZGlhLmNhL25ld2NhcmltYWdlcy9mci9Ib25kYS9DUl9WLzIwMjYvNDc3NzM2L1doaXRlL3Byb2ZpbGUud2VicCIgZGF0YS1vdC1pZ25vcmUgZGF0YS1jb29raWVjb25zZW50PSJpZ25vcmUiPgoJCQkJPC9hPgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyRm9vdGVyQ29udGFpbmVyIHN0YWNrLWxjIC0tcy05Ij4KCQkJCQk8ZGl2IGNsYXNzPSJjYXJQYXltZW50V3JhcHBlciI+CgkJCTxkaXYgY2xhc3M9ImNvbnRlbnQtc2tlbGV0b24gaHRtbC1ibG9jayIgZGF0YS1ibG9jaz0icGF5bWVudEJsb2NrIiBkYXRhLXR5cGU9ImJsb2NrIiBkYXRhLXNvdXJjZT0ic2VydmVyIiBkYXRhLWNhbGxiYWNrPSJwYXltZW50Q2FsY0Jsb2NrIj4KCQkKCTxpbnB1dCBuYW1lPSJibG9jay1kYXRhIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSd7InN0eWxlaWQiOiI0Nzc3MzYiLCJ0aXRsZSI6IkhvbmRhIENSLVYgMjAyNiIsImhyZWYiOiJcL25ldWZzXC9Ib25kYS1DUl9WLTIwMjYuaHRtbCIsImxpbmtzdHlsZSI6IiIsImxpbmtjbGFzcyI6IiIsImNvbnRhaW5lcmNsYXNzIjoiZGl2Q2FyUGF5bWVudENvbnRhaW5lcldpdGhDVEEiLCJwcm9tb3RleHQiOiJEXHUwMGU5Y291dnJleiBwbHVzISJ9Jz4KCTwvZGl2PgoJPC9kaXY+CgkJCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJDb250YWN0Q1RBQ29udGFpbmVyIj4KCQkJCTxidXR0b24gc3R5bGU9IndpZHRoOjEwMCU7IiBjbGFzcz0iYnRuLWRlZmF1bHQiIG9uY2xpY2s9ImphdmFzY3JpcHQ6dm9pZChvcGVuU2hvd3Jvb21Db250YWN0UG9wdXAoZXZlbnQsICdIb25kYScsICdDUi1WJywgJzIwMjYnKSk7Ij4KCSAgICAgICAgICAgICAgICBDb250YWN0ZXotbm91cwoJICAgICAgICAgICAgPC9idXR0b24+CgkJCTwvZGl2PgoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2Pgk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVPdXRlckJveCBkaXZDYXJTaW5nbGVPdXRlckJveFdpdGhDVEEgcmViYXRlQm9yZGVyQ29sb3IiIGlkPSJmYnhfc3V2XzMiPgoJCQoJCTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZUlubmVyQm94IiBpZD0iIj4KCQkJCgkJCTxkaXYgY2xhc3M9ImRpdkNhclRpdGxlQ29udGFpbmVyIj4KCQkJCTxhIHRpdGxlPSJIb25kYSBQaWxvdCAyMDI2IiBocmVmPSI\/cGF0aD0vbmV1ZnMvSG9uZGEtUGlsb3QtMjAyNi5odG1sIiBkYXRhLW1ha2U9IkhvbmRhIiBkYXRhLW1vZGVsPSJQaWxvdCAyMDI2Ij4KCQkJCQk8aDM+CgkJCQkJCTxzcGFuIGNsYXNzPSJzcGFuQ2FyTWFrZSAiPkhvbmRhPC9zcGFuPjxicj4KCQkJCQkJPHNwYW4gY2xhc3M9Im1vZGVsTmFtZSBzcGFuTW9kZWxOYW1lIj5QaWxvdCAyMDI2PC9zcGFuPgoJCQkJCTwvaDM+CgkJCQk8L2E+CgkJCQkgICAgPCEtLSBPUEVOIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CiAgICA8ZGl2IGNsYXNzPSJkaXZOZXdDYXJTdGFydFByaWNlIj4KICAgICAgICBTcG9ydCBUcmFjdGlvbiBJbnTDqWdyYWxlIMOgIHBhcnRpciBkZQogICAgICAgIDxzcGFuIGNsYXNzPSIiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj41OCA2ODI8L3NwYW4+PC9zcGFuPgogICAgICAgIDxpIHN0eWxlPSJjb2xvcjojMDAwO2ZvbnQtc2l6ZToyMHB4OyIgY2xhc3M9ImNhclByaWNlSW5pdGlhbFRvb2xUaXBJY29uIGZhbCBmYS1pbmZvLWNpcmNsZSBibGFja0NvbG9yQm9sZCIgZGF0YS10b29sdGlwPScmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1BEU0Y6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzU1IDU1MCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1RyYW5zcG9ydCAmYW1wOyBQcsOpcGFyYXRpb246Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzIgMDAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7RnJhaXMgYWRtaW4uJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzEgMDAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7VGF4ZSBzdXIgcG5ldXMmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MjMmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtPTVZJQyZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDsxMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1RheGUgQUM6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzEwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1RvdGFsJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzU4IDY4MyZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsnPjwvaT4KICAgIDwvZGl2PgogICAgPCEtLSBDTE9TRSBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgkJCQkJPGRpdiBjbGFzcz0iZGl2TmV3Q2FyRGlzY2xhaW1lclByaWNlIiBzdHlsZT0iZm9udC1zaXplOjEycHg7Ij4rVFZIICZhbXA7IExpY2Vuc2U8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJblN0b2NrTGluayIgaGlkZGVuPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBkYXRhLXR5cGU9ImludmRhdGEiIGRhdGEtbWFrZT0iSG9uZGEiIGRhdGEtbW9kZWw9IlBpbG90IiBkYXRhLXllYXI9IjIwMjYiIGRhdGEtc3R5bGVpZHM9IjQ4MzE2Miw0ODMxNjMsNDgzMTY0LDQ4MzE2NSw0ODMxNjYiIGRhdGEtaHlicmlkPSIwIj4KCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW1hZ2VDb250YWluZXIgZmxleC1jZW50ZXIgYWxpZ24tY2VudGVyIGRpdkNhckltYWdlQ29udGFpbmVyV2l0aENUQSI+CgkJCQk8YSB0aXRsZT0iSG9uZGEgUGlsb3QgMjAyNiIgaHJlZj0iP3BhdGg9L25ldWZzL0hvbmRhLVBpbG90LTIwMjYuaHRtbCI+CgkJCQkJPGltZyBhbHQ9IkhvbmRhIFBpbG90IDIwMjYiIGJvcmRlcj0iMCIgY2xhc3M9Imxhenlsb2FkIG9wdGFub24tY2F0ZWdvcnktQzAwMDEiIGRhdGEtaW1nc3JjPSJodHRwczovL2NhcmltYWdlcy5kMmNtZWRpYS5jYS9uZXdjYXJpbWFnZXMvZnIvSG9uZGEvUGlsb3QvMjAyNi80ODMxNjIvU2lsdmVyL3Byb2ZpbGUud2VicCIgZGF0YS1vdC1pZ25vcmUgZGF0YS1jb29raWVjb25zZW50PSJpZ25vcmUiPgoJCQkJPC9hPgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyRm9vdGVyQ29udGFpbmVyIHN0YWNrLWxjIC0tcy05Ij4KCQkJCQk8ZGl2IGNsYXNzPSJjYXJQYXltZW50V3JhcHBlciI+CgkJCTxkaXYgY2xhc3M9ImNvbnRlbnQtc2tlbGV0b24gaHRtbC1ibG9jayIgZGF0YS1ibG9jaz0icGF5bWVudEJsb2NrIiBkYXRhLXR5cGU9ImJsb2NrIiBkYXRhLXNvdXJjZT0ic2VydmVyIiBkYXRhLWNhbGxiYWNrPSJwYXltZW50Q2FsY0Jsb2NrIj4KCQkKCTxpbnB1dCBuYW1lPSJibG9jay1kYXRhIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSd7InN0eWxlaWQiOiI0ODMxNjIiLCJ0aXRsZSI6IkhvbmRhIFBpbG90IDIwMjYiLCJocmVmIjoiXC9uZXVmc1wvSG9uZGEtUGlsb3QtMjAyNi5odG1sIiwibGlua3N0eWxlIjoiIiwibGlua2NsYXNzIjoiIiwiY29udGFpbmVyY2xhc3MiOiJkaXZDYXJQYXltZW50Q29udGFpbmVyV2l0aENUQSIsInByb21vdGV4dCI6IkRcdTAwZTljb3V2cmV6IHBsdXMhIn0nPgoJPC9kaXY+Cgk8L2Rpdj4KCQkJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckNvbnRhY3RDVEFDb250YWluZXIiPgoJCQkJPGJ1dHRvbiBzdHlsZT0id2lkdGg6MTAwJTsiIGNsYXNzPSJidG4tZGVmYXVsdCIgb25jbGljaz0iamF2YXNjcmlwdDp2b2lkKG9wZW5TaG93cm9vbUNvbnRhY3RQb3B1cChldmVudCwgJ0hvbmRhJywgJ1BpbG90JywgJzIwMjYnKSk7Ij4KCSAgICAgICAgICAgICAgICBDb250YWN0ZXotbm91cwoJICAgICAgICAgICAgPC9idXR0b24+CgkJCTwvZGl2PgoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2Pgk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVPdXRlckJveCBkaXZDYXJTaW5nbGVPdXRlckJveFdpdGhDVEEgcmViYXRlQm9yZGVyQ29sb3IiIGlkPSJmYnhfc3V2XzQiPgoJCQoJCTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZUlubmVyQm94IiBpZD0iIj4KCQkJCgkJCTxkaXYgY2xhc3M9ImRpdkNhclRpdGxlQ29udGFpbmVyIj4KCQkJCTxhIHRpdGxlPSJIb25kYSBQYXNzcG9ydCAyMDI2IiBocmVmPSI\/cGF0aD0vbmV1ZnMvSG9uZGEtUGFzc3BvcnQtMjAyNi5odG1sIiBkYXRhLW1ha2U9IkhvbmRhIiBkYXRhLW1vZGVsPSJQYXNzcG9ydCAyMDI2Ij4KCQkJCQk8aDM+CgkJCQkJCTxzcGFuIGNsYXNzPSJzcGFuQ2FyTWFrZSAiPkhvbmRhPC9zcGFuPjxicj4KCQkJCQkJPHNwYW4gY2xhc3M9Im1vZGVsTmFtZSBzcGFuTW9kZWxOYW1lIj5QYXNzcG9ydCAyMDI2PC9zcGFuPgoJCQkJCTwvaDM+CgkJCQk8L2E+CgkJCQkgICAgPCEtLSBPUEVOIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CiAgICA8ZGl2IGNsYXNzPSJkaXZOZXdDYXJTdGFydFByaWNlIj4KICAgICAgICBUcmFpbFNwb3J0IFRJIMOgIHBhcnRpciBkZQogICAgICAgIDxzcGFuIGNsYXNzPSIiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj42MCAxMjI8L3NwYW4+PC9zcGFuPgogICAgICAgIDxpIHN0eWxlPSJjb2xvcjojMDAwO2ZvbnQtc2l6ZToyMHB4OyIgY2xhc3M9ImNhclByaWNlSW5pdGlhbFRvb2xUaXBJY29uIGZhbCBmYS1pbmZvLWNpcmNsZSBibGFja0NvbG9yQm9sZCIgZGF0YS10b29sdGlwPScmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1BEU0Y6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzU2IDk5MCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1RyYW5zcG9ydCAmYW1wOyBQcsOpcGFyYXRpb246Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzIgMDAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7RnJhaXMgYWRtaW4uJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzEgMDAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7VGF4ZSBzdXIgcG5ldXMmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MjMmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtPTVZJQyZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDsxMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1RheGUgQUM6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzEwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1RvdGFsJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzYwIDEyMyZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsnPjwvaT4KICAgIDwvZGl2PgogICAgPCEtLSBDTE9TRSBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgkJCQkJPGRpdiBjbGFzcz0iZGl2TmV3Q2FyRGlzY2xhaW1lclByaWNlIiBzdHlsZT0iZm9udC1zaXplOjEycHg7Ij4rVFZIICZhbXA7IExpY2Vuc2U8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJblN0b2NrTGluayIgaGlkZGVuPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBkYXRhLXR5cGU9ImludmRhdGEiIGRhdGEtbWFrZT0iSG9uZGEiIGRhdGEtbW9kZWw9IlBhc3Nwb3J0IiBkYXRhLXllYXI9IjIwMjYiIGRhdGEtc3R5bGVpZHM9IjQ3NzczMCw0Nzc3MzEsNDc3NzMyLDQ3NzczMyIgZGF0YS1oeWJyaWQ9IjAiPgoJPC9kaXY+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJbWFnZUNvbnRhaW5lciBmbGV4LWNlbnRlciBhbGlnbi1jZW50ZXIgZGl2Q2FySW1hZ2VDb250YWluZXJXaXRoQ1RBIj4KCQkJCTxhIHRpdGxlPSJIb25kYSBQYXNzcG9ydCAyMDI2IiBocmVmPSI\/cGF0aD0vbmV1ZnMvSG9uZGEtUGFzc3BvcnQtMjAyNi5odG1sIj4KCQkJCQk8aW1nIGFsdD0iSG9uZGEgUGFzc3BvcnQgMjAyNiIgYm9yZGVyPSIwIiBjbGFzcz0ibGF6eWxvYWQgb3B0YW5vbi1jYXRlZ29yeS1DMDAwMSIgZGF0YS1pbWdzcmM9Imh0dHBzOi8vY2FyaW1hZ2VzLmQyY21lZGlhLmNhL25ld2NhcmltYWdlcy9mci9Ib25kYS9QYXNzcG9ydC8yMDI2LzQ3NzczMC9SZWQvcHJvZmlsZS53ZWJwIiBkYXRhLW90LWlnbm9yZSBkYXRhLWNvb2tpZWNvbnNlbnQ9Imlnbm9yZSI+CgkJCQk8L2E+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJGb290ZXJDb250YWluZXIgc3RhY2stbGMgLS1zLTkiPgoJCQkJCTxkaXYgY2xhc3M9ImNhclBheW1lbnRXcmFwcGVyIj4KCQkJPGRpdiBjbGFzcz0iY29udGVudC1za2VsZXRvbiBodG1sLWJsb2NrIiBkYXRhLWJsb2NrPSJwYXltZW50QmxvY2siIGRhdGEtdHlwZT0iYmxvY2siIGRhdGEtc291cmNlPSJzZXJ2ZXIiIGRhdGEtY2FsbGJhY2s9InBheW1lbnRDYWxjQmxvY2siPgoJCQoJPGlucHV0IG5hbWU9ImJsb2NrLWRhdGEiIHR5cGU9ImhpZGRlbiIgdmFsdWU9J3sic3R5bGVpZCI6IjQ3NzczMCIsInRpdGxlIjoiSG9uZGEgUGFzc3BvcnQgMjAyNiIsImhyZWYiOiJcL25ldWZzXC9Ib25kYS1QYXNzcG9ydC0yMDI2Lmh0bWwiLCJsaW5rc3R5bGUiOiIiLCJsaW5rY2xhc3MiOiIiLCJjb250YWluZXJjbGFzcyI6ImRpdkNhclBheW1lbnRDb250YWluZXJXaXRoQ1RBIiwicHJvbW90ZXh0IjoiRFx1MDBlOWNvdXZyZXogcGx1cyEifSc+Cgk8L2Rpdj4KCTwvZGl2PgoJCQkJCQkJPGRpdiBjbGFzcz0iZGl2Q2FyQ29udGFjdENUQUNvbnRhaW5lciI+CgkJCQk8YnV0dG9uIHN0eWxlPSJ3aWR0aDoxMDAlOyIgY2xhc3M9ImJ0bi1kZWZhdWx0IiBvbmNsaWNrPSJqYXZhc2NyaXB0OnZvaWQob3BlblNob3dyb29tQ29udGFjdFBvcHVwKGV2ZW50LCAnSG9uZGEnLCAnUGFzc3BvcnQnLCAnMjAyNicpKTsiPgoJICAgICAgICAgICAgICAgIENvbnRhY3Rlei1ub3VzCgkgICAgICAgICAgICA8L2J1dHRvbj4KCQkJPC9kaXY+CgkJCTwvZGl2PgoJCTwvZGl2PgoJPC9kaXY+PC9kaXY+PC9kaXY+PCEtLSBDTE9TRSBDQVRFR09SWUJPWFdSQVBQRVIgKDIwNjApLS0+PCEtLSBPUEVOIENBVEVHT1JZQk9YV1JBUFBFUiAoMjA1MikgLS0+PGRpdiBpZD0iY2xhc3NtaW5pdmFuX2NvbnRhaW5lciIgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEyIGRpdkNhdGVnb3J5Qm94V3JhcHBlciIgc3RhdGU9Im9wZW4iIG5idmlzaWJsZT0iMSI+PGgyIGNsYXNzPSJkZWZhdWx0IGljb24taGVhZGluZyBmbGV4LWJveCBhbGlnbi1jZW50ZXIiPgoJPHNwYW4gY2xhc3M9ImZhIGZhLWNoZXZyb24tcmlnaHQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L3NwYW4+Cgk8Ym94LWxjIGNsYXNzPSItcHYwIj4KCQk8ZGl2IGNsYXNzPSJtYWluVGV4dCAtYm9sZCI+TWluaS1mb3VyZ29ubmV0dGVzIG5ldXZlcyBIb25kYSAyMDI2PC9kaXY+CgkJPGRpdiBjbGFzcz0ic2Vjb25kYXJ5VGV4dCI+w6AgSGF3a2VzYnVyeSAocHLDqHMgZGUgR2F0aW5lYXUgJmFtcDsgT3R0YXdhKTwvZGl2PgoJPC9ib3gtbGM+CjwvaDI+PGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIgZGl2Q2Fyc0JveFdyYXBwZXIgQ0xBU1NfbWluaXZhbiI+CTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZU91dGVyQm94IGRpdkNhclNpbmdsZU91dGVyQm94V2l0aENUQSByZWJhdGVCb3JkZXJDb2xvciIgaWQ9ImZieF9taW5pdmFuXzEiPgoJCQoJCTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZUlubmVyQm94IiBpZD0iIj4KCQkJCgkJCTxkaXYgY2xhc3M9ImRpdkNhclRpdGxlQ29udGFpbmVyIj4KCQkJCTxhIHRpdGxlPSJIb25kYSBPZHlzc2V5IDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9Ib25kYS1PZHlzc2V5LTIwMjYuaHRtbCIgZGF0YS1tYWtlPSJIb25kYSIgZGF0YS1tb2RlbD0iT2R5c3NleSAyMDI2Ij4KCQkJCQk8aDM+CgkJCQkJCTxzcGFuIGNsYXNzPSJzcGFuQ2FyTWFrZSAiPkhvbmRhPC9zcGFuPjxicj4KCQkJCQkJPHNwYW4gY2xhc3M9Im1vZGVsTmFtZSBzcGFuTW9kZWxOYW1lIj5PZHlzc2V5IDIwMjY8L3NwYW4+CgkJCQkJPC9oMz4KCQkJCTwvYT4KCQkJCSAgICA8IS0tIE9QRU4gTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KICAgIDxkaXYgY2xhc3M9ImRpdk5ld0NhclN0YXJ0UHJpY2UiPgogICAgICAgIFNwb3J0IEJBIMOgIHBhcnRpciBkZQogICAgICAgIDxzcGFuIGNsYXNzPSIiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj41NCA1NTI8L3NwYW4+PC9zcGFuPgogICAgICAgIDxpIHN0eWxlPSJjb2xvcjojMDAwO2ZvbnQtc2l6ZToyMHB4OyIgY2xhc3M9ImNhclByaWNlSW5pdGlhbFRvb2xUaXBJY29uIGZhbCBmYS1pbmZvLWNpcmNsZSBibGFja0NvbG9yQm9sZCIgZGF0YS10b29sdGlwPScmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1BEU0Y6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzUxIDQyMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1RyYW5zcG9ydCAmYW1wOyBQcsOpcGFyYXRpb246Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzIgMDAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7RnJhaXMgYWRtaW4uJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzEgMDAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7VGF4ZSBzdXIgcG5ldXMmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MjMmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtPTVZJQyZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDsxMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1RheGUgQUM6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzEwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1RvdGFsJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzU0IDU1MyZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsnPjwvaT4KICAgIDwvZGl2PgogICAgPCEtLSBDTE9TRSBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgkJCQkJPGRpdiBjbGFzcz0iZGl2TmV3Q2FyRGlzY2xhaW1lclByaWNlIiBzdHlsZT0iZm9udC1zaXplOjEycHg7Ij4rVFZIICZhbXA7IExpY2Vuc2U8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJblN0b2NrTGluayIgaGlkZGVuPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBkYXRhLXR5cGU9ImludmRhdGEiIGRhdGEtbWFrZT0iSG9uZGEiIGRhdGEtbW9kZWw9Ik9keXNzZXkiIGRhdGEteWVhcj0iMjAyNiIgZGF0YS1zdHlsZWlkcz0iNDgwMTQzLDQ4MDE0NCw0ODAxNDUsNDgwMTQ2IiBkYXRhLWh5YnJpZD0iMCI+Cgk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckltYWdlQ29udGFpbmVyIGZsZXgtY2VudGVyIGFsaWduLWNlbnRlciBkaXZDYXJJbWFnZUNvbnRhaW5lcldpdGhDVEEiPgoJCQkJPGEgdGl0bGU9IkhvbmRhIE9keXNzZXkgMjAyNiIgaHJlZj0iP3BhdGg9L25ldWZzL0hvbmRhLU9keXNzZXktMjAyNi5odG1sIj4KCQkJCQk8aW1nIGFsdD0iSG9uZGEgT2R5c3NleSAyMDI2IiBib3JkZXI9IjAiIGNsYXNzPSJsYXp5bG9hZCBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLWltZ3NyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0hvbmRhL09keXNzZXkvMjAyNi80ODAxNDMvU2lsdmVyL3Byb2ZpbGUud2VicCIgZGF0YS1vdC1pZ25vcmUgZGF0YS1jb29raWVjb25zZW50PSJpZ25vcmUiPgoJCQkJPC9hPgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyRm9vdGVyQ29udGFpbmVyIHN0YWNrLWxjIC0tcy05Ij4KCQkJCQk8ZGl2IGNsYXNzPSJjYXJQYXltZW50V3JhcHBlciI+CgkJCTxkaXYgY2xhc3M9ImNvbnRlbnQtc2tlbGV0b24gaHRtbC1ibG9jayIgZGF0YS1ibG9jaz0icGF5bWVudEJsb2NrIiBkYXRhLXR5cGU9ImJsb2NrIiBkYXRhLXNvdXJjZT0ic2VydmVyIiBkYXRhLWNhbGxiYWNrPSJwYXltZW50Q2FsY0Jsb2NrIj4KCQkKCTxpbnB1dCBuYW1lPSJibG9jay1kYXRhIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSd7InN0eWxlaWQiOiI0ODAxNDMiLCJ0aXRsZSI6IkhvbmRhIE9keXNzZXkgMjAyNiIsImhyZWYiOiJcL25ldWZzXC9Ib25kYS1PZHlzc2V5LTIwMjYuaHRtbCIsImxpbmtzdHlsZSI6IiIsImxpbmtjbGFzcyI6IiIsImNvbnRhaW5lcmNsYXNzIjoiZGl2Q2FyUGF5bWVudENvbnRhaW5lcldpdGhDVEEiLCJwcm9tb3RleHQiOiJEXHUwMGU5Y291dnJleiBwbHVzISJ9Jz4KCTwvZGl2PgoJPC9kaXY+CgkJCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJDb250YWN0Q1RBQ29udGFpbmVyIj4KCQkJCTxidXR0b24gc3R5bGU9IndpZHRoOjEwMCU7IiBjbGFzcz0iYnRuLWRlZmF1bHQiIG9uY2xpY2s9ImphdmFzY3JpcHQ6dm9pZChvcGVuU2hvd3Jvb21Db250YWN0UG9wdXAoZXZlbnQsICdIb25kYScsICdPZHlzc2V5JywgJzIwMjYnKSk7Ij4KCSAgICAgICAgICAgICAgICBDb250YWN0ZXotbm91cwoJICAgICAgICAgICAgPC9idXR0b24+CgkJCTwvZGl2PgoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2PjwvZGl2PjwvZGl2PjwhLS0gQ0xPU0UgQ0FURUdPUllCT1hXUkFQUEVSICgyMDYwKS0tPjwhLS0gT1BFTiBDQVRFR09SWUJPWFdSQVBQRVIgKDIwNTIpIC0tPjxkaXYgaWQ9ImNsYXNzdHJ1Y2tfY29udGFpbmVyIiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIgZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIiBzdGF0ZT0ib3BlbiIgbmJ2aXNpYmxlPSIxIj48aDIgY2xhc3M9ImRlZmF1bHQgaWNvbi1oZWFkaW5nIGZsZXgtYm94IGFsaWduLWNlbnRlciI+Cgk8c3BhbiBjbGFzcz0iZmEgZmEtY2hldnJvbi1yaWdodCIgYXJpYS1oaWRkZW49InRydWUiPjwvc3Bhbj4KCTxib3gtbGMgY2xhc3M9Ii1wdjAiPgoJCTxkaXYgY2xhc3M9Im1haW5UZXh0IC1ib2xkIj5DYW1pb25zIG5ldWZzIEhvbmRhIDIwMjY8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJzZWNvbmRhcnlUZXh0Ij7DoCBIYXdrZXNidXJ5IChwcsOocyBkZSBHYXRpbmVhdSAmYW1wOyBPdHRhd2EpPC9kaXY+Cgk8L2JveC1sYz4KPC9oMj48ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiBkaXZDYXJzQm94V3JhcHBlciBDTEFTU190cnVjayI+CTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZU91dGVyQm94IGRpdkNhclNpbmdsZU91dGVyQm94V2l0aENUQSByZWJhdGVCb3JkZXJDb2xvciIgaWQ9ImZieF90cnVja18xIj4KCQkKCQk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVJbm5lckJveCIgaWQ9IiI+CgkJCQoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJUaXRsZUNvbnRhaW5lciI+CgkJCQk8YSB0aXRsZT0iSG9uZGEgUmlkZ2VsaW5lIDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9Ib25kYS1SaWRnZWxpbmUtMjAyNi5odG1sIiBkYXRhLW1ha2U9IkhvbmRhIiBkYXRhLW1vZGVsPSJSaWRnZWxpbmUgMjAyNiI+CgkJCQkJPGgzPgoJCQkJCQk8c3BhbiBjbGFzcz0ic3BhbkNhck1ha2UgIj5Ib25kYTwvc3Bhbj48YnI+CgkJCQkJCTxzcGFuIGNsYXNzPSJtb2RlbE5hbWUgc3Bhbk1vZGVsTmFtZSI+UmlkZ2VsaW5lIDIwMjY8L3NwYW4+CgkJCQkJPC9oMz4KCQkJCTwvYT4KCQkJCSAgICA8IS0tIE9QRU4gTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KICAgIDxkaXYgY2xhc3M9ImRpdk5ld0NhclN0YXJ0UHJpY2UiPgogICAgICAgIFNwb3J0IFRyYWN0aW9uIEludMOpZ3JhbGUgw6AgcGFydGlyIGRlCiAgICAgICAgPHNwYW4gY2xhc3M9IiI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjU2IDEyMjwvc3Bhbj48L3NwYW4+CiAgICAgICAgPGkgc3R5bGU9ImNvbG9yOiMwMDA7Zm9udC1zaXplOjIwcHg7IiBjbGFzcz0iY2FyUHJpY2VJbml0aWFsVG9vbFRpcEljb24gZmFsIGZhLWluZm8tY2lyY2xlIGJsYWNrQ29sb3JCb2xkIiBkYXRhLXRvb2x0aXA9JyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7UERTRjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7NTIgOTkwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7VHJhbnNwb3J0ICZhbXA7IFByw6lwYXJhdGlvbjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MiAwMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtGcmFpcyBhZG1pbi4mbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MSAwMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtUYXhlIHN1ciBwbmV1cyZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDsyMyZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O09NVklDJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzEwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7VGF4ZSBBQzombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7VG90YWwmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7NTYgMTIzJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0Oyc+PC9pPgogICAgPC9kaXY+CiAgICA8IS0tIENMT1NFIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CQkJCQk8ZGl2IGNsYXNzPSJkaXZOZXdDYXJEaXNjbGFpbWVyUHJpY2UiIHN0eWxlPSJmb250LXNpemU6MTJweDsiPitUVkggJmFtcDsgTGljZW5zZTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckluU3RvY2tMaW5rIiBoaWRkZW4+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGRhdGEtdHlwZT0iaW52ZGF0YSIgZGF0YS1tYWtlPSJIb25kYSIgZGF0YS1tb2RlbD0iUmlkZ2VsaW5lIiBkYXRhLXllYXI9IjIwMjYiIGRhdGEtc3R5bGVpZHM9IjQ4MTQ5Myw0ODE0OTQsNDgxNDk1IiBkYXRhLWh5YnJpZD0iMCI+Cgk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckltYWdlQ29udGFpbmVyIGZsZXgtY2VudGVyIGFsaWduLWNlbnRlciBkaXZDYXJJbWFnZUNvbnRhaW5lcldpdGhDVEEiPgoJCQkJPGEgdGl0bGU9IkhvbmRhIFJpZGdlbGluZSAyMDI2IiBocmVmPSI\/cGF0aD0vbmV1ZnMvSG9uZGEtUmlkZ2VsaW5lLTIwMjYuaHRtbCI+CgkJCQkJPGltZyBhbHQ9IkhvbmRhIFJpZGdlbGluZSAyMDI2IiBib3JkZXI9IjAiIGNsYXNzPSJsYXp5bG9hZCBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLWltZ3NyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0hvbmRhL1JpZGdlbGluZS8yMDI2LzQ4MTQ5My9TaWx2ZXIvcHJvZmlsZS53ZWJwIiBkYXRhLW90LWlnbm9yZSBkYXRhLWNvb2tpZWNvbnNlbnQ9Imlnbm9yZSI+CgkJCQk8L2E+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJGb290ZXJDb250YWluZXIgc3RhY2stbGMgLS1zLTkiPgoJCQkJCTxkaXYgY2xhc3M9ImNhclBheW1lbnRXcmFwcGVyIj4KCQkJPGRpdiBjbGFzcz0iY29udGVudC1za2VsZXRvbiBodG1sLWJsb2NrIiBkYXRhLWJsb2NrPSJwYXltZW50QmxvY2siIGRhdGEtdHlwZT0iYmxvY2siIGRhdGEtc291cmNlPSJzZXJ2ZXIiIGRhdGEtY2FsbGJhY2s9InBheW1lbnRDYWxjQmxvY2siPgoJCQoJPGlucHV0IG5hbWU9ImJsb2NrLWRhdGEiIHR5cGU9ImhpZGRlbiIgdmFsdWU9J3sic3R5bGVpZCI6IjQ4MTQ5MyIsInRpdGxlIjoiSG9uZGEgUmlkZ2VsaW5lIDIwMjYiLCJocmVmIjoiXC9uZXVmc1wvSG9uZGEtUmlkZ2VsaW5lLTIwMjYuaHRtbCIsImxpbmtzdHlsZSI6IiIsImxpbmtjbGFzcyI6IiIsImNvbnRhaW5lcmNsYXNzIjoiZGl2Q2FyUGF5bWVudENvbnRhaW5lcldpdGhDVEEiLCJwcm9tb3RleHQiOiJEXHUwMGU5Y291dnJleiBwbHVzISJ9Jz4KCTwvZGl2PgoJPC9kaXY+CgkJCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJDb250YWN0Q1RBQ29udGFpbmVyIj4KCQkJCTxidXR0b24gc3R5bGU9IndpZHRoOjEwMCU7IiBjbGFzcz0iYnRuLWRlZmF1bHQiIG9uY2xpY2s9ImphdmFzY3JpcHQ6dm9pZChvcGVuU2hvd3Jvb21Db250YWN0UG9wdXAoZXZlbnQsICdIb25kYScsICdSaWRnZWxpbmUnLCAnMjAyNicpKTsiPgoJICAgICAgICAgICAgICAgIENvbnRhY3Rlei1ub3VzCgkgICAgICAgICAgICA8L2J1dHRvbj4KCQkJPC9kaXY+CgkJCTwvZGl2PgoJCTwvZGl2PgoJPC9kaXY+PC9kaXY+PC9kaXY+PCEtLSBDTE9TRSBDQVRFR09SWUJPWFdSQVBQRVIgKDIwNjApLS0+PCEtLSBPUEVOIENBVEVHT1JZQk9YV1JBUFBFUiAoMjA1MikgLS0+PGRpdiBpZD0iY2xhc3NoeWJyaWRfY29udGFpbmVyIiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIgZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIiBzdGF0ZT0ib3BlbiIgbmJ2aXNpYmxlPSIxIj48aDIgY2xhc3M9ImRlZmF1bHQgaWNvbi1oZWFkaW5nIGZsZXgtYm94IGFsaWduLWNlbnRlciI+Cgk8c3BhbiBjbGFzcz0iZmEgZmEtY2hldnJvbi1yaWdodCIgYXJpYS1oaWRkZW49InRydWUiPjwvc3Bhbj4KCTxib3gtbGMgY2xhc3M9Ii1wdjAiPgoJCTxkaXYgY2xhc3M9Im1haW5UZXh0IC1ib2xkIj5IeWJyaWRlcyAoQXNzaXN0YW5jZSBtb3RldXIgaW50w6lncsOpZSAtIElNQSkgbmV1dmVzIEhvbmRhIDIwMjY8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJzZWNvbmRhcnlUZXh0Ij7DoCBIYXdrZXNidXJ5IChwcsOocyBkZSBHYXRpbmVhdSAmYW1wOyBPdHRhd2EpPC9kaXY+Cgk8L2JveC1sYz4KPC9oMj48ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiBkaXZDYXJzQm94V3JhcHBlciBDTEFTU19oeWJyaWQiPgk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVPdXRlckJveCBkaXZDYXJTaW5nbGVPdXRlckJveFdpdGhDVEEgcmViYXRlQm9yZGVyQ29sb3IiIGlkPSJmYnhfaHlicmlkXzEiPgoJCQoJCTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZUlubmVyQm94IiBpZD0iIj4KCQkJCgkJCTxkaXYgY2xhc3M9ImRpdkNhclRpdGxlQ29udGFpbmVyIj4KCQkJCTxhIHRpdGxlPSJIb25kYSBDaXZpYyBCZXJsaW5lIEh5YnJpZGUgMjAyNiIgaHJlZj0iP3BhdGg9L25ldWZzL0hvbmRhLUNpdmljX1NlZGFuX0h5YnJpZC0yMDI2Lmh0bWwiIGRhdGEtbWFrZT0iSG9uZGEiIGRhdGEtbW9kZWw9IkNpdmljIGh5YnJpZGUgYmVybGluZSAyMDI2Ij4KCQkJCQk8aDM+CgkJCQkJCTxzcGFuIGNsYXNzPSJzcGFuQ2FyTWFrZSAiPkhvbmRhPC9zcGFuPjxicj4KCQkJCQkJPHNwYW4gY2xhc3M9Im1vZGVsTmFtZSBzcGFuTW9kZWxOYW1lIj5DaXZpYyBCZXJsaW5lIEh5YnJpZGUgMjAyNjwvc3Bhbj4KCQkJCQk8L2gzPgoJCQkJPC9hPgoJCQkJICAgIDwhLS0gT1BFTiBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgogICAgPGRpdiBjbGFzcz0iZGl2TmV3Q2FyU3RhcnRQcmljZSI+CiAgICAgICAgU3BvcnQgYmVybGluZSBlQ1ZUIMOgIHBhcnRpciBkZQogICAgICAgIDxzcGFuIGNsYXNzPSIiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj4zNyAwNjI8L3NwYW4+PC9zcGFuPgogICAgICAgIDxpIHN0eWxlPSJjb2xvcjojMDAwO2ZvbnQtc2l6ZToyMHB4OyIgY2xhc3M9ImNhclByaWNlSW5pdGlhbFRvb2xUaXBJY29uIGZhbCBmYS1pbmZvLWNpcmNsZSBibGFja0NvbG9yQm9sZCIgZGF0YS10b29sdGlwPScmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1BEU0Y6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzM0IDEwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1RyYW5zcG9ydCAmYW1wOyBQcsOpcGFyYXRpb246Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzEgODMwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7RnJhaXMgYWRtaW4uJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzEgMDAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7VGF4ZSBzdXIgcG5ldXMmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MjMmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtPTVZJQyZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDsxMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1RheGUgQUM6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzEwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1RvdGFsJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzM3IDA2MyZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsnPjwvaT4KICAgIDwvZGl2PgogICAgPCEtLSBDTE9TRSBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgkJCQkJPGRpdiBjbGFzcz0iZGl2TmV3Q2FyRGlzY2xhaW1lclByaWNlIiBzdHlsZT0iZm9udC1zaXplOjEycHg7Ij4rVFZIICZhbXA7IExpY2Vuc2U8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJblN0b2NrTGluayIgaGlkZGVuPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBkYXRhLXR5cGU9ImludmRhdGEiIGRhdGEtbWFrZT0iSG9uZGEiIGRhdGEtbW9kZWw9IkNpdmljIFNlZGFuIEh5YnJpZCIgZGF0YS15ZWFyPSIyMDI2IiBkYXRhLXN0eWxlaWRzPSI0Nzg1OTAsNDc4NTkxIiBkYXRhLWh5YnJpZD0iMSI+Cgk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckltYWdlQ29udGFpbmVyIGZsZXgtY2VudGVyIGFsaWduLWNlbnRlciBkaXZDYXJJbWFnZUNvbnRhaW5lcldpdGhDVEEiPgoJCQkJPGEgdGl0bGU9IkhvbmRhIENpdmljIEJlcmxpbmUgSHlicmlkZSAyMDI2IiBocmVmPSI\/cGF0aD0vbmV1ZnMvSG9uZGEtQ2l2aWNfU2VkYW5fSHlicmlkLTIwMjYuaHRtbCI+CgkJCQkJPGltZyBhbHQ9IkhvbmRhIENpdmljIEJlcmxpbmUgSHlicmlkZSAyMDI2IiBib3JkZXI9IjAiIGNsYXNzPSJsaXZlbG9hZCBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLWltZ3NyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0hvbmRhL0NpdmljX1NlZGFuX0h5YnJpZC8yMDI2LzQ3ODU5MC9TaWx2ZXIvcHJvZmlsZS53ZWJwIiBzcmM9Imh0dHBzOi8vY2FyaW1hZ2VzLmQyY21lZGlhLmNhL25ld2NhcmltYWdlcy9mci9Ib25kYS9DaXZpY19TZWRhbl9IeWJyaWQvMjAyNi80Nzg1OTAvU2lsdmVyL3Byb2ZpbGUud2VicCIgZGF0YS1vdC1pZ25vcmUgZGF0YS1jb29raWVjb25zZW50PSJpZ25vcmUiPgoJCQkJPC9hPgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyRm9vdGVyQ29udGFpbmVyIHN0YWNrLWxjIC0tcy05Ij4KCQkJCQk8ZGl2IGNsYXNzPSJjYXJQYXltZW50V3JhcHBlciI+CgkJCTxkaXYgY2xhc3M9ImNvbnRlbnQtc2tlbGV0b24gaHRtbC1ibG9jayIgZGF0YS1ibG9jaz0icGF5bWVudEJsb2NrIiBkYXRhLXR5cGU9ImJsb2NrIiBkYXRhLXNvdXJjZT0ic2VydmVyIiBkYXRhLWNhbGxiYWNrPSJwYXltZW50Q2FsY0Jsb2NrIj4KCQkKCTxpbnB1dCBuYW1lPSJibG9jay1kYXRhIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSd7InN0eWxlaWQiOiI0Nzg1OTAiLCJ0aXRsZSI6IkhvbmRhIENpdmljIEJlcmxpbmUgSHlicmlkZSAyMDI2IiwiaHJlZiI6IlwvbmV1ZnNcL0hvbmRhLUNpdmljX1NlZGFuX0h5YnJpZC0yMDI2Lmh0bWwiLCJsaW5rc3R5bGUiOiIiLCJsaW5rY2xhc3MiOiIiLCJjb250YWluZXJjbGFzcyI6ImRpdkNhclBheW1lbnRDb250YWluZXJXaXRoQ1RBIiwicHJvbW90ZXh0IjoiRFx1MDBlOWNvdXZyZXogcGx1cyEifSc+Cgk8L2Rpdj4KCTwvZGl2PgoJCQkJCQkJPGRpdiBjbGFzcz0iZGl2Q2FyQ29udGFjdENUQUNvbnRhaW5lciI+CgkJCQk8YnV0dG9uIHN0eWxlPSJ3aWR0aDoxMDAlOyIgY2xhc3M9ImJ0bi1kZWZhdWx0IiBvbmNsaWNrPSJqYXZhc2NyaXB0OnZvaWQob3BlblNob3dyb29tQ29udGFjdFBvcHVwKGV2ZW50LCAnSG9uZGEnLCAnQ2l2aWMgU2VkYW4gSHlicmlkJywgJzIwMjYnKSk7Ij4KCSAgICAgICAgICAgICAgICBDb250YWN0ZXotbm91cwoJICAgICAgICAgICAgPC9idXR0b24+CgkJCTwvZGl2PgoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2Pgk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVPdXRlckJveCBkaXZDYXJTaW5nbGVPdXRlckJveFdpdGhDVEEgcmViYXRlQm9yZGVyQ29sb3IiIGlkPSJmYnhfaHlicmlkXzIiPgoJCQoJCTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZUlubmVyQm94IiBpZD0iIj4KCQkJCgkJCTxkaXYgY2xhc3M9ImRpdkNhclRpdGxlQ29udGFpbmVyIj4KCQkJCTxhIHRpdGxlPSJIb25kYSBDaXZpYyDDgCBoYXlvbiBIeWJyaWRlIDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9Ib25kYS1DaXZpY19IYXRjaGJhY2tfSHlicmlkLTIwMjYuaHRtbCIgZGF0YS1tYWtlPSJIb25kYSIgZGF0YS1tb2RlbD0iQ2l2aWMgw6AgaGF5b24gaHlicmlkZSAyMDI2Ij4KCQkJCQk8aDM+CgkJCQkJCTxzcGFuIGNsYXNzPSJzcGFuQ2FyTWFrZSAiPkhvbmRhPC9zcGFuPjxicj4KCQkJCQkJPHNwYW4gY2xhc3M9Im1vZGVsTmFtZSBzcGFuTW9kZWxOYW1lIj5DaXZpYyDDgCBoYXlvbiBIeWJyaWRlIDIwMjY8L3NwYW4+CgkJCQkJPC9oMz4KCQkJCTwvYT4KCQkJCSAgICA8IS0tIE9QRU4gTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KICAgIDxkaXYgY2xhc3M9ImRpdk5ld0NhclN0YXJ0UHJpY2UiPgogICAgICAgIFNwb3J0IGVDVlQgw6AgcGFydGlyIGRlCiAgICAgICAgPHNwYW4gY2xhc3M9IiI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjM4IDk2Mjwvc3Bhbj48L3NwYW4+CiAgICAgICAgPGkgc3R5bGU9ImNvbG9yOiMwMDA7Zm9udC1zaXplOjIwcHg7IiBjbGFzcz0iY2FyUHJpY2VJbml0aWFsVG9vbFRpcEljb24gZmFsIGZhLWluZm8tY2lyY2xlIGJsYWNrQ29sb3JCb2xkIiBkYXRhLXRvb2x0aXA9JyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7UERTRjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MzYgMDAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7VHJhbnNwb3J0ICZhbXA7IFByw6lwYXJhdGlvbjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MSA4MzAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtGcmFpcyBhZG1pbi4mbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MSAwMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtUYXhlIHN1ciBwbmV1cyZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDsyMyZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O09NVklDJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzEwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7VGF4ZSBBQzombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7VG90YWwmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MzggOTYzJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0Oyc+PC9pPgogICAgPC9kaXY+CiAgICA8IS0tIENMT1NFIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CQkJCQk8ZGl2IGNsYXNzPSJkaXZOZXdDYXJEaXNjbGFpbWVyUHJpY2UiIHN0eWxlPSJmb250LXNpemU6MTJweDsiPitUVkggJmFtcDsgTGljZW5zZTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckluU3RvY2tMaW5rIiBoaWRkZW4+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGRhdGEtdHlwZT0iaW52ZGF0YSIgZGF0YS1tYWtlPSJIb25kYSIgZGF0YS1tb2RlbD0iQ2l2aWMgSGF0Y2hiYWNrIEh5YnJpZCIgZGF0YS15ZWFyPSIyMDI2IiBkYXRhLXN0eWxlaWRzPSI0ODAyODEsNDgwMjgyIiBkYXRhLWh5YnJpZD0iMSI+Cgk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckltYWdlQ29udGFpbmVyIGZsZXgtY2VudGVyIGFsaWduLWNlbnRlciBkaXZDYXJJbWFnZUNvbnRhaW5lcldpdGhDVEEiPgoJCQkJPGEgdGl0bGU9IkhvbmRhIENpdmljIMOAIGhheW9uIEh5YnJpZGUgMjAyNiIgaHJlZj0iP3BhdGg9L25ldWZzL0hvbmRhLUNpdmljX0hhdGNoYmFja19IeWJyaWQtMjAyNi5odG1sIj4KCQkJCQk8aW1nIGFsdD0iSG9uZGEgQ2l2aWMgw4AgaGF5b24gSHlicmlkZSAyMDI2IiBib3JkZXI9IjAiIGNsYXNzPSJsaXZlbG9hZCBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLWltZ3NyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0hvbmRhL0NpdmljX0hhdGNoYmFja19IeWJyaWQvMjAyNi80ODAyODEvUmVkL3Byb2ZpbGUud2VicCIgc3JjPSJodHRwczovL2NhcmltYWdlcy5kMmNtZWRpYS5jYS9uZXdjYXJpbWFnZXMvZnIvSG9uZGEvQ2l2aWNfSGF0Y2hiYWNrX0h5YnJpZC8yMDI2LzQ4MDI4MS9SZWQvcHJvZmlsZS53ZWJwIiBkYXRhLW90LWlnbm9yZSBkYXRhLWNvb2tpZWNvbnNlbnQ9Imlnbm9yZSI+CgkJCQk8L2E+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJGb290ZXJDb250YWluZXIgc3RhY2stbGMgLS1zLTkiPgoJCQkJCTxkaXYgY2xhc3M9ImNhclBheW1lbnRXcmFwcGVyIj4KCQkJPGRpdiBjbGFzcz0iY29udGVudC1za2VsZXRvbiBodG1sLWJsb2NrIiBkYXRhLWJsb2NrPSJwYXltZW50QmxvY2siIGRhdGEtdHlwZT0iYmxvY2siIGRhdGEtc291cmNlPSJzZXJ2ZXIiIGRhdGEtY2FsbGJhY2s9InBheW1lbnRDYWxjQmxvY2siPgoJCQoJPGlucHV0IG5hbWU9ImJsb2NrLWRhdGEiIHR5cGU9ImhpZGRlbiIgdmFsdWU9J3sic3R5bGVpZCI6IjQ4MDI4MSIsInRpdGxlIjoiSG9uZGEgQ2l2aWMgJmFtcDtBZ3JhdmU7IGhheW9uIEh5YnJpZGUgMjAyNiIsImhyZWYiOiJcL25ldWZzXC9Ib25kYS1DaXZpY19IYXRjaGJhY2tfSHlicmlkLTIwMjYuaHRtbCIsImxpbmtzdHlsZSI6IiIsImxpbmtjbGFzcyI6IiIsImNvbnRhaW5lcmNsYXNzIjoiZGl2Q2FyUGF5bWVudENvbnRhaW5lcldpdGhDVEEiLCJwcm9tb3RleHQiOiJEXHUwMGU5Y291dnJleiBwbHVzISJ9Jz4KCTwvZGl2PgoJPC9kaXY+CgkJCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJDb250YWN0Q1RBQ29udGFpbmVyIj4KCQkJCTxidXR0b24gc3R5bGU9IndpZHRoOjEwMCU7IiBjbGFzcz0iYnRuLWRlZmF1bHQiIG9uY2xpY2s9ImphdmFzY3JpcHQ6dm9pZChvcGVuU2hvd3Jvb21Db250YWN0UG9wdXAoZXZlbnQsICdIb25kYScsICdDaXZpYyBIYXRjaGJhY2sgSHlicmlkJywgJzIwMjYnKSk7Ij4KCSAgICAgICAgICAgICAgICBDb250YWN0ZXotbm91cwoJICAgICAgICAgICAgPC9idXR0b24+CgkJCTwvZGl2PgoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2Pgk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVPdXRlckJveCBkaXZDYXJTaW5nbGVPdXRlckJveFdpdGhDVEEgcmViYXRlQm9yZGVyQ29sb3IiIGlkPSJmYnhfaHlicmlkXzMiPgoJCQoJCTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZUlubmVyQm94IiBpZD0iIj4KCQkJCgkJCTxkaXYgY2xhc3M9ImRpdkNhclRpdGxlQ29udGFpbmVyIj4KCQkJCTxhIHRpdGxlPSJIb25kYSBBY2NvcmQgSHlicmlkZSAyMDI2IiBocmVmPSI\/cGF0aD0vbmV1ZnMvSG9uZGEtQWNjb3JkX0h5YnJpZC0yMDI2Lmh0bWwiIGRhdGEtbWFrZT0iSG9uZGEiIGRhdGEtbW9kZWw9IkFjY29yZCBIeWJyaWRlIDIwMjYiPgoJCQkJCTxoMz4KCQkJCQkJPHNwYW4gY2xhc3M9InNwYW5DYXJNYWtlICI+SG9uZGE8L3NwYW4+PGJyPgoJCQkJCQk8c3BhbiBjbGFzcz0ibW9kZWxOYW1lIHNwYW5Nb2RlbE5hbWUiPkFjY29yZCBIeWJyaWRlIDIwMjY8L3NwYW4+CgkJCQkJPC9oMz4KCQkJCTwvYT4KCQkJCSAgICA8IS0tIE9QRU4gTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KICAgIDxkaXYgY2xhc3M9ImRpdk5ld0NhclN0YXJ0UHJpY2UiPgogICAgICAgIFNwb3J0LUwgZUNWVCBIeWJyaWQgYmVybGluZSDDoCBwYXJ0aXIgZGUKICAgICAgICA8c3BhbiBjbGFzcz0iIj4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+NDYgNjYyPC9zcGFuPjwvc3Bhbj4KICAgICAgICA8aSBzdHlsZT0iY29sb3I6IzAwMDtmb250LXNpemU6MjBweDsiIGNsYXNzPSJjYXJQcmljZUluaXRpYWxUb29sVGlwSWNvbiBmYWwgZmEtaW5mby1jaXJjbGUgYmxhY2tDb2xvckJvbGQiIGRhdGEtdG9vbHRpcD0nJmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtQRFNGOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDs0MyA3MDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtUcmFuc3BvcnQgJmFtcDsgUHLDqXBhcmF0aW9uOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDsxIDgzMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O0ZyYWlzIGFkbWluLiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDsxIDAwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1RheGUgc3VyIHBuZXVzJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzIzJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7T01WSUMmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MTAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtUYXhlIEFDOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDsxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtUb3RhbCZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDs0NiA2NjMmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jz48L2k+CiAgICA8L2Rpdj4KICAgIDwhLS0gQ0xPU0UgTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4JCQkJCTxkaXYgY2xhc3M9ImRpdk5ld0NhckRpc2NsYWltZXJQcmljZSIgc3R5bGU9ImZvbnQtc2l6ZToxMnB4OyI+K1RWSCAmYW1wOyBMaWNlbnNlPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW5TdG9ja0xpbmsiIGhpZGRlbj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgZGF0YS10eXBlPSJpbnZkYXRhIiBkYXRhLW1ha2U9IkhvbmRhIiBkYXRhLW1vZGVsPSJBY2NvcmQgSHlicmlkIiBkYXRhLXllYXI9IjIwMjYiIGRhdGEtc3R5bGVpZHM9IjQ4MzM0Nyw0ODMzNDgiIGRhdGEtaHlicmlkPSIxIj4KCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW1hZ2VDb250YWluZXIgZmxleC1jZW50ZXIgYWxpZ24tY2VudGVyIGRpdkNhckltYWdlQ29udGFpbmVyV2l0aENUQSI+CgkJCQk8YSB0aXRsZT0iSG9uZGEgQWNjb3JkIEh5YnJpZGUgMjAyNiIgaHJlZj0iP3BhdGg9L25ldWZzL0hvbmRhLUFjY29yZF9IeWJyaWQtMjAyNi5odG1sIj4KCQkJCQk8aW1nIGFsdD0iSG9uZGEgQWNjb3JkIEh5YnJpZGUgMjAyNiIgYm9yZGVyPSIwIiBjbGFzcz0ibGF6eWxvYWQgb3B0YW5vbi1jYXRlZ29yeS1DMDAwMSIgZGF0YS1pbWdzcmM9Imh0dHBzOi8vY2FyaW1hZ2VzLmQyY21lZGlhLmNhL25ld2NhcmltYWdlcy9mci9Ib25kYS9BY2NvcmRfSHlicmlkLzIwMjYvNDgzMzQ3L1JlZC9wcm9maWxlLndlYnAiIGRhdGEtb3QtaWdub3JlIGRhdGEtY29va2llY29uc2VudD0iaWdub3JlIj4KCQkJCTwvYT4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckZvb3RlckNvbnRhaW5lciBzdGFjay1sYyAtLXMtOSI+CgkJCQkJPGRpdiBjbGFzcz0iY2FyUGF5bWVudFdyYXBwZXIiPgoJCQk8ZGl2IGNsYXNzPSJjb250ZW50LXNrZWxldG9uIGh0bWwtYmxvY2siIGRhdGEtYmxvY2s9InBheW1lbnRCbG9jayIgZGF0YS10eXBlPSJibG9jayIgZGF0YS1zb3VyY2U9InNlcnZlciIgZGF0YS1jYWxsYmFjaz0icGF5bWVudENhbGNCbG9jayI+CgkJCgk8aW5wdXQgbmFtZT0iYmxvY2stZGF0YSIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0neyJzdHlsZWlkIjoiNDgzMzQ3IiwidGl0bGUiOiJIb25kYSBBY2NvcmQgSHlicmlkZSAyMDI2IiwiaHJlZiI6IlwvbmV1ZnNcL0hvbmRhLUFjY29yZF9IeWJyaWQtMjAyNi5odG1sIiwibGlua3N0eWxlIjoiIiwibGlua2NsYXNzIjoiIiwiY29udGFpbmVyY2xhc3MiOiJkaXZDYXJQYXltZW50Q29udGFpbmVyV2l0aENUQSIsInByb21vdGV4dCI6IkRcdTAwZTljb3V2cmV6IHBsdXMhIn0nPgoJPC9kaXY+Cgk8L2Rpdj4KCQkJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckNvbnRhY3RDVEFDb250YWluZXIiPgoJCQkJPGJ1dHRvbiBzdHlsZT0id2lkdGg6MTAwJTsiIGNsYXNzPSJidG4tZGVmYXVsdCIgb25jbGljaz0iamF2YXNjcmlwdDp2b2lkKG9wZW5TaG93cm9vbUNvbnRhY3RQb3B1cChldmVudCwgJ0hvbmRhJywgJ0FjY29yZCBIeWJyaWQnLCAnMjAyNicpKTsiPgoJICAgICAgICAgICAgICAgIENvbnRhY3Rlei1ub3VzCgkgICAgICAgICAgICA8L2J1dHRvbj4KCQkJPC9kaXY+CgkJCTwvZGl2PgoJCTwvZGl2PgoJPC9kaXY+CTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZU91dGVyQm94IGRpdkNhclNpbmdsZU91dGVyQm94V2l0aENUQSByZWJhdGVCb3JkZXJDb2xvciIgaWQ9ImZieF9oeWJyaWRfNCI+CgkJCgkJPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlSW5uZXJCb3giIGlkPSIiPgoJCQkKCQkJPGRpdiBjbGFzcz0iZGl2Q2FyVGl0bGVDb250YWluZXIiPgoJCQkJPGEgdGl0bGU9IkhvbmRhIENSLVYgSHlicmlkZSAyMDI2IiBocmVmPSI\/cGF0aD0vbmV1ZnMvSG9uZGEtQ1JfVl9IeWJyaWQtMjAyNi5odG1sIiBkYXRhLW1ha2U9IkhvbmRhIiBkYXRhLW1vZGVsPSJDUi1WIGh5YnJpZGUgMjAyNiI+CgkJCQkJPGgzPgoJCQkJCQk8c3BhbiBjbGFzcz0ic3BhbkNhck1ha2UgIj5Ib25kYTwvc3Bhbj48YnI+CgkJCQkJCTxzcGFuIGNsYXNzPSJtb2RlbE5hbWUgc3Bhbk1vZGVsTmFtZSI+Q1ItViBIeWJyaWRlIDIwMjY8L3NwYW4+CgkJCQkJPC9oMz4KCQkJCTwvYT4KCQkJCSAgICA8IS0tIE9QRU4gTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KICAgIDxkaXYgY2xhc3M9ImRpdk5ld0NhclN0YXJ0UHJpY2UiPgogICAgICAgIFNwb3J0IFRyYWN0aW9uIEludMOpZ3JhbGUgw6AgcGFydGlyIGRlCiAgICAgICAgPHNwYW4gY2xhc3M9IiI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjQ5IDAzMjwvc3Bhbj48L3NwYW4+CiAgICAgICAgPGkgc3R5bGU9ImNvbG9yOiMwMDA7Zm9udC1zaXplOjIwcHg7IiBjbGFzcz0iY2FyUHJpY2VJbml0aWFsVG9vbFRpcEljb24gZmFsIGZhLWluZm8tY2lyY2xlIGJsYWNrQ29sb3JCb2xkIiBkYXRhLXRvb2x0aXA9JyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7UERTRjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7NDUgOTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7VHJhbnNwb3J0ICZhbXA7IFByw6lwYXJhdGlvbjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MiAwMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtGcmFpcyBhZG1pbi4mbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MSAwMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtUYXhlIHN1ciBwbmV1cyZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDsyMyZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O09NVklDJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzEwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7VGF4ZSBBQzombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7VG90YWwmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7NDkgMDMzJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0Oyc+PC9pPgogICAgPC9kaXY+CiAgICA8IS0tIENMT1NFIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CQkJCQk8ZGl2IGNsYXNzPSJkaXZOZXdDYXJEaXNjbGFpbWVyUHJpY2UiIHN0eWxlPSJmb250LXNpemU6MTJweDsiPitUVkggJmFtcDsgTGljZW5zZTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckluU3RvY2tMaW5rIiBoaWRkZW4+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGRhdGEtdHlwZT0iaW52ZGF0YSIgZGF0YS1tYWtlPSJIb25kYSIgZGF0YS1tb2RlbD0iQ1ItViBIeWJyaWQiIGRhdGEteWVhcj0iMjAyNiIgZGF0YS1zdHlsZWlkcz0iNDc3NzM5LDQ3Nzc0MCw0Nzc3MzcsNDc3NzM4IiBkYXRhLWh5YnJpZD0iMSI+Cgk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckltYWdlQ29udGFpbmVyIGZsZXgtY2VudGVyIGFsaWduLWNlbnRlciBkaXZDYXJJbWFnZUNvbnRhaW5lcldpdGhDVEEiPgoJCQkJPGEgdGl0bGU9IkhvbmRhIENSLVYgSHlicmlkZSAyMDI2IiBocmVmPSI\/cGF0aD0vbmV1ZnMvSG9uZGEtQ1JfVl9IeWJyaWQtMjAyNi5odG1sIj4KCQkJCQk8aW1nIGFsdD0iSG9uZGEgQ1ItViBIeWJyaWRlIDIwMjYiIGJvcmRlcj0iMCIgY2xhc3M9Imxhenlsb2FkIG9wdGFub24tY2F0ZWdvcnktQzAwMDEiIGRhdGEtaW1nc3JjPSJodHRwczovL2NhcmltYWdlcy5kMmNtZWRpYS5jYS9uZXdjYXJpbWFnZXMvZnIvSG9uZGEvQ1JfVl9IeWJyaWQvMjAyNi80Nzc3MzkvV2hpdGUvcHJvZmlsZS53ZWJwIiBkYXRhLW90LWlnbm9yZSBkYXRhLWNvb2tpZWNvbnNlbnQ9Imlnbm9yZSI+CgkJCQk8L2E+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJGb290ZXJDb250YWluZXIgc3RhY2stbGMgLS1zLTkiPgoJCQkJCTxkaXYgY2xhc3M9ImNhclBheW1lbnRXcmFwcGVyIj4KCQkJPGRpdiBjbGFzcz0iY29udGVudC1za2VsZXRvbiBodG1sLWJsb2NrIiBkYXRhLWJsb2NrPSJwYXltZW50QmxvY2siIGRhdGEtdHlwZT0iYmxvY2siIGRhdGEtc291cmNlPSJzZXJ2ZXIiIGRhdGEtY2FsbGJhY2s9InBheW1lbnRDYWxjQmxvY2siPgoJCQoJPGlucHV0IG5hbWU9ImJsb2NrLWRhdGEiIHR5cGU9ImhpZGRlbiIgdmFsdWU9J3sic3R5bGVpZCI6IjQ3NzczOSIsInRpdGxlIjoiSG9uZGEgQ1ItViBIeWJyaWRlIDIwMjYiLCJocmVmIjoiXC9uZXVmc1wvSG9uZGEtQ1JfVl9IeWJyaWQtMjAyNi5odG1sIiwibGlua3N0eWxlIjoiIiwibGlua2NsYXNzIjoiIiwiY29udGFpbmVyY2xhc3MiOiJkaXZDYXJQYXltZW50Q29udGFpbmVyV2l0aENUQSIsInByb21vdGV4dCI6IkRcdTAwZTljb3V2cmV6IHBsdXMhIn0nPgoJPC9kaXY+Cgk8L2Rpdj4KCQkJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckNvbnRhY3RDVEFDb250YWluZXIiPgoJCQkJPGJ1dHRvbiBzdHlsZT0id2lkdGg6MTAwJTsiIGNsYXNzPSJidG4tZGVmYXVsdCIgb25jbGljaz0iamF2YXNjcmlwdDp2b2lkKG9wZW5TaG93cm9vbUNvbnRhY3RQb3B1cChldmVudCwgJ0hvbmRhJywgJ0NSLVYgSHlicmlkJywgJzIwMjYnKSk7Ij4KCSAgICAgICAgICAgICAgICBDb250YWN0ZXotbm91cwoJICAgICAgICAgICAgPC9idXR0b24+CgkJCTwvZGl2PgoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2Pgk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVPdXRlckJveCBkaXZDYXJTaW5nbGVPdXRlckJveFdpdGhDVEEgcmViYXRlQm9yZGVyQ29sb3IiIGlkPSJmYnhfaHlicmlkXzUiPgoJCQoJCTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZUlubmVyQm94IiBpZD0iIj4KCQkJCgkJCTxkaXYgY2xhc3M9ImRpdkNhclRpdGxlQ29udGFpbmVyIj4KCQkJCTxhIHRpdGxlPSJIb25kYSBQcmVsdWRlIDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9Ib25kYS1QcmVsdWRlLTIwMjYuaHRtbCIgZGF0YS1tYWtlPSJIb25kYSIgZGF0YS1tb2RlbD0iUHJlbHVkZSAyMDI2Ij4KCQkJCQk8aDM+CgkJCQkJCTxzcGFuIGNsYXNzPSJzcGFuQ2FyTWFrZSAiPkhvbmRhPC9zcGFuPjxicj4KCQkJCQkJPHNwYW4gY2xhc3M9Im1vZGVsTmFtZSBzcGFuTW9kZWxOYW1lIj5QcmVsdWRlIDIwMjY8L3NwYW4+CgkJCQkJPC9oMz4KCQkJCTwvYT4KCQkJCSAgICA8IS0tIE9QRU4gTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KICAgIDxkaXYgY2xhc3M9ImRpdk5ld0NhclN0YXJ0UHJpY2UiPgogICAgICAgIGNvdXDDqSDDoCBwYXJ0aXIgZGUKICAgICAgICA8c3BhbiBjbGFzcz0iIj4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+NTIgOTUyPC9zcGFuPjwvc3Bhbj4KICAgICAgICA8aSBzdHlsZT0iY29sb3I6IzAwMDtmb250LXNpemU6MjBweDsiIGNsYXNzPSJjYXJQcmljZUluaXRpYWxUb29sVGlwSWNvbiBmYWwgZmEtaW5mby1jaXJjbGUgYmxhY2tDb2xvckJvbGQiIGRhdGEtdG9vbHRpcD0nJmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtQRFNGOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDs0OSA5OTAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtUcmFuc3BvcnQgJmFtcDsgUHLDqXBhcmF0aW9uOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDsxIDgzMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O0ZyYWlzIGFkbWluLiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDsxIDAwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1RheGUgc3VyIHBuZXVzJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzIzJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7T01WSUMmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MTAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtUYXhlIEFDOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDsxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtUb3RhbCZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDs1MiA5NTMmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jz48L2k+CiAgICA8L2Rpdj4KICAgIDwhLS0gQ0xPU0UgTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4JCQkJCTxkaXYgY2xhc3M9ImRpdk5ld0NhckRpc2NsYWltZXJQcmljZSIgc3R5bGU9ImZvbnQtc2l6ZToxMnB4OyI+K1RWSCAmYW1wOyBMaWNlbnNlPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW5TdG9ja0xpbmsiIGhpZGRlbj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgZGF0YS10eXBlPSJpbnZkYXRhIiBkYXRhLW1ha2U9IkhvbmRhIiBkYXRhLW1vZGVsPSJQcmVsdWRlIiBkYXRhLXllYXI9IjIwMjYiIGRhdGEtc3R5bGVpZHM9IjQ4Mjk5NyIgZGF0YS1oeWJyaWQ9IjAiPgoJPC9kaXY+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJbWFnZUNvbnRhaW5lciBmbGV4LWNlbnRlciBhbGlnbi1jZW50ZXIgZGl2Q2FySW1hZ2VDb250YWluZXJXaXRoQ1RBIj4KCQkJCTxhIHRpdGxlPSJIb25kYSBQcmVsdWRlIDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9Ib25kYS1QcmVsdWRlLTIwMjYuaHRtbCI+CgkJCQkJPGltZyBhbHQ9IkhvbmRhIFByZWx1ZGUgMjAyNiIgYm9yZGVyPSIwIiBjbGFzcz0ibGF6eWxvYWQgb3B0YW5vbi1jYXRlZ29yeS1DMDAwMSIgZGF0YS1pbWdzcmM9Imh0dHBzOi8vY2FyaW1hZ2VzLmQyY21lZGlhLmNhL25ld2NhcmltYWdlcy9mci9Ib25kYS9QcmVsdWRlLzIwMjYvNDgyOTk3L1JlZC9wcm9maWxlLndlYnAiIGRhdGEtb3QtaWdub3JlIGRhdGEtY29va2llY29uc2VudD0iaWdub3JlIj4KCQkJCTwvYT4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckZvb3RlckNvbnRhaW5lciBzdGFjay1sYyAtLXMtOSI+CgkJCQkJPGRpdiBjbGFzcz0iY2FyUGF5bWVudFdyYXBwZXIiPgoJCQk8ZGl2IGNsYXNzPSJjb250ZW50LXNrZWxldG9uIGh0bWwtYmxvY2siIGRhdGEtYmxvY2s9InBheW1lbnRCbG9jayIgZGF0YS10eXBlPSJibG9jayIgZGF0YS1zb3VyY2U9InNlcnZlciIgZGF0YS1jYWxsYmFjaz0icGF5bWVudENhbGNCbG9jayI+CgkJCgk8aW5wdXQgbmFtZT0iYmxvY2stZGF0YSIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0neyJzdHlsZWlkIjoiNDgyOTk3IiwidGl0bGUiOiJIb25kYSBQcmVsdWRlIDIwMjYiLCJocmVmIjoiXC9uZXVmc1wvSG9uZGEtUHJlbHVkZS0yMDI2Lmh0bWwiLCJsaW5rc3R5bGUiOiIiLCJsaW5rY2xhc3MiOiIiLCJjb250YWluZXJjbGFzcyI6ImRpdkNhclBheW1lbnRDb250YWluZXJXaXRoQ1RBIiwicHJvbW90ZXh0IjoiRFx1MDBlOWNvdXZyZXogcGx1cyEifSc+Cgk8L2Rpdj4KCTwvZGl2PgoJCQkJCQkJPGRpdiBjbGFzcz0iZGl2Q2FyQ29udGFjdENUQUNvbnRhaW5lciI+CgkJCQk8YnV0dG9uIHN0eWxlPSJ3aWR0aDoxMDAlOyIgY2xhc3M9ImJ0bi1kZWZhdWx0IiBvbmNsaWNrPSJqYXZhc2NyaXB0OnZvaWQob3BlblNob3dyb29tQ29udGFjdFBvcHVwKGV2ZW50LCAnSG9uZGEnLCAnUHJlbHVkZScsICcyMDI2JykpOyI+CgkgICAgICAgICAgICAgICAgQ29udGFjdGV6LW5vdXMKCSAgICAgICAgICAgIDwvYnV0dG9uPgoJCQk8L2Rpdj4KCQkJPC9kaXY+CgkJPC9kaXY+Cgk8L2Rpdj48L2Rpdj48L2Rpdj48IS0tIENMT1NFIENBVEVHT1JZQk9YV1JBUFBFUiAoMjA2MCktLT48IS0tIE9QRU4gQ0FURUdPUllCT1hXUkFQUEVSICgyMDUyKSAtLT48ZGl2IGlkPSJjbGFzc2VsZWN0cmljX2NvbnRhaW5lciIgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEyIGRpdkNhdGVnb3J5Qm94V3JhcHBlciIgc3RhdGU9Im9wZW4iIG5idmlzaWJsZT0iMSI+PGgyIGNsYXNzPSJkZWZhdWx0IGljb24taGVhZGluZyBmbGV4LWJveCBhbGlnbi1jZW50ZXIiPgoJPHNwYW4gY2xhc3M9ImZhIGZhLWNoZXZyb24tcmlnaHQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L3NwYW4+Cgk8Ym94LWxjIGNsYXNzPSItcHYwIj4KCQk8ZGl2IGNsYXNzPSJtYWluVGV4dCAtYm9sZCI+w4lsZWN0cmlxdWVzIG5ldXZlcyBIb25kYSAyMDI2PC9kaXY+CgkJPGRpdiBjbGFzcz0ic2Vjb25kYXJ5VGV4dCI+w6AgSGF3a2VzYnVyeSAocHLDqHMgZGUgR2F0aW5lYXUgJmFtcDsgT3R0YXdhKTwvZGl2PgoJPC9ib3gtbGM+CjwvaDI+PGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIgZGl2Q2Fyc0JveFdyYXBwZXIgQ0xBU1NfZWxlY3RyaWMiPgk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVPdXRlckJveCBkaXZDYXJTaW5nbGVPdXRlckJveFdpdGhDVEEgcmViYXRlQm9yZGVyQ29sb3IiIGlkPSJmYnhfZWxlY3RyaWNfMSI+CgkJCgkJPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlSW5uZXJCb3giIGlkPSIiPgoJCQkKCQkJPGRpdiBjbGFzcz0iZGl2Q2FyVGl0bGVDb250YWluZXIiPgoJCQkJPGEgdGl0bGU9IkhvbmRhIFByb2xvZ3VlIDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9Ib25kYS1Qcm9sb2d1ZS0yMDI2Lmh0bWwiIGRhdGEtbWFrZT0iSG9uZGEiIGRhdGEtbW9kZWw9IlByb2xvZ3VlIDIwMjYiPgoJCQkJCTxoMz4KCQkJCQkJPHNwYW4gY2xhc3M9InNwYW5DYXJNYWtlICI+SG9uZGE8L3NwYW4+PGJyPgoJCQkJCQk8c3BhbiBjbGFzcz0ibW9kZWxOYW1lIHNwYW5Nb2RlbE5hbWUiPlByb2xvZ3VlIDIwMjY8L3NwYW4+CgkJCQkJPC9oMz4KCQkJCTwvYT4KCQkJCSAgICA8IS0tIE9QRU4gTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KICAgIDxkaXYgY2xhc3M9ImRpdk5ld0NhclN0YXJ0UHJpY2UiPgogICAgICAgIEVYIFRyYWN0aW9uIEludMOpZ3JhbGUgw6AgcGFydGlyIGRlCiAgICAgICAgPHNwYW4gY2xhc3M9IiI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjYzIDEyMjwvc3Bhbj48L3NwYW4+CiAgICAgICAgPGkgc3R5bGU9ImNvbG9yOiMwMDA7Zm9udC1zaXplOjIwcHg7IiBjbGFzcz0iY2FyUHJpY2VJbml0aWFsVG9vbFRpcEljb24gZmFsIGZhLWluZm8tY2lyY2xlIGJsYWNrQ29sb3JCb2xkIiBkYXRhLXRvb2x0aXA9JyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7UERTRjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7NTkgOTkwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7VHJhbnNwb3J0ICZhbXA7IFByw6lwYXJhdGlvbjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MiAwMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtGcmFpcyBhZG1pbi4mbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MSAwMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtUYXhlIHN1ciBwbmV1cyZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDsyMyZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O09NVklDJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzEwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7VGF4ZSBBQzombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7VG90YWwmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7NjMgMTIzJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0Oyc+PC9pPgogICAgPC9kaXY+CiAgICA8IS0tIENMT1NFIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CQkJCQk8ZGl2IGNsYXNzPSJkaXZOZXdDYXJEaXNjbGFpbWVyUHJpY2UiIHN0eWxlPSJmb250LXNpemU6MTJweDsiPitUVkggJmFtcDsgTGljZW5zZTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckluU3RvY2tMaW5rIiBoaWRkZW4+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGRhdGEtdHlwZT0iaW52ZGF0YSIgZGF0YS1tYWtlPSJIb25kYSIgZGF0YS1tb2RlbD0iUHJvbG9ndWUiIGRhdGEteWVhcj0iMjAyNiIgZGF0YS1zdHlsZWlkcz0iNDg0MDg2LDQ4NDA4Nyw0ODQwODgiIGRhdGEtaHlicmlkPSIwIj4KCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW1hZ2VDb250YWluZXIgZmxleC1jZW50ZXIgYWxpZ24tY2VudGVyIGRpdkNhckltYWdlQ29udGFpbmVyV2l0aENUQSI+CgkJCQk8YSB0aXRsZT0iSG9uZGEgUHJvbG9ndWUgMjAyNiIgaHJlZj0iP3BhdGg9L25ldWZzL0hvbmRhLVByb2xvZ3VlLTIwMjYuaHRtbCI+CgkJCQkJPGltZyBhbHQ9IkhvbmRhIFByb2xvZ3VlIDIwMjYiIGJvcmRlcj0iMCIgY2xhc3M9Imxhenlsb2FkIG9wdGFub24tY2F0ZWdvcnktQzAwMDEiIGRhdGEtaW1nc3JjPSJodHRwczovL2NhcmltYWdlcy5kMmNtZWRpYS5jYS9uZXdjYXJpbWFnZXMvZnIvSG9uZGEvUHJvbG9ndWUvMjAyNi80ODQwODYvU2lsdmVyL3Byb2ZpbGUud2VicCIgZGF0YS1vdC1pZ25vcmUgZGF0YS1jb29raWVjb25zZW50PSJpZ25vcmUiPgoJCQkJPC9hPgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyRm9vdGVyQ29udGFpbmVyIHN0YWNrLWxjIC0tcy05Ij4KCQkJCQk8ZGl2IGNsYXNzPSJjYXJQYXltZW50V3JhcHBlciI+CgkJCTxkaXYgY2xhc3M9ImNvbnRlbnQtc2tlbGV0b24gaHRtbC1ibG9jayIgZGF0YS1ibG9jaz0icGF5bWVudEJsb2NrIiBkYXRhLXR5cGU9ImJsb2NrIiBkYXRhLXNvdXJjZT0ic2VydmVyIiBkYXRhLWNhbGxiYWNrPSJwYXltZW50Q2FsY0Jsb2NrIj4KCQkKCTxpbnB1dCBuYW1lPSJibG9jay1kYXRhIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSd7InN0eWxlaWQiOiI0ODQwODYiLCJ0aXRsZSI6IkhvbmRhIFByb2xvZ3VlIDIwMjYiLCJocmVmIjoiXC9uZXVmc1wvSG9uZGEtUHJvbG9ndWUtMjAyNi5odG1sIiwibGlua3N0eWxlIjoiIiwibGlua2NsYXNzIjoiIiwiY29udGFpbmVyY2xhc3MiOiJkaXZDYXJQYXltZW50Q29udGFpbmVyV2l0aENUQSIsInByb21vdGV4dCI6IkRcdTAwZTljb3V2cmV6IHBsdXMhIn0nPgoJPC9kaXY+Cgk8L2Rpdj4KCQkJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckNvbnRhY3RDVEFDb250YWluZXIiPgoJCQkJPGJ1dHRvbiBzdHlsZT0id2lkdGg6MTAwJTsiIGNsYXNzPSJidG4tZGVmYXVsdCIgb25jbGljaz0iamF2YXNjcmlwdDp2b2lkKG9wZW5TaG93cm9vbUNvbnRhY3RQb3B1cChldmVudCwgJ0hvbmRhJywgJ1Byb2xvZ3VlJywgJzIwMjYnKSk7Ij4KCSAgICAgICAgICAgICAgICBDb250YWN0ZXotbm91cwoJICAgICAgICAgICAgPC9idXR0b24+CgkJCTwvZGl2PgoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2PjwvZGl2PjwvZGl2PjwhLS0gQ0xPU0UgQ0FURUdPUllCT1hXUkFQUEVSICgyMDYwKS0tPjwvZGl2PjwhLS0gQ0xPU0UgQ0FURUdPUklFU0JPWFdSQVBQRVIgKDIwNjYpLS0+PGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IkhvbmRhIiBpZD0iaXNCcmFuZFBhZ2UiPgogICAgICAgIAk8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEyIGRpdkRpc2NsYWltZXJCbG9jayI+CiAgICAgICAgPGRpdiBjbGFzcz0iZGl2RGlzY2xhaW1lckJsb2NrQ29udGVudCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRpdkRpc2NsYWltZXJCbG9ja1RpdGxlIj4KICAgICAgICAgICAgICAgIENsYXVzZSBkZSBub24tcmVzcG9uc2FiaWxpdMOpCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJkaXZEaXNjbGFpbWVyQmxvY2tUZXh0Ij4KICAgICAgICAgICAgICAgIExlIG1vbnRhbnQgaW5kaXF1w6kgcmVwcsOpc2VudGUgdW5lIGVzdGltYXRpb24gZHUgbW9udGFudCBxdWUgdm91cyBwb3V2ZXogdm91cyBhdHRlbmRyZSDDoCBwYXllciBlbiBkb2xsYXJzIGNhbmFkaWVucy4gTGVzIHRheGVzIHNvbnQgZXhjbHVlcyAoc2F1ZiBpbmRpY2F0aW9uIGNvbnRyYWlyZSkuIExlcyBwaG90b3MgcmVwcsOpc2VudGVudCBsZSBtb2TDqGxlIG9mZmVydCBtYWlzIHBldXZlbnQgdmFyaWVyIGzDqWfDqHJlbWVudCBlbiBjb3VsZXVyLCBvcHRpb25zLCBvdSBjYXJhY3TDqXJpc3RpcXVlcy4gQmllbiBxdWUgbm91cyBub3VzIGVmZm9yY2lvbnMgZGUgZ2FyYW50aXIgbCdleGFjdGl0dWRlIGRlcyBpbmZvcm1hdGlvbnMgc3VyIGNlIHNpdGUgV2ViLCBub3VzIHZvdXMgcmVjb21tYW5kb25zIGRlIG5vdXMgY29udGFjdGVyIGRpcmVjdGVtZW50IHBvdXIgdsOpcmlmaWVyIGxlcyBkw6l0YWlscyBldCBvYnRlbmlyIGRlcyBpbmZvcm1hdGlvbnMgc3VwcGzDqW1lbnRhaXJlcyBzdXIgbGUgdsOpaGljdWxlLCB5IGNvbXByaXMgbGEgY29uZmlybWF0aW9uIGRlcyBwcml4LCBkZXMgY291bGV1cnMsIGRlcyBmaW5pdGlvbnMsIGRlcyBvcHRpb25zIGV0IGF1dHJlcyBzcMOpY2lmaWNhdGlvbnMuCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgkJCTwvZGl2PgoKICAgICAgIAkKCgk8ZGl2IGNsYXNzPSJ1aS1sb2FkZXItYmFja2dyb3VuZCI+PGltZyBjbGFzcz0idWktbG9hZGVyLWJhY2tncm91bmQtZ2lmIGxhenlsb2FkIG9wdGFub24tY2F0ZWdvcnktQzAwMDEiIGRhdGEtaW1nc3JjPSJodHRwczovL2hhd2tlc2J1cnlob25kYS5jYS8vaW1hZ2VzL2FqYXgtbG9hZGVyMi5naWYiIGFsdD0iYWpheCBsb2FkZXIyIiBkYXRhLW90LWlnbm9yZSBkYXRhLWNvb2tpZWNvbnNlbnQ9Imlnbm9yZSI+PC9kaXY+CgoJCTxkaXYgaWQ9ImFzUG9wVXAiIGNsYXNzPSJyZXZlYWwtbW9kYWwgc21hbGwiIHN0eWxlPSJib3gtc2hhZG93OiBub25lO2JhY2tncm91bmQ6I2ZmZmZmZjtjb2xvcjojMDAwO3dpZHRoOjg1JTttYXgtd2lkdGg6NjAwcHg7cGFkZGluZzoyMHB4OyI+CgkJPGRpdiBjbGFzcz0idGV4dC11cHBlcmNhc2UiIHN0eWxlPSJoZWlnaHQ6NDBweDt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXNpemU6IDEuNzVyZW07bWFyZ2luLWJvdHRvbToxMHB4OyI+CgkJCVNWUCBjb25maXJtZXIKCQk8L2Rpdj4KCgkJPGZvcm0gbWV0aG9kPSJwb3N0Ij4KCQkJCTxzdGFjay1sYz4KCQk8Ym94LWxjIGNsYXNzPSJ2aVRleHQiPgoJCQk8ZGl2IGNsYXNzPSJwb3B1cC1wb2xpY3kiPkRhbnMgbGUgYnV0IGRlIHNlIGNvbmZvcm1lciDDoCBsYSBMb2kgQ2FuYWRpZW5uZSBBbnRpLVBvdXJyaWVsLCBub3VzIHZvdXMgZGVtYW5kb25zIGRlIGNvbmZpcm1lciBzaSB2b3VzIGTDqXNpcmV6IHF1ZSBub3VzIHZvdXMgY29tbXVuaXF1aW9ucyBub3MgcmFiYWlzLCBwcm9tb3Rpb25zLCBvZmZyZXMgZXQgdmVudGVzIHByaXbDqWVzIMOgIGwnYXZlbmlyLjwvZGl2PgoJCTwvYm94LWxjPgoJCTxib3gtbGMgY2xhc3M9ImRlYWxlckNvbnNlbnQiPgoJCQk8ZGl2IGNsYXNzPSJmbGV4LWJldHdlZW4iPgoJCQkJPGRpdiBjbGFzcz0iLXc1MHAiPkhhd2tlc2J1cnkgSG9uZGE8L2Rpdj4KCQkJCTxkaXYgY2xhc3M9Ii13NTBwIj4KCQkJCQk8bGFiZWw+CgkJCQkJCTxpbnB1dCB0eXBlPSJyYWRpbyIgdmFsdWU9IjEiIG5hbWU9ImNvbnNlbnQiIGNsYXNzPSJyZXFSYWRpbyI+CgkJCQkJCU91aQoJCQkJCTwvbGFiZWw+CgkJCQkJPGxhYmVsPgoJCQkJCQk8aW5wdXQgdHlwZT0icmFkaW8iIHZhbHVlPSItMSIgbmFtZT0iY29uc2VudCIgY2xhc3M9InJlcVJhZGlvIj4KCQkJCQkJTm9uCgkJCQkJPC9sYWJlbD4KCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iY29uc2VudCBkaXNjbGFpbWVyIiBzdHlsZT0id2lkdGg6IDUwJTsiIGRhdGEtdG9vbHRpcD0nRW4gZm91cm5pc3NhbnQgbWVzIGluZm9ybWF0aW9ucyBwZXJzb25uZWxsZXMsIGplIGNvbnNlbnMgw6AgbGV1ciB1dGlsaXNhdGlvbiBldCBsZXVyIGRpdnVsZ2F0aW9uIGNvbmZvcm3DqW1lbnQgw6AgbGEgUG9saXRpcXVlIGRlIGNvbmZpZGVudGlhbGl0w6kgZGUgSGF3a2VzYnVyeSBIb25kYS4gSmUgY29uZmlybWUgYXZvaXIgbHUgbGEgJmx0O2EgaHJlZj0iL3BvbGl0aXF1ZS1kZS1jb25maWRlbnRpYWxpdGUuaHRtbCImZ3Q7UG9saXRpcXVlIGRlIGNvbmZpZGVudGlhbGl0w6kmbHQ7L2EmZ3Q7LiBKZSBjb21wcmVuZHMgcXVlIEhhd2tlc2J1cnkgSG9uZGEgcGV1dCBwYXJ0YWdlciBtZXMgaW5mb3JtYXRpb25zIHBlcnNvbm5lbGxlcyBhdmVjIGRlcyB0aWVycyBkYW5zIGxlIGJ1dCBkZSBnw6lyZXIgbWEgcmVsYXRpb24gYXZlYyBldXgsIHRlbHMgcXVlIG5vdHJlIGZvdXJuaXNzZXVyIGRlIGdlc3Rpb24gZGUgbGEgcmVsYXRpb24gY2xpZW50IChDUk0pLiBKZSBjb21wcmVuZHMgcXVlIGNlcnRhaW5zIGRlIGNlcyBmb3Vybmlzc2V1cnMgcGV1dmVudCBzdG9ja2VyIG1lcyBpbmZvcm1hdGlvbnMgcGVyc29ubmVsbGVzIHN1ciBkZXMgc2VydmV1cnMgZXQgZGVzIGJhc2VzIGRlIGRvbm7DqWVzIHNpdHXDqXMgZW4gZGVob3JzIGRlIG1hIHByb3ZpbmNlLiBKZSBjb21wcmVuZHMgw6lnYWxlbWVudCBxdWUgamUgcGV1eCByZXRpcmVyIG1vbiBjb25zZW50ZW1lbnQgZXQgbWUgZMOpc2Fib25uZXIgZGUgbGEgcsOpY2VwdGlvbiBkZSBjb21tdW5pY2F0aW9ucyBmdXR1cmVzIGRlIEhhd2tlc2J1cnkgSG9uZGEgw6AgdG91dCBtb21lbnQuIExlIGNvbnNlbnRlbWVudCDDoCBsYSByw6ljZXB0aW9uIGRlIGNvbW11bmljYXRpb25zIMOpbGVjdHJvbmlxdWVzIGVzdCBzb2xsaWNpdMOpIHBhciBIYXdrZXNidXJ5IEhvbmRhLic+Q2xhdXNlIGRlIG5vbi1yZXNwb25zYWJpbGl0w6k8L2Rpdj4KCQk8L2JveC1sYz4KCgkJCgoJPC9zdGFjay1sYz4KCTxkaXYgY2xhc3M9Ii1wdDEwIiBzdHlsZT0iZm9udC1zaXplOiAxMHB4O3RleHQtYWxpZ246IGNlbnRlcjtjb2xvcjogdmFyKC0tZGFyay1ncmF5KTsiPklNUE9SVEFOVDogVm91cyBwb3V2ZXogZmFjaWxlbWVudCByZXRpcmVyIHZvdHJlIGNvbnNlbnRlbWVudCBlbiB0b3V0IHRlbXBzITwvZGl2PgoKCQkJPGRpdiBjbGFzcz0iZmxleC1ib3ggZmxleC1ldmVubHkiIHN0eWxlPSJtYXJnaW4tdG9wOiAzNXB4OyI+CgkJCQk8aW5wdXQgdHlwZT0iYnV0dG9uIiBpZD0iY29uc2VudFN1Ym1pdCIgY2xhc3M9IiBidG4tZGVmYXVsdCAiIHZhbHVlPSJTb3VtZXR0cmUiPgoJCQk8L2Rpdj4KCQk8L2Zvcm0+CgoJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJsYXN0Q29uc2VudFBvcCIgdmFsdWU9IiI+Cgk8L2Rpdj4KCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0icHVyY2hhc2VfaW50ZW50X2Fuc3dlciIgdmFsdWU9IlBHSnlJQzgrVEdVZ1kyeHBaVzUwSUdFZ2JDZHBiblJsYm5ScGIyNGdaQ2RoWTJobGRHVnlJSE52YmlCd2NtOWphR0ZwYmlCMjZXaHBZM1ZzWlNBOFlqNGxkR2x0WldaeVlXMWxKVHd2WWo0OFluSWdMejQ9Ij4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJwdXJjaGFzZV9pbnRlbnRfbm9fYW5zd2VyIiB2YWx1ZT0iYzJGdWN5QmtZWFJsSUhCeTZXTnBjMlU9Ij4KCTxkaXYgY2xhc3M9InJldmVhbC1tb2RhbCIgaWQ9ImFzUHVyY2hhc2VJbnRlbnQiPgoJICA8Zm9ybSBtZXRob2Q9InBvc3QiPgoJICAgIDxzdHJvbmcgY2xhc3M9ImFzUElUaXRsZSI+CgkgICAgICBRdWVscXVlcyBwcsOpY2lzaW9ucwoJICAgIDwvc3Ryb25nPgoJICAgIDxvbCBjbGFzcz0ic3RlcHMiPgoJICAgIDxsaSBpZD0iQUxMT1dfU0hBUkVfUEVSU09OQUxfSU5GTyIgY2xhc3M9ImhpZGRlbiI+CgkJCQkJPGRpdiBzdHlsZT0iaGVpZ2h0OjEwNXB4OyI+CgkJCQkJCTxzdHJvbmcgY2xhc3M9InZpVGV4dCI+CgkJCQkJCQlOb3VzIHBlcm1ldHRlei12b3VzIGRlIHBhcnRhZ2VyIHZvcyBpbmZvcm1hdGlvbnMgcGVyc29ubmVsbGVzIGF2ZWMgbGVzIGluc3RpdHV0aW9ucyBmaW5hbmNpw6hyZXMgcG91ciB2b3RyZSBidXJlYXUgZGUgY3LDqWRpdD8KCQkJCQkJPC9zdHJvbmc+CgkJCQkJCTxkaXYgY2xhc3M9ImNsciI+PC9kaXY+CgoJCQkJCQk8ZGl2IGNsYXNzPSJhc3llc25vIGFzeWVzIj4KCQkJCQkJCTxpbnB1dCB0eXBlPSJyYWRpbyIgdmFsdWU9InllcyIgbmFtZT0ic2hhcmVfcGVyc29uYWwiIGNsYXNzPSJyZXFSYWRpbyI+CgkJCQkJCQkJPGxhYmVsPk91aTwvbGFiZWw+CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJhc3llc25vIGFzbm8iPgoJCQkJCQkJPGlucHV0IHR5cGU9InJhZGlvIiB2YWx1ZT0ibm8iIG5hbWU9InNoYXJlX3BlcnNvbmFsIiBjbGFzcz0icmVxUmFkaW8iPgoJCQkJCQkJCTxsYWJlbD5Ob248L2xhYmVsPgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBzdHlsZT0iZGlzcGxheTpub25lO2NvbG9yOnJlZDtwYWRkaW5nLXRvcDo0cHg7Y2xlYXI6IGJvdGg7IiBpZD0iQUxMT1dfU0hBUkVfUEVSU09OQUxfSU5GT19URVhUX0VSUk9SIj5Wb3RyZSBjb25zZW50ZW1lbnQgZXN0IHJlcXVpcyBwb3VyIGNvbXBsw6l0ZXIgdm90cmUgZGVtYW5kZSBkZSBjcsOpZGl0ITwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJPC9saT4KCgkgICAgICA8bGkgY2xhc3M9InN0ZXBJbnRlbnQgaGlkZGVuIj4KCSAgICAgICAgPHN0cm9uZyBjbGFzcz0idmlUZXh0Ij4KCQkJCQlRdWFuZCBwcsOpdm95ZXotdm91cyBhY2hldGVyIHVuIHbDqWhpY3VsZT8KCSAgICAgICAgPC9zdHJvbmc+CgkgICAgICAgIDx1bCBjbGFzcz0idmlPcHRpb25zIj4KCSAgICAgICAgICA8bGk+PGlucHV0IHR5cGU9InJhZGlvIiB2YWx1ZT0iRCdpY2kgMzAgam91cnMiIG5hbWU9InB1cmNoYXNlX2ludGVudCIgY2xhc3M9InJlcVJhZGlvIj48bGFiZWw+IEQnaWNpIDMwIGpvdXJzPC9sYWJlbD48L2xpPgoJICAgICAgICAgIDxsaT48aW5wdXQgdHlwZT0icmFkaW8iIHZhbHVlPSJEJ2ljaSAzIG1vaXMiIG5hbWU9InB1cmNoYXNlX2ludGVudCIgY2xhc3M9InJlcVJhZGlvIj48bGFiZWw+IEQnaWNpIDMgbW9pczwvbGFiZWw+PC9saT4KCSAgICAgICAgICA8bGk+PGlucHV0IHR5cGU9InJhZGlvIiB2YWx1ZT0iRCdpY2kgNiBtb2lzIiBuYW1lPSJwdXJjaGFzZV9pbnRlbnQiIGNsYXNzPSJyZXFSYWRpbyI+PGxhYmVsPiBEJ2ljaSA2IG1vaXM8L2xhYmVsPjwvbGk+CgkgICAgICAgICAgPGxpPjxpbnB1dCB0eXBlPSJyYWRpbyIgdmFsdWU9IkQnaWNpIHBsdXMgZGUgNiBtb2lzIiBuYW1lPSJwdXJjaGFzZV9pbnRlbnQiIGNsYXNzPSJyZXFSYWRpbyI+PGxhYmVsPiBEJ2ljaSBwbHVzIGRlIDYgbW9pczwvbGFiZWw+PC9saT4KCSAgICAgICAgPC91bD4KCSAgICAgICAgPGJyIGNsYXNzPSJjbHIiPgoJICAgICAgPC9saT4KCgkgICAgICA8bGkgY2xhc3M9InN0ZXBDb250YWN0ICIgZGF0YS1kZXBhcnRtZW50cz0ibmV3O3VzZWQ7c2VydmljZTtmaW5hbmNlO2NvbnRhY3QiPgoJCQk8ZGl2IHN0eWxlPSJib3JkZXI6IG5vbmU7IiBjbGFzcz0iZDJjZm9ybSBkMmNmb3JtLS1yb3ciPgoJCQkJPGJveC1sYz4KCQkJCQk8ZGl2IGNsYXNzPSJ2aVRleHQiPgoJCQkJCQk8c3Ryb25nPlF1ZWxsZSBlc3Qgdm90cmUgbcOpdGhvZGUgZGUgY29udGFjdCBwcsOpZsOpcsOpZSA\/PC9zdHJvbmc+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0icmFkaW8taW5saW5lIj4KCQkJCQkJPGxhYmVsIGNsYXNzPSIiPgoJCQkJCQkJPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJwcmVmZXJyZWRfY29udGFjdCIgdmFsdWU9IlTDqWzDqXBob25lIiBjbGFzcz0icmVxUmFkaW8iPgoJCQkJCQkJVMOpbMOpcGhvbmUKCQkJCQkJPC9sYWJlbD4KCQkJCQkJPGxhYmVsIGNsYXNzPSIiPgoJCQkJCQkJPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJwcmVmZXJyZWRfY29udGFjdCIgdmFsdWU9IkNvdXJyaWVsIiBjbGFzcz0icmVxUmFkaW8iPgoJCQkJCQkJQ291cnJpZWwKCQkJCQkJPC9sYWJlbD4KCQkJCQkJPGxhYmVsIGNsYXNzPSIiPgoJCQkJCQkJPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJwcmVmZXJyZWRfY29udGFjdCIgdmFsdWU9IlNNUyIgY2xhc3M9InJlcVJhZGlvIj4KCQkJCQkJCVNNUwoJCQkJCQk8L2xhYmVsPgoJCQkJCTwvZGl2PgoJCQkJPC9ib3gtbGM+CgkJCTwvZGl2PgoJCTwvbGk+CgoJCTxsaSBjbGFzcz0ic3RlcENvbnNlbnQiPgoJCQkJPHN0YWNrLWxjPgoJCTxib3gtbGMgY2xhc3M9InZpVGV4dCI+CgkJCTxkaXYgY2xhc3M9InBvcHVwLXBvbGljeSI+RGFucyBsZSBidXQgZGUgc2UgY29uZm9ybWVyIMOgIGxhIExvaSBDYW5hZGllbm5lIEFudGktUG91cnJpZWwsIG5vdXMgdm91cyBkZW1hbmRvbnMgZGUgY29uZmlybWVyIHNpIHZvdXMgZMOpc2lyZXogcXVlIG5vdXMgdm91cyBjb21tdW5pcXVpb25zIG5vcyByYWJhaXMsIHByb21vdGlvbnMsIG9mZnJlcyBldCB2ZW50ZXMgcHJpdsOpZXMgw6AgbCdhdmVuaXIuPC9kaXY+CgkJPC9ib3gtbGM+CgkJPGJveC1sYyBjbGFzcz0iZGVhbGVyQ29uc2VudCI+CgkJCTxkaXYgY2xhc3M9ImZsZXgtYmV0d2VlbiI+CgkJCQk8ZGl2IGNsYXNzPSItdzUwcCI+SGF3a2VzYnVyeSBIb25kYTwvZGl2PgoJCQkJPGRpdiBjbGFzcz0iLXc1MHAiPgoJCQkJCTxsYWJlbD4KCQkJCQkJPGlucHV0IHR5cGU9InJhZGlvIiB2YWx1ZT0iMSIgbmFtZT0iY29uc2VudCIgY2xhc3M9InJlcVJhZGlvIj4KCQkJCQkJT3VpCgkJCQkJPC9sYWJlbD4KCQkJCQk8bGFiZWw+CgkJCQkJCTxpbnB1dCB0eXBlPSJyYWRpbyIgdmFsdWU9Ii0xIiBuYW1lPSJjb25zZW50IiBjbGFzcz0icmVxUmFkaW8iPgoJCQkJCQlOb24KCQkJCQk8L2xhYmVsPgoJCQkJPC9kaXY+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJjb25zZW50IGRpc2NsYWltZXIiIHN0eWxlPSJ3aWR0aDogNTAlOyIgZGF0YS10b29sdGlwPSdFbiBmb3Vybmlzc2FudCBtZXMgaW5mb3JtYXRpb25zIHBlcnNvbm5lbGxlcywgamUgY29uc2VucyDDoCBsZXVyIHV0aWxpc2F0aW9uIGV0IGxldXIgZGl2dWxnYXRpb24gY29uZm9ybcOpbWVudCDDoCBsYSBQb2xpdGlxdWUgZGUgY29uZmlkZW50aWFsaXTDqSBkZSBIYXdrZXNidXJ5IEhvbmRhLiBKZSBjb25maXJtZSBhdm9pciBsdSBsYSAmbHQ7YSBocmVmPSIvcG9saXRpcXVlLWRlLWNvbmZpZGVudGlhbGl0ZS5odG1sIiZndDtQb2xpdGlxdWUgZGUgY29uZmlkZW50aWFsaXTDqSZsdDsvYSZndDsuIEplIGNvbXByZW5kcyBxdWUgSGF3a2VzYnVyeSBIb25kYSBwZXV0IHBhcnRhZ2VyIG1lcyBpbmZvcm1hdGlvbnMgcGVyc29ubmVsbGVzIGF2ZWMgZGVzIHRpZXJzIGRhbnMgbGUgYnV0IGRlIGfDqXJlciBtYSByZWxhdGlvbiBhdmVjIGV1eCwgdGVscyBxdWUgbm90cmUgZm91cm5pc3NldXIgZGUgZ2VzdGlvbiBkZSBsYSByZWxhdGlvbiBjbGllbnQgKENSTSkuIEplIGNvbXByZW5kcyBxdWUgY2VydGFpbnMgZGUgY2VzIGZvdXJuaXNzZXVycyBwZXV2ZW50IHN0b2NrZXIgbWVzIGluZm9ybWF0aW9ucyBwZXJzb25uZWxsZXMgc3VyIGRlcyBzZXJ2ZXVycyBldCBkZXMgYmFzZXMgZGUgZG9ubsOpZXMgc2l0dcOpcyBlbiBkZWhvcnMgZGUgbWEgcHJvdmluY2UuIEplIGNvbXByZW5kcyDDqWdhbGVtZW50IHF1ZSBqZSBwZXV4IHJldGlyZXIgbW9uIGNvbnNlbnRlbWVudCBldCBtZSBkw6lzYWJvbm5lciBkZSBsYSByw6ljZXB0aW9uIGRlIGNvbW11bmljYXRpb25zIGZ1dHVyZXMgZGUgSGF3a2VzYnVyeSBIb25kYSDDoCB0b3V0IG1vbWVudC4gTGUgY29uc2VudGVtZW50IMOgIGxhIHLDqWNlcHRpb24gZGUgY29tbXVuaWNhdGlvbnMgw6lsZWN0cm9uaXF1ZXMgZXN0IHNvbGxpY2l0w6kgcGFyIEhhd2tlc2J1cnkgSG9uZGEuJz5DbGF1c2UgZGUgbm9uLXJlc3BvbnNhYmlsaXTDqTwvZGl2PgoJCTwvYm94LWxjPgoKCQkKCgk8L3N0YWNrLWxjPgoJPGRpdiBjbGFzcz0iLXB0MTAiIHN0eWxlPSJmb250LXNpemU6IDEwcHg7dGV4dC1hbGlnbjogY2VudGVyO2NvbG9yOiB2YXIoLS1kYXJrLWdyYXkpOyI+SU1QT1JUQU5UOiBWb3VzIHBvdXZleiBmYWNpbGVtZW50IHJldGlyZXIgdm90cmUgY29uc2VudGVtZW50IGVuIHRvdXQgdGVtcHMhPC9kaXY+CgkJPC9saT4KCgkgICAgPC9vbD4KCSAgPC9mb3JtPgoJICA8ZGl2IGNsYXNzPSItdGV4dC1jZW50ZXIiPgoJICAgIDxhIGlkPSJlbWFpbENvbnNlbnRTdWJtaXQiIGhyZWY9Ij9wYXRoPSMiIGNsYXNzPSIgLXVwcGVyY2FzZSBidG4tZGVmYXVsdCAiPlNPVU1FVFRSRTwvYT4KCSAgPC9kaXY+Cgk8L2Rpdj4KCgoKCQoJCgkKCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJjdXJyZW50SXRlbVR5cGUiIHZhbHVlPSJjYXIiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImN1cnJlbnRJdGVtVHlwZVVSTFNhZmVFTiIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iY3VycmVudFN0YXR1cyIgdmFsdWU9Im5ldyI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0idHh0VXNlckFnZW50IiB2YWx1ZT0iICAiPgoJCTxzY3JpcHQgYXN5bmMgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vc3RhdHMuZDJjbWVkaWEuY2Evc2VydmljZS9kMmMuaW5pdC5qcyI+PC9zY3JpcHQ+CgoJPGRpdiBpZD0iY29udmVyc2lvblRhZ3NXcmFwcGVyIj48L2Rpdj4KCgk8ZGl2IGlkPSJkMmNfdmFycyI+PGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9Im5ld2NhcnMuaHRtbCIgaWQ9IjE2ZDd2d3Q2NnBtb3dvMGsiIGRhdGEtZm9ydmFyPSJDVVJSRU5UUEFHRSI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSIjI01BS0UjIyIgaWQ9ImNra242ZXQ5MDN3b3NrIiBkYXRhLWZvcnZhcj0iTUFLRSI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSIjI01PREVMIyMiIGlkPSI0MmNsc2h5cXN4d2tza28iIGRhdGEtZm9ydmFyPSJNT0RFTCI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSIjI1lFQVIjIyIgaWQ9IjFwOTZwcTIydDI3NGNjYyIgZGF0YS1mb3J2YXI9IllFQVIiPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iIyNTVE9DS05VTUJFUiMjIiBpZD0iM3NiNnhzZ2JrazRrNDQiIGRhdGEtZm9ydmFyPSJTVE9DS05VTUJFUiI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJORVciIGlkPSJzbzd5dXFhajRkd2NjOHMiIGRhdGEtZm9ydmFyPSJTSVRFX0NBUl9TRUNUSU9OX1RZUEUiPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iNGMzYjJiMGUxODc4MzM0NmE4NTBhMzg2YzIxM2Y1YmZ8MTUwODE5MTY0OSIgaWQ9IjEzZHF0c25jZDgxd2s4NDQiIGRhdGEtZm9ydmFyPSJGSU5BTkNFX0VNQUlMIj4KPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IjdhYWQwOTk4ZWQ2MjliNzczMjYxODUyYjU2MWI4ZWM3fDE1MDgxOTE2NDkiIGlkPSI1Y2N5Z2s5MjVtZ3dnMCIgZGF0YS1mb3J2YXI9IkZJTkFOQ0VfQURGX0VNQUlMIj4KPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9ImxpdmUiIGlkPSIyZWpoYmMweXlvZzB3d3ciIGRhdGEtZm9ydmFyPSJERVBMT1lNRU5UVFlQRSI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJnb29nbGUiIGlkPSIxNDA0cmEwNGJ3cmtvNHdnIiBkYXRhLWZvcnZhcj0iTUFQVE9VU0UiPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0icmVzZXQiIGlkPSI2anlwNDY2NHZnd3M4MHciIGRhdGEtZm9ydmFyPSJQT1BVUFdJREdFVFRPQUNUSVZFIj4KPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9Imhhd2tlc2J1cnlob25kYS5jYSIgaWQ9InU2dGhydzlvbGNnOHc4dyIgZGF0YS1mb3J2YXI9IkRPTUFJTk5BTUUiPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iaHR0cHM6Ly93d3cuaGF3a2VzYnVyeWhvbmRhLmNhIiBpZD0iY291OWhtNDI5MWMwa29jIiBkYXRhLWZvcnZhcj0iTk9STUFMU0lURVVSSSI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSIiIGlkPSIxZXJpdjkwMHBkYTg4d3c4IiBkYXRhLWZvcnZhcj0iTUFLRUZPUkVNQUlMIj4KPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IiIgaWQ9IjEwcGE3djNxZWxkY29zayIgZGF0YS1mb3J2YXI9Ik1PREVMRk9SRU1BSUwiPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iIiBpZD0icjgyemZreGEyZHdzczAwIiBkYXRhLWZvcnZhcj0iWUVBUiI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSIiIGlkPSJpM2dzYXhnczVqazh3Y2siIGRhdGEtZm9ydmFyPSJSRUZFUkVSIj4KPC9kaXY+PCEtLSAjI0VORE9GUEFHRSMjIC0tPgoJPGRpdiBpZD0iY29uZmlybV9mb3JtcyI+PC9kaXY+CgoJPCEtLSBPTzo6NjM5MjJmYmQyOTBjM2Y1Y2Q3OWZmNTk2MzM4YTg1OTkgLS0+CgoJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZhY2Vib29va19pc19hY3RpdmUiIHZhbHVlPSIxIj4KCTwhLS0gRmFjZWJvb2sgUGl4ZWwgQ29kZSBWaWV3Q29udGVudCAtLT4KCTwhLS0gT086OmE5MzFhMGY4Mjg0OGZlY2EyYzE1N2Q3MDg3MDU4YWYzIC0tPgoJPG5vc2NyaXB0PgoJCTxpbWcgY2xhc3M9Imxhenlsb2FkIG9wdGFub24tY2F0ZWdvcnktQzAwMDEiIGRhdGEtaW1nc3JjPSJodHRwczovL3d3dy5mYWNlYm9vay5jb20vdHI\/aWQ9NjgzNDIyNDcyMTk0OTY0JmFtcDtldj1QYWdlVmlldyZhbXA7bm9zY3JpcHQ9MSIgYWx0PSJ0ciBpZCA2ODM0MjI0NzIxOTQ5NjQgZXYgIHBhZ2UgdmlldyBub3NjcmlwdCAxIiBoZWlnaHQ9IjEiIHN0eWxlPSJkaXNwbGF5Om5vbmUiIHdpZHRoPSIxIiBkYXRhLW90LWlnbm9yZSBkYXRhLWNvb2tpZWNvbnNlbnQ9Imlnbm9yZSI+Cgk8L25vc2NyaXB0PgoJPCEtLSBFbmQgRmFjZWJvb2sgUGl4ZWwgQ29kZSBWaWV3Q29udGVudCAtLT4KCgk8IS0tIERXUC0yNDM5IC0tPgoJPCEtLSBPTzo6MzE0Y2FhNWJmNTkwOTJjNmY3Y2Y2YTJmYzcyZTk1MTMgLS0+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iMSIgaWQ9ImlzbW9iaWxlIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJGUkVOQ0giIGlkPSJhY3RpdmVzaXRlbGFuZ3VhZ2UiPgoKCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJ0b3BzaXRlaWQiIG5hbWU9InRvcHNpdGVpZCIgdmFsdWU9IjE1NSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0idG9wY2FyaWQiIG5hbWU9InRvcGNhcmlkIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJ0b3BjYXJpZE11bHRpc3RlcEZvcm0iIG5hbWU9InRvcGNhcmlkTXVsdGlzdGVwRm9ybSIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0idG9waXNtb2JpbGUiIG5hbWU9InRvcGlzbW9iaWxlIiB2YWx1ZT0iMSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0idG9wZGVwbG95bWVudHR5cGUiIG5hbWU9InRvcGRlcGxveW1lbnR0eXBlIiB2YWx1ZT0ibGl2ZSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iZU1vZGVsIiBuYW1lPSJlTW9kZWwiIHZhbHVlPSIiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InBvcHVwbWFrZSIgbmFtZT0icG9wdXBtYWtlIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJwb3B1cG1ha2VNdWx0aXN0ZXBGb3JtIiBuYW1lPSJwb3B1cG1ha2VNdWx0aXN0ZXBGb3JtIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJwb3B1cG1vZGVsIiBuYW1lPSJwb3B1cG1vZGVsIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJwb3B1cG1vZGVsTXVsdGlzdGVwRm9ybSIgbmFtZT0icG9wdXBtb2RlbE11bHRpc3RlcEZvcm0iIHZhbHVlPSIiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InBvcHVweWVhciIgbmFtZT0icG9wdXB5ZWFyIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJwb3B1cHllYXJNdWx0aXN0ZXBGb3JtIiBuYW1lPSJwb3B1cHllYXJNdWx0aXN0ZXBGb3JtIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJwb3B1cHRyaW0iIG5hbWU9InBvcHVwdHJpbSIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0icG9wdXBzdG9ja251bWJlciIgbmFtZT0icG9wdXBzdG9ja251bWJlciIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0icG9wdXBzdG9ja251bWJlck11bHRpc3RlcEZvcm0iIG5hbWU9InBvcHVwc3RvY2tudW1iZXJNdWx0aXN0ZXBGb3JtIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJsYXN0dmlld2VkbWFrZSIgbmFtZT0ibGFzdHZpZXdlZG1ha2UiIHZhbHVlPSIiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9Imxhc3R2aWV3ZWRtb2RlbCIgbmFtZT0ibGFzdHZpZXdlZG1vZGVsIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJsYXN0dmlld2VkeWVhciIgbmFtZT0ibGFzdHZpZXdlZHllYXIiIHZhbHVlPSIiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9Imxhc3R2aWV3ZWR0cmltIiBuYW1lPSJsYXN0dmlld2VkdHJpbSIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ibGFzdHZpZXdlZHN0b2NrbnVtYmVyIiBuYW1lPSJsYXN0dmlld2Vkc3RvY2tudW1iZXIiIHZhbHVlPSIiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9Imhhc011bHRpcGxlRGVhbGVycyIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ic2VuZEVtYWlsVG9BbGxEZWFsZXJzIiB2YWx1ZT0iMCI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ic2VhcmNoZWRWZWhpY2xlIiB2YWx1ZT0iICAiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InNlYXJjaGVkcXVlcnltYWtlIiBuYW1lPSJzZWFyY2hlZHF1ZXJ5bWFrZSIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ic2VhcmNoZWRxdWVyeW1vZGVsIiBuYW1lPSJzZWFyY2hlZHF1ZXJ5bW9kZWwiIHZhbHVlPSIiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InNlYXJjaGVkcXVlcnl5ZWFyIiBuYW1lPSJzZWFyY2hlZHF1ZXJ5eWVhciIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iaW1nc3ZycG9vbGFjdGl2ZSIgbmFtZT0iaW1nc3ZycG9vbGFjdGl2ZSIgdmFsdWU9IlRSVUUiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImlzQVZHTWFya2V0UHJpY2VBY3RpdmUiIHZhbHVlPSIxIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJzaXRlY29tcGlsZWlkIiBuYW1lPSJzaXRlY29tcGlsZWlkIiB2YWx1ZT0iNjliMDcyOTBiYTA0NCI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iZW1haWxMaXN0U3VmZml4IiBuYW1lPSJlbWFpbExpc3RTdWZmaXgiIHZhbHVlPSIxNTA4MTkxNjQ5Ij4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJkaXNhYmxlUG9wdXBzIiBuYW1lPSJkaXNhYmxlUG9wdXBzIiB2YWx1ZT0iMCI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iQURNSU5fR0VORVJBTF9CTE9DS19GUl9ET01BSU5fQ0hFQ0siIG5hbWU9IkFETUlOX0dFTkVSQUxfQkxPQ0tfRlJfRE9NQUlOX0NIRUNLIiB2YWx1ZT0iMSI+CgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InRhcmdldFBhZ2UiIG5hbWU9InRhcmdldFBhZ2UiIHZhbHVlPSJORVdDQVJTIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJwYWdlU2VjdGlvbiIgbmFtZT0icGFnZVNlY3Rpb24iIHZhbHVlPSJORVciPgoKCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJEaXNjb3VudFBvcHVwT3RoZXJQYWdlcyIgbmFtZT0iRGlzY291bnRQb3B1cE90aGVyUGFnZXMiIHZhbHVlPSJIT01FUEFHRTtQUk9NTztTRVJWSUNFUztGSU5BTkNFO0NPTlRBQ1QiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IkRpc2NvdW50UG9wdXBEZWxheVNob3dPdGhlciIgbmFtZT0iRGlzY291bnRQb3B1cERlbGF5U2hvd090aGVyIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJEaXNjb3VudFBvcHVwRGVsYXlTaG93IiBuYW1lPSJEaXNjb3VudFBvcHVwRGVsYXlTaG93IiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJEaXNjb3VudFBvcHVwRGVsYXlTaG93TmV3IiBuYW1lPSJEaXNjb3VudFBvcHVwRGVsYXlTaG93TmV3IiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJTSE9XX1BPUFVQX0FVVE8iIG5hbWU9IlNIT1dfUE9QVVBfQVVUTyIgdmFsdWU9InBlcmNlbnQiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IlNIT1dfUE9QVVBfQVVUT19VU0VEIiBuYW1lPSJTSE9XX1BPUFVQX0FVVE9fVVNFRCIgdmFsdWU9ImRlbGF5Ij4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJTSE9XX1BPUFVQX0FVVE9fTkVXIiBuYW1lPSJTSE9XX1BPUFVQX0FVVE9fTkVXIiB2YWx1ZT0ic2Nyb2xsdXAiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IkFVVE9fUEVSQ0VOVF9QT1BVUCIgbmFtZT0iQVVUT19QRVJDRU5UX1BPUFVQIiB2YWx1ZT0iNzUiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IkFVVE9fUEVSQ0VOVF9QT1BVUF9VU0VEIiBuYW1lPSJBVVRPX1BFUkNFTlRfUE9QVVBfVVNFRCIgdmFsdWU9Ijc1Ij4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJBVVRPX1BFUkNFTlRfUE9QVVBfTkVXIiBuYW1lPSJBVVRPX1BFUkNFTlRfUE9QVVBfTkVXIiB2YWx1ZT0iNzUiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IkdFTkVSQUxfVVNFRF9QQUdFX1BPUFVQX1NFTEVDVCIgbmFtZT0iR0VORVJBTF9VU0VEX1BBR0VfUE9QVVBfU0VMRUNUIiB2YWx1ZT0iRVhDTFVESU5HIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJHRU5FUkFMX05FV19QQUdFX1BPUFVQX1NFTEVDVCIgbmFtZT0iR0VORVJBTF9ORVdfUEFHRV9QT1BVUF9TRUxFQ1QiIHZhbHVlPSJFWENMVURJTkciPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IlVTRURfTE9HT19PTl9DSEVDSyIgbmFtZT0iVVNFRF9MT0dPX09OX0NIRUNLIiB2YWx1ZT0iIj4KCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iU0VNX0JPT1NURVJfQUNUSVZFIiBuYW1lPSJTRU1fQk9PU1RFUl9BQ1RJVkUiIHZhbHVlPSIxIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJQQUdFSUQiIG5hbWU9IlBBR0VJRCIgdmFsdWU9Im5ld2NhcnMuaHRtbCI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iRGlzY291bnRQb3B1cENoZWNrYm94T3RoZXIiIG5hbWU9IkRpc2NvdW50UG9wdXBDaGVja2JveE90aGVyIiB2YWx1ZT0iMSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iRGlzY291bnRQb3B1cENoZWNrYm94IiBuYW1lPSJEaXNjb3VudFBvcHVwQ2hlY2tib3giIHZhbHVlPSIxIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJEaXNjb3VudFBvcHVwQ2hlY2tib3hOZXciIG5hbWU9IkRpc2NvdW50UG9wdXBDaGVja2JveE5ldyIgdmFsdWU9IjEiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IkNSTV9XU1NfQUNUSVZFIiBuYW1lPSJDUk1fV1NTX0FDVElWRSIgdmFsdWU9InllcyI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0idHh0QnVpbGRBbmRQcmljZUVtYWlsTGluayIgdmFsdWU9IkRlcm5pZXIgdsOpaGljdWxlIGNvbmZpZ3Vyw6kgKG1vZHVsZSBDb25maWd1cmF0aW9uICZhbXA7IFByaXgpIGxlIHskQkFOUExJTkt9Ij4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJ0eHRCdWlsZEFuZFByaWNlRm9sZGVyUGF0aCIgdmFsdWU9Ii9jb25maWd1cmF0aW9uLWV0LXByaXgvIj4KCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ibmV3U2VjdGlvbm5hYmxlZCIgbmFtZT0ibmV3U2VjdGlvbm5hYmxlZCIgdmFsdWU9IjEiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InVzZWRTZWN0aW9ubmFibGVkIiBuYW1lPSJ1c2VkU2VjdGlvbm5hYmxlZCIgdmFsdWU9IjEiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImZpbmFuY2VTZWN0aW9ubmFibGVkIiBuYW1lPSJmaW5hbmNlU2VjdGlvbm5hYmxlZCIgdmFsdWU9IjEiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InNlcnZpY2VTZWN0aW9ubmFibGVkIiBuYW1lPSJzZXJ2aWNlU2VjdGlvbm5hYmxlZCIgdmFsdWU9IjEiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InByb21vU2VjdGlvbm5hYmxlZCIgbmFtZT0icHJvbW9TZWN0aW9ubmFibGVkIiB2YWx1ZT0iMSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iQ0FNUEFJR05JRCIgbmFtZT0iQ0FNUEFJR05JRCIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iSVNWTSIgbmFtZT0iSVNWTSIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iaGlkZGVuRGVhbGVyTmFtZSIgdmFsdWU9Ikhhd2tlc2J1cnkgSG9uZGEiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQ0JCQ2hlY2tVc2VyIiB2YWx1ZT0iTVRndU9UY3VNVFF1T1RFPSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmb3JtX2VtYWlscyIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iMCIgaWQ9Imhhc1ZCRENFbmFibGVkIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJmZmRMMSIgdmFsdWU9IjFlOWYzODZiMGM0MDdjYmY0ZDNjOGY1YWMwZTJlMWZmZDNjYjc1MmYiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IkdSV0wiIG5hbWU9IkdSV0wiIHZhbHVlPSJiMmUzNTBiNzFjMTY0NmI3ZWVlYzllMWFmNmM4NTRiMTNjYjFkYjUxO2JhNmI4NjExY2JhMTE3ODAzMWIxN2ZhN2UzNTBhY2YyY2UxMzVhYTU7MDljMzU4MDdiYTQ3YTgyNTkyZWY4OGU1ZDYzMDRlYTY5OWI4Y2JlMiI+CgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IkRFQUxFUkJSQU5EIiBuYW1lPSJERUFMRVJCUkFORCIgdmFsdWU9IkhvbmRhIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJERUFMRVJQQUNPREUiIG5hbWU9IkRFQUxFUlBBQ09ERSIgdmFsdWU9IjY3MjAiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IkZJTkFOQ0VGT1JNVFlQRSIgbmFtZT0iRklOQU5DRUZPUk1UWVBFIiB2YWx1ZT0ibXVsdGlzdGVwIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJEaXNjb3VudFBvcHVwTmV3UmViYXRlU2hvd1RleHRVcyIgdmFsdWU9IjAiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IkRpc2NvdW50UG9wdXBVc2VkUmViYXRlU2hvd1RleHRVcyIgdmFsdWU9IjAiPgoKCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJvZW1DZXJ0aWZpY2F0aW9uIiB2YWx1ZT0iMTQiPgoKCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJjb29raWVMb2dUb2tlbiIgdmFsdWU9Ik1qYzBPRFF6TVRrMk5URTEiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImNvb2tpZVRvQ2hlY2siIHZhbHVlPSIiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImRpc2FibGVJbnRlcm5hbFNlc3Npb24iIHZhbHVlPSIwIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJkZWFsZXJQcm92aW5jZUNvZGUiIHZhbHVlPSJPTiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ic2l0ZUlEIiB2YWx1ZT0iMTU1Ij4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJzaXRlYXBpdXJsIiB2YWx1ZT0iaHR0cHM6Ly9zaXRlYXBpLmQyY21lZGlhLmNhIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJGaW5hbmNlX0Zvcm1UeXBlIiB2YWx1ZT0ibXVsdGlzdGVwIj4KCiAgICA8ZGl2IGlkPSJlbWFpbFN1Y2Nlc3NNZXNzYWdlIiBjbGFzcz0icmV2ZWFsLW1vZGFsIGVtYWlsLWNvbnNlbnQtYm94IiBzdHlsZT0id2lkdGg6NjAlOyI+CiAgICAgIDxkaXYgY2xhc3M9Imljb24tdGl0bGUiPgogICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9InRpdGxlLWljb24gc3VjY2VzcyAtbWwwIj48L3NwYW4+IC0tPgogICAgICAgIDxzcGFuIGNsYXNzPSJ0aXRsZS10eHQiPlZvdHJlIGRlbWFuZGUgYSBiaWVuIMOpdMOpIGVudm95w6llITwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICAgIDxwIGNsYXNzPSJkZWZhdWx0U3VjY2VzcyI+PGJyPlZvdHJlIGRlbWFuZGUgYSDDqXTDqSBlbnZvecOpZSBhdmVjIHN1Y2PDqHMuIFVuIHJlcHLDqXNlbnRhbnQgdm91cyBjb250YWN0ZXJhIHNvdXMgcGV1LjwvcD4KICAgICAgPHAgY2xhc3M9InNlcnZpY2VTdWNjZXNzIiBzdHlsZT0iZGlzcGxheTpub25lOyI+PGJyPk1lcmNpIHBvdXIgdm90cmUgZGVtYW5kZS4gVW4gbWVtYnJlIGRlIG5vdHJlIMOpcXVpcGUgY29tbXVuaXF1ZXJhIGF2ZWMgdm91cyBzb3VzIHBldS48L3A+CiAgICAgIDwhLS0gPGEgY2xhc3M9ImNsb3NlLXJldmVhbC1tb2RhbCI+JiMyMTU7PC9hPiAtLT4KICAgICAgPGRpdiBjbGFzcz0iZW1haWwtY29uc2VudC1idG5zIC1wdDIwIC1yaWdodCBhbXBDb25zZW50UmVzcG9uc2VTZW5kRGlzbWlzcyI+CiAgICAgICAgPGEgaHJlZj0iP3BhdGg9IyIgY2xhc3M9IiAtdXBwZXJjYXNlIGJ0bi1kZWZhdWx0ICIgb25jbGljaz0iJCgnLmNsb3NlLXJldmVhbC1tb2RhbDp2aXNpYmxlJykudHJpZ2dlcignY2xpY2snKTtyZXR1cm4gZmFsc2U7Ij5GZXJtZXI8L2E+CiAgICAgIDwvZGl2PgogICAgICA8Zm9ybSBpZD0iZW1haWxtc2dmcm0iIGNsYXNzPSJjb25maXJtX2h0bWwiIHRhcmdldD0iaWZyYW1lIiBtZXRob2Q9InBvc3QiIGFjdGlvbj0iL2NvbmZpcm1hdGlvbi5odG1sIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibGFiZWwiIGNsYXNzPSJsYWJlbGVtYWlsIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic2VjdGlvbiIgY2xhc3M9ImxhYmVsc2VjdGlvbiIgdmFsdWU9Ik9jY2FzaW9uIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYnJhbmQiIGNsYXNzPSJicmFuZGVtYWlsIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibW9kZWwiIGNsYXNzPSJtb2RlbGVtYWlsIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ieWVhciIgY2xhc3M9InllYXJlbWFpbCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Imdvb2dsZWlkIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZ29vZ2xlaWRkMmNtZWRpYSIgdmFsdWU9IiI+CgkJCQkJCSAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWR3b3Jkc2NvbmlkIiB2YWx1ZT0iODgxNzYyNDQ2Ij4KCQkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFkd29yZHNsYWJlbGlkIiB2YWx1ZT0iRUlUNkNKdjE5bVlRanNHNnBBTSI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJpbmdjb25pZCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJpbmdhY3Rpb25pZCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJpbmdkb21haW5pZCIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhZHJvbGxBZHYiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhZHJvbGxQaXgiIHZhbHVlPSIiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZmFjZWJvb2tDb25JZCIgdmFsdWU9IjY4MzQyMjQ3MjE5NDk2NCI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkb21haW4iIHZhbHVlPSJoYXdrZXNidXJ5aG9uZGEuY2EiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJyZWZlcnJlciIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRlcGFydG1lbnQiIHZhbHVlPSJORVciPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJsZWFkX2RlcGFydG1lbnQiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc2V4cHJlc3MiIGNsYXNzPSJpc2V4cHJlc3MiIHZhbHVlPSIwIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNwcm9tbyIgdmFsdWU9IjAiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc2hvbWVwYWdlIiB2YWx1ZT0iMCI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InRlc3Rtb2RlIiBjbGFzcz0idGVzdG1vZGUiIHZhbHVlPSIwIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImxlYWRUeXBlIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0icGFnZUlEIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY3VycmVudFVSTCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzQ29uZmlybVBvcHVwIiB2YWx1ZT0iIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNvbmZpcm1fZW1haWwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjb25maXJtX2ZpcnN0X25hbWUiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjb25maXJtX2xhc3RfbmFtZSIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNvbmZpcm1fcGhvbmVfbnVtYmVyIiB2YWx1ZT0iIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzRnVsbFdpZHRoIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZGVhbGVyTmFtZSIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJ1dHRvblBvc2l0aW9uIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNNb2JpbGVOZXdWRFAiIHZhbHVlPSIxIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZnJvbUF1dG9BdWJhaW5lIiB2YWx1ZT0iIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJORVciIG5hbWU9InRleHRDYXJTZWN0aW9uVHlwZSIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJsYW5nIiB2YWx1ZT0iZnIiPgogICAgICA8L2Zvcm0+CiAgICAgIDxpZnJhbWUgd2lkdGg9IjEiIGhlaWdodD0iMSIgbmFtZT0iaWZyYW1lIiBmcmFtZWJvcmRlcj0iMCIgc3R5bGU9IndpZHRoOjFweDtoZWlnaHQ6MXB4OyI+PC9pZnJhbWU+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGlkPSJlbWFpbEZhaWxNZXNzYWdlIiBjbGFzcz0icmV2ZWFsLW1vZGFsIGVtYWlsLWNvbnNlbnQtYm94IiBzdHlsZT0id2lkdGg6NjAlOyI+CiAgICAgIDxzcGFuIGNsYXNzPSJmYWlsIj5VbmUgZXJyZXVyIHMnZXN0IHByb2R1aXRlPC9zcGFuPgogICAgICA8cD5Ob3VzIG4nYXZvbnMgcGFzIHB1IGVudm95ZXIgdm90cmUgbWVzc2FnZS4gUydpbCB2b3VzIHBsYcOudCByYWZyYcOuY2hpciBldCBlc3NheWV6IMOgIG5vdXZlYXU8L3A+CiAgICAgIDxkaXYgY2xhc3M9ImNsb3NlLXJldmVhbC1tb2RhbCI+PGVtIGNsYXNzPSJmYSBmYS10aW1lcy1jaXJjbGUiPjwvZW0+PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9Ii1wdDIwIC1yaWdodCBhbXBDb25zZW50UmVzcG9uc2VTZW5kRGlzbWlzcyI+CiAgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgY2xhc3M9IiAtdXBwZXJjYXNlIGJ0bi1kZWZhdWx0ICIgb25jbGljaz0iJCgnI2VtYWlsRmFpbE1lc3NhZ2UnKS50cmlnZ2VyKCdyZXZlYWw6Y2xvc2UnKTsiIHZhbHVlPSJGZXJtZXIiPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKCgkJCQoKCQkJCgkJPHN0eWxlPgoKCQkJI2xlYWREZWFsZXJBcHBvaW50bWVudCBzaWRlYmFyLWxjID4gKnsKCQkJCXdpZHRoOiBjbGFtcCgyMC41cmVtLCBtYXgoOTB2dywgMjAuNXJlbSksIDYwcmVtKTsKCQkJCWRpcmVjdGlvbjogcnRsOwoJCQl9CgoJCQkjbGVhZERlYWxlckFwcG9pbnRtZW50IHNpZGViYXItbGMgPiAqID4gKnsKCQkJCWRpcmVjdGlvbjogaW5pdGlhbDsKCQkJfQoKCQkJI2xlYWREZWFsZXJBcHBvaW50bWVudCBzaWRlYmFyLWxjID4gKiA+Omxhc3QtY2hpbGR7CgkJCQl3aWR0aDogMjByZW07CgkJCX0KCgkJCSNsZWFkRGVhbGVyQXBwb2ludG1lbnQgc2lkZWJhci1sY3sKCQkJCS0tc2lkZWJhci1icDogNDAlOwoJCQl9CgoJCQkjbGVhZERlYWxlckFwcG9pbnRtZW50IHN3aXRjaGVyLWxjewoJCQkJLS1zd2l0Y2gtYnA6IDM1cmVtOwoJCQl9CgoKCQkJI2Zvcm1EZWFsZXJBcHBvaW50bWVudCBsYWJlbHsKCQkJCW1heC13aWR0aDoxOXJlbTsKCQkJCWRpc3BsYXk6IGZsZXg7CgkJCQlmbGV4LXdyYXA6IHdyYXA7CgkJCQlqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CgkJCX0KCgkJCSNmb3JtRGVhbGVyQXBwb2ludG1lbnQgbGFiZWwgc3BhbnsKCQkJCXdpZHRoOjRyZW07CgkJCX0KCgoJCQkjZm9ybURlYWxlckFwcG9pbnRtZW50IFt0eXBlPSJzdWJtaXQiXXsKCQkJCW1heC13aWR0aDoxOXJlbTsKCQkJfQoKCQkJLmNvbnRhY3RNYXBDb250YWluZXJ7CgkJCQloZWlnaHQ6MTAwJTsKCQkJCW1pbi1oZWlnaHQ6bWluKDc1dmgsIDM4cmVtKTsKCQkJfQoKCQkJLmNvbnRhY3RGb3JtewoJCQkJYm9yZGVyLWNvbG9yOiNiYmI7CgkJCQlib3gtc2l6aW5nOiBib3JkZXItYm94OwoJCQl9CgoJCQkjbGVhZERlYWxlckFwcG9pbnRtZW50IC5jb250YWN0Rm9ybSBpbnB1dHsKCQkJCW1heC13aWR0aDogMTByZW07CgkJCX0KCgoKCQkJI2xlYWREZWFsZXJBcHBvaW50bWVudCAuZmxhdHBpY2tyLWRheS5zZWxlY3RlZHsKCQkJCWJhY2tncm91bmQtY29sb3I6IzAwMDsKCQkJCWJvcmRlci1jb2xvcjojMDAwOwoJCQl9CgoJCQkjbGVhZERlYWxlckFwcG9pbnRtZW50IC5mbGF0cGlja3ItdGltZSA6aXMoaW5wdXQ6aG92ZXIsaW5wdXQ6Zm9jdXMpewoJCQkJYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CgkJCX0KCgkJCS5mbGF0cGlja3ItbW9udGhEcm9wZG93bi1tb250aCwgLmZsYXRwaWNrci1tb250aERyb3Bkb3duLW1vbnRoc3sKCQkJCXRleHQtdHJhbnNmb3JtOnZhcigtLXR4dC11cHBlciwgdXBwZXJjYXNlKTsKCQkJfQoKCQkJLyogLmRwLWxhcmdlIC5mbGF0cGlja3ItY2FsZW5kYXJ7CgkJCQl3aWR0aDozMHJlbTsKCQkJCWZvbnQtc2l6ZToxLjFyZW07CgkJCX0KCgkJCS5kcC1sYXJnZSAuZmxhdHBpY2tyLXdlZWtkYXlzewoJCQkJaGVpZ2h0OjIuNXJlbTsKCQkJfQoKCQkJLmRwLWxhcmdlIC5mbGF0cGlja3ItZGF5ewoJCQkJbWF4LXdpZHRoOiA0cmVtOwoJCQkJaGVpZ2h0OiAyLjVyZW07CgkJCQlsaW5lLWhlaWdodDogMi41cmVtOwoJCQl9CgoJCQkuZHAtbGFyZ2UgOmlzKC5mbGF0cGlja3ItZGF5cywuZGF5Q29udGFpbmVyKSB7CgkJCQl3aWR0aDoxMDAlOwoJCQkJbWF4LXdpZHRoOiAzMHJlbTsKCQkJfSAqLwoJCTwvc3R5bGU+CgoJCQk8ZGl2IGlkPSJsZWFkRGVhbGVyQXBwb2ludG1lbnQiIGhpZGRlbj4KCQkJCTxkaXYgY2xhc3M9ImZsZXgtY2VudGVyIGFsaWduLWNlbnRlciI+CgkJCQk8c2lkZWJhci1sYz4KCQkJCQk8ZGl2PiA8IS0tIGludGVybWVkaWFyeSB3cmFwcGVyIC0tPgoKCQkJCQkJPGJveC1sYz4KCQkJCQkJCTxzdGFjay1sYyBjbGFzcz0iYWxpZ24tY2VudGVyIj4KCQkJCQkJCQk8dWwgY2xhc3M9ImNoZWNrbGlzdCAtZnMtMSAtLXMiPgoJCQkJCQkJCQk8bGk+VW5lIGV4cMOpcmllbmNlIHBlcnNvbm5hbGlzw6llIGTDqHMgdm90cmUgYXJyaXbDqWU8L2xpPgoJCQkJCQkJCQk8bGk+QXVjdW5lIGF0dGVudGUgY2hleiBsZSBjb25jZXNzaW9ubmFpcmU8L2xpPgoJCQkJCQkJCQk8bGk+QXVjdW5lIHBhcGVyYXNzZSBpbnV0aWxlOiBjb25jZW50cmV6LXZvdXMgc3VyIGxlIHbDqWhpY3VsZTwvbGk+CgkJCQkJCQkJPC91bD4KCQkJCQkJCQk8Ym94LWxjIGNsYXNzPSJmbGV4LWNlbnRlciI+CgkJCQkJCQkJCTxpbnB1dCBjbGFzcz0iZGF0ZXBpY2tlciBmbGF0cGlja3ItaW5wdXQiIGhpZGRlbiB0eXBlPSJ0ZXh0IiB0aXRsZT0iU2VsZWN0IERhdGUuLi4iIHBsYWNlaG9sZGVyPSJTZWxlY3QgRGF0ZS4uLiIgZGF0YS1pZD0iaW5saW5lIiByZWFkb25seT4KCQkJCQkJCQk8L2JveC1sYz4KCQkJCQkJCQk8Ym94LWxjIGNsYXNzPSJjb250YWN0Rm9ybSAtYiAtdy0xMDAgZmxleC1jZW50ZXIgLS1zMiI+CgkJCQkJCQkJCTxmb3JtIGlkPSJmb3JtRGVhbGVyQXBwb2ludG1lbnQiIGNsYXNzPSItdy0xMDAiIG5vdmFsaWRhdGU+CgkJCQkJCQkJCQk8c3RhY2stbGMgY2xhc3M9Ii0tczIgYWxpZ24tY2VudGVyIj4KCgkJCQkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1ib2xkIHR4dC1jZW50ZXIgdHh0LXVwcGVyIHNlbGVjdGVkVGltZSI+PC9zcGFuPgoJCQkJCQkJCQkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRhdGUiPgoKCQkJCQkJCQkJCQk8c3dpdGNoZXItbGM+CgkJCQkJCQkJCQkJCTxkaXYgY2xhc3M9ImZsZXgtY2VudGVyIj4gPCEtLSBpbnRlcm1lZGlhcnkgd3JhcHBlciAtLT4KCQkJCQkJCQkJCQkJCTxsYWJlbCBjbGFzcz0iZm9ybS1sYWJlbCBhbGlnbi1jZW50ZXIiPgoJCQkJCQkJCQkJCQkJCTxzcGFuPk5vbSAqPC9zcGFuPgoJCQkJCQkJCQkJCQkJCTxpbnB1dCByZXF1aXJlZCBjbGFzcz0iLXBoIiBuYW1lPSJuYW1lIiB0eXBlPSJ0ZXh0Ij4KCQkJCQkJCQkJCQkJCTwvbGFiZWw+CgoJCQkJCQkJCQkJCQkJPGxhYmVsIGNsYXNzPSJmb3JtLWxhYmVsIGFsaWduLWNlbnRlciI+CgkJCQkJCQkJCQkJCQkJPHNwYW4+Q291cnJpZWwgKjwvc3Bhbj4KCQkJCQkJCQkJCQkJCQk8aW5wdXQgbmFtZT0iZW1haWwiIHR5cGU9ImVtYWlsIiByZXF1aXJlZD4KCQkJCQkJCQkJCQkJCTwvbGFiZWw+CgoJCQkJCQkJCQkJCQkJPGxhYmVsIGNsYXNzPSJmb3JtLWxhYmVsIGFsaWduLWNlbnRlciI+CgkJCQkJCQkJCQkJCQkJPHNwYW4+VMOpbMOpcGhvbmUgKjwvc3Bhbj4KCQkJCQkJCQkJCQkJCQk8aW5wdXQgZGF0YS1wcmlzdGluZS1waG9uZSBuYW1lPSJwaG9uZW51bSIgdHlwZT0idGVsIiByZXF1aXJlZD4KCQkJCQkJCQkJCQkJCTwvbGFiZWw+CgkJCQkJCQkJCQkJCTwvZGl2PgoJCQkJCQkJCQkJCTwvc3dpdGNoZXItbGM+CgoJCQkJCQkJCQkJCTxidXR0b24gb25zdWJtaXQ9ImphdmFzY3JpcHQ6dm9pZCgpIiBjbGFzcz0iYnRuIGJ0bi1wcm9tbyAtZnMtbHIgLXctMTAwIHR4dC11cHBlciAtYm9sZCIgdHlwZT0ic3VibWl0Ij4KCQkJCQkJCQkJCQkJUHJlbmRyZSByZW5kZXotdm91cwoJCQkJCQkJCQkJCTwvYnV0dG9uPgoKCQkJCQkJCQkJCQk8aW5wdXQgbmFtZT0iZGF0YSIgdHlwZT0iaGlkZGVuIiBkYXRhLW1ha2U9IiIgZGF0YS1tb2RlbD0iIiBkYXRhLXllYXI9IiIgZGF0YS10cmltPSIiIGRhdGEtY29uZGl0aW9uPSIiIGRhdGEta209IiIgZGF0YS12aW49IiIgZGF0YS1zdG9jay1udW1iZXI9IiI+CgoJCQkJCQkJCQkJCTxpbnB1dCBuYW1lPSJzZW5kVG8iIHZhbHVlPSI0YzNiMmIwZTE4NzgzMzQ2YTg1MGEzODZjMjEzZjViZnwxNTA4MTkxNjQ5IiB0eXBlPSJoaWRkZW4iPgoJCQkJCQkJCQkJCTxpbnB1dCBuYW1lPSJzZW5kVG9BREZGb3JtYXQiIHZhbHVlPSI3YWFkMDk5OGVkNjI5Yjc3MzI2MTg1MmI1NjFiOGVjN3wxNTA4MTkxNjQ5IiB0eXBlPSJoaWRkZW4iPgoJCQkJCQkJCQkJCTxpbnB1dCBuYW1lPSJtYWlsSUQiIHZhbHVlPSJEZWFsZXJBcHBvaW50bWVudCIgdHlwZT0iaGlkZGVuIj4KCQkJCQkJCQkJCQk8aW5wdXQgbmFtZT0icG9wdXBPZmZlclR5cGUiIHZhbHVlPSJEZWFsZXJBcHBvaW50bWVudEFsbCIgdHlwZT0iaGlkZGVuIj4KCgkJCQkJCQkJCQkJPGRpdiBjbGFzcz0ibGVhZEVtYWlsIiBoaWRkZW4+CgkJCQkJCQkJCQkJCTxzcGFuIGRhdGEtc3ViamVjdD5MZWFkIDogRGVtYW5kZSBkZSByZW5kZXotdm91czwvc3Bhbj4KCQkJCQkJCQkJCQkJPHNwYW4gZGF0YS1ib2R5PkJvbmpvdXIsPGJyPjxicj5VbiBjbGllbnQgcG90ZW50aWVsIGF5YW50IHZpc2l0w6kgdm90cmUgc2l0ZSB3ZWIsIGFpbWVyYWl0IHByZW5kcmUgdW4gcmVuZGV6LXZvdXM6PGJyPjxicj48dT5SZW5zZWlnbmVtZW50cyBzdXIgbGUgdsOpaGljdWxlPC91Pjo8YnI+TW9kw6hsZTogPHN0cm9uZz4gIDwvc3Ryb25nPjxicj5OSVY6IDxzdHJvbmc+eyRWSU59PC9zdHJvbmc+PGJyPk51bcOpcm8gZGUgc3RvY2s6IDxzdHJvbmc+eyRTVE9DS05VTUJFUn08L3N0cm9uZz48YnI+S2lsb23DqHRyZXM6IDxzdHJvbmc+eyRLTX08L3N0cm9uZz48YnI+PGJyPjx1PkRhdGUgZHUgcmVuZGV6LXZvdXMgc291aGFpdMOpPC91PiA6IDxzdHJvbmc+eyREQVRFfTwvc3Ryb25nPjxicj48YnI+PHU+UmVuc2VpZ25lbWVudHMgc3VyIGxlIHZpc2l0ZXVyPC91Pjo8YnI+Tm9tOiA8c3Ryb25nPnskTkFNRX08L3N0cm9uZz48YnI+Q291cnJpZWw6IDxzdHJvbmc+PGEgaHJlZj0iP3BhdGg9bWFpbHRvOiU3QiUyNEVNQUlMJTdEIj57JEVNQUlMfTwvYT48L3N0cm9uZz48YnI+VMOpbMOpcGhvbmU6IDxzdHJvbmc+PGEgaHJlZj0iP3BhdGg9dGVsOiU3QiUyNFBIT05FTlVNJTdEIj57JFBIT05FTlVNfTwvYT48L3N0cm9uZz4geyRQSE9ORV9WQUxJREFUSU9OX0FUVEVNUFRTfTxicj48YnI+PHU+Q29uY2Vzc2lvbjwvdT46PGJyPk5vbSA6IDxzdHJvbmc+eyRERUFMRVJOQU1FfTwvc3Ryb25nPjxicj48YnI+PGRpdiBzdHlsZT0iIyNTRU9CTE9DS0RJU1BMQVkjIyI+U291cmNlIE3DqWRpYTogPHN0cm9uZz57JFVUTURFVEFJTFN9PC9zdHJvbmc+PGJyPk5hdmlnYXRldXI6IDxzdHJvbmc+eyRVU0VSQUdFTlR9IC0gPC9zdHJvbmc+PGJyPkhpc3RvcmlxdWUgZGUgbmF2aWdhdGlvbjogPHN0cm9uZz48YSBocmVmPSI\/cGF0aD0lN0IlMjRVVUxJTkslN0QiIHJlbD0ibm9mb2xsb3cgdWdjIHNwb25zb3JlZCBub2luZGV4IiBzdHlsZT0iY29sb3I6YmxhY2s7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsiPkNsaXF1ZXogaWNpPC9hPjwvc3Ryb25nPjxicj48L2Rpdj5Db25zZW50ZW1lbnQ6IDxzdHJvbmc+eyRDT05TRU5UX0RFVEFJTFN9PC9zdHJvbmc+eyRQVVJDSEFTRV9JTlRFTlR9PC9zcGFuPgoJCQkJCQkJCQkJCTwvZGl2PgoKCQkJCQkJCQkJCTwvc3RhY2stbGM+CgkJCQkJCQkJCTwvZm9ybT4KCQkJCQkJCQk8L2JveC1sYz4KCQkJCQkJCTwvc3RhY2stbGM+CgkJCQkJCTwvYm94LWxjPgoKCQkJCQkJPGRpdj4KCQkJCQkJCTxzdGFjay1sYyBjbGFzcz0iY29udGFjdE1hcENvbnRhaW5lciAtLXMtOCAtYmctbGlnaHQiIGlkPSJmb290ZXJHb29nbGVNYXBIb3Vyc0NvbnRhaW5lciI+CgoJCQkJCQkJCQoJCQk8aWZyYW1lIHRpdGxlPSJHb29nbGUgTWFwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmcmFtZWJvcmRlcj0iMCIgY2xhc3M9IiBsYXp5bG9hZGVkIiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vbWFwcy9lbWJlZC92MS9wbGFjZT9xPXBsYWNlX2lkJTNBQ2hJSkVaT0QyT2Jvemt3Uk10VW1PaVlZVjgwJmFtcDtrZXk9QUl6YVN5Q3JLRDZaUHJPTGdtR1dyV19ZUjA5X2VteWlWcWw3X19nJmFtcDt6b29tPTE0JmFtcDtyZWdpb249Q0EmYW1wO2xhbmd1YWdlPWZyIiBhbGxvd2Z1bGxzY3JlZW49IiI+PC9pZnJhbWU+CgoJCQkJCQkJCTxib3gtbGMgY2xhc3M9ImNvbnRhY3RCbG9jayAtLXMyIC1tMCI+CgkJCQkJCQkJCTxzdGFjay1sYyBjbGFzcz0iLS1zMyI+CgkJCQkJCQkJCQk8ZGl2PgoJCQkJCQkJCQkJCTxzdGFjay1sYyBjbGFzcz0iLS1zLTgiPgoJCQkJCQkJCQkJCQk8c3BhbiBjbGFzcz0iLS1mczAiPkhhd2tlc2J1cnkgSG9uZGE8L3NwYW4+CgkJCQkJCQkJCQkJCTxhIGhyZWY9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jYS9tYXBzL2Rpci8\/YXBpPTEmYW1wO2Rlc3RpbmF0aW9uPUhhd2tlc2J1cnklMkJIb25kYSUyQzQ1NStDb3VudHkrUm9hZCsxNyUyQ0hhd2tlc2J1cnklMkNPTiUyQ0s2QSsyUjImYW1wO2hsPWZyJmFtcDt0PW0mYW1wO3o9MTYmYW1wO2llPVVURjgmYW1wO2Rlc3RpbmF0aW9uX3BsYWNlX2lkPUNoSUpFWk9EMk9ib3prd1JNdFVtT2lZWVY4MCIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSItLWZzLTEiPgoJCQkJCQkJCQkJCQkJPHNwYW4+NDU1IENvdW50eSBSb2FkIDE3PC9zcGFuPgoJCQkJCQkJCQkJCQkJPHNwYW4+SGF3a2VzYnVyeSwgT048L3NwYW4+CgkJCQkJCQkJCQkJCQk8c3Bhbj5LNkEgMlIyPC9zcGFuPgoJCQkJCQkJCQkJCQk8L2E+CgkJCQkJCQkJCQkJPC9zdGFjay1sYz4KCQkJCQkJCQkJCTwvZGl2PgoKCQkJCQkJCQkJCTxkaXY+CgkJCQkJCQkJCQkJPHN0YWNrLWxjIGNsYXNzPSItLXMtOCI+CgkJCQkJCQkJCQkJCTxzcGFuIGNsYXNzPSItYm9sZCI+VMOpbMOpcGhvbmU8L3NwYW4+CgkJCQkJCQkJCQkJCTxzcGFuIGNsYXNzPSItLWZzLTEiPgoJCQkJCQkJCQkJCQkJPGEgaHJlZj0iP3BhdGg9dGVsOjYxMyUyMDYzMi01MjIyIiBkYXRhLWRlcGFydG1lbnQ9IlNhbGVzIiB0aXRsZT0iQ29udGFjdCBQaG9uZSI+NjEzIDYzMi01MjIyPC9hPgoJCQkJCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQkJCQkJPC9zdGFjay1sYz4KCQkJCQkJCQkJCTwvZGl2PgoKCQkJCQkJCQkJCTxkaXY+CgkJCQkJCQkJCQkJPHN0YWNrLWxjIGNsYXNzPSItLXMtOCI+CgkJCQkJCQkJCQkJCTxzcGFuIGNsYXNzPSItYm9sZCI+SGV1cmVzPC9zcGFuPgoJCQkJCQkJCQkJCQkJCQk8ZGl2IGlkPSJpdGVtX25ldyI+CgkJCQk8c3RhY2stbGMgY2xhc3M9ImhvdXJzTGlzdCI+CgkJCQkJCQkJCTxib3gtbGMgY2xhc3M9ImZsZXgtYmV0d2VlbiAtLWZzLTEgLS1zLTgiIGRhdGEtbWluaG91cj0iMDk6MDAiIGRhdGEtbWF4aG91cj0iMTk6MDAiIGRhdGEtY2xvc2VkPSIwIj4KCQkJCQk8c3BhbiBjbGFzcz0iZGF5Ij5MdW5kaTwvc3Bhbj4KCQkJCQk8c3BhbiBjbGFzcz0iaG91cnMiPjA5OjAwIC0gMTk6MDA8L3NwYW4+CgkJCQk8L2JveC1sYz4JCQkJPGJveC1sYyBjbGFzcz0iZmxleC1iZXR3ZWVuIC0tZnMtMSAtLXMtOCIgZGF0YS1taW5ob3VyPSIwOTowMCIgZGF0YS1tYXhob3VyPSIxOTowMCIgZGF0YS1jbG9zZWQ9IjAiPgoJCQkJCTxzcGFuIGNsYXNzPSJkYXkiPk1hcmRpPC9zcGFuPgoJCQkJCTxzcGFuIGNsYXNzPSJob3VycyI+MDk6MDAgLSAxOTowMDwvc3Bhbj4KCQkJCTwvYm94LWxjPgkJCQk8Ym94LWxjIGNsYXNzPSJmbGV4LWJldHdlZW4gLS1mcy0xIC0tcy04IiBkYXRhLW1pbmhvdXI9IjA5OjAwIiBkYXRhLW1heGhvdXI9IjE5OjAwIiBkYXRhLWNsb3NlZD0iMCI+CgkJCQkJPHNwYW4gY2xhc3M9ImRheSI+TWVyY3JlZGk8L3NwYW4+CgkJCQkJPHNwYW4gY2xhc3M9ImhvdXJzIj4wOTowMCAtIDE5OjAwPC9zcGFuPgoJCQkJPC9ib3gtbGM+CQkJCTxib3gtbGMgY2xhc3M9ImZsZXgtYmV0d2VlbiAtLWZzLTEgLS1zLTgiIGRhdGEtbWluaG91cj0iMDk6MDAiIGRhdGEtbWF4aG91cj0iMTk6MDAiIGRhdGEtY2xvc2VkPSIwIj4KCQkJCQk8c3BhbiBjbGFzcz0iZGF5Ij5KZXVkaTwvc3Bhbj4KCQkJCQk8c3BhbiBjbGFzcz0iaG91cnMiPjA5OjAwIC0gMTk6MDA8L3NwYW4+CgkJCQk8L2JveC1sYz4JCQkJPGJveC1sYyBjbGFzcz0iZmxleC1iZXR3ZWVuIC0tZnMtMSAtLXMtOCIgZGF0YS1taW5ob3VyPSIwOTowMCIgZGF0YS1tYXhob3VyPSIxODowMCIgZGF0YS1jbG9zZWQ9IjAiPgoJCQkJCTxzcGFuIGNsYXNzPSJkYXkiPlZlbmRyZWRpPC9zcGFuPgoJCQkJCTxzcGFuIGNsYXNzPSJob3VycyI+MDk6MDAgLSAxODowMDwvc3Bhbj4KCQkJCTwvYm94LWxjPgkJCQk8Ym94LWxjIGNsYXNzPSJmbGV4LWJldHdlZW4gLS1mcy0xIC0tcy04IiBkYXRhLW1pbmhvdXI9IjA5OjAwIiBkYXRhLW1heGhvdXI9IjE1OjAwIiBkYXRhLWNsb3NlZD0iMCI+CgkJCQkJPHNwYW4gY2xhc3M9ImRheSI+U2FtZWRpPC9zcGFuPgoJCQkJCTxzcGFuIGNsYXNzPSJob3VycyI+MDk6MDAgLSAxNTowMDwvc3Bhbj4KCQkJCTwvYm94LWxjPgkJCQk8Ym94LWxjIGNsYXNzPSJmbGV4LWJldHdlZW4gLS1mcy0xIC0tcy04IiBkYXRhLW1pbmhvdXI9IjAiIGRhdGEtbWF4aG91cj0iMCIgZGF0YS1jbG9zZWQ9IjEiPgoJCQkJCTxzcGFuIGNsYXNzPSJkYXkiPkRpbWFuY2hlPC9zcGFuPgoJCQkJCTxzcGFuIGNsYXNzPSJob3VycyI+RmVybcOpPC9zcGFuPgoJCQkJPC9ib3gtbGM+CgkJCQk8L3N0YWNrLWxjPgoJCQk8L2Rpdj4KCQkJCQkJCQkJCQk8L3N0YWNrLWxjPgoJCQkJCQkJCQkJPC9kaXY+CgoJCQkJCQkJCQk8L3N0YWNrLWxjPgoJCQkJCQkJCTwvYm94LWxjPgoKCQkJCQkJCTwvc3RhY2stbGM+CgkJCQkJCTwvZGl2PgoKCQkJCQk8L2Rpdj4KCQkJCTwvc2lkZWJhci1sYz4KCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgoJCQkJCgoJCQkJPCEtLSBPTzo6ZTUxMDc3OGIzZGRmNGI5MWIyM2Q3ODFiMDgwNjNlZWUgLS0+CTwhLS0gT086Ojc1NDJmOWRkN2JlMzljZWRiMzQxNGJjODgyMjI5OWQzIC0tPgk8IS0tIE9POjphNTQ5ODFkMjYwNmE2ZDBmM2Y3MWU0YmE0OGRjY2Y2NyAtLT4KCiAgICAgICA8IS0tIE1BSU4gUE9QVVAgbmV3IENvbnRhY3RQb3B1cCAtLT4KCQkKCQk8ZGl2IGlkPSJjb250YWN0cG9wdXAiIGNsYXNzPSJyZXZlYWwtbW9kYWwgIiBzdHlsZT0id2lkdGg6ODAlOyIgZGF0YS1sYXp5bG9hZGlkPSJuZXdjYXJzX2NvbnRhY3Rwb3B1cCI+CgkJCQoJCTwvZGl2PgoKCQk8IS0tIE9POjpmMjFjNmZjYWIyMzM3NDBlMDAyMDFiNDlhYjZkMThmNyAtLT4KCgkJCgogICAgPGRpdiBpZD0iZW1haWxTdWNjZXNzTWVzc2FnZV9jb250YWN0cG9wdXAiIGNsYXNzPSJyZXZlYWwtbW9kYWwgZW1haWwtY29uc2VudC1ib3giIHN0eWxlPSJ3aWR0aDo2MCU7Ij4KICAgICAgPGRpdiBjbGFzcz0iaWNvbi10aXRsZSI+CiAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz0idGl0bGUtaWNvbiBzdWNjZXNzIC1tbDAiPjwvc3Bhbj4gLS0+CiAgICAgICAgPHNwYW4gY2xhc3M9InRpdGxlLXR4dCI+Vm90cmUgbWVzc2FnZSBhIGJpZW4gw6l0w6kgZW52b3nDqSE8L3NwYW4+CiAgICAgIDwvZGl2PgogICAgICA8cCBjbGFzcz0iZGVmYXVsdFN1Y2Nlc3MiPjxicj5NZXJjaSEgVW4gbWVtYnJlIGRlIG5vdHJlIMOpcXVpcGUgdm91cyBjb250YWN0ZXJhIHNvdXMgcGV1LjwvcD4KICAgICAgPHAgY2xhc3M9InNlcnZpY2VTdWNjZXNzIiBzdHlsZT0iZGlzcGxheTpub25lOyI+PGJyPk1lcmNpISBVbiBtZW1icmUgZGUgbm90cmUgw6lxdWlwZSB2b3VzIGNvbnRhY3RlcmEgc291cyBwZXUuPC9wPgogICAgICA8IS0tIDxhIGNsYXNzPSJjbG9zZS1yZXZlYWwtbW9kYWwiPiYjMjE1OzwvYT4gLS0+CiAgICAgIDxkaXYgY2xhc3M9ImVtYWlsLWNvbnNlbnQtYnRucyAtcHQyMCAtcmlnaHQgYW1wQ29uc2VudFJlc3BvbnNlU2VuZERpc21pc3MiPgogICAgICAgIDxhIGhyZWY9Ij9wYXRoPSMiIGNsYXNzPSIgLXVwcGVyY2FzZSBidG4tZGVmYXVsdCAiIG9uY2xpY2s9IiQoJy5jbG9zZS1yZXZlYWwtbW9kYWw6dmlzaWJsZScpLnRyaWdnZXIoJ2NsaWNrJyk7cmV0dXJuIGZhbHNlOyI+RmVybWVyPC9hPgogICAgICA8L2Rpdj4KICAgICAgPGZvcm0gaWQ9ImVtYWlsbXNnZnJtX2NvbnRhY3Rwb3B1cCIgY2xhc3M9ImNvbmZpcm1faHRtbCIgdGFyZ2V0PSJpZnJhbWUiIG1ldGhvZD0icG9zdCIgYWN0aW9uPSIvY29uZmlybWF0aW9uLmh0bWwiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJsYWJlbCIgY2xhc3M9ImxhYmVsZW1haWwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzZWN0aW9uIiBjbGFzcz0ibGFiZWxzZWN0aW9uIiB2YWx1ZT0iT2NjYXNpb24iPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJicmFuZCIgY2xhc3M9ImJyYW5kZW1haWwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJtb2RlbCIgY2xhc3M9Im1vZGVsZW1haWwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ5ZWFyIiBjbGFzcz0ieWVhcmVtYWlsIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZ29vZ2xlaWQiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJnb29nbGVpZGQyY21lZGlhIiB2YWx1ZT0iIj4KCQkJCQkJICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhZHdvcmRzY29uaWQiIHZhbHVlPSI4ODE3NjI0NDYiPgoJCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWR3b3Jkc2xhYmVsaWQiIHZhbHVlPSJFSVQ2Q0p2MTltWVFqc0c2cEFNIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYmluZ2NvbmlkIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYmluZ2FjdGlvbmlkIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYmluZ2RvbWFpbmlkIiB2YWx1ZT0iIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFkcm9sbEFkdiIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFkcm9sbFBpeCIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmYWNlYm9va0NvbklkIiB2YWx1ZT0iNjgzNDIyNDcyMTk0OTY0Ij4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRvbWFpbiIgdmFsdWU9Imhhd2tlc2J1cnlob25kYS5jYSI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InJlZmVycmVyIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZGVwYXJ0bWVudCIgdmFsdWU9Ik5FVyI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImxlYWRfZGVwYXJ0bWVudCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzZXhwcmVzcyIgY2xhc3M9ImlzZXhwcmVzcyIgdmFsdWU9IjAiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc3Byb21vIiB2YWx1ZT0iMCI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzaG9tZXBhZ2UiIHZhbHVlPSIwIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idGVzdG1vZGUiIGNsYXNzPSJ0ZXN0bW9kZSIgdmFsdWU9IjAiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibGVhZFR5cGUiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJwYWdlSUQiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjdXJyZW50VVJMIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNDb25maXJtUG9wdXAiIHZhbHVlPSIiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY29uZmlybV9lbWFpbCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNvbmZpcm1fZmlyc3RfbmFtZSIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNvbmZpcm1fbGFzdF9uYW1lIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY29uZmlybV9waG9uZV9udW1iZXIiIHZhbHVlPSIiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNGdWxsV2lkdGgiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkZWFsZXJOYW1lIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYnV0dG9uUG9zaXRpb24iIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc01vYmlsZU5ld1ZEUCIgdmFsdWU9IjEiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmcm9tQXV0b0F1YmFpbmUiIHZhbHVlPSIiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9Ik5FVyIgbmFtZT0idGV4dENhclNlY3Rpb25UeXBlIiBzdHlsZT0iZGlzcGxheTpub25lOyI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImxhbmciIHZhbHVlPSJmciI+CiAgICAgIDwvZm9ybT4KICAgICAgPGlmcmFtZSB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBuYW1lPSJpZnJhbWUiIGZyYW1lYm9yZGVyPSIwIiBzdHlsZT0id2lkdGg6MXB4O2hlaWdodDoxcHg7Ij48L2lmcmFtZT4KICAgIDwvZGl2PgoKICAgIDxkaXYgaWQ9ImVtYWlsRmFpbE1lc3NhZ2VfY29udGFjdHBvcHVwIiBjbGFzcz0icmV2ZWFsLW1vZGFsIGVtYWlsLWNvbnNlbnQtYm94IiBzdHlsZT0id2lkdGg6NjAlOyI+CiAgICAgIDxzcGFuIGNsYXNzPSJmYWlsIj5VbmUgZXJyZXVyIHMnZXN0IHByb2R1aXRlPC9zcGFuPgogICAgICA8cD5Ob3VzIG4nYXZvbnMgcGFzIHB1IGVudm95ZXIgdm90cmUgbWVzc2FnZS4gUydpbCB2b3VzIHBsYcOudCByYWZyYcOuY2hpciBldCBlc3NheWV6IMOgIG5vdXZlYXU8L3A+CiAgICAgIDxkaXYgY2xhc3M9ImNsb3NlLXJldmVhbC1tb2RhbCI+PGVtIGNsYXNzPSJmYSBmYS10aW1lcy1jaXJjbGUiPjwvZW0+PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9Ii1wdDIwIC1yaWdodCBhbXBDb25zZW50UmVzcG9uc2VTZW5kRGlzbWlzcyI+CiAgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgY2xhc3M9IiAtdXBwZXJjYXNlIGJ0bi1kZWZhdWx0ICIgb25jbGljaz0iJCgnI2VtYWlsRmFpbE1lc3NhZ2UnKS50cmlnZ2VyKCdyZXZlYWw6Y2xvc2UnKTsiIHZhbHVlPSJGZXJtZXIiPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKCgkJCQk8IS0tIE9POjozZDc4NTQyNzQxMjVlYTY5YjAyNDU3NTY0NmE2OThkYyAtLT4KCQkKPCEtLSBFTkQgbmV3IC0tPgoKPCEtLSBDUkVESVQgU0NPUkUgUE9QVVAgLS0+CgkJCgkJPGRpdiBpZD0iY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lciIgY2xhc3M9InJldmVhbC1tb2RhbCAiIHN0eWxlPSJ3aWR0aDozMjBweDtoZWlnaHQ6NjAwcHg7IiBkYXRhLWxhenlsb2FkaWQ9Im5ld2NhcnNfY3JlZGl0c2NvcmVwb3B1cGNvbnRhaW5lciI+CgkJCQoJCTwvZGl2PgoKCQk8IS0tIE9POjplYTAyZTBlMTdiMWUxNzE2NDM2YTQ4YzM4YTcyNmVmMiAtLT4KCgkJCgogICAgPGRpdiBpZD0iZW1haWxTdWNjZXNzTWVzc2FnZV9jcmVkaXRTY29yZVBvcHVwQ29udGFpbmVyIiBjbGFzcz0icmV2ZWFsLW1vZGFsIGVtYWlsLWNvbnNlbnQtYm94IiBzdHlsZT0id2lkdGg6NjAlOyI+CiAgICAgIDxkaXYgY2xhc3M9Imljb24tdGl0bGUiPgogICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9InRpdGxlLWljb24gc3VjY2VzcyAtbWwwIj48L3NwYW4+IC0tPgogICAgICAgIDxzcGFuIGNsYXNzPSJ0aXRsZS10eHQiPlZvdHJlIGRlbWFuZGUgYSBiaWVuIMOpdMOpIGVudm95w6llITwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICAgIDxwIGNsYXNzPSJkZWZhdWx0U3VjY2VzcyI+PGJyPk1lcmNpISBVbiBjb25zZWlsbGVyIGNvbW11bmlxdWVyYSBhdmVjIHZvdXMgcG91ciB2b3VzIGRvbm5lciBsZXMgZMOpdGFpbHMgc3VyIHZvdHJlIHBvdGVudGllbCBkZSBjcsOpZGl0LjwvcD4KICAgICAgPHAgY2xhc3M9InNlcnZpY2VTdWNjZXNzIiBzdHlsZT0iZGlzcGxheTpub25lOyI+PGJyPk1lcmNpISBVbiBjb25zZWlsbGVyIGNvbW11bmlxdWVyYSBhdmVjIHZvdXMgcG91ciB2b3VzIGRvbm5lciBsZXMgZMOpdGFpbHMgc3VyIHZvdHJlIHBvdGVudGllbCBkZSBjcsOpZGl0LjwvcD4KICAgICAgPCEtLSA8YSBjbGFzcz0iY2xvc2UtcmV2ZWFsLW1vZGFsIj4mIzIxNTs8L2E+IC0tPgogICAgICA8ZGl2IGNsYXNzPSJlbWFpbC1jb25zZW50LWJ0bnMgLXB0MjAgLXJpZ2h0IGFtcENvbnNlbnRSZXNwb25zZVNlbmREaXNtaXNzIj4KICAgICAgICA8YSBocmVmPSI\/cGF0aD0jIiBjbGFzcz0iIC11cHBlcmNhc2UgYnRuLWRlZmF1bHQgIiBvbmNsaWNrPSIkKCcuY2xvc2UtcmV2ZWFsLW1vZGFsOnZpc2libGUnKS50cmlnZ2VyKCdjbGljaycpO3JldHVybiBmYWxzZTsiPkZlcm1lcjwvYT4KICAgICAgPC9kaXY+CiAgICAgIDxmb3JtIGlkPSJlbWFpbG1zZ2ZybV9jcmVkaXRTY29yZVBvcHVwQ29udGFpbmVyIiBjbGFzcz0iY29uZmlybV9odG1sIiB0YXJnZXQ9ImlmcmFtZSIgbWV0aG9kPSJwb3N0IiBhY3Rpb249Ii9jb25maXJtYXRpb24uaHRtbCI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImxhYmVsIiBjbGFzcz0ibGFiZWxlbWFpbCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNlY3Rpb24iIGNsYXNzPSJsYWJlbHNlY3Rpb24iIHZhbHVlPSJPY2Nhc2lvbiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJyYW5kIiBjbGFzcz0iYnJhbmRlbWFpbCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Im1vZGVsIiBjbGFzcz0ibW9kZWxlbWFpbCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InllYXIiIGNsYXNzPSJ5ZWFyZW1haWwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJnb29nbGVpZCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Imdvb2dsZWlkZDJjbWVkaWEiIHZhbHVlPSIiPgoJCQkJCQkgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFkd29yZHNjb25pZCIgdmFsdWU9Ijg4MTc2MjQ0NiI+CgkJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhZHdvcmRzbGFiZWxpZCIgdmFsdWU9IkVJVDZDSnYxOW1ZUWpzRzZwQU0iPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJiaW5nY29uaWQiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJiaW5nYWN0aW9uaWQiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJiaW5nZG9tYWluaWQiIHZhbHVlPSIiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWRyb2xsQWR2IiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWRyb2xsUGl4IiB2YWx1ZT0iIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZhY2Vib29rQ29uSWQiIHZhbHVlPSI2ODM0MjI0NzIxOTQ5NjQiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZG9tYWluIiB2YWx1ZT0iaGF3a2VzYnVyeWhvbmRhLmNhIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0icmVmZXJyZXIiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkZXBhcnRtZW50IiB2YWx1ZT0iTkVXIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibGVhZF9kZXBhcnRtZW50IiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNleHByZXNzIiBjbGFzcz0iaXNleHByZXNzIiB2YWx1ZT0iMCI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzcHJvbW8iIHZhbHVlPSIwIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNob21lcGFnZSIgdmFsdWU9IjAiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ0ZXN0bW9kZSIgY2xhc3M9InRlc3Rtb2RlIiB2YWx1ZT0iMCI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJsZWFkVHlwZSIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InBhZ2VJRCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImN1cnJlbnRVUkwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc0NvbmZpcm1Qb3B1cCIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjb25maXJtX2VtYWlsIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY29uZmlybV9maXJzdF9uYW1lIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY29uZmlybV9sYXN0X25hbWUiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjb25maXJtX3Bob25lX251bWJlciIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc0Z1bGxXaWR0aCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRlYWxlck5hbWUiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJidXR0b25Qb3NpdGlvbiIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzTW9iaWxlTmV3VkRQIiB2YWx1ZT0iMSI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZyb21BdXRvQXViYWluZSIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iTkVXIiBuYW1lPSJ0ZXh0Q2FyU2VjdGlvblR5cGUiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibGFuZyIgdmFsdWU9ImZyIj4KICAgICAgPC9mb3JtPgogICAgICA8aWZyYW1lIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIG5hbWU9ImlmcmFtZSIgZnJhbWVib3JkZXI9IjAiIHN0eWxlPSJ3aWR0aDoxcHg7aGVpZ2h0OjFweDsiPjwvaWZyYW1lPgogICAgPC9kaXY+CgogICAgPGRpdiBpZD0iZW1haWxGYWlsTWVzc2FnZV9jcmVkaXRTY29yZVBvcHVwQ29udGFpbmVyIiBjbGFzcz0icmV2ZWFsLW1vZGFsIGVtYWlsLWNvbnNlbnQtYm94IiBzdHlsZT0id2lkdGg6NjAlOyI+CiAgICAgIDxzcGFuIGNsYXNzPSJmYWlsIj5VbmUgZXJyZXVyIHMnZXN0IHByb2R1aXRlPC9zcGFuPgogICAgICA8cD5Ob3VzIG4nYXZvbnMgcGFzIHB1IGVudm95ZXIgdm90cmUgbWVzc2FnZS4gUydpbCB2b3VzIHBsYcOudCByYWZyYcOuY2hpciBldCBlc3NheWV6IMOgIG5vdXZlYXU8L3A+CiAgICAgIDxkaXYgY2xhc3M9ImNsb3NlLXJldmVhbC1tb2RhbCI+PGVtIGNsYXNzPSJmYSBmYS10aW1lcy1jaXJjbGUiPjwvZW0+PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9Ii1wdDIwIC1yaWdodCBhbXBDb25zZW50UmVzcG9uc2VTZW5kRGlzbWlzcyI+CiAgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgY2xhc3M9IiAtdXBwZXJjYXNlIGJ0bi1kZWZhdWx0ICIgb25jbGljaz0iJCgnI2VtYWlsRmFpbE1lc3NhZ2UnKS50cmlnZ2VyKCdyZXZlYWw6Y2xvc2UnKTsiIHZhbHVlPSJGZXJtZXIiPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKCgkJCQk8IS0tIE9POjpkNjZmNWQ5NDg1OTc0MmM2YTUxZjhiYWQ5YzBkZmFlMCAtLT4KCQkKPCEtLSBFTkQgQ1JFRElUIFNDT1JFIFBPUFVQIC0tPgoKPCEtLSBDUkVESVQgU0NPUkUgQ09ORklSTSBQT1BVUCAtLT4KCQkKCQk8ZGl2IGlkPSJjcmVkaXRTY29yZUNvbmZpcm1Qb3B1cENvbnRhaW5lciIgY2xhc3M9InJldmVhbC1tb2RhbCAiIHN0eWxlPSJ3aWR0aDozMDBweDtoZWlnaHQ6NTAwcHg7IiBkYXRhLWxhenlsb2FkaWQ9Im5ld2NhcnNfY3JlZGl0c2NvcmVjb25maXJtcG9wdXBjb250YWluZXIiPgoJCQkKCQk8L2Rpdj4KCgkJPCEtLSBPTzo6NTU3NTQxZjRiZDY1MTkwYTgwZjVkNGQ5YWU1YmNmNjUgLS0+CgoJCQoKICAgIDxkaXYgaWQ9ImVtYWlsU3VjY2Vzc01lc3NhZ2VfY3JlZGl0U2NvcmVDb25maXJtUG9wdXBDb250YWluZXIiIGNsYXNzPSJyZXZlYWwtbW9kYWwgZW1haWwtY29uc2VudC1ib3giIHN0eWxlPSJ3aWR0aDo2MCU7Ij4KICAgICAgPGRpdiBjbGFzcz0iaWNvbi10aXRsZSI+CiAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz0idGl0bGUtaWNvbiBzdWNjZXNzIC1tbDAiPjwvc3Bhbj4gLS0+CiAgICAgICAgPHNwYW4gY2xhc3M9InRpdGxlLXR4dCI+Vm90cmUgZGVtYW5kZSBhIGJpZW4gw6l0w6kgZW52b3nDqWUhPC9zcGFuPgogICAgICA8L2Rpdj4KICAgICAgPHAgY2xhc3M9ImRlZmF1bHRTdWNjZXNzIj48YnI+TWVyY2khIFVuIGNvbnNlaWxsZXIgY29tbXVuaXF1ZXJhIGF2ZWMgdm91cyBwb3VyIHZvdXMgZG9ubmVyIGxlcyBkw6l0YWlscyBzdXIgdm90cmUgcG90ZW50aWVsIGRlIGNyw6lkaXQuPC9wPgogICAgICA8cCBjbGFzcz0ic2VydmljZVN1Y2Nlc3MiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij48YnI+TWVyY2khIFVuIGNvbnNlaWxsZXIgY29tbXVuaXF1ZXJhIGF2ZWMgdm91cyBwb3VyIHZvdXMgZG9ubmVyIGxlcyBkw6l0YWlscyBzdXIgdm90cmUgcG90ZW50aWVsIGRlIGNyw6lkaXQuPC9wPgogICAgICA8IS0tIDxhIGNsYXNzPSJjbG9zZS1yZXZlYWwtbW9kYWwiPiYjMjE1OzwvYT4gLS0+CiAgICAgIDxkaXYgY2xhc3M9ImVtYWlsLWNvbnNlbnQtYnRucyAtcHQyMCAtcmlnaHQgYW1wQ29uc2VudFJlc3BvbnNlU2VuZERpc21pc3MiPgogICAgICAgIDxhIGhyZWY9Ij9wYXRoPSMiIGNsYXNzPSIgLXVwcGVyY2FzZSBidG4tZGVmYXVsdCAiIG9uY2xpY2s9IiQoJy5jbG9zZS1yZXZlYWwtbW9kYWw6dmlzaWJsZScpLnRyaWdnZXIoJ2NsaWNrJyk7cmV0dXJuIGZhbHNlOyI+RmVybWVyPC9hPgogICAgICA8L2Rpdj4KICAgICAgPGZvcm0gaWQ9ImVtYWlsbXNnZnJtX2NyZWRpdFNjb3JlQ29uZmlybVBvcHVwQ29udGFpbmVyIiBjbGFzcz0iY29uZmlybV9odG1sIiB0YXJnZXQ9ImlmcmFtZSIgbWV0aG9kPSJwb3N0IiBhY3Rpb249Ii9jb25maXJtYXRpb24uaHRtbCI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImxhYmVsIiBjbGFzcz0ibGFiZWxlbWFpbCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNlY3Rpb24iIGNsYXNzPSJsYWJlbHNlY3Rpb24iIHZhbHVlPSJPY2Nhc2lvbiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJyYW5kIiBjbGFzcz0iYnJhbmRlbWFpbCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Im1vZGVsIiBjbGFzcz0ibW9kZWxlbWFpbCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InllYXIiIGNsYXNzPSJ5ZWFyZW1haWwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJnb29nbGVpZCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Imdvb2dsZWlkZDJjbWVkaWEiIHZhbHVlPSIiPgoJCQkJCQkgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFkd29yZHNjb25pZCIgdmFsdWU9Ijg4MTc2MjQ0NiI+CgkJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhZHdvcmRzbGFiZWxpZCIgdmFsdWU9IkVJVDZDSnYxOW1ZUWpzRzZwQU0iPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJiaW5nY29uaWQiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJiaW5nYWN0aW9uaWQiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJiaW5nZG9tYWluaWQiIHZhbHVlPSIiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWRyb2xsQWR2IiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWRyb2xsUGl4IiB2YWx1ZT0iIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZhY2Vib29rQ29uSWQiIHZhbHVlPSI2ODM0MjI0NzIxOTQ5NjQiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZG9tYWluIiB2YWx1ZT0iaGF3a2VzYnVyeWhvbmRhLmNhIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0icmVmZXJyZXIiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkZXBhcnRtZW50IiB2YWx1ZT0iTkVXIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibGVhZF9kZXBhcnRtZW50IiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNleHByZXNzIiBjbGFzcz0iaXNleHByZXNzIiB2YWx1ZT0iMCI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzcHJvbW8iIHZhbHVlPSIwIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNob21lcGFnZSIgdmFsdWU9IjAiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ0ZXN0bW9kZSIgY2xhc3M9InRlc3Rtb2RlIiB2YWx1ZT0iMCI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJsZWFkVHlwZSIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InBhZ2VJRCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImN1cnJlbnRVUkwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc0NvbmZpcm1Qb3B1cCIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjb25maXJtX2VtYWlsIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY29uZmlybV9maXJzdF9uYW1lIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY29uZmlybV9sYXN0X25hbWUiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjb25maXJtX3Bob25lX251bWJlciIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc0Z1bGxXaWR0aCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRlYWxlck5hbWUiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJidXR0b25Qb3NpdGlvbiIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzTW9iaWxlTmV3VkRQIiB2YWx1ZT0iMSI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZyb21BdXRvQXViYWluZSIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iTkVXIiBuYW1lPSJ0ZXh0Q2FyU2VjdGlvblR5cGUiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibGFuZyIgdmFsdWU9ImZyIj4KICAgICAgPC9mb3JtPgogICAgICA8aWZyYW1lIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIG5hbWU9ImlmcmFtZSIgZnJhbWVib3JkZXI9IjAiIHN0eWxlPSJ3aWR0aDoxcHg7aGVpZ2h0OjFweDsiPjwvaWZyYW1lPgogICAgPC9kaXY+CgogICAgPGRpdiBpZD0iZW1haWxGYWlsTWVzc2FnZV9jcmVkaXRTY29yZUNvbmZpcm1Qb3B1cENvbnRhaW5lciIgY2xhc3M9InJldmVhbC1tb2RhbCBlbWFpbC1jb25zZW50LWJveCIgc3R5bGU9IndpZHRoOjYwJTsiPgogICAgICA8c3BhbiBjbGFzcz0iZmFpbCI+VW5lIGVycmV1ciBzJ2VzdCBwcm9kdWl0ZTwvc3Bhbj4KICAgICAgPHA+Tm91cyBuJ2F2b25zIHBhcyBwdSBlbnZveWVyIHZvdHJlIG1lc3NhZ2UuIFMnaWwgdm91cyBwbGHDrnQgcmFmcmHDrmNoaXIgZXQgZXNzYXlleiDDoCBub3V2ZWF1PC9wPgogICAgICA8ZGl2IGNsYXNzPSJjbG9zZS1yZXZlYWwtbW9kYWwiPjxlbSBjbGFzcz0iZmEgZmEtdGltZXMtY2lyY2xlIj48L2VtPjwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSItcHQyMCAtcmlnaHQgYW1wQ29uc2VudFJlc3BvbnNlU2VuZERpc21pc3MiPgogICAgICAgIDxpbnB1dCB0eXBlPSJidXR0b24iIGNsYXNzPSIgLXVwcGVyY2FzZSBidG4tZGVmYXVsdCAiIG9uY2xpY2s9IiQoJyNlbWFpbEZhaWxNZXNzYWdlJykudHJpZ2dlcigncmV2ZWFsOmNsb3NlJyk7IiB2YWx1ZT0iRmVybWVyIj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCgoJCQkJPCEtLSBPTzo6MzYzODdkOTIwOTY4NzhkNzliMDU2OTE1ZWNiNTM0OGYgLS0+CgkJCjwhLS0gRU5EIENSRURJVCBTQ09SRSBDT05GSVJNIFBPUFVQIC0tPgoKCgoKPCEtLSBGSU5BTkNFIE1VTFRJU1RFUCBQT1BVUCBuZXcgLS0+CgkJCgkJPGRpdiBpZD0iZmluYW5jZU11bHRpc3RlcFBvcHVwQ29udGFpbmVyIiBjbGFzcz0icmV2ZWFsLW1vZGFsICIgc3R5bGU9IndpZHRoOjMyMHB4O2hlaWdodDo0OTVweDtwYWRkaW5nOjMwcHggMTBweCA4MHB4OyIgZGF0YS1sYXp5bG9hZGlkPSJuZXdjYXJzX2ZpbmFuY2VtdWx0aXN0ZXBwb3B1cGNvbnRhaW5lciI+CgkJCQoJCTwvZGl2PgoKCQk8IS0tIE9POjozOTgwNzljMzAwNWZlMjRjYWUyNzRlYzRjZDk3YzQ0NSAtLT4KCgkJCgkJCjwhLS0gRU5EIG5ldyAtLT4KCjwhLS0gRklOQU5DRSBNVUxUSVNURVAgSU5TVEFOVCAtLT4KCjwhLS0gRU5EIEZJTkFOQ0UgTVVMVElTVEVQIElOU1RBTlQgLS0+Cgo8IS0tIENSRURJVCBCT09TVCBNVUxUSSAtLT4KCjwhLS0gRU5EIENSRURJVCBCT09TVCBNVUxUSSAtLT4KCjwhLS0gU0VDT05EIENIQU5DRSBQT1BVUCBuZXcgLS0+Cgo8IS0tIEVORCBuZXcgLS0+Cgo8IS0tIFJFVFVSTiBQT1BVUCBuZXcgLS0+Cgo8IS0tIEVORCBuZXcgLS0+Cgo8IS0tIEVYSVQgUE9QVVAgbmV3IC0tPgoKPCEtLSBFTkQgbmV3IC0tPgoKPCEtLSBCRVNUIFBSQUNUSUNFIFBPUFVQIG5ldyAtLT4KCjwhLS0gRU5EIG5ldyAtLT4KICAgICAgIAkJCgkJPGRpdiBpZD0icGF5bWVudENhbGN1bGF0b3JQb3B1cENvbnRhaW5lciIgY2xhc3M9InJldmVhbC1tb2RhbCAiIHN0eWxlPSJ3aWR0aDo4MiU7bWluLWhlaWdodDo3MzBweDttaW4td2lkdGg6MzUwcHg7IiBkYXRhLWxhenlsb2FkaWQ9Im5ld2NhcnNfcGF5bWVudGNhbGN1bGF0b3Jwb3B1cGNvbnRhaW5lciI+CgkJCQoJCTwvZGl2PgoKCQk8IS0tIE9POjo1OWE4ZDhkNTE2MTAzNjUwODkxOWQ5MzFkMGM0ZGE1ZSAtLT4KCgkJCgkJCiAgICAgICAKICAgICAgPHNjcmlwdCBkYXRhLXNjb2RlcmVmPSIyMTExLUIiIHNyYz0iaHR0cHM6Ly9oYXdrZXNidXJ5aG9uZGEuY2EvanMvbWFwcy5qcy5waHA\/JmFtcDtsYW5nPWZyIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGFzeW5jPSJ0cnVlIj48L3NjcmlwdD4KPHNjcmlwdCBkYXRhLXNjb2RlcmVmPSIyMTExLUIiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBhc3luYz0idHJ1ZSI+PC9zY3JpcHQ+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJORVciIGlkPSJkZWZhdWx0RGVwYXJ0bWVudCI+CiAgICAKCTwvZGl2Pg==","logs":"{\"result\":\"1\",\"error\":\"\",\"sources\":\"https:\\\/\\\/hawkesburyhonda.ca\\\/js_r\\\/resource.loader.fr.js?v=3&js=hVPRbtswDPyhJUGzYR-wDsUGtEOAbNijwci0zVgWPYlK5n796ASWHKfFHgxLR0m8I4-bY9gc_0T0w_oYPmzyzjC3hBN4AkfWgq4MO0Enzwwl-rfC47WweOwAAT9_WoAl-FaYrVC_iJzAUkmSKHVAblpbeB0CvWqKLoPXe6tIqwqMsB82D-uHj-ttDsxPZ7ZBzyaNqGnsN3ClzcKODYRG4GDTKYdnA34pUBMIR9Os-uhMM0_Ww9BpvR7BmmhB892zoA5C-zbBin03oTU69GRelGV6nPvYazHyo7NinvfGg5hmB-UEhXN1Izn1Ojop-ZwIlCD4S8gmmeXWFBBMUcOyix5PCJmQ546LcnDQkSkqslhUiZx49cx39wVuEXIXGYt3e48iw65h4e0ipLdcICF29x64tmF_ph7nwVsDqhox7SYq25HiuiKnEmbHW7Ou4DDtuEfXcMxNr5lrq3bpE1IxC_rfVNYoxUuSxxAkiS21Tuj3XfgRu0NuWY38zAYuclIVycnPhsJNn6fNOIHq8t0cc3hQh42_r9q6J3ePP-YmnSKO343jrtBKGlxd3Djp0so4g0UXdUyDYCaR_Pykjh_Jh3v3dlzOsibYYnZkRuEvcXh7CrQeQcjhOzOiNHoyrf9fODsxtGhRtOBjLT3b2cSn0AGr2aTo3WnyydmRyzH8Aw&jsrpl=&wswidth=0&device=mobile&ua=Q0NCb3QvMi4wIChodHRwczovL2NvbW1vbmNyYXdsLm9yZy9mYXEvKQ==\"}"}