{"title":"PHRpdGxlPkh5dW5kYWkgbmV1ZnMgMjAyNSAmYW1wOyAyMDI2IMOgIFJlcGVudGlnbnkgKGVudHJlIE1hc2NvdWNoZSBldCBNb250csOpYWwpIHwgSHl1bmRhaSBSZXBlbnRpZ255PC90aXRsZT4=","metas":"PG1ldGEgaXRlbXByb3A9Im5hbWUiIGNvbnRlbnQ9IiAgIj48bWV0YSBpdGVtcHJvcD0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IiI+","js_inline":"CgkoKGQpID0+IHsKCQljb25zdCBjZSA9IGQuY3JlYXRlRWxlbWVudDsKCQlsZXQgdXJsQ2F0QXJyID0gewoJCQknY2xhcml2b3kuY29tJyA6ICdDMDAwMicsCgkJCSdkZWFsZXItbGVhZHMuY2EnIDogJ0MwMDAzJywKCQkJJ3JvYWRzdGVyLmNvbS9yb2Fkc3RlcicgOiAnQzAwMDInLC8vRFdQLTEyMjgxCgkJCSdmemxuay5jb20vc2lnbmFscy5qcycgOiAnQzAwMDInLC8vRFdQLTEyMjg5CgkJCSdsaXZlY2hhdGluYy5jb20vdHJhY2tpbmcuanMnIDogJ0MwMDAzJywvL0RXUC0xMjMwMwoJCQkndGhlbGl2ZWNoYXRzb2Z0d2FyZS5jb20nIDogJ0MwMDAzJywvL0RXUC0xMjI5NwoJCQknY2FuYWRhLmRpZ2l0YWwtaW50ZXJ2aWV3LmNvbScgOiAnQzAwMDMnLC8vRFdQLTEyMzAwCgkJCSdzZGsuYXV0b3ZlcmlmeS5jb20nIDogJ0MwMDAzJywvL0RXUC0xMjMwMQoJCQknYW5hbHl0aWNzLmpzJyA6ICdDMDAwMicsLy9EV1AtMTIzMDkKCQkJJ2hzLXNjcmlwdHMuY29tJyA6ICdDMDAwNCcsLy9EV1AtMTIzMjAKCQkJJ21hcmtldGluZ2F1dG9tYXRpb24uc2VydmljZXMnIDogJ0MwMDA0JywvL0RXUC0xMjMyMgoJCQknbGVhZGZveC5jbycgOiAnQzAwMDQnLAoJCQknc3RhdGljLnVwdHJhY3MuY29tJyA6ICdDMDAwMycsLy9EV1AtMTIzNTQKIAkJCSdiYXQuYmluZy5jb20nIDogJ0MwMDAyJywvL0RXUC0xMjM1NAoJCQknZ3RhZy9qcycgOiAnQzAwMDInLAoJCQknc2QuanMnIDogJ0MwMDAxJywKCQkJJ3NkYS5qcycgOiAnQzAwMDEnLAoJCQkKCQl9OwoJCWxldCB1cmxDYXRSZWdleCA9ICcoJyArIE9iamVjdC5rZXlzKHVybENhdEFycikuam9pbignfCcpLnJlcGxhY2UoL1srPy5dL2csICdcJCYnKSArICcpJzsKCQlsZXQgY3VycmVudENvbnNlbnQgPSBnZXRDb25zZW50KCk7CgkJd2luZG93LnNjcmlwdFVybEFyciA9IFtdOwoJCWQuY3JlYXRlRWxlbWVudCA9IGZ1bmN0aW9uKC4uLmFyZ3MpIHsKCQkJY29uc3QgcyA9IGNlLmJpbmQoZCkoLi4uYXJncyksIHNhID0gcy5zZXRBdHRyaWJ1dGUuYmluZChzKTsKCQkJcy5zZXRBdHRyaWJ1dGUgPSBmdW5jdGlvbihuLCB2KSB7CgkJCQlpZihuID09PSAnc3JjJyAmJiB3aW5kb3cuc2NyaXB0VXJsQXJyLmluZGV4T2Yodi50b1N0cmluZygpKSA9PSAtMSkgewoJCQkJCWlmKChuZXcgUmVnRXhwKHVybENhdFJlZ2V4KSkudGVzdCh2KSl7CgkJCQkJCWZvcihrZXkgaW4gdXJsQ2F0QXJyKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoJCQkJCQkJaWYgKChuZXcgUmVnRXhwKGtleSkpLnRlc3QodikpIHsKCQkJCQkJCQl3aW5kb3cuc2NyaXB0VXJsQXJyLnB1c2godi50b1N0cmluZygpKTsKCQkJCQkJCQlpZihrZXkgPT0gJ2d0YWcvanMnIHx8IGtleSA9PSAnYmF0LmJpbmcuY29tJyB8fCBrZXkgPT0gJ3NkLmpzJyB8fCBrZXkgPT0gJ3NkYS5qcycpewoJCQkJCQkJCQlzYSgnZGF0YS1vdC1pZ25vcmUnLCB0cnVlKTsKCQkJCQkJCQkJc2EoJ3R5cGUnLCAndGV4dC9qYXZhc2NyaXB0Jyk7CgkJCQkJCQkJfSBlbHNlIGlmKGN1cnJlbnRDb25zZW50ID09IG51bGwgfHwgY3VycmVudENvbnNlbnQuaW5kZXhPZih1cmxDYXRBcnJba2V5XSkgPT0gLTEpewoJCQkJCQkJCQlzYSgndHlwZScsICd0ZXh0L3BsYWluJyk7CgkJCQkJCQkJCXNhKCdjbGFzcycsICdvcHRhbm9uLWNhdGVnb3J5LScgKyB1cmxDYXRBcnJba2V5XSk7CgkJCQkJCQkJfQoJCQkJCQkJCWJyZWFrOwoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJfQoJCQkJfQoJCQkJc2Eobiwgdik7CgkJCX0KCQkJcmV0dXJuIHM7CgkJfQoJCWZ1bmN0aW9uIGdldENvbnNlbnQoKXsKCQkJbGV0IG5hbWUgPSAnZDJjX2Nvb2tpZV9jb25zZW50JyArICc9JzsKCQkJbGV0IGNhID0gKCcnK2RvY3VtZW50LmNvb2tpZSkuc3BsaXQoJzsnKTsKCQkJZm9yKGxldCBpID0gMDsgaSA8IGNhLmxlbmd0aDsgaSsrKSB7CgkJCQlsZXQgYyA9IGNhW2ldOwoJCQkJYyA9IGMudHJpbSgpOwoJCQkJaWYgKGMuaW5kZXhPZihuYW1lKSA9PSAwKSB7CgkJCQkJdHJ5ewoJCQkJCQljID0gZGVjb2RlVVJJQ29tcG9uZW50KCBjICk7CgkJCQkJfSBjYXRjaCggZSApCgkJCQkJewoJCQkJCQljb25zb2xlLmxvZyggZSApOwoJCQkJCQlyZXR1cm4gbnVsbDsKCQkJCQl9CgkJCQkJcmV0dXJuIGMuc3Vic3RyaW5nKG5hbWUubGVuZ3RoLCBjLmxlbmd0aCk7CgkJCQl9CgkJCX0KCQkJcmV0dXJuIG51bGw7CgkJfQoJfSkoZG9jdW1lbnQpOwoKCWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbigpIHsKCS8vIExpc3RlbiBmb3IgY2hhbmdlcyB0byB0aGUgRE9NCgkJbGV0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obXV0YXRpb25zKSB7CgkJCW11dGF0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKG11dGF0aW9uKSB7CgkJCQlpZiAobXV0YXRpb24uYWRkZWROb2RlcyAmJiBtdXRhdGlvbi5hZGRlZE5vZGVzLmxlbmd0aCA+IDApIHsKCQkJCQkvLyBDaGVjayBpZiBvdXIgc2NyaXB0IGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBET00KCQkJCQlmb3IgKGxldCBpID0gMDsgaSA8IG11dGF0aW9uLmFkZGVkTm9kZXMubGVuZ3RoOyBpKyspIHsKCQkJCQkJbGV0IG5vZGUgPSBtdXRhdGlvbi5hZGRlZE5vZGVzW2ldOwoJCQkJCQlpZiAobm9kZS5ub2RlVHlwZSA9PT0gMSAmJiBub2RlLnRhZ05hbWUgPT09ICdTQ1JJUFQnICYmIG5vZGUuc3JjICYmIG5vZGUuc3JjLmluY2x1ZGVzKCdjYW5hZGEuZGlnaXRhbC1pbnRlcnZpZXcuY29tJykgJiYgdHlwZW9mIE9uZVRydXN0ICE9PSAndW5kZWZpbmVkJykgewoJCQkJCQkJc2V0VGltZW91dChmdW5jdGlvbigpewoJCQkJCQkJCXRyeXtEaWdpdGFsSW50ZXJ2aWV3LkxhdW5jaGVyLmVuYWJsZUxhdW5jaFBvaW50cygpO31jYXRjaChlKXt9CgkJCQkJCQl9LCAxMDAwKTsKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJfSk7CgkJfSk7CgkJLy8gU3RhcnQgb2JzZXJ2aW5nIHRoZSBkb2N1bWVudCB3aXRoIHRoZSBjb25maWd1cmVkIHBhcmFtZXRlcnMKCQlvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmJvZHksIHsgY2hpbGRMaXN0OiB0cnVlLCBzdWJ0cmVlOiB0cnVlIH0pOwoJCW9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuaGVhZCwgeyBjaGlsZExpc3Q6IHRydWUsIHN1YnRyZWU6IHRydWUgfSk7Cgl9KTsKCi8qPCFbQ0RBVEFbKi8KLy9kYXRhLXNjb2RlcmVmPSJQQUYtMTg2NDU2MzY4MTE4NTEyMjg1IgooZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIFNUT1JBR0VfS0VZPSdvbmVycm9yJyxzdG9yYWdlPVtdLGVycm9yQ29sbGVjdGlvbnM9W10scGl4ZWxBZGRyZXNzPScvZnIvYWpheC9sb2dFcnJvcj93c3dpZHRoPTAnO3ZhciBzdGFydFRpbWU9bmV3IERhdGUoKTtsb2FkU3RvcmVkRXJyb3JzKCk7dmFyIHBpeGVsRnJhZ21lbnQ9dW5kZWZpbmVkO2Z1bmN0aW9uIGdldFBpeGVsRnJhZ21lbnQoKXtpZihwaXhlbEZyYWdtZW50IT09dW5kZWZpbmVkKXJldHVybiBwaXhlbEZyYWdtZW50LmNsb25lTm9kZSh0cnVlKTt2YXIgZnJhZz1kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7dmFyIGRpdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtmcmFnLmFwcGVuZENoaWxkKGRpdik7cGl4ZWxGcmFnbWVudD1mcmFnLmNsb25lTm9kZSh0cnVlKTtyZXR1cm4gZnJhZzt9CmZ1bmN0aW9uIGhhc1BpeGVsKGRhdGEpe3JldHVybiEhZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZGl2W2RhdGEtbGluZT0iJytkYXRhLmxpbmUrJyJdW2RhdGEtbXNnPSInK2RhdGEubXNnKyciXScpO30KZnVuY3Rpb24gY3JlYXRlUGl4ZWwoZGF0YSl7aWYoaGFzUGl4ZWwoZGF0YSkpcmV0dXJuIHRydWU7dmFyIGZyYWdtZW50PWdldFBpeGVsRnJhZ21lbnQoKTt2YXIgZGl2PWZyYWdtZW50LnF1ZXJ5U2VsZWN0b3IoJ2RpdicpO3ZhciBpbnRlcm5hbD1pc0ZpbGVJbnRlcm5hbChkYXRhLmZpbGUpPzE6MDt2YXIgb2JqPXttc2c6ZGF0YS5tc2csYWdlbnQ6bmF2aWdhdG9yLnVzZXJBZ2VudCx1cmw6d2luZG93LmxvY2F0aW9uLmhyZWYsaW50ZXJuYWw6aW50ZXJuYWwsdWlkOmdldFVJRCgpLHRvcDooKG5ldyBEYXRlKCkpLmdldFRpbWUoKS1zdGFydFRpbWUuZ2V0VGltZSgpKSxtb3VzZU92ZXI6Z2V0Q3VycmVudE1vdXNlT3ZlckVsZW1lbnQoKX07dmFyIGFkZEVsZW1lbnQ9ZnVuY3Rpb24oKXtkaXYuc2V0QXR0cmlidXRlKCdkYXRhLW1zZycsZGF0YS5tc2cpO2Rpdi5zZXRBdHRyaWJ1dGUoJ2RhdGEtbGluZScsZGF0YS5saW5lKTtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZyYWdtZW50KTt9O2FqYXgob2JqLGZ1bmN0aW9uKHhocil7Y29uc29sZS5sb2coIklzc3VlIHNlbmRpbmcgZXJyb3IsIHN0YXR1czogIit4aHIuc3RhdHVzKyIgZXJyb3I6ICIreGhyLnJlc3BvbnNlVGV4dCk7YWRkRWxlbWVudCgpO30sZnVuY3Rpb24oeGhyKXthZGRFbGVtZW50KCk7Y29uc29sZS5sb2coeGhyKTt9KTt9CmZ1bmN0aW9uIGFqYXgoZGF0YSxlcnJvcixzdWNjZXNzKXt2YXIgeGhyPW5ldyBYTUxIdHRwUmVxdWVzdCgpO3hoci5vcGVuKCdQT1NUJyxwaXhlbEFkZHJlc3MsdHJ1ZSk7eGhyLnNldFJlcXVlc3RIZWFkZXIoJ0NvbnRlbnQtVHlwZScsJ2FwcGxpY2F0aW9uL2pzb247Y2hhcnNldD1VVEYtOCcpO3hoci5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtpZih4aHIucmVhZHlTdGF0ZT09PTQpe2lmKHhoci5zdGF0dXM9PT0yMDApe3N1Y2Nlc3MoeGhyKTt9ZWxzZXtlcnJvcih4aHIpO319fTt4aHIuc2VuZChKU09OLnN0cmluZ2lmeShkYXRhKSk7fQpmdW5jdGlvbiBnZXRDdXJyZW50TW91c2VPdmVyRWxlbWVudCgpe3ZhciBob3Zlcj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCc6aG92ZXInKTtpZihob3Zlcj09PXVuZGVmaW5lZHx8aG92ZXIubGVuZ3RoPT09MCl7cmV0dXJuJ25vbmUnO30KaG92ZXI9aG92ZXJbaG92ZXIubGVuZ3RoLTFdLmNsb25lTm9kZSgpO3JldHVybiBob3Zlci5vdXRlckhUTUw7fQpmdW5jdGlvbiBpc0ZpbGVJbnRlcm5hbChmaWxlKXtyZXR1cm4oZmlsZS5pbmRleE9mKHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSk+LTEpO30KZnVuY3Rpb24gZ2V0VUlEKCl7aWYodHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nIT09J3VuZGVmaW5lZCcpe3JldHVybiBhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ7fQpyZXR1cm4nJzt9CmZ1bmN0aW9uIGxvYWRTdG9yZWRFcnJvcnMoKXtpZih0eXBlb2Ygc2Vzc2lvblN0b3JhZ2UhPT0ndW5kZWZpbmVkJyl7aWYoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShTVE9SQUdFX0tFWSkpe3N0b3JhZ2U9SlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFNUT1JBR0VfS0VZKSk7fX0KcmV0dXJuIHN0b3JhZ2U7fQpmdW5jdGlvbiBoYXNTZXNzaW9uRXJyb3JTaG93bihtc2cpe2xvYWRTdG9yZWRFcnJvcnMoKTtyZXR1cm4gaGFzRXJyb3JTaG93bihtc2cpO30KZnVuY3Rpb24gaGFzRXJyb3JTaG93bihtc2cpe2lmKHN0b3JhZ2U9PT11bmRlZmluZWQpcmV0dXJuIGZhbHNlO2Zvcih2YXIgaT0wO2k8c3RvcmFnZS5sZW5ndGg7aSsrKXtpZihzdG9yYWdlW2ldPT09bXNnKXtyZXR1cm4gdHJ1ZTt9fQpyZXR1cm4gZmFsc2U7fQppZih3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUuaW5kZXhPZignY3VzdG9tLXBhZ2UtcHJldmlldy5odG1sJyk9PT0tMSl7d2luZG93Lm9uZXJyb3I9ZnVuY3Rpb24obXNnLGZpbGUsbGluZSxjb2wsZXJyb3Ipe2NvbnNvbGUubG9nKCdvbmVycm9yIHJhaXNlZCEnKTtpZighaGFzU2Vzc2lvbkVycm9yU2hvd24obXNnKSl7ZXJyb3JDb2xsZWN0aW9ucy5wdXNoKHttc2c6bXNnLGxpbmU6bGluZSxmaWxlOmZpbGV9KTtzdG9yYWdlLnB1c2gobXNnKTtpZihzZXNzaW9uU3RvcmFnZSE9PXVuZGVmaW5lZCl7c2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShTVE9SQUdFX0tFWSxKU09OLnN0cmluZ2lmeShzdG9yYWdlKSk7fX0KaWYoZG9jdW1lbnRbJ2JvZHknXSE9PW51bGwmJmRvY3VtZW50Wydib2R5J10hPT11bmRlZmluZWQpe2FkZFBpeGVsc1RvRG9tKCk7fQppZignbGl2ZSc9PSdsaXZlJyYmJ1VTJz09J0NBJyl7Z3RhZygnZXZlbnQnLCdleGNlcHRpb24nLHsnc2VuZF90byc6J0ctWjVROFo1QzdLRicsJ2Rlc2NyaXB0aW9uJzptc2csJ2ZhdGFsJzp0cnVlfSk7fX07fQppZigvV2ViS2l0L2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSl7dmFyIF90aW1lcj1zZXRJbnRlcnZhbChmdW5jdGlvbigpe2lmKC9sb2FkZWR8Y29tcGxldGUvLnRlc3QoZG9jdW1lbnQucmVhZHlTdGF0ZSkpe2NsZWFySW50ZXJ2YWwoX3RpbWVyKTtvbmxvYWQoKTt9fSwxMCk7fQovKkBjY19vbiBAKi8KLypAaWYgKEBfd2luMzIpCgkJCQlkb2N1bWVudC53cml0ZSgiPCIrInNjcmlwdCBpZD1fX2llX29ubG9hZCBkZWZlciBzcmM9amF2YXNjcmlwdDp2b2lkKDApPjxcL3NjcmlwdD4iKTsKCQkJCXZhciBzY3JpcHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiX19pZV9vbmxvYWQiKTsKCQkJCXNjcmlwdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKCQkJCSAgaWYgKHRoaXMucmVhZHlTdGF0ZSA9PSAiY29tcGxldGUiKSB7CgkJCQkJb25sb2FkKCk7IC8vIGNhbGwgdGhlIG9ubG9hZCBoYW5kbGVyCgkJCQkgIH0KCQkJCX07CgkJCS8qQGVuZCBAKi8KZnVuY3Rpb24gYWRkUGl4ZWxzVG9Eb20oKXtmb3IodmFyIGk9MDtpPGVycm9yQ29sbGVjdGlvbnMubGVuZ3RoO2krKyl7Y29uc29sZS5sb2coJ2NyZWF0ZVBpeGVsJyxlcnJvckNvbGxlY3Rpb25zW2ldKTt9fQpmdW5jdGlvbiBvbmxvYWQoKXthZGRQaXhlbHNUb0RvbSgpO30KZnVuY3Rpb24gX2NyZWF0ZVNjcmlwdCh0ZXh0KXt2YXIgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtzLmFwcGVuZCh0ZXh0KTtyZXR1cm4gczt9CndpbmRvdy5lcnJvclRlc3RzPXtzeW50YXg6ZnVuY3Rpb24oKXt2YXIgc2NyaXB0PV9jcmVhdGVTY3JpcHQoJ30nKTtkb2N1bWVudC5ib2R5LmFwcGVuZChzY3JpcHQpO30sb2ZOdWxsOmZ1bmN0aW9uKCl7dmFyIHRleHQ9J3ZhciBhID0gbnVsbDsgdmFyIGIgPSBhLndoYXQ7Jzt2YXIgc2NyaXB0PV9jcmVhdGVTY3JpcHQodGV4dCk7ZG9jdW1lbnQuYm9keS5hcHBlbmQoc2NyaXB0KTt9LGludmFsaWRBc3NpZ25tZW50OmZ1bmN0aW9uKCl7dmFyIHNjcmlwdD1fY3JlYXRlU2NyaXB0KCcxID0gZnVuYygpOycpO2RvY3VtZW50LmJvZHkuYXBwZW5kKHNjcmlwdCk7fX07d2luZG93LnRyYWNrQ29udmVyc2lvbj1mdW5jdGlvbigpe2lmKHR5cGVvZiBndGFnPT0ndW5kZWZpbmVkJylyZXR1cm4tMTtpZighd2luZG93LmQyY19hd2NJZHx8IXdpbmRvdy5kMmNfYXdjTGFiZWwpcmV0dXJuLTM7aWYoZGVwbG95bWVudFR5cGUudG9Mb3dlckNhc2UoKT09J2xpdmUnJiYnVVMnPT0nQ0EnKXtndGFnKCdldmVudCcsJ2NvbnZlcnNpb24nLHsnc2VuZF90byc6ZDJjX2F3Y0lkKycvJytkMmNfYXdjTGFiZWx9KTt9ZWxzZXtjb25zb2xlLmxvZygiZ3RhZygnZXZlbnQnLCdjb252ZXJzaW9uJywgeyAnc2VuZF90byc6ICIrZDJjX2F3Y0lkKycvJytkMmNfYXdjTGFiZWwrIiB9KTsiKTt9fX0pKCk7Ci8qXV0+Ki8KCi8qPCFbQ0RBVEFbKi8KLy9kYXRhLXNjb2RlcmVmPSJQQUYtMTg2NDU2MzY4MTE4NTEyMjg1IgooZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIFNUT1JBR0VfS0VZPSdvbmVycm9yJyxzdG9yYWdlPVtdLGVycm9yQ29sbGVjdGlvbnM9W10scGl4ZWxBZGRyZXNzPScvZnIvYWpheC9sb2dFcnJvcj93c3dpZHRoPTAnO3ZhciBzdGFydFRpbWU9bmV3IERhdGUoKTtsb2FkU3RvcmVkRXJyb3JzKCk7dmFyIHBpeGVsRnJhZ21lbnQ9dW5kZWZpbmVkO2Z1bmN0aW9uIGdldFBpeGVsRnJhZ21lbnQoKXtpZihwaXhlbEZyYWdtZW50IT09dW5kZWZpbmVkKXJldHVybiBwaXhlbEZyYWdtZW50LmNsb25lTm9kZSh0cnVlKTt2YXIgZnJhZz1kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7dmFyIGRpdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtmcmFnLmFwcGVuZENoaWxkKGRpdik7cGl4ZWxGcmFnbWVudD1mcmFnLmNsb25lTm9kZSh0cnVlKTtyZXR1cm4gZnJhZzt9CmZ1bmN0aW9uIGhhc1BpeGVsKGRhdGEpe3JldHVybiEhZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZGl2W2RhdGEtbGluZT0iJytkYXRhLmxpbmUrJyJdW2RhdGEtbXNnPSInK2RhdGEubXNnKyciXScpO30KZnVuY3Rpb24gY3JlYXRlUGl4ZWwoZGF0YSl7aWYoaGFzUGl4ZWwoZGF0YSkpcmV0dXJuIHRydWU7dmFyIGZyYWdtZW50PWdldFBpeGVsRnJhZ21lbnQoKTt2YXIgZGl2PWZyYWdtZW50LnF1ZXJ5U2VsZWN0b3IoJ2RpdicpO3ZhciBpbnRlcm5hbD1pc0ZpbGVJbnRlcm5hbChkYXRhLmZpbGUpPzE6MDt2YXIgb2JqPXttc2c6ZGF0YS5tc2csYWdlbnQ6bmF2aWdhdG9yLnVzZXJBZ2VudCx1cmw6d2luZG93LmxvY2F0aW9uLmhyZWYsaW50ZXJuYWw6aW50ZXJuYWwsdWlkOmdldFVJRCgpLHRvcDooKG5ldyBEYXRlKCkpLmdldFRpbWUoKS1zdGFydFRpbWUuZ2V0VGltZSgpKSxtb3VzZU92ZXI6Z2V0Q3VycmVudE1vdXNlT3ZlckVsZW1lbnQoKX07dmFyIGFkZEVsZW1lbnQ9ZnVuY3Rpb24oKXtkaXYuc2V0QXR0cmlidXRlKCdkYXRhLW1zZycsZGF0YS5tc2cpO2Rpdi5zZXRBdHRyaWJ1dGUoJ2RhdGEtbGluZScsZGF0YS5saW5lKTtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZyYWdtZW50KTt9O2FqYXgob2JqLGZ1bmN0aW9uKHhocil7Y29uc29sZS5sb2coIklzc3VlIHNlbmRpbmcgZXJyb3IsIHN0YXR1czogIit4aHIuc3RhdHVzKyIgZXJyb3I6ICIreGhyLnJlc3BvbnNlVGV4dCk7YWRkRWxlbWVudCgpO30sZnVuY3Rpb24oeGhyKXthZGRFbGVtZW50KCk7Y29uc29sZS5sb2coeGhyKTt9KTt9CmZ1bmN0aW9uIGFqYXgoZGF0YSxlcnJvcixzdWNjZXNzKXt2YXIgeGhyPW5ldyBYTUxIdHRwUmVxdWVzdCgpO3hoci5vcGVuKCdQT1NUJyxwaXhlbEFkZHJlc3MsdHJ1ZSk7eGhyLnNldFJlcXVlc3RIZWFkZXIoJ0NvbnRlbnQtVHlwZScsJ2FwcGxpY2F0aW9uL2pzb247Y2hhcnNldD1VVEYtOCcpO3hoci5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtpZih4aHIucmVhZHlTdGF0ZT09PTQpe2lmKHhoci5zdGF0dXM9PT0yMDApe3N1Y2Nlc3MoeGhyKTt9ZWxzZXtlcnJvcih4aHIpO319fTt4aHIuc2VuZChKU09OLnN0cmluZ2lmeShkYXRhKSk7fQpmdW5jdGlvbiBnZXRDdXJyZW50TW91c2VPdmVyRWxlbWVudCgpe3ZhciBob3Zlcj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCc6aG92ZXInKTtpZihob3Zlcj09PXVuZGVmaW5lZHx8aG92ZXIubGVuZ3RoPT09MCl7cmV0dXJuJ25vbmUnO30KaG92ZXI9aG92ZXJbaG92ZXIubGVuZ3RoLTFdLmNsb25lTm9kZSgpO3JldHVybiBob3Zlci5vdXRlckhUTUw7fQpmdW5jdGlvbiBpc0ZpbGVJbnRlcm5hbChmaWxlKXtyZXR1cm4oZmlsZS5pbmRleE9mKHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSk+LTEpO30KZnVuY3Rpb24gZ2V0VUlEKCl7aWYodHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nIT09J3VuZGVmaW5lZCcpe3JldHVybiBhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ7fQpyZXR1cm4nJzt9CmZ1bmN0aW9uIGxvYWRTdG9yZWRFcnJvcnMoKXtpZih0eXBlb2Ygc2Vzc2lvblN0b3JhZ2UhPT0ndW5kZWZpbmVkJyl7aWYoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShTVE9SQUdFX0tFWSkpe3N0b3JhZ2U9SlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFNUT1JBR0VfS0VZKSk7fX0KcmV0dXJuIHN0b3JhZ2U7fQpmdW5jdGlvbiBoYXNTZXNzaW9uRXJyb3JTaG93bihtc2cpe2xvYWRTdG9yZWRFcnJvcnMoKTtyZXR1cm4gaGFzRXJyb3JTaG93bihtc2cpO30KZnVuY3Rpb24gaGFzRXJyb3JTaG93bihtc2cpe2lmKHN0b3JhZ2U9PT11bmRlZmluZWQpcmV0dXJuIGZhbHNlO2Zvcih2YXIgaT0wO2k8c3RvcmFnZS5sZW5ndGg7aSsrKXtpZihzdG9yYWdlW2ldPT09bXNnKXtyZXR1cm4gdHJ1ZTt9fQpyZXR1cm4gZmFsc2U7fQppZih3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUuaW5kZXhPZignY3VzdG9tLXBhZ2UtcHJldmlldy5odG1sJyk9PT0tMSl7d2luZG93Lm9uZXJyb3I9ZnVuY3Rpb24obXNnLGZpbGUsbGluZSxjb2wsZXJyb3Ipe2NvbnNvbGUubG9nKCdvbmVycm9yIHJhaXNlZCEnKTtpZighaGFzU2Vzc2lvbkVycm9yU2hvd24obXNnKSl7ZXJyb3JDb2xsZWN0aW9ucy5wdXNoKHttc2c6bXNnLGxpbmU6bGluZSxmaWxlOmZpbGV9KTtzdG9yYWdlLnB1c2gobXNnKTtpZihzZXNzaW9uU3RvcmFnZSE9PXVuZGVmaW5lZCl7c2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShTVE9SQUdFX0tFWSxKU09OLnN0cmluZ2lmeShzdG9yYWdlKSk7fX0KaWYoZG9jdW1lbnRbJ2JvZHknXSE9PW51bGwmJmRvY3VtZW50Wydib2R5J10hPT11bmRlZmluZWQpe2FkZFBpeGVsc1RvRG9tKCk7fQppZignbGl2ZSc9PSdsaXZlJyYmJ1VTJz09J0NBJyl7Z3RhZygnZXZlbnQnLCdleGNlcHRpb24nLHsnc2VuZF90byc6J0ctWjVROFo1QzdLRicsJ2Rlc2NyaXB0aW9uJzptc2csJ2ZhdGFsJzp0cnVlfSk7fX07fQppZigvV2ViS2l0L2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSl7dmFyIF90aW1lcj1zZXRJbnRlcnZhbChmdW5jdGlvbigpe2lmKC9sb2FkZWR8Y29tcGxldGUvLnRlc3QoZG9jdW1lbnQucmVhZHlTdGF0ZSkpe2NsZWFySW50ZXJ2YWwoX3RpbWVyKTtvbmxvYWQoKTt9fSwxMCk7fQovKkBjY19vbiBAKi8KLypAaWYgKEBfd2luMzIpCgkJCQlkb2N1bWVudC53cml0ZSgiPCIrInNjcmlwdCBpZD1fX2llX29ubG9hZCBkZWZlciBzcmM9amF2YXNjcmlwdDp2b2lkKDApPjxcL3NjcmlwdD4iKTsKCQkJCXZhciBzY3JpcHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiX19pZV9vbmxvYWQiKTsKCQkJCXNjcmlwdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKCQkJCSAgaWYgKHRoaXMucmVhZHlTdGF0ZSA9PSAiY29tcGxldGUiKSB7CgkJCQkJb25sb2FkKCk7IC8vIGNhbGwgdGhlIG9ubG9hZCBoYW5kbGVyCgkJCQkgIH0KCQkJCX07CgkJCS8qQGVuZCBAKi8KZnVuY3Rpb24gYWRkUGl4ZWxzVG9Eb20oKXtmb3IodmFyIGk9MDtpPGVycm9yQ29sbGVjdGlvbnMubGVuZ3RoO2krKyl7Y29uc29sZS5sb2coJ2NyZWF0ZVBpeGVsJyxlcnJvckNvbGxlY3Rpb25zW2ldKTt9fQpmdW5jdGlvbiBvbmxvYWQoKXthZGRQaXhlbHNUb0RvbSgpO30KZnVuY3Rpb24gX2NyZWF0ZVNjcmlwdCh0ZXh0KXt2YXIgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtzLmFwcGVuZCh0ZXh0KTtyZXR1cm4gczt9CndpbmRvdy5lcnJvclRlc3RzPXtzeW50YXg6ZnVuY3Rpb24oKXt2YXIgc2NyaXB0PV9jcmVhdGVTY3JpcHQoJ30nKTtkb2N1bWVudC5ib2R5LmFwcGVuZChzY3JpcHQpO30sb2ZOdWxsOmZ1bmN0aW9uKCl7dmFyIHRleHQ9J3ZhciBhID0gbnVsbDsgdmFyIGIgPSBhLndoYXQ7Jzt2YXIgc2NyaXB0PV9jcmVhdGVTY3JpcHQodGV4dCk7ZG9jdW1lbnQuYm9keS5hcHBlbmQoc2NyaXB0KTt9LGludmFsaWRBc3NpZ25tZW50OmZ1bmN0aW9uKCl7dmFyIHNjcmlwdD1fY3JlYXRlU2NyaXB0KCcxID0gZnVuYygpOycpO2RvY3VtZW50LmJvZHkuYXBwZW5kKHNjcmlwdCk7fX07d2luZG93LnRyYWNrQ29udmVyc2lvbj1mdW5jdGlvbigpe2lmKHR5cGVvZiBndGFnPT0ndW5kZWZpbmVkJylyZXR1cm4tMTtpZighd2luZG93LmQyY19hd2NJZHx8IXdpbmRvdy5kMmNfYXdjTGFiZWwpcmV0dXJuLTM7aWYoZGVwbG95bWVudFR5cGUudG9Mb3dlckNhc2UoKT09J2xpdmUnJiYnVVMnPT0nQ0EnKXtndGFnKCdldmVudCcsJ2NvbnZlcnNpb24nLHsnc2VuZF90byc6ZDJjX2F3Y0lkKycvJytkMmNfYXdjTGFiZWx9KTt9ZWxzZXtjb25zb2xlLmxvZygiZ3RhZygnZXZlbnQnLCdjb252ZXJzaW9uJywgeyAnc2VuZF90byc6ICIrZDJjX2F3Y0lkKycvJytkMmNfYXdjTGFiZWwrIiB9KTsiKTt9fX0pKCk7Ci8qXV0+Ki8KCgkoKGQpID0+IHsKCQljb25zdCBjZSA9IGQuY3JlYXRlRWxlbWVudDsKCQlsZXQgdXJsQ2F0QXJyID0gewoJCQknY2xhcml2b3kuY29tJyA6ICdDMDAwMicsCgkJCSdkZWFsZXItbGVhZHMuY2EnIDogJ0MwMDAzJywKCQkJJ3JvYWRzdGVyLmNvbS9yb2Fkc3RlcicgOiAnQzAwMDInLC8vRFdQLTEyMjgxCgkJCSdmemxuay5jb20vc2lnbmFscy5qcycgOiAnQzAwMDInLC8vRFdQLTEyMjg5CgkJCSdsaXZlY2hhdGluYy5jb20vdHJhY2tpbmcuanMnIDogJ0MwMDAzJywvL0RXUC0xMjMwMwoJCQkndGhlbGl2ZWNoYXRzb2Z0d2FyZS5jb20nIDogJ0MwMDAzJywvL0RXUC0xMjI5NwoJCQknY2FuYWRhLmRpZ2l0YWwtaW50ZXJ2aWV3LmNvbScgOiAnQzAwMDMnLC8vRFdQLTEyMzAwCgkJCSdzZGsuYXV0b3ZlcmlmeS5jb20nIDogJ0MwMDAzJywvL0RXUC0xMjMwMQoJCQknYW5hbHl0aWNzLmpzJyA6ICdDMDAwMicsLy9EV1AtMTIzMDkKCQkJJ2hzLXNjcmlwdHMuY29tJyA6ICdDMDAwNCcsLy9EV1AtMTIzMjAKCQkJJ21hcmtldGluZ2F1dG9tYXRpb24uc2VydmljZXMnIDogJ0MwMDA0JywvL0RXUC0xMjMyMgoJCQknbGVhZGZveC5jbycgOiAnQzAwMDQnLAoJCQknc3RhdGljLnVwdHJhY3MuY29tJyA6ICdDMDAwMycsLy9EV1AtMTIzNTQKIAkJCSdiYXQuYmluZy5jb20nIDogJ0MwMDAyJywvL0RXUC0xMjM1NAoJCQknZ3RhZy9qcycgOiAnQzAwMDInLAoJCQknc2QuanMnIDogJ0MwMDAxJywKCQkJJ3NkYS5qcycgOiAnQzAwMDEnLAoJCQkKCQl9OwoJCWxldCB1cmxDYXRSZWdleCA9ICcoJyArIE9iamVjdC5rZXlzKHVybENhdEFycikuam9pbignfCcpLnJlcGxhY2UoL1srPy5dL2csICdcJCYnKSArICcpJzsKCQlsZXQgY3VycmVudENvbnNlbnQgPSBnZXRDb25zZW50KCk7CgkJd2luZG93LnNjcmlwdFVybEFyciA9IFtdOwoJCWQuY3JlYXRlRWxlbWVudCA9IGZ1bmN0aW9uKC4uLmFyZ3MpIHsKCQkJY29uc3QgcyA9IGNlLmJpbmQoZCkoLi4uYXJncyksIHNhID0gcy5zZXRBdHRyaWJ1dGUuYmluZChzKTsKCQkJcy5zZXRBdHRyaWJ1dGUgPSBmdW5jdGlvbihuLCB2KSB7CgkJCQlpZihuID09PSAnc3JjJyAmJiB3aW5kb3cuc2NyaXB0VXJsQXJyLmluZGV4T2Yodi50b1N0cmluZygpKSA9PSAtMSkgewoJCQkJCWlmKChuZXcgUmVnRXhwKHVybENhdFJlZ2V4KSkudGVzdCh2KSl7CgkJCQkJCWZvcihrZXkgaW4gdXJsQ2F0QXJyKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoJCQkJCQkJaWYgKChuZXcgUmVnRXhwKGtleSkpLnRlc3QodikpIHsKCQkJCQkJCQl3aW5kb3cuc2NyaXB0VXJsQXJyLnB1c2godi50b1N0cmluZygpKTsKCQkJCQkJCQlpZihrZXkgPT0gJ2d0YWcvanMnIHx8IGtleSA9PSAnYmF0LmJpbmcuY29tJyB8fCBrZXkgPT0gJ3NkLmpzJyB8fCBrZXkgPT0gJ3NkYS5qcycpewoJCQkJCQkJCQlzYSgnZGF0YS1vdC1pZ25vcmUnLCB0cnVlKTsKCQkJCQkJCQkJc2EoJ3R5cGUnLCAndGV4dC9qYXZhc2NyaXB0Jyk7CgkJCQkJCQkJfSBlbHNlIGlmKGN1cnJlbnRDb25zZW50ID09IG51bGwgfHwgY3VycmVudENvbnNlbnQuaW5kZXhPZih1cmxDYXRBcnJba2V5XSkgPT0gLTEpewoJCQkJCQkJCQlzYSgndHlwZScsICd0ZXh0L3BsYWluJyk7CgkJCQkJCQkJCXNhKCdjbGFzcycsICdvcHRhbm9uLWNhdGVnb3J5LScgKyB1cmxDYXRBcnJba2V5XSk7CgkJCQkJCQkJfQoJCQkJCQkJCWJyZWFrOwoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJfQoJCQkJfQoJCQkJc2Eobiwgdik7CgkJCX0KCQkJcmV0dXJuIHM7CgkJfQoJCWZ1bmN0aW9uIGdldENvbnNlbnQoKXsKCQkJbGV0IG5hbWUgPSAnZDJjX2Nvb2tpZV9jb25zZW50JyArICc9JzsKCQkJbGV0IGNhID0gKCcnK2RvY3VtZW50LmNvb2tpZSkuc3BsaXQoJzsnKTsKCQkJZm9yKGxldCBpID0gMDsgaSA8IGNhLmxlbmd0aDsgaSsrKSB7CgkJCQlsZXQgYyA9IGNhW2ldOwoJCQkJYyA9IGMudHJpbSgpOwoJCQkJaWYgKGMuaW5kZXhPZihuYW1lKSA9PSAwKSB7CgkJCQkJdHJ5ewoJCQkJCQljID0gZGVjb2RlVVJJQ29tcG9uZW50KCBjICk7CgkJCQkJfSBjYXRjaCggZSApCgkJCQkJewoJCQkJCQljb25zb2xlLmxvZyggZSApOwoJCQkJCQlyZXR1cm4gbnVsbDsKCQkJCQl9CgkJCQkJcmV0dXJuIGMuc3Vic3RyaW5nKG5hbWUubGVuZ3RoLCBjLmxlbmd0aCk7CgkJCQl9CgkJCX0KCQkJcmV0dXJuIG51bGw7CgkJfQoJfSkoZG9jdW1lbnQpOwoKCWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbigpIHsKCS8vIExpc3RlbiBmb3IgY2hhbmdlcyB0byB0aGUgRE9NCgkJbGV0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obXV0YXRpb25zKSB7CgkJCW11dGF0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKG11dGF0aW9uKSB7CgkJCQlpZiAobXV0YXRpb24uYWRkZWROb2RlcyAmJiBtdXRhdGlvbi5hZGRlZE5vZGVzLmxlbmd0aCA+IDApIHsKCQkJCQkvLyBDaGVjayBpZiBvdXIgc2NyaXB0IGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBET00KCQkJCQlmb3IgKGxldCBpID0gMDsgaSA8IG11dGF0aW9uLmFkZGVkTm9kZXMubGVuZ3RoOyBpKyspIHsKCQkJCQkJbGV0IG5vZGUgPSBtdXRhdGlvbi5hZGRlZE5vZGVzW2ldOwoJCQkJCQlpZiAobm9kZS5ub2RlVHlwZSA9PT0gMSAmJiBub2RlLnRhZ05hbWUgPT09ICdTQ1JJUFQnICYmIG5vZGUuc3JjICYmIG5vZGUuc3JjLmluY2x1ZGVzKCdjYW5hZGEuZGlnaXRhbC1pbnRlcnZpZXcuY29tJykgJiYgdHlwZW9mIE9uZVRydXN0ICE9PSAndW5kZWZpbmVkJykgewoJCQkJCQkJc2V0VGltZW91dChmdW5jdGlvbigpewoJCQkJCQkJCXRyeXtEaWdpdGFsSW50ZXJ2aWV3LkxhdW5jaGVyLmVuYWJsZUxhdW5jaFBvaW50cygpO31jYXRjaChlKXt9CgkJCQkJCQl9LCAxMDAwKTsKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJfSk7CgkJfSk7CgkJLy8gU3RhcnQgb2JzZXJ2aW5nIHRoZSBkb2N1bWVudCB3aXRoIHRoZSBjb25maWd1cmVkIHBhcmFtZXRlcnMKCQlvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmJvZHksIHsgY2hpbGRMaXN0OiB0cnVlLCBzdWJ0cmVlOiB0cnVlIH0pOwoJCW9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuaGVhZCwgeyBjaGlsZExpc3Q6IHRydWUsIHN1YnRyZWU6IHRydWUgfSk7Cgl9KTsKCi8qPCFbQ0RBVEFbKi8KLy9kYXRhLXNjb2RlcmVmPSJaWlotNDE1NTY0OCIKdmFyIGN1cnJlbnRTaXRlSUQ9MjUxO3ZhciBkMmNfZ2FBY2NvdW50cz17ImFsbCI6W10sImludGVybmFsIjpbXX07dmFyIGQyY19hd2NJZD0nQVctOTQ4MTY4OTU1Jzt2YXIgZDJjX2F3Y0xhYmVsPSdDc3ZkQ0xlQmxGNFEtOUdQeEFNJzt2YXIgbGVnYWN5X2dhPWZhbHNlO3dpbmRvdy5kYXRhTGF5ZXI9d2luZG93LmRhdGFMYXllcnx8W107ZnVuY3Rpb24gZ3RhZygpe2RhdGFMYXllci5wdXNoKGFyZ3VtZW50cyk7fQpndGFnKCdqcycsbmV3IERhdGUoKSk7ZDJjX2dhQWNjb3VudHMuYWxsLnB1c2goJ0ctWjVROFo1QzdLRicpO2QyY19nYUFjY291bnRzLmFsbC5wdXNoKCdHLVg0RVhOV1lYS0wnKTtpZihkMmNfYXdjSWQpe2QyY19nYUFjY291bnRzLmFsbC5wdXNoKGQyY19hd2NJZCk7fQooZDJjX2dhQWNjb3VudHMuYWxsfHxbXSkubWFwKGZ1bmN0aW9uKGlkKXtndGFnKCdjb25maWcnLGlkLHsnc2VuZF9wYWdlX3ZpZXcnOmZhbHNlLCdsaW5rZXInOnsnZG9tYWlucyc6SlNPTi5wYXJzZShhdG9iKCJXeUpvZEhSd2N6cGNMMXd2ZXlSVFNFOVNWRVJGUVV4RlVrNUJUVVZEVkVGVlVreDlMbk5vYjNBdWFIbDFibVJoYVdOaGJtRmtZUzVqYjIwaUxDSm9kSFJ3Y3pwY0wxd3ZjMmh2Y0M1b2VYVnVaR0ZwY21Wd1pXNTBhV2R1ZVM1amIyMGlYUT09IikpLCdjb29raWVfZG9tYWluJzond3d3Lmh5dW5kYWlyZXBlbnRpZ255LmNvbSd9fSk7fSk7Ci8qXV0+Ki8KCi8qPCFbQ0RBVEFbKi8KLy9kYXRhLXNjb2RlcmVmPSJGTFQtMTU2NjQ1ODg5OTY0NTM0MTE1Mzg2Igp2YXIgZG9jUmVhZHlBcnI9W107dmFyIHBhZ2U9Ik5FV0NBUlMiO3ZhciBmYkNoYXRSZWY9e307dmFyIGRlcGxveW1lbnRUeXBlPSdsaXZlJzt2YXIgY3VycmVudFNpdGVJRD0yNTE7dmFyIGN1cnJlbnREZWFsZXJJRD0xODA4O3ZhciBnYVR5cGU9J2d0YWcnO3ZhciBhbGxDYW1wYWlnbnM9W1siaHl1bmRhaXJlcGVudGlnbnkuY29tIiwiQ291cnJpZWxzLXJlbGFuY2UiLCJUb3V0ZXMiLCI5NTUiXSxbImh5dW5kYWlyZXBlbnRpZ255LmNvbSIsIkNvdXJyaWVscy1yZWxhbmNlIiwiTmV1ZnMiLCI5NTYiXSxbImh5dW5kYWlyZXBlbnRpZ255LmNvbSIsIkNvdXJyaWVscy1yZWxhbmNlIiwiT2NjYXNpb24iLCI5NTciXSxbIkh5dW5kYWlyZXBlbnRpZ255LmNvbSIsIkdvb2dsZSIsIk5ldWZzIiwiMTE0OCJdLFsiSHl1bmRhaXJlcGVudGlnbnkuY29tIiwiR29vZ2xlIiwiUmVjaWJsYWdlIiwiMTUxNSJdLFsiSHl1bmRhaXJlcGVudGlnbnkuY29tIiwiRmFjZWJvb2siLCJSZWNpYmxhZ2UiLCIyNjY2Il0sWyJoeXVuZGFpcmVwZW50aWdueS5jb20iLCJDb3VycmllbHMtcmVsYW5jZSIsIk5ldWYtMzAtam91cnMiLCIyNzI4Il0sWyJoeXVuZGFpcmVwZW50aWdueS5jb20iLCJTRU0iLCJBZ2VuY3kiLCIzMzQyIl0sWyJIeXVuZGFpcmVwZW50aWdueS5jb20iLCJCaW5nIiwiQmluZyIsIjQxNDIiXSxbImh5dW5kYWlyZXBlbnRpZ255LmNvbSIsIlRyYWRlciIsIlJldGFyZ2V0aW5nIiwiNDM0NCJdLFsiSHl1bmRhaXJlcGVudGlnbnkuY29tIiwiRmFjZWJvb2siLCJOZXVmLWxlYWRhZHMtYmxhY2tmcmlkYXkiLCI1MjEwIl0sWyJIeXVuZGFpcmVwZW50aWdueS5jb20iLCJGYWNlYm9vayIsIk5ldWYiLCIxMDczNSJdLFsiSHl1bmRhaXJlcGVudGlnbnkuY29tIiwiRmFjZWJvb2siLCJMZWFkYWRzLW5ldWYiLCIxMjU1OCJdLFsiSHl1bmRhaXJlcGVudGlnbnkuY29tIiwiR29vZ2xlIiwiT2NjYXNpb24iLCIxOTAzNiJdLFsiSHl1bmRhaXJlcGVudGlnbnkuY29tIiwiR29vZ2xlIiwiTmV1Zi1pb25pcTUiLCIzMTc1MCJdLFsiSHl1bmRhaXJlcGVudGlnbnkuY29tIiwiR29vZ2xlIiwiTmV1Zi15b3V0dWJlIiwiMzI2ODciXSxbIkh5dW5kYWlyZXBlbnRpZ255LmNvbSIsIkdvb2dsZSIsIlZsYS1uZXVmIiwiMzI4MTMiXSxbIkh5dW5kYWlyZXBlbnRpZ255LmNvbSIsIkdvb2dsZSIsIlZsYS1vY2Nhc2lvbiIsIjM0MjI4Il0sWyJIeXVuZGFpcmVwZW50aWdueS5jb20iLCJGYWNlYm9vayIsIk5ldWYtZXYiLCIzNzA0MSJdLFsiSHl1bmRhaXJlcGVudGlnbnkuY29tIiwiRmFjZWJvb2siLCJPY2Nhc2lvbi1jcG8iLCIzNzA0MiJdXQp2YXIgcmV0YXJnZXRpbmdDYW1wYWlnbnM9W1siSHl1bmRhaXJlcGVudGlnbnkuY29tIiwiSHl1bmRhaXJlcGVudGlnbnkuY29tIiwiR29vZ2xlIiwiR29vZ2xlIiwiUmVjaWJsYWdlIiwiUmVjaWJsYWdlIl0sWyJIeXVuZGFpcmVwZW50aWdueS5jb20iLCJIeXVuZGFpcmVwZW50aWdueS5jb20iLCJGYWNlYm9vayIsIkZhY2Vib29rIiwiUmVjaWJsYWdlIiwiUmVjaWJsYWdlIl0sWyJIeXVuZGFpcmVwZW50aWdueS5jb20iLCJIeXVuZGFpcmVwZW50aWdueS5jb20iLCJGYWNlYm9vayIsIkZhY2Vib29rIiwiTmV1Zi1sZWFkYWRzLWJsYWNrZnJpZGF5IiwiTmV1Zi1sZWFkYWRzLWJsYWNrZnJpZGF5Il1dCnZhciBBSUN1cnJlbnRDb25maWdJRD0wO3ZhciBBSUlEUGVyTmV3Q2Fyc0ZyZW5jaD1uZXcgQXJyYXkoKTt2YXIgQUlJRFBlck5ld0NhcnNFbmdsaXNoPW5ldyBBcnJheSgpO2Z1bmN0aW9uIHBhcnNlUXVlcnkoc3RyKXtpZihzdHIubGVuZ3RoPDEpcmV0dXJue30KdmFyIHZhcnM9e30sdjt2YXIgcXM9c3RyLnNwbGl0KCcmJyk7Zm9yKHZhciBpPTA7aTxxcy5sZW5ndGg7aSsrKXt2PWV4cGxvZGUocXNbaV0sJz0nLDEpO3ZhcnNbdlswXV09dlsxXTt9CnJldHVybiB2YXJzO30KZnVuY3Rpb24gZGVjb2RlU3RyaW5nKHN0cmluZyx0aW1lcyl7aWYodGltZXM9PSIifHx0aW1lcz09InVuZGVmaW5lZCIpe3RpbWVzPTE7fQpmb3IoaT0wO2k8dGltZXM7aSsrKXtzdHJpbmc9ZGVjb2RlVVJJQ29tcG9uZW50KHN0cmluZyk7fQpyZXR1cm4gc3RyaW5nO30KZnVuY3Rpb24gZGVjb2RlSFRNTChlbmNvZGVkKXtpZih0eXBlb2YgZW5jb2RlZCE9PSdzdHJpbmcnKXJldHVybiBlbmNvZGVkO3ZhciBlbD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZXh0YXJlYScpO2VsLmlubmVySFRNTD1lbmNvZGVkO3JldHVybiBlbC52YWx1ZTt9CmZ1bmN0aW9uIGV4cGxvZGUoc3RyLHNlcGFyYXRvcixsaW1pdCl7c3RyPXN0ci5zcGxpdChzZXBhcmF0b3IpO2lmKHN0ci5sZW5ndGg8PWxpbWl0KXJldHVybiBzdHI7dmFyIHJldD1zdHIuc3BsaWNlKDAsbGltaXQpO3JldC5wdXNoKHN0ci5qb2luKHNlcGFyYXRvcikpO3JldHVybiByZXQ7fQpmdW5jdGlvbiBnZXRVcmxWYXJzKCl7dmFyIHFzPSh3aW5kb3cubG9jYXRpb24uc2VhcmNoKS5zdWJzdHJpbmcoMSk7cmV0dXJuIHBhcnNlUXVlcnkocXMpO30KZnVuY3Rpb24gZ2V0Q29va2llKGNfbmFtZSl7cmV0dXJuIENvb2tpZXMuZ2V0KGNfbmFtZSk7fQpmdW5jdGlvbiBnZXRDb29raWUoY19uYW1lKXt2YXIgY192YWx1ZT1kb2N1bWVudC5jb29raWU7dmFyIGNfc3RhcnQ9Y192YWx1ZS5pbmRleE9mKCIgIitjX25hbWUrIj0iKTtpZihjX3N0YXJ0PT0tMSl7Y19zdGFydD1jX3ZhbHVlLmluZGV4T2YoY19uYW1lKyI9Iik7fQppZihjX3N0YXJ0PT0tMSl7Y192YWx1ZT1udWxsO31lbHNle2Nfc3RhcnQ9Y192YWx1ZS5pbmRleE9mKCI9IixjX3N0YXJ0KSsxO3ZhciBjX2VuZD1jX3ZhbHVlLmluZGV4T2YoIjsiLGNfc3RhcnQpO2lmKGNfZW5kPT0tMSl7Y19lbmQ9Y192YWx1ZS5sZW5ndGg7fQpjX3ZhbHVlPXVuZXNjYXBlKGNfdmFsdWUuc3Vic3RyaW5nKGNfc3RhcnQsY19lbmQpKTt9CnJldHVybiBjX3ZhbHVlO30KZnVuY3Rpb24gc2V0Q29va2llKGNfbmFtZSx2YWx1ZSxleGRheXMpe2lzQ29va2llQWxsb3dlZChjX25hbWUsZnVuY3Rpb24oYWxsb3dlZCl7aWYoIWFsbG93ZWQpe3JldHVybiBDb29raWVzLnNldChjX25hbWUsdmFsdWUsZXhkYXlzLCcvJyk7bG9nQ29va2llKGNfbmFtZSx2YWx1ZSxleGRheXMpO3JldHVybjt9CnZhciBleGRhdGU9bmV3IERhdGUoKTtleGRhdGUuc2V0RGF0ZShleGRhdGUuZ2V0RGF0ZSgpK2V4ZGF5cyk7dmFyIGNfdmFsdWU9ZXNjYXBlKHZhbHVlKSsoKGV4ZGF5cz09bnVsbCk\/IiI6IjsgZXhwaXJlcz0iK2V4ZGF0ZS50b1VUQ1N0cmluZygpKSsiOyBwYXRoPS8iO2RvY3VtZW50LmNvb2tpZT1jX25hbWUrIj0iK2NfdmFsdWU7fSk7fQpmdW5jdGlvbiBsb2dDb29raWUobmFtZSx2YWx1ZSxleHBpcmVzLHRyaWVzKXtpZih0eXBlb2YgdHJpZXM9PT0ndW5kZWZpbmVkJyl7dHJpZXM9NTt9CmlmKHR5cGVvZiB3aW5kb3cuQ29va2llTG9nZ2VyPT09J3VuZGVmaW5lZCcpe2lmKHRyaWVzKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bG9nQ29va2llKG5hbWUsdmFsdWUsZXhwaXJlcyx0cmllcy0xKTt9LDEwMDApO319ZWxzZXt3aW5kb3cuQ29va2llTG9nZ2VyLmxvZyhuYW1lLHZhbHVlLGV4cGlyZXMpO319CmZ1bmN0aW9uIGlzQ29va2llQWxsb3dlZChuYW1lLGNhbGxiYWNrLHRyaWVzKXtpZih0eXBlb2Ygd2luZG93LkNvb2tpZUNvbnNlbnQ9PT0ndW5kZWZpbmVkJyl7aWYodHlwZW9mIHRyaWVzPT09J3VuZGVmaW5lZCcpe3RyaWVzPTU7fQppZih0cmllcyl7c2V0VGltZW91dChmdW5jdGlvbigpe2lzQ29va2llQWxsb3dlZChuYW1lLGNhbGxiYWNrLHRyaWVzLTEpO30sMTAwMCk7fX1lbHNle3dpbmRvdy5Db29raWVDb25zZW50LmlzQ29va2llQWxsb3dlZChuYW1lLGNhbGxiYWNrKTt9fQpmdW5jdGlvbiBnYVBhZ2VWaWV3KHBwKXsoZDJjX2dhQWNjb3VudHMuYWxsfHxbXSkubWFwKGZ1bmN0aW9uKGlkKXtsZXQgZD17cGFnZV9wYXRoOnBwfTtpZihkZXBsb3ltZW50VHlwZSE9J2xpdmUnfHwnVVMnIT0nQ0EnKXtjb25zb2xlLmxvZygnZ3RhZycsJ2NvbmZpZycsaWQsZCkKcmV0dXJuO30KZ3RhZygnY29uZmlnJyxpZCxkKTt9KTt9O2Z1bmN0aW9uIGdhNFBhZ2VWaWV3KHBwKXtpZihkZXBsb3ltZW50VHlwZSE9J2xpdmUnfHwnVVMnIT0nQ0EnKXtyZXR1cm47fQpndGFnKCdzZXQnLHsncGFnZV9wYXRoJzpwcH0pO2d0YWcoJ2V2ZW50JywncGFnZV92aWV3Jyx7J3NlbmRfdG8nOidHLVg0RVhOV1lYS0wnfSk7fQpmdW5jdGlvbiBnZXRHYUNsaWVudElkKCl7cmV0dXJuKCgodHlwZW9mIHdpbmRvdy5nYT09PSdvYmplY3QnJiZ3aW5kb3cuZ2EhPT1udWxsKXx8dHlwZW9mIHdpbmRvdy5nYT09PSdmdW5jdGlvbicpJiZ0eXBlb2YgZ2FbJ2dldEFsbCddPT09J2Z1bmN0aW9uJyk\/Z2EuZ2V0QWxsKClbMF0uZ2V0KCdjbGllbnRJZCcpOicnO30KZnVuY3Rpb24gZ2FUcmFjayhhYSxjLGEsbCx2KXtsZXQgYWM9W107Y29uc3QgY3M9ZGVwbG95bWVudFR5cGUhPSdsaXZlJ3x8J1VTJyE9J0NBJztjb25zdCBjaD0obyxkKT0+dHlwZW9mIG8hPT0ndW5kZWZpbmVkJz9vOmQ7YWE9Y2goYWEsJycpO2M9Y2goYywnJyk7YT1jaChhLCcnKTtsPWNoKGwsJycpO3Y9Y2godiwxKTtpZihhYT09J2ludGVybmFsJyl7YWM9ZDJjX2dhQWNjb3VudHMuaW50ZXJuYWw7fWVsc2UgaWYoYWEubGVuZ3RoJiYvXihifGN8ZClcLl90cmFja0V2ZW50Ly50ZXN0KGFhKSYmdHlwZW9mIGQyY19nYUFjY291bnRzW2FhWzBdXSE9J3VuZGVmaW5lZCcpe2FjLnB1c2goZDJjX2dhQWNjb3VudHNbYWFbMF1dKTt9CmlmKGFjLmxlbmd0aCl7YWMubWFwKChpZCk9Pntjb25zdCBkPXtzZW5kX3RvOmlkLGV2ZW50X2FjdGlvbjphLGV2ZW50X2NhdGVnb3J5OmMsZXZlbnRfbGFiZWw6bCx2YWx1ZTp2fTtpZihjcyl7Y29uc29sZS5sb2coYEdBVFJBQ0stR1RBRy1TRU5ELVRPWyR7aWR9XTpgLCdldmVudCcsYSxkKTtyZXR1cm47fQpndGFnKCdldmVudCcsYSxkKTt9KTt9ZWxzZXtjb25zdCBkPXtldmVudF9hY3Rpb246YSxldmVudF9jYXRlZ29yeTpjLGV2ZW50X2xhYmVsOmwsdmFsdWU6dn07aWYoY3Mpe2NvbnNvbGUubG9nKCdHQVRSQUNLLUdUQUctTk8tU0VORC1UTzonLCdldmVudCcsYSxkKTt9ZWxzZXtndGFnKCdldmVudCcsYSxkKTt9fX07ZnVuY3Rpb24gb25Db25maXJtU3VibWl0KGV2ZW50KXtyZXR1cm4gdHJ1ZTt9CmZ1bmN0aW9uIHNldFNlc3Npb25Db29raWUoY19uYW1lLHZhbHVlKXt2YXIgZXhkYXlzPW51bGw7dmFyIGNfdmFsdWU9ZXNjYXBlKHZhbHVlKSsiO2V4cGlyZXM9MDtwYXRoPS8iO2RvY3VtZW50LmNvb2tpZT1jX25hbWUrIj0iK2NfdmFsdWU7bG9nQ29va2llKGNfbmFtZSk7fQpmdW5jdGlvbiBpbml0TENJKHBhcmFtcyxuKXtpZihuPjIwKXJldHVybiBuO3ZhciBuPShuKT9uOjA7aWYodHlwZW9mIExDX0FQST09J3VuZGVmaW5lZCd8fHR5cGVvZiBMQ19JbnZpdGU9PSd1bmRlZmluZWQnKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aW5pdExDSShwYXJhbXMsKytuKTt9LDUwMCk7cmV0dXJuO30KaWYodHlwZW9mIExDX0FQSSE9J3VuZGVmaW5lZCcmJnR5cGVvZiBMQ19JbnZpdGUhPSd1bmRlZmluZWQnJiZwYXJhbXMpe3JldHVybiBMQ19BUEkuc2V0X2N1c3RvbV92YXJpYWJsZXMocGFyYW1zKTt9fQpmdW5jdGlvbiBzYW5pdGl6ZVJlZmVyZXIocmVmZXJlcil7cmV0dXJuIHJlZmVyZXIucmVwbGFjZSgvWyciYCgpPD5cW1xde318IV0vZywnJyk7fQpmdW5jdGlvbiBnZXRSZWZlcnJlclZhckZ1bmN0aW9uKHJlZmVyZXIpe3JldHVybiBmdW5jdGlvbigpe2lmKCcnPT1yZWZlcmVyKXJlZmVyZXI9ZG9jdW1lbnQucmVmZXJyZXI7cmVmZXJlcj1zYW5pdGl6ZVJlZmVyZXIocmVmZXJlcik7dmFyIHFzLHFzaW5kZXg9cmVmZXJlci5pbmRleE9mKCc\/JykrMTtpZihxc2luZGV4PjApe3ZhciBxcz1yZWZlcmVyLnNsaWNlKHFzaW5kZXgpO3JldHVybiBwYXJzZVF1ZXJ5KHFzKTt9CnJldHVybnt9fX0KdmFyIGdldFJlZmVyZXJWYXJzPWdldFJlZmVycmVyVmFyRnVuY3Rpb24oJycpO3ZhciB1dG1fbGFuZGluZ19jb29raWU9KGdldENvb2tpZSgndXRtX2xhbmRpbmcnKSE9bnVsbCYmdHlwZW9mIGdldENvb2tpZSgndXRtX2xhbmRpbmcnKSE9J3VuZGVmaW5lZCc\/Z2V0Q29va2llKCd1dG1fbGFuZGluZycpOicnKTtpZih1dG1fbGFuZGluZ19jb29raWUubGVuZ3RoPT0wKXtzZXRDb29raWUoJ3V0bV9sYW5kaW5nJyx3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpO30KaWYoZGVwbG95bWVudFR5cGU9PSdsaXZlJyl7dmFyIGdlbmVyYXRlR1VJRD1mdW5jdGlvbigpe3ZhciBTND1mdW5jdGlvbigpe3JldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMHgxMDAwMCkudG9TdHJpbmcoMTYpO307cmV0dXJuKFM0KCkrUzQoKSsiLSIrClM0KCkrIi0iKwpTNCgpKyItIisKUzQoKSsiLSIrClM0KCkrUzQoKStTNCgpKTt9CnZhciB1cmxWYXJzPWdldFVybFZhcnMoKTt2YXIgcmVmZXJlclZhcnM9Z2V0UmVmZXJlclZhcnMoKTt2YXIgcmVmZXJlcj0nJzt2YXIgcmF3UmVmZXJyZXI9cmVmZXJlcjtyZWZlcmVyPShyZWZlcmVyLmxlbmd0aDwxPzA6cmVmZXJlcik7aWYoJyc9PXJhd1JlZmVycmVyKXJhd1JlZmVycmVyPWRvY3VtZW50LnJlZmVycmVyO3ZhciBpdGVtVHlwZT0nY2FyJztpdGVtVHlwZT0oaXRlbVR5cGUubGVuZ3RoPDE\/MDppdGVtVHlwZSk7aWYoaXNOYU4ocmVmZXJlcikpe3JlZmVyZXI9cmVmZXJlci5yZXBsYWNlKC9cLy9nLCJ8IikucmVwbGFjZSgvXD8vZywiX18iKS5yZXBsYWNlKC9cdC9nLCcnKS5yZXBsYWNlKC9cbi9nLCcnKS5yZXBsYWNlKC9cci9nLCcnKS5yZXBsYWNlQWxsKCclMEEnLCcnKS5yZXBsYWNlQWxsKCclMDknLCcnKS5yZXBsYWNlQWxsKCclMEInLCcnKS5yZXBsYWNlQWxsKCclMDAnLCcnKS5yZXBsYWNlQWxsKCclMEQnLCcnKTt9CnZhciBtYWtlPSIiO2lmKG1ha2UubGVuZ3RoPT0wKW1ha2U9IjAiO3ZhciBtb2RlbD0iIjtpZihtb2RlbC5sZW5ndGg9PTApbW9kZWw9IjAiO3ZhciB5ZWFyPSIiO2lmKHllYXIubGVuZ3RoPT0wKXllYXI9IjAiO3ZhciBpc21vYmlsZT0iMSI7aWYoaXNtb2JpbGUubGVuZ3RoPT0wKWlzbW9iaWxlPSIwIjt2YXIgb3JpZ1NvdXJjZT0iIjt2YXIgb3JpZ0NhbXBhaWduPSIiO3ZhciBvcmlnS2V5d29yZD0iIjtpZih1cmxWYXJzWyJyZWxhbmNlSUQiXSE9dW5kZWZpbmVkKQpzZXRDb29raWUoJ3JlbGFuY2VJRCcsdXJsVmFyc1sicmVsYW5jZUlEIl0sMTgwKTt2YXIgc291cmNlPShnZXRDb29raWUoJ3V0bV9zb3VyY2UnKSE9bnVsbCYmdHlwZW9mIGdldENvb2tpZSgndXRtX3NvdXJjZScpIT0ndW5kZWZpbmVkJz9nZXRDb29raWUoJ3V0bV9zb3VyY2UnKTonJyk7dmFyIHNvdXJjZUNvb2tpZT1zb3VyY2U7dmFyIHNvdXJjZVVSTD0iIjtpZigidXRtX3NvdXJjZSJpbiB1cmxWYXJzKXtpZihzb3VyY2UubGVuZ3RoPT0wKXNvdXJjZT11cmxWYXJzWyd1dG1fc291cmNlJ107c291cmNlVVJMPXVybFZhcnNbJ3V0bV9zb3VyY2UnXTt9CnZhciBjYW1wYWlnbj0oZ2V0Q29va2llKCd1dG1fY2FtcGFpZ24nKSE9bnVsbCYmdHlwZW9mIGdldENvb2tpZSgndXRtX2NhbXBhaWduJykhPSd1bmRlZmluZWQnP2dldENvb2tpZSgndXRtX2NhbXBhaWduJyk6JycpO2lmKGNhbXBhaWduLnRvTG93ZXJDYXNlKCk9PSdlY29sZS1ldHVkaWFudCcpe2NhbXBhaWduPScnO3NldENvb2tpZSgndXRtX2NhbXBhaWduJywiIiwxKTt9CnZhciBjYW1wYWlnbkNvb2tpZT1jYW1wYWlnbjt2YXIgY2FtcGFpZ25VUkw9IiI7aWYoInV0bV9jYW1wYWlnbiJpbiB1cmxWYXJzKXtpZihjYW1wYWlnbi5sZW5ndGg9PTApY2FtcGFpZ249dXJsVmFyc1sndXRtX2NhbXBhaWduJ107Y2FtcGFpZ25VUkw9dXJsVmFyc1sndXRtX2NhbXBhaWduJ107fQp2YXIgbWVkaXVtPShnZXRDb29raWUoJ3V0bV9tZWRpdW0nKSE9bnVsbCYmdHlwZW9mIGdldENvb2tpZSgndXRtX21lZGl1bScpIT0ndW5kZWZpbmVkJz9nZXRDb29raWUoJ3V0bV9tZWRpdW0nKTonJyk7dmFyIG1lZGl1bUNvb2tpZT1tZWRpdW07dmFyIG1lZGl1bVVSTD0iIjtpZigidXRtX21lZGl1bSJpbiB1cmxWYXJzKXtpZihtZWRpdW0ubGVuZ3RoPT0wKW1lZGl1bT11cmxWYXJzWyd1dG1fbWVkaXVtJ107bWVkaXVtVVJMPXVybFZhcnNbJ3V0bV9tZWRpdW0nXTt9CnZhciBjb29raWVJbkNhbXBhaWducz1mYWxzZTt2YXIgdXJsSW5DYW1wYWlnbnM9ZmFsc2U7dmFyIGhhc0dvb2dsZU9yZ2FuaWM9ZmFsc2U7Zm9yKHZhciBpPTA7aTxhbGxDYW1wYWlnbnMubGVuZ3RoO2krKyl7aWYoYWxsQ2FtcGFpZ25zW2ldWzFdLnRvTG93ZXJDYXNlKCk9PXNvdXJjZVVSTC50b0xvd2VyQ2FzZSgpJiZhbGxDYW1wYWlnbnNbaV1bMl0udG9Mb3dlckNhc2UoKT09Y2FtcGFpZ25VUkwudG9Mb3dlckNhc2UoKSl1cmxJbkNhbXBhaWducz10cnVlO2lmKGFsbENhbXBhaWduc1tpXVsxXS50b0xvd2VyQ2FzZSgpPT1zb3VyY2VDb29raWUudG9Mb3dlckNhc2UoKSYmYWxsQ2FtcGFpZ25zW2ldWzJdLnRvTG93ZXJDYXNlKCk9PWNhbXBhaWduQ29va2llLnRvTG93ZXJDYXNlKCkpY29va2llSW5DYW1wYWlnbnM9dHJ1ZTtpZihhbGxDYW1wYWlnbnNbaV1bMV0udG9Mb3dlckNhc2UoKT09J2dvb2dsZScmJmFsbENhbXBhaWduc1tpXVsyXS50b0xvd2VyQ2FzZSgpPT0nb3JnYW5pcXVlJyloYXNHb29nbGVPcmdhbmljPXRydWU7fQppZihzb3VyY2VVUkw9PSIiJiZjYW1wYWlnblVSTD09IiImJnNvdXJjZT09IiImJmNhbXBhaWduPT0iIiYmaGFzR29vZ2xlT3JnYW5pYyl7c291cmNlVVJMPSJHb29nbGUiO2NhbXBhaWduVVJMPSJPcmdhbmlxdWUiO3VybEluQ2FtcGFpZ25zPXRydWU7fQppZihjb29raWVJbkNhbXBhaWducz09ZmFsc2UmJnVybEluQ2FtcGFpZ25zPT10cnVlKXtzb3VyY2U9c291cmNlVVJMO2NhbXBhaWduPWNhbXBhaWduVVJMO3NvdXJjZUNvb2tpZT1zb3VyY2VVUkw7Y2FtcGFpZ25Db29raWU9Y2FtcGFpZ25VUkw7fQppZihzb3VyY2VDb29raWUudG9Mb3dlckNhc2UoKT09J3NlbScmJnNvdXJjZVVSTC50b0xvd2VyQ2FzZSgpPT0nZ29vZ2xlJyYmdXJsSW5DYW1wYWlnbnMpe3NvdXJjZT1zb3VyY2VVUkw7Y2FtcGFpZ249Y2FtcGFpZ25VUkw7fQp2YXIgY3VycmVudFNpdGVJRD0yNTE7aWYoKGN1cnJlbnRTaXRlSUQ9PTU5Mnx8Y3VycmVudFNpdGVJRD09NDM3fHxjdXJyZW50U2l0ZUlEPT01Nzl8fGN1cnJlbnRTaXRlSUQ9PTU4NSkmJnNvdXJjZUNvb2tpZS50b0xvd2VyQ2FzZSgpPT0nc2VtJyl7c291cmNlQ29va2llPSdHb29nbGUnO3NvdXJjZT0nR29vZ2xlJztjYW1wYWlnbkNvb2tpZT0nTmV1Zic7Y2FtcGFpZ249J05ldWYnO30KaWYoY2FtcGFpZ25Db29raWUudG9Mb3dlckNhc2UoKT09J29yZ2FuaWMnfHxjYW1wYWlnbkNvb2tpZS50b0xvd2VyQ2FzZSgpPT0nb3JnYW5pcXVlJyl7c291cmNlQ29va2llPScnO2NhbXBhaWduQ29va2llPScnO21lZGl1bUNvb2tpZT0nJzt9CmlmKHNvdXJjZS5sZW5ndGg+MCYmKHNvdXJjZUNvb2tpZS5sZW5ndGg9PTB8fHNvdXJjZUNvb2tpZT09c291cmNlKSlzZXRDb29raWUoJ3V0bV9zb3VyY2UnLHNvdXJjZSwxODApO2lmKGNhbXBhaWduLmxlbmd0aD4wJiYoY2FtcGFpZ25Db29raWUubGVuZ3RoPT0wfHxjYW1wYWlnbkNvb2tpZT09Y2FtcGFpZ24pKXNldENvb2tpZSgndXRtX2NhbXBhaWduJyxjYW1wYWlnbiwxODApO2lmKG1lZGl1bS5sZW5ndGg+MCYmKG1lZGl1bUNvb2tpZS5sZW5ndGg9PTB8fG1lZGl1bUNvb2tpZT09bWVkaXVtKSlzZXRDb29raWUoJ3V0bV9tZWRpdW0nLG1lZGl1bSwxODApO3ZhciBrZXl3b3JkPShnZXRDb29raWUoJ3V0bV9rZXl3b3JkJykhPW51bGwmJnR5cGVvZiBnZXRDb29raWUoJ3V0bV9rZXl3b3JkJykhPSd1bmRlZmluZWQnP2dldENvb2tpZSgndXRtX2tleXdvcmQnKTonJyk7aWYoImt3ImluIHVybFZhcnMpe2tleXdvcmQ9ZGVjb2RlU3RyaW5nKHVybFZhcnNbJ2t3J10sMyk7fQppZihrZXl3b3JkLmxlbmd0aD4wKXNldENvb2tpZSgndXRtX2tleXdvcmQnLGtleXdvcmQsMTgwKTt2YXIgaXNSZXRhcmdldGluZz1mYWxzZTtmb3IodmFyIGk9MDtpPHJldGFyZ2V0aW5nQ2FtcGFpZ25zLmxlbmd0aDtpKyspe2lmKHJldGFyZ2V0aW5nQ2FtcGFpZ25zW2ldWzFdLnRvTG93ZXJDYXNlKCk9PXNvdXJjZVVSTC50b0xvd2VyQ2FzZSgpJiZyZXRhcmdldGluZ0NhbXBhaWduc1tpXVsyXS50b0xvd2VyQ2FzZSgpPT1jYW1wYWlnblVSTC50b0xvd2VyQ2FzZSgpKWlzUmV0YXJnZXRpbmc9dHJ1ZTt9CmlmKGlzUmV0YXJnZXRpbmcpe3ZhciBzb3VyY2VSZXRhcmdldGluZz0oZ2V0Q29va2llKCd1dG1fc291cmNlX3JldGFyZ2V0aW5nJykhPW51bGwmJnR5cGVvZiBnZXRDb29raWUoJ3V0bV9zb3VyY2VfcmV0YXJnZXRpbmcnKSE9J3VuZGVmaW5lZCc\/Z2V0Q29va2llKCd1dG1fc291cmNlX3JldGFyZ2V0aW5nJyk6JycpO3ZhciBjYW1wYWlnblJldGFyZ2V0aW5nPShnZXRDb29raWUoJ3V0bV9jYW1wYWlnbl9yZXRhcmdldGluZycpIT1udWxsJiZ0eXBlb2YgZ2V0Q29va2llKCd1dG1fY2FtcGFpZ25fcmV0YXJnZXRpbmcnKSE9J3VuZGVmaW5lZCc\/Z2V0Q29va2llKCd1dG1fY2FtcGFpZ25fcmV0YXJnZXRpbmcnKTonJyk7aWYoc291cmNlIT1zb3VyY2VVUkx8fGNhbXBhaWduIT1jYW1wYWlnblVSTCl7aWYoc291cmNlVVJMLmxlbmd0aD4wJiZzb3VyY2VSZXRhcmdldGluZy5sZW5ndGg9PTApc2V0Q29va2llKCd1dG1fc291cmNlX3JldGFyZ2V0aW5nJyxzb3VyY2VVUkwsMTgwKTtpZihjYW1wYWlnblVSTC5sZW5ndGg+MCYmY2FtcGFpZ25SZXRhcmdldGluZy5sZW5ndGg9PTApc2V0Q29va2llKCd1dG1fY2FtcGFpZ25fcmV0YXJnZXRpbmcnLGNhbXBhaWduVVJMLDE4MCk7fQpzZXRDb29raWUoJ3V0bV9zb3VyY2UnLHNvdXJjZVVSTCwxODApO3NldENvb2tpZSgndXRtX2NhbXBhaWduJyxjYW1wYWlnblVSTCwxODApO30KdmFyIHNvdXJjZVJldGFyZ2V0aW5nPShnZXRDb29raWUoJ3V0bV9zb3VyY2VfcmV0YXJnZXRpbmcnKSE9bnVsbCYmdHlwZW9mIGdldENvb2tpZSgndXRtX3NvdXJjZV9yZXRhcmdldGluZycpIT0ndW5kZWZpbmVkJz9nZXRDb29raWUoJ3V0bV9zb3VyY2VfcmV0YXJnZXRpbmcnKTonJyk7dmFyIGNhbXBhaWduUmV0YXJnZXRpbmc9KGdldENvb2tpZSgndXRtX2NhbXBhaWduX3JldGFyZ2V0aW5nJykhPW51bGwmJnR5cGVvZiBnZXRDb29raWUoJ3V0bV9jYW1wYWlnbl9yZXRhcmdldGluZycpIT0ndW5kZWZpbmVkJz9nZXRDb29raWUoJ3V0bV9jYW1wYWlnbl9yZXRhcmdldGluZycpOicnKTtpZihzb3VyY2VSZXRhcmdldGluZy5sZW5ndGg+MClzZXRDb29raWUoJ3V0bV9zb3VyY2VfcmV0YXJnZXRpbmcnLHNvdXJjZVJldGFyZ2V0aW5nLDE4MCk7aWYoY2FtcGFpZ25SZXRhcmdldGluZy5sZW5ndGg+MClzZXRDb29raWUoJ3V0bV9jYW1wYWlnbl9yZXRhcmdldGluZycsY2FtcGFpZ25SZXRhcmdldGluZywxODApO2lmKCFzb3VyY2Upe2lmKHJhd1JlZmVycmVyIT0nJyl7dmFyIHNlbGZIb3N0PShkb2N1bWVudC5sb2NhdGlvbi5ocmVmKS5tYXRjaCgvXltBLXpdKzpcL1wvKFteXC9dKylcLz8uKi8pO2lmKHNlbGZIb3N0KXtzZWxmSG9zdD1zZWxmSG9zdFsxXX0KdmFyIGhvc3Q9KHJhd1JlZmVycmVyLnRvU3RyaW5nKCkpLm1hdGNoKC9eW0Etel0rOlwvXC8oW15cL10rKVwvPy4qLyk7aWYoaG9zdCl7aG9zdD1ob3N0WzFdfWVsc2V7aG9zdD1zZWxmSG9zdDt9CmlmKGhvc3QhPXNlbGZIb3N0KXtob3N0PWhvc3Quc3BsaXQoJy4nKTtpZihob3N0Lmxlbmd0aD4yKXtzb3VyY2U9aG9zdFsxXTt9CmlmKGhvc3QubGVuZ3RoPT0yKXtzb3VyY2U9aG9zdFswXTt9CmlmKHNvdXJjZSlzZXRDb29raWUoJ3V0bV9zb3VyY2UnLHNvdXJjZSwxODApO2lmKCFjYW1wYWlnbil7Y2FtcGFpZ249J29yZ2FuaWMnO3NldENvb2tpZSgndXRtX2NhbXBhaWduJyxjYW1wYWlnbiwxODApO319fX0KaWYoc291cmNlLmxlbmd0aD09MClzb3VyY2U9IjAiO2lmKGNhbXBhaWduLmxlbmd0aD09MCljYW1wYWlnbj0iMCI7aWYoc291cmNlUmV0YXJnZXRpbmcubGVuZ3RoPT0wKXNvdXJjZVJldGFyZ2V0aW5nPSIwIjtpZihjYW1wYWlnblJldGFyZ2V0aW5nLmxlbmd0aD09MCljYW1wYWlnblJldGFyZ2V0aW5nPSIwIjtpZih1cmxWYXJzWyJEaXNwbGF5U291cmNlIl0hPXVuZGVmaW5lZCl7aWYoZ2V0Q29va2llKCdEaXNwbGF5U291cmNlJyk9PW51bGx8fHR5cGVvZiBnZXRDb29raWUoJ0Rpc3BsYXlTb3VyY2UnKT09J3VuZGVmaW5lZCcpe2lmKHVybFZhcnNbInV0bV9jYW1wYWlnbiJdIT11bmRlZmluZWQmJihnZXRDb29raWUoJ0Rpc3BsYXlTb3VyY2VVVE1DYW1wYWlnbicpPT1udWxsfHx0eXBlb2YgZ2V0Q29va2llKCdEaXNwbGF5U291cmNlVVRNQ2FtcGFpZ24nKT09J3VuZGVmaW5lZCcpKXNldENvb2tpZSgnRGlzcGxheVNvdXJjZVVUTUNhbXBhaWduJyx1cmxWYXJzWyJ1dG1fY2FtcGFpZ24iXSwxODApO2lmKHVybFZhcnNbInV0bV9zb3VyY2UiXSE9dW5kZWZpbmVkJiYoZ2V0Q29va2llKCdEaXNwbGF5U291cmNlVVRNU291cmNlJyk9PW51bGx8fHR5cGVvZiBnZXRDb29raWUoJ0Rpc3BsYXlTb3VyY2VVVE1Tb3VyY2UnKT09J3VuZGVmaW5lZCcpKXNldENvb2tpZSgnRGlzcGxheVNvdXJjZVVUTVNvdXJjZScsdXJsVmFyc1sidXRtX3NvdXJjZSJdLDE4MCk7fQpzZXRDb29raWUoJ0Rpc3BsYXlTb3VyY2UnLHVybFZhcnNbIkRpc3BsYXlTb3VyY2UiXSwxODApO30KdmFyIHNldEdjbGlkQ29va2llPXRydWU7aWYodXJsVmFyc1sidXRtX3NvdXJjZSJdIT11bmRlZmluZWQpe2lmKHVybFZhcnNbInV0bV9zb3VyY2UiXT09J1NFTSd8fHVybFZhcnNbInV0bV9zb3VyY2UiXT09J1RyYWRlcid8fHVybFZhcnNbInV0bV9zb3VyY2UiXT09J0dvb2dsZS1uZXJkbWFya2V0aW5nJyl7c2V0R2NsaWRDb29raWU9ZmFsc2U7fX0KaWYodXJsVmFyc1siZ2NsaWQiXSE9dW5kZWZpbmVkJiZzZXRHY2xpZENvb2tpZSl7c2V0Q29va2llKCdnY2xpZCcsdXJsVmFyc1siZ2NsaWQiXSwxODApO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixmdW5jdGlvbihldmVudCl7aWYoJ3VuZGVmaW5lZCchPXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZyl7c2F2ZUdDTElEPWZ1bmN0aW9uKCl7aWYoJ3VuZGVmaW5lZCc9PXR5cGVvZiB3aW5kb3cualF1ZXJ5KXtyZXR1cm47fQokLnBvc3QoImh0dHBzOi8vcmVzdC5kMmNtZWRpYS5jYS9nY2xpZC5yZXN0LmFwaS5waHAiLHtzZXNzaW9uaWQ6YWN0aXZlVXNlclByb2ZpbGVNbmcuc2Vzc2lvbmlkLGdjbGlkOnVybFZhcnNbJ2djbGlkJ119KTt9O3RyeXthY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlclNlc3Npb25DYWxsYmFjayhzYXZlR0NMSUQpO31jYXRjaChlcnJvcil7Y29uc29sZS5sb2coZXJyb3IpO319fSk7fQp3aW5kb3cuYWN0aXZlUGFnZT1wYWdlO3ZhciB1aWQ9KGdldENvb2tpZSgndWlkJykhPW51bGwmJnR5cGVvZiBnZXRDb29raWUoJ3VpZCcpIT0ndW5kZWZpbmVkJz9nZXRDb29raWUoJ3VpZCcpOmdlbmVyYXRlR1VJRCgpKTtzZXRDb29raWUoJ3VpZCcsdWlkLDE4MCk7dmFyIGRlYWxlcmlkPTE4MDg7dmFyIHNpdGVpZD0yNTE7d2luZG93LmFjdGl2ZVNpdGVJRD1zaXRlaWQ7d2luZG93LmFjdGl2ZURlYWxlcklEPWRlYWxlcmlkO3ZhciBjYXJpZD0nJztpZihjYXJpZC5sZW5ndGg9PTApY2FyaWQ9IjAiO2Z1bmN0aW9uIHRhZ0J1aWxkKGludGVybmFscyl7cmV0dXJuJzwnKyhpbnRlcm5hbHMuam9pbignICcpKSsnIC8+Jzt9CnZhciBjYWNoZUNsZWFyZXI9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjk5OTk5OTkpO3ZhciBhZGRUa0ltZz1mdW5jdGlvbihzcmMpe3N3aXRjaChkb2N1bWVudC5yZWFkeVN0YXRlKXtjYXNlImxvYWRpbmciOmRvY3VtZW50LndyaXRlKHRhZ0J1aWxkKFsnaW1nJywnc3R5bGU9IndpZHRoOjFweDtoZWlnaHQ6MXB4O3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MHB4O3RvcDowcHg7IicsJ3NyYz0iJytzcmMrJyInLCdhbHQ9IiInXSkpO2JyZWFrO2Nhc2UiaW50ZXJhY3RpdmUiOmNhc2UiY29tcGxldGUiOmRlZmF1bHQ6dHJ5e3ZhciBpbWc9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7aW1nLnN0eWxlLmNzc1RleHQ9J3dpZHRoOjFweDtoZWlnaHQ6MXB4O3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MHB4O3RvcDowcHg7JztpbWcuc2V0QXR0cmlidXRlKCdzcmMnLHNyYyk7aW1nLnNldEF0dHJpYnV0ZSgnYWx0JywnVHJhY2tpbmcgcGl4ZWwnKTtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGltZyk7fWNhdGNoKGV4KXtpZihjb25zb2xlJiZjb25zb2xlLmxvZyljb25zb2xlLmxvZygiRXJyb3IgdGt3aWRnZXQ6ICIrZXgubWVzc2FnZSk7fQpicmVhazt9fTtjYW1wYWlnbj1jYW1wYWlnbi5yZXBsYWNlKC9cdC9nLCcnKS5yZXBsYWNlKC9cbi9nLCcnKS5yZXBsYWNlKC9cci9nLCcnKS5yZXBsYWNlKCclMEEnLCcnKS5yZXBsYWNlKCclMDknLCcnKS5yZXBsYWNlKCclMEInLCcnKS5yZXBsYWNlKCclMDAnLCcnKS5yZXBsYWNlKCclMEQnLCcnKTtzb3VyY2U9c291cmNlLnJlcGxhY2UoL1x0L2csJycpLnJlcGxhY2UoL1xuL2csJycpLnJlcGxhY2UoL1xyL2csJycpLnJlcGxhY2UoJyUwQScsJycpLnJlcGxhY2UoJyUwOScsJycpLnJlcGxhY2UoJyUwQicsJycpLnJlcGxhY2UoJyUwMCcsJycpLnJlcGxhY2UoJyUwRCcsJycpO3ZhciB0a3NyYz0nL3Byb3h5X3NhdWIvd2Vic2l0ZUhpdHMvJysKZGVhbGVyaWQrIi8iK3NpdGVpZCsiLyIrY2FyaWQrIi8iK2VzY2FwZSh1aWQpKyIvIitwYWdlKyIvIitlc2NhcGUoc291cmNlKSsiLyIrZXNjYXBlKGNhbXBhaWduKSsiLyIrZXNjYXBlKG1ha2UpKyIvIitlc2NhcGUobW9kZWwpKyIvIit5ZWFyKyIvIisKaXNtb2JpbGUrIi8iK2VuY29kZVVSSUNvbXBvbmVudChyZWZlcmVyKSsiLyIrZXNjYXBlKGl0ZW1UeXBlKSsiLyIrZXNjYXBlKHNvdXJjZVJldGFyZ2V0aW5nKSsiLyIrZXNjYXBlKGNhbXBhaWduUmV0YXJnZXRpbmcpKyIvIitjYWNoZUNsZWFyZXIrJy5naWYnO2lmKHR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZz09J3VuZGVmaW5lZCd8fCFhY3RpdmVVc2VyUHJvZmlsZU1uZy5faXNCb3QoKSlhZGRUa0ltZyh0a3NyYyk7dmFyIGtleXdvcmRzPSIiO2lmKCJwImluIHJlZmVyZXJWYXJzJiZyZWZlcmVyLmluZGV4T2YoInlhaG9vIik+LTEpe2tleXdvcmRzPXJlZmVyZXJWYXJzWydwJ107fQppZigicSJpbiByZWZlcmVyVmFycyYmKHJlZmVyZXIuaW5kZXhPZigiZ29vZ2xlIik+LTF8fHJlZmVyZXIuaW5kZXhPZigiYmluZyIpPi0xKSl7a2V5d29yZHM9cmVmZXJlclZhcnNbJ3EnXTt9CnZhciB1TGFuZz0oZ2V0Q29va2llKCdsYW5nJyk9PSdlbicpPydlbic6J2ZyJzt3aW5kb3cuZmJDaGF0UmVmPXtyOidzaXRlJyxjOmNhbXBhaWduLHM6c291cmNlfTt2YXIgY3VzdG9tX3ZhcmlhYmxlcz1be25hbWU6J2xhbmd1YWdlJyx2YWx1ZTp1TGFuZ30se25hbWU6J3V0bV9jYW1wYWlnbicsdmFsdWU6Y2FtcGFpZ259LHtuYW1lOid1dG1fc291cmNlJyx2YWx1ZTpzb3VyY2V9LHtuYW1lOidwYWdlJyx2YWx1ZTpwYWdlfSx7bmFtZTondWlkJyx2YWx1ZTp1aWR9LHtuYW1lOidjYXJpZCcsdmFsdWU6Y2FyaWR9LHtuYW1lOidtYWtlJyx2YWx1ZTptYWtlfSx7bmFtZTonbW9kZWwnLHZhbHVlOm1vZGVsfSx7bmFtZToneWVhcicsdmFsdWU6eWVhcn0se25hbWU6J2lzTW9iaWxlU2l0ZScsdmFsdWU6aXNtb2JpbGV9XTt3aW5kb3cuY1ZhcmlhYmxlcz1jdXN0b21fdmFyaWFibGVzO3dpbmRvdy5yZWxhbmNlSGFuZGxlckZuYz1mdW5jdGlvbigpe3ZhciByZWxhbmNlSUQ9KGdldENvb2tpZSgncmVsYW5jZUlEJykhPW51bGwmJnR5cGVvZiBnZXRDb29raWUoJ3JlbGFuY2VJRCcpIT0ndW5kZWZpbmVkJz9nZXRDb29raWUoJ3JlbGFuY2VJRCcpOjApO2lmKHR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZyE9J3VuZGVmaW5lZCcmJnR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50IT0ndW5kZWZpbmVkJyl7YWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudChyZWxhbmNlSUQsJ3JlbGFuY2VJRCcpO2lmKHVybFZhcnNbIkRpc3BsYXlTb3VyY2UiXSE9dW5kZWZpbmVkKXthY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50KHVybFZhcnNbIkRpc3BsYXlTb3VyY2UiXSwnZGlzcGxheVNvdXJjZScpO2lmKHVybFZhcnNbInV0bV9jYW1wYWlnbiJdIT11bmRlZmluZWQpYWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudCh1cmxWYXJzWyJ1dG1fY2FtcGFpZ24iXSwndXRtX2NhbXBhaWduJyk7aWYodXJsVmFyc1sidXRtX3NvdXJjZSJdIT11bmRlZmluZWQpYWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudCh1cmxWYXJzWyJ1dG1fc291cmNlIl0sJ3V0bV9zb3VyY2UnKTt9fQplbHNlCnNldFRpbWVvdXQod2luZG93LnJlbGFuY2VIYW5kbGVyRm5jLDEwMDApO307dmFyIGluaXRGPWZ1bmN0aW9uKCl7aW5pdExDSShjdXN0b21fdmFyaWFibGVzKTt3aW5kb3cucmVsYW5jZUhhbmRsZXJGbmMoKTt9O2lmKHdpbmRvdy5hdHRhY2hFdmVudCl3aW5kb3cuYXR0YWNoRXZlbnQoJ29ubG9hZCcsaW5pdEYpO2Vsc2Ugd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLGluaXRGLGZhbHNlKTt2YXIgYWljdXJyZW50cGFnZT0nbmV3Y2Fycy5odG1sJztpZihBSUN1cnJlbnRDb25maWdJRD4wJiZ0eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmchPSd1bmRlZmluZWQnKXthY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50KEFJQ3VycmVudENvbmZpZ0lELCdBSUNvbmZpZycpO30KaWYoQUlJRFBlck5ld0NhcnNGcmVuY2gubGVuZ3RoPjAmJmFpY3VycmVudHBhZ2U9PSduZXdjYXJkZXRhaWwuaHRtbCcmJmdldENvb2tpZSgnbGFzdG5ld3ZlaGljbGUnKSE9bnVsbCl7dmFyIGxhc3RuZXd2ZWhpY2xlPWdldENvb2tpZSgnbGFzdG5ld3ZlaGljbGUnKTt2YXIgbGFzdG5ld3ZlaGljbGVzcGxpdD1sYXN0bmV3dmVoaWNsZS5zcGxpdCgnfHx8Jyk7dmFyIGFpbmV3Y2FyaWQ9MDtpZih0eXBlb2YgQUlJRFBlck5ld0NhcnNGcmVuY2hbbGFzdG5ld3ZlaGljbGVzcGxpdFswXStsYXN0bmV3dmVoaWNsZXNwbGl0WzFdK2xhc3RuZXd2ZWhpY2xlc3BsaXRbMl1dIT09J3VuZGVmaW5lZCcpYWluZXdjYXJpZD1BSUlEUGVyTmV3Q2Fyc0ZyZW5jaFtsYXN0bmV3dmVoaWNsZXNwbGl0WzBdK2xhc3RuZXd2ZWhpY2xlc3BsaXRbMV0rbGFzdG5ld3ZlaGljbGVzcGxpdFsyXV07aWYodHlwZW9mIEFJSURQZXJOZXdDYXJzRW5nbGlzaFtsYXN0bmV3dmVoaWNsZXNwbGl0WzBdK2xhc3RuZXd2ZWhpY2xlc3BsaXRbMV0rbGFzdG5ld3ZlaGljbGVzcGxpdFsyXV0hPT0ndW5kZWZpbmVkJylhaW5ld2NhcmlkPUFJSURQZXJOZXdDYXJzRW5nbGlzaFtsYXN0bmV3dmVoaWNsZXNwbGl0WzBdK2xhc3RuZXd2ZWhpY2xlc3BsaXRbMV0rbGFzdG5ld3ZlaGljbGVzcGxpdFsyXV07aWYoYWluZXdjYXJpZD4wJiZ0eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmchPSd1bmRlZmluZWQnKXthY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50KGFpbmV3Y2FyaWQsJ0FJQ29uZmlnTmV3Q2FyJyk7fX19CnNldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgZm49ZnVuY3Rpb24oKXtpZih0eXBlb2YgalF1ZXJ5IT0ndW5kZWZpbmVkJyl7cmV0dXJuIGpRdWVyeS5yZWFkeSgpO30Kc2V0VGltZW91dChmbiwxMDApO30KZm4oKTt9LDEwMDApOwovKl1dPiovCgoJLyo8IVtDREFUQVsqLwoJdmFyIHBhcmFtcyA9IGdldFVybFZhcnMoKTsKCS8vc2V0IHBhcmFtIHZhbHVlIGludG8gc2Vzc2lvbiBzdG9yYWdlCglpZiAodHlwZW9mIHNlc3Npb25TdG9yYWdlICE9PSAndW5kZWZpbmVkJykgewoKCQlpZihwYXJhbXMuaGFzT3duUHJvcGVydHkoJ2gnKSl7CgkJCXNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2gnLHBhcmFtcy5oKTsKCQl9CgoJCWlmKHBhcmFtcy5oYXNPd25Qcm9wZXJ0eSgnbScpKXsKCQkJc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnbScscGFyYW1zLm0pOwoJCX0KCgkJdmFyIGggPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdoJyk7CgkJdmFyIG0gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdtJyk7CgoJCS8vcmVhZCBzZXNzaW9uIGFuZCByZW1vdmUgaGVhZGVyICYgbWVudSBpZiBvcHRpb25zIGhhdmUgYmVlbiBzZXQKCQlpZihoID09PSAnbm8nKXsKCQkJLy9zdHVmZiB0byByZW1vdmUgdGhhdCBpcyBjb25zaWRlcmVkIHBhcnQgb2YgdGhlIGhlYWRlcgoJCQl2YXIgaGVhZGVycyA9IFsKCQkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5oZWFkZXItaW5mbycpLAoJCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmhlYWRlci1mb290ZXInKSwKCQkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5sYW5ndWFnZUJhcicpLAoJCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmhlYWRlci1sb2dvJyksCgkJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcubW9iaWxlLWhlYWRlciA+ICo6bm90KC5idXJnZXItbWVudS1jb250YWluZXIpJykKCQkJXTsKCgkJCWZvcih2YXIgZWxlbSBvZiBoZWFkZXJzKXsKCQkJCS8vcmVtb3ZlIG5vZGUgbGlzdCBxdWVyaWVzCgkJCQlpZiAoTm9kZUxpc3QucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoZWxlbSkpIHsKCQkJCQlmb3IodmFyIF9lbGVtIG9mIGVsZW0pewoJCQkJCQlpZiAoX2VsZW0gIT09IG51bGwpIHsKCQkJCQkJCV9lbGVtLnJlbW92ZSgpOwoJCQkJCQl9CgkJCQkJfQoJCQkJfQoJCQkJZWxzZSBpZiAoZWxlbSAhPT0gbnVsbCl7CgkJCQkJZWxlbS5yZW1vdmUoKTsKCQkJCX0KCQkJfQoJCX0KCgkJLy9tZW51CgkJaWYobSA9PT0gJ25vJyl7CgkJCXZhciBtZW51cyA9IFsKCQkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5oZWFkZXItbWVudScpLAoJCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmJ1cmdlci1tZW51LWNvbnRhaW5lcicpLAoJCQldOwoJCQlmb3IodmFyIGVsZW0gb2YgbWVudXMpewoJCQkJaWYoZWxlbSAhPT0gbnVsbCl7CgkJCQkJZWxlbS5yZW1vdmUoKTsKCQkJCX0KCQkJfQoJCX0KCgkJLy9zaW5jZSBubyBoZWFkZXIgb3IgbWVudSwgcmVtb3ZlIGV2ZXJ5dGhpbmcKCQlpZiAobSA9PT0gJ25vJyAmJiBoID09PSAnbm8nKSB7CgkJCXZhciBoZWFkZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcubW9iaWxlLWhlYWRlcicpOwoJCQlpZihoZWFkZXIgIT09IG51bGwpewoJCQkJaGVhZGVyLnJlbW92ZSgpOwoJCQl9CgkJfQoKCX0KCS8qXV0+Ki8KCgkJKGZ1bmN0aW9uKCl7CgkJCWZ1bmN0aW9uIGluaXQoKXsKCQkJCWlmKCB0eXBlb2YgUGFnZUJhbm5lciA9PT0gJ2Z1bmN0aW9uJyApIHsKCQkJCQl3aW5kb3cucGFnZUJhbm5lciA9IG5ldyBQYWdlQmFubmVyKHsiYmFubmVycyI6eyJzdGF0aWNiYW5uZXJzIjp7IjUwMCI6eyJpIjoiXC9pbWFnZXNcL05ld0NhclBhZ2VJbWFnZUR5blwvTUJBTl9IWVVOREFJIF9FTEFOVFJBX0ZSIF8xMjUwLmpwZyIsInUiOiIiLCJ0Ijo2MDAwfSwiNTAxIjp7ImkiOiJcL2ltYWdlc1wvTmV3Q2FyUGFnZUltYWdlRHluXC9NQkFOX0hZVU5EQUkgX0lPTklRNV9GUl8xMjUwLmpwZyIsInUiOiIiLCJ0Ijo2MDAwfSwiNTAyIjp7ImkiOiJcL2ltYWdlc1wvTmV3Q2FyUGFnZUltYWdlRHluXC9NQkFOX0hZVU5EQUkgX0lPTklRNl9GUl8xMjUwLmpwZyIsInUiOiIiLCJ0Ijo2MDAwfSwiNTAzIjp7ImkiOiJcL2ltYWdlc1wvTmV3Q2FyUGFnZUltYWdlRHluXC9NQkFOX0hZVU5EQUkgX0tPTkEgRVZfRlJfMTI1MC5qcGciLCJ1IjoiIiwidCI6NjAwMH0sIjUwNCI6eyJpIjoiXC9pbWFnZXNcL05ld0NhclBhZ2VJbWFnZUR5blwvTUJBTl9IWVVOREFJIF9LT05BX0ZSXzEyNTAuanBnIiwidSI6IiIsInQiOjYwMDB9LCI1MDUiOnsiaSI6IlwvaW1hZ2VzXC9OZXdDYXJQYWdlSW1hZ2VEeW5cL01CQU5fSFlVTkRBSSBfVFVDU09OX0ZSXzEyNTAuanBnIiwidSI6IiIsInQiOjYwMDB9fX0sImNvbmZpZyI6eyJjMSI6IjAwMDAwMCIsImMyIjoiZmZmZmZmIiwiYzJfMSI6IjAwMDAwMCIsImMyXzIiOiJmZmZmZmYifX0pOwoJCQkJCXJldHVybjsKCQkJCX0KCQkJCXNldFRpbWVvdXQoIGluaXQsIDMwMDAgKTsKCQkJfQoJCQlpbml0KCk7CgkJfSkoKTsKCQ==","js_rl":"CgkJCQl3aW5kb3cuZ1Rlc3RTcGVlZENvbm49RGF0ZS5ub3coKTsKCQkJCXdpbmRvdy5nUmVzb3VyY2VMb2FkZXJBbmRKcXVlcnlJc1JlYWR5PWZhbHNlOwoJCQkJd2luZG93LmdTa2VsZXRvbklzUmVtb3ZlZD1mYWxzZTsKCQkJCXdpbmRvdy5nRGVsYXllZExvYWRTY3JpcHQ9d2luZG93LmdEZWxheWVkTG9hZFNjcmlwdHx8ZnVuY3Rpb24oYSxkKXtzZXRUaW1lb3V0KCgpPT57dmFyIGU9ITA7Y29uc29sZS5sb2coIkdERUxBWUVETE9BRFNDUklQVDoiK2EsZCk7dmFyIG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7aWYoIm9iamVjdCI9PXR5cGVvZiBkJiZudWxsIT09ZClmb3IodmFyIG8gaW4gZClkLmhhc093blByb3BlcnR5KG8pJiZudWxsIT09ZFtvXSYmKC0xIT09WyJkZWZlciIsImFzeW5jIl0uaW5kZXhPZihvKSYmKGU9ITEpLG5bb109ZFtvXSk7bi5zcmM9YSxlJiYobi5hc3luYz0hMCksZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChuKX0pfTsKCQkJCgkJCQkJLyo8IVtDREFUQVsqLwoJCQkJCXZhciBib3hCbG9ja3MgPSB7ImNhciI6eyJmYnhfY2FyXzEiOnsidmlzaWJsZSI6dHJ1ZSwiaWQiOjEsInBvc2l0aW9uIjoxLCJkcml2ZXRyYWluIjoxLCJmdWVsIjoxLCJwcmljZSI6MjU4NDYsImNvbnNvIjo1LjkwMDAwMDAwMDAwMDAwMDM1NTI3MTM2Nzg4MDA1MDA5MjkzNTU2MjEzMzc4OTA2MjUsImNhckNhdGVnb3J5IjoiY2FyIiwiY2FyTWFrZSI6Imh5dW5kYWkiLCJjYXJNb2RlbCI6IkVsYW50cmEiLCJzcGVjaWFsT3JkZXIiOjB9LCJmYnhfY2FyXzIiOnsidmlzaWJsZSI6dHJ1ZSwiaWQiOjIsInBvc2l0aW9uIjoyLCJkcml2ZXRyYWluIjoxLCJmdWVsIjoxLCJwcmljZSI6MjQ2NDcsImNvbnNvIjo1LjcwMDAwMDAwMDAwMDAwMDE3NzYzNTY4Mzk0MDAyNTA0NjQ2Nzc4MTA2Njg5NDUzMTI1LCJjYXJDYXRlZ29yeSI6ImNhciIsImNhck1ha2UiOiJoeXVuZGFpIiwiY2FyTW9kZWwiOiJFbGFudHJhIiwic3BlY2lhbE9yZGVyIjowfSwiZmJ4X2Nhcl8zIjp7InZpc2libGUiOnRydWUsImlkIjozLCJwb3NpdGlvbiI6MywiZHJpdmV0cmFpbiI6MSwiZnVlbCI6MSwicHJpY2UiOjQzNzk2LCJjb25zbyI6OC4wOTk5OTk5OTk5OTk5OTk2NDQ3Mjg2MzIxMTk5NDk5MDcwNjQ0Mzc4NjYyMTA5Mzc1LCJjYXJDYXRlZ29yeSI6ImNhciIsImNhck1ha2UiOiJoeXVuZGFpIiwiY2FyTW9kZWwiOiJFbGFudHJhIE4iLCJzcGVjaWFsT3JkZXIiOjB9LCJmYnhfY2FyXzQiOnsidmlzaWJsZSI6dHJ1ZSwiaWQiOjQsInBvc2l0aW9uIjo0LCJkcml2ZXRyYWluIjoxLCJmdWVsIjoxLCJwcmljZSI6NDIyNDcsImNvbnNvIjo4LjA5OTk5OTk5OTk5OTk5OTY0NDcyODYzMjExOTk0OTkwNzA2NDQzNzg2NjIxMDkzNzUsImNhckNhdGVnb3J5IjoiY2FyIiwiY2FyTWFrZSI6Imh5dW5kYWkiLCJjYXJNb2RlbCI6IkVsYW50cmEgTiIsInNwZWNpYWxPcmRlciI6MH0sImZieF9jYXJfNSI6eyJ2aXNpYmxlIjp0cnVlLCJpZCI6NSwicG9zaXRpb24iOjUsImRyaXZldHJhaW4iOjEsImZ1ZWwiOjEsInByaWNlIjozOTAyMSwiY29uc28iOjcsImNhckNhdGVnb3J5IjoiY2FyIiwiY2FyTWFrZSI6Imh5dW5kYWkiLCJjYXJNb2RlbCI6IlNvbmF0YSIsInNwZWNpYWxPcmRlciI6MH0sImZieF9jYXJfNiI6eyJ2aXNpYmxlIjp0cnVlLCJpZCI6NiwicG9zaXRpb24iOjYsImRyaXZldHJhaW4iOjEsImZ1ZWwiOjEsInByaWNlIjozNTIyMiwiY29uc28iOjYuNSwiY2FyQ2F0ZWdvcnkiOiJjYXIiLCJjYXJNYWtlIjoiaHl1bmRhaSIsImNhck1vZGVsIjoiU29uYXRhIiwic3BlY2lhbE9yZGVyIjowfX0sImh5YnJpZCI6eyJmYnhfaHlicmlkXzEiOnsidmlzaWJsZSI6dHJ1ZSwiaWQiOjEsInBvc2l0aW9uIjoxLCJkcml2ZXRyYWluIjoxLCJmdWVsIjo4LCJwcmljZSI6MzQzNDYsImNvbnNvIjo0LjUsImNhckNhdGVnb3J5IjoiY2FyIiwiY2FyTWFrZSI6Imh5dW5kYWkiLCJjYXJNb2RlbCI6IkVsYW50cmEgSHlicmlkIiwic3BlY2lhbE9yZGVyIjowfSwiZmJ4X2h5YnJpZF8yIjp7InZpc2libGUiOnRydWUsImlkIjoyLCJwb3NpdGlvbiI6MiwiZHJpdmV0cmFpbiI6MSwiZnVlbCI6OCwicHJpY2UiOjMzOTQ2LCJjb25zbyI6NC41LCJjYXJDYXRlZ29yeSI6ImNhciIsImNhck1ha2UiOiJoeXVuZGFpIiwiY2FyTW9kZWwiOiJFbGFudHJhIEh5YnJpZCIsInNwZWNpYWxPcmRlciI6MH0sImZieF9oeWJyaWRfMyI6eyJ2aXNpYmxlIjp0cnVlLCJpZCI6MywicG9zaXRpb24iOjMsImRyaXZldHJhaW4iOjEsImZ1ZWwiOjgsInByaWNlIjo2MzU0NiwiY29uc28iOjcuOTAwMDAwMDAwMDAwMDAwMzU1MjcxMzY3ODgwMDUwMDkyOTM1NTYyMTMzNzg5MDYyNSwiY2FyQ2F0ZWdvcnkiOiJzdXYiLCJjYXJNYWtlIjoiaHl1bmRhaSIsImNhck1vZGVsIjoiUGFsaXNhZGUgSHlicmlkIiwic3BlY2lhbE9yZGVyIjowfSwiZmJ4X2h5YnJpZF80Ijp7InZpc2libGUiOnRydWUsImlkIjo0LCJwb3NpdGlvbiI6NCwiZHJpdmV0cmFpbiI6MSwiZnVlbCI6OCwicHJpY2UiOjQ2ODQ2LCJjb25zbyI6NywiY2FyQ2F0ZWdvcnkiOiJzdXYiLCJjYXJNYWtlIjoiaHl1bmRhaSIsImNhck1vZGVsIjoiU2FudGEgRmUgSHlicmlkIiwic3BlY2lhbE9yZGVyIjowfSwiZmJ4X2h5YnJpZF81Ijp7InZpc2libGUiOnRydWUsImlkIjo1LCJwb3NpdGlvbiI6NSwiZHJpdmV0cmFpbiI6MSwiZnVlbCI6OCwicHJpY2UiOjQ1NTQ2LCJjb25zbyI6Ni45MDAwMDAwMDAwMDAwMDAzNTUyNzEzNjc4ODAwNTAwOTI5MzU1NjIxMzM3ODkwNjI1LCJjYXJDYXRlZ29yeSI6InN1diIsImNhck1ha2UiOiJoeXVuZGFpIiwiY2FyTW9kZWwiOiJTYW50YSBGZSBIeWJyaWQiLCJzcGVjaWFsT3JkZXIiOjB9LCJmYnhfaHlicmlkXzYiOnsidmlzaWJsZSI6dHJ1ZSwiaWQiOjYsInBvc2l0aW9uIjo2LCJkcml2ZXRyYWluIjoxLCJmdWVsIjo4LCJwcmljZSI6MzkxMjEsImNvbnNvIjo0LjU5OTk5OTk5OTk5OTk5OTY0NDcyODYzMjExOTk0OTkwNzA2NDQzNzg2NjIxMDkzNzUsImNhckNhdGVnb3J5IjoiY2FyIiwiY2FyTWFrZSI6Imh5dW5kYWkiLCJjYXJNb2RlbCI6IlNvbmF0YSBIeWJyaWQiLCJzcGVjaWFsT3JkZXIiOjB9LCJmYnhfaHlicmlkXzciOnsidmlzaWJsZSI6dHJ1ZSwiaWQiOjcsInBvc2l0aW9uIjo3LCJkcml2ZXRyYWluIjoxLCJmdWVsIjo4LCJwcmljZSI6NDY3OTYsImNvbnNvIjo2LjcwMDAwMDAwMDAwMDAwMDE3NzYzNTY4Mzk0MDAyNTA0NjQ2Nzc4MTA2Njg5NDUzMTI1LCJjYXJDYXRlZ29yeSI6InN1diIsImNhck1ha2UiOiJoeXVuZGFpIiwiY2FyTW9kZWwiOiJUdWNzb24gSHlicmlkIiwic3BlY2lhbE9yZGVyIjowfSwiZmJ4X2h5YnJpZF84Ijp7InZpc2libGUiOnRydWUsImlkIjo4LCJwb3NpdGlvbiI6OCwiZHJpdmV0cmFpbiI6MSwiZnVlbCI6OCwicHJpY2UiOjQ2Mzk2LCJjb25zbyI6Ni43MDAwMDAwMDAwMDAwMDAxNzc2MzU2ODM5NDAwMjUwNDY0Njc3ODEwNjY4OTQ1MzEyNSwiY2FyQ2F0ZWdvcnkiOiJzdXYiLCJjYXJNYWtlIjoiaHl1bmRhaSIsImNhck1vZGVsIjoiVHVjc29uIEh5YnJpZCIsInNwZWNpYWxPcmRlciI6MH19LCJlbGVjdHJpYyI6eyJmYnhfZWxlY3RyaWNfMSI6eyJ2aXNpYmxlIjp0cnVlLCJpZCI6MSwicG9zaXRpb24iOjEsImRyaXZldHJhaW4iOjMsImZ1ZWwiOjQsInByaWNlIjo1ODI5NiwiY29uc28iOjEwMDAsImNhckNhdGVnb3J5Ijoic3V2IiwiY2FyTWFrZSI6Imh5dW5kYWkiLCJjYXJNb2RlbCI6IklPTklRIDUiLCJzcGVjaWFsT3JkZXIiOjB9LCJmYnhfZWxlY3RyaWNfMiI6eyJ2aXNpYmxlIjp0cnVlLCJpZCI6MiwicG9zaXRpb24iOjIsImRyaXZldHJhaW4iOjMsImZ1ZWwiOjQsInByaWNlIjo1NTc5NiwiY29uc28iOjEwMDAsImNhckNhdGVnb3J5Ijoic3V2IiwiY2FyTWFrZSI6Imh5dW5kYWkiLCJjYXJNb2RlbCI6IklPTklRIDUiLCJzcGVjaWFsT3JkZXIiOjB9LCJmYnhfZWxlY3RyaWNfMyI6eyJ2aXNpYmxlIjp0cnVlLCJpZCI6MywicG9zaXRpb24iOjMsImRyaXZldHJhaW4iOjEsImZ1ZWwiOjQsInByaWNlIjo4MDk5NiwiY29uc28iOjEwMDAsImNhckNhdGVnb3J5Ijoic3V2IiwiY2FyTWFrZSI6Imh5dW5kYWkiLCJjYXJNb2RlbCI6IklPTklRIDUgTiIsInNwZWNpYWxPcmRlciI6MH0sImZieF9lbGVjdHJpY180Ijp7InZpc2libGUiOnRydWUsImlkIjo0LCJwb3NpdGlvbiI6NCwiZHJpdmV0cmFpbiI6MywiZnVlbCI6NCwicHJpY2UiOjU3Nzk2LCJjb25zbyI6MTAwMCwiY2FyQ2F0ZWdvcnkiOiJjYXIiLCJjYXJNYWtlIjoiaHl1bmRhaSIsImNhck1vZGVsIjoiSU9OSVEgNiIsInNwZWNpYWxPcmRlciI6MH0sImZieF9lbGVjdHJpY181Ijp7InZpc2libGUiOnRydWUsImlkIjo1LCJwb3NpdGlvbiI6NSwiZHJpdmV0cmFpbiI6MywiZnVlbCI6NCwicHJpY2UiOjYzMDQ2LCJjb25zbyI6MTAwMCwiY2FyQ2F0ZWdvcnkiOiJzdXYiLCJjYXJNYWtlIjoiaHl1bmRhaSIsImNhck1vZGVsIjoiSU9OSVEgOSIsInNwZWNpYWxPcmRlciI6MH0sImZieF9lbGVjdHJpY182Ijp7InZpc2libGUiOnRydWUsImlkIjo2LCJwb3NpdGlvbiI6NiwiZHJpdmV0cmFpbiI6MSwiZnVlbCI6NCwicHJpY2UiOjQ2Nzk2LCJjb25zbyI6MTAwMCwiY2FyQ2F0ZWdvcnkiOiJzdXYiLCJjYXJNYWtlIjoiaHl1bmRhaSIsImNhck1vZGVsIjoiS29uYSBFbGVjdHJpYyIsInNwZWNpYWxPcmRlciI6MH0sImZieF9lbGVjdHJpY183Ijp7InZpc2libGUiOnRydWUsImlkIjo3LCJwb3NpdGlvbiI6NywiZHJpdmV0cmFpbiI6MSwiZnVlbCI6NCwicHJpY2UiOjQ5Mjk2LCJjb25zbyI6MTAwMCwiY2FyQ2F0ZWdvcnkiOiJzdXYiLCJjYXJNYWtlIjoiaHl1bmRhaSIsImNhck1vZGVsIjoiS29uYSBFbGVjdHJpYyIsInNwZWNpYWxPcmRlciI6MH0sImZieF9lbGVjdHJpY184Ijp7InZpc2libGUiOnRydWUsImlkIjo4LCJwb3NpdGlvbiI6OCwiZHJpdmV0cmFpbiI6MSwiZnVlbCI6NCwicHJpY2UiOjc1Mjk3LCJjb25zbyI6MTAwMCwiY2FyQ2F0ZWdvcnkiOiJzdXYiLCJjYXJNYWtlIjoiaHl1bmRhaSIsImNhck1vZGVsIjoiTkVYTyIsInNwZWNpYWxPcmRlciI6MH19LCJzdXYiOnsiZmJ4X3N1dl8xIjp7InZpc2libGUiOnRydWUsImlkIjoxLCJwb3NpdGlvbiI6MSwiZHJpdmV0cmFpbiI6MSwiZnVlbCI6MSwicHJpY2UiOjI5NzQ2LCJjb25zbyI6Ni43MDAwMDAwMDAwMDAwMDAxNzc2MzU2ODM5NDAwMjUwNDY0Njc3ODEwNjY4OTQ1MzEyNSwiY2FyQ2F0ZWdvcnkiOiJzdXYiLCJjYXJNYWtlIjoiaHl1bmRhaSIsImNhck1vZGVsIjoiS29uYSIsInNwZWNpYWxPcmRlciI6MH0sImZieF9zdXZfMiI6eyJ2aXNpYmxlIjp0cnVlLCJpZCI6MiwicG9zaXRpb24iOjIsImRyaXZldHJhaW4iOjEsImZ1ZWwiOjEsInByaWNlIjoyODY0NywiY29uc28iOjYuNzAwMDAwMDAwMDAwMDAwMTc3NjM1NjgzOTQwMDI1MDQ2NDY3NzgxMDY2ODk0NTMxMjUsImNhckNhdGVnb3J5Ijoic3V2IiwiY2FyTWFrZSI6Imh5dW5kYWkiLCJjYXJNb2RlbCI6IktvbmEiLCJzcGVjaWFsT3JkZXIiOjB9LCJmYnhfc3V2XzMiOnsidmlzaWJsZSI6dHJ1ZSwiaWQiOjMsInBvc2l0aW9uIjozLCJkcml2ZXRyYWluIjoxLCJmdWVsIjoxLCJwcmljZSI6NTY3NDYsImNvbnNvIjoxMCwiY2FyQ2F0ZWdvcnkiOiJzdXYiLCJjYXJNYWtlIjoiaHl1bmRhaSIsImNhck1vZGVsIjoiUGFsaXNhZGUiLCJzcGVjaWFsT3JkZXIiOjB9LCJmYnhfc3V2XzQiOnsidmlzaWJsZSI6dHJ1ZSwiaWQiOjQsInBvc2l0aW9uIjo0LCJkcml2ZXRyYWluIjoxLCJmdWVsIjoxLCJwcmljZSI6NTI3NDcsImNvbnNvIjo5LjY5OTk5OTk5OTk5OTk5OTI4OTQ1NzI2NDIzOTg5OTgxNDEyODg3NTczMjQyMTg3NSwiY2FyQ2F0ZWdvcnkiOiJzdXYiLCJjYXJNYWtlIjoiaHl1bmRhaSIsImNhck1vZGVsIjoiUGFsaXNhZGUiLCJzcGVjaWFsT3JkZXIiOjB9LCJmYnhfc3V2XzUiOnsidmlzaWJsZSI6dHJ1ZSwiaWQiOjUsInBvc2l0aW9uIjo1LCJkcml2ZXRyYWluIjoxLCJmdWVsIjoxLCJwcmljZSI6NTAyNDcsImNvbnNvIjo4LjgwMDAwMDAwMDAwMDAwMDcxMDU0MjczNTc2MDEwMDE4NTg3MTEyNDI2NzU3ODEyNSwiY2FyQ2F0ZWdvcnkiOiJzdXYiLCJjYXJNYWtlIjoiaHl1bmRhaSIsImNhck1vZGVsIjoiU2FudGEgRmUiLCJzcGVjaWFsT3JkZXIiOjB9LCJmYnhfc3V2XzYiOnsidmlzaWJsZSI6dHJ1ZSwiaWQiOjYsInBvc2l0aW9uIjo2LCJkcml2ZXRyYWluIjoxLCJmdWVsIjoxLCJwcmljZSI6MzgwOTYsImNvbnNvIjo3LjcwMDAwMDAwMDAwMDAwMDE3NzYzNTY4Mzk0MDAyNTA0NjQ2Nzc4MTA2Njg5NDUzMTI1LCJjYXJDYXRlZ29yeSI6InN1diIsImNhck1ha2UiOiJoeXVuZGFpIiwiY2FyTW9kZWwiOiJUdWNzb24iLCJzcGVjaWFsT3JkZXIiOjB9LCJmYnhfc3V2XzciOnsidmlzaWJsZSI6dHJ1ZSwiaWQiOjcsInBvc2l0aW9uIjo3LCJkcml2ZXRyYWluIjoxLCJmdWVsIjoxLCJwcmljZSI6MzY4OTcsImNvbnNvIjo3LjcwMDAwMDAwMDAwMDAwMDE3NzYzNTY4Mzk0MDAyNTA0NjQ2Nzc4MTA2Njg5NDUzMTI1LCJjYXJDYXRlZ29yeSI6InN1diIsImNhck1ha2UiOiJoeXVuZGFpIiwiY2FyTW9kZWwiOiJUdWNzb24iLCJzcGVjaWFsT3JkZXIiOjB9LCJmYnhfc3V2XzgiOnsidmlzaWJsZSI6dHJ1ZSwiaWQiOjgsInBvc2l0aW9uIjo4LCJkcml2ZXRyYWluIjoxLCJmdWVsIjoxLCJwcmljZSI6MjQ5OTYsImNvbnNvIjo2LjkwMDAwMDAwMDAwMDAwMDM1NTI3MTM2Nzg4MDA1MDA5MjkzNTU2MjEzMzc4OTA2MjUsImNhckNhdGVnb3J5Ijoic3V2IiwiY2FyTWFrZSI6Imh5dW5kYWkiLCJjYXJNb2RlbCI6IlZlbnVlIiwic3BlY2lhbE9yZGVyIjowfSwiZmJ4X3N1dl85Ijp7InZpc2libGUiOnRydWUsImlkIjo5LCJwb3NpdGlvbiI6OSwiZHJpdmV0cmFpbiI6MSwiZnVlbCI6MSwicHJpY2UiOjIzNDk3LCJjb25zbyI6Ni45MDAwMDAwMDAwMDAwMDAzNTUyNzEzNjc4ODAwNTAwOTI5MzU1NjIxMzM3ODkwNjI1LCJjYXJDYXRlZ29yeSI6InN1diIsImNhck1ha2UiOiJoeXVuZGFpIiwiY2FyTW9kZWwiOiJWZW51ZSIsInNwZWNpYWxPcmRlciI6MH19LCJ0cnVjayI6eyJmYnhfdHJ1Y2tfMSI6eyJ2aXNpYmxlIjp0cnVlLCJpZCI6MSwicG9zaXRpb24iOjEsImRyaXZldHJhaW4iOjEsImZ1ZWwiOjEsInByaWNlIjo0NDE5NywiY29uc28iOjguNSwiY2FyQ2F0ZWdvcnkiOiJ0cnVjayIsImNhck1ha2UiOiJoeXVuZGFpIiwiY2FyTW9kZWwiOiJTYW50YSBDcnV6Iiwic3BlY2lhbE9yZGVyIjowfX0sInBoZXYiOnsiZmJ4X3BoZXZfMSI6eyJ2aXNpYmxlIjp0cnVlLCJpZCI6MSwicG9zaXRpb24iOjEsImRyaXZldHJhaW4iOjEsImZ1ZWwiOjE2LCJwcmljZSI6NTYyOTYsImNvbnNvIjo2Ljc5OTk5OTk5OTk5OTk5OTgyMjM2NDMxNjA1OTk3NDk1MzUzMjIxODkzMzEwNTQ2ODc1LCJjYXJDYXRlZ29yeSI6InN1diIsImNhck1ha2UiOiJoeXVuZGFpIiwiY2FyTW9kZWwiOiJUdWNzb24gUGx1Zy1JbiBIeWJyaWQiLCJzcGVjaWFsT3JkZXIiOjB9LCJmYnhfcGhldl8yIjp7InZpc2libGUiOnRydWUsImlkIjoyLCJwb3NpdGlvbiI6MiwiZHJpdmV0cmFpbiI6MSwiZnVlbCI6MTYsInByaWNlIjo1NTg5NiwiY29uc28iOjYuNzk5OTk5OTk5OTk5OTk5ODIyMzY0MzE2MDU5OTc0OTUzNTMyMjE4OTMzMTA1NDY4NzUsImNhckNhdGVnb3J5Ijoic3V2IiwiY2FyTWFrZSI6Imh5dW5kYWkiLCJjYXJNb2RlbCI6IlR1Y3NvbiBQbHVnLUluIEh5YnJpZCIsInNwZWNpYWxPcmRlciI6MH19fTsKCQkJCQkvKi0tKi8KCQkJCQl2YXIgYm94UG9zaXRpb25zID0geyJmYnhfY2FyXzEiOjEsImZieF9jYXJfMiI6MiwiZmJ4X2h5YnJpZF8xIjoxLCJmYnhfaHlicmlkXzIiOjIsImZieF9jYXJfMyI6MywiZmJ4X2Nhcl80Ijo0LCJmYnhfZWxlY3RyaWNfMSI6MSwiZmJ4X2VsZWN0cmljXzIiOjIsImZieF9lbGVjdHJpY18zIjozLCJmYnhfZWxlY3RyaWNfNCI6NCwiZmJ4X2VsZWN0cmljXzUiOjUsImZieF9zdXZfMSI6MSwiZmJ4X3N1dl8yIjoyLCJmYnhfZWxlY3RyaWNfNiI6NiwiZmJ4X2VsZWN0cmljXzciOjcsImZieF9lbGVjdHJpY184Ijo4LCJmYnhfc3V2XzMiOjMsImZieF9zdXZfNCI6NCwiZmJ4X2h5YnJpZF8zIjozLCJmYnhfdHJ1Y2tfMSI6MSwiZmJ4X3N1dl81Ijo1LCJmYnhfaHlicmlkXzQiOjQsImZieF9oeWJyaWRfNSI6NSwiZmJ4X2Nhcl81Ijo1LCJmYnhfY2FyXzYiOjYsImZieF9oeWJyaWRfNiI6NiwiZmJ4X3N1dl82Ijo2LCJmYnhfc3V2XzciOjcsImZieF9oeWJyaWRfNyI6NywiZmJ4X2h5YnJpZF84Ijo4LCJmYnhfcGhldl8xIjoxLCJmYnhfcGhldl8yIjoyLCJmYnhfc3V2XzgiOjgsImZieF9zdXZfOSI6OX07CgkJCQkJLyoqIEZpbHRlciBKUyBpbiBuZXdjYXJzLmpzICoqLwoJCQkJCS8qXV0+Ki8KCQkJCQoKCQkJCXZhciBMZWFkQ29uZmlncyA9ICh0eXBlb2YgTGVhZENvbmZpZ3MgIT0gJ3VuZGVmaW5lZCcpID8gTGVhZENvbmZpZ3MgOiB7fTsKCgkJCQlsZXQgYWN0aXZlTGFuZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3RpdmVzaXRlbGFuZ3VhZ2UnKSA\/IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3RpdmVzaXRlbGFuZ3VhZ2UnKS52YWx1ZSA6ICdGUkVOQ0gnOwoKCQkJCUxlYWRDb25maWdzLkRlYWxlckFwcG9pbnRtZW50ID0gewoKCQkJCQl0aXRsZTogKGFjdGl2ZUxhbmcgPT0gJ0VOR0xJU0gnID8gJ1JlcXVlc3QgYW4gYXBwb2ludG1lbnQnIDogJ1ByZW5kcmUgUmVuZGV6LXZvdXMnKSwKCQkJCQljbG9zZU9uU3VibWl0IDogdHJ1ZSwKCQkJCQluYW1lIDogJ0RlYWxlckFwcG9pbnRtZW50JywKCgkJCQkJb25CZWZvcmVPcGVuOiBmdW5jdGlvbihsZWFkQ29uZil7CiAgICAgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLnRyaWdnZXIoJ2RlYWxlckFwcG9pbnRtZW50LnN0YXJ0Jyk7CgoJCQkJCQljb25zdCB0aW1lVHh0RWwgPSBsZWFkQ29uZi5sZWFkTm9kZS5xdWVyeVNlbGVjdG9yKCcuc2VsZWN0ZWRUaW1lJyk7CgkJCQkJCWNvbnN0IHRpbWVJbnB1dCA9IGxlYWRDb25mLmxlYWROb2RlLnF1ZXJ5U2VsZWN0b3IoJ1tuYW1lPSJkYXRlIl0nKTsKCQkJCQkJY29uc3QgcGlja2VyID0gbGVhZENvbmYubGVhZE5vZGUucXVlcnlTZWxlY3RvcignLmRhdGVwaWNrZXInKTsKCQkJCQkJY29uc3QgcGhvbmVFbCA9IGxlYWRDb25mLmxlYWROb2RlLnF1ZXJ5U2VsZWN0b3IoJ1tuYW1lPSJwaG9uZW51bSJdJyk7CgkJCQkJCWNvbnN0IGhvdXJzQmxvY2sgPSBsZWFkQ29uZi5sZWFkTm9kZS5xdWVyeVNlbGVjdG9yKCcuaG91cnNMaXN0Jyk7CgkJCQkJCWxldCBkYXlOb2RlcyA9IEFycmF5LmZyb20oaG91cnNCbG9jay5jaGlsZHJlbik7CgkJCQkJCWxldCBkYXRlRm9ybWF0ID0gIGFjdGl2ZUxhbmcgPT0gJ0VOR0xJU0gnID8gJ0YgaiBZLCBIOmknIDogJ2ogRiBZLCBIOmknOwoKCgkJCQkJCWNvbnN0IHNldFNlbGVjdGVkID0gKHNlbGVjdGVkRGF0ZXMsIGRhdGVTdHIsIGluc3RhbmNlKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY3VycmVudGx5U2VsZWN0ZWREYXRlID0gc2VsZWN0ZWREYXRlc1swXSB8fCBuZXcgRGF0ZSgpOy8vZG9uJ3QgcGxheSB3aXRoIHRoaXMgb3IgbWlnaHQgYWZmZWN0IGRhdGUvdGltZSBzZWxlY3Rpb24KCQkJCQkJCWxldCBkYXlOdW0gPSBjdXJyZW50bHlTZWxlY3RlZERhdGUuZ2V0RGF5KCk7CgoJCQkJCQkJZGF5TnVtID0gZGF5TnVtID09IDAgPyA3IDogZGF5TnVtOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkYXlNaW5UaW1lID0gZGF5Tm9kZXNbZGF5TnVtIC0gMV0uZGF0YXNldC5taW5ob3VyIHx8ICcwOTowMCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGF5TWF4VGltZSA9IGRheU5vZGVzW2RheU51bSAtIDFdLmRhdGFzZXQubWF4aG91ciB8fCAnMTc6MDAnOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vbWluVGltZSBtYW5hZ2VtZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2lmIGRhdGUgaXMgdG9kYXksIG1pblRpbWUgbmVlZHMgdG8gYmUgYSBtaW5pbXVtIG9mIDFob3VyIGxhdGVyIGZyb20gY3VycmVudCB0aW1lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihzZWxlY3RlZERhdGVzWzBdKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbm93ID0gbmV3IERhdGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYWNjZXB0ZWRFeGNlcHRpb24gPSA1Oy8vbWludXRlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHNlbGVjdGVkRGF0ZXNbMF0udG9EYXRlU3RyaW5nKCkgPT0gbm93LnRvRGF0ZVN0cmluZygpKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1pbkhvdXIgPSBub3cuZ2V0SG91cnMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1pbk1pbnV0ZSA9IG5vdy5nZXRNaW51dGVzKCkgKyA2MDsvL2FkZCAxIGhvdXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYobWluTWludXRlID49IDYwKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbkhvdXIgKz0gTWF0aC5mbG9vcihtaW5NaW51dGUgLyA2MCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5NaW51dGUgPSBtaW5NaW51dGUgJSA2MDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKG1pbk1pbnV0ZSAlIDE1KXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL21ha2UgaXQgc28gdGhhdCBtaW51dGVzIGFyZSBlaXRoZXIgcm91bmRlZCB0byBuZXh0IDE1bWluIGluY3JlbWVudCBvciB0byB0aGUgcHJldmlvdXMgb25lIGlmIHdpdGhpbiBhY2NlcHRlZEV4Y2VwdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKG1pbk1pbnV0ZSAlIDE1IDw9IGFjY2VwdGVkRXhjZXB0aW9uKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluTWludXRlID0gbWluTWludXRlIC0gKG1pbk1pbnV0ZSAlIDE1KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZSBpZigobWluTWludXRlICUgMTUgPiBhY2NlcHRlZEV4Y2VwdGlvbikpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5NaW51dGUgPSBtaW5NaW51dGUgKyAoMTUgLSAobWluTWludXRlICUgMTUpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2RvIG5vdGhpbmcsIGFscmVhZHkgYXQgaW5jcmVtZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYobWluSG91ciA+PSAyNCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL25vIG1vcmUgYXZhaWxhYmxlIHRpbWUgdG9kYXksIHNldCB0byBuZXh0IGRheSBhdCAwOTowMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2Uuc2V0RGF0ZShuZXcgRGF0ZSgpLmZwX2luY3IoMSksIHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5zdGFuY2Uuc2V0KCdtaW5UaW1lJywgZGF5TWluVGltZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5TWluVGltZSA9IFN0cmluZyhtaW5Ib3VyKS5wYWRTdGFydCgyLCcwJykgKyAnOicgKyBTdHJpbmcobWluTWludXRlKS5wYWRTdGFydCgyLCcwJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9tYXhUaW1lIG1hbmFnZW1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxhc3QgYXBwb2ludG1lbnQgdGltZSBtYW5hZ2VtZW50ICgxNW1pbiBiZWZvcmUgY2xvc2luZyB0aW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IFtjbG9zaW5nSG91cnMsIGNsb3NpbmdNaW51dGVzXSA9IGRheU1heFRpbWUuc3BsaXQoJzonKS5tYXAoTnVtYmVyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkYXlEYXRlID0gbmV3IERhdGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRheURhdGUuc2V0SG91cnMoY2xvc2luZ0hvdXJzLCBjbG9zaW5nTWludXRlcywgMCwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXlEYXRlLnNldE1pbnV0ZXMoZGF5RGF0ZS5nZXRNaW51dGVzKCkgLSAxNSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2Zvcm1hdCB0aGUgbmV3IHRpbWUgYmFjayBpbnRvICdISDptbScgZm9ybWF0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYWN0dWFsQ2xvc2luZ0hvdXJzID0gZGF5RGF0ZS5nZXRIb3VycygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhY3R1YWxDbG9zaW5nTWludXRlcyA9IGRheURhdGUuZ2V0TWludXRlcygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRheU1heFRpbWUgPSBhY3R1YWxDbG9zaW5nSG91cnMgKyAnOicgKyBhY3R1YWxDbG9zaW5nTWludXRlczsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3NldCBzdGFydC9lbmQgdGltZSBmb3IgdGhhdCBkYXkKCQkJCQkJCWluc3RhbmNlLnNldCgnbWluVGltZScsIGRheU1pblRpbWUpOwoJCQkJCQkJaW5zdGFuY2Uuc2V0KCdtYXhUaW1lJywgZGF5TWF4VGltZSk7CgoJCQkJCQkJLy9TZXQgY3VycmVudCBkYXRlIGluaXRpYWxseQoJCQkJCQkJdGltZVR4dEVsLnRleHRDb250ZW50ID0gIXNlbGVjdGVkRGF0ZXMubGVuZ3RoCgkJCQkJCQkJCQkJCSAgPyBpbnN0YW5jZS5mb3JtYXREYXRlKG5ldyBEYXRlKCkuZnBfaW5jcigxKSwgKGFjdGl2ZUxhbmcgPT0gJ0VOR0xJU0gnID8gJ0YgaiBZLCAxMjowMCcgOiAnaiBGIFksIDEyOjAwJykpCgkJCQkJCQkJCQkJCSAgOiBkYXRlU3RyOwoKCQkJCQkJCS8vZ2V0IHRoZSBkYXRlIGluIGVuZ2xpc2ggYW5kIGZyZW5jaCBmb3IgdGhlIGxvY2FsIHN0b3JhZ2UKCQkJCQkJCXRpbWVUeHRFbC5kYXRhc2V0LmVuID0gaW5zdGFuY2UuZm9ybWF0RGF0ZShuZXcgRGF0ZSgpLmZwX2luY3IoMSksJ0YgaiBZLCAxMjowMCcsIGZsYXRwaWNrci5sMTBucy5lbik7CgkJCQkJCQl0aW1lVHh0RWwuZGF0YXNldC5mciA9IGluc3RhbmNlLmZvcm1hdERhdGUobmV3IERhdGUoKS5mcF9pbmNyKDEpLCdqIEYgWSwgMTI6MDAnLCBmbGF0cGlja3IubDEwbnMuZnIpOwoKCQkJCQkJCXRpbWVJbnB1dC52YWx1ZSA9IHRpbWVUeHRFbC50ZXh0Q29udGVudDsKCgkJCQkJCQlpbnN0YW5jZS5ob3VyRWxlbWVudC5ibHVyKCk7CgkJCQkJCX07CgoJCQkJCQlsZXQgY2xvc2VkRGF5cyA9IFtdOwoJCQkJCQlkYXlOb2Rlcy5mb3JFYWNoKChlLGkpID0+IHsKCQkJCQkJCWlmKChlLmRhdGFzZXQuY2xvc2VkIHx8ICcwJykgPT0gJzEnKSBjbG9zZWREYXlzLnB1c2goaSkKCQkJCQkJfSk7CgoJCQkJCQkvL0FkZCBmcmVuY2ggbG9jYWxpemF0aW9uIHdoZW4gbmVlZGVkCgkJCQkJCWlmKGFjdGl2ZUxhbmcgPT0gJ0ZSRU5DSCcpewoJCQkJCQkJZmxhdHBpY2tyLmxvY2FsaXplKGZsYXRwaWNrci5sMTBucy5mcik7CgkJCQkJCX0KCgoKCQkJCQkJY29uc3QgZnAgPSBmbGF0cGlja3IocGlja2VyLCB7CgkJCQkJCQlpbmxpbmU6dHJ1ZSwKCQkJCQkJCWVuYWJsZVRpbWU6IHRydWUsCgkJCQkJCQltaW5EYXRlOiAndG9kYXknLC8vYmFjayBmcm9tIG5ldyBEYXRlKCkuZnBfaW5jcigxKSBidXQgYWxzbyBhZGRlZCB0aW1lIHZhbGlkYXRpb24gZm9yIG1pblRpbWUKCQkJCQkJCW1pblRpbWU6ICIwOTowMCIsCgkJCQkJCQltYXhUaW1lOiAiMTc6MDAiLAoJCQkJCQkJZGF0ZUZvcm1hdDogZGF0ZUZvcm1hdCwvLyJELCBqIEYgWSwgSDppIiwKCQkJCQkJCW1pbnV0ZUluY3JlbWVudDoxNSwKCQkJCQkJCXRpbWVfMjRocjp0cnVlLAoJCQkJCQkJb25DaGFuZ2U6IHNldFNlbGVjdGVkLAoJCQkJCQkJb25SZWFkeTogc2V0U2VsZWN0ZWQsCgkJCQkJCQlkaXNhYmxlOiBbCgkJCQkJCQkJZnVuY3Rpb24oZGF0ZSl7CgkJCQkJCQkJCWxldCBkYXlOdW0gPSBkYXRlLmdldERheSgpID09IDAgPyA3IDogZGF0ZS5nZXREYXkoKTsKCQkJCQkJCQkJcmV0dXJuIGNsb3NlZERheXMuaW5jbHVkZXMoZGF5TnVtIC0gMSk7CgkJCQkJCQkJfQoJCQkJCQkJXSwKCQkJCQkJCWxvY2FsZTogewoJCQkJCQkJCWZpcnN0RGF5T2ZXZWVrOiAxIC8vIHN0YXJ0IHdlZWsgb24gTW9uZGF5CgkJCQkJCQl9CgoJCQkJCQl9KTsKCgkJCQkJfSwKCgkJCQkJb25CZWZvcmVTdWJtaXQgOiAobGVhZENvbmYpID0+IHsKCQkJCQkJY29uc3QgdGltZVR4dEVsID0gbGVhZENvbmYubGVhZE5vZGUucXVlcnlTZWxlY3RvcignLnNlbGVjdGVkVGltZScpOwoJCQkJCQllbWFpbEhhbmRsZXIuZGVhbGVyQXBwb2ludG1lbnREYXRhID0gewoJCQkJCQkJZGF0ZSA6IHRpbWVUeHRFbC50ZXh0Q29udGVudAoJCQkJCQl9OwoJCQkJCX0sCgoJCQkJCW9uQWZ0ZXJTdWJtaXQgOiAobGVhZENvbmYpID0+IHsKCgkJCQkJCWNvbnN0IHRpbWVUeHRFbCA9IGxlYWRDb25mLmxlYWROb2RlLnF1ZXJ5U2VsZWN0b3IoJy5zZWxlY3RlZFRpbWUnKTsKCgkJCQkJCWNvbnN0IGNiID0gdHJhY2tTdGVwID0+IHsKCQkJCQkJCXRyYWNrU3RlcC5kYXRhc2V0LmNvbXBsX3R4dF9mciA9IHRyYWNrU3RlcC5kYXRhc2V0LmNvbXBsX3R4dF9mci5yZXBsYWNlKCd7JEFQUE9JTlRfREFURX0nLCB0aW1lVHh0RWwuZGF0YXNldC5mcik7CgkJCQkJCQl0cmFja1N0ZXAuZGF0YXNldC5jb21wbF90eHRfZW4gPSB0cmFja1N0ZXAuZGF0YXNldC5jb21wbF90eHRfZW4ucmVwbGFjZSgneyRBUFBPSU5UX0RBVEV9JywgdGltZVR4dEVsLmRhdGFzZXQuZW4pOwoJCQkJCQl9OwoKCQkJCQkJbGV0IGNvbXBsZXRlRXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoJ3RyYWNrc3RlcC5jb21wbGV0ZScsewoJCQkJCQkJZGV0YWlsOnsKCQkJCQkJCQlzdGVwSWQgOiAnRGVhbGVyQXBwb2ludG1lbnQnLAoJCQkJCQkJCW9uQ29tcGxldGUgOiBjYgoJCQkJCQkJfQoJCQkJCQl9KTsKCgkJCQkJCWRvY3VtZW50LmRpc3BhdGNoRXZlbnQoY29tcGxldGVFdmVudCk7CgogICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS50cmlnZ2VyKCdkZWFsZXJBcHBvaW50bWVudC5lbmQnKTsKCQkJCQl9CgoJCQkJfQoKCQkJCi8qKiAvbS9qcy9za2VsZXRvbi5iZWZvcmUuanMgKiovCnZhciBfX19kMmNfc2tlbGV0b25iZWZvcmVqc19jX29uPSIyMDI1LTA1LTIzIDE3OjEzOjAzIjsndXNlIHN0cmljdCc7dmFyIF9fX2QyY19za2VsZXRvbmJlZm9yZWpzX2Nfb249IjIwMjQtMDEtMzEgMTQ6Mzc6NTciOyJ1c2Ugc3RyaWN0IjtfX19kMmNfc2tlbGV0b25iZWZvcmVqc19jX29uPSIyMDIzLTA2LTAxIDEyOjMwOjE5IjsidXNlIHN0cmljdCI7bGV0ICRqc2NvbXAkbnVsbGlzaCR0bXAwO3dpbmRvdy5nU3BlZWRDb25uPXBhcnNlSW50KE1hdGguZmxvb3IoKERhdGUubm93KCktKG51bGwhPSgkanNjb21wJG51bGxpc2gkdG1wMD13aW5kb3cuZ1Rlc3RTcGVlZENvbm4pPyRqc2NvbXAkbnVsbGlzaCR0bXAwOjApKS8xRTMpKTtsZXQgJGpzY29tcCRudWxsaXNoJHRtcDE7Y29uc29sZS5sb2coIkdTUEVFRC1CRUZPUkU6IisoRGF0ZS5ub3coKS0obnVsbCE9KCRqc2NvbXAkbnVsbGlzaCR0bXAxPXdpbmRvdy5nVGVzdFNwZWVkQ29ubik\/JGpzY29tcCRudWxsaXNoJHRtcDE6MCkpLzFFMyk7Ci8qKiAvbS9qcy9qcXVlcnkuanMgKiovCnZhciBfX19kMmNfanF1ZXJ5anNfY19vbj0iMjAyNS0wNS0yMyAxNzowNTo0OSI7J3VzZSBzdHJpY3QnO3ZhciBfX19kMmNfanF1ZXJ5anNfY19vbj0iMjAyNC0wMy0yNSAxMjozMTozMyI7InVzZSBzdHJpY3QiOwohZnVuY3Rpb24obixkYSl7Im9iamVjdCI9PXR5cGVvZiBtb2R1bGUmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlLmV4cG9ydHM\/bW9kdWxlLmV4cG9ydHM9bi5kb2N1bWVudD9kYShuLCEwKTpmdW5jdGlvbih3YSl7aWYoIXdhLmRvY3VtZW50KXRocm93IEVycm9yKCJqUXVlcnkgcmVxdWlyZXMgYSB3aW5kb3cgd2l0aCBhIGRvY3VtZW50Iik7cmV0dXJuIGRhKHdhKX06ZGEobil9KCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp0aGlzLGZ1bmN0aW9uKG4sZGEpe2Z1bmN0aW9uIHdhKGEsYixjKXt2YXIgZSxmLGc9KGM9Y3x8TCkuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7aWYoZy50ZXh0PWEsYilmb3IoZSBpbiBMYykoZj1iW2VdfHxiLmdldEF0dHJpYnV0ZSYmYi5nZXRBdHRyaWJ1dGUoZSkpJiZnLnNldEF0dHJpYnV0ZShlLGYpO2MuaGVhZC5hcHBlbmRDaGlsZChnKS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGcpfWZ1bmN0aW9uIFUoYSl7cmV0dXJuIG51bGw9PWE\/YSsKIiI6Im9iamVjdCI9PXR5cGVvZiBhfHwiZnVuY3Rpb24iPT10eXBlb2YgYT9NYltrYy5jYWxsKGEpXXx8Im9iamVjdCI6dHlwZW9mIGF9ZnVuY3Rpb24gZWIoYSl7dmFyIGI9ISFhJiYibGVuZ3RoImluIGEmJmEubGVuZ3RoLGM9VShhKTtyZXR1cm4hTShhKSYmIWtiKGEpJiYoImFycmF5Ij09PWN8fDA9PT1ifHwibnVtYmVyIj09dHlwZW9mIGImJjA8YiYmYi0xIGluIGEpfWZ1bmN0aW9uIFgoYSxiKXtyZXR1cm4gYS5ub2RlTmFtZSYmYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09Yi50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIGJhKGEsYil7cmV0dXJuIGI\/Ilx4MDAiPT09YT8iXHVmZmZkIjphLnNsaWNlKDAsLTEpKyJcXCIrYS5jaGFyQ29kZUF0KGEubGVuZ3RoLTEpLnRvU3RyaW5nKDE2KSsiICI6IlxcIithfWZ1bmN0aW9uIGphKGEsYixjKXtyZXR1cm4gTShiKT9kLmdyZXAoYSxmdW5jdGlvbihlLGYpe3JldHVybiEhYi5jYWxsKGUsZixlKSE9PWN9KTpiLm5vZGVUeXBlP2QuZ3JlcChhLApmdW5jdGlvbihlKXtyZXR1cm4gZT09PWIhPT1jfSk6InN0cmluZyIhPXR5cGVvZiBiP2QuZ3JlcChhLGZ1bmN0aW9uKGUpe3JldHVybi0xPE5hLmNhbGwoYixlKSE9PWN9KTpkLmZpbHRlcihiLGEsYyl9ZnVuY3Rpb24gbGIoYSxiKXtmb3IoOyhhPWFbYl0pJiYxIT09YS5ub2RlVHlwZTspO3JldHVybiBhfWZ1bmN0aW9uIFlhKGEpe3JldHVybiBhfWZ1bmN0aW9uIFphKGEpe3Rocm93IGE7fWZ1bmN0aW9uIG1iKGEsYixjLGUpe3ZhciBmO3RyeXthJiZNKGY9YS5wcm9taXNlKT9mLmNhbGwoYSkuZG9uZShiKS5mYWlsKGMpOmEmJk0oZj1hLnRoZW4pP2YuY2FsbChhLGIsYyk6Yi5hcHBseSh2b2lkIDAsW2FdLnNsaWNlKGUpKX1jYXRjaChnKXtjLmFwcGx5KHZvaWQgMCxbZ10pfX1mdW5jdGlvbiBPYSgpe0wucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsT2EpO24ucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsT2EpO2QucmVhZHkoKX1mdW5jdGlvbiBOYihhLGIpe3JldHVybiBiLnRvVXBwZXJDYXNlKCl9CmZ1bmN0aW9uIEJhKGEpe3JldHVybiBhLnJlcGxhY2UoTWMsIm1zLSIpLnJlcGxhY2UoTmMsTmIpfWZ1bmN0aW9uIEphKCl7dGhpcy5leHBhbmRvPWQuZXhwYW5kbytKYS51aWQrK31mdW5jdGlvbiBPYihhLGIsYyl7dmFyIGUsZjtpZih2b2lkIDA9PT1jJiYxPT09YS5ub2RlVHlwZSlpZihlPSJkYXRhLSIrYi5yZXBsYWNlKE9jLCItJCYiKS50b0xvd2VyQ2FzZSgpLCJzdHJpbmciPT10eXBlb2YoYz1hLmdldEF0dHJpYnV0ZShlKSkpe3RyeXtjPSJ0cnVlIj09PShmPWMpfHwiZmFsc2UiIT09ZiYmKCJudWxsIj09PWY\/bnVsbDpmPT09K2YrIiI\/K2Y6UGMudGVzdChmKT9KU09OLnBhcnNlKGYpOmYpfWNhdGNoKGcpe314YS5zZXQoYSxiLGMpfWVsc2UgYz12b2lkIDA7cmV0dXJuIGN9ZnVuY3Rpb24gUGIoYSxiLGMsZSl7dmFyIGYsZyxoPTIwLG09ZT9mdW5jdGlvbigpe3JldHVybiBlLmN1cigpfTpmdW5jdGlvbigpe3JldHVybiBkLmNzcyhhLGIsIiIpfSxsPW0oKSx0PWMmJmNbM118fAooZC5jc3NOdW1iZXJbYl0\/IiI6InB4Iiksdz1hLm5vZGVUeXBlJiYoZC5jc3NOdW1iZXJbYl18fCJweCIhPT10JiYrbCkmJnliLmV4ZWMoZC5jc3MoYSxiKSk7aWYodyYmd1szXSE9PXQpe2wvPTI7dD10fHx3WzNdO2Zvcih3PStsfHwxO2gtLTspZC5zdHlsZShhLGIsdyt0KSwwPj0oMS1nKSooMS0oZz1tKCkvbHx8LjUpKSYmKGg9MCksdy89Zzt3Kj0yO2Quc3R5bGUoYSxiLHcrdCk7Yz1jfHxbXX1yZXR1cm4gYyYmKHc9K3d8fCtsfHwwLGY9Y1sxXT93KyhjWzFdKzEpKmNbMl06K2NbMl0sZSYmKGUudW5pdD10LGUuc3RhcnQ9dyxlLmVuZD1mKSksZn1mdW5jdGlvbiAkYShhLGIpe2Zvcih2YXIgYyxlLGYsZyxoLG0sbCx0PVtdLHc9MCxyPWEubGVuZ3RoO3c8cjt3KyspKGU9YVt3XSkuc3R5bGUmJihjPWUuc3R5bGUuZGlzcGxheSxiPygibm9uZSI9PT1jJiYodFt3XT1HLmdldChlLCJkaXNwbGF5Iil8fG51bGwsdFt3XXx8KGUuc3R5bGUuZGlzcGxheT0iIikpLCIiPT09ZS5zdHlsZS5kaXNwbGF5JiYKUWIoZSkmJih0W3ddPShsPWg9Zz12b2lkIDAsaD0oZj1lKS5vd25lckRvY3VtZW50LG09Zi5ub2RlTmFtZSwobD1sY1ttXSl8fChnPWguYm9keS5hcHBlbmRDaGlsZChoLmNyZWF0ZUVsZW1lbnQobSkpLGw9ZC5jc3MoZywiZGlzcGxheSIpLGcucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChnKSwibm9uZSI9PT1sJiYobD0iYmxvY2siKSxsY1ttXT1sKSkpKToibm9uZSIhPT1jJiYodFt3XT0ibm9uZSIsRy5zZXQoZSwiZGlzcGxheSIsYykpKTtmb3Iodz0wO3c8cjt3KyspbnVsbCE9dFt3XSYmKGFbd10uc3R5bGUuZGlzcGxheT10W3ddKTtyZXR1cm4gYX1mdW5jdGlvbiBzYShhLGIpe3ZhciBjO3JldHVybiBjPSJ1bmRlZmluZWQiIT10eXBlb2YgYS5nZXRFbGVtZW50c0J5VGFnTmFtZT9hLmdldEVsZW1lbnRzQnlUYWdOYW1lKGJ8fCIqIik6InVuZGVmaW5lZCIhPXR5cGVvZiBhLnF1ZXJ5U2VsZWN0b3JBbGw\/YS5xdWVyeVNlbGVjdG9yQWxsKGJ8fCIqIik6W10sdm9pZCAwPT09Ynx8YiYmClgoYSxiKT9kLm1lcmdlKFthXSxjKTpjfWZ1bmN0aW9uIG5iKGEsYil7Zm9yKHZhciBjPTAsZT1hLmxlbmd0aDtjPGU7YysrKUcuc2V0KGFbY10sImdsb2JhbEV2YWwiLCFifHxHLmdldChiW2NdLCJnbG9iYWxFdmFsIikpfWZ1bmN0aW9uIFJiKGEsYixjLGUsZil7Zm9yKHZhciBnLGgsbSxsLHQ9Yi5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksdz1bXSxyPTAsej1hLmxlbmd0aDtyPHo7cisrKWlmKChnPWFbcl0pfHwwPT09ZylpZigib2JqZWN0Ij09PVUoZykpZC5tZXJnZSh3LGcubm9kZVR5cGU\/W2ddOmcpO2Vsc2UgaWYoUWMudGVzdChnKSl7aD1ofHx0LmFwcGVuZENoaWxkKGIuY3JlYXRlRWxlbWVudCgiZGl2IikpO209KG1jLmV4ZWMoZyl8fFsiIiwiIl0pWzFdLnRvTG93ZXJDYXNlKCk7bT1DYVttXXx8Q2EuX2RlZmF1bHQ7aC5pbm5lckhUTUw9bVsxXStkLmh0bWxQcmVmaWx0ZXIoZykrbVsyXTtmb3IobT1tWzBdO20tLTspaD1oLmxhc3RDaGlsZDtkLm1lcmdlKHcsaC5jaGlsZE5vZGVzKTsKKGg9dC5maXJzdENoaWxkKS50ZXh0Q29udGVudD0iIn1lbHNlIHcucHVzaChiLmNyZWF0ZVRleHROb2RlKGcpKTt0LnRleHRDb250ZW50PSIiO2ZvcihyPTA7Zz13W3IrK107KWlmKGUmJi0xPGQuaW5BcnJheShnLGUpKWYmJmYucHVzaChnKTtlbHNlIGlmKGw9b2IoZyksaD1zYSh0LmFwcGVuZENoaWxkKGcpLCJzY3JpcHQiKSxsJiZuYihoKSxjKWZvcihtPTA7Zz1oW20rK107KW5jLnRlc3QoZy50eXBlfHwiIikmJmMucHVzaChnKTtyZXR1cm4gdH1mdW5jdGlvbiBhYigpe3JldHVybiEwfWZ1bmN0aW9uIGJiKCl7cmV0dXJuITF9ZnVuY3Rpb24gZmIoYSxiLGMsZSxmLGcpe3ZhciBoLG07aWYoIm9iamVjdCI9PXR5cGVvZiBiKXtmb3IobSBpbiJzdHJpbmciIT10eXBlb2YgYyYmKGU9ZXx8YyxjPXZvaWQgMCksYilmYihhLG0sYyxlLGJbbV0sZyk7cmV0dXJuIGF9aWYobnVsbD09ZSYmbnVsbD09Zj8oZj1jLGU9Yz12b2lkIDApOm51bGw9PWYmJigic3RyaW5nIj09dHlwZW9mIGM\/KGY9CmUsZT12b2lkIDApOihmPWUsZT1jLGM9dm9pZCAwKSksITE9PT1mKWY9YmI7ZWxzZSBpZighZilyZXR1cm4gYTtyZXR1cm4gMT09PWcmJihoPWYsKGY9ZnVuY3Rpb24obCl7cmV0dXJuIGQoKS5vZmYobCksaC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KS5ndWlkPWguZ3VpZHx8KGguZ3VpZD1kLmd1aWQrKykpLGEuZWFjaChmdW5jdGlvbigpe2QuZXZlbnQuYWRkKHRoaXMsYixmLGUsYyl9KX1mdW5jdGlvbiBwYihhLGIsYyl7Yz8oRy5zZXQoYSxiLCExKSxkLmV2ZW50LmFkZChhLGIse25hbWVzcGFjZTohMSxoYW5kbGVyOmZ1bmN0aW9uKGUpe3ZhciBmLGc9Ry5nZXQodGhpcyxiKTtpZigxJmUuaXNUcmlnZ2VyJiZ0aGlzW2JdKWlmKGcpKGQuZXZlbnQuc3BlY2lhbFtiXXx8e30pLmRlbGVnYXRlVHlwZSYmZS5zdG9wUHJvcGFnYXRpb24oKTtlbHNle2lmKGc9eWEuY2FsbChhcmd1bWVudHMpLEcuc2V0KHRoaXMsYixnKSx0aGlzW2JdKCksZj1HLmdldCh0aGlzLGIpLEcuc2V0KHRoaXMsYiwKITEpLGchPT1mKXJldHVybiBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLGUucHJldmVudERlZmF1bHQoKSxmfWVsc2UgZyYmKEcuc2V0KHRoaXMsYixkLmV2ZW50LnRyaWdnZXIoZ1swXSxnLnNsaWNlKDEpLHRoaXMpKSxlLnN0b3BQcm9wYWdhdGlvbigpLGUuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9YWIpfX0pKTp2b2lkIDA9PT1HLmdldChhLGIpJiZkLmV2ZW50LmFkZChhLGIsYWIpfWZ1bmN0aW9uIFNiKGEsYil7cmV0dXJuIFgoYSwidGFibGUiKSYmWCgxMSE9PWIubm9kZVR5cGU\/YjpiLmZpcnN0Q2hpbGQsInRyIikmJmQoYSkuY2hpbGRyZW4oInRib2R5IilbMF18fGF9ZnVuY3Rpb24gcWIoYSl7cmV0dXJuIGEudHlwZT0obnVsbCE9PWEuZ2V0QXR0cmlidXRlKCJ0eXBlIikpKyIvIithLnR5cGUsYX1mdW5jdGlvbiAkYihhKXtyZXR1cm4idHJ1ZS8iPT09KGEudHlwZXx8IiIpLnNsaWNlKDAsNSk\/YS50eXBlPWEudHlwZS5zbGljZSg1KTphLnJlbW92ZUF0dHJpYnV0ZSgidHlwZSIpLAphfWZ1bmN0aW9uIGdiKGEsYil7dmFyIGMsZSxmLGcsaDtpZigxPT09Yi5ub2RlVHlwZSl7aWYoRy5oYXNEYXRhKGEpJiYoaD1HLmdldChhKS5ldmVudHMpKWZvcihlIGluIEcucmVtb3ZlKGIsImhhbmRsZSBldmVudHMiKSxoKXt2YXIgbT0wO2ZvcihjPWhbZV0ubGVuZ3RoO208YzttKyspZC5ldmVudC5hZGQoYixlLGhbZV1bbV0pfXhhLmhhc0RhdGEoYSkmJihmPXhhLmFjY2VzcyhhKSxnPWQuZXh0ZW5kKHt9LGYpLHhhLnNldChiLGcpKX19ZnVuY3Rpb24gY2IoYSxiLGMsZSl7Yj1vYyhiKTt2YXIgZixnLGgsbT0wLGw9YS5sZW5ndGgsdD1sLTEsdz1iWzBdLHI9TSh3KTtpZihyfHwxPGwmJiJzdHJpbmciPT10eXBlb2YgdyYmIU4uY2hlY2tDbG9uZSYmUmMudGVzdCh3KSlyZXR1cm4gYS5lYWNoKGZ1bmN0aW9uKEQpe3ZhciBGPWEuZXEoRCk7ciYmKGJbMF09dy5jYWxsKHRoaXMsRCxGLmh0bWwoKSkpO2NiKEYsYixjLGUpfSk7aWYobCYmKGc9KGY9UmIoYixhWzBdLm93bmVyRG9jdW1lbnQsCiExLGEsZSkpLmZpcnN0Q2hpbGQsMT09PWYuY2hpbGROb2Rlcy5sZW5ndGgmJihmPWcpLGd8fGUpKXtmb3IoaD0oZz1kLm1hcChzYShmLCJzY3JpcHQiKSxxYikpLmxlbmd0aDttPGw7bSsrKXt2YXIgej1mO20hPT10JiYoej1kLmNsb25lKHosITAsITApLGgmJmQubWVyZ2UoZyxzYSh6LCJzY3JpcHQiKSkpO2MuY2FsbChhW21dLHosbSl9aWYoaClmb3IoZj1nW2cubGVuZ3RoLTFdLm93bmVyRG9jdW1lbnQsZC5tYXAoZywkYiksbT0wO208aDttKyspej1nW21dLG5jLnRlc3Qoei50eXBlfHwiIikmJiFHLmFjY2Vzcyh6LCJnbG9iYWxFdmFsIikmJmQuY29udGFpbnMoZix6KSYmKHouc3JjJiYibW9kdWxlIiE9PSh6LnR5cGV8fCIiKS50b0xvd2VyQ2FzZSgpP2QuX2V2YWxVcmwmJiF6Lm5vTW9kdWxlJiZkLl9ldmFsVXJsKHouc3JjLHtub25jZTp6Lm5vbmNlfHx6LmdldEF0dHJpYnV0ZSgibm9uY2UiKX0sZik6d2Eoei50ZXh0Q29udGVudC5yZXBsYWNlKFNjLCIiKSx6LGYpKX1yZXR1cm4gYX0KZnVuY3Rpb24gVGIoYSxiLGMpe2Zvcih2YXIgZT1iP2QuZmlsdGVyKGIsYSk6YSxmPTA7bnVsbCE9KGI9ZVtmXSk7ZisrKWN8fDEhPT1iLm5vZGVUeXBlfHxkLmNsZWFuRGF0YShzYShiKSksYi5wYXJlbnROb2RlJiYoYyYmb2IoYikmJm5iKHNhKGIsInNjcmlwdCIpKSxiLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYikpO3JldHVybiBhfWZ1bmN0aW9uIEthKGEsYixjKXt2YXIgZSxmLGcsaCxtPWFjLnRlc3QoYiksbD1hLnN0eWxlO3JldHVybihjPWN8fFViKGEpKSYmKGg9Yy5nZXRQcm9wZXJ0eVZhbHVlKGIpfHxjW2JdLG0mJmgmJihoPWgucmVwbGFjZSh6YiwiJDEiKXx8dm9pZCAwKSwiIiE9PWh8fG9iKGEpfHwoaD1kLnN0eWxlKGEsYikpLCFOLnBpeGVsQm94U3R5bGVzKCkmJmJjLnRlc3QoaCkmJlRjLnRlc3QoYikmJihlPWwud2lkdGgsZj1sLm1pbldpZHRoLGc9bC5tYXhXaWR0aCxsLm1pbldpZHRoPWwubWF4V2lkdGg9bC53aWR0aD1oLGg9Yy53aWR0aCxsLndpZHRoPWUsbC5taW5XaWR0aD0KZixsLm1heFdpZHRoPWcpKSx2b2lkIDAhPT1oP2grIiI6aH1mdW5jdGlvbiBWYihhLGIpe3JldHVybntnZXQ6ZnVuY3Rpb24oKXtpZighYSgpKXJldHVybih0aGlzLmdldD1iKS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7ZGVsZXRlIHRoaXMuZ2V0fX19ZnVuY3Rpb24gQWIoYSl7dmFyIGI7aWYoIShiPWQuY3NzUHJvcHNbYV18fHBjW2FdKSl7aWYoIShhIGluIHFjKSl7YTp7Yj1hO2Zvcih2YXIgYz1iWzBdLnRvVXBwZXJDYXNlKCkrYi5zbGljZSgxKSxlPXJjLmxlbmd0aDtlLS07KWlmKChiPXJjW2VdK2MpaW4gcWMpYnJlYWsgYTtiPXZvaWQgMH1hPXBjW2FdPWJ8fGF9Yj1hfXJldHVybiBifWZ1bmN0aW9uIFdiKGEsYixjKXtyZXR1cm4oYT15Yi5leGVjKGIpKT9NYXRoLm1heCgwLGFbMl0tKGN8fDApKSsoYVszXXx8InB4Iik6Yn1mdW5jdGlvbiByYihhLGIsYyxlLGYsZyl7dmFyIGg9IndpZHRoIj09PWI\/MTowLG09MCxsPTAsdD0wO2lmKGM9PT0oZT8iYm9yZGVyIjoiY29udGVudCIpKXJldHVybiAwOwpmb3IoOzQ+aDtoKz0yKSJtYXJnaW4iPT09YyYmKHQrPWQuY3NzKGEsYytQYVtoXSwhMCxmKSksZT8oImNvbnRlbnQiPT09YyYmKGwtPWQuY3NzKGEsInBhZGRpbmciK1BhW2hdLCEwLGYpKSwibWFyZ2luIiE9PWMmJihsLT1kLmNzcyhhLCJib3JkZXIiK1BhW2hdKyJXaWR0aCIsITAsZikpKToobCs9ZC5jc3MoYSwicGFkZGluZyIrUGFbaF0sITAsZiksInBhZGRpbmciIT09Yz9sKz1kLmNzcyhhLCJib3JkZXIiK1BhW2hdKyJXaWR0aCIsITAsZik6bSs9ZC5jc3MoYSwiYm9yZGVyIitQYVtoXSsiV2lkdGgiLCEwLGYpKTtyZXR1cm4hZSYmMDw9ZyYmKGwrPU1hdGgubWF4KDAsTWF0aC5jZWlsKGFbIm9mZnNldCIrYlswXS50b1VwcGVyQ2FzZSgpK2Iuc2xpY2UoMSldLWctbC1tLS41KSl8fDApLGwrdH1mdW5jdGlvbiBCYihhLGIsYyl7dmFyIGU9VWIoYSksZj0oIU4uYm94U2l6aW5nUmVsaWFibGUoKXx8YykmJiJib3JkZXItYm94Ij09PWQuY3NzKGEsImJveFNpemluZyIsITEsZSksZz0KZixoPUthKGEsYixlKSxtPSJvZmZzZXQiK2JbMF0udG9VcHBlckNhc2UoKStiLnNsaWNlKDEpO2lmKGJjLnRlc3QoaCkpe2lmKCFjKXJldHVybiBoO2g9ImF1dG8ifXJldHVybighTi5ib3hTaXppbmdSZWxpYWJsZSgpJiZmfHwhTi5yZWxpYWJsZVRyRGltZW5zaW9ucygpJiZYKGEsInRyIil8fCJhdXRvIj09PWh8fCFwYXJzZUZsb2F0KGgpJiYiaW5saW5lIj09PWQuY3NzKGEsImRpc3BsYXkiLCExLGUpKSYmYS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCYmKGY9ImJvcmRlci1ib3giPT09ZC5jc3MoYSwiYm94U2l6aW5nIiwhMSxlKSwoZz1tIGluIGEpJiYoaD1hW21dKSksKGg9cGFyc2VGbG9hdChoKXx8MCkrcmIoYSxiLGN8fChmPyJib3JkZXIiOiJjb250ZW50IiksZyxlLGgpKyJweCJ9ZnVuY3Rpb24gemEoYSxiLGMsZSxmKXtyZXR1cm4gbmV3IHphLnByb3RvdHlwZS5pbml0KGEsYixjLGUsZil9ZnVuY3Rpb24gQ2IoKXtYYiYmKCExPT09TC5oaWRkZW4mJm4ucmVxdWVzdEFuaW1hdGlvbkZyYW1lPwpuLnJlcXVlc3RBbmltYXRpb25GcmFtZShDYik6bi5zZXRUaW1lb3V0KENiLGQuZnguaW50ZXJ2YWwpLGQuZngudGljaygpKX1mdW5jdGlvbiBEYigpe3JldHVybiBuLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtzYj12b2lkIDB9KSxzYj1EYXRlLm5vdygpfWZ1bmN0aW9uIHRiKGEsYil7dmFyIGMsZT0wLGY9e2hlaWdodDphfTtmb3IoYj1iPzE6MDs0PmU7ZSs9Mi1iKWZbIm1hcmdpbiIrKGM9UGFbZV0pXT1mWyJwYWRkaW5nIitjXT1hO3JldHVybiBiJiYoZi5vcGFjaXR5PWYud2lkdGg9YSksZn1mdW5jdGlvbiB1KGEsYixjKXtmb3IodmFyIGUsZj0oeC50d2VlbmVyc1tiXXx8W10pLmNvbmNhdCh4LnR3ZWVuZXJzWyIqIl0pLGc9MCxoPWYubGVuZ3RoO2c8aDtnKyspaWYoZT1mW2ddLmNhbGwoYyxiLGEpKXJldHVybiBlfWZ1bmN0aW9uIHgoYSxiLGMpe3ZhciBlLGY9MCxnPXgucHJlZmlsdGVycy5sZW5ndGgsaD1kLkRlZmVycmVkKCkuYWx3YXlzKGZ1bmN0aW9uKCl7ZGVsZXRlIG0uZWxlbX0pLAptPWZ1bmN0aW9uKCl7aWYoZSlyZXR1cm4hMTt2YXIgdD1zYnx8RGIoKTt0PU1hdGgubWF4KDAsbC5zdGFydFRpbWUrbC5kdXJhdGlvbi10KTtmb3IodmFyIHc9MS0odC9sLmR1cmF0aW9ufHwwKSxyPTAsej1sLnR3ZWVucy5sZW5ndGg7cjx6O3IrKylsLnR3ZWVuc1tyXS5ydW4odyk7cmV0dXJuIGgubm90aWZ5V2l0aChhLFtsLHcsdF0pLDE+dyYmej90Oih6fHxoLm5vdGlmeVdpdGgoYSxbbCwxLDBdKSxoLnJlc29sdmVXaXRoKGEsW2xdKSwhMSl9LGw9aC5wcm9taXNlKHtlbGVtOmEscHJvcHM6ZC5leHRlbmQoe30sYiksb3B0czpkLmV4dGVuZCghMCx7c3BlY2lhbEVhc2luZzp7fSxlYXNpbmc6ZC5lYXNpbmcuX2RlZmF1bHR9LGMpLG9yaWdpbmFsUHJvcGVydGllczpiLG9yaWdpbmFsT3B0aW9uczpjLHN0YXJ0VGltZTpzYnx8RGIoKSxkdXJhdGlvbjpjLmR1cmF0aW9uLHR3ZWVuczpbXSxjcmVhdGVUd2VlbjpmdW5jdGlvbih0LHcpe3Q9ZC5Ud2VlbihhLGwub3B0cyx0LHcsbC5vcHRzLnNwZWNpYWxFYXNpbmdbdF18fApsLm9wdHMuZWFzaW5nKTtyZXR1cm4gbC50d2VlbnMucHVzaCh0KSx0fSxzdG9wOmZ1bmN0aW9uKHQpe3ZhciB3PTAscj10P2wudHdlZW5zLmxlbmd0aDowO2lmKGUpcmV0dXJuIHRoaXM7Zm9yKGU9ITA7dzxyO3crKylsLnR3ZWVuc1t3XS5ydW4oMSk7cmV0dXJuIHQ\/KGgubm90aWZ5V2l0aChhLFtsLDEsMF0pLGgucmVzb2x2ZVdpdGgoYSxbbCx0XSkpOmgucmVqZWN0V2l0aChhLFtsLHRdKSx0aGlzfX0pO2M9bC5wcm9wczshZnVuY3Rpb24odCx3KXt2YXIgcix6LEQsRixPO2ZvcihyIGluIHQpaWYoRD13W3o9QmEocildLEY9dFtyXSxBcnJheS5pc0FycmF5KEYpJiYoRD1GWzFdLEY9dFtyXT1GWzBdKSxyIT09eiYmKHRbel09RixkZWxldGUgdFtyXSksKE89ZC5jc3NIb29rc1t6XSkmJiJleHBhbmQiaW4gTylmb3IociBpbiBGPU8uZXhwYW5kKEYpLGRlbGV0ZSB0W3pdLEYpciBpbiB0fHwodFtyXT1GW3JdLHdbcl09RCk7ZWxzZSB3W3pdPUR9KGMsbC5vcHRzLnNwZWNpYWxFYXNpbmcpOwpmb3IoO2Y8ZztmKyspaWYoYj14LnByZWZpbHRlcnNbZl0uY2FsbChsLGEsYyxsLm9wdHMpKXJldHVybiBNKGIuc3RvcCkmJihkLl9xdWV1ZUhvb2tzKGwuZWxlbSxsLm9wdHMucXVldWUpLnN0b3A9Yi5zdG9wLmJpbmQoYikpLGI7cmV0dXJuIGQubWFwKGMsdSxsKSxNKGwub3B0cy5zdGFydCkmJmwub3B0cy5zdGFydC5jYWxsKGEsbCksbC5wcm9ncmVzcyhsLm9wdHMucHJvZ3Jlc3MpLmRvbmUobC5vcHRzLmRvbmUsbC5vcHRzLmNvbXBsZXRlKS5mYWlsKGwub3B0cy5mYWlsKS5hbHdheXMobC5vcHRzLmFsd2F5cyksZC5meC50aW1lcihkLmV4dGVuZChtLHtlbGVtOmEsYW5pbTpsLHF1ZXVlOmwub3B0cy5xdWV1ZX0pKSxsfWZ1bmN0aW9uIEMoYSl7cmV0dXJuKGEubWF0Y2goTGEpfHxbXSkuam9pbigiICIpfWZ1bmN0aW9uIEgoYSl7cmV0dXJuIGEuZ2V0QXR0cmlidXRlJiZhLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiJ9ZnVuY3Rpb24gUChhKXtyZXR1cm4gQXJyYXkuaXNBcnJheShhKT8KYToic3RyaW5nIj09dHlwZW9mIGEmJmEubWF0Y2goTGEpfHxbXX1mdW5jdGlvbiBlYShhLGIsYyxlKXt2YXIgZjtpZihBcnJheS5pc0FycmF5KGIpKWQuZWFjaChiLGZ1bmN0aW9uKGcsaCl7Y3x8VWMudGVzdChhKT9lKGEsaCk6ZWEoYSsiWyIrKCJvYmplY3QiPT10eXBlb2YgaCYmbnVsbCE9aD9nOiIiKSsiXSIsaCxjLGUpfSk7ZWxzZSBpZihjfHwib2JqZWN0IiE9PVUoYikpZShhLGIpO2Vsc2UgZm9yKGYgaW4gYillYShhKyJbIitmKyJdIixiW2ZdLGMsZSl9ZnVuY3Rpb24gUWEoYSl7cmV0dXJuIGZ1bmN0aW9uKGIsYyl7InN0cmluZyIhPXR5cGVvZiBiJiYoYz1iLGI9IioiKTt2YXIgZT0wLGY9Yi50b0xvd2VyQ2FzZSgpLm1hdGNoKExhKXx8W107aWYoTShjKSlmb3IoO2I9ZltlKytdOykiKyI9PT1iWzBdPyhiPWIuc2xpY2UoMSl8fCIqIiwoYVtiXT1hW2JdfHxbXSkudW5zaGlmdChjKSk6KGFbYl09YVtiXXx8W10pLnB1c2goYyl9fWZ1bmN0aW9uIEViKGEsYixjLGUpe2Z1bmN0aW9uIGYobSl7dmFyIGw7CnJldHVybiBnW21dPSEwLGQuZWFjaChhW21dfHxbXSxmdW5jdGlvbih0LHcpe3Q9dyhiLGMsZSk7cmV0dXJuInN0cmluZyIhPXR5cGVvZiB0fHxofHxnW3RdP2g\/IShsPXQpOnZvaWQgMDooYi5kYXRhVHlwZXMudW5zaGlmdCh0KSxmKHQpLCExKX0pLGx9dmFyIGc9e30saD1hPT09Y2M7cmV0dXJuIGYoYi5kYXRhVHlwZXNbMF0pfHwhZ1siKiJdJiZmKCIqIil9ZnVuY3Rpb24gaGIoYSxiKXt2YXIgYyxlLGY9ZC5hamF4U2V0dGluZ3MuZmxhdE9wdGlvbnN8fHt9O2ZvcihjIGluIGIpdm9pZCAwIT09YltjXSYmKChmW2NdP2E6ZXx8KGU9e30pKVtjXT1iW2NdKTtyZXR1cm4gZSYmZC5leHRlbmQoITAsYSxlKSxhfXZhciBvYT1bXSxzYz1PYmplY3QuZ2V0UHJvdG90eXBlT2YseWE9b2Euc2xpY2Usb2M9b2EuZmxhdD9mdW5jdGlvbihhKXtyZXR1cm4gb2EuZmxhdC5jYWxsKGEpfTpmdW5jdGlvbihhKXtyZXR1cm4gb2EuY29uY2F0LmFwcGx5KFtdLGEpfSx1Yj1vYS5wdXNoLE5hPW9hLmluZGV4T2YsCk1iPXt9LGtjPU1iLnRvU3RyaW5nLEZiPU1iLmhhc093blByb3BlcnR5LHRjPUZiLnRvU3RyaW5nLFZjPXRjLmNhbGwoT2JqZWN0KSxOPXt9LE09ZnVuY3Rpb24oYSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGEmJiJudW1iZXIiIT10eXBlb2YgYS5ub2RlVHlwZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGEuaXRlbX0sa2I9ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWEmJmE9PT1hLndpbmRvd30sTD1uLmRvY3VtZW50LExjPXt0eXBlOiEwLHNyYzohMCxub25jZTohMCxub01vZHVsZTohMH0sV2M9L0hUTUwkL2ksZD1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgZC5mbi5pbml0KGEsYil9O2QuZm49ZC5wcm90b3R5cGU9e2pxdWVyeToiMy43LjAiLGNvbnN0cnVjdG9yOmQsbGVuZ3RoOjAsdG9BcnJheTpmdW5jdGlvbigpe3JldHVybiB5YS5jYWxsKHRoaXMpfSxnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE\/eWEuY2FsbCh0aGlzKTowPmE\/dGhpc1thK3RoaXMubGVuZ3RoXTp0aGlzW2FdfSwKcHVzaFN0YWNrOmZ1bmN0aW9uKGEpe2E9ZC5tZXJnZSh0aGlzLmNvbnN0cnVjdG9yKCksYSk7cmV0dXJuIGEucHJldk9iamVjdD10aGlzLGF9LGVhY2g6ZnVuY3Rpb24oYSl7cmV0dXJuIGQuZWFjaCh0aGlzLGEpfSxtYXA6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGQubWFwKHRoaXMsZnVuY3Rpb24oYixjKXtyZXR1cm4gYS5jYWxsKGIsYyxiKX0pKX0sc2xpY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soeWEuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0sZmlyc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgwKX0sbGFzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKC0xKX0sZXZlbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayhkLmdyZXAodGhpcyxmdW5jdGlvbihhLGIpe3JldHVybihiKzEpJTJ9KSl9LG9kZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayhkLmdyZXAodGhpcyxmdW5jdGlvbihhLGIpe3JldHVybiBiJQoyfSkpfSxlcTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLmxlbmd0aDthPSthKygwPmE\/YjowKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soMDw9YSYmYTxiP1t0aGlzW2FdXTpbXSl9LGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnByZXZPYmplY3R8fHRoaXMuY29uc3RydWN0b3IoKX0scHVzaDp1Yixzb3J0Om9hLnNvcnQsc3BsaWNlOm9hLnNwbGljZX07ZC5leHRlbmQ9ZC5mbi5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgYSxiLGMsZSxmLGc9YXJndW1lbnRzWzBdfHx7fSxoPTEsbT1hcmd1bWVudHMubGVuZ3RoLGw9ITE7ImJvb2xlYW4iPT10eXBlb2YgZyYmKGw9ZyxnPWFyZ3VtZW50c1toXXx8e30saCsrKTsib2JqZWN0Ij09dHlwZW9mIGd8fE0oZyl8fChnPXt9KTtmb3IoaD09PW0mJihnPXRoaXMsaC0tKTtoPG07aCsrKWlmKG51bGwhPShhPWFyZ3VtZW50c1toXSkpZm9yKGIgaW4gYSl7dmFyIHQ9YVtiXTsiX19wcm90b19fIiE9PWImJmchPT10JiYobCYmdCYmKGQuaXNQbGFpbk9iamVjdCh0KXx8CihlPUFycmF5LmlzQXJyYXkodCkpKT8oYz1nW2JdLGY9ZSYmIUFycmF5LmlzQXJyYXkoYyk\/W106ZXx8ZC5pc1BsYWluT2JqZWN0KGMpP2M6e30sZT0hMSxnW2JdPWQuZXh0ZW5kKGwsZix0KSk6dm9pZCAwIT09dCYmKGdbYl09dCkpfXJldHVybiBnfTtkLmV4dGVuZCh7ZXhwYW5kbzoialF1ZXJ5IisoIjMuNy4wIitNYXRoLnJhbmRvbSgpKS5yZXBsYWNlKC9cRC9nLCIiKSxpc1JlYWR5OiEwLGVycm9yOmZ1bmN0aW9uKGEpe3Rocm93IEVycm9yKGEpO30sbm9vcDpmdW5jdGlvbigpe30saXNQbGFpbk9iamVjdDpmdW5jdGlvbihhKXt2YXIgYixjO3JldHVybiEoIWF8fCJbb2JqZWN0IE9iamVjdF0iIT09a2MuY2FsbChhKSkmJighKGI9c2MoYSkpfHwiZnVuY3Rpb24iPT10eXBlb2YoYz1GYi5jYWxsKGIsImNvbnN0cnVjdG9yIikmJmIuY29uc3RydWN0b3IpJiZ0Yy5jYWxsKGMpPT09VmMpfSxpc0VtcHR5T2JqZWN0OmZ1bmN0aW9uKGEpe2Zvcih2YXIgYiBpbiBhKXJldHVybiExO3JldHVybiEwfSwKZ2xvYmFsRXZhbDpmdW5jdGlvbihhLGIsYyl7d2EoYSx7bm9uY2U6YiYmYi5ub25jZX0sYyl9LGVhY2g6ZnVuY3Rpb24oYSxiKXt2YXIgYyxlPTA7aWYoZWIoYSkpZm9yKGM9YS5sZW5ndGg7ZTxjJiYhMSE9PWIuY2FsbChhW2VdLGUsYVtlXSk7ZSsrKTtlbHNlIGZvcihlIGluIGEpaWYoITE9PT1iLmNhbGwoYVtlXSxlLGFbZV0pKWJyZWFrO3JldHVybiBhfSx0ZXh0OmZ1bmN0aW9uKGEpe3ZhciBiLGM9IiIsZT0wO2lmKGI9YS5ub2RlVHlwZSl7aWYoMT09PWJ8fDk9PT1ifHwxMT09PWIpcmV0dXJuIGEudGV4dENvbnRlbnQ7aWYoMz09PWJ8fDQ9PT1iKXJldHVybiBhLm5vZGVWYWx1ZX1lbHNlIGZvcig7Yj1hW2UrK107KWMrPWQudGV4dChiKTtyZXR1cm4gY30sbWFrZUFycmF5OmZ1bmN0aW9uKGEsYil7Yj1ifHxbXTtyZXR1cm4gbnVsbCE9YSYmKGViKE9iamVjdChhKSk\/ZC5tZXJnZShiLCJzdHJpbmciPT10eXBlb2YgYT9bYV06YSk6dWIuY2FsbChiLGEpKSxifSxpbkFycmF5OmZ1bmN0aW9uKGEsCmIsYyl7cmV0dXJuIG51bGw9PWI\/LTE6TmEuY2FsbChiLGEsYyl9LGlzWE1MRG9jOmZ1bmN0aW9uKGEpe3ZhciBiPWEmJihhLm93bmVyRG9jdW1lbnR8fGEpLmRvY3VtZW50RWxlbWVudDtyZXR1cm4hV2MudGVzdChhJiZhLm5hbWVzcGFjZVVSSXx8YiYmYi5ub2RlTmFtZXx8IkhUTUwiKX0sbWVyZ2U6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9K2IubGVuZ3RoLGU9MCxmPWEubGVuZ3RoO2U8YztlKyspYVtmKytdPWJbZV07cmV0dXJuIGEubGVuZ3RoPWYsYX0sZ3JlcDpmdW5jdGlvbihhLGIsYyl7dmFyIGU9W10sZj0wLGc9YS5sZW5ndGg7Zm9yKGM9IWM7ZjxnO2YrKykhYihhW2ZdLGYpIT09YyYmZS5wdXNoKGFbZl0pO3JldHVybiBlfSxtYXA6ZnVuY3Rpb24oYSxiLGMpe3ZhciBlLGYsZz0wLGg9W107aWYoZWIoYSkpZm9yKGU9YS5sZW5ndGg7ZzxlO2crKyludWxsIT0oZj1iKGFbZ10sZyxjKSkmJmgucHVzaChmKTtlbHNlIGZvcihnIGluIGEpbnVsbCE9KGY9YihhW2ddLGcsYykpJiYKaC5wdXNoKGYpO3JldHVybiBvYyhoKX0sZ3VpZDoxLHN1cHBvcnQ6Tn0pOyJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihkLmZuW1N5bWJvbC5pdGVyYXRvcl09b2FbU3ltYm9sLml0ZXJhdG9yXSk7ZC5lYWNoKCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0IEVycm9yIFN5bWJvbCIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLGIpe01iWyJbb2JqZWN0ICIrYisiXSJdPWIudG9Mb3dlckNhc2UoKX0pO3ZhciBYYz1vYS5wb3AsWWM9b2Euc29ydCxaYz1vYS5zcGxpY2UsemI9UmVnRXhwKCJeW1xceDIwXFx0XFxyXFxuXFxmXSt8KCg\/Ol58W15cXFxcXSkoPzpcXFxcLikqKVtcXHgyMFxcdFxcclxcblxcZl0rJCIsImciKTtkLmNvbnRhaW5zPWZ1bmN0aW9uKGEsYil7Yj1iJiZiLnBhcmVudE5vZGU7cmV0dXJuIGE9PT1ifHwhKCFifHwxIT09Yi5ub2RlVHlwZXx8IShhLmNvbnRhaW5zP2EuY29udGFpbnMoYik6YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiYmCjE2JmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYikpKX07dmFyICRjPS8oW1wwLVx4MWZceDdmXXxeLT9cZCl8Xi0kfFteXHg4MC1cdUZGRkZcdy1dL2c7ZC5lc2NhcGVTZWxlY3Rvcj1mdW5jdGlvbihhKXtyZXR1cm4oYSsiIikucmVwbGFjZSgkYyxiYSl9O3ZhciBSYT1MOyFmdW5jdGlvbigpe2Z1bmN0aW9uIGEoayxwLHEsdil7dmFyIHksRSxBLEksQj1wJiZwLm93bmVyRG9jdW1lbnQsSj1wP3Aubm9kZVR5cGU6OTtpZihxPXF8fFtdLCJzdHJpbmciIT10eXBlb2Yga3x8IWt8fDEhPT1KJiY5IT09SiYmMTEhPT1KKXJldHVybiBxO2lmKCF2JiYodChwKSxwPXB8fFosdmEpKXtpZigxMSE9PUomJihJPWFkLmV4ZWMoaykpKWlmKHk9SVsxXSlpZig5PT09Sil7aWYoIShFPXAuZ2V0RWxlbWVudEJ5SWQoeSkpKXJldHVybiBxO2lmKEUuaWQ9PT15KXJldHVybiB0YS5jYWxsKHEsRSkscX1lbHNle2lmKEImJihFPUIuZ2V0RWxlbWVudEJ5SWQoeSkpJiZhLmNvbnRhaW5zKHAsRSkmJkUuaWQ9PT0KeSlyZXR1cm4gdGEuY2FsbChxLEUpLHF9ZWxzZXtpZihJWzJdKXJldHVybiB0YS5hcHBseShxLHAuZ2V0RWxlbWVudHNCeVRhZ05hbWUoaykpLHE7aWYoKHk9SVszXSkmJnAuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSlyZXR1cm4gdGEuYXBwbHkocSxwLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoeSkpLHF9aWYoIShZW2srIiAiXXx8a2EmJmthLnRlc3QoaykpKXtpZih5PWssQj1wLDE9PT1KJiYodmIudGVzdChrKXx8SGEudGVzdChrKSkpeyhCPWRjLnRlc3QoaykmJmwocC5wYXJlbnROb2RlKXx8cCk9PXAmJk4uc2NvcGV8fCgoQT1wLmdldEF0dHJpYnV0ZSgiaWQiKSk\/QT1kLmVzY2FwZVNlbGVjdG9yKEEpOnAuc2V0QXR0cmlidXRlKCJpZCIsQT1XKSk7Zm9yKEo9KHk9cihrKSkubGVuZ3RoO0otLTspeVtKXT0oQT8iIyIrQToiOnNjb3BlIikrIiAiK3ooeVtKXSk7eT15LmpvaW4oIiwiKX10cnl7cmV0dXJuIHRhLmFwcGx5KHEsQi5xdWVyeVNlbGVjdG9yQWxsKHkpKSxxfWNhdGNoKFIpe1koaywKITApfWZpbmFsbHl7QT09PVcmJnAucmVtb3ZlQXR0cmlidXRlKCJpZCIpfX19cmV0dXJuIFNhKGsucmVwbGFjZSh6YiwiJDEiKSxwLHEsdil9ZnVuY3Rpb24gYigpe3ZhciBrPVtdO3JldHVybiBmdW5jdGlvbiB5KHEsdil7cmV0dXJuIGsucHVzaChxKyIgIik+Sy5jYWNoZUxlbmd0aCYmZGVsZXRlIHlbay5zaGlmdCgpXSx5W3ErIiAiXT12fX1mdW5jdGlvbiBjKGspe3JldHVybiBrW1ddPSEwLGt9ZnVuY3Rpb24gZShrKXt2YXIgcD1aLmNyZWF0ZUVsZW1lbnQoImZpZWxkc2V0Iik7dHJ5e3JldHVybiEhayhwKX1jYXRjaChxKXtyZXR1cm4hMX1maW5hbGx5e3AucGFyZW50Tm9kZSYmcC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHApfX1mdW5jdGlvbiBmKGspe3JldHVybiBmdW5jdGlvbihwKXtyZXR1cm4gWChwLCJpbnB1dCIpJiZwLnR5cGU9PT1rfX1mdW5jdGlvbiBnKGspe3JldHVybiBmdW5jdGlvbihwKXtyZXR1cm4oWChwLCJpbnB1dCIpfHxYKHAsImJ1dHRvbiIpKSYmcC50eXBlPT09Cmt9fWZ1bmN0aW9uIGgoayl7cmV0dXJuIGZ1bmN0aW9uKHApe3JldHVybiJmb3JtImluIHA\/cC5wYXJlbnROb2RlJiYhMT09PXAuZGlzYWJsZWQ\/ImxhYmVsImluIHA\/ImxhYmVsImluIHAucGFyZW50Tm9kZT9wLnBhcmVudE5vZGUuZGlzYWJsZWQ9PT1rOnAuZGlzYWJsZWQ9PT1rOnAuaXNEaXNhYmxlZD09PWt8fHAuaXNEaXNhYmxlZCE9PSFrJiZiZChwKT09PWs6cC5kaXNhYmxlZD09PWs6ImxhYmVsImluIHAmJnAuZGlzYWJsZWQ9PT1rfX1mdW5jdGlvbiBtKGspe3JldHVybiBjKGZ1bmN0aW9uKHApe3JldHVybiBwPStwLGMoZnVuY3Rpb24ocSx2KXtmb3IodmFyIHksRT1rKFtdLHEubGVuZ3RoLHApLEE9RS5sZW5ndGg7QS0tOylxW3k9RVtBXV0mJihxW3ldPSEodlt5XT1xW3ldKSl9KX0pfWZ1bmN0aW9uIGwoayl7cmV0dXJuIGsmJiJ1bmRlZmluZWQiIT10eXBlb2Ygay5nZXRFbGVtZW50c0J5VGFnTmFtZSYma31mdW5jdGlvbiB0KGspe3ZhciBwO2s9az9rLm93bmVyRG9jdW1lbnR8fAprOlJhO3JldHVybiBrIT1aJiY5PT09ay5ub2RlVHlwZSYmay5kb2N1bWVudEVsZW1lbnQmJihyYT0oWj1rKS5kb2N1bWVudEVsZW1lbnQsdmE9IWQuaXNYTUxEb2MoWiksTWE9cmEubWF0Y2hlc3x8cmEud2Via2l0TWF0Y2hlc1NlbGVjdG9yfHxyYS5tc01hdGNoZXNTZWxlY3RvcixSYSE9WiYmKHA9Wi5kZWZhdWx0VmlldykmJnAudG9wIT09cCYmcC5hZGRFdmVudExpc3RlbmVyKCJ1bmxvYWQiLGNkKSxOLmdldEJ5SWQ9ZShmdW5jdGlvbihxKXtyZXR1cm4gcmEuYXBwZW5kQ2hpbGQocSkuaWQ9ZC5leHBhbmRvLCFaLmdldEVsZW1lbnRzQnlOYW1lfHwhWi5nZXRFbGVtZW50c0J5TmFtZShkLmV4cGFuZG8pLmxlbmd0aH0pLE4uZGlzY29ubmVjdGVkTWF0Y2g9ZShmdW5jdGlvbihxKXtyZXR1cm4gTWEuY2FsbChxLCIqIil9KSxOLnNjb3BlPWUoZnVuY3Rpb24oKXtyZXR1cm4gWi5xdWVyeVNlbGVjdG9yQWxsKCI6c2NvcGUiKX0pLE4uY3NzSGFzPWUoZnVuY3Rpb24oKXt0cnl7cmV0dXJuIFoucXVlcnlTZWxlY3RvcigiOmhhcygqLDpqcWZha2UpIiksCiExfWNhdGNoKHEpe3JldHVybiEwfX0pLE4uZ2V0QnlJZD8oSy5maWx0ZXIuSUQ9ZnVuY3Rpb24ocSl7dmFyIHY9cS5yZXBsYWNlKFRhLFVhKTtyZXR1cm4gZnVuY3Rpb24oeSl7cmV0dXJuIHkuZ2V0QXR0cmlidXRlKCJpZCIpPT09dn19LEsuZmluZC5JRD1mdW5jdGlvbihxLHYpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2Ygdi5nZXRFbGVtZW50QnlJZCYmdmEpcmV0dXJuKHE9di5nZXRFbGVtZW50QnlJZChxKSk\/W3FdOltdfSk6KEsuZmlsdGVyLklEPWZ1bmN0aW9uKHEpe3ZhciB2PXEucmVwbGFjZShUYSxVYSk7cmV0dXJuIGZ1bmN0aW9uKHkpe3JldHVybih5PSJ1bmRlZmluZWQiIT10eXBlb2YgeS5nZXRBdHRyaWJ1dGVOb2RlJiZ5LmdldEF0dHJpYnV0ZU5vZGUoImlkIikpJiZ5LnZhbHVlPT09dn19LEsuZmluZC5JRD1mdW5jdGlvbihxLHYpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2Ygdi5nZXRFbGVtZW50QnlJZCYmdmEpe3ZhciB5LEU9di5nZXRFbGVtZW50QnlJZChxKTtpZihFKXtpZigoeT0KRS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpKSYmeS52YWx1ZT09PXEpcmV0dXJuW0VdO3ZhciBBPXYuZ2V0RWxlbWVudHNCeU5hbWUocSk7Zm9yKHY9MDtFPUFbdisrXTspaWYoKHk9RS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpKSYmeS52YWx1ZT09PXEpcmV0dXJuW0VdfXJldHVybltdfX0pLEsuZmluZC5UQUc9ZnVuY3Rpb24ocSx2KXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIHYuZ2V0RWxlbWVudHNCeVRhZ05hbWU\/di5nZXRFbGVtZW50c0J5VGFnTmFtZShxKTp2LnF1ZXJ5U2VsZWN0b3JBbGwocSl9LEsuZmluZC5DTEFTUz1mdW5jdGlvbihxLHYpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2Ygdi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lJiZ2YSlyZXR1cm4gdi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKHEpfSxrYT1bXSxlKGZ1bmN0aW9uKHEpe3ZhciB2O3JhLmFwcGVuZENoaWxkKHEpLmlubmVySFRNTD0iPGEgaWQ9JyIrVysiJyBocmVmPScnIGRpc2FibGVkPSdkaXNhYmxlZCc+PC9hPjxzZWxlY3QgaWQ9JyIrClcrIi1cclxcJyBkaXNhYmxlZD0nZGlzYWJsZWQnPjxvcHRpb24gc2VsZWN0ZWQ9Jyc+PC9vcHRpb24+PC9zZWxlY3Q+IjtxLnF1ZXJ5U2VsZWN0b3JBbGwoIltzZWxlY3RlZF0iKS5sZW5ndGh8fGthLnB1c2goIlxcW1tcXHgyMFxcdFxcclxcblxcZl0qKD86dmFsdWV8Y2hlY2tlZHxzZWxlY3RlZHxhc3luY3xhdXRvZm9jdXN8YXV0b3BsYXl8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGlzbWFwfGxvb3B8bXVsdGlwbGV8b3BlbnxyZWFkb25seXxyZXF1aXJlZHxzY29wZWQpIik7cS5xdWVyeVNlbGVjdG9yQWxsKCJbaWR+PSIrVysiLV0iKS5sZW5ndGh8fGthLnB1c2goIn49Iik7cS5xdWVyeVNlbGVjdG9yQWxsKCJhIyIrVysiKyoiKS5sZW5ndGh8fGthLnB1c2goIi4jLitbK35dIik7cS5xdWVyeVNlbGVjdG9yQWxsKCI6Y2hlY2tlZCIpLmxlbmd0aHx8a2EucHVzaCgiOmNoZWNrZWQiKTsodj1aLmNyZWF0ZUVsZW1lbnQoImlucHV0IikpLnNldEF0dHJpYnV0ZSgidHlwZSIsCiJoaWRkZW4iKTtxLmFwcGVuZENoaWxkKHYpLnNldEF0dHJpYnV0ZSgibmFtZSIsIkQiKTtyYS5hcHBlbmRDaGlsZChxKS5kaXNhYmxlZD0hMDsyIT09cS5xdWVyeVNlbGVjdG9yQWxsKCI6ZGlzYWJsZWQiKS5sZW5ndGgmJmthLnB1c2goIjplbmFibGVkIiwiOmRpc2FibGVkIik7KHY9Wi5jcmVhdGVFbGVtZW50KCJpbnB1dCIpKS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCIiKTtxLmFwcGVuZENoaWxkKHYpO3EucXVlcnlTZWxlY3RvckFsbCgiW25hbWU9JyddIikubGVuZ3RofHxrYS5wdXNoKCJcXFtbXFx4MjBcXHRcXHJcXG5cXGZdKm5hbWVbXFx4MjBcXHRcXHJcXG5cXGZdKj1bXFx4MjBcXHRcXHJcXG5cXGZdKig\/OicnfFwiXCIpIil9KSxOLmNzc0hhc3x8a2EucHVzaCgiOmhhcyIpLGthPWthLmxlbmd0aCYmbmV3IFJlZ0V4cChrYS5qb2luKCJ8IikpLGxhPWZ1bmN0aW9uKHEsdil7aWYocT09PXYpcmV0dXJuIGliPSEwLDA7dmFyIHk9IXEuY29tcGFyZURvY3VtZW50UG9zaXRpb24tIXYuY29tcGFyZURvY3VtZW50UG9zaXRpb247CnJldHVybiB5fHwoMSYoeT0ocS5vd25lckRvY3VtZW50fHxxKT09KHYub3duZXJEb2N1bWVudHx8dik\/cS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih2KToxKXx8IU4uc29ydERldGFjaGVkJiZ2LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHEpPT09eT9xPT09Wnx8cS5vd25lckRvY3VtZW50PT1SYSYmYS5jb250YWlucyhSYSxxKT8tMTp2PT09Wnx8di5vd25lckRvY3VtZW50PT1SYSYmYS5jb250YWlucyhSYSx2KT8xOmhhP05hLmNhbGwoaGEscSktTmEuY2FsbChoYSx2KTowOjQmeT8tMToxKX0pLFp9ZnVuY3Rpb24gdygpe31mdW5jdGlvbiByKGsscCl7dmFyIHEsdix5LEUsQSxJO2lmKEE9VmFbaysiICJdKXJldHVybiBwPzA6QS5zbGljZSgwKTtBPWs7dmFyIEI9W107Zm9yKEk9Sy5wcmVGaWx0ZXI7QTspe2ZvcihFIGluIHEmJiEodj1tYS5leGVjKEEpKXx8KHYmJihBPUEuc2xpY2UodlswXS5sZW5ndGgpfHxBKSxCLnB1c2goeT1bXSkpLHE9ITEsKHY9SGEuZXhlYyhBKSkmJihxPQp2LnNoaWZ0KCkseS5wdXNoKHt2YWx1ZTpxLHR5cGU6dlswXS5yZXBsYWNlKHpiLCIgIil9KSxBPUEuc2xpY2UocS5sZW5ndGgpKSxLLmZpbHRlcikhKHY9WWJbRV0uZXhlYyhBKSl8fElbRV0mJiEodj1JW0VdKHYpKXx8KHE9di5zaGlmdCgpLHkucHVzaCh7dmFsdWU6cSx0eXBlOkUsbWF0Y2hlczp2fSksQT1BLnNsaWNlKHEubGVuZ3RoKSk7aWYoIXEpYnJlYWt9cmV0dXJuIHA\/QS5sZW5ndGg6QT9hLmVycm9yKGspOlZhKGssQikuc2xpY2UoMCl9ZnVuY3Rpb24geihrKXtmb3IodmFyIHA9MCxxPWsubGVuZ3RoLHY9IiI7cDxxO3ArKyl2Kz1rW3BdLnZhbHVlO3JldHVybiB2fWZ1bmN0aW9uIEQoayxwLHEpe3ZhciB2PXAuZGlyLHk9cC5uZXh0LEU9eXx8dixBPXEmJiJwYXJlbnROb2RlIj09PUUsST1EYSsrO3JldHVybiBwLmZpcnN0P2Z1bmN0aW9uKEIsSixSKXtmb3IoO0I9Qlt2XTspaWYoMT09PUIubm9kZVR5cGV8fEEpcmV0dXJuIGsoQixKLFIpO3JldHVybiExfTpmdW5jdGlvbihCLApKLFIpe3ZhciBULFYsaWE9W2ZhLEldO2lmKFIpZm9yKDtCPUJbdl07KXtpZigoMT09PUIubm9kZVR5cGV8fEEpJiZrKEIsSixSKSlyZXR1cm4hMH1lbHNlIGZvcig7Qj1CW3ZdOylpZigxPT09Qi5ub2RlVHlwZXx8QSlpZihWPUJbV118fChCW1ddPXt9KSx5JiZYKEIseSkpQj1CW3ZdfHxCO2Vsc2V7aWYoKFQ9VltFXSkmJlRbMF09PT1mYSYmVFsxXT09PUkpcmV0dXJuIGlhWzJdPVRbMl07aWYoKFZbRV09aWEpWzJdPWsoQixKLFIpKXJldHVybiEwfXJldHVybiExfX1mdW5jdGlvbiBGKGspe3JldHVybiAxPGsubGVuZ3RoP2Z1bmN0aW9uKHAscSx2KXtmb3IodmFyIHk9ay5sZW5ndGg7eS0tOylpZigha1t5XShwLHEsdikpcmV0dXJuITE7cmV0dXJuITB9OmtbMF19ZnVuY3Rpb24gTyhrLHAscSx2LHkpe2Zvcih2YXIgRSxBPVtdLEk9MCxCPWsubGVuZ3RoLEo9bnVsbCE9cDtJPEI7SSsrKShFPWtbSV0pJiYocSYmIXEoRSx2LHkpfHwoQS5wdXNoKEUpLEomJnAucHVzaChJKSkpO3JldHVybiBBfQpmdW5jdGlvbiBhYShrLHAscSx2LHksRSl7cmV0dXJuIHYmJiF2W1ddJiYodj1hYSh2KSkseSYmIXlbV10mJih5PWFhKHksRSkpLGMoZnVuY3Rpb24oQSxJLEIsSil7dmFyIFIsVCxWPVtdLGlhPVtdLHBhPUkubGVuZ3RoLG5hO2lmKCEobmE9QSkpe25hPXB8fCIqIjtmb3IodmFyIEVhPUIubm9kZVR5cGU\/W0JdOkIsY2E9W10sQWE9MCxXYT1FYS5sZW5ndGg7QWE8V2E7QWErKylhKG5hLEVhW0FhXSxjYSk7bmE9Y2F9bmE9IWt8fCFBJiZwP25hOk8obmEsVixrLEIsSik7aWYocT9xKG5hLFQ9eXx8KEE\/azpwYXx8dik\/W106SSxCLEopOlQ9bmEsdil7dmFyIEZhPU8oVCxpYSk7dihGYSxbXSxCLEopO2ZvcihCPUZhLmxlbmd0aDtCLS07KShSPUZhW0JdKSYmKFRbaWFbQl1dPSEobmFbaWFbQl1dPVIpKX1pZihBKXtpZih5fHxrKXtpZih5KXtGYT1bXTtmb3IoQj1ULmxlbmd0aDtCLS07KShSPVRbQl0pJiZGYS5wdXNoKG5hW0JdPVIpO3kobnVsbCxUPVtdLEZhLEopfWZvcihCPVQubGVuZ3RoO0ItLTspKFI9ClRbQl0pJiYtMTwoRmE9eT9OYS5jYWxsKEEsUik6VltCXSkmJihBW0ZhXT0hKElbRmFdPVIpKX19ZWxzZSBUPU8oVD09PUk\/VC5zcGxpY2UocGEsVC5sZW5ndGgpOlQpLHk\/eShudWxsLEksVCxKKTp0YS5hcHBseShJLFQpfSl9ZnVuY3Rpb24gR2Eoayl7Zm9yKHZhciBwLHEsdj1rLmxlbmd0aCx5PUsucmVsYXRpdmVba1swXS50eXBlXSxFPXl8fEsucmVsYXRpdmVbIiAiXSxBPXk\/MTowLEk9RChmdW5jdGlvbihSKXtyZXR1cm4gUj09PXB9LEUsITApLEI9RChmdW5jdGlvbihSKXtyZXR1cm4tMTxOYS5jYWxsKHAsUil9LEUsITApLEo9W2Z1bmN0aW9uKFIsVCxWKXtSPSF5JiYoVnx8VCE9Uyl8fCgocD1UKS5ub2RlVHlwZT9JKFIsVCxWKTpCKFIsVCxWKSk7cmV0dXJuIHA9bnVsbCxSfV07QTx2O0ErKylpZihFPUsucmVsYXRpdmVba1tBXS50eXBlXSlKPVtEKEYoSiksRSldO2Vsc2V7aWYoKEU9Sy5maWx0ZXJba1tBXS50eXBlXS5hcHBseShudWxsLGtbQV0ubWF0Y2hlcykpW1ddKXtmb3IocT0KKytBO3E8diYmIUsucmVsYXRpdmVba1txXS50eXBlXTtxKyspO3JldHVybiBhYSgxPEEmJkYoSiksMTxBJiZ6KGsuc2xpY2UoMCxBLTEpLmNvbmNhdCh7dmFsdWU6IiAiPT09a1tBLTJdLnR5cGU\/IioiOiIifSkpLnJlcGxhY2UoemIsIiQxIiksRSxBPHEmJkdhKGsuc2xpY2UoQSxxKSkscTx2JiZHYShrPWsuc2xpY2UocSkpLHE8diYmeihrKSl9Si5wdXNoKEUpfXJldHVybiBGKEopfWZ1bmN0aW9uIHFhKGsscCl7dmFyIHEsdix5LEUsQT1bXSxJPVtdLEI9dWFbaysiICJdO2lmKCFCKXtwfHwocD1yKGspKTtmb3IocT1wLmxlbmd0aDtxLS07KShCPUdhKHBbcV0pKVtXXT9BLnB1c2goQik6SS5wdXNoKEIpOyhCPXVhKGssKHY9MDxBLmxlbmd0aCx5PTA8SS5sZW5ndGgsRT1mdW5jdGlvbihKLFIsVCxWLGlhKXt2YXIgcGEsbmEsRWE9MCxjYT0iMCIsQWE9SiYmW10sV2E9W10sRmE9Uyx1Yz1KfHx5JiZLLmZpbmQuVEFHKCIqIixpYSksdmM9ZmErPW51bGw9PUZhPzE6TWF0aC5yYW5kb20oKXx8Ci4xLGRkPXVjLmxlbmd0aDtmb3IoaWEmJihTPVI9PVp8fFJ8fGlhKTtjYSE9PWRkJiZudWxsIT0ocGE9dWNbY2FdKTtjYSsrKXtpZih5JiZwYSl7dmFyIGVjPTA7Zm9yKFJ8fHBhLm93bmVyRG9jdW1lbnQ9PVp8fCh0KHBhKSxUPSF2YSk7bmE9SVtlYysrXTspaWYobmEocGEsUnx8WixUKSl7dGEuY2FsbChWLHBhKTticmVha31pYSYmKGZhPXZjKX12JiYoKHBhPSFuYSYmcGEpJiZFYS0tLEomJkFhLnB1c2gocGEpKX1pZihFYSs9Y2EsdiYmY2EhPT1FYSl7Zm9yKGVjPTA7bmE9QVtlYysrXTspbmEoQWEsV2EsUixUKTtpZihKKXtpZigwPEVhKWZvcig7Y2EtLTspQWFbY2FdfHxXYVtjYV18fChXYVtjYV09WGMuY2FsbChWKSk7V2E9TyhXYSl9dGEuYXBwbHkoVixXYSk7aWEmJiFKJiYwPFdhLmxlbmd0aCYmMTxFYStBLmxlbmd0aCYmZC51bmlxdWVTb3J0KFYpfXJldHVybiBpYSYmKGZhPXZjLFM9RmEpLEFhfSx2P2MoRSk6RSkpKS5zZWxlY3Rvcj1rfXJldHVybiBCfWZ1bmN0aW9uIFNhKGssCnAscSx2KXt2YXIgeSxFLEEsSSxCLEo9ImZ1bmN0aW9uIj09dHlwZW9mIGsmJmssUj0hdiYmcihrPUouc2VsZWN0b3J8fGspO2lmKHE9cXx8W10sMT09PVIubGVuZ3RoKXtpZigyPChFPVJbMF09UlswXS5zbGljZSgwKSkubGVuZ3RoJiYiSUQiPT09KEE9RVswXSkudHlwZSYmOT09PXAubm9kZVR5cGUmJnZhJiZLLnJlbGF0aXZlW0VbMV0udHlwZV0pe2lmKCEocD0oSy5maW5kLklEKEEubWF0Y2hlc1swXS5yZXBsYWNlKFRhLFVhKSxwKXx8W10pWzBdKSlyZXR1cm4gcTtKJiYocD1wLnBhcmVudE5vZGUpO2s9ay5zbGljZShFLnNoaWZ0KCkudmFsdWUubGVuZ3RoKX1mb3IoeT1ZYi5uZWVkc0NvbnRleHQudGVzdChrKT8wOkUubGVuZ3RoO3ktLSYmKEE9RVt5XSwhSy5yZWxhdGl2ZVtJPUEudHlwZV0pOylpZigoQj1LLmZpbmRbSV0pJiYodj1CKEEubWF0Y2hlc1swXS5yZXBsYWNlKFRhLFVhKSxkYy50ZXN0KEVbMF0udHlwZSkmJmwocC5wYXJlbnROb2RlKXx8cCkpKXtpZihFLnNwbGljZSh5LAoxKSwhKGs9di5sZW5ndGgmJnooRSkpKXJldHVybiB0YS5hcHBseShxLHYpLHE7YnJlYWt9fXJldHVybihKfHxxYShrLFIpKSh2LHAsIXZhLHEsIXB8fGRjLnRlc3QoaykmJmwocC5wYXJlbnROb2RlKXx8cCkscX12YXIgUSxLLFMsaGEsaWIsWixyYSx2YSxrYSxNYSx0YT11YixXPWQuZXhwYW5kbyxmYT0wLERhPTAsZGI9YigpLFZhPWIoKSx1YT1iKCksWT1iKCksbGE9ZnVuY3Rpb24oayxwKXtyZXR1cm4gaz09PXAmJihpYj0hMCksMH0sSWE9UmVnRXhwKCJbXFx4MjBcXHRcXHJcXG5cXGZdKyIsImciKSxtYT1SZWdFeHAoIl5bXFx4MjBcXHRcXHJcXG5cXGZdKixbXFx4MjBcXHRcXHJcXG5cXGZdKiIpLEhhPVJlZ0V4cCgiXltcXHgyMFxcdFxcclxcblxcZl0qKFs+K35dfFtcXHgyMFxcdFxcclxcblxcZl0pW1xceDIwXFx0XFxyXFxuXFxmXSoiKSx2Yj1SZWdFeHAoIltcXHgyMFxcdFxcclxcblxcZl18PiIpLGZjPVJlZ0V4cCgiOigoPzpcXFxcW1xcZGEtZkEtRl17MSw2fVtcXHgyMFxcdFxcclxcblxcZl0\/fFxcXFxbXlxcclxcblxcZl18W1xcdy1dfFteXHgwMC1cXHg3Zl0pKykoPzpcXCgoKCcoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg\/OlxcXFwufFteXFxcXFwiXSkqKVwiKXwoKD86XFxcXC58W15cXFxcKClbXFxdXXxcXFtbXFx4MjBcXHRcXHJcXG5cXGZdKigoPzpcXFxcW1xcZGEtZkEtRl17MSw2fVtcXHgyMFxcdFxcclxcblxcZl0\/fFxcXFxbXlxcclxcblxcZl18W1xcdy1dfFteXHgwMC1cXHg3Zl0pKykoPzpbXFx4MjBcXHRcXHJcXG5cXGZdKihbKl4kfCF+XT89KVtcXHgyMFxcdFxcclxcblxcZl0qKD86JygoPzpcXFxcLnxbXlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15cXFxcXCJdKSopXCJ8KCg\/OlxcXFxbXFxkYS1mQS1GXXsxLDZ9W1xceDIwXFx0XFxyXFxuXFxmXT98XFxcXFteXFxyXFxuXFxmXXxbXFx3LV18W15ceDAwLVxceDdmXSkrKSl8KVtcXHgyMFxcdFxcclxcblxcZl0qXFxdKSopfC4qKVxcKXwpIiksCmVkPVJlZ0V4cCgiXig\/OlxcXFxbXFxkYS1mQS1GXXsxLDZ9W1xceDIwXFx0XFxyXFxuXFxmXT98XFxcXFteXFxyXFxuXFxmXXxbXFx3LV18W15ceDAwLVxceDdmXSkrJCIpLFliPXtJRDpSZWdFeHAoIl4jKCg\/OlxcXFxbXFxkYS1mQS1GXXsxLDZ9W1xceDIwXFx0XFxyXFxuXFxmXT98XFxcXFteXFxyXFxuXFxmXXxbXFx3LV18W15ceDAwLVxceDdmXSkrKSIpLENMQVNTOlJlZ0V4cCgiXlxcLigoPzpcXFxcW1xcZGEtZkEtRl17MSw2fVtcXHgyMFxcdFxcclxcblxcZl0\/fFxcXFxbXlxcclxcblxcZl18W1xcdy1dfFteXHgwMC1cXHg3Zl0pKykiKSxUQUc6UmVnRXhwKCJeKCg\/OlxcXFxbXFxkYS1mQS1GXXsxLDZ9W1xceDIwXFx0XFxyXFxuXFxmXT98XFxcXFteXFxyXFxuXFxmXXxbXFx3LV18W15ceDAwLVxceDdmXSkrfFsqXSkiKSxBVFRSOlJlZ0V4cCgiXlxcW1tcXHgyMFxcdFxcclxcblxcZl0qKCg\/OlxcXFxbXFxkYS1mQS1GXXsxLDZ9W1xceDIwXFx0XFxyXFxuXFxmXT98XFxcXFteXFxyXFxuXFxmXXxbXFx3LV18W15ceDAwLVxceDdmXSkrKSg\/OltcXHgyMFxcdFxcclxcblxcZl0qKFsqXiR8IX5dPz0pW1xceDIwXFx0XFxyXFxuXFxmXSooPzonKCg\/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcInwoKD86XFxcXFtcXGRhLWZBLUZdezEsNn1bXFx4MjBcXHRcXHJcXG5cXGZdP3xcXFxcW15cXHJcXG5cXGZdfFtcXHctXXxbXlx4MDAtXFx4N2ZdKSspKXwpW1xceDIwXFx0XFxyXFxuXFxmXSpcXF0iKSwKUFNFVURPOlJlZ0V4cCgiXjooKD86XFxcXFtcXGRhLWZBLUZdezEsNn1bXFx4MjBcXHRcXHJcXG5cXGZdP3xcXFxcW15cXHJcXG5cXGZdfFtcXHctXXxbXlx4MDAtXFx4N2ZdKSspKD86XFwoKCgnKCg\/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcIil8KCg\/OlxcXFwufFteXFxcXCgpW1xcXV18XFxbW1xceDIwXFx0XFxyXFxuXFxmXSooKD86XFxcXFtcXGRhLWZBLUZdezEsNn1bXFx4MjBcXHRcXHJcXG5cXGZdP3xcXFxcW15cXHJcXG5cXGZdfFtcXHctXXxbXlx4MDAtXFx4N2ZdKSspKD86W1xceDIwXFx0XFxyXFxuXFxmXSooWypeJHwhfl0\/PSlbXFx4MjBcXHRcXHJcXG5cXGZdKig\/OicoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg\/OlxcXFwufFteXFxcXFwiXSkqKVwifCgoPzpcXFxcW1xcZGEtZkEtRl17MSw2fVtcXHgyMFxcdFxcclxcblxcZl0\/fFxcXFxbXlxcclxcblxcZl18W1xcdy1dfFteXHgwMC1cXHg3Zl0pKykpfClbXFx4MjBcXHRcXHJcXG5cXGZdKlxcXSkqKXwuKilcXCl8KSIpLApDSElMRDpSZWdFeHAoIl46KG9ubHl8Zmlyc3R8bGFzdHxudGh8bnRoLWxhc3QpLShjaGlsZHxvZi10eXBlKSg\/OlxcKFtcXHgyMFxcdFxcclxcblxcZl0qKGV2ZW58b2RkfCgoWystXXwpKFxcZCopbnwpW1xceDIwXFx0XFxyXFxuXFxmXSooPzooWystXXwpW1xceDIwXFx0XFxyXFxuXFxmXSooXFxkKyl8KSlbXFx4MjBcXHRcXHJcXG5cXGZdKlxcKXwpIiwiaSIpLGJvb2w6UmVnRXhwKCJeKD86Y2hlY2tlZHxzZWxlY3RlZHxhc3luY3xhdXRvZm9jdXN8YXV0b3BsYXl8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGlzbWFwfGxvb3B8bXVsdGlwbGV8b3BlbnxyZWFkb25seXxyZXF1aXJlZHxzY29wZWQpJCIsImkiKSxuZWVkc0NvbnRleHQ6UmVnRXhwKCJeW1xceDIwXFx0XFxyXFxuXFxmXSpbPit+XXw6KGV2ZW58b2RkfGVxfGd0fGx0fG50aHxmaXJzdHxsYXN0KSg\/OlxcKFtcXHgyMFxcdFxcclxcblxcZl0qKCg\/Oi1cXGQpP1xcZCopW1xceDIwXFx0XFxyXFxuXFxmXSpcXCl8KSg\/PVteLV18JCkiLAoiaSIpfSxmZD0vXig\/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLGdkPS9eaFxkJC9pLGFkPS9eKD86IyhbXHctXSspfChcdyspfFwuKFtcdy1dKykpJC8sZGM9L1srfl0vLFRhPVJlZ0V4cCgiXFxcXFtcXGRhLWZBLUZdezEsNn1bXFx4MjBcXHRcXHJcXG5cXGZdP3xcXFxcKFteXFxyXFxuXFxmXSkiLCJnIiksVWE9ZnVuY3Rpb24oayxwKXtrPSIweCIray5zbGljZSgxKS02NTUzNjtyZXR1cm4gcHx8KDA+az9TdHJpbmcuZnJvbUNoYXJDb2RlKGsrNjU1MzYpOlN0cmluZy5mcm9tQ2hhckNvZGUoaz4+MTB8NTUyOTYsMTAyMyZrfDU2MzIwKSl9LGNkPWZ1bmN0aW9uKCl7dCgpfSxiZD1EKGZ1bmN0aW9uKGspe3JldHVybiEwPT09ay5kaXNhYmxlZCYmWChrLCJmaWVsZHNldCIpfSx7ZGlyOiJwYXJlbnROb2RlIixuZXh0OiJsZWdlbmQifSk7dHJ5e3RhLmFwcGx5KG9hPXlhLmNhbGwoUmEuY2hpbGROb2RlcyksUmEuY2hpbGROb2Rlcyksb2FbUmEuY2hpbGROb2Rlcy5sZW5ndGhdLm5vZGVUeXBlfWNhdGNoKGspe3RhPQp7YXBwbHk6ZnVuY3Rpb24ocCxxKXt1Yi5hcHBseShwLHlhLmNhbGwocSkpfSxjYWxsOmZ1bmN0aW9uKHApe3ViLmFwcGx5KHAseWEuY2FsbChhcmd1bWVudHMsMSkpfX19Zm9yKFEgaW4gYS5tYXRjaGVzPWZ1bmN0aW9uKGsscCl7cmV0dXJuIGEoayxudWxsLG51bGwscCl9LGEubWF0Y2hlc1NlbGVjdG9yPWZ1bmN0aW9uKGsscCl7aWYodChrKSwhKCF2YXx8WVtwKyIgIl18fGthJiZrYS50ZXN0KHApKSl0cnl7dmFyIHE9TWEuY2FsbChrLHApO2lmKHF8fE4uZGlzY29ubmVjdGVkTWF0Y2h8fGsuZG9jdW1lbnQmJjExIT09ay5kb2N1bWVudC5ub2RlVHlwZSlyZXR1cm4gcX1jYXRjaCh2KXtZKHAsITApfXJldHVybiAwPGEocCxaLG51bGwsW2tdKS5sZW5ndGh9LGEuY29udGFpbnM9ZnVuY3Rpb24oayxwKXtyZXR1cm4oay5vd25lckRvY3VtZW50fHxrKSE9WiYmdChrKSxkLmNvbnRhaW5zKGsscCl9LGEuYXR0cj1mdW5jdGlvbihrLHApeyhrLm93bmVyRG9jdW1lbnR8fGspIT1aJiZ0KGspOwp2YXIgcT1LLmF0dHJIYW5kbGVbcC50b0xvd2VyQ2FzZSgpXTtxPXEmJkZiLmNhbGwoSy5hdHRySGFuZGxlLHAudG9Mb3dlckNhc2UoKSk\/cShrLHAsIXZhKTp2b2lkIDA7cmV0dXJuIHZvaWQgMCE9PXE\/cTprLmdldEF0dHJpYnV0ZShwKX0sYS5lcnJvcj1mdW5jdGlvbihrKXt0aHJvdyBFcnJvcigiU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIitrKTt9LGQudW5pcXVlU29ydD1mdW5jdGlvbihrKXt2YXIgcCxxPVtdLHY9MCx5PTA7aWYoaWI9IU4uc29ydFN0YWJsZSxoYT0hTi5zb3J0U3RhYmxlJiZ5YS5jYWxsKGssMCksWWMuY2FsbChrLGxhKSxpYil7Zm9yKDtwPWtbeSsrXTspcD09PWtbeV0mJih2PXEucHVzaCh5KSk7Zm9yKDt2LS07KVpjLmNhbGwoayxxW3ZdLDEpfXJldHVybiBoYT1udWxsLGt9LGQuZm4udW5pcXVlU29ydD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayhkLnVuaXF1ZVNvcnQoeWEuYXBwbHkodGhpcykpKX0sKEs9ZC5leHByPQp7Y2FjaGVMZW5ndGg6NTAsY3JlYXRlUHNldWRvOmMsbWF0Y2g6WWIsYXR0ckhhbmRsZTp7fSxmaW5kOnt9LHJlbGF0aXZlOnsiPiI6e2RpcjoicGFyZW50Tm9kZSIsZmlyc3Q6ITB9LCIgIjp7ZGlyOiJwYXJlbnROb2RlIn0sIisiOntkaXI6InByZXZpb3VzU2libGluZyIsZmlyc3Q6ITB9LCJ+Ijp7ZGlyOiJwcmV2aW91c1NpYmxpbmcifX0scHJlRmlsdGVyOntBVFRSOmZ1bmN0aW9uKGspe3JldHVybiBrWzFdPWtbMV0ucmVwbGFjZShUYSxVYSksa1szXT0oa1szXXx8a1s0XXx8a1s1XXx8IiIpLnJlcGxhY2UoVGEsVWEpLCJ+PSI9PT1rWzJdJiYoa1szXT0iICIra1szXSsiICIpLGsuc2xpY2UoMCw0KX0sQ0hJTEQ6ZnVuY3Rpb24oayl7cmV0dXJuIGtbMV09a1sxXS50b0xvd2VyQ2FzZSgpLCJudGgiPT09a1sxXS5zbGljZSgwLDMpPyhrWzNdfHxhLmVycm9yKGtbMF0pLGtbNF09KyhrWzRdP2tbNV0rKGtbNl18fDEpOjIqKCJldmVuIj09PWtbM118fCJvZGQiPT09a1szXSkpLGtbNV09Cisoa1s3XStrWzhdfHwib2RkIj09PWtbM10pKTprWzNdJiZhLmVycm9yKGtbMF0pLGt9LFBTRVVETzpmdW5jdGlvbihrKXt2YXIgcCxxPSFrWzZdJiZrWzJdO3JldHVybiBZYi5DSElMRC50ZXN0KGtbMF0pP251bGw6KGtbM10\/a1syXT1rWzRdfHxrWzVdfHwiIjpxJiZmYy50ZXN0KHEpJiYocD1yKHEsITApKSYmKHA9cS5pbmRleE9mKCIpIixxLmxlbmd0aC1wKS1xLmxlbmd0aCkmJihrWzBdPWtbMF0uc2xpY2UoMCxwKSxrWzJdPXEuc2xpY2UoMCxwKSksay5zbGljZSgwLDMpKX19LGZpbHRlcjp7VEFHOmZ1bmN0aW9uKGspe3ZhciBwPWsucmVwbGFjZShUYSxVYSkudG9Mb3dlckNhc2UoKTtyZXR1cm4iKiI9PT1rP2Z1bmN0aW9uKCl7cmV0dXJuITB9OmZ1bmN0aW9uKHEpe3JldHVybiBYKHEscCl9fSxDTEFTUzpmdW5jdGlvbihrKXt2YXIgcD1kYltrKyIgIl07cmV0dXJuIHB8fChwPW5ldyBSZWdFeHAoIihefFtcXHgyMFxcdFxcclxcblxcZl0pIitrKyIoW1xceDIwXFx0XFxyXFxuXFxmXXwkKSIpLApkYihrLGZ1bmN0aW9uKHEpe3JldHVybiBwLnRlc3QoInN0cmluZyI9PXR5cGVvZiBxLmNsYXNzTmFtZSYmcS5jbGFzc05hbWV8fCJ1bmRlZmluZWQiIT10eXBlb2YgcS5nZXRBdHRyaWJ1dGUmJnEuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9KSl9LEFUVFI6ZnVuY3Rpb24oayxwLHEpe3JldHVybiBmdW5jdGlvbih2KXt2PWEuYXR0cih2LGspO3JldHVybiBudWxsPT12PyIhPSI9PT1wOiFwfHwodis9IiIsIj0iPT09cD92PT09cToiIT0iPT09cD92IT09cToiXj0iPT09cD9xJiYwPT09di5pbmRleE9mKHEpOiIqPSI9PT1wP3EmJi0xPHYuaW5kZXhPZihxKToiJD0iPT09cD9xJiZ2LnNsaWNlKC1xLmxlbmd0aCk9PT1xOiJ+PSI9PT1wPy0xPCgiICIrdi5yZXBsYWNlKElhLCIgIikrIiAiKS5pbmRleE9mKHEpOiJ8PSI9PT1wJiYodj09PXF8fHYuc2xpY2UoMCxxLmxlbmd0aCsxKT09PXErIi0iKSl9fSxDSElMRDpmdW5jdGlvbihrLHAscSx2LHkpe3ZhciBFPSJudGgiIT09ay5zbGljZSgwLAozKSxBPSJsYXN0IiE9PWsuc2xpY2UoLTQpLEk9Im9mLXR5cGUiPT09cDtyZXR1cm4gMT09PXYmJjA9PT15P2Z1bmN0aW9uKEIpe3JldHVybiEhQi5wYXJlbnROb2RlfTpmdW5jdGlvbihCLEosUil7dmFyIFQsVixpYTtKPUUhPT1BPyJuZXh0U2libGluZyI6InByZXZpb3VzU2libGluZyI7dmFyIHBhPUIucGFyZW50Tm9kZSxuYT1JJiZCLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksRWE9IVImJiFJLGNhPSExO2lmKHBhKXtpZihFKXtmb3IoO0o7KXtmb3IoVj1CO1Y9VltKXTspaWYoST9YKFYsbmEpOjE9PT1WLm5vZGVUeXBlKXJldHVybiExO3ZhciBBYT1KPSJvbmx5Ij09PWsmJiFBYSYmIm5leHRTaWJsaW5nIn1yZXR1cm4hMH1pZihBYT1bQT9wYS5maXJzdENoaWxkOnBhLmxhc3RDaGlsZF0sQSYmRWEpZm9yKGNhPShpYT0oVD0oUj1wYVtXXXx8KHBhW1ddPXt9KSlba118fFtdKVswXT09PWZhJiZUWzFdKSYmVFsyXSxWPWlhJiZwYS5jaGlsZE5vZGVzW2lhXTtWPSsraWEmJlYmJlZbSl18fAooY2E9aWE9MCl8fEFhLnBvcCgpOyl7aWYoMT09PVYubm9kZVR5cGUmJisrY2EmJlY9PT1CKXtSW2tdPVtmYSxpYSxjYV07YnJlYWt9fWVsc2UgaWYoRWEmJihjYT1pYT0oVD0oQltXXXx8KEJbV109e30pKVtrXXx8W10pWzBdPT09ZmEmJlRbMV0pLCExPT09Y2EpZm9yKDsoVj0rK2lhJiZWJiZWW0pdfHwoY2E9aWE9MCl8fEFhLnBvcCgpKSYmKChJPyFYKFYsbmEpOjEhPT1WLm5vZGVUeXBlKXx8ISsrY2F8fChFYSYmKChSPVZbV118fChWW1ddPXt9KSlba109W2ZhLGNhXSksViE9PUIpKTspO3JldHVybihjYS09eSk9PT12fHwwPT1jYSV2JiYwPD1jYS92fX19LFBTRVVETzpmdW5jdGlvbihrLHApe3ZhciBxLHY9Sy5wc2V1ZG9zW2tdfHxLLnNldEZpbHRlcnNbay50b0xvd2VyQ2FzZSgpXXx8YS5lcnJvcigidW5zdXBwb3J0ZWQgcHNldWRvOiAiK2spO3JldHVybiB2W1ddP3YocCk6MTx2Lmxlbmd0aD8ocT1bayxrLCIiLHBdLEsuc2V0RmlsdGVycy5oYXNPd25Qcm9wZXJ0eShrLnRvTG93ZXJDYXNlKCkpPwpjKGZ1bmN0aW9uKHksRSl7Zm9yKHZhciBBLEk9dih5LHApLEI9SS5sZW5ndGg7Qi0tOyl5W0E9TmEuY2FsbCh5LElbQl0pXT0hKEVbQV09SVtCXSl9KTpmdW5jdGlvbih5KXtyZXR1cm4gdih5LDAscSl9KTp2fX0scHNldWRvczp7bm90OmMoZnVuY3Rpb24oayl7dmFyIHA9W10scT1bXSx2PXFhKGsucmVwbGFjZSh6YiwiJDEiKSk7cmV0dXJuIHZbV10\/YyhmdW5jdGlvbih5LEUsQSxJKXt2YXIgQjtBPXYoeSxudWxsLEksW10pO2ZvcihJPXkubGVuZ3RoO0ktLTspKEI9QVtJXSkmJih5W0ldPSEoRVtJXT1CKSl9KTpmdW5jdGlvbih5LEUsQSl7cmV0dXJuIHBbMF09eSx2KHAsbnVsbCxBLHEpLHBbMF09bnVsbCwhcS5wb3AoKX19KSxoYXM6YyhmdW5jdGlvbihrKXtyZXR1cm4gZnVuY3Rpb24ocCl7cmV0dXJuIDA8YShrLHApLmxlbmd0aH19KSxjb250YWluczpjKGZ1bmN0aW9uKGspe3JldHVybiBrPWsucmVwbGFjZShUYSxVYSksZnVuY3Rpb24ocCl7cmV0dXJuLTE8KHAudGV4dENvbnRlbnR8fApkLnRleHQocCkpLmluZGV4T2Yoayl9fSksbGFuZzpjKGZ1bmN0aW9uKGspe3JldHVybiBlZC50ZXN0KGt8fCIiKXx8YS5lcnJvcigidW5zdXBwb3J0ZWQgbGFuZzogIitrKSxrPWsucmVwbGFjZShUYSxVYSkudG9Mb3dlckNhc2UoKSxmdW5jdGlvbihwKXt2YXIgcTtkbyBpZihxPXZhP3AubGFuZzpwLmdldEF0dHJpYnV0ZSgieG1sOmxhbmciKXx8cC5nZXRBdHRyaWJ1dGUoImxhbmciKSlyZXR1cm4ocT1xLnRvTG93ZXJDYXNlKCkpPT09a3x8MD09PXEuaW5kZXhPZihrKyItIik7d2hpbGUoKHA9cC5wYXJlbnROb2RlKSYmMT09PXAubm9kZVR5cGUpO3JldHVybiExfX0pLHRhcmdldDpmdW5jdGlvbihrKXt2YXIgcD1uLmxvY2F0aW9uJiZuLmxvY2F0aW9uLmhhc2g7cmV0dXJuIHAmJnAuc2xpY2UoMSk9PT1rLmlkfSxyb290OmZ1bmN0aW9uKGspe3JldHVybiBrPT09cmF9LGZvY3VzOmZ1bmN0aW9uKGspe2E6e3RyeXt2YXIgcD1aLmFjdGl2ZUVsZW1lbnQ7YnJlYWsgYX1jYXRjaChxKXt9cD0Kdm9pZCAwfXJldHVybiBrPT09cCYmWi5oYXNGb2N1cygpJiYhIShrLnR5cGV8fGsuaHJlZnx8fmsudGFiSW5kZXgpfSxlbmFibGVkOmgoITEpLGRpc2FibGVkOmgoITApLGNoZWNrZWQ6ZnVuY3Rpb24oayl7cmV0dXJuIFgoaywiaW5wdXQiKSYmISFrLmNoZWNrZWR8fFgoaywib3B0aW9uIikmJiEhay5zZWxlY3RlZH0sc2VsZWN0ZWQ6ZnVuY3Rpb24oayl7cmV0dXJuIGsucGFyZW50Tm9kZSYmay5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgsITA9PT1rLnNlbGVjdGVkfSxlbXB0eTpmdW5jdGlvbihrKXtmb3Ioaz1rLmZpcnN0Q2hpbGQ7aztrPWsubmV4dFNpYmxpbmcpaWYoNj5rLm5vZGVUeXBlKXJldHVybiExO3JldHVybiEwfSxwYXJlbnQ6ZnVuY3Rpb24oayl7cmV0dXJuIUsucHNldWRvcy5lbXB0eShrKX0saGVhZGVyOmZ1bmN0aW9uKGspe3JldHVybiBnZC50ZXN0KGsubm9kZU5hbWUpfSxpbnB1dDpmdW5jdGlvbihrKXtyZXR1cm4gZmQudGVzdChrLm5vZGVOYW1lKX0sYnV0dG9uOmZ1bmN0aW9uKGspe3JldHVybiBYKGssCiJpbnB1dCIpJiYiYnV0dG9uIj09PWsudHlwZXx8WChrLCJidXR0b24iKX0sdGV4dDpmdW5jdGlvbihrKXt2YXIgcDtyZXR1cm4gWChrLCJpbnB1dCIpJiYidGV4dCI9PT1rLnR5cGUmJihudWxsPT0ocD1rLmdldEF0dHJpYnV0ZSgidHlwZSIpKXx8InRleHQiPT09cC50b0xvd2VyQ2FzZSgpKX0sZmlyc3Q6bShmdW5jdGlvbigpe3JldHVyblswXX0pLGxhc3Q6bShmdW5jdGlvbihrLHApe3JldHVybltwLTFdfSksZXE6bShmdW5jdGlvbihrLHAscSl7cmV0dXJuWzA+cT9xK3A6cV19KSxldmVuOm0oZnVuY3Rpb24oayxwKXtmb3IodmFyIHE9MDtxPHA7cSs9MilrLnB1c2gocSk7cmV0dXJuIGt9KSxvZGQ6bShmdW5jdGlvbihrLHApe2Zvcih2YXIgcT0xO3E8cDtxKz0yKWsucHVzaChxKTtyZXR1cm4ga30pLGx0Om0oZnVuY3Rpb24oayxwLHEpe2ZvcihwPTA+cT9xK3A6cDxxP3A6cTswPD0tLXA7KWsucHVzaChwKTtyZXR1cm4ga30pLGd0Om0oZnVuY3Rpb24oayxwLHEpe2ZvcihxPTA+cT8KcStwOnE7KytxPHA7KWsucHVzaChxKTtyZXR1cm4ga30pfX0pLnBzZXVkb3MubnRoPUsucHNldWRvcy5lcSx7cmFkaW86ITAsY2hlY2tib3g6ITAsZmlsZTohMCxwYXNzd29yZDohMCxpbWFnZTohMH0pSy5wc2V1ZG9zW1FdPWYoUSk7Zm9yKFEgaW57c3VibWl0OiEwLHJlc2V0OiEwfSlLLnBzZXVkb3NbUV09ZyhRKTt3LnByb3RvdHlwZT1LLmZpbHRlcnM9Sy5wc2V1ZG9zO0suc2V0RmlsdGVycz1uZXcgdztOLnNvcnRTdGFibGU9Vy5zcGxpdCgiIikuc29ydChsYSkuam9pbigiIik9PT1XO3QoKTtOLnNvcnREZXRhY2hlZD1lKGZ1bmN0aW9uKGspe3JldHVybiAxJmsuY29tcGFyZURvY3VtZW50UG9zaXRpb24oWi5jcmVhdGVFbGVtZW50KCJmaWVsZHNldCIpKX0pO2QuZmluZD1hO2QuZXhwclsiOiJdPWQuZXhwci5wc2V1ZG9zO2QudW5pcXVlPWQudW5pcXVlU29ydDthLmNvbXBpbGU9cWE7YS5zZWxlY3Q9U2E7YS5zZXREb2N1bWVudD10O2EuZXNjYXBlPWQuZXNjYXBlU2VsZWN0b3I7CmEuZ2V0VGV4dD1kLnRleHQ7YS5pc1hNTD1kLmlzWE1MRG9jO2Euc2VsZWN0b3JzPWQuZXhwcjthLnN1cHBvcnQ9ZC5zdXBwb3J0O2EudW5pcXVlU29ydD1kLnVuaXF1ZVNvcnR9KCk7dmFyIHdiPWZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGU9W10sZj12b2lkIDAhPT1jOyhhPWFbYl0pJiY5IT09YS5ub2RlVHlwZTspaWYoMT09PWEubm9kZVR5cGUpe2lmKGYmJmQoYSkuaXMoYykpYnJlYWs7ZS5wdXNoKGEpfXJldHVybiBlfSx3Yz1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1bXTthO2E9YS5uZXh0U2libGluZykxPT09YS5ub2RlVHlwZSYmYSE9PWImJmMucHVzaChhKTtyZXR1cm4gY30seGM9ZC5leHByLm1hdGNoLm5lZWRzQ29udGV4dCx5Yz0vXjwoW2Etel1bXlwvXDA+Olx4MjBcdFxyXG5cZl0qKVtceDIwXHRcclxuXGZdKlwvPz4oPzo8XC9cMT58KSQvaTtkLmZpbHRlcj1mdW5jdGlvbihhLGIsYyl7dmFyIGU9YlswXTtyZXR1cm4gYyYmKGE9Ijpub3QoIithKyIpIiksMT09PWIubGVuZ3RoJiYKMT09PWUubm9kZVR5cGU\/ZC5maW5kLm1hdGNoZXNTZWxlY3RvcihlLGEpP1tlXTpbXTpkLmZpbmQubWF0Y2hlcyhhLGQuZ3JlcChiLGZ1bmN0aW9uKGYpe3JldHVybiAxPT09Zi5ub2RlVHlwZX0pKX07ZC5mbi5leHRlbmQoe2ZpbmQ6ZnVuY3Rpb24oYSl7dmFyIGIsYz10aGlzLmxlbmd0aCxlPXRoaXM7aWYoInN0cmluZyIhPXR5cGVvZiBhKXJldHVybiB0aGlzLnB1c2hTdGFjayhkKGEpLmZpbHRlcihmdW5jdGlvbigpe2ZvcihiPTA7YjxjO2IrKylpZihkLmNvbnRhaW5zKGVbYl0sdGhpcykpcmV0dXJuITB9KSk7dmFyIGY9dGhpcy5wdXNoU3RhY2soW10pO2ZvcihiPTA7YjxjO2IrKylkLmZpbmQoYSxlW2JdLGYpO3JldHVybiAxPGM\/ZC51bmlxdWVTb3J0KGYpOmZ9LGZpbHRlcjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soamEodGhpcyxhfHxbXSwhMSkpfSxub3Q6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGphKHRoaXMsYXx8W10sITApKX0saXM6ZnVuY3Rpb24oYSl7cmV0dXJuISFqYSh0aGlzLAoic3RyaW5nIj09dHlwZW9mIGEmJnhjLnRlc3QoYSk\/ZChhKTphfHxbXSwhMSkubGVuZ3RofX0pO3ZhciBoZD0vXig\/OlxzKig8W1x3XFddKz4pW14+XSp8IyhbXHctXSspKSQvOyhkLmZuLmluaXQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBlLGY7aWYoIWEpcmV0dXJuIHRoaXM7aWYoYz1jfHxpZCwic3RyaW5nIj09dHlwZW9mIGEpe2lmKCEoZT0iPCI9PT1hWzBdJiYiPiI9PT1hW2EubGVuZ3RoLTFdJiYzPD1hLmxlbmd0aD9bbnVsbCxhLG51bGxdOmhkLmV4ZWMoYSkpfHwhZVsxXSYmYilyZXR1cm4hYnx8Yi5qcXVlcnk\/KGJ8fGMpLmZpbmQoYSk6dGhpcy5jb25zdHJ1Y3RvcihiKS5maW5kKGEpO2lmKGVbMV0pe2lmKGI9YiBpbnN0YW5jZW9mIGQ\/YlswXTpiLGQubWVyZ2UodGhpcyxkLnBhcnNlSFRNTChlWzFdLGImJmIubm9kZVR5cGU\/Yi5vd25lckRvY3VtZW50fHxiOkwsITApKSx5Yy50ZXN0KGVbMV0pJiZkLmlzUGxhaW5PYmplY3QoYikpZm9yKGUgaW4gYilNKHRoaXNbZV0pP3RoaXNbZV0oYltlXSk6CnRoaXMuYXR0cihlLGJbZV0pO3JldHVybiB0aGlzfXJldHVybihmPUwuZ2V0RWxlbWVudEJ5SWQoZVsyXSkpJiYodGhpc1swXT1mLHRoaXMubGVuZ3RoPTEpLHRoaXN9cmV0dXJuIGEubm9kZVR5cGU\/KHRoaXNbMF09YSx0aGlzLmxlbmd0aD0xLHRoaXMpOk0oYSk\/dm9pZCAwIT09Yy5yZWFkeT9jLnJlYWR5KGEpOmEoZCk6ZC5tYWtlQXJyYXkoYSx0aGlzKX0pLnByb3RvdHlwZT1kLmZuO3ZhciBpZD1kKEwpLGpkPS9eKD86cGFyZW50c3xwcmV2KD86VW50aWx8QWxsKSkvLGtkPXtjaGlsZHJlbjohMCxjb250ZW50czohMCxuZXh0OiEwLHByZXY6ITB9O2QuZm4uZXh0ZW5kKHtoYXM6ZnVuY3Rpb24oYSl7dmFyIGI9ZChhLHRoaXMpLGM9Yi5sZW5ndGg7cmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7ZTxjO2UrKylpZihkLmNvbnRhaW5zKHRoaXMsYltlXSkpcmV0dXJuITB9KX0sY2xvc2VzdDpmdW5jdGlvbihhLGIpe3ZhciBjLGU9MCxmPXRoaXMubGVuZ3RoLApnPVtdLGg9InN0cmluZyIhPXR5cGVvZiBhJiZkKGEpO2lmKCF4Yy50ZXN0KGEpKWZvcig7ZTxmO2UrKylmb3IoYz10aGlzW2VdO2MmJmMhPT1iO2M9Yy5wYXJlbnROb2RlKWlmKDExPmMubm9kZVR5cGUmJihoPy0xPGguaW5kZXgoYyk6MT09PWMubm9kZVR5cGUmJmQuZmluZC5tYXRjaGVzU2VsZWN0b3IoYyxhKSkpe2cucHVzaChjKTticmVha31yZXR1cm4gdGhpcy5wdXNoU3RhY2soMTxnLmxlbmd0aD9kLnVuaXF1ZVNvcnQoZyk6Zyl9LGluZGV4OmZ1bmN0aW9uKGEpe3JldHVybiBhPyJzdHJpbmciPT10eXBlb2YgYT9OYS5jYWxsKGQoYSksdGhpc1swXSk6TmEuY2FsbCh0aGlzLGEuanF1ZXJ5P2FbMF06YSk6dGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlP3RoaXMuZmlyc3QoKS5wcmV2QWxsKCkubGVuZ3RoOi0xfSxhZGQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZC51bmlxdWVTb3J0KGQubWVyZ2UodGhpcy5nZXQoKSxkKGEsYikpKSl9LGFkZEJhY2s6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYWRkKG51bGw9PQphP3RoaXMucHJldk9iamVjdDp0aGlzLnByZXZPYmplY3QuZmlsdGVyKGEpKX19KTtkLmVhY2goe3BhcmVudDpmdW5jdGlvbihhKXtyZXR1cm4oYT1hLnBhcmVudE5vZGUpJiYxMSE9PWEubm9kZVR5cGU\/YTpudWxsfSxwYXJlbnRzOmZ1bmN0aW9uKGEpe3JldHVybiB3YihhLCJwYXJlbnROb2RlIil9LHBhcmVudHNVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHdiKGEsInBhcmVudE5vZGUiLGMpfSxuZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBsYihhLCJuZXh0U2libGluZyIpfSxwcmV2OmZ1bmN0aW9uKGEpe3JldHVybiBsYihhLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dEFsbDpmdW5jdGlvbihhKXtyZXR1cm4gd2IoYSwibmV4dFNpYmxpbmciKX0scHJldkFsbDpmdW5jdGlvbihhKXtyZXR1cm4gd2IoYSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHdiKGEsIm5leHRTaWJsaW5nIixjKX0scHJldlVudGlsOmZ1bmN0aW9uKGEsYiwKYyl7cmV0dXJuIHdiKGEsInByZXZpb3VzU2libGluZyIsYyl9LHNpYmxpbmdzOmZ1bmN0aW9uKGEpe3JldHVybiB3YygoYS5wYXJlbnROb2RlfHx7fSkuZmlyc3RDaGlsZCxhKX0sY2hpbGRyZW46ZnVuY3Rpb24oYSl7cmV0dXJuIHdjKGEuZmlyc3RDaGlsZCl9LGNvbnRlbnRzOmZ1bmN0aW9uKGEpe3JldHVybiBudWxsIT1hLmNvbnRlbnREb2N1bWVudCYmc2MoYS5jb250ZW50RG9jdW1lbnQpP2EuY29udGVudERvY3VtZW50OihYKGEsInRlbXBsYXRlIikmJihhPWEuY29udGVudHx8YSksZC5tZXJnZShbXSxhLmNoaWxkTm9kZXMpKX19LGZ1bmN0aW9uKGEsYil7ZC5mblthXT1mdW5jdGlvbihjLGUpe3ZhciBmPWQubWFwKHRoaXMsYixjKTtyZXR1cm4iVW50aWwiIT09YS5zbGljZSgtNSkmJihlPWMpLGUmJiJzdHJpbmciPT10eXBlb2YgZSYmKGY9ZC5maWx0ZXIoZSxmKSksMTx0aGlzLmxlbmd0aCYmKGtkW2FdfHxkLnVuaXF1ZVNvcnQoZiksamQudGVzdChhKSYmZi5yZXZlcnNlKCkpLAp0aGlzLnB1c2hTdGFjayhmKX19KTt2YXIgTGE9L1teXHgyMFx0XHJcblxmXSsvZztkLkNhbGxiYWNrcz1mdW5jdGlvbihhKXt2YXIgYixjO2E9InN0cmluZyI9PXR5cGVvZiBhPyhiPWEsYz17fSxkLmVhY2goYi5tYXRjaChMYSl8fFtdLGZ1bmN0aW9uKHosRCl7Y1tEXT0hMH0pLGMpOmQuZXh0ZW5kKHt9LGEpO3ZhciBlLGYsZyxoLG09W10sbD1bXSx0PS0xLHc9ZnVuY3Rpb24oKXtoPWh8fGEub25jZTtmb3IoZz1lPSEwO2wubGVuZ3RoO3Q9LTEpZm9yKGY9bC5zaGlmdCgpOysrdDxtLmxlbmd0aDspITE9PT1tW3RdLmFwcGx5KGZbMF0sZlsxXSkmJmEuc3RvcE9uRmFsc2UmJih0PW0ubGVuZ3RoLGY9ITEpO2EubWVtb3J5fHwoZj0hMSk7ZT0hMTtoJiYobT1mP1tdOiIiKX0scj17YWRkOmZ1bmN0aW9uKCl7cmV0dXJuIG0mJihmJiYhZSYmKHQ9bS5sZW5ndGgtMSxsLnB1c2goZikpLGZ1bmN0aW9uIEYoRCl7ZC5lYWNoKEQsZnVuY3Rpb24oTyxhYSl7TShhYSk\/YS51bmlxdWUmJnIuaGFzKGFhKXx8Cm0ucHVzaChhYSk6YWEmJmFhLmxlbmd0aCYmInN0cmluZyIhPT1VKGFhKSYmRihhYSl9KX0oYXJndW1lbnRzKSxmJiYhZSYmdygpKSx0aGlzfSxyZW1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4gZC5lYWNoKGFyZ3VtZW50cyxmdW5jdGlvbih6LEQpe2Zvcih2YXIgRjstMTwoRj1kLmluQXJyYXkoRCxtLEYpKTspbS5zcGxpY2UoRiwxKSxGPD10JiZ0LS19KSx0aGlzfSxoYXM6ZnVuY3Rpb24oeil7cmV0dXJuIHo\/LTE8ZC5pbkFycmF5KHosbSk6MDxtLmxlbmd0aH0sZW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4gbSYmKG09W10pLHRoaXN9LGRpc2FibGU6ZnVuY3Rpb24oKXtyZXR1cm4gaD1sPVtdLG09Zj0iIix0aGlzfSxkaXNhYmxlZDpmdW5jdGlvbigpe3JldHVybiFtfSxsb2NrOmZ1bmN0aW9uKCl7cmV0dXJuIGg9bD1bXSxmfHxlfHwobT1mPSIiKSx0aGlzfSxsb2NrZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hIWh9LGZpcmVXaXRoOmZ1bmN0aW9uKHosRCl7cmV0dXJuIGh8fChEPVt6LChEPUR8fApbXSkuc2xpY2U\/RC5zbGljZSgpOkRdLGwucHVzaChEKSxlfHx3KCkpLHRoaXN9LGZpcmU6ZnVuY3Rpb24oKXtyZXR1cm4gci5maXJlV2l0aCh0aGlzLGFyZ3VtZW50cyksdGhpc30sZmlyZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hIWd9fTtyZXR1cm4gcn07ZC5leHRlbmQoe0RlZmVycmVkOmZ1bmN0aW9uKGEpe3ZhciBiPVtbIm5vdGlmeSIsInByb2dyZXNzIixkLkNhbGxiYWNrcygibWVtb3J5IiksZC5DYWxsYmFja3MoIm1lbW9yeSIpLDJdLFsicmVzb2x2ZSIsImRvbmUiLGQuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLGQuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLDAsInJlc29sdmVkIl0sWyJyZWplY3QiLCJmYWlsIixkLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxkLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwxLCJyZWplY3RlZCJdXSxjPSJwZW5kaW5nIixlPXtzdGF0ZTpmdW5jdGlvbigpe3JldHVybiBjfSxhbHdheXM6ZnVuY3Rpb24oKXtyZXR1cm4gZi5kb25lKGFyZ3VtZW50cykuZmFpbChhcmd1bWVudHMpLAp0aGlzfSwiY2F0Y2giOmZ1bmN0aW9uKGcpe3JldHVybiBlLnRoZW4obnVsbCxnKX0scGlwZTpmdW5jdGlvbigpe3ZhciBnPWFyZ3VtZW50cztyZXR1cm4gZC5EZWZlcnJlZChmdW5jdGlvbihoKXtkLmVhY2goYixmdW5jdGlvbihtLGwpe3ZhciB0PU0oZ1tsWzRdXSkmJmdbbFs0XV07ZltsWzFdXShmdW5jdGlvbigpe3ZhciB3PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3cmJk0ody5wcm9taXNlKT93LnByb21pc2UoKS5wcm9ncmVzcyhoLm5vdGlmeSkuZG9uZShoLnJlc29sdmUpLmZhaWwoaC5yZWplY3QpOmhbbFswXSsiV2l0aCJdKHRoaXMsdD9bd106YXJndW1lbnRzKX0pfSk7Zz1udWxsfSkucHJvbWlzZSgpfSx0aGVuOmZ1bmN0aW9uKGcsaCxtKXtmdW5jdGlvbiBsKHcscix6LEQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBGPXRoaXMsTz1hcmd1bWVudHMsYWE9ZnVuY3Rpb24oKXt2YXIgcWE7aWYoISh3PHQpKXtpZigocWE9ei5hcHBseShGLE8pKT09PXIucHJvbWlzZSgpKXRocm93IG5ldyBUeXBlRXJyb3IoIlRoZW5hYmxlIHNlbGYtcmVzb2x1dGlvbiIpOwp2YXIgU2E9cWEmJigib2JqZWN0Ij09dHlwZW9mIHFhfHwiZnVuY3Rpb24iPT10eXBlb2YgcWEpJiZxYS50aGVuO00oU2EpP0Q\/U2EuY2FsbChxYSxsKHQscixZYSxEKSxsKHQscixaYSxEKSk6KHQrKyxTYS5jYWxsKHFhLGwodCxyLFlhLEQpLGwodCxyLFphLEQpLGwodCxyLFlhLHIubm90aWZ5V2l0aCkpKTooeiE9PVlhJiYoRj12b2lkIDAsTz1bcWFdKSwoRHx8ci5yZXNvbHZlV2l0aCkoRixPKSl9fSxHYT1EP2FhOmZ1bmN0aW9uKCl7dHJ5e2FhKCl9Y2F0Y2gocWEpe2QuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayYmZC5EZWZlcnJlZC5leGNlcHRpb25Ib29rKHFhLEdhLmVycm9yKSx0PD13KzEmJih6IT09WmEmJihGPXZvaWQgMCxPPVtxYV0pLHIucmVqZWN0V2l0aChGLE8pKX19O3c\/R2EoKTooZC5EZWZlcnJlZC5nZXRFcnJvckhvb2s\/R2EuZXJyb3I9ZC5EZWZlcnJlZC5nZXRFcnJvckhvb2soKTpkLkRlZmVycmVkLmdldFN0YWNrSG9vayYmKEdhLmVycm9yPWQuRGVmZXJyZWQuZ2V0U3RhY2tIb29rKCkpLApuLnNldFRpbWVvdXQoR2EpKX19dmFyIHQ9MDtyZXR1cm4gZC5EZWZlcnJlZChmdW5jdGlvbih3KXtiWzBdWzNdLmFkZChsKDAsdyxNKG0pP206WWEsdy5ub3RpZnlXaXRoKSk7YlsxXVszXS5hZGQobCgwLHcsTShnKT9nOllhKSk7YlsyXVszXS5hZGQobCgwLHcsTShoKT9oOlphKSl9KS5wcm9taXNlKCl9LHByb21pc2U6ZnVuY3Rpb24oZyl7cmV0dXJuIG51bGwhPWc\/ZC5leHRlbmQoZyxlKTplfX0sZj17fTtyZXR1cm4gZC5lYWNoKGIsZnVuY3Rpb24oZyxoKXt2YXIgbT1oWzJdLGw9aFs1XTtlW2hbMV1dPW0uYWRkO2wmJm0uYWRkKGZ1bmN0aW9uKCl7Yz1sfSxiWzMtZ11bMl0uZGlzYWJsZSxiWzMtZ11bM10uZGlzYWJsZSxiWzBdWzJdLmxvY2ssYlswXVszXS5sb2NrKTttLmFkZChoWzNdLmZpcmUpO2ZbaFswXV09ZnVuY3Rpb24oKXtyZXR1cm4gZltoWzBdKyJXaXRoIl0odGhpcz09PWY\/dm9pZCAwOnRoaXMsYXJndW1lbnRzKSx0aGlzfTtmW2hbMF0rIldpdGgiXT1tLmZpcmVXaXRofSksCmUucHJvbWlzZShmKSxhJiZhLmNhbGwoZixmKSxmfSx3aGVuOmZ1bmN0aW9uKGEpe3ZhciBiPWFyZ3VtZW50cy5sZW5ndGgsYz1iLGU9QXJyYXkoYyksZj15YS5jYWxsKGFyZ3VtZW50cyksZz1kLkRlZmVycmVkKCksaD1mdW5jdGlvbihtKXtyZXR1cm4gZnVuY3Rpb24obCl7ZVttXT10aGlzO2ZbbV09MTxhcmd1bWVudHMubGVuZ3RoP3lhLmNhbGwoYXJndW1lbnRzKTpsOy0tYnx8Zy5yZXNvbHZlV2l0aChlLGYpfX07aWYoMT49YiYmKG1iKGEsZy5kb25lKGgoYykpLnJlc29sdmUsZy5yZWplY3QsIWIpLCJwZW5kaW5nIj09PWcuc3RhdGUoKXx8TShmW2NdJiZmW2NdLnRoZW4pKSlyZXR1cm4gZy50aGVuKCk7Zm9yKDtjLS07KW1iKGZbY10saChjKSxnLnJlamVjdCk7cmV0dXJuIGcucHJvbWlzZSgpfX0pO3ZhciBsZD0vXihFdmFsfEludGVybmFsfFJhbmdlfFJlZmVyZW5jZXxTeW50YXh8VHlwZXxVUkkpRXJyb3IkLztkLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2s9ZnVuY3Rpb24oYSxiKXtuLmNvbnNvbGUmJgpuLmNvbnNvbGUud2FybiYmYSYmbGQudGVzdChhLm5hbWUpJiZuLmNvbnNvbGUud2FybigialF1ZXJ5LkRlZmVycmVkIGV4Y2VwdGlvbjogIithLm1lc3NhZ2UsYS5zdGFjayxiKX07ZC5yZWFkeUV4Y2VwdGlvbj1mdW5jdGlvbihhKXtuLnNldFRpbWVvdXQoZnVuY3Rpb24oKXt0aHJvdyBhO30pfTt2YXIgZ2M9ZC5EZWZlcnJlZCgpO2QuZm4ucmVhZHk9ZnVuY3Rpb24oYSl7cmV0dXJuIGdjLnRoZW4oYSlbImNhdGNoIl0oZnVuY3Rpb24oYil7ZC5yZWFkeUV4Y2VwdGlvbihiKX0pLHRoaXN9O2QuZXh0ZW5kKHtpc1JlYWR5OiExLHJlYWR5V2FpdDoxLHJlYWR5OmZ1bmN0aW9uKGEpeyghMD09PWE\/LS1kLnJlYWR5V2FpdDpkLmlzUmVhZHkpfHwoZC5pc1JlYWR5PSEwKSE9PWEmJjA8LS1kLnJlYWR5V2FpdHx8Z2MucmVzb2x2ZVdpdGgoTCxbZF0pfX0pO2QucmVhZHkudGhlbj1nYy50aGVuOyJjb21wbGV0ZSI9PT1MLnJlYWR5U3RhdGV8fCJsb2FkaW5nIiE9PUwucmVhZHlTdGF0ZSYmIUwuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsPwpuLnNldFRpbWVvdXQoZC5yZWFkeSk6KEwuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsT2EpLG4uYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsT2EpKTt2YXIgWGE9ZnVuY3Rpb24oYSxiLGMsZSxmLGcsaCl7dmFyIG09MCxsPWEubGVuZ3RoLHQ9bnVsbD09YztpZigib2JqZWN0Ij09PVUoYykpZm9yKG0gaW4gZj0hMCxjKVhhKGEsYixtLGNbbV0sITAsZyxoKTtlbHNlIGlmKHZvaWQgMCE9PWUmJihmPSEwLE0oZSl8fChoPSEwKSx0JiYoaD8oYi5jYWxsKGEsZSksYj1udWxsKToodD1iLGI9ZnVuY3Rpb24odyxyLHope3JldHVybiB0LmNhbGwoZCh3KSx6KX0pKSxiKSlmb3IoO208bDttKyspYihhW21dLGMsaD9lOmUuY2FsbChhW21dLG0sYihhW21dLGMpKSk7cmV0dXJuIGY\/YTp0P2IuY2FsbChhKTpsP2IoYVswXSxjKTpnfSxNYz0vXi1tcy0vLE5jPS8tKFthLXpdKS9nLEdiPWZ1bmN0aW9uKGEpe3JldHVybiAxPT09YS5ub2RlVHlwZXx8OT09PWEubm9kZVR5cGV8fCErYS5ub2RlVHlwZX07CkphLnVpZD0xO0phLnByb3RvdHlwZT17Y2FjaGU6ZnVuY3Rpb24oYSl7dmFyIGI9YVt0aGlzLmV4cGFuZG9dO3JldHVybiBifHwoYj17fSxHYihhKSYmKGEubm9kZVR5cGU\/YVt0aGlzLmV4cGFuZG9dPWI6T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsdGhpcy5leHBhbmRvLHt2YWx1ZTpiLGNvbmZpZ3VyYWJsZTohMH0pKSksYn0sc2V0OmZ1bmN0aW9uKGEsYixjKXt2YXIgZTthPXRoaXMuY2FjaGUoYSk7aWYoInN0cmluZyI9PXR5cGVvZiBiKWFbQmEoYildPWM7ZWxzZSBmb3IoZSBpbiBiKWFbQmEoZSldPWJbZV07cmV0dXJuIGF9LGdldDpmdW5jdGlvbihhLGIpe3JldHVybiB2b2lkIDA9PT1iP3RoaXMuY2FjaGUoYSk6YVt0aGlzLmV4cGFuZG9dJiZhW3RoaXMuZXhwYW5kb11bQmEoYildfSxhY2Nlc3M6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB2b2lkIDA9PT1ifHxiJiYic3RyaW5nIj09dHlwZW9mIGImJnZvaWQgMD09PWM\/dGhpcy5nZXQoYSxiKToodGhpcy5zZXQoYSxiLGMpLHZvaWQgMCE9PQpjP2M6Yil9LHJlbW92ZTpmdW5jdGlvbihhLGIpe3ZhciBjPWFbdGhpcy5leHBhbmRvXTtpZih2b2lkIDAhPT1jKXtpZih2b2lkIDAhPT1iKXt2YXIgZT0oYj1BcnJheS5pc0FycmF5KGIpP2IubWFwKEJhKTooYj1CYShiKSlpbiBjP1tiXTpiLm1hdGNoKExhKXx8W10pLmxlbmd0aDtmb3IoO2UtLTspZGVsZXRlIGNbYltlXV19KHZvaWQgMD09PWJ8fGQuaXNFbXB0eU9iamVjdChjKSkmJihhLm5vZGVUeXBlP2FbdGhpcy5leHBhbmRvXT12b2lkIDA6ZGVsZXRlIGFbdGhpcy5leHBhbmRvXSl9fSxoYXNEYXRhOmZ1bmN0aW9uKGEpe2E9YVt0aGlzLmV4cGFuZG9dO3JldHVybiB2b2lkIDAhPT1hJiYhZC5pc0VtcHR5T2JqZWN0KGEpfX07dmFyIEc9bmV3IEphLHhhPW5ldyBKYSxQYz0vXig\/Olx7W1x3XFddKlx9fFxbW1x3XFddKlxdKSQvLE9jPS9bQS1aXS9nO2QuZXh0ZW5kKHtoYXNEYXRhOmZ1bmN0aW9uKGEpe3JldHVybiB4YS5oYXNEYXRhKGEpfHxHLmhhc0RhdGEoYSl9LGRhdGE6ZnVuY3Rpb24oYSwKYixjKXtyZXR1cm4geGEuYWNjZXNzKGEsYixjKX0scmVtb3ZlRGF0YTpmdW5jdGlvbihhLGIpe3hhLnJlbW92ZShhLGIpfSxfZGF0YTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIEcuYWNjZXNzKGEsYixjKX0sX3JlbW92ZURhdGE6ZnVuY3Rpb24oYSxiKXtHLnJlbW92ZShhLGIpfX0pO2QuZm4uZXh0ZW5kKHtkYXRhOmZ1bmN0aW9uKGEsYil7dmFyIGMsZSxmLGc9dGhpc1swXSxoPWcmJmcuYXR0cmlidXRlcztpZih2b2lkIDA9PT1hKXtpZih0aGlzLmxlbmd0aCYmKGY9eGEuZ2V0KGcpLDE9PT1nLm5vZGVUeXBlJiYhRy5nZXQoZywiaGFzRGF0YUF0dHJzIikpKXtmb3IoYz1oLmxlbmd0aDtjLS07KWhbY10mJjA9PT0oZT1oW2NdLm5hbWUpLmluZGV4T2YoImRhdGEtIikmJihlPUJhKGUuc2xpY2UoNSkpLE9iKGcsZSxmW2VdKSk7Ry5zZXQoZywiaGFzRGF0YUF0dHJzIiwhMCl9cmV0dXJuIGZ9cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBhP3RoaXMuZWFjaChmdW5jdGlvbigpe3hhLnNldCh0aGlzLAphKX0pOlhhKHRoaXMsZnVuY3Rpb24obSl7dmFyIGw7aWYoZyYmdm9pZCAwPT09bSlyZXR1cm4gdm9pZCAwIT09KGw9eGEuZ2V0KGcsYSkpP2w6dm9pZCAwIT09KGw9T2IoZyxhKSk\/bDp2b2lkIDA7dGhpcy5lYWNoKGZ1bmN0aW9uKCl7eGEuc2V0KHRoaXMsYSxtKX0pfSxudWxsLGIsMTxhcmd1bWVudHMubGVuZ3RoLG51bGwsITApfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt4YS5yZW1vdmUodGhpcyxhKX0pfX0pO2QuZXh0ZW5kKHtxdWV1ZTpmdW5jdGlvbihhLGIsYyl7dmFyIGU7aWYoYSlyZXR1cm4gYj0oYnx8ImZ4IikrInF1ZXVlIixlPUcuZ2V0KGEsYiksYyYmKCFlfHxBcnJheS5pc0FycmF5KGMpP2U9Ry5hY2Nlc3MoYSxiLGQubWFrZUFycmF5KGMpKTplLnB1c2goYykpLGV8fFtdfSxkZXF1ZXVlOmZ1bmN0aW9uKGEsYil7Yj1ifHwiZngiO3ZhciBjPWQucXVldWUoYSxiKSxlPWMubGVuZ3RoLGY9Yy5zaGlmdCgpLGc9ZC5fcXVldWVIb29rcyhhLApiKTsiaW5wcm9ncmVzcyI9PT1mJiYoZj1jLnNoaWZ0KCksZS0tKTtmJiYoImZ4Ij09PWImJmMudW5zaGlmdCgiaW5wcm9ncmVzcyIpLGRlbGV0ZSBnLnN0b3AsZi5jYWxsKGEsZnVuY3Rpb24oKXtkLmRlcXVldWUoYSxiKX0sZykpOyFlJiZnJiZnLmVtcHR5LmZpcmUoKX0sX3F1ZXVlSG9va3M6ZnVuY3Rpb24oYSxiKXt2YXIgYz1iKyJxdWV1ZUhvb2tzIjtyZXR1cm4gRy5nZXQoYSxjKXx8Ry5hY2Nlc3MoYSxjLHtlbXB0eTpkLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKS5hZGQoZnVuY3Rpb24oKXtHLnJlbW92ZShhLFtiKyJxdWV1ZSIsY10pfSl9KX19KTtkLmZuLmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24oYSxiKXt2YXIgYz0yO3JldHVybiJzdHJpbmciIT10eXBlb2YgYSYmKGI9YSxhPSJmeCIsYy0tKSxhcmd1bWVudHMubGVuZ3RoPGM\/ZC5xdWV1ZSh0aGlzWzBdLGEpOnZvaWQgMD09PWI\/dGhpczp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT1kLnF1ZXVlKHRoaXMsYSxiKTtkLl9xdWV1ZUhvb2tzKHRoaXMsCmEpOyJmeCI9PT1hJiYiaW5wcm9ncmVzcyIhPT1lWzBdJiZkLmRlcXVldWUodGhpcyxhKX0pfSxkZXF1ZXVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtkLmRlcXVldWUodGhpcyxhKX0pfSxjbGVhclF1ZXVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnF1ZXVlKGF8fCJmeCIsW10pfSxwcm9taXNlOmZ1bmN0aW9uKGEsYil7dmFyIGMsZT0xLGY9ZC5EZWZlcnJlZCgpLGc9dGhpcyxoPXRoaXMubGVuZ3RoLG09ZnVuY3Rpb24oKXstLWV8fGYucmVzb2x2ZVdpdGgoZyxbZ10pfTsic3RyaW5nIiE9dHlwZW9mIGEmJihiPWEsYT12b2lkIDApO2ZvcihhPWF8fCJmeCI7aC0tOykoYz1HLmdldChnW2hdLGErInF1ZXVlSG9va3MiKSkmJmMuZW1wdHkmJihlKyssYy5lbXB0eS5hZGQobSkpO3JldHVybiBtKCksZi5wcm9taXNlKGIpfX0pO3ZhciB6Yz0vWystXT8oPzpcZCpcLnwpXGQrKD86W2VFXVsrLV0\/XGQrfCkvLnNvdXJjZSx5Yj1uZXcgUmVnRXhwKCJeKD86KFsrLV0pPXwpKCIrCnpjKyIpKFthLXolXSopJCIsImkiKSxQYT1bIlRvcCIsIlJpZ2h0IiwiQm90dG9tIiwiTGVmdCJdLGpiPUwuZG9jdW1lbnRFbGVtZW50LG9iPWZ1bmN0aW9uKGEpe3JldHVybiBkLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKX0sbWQ9e2NvbXBvc2VkOiEwfTtqYi5nZXRSb290Tm9kZSYmKG9iPWZ1bmN0aW9uKGEpe3JldHVybiBkLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKXx8YS5nZXRSb290Tm9kZShtZCk9PT1hLm93bmVyRG9jdW1lbnR9KTt2YXIgUWI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4ibm9uZSI9PT0oYT1ifHxhKS5zdHlsZS5kaXNwbGF5fHwiIj09PWEuc3R5bGUuZGlzcGxheSYmb2IoYSkmJiJub25lIj09PWQuY3NzKGEsImRpc3BsYXkiKX0sbGM9e307ZC5mbi5leHRlbmQoe3Nob3c6ZnVuY3Rpb24oKXtyZXR1cm4gJGEodGhpcywhMCl9LGhpZGU6ZnVuY3Rpb24oKXtyZXR1cm4gJGEodGhpcyl9LHRvZ2dsZTpmdW5jdGlvbihhKXtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBhPwphP3RoaXMuc2hvdygpOnRoaXMuaGlkZSgpOnRoaXMuZWFjaChmdW5jdGlvbigpe1FiKHRoaXMpP2QodGhpcykuc2hvdygpOmQodGhpcykuaGlkZSgpfSl9fSk7dmFyIFpiLEhiPS9eKD86Y2hlY2tib3h8cmFkaW8pJC9pLG1jPS88KFthLXpdW15cL1wwPlx4MjBcdFxyXG5cZl0qKS9pLG5jPS9eJHxebW9kdWxlJHxcLyg\/OmphdmF8ZWNtYSlzY3JpcHQvaSx4Yj1MLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKS5hcHBlbmRDaGlsZChMLmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsoWmI9TC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpKS5zZXRBdHRyaWJ1dGUoInR5cGUiLCJyYWRpbyIpO1piLnNldEF0dHJpYnV0ZSgiY2hlY2tlZCIsImNoZWNrZWQiKTtaYi5zZXRBdHRyaWJ1dGUoIm5hbWUiLCJ0Iik7eGIuYXBwZW5kQ2hpbGQoWmIpO04uY2hlY2tDbG9uZT14Yi5jbG9uZU5vZGUoITApLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmNoZWNrZWQ7eGIuaW5uZXJIVE1MPSI8dGV4dGFyZWE+eDwvdGV4dGFyZWE+IjsKTi5ub0Nsb25lQ2hlY2tlZD0hIXhiLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmRlZmF1bHRWYWx1ZTt4Yi5pbm5lckhUTUw9IjxvcHRpb24+PC9vcHRpb24+IjtOLm9wdGlvbj0hIXhiLmxhc3RDaGlsZDt2YXIgQ2E9e3RoZWFkOlsxLCI8dGFibGU+IiwiPC90YWJsZT4iXSxjb2w6WzIsIjx0YWJsZT48Y29sZ3JvdXA+IiwiPC9jb2xncm91cD48L3RhYmxlPiJdLHRyOlsyLCI8dGFibGU+PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSx0ZDpbMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il0sX2RlZmF1bHQ6WzAsIiIsIiJdfTtDYS50Ym9keT1DYS50Zm9vdD1DYS5jb2xncm91cD1DYS5jYXB0aW9uPUNhLnRoZWFkO0NhLnRoPUNhLnRkO04ub3B0aW9ufHwoQ2Eub3B0Z3JvdXA9Q2Eub3B0aW9uPVsxLCI8c2VsZWN0IG11bHRpcGxlPSdtdWx0aXBsZSc+IiwiPC9zZWxlY3Q+Il0pO3ZhciBRYz0vPHwmIz9cdys7LyxBYz0vXihbXi5dKikoPzpcLiguKyl8KS87CmQuZXZlbnQ9e2dsb2JhbDp7fSxhZGQ6ZnVuY3Rpb24oYSxiLGMsZSxmKXt2YXIgZyxoLG0sbCx0LHcscix6LEQ9Ry5nZXQoYSk7aWYoR2IoYSkpZm9yKGMuaGFuZGxlciYmKGM9KGc9YykuaGFuZGxlcixmPWcuc2VsZWN0b3IpLGYmJmQuZmluZC5tYXRjaGVzU2VsZWN0b3IoamIsZiksYy5ndWlkfHwoYy5ndWlkPWQuZ3VpZCsrKSwobD1ELmV2ZW50cyl8fChsPUQuZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCkpLChoPUQuaGFuZGxlKXx8KGg9RC5oYW5kbGU9ZnVuY3Rpb24oTyl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBkJiZkLmV2ZW50LnRyaWdnZXJlZCE9PU8udHlwZT9kLmV2ZW50LmRpc3BhdGNoLmFwcGx5KGEsYXJndW1lbnRzKTp2b2lkIDB9KSxEPShiPShifHwiIikubWF0Y2goTGEpfHxbIiJdKS5sZW5ndGg7RC0tOyl7dmFyIEY9ej0obT1BYy5leGVjKGJbRF0pfHxbXSlbMV07bT0obVsyXXx8IiIpLnNwbGl0KCIuIikuc29ydCgpO0YmJih3PWQuZXZlbnQuc3BlY2lhbFtGXXx8Cnt9LEY9KGY\/dy5kZWxlZ2F0ZVR5cGU6dy5iaW5kVHlwZSl8fEYsdz1kLmV2ZW50LnNwZWNpYWxbRl18fHt9LHQ9ZC5leHRlbmQoe3R5cGU6RixvcmlnVHlwZTp6LGRhdGE6ZSxoYW5kbGVyOmMsZ3VpZDpjLmd1aWQsc2VsZWN0b3I6ZixuZWVkc0NvbnRleHQ6ZiYmZC5leHByLm1hdGNoLm5lZWRzQ29udGV4dC50ZXN0KGYpLG5hbWVzcGFjZTptLmpvaW4oIi4iKX0sZyksKHI9bFtGXSl8fCgocj1sW0ZdPVtdKS5kZWxlZ2F0ZUNvdW50PTAsdy5zZXR1cCYmITEhPT13LnNldHVwLmNhbGwoYSxlLG0saCl8fGEuYWRkRXZlbnRMaXN0ZW5lciYmYS5hZGRFdmVudExpc3RlbmVyKEYsaCkpLHcuYWRkJiYody5hZGQuY2FsbChhLHQpLHQuaGFuZGxlci5ndWlkfHwodC5oYW5kbGVyLmd1aWQ9Yy5ndWlkKSksZj9yLnNwbGljZShyLmRlbGVnYXRlQ291bnQrKywwLHQpOnIucHVzaCh0KSxkLmV2ZW50Lmdsb2JhbFtGXT0hMCl9fSxyZW1vdmU6ZnVuY3Rpb24oYSxiLGMsZSxmKXt2YXIgZyxoLG0sbCwKdCx3LHIseixEPUcuaGFzRGF0YShhKSYmRy5nZXQoYSk7aWYoRCYmKGw9RC5ldmVudHMpKXtmb3IodD0oYj0oYnx8IiIpLm1hdGNoKExhKXx8WyIiXSkubGVuZ3RoO3QtLTspaWYodz16PShtPUFjLmV4ZWMoYlt0XSl8fFtdKVsxXSxyPShtWzJdfHwiIikuc3BsaXQoIi4iKS5zb3J0KCksdyl7dmFyIEY9ZC5ldmVudC5zcGVjaWFsW3ddfHx7fSxPPWxbdz0oZT9GLmRlbGVnYXRlVHlwZTpGLmJpbmRUeXBlKXx8d118fFtdO209bVsyXSYmbmV3IFJlZ0V4cCgiKF58XFwuKSIrci5qb2luKCJcXC4oPzouKlxcLnwpIikrIihcXC58JCkiKTtmb3IoaD1nPU8ubGVuZ3RoO2ctLTspe3ZhciBhYT1PW2ddOyFmJiZ6IT09YWEub3JpZ1R5cGV8fGMmJmMuZ3VpZCE9PWFhLmd1aWR8fG0mJiFtLnRlc3QoYWEubmFtZXNwYWNlKXx8ZSYmZSE9PWFhLnNlbGVjdG9yJiYoIioqIiE9PWV8fCFhYS5zZWxlY3Rvcil8fChPLnNwbGljZShnLDEpLGFhLnNlbGVjdG9yJiZPLmRlbGVnYXRlQ291bnQtLSxGLnJlbW92ZSYmCkYucmVtb3ZlLmNhbGwoYSxhYSkpfWgmJiFPLmxlbmd0aCYmKEYudGVhcmRvd24mJiExIT09Ri50ZWFyZG93bi5jYWxsKGEscixELmhhbmRsZSl8fGQucmVtb3ZlRXZlbnQoYSx3LEQuaGFuZGxlKSxkZWxldGUgbFt3XSl9ZWxzZSBmb3IodyBpbiBsKWQuZXZlbnQucmVtb3ZlKGEsdytiW3RdLGMsZSwhMCk7ZC5pc0VtcHR5T2JqZWN0KGwpJiZHLnJlbW92ZShhLCJoYW5kbGUgZXZlbnRzIil9fSxkaXNwYXRjaDpmdW5jdGlvbihhKXt2YXIgYixjLGUsZixnPUFycmF5KGFyZ3VtZW50cy5sZW5ndGgpLGg9ZC5ldmVudC5maXgoYSksbT0oRy5nZXQodGhpcywiZXZlbnRzIil8fE9iamVjdC5jcmVhdGUobnVsbCkpW2gudHlwZV18fFtdLGw9ZC5ldmVudC5zcGVjaWFsW2gudHlwZV18fHt9O2dbMF09aDtmb3IoYj0xO2I8YXJndW1lbnRzLmxlbmd0aDtiKyspZ1tiXT1hcmd1bWVudHNbYl07aWYoaC5kZWxlZ2F0ZVRhcmdldD10aGlzLCFsLnByZURpc3BhdGNofHwhMSE9PWwucHJlRGlzcGF0Y2guY2FsbCh0aGlzLApoKSl7dmFyIHQ9ZC5ldmVudC5oYW5kbGVycy5jYWxsKHRoaXMsaCxtKTtmb3IoYj0wOyhlPXRbYisrXSkmJiFoLmlzUHJvcGFnYXRpb25TdG9wcGVkKCk7KWZvcihoLmN1cnJlbnRUYXJnZXQ9ZS5lbGVtLG09MDsoZj1lLmhhbmRsZXJzW20rK10pJiYhaC5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpOyloLnJuYW1lc3BhY2UmJiExIT09Zi5uYW1lc3BhY2UmJiFoLnJuYW1lc3BhY2UudGVzdChmLm5hbWVzcGFjZSl8fChoLmhhbmRsZU9iaj1mLGguZGF0YT1mLmRhdGEsdm9pZCAwIT09KGM9KChkLmV2ZW50LnNwZWNpYWxbZi5vcmlnVHlwZV18fHt9KS5oYW5kbGV8fGYuaGFuZGxlcikuYXBwbHkoZS5lbGVtLGcpKSYmITE9PT0oaC5yZXN1bHQ9YykmJihoLnByZXZlbnREZWZhdWx0KCksaC5zdG9wUHJvcGFnYXRpb24oKSkpO3JldHVybiBsLnBvc3REaXNwYXRjaCYmbC5wb3N0RGlzcGF0Y2guY2FsbCh0aGlzLGgpLGgucmVzdWx0fX0saGFuZGxlcnM6ZnVuY3Rpb24oYSxiKXt2YXIgYywKZSxmLGc9W10saD1iLmRlbGVnYXRlQ291bnQsbT1hLnRhcmdldDtpZihoJiZtLm5vZGVUeXBlJiYhKCJjbGljayI9PT1hLnR5cGUmJjE8PWEuYnV0dG9uKSlmb3IoO20hPT10aGlzO209bS5wYXJlbnROb2RlfHx0aGlzKWlmKDE9PT1tLm5vZGVUeXBlJiYoImNsaWNrIiE9PWEudHlwZXx8ITAhPT1tLmRpc2FibGVkKSl7dmFyIGw9W10sdD17fTtmb3IoYz0wO2M8aDtjKyspdm9pZCAwPT09dFtmPShlPWJbY10pLnNlbGVjdG9yKyIgIl0mJih0W2ZdPWUubmVlZHNDb250ZXh0Py0xPGQoZix0aGlzKS5pbmRleChtKTpkLmZpbmQoZix0aGlzLG51bGwsW21dKS5sZW5ndGgpLHRbZl0mJmwucHVzaChlKTtsLmxlbmd0aCYmZy5wdXNoKHtlbGVtOm0saGFuZGxlcnM6bH0pfXJldHVybiBtPXRoaXMsaDxiLmxlbmd0aCYmZy5wdXNoKHtlbGVtOm0saGFuZGxlcnM6Yi5zbGljZShoKX0pLGd9LGFkZFByb3A6ZnVuY3Rpb24oYSxiKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZC5FdmVudC5wcm90b3R5cGUsCmEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDpNKGIpP2Z1bmN0aW9uKCl7aWYodGhpcy5vcmlnaW5hbEV2ZW50KXJldHVybiBiKHRoaXMub3JpZ2luYWxFdmVudCl9OmZ1bmN0aW9uKCl7aWYodGhpcy5vcmlnaW5hbEV2ZW50KXJldHVybiB0aGlzLm9yaWdpbmFsRXZlbnRbYV19LHNldDpmdW5jdGlvbihjKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxhLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpjfSl9fSl9LGZpeDpmdW5jdGlvbihhKXtyZXR1cm4gYVtkLmV4cGFuZG9dP2E6bmV3IGQuRXZlbnQoYSl9LHNwZWNpYWw6e2xvYWQ6e25vQnViYmxlOiEwfSxjbGljazp7c2V0dXA6ZnVuY3Rpb24oYSl7YT10aGlzfHxhO3JldHVybiBIYi50ZXN0KGEudHlwZSkmJmEuY2xpY2smJlgoYSwiaW5wdXQiKSYmcGIoYSwiY2xpY2siLCEwKSwhMX0sdHJpZ2dlcjpmdW5jdGlvbihhKXthPXRoaXN8fGE7cmV0dXJuIEhiLnRlc3QoYS50eXBlKSYmCmEuY2xpY2smJlgoYSwiaW5wdXQiKSYmcGIoYSwiY2xpY2siKSwhMH0sX2RlZmF1bHQ6ZnVuY3Rpb24oYSl7YT1hLnRhcmdldDtyZXR1cm4gSGIudGVzdChhLnR5cGUpJiZhLmNsaWNrJiZYKGEsImlucHV0IikmJkcuZ2V0KGEsImNsaWNrIil8fFgoYSwiYSIpfX0sYmVmb3JldW5sb2FkOntwb3N0RGlzcGF0Y2g6ZnVuY3Rpb24oYSl7dm9pZCAwIT09YS5yZXN1bHQmJmEub3JpZ2luYWxFdmVudCYmKGEub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZT1hLnJlc3VsdCl9fX19O2QucmVtb3ZlRXZlbnQ9ZnVuY3Rpb24oYSxiLGMpe2EucmVtb3ZlRXZlbnRMaXN0ZW5lciYmYS5yZW1vdmVFdmVudExpc3RlbmVyKGIsYyl9O2QuRXZlbnQ9ZnVuY3Rpb24oYSxiKXtpZighKHRoaXMgaW5zdGFuY2VvZiBkLkV2ZW50KSlyZXR1cm4gbmV3IGQuRXZlbnQoYSxiKTthJiZhLnR5cGU\/KHRoaXMub3JpZ2luYWxFdmVudD1hLHRoaXMudHlwZT1hLnR5cGUsdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9YS5kZWZhdWx0UHJldmVudGVkfHwKdm9pZCAwPT09YS5kZWZhdWx0UHJldmVudGVkJiYhMT09PWEucmV0dXJuVmFsdWU\/YWI6YmIsdGhpcy50YXJnZXQ9YS50YXJnZXQmJjM9PT1hLnRhcmdldC5ub2RlVHlwZT9hLnRhcmdldC5wYXJlbnROb2RlOmEudGFyZ2V0LHRoaXMuY3VycmVudFRhcmdldD1hLmN1cnJlbnRUYXJnZXQsdGhpcy5yZWxhdGVkVGFyZ2V0PWEucmVsYXRlZFRhcmdldCk6dGhpcy50eXBlPWE7YiYmZC5leHRlbmQodGhpcyxiKTt0aGlzLnRpbWVTdGFtcD1hJiZhLnRpbWVTdGFtcHx8RGF0ZS5ub3coKTt0aGlzW2QuZXhwYW5kb109ITB9O2QuRXZlbnQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpkLkV2ZW50LGlzRGVmYXVsdFByZXZlbnRlZDpiYixpc1Byb3BhZ2F0aW9uU3RvcHBlZDpiYixpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDpiYixpc1NpbXVsYXRlZDohMSxwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1hYjsKYSYmIXRoaXMuaXNTaW11bGF0ZWQmJmEucHJldmVudERlZmF1bHQoKX0sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9YWI7YSYmIXRoaXMuaXNTaW11bGF0ZWQmJmEuc3RvcFByb3BhZ2F0aW9uKCl9LHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkPWFiO2EmJiF0aGlzLmlzU2ltdWxhdGVkJiZhLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO3RoaXMuc3RvcFByb3BhZ2F0aW9uKCl9fTtkLmVhY2goe2FsdEtleTohMCxidWJibGVzOiEwLGNhbmNlbGFibGU6ITAsY2hhbmdlZFRvdWNoZXM6ITAsY3RybEtleTohMCxkZXRhaWw6ITAsZXZlbnRQaGFzZTohMCxtZXRhS2V5OiEwLHBhZ2VYOiEwLHBhZ2VZOiEwLHNoaWZ0S2V5OiEwLHZpZXc6ITAsImNoYXIiOiEwLGNvZGU6ITAsCmNoYXJDb2RlOiEwLGtleTohMCxrZXlDb2RlOiEwLGJ1dHRvbjohMCxidXR0b25zOiEwLGNsaWVudFg6ITAsY2xpZW50WTohMCxvZmZzZXRYOiEwLG9mZnNldFk6ITAscG9pbnRlcklkOiEwLHBvaW50ZXJUeXBlOiEwLHNjcmVlblg6ITAsc2NyZWVuWTohMCx0YXJnZXRUb3VjaGVzOiEwLHRvRWxlbWVudDohMCx0b3VjaGVzOiEwLHdoaWNoOiEwfSxkLmV2ZW50LmFkZFByb3ApO2QuZWFjaCh7Zm9jdXM6ImZvY3VzaW4iLGJsdXI6ImZvY3Vzb3V0In0sZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGUpe2lmKEwuZG9jdW1lbnRNb2RlKXt2YXIgZj1HLmdldCh0aGlzLCJoYW5kbGUiKSxnPWQuZXZlbnQuZml4KGUpO2cudHlwZT0iZm9jdXNpbiI9PT1lLnR5cGU\/ImZvY3VzIjoiYmx1ciI7Zy5pc1NpbXVsYXRlZD0hMDtmKGUpO2cudGFyZ2V0PT09Zy5jdXJyZW50VGFyZ2V0JiZmKGcpfWVsc2UgZC5ldmVudC5zaW11bGF0ZShiLGUudGFyZ2V0LGQuZXZlbnQuZml4KGUpKX1kLmV2ZW50LnNwZWNpYWxbYV09CntzZXR1cDpmdW5jdGlvbigpe3ZhciBlO2lmKHBiKHRoaXMsYSwhMCksIUwuZG9jdW1lbnRNb2RlKXJldHVybiExOyhlPUcuZ2V0KHRoaXMsYikpfHx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoYixjKTtHLnNldCh0aGlzLGIsKGV8fDApKzEpfSx0cmlnZ2VyOmZ1bmN0aW9uKCl7cmV0dXJuIHBiKHRoaXMsYSksITB9LHRlYXJkb3duOmZ1bmN0aW9uKCl7dmFyIGU7aWYoIUwuZG9jdW1lbnRNb2RlKXJldHVybiExOyhlPUcuZ2V0KHRoaXMsYiktMSk\/Ry5zZXQodGhpcyxiLGUpOih0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoYixjKSxHLnJlbW92ZSh0aGlzLGIpKX0sX2RlZmF1bHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIEcuZ2V0KGUudGFyZ2V0LGEpfSxkZWxlZ2F0ZVR5cGU6Yn07ZC5ldmVudC5zcGVjaWFsW2JdPXtzZXR1cDpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3duZXJEb2N1bWVudHx8dGhpcy5kb2N1bWVudHx8dGhpcyxmPUwuZG9jdW1lbnRNb2RlP3RoaXM6ZSxnPUcuZ2V0KGYsYik7Z3x8CihMLmRvY3VtZW50TW9kZT90aGlzLmFkZEV2ZW50TGlzdGVuZXIoYixjKTplLmFkZEV2ZW50TGlzdGVuZXIoYSxjLCEwKSk7Ry5zZXQoZixiLChnfHwwKSsxKX0sdGVhcmRvd246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMuZG9jdW1lbnR8fHRoaXMsZj1MLmRvY3VtZW50TW9kZT90aGlzOmUsZz1HLmdldChmLGIpLTE7Zz9HLnNldChmLGIsZyk6KEwuZG9jdW1lbnRNb2RlP3RoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihiLGMpOmUucmVtb3ZlRXZlbnRMaXN0ZW5lcihhLGMsITApLEcucmVtb3ZlKGYsYikpfX19KTtkLmVhY2goe21vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQiLHBvaW50ZXJlbnRlcjoicG9pbnRlcm92ZXIiLHBvaW50ZXJsZWF2ZToicG9pbnRlcm91dCJ9LGZ1bmN0aW9uKGEsYil7ZC5ldmVudC5zcGVjaWFsW2FdPXtkZWxlZ2F0ZVR5cGU6YixiaW5kVHlwZTpiLGhhbmRsZTpmdW5jdGlvbihjKXt2YXIgZSxmPQpjLnJlbGF0ZWRUYXJnZXQsZz1jLmhhbmRsZU9iajtyZXR1cm4gZiYmKGY9PT10aGlzfHxkLmNvbnRhaW5zKHRoaXMsZikpfHwoYy50eXBlPWcub3JpZ1R5cGUsZT1nLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpLGMudHlwZT1iKSxlfX19KTtkLmZuLmV4dGVuZCh7b246ZnVuY3Rpb24oYSxiLGMsZSl7cmV0dXJuIGZiKHRoaXMsYSxiLGMsZSl9LG9uZTpmdW5jdGlvbihhLGIsYyxlKXtyZXR1cm4gZmIodGhpcyxhLGIsYyxlLDEpfSxvZmY6ZnVuY3Rpb24oYSxiLGMpe3ZhciBlLGY7aWYoYSYmYS5wcmV2ZW50RGVmYXVsdCYmYS5oYW5kbGVPYmopcmV0dXJuIGU9YS5oYW5kbGVPYmosZChhLmRlbGVnYXRlVGFyZ2V0KS5vZmYoZS5uYW1lc3BhY2U\/ZS5vcmlnVHlwZSsiLiIrZS5uYW1lc3BhY2U6ZS5vcmlnVHlwZSxlLnNlbGVjdG9yLGUuaGFuZGxlciksdGhpcztpZigib2JqZWN0Ij09dHlwZW9mIGEpe2ZvcihmIGluIGEpdGhpcy5vZmYoZixiLGFbZl0pO3JldHVybiB0aGlzfXJldHVybiExIT09CmImJiJmdW5jdGlvbiIhPXR5cGVvZiBifHwoYz1iLGI9dm9pZCAwKSwhMT09PWMmJihjPWJiKSx0aGlzLmVhY2goZnVuY3Rpb24oKXtkLmV2ZW50LnJlbW92ZSh0aGlzLGEsYyxiKX0pfX0pO3ZhciBuZD0vPHNjcmlwdHw8c3R5bGV8PGxpbmsvaSxSYz0vY2hlY2tlZFxzKig\/OltePV18PVxzKi5jaGVja2VkLikvaSxTYz0vXlxzKjwhXFtDREFUQVxbfFxdXF0+XHMqJC9nO2QuZXh0ZW5kKHtodG1sUHJlZmlsdGVyOmZ1bmN0aW9uKGEpe3JldHVybiBhfSxjbG9uZTpmdW5jdGlvbihhLGIsYyl7dmFyIGUsZixnLGg9YS5jbG9uZU5vZGUoITApLG09b2IoYSk7aWYoIShOLm5vQ2xvbmVDaGVja2VkfHwxIT09YS5ub2RlVHlwZSYmMTEhPT1hLm5vZGVUeXBlfHxkLmlzWE1MRG9jKGEpKSl7dmFyIGw9c2EoaCksdD0wO2ZvcihlPShmPXNhKGEpKS5sZW5ndGg7dDxlO3QrKyl7dmFyIHc9Zlt0XSxyPWxbdF07dm9pZCAwOyJpbnB1dCI9PT0oZz1yLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpJiZIYi50ZXN0KHcudHlwZSk\/CnIuY2hlY2tlZD13LmNoZWNrZWQ6ImlucHV0IiE9PWcmJiJ0ZXh0YXJlYSIhPT1nfHwoci5kZWZhdWx0VmFsdWU9dy5kZWZhdWx0VmFsdWUpfX1pZihiKWlmKGMpZm9yKGY9Znx8c2EoYSksbD1sfHxzYShoKSx0PTAsZT1mLmxlbmd0aDt0PGU7dCsrKWdiKGZbdF0sbFt0XSk7ZWxzZSBnYihhLGgpO3JldHVybiAwPChsPXNhKGgsInNjcmlwdCIpKS5sZW5ndGgmJm5iKGwsIW0mJnNhKGEsInNjcmlwdCIpKSxofSxjbGVhbkRhdGE6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiLGMsZSxmPWQuZXZlbnQuc3BlY2lhbCxnPTA7dm9pZCAwIT09KGM9YVtnXSk7ZysrKWlmKEdiKGMpKXtpZihiPWNbRy5leHBhbmRvXSl7aWYoYi5ldmVudHMpZm9yKGUgaW4gYi5ldmVudHMpZltlXT9kLmV2ZW50LnJlbW92ZShjLGUpOmQucmVtb3ZlRXZlbnQoYyxlLGIuaGFuZGxlKTtjW0cuZXhwYW5kb109dm9pZCAwfWNbeGEuZXhwYW5kb10mJihjW3hhLmV4cGFuZG9dPXZvaWQgMCl9fX0pO2QuZm4uZXh0ZW5kKHtkZXRhY2g6ZnVuY3Rpb24oYSl7cmV0dXJuIFRiKHRoaXMsCmEsITApfSxyZW1vdmU6ZnVuY3Rpb24oYSl7cmV0dXJuIFRiKHRoaXMsYSl9LHRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIFhhKHRoaXMsZnVuY3Rpb24oYil7cmV0dXJuIHZvaWQgMD09PWI\/ZC50ZXh0KHRoaXMpOnRoaXMuZW1wdHkoKS5lYWNoKGZ1bmN0aW9uKCl7MSE9PXRoaXMubm9kZVR5cGUmJjExIT09dGhpcy5ub2RlVHlwZSYmOSE9PXRoaXMubm9kZVR5cGV8fCh0aGlzLnRleHRDb250ZW50PWIpfSl9LG51bGwsYSxhcmd1bWVudHMubGVuZ3RoKX0sYXBwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIGNiKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGEpezEhPT10aGlzLm5vZGVUeXBlJiYxMSE9PXRoaXMubm9kZVR5cGUmJjkhPT10aGlzLm5vZGVUeXBlfHxTYih0aGlzLGEpLmFwcGVuZENoaWxkKGEpfSl9LHByZXBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gY2IodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oYSl7aWYoMT09PXRoaXMubm9kZVR5cGV8fDExPT09dGhpcy5ub2RlVHlwZXx8OT09PQp0aGlzLm5vZGVUeXBlKXt2YXIgYj1TYih0aGlzLGEpO2IuaW5zZXJ0QmVmb3JlKGEsYi5maXJzdENoaWxkKX19KX0sYmVmb3JlOmZ1bmN0aW9uKCl7cmV0dXJuIGNiKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGEpe3RoaXMucGFyZW50Tm9kZSYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLHRoaXMpfSl9LGFmdGVyOmZ1bmN0aW9uKCl7cmV0dXJuIGNiKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGEpe3RoaXMucGFyZW50Tm9kZSYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLHRoaXMubmV4dFNpYmxpbmcpfSl9LGVtcHR5OmZ1bmN0aW9uKCl7Zm9yKHZhciBhLGI9MDtudWxsIT0oYT10aGlzW2JdKTtiKyspMT09PWEubm9kZVR5cGUmJihkLmNsZWFuRGF0YShzYShhLCExKSksYS50ZXh0Q29udGVudD0iIik7cmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9bnVsbCE9YSYmYSxiPW51bGw9PWI\/YTpiLHRoaXMubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIGQuY2xvbmUodGhpcywKYSxiKX0pfSxodG1sOmZ1bmN0aW9uKGEpe3JldHVybiBYYSh0aGlzLGZ1bmN0aW9uKGIpe3ZhciBjPXRoaXNbMF18fHt9LGU9MCxmPXRoaXMubGVuZ3RoO2lmKHZvaWQgMD09PWImJjE9PT1jLm5vZGVUeXBlKXJldHVybiBjLmlubmVySFRNTDtpZigic3RyaW5nIj09dHlwZW9mIGImJiFuZC50ZXN0KGIpJiYhQ2FbKG1jLmV4ZWMoYil8fFsiIiwiIl0pWzFdLnRvTG93ZXJDYXNlKCldKXtiPWQuaHRtbFByZWZpbHRlcihiKTt0cnl7Zm9yKDtlPGY7ZSsrKTE9PT0oYz10aGlzW2VdfHx7fSkubm9kZVR5cGUmJihkLmNsZWFuRGF0YShzYShjLCExKSksYy5pbm5lckhUTUw9Yik7Yz0wfWNhdGNoKGcpe319YyYmdGhpcy5lbXB0eSgpLmFwcGVuZChiKX0sbnVsbCxhLGFyZ3VtZW50cy5sZW5ndGgpfSxyZXBsYWNlV2l0aDpmdW5jdGlvbigpe3ZhciBhPVtdO3JldHVybiBjYih0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihiKXt2YXIgYz10aGlzLnBhcmVudE5vZGU7MD5kLmluQXJyYXkodGhpcyxhKSYmCihkLmNsZWFuRGF0YShzYSh0aGlzKSksYyYmYy5yZXBsYWNlQ2hpbGQoYix0aGlzKSl9LGEpfX0pO2QuZWFjaCh7YXBwZW5kVG86ImFwcGVuZCIscHJlcGVuZFRvOiJwcmVwZW5kIixpbnNlcnRCZWZvcmU6ImJlZm9yZSIsaW5zZXJ0QWZ0ZXI6ImFmdGVyIixyZXBsYWNlQWxsOiJyZXBsYWNlV2l0aCJ9LGZ1bmN0aW9uKGEsYil7ZC5mblthXT1mdW5jdGlvbihjKXtmb3IodmFyIGU9W10sZj1kKGMpLGc9Zi5sZW5ndGgtMSxoPTA7aDw9ZztoKyspYz1oPT09Zz90aGlzOnRoaXMuY2xvbmUoITApLGQoZltoXSlbYl0oYyksdWIuYXBwbHkoZSxjLmdldCgpKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZSl9fSk7dmFyIGJjPW5ldyBSZWdFeHAoIl4oIit6YysiKSg\/IXB4KVthLXolXSskIiwiaSIpLGFjPS9eLS0vLFViPWZ1bmN0aW9uKGEpe3ZhciBiPWEub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldztyZXR1cm4gYiYmYi5vcGVuZXJ8fChiPW4pLGIuZ2V0Q29tcHV0ZWRTdHlsZShhKX0sQmM9ZnVuY3Rpb24oYSwKYixjKXt2YXIgZSxmPXt9O2ZvcihlIGluIGIpZltlXT1hLnN0eWxlW2VdLGEuc3R5bGVbZV09YltlXTtmb3IoZSBpbiBjPWMuY2FsbChhKSxiKWEuc3R5bGVbZV09ZltlXTtyZXR1cm4gY30sVGM9bmV3IFJlZ0V4cChQYS5qb2luKCJ8IiksImkiKTshZnVuY3Rpb24oKXtmdW5jdGlvbiBhKCl7aWYobCl7bS5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi0xMTExMXB4O3dpZHRoOjYwcHg7bWFyZ2luLXRvcDoxcHg7cGFkZGluZzowO2JvcmRlcjowIjtsLnN0eWxlLmNzc1RleHQ9InBvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94O292ZXJmbG93OnNjcm9sbDttYXJnaW46YXV0bztib3JkZXI6MXB4O3BhZGRpbmc6MXB4O3dpZHRoOjYwJTt0b3A6MSUiO2piLmFwcGVuZENoaWxkKG0pLmFwcGVuZENoaWxkKGwpO3ZhciB0PW4uZ2V0Q29tcHV0ZWRTdHlsZShsKTtiPSIxJSIhPT10LnRvcDtoPTEyPT09TWF0aC5yb3VuZChwYXJzZUZsb2F0KHQubWFyZ2luTGVmdCkpOwpsLnN0eWxlLnJpZ2h0PSI2MCUiO2Y9MzY9PT1NYXRoLnJvdW5kKHBhcnNlRmxvYXQodC5yaWdodCkpO2M9MzY9PT1NYXRoLnJvdW5kKHBhcnNlRmxvYXQodC53aWR0aCkpO2wuc3R5bGUucG9zaXRpb249ImFic29sdXRlIjtlPTEyPT09TWF0aC5yb3VuZChwYXJzZUZsb2F0KGwub2Zmc2V0V2lkdGgvMykpO2piLnJlbW92ZUNoaWxkKG0pO2w9bnVsbH19dmFyIGIsYyxlLGYsZyxoLG09TC5jcmVhdGVFbGVtZW50KCJkaXYiKSxsPUwuY3JlYXRlRWxlbWVudCgiZGl2Iik7bC5zdHlsZSYmKGwuc3R5bGUuYmFja2dyb3VuZENsaXA9ImNvbnRlbnQtYm94IixsLmNsb25lTm9kZSghMCkuc3R5bGUuYmFja2dyb3VuZENsaXA9IiIsTi5jbGVhckNsb25lU3R5bGU9ImNvbnRlbnQtYm94Ij09PWwuc3R5bGUuYmFja2dyb3VuZENsaXAsZC5leHRlbmQoTix7Ym94U2l6aW5nUmVsaWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gYSgpLGN9LHBpeGVsQm94U3R5bGVzOmZ1bmN0aW9uKCl7cmV0dXJuIGEoKSwKZn0scGl4ZWxQb3NpdGlvbjpmdW5jdGlvbigpe3JldHVybiBhKCksYn0scmVsaWFibGVNYXJnaW5MZWZ0OmZ1bmN0aW9uKCl7cmV0dXJuIGEoKSxofSxzY3JvbGxib3hTaXplOmZ1bmN0aW9uKCl7cmV0dXJuIGEoKSxlfSxyZWxpYWJsZVRyRGltZW5zaW9uczpmdW5jdGlvbigpe3ZhciB0LHcscix6O3JldHVybiBudWxsPT1nJiYodD1MLmNyZWF0ZUVsZW1lbnQoInRhYmxlIiksdz1MLmNyZWF0ZUVsZW1lbnQoInRyIikscj1MLmNyZWF0ZUVsZW1lbnQoImRpdiIpLHQuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7bGVmdDotMTExMTFweDtib3JkZXItY29sbGFwc2U6c2VwYXJhdGUiLHcuc3R5bGUuY3NzVGV4dD0iYm9yZGVyOjFweCBzb2xpZCIsdy5zdHlsZS5oZWlnaHQ9IjFweCIsci5zdHlsZS5oZWlnaHQ9IjlweCIsci5zdHlsZS5kaXNwbGF5PSJibG9jayIsamIuYXBwZW5kQ2hpbGQodCkuYXBwZW5kQ2hpbGQodykuYXBwZW5kQ2hpbGQociksej1uLmdldENvbXB1dGVkU3R5bGUodyksCmc9cGFyc2VJbnQoei5oZWlnaHQsMTApK3BhcnNlSW50KHouYm9yZGVyVG9wV2lkdGgsMTApK3BhcnNlSW50KHouYm9yZGVyQm90dG9tV2lkdGgsMTApPT09dy5vZmZzZXRIZWlnaHQsamIucmVtb3ZlQ2hpbGQodCkpLGd9fSkpfSgpO3ZhciByYz1bIldlYmtpdCIsIk1veiIsIm1zIl0scWM9TC5jcmVhdGVFbGVtZW50KCJkaXYiKS5zdHlsZSxwYz17fSxvZD0vXihub25lfHRhYmxlKD8hLWNbZWFdKS4rKS8scGQ9e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdmlzaWJpbGl0eToiaGlkZGVuIixkaXNwbGF5OiJibG9jayJ9LENjPXtsZXR0ZXJTcGFjaW5nOiIwIixmb250V2VpZ2h0OiI0MDAifTtkLmV4dGVuZCh7Y3NzSG9va3M6e29wYWNpdHk6e2dldDpmdW5jdGlvbihhLGIpe2lmKGIpcmV0dXJuIGE9S2EoYSwib3BhY2l0eSIpLCIiPT09YT8iMSI6YX19fSxjc3NOdW1iZXI6e2FuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiEwLGFzcGVjdFJhdGlvOiEwLGJvcmRlckltYWdlU2xpY2U6ITAsY29sdW1uQ291bnQ6ITAsCmZsZXhHcm93OiEwLGZsZXhTaHJpbms6ITAsZm9udFdlaWdodDohMCxncmlkQXJlYTohMCxncmlkQ29sdW1uOiEwLGdyaWRDb2x1bW5FbmQ6ITAsZ3JpZENvbHVtblN0YXJ0OiEwLGdyaWRSb3c6ITAsZ3JpZFJvd0VuZDohMCxncmlkUm93U3RhcnQ6ITAsbGluZUhlaWdodDohMCxvcGFjaXR5OiEwLG9yZGVyOiEwLG9ycGhhbnM6ITAsc2NhbGU6ITAsd2lkb3dzOiEwLHpJbmRleDohMCx6b29tOiEwLGZpbGxPcGFjaXR5OiEwLGZsb29kT3BhY2l0eTohMCxzdG9wT3BhY2l0eTohMCxzdHJva2VNaXRlcmxpbWl0OiEwLHN0cm9rZU9wYWNpdHk6ITB9LGNzc1Byb3BzOnt9LHN0eWxlOmZ1bmN0aW9uKGEsYixjLGUpe2lmKGEmJjMhPT1hLm5vZGVUeXBlJiY4IT09YS5ub2RlVHlwZSYmYS5zdHlsZSl7dmFyIGYsZyxoLG09QmEoYiksbD1hYy50ZXN0KGIpLHQ9YS5zdHlsZTtpZihsfHwoYj1BYihtKSksaD1kLmNzc0hvb2tzW2JdfHxkLmNzc0hvb2tzW21dLHZvaWQgMD09PWMpcmV0dXJuIGgmJgoiZ2V0ImluIGgmJnZvaWQgMCE9PShmPWguZ2V0KGEsITEsZSkpP2Y6dFtiXTsic3RyaW5nIj09PShnPXR5cGVvZiBjKSYmKGY9eWIuZXhlYyhjKSkmJmZbMV0mJihjPVBiKGEsYixmKSxnPSJudW1iZXIiKTtudWxsIT1jJiZjPT1jJiYoIm51bWJlciIhPT1nfHxsfHwoYys9ZiYmZlszXXx8KGQuY3NzTnVtYmVyW21dPyIiOiJweCIpKSxOLmNsZWFyQ2xvbmVTdHlsZXx8IiIhPT1jfHwwIT09Yi5pbmRleE9mKCJiYWNrZ3JvdW5kIil8fCh0W2JdPSJpbmhlcml0IiksaCYmInNldCJpbiBoJiZ2b2lkIDA9PT0oYz1oLnNldChhLGMsZSkpfHwobD90LnNldFByb3BlcnR5KGIsYyk6dFtiXT1jKSl9fSxjc3M6ZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGYsZyxoLG09QmEoYik7cmV0dXJuIGFjLnRlc3QoYil8fChiPUFiKG0pKSwoaD1kLmNzc0hvb2tzW2JdfHxkLmNzc0hvb2tzW21dKSYmImdldCJpbiBoJiYoZj1oLmdldChhLCEwLGMpKSx2b2lkIDA9PT1mJiYoZj1LYShhLGIsZSkpLCJub3JtYWwiPT09CmYmJmIgaW4gQ2MmJihmPUNjW2JdKSwiIj09PWN8fGM\/KGc9cGFyc2VGbG9hdChmKSwhMD09PWN8fGlzRmluaXRlKGcpP2d8fDA6Zik6Zn19KTtkLmVhY2goWyJoZWlnaHQiLCJ3aWR0aCJdLGZ1bmN0aW9uKGEsYil7ZC5jc3NIb29rc1tiXT17Z2V0OmZ1bmN0aW9uKGMsZSxmKXtpZihlKXJldHVybiFvZC50ZXN0KGQuY3NzKGMsImRpc3BsYXkiKSl8fGMuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgmJmMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg\/QmIoYyxiLGYpOkJjKGMscGQsZnVuY3Rpb24oKXtyZXR1cm4gQmIoYyxiLGYpfSl9LHNldDpmdW5jdGlvbihjLGUsZil7dmFyIGcsaD1VYihjKSxtPSFOLnNjcm9sbGJveFNpemUoKSYmImFic29sdXRlIj09PWgucG9zaXRpb24sbD0obXx8ZikmJiJib3JkZXItYm94Ij09PWQuY3NzKGMsImJveFNpemluZyIsITEsaCk7Zj1mP3JiKGMsYixmLGwsaCk6MDtyZXR1cm4gbCYmbSYmKGYtPU1hdGguY2VpbChjWyJvZmZzZXQiK2JbMF0udG9VcHBlckNhc2UoKSsKYi5zbGljZSgxKV0tcGFyc2VGbG9hdChoW2JdKS1yYihjLGIsImJvcmRlciIsITEsaCktLjUpKSxmJiYoZz15Yi5leGVjKGUpKSYmInB4IiE9PShnWzNdfHwicHgiKSYmKGMuc3R5bGVbYl09ZSxlPWQuY3NzKGMsYikpLFdiKDAsZSxmKX19fSk7ZC5jc3NIb29rcy5tYXJnaW5MZWZ0PVZiKE4ucmVsaWFibGVNYXJnaW5MZWZ0LGZ1bmN0aW9uKGEsYil7aWYoYilyZXR1cm4ocGFyc2VGbG9hdChLYShhLCJtYXJnaW5MZWZ0IikpfHxhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQtQmMoYSx7bWFyZ2luTGVmdDowfSxmdW5jdGlvbigpe3JldHVybiBhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnR9KSkrInB4In0pO2QuZWFjaCh7bWFyZ2luOiIiLHBhZGRpbmc6IiIsYm9yZGVyOiJXaWR0aCJ9LGZ1bmN0aW9uKGEsYil7ZC5jc3NIb29rc1thK2JdPXtleHBhbmQ6ZnVuY3Rpb24oYyl7dmFyIGU9MCxmPXt9O2ZvcihjPSJzdHJpbmciPT10eXBlb2YgYz9jLnNwbGl0KCIgIik6W2NdOzQ+CmU7ZSsrKWZbYStQYVtlXStiXT1jW2VdfHxjW2UtMl18fGNbMF07cmV0dXJuIGZ9fTsibWFyZ2luIiE9PWEmJihkLmNzc0hvb2tzW2ErYl0uc2V0PVdiKX0pO2QuZm4uZXh0ZW5kKHtjc3M6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gWGEodGhpcyxmdW5jdGlvbihjLGUsZil7dmFyIGcsaD17fSxtPTA7aWYoQXJyYXkuaXNBcnJheShlKSl7Zj1VYihjKTtmb3IoZz1lLmxlbmd0aDttPGc7bSsrKWhbZVttXV09ZC5jc3MoYyxlW21dLCExLGYpO3JldHVybiBofXJldHVybiB2b2lkIDAhPT1mP2Quc3R5bGUoYyxlLGYpOmQuY3NzKGMsZSl9LGEsYiwxPGFyZ3VtZW50cy5sZW5ndGgpfX0pOygoZC5Ud2Vlbj16YSkucHJvdG90eXBlPXtjb25zdHJ1Y3Rvcjp6YSxpbml0OmZ1bmN0aW9uKGEsYixjLGUsZixnKXt0aGlzLmVsZW09YTt0aGlzLnByb3A9Yzt0aGlzLmVhc2luZz1mfHxkLmVhc2luZy5fZGVmYXVsdDt0aGlzLm9wdGlvbnM9Yjt0aGlzLnN0YXJ0PXRoaXMubm93PXRoaXMuY3VyKCk7dGhpcy5lbmQ9CmU7dGhpcy51bml0PWd8fChkLmNzc051bWJlcltjXT8iIjoicHgiKX0sY3VyOmZ1bmN0aW9uKCl7dmFyIGE9emEucHJvcEhvb2tzW3RoaXMucHJvcF07cmV0dXJuIGEmJmEuZ2V0P2EuZ2V0KHRoaXMpOnphLnByb3BIb29rcy5fZGVmYXVsdC5nZXQodGhpcyl9LHJ1bjpmdW5jdGlvbihhKXt2YXIgYixjPXphLnByb3BIb29rc1t0aGlzLnByb3BdO3JldHVybiB0aGlzLm9wdGlvbnMuZHVyYXRpb24\/dGhpcy5wb3M9Yj1kLmVhc2luZ1t0aGlzLmVhc2luZ10oYSx0aGlzLm9wdGlvbnMuZHVyYXRpb24qYSwwLDEsdGhpcy5vcHRpb25zLmR1cmF0aW9uKTp0aGlzLnBvcz1iPWEsdGhpcy5ub3c9KHRoaXMuZW5kLXRoaXMuc3RhcnQpKmIrdGhpcy5zdGFydCx0aGlzLm9wdGlvbnMuc3RlcCYmdGhpcy5vcHRpb25zLnN0ZXAuY2FsbCh0aGlzLmVsZW0sdGhpcy5ub3csdGhpcyksYyYmYy5zZXQ\/Yy5zZXQodGhpcyk6emEucHJvcEhvb2tzLl9kZWZhdWx0LnNldCh0aGlzKSx0aGlzfX0pLmluaXQucHJvdG90eXBlPQp6YS5wcm90b3R5cGU7KHphLnByb3BIb29rcz17X2RlZmF1bHQ6e2dldDpmdW5jdGlvbihhKXt2YXIgYjtyZXR1cm4gMSE9PWEuZWxlbS5ub2RlVHlwZXx8bnVsbCE9YS5lbGVtW2EucHJvcF0mJm51bGw9PWEuZWxlbS5zdHlsZVthLnByb3BdP2EuZWxlbVthLnByb3BdOihiPWQuY3NzKGEuZWxlbSxhLnByb3AsIiIpKSYmImF1dG8iIT09Yj9iOjB9LHNldDpmdW5jdGlvbihhKXtkLmZ4LnN0ZXBbYS5wcm9wXT9kLmZ4LnN0ZXBbYS5wcm9wXShhKToxIT09YS5lbGVtLm5vZGVUeXBlfHwhZC5jc3NIb29rc1thLnByb3BdJiZudWxsPT1hLmVsZW0uc3R5bGVbQWIoYS5wcm9wKV0\/YS5lbGVtW2EucHJvcF09YS5ub3c6ZC5zdHlsZShhLmVsZW0sYS5wcm9wLGEubm93K2EudW5pdCl9fX0pLnNjcm9sbFRvcD16YS5wcm9wSG9va3Muc2Nyb2xsTGVmdD17c2V0OmZ1bmN0aW9uKGEpe2EuZWxlbS5ub2RlVHlwZSYmYS5lbGVtLnBhcmVudE5vZGUmJihhLmVsZW1bYS5wcm9wXT1hLm5vdyl9fTtkLmVhc2luZz0Ke2xpbmVhcjpmdW5jdGlvbihhKXtyZXR1cm4gYX0sc3dpbmc6ZnVuY3Rpb24oYSl7cmV0dXJuLjUtTWF0aC5jb3MoYSpNYXRoLlBJKS8yfSxfZGVmYXVsdDoic3dpbmcifTtkLmZ4PXphLnByb3RvdHlwZS5pbml0O2QuZnguc3RlcD17fTt2YXIgc2IsWGIscWQ9L14oPzp0b2dnbGV8c2hvd3xoaWRlKSQvLHJkPS9xdWV1ZUhvb2tzJC87ZC5BbmltYXRpb249ZC5leHRlbmQoeCx7dHdlZW5lcnM6eyIqIjpbZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmNyZWF0ZVR3ZWVuKGEsYik7cmV0dXJuIFBiKGMuZWxlbSxhLHliLmV4ZWMoYiksYyksY31dfSx0d2VlbmVyOmZ1bmN0aW9uKGEsYil7TShhKT8oYj1hLGE9WyIqIl0pOmE9YS5tYXRjaChMYSk7Zm9yKHZhciBjLGU9MCxmPWEubGVuZ3RoO2U8ZjtlKyspYz1hW2VdLHgudHdlZW5lcnNbY109eC50d2VlbmVyc1tjXXx8W10seC50d2VlbmVyc1tjXS51bnNoaWZ0KGIpfSxwcmVmaWx0ZXJzOltmdW5jdGlvbihhLGIsYyl7dmFyIGUsZixnLGgsCm0sbCx0LHc9IndpZHRoImluIGJ8fCJoZWlnaHQiaW4gYixyPXRoaXMsej17fSxEPWEuc3R5bGUsRj1hLm5vZGVUeXBlJiZRYihhKSxPPUcuZ2V0KGEsImZ4c2hvdyIpO2ZvcihlIGluIGMucXVldWV8fChudWxsPT0oaD1kLl9xdWV1ZUhvb2tzKGEsImZ4IikpLnVucXVldWVkJiYoaC51bnF1ZXVlZD0wLG09aC5lbXB0eS5maXJlLGguZW1wdHkuZmlyZT1mdW5jdGlvbigpe2gudW5xdWV1ZWR8fG0oKX0pLGgudW5xdWV1ZWQrKyxyLmFsd2F5cyhmdW5jdGlvbigpe3IuYWx3YXlzKGZ1bmN0aW9uKCl7aC51bnF1ZXVlZC0tO2QucXVldWUoYSwiZngiKS5sZW5ndGh8fGguZW1wdHkuZmlyZSgpfSl9KSksYilpZihmPWJbZV0scWQudGVzdChmKSl7aWYoZGVsZXRlIGJbZV0sZz1nfHwidG9nZ2xlIj09PWYsZj09PShGPyJoaWRlIjoic2hvdyIpKXtpZigic2hvdyIhPT1mfHwhT3x8dm9pZCAwPT09T1tlXSljb250aW51ZTtGPSEwfXpbZV09TyYmT1tlXXx8ZC5zdHlsZShhLGUpfWlmKChiPSFkLmlzRW1wdHlPYmplY3QoYikpfHwKIWQuaXNFbXB0eU9iamVjdCh6KSlmb3IoZSBpbiB3JiYxPT09YS5ub2RlVHlwZSYmKGMub3ZlcmZsb3c9W0Qub3ZlcmZsb3csRC5vdmVyZmxvd1gsRC5vdmVyZmxvd1ldLG51bGw9PShsPU8mJk8uZGlzcGxheSkmJihsPUcuZ2V0KGEsImRpc3BsYXkiKSksIm5vbmUiPT09KHQ9ZC5jc3MoYSwiZGlzcGxheSIpKSYmKGw\/dD1sOigkYShbYV0sITApLGw9YS5zdHlsZS5kaXNwbGF5fHxsLHQ9ZC5jc3MoYSwiZGlzcGxheSIpLCRhKFthXSkpKSwoImlubGluZSI9PT10fHwiaW5saW5lLWJsb2NrIj09PXQmJm51bGwhPWwpJiYibm9uZSI9PT1kLmNzcyhhLCJmbG9hdCIpJiYoYnx8KHIuZG9uZShmdW5jdGlvbigpe0QuZGlzcGxheT1sfSksbnVsbD09bCYmKHQ9RC5kaXNwbGF5LGw9Im5vbmUiPT09dD8iIjp0KSksRC5kaXNwbGF5PSJpbmxpbmUtYmxvY2siKSksYy5vdmVyZmxvdyYmKEQub3ZlcmZsb3c9ImhpZGRlbiIsci5hbHdheXMoZnVuY3Rpb24oKXtELm92ZXJmbG93PWMub3ZlcmZsb3dbMF07CkQub3ZlcmZsb3dYPWMub3ZlcmZsb3dbMV07RC5vdmVyZmxvd1k9Yy5vdmVyZmxvd1syXX0pKSxiPSExLHopYnx8KE8\/ImhpZGRlbiJpbiBPJiYoRj1PLmhpZGRlbik6Tz1HLmFjY2VzcyhhLCJmeHNob3ciLHtkaXNwbGF5Omx9KSxnJiYoTy5oaWRkZW49IUYpLEYmJiRhKFthXSwhMCksci5kb25lKGZ1bmN0aW9uKCl7Zm9yKGUgaW4gRnx8JGEoW2FdKSxHLnJlbW92ZShhLCJmeHNob3ciKSx6KWQuc3R5bGUoYSxlLHpbZV0pfSkpLGI9dShGP09bZV06MCxlLHIpLGUgaW4gT3x8KE9bZV09Yi5zdGFydCxGJiYoYi5lbmQ9Yi5zdGFydCxiLnN0YXJ0PTApKX1dLHByZWZpbHRlcjpmdW5jdGlvbihhLGIpe2I\/eC5wcmVmaWx0ZXJzLnVuc2hpZnQoYSk6eC5wcmVmaWx0ZXJzLnB1c2goYSl9fSk7ZC5zcGVlZD1mdW5jdGlvbihhLGIsYyl7dmFyIGU9YSYmIm9iamVjdCI9PXR5cGVvZiBhP2QuZXh0ZW5kKHt9LGEpOntjb21wbGV0ZTpjfHwhYyYmYnx8TShhKSYmYSxkdXJhdGlvbjphLGVhc2luZzpjJiYKYnx8YiYmIU0oYikmJmJ9O3JldHVybiBkLmZ4Lm9mZj9lLmR1cmF0aW9uPTA6Im51bWJlciIhPXR5cGVvZiBlLmR1cmF0aW9uJiYoZS5kdXJhdGlvbiBpbiBkLmZ4LnNwZWVkcz9lLmR1cmF0aW9uPWQuZnguc3BlZWRzW2UuZHVyYXRpb25dOmUuZHVyYXRpb249ZC5meC5zcGVlZHMuX2RlZmF1bHQpLG51bGwhPWUucXVldWUmJiEwIT09ZS5xdWV1ZXx8KGUucXVldWU9ImZ4IiksZS5vbGQ9ZS5jb21wbGV0ZSxlLmNvbXBsZXRlPWZ1bmN0aW9uKCl7TShlLm9sZCkmJmUub2xkLmNhbGwodGhpcyk7ZS5xdWV1ZSYmZC5kZXF1ZXVlKHRoaXMsZS5xdWV1ZSl9LGV9O2QuZm4uZXh0ZW5kKHtmYWRlVG86ZnVuY3Rpb24oYSxiLGMsZSl7cmV0dXJuIHRoaXMuZmlsdGVyKFFiKS5jc3MoIm9wYWNpdHkiLDApLnNob3coKS5lbmQoKS5hbmltYXRlKHtvcGFjaXR5OmJ9LGEsYyxlKX0sYW5pbWF0ZTpmdW5jdGlvbihhLGIsYyxlKXt2YXIgZj1kLmlzRW1wdHlPYmplY3QoYSksZz1kLnNwZWVkKGIsYyxlKTsKYj1mdW5jdGlvbigpe3ZhciBoPXgodGhpcyxkLmV4dGVuZCh7fSxhKSxnKTsoZnx8Ry5nZXQodGhpcywiZmluaXNoIikpJiZoLnN0b3AoITApfTtyZXR1cm4gYi5maW5pc2g9YixmfHwhMT09PWcucXVldWU\/dGhpcy5lYWNoKGIpOnRoaXMucXVldWUoZy5xdWV1ZSxiKX0sc3RvcDpmdW5jdGlvbihhLGIsYyl7dmFyIGU9ZnVuY3Rpb24oZil7dmFyIGc9Zi5zdG9wO2RlbGV0ZSBmLnN0b3A7ZyhjKX07cmV0dXJuInN0cmluZyIhPXR5cGVvZiBhJiYoYz1iLGI9YSxhPXZvaWQgMCksYiYmdGhpcy5xdWV1ZShhfHwiZngiLFtdKSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZj0hMCxnPW51bGwhPWEmJmErInF1ZXVlSG9va3MiLGg9ZC50aW1lcnMsbT1HLmdldCh0aGlzKTtpZihnKW1bZ10mJm1bZ10uc3RvcCYmZShtW2ddKTtlbHNlIGZvcihnIGluIG0pbVtnXSYmbVtnXS5zdG9wJiZyZC50ZXN0KGcpJiZlKG1bZ10pO2ZvcihnPWgubGVuZ3RoO2ctLTspaFtnXS5lbGVtIT09dGhpc3x8bnVsbCE9CmEmJmhbZ10ucXVldWUhPT1hfHwoaFtnXS5hbmltLnN0b3AoYyksZj0hMSxoLnNwbGljZShnLDEpKTshZiYmY3x8ZC5kZXF1ZXVlKHRoaXMsYSl9KX0sZmluaXNoOmZ1bmN0aW9uKGEpe3JldHVybiExIT09YSYmKGE9YXx8ImZ4IiksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9Ry5nZXQodGhpcyksYz1iW2ErInF1ZXVlIl0sZT1iW2ErInF1ZXVlSG9va3MiXSxmPWQudGltZXJzLGc9Yz9jLmxlbmd0aDowO2IuZmluaXNoPSEwO2QucXVldWUodGhpcyxhLFtdKTtlJiZlLnN0b3AmJmUuc3RvcC5jYWxsKHRoaXMsITApO2ZvcihlPWYubGVuZ3RoO2UtLTspZltlXS5lbGVtPT09dGhpcyYmZltlXS5xdWV1ZT09PWEmJihmW2VdLmFuaW0uc3RvcCghMCksZi5zcGxpY2UoZSwxKSk7Zm9yKGU9MDtlPGc7ZSsrKWNbZV0mJmNbZV0uZmluaXNoJiZjW2VdLmZpbmlzaC5jYWxsKHRoaXMpO2RlbGV0ZSBiLmZpbmlzaH0pfX0pO2QuZWFjaChbInRvZ2dsZSIsInNob3ciLCJoaWRlIl0sZnVuY3Rpb24oYSwKYil7dmFyIGM9ZC5mbltiXTtkLmZuW2JdPWZ1bmN0aW9uKGUsZixnKXtyZXR1cm4gbnVsbD09ZXx8ImJvb2xlYW4iPT10eXBlb2YgZT9jLmFwcGx5KHRoaXMsYXJndW1lbnRzKTp0aGlzLmFuaW1hdGUodGIoYiwhMCksZSxmLGcpfX0pO2QuZWFjaCh7c2xpZGVEb3duOnRiKCJzaG93Iiksc2xpZGVVcDp0YigiaGlkZSIpLHNsaWRlVG9nZ2xlOnRiKCJ0b2dnbGUiKSxmYWRlSW46e29wYWNpdHk6InNob3cifSxmYWRlT3V0OntvcGFjaXR5OiJoaWRlIn0sZmFkZVRvZ2dsZTp7b3BhY2l0eToidG9nZ2xlIn19LGZ1bmN0aW9uKGEsYil7ZC5mblthXT1mdW5jdGlvbihjLGUsZil7cmV0dXJuIHRoaXMuYW5pbWF0ZShiLGMsZSxmKX19KTtkLnRpbWVycz1bXTtkLmZ4LnRpY2s9ZnVuY3Rpb24oKXt2YXIgYSxiPTAsYz1kLnRpbWVycztmb3Ioc2I9RGF0ZS5ub3coKTtiPGMubGVuZ3RoO2IrKykoYT1jW2JdKSgpfHxjW2JdIT09YXx8Yy5zcGxpY2UoYi0tLDEpO2MubGVuZ3RofHxkLmZ4LnN0b3AoKTsKc2I9dm9pZCAwfTtkLmZ4LnRpbWVyPWZ1bmN0aW9uKGEpe2QudGltZXJzLnB1c2goYSk7ZC5meC5zdGFydCgpfTtkLmZ4LmludGVydmFsPTEzO2QuZnguc3RhcnQ9ZnVuY3Rpb24oKXtYYnx8KFhiPSEwLENiKCkpfTtkLmZ4LnN0b3A9ZnVuY3Rpb24oKXtYYj1udWxsfTtkLmZ4LnNwZWVkcz17c2xvdzo2MDAsZmFzdDoyMDAsX2RlZmF1bHQ6NDAwfTtkLmZuLmRlbGF5PWZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9ZC5meCYmZC5meC5zcGVlZHNbYV18fGEsYj1ifHwiZngiLHRoaXMucXVldWUoYixmdW5jdGlvbihjLGUpe3ZhciBmPW4uc2V0VGltZW91dChjLGEpO2Uuc3RvcD1mdW5jdGlvbigpe24uY2xlYXJUaW1lb3V0KGYpfX0pfTt2YXIgSWI9TC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpLHNkPUwuY3JlYXRlRWxlbWVudCgic2VsZWN0IikuYXBwZW5kQ2hpbGQoTC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKSk7SWIudHlwZT0iY2hlY2tib3giO04uY2hlY2tPbj0iIiE9PUliLnZhbHVlO04ub3B0U2VsZWN0ZWQ9CnNkLnNlbGVjdGVkOyhJYj1MLmNyZWF0ZUVsZW1lbnQoImlucHV0IikpLnZhbHVlPSJ0IjtJYi50eXBlPSJyYWRpbyI7Ti5yYWRpb1ZhbHVlPSJ0Ij09PUliLnZhbHVlO3ZhciBKYj1kLmV4cHIuYXR0ckhhbmRsZTtkLmZuLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihhLGIpe3JldHVybiBYYSh0aGlzLGQuYXR0cixhLGIsMTxhcmd1bWVudHMubGVuZ3RoKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZC5yZW1vdmVBdHRyKHRoaXMsYSl9KX19KTtkLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihhLGIsYyl7dmFyIGUsZixnPWEubm9kZVR5cGU7aWYoMyE9PWcmJjghPT1nJiYyIT09ZylyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIGEuZ2V0QXR0cmlidXRlP2QucHJvcChhLGIsYyk6KDE9PT1nJiZkLmlzWE1MRG9jKGEpfHwoZj1kLmF0dHJIb29rc1tiLnRvTG93ZXJDYXNlKCldfHwoZC5leHByLm1hdGNoLmJvb2wudGVzdChiKT90ZDp2b2lkIDApKSwKdm9pZCAwIT09Yz9udWxsPT09Yz92b2lkIGQucmVtb3ZlQXR0cihhLGIpOmYmJiJzZXQiaW4gZiYmdm9pZCAwIT09KGU9Zi5zZXQoYSxjLGIpKT9lOihhLnNldEF0dHJpYnV0ZShiLGMrIiIpLGMpOmYmJiJnZXQiaW4gZiYmbnVsbCE9PShlPWYuZ2V0KGEsYikpP2U6bnVsbD09KGU9ZC5maW5kLmF0dHIoYSxiKSk\/dm9pZCAwOmUpfSxhdHRySG9va3M6e3R5cGU6e3NldDpmdW5jdGlvbihhLGIpe2lmKCFOLnJhZGlvVmFsdWUmJiJyYWRpbyI9PT1iJiZYKGEsImlucHV0Iikpe3ZhciBjPWEudmFsdWU7cmV0dXJuIGEuc2V0QXR0cmlidXRlKCJ0eXBlIixiKSxjJiYoYS52YWx1ZT1jKSxifX19fSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGEsYil7dmFyIGM9MCxlPWImJmIubWF0Y2goTGEpO2lmKGUmJjE9PT1hLm5vZGVUeXBlKWZvcig7Yj1lW2MrK107KWEucmVtb3ZlQXR0cmlidXRlKGIpfX0pO3ZhciB0ZD17c2V0OmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4hMT09PWI\/ZC5yZW1vdmVBdHRyKGEsCmMpOmEuc2V0QXR0cmlidXRlKGMsYyksY319O2QuZWFjaChkLmV4cHIubWF0Y2guYm9vbC5zb3VyY2UubWF0Y2goL1x3Ky9nKSxmdW5jdGlvbihhLGIpe3ZhciBjPUpiW2JdfHxkLmZpbmQuYXR0cjtKYltiXT1mdW5jdGlvbihlLGYsZyl7dmFyIGgsbSxsPWYudG9Mb3dlckNhc2UoKTtyZXR1cm4gZ3x8KG09SmJbbF0sSmJbbF09aCxoPW51bGwhPWMoZSxmLGcpP2w6bnVsbCxKYltsXT1tKSxofX0pO3ZhciB1ZD0vXig\/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLHZkPS9eKD86YXxhcmVhKSQvaTtkLmZuLmV4dGVuZCh7cHJvcDpmdW5jdGlvbihhLGIpe3JldHVybiBYYSh0aGlzLGQucHJvcCxhLGIsMTxhcmd1bWVudHMubGVuZ3RoKX0scmVtb3ZlUHJvcDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXNbZC5wcm9wRml4W2FdfHxhXX0pfX0pO2QuZXh0ZW5kKHtwcm9wOmZ1bmN0aW9uKGEsYixjKXt2YXIgZSxmLGc9YS5ub2RlVHlwZTsKaWYoMyE9PWcmJjghPT1nJiYyIT09ZylyZXR1cm4gMT09PWcmJmQuaXNYTUxEb2MoYSl8fChiPWQucHJvcEZpeFtiXXx8YixmPWQucHJvcEhvb2tzW2JdKSx2b2lkIDAhPT1jP2YmJiJzZXQiaW4gZiYmdm9pZCAwIT09KGU9Zi5zZXQoYSxjLGIpKT9lOmFbYl09YzpmJiYiZ2V0ImluIGYmJm51bGwhPT0oZT1mLmdldChhLGIpKT9lOmFbYl19LHByb3BIb29rczp7dGFiSW5kZXg6e2dldDpmdW5jdGlvbihhKXt2YXIgYj1kLmZpbmQuYXR0cihhLCJ0YWJpbmRleCIpO3JldHVybiBiP3BhcnNlSW50KGIsMTApOnVkLnRlc3QoYS5ub2RlTmFtZSl8fHZkLnRlc3QoYS5ub2RlTmFtZSkmJmEuaHJlZj8wOi0xfX19LHByb3BGaXg6eyJmb3IiOiJodG1sRm9yIiwiY2xhc3MiOiJjbGFzc05hbWUifX0pO04ub3B0U2VsZWN0ZWR8fChkLnByb3BIb29rcy5zZWxlY3RlZD17Z2V0OmZ1bmN0aW9uKGEpe2E9YS5wYXJlbnROb2RlO3JldHVybiBhJiZhLnBhcmVudE5vZGUmJmEucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4LApudWxsfSxzZXQ6ZnVuY3Rpb24oYSl7YT1hLnBhcmVudE5vZGU7YSYmKGEuc2VsZWN0ZWRJbmRleCxhLnBhcmVudE5vZGUmJmEucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4KX19KTtkLmVhY2goInRhYkluZGV4IHJlYWRPbmx5IG1heExlbmd0aCBjZWxsU3BhY2luZyBjZWxsUGFkZGluZyByb3dTcGFuIGNvbFNwYW4gdXNlTWFwIGZyYW1lQm9yZGVyIGNvbnRlbnRFZGl0YWJsZSIuc3BsaXQoIiAiKSxmdW5jdGlvbigpe2QucHJvcEZpeFt0aGlzLnRvTG93ZXJDYXNlKCldPXRoaXN9KTtkLmZuLmV4dGVuZCh7YWRkQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxlLGYsZyxoO3JldHVybiBNKGEpP3RoaXMuZWFjaChmdW5jdGlvbihtKXtkKHRoaXMpLmFkZENsYXNzKGEuY2FsbCh0aGlzLG0sSCh0aGlzKSkpfSk6KGI9UChhKSkubGVuZ3RoP3RoaXMuZWFjaChmdW5jdGlvbigpe2lmKGU9SCh0aGlzKSxjPTE9PT10aGlzLm5vZGVUeXBlJiYiICIrQyhlKSsiICIpe2ZvcihnPTA7ZzxiLmxlbmd0aDtnKyspZj0KYltnXSwwPmMuaW5kZXhPZigiICIrZisiICIpJiYoYys9ZisiICIpO2g9QyhjKTtlIT09aCYmdGhpcy5zZXRBdHRyaWJ1dGUoImNsYXNzIixoKX19KTp0aGlzfSxyZW1vdmVDbGFzczpmdW5jdGlvbihhKXt2YXIgYixjLGUsZixnLGg7cmV0dXJuIE0oYSk\/dGhpcy5lYWNoKGZ1bmN0aW9uKG0pe2QodGhpcykucmVtb3ZlQ2xhc3MoYS5jYWxsKHRoaXMsbSxIKHRoaXMpKSl9KTphcmd1bWVudHMubGVuZ3RoPyhiPVAoYSkpLmxlbmd0aD90aGlzLmVhY2goZnVuY3Rpb24oKXtpZihlPUgodGhpcyksYz0xPT09dGhpcy5ub2RlVHlwZSYmIiAiK0MoZSkrIiAiKXtmb3IoZz0wO2c8Yi5sZW5ndGg7ZysrKWZvcihmPWJbZ107LTE8Yy5pbmRleE9mKCIgIitmKyIgIik7KWM9Yy5yZXBsYWNlKCIgIitmKyIgIiwiICIpO2g9QyhjKTtlIT09aCYmdGhpcy5zZXRBdHRyaWJ1dGUoImNsYXNzIixoKX19KTp0aGlzOnRoaXMuYXR0cigiY2xhc3MiLCIiKX0sdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24oYSxiKXt2YXIgYywKZSxmLGcsaD10eXBlb2YgYSxtPSJzdHJpbmciPT09aHx8QXJyYXkuaXNBcnJheShhKTtyZXR1cm4gTShhKT90aGlzLmVhY2goZnVuY3Rpb24obCl7ZCh0aGlzKS50b2dnbGVDbGFzcyhhLmNhbGwodGhpcyxsLEgodGhpcyksYiksYil9KToiYm9vbGVhbiI9PXR5cGVvZiBiJiZtP2I\/dGhpcy5hZGRDbGFzcyhhKTp0aGlzLnJlbW92ZUNsYXNzKGEpOihjPVAoYSksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7aWYobSlmb3IoZz1kKHRoaXMpLGY9MDtmPGMubGVuZ3RoO2YrKyllPWNbZl0sZy5oYXNDbGFzcyhlKT9nLnJlbW92ZUNsYXNzKGUpOmcuYWRkQ2xhc3MoZSk7ZWxzZSB2b2lkIDAhPT1hJiYiYm9vbGVhbiIhPT1ofHwoKGU9SCh0aGlzKSkmJkcuc2V0KHRoaXMsIl9fY2xhc3NOYW1lX18iLGUpLHRoaXMuc2V0QXR0cmlidXRlJiZ0aGlzLnNldEF0dHJpYnV0ZSgiY2xhc3MiLGV8fCExPT09YT8iIjpHLmdldCh0aGlzLCJfX2NsYXNzTmFtZV9fIil8fCIiKSl9KSl9LGhhc0NsYXNzOmZ1bmN0aW9uKGEpe3ZhciBiLApjPTA7Zm9yKGE9IiAiK2ErIiAiO2I9dGhpc1tjKytdOylpZigxPT09Yi5ub2RlVHlwZSYmLTE8KCIgIitDKEgoYikpKyIgIikuaW5kZXhPZihhKSlyZXR1cm4hMDtyZXR1cm4hMX19KTt2YXIgd2Q9L1xyL2c7ZC5mbi5leHRlbmQoe3ZhbDpmdW5jdGlvbihhKXt2YXIgYixjLGUsZj10aGlzWzBdO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPU0oYSksdGhpcy5lYWNoKGZ1bmN0aW9uKGcpe3ZhciBoOzE9PT10aGlzLm5vZGVUeXBlJiYobnVsbD09KGg9ZT9hLmNhbGwodGhpcyxnLGQodGhpcykudmFsKCkpOmEpP2g9IiI6Im51bWJlciI9PXR5cGVvZiBoP2grPSIiOkFycmF5LmlzQXJyYXkoaCkmJihoPWQubWFwKGgsZnVuY3Rpb24obSl7cmV0dXJuIG51bGw9PW0\/IiI6bSsiIn0pKSwoYj1kLnZhbEhvb2tzW3RoaXMudHlwZV18fGQudmFsSG9va3NbdGhpcy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSkmJiJzZXQiaW4gYiYmdm9pZCAwIT09Yi5zZXQodGhpcyxoLCJ2YWx1ZSIpfHwodGhpcy52YWx1ZT0KaCkpfSkpOmY\/KGI9ZC52YWxIb29rc1tmLnR5cGVdfHxkLnZhbEhvb2tzW2Yubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0pJiYiZ2V0ImluIGImJnZvaWQgMCE9PShjPWIuZ2V0KGYsInZhbHVlIikpP2M6InN0cmluZyI9PXR5cGVvZihjPWYudmFsdWUpP2MucmVwbGFjZSh3ZCwiIik6bnVsbD09Yz8iIjpjOnZvaWQgMH19KTtkLmV4dGVuZCh7dmFsSG9va3M6e29wdGlvbjp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiPWQuZmluZC5hdHRyKGEsInZhbHVlIik7cmV0dXJuIG51bGwhPWI\/YjpDKGQudGV4dChhKSl9fSxzZWxlY3Q6e2dldDpmdW5jdGlvbihhKXt2YXIgYixjLGU9YS5vcHRpb25zLGY9YS5zZWxlY3RlZEluZGV4LGc9InNlbGVjdC1vbmUiPT09YS50eXBlLGg9Zz9udWxsOltdLG09Zz9mKzE6ZS5sZW5ndGg7Zm9yKGM9MD5mP206Zz9mOjA7YzxtO2MrKylpZighKCEoYj1lW2NdKS5zZWxlY3RlZCYmYyE9PWZ8fGIuZGlzYWJsZWR8fGIucGFyZW50Tm9kZS5kaXNhYmxlZCYmWChiLnBhcmVudE5vZGUsCiJvcHRncm91cCIpKSl7aWYoYT1kKGIpLnZhbCgpLGcpcmV0dXJuIGE7aC5wdXNoKGEpfXJldHVybiBofSxzZXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYyxlLGY9YS5vcHRpb25zO2I9ZC5tYWtlQXJyYXkoYik7Zm9yKHZhciBnPWYubGVuZ3RoO2ctLTspKChlPWZbZ10pLnNlbGVjdGVkPS0xPGQuaW5BcnJheShkLnZhbEhvb2tzLm9wdGlvbi5nZXQoZSksYikpJiYoYz0hMCk7cmV0dXJuIGN8fChhLnNlbGVjdGVkSW5kZXg9LTEpLGJ9fX19KTtkLmVhY2goWyJyYWRpbyIsImNoZWNrYm94Il0sZnVuY3Rpb24oKXtkLnZhbEhvb2tzW3RoaXNdPXtzZXQ6ZnVuY3Rpb24oYSxiKXtpZihBcnJheS5pc0FycmF5KGIpKXJldHVybiBhLmNoZWNrZWQ9LTE8ZC5pbkFycmF5KGQoYSkudmFsKCksYil9fTtOLmNoZWNrT258fChkLnZhbEhvb2tzW3RoaXNdLmdldD1mdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09PWEuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpPyJvbiI6YS52YWx1ZX0pfSk7dmFyIEtiPW4ubG9jYXRpb24sCkRjPURhdGUubm93KCksaGM9L1w\/LztkLnBhcnNlWE1MPWZ1bmN0aW9uKGEpe3ZhciBiO2lmKCFhfHwic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIG51bGw7dHJ5e3ZhciBjPShuZXcgbi5ET01QYXJzZXIpLnBhcnNlRnJvbVN0cmluZyhhLCJ0ZXh0L3htbCIpfWNhdGNoKGUpe31yZXR1cm4gYj1jJiZjLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwYXJzZXJlcnJvciIpWzBdLGMmJiFifHxkLmVycm9yKCJJbnZhbGlkIFhNTDogIisoYj9kLm1hcChiLmNoaWxkTm9kZXMsZnVuY3Rpb24oZSl7cmV0dXJuIGUudGV4dENvbnRlbnR9KS5qb2luKCJcbiIpOmEpKSxjfTt2YXIgRWM9L14oPzpmb2N1c2luZm9jdXN8Zm9jdXNvdXRibHVyKSQvLEZjPWZ1bmN0aW9uKGEpe2Euc3RvcFByb3BhZ2F0aW9uKCl9O2QuZXh0ZW5kKGQuZXZlbnQse3RyaWdnZXI6ZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGYsZyxoLG0sbCx0LHc9W2N8fExdLHI9RmIuY2FsbChhLCJ0eXBlIik\/YS50eXBlOmEsej1GYi5jYWxsKGEsCiJuYW1lc3BhY2UiKT9hLm5hbWVzcGFjZS5zcGxpdCgiLiIpOltdO2lmKGY9dD1nPWM9Y3x8TCwzIT09Yy5ub2RlVHlwZSYmOCE9PWMubm9kZVR5cGUmJiFFYy50ZXN0KHIrZC5ldmVudC50cmlnZ2VyZWQpJiYoLTE8ci5pbmRleE9mKCIuIikmJihyPSh6PXIuc3BsaXQoIi4iKSkuc2hpZnQoKSx6LnNvcnQoKSksaD0wPnIuaW5kZXhPZigiOiIpJiYib24iK3IsKGE9YVtkLmV4cGFuZG9dP2E6bmV3IGQuRXZlbnQociwib2JqZWN0Ij09dHlwZW9mIGEmJmEpKS5pc1RyaWdnZXI9ZT8yOjMsYS5uYW1lc3BhY2U9ei5qb2luKCIuIiksYS5ybmFtZXNwYWNlPWEubmFtZXNwYWNlP25ldyBSZWdFeHAoIihefFxcLikiK3ouam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIik6bnVsbCxhLnJlc3VsdD12b2lkIDAsYS50YXJnZXR8fChhLnRhcmdldD1jKSxiPW51bGw9PWI\/W2FdOmQubWFrZUFycmF5KGIsW2FdKSxsPWQuZXZlbnQuc3BlY2lhbFtyXXx8e30sZXx8IWwudHJpZ2dlcnx8ITEhPT0KbC50cmlnZ2VyLmFwcGx5KGMsYikpKXtpZighZSYmIWwubm9CdWJibGUmJiFrYihjKSl7dmFyIEQ9bC5kZWxlZ2F0ZVR5cGV8fHI7Zm9yKEVjLnRlc3QoRCtyKXx8KGY9Zi5wYXJlbnROb2RlKTtmO2Y9Zi5wYXJlbnROb2RlKXcucHVzaChmKSxnPWY7Zz09PShjLm93bmVyRG9jdW1lbnR8fEwpJiZ3LnB1c2goZy5kZWZhdWx0Vmlld3x8Zy5wYXJlbnRXaW5kb3d8fG4pfWZvcih6PTA7KGY9d1t6KytdKSYmIWEuaXNQcm9wYWdhdGlvblN0b3BwZWQoKTspdD1mLGEudHlwZT0xPHo\/RDpsLmJpbmRUeXBlfHxyLChtPShHLmdldChmLCJldmVudHMiKXx8T2JqZWN0LmNyZWF0ZShudWxsKSlbYS50eXBlXSYmRy5nZXQoZiwiaGFuZGxlIikpJiZtLmFwcGx5KGYsYiksKG09aCYmZltoXSkmJm0uYXBwbHkmJkdiKGYpJiYoYS5yZXN1bHQ9bS5hcHBseShmLGIpLCExPT09YS5yZXN1bHQmJmEucHJldmVudERlZmF1bHQoKSk7cmV0dXJuIGEudHlwZT1yLGV8fGEuaXNEZWZhdWx0UHJldmVudGVkKCl8fApsLl9kZWZhdWx0JiYhMSE9PWwuX2RlZmF1bHQuYXBwbHkody5wb3AoKSxiKXx8IUdiKGMpfHxoJiZNKGNbcl0pJiYha2IoYykmJigoZz1jW2hdKSYmKGNbaF09bnVsbCksZC5ldmVudC50cmlnZ2VyZWQ9cixhLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkmJnQuYWRkRXZlbnRMaXN0ZW5lcihyLEZjKSxjW3JdKCksYS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpJiZ0LnJlbW92ZUV2ZW50TGlzdGVuZXIocixGYyksZC5ldmVudC50cmlnZ2VyZWQ9dm9pZCAwLGcmJihjW2hdPWcpKSxhLnJlc3VsdH19LHNpbXVsYXRlOmZ1bmN0aW9uKGEsYixjKXthPWQuZXh0ZW5kKG5ldyBkLkV2ZW50LGMse3R5cGU6YSxpc1NpbXVsYXRlZDohMH0pO2QuZXZlbnQudHJpZ2dlcihhLG51bGwsYil9fSk7ZC5mbi5leHRlbmQoe3RyaWdnZXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZC5ldmVudC50cmlnZ2VyKGEsYix0aGlzKX0pfSx0cmlnZ2VySGFuZGxlcjpmdW5jdGlvbihhLGIpe3ZhciBjPQp0aGlzWzBdO2lmKGMpcmV0dXJuIGQuZXZlbnQudHJpZ2dlcihhLGIsYywhMCl9fSk7dmFyIFVjPS9cW1xdJC8sR2M9L1xyP1xuL2cseGQ9L14oPzpzdWJtaXR8YnV0dG9ufGltYWdlfHJlc2V0fGZpbGUpJC9pLHlkPS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGtleWdlbikvaTtkLnBhcmFtPWZ1bmN0aW9uKGEsYil7dmFyIGMsZT1bXSxmPWZ1bmN0aW9uKGcsaCl7aD1NKGgpP2goKTpoO2VbZS5sZW5ndGhdPWVuY29kZVVSSUNvbXBvbmVudChnKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KG51bGw9PWg\/IiI6aCl9O2lmKG51bGw9PWEpcmV0dXJuIiI7aWYoQXJyYXkuaXNBcnJheShhKXx8YS5qcXVlcnkmJiFkLmlzUGxhaW5PYmplY3QoYSkpZC5lYWNoKGEsZnVuY3Rpb24oKXtmKHRoaXMubmFtZSx0aGlzLnZhbHVlKX0pO2Vsc2UgZm9yKGMgaW4gYSllYShjLGFbY10sYixmKTtyZXR1cm4gZS5qb2luKCImIil9O2QuZm4uZXh0ZW5kKHtzZXJpYWxpemU6ZnVuY3Rpb24oKXtyZXR1cm4gZC5wYXJhbSh0aGlzLnNlcmlhbGl6ZUFycmF5KCkpfSwKc2VyaWFsaXplQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXt2YXIgYT1kLnByb3AodGhpcywiZWxlbWVudHMiKTtyZXR1cm4gYT9kLm1ha2VBcnJheShhKTp0aGlzfSkuZmlsdGVyKGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy50eXBlO3JldHVybiB0aGlzLm5hbWUmJiFkKHRoaXMpLmlzKCI6ZGlzYWJsZWQiKSYmeWQudGVzdCh0aGlzLm5vZGVOYW1lKSYmIXhkLnRlc3QoYSkmJih0aGlzLmNoZWNrZWR8fCFIYi50ZXN0KGEpKX0pLm1hcChmdW5jdGlvbihhLGIpe2E9ZCh0aGlzKS52YWwoKTtyZXR1cm4gbnVsbD09YT9udWxsOkFycmF5LmlzQXJyYXkoYSk\/ZC5tYXAoYSxmdW5jdGlvbihjKXtyZXR1cm57bmFtZTpiLm5hbWUsdmFsdWU6Yy5yZXBsYWNlKEdjLCJcclxuIil9fSk6e25hbWU6Yi5uYW1lLHZhbHVlOmEucmVwbGFjZShHYywiXHJcbiIpfX0pLmdldCgpfX0pO3ZhciB6ZD0vJTIwL2csQWQ9LyMuKiQvLEJkPS8oWz8mXSlfPVteJl0qLyxDZD0vXiguKj8pOlsgXHRdKihbXlxyXG5dKikkL2dtLApEZD0vXig\/OkdFVHxIRUFEKSQvLEVkPS9eXC9cLy8sSGM9e30sY2M9e30sSWM9IiovIi5jb25jYXQoIioiKSxpYz1MLmNyZWF0ZUVsZW1lbnQoImEiKTtpYy5ocmVmPUtiLmhyZWY7ZC5leHRlbmQoe2FjdGl2ZTowLGxhc3RNb2RpZmllZDp7fSxldGFnOnt9LGFqYXhTZXR0aW5nczp7dXJsOktiLmhyZWYsdHlwZToiR0VUIixpc0xvY2FsOi9eKD86YWJvdXR8YXBwfGFwcC1zdG9yYWdlfC4rLWV4dGVuc2lvbnxmaWxlfHJlc3x3aWRnZXQpOiQvLnRlc3QoS2IucHJvdG9jb2wpLGdsb2JhbDohMCxwcm9jZXNzRGF0YTohMCxhc3luYzohMCxjb250ZW50VHlwZToiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04IixhY2NlcHRzOnsiKiI6SWMsdGV4dDoidGV4dC9wbGFpbiIsaHRtbDoidGV4dC9odG1sIix4bWw6ImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWwiLGpzb246ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdCJ9LGNvbnRlbnRzOnt4bWw6L1xieG1sXGIvLApodG1sOi9cYmh0bWwvLGpzb246L1xianNvblxiL30scmVzcG9uc2VGaWVsZHM6e3htbDoicmVzcG9uc2VYTUwiLHRleHQ6InJlc3BvbnNlVGV4dCIsanNvbjoicmVzcG9uc2VKU09OIn0sY29udmVydGVyczp7IiogdGV4dCI6U3RyaW5nLCJ0ZXh0IGh0bWwiOiEwLCJ0ZXh0IGpzb24iOkpTT04ucGFyc2UsInRleHQgeG1sIjpkLnBhcnNlWE1MfSxmbGF0T3B0aW9uczp7dXJsOiEwLGNvbnRleHQ6ITB9fSxhamF4U2V0dXA6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYj9oYihoYihhLGQuYWpheFNldHRpbmdzKSxiKTpoYihkLmFqYXhTZXR0aW5ncyxhKX0sYWpheFByZWZpbHRlcjpRYShIYyksYWpheFRyYW5zcG9ydDpRYShjYyksYWpheDpmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoUyxoYSxpYixaKXt2YXIgcmEsdmEsa2EsTWEsdGEsVz1oYTtLfHwoSz0hMCxtJiZuLmNsZWFyVGltZW91dChtKSxlPXZvaWQgMCxnPVp8fCIiLFEucmVhZHlTdGF0ZT0wPFM\/NDowLHJhPTIwMDw9UyYmMzAwPlN8fAozMDQ9PT1TLGliJiYoTWE9ZnVuY3Rpb24oZmEsRGEsZGIpe2Zvcih2YXIgVmEsdWEsWSxsYSxJYT1mYS5jb250ZW50cyxtYT1mYS5kYXRhVHlwZXM7IioiPT09bWFbMF07KW1hLnNoaWZ0KCksdm9pZCAwPT09VmEmJihWYT1mYS5taW1lVHlwZXx8RGEuZ2V0UmVzcG9uc2VIZWFkZXIoIkNvbnRlbnQtVHlwZSIpKTtpZihWYSlmb3IodWEgaW4gSWEpaWYoSWFbdWFdJiZJYVt1YV0udGVzdChWYSkpe21hLnVuc2hpZnQodWEpO2JyZWFrfWlmKG1hWzBdaW4gZGIpWT1tYVswXTtlbHNle2Zvcih1YSBpbiBkYil7aWYoIW1hWzBdfHxmYS5jb252ZXJ0ZXJzW3VhKyIgIittYVswXV0pe1k9dWE7YnJlYWt9bGF8fChsYT11YSl9WT1ZfHxsYX1pZihZKXJldHVybiBZIT09bWFbMF0mJm1hLnVuc2hpZnQoWSksZGJbWV19KHIsUSxpYikpLCFyYSYmLTE8ZC5pbkFycmF5KCJzY3JpcHQiLHIuZGF0YVR5cGVzKSYmMD5kLmluQXJyYXkoImpzb24iLHIuZGF0YVR5cGVzKSYmKHIuY29udmVydGVyc1sidGV4dCBzY3JpcHQiXT0KZnVuY3Rpb24oKXt9KSxNYT1mdW5jdGlvbihmYSxEYSxkYixWYSl7dmFyIHVhLFksbGEsSWEsbWEsSGE9e30sdmI9ZmEuZGF0YVR5cGVzLnNsaWNlKCk7aWYodmJbMV0pZm9yKGxhIGluIGZhLmNvbnZlcnRlcnMpSGFbbGEudG9Mb3dlckNhc2UoKV09ZmEuY29udmVydGVyc1tsYV07Zm9yKFk9dmIuc2hpZnQoKTtZOylpZihmYS5yZXNwb25zZUZpZWxkc1tZXSYmKGRiW2ZhLnJlc3BvbnNlRmllbGRzW1ldXT1EYSksIW1hJiZWYSYmZmEuZGF0YUZpbHRlciYmKERhPWZhLmRhdGFGaWx0ZXIoRGEsZmEuZGF0YVR5cGUpKSxtYT1ZLFk9dmIuc2hpZnQoKSlpZigiKiI9PT1ZKVk9bWE7ZWxzZSBpZigiKiIhPT1tYSYmbWEhPT1ZKXtpZighKGxhPUhhW21hKyIgIitZXXx8SGFbIiogIitZXSkpZm9yKHVhIGluIEhhKWlmKChJYT11YS5zcGxpdCgiICIpKVsxXT09PVkmJihsYT1IYVttYSsiICIrSWFbMF1dfHxIYVsiKiAiK0lhWzBdXSkpeyEwPT09bGE\/bGE9SGFbdWFdOiEwIT09SGFbdWFdJiYoWT0KSWFbMF0sdmIudW5zaGlmdChJYVsxXSkpO2JyZWFrfWlmKCEwIT09bGEpaWYobGEmJmZhWyJ0aHJvd3MiXSlEYT1sYShEYSk7ZWxzZSB0cnl7RGE9bGEoRGEpfWNhdGNoKGZjKXtyZXR1cm57c3RhdGU6InBhcnNlcmVycm9yIixlcnJvcjpsYT9mYzoiTm8gY29udmVyc2lvbiBmcm9tICIrbWErIiB0byAiK1l9fX1yZXR1cm57c3RhdGU6InN1Y2Nlc3MiLGRhdGE6RGF9fShyLE1hLFEscmEpLHJhPyhyLmlmTW9kaWZpZWQmJigodGE9US5nZXRSZXNwb25zZUhlYWRlcigiTGFzdC1Nb2RpZmllZCIpKSYmKGQubGFzdE1vZGlmaWVkW2ZdPXRhKSwodGE9US5nZXRSZXNwb25zZUhlYWRlcigiZXRhZyIpKSYmKGQuZXRhZ1tmXT10YSkpLDIwND09PVN8fCJIRUFEIj09PXIudHlwZT9XPSJub2NvbnRlbnQiOjMwND09PVM\/Vz0ibm90bW9kaWZpZWQiOihXPU1hLnN0YXRlLHZhPU1hLmRhdGEscmE9IShrYT1NYS5lcnJvcikpKTooa2E9VywhUyYmV3x8KFc9ImVycm9yIiwwPlMmJihTPTApKSksUS5zdGF0dXM9ClMsUS5zdGF0dXNUZXh0PShoYXx8VykrIiIscmE\/Ri5yZXNvbHZlV2l0aCh6LFt2YSxXLFFdKTpGLnJlamVjdFdpdGgoeixbUSxXLGthXSksUS5zdGF0dXNDb2RlKGFhKSxhYT12b2lkIDAsbCYmRC50cmlnZ2VyKHJhPyJhamF4U3VjY2VzcyI6ImFqYXhFcnJvciIsW1EscixyYT92YTprYV0pLE8uZmlyZVdpdGgoeixbUSxXXSksbCYmKEQudHJpZ2dlcigiYWpheENvbXBsZXRlIixbUSxyXSksLS1kLmFjdGl2ZXx8ZC5ldmVudC50cmlnZ2VyKCJhamF4U3RvcCIpKSl9Im9iamVjdCI9PXR5cGVvZiBhJiYoYj1hLGE9dm9pZCAwKTtiPWJ8fHt9O3ZhciBlLGYsZyxoLG0sbCx0LHcscj1kLmFqYXhTZXR1cCh7fSxiKSx6PXIuY29udGV4dHx8cixEPXIuY29udGV4dCYmKHoubm9kZVR5cGV8fHouanF1ZXJ5KT9kKHopOmQuZXZlbnQsRj1kLkRlZmVycmVkKCksTz1kLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxhYT1yLnN0YXR1c0NvZGV8fHt9LEdhPXt9LHFhPXt9LFNhPSJjYW5jZWxlZCIsUT0Ke3JlYWR5U3RhdGU6MCxnZXRSZXNwb25zZUhlYWRlcjpmdW5jdGlvbihTKXt2YXIgaGE7aWYoSyl7aWYoIWgpZm9yKGg9e307aGE9Q2QuZXhlYyhnKTspaFtoYVsxXS50b0xvd2VyQ2FzZSgpKyIgIl09KGhbaGFbMV0udG9Mb3dlckNhc2UoKSsiICJdfHxbXSkuY29uY2F0KGhhWzJdKTtoYT1oW1MudG9Mb3dlckNhc2UoKSsiICJdfXJldHVybiBudWxsPT1oYT9udWxsOmhhLmpvaW4oIiwgIil9LGdldEFsbFJlc3BvbnNlSGVhZGVyczpmdW5jdGlvbigpe3JldHVybiBLP2c6bnVsbH0sc2V0UmVxdWVzdEhlYWRlcjpmdW5jdGlvbihTLGhhKXtyZXR1cm4gbnVsbD09SyYmKFM9cWFbUy50b0xvd2VyQ2FzZSgpXT1xYVtTLnRvTG93ZXJDYXNlKCldfHxTLEdhW1NdPWhhKSx0aGlzfSxvdmVycmlkZU1pbWVUeXBlOmZ1bmN0aW9uKFMpe3JldHVybiBudWxsPT1LJiYoci5taW1lVHlwZT1TKSx0aGlzfSxzdGF0dXNDb2RlOmZ1bmN0aW9uKFMpe3ZhciBoYTtpZihTKWlmKEspUS5hbHdheXMoU1tRLnN0YXR1c10pOwplbHNlIGZvcihoYSBpbiBTKWFhW2hhXT1bYWFbaGFdLFNbaGFdXTtyZXR1cm4gdGhpc30sYWJvcnQ6ZnVuY3Rpb24oUyl7Uz1TfHxTYTtyZXR1cm4gZSYmZS5hYm9ydChTKSxjKDAsUyksdGhpc319O2lmKEYucHJvbWlzZShRKSxyLnVybD0oKGF8fHIudXJsfHxLYi5ocmVmKSsiIikucmVwbGFjZShFZCxLYi5wcm90b2NvbCsiLy8iKSxyLnR5cGU9Yi5tZXRob2R8fGIudHlwZXx8ci5tZXRob2R8fHIudHlwZSxyLmRhdGFUeXBlcz0oci5kYXRhVHlwZXx8IioiKS50b0xvd2VyQ2FzZSgpLm1hdGNoKExhKXx8WyIiXSxudWxsPT1yLmNyb3NzRG9tYWluKXthPUwuY3JlYXRlRWxlbWVudCgiYSIpO3RyeXthLmhyZWY9ci51cmwsYS5ocmVmPWEuaHJlZixyLmNyb3NzRG9tYWluPWljLnByb3RvY29sKyIvLyIraWMuaG9zdCE9YS5wcm90b2NvbCsiLy8iK2EuaG9zdH1jYXRjaChTKXtyLmNyb3NzRG9tYWluPSEwfX1pZihyLmRhdGEmJnIucHJvY2Vzc0RhdGEmJiJzdHJpbmciIT10eXBlb2Ygci5kYXRhJiYKKHIuZGF0YT1kLnBhcmFtKHIuZGF0YSxyLnRyYWRpdGlvbmFsKSksRWIoSGMscixiLFEpLEspcmV0dXJuIFE7Zm9yKHQgaW4obD1kLmV2ZW50JiZyLmdsb2JhbCkmJjA9PWQuYWN0aXZlKysmJmQuZXZlbnQudHJpZ2dlcigiYWpheFN0YXJ0Iiksci50eXBlPXIudHlwZS50b1VwcGVyQ2FzZSgpLHIuaGFzQ29udGVudD0hRGQudGVzdChyLnR5cGUpLGY9ci51cmwucmVwbGFjZShBZCwiIiksci5oYXNDb250ZW50P3IuZGF0YSYmci5wcm9jZXNzRGF0YSYmMD09PShyLmNvbnRlbnRUeXBlfHwiIikuaW5kZXhPZigiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIikmJihyLmRhdGE9ci5kYXRhLnJlcGxhY2UoemQsIisiKSk6KHc9ci51cmwuc2xpY2UoZi5sZW5ndGgpLHIuZGF0YSYmKHIucHJvY2Vzc0RhdGF8fCJzdHJpbmciPT10eXBlb2Ygci5kYXRhKSYmKGYrPShoYy50ZXN0KGYpPyImIjoiPyIpK3IuZGF0YSxkZWxldGUgci5kYXRhKSwhMT09PXIuY2FjaGUmJihmPWYucmVwbGFjZShCZCwKIiQxIiksdz0oaGMudGVzdChmKT8iJiI6Ij8iKSsiXz0iK0RjKysgK3cpLHIudXJsPWYrdyksci5pZk1vZGlmaWVkJiYoZC5sYXN0TW9kaWZpZWRbZl0mJlEuc2V0UmVxdWVzdEhlYWRlcigiSWYtTW9kaWZpZWQtU2luY2UiLGQubGFzdE1vZGlmaWVkW2ZdKSxkLmV0YWdbZl0mJlEuc2V0UmVxdWVzdEhlYWRlcigiSWYtTm9uZS1NYXRjaCIsZC5ldGFnW2ZdKSksKHIuZGF0YSYmci5oYXNDb250ZW50JiYhMSE9PXIuY29udGVudFR5cGV8fGIuY29udGVudFR5cGUpJiZRLnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsci5jb250ZW50VHlwZSksUS5zZXRSZXF1ZXN0SGVhZGVyKCJBY2NlcHQiLHIuZGF0YVR5cGVzWzBdJiZyLmFjY2VwdHNbci5kYXRhVHlwZXNbMF1dP3IuYWNjZXB0c1tyLmRhdGFUeXBlc1swXV0rKCIqIiE9PXIuZGF0YVR5cGVzWzBdPyIsICIrSWMrIjsgcT0wLjAxIjoiIik6ci5hY2NlcHRzWyIqIl0pLHIuaGVhZGVycylRLnNldFJlcXVlc3RIZWFkZXIodCxyLmhlYWRlcnNbdF0pOwppZihyLmJlZm9yZVNlbmQmJighMT09PXIuYmVmb3JlU2VuZC5jYWxsKHosUSxyKXx8SykpcmV0dXJuIFEuYWJvcnQoKTtpZihTYT0iYWJvcnQiLE8uYWRkKHIuY29tcGxldGUpLFEuZG9uZShyLnN1Y2Nlc3MpLFEuZmFpbChyLmVycm9yKSxlPUViKGNjLHIsYixRKSl7aWYoUS5yZWFkeVN0YXRlPTEsbCYmRC50cmlnZ2VyKCJhamF4U2VuZCIsW1Escl0pLEspcmV0dXJuIFE7ci5hc3luYyYmMDxyLnRpbWVvdXQmJihtPW4uc2V0VGltZW91dChmdW5jdGlvbigpe1EuYWJvcnQoInRpbWVvdXQiKX0sci50aW1lb3V0KSk7dHJ5e3ZhciBLPSExO2Uuc2VuZChHYSxjKX1jYXRjaChTKXtpZihLKXRocm93IFM7YygtMSxTKX19ZWxzZSBjKC0xLCJObyBUcmFuc3BvcnQiKTtyZXR1cm4gUX0sZ2V0SlNPTjpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGQuZ2V0KGEsYixjLCJqc29uIil9LGdldFNjcmlwdDpmdW5jdGlvbihhLGIpe3JldHVybiBkLmdldChhLHZvaWQgMCxiLCJzY3JpcHQiKX19KTtkLmVhY2goWyJnZXQiLAoicG9zdCJdLGZ1bmN0aW9uKGEsYil7ZFtiXT1mdW5jdGlvbihjLGUsZixnKXtyZXR1cm4gTShlKSYmKGc9Z3x8ZixmPWUsZT12b2lkIDApLGQuYWpheChkLmV4dGVuZCh7dXJsOmMsdHlwZTpiLGRhdGFUeXBlOmcsZGF0YTplLHN1Y2Nlc3M6Zn0sZC5pc1BsYWluT2JqZWN0KGMpJiZjKSl9fSk7ZC5hamF4UHJlZmlsdGVyKGZ1bmN0aW9uKGEpe2Zvcih2YXIgYiBpbiBhLmhlYWRlcnMpImNvbnRlbnQtdHlwZSI9PT1iLnRvTG93ZXJDYXNlKCkmJihhLmNvbnRlbnRUeXBlPWEuaGVhZGVyc1tiXXx8IiIpfSk7ZC5fZXZhbFVybD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGQuYWpheCh7dXJsOmEsdHlwZToiR0VUIixkYXRhVHlwZToic2NyaXB0IixjYWNoZTohMCxhc3luYzohMSxnbG9iYWw6ITEsY29udmVydGVyczp7InRleHQgc2NyaXB0IjpmdW5jdGlvbigpe319LGRhdGFGaWx0ZXI6ZnVuY3Rpb24oZSl7ZC5nbG9iYWxFdmFsKGUsYixjKX19KX07ZC5mbi5leHRlbmQoe3dyYXBBbGw6ZnVuY3Rpb24oYSl7dmFyIGI7CnJldHVybiB0aGlzWzBdJiYoTShhKSYmKGE9YS5jYWxsKHRoaXNbMF0pKSxiPWQoYSx0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKCEwKSx0aGlzWzBdLnBhcmVudE5vZGUmJmIuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pLGIubWFwKGZ1bmN0aW9uKCl7Zm9yKHZhciBjPXRoaXM7Yy5maXJzdEVsZW1lbnRDaGlsZDspYz1jLmZpcnN0RWxlbWVudENoaWxkO3JldHVybiBjfSkuYXBwZW5kKHRoaXMpKSx0aGlzfSx3cmFwSW5uZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIE0oYSk\/dGhpcy5lYWNoKGZ1bmN0aW9uKGIpe2QodGhpcykud3JhcElubmVyKGEuY2FsbCh0aGlzLGIpKX0pOnRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPWQodGhpcyksYz1iLmNvbnRlbnRzKCk7Yy5sZW5ndGg\/Yy53cmFwQWxsKGEpOmIuYXBwZW5kKGEpfSl9LHdyYXA6ZnVuY3Rpb24oYSl7dmFyIGI9TShhKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGMpe2QodGhpcykud3JhcEFsbChiP2EuY2FsbCh0aGlzLApjKTphKX0pfSx1bndyYXA6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucGFyZW50KGEpLm5vdCgiYm9keSIpLmVhY2goZnVuY3Rpb24oKXtkKHRoaXMpLnJlcGxhY2VXaXRoKHRoaXMuY2hpbGROb2Rlcyl9KSx0aGlzfX0pO2QuZXhwci5wc2V1ZG9zLmhpZGRlbj1mdW5jdGlvbihhKXtyZXR1cm4hZC5leHByLnBzZXVkb3MudmlzaWJsZShhKX07ZC5leHByLnBzZXVkb3MudmlzaWJsZT1mdW5jdGlvbihhKXtyZXR1cm4hIShhLm9mZnNldFdpZHRofHxhLm9mZnNldEhlaWdodHx8YS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCl9O2QuYWpheFNldHRpbmdzLnhocj1mdW5jdGlvbigpe3RyeXtyZXR1cm4gbmV3IG4uWE1MSHR0cFJlcXVlc3R9Y2F0Y2goYSl7fX07dmFyIEZkPXswOjIwMCwxMjIzOjIwNH0sTGI9ZC5hamF4U2V0dGluZ3MueGhyKCk7Ti5jb3JzPSEhTGImJiJ3aXRoQ3JlZGVudGlhbHMiaW4gTGI7Ti5hamF4PUxiPSEhTGI7ZC5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKGEpe3ZhciBiLApjO2lmKE4uY29yc3x8TGImJiFhLmNyb3NzRG9tYWluKXJldHVybntzZW5kOmZ1bmN0aW9uKGUsZil7dmFyIGcsaD1hLnhocigpO2lmKGgub3BlbihhLnR5cGUsYS51cmwsYS5hc3luYyxhLnVzZXJuYW1lLGEucGFzc3dvcmQpLGEueGhyRmllbGRzKWZvcihnIGluIGEueGhyRmllbGRzKWhbZ109YS54aHJGaWVsZHNbZ107Zm9yKGcgaW4gYS5taW1lVHlwZSYmaC5vdmVycmlkZU1pbWVUeXBlJiZoLm92ZXJyaWRlTWltZVR5cGUoYS5taW1lVHlwZSksYS5jcm9zc0RvbWFpbnx8ZVsiWC1SZXF1ZXN0ZWQtV2l0aCJdfHwoZVsiWC1SZXF1ZXN0ZWQtV2l0aCJdPSJYTUxIdHRwUmVxdWVzdCIpLGUpaC5zZXRSZXF1ZXN0SGVhZGVyKGcsZVtnXSk7Yj1mdW5jdGlvbihtKXtyZXR1cm4gZnVuY3Rpb24oKXtiJiYoYj1jPWgub25sb2FkPWgub25lcnJvcj1oLm9uYWJvcnQ9aC5vbnRpbWVvdXQ9aC5vbnJlYWR5c3RhdGVjaGFuZ2U9bnVsbCwiYWJvcnQiPT09bT9oLmFib3J0KCk6ImVycm9yIj09PW0\/CiJudW1iZXIiIT10eXBlb2YgaC5zdGF0dXM\/ZigwLCJlcnJvciIpOmYoaC5zdGF0dXMsaC5zdGF0dXNUZXh0KTpmKEZkW2guc3RhdHVzXXx8aC5zdGF0dXMsaC5zdGF0dXNUZXh0LCJ0ZXh0IiE9PShoLnJlc3BvbnNlVHlwZXx8InRleHQiKXx8InN0cmluZyIhPXR5cGVvZiBoLnJlc3BvbnNlVGV4dD97YmluYXJ5OmgucmVzcG9uc2V9Ont0ZXh0OmgucmVzcG9uc2VUZXh0fSxoLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSl9fTtoLm9ubG9hZD1iKCk7Yz1oLm9uZXJyb3I9aC5vbnRpbWVvdXQ9YigiZXJyb3IiKTt2b2lkIDAhPT1oLm9uYWJvcnQ\/aC5vbmFib3J0PWM6aC5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXs0PT09aC5yZWFkeVN0YXRlJiZuLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtiJiZjKCl9KX07Yj1iKCJhYm9ydCIpO3RyeXtoLnNlbmQoYS5oYXNDb250ZW50JiZhLmRhdGF8fG51bGwpfWNhdGNoKG0pe2lmKGIpdGhyb3cgbTt9fSxhYm9ydDpmdW5jdGlvbigpe2ImJgpiKCl9fX0pO2QuYWpheFByZWZpbHRlcihmdW5jdGlvbihhKXthLmNyb3NzRG9tYWluJiYoYS5jb250ZW50cy5zY3JpcHQ9ITEpfSk7ZC5hamF4U2V0dXAoe2FjY2VwdHM6e3NjcmlwdDoidGV4dC9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9lY21hc2NyaXB0LCBhcHBsaWNhdGlvbi94LWVjbWFzY3JpcHQifSxjb250ZW50czp7c2NyaXB0Oi9cYig\/OmphdmF8ZWNtYSlzY3JpcHRcYi99LGNvbnZlcnRlcnM6eyJ0ZXh0IHNjcmlwdCI6ZnVuY3Rpb24oYSl7cmV0dXJuIGQuZ2xvYmFsRXZhbChhKSxhfX19KTtkLmFqYXhQcmVmaWx0ZXIoInNjcmlwdCIsZnVuY3Rpb24oYSl7dm9pZCAwPT09YS5jYWNoZSYmKGEuY2FjaGU9ITEpO2EuY3Jvc3NEb21haW4mJihhLnR5cGU9IkdFVCIpfSk7ZC5hamF4VHJhbnNwb3J0KCJzY3JpcHQiLGZ1bmN0aW9uKGEpe3ZhciBiLGM7aWYoYS5jcm9zc0RvbWFpbnx8YS5zY3JpcHRBdHRycylyZXR1cm57c2VuZDpmdW5jdGlvbihlLApmKXtiPWQoIjxzY3JpcHQ+IikuYXR0cihhLnNjcmlwdEF0dHJzfHx7fSkucHJvcCh7Y2hhcnNldDphLnNjcmlwdENoYXJzZXQsc3JjOmEudXJsfSkub24oImxvYWQgZXJyb3IiLGM9ZnVuY3Rpb24oZyl7Yi5yZW1vdmUoKTtjPW51bGw7ZyYmZigiZXJyb3IiPT09Zy50eXBlPzQwNDoyMDAsZy50eXBlKX0pO0wuaGVhZC5hcHBlbmRDaGlsZChiWzBdKX0sYWJvcnQ6ZnVuY3Rpb24oKXtjJiZjKCl9fX0pO3ZhciBKYyxLYz1bXSxqYz0vKD0pXD8oPz0mfCQpfFw\/XD8vO2QuYWpheFNldHVwKHtqc29ucDoiY2FsbGJhY2siLGpzb25wQ2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIgYT1LYy5wb3AoKXx8ZC5leHBhbmRvKyJfIitEYysrO3JldHVybiB0aGlzW2FdPSEwLGF9fSk7ZC5hamF4UHJlZmlsdGVyKCJqc29uIGpzb25wIixmdW5jdGlvbihhLGIsYyl7dmFyIGUsZixnLGg9ITEhPT1hLmpzb25wJiYoamMudGVzdChhLnVybCk\/InVybCI6InN0cmluZyI9PXR5cGVvZiBhLmRhdGEmJjA9PT0oYS5jb250ZW50VHlwZXx8CiIiKS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSYmamMudGVzdChhLmRhdGEpJiYiZGF0YSIpO2lmKGh8fCJqc29ucCI9PT1hLmRhdGFUeXBlc1swXSlyZXR1cm4gZT1hLmpzb25wQ2FsbGJhY2s9TShhLmpzb25wQ2FsbGJhY2spP2EuanNvbnBDYWxsYmFjaygpOmEuanNvbnBDYWxsYmFjayxoP2FbaF09YVtoXS5yZXBsYWNlKGpjLCIkMSIrZSk6ITEhPT1hLmpzb25wJiYoYS51cmwrPShoYy50ZXN0KGEudXJsKT8iJiI6Ij8iKSthLmpzb25wKyI9IitlKSxhLmNvbnZlcnRlcnNbInNjcmlwdCBqc29uIl09ZnVuY3Rpb24oKXtyZXR1cm4gZ3x8ZC5lcnJvcihlKyIgd2FzIG5vdCBjYWxsZWQiKSxnWzBdfSxhLmRhdGFUeXBlc1swXT0ianNvbiIsZj1uW2VdLG5bZV09ZnVuY3Rpb24oKXtnPWFyZ3VtZW50c30sYy5hbHdheXMoZnVuY3Rpb24oKXt2b2lkIDA9PT1mP2QobikucmVtb3ZlUHJvcChlKTpuW2VdPWY7YVtlXSYmKGEuanNvbnBDYWxsYmFjaz1iLmpzb25wQ2FsbGJhY2ssCktjLnB1c2goZSkpO2cmJk0oZikmJmYoZ1swXSk7Zz1mPXZvaWQgMH0pLCJzY3JpcHQifSk7Ti5jcmVhdGVIVE1MRG9jdW1lbnQ9KChKYz1MLmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgiIikuYm9keSkuaW5uZXJIVE1MPSI8Zm9ybT48L2Zvcm0+PGZvcm0+PC9mb3JtPiIsMj09PUpjLmNoaWxkTm9kZXMubGVuZ3RoKTtkLnBhcnNlSFRNTD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBhP1tdOigiYm9vbGVhbiI9PXR5cGVvZiBiJiYoYz1iLGI9ITEpLGJ8fChOLmNyZWF0ZUhUTUxEb2N1bWVudD8oKGU9KGI9TC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIiIpKS5jcmVhdGVFbGVtZW50KCJiYXNlIikpLmhyZWY9TC5sb2NhdGlvbi5ocmVmLGIuaGVhZC5hcHBlbmRDaGlsZChlKSk6Yj1MKSxnPSFjJiZbXSwoZj15Yy5leGVjKGEpKT9bYi5jcmVhdGVFbGVtZW50KGZbMV0pXTooZj1SYihbYV0sYixnKSxnJiZnLmxlbmd0aCYmZChnKS5yZW1vdmUoKSwKZC5tZXJnZShbXSxmLmNoaWxkTm9kZXMpKSk7dmFyIGUsZixnfTtkLmZuLmxvYWQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBlLGYsZyxoPXRoaXMsbT1hLmluZGV4T2YoIiAiKTtyZXR1cm4tMTxtJiYoZT1DKGEuc2xpY2UobSkpLGE9YS5zbGljZSgwLG0pKSxNKGIpPyhjPWIsYj12b2lkIDApOmImJiJvYmplY3QiPT10eXBlb2YgYiYmKGY9IlBPU1QiKSwwPGgubGVuZ3RoJiZkLmFqYXgoe3VybDphLHR5cGU6Znx8IkdFVCIsZGF0YVR5cGU6Imh0bWwiLGRhdGE6Yn0pLmRvbmUoZnVuY3Rpb24obCl7Zz1hcmd1bWVudHM7aC5odG1sKGU\/ZCgiPGRpdj4iKS5hcHBlbmQoZC5wYXJzZUhUTUwobCkpLmZpbmQoZSk6bCl9KS5hbHdheXMoYyYmZnVuY3Rpb24obCx0KXtoLmVhY2goZnVuY3Rpb24oKXtjLmFwcGx5KHRoaXMsZ3x8W2wucmVzcG9uc2VUZXh0LHQsbF0pfSl9KSx0aGlzfTtkLmV4cHIucHNldWRvcy5hbmltYXRlZD1mdW5jdGlvbihhKXtyZXR1cm4gZC5ncmVwKGQudGltZXJzLGZ1bmN0aW9uKGIpe3JldHVybiBhPT09CmIuZWxlbX0pLmxlbmd0aH07ZC5vZmZzZXQ9e3NldE9mZnNldDpmdW5jdGlvbihhLGIsYyl7dmFyIGUsZixnLGg9ZC5jc3MoYSwicG9zaXRpb24iKSxtPWQoYSksbD17fTsic3RhdGljIj09PWgmJihhLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIpO3ZhciB0PW0ub2Zmc2V0KCksdz1kLmNzcyhhLCJ0b3AiKSxyPWQuY3NzKGEsImxlZnQiKTsoImFic29sdXRlIj09PWh8fCJmaXhlZCI9PT1oKSYmLTE8KHcrcikuaW5kZXhPZigiYXV0byIpPyhnPShlPW0ucG9zaXRpb24oKSkudG9wLGY9ZS5sZWZ0KTooZz1wYXJzZUZsb2F0KHcpfHwwLGY9cGFyc2VGbG9hdChyKXx8MCk7TShiKSYmKGI9Yi5jYWxsKGEsYyxkLmV4dGVuZCh7fSx0KSkpO251bGwhPWIudG9wJiYobC50b3A9Yi50b3AtdC50b3ArZyk7bnVsbCE9Yi5sZWZ0JiYobC5sZWZ0PWIubGVmdC10LmxlZnQrZik7InVzaW5nImluIGI\/Yi51c2luZy5jYWxsKGEsbCk6bS5jc3MobCl9fTtkLmZuLmV4dGVuZCh7b2Zmc2V0OmZ1bmN0aW9uKGEpe2lmKGFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHZvaWQgMD09PQphP3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKGYpe2Qub2Zmc2V0LnNldE9mZnNldCh0aGlzLGEsZil9KTt2YXIgYixjLGU9dGhpc1swXTtyZXR1cm4gZT9lLmdldENsaWVudFJlY3RzKCkubGVuZ3RoPyhiPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksYz1lLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcse3RvcDpiLnRvcCtjLnBhZ2VZT2Zmc2V0LGxlZnQ6Yi5sZWZ0K2MucGFnZVhPZmZzZXR9KTp7dG9wOjAsbGVmdDowfTp2b2lkIDB9LHBvc2l0aW9uOmZ1bmN0aW9uKCl7aWYodGhpc1swXSl7dmFyIGEsYj10aGlzWzBdLGM9e3RvcDowLGxlZnQ6MH07aWYoImZpeGVkIj09PWQuY3NzKGIsInBvc2l0aW9uIikpdmFyIGU9Yi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtlbHNle2U9dGhpcy5vZmZzZXQoKTt2YXIgZj1iLm93bmVyRG9jdW1lbnQ7Zm9yKGE9Yi5vZmZzZXRQYXJlbnR8fGYuZG9jdW1lbnRFbGVtZW50O2EmJihhPT09Zi5ib2R5fHxhPT09Zi5kb2N1bWVudEVsZW1lbnQpJiYKInN0YXRpYyI9PT1kLmNzcyhhLCJwb3NpdGlvbiIpOylhPWEucGFyZW50Tm9kZTthJiZhIT09YiYmMT09PWEubm9kZVR5cGUmJigoYz1kKGEpLm9mZnNldCgpKS50b3ArPWQuY3NzKGEsImJvcmRlclRvcFdpZHRoIiwhMCksYy5sZWZ0Kz1kLmNzcyhhLCJib3JkZXJMZWZ0V2lkdGgiLCEwKSl9cmV0dXJue3RvcDplLnRvcC1jLnRvcC1kLmNzcyhiLCJtYXJnaW5Ub3AiLCEwKSxsZWZ0OmUubGVmdC1jLmxlZnQtZC5jc3MoYiwibWFyZ2luTGVmdCIsITApfX19LG9mZnNldFBhcmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe2Zvcih2YXIgYT10aGlzLm9mZnNldFBhcmVudDthJiYic3RhdGljIj09PWQuY3NzKGEsInBvc2l0aW9uIik7KWE9YS5vZmZzZXRQYXJlbnQ7cmV0dXJuIGF8fGpifSl9fSk7ZC5lYWNoKHtzY3JvbGxMZWZ0OiJwYWdlWE9mZnNldCIsc2Nyb2xsVG9wOiJwYWdlWU9mZnNldCJ9LGZ1bmN0aW9uKGEsYil7dmFyIGM9InBhZ2VZT2Zmc2V0Ij09PQpiO2QuZm5bYV09ZnVuY3Rpb24oZSl7cmV0dXJuIFhhKHRoaXMsZnVuY3Rpb24oZixnLGgpe3ZhciBtO2lmKGtiKGYpP209Zjo5PT09Zi5ub2RlVHlwZSYmKG09Zi5kZWZhdWx0Vmlldyksdm9pZCAwPT09aClyZXR1cm4gbT9tW2JdOmZbZ107bT9tLnNjcm9sbFRvKGM\/bS5wYWdlWE9mZnNldDpoLGM\/aDptLnBhZ2VZT2Zmc2V0KTpmW2ddPWh9LGEsZSxhcmd1bWVudHMubGVuZ3RoKX19KTtkLmVhY2goWyJ0b3AiLCJsZWZ0Il0sZnVuY3Rpb24oYSxiKXtkLmNzc0hvb2tzW2JdPVZiKE4ucGl4ZWxQb3NpdGlvbixmdW5jdGlvbihjLGUpe2lmKGUpcmV0dXJuIGU9S2EoYyxiKSxiYy50ZXN0KGUpP2QoYykucG9zaXRpb24oKVtiXSsicHgiOmV9KX0pO2QuZWFjaCh7SGVpZ2h0OiJoZWlnaHQiLFdpZHRoOiJ3aWR0aCJ9LGZ1bmN0aW9uKGEsYil7ZC5lYWNoKHtwYWRkaW5nOiJpbm5lciIrYSxjb250ZW50OmIsIiI6Im91dGVyIithfSxmdW5jdGlvbihjLGUpe2QuZm5bZV09ZnVuY3Rpb24oZiwKZyl7dmFyIGg9YXJndW1lbnRzLmxlbmd0aCYmKGN8fCJib29sZWFuIiE9dHlwZW9mIGYpLG09Y3x8KCEwPT09Znx8ITA9PT1nPyJtYXJnaW4iOiJib3JkZXIiKTtyZXR1cm4gWGEodGhpcyxmdW5jdGlvbihsLHQsdyl7dmFyIHI7cmV0dXJuIGtiKGwpPzA9PT1lLmluZGV4T2YoIm91dGVyIik\/bFsiaW5uZXIiK2FdOmwuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyJjbGllbnQiK2FdOjk9PT1sLm5vZGVUeXBlPyhyPWwuZG9jdW1lbnRFbGVtZW50LE1hdGgubWF4KGwuYm9keVsic2Nyb2xsIithXSxyWyJzY3JvbGwiK2FdLGwuYm9keVsib2Zmc2V0IithXSxyWyJvZmZzZXQiK2FdLHJbImNsaWVudCIrYV0pKTp2b2lkIDA9PT13P2QuY3NzKGwsdCxtKTpkLnN0eWxlKGwsdCx3LG0pfSxiLGg\/Zjp2b2lkIDAsaCl9fSl9KTtkLmVhY2goImFqYXhTdGFydCBhamF4U3RvcCBhamF4Q29tcGxldGUgYWpheEVycm9yIGFqYXhTdWNjZXNzIGFqYXhTZW5kIi5zcGxpdCgiICIpLGZ1bmN0aW9uKGEsCmIpe2QuZm5bYl09ZnVuY3Rpb24oYyl7cmV0dXJuIHRoaXMub24oYixjKX19KTtkLmZuLmV4dGVuZCh7YmluZDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMub24oYSxudWxsLGIsYyl9LHVuYmluZDpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm9mZihhLG51bGwsYil9LGRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjLGUpe3JldHVybiB0aGlzLm9uKGIsYSxjLGUpfSx1bmRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg\/dGhpcy5vZmYoYSwiKioiKTp0aGlzLm9mZihiLGF8fCIqKiIsYyl9LGhvdmVyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMubW91c2VlbnRlcihhKS5tb3VzZWxlYXZlKGJ8fGEpfX0pO2QuZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IHJlc2l6ZSBzY3JvbGwgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBjb250ZXh0bWVudSIuc3BsaXQoIiAiKSwKZnVuY3Rpb24oYSxiKXtkLmZuW2JdPWZ1bmN0aW9uKGMsZSl7cmV0dXJuIDA8YXJndW1lbnRzLmxlbmd0aD90aGlzLm9uKGIsbnVsbCxjLGUpOnRoaXMudHJpZ2dlcihiKX19KTt2YXIgR2Q9L15bXHNcdUZFRkZceEEwXSt8KFteXHNcdUZFRkZceEEwXSlbXHNcdUZFRkZceEEwXSskL2c7ZC5wcm94eT1mdW5jdGlvbihhLGIpe3ZhciBjLGUsZjtpZigic3RyaW5nIj09dHlwZW9mIGImJihjPWFbYl0sYj1hLGE9YyksTShhKSlyZXR1cm4gZT15YS5jYWxsKGFyZ3VtZW50cywyKSwoZj1mdW5jdGlvbigpe3JldHVybiBhLmFwcGx5KGJ8fHRoaXMsZS5jb25jYXQoeWEuY2FsbChhcmd1bWVudHMpKSl9KS5ndWlkPWEuZ3VpZD1hLmd1aWR8fGQuZ3VpZCsrLGZ9O2QuaG9sZFJlYWR5PWZ1bmN0aW9uKGEpe2E\/ZC5yZWFkeVdhaXQrKzpkLnJlYWR5KCEwKX07ZC5pc0FycmF5PUFycmF5LmlzQXJyYXk7ZC5wYXJzZUpTT049SlNPTi5wYXJzZTtkLm5vZGVOYW1lPVg7ZC5pc0Z1bmN0aW9uPU07ZC5pc1dpbmRvdz0Ka2I7ZC5jYW1lbENhc2U9QmE7ZC50eXBlPVU7ZC5ub3c9RGF0ZS5ub3c7ZC5pc051bWVyaWM9ZnVuY3Rpb24oYSl7dmFyIGI9ZC50eXBlKGEpO3JldHVybigibnVtYmVyIj09PWJ8fCJzdHJpbmciPT09YikmJiFpc05hTihhLXBhcnNlRmxvYXQoYSkpfTtkLnRyaW09ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE\/IiI6KGErIiIpLnJlcGxhY2UoR2QsIiQxIil9OyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQmJmRlZmluZSgianF1ZXJ5IixbXSxmdW5jdGlvbigpe3JldHVybiBkfSk7dmFyIEhkPW4ualF1ZXJ5LElkPW4uJDtyZXR1cm4gZC5ub0NvbmZsaWN0PWZ1bmN0aW9uKGEpe3JldHVybiBuLiQ9PT1kJiYobi4kPUlkKSxhJiZuLmpRdWVyeT09PWQmJihuLmpRdWVyeT1IZCksZH0sInVuZGVmaW5lZCI9PXR5cGVvZiBkYSYmKG4ualF1ZXJ5PW4uJD1kKSxkfSk7dmFyIG1hdGNoZWQsYnJvd3NlcjsKalF1ZXJ5LnVhTWF0Y2g9ZnVuY3Rpb24obil7bj1uLnRvTG93ZXJDYXNlKCk7bj0vKGNocm9tZSlbIFwvXShbXHcuXSspLy5leGVjKG4pfHwvKHdlYmtpdClbIFwvXShbXHcuXSspLy5leGVjKG4pfHwvKG9wZXJhKSg\/Oi4qdmVyc2lvbnwpWyBcL10oW1x3Ll0rKS8uZXhlYyhuKXx8Lyhtc2llKSAoW1x3Ll0rKS8uZXhlYyhuKXx8MD5uLmluZGV4T2YoImNvbXBhdGlibGUiKSYmLyhtb3ppbGxhKSg\/Oi4qPyBydjooW1x3Ll0rKXwpLy5leGVjKG4pfHxbXTtyZXR1cm57YnJvd3NlcjpuWzFdfHwiIix2ZXJzaW9uOm5bMl18fCIwIn19O21hdGNoZWQ9alF1ZXJ5LnVhTWF0Y2gobmF2aWdhdG9yLnVzZXJBZ2VudCk7YnJvd3Nlcj17fTttYXRjaGVkLmJyb3dzZXImJihicm93c2VyW21hdGNoZWQuYnJvd3Nlcl09ITAsYnJvd3Nlci52ZXJzaW9uPW1hdGNoZWQudmVyc2lvbik7YnJvd3Nlci5jaHJvbWU\/YnJvd3Nlci53ZWJraXQ9ITA6YnJvd3Nlci53ZWJraXQmJihicm93c2VyLnNhZmFyaT0hMCk7CmpRdWVyeS5icm93c2VyPWJyb3dzZXI7CihmdW5jdGlvbihuKXsiZnVuY3Rpb24iPT09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyJqcXVlcnkiXSxmdW5jdGlvbihkYSl7cmV0dXJuIG4oZGEsd2luZG93KX0pOiJvYmplY3QiPT09dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM\/bW9kdWxlLmV4cG9ydHM9bihyZXF1aXJlKCJqcXVlcnkiKSx3aW5kb3cpOm4oalF1ZXJ5LHdpbmRvdyl9KShmdW5jdGlvbihuLGRhKXtmdW5jdGlvbiB3YSh1KXthOnt2YXIgeD0vXihcZCspXC4oXGQrKVwuKFxkKykvLEM9eC5leGVjKG4uZm4uanF1ZXJ5KXx8W107eD14LmV4ZWModSl8fFtdO2Zvcih1PTE7Mz49dTt1Kyspe2lmKCtDW3VdPit4W3VdKXtDPTE7YnJlYWsgYX1pZigrQ1t1XTwreFt1XSl7Qz0tMTticmVhayBhfX1DPTB9cmV0dXJuIDA8PUN9ZnVuY3Rpb24gVSh1LHgpe3ZhciBDPWRhLmNvbnNvbGU7IW4ubWlncmF0ZUlzUGF0Y2hFbmFibGVkKHUpfHxuLm1pZ3JhdGVEZWR1cGxpY2F0ZVdhcm5pbmdzJiZtYlt4XXx8CihtYlt4XT0hMCxuLm1pZ3JhdGVXYXJuaW5ncy5wdXNoKHgrIiBbIit1KyJdIiksQyYmQy53YXJuJiYhbi5taWdyYXRlTXV0ZSYmKEMud2FybigiSlFNSUdSQVRFOiAiK3gpLG4ubWlncmF0ZVRyYWNlJiZDLnRyYWNlJiZDLnRyYWNlKCkpKX1mdW5jdGlvbiBlYih1LHgsQyxILFApe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh1LHgse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe1UoSCxQKTtyZXR1cm4gQ30sc2V0OmZ1bmN0aW9uKGVhKXtVKEgsUCk7Qz1lYX19KX1mdW5jdGlvbiBYKHUseCxDLEgsUCl7dmFyIGVhLFFhPXVbeF07dVt4XT1mdW5jdGlvbigpe1AmJlUoSCxQKTtlYT1uLm1pZ3JhdGVJc1BhdGNoRW5hYmxlZChIKT9DOlFhfHxuLm5vb3A7cmV0dXJuIGVhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gYmEodSx4LEMsSCxQKXtpZighUCl0aHJvdyBFcnJvcigiTm8gd2FybmluZyBtZXNzYWdlIHByb3ZpZGVkIik7cmV0dXJuIFgodSwKeCxDLEgsUCl9ZnVuY3Rpb24gamEodSx4LEMsSCl7cmV0dXJuIFgodSx4LEMsSCl9ZnVuY3Rpb24gbGIodSl7cmV0dXJuIHUucmVwbGFjZSgvLShbYS16XSkvZyxmdW5jdGlvbih4LEMpe3JldHVybiBDLnRvVXBwZXJDYXNlKCl9KX1mdW5jdGlvbiBZYSh1KXtyZXR1cm4gcGIudGVzdCh1KSYmU2IudGVzdCh1WzBdLnRvVXBwZXJDYXNlKCkrdS5zbGljZSgxKSl9bi5taWdyYXRlVmVyc2lvbj0iMy40LjEiO3ZhciBaYT1PYmplY3QuY3JlYXRlKG51bGwpO24ubWlncmF0ZURpc2FibGVQYXRjaGVzPWZ1bmN0aW9uKCl7dmFyIHU7Zm9yKHU9MDt1PGFyZ3VtZW50cy5sZW5ndGg7dSsrKVphW2FyZ3VtZW50c1t1XV09ITB9O24ubWlncmF0ZUVuYWJsZVBhdGNoZXM9ZnVuY3Rpb24oKXt2YXIgdTtmb3IodT0wO3U8YXJndW1lbnRzLmxlbmd0aDt1KyspZGVsZXRlIFphW2FyZ3VtZW50c1t1XV19O24ubWlncmF0ZUlzUGF0Y2hFbmFibGVkPWZ1bmN0aW9uKHUpe3JldHVybiFaYVt1XX07ZGEuY29uc29sZSYmCmRhLmNvbnNvbGUubG9nJiYobiYmd2EoIjMuMC4wIikmJiF3YSgiNS4wLjAiKXx8ZGEuY29uc29sZS5sb2coIkpRTUlHUkFURTogalF1ZXJ5IDMueC00LnggUkVRVUlSRUQiKSxuLm1pZ3JhdGVXYXJuaW5ncyYmZGEuY29uc29sZS5sb2coIkpRTUlHUkFURTogTWlncmF0ZSBwbHVnaW4gbG9hZGVkIG11bHRpcGxlIHRpbWVzIiksZGEuY29uc29sZS5sb2coIkpRTUlHUkFURTogTWlncmF0ZSBpcyBpbnN0YWxsZWQiKyhuLm1pZ3JhdGVNdXRlPyIiOiIgd2l0aCBsb2dnaW5nIGFjdGl2ZSIpKyIsIHZlcnNpb24gIituLm1pZ3JhdGVWZXJzaW9uKSk7dmFyIG1iPXt9O24ubWlncmF0ZURlZHVwbGljYXRlV2FybmluZ3M9ITA7bi5taWdyYXRlV2FybmluZ3M9W107dm9pZCAwPT09bi5taWdyYXRlVHJhY2UmJihuLm1pZ3JhdGVUcmFjZT0hMCk7bi5taWdyYXRlUmVzZXQ9ZnVuY3Rpb24oKXttYj17fTtuLm1pZ3JhdGVXYXJuaW5ncy5sZW5ndGg9MH07IkJhY2tDb21wYXQiPT09ZGEuZG9jdW1lbnQuY29tcGF0TW9kZSYmClUoInF1aXJrcyIsImpRdWVyeSBpcyBub3QgY29tcGF0aWJsZSB3aXRoIFF1aXJrcyBNb2RlIik7dmFyIE9hLE5iPXt9LEJhPW4uZm4uaW5pdCxKYT1uLmZpbmQsT2I9L1xbKFxzKlstXHddK1xzKikoW358XiQqXT89KVxzKihbLVx3I10qPyNbLVx3I10qKVxzKlxdLyxQYj0vXFsoXHMqWy1cd10rXHMqKShbfnxeJCpdPz0pXHMqKFstXHcjXSo\/I1stXHcjXSopXHMqXF0vZywkYT0vXltcc1x1RkVGRlx4QTBdK3woW15cc1x1RkVGRlx4QTBdKVtcc1x1RkVGRlx4QTBdKyQvZztqYShuLmZuLCJpbml0IixmdW5jdGlvbih1KXt2YXIgeD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO24ubWlncmF0ZUlzUGF0Y2hFbmFibGVkKCJzZWxlY3Rvci1lbXB0eS1pZCIpJiYic3RyaW5nIj09PXR5cGVvZiB1JiYiIyI9PT11JiYoVSgic2VsZWN0b3ItZW1wdHktaWQiLCJqUXVlcnkoICcjJyApIGlzIG5vdCBhIHZhbGlkIHNlbGVjdG9yIikseFswXT1bXSk7cmV0dXJuIEJhLmFwcGx5KHRoaXMsCngpfSwic2VsZWN0b3ItZW1wdHktaWQiKTtuLmZuLmluaXQucHJvdG90eXBlPW4uZm47amEobiwiZmluZCIsZnVuY3Rpb24odSl7dmFyIHg9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtpZigic3RyaW5nIj09PXR5cGVvZiB1JiZPYi50ZXN0KHUpKXRyeXtkYS5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKHUpfWNhdGNoKEMpe3U9dS5yZXBsYWNlKFBiLGZ1bmN0aW9uKEgsUCxlYSxRYSl7cmV0dXJuIlsiK1ArZWErJyInK1FhKyciXSd9KTt0cnl7ZGEuZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih1KSxVKCJzZWxlY3Rvci1oYXNoIiwiQXR0cmlidXRlIHNlbGVjdG9yIHdpdGggJyMnIG11c3QgYmUgcXVvdGVkOiAiK3hbMF0pLHhbMF09dX1jYXRjaChIKXtVKCJzZWxlY3Rvci1oYXNoIiwiQXR0cmlidXRlIHNlbGVjdG9yIHdpdGggJyMnIHdhcyBub3QgZml4ZWQ6ICIreFswXSl9fXJldHVybiBKYS5hcHBseSh0aGlzLHgpfSwic2VsZWN0b3ItaGFzaCIpO2ZvcihPYSBpbiBKYSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoSmEsCk9hKSYmKG4uZmluZFtPYV09SmFbT2FdKTtiYShuLmZuLCJzaXplIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmxlbmd0aH0sInNpemUiLCJqUXVlcnkuZm4uc2l6ZSgpIGlzIGRlcHJlY2F0ZWQgYW5kIHJlbW92ZWQ7IHVzZSB0aGUgLmxlbmd0aCBwcm9wZXJ0eSIpO2JhKG4sInBhcnNlSlNPTiIsZnVuY3Rpb24oKXtyZXR1cm4gSlNPTi5wYXJzZS5hcHBseShudWxsLGFyZ3VtZW50cyl9LCJwYXJzZUpTT04iLCJqUXVlcnkucGFyc2VKU09OIGlzIGRlcHJlY2F0ZWQ7IHVzZSBKU09OLnBhcnNlIik7YmEobiwiaG9sZFJlYWR5IixuLmhvbGRSZWFkeSwiaG9sZFJlYWR5IiwialF1ZXJ5LmhvbGRSZWFkeSBpcyBkZXByZWNhdGVkIik7YmEobiwidW5pcXVlIixuLnVuaXF1ZVNvcnQsInVuaXF1ZSIsImpRdWVyeS51bmlxdWUgaXMgZGVwcmVjYXRlZDsgdXNlIGpRdWVyeS51bmlxdWVTb3J0Iik7ZWIobi5leHByLCJmaWx0ZXJzIixuLmV4cHIucHNldWRvcywiZXhwci1wcmUtcHNldWRvcyIsImpRdWVyeS5leHByLmZpbHRlcnMgaXMgZGVwcmVjYXRlZDsgdXNlIGpRdWVyeS5leHByLnBzZXVkb3MiKTsKZWIobi5leHByLCI6IixuLmV4cHIucHNldWRvcywiZXhwci1wcmUtcHNldWRvcyIsImpRdWVyeS5leHByWyc6J10gaXMgZGVwcmVjYXRlZDsgdXNlIGpRdWVyeS5leHByLnBzZXVkb3MiKTt3YSgiMy4xLjEiKSYmYmEobiwidHJpbSIsZnVuY3Rpb24odSl7cmV0dXJuIG51bGw9PXU\/IiI6KHUrIiIpLnJlcGxhY2UoJGEsIiQxIil9LCJ0cmltIiwialF1ZXJ5LnRyaW0gaXMgZGVwcmVjYXRlZDsgdXNlIFN0cmluZy5wcm90b3R5cGUudHJpbSIpO3dhKCIzLjIuMCIpJiYoYmEobiwibm9kZU5hbWUiLGZ1bmN0aW9uKHUseCl7cmV0dXJuIHUubm9kZU5hbWUmJnUubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXgudG9Mb3dlckNhc2UoKX0sIm5vZGVOYW1lIiwialF1ZXJ5Lm5vZGVOYW1lIGlzIGRlcHJlY2F0ZWQiKSxiYShuLCJpc0FycmF5IixBcnJheS5pc0FycmF5LCJpc0FycmF5IiwialF1ZXJ5LmlzQXJyYXkgaXMgZGVwcmVjYXRlZDsgdXNlIEFycmF5LmlzQXJyYXkiKSk7d2EoIjMuMy4wIikmJgooYmEobiwiaXNOdW1lcmljIixmdW5jdGlvbih1KXt2YXIgeD10eXBlb2YgdTtyZXR1cm4oIm51bWJlciI9PT14fHwic3RyaW5nIj09PXgpJiYhaXNOYU4odS1wYXJzZUZsb2F0KHUpKX0sImlzTnVtZXJpYyIsImpRdWVyeS5pc051bWVyaWMoKSBpcyBkZXByZWNhdGVkIiksbi5lYWNoKCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0IEVycm9yIFN5bWJvbCIuc3BsaXQoIiAiKSxmdW5jdGlvbih1LHgpe05iWyJbb2JqZWN0ICIreCsiXSJdPXgudG9Mb3dlckNhc2UoKX0pLGJhKG4sInR5cGUiLGZ1bmN0aW9uKHUpe3JldHVybiBudWxsPT11P3UrIiI6Im9iamVjdCI9PT10eXBlb2YgdXx8ImZ1bmN0aW9uIj09PXR5cGVvZiB1P05iW09iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh1KV18fCJvYmplY3QiOnR5cGVvZiB1fSwidHlwZSIsImpRdWVyeS50eXBlIGlzIGRlcHJlY2F0ZWQiKSxiYShuLCJpc0Z1bmN0aW9uIixmdW5jdGlvbih1KXtyZXR1cm4iZnVuY3Rpb24iPT09CnR5cGVvZiB1fSwiaXNGdW5jdGlvbiIsImpRdWVyeS5pc0Z1bmN0aW9uKCkgaXMgZGVwcmVjYXRlZCIpLGJhKG4sImlzV2luZG93IixmdW5jdGlvbih1KXtyZXR1cm4gbnVsbCE9dSYmdT09PXUud2luZG93fSwiaXNXaW5kb3ciLCJqUXVlcnkuaXNXaW5kb3coKSBpcyBkZXByZWNhdGVkIikpO2lmKG4uYWpheCl7dmFyIHNhPW4uYWpheCxuYj0vKD0pXD8oPz0mfCQpfFw\/XD8vO2phKG4sImFqYXgiLGZ1bmN0aW9uKCl7dmFyIHU9c2EuYXBwbHkodGhpcyxhcmd1bWVudHMpO3UucHJvbWlzZSYmKGJhKHUsInN1Y2Nlc3MiLHUuZG9uZSwianFYSFItbWV0aG9kcyIsImpRWEhSLnN1Y2Nlc3MgaXMgZGVwcmVjYXRlZCBhbmQgcmVtb3ZlZCIpLGJhKHUsImVycm9yIix1LmZhaWwsImpxWEhSLW1ldGhvZHMiLCJqUVhIUi5lcnJvciBpcyBkZXByZWNhdGVkIGFuZCByZW1vdmVkIiksYmEodSwiY29tcGxldGUiLHUuYWx3YXlzLCJqcVhIUi1tZXRob2RzIiwialFYSFIuY29tcGxldGUgaXMgZGVwcmVjYXRlZCBhbmQgcmVtb3ZlZCIpKTsKcmV0dXJuIHV9LCJqcVhIUi1tZXRob2RzIik7d2EoIjQuMC4wIil8fG4uYWpheFByZWZpbHRlcigiK2pzb24iLGZ1bmN0aW9uKHUpeyExIT09dS5qc29ucCYmKG5iLnRlc3QodS51cmwpfHwic3RyaW5nIj09PXR5cGVvZiB1LmRhdGEmJjA9PT0odS5jb250ZW50VHlwZXx8IiIpLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpJiZuYi50ZXN0KHUuZGF0YSkpJiZVKCJqc29ucC1wcm9tb3Rpb24iLCJKU09OLXRvLUpTT05QIGF1dG8tcHJvbW90aW9uIGlzIGRlcHJlY2F0ZWQiKX0pfXZhciBSYj1uLmZuLnJlbW92ZUF0dHIsYWI9bi5mbi50b2dnbGVDbGFzcyxiYj0vXFMrL2c7amEobi5mbiwicmVtb3ZlQXR0ciIsZnVuY3Rpb24odSl7dmFyIHg9dGhpcyxDPSExO24uZWFjaCh1Lm1hdGNoKGJiKSxmdW5jdGlvbihILFApe24uZXhwci5tYXRjaC5ib29sLnRlc3QoUCkmJnguZWFjaChmdW5jdGlvbigpe2lmKCExIT09bih0aGlzKS5wcm9wKFApKXJldHVybiBDPQohMCwhMX0pO0MmJihVKCJyZW1vdmVBdHRyLWJvb2wiLCJqUXVlcnkuZm4ucmVtb3ZlQXR0ciBubyBsb25nZXIgc2V0cyBib29sZWFuIHByb3BlcnRpZXM6ICIrUCkseC5wcm9wKFAsITEpKX0pO3JldHVybiBSYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LCJyZW1vdmVBdHRyLWJvb2wiKTtqYShuLmZuLCJ0b2dnbGVDbGFzcyIsZnVuY3Rpb24odSl7aWYodm9pZCAwIT09dSYmImJvb2xlYW4iIT09dHlwZW9mIHUpcmV0dXJuIGFiLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtVKCJ0b2dnbGVDbGFzcy1ib29sIiwialF1ZXJ5LmZuLnRvZ2dsZUNsYXNzKCBib29sZWFuICkgaXMgZGVwcmVjYXRlZCIpO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgeD10aGlzLmdldEF0dHJpYnV0ZSYmdGhpcy5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiO3gmJm4uZGF0YSh0aGlzLCJfX2NsYXNzTmFtZV9fIix4KTt0aGlzLnNldEF0dHJpYnV0ZSYmdGhpcy5zZXRBdHRyaWJ1dGUoImNsYXNzIix4fHwKITE9PT11PyIiOm4uZGF0YSh0aGlzLCJfX2NsYXNzTmFtZV9fIil8fCIiKX0pfSwidG9nZ2xlQ2xhc3MtYm9vbCIpO3ZhciBmYj0hMSxwYj0vXlthLXpdLyxTYj0vXig\/OkJvcmRlcig\/OlRvcHxSaWdodHxCb3R0b218TGVmdCk\/KD86V2lkdGh8KXwoPzpNYXJnaW58UGFkZGluZyk\/KD86VG9wfFJpZ2h0fEJvdHRvbXxMZWZ0KT98KD86TWlufE1heCk\/KD86V2lkdGh8SGVpZ2h0KSkkLztuLnN3YXAmJm4uZWFjaChbImhlaWdodCIsIndpZHRoIiwicmVsaWFibGVNYXJnaW5SaWdodCJdLGZ1bmN0aW9uKHUseCl7dmFyIEM9bi5jc3NIb29rc1t4XSYmbi5jc3NIb29rc1t4XS5nZXQ7QyYmKG4uY3NzSG9va3NbeF0uZ2V0PWZ1bmN0aW9uKCl7ZmI9ITA7dmFyIEg9Qy5hcHBseSh0aGlzLGFyZ3VtZW50cyk7ZmI9ITE7cmV0dXJuIEh9KX0pO2phKG4sInN3YXAiLGZ1bmN0aW9uKHUseCxDLEgpe3ZhciBQLGVhPXt9O2ZifHxVKCJzd2FwIiwialF1ZXJ5LnN3YXAoKSBpcyB1bmRvY3VtZW50ZWQgYW5kIGRlcHJlY2F0ZWQiKTsKZm9yKFAgaW4geCllYVtQXT11LnN0eWxlW1BdLHUuc3R5bGVbUF09eFtQXTtDPUMuYXBwbHkodSxIfHxbXSk7Zm9yKFAgaW4geCl1LnN0eWxlW1BdPWVhW1BdO3JldHVybiBDfSwic3dhcCIpO3dhKCIzLjQuMCIpJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBQcm94eSYmKG4uY3NzUHJvcHM9bmV3IFByb3h5KG4uY3NzUHJvcHN8fHt9LHtzZXQ6ZnVuY3Rpb24oKXtVKCJjc3NQcm9wcyIsImpRdWVyeS5jc3NQcm9wcyBpcyBkZXByZWNhdGVkIik7cmV0dXJuIFJlZmxlY3Quc2V0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KSk7aWYod2EoIjQuMC4wIikpe3ZhciBxYj17YW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6ITAsY29sdW1uQ291bnQ6ITAsZmlsbE9wYWNpdHk6ITAsZmxleEdyb3c6ITAsZmxleFNocmluazohMCxmb250V2VpZ2h0OiEwLGdyaWRBcmVhOiEwLGdyaWRDb2x1bW46ITAsZ3JpZENvbHVtbkVuZDohMCxncmlkQ29sdW1uU3RhcnQ6ITAsZ3JpZFJvdzohMCxncmlkUm93RW5kOiEwLApncmlkUm93U3RhcnQ6ITAsbGluZUhlaWdodDohMCxvcGFjaXR5OiEwLG9yZGVyOiEwLG9ycGhhbnM6ITAsd2lkb3dzOiEwLHpJbmRleDohMCx6b29tOiEwfTtuLmNzc051bWJlcj0idW5kZWZpbmVkIiE9PXR5cGVvZiBQcm94eT9uZXcgUHJveHkocWIse2dldDpmdW5jdGlvbigpe1UoImNzcy1udW1iZXIiLCJqUXVlcnkuY3NzTnVtYmVyIGlzIGRlcHJlY2F0ZWQiKTtyZXR1cm4gUmVmbGVjdC5nZXQuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxzZXQ6ZnVuY3Rpb24oKXtVKCJjc3MtbnVtYmVyIiwialF1ZXJ5LmNzc051bWJlciBpcyBkZXByZWNhdGVkIik7cmV0dXJuIFJlZmxlY3Quc2V0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KTpxYn1lbHNlIHFiPW4uY3NzTnVtYmVyO3ZhciAkYj1uLmZuLmNzcztqYShuLmZuLCJjc3MiLGZ1bmN0aW9uKHUseCl7dmFyIEM9dGhpcztpZih1JiYib2JqZWN0Ij09PXR5cGVvZiB1JiYhQXJyYXkuaXNBcnJheSh1KSlyZXR1cm4gbi5lYWNoKHUsZnVuY3Rpb24oUCwKZWEpe24uZm4uY3NzLmNhbGwoQyxQLGVhKX0pLHRoaXM7aWYoIm51bWJlciI9PT10eXBlb2YgeCl7dmFyIEg9bGIodSk7WWEoSCl8fHFiW0hdfHxVKCJjc3MtbnVtYmVyIiwnTnVtYmVyLXR5cGVkIHZhbHVlcyBhcmUgZGVwcmVjYXRlZCBmb3IgalF1ZXJ5LmZuLmNzcyggIicrdSsnIiwgdmFsdWUgKScpfXJldHVybiAkYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LCJjc3MtbnVtYmVyIik7dmFyIGdiPW4uZGF0YTtqYShuLCJkYXRhIixmdW5jdGlvbih1LHgsQyl7dmFyIEg7aWYoeCYmIm9iamVjdCI9PT10eXBlb2YgeCYmMj09PWFyZ3VtZW50cy5sZW5ndGgpe3ZhciBQPW4uaGFzRGF0YSh1KSYmZ2IuY2FsbCh0aGlzLHUpLGVhPXt9O2ZvcihIIGluIHgpSCE9PWxiKEgpPyhVKCJkYXRhLWNhbWVsQ2FzZSIsImpRdWVyeS5kYXRhKCkgYWx3YXlzIHNldHMvZ2V0cyBjYW1lbENhc2VkIG5hbWVzOiAiK0gpLFBbSF09eFtIXSk6ZWFbSF09eFtIXTtnYi5jYWxsKHRoaXMsdSxlYSk7cmV0dXJuIHh9cmV0dXJuIHgmJgoic3RyaW5nIj09PXR5cGVvZiB4JiZ4IT09bGIoeCkmJihQPW4uaGFzRGF0YSh1KSYmZ2IuY2FsbCh0aGlzLHUpKSYmeCBpbiBQPyhVKCJkYXRhLWNhbWVsQ2FzZSIsImpRdWVyeS5kYXRhKCkgYWx3YXlzIHNldHMvZ2V0cyBjYW1lbENhc2VkIG5hbWVzOiAiK3gpLDI8YXJndW1lbnRzLmxlbmd0aCYmKFBbeF09QyksUFt4XSk6Z2IuYXBwbHkodGhpcyxhcmd1bWVudHMpfSwiZGF0YS1jYW1lbENhc2UiKTtpZihuLmZ4KXt2YXIgY2I9bi5Ud2Vlbi5wcm90b3R5cGUucnVuLFRiPWZ1bmN0aW9uKHUpe3JldHVybiB1fTtqYShuLlR3ZWVuLnByb3RvdHlwZSwicnVuIixmdW5jdGlvbigpezE8bi5lYXNpbmdbdGhpcy5lYXNpbmddLmxlbmd0aCYmKFUoImVhc2luZy1vbmUtYXJnIiwiJ2pRdWVyeS5lYXNpbmcuIit0aGlzLmVhc2luZy50b1N0cmluZygpKyInIHNob3VsZCB1c2Ugb25seSBvbmUgYXJndW1lbnQiKSxuLmVhc2luZ1t0aGlzLmVhc2luZ109VGIpO2NiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sCiJlYXNpbmctb25lLWFyZyIpO3ZhciBLYT1uLmZ4LmludGVydmFsO2RhLnJlcXVlc3RBbmltYXRpb25GcmFtZSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KG4uZngsImludGVydmFsIix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7ZGEuZG9jdW1lbnQuaGlkZGVufHxVKCJmeC1pbnRlcnZhbCIsImpRdWVyeS5meC5pbnRlcnZhbCBpcyBkZXByZWNhdGVkIik7cmV0dXJuIG4ubWlncmF0ZUlzUGF0Y2hFbmFibGVkKCJmeC1pbnRlcnZhbCIpP3ZvaWQgMD09PUthPzEzOkthOkthfSxzZXQ6ZnVuY3Rpb24odSl7VSgiZngtaW50ZXJ2YWwiLCJqUXVlcnkuZnguaW50ZXJ2YWwgaXMgZGVwcmVjYXRlZCIpO0thPXV9fSl9dmFyIFZiPW4uZm4ubG9hZCxBYj1uLmV2ZW50LmFkZCxXYj1uLmV2ZW50LmZpeDtuLmV2ZW50LnByb3BzPVtdO24uZXZlbnQuZml4SG9va3M9e307ZWIobi5ldmVudC5wcm9wcywiY29uY2F0IixuLmV2ZW50LnByb3BzLmNvbmNhdCwiZXZlbnQtb2xkLXBhdGNoIiwKImpRdWVyeS5ldmVudC5wcm9wcy5jb25jYXQoKSBpcyBkZXByZWNhdGVkIGFuZCByZW1vdmVkIik7amEobi5ldmVudCwiZml4IixmdW5jdGlvbih1KXt2YXIgeD11LnR5cGUsQz10aGlzLmZpeEhvb2tzW3hdLEg9bi5ldmVudC5wcm9wcztpZihILmxlbmd0aClmb3IoVSgiZXZlbnQtb2xkLXBhdGNoIiwialF1ZXJ5LmV2ZW50LnByb3BzIGFyZSBkZXByZWNhdGVkIGFuZCByZW1vdmVkOiAiK0guam9pbigpKTtILmxlbmd0aDspbi5ldmVudC5hZGRQcm9wKEgucG9wKCkpO2lmKEMmJiFDLl9taWdyYXRlZF8mJihDLl9taWdyYXRlZF89ITAsVSgiZXZlbnQtb2xkLXBhdGNoIiwialF1ZXJ5LmV2ZW50LmZpeEhvb2tzIGFyZSBkZXByZWNhdGVkIGFuZCByZW1vdmVkOiAiK3gpLChIPUMucHJvcHMpJiZILmxlbmd0aCkpZm9yKDtILmxlbmd0aDspbi5ldmVudC5hZGRQcm9wKEgucG9wKCkpO3g9V2IuY2FsbCh0aGlzLHUpO3JldHVybiBDJiZDLmZpbHRlcj9DLmZpbHRlcih4LHUpOnh9LCJldmVudC1vbGQtcGF0Y2giKTsKamEobi5ldmVudCwiYWRkIixmdW5jdGlvbih1LHgpe3U9PT1kYSYmImxvYWQiPT09eCYmImNvbXBsZXRlIj09PWRhLmRvY3VtZW50LnJlYWR5U3RhdGUmJlUoImxvYWQtYWZ0ZXItZXZlbnQiLCJqUXVlcnkod2luZG93KS5vbignbG9hZCcuLi4pIGNhbGxlZCBhZnRlciBsb2FkIGV2ZW50IG9jY3VycmVkIik7cmV0dXJuIEFiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sImxvYWQtYWZ0ZXItZXZlbnQiKTtuLmVhY2goWyJsb2FkIiwidW5sb2FkIiwiZXJyb3IiXSxmdW5jdGlvbih1LHgpe2phKG4uZm4seCxmdW5jdGlvbigpe3ZhciBDPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKTtpZigibG9hZCI9PT14JiYic3RyaW5nIj09PXR5cGVvZiBDWzBdKXJldHVybiBWYi5hcHBseSh0aGlzLEMpO1UoInNob3J0aGFuZC1yZW1vdmVkLXYzIiwialF1ZXJ5LmZuLiIreCsiKCkgaXMgZGVwcmVjYXRlZCIpO0Muc3BsaWNlKDAsMCx4KTtpZihhcmd1bWVudHMubGVuZ3RoKXJldHVybiB0aGlzLm9uLmFwcGx5KHRoaXMsCkMpO3RoaXMudHJpZ2dlckhhbmRsZXIuYXBwbHkodGhpcyxDKTtyZXR1cm4gdGhpc30sInNob3J0aGFuZC1yZW1vdmVkLXYzIil9KTtuLmVhY2goImJsdXIgZm9jdXMgZm9jdXNpbiBmb2N1c291dCByZXNpemUgc2Nyb2xsIGNsaWNrIGRibGNsaWNrIG1vdXNlZG93biBtb3VzZXVwIG1vdXNlbW92ZSBtb3VzZW92ZXIgbW91c2VvdXQgbW91c2VlbnRlciBtb3VzZWxlYXZlIGNoYW5nZSBzZWxlY3Qgc3VibWl0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgY29udGV4dG1lbnUiLnNwbGl0KCIgIiksZnVuY3Rpb24odSx4KXtiYShuLmZuLHgsZnVuY3Rpb24oQyxIKXtyZXR1cm4gMDxhcmd1bWVudHMubGVuZ3RoP3RoaXMub24oeCxudWxsLEMsSCk6dGhpcy50cmlnZ2VyKHgpfSwic2hvcnRoYW5kLWRlcHJlY2F0ZWQtdjMiLCJqUXVlcnkuZm4uIit4KyIoKSBldmVudCBzaG9ydGhhbmQgaXMgZGVwcmVjYXRlZCIpfSk7bihmdW5jdGlvbigpe24oZGEuZG9jdW1lbnQpLnRyaWdnZXJIYW5kbGVyKCJyZWFkeSIpfSk7Cm4uZXZlbnQuc3BlY2lhbC5yZWFkeT17c2V0dXA6ZnVuY3Rpb24oKXt0aGlzPT09ZGEuZG9jdW1lbnQmJlUoInJlYWR5LWV2ZW50IiwiJ3JlYWR5JyBldmVudCBpcyBkZXByZWNhdGVkIil9fTtiYShuLmZuLCJiaW5kIixmdW5jdGlvbih1LHgsQyl7cmV0dXJuIHRoaXMub24odSxudWxsLHgsQyl9LCJwcmUtb24tbWV0aG9kcyIsImpRdWVyeS5mbi5iaW5kKCkgaXMgZGVwcmVjYXRlZCIpO2JhKG4uZm4sInVuYmluZCIsZnVuY3Rpb24odSx4KXtyZXR1cm4gdGhpcy5vZmYodSxudWxsLHgpfSwicHJlLW9uLW1ldGhvZHMiLCJqUXVlcnkuZm4udW5iaW5kKCkgaXMgZGVwcmVjYXRlZCIpO2JhKG4uZm4sImRlbGVnYXRlIixmdW5jdGlvbih1LHgsQyxIKXtyZXR1cm4gdGhpcy5vbih4LHUsQyxIKX0sInByZS1vbi1tZXRob2RzIiwialF1ZXJ5LmZuLmRlbGVnYXRlKCkgaXMgZGVwcmVjYXRlZCIpO2JhKG4uZm4sInVuZGVsZWdhdGUiLGZ1bmN0aW9uKHUseCxDKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg\/CnRoaXMub2ZmKHUsIioqIik6dGhpcy5vZmYoeCx1fHwiKioiLEMpfSwicHJlLW9uLW1ldGhvZHMiLCJqUXVlcnkuZm4udW5kZWxlZ2F0ZSgpIGlzIGRlcHJlY2F0ZWQiKTtiYShuLmZuLCJob3ZlciIsZnVuY3Rpb24odSx4KXtyZXR1cm4gdGhpcy5vbigibW91c2VlbnRlciIsdSkub24oIm1vdXNlbGVhdmUiLHh8fHUpfSwicHJlLW9uLW1ldGhvZHMiLCJqUXVlcnkuZm4uaG92ZXIoKSBpcyBkZXByZWNhdGVkIik7dmFyIHJiPS88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFthLXpdW15cL1wwPlx4MjBcdFxyXG5cZl0qKVtePl0qKVwvPi9naSxCYj1mdW5jdGlvbih1KXt2YXIgeD1kYS5kb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIiIpO3guYm9keS5pbm5lckhUTUw9dTtyZXR1cm4geC5ib2R5JiZ4LmJvZHkuaW5uZXJIVE1MfTtuLlVOU0FGRV9yZXN0b3JlTGVnYWN5SHRtbFByZWZpbHRlcj1mdW5jdGlvbigpe24ubWlncmF0ZUVuYWJsZVBhdGNoZXMoInNlbGYtY2xvc2VkLXRhZ3MiKX07CmphKG4sImh0bWxQcmVmaWx0ZXIiLGZ1bmN0aW9uKHUpe3ZhciB4PXUucmVwbGFjZShyYiwiPCQxPjwvJDI+Iik7eCE9PXUmJkJiKHUpIT09QmIoeCkmJlUoInNlbGYtY2xvc2VkLXRhZ3MiLCJIVE1MIHRhZ3MgbXVzdCBiZSBwcm9wZXJseSBuZXN0ZWQgYW5kIGNsb3NlZDogIit1KTtyZXR1cm4gdS5yZXBsYWNlKHJiLCI8JDE+PC8kMj4iKX0sInNlbGYtY2xvc2VkLXRhZ3MiKTtuLm1pZ3JhdGVEaXNhYmxlUGF0Y2hlcygic2VsZi1jbG9zZWQtdGFncyIpO3ZhciB6YT1uLmZuLm9mZnNldDtqYShuLmZuLCJvZmZzZXQiLGZ1bmN0aW9uKCl7dmFyIHU9dGhpc1swXTtyZXR1cm4hdXx8dS5ub2RlVHlwZSYmdS5nZXRCb3VuZGluZ0NsaWVudFJlY3Q\/emEuYXBwbHkodGhpcyxhcmd1bWVudHMpOihVKCJvZmZzZXQtdmFsaWQtZWxlbSIsImpRdWVyeS5mbi5vZmZzZXQoKSByZXF1aXJlcyBhIHZhbGlkIERPTSBlbGVtZW50IiksYXJndW1lbnRzLmxlbmd0aD90aGlzOnZvaWQgMCl9LCJvZmZzZXQtdmFsaWQtZWxlbSIpOwppZihuLmFqYXgpe3ZhciBDYj1uLnBhcmFtO2phKG4sInBhcmFtIixmdW5jdGlvbih1LHgpe3ZhciBDPW4uYWpheFNldHRpbmdzJiZuLmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbDt2b2lkIDA9PT14JiZDJiYoVSgicGFyYW0tYWpheC10cmFkaXRpb25hbCIsImpRdWVyeS5wYXJhbSgpIG5vIGxvbmdlciB1c2VzIGpRdWVyeS5hamF4U2V0dGluZ3MudHJhZGl0aW9uYWwiKSx4PUMpO3JldHVybiBDYi5jYWxsKHRoaXMsdSx4KX0sInBhcmFtLWFqYXgtdHJhZGl0aW9uYWwiKX1iYShuLmZuLCJhbmRTZWxmIixuLmZuLmFkZEJhY2ssImFuZFNlbGYiLCJqUXVlcnkuZm4uYW5kU2VsZigpIGlzIGRlcHJlY2F0ZWQgYW5kIHJlbW92ZWQsIHVzZSBqUXVlcnkuZm4uYWRkQmFjaygpIik7aWYobi5EZWZlcnJlZCl7dmFyIERiPW4uRGVmZXJyZWQsdGI9W1sicmVzb2x2ZSIsImRvbmUiLG4uQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLG4uQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLCJyZXNvbHZlZCJdLApbInJlamVjdCIsImZhaWwiLG4uQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLG4uQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLCJyZWplY3RlZCJdLFsibm90aWZ5IiwicHJvZ3Jlc3MiLG4uQ2FsbGJhY2tzKCJtZW1vcnkiKSxuLkNhbGxiYWNrcygibWVtb3J5IildXTtqYShuLCJEZWZlcnJlZCIsZnVuY3Rpb24odSl7ZnVuY3Rpb24geCgpe3ZhciBQPWFyZ3VtZW50cztyZXR1cm4gbi5EZWZlcnJlZChmdW5jdGlvbihlYSl7bi5lYWNoKHRiLGZ1bmN0aW9uKFFhLEViKXt2YXIgaGI9ImZ1bmN0aW9uIj09PXR5cGVvZiBQW1FhXSYmUFtRYV07Q1tFYlsxXV0oZnVuY3Rpb24oKXt2YXIgb2E9aGImJmhiLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtpZihvYSYmImZ1bmN0aW9uIj09PXR5cGVvZiBvYS5wcm9taXNlKW9hLnByb21pc2UoKS5kb25lKGVhLnJlc29sdmUpLmZhaWwoZWEucmVqZWN0KS5wcm9ncmVzcyhlYS5ub3RpZnkpO2Vsc2UgZWFbRWJbMF0rIldpdGgiXSh0aGlzPT09SD9lYS5wcm9taXNlKCk6CnRoaXMsaGI\/W29hXTphcmd1bWVudHMpfSl9KTtQPW51bGx9KS5wcm9taXNlKCl9dmFyIEM9RGIoKSxIPUMucHJvbWlzZSgpO2JhKEMsInBpcGUiLHgsImRlZmVycmVkLXBpcGUiLCJkZWZlcnJlZC5waXBlKCkgaXMgZGVwcmVjYXRlZCIpO2JhKEgsInBpcGUiLHgsImRlZmVycmVkLXBpcGUiLCJkZWZlcnJlZC5waXBlKCkgaXMgZGVwcmVjYXRlZCIpO3UmJnUuY2FsbChDLEMpO3JldHVybiBDfSwiZGVmZXJyZWQtcGlwZSIpO24uRGVmZXJyZWQuZXhjZXB0aW9uSG9vaz1EYi5leGNlcHRpb25Ib29rfXJldHVybiBufSk7Ci8qKiAvbS9qcy9qcXVlcnkuY29va2llLmpzICoqLwp2YXIgX19fZDJjX2pxdWVyeWNvb2tpZWpzX2Nfb249IjIwMjUtMDUtMjMgMTc6MDk6MjgiOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX2pxdWVyeWNvb2tpZWpzX2Nfb249IjIwMjQtMDEtMzEgMTQ6MzY6MDkiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfanF1ZXJ5Y29va2llanNfY19vbj0iMjAyMy0wOS0wNiAxNDozMDowNiI7InVzZSBzdHJpY3QiOwooZnVuY3Rpb24oaCxsLHIpe2Z1bmN0aW9uIHQoYil7cmV0dXJuIGJ9ZnVuY3Rpb24gdShiKXt0cnl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChiLnJlcGxhY2UobSwiICIpKX1jYXRjaChjKXt0cnl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudCh1bmVzY2FwZShiKS5yZXBsYWNlKG0sIiAiKSl9Y2F0Y2goYSl7cmV0dXJuIGNvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZyhhLm1lc3NhZ2UpLGJ9fX1mdW5jdGlvbiBuKGIsYyxhLGUsayxmKXsidW5kZWZpbmVkIj09PXR5cGVvZiBmJiYoZj01KTsidW5kZWZpbmVkIj09PXR5cGVvZiB3aW5kb3cuQ29va2llTG9nZ2VyP2YmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXtuKGIsYyxhLGUsayxmLTEpfSwxRTMpOndpbmRvdy5Db29raWVMb2dnZXIubG9nKGIsYyxhLGUsayl9dmFyIG09L1wrL2csZz1oLmNvb2tpZT1mdW5jdGlvbihiLGMsYSl7aWYoYyE9PXIpcmV0dXJuIENvb2tpZXMuaXNDb29raWVBbGxvd2VkKGIsZnVuY3Rpb24oZCl7ZGVidWcoIkNvb2tpZTogIiwKYixkKTthPWguZXh0ZW5kKHt9LGcuZGVmYXVsdHMsYSk7aWYoIWQpcmV0dXJuIENvb2tpZXMucmVtb3ZlKGIsYS5wYXRoLGEuZG9tYWluKSwhMTtudWxsPT09YyYmKGEuZXhwaXJlcz0tMSk7Im51bWJlciI9PT10eXBlb2YgYS5leHBpcmVzSW5NaW51dGVzJiYoYS5leHBpcmVzPWEuZXhwaXJlc0luTWludXRlcy8xNDQwKTtpZigibnVtYmVyIj09PXR5cGVvZiBhLmV4cGlyZXMpe2Q9YS5leHBpcmVzO3ZhciBwPWEuZXhwaXJlcz1uZXcgRGF0ZTtwLnNldFRpbWUoK3ArODY0RTUqZCl9ZD1uZXcgRGF0ZTtkLnNldEZ1bGxZZWFyKGQuZ2V0RnVsbFllYXIoKSsxKTthLmV4cGlyZXM+ZCYmKGEuZXhwaXJlcz1kKTtjPWcuanNvbj9KU09OLnN0cmluZ2lmeShjKTpTdHJpbmcoYyk7bihiLGMsYS5leHBpcmVzLGEucGF0aCxhLmRvbWFpbik7cmV0dXJuIGwuY29va2llPVtlbmNvZGVVUklDb21wb25lbnQoYiksIj0iLGcucmF3P2M6ZW5jb2RlVVJJQ29tcG9uZW50KGMpLGEuZXhwaXJlcz8iOyBleHBpcmVzPSIrCmEuZXhwaXJlcy50b1VUQ1N0cmluZygpOiIiLGEucGF0aD8iOyBwYXRoPSIrYS5wYXRoOiIiLGEuZG9tYWluPyI7IGRvbWFpbj0iK2EuZG9tYWluOiIiLGEuc2VjdXJlPyI7IHNlY3VyZSI6IiJdLmpvaW4oIiIpfSk7Zm9yKHZhciBlPWcucmF3P3Q6dSxrPWwuY29va2llLnNwbGl0KCI7ICIpLGY9MCx2PWsubGVuZ3RoO2Y8djtmKyspe3ZhciBxPWtbZl0uc3BsaXQoIj0iKTtpZihlKHEuc2hpZnQoKSk9PT1iKXJldHVybiBlPWUocS5qb2luKCI9IikpLGcuanNvbj9KU09OLnBhcnNlKGUpOmV9cmV0dXJuIG51bGx9O2cuZGVmYXVsdHM9e307aC5yZW1vdmVDb29raWU9ZnVuY3Rpb24oYixjKXtyZXR1cm4gbnVsbCE9PWguY29va2llKGIpPyhoLmNvb2tpZShiLG51bGwsYyksITApOiExfX0pKGpRdWVyeSxkb2N1bWVudCk7Ci8qKiAvbS9qcy92YW5pbGxhanMvY29va2llcy5jb25zZW50LmpzICoqLwp2YXIgX19fZDJjX2Nvb2tpZXNjb25zZW50anNfY19vbj0iMjAyNS0wNS0yMyAxNzowNToxMyI7J3VzZSBzdHJpY3QnO3ZhciBfX19kMmNfY29va2llc2NvbnNlbnRqc19jX29uPSIyMDI1LTAxLTIyIDEwOjMwOjA4IjsidXNlIHN0cmljdCI7CihmdW5jdGlvbigpe3dpbmRvdy5Db29raWVDb25zZW50PXtDQVRFR09SWUlEX0VTU0VOVElBTDoyLF9jbXBJbnRlcnZhbElEOm51bGwsX2N1cnJlbnRWZW5kb3I6bnVsbCxfY29va2llczpudWxsLF9jYXRlZ29yaWVzOm51bGwsX3JlZ2lzdGVyZWRSZXF1ZXN0czpbXSxpbml0OmZ1bmN0aW9uKCl7Q29va2llQ29uc2VudC5fbG9hZEpTT04obnVsbCk7Q29va2llQ29uc2VudC5fY21wSW50ZXJ2YWxJRD1zZXRJbnRlcnZhbChmdW5jdGlvbigpe0Nvb2tpZUNvbnNlbnQubGlzdGVuRm9yT25lVHJ1c3QoKX0sMUUzKTt2YXIgYj1Db29raWVDb25zZW50LmdldENvbnNlbnQoKTtsZXQgYT1udWxsPT1ifHwtMTxiLmluZGV4T2YoIkMwMDAyIik\/ImdyYW50ZWQiOiJkZW5pZWQiO2I9bnVsbD09Ynx8LTE8Yi5pbmRleE9mKCJDMDAwNCIpPyJncmFudGVkIjoiZGVuaWVkIjtndGFnKCJjb25zZW50IiwiZGVmYXVsdCIse2FkX3N0b3JhZ2U6YixhbmFseXRpY3Nfc3RvcmFnZTphfSk7InVuZGVmaW5lZCIhPT0KdHlwZW9mIGZicSYmZmJxKCJjb25zZW50IiwicmV2b2tlIil9LGxpc3RlbkZvck9uZVRydXN0OmZ1bmN0aW9uKCl7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgT25lVHJ1c3Qpe2NvbnNvbGUubG9nKCJDb29raWVDb25zZW50Lmxpc3RlbkZvck9uZVRydXN0KCkiKTtDb29raWVDb25zZW50Ll9jdXJyZW50VmVuZG9yPSJPbmVUcnVzdCI7Y2xlYXJJbnRlcnZhbChDb29raWVDb25zZW50Ll9jbXBJbnRlcnZhbElEKTt2YXIgYj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjb25ldHJ1c3QtY2xvc2UtYnRuLWNvbnRhaW5lciAub25ldHJ1c3QtY2xvc2UtYnRuLWhhbmRsZXIiKTtiJiZiLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbigpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtsZXQgYT13aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsYz1sb2NhdGlvbi5ob3N0bmFtZS5zcGxpdCgiLiIpLnNsaWNlKC0yKS5qb2luKCIuIik7ZG9jdW1lbnQuY29va2llPSJPcHRhbm9uQWxlcnRCb3hDbG9zZWQ9OyBQYXRoPS87IEV4cGlyZXM9VGh1LCAwMSBKYW4gMTk3MCAwMDowMDowMSBHTVQ7ZG9tYWluPSIrCmErIjsiO2RvY3VtZW50LmNvb2tpZT0iT3B0YW5vbkFsZXJ0Qm94Q2xvc2VkPTsgUGF0aD0vOyBFeHBpcmVzPVRodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDEgR01UO2RvbWFpbj0iK2MrIjsifSwxRTMpfSk7T25lVHJ1c3QuT25Db25zZW50Q2hhbmdlZChmdW5jdGlvbihhKXtpZihhJiZhLmRldGFpbCl7dmFyIGM9Q29va2llQ29uc2VudC5fZ2V0Q29uc2VudENvb2tpZSgpO0Nvb2tpZUNvbnNlbnQuX3VwZGF0ZUNvbnNlbnRDb29raWUoSlNPTi5zdHJpbmdpZnkoYS5kZXRhaWwpKTstMTxhLmRldGFpbC5pbmRleE9mKCJDMDAwNCIpP2d0YWcoImNvbnNlbnQiLCJ1cGRhdGUiLHthZF9zdG9yYWdlOiJncmFudGVkIn0pOmd0YWcoImNvbnNlbnQiLCJ1cGRhdGUiLHthZF9zdG9yYWdlOiJkZW5pZWQifSk7LTE8YS5kZXRhaWwuaW5kZXhPZigiQzAwMDIiKT9ndGFnKCJjb25zZW50IiwidXBkYXRlIix7YW5hbHl0aWNzX3N0b3JhZ2U6ImdyYW50ZWQifSk6Z3RhZygiY29uc2VudCIsInVwZGF0ZSIsCnthbmFseXRpY3Nfc3RvcmFnZToiZGVuaWVkIn0pOyJ1bmRlZmluZWQiIT09dHlwZW9mIGZicSYmKC0xPGEuZGV0YWlsLmluZGV4T2YoIkMwMDA0Iik\/ZmJxKCJjb25zZW50IiwiZ3JhbnQiKTpmYnEoImNvbnNlbnQiLCJyZXZva2UiKSk7MT09YS5kZXRhaWwubGVuZ3RoJiYiQzAwMDEiPT1hLmRldGFpbFswXSYmKG51bGw9PWN8fDE8Yy5sZW5ndGgpJiZkMmNGb290ZXJEZWxldGVBbGxDb29raWVzKCEwKTtpZigtMTxhLmRldGFpbC5pbmRleE9mKCJDMDAwMiIpKXtjPXNlc3Npb25TdG9yYWdlLmdldEl0ZW0oImQyY19jb25zZW50X3dhaXQiKTtjPW51bGwhPWM\/SlNPTi5wYXJzZShhdG9iKGMpKTp7fTtmb3IodmFyIGQgaW4gYylDb29raWVzLnNldChjW2RdLmtleSxjW2RdLnZhbHVlLGNbZF0uZXhwaXJlcyxjW2RdLnBhdGgsY1tkXS5kb21haW4pfXNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oImQyY19jb25zZW50X3dhaXQiKTtkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJib2R5IikuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoImQyY19jb25zZW50X2NoYW5nZWQiLAp7Y2F0ZWdvcmllczphLmRldGFpbH0pKX19KX19LF91cGRhdGVDb25zZW50Q29va2llOmZ1bmN0aW9uKGIpe0Nvb2tpZXMuc2V0KCJkMmNfY29va2llX2NvbnNlbnQiLGIsMzY1LCIvIil9LF9nZXRDb25zZW50Q29va2llOmZ1bmN0aW9uKCl7aWYoIUNvb2tpZXMuaGFzKCJkMmNfY29va2llX2NvbnNlbnQiKSlyZXR1cm4gbnVsbDtsZXQgYj1Db29raWVzLmdldCgiZDJjX2Nvb2tpZV9jb25zZW50Iik7cmV0dXJuIEpTT04ucGFyc2UoYil9LGdldENvbnNlbnQ6ZnVuY3Rpb24oKXtsZXQgYj0oIiIrZG9jdW1lbnQuY29va2llKS5zcGxpdCgiOyIpO2ZvcihsZXQgYT0wO2E8Yi5sZW5ndGg7YSsrKXtsZXQgYz1iW2FdO2M9Yy50cmltKCk7aWYoMD09Yy5pbmRleE9mKCJkMmNfY29va2llX2NvbnNlbnQ9Iikpe3RyeXtjPWRlY29kZVVSSUNvbXBvbmVudChjKX1jYXRjaChkKXtjb25zb2xlLmxvZyhkKTticmVha31yZXR1cm4gYy5zdWJzdHJpbmcoMTksYy5sZW5ndGgpfX1yZXR1cm4gbnVsbH0sCmlzQ29va2llQWxsb3dlZDpmdW5jdGlvbihiLGEpe2lmKFsiZDJjX2Nvb2tpZV9jb25zZW50IiwiQ1NSRkRPTUFJTkNIRUNLXzEiXS5pbmNsdWRlcyhiKSlhKCEwKTtlbHNlIGlmKG51bGw9PT1Db29raWVDb25zZW50Ll9jb29raWVzfHxudWxsPT09Q29va2llQ29uc2VudC5fY2F0ZWdvcmllcylDb29raWVDb25zZW50Ll9yZWdpc3RlckpTT05Mb2FkZWRFdmVudChmdW5jdGlvbigpe0Nvb2tpZUNvbnNlbnQuaXNDb29raWVBbGxvd2VkKGIsYSl9KTtlbHNlIGlmKENvb2tpZUNvbnNlbnQuX2Nvb2tpZXMuaGFzT3duUHJvcGVydHkoYikpe3ZhciBjPUNvb2tpZUNvbnNlbnQuX2Nvb2tpZXNbYl0sZD1Db29raWVDb25zZW50Ll9nZXRWZW5kb3JDYXRlZ29yeShjKSxlPUNvb2tpZUNvbnNlbnQuX2dldENvbnNlbnRDb29raWUoKTsiZnVuY3Rpb24iPT09dHlwZW9mIGRlYnVnJiZkZWJ1Zyh7bmFtZTpiLGNhdGVnb3J5OmMsdmVuZG9yOmQsY29uc2VudDplfSk7bnVsbD09PWV8fG51bGw9PT1kPwphKCExKToib2JqZWN0Ij09PXR5cGVvZiBkPyhjPTA8ZC5maWx0ZXIoZnVuY3Rpb24oZil7cmV0dXJuLTE8ZS5pbmRleE9mKGYpfSkubGVuZ3RoLGEoYykpOmEoLTE8ZS5pbmRleE9mKGQpKX1lbHNlIGEoITEpfSxfbG9hZEpTT046ZnVuY3Rpb24oYil7ZmV0Y2goIi9qcy9qc29uL2NhdGVnb3JpemVkX2Nvb2tpZXMuanNvbiIpLnRoZW4oZnVuY3Rpb24oYSl7cmV0dXJuIGEuanNvbigpfSkudGhlbihmdW5jdGlvbihhKXtDb29raWVDb25zZW50Ll9jb29raWVzPWEuY29va2llcztDb29raWVDb25zZW50Ll9jYXRlZ29yaWVzPWEuY2F0ZWdvcmllcztpZigiZnVuY3Rpb24iPT09dHlwZW9mIGIpdHJ5e2IoKX1jYXRjaChjKXt9MDxDb29raWVDb25zZW50Ll9yZWdpc3RlcmVkUmVxdWVzdHMubGVuZ3RoJiZDb29raWVDb25zZW50Ll9yZWdpc3RlcmVkUmVxdWVzdHMuZm9yRWFjaChmdW5jdGlvbihjKXt0cnl7YygpfWNhdGNoKGQpe319KX0pfSxfcmVnaXN0ZXJKU09OTG9hZGVkRXZlbnQ6ZnVuY3Rpb24oYil7aWYoImZ1bmN0aW9uIj09PQp0eXBlb2YgYilpZihudWxsIT09Q29va2llQ29uc2VudC5fY29va2llcyl0cnl7YigpfWNhdGNoKGEpe31lbHNlIENvb2tpZUNvbnNlbnQuX3JlZ2lzdGVyZWRSZXF1ZXN0cy5wdXNoKGIpfSxfZ2V0VmVuZG9yQ2F0ZWdvcnk6ZnVuY3Rpb24oYil7aWYobnVsbD09PUNvb2tpZUNvbnNlbnQuX2N1cnJlbnRWZW5kb3Ipe2xldCBjPVtdO09iamVjdC52YWx1ZXMoQ29va2llQ29uc2VudC5fY2F0ZWdvcmllcykuZm9yRWFjaChmdW5jdGlvbihkKXtkLmhhc093blByb3BlcnR5KGIpJiZjLnB1c2goZFtiXSl9KTtyZXR1cm4gY31sZXQgYT1Db29raWVDb25zZW50Ll9jYXRlZ29yaWVzW0Nvb2tpZUNvbnNlbnQuX2N1cnJlbnRWZW5kb3JdO3JldHVybiBhJiZhLmhhc093blByb3BlcnR5KGIpP2FbYl06bnVsbH19O3dpbmRvdy5Db29raWVDb25zZW50LmluaXQoKX0pKCk7Ci8qKiAvbS9qcy92YW5pbGxhanMvY29udGVudExvYWRlci5qcyAqKi8KdmFyIF9fX2QyY19jb250ZW50TG9hZGVyanNfY19vbj0iMjAyNi0wMS0xMiAxMDoxMzoyOSI7J3VzZSBzdHJpY3QnO3ZhciAkanNjb21wPSRqc2NvbXB8fHt9OyRqc2NvbXAuc2NvcGU9e307JGpzY29tcC5BU1NVTUVfRVM1PSExOyRqc2NvbXAuQVNTVU1FX05PX05BVElWRV9NQVA9ITE7JGpzY29tcC5BU1NVTUVfTk9fTkFUSVZFX1NFVD0hMTskanNjb21wLlNJTVBMRV9GUk9VTkRfUE9MWUZJTEw9ITE7JGpzY29tcC5JU09MQVRFX1BPTFlGSUxMUz0hMTskanNjb21wLkZPUkNFX1BPTFlGSUxMX1BST01JU0U9ITE7JGpzY29tcC5GT1JDRV9QT0xZRklMTF9QUk9NSVNFX1dIRU5fTk9fVU5IQU5ETEVEX1JFSkVDVElPTj0hMTskanNjb21wLmRlZmluZVByb3BlcnR5PSRqc2NvbXAuQVNTVU1FX0VTNXx8ImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzP09iamVjdC5kZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbihhLGIsYyl7aWYoYT09QXJyYXkucHJvdG90eXBlfHxhPT1PYmplY3QucHJvdG90eXBlKXJldHVybiBhO2FbYl09Yy52YWx1ZTtyZXR1cm4gYX07CiRqc2NvbXAuZ2V0R2xvYmFsPWZ1bmN0aW9uKGEpe2E9WyJvYmplY3QiPT10eXBlb2YgZ2xvYmFsVGhpcyYmZ2xvYmFsVGhpcyxhLCJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3csIm9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmLCJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWxdO2Zvcih2YXIgYj0wO2I8YS5sZW5ndGg7KytiKXt2YXIgYz1hW2JdO2lmKGMmJmMuTWF0aD09TWF0aClyZXR1cm4gY310aHJvdyBFcnJvcigiQ2Fubm90IGZpbmQgZ2xvYmFsIG9iamVjdCIpO307JGpzY29tcC5nbG9iYWw9JGpzY29tcC5nZXRHbG9iYWwodGhpcyk7JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFPSJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09PXR5cGVvZiBTeW1ib2woIngiKTskanNjb21wLlRSVVNUX0VTNl9QT0xZRklMTFM9ISRqc2NvbXAuSVNPTEFURV9QT0xZRklMTFN8fCRqc2NvbXAuSVNfU1lNQk9MX05BVElWRTskanNjb21wLnBvbHlmaWxscz17fTsKJGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2w9e307JGpzY29tcC5QT0xZRklMTF9QUkVGSVg9IiRqc2NwJCI7dmFyICRqc2NvbXAkbG9va3VwUG9seWZpbGxlZFZhbHVlPWZ1bmN0aW9uKGEsYil7dmFyIGM9JGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbYl07aWYobnVsbD09YylyZXR1cm4gYVtiXTtjPWFbY107cmV0dXJuIHZvaWQgMCE9PWM\/YzphW2JdfTskanNjb21wLnBvbHlmaWxsPWZ1bmN0aW9uKGEsYixjLGQpe2ImJigkanNjb21wLklTT0xBVEVfUE9MWUZJTExTPyRqc2NvbXAucG9seWZpbGxJc29sYXRlZChhLGIsYyxkKTokanNjb21wLnBvbHlmaWxsVW5pc29sYXRlZChhLGIsYyxkKSl9OwokanNjb21wLnBvbHlmaWxsVW5pc29sYXRlZD1mdW5jdGlvbihhLGIsYyxkKXtjPSRqc2NvbXAuZ2xvYmFsO2E9YS5zcGxpdCgiLiIpO2ZvcihkPTA7ZDxhLmxlbmd0aC0xO2QrKyl7dmFyIGU9YVtkXTtpZighKGUgaW4gYykpcmV0dXJuO2M9Y1tlXX1hPWFbYS5sZW5ndGgtMV07ZD1jW2FdO2I9YihkKTtiIT1kJiZudWxsIT1iJiYkanNjb21wLmRlZmluZVByb3BlcnR5KGMsYSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmJ9KX07CiRqc2NvbXAucG9seWZpbGxJc29sYXRlZD1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1hLnNwbGl0KCIuIik7YT0xPT09ZS5sZW5ndGg7ZD1lWzBdO2Q9IWEmJmQgaW4gJGpzY29tcC5wb2x5ZmlsbHM\/JGpzY29tcC5wb2x5ZmlsbHM6JGpzY29tcC5nbG9iYWw7Zm9yKHZhciBmPTA7ZjxlLmxlbmd0aC0xO2YrKyl7dmFyIGc9ZVtmXTtpZighKGcgaW4gZCkpcmV0dXJuO2Q9ZFtnXX1lPWVbZS5sZW5ndGgtMV07Yz0kanNjb21wLklTX1NZTUJPTF9OQVRJVkUmJiJlczYiPT09Yz9kW2VdOm51bGw7Yj1iKGMpO251bGwhPWImJihhPyRqc2NvbXAuZGVmaW5lUHJvcGVydHkoJGpzY29tcC5wb2x5ZmlsbHMsZSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmJ9KTpiIT09YyYmKHZvaWQgMD09PSRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sW2VdJiYoYz0xRTkqTWF0aC5yYW5kb20oKT4+PjAsJGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbZV09JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFPwokanNjb21wLmdsb2JhbC5TeW1ib2woZSk6JGpzY29tcC5QT0xZRklMTF9QUkVGSVgrYysiJCIrZSksJGpzY29tcC5kZWZpbmVQcm9wZXJ0eShkLCRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sW2VdLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Yn0pKSl9OyRqc2NvbXAudW5kZXJzY29yZVByb3RvQ2FuQmVTZXQ9ZnVuY3Rpb24oKXt2YXIgYT17YTohMH0sYj17fTt0cnl7cmV0dXJuIGIuX19wcm90b19fPWEsYi5hfWNhdGNoKGMpe31yZXR1cm4hMX07CiRqc2NvbXAuc2V0UHJvdG90eXBlT2Y9JGpzY29tcC5UUlVTVF9FUzZfUE9MWUZJTExTJiYiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZjokanNjb21wLnVuZGVyc2NvcmVQcm90b0NhbkJlU2V0KCk\/ZnVuY3Rpb24oYSxiKXthLl9fcHJvdG9fXz1iO2lmKGEuX19wcm90b19fIT09Yil0aHJvdyBuZXcgVHlwZUVycm9yKGErIiBpcyBub3QgZXh0ZW5zaWJsZSIpO3JldHVybiBhfTpudWxsOyRqc2NvbXAuYXJyYXlJdGVyYXRvckltcGw9ZnVuY3Rpb24oYSl7dmFyIGI9MDtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYjxhLmxlbmd0aD97ZG9uZTohMSx2YWx1ZTphW2IrK119Ontkb25lOiEwfX19OyRqc2NvbXAuYXJyYXlJdGVyYXRvcj1mdW5jdGlvbihhKXtyZXR1cm57bmV4dDokanNjb21wLmFycmF5SXRlcmF0b3JJbXBsKGEpfX07CiRqc2NvbXAubWFrZUl0ZXJhdG9yPWZ1bmN0aW9uKGEpe3ZhciBiPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3ImJmFbU3ltYm9sLml0ZXJhdG9yXTtyZXR1cm4gYj9iLmNhbGwoYSk6JGpzY29tcC5hcnJheUl0ZXJhdG9yKGEpfTskanNjb21wLmdlbmVyYXRvcj17fTskanNjb21wLmdlbmVyYXRvci5lbnN1cmVJdGVyYXRvclJlc3VsdElzT2JqZWN0Xz1mdW5jdGlvbihhKXtpZighKGEgaW5zdGFuY2VvZiBPYmplY3QpKXRocm93IG5ldyBUeXBlRXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCAiK2ErIiBpcyBub3QgYW4gb2JqZWN0Iik7fTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dD1mdW5jdGlvbigpe3RoaXMuaXNSdW5uaW5nXz0hMTt0aGlzLnlpZWxkQWxsSXRlcmF0b3JfPW51bGw7dGhpcy55aWVsZFJlc3VsdD12b2lkIDA7dGhpcy5uZXh0QWRkcmVzcz0xO3RoaXMuZmluYWxseUFkZHJlc3NfPXRoaXMuY2F0Y2hBZGRyZXNzXz0wO3RoaXMuZmluYWxseUNvbnRleHRzXz10aGlzLmFicnVwdENvbXBsZXRpb25fPW51bGx9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnN0YXJ0Xz1mdW5jdGlvbigpe2lmKHRoaXMuaXNSdW5uaW5nXyl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7dGhpcy5pc1J1bm5pbmdfPSEwfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5zdG9wXz1mdW5jdGlvbigpe3RoaXMuaXNSdW5uaW5nXz0hMX07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmp1bXBUb0Vycm9ySGFuZGxlcl89ZnVuY3Rpb24oKXt0aGlzLm5leHRBZGRyZXNzPXRoaXMuY2F0Y2hBZGRyZXNzX3x8dGhpcy5maW5hbGx5QWRkcmVzc199OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLm5leHRfPWZ1bmN0aW9uKGEpe3RoaXMueWllbGRSZXN1bHQ9YX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUudGhyb3dfPWZ1bmN0aW9uKGEpe3RoaXMuYWJydXB0Q29tcGxldGlvbl89e2V4Y2VwdGlvbjphLGlzRXhjZXB0aW9uOiEwfTt0aGlzLmp1bXBUb0Vycm9ySGFuZGxlcl8oKX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUucmV0dXJuPWZ1bmN0aW9uKGEpe3RoaXMuYWJydXB0Q29tcGxldGlvbl89e3JldHVybjphfTt0aGlzLm5leHRBZGRyZXNzPXRoaXMuZmluYWxseUFkZHJlc3NffTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuanVtcFRocm91Z2hGaW5hbGx5QmxvY2tzPWZ1bmN0aW9uKGEpe3RoaXMuYWJydXB0Q29tcGxldGlvbl89e2p1bXBUbzphfTt0aGlzLm5leHRBZGRyZXNzPXRoaXMuZmluYWxseUFkZHJlc3NffTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS55aWVsZD1mdW5jdGlvbihhLGIpe3RoaXMubmV4dEFkZHJlc3M9YjtyZXR1cm57dmFsdWU6YX19OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnlpZWxkQWxsPWZ1bmN0aW9uKGEsYil7YT0kanNjb21wLm1ha2VJdGVyYXRvcihhKTt2YXIgYz1hLm5leHQoKTskanNjb21wLmdlbmVyYXRvci5lbnN1cmVJdGVyYXRvclJlc3VsdElzT2JqZWN0XyhjKTtpZihjLmRvbmUpdGhpcy55aWVsZFJlc3VsdD1jLnZhbHVlLHRoaXMubmV4dEFkZHJlc3M9YjtlbHNlIHJldHVybiB0aGlzLnlpZWxkQWxsSXRlcmF0b3JfPWEsdGhpcy55aWVsZChjLnZhbHVlLGIpfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuanVtcFRvPWZ1bmN0aW9uKGEpe3RoaXMubmV4dEFkZHJlc3M9YX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuanVtcFRvRW5kPWZ1bmN0aW9uKCl7dGhpcy5uZXh0QWRkcmVzcz0wfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5zZXRDYXRjaEZpbmFsbHlCbG9ja3M9ZnVuY3Rpb24oYSxiKXt0aGlzLmNhdGNoQWRkcmVzc189YTt2b2lkIDAhPWImJih0aGlzLmZpbmFsbHlBZGRyZXNzXz1iKX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuc2V0RmluYWxseUJsb2NrPWZ1bmN0aW9uKGEpe3RoaXMuY2F0Y2hBZGRyZXNzXz0wO3RoaXMuZmluYWxseUFkZHJlc3NfPWF8fDB9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmxlYXZlVHJ5QmxvY2s9ZnVuY3Rpb24oYSxiKXt0aGlzLm5leHRBZGRyZXNzPWE7dGhpcy5jYXRjaEFkZHJlc3NfPWJ8fDB9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5lbnRlckNhdGNoQmxvY2s9ZnVuY3Rpb24oYSl7dGhpcy5jYXRjaEFkZHJlc3NfPWF8fDA7YT10aGlzLmFicnVwdENvbXBsZXRpb25fLmV4Y2VwdGlvbjt0aGlzLmFicnVwdENvbXBsZXRpb25fPW51bGw7cmV0dXJuIGF9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmVudGVyRmluYWxseUJsb2NrPWZ1bmN0aW9uKGEsYixjKXtjP3RoaXMuZmluYWxseUNvbnRleHRzX1tjXT10aGlzLmFicnVwdENvbXBsZXRpb25fOnRoaXMuZmluYWxseUNvbnRleHRzXz1bdGhpcy5hYnJ1cHRDb21wbGV0aW9uX107dGhpcy5jYXRjaEFkZHJlc3NfPWF8fDA7dGhpcy5maW5hbGx5QWRkcmVzc189Ynx8MH07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmxlYXZlRmluYWxseUJsb2NrPWZ1bmN0aW9uKGEsYil7Yj10aGlzLmZpbmFsbHlDb250ZXh0c18uc3BsaWNlKGJ8fDApWzBdO2lmKGI9dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz10aGlzLmFicnVwdENvbXBsZXRpb25ffHxiKXtpZihiLmlzRXhjZXB0aW9uKXJldHVybiB0aGlzLmp1bXBUb0Vycm9ySGFuZGxlcl8oKTt2b2lkIDAhPWIuanVtcFRvJiZ0aGlzLmZpbmFsbHlBZGRyZXNzXzxiLmp1bXBUbz8odGhpcy5uZXh0QWRkcmVzcz1iLmp1bXBUbyx0aGlzLmFicnVwdENvbXBsZXRpb25fPW51bGwpOnRoaXMubmV4dEFkZHJlc3M9dGhpcy5maW5hbGx5QWRkcmVzc199ZWxzZSB0aGlzLm5leHRBZGRyZXNzPWF9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmZvckluPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5Qcm9wZXJ0eUl0ZXJhdG9yKGEpfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5Qcm9wZXJ0eUl0ZXJhdG9yPWZ1bmN0aW9uKGEpe3RoaXMub2JqZWN0Xz1hO3RoaXMucHJvcGVydGllc189W107Zm9yKHZhciBiIGluIGEpdGhpcy5wcm9wZXJ0aWVzXy5wdXNoKGIpO3RoaXMucHJvcGVydGllc18ucmV2ZXJzZSgpfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LlByb3BlcnR5SXRlcmF0b3IucHJvdG90eXBlLmdldE5leHQ9ZnVuY3Rpb24oKXtmb3IoOzA8dGhpcy5wcm9wZXJ0aWVzXy5sZW5ndGg7KXt2YXIgYT10aGlzLnByb3BlcnRpZXNfLnBvcCgpO2lmKGEgaW4gdGhpcy5vYmplY3RfKXJldHVybiBhfXJldHVybiBudWxsfTskanNjb21wLmdlbmVyYXRvci5FbmdpbmVfPWZ1bmN0aW9uKGEpe3RoaXMuY29udGV4dF89bmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQ7dGhpcy5wcm9ncmFtXz1hfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUubmV4dF89ZnVuY3Rpb24oYSl7dGhpcy5jb250ZXh0Xy5zdGFydF8oKTtpZih0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfKXJldHVybiB0aGlzLnlpZWxkQWxsU3RlcF8odGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXy5uZXh0LGEsdGhpcy5jb250ZXh0Xy5uZXh0Xyk7dGhpcy5jb250ZXh0Xy5uZXh0XyhhKTtyZXR1cm4gdGhpcy5uZXh0U3RlcF8oKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLnJldHVybl89ZnVuY3Rpb24oYSl7dGhpcy5jb250ZXh0Xy5zdGFydF8oKTt2YXIgYj10aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfO2lmKGIpcmV0dXJuIHRoaXMueWllbGRBbGxTdGVwXygicmV0dXJuImluIGI\/YlsicmV0dXJuIl06ZnVuY3Rpb24oYyl7cmV0dXJue3ZhbHVlOmMsZG9uZTohMH19LGEsdGhpcy5jb250ZXh0Xy5yZXR1cm4pO3RoaXMuY29udGV4dF8ucmV0dXJuKGEpO3JldHVybiB0aGlzLm5leHRTdGVwXygpfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUudGhyb3dfPWZ1bmN0aW9uKGEpe3RoaXMuY29udGV4dF8uc3RhcnRfKCk7aWYodGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXylyZXR1cm4gdGhpcy55aWVsZEFsbFN0ZXBfKHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl9bInRocm93Il0sYSx0aGlzLmNvbnRleHRfLm5leHRfKTt0aGlzLmNvbnRleHRfLnRocm93XyhhKTtyZXR1cm4gdGhpcy5uZXh0U3RlcF8oKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLnlpZWxkQWxsU3RlcF89ZnVuY3Rpb24oYSxiLGMpe3RyeXt2YXIgZD1hLmNhbGwodGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXyxiKTskanNjb21wLmdlbmVyYXRvci5lbnN1cmVJdGVyYXRvclJlc3VsdElzT2JqZWN0XyhkKTtpZighZC5kb25lKXJldHVybiB0aGlzLmNvbnRleHRfLnN0b3BfKCksZDt2YXIgZT1kLnZhbHVlfWNhdGNoKGYpe3JldHVybiB0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfPW51bGwsdGhpcy5jb250ZXh0Xy50aHJvd18oZiksdGhpcy5uZXh0U3RlcF8oKX10aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfPW51bGw7Yy5jYWxsKHRoaXMuY29udGV4dF8sZSk7cmV0dXJuIHRoaXMubmV4dFN0ZXBfKCl9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS5uZXh0U3RlcF89ZnVuY3Rpb24oKXtmb3IoO3RoaXMuY29udGV4dF8ubmV4dEFkZHJlc3M7KXRyeXt2YXIgYT10aGlzLnByb2dyYW1fKHRoaXMuY29udGV4dF8pO2lmKGEpcmV0dXJuIHRoaXMuY29udGV4dF8uc3RvcF8oKSx7dmFsdWU6YS52YWx1ZSxkb25lOiExfX1jYXRjaChiKXt0aGlzLmNvbnRleHRfLnlpZWxkUmVzdWx0PXZvaWQgMCx0aGlzLmNvbnRleHRfLnRocm93XyhiKX10aGlzLmNvbnRleHRfLnN0b3BfKCk7aWYodGhpcy5jb250ZXh0Xy5hYnJ1cHRDb21wbGV0aW9uXyl7YT10aGlzLmNvbnRleHRfLmFicnVwdENvbXBsZXRpb25fO3RoaXMuY29udGV4dF8uYWJydXB0Q29tcGxldGlvbl89bnVsbDtpZihhLmlzRXhjZXB0aW9uKXRocm93IGEuZXhjZXB0aW9uO3JldHVybnt2YWx1ZTphLnJldHVybixkb25lOiEwfX1yZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fTsKJGpzY29tcC5nZW5lcmF0b3IuR2VuZXJhdG9yXz1mdW5jdGlvbihhKXt0aGlzLm5leHQ9ZnVuY3Rpb24oYil7cmV0dXJuIGEubmV4dF8oYil9O3RoaXMudGhyb3c9ZnVuY3Rpb24oYil7cmV0dXJuIGEudGhyb3dfKGIpfTt0aGlzLnJldHVybj1mdW5jdGlvbihiKXtyZXR1cm4gYS5yZXR1cm5fKGIpfTt0aGlzW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc319OyRqc2NvbXAuZ2VuZXJhdG9yLmNyZWF0ZUdlbmVyYXRvcj1mdW5jdGlvbihhLGIpe2I9bmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkdlbmVyYXRvcl8obmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8oYikpOyRqc2NvbXAuc2V0UHJvdG90eXBlT2YmJmEucHJvdG90eXBlJiYkanNjb21wLnNldFByb3RvdHlwZU9mKGIsYS5wcm90b3R5cGUpO3JldHVybiBifTsKJGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yPWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoZCl7cmV0dXJuIGEubmV4dChkKX1mdW5jdGlvbiBjKGQpe3JldHVybiBhLnRocm93KGQpfXJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihkLGUpe2Z1bmN0aW9uIGYoZyl7Zy5kb25lP2QoZy52YWx1ZSk6UHJvbWlzZS5yZXNvbHZlKGcudmFsdWUpLnRoZW4oYixjKS50aGVuKGYsZSl9ZihhLm5leHQoKSl9KX07JGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24oYSl7cmV0dXJuICRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvcihhKCkpfTskanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3JQcm9ncmFtPWZ1bmN0aW9uKGEpe3JldHVybiAkanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3IobmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkdlbmVyYXRvcl8obmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8oYSkpKX07CmNvbnN0IGNvbnRlbnRCbG9ja3M9KCk9Pntjb25zdCBhPWI9PiRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvckZ1bmN0aW9uKGZ1bmN0aW9uKigpe3ZhciBjPWIuZGF0YXNldCxkLGU9bnVsbD09KGQ9Yi5xdWVyeVNlbGVjdG9yKCdpbnB1dFtuYW1lPSJibG9jay1kYXRhIl0nKSk\/dm9pZCAwOmQudmFsdWU7ZD0iRlJFTkNIIj09ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbHVlPyJmciI6ImVuIjtjPU9iamVjdC5hc3NpZ24oe30sYyx7ZGF0YTplfHwie30ifSk7Yz15aWVsZCh5aWVsZCBmZXRjaChgLyR7ZW5jb2RlVVJJQ29tcG9uZW50KGQpfS9hamF4L2dldFNrZWxldG9uQ29udGVudGAse21ldGhvZDoiUE9TVCIsaGVhZGVyczp7QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uIiwiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyIsY2hhcnNldDoiVVRGLTgifSxib2R5Om5ldyBVUkxTZWFyY2hQYXJhbXMoYyl9KSkuanNvbigpOwppZigidW5kZWZpbmVkIiE9dHlwZW9mIGMuc3RhdHVzJiYic3VjY2VzcyI9PWMuc3RhdHVzKWlmKGM9Yy5jb250ZW50LDE+Yy5sZW5ndGgpYi5yZXBsYWNlV2l0aCgiIik7ZWxzZXtjPWRvY3VtZW50LmNyZWF0ZVJhbmdlKCkuY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KGMpLmNoaWxkcmVuWzBdO3ZhciBmO2U9bnVsbD09KGY9Yi5kYXRhc2V0KT92b2lkIDA6Zi5jYWxsYmFjaztiLnBhcmVudEVsZW1lbnQuZGF0YXNldC5sb2FkZWQ9IjEiO2IucmVwbGFjZVdpdGgoYyk7ZSYmImZ1bmN0aW9uIj09PXR5cGVvZiBoYW5kbGVyc1tlXSYmaGFuZGxlcnNbZV0oYykuaW5pdCgpfX0pO2hhbmRsZXJzPXtwYXltZW50Q2FsY0Jsb2NrOmI9Pntjb25zdCBjPWIuY2xvc2VzdCgiLmRpdkNhclNpbmdsZUlubmVyQm94Iik7cmV0dXJue2luaXQ6KCk9PnskKGIpLmZpbmQoIi5wYXltZW50VG9vbHRpcCIpLmVhY2goZnVuY3Rpb24oKXt0cnl7dmFyIGQ9JCh0aGlzKS5hdHRyKCJkYXRhLXRvb2x0aXAiKTsKJCh0aGlzKS5kYXJrVG9vbHRpcCh7Y29udGVudDpkLGdyYXZpdHk6ImVhc3QiLHRoZW1lOiJsaWdodCIsdHJpZ2dlcjoiY2xpY2siLGFuaW1hdGlvbjoiZmxpcEluIn0pfWNhdGNoKGUpe319KTtiLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZW50ZXIiLGZ1bmN0aW9uKGQpe2Quc3RvcFByb3BhZ2F0aW9uKCk7aWYoYi5kYXRhc2V0LnRvb2x0aXBDcmVhdGVkKXJldHVybiExO2IuZGF0YXNldC50b29sdGlwQ3JlYXRlZD0iMSI7JChkLmN1cnJlbnRUYXJnZXQucXVlcnlTZWxlY3RvcigiLmNhci1maW5hbmNlLWluZm8iKSkuZGFya1Rvb2x0aXAoe2dyYXZpdHk6Indlc3QiLHRoZW1lOiJsaWdodCIsdHJpZ2dlcjoiaG92ZXIiLGFuaW1hdGlvbjoiZmxpcEluIn0pfSk7Yi5xdWVyeVNlbGVjdG9yKCIuY2FyLWZpbmFuY2UtaW5mbyIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbihkKXtkLnByZXZlbnREZWZhdWx0KCk7aWYoIWMpcmV0dXJuITE7ZD1jLnF1ZXJ5U2VsZWN0b3IoIi5kaXZDYXJUaXRsZUNvbnRhaW5lciBhIikuaHJlZjsKd2luZG93Lm9wZW4oZCwiX3NlbGYiKX0pfX19fTtyZXR1cm57c2V0QmxvY2tPYnNlcnZlcjooKT0+e2NvbnN0IGI9bmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGQ9PntkLmZvckVhY2goZT0+e2UuaXNJbnRlcnNlY3RpbmcmJihlLnRhcmdldC5jbGFzc0xpc3QuYWRkKCJhY3RpdmUiKSxiLnVub2JzZXJ2ZShlLnRhcmdldCksY29uc29sZS5sb2coInNrZWxldG9uIG9ic2VydmVkICIrZS50YXJnZXQpLGEoZS50YXJnZXQpKX0pfSx7dGhyZXNob2xkOi4xfSksYz1uZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5jb250ZW50LXNrZWxldG9uIikuZm9yRWFjaChkPT57Yi5vYnNlcnZlKGQpOyJza2VsZXRvbiI9PT1jLmdldCgiZGVidWciKSYmZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmNvbnRlbnQtc2tlbGV0b24iKS5mb3JFYWNoKGU9PmUuY2xhc3NMaXN0LmFkZCgiZGVidWciKSl9KX0saGFuZGxlcnN9fTsKZG9jUmVhZHlBcnIucHVzaCgoKT0+eyJmdW5jdGlvbiI9PT10eXBlb2YgY29udGVudEJsb2NrcyYmY29udGVudEJsb2NrcygpLnNldEJsb2NrT2JzZXJ2ZXIoKX0pOwovKiogL20vanMvdmFuaWxsYWpzL2Nvb2tpZXMuanMgKiovCnZhciBfX19kMmNfY29va2llc2pzX2Nfb249IjIwMjYtMDEtMTIgMTA6MTM6MjUiOyd1c2Ugc3RyaWN0JzsoZnVuY3Rpb24oKXtmdW5jdGlvbiBsKGEsYyxiLGgsZCxmLGUpe3ZhciBnPSIiO2lmKGIpe2xldCBrPW5ldyBEYXRlO2suc2V0RnVsbFllYXIoay5nZXRGdWxsWWVhcigpKzEpO3N3aXRjaChiLmNvbnN0cnVjdG9yKXtjYXNlIE51bWJlcjozNjU8YiYmKGI9MzY1KTtnPW5ldyBEYXRlO2cuc2V0RGF0ZShnLmdldERhdGUoKStiKTtnPUluZmluaXR5PT09Yj8iOyBleHBpcmVzPUZyaSwgMzEgRGVjIDk5OTkgMjM6NTk6NTkgR01UIjoiOyBleHBpcmVzPSIrZy50b1VUQ1N0cmluZygpO2JyZWFrO2Nhc2UgU3RyaW5nOm5ldyBEYXRlKGIpPmsmJihiPWsudG9VVENTdHJpbmcoKSk7Zz0iOyBleHBpcmVzPSIrYjticmVhaztjYXNlIERhdGU6Yj5rJiYoYj1rKSxnPSI7IGV4cGlyZXM9IitiLnRvVVRDU3RyaW5nKCl9fSJ1bmRlZmluZWQiPT09dHlwZW9mIGYmJihmPSJodHRwczoiPT09d2luZG93LmxvY2F0aW9uLnByb3RvY29sKTtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGEpKwoiPSIrZW5jb2RlVVJJQ29tcG9uZW50KGMpK2crKGQ\/IjsgZG9tYWluPSIrZDoiIikrKGg\/IjsgcGF0aD0iK2g6IiIpKyhmPyI7IHNlY3VyZSI6IiIpKyhlJiYibm9fcmVzdHJpY3Rpb24iIT09ZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk\/ImxheCI9PT1lLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKXx8MT09PU1hdGguY2VpbChlKXx8ITA9PT1lPyI7IHNhbWVzaXRlPWxheCI6Im5vbmUiPT09ZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCl8fDA+ZT8iOyBzYW1lc2l0ZT1ub25lIjoiOyBzYW1lc2l0ZT1zdHJpY3QiOiIiKX1mdW5jdGlvbiBtKGEsYyl7aWYoInVuZGVmaW5lZCI9PT10eXBlb2YgYXx8bnVsbD09PWEpcmV0dXJuLTE7c3dpdGNoKGEuY29uc3RydWN0b3Ipe2Nhc2UgTnVtYmVyOmlmKCJudW1iZXIiPT09Yyl2YXIgYj04NjQwMCphO2Vsc2UgYj1uZXcgRGF0ZSxiLnNldERhdGUoYi5nZXREYXRlKCkrYSksYj1JbmZpbml0eT09PWE\/IkZyaSwgMzEgRGVjIDk5OTkgMjM6NTk6NTkgR01UIjoKYi50b1VUQ1N0cmluZygpO2JyZWFrO2Nhc2UgU3RyaW5nOiJzdHJpbmciPT09Yz9iPWE6KGI9bmV3IERhdGUsYj0oKG5ldyBEYXRlKGEpKS5nZXRUaW1lKCktYi5nZXRUaW1lKCkpLzFFMyk7YnJlYWs7Y2FzZSBEYXRlOiJzdHJpbmciPT09Yz9iPWEudG9VVENTdHJpbmcoKTooYj1uZXcgRGF0ZSxiPShhLmdldFRpbWUoKS1iLmdldFRpbWUoKSkvMUUzKX0ibnVtYmVyIj09PWMmJihiPU1hdGgucm91bmQoYikpO3JldHVybiBifXZhciBuPS9bXC1cLlwrXCpdL2cscD0vXig\/OmV4cGlyZXN8bWF4XC1hZ2V8cGF0aHxkb21haW58c2VjdXJlfHNhbWVzaXRlfGh0dHBvbmx5KSQvaSxxPSJ1dG1fY2FtcGFpZ24gdXRtX2tleXdvcmQgdXRtX2xhbmRpbmcgdXRtX2xhbmRpbmdfZm9vdGVyIHV0bV9tZWRpdW0gdXRtX3NvdXJjZSB1dG1fY2FtcGFpZ25fcmV0YXJnZXRpbmcgdXRtX3NvdXJjZV9yZXRhcmdldGluZyBEaXNwbGF5U291cmNlVVRNQ2FtcGFpZ24gRGlzcGxheVNvdXJjZVVUTVNvdXJjZSIuc3BsaXQoIiAiKTsKd2luZG93LkNvb2tpZXM9e2dldDpmdW5jdGlvbihhKXtyZXR1cm4gYT9kZWNvZGVVUklDb21wb25lbnQoZG9jdW1lbnQuY29va2llLnJlcGxhY2UobmV3IFJlZ0V4cCgiKD86KD86XnwuKjspXFxzKiIrZW5jb2RlVVJJQ29tcG9uZW50KGEpLnJlcGxhY2UobiwiXFwkJiIpKyJcXHMqXFw9XFxzKihbXjtdKikuKiQpfF4uKiQiKSwiJDEiKSl8fG51bGw6bnVsbH0sc2V0OmZ1bmN0aW9uKGEsYyxiLGgsZCxmLGUpe3JldHVybiFhfHxwLnRlc3QoYSk\/ITE6Q29va2llcy5pc0Nvb2tpZUFsbG93ZWQoYSxmdW5jdGlvbihnKXtkPWQ\/ZDoiIjtmPW51bGw9PWY\/ITA6ZjtlPW51bGw9PWU\/Ik5vbmUiOmU7Q29va2llcy5sb2coYSxjLGIsaCxkKTtpZighZylyZXR1cm4tMTxxLmluZGV4T2YoYSkmJm51bGw9PUNvb2tpZXMuZ2V0KCJkMmNfY29va2llX2NvbnNlbnQiKSYmKGc9c2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgiZDJjX2NvbnNlbnRfd2FpdCIpLGc9bnVsbCE9Zz9KU09OLnBhcnNlKGF0b2IoZykpOgp7fSxnW2FdPXtrZXk6YSx2YWx1ZTpjLGV4cGlyZXM6YixwYXRoOmgsZG9tYWluOmR9LHV0bUNvb2tpZXNTdG9yYWdlSlNPTj1KU09OLnN0cmluZ2lmeShnKSxzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCJkMmNfY29uc2VudF93YWl0IixidG9hKHV0bUNvb2tpZXNTdG9yYWdlSlNPTikpKSxDb29raWVzLnJlbW92ZShhLGgsZCxmLGUpLCExO2RvY3VtZW50LmNvb2tpZT1sKGEsYyxiLGgsZCxmLGUpO3JldHVybiEwfSl9LHJlbW92ZTpmdW5jdGlvbihhLGMsYixoLGQpe2lmKCF0aGlzLmhhcyhhKSlyZXR1cm4hMTtkb2N1bWVudC5jb29raWU9bChhLCIiLCJUaHUsIDAxIEphbiAxOTcwIDAwOjAwOjAwIEdNVCIsYyxiLGgsZCk7cmV0dXJuITB9LGhhczpmdW5jdGlvbihhKXtyZXR1cm4hYXx8cC50ZXN0KGEpPyExOihuZXcgUmVnRXhwKCIoPzpefDtcXHMqKSIrZW5jb2RlVVJJQ29tcG9uZW50KGEpLnJlcGxhY2UobiwiXFwkJiIpKyJcXHMqXFw9IikpLnRlc3QoZG9jdW1lbnQuY29va2llKX0sCmtleXM6ZnVuY3Rpb24oKXtmb3IodmFyIGE9ZG9jdW1lbnQuY29va2llLnJlcGxhY2UoLygoPzpefFxzKjspW149XSspKD89O3wkKXxeXHMqfFxzKig\/Oj1bXjtdKik\/KD86XDF8JCkvZywiIikuc3BsaXQoL1xzKig\/Oj1bXjtdKik\/O1xzKi8pLGM9YS5sZW5ndGgsYj0wO2I8YztiKyspYVtiXT1kZWNvZGVVUklDb21wb25lbnQoYVtiXSk7cmV0dXJuIGF9LGNsZWFyOmZ1bmN0aW9uKGEsYyxiLGgpe2Zvcih2YXIgZD10aGlzLmtleXMoKSxmPWQubGVuZ3RoLGU9MDtlPGY7ZSsrKXRoaXMucmVtb3ZlSXRlbShkW2VdLGEsYyxiLGgpfSxsb2c6ZnVuY3Rpb24oYSxjLGIsaCxkLGYpeyJ1bmRlZmluZWQiPT09dHlwZW9mIGYmJihmPTUpOyJ1bmRlZmluZWQiPT09dHlwZW9mIHdpbmRvdy5Db29raWVMb2dnZXI\/ZiYmc2V0VGltZW91dChmdW5jdGlvbigpe0Nvb2tpZXMubG9nKGEsYyxiLGgsZCxmLTEpfSwxRTMpOndpbmRvdy5Db29raWVMb2dnZXIubG9nKGEsYyxiLGgsZCl9LGlzQ29va2llQWxsb3dlZDpmdW5jdGlvbihhLApjKXtyZXR1cm4idW5kZWZpbmVkIj09PXR5cGVvZiB3aW5kb3cuQ29va2llQ29uc2VudHx8InVuZGVmaW5lZCI9PT10eXBlb2Ygd2luZG93LkNvb2tpZUNvbnNlbnQuaXNDb29raWVBbGxvd2VkP2MoITApOndpbmRvdy5Db29raWVDb25zZW50LmlzQ29va2llQWxsb3dlZChhLGMpfX07d2luZG93LkNvb2tpZUxvZ2dlcj17X3N0YWNrOltdLGluaXQ6ZnVuY3Rpb24oKXtsZXQgYT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGVhbGVyUHJvdmluY2VDb2RlIik7YSYmIlFDIj09bmV3IFN0cmluZyhhLnZhbHVlKSYmMT09TWF0aC5mbG9vcigzKk1hdGgucmFuZG9tKCkpJiZmZXRjaCgiL3Byb3h5X3JkMmMvZDJjYXBpL2xvZy9jb29raWVzL2FjdGl2ZSIpLnRoZW4oZnVuY3Rpb24oYyl7cmV0dXJuIGMuanNvbigpfSkudGhlbihmdW5jdGlvbihjKXsiYWN0aXZlIj09PWMuc3RhdHVzJiZDb29raWVMb2dnZXIud2FpdFN0YWNrKCl9KX0sbG9nOmZ1bmN0aW9uKGEsYyxiLGgsZCl7aWYoImxpdmUiPT09CndpbmRvdy5kZXBsb3ltZW50VHlwZS50b0xvd2VyQ2FzZSgpKXtkZWJ1ZygiTG9nZ2luZyBjb29raWU6Iix7bmFtZTphLHZhbHVlOmN8fCIiLGR1cmF0aW9uOm0oYiwibnVtYmVyIikscGF0aDpoLGRvbWFpbjpkfSk7dmFyIGYsZSxnPSJ1bmRlZmluZWQiIT10eXBlb2YgY3VycmVudFNpdGVJRD9jdXJyZW50U2l0ZUlEOm51bGwhPShlPW51bGw9PShmPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaXRlSUQiKSk\/dm9pZCAwOmYudmFsdWUpP2U6IiI7dGhpcy5fc3RhY2sucHVzaCh7bmFtZTphLGR1cmF0aW9uOm0oYiwibnVtYmVyIikscGF0aDpofHwiLyIsZG9tYWluOmR8fHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSx1cmk6d2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLHNpdGVpZDpnLHZhbHVlOmJ0b2EoYyl9KX19LF9zZW5kU3RhY2s6ZnVuY3Rpb24oKXtpZigwIT09dGhpcy5fc3RhY2subGVuZ3RoKXt2YXIgYT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29va2llTG9nVG9rZW4iKT8KZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvb2tpZUxvZ1Rva2VuIikudmFsdWU6bnVsbDtpZihhKXt2YXIgYz0idW5kZWZpbmVkIiE9dHlwZW9mIGN1cnJlbnRTaXRlSUQ\/Y3VycmVudFNpdGVJRDpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2l0ZUlEIik\/ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNpdGVJRCIpLnZhbHVlOiIiOyhuZXcgV29ya2VyKCIvanMvdmFuaWxsYWpzL2Nvb2tpZVdvcmtlci5qcyIpKS5wb3N0TWVzc2FnZSh7dG9rZW46YSxzaXRlSUQ6YyxzdGFjazpDb29raWVMb2dnZXIuX3N0YWNrfSk7Q29va2llTG9nZ2VyLl9zdGFjaz1bXX1lbHNlIGRlYnVnKCJObyBjb29raWUgbG9nIHRva2VuIGZvdW5kLiIpfX0sd2FpdFN0YWNrOmZ1bmN0aW9uKCl7ImxpdmUiPT09d2luZG93LmRlcGxveW1lbnRUeXBlLnRvTG93ZXJDYXNlKCkmJihzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Q29va2llTG9nZ2VyLl9zZW5kU3RhY2soKX0sMUU0KSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiYmVmb3JldW5sb2FkIiwKZnVuY3Rpb24oKXtDb29raWVMb2dnZXIuX3NlbmRTdGFjaygpfSkpfX07d2luZG93LkNvb2tpZUxvZ2dlci5pbml0KCl9KSgpOwovKiogL20vanMvanF1ZXJ5LmJhc2U2NC5qcyAqKi8KdmFyIF9fX2QyY19qcXVlcnliYXNlNjRqc19jX29uPSIyMDI1LTA1LTIzIDE3OjA5OjI0IjsndXNlIHN0cmljdCc7dmFyIF9fX2QyY19qcXVlcnliYXNlNjRqc19jX29uPSIyMDI0LTAxLTMxIDE0OjM1OjQ4IjsidXNlIHN0cmljdCI7X19fZDJjX2pxdWVyeWJhc2U2NGpzX2Nfb249IjIwMjMtMDEtMTIgMTE6MzU6NTgiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfanF1ZXJ5YmFzZTY0anNfY19vbj0iMjAyMy0wMS0xMiAxMDo0NTozOSI7InVzZSBzdHJpY3QiO19fX2QyY19qcXVlcnliYXNlNjRqc19jX29uPSIyMDIxLTEyLTE1IDEyOjQzOjM0IjsidXNlIHN0cmljdCI7CmpRdWVyeS5iYXNlNjQ9ZnVuY3Rpb24oayl7ZnVuY3Rpb24gZShhLGMpe2E9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iLmluZGV4T2YoYS5jaGFyQXQoYykpO2lmKC0xPT09YSl0aHJvdyJDYW5ub3QgZGVjb2RlIGJhc2U2NCI7cmV0dXJuIGF9ZnVuY3Rpb24gaChhLGMpe2E9YS5jaGFyQ29kZUF0KGMpO2lmKDI1NTxhKXRocm93IklOVkFMSURfQ0hBUkFDVEVSX0VSUjogRE9NIEV4Y2VwdGlvbiA1IjtyZXR1cm4gYX1yZXR1cm57ZGVjb2RlOmZ1bmN0aW9uKGEpe3ZhciBjPTAsYixmPWEubGVuZ3RoLGQ9W107YT1TdHJpbmcoYSk7aWYoMD09PWYpcmV0dXJuIGE7aWYoMCE9PWYlNCl0aHJvdyJDYW5ub3QgZGVjb2RlIGJhc2U2NCI7Ij0iPT09YS5jaGFyQXQoZi0xKSYmKGM9MSwiPSI9PT1hLmNoYXJBdChmLTIpJiYoYz0yKSxmLT00KTtmb3IoYj0wO2I8ZjtiKz00KXt2YXIgZz1lKGEsYik8PDE4fGUoYSxiKzEpPDwKMTJ8ZShhLGIrMik8PDZ8ZShhLGIrMyk7ZC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoZz4+MTYsZz4+OCYyNTUsZyYyNTUpKX1zd2l0Y2goYyl7Y2FzZSAxOmc9ZShhLGIpPDwxOHxlKGEsYisxKTw8MTJ8ZShhLGIrMik8PDY7ZC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoZz4+MTYsZz4+OCYyNTUpKTticmVhaztjYXNlIDI6Zz1lKGEsYik8PDE4fGUoYSxiKzEpPDwxMixkLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShnPj4xNikpfXJldHVybiBkLmpvaW4oIiIpfSxlbmNvZGU6ZnVuY3Rpb24oYSl7aWYoMSE9PWFyZ3VtZW50cy5sZW5ndGgpdGhyb3ciU3ludGF4RXJyb3I6IGV4YWN0bHkgb25lIGFyZ3VtZW50IHJlcXVpcmVkIjthPVN0cmluZyhhKTt2YXIgYyxiPVtdLGY9YS5sZW5ndGgtYS5sZW5ndGglMztpZigwPT09YS5sZW5ndGgpcmV0dXJuIGE7Zm9yKGM9MDtjPGY7Yys9Myl7dmFyIGQ9aChhLGMpPDwxNnxoKGEsYysxKTw8OHxoKGEsYysyKTtiLnB1c2goIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iLmNoYXJBdChkPj4KMTgpKTtiLnB1c2goIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iLmNoYXJBdChkPj4xMiY2MykpO2IucHVzaCgiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyIuY2hhckF0KGQ+PjYmNjMpKTtiLnB1c2goIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iLmNoYXJBdChkJjYzKSl9c3dpdGNoKGEubGVuZ3RoLWYpe2Nhc2UgMTpkPWgoYSxjKTw8MTY7Yi5wdXNoKCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIi5jaGFyQXQoZD4+MTgpKyJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIi5jaGFyQXQoZD4+MTImNjMpKyI9PSIpO2JyZWFrO2Nhc2UgMjpkPQpoKGEsYyk8PDE2fGgoYSxjKzEpPDw4LGIucHVzaCgiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyIuY2hhckF0KGQ+PjE4KSsiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyIuY2hhckF0KGQ+PjEyJjYzKSsiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyIuY2hhckF0KGQ+PjYmNjMpKyI9Iil9cmV0dXJuIGIuam9pbigiIil9LFZFUlNJT046IjEuMCJ9fShqUXVlcnkpOwovKiogL20vanMvanF1ZXJ5LmRhcmt0b29sdGlwLmpzICoqLwp2YXIgX19fZDJjX2pxdWVyeWRhcmt0b29sdGlwanNfY19vbj0iMjAyNS0wNS0yMyAxNzowOTo0OCI7J3VzZSBzdHJpY3QnO3ZhciBfX19kMmNfanF1ZXJ5ZGFya3Rvb2x0aXBqc19jX29uPSIyMDI0LTAzLTI1IDEyOjMzOjA3IjsidXNlIHN0cmljdCI7CihmdW5jdGlvbihiKXtmdW5jdGlvbiBlKGEsYyl7dGhpcy5iZWFyZXI9YTt0aGlzLm9wdGlvbnM9Yzt0aGlzLmhpZGVFdmVudDt0aGlzLmhpZGluZz0hMTt0aGlzLm1vdXNlT3Zlck1vZGU9ImhvdmVyIj09dGhpcy5vcHRpb25zLnRyaWdnZXJ8fCJtb3VzZW92ZXIiPT10aGlzLm9wdGlvbnMudHJpZ2dlcnx8Im9ubW91c2VvdmVyIj09dGhpcy5vcHRpb25zLnRyaWdnZXJ9ZS5wcm90b3R5cGU9e3Nob3c6ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3RoaXMub3B0aW9ucy5tb2RhbCYmdGhpcy5tb2RhbExheWVyLmNzcygiZGlzcGxheSIsImJsb2NrIik7dGhpcy50b29sdGlwLmNzcygiZGlzcGxheSIsImJsb2NrIik7YS5tb3VzZU92ZXJNb2RlJiYodGhpcy50b29sdGlwLm9uKCJtb3VzZW92ZXIiLGZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KGEuaGlkZUV2ZW50KTthLmhpZGluZz0hMX0pLHRoaXMudG9vbHRpcC5vbigibW91c2VvdXQiLGZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KGEuaGlkZUV2ZW50KTsKYS5oaWRlKCk7YS5oaWRpbmc9ITF9KSl9LGhpZGU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzO2EuaGlkaW5nfHwoYS5oaWRpbmc9ITAsdGhpcy5oaWRlRXZlbnQ9c2V0VGltZW91dChmdW5jdGlvbigpe2EuaGlkaW5nPSExO2EudG9vbHRpcC5oaWRlKCl9KSxhLm9wdGlvbnMubW9kYWwmJihhLmhpZGluZz0hMSxhLm1vZGFsTGF5ZXIuaGlkZSgpKSx0aGlzLm9wdGlvbnMub25DbG9zZSgpKX0sdG9nZ2xlOmZ1bmN0aW9uKCl7dGhpcy50b29sdGlwLmlzKCI6dmlzaWJsZSIpP3RoaXMuaGlkZSgpOnRoaXMuc2hvdygpfSxhZGRBbmltYXRpb246ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5vcHRpb25zLmFuaW1hdGlvbil7Y2FzZSAiZmFkZUluIjp0aGlzLnRvb2x0aXAuYWRkQ2xhc3MoImFuaW1hdGVkIik7dGhpcy50b29sdGlwLmFkZENsYXNzKCJmYWRlSW4iKTticmVhaztjYXNlICJmbGlwSW4iOnRoaXMudG9vbHRpcC5hZGRDbGFzcygiYW5pbWF0ZWQiKSx0aGlzLnRvb2x0aXAuYWRkQ2xhc3MoImZsaXBJbiIpfX0sCnNldENvbnRlbnQ6ZnVuY3Rpb24oKXtiKHRoaXMuYmVhcmVyKS5jc3MoImN1cnNvciIsInBvaW50ZXIiKTtpZih0aGlzLm9wdGlvbnMuY29udGVudCl0aGlzLmNvbnRlbnQ9dGhpcy5vcHRpb25zLmNvbnRlbnQ7ZWxzZSBpZih0aGlzLmJlYXJlci5hdHRyKCJkYXRhLXRvb2x0aXAiKSl0aGlzLmNvbnRlbnQ9dGhpcy5iZWFyZXIuYXR0cigiZGF0YS10b29sdGlwIik7ZWxzZSByZXR1cm47aWYoIiMiPT10aGlzLmNvbnRlbnQuY2hhckF0KDApKXtpZih0aGlzLm9wdGlvbnMuZGVsZXRlX2NvbnRlbnQpe3ZhciBhPWIodGhpcy5jb250ZW50KS5odG1sKCk7Yih0aGlzLmNvbnRlbnQpLmh0bWwoIiIpO3RoaXMuY29udGVudD1hO2RlbGV0ZSBhfWVsc2UgYih0aGlzLmNvbnRlbnQpLmhpZGUoKSx0aGlzLmNvbnRlbnQ9Yih0aGlzLmNvbnRlbnQpLmh0bWwoKTt0aGlzLmNvbnRlbnRUeXBlPSJodG1sIn1lbHNlIHRoaXMuY29udGVudFR5cGU9InRleHQiO2E9IiIhPXRoaXMuYmVhcmVyLmF0dHIoImlkIikmJgoidW5kZWZpbmVkIiE9dGhpcy5iZWFyZXIuYXR0cigiaWQiKT8iaWQ9J2Rhcmt0b29sdGlwLSIrdGhpcy5iZWFyZXIuYXR0cigiaWQiKSsiJyI6ImlkPSdkYXJrdG9vbHRpcC0iKyhEYXRlLm5vdygpK01hdGguZmxvb3IoMUU0Kk1hdGgucmFuZG9tKCkpKSsiJyI7MD09PWIoIklOUy5kYXJrdG9vbHRpcC1tb2RhbC1sYXllciIpLmxlbmd0aCYmKHRoaXMubW9kYWxMYXllcj1iKCI8aW5zIGNsYXNzPSdkYXJrdG9vbHRpcC1tb2RhbC1sYXllcic+PC9pbnM+IikpO3RoaXMudG9vbHRpcD1iKCI8aW5zICIrYSsiIGNsYXNzID0gJ2RhcmstdG9vbHRpcCAiK3RoaXMub3B0aW9ucy50aGVtZSsiICIrdGhpcy5vcHRpb25zLnNpemUrIiAiK3RoaXMub3B0aW9ucy5ncmF2aXR5KyInPjxkaXY+Iit0aGlzLmNvbnRlbnQrIjwvZGl2PjxkaXYgY2xhc3MgPSAndGlwJz48L2Rpdj48L2lucz4iKTt0aGlzLnRpcD10aGlzLnRvb2x0aXAuZmluZCgiLnRpcCIpO2IoImJvZHkiKS5hcHBlbmQodGhpcy5tb2RhbExheWVyKTsKYigiYm9keSIpLmFwcGVuZCh0aGlzLnRvb2x0aXApOyJodG1sIj09dGhpcy5jb250ZW50VHlwZSYmdGhpcy50b29sdGlwLmNzcygibWF4LXdpZHRoIiwibm9uZSIpO3RoaXMudG9vbHRpcC5jc3MoIm9wYWNpdHkiLHRoaXMub3B0aW9ucy5vcGFjaXR5KTt0aGlzLmFkZEFuaW1hdGlvbigpO3RoaXMub3B0aW9ucy5jb25maXJtJiZ0aGlzLmFkZENvbmZpcm0oKX0sc2V0UG9zaXRpb25zOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5iZWFyZXIub2Zmc2V0KCkubGVmdCxjPXRoaXMuYmVhcmVyLm9mZnNldCgpLnRvcDtzd2l0Y2godGhpcy5vcHRpb25zLmdyYXZpdHkpe2Nhc2UgInNvdXRoIjphKz10aGlzLmJlYXJlci5vdXRlcldpZHRoKCkvMi10aGlzLnRvb2x0aXAub3V0ZXJXaWR0aCgpLzI7Yys9LXRoaXMudG9vbHRpcC5vdXRlckhlaWdodCgpLXRoaXMudGlwLm91dGVySGVpZ2h0KCkvMjticmVhaztjYXNlICJ3ZXN0IjphKz10aGlzLmJlYXJlci5vdXRlcldpZHRoKCkrdGhpcy50aXAub3V0ZXJXaWR0aCgpLwoyO2MrPXRoaXMuYmVhcmVyLm91dGVySGVpZ2h0KCkvMi10aGlzLnRvb2x0aXAub3V0ZXJIZWlnaHQoKS8yO2JyZWFrO2Nhc2UgIm5vcnRoIjphKz10aGlzLmJlYXJlci5vdXRlcldpZHRoKCkvMi10aGlzLnRvb2x0aXAub3V0ZXJXaWR0aCgpLzI7Yys9dGhpcy5iZWFyZXIub3V0ZXJIZWlnaHQoKSt0aGlzLnRpcC5vdXRlckhlaWdodCgpLzI7YnJlYWs7Y2FzZSAiZWFzdCI6YSs9LXRoaXMudG9vbHRpcC5vdXRlcldpZHRoKCktdGhpcy50aXAub3V0ZXJXaWR0aCgpLzIsYys9dGhpcy5iZWFyZXIub3V0ZXJIZWlnaHQoKS8yLXRoaXMudG9vbHRpcC5vdXRlckhlaWdodCgpLzJ9dGhpcy5vcHRpb25zLmF1dG9MZWZ0JiZ0aGlzLnRvb2x0aXAuY3NzKCJsZWZ0IixhKTt0aGlzLm9wdGlvbnMuYXV0b1RvcCYmdGhpcy50b29sdGlwLmNzcygidG9wIixjKX0sc2V0RXZlbnRzOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxjPWEub3B0aW9ucy5ob3ZlckRlbGF5LGY7aWYoYS5tb3VzZU92ZXJNb2RlKXRoaXMuYmVhcmVyLm9uKCJtb3VzZWVudGVyIiwKZnVuY3Rpb24oKXtmPXNldFRpbWVvdXQoZnVuY3Rpb24oKXthLnNldFBvc2l0aW9ucygpO2Euc2hvdygpfSxjKX0pLm9uKCJtb3VzZWxlYXZlIixmdW5jdGlvbigpe2NsZWFyVGltZW91dChmKTthLmhpZGUoKX0pO2Vsc2UgaWYoImNsaWNrIj09dGhpcy5vcHRpb25zLnRyaWdnZXJ8fCJvbmNsaWsiPT10aGlzLm9wdGlvbnMudHJpZ2dlcil0aGlzLnRvb2x0aXAub24oImNsaWNrIixmdW5jdGlvbihkKXtkLnN0b3BQcm9wYWdhdGlvbigpfSksdGhpcy5iZWFyZXIub24oImNsaWNrIixmdW5jdGlvbihkKXtkLnByZXZlbnREZWZhdWx0KCk7YS5zZXRQb3NpdGlvbnMoKTthLnRvZ2dsZSgpO2Quc3RvcFByb3BhZ2F0aW9uKCl9KSxiKCJodG1sIikub24oImNsaWNrIixmdW5jdGlvbigpe2EuaGlkZSgpfSl9LGFjdGl2YXRlOmZ1bmN0aW9uKCl7dGhpcy5zZXRDb250ZW50KCk7dGhpcy5jb250ZW50JiZ0aGlzLnNldEV2ZW50cygpfSxhZGRDb25maXJtOmZ1bmN0aW9uKCl7dGhpcy50b29sdGlwLmFwcGVuZCgiPHVsIGNsYXNzID0gJ2NvbmZpcm0nPjxsaSBjbGFzcyA9ICdkYXJrdG9vbHRpcC15ZXMnPiIrCnRoaXMub3B0aW9ucy55ZXMrIjwvbGk+PGxpIGNsYXNzID0gJ2Rhcmt0b29sdGlwLW5vJz4iK3RoaXMub3B0aW9ucy5ubysiPC9saT48L3VsPiIpO3RoaXMuc2V0Q29uZmlybUV2ZW50cygpfSxzZXRDb25maXJtRXZlbnRzOmZ1bmN0aW9uKCl7dmFyIGE9dGhpczt0aGlzLnRvb2x0aXAuZmluZCgibGkuZGFya3Rvb2x0aXAteWVzIikub24oImNsaWNrIixmdW5jdGlvbihjKXthLm9uWWVzKCk7Yy5zdG9wUHJvcGFnYXRpb24oKX0pO3RoaXMudG9vbHRpcC5maW5kKCJsaS5kYXJrdG9vbHRpcC1ubyIpLm9uKCJjbGljayIsZnVuY3Rpb24oYyl7YS5vbk5vKCk7Yy5zdG9wUHJvcGFnYXRpb24oKX0pfSxmaW5hbE1lc3NhZ2U6ZnVuY3Rpb24oKXtpZih0aGlzLm9wdGlvbnMuZmluYWxNZXNzYWdlKXt2YXIgYT10aGlzO2EudG9vbHRpcC5maW5kKCJkaXY6Zmlyc3QiKS5odG1sKHRoaXMub3B0aW9ucy5maW5hbE1lc3NhZ2UpO2EudG9vbHRpcC5maW5kKCJ1bCIpLnJlbW92ZSgpO2Euc2V0UG9zaXRpb25zKCk7CnNldFRpbWVvdXQoZnVuY3Rpb24oKXthLmhpZGUoKTthLnNldENvbnRlbnQoKX0sYS5vcHRpb25zLmZpbmFsTWVzc2FnZUR1cmF0aW9uKX1lbHNlIHRoaXMuaGlkZSgpfSxvblllczpmdW5jdGlvbigpe3RoaXMub3B0aW9ucy5vblllcyh0aGlzLmJlYXJlcik7dGhpcy5maW5hbE1lc3NhZ2UoKX0sb25ObzpmdW5jdGlvbigpe3RoaXMub3B0aW9ucy5vbk5vKHRoaXMuYmVhcmVyKTt0aGlzLmhpZGUoKX19O2IuZm4uZGFya1Rvb2x0aXA9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2E9Yi5leHRlbmQoe30sYi5mbi5kYXJrVG9vbHRpcC5kZWZhdWx0cyxhKTsobmV3IGUoYih0aGlzKSxhKSkuYWN0aXZhdGUoKX0pfTtiLmZuLmRhcmtUb29sdGlwLmRlZmF1bHRzPXthbmltYXRpb246Im5vbmUiLGNvbmZpcm06ITEsY29udGVudDoiIixmaW5hbE1lc3NhZ2U6IiIsZmluYWxNZXNzYWdlRHVyYXRpb246MUUzLGdyYXZpdHk6InNvdXRoIixob3ZlckRlbGF5OjAsbW9kYWw6ITEsCm5vOiJObyIsb25ObzpmdW5jdGlvbigpe30sb25ZZXM6ZnVuY3Rpb24oKXt9LG9wYWNpdHk6Ljksc2l6ZToibWVkaXVtIix0aGVtZToiZGFyayIsdHJpZ2dlcjoiaG92ZXIiLHllczoiWWVzIixhdXRvVG9wOiEwLGF1dG9MZWZ0OiEwLG9uQ2xvc2U6ZnVuY3Rpb24oKXt9fX0pKGpRdWVyeSk7Ci8qKiAvbS9qcy9qcXVlcnkudmFsaWRpdHkubWluLmpzICoqLwooZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihiLGMsZSl7dmFyIGY9KGIucmVkdWN0aW9ufHxiKS5maWx0ZXIoYS52YWxpZGl0eS5zZXR0aW5ncy5lbGVtZW50U3VwcG9ydCksaT1bXTtyZXR1cm4gMT5iLmxlbmd0aD8oY29uc29sZS5sb2coIkNvdWxkIG5vdCB2YWxpZGF0ZSBlbGVtZW50IixiKSxiKTooZi5lYWNoKGZ1bmN0aW9uKCl7Yyh0aGlzKT9pLnB1c2godGhpcyk6ZCh0aGlzLGcoZSx7ZmllbGQ6aCh0aGlzKX0pKX0pLGIucmVkdWN0aW9uPWEoaSksYil9ZnVuY3Rpb24gYygpe2EudmFsaWRpdHkuaXNWYWxpZGF0aW5nKCkmJihhLnZhbGlkaXR5LnJlcG9ydC5lcnJvcnMrKyxhLnZhbGlkaXR5LnJlcG9ydC52YWxpZD0hMSl9ZnVuY3Rpb24gZChiLGQpe2MoKSxhLnZhbGlkaXR5Lm91dHB1dHNbYS52YWxpZGl0eS5zZXR0aW5ncy5vdXRwdXRNb2RlXSYmYS52YWxpZGl0eS5vdXRwdXRzW2EudmFsaWRpdHkuc2V0dGluZ3Mub3V0cHV0TW9kZV0ucmFpc2UmJmEudmFsaWRpdHkub3V0cHV0c1thLnZhbGlkaXR5LnNldHRpbmdzLm91dHB1dE1vZGVdLnJhaXNlKGEoYiksZCl9ZnVuY3Rpb24gZShiLGQpe2MoKSxhLnZhbGlkaXR5Lm91dHB1dHNbYS52YWxpZGl0eS5zZXR0aW5ncy5vdXRwdXRNb2RlXSYmYS52YWxpZGl0eS5vdXRwdXRzW2EudmFsaWRpdHkuc2V0dGluZ3Mub3V0cHV0TW9kZV0ucmFpc2VBZ2dyZWdhdGUmJmEudmFsaWRpdHkub3V0cHV0c1thLnZhbGlkaXR5LnNldHRpbmdzLm91dHB1dE1vZGVdLnJhaXNlQWdncmVnYXRlKGIsZCl9ZnVuY3Rpb24gZihhKXt2YXIgYj0wO3JldHVybiBhLmVhY2goZnVuY3Rpb24oKXt2YXIgYT1wYXJzZUZsb2F0KHRoaXMudmFsdWUpO2IrPWlzTmFOKGEpPzA6YX0pLGJ9ZnVuY3Rpb24gZyhhLGIpe2Zvcih2YXIgYyBpbiBiKWE9YS5yZXBsYWNlKCIjeyIrYysifSIsYltjXSk7cmV0dXJuIGooYSl9ZnVuY3Rpb24gaChiKXt2YXIgYz1hKGIpLGQ9YS52YWxpZGl0eS5zZXR0aW5ncy5kZWZhdWx0RmllbGROYW1lO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgYy5hdHRyKCJ0aXRsZSIpJiZjLmF0dHIoInRpdGxlIikubGVuZ3RoKWQ9Yy5hdHRyKCJ0aXRsZSIpO2Vsc2UgaWYoL14oW0EtWjAtOV1bYS16XSopKyQvLnRlc3QoYi5pZCkpZD1iLmlkLnJlcGxhY2UoLyhbQS1aMC05XSlbYS16XSovZywiICQmIik7ZWxzZSBpZigvXlthLXowLTlfXSokLy50ZXN0KGIuaWQpKXtmb3IodmFyIGU9Yi5pZC5zcGxpdCgiXyIpLGY9MDtmPGUubGVuZ3RoOysrZillW2ZdPWooZVtmXSk7ZD1lLmpvaW4oIiAiKX1yZXR1cm4gZH1mdW5jdGlvbiBqKGEpe3JldHVybiBhLnN1YnN0cmluZz9hLnN1YnN0cmluZygwLDEpLnRvVXBwZXJDYXNlKCkrYS5zdWJzdHJpbmcoMSxhLmxlbmd0aCk6YX1hLnZhbGlkaXR5PXtzZXR0aW5nczphLmV4dGVuZCh7b3V0cHV0TW9kZToibGFiZWwiLGNzc0NsYXNzOiJlcnJvciIsc2Nyb2xsVG86ITEsbW9kYWxFcnJvcnNDbGlja2FibGU6ITAsZGVmYXVsdEZpZWxkTmFtZToiVGhpcyBmaWVsZCIsZWxlbWVudFN1cHBvcnQ6Ijp0ZXh0LCBbdHlwZT10ZWxdLCBbdHlwZT1lbWFpbF0sIFt0eXBlPWRhdGVdLCA6cGFzc3dvcmQsIHRleHRhcmVhLCBzZWxlY3QsIDpyYWRpbywgOmNoZWNrYm94IixhcmdUb1N0cmluZzpmdW5jdGlvbihhKXtyZXR1cm4gYS5nZXREYXRlP2EuZ2V0TW9udGgoKSsxKyIvIithLmdldERhdGUoKSsiLyIrYS5nZXRGdWxsWWVhcigpOmF9fSx7fSkscGF0dGVybnM6e2ludGVnZXI6L15cZCskLyxkYXRlOi9eKCgwP1xkKXwoMVswMTJdKSlcLyhbMDEyXT9cZHwzMHwzMSlcL1xkezEsNH0kLyxlbWFpbDovXigoKFthLXpdfFxkfFshI1wkJSYnXCpcK1wtXC89XD9cXl9ge1x8fX5dfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKSsoXC4oW2Etel18XGR8WyEjXCQlJidcKlwrXC1cLz1cP1xeX2B7XHx9fl18W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKykqKXwoKFx4MjIpKCgoKFx4MjB8XHgwOSkqKFx4MGRceDBhKSk\/KFx4MjB8XHgwOSkrKT8oKFtceDAxLVx4MDhceDBiXHgwY1x4MGUtXHgxZlx4N2ZdfFx4MjF8W1x4MjMtXHg1Yl18W1x4NWQtXHg3ZV18W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pfChcXChbXHgwMS1ceDA5XHgwYlx4MGNceDBkLVx4N2ZdfFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKSkpKSooKChceDIwfFx4MDkpKihceDBkXHgwYSkpPyhceDIwfFx4MDkpKyk\/KFx4MjIpKSlAKCgoW2Etel18XGR8W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pfCgoW2Etel18XGR8W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKFthLXpdfFxkfC18XC58X3x+fFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKSooW2Etel18XGR8W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKSlcLikrKChbYS16XXxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSl8KChbYS16XXxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkoW2Etel18XGR8LXxcLnxffH58W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKihbYS16XXxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkpKVwuPyQvaSx1c2Q6L15cJD8oXGR7MSwzfSw\/KFxkezN9LD8pKlxkezN9KFwuXGR7MCwyfSk\/fFxkezEsM30oXC5cZHswLDJ9KT98XC5cZHsxLDJ9PykkLyx1cmw6L14oaHR0cHM\/fGZ0cCk6XC9cLygoKChbYS16XXxcZHwtfFwufF98fnxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSl8KCVbXGRhLWZdezJ9KXxbIVwkJidcKFwpXCpcKyw7PV18OikqQCk\/KCgoXGR8WzEtOV1cZHwxXGRcZHwyWzAtNF1cZHwyNVswLTVdKVwuKFxkfFsxLTldXGR8MVxkXGR8MlswLTRdXGR8MjVbMC01XSlcLihcZHxbMS05XVxkfDFcZFxkfDJbMC00XVxkfDI1WzAtNV0pXC4oXGR8WzEtOV1cZHwxXGRcZHwyWzAtNF1cZHwyNVswLTVdKSl8KCgoW2Etel18XGR8W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pfCgoW2Etel18XGR8W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKFthLXpdfFxkfC18XC58X3x+fFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKSooW2Etel18XGR8W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKSlcLikrKChbYS16XXxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSl8KChbYS16XXxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkoW2Etel18XGR8LXxcLnxffH58W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pKihbYS16XXxbXHUwMEEwLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkVGXSkpKVwuPykoOlxkKik\/KShcLygoKFthLXpdfFxkfC18XC58X3x+fFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKXwoJVtcZGEtZl17Mn0pfFshXCQmJ1woXClcKlwrLDs9XXw6fEApKyhcLygoW2Etel18XGR8LXxcLnxffH58W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pfCglW1xkYS1mXXsyfSl8WyFcJCYnXChcKVwqXCssOz1dfDp8QCkqKSopPyk\/KFw\/KCgoW2Etel18XGR8LXxcLnxffH58W1x1MDBBMC1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZFRl0pfCglW1xkYS1mXXsyfSl8WyFcJCYnXChcKVwqXCssOz1dfDp8QCl8W1x1RTAwMC1cdUY4RkZdfFwvfFw\/KSopPyhcIygoKFthLXpdfFxkfC18XC58X3x+fFtcdTAwQTAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdKXwoJVtcZGEtZl17Mn0pfFshXCQmJ1woXClcKlwrLDs9XXw6fEApfFwvfFw\/KSopPyQvaSxudW1iZXI6L15bKy1dPyhcZCsoXC5cZCopP3xcLlxkKykoW0VlXVxkKyk\/JC8semlwOi9eXGR7NX0oLVxkezR9KT8kLyxwaG9uZTovXlsyLTldXGR7Mn0tXGR7M30tXGR7NH0kLyxndWlkOi9eKFx7PyhbMC05YS1mQS1GXSl7OH0tKChbMC05YS1mQS1GXSl7NH0tKXszfShbMC05YS1mQS1GXSl7MTJ9XH0\/KSQvLHRpbWUxMjovXlswMV0\/XGQ6WzAtNV1cZD9ccz9bYUFwUF1cLj9bbU1dXC4\/JC8sdGltZTI0Oi9eKDIwfDIxfDIyfDIzfFswMV1cZHxcZCkoKFs6XVswLTVdXGQpezEsMn0pJC8sbm9uSHRtbDovXltePD5dKiQvfSxtZXNzYWdlczp7YXJlYWNvZGU6IiN7ZmllbGR9IGFjY2VwdHMgb25seSBsb2NhbCBhcmVhIGNvZGVzIixyZXF1aXJlOiIje2ZpZWxkfSBpcyByZXF1aXJlZC4iLG1hdGNoOiIje2ZpZWxkfSBpcyBpbiBhbiBpbnZhbGlkIGZvcm1hdC4iLGludGVnZXI6IiN7ZmllbGR9IG11c3QgYmUgYSBwb3NpdGl2ZSwgd2hvbGUgbnVtYmVyLiIsZGF0ZToiI3tmaWVsZH0gbXVzdCBiZSBmb3JtYXR0ZWQgYXMgYSBkYXRlLiIsZW1haWw6IiN7ZmllbGR9IG11c3QgYmUgZm9ybWF0dGVkIGFzIGFuIGVtYWlsLiIsdXNkOiIje2ZpZWxkfSBtdXN0IGJlIGZvcm1hdHRlZCBhcyBhIFVTIERvbGxhciBhbW91bnQuIix1cmw6IiN7ZmllbGR9IG11c3QgYmUgZm9ybWF0dGVkIGFzIGEgVVJMLiIsbnVtYmVyOiIje2ZpZWxkfSBtdXN0IGJlIGZvcm1hdHRlZCBhcyBhIG51bWJlci4iLHppcDoiI3tmaWVsZH0gbXVzdCBiZSBmb3JtYXR0ZWQgYXMgYSB6aXBjb2RlICMjIyMjIG9yICMjIyMjLSMjIyMuIixwaG9uZToiI3tmaWVsZH0gbXVzdCBiZSBmb3JtYXR0ZWQgYXMgYSBwaG9uZSBudW1iZXIgIyMjLSMjIy0jIyMjLiIsZ3VpZDoiI3tmaWVsZH0gbXVzdCBiZSBmb3JtYXR0ZWQgYXMgYSBndWlkIGxpa2UgezNGMjUwNEUwLTRGODktMTFEMy05QTBDLTAzMDVFODJDMzMwMX0uIix0aW1lMjQ6IiN7ZmllbGR9IG11c3QgYmUgZm9ybWF0dGVkIGFzIGEgMjQgaG91ciB0aW1lOiAyMzowMC4iLHRpbWUxMjoiI3tmaWVsZH0gbXVzdCBiZSBmb3JtYXR0ZWQgYXMgYSAxMiBob3VyIHRpbWU6IDEyOjAwIEFNL1BNIixsZXNzVGhhbjoiI3tmaWVsZH0gbXVzdCBiZSBsZXNzIHRoYW4gI3ttYXh9LiIsbGVzc1RoYW5PckVxdWFsVG86IiN7ZmllbGR9IG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICN7bWF4fS4iLGdyZWF0ZXJUaGFuOiIje2ZpZWxkfSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAje21pbn0uIixncmVhdGVyVGhhbk9yRXF1YWxUbzoiI3tmaWVsZH0gbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gI3ttaW59LiIscmFuZ2U6IiN7ZmllbGR9IG11c3QgYmUgYmV0d2VlbiAje21pbn0gYW5kICN7bWF4fS4iLHRvb0xvbmc6IiN7ZmllbGR9IGNhbm5vdCBiZSBsb25nZXIgdGhhbiAje21heH0gY2hhcmFjdGVycy4iLHRvb1Nob3J0OiIje2ZpZWxkfSBjYW5ub3QgYmUgc2hvcnRlciB0aGFuICN7bWlufSBjaGFyYWN0ZXJzLiIsbm9uSHRtbDoiI3tmaWVsZH0gY2Fubm90IGNvbnRhaW4gSFRNTCBjaGFyYWN0ZXJzLiIsYWxwaGFiZXQ6IiN7ZmllbGR9IGNvbnRhaW5zIGRpc2FsbG93ZWQgY2hhcmFjdGVycy4iLG1pbkNoYXJDbGFzczoiI3tmaWVsZH0gY2Fubm90IGhhdmUgbW9yZSB0aGFuICN7bWlufSAje2NoYXJDbGFzc30gY2hhcmFjdGVycy4iLG1heENoYXJDbGFzczoiI3tmaWVsZH0gY2Fubm90IGhhdmUgbGVzcyB0aGFuICN7bWlufSAje2NoYXJDbGFzc30gY2hhcmFjdGVycy4iLGVxdWFsOiJWYWx1ZXMgZG9uJ3QgbWF0Y2guIixkaXN0aW5jdDoiQSB2YWx1ZSB3YXMgcmVwZWF0ZWQuIixzdW06IlZhbHVlcyBkb24ndCBhZGQgdG8gI3tzdW19LiIsc3VtTWF4OiJUaGUgc3VtIG9mIHRoZSB2YWx1ZXMgbXVzdCBiZSBsZXNzIHRoYW4gI3ttYXh9LiIsc3VtTWluOiJUaGUgc3VtIG9mIHRoZSB2YWx1ZXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gI3ttaW59LiIscmFkaW9DaGVja2VkOiJUaGUgc2VsZWN0ZWQgdmFsdWUgaXMgbm90IHZhbGlkLiIsZ2VuZXJpYzoiSW52YWxpZC4ifSxjaGFyQ2xhc3Nlczp7YWxwaGFiZXRpY2FsOi9cdy9nLG51bWVyaWM6L1xkL2csYWxwaGFudW1lcmljOi9bQS1aYS16MC05XS9nLHN5bWJvbDovW15BLVphLXowLTldL2d9LG91dHB1dHM6e30sc2V0dXA6ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuc2V0dGluZ3M9YS5leHRlbmQodGhpcy5zZXR0aW5ncyxiKSx0aGlzfSxyZXBvcnQ6bnVsbCxpc1ZhbGlkYXRpbmc6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMucmVwb3J0fSxzdGFydDpmdW5jdGlvbigpe3RoaXMub3V0cHV0c1t0aGlzLnNldHRpbmdzLm91dHB1dE1vZGVdJiZ0aGlzLm91dHB1dHNbdGhpcy5zZXR0aW5ncy5vdXRwdXRNb2RlXS5zdGFydCYmdGhpcy5vdXRwdXRzW3RoaXMuc2V0dGluZ3Mub3V0cHV0TW9kZV0uc3RhcnQoKSx0aGlzLnJlcG9ydD17ZXJyb3JzOjAsdmFsaWQ6ITB9fSxlbmQ6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnJlcG9ydHx8e2Vycm9yczowLHZhbGlkOiEwfTtyZXR1cm4gdGhpcy5yZXBvcnQ9bnVsbCx0aGlzLm91dHB1dHNbdGhpcy5zZXR0aW5ncy5vdXRwdXRNb2RlXSYmdGhpcy5vdXRwdXRzW3RoaXMuc2V0dGluZ3Mub3V0cHV0TW9kZV0uZW5kJiZ0aGlzLm91dHB1dHNbdGhpcy5zZXR0aW5ncy5vdXRwdXRNb2RlXS5lbmQoYSksYX0sY2xlYXI6ZnVuY3Rpb24oKXt0aGlzLnN0YXJ0KCksdGhpcy5lbmQoKX19LGEuZm4uZXh0ZW5kKHt2YWxpZGl0eTpmdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7aWYoImZvcm0iPT10aGlzLnRhZ05hbWUudG9Mb3dlckNhc2UoKSl7dmFyIGM9bnVsbDsic3RyaW5nIj09dHlwZW9mIGI\/Yz1mdW5jdGlvbigpe2EoYikucmVxdWlyZSgpfTppc0Z1bmN0aW9uKGIpJiYoYz1iKSxiJiZhKHRoaXMpLm9uKCJzdWJtaXQiLGZ1bmN0aW9uKCl7cmV0dXJuIGEudmFsaWRpdHkuc3RhcnQoKSxjKCksYS52YWxpZGl0eS5lbmQoKS52YWxpZH0pfX0pfSxyZXF1aXJlOmZ1bmN0aW9uKGMpe3JldHVybiBiKHRoaXMsZnVuY3Rpb24oYil7dmFyIGM9YShiKS52YWwoKSxkPXRyaW0oYykubGVuZ3RoO3JldHVybiBkfSxjfHxhLnZhbGlkaXR5Lm1lc3NhZ2VzLnJlcXVpcmUpfSxtYXRjaDpmdW5jdGlvbihjLGQpe3JldHVybiBkfHwoZD1hLnZhbGlkaXR5Lm1lc3NhZ2VzLm1hdGNoLCJzdHJpbmciPT10eXBlb2YgYyYmYS52YWxpZGl0eS5tZXNzYWdlc1tjXSYmKGQ9YS52YWxpZGl0eS5tZXNzYWdlc1tjXSkpLCJzdHJpbmciPT10eXBlb2YgYyYmKGM9YS52YWxpZGl0eS5wYXR0ZXJuc1tjXSksYih0aGlzLGlzRnVuY3Rpb24oYyk\/ZnVuY3Rpb24oYSl7cmV0dXJuIWEudmFsdWUubGVuZ3RofHxjKGEudmFsdWUpfTpmdW5jdGlvbihhKXtyZXR1cm4gYy5nbG9iYWwmJihjLmxhc3RJbmRleD0wKSwhYS52YWx1ZS5sZW5ndGh8fGMudGVzdChhLnZhbHVlKX0sZCl9LHJhbmdlOmZ1bmN0aW9uKGMsZSxmKXtyZXR1cm4gYih0aGlzLGMuZ2V0VGltZSYmZS5nZXRUaW1lP2Z1bmN0aW9uKGEpe3ZhciBiPW5ldyBEYXRlKGEudmFsdWUpO3JldHVybiBiPj1uZXcgRGF0ZShjKSYmYjw9bmV3IERhdGUoZSl9OmMuc3Vic3RyaW5nJiZlLnN1YnN0cmluZyYmQmlnP2Z1bmN0aW9uKGEpe3ZhciBiPW5ldyBCaWcoYS52YWx1ZSk7cmV0dXJuIGIuZ3JlYXRlclRoYW5PckVxdWFsVG8obmV3IEJpZyhjKSkmJmIubGVzc1RoYW5PckVxdWFsVG8obmV3IEJpZyhlKSl9OmZ1bmN0aW9uKGEpe3ZhciBiPXBhcnNlRmxvYXQoYS52YWx1ZSk7cmV0dXJuIGI+PWMmJmI8PWV9LGZ8fGcoYS52YWxpZGl0eS5tZXNzYWdlcy5yYW5nZSx7bWluOmEudmFsaWRpdHkuc2V0dGluZ3MuYXJnVG9TdHJpbmcoYyksbWF4OmEudmFsaWRpdHkuc2V0dGluZ3MuYXJnVG9TdHJpbmcoZSl9KSl9LGdyZWF0ZXJUaGFuOmZ1bmN0aW9uKGMsZCl7cmV0dXJuIGIodGhpcyxjLmdldFRpbWU\/ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBEYXRlKGEudmFsdWUpPmN9OmMuc3Vic3RyaW5nJiZCaWc\/ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBCaWcoYS52YWx1ZSkuZ3JlYXRlclRoYW4obmV3IEJpZyhjKSl9OmZ1bmN0aW9uKGEpe3JldHVybiBwYXJzZUZsb2F0KGEudmFsdWUpPmN9LGR8fGcoYS52YWxpZGl0eS5tZXNzYWdlcy5ncmVhdGVyVGhhbix7bWluOmEudmFsaWRpdHkuc2V0dGluZ3MuYXJnVG9TdHJpbmcoYyl9KSl9LGdyZWF0ZXJUaGFuT3JFcXVhbFRvOmZ1bmN0aW9uKGMsZCl7cmV0dXJuIGIodGhpcyxjLmdldFRpbWU\/ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBEYXRlKGEudmFsdWUpPj1jfTpjLnN1YnN0cmluZyYmQmlnP2Z1bmN0aW9uKGEpe3JldHVybiBuZXcgQmlnKGEudmFsdWUpLmdyZWF0ZXJUaGFuT3JFcXVhbFRvKG5ldyBCaWcoYykpfTpmdW5jdGlvbihhKXtyZXR1cm4gcGFyc2VGbG9hdChhLnZhbHVlKT49Y30sZHx8ZyhhLnZhbGlkaXR5Lm1lc3NhZ2VzLmdyZWF0ZXJUaGFuT3JFcXVhbFRvLHttaW46YS52YWxpZGl0eS5zZXR0aW5ncy5hcmdUb1N0cmluZyhjKX0pKX0sbGVzc1RoYW46ZnVuY3Rpb24oYyxkKXtyZXR1cm4gYih0aGlzLGMuZ2V0VGltZT9mdW5jdGlvbihhKXtyZXR1cm4gbmV3IERhdGUoYS52YWx1ZSk8Y306Yy5zdWJzdHJpbmcmJkJpZz9mdW5jdGlvbihhKXtyZXR1cm4gbmV3IEJpZyhhLnZhbHVlKS5sZXNzVGhhbihuZXcgQmlnKGMpKX06ZnVuY3Rpb24oYSl7cmV0dXJuIHBhcnNlRmxvYXQoYS52YWx1ZSk8Y30sZHx8ZyhhLnZhbGlkaXR5Lm1lc3NhZ2VzLmxlc3NUaGFuLHttYXg6YS52YWxpZGl0eS5zZXR0aW5ncy5hcmdUb1N0cmluZyhjKX0pKX0sbGVzc1RoYW5PckVxdWFsVG86ZnVuY3Rpb24oYyxkKXtyZXR1cm4gYih0aGlzLGMuZ2V0VGltZT9mdW5jdGlvbihhKXtyZXR1cm4gbmV3IERhdGUoYS52YWx1ZSk8PWN9OmMuc3Vic3RyaW5nJiZCaWc\/ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBCaWcoYS52YWx1ZSkubGVzc1RoYW5PckVxdWFsVG8obmV3IEJpZyhjKSl9OmZ1bmN0aW9uKGEpe3JldHVybiBwYXJzZUZsb2F0KGEudmFsdWUpPD1jfSxkfHxnKGEudmFsaWRpdHkubWVzc2FnZXMubGVzc1RoYW5PckVxdWFsVG8se21heDphLnZhbGlkaXR5LnNldHRpbmdzLmFyZ1RvU3RyaW5nKGMpfSkpfSxtYXhMZW5ndGg6ZnVuY3Rpb24oYyxkKXtyZXR1cm4gYih0aGlzLGZ1bmN0aW9uKGEpe3JldHVybiBhLnZhbHVlLmxlbmd0aDw9Y30sZHx8ZyhhLnZhbGlkaXR5Lm1lc3NhZ2VzLnRvb0xvbmcse21heDpjfSkpfSxtaW5MZW5ndGg6ZnVuY3Rpb24oYyxkKXtyZXR1cm4gYih0aGlzLGZ1bmN0aW9uKGEpe3JldHVybiBhLnZhbHVlLmxlbmd0aD49Y30sZHx8ZyhhLnZhbGlkaXR5Lm1lc3NhZ2VzLnRvb1Nob3J0LHttaW46Y30pKX0sYWxwaGFiZXQ6ZnVuY3Rpb24oYyxkKXt2YXIgZT1bXTtyZXR1cm4gYih0aGlzLGZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0wO2I8YS52YWx1ZS5sZW5ndGg7KytiKWlmKC0xPT1jLmluZGV4T2YoYS52YWx1ZS5jaGFyQXQoYikpKXJldHVybiBlLnB1c2goYS52YWx1ZS5jaGFyQXQoYikpLCExO3JldHVybiEwfSxkfHxnKGEudmFsaWRpdHkubWVzc2FnZXMuYWxwaGFiZXQse2NoYXJzOmUuam9pbigiLCAiKX0pKX0sbWluQ2hhckNsYXNzOmZ1bmN0aW9uKGMsZCxlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGMmJihjPWMudG9Mb3dlckNhc2UoKSxhLnZhbGlkaXR5LmNoYXJDbGFzc2VzW2NdJiYoYz1hLnZhbGlkaXR5LmNoYXJDbGFzc2VzW2NdKSksYih0aGlzLGZ1bmN0aW9uKGEpe3JldHVybihhLnZhbHVlLm1hdGNoKGMpfHxbXSkubGVuZ3RoPj1kfSxlfHxnKGEudmFsaWRpdHkubWVzc2FnZXMubWluQ2hhckNsYXNzLHttaW46ZCxjaGFyQ2xhc3M6Y30pKX0sbWF4Q2hhckNsYXNzOmZ1bmN0aW9uKGMsZCxlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGMmJihjPWMudG9Mb3dlckNhc2UoKSxhLnZhbGlkaXR5LmNoYXJDbGFzc2VzW2NdJiYoYz1hLnZhbGlkaXR5LmNoYXJDbGFzc2VzW2NdKSksYih0aGlzLGZ1bmN0aW9uKGEpe3JldHVybihhLnZhbHVlLm1hdGNoKGMpfHxbXSkubGVuZ3RoPD1kfSxlfHxnKGEudmFsaWRpdHkubWVzc2FnZXMubWF4Q2hhckNsYXNzLHttYXg6ZCxjaGFyQ2xhc3M6Y30pKX0scGFzc3dvcmQ6ZnVuY3Rpb24oYil7cmV0dXJuIGI9YS5leHRlbmQoe2FscGhhYmV0Om51bGwsbWluTGVuZ3RoOjAsbWF4TGVuZ3RoOjAsbWluU3ltYm9sOjAsbWluQWxwaGFiZXRpY2FsOjAsbWluTnVtZXJpYzowLG1pbkFscGhhTnVtZXJpYzowfSxiKSxiLmFscGhhYmV0JiZ0aGlzLmFscGhhYmV0KGIuYWxwaGFiZXQpLGIubWluTGVuZ3RoJiZ0aGlzLm1pbkxlbmd0aChiLm1pbkxlbmd0aCksYi5tYXhMZW5ndGgmJnRoaXMubWF4TGVuZ3RoKGIubWF4TGVuZ3RoKSxiLm1pblN5bWJvbCYmdGhpcy5taW5DaGFyQ2xhc3MoInN5bWJvbCIsYi5taW5TeW1ib2wpLGIubWluQWxwaGFiZXRpY2FsJiZ0aGlzLm1pbkNoYXJDbGFzcygiYWxwaGFiZXRpY2FsIixiLm1pbkFscGhhYmV0aWNhbCksYi5taW5OdW1lcmljJiZ0aGlzLm1pbkNoYXJDbGFzcygibnVtZXJpYyIsYi5taW5OdW1lcmljKSxiLm1pbkFscGhhbnVtZXJpYyYmdGhpcy5taW5DaGFyQ2xhc3MoImFscGhhbnVtZXJpYyIsYi5taW5BbHBoYW51bWVyaWMpLHRoaXN9LG5vbkh0bWw6ZnVuY3Rpb24oYyl7cmV0dXJuIGIodGhpcyxmdW5jdGlvbihiKXtyZXR1cm4gYS52YWxpZGl0eS5wYXR0ZXJucy5ub25IdG1sLnRlc3QoYi52YWx1ZSl9LGN8fGEudmFsaWRpdHkubWVzc2FnZXMubm9uSHRtbCl9LGVxdWFsOmZ1bmN0aW9uKGIsYyl7dmFyIGQ9KHRoaXMucmVkdWN0aW9ufHx0aGlzKS5maWx0ZXIoYS52YWxpZGl0eS5zZXR0aW5ncy5lbGVtZW50U3VwcG9ydCksZj1mdW5jdGlvbihhKXtyZXR1cm4gYX0sZz1hLnZhbGlkaXR5Lm1lc3NhZ2VzLmVxdWFsO2lmKGQubGVuZ3RoKXtpc0Z1bmN0aW9uKGIpPyhmPWIsInN0cmluZyI9PXR5cGVvZiBjJiYoZz1jKSk6InN0cmluZyI9PXR5cGVvZiBiJiYoZz1iKTt2YXIgaD1hLm1hcChkLGZ1bmN0aW9uKGEpe3JldHVybiBmKGEudmFsdWUpfSksaj1oWzBdLGs9ITA7Zm9yKHZhciBsIGluIGgpaFtsXSE9aiYmKGs9ITEpO2t8fChlKGQsZyksdGhpcy5yZWR1Y3Rpb249YShbXSkpfXJldHVybiB0aGlzfSxkaXN0aW5jdDpmdW5jdGlvbihiLGMpe3ZhciBkPSh0aGlzLnJlZHVjdGlvbnx8dGhpcykuZmlsdGVyKGEudmFsaWRpdHkuc2V0dGluZ3MuZWxlbWVudFN1cHBvcnQpLGY9ZnVuY3Rpb24oYSl7cmV0dXJuIGF9LGc9YS52YWxpZGl0eS5tZXNzYWdlcy5kaXN0aW5jdCxoPVtdLGk9ITA7aWYoZC5sZW5ndGgpe2lzRnVuY3Rpb24oYik\/KGY9Yiwic3RyaW5nIj09dHlwZW9mIGMmJihnPWMpKToic3RyaW5nIj09dHlwZW9mIGImJihnPWIpO2Zvcih2YXIgaj1hLm1hcChkLGZ1bmN0aW9uKGEpe3JldHVybiBmKGEudmFsdWUpfSksaz0wO2s8ai5sZW5ndGg7KytrKWlmKGpba10ubGVuZ3RoKXtmb3IodmFyIGw9MDtsPGgubGVuZ3RoOysrbCloW2xdPT1qW2tdJiYoaT0hMSk7aC5wdXNoKGpba10pfWl8fChlKGQsZyksdGhpcy5yZWR1Y3Rpb249YShbXSkpfXJldHVybiB0aGlzfSxzdW06ZnVuY3Rpb24oYixjKXt2YXIgZD0odGhpcy5yZWR1Y3Rpb258fHRoaXMpLmZpbHRlcihhLnZhbGlkaXR5LnNldHRpbmdzLmVsZW1lbnRTdXBwb3J0KTtyZXR1cm4gZC5sZW5ndGgmJmIhPWYoZCkmJihlKGQsY3x8ZyhhLnZhbGlkaXR5Lm1lc3NhZ2VzLnN1bSx7c3VtOmJ9KSksdGhpcy5yZWR1Y3Rpb249YShbXSkpLHRoaXN9LHN1bU1heDpmdW5jdGlvbihiLGMpe3ZhciBkPSh0aGlzLnJlZHVjdGlvbnx8dGhpcykuZmlsdGVyKGEudmFsaWRpdHkuc2V0dGluZ3MuZWxlbWVudFN1cHBvcnQpO3JldHVybiBkLmxlbmd0aCYmYjxmKGQpJiYoZShkLGN8fGcoYS52YWxpZGl0eS5tZXNzYWdlcy5zdW1NYXgse21heDpifSkpLHRoaXMucmVkdWN0aW9uPWEoW10pKSx0aGlzfSxzdW1NaW46ZnVuY3Rpb24oYixjKXt2YXIgZD0odGhpcy5yZWR1Y3Rpb258fHRoaXMpLmZpbHRlcihhLnZhbGlkaXR5LnNldHRpbmdzLmVsZW1lbnRTdXBwb3J0KTtyZXR1cm4gZC5sZW5ndGgmJmI8ZihkKSYmKGUoZCxjfHxnKGEudmFsaWRpdHkubWVzc2FnZXMuc3VtTWluLHttaW46Yn0pKSx0aGlzLnJlZHVjdGlvbj1hKFtdKSksdGhpc30scmFkaW9DaGVja2VkOmZ1bmN0aW9uKGIsYyl7dmFyIGQ9KHRoaXMucmVkdWN0aW9ufHx0aGlzKS5maWx0ZXIoYS52YWxpZGl0eS5zZXR0aW5ncy5lbGVtZW50U3VwcG9ydCk7ZC5pcygiOnJhZGlvIikmJmQuZmluZCgiOmNoZWNrZWQiKS52YWwoKSE9YiYmZShkLGN8fGEudmFsaWRpdHkubWVzc2FnZXMucmFkaW9DaGVja2VkKX0scmFkaW9Ob3RDaGVja2VkOmZ1bmN0aW9uKGIsYyl7dmFyIGQ9KHRoaXMucmVkdWN0aW9ufHx0aGlzKS5maWx0ZXIoYS52YWxpZGl0eS5zZXR0aW5ncy5lbGVtZW50U3VwcG9ydCk7ZC5pcygiOnJhZGlvIikmJmQuZmlsdGVyKCI6Y2hlY2tlZCIpLnZhbCgpPT1iJiZlKGQsY3x8YS52YWxpZGl0eS5tZXNzYWdlcy5yYWRpb0NoZWNrZWQpfSxjaGVja2JveENoZWNrZWQ6ZnVuY3Rpb24oYil7dmFyIGM9KHRoaXMucmVkdWN0aW9ufHx0aGlzKS5maWx0ZXIoYS52YWxpZGl0eS5zZXR0aW5ncy5lbGVtZW50U3VwcG9ydCk7Yy5pcygiOmNoZWNrYm94IikmJiFjLmlzKCI6Y2hlY2tlZCIpJiYoZShjLGJ8fGEudmFsaWRpdHkubWVzc2FnZXMucmFkaW9DaGVja2VkKSxjLnBhcmVudCgpLmFkZENsYXNzKCJ2YWxpZGl0eS1lcnJvbmVvdXMiKSl9LGFzc2VydDpmdW5jdGlvbihjLGQpe3ZhciBmPXRoaXMucmVkdWN0aW9ufHx0aGlzO2lmKGYubGVuZ3RoKXtpZihpc0Z1bmN0aW9uKGMpKXJldHVybiBiKHRoaXMsYyxkfHxhLnZhbGlkaXR5Lm1lc3NhZ2VzLmdlbmVyaWMpO2N8fChlKGYsZHx8YS52YWxpZGl0eS5tZXNzYWdlcy5nZW5lcmljKSx0aGlzLnJlZHVjdGlvbj1hKFtdKSl9cmV0dXJuIHRoaXN9fSksYS5mbi5leHRlbmQoe3ZhbGlkQWxsb3JOb25lOmZ1bmN0aW9uKCl7dmFyIGI9KHRoaXMucmVkdWN0aW9ufHx0aGlzKS5maWx0ZXIoYS52YWxpZGl0eS5zZXR0aW5ncy5lbGVtZW50U3VwcG9ydCksYz0hMDtyZXR1cm4gYi5lYWNoKGZ1bmN0aW9uKCl7aWYoIiIhPWEodGhpcykudmFsKCkpcmV0dXJuIGIuZWFjaChmdW5jdGlvbigpeyIiPT1hKHRoaXMpLnZhbCgpJiYoYz0hMSxkKHRoaXMsZygiIix7ZmllbGQ6aCh0aGlzKX0pKSl9KSwhMX0pLHRoaXN9LHJlcXVpcmVXaXRoV2F0ZXJtYXJrOmZ1bmN0aW9uKGMpe3JldHVybiBiKHRoaXMsZnVuY3Rpb24oYil7dmFyIGM9ZnVuY3Rpb24oYSl7cmV0dXJuIDA8YS50cmltKCkubGVuZ3RofSxkPWEoYikuYXR0cigiYWx0IiksZT1hKGIpLnZhbCgpLnRyaW0oKTtyZXR1cm4gZD9kIT1lJiZjKGUpOmMoZSl9LGN8fGEudmFsaWRpdHkubWVzc2FnZXMucmVxdWlyZSl9LHJlcXVpcmVQb3N0YWxDb2RlOmZ1bmN0aW9uKGMpe3JldHVybiBiKHRoaXMsZnVuY3Rpb24oYil7dmFyIGM9YShiKS52YWwoKS5yZXBsYWNlKC9ccy9nLCIiKS5yZXBsYWNlKC9bXkEtejAtOV0vZywiMCIpLnRvVXBwZXJDYXNlKCk7aWYoMD09Yy5sZW5ndGgpcmV0dXJuITA7aWYoNT5jLmxlbmd0aClyZXR1cm4hMTtpZihaaXBSZWdleD1hLnZhbGlkaXR5LnBhdHRlcm5zLnppcCxudWxsIT1jLm1hdGNoKFppcFJlZ2V4KSlyZXR1cm4hMDtyZXR1cm4gQ2FuYWRhUG9zdFJlZ2V4PS9bQUJDRUdISktMTU5QUlNUVldYWVpdWzAtOV1bQUJDRUdISktMTU5QUlNUVldYWVpdWzAtOV1bQUJDRUdISktMTU5QUlNUVldYWVpdWzAtOV0vLG51bGwhPWMubWF0Y2goQ2FuYWRhUG9zdFJlZ2V4KSYmKGEoYikudmFsKGMuc3Vic3RyaW5nKDAsMykrIiAiK2Muc3Vic3RyaW5nKDMsNikpLCEwKX0sY3x8YS52YWxpZGl0eS5tZXNzYWdlcy5yZXF1aXJlKX0sdmFsaWRFbWFpbEFkZHJlc3M6ZnVuY3Rpb24oYyl7dmFyIGQ9dGhpcyxlPVsiLmNvbSIsIi5jYSIsIi5uZXQiLCIuYml6IiwiLnF1ZWJlYyIsIi5jbyIsIi5pbmZvIiwiLm1vYmkiLCIub3JnIiwiLmluYyJdOzE9PWEoIiNBRE1JTl9HRU5FUkFMX0JMT0NLX0ZSX0RPTUFJTl9DSEVDSyIpLmxlbmd0aCYmIjEiIT1hKCIjQURNSU5fR0VORVJBTF9CTE9DS19GUl9ET01BSU5fQ0hFQ0siKS52YWwoKSYmZS5wdXNoKCIuZnIiKTt2YXIgZj1iKHRoaXMsZnVuY3Rpb24oYil7cmV0dXJuIHJ1bGU9YS52YWxpZGl0eS5wYXR0ZXJucy5lbWFpbCxydWxlLmdsb2JhbCYmKHJ1bGUubGFzdEluZGV4PTApLCFiLnZhbHVlLmxlbmd0aHx8cnVsZS50ZXN0KGIudmFsdWUpfSwiIik7cmV0dXJuIGY\/Yih0aGlzLGZ1bmN0aW9uKGIpe3ZhciBjPWEoYikudmFsKCkudG9Mb3dlckNhc2UoKSxkPSExO2lmKCFjLmxlbmd0aClyZXR1cm4hMDtTdHJpbmcucHJvdG90eXBlLmVuZHNXaXRofHwoU3RyaW5nLnByb3RvdHlwZS5lbmRzV2l0aD1mdW5jdGlvbihhKXt2YXIgYj10aGlzLmxlbmd0aC1hLmxlbmd0aDtyZXR1cm4gMDw9YiYmdGhpcy5sYXN0SW5kZXhPZihhKT09PWJ9KTtmb3IodmFyIGY9MDtmPGUubGVuZ3RoO2YrKyljLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoZVtmXSkmJihkPSEwKTtpZighMT09ZClyZXR1cm4hMTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGVtYWlsSGFuZGxlcil7dmFyIGc9ITA7cmV0dXJuIGVtYWlsSGFuZGxlci52YWxpZGF0ZUVtYWlsKGMpLmRvbmUoZnVuY3Rpb24oYSl7ImludmFsaWQiPT09YS5zdGF0dXMmJihnPSExKX0pLGd9cmV0dXJuITB9LGN8fGEudmFsaWRpdHkubWVzc2FnZXMuZW1haWwpOmN8fGEudmFsaWRpdHkubWVzc2FnZXMuZW1haWx9LHJhZGlvT3B0aW9uQ2hvc2VuOmZ1bmN0aW9uKGIpe3ZhciBjPSh0aGlzLnJlZHVjdGlvbnx8dGhpcykuZmlsdGVyKGEudmFsaWRpdHkuc2V0dGluZ3MuZWxlbWVudFN1cHBvcnQpLGQ9e307Zm9yKHZhciBmIGluIGMuZWFjaChmdW5jdGlvbigpe3ZhciBiPWEodGhpcykuYXR0cigibmFtZSIpOyJ1bmRlZmluZWQiPT10eXBlb2YgZFtiXSYmKGRbYl09W10pLGRbYl0ucHVzaCh0aGlzKX0pLGQpMD09YShkW2ZdKS5maWx0ZXIoIjpyYWRpbyIpLmZpbHRlcigiOmNoZWNrZWQiKS5sZW5ndGgmJmUoYShkW2ZdKSxifHxhLnZhbGlkaXR5Lm1lc3NhZ2VzLnJhZGlvQ2hlY2tlZCl9LG9uZU9yTW9yZUNoZWNrZWQ6ZnVuY3Rpb24oYil7dmFyIGM9KHRoaXMucmVkdWN0aW9ufHx0aGlzKS5maWx0ZXIoYS52YWxpZGl0eS5zZXR0aW5ncy5lbGVtZW50U3VwcG9ydCk7Yy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9Yy5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4hIWEodGhpcykuaXMoIlt0eXBlPWNoZWNrYm94XTpjaGVja2VkIil9KS5sZW5ndGg7MD09ZCYmKGMucGFyZW50cygidWwiKS5maXJzdCgpLmFkZENsYXNzKCJ2YWxpZGl0eS1lcnJvbmVvdXMiKSxlKGMsYnx8YS52YWxpZGl0eS5tZXNzYWdlcy5yYWRpb0NoZWNrZWQpKX0pfSx2YWxpZGF0ZU1vYmlsZTpmdW5jdGlvbihjKXtmb3IodmFyIGQ9KHRoaXMucmVkdWN0aW9ufHx0aGlzKS5maWx0ZXIoYS52YWxpZGl0eS5zZXR0aW5ncy5lbGVtZW50U3VwcG9ydCksZT0hMCxmPSIiLGc9YShkKS5sZW5ndGgsaD1bNDM4LDUxNCwyNjMsNDUwLDU3OSw4MTksMjQ5LDcwNSwyMjYsNTE5LDI4OSwzNjUsOTA1LDQxNiw0MzcsNjQ3LDM0Myw2MTMsNzA5LDg3Myw0MTgsNTgxLDUwNiw5MDJdLGo9MDtqPD1nO2orKylpZihqPGcpZis9YShhKGQpW2pdKS52YWwoKTtlbHNle2lmKGY9Zi5yZXBsYWNlKC9bXjAtOV0rL2dpLCIiKSwwPT09Zi5sZW5ndGgpcmV0dXJuIGIoZCwoKT0+ITAsY3x8YS52YWxpZGl0eS5tZXNzYWdlcy5waG9uZSk7IjEiPT1mWzBdJiYoZj1mLnN1YnN0cmluZygxKSk7dmFyIGs9cGFyc2VJbnQoZi5zdWJzdHJpbmcoMCwzKSk7YS5hamF4KHt1cmw6Imh0dHBzOi8vcmVzdC5kMmNtZWRpYS5jYS9zaXRlcy9zdmMvdmFsaWRhdGVQaG9uZU51bWJlci5waHAiLHR5cGU6IkdFVCIsYXN5bmM6ITEsdGltZW91dDoyZTMsZGF0YVR5cGU6Impzb24iLGRhdGE6e3Bob25lOmYsbW9iaWxlOjEsYXJlYWNvZGU6IkNBIn19KS5kb25lKGZ1bmN0aW9uKGYpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgZi5pc09rKSExPT09Zi5waG9uZU51bWJlcklzVmFsaWQmJihlPSExKTtlbHNlIGlmKCJ1bmRlZmluZWQiIT10eXBlb2YgaC5pbmRleE9mJiYtMT09aC5pbmRleE9mKGspKXJldHVybiExO3JldHVybiBiKGQsZnVuY3Rpb24oKXtyZXR1cm4gZX0sY3x8YS52YWxpZGl0eS5tZXNzYWdlcy5waG9uZSl9KS5mYWlsKGZ1bmN0aW9uKCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBoLmluZGV4T2YmJi0xPT1oLmluZGV4T2YoaykmJihlPSExKSxiKGQsZnVuY3Rpb24oKXtyZXR1cm4gZX0sY3x8YS52YWxpZGl0eS5tZXNzYWdlcy5waG9uZSl9KX19LHZhbGlkYXRlUGhvbmU6ZnVuY3Rpb24oYyl7Zm9yKHZhciBkPSh0aGlzLnJlZHVjdGlvbnx8dGhpcykuZmlsdGVyKGEudmFsaWRpdHkuc2V0dGluZ3MuZWxlbWVudFN1cHBvcnQpLGU9ITAsZj0iIixnPWEoZCkubGVuZ3RoLGg9WzQzOCw1MTQsMjYzLDQ1MCw1NzksODE5LDI0OSw3MDUsMjI2LDUxOSwyODksMzY1LDkwNSw0MTYsNDM3LDY0NywzNDMsNjEzLDcwOSw4NzMsNDE4LDU4MSw1MDYsOTAyXSxqPTA7ajw9ZztqKyspaWYoajxnKWYrPWEoYShkKVtqXSkudmFsKCk7ZWxzZXtpZihmPWYucmVwbGFjZSgvW14wLTldKy9naSwiIiksInVuZGVmaW5lZCIhPXR5cGVvZiBlbWFpbEhhbmRsZXImJnRoaXMuaGFzQ2xhc3MoInJlcXVpcmVkIikmJihlbWFpbEhhbmRsZXIucGhvbmVNYW5kYXRvcnk9ITApLDA9PT1mLmxlbmd0aClyZXR1cm4gYihkLCgpPT4hMCxjfHxhLnZhbGlkaXR5Lm1lc3NhZ2VzLnBob25lKTsiMSI9PWZbMF0mJihmPWYuc3Vic3RyaW5nKDEpKTt2YXIgaz1wYXJzZUludChmLnN1YnN0cmluZygwLDMpKTthLmFqYXgoe3VybDoiaHR0cHM6Ly9yZXN0LmQyY21lZGlhLmNhL3NpdGVzL3N2Yy92YWxpZGF0ZVBob25lTnVtYmVyLnBocCIsdHlwZToiR0VUIixhc3luYzohMSx0aW1lb3V0OjJlMyxkYXRhVHlwZToianNvbiIsZGF0YTp7cGhvbmU6ZixhcmVhY29kZToiQ0EifX0pLmRvbmUoZnVuY3Rpb24oZil7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBmLmlzT2spITE9PT1mLnBob25lTnVtYmVySXNWYWxpZCYmKCJ1bmRlZmluZWQiIT10eXBlb2YgZW1haWxIYW5kbGVyJiZlbWFpbEhhbmRsZXIucGhvbmVNYW5kYXRvcnkmJmVtYWlsSGFuZGxlci5waG9uZVZhbGlkYXRpb25BdHRlbXB0cysrLGU9ITEpO2Vsc2UgaWYoInVuZGVmaW5lZCIhPXR5cGVvZiBoLmluZGV4T2YmJi0xPT1oLmluZGV4T2YoaykpcmV0dXJuITE7cmV0dXJuIGIoZCxmdW5jdGlvbigpe3JldHVybiBlfSxjfHxhLnZhbGlkaXR5Lm1lc3NhZ2VzLnBob25lKX0pLmZhaWwoZnVuY3Rpb24oKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIGguaW5kZXhPZiYmLTE9PWguaW5kZXhPZihrKSYmKCJ1bmRlZmluZWQiIT10eXBlb2YgZW1haWxIYW5kbGVyJiZlbWFpbEhhbmRsZXIucGhvbmVNYW5kYXRvcnkmJmVtYWlsSGFuZGxlci5waG9uZVZhbGlkYXRpb25BdHRlbXB0cysrLGU9ITEpLGIoZCxmdW5jdGlvbigpe3JldHVybiBlfSxjfHxhLnZhbGlkaXR5Lm1lc3NhZ2VzLnBob25lKX0pfX19KX0pKGpRdWVyeSksZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihhKXtyZXR1cm4gYS5hdHRyKCJpZCIpLmxlbmd0aD9hLmF0dHIoImlkIik6YS5hdHRyKCJuYW1lIil9YS52YWxpZGl0eS5vdXRwdXRzLmxhYmVsPXtzdGFydDpmdW5jdGlvbigpe2EoImxhYmVsLiIrYS52YWxpZGl0eS5zZXR0aW5ncy5jc3NDbGFzcykucmVtb3ZlKCl9LGVuZDpmdW5jdGlvbihiKXshYi52YWxpZCYmYS52YWxpZGl0eS5zZXR0aW5ncy5zY3JvbGxUbyYmKGxvY2F0aW9uLmhhc2g9YSgibGFiZWwuIithLnZhbGlkaXR5LnNldHRpbmdzLmNzc0NsYXNzKyI6ZXEoMCkiKS5hdHRyKCJmb3IiKSl9LHJhaXNlOmZ1bmN0aW9uKGMsZCl7dmFyIGU9ImxhYmVsLiIrYS52YWxpZGl0eS5zZXR0aW5ncy5jc3NDbGFzcysiW2Zvcj0nIitiKGMpKyInXSI7YShlKS5sZW5ndGg\/YShlKS50ZXh0KGQpOmEoIjxsYWJlbC8+IikuYXR0cigiZm9yIixiKGMpKS5hZGRDbGFzcyhhLnZhbGlkaXR5LnNldHRpbmdzLmNzc0NsYXNzKS50ZXh0KGQpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtjLmxlbmd0aCYmY1swXS5zZWxlY3QoKX0pLmluc2VydEFmdGVyKGMpfSxyYWlzZUFnZ3JlZ2F0ZTpmdW5jdGlvbihiLGMpe2IubGVuZ3RoJiZ0aGlzLnJhaXNlKGEoYi5nZXQoYi5sZW5ndGgtMSkpLGMpfX19KGpRdWVyeSksZnVuY3Rpb24oYSl7YS52YWxpZGl0eS5vdXRwdXRzLm1vZGFsPXtzdGFydDpmdW5jdGlvbigpe2EoIi52YWxpZGl0eS1tb2RhbC1tc2ciKS5yZW1vdmUoKX0sZW5kOmZ1bmN0aW9uKGIpeyFiLnZhbGlkJiZhLnZhbGlkaXR5LnNldHRpbmdzLnNjcm9sbFRvJiYobG9jYXRpb24uaGFzaD1hKCIudmFsaWRpdHktbW9kYWwtbXNnOmVxKDApIikuYXR0cigiaWQiKSl9LHJhaXNlOmZ1bmN0aW9uKGIsYyl7aWYoYi5sZW5ndGgpe3ZhciBkPWIub2Zmc2V0KCksZT1iLmdldCgwKSxmPXtsZWZ0OnBhcnNlSW50KGQubGVmdCtiLndpZHRoKCkrNCwxMCkrInB4Iix0b3A6cGFyc2VJbnQoZC50b3AtMTAsMTApKyJweCJ9O2EoIjxkaXYvPiIpLmFkZENsYXNzKCJ2YWxpZGl0eS1tb2RhbC1tc2ciKS5jc3MoZikudGV4dChjKS5vbigiY2xpY2siLGEudmFsaWRpdHkuc2V0dGluZ3MubW9kYWxFcnJvcnNDbGlja2FibGU\/ZnVuY3Rpb24oKXthKHRoaXMpLnJlbW92ZSgpfTpudWxsKS5hcHBlbmRUbygiYm9keSIpfX0scmFpc2VBZ2dyZWdhdGU6ZnVuY3Rpb24oYixjKXtiLmxlbmd0aCYmdGhpcy5yYWlzZShhKGIuZ2V0KGIubGVuZ3RoLTEpKSxjKX19fShqUXVlcnkpLGZ1bmN0aW9uKGEpe3ZhciBiPVtdO2EudmFsaWRpdHkub3V0cHV0cy5zdW1tYXJ5PXtzdGFydDpmdW5jdGlvbigpe2EoIi52YWxpZGl0eS1lcnJvbmVvdXMiKS5yZW1vdmVDbGFzcygidmFsaWRpdHktZXJyb25lb3VzIiksYj1bXX0sZW5kOmZ1bmN0aW9uKCl7aWYoYSgiLnZhbGlkaXR5LXN1bW1hcnktY29udGFpbmVyIikuaGlkZSgpLmZpbmQoInVsIikuaHRtbCgiIiksYi5sZW5ndGgpe2Zvcih2YXIgYz0wO2M8Yi5sZW5ndGg7KytjKWEoIjxsaS8+IikudGV4dChiW2NdKS5hcHBlbmRUbygiLnZhbGlkaXR5LXN1bW1hcnktY29udGFpbmVyIHVsIik7YSgiLnZhbGlkaXR5LXN1bW1hcnktY29udGFpbmVyIikuc2hvdygpLGEudmFsaWRpdHkuc2V0dGluZ3Muc2Nyb2xsVG8mJihsb2NhdGlvbi5oYXNoPWEoIi52YWxpZGl0eS1lcnJvbmVvdXM6ZXEoMCkiKS5hdHRyKCJpZCIpKX19LHJhaXNlOmZ1bmN0aW9uKGEsYyl7Yi5wdXNoKGMpO3ZhciBkPWEuY2xvc2VzdCgiZm9ybSIpLmhhc0NsYXNzKCJqcXRyYW5zZm9ybWRvbmUiKTthLnBhcmVudCgpLmlzKCJkaXYiKSYmZD8oYS5wYXJlbnQoKS5hZGRDbGFzcygidmFsaWRpdHktZXJyb25lb3VzIiksYS5wYXJlbnQoKS5wYXJlbnQoKS5hZGRDbGFzcygidmFsaWRpdHktZXJyb25lb3VzIikpOmEuYWRkQ2xhc3MoInZhbGlkaXR5LWVycm9uZW91cyIpfSxyYWlzZUFnZ3JlZ2F0ZTpmdW5jdGlvbihhLGIpe3RoaXMucmFpc2UoYSxiKX0sY29udGFpbmVyOmZ1bmN0aW9uKCl7ZG9jdW1lbnQud3JpdGUoIjxkaXYgY2xhc3M9XCJ2YWxpZGl0eS1zdW1tYXJ5LWNvbnRhaW5lclwiPlRoZSBmb3JtIGRpZG4ndCBzdWJtaXQgZm9yIHRoZSBmb2xsb3dpbmcgcmVhc29uKHMpOjx1bD48L3VsPjwvZGl2PiIpfX19KGpRdWVyeSksZnVuY3Rpb24oKXt2YXIgYT1mdW5jdGlvbigpeyQodGhpcykucmVtb3ZlQ2xhc3MoInZhbGlkaXR5LWVycm9uZW91cyIpfTskLnZhbGlkaXR5Lm91dHB1dHMucXVpY2ttYWlsPXtzdGFydDpmdW5jdGlvbigpe30sZW5kOmZ1bmN0aW9uKCl7fSxyYWlzZTpmdW5jdGlvbihhKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGEuV2F0ZXJtYXJrJiYidW5kZWZpbmVkIiE9YS5hdHRyKCJhbHQiKSl7YS5XYXRlcm1hcmsoYS5hdHRyKCJhbHQiKSwiI0ZGQkFCQSIpO3ZhciBiPWZ1bmN0aW9uKCl7YS5XYXRlcm1hcmsoYS5hdHRyKCJhbHQiKSl9fWVsc2V7YS5jc3MoImJhY2tncm91bmQtY29sb3IiLCIjZmY3ZTc5Iik7dmFyIGI9ZnVuY3Rpb24oKXt0bXA9dG1wP3RtcDoidHJhbnNwYXJlbnQiLGEuY3NzKCJiYWNrZ3JvdW5kLWNvbG9yIix0bXApfX0kKGRvY3VtZW50KS5vbigibW91c2Vkb3duIixiKX0sY29udGFpbmVyOmZ1bmN0aW9uKCl7fX0sJC52YWxpZGl0eS5vdXRwdXRzLnBvcHVwPXtzdGFydDpmdW5jdGlvbigpeyQoZG9jdW1lbnQpLm9mZigidG91Y2hzdGFydCBtb3VzZWRvd24iLCIudmFsaWRpdHktZXJyb25lb3VzIixhKX0sZW5kOmZ1bmN0aW9uKGIpe3JldHVybiBiLnZhbGlkfHwkKGRvY3VtZW50KS5vbigidG91Y2hzdGFydCBtb3VzZWRvd24iLCIudmFsaWRpdHktZXJyb25lb3VzIixhKSxifSxyYWlzZTpmdW5jdGlvbihhKXt2YXIgYj1hLmNsb3Nlc3QoImZvcm0iKS5oYXNDbGFzcygianF0cmFuc2Zvcm1kb25lIik7YS5wYXJlbnQoKS5pcygiZGl2IikmJmI\/KGEucGFyZW50KCkuYWRkQ2xhc3MoInZhbGlkaXR5LWVycm9uZW91cyIpLGEucGFyZW50KCkucGFyZW50KCkuYWRkQ2xhc3MoInZhbGlkaXR5LWVycm9uZW91cyIpKTphLmFkZENsYXNzKCJ2YWxpZGl0eS1lcnJvbmVvdXMiKX0scmFpc2VBZ2dyZWdhdGU6ZnVuY3Rpb24oYSl7Y29uc29sZS5sb2coYSksYS5pcygiOnJhZGlvIikmJmEuaXMoIi5qcVRyYW5zZm9ybUhpZGRlbiIpJiZhLnBhcmVudCgpLnBhcmVudCgpLmFkZENsYXNzKCJ2YWxpZGl0eS1lcnJvbmVvdXMiKX19fSgpLGZ1bmN0aW9uKGEpe2EudmFsaWRpdHkub3V0cHV0cy5jc3NPbmx5PXtzdGFydDpmdW5jdGlvbigpe2EoYS52YWxpZGl0eS5zZXR0aW5ncy5jc3NDbGFzcykucmVtb3ZlQ2xhc3MoYS52YWxpZGl0eS5zZXR0aW5ncy5jc3NDbGFzcyl9LGVuZDpmdW5jdGlvbihiKXshYi52YWxpZCYmYS52YWxpZGl0eS5zZXR0aW5ncy5zY3JvbGxUbyYmKGxvY2F0aW9uLmhhc2g9YShhLnZhbGlkaXR5LnNldHRpbmdzLmNzc0NsYXNzKyI6ZXEoMCkiKS5hdHRyKCJpZCIpKX0scmFpc2U6ZnVuY3Rpb24oYil7YShiKS5hZGRDbGFzcyhhLnZhbGlkaXR5LnNldHRpbmdzLmNzc0NsYXNzKX0scmFpc2VBZ2dyZWdhdGU6ZnVuY3Rpb24oYixjKXtiLmxlbmd0aCYmdGhpcy5yYWlzZShhKGIuZ2V0KGIubGVuZ3RoLTEpKSxjKX19fShqUXVlcnkpOwovKiogL20vanMvbWFpbi5qcyAqKi8KdmFyIF9fX2QyY19tYWluanNfY19vbj0iMjAyNi0wMi0yNiAwOTozMDowNCI7J3VzZSBzdHJpY3QnO3ZhciAkanNjb21wPSRqc2NvbXB8fHt9OyRqc2NvbXAuc2NvcGU9e307JGpzY29tcC5BU1NVTUVfRVM1PSExOyRqc2NvbXAuQVNTVU1FX05PX05BVElWRV9NQVA9ITE7JGpzY29tcC5BU1NVTUVfTk9fTkFUSVZFX1NFVD0hMTskanNjb21wLlNJTVBMRV9GUk9VTkRfUE9MWUZJTEw9ITE7JGpzY29tcC5JU09MQVRFX1BPTFlGSUxMUz0hMTskanNjb21wLkZPUkNFX1BPTFlGSUxMX1BST01JU0U9ITE7JGpzY29tcC5GT1JDRV9QT0xZRklMTF9QUk9NSVNFX1dIRU5fTk9fVU5IQU5ETEVEX1JFSkVDVElPTj0hMTskanNjb21wLmRlZmluZVByb3BlcnR5PSRqc2NvbXAuQVNTVU1FX0VTNXx8ImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzP09iamVjdC5kZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbihhLGIsYyl7aWYoYT09QXJyYXkucHJvdG90eXBlfHxhPT1PYmplY3QucHJvdG90eXBlKXJldHVybiBhO2FbYl09Yy52YWx1ZTtyZXR1cm4gYX07CiRqc2NvbXAuZ2V0R2xvYmFsPWZ1bmN0aW9uKGEpe2E9WyJvYmplY3QiPT10eXBlb2YgZ2xvYmFsVGhpcyYmZ2xvYmFsVGhpcyxhLCJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3csIm9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmLCJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWxdO2Zvcih2YXIgYj0wO2I8YS5sZW5ndGg7KytiKXt2YXIgYz1hW2JdO2lmKGMmJmMuTWF0aD09TWF0aClyZXR1cm4gY310aHJvdyBFcnJvcigiQ2Fubm90IGZpbmQgZ2xvYmFsIG9iamVjdCIpO307JGpzY29tcC5nbG9iYWw9JGpzY29tcC5nZXRHbG9iYWwodGhpcyk7JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFPSJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09PXR5cGVvZiBTeW1ib2woIngiKTskanNjb21wLlRSVVNUX0VTNl9QT0xZRklMTFM9ISRqc2NvbXAuSVNPTEFURV9QT0xZRklMTFN8fCRqc2NvbXAuSVNfU1lNQk9MX05BVElWRTskanNjb21wLnBvbHlmaWxscz17fTsKJGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2w9e307JGpzY29tcC5QT0xZRklMTF9QUkVGSVg9IiRqc2NwJCI7dmFyICRqc2NvbXAkbG9va3VwUG9seWZpbGxlZFZhbHVlPWZ1bmN0aW9uKGEsYil7dmFyIGM9JGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbYl07aWYobnVsbD09YylyZXR1cm4gYVtiXTtjPWFbY107cmV0dXJuIHZvaWQgMCE9PWM\/YzphW2JdfTskanNjb21wLnBvbHlmaWxsPWZ1bmN0aW9uKGEsYixjLGQpe2ImJigkanNjb21wLklTT0xBVEVfUE9MWUZJTExTPyRqc2NvbXAucG9seWZpbGxJc29sYXRlZChhLGIsYyxkKTokanNjb21wLnBvbHlmaWxsVW5pc29sYXRlZChhLGIsYyxkKSl9OwokanNjb21wLnBvbHlmaWxsVW5pc29sYXRlZD1mdW5jdGlvbihhLGIsYyxkKXtjPSRqc2NvbXAuZ2xvYmFsO2E9YS5zcGxpdCgiLiIpO2ZvcihkPTA7ZDxhLmxlbmd0aC0xO2QrKyl7dmFyIGU9YVtkXTtpZighKGUgaW4gYykpcmV0dXJuO2M9Y1tlXX1hPWFbYS5sZW5ndGgtMV07ZD1jW2FdO2I9YihkKTtiIT1kJiZudWxsIT1iJiYkanNjb21wLmRlZmluZVByb3BlcnR5KGMsYSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmJ9KX07CiRqc2NvbXAucG9seWZpbGxJc29sYXRlZD1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1hLnNwbGl0KCIuIik7YT0xPT09ZS5sZW5ndGg7ZD1lWzBdO2Q9IWEmJmQgaW4gJGpzY29tcC5wb2x5ZmlsbHM\/JGpzY29tcC5wb2x5ZmlsbHM6JGpzY29tcC5nbG9iYWw7Zm9yKHZhciBrPTA7azxlLmxlbmd0aC0xO2srKyl7dmFyIGg9ZVtrXTtpZighKGggaW4gZCkpcmV0dXJuO2Q9ZFtoXX1lPWVbZS5sZW5ndGgtMV07Yz0kanNjb21wLklTX1NZTUJPTF9OQVRJVkUmJiJlczYiPT09Yz9kW2VdOm51bGw7Yj1iKGMpO251bGwhPWImJihhPyRqc2NvbXAuZGVmaW5lUHJvcGVydHkoJGpzY29tcC5wb2x5ZmlsbHMsZSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmJ9KTpiIT09YyYmKHZvaWQgMD09PSRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sW2VdJiYoYz0xRTkqTWF0aC5yYW5kb20oKT4+PjAsJGpzY29tcC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbZV09JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFPwokanNjb21wLmdsb2JhbC5TeW1ib2woZSk6JGpzY29tcC5QT0xZRklMTF9QUkVGSVgrYysiJCIrZSksJGpzY29tcC5kZWZpbmVQcm9wZXJ0eShkLCRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sW2VdLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Yn0pKSl9OyRqc2NvbXAudW5kZXJzY29yZVByb3RvQ2FuQmVTZXQ9ZnVuY3Rpb24oKXt2YXIgYT17YTohMH0sYj17fTt0cnl7cmV0dXJuIGIuX19wcm90b19fPWEsYi5hfWNhdGNoKGMpe31yZXR1cm4hMX07CiRqc2NvbXAuc2V0UHJvdG90eXBlT2Y9JGpzY29tcC5UUlVTVF9FUzZfUE9MWUZJTExTJiYiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZjokanNjb21wLnVuZGVyc2NvcmVQcm90b0NhbkJlU2V0KCk\/ZnVuY3Rpb24oYSxiKXthLl9fcHJvdG9fXz1iO2lmKGEuX19wcm90b19fIT09Yil0aHJvdyBuZXcgVHlwZUVycm9yKGErIiBpcyBub3QgZXh0ZW5zaWJsZSIpO3JldHVybiBhfTpudWxsOyRqc2NvbXAuYXJyYXlJdGVyYXRvckltcGw9ZnVuY3Rpb24oYSl7dmFyIGI9MDtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYjxhLmxlbmd0aD97ZG9uZTohMSx2YWx1ZTphW2IrK119Ontkb25lOiEwfX19OyRqc2NvbXAuYXJyYXlJdGVyYXRvcj1mdW5jdGlvbihhKXtyZXR1cm57bmV4dDokanNjb21wLmFycmF5SXRlcmF0b3JJbXBsKGEpfX07CiRqc2NvbXAubWFrZUl0ZXJhdG9yPWZ1bmN0aW9uKGEpe3ZhciBiPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3ImJmFbU3ltYm9sLml0ZXJhdG9yXTtyZXR1cm4gYj9iLmNhbGwoYSk6JGpzY29tcC5hcnJheUl0ZXJhdG9yKGEpfTskanNjb21wLmdlbmVyYXRvcj17fTskanNjb21wLmdlbmVyYXRvci5lbnN1cmVJdGVyYXRvclJlc3VsdElzT2JqZWN0Xz1mdW5jdGlvbihhKXtpZighKGEgaW5zdGFuY2VvZiBPYmplY3QpKXRocm93IG5ldyBUeXBlRXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCAiK2ErIiBpcyBub3QgYW4gb2JqZWN0Iik7fTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dD1mdW5jdGlvbigpe3RoaXMuaXNSdW5uaW5nXz0hMTt0aGlzLnlpZWxkQWxsSXRlcmF0b3JfPW51bGw7dGhpcy55aWVsZFJlc3VsdD12b2lkIDA7dGhpcy5uZXh0QWRkcmVzcz0xO3RoaXMuZmluYWxseUFkZHJlc3NfPXRoaXMuY2F0Y2hBZGRyZXNzXz0wO3RoaXMuZmluYWxseUNvbnRleHRzXz10aGlzLmFicnVwdENvbXBsZXRpb25fPW51bGx9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnN0YXJ0Xz1mdW5jdGlvbigpe2lmKHRoaXMuaXNSdW5uaW5nXyl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7dGhpcy5pc1J1bm5pbmdfPSEwfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5zdG9wXz1mdW5jdGlvbigpe3RoaXMuaXNSdW5uaW5nXz0hMX07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmp1bXBUb0Vycm9ySGFuZGxlcl89ZnVuY3Rpb24oKXt0aGlzLm5leHRBZGRyZXNzPXRoaXMuY2F0Y2hBZGRyZXNzX3x8dGhpcy5maW5hbGx5QWRkcmVzc199OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLm5leHRfPWZ1bmN0aW9uKGEpe3RoaXMueWllbGRSZXN1bHQ9YX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUudGhyb3dfPWZ1bmN0aW9uKGEpe3RoaXMuYWJydXB0Q29tcGxldGlvbl89e2V4Y2VwdGlvbjphLGlzRXhjZXB0aW9uOiEwfTt0aGlzLmp1bXBUb0Vycm9ySGFuZGxlcl8oKX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUucmV0dXJuPWZ1bmN0aW9uKGEpe3RoaXMuYWJydXB0Q29tcGxldGlvbl89e3JldHVybjphfTt0aGlzLm5leHRBZGRyZXNzPXRoaXMuZmluYWxseUFkZHJlc3NffTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuanVtcFRocm91Z2hGaW5hbGx5QmxvY2tzPWZ1bmN0aW9uKGEpe3RoaXMuYWJydXB0Q29tcGxldGlvbl89e2p1bXBUbzphfTt0aGlzLm5leHRBZGRyZXNzPXRoaXMuZmluYWxseUFkZHJlc3NffTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS55aWVsZD1mdW5jdGlvbihhLGIpe3RoaXMubmV4dEFkZHJlc3M9YjtyZXR1cm57dmFsdWU6YX19OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnlpZWxkQWxsPWZ1bmN0aW9uKGEsYil7YT0kanNjb21wLm1ha2VJdGVyYXRvcihhKTt2YXIgYz1hLm5leHQoKTskanNjb21wLmdlbmVyYXRvci5lbnN1cmVJdGVyYXRvclJlc3VsdElzT2JqZWN0XyhjKTtpZihjLmRvbmUpdGhpcy55aWVsZFJlc3VsdD1jLnZhbHVlLHRoaXMubmV4dEFkZHJlc3M9YjtlbHNlIHJldHVybiB0aGlzLnlpZWxkQWxsSXRlcmF0b3JfPWEsdGhpcy55aWVsZChjLnZhbHVlLGIpfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuanVtcFRvPWZ1bmN0aW9uKGEpe3RoaXMubmV4dEFkZHJlc3M9YX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuanVtcFRvRW5kPWZ1bmN0aW9uKCl7dGhpcy5uZXh0QWRkcmVzcz0wfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5zZXRDYXRjaEZpbmFsbHlCbG9ja3M9ZnVuY3Rpb24oYSxiKXt0aGlzLmNhdGNoQWRkcmVzc189YTt2b2lkIDAhPWImJih0aGlzLmZpbmFsbHlBZGRyZXNzXz1iKX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuc2V0RmluYWxseUJsb2NrPWZ1bmN0aW9uKGEpe3RoaXMuY2F0Y2hBZGRyZXNzXz0wO3RoaXMuZmluYWxseUFkZHJlc3NfPWF8fDB9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmxlYXZlVHJ5QmxvY2s9ZnVuY3Rpb24oYSxiKXt0aGlzLm5leHRBZGRyZXNzPWE7dGhpcy5jYXRjaEFkZHJlc3NfPWJ8fDB9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5lbnRlckNhdGNoQmxvY2s9ZnVuY3Rpb24oYSl7dGhpcy5jYXRjaEFkZHJlc3NfPWF8fDA7YT10aGlzLmFicnVwdENvbXBsZXRpb25fLmV4Y2VwdGlvbjt0aGlzLmFicnVwdENvbXBsZXRpb25fPW51bGw7cmV0dXJuIGF9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmVudGVyRmluYWxseUJsb2NrPWZ1bmN0aW9uKGEsYixjKXtjP3RoaXMuZmluYWxseUNvbnRleHRzX1tjXT10aGlzLmFicnVwdENvbXBsZXRpb25fOnRoaXMuZmluYWxseUNvbnRleHRzXz1bdGhpcy5hYnJ1cHRDb21wbGV0aW9uX107dGhpcy5jYXRjaEFkZHJlc3NfPWF8fDA7dGhpcy5maW5hbGx5QWRkcmVzc189Ynx8MH07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmxlYXZlRmluYWxseUJsb2NrPWZ1bmN0aW9uKGEsYil7Yj10aGlzLmZpbmFsbHlDb250ZXh0c18uc3BsaWNlKGJ8fDApWzBdO2lmKGI9dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz10aGlzLmFicnVwdENvbXBsZXRpb25ffHxiKXtpZihiLmlzRXhjZXB0aW9uKXJldHVybiB0aGlzLmp1bXBUb0Vycm9ySGFuZGxlcl8oKTt2b2lkIDAhPWIuanVtcFRvJiZ0aGlzLmZpbmFsbHlBZGRyZXNzXzxiLmp1bXBUbz8odGhpcy5uZXh0QWRkcmVzcz1iLmp1bXBUbyx0aGlzLmFicnVwdENvbXBsZXRpb25fPW51bGwpOnRoaXMubmV4dEFkZHJlc3M9dGhpcy5maW5hbGx5QWRkcmVzc199ZWxzZSB0aGlzLm5leHRBZGRyZXNzPWF9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmZvckluPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5Qcm9wZXJ0eUl0ZXJhdG9yKGEpfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5Qcm9wZXJ0eUl0ZXJhdG9yPWZ1bmN0aW9uKGEpe3RoaXMub2JqZWN0Xz1hO3RoaXMucHJvcGVydGllc189W107Zm9yKHZhciBiIGluIGEpdGhpcy5wcm9wZXJ0aWVzXy5wdXNoKGIpO3RoaXMucHJvcGVydGllc18ucmV2ZXJzZSgpfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LlByb3BlcnR5SXRlcmF0b3IucHJvdG90eXBlLmdldE5leHQ9ZnVuY3Rpb24oKXtmb3IoOzA8dGhpcy5wcm9wZXJ0aWVzXy5sZW5ndGg7KXt2YXIgYT10aGlzLnByb3BlcnRpZXNfLnBvcCgpO2lmKGEgaW4gdGhpcy5vYmplY3RfKXJldHVybiBhfXJldHVybiBudWxsfTskanNjb21wLmdlbmVyYXRvci5FbmdpbmVfPWZ1bmN0aW9uKGEpe3RoaXMuY29udGV4dF89bmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQ7dGhpcy5wcm9ncmFtXz1hfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUubmV4dF89ZnVuY3Rpb24oYSl7dGhpcy5jb250ZXh0Xy5zdGFydF8oKTtpZih0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfKXJldHVybiB0aGlzLnlpZWxkQWxsU3RlcF8odGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXy5uZXh0LGEsdGhpcy5jb250ZXh0Xy5uZXh0Xyk7dGhpcy5jb250ZXh0Xy5uZXh0XyhhKTtyZXR1cm4gdGhpcy5uZXh0U3RlcF8oKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLnJldHVybl89ZnVuY3Rpb24oYSl7dGhpcy5jb250ZXh0Xy5zdGFydF8oKTt2YXIgYj10aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfO2lmKGIpcmV0dXJuIHRoaXMueWllbGRBbGxTdGVwXygicmV0dXJuImluIGI\/YlsicmV0dXJuIl06ZnVuY3Rpb24oYyl7cmV0dXJue3ZhbHVlOmMsZG9uZTohMH19LGEsdGhpcy5jb250ZXh0Xy5yZXR1cm4pO3RoaXMuY29udGV4dF8ucmV0dXJuKGEpO3JldHVybiB0aGlzLm5leHRTdGVwXygpfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUudGhyb3dfPWZ1bmN0aW9uKGEpe3RoaXMuY29udGV4dF8uc3RhcnRfKCk7aWYodGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXylyZXR1cm4gdGhpcy55aWVsZEFsbFN0ZXBfKHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl9bInRocm93Il0sYSx0aGlzLmNvbnRleHRfLm5leHRfKTt0aGlzLmNvbnRleHRfLnRocm93XyhhKTtyZXR1cm4gdGhpcy5uZXh0U3RlcF8oKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLnlpZWxkQWxsU3RlcF89ZnVuY3Rpb24oYSxiLGMpe3RyeXt2YXIgZD1hLmNhbGwodGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXyxiKTskanNjb21wLmdlbmVyYXRvci5lbnN1cmVJdGVyYXRvclJlc3VsdElzT2JqZWN0XyhkKTtpZighZC5kb25lKXJldHVybiB0aGlzLmNvbnRleHRfLnN0b3BfKCksZDt2YXIgZT1kLnZhbHVlfWNhdGNoKGspe3JldHVybiB0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfPW51bGwsdGhpcy5jb250ZXh0Xy50aHJvd18oayksdGhpcy5uZXh0U3RlcF8oKX10aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfPW51bGw7Yy5jYWxsKHRoaXMuY29udGV4dF8sZSk7cmV0dXJuIHRoaXMubmV4dFN0ZXBfKCl9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS5uZXh0U3RlcF89ZnVuY3Rpb24oKXtmb3IoO3RoaXMuY29udGV4dF8ubmV4dEFkZHJlc3M7KXRyeXt2YXIgYT10aGlzLnByb2dyYW1fKHRoaXMuY29udGV4dF8pO2lmKGEpcmV0dXJuIHRoaXMuY29udGV4dF8uc3RvcF8oKSx7dmFsdWU6YS52YWx1ZSxkb25lOiExfX1jYXRjaChiKXt0aGlzLmNvbnRleHRfLnlpZWxkUmVzdWx0PXZvaWQgMCx0aGlzLmNvbnRleHRfLnRocm93XyhiKX10aGlzLmNvbnRleHRfLnN0b3BfKCk7aWYodGhpcy5jb250ZXh0Xy5hYnJ1cHRDb21wbGV0aW9uXyl7YT10aGlzLmNvbnRleHRfLmFicnVwdENvbXBsZXRpb25fO3RoaXMuY29udGV4dF8uYWJydXB0Q29tcGxldGlvbl89bnVsbDtpZihhLmlzRXhjZXB0aW9uKXRocm93IGEuZXhjZXB0aW9uO3JldHVybnt2YWx1ZTphLnJldHVybixkb25lOiEwfX1yZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fTsKJGpzY29tcC5nZW5lcmF0b3IuR2VuZXJhdG9yXz1mdW5jdGlvbihhKXt0aGlzLm5leHQ9ZnVuY3Rpb24oYil7cmV0dXJuIGEubmV4dF8oYil9O3RoaXMudGhyb3c9ZnVuY3Rpb24oYil7cmV0dXJuIGEudGhyb3dfKGIpfTt0aGlzLnJldHVybj1mdW5jdGlvbihiKXtyZXR1cm4gYS5yZXR1cm5fKGIpfTt0aGlzW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc319OyRqc2NvbXAuZ2VuZXJhdG9yLmNyZWF0ZUdlbmVyYXRvcj1mdW5jdGlvbihhLGIpe2I9bmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkdlbmVyYXRvcl8obmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8oYikpOyRqc2NvbXAuc2V0UHJvdG90eXBlT2YmJmEucHJvdG90eXBlJiYkanNjb21wLnNldFByb3RvdHlwZU9mKGIsYS5wcm90b3R5cGUpO3JldHVybiBifTsKJGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yPWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoZCl7cmV0dXJuIGEubmV4dChkKX1mdW5jdGlvbiBjKGQpe3JldHVybiBhLnRocm93KGQpfXJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihkLGUpe2Z1bmN0aW9uIGsoaCl7aC5kb25lP2QoaC52YWx1ZSk6UHJvbWlzZS5yZXNvbHZlKGgudmFsdWUpLnRoZW4oYixjKS50aGVuKGssZSl9ayhhLm5leHQoKSl9KX07JGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24oYSl7cmV0dXJuICRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvcihhKCkpfTskanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3JQcm9ncmFtPWZ1bmN0aW9uKGEpe3JldHVybiAkanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3IobmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkdlbmVyYXRvcl8obmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8oYSkpKX07CmpRdWVyeS5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGpRdWVyeX07alF1ZXJ5LmV2ZW50LnNwZWNpYWwudG91Y2hzdGFydD17c2V0dXA6ZnVuY3Rpb24oYSxiLGMpe2IuaW5jbHVkZXMoIm5vUHJldmVudERlZmF1bHQiKT90aGlzLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLGMse3Bhc3NpdmU6ITF9KTp0aGlzLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLGMse3Bhc3NpdmU6ITB9KX19O2pRdWVyeS5leHByLnBzZXVkb3MucmVhbGx5VmlzaWJsZT1mdW5jdGlvbihhKXt0cnl7aWYoYT09ZG9jdW1lbnQuYm9keSlyZXR1cm4hMDt2YXIgYj1qUXVlcnkoYSk7cmV0dXJuIGIuaXMoIjp2aXNpYmxlIikmJiJoaWRkZW4iIT09Yi5jc3MoInZpc2liaWxpdHkiKSYmMDxiLnBhcmVudCgiOnJlYWxseVZpc2libGUiKS5sZW5ndGh9Y2F0Y2goYyl7cmV0dXJuIGNvbnNvbGUubG9nKGMubWVzc2FnZSxjKSwhMX19OwpBcnJheS5wcm90b3R5cGUuZmluZHx8T2JqZWN0LmRlZmluZVByb3BlcnR5KEFycmF5LnByb3RvdHlwZSwiZmluZCIse3ZhbHVlOmZ1bmN0aW9uKGEsYil7aWYobnVsbD09dGhpcyl0aHJvdyBUeXBlRXJyb3IoJyJ0aGlzIiBpcyBudWxsIG9yIG5vdCBkZWZpbmVkJyk7dmFyIGM9T2JqZWN0KHRoaXMpLGQ9Yy5sZW5ndGg+Pj4wO2lmKCJmdW5jdGlvbiIhPT10eXBlb2YgYSl0aHJvdyBUeXBlRXJyb3IoInByZWRpY2F0ZSBtdXN0IGJlIGEgZnVuY3Rpb24iKTtmb3IodmFyIGU9MDtlPGQ7KXt2YXIgaz1jW2VdO2lmKGEuY2FsbChiLGssZSxjKSlyZXR1cm4gaztlKyt9fSxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTsKdmFyIGlzRnVuY3Rpb249YT0+ImZ1bmN0aW9uIj09PXR5cGVvZiBhLHRyaW09YT0+YS5yZXBsYWNlKC9eXHMrfFxzKyQvZywiIiksZGVidWc9ZnVuY3Rpb24oKXtpZihkZWJ1Z0VuYWJsZWQoKSl7dmFyIGE9Y29uc29sZSxiPWFyZ3VtZW50czsiZnVuY3Rpb24iPT10eXBlb2YgYS5sb2cmJmEubG9nLmFwcGx5KGEsYil9fSxkZWJ1Z0VuYWJsZWQ9ZnVuY3Rpb24oKXt2YXIgYT1kb2N1bWVudC5sb2NhdGlvbi5ob3N0O3ZhciBiPWRvY3VtZW50LmNvb2tpZS5tYXRjaCgvdGVzdGluZz0oW147XSspL2kpO2I9bnVsbD09Yj8hMTpiWzFdO3JldHVybiBifHwvXihkZWFsZXJ8ZGVtbyl8ZDJjbWVkaWFcLmNhJC8udGVzdChhKSYmIm9mZiIhPWJ9LGVuYWJsZURlYnVnPWZ1bmN0aW9uKCl7Q29va2llcy5zZXQoInRlc3RpbmciLCJvbiIpfSxkaXNhYmxlRGVidWc9ZnVuY3Rpb24oKXtDb29raWVzLnNldCgidGVzdGluZyIsIm9mZiIpfSxBbGVydEJhcj1mdW5jdGlvbihhKXt2YXIgYj1hLnNlY3Rpb25zLnRvTG93ZXJDYXNlKCksCmM9YS5jdXJyZW50LnRvTG93ZXJDYXNlKCksZD0kKCIuaGVhZGVyLXdyYXBwZXIiKS5sZW5ndGg\/JCgiLmhlYWRlci13cmFwcGVyIik6JCgiI21haW5EaXYiKSxlPSQoIiNhbGVydE1zZ0NvbnRhaW5lciIpLGs9JCgiYm9keSIpLGg9JCgiLkFkZGVkVG9wTGlua0RpdiIpLG49bmV3IERhdGU7bi5zZXRUaW1lKG4uZ2V0VGltZSgpKzM2RTUpO3ZhciB4PWZ1bmN0aW9uKCl7Q29va2llcy5zZXQoImFsZXJ0TWVzc2FnZUNsb3NlZCIsMSxuLCIvIik7ZS5oaWRlKCk7ZC5jc3Moe21hcmdpblRvcDowfSk7ay5jc3MoImJhY2tncm91bmQtcG9zaXRpb24teSIsIiIpOzA8aC5sZW5ndGgmJmguY3NzKCJtYXJnaW4tdG9wIiwiIil9Oy0xPGIuaW5kZXhPZihjKSYmIUNvb2tpZXMuZ2V0KCJhbGVydE1lc3NhZ2VDbG9zZWQiKSYmKGUuY3NzKHtiYWNrZ3JvdW5kQ29sb3I6YS5jb2xvcn0pLCQoIi5jbG9zZSIsZSkub24oImNsaWNrIix4KSxkLmNzcygibWFyZ2luLXRvcCIsZS5oZWlnaHQoKSsicHgiKSwKay5jc3MoeyJiYWNrZ3JvdW5kLXBvc2l0aW9uLXkiOmUuaGVpZ2h0KCkrInB4In0pLDA8aC5sZW5ndGgmJmguY3NzKCJtYXJnaW4tdG9wIixlLmhlaWdodCgpKyJweCIpLGUuc2hvdygpKX07ZnVuY3Rpb24gTGVhZEdlbkFERihhLGIsYyxkLGUsayxoLG4pe2lmKHR5cGVvZiBjYXJwcm9vZkhhbmRsZXIpcmV0dXJuIGNhcnByb29mSGFuZGxlci5sZWFkR2VuLmFwcGx5KGNhcnByb29mSGFuZGxlcixhcmd1bWVudHMpfQpmdW5jdGlvbiBydW5JbWFnZVBvcHVwRmlyZXdvcmtzKCl7InVuZGVmaW5lZCIhPXR5cGVvZiBGaXJld29ya1RpbWVyJiYoaW1hZ2VGaXJld29ya3M9ITAsRmlyZXdvcmtUaW1lcigiYmdJbWFnZSIsIkZGRkZGRiIsMjAwLDIwMCksRmlyZXdvcmtUaW1lcigiYmdJbWFnZSIsIkZGMDAwMCIsMzgwLDI1MCwxRTMpLEZpcmV3b3JrVGltZXIoImJnSW1hZ2UiLCIwMGZmMTEiLDkwLDE3MCwyRTMpLEZpcmV3b3JrVGltZXIoImJnSW1hZ2UiLCI0NGNkZmYiLDMyMCwyNTAsM0UzLDAsLjgpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtydW5JbWFnZVBvcHVwRmlyZXdvcmtzKCl9LDFFNCkpfQpmdW5jdGlvbiBoYW5kbGVBY3Rpb25DbGljayhhKXthPWF8fHdpbmRvdy5ldmVudDthPWEuY3VycmVudFRhcmdldHx8YS5zcmNFbGVtZW50O3ZhciBiPXdpbmRvdy5sb2NhdGlvbi5ocmVmLnN1YnN0cmluZyh3aW5kb3cubG9jYXRpb24uaHJlZi5sYXN0SW5kZXhPZigiLyIpKzEpLGM9InVzZWQiO3ZhciBkPSIiO2lmKC0xPT13aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKCItaWQiKSl7ZD1iLnJlcGxhY2UoIi5odG1sIiwiIikuc3BsaXQoIi0iKTtpZigzPmQubGVuZ3RofHwtMTxiLmluZGV4T2YoInNlYXJjaCIpfHwtMTxiLmluZGV4T2YoImZpbmQtIil8fC0xPGIuaW5kZXhPZigicmVjaGVyY2hlIil8fC0xPGIuaW5kZXhPZigicHJpeC0iKXx8LTE8Yi5pbmRleE9mKCJwcmljZS0iKXx8LTE8Yi5pbmRleE9mKCJlc3NhaXMtcm91dGllci0iKXx8LTE8Yi5pbmRleE9mKCJ0ZXN0LWRyaXZlLSIpfHwtMTxiLmluZGV4T2YoInZlaGljdWxlLWVjaGFuZ2UtIil8fC0xPGIuaW5kZXhPZigidHJhZGUtaW4tIil8fAotMTxiLmluZGV4T2YoInBuZXVzLXBpZWNlcy0iKXx8LTE8Yi5pbmRleE9mKCJjYXItcGFydHMtIil8fC0xPGIuaW5kZXhPZigicmVuZGV6LXZvdXMtIil8fC0xPGIuaW5kZXhPZigiLWFwcG9pbnRtZW50Iil8fC0xPGIuaW5kZXhPZigiY3JlZGl0Iil8fC0xPGIuaW5kZXhPZigiZmluYW5jZW1lbnQiKXx8LTE8Yi5pbmRleE9mKCJwcmUtYXBwcm8iKXx8LTE8Yi5pbmRleE9mKCJuZXctd2VzdCIpfHwtMTxiLmluZGV4T2YoImNvbmZpZGVudGlhbGl0ZSIpfHwtMTxiLmluZGV4T2YoInByaXZhY3ktcG9saWN5Iil8fC0xPGIuaW5kZXhPZigidGVybWVzLWV0LWNvbmRpdGlvbnMiKXx8LTE8Yi5pbmRleE9mKCJ0ZXJtcy1hbmQtY29uZGl0aW9ucyIpKWQ9Ii5odG1sIjtlbHNle3ZhciBlPShuZXcgRGF0ZSkuZ2V0RnVsbFllYXIoKTsidW5kZWZpbmVkIj09dHlwZW9mIGRbMl18fGUhPWRbMl0mJmUrMSE9ZFsyXXx8KGM9Im5ldyIpO2Q9Ii8iK2J9ZD1hLmdldEF0dHJpYnV0ZSgidGFyZ2V0VVJJIikucmVwbGFjZSgiLmh0bWwiLApkKX1lbHNle3N3aXRjaChhLmdldEF0dHJpYnV0ZSgiYWN0aW9uIikpe2Nhc2UgIlRlc3REcml2ZUFjdGlvbkJveCI6ZD0kKCIjdGVzdERyaXZlRm9sZGVyIikudmFsKCkrYjticmVhaztjYXNlICJQcmljZUFjdGlvbkJveCI6ZD0kKCIjcHJpY2VSZXF1ZXN0Rm9sZGVyIikudmFsKCkrYjticmVhaztjYXNlICJFdmFsQWN0aW9uQm94IjpkPSQoIiNldmFsQ2FyRm9sZGVyIikudmFsKCkrYjticmVhaztjYXNlICJGaW5hbmNlQWN0aW9uQm94IjpkPSQoIiNGaW5hbmNlRm9sZGVyIikudmFsKCkrYjticmVhaztkZWZhdWx0OiJ1bmRlZmluZWQiIT10eXBlb2YgJChhKS5hdHRyKCJmb2xkZXIiKT9kPSQoYSkuYXR0cigiZm9sZGVyIik6InVuZGVmaW5lZCIhPXR5cGVvZiAkKGEpLmF0dHIoInRhcmdldHVyaSIpJiYoZD0kKGEpLmF0dHIoInRhcmdldHVyaSIpKX1Db29raWVzLnNldCgiZnJvbWRldGFpbHNwYWdlIiwiMSIsbnVsbCwiLyIpfWlmKCJ1bmRlZmluZWQiIT10eXBlb2YgZCYmbnVsbCE9CmQmJjA8ZC5sZW5ndGgpe2I9ZDJjbWVkaWEuaHRtbEZpbGUoITEsITApO2U9Yi5zcGxpdCgiLSIpO3ZhciBrPSIiLGg9IiIsbj0iIjswPGUubGVuZ3RoJiYoaz1lWzBdKTsxPGUubGVuZ3RoJiYoaD1lWzFdKTsyPGUubGVuZ3RoJiYobj1lWzJdKTswPGsubGVuZ3RoJiYwPGgubGVuZ3RoJiYwPG4ubGVuZ3RoJiYhaXNOYU4obikmJjQ9PW4udG9TdHJpbmcoKS5sZW5ndGgmJi0xPGQuaW5kZXhPZigiLmh0bSIpJiYoZT1hLmdldEF0dHJpYnV0ZSgiZm9sZGVyIiksZD0idW5kZWZpbmVkIiE9dHlwZW9mIGUmJm51bGwhPWU\/ZTpkLnN1YnN0cmluZygwLGQubGFzdEluZGV4T2YoIi8iKSsxKSxkPWQucmVwbGFjZSgiLmh0bWwiLCIvIikrYisiLmh0bWwiKTskKGEpLmhhc0NsYXNzKCJ0cmFkZWluTGluayIpJiYoMDxhLmdldEF0dHJpYnV0ZSgidGFyZ2V0VVJJIikuaW5kZXhPZigidHJhZGVpbnZhbHVlcyIpfHwwPGEuZ2V0QXR0cmlidXRlKCJ0YXJnZXRVUkkiKS5pbmRleE9mKCJpbnN0YW50b2ZmZXIuYWNjdS10cmFkZS5jb20iKSk\/CnNob3dUcmFkZUluUG9wdXAoYS5nZXRBdHRyaWJ1dGUoInRhcmdldFVSSSIpKTooIm5ldyI9PWMmJihkPWQucmVwbGFjZSgib2NjYXNpb24iLCJuZXVmIikucmVwbGFjZSgidXNlZCIsIm5ldyIpKSx3aW5kb3cubG9jYXRpb24uaHJlZj1kKX19CmZ1bmN0aW9uIG9wZW5GaW5hbmNlTXVsdGlzdGVwRm9ybU9uQ3VycmVudFBhZ2UoYSxiLGMsZCxlLGssaCl7YS5wcmV2ZW50RGVmYXVsdCgpO2Euc3RvcFByb3BhZ2F0aW9uKCk7Yj8kKCIjcG9wdXBtYWtlTXVsdGlzdGVwRm9ybSIpLnZhbChiKToiTkVXQ0FSREVUQUlMUyI9PSQoImJvZHkiKS5hdHRyKCJpZCIpPyQoIiNwb3B1cG1ha2VNdWx0aXN0ZXBGb3JtIikudmFsKCQoIi5icmFuZGVtYWlsIikudmFsKCkpOiJjYXJkZXRhaWwuaHRtbCI9PSQoIiNQQUdFSUQiKS52YWwoKSYmJCgiI3BvcHVwbWFrZU11bHRpc3RlcEZvcm0iKS52YWwoJCgiI3Bob25lbWFrZSIpLnZhbCgpKTtjPyQoIiNwb3B1cG1vZGVsTXVsdGlzdGVwRm9ybSIpLnZhbChjKToiTkVXQ0FSREVUQUlMUyI9PSQoImJvZHkiKS5hdHRyKCJpZCIpPyQoIiNwb3B1cG1vZGVsTXVsdGlzdGVwRm9ybSIpLnZhbCgkKCIubW9kZWxlbWFpbCIpLnZhbCgpKToiY2FyZGV0YWlsLmh0bWwiPT0kKCIjUEFHRUlEIikudmFsKCkmJgokKCIjcG9wdXBtb2RlbE11bHRpc3RlcEZvcm0iKS52YWwoJCgiI3Bob25lbW9kZWwiKS52YWwoKSk7ZD8kKCIjcG9wdXB5ZWFyTXVsdGlzdGVwRm9ybSIpLnZhbChkKToiTkVXQ0FSREVUQUlMUyI9PSQoImJvZHkiKS5hdHRyKCJpZCIpPyQoIiNwb3B1cHllYXJNdWx0aXN0ZXBGb3JtIikudmFsKCQoIi55ZWFyZW1haWwiKS52YWwoKSk6ImNhcmRldGFpbC5odG1sIj09JCgiI1BBR0VJRCIpLnZhbCgpJiYkKCIjcG9wdXB5ZWFyTXVsdGlzdGVwRm9ybSIpLnZhbCgkKCIjcGhvbmVteWVhciIpLnZhbCgpKTtlPyQoIiNwb3B1cHN0b2NrbnVtYmVyTXVsdGlzdGVwRm9ybSIpLnZhbChlKToiTkVXQ0FSREVUQUlMUyI9PSQoImJvZHkiKS5hdHRyKCJpZCIpPyQoIiNwb3B1cHN0b2NrbnVtYmVyTXVsdGlzdGVwRm9ybSIpLnZhbCgiIik6ImNhcmRldGFpbC5odG1sIj09JCgiI1BBR0VJRCIpLnZhbCgpJiYkKCIjcG9wdXBzdG9ja251bWJlck11bHRpc3RlcEZvcm0iKS52YWwoJCgiI3Bob25lc3RvY2tudW1iZXIiKS52YWwoKSk7Cms\/JCgiI3RvcGNhcmlkTXVsdGlzdGVwRm9ybSIpLnZhbChrKToiTkVXQ0FSREVUQUlMUyI9PSQoImJvZHkiKS5hdHRyKCJpZCIpJiYkKCIjdG9wY2FyaWRNdWx0aXN0ZXBGb3JtIikudmFsKCIiKTtoJiYoaC5zZW5kVG8mJiQoIiNGSU5BTkNFX0ZPUk1fU0VORFRPX0VNQUlMIikudmFsKGguc2VuZFRvKSxoLnNlbmRUb0FkZiYmJCgiI0ZJTkFOQ0VfRk9STV9TRU5EVE9BREZfRU1BSUwiKS52YWwoaC5zZW5kVG9BZGYpLGguZGVhbGVyTmFtZSYmJCgiI0ZJTkFOQ0VfRk9STV9ERUFMRVJOQU1FIikudmFsKGguZGVhbGVyTmFtZSkpO2E9ImZpbmFuY2VNdWx0aXN0ZXBQb3B1cENvbnRhaW5lciI7JCgiI0ZpbmFuY2VfRm9ybVR5cGUiKS5sZW5ndGgmJiJtdWx0aXN0ZXBJbnN0YW50Ij09JCgiI0ZpbmFuY2VfRm9ybVR5cGUiKS52YWwoKSYmJCgiI2ZpbmFuY2VNdWx0aXN0ZXBJbnN0YW50UG9wdXBDb250YWluZXIiKS5sZW5ndGgmJihhPSJmaW5hbmNlTXVsdGlzdGVwSW5zdGFudFBvcHVwQ29udGFpbmVyIik7CiQoIiMiK2EpLnBvcHVwaXplKCkuc2V0VHJpZ2dlcigiY2xpY2siKS5vcGVuKDEpfWZ1bmN0aW9uIG9wZW5TaG93cm9vbUNvbnRhY3RQb3B1cChhLGIsYyxkKXthLnByZXZlbnREZWZhdWx0KCk7YS5zdG9wUHJvcGFnYXRpb24oKTtlbWFpbEhhbmRsZXIubWFrZT1iOyQoIiNsYXN0dmlld2VkbWFrZSIpLnZhbChiKTtlbWFpbEhhbmRsZXIubW9kZWw9YzskKCIjbGFzdHZpZXdlZG1vZGVsIikudmFsKGMpO2VtYWlsSGFuZGxlci55ZWFyPWQ7JCgiI2xhc3R2aWV3ZWR5ZWFyIikudmFsKGQpOyQoIiNjb250YWN0cG9wdXAiKS5wb3B1cGl6ZSgpLnNldFRyaWdnZXIoImNsaWNrIikub3BlbigpfXZhciBkMmNtZWRpYT1kMmNtZWRpYXx8e307CmQyY21lZGlhLnNjcm9sbFRvPWZ1bmN0aW9uKGEsYixjKXsidW5kZWZpbmVkIj09dHlwZW9mIGMmJihjPTFFMyk7InVuZGVmaW5lZCI9PXR5cGVvZiBiJiYoYj0wKTskKCJodG1sLCBib2R5IikuYW5pbWF0ZSh7c2Nyb2xsVG9wOiQoYSkub2Zmc2V0KCkudG9wLWJ9LGMpO3JldHVybiExfTsKZDJjbWVkaWEudXJsPXtfc2FuaXRpemU6ITAsZGVzYW5pdGl6ZTpmdW5jdGlvbihhKXtpZigic3RyaW5nIj09PXR5cGVvZiBhKXJldHVybiBhLnJlcGxhY2UoL18vZywiLSIpO2lmKCJvYmplY3QiPT09dHlwZW9mIGEpe2Zvcih2YXIgYiBpbiBhKWFbYl09dGhpcy5kZXNhbml0aXplKGFbYl0pO3JldHVybiBhfX0sZ2VuZXJhdGU6ZnVuY3Rpb24oKXt2YXIgYT0iIjt0aGlzLl9zYW5pdGl6ZSYmKGFyZ3VtZW50cz10aGlzLnNhbml0aXplKGFyZ3VtZW50cykpO2ZvcihpPTA7aTxhcmd1bWVudHMubGVuZ3RoLTE7aSsrKWErPWFyZ3VtZW50c1tpXSsiLSI7cmV0dXJuIGErYXJndW1lbnRzW2ldKyIuaHRtbCJ9LHBhcnNlOmZ1bmN0aW9uKCl7dXJsPWRlY29kZVVSSUNvbXBvbmVudChkb2N1bWVudC5VUkwpO3N0clBhcmFtPXVybC5zdWJzdHJpbmcodXJsLmxhc3RJbmRleE9mKCIvIikpO29ialBhcmFtPXttYWtlOm51bGwsbW9kZWw6bnVsbCx5ZWFyOm51bGwsaWQ6bnVsbH07Zm91bmQ9ITE7CnZhciBhO251bGwhPShhPXN0clBhcmFtLm1hdGNoKC9eXC8oMjBbMC05XXsyfXwxOVswLTldezJ9KS0oW14tXSstW14tXC5dKykoLipcLmh0bWwpLykpJiYoc3RyUGFyYW09Ii8iK2FbMl0rIi0iK2FbMV0rYVszXSk7YT1zdHJQYXJhbS5tYXRjaCgvXC8oW14vXSopLSguKiktKFxkezR9KSgtaWQoXGQqKSk\/Lmh0bWwvKTtmb3VuZHx8bnVsbD09PWF8fChvYmpQYXJhbS5tYWtlPWFbMV0sb2JqUGFyYW0ubW9kZWw9YVsyXSxvYmpQYXJhbS55ZWFyPWFbM10sb2JqUGFyYW0uaWQ9YVs1XSxmb3VuZD0hMCk7YT1zdHJQYXJhbS5tYXRjaCgvXC8oW14vXSopLSguKiktKFxkezR9KSgtY1xkKik\/Lmh0bWwvKTtmb3VuZHx8bnVsbD09PWF8fChvYmpQYXJhbS5tYWtlPWFbMV0sb2JqUGFyYW0ubW9kZWw9YVsyXSxvYmpQYXJhbS55ZWFyPWFbM10sZm91bmQ9ITApO2E9c3RyUGFyYW0ubWF0Y2goL1wvKFteL10qKS0oXGR7NH0pLmh0bWwvKTtmb3VuZHx8bnVsbD09PWF8fChvYmpQYXJhbS5tYWtlPQphWzFdLG9ialBhcmFtLnllYXI9YVsyXSxmb3VuZD0hMCk7YT1zdHJQYXJhbS5tYXRjaCgvXC8oW14vXSopLShbXi5dKikuaHRtbC8pO2ZvdW5kfHxudWxsPT09YXx8KG9ialBhcmFtLm1ha2U9YVsxXSxvYmpQYXJhbS5tb2RlbD1hWzJdLGZvdW5kPSEwKTthPXN0clBhcmFtLm1hdGNoKC9cLyhbXi9dKikuaHRtbC8pO2ZvdW5kfHxudWxsPT09YXx8KG9ialBhcmFtLm1ha2U9YVsxXSxmb3VuZD0hMCk7dGhpcy5fc2FuaXRpemUmJihvYmpQYXJhbT10aGlzLmRlc2FuaXRpemUob2JqUGFyYW0pKTtyZXR1cm4gb2JqUGFyYW19LHNhbml0aXplOmZ1bmN0aW9uKGEpe2lmKCJzdHJpbmciPT09dHlwZW9mIGEpcmV0dXJuIGEucmVwbGFjZSgvLS9nLCJfIik7aWYoIm9iamVjdCI9PT10eXBlb2YgYSl7Zm9yKHZhciBiIGluIGEpYVtiXT10aGlzLnNhbml0aXplKGFbYl0pO3JldHVybiBhfX0sc2FuaXRpemVSZWZlcmVyOmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoL1snImAoKTw+XFtcXXt9fCFdL2csCiIiKX19O2QyY21lZGlhLmdldEh0dHBUZXh0PWZ1bmN0aW9uKCl7cmV0dXJuImh0dHBzOiI9PWRvY3VtZW50LmxvY2F0aW9uLnByb3RvY29sJiYkKCIjdG9wZGVwbG95bWVudHR5cGUiKS5sZW5ndGgmJiJsaXZlIj09JCgiI3RvcGRlcGxveW1lbnR0eXBlIikudmFsKCk\/Imh0dHBzIjoiaHR0cCJ9O2QyY21lZGlhLmNhcGl0YWxpc2VGaXJzdExldHRlcj1mdW5jdGlvbihhKXtyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIGE\/IiI6YS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSthLnNsaWNlKDEpfTtkMmNtZWRpYS5jYXBpdGFsaXNlRmlyc3RMZXR0ZXJPZkV2ZXJ5V29yZD1mdW5jdGlvbihhKXtyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIGE\/IiI6YS5zcGxpdCgiICIpLnJlZHVjZShmdW5jdGlvbihiLGMpe2M9ZDJjbWVkaWEuY2FwaXRhbGlzZUZpcnN0TGV0dGVyKGMpO3JldHVybiBiP2IrIiAiK2M6Y30sIiIpfTsKZDJjbWVkaWEuc2FmZVN0cmluZz1mdW5jdGlvbihhKXt2YXIgYj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtiLnRleHRDb250ZW50PWE7cmV0dXJuIGIuaW5uZXJUZXh0fTsKZDJjbWVkaWEuaHRtbEZpbGU9ZnVuY3Rpb24oYSxiKXt2YXIgYz13aW5kb3cubG9jYXRpb24uc2VhcmNoLmxlbmd0aCYmLTE8d2luZG93LmxvY2F0aW9uLnNlYXJjaC5pbmRleE9mKCJwYXRoPSIpP3dpbmRvdy5sb2NhdGlvbi5zZWFyY2g6d2luZG93LmxvY2F0aW9uLnBhdGhuYW1lO2M9Yy5zdWJzdHJpbmcoYy5sYXN0SW5kZXhPZigiLyIpKzEpO2M9ZDJjbWVkaWEuc2FmZVN0cmluZyhjKTt0cnl7dmFyIGQ9ZGVjb2RlVVJJQ29tcG9uZW50KGMpfWNhdGNoKGspe3ZhciBlPXsiJUMwIjoiJkFncmF2ZTsiLCIlQzEiOiImQWFjdXRlOyIsIiVDMiI6IiZBY2lyYzsiLCIlQzMiOiImQXRpbGRlOyIsIiVDNCI6IiZBdW1sOyIsIiVDNSI6IiZBcmluZzsiLCIlQzYiOiImQUVsaWc7IiwiJUM3IjoiJkNjZWRpbDsiLCIlQzgiOiImRWdyYXZlOyIsIiVDOSI6IiZFYWN1dGU7IiwiJUNBIjoiJkVjaXJjOyIsIiVDQiI6IiZFdW1sOyIsIiVDQyI6IiZJZ3JhdmU7IiwiJUNEIjoiJklhY3V0ZTsiLCIlQ0UiOiImSWNpcmM7IiwKIiVDRiI6IiZJdW1sOyIsIiVEMCI6IiZFVEg7IiwiJUQxIjoiJk50aWxkZTsiLCIlRDIiOiImT2dyYXZlOyIsIiVEMyI6IiZPYWN1dGU7IiwiJUQ0IjoiJk9jaXJjOyIsIiVENSI6IiZPdGlsZGU7IiwiJUQ2IjoiJk91bWw7IiwiJUQ4IjoiJk9zbGFzaDsiLCIlRDkiOiImVWdyYXZlOyIsIiVEQSI6IiZVYWN1dGU7IiwiJURCIjoiJlVjaXJjOyIsIiVEQyI6IiZVdW1sOyIsIiVERCI6IiZZYWN1dGU7IiwiJURFIjoiJlRIT1JOOyIsIiVERiI6IiZzemxpZzsiLCIlRTAiOiImYWdyYXZlOyIsIiVFMSI6IiZhYWN1dGU7IiwiJUUyIjoiJmFjaXJjOyIsIiVFMyI6IiZhdGlsZGU7IiwiJUU0IjoiJmF1bWw7IiwiJUU1IjoiJmFyaW5nOyIsIiVFNiI6IiZhZWxpZzsiLCIlRTciOiImY2NlZGlsOyIsIiVFOCI6IiZlZ3JhdmU7IiwiJUU5IjoiJmVhY3V0ZTsiLCIlRUEiOiImZWNpcmM7IiwiJUVCIjoiJmV1bWw7IiwiJUVDIjoiJmlncmF2ZTsiLCIlRUQiOiImaWFjdXRlOyIsIiVFRSI6IiZpY2lyYzsiLAoiJUVGIjoiJml1bWw7IiwiJUYwIjoiJmV0aDsiLCIlRjEiOiImbnRpbGRlOyIsIiVGMiI6IiZvZ3JhdmU7IiwiJUYzIjoiJm9hY3V0ZTsiLCIlRjQiOiImb2NpcmM7IiwiJUY1IjoiJm90aWxkZTsiLCIlRjYiOiImb3VtbDsiLCIlRjciOiImZGl2aWRlOyIsIiVGOCI6IiZvc2xhc2g7IiwiJUY5IjoiJnVncmF2ZTsiLCIlRkEiOiImdWFjdXRlOyIsIiVGQiI6IiZ1Y2lyYzsiLCIlRkMiOiImdXVtbDsiLCIlRkQiOiImeWFjdXRlOyIsIiVGRSI6IiZ0aG9ybjsiLCIlRkYiOiImeXVtbDsifTtkPWMucmVwbGFjZSgvJVswLTlBLUZdezJ9L2lnLGZ1bmN0aW9uKGgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgZVtoXSlyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGgpO3ZhciBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTtuLnRleHRDb250ZW50PWVbaF07cmV0dXJuIG4uaW5uZXJUZXh0fSl9ZD1kLnN1YnN0cmluZygwLGQuaW5kZXhPZigiLmh0bSIpKTthJiYoZD1kLnJlcGxhY2UoLyAvZywKIl8iKS5yZXBsYWNlKC8nL2csIiIpLnJlcGxhY2UoIi5odG1sIiwiIikpO251bGwhPShhPWQubWF0Y2goL14oMTlbMC05XXsyfXwyMFswLTldezJ9KS0oW14tXSstW14tXSspKC4qKSQvKSkmJihkPWFbMl0rIi0iK2FbMV0rYVszXSwiRU5HTElTSCI9PSgiRU5HTElTSCI9PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKT8iRU5HTElTSCI6IkZSRU5DSCIpJiZiJiYoZD1hWzFdKyItIithWzJdK2FbM10pKTtyZXR1cm4gZH07ZDJjbWVkaWEuaXNIb21lcGFnZT1mdW5jdGlvbigpe3ZhciBhPXdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTtyZXR1cm4iLyI9PWF8fCIvZW5nLyI9PWF8fCIvZnIvIj09YX07ZDJjbWVkaWEucGFnZURlcGFydG1lbnQ9ZnVuY3Rpb24oKXt2YXIgYT0kKCIjZGVmYXVsdERlcGFydG1lbnQiKS52YWwoKTtyZXR1cm4iT1RIRVIiPT1hJiZkMmNtZWRpYS5pc0hvbWVwYWdlKCk\/IkhPTUVQQUdFIjphfTsKdmFyIGpzX2QyY19nZXRfdmFsPWpzX2QyY19nZXRfdmFsfHxmdW5jdGlvbihhKXt0cnl7cmV0dXJuKGVsPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGEpKT9lbC52YWx1ZToiIn1jYXRjaChiKXtyZXR1cm4gY29uc29sZSYmY29uc29sZS5sb2cmJmNvbnNvbGUubG9nKCJTeXN0ZW0gZmFpbGVkIHdoaWxlIHJldHJpZXZpbmcgcmVwbGFjZW1lbnQgdmFsdWU6ICIrYi5tZXNzYWdlLGIpLGF9fTtTdHJpbmcucHJvdG90eXBlLm5vRDJDUmVwbGFjZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlT2YoKX07CmQyY0JHQ2xpY2s9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpczskLmV4dGVuZChiLGEpO3RoaXMuc2V0PWZ1bmN0aW9uKGMpeyJ1bmRlZmluZWQiPT10eXBlb2YgYyYmKGM9ITEpO3ZhciBkPWIuYmdJbWdVcmwsZT1iLmJnSW1nUGF0aCxrPWIuYmdJbWdGaXhlZCxoPWIuYmdJbWdSZXNwb25zaXZlLG49Yi5tYWtlLHg9ZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUucmVwbGFjZSgvLS9nLCIiKSx2PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKT8kKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCkudG9Mb3dlckNhc2UoKToiZnJlbmNoIixmPSIiLGc9ITE7MCE9YyYmKG49Yy50b0xvd2VyQ2FzZSgpKTt2YXIgbT1jPSIiO24\/ZS5oYXNPd25Qcm9wZXJ0eShuKT8oYz1lW25dLG09a1tuXStoW25dLGc9ITApOmUuaGFzT3duUHJvcGVydHkoImFsbCIpPyhjPWUuYWxsLG09ay5hbGwraC5hbGwsZz0hMCk6ZS5oYXNPd25Qcm9wZXJ0eSh2KSYmKGM9ZVt2XSxtPWtbdl0raFt2XSk6ZS5oYXNPd25Qcm9wZXJ0eSh2KSYmCjA9PWcmJihjPWVbdl0sbT1rW3ZdK2hbdl0pO2MmJihiLmJnSW1nPWMuc3BsaXQoIi8iKS5wb3AoKSwkKCJib2R5IikuYXR0cigic3R5bGUiLCJiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJyIrYysiJyk7IGJhY2tncm91bmQtcG9zaXRpb246IHRvcCBjZW50ZXI7IGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7IittKSk7Zm9yKHZhciBsIGluIGQpe2lmKC0xIT14LmluZGV4T2YobCx4KSl7Zj1kW2xdO2JyZWFrfWlmKGw9PXYpe2Y9ZFtsXTticmVha319MD09Zi5sZW5ndGgmJihkLmhhc093blByb3BlcnR5KG4pP2Y9ZFtuXTpkLmhhc093blByb3BlcnR5KCJhbGwiKSYmKGY9ZC5hbGwpKTswPGYubGVuZ3RoJiYoZD0kKHdpbmRvdykud2lkdGgoKS8yLSQoIi53cmFwcGVyIikud2lkdGgoKS8yLGU9JCh3aW5kb3cpLndpZHRoKCkvMiskKCIud3JhcHBlciIpLndpZHRoKCkvMiwkKCIjYmdDbGljazEiKS5yZW1vdmUoKSwkKCIjYmdDbGljazIiKS5yZW1vdmUoKSwkKCJib2R5IikuYXBwZW5kKCI8ZGl2IGlkPSdiZ0NsaWNrMScgc3R5bGU9J3otaW5kZXg6MTAwO2N1cnNvcjpwb2ludGVyO3dpZHRoOiIrCmQrInB4O2hlaWdodDoxMDAlO3Bvc2l0aW9uOmZpeGVkO2xlZnQ6MHB4O3RvcDowcHg7Jz48L2Rpdj4iKSwkKCJib2R5IikuYXBwZW5kKCI8ZGl2IGlkPSdiZ0NsaWNrMicgc3R5bGU9J3otaW5kZXg6MTAwO2N1cnNvcjpwb2ludGVyO3dpZHRoOiIrZCsicHg7aGVpZ2h0OjEwMCU7cG9zaXRpb246Zml4ZWQ7bGVmdDoiK2UrInB4O3RvcDowcHg7Jz48L2Rpdj4iKSwkKCIjYmdDbGljazEiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7Yi5yZWRpcmVjdChmKX0pLCQoIiNiZ0NsaWNrMiIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtiLnJlZGlyZWN0KGYpfSkpfTt0aGlzLnJlc2V0PWZ1bmN0aW9uKGMpe2Iuc2V0KCl9O3RoaXMucmVkaXJlY3Q9ZnVuY3Rpb24oYyl7ImxpdmUiPT1iLmRlcGxveW1lbnRUeXBlJiYoZ2FUcmFjaygiX3RyYWNrRXZlbnQiLCJDbGlxdWVzIiwiSW1hZ2UtZGUtZm9uZCIsYi5iZ0ltZywxKSwiZnVuY3Rpb24iPT10eXBlb2YgYi5kMmNFdmVudCYmYi5kMmNFdmVudC5jYWxsKGIsCmIuYmdJbWcpKTt3aW5kb3cub3BlbihjKX07JCh3aW5kb3cpLm9uKCJyZXNpemUiLGIucmVzZXQpO3JldHVybiB0aGlzfTt2YXIgaW5qZWN0R29vZ2xlTWFwc0tleT1mdW5jdGlvbihhKXtsZXQgYj1udWxsO3JldHVybiBmdW5jdGlvbihjKXtpZihiKXJldHVybiBjKGIpO2EuYWpheCgiL2FqYXgvZ2V0R29vZ2xlTWFwc0tleSIpLmRvbmUoZnVuY3Rpb24oZCl7Yj0oZC5rZXk\/ZC5rZXk6IiIpLnJlcGxhY2UoL1teQS16MC05Xy1dL2csIiIpO2MoYil9KX19KGpRdWVyeSk7CmZ1bmN0aW9uIHJoc1Byb21vSW1hZ2UoYSl7dmFyIGI9dGhpcztiLmRhdGE9YTt2YXIgYz1bXSxkPS0xO2E9d2luZG93LmxvY2F0aW9uO2E9ZGVjb2RlVVJJQ29tcG9uZW50KGEucGF0aG5hbWUrYS5zZWFyY2gpLnRvTG93ZXJDYXNlKCk7Zm9yKHNlYXJjaCBpbiBiLmRhdGEpaWYoImRlZmF1bHQiPT1zZWFyY2h8fC0xIT1hLmluZGV4T2YoZGVjb2RlVVJJQ29tcG9uZW50KChzZWFyY2grIiIpLnRvTG93ZXJDYXNlKCkpKSlmb3IoaT0wO2k8Yi5kYXRhW3NlYXJjaF0ubGVuZ3RoO2krKyljLnB1c2goYi5kYXRhW3NlYXJjaF1baV0pO2Iucm90YXRlPWZ1bmN0aW9uKCl7KytkPmMubGVuZ3RoLTEmJihkPTApO3ZhciBlPWNbZF0saz0kKCI8aW1nIC8+IikuYXR0cih7c3JjOmUuaSxzdHlsZToid2lkdGg6MTAwJTsgbWF4LXdpZHRoOjI4MHB4OyBib3JkZXItcmFkaXVzOiA1cHg7IGN1cnNvcjpwb2ludGVyOyIsYWx0OiIifSk7JCgiZGl2I3JpZ2h0UHJvbW9JbWFnZSIpLmh0bWwoayk7bnVsbCE9CmUudSYmMDxlLnUubGVuZ3RoJiYkKCJkaXYjcmlnaHRQcm9tb0ltYWdlIikuYXR0cigib25jbGljayIsIndpbmRvdy5sb2NhdGlvbiA9ICciK2UudSsiJyIpOyQoImRpdiNyaWdodFByb21vSW1hZ2UiKS5zaG93KCk7MSE9Yy5sZW5ndGgmJnNldFRpbWVvdXQoYi5yb3RhdGUsZS5kZWxheSl9OzA8Yy5sZW5ndGgmJmIucm90YXRlKCl9ZnVuY3Rpb24gY2xlYW5UZXh0KGEpe2E9YS5yZXBsYWNlKC9bXHg2MF0vZywiJyIpO2E9YS5yZXBsYWNlKC\/igJkvZywiJyIpO2E9YS5yZXBsYWNlKC9gL2csIiciKTtyZXR1cm4gYT1hLnJlcGxhY2UoL1tcdTIwMTld4oCZL2csIiciKX0KZnVuY3Rpb24gZW5jb2RlVGV4dChhKXt2YXIgYj1hO3RyeXtiPSQuYmFzZTY0LmVuY29kZShhKX1jYXRjaChrKXtjb25zb2xlLmxvZyhrLm1lc3NhZ2Usayk7YT0iIjtmb3IodmFyIGM9MDtjPGIubGVuZ3RoO2MrKyl7dmFyIGQ9Yi5jaGFyQXQoYyksZT1kLmNoYXJDb2RlQXQoMCk7aWYoNDc8ZSYmNTg+ZXx8NjQ8ZSYmOTE+ZXx8OTY8ZSYmMTIzPmUpYSs9ZDtlbHNlIHRyeXskLmJhc2U2NC5lbmNvZGUoZCksYSs9ZH1jYXRjaChoKXt9fWI9JC5iYXNlNjQuZW5jb2RlKGEpfXJldHVybiBifWZ1bmN0aW9uIGNsZWFuQW5kRW5jb2RlVGV4dChhKXt0cnl7dmFyIGI9IiI7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBhKXJldHVybiIiO2I9InN0cmluZyIhPXR5cGVvZiBhP2EudG9TdHJpbmcoKTphO2I9Y2xlYW5UZXh0KGIpO3JldHVybiBiPWVuY29kZVRleHQoYil9Y2F0Y2goYyl7cmV0dXJuIGNvbnNvbGUubG9nKGMubWVzc2FnZSxjKSxhfX0KZnVuY3Rpb24gRXhQaG9uZShhKXtzd2l0Y2goYS50eXBlKXtjYXNlICJtb3VzZWVudGVyIjokKCIuZXh0ZW5kZWRQaG9uZSIpLnNob3coKTticmVhaztjYXNlICJtb3VzZWxlYXZlIjokKCIuZXh0ZW5kZWRQaG9uZSIpLmhpZGUoKX19ZnVuY3Rpb24gZ2V0UmVzaXplZEltYWdlcygpe2RlYnVnRW5hYmxlZCgpO3JldHVybiExfWZ1bmN0aW9uIGNoYW5nZUhvbWVBY3Rpb25CYWNrSW1hZ2UoYSxiKXskKGEpLmNzcyh7YmFja2dyb3VuZDoidXJsKCIrYisiKSIsYmFja2dyb3VuZFJlcGVhdDoibm8tcmVwZWF0IixiYWNrZ3JvdW5kU2l6ZToiMjQwcHggMTIxcHgifSl9dmFyIF9fY3VycmVudFRocmVhc2hvbGQ7CmZ1bmN0aW9uIHRocmVhZGhvbGRTY3JvbGxQZXJjZW50KCl7X19jdXJyZW50VGhyZWFzaG9sZHx8KF9fY3VycmVudFRocmVhc2hvbGQ9KCQod2luZG93KS5oZWlnaHQoKSskKGRvY3VtZW50KS5zY3JvbGxUb3AoKSkvJChkb2N1bWVudCkuaGVpZ2h0KCksc2V0VGltZW91dCgiX19jdXJyZW50VGhyZWFzaG9sZCA9IG51bGwiLDMzMykpO3JldHVybiBfX2N1cnJlbnRUaHJlYXNob2xkfQpmdW5jdGlvbiB0aHJlc2hvbGRFeGVjKGEsYixjKXt2YXIgZD1udWxsO2M9Yz9jOltdO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBhKXt2YXIgZT1NYXRoLnJvdW5kKDFFNCphKS8xRTQ7MTxlJiYoZS89MTAwKTthPWZ1bmN0aW9uKCl7cmV0dXJuIGV9fXZhciBrPWZ1bmN0aW9uKCl7aWYodGhyZWFkaG9sZFNjcm9sbFBlcmNlbnQoKT5hKCkpe3RyeXtiLmFwcGx5KG51bGwsYyl9Y2F0Y2goaCl7Y29uc29sZS5sb2coaCl9ZD1jbGVhckludGVydmFsKGQpfX07JChmdW5jdGlvbigpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtkPXNldEludGVydmFsKGssMzMzKX0sMkUzKX0pfQpmdW5jdGlvbiBzY3JvbGx1cEV4ZWMoYSl7dmFyIGI9bnVsbCxjPTAsZD1mdW5jdGlvbigpeyQod2luZG93KS5vbigic2Nyb2xsIixmdW5jdGlvbihlKXtlPSQodGhpcykuc2Nyb2xsVG9wKCk7ZTxjJiYoYS5jYWxsKG51bGwpLGI9Y2xlYXJJbnRlcnZhbChiKSk7Yz1lfSl9OyQoZnVuY3Rpb24oKXtiPXNldEludGVydmFsKGQsMzMzKX0pfWZ1bmN0aW9uIGluVmlld0V4ZWMoYSxiKXt0aHJlc2hvbGRFeGVjKGZ1bmN0aW9uKCl7dmFyIGM9JChhKTt0cnl7cmV0dXJuIWMubGVuZ3RofHxjLmlzKCI6aGlkZGVuIil8fDA9PWMub2Zmc2V0KCkudG9wPy45NTpjLm9mZnNldCgpLnRvcC8kKGRvY3VtZW50KS5oZWlnaHQoKX1jYXRjaChkKXtyZXR1cm4uOTV9fSxiLFthXSl9dmFyIGx0X0lFOT0iZnVuY3Rpb24iIT10eXBlb2YgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcj8hMDohMSxsdF9JRTExPTA9PSFkb2N1bWVudC5hbGw7CmZ1bmN0aW9uIGlzSUUoKXt2YXIgYT1kb2N1bWVudC5kb2N1bWVudE1vZGU7dHJ5e2RvY3VtZW50LmRvY3VtZW50TW9kZT0iIn1jYXRjaChjKXt9dmFyIGI9Im51bWJlciI9PXR5cGVvZiBkb2N1bWVudC5kb2N1bWVudE1vZGV8fChuZXcgRnVuY3Rpb24oInJldHVybi8qQGNjX29uIUAqLyExIikpKCk7dHJ5e2RvY3VtZW50LmRvY3VtZW50TW9kZT1hfWNhdGNoKGMpe31yZXR1cm4gYn12YXIgdD0wO19fc3RhcnQ9ZnVuY3Rpb24oKXt0PShuZXcgRGF0ZSkuZ2V0VGltZSgpfTtfX3N0b3A9ZnVuY3Rpb24oKXt2YXIgYT0obmV3IERhdGUpLmdldFRpbWUoKTtjb25zb2xlLmxvZygidG9vayIsKGEtdCkvMUUzKX07dmFyIGFsZXJ0RmFsbGJhY2s9ITA7aWYoInVuZGVmaW5lZCI9PT10eXBlb2YgY29uc29sZXx8InVuZGVmaW5lZCI9PT10eXBlb2YgY29uc29sZS5sb2cpY29uc29sZT17fSxjb25zb2xlLmxvZz1hbGVydEZhbGxiYWNrP2Z1bmN0aW9uKGEpe306ZnVuY3Rpb24oKXt9OwpBcnJheS5wcm90b3R5cGUubWFwfHwoQXJyYXkucHJvdG90eXBlLm1hcD1mdW5jdGlvbihhLGIpe3ZhciBjLGQ7aWYobnVsbD09dGhpcyl0aHJvdyBuZXcgVHlwZUVycm9yKCIgdGhpcyBpcyBudWxsIG9yIG5vdCBkZWZpbmVkIik7dmFyIGU9T2JqZWN0KHRoaXMpLGs9ZS5sZW5ndGg+Pj4wO2lmKCJmdW5jdGlvbiIhPT10eXBlb2YgYSl0aHJvdyBuZXcgVHlwZUVycm9yKGErIiBpcyBub3QgYSBmdW5jdGlvbiIpOzE8YXJndW1lbnRzLmxlbmd0aCYmKGM9Yik7dmFyIGg9QXJyYXkoayk7Zm9yKGQ9MDtkPGs7KXtpZihkIGluIGUpe3ZhciBuPWVbZF07bj1hLmNhbGwoYyxuLGQsZSk7aFtkXT1ufWQrK31yZXR1cm4gaH0pO0FycmF5LnByb3RvdHlwZS5pbmRleE9mfHwoQXJyYXkucHJvdG90eXBlLmluZGV4T2Y9ZnVuY3Rpb24oYSxiKXtiPWJ8fDA7Zm9yKHZhciBjPXRoaXMubGVuZ3RoO2I8YztiKyspaWYodGhpc1tiXT09PWEpcmV0dXJuIGI7cmV0dXJuLTF9KTsKQXJyYXkucHJvdG90eXBlLnJlZHVjZXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KEFycmF5LnByb3RvdHlwZSwicmVkdWNlIix7dmFsdWU6ZnVuY3Rpb24oYSl7aWYobnVsbD09PXRoaXMpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLnJlZHVjZSBjYWxsZWQgb24gbnVsbCBvciB1bmRlZmluZWQiKTtpZigiZnVuY3Rpb24iIT09dHlwZW9mIGEpdGhyb3cgbmV3IFR5cGVFcnJvcihhKyIgaXMgbm90IGEgZnVuY3Rpb24iKTt2YXIgYj1PYmplY3QodGhpcyksYz1iLmxlbmd0aD4+PjAsZD0wO2lmKDI8PWFyZ3VtZW50cy5sZW5ndGgpdmFyIGU9YXJndW1lbnRzWzFdO2Vsc2V7Zm9yKDtkPGMmJiEoZCBpbiBiKTspZCsrO2lmKGQ+PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigiUmVkdWNlIG9mIGVtcHR5IGFycmF5IHdpdGggbm8gaW5pdGlhbCB2YWx1ZSIpO2U9YltkKytdfWZvcig7ZDxjOylkIGluIGImJihlPWEoZSxiW2RdLGQsYikpLGQrKztyZXR1cm4gZX19KTsKQXJyYXkucHJvdG90eXBlLmZvckVhY2h8fChBcnJheS5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbihhKXt2YXIgYixjO2lmKG51bGw9PXRoaXMpdGhyb3cgbmV3IFR5cGVFcnJvcigidGhpcyBpcyBudWxsIG9yIG5vdCBkZWZpbmVkIik7dmFyIGQ9T2JqZWN0KHRoaXMpLGU9ZC5sZW5ndGg+Pj4wO2lmKCJmdW5jdGlvbiIhPT10eXBlb2YgYSl0aHJvdyBuZXcgVHlwZUVycm9yKGErIiBpcyBub3QgYSBmdW5jdGlvbiIpOzE8YXJndW1lbnRzLmxlbmd0aCYmKGI9YXJndW1lbnRzWzFdKTtmb3IoYz0wO2M8ZTspe2lmKGMgaW4gZCl7dmFyIGs9ZFtjXTthLmNhbGwoYixrLGMsZCl9YysrfX0pO2Z1bmN0aW9uIGdldERhdGFBdHRyaWJ1dGVzKGEpe3JldHVybiBhLmRhdGFzZXR8fFtdLnNsaWNlLmNhbGwoYS5hdHRyaWJ1dGVzKS5yZWR1Y2UoZnVuY3Rpb24oYixjKXtyZXR1cm4vXmRhdGEtLy50ZXN0KGMubmFtZSkmJihiW2MubmFtZS5zdWJzdHIoNSldPWMudmFsdWUpLGJ9LHt9KX0KZnVuY3Rpb24gZ2V0UGFyYW1ldGVyQnlOYW1lKGEpe2E9YS5yZXBsYWNlKC9bXFtdLywiXFxbIikucmVwbGFjZSgvW1xdXS8sIlxcXSIpO2E9KG5ldyBSZWdFeHAoIltcXD8mXSIrYSsiPShbXiYjXSopIikpLmV4ZWMobG9jYXRpb24uc2VhcmNoKTtyZXR1cm4gbnVsbD09YT8iIjpkZWNvZGVVUklDb21wb25lbnQoYVsxXS5yZXBsYWNlKC9cKy9nLCIgIikpfQpmdW5jdGlvbiBzaG93VHJhZGVJblBvcHVwKGEpe2lmKDA9PSQoIiN0cmFkZWluTGlua1BvcHVwQ29udGFpbmVyIikubGVuZ3RoKXt2YXIgYj0iNzUwcHgiLGM9IjU3MHB4IjsxPT0vTW9iaS8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSYmKGI9IjMwMHB4IixjPSI2MDBweCIpOyQoImJvZHkiKS5hcHBlbmQoJzxkaXYgaWQ9InRyYWRlaW5MaW5rUG9wdXBDb250YWluZXIiIHN0eWxlPSJ3aWR0aDogJytiKyI7IGhlaWdodDogIitjKyciPjxkaXYgY2xhc3M9ImNsb3NlLXJldmVhbC1tb2RhbCI+JiMyMTU7PC9kaXY+PGlmcmFtZSBzcmM9IicrYSsnIiBhbGxvd3RyYW5zcGFyZW5jeT0idHJ1ZSIgIGNsYXNzPSItdDAgLWwwIC13MTAwcCAtaDEwMHAiIGlkPSJ0cmFkZWluTGlua1BvcHVwSWZyYW1lIj48L2lmcmFtZT48L2Rpdj4nKX0kKCIjdHJhZGVpbkxpbmtQb3B1cENvbnRhaW5lciIpLnBvcHVwaXplKCkuc2V0VHJpZ2dlcigiY2xpY2siKS5vcGVuKCl9CmZ1bmN0aW9uIGN1cnJlbnRQcm9tb1JlZGlyZWN0KCl7ZXZlbnQucHJldmVudERlZmF1bHQoKTtzd2l0Y2goITApe2Nhc2UgImZ1bmN0aW9uIj09dHlwZW9mIHNob3dQb3B1cFdpZGdldDpzaG93UG9wdXBXaWRnZXQoKTticmVhaztjYXNlICJ1bmRlZmluZWQiIT10eXBlb2YgJCgiI1ZpZXdQcm9tb0FjdGlvbkJveExpbmsiKS5hdHRyKCJocmVmIik6JCgiI1ZpZXdQcm9tb0FjdGlvbkJveExpbmsiKVswXS5jbGljaygpO2JyZWFrO2Nhc2UgInVuZGVmaW5lZCIhPXR5cGVvZiAkKCIjcHJvbW90aW9uU2lkZVZCdXR0b24gYSIpLmF0dHIoImhyZWYiKTokKCIjcHJvbW90aW9uU2lkZVZCdXR0b24gYSIpWzBdLmNsaWNrKCk7YnJlYWs7Y2FzZSAidW5kZWZpbmVkIiE9dHlwZW9mICQoIiNWaWV3Q3VzdG9tUHJvbW9BY3Rpb25Cb3hMaW5rIikuYXR0cigiaHJlZiIpOiQoIiNWaWV3Q3VzdG9tUHJvbW9BY3Rpb25Cb3hMaW5rIilbMF0uY2xpY2soKX19CmZ1bmN0aW9uIHNob3dOZXdSZWJhdGVDb2RlUG9wdXAoKXswIT0kKCIjZGlzYWJsZVBvcHVwcyIpLmxlbmd0aCYmMCE9JCgiI2Rpc2FibGVQb3B1cHMiKS52YWwoKXx8JCgiI0ltYWdlUG9wdXBDb250YWluZXJfbmV3cmViYXRlIikucG9wdXBpemUoKS5zZXRUcmlnZ2VyKCJjbGljayIpLm9wZW4oKX1mdW5jdGlvbiBzaG93TmV3QmVzdFByaWNlVmRwUG9wdXAoKXswIT0kKCIjZGlzYWJsZVBvcHVwcyIpLmxlbmd0aCYmMCE9JCgiI2Rpc2FibGVQb3B1cHMiKS52YWwoKXx8JCgiI2Jlc3RQcmljZVZkcE5ld1BvcHVwQ29udGFpbmVyIikucG9wdXBpemUoKS5zZXRUcmlnZ2VyKCJjbGljayIpLm9wZW4oKX0KZnVuY3Rpb24gcHJpbnRfcHJvbW9fcHJldihhKXt2YXIgYj0hMSxjPSQoYSkucGFyZW50cygiLnByb21vcyIpO2E9Yy5maW5kKCIucHJvbW8tdGl0bGUiKS5odG1sKCk7dmFyIGQ9Yy5maW5kKCIucHJvbW8tZGVzYyIpLmh0bWwoKTtjPWMuZmluZCgiLnByb21vLWltYWdlIGltZyIpLmF0dHIoImRhdGEtcHJpbnQtc3JjIik7JCgiI3Byb21vVG9QcmludCIpLnJlbW92ZSgpOyQoIiNwcm9tb1RvUHJpbnRXcmFwIikucmVtb3ZlKCk7JCgiYm9keSIpLmFwcGVuZCgnPGRpdiBjbGFzcz0idG9wcmludCIgaWQ9InByb21vVG9QcmludCI+PGltZyBib3JkZXI9IjAiIHN0eWxlPSJ3aWR0aDoxMDAlOyIgc3JjPSInK2MrJyIgYWx0PSIiIGlkPSJwcm9tb0ltZyI+PGJyPjxicj48Yj4nK2ErIjwvYj48YnI+IitkKyI8L2Rpdj4iKTskKCIjcHJvbW9JbWciKS5vbigibG9hZCIsZnVuY3Rpb24oKXtifHwkKCIjcHJvbW9Ub1ByaW50IikucHJpbnRFbGVtZW50KCk7Yj0hMH0pO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtifHwKJCgiI3Byb21vVG9QcmludCIpLnByaW50RWxlbWVudCgpO2I9ITB9LDFFMyk7cmV0dXJuITF9ZnVuY3Rpb24gZ2V0TXVsdGlwbGVBZGRyZXNzUGhvbmUoYSl7JCgiLm11bHRpQWRkcmVzc1Bob25lIikuc2xpZGVVcCgpO2E9JCgiLm11bHRpQWRkcmVzc1Bob25lIiwkKCQoYSkucGFyZW50KCkpKTskKGEpLmlzKCI6aGlkZGVuIik\/JChhKS5zbGlkZURvd24oKTokKGEpLnNsaWRlVXAoKX0KZnVuY3Rpb24gYWRkR2VuZXJhbFN0eWxlKCl7dmFyIGE9JCgiI0FETUlOX0dFTkVSQUxfQkdfQ09MT1IiKS52YWwoKSxiPSQoIiNkZWZhdWx0X2JsYWNrX3RleHQiKS52YWwoKTtpZigiIzAwMDAwMCIhPWJ8fCIjMDAwIiE9YikkKCIuVXNlZFZkcDJNb2JpbGUgI2JyZWFkY3J1bWJzIikuYWRkQ2xhc3MoInRleHRDb2xvciIpLCQoImkuZmEtZmFjZWJvb2stc3F1YXJlIikuYWRkQ2xhc3MoInRleHRDb2xvciIpLCQoIi51c2VkLWRldGFpbHMgLmRlZmF1bHQgZGl2OmZpcnN0IikuYWRkQ2xhc3MoInRleHRDb2xvciIpOyIjZmZmZmZmIiE9YiYmIiNmZmYiIT1ifHwkKCIuVXNlZFNycDJNb2JpbGUgLmRlZmF1bHQgLm1ha2VNb2RlbFllYXIiKS5hZGRDbGFzcygidGV4dENvbG9yVXNlZFNSUE1vYmlsZSIpOyIjZmZmZmZmIiE9YSYmKCQoIi5vbGQtZGV0YWlscy10ciIpLmFkZENsYXNzKCJiZ05vbmUiKSwkKCIjc3BlY1RpdGxlIikuYWRkQ2xhc3MoImJnTm9uZSIpLCQoIi5Vc2VkVmRwMk1vYmlsZSIpLmFkZENsYXNzKCJvdGhlckJHIikpfQpmdW5jdGlvbiBhcHBlbmRUcmFkZUJvb3N0QmFubmVyKCl7fWRvY1JlYWR5QXJyLnB1c2goKCk9PnthcHBlbmRUcmFkZUJvb3N0QmFubmVyKCk7YWRkR2VuZXJhbFN0eWxlKCl9KTsKalF1ZXJ5KGZ1bmN0aW9uKGEpe2EoIiNuYXYiKS5hZGRDbGFzcygibmF2Iik7KGZ1bmN0aW9uKCl7TENfQVBJPXdpbmRvdy5MQ19BUEl8fHt9O0xDX0FQSS5vbl90aWNrZXRfY3JlYXRlZD1mdW5jdGlvbihtKXt0cnl7KGZ1bmN0aW9uKGwpe251bGwhPWwmJihsPSc8aW1nIHNyYz0iaHR0cHM6Ly9zdGF0cy5kMmNtZWRpYS5jYS9zZXJ2aWNlL2NvbnRhY3QuZ2lmP3RjPScrKG0udGlja2V0X2lkKyImdT0iK2wpKyciIHN0eWxlPSJ3aWR0aDoxcHg7aGVpZ2h0OjFweDtyaWdodDoxMHB4O3RvcDoxMHB4O3Bvc2l0aW9uOmFic29sdXRlOyIgLz4nLGEoImJvZHkiKS5hcHBlbmQobCkpfSkoZnVuY3Rpb24oKXt2YXIgbD0idW5kZWZpbmVkIiE9PXR5cGVvZiB3aW5kb3cuYWN0aXZlUHJvZmlsZUlEP3dpbmRvdy5hY3RpdmVQcm9maWxlSUQ6bnVsbDtyZXR1cm4gbnVsbD09bD9Db29raWVzLmdldCgidXVpZCIpOmx9KCkpfWNhdGNoKGwpe319fSkoKTtpZigiZnVuY3Rpb24iPT10eXBlb2Ygb25Db25maXJtU3VibWl0KWEoIi5jb25maXJtX2h0bWwiKS5vbigic3VibWl0IiwKb25Db25maXJtU3VibWl0KTt0cnl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBhKCIjc2xpZGVyLm5pdm9TbGlkZXIiKS5hdHRyKCJpZCIpKXt2YXIgYj0hMSxjPSExLGQ9ITEsZT0hMSxrPSExLGg9ITEsbj0xMDAseD0xPGEoIiNzbGlkZXIubml2b1NsaWRlciBhIikubGVuZ3RoPyEwOiExO2EoIiNiYW5uZXJfc2VhcmNoX2Jhcl9jb250YWluZXIiKS5sZW5ndGgmJihoPWs9ZT1kPWM9Yj0hMCxuPWEoIiNCQU5ORVJfU0VBUkNIX0JBUl9WSURFT19PUEFDSVRZIikubGVuZ3RoP2EoIiNCQU5ORVJfU0VBUkNIX0JBUl9WSURFT19PUEFDSVRZIikudmFsKCk6MTAwKTtkb2NSZWFkeUFyci5wdXNoKCgpPT57c2V0VGltZW91dChmdW5jdGlvbigpe2EoIiNzbGlkZXIubml2b1NsaWRlciIpLm5pdm9TbGlkZXIoe2VmZmVjdDoiZmFkZSIsYmVmb3JlQ2hhbmdlOmZ1bmN0aW9uKCl7YSgiI3BhcmFsbGF4V3JhcHBlciIpLmVubGxheCgpfSxhZnRlckNoYW5nZTpmdW5jdGlvbigpe2EoIiNzbGlkZXIubml2b1NsaWRlciIpLnRyaWdnZXIoIm5pdm9TbGlkZXJDaGFuZ2VkIil9LAphZnRlckxvYWQ6ZnVuY3Rpb24oKXthKCIjc2xpZGVyLm5pdm9TbGlkZXIiKS50cmlnZ2VyKCJuaXZvU2xpZGVyTG9hZGVkIik7YSgiI3BhcmFsbGF4V3JhcHBlciIpLmVubGxheCgpO2EoIiNiYW5uZXJfc2VhcmNoX2Jhcl9jb250YWluZXIiKS5sZW5ndGgmJihhKCIjc2xpZGVyLm5pdm9TbGlkZXIiKS5kYXRhKCJuaXZvOnZhcnMiKS5zdG9wLGEoIi5uaXZvLWNvbnRyb2xOYXYiKS5oaWRlKCksYSgiLm5pdm8tZGlyZWN0aW9uTmF2IikuaGlkZSgpLHRoaXMuc3RhcnRZb3V0dWJlKCkpfSxtYW51YWxBZHZhbmNlOmIsdmlkZW9Pbkxvb3A6YyxoaWRlQ29udHJvbDpkLGhpZGVJbmZvOmUsZnVsbFdpZHRoOmssbXV0ZVZpZGVvOmgsdmlkZW9CcmlnaHRuZXNzOm4sY29udHJvbE5hdjp4LGRpcmVjdGlvbk5hdjp4LHNob3dEaXNjbGFpbWVyOiEwfSl9LDVFMyl9KX1pZigidW5kZWZpbmVkIiE9dHlwZW9mIGEoIi5leHRlbmRlZFBob25lVHJpZ2dlciIpLmF0dHIoImlkIikpYSgiLmV4dGVuZGVkUGhvbmVUcmlnZ2VyIikub24oIm1vdXNlZW50ZXIiLApFeFBob25lKS5vbigibW91c2VsZWF2ZSIsRXhQaG9uZSk7dmFyIHY9ZnVuY3Rpb24oKXt9O2EoIi50cmFkZWluTGluayIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtpZihhKHRoaXMpLmF0dHIoInRhcmdldFVSSSIpJiY2PGEodGhpcykuYXR0cigidGFyZ2V0VVJJIikubGVuZ3RoKXJldHVybiBzaG93VHJhZGVJblBvcHVwKGEodGhpcykuYXR0cigidGFyZ2V0VVJJIikpLCExfSk7YSgiLnVwX21lbnUiKS5vbmUoIm1vdXNlb3ZlciIsdik7c2V0VGltZW91dCh2LDFFNCk7KGZ1bmN0aW9uKCl7aWYoMCE9YSgiI01haW5NZW51X05FVyIpLmxlbmd0aCl7dmFyIHE9YSgiLmltZ19tZW51LnVwX21lbnUgdWwubmF2ID4gbGkjTWFpbk1lbnVfTkVXID4gdWwuc3ViID4gbGkuZmlyc3RJdGVtIikscj0hMTswIT1xLmxlbmd0aCYmKGEoIiNNYWluTWVudV9ORVciKS5maW5kKCIucHJpY2UiKS5jc3MoImN1cnNvciIsInBvaW50ZXIiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7dmFyIHA9YSh0aGlzKS5zaWJsaW5ncygpLmZpcnN0KCk7CndpbmRvdy5sb2NhdGlvbj1wLmF0dHIoImhyZWYiKX0pLGEoIiNNYWluTWVudV9ORVciKS5vbigibW91c2VlbnRlciIsZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQocik7cS5hZGRDbGFzcygiaG92ZXIiKX0pLHEuc2libGluZ3MoKS5vbigibW91c2VlbnRlciIsZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQocik7cS5yZW1vdmVDbGFzcygiaG92ZXIiKX0pLm9uKCJtb3VzZWxlYXZlIixmdW5jdGlvbigpe3I9c2V0VGltZW91dChmdW5jdGlvbigpe3EuYWRkQ2xhc3MoImhvdmVyIil9LDMwMCl9KSl9fSkoKTthKCJpbWdbZXJyb3JpbWddIikub24oImVycm9yIixmdW5jdGlvbigpe3ZhciBxPWEodGhpcyk7cS5hdHRyKCJzcmMiLHEuYXR0cigiZXJyb3JpbWciKSl9KTtjb25zdCBtPWEod2luZG93KSxsPWEoIi51cF9tZW51Iik7aWYobC5sZW5ndGgmJiFsLmhhc0NsYXNzKCJub2xvY2siKSl7bGV0IHE9bC5vZmZzZXQoKS50b3Ascj0hMTthKGRvY3VtZW50KS5vbigic2Nyb2xsIiwoKT0+e3J8fAood2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e3ZhciBwPW0uc2Nyb2xsVG9wKCksdz1sLmhhc0NsYXNzKCJmaXhlZCIpO3cmJnA8cT9sLnJlbW92ZUNsYXNzKCJmaXhlZCIpOiF3JiZwPnEmJmwuYWRkQ2xhc3MoImZpeGVkIik7KHA9bC5oYXNDbGFzcygiZml4ZWQiKSkmJmEoIiNhbGVydE1zZ0NvbnRhaW5lciIpLmlzKCI6dmlzaWJsZSIpP2wuY3NzKHt0b3A6YSgiI2FsZXJ0TXNnQ29udGFpbmVyIikub3V0ZXJIZWlnaHQoKSsicHgifSk6bC5hdHRyKCJzdHlsZSIsIiIpO3c9YSgiLnB1bGxvdXRzLnNpZGVfdG9wOnZpc2libGUiKTtwJiYwPHcubGVuZ3RoPyh3LmZpbHRlcigiLnB1bGxvdXQtb3BlbmVkIikuY3NzKHt0b3A6bC5oZWlnaHQoKSsicHgifSksdy5maWx0ZXIoIi5wdWxsb3V0LWNsb3NlZCIpLmVhY2goZnVuY3Rpb24oKXt2YXIgej1hKHRoaXMpLEQ9Z2V0X3Bvdyh6LmF0dHIoImlkIikpOyF6LmRhdGEoInBvc1kiKSYmei5kYXRhKCJwb3NZIiwtRC5wb3NpdGlvbik7CkQ9ei5kYXRhKCJwb3NZIikrbC5oZWlnaHQoKTt6LmNzcyh7dG9wOkQrInB4In0pfSkpOih3LmZpbHRlcigiLnB1bGxvdXQtb3BlbmVkIikuY3NzKHt0b3A6MH0pLHcuZmlsdGVyKCIucHVsbG91dC1jbG9zZWQiKS5kYXRhKCJwb3NZIikmJncuZmlsdGVyKCIucHVsbG91dC1jbG9zZWQiKS5lYWNoKGZ1bmN0aW9uKCl7YSh0aGlzKS5jc3Moe3RvcDphKHRoaXMpLmRhdGEoInBvc1kiKSsicHgifSl9KSk7cj0hMX0pLHI9ITApfSl9dj1mdW5jdGlvbigpe2lmKDA9PWEoIiN0cmFkZWluQmFyRmxvYXQiKS5sZW5ndGgpe2EoImJvZHkiKS5hcHBlbmQoJzxkaXYgaWQ9InRyYWRlaW5CYXJGbG9hdCIgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyO3Bvc2l0aW9uOiBmaXhlZDt3aWR0aDogMTAwJTt6LWluZGV4OiAxMDA7ZGlzcGxheTpub25lOyI+PC9kaXY+Jyk7YSgiI3RyYWRlSW5CYXIiKS5jbG9uZSghMCwhMCkuYXBwZW5kVG8oIiN0cmFkZWluQmFyRmxvYXQiKS50cmlnZ2VyKCJ0cmFkZUluQmFyLmNsb25lZCIpOwppZihhKCIjdHJhZGVJbkJhclN0aWNreUJvdHRvbSIpLmxlbmd0aCYmIjEiPT1hKCIjdHJhZGVJbkJhclN0aWNreUJvdHRvbSIpLnZhbCgpKXthKCIjdHJhZGVpbkJhckZsb2F0IikuY3NzKCJib3R0b20iLCItMnB4Iik7dmFyIHE9YSgiLmNlcnRpZmllZC1mb290ZXIiKS5oZWlnaHQoKSxyPWEoIiN0cmFkZWluQmFyRmxvYXQiKS5oZWlnaHQoKTthKCIuY2VydGlmaWVkLWZvb3RlciIpLmhlaWdodChxK3IpfWVsc2V7cT1hKCIjdHJhZGVpbkJhckZsb2F0Iik7cj1xLmNzczt2YXIgcD0iMSI9PWEoIiNtZW51TG9jayIpLnZhbCgpPzQ4OjA7MDxhKCIjYWxlcnRNc2dDb250YWluZXIiKS5sZW5ndGgmJmEoIiNhbGVydE1zZ0NvbnRhaW5lciIpLmlzKCI6dmlzaWJsZSIpJiYocCs9YSgiI2FsZXJ0TXNnQ29udGFpbmVyIikub3V0ZXJIZWlnaHQoKSk7ci5jYWxsKHEsInRvcCIscCl9YSgiI3RyYWRlaW5CYXJGbG9hdCAuLXBiMTAiKS5jc3Moe2Rpc3BsYXk6ImlubGluZS10YWJsZSIsd2lkdGg6YSgiI21haW5EaXYiKS53aWR0aCgpfSl9cT0KIm5ld2NhcmRldGFpbC5odG1sIj09YSgiI1BBR0VJRCIpLnZhbCgpfHwiY2FyZGV0YWlsLmh0bWwiPT1hKCIjUEFHRUlEIikudmFsKCk7cj0ibmV3Y2FyZGV0YWlsLmh0bWwiPT1hKCIjUEFHRUlEIikudmFsKCk\/ITA6ITE7cD0wPGEoIi5tYWluRGl2QWRqdXN0SGVhZGVyIikubGVuZ3RoPyEwOiExO2EoIiN0cmFkZUluQmFyIikuaXNJblZpZXdwb3J0KCl8fHE\/cT8ocj9hKCIubmV3VmRwQWN0aW9ucyIpLmlzQWJvdmVWaWV3cG9ydCgyMDApOmEoIi51c2VkVmRwQWN0aW9ucyIpLmlzQWJvdmVWaWV3cG9ydCgyMDApKT9hKCIjdHJhZGVpbkJhckZsb2F0IikuaGlkZSgpOmEoIiN0cmFkZWluQmFyRmxvYXQiKS5zaG93KCk6YSgiI3RyYWRlaW5CYXJGbG9hdCIpLmhpZGUoKToocCYmIWEoIiN0cmFkZUluQmFyIikuaXNBYm92ZVZpZXdwb3J0KDIwMCl8fCFwKSYmYSgiI3RyYWRlaW5CYXJGbG9hdCIpLnNob3coKTswPGEoIiNhbGVydE1zZ0NvbnRhaW5lciIpLmxlbmd0aCYmYSgiI2FsZXJ0TXNnQ29udGFpbmVyIikuaXMoIjpoaWRkZW4iKSYmCjQ4IT1hKCIjdHJhZGVpbkJhckZsb2F0IikuY3NzKCJ0b3AiKSYmYSgiI3RyYWRlSW5CYXJTdGlja3lCb3R0b20iKS5sZW5ndGgmJiIxIiE9YSgiI3RyYWRlSW5CYXJTdGlja3lCb3R0b20iKS52YWwoKSYmYSgiI3RyYWRlaW5CYXJGbG9hdCIpLmNzcygidG9wIiw0OCl9O2Z1bmN0aW9uIHUocSxyKXt2YXIgcD0wO3JldHVybiBmdW5jdGlvbigpe2NsZWFyVGltZW91dChwKTtwPXNldFRpbWVvdXQocSxyKX19aWYoYSgiI3RyYWRlSW5CYXIiKS5sZW5ndGgpYShkb2N1bWVudCkub24oInNjcm9sbCIsdSh2LDEwMCkpO3ZhciBmPWEoInVsLm5hdiA+IGxpID4gdWwgPiBsaSA+IHVsIik7Zi5lYWNoKGZ1bmN0aW9uKCl7YSh0aGlzKS5wYXJlbnQoKS5vbigibW91c2VlbnRlciIsZnVuY3Rpb24ocSl7YSgidWwiLHRoaXMpLnNjcm9sbFRvcCgwKX0pfSk7Zi5vbigiRE9NTW91c2VTY3JvbGwgbW91c2V3aGVlbCIsZnVuY3Rpb24ocSl7dmFyIHI9YSh0aGlzKSxwPXRoaXMuc2Nyb2xsVG9wLHc9dGhpcy5zY3JvbGxIZWlnaHQsCno9dz50aGlzLmNsaWVudEhlaWdodCxEPXIuaGVpZ2h0KCksQz1xLm9yaWdpbmFsRXZlbnQ7Qz0iRE9NTW91c2VTY3JvbGwiPT1xLnR5cGU\/LTQwKkMuZGV0YWlsOkMud2hlZWxEZWx0YTt2YXIgRT0wPEM7aWYoIXopcmV0dXJuITA7ej1mdW5jdGlvbihHKXtyLnNjcm9sbFRvcChHKTtxLnN0b3BQcm9wYWdhdGlvbigpO3EucHJldmVudERlZmF1bHQoKTtxLnJldHVyblZhbHVlPSExO3JldHVybiEwfTtyZXR1cm4hKCFFJiYtQz53LUQtcCYmeih3KXx8RSYmQz5wJiZ6KDApKX0pfWNhdGNoKG0pe2NvbnNvbGUubG9nKCJFcnJvciIsbSl9aWYoYSgiLnVwX21lbnUuaW1nX21lbnUiKS5sZW5ndGgpe2Y9YSgiLmltZ19zdHlsZV8xICNNYWluTWVudV9ORVciKS5jaGlsZHJlbigiLnN1YiIpO3ZhciBnPWYuZmluZCgiLmZpcnN0SXRlbSIpLmZpbmQoIi5zdWIiKTtmLmNoaWxkcmVuKCJsaSIpLm9uKHttb3VzZWVudGVyOmZ1bmN0aW9uKCl7IWEodGhpcykuaXMoIi5oYXNTdWIiKSYmZy5oaWRlKCl9LAptb3VzZWxlYXZlOmZ1bmN0aW9uKCl7IWEodGhpcykuaXMoIi5oYXNTdWIiKSYmZy5zaG93KCl9fSl9YSgiLm51bWVyaWMiKS5vbigia2V5cHJlc3MiLGZ1bmN0aW9uKG0pe2lmKDQ4Pm0ua2V5Q29kZXx8NTc8bS5rZXlDb2RlKW0ucmV0dXJuVmFsdWU9ITF9KTtpZigib250b3VjaHN0YXJ0ImluIHdpbmRvd3x8d2luZG93LkRvY3VtZW50VG91Y2gmJmRvY3VtZW50IGluc3RhbmNlb2YgRG9jdW1lbnRUb3VjaClhKCIubGVmdF9ib3ggYSIpLm9uKCJ0YXAiLGZ1bmN0aW9uKG0pe209YSh0aGlzKTtpZigicmFkaW8iIT1tLmF0dHIoInR5cGUiKSYmbS5hdHRyKCJvbmNsaWNrIikpcmV0dXJuIG0udHJpZ2dlcigiY2xpY2siKSwhMX0pLGEoIi5oYXNJdGVtcyA+IGEsIC5oYXNTdWIgPiBhIikub24oImNsaWNrIixmdW5jdGlvbihtKXtpZigiY2xpY2siIT1tLnR5cGUpcmV0dXJuITA7dmFyIGw9YSh0aGlzKS5kYXRhKCJjbGlja0NvdW50Iik7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBsfHwiMCI9PQpsKWEoIi5uYXYgbGkuaGFzSXRlbXMgYSwgLm5hdiBsaS5oYXNTdWIgYSIpLmRhdGEoImNsaWNrQ291bnQiLCIwIiksYSh0aGlzKS5kYXRhKCJjbGlja0NvdW50IiwiMSIpLG0ucHJldmVudERlZmF1bHQoKTtlbHNlIHJldHVybiBkb2N1bWVudC5sb2NhdGlvbj1hKHRoaXMpLmF0dHIoImhyZWYiKSxhKHRoaXMpLmRhdGEoImNsaWNrQ291bnQiLCIwIiksITB9KTthKCJkaXYuZ21hcC1wbGFjZWhvbGRlciIpLmVhY2goZnVuY3Rpb24oKXt2YXIgbT1hKHRoaXMpLGw9bS5kYXRhKCk7aW5qZWN0R29vZ2xlTWFwc0tleShmdW5jdGlvbih1KXt1PSJodHRwczovL3d3dy5nb29nbGUuY29tL21hcHMvZW1iZWQvdjEvcGxhY2U\/IitbInE9IitlbmNvZGVVUklDb21wb25lbnQobC5wbGFjZUlkKSwiem9vbT0iK2wuem9vbSwibGFuZ3VhZ2U9IitsLmxhbmd1YWdlLCJyZWdpb249Q0EiLCJrZXk9Iit1XS5qb2luKCImIik7bS5odG1sKCc8aWZyYW1lIHNyYz0iJyt1KyciIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjQwMCIgZnJhbWVib3JkZXI9IjAiIHN0eWxlPSJib3JkZXI6MCIgYWxsb3dmdWxsc2NyZWVuPjwvaWZyYW1lPicpfSl9KTsKdHJ5e2EoIi5hZGR0dCIpLmVhY2goZnVuY3Rpb24oKXt2YXIgbT1bIm9uQ2xvc2UiLCJvblllcyIsIm9uTm8iXSxsPWEodGhpcyksdT1sLmRhdGEoKSxxPXt9LHI7Zm9yKHIgaW4gdSlxW3JdPWZ1bmN0aW9uKHAsdyl7cmV0dXJuLTEhPW0uaW5kZXhPZihwKT9mdW5jdGlvbigpe2V2YWwodyl9Ond9KHIsdVtyXSk7bC5kYXJrVG9vbHRpcChxKX0pfWNhdGNoKG0pe2NvbnNvbGUubG9nKG0ubWVzc2FnZSxtKX19KTtmdW5jdGlvbiBjaGlsZE9mKGEsYil7Zm9yKDsidW5kZWZpbmVkIiE9PXR5cGVvZiBhJiZudWxsIT09YSYmKGE9YS5wYXJlbnROb2RlKSYmYSE9PWI7KTtyZXR1cm4hIWF9dmFyIE1lbnVIYW5kbGVyOwooZnVuY3Rpb24oKXt2YXIgYTtNZW51SGFuZGxlcj1mdW5jdGlvbiBjKCl7ZnVuY3Rpb24gZChmLGcpe2xldCBtPShnLm1vZGVsfHwiIikudHJpbSgpLGw9KGcudHJpbXx8IiIpLnRyaW0oKTtmPWYucmVwbGFjZSgiIyNNRU5VWUVBUiMjIixnLnllYXIpO20mJmwmJihtLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobC50b0xvd2VyQ2FzZSgpKT9sPSIiOmwudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhtLnRvTG93ZXJDYXNlKCkpJiYobT0iIikpO3JldHVybiBmPWYucmVwbGFjZSgiIyNNRU5VTU9ERUwjIyIsbSkucmVwbGFjZSgiIyNNRU5VVFJJTSMjIixsKS5yZXBsYWNlKC8gKy9nLCIgIil9aWYoYSlyZXR1cm4gYTthPXRoaXM7dGhpcy5nZXRTcGVjVXJsPWZ1bmN0aW9uKCl7dmFyIGY9IkVOR0xJU0giPT0kKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCl8fCIwIj09PSQoIiNuZXdfdHJhbnNsYXRlZF90aXRsZXMiKS52YWwoKT8iZW4iOiJmciI7IjAiPT0kKCIjbXVsdGktbGFuZ3VhZ2UiKS52YWwoKSYmCihmPSJFTkdMSVNIIj09JCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpPyJlbiI6ImZyIik7cmV0dXJuIi9qc29uL25ld2NhcnNkZXRhaWxzXyIrZisiLmpzb24ifTt0aGlzLm1lbnU9JCgiLm1lbnU1LCAubWVudTYsIC5tZW51NywgLm1lbnU4LCAubWVudTksIC5tZW51MTAiKTt0aGlzLnNwZWNzQWpheD0kLmdldCh0aGlzLmdldFNwZWNVcmwoKSk7dGhpcy5jYXJzPXtkZXRhaWxzOnt9LGZpbmRCeUlkOmZ1bmN0aW9uKGYpe3ZhciBnPXt9OyQuZWFjaCh0aGlzLmRldGFpbHMubWFrZXMsZnVuY3Rpb24obSxsKXskLmVhY2gobC5tb2RlbHMsZnVuY3Rpb24odSxxKXsxPT1xLmlzc2VyaWVzfHwxPT1xLmlzQ2xhc3M\/JC5lYWNoKHEuc3R5bGVzLGZ1bmN0aW9uKHIscCl7cC5pZD09ZiYmKGc9cCl9KTpxLmlkPT1mJiYoZz1xKX0pOyQuaXNFbXB0eU9iamVjdChnKX0pO3JldHVybiBnfX07dGhpcy5zcGVjc0FqYXguZG9uZShmdW5jdGlvbihmKXtjKCkuY2Fycy5kZXRhaWxzPWZ9KTt0aGlzLnBvc2l0aW9ucz0KZnVuY3Rpb24oZixnLG0pe3JldHVybnt0YXJnZXQ6JChnLmN1cnJlbnRUYXJnZXQpLHNlY29uZExldmVsTWVudTpudWxsLHdpbmRvd0hlaWdodDpudWxsLHNlY29uZExldmVsTWVudVRvcDpudWxsLHNlY29uZExldmVsTWVudUJvdHRvbTpudWxsLHN1Yk1lbnVJdGVtVG9wOm51bGwsc3ViTWVudUl0ZW1IZWlnaHQ6bnVsbCxzdWJNZW51SXRlbUJvdHRvbTpudWxsLGJvdHRvbUFsaWduOm51bGwsc3BlY3M6bnVsbCxzcGVjc1RvcDpudWxsLHNwZWNzSGVpZ2h0Om51bGwsc3BlY3NCb3R0b206bnVsbCxjdXN0b21TZWNvbmRMZXZlbE1lbnU6bnVsbCxyb3VuZDpmdW5jdGlvbihsKXtyZXR1cm4rKE1hdGgucm91bmQobCsiZSsyIikrImUtMiIpfSx1cGRhdGU6ZnVuY3Rpb24oKXt0aGlzLnNlY29uZExldmVsTWVudT0iZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5jdXN0b21TZWNvbmRMZXZlbE1lbnU\/dGhpcy5jdXN0b21TZWNvbmRMZXZlbE1lbnUoKTp0aGlzLnRhcmdldC5maW5kKCJ1bC5zdWI6Zmlyc3QiKTsKdHJ5e3RoaXMud2luZG93SGVpZ2h0PSQod2luZG93KS5oZWlnaHQoKSx0aGlzLnNlY29uZExldmVsTWVudVRvcD10aGlzLnNlY29uZExldmVsTWVudS5wb3NpdGlvbigpLnRvcCx0aGlzLnNlY29uZExldmVsTWVudUhlaWdodD10aGlzLnNlY29uZExldmVsTWVudS5vdXRlckhlaWdodCgpLHRoaXMuc2Vjb25kTGV2ZWxNZW51Qm90dG9tPXRoaXMucm91bmQodGhpcy5zZWNvbmRMZXZlbE1lbnVUb3ArdGhpcy5zZWNvbmRMZXZlbE1lbnVIZWlnaHQpfWNhdGNoKGwpe310cnl7dGhpcy5zdWJNZW51SXRlbVRvcD0kKGYpLnBvc2l0aW9uKCkudG9wLHRoaXMuc3ViTWVudUl0ZW1IZWlnaHQ9JChmKS5vdXRlckhlaWdodCgpLHRoaXMuc3ViTWVudUl0ZW1Cb3R0b209dGhpcy5yb3VuZCh0aGlzLnN1Yk1lbnVJdGVtSGVpZ2h0K3RoaXMuc3ViTWVudUl0ZW1Ub3ApLHRoaXMuYm90dG9tQWxpZ249dGhpcy5yb3VuZCgkKGYpLnBhcmVudCgidWwiKS5vdXRlckhlaWdodCgpKyQoZikucGFyZW50KCJ1bCIpLm9mZnNldCgpLnRvcC0KdGhpcy5zZWNvbmRMZXZlbE1lbnVCb3R0b20pfWNhdGNoKGwpe310cnl7dGhpcy5zcGVjcz1tLHRoaXMuc3BlY3NUb3A9dGhpcy5zcGVjcy5wb3NpdGlvbigpLnRvcCx0aGlzLnNwZWNzSGVpZ2h0PXRoaXMuc3BlY3Mub3V0ZXJIZWlnaHQoKSx0aGlzLnNwZWNzQm90dG9tPXRoaXMucm91bmQodGhpcy5zcGVjc1RvcCt0aGlzLnNwZWNzSGVpZ2h0KX1jYXRjaChsKXt9fSxhZGp1c3RTZWNvbmRMZXZlbDpmdW5jdGlvbigpe2lmKC42NSp0aGlzLndpbmRvd0hlaWdodDx0aGlzLnNlY29uZExldmVsTWVudUhlaWdodCl7aWYodGhpcy5zZWNvbmRMZXZlbE1lbnUuaGFzQ2xhc3MoImxvY2F0aW9uLWRldGFpbHMiKSlyZXR1cm47dGhpcy5zZWNvbmRMZXZlbE1lbnUucmVtb3ZlQXR0cigic3R5bGUiKTt0aGlzLnNlY29uZExldmVsTWVudS5jc3MoImhlaWdodCIsLjY1KnRoaXMud2luZG93SGVpZ2h0KTt0aGlzLnNlY29uZExldmVsTWVudS5jc3MoeyJvdmVyZmxvdy15IjoiYXV0byIsd2lkdGg6IjQwMHB4IiwKcG9zaXRpb246InN0YXRpYyIsZGlyZWN0aW9uOiJydGwifSk7dGhpcy5zZWNvbmRMZXZlbE1lbnUuZmluZCgiPiBsaSIpLmNzcyh7ZGlyZWN0aW9uOiJsdHIifSk7aWYoMD09JChmKS5jaGlsZHJlbigiLm1haW5tZW51LXN1Ym1lbnUiKS5sZW5ndGgpe3ZhciBsPSQoIjxkaXYvPiIpO2wuYWRkQ2xhc3MoIm1haW5tZW51LXN1Ym1lbnUiKTtsLmRldGFjaCgpLmFwcGVuZCh0aGlzLnNlY29uZExldmVsTWVudSk7dGhpcy50YXJnZXQuYXBwZW5kKGwpfXRoaXMudXBkYXRlKCl9aWYodGhpcy5zZWNvbmRMZXZlbE1lbnVCb3R0b208dGhpcy5zdWJNZW51SXRlbVRvcCkkKGYpLmFkZENsYXNzKCJhbGlnbi1sZXZlbCIpLHRoaXMudXBkYXRlKCksbD10aGlzLnNlY29uZExldmVsTWVudUJvdHRvbTwkKGYpLnBhcmVudCgidWwiKS5vdXRlckhlaWdodCgpPyQoZikub3V0ZXJIZWlnaHQoKSskKGYpLnBvc2l0aW9uKCkudG9wLXRoaXMuc2Vjb25kTGV2ZWxNZW51SGVpZ2h0OiQoZikucGFyZW50KCJ1bCIpLm91dGVySGVpZ2h0KCkrCiQoZikucGFyZW50KCJ1bCIpLnBvc2l0aW9uKCkudG9wLXRoaXMuc2Vjb25kTGV2ZWxNZW51Qm90dG9tLHRoaXMuc2Vjb25kTGV2ZWxNZW51LmNzcygidHJhbnNmb3JtIiwidHJhbnNsYXRlWSgiK2wrInB4KSIpO2Vsc2UgaWYodGhpcy5zZWNvbmRMZXZlbE1lbnVCb3R0b20+dGhpcy5zdWJNZW51SXRlbVRvcCYmdGhpcy5zdWJNZW51SXRlbUJvdHRvbT50aGlzLnNlY29uZExldmVsTWVudUJvdHRvbSl7bD0wPnBhcnNlSW50KHRoaXMuc2Vjb25kTGV2ZWxNZW51LmNzcygibGVmdCIpLnJlcGxhY2UoInB4IiwiIikpPyJyaWdodCI6ImxlZnQiO3ZhciB1PXt0cmFuc2Zvcm06InRyYW5zbGF0ZVkoIitNYXRoLmFicyh0aGlzLnNlY29uZExldmVsTWVudUJvdHRvbS10aGlzLnN1Yk1lbnVJdGVtQm90dG9tKSt0aGlzLnNlY29uZExldmVsTWVudVRvcCsicHgpIn07InJpZ2h0IiE9bCYmKHVbbF09dGhpcy50YXJnZXQucG9zaXRpb24oKS5sZWZ0K3RoaXMudGFyZ2V0LndpZHRoKCkpO3RoaXMuc2Vjb25kTGV2ZWxNZW51LmNzcyh1KX1lbHNlIHRoaXMuc2Vjb25kTGV2ZWxNZW51VG9wPgp0aGlzLnN1Yk1lbnVJdGVtVG9wJiZ0aGlzLnNlY29uZExldmVsTWVudS5jc3MoInRyYW5zZm9ybSIsInRyYW5zbGF0ZVkoIit0aGlzLnN1Yk1lbnVJdGVtVG9wKyJweCkiKX0sYWRqdXN0SG9yaXpvbnRhbDpmdW5jdGlvbigpe3RoaXMuc2Vjb25kTGV2ZWxNZW51Lmhhc0NsYXNzKCJpbnZpc2libGUiKXx8dGhpcy5zZWNvbmRMZXZlbE1lbnUuYWRkQ2xhc3MoImludmlzaWJsZSIpO3ZhciBsPXRoaXMuaXNJblZpZXdwb3J0KHRoaXMuc2Vjb25kTGV2ZWxNZW51WzBdKSx1PTA+cGFyc2VJbnQodGhpcy5zZWNvbmRMZXZlbE1lbnUuY3NzKCJsZWZ0IikucmVwbGFjZSgicHgiLCIiKSk\/InJpZ2h0IjoibGVmdCI7bHx8ImxlZnQiIT09dXx8KHRoaXMuc2Vjb25kTGV2ZWxNZW51Lmhhc0NsYXNzKCJMMTAwIikmJnRoaXMuc2Vjb25kTGV2ZWxNZW51LnJlbW92ZUNsYXNzKCJMMTAwIiksdGhpcy5zZWNvbmRMZXZlbE1lbnUuYWRkQ2xhc3MoIlIxMDAiKSk7bD17fTtsW3VdPXRoaXMudGFyZ2V0LnBvc2l0aW9uKCkubGVmdCsKdGhpcy50YXJnZXQud2lkdGgoKTt0aGlzLnNlY29uZExldmVsTWVudS5jc3MobCk7dGhpcy5zZWNvbmRMZXZlbE1lbnUucmVtb3ZlQ2xhc3MoImludmlzaWJsZSIpfSxpc0luVmlld3BvcnQ6ZnVuY3Rpb24obCl7bD1sLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybiAwPD1sLnRvcCYmMDw9bC5sZWZ0JiZsLmJvdHRvbTw9KHdpbmRvdy5pbm5lckhlaWdodHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCkmJmwucmlnaHQ8PSh3aW5kb3cuaW5uZXJXaWR0aHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoKX19fTt0aGlzLm1lbnUub24oIm1vdXNlZW50ZXIgbW91c2VsZWF2ZSIsInVsLm5hdiA+IGxpIixmdW5jdGlvbihmKXt2YXIgZz1hLnBvc2l0aW9ucyh0aGlzLGYpO2cudXBkYXRlKCk7Zy5zZWNvbmRMZXZlbE1lbnVCb3R0b20tJCh3aW5kb3cpLnNjcm9sbFRvcCgpPmcud2luZG93SGVpZ2h0P2cuc2Vjb25kTGV2ZWxNZW51LmFkZENsYXNzKCJzbGltLXN1Ym1lbnUiKToKZy5zZWNvbmRMZXZlbE1lbnUucmVtb3ZlQ2xhc3MoInNsaW0tc3VibWVudSIpOyJtb3VzZWxlYXZlIiE9PWYudHlwZSYmKGY9JCh0aGlzKS5maW5kKCI+IHVsIiksZi5sZW5ndGgmJiFmLmRhdGEoImNhbGN1bGF0ZWQiKSYmKGc9JCh0aGlzKS5vdXRlcldpZHRoKCksZi5vdXRlcldpZHRoKCk8ZyYmZi5jc3MoIndpZHRoIixnKzEpLGYuZGF0YSgiY2FsY3VsYXRlZCIsITApKSl9KTt0aGlzLm1lbnUub24oIm1vdXNlZW50ZXIgbW91c2VsZWF2ZSIsIiNNYWluTWVudV9ORVcgPiB1bC5zdWIgPiBsaSIsZnVuY3Rpb24oZil7dmFyIGc9YS5wb3NpdGlvbnModGhpcyxmKTswIT0kKGYuY3VycmVudFRhcmdldCkuZmluZCgidWwuc3ViID4gbGkiKS5sZW5ndGgmJiJtb3VzZWxlYXZlIiE9Zi50eXBlJiYoZy51cGRhdGUoKSxnLmFkanVzdFNlY29uZExldmVsKCkpfSk7dGhpcy5tZW51Lm9uKCJtb3VzZWVudGVyIG1vdXNlbGVhdmUiLCIjTWFpbk1lbnVfREVBTEVSU0hJUFMgPiB1bC5zdWIgbGkubG9jYXRpb24tbmFtZXMiLApmdW5jdGlvbihmKXt2YXIgZz1hLnBvc2l0aW9ucyh0aGlzLGYpLG09JChmLmN1cnJlbnRUYXJnZXQpLmZpbmQoIi5sb2NhdGlvbi1kZXRhaWxzIik7Zy5jdXN0b21TZWNvbmRMZXZlbE1lbnU9ZnVuY3Rpb24oKXtyZXR1cm4gbX07MCE9JChmLmN1cnJlbnRUYXJnZXQpLmZpbmQoIi5sb2NhdGlvbi1kZXRhaWxzIikubGVuZ3RoJiYibW91c2VsZWF2ZSIhPWYudHlwZSYmKCQoZi5jdXJyZW50VGFyZ2V0KS5maW5kKCIubG9jYXRpb24tZGV0YWlscyIpLm9uKCJsYXp5bG9hZGVkIixmdW5jdGlvbihsKXtnLmN1c3RvbVNlY29uZExldmVsTWVudSgpLmF0dHIoInN0eWxlIixudWxsKTtnLnVwZGF0ZSgpO2cuYWRqdXN0SG9yaXpvbnRhbCgpO2cuYWRqdXN0U2Vjb25kTGV2ZWwoKX0pLGcuY3VzdG9tU2Vjb25kTGV2ZWxNZW51KCkuYXR0cigic3R5bGUiLG51bGwpLGcudXBkYXRlKCksZy5hZGp1c3RIb3Jpem9udGFsKCksZy5hZGp1c3RTZWNvbmRMZXZlbCgpKX0pO3RoaXMubWVudS5vbigibW91c2VlbnRlciBtb3VzZWxlYXZlIiwKJyNNYWluTWVudV9UQUJfQ09NTUVSQ0lBTCA+IHVsLnN1YiA+IFtkYXRhLWlkPSJTVUJfVEFCX0NPTU1FUkNJQUxfQ09NTUVSIl0nLGZ1bmN0aW9uKGYpe2Y9YS5wb3NpdGlvbnModGhpcyxmKTtmLnVwZGF0ZSgpO2YuYWRqdXN0U2Vjb25kTGV2ZWwoKX0pO2lmKCJmb3JkX2xpbmNvbG5fZXh0ZXJuYWwiPT0kKCIjREVBTEVSUEFSVFJFRElSRUNUVFlQRSIpLnZhbCgpJiYwPCQoIiNERUFMRVJCUkFORCIpLmxlbmd0aCYmJCgiI0RFQUxFUkJSQU5EIikudmFsKCkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygiZm9yZCIpJiYiIiE9JCgiI0RFQUxFUlBBQ09ERSIpLnZhbCgpKXt2YXIgZT0kKCJodG1sIikuYXR0cigibGFuZyIpLGs9JCgiI0RFQUxFUlBBQ09ERSIpLnZhbCgpLGg9ImVuIj09ZT8iL3JlcXVlc3RzL2Nhci1wYXJ0cy1hbmQtYWNjZXNzb3JpZXMuaHRtbCI6Ii9kZW1hbmRlcy9jb21tYW5kZS1waWVjZXMtYWNjZXNzb2lyZXMtYXV0b21vYmlsZXMuaHRtbCIsbj0iaHR0cHM6Ly9mb3JkYWNjZXNzLmNvbS9Gb3JkLmFzcHg\/bG9jYXRpb249IisKazt0aGlzLm1lbnUub24oIm1vdXNlZW50ZXIgbW91c2VsZWF2ZSIsIiNNYWluTWVudV9TRVJWSUNFIHVsLnN1YiBsaVtkYXRhLWlkPSdQSUVDRVMnXSIsZnVuY3Rpb24oKXt2YXIgZj0kKHRoaXMpO2Y9JCgiPiBhIixmKTtmLmF0dHIoImhyZWYiKT09aCYmKGYuYXR0cigiaHJlZiIsbiksZi5hdHRyKCJ0YXJnZXQiLCJfYmxhbmsiKSl9KX10aGlzLm1lbnUub24oIm1vdXNlZW50ZXIgbW91c2VsZWF2ZSIsIiNNYWluTWVudV9GSU5BTkNFID4gYSIsZnVuY3Rpb24oKXt2YXIgZj0kKHRoaXMpLGc9JCgiaHRtbCIpLmF0dHIoImxhbmciKSxtPSQoIiNERUFMRVJQQUNPREUiKS52YWwoKSxsPSQoIiNERUFMRVJCUkFORF9QUklNQVJZIikudmFsKCkudG9Mb3dlckNhc2UoKTsiZm9yZF9saW5jb2xuX2V4dGVybmFsIiE9JCgiI0ZJTkFOQ0VGT1JNVFlQRSIpLnZhbCgpfHwiZm9yZCIhPWwmJiJsaW5jb2xuIiE9bHx8IiI9PW18fChmLmF0dHIoImhyZWYiLCJmb3JkIj09bD8oImVuIj09Zz8iaHR0cHM6Ly93d3cuZm9yZC5jYS9maW5hbmNlL2FwcGx5LzE\/U291cmNlT2ZEYXRhPUNBRENGJmRlYWxlcklkPSI6CiJodHRwczovL2ZyLmZvcmQuY2EvZmluYW5jZS9hcHBseS8xP1NvdXJjZU9mRGF0YT1DQURDRiZkZWFsZXJJZD0iKSttOigiZW4iPT1nPyJodHRwczovL3d3dy5saW5jb2xuY2FuYWRhLmNvbS9maW5hbmNlL2FwcGx5LzE\/U291cmNlT2ZEYXRhPUNBRENMJmRlYWxlcklkPSI6Imh0dHBzOi8vZnIubGluY29sbmNhbmFkYS5jb20vZmluYW5jZS9hcHBseS8xP1NvdXJjZU9mRGF0YT1DQURDTCZkZWFsZXJJZD0iKSttKSxmLmF0dHIoInRhcmdldCIsIl9ibGFuayIpKX0pO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtpZigwPCQoIiNkMmMtYm5wLWxpbmtydWxlcy10ZXh0YXJlYSIpLmxlbmd0aCYmIiIhPSQoIiNkMmMtYm5wLWxpbmtydWxlcy10ZXh0YXJlYSIpLnZhbCgpJiYiIyNMSU5LUlVMRVMjIyIhPSQoIiNkMmMtYm5wLWxpbmtydWxlcy10ZXh0YXJlYSIpLnZhbCgpKXtpZihkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuY3RhLXRwbCIpLmxlbmd0aCYmInVuZGVmaW5lZCIhPT10eXBlb2YgbmV3Y2FyRGV0YWlscyYmCiJ1bmRlZmluZWQiIT09dHlwZW9mIG5ld2NhckRldGFpbHMuYWN0aXZlTW9kZWwpe2lmKCExPT09KCJjb21tZXJjaWFsIj09bmV3Y2FyRGV0YWlscy5hY3RpdmVNb2RlbC5zZWN0aW9uPyEwOiExKSlyZXR1cm47ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmN0YS10cGwgYSIpLmZvckVhY2goKGYsZyk9PntnPWYuZ2V0QXR0cmlidXRlKCJocmVmIik7aWYoZy5pbmNsdWRlcygic2hvcC5mb3JkLmNhIikpe2xldCBtPSExO2cuaW5jbHVkZXMoInN1cGVyZHV0eSIpJiYobT1nLnJlcGxhY2UoIi9zdXBlcmR1dHkvIiwiL3N1cGVyZHV0eS1jb21tZXJjaWFsLyIpKTshMSE9PW0mJmYuc2V0QXR0cmlidXRlKCJocmVmIixtKX19KX1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIjY2xhc3Njb21tZXJjaWFsX2NvbnRhaW5lciIpLmxlbmd0aCYmZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmRpdkNhclNpbmdsZU91dGVyQm94IGEiKS5mb3JFYWNoKChmLGcpPT57Zz1mLmdldEF0dHJpYnV0ZSgiaHJlZiIpOwppZihnLmluY2x1ZGVzKCJzaG9wLmZvcmQuY2EiKSl7bGV0IG09ITE7Zy5pbmNsdWRlcygic3VwZXJkdXR5IikmJihtPWcucmVwbGFjZSgiL3N1cGVyZHV0eS8iLCIvc3VwZXJkdXR5LWNvbW1lcmNpYWwvIikpOyExIT09bSYmZi5zZXRBdHRyaWJ1dGUoImhyZWYiLG0pfX0pfX0sMkUzKTt0aGlzLm1lbnUub24oIm1vdXNlZW50ZXIgbW91c2VsZWF2ZSIsIiNNYWluTWVudV9ORVcgPiB1bC5zdWIgPiBsaSA+IHVsLnN1YiA+IGxpID4gdWwuc3ViID4gbGksICNNYWluTWVudV9ORVcgPiB1bC5zdWIgPiBsaSA+IC5tYWlubWVudS1zdWJtZW51ID4gdWwuc3ViID4gbGkgPiB1bC5zdWIgPiBsaSwgICNNYWluTWVudV9UQUJfQ09NTUVSQ0lBTCA+IHVsLnN1YiA+IGxpID4gdWwuc3ViID4gbGkgPiB1bC5zdWIgPiBsaSwgI01haW5NZW51X1RBQl9DT01NRVJDSUFMID4gdWwuc3ViID4gbGkgPiAubWFpbm1lbnUtc3VibWVudSA+IHVsLnN1YiA+IGxpID4gdWwuc3ViID4gbGkiLGZ1bmN0aW9uKGYpe2lmKCJtb3VzZWxlYXZlIiE9CmYudHlwZSl7dmFyIGc9JCh0aGlzKS5maW5kKCIubWVudS10ZWNoLXNwZWNzIik7MD09Zy5sZW5ndGgmJihnPSQoIiNtZW51LXNwZWNzLXRlbXBsYXRlIikuY2xvbmUoKSk7dmFyIG09dGhpcztpZigwPT0kKG0pLmNoaWxkcmVuKCIubWVudS10ZWNoLXNwZWNzIikubGVuZ3RoKXt2YXIgbD0kKG0pLmZpbmQoImE6bnRoLW9mLXR5cGUoMikiKS50ZXh0KCksdT0kKG0pLmZpbmQoImE6Zmlyc3QtY2hpbGQiKS5hdHRyKCJocmVmIikscT11Lmxhc3RJbmRleE9mKCIvIikrMTtjYXJMaW5rVHJpbW1lZD11LnN1YnN0cmluZyhxLHUubGVuZ3RoKTt2YXIgcj0kKCIjdHh0QnVpbGRBbmRQcmljZUZvbGRlclBhdGgiKS52YWwoKStjYXJMaW5rVHJpbW1lZDsoZnVuY3Rpb24oKXtpZigwPCQoIiNkMmMtYm5wLWxpbmtydWxlcy10ZXh0YXJlYSIpLmxlbmd0aCYmIiIhPSQoIiNkMmMtYm5wLWxpbmtydWxlcy10ZXh0YXJlYSIpLnZhbCgpJiYiIyNMSU5LUlVMRVMjIyIhPSQoIiNkMmMtYm5wLWxpbmtydWxlcy10ZXh0YXJlYSIpLnZhbCgpKXt2YXIgeT0KMDwkKG0pLmNsb3Nlc3QoImxpW2RhdGEtaWRePSdORVdfQ09NTUVSQ0lBTCddIikubGVuZ3RoPyEwOiExLEE9JCgiI2QyYy1ibnAtbGlua3J1bGVzLXRleHRhcmVhIikudmFsKCk7QT1KU09OLnBhcnNlKEEpO3ZhciBJPSQoImh0bWwiKS5hdHRyKCJsYW5nIiksQj1yLm1hdGNoKCJlbiI9PUk\/L1wvYnVpbGQtYW5kLXByaWNlXC8oXGR7NH0tKFx3KyktKFx3KykuKlwuaHRtbCkuKi86L1wvY29uZmlndXJhdGlvbi1ldC1wcml4XC8oKFx3KyktKFx3KyktXGR7NH0pLipcLmh0bWwvKSxKPUJbMF0sRj1CWzJdLnRvTG93ZXJDYXNlKCk7Qj1CWzNdLnRvTG93ZXJDYXNlKCkucmVwbGFjZUFsbCgiXyIsIiAiKTt5JiZCLmluY2x1ZGVzKCJzdXBlciBkdXR5IikmJihCPSJzdXBlciBkdXR5IGNvbW1lcmNpYWwiKTtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBBW0ZdJiYidW5kZWZpbmVkIj09PXR5cGVvZiBBW0ZdW0JdKWZvcih2YXIgSyBpbiBBW0ZdKWlmKHk9SyxCLmluY2x1ZGVzKHkpKXtCPXk7CmJyZWFrfSJ1bmRlZmluZWQiIT09dHlwZW9mIEFbRl0mJiJ1bmRlZmluZWQiIT09dHlwZW9mIEFbRl1bQl0mJigkKGcpLmZpbmQoIi5tZW51LXNwZWMtYm5wIikuYXR0cigidGFyZ2V0IiwiX2JsYW5rIikscj1yLnJlcGxhY2UoSixBW0ZdW0JdW0ldKSl9fSkoKTskKGcpLmZpbmQoIi5tZW51LXNwZWMtYm5wIikuYXR0cigiaHJlZiIscik7JChnKS5maW5kKCIubWVudS1zcGVjLWxpbmsiKS5hdHRyKCJocmVmIix1KTskKGcpLnJlbW92ZUF0dHIoImlkIik7JChnKS5jaGlsZHJlbigiLm1lbnUtc3BlY3MtdGl0bGUiKS5hcHBlbmQobCk7dmFyIHA9e307JC5pc0VtcHR5T2JqZWN0KGMoKS5jYXJzLmRldGFpbHMpPyQud2hlbihjKCkuc3BlY3NBamF4KS5kb25lKGZ1bmN0aW9uKHkpe3A9YygpLmNhcnMuZmluZEJ5SWQoJChtKS5kYXRhKCJtb2RlbGlkIikpfSk6cD1jKCkuY2Fycy5maW5kQnlJZCgkKG0pLmRhdGEoIm1vZGVsaWQiKSk7aWYoISQuaXNFbXB0eU9iamVjdChwKSl7dmFyIHc9YS5zaG91bGRVc2VGcmVuY2hOYW1lcygpPwpwLm5hbWU6cC5tb2RlbDtwLmhhc093blByb3BlcnR5KCJiYXNlX3N0eWxlIikmJihwPXAuYmFzZV9zdHlsZSx3PXAubW9kZWwpO3E9IkZSRU5DSCI9PSQoIiN0ZXh0TGFuZ3VhZ2UiKS52YWwoKT8iTi9EIjoiTi9BIjtsPSIiPT1wLmRpc3BsYWNlbWVudD9xOnAuZGlzcGxhY2VtZW50O3U9IiI9PXAuY2l0eUZ1ZWw\/cTpwLmNpdHlGdWVsO3E9IiI9PXAuaHd5RnVlbD9xOnAuaHd5RnVlbDt2YXIgej1wLm1zcnBBbGxJbixEPSQoZykuZmluZCgiLm1lbnUtc3BlYy1ibnAiKS50ZXh0KCkudHJpbSgpO0Q9RC5yZXBsYWNlKCIkTU9ERUwiLHcpO3c9YDxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPiR7ei50b0xvY2FsZVN0cmluZygpfTwvc3Bhbj5gO3o9JCgiI0FETUlOX05FV19ET05UX1NIT1dfUFJJQ0VfTU9ERUxTIikudmFsKCkuaW5jbHVkZXMocC5tb2RlbGlkKTtpZigwPCQobSkuY2hpbGRyZW4oIi5wcmljZSIpLmxlbmd0aCl7JChnKS5maW5kKCIubWVudS1zcGVjLXByaWNlIikudGV4dCgiIik7CnZhciBDPSQoJzxkaXYgY2xhc3M9InByaWNlIi8+JyksRT0kKCc8c3BhbiBjbGFzcz0icHJpY2VfYW10Ii8+JyksRz0kKCc8c3BhbiBjbGFzcz0icHJpY2Vfc2NyYXRjaGVkIi8+JyksSD0kKCc8c3BhbiBjbGFzcz0icHJpY2VfcHJvbW8iLz4nKTswPCQobSkuY2hpbGRyZW4oIi5wcmljZSIpLmNoaWxkcmVuKCIucHJpY2Utc2NyYXRjaCIpLmxlbmd0aD8oRy5odG1sKHcpLEUuYXBwZW5kKEcpLEUuY3NzKHsidGV4dC1kZWNvcmF0aW9uIjoibGluZS10aHJvdWdoIixjb2xvcjoicmVkIn0pKTpFLmh0bWwodyk7Qy5hcHBlbmQoRSk7MDwkKG0pLmNoaWxkcmVuKCIucHJpY2UiKS5jaGlsZHJlbigiLnByaWNlX3Byb21vIikubGVuZ3RoJiYoSC50ZXh0KCQobSkuY2hpbGRyZW4oIi5wcmljZSIpLmNoaWxkcmVuKCIucHJpY2VfcHJvbW8iKS50ZXh0KCkpLEguY3NzKHtjb2xvcjoicmVkIn0pLEMuYXBwZW5kKEgpKTskKGcpLmZpbmQoIi5tZW51LXNwZWMtcHJpY2UiKS5hcHBlbmQoQyl9ZWxzZSAkKGcpLmZpbmQoIi5tZW51LXNwZWMtcHJpY2UiKS5odG1sKHcpOwokKGcpLmZpbmQoIi5tZW51LXNwZWMtaHAiKS50ZXh0KHAuaHBBdFJQTSk7JChnKS5maW5kKCIubWVudS1zcGVjLXBvd2VyIikudGV4dChsKTskKGcpLmZpbmQoIi5tZW51LXNwZWMtZnVlbC1jaXR5IikudGV4dCh1KTskKGcpLmZpbmQoIi5tZW51LXNwZWMtZnVlbC1oaWdod2F5IikudGV4dChxKTskKGcpLmZpbmQoIi5tZW51LXNwZWMtZHJpdmV0cmFpbiIpLnRleHQocC5kcml2ZVRyYWluKTskKGcpLmZpbmQoIi5tZW51LXNwZWMtYm5wIikuY29udGVudHMoKS5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4gMz09dGhpcy5ub2RlVHlwZX0pLmxhc3QoKS5yZXBsYWNlV2l0aChEKTt6JiYoJChnKS5maW5kKCIubWVudS1zcGVjLWJucCIpLnJlbW92ZSgpLCQoZykuZmluZCgiLm1lbnUtc3BlYy1wcmljZSIpLnRleHQoJCgiI05FV19QUklDRV9URVhUIikudmFsKCkpKTskKGcpLmZpbmQoIi5tZW51LXByaWNlLXRleHQiKS50ZXh0KGQoJChnKS5maW5kKCIubWVudS1wcmljZS10ZXh0IikudGV4dCgpLApwKSk7NUU4PnAuaWQmJiQobSkuYXBwZW5kKGcuZmFkZUluKDIwMCkpO2w9bmV3IEN1c3RvbUV2ZW50KCJ0b3BuYXYtdGVjaC1zcGVjLWxvYWRlZCIse2RldGFpbDp7dGVtcGxhdGU6Z319KTtkb2N1bWVudC5kaXNwYXRjaEV2ZW50KGwpfX1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIHk9YS5wb3NpdGlvbnMobSxmLCQoZykpO3kudXBkYXRlKCk7dmFyIEE9JChtKS5wYXJlbnQoInVsLnN1YiIpLnBhcmVudCgpLnBhcmVudCgpO0Eub2Zmc2V0KCk7QS5vdXRlckhlaWdodCgpO3kuc3BlY3NCb3R0b208eS5zdWJNZW51SXRlbVRvcCYmJChnKS5jc3MoInRvcCIseS5zdWJNZW51SXRlbUJvdHRvbS15LnNwZWNzQm90dG9tKTt5LnN1Yk1lbnVJdGVtVG9wPHkuc3BlY3NCb3R0b20mJnkuc3ViTWVudUl0ZW1Cb3R0b20+eS5zcGVjc0JvdHRvbSYmJChnKS5jc3MoInRvcCIsJChnKS5wb3NpdGlvbigpLnRvcCsoeS5zdWJNZW51SXRlbUJvdHRvbS15LnNwZWNzQm90dG9tKSl9LDApO2RlbGV0ZSBwfX0pOwokKCcudXBfbWVudSBbaWRePSJNYWluTWVudV8iXS50b3A6bm90KC5pc09wZW4pJykub24oIm1vdXNlZW50ZXIiLGZ1bmN0aW9uKGYpeyQoZi5jdXJyZW50VGFyZ2V0KS5oYXNDbGFzcygiaXNPcGVuIil8fCQoJy51cF9tZW51IFtpZF49Ik1haW5NZW51XyJdLnRvcCcpLnJlbW92ZUNsYXNzKCJpc09wZW4iKX0pOyQoZG9jdW1lbnQpLm9uKCJjbGljayIsZnVuY3Rpb24oZil7Y2hpbGRPZihkb2N1bWVudC5hY3RpdmVFbGVtZW50LCQoIi51cF9tZW51IilbMF0pfHwkKCcudXBfbWVudSBbaWRePSJNYWluTWVudV8iXS50b3AnKS5yZW1vdmVDbGFzcygiaXNPcGVuIil9KTskKCIjTWFpbk1lbnVfQ09OVEFDVCIpLm9uKCJtb3VzZWVudGVyIG1vdXNlbGVhdmUiLGZ1bmN0aW9uKGYpe3ZhciBnPSQoIiNtZW51LW1hcC1saW5rIik7MD09Zy5sZW5ndGh8fDA8Zy5maW5kKCJpZnJhbWUiKS5sZW5ndGh8fGluamVjdEdvb2dsZU1hcHNLZXkoZnVuY3Rpb24obSl7bT0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9tYXBzL2VtYmVkL3YxL3BsYWNlPyIrClsicT0iK2VuY29kZVVSSUNvbXBvbmVudChnLmRhdGEoInBsYWNlSWQiKSksInpvb209IitnLmRhdGEoInpvb20iKSwibGFuZ3VhZ2U9IitnLmRhdGEoImxhbmd1YWdlIiksInJlZ2lvbj1DQSIsImtleT0iK21dLmpvaW4oIiYiKTtnLmFwcGVuZCgnPGlmcmFtZSBzcmM9IicrbSsnIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSI0MDAiIGZyYW1lYm9yZGVyPSIwIiBzdHlsZT0iYm9yZGVyOjAiIGFsbG93ZnVsbHNjcmVlbj48L2lmcmFtZT4nKX0pfSk7JCgiI01haW5NZW51X0ZJTkFOQ0UsICNNYWluTWVudV9DT05UQUNUIikub24oIm1vdXNlZW50ZXIgbW91c2VsZWF2ZSIsZnVuY3Rpb24oZil7dmFyIGc9Zi5jdXJyZW50VGFyZ2V0LmlkLG09JCgiIyIrZyk7MD09PSQoIiMiK2crIi5pc09wZW4iKS5sZW5ndGgmJiJtb3VzZWxlYXZlIiE9PWYudHlwZSYmbS5hZGRDbGFzcygiaXNPcGVuIik7aWYoIm1vdXNlbGVhdmUiPT09Zi50eXBlKXt2YXIgbD0kKCIuY3JlZGl0U2NvcmVQb3B1cEZvcm0iKVswXTsKZz0kKCIjIitnKyIgPiBhLnRvcF9saW5rIilbMF07KGwmJmYuZnJvbUVsZW1lbnQ9PT1sfHxnJiZmLmZyb21FbGVtZW50PT09ZykmJm0ucmVtb3ZlQ2xhc3MoImlzT3BlbiIpO2w9JChmLnRvRWxlbWVudCkuaGFzQ2xhc3MoImNhbC13cmFwcGVyIil8fCQoZi50b0VsZW1lbnQpLmNoaWxkcmVuKCkuaGFzQ2xhc3MoImNhbC13cmFwcGVyIil8fCQoZi50b0VsZW1lbnQpLmhhc0NsYXNzKCJuZWJDYWwiKXx8JChmLnRvRWxlbWVudCkuY2xvc2VzdCgiLm5lYkNhbCIpLmxlbmd0aDtnPSQoZi50b0VsZW1lbnQpLmhhc0NsYXNzKCJwYWMtY29udGFpbmVyIik7aWYoIShudWxsPT09Zi50b0VsZW1lbnR8fGNoaWxkT2YoZi50b0VsZW1lbnQsbVswXSl8fGNoaWxkT2YoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCxtWzBdKXx8bHx8Zyl8fGNoaWxkT2YoZi50b0VsZW1lbnQsJCgiLnVwX21lbnUiKVswXSkmJiFjaGlsZE9mKGYudG9FbGVtZW50LG1bMF0pKSQoIi5uZWJDYWwiKS5pcygiOnZpc2libGUiKSYmCihmPSQoIi5maW5hbmNlLW1lbnUtZnJlZWNyZWRpdCAuY3JlZGl0U2NvcmVCaXJ0aGRhdGUiKS5kYXRhKCJuZWJDYWwiKSkmJmYuaGlkZSgpLG0ucmVtb3ZlQ2xhc3MoImlzT3BlbiIpfX0pO2lmKCQoITApKXtlPSQoIi5tZW51NSAubmF2ID4gbGkiKTtrPWUubGVuZ3RoO3ZhciB4PSQoIiNNYWluTWVudV9DT05UQUNUIiksdj0tMTtlLmVhY2goZnVuY3Rpb24oZixnKXskKGcpLmlzKHgpJiYodj1mKX0pOy0xPHYmJi41PD12L2smJnguZmluZCgiLmNvbnRhY3R1cy1mb3JtLmNvbnRhY3Qtc2hvcnQiKS5jc3Moe3JpZ2h0OiJpbmhlcml0In0pfXRoaXMuc2hvdWxkVXNlRnJlbmNoTmFtZXM9ZnVuY3Rpb24oKXtyZXR1cm4iRlJFTkNIIj09JCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpJiYiMSI9PT0kKCIjbmV3X3RyYW5zbGF0ZWRfdGl0bGVzIikudmFsKCl9O3RoaXMuc2V0TWVudUV4cHJlc3NGb3JtU2VsZWN0ZWRPcHRpb249ZnVuY3Rpb24oKXt2YXIgZj13aW5kb3cubG9jYXRpb24uaHJlZiwKZz0vdXNlZHxvY2Nhc2lvbi8udGVzdChmKSxtPS9uZXd8bmV1ZnMvLnRlc3QoZiksbD0vZmluYW5jZW1lbnR8Y3JlZGl0Ly50ZXN0KGYpLHU9L3NlcnZpY2V8YWNjZXNzb3JpZXN8dGlyZXxwbmV1c3xib2R5c2hvcHxib2R5LXNob3B8Y2Fyb3NzZXJpZS8udGVzdChmKTtmPSIiO20\/Zj0ibmV3IjpnP2Y9InVzZWQiOmw\/Zj0iZmluYW5jZSI6dSYmKGY9InNlcnZpY2UiKTsiIiE9ZiYmKGc9JCgiLm1lbnUgI3F1aWNrRW1haWxEZXBhcnRtZW50IiksJCgnIG9wdGlvblt2YWx1ZT0iJytmKyciXScsZykucHJvcCgic2VsZWN0ZWQiLCJzZWxlY3RlZCIpLG09JCgib3B0aW9uOnNlbGVjdGVkIixnKS5pbmRleCgpLGcucHJldigidWwiKS5maW5kKCJsaSIpLmVxKG0pLmZpbmQoImEiKS50cmlnZ2VyKCJjbGljayIpKX07c2V0VGltZW91dChmdW5jdGlvbigpe2Euc2V0TWVudUV4cHJlc3NGb3JtU2VsZWN0ZWRPcHRpb24oKX0sMTApO2NvbnNvbGUubG9nKCJNZW51SGFuZGxlciBpbml0IC0tIHRlc3QgcmVtb3ZlIGxhdGVyIik7CnRoaXMudHJhbnNsYXRlVGl0bGVzPWZ1bmN0aW9uKCl7cmV0dXJuICRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvckZ1bmN0aW9uKGZ1bmN0aW9uKigpe3RyeXt2YXIgZj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1tZW51LXRyYW5zbGF0ZV0iKTtpZihmKXt2YXIgZz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJib2R5IikuY2xhc3NOYW1lLm1hdGNoKCJGUkVOQ0giKT8iZnIiOiJlbiIsbT0obmV3IFVSTChgL2pzL2pzb24vbWVudVRpdGxlc18ke2d9Lmpzb25gLHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4pKS5ocmVmO3Jlc3BvbnNlPXlpZWxkIGZldGNoKG0pO2lmKHRleHQ9eWllbGQgcmVzcG9uc2UudGV4dCgpKWlmKGRhdGE9SlNPTi5wYXJzZSh0ZXh0KSxmJiYwIT09ZGF0YS5sZW5ndGgpZm9yKGc9MDtnPGYubGVuZ3RoO2crKyl7dmFyIGw9ZltnXS5nZXRBdHRyaWJ1dGUoImRhdGEtbWVudS10cmFuc2xhdGUiKTtkYXRhW2xdJiZCYXNlNjQuaXNCYXNlNjQoZGF0YVtsXS50ZXh0KSYmCihmW2ddLnRleHRDb250ZW50PUJhc2U2NC5kZWNvZGUoZGF0YVtsXS50ZXh0KSl9fX1jYXRjaCh1KXtjb25zb2xlLmxvZyh1KX19KX07dGhpcy50cmFuc2xhdGVUaXRsZXMoKX19KSgpOyQoZnVuY3Rpb24oKXt3aW5kb3cubWVudUhhbmRsZXI9bmV3IE1lbnVIYW5kbGVyfSk7CnZhciBnZXRBY3RpdmVQYWdlPWZ1bmN0aW9uKCl7dmFyIGE9IiI7InVuZGVmaW5lZCI9PT10eXBlb2YgYWN0aXZlUGFnZSYmKGFjdGl2ZVBhZ2U9IiIpO3N3aXRjaChhY3RpdmVQYWdlKXtjYXNlICJIT01FUEFHRSI6YT0iQWNjdWVpbCI7YnJlYWs7Y2FzZSAiQ0FSREVUQUlMUyI6YT0iT2NjYXNpb24tVkRQIjticmVhaztjYXNlICJVU0VEQ0FSUyI6YT0iT2NjYXNpb24tU1JQIjticmVhaztjYXNlICJORVdDQVJTIjphPSJOZXVmLVNSUCI7YnJlYWs7Y2FzZSAiTkVXQ0FSREVUQUlMUyI6YT0iTmV1Zi1WRFAifXJldHVybiBhfSxzZW5kR29vZ2xlQW5hbHl0aWNCYW5uZXJDbGlja2VkRXZlbnQ9ZnVuY3Rpb24oYSxiKXtnYVRyYWNrKCJfdHJhY2tFdmVudCIsIkNsaXF1ZXMgQmFubmllcmUiLGEsYiwxKX07CiQoZG9jdW1lbnQpLm9uKCJjbGljayIsIiNob21lcGFnZS1iYW5uZXIgI3NsaWRlciA+IGEiLGZ1bmN0aW9uKGEpe2lmKGE9Z2V0QWN0aXZlUGFnZSgpKXt2YXIgYj0iIiE9JCh0aGlzKS5hdHRyKCJocmVmIik\/JCh0aGlzKS5hdHRyKCJocmVmIik6IlBvcHVwIjtzZW5kR29vZ2xlQW5hbHl0aWNCYW5uZXJDbGlja2VkRXZlbnQoYSxiKX19KTskKGRvY3VtZW50KS5vbigiY2xpY2siLCIjbW9iaWxlU2xpZGVyICNtb2JpbGVTbGlkZXIyID4gYSIsZnVuY3Rpb24oYSl7aWYoYT1nZXRBY3RpdmVQYWdlKCkpe3ZhciBiPSIiIT0kKHRoaXMpLmF0dHIoImhyZWYiKT8kKHRoaXMpLmF0dHIoImhyZWYiKToiUG9wdXAiO3NlbmRHb29nbGVBbmFseXRpY0Jhbm5lckNsaWNrZWRFdmVudChhLGIpfX0pOwokKGRvY3VtZW50KS5vbigiY2xpY2siLCIjdG9wQmFubmVySW1hZ2UiLGZ1bmN0aW9uKGEpeyhhPWdldEFjdGl2ZVBhZ2UoKSkmJnNlbmRHb29nbGVBbmFseXRpY0Jhbm5lckNsaWNrZWRFdmVudChhLCJQb3B1cCIpfSk7dmFyIGhvbWVQYWdlQmFubmVyVmlldz1bXTskKGRvY3VtZW50KS5vbigiY2xpY2siLCIjaG9tZXBhZ2UtYmFubmVyICNzbGlkZXIgPiBhIixmdW5jdGlvbihhKXsoYT1nZXRBY3RpdmVQYWdlKCkpJiYiQWNjdWVpbCI9PWEmJihhPSQoIiNzbGlkZXIiKS5kYXRhKCJuaXZvOnZhcnMiKS5jdXJyZW50U2xpZGUrMSxnYVRyYWNrKCJjLl90cmFja0V2ZW50IiwiSG9tZS1wYWdlIHNsaWRlciIsIkRlc2t0b3AtY2xpY2siLGEsMSkpfSk7CiQoZG9jdW1lbnQpLm9uKCJuaXZvU2xpZGVyQ2hhbmdlZCBuaXZvU2xpZGVyTG9hZGVkIiwiI2hvbWVwYWdlLWJhbm5lciAjc2xpZGVyIixmdW5jdGlvbihhKXshKGE9Z2V0QWN0aXZlUGFnZSgpKXx8IkFjY3VlaWwiIT1hfHw1MDA8JChkb2N1bWVudCkuc2Nyb2xsVG9wKCl8fChhPSQoIiNzbGlkZXIiKS5kYXRhKCJuaXZvOnZhcnMiKS5jdXJyZW50U2xpZGUrMSwwPiQuaW5BcnJheShhLGhvbWVQYWdlQmFubmVyVmlldykmJihob21lUGFnZUJhbm5lclZpZXcucHVzaChhKSxnYVRyYWNrKCJjLl90cmFja0V2ZW50IiwiSG9tZS1wYWdlIHNsaWRlciIsIkRlc2t0b3AtdmlldyIsYSwxKSkpfSk7CiQoZG9jdW1lbnQpLm9uKCJjbGljayIsIiNtb2JpbGVTbGlkZXIgI21vYmlsZVNsaWRlcjIgPiBhIixmdW5jdGlvbihhKXsoYT1nZXRBY3RpdmVQYWdlKCkpJiYiQWNjdWVpbCI9PWEmJihhPSQoIiNtb2JpbGVTbGlkZXIyIikuZGF0YSgibml2bzp2YXJzIikuY3VycmVudFNsaWRlKzEsZ2FUcmFjaygiYy5fdHJhY2tFdmVudCIsIkhvbWUtcGFnZSBzbGlkZXIiLCJNb2JpbGUtY2xpY2siLGEsMSkpfSk7CiQoZG9jdW1lbnQpLm9uKCJuaXZvU2xpZGVyQ2hhbmdlZCBuaXZvU2xpZGVyTG9hZGVkIiwiI21vYmlsZVNsaWRlciAjbW9iaWxlU2xpZGVyMiIsZnVuY3Rpb24oYSl7IShhPWdldEFjdGl2ZVBhZ2UoKSl8fCJBY2N1ZWlsIiE9YXx8MzUwPCQoZG9jdW1lbnQpLnNjcm9sbFRvcCgpfHwoYT0kKCIjbW9iaWxlU2xpZGVyMiIpLmRhdGEoIm5pdm86dmFycyIpLmN1cnJlbnRTbGlkZSsxLDA+JC5pbkFycmF5KGEsaG9tZVBhZ2VCYW5uZXJWaWV3KSYmKGhvbWVQYWdlQmFubmVyVmlldy5wdXNoKGEpLGdhVHJhY2soImMuX3RyYWNrRXZlbnQiLCJIb21lLXBhZ2Ugc2xpZGVyIiwiTW9iaWxlLXZpZXciLGEsMSkpKX0pOwpmdW5jdGlvbiB0aHJlc2hvbGRQb3B1cCgpe3ZhciBhPWdldFVybFZhcnMoKTtpZihudWxsPT1Db29raWVzLmdldCgicG9wdXBTaG93biIpfHwidW5kZWZpbmVkIiE9dHlwZW9mIGEuZGVidWcpc2hvd1BvcHVwV2lkZ2V0KHtkb05vdFJlZGlyZWN0OiEwfSksQ29va2llcy5zZXQoInBvcHVwU2hvd24iLCIxIiw5MCwiLyIpfWZ1bmN0aW9uIF9sb2NhbFN0b3JhZ2VTZXQoYSxiLGMpe2M9ODY0RTUqKGN8fDEpO2I9e3ZhbHVlOmIsZXhwaXJ5OihuZXcgRGF0ZSkuZ2V0VGltZSgpK2N9O2xvY2FsU3RvcmFnZS5zZXRJdGVtKGEsSlNPTi5zdHJpbmdpZnkoYikpfWZ1bmN0aW9uIF9sb2NhbFN0b3JhZ2VHZXQoYSl7dmFyIGI9bG9jYWxTdG9yYWdlLmdldEl0ZW0oYSk7aWYoIWIpcmV0dXJuIG51bGw7Yj1KU09OLnBhcnNlKGIpO3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpPmIuZXhwaXJ5Pyhsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShhKSxudWxsKTpiLnZhbHVlfQpmdW5jdGlvbiBfbG9jYWxTdG9yYWdlUmVtb3ZlKGEpe2lmKCFsb2NhbFN0b3JhZ2UuZ2V0SXRlbShhKSlyZXR1cm4gbnVsbDtsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShhKTtyZXR1cm4gbnVsbH1mdW5jdGlvbiBnZW5lcmF0ZVVuaXF1ZUlkKCl7cmV0dXJuImlkLSIrRGF0ZS5ub3coKSsiLSIrTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMil9Y29uc3QgaW5pdFRvb2x0aXBzPSgpPT57dHJ5e2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLXBvcHBlcl0iKS5mb3JFYWNoKGE9PntUb29sdGlwKGEpLmNyZWF0ZSgpfSl9Y2F0Y2goYSl7Y29uc29sZS5sb2coIlRvb2x0aXAgb2JqZWN0IG5vdCBmb3VuZCIpfX07CmZ1bmN0aW9uIGhhbmRsZUNvb2tpZUNvbnRlbnQoKXtkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1jb29raWVoaWRlXSIpLmZvckVhY2goYT0+e2xldCBiPWEuZGF0YXNldC5jb29raWVoaWRlO2IubGVuZ3RoJiZDb29raWVzLmdldChiKSYmKGEuaGlkZGVuPSEwKX0pO2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLWNvb2tpZXNob3ddIikuZm9yRWFjaChhPT57bGV0IGI9YS5kYXRhc2V0LmNvb2tpZXNob3c7Yi5sZW5ndGgmJkNvb2tpZXMuZ2V0KGIpJiYoYS5oaWRkZW49ITEpfSl9dmFyIHNpdGVQYWdlPXt9Owpjb25zdCBkb2NSZWFkeT1mdW5jdGlvbigpe19sb2NhbFN0b3JhZ2VHZXQoImQyYy11aWQiKXx8X2xvY2FsU3RvcmFnZVNldCgiZDJjLXVpZCIsZ2VuZXJhdGVVbmlxdWVJZCgpLDIpO2lmKCJjb21wbGV0ZSI9PT1kb2N1bWVudC5yZWFkeVN0YXRlKXtsZXQgYTtjb25zb2xlLmxvZygiR1NQRUVELURPQ1JFQURZIENPTVBMRVRFOiIrKERhdGUubm93KCktKG51bGwhPShhPXdpbmRvdy5nVGVzdFNwZWVkQ29ubik\/YTowKSkvMUUzKTtkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuc2tlbGV0b24tdHh0IikuZm9yRWFjaChiPT57Yi5jbGFzc0xpc3QudG9nZ2xlKCJza2VsZXRvbi10eHQiLCExKX0pO2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5za2VsZXRvbi1zbGlkZXIiKS5mb3JFYWNoKGI9PntiLmNsYXNzTGlzdC50b2dnbGUoInNrZWxldG9uLXNsaWRlciIsITEpfSk7d2luZG93LmdTa2VsZXRvbklzUmVtb3ZlZD0hMDtzaXRlUGFnZT17bmFtZToidW5kZWZpbmVkIiE9dHlwZW9mIHBhZ2U\/CnBhZ2U6IiIsaXNNb2JpbGU6IjEiPT0oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlzbW9iaWxlIil8fCIiKS52YWx1ZSxsYW5nOihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWN0aXZlc2l0ZWxhbmd1YWdlIil8fCIiKS52YWx1ZXx8IkZSRU5DSCJ9O2hhbmRsZUNvb2tpZUNvbnRlbnQoKTtpbml0VG9vbHRpcHMoKTtkb2NSZWFkeUFyci5mb3JFYWNoKGI9PmIoKSk7ZG9jUmVhZHlBcnI9W119ZWxzZXtsZXQgYTtpZigiaW50ZXJhY3RpdmUiPT09ZG9jdW1lbnQucmVhZHlTdGF0ZSYmd2luZG93LmdSZXNvdXJjZUxvYWRlckFuZEpxdWVyeUlzUmVhZHkmJiExPT09KG51bGwhPShhPXdpbmRvdy5nU2tlbGV0b25Jc1JlbW92ZWQpP2E6ITEpKXtsZXQgYjtjb25zb2xlLmxvZygiR1NQRUVELURPQ1JFQURZIElOVEVSQUNUSVZFOiIrKERhdGUubm93KCktKG51bGwhPShiPXdpbmRvdy5nVGVzdFNwZWVkQ29ubik\/YjowKSkvMUUzKTtkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuc2tlbGV0b24tdHh0IikuZm9yRWFjaChjPT4Ke2MuY2xhc3NMaXN0LnRvZ2dsZSgic2tlbGV0b24tdHh0IiwhMSl9KTtkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuc2tlbGV0b24tc2xpZGVyIikuZm9yRWFjaChjPT57Yy5jbGFzc0xpc3QudG9nZ2xlKCJza2VsZXRvbi1zbGlkZXIiLCExKX0pO3dpbmRvdy5nU2tlbGV0b25Jc1JlbW92ZWQ9ITB9c2V0VGltZW91dChkb2NSZWFkeSw1MCl9fTtkb2NSZWFkeSgpOwokKGZ1bmN0aW9uKCl7dmFyIGE9ITA7JCh3aW5kb3cpLm9uKCJzY3JvbGwiLGZ1bmN0aW9uKCl7dmFyIGQ9JChkb2N1bWVudCkuaGVpZ2h0KCksZT0kKHdpbmRvdykuaGVpZ2h0KCkrJCh3aW5kb3cpLnNjcm9sbFRvcCgpOy4wNT4oZC1lKS9kJiZhJiYoYT0hMSwidW5kZWZpbmVkIiE9PXR5cGVvZiBnYVRyYWNrJiZnYVRyYWNrKCJfdHJhY2tFdmVudCIsIkJvdHRvbSBvZiBwYWdlIHJlYWNoZWQiLCQoJ2lucHV0W25hbWU9InRhcmdldFBhZ2UiXScpLnZhbCgpLHdpbmRvdy5sb2NhdGlvbi5ocmVmLDEpKX0pOyQoIi5lbWJlZC1jb250YWluZXIteW91dHViZSIpLnBhcmVudCgiLndyYXBwZXIiKS5yZW1vdmVDbGFzcygid3JhcHBlciIpO2lmKCQoIiNpc0JyYW5kUGFnZSIpLmxlbmd0aCl7dmFyIGI9Z2V0VXJsVmFycygpO2lmKGIua3cmJi0xIT1iLmt3LnRvTG93ZXJDYXNlKCkuaW5kZXhPZigiY2FuYWRhIikpe3ZhciBjPSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKSYmIkVOR0xJU0giPT0KJCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpPyJlbiI6ImZyIjtiPSJlbiI9PWM\/IkhlcmUgd2Ugb2ZmZXIgdGhlIGJlc3QgcHJpY2VzIjoiSWNpIG9uIG9mZnJlIGxlcyBtZWlsbGV1cnMgcHJpeCI7Yz0iZW4iPT1jPyJvbiAiKyQoIiNpc0JyYW5kUGFnZSIpLnZhbCgpKyIncyBpbiBDYW5hZGEiOiQoIiNpc0JyYW5kUGFnZSIpLnZhbCgpKyIgYXUgQ2FuYWRhIjskKCIjZGVmYXVsdFRvcEJhbm5lclRpdGxlIikudGV4dChiKTskKCIjZGVmYXVsdFRvcEJhbm5lclRleHQiKS50ZXh0KGMpfX0kKCIjZmluYW5jZU11bHRpc3RlcFBvcHVwQ29udGFpbmVyIikubGVuZ3RoJiYoYj1nZXRVcmxWYXJzKCksYi5maW5hbmNlcG9wJiYieWVzIj09Yi5maW5hbmNlcG9wJiZzZXRUaW1lb3V0KCgpPT57JCgiI2ZpbmFuY2VNdWx0aXN0ZXBQb3B1cENvbnRhaW5lciIpLnBvcHVwaXplKCkub3BlbigpfSwxRTMpKTswPCQoIi50cmFkZXNpaS1yb290IikudGV4dCgpLmxlbmd0aD8kKCIudHJhZGVzaWktcm9vdCIpLmNzcygiei1pbmRleCIsCjFFMyk6c2V0VGltZW91dChmdW5jdGlvbigpeyQoIi50cmFkZXNpaS1yb290IikuY3NzKCJ6LWluZGV4IiwxRTMpfSwxRTMpfSk7ZnVuY3Rpb24gYWRkTWF4TGVuZ3RoKCl7JCgiOmlucHV0IikuZWFjaChmdW5jdGlvbigpe3ZhciBhPSQodGhpcykuYXR0cigidHlwZSIpLGI9JCh0aGlzKS5hdHRyKCJtYXhsZW5ndGgiKTtpZih2b2lkIDA9PWJ8fG51bGw9PWJ8fCIiPT1iKSJ0ZXh0Ij09YXx8InRlbCI9PWF8fCJlbWFpbCI9PWF8fCJ1cmwiPT1hPyQodGhpcykucHJvcCgibWF4bGVuZ3RoIiwyNTYpOiJudW1iZXIiPT1hJiYoJCh0aGlzKS5wcm9wKCJvbmlucHV0IiwidGhpcy52YWx1ZT10aGlzLnZhbHVlLnNsaWNlKDAsdGhpcy5tYXhsZW5ndGgpIiksJCh0aGlzKS5wcm9wKCJtYXhsZW5ndGgiLDI1NikpfSl9ZG9jUmVhZHlBcnIucHVzaCgoKT0+eyQoIi5yZXZlYWwtbW9kYWwiKS5vbigicG9wdXBpemVyLm9uT3BlbiIsZnVuY3Rpb24oKXthZGRNYXhMZW5ndGgoKX0pO2FkZE1heExlbmd0aCgpfSk7CihmdW5jdGlvbihhKXtmdW5jdGlvbiBiKGQsZSl7dGhpcy5lbD1kO3RoaXMuJGVsPWEoZCk7aWYodm9pZCAwPT09ZXx8Im9iamVjdCI9PT10eXBlb2YgZSl0aGlzLnNldHRpbmdzPWEuZXh0ZW5kKGMsZSk7dGhpcy5pbml0KCl9dmFyIGM9e2xhdDoiIixsb25nOiIiLHBvc3RhbDoiIixyYXRpbzouNjg4NSx3aWR0aDoiYXV0byJ9O2IucHJvdG90eXBlPXtpbml0OmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy4kZWwuaXMoIi5sYXp5bG9hZCIpPyJkYXRhLWltZ3NyYyI6InNyYyI7dGhpcy4kZWwuYXR0cihkLHRoaXMuZ2V0VXJsKCkpfSxpc1Zpc2libGU6ZnVuY3Rpb24oKXt2YXIgZD10aGlzLiRlbC5hdHRyKCJ3aWR0aCIpO3JldHVybiEoIjBweCI9PT10aGlzLiRlbC5hdHRyKCJoZWlnaHQiKXx8IjBweCI9PT1kKX0sZ2V0V2lkdGg6ZnVuY3Rpb24oKXt0aGlzLiRlbC5hdHRyKCJ3aWR0aCIpO3ZhciBkPTA7ImF1dG8iPT09dGhpcy5zZXR0aW5ncy53aWR0aHx8ImF1dG8iPT09dGhpcy4kZWwuZGF0YSgid2lkdGgiKT8KZD10aGlzLiRlbC5wYXJlbnQoKS5jc3MoIndpZHRoIik6aXNOYU4ocGFyc2VJbnQodGhpcy5zZXR0aW5ncy53aWR0aCkpP3ZvaWQgMCE9PXRoaXMuJGVsLmF0dHIoIndpZHRoIikmJihkPXRoaXMuJGVsLmF0dHIoIndpZHRoIikpOmQ9dGhpcy5zZXR0aW5ncy53aWR0aDt0aGlzLiRlbC5hdHRyKCJ3aWR0aCIsZCk7cmV0dXJuIHBhcnNlSW50KGQucmVwbGFjZSgicHgiLCIiKSl9LGdldEhlaWdodDpmdW5jdGlvbigpe3ZhciBkPSJhdXRvIj09PXRoaXMuc2V0dGluZ3Mud2lkdGh8fCJhdXRvIj09PXRoaXMuJGVsLmRhdGEoIndpZHRoIik\/TWF0aC5yb3VuZCh0aGlzLmdldFdpZHRoKCkqdGhpcy5zZXR0aW5ncy5yYXRpbykrInB4Ijp0aGlzLiRlbC5wYXJlbnQoKS5jc3MoImhlaWdodCIpO3RoaXMuJGVsLmF0dHIoImhlaWdodCIsZCk7cmV0dXJuIHBhcnNlSW50KGQucmVwbGFjZSgicHgiLCIiKSl9LGdldFVybDpmdW5jdGlvbigpe3ZhciBkPWdldERhdGFBdHRyaWJ1dGVzKHRoaXMuZWwpLAplPXRoaXMuZ2V0V2lkdGgoKSxrPXRoaXMuZ2V0SGVpZ2h0KCksaD1kLmxhdCsiLCIrZC5sb25nLG49ZC5oYXNPd25Qcm9wZXJ0eSgibWFya2VySWNvbiIpPyJpY29uOiIrZC5tYXJrZXJJY29uKyJ8IjoiIjtkPWEuZXh0ZW5kKHtzaXplOmUrIngiK2ssY2VudGVyOmgsem9vbToiMTIiLG1hcmtlcnM6bitofSxkKTtyZXR1cm4iaHR0cHM6Ly9tYXBzLmdvb2dsZWFwaXMuY29tL21hcHMvYXBpL3N0YXRpY21hcD8iK2EucGFyYW0oZCl9LGRlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLiRlbC5yZW1vdmVEYXRhKCl9fTthLmZuLmdvb2dsZVN0YXRpY01hcD1mdW5jdGlvbihkKXt2YXIgZT1hcmd1bWVudHM7aWYoMT50aGlzLmxlbmd0aClyZXR1cm4gdGhpczt0aGlzLmVhY2goZnVuY3Rpb24oKXtpZighYS5kYXRhKHRoaXMsInBsdWdpbl9zdGF0aWNNYXAiKSlyZXR1cm4gYS5kYXRhKHRoaXMsInBsdWdpbl9zdGF0aWNNYXAiLG5ldyBiKHRoaXMsZCkpLHRoaXN9KTtpZigic3RyaW5nIj09PXR5cGVvZiBkJiYKIl8iIT09ZFswXSYmImluaXQiIT09ZCl7MTx0aGlzLmxlbmd0aCYmY29uc29sZS5sb2coImdvb2dsZVN0YXRpY01hcCB3YXJuaW5nIGNvZGUgMSIpO3ZhciBrPWEuZGF0YSh0aGlzLmZpcnN0KClbMF0sInBsdWdpbl9zdGF0aWNNYXAiKTtyZXR1cm4ga1tkXS5hcHBseShrLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUsMSkpfXJldHVybiB0aGlzfX0pKGpRdWVyeSk7ZnVuY3Rpb24gcGFyc2VRdWVyeShhKXtpZigxPmEubGVuZ3RoKXJldHVybnt9O2Zvcih2YXIgYj17fSxjPWEuc3BsaXQoIiYiKSxkPTA7ZDxjLmxlbmd0aDtkKyspYT1leHBsb2RlKGNbZF0sIj0iLDEpLGJbYVswXV09YVsxXTtyZXR1cm4gYn1mdW5jdGlvbiBkZWNvZGVTdHJpbmcoYSxiKXtpZigiIj09Ynx8InVuZGVmaW5lZCI9PWIpYj0xO2ZvcihpPTA7aTxiO2krKylhPWRlY29kZVVSSUNvbXBvbmVudChhKTtyZXR1cm4gYX0KZnVuY3Rpb24gZXhwbG9kZShhLGIsYyl7YT1hLnNwbGl0KGIpO2lmKGEubGVuZ3RoPD1jKXJldHVybiBhO2M9YS5zcGxpY2UoMCxjKTtjLnB1c2goYS5qb2luKGIpKTtyZXR1cm4gY31mdW5jdGlvbiBnZXRVcmxWYXJzKCl7dmFyIGE9d2luZG93LmxvY2F0aW9uLnNlYXJjaC5zdWJzdHJpbmcoMSk7cmV0dXJuIHBhcnNlUXVlcnkoYSl9ZnVuY3Rpb24gZ2V0Q29va2llKGEpe3JldHVybiBDb29raWVzLmdldChhKX1mdW5jdGlvbiBzZXRDb29raWUoYSxiLGMpe0Nvb2tpZXMuc2V0KGEsYixjLCIvIil9ZnVuY3Rpb24gZ2V0Q29va2llRDJjKGEpe3JldHVybiBDb29raWVzLmdldChhKX1mdW5jdGlvbiBzZXRDb29raWVEMmMoYSxiLGMpe0Nvb2tpZXMuc2V0KGEsYixjLCIvIil9ZnVuY3Rpb24gaXNTU0woKXtyZXR1cm4iaHR0cHM6Ij09PXdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbH1mdW5jdGlvbiBzZXRTZXNzaW9uQ29va2llKGEsYil7Q29va2llcy5zZXQoYSxiLDAsIi8iKX0KZnVuY3Rpb24gaW5pdExDSShhLGIpe2lmKDIwPGIpcmV0dXJuIGI7Yj1iP2I6MDtpZigidW5kZWZpbmVkIj09dHlwZW9mIExDX0FQSXx8InVuZGVmaW5lZCI9PXR5cGVvZiBMQ19JbnZpdGUpc2V0VGltZW91dChmdW5jdGlvbigpe2luaXRMQ0koYSwrK2IpfSw1MDApO2Vsc2UgaWYoInVuZGVmaW5lZCIhPXR5cGVvZiBMQ19BUEkmJiJ1bmRlZmluZWQiIT10eXBlb2YgTENfSW52aXRlJiZhKXJldHVybiBMQ19BUEkuc2V0X2N1c3RvbV92YXJpYWJsZXMoYSl9ZnVuY3Rpb24gZ2V0UmVmZXJyZXJWYXJGdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oKXsiIj09YSYmKGE9ZG9jdW1lbnQucmVmZXJyZXIpO3ZhciBiPWEuaW5kZXhPZigiPyIpKzE7cmV0dXJuIDA8Yj8oYj1hLnNsaWNlKGIpLHBhcnNlUXVlcnkoYikpOnt9fX0KKGZ1bmN0aW9uKGEpe3ZhciBiPXtjYWxsYmFja3M6W10saGFzU2NyaXB0OmZ1bmN0aW9uKCl7dmFyIGU9YSgnaGVhZCBzY3JpcHRbc3JjKj0ibWFwcy5qcy5waHAiXScpO3JldHVybiAwPT1lLmxlbmd0aD8hMTovbWFwc1wuanMvLnRlc3QoZS5hdHRyKCJzcmMiKSl9LGxvYWQ6ZnVuY3Rpb24oZSl7aWYoYi5oYXNTY3JpcHQoKSkidW5kZWZpbmVkIj09PXR5cGVvZiBnb29nbGU\/Yi5jYWxsYmFja3MucHVzaChlKTplKCk7ZWxzZXtiLmNhbGxiYWNrcy5wdXNoKGUpO3RyeXt2YXIgaz0iRU5HTElTSCI9PWEoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKT8iZW4iOiJmciI7KGZ1bmN0aW9uKGgsbix4LHYsZil7aFtmXSYmaFtmXS5tYXBzfHwoaD1uLmNyZWF0ZUVsZW1lbnQoeCksbj1uLmdldEVsZW1lbnRzQnlUYWdOYW1lKHgpWzBdLGguc3JjPXYsaC5hc3luYz0hMSxkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoImdvb2dsZU1hcHNMb2FkZWQiLGc9Pntmb3IoZz0wO2c8Yi5jYWxsYmFja3MubGVuZ3RoO2crKyliLmNhbGxiYWNrc1tnXS5jYWxsKCl9KSwKbi5wYXJlbnROb2RlLmluc2VydEJlZm9yZShoLG4pKX0pKHdpbmRvdyxkb2N1bWVudCwic2NyaXB0IiwiL2pzL21hcHMuanMucGhwP2xhbmc9IitrLCJnb29nbGUiKX1jYXRjaChoKXtjb25zb2xlLmxvZyhoKX19fX0sYz17YXV0b0NvbXBsZXRlOntjb21wb25lbnRSZXN0cmljdGlvbnM6e2NvdW50cnk6ImNhIn19LHJhZGl1czoxRTV9LGQ9ZnVuY3Rpb24oZSxrKXt2YXIgaD10aGlzO2guZWw9ZTtoLiRlbD1hKGUpO2guc2V0dGluZ3M9YS5leHRlbmQoYyxrKTtoLmFkZHJlc3M9e2NpdHk6IiIsc3RyZWV0X251bWJlcjoiIixzdHJlZXQ6IiIsc3VibG9jYWxpdHk6IiIscHJvdmluY2U6IiIsY291bnRyeToiIixwb3N0YWw6IiJ9O2guJGVsLm9uZSgiZm9jdXMiLGZ1bmN0aW9uKCl7aC5pbml0KCl9KX07ZC5wcm90b3R5cGU9e19jaGVja0Zvckdvb2dsZU1hcHM6ZnVuY3Rpb24oZSl7InVuZGVmaW5lZCI9PT10eXBlb2YgZ29vZ2xlfHwidW5kZWZpbmVkIj09PXR5cGVvZiBnb29nbGUubWFwcz8KYi5sb2FkKGUpOiJmdW5jdGlvbiI9PT10eXBlb2YgZSYmZS5jYWxsKCl9LGdldEFkZHJlc3M6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hZGRyZXNzfSxfc2V0QWRkcmVzczpmdW5jdGlvbihlKXt2YXIgaz10aGlzO2EuZWFjaChlLGZ1bmN0aW9uKGgsbil7c3dpdGNoKCEwKXtjYXNlIC0xPGEuaW5BcnJheSgic3RyZWV0X251bWJlciIsbi50eXBlcyk6ay5hZGRyZXNzLnN0cmVldF9udW1iZXI9bjticmVhaztjYXNlIC0xPGEuaW5BcnJheSgicm91dGUiLG4udHlwZXMpOmsuYWRkcmVzcy5zdHJlZXQ9bjticmVhaztjYXNlIC0xPGEuaW5BcnJheSgic3VibG9jYWxpdHkiLG4udHlwZXMpOmsuYWRkcmVzcy5zdWJsb2NhbGl0eT1uO2JyZWFrO2Nhc2UgLTE8YS5pbkFycmF5KCJsb2NhbGl0eSIsbi50eXBlcyk6Y2FzZSAtMTxhLmluQXJyYXkoImFkbWluaXN0cmF0aXZlX2FyZWFfbGV2ZWxfMyIsbi50eXBlcyk6IiI9PWsuYWRkcmVzcy5jaXR5JiYoay5hZGRyZXNzLmNpdHk9bik7YnJlYWs7CmNhc2UgLTE8YS5pbkFycmF5KCJhZG1pbmlzdHJhdGl2ZV9hcmVhX2xldmVsXzEiLG4udHlwZXMpOmsuYWRkcmVzcy5wcm92aW5jZT1uO2JyZWFrO2Nhc2UgLTE8YS5pbkFycmF5KCJjb3VudHJ5IixuLnR5cGVzKTprLmFkZHJlc3MuY291bnRyeT1uO2JyZWFrO2Nhc2UgLTE8YS5pbkFycmF5KCJwb3N0YWxfY29kZSIsbi50eXBlcyk6ay5hZGRyZXNzLnBvc3RhbD1ufX0pfSxfc2V0U2VhcmNoQm91bmRzOmZ1bmN0aW9uKGUsayxoKXtrPW5ldyBnb29nbGUubWFwcy5MYXRMbmcoayxoKTtrPW5ldyBnb29nbGUubWFwcy5DaXJjbGUoe2NlbnRlcjprLHJhZGl1czp0aGlzLnNldHRpbmdzLnJhZGl1c30pO2Uuc2V0Qm91bmRzKGsuZ2V0Qm91bmRzKCkpfSxpbml0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztlLl9jaGVja0Zvckdvb2dsZU1hcHMoZnVuY3Rpb24oKXt2YXIgaz1uZXcgZ29vZ2xlLm1hcHMuR2VvY29kZXIsaD1uZXcgZ29vZ2xlLm1hcHMucGxhY2VzLkF1dG9jb21wbGV0ZShlLmVsLAplLnNldHRpbmdzLmF1dG9Db21wbGV0ZSk7ZS5zZXR0aW5ncy5oYXNPd25Qcm9wZXJ0eSgibGF0IikmJmUuc2V0dGluZ3MuaGFzT3duUHJvcGVydHkoImxvbmciKT8iIiE9PWUuc2V0dGluZ3MubGF0JiYiIiE9PWUuc2V0dGluZ3MubG9uZyYmZS5fc2V0U2VhcmNoQm91bmRzKGgsZS5zZXR0aW5ncy5sYXQsZS5zZXR0aW5ncy5sb25nKTplLnNldHRpbmdzLmhhc093blByb3BlcnR5KCJhZGRyZXNzIik\/ZS5zZXR0aW5ncy5hZGRyZXNzJiZrLmdlb2NvZGUoe2FkZHJlc3M6ZS5zZXR0aW5ncy5hZGRyZXNzfSxmdW5jdGlvbihuLHgpe2UuX3NldFNlYXJjaEJvdW5kcyhoLG5bMF0uZ2VvbWV0cnkubG9jYXRpb24ubGF0KCksblswXS5nZW9tZXRyeS5sb2NhdGlvbi5sbmcoKSl9KToidW5kZWZpbmVkIiE9PXR5cGVvZiBmb290ZXJNYXBBZGRyZXNzJiYwPGZvb3Rlck1hcEFkZHJlc3MubGVuZ3RoJiZrLmdlb2NvZGUoe2FkZHJlc3M6Zm9vdGVyTWFwQWRkcmVzc1swXS5hZGRyZXNzfSxmdW5jdGlvbihuLAp4KXtlLl9zZXRTZWFyY2hCb3VuZHMoaCxuWzBdLmdlb21ldHJ5LmxvY2F0aW9uLmxhdCgpLG5bMF0uZ2VvbWV0cnkubG9jYXRpb24ubG5nKCkpfSk7Z29vZ2xlLm1hcHMuZXZlbnQuYWRkTGlzdGVuZXIoaCwicGxhY2VfY2hhbmdlZCIsZnVuY3Rpb24oKXt2YXIgbj1oLmdldFBsYWNlKCk7ZS5fc2V0QWRkcmVzcyhuLmFkZHJlc3NfY29tcG9uZW50cyk7ZS4kZWwudmFsKG4uZm9ybWF0dGVkX2FkZHJlc3MpO249bmV3IEV2ZW50KCJpbnB1dCIpO2UuZWwuZGlzcGF0Y2hFdmVudChuKTtlLiRlbC50cmlnZ2VyKCJmb2N1cyIpfSl9KX19O2EuZm4uZ29vZ2xlUGxhY2VzPWZ1bmN0aW9uKGUpe3ZhciBrPWFyZ3VtZW50cztpZih2b2lkIDA9PT1lfHwib2JqZWN0Ij09PXR5cGVvZiBlKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXthLmRhdGEodGhpcywicGx1Z2luX3BsYWNlcyIpfHxhLmRhdGEodGhpcywicGx1Z2luX3BsYWNlcyIsbmV3IGQodGhpcyxlKSl9KTtpZigic3RyaW5nIj09PXR5cGVvZiBlJiYKIl8iIT09ZVswXSYmImluaXQiIT09ZSl7dmFyIGg9YS5kYXRhKHRoaXNbMF0sInBsdWdpbl9wbGFjZXMiKTtyZXR1cm4gaFtlXS5hcHBseShoLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGssMSkpfX19KShqUXVlcnkpOwpmdW5jdGlvbiBzaG93QmFubmVyUG9wdXAoYSl7dHJ5eyQoYSkuaGFzQ2xhc3MoInRyYWRlaW5MaW5rIikmJigwPGEuZ2V0QXR0cmlidXRlKCJ0YXJnZXRVUkkiKS5pbmRleE9mKCJ0cmFkZWludmFsdWVzIil8fDA8YS5nZXRBdHRyaWJ1dGUoInRhcmdldFVSSSIpLmluZGV4T2YoImluc3RhbnRvZmZlci5hY2N1LXRyYWRlLmNvbSIpKT9zaG93VHJhZGVJblBvcHVwKGEuZ2V0QXR0cmlidXRlKCJ0YXJnZXRVUkkiKSk6MDwkKCIjYmFubmVyUG9wdXBDb250YWluZXIiKS5sZW5ndGgmJiQoIiNiYW5uZXJQb3B1cENvbnRhaW5lciIpLnBvcHVwaXplKCkuc2V0VHJpZ2dlcigiY2xpY2siKS5vcGVuKCl9Y2F0Y2goYil7Y29uc29sZSYmY29uc29sZS5sb2cmJmNvbnNvbGUubG9nKCJVbmFibGUgdG8gZGlzcGxheSB0cmFkZWludmFsdWVzIGlmcmFtZS4gRXJyb3I6ICIrYi5tZXNzYWdlKX19CiQoZnVuY3Rpb24oKXswPCQoJ2lucHV0W2RhdGEtZ29vZ2xlLXBsYWNlcz0idHJ1ZSJdJykubGVuZ3RoJiYkKCdpbnB1dFtkYXRhLWdvb2dsZS1wbGFjZXM9InRydWUiXScpLmdvb2dsZVBsYWNlcygpOyJ1bmRlZmluZWQiIT09dHlwZW9mICQuZm4uZGFya1Rvb2x0aXAmJigkKCIjc29jaWFsX21lZGlhX2ljb25zX2RpdiBhLCAuZ1JhdGluZy1pY29uIikuZGFya1Rvb2x0aXAoe2dyYXZpdHk6Im5vcnRoIixvcGFjaXR5OjF9KSwkKCIuc29jaWFsLW1lZGlhLWljb25zIFtkYXRhLXRvb2x0aXBdIikuZGFya1Rvb2x0aXAoe2dyYXZpdHk6InNvdXRoIixvcGFjaXR5OjF9KSwkKCIjbWl0c3ViaXNoaUNlcnRpZmllZEZvb3RlciBhLnNvY2lhbC1tZWRpYV9faWNvbiwgI2h5dW5kYWlDZXJ0aWZpZWRGb290ZXIgYS5zb2NpYWwtbWVkaWFfX2ljb24iKS5kYXJrVG9vbHRpcCh7Z3Jhdml0eToic291dGgiLG9wYWNpdHk6MX0pKTt2YXIgYT0kKCIuZ3JheWJveC51c2VkRGV0YWlsc1Bob25lLCAuZ3JheWJveC5uZXdEZXRhaWxzUGhvbmUiKTsKMD09PWEuY2hpbGRyZW4oKS5sZW5ndGgmJjA9PT1hLnRleHQoKS50cmltKCkubGVuZ3RoJiZhLmhpZGUoKX0pOyQoIiNmaW5hbmNlQWx0RGlzcGxheSAuc3RlcDEgYmlnLnRleHQgYmlnIikuYXR0cigiZGF0YS1kZXBhcnRtZW50IiwiRmluYW5jZSIpOyQoIi5jcmVkaXRfbV9jYWxsdXNfd3JhcHBlciBhIikuYXR0cigiZGF0YS1kZXBhcnRtZW50IiwiRmluYW5jZSIpOwokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpeyQoIiNkaXZDZXJ0aWZpY2F0aW9uLWNhcmd1cnVzLXdyYXBwZXIiKS5sZW5ndGgmJihlbGVtZW50VG9PYnNlcnZlPXdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGl2Q2VydGlmaWNhdGlvbi1jYXJndXJ1cy13cmFwcGVyIikuY2hpbGRyZW5bMF0sb2JzZXJ2ZXI9bmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oYSxiKXtiPSQoIiNkaXZDZXJ0aWZpY2F0aW9uLWNhcmd1cnVzLXdyYXBwZXIiKTtsZXQgYz0kKCJzcGFuW2RhdGEtY2ctZXJyb3JdIixiKTtjb25zb2xlLmxvZygiRDJDRyIsYixjLGEpO2MubGVuZ3RoJiZiLnJlbW92ZSgpfSksb2JzZXJ2ZXIub2JzZXJ2ZShlbGVtZW50VG9PYnNlcnZlLHtjaGFyYWN0ZXJEYXRhOiExLGNoaWxkTGlzdDohMCxhdHRyaWJ1dGVzOiExfSkpfSk7JChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXstMTx3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbmV3LyIpfHwkKCIjbmV3LXZkcC1zcGVjLWJyb2NodXJlIikuaGlkZSgpfSk7CiQoZnVuY3Rpb24oKXskKCIjRm9vdGVyX0ZJTkFOQ0UgPiBhLCBhI0ZpbmFuY2VBY3Rpb25Cb3gsIGEjRmluYW5jZUFjdGlvbkJveExpbmsiKS5vbigibW91c2VlbnRlciBtb3VzZWxlYXZlIixmdW5jdGlvbigpe3ZhciBhPSQodGhpcyksYj0kKCJodG1sIikuYXR0cigibGFuZyIpO2lmKDA8JCgiI0RFQUxFUlBBQ09ERSIpLmxlbmd0aCl7dmFyIGM9JCgiI0RFQUxFUlBBQ09ERSIpLnZhbCgpLGQ9JCgiI0RFQUxFUkJSQU5EX1BSSU1BUlkiKS52YWwoKS50b0xvd2VyQ2FzZSgpO2lmKCJmb3JkX2xpbmNvbG5fZXh0ZXJuYWwiPT0kKCIjRklOQU5DRUZPUk1UWVBFIikudmFsKCkmJigiZm9yZCI9PWR8fCJsaW5jb2xuIj09ZCkmJiIiIT1jKXt2YXIgZT0oImVuIj09Yj8iaHR0cHM6Ly93d3cuZm9yZC5jYS9maW5hbmNlL2FwcGx5LzE\/U291cmNlT2ZEYXRhPUNBRENGJmRlYWxlcklkPSI6Imh0dHBzOi8vZnIuZm9yZC5jYS9maW5hbmNlL2FwcGx5LzE\/U291cmNlT2ZEYXRhPUNBRENGJmRlYWxlcklkPSIpKwpjO2I9KCJlbiI9PWI\/Imh0dHBzOi8vd3d3LmxpbmNvbG5jYW5hZGEuY29tL2ZpbmFuY2UvYXBwbHkvMT9Tb3VyY2VPZkRhdGE9Q0FEQ0wmZGVhbGVySWQ9IjoiaHR0cHM6Ly9mci5saW5jb2xuY2FuYWRhLmNvbS9maW5hbmNlL2FwcGx5LzE\/U291cmNlT2ZEYXRhPUNBRENMJmRlYWxlcklkPSIpK2M7YS5vZmYoImNsaWNrIik7YS5hdHRyKCJocmVmIiwiZm9yZCI9PWQ\/ZTpiKTthLmF0dHIoInRhcmdldCIsIl9ibGFuayIpfX19KX0pOwokKHdpbmRvdykub24oImxvYWQiLGZ1bmN0aW9uKCl7dHJ5e2lmKGdldFBhcmFtZXRlckJ5TmFtZSgicHJvbW8iKSl7dmFyIGE9MDxhY3RpdmF0ZWRQb3B1cERpdklELmxlbmd0aD9hY3RpdmF0ZWRQb3B1cERpdklEOiExO2lmKGEmJjA8YS5sZW5ndGgpe3ZhciBiPSQoIiMiK2EpLnBvcHVwaXplKHtwcmlvcml0eToxMDAsZW5kUG9wdXBRdWV1ZTohMH0pO3BvcHVwU3VwZXJ2aXNvci5yZWdpc3RlcihiKX19Im9iamVjdCI9PXR5cGVvZiBwb3B1cFN1cGVydmlzb3ImJnNldFRpbWVvdXQocG9wdXBTdXBlcnZpc29yLnNob3csNTAwKX1jYXRjaChjKXtjb25zb2xlLmxvZyhjKX19KTsKJChmdW5jdGlvbigpeyQoIi5uYXYgYSIpLm9uKCJjbGljayIsZnVuY3Rpb24oYSl7InVuZGVmaW5lZCIhPXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZyYmInVuZGVmaW5lZCIhPXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50JiYoKGE9JCh0aGlzKS5hdHRyKCJocmVmIikpJiYhUmVnRXhwKCJqYXZhc2NyaXB0OiIsImdpIikudGVzdChhKSYmYWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudChhLCJNRU5VX2NsaWNrZWRfVVJMIiksKGE9Ii8iPT1hPyJIb21lIjokKHRoaXMpLnRleHQoKSkmJmFjdGl2ZVVzZXJQcm9maWxlTW5nLmxvZ1BhZ2VWaWV3RXZlbnQoYSwiTUVOVV9jbGlja2VkX0lORk8iKSl9KX0pOwp2YXIgRDJDVXRpbHM9e0xhbmc6e2lzRU46ZnVuY3Rpb24oKXtyZXR1cm4hKCJmdW5jdGlvbiI9PT10eXBlb2YgJCYmJCgiQk9EWSIpLmhhc0NsYXNzKCJGUkVOQ0giKSl9LGdldFNob3J0TGFuZzpmdW5jdGlvbihhKXtyZXR1cm4gRDJDVXRpbHMuTGFuZy5pc0VOKCk\/YT8iRU4iOiJlbiI6YT8iRlIiOiJmciJ9fSxGb3JtYXQ6e3RvTnVtYmVyOmZ1bmN0aW9uKGEpe2E9YS50b1N0cmluZygpLnNwbGl0KCIuIik7Zm9yKHZhciBiPS8oXGQrKShcZHszfSkvO2IudGVzdChhWzBdKTspYVswXT1hWzBdLnJlcGxhY2UoYiwiJDEsJDIiKTtyZXR1cm4gYVswXX0sdG9QcmljZTpmdW5jdGlvbihhLGIpe3JldHVybiBiPyhiPUQyQ1V0aWxzLkxhbmcuaXNFTigpPyIiOiIgJCIsYCR7RDJDVXRpbHMuTGFuZy5pc0VOKCk\/IiQiOiIifSR7RDJDVXRpbHMuRm9ybWF0LnRvTnVtYmVyKGEpfSR7Yn1gKTpgPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+JHtEMkNVdGlscy5Gb3JtYXQudG9OdW1iZXIoYSl9PC9zcGFuPmB9fSwKTnVtYmVyOntyb3VuZERvd246ZnVuY3Rpb24oYSl7dmFyIGI9Mj09PWFyZ3VtZW50cy5sZW5ndGg\/cGFyc2VJbnQoYXJndW1lbnRzWzFdKToxO3JldHVybiBNYXRoLmZsb29yKGEvYikqYn0scm91bmRVcDpmdW5jdGlvbihhKXt2YXIgYj0yPT09YXJndW1lbnRzLmxlbmd0aD9wYXJzZUludChhcmd1bWVudHNbMV0pOjE7cmV0dXJuIE1hdGguY2VpbChhL2IpKmJ9fSxBcnJheXM6e2ZpbmQ6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEubGVuZ3RoO2lmKDA8ZClmb3IodmFyIGU9MDtlPGQ7ZSsrKWlmKGFbZV1bYl09PWMpcmV0dXJuIGFbZV07cmV0dXJuLTF9fSxTdHJpbmc6e2NhcGl0YWxpemVGaXJzdExldHRlcjpmdW5jdGlvbihhKXtyZXR1cm4gU3RyaW5nKGEpLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK1N0cmluZyhhKS5zbGljZSgxKX19LE1vYmlsZTp7aXNNb2JpbGU6ZnVuY3Rpb24oKXtyZXR1cm4gMDwkKCIjaXNNb2JpbGUiKS5sZW5ndGh9fX07CmZ1bmN0aW9uIHNldHVwRmluYW5jaW5nTGluayhhLGIpezQ4NT09KCQoIiNzaXRlSUQiKS52YWwoKXx8JCgiI3RvcHNpdGVpZCIpLnZhbCgpKSYmYi5jbGVhcmFuY2UmJjA8YS5sZW5ndGgmJihiPSQoIiNNYWluTWVudV9mNDgyYmFhYi1hYWM0LWVkYTYtNmI1Mi0zID4gYSIpLDA9PWIubGVuZ3RoJiYoYj0kKCIuQ0xFQVJBTkNFIikucGFyZW50KCkuZmluZCgiLnN1Ym1lbnVJdGVtOmZpcnN0LWNoaWxkIikpLDA8Yi5sZW5ndGgmJihiPWIuYXR0cigiaHJlZiIpLCIiIT09YiYmYS5hdHRyKCJocmVmIixiKSkpfXZhciBvcGVuV2luZG93cz1bXSx3aW5kb3dPcGVuT0c9d2luZG93Lm9wZW47CndpbmRvdy5vcGVuPWZ1bmN0aW9uKCl7dmFyIGE9d2luZG93T3Blbk9HLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxiPXt3aW5kb3c6YSxhcmdzOmFyZ3VtZW50c307b3BlbldpbmRvd3MucHVzaChiKTsidW5kZWZpbmVkIiE9PXR5cGVvZiBqUXVlcnkmJmpRdWVyeShkb2N1bWVudCkudHJpZ2dlcigid2luZG93Lm9wZW4iLGIpO3JldHVybiBhfTsKJChmdW5jdGlvbigpeyQoZG9jdW1lbnQpLm9uKCJ3aW5kb3cub3BlbiIsZnVuY3Rpb24oYSxiKXthPWIuYXJncztmb3IodmFyIGM9ITEsZD0wO2Q8YS5sZW5ndGg7ZCsrKWlmKC0xPGFbZF0uaW5kZXhPZigiY2FyZmF4Iil8fGFbZF0uaW5kZXhPZigiY2FycHJvb2YiKSl7Yz0hMDticmVha31pZihjKXthPXdpbmRvdy5zY3JlZW4uYXZhaWxIZWlnaHR8fHdpbmRvdy5pbm5lckhlaWdodHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodHx8ZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQ7dHJ5e2Iud2luZG93LnJlc2l6ZVRvKGIud2luZG93Lm91dGVyV2lkdGgsTWF0aC5yb3VuZCguOTUqYSkpfWNhdGNoKGUpe319fSl9KTsKJChmdW5jdGlvbigpe3ZhciBhPSQoIi51cF9tZW51IiksYj0kKCIucHJvbW90aW9uU2lkZVZCdXR0b24iKSxjPSQoJyNzbGlkZWl0ID4gbGFiZWxbZm9yPSJvcGVuLWl0ZW0iXTpub3QoLnRleHQtdXMtYnRuKScpO2lmKGEubGVuZ3RoJiZiLmxlbmd0aCl7dmFyIGQ9ITEsZT1mdW5jdGlvbigpe3ZhciBrPSQod2luZG93KS5zY3JvbGxUb3AoKSxoPSQod2luZG93KS5oZWlnaHQoKTtrPWEub2Zmc2V0KCkudG9wK2Eub3V0ZXJIZWlnaHQoKSsxMDAtaztiLmNzcyh7cG9zaXRpb246ImZpeGVkIix0b3A6TWF0aC5tYXgoaC8yLGspKyJweCIsdHJhbnNmb3JtOiJ0cmFuc2xhdGVZKC01MCUpIix0cmFuc2l0aW9uOiJub25lIn0pO2MubGVuZ3RoJiYoaD1iWzBdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbSxjLmNzcyh7cG9zaXRpb246ImZpeGVkIix0b3A6aCs1KyJweCJ9KSk7ZD0hMX07JCh3aW5kb3cpLm9uKCJzY3JvbGwgcmVzaXplIixmdW5jdGlvbigpe2R8fCh3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGUpLApkPSEwKX0pO3NldFRpbWVvdXQoZSwxMDApfX0pO2Z1bmN0aW9uIHJlcGxhY2VVc2VkVmVoaWNsZU1vZGVsRGlzcGxheShhKXtpZigic3RyaW5nIj09PXR5cGVvZiBhfHxhIGluc3RhbmNlb2YgU3RyaW5nKSJmdW5jdGlvbiI9PT10eXBlb2YgJCYmJCgiQk9EWSIpLmhhc0NsYXNzKCJGUkVOQ0giKXx8LTEhPT1hLmluZGV4T2YoIkh5YnJpZGUiKSYmKGE9YS5yZXBsYWNlKCJIeWJyaWRlIiwiSHlicmlkIikpO3JldHVybiBhfQokKGZ1bmN0aW9uKCl7aWYoJCgiLnBheXBhbF9idXR0b25faHRtbCIpLmxlbmd0aCl7dmFyIGE9JCgiQk9EWSIpLmhhc0NsYXNzKCJGUkVOQ0giKT8iZnIiOiJlbiIsYj0kKCJCT0RZIikuaGFzQ2xhc3MoIkZSRU5DSCIpPyJSw6lzZXJ2ZXotbGUgYXZlYyBQYXlQYWwgISI6IlJlc2VydmUgaXQgIHdpdGggUGF5UGFsICEiOyQoIi5wYXlwYWxfYnV0dG9uX2h0bWwiKS5maW5kKCdpbnB1dFt0eXBlPSJpbWFnZSJdW25hbWU9InN1Ym1pdCJdJykuYXR0cigic3JjIiwiL2ltYWdlcy9jb250aW51ZV93aXRoX3BheXBhbF8iK2ErIi5wbmciKTskKCIucGF5cGFsX2J1dHRvbl9odG1sIikuZmluZCgiZm9ybSIpLmF0dHIoInRhcmdldCIsInBheXBhbElmcmFtZSIpOyQoIi5wYXlwYWxfYnV0dG9uX2h0bWwiKS5maW5kKCJ0YWJsZSB0cjpmaXJzdCB0ZCIpLmNvbnRlbnRzKCkuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuIDM9PXRoaXMubm9kZVR5cGV9KS5maXJzdCgpLnJlcGxhY2VXaXRoKGIpOyQoIi5wYXlwYWxfYnV0dG9uX2h0bWwgZm9ybSIpLmZpbmQoJ1tuYW1lPSJpdGVtX25hbWUiXScpLnJlbW92ZSgpOwokKCIucGF5cGFsX2J1dHRvbl9odG1sIGZvcm0iKS5maW5kKCdbbmFtZT0iaXRlbV9udW1iZXIiXScpLnJlbW92ZSgpO2E9JzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Iml0ZW1fbmFtZSIgdmFsdWU9IicrJCgiI3Bob25lbWFrZSIpLnZhbCgpKyIgIiskKCIjcGhvbmVtb2RlbCIpLnZhbCgpKyIgIiskKCIjcGhvbmVteWVhciIpLnZhbCgpKyIgU3RvY2soIyIrJCgiI3Bob25lc3RvY2tudW1iZXIiKS52YWwoKSsnKSI+JzskKCIucGF5cGFsX2J1dHRvbl9odG1sIGZvcm0iKS5hcHBlbmQoYSk7JCgiLnBheXBhbF9idXR0b25faHRtbCIpLmZpbmQoJ2lucHV0W3R5cGU9ImltYWdlIl1bbmFtZT0ic3VibWl0Il0nKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7Z2FUcmFjaygiYy5fdHJhY2tFdmVudCIsIkNsaXF1ZXMgUGF5UGFsIiwiT2NjYXNpb24iLCQoIiNoaWRkZW5EZWFsZXJOYW1lIikudmFsKCkrIi0iKyQoIiNwaG9uZW1ha2UiKS52YWwoKSsiLSIrJCgiI3Bob25lbW9kZWwiKS52YWwoKSsKIi0iKyQoIiNwaG9uZW15ZWFyIikudmFsKCkrIi0iKyQoIiNwaG9uZXN0b2NrbnVtYmVyIikudmFsKCksMSl9KTskKCIjcGF5cGFsUG9wdXAiKS5kZXRhY2goKS5hcHBlbmRUbygiYm9keSIpOyQoJy5wYXlwYWxfYnV0dG9uX2h0bWwgaW5wdXRbbmFtZT0ic3VibWl0Il0nKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7JCgiI3BheXBhbFBvcHVwIikucG9wdXBpemUoKS5zZXRUcmlnZ2VyKCJjbGljayIpLm9wZW4oKX0pOyQoIi5wYXlwYWxfYnV0dG9uX2h0bWwiKS5zaG93KCl9JCgiI3Rlc3REcml2ZVR5cGUiKS5sZW5ndGgmJigiVmlydHVhbCI9PSQoIiN0ZXN0RHJpdmVUeXBlIikudmFsKCl8fCJWaXJ0dWVsIj09JCgiI3Rlc3REcml2ZVR5cGUiKS52YWwoKSkmJiQoIi5wcmVmZXJlZFZpcnR1YWxUb29sIikuc2hvdygpfSk7CmZ1bmN0aW9uIHByaWNlUmVxdWVzdENvbW1lbnRUZXh0KCl7dmFyIGE9JCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLGI9JCgiI2lzbW9iaWxlIiksYz0kKCIjcXVlc3Rpb25zQ29tbWVudHMiKTthPSJFTkdMSVNIIj09YS52YWwoKT8iSGksIEknZCBsaWtlIHRvIGdldCB5b3VyIGJlc3QgcHJpY2Ugb24gYSAwICAiOiJCb25qb3VyLCBqJ2FpbWVyYWlzIGF2b2lyIHZvdHJlIG1laWxsZXVycyBwcml4IHBvdXIgdW4gICAwIjswPGIubGVuZ3RoJiYiMSI9PWIudmFsKCkmJjA8Yy5sZW5ndGgmJmMudmFsKCk9PWEmJmMudmFsKCIiKX0kKGZ1bmN0aW9uKCl7cHJpY2VSZXF1ZXN0Q29tbWVudFRleHQoKX0pOwokKGZ1bmN0aW9uKCl7dmFyIGE9JCgiI2Zvb3RlciAuaWNvbi10ZXh0IHNwYW5baXRlbXByb3A9J3RlbGVwaG9uZSddIGEucGhvbmUtbGluayIpLGI9JCgiI2Zvb3RlciAuaWNvbi10ZXh0IC5mYS1waG9uZSIpOzA8YS5sZW5ndGgmJjA8Yi5sZW5ndGgmJiIiPT1hLmh0bWwoKS50cmltKCkmJmIuaGlkZSgpfSk7CmZ1bmN0aW9uIHBhZ2VWaWV3Q291bnRHb29nbGVFdmVudCgpe3ZhciBhPXdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSxiPTAsYz1zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCJkMmNfVkRQTVYiKTtudWxsIT1jPyhjPUpTT04ucGFyc2UoYyksYj1udWxsIT1jW2FdP2NbYV06MCxjW2FdPXBhcnNlSW50KGIpKzEpOihjPXt9LGNbYV09MSk7YT0iMSI9PSQoIiNuZXdTZWN0aW9uT3ZlcnJpZGUiKS52YWwoKT8iTkVXIjokKCIjZGVmYXVsdERlcGFydG1lbnQiKS52YWwoKTswPT1iP2dhVHJhY2soImMuX3RyYWNrRXZlbnQiLCJWRFAgbXVsdGlwbGUgdmlld3MiLGEsIjF4IiwxKToxPT1iP2dhVHJhY2soImMuX3RyYWNrRXZlbnQiLCJWRFAgbXVsdGlwbGUgdmlld3MiLGEsIjJ4IiwxKTpnYVRyYWNrKCJjLl90cmFja0V2ZW50IiwiVkRQIG11bHRpcGxlIHZpZXdzIixhLCIzeCsiLDEpO3Nlc3Npb25TdG9yYWdlLnNldEl0ZW0oImQyY19WRFBNViIsSlNPTi5zdHJpbmdpZnkoYykpfQokLmZuLmlzSW5WaWV3cG9ydD1mdW5jdGlvbigpe3ZhciBhPSQodGhpcykub2Zmc2V0KCkudG9wLGI9YSskKHRoaXMpLm91dGVySGVpZ2h0KCksYz0kKHdpbmRvdykuc2Nyb2xsVG9wKCksZD1jKyQod2luZG93KS5oZWlnaHQoKTtyZXR1cm4gYj5jJiZhPGR9OyQuZm4uaXNBYm92ZVZpZXdwb3J0PWZ1bmN0aW9uKGEpe2E9YXx8MDt2YXIgYj0kKHRoaXMpLm9mZnNldCgpLnRvcCskKHRoaXMpLm91dGVySGVpZ2h0KCksYz0kKHdpbmRvdykuc2Nyb2xsVG9wKCk7cmV0dXJuIGI+YythfTtmdW5jdGlvbiBzZXRQb3B1cE9wZW5PbkNsaWNrKCl7JCgiW2RhdGEtcG9wdXBpZF0iKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGE9JCh0aGlzKS5hdHRyKCJkYXRhLXBvcHVwaWQiKTskKHRoaXMpLm9uKCJjbGljayB0YXAiLGZ1bmN0aW9uKGIpe2IucHJldmVudERlZmF1bHQoKTskKCIjIithKS5wb3B1cGl6ZSgpLnNldFRyaWdnZXIoImNsaWNrIikub3BlbigpfSl9KX0KZnVuY3Rpb24gYWRkRGVhbGVySW5zaWRlU2NyaXB0KCl7aWYoJCgiLmRlYWxlci1pbnNpZGUtY3RhLWFjdGlvbi1ib3giKS5sZW5ndGgpe3ZhciBhPSQoIi5kZWFsZXItaW5zaWRlLWN0YS1hY3Rpb24tYm94IikuYXR0cigiZGF0YS1pZERlYWxlciIpLGI9JCgiLmRlYWxlci1pbnNpZGUtY3RhLWFjdGlvbi1ib3giKS5hdHRyKCJkYXRhLWxhbmciKSxjPSQoIi5kZWFsZXItaW5zaWRlLWN0YS1hY3Rpb24tYm94IikuYXR0cigiZGF0YS1idXR0b24tdHlwZSIpLGQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7ZC5zZXRBdHRyaWJ1dGUoInR5cGUiLCJ0ZXh0L2phdmFzY3JpcHQiKTtkLnNldEF0dHJpYnV0ZSgic3JjIiwiaHR0cHM6Ly9kZWFsZXJpbnNpZGVhcHAuY29tL3dpZGdldHMvZGVhbGVyX2luc2lkZV9jYWxsLmpzP2RlYWxlcklkPSIrYSsiJmxhbmc9IitiKyImYnV0dG9uVHlwZT0iK2MpO2RvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF0uYXBwZW5kQ2hpbGQoZCl9fQokKGZ1bmN0aW9uKCl7c2V0UG9wdXBPcGVuT25DbGljaygpO2FkZERlYWxlckluc2lkZVNjcmlwdCgpfSk7ZnVuY3Rpb24gbW90b2luc2lnaHRTaG9wR29vZ2xlT3B0aW1pemUoKXskKCIjanMtbW90b2luc2lnaHRTaG9wUG9wdXBDb250YWluZXItaW5wdXQiKS5sZW5ndGgmJiQoIi5qcy1tb3RvaW5zaWdodFNob3BQb3B1cENvbnRhaW5lciIpLmxlbmd0aCYmJCgiLmpzLW1vdG9pbnNpZ2h0U2hvcFBvcHVwQ29udGFpbmVyIikuYXR0cigiZGF0YS1tb3RvaW5zaWdodHNob3BpZnJhbWV1cmwiLCQoIiNqcy1tb3RvaW5zaWdodFNob3BQb3B1cENvbnRhaW5lci1pbnB1dCIpLnZhbCgpKX1mdW5jdGlvbiBodG1sVG9Ob2RlKGEpe3ZhciBiPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2IuaW5uZXJIVE1MPWEudHJpbSgpO3JldHVybiBiLmZpcnN0RWxlbWVudENoaWxkfQpmdW5jdGlvbiBodG1sVG9Eb2N1bWVudEZyYWcoYSl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZVJhbmdlKCkuY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KGEpfWZ1bmN0aW9uIGh0bWxUb0VsZW1lbnRzKGEpe3ZhciBiPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIik7Yi5pbm5lckhUTUw9YTtyZXR1cm4gYi5jb250ZW50LmNoaWxkTm9kZXN9CmNvbnN0IHZpZXdQb3J0T2JzZXJ2ZXI9ZnVuY3Rpb24oYSl7bGV0IGI9ITEsYz0hMSxkPTUwO2NvbnN0IGU9az0+e2s9a1swXTtsZXQgaD0uMDE+PWsuaW50ZXJzZWN0aW9uUmF0aW8mJmsuYm91bmRpbmdDbGllbnRSZWN0LnRvcDxkO2MuY2xhc3NMaXN0LnRvZ2dsZSgidG9wLWZpeGVkIixoKTtkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuc21zQ3RhQnRuIikuZm9yRWFjaChuPT5uLmhpZGRlbj0haCk7bnVsbCE9PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0b2FzdC1jb250YWluZXIiKSYmKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0b2FzdC1jb250YWluZXIiKS5oaWRkZW49IWgpfTtyZXR1cm57b2JzZXJ2ZTooKT0+e2lmKGEpe2QrPWEub2Zmc2V0SGVpZ2h0KzE2O3ZhciBrPWEuY2xvc2VzdCgiLm9ic2VydmVkLXdyYXBwZXIiKXx8ITE7aWYoIWspe2xldCBoPWh0bWxUb05vZGUoJzxkaXYgY2xhc3M9ImZpeGVkLXdyYXBwZXIiPjwvZGl2PicpO2s9aHRtbFRvTm9kZSgnPGRpdiBjbGFzcz0ib2JzZXJ2ZWQtd3JhcHBlciI+PC9kaXY+Jyk7CmEuYWZ0ZXIoayk7ay5hcHBlbmRDaGlsZChoKTtoLmFwcGVuZENoaWxkKGEpO2suc3R5bGUuaGVpZ2h0PWAke2gub2Zmc2V0SGVpZ2h0fXB4YH1iPWs7Yz1iLnF1ZXJ5U2VsZWN0b3IoIi5maXhlZC13cmFwcGVyIik7KG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihlLHtyb290TWFyZ2luOmAtJHtkfXB4IDBweCAwcHggMHB4YCx0aHJlc2hvbGQ6WzAsLjAxXX0pKS5vYnNlcnZlKGIpfX19fTsKZnVuY3Rpb24gZDJjRm9vdGVyRGVsZXRlQWxsQ29va2llcyhhKXtsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgiZDJmYXZEYXRhIik7bG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oImZvcm1GaWxsRGF0YSIpO2xvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCJmaW5hbmNlX211bHRpc3RlcF9mb3JtX3VzZXJJZCIpO2xvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCJmaW5hbmNlX211bHRpc3RlcC5saW5lYXJfc3RlcCIpO3ZhciBiPXdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSxjPWI7Yj1iLnJlcGxhY2UoInd3dy4iLCIiKTt2YXIgZD1iPWIucmVwbGFjZSgibS4iLCIiKTtiLmluY2x1ZGVzKCJkMmNtZWRpYS5jYSIpJiYoYj0iZDJjbWVkaWEuY2EiKTtmb3IodmFyIGU9ZG9jdW1lbnQuY29va2llLnNwbGl0KCI7Iiksaz0wO2s8ZS5sZW5ndGg7aysrKXt2YXIgaD1lW2tdLG49aC5pbmRleE9mKCI9Iik7aD0tMTxuP2guc3Vic3RyKDAsbik6aDsiZDJjX2Nvb2tpZV9jb25zZW50IiE9aC50cmltKCkmJiJPcHRhbm9uQWxlcnRCb3hDbG9zZWQiIT0KaC50cmltKCkmJiJPcHRhbm9uQ29uc2VudCIhPWgudHJpbSgpJiYoaD1oLnRyaW0oKSxkb2N1bWVudC5jb29raWU9aCsiPTtQYXRoPS87ZG9tYWluPS4iK2IrIjtleHBpcmVzPVRodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDAgR01UIixkb2N1bWVudC5jb29raWU9aCsiPTtQYXRoPS87ZG9tYWluPSIrYisiO2V4cGlyZXM9VGh1LCAwMSBKYW4gMTk3MCAwMDowMDowMCBHTVQiLGRvY3VtZW50LmNvb2tpZT1oKyI9O1BhdGg9Lztkb21haW49IitjKyI7ZXhwaXJlcz1UaHUsIDAxIEphbiAxOTcwIDAwOjAwOjAwIEdNVCIsZG9jdW1lbnQuY29va2llPWgrIj07UGF0aD0vO2RvbWFpbj0uIitkKyI7ZXhwaXJlcz1UaHUsIDAxIEphbiAxOTcwIDAwOjAwOjAwIEdNVCIsZG9jdW1lbnQuY29va2llPWgrIj07UGF0aD0vO2RvbWFpbj0iK2QrIjtleHBpcmVzPVRodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDAgR01UIixkb2N1bWVudC5jb29raWU9aCsiPTtQYXRoPS87ZG9tYWluPS5kMmNtZWRpYS5jYTtleHBpcmVzPVRodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDAgR01UIiwKZG9jdW1lbnQuY29va2llPWgrIj07UGF0aD0vO2RvbWFpbj1kMmNtZWRpYS5jYTtleHBpcmVzPVRodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDAgR01UIixkb2N1bWVudC5jb29raWU9aCsiPTtleHBpcmVzPVRodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDAgR01UIixkb2N1bWVudC5jb29raWU9aCsiPTtQYXRoPS87ZXhwaXJlcz1UaHUsIDAxIEphbiAxOTcwIDAwOjAwOjAwIEdNVCIsY29uc29sZS5sb2coIkQyREMiLGgsYiksaz09cGFyc2VGbG9hdChlLmxlbmd0aCktMSYmKCJ1bmRlZmluZWQiPT09dHlwZW9mIGEmJiQoIiNkMmNGb290ZXJDb29raWVEZWxldGUiKS5wb3B1cGl6ZSgpLnNldFRyaWdnZXIoImNsaWNrIikub3BlbigpLHNldFRpbWVvdXQoZDJjRm9vdGVyRGVsZXRlQWxsQ29va2llc1JlZnJlc2gsMkUzKSkpfXJldHVybiEwfQpmdW5jdGlvbiBkMmNGb290ZXJEZWxldGVBbGxDb29raWVzUmVmcmVzaCgpe3dpbmRvdy50b3A9PT13aW5kb3cuc2VsZiYmbG9jYXRpb24ucmVsb2FkKCl9CmZ1bmN0aW9uIEdvb2dsZUNhcHRjaGEoKXt0aGlzLnJlc3BvbnNlVG9rZW49IiI7dGhpcy53aWRnZXRJZD0tMTt0aGlzLnBhc3NlZD0hMTt2YXIgYT0kLkRlZmVycmVkKCksYj10aGlzO19faW5pdD1mdW5jdGlvbigpe3RyeXtpZighd2luZG93LmdyZWNhcHRjaGEpe3ZhciBjPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpLGQ9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpWzBdO2Muc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL3JlY2FwdGNoYS9hcGkuanMiO2QucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYyxkKX19Y2F0Y2goZSl7Y29uc29sZS5sb2coZSl9fTtfX2xvYWRDYXB0Y2hhPWZ1bmN0aW9uKCl7aWYoISgtMTxiLndpZGdldElkKSl0cnl7dmFyIGM9Imdvb2dsZVdpZGdldF8iK01hdGguZmxvb3IoMTY3NzcyMTUqTWF0aC5yYW5kb20oKSkudG9TdHJpbmcoMTYpOyQoJzxkaXYgaWQ9IicrYysnIiBzdHlsZT0iZGlzcGxheTpub25lIj48L2Rpdj4nKS5hcHBlbmRUbygiYm9keSIpOwpiLndpZGdldElkPWdyZWNhcHRjaGEucmVuZGVyKGMse3NpdGVrZXk6IjZMZnBkRDBVQUFBQUFQZDRTN0lrZTVFZHgwMXkzWVhkNUktdTNkeFAiLGNhbGxiYWNrOl9fc3VibWl0Q2FwdGNoYSwiZXJyb3ItY2FsbGJhY2siOmIuZmFpbCxzaXplOiJpbnZpc2libGUifSl9Y2F0Y2goZCl7Y29uc29sZS5sb2coZCl9fTtfX3N1Ym1pdENhcHRjaGE9ZnVuY3Rpb24oYyl7Yi5yZXNwb25zZVRva2VuPWM7Yi5wYXNzZWQ9ITA7YS5yZXNvbHZlKCl9O2IuZ2V0UmVzcG9uc2U9ZnVuY3Rpb24oKXt2YXIgYz0kLkRlZmVycmVkKCk7d2luZG93LmdyZWNhcHRjaGE\/KF9fbG9hZENhcHRjaGEoKSxncmVjYXB0Y2hhLmV4ZWN1dGUoYi53aWRnZXRJZCksYS5kb25lKGZ1bmN0aW9uKCl7Yy5yZXNvbHZlKGIucmVzcG9uc2VUb2tlbil9KSk6Yy5yZXNvbHZlKCk7cmV0dXJuIGN9O2IuZmFpbD1mdW5jdGlvbigpe2NvbnNvbGUubG9nKCJHUkMgRmFpbCIsYXJndW1lbnRzKX07X19pbml0KCl9CmZ1bmN0aW9uIGdldEx1eHVyeVRheEFtb3VudChhKXt2YXIgYj0wOzFFNTxhJiYoYj0uMSphLGE9LjIqKGEtMUU1KSxiPWI8YT9iOmEpO3JldHVybiBNYXRoLnJvdW5kKGIpfQp2YXIgd29yZHM9W10scGFydCx3b3JkSW5kZXg9MCxvZmZzZXQ9MCxsZW49MSxmb3J3YXJkcz0hMCxza2lwX2NvdW50PTAsc2tpcF9kZWxheT0xNSxzcGVlZD03MCx3b3JkZmxpY2s9ZnVuY3Rpb24oYSxiKXt3b3Jkcz1hO2xlbj13b3Jkcy5sZW5ndGg7c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXtmb3J3YXJkcz9vZmZzZXQ+PXdvcmRzW3dvcmRJbmRleF0ubGVuZ3RoJiYoKytza2lwX2NvdW50LHNraXBfY291bnQ9PXNraXBfZGVsYXkmJihmb3J3YXJkcz0hMSxza2lwX2NvdW50PTApKTowPT1vZmZzZXQmJihmb3J3YXJkcz0hMCx3b3JkSW5kZXgrKyxvZmZzZXQ9MCx3b3JkSW5kZXg+PWxlbiYmKHdvcmRJbmRleD0wKSk7cGFydD13b3Jkc1t3b3JkSW5kZXhdLnN1YnN0cigwLG9mZnNldCk7MD09c2tpcF9jb3VudCYmKGZvcndhcmRzP29mZnNldCsrOm9mZnNldC0tKTtiLnRleHQocGFydCl9LHNwZWVkKX07CmZ1bmN0aW9uIGlzSW5WaWV3cG9ydChhLGIpe2I9dm9pZCAwPT09Yj97fTpiO2E9YS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtsZXQgYz1pc051bWVyaWMoYi50b3ApP2IudG9wOjA7Yj1pc051bWVyaWMoYi5sZWZ0KT9iLmxlZnQ6MDtyZXR1cm4gTWF0aC5mbG9vcihhLnRvcCk+PWMmJk1hdGguZmxvb3IoYS5sZWZ0KT49YiYmTWF0aC5mbG9vcihhLmJvdHRvbSk8PSh3aW5kb3cuaW5uZXJIZWlnaHR8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQpJiZNYXRoLmZsb29yKGEucmlnaHQpPD0od2luZG93LmlubmVyV2lkdGh8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCl9ZnVuY3Rpb24gaXNOdW1lcmljKGEpe3JldHVybi9eLT9cZCskL2cudGVzdChhKX0KZG9jUmVhZHlBcnIucHVzaCgoKT0+e2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tyb2xlPSJidXR0b24iXScpLmZvckVhY2goYT0+e2EuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsYj0+e2NvbnN0IGM9dm9pZCAwIT09Yi5rZXk\/Yi5rZXk6Yi5rZXlDb2RlO2lmKCJFbnRlciI9PT1jfHwxMz09PWMpYi5wcmV2ZW50RGVmYXVsdCgpLGEuY2xpY2soKX0pfSl9KTsKKCgpPT57bGV0IGE9ZG9jdW1lbnQuY29va2llLGI9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihEb2N1bWVudC5wcm90b3R5cGUsImNvb2tpZSIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShEb2N1bWVudC5wcm90b3R5cGUsIl9jb29raWUiLGIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShEb2N1bWVudC5wcm90b3R5cGUsImNvb2tpZSIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldCgpe3JldHVybiB0aGlzLl9jb29raWV9LHNldChjKXt2YXIgZD1jLnRyaW0oKS5zcGxpdCgiOyIpO2xldCBlPXt9O3ZhciBrPTA7Zm9yKHZhciBoIG9mIGQpZD1oLnRyaW0oKS5zcGxpdCgiPSIpLDA9PWs\/KGUubmFtZT1kWzBdLGUudmFsdWU9ZFsxXXx8MCk6IiIhPWRbMF0mJihlW2RbMF1dPWRbMV18fDApLGsrKztrPWUubmFtZTtoPWUuZXhwaXJlc3x8MDtkPWUucGF0aHx8Ii8iO2xldCBuPWUuZG9tYWlufHwiIjtlLnZhbHVlJiYiIiE9ZS52YWx1ZSYmbnVsbCE9ZS52YWx1ZSYmCndpbmRvdy5Db29raWVMb2dnZXIubG9nKGssZS52YWx1ZSxoLGQsbik7Yz10aGlzLl9jb29raWU9YztpZihjIT09YSl0cnl7dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiY29va2llY2hhbmdlIix7ZGV0YWlsOntvbGRWYWx1ZTphLG5ld1ZhbHVlOmN9fSkpfWZpbmFsbHl7YT1jfX19KX0pKCk7ZG9jUmVhZHlBcnIucHVzaCgoKT0+e3ZhciBhPW51bGw7aWYod2luZG93LmxvY2F0aW9uLmhhc2gpe3RyeXthPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoZGVjb2RlVVJJKHdpbmRvdy5sb2NhdGlvbi5oYXNoKSl9Y2F0Y2goYil7cmV0dXJufWEmJihhPWEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wK3dpbmRvdy5zY3JvbGxZLHdpbmRvdy5zY3JvbGxUbyh7dG9wOmEtMjAsYmVoYXZpb3I6InNtb290aCJ9KSl9fSk7CihmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYyl7ZGVidWcoe2NvbGxlY3Q6Y30pO2M9Yy5uZXdVUkw\/bmV3IFVSTChjLm5ld1VSTCk6d2luZG93LmxvY2F0aW9uOyIiIT09Yy5oYXNoJiZjLmhhc2guc3Vic3RyaW5nKDEpLnNwbGl0KCImIikubWFwKGZ1bmN0aW9uKGQsZSxrKXt0cnl7dmFyIFtoLG5dPWQuc3BsaXQoIj0iKTtzd2l0Y2goaCl7Y2FzZSAidXRtX2UiOnZhciB4PWF0b2Iobikuc3BsaXQoIjo6Iiksdj1udWxsIT1nZXRDb29raWUoInV0bV9jYW1wYWlnbiIpJiYidW5kZWZpbmVkIiE9dHlwZW9mIGdldENvb2tpZSgidXRtX2NhbXBhaWduIik\/Z2V0Q29va2llKCJ1dG1fY2FtcGFpZ24iKTp4WzJdO3YmJnNldENvb2tpZSgidXRtX2NhbXBhaWduIix2LDE4MCk7dmFyIGY9bnVsbCE9Z2V0Q29va2llKCJ1dG1fc291cmNlIikmJiJ1bmRlZmluZWQiIT10eXBlb2YgZ2V0Q29va2llKCJ1dG1fc291cmNlIik\/Z2V0Q29va2llKCJ1dG1fc291cmNlIik6eFszXTtmJiZzZXRDb29raWUoInV0bV9zb3VyY2UiLApmLDE4MCk7YnJlYWs7Y2FzZSAidXRtX2V4Ijp4PWF0b2Iobik7dmFyIGc9bmV3IFVSTCgiaHR0cHM6Ly8iK3dpbmRvdy5sb2NhdGlvbi5ob3N0K3gpOzA8Zy5zZWFyY2hQYXJhbXMuc2l6ZSYmZy5zZWFyY2hQYXJhbXMuZm9yRWFjaChiKX1yZXR1cm57a2V5OmgsdmFsdWU6bn19Y2F0Y2gobSl7ZGVidWcobSl9fSl9ZnVuY3Rpb24gYihjLGQpe3RyeXtzd2l0Y2goZCl7Y2FzZSAiRGlzcGxheVNvdXJjZSI6Y2FzZSAiZ2NsaWQiOmRlYnVnKHtrZXk6ZCxjb29raWU6Z2V0Q29va2llKGQpLHZhbHVlOmN9KSxudWxsIT1nZXRDb29raWUoZCkmJiIiIT1nZXRDb29raWUoZCl8fHNldENvb2tpZShkLGMsMTgwKX19Y2F0Y2goZSl7ZGVidWcoZSl9fXdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixhLCExKTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiaGFzaGNoYW5nZSIsYSwhMSl9KSgpOzA+PSQoIiNzaGFyZU9uRmFjZWJvb2siKS5sZW5ndGgmJiQoImZvb3RlciIpLnByZXBlbmQoJzxkaXYgaWQ9InNoYXJlT25GYWNlYm9vayIgZGF0YS1leHBsYWluPSJob25kYS9hY3VyYSBjZXJ0IHVzZXMgZ3RtLCBpdCBoYXMgYSBiaW5kIHRoYXQgdGhyb3dzIGFuIGVycm9yIGlmIHRoaXMgaWQgZG9lcyBub3QgZXhpc3QuIGNvZGUgaXMgZnJvbSBndG0gc2lkZS4iPjwvZGl2PicpOwooZnVuY3Rpb24oKXtmdW5jdGlvbiBhKCl7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgJC5jb29raWUpe2xldCBjO3ZhciBiPW51bGwhPShjPSQuY29va2llKCJUZXJ0aWFyeVNvdXJjZSIpKT9jOiIiOyIiIT09YiYmKCQoJypbaHJlZio9IiRGRFRlcnRpYXJ5U291cmNlIl0nKS5lYWNoKGZ1bmN0aW9uKCl7JCh0aGlzKS5hdHRyKCJocmVmIiwkKHRoaXMpLmF0dHIoImhyZWYiKS5yZXBsYWNlKCIkRkRUZXJ0aWFyeVNvdXJjZSIsYikpfSksJCgnKltvbmNsaWNrKj0iJEZEVGVydGlhcnlTb3VyY2UiXScpLmVhY2goZnVuY3Rpb24oKXskKHRoaXMpLmF0dHIoIm9uY2xpY2siLCQodGhpcykuYXR0cigib25jbGljayIpLnJlcGxhY2UoIiRGRFRlcnRpYXJ5U291cmNlIixiKSl9KSwkKCcqW3ZhbHVlKj0iJEZEVGVydGlhcnlTb3VyY2UiXScpLmVhY2goZnVuY3Rpb24oKXskKHRoaXMpLmF0dHIoInZhbHVlIiwkKHRoaXMpLmF0dHIoInZhbHVlIikucmVwbGFjZSgiJEZEVGVydGlhcnlTb3VyY2UiLApiKSl9KSl9fWEoKTtzZXRUaW1lb3V0KGEsMUUzKTtzZXRUaW1lb3V0KGEsNUUzKTswPD1uYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIk1hYyIpJiYoJCgiLmxhbmd1YWdlQmFyIC5nUmF0aW5nLWljb24jZ1JhdGluZyAucmF0aW5nIikuYWRkQ2xhc3MoIm1hcmdpbi1ib3R0b20tLTRweCIpLCQoIi5sYW5ndWFnZUJhciAuc2VydmljZS1oZWFkZXItZm9ybSBhLmJ0biA+IHNwYW4iKS5hZGRDbGFzcygibWFyZ2luLWJvdHRvbS0tNHB4IiksJCgiLmxhbmd1YWdlQmFyIC5kZXNrdG9wX2xhbmdfYnV0dG9uX3RleHQiKS5hZGRDbGFzcygibWFyZ2luLWJvdHRvbS0tNHB4IiksJCgiLmxhbmd1YWdlQmFyIC5kZXNrdG9wX2xhbmdfYnV0dG9uX3RleHQiKS5jc3MoInRvcCIsIjUyJSIpKX0pKCk7CmZ1bmN0aW9uIGFkZE5vVHJhbnNsYXRlRW1haWxEZWYoKXtkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbaWQqPSJlbWFpbEJvZHlEZWYiXSwgW2lkKj0iZW1haWxTdWJqZWN0RGVmIl0sIFtjbGFzcyo9ImVtYWlsU3ViamVjdCJdLCBbY2xhc3MqPSJlbWFpbEJvZHkiXSwgW2NsYXNzKj0ibGVhZEVtYWlsIl0sIFtjbGFzcyo9ImVtYWlsLWRlZmluaXRpb24iXScpLmZvckVhY2goYT0+e2Euc2V0QXR0cmlidXRlKCJ0cmFuc2xhdGUiLCJubyIpfSl9YWRkTm9UcmFuc2xhdGVFbWFpbERlZigpOwovKiogL20vanMvbGF6eXNpemVzLm1pbi5qcyAqKi8KLyohIGxhenlzaXplcyAtIHY0LjEuNSAqLwovKiEgbW9kaWZpZWQ6IG9saXZpZXJAZDJjbWVkaWEuY2EgdG8gc3VwcG9ydCBkYXRhLWltZ3NyYyBiZWNhdXNlIG9mIG9uZVRydXN0IGJyZWFrcyBsYXp5bG9hZCBvbiBkYXRhLXNyYyAqLwohZnVuY3Rpb24oYSxiKXt2YXIgYz1iKGEsYS5kb2N1bWVudCk7YS5sYXp5U2l6ZXM9Yywib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHMmJihtb2R1bGUuZXhwb3J0cz1jKX0od2luZG93LGZ1bmN0aW9uKGEsYil7InVzZSBzdHJpY3QiO2lmKGIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSl7dmFyIGMsZCxlPWIuZG9jdW1lbnRFbGVtZW50LGY9YS5EYXRlLGc9YS5IVE1MUGljdHVyZUVsZW1lbnQsaD0iYWRkRXZlbnRMaXN0ZW5lciIsaT0iZ2V0QXR0cmlidXRlIixqPWFbaF0saz1hLnNldFRpbWVvdXQsbD1hLnJlcXVlc3RBbmltYXRpb25GcmFtZXx8ayxtPWEucmVxdWVzdElkbGVDYWxsYmFjayxuPS9ecGljdHVyZSQvaSxvPVsibG9hZCIsImVycm9yIiwibGF6eWluY2x1ZGVkIiwiX2xhenlsb2FkZWQiXSxwPXt9LHE9QXJyYXkucHJvdG90eXBlLmZvckVhY2gscj1mdW5jdGlvbihhLGIpe3JldHVybiBwW2JdfHwocFtiXT1uZXcgUmVnRXhwKCIoXFxzfF4pIitiKyIoXFxzfCQpIikpLHBbYl0udGVzdChhW2ldKCJjbGFzcyIpfHwiIikmJnBbYl19LHM9ZnVuY3Rpb24oYSxiKXtyKGEsYil8fGEuc2V0QXR0cmlidXRlKCJjbGFzcyIsKGFbaV0oImNsYXNzIil8fCIiKS50cmltKCkrIiAiK2IpfSx0PWZ1bmN0aW9uKGEsYil7dmFyIGM7KGM9cihhLGIpKSYmYS5zZXRBdHRyaWJ1dGUoImNsYXNzIiwoYVtpXSgiY2xhc3MiKXx8IiIpLnJlcGxhY2UoYywiICIpKX0sdT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9Yz9oOiJyZW1vdmVFdmVudExpc3RlbmVyIjtjJiZ1KGEsYiksby5mb3JFYWNoKGZ1bmN0aW9uKGMpe2FbZF0oYyxiKX0pfSx2PWZ1bmN0aW9uKGEsZCxlLGYsZyl7dmFyIGg9Yi5jcmVhdGVFdmVudCgiRXZlbnQiKTtyZXR1cm4gZXx8KGU9e30pLGUuaW5zdGFuY2U9YyxoLmluaXRFdmVudChkLCFmLCFnKSxoLmRldGFpbD1lLGEuZGlzcGF0Y2hFdmVudChoKSxofSx3PWZ1bmN0aW9uKGIsYyl7dmFyIGU7IWcmJihlPWEucGljdHVyZWZpbGx8fGQucGYpPyhjJiZjLnNyYyYmIWJbaV0oInNyY3NldCIpJiZiLnNldEF0dHJpYnV0ZSgic3Jjc2V0IixjLnNyYyksZSh7cmVldmFsdWF0ZTohMCxlbGVtZW50czpbYl19KSk6YyYmYy5zcmMmJihiLnNyYz1jLnNyYyl9LHg9ZnVuY3Rpb24oYSxiKXtyZXR1cm4oZ2V0Q29tcHV0ZWRTdHlsZShhLG51bGwpfHx7fSlbYl19LHk9ZnVuY3Rpb24oYSxiLGMpe2ZvcihjPWN8fGEub2Zmc2V0V2lkdGg7YzxkLm1pblNpemUmJmImJiFhLl9sYXp5c2l6ZXNXaWR0aDspYz1iLm9mZnNldFdpZHRoLGI9Yi5wYXJlbnROb2RlO3JldHVybiBjfSx6PWZ1bmN0aW9uKCl7dmFyIGEsYyxkPVtdLGU9W10sZj1kLGc9ZnVuY3Rpb24oKXt2YXIgYj1mO2ZvcihmPWQubGVuZ3RoP2U6ZCxhPSEwLGM9ITE7Yi5sZW5ndGg7KWIuc2hpZnQoKSgpO2E9ITF9LGg9ZnVuY3Rpb24oZCxlKXthJiYhZT9kLmFwcGx5KHRoaXMsYXJndW1lbnRzKTooZi5wdXNoKGQpLGN8fChjPSEwLChiLmhpZGRlbj9rOmwpKGcpKSl9O3JldHVybiBoLl9sc0ZsdXNoPWcsaH0oKSxBPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGI\/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+JykuY3NzKHtmbG9hdDoibGVmdCJ9KS50ZXh0KGEuc3RhcnRUaW1lW2VdKTsKYi5hcHBlbmQoZWxlbSl9fSkodGhpcyk7dmFyIGw9c2V0SW50ZXJ2YWwoayhjLmxlbmd0aC0xKSwxRTMpfTsKLyoqIC9tL2pzL2RhdGVVdGlscy5qcyAqKi8KdmFyIF9fX2QyY19kYXRlVXRpbHNqc19jX29uPSIyMDI1LTA1LTIzIDE3OjA5OjQ2IjsndXNlIHN0cmljdCc7dmFyIF9fX2QyY19kYXRlVXRpbHNqc19jX29uPSIyMDI0LTAxLTMxIDE0OjM2OjAxIjsidXNlIHN0cmljdCI7X19fZDJjX2RhdGVVdGlsc2pzX2Nfb249IjIwMjMtMDEtMTIgMTE6MzQ6MzMiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfZGF0ZVV0aWxzanNfY19vbj0iMjAyMy0wMS0xMiAxMDo0NDoxNCI7InVzZSBzdHJpY3QiO19fX2QyY19kYXRlVXRpbHNqc19jX29uPSIyMDIxLTEyLTE1IDEyOjQxOjIzIjsidXNlIHN0cmljdCI7RGF0ZS5wcm90b3R5cGUuYW1vdW50QmV0d2Vlbj1mdW5jdGlvbihhLGIsYyxkKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIGF8fG51bGw9PWF8fCJ1bmRlZmluZWQiPT10eXBlb2YgYnx8bnVsbD09YilyZXR1cm4gbnVsbDthPWEuZ2V0VGltZSgpO2I9Yi5nZXRUaW1lKCk7cmV0dXJuIE1hdGguZmxvb3IoKGItYS1kKS9jKX07Ci8qKiAvbS9qcy9wb3B1cC5qcyAqKi8KdmFyIF9fX2QyY19wb3B1cGpzX2Nfb249IjIwMjUtMDUtMjMgMTc6MTE6MjciOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX3BvcHVwanNfY19vbj0iMjAyNC0wMy0xNSAxMDozMDoxMCI7InVzZSBzdHJpY3QiO3ZhciBhY3RpdmF0ZWRQb3B1cERpdklEPSIiLG1haW5Qb3B1cERpdklEPSIiLHBvcHVwT25BZnRlclN1Ym1pdENsb3NlPSExLGlzUG9wdXBJbml0aWFsaXplZD0hMTsKZnVuY3Rpb24gc2hvd1BvcHVwV2lkZ2V0KGEsYj0hMCl7dmFyIGM9ITE9PT1iPyExOiEwO2lmKGlzU21zVGV4dFVzRm9ybSgpJiZiKXJldHVybiBzaG93U21zVGV4dFVzRm9ybShjKSwhMTtpZighMT09PWlzUG9wdXBJbml0aWFsaXplZClyZXR1cm4hMTthPWE\/YTp7fTtzZXR0aW5ncz17c2hvd01haW5Qb3B1cDohMSxkb05vdFJlZGlyZWN0OiExLGV2ZW50VHlwZToiY2xpY2siLGRlbGF5OiExfTskLmV4dGVuZChzZXR0aW5ncyxhKTthPXNldHRpbmdzLmRvTm90UmVkaXJlY3Q7Yj1zZXR0aW5ncy5ldmVudFR5cGU7Yz1zZXR0aW5ncy5kZWxheTt2YXIgZD0wPGFjdGl2YXRlZFBvcHVwRGl2SUQubGVuZ3RoP2FjdGl2YXRlZFBvcHVwRGl2SUQ6ITE7ITA9PT1zZXR0aW5ncy5zaG93TWFpblBvcHVwJiYwPG1haW5Qb3B1cERpdklELmxlbmd0aCYmKGQ9bWFpblBvcHVwRGl2SUQpO2lmKGQmJjA8ZC5sZW5ndGgpJCgiIyIrZCkucG9wdXBpemUoKS5zZXRUcmlnZ2VyKGIpLm9wZW4oYyk7ZWxzZSBpZigiZnVuY3Rpb24iPT09CnR5cGVvZiBzaG93UG9wdXBXaWRnZXRPTEQpc2hvd1BvcHVwV2lkZ2V0T0xEKCExKTtlbHNlIGlmKCExPT09YSkwPCQoIiNwcm9tb1NlY3Rpb25uYWJsZWQiKS5sZW5ndGgmJiIwIiE9JCgiI3Byb21vU2VjdGlvbm5hYmxlZCIpLnZhbCgpP3dpbmRvdy5sb2NhdGlvbi5ocmVmPSJFTkdMSVNIIj09JCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpPyIvb3VyLXByb21vdGlvbnMuaHRtbCI6Ii9wcm9tb3Rpb25zLmh0bWwiOndpbmRvdy5sb2NhdGlvbi5ocmVmPSIvIjtlbHNlIHJldHVybiExfWZ1bmN0aW9uIHBvcHVwUG9zdE1lc3NhZ2VPbkF1dG9hdWJhaW5lKCl7c2V0VGltZW91dChmdW5jdGlvbigpeyQucG9zdE1lc3NhZ2UoImNsb3NlUG9wdXAiLCIqIixwYXJlbnQpfSwxRTMpfQpmdW5jdGlvbiBwb3B1cERlZmF1bHRPbkFmdGVySW5pdGlhbGl6ZShhLGIsYyxkLGUsZixnKXtpc1BvcHVwSW5pdGlhbGl6ZWQ9ITA7YyYmKG1haW5Qb3B1cERpdklEPWYrZCk7cmV0dXJuIGI9PWEmJmN8fCJyZXNldCI9PWImJmM\/KGFjdGl2YXRlZFBvcHVwRGl2SUQ9ZitkLCJ1c2VkY2Fycy5odG1sIiE9ZXx8Zz8ibmV3Y2Fycy5odG1sIiE9ZXx8Zz8hMDooY29uc29sZS5sb2coInBvcHVwLmpzIHBvcHVwRGVmYXVsdE9uQWZ0ZXJJbml0aWFsaXplIC0gbmV3Y2FycyByZXR1cm5zIGZhbHNlLiBQb3B1cCBtYXkgYmUgY2FuY2VsbGVkLiIpLCExKToodGhpcy5jb25zb2xlJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBjb25zb2xlLmxvZyYmY29uc29sZS5sb2coInBvcHVwLmpzIHBvcHVwRGVmYXVsdE9uQWZ0ZXJJbml0aWFsaXplIC0gdXNlZGNhcnMgIHJldHVybnMgZmFsc2UuIFBvcHVwIG1heSBiZSBjYW5jZWxsZWQuIiksITEpKTohMX0KZnVuY3Rpb24gcG9wdXBjbG9zZVBERihhLGIpeyQoIiNwb3B1cGRpdnBkZiIrYSkubGVuZ3RoJiYkKCIjcG9wdXBkaXZwZGYiK2EpLmNzcygiZGlzcGxheSIsIm5vbmUiKTskKCIjcG9wdXBkaWZwZGZtb2RhbCIpLmxlbmd0aCYmJCgiI3BvcHVwZGlmcGRmbW9kYWwiKS5yZW1vdmUoKTskKCIjcG9wdXBkaXZwZGZpZnJhbWUiKS5sZW5ndGgmJiQoIiNwb3B1cGRpdnBkZmlmcmFtZSIpLnJlbW92ZSgpO2ImJnBvcHVwUG9zdE1lc3NhZ2VPbkF1dG9hdWJhaW5lKCl9ZnVuY3Rpb24gcHJpbnRQREZJRnJhbWUoKXt3aW5kb3cuZnJhbWVzLnBvcHVwZGl2cGRmaWZyYW1lLnByaW50TWUoKX1mdW5jdGlvbiBwb3B1cFRyaW0oYSl7cmV0dXJuIGEucmVwbGFjZSgvXlxzK3xccyskL2dtLCIiKX0KZnVuY3Rpb24gc2hvd1BvcHVwV2lkZ2V0QWRkVmVoaWNsZShhKXskKCdpbnB1dFtuYW1lPSJzZWFyY2hlZHZlaGljbGUiXScpLmVhY2goZnVuY3Rpb24oKXskKHRoaXMpLnZhbChhKX0pO3Nob3dQb3B1cFdpZGdldCgpfWZ1bmN0aW9uIHNob3dTcGVjaWFsU2NoZWR1bGVPbmxvYWQoKXt2YXIgYT0kKCIjc3BlY2lhbFNjaGVkdWxlIik7MDxhLmxlbmd0aCYmYS5wb3B1cGl6ZSh7c2hvd29ubG9hZDohMCxjb29raWVOYW1lOiJzcFNjaGVkdWxlRGlzcGxheWVkIixjb29raWVDcmVhdGU6Im9uT3BlbiIsY2xvc2VCdXR0b246ITB9KX1mdW5jdGlvbiBzaG93U3BlY2lhbFNjaGVkdWxlKCl7JCgiI3NwZWNpYWxTY2hlZHVsZSIpLnBvcHVwaXplKCkuc2V0VHJpZ2dlcigiY2xpY2siKS5vcGVuKCl9ZnVuY3Rpb24gc2hvd1RyYWRlQm9vc3RQb3B1cCgpeyQoIiNUcmFkZUluQmFyUG9wdXBDb250YWluZXIiKS5wb3B1cGl6ZSgpLnNldFRyaWdnZXIoImNsaWNrIikub3BlbigpfQpmdW5jdGlvbiBpc1Ntc1RleHRVc0Zvcm0oKXtsZXQgYT1bIm5ld2NhcmRldGFpbC5odG1sIiwibmV3Y2Fycy5odG1sIl0sYj1bImNhcmRldGFpbC5odG1sIiwidXNlZGNhcnMuaHRtbCJdO3JldHVybiIxIj09JCgiI0Rpc2NvdW50UG9wdXBOZXdSZWJhdGVTaG93VGV4dFVzIikudmFsKCkmJmEuaW5jbHVkZXMoJCgiI1BBR0VJRCIpLnZhbCgpKXx8IjEiPT0kKCIjRGlzY291bnRQb3B1cFVzZWRSZWJhdGVTaG93VGV4dFVzIikudmFsKCkmJmIuaW5jbHVkZXMoJCgiI1BBR0VJRCIpLnZhbCgpKT8hMDohMX1mdW5jdGlvbiBzaG93U21zVGV4dFVzRm9ybShhPSEwKXskKCIjaXNNb2JpbGUiKS5sZW5ndGgmJiIxIj09JCgiI2lzTW9iaWxlIikudmFsKCkmJiExIT09YT9kZWFsZXJMaW5lU21zKCk6ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3NsaWRlaXQgI29wZW4taXRlbSIpLmNoZWNrZWQ9ITB9OwovKiogL20vanMvbW90b2luc2lnaHRTaG9wUG9wdXAuanMgKiovCnZhciBfX19kMmNfbW90b2luc2lnaHRTaG9wUG9wdXBqc19jX29uPSIyMDI1LTA1LTIzIDE3OjEwOjM5IjsndXNlIHN0cmljdCc7dmFyIF9fX2QyY19tb3RvaW5zaWdodFNob3BQb3B1cGpzX2Nfb249IjIwMjQtMDEtMzEgMTQ6Mzc6NTAiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfbW90b2luc2lnaHRTaG9wUG9wdXBqc19jX29uPSIyMDIzLTAxLTEyIDExOjM2OjI5IjsidXNlIHN0cmljdCI7X19fZDJjX21vdG9pbnNpZ2h0U2hvcFBvcHVwanNfY19vbj0iMjAyMy0wMS0xMiAxMDo0NjoxMiI7InVzZSBzdHJpY3QiO19fX2QyY19tb3RvaW5zaWdodFNob3BQb3B1cGpzX2Nfb249IjIwMjEtMTItMTUgMTI6NDQ6MjciOyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBtb3RvaW5zaWdodFNob3BJbml0KCl7fQpmdW5jdGlvbiBtb3RvaW5zaWdodFNob3BPcGVuKCl7aWYoJCgiI21vdG9jb21tZXJjZS12ZWhpY2xlLWxpbmsiKS5sZW5ndGgpe3ZhciBhPSIiO3N3aXRjaCghMCl7Y2FzZSAhISQoIiNtb3RvY29tbWVyY2UtdmVoaWNsZS1saW5rIikuYXR0cigiaHJlZiIpOmE9JCgiI21vdG9jb21tZXJjZS12ZWhpY2xlLWxpbmsiKS5hdHRyKCJocmVmIik7YnJlYWs7Y2FzZSAhISQoIi5qcy1tb3RvaW5zaWdodFNob3BQb3B1cENvbnRhaW5lciIpLmF0dHIoImRhdGEtbW90b2luc2lnaHRzaG9waWZyYW1ldXJsIik6YT0kKCIuanMtbW90b2luc2lnaHRTaG9wUG9wdXBDb250YWluZXIiKS5hdHRyKCJkYXRhLW1vdG9pbnNpZ2h0c2hvcGlmcmFtZXVybCIpO2JyZWFrO2Nhc2UgISEkKCIuanMtbW90b2luc2lnaHRTaG9wUG9wdXBDb250YWluZXIgYSIpLmF0dHIoImRhdGEtbW90b2luc2lnaHRzaG9waWZyYW1ldXJsIik6YT0kKCIuanMtbW90b2luc2lnaHRTaG9wUG9wdXBDb250YWluZXIgYSIpLmF0dHIoImRhdGEtbW90b2luc2lnaHRzaG9waWZyYW1ldXJsIik7CmJyZWFrO2Nhc2UgJCgiI21vdG9pbnNpZ2h0c2hvcHNjcmlwdHVybCIpJiYwPCQoIiNtb3RvaW5zaWdodHNob3BzY3JpcHR1cmwiKS5sZW5ndGg6YT0kKCIjbW90b2luc2lnaHRzaG9wc2NyaXB0dXJsIikudmFsKCkucmVwbGFjZSgiaW50ZWdyYXRpb24vaW50ZWdyYXRpb24uanMiLCJzZWFyY2gvP2NvbmRpdGlvbj1Vc2VkIiksIjEiPT0oJCgiI25ld1NlY3Rpb25PdmVycmlkZSIpLnZhbCgpfHwwKSYmKGE9JCgiI21vdG9pbnNpZ2h0c2hvcHNjcmlwdHVybCIpLnZhbCgpLnJlcGxhY2UoImludGVncmF0aW9uL2ludGVncmF0aW9uLmpzIiwic2VhcmNoLyIpKX0kKCIjbW90b2luc2lnaHRzaG9waWZyYW1lIikucmVtb3ZlKCk7IiIhPWEmJjA9PSQoIiNtb3RvaW5zaWdodHNob3BpZnJhbWUiKS5sZW5ndGgmJiQoIiNtb3RvaW5zaWdodHNob3BpZnJhbWVjb250YWluZXIiKS5hcHBlbmQoJzxpZnJhbWUgaWQ9Im1vdG9pbnNpZ2h0c2hvcGlmcmFtZSIgc3JjPSInK2ErJyIgYWxsb3d0cmFuc3BhcmVuY3k9InRydWUiIHN0eWxlPSJ0b3A6MHB4O2xlZnQ6MHB4O3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7ei1pbmRleDoxMDAxOyI+PC9pZnJhbWU+Jyl9fQpmdW5jdGlvbiBzZXRDdXJyZW50TW90b2NvbW1lcmNlSWZyYW1lVXJsKGEpeyQoIiNtb3RvY29tbWVyY2UtdmVoaWNsZS1saW5rIikuYXR0cigiaHJlZiIsYSl9OwovKiogL20vanMvZDJjX2FzY19nYTQuanMgKiovCnZhciBfX19kMmNfZDJjYXNjZ2E0anNfY19vbj0iMjAyNi0wMi0wMyAxNjozMDowMyI7J3VzZSBzdHJpY3QnO3ZhciBhc2NUb3BDYXJEZXRhaWxzPSExLGFzY0xhc3RTZWFyY2hGaWx0ZXJTb3J0PSExLGFzY0xhc3RGaWx0ZXJDbGljaz0hMSxhc2NMYXN0Q3RhQ2xpY2s9ITE7ZnVuY3Rpb24gZDJhc2NQdWJsaWNhdGlvbkRhdGUoZCl7aWYoIiI9PWQpcmV0dXJuIiI7dmFyIGg9bmV3IERhdGUoZCk7ZD0iIisoaC5nZXRNb250aCgpKzEpO3ZhciBrPSIiK2guZ2V0RGF0ZSgpO2g9aC5nZXRGdWxsWWVhcigpOzEwPnBhcnNlRmxvYXQoZCkmJihkPSIwIitkKTsxMD5wYXJzZUZsb2F0KGspJiYoaz0iMCIrayk7cmV0dXJuW2QsayxoXS5qb2luKCIvIil9ZnVuY3Rpb24gZW5zdXJlVHJ1dGh5KGQpe3JldHVybiBkP2Q6IiJ9CmZ1bmN0aW9uIGFzY1VwZGF0ZVRvcENhckRhdGEoZCl7aWYoITEhPT1kKXtsZXQgaD1kMmFzY1B1YmxpY2F0aW9uRGF0ZShlbnN1cmVUcnV0aHkoZC5kYXRlX2xpc3RpbmcpKSxrPWQubWFrZWNlcnQrIiI7YXNjVG9wQ2FyRGV0YWlscz17aXRlbV9pZDplbnN1cmVUcnV0aHkoZC5OSVYpLGl0ZW1fbnVtYmVyOmVuc3VyZVRydXRoeShkLmlkKSxpdGVtX3ByaWNlOmVuc3VyZVRydXRoeShkLnByaWNlKSxpdGVtX2NvbmRpdGlvbjplbnN1cmVUcnV0aHkoZC52Y2F0ZWdvcnkpLnRvTG93ZXJDYXNlKCksaXRlbV95ZWFyOmVuc3VyZVRydXRoeShkLnllYXIpLnRvTG93ZXJDYXNlKCksaXRlbV9tYWtlOmVuc3VyZVRydXRoeShkLm1ha2UpLnRvTG93ZXJDYXNlKCksaXRlbV9tb2RlbDplbnN1cmVUcnV0aHkoZC5tb2RlbCkudG9Mb3dlckNhc2UoKSxpdGVtX3ZhcmlhbnQ6ZW5zdXJlVHJ1dGh5KGQudmVyc2lvbikudG9Mb3dlckNhc2UoKSxpdGVtX2NvbG9yOmVuc3VyZVRydXRoeShkLmNvbG9yKS50b0xvd2VyQ2FzZSgpLAppdGVtX3R5cGU6ZW5zdXJlVHJ1dGh5KGQuYm9keVR5cGVJRCkudG9Mb3dlckNhc2UoKSxpdGVtX2NhdGVnb3J5OmVuc3VyZVRydXRoeSgiIiksaXRlbV9mdWVsX3R5cGU6ZW5zdXJlVHJ1dGh5KGQudmNhcmJ1cmFudCkudG9Mb3dlckNhc2UoKSxpdGVtX2ludmVudG9yeV9kYXRlOmVuc3VyZVRydXRoeShoKX07IjIxIiE9ayYmIjAiIT1rJiZkMmFzYy5zZXRWZWhpY2xlU3RhdHVzKCJDUE8iKX1lbHNlIGQ9JCgiI2FzY19kaWdpdGFsX2RhdGFfaW5mbyIpLGFzY1RvcENhckRldGFpbHM9e2l0ZW1fY29uZGl0aW9uOiJuZXciLGl0ZW1feWVhcjokKCJpbnB1dFtuYW1lPSd5ZWFyJ10iLGQpLnZhbCgpLGl0ZW1fbWFrZTokKCJpbnB1dFtuYW1lPSdtYWtlJ10iLGQpLnZhbCgpLGl0ZW1fbW9kZWw6JCgiaW5wdXRbbmFtZT0nbW9kZWwnXSIsZCkudmFsKCksaXRlbV90eXBlOiQoImlucHV0W25hbWU9J3ZlaGljbGVDYXRlZ29yeSddIixkKS52YWwoKX07Y29uc29sZS5sb2coIkdBNCBhc2NUb3BDYXJEZXRhaWxzIiwKYXNjVG9wQ2FyRGV0YWlscyl9CmZ1bmN0aW9uIGQyYXNjUmVzb2x2ZVBhZ2VJZChkKXtkPWQucmVwbGFjZSgvPFwvP1tePl0rKD58JCkvZywiIik7aWYoZC5pbmNsdWRlcygic2k6dmxzIikpcmV0dXJuInNlYXJjaCBpbnZlbnRvcnkiO2lmKGQuaW5jbHVkZXMoIjpzaTp2ZWhpY2xlIGRldGFpbHMiKXx8ZC5pbmNsdWRlcygidmVoaWNsZSIpKXJldHVybiJ2ZHAiO2lmKGQuaW5jbHVkZXMoImN1c3RvbToiKSlyZXR1cm4iYmxvZyI7aWYoZC5pbmNsdWRlcygiZmluYW5jZSIpKXJldHVybiJjcmVkaXQiO2lmKGQuaW5jbHVkZXMoInNlcnZpY2U6cmVxdWVzdCBhcHBvaW50bWVudCIpKXJldHVybiJyZXF1ZXN0IGFwcG9pbnRtZW50IjtpZihkLmluY2x1ZGVzKCJzZXJ2aWNlOm9yZGVyIHBhcnRzIikpcmV0dXJuIm9yZGVyIHBhcnRzIjtpZihkLmluY2x1ZGVzKCJhYm91dCB1czpjb250YWN0IHVzIikpcmV0dXJuImNvbnRhY3QgdXMiO2lmKGQuaW5jbHVkZXMoIlVOS05PV04iKSl7aWYoL2J1aWxkLWFuZC1wcmljZS8udGVzdCh3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpfHwvY29uZmlndXJhdGlvbi1ldC1wcml4Ly50ZXN0KHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkpcmV0dXJuImJ1aWxkIGFuZCBwcmljZSI7CmlmKC9wcmljZS1uZXcvLnRlc3Qod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKXx8L3ByaXgtbmV1Zi8udGVzdCh3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpKXJldHVybiJwcmljZSByZXF1ZXN0IjtpZigvYnJvY2h1cmVzLy50ZXN0KHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkpcmV0dXJuImJyb2NodXJlIjtpZigvYXV0by1qb2JzLy50ZXN0KHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSl8fC9lbXBsb2lzLWF1dG9tb2JpbGUvLnRlc3Qod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKSlyZXR1cm4iam9icyI7aWYoL291cnRlYW0vLnRlc3Qod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKXx8L2VxdWlwZS8udGVzdCh3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpKXJldHVybiJvdXIgdGVhbSJ9cmV0dXJuIGR9CmZ1bmN0aW9uIGQyYXNjUmVzb2x2ZUxlYWRUeXBlKGQsaCl7aD1oLnRvTG93ZXJDYXNlKCk7bGV0IGs9e307Zm9yKHZhciBsIGluIGQpa1tsLnRvTG93ZXJDYXNlKCldPWRbbF07bD0kKCJodG1sIikuYXR0cigibGFuZyIpO2Q9IiI7bD0iZW4iPT1sLnRvTG93ZXJDYXNlKCl8fCJlbmciPT1sLnRvTG93ZXJDYXNlKCk\/IkVOR0xJU0giOiJGUkVOQ0giO3ZvaWQgMCE9PWtbaF0mJnZvaWQgMCE9PWtbaF1bbF0mJihkPWtbaF1bbF0pO3JldHVybiBkfQpmdW5jdGlvbiBEMkFTQyhkKXtkLnBhZ2VJZE9yZz1kLnBhZ2VJZDtkLnBhZ2VJZD1kMmFzY1Jlc29sdmVQYWdlSWQoZC5wYWdlSWQpO2QuZGVhbGVyX25hbWU9JCgiI2hpZGRlbkRlYWxlck5hbWUiKS52YWwoKTt2YXIgaD17c3RvcmVfbmFtZTpkLmRlYWxlcl9uYW1lLnRvTG93ZXJDYXNlKCksb2VtX2NvZGU6ZC5wYUNvZGUsb2VtX2JyYW5kOmQuY2xpZW50LGFmZmlsaWF0aW9uOiIiLGxhbmd1YWdlOmQudXNlckxhbmd1YWdlLGN1cnJlbmN5OiJjYWQiLHBhZ2VfdHlwZTpkLnBhZ2VJZCxpdGVtczpbXSxldmVudHM6W10sbWVhc3VyZW1lbnRfaWRzOlsiRy02R0VaMldXVDNMIl0scGxhdGZvcm1fY3VzdG9tOiIifSxrPXthc2NfY2xpY2tfdG9fY2FsbDpbImEucGhvbmUtbGluayIsImEucGhvbmUtYWN0aW9uIl0sYXNjX2N0YV9pbnRlcmFjdGlvbjoiLnYtY2FyZCBhOm5vdCgucGhvbmUtbGluayk7LmxlZnRfYm94IGE7I2Zvb3RlciBhOyNzY3JhdGNoYW5kc2F2ZV9lbWJlZGRlZF9idG5fMTsjUHVsbG91dF9CdWlsZC1hbmQtUHJpY2U7I25ld1ZkcEZ1bGx3aWR0aFZpZGVvSWZyYW1lIi5zcGxpdCgiOyIpLAphc2NfY3RhX2ludGVyYWN0aW9uOiIjcHJvbW9EaXNjb3ZlckJ1dHRvbiAuZGl2Q2FyUGF5bWVudENhbGN1bGF0b3IgI3NjcmF0Y2hhbmRzYXZlX2VtYmVkZGVkIC5sb2FuQ2FsY3VsYXRvclRyaWdnZXIgLm9mZmVyLWJ0biAuY3RQcm9tbyAudHJhZGVJbkJhcl9idG4iLnNwbGl0KCIgIiksYXNjX2N0YV9pbnRlcmFjdGlvbjpbIi5uZXdWZHBBY3Rpb25zIGEiLCIuY3RhLXRwbCBhIl0sYXNjX2Zvcm1fZW5nYWdlbWVudDpbImlucHV0Iiwic2VsZWN0IiwidGV4dGFyZWEiXSxhc2NfbWVkaWFfaW50ZXJhY3Rpb246WyIjbmV3VmRwRnVsbHdpZHRoVmlkZW9JZnJhbWUiLCJpbWciXSxhc2NfbWVudV9pbnRlcmFjdGlvbjpbIi51cF9tZW51IGEiXSxhc2NfZWxlbWVudF9jb25maWd1cmF0aW9uOlsiLmxhbmd1YWdlQmFyIGEiXX0sbD0hMTtjb25zb2xlLmxvZygiRDJBU0MgTG9hZGluZy4uLiIsZCk7dmFyIGc9bmV3IGZ1bmN0aW9uKCl7dmFyIGU9dGhpcztlLnNldFZlaGljbGVTdGF0dXM9ZnVuY3Rpb24oYil7bGV0IGE9CiQoIiNhc2NfZGlnaXRhbF9kYXRhX2luZm8gaW5wdXRbbmFtZT12ZWhpY2xlU3RhdHVzXSIpO2lmKCIiIT0kKCIjYXNjX2RpZ2l0YWxfZGF0YV9pbmZvIGlucHV0W25hbWU9J21ha2UnXSIpLnZhbCgpKXtsZXQgYz13aW5kb3cubG9jYXRpb24ucGF0aG5hbWUudG9Mb3dlckNhc2UoKTthLnZhbCgvdXNlZC8udGVzdChjKXx8L29jY2FzaW9uLy50ZXN0KGMpPyJVc2VkIjoiTmV3Iil9ITEhPT1iJiZhLnZhbChiKX07ZS5zZXREaWdpdGFsRGF0YT1mdW5jdGlvbihiLGEpe2xldCBjPWUuYWRkRXZlbnQoYixhKTtpZighMT09PWMpcmV0dXJuITE7dm9pZCAwIT09Yy5mb3JtX25hbWUmJihjLmZvcm1fbmFtZT1jLmZvcm1fbmFtZS5yZXBsYWNlKCJtZW5zdWFsaXQ\/cyIsIm1lbnN1YWxpdGVzIiksYy5mb3JtX25hbWU9Yy5mb3JtX25hbWUucmVwbGFjZSgidj9oaWN1bGUiLCJ2ZWhpY3VsZSIpLGMuZm9ybV9uYW1lPWMuZm9ybV9uYW1lLnJlcGxhY2UoIj90YXBlcyIsImV0YXBlcyIpLGMuZm9ybV9uYW1lPQoiRDJDICIrYy5mb3JtX25hbWUpO3ZvaWQgMCE9PWMuZm9ybV9sYW5nJiYoYy5mb3JtX2xhbmc9ZS5zdGFuZGFyZGl6ZUZvcm1MYW5nKGMuZm9ybV9sYW5nKSk7aC5ldmVudHMudW5zaGlmdChKU09OLnN0cmluZ2lmeSh7bmFtZTpiLHBhcmFtczpjfSkpOyJ2ZHAiPT1jLnBhZ2VfdHlwZSYmKGMucGFnZV90eXBlPSJpdGVtIik7InNob3dyb29tIj09Yy5wYWdlX3R5cGUmJihjLnBhZ2VfdHlwZT0iaXRlbSIpOyJzZWFyY2ggaW52ZW50b3J5Ij09Yy5wYWdlX3R5cGUmJihjLnBhZ2VfdHlwZT0iaXRlbWxpc3QiKTtsZXQgZj1lLmdldEV2ZW50VHlwZShiKTtlLnJlcG9ydChmLGIsYyxoKTsiYXNjX2Zvcm1fc3VibWlzc2lvbiI9PWImJihlLnNldERpZ2l0YWxEYXRhKCJhc2NfZm9ybV9zdWJtaXNzaW9uX3NhbGVzIixhKSxlLnNldERpZ2l0YWxEYXRhKCJEMkNfRm9ybV9zdWJtaXNzaW9uX3NhbGVzIixhKSxlLnNldERpZ2l0YWxEYXRhKCJEMkNfTGVhZHMiLGEpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXthc2NMYXN0Q3RhQ2xpY2s9CiExfSwxMjUwKSk7ImFzY19jb21tX3N1Ym1pc3Npb24iPT1iJiZlLnNldERpZ2l0YWxEYXRhKCJhc2NfY29tbV9zdWJtaXNzaW9uX3NhbGVzIixhKX07ZS5nZXRFdmVudFR5cGU9ZnVuY3Rpb24oYil7bGV0IGE9ImVuZ2FnZW1lbnQiO3N3aXRjaChiKXtjYXNlICJhc2NfZm9ybV9zdWJtaXNzaW9uIjpjYXNlICJhc2NfZm9ybV9zdWJtaXNzaW9uX3BhcnRzIjpjYXNlICJhc2NfZm9ybV9zdWJtaXNzaW9uX3NhbGVzX2FwcHQiOmNhc2UgImFzY19mb3JtX3N1Ym1pc3Npb25fc2FsZXMiOmNhc2UgImFzY19mb3JtX3N1Ym1pc3Npb25fc2VydmljZSI6YT0iY29udmVyc2lvbiJ9cmV0dXJuIGF9O2UuYmluZEVsZW1lbnRzPWZ1bmN0aW9uKGIsYSl7JC5lYWNoKGEsZnVuY3Rpb24oYyxmKXskKGYpLmVhY2goZnVuY3Rpb24oKXtjb25zdCBtPSQodGhpcyksbj0iYXNjX2Zvcm1fZW5nYWdlbWVudCI9PWI\/ImJsdXIiOiJjbGljayI7JCh0aGlzKS5vbihuLGZ1bmN0aW9uKCl7Zy5zZXREaWdpdGFsRGF0YShiLAptKX0pfSl9KX07ZS5hZGRFdmVudD1mdW5jdGlvbihiLGEpe3ZhciBjPXtldmVudF9vd25lcjoiZDJjIixwYWdlX3R5cGU6ZC5wYWdlSWQscGFnZV91cmw6d2luZG93LmxvY2F0aW9uLmhyZWYsZXZlbnRfbGFiZWw6YixldmVudF9jYXRlZ29yeTokKCIjYXNjX2RpZ2l0YWxfZGF0YV9pbmZvIGlucHV0W25hbWU9dmVoaWNsZVN0YXR1c10iKS52YWwoKX0sZj0hMSE9PWFzY0xhc3RDdGFDbGljaz9lLkN0YVRleHRQYXJzZXIoYXNjTGFzdEN0YUNsaWNrKToiIjtzd2l0Y2goYil7Y2FzZSAiYXNjX3BhZ2V2aWV3IjpicmVhaztjYXNlICJhc2NfY2xpY2tfdG9fY2FsbCI6Zj1hLmhhc0NsYXNzKCJwaG9uZS1saW5rIik\/YS50ZXh0KCk6YS5hdHRyKCJocmVmIik7Zj1mLnJlcGxhY2UoL1teMC05XCtdL2csIiIpO2M9T2JqZWN0LmFzc2lnbih7fSxjLHtjb21tX3Bob25lX251bWJlcjpmLGRlcGFydG1lbnQ6ZS5nZXREMmNEZXBhcnRtZW50KGEpLGFmZmlsaWF0aW9uOiIifSk7YnJlYWs7Y2FzZSAiYXNjX2N0YV9pbnRlcmFjdGlvbiI6Zj0KZS5DdGFUZXh0UGFyc2VyKGEpO2UuaXNDdGFDbGljayhhKSYmKGFzY0xhc3RDdGFDbGljaz1hKTtjPU9iamVjdC5hc3NpZ24oe30sYyx7ZWxlbWVudF90ZXh0OmYsZWxlbWVudF9vcmRlcjoiIixlbGVtZW50X2NvbG9yOiIiLGVsZW1lbnRfdHlwZTplLmdldEVsZW1lbnRUeXBlKGEpLGV2ZW50X2FjdGlvbjoiIixldmVuX2FjdGlvbl9yZXN1bHQ6YS5hdHRyKCJocmVmIik\/InJlZGlyZWN0IjoicG9wdXAiLGxpbmtfdXJsOmEuYXR0cigiaHJlZiIpP2EuYXR0cigiaHJlZiIpOiIifSk7YnJlYWs7Y2FzZSAiYXNjX2Zvcm1fZW5nYWdlbWVudCI6Zj1lLmdldExlYWRUeXBlRm9ybU5hbWUoYSk7aWYoITE9PT1mKXJldHVybiExO2xldCBtPWUuYXNjVGV4dFJlcGxhY2VyKGEudmFsKCkpLG49ZS5nZXREMmNEZXBhcnRtZW50KGEpO2NvbnNvbGUubG9nKCJEMkFTQyBGb3JtIEVuZ2FnZW1lbnQgRGV0ZWN0ZWQiLGYsbixhKTtjPU9iamVjdC5hc3NpZ24oe30sYyx7ZWxlbWVudF90ZXh0Om0sY29tbV90eXBlOiJmb3JtIiwKY29tbV9zdGF0dXM6InN0YXJ0IixkZXBhcnRtZW50Om4sZm9ybV9uYW1lOmYsZm9ybV90eXBlOmUuZ2V0Rm9ybVR5cGUoYSksZm9ybV9sYW5nOiQoImlucHV0W25hbWU9J2xhbmcnXSIpLnZhbCgpLGZvcm1fZGVwdDpufSk7YnJlYWs7Y2FzZSAiYXNjX2Zvcm1fc3VibWlzc2lvbiI6Yz1PYmplY3QuYXNzaWduKHt9LGMse2NvbW1fdHlwZToiZm9ybSIsY29tbV9vdXRjb21lOiJjbG9zZSIsc3VibWlzc2lvbl9pZDoiIixlbGVtZW50X3RleHQ6InN1Ym1pdCIsY3RhX3RleHQ6ZixjdXN0b21lcl9waG9uZTphLmNvbmZpcm1fcGhvbmVfbnVtYmVyLGN1c3RvbWVyX2VtYWlsOmEuY29uZmlybV9lbWFpbCxkZXBhcnRtZW50OmUuZ2V0RDJjRGVwYXJ0bWVudChhKSxmb3JtX25hbWU6YS5sZWFkVHlwZSxmb3JtX3R5cGU6ZS5nZXRGb3JtVHlwZShhKSxmb3JtX2xhbmc6JCgiaW5wdXRbbmFtZT0nbGFuZyddIikudmFsKCksZm9ybV9kZXB0OmUuZ2V0RDJjRGVwYXJ0bWVudChhKX0pO2JyZWFrO2Nhc2UgImFzY19mb3JtX3N1Ym1pc3Npb25fcGFydHMiOmNhc2UgImFzY19mb3JtX3N1Ym1pc3Npb25fc2FsZXMiOmNhc2UgImFzY19mb3JtX3N1Ym1pc3Npb25fc2FsZXNfYXBwdCI6Y2FzZSAiYXNjX2Zvcm1fc3VibWlzc2lvbl9zZXJ2aWNlIjpjYXNlICJhc2NfZm9ybV9zdWJtaXNzaW9uX3NlcnZpY2VfYXBwdCI6Y2FzZSAiRDJDX0xlYWRzIjpjb25zb2xlLmxvZygiRDJBU0MgRW1haWwgU2VudCAtIERhdGEgMiIsCmEpO2EuY29uZmlybV9waG9uZV9udW1iZXI9dm9pZCAwPT09YS5jb25maXJtX3Bob25lX251bWJlcj8iIjphLmNvbmZpcm1fcGhvbmVfbnVtYmVyO2EuY29uZmlybV9lbWFpbD12b2lkIDA9PT1hLmNvbmZpcm1fZW1haWw\/IiI6YS5jb25maXJtX2VtYWlsO2M9T2JqZWN0LmFzc2lnbih7fSxjLHtjb21tX3R5cGU6ImZvcm0iLGNvbW1fb3V0Y29tZTplLmdldEZvcm1PdXRjb21lKGIpLHN1Ym1pc3Npb25faWQ6IiIsZWxlbWVudF90ZXh0OmUuYXNjVGV4dFJlcGxhY2VyKCJzdWJtaXQiKSxjdGFfdGV4dDpmLGN1c3RvbWVyX3Bob25lOmEuY29uZmlybV9waG9uZV9udW1iZXIsY3VzdG9tZXJfZW1haWw6YS5jb25maXJtX2VtYWlsLGRlcGFydG1lbnQ6ZS5nZXREMmNEZXBhcnRtZW50KGEpLGZvcm1fbmFtZTphLmxlYWRUeXBlLGZvcm1fdHlwZTplLmdldEZvcm1UeXBlKGEpLGZvcm1fbGFuZzokKCJpbnB1dFtuYW1lPSdsYW5nJ10iKS52YWwoKSxmb3JtX2RlcHQ6ZS5nZXREMmNEZXBhcnRtZW50KGEpfSk7CmJyZWFrO2Nhc2UgIkQyQ19Gb3JtX3N1Ym1pc3Npb25fc2FsZXMiOmM9e2Zvcm1fZmlsbGVkOiJZZXMifTticmVhaztjYXNlICJhc2NfZWxlbWVudF9jb25maWd1cmF0aW9uIjpjPXZvaWQgMCE9PWEuZXZlbnRfYWN0aW9uP09iamVjdC5hc3NpZ24oe30sYyx7ZXZlbnRfYWN0aW9uX3Jlc3VsdDphLmV2ZW50X2FjdGlvbl9yZXN1bHQsZXZlbnRfYWN0aW9uOmEuZXZlbnRfYWN0aW9uLHByb2R1Y3RfbmFtZToiIixlbGVtZW50X3N0YXRlOmEuZmlsdGVySW5mby5zdGF0ZSxlbGVtZW50X3R5cGU6InNlYXJjaCI9PWEuZXZlbnRfYWN0aW9uPyJmaWx0ZXIiOiJzb3J0IixlbGVtZW50X3N1YnR5cGU6YS5maWx0ZXJJbmZvLnR5cGUsZWxlbWVudF90aXRsZTphLmZpbHRlckluZm8ubGFiZWwsZWxlbWVudF90ZXh0OmEuZmlsdGVySW5mby50aXRsZSxlbGVtZW50X3ZhbHVlOmEuZmlsdGVySW5mby52YWx1ZSxlbGVtZW50X2NvbG9yOiIiLGVsZW1lbnRfcG9zaXRpb246IiIsZWxlbWVudF9vcmRlcjoiIn0pOgpPYmplY3QuYXNzaWduKHt9LGMse2V2ZW50X2FjdGlvbl9yZXN1bHQ6Imxhbmd1YWdlIixldmVudF9hY3Rpb246ImNsaWNrIixwcm9kdWN0X25hbWU6IiIsZWxlbWVudF9zdGF0ZTowLGVsZW1lbnRfdHlwZToibGFuZ3VhZ2UgdG9nZ2xlLCIsZWxlbWVudF9zdWJ0eXBlOiJidXR0b24iLGVsZW1lbnRfdGl0bGU6ZS5hc2NUZXh0UmVwbGFjZXIoYS50ZXh0KCkpLGVsZW1lbnRfdGV4dDplLmFzY1RleHRSZXBsYWNlcihhLnRleHQoKSksZWxlbWVudF92YWx1ZTplLmFzY1RleHRSZXBsYWNlcihhLnRleHQoKSksZWxlbWVudF9jb2xvcjoiIixlbGVtZW50X3Bvc2l0aW9uOiIiLGVsZW1lbnRfb3JkZXI6IiJ9KTticmVhaztjYXNlICJhc2NfbWVkaWFfaW50ZXJhY3Rpb24iOmM9T2JqZWN0LmFzc2lnbih7fSxjLHtldmVudF9hY3Rpb25fcmVzdWx0OiIiLGFmZmlsaWF0aW9uOiIiLG1lZGlhX3R5cGU6IiIsbGlua191cmw6IiIsY3JlYXRpdmVfbmFtZToiIn0pO2JyZWFrO2Nhc2UgImFzY19tZW51X2ludGVyYWN0aW9uIjpjPQpPYmplY3QuYXNzaWduKHt9LGMse2VsZW1lbnRfdGV4dDplLmFzY1RleHRSZXBsYWNlcihhLnRleHQoKSksZWxlbWVudF9zdWJ0eXBlOiJtZWdhX21lbnUiLGVsZW1lbnRfdHlwZTphLmNsb3Nlc3QoImxpIikuYXR0cigiZGF0YS1pZCIpLGV2ZW50X2FjdGlvbjoiY2xpY2sifSk7YnJlYWs7Y2FzZSAiYXNjX3JldGFpbF9wcm9jZXNzIjpjPU9iamVjdC5hc3NpZ24oe30sYyx7Zmxvd19uYW1lOiJmaW5hbmNlIixlbGVtZW50X3RpdGxlOiIiLGZsb3dfb3V0Y29tZToicHJvY2VlZCIsaXRlbV9wYXltZW50OiJmaW5hbmNlIixmbG93X3N0YWdlOiIifSk7YnJlYWs7Y2FzZSAiYXNjX3NwZWNpYWxfb2ZmZXIiOmM9T2JqZWN0LmFzc2lnbih7fSxjLHtwcm9tb3Rpb25fbmFtZTokKCJoMjpmaXJzdC1jaGlsZCIsYSkubGVuZ3RoP2UuYXNjVGV4dFJlcGxhY2VyKCQoImgyOmZpcnN0LWNoaWxkIixhKS50ZXh0KCkpOiJEZWFsZXIgUHJvbW8iLGRlcGFydG1lbnQ6ZS5nZXREMmNEZXBhcnRtZW50KGEpLApwcm9kdWN0X25hbWU6IiIsZWxlbWVudF9wb3NpdGlvbjoiZmxvYXRpbmciLGZsb3dfb3V0Y29tZToic3RhcnQifSk7YnJlYWs7Y2FzZSAiYXNjX2NvbW1fc3VibWlzc2lvbiI6Yz1PYmplY3QuYXNzaWduKHt9LGMse2NvbW1fdHlwZToiY2hhdCIsYWZmaWxpYXRpb246Im5hdGl2ZSIsZGVwYXJ0bWVudDplLmdldEQyY0RlcGFydG1lbnQoYSksYWZmaWxpYXRpb25faWQ6Im11bHRpLXVzZXIiLGNvbW1fc3RhdHVzOiJjcm1fdXBkYXRlIn0pO2JyZWFrO2Nhc2UgImFzY19jb21tX3N1Ym1pc3Npb25fc2FsZXMiOmM9T2JqZWN0LmFzc2lnbih7fSxjLHtjb21tX3R5cGU6ImNoYXQiLGFmZmlsaWF0aW9uOiJuYXRpdmUiLGRlcGFydG1lbnQ6ZS5nZXREMmNEZXBhcnRtZW50KGEpLGFmZmlsaWF0aW9uX2lkOiJtdWx0aS11c2VyIixjb21tX3N0YXR1czoiY3JtX3VwZGF0ZSIsZWxlbWVudF9wb3NpdGlvbjoicG9wLXVwIn0pO2JyZWFrO2RlZmF1bHQ6cmV0dXJuIGNvbnNvbGUubG9nKCJEMkFTQyBFUlJPUihDT0RFOjAwMSkiLApiLGEpLCExfSExIT09YXNjVG9wQ2FyRGV0YWlscyYmIkQyQ19Gb3JtX3N1Ym1pc3Npb25fc2FsZXMiIT1iJiYoYz1PYmplY3QuYXNzaWduKHt9LGMsYXNjVG9wQ2FyRGV0YWlscykpO2NvbnNvbGUubG9nKCJHQTQgRmluYWwgRGlnaXRhbCBEYXRhIixjKTtyZXR1cm4gY307ZS5pc0N0YUNsaWNrPWZ1bmN0aW9uKGIpe2xldCBhPSExO2IgaW5zdGFuY2VvZiBqUXVlcnkmJigwPGIuY2xvc2VzdCgiLm5ld1ZkcEFjdGlvbnMiKS5sZW5ndGgmJihhPSEwKSwwPGIuY2xvc2VzdCgiLmN0YS10cGwiKS5sZW5ndGgmJihhPSEwKSwicHJvbW9EaXNjb3ZlckJ1dHRvbiI9PWIuYXR0cigiaWQiKSYmKGE9ITApLGIuaGFzQ2xhc3MoImRpdkNhclBheW1lbnRDYWxjdWxhdG9yIikmJihhPSEwKSwwPGIuY2xvc2VzdCgiLmRpdkNhclBheW1lbnRDYWxjdWxhdG9yIikubGVuZ3RoJiYoYT0hMCksMDxiLmNsb3Nlc3QoIiNzY3JhdGNoYW5kc2F2ZV9lbWJlZGRlZCIpLmxlbmd0aCYmKGE9ITApLCJzY3JhdGNoYW5kc2F2ZV9lbWJlZGRlZCI9PQpiLmF0dHIoImlkIikmJihhPSEwKSxiLmhhc0NsYXNzKCJsb2FuQ2FsY3VsYXRvclRyaWdnZXIiKSYmKGE9ITApLDA8Yi5jbG9zZXN0KCIubG9hbkNhbGN1bGF0b3JUcmlnZ2VyIikubGVuZ3RoJiYoYT0hMCksYi5oYXNDbGFzcygiY3RQcm9tbyIpJiYoYT0hMCksMDxiLmNsb3Nlc3QoIi5jdFByb21vIikubGVuZ3RoJiYoYT0hMCksYi5oYXNDbGFzcygib2ZmZXItYnRuIikmJihhPSEwKSwwPGIuY2xvc2VzdCgiLm9mZmVyLWJ0biIpLmxlbmd0aCYmKGE9ITApLGIuaGFzQ2xhc3MoInRyYWRlSW5CYXJfYnRuIikmJihhPSEwKSwwPGIuY2xvc2VzdCgiLnRyYWRlSW5CYXJfYnRuIikubGVuZ3RoJiYoYT0hMCksIlRSQURFSU4iPT1iLmF0dHIoImRhdGEtaWQiKSYmKGE9ITApKTtyZXR1cm4gYX07ZS5zdGFuZGFyZGl6ZUZvcm1MYW5nPWZ1bmN0aW9uKGIpe3ZvaWQgMD09PWImJiQoImh0bWwiKS5hdHRyKCJsYW5nIik7Yj1iLnRvTG93ZXJDYXNlKCk7ImVuZyI9PWImJihiPSJlbiIpOyJlbmdsaXNoIj09CmImJihiPSJlbiIpOyJmcm4iPT1iJiYoYj0iZnIiKTsiZnJlbmNoIj09YiYmKGI9ImZyIik7ImVuIiE9YiYmImZyIiE9YiYmKGI9ImVuIik7cmV0dXJuIGJ9O2UuQ3RhVGV4dFBhcnNlcj1mdW5jdGlvbihiKXtkLnBhZ2VJZC50b0xvd2VyQ2FzZSgpO2xldCBhPXdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS50b0xvd2VyQ2FzZSgpLGM9IiI7aWYoL25ld1wvaW52ZW50b3J5XC9zZWFyY2gvLnRlc3QoYSl8fC9uZXVmc1wvaW52ZW50YWlyZVwvcmVjaGVyY2hlLy50ZXN0KGEpKWMrPSJEMkMgQ1RBTSAtIE5ldyBJbnZlbnRvcnkgU1JQOiAiO2Vsc2UgaWYoL25ld1wvaW52ZW50b3J5Ly50ZXN0KGEpfHwvbmV1ZnNcL2ludmVudGFpcmUvLnRlc3QoYSkpYys9IkQyQyBDVEFNIC0gTmV3IEludmVudG9yeSBWRFA6ICI7ZWxzZSBpZigvbmV3Ly50ZXN0KGEpfHwvbmV1ZnMvLnRlc3QoYSkpYys9IkQyQyBDVEFNIC0gTmV3IFNob3dSb29tIFZEUDogIjtlbHNlIGlmKC91c2VkLy50ZXN0KGEpfHwvb2NjYXNpb24vLnRlc3QoYSkpYys9CiJEMkMgQ1RBTSAtIFVzZWQgSW52ZW50b3J5IFZEUDogIjtyZXR1cm4gYytlLmFzY1RleHRSZXBsYWNlcihiLnRleHQoKSl9O2UuZ2V0TGVhZFR5cGVGb3JtTmFtZT1mdW5jdGlvbihiKXtsZXQgYT0wPGIuY2xvc2VzdCgiZm9ybSIpLmxlbmd0aD9iLmNsb3Nlc3QoImZvcm0iKS5hdHRyKCJpZCIpOmIuYXR0cigiaWQiKSxjPSExO2QucGFnZUlkLmluY2x1ZGVzKCJvcmRlciBwYXJ0cyIpJiYoYz0iUGFydHNSZXF1ZXN0Iik7ZC5wYWdlSWQuaW5jbHVkZXMoInRlc3QgZHJpdmUiKSYmKGM9IlRlc3REcml2ZSIpO2QucGFnZUlkLmluY2x1ZGVzKCJwcmljZSByZXF1ZXN0IikmJihjPSJQcmljZVJlcXVlc3QiKTtkLnBhZ2VJZC5pbmNsdWRlcygiYnJvY2h1cmUiKSYmKGM9IkJyb2NodXJlc1JlcXVlc3QiKTtkLnBhZ2VJZC5pbmNsdWRlcygicmVxdWVzdCBhcHBvaW50bWVudCIpJiYoYz0iU2VydmljZVJlcXVlc3QiKTtkLnBhZ2VJZC5pbmNsdWRlcygidGlyZXMiKSYmKGM9IlRpcmVzUmVxdWVzdCIpOwpkLnBhZ2VJZC5pbmNsdWRlcygiYm9keSBzaG9wIikmJihjPSJCb2R5U2hvcCIpO2QucGFnZUlkLmluY2x1ZGVzKCJyZWNhbGwiKSYmKGM9IlJlY2FsbHMiKTtpZihiIGluc3RhbmNlb2YgalF1ZXJ5JiYoMDxiLmNsb3Nlc3QoIi5kaXZTcGFuRmlsdGVycyIpLmxlbmd0aHx8MDxiLmNsb3Nlc3QoIiNiYW5uZXJfc2VhcmNoX2Jhcl9jb250YWluZXIiKS5sZW5ndGgpKXJldHVybiExO2I9ZS5mb3JtRGF0YUJ5SWQoYik7cmV0dXJuITEhPT1iP2IuZm9ybU5hbWU6ITEhPT1jP2QyYXNjUmVzb2x2ZUxlYWRUeXBlKGQuZm9ybU1hcCxjKToiVU5LTk9XTjogIithfTtlLmZvcm1EYXRhQnlJZD1mdW5jdGlvbihiKXtpZihiIGluc3RhbmNlb2YgalF1ZXJ5KXtsZXQgYT0wPGIuY2xvc2VzdCgiZm9ybSIpLmxlbmd0aD9iLmNsb3Nlc3QoImZvcm0iKS5hdHRyKCJpZCIpOmIuYXR0cigiaWQiKTt2b2lkIDA9PT1hJiYoMDxiLmNsb3Nlc3QoIiNjb250YWN0cG9wdXAiKS5sZW5ndGgmJihhPSJSZXF1ZXN0IGZvciBjb250YWN0IiksCjA8Yi5jbG9zZXN0KCIuY3JlZGl0U2NvcmVJbnB1dCIpLmxlbmd0aCYmKGE9ImNyZWRpdFNjb3JlIiksMDxiLmNsb3Nlc3QoIiNzY3JhdGNoQW5kU2F2ZVBvcHVwQ29udGFpbmVyX2JucCIpLmxlbmd0aCYmKGE9IlJlYmF0ZUNvdXBvbk5ld0JOUCIpLDA8Yi5jbG9zZXN0KCIuc2NyYXRjaGFuZHNhdmVfdGV4dCIpLmxlbmd0aCYmKGE9IlJlYmF0ZUNvdXBvbiIpKTtpZihkLnBhZ2VJZC5pbmNsdWRlcygic2hvd3Jvb206Y29tcGFyZSIpJiZ2b2lkIDAhPT1hJiZhLmluY2x1ZGVzKCJmZWF0dXJlZFByb2R1Y3RfIikpcmV0dXJue2Zvcm1UeXBlOiJyZXNlYXJjaCIsZm9ybU5hbWU6IkNvbXBhcmVGb3JtIn07aWYoMDxiLmNsb3Nlc3QoIiNtdWx0aWZvcm1fZW1iZWRkZWQiKS5sZW5ndGgmJjA8Yi5jbG9zZXN0KCIjbXVsdGlmb3JtX2VtYmVkZGVkIikuZmluZCgiLm11bHRpZm9ybV9lbWJlZGRlZF9zdGVwMSIpLmxlbmd0aClyZXR1cm57Zm9ybVR5cGU6ImNvbnN1bWVyX2NvbnRhY3QiLGZvcm1OYW1lOiJEaXNjb3Zlck9mZmVyIn07CnN3aXRjaChhKXtjYXNlICJtaW5pZm9ybSI6Y2FzZSAiZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSI6cmV0dXJue2Zvcm1UeXBlOiJmaW5hbmNlX2NyZWRpdCIsZm9ybU5hbWU6IkNyZWRpdE11bHRpc3RlcFJlcXVlc3QifTtjYXNlICJsb2FuLWZvcm0iOnJldHVybntmb3JtVHlwZToiZmluYW5jZV9jcmVkaXQiLGZvcm1OYW1lOiJQcmljZVJlcXVlc3QifTtjYXNlICJmb3JtRGVhbGVyQXBwb2ludG1lbnQiOnJldHVybntmb3JtVHlwZToiY29uc3VtZXJfY29udGFjdCIsZm9ybU5hbWU6IkRlYWxlckFwcG9pbnRtZW50In07Y2FzZSAiU2xpZGVXaWRnZXRGb3JtIjpyZXR1cm57Zm9ybVR5cGU6ImNvbnN1bWVyX2NvbnRhY3QiLGZvcm1OYW1lOiJTbGlkZVdpZGdldEZvcm0ifTtjYXNlICJjcmVkaXRTY29yZSI6cmV0dXJue2Zvcm1UeXBlOiJmaW5hbmNlX2NyZWRpdCIsZm9ybU5hbWU6IkNyZWRpdFJlcXVlc3RfU2hvcnQifTtjYXNlICJSZWJhdGVDb3Vwb25OZXdCTlAiOnJldHVybntmb3JtVHlwZToicHJlLW9yZGVyIiwKZm9ybU5hbWU6IlJlYmF0ZUNvdXBvbk5ld0JOUCJ9O2Nhc2UgImJhbm5lcl9zZWFyY2hfYmFyX3NlbGVjdF9ib2R5IjpyZXR1cm57Zm9ybVR5cGU6ImNvbnN1bWVyX2NvbnRhY3QiLGZvcm1OYW1lOiJCYW5uZXJGb3JtIn07Y2FzZSAicGF5bWVudENhbGN1bGF0b3JJbnRlcnZhbCI6Y2FzZSAicGF5bWVudENhbGN1bGF0b3JUcmltU2VsZWN0IjpjYXNlICJwYXltZW50Q2FsY3VsYXRvckttQWxsb3dhbmNlIjpjYXNlICJwYXltZW50Q2FsY3VsYXRvckRvd25QYXltZW50IjpyZXR1cm57Zm9ybVR5cGU6ImZpbmFuY2VfY3JlZGl0Iixmb3JtTmFtZToiTW9udGhseVBheW1lbnRzIn07Y2FzZSAiY29udGFjdF9mb3JtIjpjYXNlICJjb250YWN0X2Zvcm0yIjpjYXNlICJjb250YWN0X2Zvcm0zIjpjYXNlICJSZXF1ZXN0IGZvciBjb250YWN0IjpyZXR1cm57Zm9ybVR5cGU6ImNvbnN1bWVyX2NvbnRhY3QiLGZvcm1OYW1lOiJDb250YWN0UmVxdWVzdCJ9O2Nhc2UgInF1aWNrRW1haWxGb3JtIjpjYXNlICJtYWlsRXhwcmVzc1JlcXVlc3QiOnJldHVybntmb3JtVHlwZToiY29uc3VtZXJfY29udGFjdCIsCmZvcm1OYW1lOiJRdWlja0VtYWlsIn07Y2FzZSAidHJhZGluTWFrZSI6Y2FzZSAidHJhZGluWWVhciI6Y2FzZSAidHJhZGluTW9kZWwiOmNhc2UgInRyYWRpblRyaW0iOmNhc2UgInRyYWRlSW5CYXJQb3B1cEZvcm0iOmNhc2UgIlNlbGxDYXJGb3JtIjpyZXR1cm57Zm9ybVR5cGU6InJlc2VhcmNoIixmb3JtTmFtZToiUHJpY2VWZWhpY2xlIn19aWYoMDxiLmNsb3Nlc3QoIi5zY3JhdGNoYm9keSIpLmxlbmd0aHx8MDxiLmNsb3Nlc3QoIi5zY3JhdGNoYm9keTEiKS5sZW5ndGh8fDA8Yi5jbG9zZXN0KCIuc2NyYXRjaGJvZHkyIikubGVuZ3RofHwwPGIuY2xvc2VzdCgiLnNjcmF0Y2hib2R5MyIpLmxlbmd0aClyZXR1cm57Zm9ybVR5cGU6ImNvbnN1bWVyX2NvbnRhY3QiLGZvcm1OYW1lOiJSZWJhdGVDb3Vwb25OZXcifTtpZigwPGIuY2xvc2VzdCgiI21vbnRobHlQYXltZW50c1BvcHVwQ29udGFpbmVyIikubGVuZ3RoKXJldHVybntmb3JtVHlwZToiZmluYW5jZV9jcmVkaXQiLGZvcm1OYW1lOiJNb250aGx5UGF5bWVudHMifX1yZXR1cm4hMX07CmUuY29tbVN1YkRhdGFQYXJzZXI9ZnVuY3Rpb24oYixhKXtsZXQgYz17Zm9ybV9uYW1lOiIiLGZvcm1fdHlwZToiIixmb3JtX2RlcHQ6IiIsZm9ybV9sYW5nOiIifTsvYXNjX2NvbW1fc3VibWlzc2lvbi8udGVzdChiKSYmIlNsaWRlV2lkZ2V0Rm9ybSI9PWEuY2xvc2VzdCgiZm9ybSIpLmF0dHIoImlkIikmJihjLmZvcm1fbmFtZT0iTGVhZDogQ2hhdCBTdWJtaXNzaW9uIik7cmV0dXJuIGN9O2UuYXNjVGV4dFJlcGxhY2VyPWZ1bmN0aW9uKGIpe2I9Yi5yZXBsYWNlKC8oXHJcbnxcbnxccnxcdCkvZ20sIiIpO2I9Yi5yZXBsYWNlKC88XC8\/W14+XSsoPnwkKS9nLCIiKTtyZXR1cm4gYj1iLnRyaW0oKX07ZS5oYXNoVGV4dD1mdW5jdGlvbihiKXtiPShuZXcgVGV4dEVuY29kZXIpLmVuY29kZShiLnRyaW0oKS50b0xvd2VyQ2FzZSgpKTtyZXR1cm4gY3J5cHRvLnN1YnRsZS5kaWdlc3QoIlNIQS0yNTYiLGIpLnRoZW4oYT0+QXJyYXkuZnJvbShuZXcgVWludDhBcnJheShhKSkubWFwKGM9PgpjLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCIwIikpLmpvaW4oIiIpKX07ZS5nZXRGb3JtT3V0Y29tZT1mdW5jdGlvbihiKXtzd2l0Y2goYil7Y2FzZSAiYXNjX2Zvcm1fc3VibWlzc2lvbl9wYXJ0cyI6Y2FzZSAiYXNjX2Zvcm1fc3VibWlzc2lvbl9zYWxlcyI6Y2FzZSAiYXNjX2Zvcm1fc3VibWlzc2lvbl9zZXJ2aWNlIjpjYXNlICJEMkNfTGVhZHMiOnJldHVybiJjcm1fdXBkYXRlIjtjYXNlICJhc2NfZm9ybV9zdWJtaXNzaW9uX3NhbGVzX2FwcHQiOmNhc2UgImFzY19mb3JtX3N1Ym1pc3Npb25fc2VydmljZV9hcHB0IjpyZXR1cm4iYXBwdF9ib29rZWQifX07ZS5nZXREMmNEZXBhcnRtZW50PWZ1bmN0aW9uKGIpe2xldCBhPWQucGFnZUlkLnRvTG93ZXJDYXNlKCksYz13aW5kb3cubG9jYXRpb24ucGF0aG5hbWUudG9Mb3dlckNhc2UoKSxmPSJPVEhFUiI7L25ldWZzLy50ZXN0KGMpJiYoZj0iTkVXIik7L25ldy8udGVzdChjKSYmKGY9Ik5FVyIpOy9vY2Nhc2lvbi8udGVzdChjKSYmCihmPSJVU0VEIik7L3VzZWQvLnRlc3QoYykmJihmPSJVU0VEIik7YS5pbmNsdWRlcygiZmluYW5jZSIpJiYoZj0iRklOQU5DRSIpO2EuaW5jbHVkZXMoInJlcXVlc3QgYXBwb2ludG1lbnQiKSYmKGY9IlNFUlZJQ0UiKTthLmluY2x1ZGVzKCJwYXJ0cyIpJiYoZj0iU0VSVklDRSIpO2EuaW5jbHVkZXMoInRpcmVzIikmJihmPSJTRVJWSUNFIik7YS5pbmNsdWRlcygiYm9keSBzaG9wIikmJihmPSJTRVJWSUNFIik7YS5pbmNsdWRlcygiZmluYW5jZSBkZXBhcnRtZW50IikmJihmPSJGSU5BTkNFIik7YS5pbmNsdWRlcygiY3JlZGl0IikmJihmPSJGSU5BTkNFIik7YS5pbmNsdWRlcygiY29udGFjdCB1cyIpJiYoZj0iU0FMRVMiKTthLmluY2x1ZGVzKCJyZWNhbGwiKSYmKGY9IlNFUlZJQ0UiKTtiIGluc3RhbmNlb2YgalF1ZXJ5JiYoMDxiLmNsb3Nlc3QoIiNmaW5hbmNlTXVsdGlzdGVwUG9wdXBDb250YWluZXIiKS5sZW5ndGgmJihmPSJGSU5BTkNFIiksImZpbmFuY2VNdWx0aXN0ZXBQb3B1cENvbnRhaW5lciI9PQpiLmF0dHIoImlkIikmJihmPSJGSU5BTkNFIiksMDxiLmNsb3Nlc3QoIiNTZWxsQ2FyRm9ybSIpLmxlbmd0aCYmKGY9IkZJTkFOQ0UiKSx2b2lkIDAhPT1iLmF0dHIoImRhdGEtZGVwYXJ0bWVudCIpJiYoZj1iLmF0dHIoImRhdGEtZGVwYXJ0bWVudCIpKSk7cmV0dXJuIGZ9O2UuZ2V0Rm9ybVR5cGU9ZnVuY3Rpb24oYil7bGV0IGE9ZC5wYWdlSWQudG9Mb3dlckNhc2UoKTtpZihhLmluY2x1ZGVzKCJyZXF1ZXN0IGFwcG9pbnRtZW50IikpcmV0dXJuInNlcnZpY2VfYXBwb2ludG1lbnQiO2lmKGEuaW5jbHVkZXMoIm9yZGVyIHBhcnRzIil8fGEuaW5jbHVkZXMoIm9yZGVyIHRpcmVzIikpcmV0dXJuInBhcnRzIjtpZihhLmluY2x1ZGVzKCJib2R5IHNob3AiKSlyZXR1cm4iYm9keV9zaG9wIjtpZihhLmluY2x1ZGVzKCJmaW5hbmNlIGRlcGFydG1lbnQiKXx8YS5pbmNsdWRlcygiY3JlZGl0IikpcmV0dXJuImNyZWRpdCI7Yj1lLmZvcm1EYXRhQnlJZChiKTtyZXR1cm4hMSE9PWI\/Yi5mb3JtVHlwZToKImNvbnN1bWVyX2NvbnRhY3QifTtlLmdldEVsZW1lbnRUeXBlPWZ1bmN0aW9uKGIpe3JldHVybiJ0b3BCYW5uZXJJbWFnZSI9PWIuYXR0cigiaWQiKXx8MDxiLmNsb3Nlc3QoIiN0b3BCYW5uZXJJbWFnZSIpLmxlbmd0aD8iYmFubmVyIjowPGIuY2xvc2VzdCgiLmhlYWRlci1pbWFnZS13cmFwcGVyIikubGVuZ3RoPyJoZWFkZXIiOjA8Yi5jbG9zZXN0KCIubGFuZ3VhZ2VCYXIiKS5sZW5ndGg\/ImFjY2Vzc2liaWxpdHlfdG9vbCI6MDxiLmhhcygiLmRlYWxlck1hcExpbmsiKS5sZW5ndGg\/Im1hcCI6MDxiLmNsb3Nlc3QoIi5zbGlkZXMiKS5sZW5ndGg\/ImdhbGxlcnkiOjA8Yi5jbG9zZXN0KCIudXNlZFZkcEFjdGlvbnMiKS5sZW5ndGg\/ImRpZ2l0YWxfcmV0YWlsaW5nX3Rvb2wiOiJQdWxsb3V0X0J1aWxkLWFuZC1QcmljZSI9PWIuYXR0cigiLnVzZWRWZHBBY3Rpb25zIik\/ImJhbm5lciI6Im5ld1ZkcEZ1bGx3aWR0aFZpZGVvSWZyYW1lIj09Yi5hdHRyKCIudXNlZFZkcEFjdGlvbnMiKT8KInZpZGVvIjoiZGlnaXRhbF9yZXRhaWxpbmcifTtlLmdldFZlaGljbGVKU09OPWZ1bmN0aW9uKGIsYSl7JC5nZXQoIi9qcy9qc29uLyIrYisiLmpzb24iKS5kb25lKGZ1bmN0aW9uKGMpe2MuaXRlbV9udW1iZXI9YjtpZigiIiE9YSYmdm9pZCAwIT09YSl3aW5kb3dbYV0oYyk7cmV0dXJuIGN9KX07ZS5yZXBvcnQ9ZnVuY3Rpb24oYixhLGMsZil7aWYodm9pZCAwPT09ZC5zdWJfZ2E0fHwiTiI9PWQuc3ViX2dhNCljPU9iamVjdC5hc3NpZ24oe30sYyx7c2VuZF90bzoiRy1aNVE4WjVDN0tGIn0pO2lmKCEwPT09bCYmImFzY19mb3JtX2VuZ2FnZW1lbnQiPT1hKXJldHVybiExO2d0YWcoImV2ZW50IixhLGMpO2w9ITA7c2V0VGltZW91dChmdW5jdGlvbigpe2w9ITF9LDFFMyl9O3JldHVybiBlfTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Zy5zZXRWZWhpY2xlU3RhdHVzKCExKTsidmRwIj09ZC5wYWdlSWQmJigwPCQoIiN0b3BjYXJpZCIpLmxlbmd0aCYmIiIhPSQoIiN0b3BjYXJpZCIpLnZhbCgpJiYKIjAiIT0kKCIjdG9wY2FyaWQiKS52YWwoKT9nLmdldFZlaGljbGVKU09OKCQoIiN0b3BjYXJpZCIpLnZhbCgpLCJhc2NVcGRhdGVUb3BDYXJEYXRhIik6YXNjVXBkYXRlVG9wQ2FyRGF0YSghMSkpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXskKGZ1bmN0aW9uKGIpe2cuc2V0RGlnaXRhbERhdGEoImFzY19wYWdldmlldyIse30pfSl9LDFFMyk7JC5lYWNoKGssZnVuY3Rpb24oYixhKXtnLmJpbmRFbGVtZW50cyhiLGEpfSwhMSk7JCgiLnJldmVhbC1tb2RhbCIpLm9uZSgicG9wdXBpemVyLm9uT3BlbiIsZnVuY3Rpb24oYil7Zy5zZXREaWdpdGFsRGF0YSgiYXNjX3NwZWNpYWxfb2ZmZXIiLCQoYi50YXJnZXQpKTtnLmJpbmRFbGVtZW50cygiYXNjX2Zvcm1fZW5nYWdlbWVudCIsWyQoYi50YXJnZXQpLmZpbmQoImZvcm0gaW5wdXQsIGZvcm0gc2VsZWN0LCBmb3JtIHRleHRhcmVhIildKX0pO3NldFRpbWVvdXQoKCk9PnskKCJhW2RhdGEtbGVhZC10cmlnZ2VyPSdEZWFsZXJBcHBvaW50bWVudCddIikub24oImNsaWNrIiwKZnVuY3Rpb24oKXtnLnNldERpZ2l0YWxEYXRhKCJhc2Nfc3BlY2lhbF9vZmZlciIsJCgiI21vZGFsRGVhbGVyQXBwb2ludG1lbnQiKSl9KTskKCJhW2RhdGEtbGVhZC10cmlnZ2VyPSdQYXlwYWxQYXltZW50J10iKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7Zy5zZXREaWdpdGFsRGF0YSgiYXNjX3NwZWNpYWxfb2ZmZXIiLCQoIiNtb2RhbFBheXBhbFBheW1lbnQiKSl9KX0sMUUzKTswPCQoIiNmbHRTb3J0SWQiKS5sZW5ndGgmJihhc2NMYXN0U2VhcmNoRmlsdGVyU29ydD0kKCIjZmx0U29ydElkIC5kaXZBY3Rpb25XcmFwcGVyIC5kaXZMYWJlbCIpLmh0bWwoKSk7aWYoInVuZGVmaW5lZCIhPT10eXBlb2Ygd2luZG93LkFic3RyYWN0VXNlZFNycE9iamVjdCl7dmFyIGU9bmV3IEFic3RyYWN0VXNlZFNycE9iamVjdCh7bmFtZToiZDJjX2hvbmRhX2d0bSJ9KTtlLmFkZFVzZWRTcnBFdmVudE9ic2VydmVyKCJwcm94eSIsZnVuY3Rpb24oYil7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgYi5jbWQmJgoicmVxdWVzdCI9PT1iLmNtZCYmITEhPT1iLmRhdGEpe2xldCBhPWIuZGF0YS5maWx0ZXJTdGF0ZS5maWx0ZXJTZWFyY2g7c2V0VGltZW91dChmdW5jdGlvbigpe2EucmVzdWx0cz1iLmRhdGEuZmlsdGVyU3RhdGUuY291bnRTZWFyY2hSZXN1bHRzO2EudHlwZWRTZWFyY2g9Yi5kYXRhLmZpbHRlclN0YXRlLnR5cGVkU2VhcmNoO2EuZXZlbnRfYWN0aW9uX3Jlc3VsdD0ic2VhcmNoIjthLmV2ZW50X2FjdGlvbj0ic2VhcmNoIjthLmZpbHRlckluZm89YXNjTGFzdEZpbHRlckNsaWNrO2FzY0xhc3RGaWx0ZXJDbGljaz0hMTtPYmplY3Qua2V5cyhhKS5pbmNsdWRlcygic29ydCIpJiZhc2NMYXN0U2VhcmNoRmlsdGVyU29ydCE9YS5zb3J0WzBdJiYoYXNjTGFzdFNlYXJjaEZpbHRlclNvcnQ9YS5zb3J0WzBdLGEuZXZlbnRfYWN0aW9uPSJzb3J0Iik7Zy5zZXREaWdpdGFsRGF0YSgiYXNjX2VsZW1lbnRfY29uZmlndXJhdGlvbiIsYSl9LDEwMCl9fSk7ZS5pbml0VXNlZFNycE9ic2VydmVyKCl9JChkb2N1bWVudCkub24oInVzZWRTcnBGaWx0ZXJzLm9uQ2hhbmdlIiwKImJvZHkiLChiLGEpPT57Yj0kKCIjIithLmlkKTtiPSQoIi5mbHRUaXRsZSIsYikudGV4dCgpO2xldCBjPWEudmFsdWU7dmFyIGY9IiI7bGV0IG09InRleHRfc2VhcmNoIjthLnZhbHVlJiZhLnZhbHVlLnRvU3RyaW5nKCkuaW5jbHVkZXMoIjo6Iik\/KG09ImJ1dHRvbiIsZj1hLnZhbHVlLnNwbGl0KCI6OiIpLGEudmFsdWU9ZlswXSxmPWZbMV0pOmEudmFsdWUmJmEudmFsdWUudG9TdHJpbmcoKS5pbmNsdWRlcygiLCIpJiYobT0icmFuZ2Vfc2xpZGVyIik7YXNjTGFzdEZpbHRlckNsaWNrPXtpZDphLmlkLHRpdGxlOmEubGFiZWwsdmFsdWU6YS52YWx1ZSxvcmdfdmFsdWU6YyxzdGF0ZTpmLHR5cGU6bSxsYWJlbDpifX0pOyQoImJvZHkiKS5vbigiZW1haWxIYW5kbGVyLmVtYWlsU2VudCIsZnVuY3Rpb24oYixhKXtjb25zb2xlLmxvZygiRDJBU0MgRW1haWwgU2VudCBUcmlnZ2VyIixiLGEpO2lmKHZvaWQgMCE9PWEuZGV0YWlsLmxlYWRUeXBlKXtiPWEuZGV0YWlsLmxlYWRUeXBlO2lmKGIuaW5jbHVkZXMoIkxlYWQ6IFJlcXVlc3QgZm9yIGZpbmFuY2luZyAoTXVsdGlzdGVwKSIpfHwKYi5pbmNsdWRlcygiTGVhZCA6IERlbWFuZGUgZGUgZmluYW5jZW1lbnQgKFBsdXMiKSlyZXR1cm4hMTtiLmluY2x1ZGVzKCJMZWFkIDogRGVtYW5kZSBkZSB2YWxldXIiKSYmKGI9IkxlYWQgOiBEZW1hbmRlIGRlIHZhbGV1ciBkJ2VjaGFuZ2UiKTtiLnRyaW0oKTthLmRldGFpbC5sZWFkVHlwZT1ifXZvaWQgMCE9PWEuZGV0YWlsLmxlYWRUeXBlJiYiIiE9YS5kZXRhaWwubGVhZFR5cGV8fHZvaWQgMD09PWEuZGV0YWlsLm1haWxJZHx8KGEuZGV0YWlsLmxlYWRUeXBlPWQyYXNjUmVzb2x2ZUxlYWRUeXBlKGQuZm9ybU1hcCxhLmRldGFpbC5tYWlsSWQpKTthLmRldGFpbC5sZWFkTmFtZUFycj1kLmZvcm1NYXA7dm9pZCAwPT09YS5kZXRhaWwuY29uZmlybV9lbWFpbCYmKGEuZGV0YWlsLmNvbmZpcm1fZW1haWw9IiIpO3ZvaWQgMD09PWEuZGV0YWlsLmNvbmZpcm1fcGhvbmVfbnVtYmVyJiYoYS5kZXRhaWwuY29uZmlybV9waG9uZV9udW1iZXI9IiIpO1Byb21pc2UuYWxsKFtnLmhhc2hUZXh0KGEuZGV0YWlsLmNvbmZpcm1fZW1haWwpLApnLmhhc2hUZXh0KGEuZGV0YWlsLmNvbmZpcm1fcGhvbmVfbnVtYmVyKV0pLnRoZW4oYz0+e3ZhciBbZixtXT1jO2EuZGV0YWlsLmNvbmZpcm1fZW1haWw9ZjthLmRldGFpbC5jb25maXJtX3Bob25lX251bWJlcj1tfSk7dm9pZCAwIT09YXNjVG9wQ2FyRGV0YWlscy5tYWtlJiYiIiE9YXNjVG9wQ2FyRGV0YWlscy5tYWtlfHx2b2lkIDA9PT1hLmRldGFpbC5tYWtlfHwiIj09YS5kZXRhaWwubWFrZXx8KGEuZGV0YWlsLnZjYXRlZ29yeT1hLmRldGFpbC5jb25kaXRpb24sYS5kZXRhaWwudmVyc2lvbj1hLmRldGFpbC50cmltLGEuZGV0YWlsLmJvZHlUeXBlSUQ9YS5kZXRhaWwudHJpbSxhLmRldGFpbC5jb2xvcj0iIixhLmRldGFpbC52Y2FyYnVyYW50PSIiLGEuZGV0YWlsLmRhdGVfbGlzdGluZz0iIixhc2NVcGRhdGVUb3BDYXJEYXRhKGEuZGV0YWlsKSk7c2V0VGltZW91dChmdW5jdGlvbigpe2cuc2V0RGlnaXRhbERhdGEoImFzY19mb3JtX3N1Ym1pc3Npb24iLGEuZGV0YWlsKX0sMjUwKX0pOwokKCIjU2xpZGVXaWRnZXRGb3JtIGEuYnRuLWRlZmF1bHQiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7bGV0IGI9ZDJhc2NSZXNvbHZlTGVhZFR5cGUoZC5mb3JtTWFwLCJTbGlkZVdpZGdldEZvcm0iKTtnLnNldERpZ2l0YWxEYXRhKCJhc2NfZm9ybV9zdWJtaXNzaW9uIix7ZGVwYXJ0bWVudDoic2FsZXMiLGxlYWRUeXBlOmIsY3VycmVudFVSTDoiIn0pfSk7JChkb2N1bWVudCkub24oImZvcm0uc3RlcCIsIiNmaW5hbmNlX211bHRpc3RlcF9mb3JtIixmdW5jdGlvbihiKXtnLnNldERpZ2l0YWxEYXRhKCJhc2NfcmV0YWlsX3Byb2Nlc3MiLGIpfSk7JChkb2N1bWVudCkub24oIm11bHRpRm9ybUZpbmFuY2VTdWJtaXQiLGRvY3VtZW50LmJvZHksZnVuY3Rpb24oYil7Yj1kMmFzY1Jlc29sdmVMZWFkVHlwZShkLmZvcm1NYXAsIkNyZWRpdE11bHRpc3RlcFJlcXVlc3QiKTtnLnNldERpZ2l0YWxEYXRhKCJhc2NfZm9ybV9zdWJtaXNzaW9uIix7ZGVwYXJ0bWVudDoiZmluYW5jZSIsbGVhZFR5cGU6YiwKY3VycmVudFVSTDoiIn0pfSl9LDFFMyk7d2luZG93LmQyYXNjPWd9OwovKiogL20vanMvanF1ZXJ5LnJldmVhbC5qcyAqKi8KdmFyIF9fX2QyY19qcXVlcnlyZXZlYWxqc19jX29uPSIyMDI1LTA1LTIzIDE3OjA2OjQyIjsndXNlIHN0cmljdCc7dmFyIF9fX2QyY19qcXVlcnlyZXZlYWxqc19jX29uPSIyMDI0LTA1LTE0IDEwOjMwOjA1IjsidXNlIHN0cmljdCI7CihmdW5jdGlvbihiKXtiKCJib2R5Iikub24oImNsaWNrIiwiYVtkYXRhLXJldmVhbC1pZF0iLGZ1bmN0aW9uKGEpe2EucHJldmVudERlZmF1bHQoKTthPWIodGhpcykuYXR0cigiZGF0YS1yZXZlYWwtaWQiKTtiKCIjIithKS5yZXZlYWwoYih0aGlzKS5kYXRhKCkpfSk7Yi5mbi5yZXZlYWw9ZnVuY3Rpb24oYSl7YT1iLmV4dGVuZCh7fSx7YW5pbWF0aW9uOiJmYWRlQW5kUG9wIixhbmltYXRpb25zcGVlZDozMDAsY2xvc2VvbmJhY2tncm91bmRjbGljazohMCxkaXNtaXNzbW9kYWxjbGFzczoiY2xvc2UtcmV2ZWFsLW1vZGFsIixjbG9zZW9uZXNjYXBlOiEwfSxhKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZigpeyJvYmplY3QiPT10eXBlb2YgcG9wdXBTdXBlcnZpc29yJiZzZXRUaW1lb3V0KHBvcHVwU3VwZXJ2aXNvci5yZXBvc2l0aW9uLDFFMyk7Zz0hMX12YXIgYz1iKHRoaXMpLGg9cGFyc2VJbnQoYy5jc3MoInRvcCIpKSxtPWMuaGVpZ2h0KCkraCxnPSExLApkPWIoIi5yZXZlYWwtbW9kYWwtYmciKTswPT1kLmxlbmd0aCYmKGQ9YignPGRpdiBjbGFzcz0icmV2ZWFsLW1vZGFsLWJnIiAvPicpLmluc2VydEFmdGVyKGMpKTtjLm9uKCJyZXZlYWw6b3BlbiIsZnVuY3Rpb24oKXt2YXIgaz0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdy5pbm5lckhlaWdodD93aW5kb3cuaW5uZXJIZWlnaHQ6Yih3aW5kb3cpLmhlaWdodCgpLG49YihjKS5vdXRlckhlaWdodCgpO2IoYykub2Zmc2V0KCk7Yihkb2N1bWVudCkuc2Nyb2xsVG9wKCk7dmFyIGw9L01vYmkvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk\/NToyMCxlPShrLW4pLzIrbDtlPWU8bHx8azxuP2w6ZTswPGIoIiNkMmNfYm9keUNvbnRlbnQiKS5sZW5ndGgmJihlLT1iKCIjZDJjX2JvZHlDb250ZW50Iikub2Zmc2V0KCkudG9wKTswPGIoIi5zbG90TWFjaGluZUNvbnRhaW5lciIpLmxlbmd0aCYmYigiLnNsb3RNYWNoaW5lQ29udGFpbmVyIikuc2hvdygpO2Qub2ZmKCJjbGljay5tb2RhbEV2ZW50Iik7CmIoIi4iK2EuZGlzbWlzc21vZGFsY2xhc3MpLm9mZigiY2xpY2subW9kYWxFdmVudCIpO2d8fChnPSEwLCJmYWRlQW5kUG9wIj09YS5hbmltYXRpb24mJihjLmNzcyh7dG9wOmIoZG9jdW1lbnQpLnNjcm9sbFRvcCgpLW0sb3BhY2l0eTowLHZpc2liaWxpdHk6InZpc2libGUifSksZC5mYWRlSW4oYS5hbmltYXRpb25zcGVlZC8yKSxjLmRlbGF5KGEuYW5pbWF0aW9uc3BlZWQvMikuYW5pbWF0ZSh7dG9wOmIoZG9jdW1lbnQpLnNjcm9sbFRvcCgpK2UrInB4IixvcGFjaXR5OjF9LGEuYW5pbWF0aW9uc3BlZWQsZigpKSksImZhZGUiPT1hLmFuaW1hdGlvbiYmKGMuY3NzKHtvcGFjaXR5OjAsdmlzaWJpbGl0eToidmlzaWJsZSIsdG9wOmIoZG9jdW1lbnQpLnNjcm9sbFRvcCgpK2V9KSxkLmZhZGVJbihhLmFuaW1hdGlvbnNwZWVkLzIpLGMuZGVsYXkoYS5hbmltYXRpb25zcGVlZC8yKS5hbmltYXRlKHtvcGFjaXR5OjF9LGEuYW5pbWF0aW9uc3BlZWQsZigpKSksIm5vbmUiPT1hLmFuaW1hdGlvbiYmCihjLmNzcyh7dmlzaWJpbGl0eToidmlzaWJsZSIsdG9wOmIoZG9jdW1lbnQpLnNjcm9sbFRvcCgpK2V9KSxkLmNzcyh7ZGlzcGxheToiYmxvY2sifSksZigpKSwiZXh0ZXJuYWxBbmltYXRpb24iPT1hLmFuaW1hdGlvbiYmKGMuY3NzKHt2aXNpYmlsaXR5OiJ2aXNpYmxlIix0b3A6Yihkb2N1bWVudCkuc2Nyb2xsVG9wKCkrZSxkaXNwbGF5OiJub25lIn0pLnNob3coKSxkLmNzcyh7ZGlzcGxheToiYmxvY2sifSksZigpKSk7Yy5vZmYoInJldmVhbDpvcGVuIil9KTtjLm9uKCJyZXZlYWw6Y2xvc2UiLGZ1bmN0aW9uKCl7YigiYm9keSIpLmNzcygib3ZlcmZsb3ciLCJhdXRvIik7YigiLnNsb3RNYWNoaW5lQ29udGFpbmVyIikuaGlkZSgpO2lmKCFnJiYoZz0hMCwiZmFkZUFuZFBvcCI9PWEuYW5pbWF0aW9uJiYoZC5kZWxheShhLmFuaW1hdGlvbnNwZWVkKS5mYWRlT3V0KGEuYW5pbWF0aW9uc3BlZWQpLGMuYW5pbWF0ZSh7dG9wOmIoZG9jdW1lbnQpLnNjcm9sbFRvcCgpLW0rInB4IixvcGFjaXR5OjB9LAphLmFuaW1hdGlvbnNwZWVkLzIsZnVuY3Rpb24oKXtjLmNzcyh7dG9wOmgsb3BhY2l0eToxLHZpc2liaWxpdHk6ImhpZGRlbiJ9KTtmKCl9KSksImZhZGUiPT1hLmFuaW1hdGlvbiYmKGQuZGVsYXkoYS5hbmltYXRpb25zcGVlZCkuZmFkZU91dChhLmFuaW1hdGlvbnNwZWVkKSxjLmFuaW1hdGUoe29wYWNpdHk6MH0sYS5hbmltYXRpb25zcGVlZCxmdW5jdGlvbigpe2MuY3NzKHtvcGFjaXR5OjEsdmlzaWJpbGl0eToiaGlkZGVuIix0b3A6aH0pO2YoKX0pKSwibm9uZSI9PWEuYW5pbWF0aW9uJiYoYy5jc3Moe3Zpc2liaWxpdHk6ImhpZGRlbiIsdG9wOmh9KSxkLmNzcyh7ZGlzcGxheToibm9uZSJ9KSksImV4dGVybmFsQW5pbWF0aW9uIj09YS5hbmltYXRpb24pKWMuaGlkZSgpLm9uZSgiYW5pbWF0aW9uRW5kIixmdW5jdGlvbigpe2IodGhpcykuY3NzKHt2aXNpYmlsaXR5OiJoaWRkZW4iLHRvcDpoLGRpc3BsYXk6Im5vbmUifSk7ZC5jc3Moe2Rpc3BsYXk6Im5vbmUifSl9KTtjLm9mZigicmV2ZWFsOmNsb3NlIik7CiJ1bmRlZmluZWQiIT10eXBlb2YgYS5jbG9zZWQmJmEuY2xvc2VkKCl9KTtjLnRyaWdnZXIoInJldmVhbDpvcGVuIik7YigiLiIrYS5kaXNtaXNzbW9kYWxjbGFzcykub24oImNsaWNrLm1vZGFsRXZlbnQgdG91Y2hzdGFydCIsZnVuY3Rpb24oKXtjLnRyaWdnZXIoInJldmVhbDpjbG9zZSIpfSk7YS5jbG9zZW9uYmFja2dyb3VuZGNsaWNrJiYoZC5jc3Moe2N1cnNvcjoicG9pbnRlciJ9KSxkLm9uKCJjbGljay5tb2RhbEV2ZW50IixmdW5jdGlvbigpe2MudHJpZ2dlcigicmV2ZWFsOmNsb3NlIil9KSk7aWYoYS5jbG9zZW9uZXNjYXBlKWIoImJvZHkiKS5vbigia2V5dXAiLGZ1bmN0aW9uKGspezI3PT09ay53aGljaCYmYy50cmlnZ2VyKCJyZXZlYWw6Y2xvc2UiKX0pfSl9fSkoalF1ZXJ5KTsKLyoqIC9tL2pzL3Byb21vX2R5bmFtaWNfZmlsZV9mci5qcyAqKi8KKGZ1bmN0aW9uKCl7fSk7Ci8qKiAvbS9qcy90cmFkZUluQmFyLmpzICoqLwp2YXIgX19fZDJjX3RyYWRlSW5CYXJqc19jX29uPSIyMDI2LTAxLTI3IDEwOjMwOjA5IjsndXNlIHN0cmljdCc7ZnVuY3Rpb24gdHJhZGVJbkJhckluaXRpYWxpemUoKXtmb3IodmFyIHA9JCgnc2VsZWN0W25hbWU9InRyYWRpbk1ha2UiXScpLGs9JCgnc2VsZWN0W25hbWU9InRyYWRpbk1vZGVsIl0nKSxsPSQoJ3NlbGVjdFtuYW1lPSJ0cmFkaW5UcmltIl0nKSxxPSQoJ3NlbGVjdFtuYW1lPSJ0cmFkaW5ZZWFyIl0nKSxnPSQoJ2lucHV0W25hbWU9InRyYWRpblZpbiJdJyksdT17fSx3PShuZXcgRGF0ZSkuZ2V0RnVsbFllYXIoKTsxOTk5PHc7dy0tKTtwLm9uKCJmb2N1cyIsZnVuY3Rpb24oKXtwLmNzcygiYmFja2dyb3VuZCIsIiNmZmZmZmYiKX0pO2sub24oImZvY3VzIixmdW5jdGlvbigpe2suY3NzKCJiYWNrZ3JvdW5kIiwiI2ZmZmZmZiIpfSk7bC5vbigiZm9jdXMiLGZ1bmN0aW9uKCl7bC5jc3MoImJhY2tncm91bmQiLCIjZmZmZmZmIil9KTtxLm9uKCJmb2N1cyIsZnVuY3Rpb24oKXtxLmNzcygiYmFja2dyb3VuZCIsIiNmZmZmZmYiKX0pO3ZhciBoPSQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPwoiRU5HTElTSCI6IkZSRU5DSCIsQT0nPG9wdGlvbiB2YWx1ZT0iIj4nKygiRU5HTElTSCI9PWg\/Ik1vZGVsIjoiTW9kJmVncmF2ZTtsZSIpKyI8L29wdGlvbj4iLEQ9JzxvcHRpb24gdmFsdWU9IiI+JysoIkVOR0xJU0giPT1oPyJUcmltIjoiVmVyc2lvbiIpKyI8L29wdGlvbj4iLEY9JzxvcHRpb24gdmFsdWU9IiI+JysoIkVOR0xJU0giPT1oPyJZZWFyIjoiQW5uJmVhY3V0ZTtlIikrIjwvb3B0aW9uPiI7JChkb2N1bWVudCkub24oInRyYWRlSW5CYXIuY2xvbmVkIixmdW5jdGlvbigpe3A9JCgnc2VsZWN0W25hbWU9InRyYWRpbk1ha2UiXScpO2s9JCgnc2VsZWN0W25hbWU9InRyYWRpbk1vZGVsIl0nKTtsPSQoJ3NlbGVjdFtuYW1lPSJ0cmFkaW5UcmltIl0nKTtxPSQoJ3NlbGVjdFtuYW1lPSJ0cmFkaW5ZZWFyIl0nKTtnPSQoJ2lucHV0W25hbWU9InRyYWRpblZpbiJdJyk7cC52YWwocC52YWwoKSk7cS52YWwocS52YWwoKSk7ay52YWwoay52YWwoKSk7bC52YWwobC52YWwoKSl9KTsKcC5vbigiY2hhbmdlIixmdW5jdGlvbigpe3AudmFsKCQodGhpcykudmFsKCkpO3EuZW1wdHkoKTtrLmVtcHR5KCk7bC5lbXB0eSgpOyIiIT10aGlzLnZhbHVlJiYkLmFqYXgoe3R5cGU6IlBPU1QiLHVybDooIkVOR0xJU0giPT1oPyIvZW4vIjoiL2ZyLyIpKyIvYWpheC9nZXRUcmFkZUluQmFyRGF0YT93c3dpZHRoPTAiLGRhdGFUeXBlOiJqc29uIixkYXRhOntsYW5ndWFnZTpoLG1ha2U6dGhpcy52YWx1ZX0sc3VjY2VzczpmdW5jdGlvbihiKXt1PWI7cS5hcHBlbmQoRik7Zm9yKHZhciBmIGluIGIpcS5hcHBlbmQoJzxvcHRpb24gdmFsdWU9IicrZisnIj4nK2YrIjwvb3B0aW9uPiIpO2cmJmcuZmlyc3QoKSYmIiIhPWcuZmlyc3QoKS5hdHRyKCJ2aW5ZZWFyIikmJihxLnZhbChnLmZpcnN0KCkuYXR0cigidmluWWVhciIpKSxxLmZpcnN0KCkudHJpZ2dlcigiY2hhbmdlIikpfX0pfSk7cS5vbigiY2hhbmdlIixmdW5jdGlvbigpe3ZhciBiPSQodGhpcykudmFsKCksCmY9cC52YWwoKTtxLnZhbCgkKHRoaXMpLnZhbCgpKTtrLmVtcHR5KCk7bC5lbXB0eSgpO2lmKDEhPSQoImlucHV0W25hbWU9bm9DQkJdIikudmFsKCkpJC5hamF4KHt0eXBlOiJQT1NUIix1cmw6KCJFTkdMSVNIIj09aD8iL2VuLyI6Ii9mci8iKSsiL2FqYXgvZ2V0VHJhZGVJbkJhck1vZGVsP3dzd2lkdGg9MCIsZGF0YVR5cGU6Impzb24iLGRhdGE6e2xhbmd1YWdlOmgsbWFrZTpmLHllYXI6Yn0sc3VjY2VzczpmdW5jdGlvbihhKXtjb25zb2xlLmxvZyhhKTtrLmFwcGVuZChBKTtmb3IodmFyIGQ9MDtkPGEubGVuZ3RoO2QrKyl7dmFyIGM9YVtkXS5uYW1lO2suYXBwZW5kKCc8b3B0aW9uIHZhbHVlPSInK2MrJyI+JytjKyI8L29wdGlvbj4iKX1nJiZnLmZpcnN0KCkmJiIiIT1nLmZpcnN0KCkuYXR0cigidmluTW9kZWwiKSYmKGsudmFsKGcuZmlyc3QoKS5hdHRyKCJ2aW5Nb2RlbCIpKSxrLmZpcnN0KCkudHJpZ2dlcigiY2hhbmdlIikpO2cuZmlyc3QoKS5hdHRyKCJ2aW5ZZWFyIiwKIiIpO2cuZmlyc3QoKS5hdHRyKCJ2aW5Nb2RlbCIsIiIpfX0pO2Vsc2UgaWYoMT09JCgiaW5wdXRbbmFtZT1pc0FjY3V0cmFkZV0iKS52YWwoKSkkLmFqYXgoe3R5cGU6IlBPU1QiLHVybDooIkVOR0xJU0giPT1oPyIvZW4vIjoiL2ZyLyIpKyIvYWpheC9nZXRUcmFkZUluTW5nTW9kZWw\/d3N3aWR0aD0wIixkYXRhVHlwZToianNvbiIsZGF0YTp7bGFuZ3VhZ2U6aCxtYWtlOmYseWVhcjpifSxzdWNjZXNzOmZ1bmN0aW9uKGEpe2NvbnNvbGUubG9nKGEpO2suYXBwZW5kKEEpO2Zvcih2YXIgZD0wO2Q8YS5sZW5ndGg7ZCsrKXt2YXIgYz1hW2RdLm5hbWU7ay5hcHBlbmQoJzxvcHRpb24gdmFsdWU9IicrYysnIj4nK2MrIjwvb3B0aW9uPiIpfWcmJmcuZmlyc3QoKSYmIiIhPWcuZmlyc3QoKS5hdHRyKCJ2aW5Nb2RlbCIpJiYoay52YWwoZy5maXJzdCgpLmF0dHIoInZpbk1vZGVsIikpLGsuZmlyc3QoKS50cmlnZ2VyKCJjaGFuZ2UiKSk7Zy5maXJzdCgpLmF0dHIoInZpblllYXIiLAoiIik7Zy5maXJzdCgpLmF0dHIoInZpbk1vZGVsIiwiIil9fSk7ZWxzZSBpZigwPE9iamVjdC5rZXlzKHUpLmxlbmd0aCYmIiIhPXRoaXMudmFsdWUpe2suYXBwZW5kKEEpO2Y9e307Zm9yKHZhciBlPTA7ZTx1W2JdLmxlbmd0aDtlKyspInVuZGVmaW5lZCI9PXR5cGVvZiBmW3VbYl1bZV0ubW9kZWxdJiYoay5hcHBlbmQoJzxvcHRpb24gdmFsdWU9IicrdVtiXVtlXS5tb2RlbCsnIj4nK3VbYl1bZV0ubW9kZWwrIjwvb3B0aW9uPiIpLGZbdVtiXVtlXS5tb2RlbF09dVtiXVtlXS5tb2RlbCl9fSk7ay5vbigiY2hhbmdlIixmdW5jdGlvbihiKXt2YXIgZj1wLnZhbCgpO2I9cS52YWwoKTt2YXIgZT0kKHRoaXMpLnZhbCgpO2sudmFsKCQodGhpcykudmFsKCkpO2wuZW1wdHkoKTtpZigxIT0kKCJpbnB1dFtuYW1lPW5vQ0JCXSIpLnZhbCgpKSQuYWpheCh7dHlwZToiUE9TVCIsdXJsOigiRU5HTElTSCI9PWg\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L2dldFRyYWRlSW5CYXJUcmltP3dzd2lkdGg9MCIsCmRhdGFUeXBlOiJqc29uIixkYXRhOntsYW5ndWFnZTpoLG1ha2U6Zixtb2RlbDplLHllYXI6Yn0sc3VjY2VzczpmdW5jdGlvbihhKXtjb25zb2xlLmxvZyhhKTtsLmFwcGVuZCgnPG9wdGlvbiB2YWx1ZT0iIj4nKygiRU5HTElTSCI9PWg\/IlRyaW0iOiJWZXJzaW9uIikrIjwvb3B0aW9uPiIpO2Zvcih2YXIgZD0wLGM9MDtjPGEubGVuZ3RoO2MrKyl7dmFyIG09YVtjXS5zdHlsZSsiICIrYVtjXS5zZXJpZXMseD1hW2NdLnV2YztkKys7bC5hcHBlbmQoJzxvcHRpb24gZGF0YS1zdHlsZWlkPSInK3grJyIgdmFsdWU9IicrbSsnIj4nK20rIjwvb3B0aW9uPiIpfTE9PWQmJiQoIm9wdGlvbjplcSgxKSIsbCkucHJvcCgic2VsZWN0ZWQiLCJzZWxlY3RlZCIpfX0pO2Vsc2UgaWYoMT09JCgiaW5wdXRbbmFtZT1pc0FjY3V0cmFkZV0iKS52YWwoKSkkLmFqYXgoe3R5cGU6IlBPU1QiLHVybDooIkVOR0xJU0giPT1oPyIvZW4vIjoiL2ZyLyIpKyIvYWpheC9nZXRUcmFkZUluTW5nVHJpbT93c3dpZHRoPTAiLApkYXRhVHlwZToianNvbiIsZGF0YTp7bGFuZ3VhZ2U6aCxtYWtlOmYsbW9kZWw6ZSx5ZWFyOmJ9LHN1Y2Nlc3M6ZnVuY3Rpb24oYSl7Y29uc29sZS5sb2coYSk7bC5hcHBlbmQoJzxvcHRpb24gdmFsdWU9IiI+JysoIkVOR0xJU0giPT1oPyJUcmltIjoiVmVyc2lvbiIpKyI8L29wdGlvbj4iKTtmb3IodmFyIGQ9MCxjPTA7YzxhLmxlbmd0aDtjKyspe3ZhciBtPWFbY10ubmFtZSx4PWFbY10uaWQ7ZCsrO2wuYXBwZW5kKCc8b3B0aW9uIGRhdGEtc3R5bGVpZD0iJyt4KyciIHZhbHVlPSInK20rJyI+JyttKyI8L29wdGlvbj4iKX0xPT1kJiYkKCJvcHRpb246ZXEoMSkiLGwpLnByb3AoInNlbGVjdGVkIiwhMCl9fSk7ZWxzZSBpZigwPE9iamVjdC5rZXlzKHUpLmxlbmd0aCYmIiIhPXRoaXMudmFsdWUpe2wuYXBwZW5kKEQpO2ZvcihlPWY9MDtlPHVbYl0ubGVuZ3RoO2UrKyl1W2JdW2VdLm1vZGVsPT10aGlzLnZhbHVlJiYoZisrLGwuYXBwZW5kKCc8b3B0aW9uIGRhdGEtc3R5bGVpZD0iJysKdVtiXVtlXS5zdHlsZWlkKyciIHZhbHVlPSInK3VbYl1bZV0udHJpbSsnIj4nK3VbYl1bZV0udHJpbSsiPC9vcHRpb24+IikpOzE9PWYmJiQoIm9wdGlvbjplcSgxKSIsbCkucHJvcCgic2VsZWN0ZWQiLCJzZWxlY3RlZCIpfX0pO2wub24oImNoYW5nZSIsZnVuY3Rpb24oKXtsLnZhbCgkKHRoaXMpLnZhbCgpKX0pO3ZhciBCPSExO2lmKDEhPSQoImlucHV0W25hbWU9bm9DQkJdIikudmFsKCkpZy5vbigia2V5dXAiLGZ1bmN0aW9uKCl7Zy52YWwoJCh0aGlzKS52YWwoKSk7JCh0aGlzKS52YWwoKSYmMTc8PSQodGhpcykudmFsKCkubGVuZ3RoJiYhQiYmKEI9ITAsJC5hamF4KHt0eXBlOiJQT1NUIix1cmw6KCQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyIvZW4vIjoiL2ZyLyIpKyIvYWpheC9nZXRUcmFkZUluQmFyVmFsdWU\/d3N3aWR0aD0wIixkYXRhVHlwZToianNvbiIsZGF0YTp7dmluOiQodGhpcykudmFsKCkscHJvdmluY2U6JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iZGVhbGVyUHJvdmluY2VUcmFkZUluIl0nKS52YWwoKX0sCnN1Y2Nlc3M6ZnVuY3Rpb24oYil7YiYmYi5tb2RlbCYmYi5tb2RlbF95ZWFyPyhnLmZpcnN0KCkuYXR0cigidmluTW9kZWwiLGIubW9kZWwpLGcuZmlyc3QoKS5hdHRyKCJ2aW5ZZWFyIixiLm1vZGVsX3llYXIpLHAudmFsKGIubWFrZSkscC5maXJzdCgpLnRyaWdnZXIoImNoYW5nZSIpLHJlbW92ZVJlZFdhcm5pbmdNZXNzYWdlKCksc3dpdGNoVG9WZWhpY2xlQW5kRm9jdXNUcmltKCkpOmFkZFJlZFdhcm5pbmdNZXNzYWdlKCQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyJVbnJlY29nbml6ZWQgVklOIjoiTklWIG5vbiByZWNvbm51Iil9LGNvbXBsZXRlOmZ1bmN0aW9uKGIpe0I9ITF9fSkpfSk7ZWxzZSBpZigxPT0kKCJpbnB1dFtuYW1lPWlzQWNjdXRyYWRlXSIpLnZhbCgpKWcub24oImtleXVwIixmdW5jdGlvbigpe2cudmFsKCQodGhpcykudmFsKCkpOyQodGhpcykudmFsKCkmJjE3PD0kKHRoaXMpLnZhbCgpLmxlbmd0aCYmIUImJihCPSEwLCQuYWpheCh7dHlwZToiUE9TVCIsCnVybDooJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L2dldFRyYWRlSW5NbmdWaW4\/d3N3aWR0aD0wIixkYXRhVHlwZToianNvbiIsZGF0YTp7dmluOiQodGhpcykudmFsKCkscHJvdmluY2U6JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iZGVhbGVyUHJvdmluY2VUcmFkZUluIl0nKS52YWwoKX0sc3VjY2VzczpmdW5jdGlvbihiKXtiJiZiLm1vZGVsJiZiLnllYXI\/KGcuZmlyc3QoKS5hdHRyKCJ2aW5Nb2RlbCIsYi5tb2RlbCksZy5maXJzdCgpLmF0dHIoInZpblllYXIiLGIueWVhcikscC52YWwoYi5tYWtlKSxwLmZpcnN0KCkudHJpZ2dlcigiY2hhbmdlIikscmVtb3ZlUmVkV2FybmluZ01lc3NhZ2UoKSxzd2l0Y2hUb1ZlaGljbGVBbmRGb2N1c1RyaW0oKSk6YWRkUmVkV2FybmluZ01lc3NhZ2UoJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/IlVucmVjb2duaXplZCBWSU4iOiJOSVYgbm9uIHJlY29ubnUiKX0sCmNvbXBsZXRlOmZ1bmN0aW9uKGIpe0I9ITF9fSkpfSk7dz1nZXRVcmxWYXJzKCk7Zm9yKHZhciBHPU9iamVjdC5rZXlzKHcpLEg9Ry5sZW5ndGgsST17fTtILS07KXt2YXIgSj1HW0hdO0lbSi50b0xvd2VyQ2FzZSgpXT13W0pdfXc9STt3LnRtYWtlJiZ3LnRtb2RlbCYmdy50eWVhciYmc2V0VGltZW91dChmdW5jdGlvbigpe2xhdW5jaFRyYWRlSW5Qb3B1cCgiYXV0b21hdGljIil9LDFFMyk7d1sidHJhZGUtZnVsbCJdJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bGF1bmNoVHJhZGVJblBvcHVwKCJhdXRvbWF0aWMiKX0sMUUzKTskKCIudHJhZGVJbkJhcl9idG4iKS5vbigiY2xpY2siLGZ1bmN0aW9uKGIpe2I9ITE7IiI9PXAudmFsKCkmJihwLmNzcygiYmFja2dyb3VuZCIsIiNGRjdFNzkiKSxiPSEwKTtpZigiIj09ay52YWwoKXx8bnVsbD09ay52YWwoKSlrLmNzcygiYmFja2dyb3VuZCIsIiNGRjdFNzkiKSxiPSEwO2lmKCIiPT1sLnZhbCgpfHxudWxsPT1sLnZhbCgpKWwuY3NzKCJiYWNrZ3JvdW5kIiwKIiNGRjdFNzkiKSxiPSEwO2lmKCIiPT1xLnZhbCgpfHxudWxsPT1xLnZhbCgpKXEuY3NzKCJiYWNrZ3JvdW5kIiwiI0ZGN0U3OSIpLGI9ITA7MD09YiYmbGF1bmNoVHJhZGVJblBvcHVwKCJ0cmFkZWluYmFyIil9KTtpZigiMSI9PSQoIiNpc01vYmlsZSIpLnZhbCgpfHwiIj09cC52YWwoKXx8InVuZGVmaW5lZCI9PT10eXBlb2YgcC52YWwoKXx8IiI9PWsudmFsKCl8fCIiPT1xLnZhbCgpKXt2YXIgeT0kKCIjdHJhZGVJbkJhclBvcHVwTWFrZSIpLHI9JCgiI3RyYWRlSW5CYXJQb3B1cE1vZGVsIiksdj0kKCIjdHJhZGVJbkJhclBvcHVwVHJpbSIpLHo9JCgiI3RyYWRlSW5CYXJQb3B1cFllYXIiKSxuPSQoIiN0cmFkZUluQmFyUG9wdXBOaXYiKSx0PXt9LEU9ZDJjbWVkaWEuY2FwaXRhbGlzZUZpcnN0TGV0dGVyKHcudG1vZGVsP3cudG1vZGVsLnRvTG93ZXJDYXNlKCk6IiIpLEM9dy50eWVhcjtpZigwIT0kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJDQkJNT0RFTFNFTEVDVCJdJykudmFsKCkpJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLm5pdk1ha2VNb2RlbFNlbGVjdCIpLm9uKCJjaGFuZ2UiLApmdW5jdGlvbigpeyJ2aW4iPT0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAubml2TWFrZU1vZGVsU2VsZWN0OmNoZWNrZWQiKS52YWwoKT8oJCgiI3RyYWRlSW5CYXJQb3B1cE1ha2VEaXZDb250YWluZXIiKS5oaWRlKCksJCgiI3RyYWRlSW5CYXJQb3B1cE1vZGVsRGl2Q29udGFpbmVyIikuaGlkZSgpLCQoIiN0cmFkZUluQmFyUG9wdXBZZWFyRGl2Q29udGFpbmVyIikuaGlkZSgpLCQoIiN0cmFkZUluQmFyUG9wdXBOaXZEaXZDb250YWluZXIiKS5jc3MoImRpc3BsYXkiLCJpbmxpbmUtYmxvY2siKSk6KCQoIiN0cmFkZUluQmFyUG9wdXBOaXZEaXZDb250YWluZXIiKS5oaWRlKCksJCgiI3RyYWRlSW5CYXJQb3B1cE1ha2VEaXZDb250YWluZXIiKS5jc3MoImRpc3BsYXkiLCJpbmxpbmUtYmxvY2siKSwkKCIjdHJhZGVJbkJhclBvcHVwTW9kZWxEaXZDb250YWluZXIiKS5jc3MoImRpc3BsYXkiLCJpbmxpbmUtYmxvY2siKSwkKCIjdHJhZGVJbkJhclBvcHVwWWVhckRpdkNvbnRhaW5lciIpLmNzcygiZGlzcGxheSIsCiJpbmxpbmUtYmxvY2siKSk7InVuZGVmaW5lZCIhPT10eXBlb2YgdHJhZGVpbnBvcHVwZDJjJiZ0cmFkZWlucG9wdXBkMmMudHJhZGVJbkJvdHRvbUxvZ29IZWlndCgpfSk7eS5vbigiY2hhbmdlIixmdW5jdGlvbigpe3kudmFsKCQodGhpcykudmFsKCkpO3ouZW1wdHkoKTtyLmVtcHR5KCk7di5lbXB0eSgpOyIiIT10aGlzLnZhbHVlJiYkLmFqYXgoe3R5cGU6IlBPU1QiLHVybDooIkVOR0xJU0giPT1oPyIvZW4vIjoiL2ZyLyIpKyIvYWpheC9nZXRUcmFkZUluQmFyRGF0YT93c3dpZHRoPTAiLGRhdGFUeXBlOiJqc29uIixkYXRhOntsYW5ndWFnZTpoLG1ha2U6dGhpcy52YWx1ZX0sc3VjY2VzczpmdW5jdGlvbihiKXt0PWI7ei5hcHBlbmQoRik7IiIhPW4uYXR0cigidmluWWVhciIpJiYoQz1uLmF0dHIoInZpblllYXIiKSk7Zm9yKHZhciBmIGluIGIpYj0iIixDJiYoYj1mPT1DPydzZWxlY3RlZD0ic2VsZWN0ZWQiJzoiIiksei5hcHBlbmQoIjxvcHRpb24gIisKYisnIHZhbHVlPSInK2YrJyI+JytmKyI8L29wdGlvbj4iKTtDJiYoei50cmlnZ2VyKCJjaGFuZ2UiKSxDPSExKX19KX0pO3oub24oImNoYW5nZSIsZnVuY3Rpb24oKXt6LnZhbCgkKHRoaXMpLnZhbCgpKTtyLmVtcHR5KCk7di5lbXB0eSgpO3ZhciBiPSQodGhpcykudmFsKCksZj15LnZhbCgpO2lmKDEhPSQoImlucHV0W25hbWU9bm9DQkJdIikudmFsKCkpJC5hamF4KHt0eXBlOiJQT1NUIix1cmw6KCJFTkdMSVNIIj09aD8iL2VuLyI6Ii9mci8iKSsiL2FqYXgvZ2V0VHJhZGVJbkJhck1vZGVsP3dzd2lkdGg9MCIsZGF0YVR5cGU6Impzb24iLGRhdGE6e2xhbmd1YWdlOmgsbWFrZTpmLHllYXI6Yn0sc3VjY2VzczpmdW5jdGlvbihkKXtjb25zb2xlLmxvZyhkKTtyLmFwcGVuZChBKTtmb3IodmFyIGM9MDtjPGQubGVuZ3RoO2MrKyl7dmFyIG09ZFtjXS5uYW1lO3IuYXBwZW5kKCc8b3B0aW9uIHZhbHVlPSInK20rJyI+JyttKyI8L29wdGlvbj4iKX0iIiE9Cm4uYXR0cigidmluTW9kZWwiKSYmKHIudmFsKG4uYXR0cigidmluTW9kZWwiKSksci50cmlnZ2VyKCJjaGFuZ2UiKSk7bi5hdHRyKCJ2aW5ZZWFyIiwiIik7bi5hdHRyKCJ2aW5Nb2RlbCIsIiIpfX0pO2Vsc2UgaWYoMT09JCgiaW5wdXRbbmFtZT1pc0FjY3V0cmFkZV0iKS52YWwoKSkkLmFqYXgoe3R5cGU6IlBPU1QiLHVybDooIkVOR0xJU0giPT1oPyIvZW4vIjoiL2ZyLyIpKyIvYWpheC9nZXRUcmFkZUluTW5nTW9kZWw\/d3N3aWR0aD0wIixkYXRhVHlwZToianNvbiIsZGF0YTp7bGFuZ3VhZ2U6aCxtYWtlOmYseWVhcjpifSxzdWNjZXNzOmZ1bmN0aW9uKGQpe2NvbnNvbGUubG9nKGQpO3IuYXBwZW5kKEEpO2Zvcih2YXIgYz0wO2M8ZC5sZW5ndGg7YysrKXt2YXIgbT1kW2NdLm5hbWU7ci5hcHBlbmQoJzxvcHRpb24gdmFsdWU9IicrbSsnIj4nK20rIjwvb3B0aW9uPiIpfSIiIT1uLmF0dHIoInZpbk1vZGVsIikmJihyLnZhbChuLmF0dHIoInZpbk1vZGVsIikpLApyLnRyaWdnZXIoImNoYW5nZSIpKTtuLmF0dHIoInZpblllYXIiLCIiKTtuLmF0dHIoInZpbk1vZGVsIiwiIil9fSk7ZWxzZSBpZigwPE9iamVjdC5rZXlzKHQpLmxlbmd0aCYmIiIhPXRoaXMudmFsdWUpe3IuYXBwZW5kKEEpO2Y9e307Zm9yKHZhciBlPTA7ZTx0W2JdLmxlbmd0aDtlKyspaWYoInVuZGVmaW5lZCI9PXR5cGVvZiBmW3RbYl1bZV0ubW9kZWxdKXt2YXIgYT0iIjtFJiYoYT10W2JdW2VdLm1vZGVsPT1FPydzZWxlY3RlZD0ic2VsZWN0ZWQiJzoiIik7ci5hcHBlbmQoIjxvcHRpb24gIithKycgdmFsdWU9IicrdFtiXVtlXS5tb2RlbCsnIj4nK3RbYl1bZV0ubW9kZWwrIjwvb3B0aW9uPiIpO2ZbdFtiXVtlXS5tb2RlbF09dFtiXVtlXS5tb2RlbH1FJiYoci50cmlnZ2VyKCJjaGFuZ2UiKSxFPSExKX19KTtyLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7ci52YWwoJCh0aGlzKS52YWwoKSk7di5lbXB0eSgpO3ZhciBiPXoudmFsKCksZj15LnZhbCgpLGU9JCh0aGlzKS52YWwoKTsKaWYoMSE9JCgiaW5wdXRbbmFtZT1ub0NCQl0iKS52YWwoKSkkLmFqYXgoe3R5cGU6IlBPU1QiLHVybDooIkVOR0xJU0giPT1oPyIvZW4vIjoiL2ZyLyIpKyIvYWpheC9nZXRUcmFkZUluQmFyVHJpbT93c3dpZHRoPTAiLGRhdGFUeXBlOiJqc29uIixkYXRhOntsYW5ndWFnZTpoLG1ha2U6Zixtb2RlbDplLHllYXI6Yn0sc3VjY2VzczpmdW5jdGlvbihhKXtjb25zb2xlLmxvZyhhKTt2LmFwcGVuZChEKTtmb3IodmFyIGQ9MCxjPTA7YzxhLmxlbmd0aDtjKyspe3ZhciBtPWFbY10uc3R5bGUrIiAiK2FbY10uc2VyaWVzLHg9YVtjXS51dmM7ZCsrO3YuYXBwZW5kKCc8b3B0aW9uIGRhdGEtc3R5bGVpZD0iJyt4KyciIHZhbHVlPSInK20rJyI+JyttKyI8L29wdGlvbj4iKX0xPT1kJiYkKCJvcHRpb246ZXEoMSkiLHYpLnByb3AoInNlbGVjdGVkIiwic2VsZWN0ZWQiKX19KTtlbHNlIGlmKDE9PSQoImlucHV0W25hbWU9aXNBY2N1dHJhZGVdIikudmFsKCkpJC5hamF4KHt0eXBlOiJQT1NUIiwKdXJsOigiRU5HTElTSCI9PWg\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L2dldFRyYWRlSW5NbmdUcmltP3dzd2lkdGg9MCIsZGF0YVR5cGU6Impzb24iLGRhdGE6e2xhbmd1YWdlOmgsbWFrZTpmLG1vZGVsOmUseWVhcjpifSxzdWNjZXNzOmZ1bmN0aW9uKGEpe2NvbnNvbGUubG9nKGEpO3YuYXBwZW5kKEQpO2Zvcih2YXIgZD0wLGM9MDtjPGEubGVuZ3RoO2MrKyl7dmFyIG09YVtjXS5uYW1lLHg9YVtjXS5pZDtkKys7di5hcHBlbmQoJzxvcHRpb24gZGF0YS1zdHlsZWlkPSInK3grJyIgdmFsdWU9IicrbSsnIj4nK20rIjwvb3B0aW9uPiIpfTE9PWQmJiQoIm9wdGlvbjplcSgxKSIsdikucHJvcCgic2VsZWN0ZWQiLCEwKX19KTtlbHNlIGlmKDA8T2JqZWN0LmtleXModCkubGVuZ3RoJiYiIiE9dGhpcy52YWx1ZSl7di5hcHBlbmQoRCk7Zm9yKGU9Zj0wO2U8dFtiXS5sZW5ndGg7ZSsrKXRbYl1bZV0ubW9kZWw9PXRoaXMudmFsdWUmJihmKyssdi5hcHBlbmQoJzxvcHRpb24gZGF0YS1zdHlsZWlkPSInKwp0W2JdW2VdLnN0eWxlaWQrJyIgdmFsdWU9IicrdFtiXVtlXS50cmltKyciPicrdFtiXVtlXS50cmltKyI8L29wdGlvbj4iKSk7MT09ZiYmJCgib3B0aW9uOmVxKDEpIix2KS5wcm9wKCJzZWxlY3RlZCIsInNlbGVjdGVkIil9fSk7aWYoMSE9JCgiaW5wdXRbbmFtZT1ub0NCQl0iKS52YWwoKXx8MT09JCgiaW5wdXRbbmFtZT1pc0FjY3V0cmFkZV0iKS52YWwoKSl7MSE9JCgiaW5wdXRbbmFtZT1ub0NCQl0iKS52YWwoKT8odi5vbigiY2hhbmdlIixmdW5jdGlvbigpeyQuYWpheCh7dHlwZToiUE9TVCIsdXJsOigkKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iL2VuLyI6Ii9mci8iKSsiL2FqYXgvZ2V0VHJhZGVJbkJhclZhbHVlP3dzd2lkdGg9MCIsZGF0YVR5cGU6Impzb24iLGRhdGE6e3V2YzokKHRoaXMpLmZpbmQoIjpjaGVja2VkIikuYXR0cigiZGF0YS1zdHlsZWlkIikscHJvdmluY2U6JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iZGVhbGVyUHJvdmluY2VUcmFkZUluIl0nKS52YWwoKX0sCnN1Y2Nlc3M6ZnVuY3Rpb24oYSl7Y29uc29sZS5sb2coYSk7JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gc2VsZWN0W25hbWU9IlZFSElDTEVPUFRJT05TIl0nKS5maW5kKCJvcHRpb24iKS5yZW1vdmUoKTtpZihhLmFkZF9kZWR1Y3RfbGlzdC5sZW5ndGgpe2Zvcih2YXIgZD0wO2Q8YS5hZGRfZGVkdWN0X2xpc3QubGVuZ3RoO2QrKykkKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBzZWxlY3RbbmFtZT0iVkVISUNMRU9QVElPTlMiXScpLmFwcGVuZCgnPG9wdGlvbiB2YWx1ZT0iJythLmFkZF9kZWR1Y3RfbGlzdFtkXS51b2MrJyI+JythLmFkZF9kZWR1Y3RfbGlzdFtkXS5uYW1lKyI8L29wdGlvbj4iKTskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBzZWxlY3RbbmFtZT0iVkVISUNMRU9QVElPTlMiXScpLm11bHRpc2VsZWN0KHtoZWFkZXI6ITEsbm9uZVNlbGVjdGVkVGV4dDoiT3B0aW9ucyIsc2VsZWN0ZWRUZXh0OmZ1bmN0aW9uKGMsbSx4KXtyZXR1cm4gJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/CmMrIiAiKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Im11bHRpc2VsZWN0ZWRUZXh0VmFsdWUiXScpLnZhbCgpOmMrIiAiKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Im11bHRpc2VsZWN0ZWRUZXh0VmFsdWUiXScpLnZhbCgpKygxPGM\/InMiOiIiKX0sY2xhc3NlczoidHJhZGVJbkJhck11bHRpc2VsZWN0In0pLm11bHRpc2VsZWN0KCJyZWZyZXNoIik7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLm9wZW5WZWhpY2xlT3B0aW9ucyIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAubXVsdGlzZWxlY3RWZWhpY2xlT3B0aW9ucyIpLnNob3coKX1lbHNlICQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC5tdWx0aXNlbGVjdFZlaGljbGVPcHRpb25zIikuaGlkZSgpLCQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC5vcGVuVmVoaWNsZU9wdGlvbnMiKS5zaG93KCl9fSl9KSxuLm9uKCJwYXN0ZSIsZnVuY3Rpb24oKXtsZXQgYT0kKHRoaXMpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXthLnRyaWdnZXIoImtleXVwIil9LAoyMDApfSksbi5vbigia2V5dXAiLGZ1bmN0aW9uKCl7JCh0aGlzKS52YWwoKSYmMTc8PSQodGhpcykudmFsKCkubGVuZ3RoJiYkLmFqYXgoe3R5cGU6IlBPU1QiLHVybDooJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L2dldFRyYWRlSW5CYXJWYWx1ZT93c3dpZHRoPTAiLGRhdGFUeXBlOiJqc29uIixkYXRhOnt2aW46JCh0aGlzKS52YWwoKSxwcm92aW5jZTokKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJkZWFsZXJQcm92aW5jZVRyYWRlSW4iXScpLnZhbCgpfSxzdWNjZXNzOmZ1bmN0aW9uKGEpe2EmJmEubW9kZWwmJmEubW9kZWxfeWVhcj8obi5maXJzdCgpLmF0dHIoInZpbk1vZGVsIixhLm1vZGVsKSxuLmZpcnN0KCkuYXR0cigidmluWWVhciIsYS5tb2RlbF95ZWFyKSx5LnZhbChhLm1ha2UpLHkuZmlyc3QoKS50cmlnZ2VyKCJjaGFuZ2UiKSxmKCksZSgpKTpiKCQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPwoiVW5yZWNvZ25pemVkIFZJTiI6Ik5JViBub24gcmVjb25udSIpfX0pfSkpOjE9PSQoImlucHV0W25hbWU9aXNBY2N1dHJhZGVdIikudmFsKCkmJih2Lm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7JC5hamF4KHt0eXBlOiJQT1NUIix1cmw6KCQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyIvZW4vIjoiL2ZyLyIpKyIvYWpheC9nZXRUcmFkZUluTW5nT3B0aW9ucz93c3dpZHRoPTAiLGRhdGFUeXBlOiJqc29uIixkYXRhOntpZDokKHRoaXMpLmZpbmQoIjpjaGVja2VkIikuYXR0cigiZGF0YS1zdHlsZWlkIikscHJvdmluY2U6JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iZGVhbGVyUHJvdmluY2VUcmFkZUluIl0nKS52YWwoKX0sc3VjY2VzczpmdW5jdGlvbihhKXtjb25zb2xlLmxvZyhhKTskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBzZWxlY3RbbmFtZT0iVkVISUNMRU9QVElPTlMiXScpLmZpbmQoIm9wdGlvbiIpLnJlbW92ZSgpO2lmKGEubGVuZ3RoKXtmb3IodmFyIGQ9CjA7ZDxhLmxlbmd0aDtkKyspJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gc2VsZWN0W25hbWU9IlZFSElDTEVPUFRJT05TIl0nKS5hcHBlbmQoJzxvcHRpb24gdmFsdWU9IicrYVtkXS5pZCsnIj4nK2FbZF0ubmFtZSsiPC9vcHRpb24+Iik7JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gc2VsZWN0W25hbWU9IlZFSElDTEVPUFRJT05TIl0nKS5tdWx0aXNlbGVjdCh7aGVhZGVyOiExLG5vbmVTZWxlY3RlZFRleHQ6Ik9wdGlvbnMiLHNlbGVjdGVkVGV4dDpmdW5jdGlvbihjLG0seCl7cmV0dXJuICQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpP2MrIiAiKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Im11bHRpc2VsZWN0ZWRUZXh0VmFsdWUiXScpLnZhbCgpOmMrIiAiKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Im11bHRpc2VsZWN0ZWRUZXh0VmFsdWUiXScpLnZhbCgpKygxPGM\/InMiOiIiKX0sY2xhc3NlczoidHJhZGVJbkJhck11bHRpc2VsZWN0In0pLm11bHRpc2VsZWN0KCJyZWZyZXNoIik7CiQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC5vcGVuVmVoaWNsZU9wdGlvbnMiKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLm11bHRpc2VsZWN0VmVoaWNsZU9wdGlvbnMiKS5zaG93KCl9ZWxzZSAkKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAubXVsdGlzZWxlY3RWZWhpY2xlT3B0aW9ucyIpLmhpZGUoKSwkKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAub3BlblZlaGljbGVPcHRpb25zIikuc2hvdygpfX0pfSksbi5vbigicGFzdGUiLGZ1bmN0aW9uKCl7bGV0IGE9JCh0aGlzKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YS50cmlnZ2VyKCJrZXl1cCIpfSwyMDApfSksbi5vbigia2V5dXAiLGZ1bmN0aW9uKCl7JCh0aGlzKS52YWwoKSYmMTc8PSQodGhpcykudmFsKCkubGVuZ3RoJiYkLmFqYXgoe3R5cGU6IlBPU1QiLHVybDooJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L2dldFRyYWRlSW5NbmdWaW4\/d3N3aWR0aD0wIiwKZGF0YVR5cGU6Impzb24iLGRhdGE6e3ZpbjokKHRoaXMpLnZhbCgpLHByb3ZpbmNlOiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9ImRlYWxlclByb3ZpbmNlVHJhZGVJbiJdJykudmFsKCl9LHN1Y2Nlc3M6ZnVuY3Rpb24oYSl7YSYmYS5tb2RlbCYmYS55ZWFyPyhuLmZpcnN0KCkuYXR0cigidmluTW9kZWwiLGEubW9kZWwpLG4uZmlyc3QoKS5hdHRyKCJ2aW5ZZWFyIixhLnllYXIpLHkudmFsKGEubWFrZSkseS5maXJzdCgpLnRyaWdnZXIoImNoYW5nZSIpLGYoKSxlKCkpOmIoJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/IlVucmVjb2duaXplZCBWSU4iOiJOSVYgbm9uIHJlY29ubnUiKX19KX0pKTtmdW5jdGlvbiBiKGEpe3ZhciBkPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0cmFkZUluQmFyUG9wdXBOaXZEaXZDb250YWluZXIiKTtpZihkKXt2YXIgYz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVkV2FybmluZ01lc3NhZ2UiKTtjJiZjLnJlbW92ZSgpOwpjPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTtjLmlkPSJyZWRXYXJuaW5nTWVzc2FnZSI7Yy50ZXh0Q29udGVudD1hO2Muc3R5bGUuY29sb3I9InJlZCI7Yy5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiO2Muc3R5bGUudG9wPSI1MCUiO2Muc3R5bGUucmlnaHQ9IjhweCI7Yy5zdHlsZS5tYXJnaW5Ub3A9IjRweCI7Yy5zdHlsZS5mb250U2l6ZT0iMTFweCI7Yy5zdHlsZS50cmFuc2Zvcm09InRyYW5zbGF0ZVkoLTUwJSkiO2Quc3R5bGUucG9zaXRpb249InJlbGF0aXZlIjtkLmFwcGVuZENoaWxkKGMpfX1mdW5jdGlvbiBmKCl7dmFyIGE9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZFdhcm5pbmdNZXNzYWdlIik7YSYmYS5yZW1vdmUoKX1mdW5jdGlvbiBlKCl7dmFyIGE9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5pdk1ha2VNb2RlbFNlbGVjdE1vZGVsIik7YSYmYS5jbGljaygpOyhhPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0cmFkZUluQmFyUG9wdXBUcmltIikpJiYKYS5mb2N1cygpfX19fTsKLyoqIC9tL2pzL3RyYWRlaW5wb3B1cC5qcyAqKi8KdmFyIF9fX2QyY190cmFkZWlucG9wdXBqc19jX29uPSIyMDI2LTAyLTIwIDExOjMwOjMzIjsndXNlIHN0cmljdCc7dmFyIHRyYWRlaW5wb3B1cGQyYz17aW5pdDpmdW5jdGlvbigpe30sb25CZWZvcmVTdWJtaXQ6ZnVuY3Rpb24oYSl7ZW1haWxIYW5kbGVyLmRlcGFydG1lbnQ9Ik5FVyI7ZW1haWxIYW5kbGVyLmNvbmRpdGlvbj0ibmV3IjthLnNldHRpbmdzLnZlaGljbGVTdGF0ZT0ibmV3IjtpZigidXNlZGNhcnMuaHRtbCI9PSQoIiNQQUdFSUQiKS52YWwoKXx8IjAiPT0kKCJpbnB1dFtuYW1lPXRyYWRlSW5IYXNOZXdEZXBdIikudmFsKCkpZW1haWxIYW5kbGVyLmRlcGFydG1lbnQ9IlVTRUQiLGVtYWlsSGFuZGxlci5jb25kaXRpb249InVzZWQiLGEuc2V0dGluZ3MudmVoaWNsZVN0YXRlPSJ1c2VkIjtlbWFpbEhhbmRsZXIubWFrZT0kKCIjbGFzdHZpZXdlZG1ha2UiKS52YWwoKTtlbWFpbEhhbmRsZXIubW9kZWw9JCgiI2xhc3R2aWV3ZWRtb2RlbCIpLnZhbCgpO2VtYWlsSGFuZGxlci55ZWFyPSQoIiNsYXN0dmlld2VkeWVhciIpLnZhbCgpOyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IkVNQUlMTUFLRSJdJykudmFsKCQoIiNsYXN0dmlld2VkbWFrZSIpLnZhbCgpKTsKJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iRU1BSUxNT0RFTCJdJykudmFsKCQoIiNsYXN0dmlld2VkbW9kZWwiKS52YWwoKSk7JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iRU1BSUxZRUFSIl0nKS52YWwoJCgiI2xhc3R2aWV3ZWR5ZWFyIikudmFsKCkpOyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IlNUT0NLTlVNQkVSIl0nKS52YWwoJCgiI2xhc3R2aWV3ZWRzdG9ja251bWJlciIpLnZhbCgpKTskKCIjdmVoaWNsZWNvbG9yIikubGVuZ3RoJiYkKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJDT0xPUiJdJykudmFsKCQoIiN2ZWhpY2xlY29sb3IiKS52YWwoKSk7JCgiI3RyYWRlSW5CYXJQb3B1cE1ha2UiKS5oYXNDbGFzcygicmVxdWlyZWQiKSYmIiIhPSQoIiN0cmFkZUluQmFyUG9wdXBNYWtlIikudmFsKCkmJigkKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNQUtFRVgiXScpLnZhbCgkKCIjdHJhZGVJbkJhclBvcHVwTWFrZSIpLnZhbCgpKSwKZW1haWxIYW5kbGVyLmNhcjJfbWFrZT0kKCIjdHJhZGVJbkJhclBvcHVwTWFrZSIpLnZhbCgpKTskKCIjdHJhZGVJbkJhclBvcHVwTW9kZWwiKS5oYXNDbGFzcygicmVxdWlyZWQiKSYmIiIhPSQoIiN0cmFkZUluQmFyUG9wdXBNb2RlbCIpLnZhbCgpJiYoJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTU9ERUxFWCJdJykudmFsKCQoIiN0cmFkZUluQmFyUG9wdXBNb2RlbCIpLnZhbCgpKSxlbWFpbEhhbmRsZXIuY2FyMl9tb2RlbD0kKCIjdHJhZGVJbkJhclBvcHVwTW9kZWwiKS52YWwoKSk7JCgiI3RyYWRlSW5CYXJQb3B1cFRyaW0iKS5oYXNDbGFzcygicmVxdWlyZWQiKSYmIiIhPSQoIiN0cmFkZUluQmFyUG9wdXBUcmltIikudmFsKCkmJigkKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJUUklNRVgiXScpLnZhbCgkKCIjdHJhZGVJbkJhclBvcHVwVHJpbSIpLnZhbCgpKSwkKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJ0cmFkZWluYmFyU3R5bGVpZCJdJykudmFsKCQoIiN0cmFkZUluQmFyUG9wdXBUcmltIG9wdGlvbjpzZWxlY3RlZCIpLmF0dHIoImRhdGEtc3R5bGVpZCIpKSwKZW1haWxIYW5kbGVyLmNhcjJfdHJpbT0kKCIjdHJhZGVJbkJhclBvcHVwVHJpbSIpLnZhbCgpKTskKCIjdHJhZGVJbkJhclBvcHVwWWVhciIpLmhhc0NsYXNzKCJyZXF1aXJlZCIpJiYiIiE9JCgiI3RyYWRlSW5CYXJQb3B1cFllYXIiKS52YWwoKSYmKCQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IllFQVJFWCJdJykudmFsKCQoIiN0cmFkZUluQmFyUG9wdXBZZWFyIikudmFsKCkpLGVtYWlsSGFuZGxlci5jYXIyX3llYXI9JCgiI3RyYWRlSW5CYXJQb3B1cFllYXIiKS52YWwoKSk7JCgiI3RyYWRlSW5CYXJQb3B1cE5pdiIpLmxlbmd0aCYmIiIhPSQoIiN0cmFkZUluQmFyUG9wdXBOaXYiKS52YWwoKSYmJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iVklORVgiXScpLnZhbCgkKCIjdHJhZGVJbkJhclBvcHVwTml2IikudmFsKCkpO2VtYWlsSGFuZGxlci5jYXIyX29kb21ldGVyPSQoIiNyZWJhdGVNaWxlYWdlX3RyYWRlSW5CYXJQb3B1cCIpLnZhbCgpOwphLnNldHRpbmdzLmNsb3NlT25TdWJtaXQ9ITE7aWYoISQoImlucHV0W25hbWU9dHJhZGVJbkJhclNtc09yRW1haWxdOmNoZWNrZWQiKS5sZW5ndGgmJjA9PSQoImlucHV0W25hbWU9dHJhZGVJblZhbHVlQ0JCQ2FsbGVkXSIpLnZhbCgpJiYxIT0kKCJpbnB1dFtuYW1lPW5vQ0JCXSIpLnZhbCgpKXJldHVybiB0aGlzLm9uQmVmb3JlU3VibWl0Q0JCQ2FsbChhKSwhMTtpZighJCgiaW5wdXRbbmFtZT10cmFkZUluQmFyU21zT3JFbWFpbF06Y2hlY2tlZCIpLmxlbmd0aCYmMD09JCgiaW5wdXRbbmFtZT10cmFkZUluVmFsdWVDQkJDYWxsZWRdIikudmFsKCkmJjE9PSQoImlucHV0W25hbWU9aXNBY2N1dHJhZGVdIikudmFsKCkpcmV0dXJuIHRoaXMub25CZWZvcmVTdWJtaXRBY2N1dHJhZGVDYWxsKGEpLCExO2lmKCQoImlucHV0W25hbWU9dHJhZGVJbkJhclNtc09yRW1haWxdOmNoZWNrZWQiKS5sZW5ndGgmJjE9PSQoImlucHV0W25hbWU9dHJhZGVJblZhbHVlQ0JCQ2FsbGVkXSIpLnZhbCgpJiYKMT09JCgiaW5wdXRbbmFtZT10cmFkZUluVmFsdWVDQkJBdmFpbGFibGVWYWx1ZXNdIikudmFsKCkmJjEhPSQoImlucHV0W25hbWU9bm9DQkJdIikudmFsKCkpdGhpcy5vbkJlZm9yZVN1Ym1pdENCQk1lc3NhZ2UoYSk7ZWxzZSBpZigkKCJpbnB1dFtuYW1lPXRyYWRlSW5CYXJTbXNPckVtYWlsXTpjaGVja2VkIikubGVuZ3RoJiYxPT0kKCJpbnB1dFtuYW1lPXRyYWRlSW5WYWx1ZUNCQkNhbGxlZF0iKS52YWwoKSYmMT09JCgiaW5wdXRbbmFtZT10cmFkZUluVmFsdWVDQkJBdmFpbGFibGVWYWx1ZXNdIikudmFsKCkmJjE9PSQoImlucHV0W25hbWU9aXNBY2N1dHJhZGVdIikudmFsKCkpdGhpcy5vbkJlZm9yZVN1Ym1pdEFjY3V0cmFkZU1lc3NhZ2UoYSk7aWYoIjEiPT09JCgiaW5wdXRbbmFtZT1zdGVwM2FjdGl2ZV0iKS52YWwoKSYmIjAiPT09JCgiaW5wdXRbbmFtZT1zdGVwM2RvbmVdIikudmFsKCkpcmV0dXJuIHRoaXMuaW5pdFRyYWRlSW5TdGVwMygpLCExO2Euc2V0dGluZ3MuY2xvc2VPblN1Ym1pdD0KITB9LG9uQWZ0ZXJTdWJtaXQ6ZnVuY3Rpb24oYSl7JCgiYm9keSIpLnRyaWdnZXIoIlRyYWRlSW5CYXJQb3B1cFdpZGdldF9vblN1Ym1pdCIsW10pO2E9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1kZWZhdWx0U3VibWl0TWVzYWdlXSIpLnZhbCgpOzA9PSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9dHJhZGVJblZhbHVlQ0JCQXZhaWxhYmxlVmFsdWVzXSIpLnZhbCgpJiYxIT0kKCJpbnB1dFtuYW1lPW5vQ0JCXSIpLnZhbCgpJiYoYT0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPW5vVmFsdWVTdWJtaXRNZXNhZ2VdIikudmFsKCkpO2xldCBsPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9dHJhZGVJbkxvd10iKS52YWwoKXx8MCxnPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9dHJhZGVJbkhpZ2hdIikudmFsKCl8fDAsYj0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPXRyYWRlSW5BdmddIikudmFsKCl8fAowO3ZhciBkPSQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IllFQVJFWCJdJykudmFsKCkrIiAiKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1BS0VFWCJdJykudmFsKCkrIiAiKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1PREVMRVgiXScpLnZhbCgpOiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1BS0VFWCJdJykudmFsKCkrIiAiKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1PREVMRVgiXScpLnZhbCgpKyIgIiskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJZRUFSRVgiXScpLnZhbCgpO2lmKDE9PSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9UkVBTFRJTUVFU1RJTUFURV0iKS52YWwoKSl7dmFyIGg9JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iQ0JCU0lOR0xFVkFMVUUiXScpLnZhbCgpOwpsZXQgYz0nPHNwYW4gc3R5bGU9InRleHQtYWxpZ246Y2VudGVyO2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTZweDsiPjxicj4nK2QrIjwvc3Bhbj4iLG49IiI7JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/IjEiPT1oP2MrPSI8YnI+RXN0aW1hdGVkIFZhbHVlOiAkIitiOihjKz0iPGJyPk1pbmltdW0gRXN0aW1hdGVkIFZhbHVlOiAkIitsLGMrPSI8YnI+TWF4aW11bSBFc3RpbWF0ZWQgVmFsdWU6ICQiK2cpOiIxIj09aD9jKz0iPGJyPlZhbGV1ciBlc3RpbcOpZTogIitiKyIkIjooYys9Ijxicj5WYWxldXIgZXN0aW3DqWUgbWluaW1hbGU6ICIrbCsiJCIsYys9Ijxicj5WYWxldXIgZXN0aW3DqWUgbWF4aW1hbGU6ICIrZysiJCIpO24rPSc8ZGl2IHN0eWxlPSJmb250LXNpemU6MTJweDttYXJnaW4tdG9wOjEwcHg7Ij4nKyQoImlucHV0W25hbWU9dHJhZGVJbk1zZ0Rpc2NsYWltZXJUZXh0MV0iKS52YWwoKSskKCJpbnB1dFtuYW1lPXRyYWRlSW5Nc2dEaXNjbGFpbWVyVGV4dDJdIikudmFsKCkrCiI8L2Rpdj4iO2ErPSc8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjtmb250LXdlaWdodDpib2xkO2ZvbnQtc2l6ZToyMHB4OyI+JytjKyI8L2Rpdj4iK259JCgiI2VtYWlsU3VjY2Vzc01lc3NhZ2VfVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIHAiKS5odG1sKCI8YnI+IithKTtsZXQgZj1pc05hTihwYXJzZUludChiKSk\/ZzpiO2lzTmFOKHBhcnNlSW50KGYpKXx8KGE9bmV3IEN1c3RvbUV2ZW50KCJ0cmFja3N0ZXAuY29tcGxldGUiLHtkZXRhaWw6e3N0ZXBJZDoiVHJhZGVJbkFjdGlvbkJveCIsb25Db21wbGV0ZTpjPT57Yy5kYXRhc2V0LmNvbXBsX3R4dF9mcj1jLmRhdGFzZXQuY29tcGxfdHh0X2ZyLnJlcGxhY2UoInskVFJBREVDQVJ9IixkKS5yZXBsYWNlKCJ7JFRSQURFVkFMfSIsZik7Yy5kYXRhc2V0LmNvbXBsX3R4dF9lbj1jLmRhdGFzZXQuY29tcGxfdHh0X2VuLnJlcGxhY2UoInskVFJBREVDQVJ9IixkKS5yZXBsYWNlKCJ7JFRSQURFVkFMfSIsZik7dmFyIG49e3llYXI6JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1ZRUFSRVhdIikudmFsKCksCm1ha2U6JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1NQUtFRVhdIikudmFsKCksbW9kZWw6JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1NT0RFTEVYXSIpLnZhbCgpLHRyaW06JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1UUklNRVhdIikudmFsKCksdmFsdWU6cGFyc2VJbnQoZi5yZXBsYWNlKCIsIiwiIikpfTtfbG9jYWxTdG9yYWdlU2V0KCJ0cmFkZWluX3N1Ym1pdF9kYXRhIixKU09OLnN0cmluZ2lmeShuKSwxKTtpZigxPnBhcnNlSW50KGYpKXtuPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9emVyb1ZhbHVlTWVzc2FnZUVuXSIpLnZhbCgpO2xldCByPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9emVyb1ZhbHVlTWVzc2FnZUZyXSIpLnZhbCgpO2MuZGF0YXNldC5jb21wbF90eHRfZnI9YCR7ZH0gfCAke3J9YDtjLmRhdGFzZXQuY29tcGxfdHh0X2VuPWAke2R9IHwgJHtufWB9fSxmb3JjZVVwZGF0ZTohMH19KSwKZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChhKSk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gW25hbWU9dHJhZGVJbkF2Z10iKS52YWwoMCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gW25hbWU9dHJhZGVJbkxvd10iKS52YWwoMCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gW25hbWU9dHJhZGVJbkhpZ2hdIikudmFsKDApOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIFtuYW1lPXRyYWRlSW5WYWx1ZUNCQkF2YWlsYWJsZVZhbHVlc10iKS52YWwoMCk7JCgiLnRyYWRlSW5CYXJTdGVwMSIpLnNob3coKTskKCIudHJhZGVJbkJhclN0ZXAyVGl0bGUiKS50ZXh0KCQoIi50cmFkZUluQmFyU3RlcDJUaXRsZSIpLnRleHQoKS5yZXBsYWNlKCIgIitkLCIiKSk7JCgiaW5wdXRbbmFtZT10cmFkZUluQmFyU21zT3JFbWFpbF0iKS5yZW1vdmVDbGFzcygicmVxUmFkaW8iKTskKCIudHJhZGVJbkJhclN0ZXAyIikuaGlkZSgpOyQoImlucHV0W25hbWU9dHJhZGVJblZhbHVlQ0JCQ2FsbGVkXSIpLnZhbCgwKTsKJCgiaW5wdXRbbmFtZT10cmFkZUluQmFyU21zT3JFbWFpbF06Y2hlY2tlZCIpLnByb3AoImNoZWNrZWQiLCExKTskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBzZWxlY3RbbmFtZT0iVkVISUNMRU9QVElPTlMiXScpLmZpbmQoIm9wdGlvbiIpLnJlbW92ZSgpOyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IlFVRVNUSU9OUyJdJykudmFsKCIiKX0sb25CZWZvcmVPcGVuOmZ1bmN0aW9uKCl7Zm9yKHZhciBhPWdldFVybFZhcnMoKSxsPU9iamVjdC5rZXlzKGEpLGc9bC5sZW5ndGgsYj17fTtnLS07KXt2YXIgZD1sW2ddO2JbZC50b0xvd2VyQ2FzZSgpXT1hW2RdfWE9Yjt2YXIgaD0kKCdzZWxlY3RbbmFtZT0idHJhZGluTWFrZSJdJykudmFsKCk\/JCgnc2VsZWN0W25hbWU9InRyYWRpbk1ha2UiXScpLnZhbCgpOmQyY21lZGlhLmNhcGl0YWxpc2VGaXJzdExldHRlcihhLnRtYWtlP2EudG1ha2UudG9Mb3dlckNhc2UoKToiIiksZj0kKCdzZWxlY3RbbmFtZT0idHJhZGluTW9kZWwiXScpLnZhbCgpPwokKCdzZWxlY3RbbmFtZT0idHJhZGluTW9kZWwiXScpLnZhbCgpOmQyY21lZGlhLmNhcGl0YWxpc2VGaXJzdExldHRlcihhLnRtb2RlbD9hLnRtb2RlbC50b0xvd2VyQ2FzZSgpOiIiKTtsPSQoJ3NlbGVjdFtuYW1lPSJ0cmFkaW5UcmltIl0nKS52YWwoKT8kKCdzZWxlY3RbbmFtZT0idHJhZGluVHJpbSJdJykudmFsKCk6IiAiO2c9JCgnc2VsZWN0W25hbWU9InRyYWRpblRyaW0iXScpLnZhbCgpPyQoJ3NlbGVjdFtuYW1lPSJ0cmFkaW5UcmltIl0gb3B0aW9uOnNlbGVjdGVkJykuYXR0cigiZGF0YS1zdHlsZWlkIik6IiAiO3ZhciBjPSQoJ3NlbGVjdFtuYW1lPSJ0cmFkaW5ZZWFyIl0nKS52YWwoKT8kKCdzZWxlY3RbbmFtZT0idHJhZGluWWVhciJdJykudmFsKCk6YS50eWVhcjthPSQoJ2lucHV0W25hbWU9InRyYWRpblZpbiJdJykudmFsKCk\/JCgnaW5wdXRbbmFtZT0idHJhZGluVmluIl0nKS52YWwoKToiIjskKCJ0cmFkZUluU2VsZWN0ZWRNYWtlIikudmFsKGgpOyQoInRyYWRlSW5TZWxlY3RlZE1vZGVsIikudmFsKGYpOwokKCJ0cmFkZUluU2VsZWN0ZWRUcmltIikudmFsKGwpOyQoInRyYWRlSW5TZWxlY3RlZFllYXIiKS52YWwoYyk7JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTUFLRUVYIl0nKS52YWwoaCk7JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTU9ERUxFWCJdJykudmFsKGYpOyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IlRSSU1FWCJdJykudmFsKGwpOyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IllFQVJFWCJdJykudmFsKGMpOyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9InRyYWRlaW5iYXJTdHlsZWlkIl0nKS52YWwoZyk7JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iVklORVgiXScpLnZhbChhKTtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBjbGllbnRTdG9yYWdlKXt2YXIgbjthPW51bGwhPShuPWNsaWVudFN0b3JhZ2UuZ2V0KCJmaXJzdG5hbWUiKSk\/bjoiIjt2YXIgcjtuPW51bGwhPQoocj1jbGllbnRTdG9yYWdlLmdldCgibGFzdG5hbWUiKSk\/cjoiIjtyPWErKCIiIT1uPyIgIitjbGllbnRTdG9yYWdlLmdldCgibGFzdG5hbWUiKToiIik7JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iRk5BTUUiXScpLnZhbChyKTt2YXIgZTskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJFTUFJTFBIT05FIl0nKS52YWwobnVsbCE9KGU9Y2xpZW50U3RvcmFnZS5nZXQoImVtYWlsIikpP2U6IiIpO3ZhciB1OyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IkVNQUlMIl0nKS52YWwobnVsbCE9KHU9Y2xpZW50U3RvcmFnZS5nZXQoInBob25lIikpP3U6IiIpfWVtYWlsSGFuZGxlci5jYXIyX21ha2U9aDtlbWFpbEhhbmRsZXIuY2FyMl9tb2RlbD1mO2VtYWlsSGFuZGxlci5jYXIyX3RyaW09bDtlbWFpbEhhbmRsZXIuY2FyMl95ZWFyPWM7ZW1haWxIYW5kbGVyLmNhcjJfb2RvbWV0ZXI9JCgiI3JlYmF0ZU1pbGVhZ2VfdHJhZGVJbkJhclBvcHVwIikudmFsKCk7CmVtYWlsSGFuZGxlci5kZXBhcnRtZW50PSJORVciO2lmKCJ1c2VkY2Fycy5odG1sIj09JCgiI1BBR0VJRCIpLnZhbCgpfHwiMCI9PSQoImlucHV0W25hbWU9dHJhZGVJbkhhc05ld0RlcF0iKS52YWwoKSllbWFpbEhhbmRsZXIuZGVwYXJ0bWVudD0iVVNFRCI7ZT0kKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iICIrYysiICIraCsiICIrZjoiICIraCsiICIrZisiICIrYzskKCIjdHJhZGVJbkJhclBvcHVwU2VsZWN0ZWRWZWhpY2xlIikuaHRtbChlKTtDb29raWVzLmdldCgicG9wdXBQYWdlVmlld3MiKXx8Q29va2llcy5zZXQoInBvcHVwUGFnZVZpZXdzIiwiMCIsbnVsbCwiLyIpO2lmKCIxIj09JCgiI2lzTW9iaWxlIikudmFsKCl8fCIiPT1ofHwiIj09Znx8IiI9PWMpeyIxIiE9JCgiI2lzTW9iaWxlIikudmFsKCkmJigkKCIjVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIikuY3NzKCJoZWlnaHQiLCI2MzVweCIpLCQoIiN0cmFkZUluQmFyUG9wdXBfZm9ybVciKS5jc3MoImhlaWdodCIsCiI2MzVweCIpKTskKCIjdHJhZGVJbkJhclBvcHVwTWFrZSIpLmFkZENsYXNzKCJyZXF1aXJlZCIpOyQoIiN0cmFkZUluQmFyUG9wdXBNYWtlIikuZW1wdHkoKTskKCIjdHJhZGVJbkJhclBvcHVwTW9kZWwiKS5hZGRDbGFzcygicmVxdWlyZWQiKTskKCIjdHJhZGVJbkJhclBvcHVwTW9kZWwiKS5lbXB0eSgpOyQoIiN0cmFkZUluQmFyUG9wdXBZZWFyIikuYWRkQ2xhc3MoInJlcXVpcmVkIik7JCgiI3RyYWRlSW5CYXJQb3B1cFllYXIiKS5lbXB0eSgpOyJ2aW4iIT0kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJDQkJNT0RFTFNFTEVDVCJdJykudmFsKCk\/KCQoIiN0cmFkZUluQmFyUG9wdXBNYWtlRGl2Q29udGFpbmVyIikuY3NzKCJkaXNwbGF5IiwiaW5saW5lLWJsb2NrIiksJCgiI3RyYWRlSW5CYXJQb3B1cE1vZGVsRGl2Q29udGFpbmVyIikuY3NzKCJkaXNwbGF5IiwiaW5saW5lLWJsb2NrIiksJCgiI3RyYWRlSW5CYXJQb3B1cFllYXJEaXZDb250YWluZXIiKS5jc3MoImRpc3BsYXkiLAoiaW5saW5lLWJsb2NrIikpOiQoIiN0cmFkZUluQmFyUG9wdXBOaXZEaXZDb250YWluZXIiKS5jc3MoImRpc3BsYXkiLCJpbmxpbmUtYmxvY2siKTswIT0kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJDQkJNT0RFTFNFTEVDVCJdJykudmFsKCkmJigkKCcubml2TWFrZU1vZGVsU2VsZWN0Q29udGFpbmVyIC5uaXZNYWtlTW9kZWxTZWxlY3RbdmFsdWU9IicrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iQ0JCTU9ERUxTRUxFQ1QiXScpLnZhbCgpKyciXScpLnByb3AoImNoZWNrZWQiLCEwKSwkKCIubml2TWFrZU1vZGVsU2VsZWN0Q29udGFpbmVyIikuc2hvdygpKTskKCIjdHJhZGVJbkJhclBvcHVwVHJpbURpdkNvbnRhaW5lciIpLmNzcygiZGlzcGxheSIsImlubGluZS1ibG9jayIpOyQoIiN0cmFkZUluQmFyUG9wdXBUcmltIikuYWRkQ2xhc3MoInJlcXVpcmVkIik7JCgiI3RyYWRlSW5CYXJQb3B1cFRyaW0iKS5lbXB0eSgpO2U9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/CiIgdHJhZGUtaW4hIjoiIMOpY2hhbmdlISI7JCgiI3RyYWRlSW5CYXJQb3B1cFNlbGVjdGVkVmVoaWNsZSIpLmh0bWwoZSk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLm5pdk1ha2VNb2RlbFNlbGVjdCIpLmxlbmd0aCYmJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLm5pdk1ha2VNb2RlbFNlbGVjdCIpLnRyaWdnZXIoImNoYW5nZSIpO3ZhciBxPSQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyJFTkdMSVNIIjoiRlJFTkNIIjskLmFqYXgoe3R5cGU6IlBPU1QiLHVybDooIkVOR0xJU0giPT1xPyIvZW4vIjoiL2ZyLyIpKyIvYWpheC9nZXRUcmFkZUluQmFyRGF0YT93c3dpZHRoPTAiLGRhdGFUeXBlOiJqc29uIixkYXRhOntsYW5ndWFnZTpxfSxzdWNjZXNzOmZ1bmN0aW9uKG0peyQoIiN0cmFkZUluQmFyUG9wdXBNYWtlIikuYXBwZW5kKCc8b3B0aW9uIHZhbHVlPSIiPicrKCJFTkdMSVNIIj09cT8iTWFrZSI6Ik1hcnF1ZSIpKyI8L29wdGlvbj4iKTsKZm9yKHZhciBrPTA7azxtLmxlbmd0aDtrKyspe3ZhciBwPW1ba10ubWFrZS50b0xvd2VyQ2FzZSgpPT1oLnRvTG93ZXJDYXNlKCk\/J3NlbGVjdGVkPSJzZWxlY3RlZCInOiIiO2xldCB0PTE9PSQoImlucHV0W25hbWU9aXNBY2N1dHJhZGVdIikudmFsKCk\/bVtrXS5tYWtlLnRvVXBwZXJDYXNlKCk6bVtrXS5tYWtlOyQoIiN0cmFkZUluQmFyUG9wdXBNYWtlIikuYXBwZW5kKCI8b3B0aW9uICIrcCsnIHZhbHVlPSInK3QrJyI+JyttW2tdLm1ha2UrIjwvb3B0aW9uPiIpfSQoIiN0cmFkZUluQmFyUG9wdXBNYWtlIikudHJpZ2dlcigiY2hhbmdlIik7JCgiI3RyYWRlSW5CYXJQb3B1cE5pdiIpLmxlbmd0aCYmJCgiI3RyYWRlSW5CYXJQb3B1cE5pdiIpLnRyaWdnZXIoImtleXVwIil9fSl9ZWxzZSIgIj09bD8oJCgiI3RyYWRlSW5CYXJQb3B1cFRyaW1EaXZDb250YWluZXIiKS5jc3MoImRpc3BsYXkiLCJpbmxpbmUtYmxvY2siKSwkKCIjdHJhZGVJbkJhclBvcHVwVHJpbSIpLmFkZENsYXNzKCJyZXF1aXJlZCIpLAokKCIjdHJhZGVJbkJhclBvcHVwVHJpbSIpLmVtcHR5KCkscT0kKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iRU5HTElTSCI6IkZSRU5DSCIsMSE9JCgiaW5wdXRbbmFtZT1ub0NCQl0iKS52YWwoKT8kLmFqYXgoe3R5cGU6IlBPU1QiLHVybDooIkVOR0xJU0giPT1xPyIvZW4vIjoiL2ZyLyIpKyIvYWpheC9nZXRUcmFkZUluQmFyVHJpbT93c3dpZHRoPTAiLGRhdGFUeXBlOiJqc29uIixkYXRhOntsYW5ndWFnZTpxLG1ha2U6aCxtb2RlbDpmLHllYXI6Y30sc3VjY2VzczpmdW5jdGlvbihtKXskKCIjdHJhZGVJbkJhclBvcHVwVHJpbSIpLmFwcGVuZCgnPG9wdGlvbiB2YWx1ZT0iIj4nKygiRU5HTElTSCI9PXE\/IlRyaW0iOiJWZXJzaW9uIikrIjwvb3B0aW9uPiIpO2Zvcih2YXIgaz0wO2s8bS5sZW5ndGg7aysrKXt2YXIgcD1tW2tdLnN0eWxlKyIgIittW2tdLnNlcmllcyx0PW1ba10udXZjOyQoIiN0cmFkZUluQmFyUG9wdXBUcmltIikuYXBwZW5kKCc8b3B0aW9uIGRhdGEtc3R5bGVpZD0iJysKdCsnIiB2YWx1ZT0iJytwKyciPicrcCsiPC9vcHRpb24+Iil9fX0pOjE9PSQoImlucHV0W25hbWU9aXNBY2N1dHJhZGVdIikudmFsKCk\/JC5hamF4KHt0eXBlOiJQT1NUIix1cmw6KCJFTkdMSVNIIj09cT8iL2VuLyI6Ii9mci8iKSsiL2FqYXgvZ2V0VHJhZGVJbk1uZ1RyaW0\/d3N3aWR0aD0wIixkYXRhVHlwZToianNvbiIsZGF0YTp7bGFuZ3VhZ2U6cSxtYWtlOmgsbW9kZWw6Zix5ZWFyOmN9LHN1Y2Nlc3M6ZnVuY3Rpb24obSl7JCgiI3RyYWRlSW5CYXJQb3B1cFRyaW0iKS5hcHBlbmQoJzxvcHRpb24gdmFsdWU9IiI+JysoIkVOR0xJU0giPT1xPyJUcmltIjoiVmVyc2lvbiIpKyI8L29wdGlvbj4iKTtmb3IodmFyIGs9MDtrPG0ubGVuZ3RoO2srKyl7dmFyIHA9bVtrXS5uYW1lLHQ9bVtrXS5pZDskKCIjdHJhZGVJbkJhclBvcHVwVHJpbSIpLmFwcGVuZCgnPG9wdGlvbiBkYXRhLXN0eWxlaWQ9IicrdCsnIiB2YWx1ZT0iJytwKyciPicrcCsiPC9vcHRpb24+Iil9fX0pOgokLmFqYXgoe3R5cGU6IlBPU1QiLHVybDooIkVOR0xJU0giPT1xPyIvZW4vIjoiL2ZyLyIpKyIvYWpheC9nZXRUcmFkZUluQmFyRGF0YT93c3dpZHRoPTAiLGRhdGFUeXBlOiJqc29uIixkYXRhOntsYW5ndWFnZTpxLG1ha2U6aH0sc3VjY2VzczpmdW5jdGlvbihtKXskKCIjdHJhZGVJbkJhclBvcHVwVHJpbSIpLmFwcGVuZCgnPG9wdGlvbiB2YWx1ZT0iIj4nKygiRU5HTElTSCI9PXE\/IlRyaW0iOiJWZXJzaW9uIikrIjwvb3B0aW9uPiIpO2Zvcih2YXIgaz0wO2s8bVtjXS5sZW5ndGg7aysrKW1bY11ba10ubW9kZWwudG9Mb3dlckNhc2UoKT09Zi50b0xvd2VyQ2FzZSgpJiYkKCIjdHJhZGVJbkJhclBvcHVwVHJpbSIpLmFwcGVuZCgnPG9wdGlvbiB2YWx1ZT0iJyttW2NdW2tdLnRyaW0rJyI+JyttW2NdW2tdLnRyaW0rIjwvb3B0aW9uPiIpfX0pKTooJCgiI3RyYWRlSW5CYXJQb3B1cE1ha2VEaXZDb250YWluZXIiKS5oaWRlKCksJCgiI3RyYWRlSW5CYXJQb3B1cE1ha2UiKS5yZW1vdmVDbGFzcygicmVxdWlyZWQiKSwKJCgiI3RyYWRlSW5CYXJQb3B1cE1vZGVsRGl2Q29udGFpbmVyIikuaGlkZSgpLCQoIiN0cmFkZUluQmFyUG9wdXBNb2RlbCIpLnJlbW92ZUNsYXNzKCJyZXF1aXJlZCIpLCQoIiN0cmFkZUluQmFyUG9wdXBZZWFyRGl2Q29udGFpbmVyIikuaGlkZSgpLCQoIiN0cmFkZUluQmFyUG9wdXBZZWFyIikucmVtb3ZlQ2xhc3MoInJlcXVpcmVkIiksJCgiI3RyYWRlSW5CYXJQb3B1cFRyaW1EaXZDb250YWluZXIiKS5oaWRlKCksJCgiI3RyYWRlSW5CYXJQb3B1cFRyaW0iKS5yZW1vdmVDbGFzcygicmVxdWlyZWQiKSwxIT0kKCJpbnB1dFtuYW1lPW5vQ0JCXSIpLnZhbCgpPygkKCIubml2TWFrZU1vZGVsU2VsZWN0Q29udGFpbmVyIikuaGlkZSgpLCQoIiN0cmFkZUluQmFyUG9wdXBOaXZEaXZDb250YWluZXIiKS5oaWRlKCksJC5hamF4KHt0eXBlOiJQT1NUIix1cmw6KCQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyIvZW4vIjoiL2ZyLyIpKyIvYWpheC9nZXRUcmFkZUluQmFyVmFsdWU\/d3N3aWR0aD0wIiwKZGF0YVR5cGU6Impzb24iLGRhdGE6e3V2YzokKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJ0cmFkZWluYmFyU3R5bGVpZCJdJykudmFsKCkscHJvdmluY2U6JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iZGVhbGVyUHJvdmluY2VUcmFkZUluIl0nKS52YWwoKX0sc3VjY2VzczpmdW5jdGlvbihtKXskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBzZWxlY3RbbmFtZT0iVkVISUNMRU9QVElPTlMiXScpLmZpbmQoIm9wdGlvbiIpLnJlbW92ZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC5tdWx0aXNlbGVjdFZlaGljbGVPcHRpb25zIikuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC5vcGVuVmVoaWNsZU9wdGlvbnMiKS5zaG93KCl9fSkpOjE9PSQoImlucHV0W25hbWU9aXNBY2N1dHJhZGVdIikudmFsKCkmJigkKCIubml2TWFrZU1vZGVsU2VsZWN0Q29udGFpbmVyIikuaGlkZSgpLCQoIiN0cmFkZUluQmFyUG9wdXBOaXZEaXZDb250YWluZXIiKS5oaWRlKCksCiQuYWpheCh7dHlwZToiUE9TVCIsdXJsOigkKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iL2VuLyI6Ii9mci8iKSsiL2FqYXgvZ2V0VHJhZGVJbk1uZ09wdGlvbnM\/d3N3aWR0aD0wIixkYXRhVHlwZToianNvbiIsZGF0YTp7aWQ6JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0idHJhZGVpbmJhclN0eWxlaWQiXScpLnZhbCgpLHByb3ZpbmNlOiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9ImRlYWxlclByb3ZpbmNlVHJhZGVJbiJdJykudmFsKCl9LHN1Y2Nlc3M6ZnVuY3Rpb24obSl7JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gc2VsZWN0W25hbWU9IlZFSElDTEVPUFRJT05TIl0nKS5maW5kKCJvcHRpb24iKS5yZW1vdmUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAubXVsdGlzZWxlY3RWZWhpY2xlT3B0aW9ucyIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAub3BlblZlaGljbGVPcHRpb25zIikuc2hvdygpfX0pKSk7CmE9Z2V0VXJsVmFycygpO2U9YS5oYXNPd25Qcm9wZXJ0eSgidHJhZGUtdmFsdWUiKSYmInllcyI9PWFbInRyYWRlLXZhbHVlIl07dT1hLmhhc093blByb3BlcnR5KCJ0cmFkZS12YWx1ZSIpJiYibm8iPT1hWyJ0cmFkZS12YWx1ZSJdO3I9JCgnaW5wdXRbbmFtZT0iQ0JCQ2hlY2tVc2VyIl0nKS5sZW5ndGg\/YXRvYigkKCdpbnB1dFtuYW1lPSJDQkJDaGVja1VzZXIiXScpLnZhbCgpKToiIjt1fHwiNjYuMTMwLjEwNy4xNTciIT1yJiYxIT1Db29raWVzLmdldCgiRDJDVVVJRCIpJiYhZXx8MT09JCgiaW5wdXRbbmFtZT1ub0NCQl0iKS52YWwoKXx8KCQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IkZOQU1FIl0nKS5oaWRlKCksJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iRU1BSUxQSE9ORSJdJykuaGlkZSgpLCQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IkVNQUlMIl0nKS5oaWRlKCksJCgiLnRyYWRlSW5CYXJEZWFsZXJNZXNzYWdlIikuc2hvdygpKTsKJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gW25hbWU9IkVNQUlMUEhPTkUiXScpLmVhY2goKG0sayk9PntJTWFzayhrLHttYXNrOlt7bWFzazoiMDAwIDAwMC0wMDAwIn0se21hc2s6IjEgMDAwIDAwMC0wMDAwIn1dfSl9KTt0aGlzLnRyYWRlSW5Cb3R0b21Mb2dvSGVpZ3QoKX0sb25CZWZvcmVWYWxpZGF0aW9uOmZ1bmN0aW9uKGEpe3ZhciBsPWdldFVybFZhcnMoKTthPWwuaGFzT3duUHJvcGVydHkoInRyYWRlLXZhbHVlIikmJiJ5ZXMiPT1sWyJ0cmFkZS12YWx1ZSJdO2w9bC5oYXNPd25Qcm9wZXJ0eSgidHJhZGUtdmFsdWUiKSYmIm5vIj09bFsidHJhZGUtdmFsdWUiXTt2YXIgZz0kKCdpbnB1dFtuYW1lPSJDQkJDaGVja1VzZXIiXScpLmxlbmd0aD9hdG9iKCQoJ2lucHV0W25hbWU9IkNCQkNoZWNrVXNlciJdJykudmFsKCkpOiIiO2lmKCFsJiYoIjY2LjEzMC4xMDcuMTU3Ij09Z3x8MT09Q29va2llcy5nZXQoIkQyQ1VVSUQiKXx8YSkmJjEhPSQoImlucHV0W25hbWU9bm9DQkJdIikudmFsKCkpeyQoIiNyZWJhdGVNaWxlYWdlX3RyYWRlSW5CYXJQb3B1cCIpLnJlbW92ZUNsYXNzKCJ2YWxpZGl0eS1lcnJvbmVvdXMiKTsKJCgiI3RyYWRlSW5CYXJQb3B1cE1ha2UiKS5oYXNDbGFzcygicmVxdWlyZWQiKSYmIiIhPSQoIiN0cmFkZUluQmFyUG9wdXBNYWtlIikudmFsKCkmJiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1BS0VFWCJdJykudmFsKCQoIiN0cmFkZUluQmFyUG9wdXBNYWtlIikudmFsKCkpOyQoIiN0cmFkZUluQmFyUG9wdXBNb2RlbCIpLmhhc0NsYXNzKCJyZXF1aXJlZCIpJiYiIiE9JCgiI3RyYWRlSW5CYXJQb3B1cE1vZGVsIikudmFsKCkmJiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1PREVMRVgiXScpLnZhbCgkKCIjdHJhZGVJbkJhclBvcHVwTW9kZWwiKS52YWwoKSk7JCgiI3RyYWRlSW5CYXJQb3B1cFRyaW0iKS5oYXNDbGFzcygicmVxdWlyZWQiKSYmIiIhPSQoIiN0cmFkZUluQmFyUG9wdXBUcmltIikudmFsKCkmJigkKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJUUklNRVgiXScpLnZhbCgkKCIjdHJhZGVJbkJhclBvcHVwVHJpbSIpLnZhbCgpKSwKJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0idHJhZGVpbmJhclN0eWxlaWQiXScpLnZhbCgkKCIjdHJhZGVJbkJhclBvcHVwVHJpbSBvcHRpb246c2VsZWN0ZWQiKS5hdHRyKCJkYXRhLXN0eWxlaWQiKSkpOyQoIiN0cmFkZUluQmFyUG9wdXBZZWFyIikuaGFzQ2xhc3MoInJlcXVpcmVkIikmJiIiIT0kKCIjdHJhZGVJbkJhclBvcHVwWWVhciIpLnZhbCgpJiYkKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJZRUFSRVgiXScpLnZhbCgkKCIjdHJhZGVJbkJhclBvcHVwWWVhciIpLnZhbCgpKTtpZigxPiQoIiNyZWJhdGVNaWxlYWdlX3RyYWRlSW5CYXJQb3B1cCIpLnZhbCgpKXJldHVybiAkKCIjcmViYXRlTWlsZWFnZV90cmFkZUluQmFyUG9wdXAiKS5hZGRDbGFzcygidmFsaWRpdHktZXJyb25lb3VzIiksITE7YT0kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBzZWxlY3RbbmFtZT0iVkVISUNMRU9QVElPTlMiXScpLmZpbmQoIm9wdGlvbjpzZWxlY3RlZCIpLm1hcChmdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlfSkuZ2V0KCkuam9pbigiLCAiKTsKdmFyIGI9JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gc2VsZWN0W25hbWU9IlZFSElDTEVPUFRJT05TIl0nKS5maW5kKCJvcHRpb246c2VsZWN0ZWQiKS5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50ZXh0fSkuZ2V0KCkuam9pbigiLCAiKTtsPSQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IktNIl0nKS52YWwoKTskLmFqYXgoe3R5cGU6IlBPU1QiLHVybDooJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L2dldFRyYWRlSW5CYXJWYWx1ZT93c3dpZHRoPTAiLGRhdGFUeXBlOiJqc29uIixkYXRhOnt1dmM6JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0idHJhZGVpbmJhclN0eWxlaWQiXScpLnZhbCgpLG9wdGlvbnM6YSx2ZWhpY2xlS006bCxwcm92aW5jZTokKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJkZWFsZXJQcm92aW5jZVRyYWRlSW4iXScpLnZhbCgpfSwKc3VjY2VzczpmdW5jdGlvbihkKXt2YXIgaD1kLmNhbmFkaWFuX3RyYWRlaW5fdmFsdWV8fGQuYmFzZV90cmFkZWluX2F2Z3x8MCxmPWQuY2FuYWRpYW5fdHJhZGVpbl9sb3d8fGQuYmFzZV90cmFkZWluX3JvdWdofHwwO2Q9ZC5jYW5hZGlhbl90cmFkZWluX2hpZ2h8fGQuYmFzZV90cmFkZWluX2NsZWFufHwwO2g9IiQiK0QyQ1V0aWxzLkZvcm1hdC50b051bWJlcihoKTtmPSIkIitEMkNVdGlscy5Gb3JtYXQudG9OdW1iZXIoZik7ZD0iJCIrRDJDVXRpbHMuRm9ybWF0LnRvTnVtYmVyKGQpO3ZhciBjPSQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IllFQVJFWCJdJykudmFsKCkrIiAiKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1BS0VFWCJdJykudmFsKCkrIiAiKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1PREVMRVgiXScpLnZhbCgpKyIgIiskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJUUklNRVgiXScpLnZhbCgpOgokKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNQUtFRVgiXScpLnZhbCgpKyIgIiskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNT0RFTEVYIl0nKS52YWwoKSsiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iWUVBUkVYIl0nKS52YWwoKSsiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iVFJJTUVYIl0nKS52YWwoKTtiJiYoYys9IiAoIitiKyIpIik7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJEZWFsZXJTdGVwIC50cmFkZUluQmFyRGVhbGVyU3RlcE1ha2VNb2RlbFllYXIiKS50ZXh0KGMpOyIxIj09JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iQ0JCU0lOR0xFVkFMVUUiXScpLnZhbCgpPygkKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhckRlYWxlclN0ZXAgLnRyYWRlSW5CYXJDQkJNaW5WYWx1ZSIpLnBhcmVudCgpLmhpZGUoKSwkKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhckRlYWxlclN0ZXAgLnRyYWRlSW5CYXJDQkJNYXhWYWx1ZSIpLnBhcmVudCgpLmhpZGUoKSk6CiQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyRGVhbGVyU3RlcCAudHJhZGVJbkJhckNCQkF2Z1ZhbHVlIikucGFyZW50KCkuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyRGVhbGVyU3RlcCAudHJhZGVJbkJhckNCQk1pblZhbHVlIikudGV4dChmKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhckRlYWxlclN0ZXAgLnRyYWRlSW5CYXJDQkJNYXhWYWx1ZSIpLnRleHQoZCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJEZWFsZXJTdGVwIC50cmFkZUluQmFyQ0JCQXZnVmFsdWUiKS50ZXh0KGgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyRGVhbGVyU3RlcCIpLnNob3coKX19KTtyZXR1cm4hMX19LG9uQmVmb3JlU3VibWl0Q0JCQ2FsbDpmdW5jdGlvbihhKXt2YXIgbD0kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBzZWxlY3RbbmFtZT0iVkVISUNMRU9QVElPTlMiXScpLmZpbmQoIm9wdGlvbjpzZWxlY3RlZCIpLm1hcChmdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlfSkuZ2V0KCkuam9pbigiLCAiKSwKZz0kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBzZWxlY3RbbmFtZT0iVkVISUNMRU9QVElPTlMiXScpLmZpbmQoIm9wdGlvbjpzZWxlY3RlZCIpLm1hcChmdW5jdGlvbigpe3JldHVybiB0aGlzLnRleHR9KS5nZXQoKS5qb2luKCIsICIpOyIiIT1nJiYkKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJRVUVTVElPTlMiXScpLnZhbChnKTtnPSQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IktNIl0nKS52YWwoKTskLmFqYXgoe3R5cGU6IlBPU1QiLHVybDooJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L2dldFRyYWRlSW5CYXJWYWx1ZT93c3dpZHRoPTAiLGRhdGFUeXBlOiJqc29uIixkYXRhOnt1dmM6JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0idHJhZGVpbmJhclN0eWxlaWQiXScpLnZhbCgpLG9wdGlvbnM6bCx2ZWhpY2xlS006Zyxwcm92aW5jZTokKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJkZWFsZXJQcm92aW5jZVRyYWRlSW4iXScpLnZhbCgpfSwKc3VjY2VzczpmdW5jdGlvbihiKXt2YXIgZD1iLmNhbmFkaWFuX3RyYWRlaW5fdmFsdWV8fGIuYmFzZV90cmFkZWluX2F2Z3x8MCxoPWIuY2FuYWRpYW5fdHJhZGVpbl9sb3d8fGIuYmFzZV90cmFkZWluX3JvdWdofHwwO2I9Yi5jYW5hZGlhbl90cmFkZWluX2hpZ2h8fGIuYmFzZV90cmFkZWluX2NsZWFufHwwO3ZhciBmPSQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IkNCQkFEREVEVkFMVUUiXScpLnZhbCgpLGM9JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iQ0JCQURERURWQUxVRU1BS0VTIl0nKS52YWwoKSxuPSQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IkNCQkFEREVEVkFMVUVUWVBFIl0nKS52YWwoKSxyPSQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IkNCQlNJTkdMRVZBTFVFIl0nKS52YWwoKTswIT1mJiYiIiE9YyYmLTE8Yy5zcGxpdCgiOyIpLmluZGV4T2YoJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTUFLRUVYIl0nKS52YWwoKSkmJgooImNhc2giPT1uPyhkKz1wYXJzZUludChmKSxoKz1wYXJzZUludChmKSxiKz1wYXJzZUludChmKSk6InBlcmNlbnRhZ2UiPT1uJiYoZj0xK2YvMTAwLGQqPWYsaCo9ZixiKj1mKSk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gW25hbWU9dHJhZGVJbkF2Z10iKS5hdHRyKCJkYXRhLWF2ZyIsZCk7aWYoJCgiaW5wdXRbbmFtZT1maW5hbmNlVHJhZGVJbk1ha2VdIikubGVuZ3RoKXtmPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9WUVBUkVYXSIpLnZhbCgpO2M9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1NQUtFRVhdIikudmFsKCk7bj0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPU1PREVMRVhdIikudmFsKCk7bGV0IGs9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1UUklNRVhdIikudmFsKCk7JCgiaW5wdXRbbmFtZT1maW5hbmNlVHJhZGVJbk1ha2VdIikudmFsKGMpOyQoImlucHV0W25hbWU9ZmluYW5jZVRyYWRlSW5Nb2RlbF0iKS52YWwobik7CiQoImlucHV0W25hbWU9ZmluYW5jZVRyYWRlSW5ZZWFyXSIpLnZhbChmKTskKCJpbnB1dFtuYW1lPWZpbmFuY2VUcmFkZUluVHJpbV0iKS52YWwoayk7JCgiaW5wdXRbbmFtZT1maW5hbmNlVHJhZGVJblZhbHVlXSIpLnZhbCgkKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPXRyYWRlSW5BdmddIikuYXR0cigiZGF0YS1hdmciKSk7JCgiI3BheW1lbnRUcmFkZUluVmFsdWUiKS52YWwoJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT10cmFkZUluQXZnXSIpLmF0dHIoImRhdGEtYXZnIikpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9dHJhZGVJbkF2Z10iKS5hdHRyKCJkYXRhLWF2ZyIsIiIpfWlmKDE9PWEuc2V0dGluZ3MuZm9ybXVsdGlzdGVwKXtsZXQgaz1pc05hTihwYXJzZUludChkKSk\/MDpkO2s9RDJDVXRpbHMuRm9ybWF0LnRvTnVtYmVyKGspO2VtYWlsSGFuZGxlci51c2VyRW1haWw9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1FTUFJTF0iKS52YWwoKTsKZW1haWxIYW5kbGVyLnVzZXJQaG9uZT0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPUVNQUlMUEhPTkVdIikudmFsKCk7dmFyIGU7ZD1udWxsIT0oZT0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPUZOQU1FXSIpLnZhbCgpKT9lOiIiO3ZhciB1O2U9bnVsbCE9KHU9ZC5zcGxpdCgiICIpWzBdKT91OiIiO3ZhciBxO3U9bnVsbCE9KHE9ZC5zcGxpdCgiICIpWzFdKT9xOiIiO2VtYWlsSGFuZGxlci51c2VyRmlyc3ROYW1lPWU7ZW1haWxIYW5kbGVyLnVzZXJMYXN0TmFtZT11O3ZhciBtPSQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IllFQVJFWCJdJykudmFsKCkrIiAiKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1BS0VFWCJdJykudmFsKCkrIiAiKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1PREVMRVgiXScpLnZhbCgpOiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1BS0VFWCJdJykudmFsKCkrCiIgIiskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNT0RFTEVYIl0nKS52YWwoKSsiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iWUVBUkVYIl0nKS52YWwoKTtpc05hTihwYXJzZUludChrKSl8fChxPW5ldyBDdXN0b21FdmVudCgidHJhY2tzdGVwLmNvbXBsZXRlIix7ZGV0YWlsOntzdGVwSWQ6IlRyYWRlSW5BY3Rpb25Cb3giLG9uQ29tcGxldGU6cD0+e3AuZGF0YXNldC5jb21wbF90eHRfZnI9cC5kYXRhc2V0LmNvbXBsX3R4dF9mci5yZXBsYWNlKCJ7JFRSQURFQ0FSfSIsbSkucmVwbGFjZSgieyRUUkFERVZBTH0iLGspO3AuZGF0YXNldC5jb21wbF90eHRfZW49cC5kYXRhc2V0LmNvbXBsX3R4dF9lbi5yZXBsYWNlKCJ7JFRSQURFQ0FSfSIsbSkucmVwbGFjZSgieyRUUkFERVZBTH0iLGspO3ZhciB0PXt5ZWFyOiQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9WUVBUkVYXSIpLnZhbCgpLG1ha2U6JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1NQUtFRVhdIikudmFsKCksCm1vZGVsOiQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9TU9ERUxFWF0iKS52YWwoKSx0cmltOiQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9VFJJTUVYXSIpLnZhbCgpLHZhbHVlOnBhcnNlSW50KGsucmVwbGFjZSgiLCIsIiIpKX07X2xvY2FsU3RvcmFnZVNldCgidHJhZGVpbl9zdWJtaXRfZGF0YSIsSlNPTi5zdHJpbmdpZnkodCksMSk7aWYoMT5wYXJzZUludChrKSl7dD0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPXplcm9WYWx1ZU1lc3NhZ2VFbl0iKS52YWwoKTtsZXQgdj0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPXplcm9WYWx1ZU1lc3NhZ2VGcl0iKS52YWwoKTtwLmRhdGFzZXQuY29tcGxfdHh0X2ZyPWAke219IHwgJHt2fWA7cC5kYXRhc2V0LmNvbXBsX3R4dF9lbj1gJHttfSB8ICR7dH1gfX0sZm9yY2VVcGRhdGU6ITB9fSksZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChxKSk7YS5zZXR0aW5ncy5mb3JtdWx0aXN0ZXA9CiExO2EuY2xvc2UoKX1lbHNlICQoImlucHV0W25hbWU9dHJhZGVJblZhbHVlQ0JCQ2FsbGVkXSIpLnZhbCgxKSwiMSI9PXI\/Yj1oPSJyZW1vdmVlbXB0eSI6ZD0icmVtb3ZlZW1wdHkiLDA8aHx8MDxifHwwPGQ\/KCQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIFtuYW1lPXRyYWRlSW5BdmddIikudmFsKEQyQ1V0aWxzLkZvcm1hdC50b051bWJlcihkKSksJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gW25hbWU9dHJhZGVJbkxvd10iKS52YWwoRDJDVXRpbHMuRm9ybWF0LnRvTnVtYmVyKGgpKSwkKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBbbmFtZT10cmFkZUluSGlnaF0iKS52YWwoRDJDVXRpbHMuRm9ybWF0LnRvTnVtYmVyKGIpKSwkKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBbbmFtZT10cmFkZUluVmFsdWVDQkJBdmFpbGFibGVWYWx1ZXNdIikudmFsKDEpLCQoIi50cmFkZUluQmFyU3RlcDEiKS5oaWRlKCksbT0kKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJZRUFSRVgiXScpLnZhbCgpKwoiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTUFLRUVYIl0nKS52YWwoKSsiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTU9ERUxFWCJdJykudmFsKCk6JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTUFLRUVYIl0nKS52YWwoKSsiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTU9ERUxFWCJdJykudmFsKCkrIiAiKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IllFQVJFWCJdJykudmFsKCksJCgiLnRyYWRlSW5CYXJTdGVwMlRpdGxlIikudGV4dCgkKCIudHJhZGVJbkJhclN0ZXAyVGl0bGUiKS50ZXh0KCkrIiAiK20pLCQoImlucHV0W25hbWU9dHJhZGVJbkJhclNtc09yRW1haWxdIikuYWRkQ2xhc3MoInJlcVJhZGlvIiksJCgiLnRyYWRlSW5CYXJTdGVwMiIpLnNob3coKSk6KHBvcHVwSXNTdWJtaXR0aW5nPSExLCQoImlucHV0W25hbWU9c3RlcDNkb25lXSIpLnZhbCgxKSwKJCgiLnRyYWRlSW5CYXJQb3B1cFN1Ym1pdCIpLnRyaWdnZXIoImNsaWNrIikpfX0pfSxvbkJlZm9yZVN1Ym1pdEFjY3V0cmFkZUNhbGw6ZnVuY3Rpb24oYSl7dmFyIGw9JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gc2VsZWN0W25hbWU9IlZFSElDTEVPUFRJT05TIl0nKS5maW5kKCJvcHRpb246c2VsZWN0ZWQiKS5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZX0pLmdldCgpLmpvaW4oIiwgIiksZz0kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBzZWxlY3RbbmFtZT0iVkVISUNMRU9QVElPTlMiXScpLmZpbmQoIm9wdGlvbjpzZWxlY3RlZCIpLm1hcChmdW5jdGlvbigpe3JldHVybiB0aGlzLnRleHR9KS5nZXQoKS5qb2luKCIsICIpOyIiIT1nJiYkKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJRVUVTVElPTlMiXScpLnZhbChnKTtnPSQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IktNIl0nKS52YWwoKTt2YXIgYj0kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBzZWxlY3RbbmFtZT0iQ09MT1JFWCJdJykuZmluZCgib3B0aW9uOnNlbGVjdGVkIikuYXR0cigiZGF0YS1pZCIpOwokLmFqYXgoe3R5cGU6IlBPU1QiLHVybDooJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L2dldFRyYWRlSW5NbmdWYWx1ZT93c3dpZHRoPTAiLGRhdGFUeXBlOiJqc29uIixkYXRhOntpZDokKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJ0cmFkZWluYmFyU3R5bGVpZCJdJykudmFsKCksb3B0aW9uczpsLGttOmcsY29sb3I6Yixwcm92aW5jZTokKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJkZWFsZXJQcm92aW5jZVRyYWRlSW4iXScpLnZhbCgpfSxzdWNjZXNzOmZ1bmN0aW9uKGQpe3ZhciBoPWQuYXZnfHwwLGY9ZC5sb3d8fDA7ZD1kLmhpZ2h8fDA7dmFyIGM9JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iQ0JCQURERURWQUxVRSJdJykudmFsKCksbj0kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJDQkJBRERFRFZBTFVFTUFLRVMiXScpLnZhbCgpLApyPSQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IkNCQkFEREVEVkFMVUVUWVBFIl0nKS52YWwoKSxlPSQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IkNCQlNJTkdMRVZBTFVFIl0nKS52YWwoKTswIT1jJiYiIiE9biYmLTE8bi5zcGxpdCgiOyIpLmluZGV4T2YoJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iTUFLRUVYIl0nKS52YWwoKSkmJigiY2FzaCI9PXI\/KGgrPXBhcnNlSW50KGMpLGYrPXBhcnNlSW50KGMpLGQrPXBhcnNlSW50KGMpKToicGVyY2VudGFnZSI9PXImJihjPTErYy8xMDAsaCo9YyxmKj1jLGQqPWMpKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBbbmFtZT10cmFkZUluQXZnXSIpLmF0dHIoImRhdGEtYXZnIixoKTtpZigkKCJpbnB1dFtuYW1lPWZpbmFuY2VUcmFkZUluTWFrZV0iKS5sZW5ndGgpe2M9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1ZRUFSRVhdIikudmFsKCk7bj0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPU1BS0VFWF0iKS52YWwoKTsKcj0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPU1PREVMRVhdIikudmFsKCk7bGV0IHA9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1UUklNRVhdIikudmFsKCk7JCgiaW5wdXRbbmFtZT1maW5hbmNlVHJhZGVJbk1ha2VdIikudmFsKG4pOyQoImlucHV0W25hbWU9ZmluYW5jZVRyYWRlSW5Nb2RlbF0iKS52YWwocik7JCgiaW5wdXRbbmFtZT1maW5hbmNlVHJhZGVJblllYXJdIikudmFsKGMpOyQoImlucHV0W25hbWU9ZmluYW5jZVRyYWRlSW5UcmltXSIpLnZhbChwKTskKCJpbnB1dFtuYW1lPWZpbmFuY2VUcmFkZUluVmFsdWVdIikudmFsKCQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9dHJhZGVJbkF2Z10iKS5hdHRyKCJkYXRhLWF2ZyIpKTskKCIjcGF5bWVudFRyYWRlSW5WYWx1ZSIpLnZhbCgkKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPXRyYWRlSW5BdmddIikuYXR0cigiZGF0YS1hdmciKSk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT10cmFkZUluQXZnXSIpLmF0dHIoImRhdGEtYXZnIiwKIiIpfWlmKDE9PWEuc2V0dGluZ3MuZm9ybXVsdGlzdGVwKXtsZXQgcD1pc05hTihwYXJzZUludChoKSk\/MDpoO3A9RDJDVXRpbHMuRm9ybWF0LnRvTnVtYmVyKHApO2VtYWlsSGFuZGxlci51c2VyRW1haWw9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1FTUFJTF0iKS52YWwoKTtlbWFpbEhhbmRsZXIudXNlclBob25lPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9RU1BSUxQSE9ORV0iKS52YWwoKTt2YXIgdTtoPW51bGwhPSh1PSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Rk5BTUVdIikudmFsKCkpP3U6IiI7dmFyIHE7dT1udWxsIT0ocT1oLnNwbGl0KCIgIilbMF0pP3E6IiI7dmFyIG07cT1udWxsIT0obT1oLnNwbGl0KCIgIilbMV0pP206IiI7ZW1haWxIYW5kbGVyLnVzZXJGaXJzdE5hbWU9dTtlbWFpbEhhbmRsZXIudXNlckxhc3ROYW1lPXE7dmFyIGs9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iWUVBUkVYIl0nKS52YWwoKSsKIiAiKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1BS0VFWCJdJykudmFsKCkrIiAiKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1PREVMRVgiXScpLnZhbCgpOiQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1BS0VFWCJdJykudmFsKCkrIiAiKyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9Ik1PREVMRVgiXScpLnZhbCgpKyIgIiskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJZRUFSRVgiXScpLnZhbCgpO2lzTmFOKHBhcnNlSW50KHApKXx8KG09bmV3IEN1c3RvbUV2ZW50KCJ0cmFja3N0ZXAuY29tcGxldGUiLHtkZXRhaWw6e3N0ZXBJZDoiVHJhZGVJbkFjdGlvbkJveCIsb25Db21wbGV0ZTp0PT57dC5kYXRhc2V0LmNvbXBsX3R4dF9mcj10LmRhdGFzZXQuY29tcGxfdHh0X2ZyLnJlcGxhY2UoInskVFJBREVDQVJ9IixrKS5yZXBsYWNlKCJ7JFRSQURFVkFMfSIscCk7dC5kYXRhc2V0LmNvbXBsX3R4dF9lbj0KdC5kYXRhc2V0LmNvbXBsX3R4dF9lbi5yZXBsYWNlKCJ7JFRSQURFQ0FSfSIsaykucmVwbGFjZSgieyRUUkFERVZBTH0iLHApO3ZhciB2PXt5ZWFyOiQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9WUVBUkVYXSIpLnZhbCgpLG1ha2U6JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1NQUtFRVhdIikudmFsKCksbW9kZWw6JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1NT0RFTEVYXSIpLnZhbCgpLHRyaW06JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1UUklNRVhdIikudmFsKCksdmFsdWU6cGFyc2VJbnQocC5yZXBsYWNlKCIsIiwiIikpfTtfbG9jYWxTdG9yYWdlU2V0KCJ0cmFkZWluX3N1Ym1pdF9kYXRhIixKU09OLnN0cmluZ2lmeSh2KSwxKTtpZigxPnBhcnNlSW50KHApKXt2PSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9emVyb1ZhbHVlTWVzc2FnZUVuXSIpLnZhbCgpO2xldCB3PSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9emVyb1ZhbHVlTWVzc2FnZUZyXSIpLnZhbCgpOwp0LmRhdGFzZXQuY29tcGxfdHh0X2ZyPWAke2t9IHwgJHt3fWA7dC5kYXRhc2V0LmNvbXBsX3R4dF9lbj1gJHtrfSB8ICR7dn1gfX0sZm9yY2VVcGRhdGU6ITB9fSksZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChtKSk7YS5zZXR0aW5ncy5mb3JtdWx0aXN0ZXA9ITE7YS5jbG9zZSgpfWVsc2UgJCgiaW5wdXRbbmFtZT10cmFkZUluVmFsdWVDQkJDYWxsZWRdIikudmFsKDEpLCIxIj09ZT9kPWY9InJlbW92ZWVtcHR5IjpoPSJyZW1vdmVlbXB0eSIsMDxmfHwwPGR8fDA8aD8oJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gW25hbWU9dHJhZGVJbkF2Z10iKS52YWwoRDJDVXRpbHMuRm9ybWF0LnRvTnVtYmVyKGgpKSwkKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBbbmFtZT10cmFkZUluTG93XSIpLnZhbChEMkNVdGlscy5Gb3JtYXQudG9OdW1iZXIoZikpLCQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIFtuYW1lPXRyYWRlSW5IaWdoXSIpLnZhbChEMkNVdGlscy5Gb3JtYXQudG9OdW1iZXIoZCkpLCQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIFtuYW1lPXRyYWRlSW5WYWx1ZUNCQkF2YWlsYWJsZVZhbHVlc10iKS52YWwoMSksCiQoIi50cmFkZUluQmFyU3RlcDEiKS5oaWRlKCksaz0kKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8kKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJZRUFSRVgiXScpLnZhbCgpKyIgIiskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNQUtFRVgiXScpLnZhbCgpKyIgIiskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNT0RFTEVYIl0nKS52YWwoKTokKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNQUtFRVgiXScpLnZhbCgpKyIgIiskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJNT0RFTEVYIl0nKS52YWwoKSsiICIrJCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iWUVBUkVYIl0nKS52YWwoKSwkKCIudHJhZGVJbkJhclN0ZXAyVGl0bGUiKS50ZXh0KCQoIi50cmFkZUluQmFyU3RlcDJUaXRsZSIpLnRleHQoKSsiICIrayksJCgiaW5wdXRbbmFtZT10cmFkZUluQmFyU21zT3JFbWFpbF0iKS5hZGRDbGFzcygicmVxUmFkaW8iKSwKdHJhZGVpbnBvcHVwZDJjLnNldEhlaWdodE1vYmlsZSgyKSwkKCIudHJhZGVJbkJhclN0ZXAyIikuc2hvdygpKToocG9wdXBJc1N1Ym1pdHRpbmc9ITEsJCgiaW5wdXRbbmFtZT1zdGVwM2RvbmVdIikudmFsKDEpLCQoIi50cmFkZUluQmFyUG9wdXBTdWJtaXQiKS50cmlnZ2VyKCJjbGljayIpKX19KX0sb25CZWZvcmVTdWJtaXRDQkJNZXNzYWdlOmZ1bmN0aW9uKGEpeyQoIiN0cmFkZUluQmFyUG9wdXBTdWJtaXQiKS5wcm9wKCJkaXNhYmxlZCIsITApOyQoIiN0cmFkZUluQmFyUG9wdXBTdWJtaXQiKS5wYXJlbnQoKS5oaWRlKCk7YT0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPUVNQUlMXSIpLnZhbCgpO3ZhciBsPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9RU1BSUxQSE9ORV0iKS52YWwoKSxnPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9WUVBUkVYXSIpLnZhbCgpLGI9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1NQUtFRVhdIikudmFsKCksCmQ9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1NT0RFTEVYXSIpLnZhbCgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9VFJJTUVYXSIpLnZhbCgpO3ZhciBoPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9dHJhZGVJbkF2Z10iKS52YWwoKSxmPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9dHJhZGVJbkxvd10iKS52YWwoKSxjPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9dHJhZGVJbkhpZ2hdIikudmFsKCk7Zz0kKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT9nKyIgIitiKyIgIitkOmIrIiAiK2QrIiAiK2c7Yj0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPWRlYWxlck5hbWVUcmFkZUluXSIpLnZhbCgpO2Q9JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iQ0JCU0lOR0xFVkFMVUUiXScpLnZhbCgpO3ZhciBuPSIiO2lmKCJTTVMiPT0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPXRyYWRlSW5CYXJTbXNPckVtYWlsXTpjaGVja2VkIikudmFsKCkpdmFyIHI9CiJTTVMiLGU9IjEiPT1kPyQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyJUaGUgQ2FuYWRpYW4gQmxhY2sgQm9vayBlc3RpbWF0ZWQgdHJhZGUgdmFsdWUgZm9yIHlvdXIgIitnKyIgaXMgJCIraCsiLiBXZSdsbCBjb250YWN0IHlvdSBzaG9ydGx5IHRvIGRpc2N1c3MuICIrYisiICIrJCgiaW5wdXRbbmFtZT10cmFkZUluTXNnRGlzY2xhaW1lclRleHQxXSIpLnZhbCgpKyQoImlucHV0W25hbWU9dHJhZGVJbk1zZ0Rpc2NsYWltZXJUZXh0Ml0iKS52YWwoKToiTGEgdmFsZXVyIGQnw6ljaGFuZ2UgZXN0aW3DqWUgQ2FuYWRpYW4gQmxhY2sgQm9vayBwb3VyIHZvdHJlICIrZysiIGVzdCAkIitoKyIuIE5vdXMgY29tbXVuaXF1ZXJvbnMgYXZlYyB2b3VzIHNvdXMgcGV1IHBvdXIgZW4gZGlzY3V0ZXIuICIrYisiICIrJCgiaW5wdXRbbmFtZT10cmFkZUluTXNnRGlzY2xhaW1lclRleHQxXSIpLnZhbCgpKyQoImlucHV0W25hbWU9dHJhZGVJbk1zZ0Rpc2NsYWltZXJUZXh0Ml0iKS52YWwoKToKJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/IlRoZSBDYW5hZGlhbiBCbGFjayBCb29rIGVzdGltYXRlZCB0cmFkZSB2YWx1ZSBmb3IgeW91ciAiK2crIiBpcyBiZXR3ZWVuICQiK2YrIiBhbmQgJCIrYysiLiBXZSdsbCBjb250YWN0IHlvdSBzaG9ydGx5IHRvIGRpc2N1c3MuICIrYisiICIrJCgiaW5wdXRbbmFtZT10cmFkZUluTXNnRGlzY2xhaW1lclRleHQxXSIpLnZhbCgpKyQoImlucHV0W25hbWU9dHJhZGVJbk1zZ0Rpc2NsYWltZXJUZXh0Ml0iKS52YWwoKToiTGEgdmFsZXVyIGQnw6ljaGFuZ2UgZXN0aW3DqWUgQ2FuYWRpYW4gQmxhY2sgQm9vayBwb3VyIHZvdHJlICIrZysiIHNlIHNpdHVlIGVudHJlICQiK2YrIiBldCAkIitjKyIuIE5vdXMgY29tbXVuaXF1ZXJvbnMgYXZlYyB2b3VzIHNvdXMgcGV1IHBvdXIgZW4gZGlzY3V0ZXIuICIrYisiICIrJCgiaW5wdXRbbmFtZT10cmFkZUluTXNnRGlzY2xhaW1lclRleHQxXSIpLnZhbCgpKyQoImlucHV0W25hbWU9dHJhZGVJbk1zZ0Rpc2NsYWltZXJUZXh0Ml0iKS52YWwoKTsKZWxzZSByPSJFTUFJTCIsbj0kKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iSU1QT1JUQU5UOiBZb3VyIHRyYWRlIHZhbHVlIGZvciB5b3VyICIrZzoiSU1QT1JUQU5UOiBMYSB2YWxldXIgZCfDqWNoYW5nZSBkZSB2b3RyZSAiK2csJCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/KGU9IkhpICIrJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1GTkFNRV0iKS52YWwoKSsiLDxicj48YnI+IixlPWUrKCJGb2xsb3dpbmcgdXAgb24geW91ciByZWNlbnQgdHJhZGUgZXN0aW1hdGUgcmVxdWVzdCBmb3IgYSAiK2crIiwgaGVyZSBpcyB0aGUgZXN0aW1hdGUgZnJvbSB0aGUgQ2FuYWRpYW4gQmxhY2sgQm9vazo8YnI+PGJyPiIpKygkKCJpbnB1dFtuYW1lPXRyYWRlSW5Nc2dEaXNjbGFpbWVyVGV4dDFdIikudmFsKCkrJCgiaW5wdXRbbmFtZT10cmFkZUluTXNnRGlzY2xhaW1lclRleHQyXSIpLnZhbCgpKyI8YnI+PGJyPiIpLGU9IjEiPT1kP2UrKCJFc3RpbWF0ZWQgVmFsdWU6ICQiKwpoKyI8YnI+Iik6ZSsoIk1pbmltdW0gRXN0aW1hdGVkIFZhbHVlOiAkIitmKyI8YnI+TWF4aW11bSBFc3RpbWF0ZWQgVmFsdWU6ICQiKSsoYysiPGJyPiIpLGUrPSIoQWNjb3JkaW5nIHRvIENhbmFkaWFuIEJsYWNrIEJvb2ssIGxlc3MgcmVjb25kaXRpb25pbmcgY29zdHMsIGlmIGFwcGxpY2FibGUpPGJyPjxicj4iLGUrPSJBIHJlcHJlc2VudGF0aXZlIHdpbGwgY29udGFjdCB5b3Ugc2hvcnRseSB0byBleHBsYWluIHRoZSBkZXRhaWxzIG9mIHRoZSB2YWx1ZXMuPGJyPjxicj4iLGUrPSJUaGFua3MgZm9yIHRydXN0aW5nICIrYisiITxicj48YnI+Iik6KGU9IkJvbmpvdXIgIiskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPUZOQU1FXSIpLnZhbCgpKyIsPGJyPjxicj4iLGU9ZSsoIlN1aXRlIMOgIHZvdHJlIGRlbWFuZGUgZCdlc3RpbWF0aW9uIGRlIGxhIHZhbGV1ciBkZSB2b3RyZSDDqWNoYW5nZSBwb3VyIHVuICIrZysiLCB2b2ljaSBsJ8OpdmFsdWF0aW9uIGRlIHZvdHJlIHbDqWhpY3VsZSBzZWxvbiBsZSBDYW5hZGlhbiBCbGFjayBCb29rOjxicj48YnI+IikrCigkKCJpbnB1dFtuYW1lPXRyYWRlSW5Nc2dEaXNjbGFpbWVyVGV4dDFdIikudmFsKCkrJCgiaW5wdXRbbmFtZT10cmFkZUluTXNnRGlzY2xhaW1lclRleHQyXSIpLnZhbCgpKyI8YnI+PGJyPiIpLGU9IjEiPT1kP2UrKCJWYWxldXIgZXN0aW3DqWU6ICQiK2grIjxicj4iKTplKygiVmFsZXVyIGVzdGltw6llIG1pbmltYWxlOiAkIitmKyI8YnI+VmFsZXVyIGVzdGltw6llIG1heGltYWxlOiAkIikrKGMrIjxicj4iKSxlKz0iKFNlbG9uIGxlIENhbmFkaWFuIEJsYWNrIEJvb2ssIG1vaW5zIGxlcyBjb8O7dHMgZGUgcmVjb25kaXRpb25uZW1lbnQgc2kgYXBwbGljYWJsZSk8YnI+PGJyPiIsZSs9IlVuIGNvbnNlaWxsZXIgZW50cmVyYSBlbiBjb21tdW5pY2F0aW9uIHNvdXMgcGV1IGF2ZWMgdm91cyBhZmluIGRlIGRpc2N1dGVyIGRlIGNldHRlIHZhbGV1ciBldCB2b3VzIGVuIGV4cGxpcXVlciBsZXMgZMOpdGFpbHMuPGJyPjxicj4iLGUrPSJNZXJjaSBkZSBmYWlyZSBjb25maWFuY2Ugw6AgIisKYisiITxicj48YnI+Iik7ZT1idG9hKGUpO249YnRvYShuKTtlbWFpbEhhbmRsZXIub25BZnRlckxlYWRDcmVhdGVkPXthY3Rpb246cixzdWJqZWN0Om4sbWVzc2FnZTplLGVtYWlsOmEscGhvbmU6bH19LG9uQmVmb3JlU3VibWl0QWNjdXRyYWRlTWVzc2FnZTpmdW5jdGlvbihhKXskKCIjdHJhZGVJbkJhclBvcHVwU3VibWl0IikucHJvcCgiZGlzYWJsZWQiLCEwKTskKCIjdHJhZGVJbkJhclBvcHVwU3VibWl0IikucGFyZW50KCkuaGlkZSgpO2E9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1FTUFJTF0iKS52YWwoKTt2YXIgbD0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPUVNQUlMUEhPTkVdIikudmFsKCksZz0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPVlFQVJFWF0iKS52YWwoKSxiPSQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9TUFLRUVYXSIpLnZhbCgpLGQ9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1NT0RFTEVYXSIpLnZhbCgpOwokKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPVRSSU1FWF0iKS52YWwoKTt2YXIgaD0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPXRyYWRlSW5BdmddIikudmFsKCksZj0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPXRyYWRlSW5Mb3ddIikudmFsKCksYz0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPXRyYWRlSW5IaWdoXSIpLnZhbCgpO2c9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/ZysiICIrYisiICIrZDpiKyIgIitkKyIgIitnO2I9JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1kZWFsZXJOYW1lVHJhZGVJbl0iKS52YWwoKTtkPSQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9IkNCQlNJTkdMRVZBTFVFIl0nKS52YWwoKTt2YXIgbj0iIjtpZigiU01TIj09JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT10cmFkZUluQmFyU21zT3JFbWFpbF06Y2hlY2tlZCIpLnZhbCgpKXZhciByPQoiU01TIixlPSIxIj09ZD8kKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8iQWNjdS1UcmFkZSBlc3RpbWF0ZWQgdHJhZGUgdmFsdWUgZm9yIHlvdXIgIitnKyIgaXMgJCIraCsiLiBXZSdsbCBjb250YWN0IHlvdSBzaG9ydGx5IHRvIGRpc2N1c3MuICIrYisiICIrJCgiaW5wdXRbbmFtZT10cmFkZUluTXNnRGlzY2xhaW1lclRleHQxXSIpLnZhbCgpKyQoImlucHV0W25hbWU9dHJhZGVJbk1zZ0Rpc2NsYWltZXJUZXh0Ml0iKS52YWwoKToiTGEgdmFsZXVyIGQnw6ljaGFuZ2UgQWNjdS1UcmFkZSBlc3RpbcOpZSBwb3VyIHZvdHJlICIrZysiIGVzdCAkIitoKyIuIE5vdXMgY29tbXVuaXF1ZXJvbnMgYXZlYyB2b3VzIHNvdXMgcGV1IHBvdXIgZW4gZGlzY3V0ZXIuICIrYisiICIrJCgiaW5wdXRbbmFtZT10cmFkZUluTXNnRGlzY2xhaW1lclRleHQxXSIpLnZhbCgpKyQoImlucHV0W25hbWU9dHJhZGVJbk1zZ0Rpc2NsYWltZXJUZXh0Ml0iKS52YWwoKTokKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8KIkFjY3UtVHJhZGUgZXN0aW1hdGVkIHRyYWRlIHZhbHVlIGZvciB5b3VyICIrZysiIGlzIGJldHdlZW4gJCIrZisiIGFuZCAkIitjKyIuIFdlJ2xsIGNvbnRhY3QgeW91IHNob3J0bHkgdG8gZGlzY3Vzcy4gIitiKyIgIiskKCJpbnB1dFtuYW1lPXRyYWRlSW5Nc2dEaXNjbGFpbWVyVGV4dDFdIikudmFsKCkrJCgiaW5wdXRbbmFtZT10cmFkZUluTXNnRGlzY2xhaW1lclRleHQyXSIpLnZhbCgpOiJMYSB2YWxldXIgZCfDqWNoYW5nZSBBY2N1LVRyYWRlIGVzdGltw6llIHBvdXIgdm90cmUgIitnKyIgc2Ugc2l0dWUgZW50cmUgJCIrZisiIGV0ICQiK2MrIi4gTm91cyBjb21tdW5pcXVlcm9ucyBhdmVjIHZvdXMgc291cyBwZXUgcG91ciBlbiBkaXNjdXRlci4gIitiKyIgIiskKCJpbnB1dFtuYW1lPXRyYWRlSW5Nc2dEaXNjbGFpbWVyVGV4dDFdIikudmFsKCkrJCgiaW5wdXRbbmFtZT10cmFkZUluTXNnRGlzY2xhaW1lclRleHQyXSIpLnZhbCgpO2Vsc2Ugcj0iRU1BSUwiLG49JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/CiJJTVBPUlRBTlQ6IFlvdXIgdHJhZGUgdmFsdWUgZm9yIHlvdXIgIitnOiJJTVBPUlRBTlQ6IExhIHZhbGV1ciBkJ8OpY2hhbmdlIGRlIHZvdHJlICIrZywkKCJib2R5IikuaGFzQ2xhc3MoIkVOR0xJU0giKT8oZT0iSGkgIiskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPUZOQU1FXSIpLnZhbCgpKyIsPGJyPjxicj4iLGU9ZSsoIkZvbGxvd2luZyB1cCBvbiB5b3VyIHJlY2VudCB0cmFkZSBlc3RpbWF0ZSByZXF1ZXN0IGZvciBhICIrZysiLCBoZXJlIGlzIHRoZSBlc3RpbWF0ZSBmcm9tIEFjY3UtVHJhZGU6PGJyPjxicj4iKSsoJCgiaW5wdXRbbmFtZT10cmFkZUluTXNnRGlzY2xhaW1lclRleHQxXSIpLnZhbCgpKyQoImlucHV0W25hbWU9dHJhZGVJbk1zZ0Rpc2NsYWltZXJUZXh0Ml0iKS52YWwoKSsiPGJyPjxicj4iKSxlPSIxIj09ZD9lKygiRXN0aW1hdGVkIFZhbHVlOiAkIitoKyI8YnI+Iik6ZSsoIk1pbmltdW0gRXN0aW1hdGVkIFZhbHVlOiAkIitmKyI8YnI+TWF4aW11bSBFc3RpbWF0ZWQgVmFsdWU6ICQiKSsKKGMrIjxicj4iKSxlKz0iKEFjY29yZGluZyB0byBBY2N1LVRyYWRlLCBsZXNzIHJlY29uZGl0aW9uaW5nIGNvc3RzLCBpZiBhcHBsaWNhYmxlKTxicj48YnI+IixlKz0iQSByZXByZXNlbnRhdGl2ZSB3aWxsIGNvbnRhY3QgeW91IHNob3J0bHkgdG8gZXhwbGFpbiB0aGUgZGV0YWlscyBvZiB0aGUgdmFsdWVzLjxicj48YnI+IixlKz0iVGhhbmtzIGZvciB0cnVzdGluZyAiK2IrIiE8YnI+PGJyPiIpOihlPSJCb25qb3VyICIrJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT1GTkFNRV0iKS52YWwoKSsiLDxicj48YnI+IixlPWUrKCJTdWl0ZSDDoCB2b3RyZSBkZW1hbmRlIGQnZXN0aW1hdGlvbiBkZSBsYSB2YWxldXIgZGUgdm90cmUgw6ljaGFuZ2UgcG91ciB1biAiK2crIiwgdm9pY2kgbCfDqXZhbHVhdGlvbiBkZSB2b3RyZSB2w6loaWN1bGUgc2Vsb24gQWNjdS1UcmFkZTo8YnI+PGJyPiIpKygkKCJpbnB1dFtuYW1lPXRyYWRlSW5Nc2dEaXNjbGFpbWVyVGV4dDFdIikudmFsKCkrCiQoImlucHV0W25hbWU9dHJhZGVJbk1zZ0Rpc2NsYWltZXJUZXh0Ml0iKS52YWwoKSsiPGJyPjxicj4iKSxlPSIxIj09ZD9lKygiVmFsZXVyIGVzdGltw6llOiAkIitoKyI8YnI+Iik6ZSsoIlZhbGV1ciBlc3RpbcOpZSBtaW5pbWFsZTogJCIrZisiPGJyPlZhbGV1ciBlc3RpbcOpZSBtYXhpbWFsZTogJCIpKyhjKyI8YnI+IiksZSs9IihTZWxvbiBBY2N1LVRyYWRlLCBtb2lucyBsZXMgY2\/Du3RzIGRlIHJlY29uZGl0aW9ubmVtZW50IHNpIGFwcGxpY2FibGUpPGJyPjxicj4iLGUrPSJVbiBjb25zZWlsbGVyIGVudHJlcmEgZW4gY29tbXVuaWNhdGlvbiBzb3VzIHBldSBhdmVjIHZvdXMgYWZpbiBkZSBkaXNjdXRlciBkZSBjZXR0ZSB2YWxldXIgZXQgdm91cyBlbiBleHBsaXF1ZXIgbGVzIGTDqXRhaWxzLjxicj48YnI+IixlKz0iTWVyY2kgZGUgZmFpcmUgY29uZmlhbmNlIMOgICIrYisiITxicj48YnI+Iik7ZT1idG9hKGUpO249YnRvYShuKTtlbWFpbEhhbmRsZXIub25BZnRlckxlYWRDcmVhdGVkPQp7YWN0aW9uOnIsc3ViamVjdDpuLG1lc3NhZ2U6ZSxlbWFpbDphLHBob25lOmx9fSxpbml0VHJhZGVJblN0ZXAxOmZ1bmN0aW9uKCl7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gW25hbWU9dHJhZGVJbkF2Z10iKS52YWwoMCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gW25hbWU9dHJhZGVJbkxvd10iKS52YWwoMCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gW25hbWU9dHJhZGVJbkhpZ2hdIikudmFsKDApOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIFtuYW1lPXRyYWRlSW5WYWx1ZUNCQkF2YWlsYWJsZVZhbHVlc10iKS52YWwoMCk7JCgiaW5wdXRbbmFtZT10cmFkZUluQmFyU21zT3JFbWFpbF0iKS5yZW1vdmVDbGFzcygicmVxUmFkaW8iKTskKCJpbnB1dFtuYW1lPXRyYWRlSW5WYWx1ZUNCQkNhbGxlZF0iKS52YWwoMCk7JCgiaW5wdXRbbmFtZT10cmFkZUluQmFyU21zT3JFbWFpbF06Y2hlY2tlZCIpLnByb3AoImNoZWNrZWQiLCExKTskKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBzZWxlY3RbbmFtZT0iVkVISUNMRU9QVElPTlMiXScpLmZpbmQoIm9wdGlvbiIpLnJlbW92ZSgpOwokKCcjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPSJRVUVTVElPTlMiXScpLnZhbCgiIik7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwMSIpLnNob3coKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXAyIikuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDMiKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwNCIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXA1IikuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDYiKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gI3RyYWRlSW5CYXJQb3B1cFN1Ym1pdCIpLnNob3coKTt0aGlzLnNldEhlaWdodE1vYmlsZSgxKTt0aGlzLnRyYWRlSW5Cb3R0b21Mb2dvSGVpZ3QoKX0saW5pdFRyYWRlSW5TdGVwMzpmdW5jdGlvbigpeyQoIiN0cmFkZUluU3RlcDNZZXMiKS5vbigiY2xpY2siLApmdW5jdGlvbigpe3RyYWRlaW5wb3B1cGQyYy50cmFkZUluU3RlcDNZZXMoKTtyZXR1cm4hMX0pOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtICN0cmFkZUluQmFyUG9wdXBTdWJtaXQiKS5wYXJlbnQoKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwMSIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXAyIikuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDMiKS5zaG93KCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwNCIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXA1IikuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDYiKS5oaWRlKCk7dGhpcy5zZXRIZWlnaHRNb2JpbGUoMyk7JCgiaW5wdXRbbmFtZT1zdGVwM2RvbmVdIikudmFsKDEpO3RoaXMudHJhZGVJbkJvdHRvbUxvZ29IZWlndCgpfSwKdHJhZGVJblN0ZXAzWWVzOmZ1bmN0aW9uKCl7dGhpcy5pbml0VHJhZGVJblN0ZXA0KCl9LGluaXRUcmFkZUluU3RlcDQ6ZnVuY3Rpb24oKXskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAjdHJhZGVJbkJhclBvcHVwU3VibWl0IikucGFyZW50KCkuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDEiKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwMiIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXAzIikuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDQiKS5zaG93KCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwNSIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXA2IikuaGlkZSgpO3RoaXMuc2V0SGVpZ2h0TW9iaWxlKDQpOyQoIiN0cmFkZUluU3RlcDRZZXMiKS5vbigiY2xpY2siLApmdW5jdGlvbigpe2lmKCIiPT0kKCIjdHJhZGVJbktleVNlbGVjdCIpLnZhbCgpKXJldHVybiAkKCIjdHJhZGVJbktleVNlbGVjdCIpLmFkZENsYXNzKCJ2YWxpZGl0eS1lcnJvbmVvdXMiKSwhMTt0cmFkZWlucG9wdXBkMmMudHJhZGVJblN0ZXA0Q29udGludWUoKTtyZXR1cm4hMX0pOyQoIiN0cmFkZUluS2V5U2VsZWN0Iikub24oImNoYW5nZSIsZnVuY3Rpb24oKXskKCIjdHJhZGVJbktleVNlbGVjdCIpLnJlbW92ZUNsYXNzKCJ2YWxpZGl0eS1lcnJvbmVvdXMiKX0pO3RoaXMudHJhZGVJbkJvdHRvbUxvZ29IZWlndCgpfSx0cmFkZUluU3RlcDRDb250aW51ZTpmdW5jdGlvbigpeyIiPT0kKCIjdHJhZGVJbkJhclBvcHVwRm9ybSBpbnB1dFtuYW1lPVZJTkVYXSIpLnZhbCgpP3RoaXMuaW5pdFRyYWRlSW5TdGVwNSgpOnRoaXMuaW5pdFRyYWRlSW5TdGVwNigpfSxpbml0VHJhZGVJblN0ZXA1OmZ1bmN0aW9uKCl7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gI3RyYWRlSW5CYXJQb3B1cFN1Ym1pdCIpLnBhcmVudCgpLmhpZGUoKTsKJCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwMSIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXAyIikuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDMiKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwNCIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXA1Iikuc2hvdygpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDYiKS5oaWRlKCk7dGhpcy5zZXRIZWlnaHRNb2JpbGUoNSk7JCgiI3RyYWRlSW5TdGVwNVllcyIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXt0cmFkZWlucG9wdXBkMmMudHJhZGVJblN0ZXA1Q29udGludWUoKTtyZXR1cm4hMX0pO3RoaXMudHJhZGVJbkJvdHRvbUxvZ29IZWlndCgpfSx0cmFkZUluU3RlcDVDb250aW51ZTpmdW5jdGlvbigpeyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIGlucHV0W25hbWU9VklORVhdIikudmFsKCQoIiN0cmFkZUluQmFyUG9wdXBGb3JtICNzdGVwNVZpbiIpLnZhbCgpKTsKdGhpcy5pbml0VHJhZGVJblN0ZXA2KCl9LGluaXRUcmFkZUluU3RlcDY6ZnVuY3Rpb24oKXskKCIjdHJhZGVJbkJhclBvcHVwX2Zvcm1XICN0cmFkZUluQmFyUG9wdXBfbGluZTEiKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gI3RyYWRlSW5CYXJQb3B1cFN1Ym1pdCIpLnBhcmVudCgpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXAxIikuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDIiKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwMyIpLmhpZGUoKTskKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudHJhZGVJbkJhclN0ZXA0IikuaGlkZSgpOyQoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDUiKS5oaWRlKCk7JCgiI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnRyYWRlSW5CYXJTdGVwNiIpLnNob3coKTt0aGlzLnNldEhlaWdodE1vYmlsZSg2KTt0aGlzLmluaXRJbWFnZVVwbG9hZCgpOwokKCIjdHJhZGVJblN0ZXA2WWVzIikub24oImNsaWNrIixmdW5jdGlvbigpeyQoIiN0cmFkZUluU3RlcDZZZXMiKS5oaWRlKCk7dHJhZGVpbnBvcHVwZDJjLnVwbG9hZEltYWdlc1RvQmFja2VuZCgpfSk7dGhpcy50cmFkZUluQm90dG9tTG9nb0hlaWd0KCl9LGluaXRJbWFnZVVwbG9hZDpmdW5jdGlvbigpe2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIiN0cmFkZUluQmFyUG9wdXBGb3JtIC51cGxvYWQtYXJlYSIpLmZvckVhY2goYT0+e2NvbnN0IGw9YS5xdWVyeVNlbGVjdG9yKCdpbnB1dFt0eXBlPSJmaWxlIl0nKSxnPWEucXVlcnlTZWxlY3RvcigiLnBsYWNlaG9sZGVyIiksYj1hLnF1ZXJ5U2VsZWN0b3IoIi5kZWxldGUtYnRuIiksZD1hLnF1ZXJ5U2VsZWN0b3IoIi5hZGQtaWNvbiIpLGg9YS5kYXRhc2V0Lm92ZXJsYXk7aCYmKGEuc3R5bGUuYmFja2dyb3VuZEltYWdlPWB1cmwoJHtofSlgKTthLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e2wudmFsdWV8fGwuY2xpY2soKX0pOwpsLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsZj0+e2lmKChmPWYudGFyZ2V0LmZpbGVzWzBdKSYmZi50eXBlLnN0YXJ0c1dpdGgoImltYWdlLyIpKXtjb25zdCBjPW5ldyBGaWxlUmVhZGVyO2Mub25sb2FkPSgpPT57Zy5zcmM9Yy5yZXN1bHQ7Zy5zdHlsZS5kaXNwbGF5PSJibG9jayI7YS5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2U9Im5vbmUiO2Iuc3R5bGUuZGlzcGxheT0iYmxvY2siO2Quc3R5bGUuZGlzcGxheT0ibm9uZSJ9O2MucmVhZEFzRGF0YVVSTChmKX1lbHNlIGwudmFsdWU9IiJ9KTtiLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmPT57Zi5zdG9wUHJvcGFnYXRpb24oKTtsLnZhbHVlPSIiO2cuc3JjPSIiO2cuc3R5bGUuZGlzcGxheT0ibm9uZSI7YS5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2U9YHVybCgke2h9KWA7Yi5zdHlsZS5kaXNwbGF5PSJub25lIjtkLnN0eWxlLmRpc3BsYXk9ImZsZXgiO3JldHVybiExfSk7Yi5zdHlsZS5kaXNwbGF5PSJub25lIjtnLnN0eWxlLmRpc3BsYXk9CiJub25lIn0pfSx1cGxvYWRJbWFnZXNUb0JhY2tlbmQ6ZnVuY3Rpb24oKXt2YXIgYT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIjdHJhZGVJbkJhclBvcHVwRm9ybSAudXBsb2FkLWFyZWEiKTtjb25zdCBsPW5ldyBGb3JtRGF0YTtsZXQgZz0hMTthLmZvckVhY2goYj0+e2I9Yi5xdWVyeVNlbGVjdG9yKCdpbnB1dFt0eXBlPSJmaWxlIl0nKTswPGIuZmlsZXMubGVuZ3RoJiZiLmZpbGVzWzBdLnR5cGUuc3RhcnRzV2l0aCgiaW1hZ2UvIikmJihsLmFwcGVuZCgiaW1hZ2VzW10iLGIuZmlsZXNbMF0sYi5nZXRBdHRyaWJ1dGUoImRhdGEtbmFtZSIpKSxnPSEwKX0pO2c\/KGE9JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/IkVOR0xJU0giOiJGUkVOQ0giLCQuYWpheCh7dHlwZToiUE9TVCIsdXJsOigiRU5HTElTSCI9PWE\/Ii9lbi8iOiIvZnIvIikrIi9hamF4L3VwbG9hZFRyYWRlSW5JbWFnZXMiLGNvbnRlbnRUeXBlOiExLHByb2Nlc3NEYXRhOiExLGRhdGE6bCxzdWNjZXNzOmZ1bmN0aW9uKGIpe2lmKGIubGVuZ3RoKXskZGF0YU9iaj0KSlNPTi5wYXJzZShiKTskaW1hZ2VFeFZhbHVlPSIiO2ZvcihiPTA7YjwkZGF0YU9iai5sZW5ndGg7YisrKSRpbWFnZUV4VmFsdWUrPSRkYXRhT2JqW2JdLmZpbGVuYW1lKyIgOiAiKyRkYXRhT2JqW2JdLmZpbGVVcmwrIiBcbiI7JCgnI3RyYWRlSW5CYXJQb3B1cEZvcm0gaW5wdXRbbmFtZT0iVFJBREVJTklNQUdFRVgiXScpLnZhbCgkaW1hZ2VFeFZhbHVlKX0kKCIudHJhZGVJbkJhclBvcHVwU3VibWl0IikudHJpZ2dlcigiY2xpY2siKX19KSk6JCgiLnRyYWRlSW5CYXJQb3B1cFN1Ym1pdCIpLnRyaWdnZXIoImNsaWNrIil9LHNldEhlaWdodE1vYmlsZShhKXtpZigiMSI9PSQoIiNpc21vYmlsZSIpLnZhbCgpKXN3aXRjaChhKXtjYXNlIDI6JCgiI1RyYWRlSW5CYXJQb3B1cENvbnRhaW5lciIpLmNzcygiaGVpZ2h0IiwiNTQwcHgiKTskKCIjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIikuY3NzKCJoZWlnaHQiLCI1MzBweCIpO2JyZWFrO2Nhc2UgMzokKCIjVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIikuY3NzKCJoZWlnaHQiLAoiNjAwcHgiKTskKCIjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIikuY3NzKCJoZWlnaHQiLCI1OTBweCIpO2JyZWFrO2Nhc2UgNDokKCIjVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIikuY3NzKCJoZWlnaHQiLCI1NDBweCIpOyQoIiN0cmFkZUluQmFyUG9wdXBfZm9ybVciKS5jc3MoImhlaWdodCIsIjUzMHB4Iik7YnJlYWs7Y2FzZSA1OiQoIiNUcmFkZUluQmFyUG9wdXBDb250YWluZXIiKS5jc3MoImhlaWdodCIsIjUzMHB4Iik7JCgiI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyIpLmNzcygiaGVpZ2h0IiwiNTIwcHgiKTticmVhaztjYXNlIDY6JCgiI1RyYWRlSW5CYXJQb3B1cENvbnRhaW5lciIpLmNzcygiaGVpZ2h0IiwiNzUwcHgiKTskKCIjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIikuY3NzKCJoZWlnaHQiLCI3NDBweCIpO2JyZWFrO2RlZmF1bHQ6JCgiI1RyYWRlSW5CYXJQb3B1cENvbnRhaW5lciIpLmNzcygiaGVpZ2h0IiwiOTYwcHgiKSwkKCIjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIikuY3NzKCJoZWlnaHQiLAoiOTQwcHgiKX19LHRyYWRlSW5Cb3R0b21Mb2dvSGVpZ3Q6ZnVuY3Rpb24oKXtpZigkKCIudHJhZGVJbkJvdHRvbUxvZ28iKS5sZW5ndGgpe3ZhciBhPSQoIiN0cmFkZUluQmFyUG9wdXBfZm9ybVciKTtsZXQgbD0kKCIudHJhZGVJbkJvdHRvbUxvZ28iKTthPWEuaW5uZXJIZWlnaHQoKS1sLnBvc2l0aW9uKCkudG9wOyQoIi50cmFkZUluQm90dG9tTG9nbyIpLmhlaWdodChhKyJweCIpfX19OwovKiogL20vanMvanF1ZXJ5LnByZXR0eVBob3RvMi5qcyAqKi8KdmFyIF9fX2QyY19qcXVlcnlwcmV0dHlQaG90bzJqc19jX29uPSIyMDI1LTA1LTIzIDE3OjExOjQzIjsndXNlIHN0cmljdCc7dmFyIF9fX2QyY19qcXVlcnlwcmV0dHlQaG90bzJqc19jX29uPSIyMDI0LTAzLTI1IDEyOjMzOjMzIjsidXNlIHN0cmljdCI7CihmdW5jdGlvbihhKXtmdW5jdGlvbiB5KCl7dmFyIGU9bG9jYXRpb24uaHJlZjtyZXR1cm4gaGFzaHRhZz0tMSE9PWUuaW5kZXhPZigiI3ByZXR0eVBob3RvIik\/ZGVjb2RlVVJJKGUuc3Vic3RyaW5nKGUuaW5kZXhPZigiI3ByZXR0eVBob3RvIikrMSxlLmxlbmd0aCkpOiExfWZ1bmN0aW9uIGwoZSxwKXtlPWUucmVwbGFjZSgvW1xbXS8sIlxcWyIpLnJlcGxhY2UoL1tcXV0vLCJcXF0iKTtlPShuZXcgUmVnRXhwKCJbXFw\/Jl0iK2UrIj0oW14mI10qKSIpKS5leGVjKHApO3JldHVybiBudWxsPT1lPyIiOmVbMV19YS5wcmV0dHlQaG90bz17dmVyc2lvbjoiMy4xLjUifTthLmZuLnByZXR0eVBob3RvPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHAoKXthKCIucHBfbG9hZGVySWNvbiIpLmhpZGUoKTtwcm9qZWN0ZWRUb3A9c2Nyb2xsX3Bvcy5zY3JvbGxUb3ArKGsvMi1kLmNvbnRhaW5lckhlaWdodC8yKTswPnByb2plY3RlZFRvcCYmKHByb2plY3RlZFRvcD0wKTskcHB0LmZhZGVUbyhiLmFuaW1hdGlvbl9zcGVlZCwKMSk7JHBwX3BpY19ob2xkZXIuZmluZCgiLnBwX2NvbnRlbnQiKS5hbmltYXRlKHtoZWlnaHQ6ZC5jb250ZW50SGVpZ2h0LHdpZHRoOmQuY29udGVudFdpZHRofSxiLmFuaW1hdGlvbl9zcGVlZCk7JHBwX3BpY19ob2xkZXIuYW5pbWF0ZSh7dG9wOnByb2plY3RlZFRvcCxsZWZ0OjA+aC8yLWQuY29udGFpbmVyV2lkdGgvMj8wOmgvMi1kLmNvbnRhaW5lcldpZHRoLzIsd2lkdGg6ZC5jb250YWluZXJXaWR0aH0sYi5hbmltYXRpb25fc3BlZWQsZnVuY3Rpb24oKXskcHBfcGljX2hvbGRlci5maW5kKCIucHBfaG92ZXJDb250YWluZXIsI2Z1bGxSZXNJbWFnZSIpLmhlaWdodChkLmhlaWdodCkud2lkdGgoZC53aWR0aCk7JHBwX3BpY19ob2xkZXIuZmluZCgiLnBwX2ZhZGUiKS5mYWRlSW4oYi5hbmltYXRpb25fc3BlZWQpO2lzU2V0JiYiaW1hZ2UiPT10KHBwX2ltYWdlc1tzZXRfcG9zaXRpb25dKT8kcHBfcGljX2hvbGRlci5maW5kKCIucHBfaG92ZXJDb250YWluZXIiKS5zaG93KCk6JHBwX3BpY19ob2xkZXIuZmluZCgiLnBwX2hvdmVyQ29udGFpbmVyIikuaGlkZSgpOwpiLmFsbG93X2V4cGFuZCYmKGQucmVzaXplZD9hKCJhLnBwX2V4cGFuZCxhLnBwX2NvbnRyYWN0Iikuc2hvdygpOmEoImEucHBfZXhwYW5kIikuaGlkZSgpKTshYi5hdXRvcGxheV9zbGlkZXNob3d8fHF8fHV8fGEucHJldHR5UGhvdG8uc3RhcnRTbGlkZXNob3coKTtiLmNoYW5nZXBpY3R1cmVjYWxsYmFjaygpO3U9ITB9KTtpc1NldCYmYi5vdmVybGF5X2dhbGxlcnkmJiJpbWFnZSI9PXQocHBfaW1hZ2VzW3NldF9wb3NpdGlvbl0pPyhpdGVtV2lkdGg9NTcsbmF2V2lkdGg9ImZhY2Vib29rIj09Yi50aGVtZXx8InBwX2RlZmF1bHQiPT1iLnRoZW1lPzUwOjMwLGl0ZW1zUGVyUGFnZT1NYXRoLmZsb29yKChkLmNvbnRhaW5lcldpZHRoLTEwMC1uYXZXaWR0aCkvaXRlbVdpZHRoKSxpdGVtc1BlclBhZ2U9aXRlbXNQZXJQYWdlPHBwX2ltYWdlcy5sZW5ndGg\/aXRlbXNQZXJQYWdlOnBwX2ltYWdlcy5sZW5ndGgsdG90YWxQYWdlPU1hdGguY2VpbChwcF9pbWFnZXMubGVuZ3RoL2l0ZW1zUGVyUGFnZSktCjEsMD09dG90YWxQYWdlPyhuYXZXaWR0aD0wLCRwcF9nYWxsZXJ5LmZpbmQoIi5wcF9hcnJvd19uZXh0LC5wcF9hcnJvd19wcmV2aW91cyIpLmhpZGUoKSk6JHBwX2dhbGxlcnkuZmluZCgiLnBwX2Fycm93X25leHQsLnBwX2Fycm93X3ByZXZpb3VzIikuc2hvdygpLGdhbGxlcnlXaWR0aD1pdGVtc1BlclBhZ2UqaXRlbVdpZHRoLGZ1bGxHYWxsZXJ5V2lkdGg9cHBfaW1hZ2VzLmxlbmd0aCppdGVtV2lkdGgsJHBwX2dhbGxlcnkuY3NzKCJtYXJnaW4tbGVmdCIsLShnYWxsZXJ5V2lkdGgvMituYXZXaWR0aC8yKSkuZmluZCgiZGl2OmZpcnN0Iikud2lkdGgoZ2FsbGVyeVdpZHRoKzUpLmZpbmQoInVsIikud2lkdGgoZnVsbEdhbGxlcnlXaWR0aCkuZmluZCgibGkuc2VsZWN0ZWQiKS5yZW1vdmVDbGFzcygic2VsZWN0ZWQiKSxnb1RvUGFnZT1NYXRoLmZsb29yKHNldF9wb3NpdGlvbi9pdGVtc1BlclBhZ2UpPHRvdGFsUGFnZT9NYXRoLmZsb29yKHNldF9wb3NpdGlvbi9pdGVtc1BlclBhZ2UpOgp0b3RhbFBhZ2UsYS5wcmV0dHlQaG90by5jaGFuZ2VHYWxsZXJ5UGFnZShnb1RvUGFnZSksJHBwX2dhbGxlcnlfbGkuZmlsdGVyKCI6ZXEoIitzZXRfcG9zaXRpb24rIikiKS5hZGRDbGFzcygic2VsZWN0ZWQiKSk6JHBwX3BpY19ob2xkZXIuZmluZCgiLnBwX2NvbnRlbnQiKS5vZmYoIm1vdXNlZW50ZXIgbW91c2VsZWF2ZSIpO2UuYWpheGNhbGxiYWNrKCl9ZnVuY3Rpb24geihjKXskcHBfcGljX2hvbGRlci5maW5kKCIjcHBfZnVsbF9yZXMgb2JqZWN0LCNwcF9mdWxsX3JlcyBlbWJlZCIpLmNzcygidmlzaWJpbGl0eSIsImhpZGRlbiIpOyRwcF9waWNfaG9sZGVyLmZpbmQoIi5wcF9mYWRlIikuZmFkZU91dChiLmFuaW1hdGlvbl9zcGVlZCxmdW5jdGlvbigpe2EoIi5wcF9sb2FkZXJJY29uIikuc2hvdygpO2MoKX0pfWZ1bmN0aW9uIEcoYyl7MTxjP2EoIi5wcF9uYXYiKS5zaG93KCk6YSgiLnBwX25hdiIpLmhpZGUoKX1mdW5jdGlvbiBnKGMsZil7cmVzaXplZD0hMTtBKGMsZik7aW1hZ2VXaWR0aD0KYztpbWFnZUhlaWdodD1mO2lmKChtPmh8fG4+aykmJmRvcmVzaXplJiZiLmFsbG93X3Jlc2l6ZSYmIXIpe3Jlc2l6ZWQ9ITA7Zm9yKGZpdHRpbmc9ITE7IWZpdHRpbmc7KW0+aD8oaW1hZ2VXaWR0aD1oLTUwLGltYWdlSGVpZ2h0PWYvYyppbWFnZVdpZHRoKTpuPms\/KGltYWdlSGVpZ2h0PWstNTAsaW1hZ2VXaWR0aD1jL2YqaW1hZ2VIZWlnaHQpOmZpdHRpbmc9ITAsbj1pbWFnZUhlaWdodCxtPWltYWdlV2lkdGg7KG0+aHx8bj5rKSYmZyhtLG4pO0EoaW1hZ2VXaWR0aCxpbWFnZUhlaWdodCl9cmV0dXJue3dpZHRoOk1hdGguZmxvb3IoaW1hZ2VXaWR0aCksaGVpZ2h0Ok1hdGguZmxvb3IoaW1hZ2VIZWlnaHQpLGNvbnRhaW5lckhlaWdodDpNYXRoLmZsb29yKG4pLGNvbnRhaW5lcldpZHRoOk1hdGguZmxvb3IobSkrMipiLmhvcml6b250YWxfcGFkZGluZyxjb250ZW50SGVpZ2h0Ok1hdGguZmxvb3IodiksY29udGVudFdpZHRoOk1hdGguZmxvb3IoQikscmVzaXplZH19ZnVuY3Rpb24gQShjLApmKXtjPXBhcnNlRmxvYXQoYyk7Zj1wYXJzZUZsb2F0KGYpOyRwcF9kZXRhaWxzPSRwcF9waWNfaG9sZGVyLmZpbmQoIi5wcF9kZXRhaWxzIik7JHBwX2RldGFpbHMud2lkdGgoYyk7ZGV0YWlsc0hlaWdodD1wYXJzZUZsb2F0KCRwcF9kZXRhaWxzLmNzcygibWFyZ2luVG9wIikpK3BhcnNlRmxvYXQoJHBwX2RldGFpbHMuY3NzKCJtYXJnaW5Cb3R0b20iKSk7JHBwX2RldGFpbHM9JHBwX2RldGFpbHMuY2xvbmUoKS5hZGRDbGFzcyhiLnRoZW1lKS53aWR0aChjKS5hcHBlbmRUbyhhKCJib2R5IikpLmNzcyh7cG9zaXRpb246ImFic29sdXRlIix0b3A6LTFFNH0pO2RldGFpbHNIZWlnaHQrPSRwcF9kZXRhaWxzLmhlaWdodCgpO2RldGFpbHNIZWlnaHQ9MzQ+PWRldGFpbHNIZWlnaHQ\/MzY6ZGV0YWlsc0hlaWdodDskcHBfZGV0YWlscy5yZW1vdmUoKTskcHBfdGl0bGU9JHBwX3BpY19ob2xkZXIuZmluZCgiLnBwdCIpOyRwcF90aXRsZS53aWR0aChjKTt0aXRsZUhlaWdodD1wYXJzZUZsb2F0KCRwcF90aXRsZS5jc3MoIm1hcmdpblRvcCIpKSsKcGFyc2VGbG9hdCgkcHBfdGl0bGUuY3NzKCJtYXJnaW5Cb3R0b20iKSk7JHBwX3RpdGxlPSRwcF90aXRsZS5jbG9uZSgpLmFwcGVuZFRvKGEoImJvZHkiKSkuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDotMUU0fSk7dGl0bGVIZWlnaHQrPSRwcF90aXRsZS5oZWlnaHQoKTskcHBfdGl0bGUucmVtb3ZlKCk7dj1mK2RldGFpbHNIZWlnaHQ7Qj1jO249dit0aXRsZUhlaWdodCskcHBfcGljX2hvbGRlci5maW5kKCIucHBfdG9wIikuaGVpZ2h0KCkrJHBwX3BpY19ob2xkZXIuZmluZCgiLnBwX2JvdHRvbSIpLmhlaWdodCgpO209Y31mdW5jdGlvbiB0KGMpe3JldHVybiBjLm1hdGNoKC95b3V0dWJlXC5jb21cL3dhdGNoL2kpfHxjLm1hdGNoKC95b3V0dVwuYmUvaSk\/InlvdXR1YmUiOmMubWF0Y2goL3ZpbWVvXC5jb20vaSk\/InZpbWVvIjpjLm1hdGNoKC9cLm1wNC9pKT8ibXA0IjpjLm1hdGNoKC9hdnUzZC9pKT8iYXZ1M2QiOmMubWF0Y2goL1xiLm1vdlxiL2kpPyJxdWlja3RpbWUiOgpjLm1hdGNoKC9cYi5zd2ZcYi9pKT8iZmxhc2giOmMubWF0Y2goL1xiaWZyYW1lPXRydWVcYi9pKT8iaWZyYW1lIjpjLm1hdGNoKC9cYmFqYXg9dHJ1ZVxiL2kpPyJhamF4IjpjLm1hdGNoKC9cYmN1c3RvbT10cnVlXGIvaSk\/ImN1c3RvbSI6IiMiPT1jLnN1YnN0cigwLDEpPyJpbmxpbmUiOiJpbWFnZSJ9ZnVuY3Rpb24gdygpe2RvcmVzaXplJiYidW5kZWZpbmVkIiE9dHlwZW9mICRwcF9waWNfaG9sZGVyJiYoc2Nyb2xsX3Bvcz1DKCksY29udGVudEhlaWdodD0kcHBfcGljX2hvbGRlci5oZWlnaHQoKSxjb250ZW50d2lkdGg9JHBwX3BpY19ob2xkZXIud2lkdGgoKSxwcm9qZWN0ZWRUb3A9ay8yK3Njcm9sbF9wb3Muc2Nyb2xsVG9wLWNvbnRlbnRIZWlnaHQvMiwwPnByb2plY3RlZFRvcCYmKHByb2plY3RlZFRvcD0wKSxjb250ZW50SGVpZ2h0Pmt8fCRwcF9waWNfaG9sZGVyLmNzcyh7dG9wOnByb2plY3RlZFRvcCxsZWZ0OmgvMitzY3JvbGxfcG9zLnNjcm9sbExlZnQtY29udGVudHdpZHRoLwoyfSkpfWZ1bmN0aW9uIEMoKXtpZihzZWxmLnBhZ2VZT2Zmc2V0KXJldHVybntzY3JvbGxUb3A6c2VsZi5wYWdlWU9mZnNldCxzY3JvbGxMZWZ0OnNlbGYucGFnZVhPZmZzZXR9O2lmKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCYmZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcClyZXR1cm57c2Nyb2xsVG9wOmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3Asc2Nyb2xsTGVmdDpkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdH07aWYoZG9jdW1lbnQuYm9keSlyZXR1cm57c2Nyb2xsVG9wOmRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wLHNjcm9sbExlZnQ6ZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0fX1mdW5jdGlvbiBEKGMpe2Iuc29jaWFsX3Rvb2xzJiYoZmFjZWJvb2tfbGlrZV9saW5rPWIuc29jaWFsX3Rvb2xzLnJlcGxhY2UoIntsb2NhdGlvbl9ocmVmfSIsZW5jb2RlVVJJQ29tcG9uZW50KGxvY2F0aW9uLmhyZWYpKSk7Yi5tYXJrdXA9Yi5tYXJrdXAucmVwbGFjZSgie3BwX3NvY2lhbH0iLAoiIik7YSgiYm9keSIpLmFwcGVuZChiLm1hcmt1cCk7JHBwX3BpY19ob2xkZXI9YSgiLnBwX3BpY19ob2xkZXIiKTskcHB0PWEoIi5wcHQiKTskcHBfb3ZlcmxheT1hKCJkaXYucHBfb3ZlcmxheSIpO2lmKGlzU2V0JiZiLm92ZXJsYXlfZ2FsbGVyeSl7Y3VycmVudEdhbGxlcnlQYWdlPTA7dG9JbmplY3Q9IiI7Zm9yKGM9MDtjPHBwX2ltYWdlcy5sZW5ndGg7YysrKXBwX2ltYWdlc1tjXS5tYXRjaCgvXGIoanBnfGpwZWd8cG5nfGdpZilcYi9naSk\/KGNsYXNzbmFtZT0iIixpbWdfc3JjPXBwX2ltYWdlc1tjXSk6KGNsYXNzbmFtZT0iZGVmYXVsdCIsaW1nX3NyYz0iIiksdG9JbmplY3QrPSI8bGkgY2xhc3M9JyIrY2xhc3NuYW1lKyInPjxhIGhyZWY9JyMnPjxpbWcgc3JjPSciK2ltZ19zcmMrIicgd2lkdGg9JzUwJyBhbHQ9JycgLz48L2E+PC9saT4iO3RvSW5qZWN0PWIuZ2FsbGVyeV9tYXJrdXAucmVwbGFjZSgve2dhbGxlcnl9L2csdG9JbmplY3QpOyRwcF9waWNfaG9sZGVyLmZpbmQoIiNwcF9mdWxsX3JlcyIpLmFmdGVyKHRvSW5qZWN0KTsKJHBwX2dhbGxlcnk9YSgiLnBwX3BpY19ob2xkZXIgLnBwX2dhbGxlcnkiKTskcHBfZ2FsbGVyeV9saT0kcHBfZ2FsbGVyeS5maW5kKCJsaSIpOyRwcF9nYWxsZXJ5LmZpbmQoIi5wcF9hcnJvd19uZXh0Iikub24oImNsaWNrIixmdW5jdGlvbigpe2EucHJldHR5UGhvdG8uY2hhbmdlR2FsbGVyeVBhZ2UoIm5leHQiKTthLnByZXR0eVBob3RvLnN0b3BTbGlkZXNob3coKTtyZXR1cm4hMX0pOyRwcF9nYWxsZXJ5LmZpbmQoIi5wcF9hcnJvd19wcmV2aW91cyIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXthLnByZXR0eVBob3RvLmNoYW5nZUdhbGxlcnlQYWdlKCJwcmV2aW91cyIpO2EucHJldHR5UGhvdG8uc3RvcFNsaWRlc2hvdygpO3JldHVybiExfSk7JHBwX3BpY19ob2xkZXIuZmluZCgiLnBwX2NvbnRlbnQiKS5vbigiaG92ZXIiLGZ1bmN0aW9uKCl7JHBwX3BpY19ob2xkZXIuZmluZCgiLnBwX2dhbGxlcnk6bm90KC5kaXNhYmxlZCkiKS5mYWRlSW4oKX0sZnVuY3Rpb24oKXskcHBfcGljX2hvbGRlci5maW5kKCIucHBfZ2FsbGVyeTpub3QoLmRpc2FibGVkKSIpLmZhZGVPdXQoKX0pOwppdGVtV2lkdGg9NTc7JHBwX2dhbGxlcnlfbGkuZWFjaChmdW5jdGlvbihmKXthKHRoaXMpLmZpbmQoImEiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7YS5wcmV0dHlQaG90by5jaGFuZ2VQYWdlKGYpO2EucHJldHR5UGhvdG8uc3RvcFNsaWRlc2hvdygpO3JldHVybiExfSl9KX1iLnNsaWRlc2hvdyYmKCRwcF9waWNfaG9sZGVyLmZpbmQoIi5wcF9uYXYiKS5wcmVwZW5kKCc8YSBocmVmPSIjIiBjbGFzcz0icHBfcGxheSI+UGxheTwvYT4nKSwkcHBfcGljX2hvbGRlci5maW5kKCIucHBfbmF2IC5wcF9wbGF5Iikub24oImNsaWNrIixmdW5jdGlvbigpe2EucHJldHR5UGhvdG8uc3RhcnRTbGlkZXNob3coKTtyZXR1cm4hMX0pKTskcHBfcGljX2hvbGRlci5hdHRyKCJjbGFzcyIsInBwX3BpY19ob2xkZXIgIitiLnRoZW1lKTskcHBfb3ZlcmxheS5jc3Moe29wYWNpdHk6MCxoZWlnaHQ6YShkb2N1bWVudCkuaGVpZ2h0KCksd2lkdGg6YSh3aW5kb3cpLndpZHRoKCl9KS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7Yi5tb2RhbHx8CmEucHJldHR5UGhvdG8uY2xvc2UoKX0pO2EoImEucHBfY2xvc2UiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7YS5wcmV0dHlQaG90by5jbG9zZSgpO3JldHVybiExfSk7aWYoYi5hbGxvd19leHBhbmQpYSgiYS5wcF9leHBhbmQiKS5vbigiY2xpY2siLGZ1bmN0aW9uKGYpe2EodGhpcykuaGFzQ2xhc3MoInBwX2V4cGFuZCIpPyhhKHRoaXMpLnJlbW92ZUNsYXNzKCJwcF9leHBhbmQiKS5hZGRDbGFzcygicHBfY29udHJhY3QiKSxkb3Jlc2l6ZT0hMSk6KGEodGhpcykucmVtb3ZlQ2xhc3MoInBwX2NvbnRyYWN0IikuYWRkQ2xhc3MoInBwX2V4cGFuZCIpLGRvcmVzaXplPSEwKTt6KGZ1bmN0aW9uKCl7YS5wcmV0dHlQaG90by5vcGVuKCl9KTtyZXR1cm4hMX0pOyRwcF9waWNfaG9sZGVyLmZpbmQoIi5wcF9wcmV2aW91cywgLnBwX25hdiAucHBfYXJyb3dfcHJldmlvdXMiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7YS5wcmV0dHlQaG90by5jaGFuZ2VQYWdlKCJwcmV2aW91cyIpO2EucHJldHR5UGhvdG8uc3RvcFNsaWRlc2hvdygpOwpyZXR1cm4hMX0pOyRwcF9waWNfaG9sZGVyLmZpbmQoIi5wcF9uZXh0LCAucHBfbmF2IC5wcF9hcnJvd19uZXh0Iikub24oImNsaWNrIixmdW5jdGlvbigpe2EucHJldHR5UGhvdG8uY2hhbmdlUGFnZSgibmV4dCIpO2EucHJldHR5UGhvdG8uc3RvcFNsaWRlc2hvdygpO3JldHVybiExfSk7dygpfWU9alF1ZXJ5LmV4dGVuZCh7aG9vazoicmVsIixhbmltYXRpb25fc3BlZWQ6ImZhc3QiLGFqYXhjYWxsYmFjazpmdW5jdGlvbigpe30sc2xpZGVzaG93OjVFMyxhdXRvcGxheV9zbGlkZXNob3c6ITEsb3BhY2l0eTouOCxzaG93X3RpdGxlOiEwLGFsbG93X3Jlc2l6ZTohMCxhbGxvd19leHBhbmQ6ITAsZGVmYXVsdF93aWR0aDo1MDAsZGVmYXVsdF9oZWlnaHQ6MzQ0LGNvdW50ZXJfc2VwYXJhdG9yX2xhYmVsOiIvIix0aGVtZToicHBfZGVmYXVsdCIsaG9yaXpvbnRhbF9wYWRkaW5nOjIwLGhpZGVmbGFzaDohMSx3bW9kZToib3BhcXVlIixhdXRvcGxheTohMCxtb2RhbDohMSxkZWVwbGlua2luZzohMCwKb3ZlcmxheV9nYWxsZXJ5OiEwLG92ZXJsYXlfZ2FsbGVyeV9tYXg6MzAsa2V5Ym9hcmRfc2hvcnRjdXRzOiEwLGNoYW5nZXBpY3R1cmVjYWxsYmFjazpmdW5jdGlvbigpe30sY2FsbGJhY2s6ZnVuY3Rpb24oKXt9LGllNl9mYWxsYmFjazohMCxtYXJrdXA6JzxkaXYgY2xhc3M9InBwX3BpY19ob2xkZXIiPiAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcHQiPiZuYnNwOzwvZGl2PiAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcF90b3AiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHBfbGVmdCI+PC9kaXY+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcF9taWRkbGUiPjwvZGl2PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHBfcmlnaHQiPjwvZGl2PiAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHBfY29udGVudF9jb250YWluZXIiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHBfbGVmdCI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0icHBfZXhwYW5kIiB0aXRsZT0iRXhwYW5kIHRoZSBpbWFnZSI+RXhwYW5kPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHBfcmlnaHQiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBwX2NvbnRlbnQiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcF9sb2FkZXJJY29uIj48L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHBfZmFkZSI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0icHBfY2xvc2UiIGhyZWY9IiMiPkNsb3NlPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHBfaG92ZXJDb250YWluZXIganF1ZXJ5cHAyIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0icHBfbmV4dCIgaHJlZj0iIyI+bmV4dDwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0icHBfcHJldmlvdXMiIGhyZWY9IiMiPnByZXZpb3VzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJwcF9mdWxsX3JlcyI+PC9kaXY+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcF9kZXRhaWxzIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0icHBfZGVzY3JpcHRpb24iPjwvcD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcF9zb2NpYWwiPntwcF9zb2NpYWx9PC9kaXY+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHBfYm90dG9tIj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBwX2xlZnQiPjwvZGl2PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHBfbWlkZGxlIj48L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBwX3JpZ2h0Ij48L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHBfb3ZlcmxheSI+PC9kaXY+JywKZ2FsbGVyeV9tYXJrdXA6JzxkaXYgY2xhc3M9InBwX2dhbGxlcnkiPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJwcF9hcnJvd19wcmV2aW91cyI+UHJldmlvdXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2dhbGxlcnl9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9InBwX2Fycm93X25leHQiPk5leHQ8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4nLGltYWdlX21hcmt1cDonPGltZyBpZD0iZnVsbFJlc0ltYWdlIiBzcmM9IntwYXRofSIgLz4nLGZsYXNoX21hcmt1cDonPG9iamVjdCBjbGFzc2lkPSJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDAiIHdpZHRoPSJ7d2lkdGh9IiBoZWlnaHQ9IntoZWlnaHR9Ij48cGFyYW0gbmFtZT0id21vZGUiIHZhbHVlPSJ7d21vZGV9IiAvPjxwYXJhbSBuYW1lPSJhbGxvd2Z1bGxzY3JlZW4iIHZhbHVlPSJ0cnVlIiAvPjxwYXJhbSBuYW1lPSJhbGxvd3NjcmlwdGFjY2VzcyIgdmFsdWU9ImFsd2F5cyIgLz48cGFyYW0gbmFtZT0ibW92aWUiIHZhbHVlPSJ7cGF0aH0iIC8+PGVtYmVkIHNyYz0ie3BhdGh9IiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgYWxsb3dmdWxsc2NyZWVuPSJ0cnVlIiBhbGxvd3NjcmlwdGFjY2Vzcz0iYWx3YXlzIiB3aWR0aD0ie3dpZHRofSIgaGVpZ2h0PSJ7aGVpZ2h0fSIgd21vZGU9Int3bW9kZX0iPjwvZW1iZWQ+PC9vYmplY3Q+JywKcXVpY2t0aW1lX21hcmt1cDonPG9iamVjdCBjbGFzc2lkPSJjbHNpZDowMkJGMjVENS04QzE3LTRCMjMtQkM4MC1EMzQ4OEFCRERDNkIiIGNvZGViYXNlPSJodHRwOi8vd3d3LmFwcGxlLmNvbS9xdGFjdGl2ZXgvcXRwbHVnaW4uY2FiIiBoZWlnaHQ9IntoZWlnaHR9IiB3aWR0aD0ie3dpZHRofSI+PHBhcmFtIG5hbWU9InNyYyIgdmFsdWU9IntwYXRofSI+PHBhcmFtIG5hbWU9ImF1dG9wbGF5IiB2YWx1ZT0ie2F1dG9wbGF5fSI+PHBhcmFtIG5hbWU9InR5cGUiIHZhbHVlPSJ2aWRlby9xdWlja3RpbWUiPjxlbWJlZCBzcmM9IntwYXRofSIgaGVpZ2h0PSJ7aGVpZ2h0fSIgd2lkdGg9Int3aWR0aH0iIGF1dG9wbGF5PSJ7YXV0b3BsYXl9IiB0eXBlPSJ2aWRlby9xdWlja3RpbWUiIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3LmFwcGxlLmNvbS9xdWlja3RpbWUvZG93bmxvYWQvIj48L2VtYmVkPjwvb2JqZWN0PicsaWZyYW1lX21hcmt1cDonPGlmcmFtZSBzcmMgPSJ7cGF0aH0iIHdpZHRoPSJ7d2lkdGh9IiBoZWlnaHQ9IntoZWlnaHR9IiBmcmFtZWJvcmRlcj0ibm8iPjwvaWZyYW1lPicsCmlubGluZV9tYXJrdXA6JzxkaXYgY2xhc3M9InBwX2lubGluZSI+e2NvbnRlbnR9PC9kaXY+JyxtcDRfbWFya3VwOic8dmlkZW8gd2lkdGg9IjEwMCUiIGhlaWdodD0iIiBwcmVsb2FkPSJhdXRvIiBhdXRvcGxheSBjb250cm9scz0iIiBpZD0icGxheWVyIiBzdHlsZT0id2lkdGg6IDEwMCU7Ij48c291cmNlIHR5cGU9InZpZGVvL21wNCIgc3JjPSJ7cGF0aH0iPjwvc291cmNlPjwvdmlkZW8+JyxjdXN0b21fbWFya3VwOiIiLHNvY2lhbF90b29sczonPGRpdiBjbGFzcz0idHdpdHRlciI+PGEgaHJlZj0iaHR0cDovL3R3aXR0ZXIuY29tL3NoYXJlIiBjbGFzcz0idHdpdHRlci1zaGFyZS1idXR0b24iIGRhdGEtY291bnQ9Im5vbmUiPlR3ZWV0PC9hPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHA6Ly9wbGF0Zm9ybS50d2l0dGVyLmNvbS93aWRnZXRzLmpzIj5ceDNjL3NjcmlwdD48L2Rpdj48ZGl2IGNsYXNzPSJmYWNlYm9vayI+PGlmcmFtZSBzcmM9Ii8vd3d3LmZhY2Vib29rLmNvbS9wbHVnaW5zL2xpa2UucGhwP2xvY2FsZT1lbl9VUyZocmVmPXtsb2NhdGlvbl9ocmVmfSZhbXA7bGF5b3V0PWJ1dHRvbl9jb3VudCZhbXA7c2hvd19mYWNlcz10cnVlJmFtcDt3aWR0aD01MDAmYW1wO2FjdGlvbj1saWtlJmFtcDtmb250JmFtcDtjb2xvcnNjaGVtZT1saWdodCZhbXA7aGVpZ2h0PTIzIiBzY3JvbGxpbmc9Im5vIiBmcmFtZWJvcmRlcj0iMCIgc3R5bGU9ImJvcmRlcjpub25lOyBvdmVyZmxvdzpoaWRkZW47IHdpZHRoOjUwMHB4OyBoZWlnaHQ6MjNweDsiIGFsbG93VHJhbnNwYXJlbmN5PSJ0cnVlIj48L2lmcmFtZT48L2Rpdj4nfSwKZSk7dmFyIGI9e30seD10aGlzLHI9ITEsZCx1LHYsQixuLG0saz1hKHdpbmRvdykuaGVpZ2h0KCksaD1hKHdpbmRvdykud2lkdGgoKSxxO2RvcmVzaXplPSEwO3Njcm9sbF9wb3M9QygpO2Eod2luZG93KS5vZmYoInJlc2l6ZS5wcmV0dHlwaG90byIpLm9uKCJyZXNpemUucHJldHR5cGhvdG8iLGZ1bmN0aW9uKCl7dygpO2s9YSh3aW5kb3cpLmhlaWdodCgpO2g9YSh3aW5kb3cpLndpZHRoKCk7InVuZGVmaW5lZCIhPXR5cGVvZiAkcHBfb3ZlcmxheSYmJHBwX292ZXJsYXkuaGVpZ2h0KGEoZG9jdW1lbnQpLmhlaWdodCgpKS53aWR0aChoKX0pO2lmKGUua2V5Ym9hcmRfc2hvcnRjdXRzKWEoZG9jdW1lbnQpLm9mZigia2V5ZG93bi5wcmV0dHlwaG90byIpLm9uKCJrZXlkb3duLnByZXR0eXBob3RvIixmdW5jdGlvbihjKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mICRwcF9waWNfaG9sZGVyJiYkcHBfcGljX2hvbGRlci5pcygiOnZpc2libGUiKSlzd2l0Y2goYy5rZXlDb2RlKXtjYXNlIDM3OmEucHJldHR5UGhvdG8uY2hhbmdlUGFnZSgicHJldmlvdXMiKTsKYy5wcmV2ZW50RGVmYXVsdCgpO2JyZWFrO2Nhc2UgMzk6YS5wcmV0dHlQaG90by5jaGFuZ2VQYWdlKCJuZXh0Iik7Yy5wcmV2ZW50RGVmYXVsdCgpO2JyZWFrO2Nhc2UgMjc6Yi5tb2RhbHx8YS5wcmV0dHlQaG90by5jbG9zZSgpLGMucHJldmVudERlZmF1bHQoKX19KTthLnByZXR0eVBob3RvLmluaXRpYWxpemU9ZnVuY3Rpb24oKXtiPWU7InBwX2RlZmF1bHQiPT1iLnRoZW1lJiYoYi5ob3Jpem9udGFsX3BhZGRpbmc9MTYpO3RoZVJlbD1hKHRoaXMpLmF0dHIoYi5ob29rKTtnYWxsZXJ5UmVnRXhwPS9cWyg\/Oi4qKVxdLztwcF9pbWFnZXM9KGlzU2V0PWdhbGxlcnlSZWdFeHAuZXhlYyh0aGVSZWwpPyEwOiExKT9qUXVlcnkubWFwKHgsZnVuY3Rpb24oYyxmKXtpZigtMSE9YShjKS5hdHRyKGIuaG9vaykuaW5kZXhPZih0aGVSZWwpKXJldHVybiBhKGMpLmF0dHIoImhyZWYiKX0pOmEubWFrZUFycmF5KGEodGhpcykuYXR0cigiaHJlZiIpKTtwcF90aXRsZXM9aXNTZXQ\/alF1ZXJ5Lm1hcCh4LApmdW5jdGlvbihjLGYpe2lmKC0xIT1hKGMpLmF0dHIoYi5ob29rKS5pbmRleE9mKHRoZVJlbCkpcmV0dXJuIGEoYykuZmluZCgiaW1nIikuYXR0cigiYWx0Iik\/YShjKS5maW5kKCJpbWciKS5hdHRyKCJhbHQiKToiIn0pOmEubWFrZUFycmF5KGEodGhpcykuZmluZCgiaW1nIikuYXR0cigiYWx0IikpO3BwX2Rlc2NyaXB0aW9ucz1pc1NldD9qUXVlcnkubWFwKHgsZnVuY3Rpb24oYyxmKXtpZigtMSE9YShjKS5hdHRyKGIuaG9vaykuaW5kZXhPZih0aGVSZWwpKXJldHVybiBhKGMpLmF0dHIoInRpdGxlIik\/YShjKS5hdHRyKCJ0aXRsZSIpOiIifSk6YS5tYWtlQXJyYXkoYSh0aGlzKS5hdHRyKCJ0aXRsZSIpKTtwcF9pbWFnZXMubGVuZ3RoPmIub3ZlcmxheV9nYWxsZXJ5X21heCYmKGIub3ZlcmxheV9nYWxsZXJ5PSExKTtzZXRfcG9zaXRpb249alF1ZXJ5LmluQXJyYXkoYSh0aGlzKS5hdHRyKCJocmVmIikscHBfaW1hZ2VzKTtyZWxfaW5kZXg9aXNTZXQ\/c2V0X3Bvc2l0aW9uOmEoImFbIisKYi5ob29rKyJePSciK3RoZVJlbCsiJ10iKS5pbmRleChhKHRoaXMpKTtEKHRoaXMpO2lmKGIuYWxsb3dfcmVzaXplKWEod2luZG93KS5vbigic2Nyb2xsLnByZXR0eXBob3RvIixmdW5jdGlvbigpe3coKX0pO2EucHJldHR5UGhvdG8ub3BlbigpO3JldHVybiExfTthLnByZXR0eVBob3RvLm9wZW49ZnVuY3Rpb24oYyxmLEUsRil7InVuZGVmaW5lZCI9PXR5cGVvZiBiJiYoYj1lLHBwX2ltYWdlcz1hLm1ha2VBcnJheShjKSxwcF90aXRsZXM9Zj9hLm1ha2VBcnJheShmKTphLm1ha2VBcnJheSgiIikscHBfZGVzY3JpcHRpb25zPUU\/YS5tYWtlQXJyYXkoRSk6YS5tYWtlQXJyYXkoIiIpLGlzU2V0PTE8cHBfaW1hZ2VzLmxlbmd0aD8hMDohMSxzZXRfcG9zaXRpb249Rj9GOjAsRChjLnRhcmdldCkpO2IuaGlkZWZsYXNoJiZhKCJvYmplY3QsZW1iZWQsaWZyYW1lW3NyYyo9eW91dHViZV0saWZyYW1lW3NyYyo9dmltZW9dIikuY3NzKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7RyhhKHBwX2ltYWdlcykubGVuZ3RoKTsKYSgiLnBwX2xvYWRlckljb24iKS5zaG93KCk7Yi5kZWVwbGlua2luZyYmInVuZGVmaW5lZCIhPXR5cGVvZiB0aGVSZWwmJihsb2NhdGlvbi5oYXNoPXRoZVJlbCsiLyIrcmVsX2luZGV4KyIvIik7Yi5zb2NpYWxfdG9vbHMmJihmYWNlYm9va19saWtlX2xpbms9Yi5zb2NpYWxfdG9vbHMucmVwbGFjZSgie2xvY2F0aW9uX2hyZWZ9IixlbmNvZGVVUklDb21wb25lbnQobG9jYXRpb24uaHJlZikpLCRwcF9waWNfaG9sZGVyLmZpbmQoIi5wcF9zb2NpYWwiKS5odG1sKGZhY2Vib29rX2xpa2VfbGluaykpOyRwcHQuaXMoIjpoaWRkZW4iKSYmJHBwdC5jc3MoIm9wYWNpdHkiLDApLnNob3coKTskcHBfb3ZlcmxheS5zaG93KCkuZmFkZVRvKGIuYW5pbWF0aW9uX3NwZWVkLGIub3BhY2l0eSk7JHBwX3BpY19ob2xkZXIuZmluZCgiLmN1cnJlbnRUZXh0SG9sZGVyIikudGV4dChzZXRfcG9zaXRpb24rMStiLmNvdW50ZXJfc2VwYXJhdG9yX2xhYmVsK2EocHBfaW1hZ2VzKS5sZW5ndGgpOyJ1bmRlZmluZWQiIT0KdHlwZW9mIHBwX2Rlc2NyaXB0aW9uc1tzZXRfcG9zaXRpb25dJiYiIiE9cHBfZGVzY3JpcHRpb25zW3NldF9wb3NpdGlvbl0\/JHBwX3BpY19ob2xkZXIuZmluZCgiLnBwX2Rlc2NyaXB0aW9uIikuc2hvdygpLmh0bWwodW5lc2NhcGUocHBfZGVzY3JpcHRpb25zW3NldF9wb3NpdGlvbl0pKTokcHBfcGljX2hvbGRlci5maW5kKCIucHBfZGVzY3JpcHRpb24iKS5oaWRlKCk7bW92aWVfd2lkdGg9cGFyc2VGbG9hdChsKCJ3aWR0aCIscHBfaW1hZ2VzW3NldF9wb3NpdGlvbl0pKT9sKCJ3aWR0aCIscHBfaW1hZ2VzW3NldF9wb3NpdGlvbl0pOmIuZGVmYXVsdF93aWR0aC50b1N0cmluZygpO21vdmllX2hlaWdodD1wYXJzZUZsb2F0KGwoImhlaWdodCIscHBfaW1hZ2VzW3NldF9wb3NpdGlvbl0pKT9sKCJoZWlnaHQiLHBwX2ltYWdlc1tzZXRfcG9zaXRpb25dKTpiLmRlZmF1bHRfaGVpZ2h0LnRvU3RyaW5nKCk7cj0hMTstMSE9bW92aWVfaGVpZ2h0LmluZGV4T2YoIiUiKSYmKG1vdmllX2hlaWdodD0KcGFyc2VGbG9hdChhKHdpbmRvdykuaGVpZ2h0KCkqcGFyc2VGbG9hdChtb3ZpZV9oZWlnaHQpLzEwMC0xNTApLHI9ITApOy0xIT1tb3ZpZV93aWR0aC5pbmRleE9mKCIlIikmJihtb3ZpZV93aWR0aD1wYXJzZUZsb2F0KGEod2luZG93KS53aWR0aCgpKnBhcnNlRmxvYXQobW92aWVfd2lkdGgpLzEwMC0xNTApLHI9ITApOyRwcF9waWNfaG9sZGVyLmZhZGVJbihmdW5jdGlvbigpe2Iuc2hvd190aXRsZSYmIiIhPXBwX3RpdGxlc1tzZXRfcG9zaXRpb25dJiYidW5kZWZpbmVkIiE9dHlwZW9mIHBwX3RpdGxlc1tzZXRfcG9zaXRpb25dPyRwcHQuaHRtbCh1bmVzY2FwZShwcF90aXRsZXNbc2V0X3Bvc2l0aW9uXSkpOiRwcHQuaHRtbCgiJm5ic3A7Iik7aW1nUHJlbG9hZGVyPSIiO3NraXBJbmplY3Rpb249ITE7c3dpdGNoKHQocHBfaW1hZ2VzW3NldF9wb3NpdGlvbl0pKXtjYXNlICJpbWFnZSI6aW1nUHJlbG9hZGVyPW5ldyBJbWFnZTtuZXh0SW1hZ2U9bmV3IEltYWdlO2lzU2V0JiZzZXRfcG9zaXRpb248CmEocHBfaW1hZ2VzKS5sZW5ndGgtMSYmKG5leHRJbWFnZS5zcmM9cHBfaW1hZ2VzW3NldF9wb3NpdGlvbisxXSk7cHJldkltYWdlPW5ldyBJbWFnZTtpc1NldCYmcHBfaW1hZ2VzW3NldF9wb3NpdGlvbi0xXSYmKHByZXZJbWFnZS5zcmM9cHBfaW1hZ2VzW3NldF9wb3NpdGlvbi0xXSk7JHBwX3BpY19ob2xkZXIuZmluZCgiI3BwX2Z1bGxfcmVzIilbMF0uaW5uZXJIVE1MPWIuaW1hZ2VfbWFya3VwLnJlcGxhY2UoL3twYXRofS9nLHBwX2ltYWdlc1tzZXRfcG9zaXRpb25dKTtpbWdQcmVsb2FkZXIub25sb2FkPWZ1bmN0aW9uKCl7ZD1nKGltZ1ByZWxvYWRlci53aWR0aCxpbWdQcmVsb2FkZXIuaGVpZ2h0KTtwKCl9O2ltZ1ByZWxvYWRlci5vbmVycm9yPWZ1bmN0aW9uKCl7YWxlcnQoIkltYWdlIGNhbm5vdCBiZSBsb2FkZWQuIE1ha2Ugc3VyZSB0aGUgcGF0aCBpcyBjb3JyZWN0IGFuZCBpbWFnZSBleGlzdC4iKTthLnByZXR0eVBob3RvLmNsb3NlKCl9O2ltZ1ByZWxvYWRlci5zcmM9cHBfaW1hZ2VzW3NldF9wb3NpdGlvbl07CmJyZWFrO2Nhc2UgInlvdXR1YmUiOmQ9Zyhtb3ZpZV93aWR0aCxtb3ZpZV9oZWlnaHQpO21vdmllX2lkPWwoInYiLHBwX2ltYWdlc1tzZXRfcG9zaXRpb25dKTsiIj09bW92aWVfaWQmJihtb3ZpZV9pZD1wcF9pbWFnZXNbc2V0X3Bvc2l0aW9uXS5zcGxpdCgieW91dHUuYmUvIiksbW92aWVfaWQ9bW92aWVfaWRbMV0sMDxtb3ZpZV9pZC5pbmRleE9mKCI\/IikmJihtb3ZpZV9pZD1tb3ZpZV9pZC5zdWJzdHIoMCxtb3ZpZV9pZC5pbmRleE9mKCI\/IikpKSwwPG1vdmllX2lkLmluZGV4T2YoIiYiKSYmKG1vdmllX2lkPW1vdmllX2lkLnN1YnN0cigwLG1vdmllX2lkLmluZGV4T2YoIiYiKSkpKTttb3ZpZT0iaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvIittb3ZpZV9pZDtsKCJyZWwiLHBwX2ltYWdlc1tzZXRfcG9zaXRpb25dKT9tb3ZpZSs9Ij9yZWw9IitsKCJyZWwiLHBwX2ltYWdlc1tzZXRfcG9zaXRpb25dKTptb3ZpZSs9Ij9yZWw9MSI7Yi5hdXRvcGxheSYmKG1vdmllKz0iJmF1dG9wbGF5PTEiKTsKdG9JbmplY3Q9Yi5pZnJhbWVfbWFya3VwLnJlcGxhY2UoL3t3aWR0aH0vZyxkLndpZHRoKS5yZXBsYWNlKC97aGVpZ2h0fS9nLGQuaGVpZ2h0KS5yZXBsYWNlKC97d21vZGV9L2csYi53bW9kZSkucmVwbGFjZSgve3BhdGh9L2csbW92aWUpO2JyZWFrO2Nhc2UgInZpbWVvIjpkPWcobW92aWVfd2lkdGgsbW92aWVfaGVpZ2h0KTttb3ZpZV9pZD1wcF9pbWFnZXNbc2V0X3Bvc2l0aW9uXTttb3ZpZT0iaHR0cDovL3BsYXllci52aW1lby5jb20vdmlkZW8vIittb3ZpZV9pZC5tYXRjaCgvaHR0cChzPyk6XC9cLyh3d3dcLik\/dmltZW8uY29tXC8oXGQrKS8pWzNdKyI\/dGl0bGU9MCZhbXA7YnlsaW5lPTAmYW1wO3BvcnRyYWl0PTAiO2IuYXV0b3BsYXkmJihtb3ZpZSs9IiZhdXRvcGxheT0xOyIpO3ZpbWVvX3dpZHRoPWQud2lkdGgrIi9lbWJlZC8\/bW9vZ193aWR0aD0iK2Qud2lkdGg7dG9JbmplY3Q9Yi5pZnJhbWVfbWFya3VwLnJlcGxhY2UoL3t3aWR0aH0vZyx2aW1lb193aWR0aCkucmVwbGFjZSgve2hlaWdodH0vZywKZC5oZWlnaHQpLnJlcGxhY2UoL3twYXRofS9nLG1vdmllKTticmVhaztjYXNlICJtcDQiOmQ9Zyhtb3ZpZV93aWR0aCxtb3ZpZV9oZWlnaHQpO21vdmllX3VybD1wcF9pbWFnZXNbc2V0X3Bvc2l0aW9uXTt0b0luamVjdD1iLm1wNF9tYXJrdXAucmVwbGFjZSgve3BhdGh9L2csbW92aWVfdXJsKTticmVhaztjYXNlICJxdWlja3RpbWUiOmQ9Zyhtb3ZpZV93aWR0aCxtb3ZpZV9oZWlnaHQpO2QuaGVpZ2h0Kz0xNTtkLmNvbnRlbnRIZWlnaHQrPTE1O2QuY29udGFpbmVySGVpZ2h0Kz0xNTt0b0luamVjdD1iLnF1aWNrdGltZV9tYXJrdXAucmVwbGFjZSgve3dpZHRofS9nLGQud2lkdGgpLnJlcGxhY2UoL3toZWlnaHR9L2csZC5oZWlnaHQpLnJlcGxhY2UoL3t3bW9kZX0vZyxiLndtb2RlKS5yZXBsYWNlKC97cGF0aH0vZyxwcF9pbWFnZXNbc2V0X3Bvc2l0aW9uXSkucmVwbGFjZSgve2F1dG9wbGF5fS9nLGIuYXV0b3BsYXkpO2JyZWFrO2Nhc2UgImZsYXNoIjpkPWcobW92aWVfd2lkdGgsCm1vdmllX2hlaWdodCk7Zmxhc2hfdmFycz1wcF9pbWFnZXNbc2V0X3Bvc2l0aW9uXTtmbGFzaF92YXJzPWZsYXNoX3ZhcnMuc3Vic3RyaW5nKHBwX2ltYWdlc1tzZXRfcG9zaXRpb25dLmluZGV4T2YoImZsYXNodmFycyIpKzEwLHBwX2ltYWdlc1tzZXRfcG9zaXRpb25dLmxlbmd0aCk7ZmlsZW5hbWU9cHBfaW1hZ2VzW3NldF9wb3NpdGlvbl07ZmlsZW5hbWU9ZmlsZW5hbWUuc3Vic3RyaW5nKDAsZmlsZW5hbWUuaW5kZXhPZigiPyIpKTt0b0luamVjdD1iLmZsYXNoX21hcmt1cC5yZXBsYWNlKC97d2lkdGh9L2csZC53aWR0aCkucmVwbGFjZSgve2hlaWdodH0vZyxkLmhlaWdodCkucmVwbGFjZSgve3dtb2RlfS9nLGIud21vZGUpLnJlcGxhY2UoL3twYXRofS9nLGZpbGVuYW1lKyI\/IitmbGFzaF92YXJzKTticmVhaztjYXNlICJpZnJhbWUiOmQ9Zyhtb3ZpZV93aWR0aCxtb3ZpZV9oZWlnaHQpO2ZyYW1lX3VybD1wcF9pbWFnZXNbc2V0X3Bvc2l0aW9uXTtmcmFtZV91cmw9ZnJhbWVfdXJsLnN1YnN0cigwLApmcmFtZV91cmwuaW5kZXhPZigiaWZyYW1lIiktMSk7dG9JbmplY3Q9Yi5pZnJhbWVfbWFya3VwLnJlcGxhY2UoL3t3aWR0aH0vZyxkLndpZHRoKS5yZXBsYWNlKC97aGVpZ2h0fS9nLGQuaGVpZ2h0KS5yZXBsYWNlKC97cGF0aH0vZyxmcmFtZV91cmwpO2JyZWFrO2Nhc2UgImFqYXgiOmRvcmVzaXplPSExO2Q9Zyhtb3ZpZV93aWR0aCxtb3ZpZV9oZWlnaHQpO3NraXBJbmplY3Rpb249ZG9yZXNpemU9ITA7YS5nZXQocHBfaW1hZ2VzW3NldF9wb3NpdGlvbl0sZnVuY3Rpb24oSCl7dG9JbmplY3Q9Yi5pbmxpbmVfbWFya3VwLnJlcGxhY2UoL3tjb250ZW50fS9nLEgpOyRwcF9waWNfaG9sZGVyLmZpbmQoIiNwcF9mdWxsX3JlcyIpWzBdLmlubmVySFRNTD10b0luamVjdDtwKCl9KTticmVhaztjYXNlICJjdXN0b20iOmQ9Zyhtb3ZpZV93aWR0aCxtb3ZpZV9oZWlnaHQpO3RvSW5qZWN0PWIuY3VzdG9tX21hcmt1cDticmVhaztjYXNlICJpbmxpbmUiOm15Q2xvbmU9YShwcF9pbWFnZXNbc2V0X3Bvc2l0aW9uXSkuY2xvbmUoKS5hcHBlbmQoJzxiciBjbGVhcj0iYWxsIiAvPicpLmNzcyh7d2lkdGg6Yi5kZWZhdWx0X3dpZHRofSkud3JhcElubmVyKCc8ZGl2IGlkPSJwcF9mdWxsX3JlcyI+PGRpdiBjbGFzcz0icHBfaW5saW5lIj48L2Rpdj48L2Rpdj4nKS5hcHBlbmRUbyhhKCJib2R5IikpLnNob3coKSwKZG9yZXNpemU9ITEsZD1nKGEobXlDbG9uZSkud2lkdGgoKSxhKG15Q2xvbmUpLmhlaWdodCgpKSxkb3Jlc2l6ZT0hMCxhKG15Q2xvbmUpLnJlbW92ZSgpLHRvSW5qZWN0PWIuaW5saW5lX21hcmt1cC5yZXBsYWNlKC97Y29udGVudH0vZyxhKHBwX2ltYWdlc1tzZXRfcG9zaXRpb25dKS5odG1sKCkpfWltZ1ByZWxvYWRlcnx8c2tpcEluamVjdGlvbnx8KCRwcF9waWNfaG9sZGVyLmZpbmQoIiNwcF9mdWxsX3JlcyIpWzBdLmlubmVySFRNTD10b0luamVjdCxwKCkpfSk7cmV0dXJuITF9O2EucHJldHR5UGhvdG8uY2hhbmdlUGFnZT1mdW5jdGlvbihjKXtjdXJyZW50R2FsbGVyeVBhZ2U9MDsicHJldmlvdXMiPT1jPyhzZXRfcG9zaXRpb24tLSwwPnNldF9wb3NpdGlvbiYmKHNldF9wb3NpdGlvbj1hKHBwX2ltYWdlcykubGVuZ3RoLTEpKToibmV4dCI9PWM\/KHNldF9wb3NpdGlvbisrLHNldF9wb3NpdGlvbj5hKHBwX2ltYWdlcykubGVuZ3RoLTEmJihzZXRfcG9zaXRpb249MCkpOnNldF9wb3NpdGlvbj0KYztyZWxfaW5kZXg9c2V0X3Bvc2l0aW9uO2RvcmVzaXplfHwoZG9yZXNpemU9ITApO2IuYWxsb3dfZXhwYW5kJiZhKCIucHBfY29udHJhY3QiKS5yZW1vdmVDbGFzcygicHBfY29udHJhY3QiKS5hZGRDbGFzcygicHBfZXhwYW5kIik7eihmdW5jdGlvbigpe2EucHJldHR5UGhvdG8ub3BlbigpfSl9O2EucHJldHR5UGhvdG8uY2hhbmdlR2FsbGVyeVBhZ2U9ZnVuY3Rpb24oYyl7Im5leHQiPT1jPyhjdXJyZW50R2FsbGVyeVBhZ2UrKyxjdXJyZW50R2FsbGVyeVBhZ2U+dG90YWxQYWdlJiYoY3VycmVudEdhbGxlcnlQYWdlPTApKToicHJldmlvdXMiPT1jPyhjdXJyZW50R2FsbGVyeVBhZ2UtLSwwPmN1cnJlbnRHYWxsZXJ5UGFnZSYmKGN1cnJlbnRHYWxsZXJ5UGFnZT10b3RhbFBhZ2UpKTpjdXJyZW50R2FsbGVyeVBhZ2U9YztzbGlkZV9zcGVlZD0ibmV4dCI9PWN8fCJwcmV2aW91cyI9PWM\/Yi5hbmltYXRpb25fc3BlZWQ6MDtzbGlkZV90bz1jdXJyZW50R2FsbGVyeVBhZ2UqaXRlbXNQZXJQYWdlKgppdGVtV2lkdGg7JHBwX2dhbGxlcnkuZmluZCgidWwiKS5hbmltYXRlKHtsZWZ0Oi1zbGlkZV90b30sc2xpZGVfc3BlZWQpfTthLnByZXR0eVBob3RvLnN0YXJ0U2xpZGVzaG93PWZ1bmN0aW9uKCl7InVuZGVmaW5lZCI9PXR5cGVvZiBxPygkcHBfcGljX2hvbGRlci5maW5kKCIucHBfcGxheSIpLm9mZigiY2xpY2siKS5yZW1vdmVDbGFzcygicHBfcGxheSIpLmFkZENsYXNzKCJwcF9wYXVzZSIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXthLnByZXR0eVBob3RvLnN0b3BTbGlkZXNob3coKTtyZXR1cm4hMX0pLHE9c2V0SW50ZXJ2YWwoYS5wcmV0dHlQaG90by5zdGFydFNsaWRlc2hvdyxiLnNsaWRlc2hvdykpOmEucHJldHR5UGhvdG8uY2hhbmdlUGFnZSgibmV4dCIpfTthLnByZXR0eVBob3RvLnN0b3BTbGlkZXNob3c9ZnVuY3Rpb24oKXskcHBfcGljX2hvbGRlci5maW5kKCIucHBfcGF1c2UiKS5vZmYoImNsaWNrIikucmVtb3ZlQ2xhc3MoInBwX3BhdXNlIikuYWRkQ2xhc3MoInBwX3BsYXkiKS5vbigiY2xpY2siLApmdW5jdGlvbigpe2EucHJldHR5UGhvdG8uc3RhcnRTbGlkZXNob3coKTtyZXR1cm4hMX0pO2NsZWFySW50ZXJ2YWwocSk7cT12b2lkIDB9O2EucHJldHR5UGhvdG8uY2xvc2U9ZnVuY3Rpb24oKXskcHBfb3ZlcmxheS5pcygiOmFuaW1hdGVkIil8fChhLnByZXR0eVBob3RvLnN0b3BTbGlkZXNob3coKSwkcHBfcGljX2hvbGRlci5zdG9wKCkuZmluZCgib2JqZWN0LGVtYmVkIikuY3NzKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIiksYSgiZGl2LnBwX3BpY19ob2xkZXIsZGl2LnBwdCwucHBfZmFkZSIpLmZhZGVPdXQoYi5hbmltYXRpb25fc3BlZWQsZnVuY3Rpb24oKXthKHRoaXMpLnJlbW92ZSgpfSksJHBwX292ZXJsYXkuZmFkZU91dChiLmFuaW1hdGlvbl9zcGVlZCxmdW5jdGlvbigpe2IuaGlkZWZsYXNoJiZhKCJvYmplY3QsZW1iZWQsaWZyYW1lW3NyYyo9eW91dHViZV0saWZyYW1lW3NyYyo9dmltZW9dIikuY3NzKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpO2EodGhpcykucmVtb3ZlKCk7CmEod2luZG93KS5vZmYoInNjcm9sbC5wcmV0dHlwaG90byIpOy0xIT09bG9jYXRpb24uaHJlZi5pbmRleE9mKCIjcHJldHR5UGhvdG8iKSYmKGxvY2F0aW9uLmhhc2g9InByZXR0eVBob3RvIik7Yi5jYWxsYmFjaygpO2RvcmVzaXplPSEwO3U9ITE7ZGVsZXRlIGJ9KSl9OyFwcF9hbHJlYWR5SW5pdGlhbGl6ZWQmJnkoKSYmKHBwX2FscmVhZHlJbml0aWFsaXplZD0hMCxoYXNoUmVsPWhhc2hJbmRleD15KCksaGFzaEluZGV4PWhhc2hJbmRleC5zdWJzdHJpbmcoaGFzaEluZGV4LmluZGV4T2YoIi8iKSsxLGhhc2hJbmRleC5sZW5ndGgtMSksaGFzaFJlbD1oYXNoUmVsLnN1YnN0cmluZygwLGhhc2hSZWwuaW5kZXhPZigiLyIpKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YSgiYVsiK2UuaG9vaysiXj0nIitoYXNoUmVsKyInXTplcSgiK2hhc2hJbmRleCsiKSIpLnRyaWdnZXIoImNsaWNrIil9LDUwKSk7cmV0dXJuIHRoaXMub2ZmKCJjbGljay5wcmV0dHlwaG90byIpLm9uKCJjbGljay5wcmV0dHlwaG90byIsCmEucHJldHR5UGhvdG8uaW5pdGlhbGl6ZSl9fSkoalF1ZXJ5KTt2YXIgcHBfYWxyZWFkeUluaXRpYWxpemVkPSExOwovKiogL20vanMvanF1ZXJ5LnRyYW5zaXRpb24ubWluLmpzICoqLwovKiEKICogalF1ZXJ5IFRyYW5zaXQgLSBDU1MzIHRyYW5zaXRpb25zIGFuZCB0cmFuc2Zvcm1hdGlvbnMKICogQ29weXJpZ2h0KGMpIDIwMTEgUmljbyBTdGEuIENydXogPHJpY29Acmljb3N0YWNydXouY29tPgogKiBNSVQgTGljZW5zZWQuCiAqCiAqIGh0dHA6Ly9yaWNvc3RhY3J1ei5jb20vanF1ZXJ5LnRyYW5zaXQKICogaHR0cDovL2dpdGh1Yi5jb20vcnN0YWNydXovanF1ZXJ5LnRyYW5zaXQKICovCihmdW5jdGlvbihkKXtmdW5jdGlvbiBrKGEpe3ZhciBiPVsiTW96IiwiV2Via2l0IiwiTyIsIm1zIl0sYz1hLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Euc3Vic3RyKDEpO2lmKGEgaW4gaS5zdHlsZSlyZXR1cm4gYTtmb3IoYT0wO2E8Yi5sZW5ndGg7KythKXt2YXIgZD1iW2FdK2M7aWYoZCBpbiBpLnN0eWxlKXJldHVybiBkfX1mdW5jdGlvbiBqKGEpeyJzdHJpbmciPT09dHlwZW9mIGEmJnRoaXMucGFyc2UoYSk7cmV0dXJuIHRoaXN9ZnVuY3Rpb24gcChhLGIsYyl7ITA9PT1iP2EucXVldWUoYyk6Yj9hLnF1ZXVlKGIsYyk6YygpfWZ1bmN0aW9uIG0oYSl7dmFyIGI9W107ZC5lYWNoKGEsZnVuY3Rpb24oYSl7YT1kLmNhbWVsQ2FzZShhKTthPWQudHJhbnNpdC5wcm9wZXJ0eU1hcFthXXx8YTthPXIoYSk7LTE9PT1kLmluQXJyYXkoYSxiKSYmYi5wdXNoKGEpfSk7cmV0dXJuIGJ9ZnVuY3Rpb24gcShhLGIsYyxlKXthPW0oYSk7ZC5jc3NFYXNlW2NdJiYoYz1kLmNzc0Vhc2VbY10pOwp2YXIgaD0iIituKGIpKyIgIitjOzA8cGFyc2VJbnQoZSwxMCkmJihoKz0iICIrbihlKSk7dmFyIGY9W107ZC5lYWNoKGEsZnVuY3Rpb24oYSxiKXtmLnB1c2goYisiICIraCl9KTtyZXR1cm4gZi5qb2luKCIsICIpfWZ1bmN0aW9uIGYoYSxiKXtifHwoZC5jc3NOdW1iZXJbYV09ITApO2QudHJhbnNpdC5wcm9wZXJ0eU1hcFthXT1lLnRyYW5zZm9ybTtkLmNzc0hvb2tzW2FdPXtnZXQ6ZnVuY3Rpb24oYil7cmV0dXJuKGQoYikuY3NzKCJ0cmFuc2Zvcm0iKXx8bmV3IGopLmdldChhKX0sc2V0OmZ1bmN0aW9uKGIsZSl7dmFyIGg9ZChiKS5jc3MoInRyYW5zZm9ybSIpfHxuZXcgajtoLnNldEZyb21TdHJpbmcoYSxlKTtkKGIpLmNzcyh7dHJhbnNmb3JtOmh9KX19fWZ1bmN0aW9uIHIoYSl7cmV0dXJuIGEucmVwbGFjZSgvKFtBLVpdKS9nLGZ1bmN0aW9uKGEpe3JldHVybiItIithLnRvTG93ZXJDYXNlKCl9KX1mdW5jdGlvbiBnKGEsYil7cmV0dXJuInN0cmluZyI9PT10eXBlb2YgYSYmIWEubWF0Y2goL15bXC0wLTlcLl0rJC8pPwphOiIiK2ErYn1mdW5jdGlvbiBuKGEpe2QuZnguc3BlZWRzW2FdJiYoYT1kLmZ4LnNwZWVkc1thXSk7cmV0dXJuIGcoYSwibXMiKX1kLnRyYW5zaXQ9e3ZlcnNpb246IjAuMS4zIixwcm9wZXJ0eU1hcDp7bWFyZ2luTGVmdDoibWFyZ2luIixtYXJnaW5SaWdodDoibWFyZ2luIixtYXJnaW5Cb3R0b206Im1hcmdpbiIsbWFyZ2luVG9wOiJtYXJnaW4iLHBhZGRpbmdMZWZ0OiJwYWRkaW5nIixwYWRkaW5nUmlnaHQ6InBhZGRpbmciLHBhZGRpbmdCb3R0b206InBhZGRpbmciLHBhZGRpbmdUb3A6InBhZGRpbmcifSxlbmFibGVkOiEwLHVzZVRyYW5zaXRpb25FbmQ6ITF9O3ZhciBpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGU9e30scz0tMTxuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkuaW5kZXhPZigiY2hyb21lIik7ZS50cmFuc2l0aW9uPWsoInRyYW5zaXRpb24iKTtlLnRyYW5zaXRpb25EZWxheT1rKCJ0cmFuc2l0aW9uRGVsYXkiKTtlLnRyYW5zZm9ybT1rKCJ0cmFuc2Zvcm0iKTsKZS50cmFuc2Zvcm1PcmlnaW49aygidHJhbnNmb3JtT3JpZ2luIik7aS5zdHlsZVtlLnRyYW5zZm9ybV09IiI7aS5zdHlsZVtlLnRyYW5zZm9ybV09InJvdGF0ZVkoOTBkZWcpIjtlLnRyYW5zZm9ybTNkPSIiIT09aS5zdHlsZVtlLnRyYW5zZm9ybV07ZC5leHRlbmQoZC5zdXBwb3J0LGUpO3ZhciBvPWUudHJhbnNpdGlvbkVuZD17TW96VHJhbnNpdGlvbjoidHJhbnNpdGlvbmVuZCIsT1RyYW5zaXRpb246Im9UcmFuc2l0aW9uRW5kIixXZWJraXRUcmFuc2l0aW9uOiJ3ZWJraXRUcmFuc2l0aW9uRW5kIixtc1RyYW5zaXRpb246Ik1TVHJhbnNpdGlvbkVuZCJ9W2UudHJhbnNpdGlvbl18fG51bGwsaT1udWxsO2QuY3NzRWFzZT17X2RlZmF1bHQ6ImVhc2UiLCJpbiI6ImVhc2UtaW4iLG91dDoiZWFzZS1vdXQiLCJpbi1vdXQiOiJlYXNlLWluLW91dCIsc25hcDoiY3ViaWMtYmV6aWVyKDAsMSwuNSwxKSJ9O2QuY3NzSG9va3MudHJhbnNmb3JtPXtnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGQoYSkuZGF0YSgidHJhbnNmb3JtIil9LApzZXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz1iO2MgaW5zdGFuY2VvZiBqfHwoYz1uZXcgaihjKSk7YS5zdHlsZVtlLnRyYW5zZm9ybV09IldlYmtpdFRyYW5zZm9ybSI9PT1lLnRyYW5zZm9ybSYmIXM\/Yy50b1N0cmluZyghMCk6Yy50b1N0cmluZygpO2QoYSkuZGF0YSgidHJhbnNmb3JtIixjKX19O2QuY3NzSG9va3MudHJhbnNmb3JtT3JpZ2luPXtnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuc3R5bGVbZS50cmFuc2Zvcm1PcmlnaW5dfSxzZXQ6ZnVuY3Rpb24oYSxiKXthLnN0eWxlW2UudHJhbnNmb3JtT3JpZ2luXT1ifX07ZC5jc3NIb29rcy50cmFuc2l0aW9uPXtnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuc3R5bGVbZS50cmFuc2l0aW9uXX0sc2V0OmZ1bmN0aW9uKGEsYil7YS5zdHlsZVtlLnRyYW5zaXRpb25dPWJ9fTtmKCJzY2FsZSIpO2YoInRyYW5zbGF0ZSIpO2YoInJvdGF0ZSIpO2YoInJvdGF0ZVgiKTtmKCJyb3RhdGVZIik7Zigicm90YXRlM2QiKTtmKCJwZXJzcGVjdGl2ZSIpOwpmKCJza2V3WCIpO2YoInNrZXdZIik7ZigieCIsITApO2YoInkiLCEwKTtqLnByb3RvdHlwZT17c2V0RnJvbVN0cmluZzpmdW5jdGlvbihhLGIpe3ZhciBjPSJzdHJpbmciPT09dHlwZW9mIGI\/Yi5zcGxpdCgiLCIpOmIuY29uc3RydWN0b3I9PT1BcnJheT9iOltiXTtjLnVuc2hpZnQoYSk7ai5wcm90b3R5cGUuc2V0LmFwcGx5KHRoaXMsYyl9LHNldDpmdW5jdGlvbihhKXt2YXIgYj1BcnJheS5wcm90b3R5cGUuc2xpY2UuYXBwbHkoYXJndW1lbnRzLFsxXSk7dGhpcy5zZXR0ZXJbYV0\/dGhpcy5zZXR0ZXJbYV0uYXBwbHkodGhpcyxiKTp0aGlzW2FdPWIuam9pbigiLCIpfSxnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZ2V0dGVyW2FdP3RoaXMuZ2V0dGVyW2FdLmFwcGx5KHRoaXMpOnRoaXNbYV18fDB9LHNldHRlcjp7cm90YXRlOmZ1bmN0aW9uKGEpe3RoaXMucm90YXRlPWcoYSwiZGVnIil9LHJvdGF0ZVg6ZnVuY3Rpb24oYSl7dGhpcy5yb3RhdGVYPWcoYSwiZGVnIil9LHJvdGF0ZVk6ZnVuY3Rpb24oYSl7dGhpcy5yb3RhdGVZPQpnKGEsImRlZyIpfSxzY2FsZTpmdW5jdGlvbihhLGIpe3ZvaWQgMD09PWImJihiPWEpO3RoaXMuc2NhbGU9YSsiLCIrYn0sc2tld1g6ZnVuY3Rpb24oYSl7dGhpcy5za2V3WD1nKGEsImRlZyIpfSxza2V3WTpmdW5jdGlvbihhKXt0aGlzLnNrZXdZPWcoYSwiZGVnIil9LHBlcnNwZWN0aXZlOmZ1bmN0aW9uKGEpe3RoaXMucGVyc3BlY3RpdmU9ZyhhLCJweCIpfSx4OmZ1bmN0aW9uKGEpe3RoaXMuc2V0KCJ0cmFuc2xhdGUiLGEsbnVsbCl9LHk6ZnVuY3Rpb24oYSl7dGhpcy5zZXQoInRyYW5zbGF0ZSIsbnVsbCxhKX0sdHJhbnNsYXRlOmZ1bmN0aW9uKGEsYil7dm9pZCAwPT09dGhpcy5fdHJhbnNsYXRlWCYmKHRoaXMuX3RyYW5zbGF0ZVg9MCk7dm9pZCAwPT09dGhpcy5fdHJhbnNsYXRlWSYmKHRoaXMuX3RyYW5zbGF0ZVk9MCk7bnVsbCE9PWEmJih0aGlzLl90cmFuc2xhdGVYPWcoYSwicHgiKSk7bnVsbCE9PWImJih0aGlzLl90cmFuc2xhdGVZPWcoYiwicHgiKSk7dGhpcy50cmFuc2xhdGU9CnRoaXMuX3RyYW5zbGF0ZVgrIiwiK3RoaXMuX3RyYW5zbGF0ZVl9fSxnZXR0ZXI6e3g6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdHJhbnNsYXRlWHx8MH0seTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl90cmFuc2xhdGVZfHwwfSxzY2FsZTpmdW5jdGlvbigpe3ZhciBhPSh0aGlzLnNjYWxlfHwiMSwxIikuc3BsaXQoIiwiKTthWzBdJiYoYVswXT1wYXJzZUZsb2F0KGFbMF0pKTthWzFdJiYoYVsxXT1wYXJzZUZsb2F0KGFbMV0pKTtyZXR1cm4gYVswXT09PWFbMV0\/YVswXTphfSxyb3RhdGUzZDpmdW5jdGlvbigpe2Zvcih2YXIgYT0odGhpcy5yb3RhdGUzZHx8IjAsMCwwLDBkZWciKS5zcGxpdCgiLCIpLGI9MDszPj1iOysrYilhW2JdJiYoYVtiXT1wYXJzZUZsb2F0KGFbYl0pKTthWzNdJiYoYVszXT1nKGFbM10sImRlZyIpKTtyZXR1cm4gYX19LHBhcnNlOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXM7YS5yZXBsYWNlKC8oW2EtekEtWjAtOV0rKVwoKC4qPylcKS9nLGZ1bmN0aW9uKGEsZCwKZSl7Yi5zZXRGcm9tU3RyaW5nKGQsZSl9KX0sdG9TdHJpbmc6ZnVuY3Rpb24oYSl7dmFyIGI9W10sYztmb3IoYyBpbiB0aGlzKWlmKHRoaXMuaGFzT3duUHJvcGVydHkoYykmJihlLnRyYW5zZm9ybTNkfHwhKCJyb3RhdGVYIj09PWN8fCJyb3RhdGVZIj09PWN8fCJwZXJzcGVjdGl2ZSI9PT1jfHwidHJhbnNmb3JtT3JpZ2luIj09PWMpKSkiXyIhPT1jWzBdJiYoYSYmInNjYWxlIj09PWM\/Yi5wdXNoKGMrIjNkKCIrdGhpc1tjXSsiLDEpIik6YSYmInRyYW5zbGF0ZSI9PT1jP2IucHVzaChjKyIzZCgiK3RoaXNbY10rIiwwKSIpOmIucHVzaChjKyIoIit0aGlzW2NdKyIpIikpO3JldHVybiBiLmpvaW4oIiAiKX19O2QuZm4udHJhbnNpdGlvbj1kLmZuLnRyYW5zaXQ9ZnVuY3Rpb24oYSxiLGMsZil7dmFyIGg9dGhpcyxnPTAsaT0hMDsiZnVuY3Rpb24iPT09dHlwZW9mIGImJihmPWIsYj12b2lkIDApOyJmdW5jdGlvbiI9PT10eXBlb2YgYyYmKGY9YyxjPXZvaWQgMCk7InVuZGVmaW5lZCIhPT0KdHlwZW9mIGEuZWFzaW5nJiYoYz1hLmVhc2luZyxkZWxldGUgYS5lYXNpbmcpOyJ1bmRlZmluZWQiIT09dHlwZW9mIGEuZHVyYXRpb24mJihiPWEuZHVyYXRpb24sZGVsZXRlIGEuZHVyYXRpb24pOyJ1bmRlZmluZWQiIT09dHlwZW9mIGEuY29tcGxldGUmJihmPWEuY29tcGxldGUsZGVsZXRlIGEuY29tcGxldGUpOyJ1bmRlZmluZWQiIT09dHlwZW9mIGEucXVldWUmJihpPWEucXVldWUsZGVsZXRlIGEucXVldWUpOyJ1bmRlZmluZWQiIT09dHlwZW9mIGEuZGVsYXkmJihnPWEuZGVsYXksZGVsZXRlIGEuZGVsYXkpOyJ1bmRlZmluZWQiPT09dHlwZW9mIGImJihiPWQuZnguc3BlZWRzLl9kZWZhdWx0KTsidW5kZWZpbmVkIj09PXR5cGVvZiBjJiYoYz1kLmNzc0Vhc2UuX2RlZmF1bHQpO3ZhciBiPW4oYiksaj1xKGEsYixjLGcpLGw9ZC50cmFuc2l0LmVuYWJsZWQmJmUudHJhbnNpdGlvbj9wYXJzZUludChiLDEwKStwYXJzZUludChnLDEwKTowO2lmKDA9PT1sKXJldHVybiBwKGgsaSxmdW5jdGlvbihiKXtoLmNzcyhhKTsKZiYmZi5hcHBseShoKTtiJiZiKCl9KSxoO3ZhciBrPXt9LG09ZnVuY3Rpb24oYil7dmFyIGM9ZmFsc2UsZz1mdW5jdGlvbigpe2MmJmgub2ZmKG8sZyk7bD4wJiZoLmVhY2goZnVuY3Rpb24oKXt0aGlzLnN0eWxlW2UudHJhbnNpdGlvbl09a1t0aGlzXXx8bnVsbH0pO3R5cGVvZiBmPT09ImZ1bmN0aW9uIiYmZi5hcHBseShoKTt0eXBlb2YgYj09PSJmdW5jdGlvbiImJmIoKX07aWYobD4wJiZvJiZkLnRyYW5zaXQudXNlVHJhbnNpdGlvbkVuZCl7Yz10cnVlO2gub24obyxnKX1lbHNlIHdpbmRvdy5zZXRUaW1lb3V0KGcsbCk7aC5lYWNoKGZ1bmN0aW9uKCl7bD4wJiYodGhpcy5zdHlsZVtlLnRyYW5zaXRpb25dPWopO2QodGhpcykuY3NzKGEpfSl9O3AoaCxpLGZ1bmN0aW9uKGEpe3ZhciBiPTA7ZS50cmFuc2l0aW9uPT09Ik1velRyYW5zaXRpb24iJiZiPDI1JiYoYj0yNSk7d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXttKGEpfSxiKX0pO3JldHVybiB0aGlzfTtkLnRyYW5zaXQuZ2V0VHJhbnNpdGlvblZhbHVlPQpxfSkoalF1ZXJ5KTsvKkVPRiovOwovKiogL20vanMvanF1ZXJ5LnRvdWNoU3dpcGUubWluLmpzICoqLwooZnVuY3Rpb24oZyl7Zy5mbi5zd2lwZT1mdW5jdGlvbihtKXtpZighdGhpcylyZXR1cm4gZmFsc2U7dmFyIGI9e2ZpbmdlcnM6MSx0aHJlc2hvbGQ6NzUsc3dpcGU6bnVsbCxzd2lwZUxlZnQ6bnVsbCxzd2lwZVJpZ2h0Om51bGwsc3dpcGVVcDpudWxsLHN3aXBlRG93bjpudWxsLHN3aXBlU3RhdHVzOm51bGwsY2xpY2s6bnVsbCx0cmlnZ2VyT25Ub3VjaEVuZDp0cnVlLGFsbG93UGFnZVNjcm9sbDoiYXV0byJ9LHA9ImxlZnQiLHY9InJpZ2h0Iix3PSJ1cCIseD0iZG93biIseT0ibm9uZSIsej0iaG9yaXpvbnRhbCIsQT0idmVydGljYWwiLEc9ImF1dG8iLEg9InN0YXJ0IixCPSJtb3ZlIixxPSJlbmQiLG49ImNhbmNlbCIsZD0ib250b3VjaHN0YXJ0ImluIHdpbmRvdyxDPWQ\/InRvdWNoc3RhcnQiOiJtb3VzZWRvd24iLHI9ZD8idG91Y2htb3ZlIjoibW91c2Vtb3ZlIixzPWQ\/InRvdWNoZW5kIjoibW91c2V1cCIsYz0ic3RhcnQiO2lmKG0uYWxsb3dQYWdlU2Nyb2xsPT11bmRlZmluZWQmJg0KKG0uc3dpcGUhPXVuZGVmaW5lZHx8bS5zd2lwZVN0YXR1cyE9dW5kZWZpbmVkKSltLmFsbG93UGFnZVNjcm9sbD15O20mJmcuZXh0ZW5kKGIsbSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2Z1bmN0aW9uIEQoYSl7dmFyIGU9ZD9hLnRvdWNoZXNbMF06YTtjPUg7aWYoZClrPWEudG91Y2hlcy5sZW5ndGg7ZGlzdGFuY2U9MDtkaXJlY3Rpb249bnVsbDtpZihrPT1iLmZpbmdlcnN8fCFkKXtoLng9Zi54PWUucGFnZVg7aC55PWYueT1lLnBhZ2VZO2Iuc3dpcGVTdGF0dXMmJm8oYSxjKX1lbHNlIGwoYSk7aWYoZCl7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihyLHQpO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIocyx1KX1lbHNle2coZG9jdW1lbnQpLm9uKHIsdCk7Zyhkb2N1bWVudCkub24ocyx1KX19ZnVuY3Rpb24gdChhKXtpZighKGM9PXF8fGM9PW4pKXt2YXIgZT1kP2EudG91Y2hlc1swXTphO2YueD1lLnBhZ2VYO2YueT1lLnBhZ2VZO2RpcmVjdGlvbj1FKCk7aWYoZClrPQ0KYS50b3VjaGVzLmxlbmd0aDtjPUI7ZT1kaXJlY3Rpb247aWYoYi5hbGxvd1BhZ2VTY3JvbGw9PXkpYS5wcmV2ZW50RGVmYXVsdCgpO2Vsc2V7dmFyIGk9Yi5hbGxvd1BhZ2VTY3JvbGw9PUc7c3dpdGNoKGUpe2Nhc2UgcDppZihiLnN3aXBlTGVmdCYmaXx8IWkmJmIuYWxsb3dQYWdlU2Nyb2xsIT16KWEucHJldmVudERlZmF1bHQoKTticmVhaztjYXNlIHY6aWYoYi5zd2lwZVJpZ2h0JiZpfHwhaSYmYi5hbGxvd1BhZ2VTY3JvbGwhPXopYS5wcmV2ZW50RGVmYXVsdCgpO2JyZWFrO2Nhc2UgdzppZihiLnN3aXBlVXAmJml8fCFpJiZiLmFsbG93UGFnZVNjcm9sbCE9QSlhLnByZXZlbnREZWZhdWx0KCk7YnJlYWs7Y2FzZSB4OmlmKGIuc3dpcGVEb3duJiZpfHwhaSYmYi5hbGxvd1BhZ2VTY3JvbGwhPUEpYS5wcmV2ZW50RGVmYXVsdCgpfX1pZihrPT1iLmZpbmdlcnN8fCFkKXtkaXN0YW5jZT1GKCk7Yi5zd2lwZVN0YXR1cyYmbyhhLGMsZGlyZWN0aW9uLGRpc3RhbmNlKTtpZighYi50cmlnZ2VyT25Ub3VjaEVuZClpZihkaXN0YW5jZT49DQpiLnRocmVzaG9sZCl7Yz1xO28oYSxjKTtsKGEpfX1lbHNle2M9bjtvKGEsYyk7bChhKX19fWZ1bmN0aW9uIHUoYSl7YS5wcmV2ZW50RGVmYXVsdCgpO2Rpc3RhbmNlPUYoKTtkaXJlY3Rpb249RSgpO2lmKGIudHJpZ2dlck9uVG91Y2hFbmQpe2M9cTtpZigoaz09Yi5maW5nZXJzfHwhZCkmJmYueCE9MClkaXN0YW5jZT49Yi50aHJlc2hvbGR8fChjPW4pO2Vsc2UgYz1uO28oYSxjKTtsKGEpfWVsc2UgaWYoYz09Qil7Yz1uO28oYSxjKTtsKGEpfWlmKGQpe2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIocix0KTtkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKHMsdSl9ZWxzZXtnKGRvY3VtZW50KS5vZmYocix0KTtnKGRvY3VtZW50KS5vZmYocyx1KX19ZnVuY3Rpb24gbCgpe2s9MDtoLng9MDtoLnk9MDtmLng9MDtmLnk9MH1mdW5jdGlvbiBvKGEsZSl7aWYoYi5zd2lwZVN0YXR1cyliLnN3aXBlU3RhdHVzLmNhbGwoaixhLGUsZGlyZWN0aW9ufHxudWxsLGRpc3RhbmNlfHwNCjApO2lmKGU9PW4paWYoYi5jbGljayYmKGs9PTF8fCFkKSYmKGlzTmFOKGRpc3RhbmNlKXx8ZGlzdGFuY2U9PTApKWIuY2xpY2suY2FsbChqLGEsYS50YXJnZXQpO2lmKGU9PXEpe2Iuc3dpcGUmJmIuc3dpcGUuY2FsbChqLGEsZGlyZWN0aW9uLGRpc3RhbmNlKTtzd2l0Y2goZGlyZWN0aW9uKXtjYXNlIHA6Yi5zd2lwZUxlZnQmJmIuc3dpcGVMZWZ0LmNhbGwoaixhLGRpcmVjdGlvbixkaXN0YW5jZSk7YnJlYWs7Y2FzZSB2OmIuc3dpcGVSaWdodCYmYi5zd2lwZVJpZ2h0LmNhbGwoaixhLGRpcmVjdGlvbixkaXN0YW5jZSk7YnJlYWs7Y2FzZSB3OmIuc3dpcGVVcCYmYi5zd2lwZVVwLmNhbGwoaixhLGRpcmVjdGlvbixkaXN0YW5jZSk7YnJlYWs7Y2FzZSB4OmIuc3dpcGVEb3duJiZiLnN3aXBlRG93bi5jYWxsKGosYSxkaXJlY3Rpb24sZGlzdGFuY2UpfX19ZnVuY3Rpb24gRigpe3JldHVybiBNYXRoLnJvdW5kKE1hdGguc3FydChNYXRoLnBvdyhmLngtaC54LDIpK01hdGgucG93KGYueS0NCmgueSwyKSkpfWZ1bmN0aW9uIEUoKXt2YXIgYTthPU1hdGgucm91bmQoTWF0aC5hdGFuMihmLnktaC55LGgueC1mLngpKjE4MC9NYXRoLlBJKTtpZihhPDApYT0zNjAtTWF0aC5hYnMoYSk7YT1hO3JldHVybiBhPD00NSYmYT49MD9wOmE8PTM2MCYmYT49MzE1P3A6YT49MTM1JiZhPD0yMjU\/djphPjQ1JiZhPDEzNT94Ond9dmFyIGo9Zyh0aGlzKSxrPTAsaD17eDowLHk6MH0sZj17eDowLHk6MH07aWYoZCl7dGhpcy5hZGRFdmVudExpc3RlbmVyKEMsRCk7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hjYW5jZWwiLGwpfWVsc2V7ai5vbihDLEQpO2coZG9jdW1lbnQpLm9uKCJ0b3VjaGNhbmNlbCIsbCl9fSl9fSkoalF1ZXJ5KTsvKkVPRiovOwovKiogL20vanMvcGFnZWJhbm5lci5qcyAqKi8KdmFyIF9fX2QyY19wYWdlYmFubmVyanNfY19vbj0iMjAyNi0wMS0xMyAxMzozMDowMyI7J3VzZSBzdHJpY3QnO2Z1bmN0aW9uIFBhZ2VCYW5uZXIoYSl7bmV3IFBhZ2VCYW5uZXJzQ2Fyb3VzZWwoYSl9CmZ1bmN0aW9uIG1vdG9pbnNpZ2h0QmFubmVyVmFyaWFibGVSZXBsYWNlbWVudCgpe2lmKCQoIi5qcy1tb3RvaW5zaWdodFNob3BQb3B1cENvbnRhaW5lciIpLmxlbmd0aClpZigkKCIjbmV3U2VjdGlvbk92ZXJyaWRlIikubGVuZ3RoJiYiMSI9PSQoIiNuZXdTZWN0aW9uT3ZlcnJpZGUiKS52YWwoKSlpZigkKCIjTU9UT0lOU0lHSFRfU0hPUElOR19UT09MX1NFTEVDVCIpLmxlbmd0aCYmInRhYiI9PSQoIiNNT1RPSU5TSUdIVF9TSE9QSU5HX1RPT0xfU0VMRUNUIikudmFsKCkpe3ZhciBhPSQoIiNqcy1tb3RvaW5zaWdodFNob3BQb3B1cENvbnRhaW5lci1pbnB1dCIpLnZhbCgpOyQoImRpdiN0b3BCYW5uZXJJbWFnZSIpLmF0dHIoIm9uY2xpY2siLCJ3aW5kb3cub3BlbignIithKyInLCAnX2JsYW5rJykiKS5hdHRyKCJvbnRhcCIsIndpbmRvdy5vcGVuKCciK2ErIicsICdfYmxhbmsnKSIpfWVsc2UgJCgiZGl2I3RvcEJhbm5lckltYWdlIikuYXR0cigib25jbGljayIsIiQoJyNtb3RvaW5zaWdodFNob3BQb3B1cENvbnRhaW5lcicpLnBvcHVwaXplKCkuc2V0VHJpZ2dlcignY2xpY2snKS5vcGVuKCk7cmV0dXJuIGZhbHNlOyIpLmF0dHIoIm9udGFwIiwKIiQoJyNtb3RvaW5zaWdodFNob3BQb3B1cENvbnRhaW5lcicpLnBvcHVwaXplKCkuc2V0VHJpZ2dlcignY2xpY2snKS5vcGVuKCk7cmV0dXJuIGZhbHNlOyIpO2Vsc2UgJCgiI01PVE9JTlNJR0hUX1NIT1BJTkdfVE9PTF9VU0VEX1NFTEVDVCIpLmxlbmd0aCYmInRhYiI9PSQoIiNNT1RPSU5TSUdIVF9TSE9QSU5HX1RPT0xfVVNFRF9TRUxFQ1QiKS52YWwoKT8oYT0kKCIjanMtbW90b2luc2lnaHRTaG9wUG9wdXBDb250YWluZXItaW5wdXQiKS52YWwoKSwkKCJkaXYjdG9wQmFubmVySW1hZ2UiKS5hdHRyKCJvbmNsaWNrIiwid2luZG93Lm9wZW4oJyIrYSsiJywgJ19ibGFuaycpIikuYXR0cigib250YXAiLCJ3aW5kb3cub3BlbignIithKyInLCAnX2JsYW5rJykiKSk6JCgiZGl2I3RvcEJhbm5lckltYWdlIikuYXR0cigib25jbGljayIsIiQoJyNtb3RvaW5zaWdodFNob3BQb3B1cENvbnRhaW5lcicpLnBvcHVwaXplKCkuc2V0VHJpZ2dlcignY2xpY2snKS5vcGVuKCk7cmV0dXJuIGZhbHNlOyIpLmF0dHIoIm9udGFwIiwKIiQoJyNtb3RvaW5zaWdodFNob3BQb3B1cENvbnRhaW5lcicpLnBvcHVwaXplKCkuc2V0VHJpZ2dlcignY2xpY2snKS5vcGVuKCk7cmV0dXJuIGZhbHNlOyIpO2Vsc2UgJCgiI25ld1NlY3Rpb25PdmVycmlkZSIpLmxlbmd0aCYmIjEiPT0kKCIjbmV3U2VjdGlvbk92ZXJyaWRlIikudmFsKCk\/JCgiI01PVE9JTlNJR0hUX1NIT1BJTkdfVE9PTF9TRUxFQ1QiKS5sZW5ndGgmJiJ0YWIiPT0kKCIjTU9UT0lOU0lHSFRfU0hPUElOR19UT09MX1NFTEVDVCIpLnZhbCgpPyhhPSQoIiNtb3RvaW5zaWdodHNob3BzY3JpcHR1cmwiKS52YWwoKSxhPWEucmVwbGFjZSgiaW50ZWdyYXRpb24vaW50ZWdyYXRpb24uanMiLCJzZWFyY2gvIiksJCgiZGl2I3RvcEJhbm5lckltYWdlIikuYXR0cigib25jbGljayIsIndpbmRvdy5vcGVuKCciK2ErIicsICdfYmxhbmsnKSIpLmF0dHIoIm9udGFwIiwid2luZG93Lm9wZW4oJyIrYSsiJywgJ19ibGFuaycpIikpOiQoImRpdiN0b3BCYW5uZXJJbWFnZSIpLmF0dHIoIm9uY2xpY2siLAoiJCgnI21vdG9pbnNpZ2h0U2hvcFBvcHVwQ29udGFpbmVyJykucG9wdXBpemUoKS5zZXRUcmlnZ2VyKCdjbGljaycpLm9wZW4oKTtyZXR1cm4gZmFsc2U7IikuYXR0cigib250YXAiLCIkKCcjbW90b2luc2lnaHRTaG9wUG9wdXBDb250YWluZXInKS5wb3B1cGl6ZSgpLnNldFRyaWdnZXIoJ2NsaWNrJykub3BlbigpO3JldHVybiBmYWxzZTsiKTokKCIjTU9UT0lOU0lHSFRfU0hPUElOR19UT09MX1VTRURfU0VMRUNUIikubGVuZ3RoJiYidGFiIj09JCgiI01PVE9JTlNJR0hUX1NIT1BJTkdfVE9PTF9VU0VEX1NFTEVDVCIpLnZhbCgpPyhhPSQoIiNtb3RvaW5zaWdodHNob3BzY3JpcHR1cmwiKS52YWwoKSxhPWEucmVwbGFjZSgiaW50ZWdyYXRpb24vaW50ZWdyYXRpb24uanMiLCJzZWFyY2gvP2NvbmRpdGlvbj1Vc2VkIiksJCgiZGl2I3RvcEJhbm5lckltYWdlIikuYXR0cigib25jbGljayIsIndpbmRvdy5vcGVuKCciK2ErIicsICdfYmxhbmsnKSIpLmF0dHIoIm9udGFwIiwid2luZG93Lm9wZW4oJyIrCmErIicsICdfYmxhbmsnKSIpKTokKCJkaXYjdG9wQmFubmVySW1hZ2UiKS5hdHRyKCJvbmNsaWNrIiwiJCgnI21vdG9pbnNpZ2h0U2hvcFBvcHVwQ29udGFpbmVyJykucG9wdXBpemUoKS5zZXRUcmlnZ2VyKCdjbGljaycpLm9wZW4oKTtyZXR1cm4gZmFsc2U7IikuYXR0cigib250YXAiLCIkKCcjbW90b2luc2lnaHRTaG9wUG9wdXBDb250YWluZXInKS5wb3B1cGl6ZSgpLnNldFRyaWdnZXIoJ2NsaWNrJykub3BlbigpO3JldHVybiBmYWxzZTsiKX0KY2xhc3MgUGFnZUJhbm5lcnNDYXJvdXNlbHtjb25zdHJ1Y3RvcihhKXtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBhKXt0aGlzLmlzSW52ZW50b3J5UGFnZSYmInVuZGVmaW5lZCIhPT10eXBlb2YgYS5uZXdJbnZlbnRvcnkmJihhPWEubmV3SW52ZW50b3J5KTt2YXIgZSxiO3RoaXMuZGF0YT1udWxsIT0oYj1udWxsPT0oZT1hKT92b2lkIDA6ZS5iYW5uZXJzKT9iOmE7dmFyIGMsZDt0aGlzLmNvbmZpZz1udWxsIT0oZD1udWxsPT0oYz1hKT92b2lkIDA6Yy5jb25maWcpP2Q6YTt0aGlzLmJhbm5lcnM9W107dGhpcy5pbmRleD0tMTt0aGlzLmluaXRpYWxpemVkPSExO3RoaXMudGltZW91dElEPW51bGw7dGhpcy5pbml0KCl9fWdldCBpc0ludmVudG9yeVBhZ2UoKXtyZXR1cm4iVVNFRCI9PXN0b3JlLmdldCgiY29udGV4dCIpLnNlY3Rpb24mJiJuZXdpbnYiPT1zdG9yZS5nZXQoImNvbnRleHQiKS5jYXRlZ29yeXx8LTE8d2luZG93LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL25ldWZzL2ludmVudGFpcmUvIil8fAotMTx3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW52ZW50YWlyZS5odG1sIil8fC0xPHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9uZXcvaW52ZW50b3J5LyIpfHwtMTx3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW52ZW50b3J5Lmh0bWwiKX1nZXQgY3VycmVudFBhdGgoKXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSt3aW5kb3cubG9jYXRpb24uc2VhcmNoKS50b0xvd2VyQ2FzZSgpfWdldCAkdG9wQmFubmVySW1hZ2UoKXtyZXR1cm4gJCgiZGl2I3RvcEJhbm5lckltYWdlIil9aW5pdCgpe2lmKCF0aGlzLmluaXRpYWxpemVkKXt2YXIgYT17fSxlPXt9LGI9W10sYz0wO2Zvcih2YXIgZCBpbiB0aGlzLmRhdGEpImh0bWw1Ij09PWR8fHRoaXMuX2lzS2V5d29yZEluUGF0aChkKXx8dGhpcy5faXNLZXl3b3JkSW5Db29raWUoZCl8fCQoImJvZHkiKS5oYXNDbGFzcygidGVtcGxhdGU1IikmJigibmV1ZnMiPT09CmR8fCJuZXciPT09ZCk\/Imh0bWw1Ij09PWQmJiJ1bmRlZmluZWQiIT09dHlwZW9mIG5ld2NhckRldGFpbHMmJiJ1bmRlZmluZWQiIT09dHlwZW9mIG5ld2NhckRldGFpbHMuc2xpZGVyT2JqZWN0JiZudWxsIT1uZXdjYXJEZXRhaWxzLnNsaWRlck9iamVjdCYmMz5uZXdjYXJEZXRhaWxzLnNsaWRlck9iamVjdC50b3RhbFNsaWRlcygpfHwkLmVhY2godGhpcy5kYXRhW2RdLChnLGYpPT57Yz1wYXJzZUludChnKTstMT09PWIuaW5kZXhPZihjKT8oYi5wdXNoKGMpLGFbY109Zik6YVtjKzUwXT1mfSk6ImRlZmF1bHQiPT09ZHx8dGhpcy5faXNLZXl3b3JkSW5QYXRoKGQpfHx0aGlzLl9pc0tleXdvcmRJbkNvb2tpZShkKT8kLmVhY2godGhpcy5kYXRhW2RdLChnLGYpPT57YVswXT1mO2IucHVzaCgwKX0pOiJzdGF0aWNiYW5uZXJzIj09PWQmJiQuZWFjaCh0aGlzLmRhdGFbZF0sKGcsZik9PntjPXBhcnNlSW50KGcpOy0xPT09Yi5pbmRleE9mKGMpJiYoYi5wdXNoKGMpLGFbY109Zik7ZVtnXT0KZn0pO3ZhciBoPSEwOyQuZWFjaChhLChnLGYpPT57ImRlZmF1bHQiIT1mLmkmJihoPSExKX0pO3RoaXMuYmFubmVycz1bXTskLmVhY2goYSwoZyxmKT0+eyJ1bmRlZmluZWQiIT09dHlwZW9mIGYmJigiZGVmYXVsdCI9PT1mLmkmJiEwPT09aHx8ImRlZmF1bHQiIT09Zi5pKSYmdGhpcy5iYW5uZXJzLnB1c2goZil9KTswPT09dGhpcy5iYW5uZXJzLmxlbmd0aCYmMDxPYmplY3Qua2V5cyhlKS5sZW5ndGgmJiQuZWFjaChlLChnLGYpPT57InVuZGVmaW5lZCIhPT10eXBlb2YgZiYmdGhpcy5iYW5uZXJzLnB1c2goZil9KTtkPSQoIiNpc01vYmlsZSIpOzA8ZC5sZW5ndGgmJjE9PT1kLnZhbCgpJiYoJCgiZGl2I3RvcEJhbm5lckltYWdlIikuYWRkQ2xhc3MoIi1tdDEwIiksJCgnW2lkKj0iaGVhZGVyUHJvbW9GbG9hdEJ1dHRvbkluQm9keSJdJykuaGlkZSgpKTt0aGlzLmluaXRpYWxpemVkPSEwOzA8T2JqZWN0LmtleXModGhpcy5iYW5uZXJzKS5sZW5ndGg\/dGhpcy5yb3RhdGUoKTp0aGlzLmNsZWFyQXNwZWN0UmF0aW8oKX19Y2xlYXJBc3BlY3RSYXRpbygpe2xldCBhPQokKCJkaXYjdG9wQmFubmVySW1hZ2UiKTthLmxlbmd0aCYmYS5jc3MoImFzcGVjdC1yYXRpbyIsIiIpfXN0b3AoKXtjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0SUQpfXN0YXJ0KGEpe3RoaXMuaW5pdGlhbGl6ZWQmJih0aGlzLnRpbWVvdXRJRD1zZXRUaW1lb3V0KCgpPT50aGlzLnJvdGF0ZSgpLGEpKX1yb3RhdGUoKXtpZigiZnVuY3Rpb24iPT09dHlwZW9mIHBvcHVwaXplckFjdGl2ZSYmcG9wdXBpemVyQWN0aXZlKCkpc2V0VGltZW91dCgoKT0+dGhpcy5yb3RhdGUoKSwzRTMpO2Vsc2V7dmFyIGE9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmRhcmstdG9vbHRpcCIpO2lmKGEubGVuZ3RoKXtsZXQgYz0hMTthLmZvckVhY2goZD0+eyJub25lIiE9d2luZG93LmdldENvbXB1dGVkU3R5bGUoZCxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCJkaXNwbGF5IikmJihjPSEwKX0pO2lmKCEwPT09Yyl7c2V0VGltZW91dCgoKT0+dGhpcy5yb3RhdGUoKSwyRTMpO3JldHVybn19YT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjdG9wQmFubmVySW1hZ2UiKTsKaWYoITE9PT1pc0luVmlld3BvcnQoYSx7dG9wOi0zNTB9KSl0aGlzLnN0YXJ0KDNFMyk7ZWxzZXt0aGlzLmluZGV4Kys7dGhpcy5pbmRleD49T2JqZWN0LmtleXModGhpcy5iYW5uZXJzKS5sZW5ndGgmJih0aGlzLmluZGV4PTApO3ZhciBlPSQoImRpdiN0b3BCYW5uZXJJbWFnZSIpLGI9dGhpcy5iYW5uZXJzW3RoaXMuaW5kZXhdO2lmKGImJiJodG1sNSI9PT1iLmkpe2E9MDtsZXQgYz0xPT09Yi51P3RoaXMuY29uZmlnLmMxOnRoaXMuY29uZmlnLmMyXzEsZD0yPT09Yi51P3RoaXMuY29uZmlnLmMyOnRoaXMuY29uZmlnLmMyXzI7ZS5odG1sKCIiKS5oaWRlKCk7bGV0IGg9JCgiI3Byb21vX2J0bl90eXBlIikudmFsKCk7dm9pZCAwPT09aCYmKGg9ImJlc3RvZmZlcl9hbmltYXRlIik7bGV0IGc9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7Zy5pZD0iZ3dkYmFubmVyIjtnLnN0eWxlLndpZHRoPSI5MzBweCI7Zy5zdHlsZS5oZWlnaHQ9IjIwMHB4IjtnLnNldEF0dHJpYnV0ZSgic2Nyb2xsaW5nIiwKIm5vIik7Zy5zZXRBdHRyaWJ1dGUoImZyYW1lYm9yZGVyIiwiMCIpOyJpbnZlbnRvcnkiPT09Yi5vJiYxMDwkKCIjdXNlZEludmVudG9yeU5ld1BhZ2UiKS5odG1sKCkubGVuZ3RoJiYhQ29va2llcy5nZXQoImludmVudG9yeU5ld1BvcHVwU2hvd24iKSYmKGE9MSk7bGV0IGY9JCgiI3BvcHVwbWFrZSIpLnZhbCgpLnJlcGxhY2UoLy18XHMvZywiXyIpLGs9JCgiI3RleHRNb2RlbE92ZXJyaWRlIikudmFsKCk7az0oaz9rOiQoIiNwb3B1cG1vZGVsIikudmFsKCkpLnJlcGxhY2UoLy18XHMvZywiXyIpO2xldCBtPSQoIiNwb3B1cHllYXIiKS52YWwoKSxsPSQoIiNzdHlsZWlkIikudmFsKCk7bD0wPHBhcnNlSW50KGwpPyItaWQiK2w6IiI7JCgiYm9keSIpLmhhc0NsYXNzKCJFTkdMSVNIIik\/Zy5zcmM9YC9nd2RiYW5uZXIvJHttfS0ke2Z9LSR7a30ke2x9Lmh0bWw\/cHR5cGU9JHtofSZjMT0ke2N9JmMyPSR7ZH0mdD0ke2IudX0mbz0ke2F9YDpnLnNyYz1gL2d3ZGJhbm5lci8ke2Z9LSR7a30tJHttfSR7bH0uaHRtbD9wdHlwZT0ke2h9JmMxPSR7Y30mYzI9JHtkfSZ0PSR7Yi51fSZvPSR7YX1gOwplLmh0bWwoZykuZmFkZUluKCJzbG93Iil9ZWxzZSBpZihiJiYiZGVmYXVsdCI9PT1iLmkpZS5odG1sKCIiKS5oaWRlKCkuaHRtbChiLmgpLmZhZGVJbigic2xvdyIpLmF0dHIoIm9uY2xpY2siLGUuZmluZCgidGFibGUiKS5hdHRyKCJvbmNsaWNrIikpLmF0dHIoIm9udGFwIixlLmZpbmQoInRhYmxlIikuYXR0cigib25jbGljayIpKTtlbHNlICQoJzxpbWcgZmV0Y2hwcmlvcml0eT0iaGlnaCIgYWx0PSIiIHN0eWxlPSJ3aWR0aDoxMDAlO2N1cnNvcjpwb2ludGVyOyIgc3JjPSInK2IuaSsnIj4nKS5vbigibG9hZCIsYz0+e2UuaHRtbCgiIikuaGlkZSgpOyQoYy5jdXJyZW50VGFyZ2V0KS5hcHBlbmRUbygiZGl2I3RvcEJhbm5lckltYWdlIik7dGhpcy5fcHJvY2Vzc0Rpc2NsYWltZXIoYik7bnVsbCE9Yi51JiYwPGIudS5sZW5ndGg\/LTE8Yi51LmluZGV4T2YoInRyYWRlaW52YWx1ZXMuY2EiKXx8LTE8Yi51LmluZGV4T2YoImluc3RhbnRvZmZlci5hY2N1LXRyYWRlLmNvbSIpPyQoYy5jdXJyZW50VGFyZ2V0KS5hdHRyKCJvbmNsaWNrIiwKInNob3dUcmFkZUluUG9wdXAoJyIrYi51KyInKSIpLmF0dHIoIm9udGFwIiwic2hvd1RyYWRlSW5Qb3B1cCgnIitiLnUrIicpIik6LTE8Yi51LnRvTG93ZXJDYXNlKCkuaW5kZXhPZigiJHRyYWRlYm9vc3QiKT8kKGMuY3VycmVudFRhcmdldCkuYXR0cigib25jbGljayIsInJldHVybiBsYXVuY2hUcmFkZUluUG9wdXAoJ2Jhbm5lcicpOyIpLmF0dHIoIm9udGFwIiwicmV0dXJuIGxhdW5jaFRyYWRlSW5Qb3B1cCgnYmFubmVyJyk7Iik6LTE8Yi51LnRvTG93ZXJDYXNlKCkuaW5kZXhPZigiJGNyZWRpdHNjb3JlIik\/JChjLmN1cnJlbnRUYXJnZXQpLmF0dHIoIm9uY2xpY2siLCIkKCcjY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lcicpLnBvcHVwaXplKCkuc2V0VHJpZ2dlcignY2xpY2snKS5vcGVuKCk7cmV0dXJuIGZhbHNlOyIpLmF0dHIoIm9udGFwIiwiJCgnI2NyZWRpdFNjb3JlUG9wdXBDb250YWluZXInKS5wb3B1cGl6ZSgpLnNldFRyaWdnZXIoJ2NsaWNrJykub3BlbigpO3JldHVybiBmYWxzZTsiKToKLTE8Yi51LnRvTG93ZXJDYXNlKCkuaW5kZXhPZigiJG11bHRpc3RlcGZpbmFuY2UiKT8kKGMuY3VycmVudFRhcmdldCkuYXR0cigib25jbGljayIsIiQoJyNmaW5hbmNlTXVsdGlzdGVwUG9wdXBDb250YWluZXInKS5wb3B1cGl6ZSgpLnNldFRyaWdnZXIoJ2NsaWNrJykub3BlbigpO3JldHVybiBmYWxzZTsiKS5hdHRyKCJvbnRhcCIsIiQoJyNmaW5hbmNlTXVsdGlzdGVwUG9wdXBDb250YWluZXInKS5wb3B1cGl6ZSgpLnNldFRyaWdnZXIoJ2NsaWNrJykub3BlbigpO3JldHVybiBmYWxzZTsiKTotMTxiLnUudG9Mb3dlckNhc2UoKS5pbmRleE9mKCIkY3JlZGl0Ym9vc3QiKT8kKGMuY3VycmVudFRhcmdldCkuYXR0cigib25jbGljayIsIiQoJyNjcmVkaXRCb29zdE11bHRpUG9wdXBDb250YWluZXInKS5wb3B1cGl6ZSgpLnNldFRyaWdnZXIoJ2NsaWNrJykub3BlbigpO3JldHVybiBmYWxzZTsiKS5hdHRyKCJvbnRhcCIsIiQoJyNjcmVkaXRCb29zdE11bHRpUG9wdXBDb250YWluZXInKS5wb3B1cGl6ZSgpLnNldFRyaWdnZXIoJ2NsaWNrJykub3BlbigpO3JldHVybiBmYWxzZTsiKToKLTE8Yi51LmluZGV4T2YoIiRtb3RvaW5zaWdodHNob3AiKT8kKCIjbW90b2luc2lnaHRTaG9wUG9wdXBDb250YWluZXIiKS5sZW5ndGgmJm1vdG9pbnNpZ2h0QmFubmVyVmFyaWFibGVSZXBsYWNlbWVudCgpOi0xPGIudS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoIiRzZXJ2aWNlYXB0Iik\/JChjLmN1cnJlbnRUYXJnZXQpLmF0dHIoIm9uY2xpY2siLCJMZWFkSGFuZGxlcigpLmdldExlYWQoJ0RlYWxlckFwcG9pbnRtZW50JykuZGlzcGxheSgpO3JldHVybiBmYWxzZTsiKS5hdHRyKCJvbnRhcCIsIkxlYWRIYW5kbGVyKCkuZ2V0TGVhZCgnRGVhbGVyQXBwb2ludG1lbnQnKS5kaXNwbGF5KCk7cmV0dXJuIGZhbHNlOyIpOi0xPGIudS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoImphdmFzY3JpcHQ6dm9pZCIpPyQoYy5jdXJyZW50VGFyZ2V0KS5hdHRyKCJvbmNsaWNrIixiLnUpLmF0dHIoIm9udGFwIixiLnUpOjA9PT1iLnUuaW5kZXhPZigiLyIpfHwtMTxiLnUuaW5kZXhPZih3aW5kb3cubG9jYXRpb24uaG9zdCk\/CiQoYy5jdXJyZW50VGFyZ2V0KS5hdHRyKCJvbmNsaWNrIiwid2luZG93LmxvY2F0aW9uID0gJyIrYi51KyInIik6JChjLmN1cnJlbnRUYXJnZXQpLmF0dHIoIm9uY2xpY2siLCJ3aW5kb3cub3BlbignIitiLnUrIicsICdfYmxhbmsnKSIpOiQoYy5jdXJyZW50VGFyZ2V0KS5hdHRyKCJvbmNsaWNrIiwic2hvd1BvcHVwV2lkZ2V0KCkiKS5hdHRyKCJvbnRhcCIsInNob3dQb3B1cFdpZGdldCgpIik7ZS5mYWRlSW4oInNsb3ciKX0pOzI+T2JqZWN0LmtleXModGhpcy5iYW5uZXJzKS5sZW5ndGh8fHRoaXMuc3RhcnQoYi50KX19fV9pc0tleXdvcmRJblBhdGgoYSl7cmV0dXJuLTEhPT10aGlzLmN1cnJlbnRQYXRoLmluZGV4T2YoZGVjb2RlVVJJQ29tcG9uZW50KGErIiIpLnRvTG93ZXJDYXNlKCkpfV9pc0tleXdvcmRJbkNvb2tpZShhKXtsZXQgZT1Db29raWVzLmdldCgiZDJjb2ZmZXIiKTtyZXR1cm4gZSYmKGU9ZS50b0xvd2VyQ2FzZSgpLC0xIT09ZS5pbmRleE9mKGEudG9Mb3dlckNhc2UoKSkpPwohMDohMX1fcHJvY2Vzc0Rpc2NsYWltZXIoYSl7aWYoYS5oYXNPd25Qcm9wZXJ0eSgiZCIpJiYwIT09YS5kLmxlbmd0aCl7dmFyIGU9e2ZyOntzaG93OiJBZmZpY2hlciBsZXMgbW9kYWxpdMOpcyBldCBjb25kaXRpb25zIGfDqW7DqXJhbGVzIixoaWRlOiJNYXNxdWVyIGxlcyBtb2RhbGl0w6lzIGV0IGNvbmRpdGlvbnMgZ8OpbsOpcmFsZXMifSxlbjp7c2hvdzoiVmlldyBUZXJtcyBhbmQgQ29uZGl0aW9ucyIsaGlkZToiSGlkZSBUZXJtcyBhbmQgQ29uZGl0aW9ucyJ9fSxiPSIxIj09PSQoIiNpc21vYmlsZSIpLnZhbCgpLGM9JCgnPGRpdiBjbGFzcz0idG9wQmFubmVySW1hZ2UtLWRpc2NsYWltZXItY29udGFpbmVyIj48aSBjbGFzcz0iZmFzIGZhLXRpbWVzIGZhLTJ4Ij48L2k+PGRpdj48L2Rpdj48L2Rpdj4nKSxkPSQoYDxkaXYgY2xhc3M9InRvcEJhbm5lckltYWdlLS1kaXNjbGFpbWVyLWNvbnRyb2wiPjxidXR0b24gdHlwZT0iYnV0dG9uIj4ke2VbRDJDVXRpbHMuTGFuZy5nZXRTaG9ydExhbmcoITEpXS5zaG93fTwvYnV0dG9uPjwvZGl2PmApOwpjLmZpbmQoImRpdiIpLmFwcGVuZChhLmQpO3RoaXMuJHRvcEJhbm5lckltYWdlLmFwcGVuZChjKTt0aGlzLiR0b3BCYW5uZXJJbWFnZS5hcHBlbmQoZCk7aWYoYilkLm9uKCJjbGljayIsKCk9PntjLmlzKCI6dmlzaWJsZSIpPyhkLmZpbmQoImJ1dHRvbiIpLnRleHQoZVtEMkNVdGlscy5MYW5nLmdldFNob3J0TGFuZyghMSldLnNob3cpLGMuZmFkZU91dCgpLHRoaXMuc3RhcnQoYS50KSk6KGQuZmluZCgiYnV0dG9uIikudGV4dChlW0QyQ1V0aWxzLkxhbmcuZ2V0U2hvcnRMYW5nKCExKV0uaGlkZSksYy5mYWRlSW4oKSx0aGlzLnN0b3AoKSl9KTtlbHNlIGQub24oImNsaWNrIiwoKT0+e2Muc2hvdygpO3RoaXMuc3RvcCgpfSksYy5maW5kKCJpIikub24oImNsaWNrIiwoKT0+e2MuaGlkZSgpO3RoaXMuc3RhcnQoYS50KX0pfX19OwovKiogL20vanMvYmFzZTY0LmpzICoqLwp2YXIgX19fZDJjX2Jhc2U2NGpzX2Nfb249IjIwMjUtMDUtMjMgMTc6MDY6MDgiOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX2Jhc2U2NGpzX2Nfb249IjIwMjQtMDctMDggMTA6MzA6MDUiOyJ1c2Ugc3RyaWN0IjsKdmFyIEJhc2U2ND17X2tleVN0cjoiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLz0iLF9iNjRUZXN0OlJlZ0V4cCgiXig\/OltBLVphLXowLTkrL117NH0pKig\/OltBLVphLXowLTkrL117Mn09PXxbQS1aYS16MC05Ky9dezN9PSk\/JCIpLGVuY29kZTpmdW5jdGlvbihhKXt2YXIgZD0iIixjPTA7Zm9yKGE9QmFzZTY0Ll91dGY4X2VuY29kZShhKTtjPGEubGVuZ3RoOyl7dmFyIGI9YS5jaGFyQ29kZUF0KGMrKyksZT1hLmNoYXJDb2RlQXQoYysrKSxmPWEuY2hhckNvZGVBdChjKyspLGc9Yj4+MjtiPShiJjMpPDw0fGU+PjQ7dmFyIGg9KGUmMTUpPDwyfGY+PjYsaz1mJjYzO2lzTmFOKGUpP2g9az02NDppc05hTihmKSYmKGs9NjQpO2Q9ZCt0aGlzLl9rZXlTdHIuY2hhckF0KGcpK3RoaXMuX2tleVN0ci5jaGFyQXQoYikrdGhpcy5fa2V5U3RyLmNoYXJBdChoKSt0aGlzLl9rZXlTdHIuY2hhckF0KGspfXJldHVybiBkfSxkZWNvZGU6ZnVuY3Rpb24oYSl7dmFyIGQ9CiIiLGM9MDtmb3IoYT1hLnJlcGxhY2UoL1teQS1aYS16MC05XCtcLz1dL2csIiIpO2M8YS5sZW5ndGg7KXt2YXIgYj10aGlzLl9rZXlTdHIuaW5kZXhPZihhLmNoYXJBdChjKyspKSxlPXRoaXMuX2tleVN0ci5pbmRleE9mKGEuY2hhckF0KGMrKykpLGY9dGhpcy5fa2V5U3RyLmluZGV4T2YoYS5jaGFyQXQoYysrKSksZz10aGlzLl9rZXlTdHIuaW5kZXhPZihhLmNoYXJBdChjKyspKTtiPWI8PDJ8ZT4+NDtlPShlJjE1KTw8NHxmPj4yO3ZhciBoPShmJjMpPDw2fGc7ZCs9U3RyaW5nLmZyb21DaGFyQ29kZShiKTs2NCE9ZiYmKGQrPVN0cmluZy5mcm9tQ2hhckNvZGUoZSkpOzY0IT1nJiYoZCs9U3RyaW5nLmZyb21DaGFyQ29kZShoKSl9cmV0dXJuIEJhc2U2NC5fdXRmOF9kZWNvZGUoZCl9LF91dGY4X2VuY29kZTpmdW5jdGlvbihhKXt2YXIgZD0iIjthPWEucmVwbGFjZSgvXHJcbi9nLCJcbiIpO2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKXt2YXIgYj1hLmNoYXJDb2RlQXQoYyk7MTI4PgpiP2QrPVN0cmluZy5mcm9tQ2hhckNvZGUoYik6KDEyNzxiJiYyMDQ4PmI\/ZCs9U3RyaW5nLmZyb21DaGFyQ29kZShiPj42fDE5Mik6KGQrPVN0cmluZy5mcm9tQ2hhckNvZGUoYj4+MTJ8MjI0KSxkKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGI+PjYmNjN8MTI4KSksZCs9U3RyaW5nLmZyb21DaGFyQ29kZShiJjYzfDEyOCkpfXJldHVybiBkfSxfdXRmOF9kZWNvZGU6ZnVuY3Rpb24oYSl7Zm9yKHZhciBkPSIiLGM9MCxiLGUsZjtjPGEubGVuZ3RoOyliPWEuY2hhckNvZGVBdChjKSwxMjg+Yj8oZCs9U3RyaW5nLmZyb21DaGFyQ29kZShiKSxjKyspOjE5MTxiJiYyMjQ+Yj8oZT1hLmNoYXJDb2RlQXQoYysxKSxkKz1TdHJpbmcuZnJvbUNoYXJDb2RlKChiJjMxKTw8NnxlJjYzKSxjKz0yKTooZT1hLmNoYXJDb2RlQXQoYysxKSxmPWEuY2hhckNvZGVBdChjKzIpLGQrPVN0cmluZy5mcm9tQ2hhckNvZGUoKGImMTUpPDwxMnwoZSY2Myk8PDZ8ZiY2MyksYys9Myk7cmV0dXJuIGR9LHdoaXRlTGlzdDpmdW5jdGlvbigpe3JldHVyblsidHJhaWxlcnMiXX0sCmlzQmFzZTY0OmZ1bmN0aW9uKGEpe3JldHVybiBCYXNlNjQud2hpdGVMaXN0KCkuaW5jbHVkZXMoYS50b0xvd2VyQ2FzZSgpKXx8InVuZGVmaW5lZCI9PT10eXBlb2YgYXx8IiI9PT1hfHwiIj09PWEudHJpbSgpfHw0Pj1hLmxlbmd0aD8hMTpCYXNlNjQuZW5jb2RlKEJhc2U2NC5kZWNvZGUoYSkpPT1hfX07Ci8qKiAvbS9qcy9kMmN0Y2svdXByb2ZpbGUuZmluYWwubWluLmpzICoqLwphY3RpdmVVc2VyUHJvZmlsZU1uZz17b25yZWFkeTpudWxsLG9ubm90Zm91bmQ6bnVsbCxkaXNhYmxlZDohMSx1aWQ6bnVsbCxhY3RpdmVTdGVwOjAsc3dmU3RvcmU6ITEscmVnaXN0ZXJlZFBhZ2VWaWV3czpudWxsLHJlZ2lzdGVyZWRFdmVudHM6bnVsbCxzZXNzaW9uaWQ6bnVsbCxyZWdpc3RlcmVkQ2FsbGJhY2tzOm51bGwscmVnaXN0ZXJlZFNlc3Npb25DYWxsYmFja3M6bnVsbCxwYWdlVmlld0NvdW50Om51bGwsX19wcm9wZXJ0aWVzOm51bGwsanF1ZXJ5QWN0aXZlOiEwLGlzRDJDU2l0ZTohMCxfX3Jlc2V0Vjo5LHJlc2V0U2Vjb25kUGFzczohMSxfX291dHB1dERpdk1zZzohMSxfX291dHB1dENvbnNvbGVNc2c6ITEsYWpheE1uZzp7YXN5bmM6ITAsX2xhc3RYOm51bGwseDpmdW5jdGlvbigpe3RyeXtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBYTUxIdHRwUmVxdWVzdClyZXR1cm4gbmV3IFhNTEh0dHBSZXF1ZXN0O2Zvcih2YXIgYT1bIk1TWE1MMi5YbWxIdHRwLjUuMCIsCgkJCSJNU1hNTDIuWG1sSHR0cC40LjAiLCJNU1hNTDIuWG1sSHR0cC4zLjAiLCJNU1hNTDIuWG1sSHR0cC4yLjAiLCJNaWNyb3NvZnQuWG1sSHR0cCJdLGIsZD0wO2Q8YS5sZW5ndGg7ZCsrKXRyeXtiPW5ldyBBY3RpdmVYT2JqZWN0KGFbZF0pO2JyZWFrfWNhdGNoKGMpe319Y2F0Y2goYyl7fXJldHVybiBifSxfc2VuZDpmdW5jdGlvbihhLGIsZCxjLGUsaCl7dHJ5e3ZhciBmPXRoaXMueCgpO3RoaXMuX2xhc3RYPWY7Zi5vcGVuKGQsYSxlKTt0cnl7Zi5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsZnVuY3Rpb24ocSl7InVuZGVmaW5lZCIhPXR5cGVvZiBoJiZudWxsIT1oJiZoKGYsZi5zdGF0dXNUZXh0LEVycm9yKGYucmVzcG9uc2VUZXh0KSl9KX1jYXRjaChxKXt9Zi5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXs0PT1mLnJlYWR5U3RhdGU\/YihmLnJlc3BvbnNlVGV4dCk6InVuZGVmaW5lZCIhPXR5cGVvZiBoJiZudWxsIT1oJiZoKGYsZi5zdGF0dXNUZXh0LEVycm9yKGYucmVzcG9uc2VUZXh0KSl9OwoJCQkiUE9TVCI9PWQmJmYuc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC10eXBlIiwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIik7Zi5zZW5kKGMpfWNhdGNoKHEpeyJ1bmRlZmluZWQiIT10eXBlb2YgaCYmbnVsbCE9aCYmaChmLCJ1bmtub3duIixxKX19LGFqYXg6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpczt0cnl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBhLnR5cGUmJihhLnR5cGU9IkdFVCIpLCJ1bmRlZmluZWQiPT10eXBlb2YgYS5kYXRhJiYoYS5kYXRhPXt9KSx3aW5kb3cualF1ZXJ5JiYidW5kZWZpbmVkIiE9dHlwZW9mICQuYWpheCkkLmFqYXgoYSkuZG9uZShmdW5jdGlvbihjKXsidW5kZWZpbmVkIiE9dHlwZW9mIGEuZG9uZSYmYS5kb25lKGMpfSkuZmFpbChmdW5jdGlvbihjLGUsaCl7InVuZGVmaW5lZCIhPXR5cGVvZiBhLmZhaWwmJmEuZmFpbChjLGUsaCl9KS5hbHdheXMoZnVuY3Rpb24oKXsidW5kZWZpbmVkIiE9dHlwZW9mIGEuYWx3YXlzJiZhLmFsd2F5cygpfSkuZG9uZShmdW5jdGlvbihjKXsidW5kZWZpbmVkIiE9CgkJdHlwZW9mIGEuc3VjY2VzcyYmYS5zdWNjZXNzKGMpfSkuYWx3YXlzKGZ1bmN0aW9uKGMsZSl7InVuZGVmaW5lZCIhPXR5cGVvZiBhLmNvbXBsZXRlJiZhLmNvbXBsZXRlKGIuX2xhc3RYLCJ1bmRlZmluZWQiIT10eXBlb2YgYi5fbGFzdFguc3RhdHVzVGV4dD9iLl9sYXN0WC5zdGF0dXNUZXh0OiIiKX0pO2Vsc2V7dmFyIGQ9Yi5fZ2V0OyJwb3N0Ij09YS50eXBlLnRvTG93ZXJDYXNlKCkmJihkPWIuX3Bvc3QpO2QoYS51cmwsYS5kYXRhLGZ1bmN0aW9uKGMpeyJ1bmRlZmluZWQiIT10eXBlb2YgYS5kb25lJiZhLmRvbmUoYyk7InVuZGVmaW5lZCIhPXR5cGVvZiBhLnN1Y2Nlc3MmJmEuc3VjY2VzcyhjKTsidW5kZWZpbmVkIiE9dHlwZW9mIGEuY29tcGxldGUmJmEuY29tcGxldGUoKTsidW5kZWZpbmVkIiE9dHlwZW9mIGEuYWx3YXlzJiZhLmFsd2F5cygpfSxiLmFzeW5jLGZ1bmN0aW9uKGMsZSxoKXsidW5kZWZpbmVkIiE9dHlwZW9mIGEuZmFpbCYmYS5mYWlsKGMsZSxoKX0pfX1jYXRjaChjKXtjb25zb2xlJiYKCQljb25zb2xlLmxvZyYmY29uc29sZS5sb2coIlVuZXhwZWN0ZWQgZXJyb3IgYWNjZXNzaW5nIGFqYXhNbmcuZ2V0OiAlcyIsYy5tZXNzYWdlKX19LF9nZXQ6ZnVuY3Rpb24oYSxiLGQsYyxlKXt2YXIgaD1bXSxmO2ZvcihmIGluIGIpaC5wdXNoKGVuY29kZVVSSUNvbXBvbmVudChmKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KGJbZl0pKTtpZigidW5kZWZpbmVkIj09dHlwZW9mIGN8fG51bGw9PWMpYz0hMDthY3RpdmVVc2VyUHJvZmlsZU1uZy5hamF4TW5nLl9zZW5kKGErIj8iK2guam9pbigiJiIpLGQsIkdFVCIsbnVsbCxjLGUpfSxfcG9zdDpmdW5jdGlvbihhLGIsZCxjLGUpe3ZhciBoPVtdLGY7Zm9yKGYgaW4gYiloLnB1c2goZW5jb2RlVVJJQ29tcG9uZW50KGYpKyI9IitlbmNvZGVVUklDb21wb25lbnQoYltmXSkpO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgY3x8bnVsbD09YyljPSEwO2FjdGl2ZVVzZXJQcm9maWxlTW5nLmFqYXhNbmcuX3NlbmQoYSxkLCJQT1NUIixoLmpvaW4oIiYiKSwKCQkJYyxlKX0sZ2V0U2NyaXB0OmZ1bmN0aW9uKGEsYil7dHJ5e2lmKHdpbmRvdy5qUXVlcnkmJiJ1bmRlZmluZWQiIT10eXBlb2YgJC5nZXRTY3JpcHQpJC5nZXRTY3JpcHQoYSxiKTtlbHNle3ZhciBkPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpLGM9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpWzBdO2QuYXN5bmM9MTtkLm9ubG9hZD1kLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbihlLGgpe2lmKGh8fCFkLnJlYWR5U3RhdGV8fC9sb2FkZWR8Y29tcGxldGUvLnRlc3QoZC5yZWFkeVN0YXRlKSlkLm9ubG9hZD1kLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLGQ9dm9pZCAwLCFoJiZiJiZzZXRUaW1lb3V0KGIsMCl9O2Quc3JjPWE7Yy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShkLGMpfX1jYXRjaChlKXtjb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coIlVuZXhwZWN0ZWQgZXJyb3IgcmV0cmlldmluZyBqcyBzY3JpcHQuIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbjogJXMiLAoJCQllLm1lc3NhZ2UpfX19LGNvb2tpZU1uZzp7cmVhZENvb2tpZVZhbHVlOmZ1bmN0aW9uKGEpe3ZhciBiPW51bGw7dHJ5e2lmKHdpbmRvdy5qUXVlcnkmJiJ1bmRlZmluZWQiIT10eXBlb2YgJC5jb29raWUpYj0kLmNvb2tpZShhKSwidW5kZWZpbmVkIj09dHlwZW9mIGImJihiPW51bGwpO2Vsc2V7YSs9Ij0iO2Zvcih2YXIgZD1kb2N1bWVudC5jb29raWUuc3BsaXQoIjsiKSxjPTA7YzxkLmxlbmd0aDtjKyspe2Zvcih2YXIgZT1kW2NdOyIgIj09ZS5jaGFyQXQoMCk7KWU9ZS5zdWJzdHJpbmcoMSxlLmxlbmd0aCk7aWYoMD09ZS5pbmRleE9mKGEpKXtiPWUuc3Vic3RyaW5nKGEubGVuZ3RoLGUubGVuZ3RoKTticmVha319fX1jYXRjaChoKXtjb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coIlVuZXhwZWN0ZWQgZXJyb3IgcmVhZGluZyBjb29raWU6ICVzIixoLm1lc3NhZ2UpfXJldHVybiBifSxzZXRDb29raWVWYWx1ZTpmdW5jdGlvbihhLGIsZCxjKXt0cnl7aWYoITAhPT10aGlzLmRpc2FibGVkKXtpZigidW5kZWZpbmVkIj09CgkJCXR5cGVvZiBkfHxudWxsPT1kKWQ9Ii8iO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgY3x8bnVsbD09YyljPTA7InVuZGVmaW5lZCI9PXR5cGVvZiBiJiYoYj1udWxsKTt2YXIgZT1uZXcgRGF0ZTtlLnNldFRpbWUoZS5nZXRUaW1lKCkrODY0RTUqYyk7d2luZG93LmpRdWVyeSYmInVuZGVmaW5lZCIhPXR5cGVvZiAkLmNvb2tpZT8kLmNvb2tpZShhLGIse3BhdGg6ZCxzZWN1cmU6ITAsZXhwaXJlczowPT1jPyIiOmV9KTooZXhwaXJlcz0wIT1jPyI7IGV4cGlyZXM9IitlLnRvR01UU3RyaW5nKCk6IiIsZG9jdW1lbnQuY29va2llPWErIj0iK2IrZXhwaXJlcysiOyBzZWN1cmU7IHBhdGg9IitkLGImJmFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5sb2dDb29raWUoYSxiLGMsZCkpfX1jYXRjaChoKXtjb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coIlVuZXhwZWN0ZWQgZXJyb3Igc2V0dGluZyBjb29raWU6ICVzIixoLm1lc3NhZ2UpfX0sZGVsZXRlQ29va2llOmZ1bmN0aW9uKGEpe3RyeXt3aW5kb3cualF1ZXJ5JiYKCQkidW5kZWZpbmVkIiE9dHlwZW9mICQuY29va2llPygkLmNvb2tpZShhLG51bGwpLCQuY29va2llKGEsbnVsbCx7cGF0aDoiLyJ9KSk6dGhpcy5zZXRDb29raWVWYWx1ZShhLG51bGwsLTEpfWNhdGNoKGIpe2NvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZygiVW5leHBlY3RlZCBlcnJvciBkZWxldGluZyBjb29raWU6ICVzIixiLm1lc3NhZ2UpfX0sbG9nQ29va2llOmZ1bmN0aW9uKGEsYixkLGMsZSl7InVuZGVmaW5lZCI9PT10eXBlb2YgZSYmKGU9NSk7InVuZGVmaW5lZCI9PT10eXBlb2Ygd2luZG93LkNvb2tpZUxvZ2dlcj9lJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLmxvZ0Nvb2tpZShhLGIsZCxjLGUtMSl9LDEwMCk6d2luZG93LkNvb2tpZUxvZ2dlci5sb2coYSxiLGQsYyl9fSxfX3VzZVByb3h5OmZ1bmN0aW9uKCl7cmV0dXJuITE9PT10aGlzLmlzRDJDU2l0ZT8hMTohMH0sX2lzQm90OmZ1bmN0aW9uKCl7cmV0dXJuL2JvdHxnb29nbGVib3R8Y3Jhd2xlcnxzcGlkZXJ8cm9ib3R8Y3Jhd2xpbmcvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpPwoJCSEwOiExfSxnZXRTdGF0c1VSSTpmdW5jdGlvbigpe3ZhciBhPSIvcHJveHlfc2QyYy8iO3RyeXshMT09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmlzRDJDU2l0ZSYmKGE9Imh0dHA6Ly9zdGF0cy5kMmNtZWRpYS5jYS8iLCJodHRwczoiPT13aW5kb3cubG9jYXRpb24ucHJvdG9jb2wmJihhPSJodHRwczovL3NzbHN0YXRzLmQyY21lZGlhLmNhLyIpKX1jYXRjaChiKXtjb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coIlVuZXhwZWN0ZWQgZXJyb3IgY2F1Z2h0IGluIGdldFN0YXRzVVJJOiAlcyIsYi5tZXNzYWdlKSxhPSJodHRwczovL3NzbHN0YXRzLmQyY21lZGlhLmNhLyJ9cmV0dXJuIGF9LGdldEZQVVJJOmZ1bmN0aW9uKCl7aWYoITA9PT10aGlzLmRpc2FibGVkKXJldHVybiIiO3ZhciBhPSIvanMvZDJjdGNrL2ZwcmludC52Mi5taW4uanMiO3RyeXthPSExPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuaXNEMkNTaXRlP251bGwhPXdpbmRvdy5sb2NhdGlvbiYmInVuZGVmaW5lZCIhPQoJdHlwZW9mIHdpbmRvdy5sb2NhdGlvbi5ocmVmJiYtMSE9d2luZG93LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiY3JtMi5kMmNtZWRpYS5jYSIpPyJodHRwczovL2NybTIuZDJjbWVkaWEuY2EvYXNzZXRzL2pzL2QyY3Rjay9mcHJpbnQudjIuanMiOiJodHRwczovL3d3dy5hdXRvYXViYWluZS5jb20vanMvZDJjdGNrL2ZwcmludC52Mi5taW4uanMiOiEwPT09dGhpcy5fX291dHB1dERpdk1zZz8iL2pzL2QyY3Rjay9mcHJpbnQudjIuanMiOiIvanMvZDJjdGNrL2ZwcmludC52Mi5taW4uanMifWNhdGNoKGIpe2NvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZygiVW5leHBlY3RlZCBlcnJvciBjYXVnaHQgaW4gZ2V0RlBVUkk6ICVzIixiLm1lc3NhZ2UpLGE9Ii9qcy9kMmN0Y2svZnByaW50LnYyLm1pbi5qcyJ9cmV0dXJuIGF9LGdldFNlc3Npb25JRDpmdW5jdGlvbigpe2lmKG51bGwhPWFjdGl2ZVVzZXJQcm9maWxlTW5nLnNlc3Npb25pZClyZXR1cm4gYWN0aXZlVXNlclByb2ZpbGVNbmcuc2Vzc2lvbmlkOwoJCXZhciBhPXdpbmRvdy5hY3RpdmVTZXNzaW9uSUQ7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBhfHxudWxsPT1hfHwwPT1hKXJldHVybiBhY3RpdmVVc2VyUHJvZmlsZU1uZy5zZXNzaW9uaWQ9d2luZG93LmFjdGl2ZVNlc3Npb25JRCxhY3RpdmVVc2VyUHJvZmlsZU1uZy5zZXNzaW9uaWQ7YT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5jb29raWVNbmcucmVhZENvb2tpZVZhbHVlKCJ1c2lkIik7cmV0dXJuIG51bGwhPWE\/KGFjdGl2ZVVzZXJQcm9maWxlTW5nLnNlc3Npb25pZD1hLGFjdGl2ZVVzZXJQcm9maWxlTW5nLnNlc3Npb25pZCk6MH0scmVnaXN0ZXJDYWxsYmFjazpmdW5jdGlvbihhKXtpZighMD09PXRoaXMuZGlzYWJsZWQpe2lmKG51bGwhPWEpdHJ5e2EoKX1jYXRjaChiKXt9cmV0dXJuITF9bnVsbD09YWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJlZENhbGxiYWNrcyYmKGFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyZWRDYWxsYmFja3M9W10pOyJ1bmRlZmluZWQiIT10eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcudWlkJiYKCW51bGwhPWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCYmIm5vbmUiIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ\/YSgpOmFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyZWRDYWxsYmFja3MucHVzaChhKX0scmVnaXN0ZXJTZXNzaW9uQ2FsbGJhY2s6ZnVuY3Rpb24oYSl7aWYoITA9PT10aGlzLmRpc2FibGVkKXtpZihudWxsIT1hKXRyeXthKCl9Y2F0Y2goYil7fXJldHVybiExfW51bGw9PWFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyZWRTZXNzaW9uQ2FsbGJhY2tzJiYoYWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJlZFNlc3Npb25DYWxsYmFja3M9W10pOyJ1bmRlZmluZWQiIT10eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcuc2Vzc2lvbmlkJiZudWxsIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5zZXNzaW9uaWQmJjAhPWFjdGl2ZVVzZXJQcm9maWxlTW5nLnNlc3Npb25pZD9hKCk6YWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJlZFNlc3Npb25DYWxsYmFja3MucHVzaChhKX0sCglfX25vdGlmeVVVSUQ6ZnVuY3Rpb24oKXt0cnl7aWYoITA9PT10aGlzLmRpc2FibGVkKXt0cnl7YigpfWNhdGNoKGQpe31yZXR1cm4hMX1pZihudWxsIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlcmVkQ2FsbGJhY2tzKXtmb3IodmFyIGE9MDthPGFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyZWRDYWxsYmFja3MubGVuZ3RoO2ErKyl7dmFyIGI9YWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJlZENhbGxiYWNrc1thXTtiKCl9YWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJlZENhbGxiYWNrcz1udWxsfX1jYXRjaChkKXtjb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coIlVuZXhwZWN0ZWQgZXJyb3IgY2F1Z2h0IGluIF9fbm90aWZ5VVVJRDogJXMiLGQubWVzc2FnZSl9fSxfX25vdGlmeVNlc3Npb25JRDpmdW5jdGlvbigpe2lmKCEwPT09dGhpcy5kaXNhYmxlZClyZXR1cm4hMTt2YXIgYT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5nZXRTZXNzaW9uSUQoKTsKCQlpZigidW5kZWZpbmVkIj09dHlwZW9mIGF8fG51bGw9PWF8fCIwIj09YXx8MD09YSl2YXIgYj1zZXRJbnRlcnZhbChmdW5jdGlvbigpe3RyeXtudWxsPT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlcmVkU2Vzc2lvbkNhbGxiYWNrcz9jbGVhckludGVydmFsKGIpOjAhPT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5nZXRTZXNzaW9uSUQoKSYmKGNsZWFySW50ZXJ2YWwoYiksYWN0aXZlVXNlclByb2ZpbGVNbmcuX19ub3RpZnlTZXNzaW9uSUQoKSl9Y2F0Y2goZCl7Y29uc29sZSYmY29uc29sZS5sb2cmJmNvbnNvbGUubG9nKCJOb3RpZnkgc2Vzc2lvbmlkIGZhaWxlZCB3aXRoOiAlcyIsZC5tZXNzYWdlKX19LDUwMCk7aWYobnVsbCE9YWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJlZFNlc3Npb25DYWxsYmFja3MpdHJ5e2ZvcihhPTA7YTxhY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlcmVkU2Vzc2lvbkNhbGxiYWNrcy5sZW5ndGg7YSsrKSgwLGFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyZWRTZXNzaW9uQ2FsbGJhY2tzW2FdKSgpOwoJCQlhY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlcmVkU2Vzc2lvbkNhbGxiYWNrcz1udWxsfWNhdGNoKGQpe2NvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZygiVW5leHBlY3RlZCBlcnJvciBjYXVnaHQgaW4gX19ub3RpZnlTZXNzaW9uSUQ6ICVzIixkLm1lc3NhZ2UpfX0sbG9nTXNnOmZ1bmN0aW9uKGEpe3RyeXtpZighMD09PXRoaXMuZGlzYWJsZWQpcmV0dXJuITE7ITA9PT10aGlzLl9fb3V0cHV0RGl2TXNnJiYkKGRvY3VtZW50LmJvZHkpLmFwcGVuZCgiPGRpdj4iK2ErIjwvZGl2PiIpOyEwPT09dGhpcy5fX291dHB1dENvbnNvbGVNc2cmJmNvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZyhhKX1jYXRjaChiKXtjb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coIlVuZXhwZWN0ZWQgZXJyb3IgY2F1Z2h0IGluIG1lc3NhZ2UgbG9nZ2luZy4gSG93IGlyb25pYzogJXMiLGIubWVzc2FnZSl9fSxjaGVja1NjaGVkdWxlZFJlc2V0OmZ1bmN0aW9uKCl7dmFyIGE9CgkJITE7dHJ5e2lmKCEwPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQpcmV0dXJuITE7dmFyIGI9YWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLnJlYWRDb29raWVWYWx1ZSgidXVpZF9yc3QiKTtpZigidW5kZWZpbmVkIj09dHlwZW9mIGJ8fG51bGw9PWIpYj0wO2IhPXRoaXMuX19yZXNldFYmJihhPSEwLGFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5zZXRDb29raWVWYWx1ZSgidXVpZF9yc3QiLHRoaXMuX19yZXNldFYsIi8iLDRFMykpfWNhdGNoKGQpe3RoaXMubG9nTXNnKCJVbmV4cGVjdGVkIGVycm9yIGluIHNjaGVkdWxlZCByZXNldCBjaGVjazogIitkLm1lc3NhZ2UpfXJldHVybiBhfSxnZXRBY3RpdmVQcm9maWxlaWQ6ZnVuY3Rpb24oKXtpZihudWxsIT10aGlzLnVpZClyZXR1cm4gbnVsbD09d2luZG93LmFjdGl2ZVByb2ZpbGVJRCYmKHdpbmRvdy5hY3RpdmVQcm9maWxlSUQ9dGhpcy51aWQpLHRoaXMudWlkO2lmKCEwPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQpcmV0dXJuIG51bGw7CgkJdmFyIGE9dGhpcy5jb29raWVNbmcucmVhZENvb2tpZVZhbHVlKCJ1dWlkIik7aWYobnVsbCE9YSYmMDxhLmxlbmd0aClyZXR1cm4gdGhpcy5hY3RpdmVQcm9maWxlSUQ9dGhpcy51aWQ9YSx0aGlzLl9fZmlyZVJlYWR5RXZlbnQoKSx0aGlzLnVpZDthPWFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5yZWFkQ29va2llVmFsdWUoInV1aWRfdmxkMyIpO2lmKG51bGwhPWEmJjAhPWEubGVuZ3RoKXthY3RpdmVVc2VyUHJvZmlsZU1uZy5fX2xvYWRVc2VyRGF0YUNvb2tpZSgpO2FjdGl2ZVVzZXJQcm9maWxlTW5nLmVuc3VyZVZhbGlkSUQoKTtpZihudWxsIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQpcmV0dXJuIGFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZDthY3RpdmVVc2VyUHJvZmlsZU1uZy5fX2xvYWRMb2NhbFN0b3JhZ2VDb29raWUoKTthY3RpdmVVc2VyUHJvZmlsZU1uZy5lbnN1cmVWYWxpZElEKCk7aWYobnVsbCE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXJldHVybiBhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ7CgkJCWFjdGl2ZVVzZXJQcm9maWxlTW5nLl9fbG9hZEdsb2JhbFN0b3JhZ2VDb29raWUoKTthY3RpdmVVc2VyUHJvZmlsZU1uZy5lbnN1cmVWYWxpZElEKCk7aWYobnVsbCE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXJldHVybiBhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ7YWN0aXZlVXNlclByb2ZpbGVNbmcuX19sb2FkU2Vzc2lvblN0b3JhZ2VDb29raWUoKTthY3RpdmVVc2VyUHJvZmlsZU1uZy5lbnN1cmVWYWxpZElEKCk7aWYobnVsbCE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXJldHVybiBhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ7YWN0aXZlVXNlclByb2ZpbGVNbmcuX19sb2FkRnJvbUxvY2FsREIoKTthY3RpdmVVc2VyUHJvZmlsZU1uZy5lbnN1cmVWYWxpZElEKCk7aWYobnVsbCE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXJldHVybiBhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ7YWN0aXZlVXNlclByb2ZpbGVNbmcuX19sb2FkRkxWQ29va2llKCl9ZWxzZSBzZXRUaW1lb3V0KCJhY3RpdmVVc2VyUHJvZmlsZU1uZy5fX2NvbnRpbnVlTG9hZCgzKSIsCgkJCTUwMCk7cmV0dXJuIG51bGx9LGVuc3VyZVZhbGlkSUQ6ZnVuY3Rpb24oKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nfHwic3RyaW5nIj09dHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCYmMD09YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkLmxlbmd0aClhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ9bnVsbH0sc2V0QWN0aXZlUHJvZmlsZWlkOmZ1bmN0aW9uKCl7aWYobnVsbD09YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkfHwhMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO2FjdGl2ZVVzZXJQcm9maWxlTW5nLnNldERCQ29va2llKCk7YWN0aXZlVXNlclByb2ZpbGVNbmcuc2V0UE5HQ29va2llKCk7YWN0aXZlVXNlclByb2ZpbGVNbmcuc2V0RVRhZ0Nvb2tpZSgpO2FjdGl2ZVVzZXJQcm9maWxlTW5nLnNldFVzZXJEYXRhQ29va2llKCk7YWN0aXZlVXNlclByb2ZpbGVNbmcuc2V0TG9jYWxTdG9yYWdlQ29va2llKCk7YWN0aXZlVXNlclByb2ZpbGVNbmcuc2V0R2xvYmFsU3RvcmFnZUNvb2tpZSgpOwoJCWFjdGl2ZVVzZXJQcm9maWxlTW5nLnNldFNlc3Npb25TdG9yYWdlQ29va2llKCk7YWN0aXZlVXNlclByb2ZpbGVNbmcuc2V0RkxWQ29va2llKCk7YWN0aXZlVXNlclByb2ZpbGVNbmcuX19ub3RpZnlVVUlEKCl9LF9fY29udGludWVMb2FkOmZ1bmN0aW9uKGEpe2lmKCEwPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQpcmV0dXJuITE7YWN0aXZlVXNlclByb2ZpbGVNbmcuZW5zdXJlVmFsaWRJRCgpO2lmKG51bGwhPWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZClhY3RpdmVVc2VyUHJvZmlsZU1uZy5fX2ZpcmVSZWFkeUV2ZW50KCk7ZWxzZSBzd2l0Y2goYSl7Y2FzZSAxOmFjdGl2ZVVzZXJQcm9maWxlTW5nLl9fbG9hZEVUYWdDb29raWUoKTticmVhaztjYXNlIDI6YWN0aXZlVXNlclByb2ZpbGVNbmcuX19sb2FkUE5HQ29va2llKCk7YnJlYWs7ZGVmYXVsdDphY3RpdmVVc2VyUHJvZmlsZU1uZy5fX2ZpcmVOb3RGb3VuZCgpfX0sX19maXJlUmVhZHlFdmVudDpmdW5jdGlvbigpe2lmKG51bGwhPQoJCWFjdGl2ZVVzZXJQcm9maWxlTW5nLm9ucmVhZHkpYWN0aXZlVXNlclByb2ZpbGVNbmcub25yZWFkeShhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQpO2FjdGl2ZVVzZXJQcm9maWxlTW5nLl9fbm90aWZ5VVVJRCgpfSxfX2ZpcmVOb3RGb3VuZDpmdW5jdGlvbigpe2lmKG51bGwhPWFjdGl2ZVVzZXJQcm9maWxlTW5nLm9ubm90Zm91bmQpYWN0aXZlVXNlclByb2ZpbGVNbmcub25ub3Rmb3VuZCgpfSxzZXRGTFZDb29raWU6ZnVuY3Rpb24oKXtpZihudWxsIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQmJiJub25lIiE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO3RyeXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIG5hdmlnYXRvci5wbHVnaW5zJiYib2JqZWN0Ij09dHlwZW9mIG5hdmlnYXRvci5wbHVnaW5zWyJTaG9ja3dhdmUgRmxhc2giXXx8d2luZG93LkFjdGl2ZVhPYmplY3QmJjAhPW5ldyBBY3RpdmVYT2JqZWN0KCJTaG9ja3dhdmVGbGFzaC5TaG9ja3dhdmVGbGFzaCIpKXtpZighYWN0aXZlVXNlclByb2ZpbGVNbmcuc3dmU3RvcmUmJgoJCShhY3RpdmVVc2VyUHJvZmlsZU1uZy5zd2ZTdG9yZT0hMCwidW5kZWZpbmVkIj09dHlwZW9mIFN3ZlN0b3JlKSl7YWN0aXZlVXNlclByb2ZpbGVNbmcuYWpheE1uZy5nZXRTY3JpcHQoIi9qcy9zd2ZzdG9yZS5qcyIsYWN0aXZlVXNlclByb2ZpbGVNbmcuc2V0RkxWQ29va2llKTtyZXR1cm59dHJ5e3ZhciBhPW5ldyBTd2ZTdG9yZSh7bmFtZXNwYWNlOiJ1cHJvZmlsZSIsc3dmX3VybDoiL2ZsYXNoL3N0b3JhZ2Uuc3dmIixvbnJlYWR5OmZ1bmN0aW9uKCl7YS5zZXQoInVpZCIsYWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKX0sb25lcnJvcjpmdW5jdGlvbigpe319KX1jYXRjaChiKXsidW5kZWZpbmVkIiE9dHlwZW9mIGNvbnNvbGUmJm51bGwhPWNvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZygiVW5hYmxlIHRvIHNldCBGTFYgQ29va2llLiBFcnJvcjogIitiLm1lc3NhZ2UpfX19Y2F0Y2goYil7InVuZGVmaW5lZCIhPXR5cGVvZiBjb25zb2xlJiZudWxsIT1jb25zb2xlJiZjb25zb2xlLmxvZyYmCgljb25zb2xlLmxvZygiTUFJTjogVW5hYmxlIHRvIHNldCBGTFYgQ29va2llLiBFcnJvcjogIitiLm1lc3NhZ2UpfX19LF9fbG9hZEZMVkNvb2tpZTpmdW5jdGlvbigpe2lmKG51bGw9PWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCl7aWYoITA9PT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5kaXNhYmxlZClyZXR1cm4hMTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIG5hdmlnYXRvci5wbHVnaW5zJiYib2JqZWN0Ij09dHlwZW9mIG5hdmlnYXRvci5wbHVnaW5zWyJTaG9ja3dhdmUgRmxhc2giXXx8d2luZG93LkFjdGl2ZVhPYmplY3QmJjAhPW5ldyBBY3RpdmVYT2JqZWN0KCJTaG9ja3dhdmVGbGFzaC5TaG9ja3dhdmVGbGFzaCIpKXtpZighYWN0aXZlVXNlclByb2ZpbGVNbmcuc3dmU3RvcmUmJihhY3RpdmVVc2VyUHJvZmlsZU1uZy5zd2ZTdG9yZT0hMCwidW5kZWZpbmVkIj09dHlwZW9mIFN3ZlN0b3JlKSl7YWN0aXZlVXNlclByb2ZpbGVNbmcuYWpheE1uZy5nZXRTY3JpcHQoIi9qcy9zd2ZzdG9yZS5qcyIsCgkJYWN0aXZlVXNlclByb2ZpbGVNbmcuX19sb2FkRkxWQ29va2llKTtyZXR1cm59dHJ5e3ZhciBhPW5ldyBTd2ZTdG9yZSh7bmFtZXNwYWNlOiJ1cHJvZmlsZSIsc3dmX3VybDoiL2ZsYXNoL3N0b3JhZ2Uuc3dmIixvbnJlYWR5OmZ1bmN0aW9uKCl7dmFyIGI9YS5nZXQoInVpZCIpOyJ1bmRlZmluZWQiIT10eXBlb2YgYiYmbnVsbCE9YiYmKGFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZD1iKTthY3RpdmVVc2VyUHJvZmlsZU1uZy5fX2NvbnRpbnVlTG9hZCgxKX0sb25lcnJvcjpmdW5jdGlvbigpe2FjdGl2ZVVzZXJQcm9maWxlTW5nLl9fY29udGludWVMb2FkKDEpfX0pfWNhdGNoKGIpe319ZWxzZSBhY3RpdmVVc2VyUHJvZmlsZU1uZy5fX2NvbnRpbnVlTG9hZCgxKX19LF9fbG9hZEZyb21Mb2NhbERCOmZ1bmN0aW9uKCl7aWYobnVsbD09YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO3RyeXt3aW5kb3cub3BlbkRhdGFiYXNlJiYKCWRhdGFiYXNlLnRyYW5zYWN0aW9uKGZ1bmN0aW9uKGEpe2EuZXhlY3V0ZVNxbCgiU0VMRUNUIHZhbHVlIEZST00gdXByb2ZpbGUgV0hFUkUgbmFtZT0\/IixbInVpZCJdLGZ1bmN0aW9uKGIsZCl7MTw9ZC5yb3dzLmxlbmd0aCYmKGFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZD1kLnJvd3MuaXRlbSgwKS52YWx1ZSl9LGZ1bmN0aW9uKGIsZCl7fSl9KX1jYXRjaChhKXt9fX0sc2V0REJDb29raWU6ZnVuY3Rpb24oKXtpZihudWxsIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQmJiJub25lIiE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO3RyeXtpZih3aW5kb3cub3BlbkRhdGFiYXNlKXt2YXIgYT13aW5kb3cub3BlbkRhdGFiYXNlKCJzcWxpdGVfdXByb2ZpbGUiLCIiLCJ1cHJvZmlsZSIsMTA0ODU3Nik7InVuZGVmaW5lZCIhPXR5cGVvZiB2YWx1ZSYmYS50cmFuc2FjdGlvbihmdW5jdGlvbihiKXtiLmV4ZWN1dGVTcWwoIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIHVwcm9maWxlKGlkIElOVEVHRVIgTk9UIE5VTEwgUFJJTUFSWSBLRVkgQVVUT0lOQ1JFTUVOVCwgdWlkIFRFWFQgTk9UIE5VTEwsIHZhbHVlIFRFWFQgTk9UIE5VTEwsIFVOSVFVRSAodWlkKSkiLAoJCVtdLGZ1bmN0aW9uKGQsYyl7fSxmdW5jdGlvbihkLGMpe30pO2IuZXhlY3V0ZVNxbCgiSU5TRVJUIE9SIFJFUExBQ0UgSU5UTyB1cHJvZmlsZSh1aWQsIHZhbHVlKSBWQUxVRVMoPywgPykiLFsidWlkIixhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWRdLGZ1bmN0aW9uKGQsYyl7fSxmdW5jdGlvbihkLGMpe30pfSl9fWNhdGNoKGIpe319fSxfX2xvYWRQTkdDb29raWU6ZnVuY3Rpb24oKXtpZihudWxsPT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQpe2lmKCEwPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQpcmV0dXJuITE7dHJ5e2lmKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLmdldENvbnRleHQpe3ZhciBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpO2Euc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIjthLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7YS53aWR0aD0yMDA7YS5oZWlnaHQ9MTt2YXIgYj1hLmdldENvbnRleHQoIjJkIiksZD1uZXcgSW1hZ2U7CgkJZC5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iO2Quc3R5bGUucG9zaXRpb249ImFic29sdXRlIjtkLnNyYz0iL2ltYWdlc19hcGkvZDJjaWdjYWNoZTEucG5nIjtkLm9uZXJyb3I9ZnVuY3Rpb24oKXthY3RpdmVVc2VyUHJvZmlsZU1uZy5fX2NvbnRpbnVlTG9hZCgzKX07ZC5vbmxvYWQ9ZnVuY3Rpb24oKXt0cnl7Yi5kcmF3SW1hZ2UoZCwwLDApO2Zvcih2YXIgYz1iLmdldEltYWdlRGF0YSgwLDAsMjAwLDEpLmRhdGEsZT0iIixoPTAsZj1jLmxlbmd0aDtoPGYmJjAhPWNbaF07aCs9NCl7ZSs9U3RyaW5nLmZyb21DaGFyQ29kZShjW2hdKTtpZigwPT1jW2grMV0pYnJlYWs7ZSs9U3RyaW5nLmZyb21DaGFyQ29kZShjW2grMV0pO2lmKDA9PWNbaCsyXSlicmVhaztlKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGNbaCsyXSl9MDxlLmxlbmd0aCYmKGFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZD1lKX1jYXRjaChxKXt9YWN0aXZlVXNlclByb2ZpbGVNbmcuX19jb250aW51ZUxvYWQoMyl9fX1jYXRjaChjKXt9fX0sCglzZXRQTkdDb29raWU6ZnVuY3Rpb24oKXtpZihudWxsIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQmJiJub25lIiE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO3ZhciBhPW5ldyBJbWFnZTthLnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiI7YS5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiO2Euc3JjPSIvaW1hZ2VzX2FwaS9kMmNpZ2NhY2hlMS5wbmc\/dmFsPSIrYWN0aXZlVXNlclByb2ZpbGVNbmcudWlkfX0sX19sb2FkRVRhZ0Nvb2tpZTpmdW5jdGlvbigpe2lmKG51bGw9PWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCl7aWYoITA9PT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5kaXNhYmxlZClyZXR1cm4hMTt0aGlzLmFqYXhNbmcuYWpheCh7dXJsOiIvaW1hZ2VzX2FwaS9kMmNpZ2NhY2hlMi5wbmciLHR5cGU6IkdFVCIsc3VjY2VzczpmdW5jdGlvbihhKXthY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ9YX0sCgkJY29tcGxldGU6ZnVuY3Rpb24oYSxiKXthY3RpdmVVc2VyUHJvZmlsZU1uZy5fX2NvbnRpbnVlTG9hZCgyKX19KX19LHNldEVUYWdDb29raWU6ZnVuY3Rpb24oKXtpZihudWxsIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQmJiJub25lIiE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO3ZhciBhPW5ldyBJbWFnZTthLnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiI7YS5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiO2Euc3JjPSIvaW1hZ2VzX2FwaS9kMmNpZ2NhY2hlMi5wbmc\/dmFsPSIrYWN0aXZlVXNlclByb2ZpbGVNbmcudWlkfX0sX19sb2FkVXNlckRhdGFDb29raWU6ZnVuY3Rpb24oKXtpZihudWxsPT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQpe2lmKCEwPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQpcmV0dXJuITE7dHJ5e3ZhciBhPXRoaXMuY3JlYXRlRWxlbSgiZGl2IiwidXNlcmRhdGFfZWwiLAoJCTEpO2Euc3R5bGUuYmVoYXZpb3I9InVybCgjZGVmYXVsdCN1c2VyRGF0YSkiO2EubG9hZCgidWlkIik7YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkPWEuZ2V0QXR0cmlidXRlKCJ1aWQiKX1jYXRjaChiKXt9fX0sc2V0VXNlckRhdGFDb29raWU6ZnVuY3Rpb24oKXtpZihudWxsIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQmJiJub25lIiE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO3RyeXt2YXIgYT10aGlzLmNyZWF0ZUVsZW0oImRpdiIsInVzZXJkYXRhX2VsIiwxKTthLnN0eWxlLmJlaGF2aW9yPSJ1cmwoI2RlZmF1bHQjdXNlckRhdGEpIjthLnNldEF0dHJpYnV0ZSgidWlkIixhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQpO2Euc2F2ZSgidWlkIil9Y2F0Y2goYil7fX19LF9fbG9hZExvY2FsU3RvcmFnZUNvb2tpZTpmdW5jdGlvbigpe2lmKG51bGw9PWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCl7aWYoITA9PT0KCQlhY3RpdmVVc2VyUHJvZmlsZU1uZy5kaXNhYmxlZClyZXR1cm4hMTt0cnl7d2luZG93LmxvY2FsU3RvcmFnZSYmKGFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZD1sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgidWlkIikpfWNhdGNoKGEpe319fSxzZXRMb2NhbFN0b3JhZ2VDb29raWU6ZnVuY3Rpb24oKXtpZihudWxsIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQmJiJub25lIiE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO3RyeXt3aW5kb3cubG9jYWxTdG9yYWdlJiZsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgidWlkIixhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQpfWNhdGNoKGEpe319fSxfX2xvYWRHbG9iYWxTdG9yYWdlQ29va2llOmZ1bmN0aW9uKCl7aWYobnVsbD09YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO3RyeXtpZih3aW5kb3cuZ2xvYmFsU3RvcmFnZSlyZXR1cm4gdGhpcy5nZXRIb3N0KCksCgkJZXZhbCgiYWN0aXZlVXNlclByb2ZpbGVNbmcudWlkID0gZ2xvYmFsU3RvcmFnZVtob3N0XS51aWQiKX1jYXRjaChhKXt9fX0sc2V0R2xvYmFsU3RvcmFnZUNvb2tpZTpmdW5jdGlvbigpe2lmKG51bGwhPWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCYmIm5vbmUiIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQpe2lmKCEwPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQpcmV0dXJuITE7dHJ5e3dpbmRvdy5nbG9iYWxTdG9yYWdlJiYodGhpcy5nZXRIb3N0KCksZXZhbCgiZ2xvYmFsU3RvcmFnZVtob3N0XS51aWQgPSBhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQiKSl9Y2F0Y2goYSl7fX19LF9fbG9hZFNlc3Npb25TdG9yYWdlQ29va2llOmZ1bmN0aW9uKCl7aWYobnVsbD09YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO3RyeXt3aW5kb3cuc2Vzc2lvblN0b3JhZ2UmJihhY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ9CgkJd2luZG93LnNlc3Npb25TdG9yYWdlLmdldEl0ZW0oInVpZCIpKX1jYXRjaChhKXt9fX0sc2V0U2Vzc2lvblN0b3JhZ2VDb29raWU6ZnVuY3Rpb24oKXtpZihudWxsIT1hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQmJiJub25lIiE9YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkKXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO3RyeXt3aW5kb3cuc2Vzc2lvblN0b3JhZ2UmJndpbmRvdy5zZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCJ1aWQiLGFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCl9Y2F0Y2goYSl7fX19LHJlZ2lzdGVyUGFnZVZpZXc6ZnVuY3Rpb24oKXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiEwO251bGw9PWFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyZWRQYWdlVmlld3MmJihhY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlcmVkUGFnZVZpZXdzPVtdKTtmb3IodmFyIGE9MDthPGFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyZWRQYWdlVmlld3MubGVuZ3RoO2ErKylpZih3aW5kb3cubG9jYXRpb24uaHJlZj09CgkJYWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJlZFBhZ2VWaWV3c1thXSlyZXR1cm4hMTthY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlcmVkUGFnZVZpZXdzLnB1c2god2luZG93LmxvY2F0aW9uLmhyZWYpO3JldHVybiEwfSxyZWdpc3RlclBhZ2VWaWV3RXZlbnQ6ZnVuY3Rpb24oYSxiLGQpe2lmKCEwPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQpcmV0dXJuITA7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBkfHxudWxsPT1kKWQ9IiI7YT1hKyJ8fHwiK2IrInx8fCIrZDtudWxsPT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlcmVkRXZlbnRzJiYoYWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJlZEV2ZW50cz1bXSk7Zm9yKGI9MDtiPGFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyZWRFdmVudHMubGVuZ3RoO2IrKylpZihhPT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlcmVkRXZlbnRzW2JdKXJldHVybiExO2FjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyZWRFdmVudHMucHVzaChhKTsKCQlyZXR1cm4hMH0sbG9nUGFnZVZpZXdFdmVudDpmdW5jdGlvbihhLGIsZCl7aWYoIWFjdGl2ZVVzZXJQcm9maWxlTW5nLl9pc0JvdCgpKXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO2lmKGFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyUGFnZVZpZXdFdmVudChhLGIpKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIGR8fG51bGw9PWQpZD0iIjtpZihudWxsPT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5zZXNzaW9uaWR8fDA9PWFjdGl2ZVVzZXJQcm9maWxlTW5nLnNlc3Npb25pZClhY3RpdmVVc2VyUHJvZmlsZU1uZy5yZWdpc3RlclNlc3Npb25DYWxsYmFjayhmdW5jdGlvbigpe2FjdGl2ZVVzZXJQcm9maWxlTW5nLmxvZ1BhZ2VWaWV3RXZlbnQoYSxiLGQpfSk7ZWxzZXt2YXIgYz0wO2lmKCJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93Lmxhc3RWaWV3SUQpe3ZhciBlPWFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5yZWFkQ29va2llVmFsdWUoInV2aWV3Iik7CgkJbnVsbCE9ZSYmKGM9ZSl9ZWxzZSBjPXdpbmRvdy5sYXN0UGFnZVZpZXdJRDsidW5kZWZpbmVkIj09dHlwZW9mIGN8fG51bGw9PWN8fDA9PWM\/Y29uc29sZSYmY29uc29sZS5sb2cmJmNvbnNvbGUubG9nKCJVbmFibGUgdG8gaWRlbnRpZnkgbGFzdCB2aWV3IGlkIik6KGU9YWN0aXZlVXNlclByb2ZpbGVNbmcuZ2V0U3RhdHNVUkkoKSxjPXtzaWQ6YWN0aXZlVXNlclByb2ZpbGVNbmcuZ2V0U2Vzc2lvbklEKCksYWN0aW9uOiJldmVudCIsdmlld2lkOmMsZXZlbnQ6YSxlY2F0ZWdvcnk6YixhZGRlZEluZm86InVuZGVmaW5lZCIhPXR5cGVvZiBkP2Q6IiJ9LGFjdGl2ZVVzZXJQcm9maWxlTW5nLmFqYXhNbmcuYWpheCh7dXJsOmUrInNlcnZpY2Uvc2Vzc2lvbk1uZy5waHAiLHR5cGU6IlBPU1QiLGRhdGE6Y30pKX19fX0sbG9nUGFnZVZpZXdFeDpmdW5jdGlvbigpe3RyeXtpZighYWN0aXZlVXNlclByb2ZpbGVNbmcuX2lzQm90KCkmJmFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyUGFnZVZpZXcoKSl7aWYoITA9PT0KCQlhY3RpdmVVc2VyUHJvZmlsZU1uZy5kaXNhYmxlZClyZXR1cm4hMTt2YXIgYT1udWxsOyJ1bmRlZmluZWQiIT10eXBlb2YgZ2V0VXJsVmFycyYmKGE9Z2V0VXJsVmFycygpKTtnZXRDdXN0b21WUkI9ZnVuY3Rpb24oayx3KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGN1c3RvbV92YXJpYWJsZXMmJm51bGwhPWN1c3RvbV92YXJpYWJsZXMpZm9yKHZhciB1IGluIGN1c3RvbV92YXJpYWJsZXMpe2lmKHUubmFtZT09aylyZXR1cm4gdS52YWx1ZX1lbHNlIHJldHVybiB3fTtnZXRDS1ZhbHVlPWZ1bmN0aW9uKGssdyl7dmFyIHU9Z2V0Q3VzdG9tVlJCKGssbnVsbCk7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB1JiZudWxsIT11KXJldHVybiB1O3U9YWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLnJlYWRDb29raWVWYWx1ZShrKTtyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIHV8fG51bGw9PXU\/bnVsbD09YXx8InVuZGVmaW5lZCI9PXR5cGVvZiBhW2tdPyJ1bmRlZmluZWQiPT10eXBlb2Ygdz8KCQkiIjp3OmFba106dX07Z2V0VVJMVmFsdWU9ZnVuY3Rpb24oayx3KXtrPWsucmVwbGFjZSgvW1xbXS8sIlxcWyIpLnJlcGxhY2UoL1tcXV0vLCJcXF0iKTtrPShuZXcgUmVnRXhwKCJbXFw\/Jl0iK2srIj0oW14mI10qKSIpKS5leGVjKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtrPW51bGw9PWs\/bnVsbDprWzFdO3JldHVybiJ1bmRlZmluZWQiPT10eXBlb2Yga3x8bnVsbD09a3x8MD09ay50b1N0cmluZygpLmxlbmd0aD93Omt9O3ZhciBiPSIiLGQ9MCxjPSJGUkVOQ0giLGU9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpLGg9ZnVuY3Rpb24oayl7dmFyIHc9e21ha2U6IiIsbW9kZWw6IiIseWVhcjoiIixwcmljZTowLHNpdGVpZDowLGRlYWxlcmlkOjAsbGFuZ3VhZ2U6IkZSRU5DSCJ9O2lmKCFrKXJldHVybiB3O2s9ay5zcGxpdCgvWzsmXS8pO2Zvcih2YXIgdT0wO3U8ay5sZW5ndGg7dSsrKXt2YXIgQj1rW3VdLnNwbGl0KCI9Iik7aWYoQiYmMj09Qi5sZW5ndGgpe3ZhciBFPQoJCXVuZXNjYXBlKEJbMF0pO0I9dW5lc2NhcGUoQlsxXSk7Qj1CLnJlcGxhY2UoL1wrL2csIiAiKTt3W0VdPUJ9fXJldHVybiB3fTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGUmJm51bGwhPWUpZm9yKHZhciBmPTA7ZjxlLmxlbmd0aDtmKyspe3ZhciBxPWVbZl07aWYoLTEhPXEuc3JjLmluZGV4T2YoIi91cGxpZ2h0LmpzPyIpKXt2YXIgcD1xLnNyYy5yZXBsYWNlKC9eW15cP10rXD8\/LywiIikseT1oKHApO3ZhciBsPXkubWFrZTt2YXIgQz15Lm1vZGVsO2I9eS55ZWFyO3ZhciBBPXkuc2l0ZWlkO3ZhciB6PXkuZGVhbGVyaWQ7ZD15LnByaWNlO2M9eS5sYW5ndWFnZTticmVha319dmFyIG09YWN0aXZlVXNlclByb2ZpbGVNbmcuZ2V0U2Vzc2lvbklEKCk7ZT0wO2lmKCJ1bmRlZmluZWQiPT1tfHwwPT1tKXttPTA7dmFyIHI9YWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLnJlYWRDb29raWVWYWx1ZSgidXNpZF90bXAiKTtpZigidW5kZWZpbmVkIj09dHlwZW9mIHJ8fG51bGw9PXIpe3ZhciB4PQoJCW5ldyBEYXRlO3guc2V0VGltZSh4LmdldFRpbWUoKSs3MkU1KTt2YXIgZz0iOyBleHBpcmVzPSIreC50b0dNVFN0cmluZygpO2RvY3VtZW50LmNvb2tpZT0idXNpZF90bXA9MSIrZysiOyBwYXRoPS8ifWVsc2UgZT0hMH12YXIgbj13aW5kb3cubG9jYXRpb24uaHJlZjtpZigtMTxuLmluZGV4T2YoInN0ZXA9cmVzdW1lIikpe3ZhciB0PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5yZWFkQ29va2llVmFsdWUoInNlc3NpZCIpO24rPSImc2Vzc2lkPSIrKCJ1bmRlZmluZWQiIT10eXBlb2YgdHx8bnVsbCE9dD90OiJOVUxMIil9dmFyIHY9e3NpZDptLHV1aWQ6d2luZG93LmFjdGl2ZVByb2ZpbGVJRCxzaXRlaWQ6QSxkZWFsZXJpZDp6LHV0bVNvdXJjZTpnZXRVUkxWYWx1ZSgidXRtX3NvdXJjZSIsIiIpLHV0bUNhbXBhaWduOmdldFVSTFZhbHVlKCJ1dG1fY2FtcGFpZ24iLCJvcmdhbmljIiksdXRtS2V5d29yZDpnZXRDS1ZhbHVlKCJ1dG1fa2V5d29yZCIpLHV0bUxhbmRpbmc6Z2V0Q0tWYWx1ZSgidXRtX2xhbmRpbmciKSwKCQl1dG1Tb3VyY2VSZXRhcmdldGluZzpnZXRDS1ZhbHVlKCJ1dG1fc291cmNlX3JldGFyZ2V0aW5nIiksdXRtQ2FtcGFpZ25SZXRhcmdldGluZzpnZXRDS1ZhbHVlKCJ1dG1fY2FtcGFpZ25fcmV0YXJnZXRpbmciKSxtYWtlOmwsbW9kZWw6Qyx5ZWFyOmlzTmFOKGIpPyhuZXcgRGF0ZSkuZ2V0RnVsbFllYXIoKTpiLGxhbmd1YWdlOmMscGFnZToidW5kZWZpbmVkIj09dHlwZW9mIHdpbmRvdy5hY3RpdmVQYWdlPyIiOndpbmRvdy5hY3RpdmVQYWdlLHByaWNlOmQsc2xvb2t1cDplLGhyZWY6bn0sRD1hY3RpdmVVc2VyUHJvZmlsZU1uZy5nZXRTdGF0c1VSSSgpO3Y9SlNPTi5zdHJpbmdpZnkodik7dj12LnJlcGxhY2VBbGwoIi8iLCJcXC8iKTt0aGlzLmFqYXhNbmcuYWpheCh7dXJsOkQrInNlcnZpY2Uvc2Vzc2lvbk1uZy5waHAiLGRhdGE6dixkb25lOmZ1bmN0aW9uKGspe3RyeXtpZigic3RyaW5nIj09dHlwZW9mIGsmJihrPUpTT04ucGFyc2UoaykpLCJ1bmRlZmluZWQiIT10eXBlb2YgayYmCgkJbnVsbCE9ayYmKGsuY29uc3RydWN0b3I9PVtdLmNvbnN0cnVjdG9yfHxrLmNvbnN0cnVjdG9yPT17fS5jb25zdHJ1Y3Rvcikpe209ay5zZXNzaW9uaWQ7bGFzdFZpZXdJRD1rLnZpZXdpZDthY3RpdmVVc2VyUHJvZmlsZU1uZy5fbG9hZFByb3BlcnRpZXMoay5wcm9wZXJ0aWVzKTt3aW5kb3cuYWN0aXZlU2Vzc2lvbklEPW07d2luZG93Lmxhc3RQYWdlVmlld0lEPWxhc3RWaWV3SUQ7YWN0aXZlVXNlclByb2ZpbGVNbmcuc2Vzc2lvbmlkPW07dmFyIHc9bmV3IERhdGU7dy5zZXRUaW1lKHcuZ2V0VGltZSgpKzcyRTUpO3ZhciB1PSI7IGV4cGlyZXM9Iit3LnRvR01UU3RyaW5nKCk7ZG9jdW1lbnQuY29va2llPSJ1c2lkPSIrbSt1KyI7IHBhdGg9LyI7ZG9jdW1lbnQuY29va2llPSJ1dmlldz0iK2xhc3RWaWV3SUQrdSsiOyBwYXRoPS8iO2FjdGl2ZVVzZXJQcm9maWxlTW5nLl9kZWxldGVDb29raWUoInVzaWRfdG1wIik7YWN0aXZlVXNlclByb2ZpbGVNbmcuX19ub3RpZnlTZXNzaW9uSUQoKX19Y2F0Y2goQil7fXRyeXtudWxsIT0KCQlzaXRlV2Vic29ja2V0TGlzdGVuZXIuc2l0ZWlkJiZzaXRlV2Vic29ja2V0TGlzdGVuZXIuY29ubmVjdCgpfWNhdGNoKEIpe319fSl9fWNhdGNoKGspe2NvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZygiVW5hYmxlIHRvIHN0YXQgcGFnZSBkdWUgdG8gZXJyb3I6ICIray5tZXNzYWdlKX19LGxvZ1BhZ2VWaWV3OmZ1bmN0aW9uKCl7dHJ5e2lmKCFhY3RpdmVVc2VyUHJvZmlsZU1uZy5faXNCb3QoKSYmYWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJQYWdlVmlldygpKXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO2lmKCExPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuanF1ZXJ5QWN0aXZlKXJldHVybiB0aGlzLmxvZ1BhZ2VWaWV3RXgoKTt2YXIgYT1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0Iik7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBhJiZudWxsIT1hKWZvcih2YXIgYj0wO2I8YS5sZW5ndGg7YisrKWlmKC0xIT0KCQlhW2JdLnNyYy5pbmRleE9mKCIvdXBsaWdodC5qcz8iKSlyZXR1cm4gdGhpcy5sb2dQYWdlVmlld0V4KCk7dmFyIGQ9bnVsbDsidW5kZWZpbmVkIiE9dHlwZW9mIGdldFVybFZhcnMmJihkPWdldFVybFZhcnMoKSk7Z2V0Q3VzdG9tVlJCPWZ1bmN0aW9uKGcsbil7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBjdXN0b21fdmFyaWFibGVzJiZudWxsIT1jdXN0b21fdmFyaWFibGVzKWZvcih2YXIgdCBpbiBjdXN0b21fdmFyaWFibGVzKXtpZih0Lm5hbWU9PWcpcmV0dXJuIHQudmFsdWV9ZWxzZSByZXR1cm4gbn07Z2V0Q0tWYWx1ZT1mdW5jdGlvbihnLG4pe3ZhciB0PW51bGw7dHJ5e3ZhciB2PWdldEN1c3RvbVZSQihnLG51bGwpOyJ1bmRlZmluZWQiIT10eXBlb2YgdiYmbnVsbCE9diYmKHQ9dik7aWYobnVsbD09dCYmKHQ9YWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLnJlYWRDb29raWVWYWx1ZShnKSxudWxsPT10KSl7aWYobnVsbD09ZHx8InVuZGVmaW5lZCI9PXR5cGVvZiBkW2ddKXJldHVybiJ1bmRlZmluZWQiPT0KCXR5cGVvZiBuPyIiOm47dD1kW2ddfX1jYXRjaChEKXtjb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coIlVuZXhwZWN0ZWQgZXJyb3IgcmV0cmlldmluZyBja1ZhbHVlIC0tICVzIixELm1lc3NhZ2UpfXJldHVybiB0fTtnZXRVUkxWYWx1ZT1mdW5jdGlvbihnLG4pe2c9Zy5yZXBsYWNlKC9bXFtdLywiXFxbIikucmVwbGFjZSgvW1xdXS8sIlxcXSIpO2c9KG5ldyBSZWdFeHAoIltcXD8mXSIrZysiPShbXiYjXSopIikpLmV4ZWMod2luZG93LmxvY2F0aW9uLmhyZWYpO2c9bnVsbD09Zz9udWxsOmdbMV07cmV0dXJuInVuZGVmaW5lZCI9PXR5cGVvZiBnfHxudWxsPT1nfHwwPT1nLnRvU3RyaW5nKCkubGVuZ3RoP246Z307YT1mdW5jdGlvbigpe2lmKCExPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuanF1ZXJ5QWN0aXZlKXJldHVybltdO3ZhciBnPVtdO3RyeXt2YXIgbj1bXSx0PWZ1bmN0aW9uKGssdyl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiAkKCIjIitrKS5hdHRyKCJpZCIpJiYKCShrPSQoIiMiK2spLnZhbCgpLCJzdHJpbmciPT10eXBlb2YgayYmMDxrLmxlbmd0aCYmLTE9PWsuaW5kZXhPZigiIyMiKSk\/azp3fTtuLnB1c2goInBvcHVwIik7bi5wdXNoKCJwaG9uZSIpO24ucHVzaCgibGFzdHZpZXdlZCIpO24ucHVzaCgiZXhwcmVzc2NhciIpO2Zvcih2YXIgdj0wO3Y8bi5sZW5ndGg7disrKXt2YXIgRD10KG5bdl0rIm1ha2UiLG51bGwpO2lmKG51bGwhPUQpe2cucHVzaChEKTtnLnB1c2godChuW3ZdKyJtb2RlbCIsbnVsbCkpO2cucHVzaCh0KG5bdl0rInllYXIiLG51bGwpKTticmVha319fWNhdGNoKGspe2c9W10sZy5wdXNoKCIiKSxnLnB1c2goIiIpLGcucHVzaCgiIil9MD09Zy5sZW5ndGgmJmcucHVzaCgiIik7MT09Zy5sZW5ndGgmJmcucHVzaCgiIik7Mj09Zy5sZW5ndGgmJmcucHVzaCgiIik7cmV0dXJuIGd9O3ZhciBjPWI9IiIsZT0iIjt0cnl7dmFyIGg9YSgpO2I9MDxoLmxlbmd0aD9oWzBdOmI7Yz0xPGgubGVuZ3RoP2hbMV06YztlPTI8aC5sZW5ndGg\/CgkJaFsyXTplfWNhdGNoKGcpe2U9Yz1iPSIifXRyeXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHNlYXJjaENyaXRlcmlhJiZudWxsIT1zZWFyY2hDcml0ZXJpYSl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBifHxudWxsPT1ifHwwPT1iLmxlbmd0aCliPS0xPT1zZWFyY2hDcml0ZXJpYS5tYWtlPyIiOnNlYXJjaENyaXRlcmlhLm1ha2U7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBjfHxudWxsPT1jfHwwPT1jLmxlbmd0aCljPS0xPT1zZWFyY2hDcml0ZXJpYS5tb2RlbD8iIjpzZWFyY2hDcml0ZXJpYS5tb2RlbDtpZigidW5kZWZpbmVkIj09dHlwZW9mIGV8fG51bGw9PWV8fDA9PWUubGVuZ3RoKWU9LTE9PXNlYXJjaENyaXRlcmlhLnllYXI\/IiI6c2VhcmNoQ3JpdGVyaWEueWVhcn1pZihudWxsPT1ifHwwPT1iLmxlbmd0aCkidW5kZWZpbmVkIiE9dHlwZW9mIG1ha2UmJm51bGwhPW1ha2UmJjA8bWFrZS5sZW5ndGgmJiIwIiE9bWFrZT9iPW1ha2U6KGI9JCgiI3BvcHVwbWFrZSIpLnZhbCgpLCJ1bmRlZmluZWQiPT0KCXR5cGVvZiBiJiYoYj0kKCIjYWN0aXZlTWFrZSIpLnZhbCgpKSwidW5kZWZpbmVkIj09dHlwZW9mIGImJihiPSQoIiNjYXJNYWtlIikudmFsKCkpLCJ1bmRlZmluZWQiPT10eXBlb2YgYiYmKGI9JCgnaW5wdXRbbmFtZT0ibWFrZSJdJykudmFsKCkpLCJ1bmRlZmluZWQiPT10eXBlb2YgYiYmKGI9Z2V0Q0tWYWx1ZSgibWFrZSIsIiIpKSk7aWYobnVsbD09Y3x8MD09Yy5sZW5ndGgpInVuZGVmaW5lZCIhPXR5cGVvZiBtb2RlbCYmbnVsbCE9bW9kZWwmJjA8bW9kZWwubGVuZ3RoJiYiMCIhPW1vZGVsP2M9bW9kZWw6KGM9JCgiI3BvcHVwbW9kZWwiKS52YWwoKSwidW5kZWZpbmVkIj09dHlwZW9mIGMmJihjPSQoIiNhY3RpdmVNb2RlbCIpLnZhbCgpKSwidW5kZWZpbmVkIj09dHlwZW9mIGMmJihjPSQoIiNjYXJNb2RlbCIpLnZhbCgpKSwidW5kZWZpbmVkIj09dHlwZW9mIGMmJihjPSQoJ2lucHV0W25hbWU9Im1vZGVsIl0nKS52YWwoKSksInVuZGVmaW5lZCI9PXR5cGVvZiBjJiYoYz1nZXRDS1ZhbHVlKCJtb2RlbCIsCgkJIiIpKSk7aWYobnVsbD09ZXx8MD09ZS5sZW5ndGgpInVuZGVmaW5lZCIhPXR5cGVvZiB5ZWFyJiZudWxsIT15ZWFyJiYhaXNOYU4oeWVhcikmJjA8eWVhci5sZW5ndGgmJiIwIiE9eWVhcj9lPXllYXI6KGU9JCgiI3BvcHVweWVhciIpLnZhbCgpLCJ1bmRlZmluZWQiPT10eXBlb2YgZSYmKGU9JCgiI2FjdGl2ZVllYXIiKS52YWwoKSksInVuZGVmaW5lZCI9PXR5cGVvZiBlJiYoZT0kKCIjY2FyWWVhciIpLnZhbCgpKSwidW5kZWZpbmVkIj09dHlwZW9mIGUmJihlPSQoIiN5ZWFyIikudmFsKCkpLCJ1bmRlZmluZWQiPT10eXBlb2YgZSYmKGU9JCgnaW5wdXRbbmFtZT0ieW1heFRleHQiXScpLnZhbCgpKSwidW5kZWZpbmVkIj09dHlwZW9mIGUmJihlPSQoJ2lucHV0W25hbWU9InltaW5UZXh0Il0nKS52YWwoKSksInVuZGVmaW5lZCI9PXR5cGVvZiBlJiYoZT1nZXRDS1ZhbHVlKCJ5ZWFyIiwobmV3IERhdGUpLmdldEZ1bGxZZWFyKCkpKSl9Y2F0Y2goZyl7Y29uc29sZSYmY29uc29sZS5sb2cmJgoJY29uc29sZS5sb2coIlVuZXhwZWN0ZWQgZXJyb3IgaWRlbnRpZnlpbmcgbWFrZS1tb2RlbC15ZWFyOiAiK2cubWVzc2FnZSksbnVsbD09YiYmKGI9IiIpLG51bGw9PWMmJihjPSIiKSxudWxsPT1lJiYoZT0iIil9dmFyIGY9MDtpZighMSE9PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmpxdWVyeUFjdGl2ZSl7aWYoIlVTRURDQVJTIj09d2luZG93LmFjdGl2ZVBhZ2Upe3ZhciBxPTA7JCgiZGl2LmJveDE3MCBkaXYubWFpbl9waWNib3ggZGl2LmJveDJfZGV0YWlsc19taWQgZGl2LmJveDJfZGV0YWlsc190ZXh0IHNwYW4iKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGc9JCh0aGlzKS50ZXh0KCk7LTEhPWcuaW5kZXhPZigiJCIpJiYocSsrLGYrPXBhcnNlSW50KGcucmVwbGFjZSgiJCIsIiIpLnJlcGxhY2UoIiwiLCIiKSkpfSk7Zj0wPHE\/Zi9xOjA7aXNOYU4oZikmJihmPTApfTAhPWYmJiFpc05hTihmKXx8InVuZGVmaW5lZCI9PXR5cGVvZiAkKCIjY3VycmVudENhclByaWNlIikuYXR0cigiaWQiKXx8CgkoZj1wYXJzZUludCgkKCIjY3VycmVudENhclByaWNlIikudmFsKCkucmVwbGFjZSgiJCIsIiIpLnJlcGxhY2UoIiwiLCIiKSkpOzAhPWYmJiFpc05hTihmKXx8InVuZGVmaW5lZCI9PXR5cGVvZiAkKCIjY2FycHJpY2UiKS5hdHRyKCJpZCIpfHwoZj1wYXJzZUludCgkKCIjY2FycHJpY2UiKS52YWwoKS5yZXBsYWNlKCIkIiwiIikucmVwbGFjZSgiLCIsIiIpKSk7MCE9ZiYmIWlzTmFOKGYpfHwidW5kZWZpbmVkIj09dHlwZW9mICQoIiNjYXJQcmljZSIpLmF0dHIoImlkIil8fChmPXBhcnNlSW50KCQoIiNjYXJQcmljZSIpLnZhbCgpLnJlcGxhY2UoIiQiLCIiKS5yZXBsYWNlKCIsIiwiIikpKTswIT1mJiYhaXNOYU4oZil8fCJ1bmRlZmluZWQiPT10eXBlb2YgJCgiI2V4cHJlc3NjYXJwcmljZSIpLmF0dHIoImlkIil8fChmPXBhcnNlSW50KCQoIiNleHByZXNzY2FycHJpY2UiKS52YWwoKS5yZXBsYWNlKCIkIiwiIikucmVwbGFjZSgiLCIsIiIpKSk7MCE9ZiYmIWlzTmFOKGYpfHwidW5kZWZpbmVkIj09Cgl0eXBlb2YgJCgiI2NhcnByb29mY2FycHJpY2UiKS5hdHRyKCJpZCIpfHwoZj1wYXJzZUludCgkKCIjY2FycHJvb2ZjYXJwcmljZSIpLnZhbCgpLnJlcGxhY2UoIiQiLCIiKS5yZXBsYWNlKCIsIiwiIikpKTswIT1mJiYhaXNOYU4oZil8fCJ1bmRlZmluZWQiPT10eXBlb2YgJCgiI3NlYXJjaFJlc3VsdHNBdmdQcmljZSIpLmF0dHIoImlkIil8fChmPXBhcnNlSW50KCQoIiNzZWFyY2hSZXN1bHRzQXZnUHJpY2UiKS52YWwoKS5yZXBsYWNlKCIkIiwiIikucmVwbGFjZSgiLCIsIiIpKSk7MCE9ZiYmIWlzTmFOKGYpfHwidW5kZWZpbmVkIj09dHlwZW9mICQoJ2lucHV0W25hbWU9InBtaW4iXScpLmF0dHIoImlkIil8fChmPXBhcnNlSW50KCQoJ2lucHV0W25hbWU9InBtaW4iXScpLnZhbCgpLnJlcGxhY2UoIiQiLCIiKS5yZXBsYWNlKCIsIiwiIikpKTswIT1mJiYhaXNOYU4oZil8fCJ1bmRlZmluZWQiPT10eXBlb2YgJCgnaW5wdXRbbmFtZT0icG1heCJdJykuYXR0cigiaWQiKXx8KGY9cGFyc2VJbnQoJCgnaW5wdXRbbmFtZT0icG1heCJdJykudmFsKCkucmVwbGFjZSgiJCIsCgkJIiIpLnJlcGxhY2UoIiwiLCIiKSkpOzAhPWYmJiFpc05hTihmKXx8InVuZGVmaW5lZCI9PXR5cGVvZiAkKCIjY2FyUHJpY2UiKS5hdHRyKCJpZCIpfHwoZj0kKCIjY2FyUHJpY2UiKS5oYXNDbGFzcygiYm94Ml9kZXRhaWxzX3RleHQyNSIpP3BhcnNlSW50KCQoIiNjYXJQcmljZSIpLmNoaWxkcmVuKCI6Zmlyc3QiKS50ZXh0KCkucmVwbGFjZSgiJCIsIiIpLnJlcGxhY2UoIiwiLCIiKSk6cGFyc2VJbnQoJCgiI2NhclByaWNlIikudGV4dCgpLnJlcGxhY2UoIiQiLCIiKS5yZXBsYWNlKCIsIiwiIikpKTtpc05hTihmKSYmKGY9MCk7dmFyIHA9MCx5PTA7InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cuYWN0aXZlU2l0ZUlEJiZudWxsIT13aW5kb3cuYWN0aXZlU2l0ZUlEJiYwIT13aW5kb3cuYWN0aXZlU2l0ZUlEP3A9d2luZG93LmFjdGl2ZVNpdGVJRDoocD0kKCIjc2l0ZUlEIikudmFsKCksInVuZGVmaW5lZCI9PXR5cGVvZiBwJiYocD0kKCIjdG9wc2l0ZWlkIikudmFsKCkpLCJ1bmRlZmluZWQiPT0KCXR5cGVvZiBwJiYocD0wKSk7InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cuYWN0aXZlRGVhbGVySUQmJih5PXdpbmRvdy5hY3RpdmVTaXRlSUQpO3ZhciBsPWFjdGl2ZVVzZXJQcm9maWxlTW5nLmdldFNlc3Npb25JRCgpLEM9MDtpZigidW5kZWZpbmVkIj09bHx8MD09bHx8IjAiPT1sKWlmKGw9MCwidW5kZWZpbmVkIj09dHlwZW9mICQuY29va2llKCJ1c2lkX3RtcCIpKXt2YXIgQT1uZXcgRGF0ZTtBLnNldFRpbWUoQS5nZXRUaW1lKCkrNzJFNSk7dmFyIHo9IjsgZXhwaXJlcz0iK0EudG9HTVRTdHJpbmcoKTtkb2N1bWVudC5jb29raWU9InVzaWRfdG1wPTEiK3orIjsgcGF0aD0vIn1lbHNlIEM9ITA7dmFyIG09d2luZG93LmxvY2F0aW9uLmhyZWY7LTE8bS5pbmRleE9mKCJzdGVwPXJlc3VtZSIpJiYobSs9IiZzZXNzaWQ9IisoInVuZGVmaW5lZCIhPXR5cGVvZiAkLmNvb2tpZSgic2Vzc2lkIik\/JC5jb29raWUoInNlc3NpZCIpOiJOVUxMIikpfXZhciByPXtzaWQ6bCx1dWlkOmFjdGl2ZVVzZXJQcm9maWxlTW5nLmdldEFjdGl2ZVByb2ZpbGVpZCgpLAoJCXNpdGVpZDpwLGRlYWxlcmlkOnksdXRtU291cmNlOmdldFVSTFZhbHVlKCJ1dG1fc291cmNlIiwiIiksdXRtQ2FtcGFpZ246Z2V0VVJMVmFsdWUoInV0bV9jYW1wYWlnbiIsIm9yZ2FuaWMiKSx1dG1LZXl3b3JkOmdldENLVmFsdWUoInV0bV9rZXl3b3JkIiksdXRtTGFuZGluZzpnZXRDS1ZhbHVlKCJ1dG1fbGFuZGluZyIpLHV0bVNvdXJjZVJldGFyZ2V0aW5nOmdldENLVmFsdWUoInV0bV9zb3VyY2VfcmV0YXJnZXRpbmciKSx1dG1DYW1wYWlnblJldGFyZ2V0aW5nOmdldENLVmFsdWUoInV0bV9jYW1wYWlnbl9yZXRhcmdldGluZyIpLG1ha2U6Yixtb2RlbDpjLHllYXI6aXNOYU4oZSk\/KG5ldyBEYXRlKS5nZXRGdWxsWWVhcigpOmUsbGFuZ3VhZ2U6JCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpLHBhZ2U6InVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3cuYWN0aXZlUGFnZT8iIjp3aW5kb3cuYWN0aXZlUGFnZSxwcmljZTpmLHNsb29rdXA6QyxocmVmOm19LHg9YWN0aXZlVXNlclByb2ZpbGVNbmcuZ2V0U3RhdHNVUkkoKTsKCQlyPUpTT04uc3RyaW5naWZ5KHIpO3I9ci5yZXBsYWNlQWxsKCIvIiwiXFwvIik7dGhpcy5hamF4TW5nLmFqYXgoe3R5cGU6IlBPU1QiLHVybDp4KyJzZXJ2aWNlL3Nlc3Npb25NbmcucGhwIixjb250ZW50VHlwZToiYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOCIsZGF0YTpyLGRvbmU6ZnVuY3Rpb24oZyl7InN0cmluZyI9PXR5cGVvZiBnJiYoZz1KU09OLnBhcnNlKGcpKTsidW5kZWZpbmVkIj09dHlwZW9mIGd8fG51bGw9PWd8fGcuY29uc3RydWN0b3IhPVtdLmNvbnN0cnVjdG9yJiZnLmNvbnN0cnVjdG9yIT17fS5jb25zdHJ1Y3Rvcnx8KGw9Zy5zZXNzaW9uaWQsbGFzdFZpZXdJRD1nLnZpZXdpZCxhY3RpdmVVc2VyUHJvZmlsZU1uZy5fbG9hZFByb3BlcnRpZXMoZy5wcm9wZXJ0aWVzKSx3aW5kb3cuYWN0aXZlU2Vzc2lvbklEPWwsd2luZG93Lmxhc3RQYWdlVmlld0lEPWxhc3RWaWV3SUQsYWN0aXZlVXNlclByb2ZpbGVNbmcuc2Vzc2lvbmlkPWwsYWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLnNldENvb2tpZVZhbHVlKCJ1c2lkIiwKCQkJCWwsIi8iLDIpLGFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5zZXRDb29raWVWYWx1ZSgidXZpZXciLGxhc3RWaWV3SUQsIi8iLDIpLGFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5kZWxldGVDb29raWUoInVzaWRfdG1wIiksYWN0aXZlVXNlclByb2ZpbGVNbmcuX19ub3RpZnlTZXNzaW9uSUQoKSl9LGZhaWw6ZnVuY3Rpb24oZyxuLHQpe2NvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZygiVW5hYmxlIHRvIGxvZyBwYWdlIHZpZXcuIEVycm9yOiAiK3QubWVzc2FnZSl9LGFsd2F5czpmdW5jdGlvbigpe319KX19Y2F0Y2goZyl7Y29uc29sZSYmY29uc29sZS5sb2cmJmNvbnNvbGUubG9nKCJVbmFibGUgdG8gc3RhdCBwYWdlIGR1ZSB0byBlcnJvcjogIitnLm1lc3NhZ2UpfX0sX2xvYWRQcm9wZXJ0aWVzOmZ1bmN0aW9uKGEpe3RyeXsidW5kZWZpbmVkIiE9dHlwZW9mIGEmJm51bGwhPWEmJihhY3RpdmVVc2VyUHJvZmlsZU1uZy5fX3Byb3BlcnRpZXM9YSxhY3RpdmVVc2VyUHJvZmlsZU1uZy5wYWdlVmlld0NvdW50PQoJCWEucGFnZXZpZXdzKX1jYXRjaChiKXt9fSxnZXRQcm9wZXJ0eTpmdW5jdGlvbihhLGIpe3JldHVybiJ1bmRlZmluZWQiPT10eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcuX19wcm9wZXJ0aWVzfHxudWxsPT1hY3RpdmVVc2VyUHJvZmlsZU1uZy5fX3Byb3BlcnRpZXM\/bnVsbDoidW5kZWZpbmVkIj09dHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nLl9fcHJvcGVydGllc1thXT8idW5kZWZpbmVkIiE9dHlwZW9mIGI\/YjoiIjphY3RpdmVVc2VyUHJvZmlsZU1uZy5fX3Byb3BlcnRpZXNbYV19LGFkZFByb3BlcnR5OmZ1bmN0aW9uKGEsYixkKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIGF8fG51bGw9PWF8fDA9PWEubGVuZ3RofHwidW5kZWZpbmVkIj09dHlwZW9mIGJ8fG51bGw9PWJ8fCJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93LmFjdGl2ZVByb2ZpbGVJRClyZXR1cm4gbnVsbDsidW5kZWZpbmVkIj09dHlwZW9mIGQmJihkPSJVUERBVEUiKTthY3RpdmVVc2VyUHJvZmlsZU1uZy5nZXRTdGF0c1VSSSgpOwoJCXRoaXMuYWpheE1uZy5hamF4KHt0eXBlOiJHRVQiLGFjdGlvbjoiYWRkcHJvcGVydHkiLHV1aWQ6YWN0aXZlVXNlclByb2ZpbGVNbmcuZ2V0QWN0aXZlUHJvZmlsZWlkKCksc2lkOmFjdGl2ZVVzZXJQcm9maWxlTW5nLmdldFNlc3Npb25JRCgpLHBuYW1lOmEscHZhbHVlOmIscG1vZGU6ZH0pO3JldHVybiEwfSx0YWdCcm93c2VyOmZ1bmN0aW9uKGEsYil7dHJ5e3ZhciBkPWEsYz10aGlzO2lmKCEwPT09YWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQpcmV0dXJuITE7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBhfHxudWxsPT1hKWQ9ZnVuY3Rpb24oaCl7dHJ5e3ZhciBmPW5ldyBTdHJpbmcoaCk7Zj1mLnRyaW0oKTtpZigwPGYubGVuZ3RoKXtjLmxvZ01zZygiVGFnZ2VkIHdpdGggdXVpZCA9PiAiK2YpO3ZhciBxPWMuZ2V0QWN0aXZlUHJvZmlsZWlkKCk7YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkPWYudHJpbSgpO251bGwhPXEmJiJ1bmRlZmluZWQiIT10eXBlb2YgcS5sZW5ndGgmJgoJMDxxLmxlbmd0aCYmYWN0aXZlVXNlclByb2ZpbGVNbmcudWlkIT1xJiZjLmNvb2tpZU1uZy5zZXRDb29raWVWYWx1ZSgidXVpZF92MSIscSwiLyIsMTgwKTtjLmNvb2tpZU1uZy5zZXRDb29raWVWYWx1ZSgidXVpZCIsYWN0aXZlVXNlclByb2ZpbGVNbmcudWlkLCIvIiw1RTMpO2MuY29va2llTW5nLnNldENvb2tpZVZhbHVlKCJ1dWlkX3ZsZDMiLCEwLCIvIiw1RTMpO2Muc2V0QWN0aXZlUHJvZmlsZWlkKCl9fWNhdGNoKHApe2MubG9nTXNnKCJVbmV4cGVjdGVkIGVycm9yIHJldHVybmVkIGZyb20gdGFnZ2luZzogIitwLm1lc3NhZ2UpfX07dGhpcy5sb2dNc2coIkdlbmVyYXRpbmcgZmluZ2VycHJpbnQiKTt2YXIgZT10aGlzLmdldEZQVVJJKCk7Yy5hamF4TW5nLmdldFNjcmlwdChlLGZ1bmN0aW9uKCl7dHJ5e3ZhciBoPWZ1bmN0aW9uKGwpe3RyeXtjLmxvZ01zZygiRmluZ2VycHJpbnRlZDogIitsKTt2YXIgQz1jLmdldEFjdGl2ZVByb2ZpbGVpZCgpLEE9ZW5jb2RlVVJJKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4pOwoJCWlmKCJ1bmRlZmluZWQiPT10eXBlb2YgbHx8bnVsbD09bClyZXR1cm4hMTt2YXIgej0hMTthY3RpdmVVc2VyUHJvZmlsZU1uZy5pc0QyQ1NpdGUmJjM9PXdpbmRvdy5hY3RpdmVTaXRlSUQmJih6PSEwKTtjLmNvb2tpZU1uZy5zZXRDb29raWVWYWx1ZSgidXVmcCIsbCwiLyIsNUUzKTt2YXIgbT17ZDpBLGZwMTpsLnN1YnN0cmluZygwLDgpLGZwMjpsLnN1YnN0cmluZyg4LDE2KSxmcDM6bC5zdWJzdHJpbmcoMTYsMjQpLGZwNDpsLnN1YnN0cmluZygyNCwzMiksdWlkOkMsYWN0aW9uOiJ1cGdyYWRlZnAiLGRibTp6LHY6YWN0aXZlVXNlclByb2ZpbGVNbmcuX19yZXNldFZ9LHI9YWN0aXZlVXNlclByb2ZpbGVNbmcuZ2V0U3RhdHNVUkkoKTtjLmxvZ01zZyhyKyJzZXJ2aWNlL2QyYy51cGdyYWRlLnY2LmZwLmpzIik7Yy5sb2dNc2coSlNPTi5zdHJpbmdpZnkobSkpO2MuYWpheE1uZy5hamF4KHt1cmw6cisic2VydmljZS9kMmMudXBncmFkZS52Ni5mcC5qcyIsdHlwZToiR0VUIixkYXRhOm0sCgkJCWRvbmU6ZnVuY3Rpb24oeCl7dHJ5e2MubG9nTXNnKCJVVUlEIGFmdGVyIHVwcm9maWxlIHVwZGF0ZTogIit4KSwidW5kZWZpbmVkIiE9dHlwZW9mIGQmJm51bGwhPWQ\/ZCh4KTpjLmNvb2tpZU1uZy5zZXRDb29raWVWYWx1ZSgidXVpZCIseCwiLyIsNUUzKSwidW5kZWZpbmVkIiE9dHlwZW9mIGImJm51bGwhPWImJmIoKX1jYXRjaChnKXt9fX0pfWNhdGNoKHgpe2MubG9nTXNnKCJVbmV4cGVjdGVkIGVycm9yIGV4ZWN1dGluZyB0YWdNZSBzdGVwOiAiK3gubWVzc2FnZSl9fSxmPSExO3RyeXtuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIldpbiIpLG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZigiTWFjIiksbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJMaW51eCIpLG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZigiQW5kcm9pZCIpLC0xIT1uYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoImxpa2UgTWFjIikmJihmPSEwKSxsb2NhdGlvbi5wcm90b2NvbC5pbmRleE9mKCJodHRwcyIpfWNhdGNoKGwpe312YXIgcT0KCQl7cHJlcHJvY2Vzc29yOm51bGwsYXVkaW86e3RpbWVvdXQ6MUUzLGV4Y2x1ZGVJT1MxMTpmfSxmb250czp7c3dmQ29udGFpbmVySWQ6ImRjdGtkaXZmcDIiLHN3ZlBhdGg6ImZsYXNoL2NvbXBpbGVkL0ZvbnRMaXN0LnN3ZiIsdXNlckRlZmluZWRGb250czpbXSxleHRlbmRlZEpzRm9udHM6ITF9LHNjcmVlbjp7ZGV0ZWN0U2NyZWVuT3JpZW50YXRpb246ITB9LHBsdWdpbnM6e3NvcnRQbHVnaW5zRm9yOlsvcGFsZW1vb24vaV0sZXhjbHVkZUlFOiExfSxleHRyYUNvbXBvbmVudHM6W10sTk9UX0FWQUlMQUJMRToibm90IGF2YWlsYWJsZSIsRVJST1I6ImVycm9yIixFWENMVURFRDoiZXhjbHVkZWQifSxwPSExO251bGwhPXdpbmRvdyYmbnVsbCE9d2luZG93LmxvY2F0aW9uJiYidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdy5sb2NhdGlvbi5ocmVmJiYoLTE8d2luZG93LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiZDJjZGVidWc9MSIpfHwtMSE9d2luZG93LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiY3JtMi5kMmNtZWRpYS5jYSIpKSYmCgkocD0hMCk7dmFyIHk9ZnVuY3Rpb24obCl7dHJ5e3ZhciBDPWZ1bmN0aW9uKHope3o9ei5tYXAoZnVuY3Rpb24obSl7dmFyIHI9IiI7dHJ5e3N3aXRjaChwJiZjb25zb2xlLmxvZyhtLmtleS50b0xvd2VyQ2FzZSgpKSxtLmtleS50b0xvd2VyQ2FzZSgpKXtjYXNlICJjYW52YXMiOmNhc2UgIndlYmdsIjpjYXNlICJhZGJsb2NrIjpyPSIiO2JyZWFrO2Nhc2UgInVzZXJhZ2VudCI6aWYoMDxtLnZhbHVlLmxlbmd0aCYmLTEhPW0udmFsdWUuaW5kZXhPZigiICIpKWZvcih2YXIgeD1tLnZhbHVlLnNwbGl0KCIgIiksZz0wO2c8eC5sZW5ndGg7ZysrKXt2YXIgbj14W2ddO2lmKC0xIT1uLmluZGV4T2YoIi8iKSl7dmFyIHQ9bi5zcGxpdCgiLyIpO3IrPXRbMF19ZWxzZS0xPT1uLmluZGV4T2YoIi4iKSYmKHIrPW4pfXAmJmNvbnNvbGUubG9nKCJVc2VyIEFnZW50IC0tICIrcik7YnJlYWs7ZGVmYXVsdDoidW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5LmlzQXJyYXkmJkFycmF5LmlzQXJyYXkobS52YWx1ZSl8fAoJbS52YWx1ZS5jb25zdHJ1Y3Rvcj09PUFycmF5PyhtLnZhbHVlLnNvcnQoKSxyPW0udmFsdWUuam9pbigpKTpyPW0udmFsdWV9fWNhdGNoKHYpe2NvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZygiRlAgRmFpbGVkIC0tICVzIC0gJW8iLHYubWVzc2FnZSxtKX1pZigidW5kZWZpbmVkIj09dHlwZW9mIHJ8fG51bGw9PXIpcj0iIjtyZXR1cm4gcn0pO3ouc29ydCgpO3JldHVybiB6fShsKTtwJiZjb25zb2xlLmxvZygidG8gaGFzaDogJW8iLEMpO3ZhciBBPUZpbmdlcnByaW50Mi54NjRoYXNoMTI4KEMuam9pbigiIiksMzEpO3AmJmNvbnNvbGUubG9nKCJGUCA9PiAlcyIsQSk7aChBKTtjLmxvZ01zZygiRmluZ2VycHJpbnQ6ICIrQSl9Y2F0Y2goeil7Y29uc29sZSYmY29uc29sZS5sb2cmJmNvbnNvbGUubG9nKCJGUDIgRmFpbGVkIC0tICVzIix6Lm1lc3NhZ2UpfX07d2luZG93LnJlcXVlc3RJZGxlQ2FsbGJhY2s\/cmVxdWVzdElkbGVDYWxsYmFjayhmdW5jdGlvbigpe3RyeXtGaW5nZXJwcmludDIuZ2V0KHEsCgkJeSl9Y2F0Y2gobCl7Yy5sb2dNc2coIjEuVW5hYmxlIHRvIGluc3RhbnRpYXRlIEZQMi4gRXJyb3I6ICIrbC5tZXNzYWdlKX19KTpzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dHJ5e0ZpbmdlcnByaW50Mi5nZXQocSx5KX1jYXRjaChsKXtjLmxvZ01zZygiMi5VbmFibGUgdG8gaW5zdGFudGlhdGUgRlAyLiBFcnJvcjogIitsLm1lc3NhZ2UpfX0sNTAwKX1jYXRjaChsKXtjLmxvZ01zZygiVW5leHBlY3RlZCBlcnJvciBleGVjdXRpbmcgZmlyc3Qgc3RlcDogIitsLm1lc3NhZ2UpfX0pfWNhdGNoKGgpe2MubG9nTXNnKCJVbmV4cGVjdGVkIGVycm9yIGV4ZWN1dGluZyBmaXJzdCBzdGVwOiAiK2gubWVzc2FnZSl9fSx1cGRhdGVGUDpmdW5jdGlvbigpe3RyeXtpZighMD09PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXJldHVybiExO3RoaXMubG9nTXNnKCJTdGFydGluZyBTYWZhcmkgUnVuIik7aWYoITE9PT10aGlzLnJlc2V0U2Vjb25kUGFzcyl7dGhpcy5yZXNldFNlY29uZFBhc3M9CgkJITA7dGhpcy5sb2dNc2coIlN0YXJ0aW5nIGZpcnN0IHBhc3MiKTt2YXIgYT10aGlzLmNvb2tpZU1uZy5yZWFkQ29va2llVmFsdWUoInV1aWQiKSxiPXRoaXMuY29va2llTW5nLnJlYWRDb29raWVWYWx1ZSgidXVpZF9pb3NfMiIpO3RoaXMubG9nTXNnKCJVVUlELiAiK2ErIiAtLSBJT1NSRVNFVC4gIitiKTtudWxsPT1hfHxudWxsPT1iPyh0aGlzLmxvZ01zZygiRHJvcHBpbmcgcmVzZXQgY29va2llIiksdGhpcy5jb29raWVNbmcuc2V0Q29va2llVmFsdWUoInV1aWRfaW9zXzIiLDEsIi8iLDVFMyksdGhpcy50YWdCcm93c2VyKG51bGwpKToodGhpcy5sb2dNc2coIlNlY29uZCBwYXNzLCBub3RoaW5nIHRvIGRvIiksd2luZG93Ll9fX2QyY0NUS01ldGhvZCgpKX1lbHNlIHdpbmRvdy5fX19kMmNDVEtNZXRob2QoKX1jYXRjaChkKXt0aGlzLmxvZ01zZygiVW5leHBlY3RlZCBlcnJvciB1cGRhdGluZyBtb2JpbGUgY29va2llOiAiK2QubWVzc2FnZSl9fX07CndpbmRvdy5fX19kMmNDVEtNZXRob2Q9ZnVuY3Rpb24oKXt0cnl7aWYoIWFjdGl2ZVVzZXJQcm9maWxlTW5nLl9pc0JvdCgpJiYhMCE9PWFjdGl2ZVVzZXJQcm9maWxlTW5nLmRpc2FibGVkKXthY3RpdmVVc2VyUHJvZmlsZU1uZy5qcXVlcnlBY3RpdmU9d2luZG93LmpRdWVyeT8hMDohMTt2YXIgYT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG9wc2l0ZWlkIik7aWYobnVsbD09YXx8InVuZGVmaW5lZCI9PXR5cGVvZiBhLnZhbHVlfHxpc05hTihhLnZhbHVlKSlhY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dNc2coIkxvYWRpbmcgZnBzeXN0ZW0gb24gbm9uIGQyYyB3ZWJzaXRlIiksYWN0aXZlVXNlclByb2ZpbGVNbmcuaXNEMkNTaXRlPSExO2Vsc2UgdHJ5e3dpbmRvdy5hY3RpdmVTaXRlSUQ9cGFyc2VJbnQoYS52YWx1ZSl9Y2F0Y2gocCl7d2luZG93LmFjdGl2ZVNpdGVJRD12b2lkIDB9dmFyIGI9YWN0aXZlVXNlclByb2ZpbGVNbmcuY2hlY2tTY2hlZHVsZWRSZXNldCgpLGQ9YWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLnJlYWRDb29raWVWYWx1ZSgidXNpZCIpOwoJaWYoInVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3cuYWN0aXZlU2Vzc2lvbklEfHxudWxsPT13aW5kb3cuYWN0aXZlU2Vzc2lvbklEKXdpbmRvdy5hY3RpdmVTZXNzaW9uSUQ9MDtudWxsPT1kfHxpc05hTihkKXx8KHdpbmRvdy5hY3RpdmVTZXNzaW9uSUQ9ZCk7YWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLmRlbGV0ZUNvb2tpZSgidXVpZF92bGQiKTt2YXIgYz1hY3RpdmVVc2VyUHJvZmlsZU1uZy5nZXRTdGF0c1VSSSgpLGU9ZnVuY3Rpb24oKXt0cnl7InVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3cuc3RhdEV4ZWN1dGVkJiYoInVuZGVmaW5lZCIhPXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZyYmbnVsbCE9YWN0aXZlVXNlclByb2ZpbGVNbmcmJiJ1bmRlZmluZWQiIT10eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXc\/KGFjdGl2ZVVzZXJQcm9maWxlTW5nLmxvZ1BhZ2VWaWV3KCksd2luZG93LnN0YXRFeGVjdXRlZD0hMCk6YWN0aXZlVXNlclByb2ZpbGVNbmcuYWpheE1uZy5hamF4KHt1cmw6YysKCQkJInNlcnZpY2Uvc2Vzc2lvbk1uZy5waHAiLHR5cGU6IkdFVCIsZGF0YTp7YWN0aW9uOiJ1bmtub3duIixtc2c6IjEuRWl0aGVyIGFjdGl2ZVVzZXJQcm9maWxlTW5nIGlzIG5vdCBkZWZpbmVkIG9yIGxvZ1BhZ2VWaWV3IGlzIG5vdCBkZWZpbmVkIn19KSl9Y2F0Y2gocCl7YWN0aXZlVXNlclByb2ZpbGVNbmcubG9nTXNnKHAubWVzc2FnZSksYWN0aXZlVXNlclByb2ZpbGVNbmcuYWpheE1uZy5hamF4KHt1cmw6Yysic2VydmljZS9zZXNzaW9uTW5nLnBocCIsdHlwZToiR0VUIixkYXRhOnthY3Rpb246InVua25vd24iLG1zZzpwLm1lc3NhZ2V9fSl9fSxoPWFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5yZWFkQ29va2llVmFsdWUoInV1aWQiKSxmPW51bGw9PWh8fDA9PWgubGVuZ3RoPyExOiEwO2g9YWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLnJlYWRDb29raWVWYWx1ZSgidXVpZF92bGQzIik7dmFyIHE9bnVsbD09aHx8MD09aC5sZW5ndGg\/ITE6ITA7aWYoIWImJmYmJgoJCXEpe2FjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyQ2FsbGJhY2soZSk7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3cuYWN0aXZlUHJvZmlsZUlEfHxudWxsPT13aW5kb3cuYWN0aXZlUHJvZmlsZUlEKXdpbmRvdy5hY3RpdmVQcm9maWxlSUQ9YWN0aXZlVXNlclByb2ZpbGVNbmcuZ2V0QWN0aXZlUHJvZmlsZWlkKCk7YWN0aXZlVXNlclByb2ZpbGVNbmcuX19ub3RpZnlVVUlEKCl9ZWxzZSBhY3RpdmVVc2VyUHJvZmlsZU1uZy5zZXNzaW9uaWQ9bnVsbCx3aW5kb3cuYWN0aXZlU2Vzc2lvbklEPW51bGwsYWN0aXZlVXNlclByb2ZpbGVNbmcudGFnQnJvd3NlcihudWxsLGZ1bmN0aW9uKCl7YWN0aXZlVXNlclByb2ZpbGVNbmcucmVnaXN0ZXJDYWxsYmFjayhlKX0pfX1jYXRjaChwKXtjPWFjdGl2ZVVzZXJQcm9maWxlTW5nLmdldFN0YXRzVVJJKCksYWN0aXZlVXNlclByb2ZpbGVNbmcuYWpheE1uZy5fZ2V0KGMrInNlcnZpY2Uvc2Vzc2lvbk1uZy5waHA\/YWN0aW9uPXVua25vd24mbXNnPTIuIisKCWVuY29kZVVSSUNvbXBvbmVudChwLm1lc3NhZ2UpKSxjb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coIjEuIFVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCBsb2FkaW5nIHVwcm9maWxlLmZpbmFsLmpzLiBFcnJvcjogIitwLm1lc3NhZ2UpfX07CnRyeXtsZXQgYT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjZGlzYWJsZUludGVybmFsU2Vzc2lvbiIpO2lmKG51bGwhPWEmJiIxIj09YS52YWx1ZSl7YWN0aXZlVXNlclByb2ZpbGVNbmcuZGlzYWJsZWQ9ITA7YWN0aXZlVXNlclByb2ZpbGVNbmcudWlkPW51bGw7bGV0IGI9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3RvcHNpdGVpZCIpO251bGwhPWImJihiPXBhcnNlSW50KGIudmFsdWUpKTtpc05hTihiKXx8MjM1IT1iPyhhY3RpdmVVc2VyUHJvZmlsZU1uZy5jb29raWVNbmcuZGVsZXRlQ29va2llKCJ1dWlkIiksYWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLmRlbGV0ZUNvb2tpZSgidWlkIiksYWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLmRlbGV0ZUNvb2tpZSgidXVpZF9yc3QiKSxhY3RpdmVVc2VyUHJvZmlsZU1uZy5jb29raWVNbmcuZGVsZXRlQ29va2llKCJ1c2lkIiksYWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLmRlbGV0ZUNvb2tpZSgidXZpZXciKSwKCWFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5kZWxldGVDb29raWUoInVzaWQiKSxhY3RpdmVVc2VyUHJvZmlsZU1uZy5jb29raWVNbmcuZGVsZXRlQ29va2llKCJ1c2lkX3RtcCIpLGFjdGl2ZVVzZXJQcm9maWxlTW5nLmNvb2tpZU1uZy5kZWxldGVDb29raWUoInV1aWRfdjEiKSxhY3RpdmVVc2VyUHJvZmlsZU1uZy5jb29raWVNbmcuZGVsZXRlQ29va2llKCJ1dWlkX3ZsZDMiKSxhY3RpdmVVc2VyUHJvZmlsZU1uZy5jb29raWVNbmcuZGVsZXRlQ29va2llKCJ1dWZwIiksYWN0aXZlVXNlclByb2ZpbGVNbmcuY29va2llTW5nLmRlbGV0ZUNvb2tpZSgidXVpZF9pb3NfMiIpKTpjb25zb2xlLmxvZygiYnlwYXNzaW5nIGNvb2tpZSBwdXJnZSIpfWVsc2UibG9hZGluZyIhPWRvY3VtZW50LnJlYWR5U3RhdGU\/d2luZG93Ll9fX2QyY0NUS01ldGhvZCgpOmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXI\/ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsd2luZG93Ll9fX2QyY0NUS01ldGhvZCk6Cglkb2N1bWVudC5hdHRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIixmdW5jdGlvbigpeyJjb21wbGV0ZSI9PWRvY3VtZW50LnJlYWR5U3RhdGUmJndpbmRvdy5fX19kMmNDVEtNZXRob2QoKX0pfWNhdGNoKGEpe2NvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZygiNS4gVW5leHBlY3RlZCBlcnJvciBvY2N1cmVkIGxvYWRpbmcgdXByb2ZpbGUuZmluYWwuanMuIEVycm9yOiAiK2EubWVzc2FnZSl9OwovKiogL20vanMva2MuZmFiLmpzICoqLwp2YXIgX19fZDJjX2tjZmFianNfY19vbj0iMjAyNS0wNS0yMyAxNzowMzoxOCI7J3VzZSBzdHJpY3QnO3ZhciBfX19kMmNfa2NmYWJqc19jX29uPSIyMDI0LTAzLTI1IDEyOjMwOjE4IjsidXNlIHN0cmljdCI7CihmdW5jdGlvbihhKXthLmtjfHwoYS5rYz17fSk7YS5rYy5mYWI9ZnVuY3Rpb24oaCxlLGwpe3ZhciBiPXRoaXM7Yi4kZWw9YShoKTtiLmVsPWg7Yi4kZWwuZGF0YSgia2MuZmFiIixiKTt2YXIgZixrO2IuaW5pdD1mdW5jdGlvbigpe2lmKCJ1bmRlZmluZWQiPT09dHlwZW9mIGV8fG51bGw9PT1lKWU9W3t1cmw6bnVsbCxiZ2NvbG9yOiJyZWQiLGljb246IisifSx7dXJsOiJodHRwOi8vd3d3LmV4YW1wbGUuY29tIixiZ2NvbG9yOiJvcmFuZ2UiLGljb246IisifSx7dXJsOiJodHRwOi8vd3d3LmV4YW1wbGUuY29tIixiZ2NvbG9yOiJ5ZWxsb3ciLGljb246IisifV07Yi5saW5rcz1lO2lmKDA8Yi5saW5rcy5sZW5ndGgpe21haW5fYnRuPWIubGlua3NbMF07Y29sb3Jfc3R5bGU9bWFpbl9idG4uY29sb3I\/ImNvbG9yOiIrbWFpbl9idG4uY29sb3IrIjsiOiIiO2JnX2NvbG9yX3N0eWxlPW1haW5fYnRuLmJnY29sb3I\/ImJhY2tncm91bmQtY29sb3I6IittYWluX2J0bi5iZ2NvbG9yKyI7IjoKIiI7bWFpbl9idG5fZG9tPSI8YnV0dG9uIGRhdGEtbGluay1ocmVmPSciKyhtYWluX2J0bi51cmw\/bWFpbl9idG4udXJsOiIiKSsiJyBkYXRhLWxpbmstdGFyZ2V0PSciKyhtYWluX2J0bi50YXJnZXQ\/bWFpbl9idG4udGFyZ2V0OiIiKSsiJyBjbGFzcz0na2NfZmFiX21haW5fYnRuJyBzdHlsZT0nIitiZ19jb2xvcl9zdHlsZSsiJz48c3BhbiBzdHlsZT0nIitjb2xvcl9zdHlsZSsiJz4iK21haW5fYnRuLmljb24rIjwvc3Bhbj48L2J1dHRvbj4iO3N1Yl9mYWJfYnRuc19kb209IiI7Yi5saW5rcy5zaGlmdCgpO2Zvcih2YXIgYz0wO2M8Yi5saW5rcy5sZW5ndGg7YysrKWNvbG9yX3N0eWxlPWIubGlua3NbY10uY29sb3I\/ImNvbG9yOiIrYi5saW5rc1tjXS5jb2xvcisiOyI6IiIsYmdfY29sb3Jfc3R5bGU9Yi5saW5rc1tjXS5iZ2NvbG9yPyJiYWNrZ3JvdW5kLWNvbG9yOiIrYi5saW5rc1tjXS5iZ2NvbG9yKyI7IjoiIixzdWJfZmFiX2J0bnNfZG9tKz0iPGRpdj48YnV0dG9uIGRhdGEtbGluay10aXRsZT0nIisKYi5saW5rc1tjXS50aXRsZSsiJyBkYXRhLWxpbmstaHJlZj0nIisoYi5saW5rc1tjXS51cmw\/Yi5saW5rc1tjXS51cmw6IiIpKyInIGRhdGEtbGluay10YXJnZXQ9JyIrKGIubGlua3NbY10udGFyZ2V0P2IubGlua3NbY10udGFyZ2V0OiIiKSsiJyBjbGFzcz0nc3ViX2ZhYl9idG4nIHN0eWxlPSciK2JnX2NvbG9yX3N0eWxlKyInPjxzcGFuIHN0eWxlPSciK2NvbG9yX3N0eWxlKyInPiIrYi5saW5rc1tjXS5pY29uKyI8L3NwYW4+PC9idXR0b24+PC9kaXY+IjtzdWJfZmFiX2J0bnNfZG9tPSI8ZGl2IGNsYXNzPSdzdWJfZmFiX2J0bnNfd3JhcHBlcic+IitzdWJfZmFiX2J0bnNfZG9tKyI8L2Rpdj4iO2IuJGVsLmFwcGVuZChzdWJfZmFiX2J0bnNfZG9tKS5hcHBlbmQobWFpbl9idG5fZG9tKX1lbHNlInVuZGVmaW5lZCI9PXR5cGVvZiBjb25zb2xlJiYod2luZG93LmNvbnNvbGU9e2xvZzpmdW5jdGlvbihnKXthbGVydChnKX19KSxjb25zb2xlLmxvZygiSW52YWxpZCBsaW5rcyBhcnJheSBwYXJhbSIpOwpiLm9wdGlvbnM9YS5leHRlbmQoe30sYS5rYy5mYWIuZGVmYXVsdE9wdGlvbnMsbCk7Zj1iLiRlbC5maW5kKCIua2NfZmFiX21haW5fYnRuIik7az1iLiRlbC5maW5kKCIuc3ViX2ZhYl9idG5zX3dyYXBwZXIiKTtmLm9uKCJjbGljayIsZnVuY3Rpb24oZyl7MDxhKHRoaXMpLmF0dHIoImRhdGEtbGluay1ocmVmIikubGVuZ3RoJiYoYSh0aGlzKS5hdHRyKCJkYXRhLWxpbmstdGFyZ2V0Iik\/d2luZG93Lm9wZW4oYSh0aGlzKS5hdHRyKCJkYXRhLWxpbmstaHJlZiIpLGEodGhpcykuYXR0cigiZGF0YS1saW5rLXRhcmdldCIpKTp3aW5kb3cubG9jYXRpb24uaHJlZj1hKHRoaXMpLmF0dHIoImRhdGEtbGluay1ocmVmIikpO2sudG9nZ2xlQ2xhc3MoInNob3ciKTswPGEoIi5rY19mYWJfb3ZlcmxheSIpLmxlbmd0aD8oYSgiLmtjX2ZhYl9vdmVybGF5IikucmVtb3ZlKCksZi50cmlnZ2VyKCJibHVyIikpOihmLnRyaWdnZXIoImZvY3VzIiksYSgiYm9keSIpLmFwcGVuZCgnPGRpdiBjbGFzcz0ia2NfZmFiX292ZXJsYXkiID48L2Rpdj4nKSwKYSgiYm9keSIpLm9uKCJ0b3VjaHN0YXJ0IixmdW5jdGlvbigpe2YudHJpZ2dlcigiYmx1ciIpfSkpOzAhPT1hKHRoaXMpLmZpbmQoIi5pbmsiKS5sZW5ndGgmJmEodGhpcykuZmluZCgiLmluayIpLnJlbW92ZSgpO2EodGhpcykucHJlcGVuZCgiPHNwYW4gY2xhc3M9J2luayc+PC9zcGFuPiIpO2luaz1hKHRoaXMpLmZpbmQoIi5pbmsiKTtpbmsuaGVpZ2h0KCl8fGluay53aWR0aCgpfHwoZD1NYXRoLm1heChhKHRoaXMpLm91dGVyV2lkdGgoKSxhKHRoaXMpLm91dGVySGVpZ2h0KCkpLGluay5jc3Moe2hlaWdodDpkLHdpZHRoOmR9KSk7eD1nLnBhZ2VYLWEodGhpcykub2Zmc2V0KCkubGVmdC1pbmsud2lkdGgoKS8yO3k9Zy5wYWdlWS1hKHRoaXMpLm9mZnNldCgpLnRvcC1pbmsuaGVpZ2h0KCkvMjtpbmsuY3NzKHt0b3A6eSsicHgiLGxlZnQ6eCsicHgifSkuYWRkQ2xhc3MoImFuaW1hdGUiKX0pO2suZmluZCgiLnN1Yl9mYWJfYnRuIikub24oIm1vdXNlZG93biIsZnVuY3Rpb24oZyl7MDwKYSh0aGlzKS5hdHRyKCJkYXRhLWxpbmstaHJlZiIpLmxlbmd0aCYmKGEodGhpcykuYXR0cigiZGF0YS1saW5rLXRhcmdldCIpP3dpbmRvdy5vcGVuKGEodGhpcykuYXR0cigiZGF0YS1saW5rLWhyZWYiKSxhKHRoaXMpLmF0dHIoImRhdGEtbGluay10YXJnZXQiKSk6d2luZG93LmxvY2F0aW9uLmhyZWY9YSh0aGlzKS5hdHRyKCJkYXRhLWxpbmstaHJlZiIpKX0pO2YuZm9jdXNvdXQoZnVuY3Rpb24oKXtrLnJlbW92ZUNsYXNzKCJzaG93Iik7b3ZlcmxheT1hKCIua2NfZmFiX292ZXJsYXkiKTtvdmVybGF5LnJlbW92ZSgpO2EoImJvZHkiKS5vZmYoInRvdWNoc3RhcnQiKX0pfTtiLmluaXQoKX07YS5rYy5mYWIuZGVmYXVsdE9wdGlvbnM9e307YS5mbi5rY19mYWI9ZnVuY3Rpb24oaCxlKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7bmV3IGEua2MuZmFiKHRoaXMsaCxlKX0pfX0pKGpRdWVyeSk7Ci8qKiAvbS9qcy9vcGVuaG91cnMuanMgKiovCnZhciBfX19kMmNfb3BlbmhvdXJzanNfY19vbj0iMjAyNS0wNS0yMyAxNzoxMTowMyI7J3VzZSBzdHJpY3QnO3ZhciBfX19kMmNfb3BlbmhvdXJzanNfY19vbj0iMjAyNS0wMy0xOCAxNDozMDowOCI7InVzZSBzdHJpY3QiOwp2YXIgT3BlbkhvdXJzPWZ1bmN0aW9uKGIpe2Z1bmN0aW9uIGMoZCl7dmFyIGU9JCh0aGlzKS5zaWJsaW5ncygiLmV4cGFuZGFibGVfY29udGVudCIpLmVxKDApLmhhc0NsYXNzKCJvcGVuX2hvdXJzX21hcF9hY3RpdmUiKTskKGQuY3VycmVudFRhcmdldCkuZmluZCgiLm1hcF9vcGVuX2hvdXJzX2V4cGFuZF9hcnJvdyIpLnRvZ2dsZUNsYXNzKCJleHBhbmRlZCIpOyQodGhpcykucGFyZW50cyhhLm9wdGlvbnMuY29udGFpbmVyKS5maW5kKCIub3Blbl9ob3Vyc19tYXBfYWN0aXZlIikuc2xpZGVUb2dnbGUoInNsb3ciKTskKHRoaXMpLnBhcmVudHMoYS5vcHRpb25zLmNvbnRhaW5lcikuZmluZCgiLm9wZW5faG91cnNfbWFwX2FjdGl2ZSIpLnJlbW92ZUNsYXNzKCJvcGVuX2hvdXJzX21hcF9hY3RpdmUiKTtlfHwoJCh0aGlzKS5zaWJsaW5ncygiLmV4cGFuZGFibGVfY29udGVudCIpLmVxKDApLnNsaWRlVG9nZ2xlKCJzbG93IiksJCh0aGlzKS5zaWJsaW5ncygiLmV4cGFuZGFibGVfY29udGVudCIpLmVxKDApLmFkZENsYXNzKCJvcGVuX2hvdXJzX21hcF9hY3RpdmUiKSl9CnZhciBhPXRoaXM7YS5vcHRpb25zPWI7YS4kY29udGFpbmVyPSQoYS5vcHRpb25zLmNvbnRhaW5lcik7YS5pbml0PWZ1bmN0aW9uKCl7YS4kY29udGFpbmVyLmZpbmQoIi5tYXBfb3Blbl9ob3Vyc19leHBhbmQiKS5vbigiY2xpY2sgYXV0b19vcGVuIixjKTswPGEuJGNvbnRhaW5lci5maW5kKCIubWFwX29wZW5faG91cnNfZXhwYW5kLmRlZmF1bHRfb3BlbmVkIikubGVuZ3RoP2EuJGNvbnRhaW5lci5maW5kKCIubWFwX29wZW5faG91cnNfZXhwYW5kLmRlZmF1bHRfb3BlbmVkIikudHJpZ2dlcigiYXV0b19vcGVuIik6MiE9JCgiLmV4cGFuZGFibGVfY29udGVudCIpLmxlbmd0aHx8MDwkKCIuZXhwYW5kYWJsZV9jb250ZW50IikuZmluZCgiLnZpc2l0Q29udGFjdEhlYWRlciIpLmxlbmd0aD9hLm9wdGlvbnMuaGFzT3duUHJvcGVydHkoImF1dG9PcGVuIikmJiFhLm9wdGlvbnMuYXV0b09wZW58fGEuJGNvbnRhaW5lci5maW5kKCIubWFwX29wZW5faG91cnNfZXhwYW5kIikuZmlyc3QoKS50cmlnZ2VyKCJhdXRvX29wZW4iKToKJCgiLmV4cGFuZGFibGVfY29udGVudCIpLnNsaWRlVG9nZ2xlKCJzbG93IikuYWRkQ2xhc3MoIm9wZW5faG91cnNfbWFwX2FjdGl2ZSIpfTtyZXR1cm4gYX07Ci8qKiAvbS9qcy9nb29nbGVtYXBzLmpzICoqLwp2YXIgX19fZDJjX2dvb2dsZW1hcHNqc19jX29uPSIyMDI2LTAxLTEyIDEwOjE0OjU0IjsndXNlIHN0cmljdCc7Y2xhc3MgR29vZ2xlTWFwc1dyYXBwZXJ7Y29uc3RydWN0b3IoYSl7dGhpcy5wcmV2aW91c0luZm9XaW5kb3c9ITE7dGhpcy5vcHRpb25zPXtlbGVtZW50OmEmJmEuZWxlbWVudD9hLmVsZW1lbnQ6IiIsY2VudGVyOmEmJmEuY2VudGVyP2EuY2VudGVyOntsYXQ6NDUuNDY3Mjc3LGxuZzotNzMuODM0NTI2fSxjZW50ZXJPZmZzZXQ6YSYmYS5jZW50ZXJPZmZzZXQ\/YS5jZW50ZXJPZmZzZXQ6e3g6MCx5OjB9LHpvb206YSYmYS56b29tP2Euem9vbTo5LGFkZHJlc3NlczphJiZhLmFkZHJlc3Nlcz9hLmFkZHJlc3NlczpbXSxvbkJlZm9yZUluaXQ6YSYmYS5vbkJlZm9yZUluaXQ\/YS5vbkJlZm9yZUluaXQ6ZnVuY3Rpb24oKXt9LG9uQWZ0ZXJJbml0OmEmJmEub25BZnRlckluaXQ\/YS5vbkFmdGVySW5pdDpmdW5jdGlvbigpe30sb25BZnRlck1hcmtlckNyZWF0ZWQ6YSYmYS5vbkFmdGVyTWFya2VyQ3JlYXRlZD9hLm9uQWZ0ZXJNYXJrZXJDcmVhdGVkOmZ1bmN0aW9uKCl7fX19c3RhdGljIHNldEdvb2dsZU1hcCgpe3ZhciBhPQowLGU9ZnVuY3Rpb24oKXtnb29nbGUubWFwcy5NYXAucHJvdG90eXBlLnNldENlbnRlcldpdGhPZmZzZXQ9ZnVuY3Rpb24oayxnLGwpe3ZhciBjPXRoaXMsYj1uZXcgZ29vZ2xlLm1hcHMuT3ZlcmxheVZpZXc7Yi5vbkFkZD1mdW5jdGlvbigpe3ZhciBmPXRoaXMuZ2V0UHJvamVjdGlvbigpLGQ9Zi5mcm9tTGF0TG5nVG9Db250YWluZXJQaXhlbChrKTtkLngrPWc7ZC55Kz1sO2Muc2V0Q2VudGVyKGYuZnJvbUNvbnRhaW5lclBpeGVsVG9MYXRMbmcoZCkpfTtiLmRyYXc9ZnVuY3Rpb24oKXt9O2Iuc2V0TWFwKHRoaXMpfX07aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgZ29vZ2xlKWUoKTtlbHNlIHZhciBoPXNldEludGVydmFsKGZ1bmN0aW9uKCl7ND5hPyJ1bmRlZmluZWQiIT09dHlwZW9mIGdvb2dsZT8oY2xlYXJJbnRlcnZhbChoKSxlKCkpOmErKzpjbGVhckludGVydmFsKGgpfSwxRTMpfWluaXQoKXt2YXIgYT10aGlzLGU9YS5vcHRpb25zLmNlbnRlck9mZnNldC54P2Eub3B0aW9ucy5jZW50ZXJPZmZzZXQueDoKMCxoPWEub3B0aW9ucy5jZW50ZXJPZmZzZXQueT9hLm9wdGlvbnMuY2VudGVyT2Zmc2V0Lnk6MCxrPW5ldyBnb29nbGUubWFwcy5MYXRMbmdCb3VuZHM7YS5vcHRpb25zLm9uQmVmb3JlSW5pdCgpO2lmKGEub3B0aW9ucy5hZGRyZXNzZXMubGVuZ3RoKXt2YXIgZz1hLm9wdGlvbnMuY2VudGVyLGw9bmV3IGdvb2dsZS5tYXBzLkdlb2NvZGVyLGM9bmV3IGdvb2dsZS5tYXBzLk1hcChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChhLm9wdGlvbnMuZWxlbWVudCkse3pvb206YS5vcHRpb25zLnpvb20sY2VudGVyOmEub3B0aW9ucy5jZW50ZXIsbWFwVHlwZUlkOmdvb2dsZS5tYXBzLk1hcFR5cGVJZC5ST0FETUFQLGdlc3R1cmVIYW5kbGluZzoiZ3JlZWR5IixzY3JvbGx3aGVlbDohMSxtYXBUeXBlQ29udHJvbDohMX0pO2dvb2dsZS5tYXBzLmV2ZW50LmFkZExpc3RlbmVyT25jZShjLCJpZGxlIixmdW5jdGlvbigpe2Eub3B0aW9ucy5hZGRyZXNzZXMubWFwKGZ1bmN0aW9uKGIsZixkKXtmPWZ1bmN0aW9uKG4sCnEpe3RyeXtpZihxPT1nb29nbGUubWFwcy5HZW9jb2RlclN0YXR1cy5PSyl7ay5leHRlbmQoblswXS5nZW9tZXRyeS5sb2NhdGlvbik7Yy5maXRCb3VuZHMoayk7Yy5zZXRab29tKGEub3B0aW9ucy56b29tKTtnPWMuZ2V0Qm91bmRzKCkuZ2V0Q2VudGVyKCk7Yy5zZXRDZW50ZXJXaXRoT2Zmc2V0KGcsZSxoKTt2YXIgcD1uZXcgZ29vZ2xlLm1hcHMuSW5mb1dpbmRvdyh7Y29udGVudDpiLmluZm93aW5kb3d9KSxtPW5ldyBnb29nbGUubWFwcy5NYXJrZXIoe21hcDpjLHBvc2l0aW9uOm5bMF0uZ2VvbWV0cnkubG9jYXRpb24sdGl0bGU6Yi50aXRsZSxpY29uOmIuaWNvbn0pO20uYWRkTGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbigpe2EucHJldmlvdXNJbmZvV2luZG93JiZhLnByZXZpb3VzSW5mb1dpbmRvdy5jbG9zZSgpO2EucHJldmlvdXNJbmZvV2luZG93PXA7cC5vcGVuKGMsbSl9KTthLm9wdGlvbnMub25BZnRlck1hcmtlckNyZWF0ZWQoYixtKX19Y2F0Y2gocil7Y29uc29sZS5sb2cocil9fTsKYS5oYXNMYXQoYikmJmEuaGFzTG5nKGIpPyhkPW5ldyBnb29nbGUubWFwcy5MYXRMbmcoTnVtYmVyKGIuZ2VvbWV0cnkubG9jYXRpb24ubGF0KSxOdW1iZXIoYi5nZW9tZXRyeS5sb2NhdGlvbi5sbmcpKSxmKFt7Z2VvbWV0cnk6e2xvY2F0aW9uOmR9fV0sIk9LIikpOmwuZ2VvY29kZSh7YWRkcmVzczpiLmFkZHJlc3N9LGYpfSl9KTtnb29nbGUubWFwcy5ldmVudC5hZGREb21MaXN0ZW5lcih3aW5kb3csInJlc2l6ZSIsZnVuY3Rpb24oKXtjLnNldENlbnRlcldpdGhPZmZzZXQoZyxlLGgpfSl9YS5vcHRpb25zLm9uQWZ0ZXJJbml0KCl9X2hhc0xhdExuZ1Byb3AoYSxlKXtyZXR1cm4gYS5oYXNPd25Qcm9wZXJ0eSgiZ2VvbWV0cnkiKSYmYS5nZW9tZXRyeS5oYXNPd25Qcm9wZXJ0eSgibG9jYXRpb24iKSYmYS5nZW9tZXRyeS5sb2NhdGlvbi5oYXNPd25Qcm9wZXJ0eShlKSYmImZhbHNlIiE9YS5nZW9tZXRyeS5sb2NhdGlvbltlXT8hMDohMX1oYXNMYXQoYSl7cmV0dXJuIHRoaXMuX2hhc0xhdExuZ1Byb3AoYSwKImxhdCIpfWhhc0xuZyhhKXtyZXR1cm4gdGhpcy5faGFzTGF0TG5nUHJvcChhLCJsbmciKX19OwovKiogL20vanMvZm9vdGVyV2lkZ2V0X00uanMgKiovCnZhciBfX19kMmNfZm9vdGVyV2lkZ2V0TWpzX2Nfb249IjIwMjYtMDEtMTIgMTA6MTM6MTYiOyd1c2Ugc3RyaWN0Jzt2YXIgdHJhY2tGb290ZXJNYXBMb2FkPWZ1bmN0aW9uKCl7dmFyIGE9JCgiI3RhcmdldFBhZ2UiKS52YWwoKTsidW5kZWZpbmVkIj09YSYmKGE9IlVOS05PV04iKTtnYVRyYWNrKCJjLl90cmFja0V2ZW50IiwiRm9vdGVyLU1hcC1Mb2FkIiwiTW9iaWxlIixhLDEpfTsKaW5WaWV3RXhlYygiI2Zvb3Rlckdvb2dsZU1hcCIsZnVuY3Rpb24oKXtpZigkKCIjZm9vdGVyR29vZ2xlTWFwIikubGVuZ3RoKXRyeXtHb29nbGVNYXBzV3JhcHBlci5zZXRHb29nbGVNYXAoKTt2YXIgYT0kKCIjZm9vdGVyR29vZ2xlTWFwWm9vbSIpLnZhbCgpLGM9MTxwYXJzZUludChhKSYmMTg+PXBhcnNlSW50KGEpP3BhcnNlSW50KGEpOjk7d2luZG93LmZvb3Rlckdvb2dsZU1hcE9iamVjdD1uZXcgR29vZ2xlTWFwc1dyYXBwZXIoe2VsZW1lbnQ6ImZvb3Rlckdvb2dsZU1hcCIsYWRkcmVzc2VzOiJ1bmRlZmluZWQiIT10eXBlb2YgZm9vdGVyTWFwQWRkcmVzc2VzP2Zvb3Rlck1hcEFkZHJlc3NlczpbXSx6b29tOmMsb25CZWZvcmVJbml0OmZ1bmN0aW9uKCl7dHJhY2tGb290ZXJNYXBMb2FkKCl9LG9uQWZ0ZXJJbml0OmZ1bmN0aW9uKCl7InVuZGVmaW5lZCIhPXR5cGVvZiBmb290ZXJNYXBBZGRyZXNzZXMmJjAhPWZvb3Rlck1hcEFkZHJlc3Nlcy5sZW5ndGh8fCQoIiNmb290ZXJHb29nbGVNYXAiKS5oaWRlKCl9fSk7CndpbmRvdy5mb290ZXJHb29nbGVNYXBPYmplY3QuaW5pdCgpfWNhdGNoKGIpe2NvbnNvbGUubG9nKGIpfX0pO2luVmlld0V4ZWMoIiNmb290ZXJHb29nbGVNYXBJZnJhbWUiLGZ1bmN0aW9uKCl7dHJhY2tGb290ZXJNYXBMb2FkKCl9KTsKJChmdW5jdGlvbigpe2Z1bmN0aW9uIGEoKXsidW5kZWZpbmVkIiE9PXR5cGVvZiB3aW5kb3cuZm9vdGVyR29vZ2xlTWFwT2JqZWN0P3dpbmRvdy5mb290ZXJHb29nbGVNYXBPYmplY3QuY2FsY3VsYXRlQW5kRGlzcGxheVJvdXRlKCk6KGNvbnNvbGUubG9nKCJJQ0kiKSxzZXRUaW1lb3V0KGEsNTAwKSl9aW5WaWV3RXhlYygiI21hcF9vcGVuX2hvdXJzIixmdW5jdGlvbigpeyhuZXcgT3BlbkhvdXJzKHtjb250YWluZXI6IiNtYXBfb3Blbl9ob3VycyIsYXV0b09wZW46ITB9KSkuaW5pdCgpfSk7JCgiZGl2I3Bob25lTnVtYmVyRGl2IGxpIGEiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7InVuZGVmaW5lZCIhPXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZyYmInVuZGVmaW5lZCIhPXR5cGVvZiBhY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50JiZhY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50KCJwaG9uZS5jYWxsIiwkKHRoaXMpLmF0dHIoImhyZWYiKS5yZXBsYWNlKCJ0ZWw6IiwKIiIpKX0pOyQoIiNkaXJlY3Rpb25zQnV0dG9uSGVhZGVyIikub24oImNsaWNrIixmdW5jdGlvbihjKXtjLnByZXZlbnREZWZhdWx0KCk7JCgiaHRtbCwgYm9keSIpLmFuaW1hdGUoe3Njcm9sbFRvcDokKCIjZm9vdGVyR29vZ2xlTWFwSG91cnMiKS5vZmZzZXQoKS50b3B9LDJFMyk7YSgpfSl9KTsKd2luZG93Lm9ubG9hZD1mdW5jdGlvbigpeyhmdW5jdGlvbigpe3ZhciBhPXtuZXdfZ2VvbG9jOiExLHVzZXJDb29yZDohMSxyZXN1bHQ6ITEscHJldl9nZW9sb2M6Q29va2llcy5nZXQoImdlb2xvY1Byb2Nlc3NlZCIpP0pTT04ucGFyc2UoQ29va2llcy5nZXQoImdlb2xvY1Byb2Nlc3NlZCIpKTohMSxkZWFsZXJfdmlzaXRlZDpDb29raWVzLmdldCgiZGVhbGVyVmlzaXRlZCIpP0pTT04ucGFyc2UoQ29va2llcy5nZXQoImRlYWxlclZpc2l0ZWQiKSk6ITEsZGVhbGVyQWRkcmVzczoiIixnZXRQcmV2TG9jYXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gQ29va2llcy5nZXQoImdlb2xvY1Byb2Nlc3NlZCIpP0pTT04ucGFyc2UoQ29va2llcy5nZXQoImdlb2xvY1Byb2Nlc3NlZCIpKTohMX0scHJvY2Vzc1VzZXJMb2NhdGlvbjpmdW5jdGlvbihiKXthLm5ld19nZW9sb2M9Yjtzd2l0Y2goITApe2Nhc2UgMD09YS5wcmV2X2dlb2xvY3x8YS5wcmV2X2dlb2xvYy5hY2NlcHRlZCE9Yi5yZXN1bHQ6YS5uZXdfZ2VvbG9jLmxvY2F0aW9uX3N0cj0KMT09Yi5yZXN1bHQ\/Yi5nZW9jb2RlX2FkZHJlc3Nfc3RyKyIoIitiLmFjY3VyYWN5KyIpIjoiR2VvbG9jYXRpb24gcmVmdXNlZCI7YS5uZXdfZ2VvbG9jLmRlc2NyaXB0aW9uPTE9PWIucmVzdWx0PyJBQ0NFUFRFRCI6IiI7YS51c2VyQ29vcmQ9e2xhdDpiLmxhdGl0dWRlLCJsb25nIjpiLmxvbmdpdHVkZX07YS5jb21wYXJlVG9EZWFsZXJMb2NhdGlvbigpO2JyZWFrO2Nhc2UgMT09YS5wcmV2X2dlb2xvYy5hY2NlcHRlZCYmMT09Yi5yZXN1bHQ6dmFyIGQ9e2xhdDphLnByZXZfZ2VvbG9jLmxhdGl0dWRlLCJsb25nIjphLnByZXZfZ2VvbG9jLmxvbmdpdHVkZX07YS51c2VyQ29vcmQ9e2xhdDpiLmxhdGl0dWRlLCJsb25nIjpiLmxvbmdpdHVkZX07MjAwPGMuZ2V0RGlzdGFuY2UoZCxhLnVzZXJDb29yZCkmJihhLm5ld19nZW9sb2MuZGVzY3JpcHRpb249IlVQREFURUQiLGEubmV3X2dlb2xvYy5sb2NhdGlvbl9zdHI9Yi5nZW9jb2RlX2FkZHJlc3Nfc3RyKyIoIitiLmFjY3VyYWN5KyIpIiwKYS5jb21wYXJlVG9EZWFsZXJMb2NhdGlvbigpKX19LGNvbXBhcmVUb0RlYWxlckxvY2F0aW9uOmZ1bmN0aW9uKGIpeyJvYmplY3QiPT10eXBlb2YgYiYmYi5sYXQmJmIubG9uZz8yMDE+Yy5nZXREaXN0YW5jZShhLnVzZXJDb29yZCxiKT8wPT1hLmRlYWxlcl92aXNpdGVkJiYoYS5uZXdfZ2VvbG9jLmxvY2F0aW9uX3N0cj1hLmRlYWxlckFkZHJlc3MrIigiK2EubmV3X2dlb2xvYy5hY2N1cmFjeSsiKSIsYS5uZXdfZ2VvbG9jLmRlc2NyaXB0aW9uPSJERUFMRVJfTE9DQVRJT04iLGEubG9nUGFnZUV2ZW50KGEubmV3X2dlb2xvYy5sb2NhdGlvbl9zdHIpLGI9bmV3IERhdGUsYi5zZXRIb3VycygyMyw1OSw1OSwwKSxDb29raWVzLnNldCgiZGVhbGVyVmlzaXRlZCIsMSxiLCIvIikpOjA9PWEucHJldl9nZW9sb2MmJmEubG9nUGFnZUV2ZW50KGEubmV3X2dlb2xvYy5sb2NhdGlvbl9zdHIpOmEuZ2V0RGVhbGVyQ29vcmQoKX0sZ2V0RGVhbGVyQ29vcmQ6ZnVuY3Rpb24oKXthLmRlYWxlckFkZHJlc3M9CiQoJ21ldGFbbmFtZT0iZ2VvLnBsYWNlbmFtZSJdJykucHJvcCgiY29udGVudCIpO2MuZ2V0QWRkcmVzc0Nvb3JkKGEuZGVhbGVyQWRkcmVzcyxhLmNvbXBhcmVUb0RlYWxlckxvY2F0aW9uKX0sbG9nUGFnZUV2ZW50OmZ1bmN0aW9uKGIpe2ImJjA8Yi5sZW5ndGgmJjE9PWEubmV3X2dlb2xvYy5yZXN1bHQmJiJ1bmRlZmluZWQiIT10eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcmJiJ1bmRlZmluZWQiIT10eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudCYmKGI9YS5uZXdfZ2VvbG9jLmRlc2NyaXB0aW9uKyI6ICIrYixhY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50KCJUUkFDS19HRU9MT0MiLGIpKTtnZXRVVUlEPWZ1bmN0aW9uKCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cuYWN0aXZlUHJvZmlsZUlEJiZudWxsIT13aW5kb3cuYWN0aXZlUHJvZmlsZUlEP3dpbmRvdy5hY3RpdmVQcm9maWxlSUQ6InVuZGVmaW5lZCIhPQp0eXBlb2YgYWN0aXZlVXNlclByb2ZpbGVNbmcmJm51bGwhPWFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZD9hY3RpdmVVc2VyUHJvZmlsZU1uZy51aWQ6InVuZGVmaW5lZCIhPXR5cGVvZiBDb29raWVzJiYidW5kZWZpbmVkIiE9Q29va2llcy5nZXQoInV1aWQiKSYmbnVsbCE9Q29va2llcy5nZXQoInV1aWQiKT9Db29raWVzLmdldCgidXVpZCIpOiIifTtiPSJ1bmRlZmluZWQiIT10eXBlb2YgQ29va2llcyYmInVuZGVmaW5lZCIhPXR5cGVvZiBDb29raWVzLmdldCgidXNpZCIpJiZudWxsIT1Db29raWVzLmdldCgidXNpZCIpP0Nvb2tpZXMuZ2V0KCJ1c2lkIik6MDt2YXIgZD1nZXRVVUlEKCksZT0kKCIjc2l0ZUlEIikudmFsKCk7JC5hamF4KHt0eXBlOiJQT1NUIix1cmw6Imh0dHBzOi8vcmVzdC5kMmNtZWRpYS5jYS9nZW9sb2NUcmFja2luZy9zaXRldmlzaXRvciIsZGF0YTp7dXVpZDpkLHNlc3Npb25pZDpiLHNpdGVJRDplLHN0YXR1czphLm5ld19nZW9sb2MuZ2VvbG9jX3N0YXR1cywKZGVzYzphLm5ld19nZW9sb2MuZGVzY3JpcHRpb24sbGF0aXR1ZGU6YS5uZXdfZ2VvbG9jLmxhdGl0dWRlLGxvbmdpdHVkZTphLm5ld19nZW9sb2MubG9uZ2l0dWRlLHBvc3RhbF9jb2RlOmEubmV3X2dlb2xvYy5wb3N0YWxfY29kZSxhY2N1cmFjeTphLm5ld19nZW9sb2MuYWNjdXJhY3ksYWRkcmVzczphLm5ld19nZW9sb2MuZ2VvY29kZV9hZGRyZXNzX3N0cixsb2NhdGlvbl9zdHI6YS5uZXdfZ2VvbG9jLmxvY2F0aW9uX3N0cixnZW9sb2NfZGF0ZTphLm5ld19nZW9sb2MuZ2VvbG9jX2RhdGV9LHN1Y2Nlc3M6ZnVuY3Rpb24oZil7fSxmYWlsdXJlOmZ1bmN0aW9uKGYpe319KX19O2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgJCgiI2Fza1Zpc2l0b3JHZW9sb2MiKS52YWwoKSYmMT09JCgiI2Fza1Zpc2l0b3JHZW9sb2MiKS52YWwoKSYmInVuZGVmaW5lZCIhPXR5cGVvZiBnZW9Mb2NhdG9yKXt2YXIgYz1uZXcgZ2VvTG9jYXRvcihhLnByb2Nlc3NVc2VyTG9jYXRpb24pO2MuZm9yY2VHZW9sb2NBdHRlbXB0PQohMDtjLmdldExvY2F0aW9uKCl9fSkoKX07JChmdW5jdGlvbigpeyQoIi5jRXhwZW5kTGlzdCBCVVRUT04iKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7dmFyIGE9JCh0aGlzKS5jbG9zZXN0KCJkaXYuY0Zvb3RlckNhckxpbmtzIik7YS5sZW5ndGgmJihhLmhhc0NsYXNzKCJjTGlzdEV4cGVuZGVkIil8fGEuYWRkQ2xhc3MoImNMaXN0RXhwZW5kZWQiKS5maW5kKCIuY0V4cGVuZExpc3QiKS5oaWRlKCkpfSl9KTsKLyoqIC9tL2pzL3RvYXN0ci5qcyAqKi8KdmFyIF9fX2QyY190b2FzdHJqc19jX29uPSIyMDI1LTA1LTIzIDE3OjEyOjA5IjsndXNlIHN0cmljdCc7dmFyIF9fX2QyY190b2FzdHJqc19jX29uPSIyMDI0LTAzLTI2IDEyOjMwOjE1IjsidXNlIHN0cmljdCI7CihmdW5jdGlvbih6KXt6KFsianF1ZXJ5Il0sZnVuY3Rpb24oZCl7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihhLGMpe2F8fChhPWwoKSk7Zj1kKCIjIithLmNvbnRhaW5lcklkKTtpZihmLmxlbmd0aClyZXR1cm4gZjtjJiYoZj1kKCI8ZGl2Lz4iKS5hdHRyKCJpZCIsYS5jb250YWluZXJJZCkuYWRkQ2xhc3MoYS5wb3NpdGlvbkNsYXNzKS5hdHRyKCJhcmlhLWxpdmUiLCJwb2xpdGUiKS5hdHRyKCJyb2xlIiwiYWxlcnQiKS5jc3MoImNvbG9yIixhLmNvbG9yKSxmLmFwcGVuZFRvKGQoYS50YXJnZXQpKSk7cmV0dXJuIGZ9ZnVuY3Rpb24gQShhLGMsZSl7ZT1lJiZlLmZvcmNlP2UuZm9yY2U6ITE7cmV0dXJuIGEmJihlfHwwPT09ZCgiOmZvY3VzIixhKS5sZW5ndGgpPyhhW2MuaGlkZU1ldGhvZF0oe2R1cmF0aW9uOmMuaGlkZUR1cmF0aW9uLGVhc2luZzpjLmhpZGVFYXNpbmcsY29tcGxldGU6ZnVuY3Rpb24oKXt1KGEpfX0pLCEwKTohMX1mdW5jdGlvbiBFKCl7cmV0dXJue3RhcFRvRGlzbWlzczohMCwKdG9hc3RDbGFzczoidG9hc3QiLGNvbnRhaW5lcklkOiJ0b2FzdC1jb250YWluZXIiLGRlYnVnOiExLHNob3dNZXRob2Q6ImZhZGVJbiIsc2hvd0R1cmF0aW9uOjMwMCxzaG93RWFzaW5nOiJzd2luZyIsb25TaG93bjpmdW5jdGlvbigpe2QoIi50cmFkZUluQmFyTW9iaWxlQnV0dG9uIikuYWRkQ2xhc3MoIndpdGhUb2FzdGVyIik7ZCgiLnByb21vVG9wQnRuLmZsb2F0aW5nIikuYWRkQ2xhc3MoIndpdGhUb2FzdGVyIil9LGhpZGVNZXRob2Q6ImZhZGVPdXQiLGhpZGVEdXJhdGlvbjoxRTMsaGlkZUVhc2luZzoic3dpbmciLG9uSGlkZGVuOmZ1bmN0aW9uKCl7ZCgiLnRyYWRlSW5CYXJNb2JpbGVCdXR0b24iKS5yZW1vdmVDbGFzcygid2l0aFRvYXN0ZXIiKTtkKCIucHJvbW9Ub3BCdG4uZmxvYXRpbmciKS5yZW1vdmVDbGFzcygid2l0aFRvYXN0ZXIiKX0sb25DbG9zZTpmdW5jdGlvbigpe2QoIi50cmFkZUluQmFyTW9iaWxlQnV0dG9uIikucmVtb3ZlQ2xhc3MoIndpdGhUb2FzdGVyIik7CmQoIi5wcm9tb1RvcEJ0bi5mbG9hdGluZyIpLnJlbW92ZUNsYXNzKCJ3aXRoVG9hc3RlciIpfSxleHRlbmRlZFRpbWVPdXQ6MUUzLGljb25DbGFzc2VzOntlcnJvcjoidG9hc3QtZXJyb3IiLGluZm86InRvYXN0LWluZm8iLHN1Y2Nlc3M6InRvYXN0LXN1Y2Nlc3MiLHdhcm5pbmc6InRvYXN0LXdhcm5pbmcifSxpY29uQ2xhc3M6InRvYXN0LWluZm8iLGNvbG9yOiIjRkZGIixiZ0NvbG9yOiIiLHBvc2l0aW9uQ2xhc3M6InRvYXN0LXRvcC1yaWdodCIsdGltZU91dDo1RTMsdGl0bGVDbGFzczoidG9hc3QtdGl0bGUiLG1lc3NhZ2VDbGFzczoidG9hc3QtbWVzc2FnZSIsdGFyZ2V0OiJib2R5IixjbG9zZUh0bWw6JzxidXR0b24gdHlwZT0iYnV0dG9uIj4mdGltZXM7PC9idXR0b24+JyxuZXdlc3RPblRvcDohMCxwcmV2ZW50RHVwbGljYXRlczohMSxwcm9ncmVzc0JhcjohMX19ZnVuY3Rpb24gcihhKXtmdW5jdGlvbiBjKGspe2lmKCFkKCI6Zm9jdXMiLGcpLmxlbmd0aHx8aylyZXR1cm4gY2xlYXJUaW1lb3V0KGguaW50ZXJ2YWxJZCksCmdbYi5oaWRlTWV0aG9kXSh7ZHVyYXRpb246Yi5oaWRlRHVyYXRpb24sZWFzaW5nOmIuaGlkZUVhc2luZyxjb21wbGV0ZTpmdW5jdGlvbigpe3UoZyk7aWYoYi5vbkhpZGRlbiYmImhpZGRlbiIhPT1tLnN0YXRlKWIub25IaWRkZW4oKTttLnN0YXRlPSJoaWRkZW4iO20uZW5kVGltZT1uZXcgRGF0ZTtwJiZwKG0pfX0pfWZ1bmN0aW9uIGUoKXtpZigwPGIudGltZU91dHx8MDxiLmV4dGVuZGVkVGltZU91dCl2PXNldFRpbWVvdXQoYyxiLmV4dGVuZGVkVGltZU91dCksaC5tYXhIaWRlVGltZT1wYXJzZUZsb2F0KGIuZXh0ZW5kZWRUaW1lT3V0KSxoLmhpZGVFdGE9KG5ldyBEYXRlKS5nZXRUaW1lKCkraC5tYXhIaWRlVGltZX1mdW5jdGlvbiBGKCl7Y2xlYXJUaW1lb3V0KHYpO2guaGlkZUV0YT0wO2cuc3RvcCghMCwhMClbYi5zaG93TWV0aG9kXSh7ZHVyYXRpb246Yi5zaG93RHVyYXRpb24sZWFzaW5nOmIuc2hvd0Vhc2luZ30pfWZ1bmN0aW9uIEcoKXt2YXIgaz0oaC5oaWRlRXRhLShuZXcgRGF0ZSkuZ2V0VGltZSgpKS8KaC5tYXhIaWRlVGltZSoxMDA7dy53aWR0aChrKyIlIil9dmFyIGI9bCgpLHg9YS5pY29uQ2xhc3N8fGIuaWNvbkNsYXNzOyJ1bmRlZmluZWQiIT09dHlwZW9mIGEub3B0aW9uc092ZXJyaWRlJiYoYj1kLmV4dGVuZChiLGEub3B0aW9uc092ZXJyaWRlKSx4PWEub3B0aW9uc092ZXJyaWRlLmljb25DbGFzc3x8eCk7YTp7aWYoYi5wcmV2ZW50RHVwbGljYXRlcylpZihhLm1lc3NhZ2U9PT15KXt2YXIgcT0hMDticmVhayBhfWVsc2UgeT1hLm1lc3NhZ2U7cT0hMX1pZighcSl7QisrO2Y9bihiLCEwKTt2YXIgdj1udWxsLGc9ZCgiPGRpdi8+Iik7cT1kKCI8ZGl2Lz4iKTt2YXIgQz1kKCI8ZGl2Lz4iKSx3PWQoIjxkaXYvPiIpLHQ9ZChiLmNsb3NlSHRtbCksaD17aW50ZXJ2YWxJZDpudWxsLGhpZGVFdGE6bnVsbCxtYXhIaWRlVGltZTpudWxsfSxtPXt0b2FzdElkOkIsc3RhdGU6InZpc2libGUiLHN0YXJ0VGltZTpuZXcgRGF0ZSxvcHRpb25zOmIsbWFwOmF9OzY8Yi5iZ0NvbG9yLmxlbmd0aCYmCmcuY3NzKCJiYWNrZ3JvdW5kLWNvbG9yIixiLmJnQ29sb3IpO2EuaWNvbkNsYXNzJiZnLmFkZENsYXNzKGIudG9hc3RDbGFzcykuYWRkQ2xhc3MoeCk7YS50aXRsZSYmKHEuYXBwZW5kKGEudGl0bGUpLmFkZENsYXNzKGIudGl0bGVDbGFzcyksZy5hcHBlbmQocSkpO2EubWVzc2FnZSYmKEMuYXBwZW5kKGEubWVzc2FnZSkuYWRkQ2xhc3MoYi5tZXNzYWdlQ2xhc3MpLGcuYXBwZW5kKEMpKTtiLmNsb3NlQnV0dG9uJiYodC5hZGRDbGFzcygidG9hc3QtY2xvc2UtYnV0dG9uIikuYXR0cigicm9sZSIsImJ1dHRvbiIpLGcucHJlcGVuZCh0KSk7Yi5wcm9ncmVzc0JhciYmKHcuYWRkQ2xhc3MoInRvYXN0LXByb2dyZXNzIiksZy5wcmVwZW5kKHcpKTtiLm5ld2VzdE9uVG9wP2YucHJlcGVuZChnKTpmLmFwcGVuZChnKTtnLmhpZGUoKTtnW2Iuc2hvd01ldGhvZF0oe2R1cmF0aW9uOmIuc2hvd0R1cmF0aW9uLGVhc2luZzpiLnNob3dFYXNpbmcsY29tcGxldGU6Yi5vblNob3dufSk7MDxiLnRpbWVPdXQmJgoodj1zZXRUaW1lb3V0KGMsYi50aW1lT3V0KSxoLm1heEhpZGVUaW1lPXBhcnNlRmxvYXQoYi50aW1lT3V0KSxoLmhpZGVFdGE9KG5ldyBEYXRlKS5nZXRUaW1lKCkraC5tYXhIaWRlVGltZSxiLnByb2dyZXNzQmFyJiYoaC5pbnRlcnZhbElkPXNldEludGVydmFsKEcsMTApKSk7KGZ1bmN0aW9uKCl7Zy5vbigibW91c2VlbnRlciIsRikub24oIm1vdXNlbGVhdmUiLGUpO2lmKCFiLm9uY2xpY2smJmIudGFwVG9EaXNtaXNzKWcub24oImNsaWNrIixjKTtpZihiLmNsb3NlQnV0dG9uJiZ0KXQub24oImNsaWNrIixmdW5jdGlvbihrKXtrLnN0b3BQcm9wYWdhdGlvbj9rLnN0b3BQcm9wYWdhdGlvbigpOnZvaWQgMCE9PWsuY2FuY2VsQnViYmxlJiYhMCE9PWsuY2FuY2VsQnViYmxlJiYoay5jYW5jZWxCdWJibGU9ITApO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBiLm9uQ2xvc2UpYi5vbkNsb3NlKCk7YyghMCl9KTtpZihiLm9uY2xpY2spZy5vbigiY2xpY2siLGZ1bmN0aW9uKCl7Yi5vbmNsaWNrKCk7CmMoKX0pfSkoKTtwJiZwKG0pO2IuZGVidWcmJmNvbnNvbGUmJmNvbnNvbGUubG9nKG0pO3JldHVybiBnfX1mdW5jdGlvbiBsKCl7cmV0dXJuIGQuZXh0ZW5kKHt9LEUoKSxELm9wdGlvbnMpfWZ1bmN0aW9uIHUoYSl7Znx8KGY9bigpKTthLmlzKCI6dmlzaWJsZSIpfHwoYS5yZW1vdmUoKSwwPT09Zi5jaGlsZHJlbigpLmxlbmd0aCYmKGYucmVtb3ZlKCkseT12b2lkIDApKX12YXIgZixwLEI9MCxEPXtjbGVhcjpmdW5jdGlvbihhLGMpe3ZhciBlPWwoKTtmfHxuKGUpO2lmKCFBKGEsZSxjKSlmb3IoYT1mLmNoaWxkcmVuKCksYz1hLmxlbmd0aC0xOzA8PWM7Yy0tKUEoZChhW2NdKSxlKX0scmVtb3ZlOmZ1bmN0aW9uKGEpe3ZhciBjPWwoKTtmfHxuKGMpO2EmJjA9PT1kKCI6Zm9jdXMiLGEpLmxlbmd0aD91KGEpOmYuY2hpbGRyZW4oKS5sZW5ndGgmJmYucmVtb3ZlKCl9LGVycm9yOmZ1bmN0aW9uKGEsYyxlKXtyZXR1cm4gcih7dHlwZToiZXJyb3IiLGljb25DbGFzczpsKCkuaWNvbkNsYXNzZXMuZXJyb3IsCm1lc3NhZ2U6YSxvcHRpb25zT3ZlcnJpZGU6ZSx0aXRsZTpjfSl9LGdldENvbnRhaW5lcjpuLGluZm86ZnVuY3Rpb24oYSxjLGUpe3JldHVybiByKHt0eXBlOiJpbmZvIixpY29uQ2xhc3M6bCgpLmljb25DbGFzc2VzLmluZm8sbWVzc2FnZTphLG9wdGlvbnNPdmVycmlkZTplLHRpdGxlOmN9KX0sb3B0aW9uczp7fSxzdWJzY3JpYmU6ZnVuY3Rpb24oYSl7cD1hfSxzdWNjZXNzOmZ1bmN0aW9uKGEsYyxlKXtyZXR1cm4gcih7dHlwZToic3VjY2VzcyIsaWNvbkNsYXNzOmwoKS5pY29uQ2xhc3Nlcy5zdWNjZXNzLG1lc3NhZ2U6YSxvcHRpb25zT3ZlcnJpZGU6ZSx0aXRsZTpjfSl9LHZlcnNpb246IjIuMS4xIix3YXJuaW5nOmZ1bmN0aW9uKGEsYyxlKXtyZXR1cm4gcih7dHlwZToid2FybmluZyIsaWNvbkNsYXNzOmwoKS5pY29uQ2xhc3Nlcy53YXJuaW5nLG1lc3NhZ2U6YSxvcHRpb25zT3ZlcnJpZGU6ZSx0aXRsZTpjfSl9fSx5O3JldHVybiBEfSgpfSl9KSgiZnVuY3Rpb24iPT09dHlwZW9mIGRlZmluZSYmCmRlZmluZS5hbWQ\/ZGVmaW5lOmZ1bmN0aW9uKHosZCl7InVuZGVmaW5lZCIhPT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz1kKHJlcXVpcmUoImpxdWVyeSIpKTp3aW5kb3cudG9hc3RyPWQod2luZG93LmpRdWVyeSl9KTsKLyoqIC9tL2pzL2RlYWxlclNtc051bWJlci5qcyAqKi8KdmFyIF9fX2QyY19kZWFsZXJTbXNOdW1iZXJqc19jX29uPSIyMDI1LTA1LTIzIDE3OjA5OjUwIjsndXNlIHN0cmljdCc7dmFyIF9fX2QyY19kZWFsZXJTbXNOdW1iZXJqc19jX29uPSIyMDI0LTAzLTE5IDExOjMwOjA3IjsidXNlIHN0cmljdCI7CndpbmRvdy5kZWFsZXJTbXNOdW1iZXI9d2luZG93LmRlYWxlclNtc051bWJlcnx8bmV3IGZ1bmN0aW9uKCl7dGhpcy5fbmFtZT0iZGVhbGVyU21zTnVtYmVyIjt0aGlzLl9yaWQ9MDt0aGlzLl9vYnM9W107dGhpcy5fYnVpbGRRdWVyeT1mdW5jdGlvbihhLGMpe2M9InN0cmluZyI9PT10eXBlb2YgYz9jOigkKCJib2R5LkVOR0xJU0giKS5sZW5ndGg\/Ii9lbi8iOiIvZnIvIikrImFqYXgvZ2V0RGVhbGVyU21zTnVtYmVyIjt2YXIgYixkPXt3c3dpZHRoOiIwIn0sZz1bIlVVSUQiLCJtZXNzYWdlVHlwZSJdO2MrPSI\/Ijtmb3IoYiBpbiBnKWlmKCJ1bmRlZmluZWQiPT09dHlwZW9mIGFbZ1tiXV18fCIiPT1hW2dbYl1dKXJldHVybiB0aGlzLl9vbkVycm9yKCdtYW5kYXRvcnkgZmllbGQgaXMgbWlzc2luZyAiJytnW2JdKyciJyksITE7Zm9yKGIgaW4gYSlhLmhhc093blByb3BlcnR5KGIpJiYoZFtiXT1hW2JdKTtmb3IoYiBpbiBkKWQuaGFzT3duUHJvcGVydHkoYikmJgooYys9IiYiK2IrIj0iK2VuY29kZVVSSUNvbXBvbmVudChkW2JdKSk7cmV0dXJuIGN9O3RoaXMuX29uRXJyb3I9ZnVuY3Rpb24oYSl7Y29uc29sZS5lcnJvcih0aGlzLl9uYW1lLGEpfTt0aGlzLl9ub3RpZnlPYnNlcnZlcj1mdW5jdGlvbihhLGMpe3RoaXMuX29ic1thXShjKTtkZWxldGUgdGhpcy5fb2JzW2FdfTt0aGlzLl9kb1JlcXVlc3Q9ZnVuY3Rpb24oYSxjKXt2YXIgYj10aGlzLl9vblJlc3BvbnNlLmJpbmQodGhpcyk7JC5hamF4KHtjYjpiLHJpZDpjLHR5cGU6IkdFVCIsY2FjaGU6ITEsYXN5bmM6ITAsZGF0YVR5cGU6Impzb24iLHVybDphfSkuZG9uZShmdW5jdGlvbihkKXt0aGlzLmNiKHRoaXMucmlkLG51bGw9PT1kPyExOmQsITEpfSkuZmFpbChmdW5jdGlvbihkLGcpe3RoaXMuY2IodGhpcy5yaWQsITEsZyl9KX07dGhpcy5fb25SZXNwb25zZT1mdW5jdGlvbihhLGMsYil7aWYoITEhPT1iKXRoaXMuX29uRXJyb3IoInJlc3BvbnNlIGVycm9yOiAiK2IpO2Vsc2UgdHJ5eyExPT09CmM\/dGhpcy5fb25FcnJvcigiLmRhdGEgZXF1YWwgZmFsc2UiKToidW5kZWZpbmVkIiE9PXR5cGVvZiBjLnN1Y2Nlc3MmJiEwIT09Yy5zdWNjZXNzPyh0aGlzLl9vbkVycm9yKCIuZGF0YSBlcnJvcjogIitjLmVycm9yTWVzc2FnZSksYz0hMSk6KGI9ITEsInN0cmluZyIhPT10eXBlb2YgYy5kYXRhLm51bWJlciYmKHRoaXMuX29uRXJyb3IoIi5kYXRhIGludmFsaWQgc21zIG51bWJlciIpLGI9ITApLCJzdHJpbmciIT09dHlwZW9mIGMuZGF0YS5tZXNzYWdlJiYodGhpcy5fb25FcnJvcigiLm1lc3NhZ2UgaW52YWxpZCBzbXMgbWVzc2FnZSIpLGI9ITApLGM9Yj8hMTp7c21zbnVtYmVyOmMuZGF0YS5udW1iZXIsc21zbWVzc2FnZTpjLmRhdGEubWVzc2FnZSxzbXNjb2RlOmMuZGF0YS5zbXNDb2RlfSl9Y2F0Y2goZCl7dGhpcy5fb25FcnJvcigiLmRhdGEgZXhjZXB0aW9uOiIrZCksYz0hMX10aGlzLl9ub3RpZnlPYnNlcnZlcihhLGMpfTt0aGlzLl9hZGRPYnNlcnZlcj1mdW5jdGlvbihhKXtpZigiZnVuY3Rpb24iPT09CnR5cGVvZiBhKXt2YXIgYz10aGlzLl9yaWQrKzt0aGlzLl9vYnNbY109YTtyZXR1cm4gY310aGlzLl9vbkVycm9yKCJpcyBub3QgYSB2YWxpZCBjYWxsYmFjayBmdW5jdGlvbiIpO3JldHVybiExfTt0aGlzLl9hZGRDb21tb25WYWx1ZXNUb0RhdGE9ZnVuY3Rpb24oYSxjLGIpeyJvYmplY3QiIT09dHlwZW9mIGImJihiPXt9KTtiLlVVSUQ9YTtiLnNlc3Npb25JZD1jO2IudGVjaG5vbG9neT0iSFRNTCI7YT1nZXRDb29raWUoImdjbGlkIik\/Z2V0Q29va2llKCJnY2xpZCIpOiIiO251bGwhPT1hJiYidW5kZWZpbmVkIiE9PWEmJiIiIT09YSYmITEhPT1hJiYoYi5nb29nbGVDbGlja0lkPWEpO2E9Z2V0R2FDbGllbnRJZCgpO251bGwhPT1hJiYidW5kZWZpbmVkIiE9PWEmJiIiIT09YSYmITEhPT1hJiYoYi5nYUNsaWVudElkPWEpO2E9JCgiI3RleHRTZW5kVG9FbWFpbCIpLmxlbmd0aD8kKCIjdGV4dFNlbmRUb0VtYWlsIikudmFsKCk6IiI7IiIhPT1hJiYoYi5zZW5kVG9FbWFpbD1hKTthPQokKCIjdGV4dFNlbmRUb0VtYWlsQURGIikubGVuZ3RoPyQoIiN0ZXh0U2VuZFRvRW1haWxBREYiKS52YWwoKToiIjsiIiE9PWEmJihiLnNlbmRUb0VtYWlsQWRmPWEpO2E9JCgnaW5wdXRbZGF0YS1mb3J2YXI9Ik9WRVJXUklUVEVSREVBTEVSIl0nKS5sZW5ndGg\/JCgnaW5wdXRbZGF0YS1mb3J2YXI9Ik9WRVJXUklUVEVSREVBTEVSIl0nKS52YWwoKToiIjsiIiE9PWEmJihiLmRlYWxlck5hbWU9YSk7bGV0IGQ9Yi5tYWtlLnRvTG93ZXJDYXNlKCk7aWYoJCgiI211bHRpLWFkZHJlc3Mtc3VibWlzc2lvbiIpLmxlbmd0aCYmIiIhPT1kJiYiY2FyZGV0YWlsLmh0bWwiIT0kKCIjUEFHRUlEIikudmFsKCkpe2E9JCgiI211bHRpLWFkZHJlc3Mtc3VibWlzc2lvbiIpLmZpbmQoInNlbGVjdCIpO2xldCBnPWVtYWlsSGFuZGxlci5nZXREZXAoKTthLmZpbmQoIm9wdGlvbltkYXRhLWJyYW5kc10iKS5lYWNoKGZ1bmN0aW9uKGUsZil7ZT0kKGYpLmRhdGEoImJyYW5kcyIpLnRvTG93ZXJDYXNlKCk7CmlmKCIiIT1lJiZlLnNwbGl0KCIsIikuaW5jbHVkZXMoZCkpe2xldCBoPWU9IiIsaz1mLnRleHQ7c3dpdGNoKGcpe2Nhc2UgIlVTRUQiOmU9JChmKS5kYXRhKCJlbWFpbHVzZWQiKTtoPSQoZikuZGF0YSgiZW1haWxhZGZ1c2VkIik7YnJlYWs7Y2FzZSAiU0VSVklDRSI6ZT0kKGYpLmRhdGEoImVtYWlsc2VydmljZSIpO2g9JChmKS5kYXRhKCJlbWFpbGFkZnNlcnZpY2UiKTticmVhaztjYXNlICJQQVJUUyI6ZT0kKGYpLmRhdGEoImVtYWlscGFydHMiKXx8JChmKS5kYXRhKCJlbWFpbHNlcnZpY2UiKTtoPSQoZikuZGF0YSgiZW1haWxhZGZwYXJ0cyIpfHwkKGYpLmRhdGEoImVtYWlsYWRmc2VydmljZSIpO2JyZWFrO2Nhc2UgIkZJTkFOQ0UiOmU9JChmKS5kYXRhKCJlbWFpbGZpbmFuY2UiKTtoPSQoZikuZGF0YSgiZW1haWxhZGZmaW5hbmNlIik7YnJlYWs7Y2FzZSAiTkVXIjplPSQoZikuZGF0YSgiZW1haWwiKSxoPSQoZikuZGF0YSgiZW1haWxhZGYiKX1pZigiIiE9PWV8fCIiIT09aCliLnNlbmRUb0VtYWlsPQplLGIuc2VuZFRvRW1haWxBZGY9aCxiLmRlYWxlck5hbWU9a319KX1hPSQoIiNDQU1QQUlHTklEIikubGVuZ3RoPyQoIiNDQU1QQUlHTklEIikudmFsKCk6IiI7IiIhPT1hJiYoYi5jYW1wYWlnbklkPWEpO2NvbnNvbGUubG9nKHRoaXMuX25hbWUrIi5kYXRhIixiKTtyZXR1cm4gYn07dGhpcy5faW5pdD1mdW5jdGlvbihhLGMsYixkLGcpe3ZhciBlO2lmKCExPT09KGE9dGhpcy5fYnVpbGRRdWVyeSh0aGlzLl9hZGRDb21tb25WYWx1ZXNUb0RhdGEoYSxjLGIpLGcpKXx8ITE9PT0oZT10aGlzLl9hZGRPYnNlcnZlcihkKSkpcmV0dXJuITE7c2V0VGltZW91dCh0aGlzLl9kb1JlcXVlc3QuYmluZCh0aGlzLGEsZSkpfTt0aGlzLmdldFNtc051bWJlcj1mdW5jdGlvbihhLGMsYil7aWYoIm9iamVjdCI9PT10eXBlb2Ygd2luZG93LmFjdGl2ZVVzZXJQcm9maWxlTW5nKWFjdGl2ZVVzZXJQcm9maWxlTW5nLnJlZ2lzdGVyQ2FsbGJhY2sodGhpcy5faW5pdC5iaW5kKHRoaXMsd2luZG93LmFjdGl2ZVVzZXJQcm9maWxlTW5nLnVpZCwKd2luZG93LmFjdGl2ZVVzZXJQcm9maWxlTW5nLmdldFNlc3Npb25JRCgpLGEsYyxiKSk7ZWxzZSByZXR1cm4gdGhpcy5fb25FcnJvcignImFjdGl2ZVVzZXJQcm9maWxlTW5nIiBpcyBub3QgYW4gb2JqZWN0JyksITE7cmV0dXJuITB9fTsKLyoqIC9tL2pzL2dlb0xvY2F0aW9uLmpzICoqLwp2YXIgX19fZDJjX2dlb0xvY2F0aW9uanNfY19vbj0iMjAyNS0wNS0yMyAxNzoxMDoyNCI7J3VzZSBzdHJpY3QnO3ZhciBfX19kMmNfZ2VvTG9jYXRpb25qc19jX29uPSIyMDI1LTAyLTI2IDA5OjMwOjExIjsidXNlIHN0cmljdCI7CnZhciBnZW9Mb2NhdG9yPWZ1bmN0aW9uKGYpe3ZhciBhPXRoaXM7YS5tYXBzQVBJS2V5PW51bGw7YS51c2VIVE1MNT0hMDthLmdlb2NvZGVMb2NhdGlvbj0hMDthLmF0dGVtcHRQYWdlTnVtPTA7YS50cmFja0xvY2F0aW9uR0E9ITE7YS5mb3JjZUdlb2xvY0F0dGVtcHQ9ITE7YS5zaG93UG9pbnRlck1lc3NhZ2U9ITA7YS50aW1lb3V0cz1bXTthLmJyb3dzZXI9IiI7YS5pc01vYmlsZT0iMSI9PSQoIiNpc21vYmlsZSIpLnZhbCgpO2EuZ2VvbG9jU3RhdHVzZXM9e09LOiJTVUNDRVNTIixSRUZVU0VEOiJSRUZVU0VEIixDT09LSUVfQUNDRVBURUQ6IlBSRV9BQ0NFUFRFRCIsQ09PS0lFX1JFRlVTRUQ6IlBSRV9SRUZVU0VEIixDQU5DRUxFRDoiQ0FOQ0VMRUQiLEZBSUw6IkZBSUxFRCJ9O2EuZ2VvbG9jRXJyb3JzPXtJTlZBTElEX1JFU1BPTlNFOiJJTlZBTElEX1JFU1BPTlNFIixDT05ORUNUSU9OX0ZBSUxFRDoiQ09OTkVDVElPTl9GQUlMRUQiLEdFT0xPQ19GQUlMRUQ6IkdFT0xPQ19GQUlMRUQiLApHRU9MT0NfUkVGVVNFRDoiR0VPTE9DX1JFRlVTRUQiLEdFT0NPREVfRkFJTEVEOiJHRU9DT0RFX0ZBSUxFRCJ9O2EuZ2VvbG9jUmVzdWx0PXtyZXN1bHQ6MCxnZW9sb2NfZGF0ZToiIixnZW9sb2Nfc3RhdHVzOmEuZ2VvbG9jU3RhdHVzZXMuRkFJTCxnZW9jb2RlX3N0YXR1czowLGxhdGl0dWRlOjAsbG9uZ2l0dWRlOjAsYWNjdXJhY3k6MCxwb3N0YWxfY29kZToiIixnZW9jb2RlX2FkZHJlc3M6IiIsZ2VvY29kZV9hZGRyZXNzX3N0cjoiIn07YS5nZW9sb2NDYWxsYmFjaz1mdW5jdGlvbigpe2YoYS5nZW9sb2NSZXN1bHQpO2Y9ZnVuY3Rpb24oKXtjb25zb2xlLmxvZygiR2VvIGNhbGxiYWNrIGFscmVhZHkgZmlyZWQuIil9fTthLl9pbml0PWZ1bmN0aW9uKCl7YS5pc01vYmlsZSYmKGEuc2hvd1BvaW50ZXJNZXNzYWdlPSExKTtpZigwPGEuYXR0ZW1wdFBhZ2VOdW0pe3ZhciBiPW51bGwhPUNvb2tpZXMuZ2V0KCJnZW9sb2NQYWdlVmlld3MiKT9wYXJzZUludChDb29raWVzLmdldCgiZ2VvbG9jUGFnZVZpZXdzIikpKwoxOjE7Q29va2llcy5zZXQoImdlb2xvY1BhZ2VWaWV3cyIsYjxhLmF0dGVtcHRQYWdlTnVtP2I6MCxudWxsLCIvIik7aWYoYjxhLmF0dGVtcHRQYWdlTnVtKXJldHVybiBhLmdlb2xvY1Jlc3VsdC5yZXN1bHQ9MCxhLmdlb2xvY1Jlc3VsdC5zdGF0dXM9YS5nZW9sb2NTdGF0dXNlcy5DQU5DRUxFRCxhLmdlb2xvY0NhbGxiYWNrKCksITF9aWYoIWEuZm9yY2VHZW9sb2NBdHRlbXB0JiZDb29raWVzLmdldCgiZ2VvbG9jUHJvY2Vzc2VkIikpcmV0dXJuIGI9SlNPTi5wYXJzZShDb29raWVzLmdldCgiZ2VvbG9jUHJvY2Vzc2VkIikpLCIxIj09Yi5hY2NlcHRlZD8oYS5nZW9sb2NSZXN1bHQucmVzdWx0PTEsYS5nZW9sb2NSZXN1bHQuZ2VvbG9jX2RhdGU9Yi5nZW9sb2NfZGF0ZSxhLmdlb2xvY1Jlc3VsdC5nZW9sb2Nfc3RhdHVzPWEuZ2VvbG9jU3RhdHVzZXMuQ09PS0lFX0FDQ0VQVEVELGEuZ2VvbG9jUmVzdWx0LmxhdGl0dWRlPWIubGF0aXRpdWRlLGEuZ2VvbG9jUmVzdWx0LmxvbmdpdHVkZT0KYi5sb25naXR1ZGUsYS5nZW9sb2NSZXN1bHQuZ2VvY29kZV9hZGRyZXNzPWIuYWRkcmVzcyxhLmdlb2xvY1Jlc3VsdC5nZW9jb2RlX2FkZHJlc3Nfc3RyPWIuYWRkcmVzc19zdHIpOihhLmdlb2xvY1Jlc3VsdC5yZXN1bHQ9MCxhLmdlb2xvY1Jlc3VsdC5zdGF0dXM9YS5nZW9sb2NTdGF0dXNlcy5DT09LSUVfUkVGVVNFRCksYS5nZW9sb2NDYWxsYmFjaygpLCExO2lmKCJodHRwczoiIT1sb2NhdGlvbi5wcm90b2NvbClyZXR1cm4gYS5nZW9sb2NSZXN1bHQucmVzdWx0PTAsYS5nZW9sb2NSZXN1bHQuc3RhdHVzPWEuZ2VvbG9jU3RhdHVzZXMuQ0FOQ0VMRUQsYS5nZW9sb2NDYWxsYmFjaygpLCExO2lmKGx0X0lFOXx8IW5hdmlnYXRvci5nZW9sb2NhdGlvbilhLnVzZUhUTUw1PSExO25hdmlnYXRvci5icm93c2VyPWZ1bmN0aW9uKCl7dmFyIGM9bmF2aWdhdG9yLnVzZXJBZ2VudCxkPWMubWF0Y2goLyhvcGVyYXxjaHJvbWV8c2FmYXJpfGZpcmVmb3h8bXNpZXx0cmlkZW50KD89XC8pKVwvP1xzKihcZCspL2kpfHwKW107aWYoL3RyaWRlbnQvaS50ZXN0KGRbMV0pKXt2YXIgZT0vXGJydlsgOl0rKFxkKykvZy5leGVjKGMpfHxbXTtyZXR1cm4iSUV4cGxvcmVyICIrKGVbMV18fCIiKX1pZigiQ2hyb21lIj09PWRbMV0mJihlPWMubWF0Y2goL1xiT1BSXC8oXGQrKS8pLG51bGwhPWUpKXJldHVybiJPcGVyYSAiK2VbMV07ZD1kWzJdP1tkWzFdLGRbMl1dOltuYXZpZ2F0b3IuYXBwTmFtZSxuYXZpZ2F0b3IuYXBwVmVyc2lvbiwiLT8iXTtudWxsIT0oZT1jLm1hdGNoKC92ZXJzaW9uXC8oXGQrKS9pKSkmJmQuc3BsaWNlKDEsMSxlWzFdKTtyZXR1cm4gZC5qb2luKCIgIil9KCk7YS5icm93c2VyPW5hdmlnYXRvci5icm93c2VyO3JldHVybiEwfTthLmhhbmRsZUxvY2F0aW9uU3VjY2Vzcz1mdW5jdGlvbigpe3ZhciBiPSJMYXRpdHVkZTogIithLmdlb2xvY1Jlc3VsdC5sYXRpdHVkZSsiOyBMb25naXR1ZGU6ICIrYS5nZW9sb2NSZXN1bHQubG9uZ2l0dWRlOzM8PWEuZ2VvbG9jUmVzdWx0LnBvc3RhbF9jb2RlLmxlbmd0aCYmCihiPWEuZ2VvbG9jUmVzdWx0LnBvc3RhbF9jb2RlKTthLnRyYWNrTG9jYXRpb24oIkdlb2xvY2F0aW9uIiwiQWNjZXB0ZWQiLGIpO2EuZ2VvbG9jUmVzdWx0Lmdlb2xvY19kYXRlPShuZXcgRGF0ZSkuZ2V0VGltZSgpO2I9bmV3IERhdGU7Yi5zZXRIb3VycygyMyw1OSw1OSwwKTtDb29raWVzLnNldCgiZ2VvbG9jUHJvY2Vzc2VkIixKU09OLnN0cmluZ2lmeSh7YWNjZXB0ZWQ6MSxnZW9sb2NfZGF0ZTphLmdlb2xvY1Jlc3VsdC5nZW9sb2NfZGF0ZSxsYXRpdHVkZTphLmdlb2xvY1Jlc3VsdC5sYXRpdHVkZSxsb25naXR1ZGU6YS5nZW9sb2NSZXN1bHQubG9uZ2l0dWRlLHBvc3RhbF9jb2RlOmEuZ2VvbG9jUmVzdWx0LnBvc3RhbF9jb2RlLGFjY3VyYWN5OmEuZ2VvbG9jUmVzdWx0LmFjY3VyYWN5LGFkZHJlc3M6YS5nZW9sb2NSZXN1bHQuZ2VvY29kZV9hZGRyZXNzLGFkZHJlc3Nfc3RyOmEuZ2VvbG9jUmVzdWx0Lmdlb2NvZGVfYWRkcmVzc19zdHJ9KSxiLCIvIik7YS5nZW9sb2NDYWxsYmFjaygpfTsKYS5oYW5kbGVMb2NhdGlvbkVycm9yPWZ1bmN0aW9uKGIsYyl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBjfHxudWxsPT1jKWM9IiI7YS5nZW9sb2NSZXN1bHQucmVzdWx0PTA7YS5nZW9sb2NSZXN1bHQuZ2VvbG9jX2RhdGU9KG5ldyBEYXRlKS5nZXRUaW1lKCk7YS5nZW9sb2NSZXN1bHQuZ2VvbG9jX3N0YXR1cz1hLmdlb2xvY1N0YXR1c2VzLkZBSUw7c3dpdGNoKGIpe2Nhc2UgYS5nZW9sb2NFcnJvcnMuSU5WQUxJRF9SRVNQT05TRTpjPSJHZW9sb2MgZXJyb3IgbWVzYWdlOiBJbnZhbGlkIHJlc3BvbnNlIGRhdGEiO2JyZWFrO2Nhc2UgYS5nZW9sb2NFcnJvcnMuQ09OTkVDVElPTl9GQUlMRUQ6Yz0iR2VvbG9jIGVycm9yIG1lc2FnZTogQ29uZWN0aW9uIGZhaWxlZCI7YnJlYWs7Y2FzZSBhLmdlb2xvY0Vycm9ycy5HRU9MT0NfUkVGVVNFRDphLmdlb2xvY1Jlc3VsdC5nZW9sb2Nfc3RhdHVzPWEuZ2VvbG9jU3RhdHVzZXMuUkVGVVNFRDticmVhaztjYXNlIGEuZ2VvbG9jRXJyb3JzLkdFT0xPQ19GQUlMRUQ6YnJlYWs7CmNhc2UgYS5nZW9sb2NFcnJvcnMuR0VPQ09ERV9GQUlMRUQ6Yz0iR2VvbG9jIGVycm9yIG1lc2FnZTogSW52YWxpZCByZXNwb25zZSBkYXRhIjticmVhaztkZWZhdWx0OmM9IlVua25vd24gZXJyb3Igb2N1cnJlZCJ9YS50cmFja0xvY2F0aW9uKCJHZW9sb2NhdGlvbiIsIkZhaWxlZCIsYyk7YS5nZW9sb2NDYWxsYmFjaygpfTthLmdldExvY2F0aW9uPWZ1bmN0aW9uKCl7YS5faW5pdCgpJiYoMD09YS51c2VIVE1MNT9hLmdldEdvb2dsZVNlcnZpY2VMb2NhdGlvbigpOmEuZ2V0SFRNTDVMb2NhdGlvbigpKX07YS5nZXRHb29nbGVTZXJ2aWNlTG9jYXRpb249ZnVuY3Rpb24oKXthLmhhbmRsZUxvY2F0aW9uU3VjY2VzcygpO3JldHVybiExfTthLmdldEhUTUw1TG9jYXRpb249ZnVuY3Rpb24oKXthLnNob3dHZW9sb2NNc2coKTtuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGZ1bmN0aW9uKGIpe2EuaGlkZUdlb2xvY01zZygpO2EuY2xlYXJTZXRUaW1lb3V0cygpOwphLmdlb2xvY1Jlc3VsdC5yZXN1bHQ9MTthLmdlb2xvY1Jlc3VsdC5nZW9sb2Nfc3RhdHVzPWEuZ2VvbG9jU3RhdHVzZXMuT0s7YS5nZW9sb2NSZXN1bHQubGF0aXR1ZGU9Yi5jb29yZHMubGF0aXR1ZGU7YS5nZW9sb2NSZXN1bHQubG9uZ2l0dWRlPWIuY29vcmRzLmxvbmdpdHVkZTthLmdlb2xvY1Jlc3VsdC5hY2N1cmFjeT1iLmNvb3Jkcy5hY2N1cmFjeTtpZigxIT1hLmdlb2NvZGVMb2NhdGlvbilyZXR1cm4gYS5oYW5kbGVMb2NhdGlvblN1Y2Nlc3MoKSwhMTthLmxhdExvbmdHZW9jb2RlKGIuY29vcmRzLmxhdGl0dWRlLGIuY29vcmRzLmxvbmdpdHVkZSl9LGZ1bmN0aW9uKGIpe2NvbnNvbGUubG9nKGIpO3ZhciBjPSJHZW9sb2MgZXJyb3IgY29kZTogIitiLmNvZGUrIiwgZ2VvbG9jIGVycm9yIG1lc2FnZTogIitiLm1lc3NhZ2U7YS5oaWRlR2VvbG9jTXNnKCk7YS5jbGVhclNldFRpbWVvdXRzKCk7Q29va2llcy5zZXQoImdlb2xvY1Byb2Nlc3NlZCIsSlNPTi5zdHJpbmdpZnkoe2FjY2VwdGVkOjB9KSwKMSwiLyIpO3ZhciBkPWEuZ2VvbG9jRXJyb3JzLkdFT0xPQ19SRUZVU0VEOzEhPXBhcnNlSW50KGIuY29kZSkmJihkPWEuZ2VvbG9jRXJyb3JzLkdFT0xPQ19GQUlMRUQpO2EuaGFuZGxlTG9jYXRpb25FcnJvcihkLGMpfSx7dGltZW91dDoyNUUzfSl9O2EubGF0TG9uZ0dlb2NvZGU9ZnVuY3Rpb24oYixjKXthLmdlb2xvY1Jlc3VsdC5nZW9jb2RlX2FkZHJlc3M9YisifCIrYzthLmdlb2xvY1Jlc3VsdC5nZW9jb2RlX2FkZHJlc3Nfc3RyPSJMYXRpdHVkZTogIitiKyI7IExvbmdpdHVkZTogIitjO2EuaGFuZGxlTG9jYXRpb25TdWNjZXNzKCl9O2EudHJhY2tQb3N0YWw9ZnVuY3Rpb24oKXtpZigkY29va2llPUNvb2tpZXMuZ2V0KCJIVE1MNUdlbyIpKWlmKCRjb29raWU9SlNPTi5wYXJzZSgkY29va2llKSwkY29va2llLnBvc3RhbF9jb2RlKXJldHVybjtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBhLmdlb2xvY1Jlc3VsdC5wb3N0YWxfY29kZSYmIiIhPT1hLmdlb2xvY1Jlc3VsdC5wb3N0YWxfY29kZSl7dmFyIGI9CmEuZ2VvbG9jUmVzdWx0LnBvc3RhbF9jb2RlKyJ8IithLmdlb2xvY1Jlc3VsdC5hY2N1cmFjeTsidW5kZWZpbmVkIiE9dHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nJiYidW5kZWZpbmVkIiE9dHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nLmxvZ1BhZ2VWaWV3RXZlbnQ\/KCJ1bmRlZmluZWQiIT09dHlwZW9mIGRlYnVnJiZkZWJ1ZygiTG9nIEV2ZW50IixhLmdlb2xvY1Jlc3VsdC5wb3N0YWxfY29kZSwiSFRNTDVHZW8ucG9zdGFsIiksYWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudChiLCJIVE1MNUdlby5wb3N0YWwiKSk6InVuZGVmaW5lZCIhPT10eXBlb2YgZGVidWcmJmRlYnVnKCIhVU5MT0dHRUQgRVZFTlQhIixhLmdlb2xvY1Jlc3VsdC5wb3N0YWxfY29kZSwiSFRNTDVHZW8ucG9zdGFsIik7Yj1uZXcgRGF0ZTtiLnNldEhvdXJzKDIzLDU5LDU5LDApO0Nvb2tpZXMuc2V0KCJIVE1MNUdlbyIsSlNPTi5zdHJpbmdpZnkoe3Bvc3RhbF9jb2RlOjF9KSxiLCIvIil9fTsKYS5nZXRBZGRyZXNzQ29vcmQ9ZnVuY3Rpb24oYixjKXtyZXR1cm4hMX07YS50cmFja0xvY2F0aW9uPWZ1bmN0aW9uKGIsYyxkKXtpZighYS50cmFja0xvY2F0aW9uR0EpcmV0dXJuITF9O2EuY2xlYXJTZXRUaW1lb3V0cz1mdW5jdGlvbigpe2Zvcih2YXIgYj0wO2I8YS50aW1lb3V0cy5sZW5ndGg7YisrKWNsZWFyVGltZW91dChhLnRpbWVvdXRzW2JdKTthLnRpbWVvdXRzPVtdfTthLnNob3dHZW9sb2NNc2c9ZnVuY3Rpb24oKXtpZighYS5zaG93UG9pbnRlck1lc3NhZ2UpcmV0dXJuITE7YS5jbGVhclNldFRpbWVvdXRzKCk7dmFyIGI9c2V0VGltZW91dChmdW5jdGlvbigpe2dlb2xvY0ZhaWwoKX0sM0U0KTthLnRpbWVvdXRzLnB1c2goYik7aWYoLTE8YS5icm93c2VyLmluZGV4T2YoIkZpcmVmb3giKXx8LTE8YS5icm93c2VyLmluZGV4T2YoIklFIikpJCgiLmdlb2xvYy1tb2RhbC1iZyIpLm9mZigiY2xpY2siKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7Z2VvbG9jRmFpbCgpO2NsZWFyVGltZW91dChiKX0pLAokKCIjZ2VvbG9jYXRpb25Nc2ciKS5vZmYoImNsaWNrIikub24oImNsaWNrIixmdW5jdGlvbigpe2dlb2xvY0ZhaWwoKTtjbGVhclRpbWVvdXQoYil9KSwkKCIjZ2VvbG9jYXRpb25Nc2dJRSIpLm9mZigiY2xpY2siKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7Z2VvbG9jRmFpbCgpO2NsZWFyVGltZW91dChiKX0pO3ZhciBjPSJnZW9sb2NhdGlvbk1zZyIsZD0hMCxlPXt0b3A6IjAiLGxlZnQ6IjAifTtzd2l0Y2goITApe2Nhc2UgLTE8YS5icm93c2VyLmluZGV4T2YoIklFIik6ZT17Ym90dG9tOiIwcHgiLGxlZnQ6IjQzJSJ9O2M9Imdlb2xvY2F0aW9uTXNnSUUiO2JyZWFrO2Nhc2UgLTE8YS5icm93c2VyLmluZGV4T2YoIkZpcmVmb3giKTplPXt0b3A6IjkwcHgiLGxlZnQ6IjVweCJ9OyQoImltZy5idXR0b25fcG9pbnRlciIpLmNzcygibGVmdCIsIjc1cHgiKTskKCJpbWcuYnV0dG9uX3BvaW50ZXIiKS5jc3MoInRvcCIsIjM1cHgiKTstMT09JCgiI3R4dFVzZXJBZ2VudCIpLnZhbCgpLmluZGV4T2YoIldpbmRvd3MiKSYmCiQoImltZy5idXR0b25fcG9pbnRlciIpLmNzcygibGVmdCIsIjE3NXB4Iik7YnJlYWs7Y2FzZSAtMTxhLmJyb3dzZXIuaW5kZXhPZigiQ2hyb21lIik6ZT17dG9wOiI2NXB4IixsZWZ0OiIwcHgifTskKCJpbWcuYnV0dG9uX3BvaW50ZXIiKS5jc3MoImxlZnQiLCIyMTBweCIpOy0xPT0kKCIjdHh0VXNlckFnZW50IikudmFsKCkuaW5kZXhPZigiV2luZG93cyIpJiYoZT17dG9wOiI3NXB4IixsZWZ0OiI1MHB4In0sJCgiaW1nLmJ1dHRvbl9wb2ludGVyIikuY3NzKCJsZWZ0IiwiMjQwcHgiKSk7YnJlYWs7Y2FzZSAtMTxhLmJyb3dzZXIuaW5kZXhPZigiU2FmYXJpIik6ZT17dG9wOiI1MTVweCIsbGVmdDoiMzUlIn07ZD0hMDticmVhaztjYXNlIC0xPGEuYnJvd3Nlci5pbmRleE9mKCJPcGVyYSIpOmU9e3RvcDoiMCIsbGVmdDoiMCJ9O2Q9ITE7YnJlYWs7ZGVmYXVsdDplPXt0b3A6IjAiLGxlZnQ6IjAifSxkPSExfWQmJigidW5kZWZpbmVkIiE9dHlwZW9mICQoIi5yZXZlYWwtbW9kYWwtYmciKS52YWwoKSYmCiJibG9jayI9PSQoIi5yZXZlYWwtbW9kYWwtYmciKS5jc3MoImRpc3BsYXkiKSYmJCgiLnJldmVhbC1tb2RhbC1iZyIpLmhpZGUoKSwkKCIuZ2VvbG9jLW1vZGFsLWJnIikuc2hvdygpLCQoIiMiK2MpLmNzcyhlKSwkKCIjIitjKS5zaG93KCksInVuZGVmaW5lZCI9PXR5cGVvZiBzaXRlU2VjdGlvbiYmKHNpdGVTZWN0aW9uPSJVTkRFRklORUQiKSxhLnRyYWNrTG9jYXRpb24oIkdlb2xvY2F0aW9uIiwiU2VjdGlvbi0iK3NpdGVTZWN0aW9uLCIiKSl9O2EuaGlkZUdlb2xvY01zZz1mdW5jdGlvbihiKXtpZighYS5zaG93UG9pbnRlck1lc3NhZ2UpcmV0dXJuITE7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBifHxudWxsPT1iKWI9ITE7JCgiLmdlb2xvYy1tb2RhbC1iZyIpLmhpZGUoKTtifHwoJCgiI2dlb2xvY2F0aW9uTXNnIikuaGlkZSgpLCQoIiNnZW9sb2NhdGlvbk1zZ0lFIikuaGlkZSgpKX07YS5nZW9sb2NGYWlsPWZ1bmN0aW9uKCl7LTE8YS5icm93c2VyLmluZGV4T2YoIklFIikmJgpsb2NhdGlvbi5yZWxvYWQoKTtvdmVybGF5T25seT0hMDtpZigtMTxhLmJyb3dzZXIuaW5kZXhPZigiRmlyZWZveCIpfHwtMTxhLmJyb3dzZXIuaW5kZXhPZigiSUUiKSlvdmVybGF5T25seT0hMTthLmhpZGVHZW9sb2NNc2cob3ZlcmxheU9ubHkpO3JldHVybiExfTthLmdldERpc3RhbmNlPWZ1bmN0aW9uKGIsYyxkKXtyZXR1cm4gYS5nZXREaXN0YW5jZUhhdmVyc2luZShiLGMpfTthLmdldERpc3RhbmNlSGF2ZXJzaW5lPWZ1bmN0aW9uKGIsYyl7dmFyIGQ9KGMubGF0LWIubGF0KSpNYXRoLlBJLzE4MCxlPShjLmxvbmctYi5sb25nKSpNYXRoLlBJLzE4MDtiPU1hdGguc2luKGQvMikqTWF0aC5zaW4oZC8yKStNYXRoLmNvcyhiLmxhdCpNYXRoLlBJLzE4MCkqTWF0aC5jb3MoYy5sYXQqTWF0aC5QSS8xODApKk1hdGguc2luKGUvMikqTWF0aC5zaW4oZS8yKTtyZXR1cm4oMTI3NTYyNzQqTWF0aC5hdGFuMihNYXRoLnNxcnQoYiksTWF0aC5zcXJ0KDEtYikpKS50b0ZpeGVkKDIpfTthLmdldERpc3RhbmNlR21hcHM9CmZ1bmN0aW9uKGIsYyl7cmV0dXJuIGEuZ2V0RGlzdGFuY2VIYXZlcnNpbmUoYixjKX19OwovKiogL20vanMvcHJpbnRUaGlzLmpzICoqLwp2YXIgX19fZDJjX3ByaW50VGhpc2pzX2Nfb249IjIwMjUtMDUtMjMgMTc6MTE6NDAiOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX3ByaW50VGhpc2pzX2Nfb249IjIwMjQtMDctMzAgMTA6MzA6MDgiOyJ1c2Ugc3RyaWN0IjsKKGZ1bmN0aW9uKGMpe2Z1bmN0aW9uIHIoZCxlKXtlJiZkLmFwcGVuZChlLmpxdWVyeT9lLmNsb25lKCk6ZSl9ZnVuY3Rpb24gdChkLGUsayl7dmFyIGY9ZS5jbG9uZShrLmZvcm1WYWx1ZXMpO2suZm9ybVZhbHVlcyYmdShlLGYsInNlbGVjdCwgdGV4dGFyZWEiKTtrLnJlbW92ZVNjcmlwdHMmJmYuZmluZCgic2NyaXB0IikucmVtb3ZlKCk7ay5wcmludENvbnRhaW5lcj9mLmFwcGVuZFRvKGQpOmYuZWFjaChmdW5jdGlvbigpe2ModGhpcykuY2hpbGRyZW4oKS5hcHBlbmRUbyhkKX0pfWZ1bmN0aW9uIHUoZCxlLGspe3ZhciBmPWQuZmluZChrKTtlLmZpbmQoaykuZWFjaChmdW5jdGlvbihnLHEpe2MocSkudmFsKGYuZXEoZykudmFsKCkpfSl9dmFyIGE7Yy5mbi5wcmludFRoaXM9ZnVuY3Rpb24oZCl7YT1jLmV4dGVuZCh7fSxjLmZuLnByaW50VGhpcy5kZWZhdWx0cyxkKTt2YXIgZT10aGlzIGluc3RhbmNlb2YgalF1ZXJ5P3RoaXM6Yyh0aGlzKTtkPSJwcmludFRoaXMtIisobmV3IERhdGUpLmdldFRpbWUoKTsKaWYod2luZG93LmxvY2F0aW9uLmhvc3RuYW1lIT09ZG9jdW1lbnQuZG9tYWluJiZuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9tc2llL2kpKXt2YXIgaz0namF2YXNjcmlwdDpkb2N1bWVudC53cml0ZSgiPGhlYWQ+PHNjcmlwdD5kb2N1bWVudC5kb21haW49XFwiJytkb2N1bWVudC5kb21haW4rJ1xcIjtceDNjL3NjcmlwdD48L2hlYWQ+PGJvZHk+PC9ib2R5PiIpJyxmPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpO2YubmFtZT0icHJpbnRJZnJhbWUiO2YuaWQ9ZDtmLmNsYXNzTmFtZT0iTVNJRSI7ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmKTtmLnNyYz1rfWVsc2UgYygiPGlmcmFtZSBpZD0nIitkKyInIG5hbWU9J3ByaW50SWZyYW1lJyAvPiIpLmFwcGVuZFRvKCJib2R5Iik7dmFyIGc9YygiIyIrZCk7YS5kZWJ1Z3x8Zy5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsd2lkdGg6IjBweCIsaGVpZ2h0OiIwcHgiLGxlZnQ6Ii02MDBweCIsdG9wOiItNjAwcHgifSk7CnNldFRpbWVvdXQoZnVuY3Rpb24oKXtmdW5jdGlvbiBxKGIscCl7Yj1iLmdldCgwKTtiPWIuY29udGVudFdpbmRvd3x8Yi5jb250ZW50RG9jdW1lbnR8fGI7Yj1iLmRvY3VtZW50fHxiLmNvbnRlbnREb2N1bWVudHx8YjtiLm9wZW4oKTtiLndyaXRlKHApO2IuY2xvc2UoKX1hLmRvY3R5cGVTdHJpbmcmJnEoZyxhLmRvY3R5cGVTdHJpbmcpO3ZhciBtPWcuY29udGVudHMoKSxsPW0uZmluZCgiaGVhZCIpLG49bS5maW5kKCJib2R5IiksaD1jKCJiYXNlIik7aD0hMD09PWEuYmFzZSYmMDxoLmxlbmd0aD9oLmF0dHIoImhyZWYiKToic3RyaW5nIj09PXR5cGVvZiBhLmJhc2U\/YS5iYXNlOmRvY3VtZW50LmxvY2F0aW9uLnByb3RvY29sKyIvLyIrZG9jdW1lbnQubG9jYXRpb24uaG9zdDtsLmFwcGVuZCgnPGJhc2UgaHJlZj0iJytoKyciPicpO2EuaW1wb3J0Q1NTJiZjKCJsaW5rW3JlbD1zdHlsZXNoZWV0XSIpLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1jKHRoaXMpLmF0dHIoImhyZWYiKTtpZihiKXt2YXIgcD0KYyh0aGlzKS5hdHRyKCJtZWRpYSIpfHwiYWxsIjtsLmFwcGVuZCgiPGxpbmsgdHlwZT0ndGV4dC9jc3MnIHJlbD0nc3R5bGVzaGVldCcgaHJlZj0nIitiKyInIG1lZGlhPSciK3ArIicvPiIpfX0pO2EuaW1wb3J0U3R5bGUmJmMoInN0eWxlIikuZWFjaChmdW5jdGlvbigpe2wuYXBwZW5kKHRoaXMub3V0ZXJIVE1MKX0pO2EucGFnZVRpdGxlJiZsLmFwcGVuZCgiPHRpdGxlPiIrYS5wYWdlVGl0bGUrIjwvdGl0bGU+Iik7YS5sb2FkQ1NTJiYoQXJyYXkuaXNBcnJheShhLmxvYWRDU1MpP2pRdWVyeS5lYWNoKGEubG9hZENTUyxmdW5jdGlvbihiLHApe2wuYXBwZW5kKCI8bGluayB0eXBlPSd0ZXh0L2NzcycgcmVsPSdzdHlsZXNoZWV0JyBocmVmPSciK3RoaXMrIicvPiIpfSk6bC5hcHBlbmQoIjxsaW5rIHR5cGU9J3RleHQvY3NzJyByZWw9J3N0eWxlc2hlZXQnIGhyZWY9JyIrYS5sb2FkQ1NTKyInLz4iKSk7aWYoaD1hLmNvcHlUYWdDbGFzc2VzKWg9ITA9PT1oPyJiaCI6aCwtMSE9PWguaW5kZXhPZigiYiIpJiYKbi5hZGRDbGFzcyhjKCJib2R5IilbMF0uY2xhc3NOYW1lKSwtMSE9PWguaW5kZXhPZigiaCIpJiZtLmZpbmQoImh0bWwiKS5hZGRDbGFzcyhjKCJodG1sIilbMF0uY2xhc3NOYW1lKTtyKG4sYS5oZWFkZXIpO2lmKGEuY2FudmFzKXt2YXIgdj0wO2UuZmluZCgiY2FudmFzIikuYWRkQmFjaygiY2FudmFzIikuZWFjaChmdW5jdGlvbigpe2ModGhpcykuYXR0cigiZGF0YS1wcmludHRoaXMiLHYrKyl9KX10KG4sZSxhKTthLmNhbnZhcyYmbi5maW5kKCJjYW52YXMiKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9Yyh0aGlzKS5kYXRhKCJwcmludHRoaXMiKTtiPWMoJ1tkYXRhLXByaW50dGhpcz0iJytiKyciXScpO3RoaXMuZ2V0Q29udGV4dCgiMmQiKS5kcmF3SW1hZ2UoYlswXSwwLDApO2IucmVtb3ZlRGF0YSgicHJpbnR0aGlzIil9KTthLnJlbW92ZUlubGluZSYmKGlzRnVuY3Rpb24oYy5yZW1vdmVBdHRyKT9tLmZpbmQoImJvZHkgKiIpLnJlbW92ZUF0dHIoInN0eWxlIik6bS5maW5kKCJib2R5ICoiKS5hdHRyKCJzdHlsZSIsCiIiKSk7cihuLGEuZm9vdGVyKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Zy5oYXNDbGFzcygiTVNJRSIpPyh3aW5kb3cuZnJhbWVzLnByaW50SWZyYW1lLnRyaWdnZXIoImZvY3VzIiksbC5hcHBlbmQoIjxzY3JpcHQ+ICB3aW5kb3cucHJpbnQoKTsgXHgzYy9zY3JpcHQ+IikpOmRvY3VtZW50LnF1ZXJ5Q29tbWFuZFN1cHBvcnRlZCgicHJpbnQiKT9nWzBdLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQuZXhlY0NvbW1hbmQoInByaW50IiwhMSxudWxsKTooZ1swXS5jb250ZW50V2luZG93LnRyaWdnZXIoImZvY3VzIiksZ1swXS5jb250ZW50V2luZG93LnByaW50KCkpO2EuZGVidWd8fHNldFRpbWVvdXQoZnVuY3Rpb24oKXtnLnJlbW92ZSgpfSwxRTMpfSxhLnByaW50RGVsYXkpfSwzMzMpfTtjLmZuLnByaW50VGhpcy5kZWZhdWx0cz17ZGVidWc6ITEsaW1wb3J0Q1NTOiEwLGltcG9ydFN0eWxlOiExLHByaW50Q29udGFpbmVyOiEwLGxvYWRDU1M6IiIscGFnZVRpdGxlOiIiLHJlbW92ZUlubGluZTohMSwKcHJpbnREZWxheTozMzMsaGVhZGVyOm51bGwsZm9vdGVyOm51bGwsZm9ybVZhbHVlczohMCxjYW52YXM6ITEsYmFzZTohMSxkb2N0eXBlU3RyaW5nOiI8IURPQ1RZUEUgaHRtbD4iLHJlbW92ZVNjcmlwdHM6ITEsY29weVRhZ0NsYXNzZXM6ITF9fSkoalF1ZXJ5KTsKLyoqIC9tL2pzL2NvbnRhY3RQb3B1cC5qcyAqKi8KdmFyIF9fX2QyY19jb250YWN0UG9wdXBqc19jX29uPSIyMDI2LTAxLTEyIDEwOjEzOjQ2IjsndXNlIHN0cmljdCc7dmFyIGNvbnRhY3RQb3B1cD17cG9wdXA6JCgiI2NvbnRhY3Rwb3B1cCIpLG9wdGlvbnM6e3R5cGU6IiJ9LHNldENvbmZpZzpmdW5jdGlvbihhKXtjb250YWN0UG9wdXAub3B0aW9ucz0kLmV4dGVuZCh7fSxjb250YWN0UG9wdXAub3B0aW9ucyxhKTtyZXR1cm4gY29udGFjdFBvcHVwfSxpbml0OmZ1bmN0aW9uKCl7Y29udGFjdFBvcHVwLnNldENvbmZpZyh7dHlwZTpzZWxmLnNldHRpbmdzLmZvcm0udHlwZX0pO2NvbnRhY3RQb3B1cC5wb3B1cC5wb3B1cGl6ZSh7b25CZWZvcmVTZW5kTWFpbDpjb250YWN0UG9wdXAub25CZWZvcmVTZW5kTWFpbH0pLm9wZW4oKTtyZXR1cm4gY29udGFjdFBvcHVwfSxvbkJlZm9yZVNlbmRNYWlsOmZ1bmN0aW9uKGEpe2NvbnRhY3RQb3B1cC5zZXRFbWFpbEhhbmRsZXJGcm9tQWRkcmVzc2VzKCk7ZW1haWxIYW5kbGVyLmNvbmRpdGlvbj1jb250YWN0UG9wdXAuZ2V0Q29uZGl0aW9uKCk7ZW1haWxIYW5kbGVyLmRlcGFydG1lbnQ9Y29udGFjdFBvcHVwLmdldFR5cGUoKS50b1VwcGVyQ2FzZSgpOwoiQk5QIj09ZW1haWxIYW5kbGVyLmRlcGFydG1lbnQmJihlbWFpbEhhbmRsZXIuZGVwYXJ0bWVudD0iTkVXIik7ZW1haWxIYW5kbGVyLnNraXBHZXREZXA9ITA7ZW1haWxIYW5kbGVyLmJvZHk9ZW1haWxIYW5kbGVyLmJvZHkucmVwbGFjZSgieyROQU1FfSIsZW1haWxIYW5kbGVyLnVzZXJGaXJzdE5hbWUrIiAiK2VtYWlsSGFuZGxlci51c2VyTGFzdE5hbWUpfSxnZXRDb25kaXRpb246ZnVuY3Rpb24oKXtzd2l0Y2goY29udGFjdFBvcHVwLmdldFR5cGUoKSl7Y2FzZSAiYm5wIjpjYXNlICJuZXciOmNhc2UgIm1hbnVmYWN0dXJlciI6cmV0dXJuIm5ldyI7ZGVmYXVsdDpyZXR1cm4idXNlZCJ9fSxnZXRUeXBlOmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnRhY3RQb3B1cC5vcHRpb25zLnR5cGV9LHNldEVtYWlsSGFuZGxlckZyb21BZGRyZXNzZXM6ZnVuY3Rpb24oKXt2YXIgYT1jb250YWN0UG9wdXAuZ2V0VHlwZSgpO3RyeXt2YXIgYj1jb250YWN0UG9wdXAuZ2V0RW1haWxzKGEpOyIiPT09Yi5zZW5kVG8mJgoiIj09PWIuc2VuZFRvQURGJiYoYj1jb250YWN0UG9wdXAuZ2V0RW1haWxzKCJ1c2VkIikpO3ZhciBjPWIuc2VuZFRvLGQ9Yi5zZW5kVG9BREY7IiI9PT1jJiYiIj09PWQmJmNvbnNvbGUubG9nKCJXYXJuaW5nOiBib3RoIGVtYWlsIGFuZCBBREYgYWRkcmVzc2VzIGFyZSBlbXB0eSEiKTtpZigkKCIjY3VzdG9tRm9ybV9vcmlnaW5hbHNlbmR0byIpLmxlbmd0aCYmIk90aGVyIj09JCgiI2N1c3RvbUZvcm1fb3JpZ2luYWxzZW5kdG8iKS52YWwoKSl7dmFyIGU9JCgiI2N1c3RvbUZvcm1fc2VuZHRvIikudmFsKCksZj0kKCIjY3VzdG9tRm9ybV9zZW5kdG9BREYiKS52YWwoKTtpZigiIiE9PWV8fCIiIT09ZiljPWUsZD1mfWVtYWlsSGFuZGxlci5zZW5kVG89YztlbWFpbEhhbmRsZXIuc2VuZFRvQURGRm9ybWF0PWR9Y2F0Y2goZyl7Y29uc29sZS5sb2coZyl9cmV0dXJuIGNvbnRhY3RQb3B1cH0sZ2V0RW1haWxzOmZ1bmN0aW9uKGEpe3ZhciBiPSQoIiNoaWRkZW5Db250YWN0cG9wdXAiKTsKImJucCI9PWEmJihhPSJuZXciKTt2YXIgYz1iLmZpbmQoIiNlbWFpbF8iK2EpLnZhbCgpO2E9Yi5maW5kKCIjZW1haWxBREZfIithKS52YWwoKTtyZXR1cm57c2VuZFRvOmMsc2VuZFRvQURGOmF9fX0saW5pdENvbnRhY3Rwb3B1cD1mdW5jdGlvbihhKXthLnByZXZlbnREZWZhdWx0KCk7Y29udGFjdFBvcHVwLmluaXQoKX0sY29udGFjdFBvcHVwU3VibWl0PWZ1bmN0aW9uKCl7JCgiI2NvbnRhY3Rwb3B1cCIpLnBvcHVwaXplKCkuc3VibWl0KCl9LGNvbnRhY3RQb3B1cENsb3NlPWZ1bmN0aW9uKCl7JCgiI2NvbnRhY3Rwb3B1cCIpLnBvcHVwaXplKCkuY2xvc2UoKX07Ci8qKiAvbS9qcy9uZWJDYWwvbmViRGF0ZUZuLmpzICoqLwp2YXIgX19fZDJjX25lYkRhdGVGbmpzX2Nfb249IjIwMjUtMDUtMjMgMTc6MDQ6MjQiOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX25lYkRhdGVGbmpzX2Nfb249IjIwMjQtMDEtMzEgMTQ6MzE6NTciOyJ1c2Ugc3RyaWN0IjtfX19kMmNfbmViRGF0ZUZuanNfY19vbj0iMjAyMy0wMS0xMiAxMTozMjoyMyI7InVzZSBzdHJpY3QiO19fX2QyY19uZWJEYXRlRm5qc19jX29uPSIyMDIzLTAxLTEyIDEwOjQyOjE2IjsidXNlIHN0cmljdCI7X19fZDJjX25lYkRhdGVGbmpzX2Nfb249IjIwMjEtMTItMTUgMTI6Mzg6MzkiOyJ1c2Ugc3RyaWN0Ijtjb25zdCBuZWJEYXRlRm49e307CiQoImJvZHkiKS5oYXNDbGFzcygiRlJFTkNIIik\/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+KCIrYSsiKTwvZGl2PiI6IiA8ZGl2ICIrYisiPiggIithKyIgKTwvZGl2PiJ9fTsKLyoqIC9tL2pzL2pxdWVyeS5kYXRldGltZXBpY2tlci5qcyAqKi8KdmFyIF9fX2QyY19qcXVlcnlkYXRldGltZXBpY2tlcmpzX2Nfb249IjIwMjUtMDUtMjMgMTc6MDk6MzkiOyd1c2Ugc3RyaWN0Jzt2YXIgX19fZDJjX2pxdWVyeWRhdGV0aW1lcGlja2VyanNfY19vbj0iMjAyNC0wMy0yNSAxMjozMzoxMSI7InVzZSBzdHJpY3QiOwooZnVuY3Rpb24oZil7ImZ1bmN0aW9uIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ\/ZGVmaW5lKFsianF1ZXJ5IiwianF1ZXJ5LW1vdXNld2hlZWwiLCJkYXRlLWZ1bmN0aW9ucyJdLGYpOiJvYmplY3QiPT09dHlwZW9mIGV4cG9ydHM\/bW9kdWxlLmV4cG9ydHM9ZjpmKGpRdWVyeSl9KShmdW5jdGlvbihmKXtmdW5jdGlvbiBNKHIsdixhKXt0aGlzLmRhdGU9cjt0aGlzLmRlc2M9djt0aGlzLnN0eWxlPWF9dmFyIEo9e2kxOG46e2FyOnttb250aHM6Ij8\/Pz8\/ID8\/Pz8\/Pzs\/Pz8\/Oz8\/Pz87Pz8\/Pz87Pz8\/Pzs\/Pz8\/Pz87Pz8\/Pzs\/Pzs\/Pz8\/Pzs\/Pz8\/PyA\/Pz8\/Pzs\/Pz8\/PyA\/Pz8\/Pz87Pz8\/Pz8gPz8\/Pz8iLnNwbGl0KCI7IiksZGF5T2ZXZWVrU2hvcnQ6Ij8\/Pz8\/Pz8iLnNwbGl0KCIiKSxkYXlPZldlZWs6Ij8\/Pz8\/ID8\/Pz8\/Pz8gPz8\/Pz8\/Pz8gPz8\/Pz8\/Pz8gPz8\/Pz8\/ID8\/Pz8\/PyA\/Pz8\/PyA\/Pz8\/PyIuc3BsaXQoIiAiKX0scm86e21vbnRoczoiSWFudWFyaWUgRmVicnVhcmllIE1hcnRpZSBBcHJpbGllIE1haSBJdW5pZSBJdWxpZSBBdWd1c3QgU2VwdGVtYnJpZSBPY3RvbWJyaWUgTm9pZW1icmllIERlY2VtYnJpZSIuc3BsaXQoIiAiKSwKZGF5T2ZXZWVrU2hvcnQ6IkR1IEx1IE1hIE1pIEpvIFZpIFPiIi5zcGxpdCgiICIpLGRheU9mV2VlazoiRHVtaW5pYz8gTHVuaSBNYXI\/aSBNaWVyY3VyaSBKb2kgVmluZXJpIFPibWI\/dD8iLnNwbGl0KCIgIil9LGlkOnttb250aHM6IkphbnVhcmkgRmVicnVhcmkgTWFyZXQgQXByaWwgTWVpIEp1bmkgSnVsaSBBZ3VzdHVzIFNlcHRlbWJlciBPa3RvYmVyIE5vdmVtYmVyIERlc2VtYmVyIi5zcGxpdCgiICIpLGRheU9mV2Vla1Nob3J0OiJNaW4gU2VuIFNlbCBSYWIgS2FtIEp1bSBTYWIiLnNwbGl0KCIgIiksZGF5T2ZXZWVrOiJNaW5nZ3UgU2VuaW4gU2VsYXNhIFJhYnUgS2FtaXMgSnVtYXQgU2FidHUiLnNwbGl0KCIgIil9LGlzOnttb250aHM6IkphbvphciBGZWJy+mFyIE1hcnMgQXBy7WwgTWHtIEr6bu0gSvps7SDBZ\/pzdCBTZXB0ZW1iZXIgT2t082JlciBO83ZlbWJlciBEZXNlbWJlciIuc3BsaXQoIiAiKSxkYXlPZldlZWtTaG9ydDoiU3VuIE3hbiDecmnwIE1p8CBGaW0gRvZzIExhdSIuc3BsaXQoIiAiKSwKZGF5T2ZXZWVrOiJTdW5udWRhZ3VyIE3hbnVkYWd1ciDecmnwanVkYWd1ciBNafB2aWt1ZGFndXIgRmltbXR1ZGFndXIgRvZzdHVkYWd1ciBMYXVnYXJkYWd1ciIuc3BsaXQoIiAiKX0sYmc6e21vbnRoczoiPz8\/Pz8\/ID8\/Pz8\/Pz8\/ID8\/Pz8gPz8\/Pz8gPz8\/ID8\/PyA\/Pz8gPz8\/Pz8\/ID8\/Pz8\/Pz8\/PyA\/Pz8\/Pz8\/PyA\/Pz8\/Pz8\/ID8\/Pz8\/Pz8\/Ii5zcGxpdCgiICIpLGRheU9mV2Vla1Nob3J0OiI\/PyA\/PyA\/PyA\/PyA\/PyA\/PyA\/PyIuc3BsaXQoIiAiKSxkYXlPZldlZWs6Ij8\/Pz8\/PyA\/Pz8\/Pz8\/Pz8\/ID8\/Pz8\/Pz8gPz8\/Pz8gPz8\/Pz8\/Pz8\/ID8\/Pz8\/ID8\/Pz8\/PyIuc3BsaXQoIiAiKX0sZmE6e21vbnRoczoiPz8\/Pz8\/PyA\/Pz8\/Pz8\/PyA\/Pz8\/PyA\/Pz8gPz8\/Pz8gPz8\/Pz8\/ID8\/PyA\/Pz8\/ID8\/PyA\/PyA\/Pz8\/ID8\/Pz8\/Ii5zcGxpdCgiICIpLGRheU9mV2Vla1Nob3J0OiI\/Pz8\/Pz87Pz8\/Pz8\/Oz8\/ID8\/Pz87Pz8\/Pz8\/Pz87Pz8\/Pz8\/Pzs\/Pz8\/Oz8\/Pz8iLnNwbGl0KCI7IiksCmRheU9mV2VlazoiPz8\/Pz8\/PyA\/Pz8\/Pz8gPz8\/Pz8\/PyA\/Pz8\/Pz8\/PyA\/Pz8\/Pz8\/PyA\/Pz8\/ID8\/Pz8gPz8\/Pz8\/PyIuc3BsaXQoIiAiKX0scnU6e21vbnRoczoiPz8\/Pz8\/ID8\/Pz8\/Pz8gPz8\/PyA\/Pz8\/Pz8gPz8\/ID8\/Pz8gPz8\/PyA\/Pz8\/Pz8gPz8\/Pz8\/Pz8gPz8\/Pz8\/PyA\/Pz8\/Pz8gPz8\/Pz8\/PyIuc3BsaXQoIiAiKSxkYXlPZldlZWtTaG9ydDoiPz8gPz8gPz8gPz8gPz8gPz8gPz8iLnNwbGl0KCIgIiksZGF5T2ZXZWVrOiI\/Pz8\/Pz8\/Pz8\/PyA\/Pz8\/Pz8\/Pz8\/PyA\/Pz8\/Pz8\/ID8\/Pz8\/ID8\/Pz8\/Pz8gPz8\/Pz8\/PyA\/Pz8\/Pz8\/Ii5zcGxpdCgiICIpfSx1azp7bW9udGhzOiI\/Pz8\/Pz8gPz8\/Pz8gPz8\/Pz8\/Pz8gPz8\/Pz8\/PyA\/Pz8\/Pz8\/ID8\/Pz8\/Pz8gPz8\/Pz8\/ID8\/Pz8\/Pz8gPz8\/Pz8\/Pz8gPz8\/Pz8\/PyA\/Pz8\/Pz8\/PyA\/Pz8\/Pz8\/Ii5zcGxpdCgiICIpLGRheU9mV2Vla1Nob3J0OiI\/Pz8gPz8\/ID8\/PyA\/Pz8gPz8\/ID8\/PyA\/Pz8iLnNwbGl0KCIgIiksZGF5T2ZXZWVrOiI\/Pz8\/Pz8gPz8\/Pz8\/Pz8\/ID8\/Pz8\/Pz8\/ID8\/Pz8\/PyA\/Pz8\/Pz8gPyc\/Pz8\/Pz8gPz8\/Pz8\/Ii5zcGxpdCgiICIpfSwKZW46e21vbnRoczoiSmFudWFyeSBGZWJydWFyeSBNYXJjaCBBcHJpbCBNYXkgSnVuZSBKdWx5IEF1Z3VzdCBTZXB0ZW1iZXIgT2N0b2JlciBOb3ZlbWJlciBEZWNlbWJlciIuc3BsaXQoIiAiKSxkYXlPZldlZWtTaG9ydDoiU3VuIE1vbiBUdWUgV2VkIFRodSBGcmkgU2F0Ii5zcGxpdCgiICIpLGRheU9mV2VlazoiU3VuZGF5IE1vbmRheSBUdWVzZGF5IFdlZG5lc2RheSBUaHVyc2RheSBGcmlkYXkgU2F0dXJkYXkiLnNwbGl0KCIgIil9LGVsOnttb250aHM6Ij8\/Pz8\/Pz8\/Pz8gPz8\/Pz8\/Pz8\/Pz8gPz8\/Pz8\/PyA\/Pz8\/Pz8\/PyA\/Pz8\/PyA\/Pz8\/Pz8\/ID8\/Pz8\/Pz8gPz8\/Pz8\/Pz8\/ID8\/Pz8\/Pz8\/Pz8\/ID8\/Pz8\/Pz8\/PyA\/Pz8\/Pz8\/Pz8gPz8\/Pz8\/Pz8\/PyIuc3BsaXQoIiAiKSxkYXlPZldlZWtTaG9ydDoiPz8\/ID8\/PyA\/Pz8gPz8\/ID8\/PyA\/Pz8gPz8\/Ii5zcGxpdCgiICIpLGRheU9mV2VlazoiPz8\/Pz8\/PyA\/Pz8\/Pz8\/ID8\/Pz8\/ID8\/Pz8\/Pz8gPz8\/Pz8\/ID8\/Pz8\/Pz8\/PyA\/Pz8\/Pz8\/Ii5zcGxpdCgiICIpfSwKZGU6e21vbnRoczoiSmFudWFyIEZlYnJ1YXIgTeRyeiBBcHJpbCBNYWkgSnVuaSBKdWxpIEF1Z3VzdCBTZXB0ZW1iZXIgT2t0b2JlciBOb3ZlbWJlciBEZXplbWJlciIuc3BsaXQoIiAiKSxkYXlPZldlZWtTaG9ydDoiU28gTW8gRGkgTWkgRG8gRnIgU2EiLnNwbGl0KCIgIiksZGF5T2ZXZWVrOiJTb25udGFnIE1vbnRhZyBEaWVuc3RhZyBNaXR0d29jaCBEb25uZXJzdGFnIEZyZWl0YWcgU2Ftc3RhZyIuc3BsaXQoIiAiKX0sbmw6e21vbnRoczoiamFudWFyaSBmZWJydWFyaSBtYWFydCBhcHJpbCBtZWkganVuaSBqdWxpIGF1Z3VzdHVzIHNlcHRlbWJlciBva3RvYmVyIG5vdmVtYmVyIGRlY2VtYmVyIi5zcGxpdCgiICIpLGRheU9mV2Vla1Nob3J0OiJ6byBtYSBkaSB3byBkbyB2ciB6YSIuc3BsaXQoIiAiKSxkYXlPZldlZWs6InpvbmRhZyBtYWFuZGFnIGRpbnNkYWcgd29lbnNkYWcgZG9uZGVyZGFnIHZyaWpkYWcgemF0ZXJkYWciLnNwbGl0KCIgIil9LHRyOnttb250aHM6Ik9jYWsgP3ViYXQgTWFydCBOaXNhbiBNYXk\/cyBIYXppcmFuIFRlbW11eiBBP3VzdG9zIEV5bPxsIEVraW0gS2FzP20gQXJhbD9rIi5zcGxpdCgiICIpLApkYXlPZldlZWtTaG9ydDoiUGF6IFB0cyBTYWwgx2FyIFBlciBDdW0gQ3RzIi5zcGxpdCgiICIpLGRheU9mV2VlazoiUGF6YXIgUGF6YXJ0ZXNpIFNhbD8gx2FyP2FtYmEgUGVyP2VtYmUgQ3VtYSBDdW1hcnRlc2kiLnNwbGl0KCIgIil9LGZyOnttb250aHM6IkphbnZpZXIgRul2cmllciBNYXJzIEF2cmlsIE1haSBKdWluIEp1aWxsZXQgQW\/7dCBTZXB0ZW1icmUgT2N0b2JyZSBOb3ZlbWJyZSBE6WNlbWJyZSIuc3BsaXQoIiAiKSxkYXlPZldlZWtTaG9ydDoiRGltIEx1biBNYXIgTWVyIEpldSBWZW4gU2FtIi5zcGxpdCgiICIpLGRheU9mV2VlazoiZGltYW5jaGUgbHVuZGkgbWFyZGkgbWVyY3JlZGkgamV1ZGkgdmVuZHJlZGkgc2FtZWRpIi5zcGxpdCgiICIpfSxlczp7bW9udGhzOiJFbmVybyBGZWJyZXJvIE1hcnpvIEFicmlsIE1heW8gSnVuaW8gSnVsaW8gQWdvc3RvIFNlcHRpZW1icmUgT2N0dWJyZSBOb3ZpZW1icmUgRGljaWVtYnJlIi5zcGxpdCgiICIpLGRheU9mV2Vla1Nob3J0OiJEb20gTHVuIE1hciBNaekgSnVlIFZpZSBT4WIiLnNwbGl0KCIgIiksCmRheU9mV2VlazoiRG9taW5nbyBMdW5lcyBNYXJ0ZXMgTWnpcmNvbGVzIEp1ZXZlcyBWaWVybmVzIFPhYmFkbyIuc3BsaXQoIiAiKX0sdGg6e21vbnRoczoiPz8\/Pz8\/ID8\/Pz8\/Pz8\/Pz8gPz8\/Pz8\/ID8\/Pz8\/PyA\/Pz8\/Pz8\/ID8\/Pz8\/Pz8\/ID8\/Pz8\/Pz8gPz8\/Pz8\/PyA\/Pz8\/Pz8\/ID8\/Pz8\/PyA\/Pz8\/Pz8\/Pz8gPz8\/Pz8\/PyIuc3BsaXQoIiAiKSxkYXlPZldlZWtTaG9ydDoiPz8uID8uID8uID8uID8\/LiA\/LiA\/LiIuc3BsaXQoIiAiKSxkYXlPZldlZWs6Ij8\/Pz8\/Pz8gPz8\/Pz8\/ID8\/Pz8\/PyA\/Pz8gPz8\/Pz8gPz8\/Pz8gPz8\/Pz8gPz8\/Pz8\/PyIuc3BsaXQoIiAiKX0scGw6e21vbnRoczoic3R5Y3plPyBsdXR5IG1hcnplYyBrd2llY2llPyBtYWogY3plcndpZWMgbGlwaWVjIHNpZXJwaWU\/IHdyemVzaWU\/IHBhP2R6aWVybmlrIGxpc3RvcGFkIGdydWR6aWU\/Ii5zcGxpdCgiICIpLGRheU9mV2Vla1Nob3J0OiJuZCBwbiB3dCA\/ciBjeiBwdCBzYiIuc3BsaXQoIiAiKSxkYXlPZldlZWs6Im5pZWR6aWVsYSBwb25pZWR6aWE\/ZWsgd3RvcmVrID9yb2RhIGN6d2FydGVrIHBpP3RlayBzb2JvdGEiLnNwbGl0KCIgIil9LApwdDp7bW9udGhzOiJKYW5laXJvIEZldmVyZWlybyBNYXLnbyBBYnJpbCBNYWlvIEp1bmhvIEp1bGhvIEFnb3N0byBTZXRlbWJybyBPdXR1YnJvIE5vdmVtYnJvIERlemVtYnJvIi5zcGxpdCgiICIpLGRheU9mV2Vla1Nob3J0OiJEb20gU2VnIFRlciBRdWEgUXVpIFNleCBTYWIiLnNwbGl0KCIgIiksZGF5T2ZXZWVrOiJEb21pbmdvIFNlZ3VuZGEgVGVy52EgUXVhcnRhIFF1aW50YSBTZXh0YSBT4WJhZG8iLnNwbGl0KCIgIil9LGNoOnttb250aHM6Ij8\/ID8\/ID8\/ID8\/ID8\/ID8\/ID8\/ID8\/ID8\/ID8\/ID8\/PyA\/Pz8iLnNwbGl0KCIgIiksZGF5T2ZXZWVrU2hvcnQ6Ij8\/Pz8\/Pz8iLnNwbGl0KCIiKX0sc2U6e21vbnRoczoiSmFudWFyaSBGZWJydWFyaSBNYXJzIEFwcmlsIE1haiBKdW5pIEp1bGkgQXVndXN0aSBTZXB0ZW1iZXIgT2t0b2JlciBOb3ZlbWJlciBEZWNlbWJlciIuc3BsaXQoIiAiKSxkYXlPZldlZWtTaG9ydDoiU\/ZuIE3lbiBUaXMgT25zIFRvciBGcmUgTPZyIi5zcGxpdCgiICIpfSwKa3I6e21vbnRoczoiMT8gMj8gMz8gND8gNT8gNj8gNz8gOD8gOT8gMTA\/IDExPyAxMj8iLnNwbGl0KCIgIiksZGF5T2ZXZWVrU2hvcnQ6Ij8\/Pz8\/Pz8iLnNwbGl0KCIiKSxkYXlPZldlZWs6Ij8\/PyA\/Pz8gPz8\/ID8\/PyA\/Pz8gPz8\/ID8\/PyIuc3BsaXQoIiAiKX0saXQ6e21vbnRoczoiR2VubmFpbyBGZWJicmFpbyBNYXJ6byBBcHJpbGUgTWFnZ2lvIEdpdWdubyBMdWdsaW8gQWdvc3RvIFNldHRlbWJyZSBPdHRvYnJlIE5vdmVtYnJlIERpY2VtYnJlIi5zcGxpdCgiICIpLGRheU9mV2Vla1Nob3J0OiJEb20gTHVuIE1hciBNZXIgR2lvIFZlbiBTYWIiLnNwbGl0KCIgIiksZGF5T2ZXZWVrOiJEb21lbmljYSBMdW5lZOwgTWFydGVk7CBNZXJjb2xlZOwgR2lvdmVk7CBWZW5lcmTsIFNhYmF0byIuc3BsaXQoIiAiKX0sZGE6e21vbnRoczoiSmFudWFyeSBGZWJydWFyIE1hcnRzIEFwcmlsIE1haiBKdW5pIEp1bHkgQXVndXN0IFNlcHRlbWJlciBPa3RvYmVyIE5vdmVtYmVyIERlY2VtYmVyIi5zcGxpdCgiICIpLApkYXlPZldlZWtTaG9ydDoiU\/huIE1hbiBUaXIgT25zIFRvciBGcmUgTPhyIi5zcGxpdCgiICIpLGRheU9mV2Vlazoic\/huZGFnIG1hbmRhZyB0aXJzZGFnIG9uc2RhZyB0b3JzZGFnIGZyZWRhZyBs+HJkYWciLnNwbGl0KCIgIil9LG5vOnttb250aHM6IkphbnVhciBGZWJydWFyIE1hcnMgQXByaWwgTWFpIEp1bmkgSnVsaSBBdWd1c3QgU2VwdGVtYmVyIE9rdG9iZXIgTm92ZW1iZXIgRGVzZW1iZXIiLnNwbGl0KCIgIiksZGF5T2ZXZWVrU2hvcnQ6IlP4biBNYW4gVGlyIE9ucyBUb3IgRnJlIEz4ciIuc3BsaXQoIiAiKSxkYXlPZldlZWs6IlP4bmRhZyBNYW5kYWcgVGlyc2RhZyBPbnNkYWcgVG9yc2RhZyBGcmVkYWcgTPhyZGFnIi5zcGxpdCgiICIpfSxqYTp7bW9udGhzOiIxPyAyPyAzPyA0PyA1PyA2PyA3PyA4PyA5PyAxMD8gMTE\/IDEyPyIuc3BsaXQoIiAiKSxkYXlPZldlZWtTaG9ydDoiPz8\/Pz8\/PyIuc3BsaXQoIiIpLGRheU9mV2VlazoiPz8gPz8gPz8gPz8gPz8gPz8gPz8iLnNwbGl0KCIgIil9LAp2aTp7bW9udGhzOiJUaOFuZyAxO1Ro4W5nIDI7VGjhbmcgMztUaOFuZyA0O1Ro4W5nIDU7VGjhbmcgNjtUaOFuZyA3O1Ro4W5nIDg7VGjhbmcgOTtUaOFuZyAxMDtUaOFuZyAxMTtUaOFuZyAxMiIuc3BsaXQoIjsiKSxkYXlPZldlZWtTaG9ydDoiQ04gVDIgVDMgVDQgVDUgVDYgVDciLnNwbGl0KCIgIiksZGF5T2ZXZWVrOiJDaD8gbmg\/dDtUaD8gaGFpO1RoPyBiYTtUaD8gdD87VGg\/IG4\/bTtUaD8gc+F1O1RoPyBiP3kiLnNwbGl0KCI7Iil9LHNsOnttb250aHM6IkphbnVhciBGZWJydWFyIE1hcmVjIEFwcmlsIE1haiBKdW5paiBKdWxpaiBBdmd1c3QgU2VwdGVtYmVyIE9rdG9iZXIgTm92ZW1iZXIgRGVjZW1iZXIiLnNwbGl0KCIgIiksZGF5T2ZXZWVrU2hvcnQ6Ik5lZCBQb24gVG9yIFNyZSA\/ZXQgUGV0IFNvYiIuc3BsaXQoIiAiKSxkYXlPZldlZWs6Ik5lZGVsamEgUG9uZWRlbGplayBUb3JlayBTcmVkYSA\/ZXRydGVrIFBldGVrIFNvYm90YSIuc3BsaXQoIiAiKX0sY3M6e21vbnRoczoiTGVkZW4g2m5vciBCP2V6ZW4gRHViZW4gS3Y\/dGVuID9lcnZlbiA\/ZXJ2ZW5lYyBTcnBlbiBa4T\/tID\/tamVuIExpc3RvcGFkIFByb3NpbmVjIi5zcGxpdCgiICIpLApkYXlPZldlZWtTaG9ydDoiTmUgUG8g2nQgU3QgP3QgUOEgU28iLnNwbGl0KCIgIil9LGh1Onttb250aHM6IkphbnXhciBGZWJydeFyIE3hcmNpdXMgwXByaWxpcyBN4Wp1cyBK+m5pdXMgSvpsaXVzIEF1Z3VzenR1cyBTemVwdGVtYmVyIE9rdPNiZXIgTm92ZW1iZXIgRGVjZW1iZXIiLnNwbGl0KCIgIiksZGF5T2ZXZWVrU2hvcnQ6IlZhIEjpIEtlIFN6ZSBDcyBQ6SBTem8iLnNwbGl0KCIgIiksZGF5T2ZXZWVrOiJ2YXPhcm5hcCBo6XRmPyBrZWRkIHN6ZXJkYSBjc\/x09nJ09msgcOludGVrIHN6b21iYXQiLnNwbGl0KCIgIil9LGF6Onttb250aHM6IllhbnZhciBGZXZyYWwgTWFydCBBcHJlbCBNYXkgSXl1biBJeXVsIEF2cXVzdCBTZW50eWFiciBPa3R5YWJyIE5veWFiciBEZWthYnIiLnNwbGl0KCIgIiksZGF5T2ZXZWVrU2hvcnQ6IkIgQmUgx2EgxyBDYSBDID8iLnNwbGl0KCIgIiksZGF5T2ZXZWVrOiJCYXphcjtCYXphciBlcnQ\/c2k7xz9yPz9uYj8gYXg\/YW0\/O8c\/cj8\/bmI\/O0P8bT8gYXg\/YW0\/O0P8bT87Pz9uYj8iLnNwbGl0KCI7Iil9LApiczp7bW9udGhzOiJKYW51YXIgRmVicnVhciBNYXJ0IEFwcmlsIE1haiBKdW4gSnVsIEF2Z3VzdCBTZXB0ZW1iYXIgT2t0b2JhciBOb3ZlbWJhciBEZWNlbWJhciIuc3BsaXQoIiAiKSxkYXlPZldlZWtTaG9ydDoiTmVkIFBvbiBVdG8gU3JpID9ldCBQZXQgU3ViIi5zcGxpdCgiICIpLGRheU9mV2VlazoiTmVkamVsamEgUG9uZWRqZWxqYWsgVXRvcmFrIFNyaWplZGEgP2V0dnJ0YWsgUGV0YWsgU3Vib3RhIi5zcGxpdCgiICIpfSxjYTp7bW9udGhzOiJHZW5lciBGZWJyZXIgTWFy5yBBYnJpbCBNYWlnIEp1bnkgSnVsaW9sIEFnb3N0IFNldGVtYnJlIE9jdHVicmUgTm92ZW1icmUgRGVzZW1icmUiLnNwbGl0KCIgIiksZGF5T2ZXZWVrU2hvcnQ6IkRnIERsIER0IERjIERqIER2IERzIi5zcGxpdCgiICIpLGRheU9mV2VlazoiRGl1bWVuZ2UgRGlsbHVucyBEaW1hcnRzIERpbWVjcmVzIERpam91cyBEaXZlbmRyZXMgRGlzc2FidGUiLnNwbGl0KCIgIil9LCJlbi1HQiI6e21vbnRoczoiSmFudWFyeSBGZWJydWFyeSBNYXJjaCBBcHJpbCBNYXkgSnVuZSBKdWx5IEF1Z3VzdCBTZXB0ZW1iZXIgT2N0b2JlciBOb3ZlbWJlciBEZWNlbWJlciIuc3BsaXQoIiAiKSwKZGF5T2ZXZWVrU2hvcnQ6IlN1biBNb24gVHVlIFdlZCBUaHUgRnJpIFNhdCIuc3BsaXQoIiAiKSxkYXlPZldlZWs6IlN1bmRheSBNb25kYXkgVHVlc2RheSBXZWRuZXNkYXkgVGh1cnNkYXkgRnJpZGF5IFNhdHVyZGF5Ii5zcGxpdCgiICIpfSxldDp7bW9udGhzOiJKYWFudWFyIFZlZWJydWFyIE3kcnRzIEFwcmlsbCBNYWkgSnV1bmkgSnV1bGkgQXVndXN0IFNlcHRlbWJlciBPa3Rvb2JlciBOb3ZlbWJlciBEZXRzZW1iZXIiLnNwbGl0KCIgIiksZGF5T2ZXZWVrU2hvcnQ6IlBFVEtOUkwiLnNwbGl0KCIiKSxkYXlPZldlZWs6IlD8aGFw5GV2IEVzbWFzcORldiBUZWlzaXDkZXYgS29sbWFw5GV2IE5lbGphcORldiBSZWVkZSBMYXVw5GV2Ii5zcGxpdCgiICIpfSxldTp7bW9udGhzOiJVcnRhcnJpbGEgT3RzYWlsYSBNYXJ0eG9hIEFwaXJpbGEgTWFpYXR6YSBFa2FpbmEgVXp0YWlsYSBBYnV6dHVhIElyYWlsYSBVcnJpYSBBemFyb2EgQWJlbmR1YSIuc3BsaXQoIiAiKSxkYXlPZldlZWtTaG9ydDoiSWcuIEFsLiBBci4gQXouIE9nLiBPci4gTGEuIi5zcGxpdCgiICIpLApkYXlPZldlZWs6IklnYW5kZWEgQXN0ZWxlaGVuYSBBc3RlYXJ0ZWEgQXN0ZWF6a2VuYSBPc3RlZ3VuYSBPc3RpcmFsYSBMYXJ1bmJhdGEiLnNwbGl0KCIgIil9LGZpOnttb250aHM6IlRhbW1pa3V1IEhlbG1pa3V1IE1hYWxpc2t1dSBIdWh0aWt1dSBUb3Vrb2t1dSBLZXPka3V1IEhlaW7ka3V1IEVsb2t1dSBTeXlza3V1IExva2FrdXUgTWFycmFza3V1IEpvdWx1a3V1Ii5zcGxpdCgiICIpLGRheU9mV2Vla1Nob3J0OiJTdSBNYSBUaSBLZSBUbyBQZSBMYSIuc3BsaXQoIiAiKSxkYXlPZldlZWs6InN1bm51bnRhaSBtYWFuYW50YWkgdGlpc3RhaSBrZXNraXZpaWtrbyB0b3JzdGFpIHBlcmphbnRhaSBsYXVhbnRhaSIuc3BsaXQoIiAiKX0sZ2w6e21vbnRoczoiWGFuIEZlYiBNYXogQWJyIE1haSBYdW4gWHVsIEFnbyBTZXQgT3V0IE5vdiBEZWMiLnNwbGl0KCIgIiksZGF5T2ZXZWVrU2hvcnQ6IkRvbSBMdW4gTWFyIE1lciBYb3YgVmVuIFNhYiIuc3BsaXQoIiAiKSxkYXlPZldlZWs6IkRvbWluZ28gTHVucyBNYXJ0ZXMgTelyY29yZXMgWG92ZXMgVmVucmVzIFPhYmFkbyIuc3BsaXQoIiAiKX0sCmhyOnttb250aHM6IlNpamU\/YW5qIFZlbGphP2EgTz91amFrIFRyYXZhbmogU3ZpYmFuaiBMaXBhbmogU3JwYW5qIEtvbG92b3ogUnVqYW4gTGlzdG9wYWQgU3R1ZGVuaSBQcm9zaW5hYyIuc3BsaXQoIiAiKSxkYXlPZldlZWtTaG9ydDoiTmVkIFBvbiBVdG8gU3JpID9ldCBQZXQgU3ViIi5zcGxpdCgiICIpLGRheU9mV2VlazoiTmVkamVsamEgUG9uZWRqZWxqYWsgVXRvcmFrIFNyaWplZGEgP2V0dnJ0YWsgUGV0YWsgU3Vib3RhIi5zcGxpdCgiICIpfSxrbzp7bW9udGhzOiIxPyAyPyAzPyA0PyA1PyA2PyA3PyA4PyA5PyAxMD8gMTE\/IDEyPyIuc3BsaXQoIiAiKSxkYXlPZldlZWtTaG9ydDoiPz8\/Pz8\/PyIuc3BsaXQoIiIpLGRheU9mV2VlazoiPz8\/ID8\/PyA\/Pz8gPz8\/ID8\/PyA\/Pz8gPz8\/Ii5zcGxpdCgiICIpfSxsdDp7bW9udGhzOiJTYXVzaW8gVmFzYXJpbyBLb3ZvIEJhbGFuZD9pbyBHZWd1Pz9zIEJpcj9lbGlvIExpZXBvcyBSdWdwaj8\/aW8gUnVncz9qbyBTcGFsaW8gTGFwa3JpP2lvIEdydW9kP2lvIi5zcGxpdCgiICIpLApkYXlPZldlZWtTaG9ydDoiU2VrIFBpciBBbnQgVHJlIEtldCBQZW4gP2U\/Ii5zcGxpdCgiICIpLGRheU9mV2VlazoiU2VrbWFkaWVuaXMgUGlybWFkaWVuaXMgQW50cmFkaWVuaXMgVHJlP2lhZGllbmlzIEtldHZpcnRhZGllbmlzIFBlbmt0YWRpZW5pcyA\/ZT90YWRpZW5pcyIuc3BsaXQoIiAiKX0sbHY6e21vbnRoczoiSmFudj9yaXM7RmVicnU\/cmlzO01hcnRzO0Fwcj9saXMgO01haWpzO0o\/bmlqcztKP2xpanM7QXVndXN0cztTZXB0ZW1icmlzO09rdG9icmlzO05vdmVtYnJpcztEZWNlbWJyaXMiLnNwbGl0KCI7IiksZGF5T2ZXZWVrU2hvcnQ6IlN2IFByIE90IFRyIEN0IFBrIFN0Ii5zcGxpdCgiICIpLGRheU9mV2VlazoiU3Y\/dGRpZW5hIFBpcm1kaWVuYSBPdHJkaWVuYSBUcmU\/ZGllbmEgQ2V0dXJ0ZGllbmEgUGlla3RkaWVuYSBTZXN0ZGllbmEiLnNwbGl0KCIgIil9LG1rOnttb250aHM6Ij8\/Pz8\/Pz8gPz8\/Pz8\/Pz8gPz8\/PyA\/Pz8\/PyA\/Pz8gPz8\/PyA\/Pz8\/ID8\/Pz8\/PyA\/Pz8\/Pz8\/Pz8gPz8\/Pz8\/Pz8gPz8\/Pz8\/PyA\/Pz8\/Pz8\/PyIuc3BsaXQoIiAiKSwKZGF5T2ZXZWVrU2hvcnQ6Ij8\/PyA\/Pz8gPz8\/ID8\/PyA\/Pz8gPz8\/ID8\/PyIuc3BsaXQoIiAiKSxkYXlPZldlZWs6Ij8\/Pz8\/PyA\/Pz8\/Pz8\/Pz8\/ID8\/Pz8\/Pz8gPz8\/Pz8gPz8\/Pz8\/Pz8gPz8\/Pz8gPz8\/Pz8\/Ii5zcGxpdCgiICIpfSxtbjp7bW9udGhzOiIxLT8gPz8\/OzItPyA\/Pz87My0\/ID8\/Pzs0LT8gPz8\/OzUtPyA\/Pz87Ni0\/ID8\/Pzs3LT8gPz8\/OzgtPyA\/Pz87OS0\/ID8\/PzsxMC0\/ID8\/PzsxMS0\/ID8\/PzsxMi0\/ID8\/PyIuc3BsaXQoIjsiKSxkYXlPZldlZWtTaG9ydDoiPz8\/ID8\/PyA\/Pz8gPz8\/ID8\/PyA\/Pz8gPz8\/Ii5zcGxpdCgiICIpLGRheU9mV2VlazoiPz8\/Pz8gPz8\/Pz8\/ID8\/Pz8\/PyA\/Pz8\/PyA\/Pz8\/Pz8gPz8\/Pz8gPz8\/Ii5zcGxpdCgiICIpfSwicHQtQlIiOnttb250aHM6IkphbmVpcm8gRmV2ZXJlaXJvIE1hcudvIEFicmlsIE1haW8gSnVuaG8gSnVsaG8gQWdvc3RvIFNldGVtYnJvIE91dHVicm8gTm92ZW1icm8gRGV6ZW1icm8iLnNwbGl0KCIgIiksZGF5T2ZXZWVrU2hvcnQ6IkRvbSBTZWcgVGVyIFF1YSBRdWkgU2V4IFPhYiIuc3BsaXQoIiAiKSwKZGF5T2ZXZWVrOiJEb21pbmdvIFNlZ3VuZGEgVGVy52EgUXVhcnRhIFF1aW50YSBTZXh0YSBT4WJhZG8iLnNwbGl0KCIgIil9LHNrOnttb250aHM6IkphbnXhciBGZWJydeFyIE1hcmVjIEFwcu1sIE3haiBK+m4gSvpsIEF1Z3VzdCBTZXB0ZW1iZXIgT2t082JlciBOb3ZlbWJlciBEZWNlbWJlciIuc3BsaXQoIiAiKSxkYXlPZldlZWtTaG9ydDoiTmUgUG8gVXQgU3QgP3QgUGkgU28iLnNwbGl0KCIgIiksZGF5T2ZXZWVrOiJOZWRlP2EgUG9uZGVsb2sgVXRvcm9rIFN0cmVkYSA\/dHZydG9rIFBpYXRvayBTb2JvdGEiLnNwbGl0KCIgIil9LHNxOnttb250aHM6IkphbmFyIFNoa3VydCBNYXJzIFByaWxsIE1haiBRZXJzaG9yIEtvcnJpayBHdXNodCBTaHRhdG9yIFRldG9yIE7rbnRvciBEaGpldG9yIi5zcGxpdCgiICIpLGRheU9mV2Vla1Nob3J0OiJEaWUgSOtuIE1hciBN63IgRW5qIFByZSBTaHR1Ii5zcGxpdCgiICIpLGRheU9mV2VlazoiRSBEaWVsO0UgSOtu6ztFIE1hcnQ\/O0UgTetya3Vy6ztFIEVuanRlO0UgUHJlbXRlO0UgU2h0dW7rIi5zcGxpdCgiOyIpfSwKInNyLVlVIjp7bW9udGhzOiJKYW51YXIgRmVicnVhciBNYXJ0IEFwcmlsIE1haiBKdW4gSnVsIEF2Z3VzdCBTZXB0ZW1iYXIgT2t0b2JhciBOb3ZlbWJhciBEZWNlbWJhciIuc3BsaXQoIiAiKSxkYXlPZldlZWtTaG9ydDoiTmVkIFBvbiBVdG8gU3JlID9ldCBQZXQgU3ViIi5zcGxpdCgiICIpLGRheU9mV2VlazoiTmVkZWxqYSBQb25lZGVsamFrIFV0b3JhayBTcmVkYSA\/ZXR2cnRhayBQZXRhayBTdWJvdGEiLnNwbGl0KCIgIil9LHNyOnttb250aHM6Ij8\/Pz8\/PyA\/Pz8\/Pz8\/ID8\/Pz8gPz8\/Pz8gPz8\/ID8\/PyA\/Pz8gPz8\/Pz8\/ID8\/Pz8\/Pz8\/PyA\/Pz8\/Pz8\/ID8\/Pz8\/Pz8\/ID8\/Pz8\/Pz8\/Ii5zcGxpdCgiICIpLGRheU9mV2Vla1Nob3J0OiI\/Pz8gPz8\/ID8\/PyA\/Pz8gPz8\/ID8\/PyA\/Pz8iLnNwbGl0KCIgIiksZGF5T2ZXZWVrOiI\/Pz8\/Pz8gPz8\/Pz8\/Pz8\/ID8\/Pz8\/PyA\/Pz8\/PyA\/Pz8\/Pz8\/PyA\/Pz8\/PyA\/Pz8\/Pz8iLnNwbGl0KCIgIil9LHN2Onttb250aHM6IkphbnVhcmkgRmVicnVhcmkgTWFycyBBcHJpbCBNYWogSnVuaSBKdWxpIEF1Z3VzdGkgU2VwdGVtYmVyIE9rdG9iZXIgTm92ZW1iZXIgRGVjZW1iZXIiLnNwbGl0KCIgIiksCmRheU9mV2Vla1Nob3J0OiJT9m4gTeVuIFRpcyBPbnMgVG9yIEZyZSBM9nIiLnNwbGl0KCIgIiksZGF5T2ZXZWVrOiJT9m5kYWcgTeVuZGFnIFRpc2RhZyBPbnNkYWcgVG9yc2RhZyBGcmVkYWcgTPZyZGFnIi5zcGxpdCgiICIpfSwiemgtVFciOnttb250aHM6Ij8\/ID8\/ID8\/ID8\/ID8\/ID8\/ID8\/ID8\/ID8\/ID8\/ID8\/PyA\/Pz8iLnNwbGl0KCIgIiksZGF5T2ZXZWVrU2hvcnQ6Ij8\/Pz8\/Pz8iLnNwbGl0KCIiKSxkYXlPZldlZWs6Ij8\/PyA\/Pz8gPz8\/ID8\/PyA\/Pz8gPz8\/ID8\/PyIuc3BsaXQoIiAiKX0semg6e21vbnRoczoiPz8gPz8gPz8gPz8gPz8gPz8gPz8gPz8gPz8gPz8gPz8\/ID8\/PyIuc3BsaXQoIiAiKSxkYXlPZldlZWtTaG9ydDoiPz8\/Pz8\/PyIuc3BsaXQoIiIpLGRheU9mV2VlazoiPz8\/ID8\/PyA\/Pz8gPz8\/ID8\/PyA\/Pz8gPz8\/Ii5zcGxpdCgiICIpfSxoZTp7bW9udGhzOiI\/Pz8\/PyA\/Pz8\/Pz8gPz8\/ID8\/Pz8\/ID8\/PyA\/Pz8\/ID8\/Pz8gPz8\/Pz8\/ID8\/Pz8\/PyA\/Pz8\/Pz8\/ID8\/Pz8\/PyA\/Pz8\/PyIuc3BsaXQoIiAiKSwKZGF5T2ZXZWVrU2hvcnQ6Ij8nID8nID8nID8nID8nID8nID8\/PyIuc3BsaXQoIiAiKSxkYXlPZldlZWs6Ij8\/Pz8\/ID8\/PyA\/Pz8\/PyA\/Pz8\/PyA\/Pz8\/PyA\/Pz8\/ID8\/PyA\/Pz8\/PyIuc3BsaXQoIiAiKX0saHk6e21vbnRoczoiPz8\/Pz8\/PyA\/Pz8\/Pz8\/ID8\/Pz8gPz8\/Pz8gPz8\/Pz8gPz8\/Pz8\/ID8\/Pz8\/PyA\/Pz8\/Pz8\/ID8\/Pz8\/Pz8\/PyA\/Pz8\/Pz8\/Pz8gPz8\/Pz8\/Pz8gPz8\/Pz8\/Pz8\/Ii5zcGxpdCgiICIpLGRheU9mV2Vla1Nob3J0OiI\/PyA\/Pz8gPz8\/ID8\/PyA\/Pz8gPz8\/PyA\/Pz8iLnNwbGl0KCIgIiksZGF5T2ZXZWVrOiI\/Pz8\/Pz8gPz8\/Pz8\/Pz8\/PyA\/Pz8\/Pz8\/Pz8gPz8\/Pz8\/Pz8\/PyA\/Pz8\/Pz8\/Pz8gPz8\/Pz8\/ID8\/Pz8\/Ii5zcGxpdCgiICIpfSxrZzp7bW9udGhzOiI\/Pz8\/PyA\/Pz87Pz8\/Pz8\/ID8\/Pzs\/Pz8\/Pz8gPz8\/Pz87Pz8\/ID8\/Pz8\/Oz8\/Pz87Pz8\/Pz87Pz8\/Pzs\/Pz8gPz8\/Pzs\/Pz8gPz8\/Pzs\/Pz8\/Pz8\/PyA\/Pz87Pz8\/Pz8\/PyA\/Pz87Pz8\/Pz8\/ID8\/PyIuc3BsaXQoIjsiKSwKZGF5T2ZXZWVrU2hvcnQ6Ij8\/PyA\/Pz8gPz8\/ID8\/PyA\/Pz8gPz8\/ID8\/PyIuc3BsaXQoIiAiKSxkYXlPZldlZWs6Ij8\/Pz8\/Pz8gPz8\/Pz8\/PyA\/Pz8\/Pz8\/ID8\/Pz8\/Pz8gPz8\/Pz8\/Pz8gPz8\/PyA\/Pz8\/PyIuc3BsaXQoIiAiKX19LHZhbHVlOiIiLHJ0bDohMSxmb3JtYXQ6IlkvbS9kIEg6aSIsZm9ybWF0VGltZToiSDppIixmb3JtYXREYXRlOiJZL20vZCIsc3RhcnREYXRlOiExLHN0ZXA6NjAsbW9udGhDaGFuZ2VTcGlubmVyOiEwLGNsb3NlT25EYXRlU2VsZWN0OiExLGNsb3NlT25UaW1lU2VsZWN0OiEwLGNsb3NlT25XaXRob3V0Q2xpY2s6ITAsY2xvc2VPbklucHV0Q2xpY2s6ITAsdGltZXBpY2tlcjohMCxkYXRlcGlja2VyOiEwLHdlZWtzOiExLGRlZmF1bHRUaW1lOiExLGRlZmF1bHREYXRlOiExLG1pbkRhdGU6ITEsbWF4RGF0ZTohMSxtaW5UaW1lOiExLG1heFRpbWU6ITEsZGlzYWJsZWRNaW5UaW1lOiExLGRpc2FibGVkTWF4VGltZTohMSxhbGxvd1RpbWVzOltdLG9wZW5lZDohMSwKaW5pdFRpbWU6ITAsaW5saW5lOiExLHRoZW1lOiIiLG9uU2VsZWN0RGF0ZTpmdW5jdGlvbigpe30sb25TZWxlY3RUaW1lOmZ1bmN0aW9uKCl7fSxvbkNoYW5nZU1vbnRoOmZ1bmN0aW9uKCl7fSxvbkNoYW5nZVllYXI6ZnVuY3Rpb24oKXt9LG9uQ2hhbmdlRGF0ZVRpbWU6ZnVuY3Rpb24oKXt9LG9uU2hvdzpmdW5jdGlvbigpe30sb25DbG9zZTpmdW5jdGlvbigpe30sb25HZW5lcmF0ZTpmdW5jdGlvbigpe30sd2l0aG91dENvcHlyaWdodDohMCxpbnZlcnNlQnV0dG9uOiExLGhvdXJzMTI6ITEsbmV4dDoieGRzb2Z0X25leHQiLHByZXY6Inhkc29mdF9wcmV2IixkYXlPZldlZWtTdGFydDowLHBhcmVudElEOiJib2R5Iix0aW1lSGVpZ2h0SW5UaW1lUGlja2VyOjI1LHRpbWVwaWNrZXJTY3JvbGxiYXI6ITAsdG9kYXlCdXR0b246ITAscHJldkJ1dHRvbjohMCxuZXh0QnV0dG9uOiEwLGRlZmF1bHRTZWxlY3Q6ITAsc2Nyb2xsTW9udGg6ITAsc2Nyb2xsVGltZTohMCxzY3JvbGxJbnB1dDohMCwKbGF6eUluaXQ6ITEsbWFzazohMSx2YWxpZGF0ZU9uQmx1cjohMCxhbGxvd0JsYW5rOiEwLHllYXJTdGFydDoxOTUwLHllYXJFbmQ6MjA1MCxtb250aFN0YXJ0OjAsbW9udGhFbmQ6MTEsc3R5bGU6IiIsaWQ6IiIsZml4ZWQ6ITEscm91bmRUaW1lOiJyb3VuZCIsY2xhc3NOYW1lOiIiLHdlZWtlbmRzOltdLGhpZ2hsaWdodGVkRGF0ZXM6W10saGlnaGxpZ2h0ZWRQZXJpb2RzOltdLGRpc2FibGVkRGF0ZXM6W10sZGlzYWJsZWRXZWVrRGF5czpbXSx5ZWFyT2Zmc2V0OjAsYmVmb3JlU2hvd0RheTpudWxsLGVudGVyTGlrZVRhYjohMCxzaG93QXBwbHlCdXR0b246ITF9LEc9ImVuIjtmLmRhdGV0aW1lcGlja2VyPXtzZXRMb2NhbGU6ZnVuY3Rpb24ocil7Rz1KLmkxOG5bcl0\/cjoiZW4iO0RhdGUubW9udGhOYW1lcz1KLmkxOG5bR10ubW9udGhzO0RhdGUuZGF5TmFtZXM9Si5pMThuW0ddLmRheU9mV2Vla319O3dpbmRvdy5nZXRDb21wdXRlZFN0eWxlfHwod2luZG93LmdldENvbXB1dGVkU3R5bGU9CmZ1bmN0aW9uKHIsdil7dGhpcy5lbD1yO3RoaXMuZ2V0UHJvcGVydHlWYWx1ZT1mdW5jdGlvbihhKXt2YXIgRD0vKFwtKFthLXpdKXsxfSkvZzsiZmxvYXQiPT09YSYmKGE9InN0eWxlRmxvYXQiKTtELnRlc3QoYSkmJihhPWEucmVwbGFjZShELGZ1bmN0aW9uKEksZyxlKXtyZXR1cm4gZS50b1VwcGVyQ2FzZSgpfSkpO3JldHVybiByLmN1cnJlbnRTdHlsZVthXXx8bnVsbH07cmV0dXJuIHRoaXN9KTtBcnJheS5wcm90b3R5cGUuaW5kZXhPZnx8KEFycmF5LnByb3RvdHlwZS5pbmRleE9mPWZ1bmN0aW9uKHIsdil7dmFyIGE7dj12fHwwO2ZvcihhPXRoaXMubGVuZ3RoO3Y8YTt2Kz0xKWlmKHRoaXNbdl09PT1yKXJldHVybiB2O3JldHVybi0xfSk7RGF0ZS5wcm90b3R5cGUuY291bnREYXlzSW5Nb250aD1mdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZSh0aGlzLmdldEZ1bGxZZWFyKCksdGhpcy5nZXRNb250aCgpKzEsMCkpLmdldERhdGUoKX07Zi5mbi54ZHNvZnRTY3JvbGxlcj1mdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIHY9CmYodGhpcyksYT1mdW5jdGlvbihwKXt2YXIgQj17eDowLHk6MH07aWYoInRvdWNoc3RhcnQiPT09cC50eXBlfHwidG91Y2htb3ZlIj09PXAudHlwZXx8InRvdWNoZW5kIj09PXAudHlwZXx8InRvdWNoY2FuY2VsIj09PXAudHlwZSlwPXAub3JpZ2luYWxFdmVudC50b3VjaGVzWzBdfHxwLm9yaWdpbmFsRXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0sQi54PXAuY2xpZW50WCxCLnk9cC5jbGllbnRZO2Vsc2UgaWYoIm1vdXNlZG93biI9PT1wLnR5cGV8fCJtb3VzZXVwIj09PXAudHlwZXx8Im1vdXNlbW92ZSI9PT1wLnR5cGV8fCJtb3VzZW92ZXIiPT09cC50eXBlfHwibW91c2VvdXQiPT09cC50eXBlfHwibW91c2VlbnRlciI9PT1wLnR5cGV8fCJtb3VzZWxlYXZlIj09PXAudHlwZSlCLng9cC5jbGllbnRYLEIueT1wLmNsaWVudFk7cmV0dXJuIEJ9LEQ9MTAwLEk9ITEsZz0wLGU9MCxoPTAsYz0hMSx0PTAsdT1mdW5jdGlvbigpe307aWYoImhpZGUiPT09cil2LmZpbmQoIi54ZHNvZnRfc2Nyb2xsYmFyIikuaGlkZSgpOwplbHNle2lmKCFmKHRoaXMpLmhhc0NsYXNzKCJ4ZHNvZnRfc2Nyb2xsZXJfYm94Iikpe3ZhciB3PXYuY2hpbGRyZW4oKS5lcSgwKSxFPXZbMF0uY2xpZW50SGVpZ2h0LEM9d1swXS5vZmZzZXRIZWlnaHQseT1mKCc8ZGl2IGNsYXNzPSJ4ZHNvZnRfc2Nyb2xsYmFyIj48L2Rpdj4nKSx6PWYoJzxkaXYgY2xhc3M9Inhkc29mdF9zY3JvbGxlciI+PC9kaXY+Jyk7eS5hcHBlbmQoeik7di5hZGRDbGFzcygieGRzb2Z0X3Njcm9sbGVyX2JveCIpLmFwcGVuZCh5KTt1PWZ1bmN0aW9uKHApe3A9YShwKS55LWcrdDswPnAmJihwPTApO3ArelswXS5vZmZzZXRIZWlnaHQ+aCYmKHA9aC16WzBdLm9mZnNldEhlaWdodCk7di50cmlnZ2VyKCJzY3JvbGxfZWxlbWVudC54ZHNvZnRfc2Nyb2xsZXIiLFtEP3AvRDowXSl9O3oub24oInRvdWNoc3RhcnQueGRzb2Z0X3Njcm9sbGVyIG1vdXNlZG93bi54ZHNvZnRfc2Nyb2xsZXIiLGZ1bmN0aW9uKHApe0V8fHYudHJpZ2dlcigicmVzaXplX3Njcm9sbC54ZHNvZnRfc2Nyb2xsZXIiLApbcl0pO2c9YShwKS55O3Q9cGFyc2VJbnQoei5jc3MoIm1hcmdpbi10b3AiKSwxMCk7aD15WzBdLm9mZnNldEhlaWdodDsibW91c2Vkb3duIj09PXAudHlwZT8oZG9jdW1lbnQmJmYoZG9jdW1lbnQuYm9keSkuYWRkQ2xhc3MoInhkc29mdF9ub3NlbGVjdCIpLGYoW2RvY3VtZW50LmJvZHksd2luZG93XSkub24oIm1vdXNldXAueGRzb2Z0X3Njcm9sbGVyIixmdW5jdGlvbiBOKCl7ZihbZG9jdW1lbnQuYm9keSx3aW5kb3ddKS5vZmYoIm1vdXNldXAueGRzb2Z0X3Njcm9sbGVyIixOKS5vZmYoIm1vdXNlbW92ZS54ZHNvZnRfc2Nyb2xsZXIiLHUpLnJlbW92ZUNsYXNzKCJ4ZHNvZnRfbm9zZWxlY3QiKX0pLGYoZG9jdW1lbnQuYm9keSkub24oIm1vdXNlbW92ZS54ZHNvZnRfc2Nyb2xsZXIiLHUpKTooYz0hMCxwLnN0b3BQcm9wYWdhdGlvbigpLHAucHJldmVudERlZmF1bHQoKSl9KS5vbigidG91Y2htb3ZlIixmdW5jdGlvbihwKXtjJiYocC5wcmV2ZW50RGVmYXVsdCgpLHUocCkpfSkub24oInRvdWNoZW5kIHRvdWNoY2FuY2VsIiwKZnVuY3Rpb24ocCl7Yz0hMTt0PTB9KTt2Lm9uKCJzY3JvbGxfZWxlbWVudC54ZHNvZnRfc2Nyb2xsZXIiLGZ1bmN0aW9uKHAsQil7RXx8di50cmlnZ2VyKCJyZXNpemVfc2Nyb2xsLnhkc29mdF9zY3JvbGxlciIsW0IsITBdKTtCPTE8Qj8xOjA+Qnx8aXNOYU4oQik\/MDpCO3ouY3NzKCJtYXJnaW4tdG9wIixEKkIpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXt3LmNzcygibWFyZ2luVG9wIiwtcGFyc2VJbnQoKHdbMF0ub2Zmc2V0SGVpZ2h0LUUpKkIsMTApKX0sMTApfSkub24oInJlc2l6ZV9zY3JvbGwueGRzb2Z0X3Njcm9sbGVyIixmdW5jdGlvbihwLEIsTil7RT12WzBdLmNsaWVudEhlaWdodDtDPXdbMF0ub2Zmc2V0SGVpZ2h0O3A9RS9DO3ZhciBPPXAqeVswXS5vZmZzZXRIZWlnaHQ7MTxwP3ouaGlkZSgpOih6LnNob3coKSx6LmNzcygiaGVpZ2h0IixwYXJzZUludCgxMDxPP086MTAsMTApKSxEPXlbMF0ub2Zmc2V0SGVpZ2h0LXpbMF0ub2Zmc2V0SGVpZ2h0LCEwIT09TiYmdi50cmlnZ2VyKCJzY3JvbGxfZWxlbWVudC54ZHNvZnRfc2Nyb2xsZXIiLApbQnx8TWF0aC5hYnMocGFyc2VJbnQody5jc3MoIm1hcmdpblRvcCIpLDEwKSkvKEMtRSldKSl9KTt2Lm9uKCJtb3VzZXdoZWVsIixmdW5jdGlvbihwKXt2YXIgQj1NYXRoLmFicyhwYXJzZUludCh3LmNzcygibWFyZ2luVG9wIiksMTApKTtCLT0yMCpwLmRlbHRhWTswPkImJihCPTApO3YudHJpZ2dlcigic2Nyb2xsX2VsZW1lbnQueGRzb2Z0X3Njcm9sbGVyIixbQi8oQy1FKV0pO3Auc3RvcFByb3BhZ2F0aW9uKCk7cmV0dXJuITF9KTt2Lm9uKCJ0b3VjaHN0YXJ0IixmdW5jdGlvbihwKXtJPWEocCk7ZT1NYXRoLmFicyhwYXJzZUludCh3LmNzcygibWFyZ2luVG9wIiksMTApKX0pO3Yub24oInRvdWNobW92ZSIsZnVuY3Rpb24ocCl7SSYmKHAucHJldmVudERlZmF1bHQoKSxwPWEocCksdi50cmlnZ2VyKCJzY3JvbGxfZWxlbWVudC54ZHNvZnRfc2Nyb2xsZXIiLFsoZS0ocC55LUkueSkpLyhDLUUpXSkpfSk7di5vbigidG91Y2hlbmQgdG91Y2hjYW5jZWwiLGZ1bmN0aW9uKHApe0k9ITE7CmU9MH0pfXYudHJpZ2dlcigicmVzaXplX3Njcm9sbC54ZHNvZnRfc2Nyb2xsZXIiLFtyXSl9fSl9O2YuZm4uZGF0ZXRpbWVwaWNrZXI9ZnVuY3Rpb24ocil7dmFyIHY9ITEsYT1mLmlzUGxhaW5PYmplY3Qocil8fCFyP2YuZXh0ZW5kKCEwLHt9LEoscik6Zi5leHRlbmQoITAse30sSiksRD0wLEk9ZnVuY3Rpb24oZSl7ZS5vbigib3Blbi54ZHNvZnQgZm9jdXNpbi54ZHNvZnQgbW91c2Vkb3duLnhkc29mdCIsZnVuY3Rpb24gdChjKXtlLmlzKCI6ZGlzYWJsZWQiKXx8ZS5kYXRhKCJ4ZHNvZnRfZGF0ZXRpbWVwaWNrZXIiKXx8KGNsZWFyVGltZW91dChEKSxEPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtlLmRhdGEoInhkc29mdF9kYXRldGltZXBpY2tlciIpfHxnKGUpO2Uub2ZmKCJvcGVuLnhkc29mdCBmb2N1c2luLnhkc29mdCBtb3VzZWRvd24ueGRzb2Z0Iix0KS50cmlnZ2VyKCJvcGVuLnhkc29mdCIpfSwxMDApKX0pfSxnPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIGgoKXtpZihhLnN0YXJ0RGF0ZSl2YXIgYj0KbC5zdHJUb0RhdGUoYS5zdGFydERhdGUpO2Vsc2UgaWYoYj1hLnZhbHVlfHwoZSYmZS52YWwmJmUudmFsKCk\/ZS52YWwoKToiIikpYj1sLnN0clRvRGF0ZVRpbWUoYik7ZWxzZSBpZihhLmRlZmF1bHREYXRlJiYoYj1sLnN0clRvRGF0ZVRpbWUoYS5kZWZhdWx0RGF0ZSksYS5kZWZhdWx0VGltZSkpe3ZhciBkPWwuc3RydG90aW1lKGEuZGVmYXVsdFRpbWUpO2Iuc2V0SG91cnMoZC5nZXRIb3VycygpKTtiLnNldE1pbnV0ZXMoZC5nZXRNaW51dGVzKCkpfWImJmwuaXNWYWxpZERhdGUoYik\/Yy5kYXRhKCJjaGFuZ2VkIiwhMCk6Yj0iIjtyZXR1cm4gYnx8MH12YXIgYz1mKCc8ZGl2IGNsYXNzPSJ4ZHNvZnRfZGF0ZXRpbWVwaWNrZXIgeGRzb2Z0X25vc2VsZWN0Ij48L2Rpdj4nKSx0PWYoJzxkaXYgY2xhc3M9Inhkc29mdF9jb3B5cmlnaHQiPjxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwOi8veGRzb2Z0Lm5ldC9qcXBsdWdpbnMvZGF0ZXRpbWVwaWNrZXIvIj54ZHNvZnQubmV0PC9hPjwvZGl2PicpLAp1PWYoJzxkaXYgY2xhc3M9Inhkc29mdF9kYXRlcGlja2VyIGFjdGl2ZSI+PC9kaXY+Jyksdz1mKCc8ZGl2IGNsYXNzPSJ4ZHNvZnRfbW91bnRocGlja2VyIj48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Inhkc29mdF9wcmV2Ij48L2J1dHRvbj48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Inhkc29mdF90b2RheV9idXR0b24iPjwvYnV0dG9uPjxkaXYgY2xhc3M9Inhkc29mdF9sYWJlbCB4ZHNvZnRfbW9udGgiPjxzcGFuPjwvc3Bhbj48aT48L2k+PC9kaXY+PGRpdiBjbGFzcz0ieGRzb2Z0X2xhYmVsIHhkc29mdF95ZWFyIj48c3Bhbj48L3NwYW4+PGk+PC9pPjwvZGl2PjxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0ieGRzb2Z0X25leHQiPjwvYnV0dG9uPjwvZGl2PicpLEU9ZignPGRpdiBjbGFzcz0ieGRzb2Z0X2NhbGVuZGFyIj48L2Rpdj4nKSxDPWYoJzxkaXYgY2xhc3M9Inhkc29mdF90aW1lcGlja2VyIGFjdGl2ZSI+PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJ4ZHNvZnRfcHJldiI+PC9idXR0b24+PGRpdiBjbGFzcz0ieGRzb2Z0X3RpbWVfYm94Ij48L2Rpdj48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Inhkc29mdF9uZXh0Ij48L2J1dHRvbj48L2Rpdj4nKSwKeT1DLmZpbmQoIi54ZHNvZnRfdGltZV9ib3giKS5lcSgwKSx6PWYoJzxkaXYgY2xhc3M9Inhkc29mdF90aW1lX3ZhcmlhbnQiPjwvZGl2PicpLHA9ZignPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJ4ZHNvZnRfc2F2ZV9zZWxlY3RlZCBibHVlLWdyYWRpZW50LWJ1dHRvbiI+U2F2ZSBTZWxlY3RlZDwvYnV0dG9uPicpLEI9ZignPGRpdiBjbGFzcz0ieGRzb2Z0X3NlbGVjdCB4ZHNvZnRfbW9udGhzZWxlY3QiPjxkaXY+PC9kaXY+PC9kaXY+JyksTj1mKCc8ZGl2IGNsYXNzPSJ4ZHNvZnRfc2VsZWN0IHhkc29mdF95ZWFyc2VsZWN0Ij48ZGl2PjwvZGl2PjwvZGl2PicpLE89ITEsVz0wO2EuaWQmJmMuYXR0cigiaWQiLGEuaWQpO2Euc3R5bGUmJmMuYXR0cigic3R5bGUiLGEuc3R5bGUpO2Eud2Vla3MmJmMuYWRkQ2xhc3MoInhkc29mdF9zaG93d2Vla3MiKTthLnJ0bCYmYy5hZGRDbGFzcygieGRzb2Z0X3J0bCIpO2MuYWRkQ2xhc3MoInhkc29mdF8iK2EudGhlbWUpO2MuYWRkQ2xhc3MoYS5jbGFzc05hbWUpOwp3LmZpbmQoIi54ZHNvZnRfbW9udGggc3BhbiIpLmFmdGVyKEIpO3cuZmluZCgiLnhkc29mdF95ZWFyIHNwYW4iKS5hZnRlcihOKTt3LmZpbmQoIi54ZHNvZnRfbW9udGgsLnhkc29mdF95ZWFyIikub24oIm1vdXNlZG93bi54ZHNvZnQiLGZ1bmN0aW9uKGIpe3ZhciBkPWYodGhpcykuZmluZCgiLnhkc29mdF9zZWxlY3QiKS5lcSgwKSxrPTAsbj0wLG09ZC5pcygiOnZpc2libGUiKSxxO3cuZmluZCgiLnhkc29mdF9zZWxlY3QiKS5oaWRlKCk7bC5jdXJyZW50VGltZSYmKGs9bC5jdXJyZW50VGltZVtmKHRoaXMpLmhhc0NsYXNzKCJ4ZHNvZnRfbW9udGgiKT8iZ2V0TW9udGgiOiJnZXRGdWxsWWVhciJdKCkpO2RbbT8iaGlkZSI6InNob3ciXSgpO209ZC5maW5kKCJkaXYueGRzb2Z0X29wdGlvbiIpO2ZvcihxPTA7cTxtLmxlbmd0aCYmbS5lcShxKS5kYXRhKCJ2YWx1ZSIpIT09aztxKz0xKW4rPW1bMF0ub2Zmc2V0SGVpZ2h0O2QueGRzb2Z0U2Nyb2xsZXIobi8oZC5jaGlsZHJlbigpWzBdLm9mZnNldEhlaWdodC0KZFswXS5jbGllbnRIZWlnaHQpKTtiLnN0b3BQcm9wYWdhdGlvbigpO3JldHVybiExfSk7dy5maW5kKCIueGRzb2Z0X3NlbGVjdCIpLnhkc29mdFNjcm9sbGVyKCkub24oIm1vdXNlZG93bi54ZHNvZnQiLGZ1bmN0aW9uKGIpe2Iuc3RvcFByb3BhZ2F0aW9uKCk7Yi5wcmV2ZW50RGVmYXVsdCgpfSkub24oIm1vdXNlZG93bi54ZHNvZnQiLCIueGRzb2Z0X29wdGlvbiIsZnVuY3Rpb24oYil7aWYodm9pZCAwPT09bC5jdXJyZW50VGltZXx8bnVsbD09PWwuY3VycmVudFRpbWUpbC5jdXJyZW50VGltZT1sLm5vdygpO2I9bC5jdXJyZW50VGltZS5nZXRGdWxsWWVhcigpO2lmKGwmJmwuY3VycmVudFRpbWUpbC5jdXJyZW50VGltZVtmKHRoaXMpLnBhcmVudCgpLnBhcmVudCgpLmhhc0NsYXNzKCJ4ZHNvZnRfbW9udGhzZWxlY3QiKT8ic2V0TW9udGgiOiJzZXRGdWxsWWVhciJdKGYodGhpcykuZGF0YSgidmFsdWUiKSk7Zih0aGlzKS5wYXJlbnQoKS5wYXJlbnQoKS5oaWRlKCk7Yy50cmlnZ2VyKCJ4Y2hhbmdlLnhkc29mdCIpOwphLm9uQ2hhbmdlTW9udGgmJmlzRnVuY3Rpb24oYS5vbkNoYW5nZU1vbnRoKSYmYS5vbkNoYW5nZU1vbnRoLmNhbGwoYyxsLmN1cnJlbnRUaW1lLGMuZGF0YSgiaW5wdXQiKSk7YiE9PWwuY3VycmVudFRpbWUuZ2V0RnVsbFllYXIoKSYmaXNGdW5jdGlvbihhLm9uQ2hhbmdlWWVhcikmJmEub25DaGFuZ2VZZWFyLmNhbGwoYyxsLmN1cnJlbnRUaW1lLGMuZGF0YSgiaW5wdXQiKSl9KTtjLnNldE9wdGlvbnM9ZnVuY3Rpb24oYil7dmFyIGQ9e30saz1mdW5jdGlvbihuLG0pe249bi5yZXBsYWNlKC8oW1xbXF1cL1x7XH1cKFwpXC1cLlwrXXsxfSkvZywiXFwkMSIpLnJlcGxhY2UoL18vZywie2RpZ2l0K30iKS5yZXBsYWNlKC8oWzAtOV17MX0pL2csIntkaWdpdCQxfSIpLnJlcGxhY2UoL1x7ZGlnaXQoWzAtOV17MX0pXH0vZywiWzAtJDFfXXsxfSIpLnJlcGxhY2UoL1x7ZGlnaXRbXCtdXH0vZywiWzAtOV9dezF9Iik7cmV0dXJuKG5ldyBSZWdFeHAobikpLnRlc3QobSl9O2E9Zi5leHRlbmQoITAsCnt9LGEsYik7Yi5hbGxvd1RpbWVzJiZBcnJheS5pc0FycmF5KGIuYWxsb3dUaW1lcykmJmIuYWxsb3dUaW1lcy5sZW5ndGgmJihhLmFsbG93VGltZXM9Zi5leHRlbmQoITAsW10sYi5hbGxvd1RpbWVzKSk7Yi53ZWVrZW5kcyYmQXJyYXkuaXNBcnJheShiLndlZWtlbmRzKSYmYi53ZWVrZW5kcy5sZW5ndGgmJihhLndlZWtlbmRzPWYuZXh0ZW5kKCEwLFtdLGIud2Vla2VuZHMpKTtiLmhpZ2hsaWdodGVkRGF0ZXMmJkFycmF5LmlzQXJyYXkoYi5oaWdobGlnaHRlZERhdGVzKSYmYi5oaWdobGlnaHRlZERhdGVzLmxlbmd0aCYmKGYuZWFjaChiLmhpZ2hsaWdodGVkRGF0ZXMsZnVuY3Rpb24obixtKXtuPWYubWFwKG0uc3BsaXQoIiwiKSxmLnRyaW0pO209bmV3IE0oRGF0ZS5wYXJzZURhdGUoblswXSxhLmZvcm1hdERhdGUpLG5bMV0sblsyXSk7dmFyIHE9bS5kYXRlLmRhdGVGb3JtYXQoYS5mb3JtYXREYXRlKTt2b2lkIDAhPT1kW3FdPyhuPWRbcV0uZGVzYykmJm4ubGVuZ3RoJiZtLmRlc2MmJgptLmRlc2MubGVuZ3RoJiYoZFtxXS5kZXNjPW4rIlxuIittLmRlc2MpOmRbcV09bX0pLGEuaGlnaGxpZ2h0ZWREYXRlcz1mLmV4dGVuZCghMCxbXSxkKSk7Yi5oaWdobGlnaHRlZFBlcmlvZHMmJkFycmF5LmlzQXJyYXkoYi5oaWdobGlnaHRlZFBlcmlvZHMpJiZiLmhpZ2hsaWdodGVkUGVyaW9kcy5sZW5ndGgmJihkPWYuZXh0ZW5kKCEwLFtdLGEuaGlnaGxpZ2h0ZWREYXRlcyksZi5lYWNoKGIuaGlnaGxpZ2h0ZWRQZXJpb2RzLGZ1bmN0aW9uKG4sbSl7dmFyIHE7aWYoQXJyYXkuaXNBcnJheShtKSl7bj1tWzBdO3ZhciB4PW1bMV0sRj1tWzJdLEE9bVszXX1lbHNlIG09Zi5tYXAobS5zcGxpdCgiLCIpLGYudHJpbSksbj1EYXRlLnBhcnNlRGF0ZShtWzBdLGEuZm9ybWF0RGF0ZSkseD1EYXRlLnBhcnNlRGF0ZShtWzFdLGEuZm9ybWF0RGF0ZSksRj1tWzJdLEE9bVszXTtmb3IoO248PXg7KXttPW5ldyBNKG4sRixBKTt2YXIgSD1uLmRhdGVGb3JtYXQoYS5mb3JtYXREYXRlKTtuLnNldERhdGUobi5nZXREYXRlKCkrCjEpO3ZvaWQgMCE9PWRbSF0\/KHE9ZFtIXS5kZXNjKSYmcS5sZW5ndGgmJm0uZGVzYyYmbS5kZXNjLmxlbmd0aCYmKGRbSF0uZGVzYz1xKyJcbiIrbS5kZXNjKTpkW0hdPW19fSksYS5oaWdobGlnaHRlZERhdGVzPWYuZXh0ZW5kKCEwLFtdLGQpKTtiLmRpc2FibGVkRGF0ZXMmJkFycmF5LmlzQXJyYXkoYi5kaXNhYmxlZERhdGVzKSYmYi5kaXNhYmxlZERhdGVzLmxlbmd0aCYmKGEuZGlzYWJsZWREYXRlcz1mLmV4dGVuZCghMCxbXSxiLmRpc2FibGVkRGF0ZXMpKTtiLmRpc2FibGVkV2Vla0RheXMmJkFycmF5LmlzQXJyYXkoYi5kaXNhYmxlZFdlZWtEYXlzKSYmYi5kaXNhYmxlZFdlZWtEYXlzLmxlbmd0aCYmKGEuZGlzYWJsZWRXZWVrRGF5cz1mLmV4dGVuZCghMCxbXSxiLmRpc2FibGVkV2Vla0RheXMpKTshYS5vcGVuJiYhYS5vcGVuZWR8fGEuaW5saW5lfHxlLnRyaWdnZXIoIm9wZW4ueGRzb2Z0Iik7YS5pbmxpbmUmJihPPSEwLGMuYWRkQ2xhc3MoInhkc29mdF9pbmxpbmUiKSxlLmFmdGVyKGMpLmhpZGUoKSk7CmEuaW52ZXJzZUJ1dHRvbiYmKGEubmV4dD0ieGRzb2Z0X3ByZXYiLGEucHJldj0ieGRzb2Z0X25leHQiKTthLmRhdGVwaWNrZXI\/dS5hZGRDbGFzcygiYWN0aXZlIik6dS5yZW1vdmVDbGFzcygiYWN0aXZlIik7YS50aW1lcGlja2VyP0MuYWRkQ2xhc3MoImFjdGl2ZSIpOkMucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpO2EudmFsdWUmJihsLnNldEN1cnJlbnRUaW1lKGEudmFsdWUpLGUmJmUudmFsJiZlLnZhbChsLnN0cikpO2lzTmFOKGEuZGF5T2ZXZWVrU3RhcnQpP2EuZGF5T2ZXZWVrU3RhcnQ9MDphLmRheU9mV2Vla1N0YXJ0PXBhcnNlSW50KGEuZGF5T2ZXZWVrU3RhcnQsMTApJTc7YS50aW1lcGlja2VyU2Nyb2xsYmFyfHx5Lnhkc29mdFNjcm9sbGVyKCJoaWRlIik7YS5taW5EYXRlJiYvXltcK1wtXSguKikkLy50ZXN0KGEubWluRGF0ZSkmJihhLm1pbkRhdGU9bC5zdHJUb0RhdGVUaW1lKGEubWluRGF0ZSkuZGF0ZUZvcm1hdChhLmZvcm1hdERhdGUpKTthLm1heERhdGUmJi9eW1wrXC1dKC4qKSQvLnRlc3QoYS5tYXhEYXRlKSYmCihhLm1heERhdGU9bC5zdHJUb0RhdGVUaW1lKGEubWF4RGF0ZSkuZGF0ZUZvcm1hdChhLmZvcm1hdERhdGUpKTtwLnRvZ2dsZShhLnNob3dBcHBseUJ1dHRvbik7dy5maW5kKCIueGRzb2Z0X3RvZGF5X2J1dHRvbiIpLmNzcygidmlzaWJpbGl0eSIsYS50b2RheUJ1dHRvbj8idmlzaWJsZSI6ImhpZGRlbiIpO3cuZmluZCgiLiIrYS5wcmV2KS5jc3MoInZpc2liaWxpdHkiLGEucHJldkJ1dHRvbj8idmlzaWJsZSI6ImhpZGRlbiIpO3cuZmluZCgiLiIrYS5uZXh0KS5jc3MoInZpc2liaWxpdHkiLGEubmV4dEJ1dHRvbj8idmlzaWJsZSI6ImhpZGRlbiIpO2EubWFzayYmKGUub2ZmKCJrZXlkb3duLnhkc29mdCIpLCEwPT09YS5tYXNrJiYoYS5tYXNrPWEuZm9ybWF0LnJlcGxhY2UoL1kvZywiOTk5OSIpLnJlcGxhY2UoL0YvZywiOTk5OSIpLnJlcGxhY2UoL20vZywiMTkiKS5yZXBsYWNlKC9kL2csIjM5IikucmVwbGFjZSgvSC9nLCIyOSIpLnJlcGxhY2UoL2kvZywiNTkiKS5yZXBsYWNlKC9zL2csCiI1OSIpKSwic3RyaW5nIj09PXR5cGVvZiBhLm1hc2smJihrKGEubWFzayxlLnZhbCgpKXx8ZS52YWwoYS5tYXNrLnJlcGxhY2UoL1swLTldL2csIl8iKSksZS5vbigia2V5ZG93bi54ZHNvZnQiLGZ1bmN0aW9uKG4pe3ZhciBtPXRoaXMudmFsdWUscT1uLndoaWNoO2lmKDQ4PD1xJiY1Nz49cXx8OTY8PXEmJjEwNT49cXx8OD09PXF8fDQ2PT09cSl7YTp7dHJ5e2lmKGRvY3VtZW50LnNlbGVjdGlvbiYmZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKXt2YXIgeD1kb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKS5nZXRCb29rbWFyaygpLmNoYXJDb2RlQXQoMiktMjticmVhayBhfWlmKHRoaXMuc2V0U2VsZWN0aW9uUmFuZ2Upe3g9dGhpcy5zZWxlY3Rpb25TdGFydDticmVhayBhfX1jYXRjaChBKXt4PTA7YnJlYWsgYX14PXZvaWQgMH12YXIgRj04IT09cSYmNDYhPT1xP1N0cmluZy5mcm9tQ2hhckNvZGUoOTY8PXEmJjEwNT49cT9xLTQ4OnEpOiJfIjtmb3IoOCE9PXEmJgo0NiE9PXF8fCF4fHwoLS14LEY9Il8iKTsvW14wLTlfXS8udGVzdChhLm1hc2suc3Vic3RyKHgsMSkpJiZ4PGEubWFzay5sZW5ndGgmJjA8eDspeCs9OD09PXF8fDQ2PT09cT8tMToxO209bS5zdWJzdHIoMCx4KStGK20uc3Vic3RyKHgrMSk7aWYoIiI9PT10cmltKG0pKW09YS5tYXNrLnJlcGxhY2UoL1swLTldL2csIl8iKTtlbHNlIGlmKHg9PT1hLm1hc2subGVuZ3RoKXJldHVybiBuLnByZXZlbnREZWZhdWx0KCksITE7Zm9yKHgrPTg9PT1xfHw0Nj09PXE\/MDoxOy9bXjAtOV9dLy50ZXN0KGEubWFzay5zdWJzdHIoeCwxKSkmJng8YS5tYXNrLmxlbmd0aCYmMDx4Oyl4Kz04PT09cXx8NDY9PT1xPy0xOjE7ayhhLm1hc2ssbSk\/KHRoaXMudmFsdWU9bSxtPXRoaXMsKG09InN0cmluZyI9PT10eXBlb2YgbXx8bSBpbnN0YW5jZW9mIFN0cmluZz9kb2N1bWVudC5nZXRFbGVtZW50QnlJZChtKTptKSYmKG0uY3JlYXRlVGV4dFJhbmdlPyhtPW0uY3JlYXRlVGV4dFJhbmdlKCksbS5jb2xsYXBzZSghMCksCm0ubW92ZUVuZCgiY2hhcmFjdGVyIix4KSxtLm1vdmVTdGFydCgiY2hhcmFjdGVyIix4KSxtLnNlbGVjdCgpKTptLnNldFNlbGVjdGlvblJhbmdlJiZtLnNldFNlbGVjdGlvblJhbmdlKHgseCkpKToiIj09PXRyaW0obSk\/dGhpcy52YWx1ZT1hLm1hc2sucmVwbGFjZSgvWzAtOV0vZywiXyIpOmUudHJpZ2dlcigiZXJyb3JfaW5wdXQueGRzb2Z0Iil9ZWxzZSBpZigtMSE9PVs2NSw2Nyw4Niw5MCw4OV0uaW5kZXhPZihxKSYmdnx8LTEhPT1bMjcsMzgsNDAsMzcsMzksMTE2LDE3LDksMTNdLmluZGV4T2YocSkpcmV0dXJuITA7bi5wcmV2ZW50RGVmYXVsdCgpO3JldHVybiExfSkpKTtpZihhLnZhbGlkYXRlT25CbHVyKWUub2ZmKCJibHVyLnhkc29mdCIpLm9uKCJibHVyLnhkc29mdCIsZnVuY3Rpb24oKXtpZihhLmFsbG93QmxhbmsmJiF0cmltKGYodGhpcykudmFsKCkpLmxlbmd0aClmKHRoaXMpLnZhbChudWxsKSxjLmRhdGEoInhkc29mdF9kYXRldGltZSIpLmVtcHR5KCk7ZWxzZXtpZighRGF0ZS5wYXJzZURhdGUoZih0aGlzKS52YWwoKSwKYS5mb3JtYXQpKXt2YXIgbj0rW2YodGhpcykudmFsKClbMF0sZih0aGlzKS52YWwoKVsxXV0uam9pbigiIiksbT0rW2YodGhpcykudmFsKClbMl0sZih0aGlzKS52YWwoKVszXV0uam9pbigiIik7IWEuZGF0ZXBpY2tlciYmYS50aW1lcGlja2VyJiYwPD1uJiYyND5uJiYwPD1tJiY2MD5tP2YodGhpcykudmFsKFtuLG1dLm1hcChmdW5jdGlvbihxKXtyZXR1cm4gOTxxP3E6IjAiK3F9KS5qb2luKCI6IikpOmYodGhpcykudmFsKGwubm93KCkuZGF0ZUZvcm1hdChhLmZvcm1hdCkpfWMuZGF0YSgieGRzb2Z0X2RhdGV0aW1lIikuc2V0Q3VycmVudFRpbWUoZih0aGlzKS52YWwoKSl9Yy50cmlnZ2VyKCJjaGFuZ2VkYXRldGltZS54ZHNvZnQiKX0pO2EuZGF5T2ZXZWVrU3RhcnRQcmV2PTA9PT1hLmRheU9mV2Vla1N0YXJ0PzY6YS5kYXlPZldlZWtTdGFydC0xO2MudHJpZ2dlcigieGNoYW5nZS54ZHNvZnQiKS50cmlnZ2VyKCJhZnRlck9wZW4ueGRzb2Z0Iil9O2MuZGF0YSgib3B0aW9ucyIsCmEpLm9uKCJtb3VzZWRvd24ueGRzb2Z0IixmdW5jdGlvbihiKXtiLnN0b3BQcm9wYWdhdGlvbigpO2IucHJldmVudERlZmF1bHQoKTtOLmhpZGUoKTtCLmhpZGUoKTtyZXR1cm4hMX0pO3kuYXBwZW5kKHopO3kueGRzb2Z0U2Nyb2xsZXIoKTtjLm9uKCJhZnRlck9wZW4ueGRzb2Z0IixmdW5jdGlvbigpe3kueGRzb2Z0U2Nyb2xsZXIoKX0pO2MuYXBwZW5kKHUpLmFwcGVuZChDKTshMCE9PWEud2l0aG91dENvcHlyaWdodCYmYy5hcHBlbmQodCk7dS5hcHBlbmQodykuYXBwZW5kKEUpLmFwcGVuZChwKTtmKGEucGFyZW50SUQpLmFwcGVuZChjKTt2YXIgbD1uZXcgZnVuY3Rpb24oKXt2YXIgYj10aGlzO2Iubm93PWZ1bmN0aW9uKGQpe3ZhciBrPW5ldyBEYXRlO2lmKCFkJiZhLmRlZmF1bHREYXRlKXt2YXIgbj1iLnN0clRvRGF0ZVRpbWUoYS5kZWZhdWx0RGF0ZSk7ay5zZXRGdWxsWWVhcihuLmdldEZ1bGxZZWFyKCkpO2suc2V0TW9udGgobi5nZXRNb250aCgpKTtrLnNldERhdGUobi5nZXREYXRlKCkpfWEueWVhck9mZnNldCYmCmsuc2V0RnVsbFllYXIoay5nZXRGdWxsWWVhcigpK2EueWVhck9mZnNldCk7IWQmJmEuZGVmYXVsdFRpbWUmJihkPWIuc3RydG90aW1lKGEuZGVmYXVsdFRpbWUpLGsuc2V0SG91cnMoZC5nZXRIb3VycygpKSxrLnNldE1pbnV0ZXMoZC5nZXRNaW51dGVzKCkpKTtyZXR1cm4ga307Yi5pc1ZhbGlkRGF0ZT1mdW5jdGlvbihkKXtyZXR1cm4iW29iamVjdCBEYXRlXSIhPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZCk\/ITE6IWlzTmFOKGQuZ2V0VGltZSgpKX07Yi5zZXRDdXJyZW50VGltZT1mdW5jdGlvbihkKXtiLmN1cnJlbnRUaW1lPSJzdHJpbmciPT09dHlwZW9mIGQ\/Yi5zdHJUb0RhdGVUaW1lKGQpOmIuaXNWYWxpZERhdGUoZCk\/ZDpiLm5vdygpO2MudHJpZ2dlcigieGNoYW5nZS54ZHNvZnQiKX07Yi5lbXB0eT1mdW5jdGlvbigpe2IuY3VycmVudFRpbWU9bnVsbH07Yi5nZXRDdXJyZW50VGltZT1mdW5jdGlvbihkKXtyZXR1cm4gYi5jdXJyZW50VGltZX07Yi5uZXh0TW9udGg9CmZ1bmN0aW9uKCl7aWYodm9pZCAwPT09Yi5jdXJyZW50VGltZXx8bnVsbD09PWIuY3VycmVudFRpbWUpYi5jdXJyZW50VGltZT1iLm5vdygpO3ZhciBkPWIuY3VycmVudFRpbWUuZ2V0TW9udGgoKSsxOzEyPT09ZCYmKGIuY3VycmVudFRpbWUuc2V0RnVsbFllYXIoYi5jdXJyZW50VGltZS5nZXRGdWxsWWVhcigpKzEpLGQ9MCk7dmFyIGs9Yi5jdXJyZW50VGltZS5nZXRGdWxsWWVhcigpO2IuY3VycmVudFRpbWUuc2V0RGF0ZShNYXRoLm1pbigobmV3IERhdGUoYi5jdXJyZW50VGltZS5nZXRGdWxsWWVhcigpLGQrMSwwKSkuZ2V0RGF0ZSgpLGIuY3VycmVudFRpbWUuZ2V0RGF0ZSgpKSk7Yi5jdXJyZW50VGltZS5zZXRNb250aChkKTthLm9uQ2hhbmdlTW9udGgmJmlzRnVuY3Rpb24oYS5vbkNoYW5nZU1vbnRoKSYmYS5vbkNoYW5nZU1vbnRoLmNhbGwoYyxsLmN1cnJlbnRUaW1lLGMuZGF0YSgiaW5wdXQiKSk7ayE9PWIuY3VycmVudFRpbWUuZ2V0RnVsbFllYXIoKSYmaXNGdW5jdGlvbihhLm9uQ2hhbmdlWWVhcikmJgphLm9uQ2hhbmdlWWVhci5jYWxsKGMsbC5jdXJyZW50VGltZSxjLmRhdGEoImlucHV0IikpO2MudHJpZ2dlcigieGNoYW5nZS54ZHNvZnQiKTtyZXR1cm4gZH07Yi5wcmV2TW9udGg9ZnVuY3Rpb24oKXtpZih2b2lkIDA9PT1iLmN1cnJlbnRUaW1lfHxudWxsPT09Yi5jdXJyZW50VGltZSliLmN1cnJlbnRUaW1lPWIubm93KCk7dmFyIGQ9Yi5jdXJyZW50VGltZS5nZXRNb250aCgpLTE7LTE9PT1kJiYoYi5jdXJyZW50VGltZS5zZXRGdWxsWWVhcihiLmN1cnJlbnRUaW1lLmdldEZ1bGxZZWFyKCktMSksZD0xMSk7Yi5jdXJyZW50VGltZS5zZXREYXRlKE1hdGgubWluKChuZXcgRGF0ZShiLmN1cnJlbnRUaW1lLmdldEZ1bGxZZWFyKCksZCsxLDApKS5nZXREYXRlKCksYi5jdXJyZW50VGltZS5nZXREYXRlKCkpKTtiLmN1cnJlbnRUaW1lLnNldE1vbnRoKGQpO2Eub25DaGFuZ2VNb250aCYmaXNGdW5jdGlvbihhLm9uQ2hhbmdlTW9udGgpJiZhLm9uQ2hhbmdlTW9udGguY2FsbChjLGwuY3VycmVudFRpbWUsCmMuZGF0YSgiaW5wdXQiKSk7Yy50cmlnZ2VyKCJ4Y2hhbmdlLnhkc29mdCIpO3JldHVybiBkfTtiLmdldFdlZWtPZlllYXI9ZnVuY3Rpb24oZCl7dmFyIGs9bmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLDAsMSk7cmV0dXJuIE1hdGguY2VpbCgoKGQtaykvODY0RTUray5nZXREYXkoKSsxKS83KX07Yi5zdHJUb0RhdGVUaW1lPWZ1bmN0aW9uKGQpe3ZhciBrO2lmKGQmJmQgaW5zdGFuY2VvZiBEYXRlJiZiLmlzVmFsaWREYXRlKGQpKXJldHVybiBkOyhrPS9eKFwrfFwtKSguKikkLy5leGVjKGQpKSYmKGtbMl09RGF0ZS5wYXJzZURhdGUoa1syXSxhLmZvcm1hdERhdGUpKTtrJiZrWzJdPyhkPWtbMl0uZ2V0VGltZSgpLTZFNCprWzJdLmdldFRpbWV6b25lT2Zmc2V0KCksaz1uZXcgRGF0ZShiLm5vdyghMCkuZ2V0VGltZSgpK3BhcnNlSW50KGtbMV0rIjEiLDEwKSpkKSk6az1kP0RhdGUucGFyc2VEYXRlKGQsYS5mb3JtYXQpOmIubm93KCk7Yi5pc1ZhbGlkRGF0ZShrKXx8KGs9Yi5ub3coKSk7CnJldHVybiBrfTtiLnN0clRvRGF0ZT1mdW5jdGlvbihkKXtpZihkJiZkIGluc3RhbmNlb2YgRGF0ZSYmYi5pc1ZhbGlkRGF0ZShkKSlyZXR1cm4gZDtkPWQ\/RGF0ZS5wYXJzZURhdGUoZCxhLmZvcm1hdERhdGUpOmIubm93KCEwKTtiLmlzVmFsaWREYXRlKGQpfHwoZD1iLm5vdyghMCkpO3JldHVybiBkfTtiLnN0cnRvdGltZT1mdW5jdGlvbihkKXtpZihkJiZkIGluc3RhbmNlb2YgRGF0ZSYmYi5pc1ZhbGlkRGF0ZShkKSlyZXR1cm4gZDtkPWQ\/RGF0ZS5wYXJzZURhdGUoZCxhLmZvcm1hdFRpbWUpOmIubm93KCEwKTtiLmlzVmFsaWREYXRlKGQpfHwoZD1iLm5vdyghMCkpO3JldHVybiBkfTtiLnN0cj1mdW5jdGlvbigpe3JldHVybiBiLmN1cnJlbnRUaW1lLmRhdGVGb3JtYXQoYS5mb3JtYXQpfTtiLmN1cnJlbnRUaW1lPXRoaXMubm93KCl9O3Aub24oImNsaWNrIixmdW5jdGlvbihiKXtiLnByZXZlbnREZWZhdWx0KCk7Yy5kYXRhKCJjaGFuZ2VkIiwhMCk7bC5zZXRDdXJyZW50VGltZShoKCkpOwplLnZhbChsLnN0cigpKTtjLnRyaWdnZXIoImNsb3NlLnhkc29mdCIpfSk7dy5maW5kKCIueGRzb2Z0X3RvZGF5X2J1dHRvbiIpLm9uKCJtb3VzZWRvd24ueGRzb2Z0IixmdW5jdGlvbigpe2MuZGF0YSgiY2hhbmdlZCIsITApO2wuc2V0Q3VycmVudFRpbWUoMCk7Yy50cmlnZ2VyKCJhZnRlck9wZW4ueGRzb2Z0Iil9KS5vbigiZGJsY2xpY2sueGRzb2Z0IixmdW5jdGlvbigpe3ZhciBiPWwuZ2V0Q3VycmVudFRpbWUoKTtiPW5ldyBEYXRlKGIuZ2V0RnVsbFllYXIoKSxiLmdldE1vbnRoKCksYi5nZXREYXRlKCkpO3ZhciBkPWwuc3RyVG9EYXRlKGEubWluRGF0ZSk7ZD1uZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksZC5nZXRNb250aCgpLGQuZ2V0RGF0ZSgpKTtiPGR8fChkPWwuc3RyVG9EYXRlKGEubWF4RGF0ZSksZD1uZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksZC5nZXRNb250aCgpLGQuZ2V0RGF0ZSgpKSxiPmR8fChlLnZhbChsLnN0cigpKSxlLnRyaWdnZXIoImNoYW5nZSIpLGMudHJpZ2dlcigiY2xvc2UueGRzb2Z0IikpKX0pOwp3LmZpbmQoIi54ZHNvZnRfcHJldiwueGRzb2Z0X25leHQiKS5vbigibW91c2Vkb3duLnhkc29mdCIsZnVuY3Rpb24oKXt2YXIgYj1mKHRoaXMpLGQ9MCxrPSExOyhmdW5jdGlvbiBxKG0pe2IuaGFzQ2xhc3MoYS5uZXh0KT9sLm5leHRNb250aCgpOmIuaGFzQ2xhc3MoYS5wcmV2KSYmbC5wcmV2TW9udGgoKTthLm1vbnRoQ2hhbmdlU3Bpbm5lciYmKGt8fChkPXNldFRpbWVvdXQocSxtfHwxMDApKSl9KSg1MDApO2YoW2RvY3VtZW50LmJvZHksd2luZG93XSkub24oIm1vdXNldXAueGRzb2Z0IixmdW5jdGlvbiBxKCl7Y2xlYXJUaW1lb3V0KGQpO2s9ITA7ZihbZG9jdW1lbnQuYm9keSx3aW5kb3ddKS5vZmYoIm1vdXNldXAueGRzb2Z0IixxKX0pfSk7Qy5maW5kKCIueGRzb2Z0X3ByZXYsLnhkc29mdF9uZXh0Iikub24oIm1vdXNlZG93bi54ZHNvZnQiLGZ1bmN0aW9uKCl7dmFyIGI9Zih0aGlzKSxkPTAsaz0hMSxuPTExMDsoZnVuY3Rpb24geChxKXt2YXIgRj15WzBdLmNsaWVudEhlaWdodCwKQT16WzBdLm9mZnNldEhlaWdodCxIPU1hdGguYWJzKHBhcnNlSW50KHouY3NzKCJtYXJnaW5Ub3AiKSwxMCkpO2IuaGFzQ2xhc3MoYS5uZXh0KSYmQS1GLWEudGltZUhlaWdodEluVGltZVBpY2tlcj49SD96LmNzcygibWFyZ2luVG9wIiwiLSIrKEgrYS50aW1lSGVpZ2h0SW5UaW1lUGlja2VyKSsicHgiKTpiLmhhc0NsYXNzKGEucHJldikmJjA8PUgtYS50aW1lSGVpZ2h0SW5UaW1lUGlja2VyJiZ6LmNzcygibWFyZ2luVG9wIiwiLSIrKEgtYS50aW1lSGVpZ2h0SW5UaW1lUGlja2VyKSsicHgiKTt5LnRyaWdnZXIoInNjcm9sbF9lbGVtZW50Lnhkc29mdF9zY3JvbGxlciIsW01hdGguYWJzKHBhcnNlSW50KHouY3NzKCJtYXJnaW5Ub3AiKSwxMCkvKEEtRikpXSk7bj0xMDxuPzEwOm4tMTA7a3x8KGQ9c2V0VGltZW91dCh4LHF8fG4pKX0pKDUwMCk7ZihbZG9jdW1lbnQuYm9keSx3aW5kb3ddKS5vbigibW91c2V1cC54ZHNvZnQiLGZ1bmN0aW9uIHgoKXtjbGVhclRpbWVvdXQoZCk7az0hMDsKZihbZG9jdW1lbnQuYm9keSx3aW5kb3ddKS5vZmYoIm1vdXNldXAueGRzb2Z0Iix4KX0pfSk7dmFyIGJhPTA7Yy5vbigieGNoYW5nZS54ZHNvZnQiLGZ1bmN0aW9uKGIpe2NsZWFyVGltZW91dChiYSk7YmE9c2V0VGltZW91dChmdW5jdGlvbigpe2lmKHZvaWQgMD09PWwuY3VycmVudFRpbWV8fG51bGw9PT1sLmN1cnJlbnRUaW1lKWwuY3VycmVudFRpbWU9bC5ub3coKTtmb3IodmFyIGQ9IiIsaz1uZXcgRGF0ZShsLmN1cnJlbnRUaW1lLmdldEZ1bGxZZWFyKCksbC5jdXJyZW50VGltZS5nZXRNb250aCgpLDEsMTIsMCwwKSxuPTAsbSxxPWwubm93KCkseD0hMSxGPSExLEE9W10sSD0hMCxYPSIiLFA9IiIsWTtrLmdldERheSgpIT09YS5kYXlPZldlZWtTdGFydDspay5zZXREYXRlKGsuZ2V0RGF0ZSgpLTEpO2QrPSI8dGFibGU+PHRoZWFkPjx0cj4iO2Eud2Vla3MmJihkKz0iPHRoPjwvdGg+Iik7Zm9yKG09MDs3Pm07bSs9MSlkKz0iPHRoPiIrYS5pMThuW0ddLmRheU9mV2Vla1Nob3J0WyhtKwphLmRheU9mV2Vla1N0YXJ0KSU3XSsiPC90aD4iO2QrPSI8L3RyPjwvdGhlYWQ+PHRib2R5PiI7ITEhPT1hLm1heERhdGUmJih4PWwuc3RyVG9EYXRlKGEubWF4RGF0ZSkseD1uZXcgRGF0ZSh4LmdldEZ1bGxZZWFyKCkseC5nZXRNb250aCgpLHguZ2V0RGF0ZSgpLDIzLDU5LDU5LDk5OSkpO2ZvcighMSE9PWEubWluRGF0ZSYmKEY9bC5zdHJUb0RhdGUoYS5taW5EYXRlKSxGPW5ldyBEYXRlKEYuZ2V0RnVsbFllYXIoKSxGLmdldE1vbnRoKCksRi5nZXREYXRlKCkpKTtuPGwuY3VycmVudFRpbWUuY291bnREYXlzSW5Nb250aCgpfHxrLmdldERheSgpIT09YS5kYXlPZldlZWtTdGFydHx8bC5jdXJyZW50VGltZS5nZXRNb250aCgpPT09ay5nZXRNb250aCgpOyl7QT1bXTtuKz0xO3ZhciBSPWsuZ2V0RGF5KCk7bT1rLmdldERhdGUoKTtQPWsuZ2V0RnVsbFllYXIoKTt2YXIgUT1rLmdldE1vbnRoKCksZGE9bC5nZXRXZWVrT2ZZZWFyKGspO1k9IiI7QS5wdXNoKCJ4ZHNvZnRfZGF0ZSIpO3ZhciBWPQphLmJlZm9yZVNob3dEYXkmJmlzRnVuY3Rpb24oYS5iZWZvcmVTaG93RGF5LmNhbGwpP2EuYmVmb3JlU2hvd0RheS5jYWxsKGMsayk6bnVsbDshMSE9PXgmJms+eHx8ITEhPT1GJiZrPEZ8fFYmJiExPT09VlswXT9BLnB1c2goInhkc29mdF9kaXNhYmxlZCIpOi0xIT09YS5kaXNhYmxlZERhdGVzLmluZGV4T2Yoay5kYXRlRm9ybWF0KGEuZm9ybWF0RGF0ZSkpP0EucHVzaCgieGRzb2Z0X2Rpc2FibGVkIik6LTEhPT1hLmRpc2FibGVkV2Vla0RheXMuaW5kZXhPZihSKSYmQS5wdXNoKCJ4ZHNvZnRfZGlzYWJsZWQiKTtWJiYiIiE9PVZbMV0mJkEucHVzaChWWzFdKTtsLmN1cnJlbnRUaW1lLmdldE1vbnRoKCkhPT1RJiZBLnB1c2goInhkc29mdF9vdGhlcl9tb250aCIpOyhhLmRlZmF1bHRTZWxlY3R8fGMuZGF0YSgiY2hhbmdlZCIpKSYmbC5jdXJyZW50VGltZS5kYXRlRm9ybWF0KGEuZm9ybWF0RGF0ZSk9PT1rLmRhdGVGb3JtYXQoYS5mb3JtYXREYXRlKSYmQS5wdXNoKCJ4ZHNvZnRfY3VycmVudCIpOwpxLmRhdGVGb3JtYXQoYS5mb3JtYXREYXRlKT09PWsuZGF0ZUZvcm1hdChhLmZvcm1hdERhdGUpJiZBLnB1c2goInhkc29mdF90b2RheSIpOzAhPT1rLmdldERheSgpJiY2IT09ay5nZXREYXkoKSYmLTE9PT1hLndlZWtlbmRzLmluZGV4T2Yoay5kYXRlRm9ybWF0KGEuZm9ybWF0RGF0ZSkpfHxBLnB1c2goInhkc29mdF93ZWVrZW5kIik7dm9pZCAwIT09YS5oaWdobGlnaHRlZERhdGVzW2suZGF0ZUZvcm1hdChhLmZvcm1hdERhdGUpXSYmKFI9YS5oaWdobGlnaHRlZERhdGVzW2suZGF0ZUZvcm1hdChhLmZvcm1hdERhdGUpXSxBLnB1c2godm9pZCAwPT09Ui5zdHlsZT8ieGRzb2Z0X2hpZ2hsaWdodGVkX2RlZmF1bHQiOlIuc3R5bGUpLFk9dm9pZCAwPT09Ui5kZXNjPyIiOlIuZGVzYyk7YS5iZWZvcmVTaG93RGF5JiZpc0Z1bmN0aW9uKGEuYmVmb3JlU2hvd0RheSkmJkEucHVzaChhLmJlZm9yZVNob3dEYXkoaykpO0gmJihkKz0iPHRyPiIsSD0hMSxhLndlZWtzJiYoZCs9Ijx0aD4iK2RhKwoiPC90aD4iKSk7ZCs9Jzx0ZCBkYXRhLWRhdGU9IicrbSsnIiBkYXRhLW1vbnRoPSInK1ErJyIgZGF0YS15ZWFyPSInK1ArJyIgY2xhc3M9Inhkc29mdF9kYXRlIHhkc29mdF9kYXlfb2Zfd2Vlaycray5nZXREYXkoKSsiICIrQS5qb2luKCIgIikrJyIgdGl0bGU9IicrWSsnIj48ZGl2PicrbSsiPC9kaXY+PC90ZD4iO2suZ2V0RGF5KCk9PT1hLmRheU9mV2Vla1N0YXJ0UHJldiYmKGQrPSI8L3RyPiIsSD0hMCk7ay5zZXREYXRlKG0rMSl9RS5odG1sKGQrIjwvdGJvZHk+PC90YWJsZT4iKTt3LmZpbmQoIi54ZHNvZnRfbGFiZWwgc3BhbiIpLmVxKDApLnRleHQoYS5pMThuW0ddLm1vbnRoc1tsLmN1cnJlbnRUaW1lLmdldE1vbnRoKCldKTt3LmZpbmQoIi54ZHNvZnRfbGFiZWwgc3BhbiIpLmVxKDEpLnRleHQobC5jdXJyZW50VGltZS5nZXRGdWxsWWVhcigpKTtRPVA9WD0iIjtkPWZ1bmN0aW9uKFMsVCl7dmFyIEs9bC5ub3coKSxjYT1hLmFsbG93VGltZXMmJkFycmF5LmlzQXJyYXkoYS5hbGxvd1RpbWVzKSYmCmEuYWxsb3dUaW1lcy5sZW5ndGg7Sy5zZXRIb3VycyhTKTtTPXBhcnNlSW50KEsuZ2V0SG91cnMoKSwxMCk7Sy5zZXRNaW51dGVzKFQpO1Q9cGFyc2VJbnQoSy5nZXRNaW51dGVzKCksMTApO3ZhciBMPW5ldyBEYXRlKGwuY3VycmVudFRpbWUpO0wuc2V0SG91cnMoUyk7TC5zZXRNaW51dGVzKFQpO0E9W107KCExIT09YS5taW5EYXRlVGltZSYmYS5taW5EYXRlVGltZT5MfHwhMSE9PWEubWF4VGltZSYmbC5zdHJ0b3RpbWUoYS5tYXhUaW1lKS5nZXRUaW1lKCk8Sy5nZXRUaW1lKCl8fCExIT09YS5taW5UaW1lJiZsLnN0cnRvdGltZShhLm1pblRpbWUpLmdldFRpbWUoKT5LLmdldFRpbWUoKSkmJkEucHVzaCgieGRzb2Z0X2Rpc2FibGVkIik7KCExIT09YS5taW5EYXRlVGltZSYmYS5taW5EYXRlVGltZT5MfHwhMSE9PWEuZGlzYWJsZWRNaW5UaW1lJiZLLmdldFRpbWUoKT5sLnN0cnRvdGltZShhLmRpc2FibGVkTWluVGltZSkuZ2V0VGltZSgpJiYhMSE9PWEuZGlzYWJsZWRNYXhUaW1lJiYKSy5nZXRUaW1lKCk8bC5zdHJ0b3RpbWUoYS5kaXNhYmxlZE1heFRpbWUpLmdldFRpbWUoKSkmJkEucHVzaCgieGRzb2Z0X2Rpc2FibGVkIik7TD1uZXcgRGF0ZShsLmN1cnJlbnRUaW1lKTtMLnNldEhvdXJzKHBhcnNlSW50KGwuY3VycmVudFRpbWUuZ2V0SG91cnMoKSwxMCkpO2NhfHxMLnNldE1pbnV0ZXMoTWF0aFthLnJvdW5kVGltZV0obC5jdXJyZW50VGltZS5nZXRNaW51dGVzKCkvYS5zdGVwKSphLnN0ZXApOyhhLmluaXRUaW1lfHxhLmRlZmF1bHRTZWxlY3R8fGMuZGF0YSgiY2hhbmdlZCIpKSYmTC5nZXRIb3VycygpPT09cGFyc2VJbnQoUywxMCkmJighY2EmJjU5PGEuc3RlcHx8TC5nZXRNaW51dGVzKCk9PT1wYXJzZUludChULDEwKSkmJihhLmRlZmF1bHRTZWxlY3R8fGMuZGF0YSgiY2hhbmdlZCIpP0EucHVzaCgieGRzb2Z0X2N1cnJlbnQiKTphLmluaXRUaW1lJiZBLnB1c2goInhkc29mdF9pbml0X3RpbWUiKSk7cGFyc2VJbnQocS5nZXRIb3VycygpLDEwKT09PXBhcnNlSW50KFMsCjEwKSYmcGFyc2VJbnQocS5nZXRNaW51dGVzKCksMTApPT09cGFyc2VJbnQoVCwxMCkmJkEucHVzaCgieGRzb2Z0X3RvZGF5Iik7WCs9JzxkaXYgY2xhc3M9Inhkc29mdF90aW1lICcrQS5qb2luKCIgIikrJyIgZGF0YS1ob3VyPSInK1MrJyIgZGF0YS1taW51dGU9IicrVCsnIj4nK0suZGF0ZUZvcm1hdChhLmZvcm1hdFRpbWUpKyI8L2Rpdj4ifTtpZihhLmFsbG93VGltZXMmJkFycmF5LmlzQXJyYXkoYS5hbGxvd1RpbWVzKSYmYS5hbGxvd1RpbWVzLmxlbmd0aClmb3Iobj0wO248YS5hbGxvd1RpbWVzLmxlbmd0aDtuKz0xKVA9bC5zdHJ0b3RpbWUoYS5hbGxvd1RpbWVzW25dKS5nZXRIb3VycygpLFE9bC5zdHJ0b3RpbWUoYS5hbGxvd1RpbWVzW25dKS5nZXRNaW51dGVzKCksZChQLFEpO2Vsc2UgZm9yKG09bj0wO248KGEuaG91cnMxMj8xMjoyNCk7bis9MSlmb3IobT0wOzYwPm07bSs9YS5zdGVwKVA9KDEwPm4\/IjAiOiIiKStuLFE9KDEwPm0\/IjAiOiIiKSttLGQoUCxRKTt6Lmh0bWwoWCk7CnI9IiI7bj0wO2ZvcihuPXBhcnNlSW50KGEueWVhclN0YXJ0LDEwKSthLnllYXJPZmZzZXQ7bjw9cGFyc2VJbnQoYS55ZWFyRW5kLDEwKSthLnllYXJPZmZzZXQ7bis9MSlyKz0nPGRpdiBjbGFzcz0ieGRzb2Z0X29wdGlvbiAnKyhsLmN1cnJlbnRUaW1lLmdldEZ1bGxZZWFyKCk9PT1uPyJ4ZHNvZnRfY3VycmVudCI6IiIpKyciIGRhdGEtdmFsdWU9IicrbisnIj4nK24rIjwvZGl2PiI7Ti5jaGlsZHJlbigpLmVxKDApLmh0bWwocik7bj1wYXJzZUludChhLm1vbnRoU3RhcnQsMTApO2ZvcihyPSIiO248PXBhcnNlSW50KGEubW9udGhFbmQsMTApO24rPTEpcis9JzxkaXYgY2xhc3M9Inhkc29mdF9vcHRpb24gJysobC5jdXJyZW50VGltZS5nZXRNb250aCgpPT09bj8ieGRzb2Z0X2N1cnJlbnQiOiIiKSsnIiBkYXRhLXZhbHVlPSInK24rJyI+JythLmkxOG5bR10ubW9udGhzW25dKyI8L2Rpdj4iO0IuY2hpbGRyZW4oKS5lcSgwKS5odG1sKHIpO2YoYykudHJpZ2dlcigiZ2VuZXJhdGUueGRzb2Z0Iil9LAoxMCk7Yi5zdG9wUHJvcGFnYXRpb24oKX0pLm9uKCJhZnRlck9wZW4ueGRzb2Z0IixmdW5jdGlvbigpe2lmKGEudGltZXBpY2tlcil7dmFyIGI7ei5maW5kKCIueGRzb2Z0X2N1cnJlbnQiKS5sZW5ndGg\/Yj0iLnhkc29mdF9jdXJyZW50Ijp6LmZpbmQoIi54ZHNvZnRfaW5pdF90aW1lIikubGVuZ3RoJiYoYj0iLnhkc29mdF9pbml0X3RpbWUiKTtpZihiKXt2YXIgZD15WzBdLmNsaWVudEhlaWdodCxrPXpbMF0ub2Zmc2V0SGVpZ2h0O2I9ei5maW5kKGIpLmluZGV4KCkqYS50aW1lSGVpZ2h0SW5UaW1lUGlja2VyKzE7ay1kPGImJihiPWstZCk7eS50cmlnZ2VyKCJzY3JvbGxfZWxlbWVudC54ZHNvZnRfc2Nyb2xsZXIiLFtwYXJzZUludChiLDEwKS8oay1kKV0pfWVsc2UgeS50cmlnZ2VyKCJzY3JvbGxfZWxlbWVudC54ZHNvZnRfc2Nyb2xsZXIiLFswXSl9fSk7dmFyIFo9MDtFLm9uKCJjbGljay54ZHNvZnQiLCJ0ZCIsZnVuY3Rpb24oYil7Yi5zdG9wUHJvcGFnYXRpb24oKTtaKz0xO3ZhciBkPQpmKHRoaXMpLGs9bC5jdXJyZW50VGltZTtpZih2b2lkIDA9PT1rfHxudWxsPT09aylsLmN1cnJlbnRUaW1lPWwubm93KCksaz1sLmN1cnJlbnRUaW1lO2lmKGQuaGFzQ2xhc3MoInhkc29mdF9kaXNhYmxlZCIpKXJldHVybiExO2suc2V0RGF0ZSgxKTtrLnNldEZ1bGxZZWFyKGQuZGF0YSgieWVhciIpKTtrLnNldE1vbnRoKGQuZGF0YSgibW9udGgiKSk7ay5zZXREYXRlKGQuZGF0YSgiZGF0ZSIpKTtjLnRyaWdnZXIoInNlbGVjdC54ZHNvZnQiLFtrXSk7ZS52YWwobC5zdHIoKSk7YS5vblNlbGVjdERhdGUmJmlzRnVuY3Rpb24oYS5vblNlbGVjdERhdGUpJiZhLm9uU2VsZWN0RGF0ZS5jYWxsKGMsbC5jdXJyZW50VGltZSxjLmRhdGEoImlucHV0IiksYik7Yy5kYXRhKCJjaGFuZ2VkIiwhMCk7Yy50cmlnZ2VyKCJ4Y2hhbmdlLnhkc29mdCIpO2MudHJpZ2dlcigiY2hhbmdlZGF0ZXRpbWUueGRzb2Z0Iik7KDE8Wnx8ITA9PT1hLmNsb3NlT25EYXRlU2VsZWN0fHwhMT09PWEuY2xvc2VPbkRhdGVTZWxlY3QmJgohYS50aW1lcGlja2VyKSYmIWEuaW5saW5lJiZjLnRyaWdnZXIoImNsb3NlLnhkc29mdCIpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtaPTB9LDIwMCl9KTt6Lm9uKCJjbGljay54ZHNvZnQiLCJkaXYiLGZ1bmN0aW9uKGIpe2Iuc3RvcFByb3BhZ2F0aW9uKCk7dmFyIGQ9Zih0aGlzKSxrPWwuY3VycmVudFRpbWU7aWYodm9pZCAwPT09a3x8bnVsbD09PWspbC5jdXJyZW50VGltZT1sLm5vdygpLGs9bC5jdXJyZW50VGltZTtpZihkLmhhc0NsYXNzKCJ4ZHNvZnRfZGlzYWJsZWQiKSlyZXR1cm4hMTtrLnNldEhvdXJzKGQuZGF0YSgiaG91ciIpKTtrLnNldE1pbnV0ZXMoZC5kYXRhKCJtaW51dGUiKSk7Yy50cmlnZ2VyKCJzZWxlY3QueGRzb2Z0Iixba10pO2MuZGF0YSgiaW5wdXQiKS52YWwobC5zdHIoKSk7YS5vblNlbGVjdFRpbWUmJmlzRnVuY3Rpb24oYS5vblNlbGVjdFRpbWUpJiZhLm9uU2VsZWN0VGltZS5jYWxsKGMsbC5jdXJyZW50VGltZSxjLmRhdGEoImlucHV0IiksYik7Yy5kYXRhKCJjaGFuZ2VkIiwKITApO2MudHJpZ2dlcigieGNoYW5nZS54ZHNvZnQiKTtjLnRyaWdnZXIoImNoYW5nZWRhdGV0aW1lLnhkc29mdCIpOyEwIT09YS5pbmxpbmUmJiEwPT09YS5jbG9zZU9uVGltZVNlbGVjdCYmYy50cmlnZ2VyKCJjbG9zZS54ZHNvZnQiKX0pO3Uub24oIm1vdXNld2hlZWwueGRzb2Z0IixmdW5jdGlvbihiKXtpZighYS5zY3JvbGxNb250aClyZXR1cm4hMDswPmIuZGVsdGFZP2wubmV4dE1vbnRoKCk6bC5wcmV2TW9udGgoKTtyZXR1cm4hMX0pO2Uub24oIm1vdXNld2hlZWwueGRzb2Z0IixmdW5jdGlvbihiKXtpZighYS5zY3JvbGxJbnB1dClyZXR1cm4hMDtpZighYS5kYXRlcGlja2VyJiZhLnRpbWVwaWNrZXIpcmV0dXJuIFU9ei5maW5kKCIueGRzb2Z0X2N1cnJlbnQiKS5sZW5ndGg\/ei5maW5kKCIueGRzb2Z0X2N1cnJlbnQiKS5lcSgwKS5pbmRleCgpOjAsMDw9VStiLmRlbHRhWSYmVStiLmRlbHRhWTx6LmNoaWxkcmVuKCkubGVuZ3RoJiYoVSs9Yi5kZWx0YVkpLHouY2hpbGRyZW4oKS5lcShVKS5sZW5ndGgmJgp6LmNoaWxkcmVuKCkuZXEoVSkudHJpZ2dlcigibW91c2Vkb3duIiksITE7aWYoYS5kYXRlcGlja2VyJiYhYS50aW1lcGlja2VyKXJldHVybiB1LnRyaWdnZXIoYixbYi5kZWx0YVksYi5kZWx0YVgsYi5kZWx0YVldKSxlLnZhbCYmZS52YWwobC5zdHIoKSksYy50cmlnZ2VyKCJjaGFuZ2VkYXRldGltZS54ZHNvZnQiKSwhMX0pO2Mub24oImNoYW5nZWRhdGV0aW1lLnhkc29mdCIsZnVuY3Rpb24oYil7aWYoYS5vbkNoYW5nZURhdGVUaW1lJiZpc0Z1bmN0aW9uKGEub25DaGFuZ2VEYXRlVGltZSkpe3ZhciBkPWMuZGF0YSgiaW5wdXQiKTthLm9uQ2hhbmdlRGF0ZVRpbWUuY2FsbChjLGwuY3VycmVudFRpbWUsZCxiKTtkZWxldGUgYS52YWx1ZTtkLnRyaWdnZXIoImNoYW5nZSIpfX0pLm9uKCJnZW5lcmF0ZS54ZHNvZnQiLGZ1bmN0aW9uKCl7YS5vbkdlbmVyYXRlJiZpc0Z1bmN0aW9uKGEub25HZW5lcmF0ZSkmJmEub25HZW5lcmF0ZS5jYWxsKGMsbC5jdXJyZW50VGltZSxjLmRhdGEoImlucHV0IikpOwpPJiYoYy50cmlnZ2VyKCJhZnRlck9wZW4ueGRzb2Z0IiksTz0hMSl9KS5vbigiY2xpY2sueGRzb2Z0IixmdW5jdGlvbihiKXtiLnN0b3BQcm9wYWdhdGlvbigpfSk7dmFyIFU9MCxhYT1mdW5jdGlvbigpe3ZhciBiPWMuZGF0YSgiaW5wdXQiKS5vZmZzZXQoKSxkPWIudG9wK2MuZGF0YSgiaW5wdXQiKVswXS5vZmZzZXRIZWlnaHQtMSxrPWIubGVmdCxuPSJhYnNvbHV0ZSI7InJ0bCI9PWMuZGF0YSgiaW5wdXQiKS5wYXJlbnQoKS5jc3MoImRpcmVjdGlvbiIpJiYoay09Yy5vdXRlcldpZHRoKCktYy5kYXRhKCJpbnB1dCIpLm91dGVyV2lkdGgoKSk7YS5maXhlZD8oZC09Zih3aW5kb3cpLnNjcm9sbFRvcCgpLGstPWYod2luZG93KS5zY3JvbGxMZWZ0KCksbj0iZml4ZWQiKTooZCtjWzBdLm9mZnNldEhlaWdodD5mKHdpbmRvdykuaGVpZ2h0KCkrZih3aW5kb3cpLnNjcm9sbFRvcCgpJiYoZD1iLnRvcC1jWzBdLm9mZnNldEhlaWdodCsxKSwwPmQmJihkPTApLGsrY1swXS5vZmZzZXRXaWR0aD4KZih3aW5kb3cpLndpZHRoKCkmJihrPWYod2luZG93KS53aWR0aCgpLWNbMF0ub2Zmc2V0V2lkdGgpKTtiPWNbMF07ZG8gaWYoYj1iLnBhcmVudE5vZGUsInJlbGF0aXZlIj09PXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGIpLmdldFByb3BlcnR5VmFsdWUoInBvc2l0aW9uIikmJmYod2luZG93KS53aWR0aCgpPj1iLm9mZnNldFdpZHRoKXtrLT0oZih3aW5kb3cpLndpZHRoKCktYi5vZmZzZXRXaWR0aCkvMjticmVha313aGlsZSgiSFRNTCIhPT1iLm5vZGVOYW1lKTtjLmNzcyh7bGVmdDprLHRvcDpkLHBvc2l0aW9uOm59KX07Yy5vbigib3Blbi54ZHNvZnQiLGZ1bmN0aW9uKGIpe3ZhciBkPSEwO2Eub25TaG93JiZpc0Z1bmN0aW9uKGEub25TaG93KSYmKGQ9YS5vblNob3cuY2FsbChjLGwuY3VycmVudFRpbWUsYy5kYXRhKCJpbnB1dCIpLGIpKTtpZighMSE9PWQmJihjLnNob3coKSxhYSgpLGYod2luZG93KS5vZmYoInJlc2l6ZS54ZHNvZnQiLGFhKS5vbigicmVzaXplLnhkc29mdCIsCmFhKSxhLmNsb3NlT25XaXRob3V0Q2xpY2spKWYoW2RvY3VtZW50LmJvZHksd2luZG93XSkub24oIm1vdXNlZG93bi54ZHNvZnQiLGZ1bmN0aW9uIG4oKXtjLnRyaWdnZXIoImNsb3NlLnhkc29mdCIpO2YoW2RvY3VtZW50LmJvZHksd2luZG93XSkub2ZmKCJtb3VzZWRvd24ueGRzb2Z0IixuKX0pfSkub24oImNsb3NlLnhkc29mdCIsZnVuY3Rpb24oYil7dmFyIGQ9ITA7dy5maW5kKCIueGRzb2Z0X21vbnRoLC54ZHNvZnRfeWVhciIpLmZpbmQoIi54ZHNvZnRfc2VsZWN0IikuaGlkZSgpO2Eub25DbG9zZSYmaXNGdW5jdGlvbihhLm9uQ2xvc2UpJiYoZD1hLm9uQ2xvc2UuY2FsbChjLGwuY3VycmVudFRpbWUsYy5kYXRhKCJpbnB1dCIpLGIpKTshMT09PWR8fGEub3BlbmVkfHxhLmlubGluZXx8Yy5oaWRlKCk7Yi5zdG9wUHJvcGFnYXRpb24oKX0pLm9uKCJ0b2dnbGUueGRzb2Z0IixmdW5jdGlvbihiKXtjLmlzKCI6dmlzaWJsZSIpP2MudHJpZ2dlcigiY2xvc2UueGRzb2Z0Iik6Yy50cmlnZ2VyKCJvcGVuLnhkc29mdCIpfSkuZGF0YSgiaW5wdXQiLAplKTtXPTA7Yy5kYXRhKCJ4ZHNvZnRfZGF0ZXRpbWUiLGwpO2Muc2V0T3B0aW9ucyhhKTtsLnNldEN1cnJlbnRUaW1lKGgoKSk7ZS5kYXRhKCJ4ZHNvZnRfZGF0ZXRpbWVwaWNrZXIiLGMpLm9uKCJvcGVuLnhkc29mdCBmb2N1c2luLnhkc29mdCBtb3VzZWRvd24ueGRzb2Z0IixmdW5jdGlvbihiKXtlLmlzKCI6ZGlzYWJsZWQiKXx8ZS5kYXRhKCJ4ZHNvZnRfZGF0ZXRpbWVwaWNrZXIiKS5pcygiOnZpc2libGUiKSYmYS5jbG9zZU9uSW5wdXRDbGlja3x8KGNsZWFyVGltZW91dChXKSxXPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtlLmlzKCI6ZGlzYWJsZWQiKXx8KE89ITAsbC5zZXRDdXJyZW50VGltZShoKCkpLGMudHJpZ2dlcigib3Blbi54ZHNvZnQiKSl9LDEwMCkpfSkub24oImtleWRvd24ueGRzb2Z0IixmdW5jdGlvbihiKXtiPWIud2hpY2g7aWYoLTEhPT1bMTNdLmluZGV4T2YoYikmJmEuZW50ZXJMaWtlVGFiKXJldHVybiBiPWYoImlucHV0OnZpc2libGUsdGV4dGFyZWE6dmlzaWJsZSIpLApjLnRyaWdnZXIoImNsb3NlLnhkc29mdCIpLGIuZXEoYi5pbmRleCh0aGlzKSsxKS5mb2N1cygpLCExO2lmKC0xIT09WzldLmluZGV4T2YoYikpcmV0dXJuIGMudHJpZ2dlcigiY2xvc2UueGRzb2Z0IiksITB9KX07Zihkb2N1bWVudCkub2ZmKCJrZXlkb3duLnhkc29mdGN0cmwga2V5dXAueGRzb2Z0Y3RybCIpLm9uKCJrZXlkb3duLnhkc29mdGN0cmwiLGZ1bmN0aW9uKGUpezE3PT09ZS5rZXlDb2RlJiYodj0hMCl9KS5vbigia2V5dXAueGRzb2Z0Y3RybCIsZnVuY3Rpb24oZSl7MTc9PT1lLmtleUNvZGUmJih2PSExKX0pO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT1mKHRoaXMpLmRhdGEoInhkc29mdF9kYXRldGltZXBpY2tlciIpO2lmKGUpe2lmKCJzdHJpbmciPT09dHlwZW9mIHIpc3dpdGNoKHIpe2Nhc2UgInNob3ciOmYodGhpcykuc2VsZWN0KCkuZm9jdXMoKTtlLnRyaWdnZXIoIm9wZW4ueGRzb2Z0Iik7YnJlYWs7Y2FzZSAiaGlkZSI6ZS50cmlnZ2VyKCJjbG9zZS54ZHNvZnQiKTsKYnJlYWs7Y2FzZSAidG9nZ2xlIjplLnRyaWdnZXIoInRvZ2dsZS54ZHNvZnQiKTticmVhaztjYXNlICJkZXN0cm95IjplPWYodGhpcyk7dmFyIGg9ZS5kYXRhKCJ4ZHNvZnRfZGF0ZXRpbWVwaWNrZXIiKTtoJiYoaC5kYXRhKCJ4ZHNvZnRfZGF0ZXRpbWUiLG51bGwpLGgucmVtb3ZlKCksZS5kYXRhKCJ4ZHNvZnRfZGF0ZXRpbWVwaWNrZXIiLG51bGwpLm9mZigiLnhkc29mdCIpLGYod2luZG93KS5vZmYoInJlc2l6ZS54ZHNvZnQiKSxmKFt3aW5kb3csZG9jdW1lbnQuYm9keV0pLm9mZigibW91c2Vkb3duLnhkc29mdCIpLGUudW5tb3VzZXdoZWVsJiZlLnVubW91c2V3aGVlbCgpKTticmVhaztjYXNlICJyZXNldCI6KHRoaXMudmFsdWU9dGhpcy5kZWZhdWx0VmFsdWUpJiZlLmRhdGEoInhkc29mdF9kYXRldGltZSIpLmlzVmFsaWREYXRlKERhdGUucGFyc2VEYXRlKHRoaXMudmFsdWUsYS5mb3JtYXQpKXx8ZS5kYXRhKCJjaGFuZ2VkIiwhMSk7ZS5kYXRhKCJ4ZHNvZnRfZGF0ZXRpbWUiKS5zZXRDdXJyZW50VGltZSh0aGlzLnZhbHVlKTsKYnJlYWs7Y2FzZSAidmFsaWRhdGUiOmU9ZS5kYXRhKCJpbnB1dCIpLGUudHJpZ2dlcigiYmx1ci54ZHNvZnQiKX1lbHNlIGUuc2V0T3B0aW9ucyhyKTtyZXR1cm4gMH0ic3RyaW5nIiE9PXR5cGVvZiByJiYoIWEubGF6eUluaXR8fGEub3Blbnx8YS5pbmxpbmU\/ZyhmKHRoaXMpKTpJKGYodGhpcykpKX0pfTtmLmZuLmRhdGV0aW1lcGlja2VyLmRlZmF1bHRzPUp9KTsKKGZ1bmN0aW9uKGYpeyJmdW5jdGlvbiI9PT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbImpxdWVyeSJdLGYpOiJvYmplY3QiPT09dHlwZW9mIGV4cG9ydHM\/bW9kdWxlLmV4cG9ydHM9ZjpmKGpRdWVyeSl9KShmdW5jdGlvbihmKXtmdW5jdGlvbiBNKGUpe3ZhciBoPWV8fHdpbmRvdy5ldmVudCxjPXYuY2FsbChhcmd1bWVudHMsMSksdD0wLHU9MCx3PTAsRT0wO2U9Zi5ldmVudC5maXgoaCk7ZS50eXBlPSJtb3VzZXdoZWVsIjsiZGV0YWlsImluIGgmJih1PS0xKmguZGV0YWlsKTsid2hlZWxEZWx0YSJpbiBoJiYodT1oLndoZWVsRGVsdGEpOyJ3aGVlbERlbHRhWSJpbiBoJiYodT1oLndoZWVsRGVsdGFZKTsid2hlZWxEZWx0YVgiaW4gaCYmKHQ9LTEqaC53aGVlbERlbHRhWCk7ImF4aXMiaW4gaCYmaC5heGlzPT09aC5IT1JJWk9OVEFMX0FYSVMmJih0PS0xKnUsdT0wKTt2YXIgQz0wPT09dT90OnU7ImRlbHRhWSJpbiBoJiYoQz11PS0xKmguZGVsdGFZKTsiZGVsdGFYImluCmgmJih0PWguZGVsdGFYLDA9PT11JiYoQz0tMSp0KSk7aWYoMCE9PXV8fDAhPT10KXtpZigxPT09aC5kZWx0YU1vZGUpe3ZhciB5PWYuZGF0YSh0aGlzLCJtb3VzZXdoZWVsLWxpbmUtaGVpZ2h0Iik7Qyo9eTt1Kj15O3QqPXl9ZWxzZSAyPT09aC5kZWx0YU1vZGUmJih5PWYuZGF0YSh0aGlzLCJtb3VzZXdoZWVsLXBhZ2UtaGVpZ2h0IiksQyo9eSx1Kj15LHQqPXkpO3k9TWF0aC5tYXgoTWF0aC5hYnModSksTWF0aC5hYnModCkpO2lmKCFEfHx5PEQpRD15LGcuc2V0dGluZ3MuYWRqdXN0T2xkRGVsdGFzJiYibW91c2V3aGVlbCI9PT1oLnR5cGUmJjA9PT15JTEyMCYmKEQvPTQwKTtnLnNldHRpbmdzLmFkanVzdE9sZERlbHRhcyYmIm1vdXNld2hlZWwiPT09aC50eXBlJiYwPT09eSUxMjAmJihDLz00MCx0Lz00MCx1Lz00MCk7Qz1NYXRoWzE8PUM\/ImZsb29yIjoiY2VpbCJdKEMvRCk7dD1NYXRoWzE8PXQ\/ImZsb29yIjoiY2VpbCJdKHQvRCk7dT1NYXRoWzE8PXU\/ImZsb29yIjoiY2VpbCJdKHUvCkQpO2cuc2V0dGluZ3Mubm9ybWFsaXplT2Zmc2V0JiZ0aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCYmKGg9dGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx3PWUuY2xpZW50WC1oLmxlZnQsRT1lLmNsaWVudFktaC50b3ApO2UuZGVsdGFYPXQ7ZS5kZWx0YVk9dTtlLmRlbHRhRmFjdG9yPUQ7ZS5vZmZzZXRYPXc7ZS5vZmZzZXRZPUU7ZS5kZWx0YU1vZGU9MDtjLnVuc2hpZnQoZSxDLHQsdSk7YSYmY2xlYXJUaW1lb3V0KGEpO2E9c2V0VGltZW91dChKLDIwMCk7cmV0dXJuKGYuZXZlbnQuZGlzcGF0Y2h8fGYuZXZlbnQuaGFuZGxlKS5hcHBseSh0aGlzLGMpfX1mdW5jdGlvbiBKKCl7RD1udWxsfXZhciBHPVsid2hlZWwiLCJtb3VzZXdoZWVsIiwiRE9NTW91c2VTY3JvbGwiLCJNb3pNb3VzZVBpeGVsU2Nyb2xsIl0scj0ib253aGVlbCJpbiBkb2N1bWVudHx8OTw9ZG9jdW1lbnQuZG9jdW1lbnRNb2RlP1sid2hlZWwiXTpbIm1vdXNld2hlZWwiLCJEb21Nb3VzZVNjcm9sbCIsIk1vek1vdXNlUGl4ZWxTY3JvbGwiXSwKdj1BcnJheS5wcm90b3R5cGUuc2xpY2UsYSxEO2lmKGYuZXZlbnQuZml4SG9va3MpZm9yKHZhciBJPUcubGVuZ3RoO0k7KWYuZXZlbnQuZml4SG9va3NbR1stLUldXT1mLmV2ZW50Lm1vdXNlSG9va3M7dmFyIGc9Zi5ldmVudC5zcGVjaWFsLm1vdXNld2hlZWw9e3ZlcnNpb246IjMuMS4xMiIsc2V0dXA6ZnVuY3Rpb24oKXtpZih0aGlzLmFkZEV2ZW50TGlzdGVuZXIpZm9yKHZhciBlPXIubGVuZ3RoO2U7KXRoaXMuYWRkRXZlbnRMaXN0ZW5lcihyWy0tZV0sTSwhMSk7ZWxzZSB0aGlzLm9ubW91c2V3aGVlbD1NO2YuZGF0YSh0aGlzLCJtb3VzZXdoZWVsLWxpbmUtaGVpZ2h0IixnLmdldExpbmVIZWlnaHQodGhpcykpO2YuZGF0YSh0aGlzLCJtb3VzZXdoZWVsLXBhZ2UtaGVpZ2h0IixnLmdldFBhZ2VIZWlnaHQodGhpcykpfSx0ZWFyZG93bjpmdW5jdGlvbigpe2lmKHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcilmb3IodmFyIGU9ci5sZW5ndGg7ZTspdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKHJbLS1lXSwKTSwhMSk7ZWxzZSB0aGlzLm9ubW91c2V3aGVlbD1udWxsO2YucmVtb3ZlRGF0YSh0aGlzLCJtb3VzZXdoZWVsLWxpbmUtaGVpZ2h0Iik7Zi5yZW1vdmVEYXRhKHRoaXMsIm1vdXNld2hlZWwtcGFnZS1oZWlnaHQiKX0sZ2V0TGluZUhlaWdodDpmdW5jdGlvbihlKXtlPWYoZSk7dmFyIGg9ZVsib2Zmc2V0UGFyZW50ImluIGYuZm4\/Im9mZnNldFBhcmVudCI6InBhcmVudCJdKCk7aC5sZW5ndGh8fChoPWYoImJvZHkiKSk7cmV0dXJuIHBhcnNlSW50KGguY3NzKCJmb250U2l6ZSIpLDEwKXx8cGFyc2VJbnQoZS5jc3MoImZvbnRTaXplIiksMTApfHwxNn0sZ2V0UGFnZUhlaWdodDpmdW5jdGlvbihlKXtyZXR1cm4gZihlKS5oZWlnaHQoKX0sc2V0dGluZ3M6e2FkanVzdE9sZERlbHRhczohMCxub3JtYWxpemVPZmZzZXQ6ITB9fTtmLmZuLmV4dGVuZCh7bW91c2V3aGVlbDpmdW5jdGlvbihlKXtyZXR1cm4gZT90aGlzLm9uKCJtb3VzZXdoZWVsIixlKTp0aGlzLnRyaWdnZXIoIm1vdXNld2hlZWwiKX0sCnVubW91c2V3aGVlbDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5vZmYoIm1vdXNld2hlZWwiLGUpfX0pfSk7CiFmdW5jdGlvbihmKXsiZnVuY3Rpb24iPT09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoW10sZik6Im9iamVjdCI9PT10eXBlb2YgZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz1mOmYoKX0oZnVuY3Rpb24oKXtmdW5jdGlvbiBmKGcpe3JldHVybiBmdW5jdGlvbihlKXtmb3IodmFyIGg9W10sYz0wLHQ9Zy5sZW5ndGg7Yzx0O2MrKyloLnB1c2goInN0cmluZyI9PT10eXBlb2YgZ1tjXT9nW2NdOmdbY10oZSkpO3JldHVybiBoLmpvaW4oIiIpfX1mdW5jdGlvbiBNKGcsZSxoKXtyZXR1cm4gZnVuY3Rpb24oYyl7dmFyIHQ9bmV3IERhdGU7aWYoKGM9Yy5tYXRjaChhW2VdKSkmJjA8Yy5sZW5ndGgpe2MueT10LmdldEZ1bGxZZWFyKCk7Yy5tPXQuZ2V0TW9udGgoKTtjLmQ9dC5nZXREYXRlKCk7Yy5oPS0xO2MuaT0tMTtjLnM9LTE7dD0wO2Zvcih2YXIgdT1oLmxlbmd0aDt0PHU7dCsrKWhbdF0oYyk7aWYoMDxjLnkmJjA8PWMubSYmMDxjLmQmJjA8PWMuaCYmMDw9Yy5pJiYwPD1jLnMpcmV0dXJuIG5ldyBEYXRlKGMueSwKYy5tLGMuZCxjLmgsYy5pLGMucyk7aWYoMDxjLnkmJjA8PWMubSYmMDxjLmQmJjA8PWMuaCYmMDw9Yy5pKXJldHVybiBuZXcgRGF0ZShjLnksYy5tLGMuZCxjLmgsYy5pKTtpZigwPGMueSYmMDw9Yy5tJiYwPGMuZCYmMDw9Yy5oKXJldHVybiBuZXcgRGF0ZShjLnksYy5tLGMuZCxjLmgpO2lmKDA8Yy55JiYwPD1jLm0mJjA8Yy5kKXJldHVybiBuZXcgRGF0ZShjLnksYy5tLGMuZCk7aWYoMDxjLnkmJjA8PWMubSlyZXR1cm4gbmV3IERhdGUoYy55LGMubSk7aWYoMDxjLnkpcmV0dXJuIG5ldyBEYXRlKGMueSl9cmV0dXJuIG51bGx9fWZ1bmN0aW9uIEooZyxlKXtzd2l0Y2goZyl7Y2FzZSAiRCI6cmV0dXJue2c6MCxzOiIoPzpTdW58TW9ufFR1ZXxXZWR8VGh1fEZyaXxTYXQpIn07Y2FzZSAiaiI6Y2FzZSAiZCI6cmV0dXJue2c6MSxhOmZ1bmN0aW9uKGgpe2guZD1wYXJzZUludChoW2VdLDEwKX0sczoiKFxcZHsxLDJ9KSJ9O2Nhc2UgImwiOnJldHVybntnOjAsczoiKD86IitEYXRlLmRheU5hbWVzLmpvaW4oInwiKSsKIikifTtjYXNlICJTIjpyZXR1cm57ZzowLHM6Iig\/OnN0fG5kfHJkfHRoKSJ9O2Nhc2UgInciOnJldHVybntnOjAsczoiXFxkIn07Y2FzZSAieiI6cmV0dXJue2c6MCxzOiIoPzpcXGR7MSwzfSkifTtjYXNlICJXIjpyZXR1cm57ZzowLHM6Iig\/OlxcZHsyfSkifTtjYXNlICJGIjpyZXR1cm57ZzoxLGE6ZnVuY3Rpb24oaCl7aC5tPXBhcnNlSW50KERhdGUubW9udGhOdW1iZXJzW2hbZV0uc3Vic3RyaW5nKDAsMyldLDEwKX0sczoiKCIrRGF0ZS5tb250aE5hbWVzLmpvaW4oInwiKSsiKSJ9O2Nhc2UgIk0iOnJldHVybntnOjEsYTpmdW5jdGlvbihoKXtoLm09cGFyc2VJbnQoRGF0ZS5tb250aE51bWJlcnNbaFtlXV0sMTApfSxzOiIoSmFufEZlYnxNYXJ8QXByfE1heXxKdW58SnVsfEF1Z3xTZXB8T2N0fE5vdnxEZWMpIn07Y2FzZSAibiI6Y2FzZSAibSI6cmV0dXJue2c6MSxhOmZ1bmN0aW9uKGgpe2gubT1wYXJzZUludChoW2VdLDEwKS0xfSxzOiIoXFxkezEsMn0pIn07Y2FzZSAidCI6cmV0dXJue2c6MCwKczoiXFxkezEsMn0ifTtjYXNlICJMIjpyZXR1cm57ZzowLHM6Iig\/OjF8MCkifTtjYXNlICJZIjpyZXR1cm57ZzoxLGE6ZnVuY3Rpb24oaCl7aC55PXBhcnNlSW50KGhbZV0sMTApfSxzOiIoXFxkezR9KSJ9O2Nhc2UgInkiOnJldHVybntnOjEsYTpmdW5jdGlvbihoKXt2YXIgYz1wYXJzZUludChoW2VdLDEwKTtoLnk9Yz5EYXRlLnkya1llYXI\/MTkwMCtjOjJFMytjfSxzOiIoXFxkezEsMn0pIn07Y2FzZSAiYSI6cmV0dXJue2c6MSxhOmZ1bmN0aW9uKGgpeyJhbSI9PT1oW2VdPzEyPT1oLmgmJihoLmg9MCk6MTI+aC5oJiYoaC5oKz0xMil9LHM6IihhbXxwbSkifTtjYXNlICJBIjpyZXR1cm57ZzoxLGE6ZnVuY3Rpb24oaCl7IkFNIj09PWhbZV0\/MTI9PWguaCYmKGguaD0wKToxMj5oLmgmJihoLmgrPTEyKX0sczoiKEFNfFBNKSJ9O2Nhc2UgImciOmNhc2UgIkciOmNhc2UgImgiOmNhc2UgIkgiOnJldHVybntnOjEsYTpmdW5jdGlvbihoKXtoLmg9cGFyc2VJbnQoaFtlXSwxMCl9LHM6IihcXGR7MSwyfSkifTsKY2FzZSAiaSI6cmV0dXJue2c6MSxhOmZ1bmN0aW9uKGgpe2guaT1wYXJzZUludChoW2VdLDEwKX0sczoiKFxcZHsyfSkifTtjYXNlICJzIjpyZXR1cm57ZzoxLGE6ZnVuY3Rpb24oaCl7aC5zPXBhcnNlSW50KGhbZV0sMTApfSxzOiIoXFxkezJ9KSJ9O2Nhc2UgIk8iOnJldHVybntnOjAsczoiWystXVxcZHs0fSJ9O2Nhc2UgIlQiOnJldHVybntnOjAsczoiW0EtWl17M30ifTtjYXNlICJaIjpyZXR1cm57ZzowLHM6IlsrLV1cXGR7MSw1fSJ9O2RlZmF1bHQ6cmV0dXJue2c6MCxzOkcoZyl9fX1mdW5jdGlvbiBHKGcpe3JldHVybiBnLnJlcGxhY2UoLygnfFxcKS9nLCJcXCQxIil9ZnVuY3Rpb24gcihnLGUsaCl7Zz0iIitnO2ZvcihoPSIiK2h8fCIgIjtnLmxlbmd0aDxlOylnPWgrZztyZXR1cm4gZ312YXIgdj17fSxhPVtdLEQ9e30sST17ZDpmdW5jdGlvbihnKXtyZXR1cm4gcihnLmdldERhdGUoKSwyLCIwIil9LEQ6ZnVuY3Rpb24oZyl7cmV0dXJuIERhdGUuZGF5TmFtZXNbZy5nZXREYXkoKV0uc3Vic3RyaW5nKDAsCjMpfSxqOmZ1bmN0aW9uKGcpe3JldHVybiBnLmdldERhdGUoKX0sbDpmdW5jdGlvbihnKXtyZXR1cm4gRGF0ZS5kYXlOYW1lc1tnLmdldERheSgpXX0sUzpmdW5jdGlvbihnKXtyZXR1cm4gZy5nZXRTdWZmaXgoKX0sdzpmdW5jdGlvbihnKXtyZXR1cm4gZy5nZXREYXkoKX0sejpmdW5jdGlvbihnKXtyZXR1cm4gZy5nZXREYXlPZlllYXIoKX0sVzpmdW5jdGlvbihnKXtyZXR1cm4gZy5nZXRXZWVrT2ZZZWFyKCl9LEY6ZnVuY3Rpb24oZyl7cmV0dXJuIERhdGUubW9udGhOYW1lc1tnLmdldE1vbnRoKCldfSxtOmZ1bmN0aW9uKGcpe3JldHVybiByKGcuZ2V0TW9udGgoKSsxLDIsIjAiKX0sTTpmdW5jdGlvbihnKXtyZXR1cm4gRGF0ZS5tb250aE5hbWVzW2cuZ2V0TW9udGgoKV0uc3Vic3RyaW5nKDAsMyl9LG46ZnVuY3Rpb24oZyl7cmV0dXJuIGcuZ2V0TW9udGgoKSsxfSx0OmZ1bmN0aW9uKGcpe3JldHVybiBnLmdldERheXNJbk1vbnRoKCl9LEw6ZnVuY3Rpb24oZyl7cmV0dXJuIGcuaXNMZWFwWWVhcigpPwoxOjB9LFk6ZnVuY3Rpb24oZyl7cmV0dXJuIGcuZ2V0RnVsbFllYXIoKX0seTpmdW5jdGlvbihnKXtyZXR1cm4oIiIrZy5nZXRGdWxsWWVhcigpKS5zdWJzdHJpbmcoMiw0KX0sYTpmdW5jdGlvbihnKXtyZXR1cm4gMTI+Zy5nZXRIb3VycygpPyJhbSI6InBtIn0sQTpmdW5jdGlvbihnKXtyZXR1cm4gMTI+Zy5nZXRIb3VycygpPyJBTSI6IlBNIn0sZzpmdW5jdGlvbihnKXtyZXR1cm4gZy5nZXRIb3VycygpJTEyP2cuZ2V0SG91cnMoKSUxMjoxMn0sRzpmdW5jdGlvbihnKXtyZXR1cm4gZy5nZXRIb3VycygpfSxoOmZ1bmN0aW9uKGcpe3JldHVybiByKGcuZ2V0SG91cnMoKSUxMj9nLmdldEhvdXJzKCklMTI6MTIsMiwiMCIpfSxIOmZ1bmN0aW9uKGcpe3JldHVybiByKGcuZ2V0SG91cnMoKSwyLCIwIil9LGk6ZnVuY3Rpb24oZyl7cmV0dXJuIHIoZy5nZXRNaW51dGVzKCksMiwiMCIpfSxzOmZ1bmN0aW9uKGcpe3JldHVybiByKGcuZ2V0U2Vjb25kcygpLDIsIjAiKX0sTzpmdW5jdGlvbihnKXtyZXR1cm4gZy5nZXRHTVRPZmZzZXQoKX0sClQ6ZnVuY3Rpb24oZyl7cmV0dXJuIGcuZ2V0VGltZXpvbmUoKX0sWjpmdW5jdGlvbihnKXtyZXR1cm4tNjAqZy5nZXRUaW1lem9uZU9mZnNldCgpfX07RGF0ZS5wcm90b3R5cGUuZGF0ZUZvcm1hdD1mdW5jdGlvbihnKXtpZighRFtnXSl7Zm9yKHZhciBlPVtdLGg9ITEsYyx0PTA7dDxnLmxlbmd0aDsrK3QpYz1nLmNoYXJBdCh0KSxofHwiXFwiIT09Yz9oPyhoPSExLGUucHVzaChHKGMpKSk6ZS5wdXNoKElbY118fEcoYykpOmg9ITA7RFtnXT1mKGUpfXJldHVybiBEW2ddKHRoaXMpfTtEYXRlLnBhcnNlRGF0ZT1mdW5jdGlvbihnLGUpe2lmKCF2W2VdKXtmb3IodmFyIGg9YS5sZW5ndGgsYz0xLHQ9IiIsdT0hMSx3LEU9W10sQz0wO0M8ZS5sZW5ndGg7KytDKXc9ZS5jaGFyQXQoQyksdXx8IlxcIiE9PXc\/dT8odT0hMSx0Kz1HKHcpKToodz1KKHcsYyksYys9dy5nLHQrPXcucyx3LmcmJncuYSYmRS5wdXNoKHcuYSkpOnU9ITA7YVtoXT1uZXcgUmVnRXhwKCJeIit0KyIkIik7dltlXT1NKGUsCmgsRSl9cmV0dXJuIHZbZV0oZyl9O0RhdGUucHJvdG90eXBlLmdldFRpbWV6b25lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9TdHJpbmcoKS5yZXBsYWNlKC9eLio\/IChbQS1aXXszfSkgWzAtOV17NH0uKiQvLCIkMSIpLnJlcGxhY2UoL14uKj9cKChbQS1aXSlbYS16XSsgKFtBLVpdKVthLXpdKyAoW0EtWl0pW2Etel0rXCkkLywiJDEkMiQzIil9O0RhdGUucHJvdG90eXBlLmdldEdNVE9mZnNldD1mdW5jdGlvbigpe3JldHVybigwPHRoaXMuZ2V0VGltZXpvbmVPZmZzZXQoKT8iLSI6IisiKStyKE1hdGguZmxvb3IodGhpcy5nZXRUaW1lem9uZU9mZnNldCgpLzYwKSwyLCIwIikrcih0aGlzLmdldFRpbWV6b25lT2Zmc2V0KCklNjAsMiwiMCIpfTtEYXRlLnByb3RvdHlwZS5nZXREYXlPZlllYXI9ZnVuY3Rpb24oKXt2YXIgZz0wO0RhdGUuZGF5c0luTW9udGhbMV09dGhpcy5pc0xlYXBZZWFyKCk\/Mjk6Mjg7Zm9yKHZhciBlPTA7ZTx0aGlzLmdldE1vbnRoKCk7KytlKWcrPURhdGUuZGF5c0luTW9udGhbZV07CnJldHVybiBnK3RoaXMuZ2V0RGF0ZSgpLTF9O0RhdGUucHJvdG90eXBlLmdldFdlZWtPZlllYXI9ZnVuY3Rpb24oKXt2YXIgZz10aGlzLmdldERheU9mWWVhcigpKyg0LXRoaXMuZ2V0RGF5KCkpLGU9Ny0obmV3IERhdGUodGhpcy5nZXRGdWxsWWVhcigpLDAsMSkpLmdldERheSgpKzQ7cmV0dXJuIHIoKGctZSkvNysxLDIsIjAiKX07RGF0ZS5wcm90b3R5cGUuaXNMZWFwWWVhcj1mdW5jdGlvbigpe3ZhciBnPXRoaXMuZ2V0RnVsbFllYXIoKTtyZXR1cm4hKDAhPT0oZyYzKXx8IShnJTEwMHx8MD09PWclNDAwJiZnKSl9O0RhdGUucHJvdG90eXBlLmdldEZpcnN0RGF5T2ZNb250aD1mdW5jdGlvbigpe3ZhciBnPSh0aGlzLmdldERheSgpLSh0aGlzLmdldERhdGUoKS0xKSklNztyZXR1cm4gMD5nP2crNzpnfTtEYXRlLnByb3RvdHlwZS5nZXRMYXN0RGF5T2ZNb250aD1mdW5jdGlvbigpe3ZhciBnPSh0aGlzLmdldERheSgpKyhEYXRlLmRheXNJbk1vbnRoW3RoaXMuZ2V0TW9udGgoKV0tdGhpcy5nZXREYXRlKCkpKSUKNztyZXR1cm4gMD5nP2crNzpnfTtEYXRlLnByb3RvdHlwZS5nZXREYXlzSW5Nb250aD1mdW5jdGlvbigpe0RhdGUuZGF5c0luTW9udGhbMV09dGhpcy5pc0xlYXBZZWFyKCk\/Mjk6Mjg7cmV0dXJuIERhdGUuZGF5c0luTW9udGhbdGhpcy5nZXRNb250aCgpXX07RGF0ZS5wcm90b3R5cGUuZ2V0U3VmZml4PWZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZ2V0RGF0ZSgpKXtjYXNlIDE6Y2FzZSAyMTpjYXNlIDMxOnJldHVybiJzdCI7Y2FzZSAyOmNhc2UgMjI6cmV0dXJuIm5kIjtjYXNlIDM6Y2FzZSAyMzpyZXR1cm4icmQiO2RlZmF1bHQ6cmV0dXJuInRoIn19O0RhdGUuZGF5c0luTW9udGg9WzMxLDI4LDMxLDMwLDMxLDMwLDMxLDMxLDMwLDMxLDMwLDMxXTtEYXRlLm1vbnRoTmFtZXM9IkphbnVhcnkgRmVicnVhcnkgTWFyY2ggQXByaWwgTWF5IEp1bmUgSnVseSBBdWd1c3QgU2VwdGVtYmVyIE9jdG9iZXIgTm92ZW1iZXIgRGVjZW1iZXIiLnNwbGl0KCIgIik7RGF0ZS5kYXlOYW1lcz0iU3VuZGF5IE1vbmRheSBUdWVzZGF5IFdlZG5lc2RheSBUaHVyc2RheSBGcmlkYXkgU2F0dXJkYXkiLnNwbGl0KCIgIik7CkRhdGUueTJrWWVhcj01MDtEYXRlLm1vbnRoTnVtYmVycz17SmFuOjAsRmViOjEsTWFyOjIsQXByOjMsTWF5OjQsSnVuOjUsSnVsOjYsQXVnOjcsU2VwOjgsT2N0OjksTm92OjEwLERlYzoxMX07RGF0ZS5wYXR0ZXJucz17SVNPODYwMUxvbmdQYXR0ZXJuOiJZLW0tZCBIOmk6cyIsSVNPODYwMVNob3J0UGF0dGVybjoiWS1tLWQiLFNob3J0RGF0ZVBhdHRlcm46Im4vai9ZIixMb25nRGF0ZVBhdHRlcm46ImwsIEYgZCwgWSIsRnVsbERhdGVUaW1lUGF0dGVybjoibCwgRiBkLCBZIGc6aTpzIEEiLE1vbnRoRGF5UGF0dGVybjoiRiBkIixTaG9ydFRpbWVQYXR0ZXJuOiJnOmkgQSIsTG9uZ1RpbWVQYXR0ZXJuOiJnOmk6cyBBIixTb3J0YWJsZURhdGVUaW1lUGF0dGVybjoiWS1tLWRcXFRIOmk6cyIsVW5pdmVyc2FsU29ydGFibGVEYXRlVGltZVBhdHRlcm46IlktbS1kIEg6aTpzTyIsWWVhck1vbnRoUGF0dGVybjoiRiwgWSJ9fSk7Ci8qKiAvbS9qcy9tYWlsU2NoZWR1bGUuMi4wLmpzICoqLwp2YXIgX19fZDJjX21haWxTY2hlZHVsZTIwanNfY19vbj0iMjAyNi0wMS0xMiAxMDoxNDoxMCI7J3VzZSBzdHJpY3QnO2xldCBkZWFsZXJTdG9yZUhvdXJzPXt9OwpmdW5jdGlvbiBNYWlsU2NoZWR1bGUoaCl7dmFyIGM9e2ZpcnN0Q2hvaWNlOiIiLHNlY29uZENob2ljZToiIix3YWl0aW5nT25TaXRlOiIiLHRyYW5zcG9ydE9wdGlvbjoiIixzY29wZTpoLnNjb3BlLGZpcnN0Q2hvaWNlT2JqZWN0SWQ6ImZpcnN0RGF0ZSIsc2Vjb25kQ2hvaWNlT2JqZWN0SWQ6InNlY29uZERhdGUiLGZpcnN0SG91clNlbGVjdDoiZmlyc3REYXRlU2VsZWN0IixzZWNvbmRIb3VyU2VsZWN0OiJzZWNvbmREYXRlU2VsZWN0IixzZXR1cERhdGU6ZnVuY3Rpb24oYSxiLGQpe3ZhciBlPSQoIiMiK2EpLGc9bmV3IERhdGU7Yy5pc0RhdGUoYil8fChiPW5ldyBEYXRlKTtjLmlzRGF0ZShkKXx8KGQ9bmV3IERhdGUoZy5nZXRUaW1lKCkrYy5kYXlUb01pbGxpc2Vjb25kcygzMCkpKTt2YXIgaz1uZXcgRGF0ZTtrLnNldE1pbnV0ZXMoay5nZXRNaW51dGVzKCkrMzApO2Uub24oImtleWRvd24iLGZ1bmN0aW9uKGYpe2YucHJldmVudERlZmF1bHQoKTtyZXR1cm4hMX0pO2UuZGF0YSgiZGF0ZXRpbWVwaWNrZXJPcHRpb25zIiwKe2RhdGVTZWxlY3RlZDohMSx0aW1lU2VsZWN0ZWQ6ITF9KTskKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCkmJiJFTkdMSVNIIj09PSQoIiNhY3RpdmVzaXRlbGFuZ3VhZ2UiKS52YWwoKXx8JC5kYXRldGltZXBpY2tlci5zZXRMb2NhbGUoImZyIik7ZS5kYXRldGltZXBpY2tlcigkLmV4dGVuZCh7fSxwLHtpZDphKyJfZGF0ZVRpbWVQaWNrZXIiLG1pbkRhdGU6YixtYXhEYXRlOmQsZGlzYWJsZWREYXRlczpjLmdldENsb3NlZERhdGVzQmV0d2VlbihiLGQpLG9uQ2hhbmdlRGF0ZVRpbWU6ZnVuY3Rpb24oZil7bnVsbCE9ZiYmZi50b0RhdGVTdHJpbmcoKT09PWcudG9EYXRlU3RyaW5nKCk\/dGhpcy5zZXRPcHRpb25zKHttaW5UaW1lOmsuZGF0ZUZvcm1hdCgiSDppIil9KTp0aGlzLnNldE9wdGlvbnMoe21pblRpbWU6ITF9KX0sb25TaG93OmZ1bmN0aW9uKGYpe2Y9JCh0aGlzKS5kYXRhKCkub3B0aW9ucy5kYXRlU2VsZWN0ZWQ\/JCh0aGlzKS5kYXRhKCkub3B0aW9ucy52YWx1ZTpiOwpjLnVwZGF0ZUhvdXJzKGYsYSl9fSkpfSxpbml0OmZ1bmN0aW9uKCl7dmFyIGE9Yy5nZXRQaWNrZXJEYXRlUmFuZ2UoKTtpZigxPiQoYy5zY29wZSkubGVuZ3RoKXJldHVybiBzZXRUaW1lb3V0KGMuaW5pdCwxRTQpO2lmKCEkKGMuc2NvcGUpLmlzKCI6dmlzaWJsZSIpKXJldHVybiBzZXRUaW1lb3V0KGMuaW5pdCwxRTMpO2E\/KCQoIiMiK2MuZmlyc3RDaG9pY2VPYmplY3RJZCkucHJvcCgiZGlzYWJsZWQiLCExKSwkKCIjIitjLnNlY29uZENob2ljZU9iamVjdElkKS5wcm9wKCJkaXNhYmxlZCIsITEpLGMuc2V0dXBEYXRlKGMuZmlyc3RDaG9pY2VPYmplY3RJZCxhLnN0YXJ0RGF0ZSxhLmVuZERhdGUpLGMuc2V0dXBEYXRlKGMuc2Vjb25kQ2hvaWNlT2JqZWN0SWQsYS5zdGFydERhdGUsYS5lbmREYXRlKSk6KCQoIiMiK2MuZmlyc3RDaG9pY2VPYmplY3RJZCkucHJvcCgiZGlzYWJsZWQiLCEwKSwkKCIjIitjLmZpcnN0Q2hvaWNlT2JqZWN0SWQpLmNsb3Nlc3QoIi5qcVRyYW5zZm9ybUlucHV0V3JhcHBlciIpLmNzcyh7ImJhY2tncm91bmQtY29sb3IiOiItaW50ZXJuYWwtbGlnaHQtZGFyay1jb2xvcihyZ2JhKDIzOSwgMjM5LCAyMzksIDAuMyksIHJnYmEoNTksIDU5LCA1OSwgMC4zKSkiLAoiYm9yZGVyLWNvbG9yIjoicmdiYSgxMTgsIDExOCwgMTE4LCAwLjMpIn0pLCQoIiMiK2Muc2Vjb25kQ2hvaWNlT2JqZWN0SWQpLnByb3AoImRpc2FibGVkIiwhMCksJCgiIyIrYy5zZWNvbmRDaG9pY2VPYmplY3RJZCkuY2xvc2VzdCgiLmpxVHJhbnNmb3JtSW5wdXRXcmFwcGVyIikuY3NzKHsiYmFja2dyb3VuZC1jb2xvciI6Ii1pbnRlcm5hbC1saWdodC1kYXJrLWNvbG9yKHJnYmEoMjM5LCAyMzksIDIzOSwgMC4zKSwgcmdiYSg1OSwgNTksIDU5LCAwLjMpKSIsImJvcmRlci1jb2xvciI6InJnYmEoMTE4LCAxMTgsIDExOCwgMC4zKSJ9KSl9LGFzc2lnblZhbHVlczpmdW5jdGlvbigpe3ZhciBhPSQoYy5zY29wZSksYj1udWxsO3N3aXRjaChtYWlsUGFnZS5tYWlsSUQpe2Nhc2UgIlNlcnZpY2VSZXF1ZXN0Ijp2YXIgZD1hLmZpbmQoIiNmaXJzdERhdGUiKTtiPWEuZmluZCgiI3NlY29uZERhdGUiKTticmVhaztjYXNlICJzZXJ2aWNlTWVudSI6ZD1hLmZpbmQoc2VydmljZUZvcm1fbWVudVNlcnZpY2UuZGF0ZUlkKTsKYnJlYWs7Y2FzZSAiaGVhZGVyU2VydmljZSI6ZD1hLmZpbmQoc2VydmljZUZvcm1faGVhZGVyU2VydmljZS5kYXRlSWQpO2JyZWFrO2RlZmF1bHQ6ZD1hLmZpbmQoIiMiK2MuZmlyc3RDaG9pY2VPYmplY3RJZCksYj1hLmZpbmQoIiMiK2Muc2Vjb25kQ2hvaWNlT2JqZWN0SWQpfWMuZmlyc3RDaG9pY2U9Yy5nZXREYXRlQ2hvaWNlKGQpO2Muc2Vjb25kQ2hvaWNlPWMuZ2V0RGF0ZUNob2ljZShiKTtjLndhaXRpbmdPblNpdGU9YS5maW5kKCJzZWxlY3RbbmFtZT0nd2FpdGluZ29uc2l0ZSddIG9wdGlvbjpzZWxlY3RlZCIpLnZhbCgpO2MudHJhbnNwb3J0T3B0aW9uPWMuZ2V0VHJhbnNwb3J0T3B0aW9uKCl9LGdldFRyYW5zcG9ydE9wdGlvbjpmdW5jdGlvbigpe3ZhciBhPSQoYy5zY29wZSkuZmluZCgic2VsZWN0W25hbWU9J3ByZWZlcnJlZFRyYW5zcG9ydCddIG9wdGlvbjpzZWxlY3RlZCIpO3JldHVybiBhLmxlbmd0aD9hLnZhbCgpOiIifSxnZXRUcmFuc3BvcnRPcHRpb25UZXh0OmZ1bmN0aW9uKCl7dmFyIGE9CiQoYy5zY29wZSkuZmluZCgic2VsZWN0W25hbWU9J3ByZWZlcnJlZFRyYW5zcG9ydCddIG9wdGlvbjpzZWxlY3RlZCIpO3JldHVybiBhLmxlbmd0aD9hLnRleHQoKToiIn0sdXBkYXRlSG91cnM6ZnVuY3Rpb24oYSxiKXt2YXIgZD0kKCIjIitiKSxlPWMuZ2V0QWxsb3dlZFRpbWVzKGEsYik7Yy5kaXNwbGF5UGlja2VyTWVzc2FnZShiLGMuZ2V0RGF0ZVNjaGVkdWxlKGEpKTswPGUubGVuZ3RoPyhiPXt0aW1lcGlja2VyOiEwLGFsbG93VGltZXM6ZX0sIiI9PT1kLnZhbCgpP2IudmFsdWU9YS5kYXRlRm9ybWF0KCJZL20vZCIpKyIgIitlWzBdOmIudmFsdWU9YSxkLmRhdGV0aW1lcGlja2VyKGIpKTooZC52YWwoIiIpLGQuZGF0ZXRpbWVwaWNrZXIoe3RpbWVwaWNrZXI6ITF9KSl9LGNsb3NlZEFmdGVyTWlkbmlnaHQ6ZnVuY3Rpb24oYSl7YT1jLmdldERhdGVTY2hlZHVsZShhKTtyZXR1cm4idW5kZWZpbmVkIj09PWEuc3RhcnRIb3VyPyExOmEuZW5kSG91cjxhLnN0YXJ0SG91ciYmMCE9PQphLmVuZEhvdXJ9LGRpc3BsYXlQaWNrZXJNZXNzYWdlOmZ1bmN0aW9uKGEsYil7dmFyIGQ9IiI7c3dpdGNoKGIuc3RhdHVzKXtjYXNlICJjbG9zZWQiOmQ9JCgiLnRleHRDbG9zZWQiKS52YWwoKTticmVhaztjYXNlICJyZHYiOmQ9JCgiLnRleHRSZHYiKS52YWwoKTticmVhaztjYXNlICJjb250YWN0IjpkPWIubWVzc2FnZX0kKCIjIithKyJfZGF0ZVRpbWVQaWNrZXIgLmRhdGVUaW1lUGlja2VyTWVzc2FnZSIpLmh0bWwoZCl9LHJlbW92ZUNsb3NlZEhvdXJzOmZ1bmN0aW9uKGEpe3ZhciBiPSQoYy5zY29wZSkuZmluZCgiLkNsb3NlZFNjaGVkdWxlIik7aWYoIWIubGVuZ3RofHwiY2xvc2VkIj09PWIudmFsKCkpcmV0dXJuIGE7dmFyIGQ9W10sZT1wYXJzZUludChiLmF0dHIoInN0YXJ0aG91ciIpKSxnPXBhcnNlSW50KGIuYXR0cigic3RhcnRtaW4iKSksaz1wYXJzZUludChiLmF0dHIoImVuZGhvdXIiKSk7Yj1wYXJzZUludChiLmF0dHIoImVuZG1pbiIpKTt2YXIgZj1uZXcgRGF0ZTsKZi5zZXRIb3VycyhlLGcpO3ZhciBxPW5ldyBEYXRlO3Euc2V0SG91cnMoayxiKTskLmVhY2goYSxmdW5jdGlvbihtLHIpe209ci5zcGxpdCgiOiIpO3ZhciBuPW5ldyBEYXRlO24uc2V0SG91cnMocGFyc2VJbnQobVswXSkscGFyc2VJbnQobVsxXSkpOyhuPGZ8fG4+PXEpJiZkLnB1c2gocil9KTtyZXR1cm4gZH0sZ2V0QWxsb3dlZFRpbWVzOmZ1bmN0aW9uKGEsYil7JCgiIyIrYik7Yj1bXTt2YXIgZD1jLmdldERhdGVTY2hlZHVsZShhKSxlPW5ldyBEYXRlKGEpO2Uuc2V0RGF0ZShhLmdldERhdGUoKS0xKTtlPWMuZ2V0RGF5QmVmb3JlQXBwb2ludG1lbnRzKGUpO2I9Yi5jb25jYXQoZSk7aWYoImNvbmNlc3MiPT09ZC5zdGF0dXN8fCIiPT09ZC5zdGF0dXN8fCJ1bmRlZmluZWQiPT09dHlwZW9mIGQuc3RhdHVzfHwicmR2Ij09PWQuc3RhdHVzKXtlPWQuc3RhcnRIb3VyO3ZhciBnPWQuc3RhcnRNaW47ZD1jLmdldEVuZE9mRGF5KGUsZC5lbmRIb3VyLGQuZW5kTWluKTtlPWMuZ2V0QXBwb2ludG1lbnRzQmV0d2VlbihlLApnLGQuZW5kSG91cixkLmVuZE1pbik7ZT1jLnJlbW92ZUNsb3NlZEhvdXJzKGUpO2I9Yi5jb25jYXQoZSl9aWYoYS50b0RhdGVTdHJpbmcoKT09KG5ldyBEYXRlKS50b0RhdGVTdHJpbmcoKSlmb3IoYT0obmV3IERhdGUpLmdldEhvdXJzKCk7MDxiLmxlbmd0aDspaWYocGFyc2VJbnQoYlswXSk8PWEpYi5zaGlmdCgpO2Vsc2UgYnJlYWs7cmV0dXJuIGJ9LGdldEFwcG9pbnRtZW50c0JldHdlZW46ZnVuY3Rpb24oYSxiLGQsZSl7YSs9MzA9PT1iPy41OjA7ZD1kKygzMD09PWU\/LjU6MCktMTtlPVtdO2ZvcihiPSIxNSI9PSQoIi5TRVJWSUNFX0FQUE9JTlRNRU5UX0xFTkdUSCIpLnZhbCgpPy4yNTouNTthPD1kO2ErPWIpMD09PWElMT9lLnB1c2goYSsiOjAwIik6MD09PWElLjU\/ZS5wdXNoKE1hdGguZmxvb3IoYSkrIjozMCIpOjA9PT0oYS0uMjUpJTE\/ZS5wdXNoKE1hdGguZmxvb3IoYSkrIjoxNSIpOmUucHVzaChNYXRoLmZsb29yKGEpKyI6NDUiKTtyZXR1cm4gZX0sZ2V0Q2xvc2VkRGF0ZXNCZXR3ZWVuOmZ1bmN0aW9uKGEsCmIpe2I9Yy5nZXREYXlzRGlmZihhLGIpO2Zvcih2YXIgZD1bXSxlPVtdLGc9MDtnPGI7ZysrKXt2YXIgaz1uZXcgRGF0ZSgobmV3IERhdGUoYSkpLnNldERhdGUoYS5nZXREYXRlKCkrKGctMSkpKSxmPW5ldyBEYXRlKChuZXcgRGF0ZShhKSkuc2V0RGF0ZShhLmdldERhdGUoKStnKSk7ZS5oYXNPd25Qcm9wZXJ0eShmLmdldERheSgpKXx8KGVbZi5nZXREYXkoKV09Yy5nZXREYXRlU2NoZWR1bGUoZikpOyJjbG9zZWQiIT09ZVtmLmdldERheSgpXS5zdGF0dXMmJiJvbmxpbmUiIT09ZVtmLmdldERheSgpXS5zdGF0dXN8fGMuY2xvc2VkQWZ0ZXJNaWRuaWdodChrKXx8ZC5wdXNoKGYuZGF0ZUZvcm1hdCgiWS9tL2QiKSl9cmV0dXJuIGR9LGdldERhdGVDaG9pY2U6ZnVuY3Rpb24oYSl7cmV0dXJuIGEmJjA8YS5sZW5ndGgmJihhPW5ldyBEYXRlKGEudmFsKCkpLGMuaXNEYXRlKGEpKT9hLmRhdGVGb3JtYXQoIlk6bTpkIEg6aSIpOiIifSxnZXREYXRlU2NoZWR1bGU6ZnVuY3Rpb24oYSl7dmFyIGI9CmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzZXJ2aWNlRW1haWxzU2VsZWN0Iik7aWYoYiYmYi5vcHRpb25zJiYxPGIub3B0aW9ucy5sZW5ndGgmJjA8PWIuc2VsZWN0ZWRJbmRleCYmYi5vcHRpb25zLmhhc093blByb3BlcnR5KGIuc2VsZWN0ZWRJbmRleCkmJmRlYWxlclN0b3JlSG91cnMmJmRlYWxlclN0b3JlSG91cnMuaGFzT3duUHJvcGVydHkoYi5vcHRpb25zW2Iuc2VsZWN0ZWRJbmRleF0uZ2V0QXR0cmlidXRlKCJkYXRhLWRlYWxlcm5hbWUiKSkpe2I9Yi5vcHRpb25zW2Iuc2VsZWN0ZWRJbmRleF0uZ2V0QXR0cmlidXRlKCJkYXRhLWRlYWxlcm5hbWUiKTtjb25zdCBnPWEudG9Mb2NhbGVEYXRlU3RyaW5nKCJlbi1VUyIse3dlZWtkYXk6ImxvbmcifSkucmVwbGFjZSgvXHUyMDBFL2csIiIpO2E9ZGVhbGVyU3RvcmVIb3Vyc1tiXTtpZihiJiZhJiYoYT1hLmZpbmQoaz0+ay5kYXk9PT1nKSkmJmEuaG91cnMmJiJjbG9zZWQiIT09YS5ob3Vycy50b0xvd2VyQ2FzZSgpJiYoYj0oYS5ob3Vycy5tYXRjaCgvOi9nKXx8CltdKS5sZW5ndGgsYS5ob3Vycy5pbmNsdWRlcygiLSIpJiYyPT09Yikpe3ZhciBkPWEuaG91cnMuc3BsaXQoIiAtICIpO2E9cGFyc2VJbnQoZFswXS5zcGxpdCgiOiIpWzBdKTtiPXBhcnNlSW50KGRbMF0uc3BsaXQoIjoiKVsxXS5zdWJzdHJpbmcoMCwyKSk7dmFyIGU9cGFyc2VJbnQoZFsxXS5zcGxpdCgiOiIpWzBdKTtkPXBhcnNlSW50KGRbMV0uc3BsaXQoIjoiKVsxXS5zdWJzdHJpbmcoMCwyKSk7cmV0dXJue3N0YXR1czoiIixzdGFydEhvdXI6YSxzdGFydE1pbjpiLGVuZEhvdXI6ZSxlbmRNaW46ZH19cmV0dXJue3N0YXR1czoiY2xvc2VkIn19YT1hLnRvTG9jYWxlRGF0ZVN0cmluZygiZW4tVVMiLHt3ZWVrZGF5OiJsb25nIn0pLnJlcGxhY2UoL1x1MjAwRS9nLCIiKTtiPSIuIithKyJTY2hlZHVsZSI7Yj0kKGMuc2NvcGUpLmZpbmQoYik7ZT1iLnZhbCgpO3JldHVybiJjb25jZXNzIj09PWV8fCJyZHYiPT09ZT97c3RhdHVzOmUsc3RhcnRIb3VyOjcsc3RhcnRNaW46MzAsZW5kSG91cjoyMCwKZW5kTWluOjB9OiIiPT09ZXx8InVuZGVmaW5lZCI9PT10eXBlb2YgZT97c3RhdHVzOmUsc3RhcnRIb3VyOnBhcnNlSW50KGIuYXR0cigic3RhcnRob3VyIikpLHN0YXJ0TWluOnBhcnNlSW50KGIuYXR0cigic3RhcnRtaW4iKSksZW5kSG91cjpwYXJzZUludChiLmF0dHIoImVuZGhvdXIiKSksZW5kTWluOnBhcnNlSW50KGIuYXR0cigiZW5kbWluIikpfTp7c3RhdHVzOmUsbWVzc2FnZTokKGMuc2NvcGUpLmZpbmQoIi4iK2ErIlNjaGVkdWxlX21lc3NhZ2UiKS5odG1sKCl9fSxnZXREYXlCZWZvcmVBcHBvaW50bWVudHM6ZnVuY3Rpb24oYSl7dmFyIGI9Yy5nZXREYXRlU2NoZWR1bGUoYSk7cmV0dXJuIGMuY2xvc2VkQWZ0ZXJNaWRuaWdodChhKT9jLmdldEFwcG9pbnRtZW50c0JldHdlZW4oMCwwLGIuZW5kSG91cixiLmVuZE1pbik6W119LGdldERheXNEaWZmOmZ1bmN0aW9uKGEsYil7dmFyIGQ9Yy5kYXlUb01pbGxpc2Vjb25kcygxKTtyZXR1cm4gTWF0aC5yb3VuZCgoYi5nZXRUaW1lKCktCmEuZ2V0VGltZSgpKS9kKX0sZ2V0RW5kT2ZEYXk6ZnVuY3Rpb24oYSxiLGQpe3JldHVybiBhPGI\/e2VuZEhvdXI6YixlbmRNaW46ZH06YjxhJiYwPT09Yj97ZW5kSG91cjoyNCxlbmRNaW46ZH06e2VuZEhvdXI6MjQsZW5kTWluOjMwfX0sZ2V0TmV4dE9wZW5EYXRlOmZ1bmN0aW9uKGEpe2lmKCJjbG9zZWQiPT09Yy5nZXREYXRlU2NoZWR1bGUoYSkuc3RhdHVzKXthPW5ldyBEYXRlKChuZXcgRGF0ZShhKSkuc2V0RGF0ZShhLmdldERhdGUoKSsxKSk7dmFyIGI9bmV3IERhdGUoKG5ldyBEYXRlKS5zZXREYXRlKChuZXcgRGF0ZSkuZ2V0RGF0ZSgpKzcpKTtyZXR1cm4gYT5iPyExOmMuZ2V0TmV4dE9wZW5EYXRlKGEpfXJldHVybiBhfSxnZXRQaWNrZXJEYXRlUmFuZ2U6ZnVuY3Rpb24oKXt2YXIgYT0kKCIuYWxsb3dUb2RheSIpLnZhbCgpLGI9cGFyc2VJbnQoJCgiLm1pblN0YXJ0RGF5cyIpLnZhbCgpKSxkPTAsZT1uZXcgRGF0ZTthfHwoZD0xKTtiJiYoZD1iKTthPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5mb290ZXJWaXNpdENvbnRhY3RGb3JtV3JhcHBlciIpOwpudWxsIT09YT8oYj1lLmdldERheSgpLGI9MD09PWI\/NzpiLDE9PWEucXVlcnlTZWxlY3RvckFsbCgiLndlZWtEYXlTY2hlZHVsZSIpW2ItMV0uZGF0YXNldC5jbG9zZWQ\/ZT1uZXcgRGF0ZSgobmV3IERhdGUoZSkpLnNldERhdGUoZS5nZXREYXRlKCkrZCkpOihhPWUuZ2V0SG91cnMoKSxiPWUuZ2V0TWludXRlcygpKzYwLDYwPD1iJiYoYSs9TWF0aC5mbG9vcihiLzYwKSxiJT02MCxiJTMwJiYoNT49YiUzMD9iLT1iJTMwOjU8YiUzMCYmKGIrPTMwLWIlMzApKSksMjQ8PWE\/KGQ9ZD9kOjEsZT1uZXcgRGF0ZShlLnNldERhdGUoZS5nZXREYXRlKCkrZCkpKTooZT1uZXcgRGF0ZShlLnNldERhdGUoZS5nZXREYXRlKCkrZCkpLGUuc2V0SG91cnMoYSxiLDAsMCkpKSk6KGU9bmV3IERhdGUoKG5ldyBEYXRlKGUpKS5zZXREYXRlKGUuZ2V0RGF0ZSgpK2QpKSxlPWMuZ2V0TmV4dE9wZW5EYXRlKGUpKTtpZighZSlyZXR1cm4hMTtkPW5ldyBEYXRlKGUuZ2V0VGltZSgpK2MuZGF5VG9NaWxsaXNlY29uZHMoNDUwKSk7CnJldHVybntzdGFydERhdGU6ZSxlbmREYXRlOmR9fSxpc0RhdGU6ZnVuY3Rpb24oYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiBEYXRlJiYiSW52YWxpZCBEYXRlIiE9PWEudG9EYXRlU3RyaW5nKCl9LGRheVRvTWlsbGlzZWNvbmRzOmZ1bmN0aW9uKGEpe3JldHVybiA4NjRFNSphfSxwaWNrZXJPbkNsb3NlOmZ1bmN0aW9uKGEsYil7YT0kKGIpLmRhdGEoImRhdGV0aW1lcGlja2VyT3B0aW9ucyIpLnRpbWVTZWxlY3RlZDt2YXIgZD0kKGIpLmRhdGEoImRhdGV0aW1lcGlja2VyT3B0aW9ucyIpLmRhdGVTZWxlY3RlZDsiIj09PWIudmFsKCkmJmwmJigkKCIjIitiLmRhdGEoImhvdXItc2VsZWN0IikpLmVtcHR5KCksJCgiIyIrYi5kYXRhKCJob3VyLXNlbGVjdCIpKS5wcm9wKCJkaXNhYmxlZCIsITApKTtpZighYSYmIWQpcmV0dXJuITA7YXx8c2V0VGltZW91dChmdW5jdGlvbigpe2IudmFsKGIudmFsKCkuc3BsaXQoIiAiKVswXS50cmltKCkpfSl9LHBpY2tlck9uR2VuZXJhdGU6ZnVuY3Rpb24oKXskKCIueGRzb2Z0X3NhdmVfc2VsZWN0ZWQiKS5yZW1vdmUoKTsKMD09PSQoIi5kYXRlVGltZVBpY2tlck1lc3NhZ2UiLHRoaXMpLmxlbmd0aCYmJCh0aGlzKS5hcHBlbmQoJzxkaXYgc3R5bGU9ImNsZWFyOiBib3RoOyBwYWRkaW5nOiAxMXB4OyAgZm9udC1zaXplOiAxMnB4O2ZvbnQtd2VpZ2h0OmJvbGQ7ICIgY2xhc3M9ImRhdGVUaW1lUGlja2VyTWVzc2FnZSI+PC9kaXY+Jyl9LHBpY2tlck9uU2VsZWN0RGF0ZTpmdW5jdGlvbihhLGIpeyQodGhpcykuZGF0YSgpLm9wdGlvbnMudmFsdWU9YTskKHRoaXMpLmRhdGEoKS5vcHRpb25zLmRhdGVTZWxlY3RlZD0hMDtiLmRhdGEoImRhdGV0aW1lcGlja2VyT3B0aW9ucyIpLmRhdGVTZWxlY3RlZD0hMDskKCIueGRzb2Z0X3NhdmVfc2VsZWN0ZWQiKS5yZW1vdmUoKTtiLmRhdGEoImhvdXItc2VsZWN0Iik\/Yy51cGRhdGVIb3VycyhhLGIuYXR0cigiaWQiKSxiLmRhdGEoImhvdXItc2VsZWN0IikpOmMudXBkYXRlSG91cnMoYSxiLmF0dHIoImlkIikpO3JldHVybiExfSxwaWNrZXJPblNlbGVjdFRpbWU6ZnVuY3Rpb24oYSwKYil7JCh0aGlzKS5kYXRhKCkub3B0aW9ucy52YWx1ZT1hOyQodGhpcykuZGF0YSgpLm9wdGlvbnMudGltZVNlbGVjdGVkPSEwO2IuZGF0YSgiZGF0ZXRpbWVwaWNrZXJPcHRpb25zIikudGltZVNlbGVjdGVkPSEwfSxzZXRTY29wZTpmdW5jdGlvbihhKXtjLnNjb3BlPWE7cmV0dXJuIGN9fSxsPWguaXNNb2JpbGU7bCYmKGMuaW5pdD1mdW5jdGlvbigpe3ZhciBhPSQoYy5zY29wZSk7YS5maW5kKCIjIitjLmZpcnN0SG91clNlbGVjdCkucHJvcCgiZGlzYWJsZWQiLCEwKTthLmZpbmQoIiMiK2Muc2Vjb25kSG91clNlbGVjdCkucHJvcCgiZGlzYWJsZWQiLCEwKTthLmZpbmQoIiMiK2MuZmlyc3RDaG9pY2VPYmplY3RJZCkuZGF0YSgiaG91ci1zZWxlY3QiLGMuZmlyc3RIb3VyU2VsZWN0KTthLmZpbmQoIiMiK2Muc2Vjb25kQ2hvaWNlT2JqZWN0SWQpLmRhdGEoImhvdXItc2VsZWN0IixjLnNlY29uZEhvdXJTZWxlY3QpO3ZhciBiPWMuZ2V0UGlja2VyRGF0ZVJhbmdlKCk7Yj8oYS5maW5kKCIjIisKYy5maXJzdEhvdXJTZWxlY3QpLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7dmFyIGQ9JCgiIyIrYy5maXJzdENob2ljZU9iamVjdElkKS52YWwoKSxlPSQodGhpcykudmFsKCk7YS5maW5kKCJpbnB1dFtuYW1lPWRhdGUxXSIpLnZhbChkKyIgIitlKX0pLGEuZmluZCgiIyIrYy5zZWNvbmRIb3VyU2VsZWN0KS5vbigiY2hhbmdlIixmdW5jdGlvbigpe3ZhciBkPSQoIiMiK2Muc2Vjb25kQ2hvaWNlT2JqZWN0SWQpLnZhbCgpLGU9JCh0aGlzKS52YWwoKTthLmZpbmQoImlucHV0W25hbWU9ZGF0ZTJdIikudmFsKGQrIiAiK2UpfSksYy5zZXR1cERhdGUoYy5maXJzdENob2ljZU9iamVjdElkLGMuZmlyc3RIb3VyU2VsZWN0LGIuc3RhcnREYXRlLGIuZW5kRGF0ZSksYy5zZXR1cERhdGUoYy5zZWNvbmRDaG9pY2VPYmplY3RJZCxjLnNlY29uZEhvdXJTZWxlY3QsYi5zdGFydERhdGUsYi5lbmREYXRlKSk6KGEuZmluZCgiIyIrYy5maXJzdENob2ljZU9iamVjdElkKS5wcm9wKCJkaXNhYmxlZCIsCiEwKSxhLmZpbmQoIiMiK2Muc2Vjb25kQ2hvaWNlT2JqZWN0SWQpLnByb3AoImRpc2FibGVkIiwhMCkpfSxjLmFzc2lnblZhbHVlcz1mdW5jdGlvbigpe3ZhciBhPSQoYy5zY29wZSksYj1hLmZpbmQoIiMiK2MuZmlyc3RIb3VyU2VsZWN0KS5maW5kKCI6c2VsZWN0ZWQiKS50ZXh0KCksZD1uZXcgRGF0ZShhLmZpbmQoIiMiK2MuZmlyc3RDaG9pY2VPYmplY3RJZCkudmFsKCkpO2Quc2V0SG91cnMoYi5zcGxpdCgiOiIpWzBdLGIuc3BsaXQoIjoiKVsxXSk7IkludmFsaWQgRGF0ZSIhPT1kLnRvRGF0ZVN0cmluZygpJiYoYy5maXJzdENob2ljZT1kLmRhdGVGb3JtYXQoIlk6bTpkIEg6aSIpKTtiPWEuZmluZCgiIyIrYy5zZWNvbmRIb3VyU2VsZWN0KS5maW5kKCI6c2VsZWN0ZWQiKS50ZXh0KCk7ZD1uZXcgRGF0ZShhLmZpbmQoIiMiK2Muc2Vjb25kQ2hvaWNlT2JqZWN0SWQpLnZhbCgpKTtkLnNldEhvdXJzKGIuc3BsaXQoIjoiKVswXSxiLnNwbGl0KCI6IilbMV0pOyJJbnZhbGlkIERhdGUiIT09CmQudG9EYXRlU3RyaW5nKCkmJihjLnNlY29uZENob2ljZT1kLmRhdGVGb3JtYXQoIlk6bTpkIEg6aSIpKTtjLndhaXRpbmdPblNpdGU9YS5maW5kKCJzZWxlY3RbbmFtZT0nd2FpdGluZ29uc2l0ZSddIG9wdGlvbjpzZWxlY3RlZCIpLnZhbCgpfSxjLnNldHVwRGF0ZT1mdW5jdGlvbihhLGIsZCxlKXt2YXIgZz0kKCIjIithKSxrPW5ldyBEYXRlO2MuaXNEYXRlKGQpfHwoZD1uZXcgRGF0ZSk7Yy5pc0RhdGUoZSl8fChlPW5ldyBEYXRlKGsuZ2V0VGltZSgpK2MuZGF5VG9NaWxsaXNlY29uZHMoMzApKSk7Zy5vbigia2V5ZG93biIsZnVuY3Rpb24oZil7Zi5wcmV2ZW50RGVmYXVsdCgpO3JldHVybiExfSk7Zy5kYXRhKCJkYXRldGltZXBpY2tlck9wdGlvbnMiLHtkYXRlU2VsZWN0ZWQ6ITEsdGltZVNlbGVjdGVkOiExfSk7JCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpJiYiRU5HTElTSCI9PT0kKCIjYWN0aXZlc2l0ZWxhbmd1YWdlIikudmFsKCl8fCQuZGF0ZXRpbWVwaWNrZXIuc2V0TG9jYWxlKCJmciIpOwpnLmRhdGV0aW1lcGlja2VyKCQuZXh0ZW5kKHt9LHAse2lkOmErIl9kYXRlVGltZVBpY2tlciIsdGltZXBpY2tlcjohMSxmb3JtYXQ6IlkvbS9kIixtaW5EYXRlOmQsbWF4RGF0ZTplLGRpc2FibGVkRGF0ZXM6Yy5nZXRDbG9zZWREYXRlc0JldHdlZW4oZCxlKSxvblNob3c6ZnVuY3Rpb24oZil7Zj0kKHRoaXMpLmRhdGEoKS5vcHRpb25zLmRhdGVTZWxlY3RlZD9mOmQ7Yy51cGRhdGVIb3VycyhmLGEsYil9fSkpfSxjLnVwZGF0ZUhvdXJzPWZ1bmN0aW9uKGEsYixkKXtkPSQoYy5zY29wZSkuZmluZCgiIyIrZCk7dmFyIGU9Yy5nZXRBbGxvd2VkVGltZXMoYSxiKTthPWMuZ2V0RGF0ZVNjaGVkdWxlKGEpO2MuZGlzcGxheVBpY2tlck1lc3NhZ2UoYixhKTtkLmVtcHR5KCk7MDxlLmxlbmd0aD9kLnByb3AoImRpc2FibGVkIiwhMSk6ZC5wcm9wKCJkaXNhYmxlZCIsITApO2Zvcih2YXIgZyBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHkoZykpe2I9ZVtnXTt2YXIgaz0kKCI8b3B0aW9uPjwvb3B0aW9uPiIpLnRleHQoZVtnXSk7CmI9PT1hLnN0YXJ0SG91cisiOiIrYS5zdGFydE1pbiYmay5wcm9wKCJzZWxlY3RlZCIsInNlbGVjdGVkIik7ZC5hcHBlbmQoayl9fSk7dmFyIHA9e2xhbmc6IkVOR0xJU0giPT09JCgiI2FjdGl2ZXNpdGVsYW5ndWFnZSIpLnZhbCgpPyJlbiI6ImZyIixhbGxvd0JsYW5rOiEwLGRheU9mV2Vla1N0YXJ0OjEsc3RlcDozMCxvbkdlbmVyYXRlOmMucGlja2VyT25HZW5lcmF0ZSxvblNlbGVjdFRpbWU6Yy5waWNrZXJPblNlbGVjdFRpbWUsb25TZWxlY3REYXRlOmMucGlja2VyT25TZWxlY3REYXRlLG9uQ2xvc2U6Yy5waWNrZXJPbkNsb3NlfTtyZXR1cm4gY312YXIgbWFpbFNjaGVkdWxlPW5ldyBNYWlsU2NoZWR1bGUoe3Njb3BlOiIjbWFpbFNjaGVkdWxlRm9ybSIsaXNNb2JpbGU6MDwkKCIjaXNNb2JpbGUiKS5sZW5ndGg\/JCgiI2lzTW9iaWxlIikudmFsKCk6IiJ9KTsKZnVuY3Rpb24gZmV0Y2hBbmRJbml0RGVhbGVySG91cnMoaCl7ZGVhbGVyU3RvcmVIb3Vyc1toXXx8IiI9PT1oP21haWxTY2hlZHVsZS5pbml0KCk6ZmV0Y2goIi9hamF4L0dldFN0b3JlSG91cnM\/ZGVhbGVyX25hbWU9IitoKS50aGVuKGM9PmMuanNvbigpKS50aGVuKGM9PntjLmlzT2smJmMuaG91cnNJbmZvP2RlYWxlclN0b3JlSG91cnNbaF09Yy5ob3Vyc0luZm86Y29uc29sZS5lcnJvcigiRmFpbGVkIHRvIGZldGNoIHN0b3JlIGhvdXJzIGZvciBkZWFsZXIgbmFtZTogIitoKyIgZXJyb3I6ICIrYy5lcnJvcik7bWFpbFNjaGVkdWxlLmluaXQoKX0pLmNhdGNoKGM9PmNvbnNvbGUuZXJyb3IoIkVycm9yIGZldGNoaW5nIHN0b3JlIGhvdXJzIGZvciBkZWFsZXIgbmFtZSAiK2grIjogIixjKSl9CiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7Y29uc3QgaD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2VydmljZUVtYWlsc1NlbGVjdCIpO2lmKGgmJmgub3B0aW9ucyYmMTxoLm9wdGlvbnMubGVuZ3RoKXtjb25zdCBjPWgub3B0aW9uc1swXS5nZXRBdHRyaWJ1dGUoImRhdGEtZGVhbGVybmFtZSIpO2ZldGNoQW5kSW5pdERlYWxlckhvdXJzKGMpO2guYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwoKT0+e2lmKDA8PWguc2VsZWN0ZWRJbmRleCl7Y29uc3QgbD1oLm9wdGlvbnNbaC5zZWxlY3RlZEluZGV4XS5nZXRBdHRyaWJ1dGUoImRhdGEtZGVhbGVybmFtZSIpO2ZldGNoQW5kSW5pdERlYWxlckhvdXJzKGwpfX0pfWVsc2UgbWFpbFNjaGVkdWxlLmluaXQoKX0pOwovKiogL20vanMvdmFuaWxsYWpzL21vZGFsLmpzICoqLwp2YXIgX19fZDJjX21vZGFsanNfY19vbj0iMjAyNi0wMi0yNyAxNTozMDowMyI7J3VzZSBzdHJpY3QnO2NvbnN0IE1vZGFscz17fSxNb2RhbD1mdW5jdGlvbihoLGIpe2xldCBjPXt9O2NvbnN0IG49e3RpdGxlOmgsY29udGVudFR5cGU6Im5vZGUiLGNvbnRlbnRTcmM6IiIsYWZ0ZXJJbml0OigpPT57fX07bGV0IGs9IiI7Y29uc3QgZT1odG1sVG9Ob2RlKCc8ZGl2IGNsYXNzPSJtb2RhbC1vdmVybGF5Ij48L2Rpdj4nKSxsPWZ1bmN0aW9uKGEpe2Eub25jbGljaz0oKT0+ZigiY2FuY2VsIil9LHA9ZnVuY3Rpb24oKXsoYy5xdWVyeVNlbGVjdG9yKCIub2theSIpfHwhMSkub25jbGljaz0oKT0+Zigib2theSIpO2NvbnN0IGE9Yy5xdWVyeVNlbGVjdG9yQWxsKCIuY2FuY2VsIil8fCExOzE8YS5sZW5ndGg\/JC5lYWNoKGEsZnVuY3Rpb24oZCxnKXtsKGcpfSk6YSYmbChhWzBdKX0sbT1mdW5jdGlvbihhKXsiRXNjYXBlIj09YS5rZXkmJihhLnByZXZlbnREZWZhdWx0KCksYS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXl1cCIsCm0se2NhcHR1cmU6ITB9KSxmKCkpfSxmPWE9PnthPWF8fCIiO3N3aXRjaChhKXtjYXNlICJjYW5jZWwiOiJmdW5jdGlvbiI9PXR5cGVvZiBiLm9uQmVmb3JlQ2FuY2VsJiZiLm9uQmVmb3JlQ2FuY2VsLmNhbGwoKTticmVhaztjYXNlICJva2F5IjoiZnVuY3Rpb24iPT10eXBlb2YgYi5vbkJlZm9yZVNhdmUmJmIub25CZWZvcmVTYXZlLmNhbGwoKX0iZnVuY3Rpb24iPT10eXBlb2YgYi5vbkJlZm9yZUNsb3NlJiZiLm9uQmVmb3JlQ2xvc2UuY2FsbChhKTtkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93WT0iYXV0byI7Yy5jbGFzc0xpc3QudG9nZ2xlKCJpcy1hY3RpdmUiLCExKTtlLnBhcmVudE5vZGUmJihlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZSksay5mb2N1cygpKX07Yj1PYmplY3QuYXNzaWduKG4sYik7KGZ1bmN0aW9uKCl7Y29uc3QgYT0rbmV3IERhdGU7dmFyIGQ9IiI7c3dpdGNoKGIuY29udGVudFR5cGUpe2Nhc2UgIm5vZGUiOmQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYi5jb250ZW50U3JjKTsKZC5oaWRkZW49ITE7YnJlYWs7Y2FzZSAiaWZyYW1lIjpkPWh0bWxUb05vZGUoYDxkaXYgY2xhc3M9ImlmcmFtZS13cmFwcGVyIj4KCQkJCQkJCQk8aWZyYW1lCgkJCQkJCQkJCXNyYz0iJHtiLmNvbnRlbnRTcmN9IgoJCQkJCQkJCQlmcmFtZWJvcmRlcj0iMCIKCQkJCQkJCQkJYWxsb3dmdWxsc2NyZWVuPSJ0cnVlIgoJCQkJCQkJCQl3ZWJraXRhbGxvd2Z1bGxzY3JlZW49InRydWUiCgkJCQkJCQkJCW1vemFsbG93ZnVsbHNjcmVlbj0idHJ1ZSIKCQkJCQkJCQk+PC9pZnJhbWU+CgkJCQkJCQk8L2Rpdj5gKX1sZXQgZz0iIjtiLnNob3dZZXNOb0J1dHRvbnMmJihnPWA8ZGl2IGNsYXNzPSJtb2RhbC1mb290ZXIgLXAgLS1zNSBmbGV4LWJldHdlZW4iPgoJCQkJPGRpdj4KCQkJCQk8c3BhbiBjbGFzcz0iIC1tdDIgbWFpblRleHQgLWJvbGQiPiR7Yi5idXR0b25UZXh0fHwiIn08L3NwYW4+CgkJCQk8L2Rpdj4KCQkJCTxkaXY+CgkJCQkJPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gY2FuY2VsIiBkYXRhLWRpc21pc3M9Im1vZGFsIj4ke2Iubm9CdXR0b258fCJObyJ9PC9idXR0b24+CgkJCQkJPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLW1haW4yIG9rYXkiIGRhdGEtZGlzbWlzcz0ibW9kYWwiPiR7Yi55ZXNCdXR0b258fCJZZXMifTwvYnV0dG9uPgoJCQkJPC9kaXY+YCk7Yz1odG1sVG9Ob2RlKGAKCQkJPGJveC1sYyBjbGFzcz0ibW9kYWwtd3JhcHBlciAtYmctd2hpdGUgLS1zMCI+CgkJCQk8c3RhY2stbGMgY2xhc3M9Ii0tczAiPgoJCQkJCTxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciBmbGV4LWJldHdlZW4gLXAgLS1zNSI+CgkJCQkJCTxkaXYgY2xhc3M9Im1vZGFsLXRpdGxlIHR4dC11cHBlciAtZnMtbCAtYm9sZCI+CgkJCQkJCQkke2IudGl0bGV9CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJtb2RhbC1jb250cm9sIj4KCQkJCQkJCTxidXR0b24gdGl0bGU9ImNsb3NlIiBjbGFzcz0ieC1jbG9zZSBjYW5jZWwiPjwvYnV0dG9uPgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5IiBpZD0icS0ke2F9Ij4KCgkJCQkJPC9kaXY+CgkJCQkJJHtnfQoJCQkJPC9zdGFjay1sYz4KCQkJPC9ib3gtbGM+CgkJYCk7Yy5pZD1gbW9kYWwke2h9YDtjLnNldEF0dHJpYnV0ZSgicm9sZSIsImRpYWxvZyIpO2Muc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsbGVkYnkiLGBxLSR7YX1gKTtjLnF1ZXJ5U2VsZWN0b3IoIi5tb2RhbC1ib2R5IikuYXBwZW5kQ2hpbGQoZCk7ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjKTtkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93WT0iaGlkZGVuIjtiLmFmdGVySW5pdCgpO3AoKX0pKCk7cmV0dXJue2Rpc3BsYXk6ZnVuY3Rpb24oKXtrPWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlKTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXl1cCIsbSx7Y2FwdHVyZTohMH0pO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtjLmNsYXNzTGlzdC50b2dnbGUoImlzLWFjdGl2ZSIsITApfSwxKX0sY2xvc2U6Zn19OwovKiogL20vanMvdmFuaWxsYWpzL2xlYWQuanMgKiovCnZhciBfX19kMmNfbGVhZGpzX2Nfb249IjIwMjYtMDItMjAgMTE6MzA6MDgiOyd1c2Ugc3RyaWN0Jzt2YXIgJGpzY29tcD0kanNjb21wfHx7fTskanNjb21wLnNjb3BlPXt9OyRqc2NvbXAuQVNTVU1FX0VTNT0hMTskanNjb21wLkFTU1VNRV9OT19OQVRJVkVfTUFQPSExOyRqc2NvbXAuQVNTVU1FX05PX05BVElWRV9TRVQ9ITE7JGpzY29tcC5TSU1QTEVfRlJPVU5EX1BPTFlGSUxMPSExOyRqc2NvbXAuSVNPTEFURV9QT0xZRklMTFM9ITE7JGpzY29tcC5GT1JDRV9QT0xZRklMTF9QUk9NSVNFPSExOyRqc2NvbXAuRk9SQ0VfUE9MWUZJTExfUFJPTUlTRV9XSEVOX05PX1VOSEFORExFRF9SRUpFQ1RJT049ITE7JGpzY29tcC5kZWZpbmVQcm9wZXJ0eT0kanNjb21wLkFTU1VNRV9FUzV8fCJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuZGVmaW5lUHJvcGVydGllcz9PYmplY3QuZGVmaW5lUHJvcGVydHk6ZnVuY3Rpb24oYixhLGMpe2lmKGI9PUFycmF5LnByb3RvdHlwZXx8Yj09T2JqZWN0LnByb3RvdHlwZSlyZXR1cm4gYjtiW2FdPWMudmFsdWU7cmV0dXJuIGJ9OwokanNjb21wLmdldEdsb2JhbD1mdW5jdGlvbihiKXtiPVsib2JqZWN0Ij09dHlwZW9mIGdsb2JhbFRoaXMmJmdsb2JhbFRoaXMsYiwib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93LCJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiwib2JqZWN0Ij09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsXTtmb3IodmFyIGE9MDthPGIubGVuZ3RoOysrYSl7dmFyIGM9YlthXTtpZihjJiZjLk1hdGg9PU1hdGgpcmV0dXJuIGN9dGhyb3cgRXJyb3IoIkNhbm5vdCBmaW5kIGdsb2JhbCBvYmplY3QiKTt9OyRqc2NvbXAuZ2xvYmFsPSRqc2NvbXAuZ2V0R2xvYmFsKHRoaXMpOyRqc2NvbXAuSVNfU1lNQk9MX05BVElWRT0iZnVuY3Rpb24iPT09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PT10eXBlb2YgU3ltYm9sKCJ4Iik7JGpzY29tcC5UUlVTVF9FUzZfUE9MWUZJTExTPSEkanNjb21wLklTT0xBVEVfUE9MWUZJTExTfHwkanNjb21wLklTX1NZTUJPTF9OQVRJVkU7JGpzY29tcC5wb2x5ZmlsbHM9e307CiRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sPXt9OyRqc2NvbXAuUE9MWUZJTExfUFJFRklYPSIkanNjcCQiO3ZhciAkanNjb21wJGxvb2t1cFBvbHlmaWxsZWRWYWx1ZT1mdW5jdGlvbihiLGEpe3ZhciBjPSRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sW2FdO2lmKG51bGw9PWMpcmV0dXJuIGJbYV07Yz1iW2NdO3JldHVybiB2b2lkIDAhPT1jP2M6YlthXX07JGpzY29tcC5wb2x5ZmlsbD1mdW5jdGlvbihiLGEsYyxlKXthJiYoJGpzY29tcC5JU09MQVRFX1BPTFlGSUxMUz8kanNjb21wLnBvbHlmaWxsSXNvbGF0ZWQoYixhLGMsZSk6JGpzY29tcC5wb2x5ZmlsbFVuaXNvbGF0ZWQoYixhLGMsZSkpfTsKJGpzY29tcC5wb2x5ZmlsbFVuaXNvbGF0ZWQ9ZnVuY3Rpb24oYixhLGMsZSl7Yz0kanNjb21wLmdsb2JhbDtiPWIuc3BsaXQoIi4iKTtmb3IoZT0wO2U8Yi5sZW5ndGgtMTtlKyspe3ZhciBoPWJbZV07aWYoIShoIGluIGMpKXJldHVybjtjPWNbaF19Yj1iW2IubGVuZ3RoLTFdO2U9Y1tiXTthPWEoZSk7YSE9ZSYmbnVsbCE9YSYmJGpzY29tcC5kZWZpbmVQcm9wZXJ0eShjLGIse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTphfSl9OwokanNjb21wLnBvbHlmaWxsSXNvbGF0ZWQ9ZnVuY3Rpb24oYixhLGMsZSl7dmFyIGg9Yi5zcGxpdCgiLiIpO2I9MT09PWgubGVuZ3RoO2U9aFswXTtlPSFiJiZlIGluICRqc2NvbXAucG9seWZpbGxzPyRqc2NvbXAucG9seWZpbGxzOiRqc2NvbXAuZ2xvYmFsO2Zvcih2YXIgbj0wO248aC5sZW5ndGgtMTtuKyspe3ZhciBwPWhbbl07aWYoIShwIGluIGUpKXJldHVybjtlPWVbcF19aD1oW2gubGVuZ3RoLTFdO2M9JGpzY29tcC5JU19TWU1CT0xfTkFUSVZFJiYiZXM2Ij09PWM\/ZVtoXTpudWxsO2E9YShjKTtudWxsIT1hJiYoYj8kanNjb21wLmRlZmluZVByb3BlcnR5KCRqc2NvbXAucG9seWZpbGxzLGgse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTphfSk6YSE9PWMmJih2b2lkIDA9PT0kanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbFtoXSYmKGM9MUU5Kk1hdGgucmFuZG9tKCk+Pj4wLCRqc2NvbXAucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sW2hdPSRqc2NvbXAuSVNfU1lNQk9MX05BVElWRT8KJGpzY29tcC5nbG9iYWwuU3ltYm9sKGgpOiRqc2NvbXAuUE9MWUZJTExfUFJFRklYK2MrIiQiK2gpLCRqc2NvbXAuZGVmaW5lUHJvcGVydHkoZSwkanNjb21wLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbFtoXSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmF9KSkpfTskanNjb21wLnVuZGVyc2NvcmVQcm90b0NhbkJlU2V0PWZ1bmN0aW9uKCl7dmFyIGI9e2E6ITB9LGE9e307dHJ5e3JldHVybiBhLl9fcHJvdG9fXz1iLGEuYX1jYXRjaChjKXt9cmV0dXJuITF9OwokanNjb21wLnNldFByb3RvdHlwZU9mPSRqc2NvbXAuVFJVU1RfRVM2X1BPTFlGSUxMUyYmImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2Y6JGpzY29tcC51bmRlcnNjb3JlUHJvdG9DYW5CZVNldCgpP2Z1bmN0aW9uKGIsYSl7Yi5fX3Byb3RvX189YTtpZihiLl9fcHJvdG9fXyE9PWEpdGhyb3cgbmV3IFR5cGVFcnJvcihiKyIgaXMgbm90IGV4dGVuc2libGUiKTtyZXR1cm4gYn06bnVsbDskanNjb21wLmFycmF5SXRlcmF0b3JJbXBsPWZ1bmN0aW9uKGIpe3ZhciBhPTA7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGE8Yi5sZW5ndGg\/e2RvbmU6ITEsdmFsdWU6YlthKytdfTp7ZG9uZTohMH19fTskanNjb21wLmFycmF5SXRlcmF0b3I9ZnVuY3Rpb24oYil7cmV0dXJue25leHQ6JGpzY29tcC5hcnJheUl0ZXJhdG9ySW1wbChiKX19OwokanNjb21wLm1ha2VJdGVyYXRvcj1mdW5jdGlvbihiKXt2YXIgYT0idW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yJiZiW1N5bWJvbC5pdGVyYXRvcl07cmV0dXJuIGE\/YS5jYWxsKGIpOiRqc2NvbXAuYXJyYXlJdGVyYXRvcihiKX07JGpzY29tcC5nZW5lcmF0b3I9e307JGpzY29tcC5nZW5lcmF0b3IuZW5zdXJlSXRlcmF0b3JSZXN1bHRJc09iamVjdF89ZnVuY3Rpb24oYil7aWYoIShiIGluc3RhbmNlb2YgT2JqZWN0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJJdGVyYXRvciByZXN1bHQgIitiKyIgaXMgbm90IGFuIG9iamVjdCIpO307CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQ9ZnVuY3Rpb24oKXt0aGlzLmlzUnVubmluZ189ITE7dGhpcy55aWVsZEFsbEl0ZXJhdG9yXz1udWxsO3RoaXMueWllbGRSZXN1bHQ9dm9pZCAwO3RoaXMubmV4dEFkZHJlc3M9MTt0aGlzLmZpbmFsbHlBZGRyZXNzXz10aGlzLmNhdGNoQWRkcmVzc189MDt0aGlzLmZpbmFsbHlDb250ZXh0c189dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz1udWxsfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5zdGFydF89ZnVuY3Rpb24oKXtpZih0aGlzLmlzUnVubmluZ18pdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZyIpO3RoaXMuaXNSdW5uaW5nXz0hMH07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuc3RvcF89ZnVuY3Rpb24oKXt0aGlzLmlzUnVubmluZ189ITF9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5qdW1wVG9FcnJvckhhbmRsZXJfPWZ1bmN0aW9uKCl7dGhpcy5uZXh0QWRkcmVzcz10aGlzLmNhdGNoQWRkcmVzc198fHRoaXMuZmluYWxseUFkZHJlc3NffTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5uZXh0Xz1mdW5jdGlvbihiKXt0aGlzLnlpZWxkUmVzdWx0PWJ9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnRocm93Xz1mdW5jdGlvbihiKXt0aGlzLmFicnVwdENvbXBsZXRpb25fPXtleGNlcHRpb246Yixpc0V4Y2VwdGlvbjohMH07dGhpcy5qdW1wVG9FcnJvckhhbmRsZXJfKCl9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnJldHVybj1mdW5jdGlvbihiKXt0aGlzLmFicnVwdENvbXBsZXRpb25fPXtyZXR1cm46Yn07dGhpcy5uZXh0QWRkcmVzcz10aGlzLmZpbmFsbHlBZGRyZXNzX307CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmp1bXBUaHJvdWdoRmluYWxseUJsb2Nrcz1mdW5jdGlvbihiKXt0aGlzLmFicnVwdENvbXBsZXRpb25fPXtqdW1wVG86Yn07dGhpcy5uZXh0QWRkcmVzcz10aGlzLmZpbmFsbHlBZGRyZXNzX307JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUueWllbGQ9ZnVuY3Rpb24oYixhKXt0aGlzLm5leHRBZGRyZXNzPWE7cmV0dXJue3ZhbHVlOmJ9fTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS55aWVsZEFsbD1mdW5jdGlvbihiLGEpe2I9JGpzY29tcC5tYWtlSXRlcmF0b3IoYik7dmFyIGM9Yi5uZXh0KCk7JGpzY29tcC5nZW5lcmF0b3IuZW5zdXJlSXRlcmF0b3JSZXN1bHRJc09iamVjdF8oYyk7aWYoYy5kb25lKXRoaXMueWllbGRSZXN1bHQ9Yy52YWx1ZSx0aGlzLm5leHRBZGRyZXNzPWE7ZWxzZSByZXR1cm4gdGhpcy55aWVsZEFsbEl0ZXJhdG9yXz1iLHRoaXMueWllbGQoYy52YWx1ZSxhKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmp1bXBUbz1mdW5jdGlvbihiKXt0aGlzLm5leHRBZGRyZXNzPWJ9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLmp1bXBUb0VuZD1mdW5jdGlvbigpe3RoaXMubmV4dEFkZHJlc3M9MH07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuc2V0Q2F0Y2hGaW5hbGx5QmxvY2tzPWZ1bmN0aW9uKGIsYSl7dGhpcy5jYXRjaEFkZHJlc3NfPWI7dm9pZCAwIT1hJiYodGhpcy5maW5hbGx5QWRkcmVzc189YSl9OyRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQucHJvdG90eXBlLnNldEZpbmFsbHlCbG9jaz1mdW5jdGlvbihiKXt0aGlzLmNhdGNoQWRkcmVzc189MDt0aGlzLmZpbmFsbHlBZGRyZXNzXz1ifHwwfTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5sZWF2ZVRyeUJsb2NrPWZ1bmN0aW9uKGIsYSl7dGhpcy5uZXh0QWRkcmVzcz1iO3RoaXMuY2F0Y2hBZGRyZXNzXz1hfHwwfTsKJGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5wcm90b3R5cGUuZW50ZXJDYXRjaEJsb2NrPWZ1bmN0aW9uKGIpe3RoaXMuY2F0Y2hBZGRyZXNzXz1ifHwwO2I9dGhpcy5hYnJ1cHRDb21wbGV0aW9uXy5leGNlcHRpb247dGhpcy5hYnJ1cHRDb21wbGV0aW9uXz1udWxsO3JldHVybiBifTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5lbnRlckZpbmFsbHlCbG9jaz1mdW5jdGlvbihiLGEsYyl7Yz90aGlzLmZpbmFsbHlDb250ZXh0c19bY109dGhpcy5hYnJ1cHRDb21wbGV0aW9uXzp0aGlzLmZpbmFsbHlDb250ZXh0c189W3RoaXMuYWJydXB0Q29tcGxldGlvbl9dO3RoaXMuY2F0Y2hBZGRyZXNzXz1ifHwwO3RoaXMuZmluYWxseUFkZHJlc3NfPWF8fDB9OwokanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5sZWF2ZUZpbmFsbHlCbG9jaz1mdW5jdGlvbihiLGEpe2E9dGhpcy5maW5hbGx5Q29udGV4dHNfLnNwbGljZShhfHwwKVswXTtpZihhPXRoaXMuYWJydXB0Q29tcGxldGlvbl89dGhpcy5hYnJ1cHRDb21wbGV0aW9uX3x8YSl7aWYoYS5pc0V4Y2VwdGlvbilyZXR1cm4gdGhpcy5qdW1wVG9FcnJvckhhbmRsZXJfKCk7dm9pZCAwIT1hLmp1bXBUbyYmdGhpcy5maW5hbGx5QWRkcmVzc188YS5qdW1wVG8\/KHRoaXMubmV4dEFkZHJlc3M9YS5qdW1wVG8sdGhpcy5hYnJ1cHRDb21wbGV0aW9uXz1udWxsKTp0aGlzLm5leHRBZGRyZXNzPXRoaXMuZmluYWxseUFkZHJlc3NffWVsc2UgdGhpcy5uZXh0QWRkcmVzcz1ifTskanNjb21wLmdlbmVyYXRvci5Db250ZXh0LnByb3RvdHlwZS5mb3JJbj1mdW5jdGlvbihiKXtyZXR1cm4gbmV3ICRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQuUHJvcGVydHlJdGVyYXRvcihiKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkNvbnRleHQuUHJvcGVydHlJdGVyYXRvcj1mdW5jdGlvbihiKXt0aGlzLm9iamVjdF89Yjt0aGlzLnByb3BlcnRpZXNfPVtdO2Zvcih2YXIgYSBpbiBiKXRoaXMucHJvcGVydGllc18ucHVzaChhKTt0aGlzLnByb3BlcnRpZXNfLnJldmVyc2UoKX07JGpzY29tcC5nZW5lcmF0b3IuQ29udGV4dC5Qcm9wZXJ0eUl0ZXJhdG9yLnByb3RvdHlwZS5nZXROZXh0PWZ1bmN0aW9uKCl7Zm9yKDswPHRoaXMucHJvcGVydGllc18ubGVuZ3RoOyl7dmFyIGI9dGhpcy5wcm9wZXJ0aWVzXy5wb3AoKTtpZihiIGluIHRoaXMub2JqZWN0XylyZXR1cm4gYn1yZXR1cm4gbnVsbH07JGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXz1mdW5jdGlvbihiKXt0aGlzLmNvbnRleHRfPW5ldyAkanNjb21wLmdlbmVyYXRvci5Db250ZXh0O3RoaXMucHJvZ3JhbV89Yn07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLm5leHRfPWZ1bmN0aW9uKGIpe3RoaXMuY29udGV4dF8uc3RhcnRfKCk7aWYodGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXylyZXR1cm4gdGhpcy55aWVsZEFsbFN0ZXBfKHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl8ubmV4dCxiLHRoaXMuY29udGV4dF8ubmV4dF8pO3RoaXMuY29udGV4dF8ubmV4dF8oYik7cmV0dXJuIHRoaXMubmV4dFN0ZXBfKCl9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS5yZXR1cm5fPWZ1bmN0aW9uKGIpe3RoaXMuY29udGV4dF8uc3RhcnRfKCk7dmFyIGE9dGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXztpZihhKXJldHVybiB0aGlzLnlpZWxkQWxsU3RlcF8oInJldHVybiJpbiBhP2FbInJldHVybiJdOmZ1bmN0aW9uKGMpe3JldHVybnt2YWx1ZTpjLGRvbmU6ITB9fSxiLHRoaXMuY29udGV4dF8ucmV0dXJuKTt0aGlzLmNvbnRleHRfLnJldHVybihiKTtyZXR1cm4gdGhpcy5uZXh0U3RlcF8oKX07CiRqc2NvbXAuZ2VuZXJhdG9yLkVuZ2luZV8ucHJvdG90eXBlLnRocm93Xz1mdW5jdGlvbihiKXt0aGlzLmNvbnRleHRfLnN0YXJ0XygpO2lmKHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl8pcmV0dXJuIHRoaXMueWllbGRBbGxTdGVwXyh0aGlzLmNvbnRleHRfLnlpZWxkQWxsSXRlcmF0b3JfWyJ0aHJvdyJdLGIsdGhpcy5jb250ZXh0Xy5uZXh0Xyk7dGhpcy5jb250ZXh0Xy50aHJvd18oYik7cmV0dXJuIHRoaXMubmV4dFN0ZXBfKCl9OwokanNjb21wLmdlbmVyYXRvci5FbmdpbmVfLnByb3RvdHlwZS55aWVsZEFsbFN0ZXBfPWZ1bmN0aW9uKGIsYSxjKXt0cnl7dmFyIGU9Yi5jYWxsKHRoaXMuY29udGV4dF8ueWllbGRBbGxJdGVyYXRvcl8sYSk7JGpzY29tcC5nZW5lcmF0b3IuZW5zdXJlSXRlcmF0b3JSZXN1bHRJc09iamVjdF8oZSk7aWYoIWUuZG9uZSlyZXR1cm4gdGhpcy5jb250ZXh0Xy5zdG9wXygpLGU7dmFyIGg9ZS52YWx1ZX1jYXRjaChuKXtyZXR1cm4gdGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXz1udWxsLHRoaXMuY29udGV4dF8udGhyb3dfKG4pLHRoaXMubmV4dFN0ZXBfKCl9dGhpcy5jb250ZXh0Xy55aWVsZEFsbEl0ZXJhdG9yXz1udWxsO2MuY2FsbCh0aGlzLmNvbnRleHRfLGgpO3JldHVybiB0aGlzLm5leHRTdGVwXygpfTsKJGpzY29tcC5nZW5lcmF0b3IuRW5naW5lXy5wcm90b3R5cGUubmV4dFN0ZXBfPWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLmNvbnRleHRfLm5leHRBZGRyZXNzOyl0cnl7dmFyIGI9dGhpcy5wcm9ncmFtXyh0aGlzLmNvbnRleHRfKTtpZihiKXJldHVybiB0aGlzLmNvbnRleHRfLnN0b3BfKCkse3ZhbHVlOmIudmFsdWUsZG9uZTohMX19Y2F0Y2goYSl7dGhpcy5jb250ZXh0Xy55aWVsZFJlc3VsdD12b2lkIDAsdGhpcy5jb250ZXh0Xy50aHJvd18oYSl9dGhpcy5jb250ZXh0Xy5zdG9wXygpO2lmKHRoaXMuY29udGV4dF8uYWJydXB0Q29tcGxldGlvbl8pe2I9dGhpcy5jb250ZXh0Xy5hYnJ1cHRDb21wbGV0aW9uXzt0aGlzLmNvbnRleHRfLmFicnVwdENvbXBsZXRpb25fPW51bGw7aWYoYi5pc0V4Y2VwdGlvbil0aHJvdyBiLmV4Y2VwdGlvbjtyZXR1cm57dmFsdWU6Yi5yZXR1cm4sZG9uZTohMH19cmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX07CiRqc2NvbXAuZ2VuZXJhdG9yLkdlbmVyYXRvcl89ZnVuY3Rpb24oYil7dGhpcy5uZXh0PWZ1bmN0aW9uKGEpe3JldHVybiBiLm5leHRfKGEpfTt0aGlzLnRocm93PWZ1bmN0aW9uKGEpe3JldHVybiBiLnRocm93XyhhKX07dGhpcy5yZXR1cm49ZnVuY3Rpb24oYSl7cmV0dXJuIGIucmV0dXJuXyhhKX07dGhpc1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9fTskanNjb21wLmdlbmVyYXRvci5jcmVhdGVHZW5lcmF0b3I9ZnVuY3Rpb24oYixhKXthPW5ldyAkanNjb21wLmdlbmVyYXRvci5HZW5lcmF0b3JfKG5ldyAkanNjb21wLmdlbmVyYXRvci5FbmdpbmVfKGEpKTskanNjb21wLnNldFByb3RvdHlwZU9mJiZiLnByb3RvdHlwZSYmJGpzY29tcC5zZXRQcm90b3R5cGVPZihhLGIucHJvdG90eXBlKTtyZXR1cm4gYX07CiRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvcj1mdW5jdGlvbihiKXtmdW5jdGlvbiBhKGUpe3JldHVybiBiLm5leHQoZSl9ZnVuY3Rpb24gYyhlKXtyZXR1cm4gYi50aHJvdyhlKX1yZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oZSxoKXtmdW5jdGlvbiBuKHApe3AuZG9uZT9lKHAudmFsdWUpOlByb21pc2UucmVzb2x2ZShwLnZhbHVlKS50aGVuKGEsYykudGhlbihuLGgpfW4oYi5uZXh0KCkpfSl9OyRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvckZ1bmN0aW9uPWZ1bmN0aW9uKGIpe3JldHVybiAkanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3IoYigpKX07JGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yUHJvZ3JhbT1mdW5jdGlvbihiKXtyZXR1cm4gJGpzY29tcC5hc3luY0V4ZWN1dGVQcm9taXNlR2VuZXJhdG9yKG5ldyAkanNjb21wLmdlbmVyYXRvci5HZW5lcmF0b3JfKG5ldyAkanNjb21wLmdlbmVyYXRvci5FbmdpbmVfKGIpKSl9Owpjb25zdCBMZWFkPWZ1bmN0aW9uKGIpe2NvbnN0IGE9T2JqZWN0LmFzc2lnbih7fSxiKSxjPWEubGVhZElkfHxhLm5hbWU7Yj1hLmxlYWROb2RlO2NvbnN0IGU9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZvcm0iK2MpO2xldCBoPSExLG49ZS5xdWVyeVNlbGVjdG9yKCIubGVhZEVtYWlsIFtkYXRhLXN1YmplY3RdIikuaW5uZXJUZXh0LHA9ZS5xdWVyeVNlbGVjdG9yKCIubGVhZEVtYWlsIFtkYXRhLWJvZHldIikuaW5uZXJIVE1MLHk9YS50cmlnZ2VyLG09e307Y29uc3Qgej0oKT0+e0FycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZS5lbGVtZW50cyxkPT57aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBkLmF0dHJpYnV0ZXMubmFtZSl7dmFyIGY9ZC5hdHRyaWJ1dGVzLm5hbWUudmFsdWV8fCExO3N3aXRjaCghMCl7Y2FzZSBbIm5hbWUiXS5pbmNsdWRlcyhmLnRvTG93ZXJDYXNlKCkpOmNhc2UgWyJmaXJzdG5hbWUiXS5pbmNsdWRlcyhmLnRvTG93ZXJDYXNlKCkpOmNhc2UgWyJsYXN0bmFtZSJdLmluY2x1ZGVzKGYudG9Mb3dlckNhc2UoKSk6Y2FzZSAiZW1haWwiPT0KZi50b0xvd2VyQ2FzZSgpOmNhc2UgImRhdGEiPT1mOmJyZWFrO2Nhc2UgInBob25lIj09Zi50b0xvd2VyQ2FzZSgpOmNhc2UgInRlbCI9PWQudHlwZTpJTWFzayhkLHttYXNrOlt7bWFzazoiMDAwIDAwMC0wMDAwIn0se21hc2s6IjEgMDAwIDAwMC0wMDAwIn1dfSl9fX0pOyJ1bmRlZmluZWQiIT09dHlwZW9mIGNsaWVudFN0b3JhZ2UmJkFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZS5lbGVtZW50cyxkPT57aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBkLmF0dHJpYnV0ZXMubmFtZSl7dmFyIGY9ZC5hdHRyaWJ1dGVzLm5hbWUudmFsdWV8fCExO3N3aXRjaCghMCl7Y2FzZSBbIm5hbWUiXS5pbmNsdWRlcyhmLnRvTG93ZXJDYXNlKCkpOnZhciBnO2Y9bnVsbCE9KGc9Y2xpZW50U3RvcmFnZS5nZXQoImZpcnN0bmFtZSIpKT9nOiIiO3ZhciBrO2c9bnVsbCE9KGs9Y2xpZW50U3RvcmFnZS5nZXQoImxhc3RuYW1lIikpP2s6IiI7az1mKygiIiE9Zz8iICIrY2xpZW50U3RvcmFnZS5nZXQoImxhc3RuYW1lIik6CiIiKTtkLnZhbHVlPWs7YnJlYWs7Y2FzZSBbImZpcnN0bmFtZSJdLmluY2x1ZGVzKGYudG9Mb3dlckNhc2UoKSk6bGV0IGw7ZC52YWx1ZT1udWxsIT0obD1jbGllbnRTdG9yYWdlLmdldCgiZmlyc3RuYW1lIikpP2w6IiI7YnJlYWs7Y2FzZSBbImxhc3RuYW1lIl0uaW5jbHVkZXMoZi50b0xvd2VyQ2FzZSgpKTpsZXQgcjtkLnZhbHVlPW51bGwhPShyPWNsaWVudFN0b3JhZ2UuZ2V0KCJsYXN0bmFtZSIpKT9yOiIiO2JyZWFrO2Nhc2UgImVtYWlsIj09Zi50b0xvd2VyQ2FzZSgpOmxldCB2O2QudmFsdWU9bnVsbCE9KHY9Y2xpZW50U3RvcmFnZS5nZXQoImVtYWlsIikpP3Y6IiI7YnJlYWs7Y2FzZSAicGhvbmUiPT1mLnRvTG93ZXJDYXNlKCk6bGV0IHc7ZC52YWx1ZT1udWxsIT0odz1jbGllbnRTdG9yYWdlLmdldCgicGhvbmUiKSk\/dzoiIn19fSl9LEQ9KCk9PntpZihoKXJldHVybiExO2g9ITA7QSgpLnRoZW4oZD0+e2lmKCFkKXJldHVybiB0KCJwb3B1cC52YWxpZGF0aW9uRmFpbGVkIiksCmg9ITE7YS52YWxpZGF0ZWQ9ITA7QigpO0MoKX0pfSxCPSgpPT57QXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChlLmVsZW1lbnRzLGQ9PntpZigidW5kZWZpbmVkIiE9dHlwZW9mIGQuYXR0cmlidXRlcy5uYW1lKXt2YXIgZj1kLmF0dHJpYnV0ZXMubmFtZS52YWx1ZXx8ITE7aWYoZilzd2l0Y2gobVtmXT1kLnZhbHVlLCEwKXtjYXNlIFsibmFtZSJdLmluY2x1ZGVzKGYudG9Mb3dlckNhc2UoKSk6ZD1kLnZhbHVlLnNwbGl0KCIgIik7bS51c2VyRmlyc3ROYW1lKz1kLnNoaWZ0KCk7bS51c2VyTGFzdE5hbWUrPWQuam9pbigiICIpO2JyZWFrO2Nhc2UgWyJmaXJzdG5hbWUiXS5pbmNsdWRlcyhmLnRvTG93ZXJDYXNlKCkpOm0udXNlckZpcnN0TmFtZSs9ZC52YWx1ZTticmVhaztjYXNlIFsibGFzdG5hbWUiXS5pbmNsdWRlcyhmLnRvTG93ZXJDYXNlKCkpOm0udXNlckxhc3ROYW1lKz1kLnZhbHVlO2JyZWFrO2Nhc2UgImVtYWlsIj09Zi50b0xvd2VyQ2FzZSgpOm0udXNlckVtYWlsPQpkLnZhbHVlO2JyZWFrO2Nhc2UgInBob25lIj09Zi50b0xvd2VyQ2FzZSgpOmNhc2UgInRlbCI9PWQudHlwZTpJTWFzayhkLHttYXNrOlt7bWFzazoiMDAwIDAwMC0wMDAwIn0se21hc2s6IjEgMDAwIDAwMC0wMDAwIn1dfSk7bS51c2VyUGhvbmU9ZC52YWx1ZTticmVhaztjYXNlICJkYXRhIj09Zjpmb3IobGV0IGcgaW4gZC5kYXRhc2V0KW1bZy5yZXBsYWNlKC8tLi9nLGs9PmtbMV0udG9VcHBlckNhc2UoKSldPWQuZGF0YXNldFtnXX19fSl9LEM9KCk9PntpZighMT09PWEub25CZWZvcmVTdWJtaXQoYSkpcmV0dXJuIGEuY2xvc2VPblN1Ym1pdCYmcSgpLCExO2lmKENvb2tpZXMuZ2V0KGEubGVhZElkKSlyZXR1cm4gaD0hMSx4KCEwKSwhMTtFKCk7dCgicG9wdXAuc3VibWl0Iik7dmFyIGQ7aWYoIkRpZ2l0YWxSZXRhaWwiPT0obnVsbD09KGQ9bSk\/dm9pZCAwOmQuaW52b2tlcikpe2Q9Y2xpZW50U3RvcmFnZS5nZXQoImNsaWVudFN0b3JhZ2UiKXx8e307dmFyIGY7bGV0IGs7bS5sZWFkSW52b2tlclNJRD0KRigobnVsbD09ZD92b2lkIDA6bnVsbD09KGY9ZC5jb250YWN0KT92b2lkIDA6Zi5lbWFpbCkrKG51bGw9PWQ\/dm9pZCAwOm51bGw9PShrPWQuY29udGFjdCk\/dm9pZCAwOmsucGhvbmUpKTtlbWFpbEhhbmRsZXIubGVhZEludm9rZXI9IkRpZ2l0YWxSZXRhaWwiO2VtYWlsSGFuZGxlci5kaWdpdGFsUmV0YWlsU0lEPW0ubGVhZEludm9rZXJTSUR9ZW1haWxIYW5kbGVyLmJvZHk9RygpO2VtYWlsSGFuZGxlci5zdWJqZWN0PW47T2JqZWN0LmFzc2lnbihlbWFpbEhhbmRsZXIsbSk7InN0cmluZyI9PXR5cGVvZiBlbWFpbEhhbmRsZXIudXNlck5hbWUmJihmPWVtYWlsSGFuZGxlci51c2VyTmFtZS5zcGxpdCgiICIpLGVtYWlsSGFuZGxlci51c2VyRmlyc3ROYW1lPWYuc2hpZnQoKSxlbWFpbEhhbmRsZXIudXNlckxhc3ROYW1lPWYuam9pbigiICIpKTtlbWFpbEhhbmRsZXIub25CZWZvcmVTaG93Q29uc2VudD1mdW5jdGlvbigpe2VtYWlsSGFuZGxlci5vbkJlZm9yZVNob3dDb25zZW50PSExfTsKZW1haWxIYW5kbGVyLm9uQWZ0ZXJDb25zZW50PWZ1bmN0aW9uKGspe2VtYWlsSGFuZGxlci5vbkJlZm9yZVNob3dDb25zZW50PSExO2VtYWlsSGFuZGxlci5vbkFmdGVyQ29uc2VudD0hMX07ZW1haWxIYW5kbGVyLm9uRHVwbGljYXRlU2VuZD1mdW5jdGlvbigpe2VtYWlsSGFuZGxlci5yZXNldENhbGxiYWNrcygpfTtlbWFpbEhhbmRsZXIuY2FsbGJhY2s9ZnVuY3Rpb24oayl7dmFyIGw9ITE7YS5zaG93RW1haWxDb25maXJtYXRpb24mJihsPWdldE1haWxTZW50SGFuZGxlcigiXyIrYS5uYW1lKSxsLnRpbWVvdXRDYWxsYmFjaz1mdW5jdGlvbigpe2UucmVzZXQoKX0pO2lmKGspdCgicG9wdXAubGVhZF9zZW50IiksImZ1bmN0aW9uIj09dHlwZW9mIG9yaWdpbmFsQ2FsbGJhY2smJm9yaWdpbmFsQ2FsbGJhY2suY2FsbCgpLCJvblN1Ym1pdCI9PWEuY29va2llQ3JlYXRlJiZDb29raWVzLnNldChhLmNvb2tpZU5hbWUsIjEiLGEuY29va2llRHVyYXRpb24sIi8iKSxhLnN1Ym1pdEZsYWcmJgpDb29raWVzLnNldCgicG9wdXBGb3JtRmlsbGVkIiwiMSIsMSwiLyIpLGEuY2xvc2VPblN1Ym1pdCYmcSgiQ09OU0VOVCIpLGw\/bC5zaG93U3VjY2VzcygpOjA8JChgZm9ybSNmb3JtJHthLm5hbWV9X2NvbmZpcm1gKS5sZW5ndGgmJiQoYGZvcm0jZm9ybSR7YS5uYW1lfV9jb25maXJtYCkudHJpZ2dlcigic3VibWl0Iik7ZWxzZXtsfHwobD1nZXRNYWlsU2VudEhhbmRsZXIoKSk7dHJ5e2wuc2hvd0ZhaWwoKX1jYXRjaChyKXt9fXgoayk7dSgpO3NldFRpbWVvdXQoZW1haWxIYW5kbGVyLnJlc2V0Q2FsbGJhY2tzKCksMUUzKTtrJiZDb29raWVzLnNldChhLmxlYWRJZCwiMSIsMSwiLyIpfTthLnN1Ym1pdHRlZD0hMDtpZigiZnVuY3Rpb24iPT10eXBlb2YgYS5vbkJlZm9yZVNlbmRNYWlsJiYwPT1hLm9uQmVmb3JlU2VuZE1haWwuY2FsbCgpKXJldHVybiExO2xldCBnPXt9OyJmdW5jdGlvbiI9PXR5cGVvZiBhLm9uQURGJiYoZz1hLm9uQURGLmNhbGwoKSk7Im1ha2UgbW9kZWwgeWVhciBzdG9ja051bWJlciB0cmltIHZpbiBwcmljZSBjYXJpZCIuc3BsaXQoIiAiKS5mb3JFYWNoKGs9Pgp7ZW1haWxIYW5kbGVyW2tdPWdba118fGVtYWlsSGFuZGxlcltrXX0pO2EucHVyY2hhc2VJbnRlbnRQb3B1cHx8ZW1haWxIYW5kbGVyLnNlbmRNYWlsKGEuYnlwYXNzQ29uc2VudCk7cmV0dXJuITB9LHU9KCk9PnttPXt1c2VyRmlyc3ROYW1lOiIiLHVzZXJMYXN0TmFtZToiIix1c2VyRW1haWw6IiIsdXNlclBob25lOiIifTtoPSExfSxBPWZ1bmN0aW9uKCl7cmV0dXJuICRqc2NvbXAuYXN5bmNFeGVjdXRlUHJvbWlzZUdlbmVyYXRvckZ1bmN0aW9uKGZ1bmN0aW9uKigpe2lmKGEuc2tpcFZhbGlkYXRpb24pcmV0dXJuITA7Y29uc3QgZD1uZXcgUHJpc3RpbmUoZSx7Y2xhc3NUbzoiZm9ybS1sYWJlbCIsZXJyb3JDbGFzczoiaW52YWxpZCJ9LCExKTtsZXQgZj1lLnF1ZXJ5U2VsZWN0b3IoJ1tuYW1lPSJwaG9uZW51bSJdJyksZz0hMCxrPSEwO2lmKGYucmVxdWlyZWR8fGYudmFsdWUpZz1udWxsLGc9eWllbGQgSChmLnZhbHVlKTtudWxsPT09Zz8oZC5hZGRWYWxpZGF0b3IoZixmdW5jdGlvbihsKXtsPQpsLnJlcGxhY2UoL1teMC05XSsvZ2ksIiIpOyIxIj09bFswXSYmKGw9bC5zdWJzdHJpbmcoMSkpO2w9cGFyc2VJbnQobC5zdWJzdHJpbmcoMCwzKSk7cmV0dXJuIGc9WzQzOCw1MTQsMjYzLDQ1MCw1NzksODE5LDI0OSw3MDUsMjI2LDUxOSwyODksMzY1LDkwNSw0MTYsNDM3LDY0NywzNDMsNjEzLDcwOSw4NzMsNDE4LDU4MSw1MDYsOTAyXS5pbmNsdWRlcyhsKX0sIkVudGVyIGEgdmFsaWQgcGhvbmUgbnVtYmVyIiw1LCExKSxrPWQudmFsaWRhdGUoKSk6KGs9ZC52YWxpZGF0ZSgpJiZnLGYucGFyZW50RWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJpbnZhbGlkIiwhZykpO2YucmVxdWlyZWQmJiFnJiYidW5kZWZpbmVkIiE9dHlwZW9mIGVtYWlsSGFuZGxlciYmKGVtYWlsSGFuZGxlci5waG9uZVZhbGlkYXRpb25BdHRlbXB0cysrLGVtYWlsSGFuZGxlci5waG9uZU1hbmRhdG9yeT0hMCk7cmV0dXJuIGt9KX0sSD1kPT4kanNjb21wLmFzeW5jRXhlY3V0ZVByb21pc2VHZW5lcmF0b3JGdW5jdGlvbihmdW5jdGlvbiooKXtsZXQgZj0KbnVsbDtkPWQucmVwbGFjZSgvW14wLTldKy9naSwiIik7eWllbGQgYXhpb3MuZ2V0KCIvcHJveHlfcmQyYy9zaXRlcy9zdmMvdmFsaWRhdGVQaG9uZU51bWJlci5waHAiLHt0aW1lb3V0OjJFMyxkYXRhVHlwZToianNvbiIscGFyYW1zOntwaG9uZTpkfSxyZXNwb25zZVR5cGU6Impzb24ifSkudGhlbihmdW5jdGlvbihnKXsidW5kZWZpbmVkIiE9PXR5cGVvZiBnLmRhdGEuaXNPayYmKGY9Zy5kYXRhLnBob25lTnVtYmVySXNWYWxpZCl9KS5jYXRjaChmdW5jdGlvbihnKXt9KTtyZXR1cm4gZn0pLEU9KCk9Pntjb25zdCBkPWRvY3VtZW50LmZvcm1zLmVtYWlsbXNnZnJtfHwhMTtpZighZClyZXR1cm4hMTtkLnF1ZXJ5U2VsZWN0b3IoJ1tuYW1lPSJsYWJlbCInKS52YWx1ZT1gJHthLnR5cGV9ICgke20uY29uZGl0aW9ufSlgO2QucXVlcnlTZWxlY3RvcignW25hbWU9InNlY3Rpb24iJykudmFsdWU9bS5jb25kaXRpb259LEc9ZnVuY3Rpb24oKXtsZXQgZD1wLGY9e25hbWU6WyJNTkFNRSJdLApwaG9uZW51bTpbIk1QSE9ORSIsIlBIT05FIl0sZW1haWw6WyJNTUFJTCJdfTtPYmplY3Qua2V5cyhtKS5mb3JFYWNoKGc9Pnt2YXIgaz1uZXcgUmVnRXhwKCJ7XFwkIitnLnRvVXBwZXJDYXNlKCkrIn0iLCJnIik7ZD1kLnJlcGxhY2UoayxtW2ddKTtmW2ddJiYoaz1uZXcgUmVnRXhwKCJ7XFwkKCIrZltnXS5qb2luKCJ8IikrIil9IiwiZyIpLGQ9ZC5yZXBsYWNlKGssbVtnXSkpfSk7cmV0dXJuIGR9LHQ9ZnVuY3Rpb24oZCl7dmFyIGY9YS50eXBlO2lmKCFkKXJldHVybiExO2lmKCJwb3B1cC5sZWFkX3NlbnQiPT1kKXt2YXIgZz0iY2xpY2siLnJlcGxhY2UoLyheW2Etel17MX0pL2csZnVuY3Rpb24obCl7cmV0dXJuIGwudG9VcHBlckNhc2UoKX0pLGs9ZDJjbWVkaWEucGFnZURlcGFydG1lbnQoKTtnYVRyYWNrKCJjLl90cmFja0V2ZW50IiwiUG9wdXAtbGVhZHMiLGcsaywxKX0idW5kZWZpbmVkIiE9dHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nJiYidW5kZWZpbmVkIiE9dHlwZW9mIGFjdGl2ZVVzZXJQcm9maWxlTW5nLmxvZ1BhZ2VWaWV3RXZlbnQ\/CigidW5kZWZpbmVkIiE9PXR5cGVvZiBkZWJ1ZyYmZGVidWcoIkxvZyBFdmVudCIsZCxmLHNlbGYpLGFjdGl2ZVVzZXJQcm9maWxlTW5nLmxvZ1BhZ2VWaWV3RXZlbnQoZCxmKSk6InVuZGVmaW5lZCIhPT10eXBlb2YgZGVidWcmJmRlYnVnKCIhVU5MT0dHRUQgRVZFTlQhIixkLGYpfSxxPSgpPT57YS5vbkJlZm9yZUNsb3NlKGEpO3UoKTtNb2RhbHNbY10mJk1vZGFsc1tjXS5jbG9zZSgpfSx4PWQ9PnthLm9uQWZ0ZXJTdWJtaXQoYSxkKTthLmNsb3NlT25TdWJtaXQmJmQmJnEoKTtkJiZlLnJlc2V0KCl9LEY9ZD0+e2xldCBmPTA7aWYoMD09ZC5sZW5ndGgpcmV0dXJuIGY7Zm9yKGxldCBnPTAsaz1kLmxlbmd0aDtnPGs7ZysrKXtsZXQgbD1kLmNoYXJDb2RlQXQoZyk7Zj0oZjw8NSktZitsO2Z8PTB9cmV0dXJuIE1hdGguYWJzKGYpfTsoKCk9PnskKGUpLnRyaWdnZXIoInBvcHVwaXplci5vbk9wZW4iLCQoZSkpO3UoKTt6KCk7ZS5vbnN1Ym1pdD1kPT57ZC5wcmV2ZW50RGVmYXVsdCgpOwpEKCl9O2Eub25CZWZvcmVPcGVuKGEpfSkoKTtyZXR1cm57bGVhZElkOmMsbGVhZE5vZGU6Yix0cmlnZ2VyOnksZGlzcGxheTooKT0+e2EuZGlzcGxheT9hLmRpc3BsYXkoYSk6KGEuY29udGVudFNyYz1gbGVhZCR7Y31gLE1vZGFsc1tjXXx8KE1vZGFsc1tjXT1uZXcgTW9kYWwoYyxhKSksTW9kYWxzW2NdLmRpc3BsYXkoKSl9LGNsb3NlOnF9fSxMZWFkSGFuZGxlcj1mdW5jdGlvbigpe2NvbnN0IGI9e29uQmVmb3JlT3BlbjooKT0+e30sb25CZWZvcmVWYWxpZGF0aW9uOigpPT57fSxvbkJlZm9yZVN1Ym1pdDooKT0+e30sb25BZnRlclN1Ym1pdDooKT0+e30sb25CZWZvcmVDYW5jZWw6KCk9Pnt9LG9uQmVmb3JlQ2xvc2U6KCk9Pnt9LG9uQ2xvc2U6KCk9Pnt9LGZvcm06e2VtYWlsaWQ6bnVsbCxvZmZlcnR5cGU6bnVsbCxuYW1lOm51bGwsc2VuZFRvOm51bGwsc2VuZFRvQURGOm51bGwsT0tCdXR0b25DbGFzczoic3VibWl0QnRuIixDYW5jZWxCdXR0b25DbGFzczoiY2FuY2VsQnRuIiwKc2hvd0VtYWlsQ29uZmlybWF0aW9uOiExLGZyb21BQTohMX0sZ2V0SWRTdWZmaXg6YT0+TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKkRhdGUubm93KCkpLG1vZGU6InN0YXRpYyIsdHJpZ2dlcjoiYXV0byIsZGVsYXk6ITEsZGlzcGxheTohMSxzdWJtaXR0ZWQ6ITEsY2xvc2VPblN1Ym1pdDohMCxzdWJtaXRGbGFnOiExLGJ5cGFzc0NvbnNlbnQ6ITEsc2hvd0VtYWlsQ29uZmlybWF0aW9uOiEwLHB1cmNoYXNlSW50ZW50UG9wdXA6ITF9O2luaXQ9KCk9PnsidW5kZWZpbmVkIiE9PXR5cGVvZiB3aW5kb3cuQWJzdHJhY3RVc2VkU3JwT2JqZWN0JiYobmV3IEFic3RyYWN0VXNlZFNycE9iamVjdCh7bmFtZToiVmlld0Rpc2NvdmVyQnRuSGFuZGxlciJ9KSkuYWRkVXNlZFNycEV2ZW50T2JzZXJ2ZXIoImNvbnRlbnQiLGFkZExlYWRFdmVudHMpLmluaXRVc2VkU3JwT2JzZXJ2ZXIoKTthZGRMZWFkRXZlbnRzKCl9O2FkZExlYWRFdmVudHM9KCk9Pntkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1sZWFkLXRyaWdnZXJdIikuZm9yRWFjaChhPT4Ke3RoaXMuaW5pdExlYWRUcmlnZ2VyKGEpfSl9O3RoaXMuaW5pdExlYWRUcmlnZ2VyPWE9PnthLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixjPT57Yy5zdG9wUHJvcGFnYXRpb24oKTtjPWEuZGF0YXNldC5sZWFkVHJpZ2dlcjtsZXQgZT1hLmRhdGFzZXQubGVhZGlkfHwhMTtMZWFkQ29uZmlnc1tjXS50cmlnZ2VyPWE7Yz10aGlzLmdldExlYWQoYyxlKTtjLmRpc3BsYXkoKTthLmRhdGFzZXQubGVhZGlkPWMubGVhZElkfSl9O3RoaXMuZ2V0TGVhZD0oYSxjKT0+e2lmKCEoYz1MZWFkc1tjfHxhXSkpe3tjPWE7bGV0IGU9T2JqZWN0LmFzc2lnbih7fSxiKTtPYmplY3QuYXNzaWduKGUsTGVhZENvbmZpZ3NbYV0pO2NvbnN0IGg9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYGxlYWQke2F9YCk7aD8oYT1oLCJzdGF0aWMiIT1lLm1vZGUmJihjPWAke2UubmFtZX1fJHtlLmdldElkU3VmZml4KGUpfWAsYT1oLmNsb25lTm9kZSghMCksYS5zZXRBdHRyaWJ1dGUoImlkIiwibGVhZCIrYyksYS5xdWVyeVNlbGVjdG9yKCJmb3JtIikuc2V0QXR0cmlidXRlKCJpZCIsCiJmb3JtIitjKSxkb2N1bWVudC5ib2R5LmFwcGVuZChhKSksZS5sZWFkSWQ9YyxlLmxlYWROb2RlPWEsTGVhZHNbY109bmV3IExlYWQoZSksYz1MZWFkc1tjXSk6Yz0hMX19cmV0dXJuIGN9O3JldHVybntpbml0LGluaXRMZWFkVHJpZ2dlcixnZXRMZWFkfX07dmFyIExlYWRzPUxlYWRzfHx7fTtkb2NSZWFkeUFyci5wdXNoKExlYWRIYW5kbGVyKCkuaW5pdCk7Ci8qKiAvbS9qcy92YW5pbGxhanMvYXhpb3MubWluLmpzICoqLwohZnVuY3Rpb24oZSx0KXsib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHMmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlP21vZHVsZS5leHBvcnRzPXQoKToiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbXSx0KToib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHM\/ZXhwb3J0cy5heGlvcz10KCk6ZS5heGlvcz10KCl9KHRoaXMsKGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0PXt9O2Z1bmN0aW9uIG4ocil7aWYodFtyXSlyZXR1cm4gdFtyXS5leHBvcnRzO3ZhciBvPXRbcl09e2k6cixsOiExLGV4cG9ydHM6e319O3JldHVybiBlW3JdLmNhbGwoby5leHBvcnRzLG8sby5leHBvcnRzLG4pLG8ubD0hMCxvLmV4cG9ydHN9cmV0dXJuIG4ubT1lLG4uYz10LG4uZD1mdW5jdGlvbihlLHQscil7bi5vKGUsdCl8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2VudW1lcmFibGU6ITAsZ2V0OnJ9KX0sbi5yPWZ1bmN0aW9uKGUpeyJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wudG9TdHJpbmdUYWcmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LG4udD1mdW5jdGlvbihlLHQpe2lmKDEmdCYmKGU9bihlKSksOCZ0KXJldHVybiBlO2lmKDQmdCYmIm9iamVjdCI9PXR5cGVvZiBlJiZlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHI9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihuLnIociksT2JqZWN0LmRlZmluZVByb3BlcnR5KHIsImRlZmF1bHQiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOmV9KSwyJnQmJiJzdHJpbmciIT10eXBlb2YgZSlmb3IodmFyIG8gaW4gZSluLmQocixvLGZ1bmN0aW9uKHQpe3JldHVybiBlW3RdfS5iaW5kKG51bGwsbykpO3JldHVybiByfSxuLm49ZnVuY3Rpb24oZSl7dmFyIHQ9ZSYmZS5fX2VzTW9kdWxlP2Z1bmN0aW9uKCl7cmV0dXJuIGUuZGVmYXVsdH06ZnVuY3Rpb24oKXtyZXR1cm4gZX07cmV0dXJuIG4uZCh0LCJhIix0KSx0fSxuLm89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCl9LG4ucD0iIixuKG4ucz0xMSl9KFtmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMyksbz1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIltvYmplY3QgQXJyYXldIj09PW8uY2FsbChlKX1mdW5jdGlvbiBzKGUpe3JldHVybiB2b2lkIDA9PT1lfWZ1bmN0aW9uIGEoZSl7cmV0dXJuIG51bGwhPT1lJiYib2JqZWN0Ij09dHlwZW9mIGV9ZnVuY3Rpb24gdShlKXtpZigiW29iamVjdCBPYmplY3RdIiE9PW8uY2FsbChlKSlyZXR1cm4hMTt2YXIgdD1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7cmV0dXJuIG51bGw9PT10fHx0PT09T2JqZWN0LnByb3RvdHlwZX1mdW5jdGlvbiBjKGUpe3JldHVybiJbb2JqZWN0IEZ1bmN0aW9uXSI9PT1vLmNhbGwoZSl9ZnVuY3Rpb24gZihlLHQpe2lmKG51bGwhPWUpaWYoIm9iamVjdCIhPXR5cGVvZiBlJiYoZT1bZV0pLGkoZSkpZm9yKHZhciBuPTAscj1lLmxlbmd0aDtuPHI7bisrKXQuY2FsbChudWxsLGVbbl0sbixlKTtlbHNlIGZvcih2YXIgbyBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG8pJiZ0LmNhbGwobnVsbCxlW29dLG8sZSl9ZS5leHBvcnRzPXtpc0FycmF5OmksaXNBcnJheUJ1ZmZlcjpmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBBcnJheUJ1ZmZlcl0iPT09by5jYWxsKGUpfSxpc0J1ZmZlcjpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9PWUmJiFzKGUpJiZudWxsIT09ZS5jb25zdHJ1Y3RvciYmIXMoZS5jb25zdHJ1Y3RvcikmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmNvbnN0cnVjdG9yLmlzQnVmZmVyJiZlLmNvbnN0cnVjdG9yLmlzQnVmZmVyKGUpfSxpc0Zvcm1EYXRhOmZ1bmN0aW9uKGUpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgRm9ybURhdGEmJmUgaW5zdGFuY2VvZiBGb3JtRGF0YX0saXNBcnJheUJ1ZmZlclZpZXc6ZnVuY3Rpb24oZSl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmQXJyYXlCdWZmZXIuaXNWaWV3P0FycmF5QnVmZmVyLmlzVmlldyhlKTplJiZlLmJ1ZmZlciYmZS5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcn0saXNTdHJpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlfSxpc051bWJlcjpmdW5jdGlvbihlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGV9LGlzT2JqZWN0OmEsaXNQbGFpbk9iamVjdDp1LGlzVW5kZWZpbmVkOnMsaXNEYXRlOmZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IERhdGVdIj09PW8uY2FsbChlKX0saXNGaWxlOmZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IEZpbGVdIj09PW8uY2FsbChlKX0saXNCbG9iOmZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IEJsb2JdIj09PW8uY2FsbChlKX0saXNGdW5jdGlvbjpjLGlzU3RyZWFtOmZ1bmN0aW9uKGUpe3JldHVybiBhKGUpJiZjKGUucGlwZSl9LGlzVVJMU2VhcmNoUGFyYW1zOmZ1bmN0aW9uKGUpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgVVJMU2VhcmNoUGFyYW1zJiZlIGluc3RhbmNlb2YgVVJMU2VhcmNoUGFyYW1zfSxpc1N0YW5kYXJkQnJvd3NlckVudjpmdW5jdGlvbigpe3JldHVybigidW5kZWZpbmVkIj09dHlwZW9mIG5hdmlnYXRvcnx8IlJlYWN0TmF0aXZlIiE9PW5hdmlnYXRvci5wcm9kdWN0JiYiTmF0aXZlU2NyaXB0IiE9PW5hdmlnYXRvci5wcm9kdWN0JiYiTlMiIT09bmF2aWdhdG9yLnByb2R1Y3QpJiYoInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJiJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQpfSxmb3JFYWNoOmYsbWVyZ2U6ZnVuY3Rpb24gZSgpe3ZhciB0PXt9O2Z1bmN0aW9uIG4obixyKXt1KHRbcl0pJiZ1KG4pP3Rbcl09ZSh0W3JdLG4pOnUobik\/dFtyXT1lKHt9LG4pOmkobik\/dFtyXT1uLnNsaWNlKCk6dFtyXT1ufWZvcih2YXIgcj0wLG89YXJndW1lbnRzLmxlbmd0aDtyPG87cisrKWYoYXJndW1lbnRzW3JdLG4pO3JldHVybiB0fSxleHRlbmQ6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBmKHQsKGZ1bmN0aW9uKHQsbyl7ZVtvXT1uJiYiZnVuY3Rpb24iPT10eXBlb2YgdD9yKHQsbik6dH0pKSxlfSx0cmltOmZ1bmN0aW9uKGUpe3JldHVybiBlLnRyaW0\/ZS50cmltKCk6ZS5yZXBsYWNlKC9eXHMrfFxzKyQvZywiIil9LHN0cmlwQk9NOmZ1bmN0aW9uKGUpe3JldHVybiA2NTI3OT09PWUuY2hhckNvZGVBdCgwKSYmKGU9ZS5zbGljZSgxKSksZX19fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMCksbz1uKDE3KSxpPW4oNSkscz17IkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCJ9O2Z1bmN0aW9uIGEoZSx0KXshci5pc1VuZGVmaW5lZChlKSYmci5pc1VuZGVmaW5lZChlWyJDb250ZW50LVR5cGUiXSkmJihlWyJDb250ZW50LVR5cGUiXT10KX12YXIgdSxjPXt0cmFuc2l0aW9uYWw6e3NpbGVudEpTT05QYXJzaW5nOiEwLGZvcmNlZEpTT05QYXJzaW5nOiEwLGNsYXJpZnlUaW1lb3V0RXJyb3I6ITF9LGFkYXB0ZXI6KCgidW5kZWZpbmVkIiE9dHlwZW9mIFhNTEh0dHBSZXF1ZXN0fHwidW5kZWZpbmVkIiE9dHlwZW9mIHByb2Nlc3MmJiJbb2JqZWN0IHByb2Nlc3NdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChwcm9jZXNzKSkmJih1PW4oNikpLHUpLHRyYW5zZm9ybVJlcXVlc3Q6W2Z1bmN0aW9uKGUsdCl7cmV0dXJuIG8odCwiQWNjZXB0Iiksbyh0LCJDb250ZW50LVR5cGUiKSxyLmlzRm9ybURhdGEoZSl8fHIuaXNBcnJheUJ1ZmZlcihlKXx8ci5pc0J1ZmZlcihlKXx8ci5pc1N0cmVhbShlKXx8ci5pc0ZpbGUoZSl8fHIuaXNCbG9iKGUpP2U6ci5pc0FycmF5QnVmZmVyVmlldyhlKT9lLmJ1ZmZlcjpyLmlzVVJMU2VhcmNoUGFyYW1zKGUpPyhhKHQsImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04IiksZS50b1N0cmluZygpKTpyLmlzT2JqZWN0KGUpfHx0JiYiYXBwbGljYXRpb24vanNvbiI9PT10WyJDb250ZW50LVR5cGUiXT8oYSh0LCJhcHBsaWNhdGlvbi9qc29uIiksZnVuY3Rpb24oZSx0LG4pe2lmKHIuaXNTdHJpbmcoZSkpdHJ5e3JldHVybih0fHxKU09OLnBhcnNlKShlKSxyLnRyaW0oZSl9Y2F0Y2goZSl7aWYoIlN5bnRheEVycm9yIiE9PWUubmFtZSl0aHJvdyBlfXJldHVybihufHxKU09OLnN0cmluZ2lmeSkoZSl9KGUpKTplfV0sdHJhbnNmb3JtUmVzcG9uc2U6W2Z1bmN0aW9uKGUpe3ZhciB0PXRoaXMudHJhbnNpdGlvbmFsfHxjLnRyYW5zaXRpb25hbCxuPXQmJnQuc2lsZW50SlNPTlBhcnNpbmcsbz10JiZ0LmZvcmNlZEpTT05QYXJzaW5nLHM9IW4mJiJqc29uIj09PXRoaXMucmVzcG9uc2VUeXBlO2lmKHN8fG8mJnIuaXNTdHJpbmcoZSkmJmUubGVuZ3RoKXRyeXtyZXR1cm4gSlNPTi5wYXJzZShlKX1jYXRjaChlKXtpZihzKXtpZigiU3ludGF4RXJyb3IiPT09ZS5uYW1lKXRocm93IGkoZSx0aGlzLCJFX0pTT05fUEFSU0UiKTt0aHJvdyBlfX1yZXR1cm4gZX1dLHRpbWVvdXQ6MCx4c3JmQ29va2llTmFtZToiWFNSRi1UT0tFTiIseHNyZkhlYWRlck5hbWU6IlgtWFNSRi1UT0tFTiIsbWF4Q29udGVudExlbmd0aDotMSxtYXhCb2R5TGVuZ3RoOi0xLHZhbGlkYXRlU3RhdHVzOmZ1bmN0aW9uKGUpe3JldHVybiBlPj0yMDAmJmU8MzAwfSxoZWFkZXJzOntjb21tb246e0FjY2VwdDoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8qIn19fTtyLmZvckVhY2goWyJkZWxldGUiLCJnZXQiLCJoZWFkIl0sKGZ1bmN0aW9uKGUpe2MuaGVhZGVyc1tlXT17fX0pKSxyLmZvckVhY2goWyJwb3N0IiwicHV0IiwicGF0Y2giXSwoZnVuY3Rpb24oZSl7Yy5oZWFkZXJzW2VdPXIubWVyZ2Uocyl9KSksZS5leHBvcnRzPWN9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt0aGlzLm1lc3NhZ2U9ZX1yLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJDYW5jZWwiKyh0aGlzLm1lc3NhZ2U\/IjogIit0aGlzLm1lc3NhZ2U6IiIpfSxyLnByb3RvdHlwZS5fX0NBTkNFTF9fPSEwLGUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgbj1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCkscj0wO3I8bi5sZW5ndGg7cisrKW5bcl09YXJndW1lbnRzW3JdO3JldHVybiBlLmFwcGx5KHQsbil9fX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDApO2Z1bmN0aW9uIG8oZSl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChlKS5yZXBsYWNlKC8lM0EvZ2ksIjoiKS5yZXBsYWNlKC8lMjQvZywiJCIpLnJlcGxhY2UoLyUyQy9naSwiLCIpLnJlcGxhY2UoLyUyMC9nLCIrIikucmVwbGFjZSgvJTVCL2dpLCJbIikucmVwbGFjZSgvJTVEL2dpLCJdIil9ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuKXtpZighdClyZXR1cm4gZTt2YXIgaTtpZihuKWk9bih0KTtlbHNlIGlmKHIuaXNVUkxTZWFyY2hQYXJhbXModCkpaT10LnRvU3RyaW5nKCk7ZWxzZXt2YXIgcz1bXTtyLmZvckVhY2godCwoZnVuY3Rpb24oZSx0KXtudWxsIT1lJiYoci5pc0FycmF5KGUpP3QrPSJbXSI6ZT1bZV0sci5mb3JFYWNoKGUsKGZ1bmN0aW9uKGUpe3IuaXNEYXRlKGUpP2U9ZS50b0lTT1N0cmluZygpOnIuaXNPYmplY3QoZSkmJihlPUpTT04uc3RyaW5naWZ5KGUpKSxzLnB1c2gobyh0KSsiPSIrbyhlKSl9KSkpfSkpLGk9cy5qb2luKCImIil9aWYoaSl7dmFyIGE9ZS5pbmRleE9mKCIjIik7LTEhPT1hJiYoZT1lLnNsaWNlKDAsYSkpLGUrPSgtMT09PWUuaW5kZXhPZigiPyIpPyI\/IjoiJiIpK2l9cmV0dXJuIGV9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbixyLG8pe3JldHVybiBlLmNvbmZpZz10LG4mJihlLmNvZGU9biksZS5yZXF1ZXN0PXIsZS5yZXNwb25zZT1vLGUuaXNBeGlvc0Vycm9yPSEwLGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJue21lc3NhZ2U6dGhpcy5tZXNzYWdlLG5hbWU6dGhpcy5uYW1lLGRlc2NyaXB0aW9uOnRoaXMuZGVzY3JpcHRpb24sbnVtYmVyOnRoaXMubnVtYmVyLGZpbGVOYW1lOnRoaXMuZmlsZU5hbWUsbGluZU51bWJlcjp0aGlzLmxpbmVOdW1iZXIsY29sdW1uTnVtYmVyOnRoaXMuY29sdW1uTnVtYmVyLHN0YWNrOnRoaXMuc3RhY2ssY29uZmlnOnRoaXMuY29uZmlnLGNvZGU6dGhpcy5jb2RlLHN0YXR1czp0aGlzLnJlc3BvbnNlJiZ0aGlzLnJlc3BvbnNlLnN0YXR1cz90aGlzLnJlc3BvbnNlLnN0YXR1czpudWxsfX0sZX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigwKSxvPW4oMTgpLGk9bigxOSkscz1uKDQpLGE9bigyMCksdT1uKDIzKSxjPW4oMjQpLGY9big3KSxsPW4oMSkscD1uKDIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHQsbil7dmFyIGQsaD1lLmRhdGEsbT1lLmhlYWRlcnMsdj1lLnJlc3BvbnNlVHlwZTtmdW5jdGlvbiB5KCl7ZS5jYW5jZWxUb2tlbiYmZS5jYW5jZWxUb2tlbi51bnN1YnNjcmliZShkKSxlLnNpZ25hbCYmZS5zaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYWJvcnQiLGQpfXIuaXNGb3JtRGF0YShoKSYmZGVsZXRlIG1bIkNvbnRlbnQtVHlwZSJdO3ZhciBnPW5ldyBYTUxIdHRwUmVxdWVzdDtpZihlLmF1dGgpe3ZhciBiPWUuYXV0aC51c2VybmFtZXx8IiIseD1lLmF1dGgucGFzc3dvcmQ\/dW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KGUuYXV0aC5wYXNzd29yZCkpOiIiO20uQXV0aG9yaXphdGlvbj0iQmFzaWMgIitidG9hKGIrIjoiK3gpfXZhciB3PWEoZS5iYXNlVVJMLGUudXJsKTtmdW5jdGlvbiBFKCl7aWYoZyl7dmFyIHI9ImdldEFsbFJlc3BvbnNlSGVhZGVycyJpbiBnP3UoZy5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSk6bnVsbCxpPXtkYXRhOnYmJiJ0ZXh0IiE9PXYmJiJqc29uIiE9PXY\/Zy5yZXNwb25zZTpnLnJlc3BvbnNlVGV4dCxzdGF0dXM6Zy5zdGF0dXMsc3RhdHVzVGV4dDpnLnN0YXR1c1RleHQsaGVhZGVyczpyLGNvbmZpZzplLHJlcXVlc3Q6Z307bygoZnVuY3Rpb24oZSl7dChlKSx5KCl9KSwoZnVuY3Rpb24oZSl7bihlKSx5KCl9KSxpKSxnPW51bGx9fWlmKGcub3BlbihlLm1ldGhvZC50b1VwcGVyQ2FzZSgpLHModyxlLnBhcmFtcyxlLnBhcmFtc1NlcmlhbGl6ZXIpLCEwKSxnLnRpbWVvdXQ9ZS50aW1lb3V0LCJvbmxvYWRlbmQiaW4gZz9nLm9ubG9hZGVuZD1FOmcub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7ZyYmND09PWcucmVhZHlTdGF0ZSYmKDAhPT1nLnN0YXR1c3x8Zy5yZXNwb25zZVVSTCYmMD09PWcucmVzcG9uc2VVUkwuaW5kZXhPZigiZmlsZToiKSkmJnNldFRpbWVvdXQoRSl9LGcub25hYm9ydD1mdW5jdGlvbigpe2cmJihuKGYoIlJlcXVlc3QgYWJvcnRlZCIsZSwiRUNPTk5BQk9SVEVEIixnKSksZz1udWxsKX0sZy5vbmVycm9yPWZ1bmN0aW9uKCl7bihmKCJOZXR3b3JrIEVycm9yIixlLG51bGwsZykpLGc9bnVsbH0sZy5vbnRpbWVvdXQ9ZnVuY3Rpb24oKXt2YXIgdD1lLnRpbWVvdXQ\/InRpbWVvdXQgb2YgIitlLnRpbWVvdXQrIm1zIGV4Y2VlZGVkIjoidGltZW91dCBleGNlZWRlZCIscj1lLnRyYW5zaXRpb25hbHx8bC50cmFuc2l0aW9uYWw7ZS50aW1lb3V0RXJyb3JNZXNzYWdlJiYodD1lLnRpbWVvdXRFcnJvck1lc3NhZ2UpLG4oZih0LGUsci5jbGFyaWZ5VGltZW91dEVycm9yPyJFVElNRURPVVQiOiJFQ09OTkFCT1JURUQiLGcpKSxnPW51bGx9LHIuaXNTdGFuZGFyZEJyb3dzZXJFbnYoKSl7dmFyIFM9KGUud2l0aENyZWRlbnRpYWxzfHxjKHcpKSYmZS54c3JmQ29va2llTmFtZT9pLnJlYWQoZS54c3JmQ29va2llTmFtZSk6dm9pZCAwO1MmJihtW2UueHNyZkhlYWRlck5hbWVdPVMpfSJzZXRSZXF1ZXN0SGVhZGVyImluIGcmJnIuZm9yRWFjaChtLChmdW5jdGlvbihlLHQpe3ZvaWQgMD09PWgmJiJjb250ZW50LXR5cGUiPT09dC50b0xvd2VyQ2FzZSgpP2RlbGV0ZSBtW3RdOmcuc2V0UmVxdWVzdEhlYWRlcih0LGUpfSkpLHIuaXNVbmRlZmluZWQoZS53aXRoQ3JlZGVudGlhbHMpfHwoZy53aXRoQ3JlZGVudGlhbHM9ISFlLndpdGhDcmVkZW50aWFscyksdiYmImpzb24iIT09diYmKGcucmVzcG9uc2VUeXBlPWUucmVzcG9uc2VUeXBlKSwiZnVuY3Rpb24iPT10eXBlb2YgZS5vbkRvd25sb2FkUHJvZ3Jlc3MmJmcuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLGUub25Eb3dubG9hZFByb2dyZXNzKSwiZnVuY3Rpb24iPT10eXBlb2YgZS5vblVwbG9hZFByb2dyZXNzJiZnLnVwbG9hZCYmZy51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLGUub25VcGxvYWRQcm9ncmVzcyksKGUuY2FuY2VsVG9rZW58fGUuc2lnbmFsKSYmKGQ9ZnVuY3Rpb24oZSl7ZyYmKG4oIWV8fGUmJmUudHlwZT9uZXcgcCgiY2FuY2VsZWQiKTplKSxnLmFib3J0KCksZz1udWxsKX0sZS5jYW5jZWxUb2tlbiYmZS5jYW5jZWxUb2tlbi5zdWJzY3JpYmUoZCksZS5zaWduYWwmJihlLnNpZ25hbC5hYm9ydGVkP2QoKTplLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsZCkpKSxofHwoaD1udWxsKSxnLnNlbmQoaCl9KSl9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oNSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuLG8saSl7dmFyIHM9bmV3IEVycm9yKGUpO3JldHVybiByKHMsdCxuLG8saSl9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4hKCFlfHwhZS5fX0NBTkNFTF9fKX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigwKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt0PXR8fHt9O3ZhciBuPXt9O2Z1bmN0aW9uIG8oZSx0KXtyZXR1cm4gci5pc1BsYWluT2JqZWN0KGUpJiZyLmlzUGxhaW5PYmplY3QodCk\/ci5tZXJnZShlLHQpOnIuaXNQbGFpbk9iamVjdCh0KT9yLm1lcmdlKHt9LHQpOnIuaXNBcnJheSh0KT90LnNsaWNlKCk6dH1mdW5jdGlvbiBpKG4pe3JldHVybiByLmlzVW5kZWZpbmVkKHRbbl0pP3IuaXNVbmRlZmluZWQoZVtuXSk\/dm9pZCAwOm8odm9pZCAwLGVbbl0pOm8oZVtuXSx0W25dKX1mdW5jdGlvbiBzKGUpe2lmKCFyLmlzVW5kZWZpbmVkKHRbZV0pKXJldHVybiBvKHZvaWQgMCx0W2VdKX1mdW5jdGlvbiBhKG4pe3JldHVybiByLmlzVW5kZWZpbmVkKHRbbl0pP3IuaXNVbmRlZmluZWQoZVtuXSk\/dm9pZCAwOm8odm9pZCAwLGVbbl0pOm8odm9pZCAwLHRbbl0pfWZ1bmN0aW9uIHUobil7cmV0dXJuIG4gaW4gdD9vKGVbbl0sdFtuXSk6biBpbiBlP28odm9pZCAwLGVbbl0pOnZvaWQgMH12YXIgYz17dXJsOnMsbWV0aG9kOnMsZGF0YTpzLGJhc2VVUkw6YSx0cmFuc2Zvcm1SZXF1ZXN0OmEsdHJhbnNmb3JtUmVzcG9uc2U6YSxwYXJhbXNTZXJpYWxpemVyOmEsdGltZW91dDphLHRpbWVvdXRNZXNzYWdlOmEsd2l0aENyZWRlbnRpYWxzOmEsYWRhcHRlcjphLHJlc3BvbnNlVHlwZTphLHhzcmZDb29raWVOYW1lOmEseHNyZkhlYWRlck5hbWU6YSxvblVwbG9hZFByb2dyZXNzOmEsb25Eb3dubG9hZFByb2dyZXNzOmEsZGVjb21wcmVzczphLG1heENvbnRlbnRMZW5ndGg6YSxtYXhCb2R5TGVuZ3RoOmEsdHJhbnNwb3J0OmEsaHR0cEFnZW50OmEsaHR0cHNBZ2VudDphLGNhbmNlbFRva2VuOmEsc29ja2V0UGF0aDphLHJlc3BvbnNlRW5jb2Rpbmc6YSx2YWxpZGF0ZVN0YXR1czp1fTtyZXR1cm4gci5mb3JFYWNoKE9iamVjdC5rZXlzKGUpLmNvbmNhdChPYmplY3Qua2V5cyh0KSksKGZ1bmN0aW9uKGUpe3ZhciB0PWNbZV18fGksbz10KGUpO3IuaXNVbmRlZmluZWQobykmJnQhPT11fHwobltlXT1vKX0pKSxufX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9e3ZlcnNpb246IjAuMjQuMCJ9fSxmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPW4oMTIpfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMCksbz1uKDMpLGk9bigxMykscz1uKDkpO3ZhciBhPWZ1bmN0aW9uIGUodCl7dmFyIG49bmV3IGkodCksYT1vKGkucHJvdG90eXBlLnJlcXVlc3Qsbik7cmV0dXJuIHIuZXh0ZW5kKGEsaS5wcm90b3R5cGUsbiksci5leHRlbmQoYSxuKSxhLmNyZWF0ZT1mdW5jdGlvbihuKXtyZXR1cm4gZShzKHQsbikpfSxhfShuKDEpKTthLkF4aW9zPWksYS5DYW5jZWw9bigyKSxhLkNhbmNlbFRva2VuPW4oMjYpLGEuaXNDYW5jZWw9big4KSxhLlZFUlNJT049bigxMCkudmVyc2lvbixhLmFsbD1mdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5hbGwoZSl9LGEuc3ByZWFkPW4oMjcpLGEuaXNBeGlvc0Vycm9yPW4oMjgpLGUuZXhwb3J0cz1hLGUuZXhwb3J0cy5kZWZhdWx0PWF9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigwKSxvPW4oNCksaT1uKDE0KSxzPW4oMTUpLGE9big5KSx1PW4oMjUpLGM9dS52YWxpZGF0b3JzO2Z1bmN0aW9uIGYoZSl7dGhpcy5kZWZhdWx0cz1lLHRoaXMuaW50ZXJjZXB0b3JzPXtyZXF1ZXN0Om5ldyBpLHJlc3BvbnNlOm5ldyBpfX1mLnByb3RvdHlwZS5yZXF1ZXN0PWZ1bmN0aW9uKGUpeyJzdHJpbmciPT10eXBlb2YgZT8oZT1hcmd1bWVudHNbMV18fHt9KS51cmw9YXJndW1lbnRzWzBdOmU9ZXx8e30sKGU9YSh0aGlzLmRlZmF1bHRzLGUpKS5tZXRob2Q\/ZS5tZXRob2Q9ZS5tZXRob2QudG9Mb3dlckNhc2UoKTp0aGlzLmRlZmF1bHRzLm1ldGhvZD9lLm1ldGhvZD10aGlzLmRlZmF1bHRzLm1ldGhvZC50b0xvd2VyQ2FzZSgpOmUubWV0aG9kPSJnZXQiO3ZhciB0PWUudHJhbnNpdGlvbmFsO3ZvaWQgMCE9PXQmJnUuYXNzZXJ0T3B0aW9ucyh0LHtzaWxlbnRKU09OUGFyc2luZzpjLnRyYW5zaXRpb25hbChjLmJvb2xlYW4pLGZvcmNlZEpTT05QYXJzaW5nOmMudHJhbnNpdGlvbmFsKGMuYm9vbGVhbiksY2xhcmlmeVRpbWVvdXRFcnJvcjpjLnRyYW5zaXRpb25hbChjLmJvb2xlYW4pfSwhMSk7dmFyIG49W10scj0hMDt0aGlzLmludGVyY2VwdG9ycy5yZXF1ZXN0LmZvckVhY2goKGZ1bmN0aW9uKHQpeyJmdW5jdGlvbiI9PXR5cGVvZiB0LnJ1bldoZW4mJiExPT09dC5ydW5XaGVuKGUpfHwocj1yJiZ0LnN5bmNocm9ub3VzLG4udW5zaGlmdCh0LmZ1bGZpbGxlZCx0LnJlamVjdGVkKSl9KSk7dmFyIG8saT1bXTtpZih0aGlzLmludGVyY2VwdG9ycy5yZXNwb25zZS5mb3JFYWNoKChmdW5jdGlvbihlKXtpLnB1c2goZS5mdWxmaWxsZWQsZS5yZWplY3RlZCl9KSksIXIpe3ZhciBmPVtzLHZvaWQgMF07Zm9yKEFycmF5LnByb3RvdHlwZS51bnNoaWZ0LmFwcGx5KGYsbiksZj1mLmNvbmNhdChpKSxvPVByb21pc2UucmVzb2x2ZShlKTtmLmxlbmd0aDspbz1vLnRoZW4oZi5zaGlmdCgpLGYuc2hpZnQoKSk7cmV0dXJuIG99Zm9yKHZhciBsPWU7bi5sZW5ndGg7KXt2YXIgcD1uLnNoaWZ0KCksZD1uLnNoaWZ0KCk7dHJ5e2w9cChsKX1jYXRjaChlKXtkKGUpO2JyZWFrfX10cnl7bz1zKGwpfWNhdGNoKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX1mb3IoO2kubGVuZ3RoOylvPW8udGhlbihpLnNoaWZ0KCksaS5zaGlmdCgpKTtyZXR1cm4gb30sZi5wcm90b3R5cGUuZ2V0VXJpPWZ1bmN0aW9uKGUpe3JldHVybiBlPWEodGhpcy5kZWZhdWx0cyxlKSxvKGUudXJsLGUucGFyYW1zLGUucGFyYW1zU2VyaWFsaXplcikucmVwbGFjZSgvXlw\/LywiIil9LHIuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJvcHRpb25zIl0sKGZ1bmN0aW9uKGUpe2YucHJvdG90eXBlW2VdPWZ1bmN0aW9uKHQsbil7cmV0dXJuIHRoaXMucmVxdWVzdChhKG58fHt9LHttZXRob2Q6ZSx1cmw6dCxkYXRhOihufHx7fSkuZGF0YX0pKX19KSksci5mb3JFYWNoKFsicG9zdCIsInB1dCIsInBhdGNoIl0sKGZ1bmN0aW9uKGUpe2YucHJvdG90eXBlW2VdPWZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KGEocnx8e30se21ldGhvZDplLHVybDp0LGRhdGE6bn0pKX19KSksZS5leHBvcnRzPWZ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigwKTtmdW5jdGlvbiBvKCl7dGhpcy5oYW5kbGVycz1bXX1vLnByb3RvdHlwZS51c2U9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0aGlzLmhhbmRsZXJzLnB1c2goe2Z1bGZpbGxlZDplLHJlamVjdGVkOnQsc3luY2hyb25vdXM6ISFuJiZuLnN5bmNocm9ub3VzLHJ1bldoZW46bj9uLnJ1bldoZW46bnVsbH0pLHRoaXMuaGFuZGxlcnMubGVuZ3RoLTF9LG8ucHJvdG90eXBlLmVqZWN0PWZ1bmN0aW9uKGUpe3RoaXMuaGFuZGxlcnNbZV0mJih0aGlzLmhhbmRsZXJzW2VdPW51bGwpfSxvLnByb3RvdHlwZS5mb3JFYWNoPWZ1bmN0aW9uKGUpe3IuZm9yRWFjaCh0aGlzLmhhbmRsZXJzLChmdW5jdGlvbih0KXtudWxsIT09dCYmZSh0KX0pKX0sZS5leHBvcnRzPW99LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigwKSxvPW4oMTYpLGk9big4KSxzPW4oMSksYT1uKDIpO2Z1bmN0aW9uIHUoZSl7aWYoZS5jYW5jZWxUb2tlbiYmZS5jYW5jZWxUb2tlbi50aHJvd0lmUmVxdWVzdGVkKCksZS5zaWduYWwmJmUuc2lnbmFsLmFib3J0ZWQpdGhyb3cgbmV3IGEoImNhbmNlbGVkIil9ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiB1KGUpLGUuaGVhZGVycz1lLmhlYWRlcnN8fHt9LGUuZGF0YT1vLmNhbGwoZSxlLmRhdGEsZS5oZWFkZXJzLGUudHJhbnNmb3JtUmVxdWVzdCksZS5oZWFkZXJzPXIubWVyZ2UoZS5oZWFkZXJzLmNvbW1vbnx8e30sZS5oZWFkZXJzW2UubWV0aG9kXXx8e30sZS5oZWFkZXJzKSxyLmZvckVhY2goWyJkZWxldGUiLCJnZXQiLCJoZWFkIiwicG9zdCIsInB1dCIsInBhdGNoIiwiY29tbW9uIl0sKGZ1bmN0aW9uKHQpe2RlbGV0ZSBlLmhlYWRlcnNbdF19KSksKGUuYWRhcHRlcnx8cy5hZGFwdGVyKShlKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gdShlKSx0LmRhdGE9by5jYWxsKGUsdC5kYXRhLHQuaGVhZGVycyxlLnRyYW5zZm9ybVJlc3BvbnNlKSx0fSksKGZ1bmN0aW9uKHQpe3JldHVybiBpKHQpfHwodShlKSx0JiZ0LnJlc3BvbnNlJiYodC5yZXNwb25zZS5kYXRhPW8uY2FsbChlLHQucmVzcG9uc2UuZGF0YSx0LnJlc3BvbnNlLmhlYWRlcnMsZS50cmFuc2Zvcm1SZXNwb25zZSkpKSxQcm9taXNlLnJlamVjdCh0KX0pKX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigwKSxvPW4oMSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuKXt2YXIgaT10aGlzfHxvO3JldHVybiByLmZvckVhY2gobiwoZnVuY3Rpb24obil7ZT1uLmNhbGwoaSxlLHQpfSkpLGV9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7ci5mb3JFYWNoKGUsKGZ1bmN0aW9uKG4scil7ciE9PXQmJnIudG9VcHBlckNhc2UoKT09PXQudG9VcHBlckNhc2UoKSYmKGVbdF09bixkZWxldGUgZVtyXSl9KSl9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oNyk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuKXt2YXIgbz1uLmNvbmZpZy52YWxpZGF0ZVN0YXR1cztuLnN0YXR1cyYmbyYmIW8obi5zdGF0dXMpP3QocigiUmVxdWVzdCBmYWlsZWQgd2l0aCBzdGF0dXMgY29kZSAiK24uc3RhdHVzLG4uY29uZmlnLG51bGwsbi5yZXF1ZXN0LG4pKTplKG4pfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDApO2UuZXhwb3J0cz1yLmlzU3RhbmRhcmRCcm93c2VyRW52KCk\/e3dyaXRlOmZ1bmN0aW9uKGUsdCxuLG8saSxzKXt2YXIgYT1bXTthLnB1c2goZSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KHQpKSxyLmlzTnVtYmVyKG4pJiZhLnB1c2goImV4cGlyZXM9IituZXcgRGF0ZShuKS50b0dNVFN0cmluZygpKSxyLmlzU3RyaW5nKG8pJiZhLnB1c2goInBhdGg9IitvKSxyLmlzU3RyaW5nKGkpJiZhLnB1c2goImRvbWFpbj0iK2kpLCEwPT09cyYmYS5wdXNoKCJzZWN1cmUiKSxkb2N1bWVudC5jb29raWU9YS5qb2luKCI7ICIpfSxyZWFkOmZ1bmN0aW9uKGUpe3ZhciB0PWRvY3VtZW50LmNvb2tpZS5tYXRjaChuZXcgUmVnRXhwKCIoXnw7XFxzKikoIitlKyIpPShbXjtdKikiKSk7cmV0dXJuIHQ\/ZGVjb2RlVVJJQ29tcG9uZW50KHRbM10pOm51bGx9LHJlbW92ZTpmdW5jdGlvbihlKXt0aGlzLndyaXRlKGUsIiIsRGF0ZS5ub3coKS04NjRlNSl9fTp7d3JpdGU6ZnVuY3Rpb24oKXt9LHJlYWQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0scmVtb3ZlOmZ1bmN0aW9uKCl7fX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigyMSksbz1uKDIyKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSYmIXIodCk\/byhlLHQpOnR9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4vXihbYS16XVthLXpcZFwrXC1cLl0qOik\/XC9cLy9pLnRlc3QoZSl9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiB0P2UucmVwbGFjZSgvXC8rJC8sIiIpKyIvIit0LnJlcGxhY2UoL15cLysvLCIiKTplfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDApLG89WyJhZ2UiLCJhdXRob3JpemF0aW9uIiwiY29udGVudC1sZW5ndGgiLCJjb250ZW50LXR5cGUiLCJldGFnIiwiZXhwaXJlcyIsImZyb20iLCJob3N0IiwiaWYtbW9kaWZpZWQtc2luY2UiLCJpZi11bm1vZGlmaWVkLXNpbmNlIiwibGFzdC1tb2RpZmllZCIsImxvY2F0aW9uIiwibWF4LWZvcndhcmRzIiwicHJveHktYXV0aG9yaXphdGlvbiIsInJlZmVyZXIiLCJyZXRyeS1hZnRlciIsInVzZXItYWdlbnQiXTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQsbixpLHM9e307cmV0dXJuIGU\/KHIuZm9yRWFjaChlLnNwbGl0KCJcbiIpLChmdW5jdGlvbihlKXtpZihpPWUuaW5kZXhPZigiOiIpLHQ9ci50cmltKGUuc3Vic3RyKDAsaSkpLnRvTG93ZXJDYXNlKCksbj1yLnRyaW0oZS5zdWJzdHIoaSsxKSksdCl7aWYoc1t0XSYmby5pbmRleE9mKHQpPj0wKXJldHVybjtzW3RdPSJzZXQtY29va2llIj09PXQ\/KHNbdF0\/c1t0XTpbXSkuY29uY2F0KFtuXSk6c1t0XT9zW3RdKyIsICIrbjpufX0pKSxzKTpzfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDApO2UuZXhwb3J0cz1yLmlzU3RhbmRhcmRCcm93c2VyRW52KCk\/ZnVuY3Rpb24oKXt2YXIgZSx0PS8obXNpZXx0cmlkZW50KS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCksbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7ZnVuY3Rpb24gbyhlKXt2YXIgcj1lO3JldHVybiB0JiYobi5zZXRBdHRyaWJ1dGUoImhyZWYiLHIpLHI9bi5ocmVmKSxuLnNldEF0dHJpYnV0ZSgiaHJlZiIscikse2hyZWY6bi5ocmVmLHByb3RvY29sOm4ucHJvdG9jb2w\/bi5wcm90b2NvbC5yZXBsYWNlKC86JC8sIiIpOiIiLGhvc3Q6bi5ob3N0LHNlYXJjaDpuLnNlYXJjaD9uLnNlYXJjaC5yZXBsYWNlKC9eXD8vLCIiKToiIixoYXNoOm4uaGFzaD9uLmhhc2gucmVwbGFjZSgvXiMvLCIiKToiIixob3N0bmFtZTpuLmhvc3RuYW1lLHBvcnQ6bi5wb3J0LHBhdGhuYW1lOiIvIj09PW4ucGF0aG5hbWUuY2hhckF0KDApP24ucGF0aG5hbWU6Ii8iK24ucGF0aG5hbWV9fXJldHVybiBlPW8od2luZG93LmxvY2F0aW9uLmhyZWYpLGZ1bmN0aW9uKHQpe3ZhciBuPXIuaXNTdHJpbmcodCk\/byh0KTp0O3JldHVybiBuLnByb3RvY29sPT09ZS5wcm90b2NvbCYmbi5ob3N0PT09ZS5ob3N0fX0oKTpmdW5jdGlvbigpe3JldHVybiEwfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDEwKS52ZXJzaW9uLG89e307WyJvYmplY3QiLCJib29sZWFuIiwibnVtYmVyIiwiZnVuY3Rpb24iLCJzdHJpbmciLCJzeW1ib2wiXS5mb3JFYWNoKChmdW5jdGlvbihlLHQpe29bZV09ZnVuY3Rpb24obil7cmV0dXJuIHR5cGVvZiBuPT09ZXx8ImEiKyh0PDE\/Im4gIjoiICIpK2V9fSkpO3ZhciBpPXt9O28udHJhbnNpdGlvbmFsPWZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiBvKGUsdCl7cmV0dXJuIltBeGlvcyB2IityKyJdIFRyYW5zaXRpb25hbCBvcHRpb24gJyIrZSsiJyIrdCsobj8iLiAiK246IiIpfXJldHVybiBmdW5jdGlvbihuLHIscyl7aWYoITE9PT1lKXRocm93IG5ldyBFcnJvcihvKHIsIiBoYXMgYmVlbiByZW1vdmVkIisodD8iIGluICIrdDoiIikpKTtyZXR1cm4gdCYmIWlbcl0mJihpW3JdPSEwLGNvbnNvbGUud2FybihvKHIsIiBoYXMgYmVlbiBkZXByZWNhdGVkIHNpbmNlIHYiK3QrIiBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZWFyIGZ1dHVyZSIpKSksIWV8fGUobixyLHMpfX0sZS5leHBvcnRzPXthc3NlcnRPcHRpb25zOmZ1bmN0aW9uKGUsdCxuKXtpZigib2JqZWN0IiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCIpO2Zvcih2YXIgcj1PYmplY3Qua2V5cyhlKSxvPXIubGVuZ3RoO28tLSA+MDspe3ZhciBpPXJbb10scz10W2ldO2lmKHMpe3ZhciBhPWVbaV0sdT12b2lkIDA9PT1hfHxzKGEsaSxlKTtpZighMCE9PXUpdGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9uICIraSsiIG11c3QgYmUgIit1KX1lbHNlIGlmKCEwIT09bil0aHJvdyBFcnJvcigiVW5rbm93biBvcHRpb24gIitpKX19LHZhbGlkYXRvcnM6b319LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigyKTtmdW5jdGlvbiBvKGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoImV4ZWN1dG9yIG11c3QgYmUgYSBmdW5jdGlvbi4iKTt2YXIgdDt0aGlzLnByb21pc2U9bmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe3Q9ZX0pKTt2YXIgbj10aGlzO3RoaXMucHJvbWlzZS50aGVuKChmdW5jdGlvbihlKXtpZihuLl9saXN0ZW5lcnMpe3ZhciB0LHI9bi5fbGlzdGVuZXJzLmxlbmd0aDtmb3IodD0wO3Q8cjt0Kyspbi5fbGlzdGVuZXJzW3RdKGUpO24uX2xpc3RlbmVycz1udWxsfX0pKSx0aGlzLnByb21pc2UudGhlbj1mdW5jdGlvbihlKXt2YXIgdCxyPW5ldyBQcm9taXNlKChmdW5jdGlvbihlKXtuLnN1YnNjcmliZShlKSx0PWV9KSkudGhlbihlKTtyZXR1cm4gci5jYW5jZWw9ZnVuY3Rpb24oKXtuLnVuc3Vic2NyaWJlKHQpfSxyfSxlKChmdW5jdGlvbihlKXtuLnJlYXNvbnx8KG4ucmVhc29uPW5ldyByKGUpLHQobi5yZWFzb24pKX0pKX1vLnByb3RvdHlwZS50aHJvd0lmUmVxdWVzdGVkPWZ1bmN0aW9uKCl7aWYodGhpcy5yZWFzb24pdGhyb3cgdGhpcy5yZWFzb259LG8ucHJvdG90eXBlLnN1YnNjcmliZT1mdW5jdGlvbihlKXt0aGlzLnJlYXNvbj9lKHRoaXMucmVhc29uKTp0aGlzLl9saXN0ZW5lcnM\/dGhpcy5fbGlzdGVuZXJzLnB1c2goZSk6dGhpcy5fbGlzdGVuZXJzPVtlXX0sby5wcm90b3R5cGUudW5zdWJzY3JpYmU9ZnVuY3Rpb24oZSl7aWYodGhpcy5fbGlzdGVuZXJzKXt2YXIgdD10aGlzLl9saXN0ZW5lcnMuaW5kZXhPZihlKTstMSE9PXQmJnRoaXMuX2xpc3RlbmVycy5zcGxpY2UodCwxKX19LG8uc291cmNlPWZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJue3Rva2VuOm5ldyBvKChmdW5jdGlvbih0KXtlPXR9KSksY2FuY2VsOmV9fSxlLmV4cG9ydHM9b30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLmFwcGx5KG51bGwsdCl9fX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBlJiYhMD09PWUuaXNBeGlvc0Vycm9yfX1dKX0pKTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9YXhpb3MubWluLm1hcDsKLyoqIC9tL2pzL3ZhbmlsbGFqcy9wcmlzdGluZS5taW4uanMgKiovCiFmdW5jdGlvbihlLHIpeyJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmInVuZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGU\/bW9kdWxlLmV4cG9ydHM9cigpOiJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ\/ZGVmaW5lKHIpOihlPSJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOmV8fHNlbGYpLlByaXN0aW5lPXIoKX0odGhpcywoZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIGU9e2VuOntyZXF1aXJlZDoiVGhpcyBmaWVsZCBpcyByZXF1aXJlZCIsZW1haWw6IlRoaXMgZmllbGQgcmVxdWlyZXMgYSB2YWxpZCBlLW1haWwgYWRkcmVzcyIsbnVtYmVyOiJUaGlzIGZpZWxkIHJlcXVpcmVzIGEgbnVtYmVyIixpbnRlZ2VyOiJUaGlzIGZpZWxkIHJlcXVpcmVzIGFuIGludGVnZXIgdmFsdWUiLHVybDoiVGhpcyBmaWVsZCByZXF1aXJlcyBhIHZhbGlkIHdlYnNpdGUgVVJMIix0ZWw6IlRoaXMgZmllbGQgcmVxdWlyZXMgYSB2YWxpZCB0ZWxlcGhvbmUgbnVtYmVyIixtYXhsZW5ndGg6IlRoaXMgZmllbGRzIGxlbmd0aCBtdXN0IGJlIDwgJHsxfSIsbWlubGVuZ3RoOiJUaGlzIGZpZWxkcyBsZW5ndGggbXVzdCBiZSA+ICR7MX0iLG1pbjoiTWluaW11bSB2YWx1ZSBmb3IgdGhpcyBmaWVsZCBpcyAkezF9IixtYXg6Ik1heGltdW0gdmFsdWUgZm9yIHRoaXMgZmllbGQgaXMgJHsxfSIscGF0dGVybjoiUGxlYXNlIG1hdGNoIHRoZSByZXF1ZXN0ZWQgZm9ybWF0IixlcXVhbHM6IlRoZSB0d28gZmllbGRzIGRvIG5vdCBtYXRjaCJ9fTtmdW5jdGlvbiByKGUpe3ZhciByPWFyZ3VtZW50cztyZXR1cm4gdGhpcy5yZXBsYWNlKC9cJHsoW157fV0qKX0vZywoZnVuY3Rpb24oZSx0KXtyZXR1cm4gclt0XX0pKX1mdW5jdGlvbiB0KGUpe3JldHVybiBlLnByaXN0aW5lLnNlbGYuZm9ybS5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dFtuYW1lPSInK2UuZ2V0QXR0cmlidXRlKCJuYW1lIikrJyJdOmNoZWNrZWQnKS5sZW5ndGh9dmFyIG49e2NsYXNzVG86ImZvcm0tZ3JvdXAiLGVycm9yQ2xhc3M6Imhhcy1kYW5nZXIiLHN1Y2Nlc3NDbGFzczoiaGFzLXN1Y2Nlc3MiLGVycm9yVGV4dFBhcmVudDoiZm9ybS1ncm91cCIsZXJyb3JUZXh0VGFnOiJkaXYiLGVycm9yVGV4dENsYXNzOiJ0ZXh0LWhlbHAifSxpPVsicmVxdWlyZWQiLCJtaW4iLCJtYXgiLCJtaW5sZW5ndGgiLCJtYXhsZW5ndGgiLCJwYXR0ZXJuIl0scz0vXigoW148PigpXFtcXVxcLiw7OlxzQCJdKyhcLltePD4oKVxbXF1cXC4sOzpcc0AiXSspKil8KCIuKyIpKUAoKFxbWzAtOV17MSwzfVwuWzAtOV17MSwzfVwuWzAtOV17MSwzfVwuWzAtOV17MSwzfV0pfCgoW2EtekEtWlwtMC05XStcLikrW2EtekEtWl17Mix9KSkkLyxhPS8tbWVzc2FnZSg\/Oi0oW2Etel17Mn0oPzpfW0EtWl17Mn0pPykpPy8sbz0iZW4iLGw9e30sdT1mdW5jdGlvbihlLHIpe3IubmFtZT1lLHZvaWQgMD09PXIucHJpb3JpdHkmJihyLnByaW9yaXR5PTEpLGxbZV09cn07ZnVuY3Rpb24gZih0LHMsdSl7dmFyIGY9dGhpcztmdW5jdGlvbiBjKGUscix0LG4pe3ZhciBpPWxbdF07aWYoaSYmKGUucHVzaChpKSxuKSl7dmFyIHM9InBhdHRlcm4iPT09dD9bbl06bi5zcGxpdCgiLCIpO3MudW5zaGlmdChudWxsKSxyW3RdPXN9fWZ1bmN0aW9uIHAodCl7Zm9yKHZhciBuPVtdLGk9ITAscz0wO3QudmFsaWRhdG9yc1tzXTtzKyspe3ZhciBhPXQudmFsaWRhdG9yc1tzXSxsPXQucGFyYW1zW2EubmFtZV0\/dC5wYXJhbXNbYS5uYW1lXTpbXTtpZihsWzBdPXQuaW5wdXQudmFsdWUsIWEuZm4uYXBwbHkodC5pbnB1dCxsKSYmKGk9ITEsImZ1bmN0aW9uIj09dHlwZW9mIGEubXNnP24ucHVzaChhLm1zZyh0LmlucHV0LnZhbHVlLGwpKToic3RyaW5nIj09dHlwZW9mIGEubXNnP24ucHVzaChyLmFwcGx5KGEubXNnLGwpKTphLm1zZz09PU9iamVjdChhLm1zZykmJmEubXNnW29dP24ucHVzaChyLmFwcGx5KGEubXNnW29dLGwpKTp0Lm1lc3NhZ2VzW29dJiZ0Lm1lc3NhZ2VzW29dW2EubmFtZV0\/bi5wdXNoKHIuYXBwbHkodC5tZXNzYWdlc1tvXVthLm5hbWVdLGwpKTplW29dJiZlW29dW2EubmFtZV0mJm4ucHVzaChyLmFwcGx5KGVbb11bYS5uYW1lXSxsKSksITA9PT1hLmhhbHQpKWJyZWFrfXJldHVybiB0LmVycm9ycz1uLGl9ZnVuY3Rpb24gbShlKXtpZihlLmVycm9yRWxlbWVudHMpcmV0dXJuIGUuZXJyb3JFbGVtZW50czt2YXIgcj1mdW5jdGlvbihlLHIpe2Zvcig7KGU9ZS5wYXJlbnRFbGVtZW50KSYmIWUuY2xhc3NMaXN0LmNvbnRhaW5zKHIpOyk7cmV0dXJuIGV9KGUuaW5wdXQsZi5jb25maWcuY2xhc3NUbyksdD1udWxsLG49bnVsbDtyZXR1cm4odD1mLmNvbmZpZy5jbGFzc1RvPT09Zi5jb25maWcuZXJyb3JUZXh0UGFyZW50P3I6ci5xdWVyeVNlbGVjdG9yKCIuIitmLmNvbmZpZy5lcnJvclRleHRQYXJlbnQpKSYmKChuPXQucXVlcnlTZWxlY3RvcigiLnByaXN0aW5lLWVycm9yIikpfHwoKG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChmLmNvbmZpZy5lcnJvclRleHRUYWcpKS5jbGFzc05hbWU9InByaXN0aW5lLWVycm9yICIrZi5jb25maWcuZXJyb3JUZXh0Q2xhc3MsdC5hcHBlbmRDaGlsZChuKSxuLnByaXN0aW5lRGlzcGxheT1uLnN0eWxlLmRpc3BsYXkpKSxlLmVycm9yRWxlbWVudHM9W3Isbl19ZnVuY3Rpb24gZChlKXt2YXIgcj1tKGUpLHQ9clswXSxuPXJbMV07dCYmKHQuY2xhc3NMaXN0LnJlbW92ZShmLmNvbmZpZy5zdWNjZXNzQ2xhc3MpLHQuY2xhc3NMaXN0LmFkZChmLmNvbmZpZy5lcnJvckNsYXNzKSksbiYmKG4uaW5uZXJIVE1MPWUuZXJyb3JzLmpvaW4oIjxici8+Iiksbi5zdHlsZS5kaXNwbGF5PW4ucHJpc3RpbmVEaXNwbGF5fHwiIil9ZnVuY3Rpb24gaChlKXt2YXIgcj1mdW5jdGlvbihlKXt2YXIgcj1tKGUpLHQ9clswXSxuPXJbMV07cmV0dXJuIHQmJih0LmNsYXNzTGlzdC5yZW1vdmUoZi5jb25maWcuZXJyb3JDbGFzcyksdC5jbGFzc0xpc3QucmVtb3ZlKGYuY29uZmlnLnN1Y2Nlc3NDbGFzcykpLG4mJihuLmlubmVySFRNTD0iIixuLnN0eWxlLmRpc3BsYXk9Im5vbmUiKSxyfShlKVswXTtyJiZyLmNsYXNzTGlzdC5hZGQoZi5jb25maWcuc3VjY2Vzc0NsYXNzKX1yZXR1cm4gZnVuY3Rpb24oZSxyLHQpe2Uuc2V0QXR0cmlidXRlKCJub3ZhbGlkYXRlIiwidHJ1ZSIpLGYuZm9ybT1lLGYuY29uZmlnPWZ1bmN0aW9uKGUscil7Zm9yKHZhciB0IGluIHIpdCBpbiBlfHwoZVt0XT1yW3RdKTtyZXR1cm4gZX0ocnx8e30sbiksZi5saXZlPSEoITE9PT10KSxmLmZpZWxkcz1BcnJheS5mcm9tKGUucXVlcnlTZWxlY3RvckFsbCgiaW5wdXQ6bm90KFt0eXBlXj1oaWRkZW5dKTpub3QoW3R5cGVePXN1Ym1pdF0pLCBzZWxlY3QsIHRleHRhcmVhIikpLm1hcChmdW5jdGlvbihlKXt2YXIgcj1bXSx0PXt9LG49e307cmV0dXJuW10uZm9yRWFjaC5jYWxsKGUuYXR0cmlidXRlcywoZnVuY3Rpb24oZSl7aWYoL15kYXRhLXByaXN0aW5lLS8udGVzdChlLm5hbWUpKXt2YXIgcz1lLm5hbWUuc3Vic3RyKDE0KSxvPXMubWF0Y2goYSk7aWYobnVsbCE9PW8pe3ZhciBsPXZvaWQgMD09PW9bMV0\/ImVuIjpvWzFdO3JldHVybiBuLmhhc093blByb3BlcnR5KGwpfHwobltsXT17fSksdm9pZChuW2xdW3Muc2xpY2UoMCxzLmxlbmd0aC1vWzBdLmxlbmd0aCldPWUudmFsdWUpfSJ0eXBlIj09PXMmJihzPWUudmFsdWUpLGMocix0LHMsZS52YWx1ZSl9ZWxzZX5pLmluZGV4T2YoZS5uYW1lKT9jKHIsdCxlLm5hbWUsZS52YWx1ZSk6InR5cGUiPT09ZS5uYW1lJiZjKHIsdCxlLnZhbHVlKX0pKSxyLnNvcnQoKGZ1bmN0aW9uKGUscil7cmV0dXJuIHIucHJpb3JpdHktZS5wcmlvcml0eX0pKSxmLmxpdmUmJmUuYWRkRXZlbnRMaXN0ZW5lcih+WyJyYWRpbyIsImNoZWNrYm94Il0uaW5kZXhPZihlLmdldEF0dHJpYnV0ZSgidHlwZSIpKT8iY2hhbmdlIjoiaW5wdXQiLGZ1bmN0aW9uKGUpe2YudmFsaWRhdGUoZS50YXJnZXQpfS5iaW5kKGYpKSxlLnByaXN0aW5lPXtpbnB1dDplLHZhbGlkYXRvcnM6cixwYXJhbXM6dCxtZXNzYWdlczpuLHNlbGY6Zn19LmJpbmQoZikpfSh0LHMsdSksZi52YWxpZGF0ZT1mdW5jdGlvbihlLHIpe3I9ZSYmITA9PT1yfHwhMD09PWU7dmFyIHQ9Zi5maWVsZHM7ITAhPT1lJiYhMSE9PWUmJihlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQ\/dD1bZS5wcmlzdGluZV06KGUgaW5zdGFuY2VvZiBOb2RlTGlzdHx8ZSBpbnN0YW5jZW9mKHdpbmRvdy4kfHxBcnJheSl8fGUgaW5zdGFuY2VvZiBBcnJheSkmJih0PUFycmF5LmZyb20oZSkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5wcmlzdGluZX0pKSkpO2Zvcih2YXIgbj0hMCxpPTA7dFtpXTtpKyspe3ZhciBzPXRbaV07cChzKT8hciYmaChzKToobj0hMSwhciYmZChzKSl9cmV0dXJuIG59LGYuZ2V0RXJyb3JzPWZ1bmN0aW9uKGUpe2lmKCFlKXtmb3IodmFyIHI9W10sdD0wO3Q8Zi5maWVsZHMubGVuZ3RoO3QrKyl7dmFyIG49Zi5maWVsZHNbdF07bi5lcnJvcnMubGVuZ3RoJiZyLnB1c2goe2lucHV0Om4uaW5wdXQsZXJyb3JzOm4uZXJyb3JzfSl9cmV0dXJuIHJ9cmV0dXJuIGUudGFnTmFtZSYmInNlbGVjdCI9PT1lLnRhZ05hbWUudG9Mb3dlckNhc2UoKT9lLnByaXN0aW5lLmVycm9yczplLmxlbmd0aD9lWzBdLnByaXN0aW5lLmVycm9yczplLnByaXN0aW5lLmVycm9yc30sZi5hZGRWYWxpZGF0b3I9ZnVuY3Rpb24oZSxyLHQsbixpKXtlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQ\/KGUucHJpc3RpbmUudmFsaWRhdG9ycy5wdXNoKHtmbjpyLG1zZzp0LHByaW9yaXR5Om4saGFsdDppfSksZS5wcmlzdGluZS52YWxpZGF0b3JzLnNvcnQoKGZ1bmN0aW9uKGUscil7cmV0dXJuIHIucHJpb3JpdHktZS5wcmlvcml0eX0pKSk6Y29uc29sZS53YXJuKCJUaGUgcGFyYW1ldGVyIGVsZW0gbXVzdCBiZSBhIGRvbSBlbGVtZW50Iil9LGYuYWRkRXJyb3I9ZnVuY3Rpb24oZSxyKXsoZT1lLmxlbmd0aD9lWzBdOmUpLnByaXN0aW5lLmVycm9ycy5wdXNoKHIpLGQoZS5wcmlzdGluZSl9LGYucmVzZXQ9ZnVuY3Rpb24oKXtmb3IodmFyIGU9MDtmLmZpZWxkc1tlXTtlKyspZi5maWVsZHNbZV0uZXJyb3JFbGVtZW50cz1udWxsO0FycmF5LmZyb20oZi5mb3JtLnF1ZXJ5U2VsZWN0b3JBbGwoIi5wcmlzdGluZS1lcnJvciIpKS5tYXAoKGZ1bmN0aW9uKGUpe2UucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKX0pKSxBcnJheS5mcm9tKGYuZm9ybS5xdWVyeVNlbGVjdG9yQWxsKCIuIitmLmNvbmZpZy5jbGFzc1RvKSkubWFwKChmdW5jdGlvbihlKXtlLmNsYXNzTGlzdC5yZW1vdmUoZi5jb25maWcuc3VjY2Vzc0NsYXNzKSxlLmNsYXNzTGlzdC5yZW1vdmUoZi5jb25maWcuZXJyb3JDbGFzcyl9KSl9LGYuZGVzdHJveT1mdW5jdGlvbigpe2YucmVzZXQoKSxmLmZpZWxkcy5mb3JFYWNoKChmdW5jdGlvbihlKXtkZWxldGUgZS5pbnB1dC5wcmlzdGluZX0pKSxmLmZpZWxkcz1bXX0sZi5zZXRHbG9iYWxDb25maWc9ZnVuY3Rpb24oZSl7bj1lfSxmfXJldHVybiB1KCJ0ZXh0Iix7Zm46ZnVuY3Rpb24oZSl7cmV0dXJuITB9LHByaW9yaXR5OjB9KSx1KCJyZXF1aXJlZCIse2ZuOmZ1bmN0aW9uKGUpe3JldHVybiJyYWRpbyI9PT10aGlzLnR5cGV8fCJjaGVja2JveCI9PT10aGlzLnR5cGU\/dCh0aGlzKTp2b2lkIDAhPT1lJiYiIiE9PWV9LHByaW9yaXR5Ojk5LGhhbHQ6ITB9KSx1KCJlbWFpbCIse2ZuOmZ1bmN0aW9uKGUpe3JldHVybiFlfHxzLnRlc3QoZSl9fSksdSgibnVtYmVyIix7Zm46ZnVuY3Rpb24oZSl7cmV0dXJuIWV8fCFpc05hTihwYXJzZUZsb2F0KGUpKX0scHJpb3JpdHk6Mn0pLHUoImludGVnZXIiLHtmbjpmdW5jdGlvbihlKXtyZXR1cm4hZXx8L15cZCskLy50ZXN0KGUpfX0pLHUoIm1pbmxlbmd0aCIse2ZuOmZ1bmN0aW9uKGUscil7cmV0dXJuIWV8fGUubGVuZ3RoPj1wYXJzZUludChyKX19KSx1KCJtYXhsZW5ndGgiLHtmbjpmdW5jdGlvbihlLHIpe3JldHVybiFlfHxlLmxlbmd0aDw9cGFyc2VJbnQocil9fSksdSgibWluIix7Zm46ZnVuY3Rpb24oZSxyKXtyZXR1cm4hZXx8KCJjaGVja2JveCI9PT10aGlzLnR5cGU\/dCh0aGlzKT49cGFyc2VJbnQocik6cGFyc2VGbG9hdChlKT49cGFyc2VGbG9hdChyKSl9fSksdSgibWF4Iix7Zm46ZnVuY3Rpb24oZSxyKXtyZXR1cm4hZXx8KCJjaGVja2JveCI9PT10aGlzLnR5cGU\/dCh0aGlzKTw9cGFyc2VJbnQocik6cGFyc2VGbG9hdChlKTw9cGFyc2VGbG9hdChyKSl9fSksdSgicGF0dGVybiIse2ZuOmZ1bmN0aW9uKGUscil7dmFyIHQ9ci5tYXRjaChuZXcgUmVnRXhwKCJeLyguKj8pLyhbZ2lteV0qKSQiKSk7cmV0dXJuIWV8fG5ldyBSZWdFeHAodFsxXSx0WzJdKS50ZXN0KGUpfX0pLHUoImVxdWFscyIse2ZuOmZ1bmN0aW9uKGUscil7dmFyIHQ9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihyKTtyZXR1cm4gdCYmKCFlJiYhdC52YWx1ZXx8dC52YWx1ZT09PWUpfX0pLGYuYWRkVmFsaWRhdG9yPWZ1bmN0aW9uKGUscix0LG4saSl7dShlLHtmbjpyLG1zZzp0LHByaW9yaXR5Om4saGFsdDppfSl9LGYuYWRkTWVzc2FnZXM9ZnVuY3Rpb24ocix0KXt2YXIgbj1lLmhhc093blByb3BlcnR5KHIpP2Vbcl06ZVtyXT17fTtPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChmdW5jdGlvbihlLHIpe25bZV09dFtlXX0pKX0sZi5zZXRMb2NhbGU9ZnVuY3Rpb24oZSl7bz1lfSxmfSkpOwoKLy9FeHRlbnNpb24KLy8gQSB2YWxpZGF0b3IgdG8gY2hlY2sgaWYgdGhlIGlucHV0IHZhbHVlIGlzIHdpdGhpbiBhIHNwZWNpZmllZCByYW5nZQovLyBUaGUgZ2xvYmFsIHZhbGlkYXRvciBtdXN0IGJlIGFkZGVkIGJlZm9yZSBjcmVhdGluZyB0aGUgcHJpc3RpbmUgaW5zdGFuY2UKCi8vIFByaXN0aW5lLmFkZFZhbGlkYXRvcigicGhvbmUiLCBmdW5jdGlvbihwaG9uZSkgewoKLy8gCXZhciBWYWxpZEFyZWFDb2RlcyA9IFsKLy8gCQk0MzgsNTE0LDI2Myw0NTAsNTc5LDgxOSwyNDksNzA1LDIyNiwKLy8gCQk1MTksMjg5LDM2NSw5MDUsNDE2LDQzNyw2NDcsMzQzLAovLyAJCTYxMyw3MDksODczLDQxOCw1ODEsNTA2LDkwMgovLyAJXTsKCi8vIAlwaG9uZSA9IHBob25lLnJlcGxhY2UoL1teMC05XSsvZ2ksICcnKTsKLy8gCWlmKHR5cGVvZiBlbWFpbEhhbmRsZXIhPSd1bmRlZmluZWQnICYmIHRoaXMuaGFzQ2xhc3MoJ3JlcXVpcmVkJykpIHsKLy8gCQllbWFpbEhhbmRsZXIucGhvbmVNYW5kYXRvcnk9dHJ1ZTsKLy8gCX0KLy8gCWlmKCBwaG9uZVswXSA9PSAnMScgKXsKLy8gCQlwaG9uZSA9IHBob25lLnN1YnN0cmluZyggMSApOwovLyAJfQoKLy8gCXZhciBhcmVhQ29kZSA9IHBhcnNlSW50KCBwaG9uZS5zdWJzdHJpbmcoMCwzKSApOwoKLy8gCWF4aW9zLmdldCgnaHR0cHM6Ly9hdXRvYXViYWluZS5jb20vc2VydmljZXMvdmFsaWRhdGVQaG9uZU51bWJlci5waHAnLHsKLy8gCQl0aW1lb3V0OjIwMDAsCi8vIAkJZGF0YVR5cGU6ICdqc29uJywKLy8gCQlwYXJhbXM6IHtwaG9uZTogcGhvbmV9LAovLyAJCXJlc3BvbnNlVHlwZTogJ2pzb24nCi8vIAl9KQovLyAJLnRoZW4oZnVuY3Rpb24ocmVzKSB7CgovLyAJCWlmICh0eXBlb2YgcmVzLmlzT2sgIT09ICd1bmRlZmluZWQnKXsKLy8gCQkJaWYgKHJlcy5waG9uZU51bWJlcklzVmFsaWQgPT09IGZhbHNlKSB7Ci8vIAkJCQkvL2NvbnNvbGUubG9nKCdwaG9uZSAnK3Bob25lKycgaXMgaW52YWxpZCcpOwovLyAJCQkJaWYodHlwZW9mIGVtYWlsSGFuZGxlciE9J3VuZGVmaW5lZCcgJiYgZW1haWxIYW5kbGVyLnBob25lTWFuZGF0b3J5ICkgewovLyAJCQkJCWVtYWlsSGFuZGxlci5waG9uZVZhbGlkYXRpb25BdHRlbXB0cysrOwovLyAJCQkJfQovLyAJCQkJcmV0dXJuIHRydWU7Ci8vIAkJCX0KLy8gCQkJfSBlbHNlIHsKLy8gCQkJLy92YWxpZGF0ZSBhcmVhY29kZSBhdCBsZWFzdAovLyAJCQlpZiggdHlwZW9mIFZhbGlkQXJlYUNvZGVzLmluZGV4T2YgIT0gJ3VuZGVmaW5lZCcgJiYJVmFsaWRBcmVhQ29kZXMuaW5kZXhPZiggYXJlYUNvZGUgKSA9PSAtMSApewovLyAJCQkJcmV0dXJuIGZhbHNlOwovLyAJCQl9Ci8vIAkJfQoKLy8gCX0pCi8vIAkuY2F0Y2goZnVuY3Rpb24oZXJyb3IpIHsKLy8gCQkvLyB2YWxpZGF0ZSBhcmVhY29kZSBhdCBsZWFzdAovLyAJCWlmKCB0eXBlb2YgVmFsaWRBcmVhQ29kZXMuaW5kZXhPZiAhPSAndW5kZWZpbmVkJyAmJglWYWxpZEFyZWFDb2Rlcy5pbmRleE9mKCBhcmVhQ29kZSApID09IC0xICl7Ci8vIAkJaWYodHlwZW9mIGVtYWlsSGFuZGxlciE9J3VuZGVmaW5lZCcJJiYgZW1haWxIYW5kbGVyLnBob25lTWFuZGF0b3J5KSBlbWFpbEhhbmRsZXIucGhvbmVWYWxpZGF0aW9uQXR0ZW1wdHMrKzsKLy8gCQkJcmV0dXJuIGZhbHNlOwovLyAJCX0KLy8gCQkvL2NvbnNvbGUubG9nKCJ2YWxpZGl0eSB2YWxpZGF0ZVBob25lTnVtYmVyIG5ldHdvcmsgZXJyb3IiKTsKCi8vIAkJcmV0dXJuIGZhbHNlOwovLyAJfSk7CgoKCi8vIH0sICJUaGUgdmFsdWUgKCR7MH0pIG11c3QgYmUgYmV0d2VlbiAkezF9IGFuZCAkezJ9IiwgNSwgZmFsc2UpOwovKiogL20vanMvdmFuaWxsYWpzL2ZsYXRwaWNrci5taW4uanMgKiovCi8qIGZsYXRwaWNrciB2NC42LjksLCBAbGljZW5zZSBNSVQgKi8KIWZ1bmN0aW9uKGUsdCl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz10KCk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUodCk6KGU9InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWxUaGlzP2dsb2JhbFRoaXM6ZXx8c2VsZikuZmxhdHBpY2tyPXQoKX0odGhpcywoZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIGU9ZnVuY3Rpb24oKXtyZXR1cm4oZT1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQsbj0xLGE9YXJndW1lbnRzLmxlbmd0aDtuPGE7bisrKWZvcih2YXIgaSBpbiB0PWFyZ3VtZW50c1tuXSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxpKSYmKGVbaV09dFtpXSk7cmV0dXJuIGV9KS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Z1bmN0aW9uIHQoKXtmb3IodmFyIGU9MCx0PTAsbj1hcmd1bWVudHMubGVuZ3RoO3Q8bjt0KyspZSs9YXJndW1lbnRzW3RdLmxlbmd0aDt2YXIgYT1BcnJheShlKSxpPTA7Zm9yKHQ9MDt0PG47dCsrKWZvcih2YXIgbz1hcmd1bWVudHNbdF0scj0wLGw9by5sZW5ndGg7cjxsO3IrKyxpKyspYVtpXT1vW3JdO3JldHVybiBhfXZhciBuPVsib25DaGFuZ2UiLCJvbkNsb3NlIiwib25EYXlDcmVhdGUiLCJvbkRlc3Ryb3kiLCJvbktleURvd24iLCJvbk1vbnRoQ2hhbmdlIiwib25PcGVuIiwib25QYXJzZUNvbmZpZyIsIm9uUmVhZHkiLCJvblZhbHVlVXBkYXRlIiwib25ZZWFyQ2hhbmdlIiwib25QcmVDYWxlbmRhclBvc2l0aW9uIl0sYT17X2Rpc2FibGU6W10sYWxsb3dJbnB1dDohMSxhbGxvd0ludmFsaWRQcmVsb2FkOiExLGFsdEZvcm1hdDoiRiBqLCBZIixhbHRJbnB1dDohMSxhbHRJbnB1dENsYXNzOiJmb3JtLWNvbnRyb2wgaW5wdXQiLGFuaW1hdGU6Im9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJi0xPT09d2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZigiTVNJRSIpLGFyaWFEYXRlRm9ybWF0OiJGIGosIFkiLGF1dG9GaWxsRGVmYXVsdFRpbWU6ITAsY2xpY2tPcGVuczohMCxjbG9zZU9uU2VsZWN0OiEwLGNvbmp1bmN0aW9uOiIsICIsZGF0ZUZvcm1hdDoiWS1tLWQiLGRlZmF1bHRIb3VyOjEyLGRlZmF1bHRNaW51dGU6MCxkZWZhdWx0U2Vjb25kczowLGRpc2FibGU6W10sZGlzYWJsZU1vYmlsZTohMSxlbmFibGVTZWNvbmRzOiExLGVuYWJsZVRpbWU6ITEsZXJyb3JIYW5kbGVyOmZ1bmN0aW9uKGUpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgY29uc29sZSYmY29uc29sZS53YXJuKGUpfSxnZXRXZWVrOmZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBEYXRlKGUuZ2V0VGltZSgpKTt0LnNldEhvdXJzKDAsMCwwLDApLHQuc2V0RGF0ZSh0LmdldERhdGUoKSszLSh0LmdldERheSgpKzYpJTcpO3ZhciBuPW5ldyBEYXRlKHQuZ2V0RnVsbFllYXIoKSwwLDQpO3JldHVybiAxK01hdGgucm91bmQoKCh0LmdldFRpbWUoKS1uLmdldFRpbWUoKSkvODY0ZTUtMysobi5nZXREYXkoKSs2KSU3KS83KX0saG91ckluY3JlbWVudDoxLGlnbm9yZWRGb2N1c0VsZW1lbnRzOltdLGlubGluZTohMSxsb2NhbGU6ImRlZmF1bHQiLG1pbnV0ZUluY3JlbWVudDo1LG1vZGU6InNpbmdsZSIsbW9udGhTZWxlY3RvclR5cGU6ImRyb3Bkb3duIixuZXh0QXJyb3c6IjxzdmcgdmVyc2lvbj0nMS4xJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHhtbG5zOnhsaW5rPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJyB2aWV3Qm94PScwIDAgMTcgMTcnPjxnPjwvZz48cGF0aCBkPSdNMTMuMjA3IDguNDcybC03Ljg1NCA3Ljg1NC0wLjcwNy0wLjcwNyA3LjE0Ni03LjE0Ni03LjE0Ni03LjE0OCAwLjcwNy0wLjcwNyA3Ljg1NCA3Ljg1NHonIC8+PC9zdmc+Iixub0NhbGVuZGFyOiExLG5vdzpuZXcgRGF0ZSxvbkNoYW5nZTpbXSxvbkNsb3NlOltdLG9uRGF5Q3JlYXRlOltdLG9uRGVzdHJveTpbXSxvbktleURvd246W10sb25Nb250aENoYW5nZTpbXSxvbk9wZW46W10sb25QYXJzZUNvbmZpZzpbXSxvblJlYWR5OltdLG9uVmFsdWVVcGRhdGU6W10sb25ZZWFyQ2hhbmdlOltdLG9uUHJlQ2FsZW5kYXJQb3NpdGlvbjpbXSxwbHVnaW5zOltdLHBvc2l0aW9uOiJhdXRvIixwb3NpdGlvbkVsZW1lbnQ6dm9pZCAwLHByZXZBcnJvdzoiPHN2ZyB2ZXJzaW9uPScxLjEnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgeG1sbnM6eGxpbms9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsnIHZpZXdCb3g9JzAgMCAxNyAxNyc+PGc+PC9nPjxwYXRoIGQ9J001LjIwNyA4LjQ3MWw3LjE0NiA3LjE0Ny0wLjcwNyAwLjcwNy03Ljg1My03Ljg1NCA3Ljg1NC03Ljg1MyAwLjcwNyAwLjcwNy03LjE0NyA3LjE0NnonIC8+PC9zdmc+IixzaG9ydGhhbmRDdXJyZW50TW9udGg6ITEsc2hvd01vbnRoczoxLHN0YXRpYzohMSx0aW1lXzI0aHI6ITEsd2Vla051bWJlcnM6ITEsd3JhcDohMX0saT17d2Vla2RheXM6e3Nob3J0aGFuZDpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLGxvbmdoYW5kOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXX0sbW9udGhzOntzaG9ydGhhbmQ6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXSxsb25naGFuZDpbIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl19LGRheXNJbk1vbnRoOlszMSwyOCwzMSwzMCwzMSwzMCwzMSwzMSwzMCwzMSwzMCwzMV0sZmlyc3REYXlPZldlZWs6MCxvcmRpbmFsOmZ1bmN0aW9uKGUpe3ZhciB0PWUlMTAwO2lmKHQ+MyYmdDwyMSlyZXR1cm4idGgiO3N3aXRjaCh0JTEwKXtjYXNlIDE6cmV0dXJuInN0IjtjYXNlIDI6cmV0dXJuIm5kIjtjYXNlIDM6cmV0dXJuInJkIjtkZWZhdWx0OnJldHVybiJ0aCJ9fSxyYW5nZVNlcGFyYXRvcjoiIHRvICIsd2Vla0FiYnJldmlhdGlvbjoiV2siLHNjcm9sbFRpdGxlOiJTY3JvbGwgdG8gaW5jcmVtZW50Iix0b2dnbGVUaXRsZToiQ2xpY2sgdG8gdG9nZ2xlIixhbVBNOlsiQU0iLCJQTSJdLHllYXJBcmlhTGFiZWw6IlllYXIiLG1vbnRoQXJpYUxhYmVsOiJNb250aCIsaG91ckFyaWFMYWJlbDoiSG91ciIsbWludXRlQXJpYUxhYmVsOiJNaW51dGUiLHRpbWVfMjRocjohMX0sbz1mdW5jdGlvbihlLHQpe3JldHVybiB2b2lkIDA9PT10JiYodD0yKSwoIjAwMCIrZSkuc2xpY2UoLTEqdCl9LHI9ZnVuY3Rpb24oZSl7cmV0dXJuITA9PT1lPzE6MH07ZnVuY3Rpb24gbChlLHQpe3ZhciBuO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPXRoaXM7Y2xlYXJUaW1lb3V0KG4pLG49c2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseShhLGFyZ3VtZW50cyl9KSx0KX19dmFyIGM9ZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBBcnJheT9lOltlXX07ZnVuY3Rpb24gZChlLHQsbil7aWYoITA9PT1uKXJldHVybiBlLmNsYXNzTGlzdC5hZGQodCk7ZS5jbGFzc0xpc3QucmVtb3ZlKHQpfWZ1bmN0aW9uIHMoZSx0LG4pe3ZhciBhPXdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KGUpO3JldHVybiB0PXR8fCIiLG49bnx8IiIsYS5jbGFzc05hbWU9dCx2b2lkIDAhPT1uJiYoYS50ZXh0Q29udGVudD1uKSxhfWZ1bmN0aW9uIHUoZSl7Zm9yKDtlLmZpcnN0Q2hpbGQ7KWUucmVtb3ZlQ2hpbGQoZS5maXJzdENoaWxkKX1mdW5jdGlvbiBmKGUsdCl7cmV0dXJuIHQoZSk\/ZTplLnBhcmVudE5vZGU\/ZihlLnBhcmVudE5vZGUsdCk6dm9pZCAwfWZ1bmN0aW9uIG0oZSx0KXt2YXIgbj1zKCJkaXYiLCJudW1JbnB1dFdyYXBwZXIiKSxhPXMoImlucHV0IiwibnVtSW5wdXQgIitlKSxpPXMoInNwYW4iLCJhcnJvd1VwIiksbz1zKCJzcGFuIiwiYXJyb3dEb3duIik7aWYoLTE9PT1uYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIk1TSUUgOS4wIik\/YS50eXBlPSJudW1iZXIiOihhLnR5cGU9InRleHQiLGEucGF0dGVybj0iXFxkKiIpLHZvaWQgMCE9PXQpZm9yKHZhciByIGluIHQpYS5zZXRBdHRyaWJ1dGUocix0W3JdKTtyZXR1cm4gbi5hcHBlbmRDaGlsZChhKSxuLmFwcGVuZENoaWxkKGkpLG4uYXBwZW5kQ2hpbGQobyksbn1mdW5jdGlvbiBnKGUpe3RyeXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZS5jb21wb3NlZFBhdGg\/ZS5jb21wb3NlZFBhdGgoKVswXTplLnRhcmdldH1jYXRjaCh0KXtyZXR1cm4gZS50YXJnZXR9fXZhciBwPWZ1bmN0aW9uKCl7fSxoPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbi5tb250aHNbdD8ic2hvcnRoYW5kIjoibG9uZ2hhbmQiXVtlXX0sdj17RDpwLEY6ZnVuY3Rpb24oZSx0LG4pe2Uuc2V0TW9udGgobi5tb250aHMubG9uZ2hhbmQuaW5kZXhPZih0KSl9LEc6ZnVuY3Rpb24oZSx0KXtlLnNldEhvdXJzKHBhcnNlRmxvYXQodCkpfSxIOmZ1bmN0aW9uKGUsdCl7ZS5zZXRIb3VycyhwYXJzZUZsb2F0KHQpKX0sSjpmdW5jdGlvbihlLHQpe2Uuc2V0RGF0ZShwYXJzZUZsb2F0KHQpKX0sSzpmdW5jdGlvbihlLHQsbil7ZS5zZXRIb3VycyhlLmdldEhvdXJzKCklMTIrMTIqcihuZXcgUmVnRXhwKG4uYW1QTVsxXSwiaSIpLnRlc3QodCkpKX0sTTpmdW5jdGlvbihlLHQsbil7ZS5zZXRNb250aChuLm1vbnRocy5zaG9ydGhhbmQuaW5kZXhPZih0KSl9LFM6ZnVuY3Rpb24oZSx0KXtlLnNldFNlY29uZHMocGFyc2VGbG9hdCh0KSl9LFU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IERhdGUoMWUzKnBhcnNlRmxvYXQodCkpfSxXOmZ1bmN0aW9uKGUsdCxuKXt2YXIgYT1wYXJzZUludCh0KSxpPW5ldyBEYXRlKGUuZ2V0RnVsbFllYXIoKSwwLDIrNyooYS0xKSwwLDAsMCwwKTtyZXR1cm4gaS5zZXREYXRlKGkuZ2V0RGF0ZSgpLWkuZ2V0RGF5KCkrbi5maXJzdERheU9mV2VlayksaX0sWTpmdW5jdGlvbihlLHQpe2Uuc2V0RnVsbFllYXIocGFyc2VGbG9hdCh0KSl9LFo6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IERhdGUodCl9LGQ6ZnVuY3Rpb24oZSx0KXtlLnNldERhdGUocGFyc2VGbG9hdCh0KSl9LGg6ZnVuY3Rpb24oZSx0KXtlLnNldEhvdXJzKHBhcnNlRmxvYXQodCkpfSxpOmZ1bmN0aW9uKGUsdCl7ZS5zZXRNaW51dGVzKHBhcnNlRmxvYXQodCkpfSxqOmZ1bmN0aW9uKGUsdCl7ZS5zZXREYXRlKHBhcnNlRmxvYXQodCkpfSxsOnAsbTpmdW5jdGlvbihlLHQpe2Uuc2V0TW9udGgocGFyc2VGbG9hdCh0KS0xKX0sbjpmdW5jdGlvbihlLHQpe2Uuc2V0TW9udGgocGFyc2VGbG9hdCh0KS0xKX0sczpmdW5jdGlvbihlLHQpe2Uuc2V0U2Vjb25kcyhwYXJzZUZsb2F0KHQpKX0sdTpmdW5jdGlvbihlLHQpe3JldHVybiBuZXcgRGF0ZShwYXJzZUZsb2F0KHQpKX0sdzpwLHk6ZnVuY3Rpb24oZSx0KXtlLnNldEZ1bGxZZWFyKDJlMytwYXJzZUZsb2F0KHQpKX19LEQ9e0Q6IihcXHcrKSIsRjoiKFxcdyspIixHOiIoXFxkXFxkfFxcZCkiLEg6IihcXGRcXGR8XFxkKSIsSjoiKFxcZFxcZHxcXGQpXFx3KyIsSzoiIixNOiIoXFx3KykiLFM6IihcXGRcXGR8XFxkKSIsVToiKC4rKSIsVzoiKFxcZFxcZHxcXGQpIixZOiIoXFxkezR9KSIsWjoiKC4rKSIsZDoiKFxcZFxcZHxcXGQpIixoOiIoXFxkXFxkfFxcZCkiLGk6IihcXGRcXGR8XFxkKSIsajoiKFxcZFxcZHxcXGQpIixsOiIoXFx3KykiLG06IihcXGRcXGR8XFxkKSIsbjoiKFxcZFxcZHxcXGQpIixzOiIoXFxkXFxkfFxcZCkiLHU6IiguKykiLHc6IihcXGRcXGR8XFxkKSIseToiKFxcZHsyfSkifSx3PXtaOmZ1bmN0aW9uKGUpe3JldHVybiBlLnRvSVNPU3RyaW5nKCl9LEQ6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0LndlZWtkYXlzLnNob3J0aGFuZFt3LncoZSx0LG4pXX0sRjpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGgody5uKGUsdCxuKS0xLCExLHQpfSxHOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbyh3LmgoZSx0LG4pKX0sSDpmdW5jdGlvbihlKXtyZXR1cm4gbyhlLmdldEhvdXJzKCkpfSxKOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMCE9PXQub3JkaW5hbD9lLmdldERhdGUoKSt0Lm9yZGluYWwoZS5nZXREYXRlKCkpOmUuZ2V0RGF0ZSgpfSxLOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQuYW1QTVtyKGUuZ2V0SG91cnMoKT4xMSldfSxNOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGgoZS5nZXRNb250aCgpLCEwLHQpfSxTOmZ1bmN0aW9uKGUpe3JldHVybiBvKGUuZ2V0U2Vjb25kcygpKX0sVTpmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRUaW1lKCkvMWUzfSxXOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbi5nZXRXZWVrKGUpfSxZOmZ1bmN0aW9uKGUpe3JldHVybiBvKGUuZ2V0RnVsbFllYXIoKSw0KX0sZDpmdW5jdGlvbihlKXtyZXR1cm4gbyhlLmdldERhdGUoKSl9LGg6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0SG91cnMoKSUxMj9lLmdldEhvdXJzKCklMTI6MTJ9LGk6ZnVuY3Rpb24oZSl7cmV0dXJuIG8oZS5nZXRNaW51dGVzKCkpfSxqOmZ1bmN0aW9uKGUpe3JldHVybiBlLmdldERhdGUoKX0sbDpmdW5jdGlvbihlLHQpe3JldHVybiB0LndlZWtkYXlzLmxvbmdoYW5kW2UuZ2V0RGF5KCldfSxtOmZ1bmN0aW9uKGUpe3JldHVybiBvKGUuZ2V0TW9udGgoKSsxKX0sbjpmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRNb250aCgpKzF9LHM6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0U2Vjb25kcygpfSx1OmZ1bmN0aW9uKGUpe3JldHVybiBlLmdldFRpbWUoKX0sdzpmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXREYXkoKX0seTpmdW5jdGlvbihlKXtyZXR1cm4gU3RyaW5nKGUuZ2V0RnVsbFllYXIoKSkuc3Vic3RyaW5nKDIpfX0sYj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbmZpZyxuPXZvaWQgMD09PXQ\/YTp0LG89ZS5sMTBuLHI9dm9pZCAwPT09bz9pOm8sbD1lLmlzTW9iaWxlLGM9dm9pZCAwIT09bCYmbDtyZXR1cm4gZnVuY3Rpb24oZSx0LGEpe3ZhciBpPWF8fHI7cmV0dXJuIHZvaWQgMD09PW4uZm9ybWF0RGF0ZXx8Yz90LnNwbGl0KCIiKS5tYXAoKGZ1bmN0aW9uKHQsYSxvKXtyZXR1cm4gd1t0XSYmIlxcIiE9PW9bYS0xXT93W3RdKGUsaSxuKToiXFwiIT09dD90OiIifSkpLmpvaW4oIiIpOm4uZm9ybWF0RGF0ZShlLHQsaSl9fSxDPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29uZmlnLG49dm9pZCAwPT09dD9hOnQsbz1lLmwxMG4scj12b2lkIDA9PT1vP2k6bztyZXR1cm4gZnVuY3Rpb24oZSx0LGksbyl7aWYoMD09PWV8fGUpe3ZhciBsLGM9b3x8cixkPWU7aWYoZSBpbnN0YW5jZW9mIERhdGUpbD1uZXcgRGF0ZShlLmdldFRpbWUoKSk7ZWxzZSBpZigic3RyaW5nIiE9dHlwZW9mIGUmJnZvaWQgMCE9PWUudG9GaXhlZClsPW5ldyBEYXRlKGUpO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBlKXt2YXIgcz10fHwobnx8YSkuZGF0ZUZvcm1hdCx1PVN0cmluZyhlKS50cmltKCk7aWYoInRvZGF5Ij09PXUpbD1uZXcgRGF0ZSxpPSEwO2Vsc2UgaWYoL1okLy50ZXN0KHUpfHwvR01UJC8udGVzdCh1KSlsPW5ldyBEYXRlKGUpO2Vsc2UgaWYobiYmbi5wYXJzZURhdGUpbD1uLnBhcnNlRGF0ZShlLHMpO2Vsc2V7bD1uJiZuLm5vQ2FsZW5kYXI\/bmV3IERhdGUoKG5ldyBEYXRlKS5zZXRIb3VycygwLDAsMCwwKSk6bmV3IERhdGUoKG5ldyBEYXRlKS5nZXRGdWxsWWVhcigpLDAsMSwwLDAsMCwwKTtmb3IodmFyIGY9dm9pZCAwLG09W10sZz0wLHA9MCxoPSIiO2c8cy5sZW5ndGg7ZysrKXt2YXIgdz1zW2ddLGI9IlxcIj09PXcsQz0iXFwiPT09c1tnLTFdfHxiO2lmKERbd10mJiFDKXtoKz1EW3ddO3ZhciBNPW5ldyBSZWdFeHAoaCkuZXhlYyhlKTtNJiYoZj0hMCkmJm1bIlkiIT09dz8icHVzaCI6InVuc2hpZnQiXSh7Zm46dlt3XSx2YWw6TVsrK3BdfSl9ZWxzZSBifHwoaCs9Ii4iKTttLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciB0PWUuZm4sbj1lLnZhbDtyZXR1cm4gbD10KGwsbixjKXx8bH0pKX1sPWY\/bDp2b2lkIDB9fWlmKGwgaW5zdGFuY2VvZiBEYXRlJiYhaXNOYU4obC5nZXRUaW1lKCkpKXJldHVybiEwPT09aSYmbC5zZXRIb3VycygwLDAsMCwwKSxsO24uZXJyb3JIYW5kbGVyKG5ldyBFcnJvcigiSW52YWxpZCBkYXRlIHByb3ZpZGVkOiAiK2QpKX19fTtmdW5jdGlvbiBNKGUsdCxuKXtyZXR1cm4gdm9pZCAwPT09biYmKG49ITApLCExIT09bj9uZXcgRGF0ZShlLmdldFRpbWUoKSkuc2V0SG91cnMoMCwwLDAsMCktbmV3IERhdGUodC5nZXRUaW1lKCkpLnNldEhvdXJzKDAsMCwwLDApOmUuZ2V0VGltZSgpLXQuZ2V0VGltZSgpfXZhciB5PTg2NGU1O2Z1bmN0aW9uIHgoZSl7dmFyIHQ9ZS5kZWZhdWx0SG91cixuPWUuZGVmYXVsdE1pbnV0ZSxhPWUuZGVmYXVsdFNlY29uZHM7aWYodm9pZCAwIT09ZS5taW5EYXRlKXt2YXIgaT1lLm1pbkRhdGUuZ2V0SG91cnMoKSxvPWUubWluRGF0ZS5nZXRNaW51dGVzKCkscj1lLm1pbkRhdGUuZ2V0U2Vjb25kcygpO3Q8aSYmKHQ9aSksdD09PWkmJm48byYmKG49byksdD09PWkmJm49PT1vJiZhPHImJihhPWUubWluRGF0ZS5nZXRTZWNvbmRzKCkpfWlmKHZvaWQgMCE9PWUubWF4RGF0ZSl7dmFyIGw9ZS5tYXhEYXRlLmdldEhvdXJzKCksYz1lLm1heERhdGUuZ2V0TWludXRlcygpOyh0PU1hdGgubWluKHQsbCkpPT09bCYmKG49TWF0aC5taW4oYyxuKSksdD09PWwmJm49PT1jJiYoYT1lLm1heERhdGUuZ2V0U2Vjb25kcygpKX1yZXR1cm57aG91cnM6dCxtaW51dGVzOm4sc2Vjb25kczphfX0iZnVuY3Rpb24iIT10eXBlb2YgT2JqZWN0LmFzc2lnbiYmKE9iamVjdC5hc3NpZ249ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXRbbi0xXT1hcmd1bWVudHNbbl07aWYoIWUpdGhyb3cgVHlwZUVycm9yKCJDYW5ub3QgY29udmVydCB1bmRlZmluZWQgb3IgbnVsbCB0byBvYmplY3QiKTtmb3IodmFyIGE9ZnVuY3Rpb24odCl7dCYmT2JqZWN0LmtleXModCkuZm9yRWFjaCgoZnVuY3Rpb24obil7cmV0dXJuIGVbbl09dFtuXX0pKX0saT0wLG89dDtpPG8ubGVuZ3RoO2krKyl7dmFyIHI9b1tpXTthKHIpfXJldHVybiBlfSk7ZnVuY3Rpb24gRShwLHYpe3ZhciB3PXtjb25maWc6ZShlKHt9LGEpLFQuZGVmYXVsdENvbmZpZyksbDEwbjppfTtmdW5jdGlvbiBFKGUpe3JldHVybiBlLmJpbmQodyl9ZnVuY3Rpb24gaygpe3ZhciBlPXcuY29uZmlnOyExPT09ZS53ZWVrTnVtYmVycyYmMT09PWUuc2hvd01vbnRoc3x8ITAhPT1lLm5vQ2FsZW5kYXImJndpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKGZ1bmN0aW9uKCl7aWYodm9pZCAwIT09dy5jYWxlbmRhckNvbnRhaW5lciYmKHcuY2FsZW5kYXJDb250YWluZXIuc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIix3LmNhbGVuZGFyQ29udGFpbmVyLnN0eWxlLmRpc3BsYXk9ImJsb2NrIiksdm9pZCAwIT09dy5kYXlzQ29udGFpbmVyKXt2YXIgdD0ody5kYXlzLm9mZnNldFdpZHRoKzEpKmUuc2hvd01vbnRoczt3LmRheXNDb250YWluZXIuc3R5bGUud2lkdGg9dCsicHgiLHcuY2FsZW5kYXJDb250YWluZXIuc3R5bGUud2lkdGg9dCsodm9pZCAwIT09dy53ZWVrV3JhcHBlcj93LndlZWtXcmFwcGVyLm9mZnNldFdpZHRoOjApKyJweCIsdy5jYWxlbmRhckNvbnRhaW5lci5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgidmlzaWJpbGl0eSIpLHcuY2FsZW5kYXJDb250YWluZXIuc3R5bGUucmVtb3ZlUHJvcGVydHkoImRpc3BsYXkiKX19KSl9ZnVuY3Rpb24gSShlKXtpZigwPT09dy5zZWxlY3RlZERhdGVzLmxlbmd0aCl7dmFyIHQ9dm9pZCAwPT09dy5jb25maWcubWluRGF0ZXx8TShuZXcgRGF0ZSx3LmNvbmZpZy5taW5EYXRlKT49MD9uZXcgRGF0ZTpuZXcgRGF0ZSh3LmNvbmZpZy5taW5EYXRlLmdldFRpbWUoKSksbj14KHcuY29uZmlnKTt0LnNldEhvdXJzKG4uaG91cnMsbi5taW51dGVzLG4uc2Vjb25kcyx0LmdldE1pbGxpc2Vjb25kcygpKSx3LnNlbGVjdGVkRGF0ZXM9W3RdLHcubGF0ZXN0U2VsZWN0ZWREYXRlT2JqPXR9dm9pZCAwIT09ZSYmImJsdXIiIT09ZS50eXBlJiZmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCk7dmFyIHQ9ImtleWRvd24iPT09ZS50eXBlLG49ZyhlKSxhPW47dm9pZCAwIT09dy5hbVBNJiZuPT09dy5hbVBNJiYody5hbVBNLnRleHRDb250ZW50PXcubDEwbi5hbVBNW3Iody5hbVBNLnRleHRDb250ZW50PT09dy5sMTBuLmFtUE1bMF0pXSk7dmFyIGk9cGFyc2VGbG9hdChhLmdldEF0dHJpYnV0ZSgibWluIikpLGw9cGFyc2VGbG9hdChhLmdldEF0dHJpYnV0ZSgibWF4IikpLGM9cGFyc2VGbG9hdChhLmdldEF0dHJpYnV0ZSgic3RlcCIpKSxkPXBhcnNlSW50KGEudmFsdWUsMTApLHM9ZS5kZWx0YXx8KHQ\/Mzg9PT1lLndoaWNoPzE6LTE6MCksdT1kK2MqcztpZih2b2lkIDAhPT1hLnZhbHVlJiYyPT09YS52YWx1ZS5sZW5ndGgpe3ZhciBmPWE9PT13LmhvdXJFbGVtZW50LG09YT09PXcubWludXRlRWxlbWVudDt1PGk\/KHU9bCt1K3IoIWYpKyhyKGYpJiZyKCF3LmFtUE0pKSxtJiZqKHZvaWQgMCwtMSx3LmhvdXJFbGVtZW50KSk6dT5sJiYodT1hPT09dy5ob3VyRWxlbWVudD91LWwtcighdy5hbVBNKTppLG0mJmoodm9pZCAwLDEsdy5ob3VyRWxlbWVudCkpLHcuYW1QTSYmZiYmKDE9PT1jP3UrZD09PTIzOk1hdGguYWJzKHUtZCk+YykmJih3LmFtUE0udGV4dENvbnRlbnQ9dy5sMTBuLmFtUE1bcih3LmFtUE0udGV4dENvbnRlbnQ9PT13LmwxMG4uYW1QTVswXSldKSxhLnZhbHVlPW8odSl9fShlKTt2YXIgYT13Ll9pbnB1dC52YWx1ZTtTKCksYmUoKSx3Ll9pbnB1dC52YWx1ZSE9PWEmJncuX2RlYm91bmNlZENoYW5nZSgpfWZ1bmN0aW9uIFMoKXtpZih2b2lkIDAhPT13LmhvdXJFbGVtZW50JiZ2b2lkIDAhPT13Lm1pbnV0ZUVsZW1lbnQpe3ZhciBlLHQsbj0ocGFyc2VJbnQody5ob3VyRWxlbWVudC52YWx1ZS5zbGljZSgtMiksMTApfHwwKSUyNCxhPShwYXJzZUludCh3Lm1pbnV0ZUVsZW1lbnQudmFsdWUsMTApfHwwKSU2MCxpPXZvaWQgMCE9PXcuc2Vjb25kRWxlbWVudD8ocGFyc2VJbnQody5zZWNvbmRFbGVtZW50LnZhbHVlLDEwKXx8MCklNjA6MDt2b2lkIDAhPT13LmFtUE0mJihlPW4sdD13LmFtUE0udGV4dENvbnRlbnQsbj1lJTEyKzEyKnIodD09PXcubDEwbi5hbVBNWzFdKSk7dmFyIG89dm9pZCAwIT09dy5jb25maWcubWluVGltZXx8dy5jb25maWcubWluRGF0ZSYmdy5taW5EYXRlSGFzVGltZSYmdy5sYXRlc3RTZWxlY3RlZERhdGVPYmomJjA9PT1NKHcubGF0ZXN0U2VsZWN0ZWREYXRlT2JqLHcuY29uZmlnLm1pbkRhdGUsITApO2lmKHZvaWQgMCE9PXcuY29uZmlnLm1heFRpbWV8fHcuY29uZmlnLm1heERhdGUmJncubWF4RGF0ZUhhc1RpbWUmJncubGF0ZXN0U2VsZWN0ZWREYXRlT2JqJiYwPT09TSh3LmxhdGVzdFNlbGVjdGVkRGF0ZU9iaix3LmNvbmZpZy5tYXhEYXRlLCEwKSl7dmFyIGw9dm9pZCAwIT09dy5jb25maWcubWF4VGltZT93LmNvbmZpZy5tYXhUaW1lOncuY29uZmlnLm1heERhdGU7KG49TWF0aC5taW4obixsLmdldEhvdXJzKCkpKT09PWwuZ2V0SG91cnMoKSYmKGE9TWF0aC5taW4oYSxsLmdldE1pbnV0ZXMoKSkpLGE9PT1sLmdldE1pbnV0ZXMoKSYmKGk9TWF0aC5taW4oaSxsLmdldFNlY29uZHMoKSkpfWlmKG8pe3ZhciBjPXZvaWQgMCE9PXcuY29uZmlnLm1pblRpbWU\/dy5jb25maWcubWluVGltZTp3LmNvbmZpZy5taW5EYXRlOyhuPU1hdGgubWF4KG4sYy5nZXRIb3VycygpKSk9PT1jLmdldEhvdXJzKCkmJmE8Yy5nZXRNaW51dGVzKCkmJihhPWMuZ2V0TWludXRlcygpKSxhPT09Yy5nZXRNaW51dGVzKCkmJihpPU1hdGgubWF4KGksYy5nZXRTZWNvbmRzKCkpKX1PKG4sYSxpKX19ZnVuY3Rpb24gXyhlKXt2YXIgdD1lfHx3LmxhdGVzdFNlbGVjdGVkRGF0ZU9iajt0JiZPKHQuZ2V0SG91cnMoKSx0LmdldE1pbnV0ZXMoKSx0LmdldFNlY29uZHMoKSl9ZnVuY3Rpb24gTyhlLHQsbil7dm9pZCAwIT09dy5sYXRlc3RTZWxlY3RlZERhdGVPYmomJncubGF0ZXN0U2VsZWN0ZWREYXRlT2JqLnNldEhvdXJzKGUlMjQsdCxufHwwLDApLHcuaG91ckVsZW1lbnQmJncubWludXRlRWxlbWVudCYmIXcuaXNNb2JpbGUmJih3LmhvdXJFbGVtZW50LnZhbHVlPW8ody5jb25maWcudGltZV8yNGhyP2U6KDEyK2UpJTEyKzEyKnIoZSUxMj09MCkpLHcubWludXRlRWxlbWVudC52YWx1ZT1vKHQpLHZvaWQgMCE9PXcuYW1QTSYmKHcuYW1QTS50ZXh0Q29udGVudD13LmwxMG4uYW1QTVtyKGU+PTEyKV0pLHZvaWQgMCE9PXcuc2Vjb25kRWxlbWVudCYmKHcuc2Vjb25kRWxlbWVudC52YWx1ZT1vKG4pKSl9ZnVuY3Rpb24gRihlKXt2YXIgdD1nKGUpLG49cGFyc2VJbnQodC52YWx1ZSkrKGUuZGVsdGF8fDApOyhuLzFlMz4xfHwiRW50ZXIiPT09ZS5rZXkmJiEvW15cZF0vLnRlc3Qobi50b1N0cmluZygpKSkmJlEobil9ZnVuY3Rpb24gQShlLHQsbixhKXtyZXR1cm4gdCBpbnN0YW5jZW9mIEFycmF5P3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIEEoZSx0LG4sYSl9KSk6ZSBpbnN0YW5jZW9mIEFycmF5P2UuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIEEoZSx0LG4sYSl9KSk6KGUuYWRkRXZlbnRMaXN0ZW5lcih0LG4sYSksdm9pZCB3Ll9oYW5kbGVycy5wdXNoKHtyZW1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4gZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsbil9fSkpfWZ1bmN0aW9uIE4oKXtwZSgib25DaGFuZ2UiKX1mdW5jdGlvbiBQKGUsdCl7dmFyIG49dm9pZCAwIT09ZT93LnBhcnNlRGF0ZShlKTp3LmxhdGVzdFNlbGVjdGVkRGF0ZU9ianx8KHcuY29uZmlnLm1pbkRhdGUmJncuY29uZmlnLm1pbkRhdGU+dy5ub3c\/dy5jb25maWcubWluRGF0ZTp3LmNvbmZpZy5tYXhEYXRlJiZ3LmNvbmZpZy5tYXhEYXRlPHcubm93P3cuY29uZmlnLm1heERhdGU6dy5ub3cpLGE9dy5jdXJyZW50WWVhcixpPXcuY3VycmVudE1vbnRoO3RyeXt2b2lkIDAhPT1uJiYody5jdXJyZW50WWVhcj1uLmdldEZ1bGxZZWFyKCksdy5jdXJyZW50TW9udGg9bi5nZXRNb250aCgpKX1jYXRjaChlKXtlLm1lc3NhZ2U9IkludmFsaWQgZGF0ZSBzdXBwbGllZDogIituLHcuY29uZmlnLmVycm9ySGFuZGxlcihlKX10JiZ3LmN1cnJlbnRZZWFyIT09YSYmKHBlKCJvblllYXJDaGFuZ2UiKSxLKCkpLCF0fHx3LmN1cnJlbnRZZWFyPT09YSYmdy5jdXJyZW50TW9udGg9PT1pfHxwZSgib25Nb250aENoYW5nZSIpLHcucmVkcmF3KCl9ZnVuY3Rpb24gWShlKXt2YXIgdD1nKGUpO350LmNsYXNzTmFtZS5pbmRleE9mKCJhcnJvdyIpJiZqKGUsdC5jbGFzc0xpc3QuY29udGFpbnMoImFycm93VXAiKT8xOi0xKX1mdW5jdGlvbiBqKGUsdCxuKXt2YXIgYT1lJiZnKGUpLGk9bnx8YSYmYS5wYXJlbnROb2RlJiZhLnBhcmVudE5vZGUuZmlyc3RDaGlsZCxvPWhlKCJpbmNyZW1lbnQiKTtvLmRlbHRhPXQsaSYmaS5kaXNwYXRjaEV2ZW50KG8pfWZ1bmN0aW9uIEgoZSx0LG4sYSl7dmFyIGk9WCh0LCEwKSxvPXMoInNwYW4iLCJmbGF0cGlja3ItZGF5ICIrZSx0LmdldERhdGUoKS50b1N0cmluZygpKTtyZXR1cm4gby5kYXRlT2JqPXQsby4kaT1hLG8uc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIix3LmZvcm1hdERhdGUodCx3LmNvbmZpZy5hcmlhRGF0ZUZvcm1hdCkpLC0xPT09ZS5pbmRleE9mKCJoaWRkZW4iKSYmMD09PU0odCx3Lm5vdykmJih3LnRvZGF5RGF0ZUVsZW09byxvLmNsYXNzTGlzdC5hZGQoInRvZGF5Iiksby5zZXRBdHRyaWJ1dGUoImFyaWEtY3VycmVudCIsImRhdGUiKSksaT8oby50YWJJbmRleD0tMSx2ZSh0KSYmKG8uY2xhc3NMaXN0LmFkZCgic2VsZWN0ZWQiKSx3LnNlbGVjdGVkRGF0ZUVsZW09bywicmFuZ2UiPT09dy5jb25maWcubW9kZSYmKGQobywic3RhcnRSYW5nZSIsdy5zZWxlY3RlZERhdGVzWzBdJiYwPT09TSh0LHcuc2VsZWN0ZWREYXRlc1swXSwhMCkpLGQobywiZW5kUmFuZ2UiLHcuc2VsZWN0ZWREYXRlc1sxXSYmMD09PU0odCx3LnNlbGVjdGVkRGF0ZXNbMV0sITApKSwibmV4dE1vbnRoRGF5Ij09PWUmJm8uY2xhc3NMaXN0LmFkZCgiaW5SYW5nZSIpKSkpOm8uY2xhc3NMaXN0LmFkZCgiZmxhdHBpY2tyLWRpc2FibGVkIiksInJhbmdlIj09PXcuY29uZmlnLm1vZGUmJmZ1bmN0aW9uKGUpe3JldHVybiEoInJhbmdlIiE9PXcuY29uZmlnLm1vZGV8fHcuc2VsZWN0ZWREYXRlcy5sZW5ndGg8MikmJihNKGUsdy5zZWxlY3RlZERhdGVzWzBdKT49MCYmTShlLHcuc2VsZWN0ZWREYXRlc1sxXSk8PTApfSh0KSYmIXZlKHQpJiZvLmNsYXNzTGlzdC5hZGQoImluUmFuZ2UiKSx3LndlZWtOdW1iZXJzJiYxPT09dy5jb25maWcuc2hvd01vbnRocyYmInByZXZNb250aERheSIhPT1lJiZuJTc9PTEmJncud2Vla051bWJlcnMuaW5zZXJ0QWRqYWNlbnRIVE1MKCJiZWZvcmVlbmQiLCI8c3BhbiBjbGFzcz0nZmxhdHBpY2tyLWRheSc+Iit3LmNvbmZpZy5nZXRXZWVrKHQpKyI8L3NwYW4+IikscGUoIm9uRGF5Q3JlYXRlIixvKSxvfWZ1bmN0aW9uIEwoZSl7ZS5mb2N1cygpLCJyYW5nZSI9PT13LmNvbmZpZy5tb2RlJiZhZShlKX1mdW5jdGlvbiBXKGUpe2Zvcih2YXIgdD1lPjA\/MDp3LmNvbmZpZy5zaG93TW9udGhzLTEsbj1lPjA\/dy5jb25maWcuc2hvd01vbnRoczotMSxhPXQ7YSE9bjthKz1lKWZvcih2YXIgaT13LmRheXNDb250YWluZXIuY2hpbGRyZW5bYV0sbz1lPjA\/MDppLmNoaWxkcmVuLmxlbmd0aC0xLHI9ZT4wP2kuY2hpbGRyZW4ubGVuZ3RoOi0xLGw9bztsIT1yO2wrPWUpe3ZhciBjPWkuY2hpbGRyZW5bbF07aWYoLTE9PT1jLmNsYXNzTmFtZS5pbmRleE9mKCJoaWRkZW4iKSYmWChjLmRhdGVPYmopKXJldHVybiBjfX1mdW5jdGlvbiBSKGUsdCl7dmFyIG49ZWUoZG9jdW1lbnQuYWN0aXZlRWxlbWVudHx8ZG9jdW1lbnQuYm9keSksYT12b2lkIDAhPT1lP2U6bj9kb2N1bWVudC5hY3RpdmVFbGVtZW50OnZvaWQgMCE9PXcuc2VsZWN0ZWREYXRlRWxlbSYmZWUody5zZWxlY3RlZERhdGVFbGVtKT93LnNlbGVjdGVkRGF0ZUVsZW06dm9pZCAwIT09dy50b2RheURhdGVFbGVtJiZlZSh3LnRvZGF5RGF0ZUVsZW0pP3cudG9kYXlEYXRlRWxlbTpXKHQ+MD8xOi0xKTt2b2lkIDA9PT1hP3cuX2lucHV0LmZvY3VzKCk6bj9mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0tMT09PWUuY2xhc3NOYW1lLmluZGV4T2YoIk1vbnRoIik\/ZS5kYXRlT2JqLmdldE1vbnRoKCk6dy5jdXJyZW50TW9udGgsYT10PjA\/dy5jb25maWcuc2hvd01vbnRoczotMSxpPXQ+MD8xOi0xLG89bi13LmN1cnJlbnRNb250aDtvIT1hO28rPWkpZm9yKHZhciByPXcuZGF5c0NvbnRhaW5lci5jaGlsZHJlbltvXSxsPW4tdy5jdXJyZW50TW9udGg9PT1vP2UuJGkrdDp0PDA\/ci5jaGlsZHJlbi5sZW5ndGgtMTowLGM9ci5jaGlsZHJlbi5sZW5ndGgsZD1sO2Q+PTAmJmQ8YyYmZCE9KHQ+MD9jOi0xKTtkKz1pKXt2YXIgcz1yLmNoaWxkcmVuW2RdO2lmKC0xPT09cy5jbGFzc05hbWUuaW5kZXhPZigiaGlkZGVuIikmJlgocy5kYXRlT2JqKSYmTWF0aC5hYnMoZS4kaS1kKT49TWF0aC5hYnModCkpcmV0dXJuIEwocyl9dy5jaGFuZ2VNb250aChpKSxSKFcoaSksMCl9KGEsdCk6TChhKX1mdW5jdGlvbiBCKGUsdCl7Zm9yKHZhciBuPShuZXcgRGF0ZShlLHQsMSkuZ2V0RGF5KCktdy5sMTBuLmZpcnN0RGF5T2ZXZWVrKzcpJTcsYT13LnV0aWxzLmdldERheXNJbk1vbnRoKCh0LTErMTIpJTEyLGUpLGk9dy51dGlscy5nZXREYXlzSW5Nb250aCh0LGUpLG89d2luZG93LmRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxyPXcuY29uZmlnLnNob3dNb250aHM+MSxsPXI\/InByZXZNb250aERheSBoaWRkZW4iOiJwcmV2TW9udGhEYXkiLGM9cj8ibmV4dE1vbnRoRGF5IGhpZGRlbiI6Im5leHRNb250aERheSIsZD1hKzEtbix1PTA7ZDw9YTtkKyssdSsrKW8uYXBwZW5kQ2hpbGQoSChsLG5ldyBEYXRlKGUsdC0xLGQpLGQsdSkpO2ZvcihkPTE7ZDw9aTtkKyssdSsrKW8uYXBwZW5kQ2hpbGQoSCgiIixuZXcgRGF0ZShlLHQsZCksZCx1KSk7Zm9yKHZhciBmPWkrMTtmPD00Mi1uJiYoMT09PXcuY29uZmlnLnNob3dNb250aHN8fHUlNyE9MCk7ZisrLHUrKylvLmFwcGVuZENoaWxkKEgoYyxuZXcgRGF0ZShlLHQrMSxmJWkpLGYsdSkpO3ZhciBtPXMoImRpdiIsImRheUNvbnRhaW5lciIpO3JldHVybiBtLmFwcGVuZENoaWxkKG8pLG19ZnVuY3Rpb24gSigpe2lmKHZvaWQgMCE9PXcuZGF5c0NvbnRhaW5lcil7dSh3LmRheXNDb250YWluZXIpLHcud2Vla051bWJlcnMmJnUody53ZWVrTnVtYmVycyk7Zm9yKHZhciBlPWRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSx0PTA7dDx3LmNvbmZpZy5zaG93TW9udGhzO3QrKyl7dmFyIG49bmV3IERhdGUody5jdXJyZW50WWVhcix3LmN1cnJlbnRNb250aCwxKTtuLnNldE1vbnRoKHcuY3VycmVudE1vbnRoK3QpLGUuYXBwZW5kQ2hpbGQoQihuLmdldEZ1bGxZZWFyKCksbi5nZXRNb250aCgpKSl9dy5kYXlzQ29udGFpbmVyLmFwcGVuZENoaWxkKGUpLHcuZGF5cz13LmRheXNDb250YWluZXIuZmlyc3RDaGlsZCwicmFuZ2UiPT09dy5jb25maWcubW9kZSYmMT09PXcuc2VsZWN0ZWREYXRlcy5sZW5ndGgmJmFlKCl9fWZ1bmN0aW9uIEsoKXtpZighKHcuY29uZmlnLnNob3dNb250aHM+MXx8ImRyb3Bkb3duIiE9PXcuY29uZmlnLm1vbnRoU2VsZWN0b3JUeXBlKSl7dmFyIGU9ZnVuY3Rpb24oZSl7cmV0dXJuISh2b2lkIDAhPT13LmNvbmZpZy5taW5EYXRlJiZ3LmN1cnJlbnRZZWFyPT09dy5jb25maWcubWluRGF0ZS5nZXRGdWxsWWVhcigpJiZlPHcuY29uZmlnLm1pbkRhdGUuZ2V0TW9udGgoKSkmJiEodm9pZCAwIT09dy5jb25maWcubWF4RGF0ZSYmdy5jdXJyZW50WWVhcj09PXcuY29uZmlnLm1heERhdGUuZ2V0RnVsbFllYXIoKSYmZT53LmNvbmZpZy5tYXhEYXRlLmdldE1vbnRoKCkpfTt3Lm1vbnRoc0Ryb3Bkb3duQ29udGFpbmVyLnRhYkluZGV4PS0xLHcubW9udGhzRHJvcGRvd25Db250YWluZXIuaW5uZXJIVE1MPSIiO2Zvcih2YXIgdD0wO3Q8MTI7dCsrKWlmKGUodCkpe3ZhciBuPXMoIm9wdGlvbiIsImZsYXRwaWNrci1tb250aERyb3Bkb3duLW1vbnRoIik7bi52YWx1ZT1uZXcgRGF0ZSh3LmN1cnJlbnRZZWFyLHQpLmdldE1vbnRoKCkudG9TdHJpbmcoKSxuLnRleHRDb250ZW50PWgodCx3LmNvbmZpZy5zaG9ydGhhbmRDdXJyZW50TW9udGgsdy5sMTBuKSxuLnRhYkluZGV4PS0xLHcuY3VycmVudE1vbnRoPT09dCYmKG4uc2VsZWN0ZWQ9ITApLHcubW9udGhzRHJvcGRvd25Db250YWluZXIuYXBwZW5kQ2hpbGQobil9fX1mdW5jdGlvbiBVKCl7dmFyIGUsdD1zKCJkaXYiLCJmbGF0cGlja3ItbW9udGgiKSxuPXdpbmRvdy5kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7dy5jb25maWcuc2hvd01vbnRocz4xfHwic3RhdGljIj09PXcuY29uZmlnLm1vbnRoU2VsZWN0b3JUeXBlP2U9cygic3BhbiIsImN1ci1tb250aCIpOih3Lm1vbnRoc0Ryb3Bkb3duQ29udGFpbmVyPXMoInNlbGVjdCIsImZsYXRwaWNrci1tb250aERyb3Bkb3duLW1vbnRocyIpLHcubW9udGhzRHJvcGRvd25Db250YWluZXIuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIix3LmwxMG4ubW9udGhBcmlhTGFiZWwpLEEody5tb250aHNEcm9wZG93bkNvbnRhaW5lciwiY2hhbmdlIiwoZnVuY3Rpb24oZSl7dmFyIHQ9ZyhlKSxuPXBhcnNlSW50KHQudmFsdWUsMTApO3cuY2hhbmdlTW9udGgobi13LmN1cnJlbnRNb250aCkscGUoIm9uTW9udGhDaGFuZ2UiKX0pKSxLKCksZT13Lm1vbnRoc0Ryb3Bkb3duQ29udGFpbmVyKTt2YXIgYT1tKCJjdXIteWVhciIse3RhYmluZGV4OiItMSJ9KSxpPWEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0IilbMF07aS5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLHcubDEwbi55ZWFyQXJpYUxhYmVsKSx3LmNvbmZpZy5taW5EYXRlJiZpLnNldEF0dHJpYnV0ZSgibWluIix3LmNvbmZpZy5taW5EYXRlLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKSksdy5jb25maWcubWF4RGF0ZSYmKGkuc2V0QXR0cmlidXRlKCJtYXgiLHcuY29uZmlnLm1heERhdGUuZ2V0RnVsbFllYXIoKS50b1N0cmluZygpKSxpLmRpc2FibGVkPSEhdy5jb25maWcubWluRGF0ZSYmdy5jb25maWcubWluRGF0ZS5nZXRGdWxsWWVhcigpPT09dy5jb25maWcubWF4RGF0ZS5nZXRGdWxsWWVhcigpKTt2YXIgbz1zKCJkaXYiLCJmbGF0cGlja3ItY3VycmVudC1tb250aCIpO3JldHVybiBvLmFwcGVuZENoaWxkKGUpLG8uYXBwZW5kQ2hpbGQoYSksbi5hcHBlbmRDaGlsZChvKSx0LmFwcGVuZENoaWxkKG4pLHtjb250YWluZXI6dCx5ZWFyRWxlbWVudDppLG1vbnRoRWxlbWVudDplfX1mdW5jdGlvbiBxKCl7dSh3Lm1vbnRoTmF2KSx3Lm1vbnRoTmF2LmFwcGVuZENoaWxkKHcucHJldk1vbnRoTmF2KSx3LmNvbmZpZy5zaG93TW9udGhzJiYody55ZWFyRWxlbWVudHM9W10sdy5tb250aEVsZW1lbnRzPVtdKTtmb3IodmFyIGU9dy5jb25maWcuc2hvd01vbnRocztlLS07KXt2YXIgdD1VKCk7dy55ZWFyRWxlbWVudHMucHVzaCh0LnllYXJFbGVtZW50KSx3Lm1vbnRoRWxlbWVudHMucHVzaCh0Lm1vbnRoRWxlbWVudCksdy5tb250aE5hdi5hcHBlbmRDaGlsZCh0LmNvbnRhaW5lcil9dy5tb250aE5hdi5hcHBlbmRDaGlsZCh3Lm5leHRNb250aE5hdil9ZnVuY3Rpb24gJCgpe3cud2Vla2RheUNvbnRhaW5lcj91KHcud2Vla2RheUNvbnRhaW5lcik6dy53ZWVrZGF5Q29udGFpbmVyPXMoImRpdiIsImZsYXRwaWNrci13ZWVrZGF5cyIpO2Zvcih2YXIgZT13LmNvbmZpZy5zaG93TW9udGhzO2UtLTspe3ZhciB0PXMoImRpdiIsImZsYXRwaWNrci13ZWVrZGF5Y29udGFpbmVyIik7dy53ZWVrZGF5Q29udGFpbmVyLmFwcGVuZENoaWxkKHQpfXJldHVybiB6KCksdy53ZWVrZGF5Q29udGFpbmVyfWZ1bmN0aW9uIHooKXtpZih3LndlZWtkYXlDb250YWluZXIpe3ZhciBlPXcubDEwbi5maXJzdERheU9mV2VlayxuPXQody5sMTBuLndlZWtkYXlzLnNob3J0aGFuZCk7ZT4wJiZlPG4ubGVuZ3RoJiYobj10KG4uc3BsaWNlKGUsbi5sZW5ndGgpLG4uc3BsaWNlKDAsZSkpKTtmb3IodmFyIGE9dy5jb25maWcuc2hvd01vbnRoczthLS07KXcud2Vla2RheUNvbnRhaW5lci5jaGlsZHJlblthXS5pbm5lckhUTUw9IlxuICAgICAgPHNwYW4gY2xhc3M9J2ZsYXRwaWNrci13ZWVrZGF5Jz5cbiAgICAgICAgIituLmpvaW4oIjwvc3Bhbj48c3BhbiBjbGFzcz0nZmxhdHBpY2tyLXdlZWtkYXknPiIpKyJcbiAgICAgIDwvc3Bhbj5cbiAgICAgICJ9fWZ1bmN0aW9uIEcoZSx0KXt2b2lkIDA9PT10JiYodD0hMCk7dmFyIG49dD9lOmUtdy5jdXJyZW50TW9udGg7bjwwJiYhMD09PXcuX2hpZGVQcmV2TW9udGhBcnJvd3x8bj4wJiYhMD09PXcuX2hpZGVOZXh0TW9udGhBcnJvd3x8KHcuY3VycmVudE1vbnRoKz1uLCh3LmN1cnJlbnRNb250aDwwfHx3LmN1cnJlbnRNb250aD4xMSkmJih3LmN1cnJlbnRZZWFyKz13LmN1cnJlbnRNb250aD4xMT8xOi0xLHcuY3VycmVudE1vbnRoPSh3LmN1cnJlbnRNb250aCsxMiklMTIscGUoIm9uWWVhckNoYW5nZSIpLEsoKSksSigpLHBlKCJvbk1vbnRoQ2hhbmdlIiksRGUoKSl9ZnVuY3Rpb24gVihlKXtyZXR1cm4hKCF3LmNvbmZpZy5hcHBlbmRUb3x8IXcuY29uZmlnLmFwcGVuZFRvLmNvbnRhaW5zKGUpKXx8dy5jYWxlbmRhckNvbnRhaW5lci5jb250YWlucyhlKX1mdW5jdGlvbiBaKGUpe2lmKHcuaXNPcGVuJiYhdy5jb25maWcuaW5saW5lKXt2YXIgdD1nKGUpLG49Vih0KSxhPXQ9PT13LmlucHV0fHx0PT09dy5hbHRJbnB1dHx8dy5lbGVtZW50LmNvbnRhaW5zKHQpfHxlLnBhdGgmJmUucGF0aC5pbmRleE9mJiYofmUucGF0aC5pbmRleE9mKHcuaW5wdXQpfHx+ZS5wYXRoLmluZGV4T2Yody5hbHRJbnB1dCkpLGk9ImJsdXIiPT09ZS50eXBlP2EmJmUucmVsYXRlZFRhcmdldCYmIVYoZS5yZWxhdGVkVGFyZ2V0KTohYSYmIW4mJiFWKGUucmVsYXRlZFRhcmdldCksbz0hdy5jb25maWcuaWdub3JlZEZvY3VzRWxlbWVudHMuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY29udGFpbnModCl9KSk7aSYmbyYmKHZvaWQgMCE9PXcudGltZUNvbnRhaW5lciYmdm9pZCAwIT09dy5taW51dGVFbGVtZW50JiZ2b2lkIDAhPT13LmhvdXJFbGVtZW50JiYiIiE9PXcuaW5wdXQudmFsdWUmJnZvaWQgMCE9PXcuaW5wdXQudmFsdWUmJkkoKSx3LmNsb3NlKCksdy5jb25maWcmJiJyYW5nZSI9PT13LmNvbmZpZy5tb2RlJiYxPT09dy5zZWxlY3RlZERhdGVzLmxlbmd0aCYmKHcuY2xlYXIoITEpLHcucmVkcmF3KCkpKX19ZnVuY3Rpb24gUShlKXtpZighKCFlfHx3LmNvbmZpZy5taW5EYXRlJiZlPHcuY29uZmlnLm1pbkRhdGUuZ2V0RnVsbFllYXIoKXx8dy5jb25maWcubWF4RGF0ZSYmZT53LmNvbmZpZy5tYXhEYXRlLmdldEZ1bGxZZWFyKCkpKXt2YXIgdD1lLG49dy5jdXJyZW50WWVhciE9PXQ7dy5jdXJyZW50WWVhcj10fHx3LmN1cnJlbnRZZWFyLHcuY29uZmlnLm1heERhdGUmJncuY3VycmVudFllYXI9PT13LmNvbmZpZy5tYXhEYXRlLmdldEZ1bGxZZWFyKCk\/dy5jdXJyZW50TW9udGg9TWF0aC5taW4ody5jb25maWcubWF4RGF0ZS5nZXRNb250aCgpLHcuY3VycmVudE1vbnRoKTp3LmNvbmZpZy5taW5EYXRlJiZ3LmN1cnJlbnRZZWFyPT09dy5jb25maWcubWluRGF0ZS5nZXRGdWxsWWVhcigpJiYody5jdXJyZW50TW9udGg9TWF0aC5tYXgody5jb25maWcubWluRGF0ZS5nZXRNb250aCgpLHcuY3VycmVudE1vbnRoKSksbiYmKHcucmVkcmF3KCkscGUoIm9uWWVhckNoYW5nZSIpLEsoKSl9fWZ1bmN0aW9uIFgoZSx0KXt2YXIgbjt2b2lkIDA9PT10JiYodD0hMCk7dmFyIGE9dy5wYXJzZURhdGUoZSx2b2lkIDAsdCk7aWYody5jb25maWcubWluRGF0ZSYmYSYmTShhLHcuY29uZmlnLm1pbkRhdGUsdm9pZCAwIT09dD90OiF3Lm1pbkRhdGVIYXNUaW1lKTwwfHx3LmNvbmZpZy5tYXhEYXRlJiZhJiZNKGEsdy5jb25maWcubWF4RGF0ZSx2b2lkIDAhPT10P3Q6IXcubWF4RGF0ZUhhc1RpbWUpPjApcmV0dXJuITE7aWYoIXcuY29uZmlnLmVuYWJsZSYmMD09PXcuY29uZmlnLmRpc2FibGUubGVuZ3RoKXJldHVybiEwO2lmKHZvaWQgMD09PWEpcmV0dXJuITE7Zm9yKHZhciBpPSEhdy5jb25maWcuZW5hYmxlLG89bnVsbCE9PShuPXcuY29uZmlnLmVuYWJsZSkmJnZvaWQgMCE9PW4\/bjp3LmNvbmZpZy5kaXNhYmxlLHI9MCxsPXZvaWQgMDtyPG8ubGVuZ3RoO3IrKyl7aWYoImZ1bmN0aW9uIj09dHlwZW9mKGw9b1tyXSkmJmwoYSkpcmV0dXJuIGk7aWYobCBpbnN0YW5jZW9mIERhdGUmJnZvaWQgMCE9PWEmJmwuZ2V0VGltZSgpPT09YS5nZXRUaW1lKCkpcmV0dXJuIGk7aWYoInN0cmluZyI9PXR5cGVvZiBsKXt2YXIgYz13LnBhcnNlRGF0ZShsLHZvaWQgMCwhMCk7cmV0dXJuIGMmJmMuZ2V0VGltZSgpPT09YS5nZXRUaW1lKCk\/aTohaX1pZigib2JqZWN0Ij09dHlwZW9mIGwmJnZvaWQgMCE9PWEmJmwuZnJvbSYmbC50byYmYS5nZXRUaW1lKCk+PWwuZnJvbS5nZXRUaW1lKCkmJmEuZ2V0VGltZSgpPD1sLnRvLmdldFRpbWUoKSlyZXR1cm4gaX1yZXR1cm4haX1mdW5jdGlvbiBlZShlKXtyZXR1cm4gdm9pZCAwIT09dy5kYXlzQ29udGFpbmVyJiYoLTE9PT1lLmNsYXNzTmFtZS5pbmRleE9mKCJoaWRkZW4iKSYmLTE9PT1lLmNsYXNzTmFtZS5pbmRleE9mKCJmbGF0cGlja3ItZGlzYWJsZWQiKSYmdy5kYXlzQ29udGFpbmVyLmNvbnRhaW5zKGUpKX1mdW5jdGlvbiB0ZShlKXshKGUudGFyZ2V0PT09dy5faW5wdXQpfHwhKHcuc2VsZWN0ZWREYXRlcy5sZW5ndGg+MHx8dy5faW5wdXQudmFsdWUubGVuZ3RoPjApfHxlLnJlbGF0ZWRUYXJnZXQmJlYoZS5yZWxhdGVkVGFyZ2V0KXx8dy5zZXREYXRlKHcuX2lucHV0LnZhbHVlLCEwLGUudGFyZ2V0PT09dy5hbHRJbnB1dD93LmNvbmZpZy5hbHRGb3JtYXQ6dy5jb25maWcuZGF0ZUZvcm1hdCl9ZnVuY3Rpb24gbmUoZSl7dmFyIHQ9ZyhlKSxuPXcuY29uZmlnLndyYXA\/cC5jb250YWlucyh0KTp0PT09dy5faW5wdXQsYT13LmNvbmZpZy5hbGxvd0lucHV0LGk9dy5pc09wZW4mJighYXx8IW4pLG89dy5jb25maWcuaW5saW5lJiZuJiYhYTtpZigxMz09PWUua2V5Q29kZSYmbil7aWYoYSlyZXR1cm4gdy5zZXREYXRlKHcuX2lucHV0LnZhbHVlLCEwLHQ9PT13LmFsdElucHV0P3cuY29uZmlnLmFsdEZvcm1hdDp3LmNvbmZpZy5kYXRlRm9ybWF0KSx0LmJsdXIoKTt3Lm9wZW4oKX1lbHNlIGlmKFYodCl8fGl8fG8pe3ZhciByPSEhdy50aW1lQ29udGFpbmVyJiZ3LnRpbWVDb250YWluZXIuY29udGFpbnModCk7c3dpdGNoKGUua2V5Q29kZSl7Y2FzZSAxMzpyPyhlLnByZXZlbnREZWZhdWx0KCksSSgpLHNlKCkpOnVlKGUpO2JyZWFrO2Nhc2UgMjc6ZS5wcmV2ZW50RGVmYXVsdCgpLHNlKCk7YnJlYWs7Y2FzZSA4OmNhc2UgNDY6biYmIXcuY29uZmlnLmFsbG93SW5wdXQmJihlLnByZXZlbnREZWZhdWx0KCksdy5jbGVhcigpKTticmVhaztjYXNlIDM3OmNhc2UgMzk6aWYocnx8bil3LmhvdXJFbGVtZW50JiZ3LmhvdXJFbGVtZW50LmZvY3VzKCk7ZWxzZSBpZihlLnByZXZlbnREZWZhdWx0KCksdm9pZCAwIT09dy5kYXlzQ29udGFpbmVyJiYoITE9PT1hfHxkb2N1bWVudC5hY3RpdmVFbGVtZW50JiZlZShkb2N1bWVudC5hY3RpdmVFbGVtZW50KSkpe3ZhciBsPTM5PT09ZS5rZXlDb2RlPzE6LTE7ZS5jdHJsS2V5PyhlLnN0b3BQcm9wYWdhdGlvbigpLEcobCksUihXKDEpLDApKTpSKHZvaWQgMCxsKX1icmVhaztjYXNlIDM4OmNhc2UgNDA6ZS5wcmV2ZW50RGVmYXVsdCgpO3ZhciBjPTQwPT09ZS5rZXlDb2RlPzE6LTE7dy5kYXlzQ29udGFpbmVyJiZ2b2lkIDAhPT10LiRpfHx0PT09dy5pbnB1dHx8dD09PXcuYWx0SW5wdXQ\/ZS5jdHJsS2V5PyhlLnN0b3BQcm9wYWdhdGlvbigpLFEody5jdXJyZW50WWVhci1jKSxSKFcoMSksMCkpOnJ8fFIodm9pZCAwLDcqYyk6dD09PXcuY3VycmVudFllYXJFbGVtZW50P1Eody5jdXJyZW50WWVhci1jKTp3LmNvbmZpZy5lbmFibGVUaW1lJiYoIXImJncuaG91ckVsZW1lbnQmJncuaG91ckVsZW1lbnQuZm9jdXMoKSxJKGUpLHcuX2RlYm91bmNlZENoYW5nZSgpKTticmVhaztjYXNlIDk6aWYocil7dmFyIGQ9W3cuaG91ckVsZW1lbnQsdy5taW51dGVFbGVtZW50LHcuc2Vjb25kRWxlbWVudCx3LmFtUE1dLmNvbmNhdCh3LnBsdWdpbkVsZW1lbnRzKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlfSkpLHM9ZC5pbmRleE9mKHQpO2lmKC0xIT09cyl7dmFyIHU9ZFtzKyhlLnNoaWZ0S2V5Py0xOjEpXTtlLnByZXZlbnREZWZhdWx0KCksKHV8fHcuX2lucHV0KS5mb2N1cygpfX1lbHNlIXcuY29uZmlnLm5vQ2FsZW5kYXImJncuZGF5c0NvbnRhaW5lciYmdy5kYXlzQ29udGFpbmVyLmNvbnRhaW5zKHQpJiZlLnNoaWZ0S2V5JiYoZS5wcmV2ZW50RGVmYXVsdCgpLHcuX2lucHV0LmZvY3VzKCkpfX1pZih2b2lkIDAhPT13LmFtUE0mJnQ9PT13LmFtUE0pc3dpdGNoKGUua2V5KXtjYXNlIHcubDEwbi5hbVBNWzBdLmNoYXJBdCgwKTpjYXNlIHcubDEwbi5hbVBNWzBdLmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpOncuYW1QTS50ZXh0Q29udGVudD13LmwxMG4uYW1QTVswXSxTKCksYmUoKTticmVhaztjYXNlIHcubDEwbi5hbVBNWzFdLmNoYXJBdCgwKTpjYXNlIHcubDEwbi5hbVBNWzFdLmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpOncuYW1QTS50ZXh0Q29udGVudD13LmwxMG4uYW1QTVsxXSxTKCksYmUoKX0obnx8Vih0KSkmJnBlKCJvbktleURvd24iLGUpfWZ1bmN0aW9uIGFlKGUpe2lmKDE9PT13LnNlbGVjdGVkRGF0ZXMubGVuZ3RoJiYoIWV8fGUuY2xhc3NMaXN0LmNvbnRhaW5zKCJmbGF0cGlja3ItZGF5IikmJiFlLmNsYXNzTGlzdC5jb250YWlucygiZmxhdHBpY2tyLWRpc2FibGVkIikpKXtmb3IodmFyIHQ9ZT9lLmRhdGVPYmouZ2V0VGltZSgpOncuZGF5cy5maXJzdEVsZW1lbnRDaGlsZC5kYXRlT2JqLmdldFRpbWUoKSxuPXcucGFyc2VEYXRlKHcuc2VsZWN0ZWREYXRlc1swXSx2b2lkIDAsITApLmdldFRpbWUoKSxhPU1hdGgubWluKHQsdy5zZWxlY3RlZERhdGVzWzBdLmdldFRpbWUoKSksaT1NYXRoLm1heCh0LHcuc2VsZWN0ZWREYXRlc1swXS5nZXRUaW1lKCkpLG89ITEscj0wLGw9MCxjPWE7YzxpO2MrPXkpWChuZXcgRGF0ZShjKSwhMCl8fChvPW98fGM+YSYmYzxpLGM8biYmKCFyfHxjPnIpP3I9YzpjPm4mJighbHx8YzxsKSYmKGw9YykpO2Zvcih2YXIgZD0wO2Q8dy5jb25maWcuc2hvd01vbnRocztkKyspZm9yKHZhciBzPXcuZGF5c0NvbnRhaW5lci5jaGlsZHJlbltkXSx1PWZ1bmN0aW9uKGEsaSl7dmFyIGMsZCx1LGY9cy5jaGlsZHJlblthXSxtPWYuZGF0ZU9iai5nZXRUaW1lKCksZz1yPjAmJm08cnx8bD4wJiZtPmw7cmV0dXJuIGc\/KGYuY2xhc3NMaXN0LmFkZCgibm90QWxsb3dlZCIpLFsiaW5SYW5nZSIsInN0YXJ0UmFuZ2UiLCJlbmRSYW5nZSJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe2YuY2xhc3NMaXN0LnJlbW92ZShlKX0pKSwiY29udGludWUiKTpvJiYhZz8iY29udGludWUiOihbInN0YXJ0UmFuZ2UiLCJpblJhbmdlIiwiZW5kUmFuZ2UiLCJub3RBbGxvd2VkIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7Zi5jbGFzc0xpc3QucmVtb3ZlKGUpfSkpLHZvaWQodm9pZCAwIT09ZSYmKGUuY2xhc3NMaXN0LmFkZCh0PD13LnNlbGVjdGVkRGF0ZXNbMF0uZ2V0VGltZSgpPyJzdGFydFJhbmdlIjoiZW5kUmFuZ2UiKSxuPHQmJm09PT1uP2YuY2xhc3NMaXN0LmFkZCgic3RhcnRSYW5nZSIpOm4+dCYmbT09PW4mJmYuY2xhc3NMaXN0LmFkZCgiZW5kUmFuZ2UiKSxtPj1yJiYoMD09PWx8fG08PWwpJiYoZD1uLHU9dCwoYz1tKT5NYXRoLm1pbihkLHUpJiZjPE1hdGgubWF4KGQsdSkpJiZmLmNsYXNzTGlzdC5hZGQoImluUmFuZ2UiKSkpKX0sZj0wLG09cy5jaGlsZHJlbi5sZW5ndGg7ZjxtO2YrKyl1KGYpfX1mdW5jdGlvbiBpZSgpeyF3LmlzT3Blbnx8dy5jb25maWcuc3RhdGljfHx3LmNvbmZpZy5pbmxpbmV8fGNlKCl9ZnVuY3Rpb24gb2UoZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBuPXcuY29uZmlnWyJfIitlKyJEYXRlIl09dy5wYXJzZURhdGUodCx3LmNvbmZpZy5kYXRlRm9ybWF0KSxhPXcuY29uZmlnWyJfIisoIm1pbiI9PT1lPyJtYXgiOiJtaW4iKSsiRGF0ZSJdO3ZvaWQgMCE9PW4mJih3WyJtaW4iPT09ZT8ibWluRGF0ZUhhc1RpbWUiOiJtYXhEYXRlSGFzVGltZSJdPW4uZ2V0SG91cnMoKT4wfHxuLmdldE1pbnV0ZXMoKT4wfHxuLmdldFNlY29uZHMoKT4wKSx3LnNlbGVjdGVkRGF0ZXMmJih3LnNlbGVjdGVkRGF0ZXM9dy5zZWxlY3RlZERhdGVzLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIFgoZSl9KSksdy5zZWxlY3RlZERhdGVzLmxlbmd0aHx8Im1pbiIhPT1lfHxfKG4pLGJlKCkpLHcuZGF5c0NvbnRhaW5lciYmKGRlKCksdm9pZCAwIT09bj93LmN1cnJlbnRZZWFyRWxlbWVudFtlXT1uLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKTp3LmN1cnJlbnRZZWFyRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoZSksdy5jdXJyZW50WWVhckVsZW1lbnQuZGlzYWJsZWQ9ISFhJiZ2b2lkIDAhPT1uJiZhLmdldEZ1bGxZZWFyKCk9PT1uLmdldEZ1bGxZZWFyKCkpfX1mdW5jdGlvbiByZSgpe3JldHVybiB3LmNvbmZpZy53cmFwP3AucXVlcnlTZWxlY3RvcigiW2RhdGEtaW5wdXRdIik6cH1mdW5jdGlvbiBsZSgpeyJvYmplY3QiIT10eXBlb2Ygdy5jb25maWcubG9jYWxlJiZ2b2lkIDA9PT1ULmwxMG5zW3cuY29uZmlnLmxvY2FsZV0mJncuY29uZmlnLmVycm9ySGFuZGxlcihuZXcgRXJyb3IoImZsYXRwaWNrcjogaW52YWxpZCBsb2NhbGUgIit3LmNvbmZpZy5sb2NhbGUpKSx3LmwxMG49ZShlKHt9LFQubDEwbnMuZGVmYXVsdCksIm9iamVjdCI9PXR5cGVvZiB3LmNvbmZpZy5sb2NhbGU\/dy5jb25maWcubG9jYWxlOiJkZWZhdWx0IiE9PXcuY29uZmlnLmxvY2FsZT9ULmwxMG5zW3cuY29uZmlnLmxvY2FsZV06dm9pZCAwKSxELks9IigiK3cubDEwbi5hbVBNWzBdKyJ8Iit3LmwxMG4uYW1QTVsxXSsifCIrdy5sMTBuLmFtUE1bMF0udG9Mb3dlckNhc2UoKSsifCIrdy5sMTBuLmFtUE1bMV0udG9Mb3dlckNhc2UoKSsiKSIsdm9pZCAwPT09ZShlKHt9LHYpLEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocC5kYXRhc2V0fHx7fSkpKS50aW1lXzI0aHImJnZvaWQgMD09PVQuZGVmYXVsdENvbmZpZy50aW1lXzI0aHImJih3LmNvbmZpZy50aW1lXzI0aHI9dy5sMTBuLnRpbWVfMjRociksdy5mb3JtYXREYXRlPWIodyksdy5wYXJzZURhdGU9Qyh7Y29uZmlnOncuY29uZmlnLGwxMG46dy5sMTBufSl9ZnVuY3Rpb24gY2UoZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHcuY29uZmlnLnBvc2l0aW9uKXtpZih2b2lkIDAhPT13LmNhbGVuZGFyQ29udGFpbmVyKXtwZSgib25QcmVDYWxlbmRhclBvc2l0aW9uIik7dmFyIHQ9ZXx8dy5fcG9zaXRpb25FbGVtZW50LG49QXJyYXkucHJvdG90eXBlLnJlZHVjZS5jYWxsKHcuY2FsZW5kYXJDb250YWluZXIuY2hpbGRyZW4sKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUrdC5vZmZzZXRIZWlnaHR9KSwwKSxhPXcuY2FsZW5kYXJDb250YWluZXIub2Zmc2V0V2lkdGgsaT13LmNvbmZpZy5wb3NpdGlvbi5zcGxpdCgiICIpLG89aVswXSxyPWkubGVuZ3RoPjE\/aVsxXTpudWxsLGw9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxjPXdpbmRvdy5pbm5lckhlaWdodC1sLmJvdHRvbSxzPSJhYm92ZSI9PT1vfHwiYmVsb3ciIT09byYmYzxuJiZsLnRvcD5uLHU9d2luZG93LnBhZ2VZT2Zmc2V0K2wudG9wKyhzPy1uLTI6dC5vZmZzZXRIZWlnaHQrMik7aWYoZCh3LmNhbGVuZGFyQ29udGFpbmVyLCJhcnJvd1RvcCIsIXMpLGQody5jYWxlbmRhckNvbnRhaW5lciwiYXJyb3dCb3R0b20iLHMpLCF3LmNvbmZpZy5pbmxpbmUpe3ZhciBmPXdpbmRvdy5wYWdlWE9mZnNldCtsLmxlZnQsbT0hMSxnPSExOyJjZW50ZXIiPT09cj8oZi09KGEtbC53aWR0aCkvMixtPSEwKToicmlnaHQiPT09ciYmKGYtPWEtbC53aWR0aCxnPSEwKSxkKHcuY2FsZW5kYXJDb250YWluZXIsImFycm93TGVmdCIsIW0mJiFnKSxkKHcuY2FsZW5kYXJDb250YWluZXIsImFycm93Q2VudGVyIixtKSxkKHcuY2FsZW5kYXJDb250YWluZXIsImFycm93UmlnaHQiLGcpO3ZhciBwPXdpbmRvdy5kb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoLSh3aW5kb3cucGFnZVhPZmZzZXQrbC5yaWdodCksaD1mK2E+d2luZG93LmRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGgsdj1wK2E+d2luZG93LmRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGg7aWYoZCh3LmNhbGVuZGFyQ29udGFpbmVyLCJyaWdodE1vc3QiLGgpLCF3LmNvbmZpZy5zdGF0aWMpaWYody5jYWxlbmRhckNvbnRhaW5lci5zdHlsZS50b3A9dSsicHgiLGgpaWYodil7dmFyIEQ9ZnVuY3Rpb24oKXtmb3IodmFyIGU9bnVsbCx0PTA7dDxkb2N1bWVudC5zdHlsZVNoZWV0cy5sZW5ndGg7dCsrKXt2YXIgbj1kb2N1bWVudC5zdHlsZVNoZWV0c1t0XTt0cnl7bi5jc3NSdWxlc31jYXRjaChlKXtjb250aW51ZX1lPW47YnJlYWt9cmV0dXJuIG51bGwhPWU\/ZTooYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoYSksYS5zaGVldCk7dmFyIGF9KCk7aWYodm9pZCAwPT09RClyZXR1cm47dmFyIGI9d2luZG93LmRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGgsQz1NYXRoLm1heCgwLGIvMi1hLzIpLE09RC5jc3NSdWxlcy5sZW5ndGgseT0ie2xlZnQ6IitsLmxlZnQrInB4O3JpZ2h0OmF1dG87fSI7ZCh3LmNhbGVuZGFyQ29udGFpbmVyLCJyaWdodE1vc3QiLCExKSxkKHcuY2FsZW5kYXJDb250YWluZXIsImNlbnRlck1vc3QiLCEwKSxELmluc2VydFJ1bGUoIi5mbGF0cGlja3ItY2FsZW5kYXIuY2VudGVyTW9zdDpiZWZvcmUsLmZsYXRwaWNrci1jYWxlbmRhci5jZW50ZXJNb3N0OmFmdGVyIit5LE0pLHcuY2FsZW5kYXJDb250YWluZXIuc3R5bGUubGVmdD1DKyJweCIsdy5jYWxlbmRhckNvbnRhaW5lci5zdHlsZS5yaWdodD0iYXV0byJ9ZWxzZSB3LmNhbGVuZGFyQ29udGFpbmVyLnN0eWxlLmxlZnQ9ImF1dG8iLHcuY2FsZW5kYXJDb250YWluZXIuc3R5bGUucmlnaHQ9cCsicHgiO2Vsc2Ugdy5jYWxlbmRhckNvbnRhaW5lci5zdHlsZS5sZWZ0PWYrInB4Iix3LmNhbGVuZGFyQ29udGFpbmVyLnN0eWxlLnJpZ2h0PSJhdXRvIn19fWVsc2Ugdy5jb25maWcucG9zaXRpb24odyxlKX1mdW5jdGlvbiBkZSgpe3cuY29uZmlnLm5vQ2FsZW5kYXJ8fHcuaXNNb2JpbGV8fChLKCksRGUoKSxKKCkpfWZ1bmN0aW9uIHNlKCl7dy5faW5wdXQuZm9jdXMoKSwtMSE9PXdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIk1TSUUiKXx8dm9pZCAwIT09bmF2aWdhdG9yLm1zTWF4VG91Y2hQb2ludHM\/c2V0VGltZW91dCh3LmNsb3NlLDApOncuY2xvc2UoKX1mdW5jdGlvbiB1ZShlKXtlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wUHJvcGFnYXRpb24oKTt2YXIgdD1mKGcoZSksKGZ1bmN0aW9uKGUpe3JldHVybiBlLmNsYXNzTGlzdCYmZS5jbGFzc0xpc3QuY29udGFpbnMoImZsYXRwaWNrci1kYXkiKSYmIWUuY2xhc3NMaXN0LmNvbnRhaW5zKCJmbGF0cGlja3ItZGlzYWJsZWQiKSYmIWUuY2xhc3NMaXN0LmNvbnRhaW5zKCJub3RBbGxvd2VkIil9KSk7aWYodm9pZCAwIT09dCl7dmFyIG49dCxhPXcubGF0ZXN0U2VsZWN0ZWREYXRlT2JqPW5ldyBEYXRlKG4uZGF0ZU9iai5nZXRUaW1lKCkpLGk9KGEuZ2V0TW9udGgoKTx3LmN1cnJlbnRNb250aHx8YS5nZXRNb250aCgpPncuY3VycmVudE1vbnRoK3cuY29uZmlnLnNob3dNb250aHMtMSkmJiJyYW5nZSIhPT13LmNvbmZpZy5tb2RlO2lmKHcuc2VsZWN0ZWREYXRlRWxlbT1uLCJzaW5nbGUiPT09dy5jb25maWcubW9kZSl3LnNlbGVjdGVkRGF0ZXM9W2FdO2Vsc2UgaWYoIm11bHRpcGxlIj09PXcuY29uZmlnLm1vZGUpe3ZhciBvPXZlKGEpO28\/dy5zZWxlY3RlZERhdGVzLnNwbGljZShwYXJzZUludChvKSwxKTp3LnNlbGVjdGVkRGF0ZXMucHVzaChhKX1lbHNlInJhbmdlIj09PXcuY29uZmlnLm1vZGUmJigyPT09dy5zZWxlY3RlZERhdGVzLmxlbmd0aCYmdy5jbGVhcighMSwhMSksdy5sYXRlc3RTZWxlY3RlZERhdGVPYmo9YSx3LnNlbGVjdGVkRGF0ZXMucHVzaChhKSwwIT09TShhLHcuc2VsZWN0ZWREYXRlc1swXSwhMCkmJncuc2VsZWN0ZWREYXRlcy5zb3J0KChmdW5jdGlvbihlLHQpe3JldHVybiBlLmdldFRpbWUoKS10LmdldFRpbWUoKX0pKSk7aWYoUygpLGkpe3ZhciByPXcuY3VycmVudFllYXIhPT1hLmdldEZ1bGxZZWFyKCk7dy5jdXJyZW50WWVhcj1hLmdldEZ1bGxZZWFyKCksdy5jdXJyZW50TW9udGg9YS5nZXRNb250aCgpLHImJihwZSgib25ZZWFyQ2hhbmdlIiksSygpKSxwZSgib25Nb250aENoYW5nZSIpfWlmKERlKCksSigpLGJlKCksaXx8InJhbmdlIj09PXcuY29uZmlnLm1vZGV8fDEhPT13LmNvbmZpZy5zaG93TW9udGhzP3ZvaWQgMCE9PXcuc2VsZWN0ZWREYXRlRWxlbSYmdm9pZCAwPT09dy5ob3VyRWxlbWVudCYmdy5zZWxlY3RlZERhdGVFbGVtJiZ3LnNlbGVjdGVkRGF0ZUVsZW0uZm9jdXMoKTpMKG4pLHZvaWQgMCE9PXcuaG91ckVsZW1lbnQmJnZvaWQgMCE9PXcuaG91ckVsZW1lbnQmJncuaG91ckVsZW1lbnQuZm9jdXMoKSx3LmNvbmZpZy5jbG9zZU9uU2VsZWN0KXt2YXIgbD0ic2luZ2xlIj09PXcuY29uZmlnLm1vZGUmJiF3LmNvbmZpZy5lbmFibGVUaW1lLGM9InJhbmdlIj09PXcuY29uZmlnLm1vZGUmJjI9PT13LnNlbGVjdGVkRGF0ZXMubGVuZ3RoJiYhdy5jb25maWcuZW5hYmxlVGltZTsobHx8YykmJnNlKCl9TigpfX13LnBhcnNlRGF0ZT1DKHtjb25maWc6dy5jb25maWcsbDEwbjp3LmwxMG59KSx3Ll9oYW5kbGVycz1bXSx3LnBsdWdpbkVsZW1lbnRzPVtdLHcubG9hZGVkUGx1Z2lucz1bXSx3Ll9iaW5kPUEsdy5fc2V0SG91cnNGcm9tRGF0ZT1fLHcuX3Bvc2l0aW9uQ2FsZW5kYXI9Y2Usdy5jaGFuZ2VNb250aD1HLHcuY2hhbmdlWWVhcj1RLHcuY2xlYXI9ZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT1lJiYoZT0hMCk7dm9pZCAwPT09dCYmKHQ9ITApO3cuaW5wdXQudmFsdWU9IiIsdm9pZCAwIT09dy5hbHRJbnB1dCYmKHcuYWx0SW5wdXQudmFsdWU9IiIpO3ZvaWQgMCE9PXcubW9iaWxlSW5wdXQmJih3Lm1vYmlsZUlucHV0LnZhbHVlPSIiKTt3LnNlbGVjdGVkRGF0ZXM9W10sdy5sYXRlc3RTZWxlY3RlZERhdGVPYmo9dm9pZCAwLCEwPT09dCYmKHcuY3VycmVudFllYXI9dy5faW5pdGlhbERhdGUuZ2V0RnVsbFllYXIoKSx3LmN1cnJlbnRNb250aD13Ll9pbml0aWFsRGF0ZS5nZXRNb250aCgpKTtpZighMD09PXcuY29uZmlnLmVuYWJsZVRpbWUpe3ZhciBuPXgody5jb25maWcpLGE9bi5ob3VycyxpPW4ubWludXRlcyxvPW4uc2Vjb25kcztPKGEsaSxvKX13LnJlZHJhdygpLGUmJnBlKCJvbkNoYW5nZSIpfSx3LmNsb3NlPWZ1bmN0aW9uKCl7dy5pc09wZW49ITEsdy5pc01vYmlsZXx8KHZvaWQgMCE9PXcuY2FsZW5kYXJDb250YWluZXImJncuY2FsZW5kYXJDb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSgib3BlbiIpLHZvaWQgMCE9PXcuX2lucHV0JiZ3Ll9pbnB1dC5jbGFzc0xpc3QucmVtb3ZlKCJhY3RpdmUiKSk7cGUoIm9uQ2xvc2UiKX0sdy5fY3JlYXRlRWxlbWVudD1zLHcuZGVzdHJveT1mdW5jdGlvbigpe3ZvaWQgMCE9PXcuY29uZmlnJiZwZSgib25EZXN0cm95Iik7Zm9yKHZhciBlPXcuX2hhbmRsZXJzLmxlbmd0aDtlLS07KXcuX2hhbmRsZXJzW2VdLnJlbW92ZSgpO2lmKHcuX2hhbmRsZXJzPVtdLHcubW9iaWxlSW5wdXQpdy5tb2JpbGVJbnB1dC5wYXJlbnROb2RlJiZ3Lm1vYmlsZUlucHV0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQody5tb2JpbGVJbnB1dCksdy5tb2JpbGVJbnB1dD12b2lkIDA7ZWxzZSBpZih3LmNhbGVuZGFyQ29udGFpbmVyJiZ3LmNhbGVuZGFyQ29udGFpbmVyLnBhcmVudE5vZGUpaWYody5jb25maWcuc3RhdGljJiZ3LmNhbGVuZGFyQ29udGFpbmVyLnBhcmVudE5vZGUpe3ZhciB0PXcuY2FsZW5kYXJDb250YWluZXIucGFyZW50Tm9kZTtpZih0Lmxhc3RDaGlsZCYmdC5yZW1vdmVDaGlsZCh0Lmxhc3RDaGlsZCksdC5wYXJlbnROb2RlKXtmb3IoO3QuZmlyc3RDaGlsZDspdC5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0LmZpcnN0Q2hpbGQsdCk7dC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpfX1lbHNlIHcuY2FsZW5kYXJDb250YWluZXIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh3LmNhbGVuZGFyQ29udGFpbmVyKTt3LmFsdElucHV0JiYody5pbnB1dC50eXBlPSJ0ZXh0Iix3LmFsdElucHV0LnBhcmVudE5vZGUmJncuYWx0SW5wdXQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh3LmFsdElucHV0KSxkZWxldGUgdy5hbHRJbnB1dCk7dy5pbnB1dCYmKHcuaW5wdXQudHlwZT13LmlucHV0Ll90eXBlLHcuaW5wdXQuY2xhc3NMaXN0LnJlbW92ZSgiZmxhdHBpY2tyLWlucHV0Iiksdy5pbnB1dC5yZW1vdmVBdHRyaWJ1dGUoInJlYWRvbmx5IikpO1siX3Nob3dUaW1lSW5wdXQiLCJsYXRlc3RTZWxlY3RlZERhdGVPYmoiLCJfaGlkZU5leHRNb250aEFycm93IiwiX2hpZGVQcmV2TW9udGhBcnJvdyIsIl9faGlkZU5leHRNb250aEFycm93IiwiX19oaWRlUHJldk1vbnRoQXJyb3ciLCJpc01vYmlsZSIsImlzT3BlbiIsInNlbGVjdGVkRGF0ZUVsZW0iLCJtaW5EYXRlSGFzVGltZSIsIm1heERhdGVIYXNUaW1lIiwiZGF5cyIsImRheXNDb250YWluZXIiLCJfaW5wdXQiLCJfcG9zaXRpb25FbGVtZW50IiwiaW5uZXJDb250YWluZXIiLCJyQ29udGFpbmVyIiwibW9udGhOYXYiLCJ0b2RheURhdGVFbGVtIiwiY2FsZW5kYXJDb250YWluZXIiLCJ3ZWVrZGF5Q29udGFpbmVyIiwicHJldk1vbnRoTmF2IiwibmV4dE1vbnRoTmF2IiwibW9udGhzRHJvcGRvd25Db250YWluZXIiLCJjdXJyZW50TW9udGhFbGVtZW50IiwiY3VycmVudFllYXJFbGVtZW50IiwibmF2aWdhdGlvbkN1cnJlbnRNb250aCIsInNlbGVjdGVkRGF0ZUVsZW0iLCJjb25maWciXS5mb3JFYWNoKChmdW5jdGlvbihlKXt0cnl7ZGVsZXRlIHdbZV19Y2F0Y2goZSl7fX0pKX0sdy5pc0VuYWJsZWQ9WCx3Lmp1bXBUb0RhdGU9UCx3Lm9wZW49ZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT10JiYodD13Ll9wb3NpdGlvbkVsZW1lbnQpO2lmKCEwPT09dy5pc01vYmlsZSl7aWYoZSl7ZS5wcmV2ZW50RGVmYXVsdCgpO3ZhciBuPWcoZSk7biYmbi5ibHVyKCl9cmV0dXJuIHZvaWQgMCE9PXcubW9iaWxlSW5wdXQmJih3Lm1vYmlsZUlucHV0LmZvY3VzKCksdy5tb2JpbGVJbnB1dC5jbGljaygpKSx2b2lkIHBlKCJvbk9wZW4iKX1pZih3Ll9pbnB1dC5kaXNhYmxlZHx8dy5jb25maWcuaW5saW5lKXJldHVybjt2YXIgYT13LmlzT3Blbjt3LmlzT3Blbj0hMCxhfHwody5jYWxlbmRhckNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJvcGVuIiksdy5faW5wdXQuY2xhc3NMaXN0LmFkZCgiYWN0aXZlIikscGUoIm9uT3BlbiIpLGNlKHQpKTshMD09PXcuY29uZmlnLmVuYWJsZVRpbWUmJiEwPT09dy5jb25maWcubm9DYWxlbmRhciYmKCExIT09dy5jb25maWcuYWxsb3dJbnB1dHx8dm9pZCAwIT09ZSYmdy50aW1lQ29udGFpbmVyLmNvbnRhaW5zKGUucmVsYXRlZFRhcmdldCl8fHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cmV0dXJuIHcuaG91ckVsZW1lbnQuc2VsZWN0KCl9KSw1MCkpfSx3LnJlZHJhdz1kZSx3LnNldD1mdW5jdGlvbihlLHQpe2lmKG51bGwhPT1lJiYib2JqZWN0Ij09dHlwZW9mIGUpZm9yKHZhciBhIGluIE9iamVjdC5hc3NpZ24ody5jb25maWcsZSksZSl2b2lkIDAhPT1mZVthXSYmZmVbYV0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUoKX0pKTtlbHNlIHcuY29uZmlnW2VdPXQsdm9pZCAwIT09ZmVbZV0\/ZmVbZV0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUoKX0pKTpuLmluZGV4T2YoZSk+LTEmJih3LmNvbmZpZ1tlXT1jKHQpKTt3LnJlZHJhdygpLGJlKCEwKX0sdy5zZXREYXRlPWZ1bmN0aW9uKGUsdCxuKXt2b2lkIDA9PT10JiYodD0hMSk7dm9pZCAwPT09biYmKG49dy5jb25maWcuZGF0ZUZvcm1hdCk7aWYoMCE9PWUmJiFlfHxlIGluc3RhbmNlb2YgQXJyYXkmJjA9PT1lLmxlbmd0aClyZXR1cm4gdy5jbGVhcih0KTttZShlLG4pLHcubGF0ZXN0U2VsZWN0ZWREYXRlT2JqPXcuc2VsZWN0ZWREYXRlc1t3LnNlbGVjdGVkRGF0ZXMubGVuZ3RoLTFdLHcucmVkcmF3KCksUCh2b2lkIDAsdCksXygpLDA9PT13LnNlbGVjdGVkRGF0ZXMubGVuZ3RoJiZ3LmNsZWFyKCExKTtiZSh0KSx0JiZwZSgib25DaGFuZ2UiKX0sdy50b2dnbGU9ZnVuY3Rpb24oZSl7aWYoITA9PT13LmlzT3BlbilyZXR1cm4gdy5jbG9zZSgpO3cub3BlbihlKX07dmFyIGZlPXtsb2NhbGU6W2xlLHpdLHNob3dNb250aHM6W3EsaywkXSxtaW5EYXRlOltQXSxtYXhEYXRlOltQXSxjbGlja09wZW5zOltmdW5jdGlvbigpeyEwPT09dy5jb25maWcuY2xpY2tPcGVucz8oQSh3Ll9pbnB1dCwiZm9jdXMiLHcub3BlbiksQSh3Ll9pbnB1dCwiY2xpY2siLHcub3BlbikpOih3Ll9pbnB1dC5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1cyIsdy5vcGVuKSx3Ll9pbnB1dC5yZW1vdmVFdmVudExpc3RlbmVyKCJjbGljayIsdy5vcGVuKSl9XX07ZnVuY3Rpb24gbWUoZSx0KXt2YXIgbj1bXTtpZihlIGluc3RhbmNlb2YgQXJyYXkpbj1lLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHcucGFyc2VEYXRlKGUsdCl9KSk7ZWxzZSBpZihlIGluc3RhbmNlb2YgRGF0ZXx8Im51bWJlciI9PXR5cGVvZiBlKW49W3cucGFyc2VEYXRlKGUsdCldO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBlKXN3aXRjaCh3LmNvbmZpZy5tb2RlKXtjYXNlInNpbmdsZSI6Y2FzZSJ0aW1lIjpuPVt3LnBhcnNlRGF0ZShlLHQpXTticmVhaztjYXNlIm11bHRpcGxlIjpuPWUuc3BsaXQody5jb25maWcuY29uanVuY3Rpb24pLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHcucGFyc2VEYXRlKGUsdCl9KSk7YnJlYWs7Y2FzZSJyYW5nZSI6bj1lLnNwbGl0KHcubDEwbi5yYW5nZVNlcGFyYXRvcikubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdy5wYXJzZURhdGUoZSx0KX0pKX1lbHNlIHcuY29uZmlnLmVycm9ySGFuZGxlcihuZXcgRXJyb3IoIkludmFsaWQgZGF0ZSBzdXBwbGllZDogIitKU09OLnN0cmluZ2lmeShlKSkpO3cuc2VsZWN0ZWREYXRlcz13LmNvbmZpZy5hbGxvd0ludmFsaWRQcmVsb2FkP246bi5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2YgRGF0ZSYmWChlLCExKX0pKSwicmFuZ2UiPT09dy5jb25maWcubW9kZSYmdy5zZWxlY3RlZERhdGVzLnNvcnQoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuZ2V0VGltZSgpLXQuZ2V0VGltZSgpfSkpfWZ1bmN0aW9uIGdlKGUpe3JldHVybiBlLnNsaWNlKCkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGV8fCJudW1iZXIiPT10eXBlb2YgZXx8ZSBpbnN0YW5jZW9mIERhdGU\/dy5wYXJzZURhdGUoZSx2b2lkIDAsITApOmUmJiJvYmplY3QiPT10eXBlb2YgZSYmZS5mcm9tJiZlLnRvP3tmcm9tOncucGFyc2VEYXRlKGUuZnJvbSx2b2lkIDApLHRvOncucGFyc2VEYXRlKGUudG8sdm9pZCAwKX06ZX0pKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlfSkpfWZ1bmN0aW9uIHBlKGUsdCl7aWYodm9pZCAwIT09dy5jb25maWcpe3ZhciBuPXcuY29uZmlnW2VdO2lmKHZvaWQgMCE9PW4mJm4ubGVuZ3RoPjApZm9yKHZhciBhPTA7blthXSYmYTxuLmxlbmd0aDthKyspblthXSh3LnNlbGVjdGVkRGF0ZXMsdy5pbnB1dC52YWx1ZSx3LHQpOyJvbkNoYW5nZSI9PT1lJiYody5pbnB1dC5kaXNwYXRjaEV2ZW50KGhlKCJjaGFuZ2UiKSksdy5pbnB1dC5kaXNwYXRjaEV2ZW50KGhlKCJpbnB1dCIpKSl9fWZ1bmN0aW9uIGhlKGUpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUV2ZW50KCJFdmVudCIpO3JldHVybiB0LmluaXRFdmVudChlLCEwLCEwKSx0fWZ1bmN0aW9uIHZlKGUpe2Zvcih2YXIgdD0wO3Q8dy5zZWxlY3RlZERhdGVzLmxlbmd0aDt0KyspaWYoMD09PU0ody5zZWxlY3RlZERhdGVzW3RdLGUpKXJldHVybiIiK3Q7cmV0dXJuITF9ZnVuY3Rpb24gRGUoKXt3LmNvbmZpZy5ub0NhbGVuZGFyfHx3LmlzTW9iaWxlfHwhdy5tb250aE5hdnx8KHcueWVhckVsZW1lbnRzLmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7dmFyIG49bmV3IERhdGUody5jdXJyZW50WWVhcix3LmN1cnJlbnRNb250aCwxKTtuLnNldE1vbnRoKHcuY3VycmVudE1vbnRoK3QpLHcuY29uZmlnLnNob3dNb250aHM+MXx8InN0YXRpYyI9PT13LmNvbmZpZy5tb250aFNlbGVjdG9yVHlwZT93Lm1vbnRoRWxlbWVudHNbdF0udGV4dENvbnRlbnQ9aChuLmdldE1vbnRoKCksdy5jb25maWcuc2hvcnRoYW5kQ3VycmVudE1vbnRoLHcubDEwbikrIiAiOncubW9udGhzRHJvcGRvd25Db250YWluZXIudmFsdWU9bi5nZXRNb250aCgpLnRvU3RyaW5nKCksZS52YWx1ZT1uLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKX0pKSx3Ll9oaWRlUHJldk1vbnRoQXJyb3c9dm9pZCAwIT09dy5jb25maWcubWluRGF0ZSYmKHcuY3VycmVudFllYXI9PT13LmNvbmZpZy5taW5EYXRlLmdldEZ1bGxZZWFyKCk\/dy5jdXJyZW50TW9udGg8PXcuY29uZmlnLm1pbkRhdGUuZ2V0TW9udGgoKTp3LmN1cnJlbnRZZWFyPHcuY29uZmlnLm1pbkRhdGUuZ2V0RnVsbFllYXIoKSksdy5faGlkZU5leHRNb250aEFycm93PXZvaWQgMCE9PXcuY29uZmlnLm1heERhdGUmJih3LmN1cnJlbnRZZWFyPT09dy5jb25maWcubWF4RGF0ZS5nZXRGdWxsWWVhcigpP3cuY3VycmVudE1vbnRoKzE+dy5jb25maWcubWF4RGF0ZS5nZXRNb250aCgpOncuY3VycmVudFllYXI+dy5jb25maWcubWF4RGF0ZS5nZXRGdWxsWWVhcigpKSl9ZnVuY3Rpb24gd2UoZSl7cmV0dXJuIHcuc2VsZWN0ZWREYXRlcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB3LmZvcm1hdERhdGUodCxlKX0pKS5maWx0ZXIoKGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4icmFuZ2UiIT09dy5jb25maWcubW9kZXx8dy5jb25maWcuZW5hYmxlVGltZXx8bi5pbmRleE9mKGUpPT09dH0pKS5qb2luKCJyYW5nZSIhPT13LmNvbmZpZy5tb2RlP3cuY29uZmlnLmNvbmp1bmN0aW9uOncubDEwbi5yYW5nZVNlcGFyYXRvcil9ZnVuY3Rpb24gYmUoZSl7dm9pZCAwPT09ZSYmKGU9ITApLHZvaWQgMCE9PXcubW9iaWxlSW5wdXQmJncubW9iaWxlRm9ybWF0U3RyJiYody5tb2JpbGVJbnB1dC52YWx1ZT12b2lkIDAhPT13LmxhdGVzdFNlbGVjdGVkRGF0ZU9iaj93LmZvcm1hdERhdGUody5sYXRlc3RTZWxlY3RlZERhdGVPYmosdy5tb2JpbGVGb3JtYXRTdHIpOiIiKSx3LmlucHV0LnZhbHVlPXdlKHcuY29uZmlnLmRhdGVGb3JtYXQpLHZvaWQgMCE9PXcuYWx0SW5wdXQmJih3LmFsdElucHV0LnZhbHVlPXdlKHcuY29uZmlnLmFsdEZvcm1hdCkpLCExIT09ZSYmcGUoIm9uVmFsdWVVcGRhdGUiKX1mdW5jdGlvbiBDZShlKXt2YXIgdD1nKGUpLG49dy5wcmV2TW9udGhOYXYuY29udGFpbnModCksYT13Lm5leHRNb250aE5hdi5jb250YWlucyh0KTtufHxhP0cobj8tMToxKTp3LnllYXJFbGVtZW50cy5pbmRleE9mKHQpPj0wP3Quc2VsZWN0KCk6dC5jbGFzc0xpc3QuY29udGFpbnMoImFycm93VXAiKT93LmNoYW5nZVllYXIody5jdXJyZW50WWVhcisxKTp0LmNsYXNzTGlzdC5jb250YWlucygiYXJyb3dEb3duIikmJncuY2hhbmdlWWVhcih3LmN1cnJlbnRZZWFyLTEpfXJldHVybiBmdW5jdGlvbigpe3cuZWxlbWVudD13LmlucHV0PXAsdy5pc09wZW49ITEsZnVuY3Rpb24oKXt2YXIgdD1bIndyYXAiLCJ3ZWVrTnVtYmVycyIsImFsbG93SW5wdXQiLCJhbGxvd0ludmFsaWRQcmVsb2FkIiwiY2xpY2tPcGVucyIsInRpbWVfMjRociIsImVuYWJsZVRpbWUiLCJub0NhbGVuZGFyIiwiYWx0SW5wdXQiLCJzaG9ydGhhbmRDdXJyZW50TW9udGgiLCJpbmxpbmUiLCJzdGF0aWMiLCJlbmFibGVTZWNvbmRzIiwiZGlzYWJsZU1vYmlsZSJdLGk9ZShlKHt9LEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocC5kYXRhc2V0fHx7fSkpKSx2KSxvPXt9O3cuY29uZmlnLnBhcnNlRGF0ZT1pLnBhcnNlRGF0ZSx3LmNvbmZpZy5mb3JtYXREYXRlPWkuZm9ybWF0RGF0ZSxPYmplY3QuZGVmaW5lUHJvcGVydHkody5jb25maWcsImVuYWJsZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB3LmNvbmZpZy5fZW5hYmxlfSxzZXQ6ZnVuY3Rpb24oZSl7dy5jb25maWcuX2VuYWJsZT1nZShlKX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkody5jb25maWcsImRpc2FibGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdy5jb25maWcuX2Rpc2FibGV9LHNldDpmdW5jdGlvbihlKXt3LmNvbmZpZy5fZGlzYWJsZT1nZShlKX19KTt2YXIgcj0idGltZSI9PT1pLm1vZGU7aWYoIWkuZGF0ZUZvcm1hdCYmKGkuZW5hYmxlVGltZXx8cikpe3ZhciBsPVQuZGVmYXVsdENvbmZpZy5kYXRlRm9ybWF0fHxhLmRhdGVGb3JtYXQ7by5kYXRlRm9ybWF0PWkubm9DYWxlbmRhcnx8cj8iSDppIisoaS5lbmFibGVTZWNvbmRzPyI6UyI6IiIpOmwrIiBIOmkiKyhpLmVuYWJsZVNlY29uZHM\/IjpTIjoiIil9aWYoaS5hbHRJbnB1dCYmKGkuZW5hYmxlVGltZXx8cikmJiFpLmFsdEZvcm1hdCl7dmFyIGQ9VC5kZWZhdWx0Q29uZmlnLmFsdEZvcm1hdHx8YS5hbHRGb3JtYXQ7by5hbHRGb3JtYXQ9aS5ub0NhbGVuZGFyfHxyPyJoOmkiKyhpLmVuYWJsZVNlY29uZHM\/IjpTIEsiOiIgSyIpOmQrIiBoOmkiKyhpLmVuYWJsZVNlY29uZHM\/IjpTIjoiIikrIiBLIn1PYmplY3QuZGVmaW5lUHJvcGVydHkody5jb25maWcsIm1pbkRhdGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdy5jb25maWcuX21pbkRhdGV9LHNldDpvZSgibWluIil9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkody5jb25maWcsIm1heERhdGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdy5jb25maWcuX21heERhdGV9LHNldDpvZSgibWF4Iil9KTt2YXIgcz1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7dy5jb25maWdbIm1pbiI9PT1lPyJfbWluVGltZSI6Il9tYXhUaW1lIl09dy5wYXJzZURhdGUodCwiSDppOlMiKX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh3LmNvbmZpZywibWluVGltZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB3LmNvbmZpZy5fbWluVGltZX0sc2V0OnMoIm1pbiIpfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHcuY29uZmlnLCJtYXhUaW1lIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHcuY29uZmlnLl9tYXhUaW1lfSxzZXQ6cygibWF4Iil9KSwidGltZSI9PT1pLm1vZGUmJih3LmNvbmZpZy5ub0NhbGVuZGFyPSEwLHcuY29uZmlnLmVuYWJsZVRpbWU9ITApO09iamVjdC5hc3NpZ24ody5jb25maWcsbyxpKTtmb3IodmFyIHU9MDt1PHQubGVuZ3RoO3UrKyl3LmNvbmZpZ1t0W3VdXT0hMD09PXcuY29uZmlnW3RbdV1dfHwidHJ1ZSI9PT13LmNvbmZpZ1t0W3VdXTtuLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PXcuY29uZmlnW2VdfSkpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3cuY29uZmlnW2VdPWMody5jb25maWdbZV18fFtdKS5tYXAoRSl9KSksdy5pc01vYmlsZT0hdy5jb25maWcuZGlzYWJsZU1vYmlsZSYmIXcuY29uZmlnLmlubGluZSYmInNpbmdsZSI9PT13LmNvbmZpZy5tb2RlJiYhdy5jb25maWcuZGlzYWJsZS5sZW5ndGgmJiF3LmNvbmZpZy5lbmFibGUmJiF3LmNvbmZpZy53ZWVrTnVtYmVycyYmL0FuZHJvaWR8d2ViT1N8aVBob25lfGlQYWR8aVBvZHxCbGFja0JlcnJ5fElFTW9iaWxlfE9wZXJhIE1pbmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO2Zvcih1PTA7dTx3LmNvbmZpZy5wbHVnaW5zLmxlbmd0aDt1Kyspe3ZhciBmPXcuY29uZmlnLnBsdWdpbnNbdV0odyl8fHt9O2Zvcih2YXIgbSBpbiBmKW4uaW5kZXhPZihtKT4tMT93LmNvbmZpZ1ttXT1jKGZbbV0pLm1hcChFKS5jb25jYXQody5jb25maWdbbV0pOnZvaWQgMD09PWlbbV0mJih3LmNvbmZpZ1ttXT1mW21dKX1pLmFsdElucHV0Q2xhc3N8fCh3LmNvbmZpZy5hbHRJbnB1dENsYXNzPXJlKCkuY2xhc3NOYW1lKyIgIit3LmNvbmZpZy5hbHRJbnB1dENsYXNzKTtwZSgib25QYXJzZUNvbmZpZyIpfSgpLGxlKCksZnVuY3Rpb24oKXtpZih3LmlucHV0PXJlKCksIXcuaW5wdXQpcmV0dXJuIHZvaWQgdy5jb25maWcuZXJyb3JIYW5kbGVyKG5ldyBFcnJvcigiSW52YWxpZCBpbnB1dCBlbGVtZW50IHNwZWNpZmllZCIpKTt3LmlucHV0Ll90eXBlPXcuaW5wdXQudHlwZSx3LmlucHV0LnR5cGU9InRleHQiLHcuaW5wdXQuY2xhc3NMaXN0LmFkZCgiZmxhdHBpY2tyLWlucHV0Iiksdy5faW5wdXQ9dy5pbnB1dCx3LmNvbmZpZy5hbHRJbnB1dCYmKHcuYWx0SW5wdXQ9cyh3LmlucHV0Lm5vZGVOYW1lLHcuY29uZmlnLmFsdElucHV0Q2xhc3MpLHcuX2lucHV0PXcuYWx0SW5wdXQsdy5hbHRJbnB1dC5wbGFjZWhvbGRlcj13LmlucHV0LnBsYWNlaG9sZGVyLHcuYWx0SW5wdXQuZGlzYWJsZWQ9dy5pbnB1dC5kaXNhYmxlZCx3LmFsdElucHV0LnJlcXVpcmVkPXcuaW5wdXQucmVxdWlyZWQsdy5hbHRJbnB1dC50YWJJbmRleD13LmlucHV0LnRhYkluZGV4LHcuYWx0SW5wdXQudHlwZT0idGV4dCIsdy5pbnB1dC5zZXRBdHRyaWJ1dGUoInR5cGUiLCJoaWRkZW4iKSwhdy5jb25maWcuc3RhdGljJiZ3LmlucHV0LnBhcmVudE5vZGUmJncuaW5wdXQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUody5hbHRJbnB1dCx3LmlucHV0Lm5leHRTaWJsaW5nKSk7dy5jb25maWcuYWxsb3dJbnB1dHx8dy5faW5wdXQuc2V0QXR0cmlidXRlKCJyZWFkb25seSIsInJlYWRvbmx5Iik7dy5fcG9zaXRpb25FbGVtZW50PXcuY29uZmlnLnBvc2l0aW9uRWxlbWVudHx8dy5faW5wdXR9KCksZnVuY3Rpb24oKXt3LnNlbGVjdGVkRGF0ZXM9W10sdy5ub3c9dy5wYXJzZURhdGUody5jb25maWcubm93KXx8bmV3IERhdGU7dmFyIGU9dy5jb25maWcuZGVmYXVsdERhdGV8fCgiSU5QVVQiIT09dy5pbnB1dC5ub2RlTmFtZSYmIlRFWFRBUkVBIiE9PXcuaW5wdXQubm9kZU5hbWV8fCF3LmlucHV0LnBsYWNlaG9sZGVyfHx3LmlucHV0LnZhbHVlIT09dy5pbnB1dC5wbGFjZWhvbGRlcj93LmlucHV0LnZhbHVlOm51bGwpO2UmJm1lKGUsdy5jb25maWcuZGF0ZUZvcm1hdCk7dy5faW5pdGlhbERhdGU9dy5zZWxlY3RlZERhdGVzLmxlbmd0aD4wP3cuc2VsZWN0ZWREYXRlc1swXTp3LmNvbmZpZy5taW5EYXRlJiZ3LmNvbmZpZy5taW5EYXRlLmdldFRpbWUoKT53Lm5vdy5nZXRUaW1lKCk\/dy5jb25maWcubWluRGF0ZTp3LmNvbmZpZy5tYXhEYXRlJiZ3LmNvbmZpZy5tYXhEYXRlLmdldFRpbWUoKTx3Lm5vdy5nZXRUaW1lKCk\/dy5jb25maWcubWF4RGF0ZTp3Lm5vdyx3LmN1cnJlbnRZZWFyPXcuX2luaXRpYWxEYXRlLmdldEZ1bGxZZWFyKCksdy5jdXJyZW50TW9udGg9dy5faW5pdGlhbERhdGUuZ2V0TW9udGgoKSx3LnNlbGVjdGVkRGF0ZXMubGVuZ3RoPjAmJih3LmxhdGVzdFNlbGVjdGVkRGF0ZU9iaj13LnNlbGVjdGVkRGF0ZXNbMF0pO3ZvaWQgMCE9PXcuY29uZmlnLm1pblRpbWUmJih3LmNvbmZpZy5taW5UaW1lPXcucGFyc2VEYXRlKHcuY29uZmlnLm1pblRpbWUsIkg6aSIpKTt2b2lkIDAhPT13LmNvbmZpZy5tYXhUaW1lJiYody5jb25maWcubWF4VGltZT13LnBhcnNlRGF0ZSh3LmNvbmZpZy5tYXhUaW1lLCJIOmkiKSk7dy5taW5EYXRlSGFzVGltZT0hIXcuY29uZmlnLm1pbkRhdGUmJih3LmNvbmZpZy5taW5EYXRlLmdldEhvdXJzKCk+MHx8dy5jb25maWcubWluRGF0ZS5nZXRNaW51dGVzKCk+MHx8dy5jb25maWcubWluRGF0ZS5nZXRTZWNvbmRzKCk+MCksdy5tYXhEYXRlSGFzVGltZT0hIXcuY29uZmlnLm1heERhdGUmJih3LmNvbmZpZy5tYXhEYXRlLmdldEhvdXJzKCk+MHx8dy5jb25maWcubWF4RGF0ZS5nZXRNaW51dGVzKCk+MHx8dy5jb25maWcubWF4RGF0ZS5nZXRTZWNvbmRzKCk+MCl9KCksdy51dGlscz17Z2V0RGF5c0luTW9udGg6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9dy5jdXJyZW50TW9udGgpLHZvaWQgMD09PXQmJih0PXcuY3VycmVudFllYXIpLDE9PT1lJiYodCU0PT0wJiZ0JTEwMCE9MHx8dCU0MDA9PTApPzI5OncubDEwbi5kYXlzSW5Nb250aFtlXX19LHcuaXNNb2JpbGV8fGZ1bmN0aW9uKCl7dmFyIGU9d2luZG93LmRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtpZih3LmNhbGVuZGFyQ29udGFpbmVyPXMoImRpdiIsImZsYXRwaWNrci1jYWxlbmRhciIpLHcuY2FsZW5kYXJDb250YWluZXIudGFiSW5kZXg9LTEsIXcuY29uZmlnLm5vQ2FsZW5kYXIpe2lmKGUuYXBwZW5kQ2hpbGQoKHcubW9udGhOYXY9cygiZGl2IiwiZmxhdHBpY2tyLW1vbnRocyIpLHcueWVhckVsZW1lbnRzPVtdLHcubW9udGhFbGVtZW50cz1bXSx3LnByZXZNb250aE5hdj1zKCJzcGFuIiwiZmxhdHBpY2tyLXByZXYtbW9udGgiKSx3LnByZXZNb250aE5hdi5pbm5lckhUTUw9dy5jb25maWcucHJldkFycm93LHcubmV4dE1vbnRoTmF2PXMoInNwYW4iLCJmbGF0cGlja3ItbmV4dC1tb250aCIpLHcubmV4dE1vbnRoTmF2LmlubmVySFRNTD13LmNvbmZpZy5uZXh0QXJyb3cscSgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3LCJfaGlkZVByZXZNb250aEFycm93Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHcuX19oaWRlUHJldk1vbnRoQXJyb3d9LHNldDpmdW5jdGlvbihlKXt3Ll9faGlkZVByZXZNb250aEFycm93IT09ZSYmKGQody5wcmV2TW9udGhOYXYsImZsYXRwaWNrci1kaXNhYmxlZCIsZSksdy5fX2hpZGVQcmV2TW9udGhBcnJvdz1lKX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodywiX2hpZGVOZXh0TW9udGhBcnJvdyIse2dldDpmdW5jdGlvbigpe3JldHVybiB3Ll9faGlkZU5leHRNb250aEFycm93fSxzZXQ6ZnVuY3Rpb24oZSl7dy5fX2hpZGVOZXh0TW9udGhBcnJvdyE9PWUmJihkKHcubmV4dE1vbnRoTmF2LCJmbGF0cGlja3ItZGlzYWJsZWQiLGUpLHcuX19oaWRlTmV4dE1vbnRoQXJyb3c9ZSl9fSksdy5jdXJyZW50WWVhckVsZW1lbnQ9dy55ZWFyRWxlbWVudHNbMF0sRGUoKSx3Lm1vbnRoTmF2KSksdy5pbm5lckNvbnRhaW5lcj1zKCJkaXYiLCJmbGF0cGlja3ItaW5uZXJDb250YWluZXIiKSx3LmNvbmZpZy53ZWVrTnVtYmVycyl7dmFyIHQ9ZnVuY3Rpb24oKXt3LmNhbGVuZGFyQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoImhhc1dlZWtzIik7dmFyIGU9cygiZGl2IiwiZmxhdHBpY2tyLXdlZWt3cmFwcGVyIik7ZS5hcHBlbmRDaGlsZChzKCJzcGFuIiwiZmxhdHBpY2tyLXdlZWtkYXkiLHcubDEwbi53ZWVrQWJicmV2aWF0aW9uKSk7dmFyIHQ9cygiZGl2IiwiZmxhdHBpY2tyLXdlZWtzIik7cmV0dXJuIGUuYXBwZW5kQ2hpbGQodCkse3dlZWtXcmFwcGVyOmUsd2Vla051bWJlcnM6dH19KCksbj10LndlZWtXcmFwcGVyLGE9dC53ZWVrTnVtYmVyczt3LmlubmVyQ29udGFpbmVyLmFwcGVuZENoaWxkKG4pLHcud2Vla051bWJlcnM9YSx3LndlZWtXcmFwcGVyPW59dy5yQ29udGFpbmVyPXMoImRpdiIsImZsYXRwaWNrci1yQ29udGFpbmVyIiksdy5yQ29udGFpbmVyLmFwcGVuZENoaWxkKCQoKSksdy5kYXlzQ29udGFpbmVyfHwody5kYXlzQ29udGFpbmVyPXMoImRpdiIsImZsYXRwaWNrci1kYXlzIiksdy5kYXlzQ29udGFpbmVyLnRhYkluZGV4PS0xKSxKKCksdy5yQ29udGFpbmVyLmFwcGVuZENoaWxkKHcuZGF5c0NvbnRhaW5lciksdy5pbm5lckNvbnRhaW5lci5hcHBlbmRDaGlsZCh3LnJDb250YWluZXIpLGUuYXBwZW5kQ2hpbGQody5pbm5lckNvbnRhaW5lcil9dy5jb25maWcuZW5hYmxlVGltZSYmZS5hcHBlbmRDaGlsZChmdW5jdGlvbigpe3cuY2FsZW5kYXJDb250YWluZXIuY2xhc3NMaXN0LmFkZCgiaGFzVGltZSIpLHcuY29uZmlnLm5vQ2FsZW5kYXImJncuY2FsZW5kYXJDb250YWluZXIuY2xhc3NMaXN0LmFkZCgibm9DYWxlbmRhciIpO3ZhciBlPXgody5jb25maWcpO3cudGltZUNvbnRhaW5lcj1zKCJkaXYiLCJmbGF0cGlja3ItdGltZSIpLHcudGltZUNvbnRhaW5lci50YWJJbmRleD0tMTt2YXIgdD1zKCJzcGFuIiwiZmxhdHBpY2tyLXRpbWUtc2VwYXJhdG9yIiwiOiIpLG49bSgiZmxhdHBpY2tyLWhvdXIiLHsiYXJpYS1sYWJlbCI6dy5sMTBuLmhvdXJBcmlhTGFiZWx9KTt3LmhvdXJFbGVtZW50PW4uZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0IilbMF07dmFyIGE9bSgiZmxhdHBpY2tyLW1pbnV0ZSIseyJhcmlhLWxhYmVsIjp3LmwxMG4ubWludXRlQXJpYUxhYmVsfSk7dy5taW51dGVFbGVtZW50PWEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0IilbMF0sdy5ob3VyRWxlbWVudC50YWJJbmRleD13Lm1pbnV0ZUVsZW1lbnQudGFiSW5kZXg9LTEsdy5ob3VyRWxlbWVudC52YWx1ZT1vKHcubGF0ZXN0U2VsZWN0ZWREYXRlT2JqP3cubGF0ZXN0U2VsZWN0ZWREYXRlT2JqLmdldEhvdXJzKCk6dy5jb25maWcudGltZV8yNGhyP2UuaG91cnM6ZnVuY3Rpb24oZSl7c3dpdGNoKGUlMjQpe2Nhc2UgMDpjYXNlIDEyOnJldHVybiAxMjtkZWZhdWx0OnJldHVybiBlJTEyfX0oZS5ob3VycykpLHcubWludXRlRWxlbWVudC52YWx1ZT1vKHcubGF0ZXN0U2VsZWN0ZWREYXRlT2JqP3cubGF0ZXN0U2VsZWN0ZWREYXRlT2JqLmdldE1pbnV0ZXMoKTplLm1pbnV0ZXMpLHcuaG91ckVsZW1lbnQuc2V0QXR0cmlidXRlKCJzdGVwIix3LmNvbmZpZy5ob3VySW5jcmVtZW50LnRvU3RyaW5nKCkpLHcubWludXRlRWxlbWVudC5zZXRBdHRyaWJ1dGUoInN0ZXAiLHcuY29uZmlnLm1pbnV0ZUluY3JlbWVudC50b1N0cmluZygpKSx3LmhvdXJFbGVtZW50LnNldEF0dHJpYnV0ZSgibWluIix3LmNvbmZpZy50aW1lXzI0aHI\/IjAiOiIxIiksdy5ob3VyRWxlbWVudC5zZXRBdHRyaWJ1dGUoIm1heCIsdy5jb25maWcudGltZV8yNGhyPyIyMyI6IjEyIiksdy5ob3VyRWxlbWVudC5zZXRBdHRyaWJ1dGUoIm1heGxlbmd0aCIsIjIiKSx3Lm1pbnV0ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJtaW4iLCIwIiksdy5taW51dGVFbGVtZW50LnNldEF0dHJpYnV0ZSgibWF4IiwiNTkiKSx3Lm1pbnV0ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJtYXhsZW5ndGgiLCIyIiksdy50aW1lQ29udGFpbmVyLmFwcGVuZENoaWxkKG4pLHcudGltZUNvbnRhaW5lci5hcHBlbmRDaGlsZCh0KSx3LnRpbWVDb250YWluZXIuYXBwZW5kQ2hpbGQoYSksdy5jb25maWcudGltZV8yNGhyJiZ3LnRpbWVDb250YWluZXIuY2xhc3NMaXN0LmFkZCgidGltZTI0aHIiKTtpZih3LmNvbmZpZy5lbmFibGVTZWNvbmRzKXt3LnRpbWVDb250YWluZXIuY2xhc3NMaXN0LmFkZCgiaGFzU2Vjb25kcyIpO3ZhciBpPW0oImZsYXRwaWNrci1zZWNvbmQiKTt3LnNlY29uZEVsZW1lbnQ9aS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXSx3LnNlY29uZEVsZW1lbnQudmFsdWU9byh3LmxhdGVzdFNlbGVjdGVkRGF0ZU9iaj93LmxhdGVzdFNlbGVjdGVkRGF0ZU9iai5nZXRTZWNvbmRzKCk6ZS5zZWNvbmRzKSx3LnNlY29uZEVsZW1lbnQuc2V0QXR0cmlidXRlKCJzdGVwIix3Lm1pbnV0ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCJzdGVwIikpLHcuc2Vjb25kRWxlbWVudC5zZXRBdHRyaWJ1dGUoIm1pbiIsIjAiKSx3LnNlY29uZEVsZW1lbnQuc2V0QXR0cmlidXRlKCJtYXgiLCI1OSIpLHcuc2Vjb25kRWxlbWVudC5zZXRBdHRyaWJ1dGUoIm1heGxlbmd0aCIsIjIiKSx3LnRpbWVDb250YWluZXIuYXBwZW5kQ2hpbGQocygic3BhbiIsImZsYXRwaWNrci10aW1lLXNlcGFyYXRvciIsIjoiKSksdy50aW1lQ29udGFpbmVyLmFwcGVuZENoaWxkKGkpfXcuY29uZmlnLnRpbWVfMjRocnx8KHcuYW1QTT1zKCJzcGFuIiwiZmxhdHBpY2tyLWFtLXBtIix3LmwxMG4uYW1QTVtyKCh3LmxhdGVzdFNlbGVjdGVkRGF0ZU9iaj93LmhvdXJFbGVtZW50LnZhbHVlOncuY29uZmlnLmRlZmF1bHRIb3VyKT4xMSldKSx3LmFtUE0udGl0bGU9dy5sMTBuLnRvZ2dsZVRpdGxlLHcuYW1QTS50YWJJbmRleD0tMSx3LnRpbWVDb250YWluZXIuYXBwZW5kQ2hpbGQody5hbVBNKSk7cmV0dXJuIHcudGltZUNvbnRhaW5lcn0oKSk7ZCh3LmNhbGVuZGFyQ29udGFpbmVyLCJyYW5nZU1vZGUiLCJyYW5nZSI9PT13LmNvbmZpZy5tb2RlKSxkKHcuY2FsZW5kYXJDb250YWluZXIsImFuaW1hdGUiLCEwPT09dy5jb25maWcuYW5pbWF0ZSksZCh3LmNhbGVuZGFyQ29udGFpbmVyLCJtdWx0aU1vbnRoIix3LmNvbmZpZy5zaG93TW9udGhzPjEpLHcuY2FsZW5kYXJDb250YWluZXIuYXBwZW5kQ2hpbGQoZSk7dmFyIGk9dm9pZCAwIT09dy5jb25maWcuYXBwZW5kVG8mJnZvaWQgMCE9PXcuY29uZmlnLmFwcGVuZFRvLm5vZGVUeXBlO2lmKCh3LmNvbmZpZy5pbmxpbmV8fHcuY29uZmlnLnN0YXRpYykmJih3LmNhbGVuZGFyQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQody5jb25maWcuaW5saW5lPyJpbmxpbmUiOiJzdGF0aWMiKSx3LmNvbmZpZy5pbmxpbmUmJighaSYmdy5lbGVtZW50LnBhcmVudE5vZGU\/dy5lbGVtZW50LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHcuY2FsZW5kYXJDb250YWluZXIsdy5faW5wdXQubmV4dFNpYmxpbmcpOnZvaWQgMCE9PXcuY29uZmlnLmFwcGVuZFRvJiZ3LmNvbmZpZy5hcHBlbmRUby5hcHBlbmRDaGlsZCh3LmNhbGVuZGFyQ29udGFpbmVyKSksdy5jb25maWcuc3RhdGljKSl7dmFyIGw9cygiZGl2IiwiZmxhdHBpY2tyLXdyYXBwZXIiKTt3LmVsZW1lbnQucGFyZW50Tm9kZSYmdy5lbGVtZW50LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGwsdy5lbGVtZW50KSxsLmFwcGVuZENoaWxkKHcuZWxlbWVudCksdy5hbHRJbnB1dCYmbC5hcHBlbmRDaGlsZCh3LmFsdElucHV0KSxsLmFwcGVuZENoaWxkKHcuY2FsZW5kYXJDb250YWluZXIpfXcuY29uZmlnLnN0YXRpY3x8dy5jb25maWcuaW5saW5lfHwodm9pZCAwIT09dy5jb25maWcuYXBwZW5kVG8\/dy5jb25maWcuYXBwZW5kVG86d2luZG93LmRvY3VtZW50LmJvZHkpLmFwcGVuZENoaWxkKHcuY2FsZW5kYXJDb250YWluZXIpfSgpLGZ1bmN0aW9uKCl7dy5jb25maWcud3JhcCYmWyJvcGVuIiwiY2xvc2UiLCJ0b2dnbGUiLCJjbGVhciJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe0FycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwody5lbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLSIrZSsiXSIpLChmdW5jdGlvbih0KXtyZXR1cm4gQSh0LCJjbGljayIsd1tlXSl9KSl9KSk7aWYody5pc01vYmlsZSlyZXR1cm4gdm9pZCBmdW5jdGlvbigpe3ZhciBlPXcuY29uZmlnLmVuYWJsZVRpbWU\/dy5jb25maWcubm9DYWxlbmRhcj8idGltZSI6ImRhdGV0aW1lLWxvY2FsIjoiZGF0ZSI7dy5tb2JpbGVJbnB1dD1zKCJpbnB1dCIsdy5pbnB1dC5jbGFzc05hbWUrIiBmbGF0cGlja3ItbW9iaWxlIiksdy5tb2JpbGVJbnB1dC50YWJJbmRleD0xLHcubW9iaWxlSW5wdXQudHlwZT1lLHcubW9iaWxlSW5wdXQuZGlzYWJsZWQ9dy5pbnB1dC5kaXNhYmxlZCx3Lm1vYmlsZUlucHV0LnJlcXVpcmVkPXcuaW5wdXQucmVxdWlyZWQsdy5tb2JpbGVJbnB1dC5wbGFjZWhvbGRlcj13LmlucHV0LnBsYWNlaG9sZGVyLHcubW9iaWxlRm9ybWF0U3RyPSJkYXRldGltZS1sb2NhbCI9PT1lPyJZLW0tZFxcVEg6aTpTIjoiZGF0ZSI9PT1lPyJZLW0tZCI6Ikg6aTpTIix3LnNlbGVjdGVkRGF0ZXMubGVuZ3RoPjAmJih3Lm1vYmlsZUlucHV0LmRlZmF1bHRWYWx1ZT13Lm1vYmlsZUlucHV0LnZhbHVlPXcuZm9ybWF0RGF0ZSh3LnNlbGVjdGVkRGF0ZXNbMF0sdy5tb2JpbGVGb3JtYXRTdHIpKTt3LmNvbmZpZy5taW5EYXRlJiYody5tb2JpbGVJbnB1dC5taW49dy5mb3JtYXREYXRlKHcuY29uZmlnLm1pbkRhdGUsIlktbS1kIikpO3cuY29uZmlnLm1heERhdGUmJih3Lm1vYmlsZUlucHV0Lm1heD13LmZvcm1hdERhdGUody5jb25maWcubWF4RGF0ZSwiWS1tLWQiKSk7dy5pbnB1dC5nZXRBdHRyaWJ1dGUoInN0ZXAiKSYmKHcubW9iaWxlSW5wdXQuc3RlcD1TdHJpbmcody5pbnB1dC5nZXRBdHRyaWJ1dGUoInN0ZXAiKSkpO3cuaW5wdXQudHlwZT0iaGlkZGVuIix2b2lkIDAhPT13LmFsdElucHV0JiYody5hbHRJbnB1dC50eXBlPSJoaWRkZW4iKTt0cnl7dy5pbnB1dC5wYXJlbnROb2RlJiZ3LmlucHV0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHcubW9iaWxlSW5wdXQsdy5pbnB1dC5uZXh0U2libGluZyl9Y2F0Y2goZSl7fUEody5tb2JpbGVJbnB1dCwiY2hhbmdlIiwoZnVuY3Rpb24oZSl7dy5zZXREYXRlKGcoZSkudmFsdWUsITEsdy5tb2JpbGVGb3JtYXRTdHIpLHBlKCJvbkNoYW5nZSIpLHBlKCJvbkNsb3NlIil9KSl9KCk7dmFyIGU9bChpZSw1MCk7dy5fZGVib3VuY2VkQ2hhbmdlPWwoTiwzMDApLHcuZGF5c0NvbnRhaW5lciYmIS9pUGhvbmV8aVBhZHxpUG9kL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSYmQSh3LmRheXNDb250YWluZXIsIm1vdXNlb3ZlciIsKGZ1bmN0aW9uKGUpeyJyYW5nZSI9PT13LmNvbmZpZy5tb2RlJiZhZShnKGUpKX0pKTtBKHdpbmRvdy5kb2N1bWVudC5ib2R5LCJrZXlkb3duIixuZSksdy5jb25maWcuaW5saW5lfHx3LmNvbmZpZy5zdGF0aWN8fEEod2luZG93LCJyZXNpemUiLGUpO3ZvaWQgMCE9PXdpbmRvdy5vbnRvdWNoc3RhcnQ\/QSh3aW5kb3cuZG9jdW1lbnQsInRvdWNoc3RhcnQiLFopOkEod2luZG93LmRvY3VtZW50LCJtb3VzZWRvd24iLFopO0Eod2luZG93LmRvY3VtZW50LCJmb2N1cyIsWix7Y2FwdHVyZTohMH0pLCEwPT09dy5jb25maWcuY2xpY2tPcGVucyYmKEEody5faW5wdXQsImZvY3VzIix3Lm9wZW4pLEEody5faW5wdXQsImNsaWNrIix3Lm9wZW4pKTt2b2lkIDAhPT13LmRheXNDb250YWluZXImJihBKHcubW9udGhOYXYsImNsaWNrIixDZSksQSh3Lm1vbnRoTmF2LFsia2V5dXAiLCJpbmNyZW1lbnQiXSxGKSxBKHcuZGF5c0NvbnRhaW5lciwiY2xpY2siLHVlKSk7aWYodm9pZCAwIT09dy50aW1lQ29udGFpbmVyJiZ2b2lkIDAhPT13Lm1pbnV0ZUVsZW1lbnQmJnZvaWQgMCE9PXcuaG91ckVsZW1lbnQpe3ZhciB0PWZ1bmN0aW9uKGUpe3JldHVybiBnKGUpLnNlbGVjdCgpfTtBKHcudGltZUNvbnRhaW5lcixbImluY3JlbWVudCJdLEkpLEEody50aW1lQ29udGFpbmVyLCJibHVyIixJLHtjYXB0dXJlOiEwfSksQSh3LnRpbWVDb250YWluZXIsImNsaWNrIixZKSxBKFt3LmhvdXJFbGVtZW50LHcubWludXRlRWxlbWVudF0sWyJmb2N1cyIsImNsaWNrIl0sdCksdm9pZCAwIT09dy5zZWNvbmRFbGVtZW50JiZBKHcuc2Vjb25kRWxlbWVudCwiZm9jdXMiLChmdW5jdGlvbigpe3JldHVybiB3LnNlY29uZEVsZW1lbnQmJncuc2Vjb25kRWxlbWVudC5zZWxlY3QoKX0pKSx2b2lkIDAhPT13LmFtUE0mJkEody5hbVBNLCJjbGljayIsKGZ1bmN0aW9uKGUpe0koZSksTigpfSkpfXcuY29uZmlnLmFsbG93SW5wdXQmJkEody5faW5wdXQsImJsdXIiLHRlKX0oKSwody5zZWxlY3RlZERhdGVzLmxlbmd0aHx8dy5jb25maWcubm9DYWxlbmRhcikmJih3LmNvbmZpZy5lbmFibGVUaW1lJiZfKHcuY29uZmlnLm5vQ2FsZW5kYXI\/dy5sYXRlc3RTZWxlY3RlZERhdGVPYmo6dm9pZCAwKSxiZSghMSkpLGsoKTt2YXIgdD0vXigoPyFjaHJvbWV8YW5kcm9pZCkuKSpzYWZhcmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpOyF3LmlzTW9iaWxlJiZ0JiZjZSgpLHBlKCJvblJlYWR5Iil9KCksd31mdW5jdGlvbiBrKGUsdCl7Zm9yKHZhciBuPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUpLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudH0pKSxhPVtdLGk9MDtpPG4ubGVuZ3RoO2krKyl7dmFyIG89bltpXTt0cnl7aWYobnVsbCE9PW8uZ2V0QXR0cmlidXRlKCJkYXRhLWZwLW9taXQiKSljb250aW51ZTt2b2lkIDAhPT1vLl9mbGF0cGlja3ImJihvLl9mbGF0cGlja3IuZGVzdHJveSgpLG8uX2ZsYXRwaWNrcj12b2lkIDApLG8uX2ZsYXRwaWNrcj1FKG8sdHx8e30pLGEucHVzaChvLl9mbGF0cGlja3IpfWNhdGNoKGUpe2NvbnNvbGUuZXJyb3IoZSl9fXJldHVybiAxPT09YS5sZW5ndGg\/YVswXTphfSJ1bmRlZmluZWQiIT10eXBlb2YgSFRNTEVsZW1lbnQmJiJ1bmRlZmluZWQiIT10eXBlb2YgSFRNTENvbGxlY3Rpb24mJiJ1bmRlZmluZWQiIT10eXBlb2YgTm9kZUxpc3QmJihIVE1MQ29sbGVjdGlvbi5wcm90b3R5cGUuZmxhdHBpY2tyPU5vZGVMaXN0LnByb3RvdHlwZS5mbGF0cGlja3I9ZnVuY3Rpb24oZSl7cmV0dXJuIGsodGhpcyxlKX0sSFRNTEVsZW1lbnQucHJvdG90eXBlLmZsYXRwaWNrcj1mdW5jdGlvbihlKXtyZXR1cm4gayhbdGhpc10sZSl9KTt2YXIgVD1mdW5jdGlvbihlLHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZT9rKHdpbmRvdy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGUpLHQpOmUgaW5zdGFuY2VvZiBOb2RlP2soW2VdLHQpOmsoZSx0KX07cmV0dXJuIFQuZGVmYXVsdENvbmZpZz17fSxULmwxMG5zPXtlbjplKHt9LGkpLGRlZmF1bHQ6ZSh7fSxpKX0sVC5sb2NhbGl6ZT1mdW5jdGlvbih0KXtULmwxMG5zLmRlZmF1bHQ9ZShlKHt9LFQubDEwbnMuZGVmYXVsdCksdCl9LFQuc2V0RGVmYXVsdHM9ZnVuY3Rpb24odCl7VC5kZWZhdWx0Q29uZmlnPWUoZSh7fSxULmRlZmF1bHRDb25maWcpLHQpfSxULnBhcnNlRGF0ZT1DKHt9KSxULmZvcm1hdERhdGU9Yih7fSksVC5jb21wYXJlRGF0ZXM9TSwidW5kZWZpbmVkIiE9dHlwZW9mIGpRdWVyeSYmdm9pZCAwIT09alF1ZXJ5LmZuJiYoalF1ZXJ5LmZuLmZsYXRwaWNrcj1mdW5jdGlvbihlKXtyZXR1cm4gayh0aGlzLGUpfSksRGF0ZS5wcm90b3R5cGUuZnBfaW5jcj1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IERhdGUodGhpcy5nZXRGdWxsWWVhcigpLHRoaXMuZ2V0TW9udGgoKSx0aGlzLmdldERhdGUoKSsoInN0cmluZyI9PXR5cGVvZiBlP3BhcnNlSW50KGUsMTApOmUpKX0sInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJih3aW5kb3cuZmxhdHBpY2tyPVQpLFR9KSk7Ci8qKiAvbS9qcy92YW5pbGxhanMvZmxhdHBpY2tyLmZyLmpzICoqLwp2YXIgX19fZDJjX2ZsYXRwaWNrcmZyanNfY19vbj0iMjAyNS0wNS0yMyAxNzowNToxNyI7J3VzZSBzdHJpY3QnO3ZhciBfX19kMmNfZmxhdHBpY2tyZnJqc19jX29uPSIyMDI0LTAxLTMxIDE0OjMyOjQ2IjsidXNlIHN0cmljdCI7X19fZDJjX2ZsYXRwaWNrcmZyanNfY19vbj0iMjAyMy0wMS0xMiAxMTo0MTo0NiI7InVzZSBzdHJpY3QiO19fX2QyY19mbGF0cGlja3JmcmpzX2Nfb249IjIwMjMtMDEtMTIgMTA6NTE6MzAiOyJ1c2Ugc3RyaWN0IjtfX19kMmNfZmxhdHBpY2tyZnJqc19jX29uPSIyMDIxLTEyLTIxIDEzOjMwOjUyIjsidXNlIHN0cmljdCI7CihmdW5jdGlvbihiLGEpeyJvYmplY3QiPT09dHlwZW9mIGV4cG9ydHMmJiJ1bmRlZmluZWQiIT09dHlwZW9mIG1vZHVsZT9hKGV4cG9ydHMpOiJmdW5jdGlvbiI9PT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbImV4cG9ydHMiXSxhKTooYj0idW5kZWZpbmVkIiE9PXR5cGVvZiBnbG9iYWxUaGlzP2dsb2JhbFRoaXM6Ynx8c2VsZixhKGIuZnI9e30pKX0pKHRoaXMsZnVuY3Rpb24oYil7dmFyIGE9InVuZGVmaW5lZCIhPT10eXBlb2Ygd2luZG93JiZ2b2lkIDAhPT13aW5kb3cuZmxhdHBpY2tyP3dpbmRvdy5mbGF0cGlja3I6e2wxMG5zOnt9fSxjPXtmaXJzdERheU9mV2VlazoxLHdlZWtkYXlzOntzaG9ydGhhbmQ6ImRpbSBsdW4gbWFyIG1lciBqZXUgdmVuIHNhbSIuc3BsaXQoIiAiKSxsb25naGFuZDoiZGltYW5jaGUgbHVuZGkgbWFyZGkgbWVyY3JlZGkgamV1ZGkgdmVuZHJlZGkgc2FtZWRpIi5zcGxpdCgiICIpfSxtb250aHM6e3Nob3J0aGFuZDoiamFudiBmw6l2ciBtYXJzIGF2ciBtYWkganVpbiBqdWlsIGFvw7t0IHNlcHQgb2N0IG5vdiBkw6ljIi5zcGxpdCgiICIpLApsb25naGFuZDoiamFudmllciBmw6l2cmllciBtYXJzIGF2cmlsIG1haSBqdWluIGp1aWxsZXQgYW\/Du3Qgc2VwdGVtYnJlIG9jdG9icmUgbm92ZW1icmUgZMOpY2VtYnJlIi5zcGxpdCgiICIpfSxvcmRpbmFsOmZ1bmN0aW9uKGQpe3JldHVybiAxPGQ\/IiI6ImVyIn0scmFuZ2VTZXBhcmF0b3I6IiBhdSAiLHdlZWtBYmJyZXZpYXRpb246IlNlbSIsc2Nyb2xsVGl0bGU6IkTDqWZpbGVyIHBvdXIgYXVnbWVudGVyIGxhIHZhbGV1ciIsdG9nZ2xlVGl0bGU6IkNsaXF1ZXIgcG91ciBiYXNjdWxlciIsdGltZV8yNGhyOiEwfTthLmwxMG5zLmZyPWM7YT1hLmwxMG5zO2IuRnJlbmNoPWM7Yi5kZWZhdWx0PWE7T2JqZWN0LmRlZmluZVByb3BlcnR5KGIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSk7Ci8qKiAvbS9qcy9mci5uZXdjYXJzLmlubGluZS5qcyAqKi8KdmFyIGpzX2QyY19nZXRfdmFsPShqc19kMmNfZ2V0X3ZhbHx8ZnVuY3Rpb24oaWQpe3RyeXtyZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLnZhbHVlO31jYXRjaChleCl7aWYoY29uc29sZSYmY29uc29sZS5sb2cpY29uc29sZS5sb2coIlN5c3RlbSBmYWlsZWQgd2hpbGUgcmV0cmlldmluZyByZXBsYWNlbWVudCB2YWx1ZTogIitpZCxleCk7cmV0dXJuJyc7fX0pO3ZhciBpZGVudF80ODk2NDA0OWM1M2NiNDJjMTZmZWQxZThkZTBkMzM2Njt0cnl7ZnVuY3Rpb24gT3B0YW5vbldyYXBwZXIoKXt9fWNhdGNoKGV6ejEpe2lmKGNvbnNvbGUmJmNvbnNvbGUubG9nKQpjb25zb2xlLmxvZyhlenoxKTt9CnZhciBpZGVudF84ZmMyODdmNzZlOThiM2MwZjliYWU4NjIwMDI3Yzc1MTt0cnl7KGZ1bmN0aW9uKHcsZCxzLGwsaSl7d1tsXT13W2xdfHxbXTt3W2xdLnB1c2goeydndG0uc3RhcnQnOm5ldyBEYXRlKCkuZ2V0VGltZSgpLGV2ZW50OidndG0uanMnfSk7dmFyIGY9ZC5nZXRFbGVtZW50c0J5VGFnTmFtZShzKVswXSxqPWQuY3JlYXRlRWxlbWVudChzKSxkbD1sIT0nZGF0YUxheWVyJz8nJmw9JytsOicnO2ouYXN5bmM9dHJ1ZTtqLnNldEF0dHJpYnV0ZU5vZGUoZC5jcmVhdGVBdHRyaWJ1dGUoJ2RhdGEtb3QtaWdub3JlJykpO2ouc3JjPSdodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndG0uanM\/aWQ9JytpK2RsO2ouc2V0QXR0cmlidXRlTm9kZShkLmNyZWF0ZUF0dHJpYnV0ZSgnZGF0YS1vdC1pZ25vcmUnKSk7Zi5wYXJlbnROb2RlLmluc2VydEJlZm9yZShqLGYpO30pKHdpbmRvdyxkb2N1bWVudCwnc2NyaXB0JywnZGF0YUxheWVyJywnR1RNLVdWR1JSSlEzJyk7fWNhdGNoKGV6ejEpe2lmKGNvbnNvbGUmJmNvbnNvbGUubG9nKQpjb25zb2xlLmxvZyhlenoxKTt9CnZhciBpZGVudF81NGZjYzFjNmJlMWMzOTFmMjFkMzc0NDdmZGE1MGQ4Yzt0cnl7RDJBU0MoeyJ1c2VyTGFuZ3VhZ2UiOiJmcmUiLCJwYUNvZGUiOiIzMTAyNiIsImNsaWVudCI6Imh5dW5kYWkiLCJwYWdlSWQiOiJzaG93cm9vbSIsIm9lbUluZm8iOnsib2VtRGVhbGVyQ29kZSI6IjMxMDI2IiwiMCI6IjMxMDI2Iiwib2VtIjoiSHl1bmRhaSIsIjEiOiJIeXVuZGFpIn0sImRlYWxlcl9uYW1lIjoiIiwiZm9ybU1hcCI6eyJBREZCdXJsaW5ndG9uX0NlbnRyZV8tX0VWX1RvdXJfLV9Ecml2ZWZlIjp7IkZSRU5DSCI6IkRlbWFuZGUgZGUgQnVybGluZ3RvbiBDZW50cmUgLSBFViBUb3VyIC0gRHJpdmVmZXN0ICsgS2lhIFNpZ24gVXAgV2FybSBMZWFkOiBDb250YWN0IERlYWxlciIsIkVOR0xJU0giOiJMZWFkIEZyb20gQnVybGluZ3RvbiBDZW50cmUgLSBFViBUb3VyIC0gRHJpdmVmZXN0ICsgS2lhIFNpZ24gVXAgV2FybSBMZWFkOiBDb250YWN0IERlYWxlciJ9LCJBREZjYW1wYmVsbHJpdmVyY2Fycy5jYV8oRDJDX01lZGlhKV8tX0xlIjp7IkZSRU5DSCI6IkRlbWFuZGUgZGUgY2FtcGJlbGxyaXZlcmNhcnMuY2EgKEQyQyBNZWRpYSkgLSBMZWFkOiBWZWhpY2xlIEF2YWlsYWJpbGl0eSBbR29vZ2xlIC0gVXNlZCAgIExvY19waHlzaWNhbD05MDAxNjEzXSIsIkVOR0xJU0giOiJMZWFkIEZyb20gY2FtcGJlbGxyaXZlcmNhcnMuY2EgKEQyQyBNZWRpYSkgLSBMZWFkOiBWZWhpY2xlIEF2YWlsYWJpbGl0eSBbR29vZ2xlIC0gVXNlZCAgIExvY19waHlzaWNhbD05MDAxNjEzXSJ9LCJBREZjYXJtYXRjaGVyLmNhXyhEMkNfTWVkaWEpXy1fTGVhZDpfQXBwIjp7IkZSRU5DSCI6IkRlbWFuZGUgZGUgY2FybWF0Y2hlci5jYSAoRDJDIE1lZGlhKSAtIExlYWQ6IEFwcG9pbnRtZW50IHJlcXVlc3QgW0dvb2dsZSAtIE9yZ2FuaWNdIiwiRU5HTElTSCI6IkxlYWQgRnJvbSBjYXJtYXRjaGVyLmNhIChEMkMgTWVkaWEpIC0gTGVhZDogQXBwb2ludG1lbnQgcmVxdWVzdCBbR29vZ2xlIC0gT3JnYW5pY10ifSwiQURGY2FybWF0Y2hlci5jYV8oRDJDX01lZGlhKV8tX0xlYWQ6X0NhciI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIGNhcm1hdGNoZXIuY2EgKEQyQyBNZWRpYSkgLSBMZWFkOiBDYXJGYXggcmVxdWVzdCBbR29vZ2xlIC0gT3JnYW5pY10iLCJFTkdMSVNIIjoiTGVhZCBGcm9tIGNhcm1hdGNoZXIuY2EgKEQyQyBNZWRpYSkgLSBMZWFkOiBDYXJGYXggcmVxdWVzdCBbR29vZ2xlIC0gT3JnYW5pY10ifSwiQURGY2FybWF0Y2hlci5jYV8oRDJDX01lZGlhKV8tX0xlYWQ6X09mZiI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIGNhcm1hdGNoZXIuY2EgKEQyQyBNZWRpYSkgLSBMZWFkOiBPZmZlciBvbiBhIHZlaGljbGUgW0dvb2dsZSAtIE9yZ2FuaWNdIiwiRU5HTElTSCI6IkxlYWQgRnJvbSBjYXJtYXRjaGVyLmNhIChEMkMgTWVkaWEpIC0gTGVhZDogT2ZmZXIgb24gYSB2ZWhpY2xlIFtHb29nbGUgLSBPcmdhbmljXSJ9LCJBREZjYXJtYXRjaGVyLmNhXyhEMkNfTWVkaWEpXy1fTGVhZDpfUERGIjp7IkZSRU5DSCI6IkRlbWFuZGUgZGUgY2FybWF0Y2hlci5jYSAoRDJDIE1lZGlhKSAtIExlYWQ6IFBERiByZXF1ZXN0IC0gVmVoaWNsZSBpbiBpbnZlbnRvcnkgW0dvb2dsZSAtIE9yZ2FuaWNdIiwiRU5HTElTSCI6IkxlYWQgRnJvbSBjYXJtYXRjaGVyLmNhIChEMkMgTWVkaWEpIC0gTGVhZDogUERGIHJlcXVlc3QgLSBWZWhpY2xlIGluIGludmVudG9yeSBbR29vZ2xlIC0gT3JnYW5pY10ifSwiQURGY2FybWF0Y2hlci5jYV8oRDJDX01lZGlhKV8tX0xlYWQ6X1JlcSI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIGNhcm1hdGNoZXIuY2EgKEQyQyBNZWRpYSkgLSBMZWFkOiBSZXF1ZXN0IGZvciBmaW5hbmNpbmcgKE11bHRpc3RlcCkgW0dvb2dsZSAtIE9yZ2FuaWNdIiwiRU5HTElTSCI6IkxlYWQgRnJvbSBjYXJtYXRjaGVyLmNhIChEMkMgTWVkaWEpIC0gTGVhZDogUmVxdWVzdCBmb3IgZmluYW5jaW5nIChNdWx0aXN0ZXApIFtHb29nbGUgLSBPcmdhbmljXSJ9LCJBREZjYXJtYXRjaGVyLmNhXyhEMkNfTWVkaWEpXy1fTGVhZDpfU2VyIjp7IkZSRU5DSCI6IkRlbWFuZGUgZGUgY2FybWF0Y2hlci5jYSAoRDJDIE1lZGlhKSAtIExlYWQ6IFNlcnZpY2UgYXBwb2ludG1lbnQgcmVxdWVzdCBbRmFjZWJvb2sgLSBPcmdhbmljXSIsIkVOR0xJU0giOiJMZWFkIEZyb20gY2FybWF0Y2hlci5jYSAoRDJDIE1lZGlhKSAtIExlYWQ6IFNlcnZpY2UgYXBwb2ludG1lbnQgcmVxdWVzdCBbRmFjZWJvb2sgLSBPcmdhbmljXSJ9LCJBREZjYXJtYXRjaGVyLmNhXyhEMkNfTWVkaWEpXy1fTGVhZDpfVHJhIjp7IkZSRU5DSCI6IkRlbWFuZGUgZGUgY2FybWF0Y2hlci5jYSAoRDJDIE1lZGlhKSAtIExlYWQ6IFRyYWRlLWluIHJlcXVlc3QgW0dvb2dsZSAtIE9yZ2FuaWNdIiwiRU5HTElTSCI6IkxlYWQgRnJvbSBjYXJtYXRjaGVyLmNhIChEMkMgTWVkaWEpIC0gTGVhZDogVHJhZGUtaW4gcmVxdWVzdCBbR29vZ2xlIC0gT3JnYW5pY10ifSwiQURGY2FybWF0Y2hlci5jYV8oRDJDX01lZGlhKV8tX0xlYWQ6X1ZlaCI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIGNhcm1hdGNoZXIuY2EgKEQyQyBNZWRpYSkgLSBMZWFkOiBWZWhpY2xlIEF2YWlsYWJpbGl0eSBbR29vZ2xlIC0gT3JnYW5pY10iLCJFTkdMSVNIIjoiTGVhZCBGcm9tIGNhcm1hdGNoZXIuY2EgKEQyQyBNZWRpYSkgLSBMZWFkOiBWZWhpY2xlIEF2YWlsYWJpbGl0eSBbR29vZ2xlIC0gT3JnYW5pY10ifSwiQURGY2FybWF0Y2hlci5jYV8oRDJDX01lZGlhXy1fT3JnYW5pYylfLSI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIGNhcm1hdGNoZXIuY2EgKEQyQyBNZWRpYSAtIE9yZ2FuaWMpIC0gTGVhZDogVmVoaWNsZSBBdmFpbGFiaWxpdHkgW09yZ2FuaWNdIiwiRU5HTElTSCI6IkxlYWQgRnJvbSBjYXJtYXRjaGVyLmNhIChEMkMgTWVkaWEgLSBPcmdhbmljKSAtIExlYWQ6IFZlaGljbGUgQXZhaWxhYmlsaXR5IFtPcmdhbmljXSJ9LCJBREZkYW5pZWxwYXJlZG9kZ2UuY29tXyhwYXJfRDJDX01lZGlhKV8tIjp7IkZSRU5DSCI6IkRlbWFuZGUgZGUgZGFuaWVscGFyZWRvZGdlLmNvbSAocGFyIEQyQyBNZWRpYSkgLSBEMkMgTWVkaWEgLSBMZWFkIDogVm9pciBsJ29mZnJlIGNvdXBvbiBTUlAgW0dvb2dsZSAtIE5ldWYtdmxhXSIsIkVOR0xJU0giOiJMZWFkIEZyb20gZGFuaWVscGFyZWRvZGdlLmNvbSAocGFyIEQyQyBNZWRpYSkgLSBEMkMgTWVkaWEgLSBMZWFkIDogVm9pciBsJ29mZnJlIGNvdXBvbiBTUlAgW0dvb2dsZSAtIE5ldWYtdmxhXSJ9LCJBREZkZW1vY3JtLmQyY21lZGlhLmNhXyhEMkNfTWVkaWFfLV9PcmdhIjp7IkZSRU5DSCI6IkRlbWFuZGUgZGUgZGVtb2NybS5kMmNtZWRpYS5jYSAoRDJDIE1lZGlhIC0gT3JnYW5pYykgLSBMZWFkOiBSZXF1ZXN0IGZvciBhIHJlYmF0ZSBjb3Vwb24gKGludmVudG9yeSB2ZWhpY2xlKSBbT3JnYW5pY10iLCJFTkdMSVNIIjoiTGVhZCBGcm9tIGRlbW9jcm0uZDJjbWVkaWEuY2EgKEQyQyBNZWRpYSAtIE9yZ2FuaWMpIC0gTGVhZDogUmVxdWVzdCBmb3IgYSByZWJhdGUgY291cG9uIChpbnZlbnRvcnkgdmVoaWNsZSkgW09yZ2FuaWNdIn0sIkFERk1vbl9zaXRlXy1fRDJDX01lZGlhXy1fTGVhZF86X0RlbWFuZGUiOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBNb24gc2l0ZSAtIEQyQyBNZWRpYSAtIExlYWQgOiBEZW1hbmRlIGRlIHZhbGV1ciBkJyZBdGlsZGU7JmNvcHk7Y2hhbmdlIChTTVMpIFtHb29nbGUgLSBPcmdhbmljXSIsIkVOR0xJU0giOiJMZWFkIEZyb20gTW9uIHNpdGUgLSBEMkMgTWVkaWEgLSBMZWFkIDogRGVtYW5kZSBkZSB2YWxldXIgZCcmQXRpbGRlOyZjb3B5O2NoYW5nZSAoU01TKSBbR29vZ2xlIC0gT3JnYW5pY10ifSwiQURGcGFsbGFkaW5vYXV0b2dyb3VwLmNvbV8oRDJDX01lZGlhKV8tXyI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIHBhbGxhZGlub2F1dG9ncm91cC5jb20gKEQyQyBNZWRpYSkgLSBMZWFkOiBDYXJGYXggcmVxdWVzdCBbR29vZ2xlIC0gVXNlZC12bGEgICBMb2NfcGh5c2ljYWw9OTAwMTE0MV0iLCJFTkdMSVNIIjoiTGVhZCBGcm9tIHBhbGxhZGlub2F1dG9ncm91cC5jb20gKEQyQyBNZWRpYSkgLSBMZWFkOiBDYXJGYXggcmVxdWVzdCBbR29vZ2xlIC0gVXNlZC12bGEgICBMb2NfcGh5c2ljYWw9OTAwMTE0MV0ifSwiQURGcGFsbGFkaW5vYXV0b2dyb3VwLmNvbV8oRDJDX01lZGlhKV9fLSI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIHBhbGxhZGlub2F1dG9ncm91cC5jb20gKEQyQyBNZWRpYSkgIC0gTGVhZDogUmVxdWVzdCBmb3IgY29udGFjdCBbRmFjZWJvb2sgLSBVc2VkIFsgS2V5d29yZDogVXNlZCtUcnVja10gIExvY18iLCJFTkdMSVNIIjoiTGVhZCBGcm9tIHBhbGxhZGlub2F1dG9ncm91cC5jb20gKEQyQyBNZWRpYSkgIC0gTGVhZDogUmVxdWVzdCBmb3IgY29udGFjdCBbRmFjZWJvb2sgLSBVc2VkIFsgS2V5d29yZDogVXNlZCtUcnVja10gIExvY19wIn0sIkFERnBhbGxhZGlub2F1dG9ncm91cC5jb21fKEQyQ19fTWVkaWEpXy0iOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBwYWxsYWRpbm9hdXRvZ3JvdXAuY29tIChEMkMgIE1lZGlhKSAtIExlYWQ6IFRyYWRlLWluIHJlcXVlc3QgW0dvb2dsZSAtIFRyYWRlICAgTG9jX3BoeXNpY2FsPTkwMDExMThdIiwiRU5HTElTSCI6IkxlYWQgRnJvbSBwYWxsYWRpbm9hdXRvZ3JvdXAuY29tIChEMkMgIE1lZGlhKSAtIExlYWQ6IFRyYWRlLWluIHJlcXVlc3QgW0dvb2dsZSAtIFRyYWRlICAgTG9jX3BoeXNpY2FsPTkwMDExMThdIn0sIkFERnBhbGxhZGlub2F1dG9ncm91cC5jb21fXyhEMkNfTWVkaWEpXy0iOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBwYWxsYWRpbm9hdXRvZ3JvdXAuY29tICAoRDJDIE1lZGlhKSAtIExlYWQ6IFRyYWRlLWluIHJlcXVlc3QgW0dvb2dsZSAtIFRyYWRlICAgTG9jX3BoeXNpY2FsPTkwMDExMzNdIiwiRU5HTElTSCI6IkxlYWQgRnJvbSBwYWxsYWRpbm9hdXRvZ3JvdXAuY29tICAoRDJDIE1lZGlhKSAtIExlYWQ6IFRyYWRlLWluIHJlcXVlc3QgW0dvb2dsZSAtIFRyYWRlICAgTG9jX3BoeXNpY2FsPTkwMDExMzNdIn0sIkFERnBhbGxhZGlub3N1YmFydS5jYV8ocGFyX0QyQ19NZWRpYV8tX08iOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBwYWxsYWRpbm9zdWJhcnUuY2EgKHBhciBEMkMgTWVkaWEgLSBPcmdhbmljKSAtIEQyQyBNZWRpYSAtIExlYWQ6IFBERiBicm9jaHVyZSByZXF1ZXN0IFtPcmdhbmljXSIsIkVOR0xJU0giOiJMZWFkIEZyb20gcGFsbGFkaW5vc3ViYXJ1LmNhIChwYXIgRDJDIE1lZGlhIC0gT3JnYW5pYykgLSBEMkMgTWVkaWEgLSBMZWFkOiBQREYgYnJvY2h1cmUgcmVxdWVzdCBbT3JnYW5pY10ifSwiQURGU2NhcmJvcm91Z2hfVG93bl9DZW50cmVfLV9FVl9Ub3VyXy1fRCI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIFNjYXJib3JvdWdoIFRvd24gQ2VudHJlIC0gRVYgVG91ciAtIERyaXZlZmVzdCArIEtpYSBTaWduIFVwIFdhcm0gTGVhZDogQ29udGFjdCBEZWFsZXIiLCJFTkdMSVNIIjoiTGVhZCBGcm9tIFNjYXJib3JvdWdoIFRvd24gQ2VudHJlIC0gRVYgVG91ciAtIERyaXZlZmVzdCArIEtpYSBTaWduIFVwIFdhcm0gTGVhZDogQ29udGFjdCBEZWFsZXIifSwiQURGU2hlcndheV9HYXJkZW5zXy1fRVZfVG91cl8tX0RyaXZlZmVzdCI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIFNoZXJ3YXkgR2FyZGVucyAtIEVWIFRvdXIgLSBEcml2ZWZlc3QgU2lnbiBVcCBXYXJtIExlYWQ6IENvbnRhY3QgRGVhbGVyIiwiRU5HTElTSCI6IkxlYWQgRnJvbSBTaGVyd2F5IEdhcmRlbnMgLSBFViBUb3VyIC0gRHJpdmVmZXN0IFNpZ24gVXAgV2FybSBMZWFkOiBDb250YWN0IERlYWxlciJ9LCJBREZTcXVhcmVfT25lXy1fRVZfVG91cl8tX0RyaXZlZmVzdF8rX0tpIjp7IkZSRU5DSCI6IkRlbWFuZGUgZGUgU3F1YXJlIE9uZSAtIEVWIFRvdXIgLSBEcml2ZWZlc3QgKyBLaWEgU2lnbiBVcCBXYXJtIExlYWQ6IENvbnRhY3QgRGVhbGVyIiwiRU5HTElTSCI6IkxlYWQgRnJvbSBTcXVhcmUgT25lIC0gRVYgVG91ciAtIERyaXZlZmVzdCArIEtpYSBTaWduIFVwIFdhcm0gTGVhZDogQ29udGFjdCBEZWFsZXIifSwiQURGU3F1YXJlX09uZV8tX0VWX1RvdXJfLV9LaWFfU2lnbl9VcF9IbyI6eyJGUkVOQ0giOiJEZW1hbmRlIGRlIFNxdWFyZSBPbmUgLSBFViBUb3VyIC0gS2lhIFNpZ24gVXAgSG90IExlYWQ6IENvbnRhY3QgRGVhbGVyIiwiRU5HTElTSCI6IkxlYWQgRnJvbSBTcXVhcmUgT25lIC0gRVYgVG91ciAtIEtpYSBTaWduIFVwIEhvdCBMZWFkOiBDb250YWN0IERlYWxlciJ9LCJBREZVcHBlcl9DYW5hZGFfTWFsbF8tX0VWX1RvdXJfLV9Ecml2ZWZlIjp7IkZSRU5DSCI6IkRlbWFuZGUgZGUgVXBwZXIgQ2FuYWRhIE1hbGwgLSBFViBUb3VyIC0gRHJpdmVmZXN0IFNpZ24gVXAgV2FybSBMZWFkOiBDb250YWN0IERlYWxlciIsIkVOR0xJU0giOiJMZWFkIEZyb20gVXBwZXIgQ2FuYWRhIE1hbGwgLSBFViBUb3VyIC0gRHJpdmVmZXN0IFNpZ24gVXAgV2FybSBMZWFkOiBDb250YWN0IERlYWxlciJ9LCJBdmFpbGFiaWxpdHlVc2VkIjp7IkZSRU5DSCI6IkxlYWQ6IERpc3BvbmliaWxpdGUgZCd1biB2ZWhpY3VsZSIsIkVOR0xJU0giOiJMZWFkOiBWZWhpY2xlIEF2YWlsYWJpbGl0eSJ9LCJCYW5uZXJGb3JtIjp7IkZSRU5DSCI6IkxlYWQ6IERlbWFuZGUgZGUgZm9ybSBiYW5uZXIiLCJFTkdMSVNIIjoiTGVhZDogQmFubmVyIEZvcm0gUmVxdWVzdCJ9LCJCZXN0UHJpY2VSZXF1ZXN0TmV3Ijp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlICBtZWlsbGV1ciBwcml4ICh2ZWhpY3VsZSBuZXVmKSIsIkVOR0xJU0giOiJMZWFkOiBSZXF1ZXN0IGZvciBhIGJlc3QgcHJpY2UgKG5ldyB2ZWhpY2xlKSJ9LCJCb2R5U2hvcCI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSByZW5kZXotdm91cyBlbiBjYXJvc3NlcmllIiwiRU5HTElTSCI6IkxlYWQ6IFZlaGljbGUgYm9keSBzaG9wIGFwcG9pbnRtZW50IHJlcXVlc3QifSwiQnJvY2h1cmVzIjp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIGJyb2NodXJlIiwiRU5HTElTSCI6IkxlYWQgOiBCcm9jaHVyZSByZXF1ZXN0In0sIkJyb2NodXJlc1JlcXVlc3QiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgYnJvY2h1cmUiLCJFTkdMSVNIIjoiTGVhZCA6IEJyb2NodXJlIHJlcXVlc3QifSwiQnVpbGRBbmRQcmljZV9TYXZlIjp7IkZSRU5DSCI6IkxlYWQ6IENvbmZpZ3VyYXRpb24gZCd1biB2ZWhpY3VsZSBuZXVmIiwiRU5HTElTSCI6IkxlYWQ6IE5ldyBWZWhpY2xlIENvbmZpZ3VyYXRpb24gKEJ1aWxkICYgUHJpY2UpIn0sIkJ1aWxkQW5kUHJpY2VfU3RvY2siOnsiRlJFTkNIIjoiTGVhZDogRGlzcG9uaWJpbGl0ZSBkJ3VuIHZlaGljdWxlIiwiRU5HTElTSCI6IkxlYWQ6IFZlaGljbGUgQXZhaWxhYmlsaXR5In0sIkNhcnByb29mTWFpbCI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBDYXJGYXgiLCJFTkdMSVNIIjoiTGVhZDogQ2FyRmF4IHJlcXVlc3QifSwiQ29udGFjdFJlcXVlc3QiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgY29udGFjdCIsIkVOR0xJU0giOiJMZWFkOiBSZXF1ZXN0IGZvciBjb250YWN0In0sIkNvbnRhY3RVc1JlcXVlc3QiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgY29udGFjdCIsIkVOR0xJU0giOiJMZWFkOiBSZXF1ZXN0IGZvciBjb250YWN0In0sIkNvbnRhY3RWaXNpdFJlcXVlc3QiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgY29udGFjdCBWZW50ZSIsIkVOR0xJU0giOiJMZWFkOiBSZXF1ZXN0IGZvciBjb250YWN0IFNhbGVzIn0sIkNvbnRhY3RWaXNpdFJlcXVlc3ROZXciOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgY29udGFjdCBWZW50ZSIsIkVOR0xJU0giOiJMZWFkOiBSZXF1ZXN0IGZvciBjb250YWN0IFNhbGVzIn0sIkNyZWRpdEJvb3N0TXVsdGkiOnsiRlJFTkNIIjoiTGVhZDogRGVtYW5kZSBkZSBwcmVxdWFsaWZpY2F0aW9uIGRlIGNyZWRpdCIsIkVOR0xJU0giOiJMZWFkOiBSZXF1ZXN0IGZvciBDcmVkaXQgUHJlLVF1YWxpZmljYXRpb24ifSwiQ3JlZGl0TXVsdGlzdGVwUmVxdWVzdCI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBmaW5hbmNlbWVudCAoUGx1c2lldXJzIGV0YXBlcykiLCJFTkdMSVNIIjoiTGVhZDogUmVxdWVzdCBmb3IgZmluYW5jaW5nIChNdWx0aXN0ZXApIn0sIkNyZWRpdE11bHRpc3RlcFJlcXVlc3QybmRDaGFuY2UiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgZmluYW5jZW1lbnQgKFBsdXNpZXVycyBldGFwZXMgMmUgY2hhbmNlKSIsIkVOR0xJU0giOiJMZWFkOiBSZXF1ZXN0IGZvciBmaW5hbmNpbmcgKE11bGlzdGVwIDJuZCBjaGFuY2UpIn0sIkNyZWRpdE11bHRpc3RlcFJlcXVlc3RJbnN0YW50Ijp7IkZSRU5DSCI6IkxlYWQ6IEFwcHJvYmF0aW9uIGRlIGNyZWRpdCBpbnN0YW50YW5lZSIsIkVOR0xJU0giOiJMZWFkOiBJbnN0YW50IENyZWRpdCBBcHByb3ZhbCJ9LCJDcmVkaXRSZXF1ZXN0Ijp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIGZpbmFuY2VtZW50IiwiRU5HTElTSCI6IkxlYWQ6IFJlcXVlc3QgZm9yIGZpbmFuY2luZyJ9LCJDcmVkaXRSZXF1ZXN0TW9iaWxlIjp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIGZpbmFuY2VtZW50IiwiRU5HTElTSCI6IkxlYWQ6IFJlcXVlc3QgZm9yIGZpbmFuY2luZyJ9LCJDcmVkaXRSZXF1ZXN0TW9iaWxlRnVsbCI6eyJGUkVOQ0giOiJMZWFkOiBSZXF1ZXN0IGZvciBmaW5hbmNpbmciLCJFTkdMSVNIIjoiTGVhZDogUmVxdWVzdCBmb3IgZmluYW5jaW5nIn0sIkNyZWRpdFJlcXVlc3RfU2hvcnQiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgZmluYW5jZW1lbnQgKHZlcnNpb24gY291cnRlKSIsIkVOR0xJU0giOiJMZWFkIDogQ3JlZGl0IGFwcGxpY2F0aW9uIChzaG9ydCB2ZXJzaW9uKSJ9LCJEZWFsZXJBcHBvaW50bWVudCI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSByZW5kZXotdm91cyIsIkVOR0xJU0giOiJMZWFkOiBBcHBvaW50bWVudCByZXF1ZXN0In0sIkRpc2NvdmVyT2ZmZXIiOnsiRlJFTkNIIjoiTGVhZCA6IFZvaXIgbCdvZmZyZSBjb3Vwb24gU1JQIiwiRU5HTElTSCI6IkxlYWQ6IFNlZSBPZmZlciBDb3Vwb24gaW4gU1JQIn0sIkVzdGhldGljUmVxdWVzdCI6eyJGUkVOQ0giOiJMZWFkOiBEZW1hbmRlIGRlIHJlbmRlei12b3VzIGEgbCdlc3RoZXRxdWUgZXQgbGF2ZS1hdXRvIiwiRU5HTElTSCI6IkxlYWQ6IFZlaGljbGUgZXN0aGV0aWMgYW5kIGNhciB3YXNoIGFwcG9pbnRtZW50IHJlcXVlc3QifSwiZmFjZWJvb2tDb25uZWN0Ijp7IkZSRU5DSCI6IkxlYWQ6IFJhYmFpcyBGYWNlYm9vayIsIkVOR0xJU0giOiJMZWFkOiBGYWNlYm9vayBSZWJhdGUifSwiRmluZFZlaGljbGUiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgcmVjaGVyY2hlIGRlIHZlaGljdWxlIiwiRU5HTElTSCI6IkxlYWQ6IFJlcXVlc3QgdG8gZmluZCBhIHByZS1vd25lZCB2ZWhpY2xlIn0sImhlYWRlclNlcnZpY2UiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgcmVuZGV6LXZvdXMgYXUgc2VydmljZSBFeHByZXNzIiwiRU5HTElTSCI6IkxlYWQ6IFNlcnZpY2UgYXBwb2ludG1lbnQgcmVxdWVzdCBFeHByZXNzIn0sIk1ha2VPZmZlciI6eyJGUkVOQ0giOiJMZWFkIDogT2ZmcmUgZCdhY2hhdCBzdXIgdW4gdmVoaWN1bGUiLCJFTkdMSVNIIjoiTGVhZDogT2ZmZXIgb24gYSB2ZWhpY2xlIn0sIk1ha2VPZmZlck5ldyI6eyJGUkVOQ0giOiJMZWFkIDogT2ZmcmUgZCdhY2hhdCBzdXIgdW4gdmVoaWN1bGUiLCJFTkdMSVNIIjoiTGVhZDogT2ZmZXIgb24gYSB2ZWhpY2xlIn0sIm1lbnVTZXJ2aWNlIjp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIHJlbmRlei12b3VzIGF1IHNlcnZpY2UgRXhwcmVzcyIsIkVOR0xJU0giOiJMZWFkOiBTZXJ2aWNlIGFwcG9pbnRtZW50IHJlcXVlc3QgRXhwcmVzcyJ9LCJNb250aGx5UGF5bWVudHMiOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBtZW5zdWFsaXRlcyIsIkVOR0xJU0giOiJSZXF1ZXN0IGZvciBtb250aGx5IHBheW1lbnRzIn0sIk1vbnRobHlQYXltZW50c19ORVciOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBtZW5zdWFsaXRlcyIsIkVOR0xJU0giOiJSZXF1ZXN0IGZvciBtb250aGx5IHBheW1lbnRzIn0sIk1vbnRobHlQYXltZW50c19TTVMiOnsiRlJFTkNIIjoiRGVtYW5kZSBkZSBtZW5zdWFsaXRlcyAtIFNNUyIsIkVOR0xJU0giOiJSZXF1ZXN0IGZvciBtb250aGx5IHBheW1lbnRzIC0gU01TIn0sIk1vbnRobHlQYXltZW50c19TTVNfTkVXIjp7IkZSRU5DSCI6IkRlbWFuZGUgZGUgbWVuc3VhbGl0ZXMgLSBTTVMiLCJFTkdMSVNIIjoiUmVxdWVzdCBmb3IgbW9udGhseSBwYXltZW50cyAtIFNNUyJ9LCJQYXJ0c1JlcXVlc3QiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgY29tbWFuZGUgcGkmZWdyYXZlO2NlIiwiRU5HTElTSCI6IkxlYWQ6IFJlcXVlc3QgZm9yIHZlaGljbGUgcGFydHMifSwiUGhvdG9SZXF1ZXN0Ijp7IkZSRU5DSCI6IkxlYWQ6IERlbWFuZGUgZGUgcGhvdG9zIiwiRU5HTElTSCI6IkxlYWQ6IFBob3RvIHJlcXVlc3QifSwiUG9wVXBJbnN0YW50UmViYXRlIjp7IkZSRU5DSCI6IkxlYWQ6IERlbWFuZGUgZGUgUmFiYWlzIEluc3RhbnRhbmUiLCJFTkdMSVNIIjoiTGVhZDogSW5zdGFudCBSZWJhdGUgcmVxdWVzdCJ9LCJQb3BVcEluc3RhbnRSZWJhdGUzIjp7IkZSRU5DSCI6IkxlYWQ6IERlbWFuZGUgZGUgUmFiYWlzIEluc3RhbnRhbmUiLCJFTkdMSVNIIjoiTGVhZDogSW5zdGFudCBSZWJhdGUgcmVxdWVzdCJ9LCJQb3BVcEluc3RhbnRSZWJhdGVBQSI6eyJGUkVOQ0giOiJMZWFkOiBEZW1hbmRlIGRlIFJhYmFpcyBJbnN0YW50YW5lIiwiRU5HTElTSCI6IkxlYWQ6IEluc3RhbnQgUmViYXRlIHJlcXVlc3QifSwiUHJpY2VSZXF1ZXN0Ijp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIHByaXgiLCJFTkdMSVNIIjoiTGVhZDogUHJpY2UgcmVxdWVzdCJ9LCJQcmljZVJlcXVlc3ROZXciOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgcHJpeCIsIkVOR0xJU0giOiJMZWFkOiBQcmljZSByZXF1ZXN0In0sIlByaWNlVmVoaWNsZSI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSB2YWxldXIgZCdlY2hhbmdlIiwiRU5HTElTSCI6IkxlYWQ6IFRyYWRlLWluIHJlcXVlc3QifSwiUHJpY2VWZWhpY2xlQWNjdXRyYWRlIjp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIHZhbGV1ciBkJ2VjaGFuZ2UiLCJFTkdMSVNIIjoiTGVhZCA6IExlYWQ6IFRyYWRlLWluIHJlcXVlc3QifSwiUHJpY2VWZWhpY2xlTmV3Ijp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIHZhbGV1ciBkJ2VjaGFuZ2UiLCJFTkdMSVNIIjoiTGVhZDogVHJhZGUtaW4gcmVxdWVzdCJ9LCJRdWlja0VtYWlsIjp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIEV4cHJlc3MiLCJFTkdMSVNIIjoiTGVhZDogRXhwcmVzcyByZXF1ZXN0In0sIlF1aWNrRW1haWxOZXdJbnZlbnRvcnkiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgRXhwcmVzcyAoaW52ZW50YWlyZSBuZXVmKSIsIkVOR0xJU0giOiJMZWFkOiBFeHByZXNzIHJlcXVlc3QgKG5ldyBpbnZlbnRvcnkpIn0sIlJlYmF0ZUNvdXBvbiI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBjb3Vwb24gcmFiYWlzICh2ZWhpY3VsZSBlbiBpbnZlbnRhaXJlKSIsIkVOR0xJU0giOiJMZWFkOiBSZXF1ZXN0IGZvciBhIHJlYmF0ZSBjb3Vwb24gKGludmVudG9yeSB2ZWhpY2xlKSJ9LCJSZWJhdGVDb3Vwb25JbnZlbnRvcnkiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgY291cG9uIHJhYmFpcyAoaW52ZW50YWlyZSkiLCJFTkdMSVNIIjoiTGVhZDogUmVxdWVzdCBmb3IgYSByZWJhdGUgY291cG9uIChpbnZlbnRvcnkpIn0sIlJlYmF0ZUNvdXBvbk5ldyI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBjb3Vwb24gcmFiYWlzIiwiRU5HTElTSCI6IkxlYWQ6IFJlcXVlc3QgZm9yIGEgcmViYXRlIGNvdXBvbiJ9LCJSZWJhdGVDb3Vwb25OZXdCTlAiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgY291cG9uIHJhYmFpcyAoY29uZmlndXJhdGV1cikiLCJFTkdMSVNIIjoiTGVhZDogUmVxdWVzdCBmb3IgYSByZWJhdGUgY291cG9uIChjb25maWd1cmF0b3IpIn0sIlJlYmF0ZUNvdXBvbk5ld0ludmVudG9yeSI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBjb3Vwb24gcmFiYWlzIChpbnZlbnRhaXJlKSIsIkVOR0xJU0giOiJMZWFkOiBSZXF1ZXN0IGZvciBhIHJlYmF0ZSBjb3Vwb24gKGludmVudG9yeSkifSwiUmViYXRlQ291cG9uTmV3U2xpZGVyIjp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIGNvdXBvbiByYWJhaXMgKGNhcm91c2VsKSIsIkVOR0xJU0giOiJMZWFkOiBSZXF1ZXN0IGZvciBhIHJlYmF0ZSBjb3Vwb24gKHNsaWRlcikifSwiUmViYXRlQ291cG9uUHJvbW8iOnsiRlJFTkNIIjoiTGVhZDogRGVtYW5kZSBkZSBjb3Vwb24gcmFiYWlzIChib3V0b24gJ1Byb21vdGlvbnMnKSIsIkVOR0xJU0giOiJMZWFkOiBSZWJhdGUgQ291cG9uIHJlcXVlc3QgKCdQcm9tb3Rpb25zJyBidXR0b24pIn0sIlJlYmF0ZUNvdXBvblNsaWRlciI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSBjb3Vwb24gcmFiYWlzIChjYXJvdXNlbCkiLCJFTkdMSVNIIjoiTGVhZDogUmVxdWVzdCBmb3IgYSByZWJhdGUgY291cG9uIChzbGlkZXIpIn0sIlJlYmF0ZUNvdXBvblVzZWRTbGlkZXIiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgY291cG9uIHJhYmFpcyAoY2Fyb3VzZWwpIiwiRU5HTElTSCI6IkxlYWQ6IFJlcXVlc3QgZm9yIGEgcmViYXRlIGNvdXBvbiAoc2xpZGVyKSJ9LCJSZWNhbGxzIjp7IkZSRU5DSCI6IkRlbWFuZGUgZCdpbmZvcm1hdGlvbiBzdXIgbGVzIHJhcHBlbHMiLCJFTkdMSVNIIjoiUmVjYWxsIGluZm9ybWF0aW9uIHJlcXVlc3QifSwiUmVzZXJ2ZUl0Tm93Ijp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIHBvdXIgcmVzZXJ2ZXIgdW4gdmVoaWN1bGUiLCJFTkdMSVNIIjoiTGVhZCA6IFJlcXVlc3QgdG8gcHJlLW9yZGVyIGEgdmVoaWNsZSJ9LCJSZXNlcnZlSXROb3dOZXciOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgcG91ciByZXNlcnZlciB1biB2ZWhpY3VsZSIsIkVOR0xJU0giOiJMZWFkIDogUmVxdWVzdCB0byBwcmUtb3JkZXIgYSB2ZWhpY2xlIn0sIlNlbGxDYXIiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgVmVuZGV6IFZlaGljdWxlIiwiRU5HTElTSCI6IkxlYWQgOiBSZXF1ZXN0IHRvIGJ1eSB5b3VyIGNhciJ9LCJTZWxsQ2FyX1Nob3J0Ijp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIFZlbmRlei1ub3VzIHZvdHJlIHZlaGljdWxlICh2ZXJzaW9uIGNvdXJ0ZSkiLCJFTkdMSVNIIjoiTGVhZCA6IFJlcXVlc3QgdG8gYnV5IHlvdXIgY2FyIChTaG9ydCB2ZXJzaW9uKSJ9LCJTZXJ2aWNlUmVxdWVzdCI6eyJGUkVOQ0giOiJMZWFkIDogRGVtYW5kZSBkZSByZW5kZXotdm91cyBhdSBzZXJ2aWNlIiwiRU5HTElTSCI6IkxlYWQ6IFNlcnZpY2UgYXBwb2ludG1lbnQgcmVxdWVzdCJ9LCJTTVNMZWFkIjp7IkZSRU5DSCI6IkxlYWQ6IERlbWFuZGUgU01TIChUZXh0bykiLCJFTkdMSVNIIjoiTGVhZDogU01TIHJlcXVlc3QifSwiU01TTGVhZF9vbGQiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgU01TIChUZXh0bykiLCJFTkdMSVNIIjoiTGVhZCA6IFNNUyByZXF1ZXN0In0sIlNwZWNzUmVxdWVzdCI6eyJGUkVOQ0giOiJMZWFkOiBEZW1hbmRlIGRlIGZpY2hlIFBERiAtIFZlaGljdWxlIGVuIGludmVudGFpcmUiLCJFTkdMSVNIIjoiTGVhZDogUERGIHJlcXVlc3QgLSBWZWhpY2xlIGluIGludmVudG9yeSJ9LCJTcGVjc1JlcXVlc3ROZXciOnsiRlJFTkNIIjoiTGVhZDogRGVtYW5kZSBkZSBicm9jaHVyZSBQREYiLCJFTkdMSVNIIjoiTGVhZDogUERGIGJyb2NodXJlIHJlcXVlc3QifSwiU1JQQ29udGFjdFVzIjp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGRlIGNvbnRhY3QgU1JQIiwiRU5HTElTSCI6IkxlYWQgOiBSZXF1ZXN0IGZvciBjb250YWN0IFNSUCJ9LCJUZXN0RHJpdmUiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZCdlc3NhaSByb3V0aWVyIiwiRU5HTElTSCI6IkxlYWQ6IFJlcXVlc3QgZm9yIGEgdGVzdCBkcml2ZSJ9LCJUZXN0RHJpdmVOZXciOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZCdlc3NhaSByb3V0aWVyIiwiRU5HTElTSCI6IkxlYWQ6IFJlcXVlc3QgZm9yIGEgdGVzdCBkcml2ZSJ9LCJUaXJlc1JlcXVlc3QiOnsiRlJFTkNIIjoiTGVhZCA6IERlbWFuZGUgZGUgcG5ldXMiLCJFTkdMSVNIIjoiTGVhZDogUmVxdWVzdCBmb3IgdGlyZXMifSwiUHJvbW9NYWlsIjp7IkZSRU5DSCI6IkxlYWQgOiBEZW1hbmRlIGQnaW52aXRhdGlvbiBhIGxhIHZlbnRlIHByaXZlZSIsIkVOR0xJU0giOiJMZWFkOiBSZXF1ZXN0IGZvciBpbnZpdGF0aW9uIHRvIHByaXZhdGUgc2FsZSJ9LCJTbGlkZVdpZGdldEZvcm0iOnsiRlJFTkNIIjoiVUlURVhUIiwiRU5HTElTSCI6IlVJVEVYVCJ9LCJDb21wYXJlRm9ybSI6eyJGUkVOQ0giOiJVSVRFWFQiLCJFTkdMSVNIIjoiVUlURVhUIn0sIlNlYXJjaEZpbHRlcnMiOnsiRlJFTkNIIjoiVUlURVhUIiwiRU5HTElTSCI6IlVJVEVYVCJ9LCJoZWFkZXJHbG9iYWxTZWFyY2giOnsiRlJFTkNIIjoiVUlURVhUIiwiRU5HTElTSCI6IlVJVEVYVCJ9fSwic3ViX2dhNCI6IlkifSk7fWNhdGNoKGV6ejEpe2lmKGNvbnNvbGUmJmNvbnNvbGUubG9nKQpjb25zb2xlLmxvZyhlenoxKTt9CnZhciBpZGVudF9mNzNmYTZhYmJmYjRiYWIzZjQ5ZGFhZmIzODkxZTI3Zjt0cnl7KGZ1bmN0aW9uKHcsZCx0LHIsdSl7dmFyIGYsbixpO3dbdV09d1t1XXx8W10sZj1mdW5jdGlvbigpe3ZhciBvPXt0aToiNTA3OTM5MSIsZW5hYmxlQXV0b1NwYVRyYWNraW5nOnRydWV9O28ucT13W3VdLHdbdV09bmV3IFVFVChvKSx3W3VdLnB1c2goInBhZ2VMb2FkIil9LG49ZC5jcmVhdGVFbGVtZW50KHQpLG4uc3JjPXIsbi5hc3luYz0xLG4uc2V0QXR0cmlidXRlKCJkYXRhLW90LWlnbm9yZSIsdHJ1ZSksbi5zZXRBdHRyaWJ1dGUoInR5cGUiLCJ0ZXh0L2phdmFzY3JpcHQiKSxuLm9ubG9hZD1uLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe3ZhciBzPXRoaXMucmVhZHlTdGF0ZTtzJiZzIT09ImxvYWRlZCImJnMhPT0iY29tcGxldGUifHwoZigpLG4ub25sb2FkPW4ub25yZWFkeXN0YXRlY2hhbmdlPW51bGwpfSxpPWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUodClbMF0saS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShuLGkpfSkod2luZG93LGRvY3VtZW50LCJzY3JpcHQiLCIvL2JhdC5iaW5nLmNvbS9iYXQuanMiLCJ1ZXRxIik7fWNhdGNoKGV6ejEpe2lmKGNvbnNvbGUmJmNvbnNvbGUubG9nKQpjb25zb2xlLmxvZyhlenoxKTt9CnZhciBpZGVudF8xNWRiZTFlYzRiYjgxOWYzYmU5YWYwYmI5MTczMWQ5Zjt0cnl7dmFyIGRlcGxveW1lbnRUeXBlPScnK2pzX2QyY19nZXRfdmFsKCIyZWpoYmMweXlvZzB3d3ciKSsnJztpZihkZXBsb3ltZW50VHlwZT09J2xpdmUnKXtnYVRyYWNrKCdfdHJhY2tFdmVudCcsJ1BhZ2VzIHZ1ZXMnLCdTZWN0aW9uLU5ldWYtTW9iaWxlJywnJywxKTtnYVRyYWNrKCdjLl90cmFja0V2ZW50JywnTW9iaWxlIHBhZ2V2aWV3cycsJ1N0YW5kYXJkIE1vYmlsZScsd2luZG93LmxvY2F0aW9uLmhyZWYsJzEnKTt9ZWxzZSBpZihkZXBsb3ltZW50VHlwZT09J3N0YWdpbmcnKXtnYVRyYWNrKCdiLl90cmFja0V2ZW50JywnTW9iaWxlIHBhZ2V2aWV3cycsJ1N0YW5kYXJkIE1vYmlsZScsd2luZG93LmxvY2F0aW9uLmhyZWYsJzEnKTt9fWNhdGNoKGV6ejEpe2lmKGNvbnNvbGUmJmNvbnNvbGUubG9nKQpjb25zb2xlLmxvZyhlenoxKTt9CnZhciBpZGVudF9kZjMzZTJlYjZiOTUwNzgwYzEwYjc1MzZiMTM3NDAwNjt0cnl7ZnVuY3Rpb24gc2hvd1Bob25lUG9wdXAoKXtnYVRyYWNrKCdfdHJhY2tFdmVudCcsJ1RlbGVwaG9uZXMnLCdTaXRlLU1vYmlsZScsJycsMSk7dmFyIGh0bWw9UGhvbmVzVG9SZXBsYWNlLnJlcGxhY2UoYXRvYigiUEdScGRpQmpiR0Z6Y3owbmJXVnVkU2MrUEhWc0lHTnNZWE56UFNKemRHRmpheTFzWXlJK1BHeHBQZ29KUEdFZ0lHaHlaV1k5SW5SbGJEcDdKRkJJVDA1RmZTSWdkR0Z5WjJWMFBTSmZjMlZzWmlJZ2MzUjViR1U5SW1admJuUXRjMmw2WlRvZ01qSndlRHNpSUdSaGRHRXRaR1Z3WVhKMGJXVnVkRDBpYjNSb1pYSWlQZ29KQ1R4cElHTnNZWE56UFNKbVlTQm1ZUzF3YUc5dVpTSWdjM1I1YkdVOUltMWhjbWRwYmpvZ00zQjRJREV3Y0hnZ01DQXhOWEI0T3lJK1BDOXBQZ29KQ1ZabGJuUmxjd29KUEM5aFBnb0pDand2YkdrK1BDOTFiRDQ4TDJScGRqND0iKSk7aWYoJChodG1sKS5maW5kKCdhJykubGVuZ3RoPT0xKXskKCcjcGhvbmVOdW1iZXJEaXYnKS5odG1sKGh0bWwpLmZpbmQoJ2EnKVswXS5jbGljaygpO3JldHVybjt9CiQoJyNwaG9uZU51bWJlckRpdicpLmh0bWwoaHRtbCkucmV2ZWFsKHthbmltYXRpb246J2ZhZGVBbmRQb3AnLGFuaW1hdGlvbnNwZWVkOjMwMCxjbG9zZW9uYmFja2dyb3VuZGNsaWNrOnRydWUsZGlzbWlzc21vZGFsY2xhc3M6J2Nsb3NlLXJldmVhbC1tb2RhbCd9KTt9CmZ1bmN0aW9uIGNoZWNrQXV0aCgpe2dhcGkuYXV0aC5hdXRob3JpemUoe2NsaWVudF9pZDpnYXBpY2xpZW50SWQsc2NvcGU6Z2FwaXNjb3BlcyxpbW1lZGlhdGU6ZmFsc2V9LGhhbmRsZUF1dGhSZXN1bHQpO30KZnVuY3Rpb24gaGFuZGxlQXV0aFJlc3VsdChhdXRoUmVzdWx0KXtpZihhdXRoUmVzdWx0JiYhYXV0aFJlc3VsdC5lcnJvcil7b3Blbkdvb2dsZU1hcCh0cnVlKTt9ZWxzZXtvcGVuR29vZ2xlTWFwKGZhbHNlKTt9fQpmdW5jdGlvbiBvcGVuR29vZ2xlTWFwKCl7dmFyIG1hcFRvVXNlPSIiK2pzX2QyY19nZXRfdmFsKCIxNDA0cmEwNGJ3cmtvNHdnIikrIiI7dmFyIHVybD0iaHR0cDovL21hcHMuIittYXBUb1VzZSsiLmNvbS8\/cT04NDUlMkMrcnVlK05vdHJlLURhbWUlMkMrUmVwZW50aWdueSUyQytRdSUzRmJlYyUyQytKNVkrMUM0Jno9MTMiO3dpbmRvdy5vcGVuKHVybCk7fX1jYXRjaChlenoxKXtpZihjb25zb2xlJiZjb25zb2xlLmxvZykKY29uc29sZS5sb2coZXp6MSk7fQp2YXIgaWRlbnRfNTBlMGE0Yzc1NzkxNWJhMDVmNjNkMGI1Mjg2YWZiOTc7dHJ5e2pRdWVyeShmdW5jdGlvbigkKXskKCIjVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIikucG9wdXBpemUoeyJvbkJlZm9yZU9wZW4iOmZ1bmN0aW9uKCl7dHJhZGVpbnBvcHVwZDJjLm9uQmVmb3JlT3BlbigpO30sIm9uQmVmb3Jlc3VibWl0IjpmdW5jdGlvbihwb3B1cCl7cmV0dXJuIHRyYWRlaW5wb3B1cGQyYy5vbkJlZm9yZVN1Ym1pdChwb3B1cCk7fSwib25BZnRlcnN1Ym1pdCI6ZnVuY3Rpb24ocG9wdXApe3RyYWRlaW5wb3B1cGQyYy5vbkFmdGVyU3VibWl0KHBvcHVwKTtDb29raWVzLnNldCgncG9wdXBGb3JtRmlsbGVkJyxudWxsLG51bGwsJy8nKTtDb29raWVzLnNldCgndHJhZGVJblBvcHVwU2hvd24nLG51bGwsbnVsbCwnLycpO2lmKCQoJyN0cmFkZUluQmFyJykubGVuZ3RoKXskKCcjdHJhZGVJbkJhcicpLmhpZGUoKTt9CmlmKCQoJyN0cmFkZWluQmFyRmxvYXQnKS5sZW5ndGgpeyQoJyN0cmFkZWluQmFyRmxvYXQnKS5oaWRlKCk7fX0sIm9uQmVmb3JlVmFsaWRhdGlvbiI6ZnVuY3Rpb24ocG9wdXApe3JldHVybiB0cmFkZWlucG9wdXBkMmMub25CZWZvcmVWYWxpZGF0aW9uKHBvcHVwKTt9LCJvbkJlZm9yZUNsb3NlIjpmdW5jdGlvbihwb3B1cCl7Q29va2llcy5nZXQoJ3RyYWRlSW5Qb3B1cFNob3duJyxudWxsLG51bGwsJy8nKTskKCcjdHJhZGVJbkJhclBvcHVwU3VibWl0JykucHJvcCgnZGlzYWJsZWQnLGZhbHNlKTskKCcjdHJhZGVJbkJhclBvcHVwU3VibWl0Jykuc2hvdygpO3RyYWRlaW5wb3B1cGQyYy5pbml0VHJhZGVJblN0ZXAxKCk7JCgnaW5wdXRbbmFtZT1zdGVwM2RvbmVdJykudmFsKDApOyQoJyNsZWFkU2VudCcpLnJlbW92ZSgpOyQoJyN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyRGVhbGVyU3RlcCcpLmhpZGUoKTt9LCJvbkJlZm9yZUluaXRpYWxpemUiOmZ1bmN0aW9uKHBvcHVwKXtwb3B1cC5zZXR0aW5ncy5mb3JtLnNlbmRUbz1wb3B1cC5zZXR0aW5ncy5mb3JtLnNlbmRUbztwb3B1cC5zZXR0aW5ncy5mb3JtLnNlbmRUb0FERj1wb3B1cC5zZXR0aW5ncy5mb3JtLnNlbmRUb0FERjt9LCJvbkFmdGVySW5pdGlhbGl6ZSI6ZnVuY3Rpb24oc2VsZil7dHJhZGVJbkJhckluaXRpYWxpemUoKTt0cmFkZWlucG9wdXBkMmMuaW5pdCgpO3dpbmRvdy5sYXVuY2hUcmFkZUluUG9wdXA9ZnVuY3Rpb24oc291cmNlKXt2YXIgcD0kKCIjVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIikucG9wdXBpemUoe3BvcHVwRXZlbnRTb3VyY2U6c291cmNlfSk7aWYoc291cmNlIT0iYXV0b21hdGljIil7cC5zZXRUcmlnZ2VyKCJjbGljayIpO30KcC5vcGVuKCk7cmV0dXJuIGZhbHNlO30KaWYodHlwZW9mIHBvcHVwRGVmYXVsdE9uQWZ0ZXJJbml0aWFsaXplIT0idW5kZWZpbmVkIil7dmFyIHBvcHVwVHlwZT0idXNlZCI7dmFyIGN1cnJlbnRQYWdlPSIiK2pzX2QyY19nZXRfdmFsKCIxNmQ3dnd0NjZwbW93bzBrIikrIiI7dmFyIHRtcD1wb3B1cERlZmF1bHRPbkFmdGVySW5pdGlhbGl6ZSgidXNlZCIsIiIranNfZDJjX2dldF92YWwoIjZqeXA0NjY0dmd3czgwdyIpKyIiLGZhbHNlLCJ0cmFkZUluQmFyUG9wdXAiLCIiK2pzX2QyY19nZXRfdmFsKCIxNmQ3dnd0NjZwbW93bzBrIikrIiIsIlRyYWRlSW5CYXJQb3B1cENvbnRhaW5lciIsZmFsc2UpO3JldHVybiB0bXA7fX0sIm9uQmVmb3JlU2VuZE1haWwiOmZ1bmN0aW9uKHBvcHVwKXtpZignJz09Jycpe2lmKGVtYWlsSGFuZGxlci5nZXREZXAoKT09J05FVycpe2VtYWlsSGFuZGxlci5zZW5kVG89JzBiN2ZlODNiMjAzYjY5MTBmMDIwMWE3MjUxN2MyZWYwfDMyNTU2Njk4ODYnO2VtYWlsSGFuZGxlci5zZW5kVG9BREZGb3JtYXQ9J2JhNjIwYzNmMmVlNTc1NGNmYWIzY2ZhZDE0MTc1NzNjfDMyNTU2Njk4ODYnO2VtYWlsSGFuZGxlci5zZW5kVG9BREY9J2JhNjIwYzNmMmVlNTc1NGNmYWIzY2ZhZDE0MTc1NzNjfDMyNTU2Njk4ODYnO31lbHNle2VtYWlsSGFuZGxlci5zZW5kVG89JycranNfZDJjX2dldF92YWwoIjNwbTZ0dmdxcWVndzR3IikrJyc7ZW1haWxIYW5kbGVyLnNlbmRUb0FERkZvcm1hdD0nYmE2MjBjM2YyZWU1NzU0Y2ZhYjNjZmFkMTQxNzU3M2N8MzI1NTY2OTg4Nic7ZW1haWxIYW5kbGVyLnNlbmRUb0FERj0nYmE2MjBjM2YyZWU1NzU0Y2ZhYjNjZmFkMTQxNzU3M2N8MzI1NTY2OTg4Nic7fX0KaWYoZW1haWxIYW5kbGVyLmdldERlcCgpPT0nTkVXJyl7ZW1haWxIYW5kbGVyLm1haWxJRD0ncHJpY2V2ZWhpY2xlbmV3Jzt9ZWxzZXtlbWFpbEhhbmRsZXIubWFpbElEPSdwcmljZXZlaGljbGUnO319LCJvbkFmdGVyQ29uc2VudCI6ZnVuY3Rpb24ocG9wdXApeyQoJyN0cmFkZUluQmFyUG9wdXBTdWJtaXQnKS5wcm9wKCdkaXNhYmxlZCcsZmFsc2UpOyQoJyN0cmFkZUluQmFyUG9wdXBTdWJtaXQnKS5zaG93KCk7fSwiY29va2llRHVyYXRpb24iOjYwLCJjb29raWVOYW1lIjoidHJhZGVJblBvcHVwU2hvd24iLCJjb29raWVDcmVhdGUiOiJvblN1Ym1pdCIsImdvb2dsZVRyYWNraW5nIjp7ImlkU3VmZml4IjoiIiwibGFiZWwiOiIiLCJsYWJlbHNlY3Rpb24iOiIiLCJpc2V4cHJlc3MiOjAsImlzcHJvbW8iOjAsImlzaG9tZXBhZ2UiOjAsImlzbW9iaWxlIjowfSwiZm9ybSI6eyJlbWFpbGlkIjoiUHJpY2VWZWhpY2xlIiwib2ZmZXJ0eXBlIjoidHJhZGVJbkJhclBvcHVwIiwibmFtZSI6bnVsbCwic2VuZFRvIjoiIitqc19kMmNfZ2V0X3ZhbCgiM3BtNnR2Z3FxZWd3NHciKSsiIiwic2VuZFRvQURGIjoiYWRmbGVhZHNAc3VpdmljbGllbnQuY2E7bW9uc2l0ZWQyY21lZGlhLWh5dW5kYWlyZXBlbnRpZ255QGxlYWRhY3Rpdml4LmNhIiwiT0tCdXR0b25DbGFzcyI6InRyYWRlSW5CYXJQb3B1cFN1Ym1pdCIsIkNhbmNlbEJ1dHRvbkNsYXNzIjoiY2FuY2VsQnRuIiwic2hvd0VtYWlsQ29uZmlybWF0aW9uIjp0cnVlLCJmcm9tQUEiOmZhbHNlLCJjb25maXJtYXRpb24iOnsidGl0bGUiOm51bGwsImJvZHkiOm51bGx9fSwic3RhdGUiOltdLCJ2ZWhpY2xlU3RhdGUiOiJ1c2VkIiwiY2xvc2VPblN1Ym1pdCI6ZmFsc2UsImZpbGxmbGFnIjpmYWxzZSwibm90cmFuc2Zvcm0iOnRydWUsIm5hbWUiOmZhbHNlLCJhbmltYXRpb24iOiJmYWRlQW5kUG9wIiwiYW5pbWF0aW9uU3BlZWQiOjMwMCwiY2xvc2VPbkJhY2tncm91bmRDbGljayI6ZmFsc2UsImRpc21pc3NNb2RhbENsYXNzIjoiY2xvc2UtcmV2ZWFsLW1vZGFsIiwiY2xvc2VCdXR0b24iOnRydWUsImJ5cGFzc0NvbnNlbnQiOmZhbHNlLCJ0aHJlc2hvbGQiOmZhbHNlLCJ0aHJlc2hvbGRWYWx1ZSI6ZmFsc2UsInNjcm9sbHVwIjpmYWxzZSwibWFpbnBvcHVwIjpmYWxzZSwiY291bnRkb3duIjoxNzczNTQ3MjAwLCJjb25maXJtRm9ybSI6W119KTt9KTt9Y2F0Y2goZXp6MSl7aWYoY29uc29sZSYmY29uc29sZS5sb2cpCmNvbnNvbGUubG9nKGV6ejEpO30KdmFyIGlkZW50X2UyNWQ2Y2ZhYjM5MjdkNzhkOWUyZjVhMmUzNDc2MDE2O3RyeXttYWlsU2VudEhhbmRsZXI9Z2V0TWFpbFNlbnRIYW5kbGVyKCdfVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyJyk7fWNhdGNoKGV6ejEpe2lmKGNvbnNvbGUmJmNvbnNvbGUubG9nKQpjb25zb2xlLmxvZyhlenoxKTt9CnZhciBpZGVudF80ZDI1YmEwNjQxNzEzODc4NWFjZmE1MDA2NWJiYmFhOTt0cnl7fWNhdGNoKGV6ejEpe2lmKGNvbnNvbGUmJmNvbnNvbGUubG9nKQpjb25zb2xlLmxvZyhlenoxKTt9CnZhciBpZGVudF8xNGQyNjUzMThhMTFkZGU3NWUzNTJjZTMxY2Q0M2RlYjt0cnl7JChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXt2YXIgaGNfbGFuZz0oJCgnI2FjdGl2ZXNpdGVsYW5ndWFnZScpLnZhbCgpPT0nRU5HTElTSCc\/J2VuZ2xpc2gnOidmcmVuY2gnKTt2YXIgaGNfaW1nPSdIeXVuZGFpLUZyLnBuZyc7dmFyIGhjX3RleHQ9IkxlIG5vbSwgbGVzIGxvZ29zLCBub21zIGRlIHByb2R1aXRzLCBub21zIGRlcyBjYXJhY3QmZWFjdXRlO3Jpc3RpcXVlcywgaW1hZ2VzIGV0IHNsb2dhbnMgSHl1bmRhaTxkaXYvPnNvbnQgZGVzIG1hcnF1ZXMgZGUgY29tbWVyY2UgYXBwYXJ0ZW5hbnQgJmFncmF2ZTsgSHl1bmRhaSBBdXRvIENhbmFkYSBDb3JwLiI7aWYoaGNfbGFuZz09J2VuZ2xpc2gnKXtoY19pbWc9J0h5dW5kYWktRW4ucG5nJztoY190ZXh0PSJUaGUgSHl1bmRhaSBuYW1lLCBsb2dvcywgcHJvZHVjdCBuYW1lcywgZmVhdHVyZSBuYW1lcywgaW1hZ2VzIGFuZCBzbG9nYW5zPGRpdi8+YXJlIHRyYWRlbWFya3Mgb3duZWQgYnkgSHl1bmRhaSBBdXRvIENhbmFkYSBDb3JwLiI7fQp2YXIgaHRtbD0iIjskKGh0bWwpLmFwcGVuZFRvKCcjbGFuZ3VhZ2VDaGFuZ2VyRGl2Jyk7JCgnPGRpdj4nK2hjX3RleHQrJzwvZGl2PicpLmFwcGVuZFRvKCcjZm9vdGVyRGl2IC5jb3B5Jyk7fSk7fWNhdGNoKGV6ejEpe2lmKGNvbnNvbGUmJmNvbnNvbGUubG9nKQpjb25zb2xlLmxvZyhlenoxKTt9CnZhciBpZGVudF81OWYzMTBkZmJlOWFkMTgyYTU4MzZhZGQzYTQ5YTQwMTt0cnl7dmFyIF9tc3E9X21zcXx8W107X21zcS5wdXNoKFsnX3NldFdlYnNpdGUnLCcnXSxbJ190cmFja1BhZ2V2aWV3J10pOyhmdW5jdGlvbigpe3ZhciBtU2lnbmFsPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO21TaWduYWwudHlwZT0ndGV4dC9qYXZhc2NyaXB0JzttU2lnbmFsLmFzeW5jPXRydWU7bVNpZ25hbC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywnb3B0YW5vbi1jYXRlZ29yeS1DMDAwMicpO21TaWduYWwuc2V0QXR0cmlidXRlKCd0eXBlJywndGV4dC9wbGFpbicpO21TaWduYWwuc3JjPSgnaHR0cHM6Jz09ZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2w\/J2h0dHBzOi8vJzonaHR0cDovLycpKydmemxuay5jb20vc2lnbmFscy5qcyc7dmFyIHM9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NjcmlwdCcpWzBdO3MucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobVNpZ25hbCxzKTt9KSgpO31jYXRjaChlenoxKXtpZihjb25zb2xlJiZjb25zb2xlLmxvZykKY29uc29sZS5sb2coZXp6MSk7fQp2YXIgaWRlbnRfZTUzYTZjMWI5MTU5OTI3NDBhYjU5ZGE1ZGQ1N2NiMDM7dHJ5e3ZhciBlc2ZEZWxheT0xMDtmdW5jdGlvbiBlc2NhcGVGcmFtZSgpe2lmKChkb2N1bWVudC5sb2NhdGlvbisnJykuaW5kZXhPZignbmZyPTEnKT09LTEpcmV0dXJuOyQoJ2EnKS5ub3QoJ1t0YXJnZXRdJykuZWFjaChmdW5jdGlvbigpe3ZhciBlbD0kKHRoaXMpO3ZhciB0YXJnZXQ9ZWwuYXR0cigndGFyZ2V0Jyk7dmFyIGhyZWY9ZWwuYXR0cignaHJlZicpO2lmKHRhcmdldCYmdGFyZ2V0Lmxlbmd0aD4wKXtyZXR1cm47fQppZighaHJlZilyZXR1cm47dmFyIHByb3RvY29sPWhyZWYubWF0Y2goL14oW2EtejAtOV0rKTovKTtpZihwcm90b2NvbCE9bnVsbCYmIXByb3RvY29sWzFdLm1hdGNoKC9eaHR0cC8pKXtyZXR1cm47fQppZihocmVmWzBdPT09JyMnKXtyZXR1cm47fQplbC5hdHRyKCd0YXJnZXQnLCdfdG9wJyk7fSk7c2V0VGltZW91dChlc2NhcGVGcmFtZSwxMDAqZXNmRGVsYXkrKyk7fQpqUXVlcnkoZXNjYXBlRnJhbWUpO2Z1bmN0aW9uIHRvZ2dsZVN1Ym1lbnVzKG9iail7JChvYmopLmNsb3Nlc3QoJ2xpJykuZmluZCgnLnN1Ym1lbnVJdGVtQ29udGFpbmVyLCAuc3VibWVudUl0ZW1DaGlsZENvbnRhaW5lcicpLmZpcnN0KCkuc2xpZGVUb2dnbGUoJ3Nsb3cnKTtpZigkKG9iaikuaGFzQ2xhc3MoJ21lbnVDb2xscGFzZScpKXskKG9iaikucmVtb3ZlQ2xhc3MoJ21lbnVDb2xscGFzZScpO31lbHNleyQob2JqKS5hZGRDbGFzcygnbWVudUNvbGxwYXNlJyk7fQpyZXR1cm4gZmFsc2U7fQpmdW5jdGlvbiBnZXRQYXJhbWV0ZXJCeU5hbWUobmFtZSl7bmFtZT1uYW1lLnJlcGxhY2UoL1tcW10vLCJcWyIpLnJlcGxhY2UoL1tcXV0vLCJcXSIpO3ZhciByZWdleD1uZXcgUmVnRXhwKCJbXD8mXSIrbmFtZSsiPShbXiYjXSopIikscmVzdWx0cz1yZWdleC5leGVjKGxvY2F0aW9uLnNlYXJjaCk7cmV0dXJuIHJlc3VsdHM9PW51bGw\/IiI6ZGVjb2RlVVJJQ29tcG9uZW50KHJlc3VsdHNbMV0ucmVwbGFjZSgvXCsvZywiICIpKTt9CnZhciB1dG1fc291cmNlPWdldFBhcmFtZXRlckJ5TmFtZSgndXRtX3NvdXJjZScpO2pRdWVyeShmdW5jdGlvbigkKXskKCcubm90Q2xpY2thYmxlJykub24oJ2NsaWNrJyxmdW5jdGlvbihldmVudCl7ZXZlbnQucHJldmVudERlZmF1bHQoKTt0b2dnbGVTdWJtZW51cygkKCcubWVudUV4cGFuZCcsdGhpcykpO3JldHVybiBmYWxzZTt9KTskKCcubWVudUV4cGFuZCcpLm9uKCdjbGljaycsZnVuY3Rpb24oZXZlbnQpe2V2ZW50LnByZXZlbnREZWZhdWx0KCk7dG9nZ2xlU3VibWVudXMoJCgnLm1lbnVFeHBhbmQnLHRoaXMuY2xvc2VzdCgnLm1lbnUtaXRlbScpKSk7cmV0dXJuIGZhbHNlO30pO2lmKCQoJy51c2VkcGhvbmVmb3JtYXRlZCcpLmxlbmd0aD4wJiYkKCcjYWdlbnRwaG9uZScpLmxlbmd0aD4wJiYkKCcjYWdlbnRwaG9uZScpLnZhbCgpLmxlbmd0aD41KXskKCcudXNlZHBob25lZm9ybWF0ZWQnKS5hdHRyKCdocmVmJywndGVsOicrJCgnI2FnZW50cGhvbmUnKS52YWwoKSk7fQpzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7JCh3aW5kb3cpLm9uKCdvcmllbnRhdGlvbmNoYW5nZScsZnVuY3Rpb24oZXZlbnQpe2lmKHdpbmRvdy5vcmllbnRhdGlvbj09OTB8fHdpbmRvdy5vcmllbnRhdGlvbj09LTkwfHx3aW5kb3cub3JpZW50YXRpb249PTI3MCl7JCgnbWV0YVtuYW1lPSJ2aWV3cG9ydCJdJykuYXR0cignY29udGVudCcsJ2hlaWdodD1kZXZpY2Utd2lkdGgsd2lkdGg9ZGV2aWNlLWhlaWdodCxpbml0aWFsLXNjYWxlPTEsbWF4aW11bS1zY2FsZT0zJyk7JCh3aW5kb3cpLnRyaWdnZXIoJ3Jlc2l6ZScpO31lbHNleyQoJ21ldGFbbmFtZT0idmlld3BvcnQiXScpLmF0dHIoJ2NvbnRlbnQnLCdoZWlnaHQ9ZGV2aWNlLWhlaWdodCx3aWR0aD1kZXZpY2Utd2lkdGgsaW5pdGlhbC1zY2FsZT0xLG1heGltdW0tc2NhbGU9MycpOyQod2luZG93KS50cmlnZ2VyKCdyZXNpemUnKTt9fSkudHJpZ2dlcignb3JpZW50YXRpb25jaGFuZ2UnKTtpZih1dG1fc291cmNlIT0iIil7Q29va2llcy5zZXQoJ3V0bV9sYW5kaW5nX2Zvb3RlcicsbnVsbCxudWxsLCIvIik7fQppZihDb29raWVzLmdldCgidXRtX2xhbmRpbmdfZm9vdGVyIik9PW51bGwpe0Nvb2tpZXMuc2V0KCd1dG1fbGFuZGluZ19mb290ZXInLHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSxudWxsLCIvIik7fX0pO30sMTAwMDApO2Z1bmN0aW9uIHNob3dOb3JtYWxTaXRlKCl7dmFyIGRvbWFpbj0iIitqc19kMmNfZ2V0X3ZhbCgidTZ0aHJ3OW9sY2c4dzh3IikrIiI7Q29va2llcy5zZXQoJ1VzZUZ1bGxTaXRlJywnMScsbnVsbCwiLyIsZG9tYWluKTt3aW5kb3cubG9jYXRpb24uaHJlZj0nJytqc19kMmNfZ2V0X3ZhbCgiY291OWhtNDI5MWMwa29jIikrJyc7fX1jYXRjaChlenoxKXtpZihjb25zb2xlJiZjb25zb2xlLmxvZykKY29uc29sZS5sb2coZXp6MSk7fQp2YXIgaWRlbnRfNTlhMWUyYmVjZTdiNGJiM2Q4NDYyYThlZDg2MWE5Y2U7dHJ5eyFmdW5jdGlvbihmLGIsZSx2LG4sdCxzKXtpZihmLmZicSlyZXR1cm47bj1mLmZicT1mdW5jdGlvbigpe24uY2FsbE1ldGhvZD9uLmNhbGxNZXRob2QuYXBwbHkobixhcmd1bWVudHMpOm4ucXVldWUucHVzaChhcmd1bWVudHMpfTtpZighZi5fZmJxKWYuX2ZicT1uO24ucHVzaD1uO24ubG9hZGVkPSEwO24udmVyc2lvbj0nMi4wJztuLnF1ZXVlPVtdO3Q9Yi5jcmVhdGVFbGVtZW50KGUpO3QuYXN5bmM9ITA7dC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywnb3B0YW5vbi1jYXRlZ29yeS1DMDAwMi1DMDAwMy1DMDAwNC1DMDAwNScpO3Quc2V0QXR0cmlidXRlKCd0eXBlJywndGV4dC9wbGFpbicpO3Quc3JjPXY7dC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywnb3B0YW5vbi1jYXRlZ29yeS1DMDAwMi1DMDAwMy1DMDAwNC1DMDAwNScpO3Quc2V0QXR0cmlidXRlKCd0eXBlJywndGV4dC9wbGFpbicpO3M9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZShlKVswXTtzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHQscyl9KHdpbmRvdyxkb2N1bWVudCwnc2NyaXB0JywnaHR0cHM6Ly9jb25uZWN0LmZhY2Vib29rLm5ldC9lbl9VUy9mYmV2ZW50cy5qcycpO2ZicSgnaW5pdCcsJzIwNjgyODQxMzA5Njc4MCcpO2ZicSgndHJhY2snLCdWaWV3Q29udGVudCcpO31jYXRjaChlenoxKXtpZihjb25zb2xlJiZjb25zb2xlLmxvZykKY29uc29sZS5sb2coZXp6MSk7fQp2YXIgaWRlbnRfMzE0Y2FhNWJmNTkwOTJjNmY3Y2Y2YTJmYzcyZTk1MTM7dHJ5e2lmKHR5cGVvZiBwYWdlIT09J3VuZGVmaW5lZCcmJnBhZ2U9PSJORVdDQVJERVRBSUxTIil7JChkb2N1bWVudCkub24oJ2NsaWNrJywnYScsZnVuY3Rpb24oKXt2YXIgb2JqPSQodGhpcyk7dmFyIGhyZWY9b2JqLmF0dHIoJ2hyZWYnKTt2YXIgdGV4dD1vYmoudGV4dCgpO2lmKHRleHQubGVuZ3RoPjAmJm9iai5maW5kKCdpbWcnKS5sZW5ndGg9PTAmJnR5cGVvZiBocmVmIT0ndW5kZWZpbmVkJyl7dmFyIHRpdGxlPSQoJy5icmFuZGVtYWlsW25hbWU9ImJyYW5kIl0nKS52YWwoKSsnLScrJCgnLm1vZGVsZW1haWxbbmFtZT0ibW9kZWwiXScpLnZhbCgpKyctJyskKCcueWVhcmVtYWlsJykudmFsKCk7aWYoaHJlZiE9IiMiJiZocmVmIT0iIiYmaHJlZi5pbmRleE9mKCJqYXZhc2NyaXB0Iik8MCYmaHJlZi5pbmRleE9mKCd7Jyk8MCl7dGl0bGU9aHJlZjt9CmdhVHJhY2soJ190cmFja0V2ZW50JywnTmV3LVZEUC1PdXRib3VuZC1jbGlja3MnLG9iai50ZXh0KCksdGl0bGUpO319KX19Y2F0Y2goZXp6MSl7aWYoY29uc29sZSYmY29uc29sZS5sb2cpCmNvbnNvbGUubG9nKGV6ejEpO30KdmFyIGlkZW50XzAwZDBkNDI1OTcxMTIwNTkwODE5MWFhZGE3YWI0ZTc2O3RyeXtqUXVlcnkoZnVuY3Rpb24oJCl7JCgiI2QyY0Zvb3RlckNvb2tpZURlbGV0ZSIpLnBvcHVwaXplKHsiY29va2llRHVyYXRpb24iOjMwLCJjb29raWVOYW1lIjpudWxsLCJjb29raWVDcmVhdGUiOm51bGwsImdvb2dsZVRyYWNraW5nIjp7ImlkU3VmZml4IjoiIiwibGFiZWwiOiIiLCJsYWJlbHNlY3Rpb24iOiIiLCJpc2V4cHJlc3MiOjAsImlzcHJvbW8iOjAsImlzaG9tZXBhZ2UiOjAsImlzbW9iaWxlIjowfSwiZm9ybSI6eyJlbWFpbGlkIjpudWxsLCJvZmZlcnR5cGUiOm51bGwsIm5hbWUiOm51bGwsInNlbmRUbyI6bnVsbCwic2VuZFRvQURGIjpudWxsLCJPS0J1dHRvbkNsYXNzIjoic3VibWl0QnRuIiwiQ2FuY2VsQnV0dG9uQ2xhc3MiOiJjYW5jZWxCdG4iLCJzaG93RW1haWxDb25maXJtYXRpb24iOmZhbHNlLCJmcm9tQUEiOmZhbHNlLCJjb25maXJtYXRpb24iOnsidGl0bGUiOm51bGwsImJvZHkiOm51bGx9fSwic3RhdGUiOltdLCJ2ZWhpY2xlU3RhdGUiOiJ1c2VkIiwiY2xvc2VPblN1Ym1pdCI6dHJ1ZSwiZmlsbGZsYWciOmZhbHNlLCJub3RyYW5zZm9ybSI6dHJ1ZSwibmFtZSI6ZmFsc2UsImFuaW1hdGlvbiI6ImZhZGVBbmRQb3AiLCJhbmltYXRpb25TcGVlZCI6MzAwLCJjbG9zZU9uQmFja2dyb3VuZENsaWNrIjpmYWxzZSwiZGlzbWlzc01vZGFsQ2xhc3MiOiJjbG9zZS1yZXZlYWwtbW9kYWwiLCJjbG9zZUJ1dHRvbiI6dHJ1ZSwiYnlwYXNzQ29uc2VudCI6ZmFsc2UsInRocmVzaG9sZCI6ZmFsc2UsInRocmVzaG9sZFZhbHVlIjpmYWxzZSwic2Nyb2xsdXAiOmZhbHNlLCJtYWlucG9wdXAiOmZhbHNlLCJzaG93b25sb2FkIjpmYWxzZSwiY291bnRkb3duIjoxNzczNTQ3MjAwLCJjb25maXJtRm9ybSI6W3sibmFtZSI6ImxhYmVsIiwidmFsdWUiOiIiLCJjbGFzcyI6ImxhYmVsZW1haWwifSx7Im5hbWUiOiJzZWN0aW9uIiwidmFsdWUiOiIiLCJjbGFzcyI6ImxhYmVsc2VjdGlvbiJ9LHsibmFtZSI6ImJyYW5kIiwidmFsdWUiOiIiK2pzX2QyY19nZXRfdmFsKCIxZXJpdjkwMHBkYTg4d3c4IikrIiIsImNsYXNzIjoiYnJhbmRlbWFpbCJ9LHsibmFtZSI6Im1vZGVsIiwidmFsdWUiOiIiK2pzX2QyY19nZXRfdmFsKCIxMHBhN3YzcWVsZGNvc2siKSsiIiwiY2xhc3MiOiJtb2RlbGVtYWlsIn0seyJuYW1lIjoieWVhciIsInZhbHVlIjoiIitqc19kMmNfZ2V0X3ZhbCgicjgyemZreGEyZHdzczAwIikrIiIsImNsYXNzIjoieWVhcmVtYWlsIn0seyJuYW1lIjoiZ29vZ2xlaWQiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6Imdvb2dsZWlkZDJjbWVkaWEiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImJpbmdjb25pZCIsInZhbHVlIjoiIn0seyJuYW1lIjoiYmluZ2FjdGlvbmlkIiwidmFsdWUiOiIifSx7Im5hbWUiOiJiaW5nZG9tYWluaWQiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImFkcm9sbEFkdiIsInZhbHVlIjoiIn0seyJuYW1lIjoiYWRyb2xsUGl4IiwidmFsdWUiOiIifSx7Im5hbWUiOiJmYWNlYm9va0NvbklkIiwidmFsdWUiOiIyMDY4Mjg0MTMwOTY3ODAifSx7Im5hbWUiOiJkb21haW4iLCJ2YWx1ZSI6Imh5dW5kYWlyZXBlbnRpZ255LmNvbSJ9LHsibmFtZSI6InJlZmVycmVyIiwidmFsdWUiOiIiK2pzX2QyY19nZXRfdmFsKCJpM2dzYXhnczVqazh3Y2siKSsiIn0seyJuYW1lIjoiaXNleHByZXNzIiwidmFsdWUiOiIwIiwiY2xhc3MiOiJpc2V4cHJlc3MifSx7Im5hbWUiOiJpc3Byb21vIiwidmFsdWUiOiIwIn0seyJuYW1lIjoiaXNob21lcGFnZSIsInZhbHVlIjoiMCJ9LHsibmFtZSI6InRleHRDYXJTZWN0aW9uVHlwZSIsInZhbHVlIjoiIitqc19kMmNfZ2V0X3ZhbCgic283eXVxYWo0ZHdjYzhzIikrIiJ9LHsibmFtZSI6ImZyb21BQSIsInZhbHVlIjoiIn0seyJuYW1lIjoibGFuZyIsInZhbHVlIjoiRlJFTkNIIn1dfSk7fSk7fWNhdGNoKGV6ejEpe2lmKGNvbnNvbGUmJmNvbnNvbGUubG9nKQpjb25zb2xlLmxvZyhlenoxKTt9CnZhciBpZGVudF85OGViZDlhYTMyNDAxNDMwYWU1YjZkOTdkODk4ODdhMTt0cnl7alF1ZXJ5KGZ1bmN0aW9uKCQpe3ZhciBpc1ZEUFBhZ2U9JCgnI3BhZ2UnKS52YWwoKT09J2RldGFpbHNOZXcnJiYkKCcjaGFzUERGJykudmFsKCk9PScxJztmdW5jdGlvbiBsb2dQYWdlVmlld0V2ZW50KGV2ZW50LGV2ZW50Q2F0ZWdvcnksYWRkZWRJbmZvKXt0cnl7YWN0aXZlVXNlclByb2ZpbGVNbmcubG9nUGFnZVZpZXdFdmVudChldmVudCxldmVudENhdGVnb3J5LGFkZGVkSW5mbyk7fWNhdGNoKGUpe2NvbnNvbGUubG9nKGUpO319CnZhciBtYWtlVGV4dD0kKCdbbmFtZT0iYnJhbmQiXScpLmxlbmd0aD4wPyQoJ1tuYW1lPSJicmFuZCJdJykudmFsKCk6Jyc7dmFyIG1vZGVsVGV4dD0kKCdbbmFtZT0ibW9kZWwiXScpLmxlbmd0aD4wPyQoJ1tuYW1lPSJtb2RlbCJdJykudmFsKCk6Jyc7dmFyIHllYXJUZXh0PSQoJ1tuYW1lPSJ5ZWFyIl0nKS5sZW5ndGg+MD8kKCdbbmFtZT0ieWVhciJdJykudmFsKCk6Jyc7bWFrZVRleHQ9bWFrZVRleHQ\/bWFrZVRleHQ6KCQoJyNwb3B1cG1ha2UnKS5sZW5ndGg+MD8kKCcjcG9wdXBtYWtlJykudmFsKCk6JyAnKTttb2RlbFRleHQ9bW9kZWxUZXh0P21vZGVsVGV4dDooJCgnI3BvcHVwbW9kZWwnKS5sZW5ndGg+MD8kKCcjcG9wdXBtb2RlbCcpLnZhbCgpOicgJyk7eWVhclRleHQ9eWVhclRleHQ\/eWVhclRleHQ6KCQoJyNwb3B1cHllYXInKS5sZW5ndGg+MD8kKCcjcG9wdXB5ZWFyJykudmFsKCk6JyAnKTt2YXIgdmRwVG9hc3RlclBERlRleHQ9ImRlIGNlICIranNfZDJjX2dldF92YWwoImNra242ZXQ5MDN3b3NrIikrIiAiK2pzX2QyY19nZXRfdmFsKCI0MmNsc2h5cXN4d2tza28iKSsiICIranNfZDJjX2dldF92YWwoIjFwOTZwcTIydDI3NGNjYyIpKyIgbWFpbnRlbmFudCEiO3ZkcFRvYXN0ZXJQREZUZXh0PXZkcFRvYXN0ZXJQREZUZXh0LnJlcGxhY2UoJyMjTUFLRSMjJyxtYWtlVGV4dCk7dmRwVG9hc3RlclBERlRleHQ9dmRwVG9hc3RlclBERlRleHQucmVwbGFjZSgnIyNNT0RFTCMjJyxtb2RlbFRleHQpO3ZkcFRvYXN0ZXJQREZUZXh0PXZkcFRvYXN0ZXJQREZUZXh0LnJlcGxhY2UoJyMjWUVBUiMjJyx5ZWFyVGV4dCk7dmFyIG9wdGlvbnNUb2FzdGVyMj17Im9uQ2xvc2UiOmZ1bmN0aW9uKCl7cmV0dXJuIGZhbHNlO30sImNsb3NlQnV0dG9uIjp0cnVlLCJkZWJ1ZyI6ZmFsc2UsIm5ld2VzdE9uVG9wIjpmYWxzZSwicHJvZ3Jlc3NCYXIiOmZhbHNlLCJwb3NpdGlvbkNsYXNzIjoidG9hc3QtYm90dG9tLWZ1bGwtd2lkdGgiLCJwcmV2ZW50RHVwbGljYXRlcyI6ZmFsc2UsIm9uY2xpY2siOmZ1bmN0aW9uKCl7Z2FUcmFjaygnX3RyYWNrRXZlbnQnLCdNb2JpbGUtVG9hc3RlcnMnLCdOZXVmLVZpZGVvJyx3aW5kb3cubG9jYXRpb24uaHJlZiwxKTt0b1Ntc1BERigndmlkZW9MaW5rJyk7bG9nUGFnZVZpZXdFdmVudCgnTW9iaWxlLVRvYXN0ZXInLCdUT0FTVEVSX01fRVZFTlRfTkVXX1ZJREVPJyk7cmV0dXJuIGZhbHNlO30sInNob3dEdXJhdGlvbiI6IjMwMCIsImhpZGVEdXJhdGlvbiI6IjEwMDAiLCJ0aW1lT3V0IjoiMCIsImV4dGVuZGVkVGltZU91dCI6IjEwMDAiLCJzaG93RWFzaW5nIjoic3dpbmciLCJoaWRlRWFzaW5nIjoibGluZWFyIiwic2hvd01ldGhvZCI6InNsaWRlRG93biIsImhpZGVNZXRob2QiOiJmYWRlT3V0IiwiY29sb3IiOiIjZmZmZmZmIiwiYmdDb2xvciI6IiMwMDAwMDAifTtpZihpc1ZEUFBhZ2UmJicxJz09dHJ1ZSl7dmFyIHRleHRCcm9jaHVyZT0nT3VpISBUZXh0ZXotbW9pIGxhIGJyb2NodXJlJzt2YXIgdGV4dFRvVXNlPXRleHRCcm9jaHVyZTt2YXIgdmRwVG9hc3Rlck1vZGVsWWVhcj12ZHBUb2FzdGVyUERGVGV4dDt0b2FzdHIub3B0aW9ucz17Im9uQ2xvc2UiOmZ1bmN0aW9uKCl7ZGVsYXllZFZpZGVvVG9hc3Rlcih2ZHBUb2FzdGVyUERGVGV4dCxvcHRpb25zVG9hc3RlcjIpO30sImNsb3NlQnV0dG9uIjp0cnVlLCJkZWJ1ZyI6ZmFsc2UsIm5ld2VzdE9uVG9wIjpmYWxzZSwicHJvZ3Jlc3NCYXIiOmZhbHNlLCJwb3NpdGlvbkNsYXNzIjoidG9hc3QtYm90dG9tLWZ1bGwtd2lkdGgiLCJwcmV2ZW50RHVwbGljYXRlcyI6ZmFsc2UsIm9uY2xpY2siOmZ1bmN0aW9uKCl7Z2FUcmFjaygnX3RyYWNrRXZlbnQnLCdNb2JpbGUtVG9hc3RlcnMnLCdOZXVmLUJyb2NodXJlJyx3aW5kb3cubG9jYXRpb24uaHJlZiwxKTt0b1Ntc1BERignYnJvY2h1cmVSZXF1ZXN0Jyk7ZGVsYXllZFZpZGVvVG9hc3Rlcih2ZHBUb2FzdGVyUERGVGV4dCxvcHRpb25zVG9hc3RlcjIpO2xvZ1BhZ2VWaWV3RXZlbnQoJ01vYmlsZS1Ub2FzdGVyJywnVE9BU1RFUl9NX0VWRU5UX05FV19CUk9DSFVSRScpO3JldHVybiBmYWxzZTt9LCJzaG93RHVyYXRpb24iOiIzMDAiLCJoaWRlRHVyYXRpb24iOiIxMDAwIiwidGltZU91dCI6IjAiLCJleHRlbmRlZFRpbWVPdXQiOiIxMDAwIiwic2hvd0Vhc2luZyI6InN3aW5nIiwiaGlkZUVhc2luZyI6ImxpbmVhciIsInNob3dNZXRob2QiOiJzbGlkZURvd24iLCJoaWRlTWV0aG9kIjoiZmFkZU91dCIsImNvbG9yIjoiI2ZmZmZmZiIsImJnQ29sb3IiOiIjMDA3ZmE1In07c2V0VGltZW91dChmdW5jdGlvbigpe3RvYXN0ci5zdWNjZXNzKHZkcFRvYXN0ZXJNb2RlbFllYXIrIjxici8+IENsaXF1ZXogaWNpLiIsdGV4dFRvVXNlKTskKCcjdG9hc3QtY29udGFpbmVyJykuY3NzKCd6LWluZGV4JywnMjE0NzQ4MzY0MScpOyQoJyN0b2FzdC1jb250YWluZXIgPiBkaXYnKS5jc3MoJ29wYWNpdHknLCcwLjk1Jyk7fSwwKTt9ZWxzZSBpZigkKCcjcGFnZScpLnZhbCgpPT0nZGV0YWlsc05ldycmJicxJz09dHJ1ZSl7dmFyIHRleHRCZXN0UHJpY2U9J091aSEgVGV4dGV6LW1vaSB2b3RyZSBtZWlsbGV1ciBwcml4Jzt2YXIgdGV4dFRvVXNlPXRleHRCZXN0UHJpY2U7dmFyIHZkcFRvYXN0ZXJNb2RlbFllYXI9InN1ciBjZSAiK2pzX2QyY19nZXRfdmFsKCI0MmNsc2h5cXN4d2tza28iKSsiICIranNfZDJjX2dldF92YWwoIjFwOTZwcTIydDI3NGNjYyIpKyIgTUFJTlRFTkFOVCEiO3ZkcFRvYXN0ZXJNb2RlbFllYXI9dmRwVG9hc3Rlck1vZGVsWWVhci5yZXBsYWNlKCcnK2pzX2QyY19nZXRfdmFsKCI0MmNsc2h5cXN4d2tza28iKSsnJyxtb2RlbFRleHQpO3ZkcFRvYXN0ZXJNb2RlbFllYXI9dmRwVG9hc3Rlck1vZGVsWWVhci5yZXBsYWNlKCcnK2pzX2QyY19nZXRfdmFsKCIxcDk2cHEyMnQyNzRjY2MiKSsnJyx5ZWFyVGV4dCk7dG9hc3RyLm9wdGlvbnM9eyJvbkNsb3NlIjpmdW5jdGlvbigpe2RlbGF5ZWRWaWRlb1RvYXN0ZXIodmRwVG9hc3RlclBERlRleHQsb3B0aW9uc1RvYXN0ZXIyKTt9LCJjbG9zZUJ1dHRvbiI6dHJ1ZSwiZGVidWciOmZhbHNlLCJuZXdlc3RPblRvcCI6ZmFsc2UsInByb2dyZXNzQmFyIjpmYWxzZSwicG9zaXRpb25DbGFzcyI6InRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoIiwicHJldmVudER1cGxpY2F0ZXMiOmZhbHNlLCJvbmNsaWNrIjpmdW5jdGlvbigpe2dhVHJhY2soJ190cmFja0V2ZW50JywnTW9iaWxlLVRvYXN0ZXJzJywnTmV1Zi1CZXN0LVByaWNlJyx3aW5kb3cubG9jYXRpb24uaHJlZiwxKTt0b1Ntc1BERignYmVzdFByaWNlTmV3Jyk7ZGVsYXllZFZpZGVvVG9hc3Rlcih2ZHBUb2FzdGVyUERGVGV4dCxvcHRpb25zVG9hc3RlcjIpO2xvZ1BhZ2VWaWV3RXZlbnQoJ01vYmlsZS1Ub2FzdGVyJywnVE9BU1RFUl9NX0VWRU5UX05FV19CRVNUX1BSSUNFJyk7cmV0dXJuIGZhbHNlO30sInNob3dEdXJhdGlvbiI6IjMwMCIsImhpZGVEdXJhdGlvbiI6IjEwMDAiLCJ0aW1lT3V0IjoiMCIsImV4dGVuZGVkVGltZU91dCI6IjEwMDAiLCJzaG93RWFzaW5nIjoic3dpbmciLCJoaWRlRWFzaW5nIjoibGluZWFyIiwic2hvd01ldGhvZCI6InNsaWRlRG93biIsImhpZGVNZXRob2QiOiJmYWRlT3V0IiwiY29sb3IiOiIjZmZmZmZmIiwiYmdDb2xvciI6IiMwMDdmYTUifTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dG9hc3RyLnN1Y2Nlc3ModmRwVG9hc3Rlck1vZGVsWWVhcisiPGJyLz4gQ2xpcXVleiBpY2kuIix0ZXh0VG9Vc2UpOyQoJyN0b2FzdC1jb250YWluZXInKS5jc3MoJ3otaW5kZXgnLCcyMTQ3NDgzNjQxJyk7JCgnI3RvYXN0LWNvbnRhaW5lciA+IGRpdicpLmNzcygnb3BhY2l0eScsJzAuOTUnKTt9LDApO319KTtmdW5jdGlvbiBkZWxheWVkVmlkZW9Ub2FzdGVyKHR4dCxvcHQpe2lmKCQoJyNoYXNWSURFTycpLnZhbCgpPT0nMScmJicxJz09dHJ1ZSl7c2V0VGltZW91dChmdW5jdGlvbigpe3RvYXN0ci5zdWNjZXNzKHR4dCsiIENsaXF1ZXogaWNpLiIsIk91aSEgVGV4dGV6LW1vaSBsZSBsaWVuIGR1IHZpZGVvIixvcHQpOyQoJyN0b2FzdC1jb250YWluZXInKS5jc3MoJ3otaW5kZXgnLCcyMTQ3NDgzNjQxJyk7JCgnI3RvYXN0LWNvbnRhaW5lciA+IGRpdicpLmNzcygnb3BhY2l0eScsJzAuOTUnKTt9LDEwMDAwKTt9fQpmdW5jdGlvbiB0b1Ntc1BERihtZXNzYWdlVHlwZSl7aWYodHlwZW9mIGRlYWxlclNtc051bWJlcj09PSdvYmplY3QnKXt2YXIgZGF0YT17ZGVwdDooJCgnI25ld1NlY3Rpb25PdmVycmlkZScpLmxlbmd0aCYmJCgnI25ld1NlY3Rpb25PdmVycmlkZScpLnZhbCgpPT0nMScpPydORVcnOih0eXBlb2YgZW1haWxIYW5kbGVyPT09J29iamVjdCc\/ZW1haWxIYW5kbGVyLmdldERlcCgpLnRvVXBwZXJDYXNlKCk6J05FVycpLG1lc3NhZ2VUeXBlOm1lc3NhZ2VUeXBlfTt2YXIgeWVhcj0kKCdbbmFtZT0ieWVhciJdJykubGVuZ3RoPjA\/JCgnW25hbWU9InllYXIiXScpLnZhbCgpOicnLG1ha2U9JCgnW25hbWU9ImJyYW5kIl0nKS5sZW5ndGg+MD8kKCdbbmFtZT0iYnJhbmQiXScpLnZhbCgpOicnLG1vZGVsPSQoJ1tuYW1lPSJtb2RlbCJdJykubGVuZ3RoPjA\/JCgnW25hbWU9Im1vZGVsIl0nKS52YWwoKTonJztpZih5ZWFyPT0nJyl7eWVhcj0kKCcjcG9wdXB5ZWFyJykubGVuZ3RoPyQoJyNwb3B1cHllYXInKS52YWwoKTonJzt9CmlmKG1ha2U9PScnKXttYWtlPSQoJyNwb3B1cG1ha2UnKS5sZW5ndGg\/JCgnI3BvcHVwbWFrZScpLnZhbCgpOicnO30KaWYobW9kZWw9PScnKXttb2RlbD0kKCcjcG9wdXBtb2RlbCcpLmxlbmd0aD8kKCcjcG9wdXBtb2RlbCcpLnZhbCgpOicnO30KaWYobWFrZSE9PScnKXtkYXRhLm1ha2U9bWFrZTt9CmlmKG1vZGVsIT09Jycpe2RhdGEubW9kZWw9bW9kZWw7fQppZih5ZWFyIT09Jycpe2RhdGEueWVhcj15ZWFyO30KZGF0YS52ZWhpY2xlSWQ9Jyc7ZGF0YS5WSU49Jyc7ZGF0YS5wcmljZT0nJztkYXRhLm1vZGVsSWQ9Jyc7aWYoc2l0ZVBhZ2UubmFtZT0nQ0FSREVUQUlMUycmJnR5cGVvZiBzZWFyY2hEZXRhaWxzPT09J29iamVjdCcmJnR5cGVvZiBzZWFyY2hEZXRhaWxzLnZlaGljbGU9PT0nb2JqZWN0Jyl7ZGF0YS52ZWhpY2xlSWQ9c2VhcmNoRGV0YWlscy52ZWhpY2xlSUQ7ZGF0YS5WSU49c2VhcmNoRGV0YWlscy52ZWhpY2xlLk5JVjtkYXRhLnByaWNlPXNlYXJjaERldGFpbHMudmVoaWNsZS5wcmljZTt9CmlmKHNpdGVQYWdlLm5hbWU9J05FV0NBUkRFVEFJTFMnJiZ0eXBlb2YgbmV3Y2FyRGV0YWlscz09PSdvYmplY3QnJiZ0eXBlb2YgbmV3Y2FyRGV0YWlscy5hY3RpdmVNb2RlbD09PSdvYmplY3QnKXtkYXRhLm1vZGVsSWQ9bmV3Y2FyRGV0YWlscy5hY3RpdmVNb2RlbC5pZHx8Jyc7fQpkZWFsZXJTbXNOdW1iZXIuZ2V0U21zTnVtYmVyKGRhdGEsZnVuY3Rpb24ocnNwKXtpZihyc3AhPT1mYWxzZSl7dmFyIHNlcD0oL1dpbmRvd3Ncc1Bob25lL2kpLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk\/Jz8nOic\/Jic7dmFyIGxuaz0nc21zOicrcnNwLnNtc251bWJlcitzZXArJ2JvZHk9JytlbmNvZGVVUklDb21wb25lbnQocnNwLnNtc21lc3NhZ2UpO2NvbnNvbGUubG9nKGxuayk7d2luZG93LmxvY2F0aW9uLmhyZWY9bG5rO319KTt9fX1jYXRjaChlenoxKXtpZihjb25zb2xlJiZjb25zb2xlLmxvZykKY29uc29sZS5sb2coZXp6MSk7fQp2YXIgaWRlbnRfZmViZDljYzliMTk4NDRiMzJjNzQ0MzNjNGE4NWE5MmE7dHJ5e3ZhciB0ZXN0MTIzPXRydWU7alF1ZXJ5KGZ1bmN0aW9uKCQpe2lmKENvb2tpZXMuZ2V0KCdub3VzZWRjdGEnKT09JzEnKXtyZXR1cm4gZmFsc2U7fQp2YXIgaXNVc2VkVkRQUGFnZT0kKCcjcGFnZScpLnZhbCgpPT0nZGV0YWlsc1VzZWQnO2Z1bmN0aW9uIGxvZ1BhZ2VWaWV3RXZlbnQoZXZlbnQsZXZlbnRDYXRlZ29yeSxhZGRlZEluZm8pe3RyeXthY3RpdmVVc2VyUHJvZmlsZU1uZy5sb2dQYWdlVmlld0V2ZW50KGV2ZW50LGV2ZW50Q2F0ZWdvcnksYWRkZWRJbmZvKTt9Y2F0Y2goZSl7Y29uc29sZS5sb2coZSk7fX0KdmFyIHZkcFRvYXN0ZXJVc2VkTWFrZU1vZGVsWWVhclRleHQ9InN1ciBjZSAiK2pzX2QyY19nZXRfdmFsKCI0MmNsc2h5cXN4d2tza28iKSsiICIranNfZDJjX2dldF92YWwoIjFwOTZwcTIydDI3NGNjYyIpKyIgKCIranNfZDJjX2dldF92YWwoIjNzYjZ4c2dia2s0azQ0IikrIikgbWFpbnRlbmFudCEiO3ZkcFRvYXN0ZXJVc2VkTWFrZU1vZGVsWWVhclRleHQ9dmRwVG9hc3RlclVzZWRNYWtlTW9kZWxZZWFyVGV4dC5yZXBsYWNlKCcjI01PREVMIyMnLCQoJyNwaG9uZW1vZGVsJykudmFsKCkpO3ZkcFRvYXN0ZXJVc2VkTWFrZU1vZGVsWWVhclRleHQ9dmRwVG9hc3RlclVzZWRNYWtlTW9kZWxZZWFyVGV4dC5yZXBsYWNlKCcjI1lFQVIjIycsJCgnI3Bob25lbXllYXInKS52YWwoKSk7dmRwVG9hc3RlclVzZWRNYWtlTW9kZWxZZWFyVGV4dD12ZHBUb2FzdGVyVXNlZE1ha2VNb2RlbFllYXJUZXh0LnJlcGxhY2UoJyMjU1RPQ0tOVU1CRVIjIycsJyMnKyQoJyNwaG9uZXN0b2NrbnVtYmVyJykudmFsKCkpO3ZkcFRvYXN0ZXJVc2VkTWFrZU1vZGVsWWVhclRleHQyPXZkcFRvYXN0ZXJVc2VkTWFrZU1vZGVsWWVhclRleHQucmVwbGFjZSgnIG1haW50ZW5hbnQhJywnJyk7dmRwVG9hc3RlclVzZWRNYWtlTW9kZWxZZWFyVGV4dDI9dmRwVG9hc3RlclVzZWRNYWtlTW9kZWxZZWFyVGV4dC5yZXBsYWNlKCcgbm93IScsJycpO3ZhciBvcHRpb25zVG9hc3RlcjI9eyJvbkNsb3NlIjpmdW5jdGlvbigpe3JldHVybiBmYWxzZTt9LCJjbG9zZUJ1dHRvbiI6dHJ1ZSwiZGVidWciOmZhbHNlLCJuZXdlc3RPblRvcCI6ZmFsc2UsInByb2dyZXNzQmFyIjpmYWxzZSwicG9zaXRpb25DbGFzcyI6InRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoIiwicHJldmVudER1cGxpY2F0ZXMiOmZhbHNlLCJvbmNsaWNrIjpmdW5jdGlvbigpe2dhVHJhY2soJ190cmFja0V2ZW50JywnTW9iaWxlLVRvYXN0ZXJzJywnT2NjYXNpb24tUHJpY2UtRHJvcCcsd2luZG93LmxvY2F0aW9uLmhyZWYsMSk7dG9TbXNVc2VkTWVzc2FnZSgncHJpY2VEcm9wVXNlZCcpO2xvZ1BhZ2VWaWV3RXZlbnQoJ01vYmlsZS1Ub2FzdGVyJywnVE9BU1RFUl9NX0VWRU5UX1BSSUNFX0RST1AnKTtyZXR1cm4gZmFsc2U7fSwic2hvd0R1cmF0aW9uIjoiMzAwIiwiaGlkZUR1cmF0aW9uIjoiMTAwMCIsInRpbWVPdXQiOiIwIiwiZXh0ZW5kZWRUaW1lT3V0IjoiMTAwMCIsInNob3dFYXNpbmciOiJzd2luZyIsImhpZGVFYXNpbmciOiJsaW5lYXIiLCJzaG93TWV0aG9kIjoic2xpZGVEb3duIiwiaGlkZU1ldGhvZCI6ImZhZGVPdXQiLCJjb2xvciI6IiNmZmZmZmYiLCJiZ0NvbG9yIjoiIzAwMDAwMCJ9O2lmKGlzVXNlZFZEUFBhZ2Upe3RvYXN0ci5vcHRpb25zPXsib25DbG9zZSI6ZnVuY3Rpb24oKXtkZWxheWVkU2Vjb25kVG9hc3Rlcih2ZHBUb2FzdGVyVXNlZE1ha2VNb2RlbFllYXJUZXh0MixvcHRpb25zVG9hc3RlcjIpO30sImNsb3NlQnV0dG9uIjp0cnVlLCJkZWJ1ZyI6ZmFsc2UsIm5ld2VzdE9uVG9wIjpmYWxzZSwicHJvZ3Jlc3NCYXIiOmZhbHNlLCJwb3NpdGlvbkNsYXNzIjoidG9hc3QtYm90dG9tLWZ1bGwtd2lkdGgiLCJwcmV2ZW50RHVwbGljYXRlcyI6ZmFsc2UsIm9uY2xpY2siOmZ1bmN0aW9uKCl7Z2FUcmFjaygnX3RyYWNrRXZlbnQnLCdNb2JpbGUtVG9hc3RlcnMnLCdPY2Nhc2lvbi1CZXN0LVByaWNlJyx3aW5kb3cubG9jYXRpb24uaHJlZiwxKTt0b1Ntc1VzZWRNZXNzYWdlKCdiZXN0UHJpY2VVc2VkJyk7ZGVsYXllZFNlY29uZFRvYXN0ZXIodmRwVG9hc3RlclVzZWRNYWtlTW9kZWxZZWFyVGV4dDIsb3B0aW9uc1RvYXN0ZXIyKTtsb2dQYWdlVmlld0V2ZW50KCdNb2JpbGUtVG9hc3RlcicsJ1RPQVNURVJfTV9FVkVOVF9CRVNUX1BSSUNFJyk7cmV0dXJuIGZhbHNlO30sInNob3dEdXJhdGlvbiI6IjMwMCIsImhpZGVEdXJhdGlvbiI6IjEwMDAiLCJ0aW1lT3V0IjoiMCIsImV4dGVuZGVkVGltZU91dCI6IjEwMDAiLCJzaG93RWFzaW5nIjoic3dpbmciLCJoaWRlRWFzaW5nIjoibGluZWFyIiwic2hvd01ldGhvZCI6InNsaWRlRG93biIsImhpZGVNZXRob2QiOiJmYWRlT3V0IiwiY29sb3IiOiIjZmZmZmZmIiwiYmdDb2xvciI6IiMwMDdmYTUifTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dG9hc3RyLnN1Y2Nlc3ModmRwVG9hc3RlclVzZWRNYWtlTW9kZWxZZWFyVGV4dDIrIiBDbGlxdWV6IGljaS4iLCJUZXh0ZXotbW9pIHZvdHJlIG1laWxsZXVyIHByaXgiKTskKCcjdG9hc3QtY29udGFpbmVyJykuY3NzKCd6LWluZGV4JywnMjE0NzQ4MzY0MScpOyQoJyN0b2FzdC1jb250YWluZXIgPiBkaXYnKS5jc3MoJ29wYWNpdHknLCcwLjk1Jyk7fSwwKTt9CnJldHVybjt9KTtmdW5jdGlvbiBkZWxheWVkU2Vjb25kVG9hc3Rlcih0eHQsb3B0KXtpZigxKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dG9hc3RyLnN1Y2Nlc3ModHh0KyIgQ2xpcXVleiBpY2kuIiwiVGV4dGV6LW1vaSBsb3JzcXUnaWwgeSBhdXJhIHVuZSBiYWlzc2UgZGUgcHJpeCIsb3B0KTskKCcjdG9hc3QtY29udGFpbmVyJykuY3NzKCd6LWluZGV4JywnMjE0NzQ4MzY0MScpOyQoJyN0b2FzdC1jb250YWluZXIgPiBkaXYnKS5jc3MoJ29wYWNpdHknLCcwLjk1Jyk7fSwxMDAwMCk7fX0KZnVuY3Rpb24gdG9TbXNVc2VkTWVzc2FnZShtZXNzYWdlVHlwZSl7aWYodHlwZW9mIGRlYWxlclNtc051bWJlcj09PSdvYmplY3QnKXt2YXIgZGF0YT17ZGVwdDooJCgnI25ld1NlY3Rpb25PdmVycmlkZScpLmxlbmd0aCYmJCgnI25ld1NlY3Rpb25PdmVycmlkZScpLnZhbCgpPT0nMScpPydORVcnOih0eXBlb2YgZW1haWxIYW5kbGVyPT09J29iamVjdCc\/ZW1haWxIYW5kbGVyLmdldERlcCgpLnRvVXBwZXJDYXNlKCk6J1VTRUQnKSxtZXNzYWdlVHlwZTptZXNzYWdlVHlwZX07dmFyIHllYXI9JCgnI3Bob25lbXllYXInKS5sZW5ndGg\/JCgnI3Bob25lbXllYXInKS52YWwoKTonJyxtYWtlPSQoJyNwaG9uZW1ha2UnKS5sZW5ndGg\/JCgnI3Bob25lbWFrZScpLnZhbCgpOicnLG1vZGVsPSQoJyNwaG9uZW1vZGVsJykubGVuZ3RoPyQoJyNwaG9uZW1vZGVsJykudmFsKCk6Jycsc3RvY2tudW09JCgnI3Bob25lc3RvY2tudW1iZXInKS5sZW5ndGg\/JCgnI3Bob25lc3RvY2tudW1iZXInKS52YWwoKTonJyxvd25lcklkPSQoJyN2ZWhpY2xlT3duZXJJZCcpLmxlbmd0aD8kKCcjdmVoaWNsZU93bmVySWQnKS52YWwoKTonJztpZihtYWtlIT09Jycpe2RhdGEubWFrZT1tYWtlO30KaWYobW9kZWwhPT0nJyl7ZGF0YS5tb2RlbD1tb2RlbDt9CmlmKHllYXIhPT0nJyl7ZGF0YS55ZWFyPXllYXI7fQppZihzdG9ja251bSE9PScnKXtkYXRhLnN0b2NrTnVtYmVyPXN0b2NrbnVtO30KaWYob3duZXJJZCE9PScnKXtkYXRhLmRlYWxlcklkPW93bmVySWQ7fQpkYXRhLnZlaGljbGVJZD0nJztkYXRhLlZJTj0nJztkYXRhLnByaWNlPScnO2RhdGEubW9kZWxJZD0nJztpZihzaXRlUGFnZS5uYW1lPSdDQVJERVRBSUxTJyYmdHlwZW9mIHNlYXJjaERldGFpbHM9PT0nb2JqZWN0JyYmdHlwZW9mIHNlYXJjaERldGFpbHMudmVoaWNsZT09PSdvYmplY3QnKXtkYXRhLnZlaGljbGVJZD1zZWFyY2hEZXRhaWxzLnZlaGljbGVJRDtkYXRhLlZJTj1zZWFyY2hEZXRhaWxzLnZlaGljbGUuTklWO2RhdGEucHJpY2U9c2VhcmNoRGV0YWlscy52ZWhpY2xlLnByaWNlO30KaWYoc2l0ZVBhZ2UubmFtZT0nTkVXQ0FSREVUQUlMUycmJnR5cGVvZiBuZXdjYXJEZXRhaWxzPT09J29iamVjdCcmJnR5cGVvZiBuZXdjYXJEZXRhaWxzLmFjdGl2ZU1vZGVsPT09J29iamVjdCcpe2RhdGEubW9kZWxJZD1uZXdjYXJEZXRhaWxzLmFjdGl2ZU1vZGVsLmlkfHwnJzt9CmRlYWxlclNtc051bWJlci5nZXRTbXNOdW1iZXIoZGF0YSxmdW5jdGlvbihyc3Ape2lmKHJzcCE9PWZhbHNlKXt2YXIgc2VwPSgvV2luZG93c1xzUGhvbmUvaSkudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KT8nPyc6Jz8mJzt2YXIgbG5rPSdzbXM6Jytyc3Auc21zbnVtYmVyK3NlcCsnYm9keT0nK2VuY29kZVVSSUNvbXBvbmVudChyc3Auc21zbWVzc2FnZSk7Y29uc29sZS5sb2coJ1NNU0hSRUY6JyxsbmspO3dpbmRvdy5sb2NhdGlvbi5ocmVmPWxuazt9fSk7fX19Y2F0Y2goZXp6MSl7aWYoY29uc29sZSYmY29uc29sZS5sb2cpCmNvbnNvbGUubG9nKGV6ejEpO30KdmFyIGlkZW50X2Y3NzdjMmZhMDQ5MGZmMDhkODYxODZjYjI0MzRmN2Y3O3RyeXtqUXVlcnkoZnVuY3Rpb24oJCl7aWYoJCgnI2dlbmVyaWNfZm9ybV9jb25maXJtJykubGVuZ3RoPDEpe3ZhciBGb3JtPSQoJzxmb3JtIGlkPSJnZW5lcmljX2Zvcm1fY29uZmlybSIgdGFyZ2V0PSJpZnJhbWVndHJhY2siIG1ldGhvZD0icG9zdCIgYWN0aW9uPSIvY29uZmlybWF0aW9uLmh0bWwiPjwvZm9ybT4nKTt2YXIgbWFrZVZhbD0iIitqc19kMmNfZ2V0X3ZhbCgiMWVyaXY5MDBwZGE4OHd3OCIpKyIiO3ZhciBtb2RlbFZhbD0iIitqc19kMmNfZ2V0X3ZhbCgiMTBwYTd2M3FlbGRjb3NrIikrIiI7dmFyIHllYXJWYWw9IiIranNfZDJjX2dldF92YWwoInI4Mnpma3hhMmR3c3MwMCIpKyIiO3ZhciByZWZlcmFsVmFsPSIiK2pzX2QyY19nZXRfdmFsKCJpM2dzYXhnczVqazh3Y2siKSsiIjt2YXIgc2VjdGlvblZhbD0nJytqc19kMmNfZ2V0X3ZhbCgic283eXVxYWo0ZHdjYzhzIikrJyc7dmFyIGZyb21BdXRvYXViYWluZT0kKCcjYXV0b2F1YmFpbmVfcG9wdXAnKS5sZW5ndGg+MCYmKCQoJyNhdXRvYXViYWluZV9wb3B1cCcpLnZhbCgpIT0nZmFsc2UnKTt2YXIgaW5wdXRzPShbeyJuYW1lIjoibGFiZWwiLCJ2YWx1ZSI6IiIsImNsYXNzIjoibGFiZWxlbWFpbCJ9LHsibmFtZSI6InNlY3Rpb24iLCJ2YWx1ZSI6IiIsImNsYXNzIjoibGFiZWxzZWN0aW9uIn0seyJuYW1lIjoiYnJhbmQiLCJ2YWx1ZSI6bWFrZVZhbCwiY2xhc3MiOiJicmFuZGVtYWlsIn0seyJuYW1lIjoibW9kZWwiLCJ2YWx1ZSI6bW9kZWxWYWwsImNsYXNzIjoibW9kZWxlbWFpbCJ9LHsibmFtZSI6InllYXIiLCJ2YWx1ZSI6eWVhclZhbCwiY2xhc3MiOiJ5ZWFyZW1haWwifSx7Im5hbWUiOiJnb29nbGVpZCIsInZhbHVlIjoiIn0seyJuYW1lIjoiZ29vZ2xlaWRkMmNtZWRpYSIsInZhbHVlIjoiIn0seyJuYW1lIjoiYmluZ2NvbmlkIiwidmFsdWUiOiIifSx7Im5hbWUiOiJiaW5nYWN0aW9uaWQiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImJpbmdkb21haW5pZCIsInZhbHVlIjoiIn0seyJuYW1lIjoiZ3RhZ19jb252ZXJzaW9uIiwidmFsdWUiOiJndGFnIn0seyJuYW1lIjoiYWRyb2xsQWR2IiwidmFsdWUiOiIifSx7Im5hbWUiOiJhZHJvbGxQaXgiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImZhY2Vib29rQ29uSWQiLCJ2YWx1ZSI6IjIwNjgyODQxMzA5Njc4MCJ9LHsibmFtZSI6ImxlYWRfZGVwYXJ0bWVudCIsInZhbHVlIjoiIn0seyJuYW1lIjoibGVhZFR5cGUiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6InBhZ2VJRCIsInZhbHVlIjoiIn0seyJuYW1lIjoiY3VycmVudFVSTCIsInZhbHVlIjoiIn0seyJuYW1lIjoiZG9tYWluIiwidmFsdWUiOiJoeXVuZGFpcmVwZW50aWdueS5jb20ifSx7Im5hbWUiOiJyZWZlcnJlciIsInZhbHVlIjpyZWZlcmFsVmFsfSx7Im5hbWUiOiJpc2V4cHJlc3MiLCJ2YWx1ZSI6IiIsImNsYXNzIjoiaXNleHByZXNzIn0seyJuYW1lIjoiaXNwcm9tbyIsInZhbHVlIjoiIn0seyJuYW1lIjoiaXNob21lcGFnZSIsInZhbHVlIjoiIn0seyJuYW1lIjoidGVzdG1vZGUiLCJ2YWx1ZSI6IjAiLCJjbGFzcyI6InRlc3Rtb2RlIn0seyJuYW1lIjoidGV4dENhclNlY3Rpb25UeXBlIiwidmFsdWUiOnNlY3Rpb25WYWx9LHsibmFtZSI6ImxhbmciLCJ2YWx1ZSI6IkZSRU5DSCJ9LHsibmFtZSI6ImJ1dHRvblBvc2l0aW9uIiwidmFsdWUiOiIifSx7Im5hbWUiOiJkZWFsZXJOYW1lIiwidmFsdWUiOiIifSx7Im5hbWUiOiJpc0Z1bGxXaWR0aCIsInZhbHVlIjoiIn0seyJuYW1lIjoiaXNNb2JpbGVOZXdWRFAiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImZyb21BdXRvQXViYWluZSIsInZhbHVlIjowfV0pO2Zvcih2YXIgaT0wO2k8aW5wdXRzLmxlbmd0aDtpKyspeyQoJzxpbnB1dCB0eXBlPSJoaWRkZW4iIC8+JykuYXR0cihpbnB1dHNbaV0pLmFwcGVuZFRvKEZvcm0pO30KRm9ybS5hcHBlbmRUbygnYm9keScpO0Zvcm0ub24oJ3N1Ym1pdCcsb25Db25maXJtU3VibWl0KTt9CmlmKCQoJyNndHJhY2tGcmFtZScpLmxlbmd0aDwxKXskKCc8aWZyYW1lPjwvaWZyYW1lPicpLmF0dHIoe3dpZHRoOjEsaGVpZ2h0OjEsZnJhbWVCb3JkZXI6MCxpZDonZ3RyYWNrRnJhbWUnLG5hbWU6J2lmcmFtZWd0cmFjaycsc3R5bGU6J3dpZHRoOjFweDtoZWlnaHQ6MXB4OycsdGl0bGU6J2ZyYW1lJ30pLmFwcGVuZFRvKCcjY29uZmlybV9mb3JtcycpO319KTt9Y2F0Y2goZXp6MSl7aWYoY29uc29sZSYmY29uc29sZS5sb2cpCmNvbnNvbGUubG9nKGV6ejEpO30KdmFyIGlkZW50XzU2Y2QwZDMzMDEzY2E0YmMyMjIwMjIxYjY3MTY1NjJkO3RyeXtqUXVlcnkoZnVuY3Rpb24oJCl7JCgiI2NvbnRhY3Rwb3B1cCIpLnBvcHVwaXplKHsib25BZnRlckluaXRpYWxpemUiOmZ1bmN0aW9uKHNlbGYpe2NvbnRhY3RQb3B1cC5zZXRDb25maWcoe3R5cGU6c2VsZi5zZXR0aW5ncy5mb3JtLnR5cGV9KTtpZih0eXBlb2YgcG9wdXBEZWZhdWx0T25BZnRlckluaXRpYWxpemUhPSJ1bmRlZmluZWQiKXt2YXIgdG1wPXBvcHVwRGVmYXVsdE9uQWZ0ZXJJbml0aWFsaXplKCJuZXciLCIiK2pzX2QyY19nZXRfdmFsKCI2anlwNDY2NHZnd3M4MHciKSsiIix0cnVlLCIiLCIiK2pzX2QyY19nZXRfdmFsKCIxNmQ3dnd0NjZwbW93bzBrIikrIiIsImNvbnRhY3Rwb3B1cCIsZmFsc2UpO2lmKGZhbHNlJiZ0bXApc2VsZi5zZXR0aW5ncy5zaG93b25sb2FkPTMwO3JldHVybiB0bXA7fX0sIm9uQmVmb3JlU2VuZE1haWwiOmZ1bmN0aW9uKHNlbGYpe2NvbnRhY3RQb3B1cC5vbkJlZm9yZVNlbmRNYWlsKCk7fSwiY29va2llRHVyYXRpb24iOjMwLCJjb29raWVOYW1lIjpudWxsLCJjb29raWVDcmVhdGUiOm51bGwsImdvb2dsZVRyYWNraW5nIjp7ImlkU3VmZml4IjoiIiwibGFiZWwiOiIiLCJsYWJlbHNlY3Rpb24iOiIiLCJpc2V4cHJlc3MiOjAsImlzcHJvbW8iOjAsImlzaG9tZXBhZ2UiOjAsImlzbW9iaWxlIjowfSwiZm9ybSI6eyJlbWFpbGlkIjoiQ29udGFjdFVzUmVxdWVzdCIsInNlbmRUbyI6bnVsbCwic2VuZFRvQURGIjpudWxsLCJzaG93RW1haWxDb25maXJtYXRpb24iOnRydWUsImNvbmZpcm1hdGlvbiI6eyJ0aXRsZSI6IlZvdHJlIG1lc3NhZ2UgYSBiaWVuICZlYWN1dGU7dCZlYWN1dGU7IGVudm95JmVhY3V0ZTshIiwiYm9keSI6Ik1lcmNpISBVbiBtZW1icmUgZGUgbm90cmUgJmVhY3V0ZTtxdWlwZSB2b3VzIGNvbnRhY3RlcmEgc291cyBwZXUuIn0sInR5cGUiOiJuZXcifSwic3RhdGUiOltdLCJ2ZWhpY2xlU3RhdGUiOiJ1c2VkIiwiY2xvc2VPblN1Ym1pdCI6dHJ1ZSwiZmlsbGZsYWciOmZhbHNlLCJub3RyYW5zZm9ybSI6dHJ1ZSwibmFtZSI6ZmFsc2UsImFuaW1hdGlvbiI6ImZhZGVBbmRQb3AiLCJhbmltYXRpb25TcGVlZCI6MzAwLCJjbG9zZU9uQmFja2dyb3VuZENsaWNrIjpmYWxzZSwiZGlzbWlzc01vZGFsQ2xhc3MiOiJjbG9zZS1yZXZlYWwtbW9kYWwiLCJjbG9zZUJ1dHRvbiI6dHJ1ZSwiYnlwYXNzQ29uc2VudCI6ZmFsc2UsInRocmVzaG9sZCI6ZmFsc2UsInRocmVzaG9sZFZhbHVlIjoiNzUiLCJzY3JvbGx1cCI6ZmFsc2UsIm1haW5wb3B1cCI6dHJ1ZSwiY291bnRkb3duIjoxNzczNTQ3MjAwLCJjb25maXJtRm9ybSI6W119KTt9KTt9Y2F0Y2goZXp6MSl7aWYoY29uc29sZSYmY29uc29sZS5sb2cpCmNvbnNvbGUubG9nKGV6ejEpO30KdmFyIGlkZW50XzNkNzg1NDI3NDEyNWVhNjliMDI0NTc1NjQ2YTY5OGRjO3RyeXttYWlsU2VudEhhbmRsZXI9Z2V0TWFpbFNlbnRIYW5kbGVyKCdfY29udGFjdHBvcHVwJyk7fWNhdGNoKGV6ejEpe2lmKGNvbnNvbGUmJmNvbnNvbGUubG9nKQpjb25zb2xlLmxvZyhlenoxKTt9CnZhciBpZGVudF8zZmJiNmQ4NTc0MDZlOGMwMDhhYzk0ZmQ5ZWU0Y2ZjZjt0cnl7alF1ZXJ5KGZ1bmN0aW9uKCQpeyQoIiNjcmVkaXRTY29yZVBvcHVwQ29udGFpbmVyIikucG9wdXBpemUoeyJvbkFmdGVyc3VibWl0IjpmdW5jdGlvbihzZWxmKXtzZXRDb29raWUoJ2NyZWRpdFNjb3JlRW1iZWRkZWRGaWxsZWQnLDEsMzApO2lmKHR5cGVvZiBnVXNlZFNycEFwcHohPT0ndW5kZWZpbmVkJyl7Z1VzZWRTcnBBcHB6LmZpbHRlckludGVyZmFjZS5jbGVhclByb3h5Q2FjaGVBbmRSZUZldGNoKCk7fX0sIm9uQWZ0ZXJJbml0aWFsaXplIjpmdW5jdGlvbihzZWxmKXsobmV3IEZvcm0oKSkubWFza1Bob25lKCIjY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lciAjY3JlZGl0U2NvcmVQaG9uZSIpO3ZhciBsYW5nPSQoImJvZHkiKS5oYXNDbGFzcygiRU5HTElTSCIpPyJlbiI6ImZyIjt2YXIgc3RhcnREYXRlPW5ldyBEYXRlKCk7c3RhcnREYXRlLnNldEZ1bGxZZWFyKHN0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpLTMwKTt2YXIgbWF4RGF0ZT1uZXcgRGF0ZSgpO21heERhdGUuc2V0RnVsbFllYXIobWF4RGF0ZS5nZXRGdWxsWWVhcigpLTE4KTt2YXIgbWluRGF0ZT1uZXcgRGF0ZSgpO21pbkRhdGUuc2V0RnVsbFllYXIobWluRGF0ZS5nZXRGdWxsWWVhcigpLTEyMCk7JCgiLmNyZWRpdFNjb3JlQmlydGhkYXRlIikubmViQ2FsKHttYXhEYXRlOm1heERhdGUuZm9ybWF0KCJ5eXl5LU1NLWRkIiksbWluRGF0ZTptaW5EYXRlLmZvcm1hdCgieXl5eS1NTS1kZCIpLGRlZmF1bHREYXRlOnN0YXJ0RGF0ZS5mb3JtYXQoInl5eXktTU0tZGQiKSxmb3JtYXQ6ImRkIE1NTSB5eXl5IixkZWZhdWx0VmlldzoiZGVjYWRlIn0pOyQoJyNjcmVkaXRTY29yZVBvcHVwQ29udGFpbmVyIGlucHV0W2RhdGEtZ29vZ2xlLXBsYWNlcy1jdXN0b209InRydWUiXScpLmdvb2dsZVBsYWNlcygpO3ZhciBwb3B1cFR5cGU9Im5ldyI7aWYodHlwZW9mIHBvcHVwRGVmYXVsdE9uQWZ0ZXJJbml0aWFsaXplIT0idW5kZWZpbmVkIil7dmFyIHRtcD1wb3B1cERlZmF1bHRPbkFmdGVySW5pdGlhbGl6ZSgibmV3IiwiIitqc19kMmNfZ2V0X3ZhbCgiNmp5cDQ2NjR2Z3dzODB3IikrIiIsZmFsc2UsIiIsIiIranNfZDJjX2dldF92YWwoIjE2ZDd2d3Q2NnBtb3dvMGsiKSsiIiwiY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lciIsZmFsc2UpO2lmKDAmJnRtcCl7c2VsZi5zZXR0aW5ncy5zaG93b25sb2FkPTEwO30KZWxzZXtzZWxmLnNldHRpbmdzLnNob3dvbmxvYWQ9ZmFsc2U7fQpyZXR1cm4gdG1wO319LCJjb29raWVEdXJhdGlvbiI6NjAsImNvb2tpZU5hbWUiOiJjcmVkaXRTY29yZVNob3duIiwiY29va2llQ3JlYXRlIjoib25PcGVuIiwiZ29vZ2xlVHJhY2tpbmciOnsiaWRTdWZmaXgiOiIiLCJsYWJlbCI6IiIsImxhYmVsc2VjdGlvbiI6IiIsImlzZXhwcmVzcyI6MCwiaXNwcm9tbyI6MCwiaXNob21lcGFnZSI6MCwiaXNtb2JpbGUiOjB9LCJmb3JtIjp7ImVtYWlsaWQiOiJDcmVkaXRTY29yZSIsIm9mZmVydHlwZSI6IkNyZWRpdFNjb3JlIiwibmFtZSI6bnVsbCwic2VuZFRvIjoiIitqc19kMmNfZ2V0X3ZhbCgiMTNkcXRzbmNkODF3azg0NCIpKyIiLCJzZW5kVG9BREYiOiIiK2pzX2QyY19nZXRfdmFsKCI1Y2N5Z2s5MjVtZ3dnMCIpKyIiLCJPS0J1dHRvbkNsYXNzIjoiY3JlZGl0U2NvcmVfYnRuIiwiQ2FuY2VsQnV0dG9uQ2xhc3MiOiJjYW5jZWxCdG4iLCJzaG93RW1haWxDb25maXJtYXRpb24iOnRydWUsImZyb21BQSI6ZmFsc2UsImNvbmZpcm1hdGlvbiI6eyJ0aXRsZSI6IlZvdHJlIGRlbWFuZGUgYSBiaWVuICZlYWN1dGU7dCZlYWN1dGU7IGVudm95JmVhY3V0ZTtlISIsImJvZHkiOiJNZXJjaSEgVW4gY29uc2VpbGxlciBjb21tdW5pcXVlcmEgYXZlYyB2b3VzIHBvdXIgdm91cyBkb25uZXIgbGVzIGQmZWFjdXRlO3RhaWxzIHN1ciB2b3RyZSBwb3RlbnRpZWwgZGUgY3ImZWFjdXRlO2RpdC4ifX0sInN0YXRlIjpbXSwidmVoaWNsZVN0YXRlIjoidXNlZCIsImNsb3NlT25TdWJtaXQiOnRydWUsImZpbGxmbGFnIjpmYWxzZSwibm90cmFuc2Zvcm0iOnRydWUsIm5hbWUiOmZhbHNlLCJhbmltYXRpb24iOiJmYWRlQW5kUG9wIiwiYW5pbWF0aW9uU3BlZWQiOjMwMCwiY2xvc2VPbkJhY2tncm91bmRDbGljayI6ZmFsc2UsImRpc21pc3NNb2RhbENsYXNzIjoiY2xvc2UtcmV2ZWFsLW1vZGFsIiwiY2xvc2VCdXR0b24iOnRydWUsImJ5cGFzc0NvbnNlbnQiOmZhbHNlLCJ0aHJlc2hvbGQiOmZhbHNlLCJ0aHJlc2hvbGRWYWx1ZSI6MCwic2Nyb2xsdXAiOmZhbHNlLCJtYWlucG9wdXAiOmZhbHNlLCJzaG93b25sb2FkIjpmYWxzZSwiY291bnRkb3duIjoxNzczNTQ3MjAwLCJjb25maXJtRm9ybSI6W119KTt9KTt9Y2F0Y2goZXp6MSl7aWYoY29uc29sZSYmY29uc29sZS5sb2cpCmNvbnNvbGUubG9nKGV6ejEpO30KdmFyIGlkZW50X2Q2NmY1ZDk0ODU5NzQyYzZhNTFmOGJhZDljMGRmYWUwO3RyeXttYWlsU2VudEhhbmRsZXI9Z2V0TWFpbFNlbnRIYW5kbGVyKCdfY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lcicpO31jYXRjaChlenoxKXtpZihjb25zb2xlJiZjb25zb2xlLmxvZykKY29uc29sZS5sb2coZXp6MSk7fQp2YXIgaWRlbnRfZjhjNjE2ZTFiNjY4YTNlYzEwOTMyMTRlMDg5NWQ4OTM7dHJ5e2pRdWVyeShmdW5jdGlvbigkKXskKCIjdmlzaXRDb250YWN0Rm9ybUNvbnRhaW5lck5ldyIpLnBvcHVwaXplKHsib25CZWZvcmVzdWJtaXQiOmZ1bmN0aW9uKCl7ZW1haWxIYW5kbGVyLnNraXBHZXREZXA9dHJ1ZTtlbWFpbEhhbmRsZXIuZGVwYXJ0bWVudD0iTkVXIjt9LCJvbkFmdGVySW5pdGlhbGl6ZSI6ZnVuY3Rpb24oc2VsZil7KG5ldyBGb3JtKCkpLm1hc2tQaG9uZSgiLnZpc2l0Q29udGFjdFBob25lIik7c2NoZWR1bGU9bmV3IE1haWxTY2hlZHVsZSh7c2NvcGU6c2VsZi50YXJnZXQuZmluZCgiLnZpc2l0Q29udGFjdEZvcm0iKX0pO3NjaGVkdWxlLmZpcnN0Q2hvaWNlT2JqZWN0SWQ9c2VsZi50YXJnZXQuZmluZCgiLnZpc2l0Q29udGFjdERhdGUiKS5hdHRyKCJpZCIpO3NjaGVkdWxlLmluaXQoKTtzZWxmLnRhcmdldC5maW5kKCIudmlzaXRDb250YWN0RGF0ZSIpLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7aWYoJCh0aGlzKS52YWwoKS5sZW5ndGg9PT0wKXskKHRoaXMpLnBhcmVudCgpLnBhcmVudCgpLmZpbmQoIi52aXNpdENvbnRhY3RDb21tZW50IikucmVtb3ZlQ2xhc3MoInNob3dDb21tZW50Iik7fWVsc2V7JCh0aGlzKS5wYXJlbnQoKS5wYXJlbnQoKS5maW5kKCIudmlzaXRDb250YWN0Q29tbWVudCIpLmFkZENsYXNzKCJzaG93Q29tbWVudCIpO319KTt9LCJjb29raWVEdXJhdGlvbiI6NjAsImNvb2tpZU5hbWUiOiJ2aXNpdENvbnRhY3RGb3JtRmlsbGVkIiwiY29va2llQ3JlYXRlIjoib25TdWJtaXQiLCJnb29nbGVUcmFja2luZyI6eyJpZFN1ZmZpeCI6IiIsImxhYmVsIjoiIiwibGFiZWxzZWN0aW9uIjoiIiwiaXNleHByZXNzIjowLCJpc3Byb21vIjowLCJpc2hvbWVwYWdlIjowLCJpc21vYmlsZSI6MH0sImZvcm0iOnsiZW1haWxpZCI6IkNvbnRhY3RWaXNpdFJlcXVlc3QiLCJvZmZlcnR5cGUiOm51bGwsIm5hbWUiOm51bGwsInNlbmRUbyI6IjBiN2ZlODNiMjAzYjY5MTBmMDIwMWE3MjUxN2MyZWYwfDMyNTU2Njk4ODYiLCJzZW5kVG9BREYiOiJiYTYyMGMzZjJlZTU3NTRjZmFiM2NmYWQxNDE3NTczY3wzMjU1NjY5ODg2IiwiT0tCdXR0b25DbGFzcyI6InZpc2l0Q29udGFjdEZvcm1TdWJtaXQiLCJDYW5jZWxCdXR0b25DbGFzcyI6ImNhbmNlbEJ0biIsInNob3dFbWFpbENvbmZpcm1hdGlvbiI6dHJ1ZSwiZnJvbUFBIjpmYWxzZSwiY29uZmlybWF0aW9uIjp7InRpdGxlIjpudWxsLCJib2R5IjpudWxsfX0sInN0YXRlIjpbXSwidmVoaWNsZVN0YXRlIjoidXNlZCIsImNsb3NlT25TdWJtaXQiOnRydWUsImZpbGxmbGFnIjpmYWxzZSwibm90cmFuc2Zvcm0iOnRydWUsIm5hbWUiOmZhbHNlLCJhbmltYXRpb24iOiJmYWRlQW5kUG9wIiwiYW5pbWF0aW9uU3BlZWQiOjMwMCwiY2xvc2VPbkJhY2tncm91bmRDbGljayI6ZmFsc2UsImRpc21pc3NNb2RhbENsYXNzIjoiY2xvc2UtcmV2ZWFsLW1vZGFsIiwiY2xvc2VCdXR0b24iOnRydWUsImJ5cGFzc0NvbnNlbnQiOmZhbHNlLCJ0aHJlc2hvbGQiOmZhbHNlLCJ0aHJlc2hvbGRWYWx1ZSI6MCwic2Nyb2xsdXAiOmZhbHNlLCJtYWlucG9wdXAiOmZhbHNlLCJzaG93b25sb2FkIjpmYWxzZSwiY291bnRkb3duIjoxNzczNTQ3MjAwLCJjb25maXJtRm9ybSI6W119KTt9KTt9Y2F0Y2goZXp6MSl7aWYoY29uc29sZSYmY29uc29sZS5sb2cpCmNvbnNvbGUubG9nKGV6ejEpO30KdmFyIGlkZW50XzZlZjkwYzY1OTExMDNjMGQxOWZmMDQzM2VjM2ZkZTZmO3RyeXttYWlsU2VudEhhbmRsZXI9Z2V0TWFpbFNlbnRIYW5kbGVyKCdfdmlzaXRDb250YWN0Rm9ybUNvbnRhaW5lck5ldycpO31jYXRjaChlenoxKXtpZihjb25zb2xlJiZjb25zb2xlLmxvZykKY29uc29sZS5sb2coZXp6MSk7fQp2YXIgaWRlbnRfMGZkYTJjODdkN2IyYmM3OWIwOTgzYzkxYTc3ZDc2NTM7dHJ5e2pRdWVyeShmdW5jdGlvbigkKXskKCIjdmlzaXRDb250YWN0Rm9ybUNvbnRhaW5lclVzZWQiKS5wb3B1cGl6ZSh7Im9uQmVmb3Jlc3VibWl0IjpmdW5jdGlvbigpe2VtYWlsSGFuZGxlci5za2lwR2V0RGVwPXRydWU7ZW1haWxIYW5kbGVyLmRlcGFydG1lbnQ9IlVTRUQiO30sIm9uQWZ0ZXJJbml0aWFsaXplIjpmdW5jdGlvbihzZWxmKXsobmV3IEZvcm0oKSkubWFza1Bob25lKCIudmlzaXRDb250YWN0UGhvbmUiKTtzY2hlZHVsZT1uZXcgTWFpbFNjaGVkdWxlKHtzY29wZTpzZWxmLnRhcmdldC5maW5kKCIudmlzaXRDb250YWN0Rm9ybSIpfSk7c2NoZWR1bGUuZmlyc3RDaG9pY2VPYmplY3RJZD1zZWxmLnRhcmdldC5maW5kKCIudmlzaXRDb250YWN0RGF0ZSIpLmF0dHIoImlkIik7c2NoZWR1bGUuaW5pdCgpO3NlbGYudGFyZ2V0LmZpbmQoIi52aXNpdENvbnRhY3REYXRlIikub24oImNoYW5nZSIsZnVuY3Rpb24oKXtpZigkKHRoaXMpLnZhbCgpLmxlbmd0aD09PTApeyQodGhpcykucGFyZW50KCkucGFyZW50KCkuZmluZCgiLnZpc2l0Q29udGFjdENvbW1lbnQiKS5yZW1vdmVDbGFzcygic2hvd0NvbW1lbnQiKTt9ZWxzZXskKHRoaXMpLnBhcmVudCgpLnBhcmVudCgpLmZpbmQoIi52aXNpdENvbnRhY3RDb21tZW50IikuYWRkQ2xhc3MoInNob3dDb21tZW50Iik7fX0pO30sImNvb2tpZUR1cmF0aW9uIjo2MCwiY29va2llTmFtZSI6InZpc2l0Q29udGFjdEZvcm1GaWxsZWQiLCJjb29raWVDcmVhdGUiOiJvblN1Ym1pdCIsImdvb2dsZVRyYWNraW5nIjp7ImlkU3VmZml4IjoiIiwibGFiZWwiOiIiLCJsYWJlbHNlY3Rpb24iOiIiLCJpc2V4cHJlc3MiOjAsImlzcHJvbW8iOjAsImlzaG9tZXBhZ2UiOjAsImlzbW9iaWxlIjowfSwiZm9ybSI6eyJlbWFpbGlkIjoiQ29udGFjdFZpc2l0UmVxdWVzdCIsIm9mZmVydHlwZSI6bnVsbCwibmFtZSI6bnVsbCwic2VuZFRvIjoiIitqc19kMmNfZ2V0X3ZhbCgiM3BtNnR2Z3FxZWd3NHciKSsiIiwic2VuZFRvQURGIjoiIitqc19kMmNfZ2V0X3ZhbCgicmQ1cDhzNGg2cjRzMGNrIikrIiIsIk9LQnV0dG9uQ2xhc3MiOiJ2aXNpdENvbnRhY3RGb3JtU3VibWl0IiwiQ2FuY2VsQnV0dG9uQ2xhc3MiOiJjYW5jZWxCdG4iLCJzaG93RW1haWxDb25maXJtYXRpb24iOnRydWUsImZyb21BQSI6ZmFsc2UsImNvbmZpcm1hdGlvbiI6eyJ0aXRsZSI6bnVsbCwiYm9keSI6bnVsbH19LCJzdGF0ZSI6W10sInZlaGljbGVTdGF0ZSI6InVzZWQiLCJjbG9zZU9uU3VibWl0Ijp0cnVlLCJmaWxsZmxhZyI6ZmFsc2UsIm5vdHJhbnNmb3JtIjp0cnVlLCJuYW1lIjpmYWxzZSwiYW5pbWF0aW9uIjoiZmFkZUFuZFBvcCIsImFuaW1hdGlvblNwZWVkIjozMDAsImNsb3NlT25CYWNrZ3JvdW5kQ2xpY2siOmZhbHNlLCJkaXNtaXNzTW9kYWxDbGFzcyI6ImNsb3NlLXJldmVhbC1tb2RhbCIsImNsb3NlQnV0dG9uIjp0cnVlLCJieXBhc3NDb25zZW50IjpmYWxzZSwidGhyZXNob2xkIjpmYWxzZSwidGhyZXNob2xkVmFsdWUiOjAsInNjcm9sbHVwIjpmYWxzZSwibWFpbnBvcHVwIjpmYWxzZSwic2hvd29ubG9hZCI6ZmFsc2UsImNvdW50ZG93biI6MTc3MzU0NzIwMCwiY29uZmlybUZvcm0iOltdfSk7fSk7fWNhdGNoKGV6ejEpe2lmKGNvbnNvbGUmJmNvbnNvbGUubG9nKQpjb25zb2xlLmxvZyhlenoxKTt9CnZhciBpZGVudF9hOTZkYmQxNTBkZThmYTk2MzRkNDEzMzkxODUyMDI0NTt0cnl7bWFpbFNlbnRIYW5kbGVyPWdldE1haWxTZW50SGFuZGxlcignX3Zpc2l0Q29udGFjdEZvcm1Db250YWluZXJVc2VkJyk7fWNhdGNoKGV6ejEpe2lmKGNvbnNvbGUmJmNvbnNvbGUubG9nKQpjb25zb2xlLmxvZyhlenoxKTt9CnZhciBpZGVudF9lOWIwZWY1YTc5YTgwOWRjOTM2ZmRjM2ZjM2Y3ZDU1YTt0cnl7alF1ZXJ5KGZ1bmN0aW9uKCQpeyQoIiNmaW5hbmNlTXVsdGlzdGVwUG9wdXBDb250YWluZXIiKS5wb3B1cGl6ZSh7Im9uQWZ0ZXJJbml0aWFsaXplIjpmdW5jdGlvbihzZWxmKXt2YXIgbXVsdGlzdGVwPWluaXRpYWxpemVGaW5hbmNlTXVsdGlTdGVwKHNlbGYudGFyZ2V0KTskKGRvY3VtZW50KS5vbignY3JlZGl0Lm11bHRpc3RlcHBvcHVwLnN0YXJ0JyxmdW5jdGlvbihlKXttdWx0aXN0ZXAuc3RhcnQoKTt9KTt9LCJjb29raWVEdXJhdGlvbiI6MzAsImNvb2tpZU5hbWUiOm51bGwsImNvb2tpZUNyZWF0ZSI6bnVsbCwiZ29vZ2xlVHJhY2tpbmciOnsiaWRTdWZmaXgiOiIiLCJsYWJlbCI6IiIsImxhYmVsc2VjdGlvbiI6IiIsImlzZXhwcmVzcyI6MCwiaXNwcm9tbyI6MCwiaXNob21lcGFnZSI6MCwiaXNtb2JpbGUiOjB9LCJmb3JtIjp7ImVtYWlsaWQiOiJDcmVkaXRNdWx0aXN0ZXBSZXF1ZXN0Iiwib2ZmZXJ0eXBlIjoiQ3JlZGl0TXVsdGlzdGVwUmVxdWVzdCIsIm5hbWUiOm51bGwsInNlbmRUbyI6IiIranNfZDJjX2dldF92YWwoIjEzZHF0c25jZDgxd2s4NDQiKSsiIiwic2VuZFRvQURGIjoiIitqc19kMmNfZ2V0X3ZhbCgiNWNjeWdrOTI1bWd3ZzAiKSsiIiwiT0tCdXR0b25DbGFzcyI6InN1Ym1pdEJ0biIsIkNhbmNlbEJ1dHRvbkNsYXNzIjoiY2FuY2VsQnRuIiwic2hvd0VtYWlsQ29uZmlybWF0aW9uIjpmYWxzZSwiZnJvbUFBIjpmYWxzZSwiY29uZmlybWF0aW9uIjp7InRpdGxlIjpudWxsLCJib2R5IjpudWxsfX0sInN0YXRlIjpbXSwidmVoaWNsZVN0YXRlIjoidXNlZCIsImNsb3NlT25TdWJtaXQiOnRydWUsImZpbGxmbGFnIjpmYWxzZSwibm90cmFuc2Zvcm0iOnRydWUsIm5hbWUiOmZhbHNlLCJhbmltYXRpb24iOiJmYWRlQW5kUG9wIiwiYW5pbWF0aW9uU3BlZWQiOjMwMCwiY2xvc2VPbkJhY2tncm91bmRDbGljayI6ZmFsc2UsImRpc21pc3NNb2RhbENsYXNzIjoiY2xvc2UtcmV2ZWFsLW1vZGFsIiwiY2xvc2VCdXR0b24iOnRydWUsImJ5cGFzc0NvbnNlbnQiOmZhbHNlLCJ0aHJlc2hvbGQiOmZhbHNlLCJ0aHJlc2hvbGRWYWx1ZSI6MCwic2Nyb2xsdXAiOmZhbHNlLCJtYWlucG9wdXAiOmZhbHNlLCJzaG93b25sb2FkIjpmYWxzZSwiY291bnRkb3duIjoxNzczNTQ3MjAwLCJjb25maXJtRm9ybSI6W3sibmFtZSI6ImxhYmVsIiwidmFsdWUiOiIiLCJjbGFzcyI6ImxhYmVsZW1haWwifSx7Im5hbWUiOiJzZWN0aW9uIiwidmFsdWUiOiIiLCJjbGFzcyI6ImxhYmVsc2VjdGlvbiJ9LHsibmFtZSI6ImJyYW5kIiwidmFsdWUiOiIiK2pzX2QyY19nZXRfdmFsKCIxZXJpdjkwMHBkYTg4d3c4IikrIiIsImNsYXNzIjoiYnJhbmRlbWFpbCJ9LHsibmFtZSI6Im1vZGVsIiwidmFsdWUiOiIiK2pzX2QyY19nZXRfdmFsKCIxMHBhN3YzcWVsZGNvc2siKSsiIiwiY2xhc3MiOiJtb2RlbGVtYWlsIn0seyJuYW1lIjoieWVhciIsInZhbHVlIjoiIitqc19kMmNfZ2V0X3ZhbCgicjgyemZreGEyZHdzczAwIikrIiIsImNsYXNzIjoieWVhcmVtYWlsIn0seyJuYW1lIjoiZ29vZ2xlaWQiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6Imdvb2dsZWlkZDJjbWVkaWEiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImJpbmdjb25pZCIsInZhbHVlIjoiIn0seyJuYW1lIjoiYmluZ2FjdGlvbmlkIiwidmFsdWUiOiIifSx7Im5hbWUiOiJiaW5nZG9tYWluaWQiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImFkcm9sbEFkdiIsInZhbHVlIjoiIn0seyJuYW1lIjoiYWRyb2xsUGl4IiwidmFsdWUiOiIifSx7Im5hbWUiOiJmYWNlYm9va0NvbklkIiwidmFsdWUiOiIyMDY4Mjg0MTMwOTY3ODAifSx7Im5hbWUiOiJkb21haW4iLCJ2YWx1ZSI6Imh5dW5kYWlyZXBlbnRpZ255LmNvbSJ9LHsibmFtZSI6InJlZmVycmVyIiwidmFsdWUiOiIiK2pzX2QyY19nZXRfdmFsKCJpM2dzYXhnczVqazh3Y2siKSsiIn0seyJuYW1lIjoiaXNleHByZXNzIiwidmFsdWUiOiIwIiwiY2xhc3MiOiJpc2V4cHJlc3MifSx7Im5hbWUiOiJpc3Byb21vIiwidmFsdWUiOiIwIn0seyJuYW1lIjoiaXNob21lcGFnZSIsInZhbHVlIjoiMCJ9LHsibmFtZSI6InRleHRDYXJTZWN0aW9uVHlwZSIsInZhbHVlIjoiIitqc19kMmNfZ2V0X3ZhbCgic283eXVxYWo0ZHdjYzhzIikrIiJ9LHsibmFtZSI6ImZyb21BQSIsInZhbHVlIjoiIn0seyJuYW1lIjoibGFuZyIsInZhbHVlIjoiRlJFTkNIIn1dfSk7fSk7fWNhdGNoKGV6ejEpe2lmKGNvbnNvbGUmJmNvbnNvbGUubG9nKQpjb25zb2xlLmxvZyhlenoxKTt9CnZhciBpZGVudF8xY2I0NzgwZGU0MGVjMGRiY2Y5MmQ5MDY3NTA1OTNkYzt0cnl7alF1ZXJ5KGZ1bmN0aW9uKCQpeyQoIiNTZWNvbmRQb3B1cENvbnRhaW5lciIpLnBvcHVwaXplKHsib25BZnRlckluaXRpYWxpemUiOmZ1bmN0aW9uKHNlbGYpe2lmKCIiK2pzX2QyY19nZXRfdmFsKCI2anlwNDY2NHZnd3M4MHciKSsiIj09InNlY29uZGNoYW5jZSIpe2FjdGl2YXRlZFBvcHVwRGl2SUQ9IlNlY29uZFBvcHVwQ29udGFpbmVyIjtzZWxmLnNldHRpbmdzLnNob3dvbmxvYWQ9dHJ1ZTtpZihDb29raWVzLmdldCgicG9wdXBQYWdlVmlld3MiKSYmcGFyc2VJbnQoQ29va2llcy5nZXQoInBvcHVwUGFnZVZpZXdzIikpPj0wKXskKCIjc2Vjb25kQ2hhbmNlUGFnZVZpZXdzIikudmFsKENvb2tpZXMuZ2V0KCJwb3B1cFBhZ2VWaWV3cyIpKTt9CkNvb2tpZXMuc2V0KCJwb3B1cFBhZ2VWaWV3cyIsLTEwMDAwMDAsbnVsbCwiLyIpO30KZWxzZXtpZihDb29raWVzLmdldCgicG9wdXBQYWdlVmlld3MiKSYmcGFyc2VJbnQoQ29va2llcy5nZXQoInBvcHVwUGFnZVZpZXdzIikpPj0wKXtDb29raWVzLnNldCgicG9wdXBQYWdlVmlld3MiLHBhcnNlSW50KENvb2tpZXMuZ2V0KCJwb3B1cFBhZ2VWaWV3cyIpKSsxLG51bGwsIi8iKTt9fX0sIm9uQmVmb3JlVmFsaWRhdGlvbiI6ZnVuY3Rpb24oKXtpZigkKCcjcmViYXRlRW1haWxfc2Vjb25kY2hhbmNlJykudmFsKCk9PSdkZW1vJyYmJCgnI3JlYmF0ZU5hbWVfc2Vjb25kY2hhbmNlJykudmFsKCk9PSdkZW1vJylyZXR1cm4tMTtlbHNlIHJldHVybiAxO30sIm9uQmVmb3JlT3BlbiI6ZnVuY3Rpb24oKXt2YXIgbGFzdG5ld3ZlaGljbGU9Q29va2llcy5nZXQoJ2xhc3RuZXd2ZWhpY2xlJyk7aWYodHlwZW9mIGxhc3RuZXd2ZWhpY2xlIT09J3VuZGVmaW5lZCcmJmxhc3RuZXd2ZWhpY2xlIT09bnVsbCYmJCgnI3JlYmF0ZVNlYXJjaGVkVmVoaWNsZV9zZWNvbmRjaGFuY2UnKS52YWwoKT09Jycpe2xhc3RuZXd2ZWhpY2xlPWxhc3RuZXd2ZWhpY2xlLnNwbGl0KCd8fHwnKTskKCcjcmViYXRlU2VhcmNoZWRWZWhpY2xlX3NlY29uZGNoYW5jZScpLnZhbChsYXN0bmV3dmVoaWNsZVswXSsnICcrbGFzdG5ld3ZlaGljbGVbMV0rJyAnK2xhc3RuZXd2ZWhpY2xlWzJdKTt9fSwib25DbG9zZSI6ZnVuY3Rpb24oKXtpZigkKCIjcG9wdXBEZXBhcnRtZW50IikubGVuZ3RoKSQoIiNwb3B1cERlcGFydG1lbnQiKS5yZW1vdmUoKTt9LCJvbkJlZm9yZXN1Ym1pdCI6ZnVuY3Rpb24oc2VsZil7dmFyIGN1cnJlbnRUaW1lPW5ldyBEYXRlKCk7dmFyIHNlYXJjaHZlaGljbGU9JCgnLmpxdHJhbnNmb3JtZG9uZSBbbmFtZT0ic2VhcmNoZWR2ZWhpY2xlIl0nKS5wcm9wKCd2YWx1ZScpO3ZhciB0eXBlPSd1c2VkJzt2YXIgdHlwZUZvdW5kPWZhbHNlO3ZhciBicmFuZD0nJzt2YXIgbGFzdG5ld3ZlaGljbGU9Q29va2llcy5nZXQoJ2xhc3RuZXd2ZWhpY2xlJyk7dmFyIGVtYWlsT2JqPSQoJ1tuYW1lPSJwb3B1cDJfZW1haWxfdXNlZCJdJyk7aWYodHlwZW9mIGxhc3RuZXd2ZWhpY2xlIT09J3VuZGVmaW5lZCcmJmxhc3RuZXd2ZWhpY2xlIT09bnVsbCl7bGFzdG5ld3ZlaGljbGU9bGFzdG5ld3ZlaGljbGUuc3BsaXQoJ3x8fCcpO30KdmFyIHNlbmRUbz1lbWFpbE9iai5kYXRhKCdlbWFpbHMnKTt2YXIgc2VuZFRvQURGPWVtYWlsT2JqLmRhdGEoJ2VtYWlsc2FkZicpO2lmKHR5cGVvZiBzZWFyY2h2ZWhpY2xlIT09J3VuZGVmaW5lZCcmJnNlYXJjaHZlaGljbGUubGVuZ3RoPjIpe2JyYW5kPXNlYXJjaHZlaGljbGU7aWYoc2VhcmNodmVoaWNsZS5pbmRleE9mKGN1cnJlbnRUaW1lLmdldEZ1bGxZZWFyKCkpIT0tMXx8c2VhcmNodmVoaWNsZS5pbmRleE9mKGN1cnJlbnRUaW1lLmdldEZ1bGxZZWFyKCkrMSkhPS0xKXtpZigkKCcjY3VycmVudFN0YXR1cycpLmxlbmd0aD4wJiYkKCcjY3VycmVudFN0YXR1cycpLnZhbCgpPT0ndXNlZCcmJnNlYXJjaHZlaGljbGUuaW5kZXhPZihjdXJyZW50VGltZS5nZXRGdWxsWWVhcigpKSE9LTEmJnNlYXJjaHZlaGljbGUhPWxhc3RuZXd2ZWhpY2xlWzBdKycgJytsYXN0bmV3dmVoaWNsZVsxXSsnICcrbGFzdG5ld3ZlaGljbGVbMl0pe3R5cGU9J3VzZWQnO31lbHNle3R5cGU9J25ldyc7fQp0eXBlRm91bmQ9dHJ1ZTt9ZWxzZXtmb3IodmFyIGk9MTtpPDI1O2krKyl7aWYoc2VhcmNodmVoaWNsZS5pbmRleE9mKGN1cnJlbnRUaW1lLmdldEZ1bGxZZWFyKCktaSkhPS0xKXt0eXBlRm91bmQ9dHJ1ZTticmVhazt9fX19CmlmKHR5cGVvZiBwYWdlIT0ndW5kZWZpbmVkJyYmcGFnZT09J0JVSUxEQU5EUFJJQ0UnKXt0eXBlPSduZXcnO30KaWYodHlwZT09J25ldycpe2lmKCQoJ1tuYW1lPSJwb3B1cDJfZW1haWxfbmV3Il0nKS5kYXRhKCdlbWFpbHMnKSE9Jycpe2VtYWlsT2JqPSQoJ1tuYW1lPSJwb3B1cDJfZW1haWxfbmV3Il0nKTtzZW5kVG89ZW1haWxPYmouZGF0YSgnZW1haWxzJyk7c2VuZFRvQURGPWVtYWlsT2JqLmRhdGEoJ2VtYWlsc2FkZicpO3ZhciBzZWFyY2hTdHI9YnJhbmQuc3BsaXQoJyAnKTtpZigkKCdbbmFtZV49InBvcHVwMl9lbWFpbFsiXScpLmxlbmd0aD4wJiZicmFuZC5sZW5ndGg+Mil7JCgnW25hbWVePSJwb3B1cDJfZW1haWxbIl0nKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIG9iaj0kKHRoaXMpO3ZhciBzZWFyY2g9Jyc7JC5lYWNoKHNlYXJjaFN0cixmdW5jdGlvbihrLHMpe3NlYXJjaD1zZWFyY2hTdHJba10uY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrc2VhcmNoU3RyW2tdLnNsaWNlKDEpLnRvTG93ZXJDYXNlKCk7aWYob2JqLmRhdGEoJ2JyYW5kcycpLmluZGV4T2Yoc2VhcmNoKSE9LTEpe3NlbmRUbz1vYmouZGF0YSgnZW1haWxzJyk7c2VuZFRvQURGPW9iai5kYXRhKCdlbWFpbHNhZGYnKTtyZXR1cm47fX0pO30pO319fQppZih0eXBlRm91bmQ9PWZhbHNlJiYkKCcjY3VycmVudFN0YXR1cycpLmxlbmd0aD4wKXt2YXIgdHlwZT0kKCcjY3VycmVudFN0YXR1cycpLnZhbCgpO2lmKHR5cGU9PSduZXcnKXtlbWFpbE9iaj0kKCdbbmFtZT0icG9wdXAyX2VtYWlsX25ldyJdJyk7c2VuZFRvPWVtYWlsT2JqLmRhdGEoJ2VtYWlscycpO3NlbmRUb0FERj1lbWFpbE9iai5kYXRhKCdlbWFpbHNhZGYnKTt9fQppZigkKCcuYnJhbmRlbWFpbCcpLmxlbmd0aD09MCkkKCdib2R5JykuYXBwZW5kKCc8aW5wdXQgY2xhc3M9ImJyYW5kZW1haWwiIG5hbWUgPSJicmFuZGVtYWlsIiB2YWw9IiI+Jyk7aWYoJCgnLm1vZGVsZW1haWwnKS5sZW5ndGg9PTApJCgnYm9keScpLmFwcGVuZCgnPGlucHV0IGNsYXNzPSJtb2RlbGVtYWlsIiBuYW1lID0ibW9kZWxlbWFpbCIgdmFsPSIiPicpO2lmKCQoJy55ZWFyZW1haWwnKS5sZW5ndGg9PTApJCgnYm9keScpLmFwcGVuZCgnPGlucHV0IGNsYXNzPSJ5ZWFyZW1haWwiIG5hbWUgPSJ5ZWFyZW1haWwiIHZhbD0iIj4nKTt2YXIgc2VhcmNodmVoaWNsZUFycj1bXTtpZih0eXBlb2Ygc2VhcmNodmVoaWNsZSE9PSd1bmRlZmluZWQnKXtzZWFyY2h2ZWhpY2xlQXJyPXNlYXJjaHZlaGljbGUuc3BsaXQoJyAnKTt9CmlmKHNlYXJjaHZlaGljbGVBcnIubGVuZ3RoPT0zKXskKCcuYnJhbmRlbWFpbCcpLnZhbChzZWFyY2h2ZWhpY2xlQXJyWzBdKTskKCcubW9kZWxlbWFpbCcpLnZhbChzZWFyY2h2ZWhpY2xlQXJyWzFdKTskKCcueWVhcmVtYWlsJykudmFsKHNlYXJjaHZlaGljbGVBcnJbMl0pO31lbHNlIGlmKHR5cGVvZiBsYXN0bmV3dmVoaWNsZSE9J3VuZGVmaW5lZCcmJmxhc3RuZXd2ZWhpY2xlIT1udWxsJiZsYXN0bmV3dmVoaWNsZS5sZW5ndGg9PTMpeyQoJy5icmFuZGVtYWlsJykudmFsKGxhc3RuZXd2ZWhpY2xlWzBdKTskKCcubW9kZWxlbWFpbCcpLnZhbChsYXN0bmV3dmVoaWNsZVsxXSk7JCgnLnllYXJlbWFpbCcpLnZhbChsYXN0bmV3dmVoaWNsZVsyXSk7fQpzZWxmLnNldHRpbmdzLnZlaGljbGVTdGF0ZT10eXBlO2lmKCEkKCcjcG9wdXBEZXBhcnRtZW50JykubGVuZ3RoKSQoZG9jdW1lbnQuYm9keSkuYXBwZW5kKCc8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0icG9wdXBEZXBhcnRtZW50IiB2YWx1ZT0iJyt0eXBlLnRvVXBwZXJDYXNlKCkrJyIgLz4nKTtlbHNlICQoJyNwb3B1cERlcGFydG1lbnQnKS52YWwodHlwZS50b1VwcGVyQ2FzZSgpKTtpZigkKCcjcmViYXRlRW1haWxfc2Vjb25kY2hhbmNlJykudmFsKCk9PSdkZW1vJyYmJCgnI3JlYmF0ZU5hbWVfc2Vjb25kY2hhbmNlJykudmFsKCk9PSdkZW1vJyl7cmV0dXJuIGZhbHNlO319LCJvbkFmdGVyc3VibWl0IjpmdW5jdGlvbigpe30sImNvb2tpZUR1cmF0aW9uIjpmYWxzZSwiY29va2llTmFtZSI6ZmFsc2UsImNvb2tpZUNyZWF0ZSI6ZmFsc2UsImZpbGxmbGFnIjp0cnVlLCJuYW1lIjoic2Vjb25kUG9wdXAiLCJhbmltYXRpb24iOmZhbHNlLCJhbmltYXRpb25TcGVlZCI6MzAwLCJjbG9zZU9uQmFja2dyb3VuZENsaWNrIjpmYWxzZSwiZGlzbWlzc01vZGFsQ2xhc3MiOiJjbG9zZS1yZXZlYWwtbW9kYWwiLCJjbG9zZUJ1dHRvbiI6dHJ1ZSwiZXJyb3JNc2ciOiJDZXJ0YWlucyBjaGFtcHMgb2JsaWdhdG9pcmVzIG4nb250IHBhcyAmZWFjdXRlO3QmZWFjdXRlOyByZW1wbGlzIiwibm90cmFuc2Zvcm0iOnRydWUsImNsb3NlT25TdWJtaXQiOnRydWUsInZlaGljbGVTdGF0ZSI6Ik5ldyIsImdvb2dsZVRyYWNraW5nIjp7ImlkU3VmZml4IjoiX3NlY29uZHBvcHVwIiwibGFiZWwiOiJEZW1hbmRlcy1Db3Vwb25zLU5ldWYiLCJsYWJlbHNlY3Rpb24iOiJOZXVmIiwiaXNleHByZXNzIjowLCJpc3Byb21vIjowLCJpc2hvbWVwYWdlIjowLCJpc21vYmlsZSI6MH0sImZvcm0iOnsiZW1haWxpZCI6IkJlc3RwcmljZUd1YXJhbnRlZSIsIm9mZmVydHlwZSI6IkRpc2NvdW50SW1hZ2VQb3B1cEJlc3RyYXRlR3VhcmFudGVlIiwibmFtZSI6ImZybVJlYmF0ZV9zZWNvbmRwb3B1cCIsInNlbmRUbyI6IjBiN2ZlODNiMjAzYjY5MTBmMDIwMWE3MjUxN2MyZWYwfDMyNTU2Njk4ODYiLCJzZW5kVG9BREYiOiJiYTYyMGMzZjJlZTU3NTRjZmFiM2NmYWQxNDE3NTczY3wzMjU1NjY5ODg2IiwiT0tCdXR0b25DbGFzcyI6InN1Ym1pdGJ1dHRvbiIsIkNhbmNlbEJ1dHRvbkNsYXNzIjpudWxsLCJzaG93RW1haWxDb25maXJtYXRpb24iOmZhbHNlfSwiY29uZmlybUZvcm0iOlt7Im5hbWUiOiJsYWJlbCIsInZhbHVlIjoiRGVtYW5kZXMtQ291cG9ucy1OZXVmIiwiY2xhc3MiOiJsYWJlbGVtYWlsIn0seyJuYW1lIjoic2VjdGlvbiIsInZhbHVlIjoiTmV1ZiIsImNsYXNzIjoibGFiZWxzZWN0aW9uIn0seyJuYW1lIjoiYnJhbmQiLCJ2YWx1ZSI6IiIranNfZDJjX2dldF92YWwoIjFlcml2OTAwcGRhODh3dzgiKSsiIiwiY2xhc3MiOiJicmFuZGVtYWlsIn0seyJuYW1lIjoibW9kZWwiLCJ2YWx1ZSI6IiIranNfZDJjX2dldF92YWwoIjEwcGE3djNxZWxkY29zayIpKyIiLCJjbGFzcyI6Im1vZGVsZW1haWwifSx7Im5hbWUiOiJ5ZWFyIiwidmFsdWUiOiIiK2pzX2QyY19nZXRfdmFsKCJyODJ6Zmt4YTJkd3NzMDAiKSsiIiwiY2xhc3MiOiJ5ZWFyZW1haWwifSx7Im5hbWUiOiJnb29nbGVpZCIsInZhbHVlIjoiIn0seyJuYW1lIjoiZ29vZ2xlaWRkMmNtZWRpYSIsInZhbHVlIjoiIn0seyJuYW1lIjoiYmluZ2NvbmlkIiwidmFsdWUiOiIifSx7Im5hbWUiOiJiaW5nYWN0aW9uaWQiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImJpbmdkb21haW5pZCIsInZhbHVlIjoiIn0seyJuYW1lIjoiYWRyb2xsQWR2IiwidmFsdWUiOiIifSx7Im5hbWUiOiJhZHJvbGxQaXgiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImZhY2Vib29rQ29uSWQiLCJ2YWx1ZSI6IjIwNjgyODQxMzA5Njc4MCJ9LHsibmFtZSI6ImRvbWFpbiIsInZhbHVlIjoiaHl1bmRhaXJlcGVudGlnbnkuY29tIn0seyJuYW1lIjoicmVmZXJyZXIiLCJ2YWx1ZSI6IiIranNfZDJjX2dldF92YWwoImkzZ3NheGdzNWprOHdjayIpKyIifSx7Im5hbWUiOiJpc2V4cHJlc3MiLCJ2YWx1ZSI6IjAiLCJjbGFzcyI6ImlzZXhwcmVzcyJ9LHsibmFtZSI6ImlzcHJvbW8iLCJ2YWx1ZSI6IjAifSx7Im5hbWUiOiJpc2hvbWVwYWdlIiwidmFsdWUiOiIwIn0seyJuYW1lIjoidGV4dENhclNlY3Rpb25UeXBlIiwidmFsdWUiOiIiK2pzX2QyY19nZXRfdmFsKCJzbzd5dXFhajRkd2NjOHMiKSsiIn0seyJuYW1lIjoiZnJvbUFBIiwidmFsdWUiOiIifSx7Im5hbWUiOiJsYW5nIiwidmFsdWUiOiJGUkVOQ0gifV19KTt9KTt9Y2F0Y2goZXp6MSl7aWYoY29uc29sZSYmY29uc29sZS5sb2cpCmNvbnNvbGUubG9nKGV6ejEpO30KdmFyIGlkZW50X2JhNDRkNGUzYWVjOTFlNzIwNTllMTQ0MDA5OTAzOGZiO3RyeXtqUXVlcnkoZnVuY3Rpb24oJCl7JCgiI3BheW1lbnRDYWxjdWxhdG9yUG9wdXBDb250YWluZXIiKS5wb3B1cGl6ZSh7Im9uQmVmb3JlT3BlbiI6ZnVuY3Rpb24oc2VsZil7aWYoc2VsZi5zZXR0aW5ncy5hbHJlYWR5SW5pdCl7c2VsZi5zZXR0aW5ncy5hbHJlYWR5SW5pdD1mYWxzZTtpZihDb29raWVzLmdldCgncG9wdXBGb3JtRmlsbGVkJyk9PSIxIil7JCgiI3BheW1lbnRDYWxjdWxhdG9yQ2FsbFRvQWN0aW9uQ29udGFpbmVyIikuaGlkZSgpO30KcmV0dXJuIHRydWU7fQppZighc2VsZi5zZXR0aW5ncy5zdHlsZWlkKXJldHVybiBmYWxzZTtzZWxmLnNldHRpbmdzLmluaXRpYWxTdHlsZWlkPXNlbGYuc2V0dGluZ3Muc3R5bGVpZDtpZigkKCIuYm5wX3BheW1lbnRfY29udGFpbmVyIikubGVuZ3RoKXtzZWxmLnNldHRpbmdzLnBheW1lbnRPcHRpb25zPXBhcnNlSW50KCQoIiNvcHRpb25QcmljZVRvdGFsIikuaHRtbCgpLnJlcGxhY2UoIiwiLCIiKSk7fQpnYVRyYWNrKCdjLl90cmFja0V2ZW50JywnQ2xpcXVlcyBDYWxjdWxhdHJpY2UnLCdOZXVmJywnT3BlbicsMSk7cGF5bWVudENhbGN1bGF0b3JQb3B1cEluaXQoKTt9LCJvbkNsb3NlIjpmdW5jdGlvbihzZWxmKXtpZighc2VsZi5zZXR0aW5ncy5hbHJlYWR5SW5pdCl7Z2FUcmFjaygnYy5fdHJhY2tFdmVudCcsJ0NsaXF1ZXMgQ2FsY3VsYXRyaWNlJywnTmV1ZicsJ0Nsb3NlJywxKTt9CmlmKCgoJCgnI3RhcmdldFBhZ2UnKS52YWwoKXx8ZmFsc2UpPT0nTkVXQ0FSUyd8fCgkKCcjdGFyZ2V0UGFnZScpLnZhbCgpfHxmYWxzZSk9PSdVU0VEQ0FSUycpJiZ3aW5kb3cucGF5bWVudFNlbGVjdENoYW5nZWQ9PXRydWUpe2xvY2F0aW9uLnJlbG9hZCgpO319LCJvbkFmdGVySW5pdGlhbGl6ZSI6ZnVuY3Rpb24oc2VsZil7cG9wdXBDYWxjdWxhdG9ySW5pdGlhbGl6ZWQoKTt9LCJjb29raWVEdXJhdGlvbiI6MzAsImNvb2tpZU5hbWUiOm51bGwsImNvb2tpZUNyZWF0ZSI6bnVsbCwiZ29vZ2xlVHJhY2tpbmciOnsiaWRTdWZmaXgiOiIiLCJsYWJlbCI6IiIsImxhYmVsc2VjdGlvbiI6IiIsImlzZXhwcmVzcyI6MCwiaXNwcm9tbyI6MCwiaXNob21lcGFnZSI6MCwiaXNtb2JpbGUiOjB9LCJmb3JtIjp7ImVtYWlsaWQiOm51bGwsIm9mZmVydHlwZSI6bnVsbCwibmFtZSI6bnVsbCwic2VuZFRvIjpudWxsLCJzZW5kVG9BREYiOm51bGwsIk9LQnV0dG9uQ2xhc3MiOiJzdWJtaXRCdG4iLCJDYW5jZWxCdXR0b25DbGFzcyI6ImNhbmNlbEJ0biIsInNob3dFbWFpbENvbmZpcm1hdGlvbiI6ZmFsc2UsImZyb21BQSI6ZmFsc2UsImNvbmZpcm1hdGlvbiI6eyJ0aXRsZSI6bnVsbCwiYm9keSI6bnVsbH19LCJzdGF0ZSI6W10sInZlaGljbGVTdGF0ZSI6InVzZWQiLCJjbG9zZU9uU3VibWl0Ijp0cnVlLCJmaWxsZmxhZyI6ZmFsc2UsIm5vdHJhbnNmb3JtIjp0cnVlLCJuYW1lIjpmYWxzZSwiYW5pbWF0aW9uIjoiZmFkZUFuZFBvcCIsImFuaW1hdGlvblNwZWVkIjozMDAsImNsb3NlT25CYWNrZ3JvdW5kQ2xpY2siOmZhbHNlLCJkaXNtaXNzTW9kYWxDbGFzcyI6ImNsb3NlLXJldmVhbC1tb2RhbCIsImNsb3NlQnV0dG9uIjp0cnVlLCJieXBhc3NDb25zZW50IjpmYWxzZSwidGhyZXNob2xkIjpmYWxzZSwidGhyZXNob2xkVmFsdWUiOmZhbHNlLCJzY3JvbGx1cCI6ZmFsc2UsIm1haW5wb3B1cCI6ZmFsc2UsInNob3dvbmxvYWQiOmZhbHNlLCJjb3VudGRvd24iOjE3NzM1NDcyMDAsImNvbmZpcm1Gb3JtIjpbeyJuYW1lIjoibGFiZWwiLCJ2YWx1ZSI6IiIsImNsYXNzIjoibGFiZWxlbWFpbCJ9LHsibmFtZSI6InNlY3Rpb24iLCJ2YWx1ZSI6IiIsImNsYXNzIjoibGFiZWxzZWN0aW9uIn0seyJuYW1lIjoiYnJhbmQiLCJ2YWx1ZSI6IiIranNfZDJjX2dldF92YWwoIjFlcml2OTAwcGRhODh3dzgiKSsiIiwiY2xhc3MiOiJicmFuZGVtYWlsIn0seyJuYW1lIjoibW9kZWwiLCJ2YWx1ZSI6IiIranNfZDJjX2dldF92YWwoIjEwcGE3djNxZWxkY29zayIpKyIiLCJjbGFzcyI6Im1vZGVsZW1haWwifSx7Im5hbWUiOiJ5ZWFyIiwidmFsdWUiOiIiK2pzX2QyY19nZXRfdmFsKCJyODJ6Zmt4YTJkd3NzMDAiKSsiIiwiY2xhc3MiOiJ5ZWFyZW1haWwifSx7Im5hbWUiOiJnb29nbGVpZCIsInZhbHVlIjoiIn0seyJuYW1lIjoiZ29vZ2xlaWRkMmNtZWRpYSIsInZhbHVlIjoiIn0seyJuYW1lIjoiYmluZ2NvbmlkIiwidmFsdWUiOiIifSx7Im5hbWUiOiJiaW5nYWN0aW9uaWQiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImJpbmdkb21haW5pZCIsInZhbHVlIjoiIn0seyJuYW1lIjoiYWRyb2xsQWR2IiwidmFsdWUiOiIifSx7Im5hbWUiOiJhZHJvbGxQaXgiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImZhY2Vib29rQ29uSWQiLCJ2YWx1ZSI6IjIwNjgyODQxMzA5Njc4MCJ9LHsibmFtZSI6ImRvbWFpbiIsInZhbHVlIjoiaHl1bmRhaXJlcGVudGlnbnkuY29tIn0seyJuYW1lIjoicmVmZXJyZXIiLCJ2YWx1ZSI6IiIranNfZDJjX2dldF92YWwoImkzZ3NheGdzNWprOHdjayIpKyIifSx7Im5hbWUiOiJpc2V4cHJlc3MiLCJ2YWx1ZSI6IjAiLCJjbGFzcyI6ImlzZXhwcmVzcyJ9LHsibmFtZSI6ImlzcHJvbW8iLCJ2YWx1ZSI6IjAifSx7Im5hbWUiOiJpc2hvbWVwYWdlIiwidmFsdWUiOiIwIn0seyJuYW1lIjoidGV4dENhclNlY3Rpb25UeXBlIiwidmFsdWUiOiIiK2pzX2QyY19nZXRfdmFsKCJzbzd5dXFhajRkd2NjOHMiKSsiIn0seyJuYW1lIjoiZnJvbUFBIiwidmFsdWUiOiIifSx7Im5hbWUiOiJsYW5nIiwidmFsdWUiOiJGUkVOQ0gifV19KTt9KTt9Y2F0Y2goZXp6MSl7aWYoY29uc29sZSYmY29uc29sZS5sb2cpCmNvbnNvbGUubG9nKGV6ejEpO30KdmFyIGlkZW50XzIzMjg4MjM5MGUyYzY1NWQ4N2MxMDY4M2MxZmZhOWIyO3RyeXtqUXVlcnkoZnVuY3Rpb24oJCl7JCgiI21vdG9pbnNpZ2h0U2hvcFBvcHVwQ29udGFpbmVyIikucG9wdXBpemUoeyJvbkJlZm9yZU9wZW4iOmZ1bmN0aW9uKHNlbGYpe21vdG9pbnNpZ2h0U2hvcE9wZW4oKTt9LCJvbkFmdGVySW5pdGlhbGl6ZSI6ZnVuY3Rpb24oc2VsZil7bW90b2luc2lnaHRTaG9wSW5pdCgpO30sImNvb2tpZUR1cmF0aW9uIjozMCwiY29va2llTmFtZSI6bnVsbCwiY29va2llQ3JlYXRlIjpudWxsLCJnb29nbGVUcmFja2luZyI6eyJpZFN1ZmZpeCI6IiIsImxhYmVsIjoiIiwibGFiZWxzZWN0aW9uIjoiIiwiaXNleHByZXNzIjowLCJpc3Byb21vIjowLCJpc2hvbWVwYWdlIjowLCJpc21vYmlsZSI6MH0sImZvcm0iOnsiZW1haWxpZCI6bnVsbCwib2ZmZXJ0eXBlIjpudWxsLCJuYW1lIjpudWxsLCJzZW5kVG8iOm51bGwsInNlbmRUb0FERiI6bnVsbCwiT0tCdXR0b25DbGFzcyI6InN1Ym1pdEJ0biIsIkNhbmNlbEJ1dHRvbkNsYXNzIjoiY2FuY2VsQnRuIiwic2hvd0VtYWlsQ29uZmlybWF0aW9uIjpmYWxzZSwiZnJvbUFBIjpmYWxzZSwiY29uZmlybWF0aW9uIjp7InRpdGxlIjpudWxsLCJib2R5IjpudWxsfX0sInN0YXRlIjpbXSwidmVoaWNsZVN0YXRlIjoidXNlZCIsImNsb3NlT25TdWJtaXQiOnRydWUsImZpbGxmbGFnIjpmYWxzZSwibm90cmFuc2Zvcm0iOnRydWUsIm5hbWUiOmZhbHNlLCJhbmltYXRpb24iOiJmYWRlQW5kUG9wIiwiYW5pbWF0aW9uU3BlZWQiOjMwMCwiY2xvc2VPbkJhY2tncm91bmRDbGljayI6ZmFsc2UsImRpc21pc3NNb2RhbENsYXNzIjoiY2xvc2UtcmV2ZWFsLW1vZGFsIiwiY2xvc2VCdXR0b24iOnRydWUsImJ5cGFzc0NvbnNlbnQiOmZhbHNlLCJ0aHJlc2hvbGQiOmZhbHNlLCJ0aHJlc2hvbGRWYWx1ZSI6ZmFsc2UsInNjcm9sbHVwIjpmYWxzZSwibWFpbnBvcHVwIjpmYWxzZSwic2hvd29ubG9hZCI6ZmFsc2UsImNvdW50ZG93biI6MTc3MzU0NzIwMCwiY29uZmlybUZvcm0iOlt7Im5hbWUiOiJsYWJlbCIsInZhbHVlIjoiIiwiY2xhc3MiOiJsYWJlbGVtYWlsIn0seyJuYW1lIjoic2VjdGlvbiIsInZhbHVlIjoiIiwiY2xhc3MiOiJsYWJlbHNlY3Rpb24ifSx7Im5hbWUiOiJicmFuZCIsInZhbHVlIjoiIitqc19kMmNfZ2V0X3ZhbCgiMWVyaXY5MDBwZGE4OHd3OCIpKyIiLCJjbGFzcyI6ImJyYW5kZW1haWwifSx7Im5hbWUiOiJtb2RlbCIsInZhbHVlIjoiIitqc19kMmNfZ2V0X3ZhbCgiMTBwYTd2M3FlbGRjb3NrIikrIiIsImNsYXNzIjoibW9kZWxlbWFpbCJ9LHsibmFtZSI6InllYXIiLCJ2YWx1ZSI6IiIranNfZDJjX2dldF92YWwoInI4Mnpma3hhMmR3c3MwMCIpKyIiLCJjbGFzcyI6InllYXJlbWFpbCJ9LHsibmFtZSI6Imdvb2dsZWlkIiwidmFsdWUiOiIifSx7Im5hbWUiOiJnb29nbGVpZGQyY21lZGlhIiwidmFsdWUiOiIifSx7Im5hbWUiOiJiaW5nY29uaWQiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImJpbmdhY3Rpb25pZCIsInZhbHVlIjoiIn0seyJuYW1lIjoiYmluZ2RvbWFpbmlkIiwidmFsdWUiOiIifSx7Im5hbWUiOiJhZHJvbGxBZHYiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImFkcm9sbFBpeCIsInZhbHVlIjoiIn0seyJuYW1lIjoiZmFjZWJvb2tDb25JZCIsInZhbHVlIjoiMjA2ODI4NDEzMDk2NzgwIn0seyJuYW1lIjoiZG9tYWluIiwidmFsdWUiOiJoeXVuZGFpcmVwZW50aWdueS5jb20ifSx7Im5hbWUiOiJyZWZlcnJlciIsInZhbHVlIjoiIitqc19kMmNfZ2V0X3ZhbCgiaTNnc2F4Z3M1ams4d2NrIikrIiJ9LHsibmFtZSI6ImlzZXhwcmVzcyIsInZhbHVlIjoiMCIsImNsYXNzIjoiaXNleHByZXNzIn0seyJuYW1lIjoiaXNwcm9tbyIsInZhbHVlIjoiMCJ9LHsibmFtZSI6ImlzaG9tZXBhZ2UiLCJ2YWx1ZSI6IjAifSx7Im5hbWUiOiJ0ZXh0Q2FyU2VjdGlvblR5cGUiLCJ2YWx1ZSI6IiIranNfZDJjX2dldF92YWwoInNvN3l1cWFqNGR3Y2M4cyIpKyIifSx7Im5hbWUiOiJmcm9tQUEiLCJ2YWx1ZSI6IiJ9LHsibmFtZSI6ImxhbmciLCJ2YWx1ZSI6IkZSRU5DSCJ9XX0pO30pO31jYXRjaChlenoxKXtpZihjb25zb2xlJiZjb25zb2xlLmxvZykKY29uc29sZS5sb2coZXp6MSk7fTsKLyoqIC9tL2pzL3NrZWxldG9uLmNvbnRyb2xsZXIuanMgKiovCnZhciBfX19kMmNfc2tlbGV0b25jb250cm9sbGVyanNfY19vbj0iMjAyNi0wMS0xMiAxMDoxNDo0MiI7J3VzZSBzdHJpY3QnO3RyeXtqUXVlcnkoZnVuY3Rpb24oYyl7bGV0IGU7Y29uc29sZS5sb2coIkdTUEVFRC1BRlRFUi1KUVVFUlk6IisoRGF0ZS5ub3coKS0obnVsbCE9KGU9d2luZG93LmdUZXN0U3BlZWRDb25uKT9lOjApKS8xRTMpO3dpbmRvdy5nUmVzb3VyY2VMb2FkZXJBbmRKcXVlcnlJc1JlYWR5PSEwO3NldFRpbWVvdXQoKCk9Pnt2YXIgYj1jKCIjZW1iZWQtY29udGFpbmVyLXlvdXR1YmUtaG9tZXBhZ2UtYnlpZCIpO2NvbnNvbGUubG9nKCJTS0VMRVRPTnwjZW1iZWQtY29udGFpbmVyLXlvdXR1YmUtaG9tZXBhZ2UtYnlpZCIpO2lmKGIubGVuZ3RoKXt2YXIgYT1iLmF0dHIoImRhdGEtaWZyYW1lLWF0dHJpYnV0ZXMiKTsidW5kZWZpbmVkIiE9PWEmJnZvaWQgMCE9PWEmJihhPUpTT04ucGFyc2UoYXRvYihhKSksYygiPGlmcmFtZS8+IixhKS5hcHBlbmRUbyhiKSl9fSw3RTMpO3NldFRpbWVvdXQoKCk9Pnt2YXIgYj1jKCIjZW1iZWQtY29udGFpbmVyLW1hcHMtaG9tZXBhZ2UtYnlpZCIpOwpjb25zb2xlLmxvZygiU0tFTEVUT058I2VtYmVkLWNvbnRhaW5lci1tYXBzLWhvbWVwYWdlLWJ5aWQiKTtpZihiLmxlbmd0aCl7dmFyIGE9Yi5hdHRyKCJkYXRhLWlmcmFtZS1hdHRyaWJ1dGVzIik7InVuZGVmaW5lZCIhPT1hJiZ2b2lkIDAhPT1hJiYoYT1KU09OLnBhcnNlKGF0b2IoYSkpLGluamVjdEdvb2dsZU1hcHNLZXkoZnVuY3Rpb24oZil7YS5zcmM9YS5zcmMucmVwbGFjZSgiX19LRVlfXyIsZik7YygiPGlmcmFtZS8+IixhKS5hcHBlbmRUbyhiKX0pKX19LDdFMyk7d2luZG93LmRlbGF5ZWRDc3M9ZnVuY3Rpb24oYil7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTthLnR5cGU9InRleHQvY3NzIjthLnN0eWxlU2hlZXQ\/YS5zdHlsZVNoZWV0LmNzc1RleHQ9YjphLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGIpKTtjb25zb2xlLmxvZygiU0tFTEVUT058REVMQVlFRExPQURDU1N8IitiKTtkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGEpfTsKd2luZG93LmRlbGF5ZWRDc3MoIi5oaWRlT25QcmVMb2Fke3Zpc2liaWxpdHk6dmlzaWJsZSAhaW1wb3J0YW50O30iKTtzZXRUaW1lb3V0KCgpPT57Y29uc29sZS5sb2coIlNLRUxFVE9OfHNldHRpbmcgbWVudSBtdXRhdGlvbiBvYnNlcnZlciIpO3RyeXtudWxsIT09ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLnNrZWxldG9uLnNrZWxldG9uLWRlc2t0b3Auc2tlbGV0b24tY29uZC0yIikmJihuZXcgTXV0YXRpb25PYnNlcnZlcigoYSxmKT0+e2Zvcihjb25zdCBkIG9mIGEpImF0dHJpYnV0ZXMiPT09ZC50eXBlJiYiY2xhc3MiPT09ZC5hdHRyaWJ1dGVOYW1lJiZkLnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoInVwX21lbnUiKSYmKGE9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLnNrZWxldG9uLnNrZWxldG9uLWRlc2t0b3Auc2tlbGV0b24tY29uZC0yIiksZC50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCJmaXhlZCIpP2EuY2xhc3NMaXN0LmNvbnRhaW5zKCJmaXhlZCIpfHxhLmNsYXNzTGlzdC5hZGQoImZpeGVkIik6CmEuY2xhc3NMaXN0LmNvbnRhaW5zKCJmaXhlZCIpJiZhLmNsYXNzTGlzdC5yZW1vdmUoImZpeGVkIikpfSkpLm9ic2VydmUoZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLnNrZWxldG9uLnNrZWxldG9uLWRlc2t0b3Auc2tlbGV0b24tY29uZC0yID4gLnVwX21lbnUiKSx7YXR0cmlidXRlczohMCxjaGlsZExpc3Q6ITAsc3VidHJlZTohMH0pfWNhdGNoKGEpe2NvbnNvbGUuZXJyb3IoIlNLRUxFVE9OfC5za2VsZXRvbi5za2VsZXRvbi1kZXNrdG9wLnNrZWxldG9uLWNvbmQtMiIsYSl9Y29uc29sZS5sb2coIlNLRUxFVE9OfGlzLWxvYWRlZC1ub3ciKTtjb25zdCBiPWMoIi5za2VsZXRvbiIpO2IuYWRkQ2xhc3MoImlzLWxvYWRlZC1ub3ciKTtzZXRUaW1lb3V0KCgpPT57Y29uc29sZS5sb2coIlNLRUxFVE9OfHJlbW92aW5nIHNrZWxldG9ucyBmaXJzdCBpbWcgYmFja2dyb3VuZCIpO2IuZmluZCgiaW1nLmlzLXNrZWxldG9uLWJnLWltZyIpLnJlbW92ZSgpfSwzPHdpbmRvdy5nU3BlZWRDb25uPwoxRTQ6NkUzKX0sMjAwKX0pfWNhdGNoKGMpe307","menu_new":"","html":"Cgk8c3R5bGU+CgkJaHRtbCB7Zm9udC1zaXplOjEwMCU7fQoJCW1haW4gKiB7bWFyZ2luOmluaXRpYWw7fQoJCWZvb3RlciB7Y2xlYXI6IGJvdGg7fQoJPC9zdHlsZT4KCgk8ZGl2IGlkPSJkMmNfYm9keUNvbnRlbnQiIGNsYXNzPSJkMmMtZW1iZWRkZWQtY29udGVudC1tb2JpbGUiPgoKCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iYWN0aXZlc2l0ZWxhbmd1YWdlIiB2YWx1ZT0iRlJFTkNIIi8+CgoJCTxpbnB1dAoJCQl0eXBlPSJoaWRkZW4iCgkJCWlkPSJkMmNEYXRhU3RvcmUiCgkJCWRhdGEtYmFzZXVybD0iaHR0cHM6Ly9oeXVuZGFpcmVwZW50aWdueS5jb20iCgkJCWRhdGEtYm9keWNsYXNzPSIgaGVhZGluZ0NhcHNPbiBGUkVOQ0ggTmV3U3JwMiBOZXdTcnAyTW9iaWxlIgoJCQlkYXRhLWlzbW9iaWxlPSIxIgoJCT4KCgkJPHNjcmlwdCBzcmM9Imh0dHBzOi8vYWlhcHBzLmQyY21lZGlhLmNhL2V2Ym9vc3QvZXYtY29tcGFyYXRvci5paWZlLmpzIiBhc3luYz48L3NjcmlwdD48c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2xkK2pzb24iPgogICAgeyJAY29udGV4dCI6Imh0dHBzOlwvXC9zY2hlbWEub3JnIiwiQHR5cGUiOiJXZWJTaXRlIiwibmFtZSI6Ikh5dW5kYWkgUmVwZW50aWdueSIsInVybCI6Imh0dHBzOlwvXC93d3cuaHl1bmRhaXJlcGVudGlnbnkuY29tXC8iLCJwb3RlbnRpYWxBY3Rpb24iOnsiQHR5cGUiOiJTZWFyY2hBY3Rpb24iLCJ0YXJnZXQiOiJodHRwczpcL1wvd3d3Lmh5dW5kYWlyZXBlbnRpZ255LmNvbVwvb2NjYXNpb25cL3JlY2hlcmNoZS5odG1sP3E9e3NlYXJjaF90ZXJtX3N0cmluZ30iLCJxdWVyeS1pbnB1dCI6InJlcXVpcmVkIG5hbWU9c2VhcmNoX3Rlcm1fc3RyaW5nIn19Cjwvc2NyaXB0PjxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vbGQranNvbiI+CiAgICB7IkBjb250ZXh0IjoiaHR0cHM6XC9cL3NjaGVtYS5vcmciLCJAdHlwZSI6IkF1dG9tb3RpdmVCdXNpbmVzcyIsInVybCI6Imh0dHBzOlwvXC93d3cuaHl1bmRhaXJlcGVudGlnbnkuY29tIiwibmFtZSI6Ikh5dW5kYWkgUmVwZW50aWdueSIsImltYWdlIjoiaHR0cHM6XC9cL3d3dy5oeXVuZGFpcmVwZW50aWdueS5jb21cL2ltYWdlc1wvTG9nb01vYmlsZVwvaHl1bmRhaS1tb2JpbGUtbG9nby1yZ2ItZnIucG5nIiwibG9nbyI6Imh0dHBzOlwvXC93d3cuaHl1bmRhaXJlcGVudGlnbnkuY29tXC9pbWFnZXNcL0xvZ29Nb2JpbGVcL2h5dW5kYWktbW9iaWxlLWxvZ28tcmdiLWZyLnBuZyIsInNhbWVBcyI6WyJodHRwczpcL1wvd3d3LmZhY2Vib29rLmNvbVwvSHl1bmRhaVJlcGVudGlnbnlcLyIsImh0dHBzOlwvXC93d3cueW91dHViZS5jb21cL0BoeXVuZGFpcmVwZW50aWdueTc5ODYiLCJodHRwczpcL1wvd3d3Lmluc3RhZ3JhbS5jb21cL2h5dW5kYWlyZXBlbnRpZ255XC8iXSwiZ2VvIjp7IkB0eXBlIjoiR2VvQ2lyY2xlIiwiZ2VvTWlkcG9pbnQiOnsiQHR5cGUiOiJHZW9Db29yZGluYXRlcyIsImxhdGl0dWRlIjoiNDUuNzY0MTEyIiwibG9uZ2l0dWRlIjoiLTczLjQyMTc4OSJ9LCJnZW9SYWRpdXMiOjEwMDAwMH0sImFkZHJlc3MiOnsiQHR5cGUiOiJQb3N0YWxBZGRyZXNzIiwic3RyZWV0QWRkcmVzcyI6Ijg0NSwgcnVlIE5vdHJlLURhbWUiLCJhZGRyZXNzTG9jYWxpdHkiOiJSZXBlbnRpZ255IiwiYWRkcmVzc1JlZ2lvbiI6IlF1ZWJlYyIsInBvc3RhbENvZGUiOiJKNVkgMUM0IiwiYWRkcmVzc0NvdW50cnkiOiJDQSJ9LCJ0ZWxlcGhvbmUiOiI0NTAtNTgyLTMxODIiLCJwcmljZVJhbmdlIjoiMjQxNDkkLTgxMTQ4JCIsIm9wZW5pbmdIb3Vyc1NwZWNpZmljYXRpb24iOlt7IkB0eXBlIjoiT3BlbmluZ0hvdXJzU3BlY2lmaWNhdGlvbiIsImRheU9mV2VlayI6Ik1vbmRheSIsIm9wZW5zIjoiMDk6MDAiLCJjbG9zZXMiOiIyMDowMCJ9LHsiQHR5cGUiOiJPcGVuaW5nSG91cnNTcGVjaWZpY2F0aW9uIiwiZGF5T2ZXZWVrIjoiVHVlc2RheSIsIm9wZW5zIjoiMDk6MDAiLCJjbG9zZXMiOiIyMDowMCJ9LHsiQHR5cGUiOiJPcGVuaW5nSG91cnNTcGVjaWZpY2F0aW9uIiwiZGF5T2ZXZWVrIjoiV2VkbmVzZGF5Iiwib3BlbnMiOiIwOTowMCIsImNsb3NlcyI6IjIwOjAwIn0seyJAdHlwZSI6Ik9wZW5pbmdIb3Vyc1NwZWNpZmljYXRpb24iLCJkYXlPZldlZWsiOiJUaHVyc2RheSIsIm9wZW5zIjoiMDk6MDAiLCJjbG9zZXMiOiIyMDowMCJ9LHsiQHR5cGUiOiJPcGVuaW5nSG91cnNTcGVjaWZpY2F0aW9uIiwiZGF5T2ZXZWVrIjoiRnJpZGF5Iiwib3BlbnMiOiIwOTowMCIsImNsb3NlcyI6IjE4OjAwIn1dLCJoYXNNYXAiOiJodHRwczpcL1wvd3d3Lmdvb2dsZS5jb21cL21hcHNcL3BsYWNlXC84NDUsIHJ1ZSBOb3RyZS1EYW1lIFJlcGVudGlnbnkgUXVlYmVjIEo1WSAxQzQiLCJjb250YWN0UG9pbnQiOnsiQHR5cGUiOiJDb250YWN0UG9pbnQiLCJ0ZWxlcGhvbmUiOiI0NTAtNTgyLTMxODIiLCJjb250YWN0VHlwZSI6WyJTYWxlcyIsIlNlcnZpY2UiLCJQYXJ0cyJdLCJhdmFpbGFibGVMYW5ndWFnZSI6WyJFbmdsaXNoIiwiRnJlbmNoIl19LCJhcmVhU2VydmVkIjoiUXVlYmVjIiwibWFrZXNPZmZlciI6W3siQHR5cGUiOiJPZmZlciIsIml0ZW1PZmZlcmVkIjp7IkB0eXBlIjoiU2VydmljZSIsIm5hbWUiOiJWZW50ZXMgZGUgdlx1MDBlOWhpY3VsZXMgSHl1bmRhaSBuZXVmcyBldCBkJ29jY2FzaW9uIn19LHsiQHR5cGUiOiJPZmZlciIsIml0ZW1PZmZlcmVkIjp7IkB0eXBlIjoiU2VydmljZSIsIm5hbWUiOiJGaW5hbmNlbWVudCBkZSB2XHUwMGU5aGljdWxlcyJ9fSx7IkB0eXBlIjoiT2ZmZXIiLCJpdGVtT2ZmZXJlZCI6eyJAdHlwZSI6IlNlcnZpY2UiLCJuYW1lIjoiUlx1MDBlOXBhcmF0aW9uIGV0IG1haW50ZW5hbmNlIGRlIHZcdTAwZTloaWN1bGVzIn19LHsiQHR5cGUiOiJPZmZlciIsIml0ZW1PZmZlcmVkIjp7IkB0eXBlIjoiU2VydmljZSIsIm5hbWUiOiJWZW50ZXMgZGUgcGlcdTAwZThjZXMgZXQgYWNjZXNzb2lyZXMifX1dfQo8L3NjcmlwdD48bGluayByZWw9Imljb24iIGhyZWY9Imh0dHBzOi8vaHl1bmRhaXJlcGVudGlnbnkuY29tL2ltYWdlcy9GYXZpY29uL2h5dW5kYWlfZmF2aWNvbi5zdmciPjxsaW5rIHJlbD0iYWx0ZXJuYXRlIiBocmVmPSJodHRwczovL3d3dy5oeXVuZGFpcmVwZW50aWdueS5jb20vZW5nLyIgaHJlZmxhbmc9ImVuLWNhIj48bGluayByZWw9InByZWxvYWQiIGFzPSJpbWFnZSIgaHJlZj0iaHR0cHM6Ly9oeXVuZGFpcmVwZW50aWdueS5jb20vaW1hZ2VzL0xvZ29Nb2JpbGUvaHl1bmRhaS1tb2JpbGUtbG9nby1yZ2ItZnIucG5nIj48bGluayByZWw9InByZWxvYWQiIGhyZWY9Ii8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZGVza3RvcC1hd2Vzb21lL3dlYmZvbnRzL2ZhLWxpZ2h0LTMwMC53b2ZmMiIgYXM9ImZvbnQiIHR5cGU9ImZvbnQvV09GRjIiIGNyb3Nzb3JpZ2luPjxsaW5rIHJlbD0icHJlbG9hZCIgaHJlZj0iLy9mb250cy5kMmNtZWRpYS5jYS93ZWJmb250cy9kZXNrdG9wLWF3ZXNvbWUvd2ViZm9udHMvZmEtc29saWQtOTAwLndvZmYyIiBhcz0iZm9udCIgdHlwZT0iZm9udC9XT0ZGMiIgY3Jvc3NvcmlnaW4+PGxpbmsgcmVsPSJwcmVsb2FkIiBocmVmPSIvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1yZWd1bGFyLTQwMC53b2ZmMiIgYXM9ImZvbnQiIHR5cGU9ImZvbnQvV09GRjIiIGNyb3Nzb3JpZ2luPjxsaW5rIHJlbD0icHJlbG9hZCIgaHJlZj0iLy9mb250cy5kMmNtZWRpYS5jYS9IeXVuZGFpU2Fuc0hlYWQtTWVkaXVtLndvZmYyIiBhcz0iZm9udCIgdHlwZT0iZm9udC9XT0ZGMiIgY3Jvc3NvcmlnaW4+PGxpbmsgcmVsPSJwcmVsb2FkIiBocmVmPSIvL2ZvbnRzLmQyY21lZGlhLmNhL0h5dW5kYWlTYW5zSGVhZC1SZWd1bGFyLndvZmYyIiBhcz0iZm9udCIgdHlwZT0iZm9udC9XT0ZGMiIgY3Jvc3NvcmlnaW4+PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2h5dW5kYWlyZXBlbnRpZ255LmNvbS9jc3Nfci9yZXNvdXJjZS5sb2FkZXIuZnIuY3NzP3Y9MyZhbXA7Y3NzcnBsPSZhbXA7d3N3aWR0aD0wJmFtcDtkZXZpY2U9bW9iaWxlJmFtcDt1YT1RME5DYjNRdk1pNHdJQ2hvZEhSd2N6b3ZMMk52YlcxdmJtTnlZWGRzTG05eVp5OW1ZWEV2S1E9PSI+PGxpbmsgcmVsPSJwcmVjb25uZWN0IiBocmVmPSJodHRwczovL2NhcmltYWdlcy5kMmNtZWRpYS5jYSIgY3Jvc3NvcmlnaW4+PGxpbmsgcmVsPSJwcmVjb25uZWN0IiBocmVmPSJodHRwczovL2ltYWdlc2Nkbi5kMmNtZWRpYS5jYSIgY3Jvc3NvcmlnaW4+PGxpbmsgcmVsPSJwcmVjb25uZWN0IiBocmVmPSJodHRwczovL2ZvbnRzLmQyY21lZGlhLmNhIiBjcm9zc29yaWdpbj48bGluayByZWw9ImNhbm9uaWNhbCIgaHJlZj0iaHR0cHM6Ly93d3cuaHl1bmRhaXJlcGVudGlnbnkuY29tL2VtYmVkZXIvcHJvY2Vzcy9mci9tIiBkYXRhLWNhbm9uaWNhbC1oZWFkZXItd2lkZ2V0PSIxIj48c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG4uY29va2llbGF3Lm9yZy9zY3JpcHR0ZW1wbGF0ZXMvb3RTREtTdHViLmpzIiBkYXRhLWRvY3VtZW50LWxhbmd1YWdlPSJ0cnVlIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9IlVURi04IiBkYXRhLWRvbWFpbi1zY3JpcHQ9ImFlZDRhNTQ3LTdlOWItNDg4Yi05ZWVlLTQwMTY2MzNjZDY4OCI+PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly9jZG4uY29va2llbGF3Lm9yZy9jb25zZW50L2FlZDRhNTQ3LTdlOWItNDg4Yi05ZWVlLTQwMTY2MzNjZDY4OC9PdEF1dG9CbG9jay5qcyI+PC9zY3JpcHQ+PGRpdiBpZD0iYXNjX2RpZ2l0YWxfZGF0YV9pbmZvIiBkYXRhLWFuYWx5dGljcz0iZ29vZ2xlX2FuYWx5dGljc180Ij4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idmVoaWNsZUNhdGVnb3J5IiB2YWx1ZT0iIj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibWFrZSIgdmFsdWU9IiI+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Im1vZGVsIiB2YWx1ZT0iIj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ieWVhciIgdmFsdWU9IiI+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InZpbiIgdmFsdWU9IiI+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InRyaW0iIHZhbHVlPSIiPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJwcmljZSIgdmFsdWU9IiI+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImV4dGNvbG9yIiB2YWx1ZT0iIj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZGF0ZV9saXN0aW5nIiB2YWx1ZT0iIj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZDJhc2NfaXNDZXJ0aWZpZWQiIHZhbHVlPSIiPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ2ZWhpY2xlU3RhdHVzIiB2YWx1ZT0iIj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZGVhbGVyQ29kZSIgdmFsdWU9IjMxMDI2Ij4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0icGFnZVR5cGUiIHZhbHVlPSJTaG93cm9vbSI+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRlYWxlcl9uYW1lIiB2YWx1ZT0iSHl1bmRhaSBSZXBlbnRpZ255Ij4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZGVhbGVyX2FkZHJlc3MiIHZhbHVlPSI4NDUsIHJ1ZSBOb3RyZS1EYW1lLCBSZXBlbnRpZ255LCBMYW5hdWRpw6hyZSI+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRlYWxlcl9wb3N0YWwiIHZhbHVlPSJKNVkgMUM0Ij4KCQk8L2Rpdj4KCQk8IS0tIE9POjo1NGZjYzFjNmJlMWMzOTFmMjFkMzc0NDdmZGE1MGQ4YyAtLT4KPCEtLUVORF9SRU1PVkFCTEVfQ09ERV9CTE9DS19DT01NRU5UXzAwMDItLT4KCjwhLS1FTkRfUkVNT1ZBQkxFX0NPREVfQkxPQ0tfQ09NTUVOVF8wMDAxLS0+CjwhLS0gR2xvYmFsIHNpdGUgdGFnIChndGFnLmpzKSAtIEdvb2dsZSBBbmFseXRpY3MgLS0+Cgo8IS0tU1RBUlRfUkVNT1ZBQkxFX0NPREVfQkxPQ0tfQ09NTUVOVF8wMDAxLS0+CjxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctWDRFWE5XWVhLTCIgdHlwZT0idGV4dC9wbGFpbiIgY2xhc3M9Im9wdGFub24tY2F0ZWdvcnktQzAwMDEiPjwvc2NyaXB0Pgo8IS0tRU5EX1JFTU9WQUJMRV9DT0RFX0JMT0NLX0NPTU1FTlRfMDAwMS0tPgoKPCEtLSAjI1ZNSlMyIyMgLS0+PCEtLSBHTyBJRCAtLT4KPCEtLSBCSU5HIFNDUklQVCAtLT4KPCEtLSBPTzo6ZjczZmE2YWJiZmI0YmFiM2Y0OWRhYWZiMzg5MWUyN2YgLS0+CiAgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIiBkYXRhLXJsPSIxIj4KLyoqIC9jc3Mvcm9vdC5jc3MgKiovCjpyb290eyAtLXJhdGlvOjEuMTU7IC0tczA6MDsgLS1zLTk6Y2FsYyh2YXIoLS1zLTgpIC8gdmFyKC0tcmF0aW8pKTsgLS1zLTg6Y2FsYyh2YXIoLS1zLTcpIC8gdmFyKC0tcmF0aW8pKTsgLS1zLTc6Y2FsYyh2YXIoLS1zLTYpIC8gdmFyKC0tcmF0aW8pKTsgLS1zLTY6Y2FsYyh2YXIoLS1zLTUpIC8gdmFyKC0tcmF0aW8pKTsgLS1zLTU6Y2FsYyh2YXIoLS1zLTQpIC8gdmFyKC0tcmF0aW8pKTsgLS1zLTQ6Y2FsYyh2YXIoLS1zLTMpIC8gdmFyKC0tcmF0aW8pKTsgLS1zLTM6Y2FsYyh2YXIoLS1zLTIpIC8gdmFyKC0tcmF0aW8pKTsgLS1zLTI6Y2FsYyh2YXIoLS1zLTEpIC8gdmFyKC0tcmF0aW8pKTsgLS1zLTE6Y2FsYyh2YXIoLS1zKSAvIHZhcigtLXJhdGlvKSk7IC0tczowLjVyZW07IC0tczE6Y2FsYyh2YXIoLS1zKSAqIHZhcigtLXJhdGlvKSk7IC0tczI6Y2FsYyh2YXIoLS1zMSkgKiB2YXIoLS1yYXRpbykpOyAtLXMzOmNhbGModmFyKC0tczIpICogdmFyKC0tcmF0aW8pKTsgLS1zNDpjYWxjKHZhcigtLXMzKSAqIHZhcigtLXJhdGlvKSk7IC0tczU6Y2FsYyh2YXIoLS1zNCkgKiB2YXIoLS1yYXRpbykpOyAtLXM2OmNhbGModmFyKC0tczUpICogdmFyKC0tcmF0aW8pKTsgLS1zNzpjYWxjKHZhcigtLXM2KSAqIHZhcigtLXJhdGlvKSk7IC0tczg6Y2FsYyh2YXIoLS1zNykgKiB2YXIoLS1yYXRpbykpOyAtLXM5OmNhbGModmFyKC0tczgpICogdmFyKC0tcmF0aW8pKTsgLS1mcy1iYXNlOjAuODc1cmVtOyAtLWZzOnZhcigtLWZzLWJhc2UpOyAtLWZzLTk6Y2FsYyh2YXIoLS1mcy04KSAvIHZhcigtLXJhdGlvKSk7IC0tZnMtOCA6Y2FsYyh2YXIoLS1mcy03KSAvIHZhcigtLXJhdGlvKSk7IC0tZnMtNyA6Y2FsYyh2YXIoLS1mcy02KSAvIHZhcigtLXJhdGlvKSk7IC0tZnMtNiA6Y2FsYyh2YXIoLS1mcy01KSAvIHZhcigtLXJhdGlvKSk7IC0tZnMtNSA6Y2FsYyh2YXIoLS1mcy00KSAvIHZhcigtLXJhdGlvKSk7IC0tZnMtNCA6Y2FsYyh2YXIoLS1mcy0zKSAvIHZhcigtLXJhdGlvKSk7IC0tZnMtMyA6Y2FsYyh2YXIoLS1mcy0yKSAvIHZhcigtLXJhdGlvKSk7IC0tZnMtMiA6Y2FsYyh2YXIoLS1mcy0xKSAvIHZhcigtLXJhdGlvKSk7IC0tZnMtMSA6Y2FsYyh2YXIoLS1mczApIC8gdmFyKC0tcmF0aW8pKTsgLS1mczAgOnZhcigtLWZzLWJhc2UsIDAuODc1cmVtKTsgLS1mczEgOmNhbGModmFyKC0tZnMwKSAqIHZhcigtLXJhdGlvKSk7IC0tZnMyIDpjYWxjKHZhcigtLWZzMSkgKiB2YXIoLS1yYXRpbykpOyAtLWZzMyA6Y2FsYyh2YXIoLS1mczIpICogdmFyKC0tcmF0aW8pKTsgLS1mczQgOmNhbGModmFyKC0tZnMzKSAqIHZhcigtLXJhdGlvKSk7IC0tZnM1IDpjYWxjKHZhcigtLWZzNCkgKiB2YXIoLS1yYXRpbykpOyAtLWZzNiA6Y2FsYyh2YXIoLS1mczUpICogdmFyKC0tcmF0aW8pKTsgLS1mczcgOmNhbGModmFyKC0tZnM2KSAqIHZhcigtLXJhdGlvKSk7IC0tZnM4IDpjYWxjKHZhcigtLWZzNykgKiB2YXIoLS1yYXRpbykpOyAtLWZzOSA6Y2FsYyh2YXIoLS1mczgpICogdmFyKC0tcmF0aW8pKTsgLS1kZWZhdWx0LWJsYWNrOiMwMDAwMDA7IC0tdGFiLWNvbG9yLXNwZWNpYWxjYXNlOiNlNGRjZDM7IC0tdGFiLWNvbG9yOiNlNGRjZDM7IC0tdGFiLXRleHQtY29sb3I6IzAwMDAwMDsgLS10YWItY29sb3ItbW9iOiMwMDJjNWY7IC0tdGFiLXRleHQtY29sb3ItbW9iOiNmZmZmZmY7IC0tdGFiLWNvbG9yLW1vYi1leDojZmZmZmZmOyAtLXRhYi10ZXh0LWNvbG9yLW1vYi1leDojMDAwMDAwOyAtLW1lbnUtY29sb3ItYm9yZGVyOjsgLS1tZW51LWNvbG9yLW1vYjojZmZmZmZmOyAtLW1lbnUtdGV4dC1jb2xvci1tb2I6IzAwMmM1ZjsgLS1tZW51LWNvbG9yLW1vYi1leDojZmZmZmZmOyAtLW1lbnUtdGV4dC1jb2xvci1tb2ItZXg6IzAwMDAwMDsgLS1wcm9tby1jb2xvcjojMDAyYzVmOyAtLXByb21vLXRleHQtY29sb3I6I2ZmZmZmZjsgLS1uZXdzcnAtbW9kZWwtY29sb3I6IzAwMmM1ZjsgLS1mb290ZXItbGluay10aXRsZS1jb2w6IzAwMDAwMDsgLS1mb290ZXItaXRlbXMtbGluay1jb2xvcjojMDAwMDAwOyAtLWZvb3Rlci1jb25kaXRpb25zLWNvbG9yOiMwMDAwMDA7IC0tZm9vdGVyLWJnLWNvbG9yOiNlNGRjZDM7IC0tZ2VuZXJhbC1iZy1jb2xvcjojZmZmZmZmOyAtLXRvcC1wcm9tby1idG4tdHh0OiNmZmZmZmY7IC0tdG9wLXByb21vLWJ0bi1iZzojMDAyYzVmOyAtLXByb21vLWJ0bi1jb2xvcjojMDAyYzVmOyAtLXByb21vLWJ0bi10ZXh0LWNvbG9yOiNmZmZmZmY7IC0tcHJvbW8tYnRuLWhvdmVyLWJnLWNvbG9yOiMwMDdmYTU7IC0tcHJvbW8tYnRuLWhvdmVyLXRleHQtY29sb3I6I2ZmZmZmZjsgLS1wcm9tby1idG4tYm9yZGVyLXJhZGl1czpweDsgLS1ob21lLWJnLWNvbG9yOiNmZmZmZmY7IC0tYnVzaW5lc3MtZGVzYy10eHQtY29sb3I6IzAwMDAwMDsgLS1idXNpbmVzcy1kZXNjLWJnLWNvbG9yOiNmZmZmZmY7IC0tYnVzaW5lc3MtZGVzYy10eHQtY29sb3JfbW9iOiMwMDAwMDA7IC0tYnVzaW5lc3MtZGVzYy1iZy1jb2xvcl9tb2I6I2ZmZmZmZjsgLS11c2VkLXNsaWRlci1iZzojZmZmZmZmOyAtLXVzZWQtc2xpZGVyLXR4dDojMDAwMDAwOyAtLXVzZWQtc2xpZGVyLXByaWNlOiMwMDJjNWY7IC0tbmV3LXNsaWRlci1iZzojZmZmZmZmOyAtLW5ldy12ZHAtYmVzdHByaWNlLWJ0bi1iZy1jb2xvcjojMDAyYzVmOyAtLW5ldy12ZHAtYmVzdHByaWNlLWJ0bi10ZXh0LWNvbG9yOiNmZmZmZmY7IC0tZGVhbGVyLW5hbWUtY29sb3I6IzAwMmM1ZjsgLS1uZXdzLWJnLWNvbG9yOiNmZmZmZmY7IC0tbmV3cy10ZXh0LWNvbG9yOiMwMDAwMDA7IC0tZXhpdC1wb3B1cC1iZ2NvbDojMDAwMDAwOyAtLXVzZWQtb2ZmZXItYnRuLXRleHQtY29sb3I6I2ZmZmZmZjsgLS11c2VkLW9mZmVyLWJ0bi1iZy1jb2xvcjojMDAyYzVmOyAtLWZpbmFuY2UtYnRuLXRleHQtY29sb3I6I2ZmZmZmZjsgLS1maW5hbmNlLWJ0bi1iZy1jb2xvcjojMDAyYzVmOyAtLWZpbmFuY2UtYnRuLXRleHQtY29sb3ItbmV3aW52OiNmZmZmZmY7IC0tZmluYW5jZS1idG4tYmctY29sb3ItbmV3aW52OiMwMDJjNWY7IC0tbWVudS1ob3Zlci10ZXh0LWNvbG9yOiNmZmZmZmY7IC0tbWVudS1ob3Zlci1iZy1jb2xvcjojMDA3ZmE1OyAtLW1lbnUtYmctY29sb3I6cmdiKDIyOCwyMjAsMjExKTsgLS1tYWluLW1lbnUtYmctY29sb3I6cmdiKDIyOCwyMjAsMjExKTsgLS1kZWFsZXItYWRkcmVzcy1jb2xvcjojMDAyYzVmOyAtLWRlYWxlci1hZGRyZXNzLWZvbnQtc2l6ZToxNTsgLS13aGl0ZTojZmZmOyAtLWxpZ2h0OiNmNmY2ZjY7IC0tbGlnaHQtZ3JheTojZWZlZmVmOyAtLW1pZC1ncmF5OiNkZGQ7IC0tZ3JheTojOTk5OyAtLWNudHItZ3JheTojNzY3Njc2OyAtLWRhcmstZ3JheTojNjY2OyAtLWJsYWNrLWdyYXk6IzMzMzsgLS1ibGFjazojMDAwOyAtLWJvcmRlci10aGluOjFweDsgLS1ib3JkZXItdGhpY2s6MnB4OyAtLXR4dC11cHBlcjpub25lOyAtLWZvbnQtbWVudTpIeXVuZGFpU2Fuc0hlYWQ7IC0tZm9udC1tZW51LW1vYjpIeXVuZGFpU2Fuc0hlYWQ7IC0tZm9udC1tZW51LXdlaWdodDo0MDA7IC0tZm9udC1oMTpIeXVuZGFpU2Fuc0hlYWQ7IC0tZm9udC1oMS1tb2I6SHl1bmRhaVNhbnNIZWFkOyAtLWZvbnQtaDEtd2VpZ2h0OjQwMDsgLS1mb250LWgyOkh5dW5kYWlTYW5zSGVhZDsgLS1mb250LWgyLW1vYjpIeXVuZGFpU2Fuc0hlYWQ7IC0tZm9udC1oMi13ZWlnaHQ6NDAwOyAtLWZvbnQtdGV4dDpIeXVuZGFpU2Fuc0hlYWQ7IC0tZm9udC10ZXh0LW1vYjpIeXVuZGFpU2Fuc0hlYWQ7IC0tZm9udC10ZXh0LXdlaWdodDo0MDA7IC0tZm9udC1idXR0b25zOkh5dW5kYWlTYW5zSGVhZDsgLS1mb250LWJ1dHRvbnMtbW9iOkh5dW5kYWlTYW5zSGVhZDsgLS1mb250LWJ1dHRvbnMtd2VpZ2h0OjQwMDsgLS1jb3JuZXItcmliYm9uLWJnLWNvbG9yOiMwMDdmYTU7IC0tY29ybmVyLXJpYmJvbi10ZXh0LWNvbG9yOiNmZmZmZmY7IC0taG9tZXBhZ2UtbWVudS1pdGVtLWNvbG9yOiNmZmZmZmY7IC0taG9tZXBhZ2UtaGVhZGVyLWl0ZW0tY29sb3I6I2ZmZmZmZjsgLS1ob21lcGFnZS1iYW5uZXItc2VhcmNoLWJhci12aWRlby1vcGFjaXR5OjMwOyAtLWhvbWVwYWdlLXNvY2lhbC1iZy1jb2xvcjojZmZmZmZmOyAtLWhvbWVwYWdlLXNvY2lhbC10ZXh0LWNvbG9yOiMwMDAwMDA7IC0taG9tZXBhZ2Utc29jaWFsLWxvZ28tY29sb3I6IzE4NzdmMjsgLS1wcm9tb3Rpb24tYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyAtLXByb21vdGlvbi10ZXh0LWNvbG9yOiMwMDAwMDA7IC0tdW5kZXJiYW5uZXJfc2VhcmNoX2Jhcl9iZzojZjZmM2YyOyAtLXVuZGVyYmFubmVyX3NlYXJjaF9iYXJfY29sb3I6IzAwMmM1ZjsgLS11bmRlcmJhbm5lcl9zZWFyY2hfYmFyX2J0bl9iZzojMDAyYzVmOyAtLXVuZGVyYmFubmVyX3NlYXJjaF9iYXJfYnRuX2NvbG9yOiNmZmZmZmY7IC0tbmV3dmRwLWJlc3RwcmljZS10ZXh0LWNvbG9yLXByaWNlOiMwMDJjNWY7IC0tYWRtaW4tc29jaWFsLWN1c3RvbS1jb2xvci1waWNrZXItdGV4dDojOTI5MjkyOyAtLWFkbWluLWdlbmVyYWwtaGVhZGVyLWJnLWNvbG9yOiNmZmZmZmY7IC0tYWRtaW4tZ2VuZXJhbC10ZXh0LXVzLWRlYWxlci1saW5lLXRleHQtY29sb3I6I2ZmZmZmZjsgLS1hZG1pbi1nZW5lcmFsLXRleHQtdXMtZGVhbGVyLWxpbmUtYmctY29sb3I6IzAwN2ZhNTsgLS10cmFkZWluYmFyLWJ0bi1iZzojMDAyYzVmOyAtLXRyYWRlaW5iYXItYnRuLWNvbG9yOiNmZmZmZmY7IC0tZGVmYXVsdC1ibGFjay10ZXh0OiMwMDAwMDA7IC0tcHJvbW8tYnRuLWJnLWNvbG9yOiMwMDJjNWY7IC0tdHJhZGVpbmJhci1iZzojZjZmM2YyOyAtLXRyYWRlaW5iYXItY29sb3I6IzAwMmM1ZjsgLS1sYW5ndWFnZS1idG4tYWN0aXZlLWJnLWNvbG9yOiMwMDdmYTU7IC0taGVhZGVyLXNlcnZpY2UtYXBwb2ludG1lbnQtdGV4dC1jb2xvci1iZzojMDAyYzVmOyAtLWhlYWRlci1zZXJ2aWNlLWFwcG9pbnRtZW50LXRleHQtY29sb3I6I2ZmZmZmZjsgLS1hZG1pbi1nZW5lcmFsLWFsZXJ0LWJhci10ZXh0LWNvbG9yOiNmZmZmZmY7IC0tdG9wLXByb21vLWJ0bi10eHQtY29sb3I6cmdiKDAsMCwwKTsgLS10b3AtcHJvbW8tYnRuLWJnLWNvbG9yOnJnYigyMjgsMjIwLDIxMSk7IC0tbmV3LXZlaGljbGUtY2Fyb3VzZWwtdHh0LWNvbG9yOiMwMDAwMDA7IC0tZGlnaXRhbC1yZXRhaWxpbmctZHJhd2VyLXdpZHRoOiU7IH0gKiB7IGJvcmRlci1jb2xvcjppbmhlcml0OyBib3JkZXItc3R5bGU6c29saWQ7IGJvcmRlci13aWR0aDowOyBmb250LWZhbWlseTppbmhlcml0OyBsaW5lLWhlaWdodDoxLjJlbTsgfSBvbCwgdWwsIG1lbnUgeyBsaXN0LXN0eWxlOm5vbmU7IG1hcmdpbjowOyBwYWRkaW5nOjA7IH0gYSB7IHRleHQtZGVjb3JhdGlvbjpub25lOyBjb2xvcjppbmhlcml0OyB9IGgxLGgyLGgzLGg0LGg1LGg2LCBwIHsgbWFyZ2luOjA7IH0gaDEsaDIsaDMsaDQsaDUsaDZ7IGZvbnQtc2l6ZTppbmhlcml0OyBmb250LXdlaWdodDppbmhlcml0OyB9IGltZyB7IG1heC13aWR0aDoxMDAlOyB9IHRhYmxlIHsgYm9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlOyB9IHRleHRhcmVhIHsgd2hpdGUtc3BhY2U6cmV2ZXJ0OyB9IDp3aGVyZShbaGlkZGVuXSl7IGRpc3BsYXk6bm9uZSAhaW1wb3J0YW50OyB9IDp3aGVyZShbY29udGVudGVkaXRhYmxlXSl7IC1tb3otdXNlci1tb2RpZnk6cmVhZC13cml0ZTsgLXdlYmtpdC11c2VyLW1vZGlmeTpyZWFkLXdyaXRlOyBvdmVyZmxvdy13cmFwOmJyZWFrLXdvcmQ7IGxpbmUtYnJlYWs6YWZ0ZXItd2hpdGUtc3BhY2U7IC13ZWJraXQtbGluZS1icmVhazphZnRlci13aGl0ZS1zcGFjZTsgfSA6d2hlcmUoW2RyYWdnYWJsZT0idHJ1ZSJdKSB7IC13ZWJraXQtdXNlci1kcmFnOmVsZW1lbnQ7IH0gLnJlc3BvbnNpdmUtZWRpdG9yIC5jb250YWluZXItZmx1aWR7IG92ZXJmbG93LXg6aGlkZGVuOyB9IC5yZXNwb25zaXZlLWVkaXRvciAuY29udGFpbmVyLWZsdWlkICogeyBsaW5lLWhlaWdodDppbml0aWFsOyB9IC5ja2VkaXRvcldyYXBwZXJ7IG92ZXJmbG93LXg6aGlkZGVuOyBzY3JvbGxiYXItd2lkdGg6bm9uZTsgfSAqIHsgZm9udC12YXJpYW50LW51bWVyaWM6bGluaW5nLW51bXM7IH0KLyoqIC9jc3MvdjIvbmF2LmNzcyAqKi8KaGVhZGVyLm1vYmlsZS1oZWFkZXJ7IC0tdHh0LWNvbG9yOnZhcigtLW1lbnUtdGV4dC1jb2xvci1tb2IsIHZhcigtLXRhYi10ZXh0LWNvbG9yKSk7IHBvc2l0aW9uOnN0aWNreTsgdG9wOjA7IHdpZHRoOjEwMHZ3OyBoZWlnaHQ6My4ycmVtOyBib3gtc2hhZG93OnJnYmEoMCwgMCwgMCwgMC41KSAwIDAgNXB4IDNweDsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1tZW51LWNvbG9yLW1vYiwgdmFyKC0tdGFiLWNvbG9yKSk7IGNvbG9yOnZhcigtLXR4dC1jb2xvcik7IHotaW5kZXg6MTAwMDsgfSBkaXYubW9iaWxlLWhlYWRlci1zcGFjZXJ7IHBvc2l0aW9uOnJlbGF0aXZlOyB3aWR0aDoxMDB2dzsgaGVpZ2h0OjMuMnJlbTsgZGlzcGxheTpibG9jazsgfSBoZWFkZXIubW9iaWxlLWhlYWRlciA+ICogKyAqIHsgZGlzcGxheTpmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyBhbGlnbi1pdGVtczpjZW50ZXI7IGhlaWdodDoxMDAlOyB9IGhlYWRlci5tb2JpbGUtaGVhZGVyLnRhbGwgPiAqICsgKnsgYm9yZGVyLWxlZnQ6MXB4IHNvbGlkICNkZGQ7IGZsZXg6MSAxIGF1dG87IH0gaGVhZGVyIC5sb2dvLWFjdGlvbiB+ICogeyBtaW4td2lkdGg6Mi41cmVtOyB9IC5oZWFkZXItZGVhbGVyLW5hbWUgeyBjb2xvcjppbmhlcml0OyBmb250LXNpemU6dmFyKC0tZnMtMSk7IC0tZnM6dmFyKC0tZnMtMSk7IH0gaGVhZGVyIGFzaWRleyAtLXR4dC1jb2xvcjp2YXIoLS1tZW51LXRleHQtY29sb3ItbW9iLCB2YXIoLS10YWItdGV4dC1jb2xvcikpOyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjIuOTVyZW07IGxlZnQ6LTE5cmVtOyB3aWR0aDptaW4oODB2dywgMTlyZW0pOyBtaW4taGVpZ2h0OjEwMHZoOyBmb250LXNpemU6dmFyKC0tZnMpOyB0cmFuc2l0aW9uOnRyYW5zZm9ybSAzMDBtcyBlYXNlLWluOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLW1lbnUtY29sb3ItbW9iLCB2YXIoLS10YWItY29sb3IpKTsgY29sb3I6dmFyKC0tbWVudS10ZXh0LWNvbG9yKTsgbWF4LWhlaWdodDoxMDB2aDsgb3ZlcmZsb3c6YXV0bzsgei1pbmRleDoxMDA7IH0gbmF2eyAtLWZzOnZhcigtLWZzMSk7IGZvbnQtc2l6ZTp2YXIoLS1mcyk7IH0gbmF2IC5tZW51LWl0ZW0sIG5hdiAuc3VibWVudS1pdGVtIHsgcGFkZGluZzp2YXIoLS1zKTsgfSBuYXYgLm1lbnUtaXRlbXsgYWxpZ24taXRlbXM6Y2VudGVyOyB9IG5hdiAubWVudS1pdGVtLmludmVyc2UtY29sb3J7IGNvbG9yOnZhcigtLW1lbnUtaG92ZXItdGV4dC1jb2xvcik7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tbWVudS1ob3Zlci1iZy1jb2xvcik7IH0gbmF2IC5zdWJtZW51LWl0ZW17IGJvcmRlci1jb2xvcjp2YXIoLS1ncmF5KTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1tZW51LWNvbG9yLW1vYi1leCwgdmFyKC0tdGFiLWNvbG9yKSk7IGNvbG9yOnZhcigtLW1lbnUtdGV4dC1jb2xvci1tb2ItZXgpOyB9IG5hdiAuc3VibWVudS1pdGVtIHN2Zy5pY29uIHsgZmlsbDp2YXIoLS10YWItdGV4dC1jb2xvci1tb2ItZXgsIHZhcigtLXRhYi10ZXh0LWNvbG9yKSk7IH0gbmF2IC5tZW51LWdyb3VwIHsgYm9yZGVyLXRvcC13aWR0aDp2YXIoLS1ib3JkZXItdGhpbik7IH0gbmF2IC5tZW51LWdyb3VwIH4gLm1lbnUtZ3JvdXAgeyBib3JkZXItdG9wLXdpZHRoOjA7IH0gbmF2IC5tZW51Q29sbHBhc2Ugc3ZneyB0cmFuc2Zvcm06cm90YXRlKDE4MGRlZyk7IH0gI2hvbWVuYXYgbmF2eyAtLXR4dC1jb2xvcjp2YXIoLS10YWItdGV4dC1jb2xvci1tb2IsIHZhcigtLXRhYi10ZXh0LWNvbG9yKSk7IH0gI2hvbWVuYXYgbmF2IC5tZW51LWl0ZW17IGJhY2tncm91bmQ6dmFyKC0tdGFiLWNvbG9yLW1vYiwgdmFyKC0tdGFiLWNvbG9yKSk7IGNvbG9yOnZhcigtLXRhYi10ZXh0LWNvbG9yLW1vYiwgdmFyKC0tdGFiLXRleHQtY29sb3IpKTsgfSAjaG9tZW5hdiBuYXYgLm1lbnUtaXRlbS5pbnZlcnNlLWNvbG9yeyBjb2xvcjp2YXIoLS1tZW51LWhvdmVyLXRleHQtY29sb3IpOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLW1lbnUtaG92ZXItYmctY29sb3IpOyB9ICNob21lbmF2IG5hdiAuc3VibWVudS1pdGVteyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXRhYi1jb2xvci1tb2ItZXgsIHZhcigtLXRhYi1jb2xvcikpOyBjb2xvcjp2YXIoLS10YWItdGV4dC1jb2xvci1tb2ItZXgsIHZhcigtLXRhYi10ZXh0LWNvbG9yKSk7IH0gI2hvbWVuYXYgbmF2IGxpeyBwYWRkaW5nLXRvcDp2YXIoLS1zLTgpOyB9ICNob21lbmF2IG5hdiAubWVudS1pdGVteyBib3JkZXItcmFkaXVzOjAuMjVyZW07IH0gI2hvbWVuYXYgbmF2IC5tZW51LWl0ZW0uTEFOR1VBR0V7IGRpc3BsYXk6bm9uZTsgfSAuYnVyZ2VyLW1lbnUtY29udGFpbmVyeyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAuYnVyZ2VyX3RvcCB7IHRyYW5zZm9ybS1vcmlnaW46MCA1MCU7IH0gLmJ1cmdlcl9ib3R0b20geyB0cmFuc2Zvcm0tb3JpZ2luOjAgNTAlOyB9IC5idXJnZXItbWVudS1idXR0b24gPiBzcGFuIHsgd2lkdGg6MS42cmVtOyBoZWlnaHQ6MC4yNXJlbTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1tZW51LXRleHQtY29sb3ItbW9iKTsgYm9yZGVyLXJhZGl1czowLjI1cmVtOyB0cmFuc2l0aW9uOnRyYW5zZm9ybSAwLjRzIGVhc2U7IHotaW5kZXg6MTAxOyB9ICNibV90b2dnbGU6Y2hlY2tlZCB+IC5idXJnZXItbWVudS1idXR0b24gLmJ1cmdlcl90b3AsICNibV9ib3R0b21fdG9nZ2xlOmNoZWNrZWQgfiAuYnVyZ2VyLW1lbnUtYnV0dG9uIC5idXJnZXJfdG9weyBvcGFjaXR5OjE7IHRyYW5zZm9ybTpyb3RhdGUoNDVkZWcpIHRyYW5zbGF0ZSgwLjFyZW0sIDApOyB9ICNibV90b2dnbGU6Y2hlY2tlZCB+IC5idXJnZXItbWVudS1idXR0b24gLmJ1cmdlcl9taWRkbGUsICNibV9ib3R0b21fdG9nZ2xlOmNoZWNrZWQgfiAuYnVyZ2VyLW1lbnUtYnV0dG9uIC5idXJnZXJfbWlkZGxleyBvcGFjaXR5OjA7IHRyYW5zZm9ybTpyb3RhdGUoMGRlZykgc2NhbGUoMC4yLCAwLjIpOyB9ICNibV90b2dnbGU6Y2hlY2tlZCB+IC5idXJnZXItbWVudS1idXR0b24gLmJ1cmdlcl9ib3R0b20sICNibV9ib3R0b21fdG9nZ2xlOmNoZWNrZWQgfiAuYnVyZ2VyLW1lbnUtYnV0dG9uIC5idXJnZXJfYm90dG9teyBvcGFjaXR5OjE7IHRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKSB0cmFuc2xhdGUoMC4xcmVtLCAwKTsgfSAjYm1fdG9nZ2xlOmNoZWNrZWQgfiAuYnVyZ2VyLW1lbnUtYnV0dG9uIH4gYXNpZGV7IHRyYW5zZm9ybTp0cmFuc2xhdGUoMTlyZW0pOyB9IGxhYmVsW2Zvcj0iYm1fdG9nZ2xlIl17IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MDsgbGVmdDowOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgei1pbmRleDoxMDI7IH0gLnRoaW5MZWZ0IC5oZWFkZXItZGVhbGVyLW5hbWUgeyBmb250LXNpemU6dmFyKC0tZnMwKTsgbWFyZ2luLWxlZnQ6OHB4OyB9IC50aGluTGVmdCAubG9nby1hY3Rpb24gYSB7IGZsZXgtYmFzaXM6MTUlIH0gaGVhZGVyLnRoaW5MZWZ0IGFzaWRlIHsgbGVmdDp1bnNldDsgcmlnaHQ6MDsgdHJhbnNmb3JtOnNjYWxlWCgwKSB0cmFuc2xhdGVYKDE5cmVtKTsgdHJhbnNmb3JtLW9yaWdpbjoxMDAlIDUwJTsgfSAudGhpbkxlZnQgI2JtX3RvZ2dsZTpjaGVja2VkIH4gLmJ1cmdlci1tZW51LWJ1dHRvbiB+IGFzaWRleyB0cmFuc2Zvcm06dW5zZXQ7IH0KLyoqIC9jc3Mvc2tlbGV0b24uY3NzICoqLwouaGlkZU9uUHJlTG9hZCB7IHZpc2liaWxpdHk6aGlkZGVuOyB9IC5yZXZlYWwtbW9kYWwgeyB2aXNpYmlsaXR5OmhpZGRlbjsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDotMTAwMHB4OyB9IC5za2VsZXRvbiB7IGRpc3BsYXk6YmxvY2s7IHBvc2l0aW9uOnJlbGF0aXZlOyBtYXJnaW46MDsgcGFkZGluZzowOyBiYWNrZ3JvdW5kOiNlZWU7IH0gLnNrZWxldG9uOjpiZWZvcmUgeyBkaXNwbGF5OmZsZXg7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyBwb3NpdGlvbjphYnNvbHV0ZTsgei1pbmRleDo0OyBjb250ZW50OiIiOyBmb250LXNpemU6MC43NXJlbTsgbGluZS1oZWlnaHQ6MC43NXJlbTsgY29sb3I6Izg4ODsgYW5pbWF0aW9uOnNrZWxldG9uLWFuaW0gMnMgbGluZWFyIGluZmluaXRlOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyBsZXR0ZXItc3BhY2luZzowLjI1cmVtOyBhbGlnbi1pdGVtczpjZW50ZXI7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gQGtleWZyYW1lcyBza2VsZXRvbi1hbmltIHsgMCUgeyBjb250ZW50OiIiOyB9IDI1JSB7IGNvbnRlbnQ6InwiOyB9IDUwJSB7IGNvbnRlbnQ6Inx8IjsgfSA3NSUgeyBjb250ZW50OiJ8fHwiOyB9IH0gLnNrZWxldG9uIGRpdjpmaXJzdC1jaGlsZCwgLnNrZWxldG9uIHNwYW46Zmlyc3QtY2hpbGQgeyBvcGFjaXR5OjA7IHRyYW5zaXRpb246b3BhY2l0eSAuMzAwczsgfSAuc2tlbGV0b24uc2tlbGV0b24tZGVza3RvcC5za2VsZXRvbi1jb25kLTIgeyBiYWNrZ3JvdW5kOm5vbmU7IH0gLnNrZWxldG9uLnNrZWxldG9uLWRlc2t0b3Auc2tlbGV0b24tY29uZC0yLmZpeGVkIHsgd2lkdGg6aW5oZXJpdCAhaW1wb3J0YW50OyB9IC5za2VsZXRvbi5pcy1sb2FkZWQtbm93IHsgYmFja2dyb3VuZDp1bnNldDsgfSAuc2tlbGV0b24uaXMtbG9hZGVkLW5vdyBkaXY6Zmlyc3QtY2hpbGQsIC5za2VsZXRvbi5pcy1sb2FkZWQtbm93IHNwYW46Zmlyc3QtY2hpbGQgeyBvcGFjaXR5OjE7IH0gLnNrZWxldG9uLmlzLWxvYWRlZC1ub3c6OmJlZm9yZSB7IGNvbnRlbnQ6IiI7IGRpc3BsYXk6bm9uZTsgYW5pbWF0aW9uOnVuc2V0OyB9IC5za2VsZXRvbi5za2VsZXRvbi1kZXNrdG9wLnNrZWxldG9uLWNvbmQtMi5maXhlZC5pcy1sb2FkZWQtbm93ID4gZGl2OmZpcnN0LWNoaWxkIHsgb3BhY2l0eTouNzU7IH0gLnNrZWxldG9uLnNrZWxldG9uLWRlc2t0b3Auc2tlbGV0b24tY29uZC0yLmZpeGVkLmlzLWxvYWRlZC1ub3cgPiBkaXY6Zmlyc3QtY2hpbGQ6aG92ZXIgeyBvcGFjaXR5OjE7IH0KLyoqIC9jc3MvY3NzLmNzcyAqKi8KaHRtbCwgYm9keSwgc3BhbiwgYXBwbGV0LCBvYmplY3QsIGlmcmFtZSwgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgcCwgYmxvY2txdW90ZSwgcHJlLCBhYmJyLCBhY3JvbnltLCBhZGRyZXNzLCBiaWcsIGNpdGUsIGNvZGUsIGRlbCwgZGZuLCBlbSwgZm9udCwgaW1nLCBpbnMsIGtiZCwgcSwgcywgc2FtcCwgc21hbGwsIHN0cmlrZSwgc3Ryb25nLCBzdWIsIHN1cCwgdHQsIHZhciwgYiwgdSwgaSwgY2VudGVyLCBkbCwgZHQsIGRkLCBvbCwgdWwsIGxpLCBmaWVsZHNldCwgZm9ybSwgbGFiZWwsIGxlZ2VuZCwgdGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLCB0aCwgdGQgeyBtYXJnaW46MDsgcGFkZGluZzowOyB9IGh0bWx7IGZvbnQtc2l6ZToxcmVtIDsgfSBib2R5IHsgcGFkZGluZzowOyBtYXJnaW4tbGVmdDowcHg7IG1hcmdpbi10b3A6MDsgbWFyZ2luLXJpZ2h0OjBweDsgbWFyZ2luLWJvdHRvbTowcHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGZvbnQtZmFtaWx5OnZhcigtLWZvbnQtdGV4dCk7IGZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtdGV4dC13ZWlnaHQpOyBiYWNrZ3JvdW5kOiB0b3AgY2VudGVyIG5vLXJlcGVhdDsgYmFja2dyb3VuZC1pbWFnZTp1cmwoJy9pbWFnZXMvYmxhbmsuZ2lmJyk7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tZ2VuZXJhbC1iZy1jb2xvcik7IH0gaW5wdXQsIHRleHRhcmVhLCBzZWxlY3QsIGJ1dHRvbiB7IGZvbnQtZmFtaWx5OnZhcigtLWZvbnQtdGV4dCk7IGZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtdGV4dC13ZWlnaHQpOyB9IC5uYXYgbGkgYS50b3BfbGluaywgLnVwX21lbnUgdWwubmF2IHVsLnN1YiBsaSBhLnN1YnRpdGxlLCAuaW1nX21lbnUudXBfbWVudSB1bC5uYXYgI01haW5NZW51X05FVz51bC5zdWIgbGk+dWwuc3ViPmxpLmhhc1N1YiBsaSBhLCBib2R5IC53cmFwcGVyIC51cF9tZW51IC5uYXZ7IGZvbnQtZmFtaWx5OnZhcigtLWZvbnQtbWVudSk7IGZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtbWVudS13ZWlnaHQpOyB9IGgxeyBmb250LWZhbWlseTp2YXIoLS1mb250LWgxKTsgZm9udC13ZWlnaHQ6dmFyKC0tZm9udC1oMS13ZWlnaHQpOyBjbGVhcjpib3RoOyB9IC5mbi5vcmd7IGZvbnQtZmFtaWx5OnZhcigtLWZvbnQtaDEpOyBmb250LXdlaWdodDp2YXIoLS1mb250LWgxLXdlaWdodCk7IH0gaW5wdXRbdHlwZT1idXR0b25dLCBidXR0b24uanFUcmFuc2Zvcm1CdXR0b24gc3BhbiBzcGFuLCAuYnV0dG9uXzEgYSwgLmJ1dHRvbl8yIGEsIC5idXR0b25fMyBhLCAuYnV0dG9uX3VuZGVyIGEsIC5idXR0b25fY21wX2xlZnQgYSwgLmJ1dHRvbl9jbXBfcmlnaHQgYSwgLmJ1dHRvbl9jbXBfYWN0IGEsIC5wdWxsb3V0cyBhLCAuaWROYXYxIGxpIGEudG9wX2xpbmsxLCAuY3RhX3ByaWNlLmFsdCwgLmN0YV9jcmVkaXQuYWx0LCAuY3RhX3Rlc3REcml2ZSwgLmN0YV9ldmFsLmFsdCwgLmN0YV9zZXJ2aWNlLmFsdCwgLmN0YV9wYXJ0cy5hbHQsIC5jdGFfdGlyZXMuYWx0LCAuY3RhX3N2Y3Byb21vLmFsdCwgLmJveDE1IGgyIGEsIC5ib3gxOSBoMiBhLCAuYm94MjcgYSwgLnZpb3IsIC5idG4tZGVmYXVsdCwgLmJ0bi1zbSwgLmJ0bi1sZyB7IGZvbnQtZmFtaWx5OnZhcigtLWZvbnQtYnV0dG9ucyk7IGZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtYnV0dG9ucy13ZWlnaHQpOyB9IGgyLGgzLGg0LGg1LGg2eyBmb250LWZhbWlseTp2YXIoLS1mb250LWgyKTsgZm9udC13ZWlnaHQ6dmFyKC0tZm9udC1oMi13ZWlnaHQpOyB9IHN0cm9uZ3sgZm9udC13ZWlnaHQ6OTAwICFpbXBvcnRhbnQ7IH0gI21haW5EaXYud3JhcHBlciAudG9wX2JneyBtYXgtaGVpZ2h0OjI1MHB4OyBtaW4taGVpZ2h0OjExNXB4OyB9IC5oZWFkZXItaW1hZ2Utd3JhcHBlciBpbWcuaW1hZ2UtcGFkZGluZyB7IHBhZGRpbmctYm90dG9tOjVweDsgfSAuY2tlZGl0b3JXcmFwcGVyIGgyIHsgbWFyZ2luLWxlZnQ6MHB4ICFpbXBvcnRhbnQ7IG1hcmdpbi1yaWdodDowcHggIWltcG9ydGFudDsgbWFyZ2luLXRvcDoxNXB4ICFpbXBvcnRhbnQ7IG1hcmdpbi1ib3R0b206MTVweCAhaW1wb3J0YW50OyB9IC5ja2VkaXRvcldyYXBwZXIgYSB7IGZsb2F0Om5vbmUgIWltcG9ydGFudDsgbWFyZ2luLWxlZnQ6MHB4ICFpbXBvcnRhbnQ7IGZvbnQtc2l6ZToxMDAlICFpbXBvcnRhbnQ7IH0gLmNrZWRpdG9yV3JhcHBlciBwIHsgZmxvYXQ6bm9uZSAhaW1wb3J0YW50OyB9IC5ja2VkaXRvcldyYXBwZXIgcDplbXB0eSB7IG1hcmdpbi1ib3R0b206MXJlbTsgfSAuY2xyeyBjbGVhcjpib3RoO30gLmZsZWZ0eyBmbG9hdDpsZWZ0OyB9IGlucHV0OmludmFsaWR7Ym94LXNoYWRvdzpub25lOyAtbW96LWJveC1zaGFkb3c6bm9uZTt9IC5jb25kaXRpb25zLS1jb250YWluZXIgeyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOnJvdzsganVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47IG1hcmdpbi1ib3R0b206OHB4OyB9IC5jb25kaXRpb25zLS1jb250YWluZXIgLmNvbmRpdGlvbnMgeyBmbGV4LWdyb3c6MjsgZm9udC1zaXplOjAuODEzcmVtIDsgbGluZS1oZWlnaHQ6MThweDsgY29sb3I6IzAwMDAwMDsgfSAuY29uZGl0aW9uc0Zvb3RlcnsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODEzcmVtIDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgbGluZS1oZWlnaHQ6MThweDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgdGV4dC1hbGlnbjpsZWZ0OyBtYXJnaW4tbGVmdDo1cHg7IG1hcmdpbi10b3A6MjVweDsgY29sb3I6IzAwMDAwMDsgfSAuY29uZGl0aW9ucy0tY29udGFpbmVyIGEsIC5jb25kaXRpb25zRm9vdGVyIGEgeyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyBjdXJzb3I6cG9pbnRlcjsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzAwMDAwMDsgZm9udC13ZWlnaHQ6bm9ybWFsOyB9IC5leHRlbmRlZFBob25lVHJpZ2dlciBheyBjb2xvcjppbmhlcml0OyB9IC5tYWluRGl2LXdyYXBwZXIgPiAubGFuZ3VhZ2VCYXItemVybyB7IG1hcmdpbjowOyBoZWlnaHQ6aW5oZXJpdDsgd2lkdGg6MTAwJTsgfSAuaGVhZGVyLXNlY3Rpb24gLmxhbmd1YWdlQmFyIHsgbWFyZ2luOjAgYXV0byAyLjc1cmVtOyB3aWR0aDppbmhlcml0OyB9IC5oZWFkZXItc2VjdGlvbiAubGFuZ3VhZ2VCYXIgKyAucGhvbmUgeyBtYXJnaW4tYm90dG9tOjAuNXJlbTsgfSAubGFuZ3VhZ2VCYXIgdWwgYTpob3Zlcntmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojNjY2NjY2OyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30gLmxhbmd1YWdlQmFyIHVsIGE6dmlzaXRlZHtwYWRkaW5nLXJpZ2h0OjM1cHg7IHdpZHRoOmF1dG87IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiM2NjY2NjY7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7IHRleHQtYWxpZ246cmlnaHQ7fSAubGFuZ3VhZ2VCYXIubGFuZ3VhZ2VCYXItemVybyB7IGhlaWdodDowOyBwYWRkaW5nOjA7IG1hcmdpbjowOyB9ICNtYWluRGl2LndyYXBwZXIubm8taWNvbnMgeyBwYWRkaW5nLXRvcDowLjAxcmVtOyB9IC50b3Bfcm91eyB3aWR0aDo5NjBweDsgaGVpZ2h0OjRweDsgZmxvYXQ6bGVmdDsgfSAubG9nb3sgfSAubG9nb05vUGFkZGluZyBpbWd7IHdpZHRoOjEwMCU7fSAubGFuZ3VhZ2VCYXIgYS5kZXNrdG9wX2xhbmdfYnV0dG9uLCAubGFuZ3VhZ2VCYXIgc3Bhbi5kZXNrdG9wX2xhbmdfYnV0dG9ueyBwb3NpdGlvbjpyZWxhdGl2ZTsgZGlzcGxheTppbmxpbmUtYmxvY2s7IGZvbnQtc2l6ZTowLjc1cmVtIDsgd2lkdGg6MjhweDsgaGVpZ2h0OjI2cHg7IHBhZGRpbmc6MDsgdGV4dC1hbGlnbjpjZW50ZXI7IHRleHQtZGVjb3JhdGlvbjpub25lOyB2ZXJ0aWNhbC1hbGlnbjp0b3A7IGJvcmRlcjoxcHggc29saWQgI0I2QjdCOTsgY29sb3I6I0I2QjdCOTsgY29sb3I6IzAwN2ZhNTsgYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgfSAubGFuZ3VhZ2VCYXIgLmRlc2t0b3BfbGFuZ19idXR0b24uYWN0aXZlLCAubGFuZ3VhZ2VCYXIgYS5kZXNrdG9wX2xhbmdfYnV0dG9uOmhvdmVyeyBjb2xvcjojZmZmZmZmOyBjb2xvcjojZmZmZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiNCNkI3Qjk7IGJhY2tncm91bmQtY29sb3I6IzAwN2ZhNTsgfSAubGFuZ3VhZ2VCYXIgc3Bhbi5kZXNrdG9wX2xhbmdfYnV0dG9uOm50aC1jaGlsZChldmVuKSwgLmxhbmd1YWdlQmFyIGEuZGVza3RvcF9sYW5nX2J1dHRvbjpudGgtY2hpbGQoZXZlbil7IG1hcmdpbi1sZWZ0OjJweDsgfSAubGFuZ3VhZ2VCYXIgYS5kZXNrdG9wX2xhbmdfYnV0dG9uIHNwYW4uZGVza3RvcF9sYW5nX2J1dHRvbl90ZXh0LCAubGFuZ3VhZ2VCYXIgc3Bhbi5kZXNrdG9wX2xhbmdfYnV0dG9uIHNwYW4uZGVza3RvcF9sYW5nX2J1dHRvbl90ZXh0eyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjUwJTsgdHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsgfSAubG9nb05vUGFkZGluZ3sgbWF4LXdpZHRoOjUwJTsgZmxvYXQ6bGVmdDsgbWFyZ2luLXRvcDotNHB4O30gLnYtY2FyZC50b3BfYmcgeyBkaXNwbGF5OmZsZXg7IGp1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuOyBhbGlnbi1pdGVtczpjZW50ZXI7IG1hcmdpbi10b3A6MTBweDsgfSAudi1jYXJkLnRvcF9iZy4tbXQwIC5oZWFkZXItc2VjdGlvbjpudGgtY2hpbGQoMikgeyBtYXJnaW4tdG9wOjc0cHg7IH0gLmhlYWRlci1zZWN0aW9uIHsgZGlzcGxheTpmbGV4OyB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7IGp1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuOyBhbGlnbi1pdGVtczpjZW50ZXI7IH0gLmhlYWRlci1pbWFnZS13cmFwcGVyIHsgbWluLWhlaWdodDo5N3B4OyB9IC5oZWFkZXItc2VjdGlvbi5pbWFnZSB7IHdpZHRoOjI1JTsgfSAuaGVhZGVyLXNlY3Rpb24uaW1hZ2UgPiAuaGVhZGVyLWltYWdlLXdyYXBwZXIgaW1nIHsgbWF4LWhlaWdodDoyNTBweDsgfSAuaGVhZGVyLXNlY3Rpb24gPiBkaXYgeyBkaXNwbGF5OmlubGluZS1ibG9jazsgfSAuaGVhZGVyLXNlY3Rpb24gLnBob25lIHsgd2lkdGg6YXV0bzsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6dmFyKC0tZGVhbGVyLWFkZHJlc3MtY29sb3IpOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1hbGlnbjpyaWdodDsgcGFkZGluZzowLjVyZW0gMDsgfSAuaGVhZGVyLXNlY3Rpb246bnRoLWNoaWxkKDIpLmltYWdlIHsgdGV4dC1hbGlnbjpyaWdodDsgfSAuaGVhZGVyLXNlY3Rpb24gLnBob25lLnBob25lX3JpZ2h0eyB0ZXh0LWFsaWduOnJpZ2h0OyB9IC5oZWFkZXItc2VjdGlvbiAucGhvbmUucGhvbmVfbGVmdCB7IHRleHQtYWxpZ246bGVmdDsgfSAuaGVhZGVyLXNlY3Rpb24gPiAudi1jYXJkIHsgfSAubXVsdGktYWRkcmVzcy13cmFwcGVyLmV4Y2VwdGlvblN0eWxleyBkaXNwbGF5OmZsZXg7IH0gLm11bHRpLWFkZHJlc3Mtd3JhcHBlci5leGNlcHRpb25TdHlsZSAubXVsdGktYWRkcmVzcy0tcGhvbmV7IHdpZHRoOmF1dG87IGFsaWduLWl0ZW1zOmNlbnRlcjsgfSAubXVsdGktYWRkcmVzcy13cmFwcGVyLmV4Y2VwdGlvblN0eWxlIC5tdWx0aS1hZGRyZXNzLS1waG9uZSBpeyBmb250LXNpemU6MC42MjVyZW0gOyB9IC5tdWx0aS1hZGRyZXNzLXdyYXBwZXIuZXhjZXB0aW9uU3R5bGUgYXsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0gLm11bHRpLWFkZHJlc3MgeyBkaXNwbGF5OmZsZXg7IGp1c3RpZnktY29udGVudDpmbGV4LWVuZDsgfSAubXVsdGktYWRkcmVzcy0tcGhvbmUgeyB3aWR0aDoxMzNweDsgZGlzcGxheTpmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjsgfSAubXVsdGktYWRkcmVzcyBpIHsgcGFkZGluZy1yaWdodDo1cHg7IHBhZGRpbmctbGVmdDoxMHB4OyB9IC50b3BfYmcgdGFibGUgdGJvZHkgdGQ6bnRoLWNoaWxkKDIpIC5oZWFkZXItc2VjdGlvbiB7IHdpZHRoOjEwMCU7IH0gLnRvcF9iZy5kaXZUYWJsZSAuaGVhZGVyLXNlY3Rpb246bnRoLWNoaWxkKDIpIHsgdGV4dC1hbGlnbjpyaWdodDsgfSAudG9wX2JnIHRhYmxlIHRkIC5oZWFkZXItc2VjdGlvbiB7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB9IC5waG9uZSBoMnsgZm9udC1zaXplOjEuNXJlbSA7IGNvbG9yOiM1MjUyNTI7IGZvbnQtd2VpZ2h0OmJvbGQ7IHRleHQtZGVjb3JhdGlvbjpub25lO30gLnBob25lIGgxeyBmb250LXNpemU6MS44NzVyZW0gOyBjb2xvcjojNTI1MjUyOyBmb250LXdlaWdodDpib2xkOyB0ZXh0LWRlY29yYXRpb246bm9uZTt9IC5waG9uZSBkaXYub3JneyBmb250LXNpemU6MS4zNzVyZW0gOyBjb2xvcjojNTI1MjUyOyBmb250LXdlaWdodDpib2xkOyB0ZXh0LWRlY29yYXRpb246bm9uZTt9IC5waG9uZV90ZXh0IHsgY29sb3I6dmFyKC0tZGVhbGVyLWFkZHJlc3MtY29sb3IpOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZy1sZWZ0OjJweDsgcGFkZGluZy10b3A6MnB4O30gLnBob25lX3RleHQgYXsgY29sb3I6dmFyKC0tZGVhbGVyLWFkZHJlc3MtY29sb3IpOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZGlzcGxheTppbmxpbmUtYmxvY2s7IHdpbGwtY2hhbmdlOnRyYW5zZm9ybTsgdHJhbnNmb3JtLW9yaWdpbjpyaWdodCBjZW50ZXI7IHRyYW5zaXRpb246dHJhbnNmb3JtIDAuM3MgZWFzZTsgfSAucGhvbmVfdGV4dCBhOmhvdmVyeyB0cmFuc2Zvcm06c2NhbGUoMC45Myk7IGNvbG9yOiMwMDU3OWM7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9IGEucGhvbmUtbGluayB7IGRpc3BsYXkgOmlubGluZS1ibG9jayAhaW1wb3J0YW50OyBwYWRkaW5nIDowICFpbXBvcnRhbnQ7IGNvbG9yIDppbmhlcml0OyB0ZXh0LWRlY29yYXRpb24gOm5vbmU7IH0gYS5waG9uZS1saW5rOmhvdmVyIHsgY29sb3I6aW5oZXJpdDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0gI3NsaWRlcnsgd2lkdGg6OTYwcHg7IG1hcmdpbi1sZWZ0OjBweDsgYm94LXNoYWRvdzpub25lOyB9IC5jZW50ZXJlZCB7cG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6NTAlOyB0b3A6NTAlO30gLnVwX21lbnV7IHdpZHRoOjk2MHB4OyBoZWlnaHQ6MzFweDsgei1pbmRleDoxMTExOyBmbG9hdDpyaWdodDt3aGl0ZS1zcGFjZTpub3dyYXA7IH0gLmJhbm5lcnsgd2lkdGg6OTYwcHg7IGhlaWdodDozMDFweDsgZmxvYXQ6bGVmdDsgbWFyZ2luLWxlZnQ6MnB4OyBtYXJnaW4tYm90dG9tOjZweDsgfSAubWVfdG9weyB3aWR0aDo5NjdweDsgaGVpZ2h0OjhweDsgZmxvYXQ6bGVmdDt9IC5tZV9iZ3sgd2lkdGg6OTY3cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL21lX2JnX3JvdS5wbmcpIGxlZnQgdG9wIHJlcGVhdC15O30gLm1lX2Rlc2N7bWFyZ2luOjBweDtoZWlnaHQ6YXV0bztmb250LXNpemU6MC44NzVyZW0gOyBvdmVyZmxvdzpoaWRkZW47cGFkZGluZzo1cHggMTVweH0gLm1lX2JvdXsgd2lkdGg6OTY3cHg7IGhlaWdodDo5cHg7IGZsb2F0OmxlZnQ7fSAub25leyB3aWR0aDoyMjVweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbi1sZWZ0OjEwcHg7IG1hcmdpbi10b3A6OHB4O30gLnR3b3sgd2lkdGg6MjI1cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW4tbGVmdDoxNHB4OyBtYXJnaW4tdG9wOjhweDt9IC50aHJlZXsgd2lkdGg6MjI1cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW4tbGVmdDoxNHB4OyBtYXJnaW4tdG9wOjhweDt9IC5mb3VyeyB3aWR0aDoyMjVweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbi1sZWZ0OjRweDsgbWFyZ2luLXRvcDo0cHg7fSAuVm91c3sgZm9udC1zaXplOjEuMDYzcmVtIDsgY29sb3I6IzAwMDAwMDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHBhZGRpbmctYm90dG9tOjJweDt9IC5jbGFzc3sgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzU3NTc1NzsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHBhZGRpbmctYm90dG9tOjBweDsgcGFkZGluZy10b3A6NnB4O30gLmNsYXNzMXsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzU3NTc1NzsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGhlaWdodDoxNTdweDsgbWFyZ2luLXRvcDo2cHg7fSAuYm9yZGVye2JvcmRlcjoxcHggc29saWQgI2QzZDNkMzsgd2lkdGg6MjE4cHg7fSAuYm94eyB3aWR0aDo3NXB4OyBoZWlnaHQ6NzNweDsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmctdG9wOjEwcHg7IG1hcmdpbjowIGF1dG87fSAuY2F7aGVpZ2h0OjE0M3B4O30gLmJveDIyNXsgd2lkdGg6MjI1cHg7IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiM1NzU3NTc7IHRleHQtZGVjb3JhdGlvbjpub25lOyBwYWRkaW5nLWJvdHRvbTozcHg7fSAuYm94MjI0eyB3aWR0aDoyMjVweDsgZmxvYXQ6bGVmdDsgcGFkZGluZy1ib3R0b206NnB4O30gLmJveDIyM3sgd2lkdGg6MjI1cHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmctdG9wOjNweDt9IC5ub3N7IHdpZHRoOjcxMHB4OyBoZWlnaHQ6MTAwJTsgbWFyZ2luLXRvcDo1cHg7IGZsb2F0OmxlZnQ7IG1hcmdpbi1yaWdodDo1cHg7fSAubm9zX3RvcHsgd2lkdGg6NzE2cHg7IGhlaWdodDo5cHg7IGZsb2F0OmxlZnQ7fSAubm9zX2JneyB3aWR0aDo3MTZweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvbm9zX2JnLnBuZykgbGVmdCB0b3AgcmVwZWF0LXk7fSAubm9zX2JvdXsgd2lkdGg6NzE2cHg7IGhlaWdodDo5cHg7IGZsb2F0OmxlZnQ7fSAubm9zX3RleHR7aGVpZ2h0OjMwcHg7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGNvbG9yOiM1NzU3NTc7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjt9IC5hcm93eyB3aWR0aDo2OTVweDsgaGVpZ2h0OjE2MHB4OyBmbG9hdDpsZWZ0OyBtYXJnaW4tbGVmdDo0cHg7fSAuY29ueyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojM2MzYzNjO30gLmRlc2Mge21heC13aWR0aDoxMDAlO30gLmRlc2NfYmcge3dpZHRoOjEwMCU7IGhlaWdodDoyNDhweDsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoIi9pbWFnZXMvbm9zX2JnLnBuZyIpIHJlcGVhdC15IHNjcm9sbCBsZWZ0IHRvcCB0cmFuc3BhcmVudDt9IC5hZGRye21hcmdpbi10b3A6MjVweDt9IC5hZGRyX21pZHtiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL21lX2JnX3JvdS5wbmcpIGxlZnQgdG9wIHJlcGVhdC15O30gLmhpZGRlbntkaXNwbGF5Om5vbmUgIWltcG9ydGFudDt9IC5ob3Vyc19yZW0geyB0ZXh0LWFsaWduOnJpZ2h0O2xpbmUtaGVpZ2h0OjE4cHg7IGZsb2F0OnJpZ2h0O3BhZGRpbmctcmlnaHQ6MTVweDsgfSAuaG91cnNfcmVtIGF7IGZvbnQtc2l6ZTowLjY4OHJlbSA7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9ICNse3dpZHRoOjYwcHg7IGZsb2F0OmxlZnQ7fSAuZGVye3dpZHRoOjQ2MHB4OyBoZWlnaHQ6MjU1cHg7IG1hcmdpbi10b3A6MXB4OyBmbG9hdDpsZWZ0O30gLmRlcl90b3B7IHdpZHRoOjQ2NHB4OyBoZWlnaHQ6OHB4OyBmbG9hdDpsZWZ0O30gLmRlcl9iZ3sgd2lkdGg6NDQ0cHg7IGhlaWdodDoyMjZweDsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9kZXJfYmcucG5nKSBsZWZ0IHRvcCByZXBlYXQteTsgcGFkZGluZzo2cHggMTBweCAxMHB4IDEwcHg7fSAuZGVyX2JvdXsgd2lkdGg6NDY0cHg7IGhlaWdodDo4cHg7IGZsb2F0OmxlZnQ7fSAuZGVte3dpZHRoOjQ5NXB4OyBoZWlnaHQ6MjU1cHg7IG1hcmdpbi10b3A6M3B4OyBmbG9hdDpsZWZ0OyBtYXJnaW4tbGVmdDo1cHg7bWFyZ2luLWJvdHRvbTo2cHg7fSAuc2JveDF7IHdpZHRoOjI0MHB4OyBoZWlnaHQ6MTIzcHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MCA1cHggMTBweCA1cHh9IC5zYm94Mnsgd2lkdGg6MjQwcHg7IGhlaWdodDoxMjNweDsgZmxvYXQ6bGVmdDsgcGFkZGluZzowIDVweCAxMHB4IDVweH0gLnNib3gzeyB3aWR0aDoyNDBweDsgaGVpZ2h0OjEyM3B4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjAgNXB4IDEwcHggNXB4fSAuc2JveDR7IHdpZHRoOjI0MHB4OyBoZWlnaHQ6MTIzcHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MCA1cHggMTBweCA1cHh9IC5ib3R0b200Ym94ZXN7ZmxvYXQ6bGVmdDt3aWR0aDoxMDAlO3BhZGRpbmc6MDtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47fSAuYm90dG9tNGJveGVzICoge2JveC1zaXppbmc6Ym9yZGVyLWJveDt9IC5ib3R0b200Ym94ZXMgPiAuYm94MjQ1e2Zsb2F0OmxlZnQ7d2lkdGg6MjUlO21heC13aWR0aDoyNDVweDt9IC5ib3R0b200Ym94ZXMgPiAuYm94MjQxe2Zsb2F0OmxlZnQ7bWFyZ2luOjEwcHggNnB4O30gLmJvdHRvbTRib3hlcyA+IC5ib3gyNDE6Zmlyc3QtY2hpbGR7bWFyZ2luLWxlZnQ6MHB4O30gLmJvdHRvbTRib3hlcyA+IC5ib3gyNDE6bGFzdC1jaGlsZHttYXJnaW4tcmlnaHQ6MHB4O30gQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjEwMjRweCkgeyAuYm90dG9tNGJveGVzIHRhYmxlIHsgcGFkZGluZzowIDEwcHg7IH0gfSAuc2JveFVzZWR7IGZsb2F0OmxlZnQ7IH0gLnNib3hfdG9weyB3aWR0aDoyNDdweDsgaGVpZ2h0OjVweDsgZmxvYXQ6bGVmdDt9IC5zYm94X2JneyB3aWR0aDoyNDdweDsgaGVpZ2h0OjEwN3B4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3Nib3hfYmcucG5nKSBsZWZ0IHRvcCByZXBlYXQteTsgZm9udC1zaXplOjEuMTg4cmVtIDsgY29sb3I6IzE5MTkxOTsgdGV4dC1hbGlnbjpjZW50ZXI7fSAuc2JveF9ib3V7IHdpZHRoOjI0N3B4OyBoZWlnaHQ6NXB4OyBmbG9hdDpsZWZ0O30gLmRheyBtYXJnaW4tdG9wOjEycHg7fSAuZGExeyBtYXJnaW4tdG9wOjEwcHg7IGZvbnQtc2l6ZToxLjE4OHJlbSA7IGNvbG9yOiMxOTE5MTk7IHRleHQtYWxpZ246Y2VudGVyO30gLmRhMSBoMXsgcGFkZGluZzowOyBtYXJnaW46MDsgZm9udC1zaXplOjEuODc1cmVtIDsgY29sb3I6IzE5MTkxOTsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtd2VpZ2h0Om5vcm1hbDt9IC5hZGRsaW5leyBjb2xvcjojMDAwMDAwIWltcG9ydGFudDsgb3ZlcmZsb3c6aGlkZGVuOyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAjcmV0dXJuUG9wdXBOZXh0TW9kZWx7IGhlaWdodDo0MHB4IWltcG9ydGFudDsgfSAuYWRkbGluZTo6YmVmb3JlLCAuYWRkbGluZTo6YWZ0ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiMwMDA7IGNvbnRlbnQ6IiI7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyBoZWlnaHQ6MXB4OyBwb3NpdGlvbjpyZWxhdGl2ZTsgdmVydGljYWwtYWxpZ246bWlkZGxlOyB3aWR0aDo1MCU7IH0gLmFkZGxpbmU6YmVmb3JlIHsgcmlnaHQ6MC41ZW07IG1hcmdpbi1sZWZ0Oi01MCU7IH0gLmFkZGxpbmU6YWZ0ZXIgeyBsZWZ0OjAuNWVtOyBtYXJnaW4tcmlnaHQ6LTUwJTsgfSAuc2JveDEgYS5jTGluaywgLnNib3gyIGEuY0xpbmssIC5zYm94MyBhLmNMaW5rLCAuc2JveDQgYS5jTGlua3sgZGlzcGxheTpibG9jazsgaGVpZ2h0OjEwMCU7IHdpZHRoOjEwMCU7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9IC5zYm94MSBhLmNMaW5rOmhvdmVyLCAuc2JveDIgYS5jTGluazpob3ZlciwgLnNib3gzIGEuY0xpbms6aG92ZXIsIC5zYm94NCBhLmNMaW5rOmhvdmVyeyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSAuaG9tZXBhZ2UtLWJ1c2luZXNzLWRlc2NyaXB0aW9uLCAuaG9tZXBhZ2UtLWJ1c2luZXNzLWRlc2NyaXB0aW9uLWNlcnQsIC5ob21lcGFnZS0tYnVzaW5lc3MtZGVzY3JpcHRpb24gLmJvcmRlcl9ib3ggeyBiYWNrZ3JvdW5kLWNvbG9yOiNlNGRjZDM7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgY29sb3I6IzAwMDAwMDsgY29sb3I6IzAwMDAwMDsgfSAuaG9tZXBhZ2UtLWJ1c2luZXNzLWRlc2NyaXB0aW9uIGEsIC5ob21lcGFnZS0tYnVzaW5lc3MtZGVzY3JpcHRpb24tY2VydCBhIHsgY29sb3I6IzAwMDAwMDsgY29sb3I6IzAwMDAwMDsgfSAuaG9tZXBhZ2UtLWJ1c2luZXNzLWRlc2NyaXB0aW9uIC5ib3JkZXJfYm94LCAuaG9tZXBhZ2UtLWJ1c2luZXNzLWRlc2NyaXB0aW9uLWNlcnQgLmJvcmRlcl9ib3ggeyBiYWNrZ3JvdW5kLWNvbG9yOmluaGVyaXQ7IGNvbG9yOmluaGVyaXQ7IH0gLmJsYWNrX3RleHR7IGZvbnQtc2l6ZToxLjVyZW0gOyBjb2xvcjojMTkxOTE5OyBtYXJnaW4tYm90dG9tOjRweDt9IC5ncmF5X3RleHR7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiMxOTE5MTk7fSAuYnV0eyBmbG9hdDpyaWdodDsgbWFyZ2luOjBweCAwcHggMHB4IDBweDt9IC5saW5leyBib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZDJkMmQyOyBtYXJnaW4tdG9wOjVweDsgbWFyZ2luLWJvdHRvbTo1cHg7fSAudml2eyBtYXJnaW4tdG9wOjVweDsgbWFyZ2luLWxlZnQ6NXB4OyBmb250LXNpemU6MS41cmVtIDsgY29sb3I6I2ZmZjsgY29sb3I6IzAwMDAwMDsgdGV4dC1hbGlnbjpqdXN0aWZ5O30gLnR3eyB3aWR0aDoyNjBweDsgaGVpZ2h0OjQwcHg7IGZsb2F0OnJpZ2h0OyBtYXJnaW4tdG9wOjVweDsgdGV4dC1hbGlnbjpyaWdodDt9IC5FTkdMSVNIIC52aXZ7dGV4dC10cmFuc2Zvcm06Y2FwaXRhbGl6ZTt9IC5NYWluQm94TGF5ZXIgLnZpdiB7IG1hcmdpbi1sZWZ0OjA7IH0gLnNvY2lhbC1zaGFyaW5neyB3aWR0aDoxMDAlOyBjbGVhcjpib3RoOyBmbG9hdDpyaWdodDsgbWFyZ2luLXRvcDo1cHg7IH0gLnNvY2lhbC1zaGFyaW5nID4gZGl2LnNvY2lhbHsgZmxvYXQ6cmlnaHQ7IHBhZGRpbmctbGVmdDo1cHg7IH0gLnNvY2lhbC1zaGFyaW5nID4gZGl2LnNvY2lhbDpsYXN0LWNoaWxkeyBwYWRkaW5nLWxlZnQ6MDsgfSAuc29jaWFsLXNoYXJpbmcgPiBkaXYuc29jaWFsOmZpcnN0LWNoaWxkeyBwYWRkaW5nLXJpZ2h0OjVweDsgfSAuTWFpbkJveExheWVyIC5zb2NpYWwtc2hhcmluZyA+IGRpdi5zb2NpYWw6Zmlyc3QtY2hpbGR7IHBhZGRpbmctcmlnaHQ6MDsgfSAjZm9vdGVyRGl2IC5hZGQsICNmb290ZXJEaXYgLmFkZCBhIHsgY29sb3I6dmFyKC0tZm9vdGVyLWl0ZW1zLWxpbmstY29sb3IpOyB9ICNmb290ZXJEaXYgLmFkZCAub3JneyBjb2xvcjp2YXIoLS1mb290ZXItbGluay10aXRsZS1jb2wpOyB9IC5wb3VyeyB3aWR0aDo3MjVweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7fSAucGFnZW5ve3dpZHRoOjIzNnB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luLWxlZnQ6NXB4OyBwYWRkaW5nOjA7IHRleHQtdHJhbnNmb3JtOm5vbmU7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgbWFyZ2luLXRvcDoxMHB4OyB9IC5wYWdlbm8gdWx7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBtYXJnaW46MCAwIDE1cHggMDsgcGFkZGluZzowOyB3aWR0aDoyMzZweDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgZm9udC13ZWlnaHQ6bm9ybWFsOyB9IC5wYWdlbm8gdWwgbGl7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBtYXJnaW46MDtkaXNwbGF5OmJsb2NrOyBmbG9hdDpub25lOyB3aWR0aDoyMzZweDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgZm9udC13ZWlnaHQ6bm9ybWFsO30gLnBhZ2VubyB1bCBsaSBheyB3aWR0aDoyMzdweDsgbWFyZ2luOjA7IGRpc3BsYXk6YmxvY2s7IGZsb2F0Om5vbmU7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOnZhcigtLWZvb3Rlci1pdGVtcy1saW5rLWNvbG9yKTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgbGluZS1oZWlnaHQ6MThweDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgdGV4dC1hbGlnbjpsZWZ0OyB0ZXh0LXRyYW5zZm9ybTpub25lOyB9IC5wYWdlbm8gdWwgbGkgc3BhbiwgLnBhZ2VubyB1bCBsaSBhLmZ0aXRsZXsgd2lkdGg6MjM2cHg7IG1hcmdpbjowOyBkaXNwbGF5OmJsb2NrOyBmbG9hdDpub25lOyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojZmZmOyBjb2xvcjp2YXIoLS1mb290ZXItbGluay10aXRsZS1jb2wpOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgbWFyZ2luLWJvdHRvbToxMHB4OyBmb250LXdlaWdodDpub3JtYWw7IGxpbmUtaGVpZ2h0OjE4cHg7IHRleHQtYWxpZ246bGVmdDsgfSAucGFnZW5vIHVsIGxpIGEuZnRpdGxlOmhvdmVyeyBtYXJnaW4tYm90dG9tOjEwcHg7fSAucGFnZW5vIHVsIGxpIGE6aG92ZXJ7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBtYXJnaW46MDsgY29sb3I6dmFyKC0tZm9vdGVyLWxpbmstdGl0bGUtY29sKTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGRpc3BsYXk6YmxvY2s7IGxpbmUtaGVpZ2h0OjE4cHg7fSAucGFnZW5vIGxpIGEuYWN0aXZleyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IGNvbG9yOiM5MTkxOTE7IHRleHQtZGVjb3JhdGlvbjpub25lOyBkaXNwbGF5OmJsb2NrOyBsaW5lLWhlaWdodDoxOHB4O30gLkVOR0xJU0ggLnBhZ2VubyB1bCBsaSBhe3RleHQtdHJhbnNmb3JtOmNhcGl0YWxpemU7fSAuYWRkeyB3aWR0aDoyMzBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiM5MTkxOTE7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXdlaWdodDpub3JtYWw7IGxpbmUtaGVpZ2h0OjE4cHg7IHRleHQtdHJhbnNmb3JtOm5vbmU7IHRleHQtYWxpZ246cmlnaHQ7IHRleHQtdHJhbnNmb3JtOm5vbmU7IG1hcmdpbi10b3A6MTBweDttYXJnaW4tYm90dG9tOjEwcHg7fSAuY29weXsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzkxOTE5MTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgbGluZS1oZWlnaHQ6MThweDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgdGV4dC1hbGlnbjpsZWZ0OyB0ZXh0LXRyYW5zZm9ybTpub25lOyBtYXJnaW4tbGVmdDo1cHg7IG1hcmdpbi10b3A6MjVweDt9IC5jb3B5IGF7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7Y3Vyc29yOnBvaW50ZXI7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiM5MTkxOTE7IGZvbnQtd2VpZ2h0Om5vcm1hbH0gLmNvcHkgYTpob3ZlcnsgY29sb3I6I2Q0ZDRkNDsgZm9udC13ZWlnaHQ6Ym9sZDt9IC5mb290ZXItbGlzdHMgbGkgPiBzcGFuIHsgdGV4dC10cmFuc2Zvcm06dmFyKC0tdHh0LXVwcGVyKTsgfSAjZm9vdGVyV3JhcHBlciAudi1jYXJkLmFkZCB7IGxpbmUtaGVpZ2h0OmluaXRpYWw7IH0gI2Zvb3RlciAuZm9vdGVyLXRpdGxlIHsgZm9udC1zaXplOnZhcigtLWZzNCk7IGNvbG9yOnZhcigtLWZvb3Rlci1saW5rLXRpdGxlLWNvbCwgdmFyKC0td2hpdGUpKTsgfSAuRU5HTElTSCAjZm9vdGVyIC5mb290ZXItdGl0bGUgeyB0ZXh0LXRyYW5zZm9ybTpjYXBpdGFsaXplOyB9ICNmb290ZXIgPiAuZmxleC1ib3ggPiAuZm9vdGVyLWxvZ29fX2NvbnRhaW5lciB7IG1hcmdpbi10b3A6MDsgbWFyZ2luLXJpZ2h0OnZhcigtLXM1KTsgfSAjZm9vdGVyID4gLmZsZXgtYm94ID4gLmZvb3Rlci1sb2dvX19jb250YWluZXIgaW1nIHsgbWF4LXdpZHRoOjEwMCU7IG1heC1oZWlnaHQ6MTUwcHg7IH0gLnNvY2lhbC1tZWRpYS1pY29ucyB7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246cm93OyBqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7IHRleHQtYWxpZ246cmlnaHQ7IH0gLmRlYWxlci1hbGlnbi1sZWZ0IC5zb2NpYWwtbWVkaWEtaWNvbnMgeyB0ZXh0LWFsaWduOmxlZnQ7IGp1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0OyB9IC5zb2NpYWwtbWVkaWEtaWNvbnMgLnNvY2lhbC1pY29ucyB7IHdpZHRoIDphdXRvOyBoZWlnaHQ6YXV0bzsgbWFyZ2luOjAgNHB4OyB9ICNmb290ZXIgYS5zb2NpYWwtbGluayA+IHN2ZyB7IGhlaWdodDoyMnB4OyBtYXJnaW4tbGVmdDozcHg7IH0gaGVhZGVyIC5oZWFkZXItc29jaWFsICNzb2NpYWxfbWVkaWFfaWNvbnNfZGl2ID4gYSA+IHN2ZyB7IGhlaWdodDoyMXB4OyBtYXJnaW4tdG9wOjRweDsgfSAuc29jaWFsLW1lZGlhLWljb25zIC5zb2NpYWwtaWNvbnMgLmZhYiB7IG1hcmdpbi10b3A6MDsgZm9udC1zaXplIDoxLjllbTsgY29sb3IgOnZhcigtLWZvb3Rlci1saW5rLXRpdGxlLWNvbCk7IH0gLmRpdlNwYW4uZGl2U3BhbjMgPiAuZm9vdGVyLWxvZ29fX2NvbnRhaW5lciB7IG1hcmdpbi10b3A6MXJlbTsgdGV4dC1hbGlnbjpyaWdodDsgfSAuZGVhbGVyLWFsaWduLWxlZnQgLmZvb3Rlci1sb2dvX19jb250YWluZXIgeyB0ZXh0LWFsaWduOmxlZnQ7IH0gLmRpdlNwYW4uZGl2U3BhbjMgPiAuZm9vdGVyLWxvZ29fX2NvbnRhaW5lciBpbWcgeyBtYXgtd2lkdGg6MTgwcHg7IG1heC1oZWlnaHQ6MTAwcHg7IH0gQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjEwMjRweCkgeyAuaGVhZGVyLXNlY3Rpb24gLnBob25lLnBob25lX2xlZnQgeyBwYWRkaW5nLWxlZnQ6MTBweDsgfSAjZm9vdGVyIHsgcGFkZGluZy1sZWZ0OjEwcHg7IHBhZGRpbmctcmlnaHQ6MTBweDsgfSB9IEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDo5OTlweCkgeyAjTWFpbk1lbnVfU0VBUkNIX0JBUiB7IGRpc3BsYXk6bm9uZTsgfSAudXBfbWVudSB1bC5uYXYgPiBsaS5maXJzdE1lbnUgeyBwYWRkaW5nLWxlZnQ6MTBweDsgfSAudXBfbWVudSB1bC5uYXYgPiBsaTpudGgtb2YtdHlwZSgyKSB7IHBhZGRpbmctcmlnaHQ6MTBweDsgfSAudXBfbWVudSB1bC5uYXYgPiBsaTpudGgtb2YtdHlwZSgyKSA+IHVsLnN1YiB7IHJpZ2h0OjEwcHg7IH0gLmxhbmd1YWdlQmFyIGRpdjpmaXJzdC1vZi10eXBlIHsgbWFyZ2luLXJpZ2h0OjEwcHg7IH0gLm1lbnU3IC5maW5hbmNlLW1lbnUtZnJlZWNyZWRpdC5jZW50ZXIgeyByaWdodDotMTYwcHggIWltcG9ydGFudDsgbGVmdDphdXRvOyB9IC5tZW51OCAuZmluYW5jZS1tZW51LWZyZWVjcmVkaXQuY2VudGVyIHsgcmlnaHQ6LTE2MHB4ICFpbXBvcnRhbnQ7IGxlZnQ6YXV0bzsgfSAubWVudTUgLmZpbmFuY2UtbWVudS1mcmVlY3JlZGl0LmNlbnRlciB7IHJpZ2h0Oi0zMDBweCAhaW1wb3J0YW50OyBsZWZ0OmF1dG87IH0gfSAuZGl2U3Bhbi5wYWdlbm8geyBtYXJnaW4tbGVmdDowOyB9IC5kaXZTcGFuLnBhZ2VubyB1bCBsaSBzcGFuLCAuZGl2U3Bhbi5wYWdlbm8gdWwgbGkgYS5mdGl0bGUgeyBmb250LXNpemU6MC45MzhyZW0gOyBtYXgtd2lkdGg6MjI1cHg7IH0gLmRpdlNwYW4ucGFnZW5vIHVsIGxpIGEgeyBmb250LXNpemU6MC44NzVyZW0gOyB9IC5hZHIgeyBsaW5lLWhlaWdodDoxLjJyZW07IG1hcmdpbjowLjVyZW0gMDsgfSAjZm9vdGVyLmRlYWxlci1wb3NpdGlvbi1sZWZ0IC5mb290ZXItdGl0bGVfX2NvbnRhaW5lciB7IG1hcmdpbi1ib3R0b206MnJlbTsgfSAjZm9vdGVyLmRlYWxlci1wb3NpdGlvbi1sZWZ0IC5kaXZTcGFuMyB7IGZsb2F0OmxlZnQ7IG1hcmdpbi10b3A6MTVweDsgcGFkZGluZy1yaWdodDozMHB4OyB0ZXh0LWFsaWduOmxlZnQ7IH0gI2Zvb3Rlci5kZWFsZXItcG9zaXRpb24tbGVmdCAuZGl2U3BhbjkgeyBmbG9hdDpyaWdodDsgfSAjZm9vdGVyLmRlYWxlci1wb3NpdGlvbi1sZWZ0IC5zb2NpYWwtc2hhcmluZyB7IGZsb2F0OnVuc2V0OyBjbGVhcjp1bnNldDsgbWFyZ2luOjA7IH0gI2Zvb3Rlci5kZWFsZXItcG9zaXRpb24tbGVmdCAuc29jaWFsIHsgZmxvYXQ6bGVmdDsgfSAjZm9vdGVyLmRlYWxlci1wb3NpdGlvbi1yaWdodC5kZWFsZXItYWxpZ24tbGVmdCAuc29jaWFsLXNoYXJpbmcgeyB3aWR0aDoyNSU7IGZsb2F0OmxlZnQ7IHBhZGRpbmctbGVmdDo3NSU7IH0gI2Zvb3Rlci5kZWFsZXItcG9zaXRpb24tcmlnaHQuZGVhbGVyLWFsaWduLWxlZnQgLnNvY2lhbCB7IGZsb2F0OmxlZnQ7IG1hcmdpbi1sZWZ0OjFyZW07IH0gI2Zvb3Rlci5kZWFsZXItcG9zaXRpb24tcmlnaHQuZGVhbGVyLWFsaWduLWxlZnQgLnNvY2lhbDpmaXJzdC1jaGlsZCB7IG1hcmdpbjowOyBwYWRkaW5nOjA7IH0gI2Zvb3RlciAuaWNvbi10ZXh0eyBtYXJnaW4tYm90dG9tOi40cmVtOyB9ICNmb290ZXIgLmljb24tdGV4dCBzcGFueyB3aWR0aDoyMHB4OyBwYWRkaW5nOjAgIWltcG9ydGFudDsgfSAjZm9vdGVyIC5mbi5vcmcgeyBsaW5lLWhlaWdodDoyLjA2MjVyZW07IH0gLnNtYWxscGljX2JveHt3aWR0aDozMjlweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbjowO30gLnNtYWxscGljNDN7d2lkdGg6NDNweDsgaGVpZ2h0OjMxcHg7IGZsb2F0OmxlZnQ7IG1hcmdpbjowIDVweCAwIDA7IGJvcmRlcjoycHggc29saWQgI0ZGRkZGRjt9IC5kZXRhaWxze3dpZHRoOjgxcHg7IGhlaWdodDozMHB4OyBkaXNwbGF5OmJsb2NrOyB9IGEuZGV0YWlsc3t3aWR0aDo4MXB4OyBoZWlnaHQ6MzBweDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9kZXRhaWxzLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0O30gYTpob3Zlci5kZXRhaWxze3dpZHRoOjgxcHg7IGhlaWdodDozMHB4OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2RldGFpbHMucG5nKSBsZWZ0IC0zMnB4IG5vLXJlcGVhdDt9IC5iaWdfcGljYm94e21pbi1oZWlnaHQ6MTEwcHg7d2lkdGg6MTQ2cHg7fSAuYmlnX3BpY2JveCBpbWd7IGRpc3BsYXk6YmxvY2s7IH0gLnBpY2JveF92aWRlb2J0bl9lbiwgLnBpY2JveF92aWRlb2J0bl9mciB7ZGlzcGxheTpibG9jaztoZWlnaHQ6NDVweDt9IC5waWNib3hfdmlkZW9idG5fZW4ge2JhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL3ZpZGVvLWJ0bi10aHVtYl9lbi5wbmcnKSBuby1yZXBlYXQgc2Nyb2xsIDAgMCAvIDEwMCUgYXV0byB0cmFuc3BhcmVudDt9IC5waWNib3hfdmlkZW9idG5fZnIge2JhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL3ZpZGVvLWJ0bi10aHVtYl9mci5wbmcnKSBuby1yZXBlYXQgc2Nyb2xsIDAgMCAvIDEwMCUgYXV0byB0cmFuc3BhcmVudDt9IC5waWNib3hfdmlkZW9idG5fZW46aG92ZXIge2JhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL3ZpZGVvLWJ0bi10aHVtYl9lbl9ob3Zlci5wbmcnKSBuby1yZXBlYXQgc2Nyb2xsIDAgMCAvIDEwMCUgYXV0byB0cmFuc3BhcmVudDt9IC5waWNib3hfdmlkZW9idG5fZnI6aG92ZXIge2JhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL3ZpZGVvLWJ0bi10aHVtYl9mcl9ob3Zlci5wbmcnKSBuby1yZXBlYXQgc2Nyb2xsIDAgMCAvIDEwMCUgYXV0byB0cmFuc3BhcmVudDt9IC5iaWdfcGljYm94X3dyYXBwZXIgeyB3aWR0aDoxNDZweDsgZmxvYXQ6bGVmdDsgbWFyZ2luOjAgMTBweCAwcHggMjFweDsgfSAudGV4dF90aXRsZSBheyBkaXNwbGF5OmJsb2NrO3RleHQtZGVjb3JhdGlvbjpub25lOyB3aWR0aDozMjlweDsgaGVpZ2h0OmF1dG87IG1hcmdpbjowOyBwYWRkaW5nLWJvdHRvbTo1cHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiM0MTQxNDE7IGZvbnQtd2VpZ2h0OmJvbGQ7fSAudGV4dF90aXRsZTJ7d2lkdGg6MzI5cHg7IGhlaWdodDozMnB4OyBmbG9hdDpsZWZ0OyBtYXJnaW46MCA7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiM0MTQxNDE7fSAuc29sZF9jYXJfbm90ZXtiYWNrZ3JvdW5kLWNvbG9yOiMxRTFFMUU7IGJvcmRlci1yYWRpdXM6NXB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NXB4OyBjb2xvcjojRkZGOyB3aWR0aDoxMDAlOyBwYWRkaW5nOjEwcHggMDsgdGV4dC1hbGlnbjpjZW50ZXI7IG1hcmdpbi10b3A6MTVweDt9IC5zb2xkX2Nhcl9ub3RlIGEge2NvbG9yOiNGRkY7fSAuc29sZF9jYXJfbm90ZSBhOmhvdmVyIHtjb2xvcjojQkJCO30gLnRleHRfdGl0bGUze3dpZHRoOjMyOXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luOjAgOyBwYWRkaW5nLWJvdHRvbTo3cHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiM0ODQ4NDg7fSAudGV4dF9ib3gye3dpZHRoOjMyOXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luOjAgMHB4IDBweCAwcHg7IH0gLm1haW5fcGljYm94e3dpZHRoOjY3MXB4OyBtaW4taGVpZ2h0OjE3MHB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2xpbmUucG5nKSBsZWZ0IGJvdHRvbSByZXBlYXQteDsgYmFja2dyb3VuZC1wb3NpdGlvbjpib3R0b207IHBhZGRpbmc6MDsgbWFyZ2luOjAgO30gLmJveDJfZGV0YWlsc19mb290ZXIye3dpZHRoOjY4MXB4OyBoZWlnaHQ6MTVweDsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9ib3hfZm9vdGVyLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0O30gLmJveDJfZGV0YWlsc19taWRFeHt3aWR0aDoxMDAlOyBoZWlnaHQ6YXV0bzsgYmFja2dyb3VuZDpub25lOyBwYWRkaW5nOjAgMHB4O2hlaWdodDo4NXB4O30gLmJveDJfZGV0YWlsc190ZXh0IHNwYW57IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXNpemU6MS4xMjVyZW0gOyBjb2xvcjojRkZGRkZGOyBmb250LXdlaWdodDpib2xkO30gLmJveDJfZGV0YWlsc19mb290ZXIyMnt3aWR0aDo5NzFweDsgaGVpZ2h0OjE1cHg7IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvYm94X2Zvb3Rlci5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDtiYWNrZ3JvdW5kLXNpemU6OTcxcHggYXV0bzt9IC5ib3gxNzB7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6NjcxcHg7IG1pbi1oZWlnaHQ6MTcwcHg7IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvbGluZS5wbmcpIGxlZnQgYm90dG9tIG5vLXJlcGVhdDsgYmFja2dyb3VuZC1wb3NpdGlvbjpib3R0b207IHBhZGRpbmc6MDsgbWFyZ2luOjAgMHB4IDEwcHggMDt9IC5jdXN0b21Cb3hCYXNpY3sgd2lkdGg6MjQxcHg7IGhlaWdodDoxMTZweDsgZmxvYXQ6bGVmdDsgcGFkZGluZzo1cHggMCAwIDA7IGJhY2tncm91bmQtcG9zaXRpb246bGVmdCB0b3A7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYmFja2dyb3VuZC1zaXplOjI0MXB4IDEyMXB4OyBmb250LXNpemU6MS4xODhyZW0gOyBjb2xvcjojMTkxOTE5OyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC13ZWlnaHQ6bm9ybWFsOyBjdXJzb3I6cG9pbnRlcjsgfSAuY3VzdG9tQm94QmFzaWM6aG92ZXJ7IGNvbG9yOiNmZmY7IH0gLmN1c3RvbTUgeyBiYWNrZ3JvdW5kLWltYWdlOnVybCgvaW1hZ2VzL2JveDIyX2hvdmVyLnBuZyk7IH0gLmN1c3RvbTU1IHsgYmFja2dyb3VuZC1pbWFnZTp1cmwoL2ltYWdlcy9ib3gyMi5wbmcpOyB9IC5jdXN0b202NjUgeyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2JveDIzX2hvdmVyLnBuZyk7IH0gLmN1c3RvbTY2NTUgeyBiYWNrZ3JvdW5kLWltYWdlOnVybCgvaW1hZ2VzL2JveDIzLnBuZyk7IH0gLmN1c3RvbTY3NSB7IGJhY2tncm91bmQtaW1hZ2U6dXJsKC9pbWFnZXMvYm94MjcucG5nKTsgfSAuY3VzdG9tNjc1NSB7IGJhY2tncm91bmQtaW1hZ2U6dXJsKC9pbWFnZXMvYm94MjdfaG92ZXIucG5nKTsgfSAuY3VzdG9tNjg1IHsgYmFja2dyb3VuZC1pbWFnZTp1cmwoL2ltYWdlcy9ib3gyOC5wbmcpOyB9IC5jdXN0b202ODU1IHsgYmFja2dyb3VuZC1pbWFnZTp1cmwoL2ltYWdlcy9ib3gyOF9ob3Zlci5wbmcpOyB9IC5pbWFnZV9yaWJib24geyBwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDotNXB4OyB0b3A6LTRweDsgei1pbmRleDoxOyBvdmVyZmxvdzpoaWRkZW47IHdpZHRoOjExMnB4OyBoZWlnaHQ6MTEycHg7IHRleHQtYWxpZ246cmlnaHQ7IH0gLmltYWdlX3JpYmJvbiBzcGFuIHsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6I2ZmZmZmZjsgdGV4dC1hbGlnbjpjZW50ZXI7IGxpbmUtaGVpZ2h0OjI4cHg7IHRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKTsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC00NWRlZyk7IHdpZHRoOjE0OHB4OyBkaXNwbGF5OmJsb2NrOyBiYWNrZ3JvdW5kOiMwMDJjNWY7IGJveC1zaGFkb3c6MCAzcHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMSk7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MzBweDsgbGVmdDotMzBweDsgfSAuaW1hZ2VfcmliYm9uIHNwYW46OmJlZm9yZSB7IGNvbnRlbnQ6IiI7IHBvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjBweDsgdG9wOjEwMCU7IHotaW5kZXg6LTE7IGJvcmRlci1sZWZ0OjNweCBzb2xpZCAjMDAyYzVmOyBib3JkZXItcmlnaHQ6M3B4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItYm90dG9tOjNweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXRvcDozcHggc29saWQgIzAwMmM1ZjsgfSAuaW1hZ2VfcmliYm9uIHNwYW46OmFmdGVyIHsgY29udGVudDoiIjsgcG9zaXRpb246YWJzb2x1dGU7IHJpZ2h0OjBweDsgdG9wOjEwMCU7IHotaW5kZXg6LTE7IGJvcmRlci1sZWZ0OjNweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXJpZ2h0OjNweCBzb2xpZCAjMDAyYzVmOyBib3JkZXItYm90dG9tOjNweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXRvcDozcHggc29saWQgIzAwMmM1ZjsgfSAuaW1hZ2VfcmliYm9uX3ZkcCB7IHBvc2l0aW9uOmFic29sdXRlOyBsZWZ0Oi01cHg7IHRvcDotNnB4OyBvdmVyZmxvdzpoaWRkZW47IHdpZHRoOjE5NHB4OyBoZWlnaHQ6MTk0cHg7IHRleHQtYWxpZ246cmlnaHQ7IHotaW5kZXg6NDA7IH0gLmltYWdlX3JpYmJvbl92ZHAgc3BhbiB7IGZvbnQtc2l6ZToxLjA2M3JlbSA7IGNvbG9yOiNmZmZmZmY7IHRleHQtYWxpZ246Y2VudGVyOyBsaW5lLWhlaWdodDozNnB4OyB0cmFuc2Zvcm06cm90YXRlKC00NWRlZyk7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpOyB3aWR0aDoyNzNweDsgZGlzcGxheTpibG9jazsgYmFja2dyb3VuZDojMDAyYzVmOyBib3gtc2hhZG93OjAgM3B4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDEpOyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjY3cHg7IGxlZnQ6LTUxcHg7IH0gLmltYWdlX3JpYmJvbl92ZHAgc3Bhbjo6YmVmb3JlIHsgY29udGVudDoiIjsgcG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MHB4OyB0b3A6MTAwJTsgei1pbmRleDotMTsgYm9yZGVyLWxlZnQ6M3B4IHNvbGlkICNlNGRjZDM7OyBib3JkZXItcmlnaHQ6M3B4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItYm90dG9tOjNweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXRvcDozcHggc29saWQgI2U0ZGNkMzs7IH0gLmltYWdlX3JpYmJvbl92ZHAgc3Bhbjo6YWZ0ZXIgeyBjb250ZW50OiIiOyBwb3NpdGlvbjphYnNvbHV0ZTsgcmlnaHQ6MHB4OyB0b3A6MTAwJTsgei1pbmRleDotMTsgYm9yZGVyLWxlZnQ6M3B4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItcmlnaHQ6M3B4IHNvbGlkICNlNGRjZDM7OyBib3JkZXItYm90dG9tOjNweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXRvcDozcHggc29saWQgI2U0ZGNkMzs7IH0gLnJpYmJvbi1jb250YWluZXIgeyB3aWR0aCA6MzAwcHg7IGhlaWdodCA6MzAwcHg7IG92ZXJmbG93IDpoaWRkZW47IHBvc2l0aW9uIDphYnNvbHV0ZTsgdG9wIDowOyBsZWZ0IDowOyB9IC5yaWJib24tY29udGFpbmVyIC5jb3JuZXItcmliYm9uIHsgei1pbmRleCA6NTU1OyBtYXJnaW4gOjA7IHBhZGRpbmcgOjAuNXJlbSAwICFpbXBvcnRhbnQ7IGJveC1zaGFkb3cgOjAgM3B4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDEpOyBmb250LXNpemUgOjE3cHg7IGxpbmUtaGVpZ2h0IDoyM3B4OyB0ZXh0LWFsaWduIDpjZW50ZXI7IHBvc2l0aW9uIDphYnNvbHV0ZTsgdG9wIDowOyBsZWZ0IDowOyB0cmFuc2Zvcm0gOnRyYW5zbGF0ZVgoLTMwJSkgdHJhbnNsYXRlWSgwJSkgcm90YXRlKC00NWRlZyk7IHRyYW5zZm9ybS1vcmlnaW4gOnRvcCByaWdodDsgYmFja2dyb3VuZCA6IzAwN2ZhNTsgY29sb3IgOiNmZmZmZmY7IH0gLnJpYmJvbi1jb250YWluZXIgLmNvcm5lci1yaWJib246YmVmb3JlLCAucmliYm9uLWNvbnRhaW5lciAuY29ybmVyLXJpYmJvbjphZnRlciB7IGNvbnRlbnQgOiIiOyBwb3NpdGlvbiA6YWJzb2x1dGU7IHRvcCA6MDsgbWFyZ2luIDowIC0xcHg7IHdpZHRoIDoxMDAlOyBoZWlnaHQgOjEwMCU7IGJhY2tncm91bmQgOiMwMDdmYTU7IH0gLnJpYmJvbi1jb250YWluZXIgLmNvcm5lci1yaWJib246YmVmb3JlIHsgbGVmdDoxMDAlOyB9IC5yaWJib24tY29udGFpbmVyIC5jb3JuZXItcmliYm9uOmFmdGVyIHsgcmlnaHQ6MTAwJTsgfSAuc2VhcmNocmlnaHQgeyB3aWR0aDoyODBweDsgaGVpZ2h0OjExNnB4OyBwYWRkaW5nOjVweCAwIDAgMDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9yaWdodC1zZWFyY2gtYm94LnBuZykgbGVmdCB0b3AgcmVwZWF0LXg7IGZvbnQtc2l6ZToxLjE4OHJlbSA7IGNvbG9yOiMxOTE5MTk7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXdlaWdodDpub3JtYWw7Y3Vyc29yOnBvaW50ZXI7IH0gLnNlYXJjaHJpZ2h0aG92ZXIgeyB3aWR0aDoyODBweDsgaGVpZ2h0OjExNnB4OyBwYWRkaW5nOjVweCAwIDAgMDsgbWFyZ2luOjAgMCAwIDA7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvcmlnaHQtc2VhcmNoLWJveC1ob3Zlci5wbmcpIGxlZnQgdG9wIHJlcGVhdC14OyBmb250LXNpemU6MS4xODhyZW0gOyBjb2xvcjojRkZGRkZGOyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC13ZWlnaHQ6bm9ybWFsOyBjdXJzb3I6cG9pbnRlcjsgfSAuc2VhcmNocmlnaHRYWFggeyB3aWR0aDoyODBweDsgaGVpZ2h0OjExNnB4OyBwYWRkaW5nOjVweCAwIDAgMDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9yaWdodC1zZWFyY2gtYm94LnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0ICMyMTRlODM7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNGRkZGRkY7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXdlaWdodDpib2xkO2N1cnNvcjpwb2ludGVyOyBib3JkZXItcmFkaXVzOjhweDsgLW1vei1ib3JkZXItcmFkaXVzOjhweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjhweDsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IC5zZWFyY2hyaWdodGhvdmVyWFhYIHsgd2lkdGg6MjgwcHg7IGhlaWdodDoxMTZweDsgcGFkZGluZzo1cHggMCAwIDA7IG1hcmdpbjowIDAgMCAwOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3JpZ2h0LXNlYXJjaC1ib3gtaG92ZXIucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQgIzIxNGU4MzsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6I0ZGRkZGRjsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtd2VpZ2h0OmJvbGQ7IGN1cnNvcjpwb2ludGVyOyBib3JkZXItcmFkaXVzOjhweDsgLW1vei1ib3JkZXItcmFkaXVzOjhweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjhweDsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IC5zZWFyY2hyaWdodC10ZXh0eyBtYXJnaW4tbGVmdDoxMDBweDsgdGV4dC1hbGlnbjpsZWZ0OyB3aWR0aDo2MCU7IH0gLnNlYXJjaHJpZ2h0LXRleHQgcHsgbWFyZ2luOjE1cHggMCAwOyB9IC5wYWdlbm8ye2hlaWdodDoyNHB4OyB9IC5wYWdlbm8yIHVseyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgfSAucGFnZW5vMiB1bCBsaXsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbjowOyBkaXNwbGF5OmlubGluZTt9IC5wYWdlbm8yIHVsIGxpIGF7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBtYXJnaW46MDsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzMyMzIzMjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHBhZGRpbmc6MCA3cHg7IG1hcmdpbi1yaWdodDoycHg7IGZvbnQtd2VpZ2h0OmJvbGQ7IGxpbmUtaGVpZ2h0OjI0cHg7IHRleHQtdHJhbnNmb3JtOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LXRyYW5zZm9ybTpub25lOyBiYWNrZ3JvdW5kOiNiM2I0YjU7IGZsb2F0OmxlZnQ7IC1tb3otYm9yZGVyLXJhZGl1czo0cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7IGJvcmRlci1yYWRpdXM6NHB4OyAta2h0bWwtYm9yZGVyLXJhZGl1czo0cHg7fSAucGFnZW5vMiB1bCBsaSBhOmhvdmVyeyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNGRkZGRkY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBwYWRkaW5nOjAgN3B4OyBtYXJnaW4tcmlnaHQ6MnB4OyBmb250LXdlaWdodDpib2xkOyBsaW5lLWhlaWdodDoyNHB4OyB0ZXh0LXRyYW5zZm9ybTpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC10cmFuc2Zvcm06bm9uZTsgYmFja2dyb3VuZDojMjgyODI4OyBmbG9hdDpsZWZ0OyAtbW96LWJvcmRlci1yYWRpdXM6NHB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NHB4OyBib3JkZXItcmFkaXVzOjRweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6NHB4O30gLnBhZ2VubzIgbGkgYS5hY3RpdmV7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBtYXJnaW46MDsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6I0ZGRkZGRjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHBhZGRpbmc6MCA3cHg7IG1hcmdpbi1yaWdodDoycHg7IGZvbnQtd2VpZ2h0OmJvbGQ7IGxpbmUtaGVpZ2h0OjI0cHg7IHRleHQtdHJhbnNmb3JtOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LXRyYW5zZm9ybTpub25lOyBiYWNrZ3JvdW5kOiMyODI4Mjg7IGZsb2F0OmxlZnQ7IC1tb3otYm9yZGVyLXJhZGl1czo0cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7IGJvcmRlci1yYWRpdXM6NHB4OyAta2h0bWwtYm9yZGVyLXJhZGl1czo0cHg7fSAubWFpbl9ib3h7d2lkdGg6OTYwcHg7IG1hcmdpbjowIGF1dG87fSAubWFpbl9sZWZ0X2JveHt3aWR0aDo2NzBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7cGFkZGluZy1yaWdodDoxMHB4O30gLm1haW5fbGVmdF9ib3ggdWx7cGFkZGluZzowcHg7fSAuYm94X21pZF9yb3VuZCB7IGJhY2tncm91bmQtY29sb3I6cmdiKDI1NSwyNTUsMjU1KTsgLW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0xMDApOyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsMSk7IGJvcmRlci1yYWRpdXM6NXB4OyBib3gtc2hhZG93Om5vbmU7IGZsb2F0OmxlZnQ7IGhlaWdodDphdXRvOyBtYXJnaW4tdG9wOjEwcHg7IH0gLmJveF90b3Bfcm91bmQgeyBkaXNwbGF5Om5vbmU7IH0gLmJveDJfZGV0YWlsc19mb290ZXIyIHsgZGlzcGxheTpub25lOyB9IC5kZXRhaWxzX2JveCBpbWcudmlweyBtYXJnaW4tdG9wOi00OHB4OyB3aWR0aDoxNDBweDsgYm9yZGVyOjFweDsgYm9yZGVyLXJhZGl1czo0cHg7IH0gLmJveF90b3Bfcm91bmQye3dpZHRoOjk3MXB4OyBoZWlnaHQ6MTVweDsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9ib3hfdG9wLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0O2JhY2tncm91bmQtc2l6ZTo5NzFweCBhdXRvOyBtYXJnaW4tdG9wOjVweDt9IC5ib3hfbWlkX3JvdW5kMnt3aWR0aDo5NzFweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvYm94X21pZC5wbmcpIGxlZnQgdG9wIHJlcGVhdC15O2JhY2tncm91bmQtc2l6ZTo5NzFweCBhdXRvOyBwYWRkaW5nOjAgNXB4O30gLnBhZ2VfbmFtZXt3aWR0aDo2NTBweDsgaGVpZ2h0OjMwcHg7IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvc2hvLnBuZykgY2VudGVyIGJvdHRvbSBuby1yZXBlYXQ7IGJhY2tncm91bmQtcG9zaXRpb246Ym90dG9tOyBwYWRkaW5nOjAgMHB4IDBweCAyMXB4OyBsaW5lLWhlaWdodDozMHB4OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojNDE0MTQxO30gLnBhZ2VfbmFtZSBheyBsaW5lLWhlaWdodDozMHB4OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojNDE0MTQxOyB0ZXh0LXRyYW5zZm9ybTpub25lOyB0ZXh0LWRlY29yYXRpb246bm9uZTt9IC5wYWdlX25hbWUgYTpob3ZlcnsgbGluZS1oZWlnaHQ6MzBweDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzAwNTg5YzsgdGV4dC10cmFuc2Zvcm06bm9uZTsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9IHRhYmxlLnZlaGljbGVMaXN0VGFibGUgYXtkaXNwbGF5OnRhYmxlLWNlbGw7IHZlcnRpY2FsLWFsaWduOm1pZGRsZTtsaW5lLWhlaWdodDoxLjI7fSB0YWJsZS52ZWhpY2xlTGlzdFRhYmxlIGE6aG92ZXJ7ZGlzcGxheTp0YWJsZS1jZWxsOyB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bGluZS1oZWlnaHQ6MS4yO30gLlBvcnNjaGUye3dpZHRoOjEwMCU7aGVpZ2h0OjMxcHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MCAwcHggMjBweCAyMXB4OyBtYXJnaW46MTVweCAwIDI1cHggMDsgbGluZS1oZWlnaHQ6MzFweDsgZm9udC1zaXplOjEuODc1cmVtIDsgY29sb3I6IzQxNDE0MTtkaXNwbGF5OmlubGluZX0gLlBvcnNjaGUyIGgxe2ZvbnQtd2VpZ2h0Om5vcm1hbDsgZm9udC1zaXplOjEuODc1cmVtIDsgY29sb3I6IzQxNDE0MTt9IC5UcmllcnBhcnsgZm9udC1zaXplOjAuNzVyZW0gOyBjb2xvcjojNUI2OTlDOyBmb250LXdlaWdodDpub3JtYWw7cGFkZGluZy1sZWZ0OjVweDt9IC5zZWxlY3RlZF9ib3gye3dpZHRoOjE3NXB4OyBoZWlnaHQ6MzFweDsgZmxvYXQ6bGVmdDsgcGFkZGluZzowIDBweCAwcHggMHB4OyBtYXJnaW46MTVweCAwOyBsaW5lLWhlaWdodDozMXB4OyBmb250LXNpemU6MS44NzVyZW0gOyBjb2xvcjojNDE0MTQxO30gLnNlbGVjdGVkX29yZGVyYnl7d2lkdGg6MTM1cHg7IGZsb2F0OnJpZ2h0OyBwYWRkaW5nOjAgMHB4IDBweCAwcHg7IG1hcmdpbjoxMHB4IDEwcHggMHB4IDBweDsgZm9udC1zaXplOjEuODc1cmVtIDsgY29sb3I6IzQxNDE0MTt9IC5wcml4e3dpZHRoOjc5cHg7IGhlaWdodDo3OHB4OyBmbG9hdDpsZWZ0OyBwb3NpdGlvbjphYnNvbHV0ZTsgei1pbmRleDoxMTsgbWFyZ2luLXRvcDotNHB4OyBtYXJnaW4tbGVmdDotNHB4OyB0b3A6MHB4O30gLnBhZ2VubzV7d2lkdGg6MTAwJTsgaGVpZ2h0OjI0cHg7IG1hcmdpbjozMHB4IDAgMjBweCAwcHg7IHBhZGRpbmc6MDsgZmxvYXQ6bGVmdCB9IC5wYWdlbm82e3dpZHRoOjI1NHB4OyBoZWlnaHQ6MjRweDsgZmxvYXQ6bGVmdDsgdGV4dC1hbGlnbjpyaWdodDt9IC5zdWl2YW50e3dpZHRoOjI4MHB4OyBoZWlnaHQ6MTlweDsgZmxvYXQ6bGVmdDsgcGFkZGluZy10b3A6NXB4O30gLm1haW5fcmlnaHRfYm94e3dpZHRoOjI4MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDt9IC5ib3g3e3dpZHRoOjI5MHB4OyBoZWlnaHQ6MTJweDsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9sZWZ0X2JveF90b3AucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQ7IH0gLmJveDdMaW5re3dpZHRoOjI5MHB4OyBoZWlnaHQ6MTJweDsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9sZWZ0X2JveF90b3AucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQ7IH0gLmJveDdfbWlke3dpZHRoOjI4MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9sZWZ0X2JveF9taWQucG5nKSBsZWZ0IHRvcCByZXBlYXQteTsgcGFkZGluZzowIDJweDt9IC5ib3g3X21pZF9mdWxse3dpZHRoOjk1NnB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDpub25lIGxlZnQgdG9wIG5vLXJlcGVhdCAwIDAgdHJhbnNwYXJlbnQ7IHBhZGRpbmc6MCAycHggMTVweDsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgI0JCQjt9IC5zaW11bGFyX3ZfYm94eyB3aWR0aDoyNjVweDsgcGFkZGluZzowcHggMHB4IDVweCAxMHB4OyBtYXJnaW4tYm90dG9tOjVweDsgfSAuYm94U2VhcmNoTmV3c3ttYXJnaW4tdG9wOi0zcHg7bWFyZ2luLWxlZnQ6LTVweDt3aWR0aDoyODVweDsgaGVpZ2h0OjEycHg7IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvbGVmdF9ib3hfdG9wXzI4MC5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDt9IC5ib3hTZWFyY2hOZXdzX21pZHttYXJnaW4tbGVmdDotNXB4O3BhZGRpbmc6MHB4O3dpZHRoOjI4MXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9sZWZ0X2JveF9taWRfMjgwLnBuZykgbGVmdCB0b3AgcmVwZWF0LXk7IH0gLmJveFNlYXJjaE5ld3NfZm9vdGVyMTV7bWFyZ2luLWxlZnQ6LTVweDt3aWR0aDoyODVweDsgaGVpZ2h0OjEycHg7IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvbGVmdF9ib3hfZm9vdGVyXzI4MC5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDt9IC5ib3g3SF9taWR7d2lkdGg6MjgwcHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmctYm90dG9tOjZweDt9IC5SZWNoZXJjaGUyMntoZWlnaHQ6MjBweDsgcGFkZGluZzoxMHB4IDdweDsgZm9udC1zaXplOjEuMTI1cmVtIDsgY29sb3I6IzAwMDAwMDt9IC5zaW1UaXRsZXtoZWlnaHQ6YXV0bzsgcGFkZGluZzowcHg7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGNvbG9yOiMwZjFhMWU7fSAuYm94OHt3aWR0aDoyNzBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MHB4IDBweCAwcHggMTBweDt9IC5ib3g5e3dpZHRoOjIwcHg7IGhlaWdodDoxOHB4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjBweCAwcHggMTRweCAwcHg7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGNvbG9yOiMwZjFhMWU7fSAuYm94MTF7d2lkdGg6MTAwcHg7IGhlaWdodDoxMXB4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjdweCAwcHggMTRweCAwcHg7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiM1NzU3NTc7IGxpbmUtaGVpZ2h0OjE4cHg7fSAuYm94MTJ7d2lkdGg6MTMwcHg7IGhlaWdodDoxMXB4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjdweCAwcHggMTRweCAwcHg7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiM1NzU3NTc7IGxpbmUtaGVpZ2h0OjE4cHg7fSAuc2VsZWN0X2JveDE0e2hlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjBweCAxMHB4IDBweCAwcHg7IG1hcmdpbi1ib3R0b206M3B4O30gLnNlbGVjdF9ib3gxNntoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZzowcHggMTBweCAwcHggMTBweDsgbWFyZ2luLWJvdHRvbTozcHg7fSAuc2VsZWN0X2JveDE1e2hlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjEwcHggMTBweCAwcHggMTBweDsgbWFyZ2luLWJvdHRvbToxMHB4O30gLnNlbGVjdF9ib3gxMTV7d2lkdGg6MTE1cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjBweCAwcHggMHB4IDEwcHg7IG1hcmdpbi1ib3R0b206MTBweDt9IC5zZWxlY3RfYm94ODB7d2lkdGg6ODBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MHB4IDBweCAwcHggMHB4OyBtYXJnaW4tYm90dG9tOjEwcHg7fSAuYV90ZXh0e3dpZHRoOjIwcHg7IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiM1NzU3NTc7IGxpbmUtaGVpZ2h0OjMxcHg7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nOjAgNXB4O30gLmFqb3V0ZXJ7d2lkdGg6MTAwJTsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MTBweCAwOyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGRkZGOyBiYWNrZ3JvdW5kLWNvbG9yOiMxZjFmMWY7bWFyZ2luOjVweCAwIDEwcHggMHB4O30gLmFqb3V0ZXJfYXtiYWNrZ3JvdW5kOnVybCgiL2ltYWdlcy9zZWFyY2gtZG93bi1hcnJvdy5wbmciKSBuby1yZXBlYXQgc2Nyb2xsIGxlZnQgM3B4IHRyYW5zcGFyZW50OyBwYWRkaW5nLWxlZnQ6MjVweDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6I0ZGRkZGRjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0gLmFqb3V0ZXJfYV9mdWxse2JhY2tncm91bmQ6dXJsKCIvaW1hZ2VzL3NlYXJjaC1yaWdodC1hcnJvdy5wbmciKSBuby1yZXBlYXQgc2Nyb2xsIHJpZ2h0IC0xcHggdHJhbnNwYXJlbnQ7IHBhZGRpbmctcmlnaHQ6MjVweDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6I0ZGRkZGRjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0gLmJveDEze3dpZHRoOjI2MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZzowcHggMTBweCAwcHggMTBweDt9IC5pbnB1dF9ib3gye3dpZHRoOjIwcHg7IGhlaWdodDoxOHB4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjBweCAwcHggMTRweCAwcHg7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGNvbG9yOiMwZjFhMWU7fSAuaW5wdXRfdGV4dHsgd2lkdGg6MTk1cHg7IGhlaWdodDoxMXB4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjNweCAwcHggN3B4IDVweDsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzU3NTc1NzsgbGluZS1oZWlnaHQ6MThweDsgfSAuYnV0dG9uX2JveDJ7d2lkdGg6MjYwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyB9IC5idXR0b25fYm94UzJ7IHdpZHRoOjI0NnB4OyBoZWlnaHQ6MjlweDsgZmxvYXQ6bGVmdDsgcGFkZGluZzoxMHB4IDNweCAxM3B4IDNweDsgfSAuYm94LWZvb3RlcjE1e3dpZHRoOjI5MHB4OyBoZWlnaHQ6MTJweDsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9sZWZ0X2JveF9mb290ZXIucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQ7fSAuZGlzeyBtYXJnaW4tdG9wOjVweDsgbWFyZ2luLWxlZnQ6NXB4OyB3aWR0aDoyNDBweDt9IC5kaXNfY3VzdG9teyB3aWR0aDoyNDBweDt3aWR0aDoyNDBweDt9IC5kaXNfdG9weyB3aWR0aDoyNDZweDsgaGVpZ2h0OjlweDsgZmxvYXQ6bGVmdDt9IC5kaXNfdG9wX2N1c3RvbXsgd2lkdGg6MjM4cHg7IGhlaWdodDo0MHB4OyBmbG9hdDpsZWZ0OyBjb2xvcjojMjgyODI4OyBiYWNrZ3JvdW5kOiNmZmZmZmY7fSAuZGlzX2JneyB3aWR0aDoyNDZweDsgaGVpZ2h0OjE1MHB4OyBmbG9hdDpsZWZ0OyBjb2xvcjojMjgyODI4OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2Rpc19iZy5wbmcpIGxlZnQgdG9wIHJlcGVhdC15O30gLl9kaXNfYmd7IHdpZHRoOjI0MHB4OyBoZWlnaHQ6MjAwcHg7IGZsb2F0OmxlZnQ7IGNvbG9yOiMyODI4Mjg7fSAuZGlzX2JnX2N1c3RvbXsgZmxvYXQ6bGVmdDsgY29sb3I6IzI4MjgyODsgYmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LDEpO30gLl9kaXNfYmdfY3VzdG9teyBmbG9hdDpsZWZ0OyBjb2xvcjojMjgyODI4OyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsMSk7fSAuZGlzX2JvdXsgd2lkdGg6MjQ2cHg7IGhlaWdodDo1MHB4OyBmbG9hdDpsZWZ0OyBjb2xvcjojMmQyZDJkOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2Rpc19ib3UucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQ7fSAuX2Rpc19ib3V7IHdpZHRoOjI0MHB4OyBoZWlnaHQ6MzhweDsgZmxvYXQ6bGVmdDsgYm9yZGVyLXJhZGl1czowIDAgNnB4IDZweDsgbWFyZ2luLXRvcDoxNHB4OyBjb2xvcjojMmQyZDJkOzsgfSAuZGlzX2JvdV9jdXN0b217IHdpZHRoOjIzOHB4OyBoZWlnaHQ6NTBweDsgZmxvYXQ6bGVmdDsgcGFkZGluZy10b3A6NXB4OyBjb2xvcjojMDAwMDAwOyBiYWNrZ3JvdW5kOiNmZmZmZmY7fSAuX2Rpc19ib3VfY3VzdG9teyB3aWR0aDoyNDBweDsgaGVpZ2h0OjQwcHg7IGZsb2F0OmxlZnQ7IGNvbG9yOiMwMDAwMDA7IGJvcmRlci1yYWRpdXM6MCAwIDZweCA2cHg7IG1hcmdpbi10b3A6MTJweDsgYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyB9IC5kaXNfYm91XzJ7IHdpZHRoOjI0NnB4OyBoZWlnaHQ6OXB4OyBmbG9hdDpsZWZ0OyBjb2xvcjojMmQyZDJkOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2Rpc19ib3VfMi5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDt9IC5kaXNfdGV4dHsgZm9udC1zaXplOjEuNDM4cmVtIDsgcGFkZGluZzo0cHggMHB4IDBweCAxNXB4O30gLmx1bmRpX3RleHR7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IHBhZGRpbmc6MnB4IDBweCAwcHggMjBweDsgbGluZS1oZWlnaHQ6MTRweDt9IC5sdW5kaV90ZXh0X2hvbWVwYWdlX2gyNDh7Zm9udC1zaXplOjAuODEzcmVtIDsgbGluZS1oZWlnaHQ6MThweDsgcGFkZGluZzoxMHB4IDAgMCAyMHB4OyB9IC5sdW5kaV90ZXh0IHRoe3RleHQtYWxpZ246bGVmdDtmb250LXdlaWdodDpub3JtYWw7d2lkdGg6NjBweDt9IC5sdW5kaV90ZXh0IHRke3RleHQtYWxpZ246bGVmdDt9IC5weyBoZWlnaHQ6MTZweDsgZmxvYXQ6bGVmdDsgcGFkZGluZzo3cHggNXB4IDBweCAxMHB4OyBmb250LXNpemU6MC44MTNyZW0gO30gLmV7IGhlaWdodDoxNnB4OyBmbG9hdDpyaWdodDsgcGFkZGluZzo3cHggMHB4IDBweCAwcHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7fSAuYm94Mjg4LCAuYm94Mjg4X2N1c3RvbXt3aWR0aDoyODBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IH0gLl9ib3gyODgsIC5fYm94Mjg4X2N1c3RvbXt3aWR0aDoyODBweDsgZmxvYXQ6bGVmdDsgfSAuYm94Mjg4VXNlZHt3aWR0aDoyODBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbi1sZWZ0OjBweDt9IC5ib3gyODhOZXd7d2lkdGg6MjgwcHg7IGZsb2F0OmxlZnQ7IH0gLmJveDI4OE5ld19jdXN0b217ZmxvYXQ6bGVmdDt9IC5ib3gyODhOZXdRTSwgLmJveDI4OE5ld1FNX21vYmlsZSB7IGJvcmRlci1yYWRpdXM6NXB4OyBiYWNrZ3JvdW5kLWNvbG9yOnJnYigyNTUsMjU1LDI1NSk7IC1tcy1maWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MTAwKTsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LDEpOyBib3gtc2hhZG93Om5vbmU7IGNsZWFyOmJvdGg7IGZsb2F0OmxlZnQ7IHdpZHRoOjI4MHB4OyBtYXJnaW4tYm90dG9tOjVweDsgfSAuYm94Mjg4TmV3UU1fbW9iaWxlIHsgd2lkdGg6MTAwJTsgfSAuYm94Mjg4TmV3UU1fbW9iaWxlIC5SZWNoZXJjaGUyMiB7IHRleHQtYWxpZ246Y2VudGVyOyB9IC5ib3gyODhOZXdRTV9tb2JpbGUgdGFibGUgeyB3aWR0aDoxMDAlOyB9IC5ib3gyODhOZXdRTV9tb2JpbGUgLmpxVHJhbnNmb3JtSW5wdXRXcmFwcGVyIHsgd2lkdGg6MTAwJSFpbXBvcnRhbnQ7IH0gLmJveDI4OE5ld1FNX21vYmlsZSAuanFUcmFuc2Zvcm1JbnB1dFdyYXBwZXIgaW5wdXQgeyB3aWR0aDo5NSUhaW1wb3J0YW50OyB9IC5ib3gyODhRTXsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbi10b3A6NXB4OyBmb250LXNpemU6MC44NzVyZW0gO2ZvbnQtd2VpZ2h0Om5vcm1hbDt9IC5ib3gyODhRTV9jdXN0b217d2lkdGg6Mjc4cHg7bWFyZ2luOjVweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG92ZXJmbG93OmhpZGRlbjtib3JkZXItcmFkaXVzOjZweDtib3gtc2hhZG93OjAgMCA0cHggIzMzMzt9IC50ZXh0QXJlYVFNeyBmb250LXNpemU6MC44MTNyZW0gO2xpbmUtaGVpZ2h0OjE1cHg7fSAuYm94Mjg4X3RvcHt3aWR0aDoyODhweDsgaGVpZ2h0OjE0cHg7IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvcmlnaHRfYm94NF90b3AucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQ7IG1hcmdpbi10b3A6MHB4O30gLmJveDI4OF90b3BfY3VzdG9te3dpZHRoOjI3OHB4OyBoZWlnaHQ6NDBweDsgZmxvYXQ6bGVmdDsgY29sb3I6IzI4MjgyODsgYmFja2dyb3VuZDojZmZmZmZmO30gLl9ib3gyODhRTXsgd2lkdGg6MjgwcHg7IH0gLl9ib3gyODhfdG9we30gLl9ib3gyODhfdG9wX2N1c3RvbXsgaGVpZ2h0OjQwcHg7IGZsb2F0OmxlZnQ7IFdpZHRoOjEwMCU7IGNvbG9yOiMyODI4Mjg7IGJhY2tncm91bmQ6I2ZmZmZmZjsgYm9yZGVyLXJhZGl1czo2cHggNnB4IDAgMDsgfSAuX2JveDI4ODBfbWlke30gLl9ib3gyODgwX21pZF9jdXN0b217YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LDEpO30gLmJveDI4OF9taWR7IGJveC1zaGFkb3c6MCAwIDVweCAjMzMzMzMzOyBib3JkZXItcmFkaXVzOjVweDsgbWFyZ2luLXRvcDo1cHg7IG1hcmdpbi1sZWZ0OjVweDsgZmxvYXQ6bGVmdDsgY29sb3I6IzI4MjgyODsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LDEpOyB9IC5ib3gyODhfbWlkX2N1c3RvbXsgYm94LXNoYWRvdzowIDAgNXB4ICMzMzMzMzM7IGJvcmRlci1yYWRpdXM6NXB4OyBtYXJnaW4tdG9wOjVweDsgbWFyZ2luLWxlZnQ6NXB4OyBmbG9hdDpsZWZ0OyBjb2xvcjojMjgyODI4OyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsMSk7fSAuYm94Mjg4MF9taWR7d2lkdGg6MjU4cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBjb2xvcjojMjgyODI4OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3JpZ2h0X2JveDRfbWlkLnBuZykgbGVmdCB0b3AgcmVwZWF0LXk7IHBhZGRpbmc6MCAxNXB4IDBweCAxNXB4O30gLmJveDI4ODBfbWlkX2N1c3RvbXt3aWR0aDoyMjhweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6NXB4IDI1cHg7IGNvbG9yOiMyODI4Mjg7IGJhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwxKTt9IC5ib3gyNjlfbWlke3dpZHRoOjI1OHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9yaWdodF9ib3g0X21pZC5wbmcpIGxlZnQgdG9wIHJlcGVhdC15OyBwYWRkaW5nOjAgMTVweCAwcHggMTVweDt9IC56b29tMjJ7d2lkdGg6MjU4cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyB0ZXh0LWFsaWduOmNlbnRlcjt9IC5zZWFyY2hfcmlnaHQge2JhY2tncm91bmQ6dXJsKC9pbWFnZXMvc2VhcmNoLnBuZykgMCAwIG5vLXJlcGVhdDsgd2lkdGg6Mjc4cHg7IGhlaWdodDoxMTFweDsgZGlzcGxheTpibG9jazsgbWFyZ2luOjVweCA1cHggNXB4IDVweH0gLkRlbWFuZGUyMnt3aWR0aDoyNzhweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojOWEwMTAxOyBsaW5lLWhlaWdodDoyNnB4OyBtYXJnaW4tdG9wOjY3cHg7fSAuRGVtYW5kZTIyIGF7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojOWEwMTAxOyBsaW5lLWhlaWdodDoyMHB4IDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7fSAuRGVtYW5kZTIyIGE6aG92ZXJ7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojOWEwMTAxOyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30gLkRlbWFuZGUyMiBzcGFuIGF7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMjkyOTI5OyBsaW5lLWhlaWdodDoyMHB4IDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7fSAuRGVtYW5kZTIyIHNwYW4gYTpob3ZlcnsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMyOTI5Mjk7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fSAuYm94Mjg4X2Zvb3Rlcnt3aWR0aDoyODhweDsgaGVpZ2h0OjE0cHg7IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvcmlnaHRfYm94NF9mb290ZXIucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQ7fSAuYm94Mjg4X2Zvb3Rlcl9xc3t3aWR0aDoyODhweDsgaGVpZ2h0OjExcHg7IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvcmlnaHRfYm94NF9mb290ZXIucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQ7fSAuYm94Mjg4X2Zvb3Rlcl9xc3t3aWR0aDoyODhweDsgaGVpZ2h0OjExcHg7IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvcmlnaHRfYm94NF9mb290ZXIucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQ7fSAuYm94Mjg4X2Zvb3RlcjU1eyB3aWR0aDoyODBweDsgaGVpZ2h0OjUwcHg7IGZsb2F0OmxlZnQ7IGNvbG9yOiMyZDJkMmQ7IGJhY2tncm91bmQtY29sb3I6I0NCQ0JDQjsgYm9yZGVyLXJhZGl1czowIDAgNnB4IDZweDsgfSAuYm94Mjg4X2Zvb3RlcjU1X2N1c3RvbXsgd2lkdGg6MjgwcHg7IGhlaWdodDozNXB4OyBwYWRkaW5nLXRvcDo1cHg7IGZsb2F0OmxlZnQ7IGNvbG9yOiMwMDAwMDA7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgYm9yZGVyLXJhZGl1czowIDAgNnB4IDZweDsgfSAucCBhe3RleHQtZGVjb3JhdGlvbjpub25lO30gLmdhcDEwe3dpZHRoOjIzMHB4OyBoZWlnaHQ6MTBweDsgZmxvYXQ6bGVmdDt9IC5wYWdlX25hbWUye3dpZHRoOjY1MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZzowIDAgMjBweCAwOyBsaW5lLWhlaWdodDozMHB4OyBmb250LXNpemU6MS42MjVyZW0gOyBjb2xvcjojMDAwMDAwO2ZvbnQtd2VpZ2h0Om5vcm1hbH0gLnBhZ2VfbmFtZTN7IHdpZHRoOjEwMCU7Ym94LXNpemluZzpib3JkZXItYm94OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZzowcHggMTBweCAxMHB4IDEwcHg7IGxpbmUtaGVpZ2h0OjMwcHg7IGZvbnQtc2l6ZToxLjVyZW0gOyBjb2xvcjojMjQyNDI0O30gLnBhZ2VfbmFtZTMgaDF7IGZvbnQtc2l6ZToxLjg3NXJlbSA7IGNvbG9yOiMyNDI0MjQ7Zm9udC13ZWlnaHQ6bm9ybWFsfSAucGFnZV9uYW1lNHt3aWR0aDo2NTBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvc2hvLnBuZykgY2VudGVyIGJvdHRvbSBuby1yZXBlYXQ7IGJhY2tncm91bmQtcG9zaXRpb246Ym90dG9tOyBwYWRkaW5nOjAgMHB4IDEwcHggMjFweDsgbGluZS1oZWlnaHQ6MzBweDsgZm9udC1zaXplOjEuMTI1cmVtIDsgY29sb3I6IzAxNEY4MDt9IC5wYWdlX25hbWU0IGgyeyBmb250LXNpemU6MS41cmVtIDsgY29sb3I6cmdiKDIyOCwyMjAsMjExKTtmb250LXdlaWdodDpub3JtYWx9IC5wYWdlX25hbWU1e3dpZHRoOjEwMCU7aGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvc2hvLnBuZykgY2VudGVyIGJvdHRvbSBuby1yZXBlYXQ7IGJhY2tncm91bmQtcG9zaXRpb246Ym90dG9tOyBwYWRkaW5nOjAgMHB4IDEwcHggMDsgbWFyZ2luLWJvdHRvbToxNXB4OyBsaW5lLWhlaWdodDozMHB4OyBmb250LXNpemU6MS41cmVtIDsgY29sb3I6IzI0MjQyNDtmb250LXdlaWdodDpub3JtYWwgfSAjc2VhcmNoQ29udGFpbmVyUGFyZW50IC5wYWdlX25hbWU1Om5vdCg6Zmlyc3QtY2hpbGQpIHsgbWFyZ2luLXRvcDozMHB4OyB9IC5ib3gyX3RleHR7aGVpZ2h0OmF1dG87IHdpZHRoOjEwMCU7IGZsb2F0OmxlZnQ7IGxpbmUtaGVpZ2h0OjE4cHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMyNDI0MjQ7IH0gLmJveDJfdGV4dCBweyBsaW5lLWhlaWdodDoxOHB4OyBmb250LXNpemU6MC44NzVyZW0gO2NvbG9yOiMwMDAwMDA7IG1hcmdpbi1ib3R0b206MjBweDt9IC5wb3NpdGl2ZVJhdGluZ1R4dCBwe2ZvbnQtc2l6ZToxcmVtIDt9IC5wb3NpdGl2ZVJhdGluZ1R4dCBoMywgLnBvc2l0aXZlUmF0aW5nVHh0IGg0e2ZvbnQtd2VpZ2h0Om5vcm1hbDt9IC5wb3NpdGl2ZVJhdGluZ1R4dCAuYnRuLWRlZmF1bHR7dGV4dC10cmFuc2Zvcm06bm9uZTt9IC5wb3NpdGl2ZVJhdGluZ1R4dCAuYnRuLWRlZmF1bHR7Zm9udC1zaXplOjEuMjVyZW0gO30gLmV0YXBle3dpZHRoOmF1dG87IGhlaWdodDo0NnB4OyBmbG9hdDpsZWZ0OyBtYXJnaW4tcmlnaHQ6MjBweDt9IC50ZXh0MXt3aWR0aDphdXRvOyBoZWlnaHQ6NDZweDsgZmxvYXQ6bGVmdDsgcGFkZGluZzowIDBweCAwcHggMHB4O30gLnRleHQxIGF7d2lkdGg6YXV0bzsgaGVpZ2h0OjQ2cHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MCAwcHggMHB4IDBweDsgbGluZS1oZWlnaHQ6NDZweDsgdGV4dC1hbGlnbjpsZWZ0OyBmb250LXNpemU6MS44NzVyZW0gOyBjb2xvcjojNDM0MzQzOyBmb250LXdlaWdodDpib2xkOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1zaGFkb3c6MXB4IDFweCAxcHggI2YzZjNmMzsgfSAudGV4dDEgYTpob3Zlcnt3aWR0aDphdXRvOyBoZWlnaHQ6NDZweDsgZmxvYXQ6bGVmdDsgcGFkZGluZzowIDBweCAwcHggMHB4OyBsaW5lLWhlaWdodDo0NnB4OyB0ZXh0LWFsaWduOmxlZnQ7IGZvbnQtc2l6ZToxLjg3NXJlbSA7IGNvbG9yOiM0MzQzNDM7IGZvbnQtd2VpZ2h0OmJvbGQ7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LXNoYWRvdzoxcHggMXB4IDFweCAjZjNmM2YzOyB9IC50ZXh0MSBhLmFjdGl2ZXt3aWR0aDphdXRvOyBoZWlnaHQ6NDZweDsgZmxvYXQ6bGVmdDsgcGFkZGluZzowIDBweCAwcHggMHB4OyBsaW5lLWhlaWdodDo0NnB4OyB0ZXh0LWFsaWduOmxlZnQ7IGZvbnQtc2l6ZToxLjg3NXJlbSA7IGNvbG9yOiM0MzQzNDM7IGZvbnQtd2VpZ2h0OmJvbGQ7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LXNoYWRvdzoxcHggMXB4IDFweCAjZjNmM2YzOyB9IC5vbmUxe3dpZHRoOjQ2cHg7IGhlaWdodDo0NnB4OyBmbG9hdDpyaWdodDsgbWFyZ2luLWxlZnQ6MTBweDt9IC5vbmUxIGF7d2lkdGg6NDZweDsgaGVpZ2h0OjQ2cHg7IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvMV9yb3VuZC5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDsgZm9udC1zaXplOjIuMjVyZW0gOyBmb250LXdlaWdodDpib2xkOyBjb2xvcjojRkZGRkZGOyBsaW5lLWhlaWdodDo0NnB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7fSAub25lMSBhOmhvdmVye3dpZHRoOjQ2cHg7IGhlaWdodDo0NnB4OyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzLzFfaG92ZXIucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQ7IGZvbnQtc2l6ZToyLjI1cmVtIDsgY29sb3I6IzAwMDAwMDsgbGluZS1oZWlnaHQ6NDZweDsgZm9udC13ZWlnaHQ6Ym9sZDsgdGV4dC1hbGlnbjpjZW50ZXI7IHRleHQtZGVjb3JhdGlvbjpub25lO30gLm9uZTEgYS5hY3RpdmV7d2lkdGg6NDZweDsgaGVpZ2h0OjQ2cHg7IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvMV9ob3Zlci5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDsgZm9udC1zaXplOjIuMjVyZW0gOyBjb2xvcjojMDAwMDAwOyBsaW5lLWhlaWdodDo0NnB4OyBmb250LXdlaWdodDpib2xkOyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7fSAuc2VsZWN0aW9ubmV6e3dpZHRoOmF1dG87IGhlaWdodDphdXRvIDsgZmxvYXQ6bGVmdDsgcGFkZGluZy1yaWdodDo1cHg7IHBhZGRpbmctbGVmdDozcHg7IHBhZGRpbmctdG9wOjRweDsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzFhMWExYTsgbGluZS1oZWlnaHQ6MjJweDsgZm9udC13ZWlnaHQ6Ym9sZDsgdGV4dC1hbGlnbjpsZWZ0OyB0ZXh0LWRlY29yYXRpb246bm9uZTt9IC5mb3Jtc19ib3gyMntib3gtc2l6aW5nOmJvcmRlci1ib3g7IHdpZHRoOjEwMCU7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46MCAwIDEwcHggMDsgfSAud2l0aF9ib3JkZXIgeyBib3JkZXI6MXB4IHNvbGlkICNkNGQ0ZDQ7IC1tb3otYm9yZGVyLXJhZGl1czo4cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo4cHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjhweDsgcGFkZGluZzowIDE2cHg7IH0gLlByZW5vbXt3aWR0aDoyNzlweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMyNDI0MjQgOyBwYWRkaW5nOjhweCAwIDEwcHggMDt9IC5QcmVub20gc3BhbnsgZm9udC1zaXplOjEuMzc1cmVtIDsgY29sb3I6I2ZmMDEwMTt9IC5QcmVub20ye3dpZHRoOjMyMXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzI0MjQyNCA7IHBhZGRpbmc6OHB4IDAgMTBweCAwO30gLlByZW5vbTIgc3BhbnsgZm9udC1zaXplOjEuMzc1cmVtIDsgY29sb3I6I2ZmMDEwMTt9IC5QcmVub20ze3dpZHRoOjI3OXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzI0MjQyNCA7IHBhZGRpbmc6MHB4IDAgMTBweCAwO30gLlByZW5vbTR7d2lkdGg6MzIxcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMjQyNDI0IDsgcGFkZGluZzowcHggMCAxMHB4IDA7fSAuUHJlbm9tNXt3aWR0aDoyNzlweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMyNDI0MjQgOyBwYWRkaW5nOnB4IDAgMTBweCAwO30gLlByZW5vbTZ7d2lkdGg6MjE0cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMjQyNDI0IDsgcGFkZGluZzowcHggMCAxMHB4IDA7fSAuUHJlbm9tN3t3aWR0aDoxMDdweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMyNDI0MjQgOyBwYWRkaW5nOjBweCAwIDEwcHggMDt9IC5QcmVub204e3dpZHRoOjI3OXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZzpweCAwIDEwcHggMDsgZGlzcGxheTpibG9ja30gLlByZW5vbTl7d2lkdGg6MjE0cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjBweCAwIDEwcHggMDtkaXNwbGF5OmJsb2NrfSAuUHJlbm9tMTB7d2lkdGg6MTA3cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjBweCAwIDEwcHggMDtkaXNwbGF5OmJsb2NrfSAudGV4dDE1e3dpZHRoOjI4NXB4OyBmb250LXNpemU6MC44MTNyZW0gOyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgY29sb3I6IzI0MjQyNCA7IHBhZGRpbmc6MHB4IDAgM3B4IDA7fSAudGV4dDE2e3dpZHRoOjE3MnB4OyBmb250LXNpemU6MC44MTNyZW0gOyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgY29sb3I6IzI0MjQyNCA7IHBhZGRpbmc6MHB4IDAgM3B4IDA7fSAudGV4dDE3e3dpZHRoOjExMnB4OyBmb250LXNpemU6MC44MTNyZW0gOyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgY29sb3I6IzI0MjQyNCA7IHBhZGRpbmc6MHB4IDAgM3B4IDA7fSAudGV4dDE4e3dpZHRoOjI4NXB4OyBmb250LXNpemU6MC44MTNyZW0gOyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgY29sb3I6IzI0MjQyNCA7IHBhZGRpbmc6OHB4IDAgM3B4IDA7fSAudGV4dDE1IHNwYW57IGZvbnQtc2l6ZToxLjM3NXJlbSA7IGNvbG9yOiNmZjAxMDE7fSAuYnV0dG9uNXt3aWR0aDoyODVweDsgbWFyZ2luLWJvdHRvbTozMHB4OyBtYXJnaW4tdG9wOjcwcHg7IGZsb2F0OmxlZnQ7IG1hcmdpbi1yaWdodDo1cHg7IHRleHQtYWxpZ246cmlnaHQ7IH0gLmJveF9kYXRle3dpZHRoOjE2N3B4OyBtYXJnaW4tYm90dG9tOjEwcHg7IGZsb2F0OmxlZnQ7IHBhZGRpbmctdG9wOjFweDsgbWFyZ2luLXJpZ2h0OjVweDt9IC5ib3hfZGF0ZTJ7d2lkdGg6MTA3cHg7IG1hcmdpbi1ib3R0b206MTBweDsgZmxvYXQ6bGVmdDsgbWFyZ2luLXJpZ2h0OjVweDsgcGFkZGluZy10b3A6MHB4O30gLmJveF9kYXRlM3t3aWR0aDo4MHB4OyBtYXJnaW4tYm90dG9tOjEwcHg7IGZsb2F0OmxlZnQ7IG1hcmdpbi1yaWdodDo1cHg7fSBzcGFuLmFzdGt7IGNvbG9yOiNGRjAxMDE7Zm9udC1zaXplOjAuNjg4cmVtIDtmbG9hdDpsZWZ0O3BhZGRpbmctcmlnaHQ6M3B4OyB9IC5ib3g2MXt3aWR0aDoyODBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbi10b3A6MTBweDsgZGlzcGxheTpibG9jazsgY2xlYXI6Ym90aDsgfSAuYm94NjE2Nnt3aWR0aDoyODBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbi10b3A6MTBweDsgfSAuUG9saXRpcXVle3dpZHRoOmF1dG87IG1hcmdpbi1ib3R0b206MTBweDsgZmxvYXQ6bGVmdDsgbWFyZ2luLXJpZ2h0OjVweDsgcGFkZGluZzowIDJweCAwcHggMnB4OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMGQ1OWFmOyBsaW5lLWhlaWdodDoyMnB4OyB9IC5Qb2xpdGlxdWUgYXsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzBkNTlhZjsgbGluZS1oZWlnaHQ6MjRweDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGJvcmRlci1ib3R0b206MnB4IHNvbGlkICM2YjkxYmQ7IHRleHQtZGVjb3JhdGlvbjpub25lOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2xpbmUzLnBuZykgYm90dG9tIGxlZnQgcmVwZWF0LXg7IGJhY2tncm91bmQtcG9zaXRpb246Ym90dG9tO30gLlBvbGl0aXF1ZSBhOmhvdmVyeyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMjQyNDI0OyBsaW5lLWhlaWdodDoyNHB4OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2xpbmU0LnBuZykgYm90dG9tIGxlZnQgcmVwZWF0LXg7IGJhY2tncm91bmQtcG9zaXRpb246Ym90dG9tOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgYm9yZGVyLWJvdHRvbToycHggc29saWQgIzI0MjQyNDt9IC50ZXh0MTU1e3dpZHRoOjI4NXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzI0MjQyNCA7IHBhZGRpbmc6MHB4IDAgM3B4IDA7fSAudGV4dDE1NWNoa3toZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzI0MjQyNCA7IHBhZGRpbmc6MHB4IDEwcHggMTBweCAxNXB4O3RleHQtYWxpZ246bGVmdDt9IC5WZXVpbGxlent3aWR0aDo2MTdweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MTdweCAwOyBmb250LXNpemU6MS4zNzVyZW0gOyBjb2xvcjojMDAwMDAwO2ZvbnQtd2VpZ2h0Om5vcm1hbH0gLlZldWlsbGV6IHNwYW57dGV4dC1hbGlnbjpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMjQyNDI0OyBsaW5lLWhlaWdodDoyMnB4O30gLlZldWlsbGV6IHNwYW4gYXsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzI0MjQyNDsgZmxvYXQ6cmlnaHQ7IGxpbmUtaGVpZ2h0OjIycHg7IHRleHQtZGVjb3JhdGlvbjpub25lOyBib3JkZXItYm90dG9tOjJweCBzb2xpZCAjMjQyNDI0OyBkaXNwbGF5OmJsb2NrfSAuVmV1aWxsZXogc3BhbiBhOmhvdmVyeyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMDA0NDZmOyBmbG9hdDpyaWdodDsgbGluZS1oZWlnaHQ6MjJweDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGJvcmRlci1ib3R0b206MnB4IHNvbGlkICMwMDQ0NmY7IGRpc3BsYXk6YmxvY2s7fSAuSHlwb3RoZXF1ZXt3aWR0aDoxOTVweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiMyNDI0MjQgOyBwYWRkaW5nOjA7IGxpbmUtaGVpZ2h0OjUwcHg7fSAuSHlwb3RoZXF1ZTIye3dpZHRoOjIyNHB4OyBtYXJnaW4tYm90dG9tOjEwcHg7IGZsb2F0OmxlZnQ7fSAuSHlwb3RoZXF1ZTMze3dpZHRoOjUwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojMjQyNDI0IDsgcGFkZGluZzowcHggMCAxMHB4IDA7IGxpbmUtaGVpZ2h0OjM1cHg7fSAuY2l2aXF1ZXt3aWR0aDoxMzBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiMyNDI0MjQgOyBwYWRkaW5nOjBweCAwIDNweCAwO30gLlJ1ZXt3aWR0aDoyOTBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiMyNDI0MjQgOyBwYWRkaW5nOjBweCAwIDNweCAwO30gLkFwcHt3aWR0aDoxODBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiMyNDI0MjQgOyBwYWRkaW5nOjBweCAwIDNweCAwO30gLmZvcm1zMTAwe3dpZHRoOjEzMHB4OyBtYXJnaW4tYm90dG9tOjEwcHg7IGZsb2F0OmxlZnQ7fSAuZm9ybXMxMDF7d2lkdGg6MjkwcHg7IG1hcmdpbi1ib3R0b206MTBweDsgZmxvYXQ6bGVmdDt9IC5mb3JtczEwMnt3aWR0aDoxODBweDsgbWFyZ2luLWJvdHRvbToxMHB4OyBmbG9hdDpsZWZ0O30gLlZpbGxleyB3aWR0aDoyNzBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiMyNDI0MjQgOyBwYWRkaW5nOjBweCAwIDEzcHggMDt9IC5Qcm92aW5jZXsgd2lkdGg6MTUwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojMjQyNDI0IDsgcGFkZGluZzowcHggMCAxM3B4IDA7fSAuQ29kZXsgd2lkdGg6MTYwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojMjQyNDI0IDsgcGFkZGluZzowcHggMCAxM3B4IDA7fSAuZm9ybXMxMDN7IHdpZHRoOjEwMCU7IG1hcmdpbi10b3A6MHB4OyB9IC5mb3JtczEwNHsgd2lkdGg6MTAwJTsgbWFyZ2luLXRvcDowcHg7IH0gLmZvcm1zMTA1eyB3aWR0aDoxMDAlOyBtYXJnaW4tdG9wOjBweDsgfSAuZm9ybXMxMDZ7IHdpZHRoOjEwMCU7IG1hcmdpbi1ib3R0b206MTBweDsgZmxvYXQ6bGVmdH0gLlR5cGV7d2lkdGg6MjAwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojMjQyNDI0IDsgcGFkZGluZzowcHggMCAzcHggMDt9IC5ib3g2MDB7d2lkdGg6NjAwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nLWxlZnQ6MHB4OyBwYWRkaW5nLWJvdHRvbToyMHB4OyBtYXJnaW4tcmlnaHQ6MHB4O30gLkRlbWFuZGU1NXttYXJnaW46MTVweCAwOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2QucG5nKSAxMHB4IHRvcCBuby1yZXBlYXQ7IHBhZGRpbmc6MCAwIDAgNjJweDsgbGluZS1oZWlnaHQ6NDBweDsgZm9udC1zaXplOjEuMTI1cmVtIDsgY29sb3I6IzE5MTkxOTsgZm9udC13ZWlnaHQ6Ym9sZDt9IC5EZW1hbmRlNjZ7bWFyZ2luOjE1cHggMDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9jYWwyLnBuZykgMTBweCB0b3Agbm8tcmVwZWF0OyBwYWRkaW5nOjAgMCAwIDYycHg7IGxpbmUtaGVpZ2h0OjIwcHg7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGNvbG9yOiMxOTE5MTk7IGZvbnQtd2VpZ2h0OmJvbGQ7fSAuRGVtYW5kZTc3e21hcmdpbjoxNXB4IDA7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvbS5wbmcpIDEwcHggdG9wIG5vLXJlcGVhdDsgcGFkZGluZzowIDAgMCA2MnB4OyBsaW5lLWhlaWdodDo0MHB4OyBmb250LXNpemU6MS4xMjVyZW0gOyBjb2xvcjojMTkxOTE5OyBmb250LXdlaWdodDpib2xkO30gLkRlbWFuZGU4OHttYXJnaW46MTVweCAwOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2YucG5nKSAxMHB4IHRvcCBuby1yZXBlYXQ7IHBhZGRpbmc6MCAwIDAgNjJweDsgbGluZS1oZWlnaHQ6MjBweDsgZm9udC1zaXplOjEuMTI1cmVtIDsgY29sb3I6IzE5MTkxOTsgZm9udC13ZWlnaHQ6Ym9sZDt9IC5EZW1hbmRlODg3e21hcmdpbjoxNXB4IDA7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvZi5wbmcpIDEwcHggdG9wIG5vLXJlcGVhdDsgcGFkZGluZzowIDAgMCA2MnB4OyBsaW5lLWhlaWdodDoyMHB4OyBmb250LXNpemU6MS4xMjVyZW0gOyBjb2xvcjojMTkxOTE5OyBmb250LXdlaWdodDpib2xkO30gLmJveDJfdGV4dDJ7d2lkdGg6NjQ4cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjEwcHggMHB4IDE1cHggMjNweDsgbGluZS1oZWlnaHQ6MThweDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzI0MjQyNDt9IC5ib3hfYnJhbmR7d2lkdGg6NjQ4cHg7IGZsb2F0OmxlZnQ7cGFkZGluZzoyMHB4IDBweCAxNXB4IDBweDsgbGluZS1oZWlnaHQ6MThweDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzI0MjQyNDsgfSAuYm94Ml90ZXh0M3t3aWR0aDo2NjFweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MCAwcHggMTBweCAxMHB4OyBtYXJnaW4tdG9wOjE1cHg7IGxpbmUtaGVpZ2h0OjE4cHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMyNDI0MjQ7IH0gLmNhcl9ib3h7d2lkdGg6MjA4cHg7IGhlaWdodDoxMzBweDsgZmxvYXQ6bGVmdDsgbWFyZ2luOjAgOHB4IDAgMDsgcGFkZGluZzowOyBib3JkZXI6MDt9IC5jYXJfaW1hZ2Vze3dpZHRoOjIwOHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgYm9yZGVyOjA7IHRleHQtYWxpZ246Y2VudGVyO30gLmNhcl90ZXh0e3dpZHRoOjIwOHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbGluZS1oZWlnaHQ6MTBweDsgZm9udC1zaXplOjAuODEzcmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgY29sb3I6IzAwMDAwMDsgdGV4dC1hbGlnbjpjZW50ZXJ9IC5jYXJfdGV4dCBhIHt0ZXh0LWRlY29yYXRpb246bm9uZTsgY29sb3I6IzAwMDAwMDsgbGluZS1oZWlnaHQ6MS4xO30gLmNhcl90ZXh0IGE6aG92ZXIgeyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyBjb2xvcjojMDAwMDAwfSAuY2FyX2JveDJ7IGhlaWdodDphdXRvOyBtYXJnaW46MCAxMHB4IDEwcHggMDsgb3ZlcmZsb3c6aGlkZGVuOyBib3JkZXItcmFkaXVzOjVweDsgLW1vei1ib3JkZXItcmFkaXVzOjVweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjVweDsgYmFja2dyb3VuZC1jb2xvcjojRkZGOyAtbW96LWJveC1zaGFkb3c6MCAwIDEwcHggMXB4IHJnYmEoMCwwLDAsMC4yKTsgLXdlYmtpdC1ib3gtc2hhZG93OjAgMCAxMHB4IDFweCByZ2JhKDAsMCwwLDAuMik7IGJveC1zaGFkb3c6MCAwIDEwcHggMXB4IHJnYmEoMCwwLDAsMC4yKTsgfSAuY2FyX2JveDJfdGF4dHtoZWlnaHQ6YXV0bzsgcGFkZGluZy1ib3R0b206NXB4OyBmb250LXNpemU6MXJlbSA7IGNvbG9yOiMzMDMwMzA7IHRleHQtYWxpZ246bGVmdDsgbGluZS1oZWlnaHQ6MjFweDt9IC5waWNfYm94MnsgYm9yZGVyOjFweCBzb2xpZCAjQUFBOyBiYWNrZ3JvdW5kOiNGRkZGRkY7IGJvcmRlci1yYWRpdXM6M3B4OyAtbW96LWJvcmRlci1yYWRpdXM6M3B4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4OyB9IC5waWNfYm94MiBpbWcge3dpZHRoOjEwMCU7fSAucHJpbnR7d2lkdGg6MTkycHg7IGhlaWdodDphdXRvOyBtYXJnaW46MDsgcGFkZGluZy10b3A6N3B4O30gLnByaW50IGF7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvcHJpbnQucG5nKSAxMHB4IHRvcCBuby1yZXBlYXQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMzMDMwMzA7IHBhZGRpbmctbGVmdDozNXB4OyB0ZXh0LWRlY29yYXRpb246bm9uZTt9IC5wcmludCBhOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3ByaW50X2hvdmVyLnBuZykgMTBweCB0b3Agbm8tcmVwZWF0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMDA0YTc4OyBwYWRkaW5nLWxlZnQ6MzVweDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0gLnBhZ2VfbmFtZV9jb257d2lkdGg6ODQwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjIwcHggMjFweCAxMHB4IDIwcHg7IH0gLmhvbWUye3dpZHRoOjIzMHB4OyBoZWlnaHQ6YXV0bzsgbWFyZ2luLWxlZnQ6MjBweDsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjFyZW0gOyBjb2xvcjojMzczNzM3OyBsaW5lLWhlaWdodDoyNHB4OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSAuaG9tZTN7d2lkdGg6NTEwcHg7IGhlaWdodDphdXRvOyBtYXJnaW4tbGVmdDoxMHB4OyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MXJlbSA7IGNvbG9yOiMzNzM3Mzc7IGxpbmUtaGVpZ2h0OjI0cHg7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9IC50ZXh0MjB7d2lkdGg6MzEwcHg7IGhlaWdodDozMnB4OyBmbG9hdDpsZWZ0OyBtYXJnaW4tcmlnaHQ6MTBweDsgbWFyZ2luLWJvdHRvbToxMHB4OyBsaW5lLWhlaWdodDozMnB4OyB0ZXh0LWFsaWduOmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwZDBkMGQ7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9IC50ZXh0MjAgc3BhbnsgY29sb3I6I0ZGMDAwMDt9IC5pbnB1dDI1e3dpZHRoOjMxMHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luLWJvdHRvbToxMHB4OyB9IC52ZXV4e3dpZHRoOjYwMHB4OyBmbG9hdDpsZWZ0OyBtYXJnaW4tYm90dG9tOjEwcHg7IHBhZGRpbmctdG9wOjVweDsgbGluZS1oZWlnaHQ6MTdweDsgdGV4dC1hbGlnbjpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMGQwZDBkOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgbWFyZ2luLWJvdHRvbToxMHB4O30gLk5vc3t3aWR0aDoyNjVweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6IzAwMDAwMDsgLW1vei1ib3JkZXItcmFkaXVzOjVweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjVweDsgYm9yZGVyLXJhZGl1czo1cHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjVweDsgcGFkZGluZzoxNXB4IDAgMTVweCAxNXB4OyBtYXJnaW46NXB4IDA7IGZvbnQtc2l6ZToxLjVyZW0gOyBjb2xvcjojRkZGRkZGO30gLmJ1dHRvbl9qb2JvZmZlciB7IGRpc3BsYXk6YmxvY2s7IGxpbmUtaGVpZ2h0OjUwcHg7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2ljb25fZW1wbG95LnBuZycpIG5vLXJlcGVhdCBzY3JvbGwgMHB4IDBweCByZ2IoMjMxLCAyMzIsIDIzMik7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXdlaWdodDpib2xkOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZy1sZWZ0OjQwcHg7IGJvcmRlci1yYWRpdXM6M3B4OyB9IC5idXR0b25fMSwgLmJ1dHRvbl8yLCAuYnV0dG9uXzMgeyBtYXJnaW4tYm90dG9tOjEwcHg7IH0gLmJ1dHRvbl8xIGEsIC5idXR0b25fMiBhLCAuYnV0dG9uXzMgYSB7IGRpc3BsYXk6YmxvY2s7IHdpZHRoOjI0OXB4OyBoZWlnaHQ6MzhweDsgYm9yZGVyLXJhZGl1czozcHg7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjsgbGluZS1oZWlnaHQ6MzhweDsgfSAuYnV0dG9uXzEgYSwgLmJ1dHRvbl8yIGEgeyBiYWNrZ3JvdW5kOiNlNGRjZDM7IGNvbG9yOiMwMDAwMDA7IGJvcmRlcjoxcHggc29saWQgIzAwMDAwMDsgfSAuYnV0dG9uXzEgYTpob3ZlciwgLmJ1dHRvbl8yIGE6aG92ZXJ7IGJhY2tncm91bmQ6IzAwN2ZhNTsgY29sb3I6I2ZmZmZmZjsgYm9yZGVyOjFweCBzb2xpZCAjZmZmZmZmOyB9IC5idXR0b25fMyBheyBiYWNrZ3JvdW5kOiMwMDA7IGNvbG9yOiNGRkY7IGJvcmRlcjoxcHggc29saWQgIzAwMDsgfSAuYnV0dG9uXzMgYTpob3ZlcnsgYmFja2dyb3VuZDojRkZGOyBjb2xvcjojMDAwOyB9IC5mYkNvbm5lY3RCdG4geyBwb3NpdGlvbjpyZWxhdGl2ZTsgYmFja2dyb3VuZC1jb2xvcjojMzA1ODk4OyBjb2xvcjojZmZmOyBib3JkZXItcmFkaXVzOjNweDsgbGluZS1oZWlnaHQ6MzhweDsgbWFyZ2luLWJvdHRvbToxMHB4OyBmb250LXNpemU6MC44NzVyZW0gOyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAjY2hhdC13aWRnZXQtY29udGFpbmVyLCAjbGl2ZV9jaGF0X3N0YXR1cywgI0NoYXREaXYsICNwb2RpdW0tYnViYmxlLCAjamNvbnQsIGpkaXYsICN0c3dfd3JhcHBlciwgLmZiX2RpYWxvZywgLmZiX2lmcmFtZV93aWRnZXQsIC5mYi1jdXN0b21lcmNoYXQsIC5lay1jaGF0LCAubWF0YWRvci1saXZlY2hhdC0xMjM3ODktbWFpbi13cmFwcGVyLCAjbWF0YWRvci1jb25uZWN0LXRleHQtbGFiZWwsICNtYXRhZG9yLWNvbm5lY3QtdGV4dC1sYWJlbC1iYWRnZXsgei1pbmRleDoxMDAwMCAhaW1wb3J0YW50OyB9IHN2Zy5jaGF0LWJ1YmJsZXsgd2lkdGg6cmV2ZXJ0OyBoZWlnaHQ6cmV2ZXJ0OyB9IC5mYkNvbm5lY3RCdG4gLmZhLWZhY2Vib29reyBjb2xvcjojMzA1ODk4OyB9IGEuZmFjZWJvb2tDb25uZWN0QnRuIHsgY29sb3I6I2ZmZjsgZGlzcGxheTppbmxpbmUtYmxvY2s7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LWZhbWlseTppbmhlcml0OyB9IC5idXR0b25fdmlkZW9zX2ZyIGEsIC5idXR0b25fdmlkZW9zX2VuIGF7IHdpZHRoOjI0OXB4OyBoZWlnaHQ6MzhweDsgZGlzcGxheTpibG9jazsgfSAuYnV0dG9uX3ZpZGVvc19mciBhe2JhY2tncm91bmQ6dXJsKCIvaW1hZ2VzL3ZpZGVvcy1idXR0b25fZnIucG5nIikgbm8tcmVwZWF0IDBweCAwcHggdHJhbnNwYXJlbnQ7fSAuYnV0dG9uX3ZpZGVvc19mciBhOmhvdmVye2JhY2tncm91bmQ6dXJsKCIvaW1hZ2VzL3ZpZGVvcy1idXR0b24taG92ZXJfZnIucG5nIikgbm8tcmVwZWF0IDBweCAwcHggdHJhbnNwYXJlbnQ7fSAuYnV0dG9uX3ZpZGVvc19lbiBhe2JhY2tncm91bmQ6dXJsKCIvaW1hZ2VzL3ZpZGVvcy1idXR0b25fZW4ucG5nIikgbm8tcmVwZWF0IDBweCAwcHggdHJhbnNwYXJlbnQ7fSAuYnV0dG9uX3ZpZGVvc19lbiBhOmhvdmVye2JhY2tncm91bmQ6dXJsKCIvaW1hZ2VzL3ZpZGVvcy1idXR0b24taG92ZXJfZW4ucG5nIikgbm8tcmVwZWF0IDBweCAwcHggdHJhbnNwYXJlbnQ7fSAuYnV0dG9uX3ZpZGVvX2ZyIGEsIC5idXR0b25fdmlkZW9fZW4gYXsgd2lkdGg6MTkzcHg7IGhlaWdodDo1MXB4OyBkaXNwbGF5OmJsb2NrOyB9IC5idXR0b25fdmlkZW9fZnIgYXtiYWNrZ3JvdW5kOnVybCgiL2ltYWdlcy92aWRlby1idXR0b25fZnIucG5nIikgbm8tcmVwZWF0IDBweCAwcHggdHJhbnNwYXJlbnQ7fSAuYnV0dG9uX3ZpZGVvX2ZyIGE6aG92ZXJ7YmFja2dyb3VuZDp1cmwoIi9pbWFnZXMvdmlkZW8tYnV0dG9uLWhvdmVyX2ZyLnBuZyIpIG5vLXJlcGVhdCAwcHggMHB4IHRyYW5zcGFyZW50O30gLmJ1dHRvbl92aWRlb19lbiBhe2JhY2tncm91bmQ6dXJsKCIvaW1hZ2VzL3ZpZGVvLWJ1dHRvbl9lbi5wbmciKSBuby1yZXBlYXQgMHB4IDBweCB0cmFuc3BhcmVudDt9IC5idXR0b25fdmlkZW9fZW4gYTpob3ZlcntiYWNrZ3JvdW5kOnVybCgiL2ltYWdlcy92aWRlby1idXR0b24taG92ZXJfZW4ucG5nIikgbm8tcmVwZWF0IDBweCAwcHggdHJhbnNwYXJlbnQ7fSAuYnV0dG9uX3VuZGVye3dpZHRoOjI0OXB4OyBwYWRkaW5nOjBweDsgbWFyZ2luOjEwcHggMHB4O30gLmJ1dHRvbl91bmRlciBheyB3aWR0aDoxMDAlO21pbi1oZWlnaHQ6MzhweDsgYm9yZGVyLXJhZGl1czozcHg7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjsgbGluZS1oZWlnaHQ6MzhweDsgdGV4dC1zaGFkb3c6bm9uZTsgZGlzcGxheTpibG9jayB9IC5idXR0b25fdW5kZXIgYTpob3ZlcnsgYm9yZGVyLXJhZGl1czozcHg7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjsgbGluZS1oZWlnaHQ6MzhweDsgdGV4dC1zaGFkb3c6MXB4IDFweCAxcHggIzAwMWUzMTsgfSAuYnV0dG9uX3VuZGVyLnByb21vIGF7YmFja2dyb3VuZC1jb2xvcjojZTgwZDBkOyBiYWNrZ3JvdW5kLWltYWdlOm5vbmU7IGNvbG9yOiNGRkY7IHdpZHRoOjIzN3B4OyBtYXJnaW4tbGVmdDo1cHg7fSAuYnV0dG9uX3VuZGVyLnByb21vMyBhe2JhY2tncm91bmQtY29sb3I6I2ZmMDAwMDsgYmFja2dyb3VuZC1pbWFnZTpub25lOyBjb2xvcjojRkZGOyB3aWR0aDoyMzdweDsgbWFyZ2luLWxlZnQ6NXB4O30gLmJ1dHRvbl91bmRlci5wcm9tbyBhOmhvdmVyLC5idXR0b25fdW5kZXIucHJvbW8yIGE6aG92ZXIsLmJ1dHRvbl91bmRlci5wcm9tbzMgYTpob3ZlcntiYWNrZ3JvdW5kLWltYWdlOnVybCgvaW1hZ2VzL2J1dHRvbl8xaG92ZXIucG5nKX0gLmJ1dHRvbl80e3dpZHRoOjI0OXB4OyBoZWlnaHQ6NTdweDsgZmxvYXQ6bGVmdDsgcGFkZGluZzowcHg7IG1hcmdpbi1ib3R0b206MTBweDt9IC5idXR0b25fNCBheyB3aWR0aDoyNDlweDsgaGVpZ2h0OjUwcHg7IHBhZGRpbmctdG9wOjdweDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9idXR0b25fNC5wbmcpIGxlZnQgdG9wIHJlcGVhdC14OyBib3JkZXItcmFkaXVzOjNweDtmb250LXNpemU6MS4xMjVyZW0gOyBjb2xvcjojRkZGRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IGxpbmUtaGVpZ2h0OjIycHg7IHRleHQtc2hhZG93OjFweCAxcHggMXB4ICMwMDFlMzE7IGRpc3BsYXk6YmxvY2sgfSAuYnV0dG9uXzQgYTpob3Zlcnt3aWR0aDoyNDlweDsgaGVpZ2h0OjUwcHg7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvYnV0dG9uXzRob3Zlci5wbmcpIGxlZnQgdG9wIHJlcGVhdC14OyBib3JkZXItcmFkaXVzOjNweDsgZm9udC1zaXplOjEuMTI1cmVtIDsgY29sb3I6I0ZGRkZGRjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyOyBsaW5lLWhlaWdodDoyMnB4OyB0ZXh0LXNoYWRvdzoxcHggMXB4IDFweCAjMDAxZTMxOyB9IC5jaGVja2JveDE1Mnt3aWR0aDphdXRvOyBoZWlnaHQ6MThweDsgZmxvYXQ6bGVmdDsgbWFyZ2luOjA7IHBhZGRpbmc6MCA2cHggMCAwOyBtYXJnaW4tdG9wOjA7IGJvcmRlcjowOyB0b3A6MDsgfSAuQmFzZTIye3dpZHRoOmF1dG87IGhlaWdodDoxOHB4OyBmbG9hdDpsZWZ0OyBtYXJnaW4tcmlnaHQ6NnB4OyBwYWRkaW5nOjZweCA2cHggMCAwOyBtYXJnaW4tdG9wOjA7IGJvcmRlcjowOyB0b3A6MDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzAwMDAwMDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7fSAuYm94OTQwX2xpbmV7d2lkdGg6OTQwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2xpbmUyNS5wbmcpIGxlZnQgYm90dG9tIHJlcGVhdC14OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmJvdHRvbTsgYm90dG9tOjA7fSAud2hpdGVfYm94e3dpZHRoOjk0MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDojRkZGRkZGOyBvdmVyZmxvdzpoaWRkZW47IC1tb3otYm9yZGVyLXJhZGl1cy10b3BsZWZ0OjZweDsgLW1vei1ib3JkZXItcmFkaXVzLXRvcHJpZ2h0OjZweDsgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbXJpZ2h0OjBweDsgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbWxlZnQ6MDsgLXdlYmtpdC1ib3JkZXItdG9wLWxlZnQtcmFkaXVzOjZweDsgLXdlYmtpdC1ib3JkZXItdG9wLXJpZ2h0LXJhZGl1czo2cHg7IC13ZWJraXQtYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MHB4OyAtd2Via2l0LWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MDsgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czo2cHg7IGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOjZweDsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowOyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowO30gLmJveDEwMHt3aWR0aDoyMjBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwZjFhMWU7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LWFsaWduOmxlZnQ7IHBhZGRpbmc6MTNweCAwIDE1cHggMTBweDt9IC5ib3gxMDF7d2lkdGg6MTc3cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMGYxYTFlOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmc6MTNweCAwIDE1cHg7YmFja2dyb3VuZDp1cmwoIi9pbWFnZXMvbGluZTI1LnBuZyIpIHJlcGVhdC14IHNjcm9sbCBjZW50ZXIgYm90dG9tICNEOUQ5RDk7fSAuYm94MTAye3dpZHRoOjE3N3B4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzBmMWExZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nOjEzcHggMCAxNXB4O30gLmJveDEwM3t3aWR0aDoxNzdweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwZjFhMWU7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZzoxM3B4IDAgMTVweDtiYWNrZ3JvdW5kOnVybCgiL2ltYWdlcy9saW5lMjUucG5nIikgcmVwZWF0LXggc2Nyb2xsIGNlbnRlciBib3R0b20gI0Q5RDlEOTt9IC5ib3gxMDR7d2lkdGg6MTc4cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMGYxYTFlOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmc6MTNweCAwIDE1cHg7fSAuYm94RXZlbnt3aWR0aDoxNzdweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwZjFhMWU7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZzoxM3B4IDBweCAwcHggMHB4O30gLmJveE9kZHt3aWR0aDoxNzdweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwZjFhMWU7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZzoxM3B4IDBweCAwcHggMHB4O2JhY2tncm91bmQ6dXJsKCIvaW1hZ2VzL2xpbmUyNS5wbmciKSByZXBlYXQteCBzY3JvbGwgY2VudGVyIGJvdHRvbSAjRDlEOUQ5O30gLmZpbGVpbnB1dC1idXR0b24sIC5maWxlaW5wdXQtYnV0dG9uOmhvdmVyIHsgZm9udC1zaXplOjAuODc1cmVtICFpbXBvcnRhbnQ7IGxpbmUtaGVpZ2h0OjMxcHg7IHBvc2l0aW9uOnJlbGF0aXZlOyB9IC5maWxlaW5wdXQtYnV0dG9uIGlucHV0IHsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDowOyByaWdodDowOyBtYXJnaW46MDsgb3BhY2l0eTowOyAtbXMtZmlsdGVyOidhbHBoYShvcGFjaXR5PTApJzsgY3Vyc29yOnBvaW50ZXI7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyB9IC5ib3g5NDBfbWFpbnt3aWR0aDo5NDBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MHB4IDAgMTVweCAwcHg7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvYm94MjAwX2JnLnBuZykgbGVmdCB0b3AgcmVwZWF0OyAtbW96LWJvcmRlci1yYWRpdXM6NnB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NnB4OyBib3JkZXItcmFkaXVzOjZweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6NnB4O30gLndoaXRlX2JveF90ZXh0Mnt3aWR0aDoyMzBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwZjFhMWU7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjt9IC53aGl0ZV9ib3hfdGV4dDN7YmFja2dyb3VuZC1jb2xvcjojRjZGNkY2O2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjQzlDOUM5O2JvcmRlci1yaWdodDoxcHggc29saWQgI0M5QzlDOTtwYWRkaW5nOjEwcHggMHB4O3dpZHRoOjE3NXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzBmMWExZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyO30gLndoaXRlX2JveF90ZXh0NHtwYWRkaW5nOjEwcHggMHB4O3dpZHRoOjE3N3B4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzBmMWExZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyO30gLndoaXRlX2JveF90ZXh0NXtiYWNrZ3JvdW5kLWNvbG9yOiNGNkY2RjY7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNDOUM5Qzk7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjQzlDOUM5O3BhZGRpbmc6MTBweCAwcHg7d2lkdGg6MTc1cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMGYxYTFlOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLndoaXRlX2JveF90ZXh0NntwYWRkaW5nOjEwcHggMHB4O3dpZHRoOjE3OHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzBmMWExZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyO30gLndoaXRlX2JveF9ibGFua3t3aWR0aDoxNzhweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwZjFhMWU7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjt9IC53aGl0ZV9ib3hfdGV4dE9kZHtwYWRkaW5nOjEwcHggMHB4O3dpZHRoOjE3N3B4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzBmMWExZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyO30gLndoaXRlX2JveF90ZXh0RXZlbntiYWNrZ3JvdW5kLWNvbG9yOiNGNkY2RjY7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNDOUM5Qzk7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjQzlDOUM5O3BhZGRpbmc6MTBweCAwcHg7d2lkdGg6MTc1cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMGYxYTFlOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7fSAuYm94X3RpdGxle3dpZHRoOjkzMHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZzozMHB4IDBweCA1cHggMTBweDsgZm9udC1zaXplOjAuOTM4cmVtIDsgY29sb3I6IzBmMWExZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtdHJhbnNmb3JtOm5vbmU7fSAuY3VzdG9tXzIyIHt3aWR0aDoyNDFweDsgaGVpZ2h0OjEyMXB4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjBweDsgbWFyZ2luOjAgOHB4IDhweCAwOyBiYWNrZ3JvdW5kOiNlYmViZWI7LW1vei1ib3JkZXItcmFkaXVzOjhweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjhweDsgYm9yZGVyLXJhZGl1czo4cHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjhweDtjdXJzb3I6cG9pbnRlcjt9IC5jdXN0b21fMjIyIHt3aWR0aDoyNDFweDsgaGVpZ2h0OjEyMXB4OyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjBweDsgbWFyZ2luOjAgOHB4IDhweCAwOyBiYWNrZ3JvdW5kOiNmZmZmZmY7LW1vei1ib3JkZXItcmFkaXVzOjhweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjhweDsgYm9yZGVyLXJhZGl1czo4cHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjhweDtjdXJzb3I6cG9pbnRlcjt9IC50b3lvdGFfY2Ftcnl7d2lkdGg6NDMwcHg7IGhlaWdodDoyMjJweDsgZmxvYXQ6bGVmdDsgcGFkZGluZzoyMHB4IDBweCAwcHggMTBweDsgbWFyZ2luLXJpZ2h0OjhweDsgYmFja2dyb3VuZDojZWJlYmViOy1tb3otYm9yZGVyLXJhZGl1czo4cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo4cHg7IGJvcmRlci1yYWRpdXM6OHB4OyAta2h0bWwtYm9yZGVyLXJhZGl1czo4cHg7fSAudG95b3RhX2NhbXJ5IGgxeyBmb250LXNpemU6MS44NzVyZW0gOyBjb2xvcjojMzAzMDMwOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZy1ib3R0b206NXB4O30gLnRveW90YV9jYW1yeSBweyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojNWE1YTVhOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZy1ib3R0b206OHB4O30gLmJveDJfZGV0YWlsc190ZXh0MjV7d2lkdGg6MTAwJTsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbjoxNXB4IGF1dG87IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXNpemU6MS44NzVyZW0gOyBjb2xvcjojRkZGRkZGOyBmb250LXdlaWdodDpib2xkOyB0ZXh0LXNoYWRvdzoxcHggMXB4IDRweCAjODI4MjgyO30gLmJveDJfZGV0YWlsc190ZXh0MjUgc3BhbnsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGNvbG9yOiNmZmY7IGZvbnQtd2VpZ2h0OmJvbGQ7fSAuYm94MTV7Y3Vyc29yOnBvaW50ZXI7d2lkdGg6YXV0bzsgaGVpZ2h0OjIwcHg7IGZsb2F0OmxlZnQ7IG1hcmdpbjowcHg7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvbWVudTEwX2JnLnBuZykgbGVmdCB0b3AgcmVwZWF0LXg7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czozcHg7IHBhZGRpbmc6NHB4IDJweDsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6I0ZGRjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IG1hcmdpbi1yaWdodDoxcHg7IH0gLmJveDE1IGgye2N1cnNvcjpwb2ludGVyO2Zsb2F0OmxlZnQ7IHBhZGRpbmctcmlnaHQ6NXB4OyBwYWRkaW5nLXRvcDowcHg7fSAuYm94MTUgaDIgYXtjdXJzb3I6cG9pbnRlcjtmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9pY29uMi5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDsgZm9udC13ZWlnaHQ6bm9ybWFsO3BhZGRpbmctbGVmdDo0MHB4OyBwYWRkaW5nLXJpZ2h0OjBweDsgbGluZS1oZWlnaHQ6MjBweDt9IC5ib3gxNSBoMiBhOmhvdmVye2N1cnNvcjpwb2ludGVyO2Zsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNGRkZGRkY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2ljb24yLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0OyBmb250LXdlaWdodDpub3JtYWw7IGxpbmUtaGVpZ2h0OjIwcHg7fSAuYm94MTZ7d2lkdGg6YXV0bzsgaGVpZ2h0OjIwcHg7IGZsb2F0OmxlZnQ7IG1hcmdpbjowcHg7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvbWVudTEwX2JnLnBuZykgbGVmdCB0b3AgcmVwZWF0LXg7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czozcHg7IHBhZGRpbmc6NHB4IDRweCA0cHggOHB4OyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgbWFyZ2luLXJpZ2h0OjFweDsgfSAuYm94MTYgaDJ7ZmxvYXQ6bGVmdDsgcGFkZGluZy1yaWdodDo1cHg7IHBhZGRpbmctdG9wOjBweDt9IC5ib3gxNiBoMiBhe2Zsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNGRkY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2ljb24zLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0OyBmb250LXdlaWdodDpub3JtYWw7cGFkZGluZy1sZWZ0OjIwcHg7IHBhZGRpbmctcmlnaHQ6MHB4OyBsaW5lLWhlaWdodDoyMHB4O30gLmJveDE2IGgyIGE6aG92ZXJ7ZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6cmdiKDAsMCwwKTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvaWNvbjMucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQ7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgbGluZS1oZWlnaHQ6MjBweDt9IC5ib3gxN3t3aWR0aDphdXRvOyBoZWlnaHQ6MjBweDsgZmxvYXQ6bGVmdDsgbWFyZ2luOjBweDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9tZW51MTBfYmcucG5nKSBsZWZ0IHRvcCByZXBlYXQteDsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDsgcGFkZGluZzo0cHggNHB4IDRweCA4cHg7IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNGRkY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBtYXJnaW4tcmlnaHQ6MXB4OyB9IC5ib3gxNyBoMntmbG9hdDpsZWZ0OyBwYWRkaW5nLXJpZ2h0OjVweDsgcGFkZGluZy10b3A6MHB4O30gLmJveDE3IGgyIGF7ZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6I0ZGRjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvaWNvbjQucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQ7IGZvbnQtd2VpZ2h0Om5vcm1hbDtwYWRkaW5nLWxlZnQ6MjVweDsgcGFkZGluZy1yaWdodDowcHg7IGxpbmUtaGVpZ2h0OjIwcHg7fSAuYm94MTcgaDIgYTpob3ZlcntmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMDA1ODlkOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9pY29uNC5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBsaW5lLWhlaWdodDoyMHB4O30gLmJveDE4e3dpZHRoOmF1dG87IGhlaWdodDoyMHB4OyBmbG9hdDpsZWZ0OyBtYXJnaW46MHB4OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL21lbnUxMF9iZy5wbmcpIGxlZnQgdG9wIHJlcGVhdC14OyAtbW96LWJvcmRlci1yYWRpdXM6M3B4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4OyBib3JkZXItcmFkaXVzOjNweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6M3B4OyBwYWRkaW5nOjRweCA0cHggNHB4IDhweDsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6I0ZGRjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IG1hcmdpbi1yaWdodDoxcHg7IH0gLmJveDE4IGgye2Zsb2F0OmxlZnQ7IHBhZGRpbmctcmlnaHQ6NXB4OyBwYWRkaW5nLXRvcDowcHg7fSAuYm94MTggaDIgYXtmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9pY29uNS5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDsgZm9udC13ZWlnaHQ6bm9ybWFsO3BhZGRpbmctbGVmdDoyNXB4OyBwYWRkaW5nLXJpZ2h0OjVweDsgbGluZS1oZWlnaHQ6MjBweDt9IC5ib3gxOCBoMiBhOmhvdmVye2Zsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwMDU4OWQ7IHRleHQtZGVjb3JhdGlvbjpub25lOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2ljb241LnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0OyBmb250LXdlaWdodDpub3JtYWw7IGxpbmUtaGVpZ2h0OjIwcHg7fSAuYm94MTl7d2lkdGg6YXV0bzsgaGVpZ2h0OjIwcHg7IGZsb2F0OmxlZnQ7IG1hcmdpbjowcHg7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvbWVudTEwX2JnLnBuZykgbGVmdCB0b3AgcmVwZWF0LXg7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czozcHg7IHBhZGRpbmc6NHB4OyBwYWRkaW5nLXJpZ2h0OjNweDsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6I0ZGRjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IG1hcmdpbi1yaWdodDoxcHg7IH0gLmJveDE5IGgye2Zsb2F0OmxlZnQ7IHBhZGRpbmctcmlnaHQ6NXB4OyBwYWRkaW5nLXRvcDowcHg7fSAuYm94MTkgaDIgYXtmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9pY29uNi5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDsgZm9udC13ZWlnaHQ6bm9ybWFsO3BhZGRpbmctbGVmdDoyNXB4OyBsaW5lLWhlaWdodDoyMHB4O30gLmJveDE5IGgyIGE6aG92ZXJ7ZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzAwNTg5ZDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvaWNvbjYucG5nKSBsZWZ0IHRvcCBuby1yZXBlYXQ7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgbGluZS1oZWlnaHQ6MjBweDt9IC5ib3gxMTE0e2N1cnNvcjpwb2ludGVyO3dpZHRoOmF1dG87IGhlaWdodDoyMHB4OyBmbG9hdDpsZWZ0OyBtYXJnaW46MHB4OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2J1dHRvbl8xLnBuZykgbGVmdCB0b3AgcmVwZWF0LXg7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czozcHg7IHBhZGRpbmc6NHB4OyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgbWFyZ2luLXJpZ2h0OjFweDsgfSAuYm94MTExNCBoMntjdXJzb3I6cG9pbnRlcjtmbG9hdDpsZWZ0OyBwYWRkaW5nLXJpZ2h0OjVweDsgcGFkZGluZy10b3A6MHB4O30gLmJveDExMTQgaDIgYXtjdXJzb3I6cG9pbnRlcjtmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9pY29uMi5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDsgZm9udC13ZWlnaHQ6bm9ybWFsO3BhZGRpbmctbGVmdDo0MHB4OyBwYWRkaW5nLXJpZ2h0OjEwcHg7IGxpbmUtaGVpZ2h0OjIwcHg7fSAuYm94MTExNCBoMiBhOmhvdmVye2N1cnNvcjpwb2ludGVyO2Zsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMwMDU4OWQ7IHRleHQtZGVjb3JhdGlvbjpub25lOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2ljb24yLnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0OyBmb250LXdlaWdodDpub3JtYWw7IGxpbmUtaGVpZ2h0OjIwcHg7fSAuU3BlY2lmaWNhdGlvbnN7d2lkdGg6NjUxcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46MHB4OyBwYWRkaW5nOjEwcHggMDsgZm9udC1zaXplOjEuNXJlbSA7IGNvbG9yOiMyNTI1MjU7IHRleHQtZGVjb3JhdGlvbjpub25lO2ZvbnQtd2VpZ2h0Om5vcm1hbDttYXJnaW4tdG9wOjVweDt9IC5Nb3JiaTJ7d2lkdGg6NjMxcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjEwcHg7IG1hcmdpbjowcHg7IGJhY2tncm91bmQ6I0VGRUZFRjsgLW1vei1ib3JkZXItcmFkaXVzOjNweDtmb250LXdlaWdodDpub3JtYWw7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czozcHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiM1YTVhNWE7IHRleHQtZGVjb3JhdGlvbjpub25lO30gLk1vcmJpMiBweyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojNWE1YTVhOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZy1ib3R0b206OHB4O30gLmJveDI4ODlfbWlke3dpZHRoOjI3OHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9yaWdodF9ib3g0X21pZC5wbmcpIGxlZnQgdG9wIHJlcGVhdC15OyBwYWRkaW5nOjAgNXB4IDIwcHggNXB4O30gLk1vcmJpMjJ7d2lkdGg6NjUxcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjBweDsgbWFyZ2luOjBweDsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzVhNWE1YTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7fSAuYm94Mjg4OV9taWQgaDF7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjEwcHggMTBweCAyMHB4IDEwcHg7IGZvbnQtc2l6ZToxLjg3NXJlbSA7IGNvbG9yOiMyODI4Mjg7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXdlaWdodDpub3JtYWw7IHRleHQtYWxpZ246bGVmdDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgbGluZS1oZWlnaHQ6MjRweH0gLl9ib3gyODg5X21pZCBoMXsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MTBweCAxMHB4IDIwcHggMTBweDsgZm9udC1zaXplOjEuODc1cmVtIDsgY29sb3I6IzI4MjgyODsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgdGV4dC1hbGlnbjpsZWZ0OyB0ZXh0LXRyYW5zZm9ybTpub25lOyBsaW5lLWhlaWdodDoyNHB4fSAuYm94Mjg4OV9taWQgaDJ7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjRweCAxMHB4IDIwcHggMTVweDsgZm9udC1zaXplOjEuNXJlbSA7IGNvbG9yOiMyODI4Mjg7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXdlaWdodDpub3JtYWw7IHRleHQtYWxpZ246bGVmdDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgbGluZS1oZWlnaHQ6MjNweH0gI3NpbWlsYXJUaXRsZXsgcGFkZGluZzo0cHggMTBweCA5cHggMTVweDsgZm9udC1zaXplOjEuNDM4cmVtIDsgZm9udC13ZWlnaHQ6bm9ybWFsOyB9IC50YWJlNXt3aWR0aDo2MzFweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IH0gLnRhYmU1IHVseyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgfSAudGFiZTUgdWwgbGl7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBtYXJnaW46MDsgZGlzcGxheTpibG9jazt9IC50YWJlNSB1bCBsaSBzcGFue2N1cnNvcjpwb2ludGVyOyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMzMjMyMzI7IHRleHQtZGVjb3JhdGlvbjpub25lOyBwYWRkaW5nOjdweCAxNXB4IDdweCAxNXB4OyBtYXJnaW4tcmlnaHQ6MnB4OyBmb250LXdlaWdodDpub3JtYWw7IGxpbmUtaGVpZ2h0OjE4cHg7IHRleHQtdHJhbnNmb3JtOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LXRyYW5zZm9ybTpub25lOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3RhYl9iZy5wbmcpIGxlZnQgdG9wIHJlcGVhdC14OyBmbG9hdDpsZWZ0OyAtbW96LWJvcmRlci1yYWRpdXMtdG9wbGVmdDo2cHg7IC1tb3otYm9yZGVyLXJhZGl1cy10b3ByaWdodDo2cHg7IC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21yaWdodDowcHg7IC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21sZWZ0OjA7IC13ZWJraXQtYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czo2cHg7IC13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NnB4OyAtd2Via2l0LWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjBweDsgLXdlYmtpdC1ib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjA7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6NnB4OyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czo2cHg7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MDsgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MDt9IC50YWJlNSB1bCBsaSBzcGFuOmhvdmVyeyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzdiMDAwMDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHBhZGRpbmc6N3B4IDE1cHggN3B4IDE1cHg7IG1hcmdpbi1yaWdodDoycHg7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgbGluZS1oZWlnaHQ6MThweDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IHRleHQtdHJhbnNmb3JtOm5vbmU7IGJhY2tncm91bmQ6ICNlYmViZWI7IGZsb2F0OmxlZnQ7IC1tb3otYm9yZGVyLXJhZGl1cy10b3BsZWZ0OjZweDsgLW1vei1ib3JkZXItcmFkaXVzLXRvcHJpZ2h0OjZweDsgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbXJpZ2h0OjBweDsgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbWxlZnQ6MDsgLXdlYmtpdC1ib3JkZXItdG9wLWxlZnQtcmFkaXVzOjZweDsgLXdlYmtpdC1ib3JkZXItdG9wLXJpZ2h0LXJhZGl1czo2cHg7IC13ZWJraXQtYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MHB4OyAtd2Via2l0LWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MDsgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czo2cHg7IGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOjZweDsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowOyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowOyB9IC50YWJlNSB1bCBsaSBzcGFuLmFjdGl2ZXtjdXJzb3I6ZGVmYXVsdDsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiM3YjAwMDA7IHRleHQtZGVjb3JhdGlvbjpub25lOyBwYWRkaW5nOjdweCAxNXB4IDdweCAxNXB4OyBtYXJnaW4tcmlnaHQ6MnB4OyBmb250LXdlaWdodDpub3JtYWw7IGxpbmUtaGVpZ2h0OjE4cHg7IHRleHQtdHJhbnNmb3JtOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LXRyYW5zZm9ybTpub25lOyBiYWNrZ3JvdW5kOiAjZWJlYmViOyBmbG9hdDpsZWZ0OyAtbW96LWJvcmRlci1yYWRpdXMtdG9wbGVmdDo2cHg7IC1tb3otYm9yZGVyLXJhZGl1cy10b3ByaWdodDo2cHg7IC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21yaWdodDowcHg7IC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21sZWZ0OjA7IC13ZWJraXQtYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czo2cHg7IC13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NnB4OyAtd2Via2l0LWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjBweDsgLXdlYmtpdC1ib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjA7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6NnB4OyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czo2cHg7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MDsgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MDsgfSAudGFiX2RldGFpbHMye3dpZHRoOjYzMXB4OyBwYWRkaW5nOjEwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOiNFRkVGRUY7IC1tb3otYm9yZGVyLXJhZGl1cy10b3BsZWZ0OjBweDsgLW1vei1ib3JkZXItcmFkaXVzLXRvcHJpZ2h0OjBweDsgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbXJpZ2h0OjZweDsgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbWxlZnQ6NnB4OyAtd2Via2l0LWJvcmRlci10b3AtbGVmdC1yYWRpdXM6MHB4OyAtd2Via2l0LWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOjBweDsgLXdlYmtpdC1ib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czo2cHg7IC13ZWJraXQtYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo2cHg7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6MHB4OyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowcHg7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NnB4OyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czo2cHg7fSAuYm94MjV7d2lkdGg6NDg3cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46MHB4OyBiYWNrZ3JvdW5kOiNFRkVGRUY7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czozcHg7IG1hcmdpbjowIDEzcHggMCAwOyBwYWRkaW5nOjIwcHggMCAyMHB4IDIwcHg7fSAuYm94MjZ7d2lkdGg6MjQzcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0O30gLmJveDI2IHVseyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgfSAuYm94MjYgdWwgbGl7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBtYXJnaW46MDsgZGlzcGxheTpibG9jazt9IC5ib3gyNiB1bCBsaSBzcGFueyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMzMjMyMzI7IHRleHQtZGVjb3JhdGlvbjpub25lOyBwYWRkaW5nOjAgN3B4IDdweCAwcHg7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgbGluZS1oZWlnaHQ6MThweDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgdGV4dC1hbGlnbjpsZWZ0O30gLmJveDI2IHVsIGxpIGF7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBtYXJnaW46MDsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzMyMzIzMjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHBhZGRpbmc6MCA3cHggN3B4IDIycHg7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgbGluZS1oZWlnaHQ6MThweDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgdGV4dC1hbGlnbjpsZWZ0OyB9IC5ib3gyNiB1bCBsaSBhOmhvdmVyeyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiM3YjAwMDA7IHBhZGRpbmc6MCA3cHggN3B4IDIycHg7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgbGluZS1oZWlnaHQ6MThweDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgdGV4dC1hbGlnbjpsZWZ0OyB0ZXh0LXRyYW5zZm9ybTpub25lOyB9IC5ib3gyNiB1bCBsaSBhLmFjdGl2ZXsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbjowOyBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojN2IwMDAwOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZzowIDdweCA3cHggMjJweDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBsaW5lLWhlaWdodDoxOHB4OyB0ZXh0LWFsaWduOmxlZnQ7IHRleHQtdHJhbnNmb3JtOm5vbmU7IH0gLmJveDI3e3dpZHRoOjEzMXB4OyBoZWlnaHQ6MjhweDsgZmxvYXQ6bGVmdDsgbWFyZ2luLWJvdHRvbTo4cHg7IH0gLmJveDMze3dpZHRoOjYzMXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDt9IC5ib3gzMyB1bHsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbjowOyBwYWRkaW5nOjA7IHRleHQtdHJhbnNmb3JtOm5vbmU7IH0gLmJveDMzIHVsIGxpeyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IGRpc3BsYXk6YmxvY2s7fSAuYm94MzMgdWwgbGkgYXsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbjowOyBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMzIzMjMyOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZzowIDdweCA3cHggMHB4OyBtYXJnaW4tcmlnaHQ6MnB4OyBmb250LXdlaWdodDpib2xkOyBsaW5lLWhlaWdodDoxOHB4OyB0ZXh0LXRyYW5zZm9ybTpub25lOyB0ZXh0LWFsaWduOmxlZnQ7IHRleHQtdHJhbnNmb3JtOm5vbmU7fSAuYm94MzMgdWwgbGkgc3BhbnsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbjowOyBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMzIzMjMyOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZzowIDdweCA3cHggMHB4OyBtYXJnaW4tcmlnaHQ6MnB4OyBmb250LXdlaWdodDpib2xkOyBsaW5lLWhlaWdodDoxOHB4OyB0ZXh0LXRyYW5zZm9ybTpub25lOyB0ZXh0LWFsaWduOmxlZnQ7IHRleHQtdHJhbnNmb3JtOm5vbmU7fSAuYm94MzMgcHsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzMyMzIzMjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHBhZGRpbmc6MCAwcHggN3B4IDBweDsgZm9udC13ZWlnaHQ6Ym9sZDsgbGluZS1oZWlnaHQ6MThweDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgdGV4dC1hbGlnbjpsZWZ0OyB9IC5ib3gzMyB1bCBsaSBhOmhvdmVyeyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiM3YjAwMDA7IHRleHQtZGVjb3JhdGlvbjpub25lOyBwYWRkaW5nOjAgN3B4IDdweCAyMnB4OyBtYXJnaW4tcmlnaHQ6MnB4OyBmb250LXdlaWdodDpib2xkOyBsaW5lLWhlaWdodDoxOHB4OyB0ZXh0LXRyYW5zZm9ybTpub25lOyB0ZXh0LWFsaWduOmxlZnQ7IHRleHQtdHJhbnNmb3JtOm5vbmU7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvYXJyb3c4LnBuZykgbGVmdCB0b3Agbm8tcmVwZWF0OyB9IC5Nb3RldXJ7d2lkdGg6MjgwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW4tYm90dG9tOjVweDt9IC5Nb3RldXIgaDJ7d2hpdGUtc3BhY2U6bm9ybWFsOyB3aWR0aDoxMzVweDsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuNzVyZW0gOyBjb2xvcjojMjAyMDIwO30gLk1vdGV1ciBoM3t3aGl0ZS1zcGFjZTpub3JtYWw7IHdpZHRoOjE0MHB4OyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44MTNyZW0gOyBmb250LXdlaWdodDpub3JtYWw7IGNvbG9yOiM1YTVhNWE7fSAuYm94MjYgdWwgbGkgc3BhbjpiZWZvcmUsLmJveDMzIHVsIGxpIHNwYW46YmVmb3JlLC5Nb3RldXIgaDI6YmVmb3JlIHsgY29udGVudDoiXGYxMzgiOyBmb250LWZhbWlseTonRm9udCBBd2Vzb21lIDUgUHJvJzsgZm9udC13ZWlnaHQ6OTAwOyBtYXJnaW4tcmlnaHQ6NXB4OyB9IC5ib3gyNyBhe3dpZHRoOjEzMXB4OyBoZWlnaHQ6MjhweDsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9idXR0b24xMF9iZy5wbmcpIGxlZnQgdG9wIHJlcGVhdC14IDsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6I0ZGRkZGRjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgcGFkZGluZzowOyBsaW5lLWhlaWdodDoyOHB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC10cmFuc2Zvcm06bm9uZTt9IC5ib3gyNyBhOmhvdmVye3dpZHRoOjEzMXB4OyBoZWlnaHQ6MjhweDsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9idXR0b24xMF9iZy5wbmcpIGxlZnQgLTMycHggcmVwZWF0LXggOyAtbW96LWJvcmRlci1yYWRpdXM6M3B4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4OyBib3JkZXItcmFkaXVzOjNweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6M3B4OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC13ZWlnaHQ6bm9ybWFsOyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC10cmFuc2Zvcm06bm9uZTsgbGluZS1oZWlnaHQ6MjhweDsgfSAuYm94Mjh7d2lkdGg6MTI3cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46MHB4OyBiYWNrZ3JvdW5kOiM2ZjZmNmYgdXJsKC9pbWFnZXMvbGl0ZXJfYmcucG5nKSBsZWZ0IHRvcCByZXBlYXQteDsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDsgcGFkZGluZzoxMHB4IDJweCAxMHB4IDJweDsgbWFyZ2luOjAgMHB4IDAgMDt9IC50ZXh0NDR7d2lkdGg6MTI3cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2xpdGVyX2xpbmUucG5nKSBsZWZ0IGJvdHRvbSByZXBlYXQteDsgYmFja2dyb3VuZC1wb3NpdGlvbjpib3R0b207IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nLWJvdHRvbTo1cHg7IG1hcmdpbi1ib3R0b206NXB4OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC13ZWlnaHQ6bm9ybWFsOyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC10cmFuc2Zvcm06bm9uZTsgbGluZS1oZWlnaHQ6MThweH0gLnRleHRfYm94NjB7d2lkdGg6MTMzcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjA7IH0gLnRleHRfYm94NjAgaDJ7d2lkdGg6MTMzcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjA7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMyNjI2MjY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXdlaWdodDpib2xkOyB0ZXh0LWFsaWduOmxlZnQ7IHRleHQtdHJhbnNmb3JtOm5vbmU7IGxpbmUtaGVpZ2h0OjE4cHh9IC50ZXh0X2JveDYwIGgze3dpZHRoOjEzM3B4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZzowOyBmb250LXNpemU6MXJlbSA7IGNvbG9yOiM3YjAwMDA7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXdlaWdodDpub3JtYWw7IHRleHQtYWxpZ246bGVmdDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgbGluZS1oZWlnaHQ6MThweH0gLnRleHRfYm94NjAgcHt3aWR0aDoxMzNweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6NXB4IDA7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMyNjI2MjY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXdlaWdodDpib2xkOyB0ZXh0LWFsaWduOmxlZnQ7IHRleHQtdHJhbnNmb3JtOm5vbmU7IGxpbmUtaGVpZ2h0OjE4cHh9IC52aW9ye3dpZHRoOmF1dG87IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjBweCAxMHB4OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL3Zpb3IucG5nKSBsZWZ0IHRvcCByZXBlYXQteDsgbGluZS1oZWlnaHQ6MjJweDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6I0ZGRkZGRjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgdGV4dC1hbGlnbjpsZWZ0OyB0ZXh0LXRyYW5zZm9ybTpub25lOyAtbW96LWJvcmRlci1yYWRpdXM6NXB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NXB4OyBib3JkZXItcmFkaXVzOjVweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6NXB4OyB9IC5ib3gxMzN7d2lkdGg6MTMzcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjA7IG1hcmdpbjowO30gLmJveDI1OHt3aWR0aDoyNThweDsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2I5YjliOTsgcGFkZGluZzowIDEwcHggNXB4IDEwcHg7IG1hcmdpbi1ib3R0b206NXB4OyBmbG9hdDpsZWZ0O30gLmJveDExNnt3aWR0aDoxMTZweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGJvcmRlcjoycHggc29saWQgI0ZGRkZGRjsgcGFkZGluZzowOyBtYXJnaW4tcmlnaHQ6NXB4O30gLmJveDExNiBpbWd7d2lkdGg6MTIwcHg7IH0gLmJveDJ7d2lkdGg6MjYwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW4tcmlnaHQ6NDdweDsgbWFyZ2luLWxlZnQ6MjBweDsgcGFkZGluZzowIDAgMTBweCA1cHg7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGNvbG9yOiMyNDI0MjQgO30gLmJveDIgc3Bhbntmb250OmJvbGQgMTJweCBWZXJkYW5hLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBjb2xvcjojRkYwMDAwfSAuYm94M3t3aWR0aDoyNjBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbi1yaWdodDoyMHB4OyBwYWRkaW5nOjAgMCAxMHB4IDVweDsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzI0MjQyNCA7fSAuYm94MyBzcGFue2ZvbnQ6Ym9sZCAxMnB4IFZlcmRhbmEsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGNvbG9yOiNGRjAwMDB9IC5ib3g0e3dpZHRoOjI2NXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luOjBweCA0NXB4IDEwcHggMjBweDsgfSAuYm94NDR7d2lkdGg6MjY1cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46MHB4IDQ3cHggMTBweCAyMHB4OyBwb3NpdGlvbjpyZWxhdGl2ZTt9IC5ib3g1e3dpZHRoOjI2NXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luOjBweCAyMHB4IDEwcHggMDt9IC5ib3g2e3dpZHRoOjI4MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luOjEwcHggMHB4IDBweCAwO30gLmJveDU1e3dpZHRoOjI2NXB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luOjBweCAyMHB4IDEwcHggMDtwb3NpdGlvbjpyZWxhdGl2ZTt9IC5saW4ye3dpZHRoOjYxN3B4OyBoZWlnaHQ6MnB4OyBmbG9hdDpsZWZ0OyBtYXJnaW46MHB4IDAgMTBweCAwOyBwYWRkaW5nOjA7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvbGluZTIucG5nKSBsZWZ0IHRvcCByZXBlYXQteDt9IC5ib3gxNHtwYWRkaW5nOjBweCAwOyBoZWlnaHQ6MTVweDsgZmxvYXQ6bGVmdH0gLmJveDIwe3BhZGRpbmc6MCAxMHB4OyBmbG9hdDpsZWZ0OyBsaW5lLWhlaWdodDoyN3B4OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojMjQyNDI0IDsgZm9udC13ZWlnaHQ6Ym9sZDt9IC50ZXh0MzB7d2lkdGg6NjE3cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjE3cHggMDsgZm9udC1zaXplOjEuMzc1cmVtIDsgY29sb3I6IzI0MjQyNH0gLnRleHQzMCBzcGFue3BhZGRpbmctcmlnaHQ6MTBweDsgZmxvYXQ6cmlnaHQ7IHRleHQtYWxpZ246cmlnaHQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgY29sb3I6IzI0MjQyNDt9IC50ZXh0MzAgc3BhbiBzdHJvbmd7Zm9udDpib2xkIDIwcHggVmVyZGFuYSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgY29sb3I6I0ZGMDAwMCB9IC5ib3g2MTd7d2lkdGg6NjE3cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nLWxlZnQ6MHB4OyBwYWRkaW5nLWJvdHRvbToyMHB4OyBtYXJnaW4tcmlnaHQ6MHB4O30gLm1haW42MTd7d2lkdGg6NjE3cHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nLWxlZnQ6MHB4OyBtYXJnaW4tdG9wOjE1cHg7fSAuYm94MjBBe3BhZGRpbmc6MCA1cHg7IGZsb2F0OmxlZnQ7IGxpbmUtaGVpZ2h0OjI1cHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMyNDI0MjQgOyBmb250LXdlaWdodDpib2xkO30gLm9uU2l0ZSArIC5wcmVmZXJyZWQsIC5wcmVmZXJyZWQ6aGFzKCsub25TaXRlKSB7IGFsaWduLXNlbGY6ZW5kOyB9ICNzZXJ2aWNlUGFja2FnZXMgdGFibGUge2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTsgd2lkdGg6MTAwJTsgbGluZS1oZWlnaHQ6MzBweDsgbWFyZ2luLWJvdHRvbToxNXB4OyBmb250LXNpemU6OTAlO30gI3NlcnZpY2VQYWNrYWdlcyB0YWJsZSB0Ym9keSB0cjpudGgtY2hpbGQob2RkKSB7YmFja2dyb3VuZDojZjNmM2YzO30gI3NlcnZpY2VQYWNrYWdlcyB0YWJsZSB0ZHtwYWRkaW5nLXRvcDowLjVyZW07IHZlcnRpY2FsLWFsaWduOnRvcDsgbGluZS1oZWlnaHQ6MS41O30gI3NlcnZpY2VQYWNrYWdlcyB0YWJsZSB0ZDpudGgtY2hpbGQoMikge3BhZGRpbmc6MC41cmVtO30gLmRldGFpbENhclRpdGxlLCAuZGV0YWlsQ2FyVGl0bGVXaWRlLCAuZGV0YWlsQ2FyVGl0bGVGdWxsIHt3b3JkLXdyYXA6YnJlYWstd29yZDtoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgbWFyZ2luOjBweDsgZm9udC1zaXplOjEuODc1cmVtIDsgY29sb3I6IzQxNDE0MTtmb250LXdlaWdodDpub3JtYWw7fSAuZGV0YWlsQ2FyVGl0bGUge3dpZHRoOjQ5MHB4O30gLmRldGFpbENhclRpdGxlV2lkZSB7d2lkdGg6Nzc1cHg7fSAuZGV0YWlsQ2FyVGl0bGVGdWxsIHt3aWR0aDoxMDAlO30gLm1haW5ib3hfdGV4dGFyZTYxN3toZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZy1sZWZ0OjBweDsgbWFyZ2luOjIwcHggMDsgdHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLCAwJSk7IHBvc2l0aW9uOnJlbGF0aXZlOyBsZWZ0OjUwJTt9IC50ZXh0Ym94MjJ7d2lkdGg6MzgxcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBwYWRkaW5nLWxlZnQ6MHB4OyBtYXJnaW46MHB4IDBweCAwIDA7fSAuYnV0dG9uNTF7IHdpZHRoOmF1dG87IGhlaWdodDozNnB4OyBmbG9hdDpsZWZ0OyB9IC5idXR0b241MSBheyB3aWR0aDphdXRvOyBoZWlnaHQ6MzZweDsgZmxvYXQ6bGVmdDsgLW1vei1ib3JkZXItcmFkaXVzOjVweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjVweDsgYm9yZGVyLXJhZGl1czo1cHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjVweDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9idXR0b241LnBuZykgbGVmdCB0b3AgcmVwZWF0LXg7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGNvbG9yOiNGRkZGRkYgOyBwYWRkaW5nOjAgMTBweDsgbGluZS1oZWlnaHQ6MzZweDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtdHJhbnNmb3JtOm5vbmU7IH0gLmJ1dHRvbjUxIGE6aG92ZXJ7IHdpZHRoOmF1dG87IGhlaWdodDozNnB4OyBmbG9hdDpsZWZ0OyAtbW96LWJvcmRlci1yYWRpdXM6NXB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NXB4OyBib3JkZXItcmFkaXVzOjVweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6NXB4OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2J1dHRvbjUucG5nKSBsZWZ0IC00NHB4IHJlcGVhdC14OyBmb250LXNpemU6MS4xMjVyZW0gOyBjb2xvcjojRkZGRkZGIDsgcGFkZGluZzowIDEwcHg7IGxpbmUtaGVpZ2h0OjM2cHg7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LXRyYW5zZm9ybTpub25lO30gLnRleHQ1NXt3aWR0aDozODFweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmctbGVmdDowcHg7IG1hcmdpbjowcHggMHB4IDIwcHggMDsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6dmFyKC0tZGVmYXVsdC1ibGFjaykgOyBsaW5lLWhlaWdodDoxOHB4OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSAudGV4dDU1IHB7IHBhZGRpbmctbGVmdDowcHggNXB4IDAgMDsgbWFyZ2luOjBweCAwcHggMHB4IDA7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOnZhcigtLWRlZmF1bHQtYmxhY2spOyBsaW5lLWhlaWdodDoxOHB4OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSAucGljYm94XzIyMXtoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgcGFkZGluZy1sZWZ0OjBweDsgbWFyZ2luOjBweCAxNXB4IDAgMDt9IC5waWNib3hfMjIxIGltZyB7IHdpZHRoOjMzMnB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDsgfSAuaXNGdWxsV2lkdGhQYWdlIC5waWNib3hfMjIxIGltZyB7IHdpZHRoOjQ0MnB4OyB9IC5waWNib3g2NTF7d2lkdGg6NjUxcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46NXB4IDEwcHggMHB4O30gLnBpY2JveDkzMHt3aWR0aDo5MzBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbjo1cHggNXB4IDBweDt9IC5waWNib3g2NTEgaW1nIHsgd2lkdGg6NjUxcHg7IH0gLnBpY2JveDkzMCBpbWcgeyB3aWR0aDo5MzBweDsgfSAucGljYm94NjUxIGltZywgLnBpY2JveDkzMCBpbWcgeyBmbG9hdDpsZWZ0OyBjdXJzb3I6cG9pbnRlcjsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDsgfSAudG9wUHJvbW9JbWFnZSBpbWcgeyAtbW96LWJvcmRlci1yYWRpdXM6M3B4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4OyBib3JkZXItcmFkaXVzOjNweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6M3B4OyBtYXJnaW4tdG9wOjVweDsgd2lkdGg6OTMwcHg7IGN1cnNvcjpwb2ludGVyOyB9IC50b3BQcm9tb0ltYWdlVXNlZCBpbWcgeyAtbW96LWJvcmRlci1yYWRpdXM6M3B4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4OyBib3JkZXItcmFkaXVzOjNweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6M3B4OyB3aWR0aDo2NTBweDsgY3Vyc29yOnBvaW50ZXI7IH0gLnRlYW1fdGl0bGVfZGVhbGVye21hcmdpbi1ib3R0b206MTVweDsgdGV4dC1hbGlnbjpjZW50ZXI7fSAuZm9ybXNfYm94NjYxe3dpZHRoOjk2MHB4OyBoZWlnaHQ6YXV0bzsgbWFyZ2luOjEwcHggYXV0bzsgfSAucGljYm94OTB7d2lkdGg6OTBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbi1yaWdodDo4cHg7IGJvcmRlcjoxcHggc29saWQgI2FjYWNhYzsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDsgfSAucGljYm94OTAgaW1nIHt3aWR0aDo5MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjNweDsgfSAudGV4dGJveDE5MXt3aWR0aDo1MiU7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44MTNyZW0gOyBsaW5lLWhlaWdodDoxLjI7IGNvbG9yOiMyNDI0MjQ7IH0gLnRleHRib3gxOTEgaDR7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGNvbG9yOiMyNDI0MjQ7IHBhZGRpbmctYm90dG9tOjVweDsgfSAubWFpbmJveDI5MXt3aWR0aDoyOTFweDsgbWluLWhlaWdodDoxMjNweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbjowIDVweCAxMHB4IDA7IGJhY2tncm91bmQ6I2U2ZTZlNjsgYm9yZGVyOjFweCBzb2xpZCAjZDRkNGQ0OyAtbW96LWJvcmRlci1yYWRpdXM6OHB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6OHB4OyBib3JkZXItcmFkaXVzOjhweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6OHB4OyBwYWRkaW5nOjE1cHggMTBweDt9IC5sYXp5e2JvcmRlcjowO2Rpc3BsYXk6bm9uZX0gLnRlY2hTcGVjc3t3aWR0aDo2MjFweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbjowcHg7IHBhZGRpbmc6MjVweCAxNXB4OyBiYWNrZ3JvdW5kOiNlYmViZWI7IGJhY2tncm91bmQtcG9zaXRpb246cmlnaHQgYm90dG9tOyAtbW96LWJvcmRlci1yYWRpdXMtdG9wbGVmdDowcHg7LW1vei1ib3JkZXItcmFkaXVzLXRvcHJpZ2h0OjBweDstbW96LWJvcmRlci1yYWRpdXMtYm90dG9tcmlnaHQ6NnB4Oy1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21sZWZ0OjZweDstd2Via2l0LWJvcmRlci10b3AtbGVmdC1yYWRpdXM6MHB4Oy13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MHB4Oy13ZWJraXQtYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6NnB4Oy13ZWJraXQtYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo2cHg7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowcHg7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MHB4O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NnB4O2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjZweDt9IC5lbWFpbF9saW5re3RleHQtZGVjb3JhdGlvbjpub25lOyBjb2xvcjojODg4O30gLmVtYWlsX2xpbms6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7IGNvbG9yOiMzMzM7fSAucGFnZV9uYW1lNTU1IHsgY29sb3I6IzI0MjQyNDsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjEuNXJlbSA7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgaGVpZ2h0OmF1dG87IGxpbmUtaGVpZ2h0OjMwcHg7IHBhZGRpbmc6MCAwIDEwcHggMDsgd2lkdGg6MTAwJTsgYm94LXNpemluZzpib3JkZXItYm94OyBtYXJnaW46MDsgfSAucGFnZV9uYW1lNTU1IGF7IGNvbG9yOiMyNDI0MjQ7IH0gLnBhZ2VfbmFtZTU1NSBhOmhvdmVyeyBjb2xvcjojMjQyNDI0OyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyB9IC5wYWdlX25hbWU1NTUgYTp2aXNpdGVkeyBjb2xvcjojMjQyNDI0OyB9IC5wYWdlX25hbWVORVc1NTUgeyBjb2xvcjojMjQyNDI0OyBmb250LXdlaWdodDpub3JtYWw7IGhlaWdodDphdXRvOyBmb250LXNpemU6MC44NzVyZW0gOyB9IC5wYWdlX25hbWVORVc1NTUgYXsgY29sb3I6IzI0MjQyNDsgfSAucGFnZV9uYW1lTkVXNTU1IGE6aG92ZXJ7IGNvbG9yOiMyNDI0MjQ7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7IH0gLnBhZ2VfbmFtZU5FVzU1NSBhOnZpc2l0ZWR7IGNvbG9yOiMyNDI0MjQ7IH0gLmJveDJfdGV4dDQ0IHsgY29sb3I6IzI0MjQyNDsgZm9udC1zaXplOjFyZW07IGhlaWdodDphdXRvOyBsaW5lLWhlaWdodDoxOHB4OyBwYWRkaW5nOjEwcHggMCAwIDA7IHdpZHRoOmF1dG87IH0gLnRleHRfYm94MTEgeyBmbG9hdDpsZWZ0OyBoZWlnaHQ6YXV0bzsgbWFyZ2luOjA7IHBhZGRpbmc6MCAyMHB4IDEwcHggMDsgd2lkdGg6YXV0bzsgbGluZS1oZWlnaHQ6MjFweDsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IH0gLnRleHRfYm94MTEgaDQgeyBjb2xvcjojMjQyNDI0OyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MC44NzVyZW0gOyBoZWlnaHQ6YXV0bzsgbWFyZ2luOjA7IHBhZGRpbmc6MTBweCAwOyB9IC50ZXh0X2JveDExIGEgeyBjb2xvcjojMjQyNDI0OyBmb250LXNpemU6MC43NXJlbSA7IGhlaWdodDphdXRvOyBtYXJnaW4tbGVmdDowOyBwYWRkaW5nOjEwcHggMDsgZmxvYXQ6bGVmdDsgfSAudGV4dF9ib3gxMSBhOmhvdmVyIHsgY29sb3I6IzI0MjQyNDsgfSAudGV4dF9ib3gxMSBhOnZpc2l0ZWQgeyBjb2xvcjojMjQyNDI0OyB9IC50ZXh0X2JveDExIHVsLCAudGV4dF9ib3gxMSBwIHsgfSAudGV4dF9ib3gxMSB1bCwgLnRleHRfYm94MTEgcCB7IGNvbG9yOiMyNDI0MjQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGhlaWdodDphdXRvOyBtYXJnaW46MDsgcGFkZGluZzowIDAgNXB4OyB9IC50ZXh0X2JveDExIHVsIHsgbGlzdC1zdHlsZS1wb3NpdGlvbjppbnNpZGU7IH0gLnRleHRfYm94MTEgcCBhIHsgZm9udC1zaXplOjAuODc1cmVtIDsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgZmxvYXQ6bm9uZTsgfSAucGljYm94MzM2IHsgYm9yZGVyOjFweCBzb2xpZCAjN0Q3RDdEOyBmbG9hdDpsZWZ0OyBoZWlnaHQ6YXV0bzsgbWFyZ2luLXJpZ2h0OjY4cHg7IH0gLmZvbnRfc2l6ZTIxIHsgZm9udC1zaXplOjEuMzEzcmVtICFpbXBvcnRhbnQ7IH0gLnBhZ2VfbmFtZTE4IHsgY29sb3I6IzI0MjQyNDsgZm9udC1zaXplOjEuMTI1cmVtIDsgaGVpZ2h0OmF1dG87IGxpbmUtaGVpZ2h0OjMwcHg7IHBhZGRpbmc6MCAwIDEwcHggMDsgd2lkdGg6MTAwJTsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAucGFnZV9uYW1lMTggYXsgY29sb3I6IzI0MjQyNDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0gLnBhZ2VfbmFtZTE4IGE6aG92ZXJ7IGNvbG9yOiMyNDI0MjQ7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7IH0gLnZpZGVvNSB7IGZsb2F0OmxlZnQ7IGhlaWdodDo0MXB4OyBtYXJnaW4tdG9wOjcwcHg7IG1hcmdpbi1sZWZ0OjcwcHg7IH0gLmZsb2F0TG9nb3sgd2lkdGg6NjIxcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46MHB4OyBwYWRkaW5nOjI1cHggMTVweDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9MT0dPX0dBX1RSQU5TUEFSRU5ULnBuZykgcmlnaHQgYm90dG9tIG5vLXJlcGVhdDsgYmFja2dyb3VuZC1wb3NpdGlvbjpyaWdodCBib3R0b207IC1tb3otYm9yZGVyLXJhZGl1cy10b3BsZWZ0OjBweDstbW96LWJvcmRlci1yYWRpdXMtdG9wcmlnaHQ6MHB4Oy1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21yaWdodDo2cHg7LW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbWxlZnQ6NnB4Oy13ZWJraXQtYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czowcHg7LXdlYmtpdC1ib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowcHg7LXdlYmtpdC1ib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czo2cHg7LXdlYmtpdC1ib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjZweDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjBweDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowcHg7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo2cHg7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6NnB4OyB9IC5idXR0b24yLmpxVHJhbnNmb3JtQnV0dG9uIHsgYmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDsgYm9yZGVyOm1lZGl1bSBub25lOyBjb2xvcjojRkZGRkZGOyBjdXJzb3I6cG9pbnRlcjsgZm9udC1zaXplOjAuODEzcmVtIDsgbWFyZ2luOjA7IG92ZXJmbG93OnZpc2libGU7IHBhZGRpbmc6MDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0gLmJ1dHRvbjIuanFUcmFuc2Zvcm1CdXR0b24gc3BhbiB7IGJhY2tncm91bmQ6dXJsKCIvaW1hZ2VzL2J0bl9yaWdodDIucG5nIikgbm8tcmVwZWF0IHNjcm9sbCByaWdodCB0b3AgdHJhbnNwYXJlbnQ7IGRpc3BsYXk6YmxvY2s7IGZsb2F0OmxlZnQ7IGhlaWdodDozNXB4OyBtYXJnaW46MDsgcGFkZGluZzowIDZweCAwIDA7IH0gLmJ1dHRvbjIuanFUcmFuc2Zvcm1CdXR0b24gc3BhbiBzcGFuIHsgYmFja2dyb3VuZDp1cmwoIi9pbWFnZXMvYnRuX2xlZnQyLnBuZyIpIG5vLXJlcGVhdCBzY3JvbGwgbGVmdCB0b3AgdHJhbnNwYXJlbnQ7IGNvbG9yOiNGRkZGRkY7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgaGVpZ2h0OjI2cHg7IGxpbmUtaGVpZ2h0OjEzcHg7IHBhZGRpbmc6MTJweCAxM3B4IDAgMTVweDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtdHJhbnNmb3JtOm5vbmU7IH0gLmJ1dHRvbjIuanFUcmFuc2Zvcm1CdXR0b25faG92ZXIgc3BhbiBzcGFuIHsgYmFja2dyb3VuZC1wb3NpdGlvbjpsZWZ0IC0zOHB4OyB9IC5idXR0b24yLmpxVHJhbnNmb3JtQnV0dG9uX2hvdmVyIHNwYW4geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOnJpZ2h0IC0zOHB4OyB9IC5idXR0b24yLmpxVHJhbnNmb3JtQnV0dG9uX2NsaWNrIHNwYW4gc3BhbiB7IGJhY2tncm91bmQtcG9zaXRpb246bGVmdCAtNjZweDsgfSAuYnV0dG9uMi5qcVRyYW5zZm9ybUJ1dHRvbl9jbGljayBzcGFuIHsgYmFja2dyb3VuZC1wb3NpdGlvbjpyaWdodCAtNjZweDsgfSAudmVoaWNsZUxpc3RUYWJsZSB7IG1hcmdpbjoxMHB4OyBmb250LXNpemU6MC43NXJlbSA7IGNvbG9yOiM0MTQxNDE7IH0gLnZlaGljbGVMaXN0VGFibGUgdHIgdGQgeyBib3JkZXItYm90dG9tOjFweCBkb3R0ZWQgIzY2NjY2NjsgaGVpZ2h0OjMwcHg7IH0gLnZlaGljbGVMaXN0VGFibGUgdHIgdGQgYXsgY29sb3I6IzQxNDE0MTsgZm9udC1zaXplOjAuNzVyZW0gOyB9IC52ZWhpY2xlTGlzdFRhYmxlIHRyIHRkIGE6aG92ZXJ7IGNvbG9yOiM0MTQxNDE7IGZvbnQtc2l6ZTowLjc1cmVtIDsgfSAudmVoaWNsZUxpc3RUYWJsZSB0ciB0ZCBhOnZpc2l0ZWR7IGNvbG9yOiM0MTQxNDE7IGZvbnQtc2l6ZTowLjc1cmVtIDsgfSAuZXhwYW5kUm93eyBiYWNrZ3JvdW5kLWNvbG9yOiMxZjFmMWY7IHRleHQtYWxpZ246cmlnaHQ7IGNvbG9yOiM0MTQxNDE7IG1hcmdpbi1sZWZ0OjRweDsgbWFyZ2luLXJpZ2h0OjJweDsgfSBkaXYuZXJyb3JNc2cgeyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmRkZGQ7IGJhY2tncm91bmQtaW1hZ2U6dXJsKCIvaW1hZ2VzL2Vycm9yLnBuZyIpOyBiYWNrZ3JvdW5kLXBvc2l0aW9uOjEwcHggY2VudGVyOyBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7IGJvcmRlcjoxcHggc29saWQ7IGNvbG9yOiNkMTAwMGM7IGRpc3BsYXk6bm9uZTsgZmxvYXQ6bGVmdDsgei1pbmRleDo5OTk5OyBwYWRkaW5nOjE1cHggMTBweCAxNXB4IDUwcHg7IH0gZGl2LmVtYWlsU2VudE1zZyB7IGJhY2tncm91bmQtY29sb3I6I2VmZmZlZjsgYmFja2dyb3VuZC1pbWFnZTp1cmwoIi9pbWFnZXMvYWNjZXB0ZWQucG5nIik7IGJhY2tncm91bmQtcG9zaXRpb246MTBweCBjZW50ZXI7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYm9yZGVyOjFweCBzb2xpZCAjMDk3NzAwOyBjb2xvcjojMDk3NzAwOyBkaXNwbGF5Om5vbmU7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MTVweCAxMHB4IDE1cHggNTBweDsgfSBkaXYudG95b3RJbWFnZSB7IGNvbG9yOiM2NjY2NjY7IGZvbnQtc2l6ZTozLjQzOHJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IGhlaWdodDoyNTBweDsgbGVmdDowOyBvcGFjaXR5OjAuODsgb3ZlcmZsb3c6aGlkZGVuOyBwYWRkaW5nOjVweCAxMHB4OyBwb3NpdGlvbjphYnNvbHV0ZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHdpZHRoOjM4MHB4OyB6LWluZGV4Ojg7IH0gZGl2LnRveW90SW1hZ2UgcCB7IHBhZGRpbmc6NXB4OyBtYXJnaW46MDsgZm9udC1zaXplOjAuOTM4cmVtIDsgY29sb3I6I0E2QTZBNjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0gZGl2Lm5ld0Nhck1haW5Cb3ggeyB3aWR0aDo5NjBweDsgbWFyZ2luOjAgYXV0bzsgfSBkaXYubmV3Q2FyTWFpbkJveDIgeyBtYXJnaW4tdG9wOjVweDsgfSBkaXYubmV3Q2FyTWFpbkJveDMgeyB3aWR0aDo5NjBweDsgaGVpZ2h0OjEycHg7IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvYm94OTcwX3RvcC5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDsgfSAuc3RvY2tJbWdTdHlsZXsgd2lkdGg6MTAwJTsgaGVpZ2h0OjUwJTsgZm9udC1zaXplOjIuMjVyZW0gOyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC13ZWlnaHQ6Ym9sZDsgcGFkZGluZy10b3A6MzBweDsgcG9zaXRpb246YWJzb2x1dGU7IG1hcmdpbjowcHg7IGNvbG9yOiMzMDMwMzA7IH0gI2ZpcnN0U2xpZGVySW1nIHsgYmFja2dyb3VuZC1jb2xvcjojZmZmOyBwb3NpdGlvbjphYnNvbHV0ZTsgei1pbmRleDoxNTsgd2lkdGg6MTAwJTsgaGVpZ2h0OmF1dG87IG9wYWNpdHk6MTsgcGFkZGluZzowOyBtYXJnaW46MDsgfSAjZmlyc3RTbGlkZXJJbWcgLnBsYWNlaG9sZGVyeyBib3JkZXI6MXB4IHNvbGlkICNGRkY7IHdpZHRoOjY0MHB4OyBoZWlnaHQ6NDgwcHg7IH0gI2ZpcnN0U2xpZGVySW1nIC5wbGFjZWhvbGRlciAuaW5uZXItcGxhY2Vob2xkZXJ7IHBvc2l0aW9uOmFic29sdXRlOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgb3ZlcmZsb3c6aGlkZGVuOyBkaXNwbGF5OmZsZXg7IHRvcDowOyBib3R0b206MDsgbGVmdDowOyByaWdodDowOyB9ICNmaXJzdFNsaWRlckltZyBJTUd7IGhlaWdodDphdXRvOyBtYXgtd2lkdGg6NjQwcHg7IG1heC1oZWlnaHQ6NDgwcHg7IHdpZHRoOmF1dG87IG1hcmdpbjphdXRvOyB9ICNmaXJzdFNsaWRlckltZy5mYWRlLW91dHsgdmlzaWJpbGl0eTpoaWRkZW47IG9wYWNpdHk6MDsgLXdlYmtpdC10cmFuc2l0aW9uOnZpc2liaWxpdHkgMW1zIDAuMjVzLCBvcGFjaXR5IDAuMjVzIGxpbmVhcjsgLW1vei10cmFuc2l0aW9uOnZpc2liaWxpdHkgMW1zIDAuMjVzLCBvcGFjaXR5IDAuMjVzIGxpbmVhcjsgLW8tdHJhbnNpdGlvbjp2aXNpYmlsaXR5IDFtcyAwLjI1cywgb3BhY2l0eSAwLjI1cyBsaW5lYXI7IHRyYW5zaXRpb246dmlzaWJpbGl0eSAxbXMgMC4yNXMsIG9wYWNpdHkgMC4yNXMgbGluZWFyOyB9ICNzb2NpYWxUaW1lbGluZXsgd2lkdGg6OTYwcHg7IGhlaWdodDphdXRvOyB9IGRpdi5uZXdDYXJNYWluQm94NCB7IHdpZHRoOjk0MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9ib3g5NzBfbWlkLnBuZykgbGVmdCB0b3AgcmVwZWF0LXk7IHBhZGRpbmc6MTBweCAxNXB4OyB9IGRpdi5uZXdDYXJUaXRsZUJveCBoMXsgd2lkdGg6OTQwcHg7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MS44NzVyZW0gOyBjb2xvcjojMzAzMDMwOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSAuZ3JheWJveCB7IGJhY2tncm91bmQtY29sb3I6I0VGRUZFRjsgYm9yZGVyOjFweCBzb2xpZCAjRkZGRkZGOyBib3JkZXItcmFkaXVzOjNweDsgY29sb3I6IzAwMDsgZm9udC1zaXplOjAuODEzcmVtIDsgbGluZS1oZWlnaHQ6bm9ybWFsOyBwYWRkaW5nOjEwcHggMCAxMHB4IDA7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LXNoYWRvdzowIDFweCAwICNGRkZGRkY7IH0gLmdyYXlib3ggPiBzcGFuIHsgY29sb3I6IzAwMDsgZm9udC1zaXplOjAuODEzcmVtIDsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLmdyYXlib3ggLnNtYWxsdGV4dCB7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNDQ0NDQ0M7IGJvcmRlci10b3A6MXB4IHNvbGlkICNDQ0NDQ0M7IGNvbG9yOiMzMzMzMzM7IGZvbnQtc2l6ZTowLjY4OHJlbSA7IG1hcmdpbi10b3A6MTBweDsgcGFkZGluZzoxMHB4OyB9IC5ncmF5Ym94IGgyIHsgY29sb3I6IzAwMDsgZm9udC1zaXplOjEuNXJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IG1hcmdpbjo1cHggYXV0bzsgfSAuZXh0ZW5kZWRQaG9uZXsgcG9zaXRpb246Zml4ZWQ7IGJhY2tncm91bmQtY29sb3I6IzY3Njc2NzsgY29sb3I6I2RkZDsgcGFkZGluZzowLjZlbTsgYm9yZGVyLXJhZGl1czo1cHg7IHotaW5kZXg6OTk5OTsgZm9udC1zaXplOjAuODc1cmVtIDsgdGV4dC1hbGlnbjpsZWZ0OyB9IC5leHRlbmRlZFBob25lIGxhYmVseyBkaXNwbGF5OmlubGluZS1ibG9jazsgfSAuZXh0ZW5kZWRQaG9uZSBzcGFueyBjb2xvcjojZmZmOyB9IC5waG9uZU5vdGV7IGZvbnQtc2l6ZTowLjY4OHJlbSA7IHBhZGRpbmctdG9wOjdweDsgfSAuYWRkZWRTZWFyY2hMaW5rc0RpdkV4IHsgY29sb3I6IzQxNDE0MTsgZm9udC1zaXplOjFyZW0gOyB0ZXh0LWFsaWduOmxlZnQ7IHBhZGRpbmctbGVmdDoyMHB4OyBwYWRkaW5nLXRvcDozMHB4OyB9IC5hZGRlZFNlYXJjaExpbmtzRGl2IGRpdnsgcGFkZGluZy1sZWZ0OjEwcHg7IHBhZGRpbmctdG9wOjEwcHg7IHdpZHRoOjIwMHB4OyBmbG9hdDpsZWZ0OyB9IC5hZGRlZFNlYXJjaExpbmtzRGl2IHVseyBtYXJnaW4tYm90dG9tOjIwcHg7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IG1hcmdpbi10b3A6NXB4OyB9IC5hZGRlZFNlYXJjaExpbmtzRGl2IHVsIGxpeyBsaXN0LXN0eWxlOm5vbmUgb3V0c2lkZSBub25lOyBkaXNwbGF5OmJsb2NrOyBtYXJnaW4tbGVmdDo0MHB4OyB0ZXh0LWluZGVudDotMTBweDsgfSAuYWRkZWRTZWFyY2hMaW5rc0RpdiB1bCBsaSBheyBjb2xvcjojMzMzOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgY3Vyc29yOnBvaW50ZXI7IH0gLmFkZGVkU2VhcmNoTGlua3NEaXYgdWwgbGkgYXsgYmFja2dyb3VuZDp1cmwoIi9pbWFnZXMvYXJyb3dfcmVkLnBuZyIpIG5vLXJlcGVhdCBzY3JvbGwgMCAxMHB4IHRyYW5zcGFyZW50OyBjb2xvcjojMzMzMzMzOyBtYXJnaW4tcmlnaHQ6MnB4OyBwYWRkaW5nOjZweCAxMHB4OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSAuYWRkZWRTZWFyY2hMaW5rc0RpdiB1bCBsaSBhOmhvdmVyIHsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgfSAuY29tcGFyZUxpbmtzIGF7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9IC5jb21wYXJlTGlua3MgYTpob3ZlcnsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgfSAuZW1haWxCb2R5LCAuZW1haWxTdWJqZWN0eyBkaXNwbGF5Om5vbmU7IH0gI2NvbnRhY3R1cyBkaXYuZXJyb3JNc2cgeyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmRkZGQ7IGJhY2tncm91bmQtaW1hZ2U6dXJsKCIvaW1hZ2VzL2Vycm9yLnBuZyIpOyBiYWNrZ3JvdW5kLXBvc2l0aW9uOjEwcHggY2VudGVyOyBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7IGJvcmRlcjoxcHggc29saWQ7IGNvbG9yOiNkMTAwMGM7IGRpc3BsYXk6bm9uZTsgZmxvYXQ6bGVmdDsgcGFkZGluZzoxNXB4IDEwcHggMTVweCA1MHB4OyB9ICNjb250YWN0dXMgZGl2LmVtYWlsU2VudE1zZyB7IGJhY2tncm91bmQtY29sb3I6I2VmZmZlZjsgYmFja2dyb3VuZC1pbWFnZTp1cmwoIi9pbWFnZXMvYWNjZXB0ZWQucG5nIik7IGJhY2tncm91bmQtcG9zaXRpb246MTBweCBjZW50ZXI7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYm9yZGVyOjFweCBzb2xpZCAjMDk3NzAwOyBjb2xvcjojMDk3NzAwOyBkaXNwbGF5Om5vbmU7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MTVweCAxMHB4IDE1cHggNTBweDsgfSAjUGFnZUZpbmFuY2UgLnN0ZXBBY3RpdmUgeyBiYWNrZ3JvdW5kOnVybCgiL2ltYWdlcy8xX2hvdmVyLnBuZyIpIG5vLXJlcGVhdCBzY3JvbGwgbGVmdCB0b3AgdHJhbnNwYXJlbnQ7IGNvbG9yOiMwMDAwMDA7IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZToyLjI1cmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgaGVpZ2h0OjQ2cHg7IGxpbmUtaGVpZ2h0OjQ2cHg7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgd2lkdGg6NDZweDsgbWFyZ2luLWxlZnQ6MTBweDsgfSAjUGFnZUZpbmFuY2UgLnN0ZXBVbmFjdGl2ZSB7IGJhY2tncm91bmQ6dXJsKCIvaW1hZ2VzLzFfcm91bmQucG5nIikgbm8tcmVwZWF0IHNjcm9sbCBsZWZ0IHRvcCB0cmFuc3BhcmVudDsgY29sb3I6I0ZGRkZGRjsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjIuMjVyZW0gOyBmb250LXdlaWdodDpib2xkOyBoZWlnaHQ6NDZweDsgbGluZS1oZWlnaHQ6NDZweDsgdGV4dC1hbGlnbjpjZW50ZXI7IHRleHQtZGVjb3JhdGlvbjpub25lOyB3aWR0aDo0NnB4OyBtYXJnaW4tbGVmdDoxMHB4OyB9ICNQYWdlRmluYW5jZSAudGV4dDEgc3BhbiB7IGNvbG9yOiM0MzQzNDM7IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZToxLjg3NXJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IGhlaWdodDo0NnB4OyBsaW5lLWhlaWdodDo0NnB4OyBwYWRkaW5nOjA7IHRleHQtYWxpZ246bGVmdDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtc2hhZG93OjFweCAxcHggMXB4ICNGM0YzRjM7IHdpZHRoOmF1dG87IH0gI1BhZ2VGaW5hbmNlIGRpdi5lbWFpbFNlbnRNc2cgeyBiYWNrZ3JvdW5kLWNvbG9yOiNCOEZGQjg7IGJhY2tncm91bmQtaW1hZ2U6dXJsKCIvaW1hZ2VzL2FjY2VwdGVkLnBuZyIpOyBiYWNrZ3JvdW5kLXBvc2l0aW9uOjEwcHggY2VudGVyOyBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7IGJvcmRlcjoxcHggc29saWQgIzBCOTYwMDsgY29sb3I6IzBCOTYwMDsgZGlzcGxheTpub25lOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjE1cHggMTBweCAxNXB4IDUwcHg7IH0gLm90aGVyX2xpbmtzIGF7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9IC5vdGhlcl9saW5rcyBhOmhvdmVyeyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyB9IC5wcm9tb3Rpb25TaWRlQnRuQSB7IGJhY2tncm91bmQ6IzAwMmM1ZjsgY29sb3I6I2ZmZmZmZjsgZGlzcGxheTpibG9jaztmb250LXNpemU6MS4yNXJlbSA7d2lkdGg6Zml0LWNvbnRlbnQ7aGVpZ2h0OjUzcHg7cGFkZGluZzoycHggMTVweCAwcHggMTVweDtjdXJzb3I6cG9pbnRlcjtsaW5lLWhlaWdodDo1M3B4O3RleHQtZGVjb3JhdGlvbjpub25lO2JhY2tncm91bmQtc2l6ZToxMDAlOyAtbW96LWJvcmRlci1yYWRpdXMtdG9wbGVmdDozcHg7IC1tb3otYm9yZGVyLXJhZGl1cy10b3ByaWdodDozcHg7IC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21yaWdodDowcHg7IC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21sZWZ0OjA7IC13ZWJraXQtYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6M3B4OyAtd2Via2l0LWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjA7IC13ZWJraXQtYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowOyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czozcHg7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6M3B4OyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czpweDsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czowcHg7IHRyYW5zZm9ybTpyb3RhdGUoLTkwZGVnKTsgLW1zLXRyYW5zZm9ybTpyb3RhdGUoLTkwZGVnKTsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC05MGRlZyk7IH0gLmZvb3Rlck11bHRpQWRkcmVzczMgeyBib3JkZXItcmlnaHQ6MXB4ICM5MTkxOTEgc29saWQ7IHBhZGRpbmctcmlnaHQ6NzBweDsgbWFyZ2luLWxlZnQ6MTRweDsgY29sb3I6IzU3NTc1NzsgfSAuZm9vdGVyTXVsdGlBZGRyZXNzMiB7IGJvcmRlci1yaWdodDoxcHggIzkxOTE5MSBzb2xpZDsgcGFkZGluZy1yaWdodDoxNTBweDsgbWFyZ2luLWxlZnQ6OTNweDsgY29sb3I6IzU3NTc1NzsgfSAuZm9vdGVyTXVsdGlBZGRyZXNzMSB7IG1hcmdpbi1sZWZ0OjM0NXB4OyBjb2xvcjojNTc1NzU3OyB9IC5zbWFsbEFjdGlvbldlYnNpdGVDb2xvciB7IGJhY2tncm91bmQgOnVybCgiL2ltYWdlcy9ibF9iZzIucG5nIikgbGVmdCB0b3AgcmVwZWF0LXg7IGNvbG9yOnJnYigwLDAsMCk7IH0gLnNtYWxsQWN0aW9uV2Vic2l0ZUNvbG9yOmhvdmVyeyBiYWNrZ3JvdW5kIDp1cmwoIi9pbWFnZXMvbWVudTEwX2JnLnBuZyIpIGxlZnQgdG9wIHJlcGVhdC14OyBjb2xvcjojRkZGOyB9IC5uYXYgbGkgYS50b3BfbGluay5pc0JvbGQsIC5uYXYgbGkgYS5pc0JvbGR7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gI21haW5IZWFkZXIgZGl2LmJveDE1UGFkZGluZ3sgcGFkZGluZy10b3A6MTVweDsgfSAubmF2IC5ub3RDbGlja2FibGV7IGN1cnNvcjpkZWZhdWx0ICFpbXBvcnRhbnQ7IH0gLlMxMDBQZXJjZW50V2lkdGh7IHdpZHRoOjEwMCU7IH0gI2ZpbHRlck1haW5Cb3ggeyBjb2xvcjojMDAwOyB9ICNmaWx0ZXJNYWluQm94IC5maWx0ZXJTcGFuLCAjZmlsdGVyTWFpbkJveCAuZmlsdGVyQ2hlY2ssICNmaWx0ZXJNYWluQm94IC5yYWRpb1NvcnQgeyBjdXJzb3I6cG9pbnRlcjsgfSAuYkNvZGVTdHlsZSB7IGZsb2F0OmxlZnQ7IHdpZHRoOjI1JTsgZm9udC1zaXplOjAuOGVtOyBwYWRkaW5nLXRvcDoxNXB4OyBwYWRkaW5nLWJvdHRvbToxNXB4OyBiYWNrZ3JvdW5kLWNvbG9yOjsgfSAuYkNvZGVTb3J0IHsgZmxvYXQ6bGVmdDsgd2lkdGg6MTYlOyBiYWNrZ3JvdW5kLWNvbG9yOjsgZm9udC1zaXplOjAuOGVtOyBwYWRkaW5nLXRvcDoxNXB4OyBwYWRkaW5nLWJvdHRvbToxNXB4OyB9IC5iQ29kZVNvcnQgLmJDb2RlSGVhZGluZywgLmJDb2RlU3R5bGUgLmJDb2RlSGVhZGluZyB7IG1hcmdpbi1ib3R0b206NXB4OyBmb250LXdlaWdodDpib2xkOyBwYWRkaW5nLWxlZnQ6MnB4OyB9IC5wYWdlX25hbWU0Mnt3aWR0aDo5NDBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MCAwcHggMTBweCAyMXB4OyBsaW5lLWhlaWdodDozMHB4OyBmb250LXNpemU6MS41cmVtIDsgY29sb3I6IzAwMDAwMDt9IC5wYWdlX25hbWU0MiBoMiB7Zm9udC1zaXplOjEuNXJlbSA7IGNvbG9yOiMwMDAwMDA7Zm9udC13ZWlnaHQ6bm9ybWFsO2JvcmRlcjpub25lO30gLnBhZ2VfbmFtZTQyIGgyLm5vdGZpcnN0IHtmb250LXNpemU6MS41cmVtIDsgY29sb3I6IzAwMDAwMDtmb250LXdlaWdodDpub3JtYWw7bWFyZ2luLXRvcDowcHg7cGFkZGluZy10b3A6NDBweDtib3JkZXItdG9wOjFweCAjY2NjY2NjIHNvbGlkO3dpZHRoOjkyMHB4O30gI2ZpbHRlck1haW5Cb3gubmV3Y2Fyc3N0eWxlMnsgLW1vei1ib3JkZXItcmFkaXVzOjBweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjBweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6MHB4OyBib3JkZXItcmFkaXVzOjBweDsgYm9yZGVyOm5vbmU7IGJvcmRlci10b3A6MXB4IHNvbGlkICNiZWJlYmU7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNiZWJlYmU7IHdpZHRoOjk1NXB4OyBsZWZ0OjNweDsgfSBkaXYuaW1kZXYgbGFiZWx7IGZvbnQtd2VpZ2h0OmJvbGQ7IHBhZGRpbmctdG9wOjEwcHg7IH0gZGl2LmltZGV2IGRpdnsgYmFja2dyb3VuZDpub25lOyBiYWNrZ3JvdW5kLWNvbG9yOiNEOUQ5RDk7IHBhZGRpbmc6MTBweCAwcHggMTBweCAwcHg7IHdpZHRoOjEwMCU7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IH0gZGl2LmltZGV2X2lubmVyIHsgZm9udC13ZWlnaHQ6bm9ybWFsOyBtYXJnaW4tbGVmdDozMHB4OyB3aWR0aDo5MCUgIWltcG9ydGFudDsgfSB1bC5xdWl6IHtwYWRkaW5nOjEwcHggMCAxMHB4IDIwcHg7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBoZWlnaHQ6MTc1cHg7fSB1bC5xdWl6IGxpIHtwYWRkaW5nOjEwcHg7fSB1bC5xdWl6IGxpIGlucHV0IHttYXJnaW4tcmlnaHQ6MTBweDt9IC5uZXdzLWJvZHkge3dpZHRoOjEwMCU7dGV4dC1hbGlnbjpyaWdodDtmb250LXNpemU6MC44MTNyZW0gO2NvbG9yOiMxOTE5MTk7cGFkZGluZy1yaWdodDoxNXB4O21hcmdpbi10b3A6LTIwcHg7cGFkZGluZy1ib3R0b206MTBweDt9IC5uZXdzLWFsbC10ZXh0IHtjb2xvcjojMTkxOTE5O30gI25ld3NDb250YWluZXIgLnRleHRfYm94MTEgaW1nIHsgbWF4LXdpZHRoOjY0MHB4OyBkaXNwbGF5OmJsb2NrOyBtYXJnaW46NXB4IGF1dG87IH0gI25ld3NDb250YWluZXIgLnVzZWR7IGNsZWFyOmJvdGg7IH0gLmhvbWVfYWN0aW9uX2FkaiB7IHdpZHRoOjk2MXB4OyB9IC5ob21lX2FjdGlvbl9hZGoyIHsgd2lkdGg6NzMwcHghaW1wb3J0YW50OyBoZWlnaHQ6NjAwcHghaW1wb3J0YW50OyB9IC5ob21lX2VtYWlseyB3aWR0aDoyMzJweDsgbWFyZ2luLWxlZnQ6NXB4OyBtYXJnaW4tYm90dG9tOjVweDsgfSAud2lkZ2V0X21lbnVfYWRqMXsgZm9udC1zaXplOjAuOGVtOyB9IC53aWRnZXRfbWVudV9hZGoyeyBmbG9hdDpyaWdodDtwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6LTJweDsgfSAud2lkZ2V0X21lbnVfZXh0ZW5kZWRQaG9uZXsgZm9udC1zaXplOjAuOGVtOyBtYXJnaW4tbGVmdDoxMDRweDsgdG9wOjEzMnB4OyB9IC53aWRnZXRfbWVudV9hZGozeyBmb250LXNpemU6MC44ZW07Y29sb3I6IzU3NTc1Nztwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0Oi04cHg7IH0gLndpZGdldF9tZW51X2FkajR7IHBvc2l0aW9uOnJlbGF0aXZlOyBmb250LXNpemU6MC44ZW07IGRpc3BsYXk6dGFibGU7IH0gLnBob25lX3RleHQucmlnaHQgeyBmbG9hdDpub25lOyBoZWlnaHQ6aW5pdGlhbDsgbWFyZ2luLWxlZnQ6YXV0bzsgd2lkdGg6aW5oZXJpdDsgfSAucGhvbmVfdGV4dCAudGVsIHsgbWFyZ2luLWxlZnQ6MTBweDsgfSAucGhvbmVfdGV4dCBsYWJlbCB7IGRpc3BsYXk6ZmxleDsganVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47IG1hcmdpbi1ib3R0b206NHB4OyB9IC53aWRnZXRfbWVudV9hZGo0LnJpZ2h0IHsgcGFkZGluZy1sZWZ0OjEwcHg7IHRleHQtYWxpZ246cmlnaHQ7IH0gLndpZGdldF9tZW51X2FkajQubGVmdCB7IHBhZGRpbmctcmlnaHQ6MTBweDsgd2lkdGg6aW5oZXJpdDsgfSAud2lkZ2V0X21lbnVfYWRqNnsgZm9udC1zaXplOjAuOGVtO3Bvc2l0aW9uOnJlbGF0aXZlO2xlZnQ6LTNweDtjb2xvcjojNTc1NzU3O2N1cnNvcjpwb2ludGVyOyB9IC53aWRnZXRfZXhwcmVzc19tYWlsX3Bob25lX3RpdGxleyBib3JkZXItYm90dG9tOjFweCBzb2xpZCAjYWFhO3RleHQtYWxpZ246IGNlbnRlcjtmb250LXNpemU6MS41cmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgcGFkZGluZy1ib3R0b206OHB4OyBwYWRkaW5nLXRvcDo4cHg7IGNvbG9yOiMwMDAwMDA7IH0gLndpZGdldF9leHByZXNzX21haWxfYWRqMXsgcGFkZGluZzoxNXB4IDEwcHg7IGxpbmUtaGVpZ2h0OjYwcHg7IGZvbnQtc2l6ZToyZW07IHBhZGRpbmc6MTVweCAxMHB4O3RleHQtYWxpZ246Y2VudGVyOyB9IC5iYW5uZXJQb3B1cENsb3NleyBsZWZ0OjcxMHB4OyBwb3NpdGlvbjpyZWxhdGl2ZTsgd2lkdGg6MTVweDsgdG9wOjIwcHg7IGN1cnNvcjpwb2ludGVyOyB9IC5wcmljZU5vdGUgeyBjb2xvcjojNzU3NTc1OyBmb250LXN0eWxlOml0YWxpYzsgdGV4dC1hbGlnbjpqdXN0aWZ5OyBkaXNwbGF5OmJsb2NrOyBwYWRkaW5nLXJpZ2h0OjEwcHg7IGZvbnQtc2l6ZTowLjc1cmVtICFpbXBvcnRhbnQ7IG1hcmdpbi1ib3R0b206MTRweDsgfSAuc3RhY2tlZERpc2NsYWltZXJ7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbi10b3A6MTBweDsgfSBzcGFuLnN0YWNrZWREaXNjbGFpbWVyOmJlZm9yZXsgY29udGVudDoiKioiOyBwb3NpdGlvbjpyZWxhdGl2ZTsgZm9udC1zaXplOjFyZW07IH0gLnRvcHJpbnR7IGRpc3BsYXk6bm9uZTsgfSAucmVmZmVyZW5jZUNvbnRlbnREZW1vLCAucmVmZmVyZW5jZUNvbnRlbnRDbGVhcmFuY2V7IHBhZGRpbmc6MzBweCAyMHB4OyBib3JkZXItYm90dG9tOjFweCBzb2xpZCAjY2NjOyBtYXJnaW4tYm90dG9tOjIwcHg7IH0gLmJveDJfZGV0YWlsc190ZXh0MiAuY29tcGFyZUJ1dHRvbiwgLmJveDJfZGV0YWlsc190ZXh0MjIgLmNvbXBhcmVCdXR0b257IHBvc2l0aW9uOmFic29sdXRlOyBtYXJnaW4tdG9wOi0yMHB4OyB6LWluZGV4OjE7IGxlZnQ6LTMwcHg7IH0gLnZkcHsgY2xlYXI6Ym90aDsgd2lkdGg6MTYwcHg7IH0gLmNvbXBhcmVCdXR0b257IHRyYW5zaXRpb246Ym94LXNoYWRvdyAwLjI1cyBlYXNlLW91dCAwczsgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gMC4yNXMgZWFzZS1vdXQgMHM7IGRpc3BsYXk6bm9uZTsgfSBkaXYjc2xpZGVyLXByby0xMiB7IGJvcmRlcjoxcHggc29saWQgI0VCRUJFQjsgYm9yZGVyLXJhZGl1czozcHg7IGJhY2tncm91bmQ6I2ZmZjsgfSAjc2xpZGVyUHJvbW9BbGVydHsgYm9yZGVyLXJhZGl1czozcHggM3B4IDAgMDsgfSAuc2xpZGUtd3JhcHBlcnsgYm9yZGVyLXJhZGl1czozcHg7IH0gI3NsaWRlaXQgbGFiZWwub3BlbnsgYm9yZGVyLXJhZGl1czozcHggMCAwIDNweDsgfSBpbWcuaW1hZ2UgeyBib3JkZXItcmFkaXVzOjNweDsgfSAubmV3VmRwVmlld2VyIC5jb21wYXJlQnV0dG9ueyBwb3NpdGlvbjphYnNvbHV0ZTsgYm90dG9tOjJweDsgcmlnaHQ6MHB4OyB6LWluZGV4OjExMTE7IH0gLmxpdmVBbGVydF9saW5reyBjb2xvcjojRkZGRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAubGl2ZUFsZXJ0X2xpbms6aG92ZXIgeyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyB9IC5idXR0b24tdG9hc3RyeyBiYWNrZ3JvdW5kOiNGRkY7cGFkZGluZzo0cHggMjBweDtib3JkZXItcmFkaXVzOjVweDsgY29sb3I6I0JEMzYyRiFpbXBvcnRhbnQ7IH0gLmJ1dHRvbi10b2FzdHI6aG92ZXJ7IGJhY2tncm91bmQ6IzAwMDsgY29sb3I6I0ZGRjsgfSAucmV0dXJuUG9wdXBfc3VibWl0IHNwYW4geyBwb3NpdGlvbjphYnNvbHV0ZSFpbXBvcnRhbnQ7IHRvcDo1MCUhaW1wb3J0YW50OyBkaXNwbGF5OmJsb2NrIWltcG9ydGFudDsgdGV4dC1hbGlnbjpjZW50ZXIhaW1wb3J0YW50OyBsZWZ0OjAhaW1wb3J0YW50OyByaWdodDowIWltcG9ydGFudDsgcGFkZGluZzowIDhweCAwIDhweCFpbXBvcnRhbnQ7IGN1cnNvcjpwb2ludGVyIWltcG9ydGFudDsgZm9udC1zaXplOjAuODc1cmVtICFpbXBvcnRhbnQ7IG1hcmdpbjowIWltcG9ydGFudDsgY29sb3I6I0ZGRiFpbXBvcnRhbnQ7IG1hcmdpbi10b3A6LTlweCFpbXBvcnRhbnQ7IH0gcmV0dXJuUG9wdXBfc3VibWl0OmhvdmVyIHsgYmFja2dyb3VuZC1jb2xvcjojMGJiMWUwOyBjb2xvcjojZmZmOyB9IC5yZXR1cm5Qb3B1cF9zdWJtaXQgeyBkaXNwbGF5OmJsb2NrOyBib3JkZXItc3R5bGU6c29saWQ7IGJvcmRlci1yYWRpdXM6NXB4OyBsZWZ0OjIyOHB4OyB6LWluZGV4OjU7IHdpZHRoOjIyNXB4OyBoZWlnaHQ6NDBweDsgcG9zaXRpb246YWJzb2x1dGU7IGJhY2tncm91bmQtY29sb3I6IzAwYWFkMjsgdGV4dC1zaGFkb3c6MXB4IDFweCAjMDAyYjQ2OyBjb2xvcjojZmZmOyBib3JkZXItd2lkdGg6MXB4OyBib3JkZXItY29sb3I6IzMzMzMzMzsgZm9udC1zaXplOjFyZW0gOyBsaW5lLWhlaWdodDoxOXB4OyBmb250LXdlaWdodDpub3JtYWw7IHRleHQtYWxpZ246Y2VudGVyOyBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7IH0gI3JldHVyblBvcHVwRm9ybV93cmFwcGVyIHsgZGlzcGxheTpibG9jazsgYmFja2dyb3VuZDpyZ2JhKDY2LDY2LDY2LDEpOyBib3JkZXItc3R5bGU6bm9uZTsgYm9yZGVyLXJhZGl1czoxMXB4OyBsZWZ0OjI4MHB4OyB0b3A6MTU1cHg7IHotaW5kZXg6Mjsgd2lkdGg6NTMxcHg7IGhlaWdodDozODRweDsgcG9zaXRpb246YWJzb2x1dGU7IH0gI3JldHVyblBvcHVwVGlsdGV7IHdpZHRoOjMzNXB4OyBmbG9hdDpyaWdodDsgbWFyZ2luOjIwcHg7IGNvbG9yOiMwMDAwMDA7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IH0gI3JldHVyblBvcHVwVGlsdGUgLnJwX21jeyBmb250LXNpemU6MS4xMjVyZW0gIWltcG9ydGFudDsgfSAjcmV0dXJuUG9wdXBUaWx0ZTJ7IGNvbG9yOiNGRkY7IG1hcmdpbjoyMHB4IDEwcHggMjBweCAyMHB4OyBwYWRkaW5nOjA7IH0gLnJldHVyblBvcHVwRm9ybV9sYWJlbCB7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgZm9udC1zaXplOjAuODEzcmVtIDsgbGluZS1oZWlnaHQ6MTRweDsgY29sb3I6I2JmYmZiZjsgbWFyZ2luLWxlZnQ6MjBweDsgZGlzcGxheTppbmxpbmUtYmxvY2s7IH0gLnJldHVyblBvcHVwRm9ybV90YWJsZSB0ciB0ZHsgcGFkZGluZy1ib3R0b206MTBweDsgfSAucnBfbWMgeyBmb250LXNpemU6MC44NzVyZW0gIWltcG9ydGFudDsgY29sb3I6IzAwYWFkMiFpbXBvcnRhbnQ7IHBhZGRpbmc6MCFpbXBvcnRhbnQ7IG1hcmdpbjowIWltcG9ydGFudDsgfSAjZXhpdFBvcHVwQ29udGFpbmVyeyBwYWRkaW5nOjA7IGJhY2tncm91bmQtaW1hZ2U6bm9uZTsgfSAjZXhpdF9wb3B1cF9hY2N1dHJhZGVfZm9ybXsgaGVpZ2h0OjM0cmVtOyBiYWNrZ3JvdW5kLWltYWdlOnVybCgvaW1hZ2VzL3BvcHVwcy90cmFkZWluLWV4aXRwb3B1cC1mci5wbmcpOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWV4aXQtcG9wdXAtYmdjb2wsICNlZWUpOyB9IGJvZHkuRU5HTElTSCAjZXhpdF9wb3B1cF9hY2N1dHJhZGVfZm9ybXsgYmFja2dyb3VuZC1pbWFnZTp1cmwoL2ltYWdlcy9wb3B1cHMvdHJhZGVpbi1leGl0cG9wdXAtZW4ucG5nKTsgfSAuZXhpdF9wb3B1cF9idXR0b25zIGJ1dHRvbiB7IHdpZHRoOjExcmVtOyBmb250LXdlaWdodDpib2xkOyB9IC5leGl0X3BvcHVwX3RleHRfbGluZV8yeyBtYXJnaW4tdG9wOjI3cHg7IG1hcmdpbi1ib3R0b206NXB4OyB9IC5leGl0X3BvcHVwX3RleHRfbGluZV8zeyBmb250LXNpemU6MS42MjVyZW0gOyBtYXJnaW4tYm90dG9tOjNweDsgZm9udC13ZWlnaHQ6Ym9sZGVyOyB9IC5leGl0X3BvcHVwX3RleHRfbGluZV81IHsgbWFyZ2luLWJvdHRvbToyMHB4OyBmb250LXNpemU6MS42MjVyZW0gOyBmb250LXdlaWdodDpib2xkZXI7IG1hcmdpbi10b3A6NjNweDsgfSAjZXhpdF9wb3B1cF9hY2N1dHJhZGVfdGl0bGV7IGhlaWdodDo5NXB4OyB3aWR0aDo1NzBweDsgbWFyZ2luLXRvcDoyMHB4OyB9ICNleGl0X3BvcHVwX2FjY3V0cmFkZV90aXRsZS5fRlJFTkNIeyBiYWNrZ3JvdW5kLWltYWdlOnVybCgvaW1hZ2VzL3BvcHVwcy9hY2N1LXRyYWRlLWV4aXQtdGl0bGVfZnIucG5nKTsgfSAjZXhpdF9wb3B1cF9hY2N1dHJhZGVfdGl0bGUuX0VOR0xJU0h7IGJhY2tncm91bmQtaW1hZ2U6dXJsKC9pbWFnZXMvcG9wdXBzL2FjY3UtdHJhZGUtZXhpdC10aXRsZV9lbi5wbmcpOyB9ICNiZXN0UHJpY2VWZHBOZXdQb3B1cENvbnRhaW5lcnsgd2lkdGg6NDgwcHg7IGhlaWdodDo1MTBweDsgfSAjYmVzdFByaWNlVmRwTmV3UG9wdXBDb250YWluZXIgLnBvcHVwX2JneyB3aWR0aDo0ODBweDsgaGVpZ2h0OjUxNXB4OyB9ICNiZXN0UHJpY2VWZHBOZXdQb3B1cENvbnRhaW5lciAucG9wdXBfYmd7IGJhY2tncm91bmQtaW1hZ2U6dXJsKCcvaW1hZ2VzL3BvcHVwcy9mci9iZXN0UHJpY2VOZXdWZHAucG5nJyk7IH0gLnBvcHVwX2JneyBiYWNrZ3JvdW5kLWNvbG9yOiNlNGRjZDM7IGJhY2tncm91bmQtc2l6ZTo0ODBweCA1MTVweDsgfSAucG9wdXBGb3JtIC5hc3Rlcmlza3sgY29sb3I6I2QwMDsgZm9udC13ZWlnaHQ6Ym9sZDsgcGFkZGluZzowOyBmb250LXNpemU6aW5oZXJpdDsgbWFyZ2luOjA7IH0gLnBvcHVwRm9ybXsgei1pbmRleDo1MDsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDoyNDhweDsgaGVpZ2h0OjI0OXB4OyBsZWZ0OjgwcHg7IGJhY2tncm91bmQ6dXJsKCIvaW1hZ2VzL2NvdXBvbi1mb3JtLWJnLTIucG5nIikgbm8tcmVwZWF0OyB3aWR0aDozMzVweDsgcGFkZGluZzozMHB4OyB9IC5wb3B1cEZvcm1UaXRsZXsgaGVpZ2h0OjQwcHg7IG1hcmdpbjo4cHg7IGZvbnQtc2l6ZTowLjkzOHJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gLnBvcHVwRm9ybUlucHV0cyB0ZCB7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IHRleHQtYWxpZ246cmlnaHQ7IHBhZGRpbmctcmlnaHQ6MTBweDsgcGFkZGluZy1ib3R0b206M3B4OyB9IC5wb3B1cEZvcm0gaW5wdXR7IHdpZHRoOjIxMHB4OyB9ICNhc1B1cmNoYXNlSW50ZW50eyB3aWR0aDo2MDBweDsgcGFkZGluZzozMHB4IDMwcHg7IGhlaWdodDphdXRvOyBjb2xvcjojMDAwOyBiYWNrZ3JvdW5kLWNvbG9yOiNlZWU7IHotaW5kZXg6MTAwMDAyMTsgfSAjcHJvbW9EaXNjb3ZlckJ1dHRvbnsgfSAubmV3VmRwVmlld2VyIHsgd2lkdGg6NjQwcHg7IGhlaWdodDo0ODBweDsgZmxvYXQ6bGVmdDsgbWFyZ2luLWxlZnQ6MjBweDsgfSAubG9jYXRpb24tbmFtZXMgeyBwb3NpdGlvbjpzdGF0aWM7IH0gI01haW5NZW51X0RFQUxFUlNISVBTID4gdWwuc3ViID4gbGkgPiB1bCB7IHBvc2l0aW9uOnN0YXRpYzsgfSAuaW1nX21lbnUudXBfbWVudSB1bC5uYXYgdWwuc3ViIGxpIC5sb2NhdGlvbi1uYW1lcyB7IG1pbi13aWR0aDoyMDBweDsgfSAjTWFpbk1lbnVfREVBTEVSU0hJUFMgbGkubG9jYXRpb24tbmFtZXMgeyBtaW4td2lkdGg6MjAwcHg7IH0gLmxvY2F0aW9uLW5hbWVzLCAubG9jYXRpb24tbmFtZXMgbGkgeyBsaXN0LXN0eWxlOm5vbmU7IH0gLkwxMDAgeyBsZWZ0OjEwMCU7IH0gLlIxMDAgeyByaWdodDoxMDAlOyB9IC5sb2NhdGlvbi1uYW1lcyAubG9jYXRpb24tZGV0YWlscyB7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MDsgcGFkZGluZzoxNHB4OyBib3gtc2hhZG93OjAgNnB4IDEycHggcmdiYSgwLDAsMCwuMTc1KTsgZGlzcGxheTpub25lOyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyBtaW4td2lkdGg6MjkwcHg7IH0gLmxvY2F0aW9uLW5hbWVzIC5sb2NhdGlvbi1kZXRhaWxzID4gLnRpdGxlIHsgbWFyZ2luLWJvdHRvbToxZW07IGZvbnQtc2l6ZTppbml0aWFsOyBjb2xvcjojMDAwMDAwOyB9IC5sb2NhdGlvbi1uYW1lcyAubG9jYXRpb24tZGV0YWlscyA+IC5sb2NhdGlvbi1kZXRhaWxzLWxvZ28gPiBpbWcgeyBtYXgtd2lkdGg6MTAwJTsgbWFyZ2luLWJvdHRvbTo4cHg7IH0gbGkubG9jYXRpb24tbmFtZXM6aG92ZXIgLmxvY2F0aW9uLWRldGFpbHMgeyBkaXNwbGF5OmJsb2NrOyB9IGxpLmxvY2F0aW9uLW5hbWVzOmhvdmVyIC5tYWlubWVudS1zdWJtZW51IHsgb3BhY2l0eToxOyB2aXNpYmlsaXR5OnZpc2libGU7IH0gLmxvY2F0aW9uLW5hbWVzIC5sb2NhdGlvbi1kZXRhaWxzIC5sb2NhdGlvbi1kZXRhaWxzLWxvZ28geyBib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZTVlNWU1OyBtYXJnaW4tYm90dG9tOjhweDsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gI01haW5NZW51X0RFQUxFUlNISVBTIC5sb2NhdGlvbi1uYW1lcyAubWFpbm1lbnUtc3VibWVudSAubG9jYXRpb24tZGV0YWlscyB7IG1heC1oZWlnaHQ6NjB2aDsgcG9zaXRpb246c3RhdGljOyB9IC51cF9tZW51IHVsLm5hdiAubG9jYXRpb24tZGV0YWlscy1pbmZvIGEgeyBjb2xvcjojMDAwMDAwOyBwYWRkaW5nOjA7IH0gLmxvY2F0aW9uLWRldGFpbHMtaW5mbyAubG9jYXRpb24tc3BhY2luZy1tbC0xMyB7IG1hcmdpbi1sZWZ0OjEzLjQ5cHg7IH0gLnVwX21lbnUgdWwubmF2IGxpLmRldGFpbHMtaW5mby1saW5rIGEgeyBkaXNwbGF5OmlubGluZS1ibG9jazsgfSAudXBfbWVudSB1bC5uYXYgLmRldGFpbHMtaW5mby1saW5rOmhvdmVyIGEgeyBjb2xvcjojZmZmZmZmOyB9ICNNYWluTWVudV9ERUFMRVJTSElQUyA+IHVsLnN1YiA+IGxpID4gdWwgeyBtYXgtaGVpZ2h0OjYwdmg7IG92ZXJmbG93LXk6YXV0bzsgb3ZlcmZsb3cteDpoaWRkZW47IH0gYm9keSAud3JhcHBlciAudXBfbWVudSAubmF2ID4gbGk6aG92ZXIgdWwuc3ViIGxpOmhvdmVyIC5kZXRhaWxzLWluZm8tbGluayBsaTpob3ZlciBhIHsgZGlzcGxheTppbmxpbmUtYmxvY2s7IGJhY2tncm91bmQtaW1hZ2U6bm9uZTsgY29sb3I6I2ZmZmZmZjsgYmFja2dyb3VuZC1jb2xvcjojMDA3ZmE1OyB9IGxpLmRldGFpbHMtaW5mby1saW5rOmhvdmVyIHsgYmFja2dyb3VuZC1jb2xvcjojMDA3ZmE1OyBjb2xvcjojZmZmZmZmOyB9IC5sb2NhdGlvbi1kZXRhaWxzLWluZm8gdWwgbGkgeyBwYWRkaW5nLXRvcDo0cHg7IHBhZGRpbmctYm90dG9tOjRweDsgZm9udC13ZWlnaHQ6MjAwOyBmb250LXNpemU6MC44NzVyZW0gOyBtYXJnaW4tYm90dG9tOjVweDsgfSAubG9jYXRpb24tZGV0YWlscy1pbmZvID4gdWwgPiBsaTpiZWZvcmUgeyBjb250ZW50OiIgIjsgYm9yZGVyOnNvbGlkOyBib3JkZXItd2lkdGg6MCAycHggMnB4IDA7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyBwYWRkaW5nOjJweDsgYm9yZGVyLXJhZGl1czoycHg7IHRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKTsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC00NWRlZyk7IG1hcmdpbi1yaWdodDo3cHg7IG1hcmdpbi1ib3R0b206MXB4OyB9ICNNYWluTWVudV9ERUFMRVJTSElQUyB1bCB7IHBhZGRpbmc6MDsgfSBAbWVkaWEgcHJpbnR7IC50b3ByaW50eyBkaXNwbGF5OmJsb2NrO30gfSAubXItMTUgeyBtYXJnaW4tcmlnaHQ6MTVweDsgfSAubWwtMTUgeyBtYXJnaW4tbGVmdDoxNXB4OyB9IC5tbC03IHsgbWFyZ2luLWxlZnQ6N3B4OyB9IHNwYW4uYXJyb3cgeyBib3JkZXI6c29saWQ7IGJvcmRlci13aWR0aDowIDJweCAycHggMDsgZGlzcGxheTppbmxpbmUtYmxvY2s7IHBhZGRpbmc6MnB4OyBib3JkZXItcmFkaXVzOjFweDsgcG9zaXRpb246cmVsYXRpdmU7IHRvcDotMnB4OyB9IHNwYW4uYXJyb3cuYXJyb3ctbGFyZ2UgeyBib3JkZXItd2lkdGg6MCAzcHggM3B4IDA7IHBhZGRpbmc6NHB4OyBib3JkZXItcmFkaXVzOjNweDsgfSBzcGFuLmFycm93LmFycm93LXJpZ2h0IHsgdHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpOyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKTsgfSBzcGFuLmFycm93LmFycm93LWxlZnQgeyB0cmFuc2Zvcm06cm90YXRlKDEzNWRlZyk7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgxMzVkZWcpOyB9IHNwYW4uYXJyb3cuYXJyb3ctdXAgeyB0cmFuc2Zvcm06cm90YXRlKC0xMzVkZWcpOyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTEzNWRlZyk7IH0gc3Bhbi5hcnJvdy5hcnJvdy1kb3duIHsgdHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyk7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyk7IH0gLnRvcGJhcjNidG5XcmFweyBib3JkZXItcmFkaXVzOjVweDsgYmFja2dyb3VuZC1jb2xvcjojMDAyYzVmOyBib3JkZXI6MnB4IHNvbGlkICNmZmZmZmY7IHZlcnRpY2FsLWFsaWduOm1pZGRsZTsgaGVpZ2h0OjQycHg7IHBhZGRpbmc6MCAyMHB4OyBjb2xvcjojZmZmZmZmOyB9IC50b3BiYXIzYnRueyBmb250LXdlaWdodDpib2xkOyB0cmFuc2l0aW9uOi4yczsgZm9udC1zaXplOjAuODc1cmVtIDsgdGV4dC10cmFuc2Zvcm06Y2FwaXRhbGl6ZTsgYm9yZGVyLWNvbG9yOndoaXRlOyB0ZXh0LWFsaWduOmNlbnRlcjsgY3Vyc29yOnBvaW50ZXI7IGRpc3BsYXk6YmxvY2s7IHRleHQtZGVjb3JhdGlvbjpub25lOyBjb2xvcjppbmhlcml0OyB9IC50cmFkZUluQmFyX2J0bnsgZm9udC13ZWlnaHQ6Ym9sZDsgYm9yZGVyLXJhZGl1czo1cHg7IHRleHQtdHJhbnNmb3JtOnZhcigtLWNlcnQtdHh0LXRyYW5zZm9ybSwgdmFyKC0tdHh0LXVwcGVyKSk7IHRyYW5zaXRpb246LjJzOyBib3JkZXI6MnB4IHNvbGlkIHRyYW5zcGFyZW50OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjp3aGl0ZTsgYm9yZGVyLWNvbG9yOndoaXRlOyB0ZXh0LWFsaWduOmNlbnRlcjsgY3Vyc29yOnBvaW50ZXI7IGhlaWdodDo1MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiMwMDJjNWY7IGNvbG9yOiAjZmZmZmZmOyBib3JkZXI6MnB4IHNvbGlkICNmZmZmZmY7IG1pbi13aWR0aDoyMDBweDsgbWF4LXdpZHRoOjIwMHB4OyB9IC50cmFkZUluQmFyX2J0bjpob3ZlciwudG9wYmFyM2J0bldyYXA6aG92ZXJ7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgY29sb3I6IzAwMmM1ZiFpbXBvcnRhbnQ7IH0gI2dSYXRpbmdMYXJnZXsgYmFja2dyb3VuZDojMDA0YjhkOyBjb2xvcjojZmZmZmZmOyBib3JkZXI6MXB4IHNvbGlkICMwMDAwMDA7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6NXB4IDBweDsgbWFyZ2luLXRvcDo1cHg7IGN1cnNvcjpwb2ludGVyOyBib3JkZXItcmFkaXVzOjNweDsgdGV4dC1hbGlnbjpjZW50ZXI7IHdpZHRoOjE1MHB4OyBtYXJnaW4tbGVmdDozMHB4OyB9ICNnUmF0aW5neyBjdXJzb3I6cG9pbnRlcjsgfSAudHJhZGVJblZpbklucHV0eyBoZWlnaHQ6NTBweDsgYm9yZGVyLXJhZGl1czo1cHg7IHRleHQtYWxpZ246Y2VudGVyOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IHdpZHRoOjEwMCU7IGZvbnQtc2l6ZToxcmVtIDsgY29sb3I6IzNjMzgzNjsgYm9yZGVyOjJweCBzb2xpZCAjZmZmZmZmOyB9IC50cmFkZUluVmluSW5wdXQ6OnBsYWNlaG9sZGVyeyBmb250LXNpemU6MXJlbSA7IGNvbG9yOiMzYzM4MzY7IH0gLnRyYWRlSW5PckxhYmVseyBtYXgtd2lkdGg6MjVweDsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIC5uaXZNYWtlTW9kZWxTZWxlY3RDb250YWluZXJ7IHdpZHRoOjEwMCU7IHBhZGRpbmc6MTJweDsgbWFyZ2luLXRvcDoxMHB4OyBmb250LXNpemU6MXJlbSA7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAubml2TWFrZU1vZGVsU2VsZWN0Q29udGFpbmVyIC5uaXZNYWtlTW9kZWxTZWxlY3R7IGRpc3BsYXk6bm9uZTsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIC5uaXZNYWtlTW9kZWxTZWxlY3RDb250YWluZXIgLm5pdk1ha2VNb2RlbFNlbGVjdExhYmVseyBkaXNwbGF5OmlubGluZS1ibG9jazsgbWFyZ2luOjAgMTJweDsgY3Vyc29yOnBvaW50ZXI7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAubml2TWFrZU1vZGVsU2VsZWN0Q29udGFpbmVyIC5uaXZNYWtlTW9kZWxTZWxlY3Q6Y2hlY2tlZCtsYWJlbHsgYm9yZGVyLWJvdHRvbToycHggc29saWQgYmxhY2s7IH0gLnRyYWRpblNlbGVjdFd7IG1pbi13aWR0aDoyMDBweDsgbWF4LXdpZHRoOjIwMHB4OyB9IC50cmFkaW5TZWxlY3RXLndpdGhWSU5NYWtleyBtaW4td2lkdGg6MTQwcHg7IG1heC13aWR0aDoxNDBweDsgfSAudHJhZGluU2VsZWN0Vy53aXRoVklOWWVhcnsgbWluLXdpZHRoOjgwcHg7IG1heC13aWR0aDo4MHB4OyB9IC50cmFkaW5JbnB1dFd7IG1pbi13aWR0aDoyMDBweDsgbWF4LXdpZHRoOjIwMHB4OyB9IC50cmFkaW5TZWxlY3RBeyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAudHJhZGluU2VsZWN0QTphZnRlciB7IGNvbnRlbnQ6IiAiOyBoZWlnaHQ6MDsgd2lkdGg6MDsgYm9yZGVyLWxlZnQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItcmlnaHQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItdG9wOjVweCBzb2xpZCAjMDAwMDAwOyBwb3NpdGlvbjphYnNvbHV0ZTsgcmlnaHQ6MTRweDsgdG9wOjE3cHg7IHRyYW5zaXRpb246YWxsIDAuM3MgbGluZWFyOyBwb2ludGVyLWV2ZW50czpub25lOyB9IC50cmFkaW5TZWxlY3R7IGNvbG9yOiMzYzM4MzY7IGJvcmRlcjoycHggc29saWQgI2ZmZmZmZjsgYm9yZGVyLXJhZGl1czo1cHg7IHBhZGRpbmc6MTBweCAxMHB4OyBmb250LXNpemU6MXJlbSA7IGJhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwxKTsgYmFja2dyb3VuZC1wb3NpdGlvbjo5NSUgNTAlOyB3aWR0aDoxMDAlOyAtd2Via2l0LWFwcGVhcmFuY2U6bm9uZTsgLW1vei1hcHBlYXJhbmNlOm5vbmU7IHBhZGRpbmctcmlnaHQ6MjdweDsgaGVpZ2h0OjUwcHg7IH0gLnRyYWRpblNlbGVjdDphZnRlciB7IGNvbnRlbnQ6IiAiOyBoZWlnaHQ6MDsgd2lkdGg6MDsgYm9yZGVyLWxlZnQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItcmlnaHQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItdG9wOjVweCBzb2xpZCAjMDAwMDAwOyBwb3NpdGlvbjphYnNvbHV0ZTsgcmlnaHQ6MTRweDsgdG9wOjE3cHg7IHRyYW5zaXRpb246YWxsIDAuM3MgbGluZWFyOyB9IC5tdWx0aXNlbGVjdFZlaGljbGVPcHRpb25zIHNwYW57IGZvbnQtc2l6ZTowLjkzOHJlbSAhaW1wb3J0YW50OyBwYWRkaW5nOjAgIWltcG9ydGFudDsgbWFyZ2luOjAgIWltcG9ydGFudDsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIC50cmFkZUluQmFyTXVsdGlzZWxlY3R7IHdpZHRoOjU2OHB4IWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czowLjNyZW0haW1wb3J0YW50OyBib3JkZXItd2lkdGg6MXB4IWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czowLjNyZW0haW1wb3J0YW50OyBib3JkZXItY29sb3I6I2E5YTlhOSFpbXBvcnRhbnQ7IH0gLnVpLW11bHRpc2VsZWN0LW1lbnUudHJhZGVJbkJhck11bHRpc2VsZWN0eyBtaW4td2lkdGg6MjcycHg7IHotaW5kZXg6MTAwMDAyMDsgbWF4LWhlaWdodDoxMjBweDsgb3ZlcmZsb3c6c2Nyb2xsOyB9IC50cmFkZUluQmFyRGVhbGVyU3RlcHsgdGV4dC1hbGlnbjpjZW50ZXI7IG1hcmdpbi10b3A6MjVweDsgfSAudHJhZGVJbkJhckRlYWxlclN0ZXAgLnRyYWRlSW5CYXJEZWFsZXJTdGVwTWFrZU1vZGVsWWVhcnsgZm9udC13ZWlnaHQ6NzAwOyB9IC50cmFkZUluQmFyRGVhbGVyU3RlcCBzcGFueyBtYXJnaW46MCFpbXBvcnRhbnQ7IGZvbnQtd2VpZ2h0OjcwMCFpbXBvcnRhbnQ7IGNvbG9yOiMwMDAwMDAhaW1wb3J0YW50OyB9IEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDoxMDI0cHgpIHsgLnRyYWRpblNlbGVjdFcgeyBtaW4td2lkdGg6Y2FsYygoMjAwcHggLSB2YXIoLS1zKSkgLSB2YXIoLS1zLCAwLjVyZW0pKTsgbWF4LXdpZHRoOmNhbGMoKDIwMHB4IC0gdmFyKC0tcykpIC0gdmFyKC0tcywgMC41cmVtKSk7IH0gfSAjZ29vZ2xlUmV2aWV3c0Zvb3RlcnsgbWFyZ2luOjAgYXV0bzsgYmFja2dyb3VuZC1jb2xvcjojZmZmOyBib3JkZXItcmFkaXVzOjVweDsgbWF4LXdpZHRoOjk0MHB4OyBoZWlnaHQ6Mjc1cHg7IH0gLnJldmlldy1pdGVtIHsgZmxvYXQ6bGVmdDsgaGVpZ2h0OjE4NXB4OyB3aWR0aDoxMDAlOyBtYXgtd2lkdGg6NDYwcHg7IG1hcmdpbi1yaWdodDoxMHB4OyBib3JkZXItdG9wOjRweCBzb2xpZCAjRUJFQkVCOyBwYWRkaW5nLXRvcDoxMHB4OyB9IC5maXJzdGNoYXJ1cDo6Zmlyc3QtbGV0dGVyeyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7IH0gSS5pY29uLWNvbXBhcmUtMSwgc3Bhbi5pY29uLWNvbXBhcmUtMXsgY29sb3I6IzAwMmM1ZjsgfSBJLmljb24tY29tcGFyZS0xOmhvdmVyLCBzcGFuLmljb24tY29tcGFyZS0xOmhvdmVyeyBjb2xvcjojZmZmZmZmICFpbXBvcnRhbnQ7IHRleHQtc2hhZG93OiMwMDJjNWYgMXB4IDFweCwgIzAwMmM1ZiAtMXB4IDFweCwgIzAwMmM1ZiAtMXB4IC0xcHgsICMwMDJjNWYgMXB4IC0xcHg7IGJvcmRlci1yYWRpdXM6MjBweDsgYmFja2dyb3VuZC1jb2xvcjojMDAyYzVmOyB9IC5nUmF0aW5nLWljb24gaSB7IGZvbnQtc2l6ZToxLjA2M3JlbSA7IH0gLmdSYXRpbmctaWNvbiNnUmF0aW5nIHsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IHdpZHRoOjkwcHg7IGhlaWdodDoyOHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiMwMDdmYTU7IGNvbG9yOndoaXRlOyBjb2xvcjojZmZmZmZmOyBjb2xvcjojZmZmZmZmOyBnYXA6N3B4OyB9IC5nUmF0aW5nLWltZyNnUmF0aW5nIHsgYmFja2dyb3VuZC1pbWFnZTp1cmwoL2ltYWdlcy9ncmF0aW5nLnBuZyk7IGNvbG9yOiMzNTZDRjI7IHdpZHRoOjk1cHg7IGhlaWdodDoyOHB4OyBwYWRkaW5nOjRweCAzMXB4IDEwcHggMTBweDsgbWFyZ2luLXRvcDoxcHg7IH0gI2dSYXRpbmd7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgZm9udC1zaXplOjEuMDYzcmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgZGlzcGxheTpibG9jazsgfSBJTlBVVFt0eXBlPSJ0ZXh0Il0udmFsaWRpdHktZXJyb25lb3VzeyBib3JkZXI6MXB4IHNvbGlkICNkYzM1NDU7IGJhY2tncm91bmQtY29sb3I6I2ZhZDZkYyAhaW1wb3J0YW50OyB9IElOUFVUW3R5cGU9InRlbCJdLnZhbGlkaXR5LWVycm9uZW91c3sgYm9yZGVyOjFweCBzb2xpZCAjZGMzNTQ1OyBiYWNrZ3JvdW5kLWNvbG9yOiNmYWQ2ZGMgIWltcG9ydGFudDsgfSBJTlBVVFt0eXBlPSJlbWFpbCJdLnZhbGlkaXR5LWVycm9uZW91c3sgYm9yZGVyOjFweCBzb2xpZCAjZGMzNTQ1OyBiYWNrZ3JvdW5kLWNvbG9yOiNmYWQ2ZGMgIWltcG9ydGFudDsgfSBJTlBVVFt0eXBlPSJwYXNzd29yZCJdLnZhbGlkaXR5LWVycm9uZW91c3sgYm9yZGVyOjFweCBzb2xpZCAjZGMzNTQ1OyBiYWNrZ3JvdW5kLWNvbG9yOiNmYWQ2ZGMgIWltcG9ydGFudDsgfSBIMS5kZWZhdWx0eyBmb250LXNpemU6MS44NzVyZW0gOyBjb2xvcjojMDAwMDAwOyBmb250LXdlaWdodDpub3JtYWw7IGNsZWFyOmJvdGg7IHBhZGRpbmc6MCAwIDI1cHggMDsgfSBIMS5kZWZhdWx0IEF7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9IEgxLmRlZmF1bHQgSS5pY29uLCBIMS5kZWZhdWx0IHNwYW4uaWNvbiB7IGJvcmRlci1yYWRpdXM6MzBweDsgd2lkdGg6MjNweDsgaGVpZ2h0OjI5cHg7IHBhZGRpbmctdG9wOjRweDsgcGFkZGluZy1sZWZ0OjEwcHg7IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZToxLjU2M3JlbSA7IG1hcmdpbi1yaWdodDoxMHB4OyBib3JkZXI6MXB4IHNvbGlkICMwMDAwMDA7IGNvbG9yOiMwMDAwMDA7IGJhY2tncm91bmQtY29sb3I6I2U0ZGNkMzsgYm94LXNpemluZzpjb250ZW50LWJveDsgfSBIMS5kZWZhdWx0IEkuaWNvbi5tdWx0aUxpbmVIMSwgSDEuZGVmYXVsdCBzcGFuLmljb24ubXVsdGlMaW5lSDF7IG1hcmdpbi10b3A6MTBweDsgfSBIMS5kZWZhdWx0IEkuaWNvbi5zaW5nbGVMaW5lSDEsIEgxLmRlZmF1bHQgc3Bhbi5pY29uLnNpbmdsZUxpbmVIMXsgbWFyZ2luLXRvcDoycHg7IH0gSDEuZGVmYXVsdCA+IERJVnsgZGlzcGxheTp0YWJsZS1yb3c7IH0gSDEuZGVmYXVsdCA+IERJViBESVY6bnRoLWNoaWxkKDEpeyBmb250LXdlaWdodDpib2xkOyB9IEgxLmRlZmF1bHQgPiBESVYgRElWOm50aC1jaGlsZCgyKXsgZm9udC13ZWlnaHQ6bm9ybWFsOyBjb2xvcjojNzU3NTc1OyBmb250LXNpemU6MS4xMjVyZW0gOyB9IEgxLmRlZmF1bHQgPiBESVYgRElWOm50aC1jaGlsZCgzKXsgZm9udC1zaXplOjAuOHJlbTsgZm9udC1zaXplOjAuOHJlbTsgY29sb3I6I2JiYjsgcGFkZGluZy10b3A6NXB4OyB9IGgxLmNrZWRpdG9yLWRlZmF1bHQgeyBmb250LXdlaWdodDpib2xkOyBmb250LXNpemU6Mi4xMjVyZW0gOyBwYWRkaW5nOjAgMCAxNXB4IDA7IGNvbG9yOiMwMDAwMDA7IH0gaDEuY2tlZGl0b3ItZGVmYXVsdDo6YmVmb3JlIHsgY29udGVudDoiXGYwNTQiOyBmb250LWZhbWlseTpGb250QXdlc29tZTsgd2lkdGg6MjhweDsgaGVpZ2h0OjM1cHg7IG1hcmdpbi1yaWdodDoxMHB4OyBwYWRkaW5nOjRweCAwIDAgMTFweDsgYm9yZGVyLXJhZGl1czo0MXB4OyBmb250LXNpemU6MS45MzhyZW0gOyBmbG9hdDpsZWZ0OyBib3JkZXI6MXB4IHNvbGlkICMwMDAwMDA7IGNvbG9yOiMwMDAwMDA7IGJhY2tncm91bmQtY29sb3I6I2U0ZGNkMzsgfSBIMi5kZWZhdWx0eyBmb250LXNpemU6MS41cmVtIDsgY29sb3I6IzAwMDAwMDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBjbGVhcjpib3RoOyBwYWRkaW5nOjEwcHggMDsgbWFyZ2luLXRvcDoxMHB4OyB9IEgyLmRlZmF1bHQgSS5pY29uLCBIMi5kZWZhdWx0IHNwYW4uaWNvbnsgYm9yZGVyLXJhZGl1czozMHB4OyB3aWR0aDoyMHB4OyBoZWlnaHQ6MjVweDsgcGFkZGluZy10b3A6NHB4OyBwYWRkaW5nLWxlZnQ6OXB4OyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MS4zNzVyZW0gOyBtYXJnaW4tcmlnaHQ6MTBweDsgYm9yZGVyOjFweCBzb2xpZCAjMDAwMDAwOyBjb2xvcjojMDAwMDAwOyBiYWNrZ3JvdW5kLWNvbG9yOiNlNGRjZDM7IH0gSDIuZGVmYXVsdCBJLmljb24ubXVsdGlMaW5lSDIsIEgyLmRlZmF1bHQgc3Bhbi5pY29uLm11bHRpTGluZUgyeyBtYXJnaW4tdG9wOjdweDsgfSBIMi5kZWZhdWx0IEkuaWNvbi5zaW5nbGVMaW5lSDIsIEgyLmRlZmF1bHQgc3Bhbi5pY29uLnNpbmdsZUxpbmVIMnsgbWFyZ2luLXRvcDowcHg7IH0gSDIuZGVmYXVsdCA+IERJVnsgZGlzcGxheTp0YWJsZS1yb3c7IH0gSDIuZGVmYXVsdCA+IERJViBESVY6bnRoLWNoaWxkKDEpeyBmb250LXdlaWdodDpib2xkOyB9IEgyLmRlZmF1bHQuY3JlZHNpaVVzZWRNaW5IZWlnaHQgLlRpdGxlVGV4dCB7IHdpZHRoOjgwJTsgfSBIMi5kZWZhdWx0ID4gRElWIERJVjpudGgtY2hpbGQoMil7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgY29sb3I6Izc1NzU3NTsgZm9udC1zaXplOjAuOTM4cmVtIDsgfSBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6MTMwMXB4KSB7IGJvZHkuaXNGdWxsV2lkdGhQYWdlLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQgI2ZpcnN0U2xpZGVySW1nIC5wbGFjZWhvbGRlcnsgd2lkdGg6ODAwcHg7IGhlaWdodDo2MDBweDsgfSBib2R5LmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkICNmaXJzdFNsaWRlckltZyBJTUd7IG1heC13aWR0aDo4MDBweDsgbWF4LWhlaWdodDo2MDBweDsgfSBCT0RZLmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIEgxLmRlZmF1bHQgeyB9IEJPRFkuaXNGdWxsV2lkdGhQYWdlLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQgSDEuZGVmYXVsdCA+IERJViBESVY6bnRoLWNoaWxkKDIpeyBmb250LXNpemU6MS40MzhyZW0gOyB9IEJPRFkuaXNGdWxsV2lkdGhQYWdlLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQgSDEuZGVmYXVsdCBJLmljb24sIEJPRFkuaXNGdWxsV2lkdGhQYWdlLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQgSDEuZGVmYXVsdCBzcGFuLmljb24geyB3aWR0aDoyOHB4OyBoZWlnaHQ6MzVweDsgZm9udC1zaXplOjEuOTM4cmVtIDsgcGFkZGluZy1sZWZ0OjExcHg7IGJvcmRlci1yYWRpdXM6NDFweDsgfSBCT0RZLmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIEgxLmRlZmF1bHQgSS5pY29uLm11bHRpTGluZUgxLCBCT0RZLmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIEgxLmRlZmF1bHQgc3Bhbi5pY29uLm11bHRpTGluZUgxeyBtYXJnaW4tdG9wOjExcHg7IH0gQk9EWS5pc0Z1bGxXaWR0aFBhZ2UuaXNQYWdlRnVsbFdpZHRoRW5hYmxlZCBIMS5kZWZhdWx0IEkuaWNvbi5zaW5nbGVMaW5lSDEsIEJPRFkuaXNGdWxsV2lkdGhQYWdlLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQgSDEuZGVmYXVsdCBzcGFuLmljb24uc2luZ2xlTGluZUgxeyBtYXJnaW4tdG9wOjFweDsgfSBCT0RZLmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIEgyLmRlZmF1bHQgeyBmb250LXNpemU6MS44NzVyZW0gOyB9IEJPRFkuaXNGdWxsV2lkdGhQYWdlLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQgSDIuZGVmYXVsdCA+IERJViBESVY6bnRoLWNoaWxkKDIpeyBmb250LXNpemU6MS4xODhyZW0gOyB9IEJPRFkuaXNGdWxsV2lkdGhQYWdlLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQgSDIuZGVmYXVsdC5jcmVkc2lpVXNlZE1pbkhlaWdodCAuVGl0bGVUZXh0IHsgd2lkdGg6OTAlOyB9IEJPRFkuaXNGdWxsV2lkdGhQYWdlLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQgSDIuZGVmYXVsdCBJLmljb24ubXVsdGlMaW5lSDIsIEJPRFkuaXNGdWxsV2lkdGhQYWdlLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQgSDIuZGVmYXVsdCBzcGFuLmljb24ubXVsdGlMaW5lSDJ7IG1hcmdpbi10b3A6MTFweDsgfSBCT0RZLmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIEgyLmRlZmF1bHQgSS5pY29uLnNpbmdsZUxpbmVIMiwgQk9EWS5pc0Z1bGxXaWR0aFBhZ2UuaXNQYWdlRnVsbFdpZHRoRW5hYmxlZCBIMi5kZWZhdWx0IHNwYW4uaWNvbi5zaW5nbGVMaW5lSDJ7IG1hcmdpbi10b3A6NHB4OyB9IH0gI2NpdHlUaXRsZSB7Y29sb3I6IzAwMDAwMDt9IC5tYWluX2xlZnRfYm94IHsgY29sb3I6IzAwMDAwMDsgfSAuZGl2VGFibGUgeyBkaXNwbGF5OnRhYmxlOyB9IC5kaXZUYWJsZS5hbGlnbi1jZW50ZXIgeyBtYXJnaW46MCBhdXRvOyB9IC5kaXZUYWJsZSAuZm9ybXNfYm94MjIsIC5kaXZUYWJsZSBmb3JtW25hbWU9InNlbmRFbWFpbEZvcm0iXSB7IHdpZHRoOjk0MHB4OyB9IC5kaXZUYWJsZSAudGV4dDMwIHsgd2lkdGg6MTAwJTsgfSAuc2VydmljZS10aXRsZSB7IG1hcmdpbi10b3A6MjBweDsgfSAuZnVsbFdpZHRoRm9ybSAuZm9ybXNfYm94MjIgeyB3aWR0aDoxMDAlOyBtYXJnaW4tbGVmdDowOyBtYXJnaW4tcmlnaHQ6MDsgYm94LXNpemluZzpib3JkZXItYm94OyB9IC5mdWxsV2lkdGhGb3JtIC50ZXh0MzAgeyB3aWR0aDoxMDAlOyB9IC5mb3JtLWdyb3VwIHsgbWFyZ2luLWJvdHRvbToxNXB4OyB9IC5pbmxpbmUtZm9ybS1ncm91cCB7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB9IC5mb3JtLWdyb3VwIGxhYmVsIHsgZGlzcGxheTppbmxpbmUtYmxvY2s7IG1heC13aWR0aDoxMDAlOyBtYXJnaW4tYm90dG9tOjVweDsgZm9udC13ZWlnaHQ6NzAwOyB9IC5kaXZTZWFyY2hNc2cgeyBmb250LXNpemU6MC45cmVtOyBtYXJnaW46MjBweCAwIDAgMDsgcGFkZGluZzoxNXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiNmN2Y3Zjc7IGJvcmRlci1yYWRpdXM6NXB4OyBjbGVhcjpib3RoOyB9IC5jcmVkc2lpTmV3IHsgZGlzcGxheTpibG9jazsgbWF4LXdpZHRoOjQ3MHB4OyBtaW4td2lkdGg6MzAwcHg7IHdpZHRoOjEwMCU7IGN1cnNvcjpwb2ludGVyOyBvdmVyZmxvdzpoaWRkZW47IGhlaWdodDphdXRvOyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjA7IHJpZ2h0OjA7IH0gLmNyZWRzaWlOZXdWRFAgeyBkaXNwbGF5OmJsb2NrOyBtYXgtd2lkdGg6MzUwcHg7IG1pbi13aWR0aDozMDBweDsgd2lkdGg6MTAwJTsgY3Vyc29yOnBvaW50ZXI7IG92ZXJmbG93OmhpZGRlbjsgaGVpZ2h0OmF1dG87IHBvc2l0aW9uOnJlbGF0aXZlOyB0b3A6MDsgcmlnaHQ6MDsgfSAuY3JlZHNpaVVzZWRNaW5IZWlnaHQgeyBtaW4taGVpZ2h0OjEzMHB4OyB9IC5jcmVkc2lpRmluYW5jZSB7IGRpc3BsYXk6YmxvY2s7IG1heC13aWR0aDo5NjBweDsgbWluLXdpZHRoOjMwMHB4OyB3aWR0aDoxMDAlOyBjdXJzb3I6cG9pbnRlcjsgb3ZlcmZsb3c6aGlkZGVuOyBwb3NpdGlvbjpyZWxhdGl2ZTsgaGVpZ2h0OjEyNXB4OyBtYXJnaW4tdG9wOjE1cHg7IH0gLmNyZWRzaWlGaW5hbmNlIC5jcmVkc2lpLXdpZGdldC1jb250YWluZXJ7IG1heC13aWR0aDoxMDAlIWltcG9ydGFudDsgfSAuY3JlZHNpaUZpbmFuY2VNZW51IHsgZGlzcGxheTpibG9jazsgbWF4LXdpZHRoOjM0NXB4OyBtaW4td2lkdGg6MzAwcHg7IHdpZHRoOjEwMCU7IGN1cnNvcjpwb2ludGVyOyBvdmVyZmxvdzpoaWRkZW47IGhlaWdodDphdXRvOyBwb3NpdGlvbjpyZWxhdGl2ZTsgdG9wOjA7IHJpZ2h0OjA7IH0gLmNyZWRzaWlEaXYgLmNyZWRzaWlGaW5hbmNlTWVudSB7IG1heC13aWR0aDozNzVweDsgfSAuY3JlZHNpaUZpbmFuY2VNZW51IC5jcmVkc2lpLXdpZGdldHsgYm9yZGVyOjA7IH0gLnByb21vLWNhcmQgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgaGVpZ2h0OmF1dG87IG1hcmdpbi1ib3R0b206MTBweDsgYmFja2dyb3VuZC1jb2xvcjojZjFmMWYxOyBwYWRkaW5nOjIwcHg7IG92ZXJmbG93OmhpZGRlbjsgfSAucHJvbW8tYm9keSAucGljX2JveDIgeyBtaW4taGVpZ2h0OjEzMHB4OyB9IC5wcm9tby1ob3ZlciB7IHBvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjA7IHRvcDowOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgLXdlYmtpdC10cmFuc2l0aW9uOmFsbCAwLjNzOyAtbW96LXRyYW5zaXRpb246YWxsIDAuM3M7IC1tcy10cmFuc2l0aW9uOmFsbCAwLjNzOyAtby10cmFuc2l0aW9uOmFsbCAwLjNzOyB0cmFuc2l0aW9uOmFsbCAwLjNzOyBvcGFjaXR5OjA7IH0gLnByb21vLWJvZHk6aG92ZXIgLnByb21vLWhvdmVyIHsgb3BhY2l0eToxOyB9IC5wcm9tby1ib2R5OmhvdmVyIC5wcm9tby1pbmZvIHsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSkgc2NhbGUoMSwxKTsgfSAucHJvbW8tbWFzayB7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MDsgbGVmdDowOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgYmFja2dyb3VuZDpyZ2JhKDAsMCwwLDAuNSk7IH0gLnByb21vLWluZm8geyBwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDowOyByaWdodDowOyB0b3A6NTAlOyB3aWR0aDozNSU7IG1hcmdpbjphdXRvOyAtd2Via2l0LWJvcmRlci1yYWRpdXM6MjVweDsgLW1vei1ib3JkZXItcmFkaXVzOjI1cHg7IGJvcmRlci1yYWRpdXM6MjVweDsgLXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTUwJSkgc2NhbGUoMCwwKTsgLW1vei10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTUwJSkgc2NhbGUoMCwwKTsgLW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xNTAlKSBzY2FsZSgwLDApOyAtby10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTUwJSkgc2NhbGUoMCwwKTsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTE1MCUpIHNjYWxlKDAsMCk7IC13ZWJraXQtYm94LXNoYWRvdzowIDAgMTBweCA1cHggcmJnYSgwLDAsMCwwLjIpOyAtbW96LWJveC1zaGFkb3c6MCAwIDEwcHggNXB4IHJiZ2EoMCwwLDAsMC4yKTsgYm94LXNoYWRvdzowIDAgMTBweCA1cHggcmJnYSgwLDAsMCwwLjIpOyAtd2Via2l0LXRyYW5zaXRpb246YWxsIDAuM3M7IC1tb3otdHJhbnNpdGlvbjphbGwgMC4zczsgLW1zLXRyYW5zaXRpb246YWxsIDAuM3M7IC1vLXRyYW5zaXRpb246YWxsIDAuM3M7IHRyYW5zaXRpb246YWxsIDAuM3M7IH0gLmZvcm0tZW5kIHsgZGlzcGxheTpmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyBhbGlnbi1pdGVtczpjZW50ZXI7IH0gLmZvcm0tZW5kIC5idG4td3JhcHBlciB7IG1hcmdpbjowIGF1dG87IH0gLmZvcm0tZW5kIC5lbXB0eS1zcGFjZSB7IG1hcmdpbjphdXRvOyB9IC5mb3JtLWVuZCAucHJvbW8tYnRuIHsgcG9zaXRpb246aW5pdGlhbDsgfSAuZm9ybS1lbmQgLnByaW50IHsgbWFyZ2luLWxlZnQ6YXV0bzsgd2lkdGg6aW5pdGlhbDsgfSAucHJvbW8tYnRuIHsgcGFkZGluZzoxMHB4IDEwcHggMTBweCAxMHB4OyB3aWR0aDoxMDAlOyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyBib3JkZXI6MXB4IHNvbGlkOyB0ZXh0LXRyYW5zZm9ybTp2YXIoLS1jZXJ0LXR4dC10cmFuc2Zvcm0sIHZhcigtLXR4dC11cHBlcikpOyBmb250LXdlaWdodDpub3JtYWw7IHBvc2l0aW9uOmFic29sdXRlOyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGJvcmRlci1jb2xvcjp2YXIoLS1wcm9tby1idG4tdGV4dC1jb2xvcik7IGNvbG9yOnZhcigtLXByb21vLWJ0bi10ZXh0LWNvbG9yKTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1wcm9tby1idG4tY29sb3IpOyBib3JkZXItcmFkaXVzOnZhcigtLXByb21vLWJ0bi1ib3JkZXItcmFkaXVzKTsgdHJhbnNpdGlvbjowLjI1czsgfSAucHJvbW9zIHsgYmFja2dyb3VuZDojZjFmMWYxOyBib3JkZXItcmFkaXVzOjVweDsgYm94LXNoYWRvdzowIDAgMTBweCAxcHggcmdiYSgwLDAsMCwwLjIpOyBwb3NpdGlvbjpyZWxhdGl2ZTsgY3Vyc29yOmRlZmF1bHQ7IG1hcmdpbjoxMnB4IDEwcHg7IGRpc3BsYXk6IGdyaWQ7IGdyaWQtcm93OnNwYW4gODsgZ3JpZC1jb2x1bW46c3BhbiAxOyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6c3ViZ3JpZDsgZ3JpZC10ZW1wbGF0ZS1yb3dzOnN1YmdyaWQ7IH0gLnByb21vcyAuaGVhZGVyIHsgZ3JpZC1hcmVhOmhlYWRlcjsgfSAjc2VydmljZSAucHJvbW9zIC5wcm9tby1jb250ZW50eyBkaXNwbGF5OmJsb2NrOyBncmlkLXJvdzphdXRvOyB9IC5wcm9tb3MgLnByb21vLWNvbnRlbnQgeyBncmlkLWFyZWE6Y29udGVudDsgZGlzcGxheTpncmlkOyBncmlkLXRlbXBsYXRlLXJvd3M6c3ViZ3JpZDsgZ3JpZC1yb3c6MiAvIDc7IH0gLnByb21vcyAucHJvbW8tZm9vdGVyIHsgZ3JpZC1hcmVhOmZvb3RlcjsgcGFkZGluZzowIDE1cHggMTVweCAxNXB4OyB9IC5wcm9tb3M6aG92ZXIgLnByb21vLWJ0biwgLnByb21vLWJ0bjpob3ZlciB7IGNvbG9yOnZhcigtLXByb21vLWJ0bi1ob3Zlci10ZXh0LWNvbG9yKTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1wcm9tby1idG4taG92ZXItYmctY29sb3IpOyBib3JkZXItY29sb3I6dmFyKC0tcHJvbW8tYnRuLWhvdmVyLXRleHQtY29sb3IpOyB9IC5wcm9tb3MgLnByb21vLWJ0biB7IHdpZHRoOmluaGVyaXQ7IHBvc2l0aW9uOmluaXRpYWw7IGRpc3BsYXk6YmxvY2s7IHBhZGRpbmc6MTVweCA0NXB4OyB9IC5wcm9tb3MucHJvbW8tc21hbGwgLnByb21vLWJ0biB7IHBhZGRpbmc6MTBweCAyNXB4OyB9IC5wcm9tby1icmVhayB7IGJvcmRlci10b3A6MXB4IHNvbGlkICNhYmFiYWI7IHBhZGRpbmctdG9wOjEwcHg7IG1hcmdpbjoxNXB4IDA7IH0gLnByb21vLWltYWdlLCAucHJvbW8tZGV0YWlscy1pbWFnZSB7IG92ZXJmbG93OmhpZGRlbjsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjVweCA1cHggMCAwOyAtbW96LWJvcmRlci1yYWRpdXM6NXB4IDVweCAwIDA7IGJvcmRlci1yYWRpdXM6NXB4IDVweCAwIDA7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBiYWNrZ3JvdW5kLXNpemU6Y29udGFpbjsgYmFja2dyb3VuZC1wb3NpdGlvbjpjZW50ZXI7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYXNwZWN0LXJhdGlvOnZhcigtLXByb21vLWltZy1yYXRpbywgbm9uZSk7IH0gLnByb21vLWRldGFpbHMtaW1hZ2V7IHdpZHRoOjEwMCU7IH0gLnByb21vczpob3ZlciAucHJvbW8taW1hZ2UgaW1nIHsgLXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMS4xKTsgLW1vei10cmFuc2Zvcm06c2NhbGUoMS4xKTsgLW1zLXRyYW5zZm9ybTpzY2FsZSgxLjEpOyAtby10cmFuc2Zvcm06c2NhbGUoMS4xKTsgdHJhbnNmb3JtOnNjYWxlKDEuMSk7IH0gLnByb21vLWltYWdlIGltZyB7IG1heC13aWR0aDoxMDAlOyB0cmFuc2l0aW9uOnRyYW5zZm9ybSAxczsgZGlzcGxheTp0YWJsZS1jZWxsOyBtYXJnaW46MCBhdXRvOyB9IC5wcm9tby1ib2R5IHsgcGFkZGluZzoxNXB4OyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAucHJvbW8tYm9keS5ncmlkIHsgZGlzcGxheTpncmlkOyBoZWlnaHQ6MTAwJTsgZ3JpZC10ZW1wbGF0ZS1yb3dzOjFmciAzZnI7IH0gLnByb21vLWJvZHkuZ3JpZCAucHJvbW8tY2FwdGlvbi5oZWFkZXIgeyBkaXNwbGF5OmdyaWQ7IGdyaWQtdGVtcGxhdGUtcm93czoxZnIgYXV0bzsgfSAucHJvbW8tY29udGVudC5wYWRkZWQgeyBwYWRkaW5nOjE1cHg7IH0gLnByb21vLWRlc2MgeyBkaXNwbGF5Om5vbmU7IH0gLnByb21vLXRpdGxlIHsgZm9udC1zaXplOjEuNXJlbSA7IGRpc3BsYXk6YmxvY2s7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6IzMzMzMzMzsgbWluLWhlaWdodDo3OHB4OyB9IC5wcm9tby1tZWRpdW0gLnByb21vLXRpdGxlIHsgbWluLWhlaWdodDo4N3B4OyB9IC5wcm9tby1zbWFsbCAucHJvbW8tdGl0bGUgeyBmb250LXNpemU6MS4yNXJlbSA7IH0gLnByb21vLWNhcHRpb24geyBjb2xvcjojMzMzMzMzOyB9IC5wcm9tby1jYXB0aW9uOm5vdCg6bGFzdC1jaGlsZCkgeyBtYXJnaW4tYm90dG9tOjEwcHg7IH0gLnByb21vLW9mZmVyIC5wcm9tby10aXRsZSB7IG1pbi1oZWlnaHQ6MDsgfSAucHJvbW8tc3ViY2FwdGlvbiB7IG1hcmdpbi10b3A6NXB4OyBmb250LXNpemU6MC44NzVyZW07IH0gLnByb21vLXN1YmNhcHRpb24uc3ViaGVhZGluZy4tbWggeyBtaW4taGVpZ2h0OjMxcHg7IH0gLnByb21vLXN1YmNhcHRpb24uZGVzY3JpcHRpb24uLW1oIHsgbWluLWhlaWdodDo0OHB4OyB9IC5wcm9tby1kaXNsY2FpbWVyIHsgZm9udC1zaXplOjAuNzVyZW07IH0gLnByb21vLWxpbmtzIHsgZGlzcGxheTpmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjsgYWxpZ24taXRlbXM6Y2VudGVyOyB9IC5wcm9tby1saW5rLWl0ZW0gLnByaW50IHsgd2lkdGg6YXV0bzsgdGV4dC1hbGlnbjpyaWdodDsgfSAucHJvbW9zLWNvbnRhaW5lci5ncmlkIHsgcG9zaXRpb246cmVsYXRpdmU7IGRpc3BsYXk6Z3JpZDsgfSAucHJvbW9zLWNvbnRhaW5lciAuZmEtYXJyb3ctZG93bi10by1saW5lIHsgZm9udC1zaXplOjJyZW07IGNvbG9yOiMwMDAwMDA7IHBvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjUwJTsgdG9wOjUwJTsgYmFja2dyb3VuZDojZmZmZmZmOyBwYWRkaW5nOjZweDsgYm9yZGVyLXJhZGl1czo1cHg7IGJveC1zaGFkb3c6MCAwIDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4yKTsgdHJhbnNpdGlvbjphbGwgMC4yNXMgZWFzZS1vdXQ7IH0gLnByb21vcy1jb250YWluZXIuZ3JpZC5wcm9tby1tZWRpdW0geyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDIsIDFmcik7IH0gLnByb21vcy1jb250YWluZXIuZ3JpZC5wcm9tby1zbWFsbCB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMywgMWZyKTsgfSAucHJvbW9zLWNvbnRhaW5lci5ncmlkLmNvbGxhcHNlIHsgaGVpZ2h0OjE0MnB4OyBvdmVyZmxvdzpoaWRkZW47IH0gLnByb21vcy1jb250YWluZXIuZ3JpZC5jb2xsYXBzZTo6YmVmb3JlIHsgY29udGVudDoiIjsgcG9zaXRpb246YWJzb2x1dGU7IGhlaWdodDoxMDAlOyB6LWluZGV4OjEwOyBsZWZ0OjEwcHg7IHJpZ2h0OjEwcHg7IHRvcDoxMHB4OyBib3JkZXItcmFkaXVzOjVweCA1cHggMCAwOyBiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgwZGVnLCByZ2IoMCAwIDAgLyAzMCUpIDAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDApIDEwMCUpIH0gLnByb21vcy1jb250YWluZXIuZ3JpZC5jb2xsYXBzZTpob3Zlcjo6YmVmb3JlIHsgYmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMGRlZywgcmdiKDEzOCAxMzggMTM4IC8gMzAlKSAwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwKSAxMDAlKTsgY3Vyc29yOnBvaW50ZXI7IH0gLnByb21vcy1jb250YWluZXIuZ3JpZC5jb2xsYXBzZTpob3ZlciAuZmEtYXJyb3ctZG93bi10by1saW5lIHsgdG9wOjU1JTsgY29sb3I6IzgzODM4MzsgfSAuYmFubmVyLWZvcm0geyBwb3NpdGlvbjpyZWxhdGl2ZTsgZGlzcGxheTp0YWJsZTsgbWFyZ2luOjAgYXV0bzsgfSAuYmFubmVyLWZvcm0gLk1haW5Cb3hMYXllciB7IHBvc2l0aW9uOmFic29sdXRlOyB6LWluZGV4OjEwOyBsZWZ0OjA7IHJpZ2h0OjA7IHRvcDowOyBkaXNwbGF5OnRhYmxlLWNlbGw7IGhlaWdodDoxMDAlOyB9IC5iYW5uZXItZm9ybS1ib3ggeyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NXB4OyAtbW96LWJvcmRlci1yYWRpdXM6NXB4OyBib3JkZXItcmFkaXVzOjVweDsgcG9zaXRpb246YWJzb2x1dGU7IHJpZ2h0OjA7IG1heC13aWR0aDozNTBweDsgd2lkdGg6MTAwJTsgbWFyZ2luLXRvcDozNXB4OyB9IEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDoxMzAxcHgpIHsgLk1haW5Cb3hMYXllciAuYmFubmVyLWZvcm0tYm94IHsgdG9wOjUwJTsgLXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTsgLW1vei10cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTsgLW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpOyAtby10cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSk7IG1hcmdpbi10b3A6MDsgfSB9IEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDoxMzAxcHgpIHsgLmJhbm5lci1mb3JtIC5iYW5uZXItZm9ybS1ib3ggeyBwYWRkaW5nOjE1cHg7IG1heC13aWR0aDoyNzBweDsgZm9udC1zaXplOjAuODEzcmVtIDsgfSAuYmFubmVyLWZvcm0gI2Jhbm5lckZvcm0gLmZvcm0tY29udHJvbCB7IHBhZGRpbmc6NHB4IDhweDsgaGVpZ2h0OjMwcHg7IG1hcmdpbi1ib3R0b206MTJweDsgfSAuYmFubmVyLWZvcm0gLmJhbm5lci1mb3JtLXRpdGxlIHsgZm9udC1zaXplOjE1cHQ7IH0gLmJhbm5lci1mb3JtIC5iYW5uZXItZm9ybS1zdWJ0aXRsZSB7IGZvbnQtc2l6ZToxMXB0OyB9IC5iYW5uZXItZm9ybSAuYnRuLmJhbm5lci1idG4geyBwYWRkaW5nOjRweCAxMnB4OyB9IH0gLm90aGVyTG9nb01lbnVDb250YWluZXJ7IGZsb2F0OmxlZnQ7IH0gLm90aGVyTG9nb01lbnVDb250YWluZXJSaWdodHsgZmxvYXQ6cmlnaHQ7IH0gLm90aGVyTG9nb01lbnVJbWFnZXsgbWF4LXdpZHRoOjI1MHB4OyBtYXgtaGVpZ2h0OjEwMHB4OyB9IC5jdGFib3gtLXdyYXBwZXIgeyBjbGVhcjpib3RoOyBwYWRkaW5nOjAuNzVyZW0gMDsgYmFja2dyb3VuZDojZmZmZmZmOyB9IC5jdGFib3gtLXRhYmxlIHsgd2lkdGg6ODUlIWltcG9ydGFudDsgbWF4LXdpZHRoOjEyMDBweDsgbWFyZ2luOmF1dG87IGJvcmRlci1zcGFjaW5nOjFyZW07IGJvcmRlci1jb2xsYXBzZTp1bnNldDsgfSAuY3RhYm94LS1jZWxsIHsgd2lkdGg6MjUlOyB0cmFuc2l0aW9uOmFsbCAwLjJzIGxpbmVhcjsgfSAuY3RhYm94LS1jZWxsOm5vdChbb25jbGljaz0nJ10pOmhvdmVyIHsgY3Vyc29yOnBvaW50ZXI7IH0gLmN0YWJveC0tY2VsbC5jdGFib3gtLWNlbGxfXzEgeyB3aWR0aDoxMDAlOyB9IC5jdGFib3gtLWNlbGwuY3RhYm94LS1jZWxsX18yIHsgd2lkdGg6NDgwcHg7IH0gLmN0YWJveC0tY2VsbC5jdGFib3gtLWNlbGxfXzMgeyB3aWR0aDozMyU7IH0gLmN0YWJveC0tY29udGFpbmVyIHsgcGFkZGluZzoxcmVtOyB9IC5jdGFib3gtLWNvbnRhaW5lciAuY3RhYm94LS1pY29uIHsgZm9udC1zaXplOjEuNTYzcmVtIDsgfSAuY3RhYm94LS1jb250YWluZXIgLmN0YWJveC0taWNvbi5jdGFib3gtLWljb25fX3RvcCB7IHBhZGRpbmctYm90dG9tOjEwcHg7IH0gLmN0YWJveC0tY29udGFpbmVyIC5jdGFib3gtLWljb24uY3RhYm94LS1pY29uX19sZWZ0IHsgZmxvYXQ6bGVmdDsgfSAuY3RhYm94LS1pY29uX19sZWZ0IH4gLmN0YWJveC0tdGl0bGUsIC5jdGFib3gtLWljb25fX2xlZnQgfiAuY3RhYm94LS1kZXNjcmlwdGlvbiwgLmN0YWJveC0taWNvbl9fbGVmdCB+IC5jdGFib3gtLWJ1dHRvbiB7IG1hcmdpbi1sZWZ0OjM1cHg7IH0gLmN0YWJveC0tY29udGFpbmVyIC5jdGFib3gtLXRpdGxlIHsgZm9udC13ZWlnaHQ6Ym9sZDsgZm9udC1zaXplOjEuNTYzcmVtIDsgfSAuY3RhYm94LS1jb250YWluZXIgLmN0YWJveC0tZGVzY3JpcHRpb24geyBtYXJnaW4tdG9wOjEwcHg7IH0gLmN0YWJveC0tY29udGFpbmVyIC5jdGFib3gtLWJ1dHRvbiB7IG1hcmdpbi10b3A6MjBweDsgfSAucGFyYWxsYXgtc2VjdGlvbiB7IGJhY2tncm91bmQtcG9zaXRpb246Y2VudGVyOyBiYWNrZ3JvdW5kLXNpemU6Y292ZXI7IGJhY2tncm91bmQtYXR0YWNobWVudDpsb2NhbDsgcGFkZGluZzoyNXB4IDA7IC13ZWJraXQtdHJhbnNpdGlvbjphbGwgMC4zczsgLW1vei10cmFuc2l0aW9uOmFsbCAwLjNzOyAtbXMtdHJhbnNpdGlvbjphbGwgMC4zczsgLW8tdHJhbnNpdGlvbjphbGwgMC4zczsgdHJhbnNpdGlvbjphbGwgMC4zczsgYmFja2dyb3VuZC1jb2xvcjojMDAwOyB9IC5wYXJhbGxheC1zZWN0aW9uIC5jb250YWluZXIgeyB3aWR0aDo2MCU7IHBhZGRpbmctcmlnaHQ6MTVweDsgcGFkZGluZy1sZWZ0OjE1cHg7IG1hcmdpbi1yaWdodDphdXRvOyBtYXJnaW4tbGVmdDphdXRvOyB9IC5wYXJhbGxheC1zZWN0aW9uIC5jb250YWluZXIubGFyZ2UgeyB3aWR0aDo4MCU7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfSAucGFyYWxsYXgtY29udGVudCB7IHdpZHRoOjQ1JTsgcGFkZGluZzo0MHB4IDQwcHg7IGJhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwwLjcpOyBjb2xvcjojZmZmOyB9IC5wYXJhbGxheC1jb250ZW50IC5wYXJhbGxheC1jb250ZW50LWJ1c2luZXNzLXRpdGxlIHsgZm9udC1zaXplOjEuNDM4cmVtICFpbXBvcnRhbnQ7IGZvbnQtd2VpZ2h0Om5vcm1hbCAhaW1wb3J0YW50OyBtYXJnaW4tYm90dG9tOjIwcHg7IGNvbG9yOmluaGVyaXQ7IH0gLnBhcmFsbGF4LWNvbnRlbnQgLnBhcmFsbGF4LWNvbnRlbnQtYnVzaW5lc3MtZGVzYyB7IGZvbnQtc2l6ZTowLjkzOHJlbSAhaW1wb3J0YW50OyB0ZXh0LWFsaWduOmxlZnQ7IGNvbG9yOmluaGVyaXQ7IH0gLnBhcmFsbGF4LWNvbnRlbnQgLnBhcmFsbGF4LWNvbnRlbnQtYnVzaW5lc3MtZGVzYyBheyBjb2xvcjppbmhlcml0OyB9IEBtZWRpYSAobWF4LXdpZHRoOjEzMzBweCkgeyAucGFyYWxsYXgtc2VjdGlvbiAuY29udGFpbmVyIHsgd2lkdGg6ODAlOyB9IC5wYXJhbGxheC1zZWN0aW9uIC5jb250YWluZXIubGFyZ2UgeyB3aWR0aDoxMDAlOyB9IH0gLnNyLW9ubHkgeyBwb3NpdGlvbjphYnNvbHV0ZSAhaW1wb3J0YW50OyB3aWR0aDoxcHggIWltcG9ydGFudDsgaGVpZ2h0OjFweCAhaW1wb3J0YW50OyBwYWRkaW5nOjAgIWltcG9ydGFudDsgbWFyZ2luOi0xcHggIWltcG9ydGFudDsgb3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnQ7IGNsaXA6cmVjdCgwLCAwLCAwLCAwKSAhaW1wb3J0YW50OyBib3JkZXI6MCAhaW1wb3J0YW50OyB9IC5ibnBfcHVsbG91dF9pbWd7IG1heC13aWR0aDoxMHJlbTsgbWFyZ2luOmF1dG87IH0gLmJucF9wdWxsb3V0X2NvbF9zZXBhcmF0b3J7IHdpZHRoOjFweDsgYmFja2dyb3VuZC1jb2xvcjojRUJFQkVCOyBoZWlnaHQ6OThweDsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDoyMHB4OyB9IC5ibnBfcHVsbG91dF9taWRfY29seyB3aWR0aDo3MCU7IGRpc3BsYXk6dGFibGUtY2VsbDsgfSAuYm5wX3B1bGxvdXRfbWlkX2NvbF9yaWdodHsgYm9yZGVyLWxlZnQtd2lkdGg6MXB4OyB9IC5ibnBfcHVsbG91dF9taWRfY29sX3NlcGFyYXRvcnsgd2lkdGg6MXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiNFQkVCRUI7IGhlaWdodDo0MHB4OyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjc4cHg7IH0gLmJucF9wdWxsb3V0X21pZF9jb2xfcHJpY2Vfd2l0aF90aXRsZXsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IHRleHQtYWxpZ246Y2VudGVyOyB3aWR0aDo0NSU7IH0gLmJucF9wdWxsb3V0X21pZF9jb2xfcHJpY2V7IGZvbnQtc2l6ZToycmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgfSBAbWVkaWEgKG1heC13aWR0aDoxMzMwcHgpIHsgLmJucF9wdWxsb3V0X21pZF9jb2wgeyB3aWR0aDo1MCU7IH0gLmJucF9wdWxsb3V0X21pZF9jb2xfcHJpY2Vfd2l0aF90aXRsZSB7IHdpZHRoOjEwMCU7IH0gLmJucF9wdWxsb3V0X2NvbF9zZXBhcmF0b3IgeyBoZWlnaHQ6MTY0cHg7IH0gLmJucF9wdWxsb3V0X21pZF9jb2xfc2VwYXJhdG9yIHsgaGVpZ2h0OjEwNnB4OyB9IH0gLnB1bGxvdXQtY29udGVudCAuY3JlZGl0U2NvcmVQdWxsb3V0SW1neyBoZWlnaHQ6MTEwcHg7IGJhY2tncm91bmQtY29sb3I6IzAwN2ZhNTsgfSAucHVsbG91dC1jb250ZW50IC5jcmVkaXRTY29yZVB1bGxvdXRCdXR0b257IGJhY2tncm91bmQ6IzQxN0YxQSAhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOjNweDsgY29sb3I6I2ZmZmZmZjsgcGFkZGluZzo3cHggMjBweCA3cHg7IGZvbnQtc2l6ZToxcmVtIDsgZm9udC13ZWlnaHQ6NzAwOyB0ZXh0LXNoYWRvdzowLjRweCAwOyB9IC5wdWxsb3V0LWNvbnRlbnQgLmNyZWRpdFNjb3JlUHVsbG91dENvbnRlbnR7IGNvbG9yOiMwMDAwMDA7IGZvbnQtc2l6ZToxLjU2M3JlbSA7IGZvbnQtd2VpZ2h0OjcwMDsgbWFyZ2luLWJvdHRvbTotMTVweDsgfSAucHVsbG91dC1jb250ZW50IC5jcmVkaXRTY29yZVB1bGxvdXRDb250ZW50U2NvcmV7IGNvbG9yOiMwMDAwMDA7IGZvbnQtd2VpZ2h0OjcwMDsgZm9udC1zaXplOjEuODc1cmVtIDsgdGV4dC1zaGFkb3c6MnB4IDA7IH0gLnB1bGxvdXQtY29udGVudCAuY3JlZGl0U2NvcmVQdWxsb3V0Q29udGVudEZyZWV7IGNvbG9yOiM0MTdGMUE7IGZvbnQtd2VpZ2h0OjcwMDsgZm9udC1zaXplOjIuODEzcmVtIDsgdGV4dC1zaGFkb3c6MnB4IDA7IH0gLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQuaXNGdWxsV2lkdGhQYWdlIC5wdWxsb3V0LWNvbnRlbnQgLmNyZWRpdFNjb3JlUHVsbG91dE1heFdpZHRoeyBtYXgtd2lkdGg6MTIwMHB4OyB9IC5wdWxsb3V0LWNvbnRlbnQgLmNyZWRpdFNjb3JlUHVsbG91dE1heFdpZHRoeyBtYXgtd2lkdGg6OTYwcHg7IH0gLnNsaWRlci1tYWluIGltZ3sgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gMC41cyBlYXNlLW91dCB9IC5jb21tdW5pY2F0aW9uUHJlZnsgcGFkZGluZzp2YXIoLS1pbnB1dC1wYWRkaW5nKTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbnB1dC1iZy1jb2xvcik7IGJvcmRlci1yYWRpdXM6dmFyKC0taW5wdXQtcmFkaXVzKTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1pbnB1dC1ib3JkZXItY29sb3IpOyBjb2xvcjojMjEyNTI5OyBmb250LXNpemU6dmFyKC0taW5wdXQtZm9udC1zaXplKTsgbGluZS1oZWlnaHQ6dmFyKC0taW5wdXQtbGluZS1oZWlnaHQpOyBmb250LXdlaWdodDo0MDA7IHdpZHRoOjUwJSAhaW1wb3J0YW50OyB9IC5kMmNmb3JtIHsgLS1sYWJlbC1yZXF1aXJlZC1zeW1ib2w6IioiOyAtLWxhYmVsLXJlcXVpcmVkLWNvbG9yOiNGRjAwMDA7IC0taW5wdXQtcGFkZGluZzp2YXIoLS1zLTEpIHZhcigtLXMxKTsgLS1pbnB1dC1iZy1jb2xvcjp2YXIoLS13aGl0ZSk7IC0taW5wdXQtYm9yZGVyLWNvbG9yOnZhcigtLW1pZC1ncmF5KTsgLS1pbnB1dC1yYWRpdXM6dmFyKC0tcy02KTsgLS1pbnB1dC1mb250LXNpemU6dmFyKC0tZnMwKTsgLS1pbnB1dC1saW5lLWhlaWdodDp2YXIoLS1mczIpOyB9IC5tYWluRGl2QWRqdXN0SGVhZGVyIC51cF9tZW51IC5TMTAwUGVyY2VudFdpZHRoIHsgYmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDsgfSAudXBfbWVudS5maXhlZCAuUzEwMFBlcmNlbnRXaWR0aHsgYmFja2dyb3VuZC1jb2xvcjpyZ2IoMjI4LDIyMCwyMTEpIH0gLm1haW5EaXZBZGp1c3RIZWFkZXIgLnYtY2FyZCAuYWRkcmVzcy1taWRkbGUgLm9yZywgLm1haW5EaXZBZGp1c3RIZWFkZXIgLnYtY2FyZCAuYWRkcmVzcy1taWRkbGUgLnN0cmVldC1hZGRyZXNzLCAubWFpbkRpdkFkanVzdEhlYWRlciAudi1jYXJkIC5hZGRyZXNzLW1pZGRsZSAubG9jYWxpdHksIC5tYWluRGl2QWRqdXN0SGVhZGVyIC52LWNhcmQgLmFkZHJlc3MtbWlkZGxlIC5yZWdpb24sIC5tYWluRGl2QWRqdXN0SGVhZGVyIC52LWNhcmQgLmFkZHJlc3MtbWlkZGxlIC5wb3N0YWwtY29kZSwgLm1haW5EaXZBZGp1c3RIZWFkZXIgLnYtY2FyZCAuYWRkcmVzcy1taWRkbGUgLmV4dGVuZGVkUGhvbmVUcmlnZ2VyLCAubWFpbkRpdkFkanVzdEhlYWRlciAudi1jYXJkIC5hZGRyZXNzLW1pZGRsZSAucGhvbmUtbGluayB7IGNvbG9yOnZhcigtLWhvbWVwYWdlLWhlYWRlci1pdGVtLWNvbG9yKSAhaW1wb3J0YW50OyB9IC5tYWluRGl2QWRqdXN0SGVhZGVyIC52LWNhcmQgLmFkZHJlc3MtbWlkZGxlIC5kZWFsZXJNYXBMaW5rIHN2ZyB7IGZpbGw6dmFyKC0taG9tZXBhZ2UtaGVhZGVyLWl0ZW0tY29sb3IpOyB9IC5tYWluRGl2QWRqdXN0SGVhZGVyIC52LWNhcmQgLmFkZHJlc3MtbWlkZGxlIC5mYS1jYXJldC1kb3duOjpiZWZvcmUsIC5tYWluRGl2QWRqdXN0SGVhZGVyIC52LWNhcmQgLmFkZHJlc3MtbWlkZGxlIC5mYS1waG9uZTo6YmVmb3JlIHsgY29sb3I6dmFyKC0taG9tZXBhZ2UtaGVhZGVyLWl0ZW0tY29sb3IpOyB9IC5tYWluRGl2QWRqdXN0SGVhZGVyIC51cF9tZW51IC5TMTAwUGVyY2VudFdpZHRoID4gdWwgPiBsaSA+IGEudG9wX2xpbmsgeyBjb2xvcjp2YXIoLS1ob21lcGFnZS1tZW51LWl0ZW0tY29sb3IpOyB9IC5tYWluRGl2QWRqdXN0SGVhZGVyIC5sYW5ndWFnZUJhciAuZ1JhdGluZy1pY29uI2dSYXRpbmcsIC5tYWluRGl2QWRqdXN0SGVhZGVyIC5sYW5ndWFnZUJhciAuZGVza3RvcF9sYW5nX2J1dHRvbi5hY3RpdmUsIC5tYWluRGl2QWRqdXN0SGVhZGVyIC5sYW5ndWFnZUJhciBhLmRlc2t0b3BfbGFuZ19idXR0b246aG92ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50OyBjb2xvcjp2YXIoLS1ob21lcGFnZS1oZWFkZXItaXRlbS1jb2xvcik7IGJvcmRlcjoxcHggc29saWQgdmFyKC0taG9tZXBhZ2UtaGVhZGVyLWl0ZW0tY29sb3IpOyB9IC5tYWluRGl2QWRqdXN0SGVhZGVyIC5sYW5ndWFnZUJhciAuZGVza3RvcF9sYW5nX2J1dHRvbiB7IGNvbG9yOiMwMDAwMDA7IGJhY2tncm91bmQ6cmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ob21lcGFnZS1oZWFkZXItaXRlbS1jb2xvcik7IH0gLm1haW5EaXZBZGp1c3RIZWFkZXIgLmxhbmd1YWdlQmFyIGRpdi5kMmMtZmF2cy1uYXYtd3JhcHBlciBpLmZhciB7IGNvbG9yOnZhcigtLWhvbWVwYWdlLWhlYWRlci1pdGVtLWNvbG9yKTsgfSAubWFpbkRpdkFkanVzdEhlYWRlciAubGFuZ3VhZ2VCYXIgLnNlcnZpY2UtaGVhZGVyLWZvcm0gLmJ0biB7IGJvcmRlci1jb2xvcjp2YXIoLS1ob21lcGFnZS1oZWFkZXItaXRlbS1jb2xvcik7IH0gLmxhbmd1YWdlQmFyIC5nUmF0aW5nLWljb24jZ1JhdGluZywgLmxhbmd1YWdlQmFyICNzZXJ2aWNlX2FwcG9pbnRfaGVhZGVyID4gYSwgLmxhbmd1YWdlQmFyIC5kZXNrdG9wX2xhbmdfYnV0dG9uIHsgYm9yZGVyLXJhZGl1czp2YXIoLS1wcm9tby1idG4tYm9yZGVyLXJhZGl1cykgIWltcG9ydGFudDsgfSAuZ1JhdGluZy1pY29uI2dSYXRpbmcgLnJhdGluZyB7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyBsaW5lLWhlaWdodDoxOyB9IC5tYXJnaW4tYm90dG9tLS00cHggeyBtYXJnaW4tYm90dG9tOi00cHg7IH0gLm1haW5EaXZBZGp1c3RIZWFkZXIgLmxhbmd1YWdlQmFyLCAubWFpbkRpdkFkanVzdEhlYWRlciAudi1jYXJkLCAubWFpbkRpdkFkanVzdEhlYWRlciAuYmFubmVyLXNlYXJjaC1ib3gtd3JhcHBlciB7IHotaW5kZXg6MjsgcG9zaXRpb246cmVsYXRpdmUgfQovKiogL2Nzcy9wcm9fZHJvcGRvd25fNC5jc3MgKiovCi5pZE5hdjEgeyBwYWRkaW5nOjA7IGxpc3Qtc3R5bGU6bm9uZTsgaGVpZ2h0OjI4cHg7IGZvbnQtc2l6ZTowLjc1cmVtIDsgZm9udC1zdHlsZTpub3JtYWw7IGZvbnQtd2VpZ2h0OmJvbGQ7IHRleHQtdHJhbnNmb3JtOm5vbmU7IGNvbG9yOiNGOUY5Rjk7IH0gLmlkTmF2MSBsaS50b3Age2Rpc3BsYXk6YmxvY2s7IGZsb2F0OmxlZnQ7IGhlaWdodDoyOHB4OyBwYWRkaW5nOjA7fSAuaWROYXYxIGxpLnRvcDEge2Rpc3BsYXk6YmxvY2s7IGZsb2F0OmxlZnQ7IGhlaWdodDoyOHB4OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2JsX2hvdmVyLnBuZykgbGVmdCB0b3AgcmVwZWF0LXg7IHBhZGRpbmc6MDsgcGFkZGluZy1yaWdodDoycHg7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IHRleHQtdHJhbnNmb3JtOm5vbmU7IGNvbG9yOiNmZmY7IHRleHQtYWxpZ246Y2VudGVyOyAtbW96LWJvcmRlci1yYWRpdXM6M3B4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4OyBib3JkZXItcmFkaXVzOjNweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6M3B4O30gLmlkTmF2MSBsaSBhLnRvcF9saW5rIHsgZGlzcGxheTpibG9jazsgZmxvYXQ6bGVmdDsgaGVpZ2h0OjI4cHg7IGxpbmUtaGVpZ2h0OjMwcHg7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXNpemU6MC44MTNyZW0gOyB0ZXh0LXRyYW5zZm9ybTpub25lOyBmb250LXdlaWdodDpub3JtYWw7IHBhZGRpbmc6MHB4IDEycHggMHB4IDEycHg7IGN1cnNvcjpwb2ludGVyOyAtbW96LWJvcmRlci1yYWRpdXM6M3B4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4OyBib3JkZXItcmFkaXVzOjNweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6M3B4OyBiYWNrZ3JvdW5kOiNlNGRjZDM7IGNvbG9yOiMwMDAwMDA7IH0gLmlkTmF2MSBsaSBhLnRvcF9saW5rOmhvdmVyIHsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyLXJhZGl1czozcHg7IGZpbHRlcjpicmlnaHRuZXNzKDk1JSk7IH0gLmlkTmF2MSBsaSBhLnRvcF9saW5rMSB7ZGlzcGxheTpibG9jazsgZmxvYXQ6bGVmdDsgaGVpZ2h0OjI4cHg7IGxpbmUtaGVpZ2h0OjMwcHg7IGNvbG9yOiNmZWZlZmU7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXNpemU6MC44MTNyZW0gOyB0ZXh0LXRyYW5zZm9ybTpub25lOyBmb250LXdlaWdodDpub3JtYWw7IHBhZGRpbmc6MHB4IDEycHggMHB4IDEycHg7IGN1cnNvcjpwb2ludGVyOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2JsX2hvdmVyLnBuZykgbGVmdCB0b3AgcmVwZWF0LXg7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czozcHg7fSAuaWROYXYyIHsgcGFkZGluZzowOyBsaXN0LXN0eWxlOm5vbmU7IGhlaWdodDoyOHB4OyBmb250LXNpemU6MC43NXJlbSA7IGZvbnQtc3R5bGU6bm9ybWFsOyBmb250LXdlaWdodDpib2xkOyB0ZXh0LXRyYW5zZm9ybTpub25lOyBjb2xvcjojRjlGOUY5OyB9IC5pZE5hdjIgbGkudG9wIHtkaXNwbGF5OmJsb2NrOyBmbG9hdDpsZWZ0OyBoZWlnaHQ6MjhweDsgcGFkZGluZzowOyBwYWRkaW5nLXJpZ2h0OjJweDt9IC5pZE5hdjIgbGkudG9wMSB7ZGlzcGxheTpibG9jazsgZmxvYXQ6bGVmdDsgaGVpZ2h0OjI4cHg7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvYmxfaG92ZXIyLnBuZykgbGVmdCB0b3AgcmVwZWF0LXg7IHBhZGRpbmc6MDsgcGFkZGluZy1yaWdodDoycHg7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IHRleHQtdHJhbnNmb3JtOm5vbmU7IGNvbG9yOiNmZmY7IHRleHQtYWxpZ246Y2VudGVyOyAtbW96LWJvcmRlci1yYWRpdXM6M3B4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4OyBib3JkZXItcmFkaXVzOjNweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6M3B4O30gLmlkTmF2MiBsaSBhLnRvcF9saW5rIHtkaXNwbGF5OmJsb2NrOyBmbG9hdDpsZWZ0OyBoZWlnaHQ6MjhweDsgbGluZS1oZWlnaHQ6MzBweDsgY29sb3I6I2ZlZmVmZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IHRleHQtdHJhbnNmb3JtOm5vbmU7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgcGFkZGluZzowcHggMTJweCAwcHggMTJweDsgY3Vyc29yOnBvaW50ZXI7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvYmxfYmcyLnBuZykgbGVmdCB0b3AgcmVwZWF0LXg7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czozcHg7fSAuaWROYXYyIGxpIGEudG9wX2xpbms6aG92ZXIge2NvbG9yOiNmZmY7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvYmxfaG92ZXIyLnBuZykgbGVmdCB0b3AgcmVwZWF0LXg7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czozcHg7fSAuaWROYXYyIGxpIGEudG9wX2xpbmsxIHtkaXNwbGF5OmJsb2NrOyBmbG9hdDpsZWZ0OyBoZWlnaHQ6MjhweDsgbGluZS1oZWlnaHQ6MzBweDsgY29sb3I6I2ZlZmVmZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IHRleHQtdHJhbnNmb3JtOm5vbmU7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgcGFkZGluZzowcHggMTJweCAwcHggMTJweDsgY3Vyc29yOnBvaW50ZXI7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvYmxfaG92ZXIyLnBuZykgbGVmdCB0b3AgcmVwZWF0LXg7IC1tb3otYm9yZGVyLXJhZGl1czozcHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1yYWRpdXM6M3B4OyAta2h0bWwtYm9yZGVyLXJhZGl1czozcHg7fQovKiogL2Nzcy9qcXVlcnktdWktZmFjdG9yeS8xLjEzLjIvanF1ZXJ5LXVpLm1pbi5jc3MgKiovCi51aS1oZWxwZXItaGlkZGVue2Rpc3BsYXk6bm9uZX0udWktaGVscGVyLWhpZGRlbi1hY2Nlc3NpYmxle2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4fS51aS1oZWxwZXItcmVzZXR7bWFyZ2luOjA7cGFkZGluZzowO2JvcmRlcjowO291dGxpbmU6MDtsaW5lLWhlaWdodDoxLjM7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Zm9udC1zaXplOjEwMCU7bGlzdC1zdHlsZTpub25lfS51aS1oZWxwZXItY2xlYXJmaXg6YmVmb3JlLC51aS1oZWxwZXItY2xlYXJmaXg6YWZ0ZXJ7Y29udGVudDoiIjtkaXNwbGF5OnRhYmxlO2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZX0udWktaGVscGVyLWNsZWFyZml4OmFmdGVye2NsZWFyOmJvdGh9LnVpLWhlbHBlci16Zml4e3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7dG9wOjA7bGVmdDowO3Bvc2l0aW9uOmFic29sdXRlO29wYWNpdHk6MDstbXMtZmlsdGVyOiJhbHBoYShvcGFjaXR5PTApIn0udWktZnJvbnR7ei1pbmRleDoxMDB9LnVpLXN0YXRlLWRpc2FibGVke2N1cnNvcjpkZWZhdWx0IWltcG9ydGFudDtwb2ludGVyLWV2ZW50czpub25lfS51aS1pY29ue2Rpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTttYXJnaW4tdG9wOi0uMjVlbTtwb3NpdGlvbjpyZWxhdGl2ZTt0ZXh0LWluZGVudDotOTk5OTlweDtvdmVyZmxvdzpoaWRkZW47YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0fS51aS13aWRnZXQtaWNvbi1ibG9ja3tsZWZ0OjUwJTttYXJnaW4tbGVmdDotOHB4O2Rpc3BsYXk6YmxvY2t9LnVpLXdpZGdldC1vdmVybGF5e3Bvc2l0aW9uOmZpeGVkO3RvcDowO2xlZnQ6MDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlfS51aS1hY2NvcmRpb24gLnVpLWFjY29yZGlvbi1oZWFkZXJ7ZGlzcGxheTpibG9jaztjdXJzb3I6cG9pbnRlcjtwb3NpdGlvbjpyZWxhdGl2ZTttYXJnaW46MnB4IDAgMCAwO3BhZGRpbmc6LjVlbSAuNWVtIC41ZW0gLjdlbTtmb250LXNpemU6MTAwJX0udWktYWNjb3JkaW9uIC51aS1hY2NvcmRpb24tY29udGVudHtwYWRkaW5nOjFlbSAyLjJlbTtib3JkZXItdG9wOjA7b3ZlcmZsb3c6YXV0b30udWktc2xpZGVye3Bvc2l0aW9uOnJlbGF0aXZlO3RleHQtYWxpZ246bGVmdH0udWktc2xpZGVyIC51aS1zbGlkZXItaGFuZGxle3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6Mjt3aWR0aDoxLjJlbTtoZWlnaHQ6MS4yZW07Y3Vyc29yOnBvaW50ZXI7LW1zLXRvdWNoLWFjdGlvbjpub25lO3RvdWNoLWFjdGlvbjpub25lfS51aS1zbGlkZXIgLnVpLXNsaWRlci1yYW5nZXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjE7Zm9udC1zaXplOi43ZW07ZGlzcGxheTpibG9jaztib3JkZXI6MDtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgMH0udWktc2xpZGVyLnVpLXN0YXRlLWRpc2FibGVkIC51aS1zbGlkZXItaGFuZGxlLC51aS1zbGlkZXIudWktc3RhdGUtZGlzYWJsZWQgLnVpLXNsaWRlci1yYW5nZXtmaWx0ZXI6aW5oZXJpdH0udWktc2xpZGVyLWhvcml6b250YWx7aGVpZ2h0Oi44ZW19LnVpLXNsaWRlci1ob3Jpem9udGFsIC51aS1zbGlkZXItaGFuZGxle3RvcDotLjNlbTttYXJnaW4tbGVmdDotLjZlbX0udWktc2xpZGVyLWhvcml6b250YWwgLnVpLXNsaWRlci1yYW5nZXt0b3A6MDtoZWlnaHQ6MTAwJX0udWktc2xpZGVyLWhvcml6b250YWwgLnVpLXNsaWRlci1yYW5nZS1taW57bGVmdDowfS51aS1zbGlkZXItaG9yaXpvbnRhbCAudWktc2xpZGVyLXJhbmdlLW1heHtyaWdodDowfS51aS1zbGlkZXItdmVydGljYWx7d2lkdGg6LjhlbTtoZWlnaHQ6MTAwcHh9LnVpLXNsaWRlci12ZXJ0aWNhbCAudWktc2xpZGVyLWhhbmRsZXtsZWZ0Oi0uM2VtO21hcmdpbi1sZWZ0OjA7bWFyZ2luLWJvdHRvbTotLjZlbX0udWktc2xpZGVyLXZlcnRpY2FsIC51aS1zbGlkZXItcmFuZ2V7bGVmdDowO3dpZHRoOjEwMCV9LnVpLXNsaWRlci12ZXJ0aWNhbCAudWktc2xpZGVyLXJhbmdlLW1pbntib3R0b206MH0udWktc2xpZGVyLXZlcnRpY2FsIC51aS1zbGlkZXItcmFuZ2UtbWF4e3RvcDowfS51aS13aWRnZXR7Zm9udC1mYW1pbHk6QXJpYWwsSGVsdmV0aWNhLHNhbnMtc2VyaWY7Zm9udC1zaXplOjFlbX0udWktd2lkZ2V0IC51aS13aWRnZXR7Zm9udC1zaXplOjFlbX0udWktd2lkZ2V0IGlucHV0LC51aS13aWRnZXQgc2VsZWN0LC51aS13aWRnZXQgdGV4dGFyZWEsLnVpLXdpZGdldCBidXR0b257Zm9udC1mYW1pbHk6QXJpYWwsSGVsdmV0aWNhLHNhbnMtc2VyaWY7Zm9udC1zaXplOjFlbX0udWktd2lkZ2V0LnVpLXdpZGdldC1jb250ZW50e2JvcmRlcjoxcHggc29saWQgI2M1YzVjNX0udWktd2lkZ2V0LWNvbnRlbnR7Ym9yZGVyOjFweCBzb2xpZCAjZGRkO2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMzMzfS51aS13aWRnZXQtY29udGVudCBhe2NvbG9yOiMzMzN9LnVpLXdpZGdldC1oZWFkZXJ7Ym9yZGVyOjFweCBzb2xpZCAjZGRkO2JhY2tncm91bmQ6I2U5ZTllOTtjb2xvcjojMzMzO2ZvbnQtd2VpZ2h0OmJvbGR9LnVpLXdpZGdldC1oZWFkZXIgYXtjb2xvcjojMzMzfS51aS1zdGF0ZS1kZWZhdWx0LC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtZGVmYXVsdCwudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZGVmYXVsdCwudWktYnV0dG9uLGh0bWwgLnVpLWJ1dHRvbi51aS1zdGF0ZS1kaXNhYmxlZDpob3ZlcixodG1sIC51aS1idXR0b24udWktc3RhdGUtZGlzYWJsZWQ6YWN0aXZle2JvcmRlcjoxcHggc29saWQgI2M1YzVjNTtiYWNrZ3JvdW5kOiNmNmY2ZjY7Zm9udC13ZWlnaHQ6bm9ybWFsO2NvbG9yOiM0NTQ1NDV9LnVpLXN0YXRlLWRlZmF1bHQgYSwudWktc3RhdGUtZGVmYXVsdCBhOmxpbmssLnVpLXN0YXRlLWRlZmF1bHQgYTp2aXNpdGVkLGEudWktYnV0dG9uLGE6bGluay51aS1idXR0b24sYTp2aXNpdGVkLnVpLWJ1dHRvbiwudWktYnV0dG9ue2NvbG9yOiM0NTQ1NDU7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnVpLXN0YXRlLWhvdmVyLC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtaG92ZXIsLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWhvdmVyLC51aS1zdGF0ZS1mb2N1cywudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWZvY3VzLC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1mb2N1cywudWktYnV0dG9uOmhvdmVyLC51aS1idXR0b246Zm9jdXN7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO2JhY2tncm91bmQ6I2VkZWRlZDtmb250LXdlaWdodDpub3JtYWw7Y29sb3I6IzJiMmIyYn0udWktc3RhdGUtaG92ZXIgYSwudWktc3RhdGUtaG92ZXIgYTpob3ZlciwudWktc3RhdGUtaG92ZXIgYTpsaW5rLC51aS1zdGF0ZS1ob3ZlciBhOnZpc2l0ZWQsLnVpLXN0YXRlLWZvY3VzIGEsLnVpLXN0YXRlLWZvY3VzIGE6aG92ZXIsLnVpLXN0YXRlLWZvY3VzIGE6bGluaywudWktc3RhdGUtZm9jdXMgYTp2aXNpdGVkLGEudWktYnV0dG9uOmhvdmVyLGEudWktYnV0dG9uOmZvY3Vze2NvbG9yOiMyYjJiMmI7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnVpLXZpc3VhbC1mb2N1c3tib3gtc2hhZG93OjAgMCAzcHggMXB4IHJnYig5NCwxNTgsMjE0KX0udWktc3RhdGUtYWN0aXZlLC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtYWN0aXZlLC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1hY3RpdmUsYS51aS1idXR0b246YWN0aXZlLC51aS1idXR0b246YWN0aXZlLC51aS1idXR0b24udWktc3RhdGUtYWN0aXZlOmhvdmVye2JvcmRlcjoxcHggc29saWQgIzAwM2VmZjtiYWNrZ3JvdW5kOiMwMDdmZmY7Zm9udC13ZWlnaHQ6bm9ybWFsO2NvbG9yOiNmZmZ9LnVpLWljb24tYmFja2dyb3VuZCwudWktc3RhdGUtYWN0aXZlIC51aS1pY29uLWJhY2tncm91bmR7Ym9yZGVyOiMwMDNlZmY7YmFja2dyb3VuZC1jb2xvcjojZmZmfS51aS1zdGF0ZS1hY3RpdmUgYSwudWktc3RhdGUtYWN0aXZlIGE6bGluaywudWktc3RhdGUtYWN0aXZlIGE6dmlzaXRlZHtjb2xvcjojZmZmO3RleHQtZGVjb3JhdGlvbjpub25lfS51aS1zdGF0ZS1oaWdobGlnaHQsLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1oaWdobGlnaHQsLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWhpZ2hsaWdodHtib3JkZXI6MXB4IHNvbGlkICNkYWQ1NWU7YmFja2dyb3VuZDojZmZmYTkwO2NvbG9yOiM3Nzc2MjB9LnVpLXN0YXRlLWNoZWNrZWR7Ym9yZGVyOjFweCBzb2xpZCAjZGFkNTVlO2JhY2tncm91bmQ6I2ZmZmE5MH0udWktc3RhdGUtaGlnaGxpZ2h0IGEsLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1oaWdobGlnaHQgYSwudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtaGlnaGxpZ2h0IGF7Y29sb3I6Izc3NzYyMH0udWktc3RhdGUtZXJyb3IsLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1lcnJvciwudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZXJyb3J7Ym9yZGVyOjFweCBzb2xpZCAjZjFhODk5O2JhY2tncm91bmQ6I2ZkZGZkZjtjb2xvcjojNWYzZjNmfS51aS1zdGF0ZS1lcnJvciBhLC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtZXJyb3IgYSwudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZXJyb3IgYXtjb2xvcjojNWYzZjNmfS51aS1zdGF0ZS1lcnJvci10ZXh0LC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtZXJyb3ItdGV4dCwudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZXJyb3ItdGV4dHtjb2xvcjojNWYzZjNmfS51aS1wcmlvcml0eS1wcmltYXJ5LC51aS13aWRnZXQtY29udGVudCAudWktcHJpb3JpdHktcHJpbWFyeSwudWktd2lkZ2V0LWhlYWRlciAudWktcHJpb3JpdHktcHJpbWFyeXtmb250LXdlaWdodDpib2xkfS51aS1wcmlvcml0eS1zZWNvbmRhcnksLnVpLXdpZGdldC1jb250ZW50IC51aS1wcmlvcml0eS1zZWNvbmRhcnksLnVpLXdpZGdldC1oZWFkZXIgLnVpLXByaW9yaXR5LXNlY29uZGFyeXtvcGFjaXR5Oi43Oy1tcy1maWx0ZXI6ImFscGhhKG9wYWNpdHk9NzApIjtmb250LXdlaWdodDpub3JtYWx9LnVpLXN0YXRlLWRpc2FibGVkLC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtZGlzYWJsZWQsLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWRpc2FibGVke29wYWNpdHk6LjM1Oy1tcy1maWx0ZXI6ImFscGhhKG9wYWNpdHk9MzUpIjtiYWNrZ3JvdW5kLWltYWdlOm5vbmV9LnVpLXN0YXRlLWRpc2FibGVkIC51aS1pY29uey1tcy1maWx0ZXI6ImFscGhhKG9wYWNpdHk9MzUpIn0udWktaWNvbnt3aWR0aDoxNnB4O2hlaWdodDoxNnB4fS51aS1pY29uLC51aS13aWRnZXQtY29udGVudCAudWktaWNvbntiYWNrZ3JvdW5kLWltYWdlOnVybCgiaW1hZ2VzL3VpLWljb25zXzQ0NDQ0NF8yNTZ4MjQwLnBuZyIpfS51aS13aWRnZXQtaGVhZGVyIC51aS1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKCJpbWFnZXMvdWktaWNvbnNfNDQ0NDQ0XzI1NngyNDAucG5nIil9LnVpLXN0YXRlLWhvdmVyIC51aS1pY29uLC51aS1zdGF0ZS1mb2N1cyAudWktaWNvbiwudWktYnV0dG9uOmhvdmVyIC51aS1pY29uLC51aS1idXR0b246Zm9jdXMgLnVpLWljb257YmFja2dyb3VuZC1pbWFnZTp1cmwoImltYWdlcy91aS1pY29uc181NTU1NTVfMjU2eDI0MC5wbmciKX0udWktc3RhdGUtYWN0aXZlIC51aS1pY29uLC51aS1idXR0b246YWN0aXZlIC51aS1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKCJpbWFnZXMvdWktaWNvbnNfZmZmZmZmXzI1NngyNDAucG5nIil9LnVpLXN0YXRlLWhpZ2hsaWdodCAudWktaWNvbiwudWktYnV0dG9uIC51aS1zdGF0ZS1oaWdobGlnaHQudWktaWNvbntiYWNrZ3JvdW5kLWltYWdlOnVybCgiaW1hZ2VzL3VpLWljb25zXzc3NzYyMF8yNTZ4MjQwLnBuZyIpfS51aS1zdGF0ZS1lcnJvciAudWktaWNvbiwudWktc3RhdGUtZXJyb3ItdGV4dCAudWktaWNvbntiYWNrZ3JvdW5kLWltYWdlOnVybCgiaW1hZ2VzL3VpLWljb25zX2NjMDAwMF8yNTZ4MjQwLnBuZyIpfS51aS1idXR0b24gLnVpLWljb257YmFja2dyb3VuZC1pbWFnZTp1cmwoImltYWdlcy91aS1pY29uc183Nzc3NzdfMjU2eDI0MC5wbmciKX0udWktaWNvbi1ibGFuay51aS1pY29uLWJsYW5rLnVpLWljb24tYmxhbmt7YmFja2dyb3VuZC1pbWFnZTpub25lfS51aS1pY29uLWNhcmV0LTEtbntiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgMH0udWktaWNvbi1jYXJldC0xLW5le2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggMH0udWktaWNvbi1jYXJldC0xLWV7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAwfS51aS1pY29uLWNhcmV0LTEtc2V7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAwfS51aS1pY29uLWNhcmV0LTEtc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NXB4IDB9LnVpLWljb24tY2FyZXQtMS1zd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IDB9LnVpLWljb24tY2FyZXQtMS13e2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggMH0udWktaWNvbi1jYXJldC0xLW53e2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IDB9LnVpLWljb24tY2FyZXQtMi1uLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMTI4cHggMH0udWktaWNvbi1jYXJldC0yLWUtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAwfS51aS1pY29uLXRyaWFuZ2xlLTEtbntiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTE2cHh9LnVpLWljb24tdHJpYW5nbGUtMS1uZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC0xNnB4fS51aS1pY29uLXRyaWFuZ2xlLTEtZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC0xNnB4fS51aS1pY29uLXRyaWFuZ2xlLTEtc2V7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtMTZweH0udWktaWNvbi10cmlhbmdsZS0xLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotNjVweCAtMTZweH0udWktaWNvbi10cmlhbmdsZS0xLXN3e2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTE2cHh9LnVpLWljb24tdHJpYW5nbGUtMS13e2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTE2cHh9LnVpLWljb24tdHJpYW5nbGUtMS1ud3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAtMTZweH0udWktaWNvbi10cmlhbmdsZS0yLW4tc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjhweCAtMTZweH0udWktaWNvbi10cmlhbmdsZS0yLWUtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAtMTZweH0udWktaWNvbi1hcnJvdy0xLW57YmFja2dyb3VuZC1wb3NpdGlvbjowIC0zMnB4fS51aS1pY29uLWFycm93LTEtbmV7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtMzJweH0udWktaWNvbi1hcnJvdy0xLWV7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtMzJweH0udWktaWNvbi1hcnJvdy0xLXNle2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTMycHh9LnVpLWljb24tYXJyb3ctMS1ze2JhY2tncm91bmQtcG9zaXRpb246LTY1cHggLTMycHh9LnVpLWljb24tYXJyb3ctMS1zd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC0zMnB4fS51aS1pY29uLWFycm93LTEtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC0zMnB4fS51aS1pY29uLWFycm93LTEtbnd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggLTMycHh9LnVpLWljb24tYXJyb3ctMi1uLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMTI4cHggLTMycHh9LnVpLWljb24tYXJyb3ctMi1uZS1zd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAtMzJweH0udWktaWNvbi1hcnJvdy0yLWUtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNjBweCAtMzJweH0udWktaWNvbi1hcnJvdy0yLXNlLW53e2JhY2tncm91bmQtcG9zaXRpb246LTE3NnB4IC0zMnB4fS51aS1pY29uLWFycm93c3RvcC0xLW57YmFja2dyb3VuZC1wb3NpdGlvbjotMTkycHggLTMycHh9LnVpLWljb24tYXJyb3dzdG9wLTEtZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMDhweCAtMzJweH0udWktaWNvbi1hcnJvd3N0b3AtMS1ze2JhY2tncm91bmQtcG9zaXRpb246LTIyNHB4IC0zMnB4fS51aS1pY29uLWFycm93c3RvcC0xLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotMjQwcHggLTMycHh9LnVpLWljb24tYXJyb3d0aGljay0xLW57YmFja2dyb3VuZC1wb3NpdGlvbjoxcHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGljay0xLW5le2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGljay0xLWV7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrLTEtc2V7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrLTEtc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2stMS1zd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2stMS13e2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGljay0xLW53e2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2stMi1uLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMTI4cHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGljay0yLW5lLXN3e2JhY2tncm91bmQtcG9zaXRpb246LTE0NHB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2stMi1lLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTYwcHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGljay0yLXNlLW53e2JhY2tncm91bmQtcG9zaXRpb246LTE3NnB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2tzdG9wLTEtbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xOTJweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrc3RvcC0xLWV7YmFja2dyb3VuZC1wb3NpdGlvbjotMjA4cHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGlja3N0b3AtMS1ze2JhY2tncm91bmQtcG9zaXRpb246LTIyNHB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2tzdG9wLTEtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yNDBweCAtNDhweH0udWktaWNvbi1hcnJvd3JldHVybnRoaWNrLTEtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTY0cHh9LnVpLWljb24tYXJyb3dyZXR1cm50aGljay0xLW57YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtNjRweH0udWktaWNvbi1hcnJvd3JldHVybnRoaWNrLTEtZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC02NHB4fS51aS1pY29uLWFycm93cmV0dXJudGhpY2stMS1ze2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTY0cHh9LnVpLWljb24tYXJyb3dyZXR1cm4tMS13e2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTY0cHh9LnVpLWljb24tYXJyb3dyZXR1cm4tMS1ue2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTY0cHh9LnVpLWljb24tYXJyb3dyZXR1cm4tMS1le2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTY0cHh9LnVpLWljb24tYXJyb3dyZXR1cm4tMS1ze2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IC02NHB4fS51aS1pY29uLWFycm93cmVmcmVzaC0xLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTI4cHggLTY0cHh9LnVpLWljb24tYXJyb3dyZWZyZXNoLTEtbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAtNjRweH0udWktaWNvbi1hcnJvd3JlZnJlc2gtMS1le2JhY2tncm91bmQtcG9zaXRpb246LTE2MHB4IC02NHB4fS51aS1pY29uLWFycm93cmVmcmVzaC0xLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMTc2cHggLTY0cHh9LnVpLWljb24tYXJyb3ctNHtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTgwcHh9LnVpLWljb24tYXJyb3ctNC1kaWFne2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTgwcHh9LnVpLWljb24tZXh0bGlua3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC04MHB4fS51aS1pY29uLW5ld3dpbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC04MHB4fS51aS1pY29uLXJlZnJlc2h7YmFja2dyb3VuZC1wb3NpdGlvbjotNjRweCAtODBweH0udWktaWNvbi1zaHVmZmxle2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTgwcHh9LnVpLWljb24tdHJhbnNmZXItZS13e2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTgwcHh9LnVpLWljb24tdHJhbnNmZXJ0aGljay1lLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggLTgwcHh9LnVpLWljb24tZm9sZGVyLWNvbGxhcHNlZHtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTk2cHh9LnVpLWljb24tZm9sZGVyLW9wZW57YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtOTZweH0udWktaWNvbi1kb2N1bWVudHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC05NnB4fS51aS1pY29uLWRvY3VtZW50LWJ7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtOTZweH0udWktaWNvbi1ub3Rle2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTk2cHh9LnVpLWljb24tbWFpbC1jbG9zZWR7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtOTZweH0udWktaWNvbi1tYWlsLW9wZW57YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtOTZweH0udWktaWNvbi1zdWl0Y2FzZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAtOTZweH0udWktaWNvbi1jb21tZW50e2JhY2tncm91bmQtcG9zaXRpb246LTEyOHB4IC05NnB4fS51aS1pY29uLXBlcnNvbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAtOTZweH0udWktaWNvbi1wcmludHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNjBweCAtOTZweH0udWktaWNvbi10cmFzaHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNzZweCAtOTZweH0udWktaWNvbi1sb2NrZWR7YmFja2dyb3VuZC1wb3NpdGlvbjotMTkycHggLTk2cHh9LnVpLWljb24tdW5sb2NrZWR7YmFja2dyb3VuZC1wb3NpdGlvbjotMjA4cHggLTk2cHh9LnVpLWljb24tYm9va21hcmt7YmFja2dyb3VuZC1wb3NpdGlvbjotMjI0cHggLTk2cHh9LnVpLWljb24tdGFne2JhY2tncm91bmQtcG9zaXRpb246LTI0MHB4IC05NnB4fS51aS1pY29uLWhvbWV7YmFja2dyb3VuZC1wb3NpdGlvbjowIC0xMTJweH0udWktaWNvbi1mbGFne2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTExMnB4fS51aS1pY29uLWNhbGVuZGFye2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTExMnB4fS51aS1pY29uLWNhcnR7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtMTEycHh9LnVpLWljb24tcGVuY2lse2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTExMnB4fS51aS1pY29uLWNsb2Nre2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTExMnB4fS51aS1pY29uLWRpc2t7YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtMTEycHh9LnVpLWljb24tY2FsY3VsYXRvcntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAtMTEycHh9LnVpLWljb24tem9vbWlue2JhY2tncm91bmQtcG9zaXRpb246LTEyOHB4IC0xMTJweH0udWktaWNvbi16b29tb3V0e2JhY2tncm91bmQtcG9zaXRpb246LTE0NHB4IC0xMTJweH0udWktaWNvbi1zZWFyY2h7YmFja2dyb3VuZC1wb3NpdGlvbjotMTYwcHggLTExMnB4fS51aS1pY29uLXdyZW5jaHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNzZweCAtMTEycHh9LnVpLWljb24tZ2VhcntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xOTJweCAtMTEycHh9LnVpLWljb24taGVhcnR7YmFja2dyb3VuZC1wb3NpdGlvbjotMjA4cHggLTExMnB4fS51aS1pY29uLXN0YXJ7YmFja2dyb3VuZC1wb3NpdGlvbjotMjI0cHggLTExMnB4fS51aS1pY29uLWxpbmt7YmFja2dyb3VuZC1wb3NpdGlvbjotMjQwcHggLTExMnB4fS51aS1pY29uLWNhbmNlbHtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTEyOHB4fS51aS1pY29uLXBsdXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtMTI4cHh9LnVpLWljb24tcGx1c3RoaWNre2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTEyOHB4fS51aS1pY29uLW1pbnVze2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTEyOHB4fS51aS1pY29uLW1pbnVzdGhpY2t7YmFja2dyb3VuZC1wb3NpdGlvbjotNjRweCAtMTI4cHh9LnVpLWljb24tY2xvc2V7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtMTI4cHh9LnVpLWljb24tY2xvc2V0aGlja3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC0xMjhweH0udWktaWNvbi1rZXl7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggLTEyOHB4fS51aS1pY29uLWxpZ2h0YnVsYntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjhweCAtMTI4cHh9LnVpLWljb24tc2Npc3NvcnN7YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTEyOHB4fS51aS1pY29uLWNsaXBib2FyZHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNjBweCAtMTI4cHh9LnVpLWljb24tY29weXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNzZweCAtMTI4cHh9LnVpLWljb24tY29udGFjdHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xOTJweCAtMTI4cHh9LnVpLWljb24taW1hZ2V7YmFja2dyb3VuZC1wb3NpdGlvbjotMjA4cHggLTEyOHB4fS51aS1pY29uLXZpZGVve2JhY2tncm91bmQtcG9zaXRpb246LTIyNHB4IC0xMjhweH0udWktaWNvbi1zY3JpcHR7YmFja2dyb3VuZC1wb3NpdGlvbjotMjQwcHggLTEyOHB4fS51aS1pY29uLWFsZXJ0e2JhY2tncm91bmQtcG9zaXRpb246MCAtMTQ0cHh9LnVpLWljb24taW5mb3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC0xNDRweH0udWktaWNvbi1ub3RpY2V7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtMTQ0cHh9LnVpLWljb24taGVscHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC0xNDRweH0udWktaWNvbi1jaGVja3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC0xNDRweH0udWktaWNvbi1idWxsZXR7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtMTQ0cHh9LnVpLWljb24tcmFkaW8tb257YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtMTQ0cHh9LnVpLWljb24tcmFkaW8tb2Zme2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IC0xNDRweH0udWktaWNvbi1waW4td3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjhweCAtMTQ0cHh9LnVpLWljb24tcGluLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTE0NHB4fS51aS1pY29uLXBsYXl7YmFja2dyb3VuZC1wb3NpdGlvbjowIC0xNjBweH0udWktaWNvbi1wYXVzZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC0xNjBweH0udWktaWNvbi1zZWVrLW5leHR7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtMTYwcHh9LnVpLWljb24tc2Vlay1wcmV2e2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTE2MHB4fS51aS1pY29uLXNlZWstZW5ke2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTE2MHB4fS51aS1pY29uLXNlZWstc3RhcnR7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtMTYwcHh9LnVpLWljb24tc2Vlay1maXJzdHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC0xNjBweH0udWktaWNvbi1zdG9we2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTE2MHB4fS51aS1pY29uLWVqZWN0e2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IC0xNjBweH0udWktaWNvbi12b2x1bWUtb2Zme2JhY2tncm91bmQtcG9zaXRpb246LTEyOHB4IC0xNjBweH0udWktaWNvbi12b2x1bWUtb257YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTE2MHB4fS51aS1pY29uLXBvd2Vye2JhY2tncm91bmQtcG9zaXRpb246MCAtMTc2cHh9LnVpLWljb24tc2lnbmFsLWRpYWd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtMTc2cHh9LnVpLWljb24tc2lnbmFse2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTE3NnB4fS51aS1pY29uLWJhdHRlcnktMHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC0xNzZweH0udWktaWNvbi1iYXR0ZXJ5LTF7YmFja2dyb3VuZC1wb3NpdGlvbjotNjRweCAtMTc2cHh9LnVpLWljb24tYmF0dGVyeS0ye2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTE3NnB4fS51aS1pY29uLWJhdHRlcnktM3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC0xNzZweH0udWktaWNvbi1jaXJjbGUtcGx1c3tiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTE5MnB4fS51aS1pY29uLWNpcmNsZS1taW51c3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtY2xvc2V7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtMTkycHh9LnVpLWljb24tY2lyY2xlLXRyaWFuZ2xlLWV7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtMTkycHh9LnVpLWljb24tY2lyY2xlLXRyaWFuZ2xlLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotNjRweCAtMTkycHh9LnVpLWljb24tY2lyY2xlLXRyaWFuZ2xlLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtMTkycHh9LnVpLWljb24tY2lyY2xlLXRyaWFuZ2xlLW57YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtMTkycHh9LnVpLWljb24tY2lyY2xlLWFycm93LWV7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS1hcnJvdy1ze2JhY2tncm91bmQtcG9zaXRpb246LTEyOHB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtYXJyb3ctd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAtMTkycHh9LnVpLWljb24tY2lyY2xlLWFycm93LW57YmFja2dyb3VuZC1wb3NpdGlvbjotMTYwcHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS16b29taW57YmFja2dyb3VuZC1wb3NpdGlvbjotMTc2cHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS16b29tb3V0e2JhY2tncm91bmQtcG9zaXRpb246LTE5MnB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtY2hlY2t7YmFja2dyb3VuZC1wb3NpdGlvbjotMjA4cHggLTE5MnB4fS51aS1pY29uLWNpcmNsZXNtYWxsLXBsdXN7YmFja2dyb3VuZC1wb3NpdGlvbjowIC0yMDhweH0udWktaWNvbi1jaXJjbGVzbWFsbC1taW51c3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC0yMDhweH0udWktaWNvbi1jaXJjbGVzbWFsbC1jbG9zZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC0yMDhweH0udWktaWNvbi1zcXVhcmVzbWFsbC1wbHVze2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTIwOHB4fS51aS1pY29uLXNxdWFyZXNtYWxsLW1pbnVze2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTIwOHB4fS51aS1pY29uLXNxdWFyZXNtYWxsLWNsb3Nle2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTIwOHB4fS51aS1pY29uLWdyaXAtZG90dGVkLXZlcnRpY2Fse2JhY2tncm91bmQtcG9zaXRpb246MCAtMjI0cHh9LnVpLWljb24tZ3JpcC1kb3R0ZWQtaG9yaXpvbnRhbHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC0yMjRweH0udWktaWNvbi1ncmlwLXNvbGlkLXZlcnRpY2Fse2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTIyNHB4fS51aS1pY29uLWdyaXAtc29saWQtaG9yaXpvbnRhbHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC0yMjRweH0udWktaWNvbi1ncmlwc21hbGwtZGlhZ29uYWwtc2V7YmFja2dyb3VuZC1wb3NpdGlvbjotNjRweCAtMjI0cHh9LnVpLWljb24tZ3JpcC1kaWFnb25hbC1zZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC0yMjRweH0udWktY29ybmVyLWFsbCwudWktY29ybmVyLXRvcCwudWktY29ybmVyLWxlZnQsLnVpLWNvcm5lci10bHtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjNweH0udWktY29ybmVyLWFsbCwudWktY29ybmVyLXRvcCwudWktY29ybmVyLXJpZ2h0LC51aS1jb3JuZXItdHJ7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6M3B4fS51aS1jb3JuZXItYWxsLC51aS1jb3JuZXItYm90dG9tLC51aS1jb3JuZXItbGVmdCwudWktY29ybmVyLWJse2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6M3B4fS51aS1jb3JuZXItYWxsLC51aS1jb3JuZXItYm90dG9tLC51aS1jb3JuZXItcmlnaHQsLnVpLWNvcm5lci1icntib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czozcHh9LnVpLXdpZGdldC1vdmVybGF5e2JhY2tncm91bmQ6I2FhYTtvcGFjaXR5Oi4zOy1tcy1maWx0ZXI6QWxwaGEoT3BhY2l0eT0zMCl9LnVpLXdpZGdldC1zaGFkb3d7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCA1cHggIzY2Njtib3gtc2hhZG93OjAgMCA1cHggIzY2Nn0KLyoqIC9jc3Mvc3R5bGUuY3NzICoqLwpodG1sLCBib2R5LCBhcHBsZXQsIG9iamVjdCwgaWZyYW1lLCBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBibG9ja3F1b3RlLCBwcmUsIGFiYnIsIGFjcm9ueW0sIGFkZHJlc3MsIGJpZywgY2l0ZSwgY29kZSwgZGVsLCBkZm4sIGVtLCBmb250LCBpbWcsIGlucywga2JkLCBxLCBzLCBzYW1wLCBzbWFsbCwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0dCwgdmFyLCBiLCB1LCBpLCBjZW50ZXIsIGRsLCBkdCwgZGQsIG9sLCB1bCwgbGksIGZpZWxkc2V0LCBmb3JtLCBsYWJlbCwgbGVnZW5kLCB0YWJsZSwgY2FwdGlvbiwgdGJvZHksIHRmb290LCB0aGVhZCwgdHIsIHRoLCB0ZCB7IG1hcmdpbjowOyBwYWRkaW5nOjA7IH0gaHRtbCB7IC1tcy10ZXh0LXNpemUtYWRqdXN0OjEwMCU7IC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDoxMDAlOyB9IGJvZHkgeyBwYWRkaW5nOjA7IG1hcmdpbjowIDAgMCAwOyBiYWNrZ3JvdW5kOiNGRkZGRkY7IGNvbG9yOiMzMzMzMzM7IGZvbnQtZmFtaWx5OnZhcigtLWZvbnQtdGV4dC1tb2IpOyBmb250LXdlaWdodDp2YXIoLS1mb250LXRleHQtd2VpZ2h0KTsgZm9udC1zaXplOjAuOTM4cmVtIDsgfSBpbnB1dCwgdGV4dGFyZWEsIHNlbGVjdCwgYnV0dG9uIHsgZm9udC1mYW1pbHk6dmFyKC0tZm9udC10ZXh0LW1vYik7IGZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtdGV4dC13ZWlnaHQpOyB9IC5mdWxsV2lkdGhCdXR0b24gYSwgLnRvcG5hdiB0ciB0ZCBhLCBhI21vYmlsZVByb21vdGlvbkJ0biBzcGFueyBmb250LWZhbWlseTp2YXIoLS1mb250LWJ1dHRvbnMtbW9iKTsgZm9udC13ZWlnaHQ6dmFyKC0tZm9udC1idXR0b25zLXdlaWdodCk7IH0gLmRlYWxlci1jb2xvciB7IGNvbG9yOiNlNGRjZDM7IH0gLmgyZm9ybXsgZm9udC13ZWlnaHQ6Ym9sZDsgdGV4dC10cmFuc2Zvcm06dmFyKC0tdHh0LXVwcGVyKTsgYmFja2dyb3VuZDojOTk5OyBjb2xvcjp3aGl0ZTsgcGFkZGluZzo1cHggMTBweDsgZm9udC1zaXplOjAuOTM4cmVtIDsgbWFyZ2luLXRvcDoxNXB4OyB9IC4tc2VsZWN0IHsgcGFkZGluZzowOyBtYXJnaW46MDsgYm9yZGVyOjFweCBzb2xpZCAjY2NjOyBib3JkZXItcmFkaXVzOjNweDsgb3ZlcmZsb3c6aGlkZGVuOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7IGJhY2tncm91bmQ6I2ZmZjsgcG9zaXRpb246cmVsYXRpdmU7IH0gLnVzZWRfZGV0YWlsc19vcHRpb25zX3RpdGxlLCAubmV3X2RldGFpbHNfb3B0aW9uc190aXRsZXsgYmFja2dyb3VuZC1jb2xvcjojY2NjOyBjb2xvcjojMDAwOyBwYWRkaW5nOjEwcHg7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IG1hcmdpbi1sZWZ0Oi0xMHB4OyBtYXJnaW4tcmlnaHQ6LTEwcHg7IH0gLi1zZWxlY3Q6YWZ0ZXIgeyB0b3A6NTAlOyByaWdodDo1cHg7IGJvcmRlcjpzb2xpZCB0cmFuc3BhcmVudDsgY29udGVudDoiICI7IGhlaWdodDowOyB3aWR0aDowOyBwb3NpdGlvbjphYnNvbHV0ZTsgcG9pbnRlci1ldmVudHM6bm9uZTsgYm9yZGVyLWNvbG9yOnJnYmEoMCwgMCwgMCwgMCk7IGJvcmRlci10b3AtY29sb3I6IzAwMDAwMDsgYm9yZGVyLXdpZHRoOjVweDsgbWFyZ2luLXRvcDotMnB4OyB6LWluZGV4OjEwMDsgfSAuLXNlbGVjdCBzZWxlY3QgeyBwYWRkaW5nOjVweCA4cHg7IHdpZHRoOjEwMCU7IGJvcmRlcjpub25lOyBib3gtc2hhZG93Om5vbmU7IGJhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7IGJhY2tncm91bmQtaW1hZ2U6bm9uZTsgLXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7IC1tb3otYXBwZWFyYW5jZTpub25lOyBhcHBlYXJhbmNlOm5vbmU7IH0gLi1zZWxlY3Qgc2VsZWN0OmZvY3VzIHsgb3V0bGluZTpub25lOyB9IGEsIGE6aG92ZXIgeyBvdXRsaW5lOm5vbmU7IH0gLm5hdiA+IHVsID4gbGl7IG1hcmdpbi1ib3R0b206M3B4OyB9IGgxeyBmb250LXNpemU6MS40ZW07IHBhZGRpbmctdG9wOjEwcHg7IGZvbnQtZmFtaWx5OnZhcigtLWZvbnQtaDEtbW9iKTsgZm9udC13ZWlnaHQ6dmFyKC0tZm9udC1oMS13ZWlnaHQpOyB9IHNwYW4uaDItYWx0LHNwYW4uaDMtYWx0eyBtYXJnaW46MDsgcGFkZGluZzowOyB9IGgyLGgzLGg0LGg1LGg2LHNwYW4uaDItYWx0LHNwYW4uaDMtYWx0eyBmb250LWZhbWlseTp2YXIoLS1mb250LWgyLW1vYik7IGZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtaDItd2VpZ2h0KTsgfSBpbnB1dFt0eXBlPWJ1dHRvbl0sIC5kZXRhaWxzIGEsIC5oLWJ1dHRvbnMgdWwgbGkgYSwgLnByaWNlLCAuZGV0YWlscywgLmRldGFpbHMgYSwgLmJ1dHRvbi1wcm9tbzMsIC5idG4tZGVmYXVsdCwgLmJ0bi1zbSwgLmJ0bi1sZyB7IGZvbnQtZmFtaWx5OnZhcigtLWZvbnQtYnV0dG9ucy1tb2IpOyBmb250LXdlaWdodDp2YXIoLS1mb250LWJ1dHRvbnMtd2VpZ2h0KTsgfSAuY2xlYXJ7IGNsZWFyOmJvdGg7fSBhLCBhOmhvdmVyIHt0ZXh0LWRlY29yYXRpb246bm9uZTt9IC5jb250YWluZXIgeyB3aWR0aDoxMDAlOyBtYXJnaW46MCAwIDAgMDsgfSAudG9wIHsgYmFja2dyb3VuZDojMjIyMjIyOyBiYWNrZ3JvdW5kOiNmZmZmZmY7IGhlaWdodDo1MHB4OyB9IC50b3BuYXYgLmJ1cmdlci1idG4tY29udGFpbmVyLm1lbnUtdGFsbHsgd2lkdGg6NDBweCAhaW1wb3J0YW50OyB9IC50b3BuYXYgYSB7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXNpemU6MWVtOyBmb250LXdlaWdodDpib2xkOyBjb2xvcjojZmZmZmZmOyBjb2xvcjojMDAyYzVmOyB9IC5idXJnZXItbWVudXsgaGVpZ2h0OjIwMCUgIWltcG9ydGFudDsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsIDAsIDAsIDAuNSkgIWltcG9ydGFudDsgfSAucmlnaHRib3JkZXIgeyBib3JkZXItcmlnaHQ6MXB4IHNvbGlkOyBib3JkZXItY29sb3I6I2ZmZmZmZjsgYm9yZGVyLWNvbG9yOiMwMDJjNWY7IH0gLmxlZnRib3JkZXIgeyBib3JkZXItbGVmdDoxcHggc29saWQ7IGJvcmRlci1jb2xvcjojZmZmZmZmOyBib3JkZXItY29sb3I6IzAwMmM1ZjsgfSAudGVsZXBob25lLCAubWFwIHtkaXNwbGF5OmJsb2NrOyBoZWlnaHQ6NjRweDsgcGFkZGluZzoyNXB4IDAgMCAwO30gLnRlbGVwaG9uZSB7YmFja2dyb3VuZDp1cmwoL2ltYWdlcy9pY29uLXBob25lLnBuZykgbm8tcmVwZWF0IDIwcHggMTVweDsgfSAubWFwIHtiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2ljb24tbWFwLnBuZykgbm8tcmVwZWF0IDUwcHggMTBweDt9IC5oZWFkZXJiYXIgeyBiYWNrZ3JvdW5kOiMzMzM7IGNvbG9yOndoaXRlOyBib3gtc2hhZG93OnJnYmEoMCwgMCwgMCwgMC41KSAwIDAgNXB4IDNweDsgYmFja2dyb3VuZDojZmZmZmZmOyBjb2xvcjojMDAyYzVmIH0gLmhlYWRlcmJhci50YWxsIHsgcG9zaXRpb24gOmFic29sdXRlOyB0b3AgOjA7IHdpZHRoIDoxMDAlOyB9IC5oZWFkZXJiYXIgLnRvcG5hdiB7IHdpZHRoIDoxMDAlOyBoZWlnaHQgOjEwMCU7IGRpc3BsYXkgOmZsZXg7IGp1c3RpZnktY29udGVudCA6c3BhY2UtYmV0d2VlbjsgYWxpZ24taXRlbXMgOmNlbnRlcjsgfSAuaGVhZGVyYmFyLnRhbGwgLnRvcG5hdiB7IGp1c3RpZnktY29udGVudDpzdHJldGNoOyB9IC5oZWFkZXJiYXIgLnRvcG5hdiA+IGRpdiB7IGhlaWdodCA6NTBweDsgZGlzcGxheSA6ZmxleDsgYWxpZ24taXRlbXMgOmNlbnRlcjsgfSAuaGVhZGVyYmFyIC50b3BuYXYgPiAubG9nby1hY3Rpb24geyBmbGV4LWRpcmVjdGlvbiA6Y29sdW1uOyBqdXN0aWZ5LWNvbnRlbnQgOnNwYWNlLWV2ZW5seTsgfSAuaGVhZGVyYmFyLnRhbGwgLnRvcG5hdiA+IGRpdjpub3QoLmJ1cmdlci1idG4tY29udGFpbmVyKSB7IGZsZXgtZ3JvdzoxOyB9IC5oZWFkZXJiYXIudGFsbCAudG9wbmF2ID4gZGl2Om5vdCg6bGFzdC1vZi10eXBlKSB7IGJvcmRlci1yaWdodDoxcHggc29saWQgI2RkZDsgfSAuaGVhZGVyYmFyIC5tZW51LmJ1cmdlci1idG4tY29udGFpbmVyIHsgbWF4LXdpZHRoIDo0MHB4OyBoZWlnaHQgOjUwcHg7IH0gLmhlYWRlcmJhciAuYnVyZ2VyLW1lbnUtYnV0dG9uLCAuaGVhZGVyYmFyLnRhbGwgLnRvcG5hdiA+IGRpdiB7IGRpc3BsYXkgOmZsZXg7IGp1c3RpZnktY29udGVudCA6Y2VudGVyOyBhbGlnbi1pdGVtcyA6Y2VudGVyOyB0ZXh0LWNlbnRlciA6Y2VudGVyOyB9IC5oZWFkZXJiYXIgLmJ1cmdlci1tZW51LWJ1dHRvbiBpIHsgZm9udC1zaXplOjEuMjVyZW07IGNvbG9yOiMwMDJjNWY7IH0gLmhlYWRlcmJhciAubG9nby1hY3Rpb24gaW1nIHsgcGFkZGluZyA6MDsgaGVpZ2h0IDoxMDAlOyBtYXgtaGVpZ2h0IDo1MHB4OyB9IC5oZWFkZXJiYXIgLmhlYWRlci1kZWFsZXItbmFtZSB7IGRpc3BsYXkgOmJsb2NrOyB0ZXh0LWFsaWduIDpjZW50ZXI7IGxpbmUtaGVpZ2h0IDoxLjNlbTsgZm9udC1zaXplIDowLjhyZW07IGNvbG9yIDojODg4ODg4OyBmb250LWZhbWlseSA6dmFyKC0tZm9udC1oMS1tb2IpOyBmb250LXdlaWdodCA6dmFyKC0tZm9udC13ZWlnaHQtaDEtbW9iKTsgfSAuaGVhZGVyYmFyIC50b3BuYXYgPiBkaXY6bm90KC5sb2dvLWFjdGlvbikgPiBhIHsgdGV4dC1hbGlnbiA6Y2VudGVyOyB3aWR0aCA6MTAwJTsgcGFkZGluZyA6MC43NXJlbTsgfSBkaXYjcGhvbmVOdW1iZXJEaXYgbGkgeyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luLWJvdHRvbToxNXB4OyB9ICNuZXdzQ29udGFpbmVyIGF7IGNvbG9yOiMzMzM7IH0gI25ld3NDb250YWluZXIgYS50b3BfbGluayB7IGNvbG9yOiNmZmY7IH0gLm5ld3NfYXJ0aWNsZSBoMnsgZm9udC13ZWlnaHQ6bm9ybWFsOyBmb250LXNpemU6MS4xMjVyZW0gOyB9IC5uZXdzX2FydGljbGUgaDEsaDIsaDMsaDQsaDUsaDZ7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgfSAuYWRkcmVzcyB7IGxldHRlci1zcGFjaW5nOi0xcHg7IGNvbG9yOiMzMzM7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgbGluZS1oZWlnaHQ6bm9ybWFsOyB3aWR0aDo1MCU7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB9IC5hZGRyZXNzLCAubG9nbyB7IHZlcnRpY2FsLWFsaWduOnRvcDsgfSAuY29udGVudHMgeyBiYWNrZ3JvdW5kOiNmYmZiZmI7IHBhZGRpbmc6MTBweDsgfSAuY29udGVudHMgaDIge2ZvbnQtc2l6ZToxLjVyZW07IGxpbmUtaGVpZ2h0OjIuMjVyZW07fSAuY29udGVudHMgcCB7Zm9udC1zaXplOjFlbTsgbGluZS1oZWlnaHQ6MS4xZW07IHRleHQtYWxpZ246anVzdGlmeTsgbGV0dGVyLXNwYWNpbmc6MDt9IC5tb2JpbGVfYnVzaW5lc3NEZXNjIHsgYmFja2dyb3VuZDojZmZmZmZmIWltcG9ydGFudDsgY29sb3I6IzAwMDAwMCFpbXBvcnRhbnQ7IH0gLm1lbnUgeyB3aWR0aDoxMDAlOyBjbGVhcjpib3RoOyB9ICNuZXdzQ29udGFpbmVyIC5uZXdzX2FydGljbGUgaW1nW3NyYyo9Jy9ja2ZpbmRlciddeyBoZWlnaHQ6YXV0byAhaW1wb3J0YW50OyBtYXgtd2lkdGg6MTAwJSAhaW1wb3J0YW50OyB9ICNuZXdzQ29udGFpbmVyIC5uZXdzX2FydGljbGUgaW1neyBtYXgtd2lkdGg6MTAwJTsgaGVpZ2h0OmF1dG87IH0gI25ld3NDb250YWluZXIgLmNsZWFyZml4IHsgaGVpZ2h0OjBweDsgfSAubWVudSB1bCBsaSBhIHNwYW4ge3BhZGRpbmctbGVmdDo3cHg7fSAubWVudSB1bCBsaSBhIHNwYW4udGV4dHZhbCB7bGluZS1oZWlnaHQ6MzJweDsgIyNNT0JJTEVfTUVOVV9DU1MjI30gLm1lbnUgdWwgbGkgYSBzcGFuIGltZyB7cGFkZGluZy1sZWZ0OjEwcHg7IHZlcnRpY2FsLWFsaWduOm1pZGRsZTt9IC5ib3R0b20gLmxpbmtzIGEgeyBjb2xvcjojMDAwMDAwOyB9IC5FTkdMSVNIIC5ib3R0b20gLmxpbmtzIHVsIGxpIGF7IHRleHQtdHJhbnNmb3JtOmNhcGl0YWxpemU7IH0gLmJvdHRvbSAubGlua3MgZGl2IHsgbWFyZ2luOjE1cHggMDsgZGlzcGxheTpibG9jazsgfSAuYm90dG9tIHsgcGFkZGluZzoxMHB4OyBkaXNwbGF5OmJsb2NrOyAtd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMHB4IDEwcHggMTFweCAtMTFweCByZ2JhKDUwLCA1MCwgNTAsIDAuNzUpOyAtbW96LWJveC1zaGFkb3c6IGluc2V0IDBweCAxMHB4IDExcHggLTExcHggcmdiYSg1MCwgNTAsIDUwLCAwLjc1KTsgYm94LXNoYWRvdzogaW5zZXQgMHB4IDEwcHggMTFweCAtMTFweCByZ2JhKDUwLCA1MCwgNTAsIDAuNzUpOyBiYWNrZ3JvdW5kLWNvbG9yOiNlNGRjZDM7IGNvbG9yOiMwMDAwMDA7IC0tdHh0LWNvbG9yOiMwMDAwMDA7IH0gLmJvdHRvbSAubGlua3MgeyBmb250LXNpemU6MC45MzhyZW0gOyBsaW5lLWhlaWdodDoyMXB4OyBjbGVhcjpib3RoOyBwYWRkaW5nLXRvcDo1cHg7IH0gLmJvdHRvbSAuZm9vdGVyX2FkZHJlc3Mgc3BhbnsgY29sb3I6aW5oZXJpdCAhaW1wb3J0YW50OyB9IC5ib3R0b20gLmxpbmtzIGRpdi5mb290ZXJfbG9nbyB7IG1hcmdpbjoxLjI1cmVtIDAgMS43NXJlbSAwOyB9IC5ib3R0b20gLmxpbmtzIGRpdi5mb290ZXJfbG9nbyBpbWcgeyBtYXgtd2lkdGg6MTgwcHg7IG1heC1oZWlnaHQ6MTAwcHg7IH0gYS5idXR0b24tcHJvbW8geyBjb2xvcjojZmZmZmZmIWltcG9ydGFudDsgfSAuYnJlYWRjcnVtYnMgeyBmb250LXNpemUgOjAuOXJlbTsgY29sb3IgOiMyMjIyMjI7IGZvbnQtd2VpZ2h0IDpib2xkOyBwYWRkaW5nIDoxNXB4OyB9IC5icmVhZGNydW1icyBhIHtjb2xvcjojNjY2OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSAuYm90dG9tIC5saW5rcyBkaXYuZm9vdGVyLWNhcmxpc3RpbmcgeyBwYWRkaW5nLWJvdHRvbTo1cHg7IH0gLmNGb290ZXJDYXJMaW5rc3sgcGFkZGluZzowIDAgNXB4IDA7IH0gLnNlYXJjaGJveCB7IGJhY2tncm91bmQ6I0U1RTVFNTsgfSAuc2VhcmNoYm94IGgzIC51aS1hY2NvcmRpb24taGVhZGVyLWljb24ge3BhZGRpbmc6MHB4IDRweCA2cHggMHB4OyBjdXJzb3I6cG9pbnRlcjsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9kb3duYXJyb3cucG5nKSBuby1yZXBlYXQgOTglIGNlbnRlcjsgdG9wOjE4cHghaW1wb3J0YW50O30gLmZvcm1hcmVhIHsgLXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgMXB4IDNweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7IC1tb3otYm94LXNoYWRvdzppbnNldCAwIDFweCAzcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpOyBib3gtc2hhZG93Omluc2V0IDAgMXB4IDNweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7IH0gLmZvcm1hcmVhIHRhYmxlIHRyIHRkIHsgcGFkZGluZzo1cHg7IH0gaW5wdXQsIGlucHV0W3R5cGU9dGV4dF0sIGlucHV0W3R5cGU9dGVsXSwgaW5wdXRbdHlwZT1lbWFpbF0sIHNlbGVjdCwgdGV4dGFyZWF7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7IC1tb3otYm9yZGVyLXJhZGl1czo0cHg7IGJvcmRlci1yYWRpdXM6NHB4OyBib3JkZXI6MXB4IHNvbGlkICNjY2M7IHBhZGRpbmc6NXB4OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0gLmNoZWNrYm94IHsgcG9zaXRpb246cmVsYXRpdmU7IGRpc3BsYXk6YmxvY2s7IH0gLmNoZWNrYm94IGlucHV0W3R5cGU9ImNoZWNrYm94Il0geyB3aWR0aDphdXRvOyBvcGFjaXR5OjAuMDAwMDAwMDE7IHBvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjA7IG1hcmdpbi1sZWZ0Oi0ycHg7IH0gLmNoZWNrYm94X2hlbHBlciB7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6LTRweDsgbGVmdDotNHB4OyBjdXJzb3I6cG9pbnRlcjsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjFyZW0gOyB1c2VyLXNlbGVjdDpub25lOyBjb2xvcjojZTdlN2U3OyB9IC5jaGVja2JveF9oZWxwZXI6YmVmb3JlIHsgY29udGVudDonJzsgcG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MDsgdG9wOjA7IG1hcmdpbjo0cHg7IHdpZHRoOjE1cHg7IGhlaWdodDoxNXB4OyB0cmFuc2l0aW9uOnRyYW5zZm9ybSAwLjI4cyBlYXNlOyBib3JkZXItcmFkaXVzOjJweDsgYm9yZGVyOjFweCBzb2xpZCAjY2NjOyBiYWNrZ3JvdW5kOndoaXRlOyB9IC5jaGVja2JveF9oZWxwZXI6YWZ0ZXIgeyBjb250ZW50OicnOyBkaXNwbGF5OmJsb2NrOyB3aWR0aDo4cHg7IGhlaWdodDo1cHg7IGJvcmRlci1ib3R0b206MnB4IHNvbGlkICMzMzM7IGJvcmRlci1sZWZ0OjJweCBzb2xpZCAjMzMzOyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKSBzY2FsZSgwKTsgLW1vei10cmFuc2Zvcm06cm90YXRlKC00NWRlZykgc2NhbGUoMCk7IC1tcy10cmFuc2Zvcm06cm90YXRlKC00NWRlZykgc2NhbGUoMCk7IHRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKSBzY2FsZSgwKTsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDo3cHg7IGxlZnQ6OHB4OyB9IC5jaGVja2JveCBpbnB1dFt0eXBlPSJjaGVja2JveCJdY2hlY2tlZCB+IC5jaGVja2JveF9oZWxwZXI6OmJlZm9yZSB7IGNvbG9yOiMzMzM7IH0gLmNoZWNrYm94IGlucHV0W3R5cGU9ImNoZWNrYm94Il06Y2hlY2tlZCB+IC5jaGVja2JveF9oZWxwZXI6OmFmdGVyIHsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC00NWRlZykgc2NhbGUoMSk7IC1tb3otdHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpIHNjYWxlKDEpOyAtbXMtdHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpIHNjYWxlKDEpOyB0cmFuc2Zvcm06cm90YXRlKC00NWRlZykgc2NhbGUoMSk7IH0gLmNoZWNrYm94IGxhYmVsIHsgbWluLWhlaWdodDoyNHB4OyBwYWRkaW5nLWxlZnQ6MjRweDsgbWFyZ2luLWJvdHRvbTowOyBmb250LXdlaWdodDpub3JtYWw7IGN1cnNvcjpwb2ludGVyOyB2ZXJ0aWNhbC1hbGlnbjpzdWI7IH0gLmNoZWNrYm94IGlucHV0W3R5cGU9ImNoZWNrYm94Il06Zm9jdXMgKyBsYWJlbDo6YmVmb3JlIHsgb3V0bGluZTpyZ2IoNTksIDE1MywgMjUyKSBhdXRvIDVweDsgfSBzZWxlY3R7IGZvbnQtc2l6ZTowLjkzOHJlbSA7IH0gLmRyb3Bkb3duIHt3aWR0aDo5NSU7IG1hcmdpbjphdXRvIDVweDt9IC5idXR0b24ge2JhY2tncm91bmQ6IzMzMzsgY29sb3I6I2ZmZjsgZm9udC1zaXplOjEuMWVtOyB0ZXh0LWFsaWduOmNlbnRlcjsgd2lkdGg6MzAwcHg7IHBhZGRpbmc6MTVweDsgY3Vyc29yOnBvaW50ZXJ9IC5pbWFnZV9ib3ggeyBwb3NpdGlvbjpyZWxhdGl2ZTsgbWFyZ2luOjdweDsgfSAuaW1hZ2VfYm94IGltZ3sgYm9yZGVyOjFweCBzb2xpZCAjZWVlOyB9ICNjb250YWluZXJGbEIgeyB6LWluZGV4Ojk5OTk5OTk7IH0gLmltYWdlX3JpYmJvbiB7IHBvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjNweDsgdG9wOi00cHg7IHotaW5kZXg6ODUwOyBvdmVyZmxvdzpoaWRkZW47IHdpZHRoOjExMnB4OyBoZWlnaHQ6MTEycHg7IHRleHQtYWxpZ246cmlnaHQ7IH0gLmltYWdlX3JpYmJvbiBzcGFuIHsgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzAwMDAwMDsgdGV4dC1hbGlnbjpjZW50ZXI7IGxpbmUtaGVpZ2h0OjI4cHg7IHRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKTsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC00NWRlZyk7IHdpZHRoOjE0OHB4OyBkaXNwbGF5OmJsb2NrOyBiYWNrZ3JvdW5kOiNlNGRjZDM7IGJveC1zaGFkb3c6MCAzcHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMSk7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MzBweDsgbGVmdDotMzBweDsgfSAuaW1hZ2VfcmliYm9uIHNwYW46OmJlZm9yZSB7IGNvbnRlbnQ6IiI7IHBvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjBweDsgdG9wOjEwMCU7IHotaW5kZXg6LTE7IGJvcmRlci1sZWZ0OjNweCBzb2xpZCAjZTRkY2QzOyBib3JkZXItcmlnaHQ6M3B4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItYm90dG9tOjNweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXRvcDozcHggc29saWQgI2U0ZGNkMzsgfSAuaW1hZ2VfcmliYm9uIHNwYW46OmFmdGVyIHsgY29udGVudDoiIjsgcG9zaXRpb246YWJzb2x1dGU7IHJpZ2h0OjBweDsgdG9wOjEwMCU7IHotaW5kZXg6LTE7IGJvcmRlci1sZWZ0OjNweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXJpZ2h0OjNweCBzb2xpZCAjZTRkY2QzOyBib3JkZXItYm90dG9tOjNweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXRvcDozcHggc29saWQgI2U0ZGNkMzsgfSAucmliYm9uLWNvbnRhaW5lciB7IHdpZHRoIDoyMDBweDsgaGVpZ2h0IDoyMDBweDsgb3ZlcmZsb3cgOmhpZGRlbjsgcG9zaXRpb24gOmFic29sdXRlOyB0b3AgOjA7IGxlZnQgOjA7IH0gLnJpYmJvbi1jb250YWluZXIgLmNvcm5lci1yaWJib24geyB6LWluZGV4IDo1NTU7IG1hcmdpbiA6MDsgcGFkZGluZyA6MC41cmVtIDAgIWltcG9ydGFudDsgYm94LXNoYWRvdyA6MCAzcHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMSk7IGZvbnQtc2l6ZSA6MXJlbTsgbGluZS1oZWlnaHQgOjEycHg7IHRleHQtYWxpZ24gOmNlbnRlcjsgcG9zaXRpb24gOmFic29sdXRlOyB0b3AgOjA7IGxlZnQgOjA7IHRyYW5zZm9ybSA6dHJhbnNsYXRlWCgtMzUlKSB0cmFuc2xhdGVZKDAlKSByb3RhdGUoLTQ1ZGVnKTsgdHJhbnNmb3JtLW9yaWdpbiA6dG9wIHJpZ2h0OyBiYWNrZ3JvdW5kIDp2YXIoLS1jb3JuZXItcmliYm9uLWJnLWNvbG9yKTsgY29sb3IgOnZhcigtLWNvcm5lci1yaWJib24tdGV4dC1jb2xvcik7IH0gLnJpYmJvbi1jb250YWluZXIgLmNvcm5lci1yaWJib246YmVmb3JlLCAucmliYm9uLWNvbnRhaW5lciAuY29ybmVyLXJpYmJvbjphZnRlciB7IGNvbnRlbnQgOiIiOyBwb3NpdGlvbiA6YWJzb2x1dGU7IHRvcCA6MDsgbWFyZ2luIDowIC0xcHg7IHdpZHRoIDoxMDAlOyBoZWlnaHQgOjEwMCU7IGJhY2tncm91bmQgOnZhcigtLWNvcm5lci1yaWJib24tYmctY29sb3IpOyB9IC5yaWJib24tY29udGFpbmVyIC5jb3JuZXItcmliYm9uOmJlZm9yZSB7IGxlZnQ6MTAwJTsgfSAucmliYm9uLWNvbnRhaW5lciAuY29ybmVyLXJpYmJvbjphZnRlciB7IHJpZ2h0OjEwMCU7IH0gLmhlYWRpbmcgeyBtaW4taGVpZ2h0OjM1cHg7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICM4MDgwODA7IGJhY2tncm91bmQ6I2NjY2NjYzsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmc6MTBweCA1cHggNXB4IDVweDsgfSAuaGVhZGluZyB0YWJsZXsgd2lkdGg6MjI1cHg7IG1hcmdpbjowIGF1dG87IH0gI3NlYXJjaENvbnRhaW5lciAuaXRlbSB7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkIHJnYmEoMCwwLDAsMC4xKTsgYm9yZGVyLXRvcDoxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjQpOyBwYWRkaW5nOjEwcHggaW5oZXJpdDsgbWFyZ2luOjAgMCAwIDA7IGRpc3BsYXk6YmxvY2s7IGNsZWFyOmJvdGg7IG1pbi1oZWlnaHQ6ODBweDsgZm9udC1zaXplOjAuODc1cmVtIDsgfSAjc2VhcmNoQ29udGFpbmVyIC5pdGVtIGltZyB7ZmxvYXQ6bGVmdDsgd2lkdGg6OTBweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjRweDsgLW1vei1ib3JkZXItcmFkaXVzOjRweDsgYm9yZGVyLXJhZGl1czo0cHg7IGJvcmRlcjozcHggc29saWQgI2ZmZjsgbWFyZ2luOi4zZW0gMTBweDsgLXdlYmtpdC1ib3gtc2hhZG93OjAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuNCk7IC1tb3otYm94LXNoYWRvdzowIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjQpOyBib3gtc2hhZG93OjAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuNCk7IH0gI3NlYXJjaENvbnRhaW5lciAuaXRlbSBoMyB7IG1hcmdpbjowIDAgMCAwOyBwYWRkaW5nOjAgMCAwIDA7IGZvbnQtc2l6ZToxcmVtIDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBjb2xvcjojMTExOyBsaW5lLWhlaWdodDoxOHB4OyBtYXJnaW4tdG9wOjVweDsgfSAucHJpY2UsIC5kZXRhaWxzIHsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjZweDsgLW1vei1ib3JkZXItcmFkaXVzOjZweDsgYm9yZGVyLXJhZGl1czo2cHg7IC13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjQpOyAtbW96LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC40KTsgYm94LXNoYWRvdzppbnNldCAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjQpOyBmb250LXdlaWdodDpib2xkOyBwYWRkaW5nOjdweDsgZmxvYXQ6bGVmdDsgZGlzcGxheTpibG9jazsgfSAucHJpY2VfdXNlZF9sZWZ0LC5wcmljZV91c2VkX3JpZ2h0eyB0ZXh0LWFsaWduOmxlZnQ7IGZvbnQtc2l6ZToxLjc1cmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgYmFja2dyb3VuZC1jb2xvcjojRjJGMkYyOyBoZWlnaHQ6NjBweDsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmc6MDsgd2lkdGg6NTAlOyB9IC5zcGVjc191c2VkX2xlZnQgeyBwYWRkaW5nOjhweCAxMHB4OyBjb2xvcjojYWFhYWFhOyB9IC5zcGVjc191c2VkX3JvdzIgeyBiYWNrZ3JvdW5kLWNvbG9yOiNGMkYyRjI7IH0gLnNwZWNzX3VzZWRfYWZ0ZXJ7IGJhY2tncm91bmQtY29sb3I6I0YyRjJGMjsgcGFkZGluZy1ib3R0b206MTBweDsgYm9yZGVyLXRvcDoxcHggc29saWQgI2NjY2NjYzsgfSAudXNlZF9kZXRhaWxzX2J0bnsgZGlzcGxheTpibG9jazsgd2lkdGg6MjQwcHg7IGJvcmRlci1yYWRpdXM6M3B4OyB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7IGJhY2tncm91bmQ6IzAwMDsgbWFyZ2luOjAgYXV0bzsgcGFkZGluZzoxMHB4IDA7IH0gLnVzZWRfZGV0YWlsc19idG4gYXsgY29sb3I6I0ZGRjsgfSAucHJpY2VfdXNlZF9sZWZ0IHNwYW57IGNvbG9yOiNEM0QzRDM7IH0gLnVzZWRfc2VhcmNoX3JlYmF0ZXsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjEuMTg4cmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAucmViYXRlX3ByaWNleyBjb2xvcjpyZWQ7IH0gLnVzZWRfc2VhcmNoX3JlYmF0ZV90ZHsgcGFkZGluZzoxMHB4IDA7IHRleHQtYWxpZ246Y2VudGVyOyBiYWNrZ3JvdW5kOiNlNmU2ZTY7IH0gLnByaWNlIHsgYmFja2dyb3VuZC1jb2xvcjojY2RjZGNkOyBjb2xvcjojMTExOyBmb250LXNpemU6MC43NXJlbSA7IHBhZGRpbmctdG9wOjhweDsgd2lkdGg6MzYlOyBwYWRkaW5nLWJvdHRvbTo1cHg7IH0gcHJpY2Vfc2VhcmNoX3VzZWR7IGJhY2tncm91bmQ6I0YyRjJGMjsgaGVpZ2h0OjQwcHg7IHRleHQtYWxpZ246Y2VudGVyOyB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7IGZvbnQtc2l6ZToxLjU2M3JlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gLnVzZWRfb2xkX3ByaWNleyBmb250LXNpemU6MS4xMjVyZW0gOyBjb2xvcjojYWFhYWFhOyBsaW5lLWhlaWdodDoxMHB4OyB9IC5kZXRhaWxzIHsgYmFja2dyb3VuZDotd2Via2l0LWdyYWRpZW50KGxpbmVhcixsZWZ0IHRvcCxsZWZ0IGJvdHRvbSxjb2xvci1zdG9wKDAuMDUsIzAwMDAwMCksY29sb3Itc3RvcCgxLCMzMzMzMzMpKTsgYmFja2dyb3VuZDotbW96LWxpbmVhci1ncmFkaWVudCh0b3AsIzAwMDAwMDUlLCMzMzMzMzMxMDAlKTsgYmFja2dyb3VuZDotd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsIzAwMDAwMDUlLCMzMzMzMzMxMDAlKTsgYmFja2dyb3VuZDotby1saW5lYXItZ3JhZGllbnQodG9wLCMwMDAwMDA1JSwjMzMzMzMzMTAwJSk7IGJhY2tncm91bmQ6LW1zLWxpbmVhci1ncmFkaWVudCh0b3AsIzAwMDAwMDUlLCMzMzMzMzMxMDAlKTsgYmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCMwMDAwMDA1JSwjMzMzMzMzMTAwJSk7IGZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nIzAwMDAwMCcsZW5kQ29sb3JzdHI9JyMzMzMzMzMnLEdyYWRpZW50VHlwZT0wKTsgYmFja2dyb3VuZC1jb2xvcjojMzMzMzMzOyBtYXJnaW4tcmlnaHQ6MTBweDsgZm9udC1zaXplOjAuOTM4cmVtIDsgbWFyZ2luLWxlZnQ6NXB4OyBwYWRkaW5nOjhweCAyMHB4OyBtYXJnaW4tcmlnaHQ6MHB4OyB9IC52aWRlb3NfcGljdHVyZXNfYnV0dG9uc19jb250YWluZXIgeyBtYXJnaW4tYm90dG9tOjBweCFpbXBvcnRhbnQ7IH0gLmktY2FtZXJhOmJlZm9yZXsgY29udGVudDoiXGYwM2QiOyBmb250LWZhbWlseToiRm9udCBBd2Vzb21lIDUgUHJvIjsgcGFkZGluZy1yaWdodDo1cHg7IGZvbnQtd2VpZ2h0OjkwMDsgd2lkdGg6MTVweDsgfSAuaS1waG90bzpiZWZvcmUgeyBjb250ZW50OiJcZjAzMCI7IGZvbnQtZmFtaWx5OiJGb250IEF3ZXNvbWUgNSBQcm8iOyBwYWRkaW5nLXJpZ2h0OjVweDsgZm9udC13ZWlnaHQ6OTAwOyB3aWR0aDoxNXB4OyB9IC5mdWxsV2lkdGhCdXR0b257IHdpZHRoOjkwJTsgcGFkZGluZzp2YXIoLS1zKTsgZm9udC13ZWlnaHQ6bm9ybWFsOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IG1hcmdpbi1sZWZ0OjUlOyBtYXJnaW4tcmlnaHQ6NSU7IGJvcmRlci1yYWRpdXM6M3B4OyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAuZnVsbFdpZHRoQnV0dG9uIGEgeyBkaXNwbGF5OmlubGluZS1ibG9jazsgfSAuZmIuZnVsbFdpZHRoQnV0dG9ueyBwb3NpdGlvbjpyZWxhdGl2ZTsgYmFja2dyb3VuZC1jb2xvcjojM2E1ODk4OyBjb2xvcjojZmZmOyB9IC5mYi5mdWxsV2lkdGhCdXR0b24gYSB7IGNvbG9yOiNmZmY7IG1hcmdpbi1sZWZ0OjUwcHg7IH0gLmZiIHNwYW4uZmEtc3RhY2t7IGNvbG9yOiMzYTU4OTg7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MDsgfSAudGV4dF9zbGlkZSBhIHsgaGVpZ2h0OjE0cHghaW1wb3J0YW50OyB9ICN2ZHBfcHJpY2VfYmxvY2ssI3ZkcF9wcmljZV9ibG9ja191c2VkeyBib3JkZXItYm90dG9tOjFweCBzb2xpZCAjMDAwOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWxpZ2h0KTsgYm9yZGVyLWNvbG9yOiNiYmI7IH0gI3ZkcF9wcmljZV9ibG9ja3sgbWluLWhlaWdodDozMHB4OyB9IGRpdiNjb21wbF90YWJsZSBhIHsgY29sb3I6IzMzMzsgfSAuY2hldnJvbi1yaWdodDphZnRlciB7IGNvbnRlbnQ6IlxmMDU0IjsgZm9udC1mYW1pbHk6IkZvbnQgQXdlc29tZSA1IFBybyI7IGZvbnQtc3R5bGU6bm9ybWFsOyBmb250LXdlaWdodDo5MDA7IHRleHQtZGVjb3JhdGlvbjppbmhlcml0OyBwb3NpdGlvbjphYnNvbHV0ZTsgcmlnaHQ6MiU7IH0gZnVsbFdpZHRoQnV0dG9uOmJlZm9yZSB7IGZvbnQtZmFtaWx5OiJGb250IEF3ZXNvbWUgNSBQcm8iOyBmb250LXN0eWxlOm5vcm1hbDsgZm9udC13ZWlnaHQ6OTAwOyB0ZXh0LWRlY29yYXRpb246aW5oZXJpdDsgcGFkZGluZy1yaWdodDo1cHg7IHBvc2l0aW9uOmFic29sdXRlOyByaWdodDowOyBwYWRkaW5nLXRvcDoycHg7IH0gI3NvY2lhbF9tZWRpYV9pY29uc19kaXZ7IG1hcmdpbi10b3A6MTVweDsgfSAjc29jaWFsX21lZGlhX2ljb25zX2RpdiAqICsgKnsgbWFyZ2luLWxlZnQ6MXJlbTsgfSAjc29jaWFsX21lZGlhX2ljb25zX2RpdiAuZmFieyBmb250LXNpemU6MS41cmVtOyB9ICNzb2NpYWxfbWVkaWFfaWNvbnNfZGl2IGF7IGNvbG9yOiM4MDgwODA7IH0gLnNvY2lhbCB7IHRleHQtYWxpZ246Y2VudGVyOyB3aWR0aDoxOXB4OyBoZWlnaHQ6MTlweDsgZmxvYXQ6cmlnaHQ7IGJhY2tncm91bmQ6cmdiKDI1NSwyNTUsMjU1KTsgYm9yZGVyOjFweCBzb2xpZCByZ2IoMjA0LDIwNCwyMDQpOyBib3gtc2hhZG93OjAgMnB4IDRweCByZ2JhKDAsMCwwLDAuMTUpLCBpbnNldCAwIDAgNTBweCByZ2JhKDAsMCwwLDAuMSk7IGJvcmRlci1yYWRpdXM6MTAwcHg7IG1hcmdpbjowIDEwcHggMHB4IDA7IHBhZGRpbmc6OXB4OyB9IC5zb2NpYWwtc2hhcmUgeyB3aWR0aDoxOXB4OyBoZWlnaHQ6MTlweDsgYmFja2dyb3VuZDpyZ2IoMjU1LDI1NSwyNTUpOyBib3JkZXItcmFkaXVzOjEwMHB4OyBtYXJnaW46MCAxMHB4IDBweCAwOyB9ICNzb2NpYWxfbWVkaWFfaWNvbnNfZGl2IGEuc29jaWFsIC5mYWJ7IGZvbnQtc2l6ZToxLjE4OHJlbSA7IH0gLnNvY2lhbCBpeyBmb250LXNpemU6MS4yNXJlbSA7IH0gLmdvb2dsZS1wbHVzOmhvdmVye2JhY2tncm91bmQ6I0RENEIzOTtjb2xvcjojRkZGIWltcG9ydGFudDt9IC5mYWNlYm9vazpob3ZlcntiYWNrZ3JvdW5kOiMzYjU5OTg7Y29sb3I6I0ZGRiFpbXBvcnRhbnQ7fSAudHdpdHRlcjpob3ZlcntiYWNrZ3JvdW5kOiMwMGFjZWU7Y29sb3I6I0ZGRiFpbXBvcnRhbnQ7fSAucGludGVyZXN0OmhvdmVye2JhY2tncm91bmQ6I2M4MjMyYztjb2xvcjojRkZGIWltcG9ydGFudDt9IC5saW5rZWRpbjpob3ZlcntiYWNrZ3JvdW5kOiMwZTc2YTg7Y29sb3I6I0ZGRiFpbXBvcnRhbnQ7fSAuc2t5cGU6aG92ZXJ7YmFja2dyb3VuZDojMDBhZmYwO2NvbG9yOiNGRkYhaW1wb3J0YW50O30gLnlvdXR1YmU6aG92ZXJ7YmFja2dyb3VuZDojYzQzMDJiO2NvbG9yOiNGRkYhaW1wb3J0YW50O30gLnR1bWJscjpob3ZlcntiYWNrZ3JvdW5kOiMzNDUyNmY7Y29sb3I6I0ZGRiFpbXBvcnRhbnQ7fSAuZGV0YWlscyBhIHsgY29sb3I6I2ZmZjsgZGlzcGxheTpibG9jazsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLnBhZ2luYXRpb24ge2NsZWFyOmJvdGg7IHBhZGRpbmc6NXB4OyBwYWRkaW5nLWxlZnQ6MTAwcHg7fSAucGFnaW5hdGlvbiBhLCAucGFnaW5hdGlvbiBhLnNlbGVjdGVkIHsgZGlzcGxheTpibG9jazsgcGFkZGluZzo1cHggN3B4OyBwYWRkaW5nLXRvcDo4cHg7IGZvbnQtc2l6ZTowLjkzOHJlbSA7IGNvbG9yOiNmZmY7IGZvbnQtd2VpZ2h0OmJvbGQ7IHRleHQtYWxpZ246Y2VudGVyOyBmbG9hdDpsZWZ0OyB3aWR0aDoxM3B4OyBtYXJnaW46NHB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NnB4OyAtbW96LWJvcmRlci1yYWRpdXM6NnB4OyBib3JkZXItcmFkaXVzOjZweDsgfSAucGFnaW5hdGlvbiBhIHtiYWNrZ3JvdW5kOiM2NjYgO30gLnBhZ2luYXRpb24gYS5zZWxlY3RlZCB7YmFja2dyb3VuZDojMjIyIDt9IC5wYWdlbm81e3dpZHRoOjEwMCU7bWFyZ2luOjMwcHggMCAyMHB4IDBweDsgcGFkZGluZzowOyBmbG9hdDpsZWZ0fSAucGFnZV9uYW1lMTggYXsgY29sb3I6IzMzMzsgfSAucGFnZW5vMntoZWlnaHQ6MjRweDsgfSAucGFnZW5vMiB1bHsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbjowOyBwYWRkaW5nOjA7IHRleHQtdHJhbnNmb3JtOm5vbmU7IH0gLnBhZ2VubzIgdWwgbGl7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyBtYXJnaW46MDsgZGlzcGxheTppbmxpbmU7fSAucGFnZW5vMiB1bCBsaSBheyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiMzMjMyMzI7IHRleHQtZGVjb3JhdGlvbjpub25lOyBwYWRkaW5nOjAgN3B4OyBtYXJnaW4tcmlnaHQ6MnB4OyBmb250LXdlaWdodDpib2xkOyBsaW5lLWhlaWdodDoyNHB4OyB0ZXh0LXRyYW5zZm9ybTpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC10cmFuc2Zvcm06bm9uZTsgYmFja2dyb3VuZDojYjNiNGI1OyBmbG9hdDpsZWZ0OyAtbW96LWJvcmRlci1yYWRpdXM6NHB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NHB4OyBib3JkZXItcmFkaXVzOjRweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6NHB4O30gLnBhZ2VubzIgdWwgbGkgYTpob3ZlcnsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IG1hcmdpbjowOyBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcGFkZGluZzowIDdweDsgbWFyZ2luLXJpZ2h0OjJweDsgZm9udC13ZWlnaHQ6Ym9sZDsgbGluZS1oZWlnaHQ6MjRweDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IHRleHQtdHJhbnNmb3JtOm5vbmU7IGJhY2tncm91bmQ6IzI4MjgyODsgZmxvYXQ6bGVmdDsgLW1vei1ib3JkZXItcmFkaXVzOjRweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjRweDsgYm9yZGVyLXJhZGl1czo0cHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjRweDt9IC5wYWdlbm8yIGxpIGEuYWN0aXZleyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjA7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNGRkZGRkY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBwYWRkaW5nOjAgN3B4OyBtYXJnaW4tcmlnaHQ6MnB4OyBmb250LXdlaWdodDpib2xkOyBsaW5lLWhlaWdodDoyNHB4OyB0ZXh0LXRyYW5zZm9ybTpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC10cmFuc2Zvcm06bm9uZTsgYmFja2dyb3VuZDojMjgyODI4OyBmbG9hdDpsZWZ0OyAtbW96LWJvcmRlci1yYWRpdXM6NHB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NHB4OyBib3JkZXItcmFkaXVzOjRweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6NHB4O30gI3BhZ2VEaXYgYSB7IGNvbG9yOiNmZmY7IH0gI3NlYXJjaF91c2VkX2ZpbHRlci1ib3gsLmZpbHRlci1hZGp7IGJhY2tncm91bmQ6IzgwODA4MDsgY29sb3I6d2hpdGU7IHRleHQtYWxpZ246Y2VudGVyOyB9ICNzZWFyY2hfdXNlZF9maWx0ZXItYm94eyBwYWRkaW5nOjE1cHggNXB4OyB9IC5maWx0ZXItYWRqeyBwYWRkaW5nOjVweCA1cHg7IH0gI3NlYXJjaF91c2VkX2ZpbHRlci1ib3ggLmZhLCAuZmlsdGVyLWFkaiAuZmF7IGZvbnQtc2l6ZTowLjkzOHJlbSA7IH0gLnVpLWFjY29yZGlvbi1oZWFkZXItaWNvbnsgbWFyZ2luLXRvcDotMTFweCFpbXBvcnRhbnQ7IH0gLnVpLWFjY29yZGlvbi1jb250ZW50eyBib3JkZXItcmFkaXVzOjAhaW1wb3J0YW50OyBib3JkZXI6bm9uZSFpbXBvcnRhbnQ7IGJveC1zaGFkb3c6bm9uZSFpbXBvcnRhbnQ7IH0gI2NpdHlUaXRsZXsgY29sb3I6IzY2NjY2NjsgZm9udC1zaXplOjAuOTM4cmVtIDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBkaXNwbGF5OmJsb2NrOyB9IC50aXRsZUluZm97IGZvbnQtc2l6ZToxLjEyNXJlbSAhaW1wb3J0YW50OyBmb250LXdlaWdodDpub3JtYWwhaW1wb3J0YW50OyBkaXNwbGF5OmJsb2NrIWltcG9ydGFudDsgfSAudGl0bGVDYXJ7IGZvbnQtc2l6ZToxLjM3NXJlbSAhaW1wb3J0YW50OyBmb250LXdlaWdodDpub3JtYWwhaW1wb3J0YW50OyBmb250LXdlaWdodDpib2xkIWltcG9ydGFudDsgfSAuc2VhcmNocmVzdWx0IGgyLCAjU2VhcmNoVGl0bGUgeyBjb2xvcjojMzMzOyBmb250LXNpemU6MS41NjNyZW0gOyBmb250LXdlaWdodDpub3JtYWw7IG1hcmdpbjowIDAgMCAwOyBwYWRkaW5nOjI1cHggMCAxMHB4IDE1cHg7IGNsZWFyOmJvdGg7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgfSAubmV3LWl0ZW0geyBib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDAsMCwwLDAuMSk7IHBhZGRpbmc6MCA7IG1hcmdpbjowIDAgMCAwOyBkaXNwbGF5OmJsb2NrOyBjbGVhcjpib3RoOyBmb250LXNpemU6MC44NzVyZW0gOyBmbG9hdDpsZWZ0OyB3aWR0aDoxMDAlOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7IH0gLm5ldy1pdGVtOmxhc3Qtb2YtdHlwZXsgYm9yZGVyLWJvdHRvbTpub25lOyB9IC5uZXdfcHJpY2VfYmxvY2t7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgZmxvYXQ6bGVmdDsgY2xlYXI6Ym90aDsgbWFyZ2luLXRvcDotNXB4OyB9IC5uZXdfbWFrZV9uYW1leyBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MC44NzVyZW0gOyBmb250LXdlaWdodDpub3JtYWw7IG1hcmdpbi1ib3R0b206LTNweDsgfSAubmV3LWl0ZW0gLnRodW1iIHsgZmxvYXQ6cmlnaHQ7IHdpZHRoOjQwJTsgbWFyZ2luOi4zZW0gMHB4OyB0ZXh0LWFsaWduOnJpZ2h0OyB9IC5uZXdjYXJfYmxvY2tfZGVzYyBheyBjb2xvcjojMzMzMzMzOyB9IC5uZXdfbW9kZWxfbmFtZXsgZm9udC1zaXplOjEuMTI1cmVtIDsgZmxvYXQ6bGVmdDsgbWFyZ2luLXJpZ2h0OjVweDsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAubmV3X3llYXJ7IGZsb2F0OmxlZnQ7IH0gLm5ldy1pdGVtIC50aHVtYiBpbWd7IG1heC13aWR0aDoxMDAlOyBib3JkZXI6MDsgfSAubmV3Y2FyX2Jsb2NrX2Rlc2MgeyBtYXJnaW4tdG9wOjEwcHg7IHBvc2l0aW9uOnJlbGF0aXZlOyBwYWRkaW5nOjA7IGxpbmUtaGVpZ2h0OjIwcHg7IHdpZHRoOjUwJTsgcGFkZGluZy1sZWZ0OjI1cHg7IGZsb2F0OmxlZnQ7IGNvbG9yOiMzMzM7IH0gbmV3Y2FyX2Jsb2NrIGgzeyB9IC5uZXctaXRlbSBoMyB7IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MTBweDsgZm9udC1zaXplOjEuMTI1cmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgd2lkdGg6OTUlOyB9IC5uZXctaXRlbSAuYXJyb3cgeyBmbG9hdDpsZWZ0OyBiYWNrZ3JvdW5kLWNvbG9yOnJnYigyMjgsMjIwLDIxMSk7IGJvcmRlci1yYWRpdXM6MTRweDsgd2lkdGg6MTVweDsgbWFyZ2luOjMwcHggNXB4IDEwcHggMTBweDsgfSAubmV3LWRldGFpbHMgaDEsIC5uZXctZGV0YWlscyBoMiAsLnVzZWRfc2VhcmNoX2l0ZW0gaDIsIC51c2VkLWRldGFpbHMgaDEsIC5uZXctZGV0YWlscyBzcGFuLmgyLWFsdCB7IGNvbG9yOiMxMTE7IGNsZWFyOmJvdGg7IHBvc2l0aW9uOnJlbGF0aXZlOyBwYWRkaW5nLWxlZnQ6MjBweDsgbGluZS1oZWlnaHQ6MjFweDsgbWFyZ2luLWxlZnQ6MTVweDsgbWFyZ2luLXJpZ2h0OjE1cHg7IG1hcmdpbi1ib3R0b206MTBweDsgfSAubmV3LWRldGFpbHMgLnRib3JkZXIgeyBwYWRkaW5nLXRvcDoxMHB4OyBib3JkZXItdG9wOjFweCBzb2xpZCAjZTdlN2U3OyB9IC5uZXctZGV0YWlscyBoMSAubWFrZU1vZGVsWWVhciwgLnVzZWRfc2VhcmNoX2l0ZW0gaDIgLm1ha2VNb2RlbFllYXIsIC51c2VkLWRldGFpbHMgaDEgLm1ha2VNb2RlbFllYXJ7IGZvbnQtc2l6ZToxLjU2M3JlbSA7IH0gLm5ldy1kZXRhaWxzIGgxIC52ZXJzaW9uRnVsbCwgLnVzZWRfc2VhcmNoX2l0ZW0gaDIgLnZlcnNpb25GdWxsLCAudXNlZC1kZXRhaWxzIGgxIC52ZXJzaW9uRnVsbHsgZm9udC13ZWlnaHQ6bm9ybWFsOyBmb250LXNpemU6MXJlbSA7IG92ZXJmbG93LXdyYXA6YW55d2hlcmU7IH0gLm5ldy1kZXRhaWxzIGgxIC5kZWFsZXJMY2F0aW9uQ2FyVGl0bGUsIC51c2VkX3NlYXJjaF9pdGVtIGgyIC5kZWFsZXJMY2F0aW9uQ2FyVGl0bGUsIC51c2VkLWRldGFpbHMgaDEgLmRlYWxlckxjYXRpb25DYXJUaXRsZSB7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgY29sb3I6Izc1NzU3NTsgZm9udC1zaXplOjAuOTM4cmVtIDsgbGV0dGVyLXNwYWNpbmc6LTFweDsgfSAuZnVsbFdpZHRoQnV0dG9uIGl7IHBhZGRpbmctcmlnaHQ6NXB4OyBtaW4td2lkdGg6MThweDsgfSAudXNlZC1kZXRhaWxzIGgxIHNwYW4uZmEtY2hldnJvbi1yaWdodHsgbWluLXdpZHRoOjEuNXJlbTsgbWluLWhlaWdodDoxLjVyZW07IGZvbnQtc2l6ZToxcmVtOyBwYWRkaW5nOjA7IGJvcmRlci1yYWRpdXM6MXJlbTsgbWFyZ2luOjAgNXB4IDAgMDsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IH0gLm5ldy1kZXRhaWxzICNjYXJUaXRsZSAuZmEtY2hldnJvbi1yaWdodCwgLnVzZWRfc2VhcmNoX2l0ZW0gI2NhclRpdGxlIC5mYS1jaGV2cm9uLXJpZ2h0LCAudXNlZC1kZXRhaWxzIGgxIC5mYS1jaGV2cm9uLXJpZ2h0eyBib3JkZXItcmFkaXVzOjEzcHg7IHdpZHRoOjE0cHg7IGhlaWdodDoxN3B4OyBwYWRkaW5nLXRvcDozcHg7IHBhZGRpbmctbGVmdDo2cHg7IG1hcmdpbi1sZWZ0Oi0yOHB4OyBmbG9hdDpsZWZ0OyBtYXJnaW4tdG9wOjE0cHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGJveC1zaXppbmc6Y29udGVudC1ib3g7IGJvcmRlcjoxcHggc29saWQgIzAwMDAwMDsgYmFja2dyb3VuZC1jb2xvcjojZTRkY2QzOyBjb2xvcjojMDAwMDAwOyB9ICNTZWFyY2hUaXRsZSAuZmEtY2hldnJvbi1yaWdodHsgYm9yZGVyLXJhZGl1czozMHB4OyB3aWR0aDoyM3B4ICFpbXBvcnRhbnQ7IGhlaWdodDoyOXB4ICFpbXBvcnRhbnQ7IHBhZGRpbmctdG9wOjNweCAhaW1wb3J0YW50OyBwYWRkaW5nLWxlZnQ6MTFweCAhaW1wb3J0YW50OyBmbG9hdDpsZWZ0OyBtYXJnaW4tdG9wOjhweDsgZm9udC1zaXplOjEuNXJlbSAhaW1wb3J0YW50OyBib3JkZXI6MXB4IHNvbGlkICMwMDAwMDA7IGJhY2tncm91bmQtY29sb3I6I2U0ZGNkMzsgY29sb3I6IzAwMDAwMCA7IG1hcmdpbi1yaWdodDoxMHB4OyB9IC5mb290ZXJfZGlzY2xhbWVyIGF7IGNvbG9yOiMwMDAwMDAgfSAubmV3Y2FyX2Jsb2NrX2Rlc2MgLmZhLWNoZXZyb24tcmlnaHR7IGJvcmRlci1yYWRpdXM6MTBweDsgd2lkdGg6MTJweDsgaGVpZ2h0OjE0cHg7IHBhZGRpbmctdG9wOjJweDsgcGFkZGluZy1sZWZ0OjRweDsgbWFyZ2luLWxlZnQ6LTI4cHg7IGZsb2F0OmxlZnQ7IG1hcmdpbi10b3A6MTRweDsgZm9udC1zaXplOjAuODEzcmVtIDsgYm9yZGVyOjFweCBzb2xpZCAjMDAwMDAwOyBiYWNrZ3JvdW5kLWNvbG9yOiNlNGRjZDM7IGNvbG9yOiMwMDAwMDAgOyB9IC5uZXctZGV0YWlscyAjbWFpbkNvbXBhcmVWaWV3IGgyLCAubmV3LWRldGFpbHMgI21haW5Db21wYXJlVmlldyBzcGFuLmgyLWFsdCwgLm5ldy1kZXRhaWxzIC5icm9jaHVyZS1pbWctYnRuIHNwYW4uaDItYWx0LCBoMi5icm9jaHVyZS1pbWctdGl0bGUgeyBjb2xvcjojZmZmOyBmb250LXNpemU6MC45MzhyZW0gOyBmb250LXdlaWdodDpib2xkOyBtYXJnaW46MCAwIDAgMDsgcGFkZGluZzo3cHggMCA3cHggMTBweDsgY2xlYXI6Ym90aDsgfSAubmV3LWRldGFpbHMgI21haW5Db21wYXJlVmlldyBzcGFuLmgyLWFsdCwgLm5ldy1kZXRhaWxzIC5icm9jaHVyZS1pbWctYnRuIHNwYW4uaDItYWx0IHsgZGlzcGxheTpibG9jazsgfSAubmV3LWRldGFpbHMgPiBwIHtwYWRkaW5nOjdweCAxMHB4O30gLm90aGVyTGlua3MgeyBtYXJnaW46MzBweCAwIDE1cHg7IHBhZGRpbmc6MCAxNXB4OyB9IC5vdGhlckxpbmtzIGEgeyBkaXNwbGF5Omxpc3QtaXRlbTsgZm9udC1zaXplOjEuMWVtOyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyBsaXN0LXN0eWxlLXBvc2l0aW9uOmluc2lkZTsgfSAub3RoZXJMaW5rcyBhICsgYSB7IG1hcmdpbi10b3A6MTBweDsgfSAucmFpdGluZy1kZXRhaWxzIGgxeyBjb2xvcjojMTExOyBmb250LXNpemU6MS4zZW07IHRleHQtYWxpZ246Y2VudGVyOyBtYXJnaW4tYm90dG9tOjEwcHg7IH0gLnJhaXRpbmctZGV0YWlscyAuYm94Ml90ZXh0eyB0ZXh0LWFsaWduOmp1c3RpZnk7IHBhZGRpbmc6MCA1cHg7IH0gLnBvc2l0aXZlUmF0aW5nVHh0e3BhZGRpbmc6MTBweDt9IC5wb3NpdGl2ZVJhdGluZ1R4dCAuYnRuLWRlZmF1bHR7dGV4dC10cmFuc2Zvcm06bm9uZTt9IC5wb3NpdGl2ZVJhdGluZ1R4dCBwIHtmb250LXNpemU6MS4wNjNyZW0gOyB0ZXh0LWFsaWduOmp1c3RpZnk7fSAucGFnZV9uYW1lMnt0ZXh0LWFsaWduOmNlbnRlcjt9IC5vdXJ0ZWFtIGEgeyBjb2xvcjojMzMzMzMzOyB9ICNzZWFyY2hfdXNlZF9maWx0ZXJ7IGJvcmRlcjowOyBib3JkZXItcmFkaXVzOnVuc2V0OyBmb250LXdlaWdodDpib2xkOyB9ICN1c2VkT3B0aW9ucyAubGlzdGl0ZW06YWZ0ZXJ7IGNvbnRlbnQ6IlxmMDBjIjsgZm9udC1mYW1pbHk6IkZvbnQgQXdlc29tZSA1IFBybyI7IGZvbnQtd2VpZ2h0OjkwMDsgcGFkZGluZy1yaWdodDo1cHg7IHdpZHRoOjE1cHg7IGZsb2F0OnJpZ2h0OyB9IC5saXN0aXRlbSB7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkIHJnYmEoMCwwLDAsMC4xKTsgcGFkZGluZzo1cHggMDsgZm9udC1zaXplOjAuOTM4cmVtIDsgfSAubGlzdGl0ZW0gaW1nIHt3aWR0aDoxMDAlICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDt9IC5saXN0aXRlbSBzcGFuIHtkaXNwbGF5OmlubGluZS1ibG9jazt9IC5saXN0aXRlbSAubGlzdGRlc2Mge2Zsb2F0OmxlZnQ7IHdpZHRoOjUwJTsgbWFyZ2luLWxlZnQ6NXB4O30gLmxpc3RpdGVtIC5saXN0dmFsIHtmbG9hdDpyaWdodDt3aWR0aDo0NSU7IHRleHQtYWxpZ246cmlnaHQ7bWFyZ2luLXJpZ2h0OjVweDt9IC5iaWcge3dpZHRoOjk1JTsgY2xlYXI6Ym90aDsgbWFyZ2luOjEwcHggYXV0bzsgZGlzcGxheTpibG9jazsgaGVpZ2h0OjQwcHg7fSAucHJpY2V0ZXh0IHtjb2xvcjojMTExOyBmb250LXNpemU6MXJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IG1hcmdpbjoxMHB4IDAgMCAwOyBkaXNwbGF5OmJsb2NrOyBmbG9hdDpsZWZ0fSAucHJpbnQsIC5saWtlIHtmbG9hdDpyaWdodDsgd2lkdGg6NjBweDtmb250LXNpemU6MC43NXJlbSA7IHRleHQtYWxpZ246cmlnaHQ7IG1hcmdpbi10b3A6MTBweDt9IC5vbGQtZGV0YWlscyB0YWJsZXsgYm9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlOyB9ICNzcGVjVGl0bGV7IGJvcmRlci10b3A6MXB4IHNvbGlkICNhYWFhYWE7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNhYWFhYWE7IHBhZGRpbmctdG9wOjEwcHg7IHBhZGRpbmctYm90dG9tOjEwcHg7IHBhZGRpbmctbGVmdDoxMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiNlZWU7IG1hcmdpbi10b3A6MjVweDsgfSAub2xkLWRldGFpbHMgdGFibGUgdHIgdGR7IHBhZGRpbmc6NXB4IDBweCA1cHggMTBweDsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2U2ZTZlNjsgfSAub2xkLWRldGFpbHMgdWx7IGxpc3Qtc3R5bGU6bm9uZTsgfSAub2xkLWRldGFpbHMgdGQgaS5mYS1jaGV2cm9uLXJpZ2h0eyBib3JkZXItcmFkaXVzOjEzcHg7IHdpZHRoOjEycHg7IGhlaWdodDoxNHB4OyBwYWRkaW5nLXRvcDozcHg7IHBhZGRpbmctbGVmdDo1cHg7IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjc1cmVtIDsgbWFyZ2luOjBweDsgYm9yZGVyOjFweCBzb2xpZCAjMDAwMDAwOyBiYWNrZ3JvdW5kLWNvbG9yOiNlNGRjZDM7IGNvbG9yOiMwMDAwMDAgOyB9IC5vbGQtZGV0YWlscyB0cjpudGgtY2hpbGQoZXZlbikgeyBiYWNrZ3JvdW5kOiNlZWU7IH0gLm90aGVyQkd7IGJhY2tncm91bmQ6I2ZmZmZmZiAhaW1wb3J0YW50OyB9IC5iZ05vbmV7IGJhY2tncm91bmQ6bm9uZSAhaW1wb3J0YW50OyB9IC50ZXh0Q29sb3J7IGNvbG9yOiMwMDAwMDAgIWltcG9ydGFudDsgfSAudGV4dENvbG9yVXNlZFNSUE1vYmlsZXsgY29sb3I6I2ZmZmZmZiAhaW1wb3J0YW50OyB9IC50ZXh0X3NsaWRlIGEgPiBieyBmbG9hdDpsZWZ0IWltcG9ydGFudDsgb3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnQ7IHBvc2l0aW9uOnJlbGF0aXZlIWltcG9ydGFudDsgbWFyZ2luOjBweCFpbXBvcnRhbnQ7IHdpZHRoOjEwMCUhaW1wb3J0YW50OyB0b3A6LTNweCFpbXBvcnRhbnQ7IHdpZHRoOjIwMHB4IWltcG9ydGFudDsgbGVmdDoycHg7IH0gLmdyYXliZyB7IG1hcmdpbjoxMHB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NHB4OyAtbW96LWJvcmRlci1yYWRpdXM6NHB4OyBib3JkZXItcmFkaXVzOjRweDsgY2xlYXI6Ym90aDsgZGlzcGxheTpibG9jazsgYmFja2dyb3VuZDojY2ZjZmNmIHVybCgvaW1hZ2VzL2dyYXliZy5wbmcpIHJlcGVhdC14IDAgMDsgcGFkZGluZzowIDEwcHg7IGhlaWdodDo1MHB4OyB9IC50ZXh0MSwgdGV4dDIsIHBpYyB7bWFyZ2luOjAgMCAwIDA7IGhlaWdodDo1MHB4OyBkaXNwbGF5OmJsb2NrOyBwYWRkaW5nOjAgMTBweCAwIDEwcHg7IGxpbmUtaGVpZ2h0OjUwcHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7fSAudGV4dDEge2JvcmRlci1yaWdodDoxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjYpO30gLnBpYyB7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkIHJnYmEoMCwwLDAsMC4zKTsgYm9yZGVyLXJpZ2h0OjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuNik7fSAudGV4dDIge2JvcmRlci1sZWZ0OjFweCBzb2xpZCByZ2JhKDAsMCwwLDAuMyk7fSAucHJvbW9pbWFnZSB7ZmxvYXQ6bGVmdDsgd2lkdGg6MTEwcHg7IG1hcmdpbi10b3A6N3B4O30gLnByb21vZGV0YWlsIHtmbG9hdDpsZWZ0OyB3aWR0aDoxNzBweDt9IC5wcm9tb2RldGFpbCBoMiB7Zm9udC1zaXplOjEuNXJlbSA7IG1hcmdpbjotMTBweCAwIDAgMDsgcGFkZGluZzowIDAgMCAwfSAucHJvbW8tY2FyZCB7IG1hcmdpbjowIDE1cHggMTBweDsgbWFyZ2luLWJvdHRvbTo4cHg7IGRpc3BsYXk6YmxvY2s7IGJvcmRlcjoxcHggc29saWQgI2M4YzhjODsgcGFkZGluZzozcHg7IGJvcmRlci1yYWRpdXM6NXB4OyBib3gtc2hhZG93OjBweCAwcHggMTBweCAycHggI2M4YzhjODsgfSAucHJvbW8tY2FyZCAucHJvbW8taW1hZ2UgeyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAucHJvbW8tY2FyZCAucHJvbW8tdGl0bGUgeyBmb250LXNpemU6MS4zMTNyZW0gOyBkaXNwbGF5OmJsb2NrOyBmb250LXdlaWdodDo2MDA7IGNvbG9yOiMzMzM7IG1hcmdpbi10b3A6OHB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAucHJvbW8taW1hZ2UgaW1nIHsgd2lkdGg6MTAwJTsgfSAucHJvbW8tY2FyZCAucHJvbW8tZGV0YWlscy13cmFwcGVyIHsgfSAucHJvbW8tY2FwdGlvbiB7IGNvbG9yOiMzMzMzMzM7IH0gLnByb21vLWNhcHRpb246bm90KDpsYXN0LWNoaWxkKSB7IG1hcmdpbi1ib3R0b206MTVweDsgfSAucHJvbW8tY2FwdGlvbiAucHJvbW8tdGl0bGUgeyB0ZXh0LWFsaWduOmxlZnQ7IH0gLnByb21vLW9mZmVyIC5wcm9tby1ib2R5IC5wcm9tby10aXRsZSB7IG1pbi1oZWlnaHQ6MDsgfSAucHJvbW8tc3ViY2FwdGlvbiB7IG1hcmdpbi10b3A6NXB4OyBmb250LXNpemU6MC44NzVyZW07IH0gLnByb21vLWRldGFpbHMtYnRuIHsgYmFja2dyb3VuZDotd2Via2l0LWdyYWRpZW50KGxpbmVhcixsZWZ0IHRvcCxsZWZ0IGJvdHRvbSxjb2xvci1zdG9wKDAuMDUsIzAwMDAwMCksY29sb3Itc3RvcCgxLCMzMzMzMzMpKTsgYmFja2dyb3VuZDotbW96LWxpbmVhci1ncmFkaWVudCh0b3AsIzAwMDAwMDUlLCMzMzMzMzMxMDAlKTsgYmFja2dyb3VuZDotd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsIzAwMDAwMDUlLCMzMzMzMzMxMDAlKTsgYmFja2dyb3VuZDotby1saW5lYXItZ3JhZGllbnQodG9wLCMwMDAwMDA1JSwjMzMzMzMzMTAwJSk7IGJhY2tncm91bmQ6LW1zLWxpbmVhci1ncmFkaWVudCh0b3AsIzAwMDAwMDUlLCMzMzMzMzMxMDAlKTsgYmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCMwMDAwMDA1JSwjMzMzMzMzMTAwJSk7IGZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nIzAwMDAwMCcsZW5kQ29sb3JzdHI9JyMzMzMzMzMnLEdyYWRpZW50VHlwZT0wKTsgYmFja2dyb3VuZC1jb2xvcjojMzMzMzMzOyBmb250LXNpemU6MC45MzhyZW0gOyB0ZXh0LWFsaWduOmNlbnRlcjsgYm9yZGVyLXJhZGl1czo2cHg7IHBhZGRpbmc6N3B4OyB9IC5wcm9tby1jYXJkIC5wcm9tby1kZXRhaWxzLWJ0biBhIHsgY29sb3I6d2hpdGU7IHRleHQtYWxpZ246Y2VudGVyOyB9IC5zZXJ2aWNlLXNlY3Rpb24ge2NsZWFyOmJvdGg7IG1hcmdpbjoxMHB4OyBkaXNwbGF5OmJsb2NrOyBtaW4taGVpZ2h0OjgwcHg7fSAuc2VydmljZS1zZWN0aW9uIGltZyB7IHdpZHRoOjEwMCU7IG1hcmdpbi1ib3R0b206N3B4OyB9IC5zZXJ2aWNlLXNlY3Rpb24gLmRldGFpbHMgeyBiYWNrZ3JvdW5kOnJnYig2OCw2OCw2OCk7IHdpZHRoOjE2NXB4OyBmbG9hdDpub25lOyBmb250LXNpemU6MC43NXJlbSA7IG1hcmdpbi10b3A6NXB4OyBtYXJnaW4tbGVmdDowcHg7IH0gLnNlcnZpY2VfZGVzY3sgfSAuc2VydmljZV9tYWluX2Rlc2MgeyBtYXJnaW46MTBweDsgfSAuc2VydmljZV9tYWluX2Rlc2MgYXsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgfSAuc3RlcHMge30gLnN0ZXBzIHVsIHt9IC5zdGVwcyB1bCBsaXsgbGlzdC1zdHlsZTpub25lOyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgZm9udC1zaXplOjAuOTM4cmVtIDsgbWFyZ2luOjAgMTBweCAwIDEwcHg7IGRpc3BsYXk6YmxvY2s7IHdpZHRoOjcwcHg7IG1hcmdpbi1ib3R0b206MTBweDsgY3Vyc29yOmRlZmF1bHR9IC5zdGVwcyB1bCBsaSAuYWN0aXZlLCAuc3RlcHMgdWwgbGkgLmluYWN0aXZlIHsgLXdlYmtpdC1ib3gtc2hhZG93OjAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMyk7IC1tb3otYm94LXNoYWRvdzowIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjMpOyBib3gtc2hhZG93OjAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMyk7IC13ZWJraXQtYm9yZGVyLXJhZGl1czoyNXB4OyAtbW96LWJvcmRlci1yYWRpdXM6MjVweDsgYm9yZGVyLXJhZGl1czoyNXB4OyB3aWR0aDoyNXB4OyBoZWlnaHQ6MjVweDsgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjEuNXJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IHRleHQtYWxpZ246Y2VudGVyOyBmbG9hdDpyaWdodDsgbWFyZ2luLXRvcDotMnB4OyBwYWRkaW5nLXJpZ2h0OjFweDsgbGluZS1oZWlnaHQ6MjVweDsgfSAuc3RlcHMgdWwgbGkgLmFjdGl2ZSB7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvd2hpdGUucG5nKSByZXBlYXQteDsgY29sb3I6IzAwMDAwMDt9IC5zdGVwcyB1bCBsaSAuaW5hY3RpdmUge2JhY2tncm91bmQ6dXJsKC9pbWFnZXMvYmxhY2sucG5nKSByZXBlYXQteDsgY29sb3I6I2ZmZjsgfSAuZm9ybSB7bWFyZ2luOjEwcHg7fSAuZm9ybXNfYm94MjIgeyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IHdpZHRoOjEwMCU7IGhlaWdodDphdXRvOyBmbG9hdDpsZWZ0OyBtYXJnaW46MCAwIDEwcHggMDsgfSAudm9pIHsgZmxvYXQ6bGVmdDsgbWFyZ2luLXRvcDo4cHg7IH0gI2NyZWRpdF92aV9hZHZhbmNlZCBsYWJlbCBpbnB1dCB7IG1hcmdpbi10b3A6MTBweDsgfSBzcGFuLmFzdGsgeyBjb2xvcjojRkYwMTAxOyBmb250LXNpemU6MC42ODhyZW07IGZsb2F0OmxlZnQ7IHBhZGRpbmctcmlnaHQ6M3B4OyB9IC5jcmVkaXQtY29uc2VudF9fY29udGFpbmVyIHsgZGlzcGxheTpmbGV4OyBwYWRkaW5nOjAgMC43cmVtOyBmb250LXNpemU6MC44cmVtOyBjb2xvcjojMjQyNDI0OyB9IC5jcmVkaXQtY29uc2VudF9fY29udGFpbmVyIGRpdjpub3QoOmZpcnN0LW9mLXR5cGUpIHsgbWFyZ2luLWxlZnQ6MC43cmVtOyB9IC5maWVsZCB7IHdpZHRoOjEwMCU7IGJvcmRlci1yYWRpdXM6NHB4OyBib3JkZXI6MXB4IHNvbGlkICNjY2M7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfSAubGFiZWwge3BhZGRpbmc6MTBweCAwIDAgMDt9IC5kZWFsZXJhZGRyZXNzLCAuZGVhbGVycGhvbmUsIC5kZWFsZXJlbWFpbCB7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYmFja2dyb3VuZC1zaXplOjMwcHg7IGJhY2tncm91bmQtcG9zaXRpb246NXB4IDEzcHg7IGJhY2tncm91bmQtY29sb3I6I2RiZGJkYjsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjRweDsgLW1vei1ib3JkZXItcmFkaXVzOjRweDsgYm9yZGVyLXJhZGl1czo0cHg7IG1hcmdpbjoxMHB4OyBkaXNwbGF5OmJsb2NrOyBjbGVhcjpib3RoOyBwYWRkaW5nOjE1cHggMTBweCAxNXB4IDQwcHg7IGZvbnQtd2VpZ2h0Om5vcm1hbCB9IC5kZWFsZXJhZGRyZXNzLCAuZGVhbGVycGhvbmUsIC5kZWFsZXJlbWFpbCB7IGJhY2tncm91bmQtY29sb3I6d2hpdGU7IH0gLmRlYWxlcmFkZHJlc3M6YmVmb3JlIHsgY29udGVudDoiXGYwMTUiOyB9IC5kZWFsZXJwaG9uZTpiZWZvcmUgeyBjb250ZW50OiJcZjA5NSI7IG1hcmdpbi10b3A6OHB4OyB9IC5kZWFsZXJlbWFpbDpiZWZvcmUgeyBjb250ZW50OiJcZjBlMCI7IH0gLmRlYWxlcmFkZHJlc3M6YmVmb3JlLCAuZGVhbGVycGhvbmU6YmVmb3JlLCAuZGVhbGVyZW1haWw6YmVmb3JleyBmb250LWZhbWlseToiRm9udCBBd2Vzb21lIDUgUHJvIjsgZm9udC1zdHlsZTpub3JtYWw7IGZvbnQtd2VpZ2h0OjkwMDsgdGV4dC1kZWNvcmF0aW9uOmluaGVyaXQ7IGNvbG9yOiMzMzM7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IHBvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjIxcHg7IH0gLmRlYWxlcnBob25lICNhY2NvcmRpb24gLnVpLWFjY29yZGlvbi1oZWFkZXItaWNvbiwgLm9wZW5faG91cnNfY29udGFpbmVyIC51aS1hY2NvcmRpb24taGVhZGVyLWljb24geyBkaXNwbGF5Om5vbmU7IH0gLm9wZW5faG91cnNfY29udGFpbmVyIC5tYXBfb3Blbl9ob3Vyc19leHBhbmQgeyBjb2xvcjojMDAwMDAwOyB9IC5tYXBfb3Blbl9ob3Vyc19tb2JpbGUgLnZpc2l0Q29udGFjdEJ1dHRvbiwgLm9wZW5faG91cnNfY29udGFpbmVyIC52aXNpdENvbnRhY3RCdXR0b257IHdpZHRoOjEwMCU7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nOjExcHggNXB4IDlweDsgZm9udC1zaXplOjAuODEzcmVtIDsgbWFyZ2luLXRvcDoxMHB4OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IGJhY2tncm91bmQtY29sb3I6IzAwMmM1ZjsgY29sb3I6I2ZmZmZmZjsgfSAuZGVhbGVycGhvbmUgLnVpLWFjY29yZGlvbiAudWktYWNjb3JkaW9uLWljb25zeyBwYWRkaW5nLWxlZnQ6MDsgfSAuZGVhbGVycGhvbmUgLmZhLWNhbGVuZGFyeyBtYXJnaW4tbGVmdDoxM3B4OyBtYXJnaW4tcmlnaHQ6NXB4OyB9IC5kZWFsZXJwaG9uZSAudWktYWNjb3JkaW9uLWNvbnRlbnQgeyBiYWNrZ3JvdW5kLWNvbG9yOiNmM2YzZjMhaW1wb3J0YW50OyBib3JkZXI6bm9uZSFpbXBvcnRhbnQ7IH0gLmRlYWxlcnBob25lLnVpLWFjY29yZGlvbiAudWktYWNjb3JkaW9uLWhlYWRlcnsgcGFkZGluZzo4cHg7IH0gLmgzLm1vYmlsZUJ1dHRvbnsgZm9udC1zaXplOjAuOTM4cmVtIDsgfSAubW9iaWxlQnV0dG9uQ29udGFjdHsgYm9yZGVyLXJhZGl1czo0cHg7IGRpc3BsYXk6YmxvY2s7IGN1cnNvcjpwb2ludGVyOyBwb3NpdGlvbjpyZWxhdGl2ZTsgbWFyZ2luLXRvcDoycHg7IHBhZGRpbmc6LjVlbSAuNWVtIC41ZW0gLjdlbTsgem9vbToxOyBwYWRkaW5nLWxlZnQ6Mi4yZW07IG91dGxpbmU6MDsgbGluZS1oZWlnaHQ6MS4zOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgbGlzdC1zdHlsZTpub25lOyB9IC5tb2JpbGVCdXR0b25Db250YWN0IGl7IG1hcmdpbi1sZWZ0Oi0yMHB4OyBtYXJnaW4tcmlnaHQ6MTBweDsgfSAuYmlnZmIge3BhZGRpbmc6MzBweCAwOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2JpZ2ZiLnBuZykgcmVwZWF0LXggMCAwfSAuYnV0dG9uX2pvYm9mZmVyIHsgZGlzcGxheTpibG9jazsgbGluZS1oZWlnaHQ6NTBweDsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvaWNvbl9lbXBsb3kucG5nJykgbm8tcmVwZWF0IHNjcm9sbCAwcHggMHB4IHJnYigyMzEsIDIzMiwgMjMyKTsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtd2VpZ2h0OmJvbGQ7IHRleHQtZGVjb3JhdGlvbjpub25lOyBwYWRkaW5nLWxlZnQ6NDBweDsgfSBkaXYuZXJyb3JNc2cgeyBiYWNrZ3JvdW5kLWNvbG9yOiNGRkJBQkE7IGJhY2tncm91bmQtaW1hZ2U6dXJsKCIvaW1hZ2VzL2Vycm9yLnBuZyIpOyBiYWNrZ3JvdW5kLXBvc2l0aW9uOjEwcHggY2VudGVyOyBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7IGJvcmRlcjoxcHggc29saWQ7IGNvbG9yOiNEODAwMEM7IGRpc3BsYXk6bm9uZTsgcGFkZGluZzoxNXB4IDEwcHggMTVweCA1MHB4OyB6LWluZGV4Ojk5OTk7IH0gLmVtYWlsQm9keSwgLmVtYWlsU3ViamVjdHsgZGlzcGxheTpub25lOyB9IC5maWxlaW5wdXQtYnV0dG9uIHsgYmFja2dyb3VuZDp1cmwoIi9pbWFnZXMvYmxfYmcucG5nIikgcmVwZWF0LXggc2Nyb2xsIGxlZnQgdG9wIHJnYmEoMCwgMCwgMCwgMCk7IH0gLmZpbGVpbnB1dC1idXR0b246aG92ZXIgeyBiYWNrZ3JvdW5kOnVybCgiL2ltYWdlcy9idXR0b25fMi5wbmciKSByZXBlYXQteCBzY3JvbGwgbGVmdCB0b3AgcmdiYSgwLCAwLCAwLCAwKTsgfSAuZmlsZWlucHV0LWJ1dHRvbiwgLmZpbGVpbnB1dC1idXR0b246aG92ZXIgeyBmb250LXNpemU6MC44NzVyZW0gIWltcG9ydGFudDsgbGluZS1oZWlnaHQ6MzFweDsgcG9zaXRpb246cmVsYXRpdmU7IH0gLmZpbGVpbnB1dC1idXR0b24gaW5wdXQgeyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjA7IHJpZ2h0OjA7IG1hcmdpbjowOyBvcGFjaXR5OjA7IC1tcy1maWx0ZXI6J2FscGhhKG9wYWNpdHk9MCknOyBjdXJzb3I6cG9pbnRlcjsgfSAucGFnZV9uYW1lNXtoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgd2lkdGg6MTAwJSAhaW1wb3J0YW50O3BhZGRpbmc6MCAwcHggMTBweCAyMXB4OyBsaW5lLWhlaWdodDozMHB4OyBmb250LXNpemU6MS41cmVtIDsgY29sb3I6IzI0MjQyNDtmb250LXdlaWdodDpub3JtYWwgfSAucGljYm94OTB7d2lkdGg6OTBweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbi1yaWdodDo4cHg7IGJvcmRlcjoxcHggc29saWQgI2FjYWNhYzsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjdweDsgYm9yZGVyLXJhZGl1czo3cHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjdweDsgfSAucGljYm94OTAgaW1nIHt3aWR0aDo5MHB4OyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgLW1vei1ib3JkZXItcmFkaXVzOjdweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjdweDsgYm9yZGVyLXJhZGl1czo3cHg7IC1raHRtbC1ib3JkZXItcmFkaXVzOjdweDsgfSAudGV4dGJveDE5MXt3aWR0aDoxOTFweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGxpbmUtaGVpZ2h0OjEuMjsgY29sb3I6IzI0MjQyNDsgfSAudGV4dGJveDE5MSBoNHsgZm9udC1zaXplOjEuMTI1cmVtIDsgY29sb3I6IzI0MjQyNDsgcGFkZGluZy1ib3R0b206NXB4OyB9IC5tYWluYm94Mjkxe3dpZHRoOjkzJTtoZWlnaHQ6MTEycHg7IGZsb2F0OmxlZnQ7IGNsZWFyOmJvdGg7IG1hcmdpbjowIDVweCAxMHB4IDA7IGJhY2tncm91bmQ6I2U2ZTZlNjsgYm9yZGVyOjFweCBzb2xpZCAjZDRkNGQ0OyAtbW96LWJvcmRlci1yYWRpdXM6OHB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6OHB4OyBib3JkZXItcmFkaXVzOjhweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6OHB4OyBwYWRkaW5nOjE1cHggMTBweDt9IC5sYXp5e2JvcmRlcjowO2Rpc3BsYXk6bm9uZX0gLnRlY2hTcGVjc3t3aWR0aDo2MjFweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbjowcHg7IHBhZGRpbmc6MjVweCAxNXB4OyBiYWNrZ3JvdW5kOiNlNmU3ZTc7IGJhY2tncm91bmQtcG9zaXRpb246cmlnaHQgYm90dG9tOyAtbW96LWJvcmRlci1yYWRpdXMtdG9wbGVmdDowcHg7LW1vei1ib3JkZXItcmFkaXVzLXRvcHJpZ2h0OjBweDstbW96LWJvcmRlci1yYWRpdXMtYm90dG9tcmlnaHQ6NnB4Oy1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21sZWZ0OjZweDstd2Via2l0LWJvcmRlci10b3AtbGVmdC1yYWRpdXM6MHB4Oy13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MHB4Oy13ZWJraXQtYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6NnB4Oy13ZWJraXQtYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo2cHg7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowcHg7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MHB4O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NnB4O2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjZweDt9IC50ZXh0X2JveDExIGEgeyBjb2xvcjojMjQyNDI0OyBmbG9hdDpsZWZ0OyBoZWlnaHQ6YXV0bzsgbWFyZ2luLWxlZnQ6MTVweDsgcGFkZGluZzoxMHB4IDA7IH0gLnRleHRfYm94MTEgYSB7IGNvbG9yOiMyNDI0MjQ7IGZsb2F0OmxlZnQ7IGhlaWdodDphdXRvOyBtYXJnaW4tbGVmdDoxNXB4OyBwYWRkaW5nOjEwcHggMDsgfSAudGV4dF9ib3gxMSB1bCwgLnRleHRfYm94MTEgcCB7IGNvbG9yOiMyNDI0MjQ7IGZsb2F0OmxlZnQ7IGhlaWdodDphdXRvOyB3aWR0aDoxMDAlOyB0ZXh0LWFsaWduOmp1c3RpZnk7IH0gLnRleHRfYm94MTEgcCBpbWd7IHdpZHRoOjEwMCUgIWltcG9ydGFudDsgaGVpZ2h0OmF1dG8gIWltcG9ydGFudDsgbWFyZ2luOjAhaW1wb3J0YW50OyBwYWRkaW5nOjEwcHggMCFpbXBvcnRhbnQ7IH0gLnByaWNlTm90ZSB7IGNvbG9yOiM3NTc1NzU7IGZvbnQtc2l6ZTowLjg1ZW07IGZvbnQtc3R5bGU6aXRhbGljOyB0ZXh0LWFsaWduOmp1c3RpZnk7IGRpc3BsYXk6YmxvY2s7IHBhZGRpbmctcmlnaHQ6MTBweDsgbGluZS1oZWlnaHQ6MS4xZW07IG1hcmdpbjoxMHB4IDA7IH0gLnN0YWNrZWREaXNjbGFpbWVyeyBkaXNwbGF5OmJsb2NrOyBtYXJnaW4tdG9wOjEwcHg7IH0gc3Bhbi5zdGFja2VkRGlzY2xhaW1lcjpiZWZvcmV7IGNvbnRlbnQ6IioqIjsgcG9zaXRpb246cmVsYXRpdmU7IGZvbnQtc2l6ZToxcmVtOyB9ICNtYWluQ29tcGFyZVZpZXd7IG1hcmdpbjowOyB9ICNjb21wbF90YWJsZXsgbWFyZ2luLWJvdHRvbToyMHB4OyB9IC5pZE5hdjEgeyBjb2xvcjojZjlmOWY5OyBmb250LXNpemU6MC43NXJlbSA7IGZvbnQtc3R5bGU6bm9ybWFsOyBmb250LXdlaWdodDpib2xkOyBoZWlnaHQ6MjhweDsgbGlzdC1zdHlsZTpvdXRzaWRlIG5vbmUgbm9uZTsgcGFkZGluZzowOyB0ZXh0LXRyYW5zZm9ybTp2YXIoLS10eHQtdXBwZXIpOyB9IC5pZE5hdjEgbGkudG9wIHsgZGlzcGxheTpibG9jazsgZmxvYXQ6bGVmdDsgaGVpZ2h0OjI4cHg7IHBhZGRpbmc6MCAycHggMCAwOyB9IC5pZE5hdjEgbGkudG9wMSB7IGJhY2tncm91bmQ6cmdiYSgwLCAwLCAwLCAwKSB1cmwoIi9pbWFnZXMvYmxfaG92ZXIucG5nIikgcmVwZWF0LXggc2Nyb2xsIGxlZnQgdG9wOyBib3JkZXItcmFkaXVzOjNweDsgY29sb3I6I2ZmZjsgZGlzcGxheTpibG9jazsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjAuODEzcmVtIDsgaGVpZ2h0OjI4cHg7IHBhZGRpbmc6MCAycHggMCAwOyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC10cmFuc2Zvcm06dmFyKC0tdHh0LXVwcGVyKTsgfSAuaWROYXYxIGxpIGEudG9wX2xpbmsgeyBiYWNrZ3JvdW5kOnJnYmEoMCwgMCwgMCwgMCkgdXJsKCIvaW1hZ2VzL2JsX2JnLnBuZyIpIHJlcGVhdC14IHNjcm9sbCBsZWZ0IHRvcDsgYm9yZGVyLXJhZGl1czozcHg7IGNvbG9yOnJnYigyNTUsIDI1NSwgMjU1KTsgY3Vyc29yOnBvaW50ZXI7IGRpc3BsYXk6YmxvY2s7IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgaGVpZ2h0OjI4cHg7IGxpbmUtaGVpZ2h0OjMwcHg7IHBhZGRpbmc6MCAxMnB4OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC10cmFuc2Zvcm06dmFyKC0tdHh0LXVwcGVyKTsgfSAuaWROYXYxIGxpIGEudG9wX2xpbms6aG92ZXIgeyBiYWNrZ3JvdW5kOnJnYmEoMCwgMCwgMCwgMCkgdXJsKCIvaW1hZ2VzL2JsX2hvdmVyLnBuZyIpIHJlcGVhdC14IHNjcm9sbCBsZWZ0IHRvcDsgYm9yZGVyLXJhZGl1czozcHg7IGNvbG9yOiNmZmY7IH0gLmlkTmF2MSBsaSBhLnRvcF9saW5rMSB7IGJhY2tncm91bmQ6cmdiYSgwLCAwLCAwLCAwKSB1cmwoIi9pbWFnZXMvYmxfaG92ZXIucG5nIikgcmVwZWF0LXggc2Nyb2xsIGxlZnQgdG9wOyBib3JkZXItcmFkaXVzOjNweDsgY29sb3I6I2ZlZmVmZTsgY3Vyc29yOnBvaW50ZXI7IGRpc3BsYXk6YmxvY2s7IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgaGVpZ2h0OjI4cHg7IGxpbmUtaGVpZ2h0OjMwcHg7IHBhZGRpbmc6MCAxMnB4OyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC10cmFuc2Zvcm06dmFyKC0tdHh0LXVwcGVyKTsgfSAjZnJtUmViYXRlIC5pZE5hdjEgbGkgYS50b3BfbGluayB7IGJhY2tncm91bmQ6cmdiYSgwLCAwLCAwLCAwKSB1cmwoIi9pbWFnZXMvYnV0dG9uX3BvcHVwLnBuZyIpIHJlcGVhdC14IHNjcm9sbCBsZWZ0IHRvcDsgY29sb3I6I2ZmZjsgfSAjZnJtUmViYXRlIC5pZE5hdjEgbGkgYS50b3BfbGluazpob3ZlciB7IGJhY2tncm91bmQ6cmdiYSgwLCAwLCAwLCAwKSB1cmwoIi9pbWFnZXMvYmxfaG92ZXIucG5nIikgcmVwZWF0LXggc2Nyb2xsIGxlZnQgdG9wOyBjb2xvcjojZmZmOyB9IC50ZXh0MjAgeyBmb250LXNpemU6MC44MTNyZW0gOyBoZWlnaHQ6MjNweDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0gLnByb21vY29kZWJveHsgLW1vei1ib3gtc2hhZG93Omluc2V0IDBweCAtM3B4IDdweCAwcHggI2U4MGQwZDsgLXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDBweCAtM3B4IDdweCAwcHggI2U4MGQwZDsgYm94LXNoYWRvdzppbnNldCAwcHggLTNweCA3cHggMHB4ICNlODBkMGQ7IGJhY2tncm91bmQ6LXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgY29sb3Itc3RvcCgwLjA1LCAjZmYzMzMzKSwgY29sb3Itc3RvcCgxLCAjREIwMDAwKSk7IGJhY2tncm91bmQ6LW1vei1saW5lYXItZ3JhZGllbnQodG9wLCAjZmYzMzMzIDUlLCAjREIwMDAwIDEwMCUpOyBiYWNrZ3JvdW5kOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgI2ZmMzMzMyA1JSwgI0RCMDAwMCAxMDAlKTsgYmFja2dyb3VuZDotby1saW5lYXItZ3JhZGllbnQodG9wLCAjZmYzMzMzIDUlLCAjREIwMDAwIDEwMCUpOyBiYWNrZ3JvdW5kOi1tcy1saW5lYXItZ3JhZGllbnQodG9wLCAjZmYzMzMzIDUlLCAjREIwMDAwIDEwMCUpOyBiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICNmZjMzMzMgNSUsICNEQjAwMDAgMTAwJSk7IGZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI2ZmMzMzMycsIGVuZENvbG9yc3RyPScjREIwMDAwJyxHcmFkaWVudFR5cGU9MCk7IGJhY2tncm91bmQtY29sb3I6I2ZmMzMzMzsgYm9yZGVyOjFweCBzb2xpZCAjZjUxYTFhOyBjb2xvcjojRkZGRkZGIWltcG9ydGFudDsgZm9udC1zaXplOjAuOTM4cmVtIDsgcGFkZGluZzoxMHB4IDEwcHggMDsgbWFyZ2luOjA7IG1hcmdpbi10b3A6MTBweDsgbWFyZ2luLWxlZnQ6MzhweDsgbWluLXdpZHRoOjEwMHB4OyBib3JkZXItcmFkaXVzOjZweDsgYm94LXNoYWRvdzppbnNldCAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjQpOyBmb250LXdlaWdodDpib2xkOyBmbG9hdDpsZWZ0OyBkaXNwbGF5OmJsb2NrOyBib3JkZXI6MDsgd2lkdGg6MTAwcHg7IH0gLmRldGFpbFByaWNlV2l0aEJ1dHRvbiB7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyBwb3NpdGlvbjpyZWxhdGl2ZTsgbWFyZ2luLWxlZnQ6NXB4OyB2ZXJ0aWNhbC1hbGlnbjp0b3A7IG1hcmdpbi1ib3R0b206MTBweDsgbWFyZ2luLXJpZ2h0OjVweDsgd2lkdGg6NDklOyBtYXgtd2lkdGg6MTk1cHg7IG1pbi13aWR0aDoxMjBweDsgfSAuZGV0YWlsUHJpY2VXaXRoQnV0dG9uID4gLmRldGFpbFByaWNlQmxvY2sgeyBtYXJnaW4tbGVmdDowOyBtYXJnaW4tYm90dG9tOjlweDsgfSAuZGV0YWlsUHJpY2VXaXRoQnV0dG9uID4gLnByb21vY29kZWJveCB7IG1hcmdpbjowcHg7IHdpZHRoOjEwMCU7IHBhZGRpbmc6NnB4IDBweCAzcHggMHB4OyBtYXJnaW4tdG9wOjlweDsgfSAuZGV0YWlsLXByaWNlLXByb21vIGgyIHsgYmFja2dyb3VuZC1pbWFnZTp1cmwoL2ltYWdlcy9idXR0b25fcHJvbW90aW9uLnBuZyk7IGNvbG9yOiNGRkY7IGJvcmRlci1yYWRpdXM6OHB4OyBwYWRkaW5nOjVweCAwOyB9IC5kZXRhaWwtcHJpY2UtcHJvbW8gYSB7IGNvbG9yOiNGRkY7IH0gLmRldGFpbFByaWNlQmxvY2t7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyBtYXJnaW4tbGVmdDo1cHg7IHBhZGRpbmc6MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0Z3JleTsgdmVydGljYWwtYWxpZ246dG9wOyBib3JkZXItcmFkaXVzOjVweDsgbWFyZ2luLWJvdHRvbTowcHg7IHdpZHRoOjEwMCU7IG1heC13aWR0aDoxOTVweDsgfSAubmV3LWRldGFpbHMgLmRldGFpbFByaWNlV2l0aEJ1dHRvbiA+IC5kZXRhaWxQcmljZUJsb2NrIHsgbWFyZ2luLWJvdHRvbTowcHg7IH0gQG1lZGlhKG1heC13aWR0aDozMDdweCkgeyAuZGV0YWlsUHJpY2VCbG9jayB7IG1heC13aWR0aDoxNzVweDsgfSB9IC5kZXRhaWxQcmljZUJsb2NrICNyZWJhdGV7IG1hcmdpbjowOyBiYWNrZ3JvdW5kLWNvbG9yOmJsYWNrOyBjb2xvcjp3aGl0ZTsgYm9yZGVyLXJhZGl1czowIDAgNXB4IDVweDsgcGFkZGluZzo0cHggMCAwIDA7IH0gLmRldGFpbFByaWNlQmxvY2sgI2NhclByaWNleyBiYWNrZ3JvdW5kOm5vbmU7IGZvbnQtc2l6ZToxLjI1cmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgcGFkZGluZzowcHg7IGNvbG9yOiMxMTExMTE7IGhlaWdodDoyNXB4OyB9IC5zY3JhdGNoRGV0YWlsUHJpY2V7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6M3B4OyBsZWZ0Oi0xcHg7IH0gLnByb21vQlROOmhvdmVyLCAucHJvbW9CVE4gYTpob3ZlciwgLmJyb2NodXJlQnRuOmhvdmVyIHsgYmFja2dyb3VuZDojMDAyYzVmIWltcG9ydGFudDsgY29sb3I6I2ZmZmZmZiFpbXBvcnRhbnQ7IGJvcmRlcjpub25lIWltcG9ydGFudDsgfSBkaXYjbGVhc2VDb21tZW50cyB7IHBhZGRpbmctYm90dG9tOjEwcHg7IH0gLmRldGFpbFByaWNlQmxvY2sgI2NhclByaWNlRGlzY3sgYmFja2dyb3VuZDpub25lOyBmb250LXNpemU6MS4yNXJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IHBhZGRpbmc6MHB4OyBjb2xvcjojRDQwMDAwOyBoZWlnaHQ6MjBweDsgfSAuZGV0YWlsUHJpY2VCbG9jayAjY2FyUHJpY2VQcm9tb3sgYmFja2dyb3VuZDpub25lOyBmb250LXNpemU6MS4yNXJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gI2FzUHVyY2hhc2VJbnRlbnQgLmFzUElUaXRsZSB7IGZvbnQtc2l6ZToxLjI1cmVtICFpbXBvcnRhbnQ7IH0gI2FzUHVyY2hhc2VJbnRlbnQgbGkgbGFiZWx7IG1hcmdpbi1sZWZ0OjBweCFpbXBvcnRhbnQ7IH0gI2FzUHVyY2hhc2VJbnRlbnQgLnZpT3B0aW9uc3sgcGFkZGluZzowcHghaW1wb3J0YW50OyB9ICNhc1B1cmNoYXNlSW50ZW50IC52aU9wdGlvbnMgbGl7IGhlaWdodDoyMHB4IWltcG9ydGFudDsgd2lkdGg6MjYwcHghaW1wb3J0YW50OyBwYWRkaW5nOjAhaW1wb3J0YW50OyBtYXJnaW46MnB4IWltcG9ydGFudDsgfSAjYXNQdXJjaGFzZUludGVudCAuc3RlcHMgPiBsaXsgcGFkZGluZzoxMHB4IWltcG9ydGFudDsgbWFyZ2luLWJvdHRvbTo1cHghaW1wb3J0YW50OyB9ICNhc1B1cmNoYXNlSW50ZW50IC5zdGVwc3sgdGV4dC1pbmRlbnQ6MCFpbXBvcnRhbnQ7IH0gI2FzUHVyY2hhc2VJbnRlbnQgLmFzeWVzIHsgcGFkZGluZy1sZWZ0OjY1cHghaW1wb3J0YW50OyBtYXJnaW4tdG9wOjhweCFpbXBvcnRhbnQ7IH0gI2FzUHVyY2hhc2VJbnRlbnQgLmFzeWVzbm97IHdpZHRoOjYwcHghaW1wb3J0YW50OyBtYXJnaW4tdG9wOjBweCFpbXBvcnRhbnQ7IH0gI2FzUHVyY2hhc2VJbnRlbnQgaW5wdXR7IHBhZGRpbmcgOjBweCFpbXBvcnRhbnQ7IH0gI215Y2Fyb3VzZWxkaXZ7IG1hcmdpbi10b3A6MTBweDsgfSAjbXljYXJvdXNlbGRpdi5ibHVycnlmaXJzdGltYWdleyBtaW4taGVpZ2h0OnZhcigtLW1vYi1jYXJvdXNlbC1taW4taGVpZ2h0KTsgfSAjbXljYXJvdXNlbGRpdi5ibHVycnlmaXJzdGltYWdlIC5vd2wtY2Fyb3VzZWwgLm93bC1pdGVtIGltZ3sgYm9yZGVyOjA7IH0gI215Y2Fyb3VzZWxkaXYuYmx1cnJ5Zmlyc3RpbWFnZSAubG9hZGVyX293bHsgdmlzaWJpbGl0eTp2aXNpYmxlOyBvcGFjaXR5OjE7IHotaW5kZXg6MjsgcG9zaXRpb246YWJzb2x1dGU7IGhlaWdodDoxMDAlOyB3aWR0aDoxMDAlOyBvdmVyZmxvdzpoaWRkZW47IH0gI215Y2Fyb3VzZWxkaXYuYmx1cnJ5Zmlyc3RpbWFnZSAubG9hZGVyX293bCAucGxhY2Vob2xkZXJ7IGhlaWdodDoxMDAlOyB3aWR0aDpjYWxjKDEwMHZ3IC0gMjBweCk7IHBvc2l0aW9uOmFic29sdXRlOyBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7IGJhY2tncm91bmQtc2l6ZTpjb250YWluOyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmNlbnRlciBjZW50ZXI7IG1hcmdpbjowIDEwcHg7IH0gI215Y2Fyb3VzZWxkaXYuYmx1cnJ5Zmlyc3RpbWFnZSAubG9hZGVyX293bC5mYWRlLW91dHsgdmlzaWJpbGl0eTpoaWRkZW47IG9wYWNpdHk6MDsgLXdlYmtpdC10cmFuc2l0aW9uOnZpc2liaWxpdHkgMW1zIDFzLCBvcGFjaXR5IDFzIGxpbmVhcjsgLW1vei10cmFuc2l0aW9uOnZpc2liaWxpdHkgMW1zIDFzLCBvcGFjaXR5IDFzIGxpbmVhcjsgLW8tdHJhbnNpdGlvbjp2aXNpYmlsaXR5IDFtcyAxcywgb3BhY2l0eSAxcyBsaW5lYXI7IHRyYW5zaXRpb246dmlzaWJpbGl0eSAxbXMgMXMsIG9wYWNpdHkgMXMgbGluZWFyOyB9IGlucHV0W3R5cGU9cmFkaW9deyAtd2Via2l0LWJveC1zaGFkb3c6bm9uZSFpbXBvcnRhbnQ7IC1tb3otYm94LXNoYWRvdzogbm9uZSFpbXBvcnRhbnQ7IGJveC1zaGFkb3c6IG5vbmUhaW1wb3J0YW50OyB9IC5sYW5ndWFnZUJhcnsgbWF4LXdpZHRoOjIwMHB4OyB9IC51aS13aWRnZXQtY29udGVudCwgLnVpLXdpZGdldC1oZWFkZXJ7IGJhY2tncm91bmQ6I0YyRjJGMiFpbXBvcnRhbnQ7IH0gLnVpLWFjY29yZGlvbiAudWktYWNjb3JkaW9uLWNvbnRlbnQgeyBwYWRkaW5nOjEwcHghaW1wb3J0YW50OyB9IC51aS13aWRnZXQtY29udGVudCB7IGJhY2tncm91bmQ6I2U2ZTZlNiFpbXBvcnRhbnQ7IH0gLnVpLXRhYnMgLnVpLXRhYnMtbmF2IGxpeyBwYWRkaW5nOjFweCAzcHghaW1wb3J0YW50OyB9ICNtYWluRGl2X05ld01vYmlsZUxhbmRpbmdQYWdleyBiYWNrZ3JvdW5kOiNmZmYgdXJsKC9pbWFnZXMvZmluYW5jZS9oZWFkZXItYmctbW9iaWxlLmpwZykgdG9wIGNlbnRlciBuby1yZXBlYXQgfSAuY3JlZGl0X21faGVhZGVyIHsgcG9zaXRpb246cmVsYXRpdmU7IH0gLmNyZWRpdF9tX2hlYWRlciBpbWcgeyBtYXJnaW46MCBhdXRvOyBkaXNwbGF5OmJsb2NrOyB3aWR0aDoxMDAlOyB9IC5jcmVkaXRfbV90ZXh0LXdyYXBwZXIgeyBwb3NpdGlvbjphYnNvbHV0ZTsgaGVpZ2h0OjEwMCU7IHdpZHRoOjEwMCU7IGxlZnQ6NTAlOyB0b3A6MDsgdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSk7IH0gLmNyZWRpdF9tX3RpbWUgeyBjb2xvcjojOEYwRDIwOyBmb250LXdlaWdodDo1MDA7IH0gLmNyZWRpdF9tX2JveCB7IGNvbG9yOiNmZmZmZmY7IGZvbnQtd2VpZ2h0OmJvbGQ7IG1hcmdpbi1sZWZ0OjQwJTsgbWFyZ2luLXRvcDo5JTsgbGluZS1oZWlnaHQ6MTV2dzsgfSAuY3JlZGl0X21fYm94MiB7IG1hcmdpbi1sZWZ0OjQ3JTsgbWFyZ2luLXRvcDo1JTsgZm9udC1zaXplOjUuNXZ3OyB0ZXh0LWFsaWduOmNlbnRlcjsgd2lkdGg6NDUlOyB9IC5jcmVkaXRfbV9ib3ggLmNyZWRpdF9tXzk5IHsgZm9udC1zaXplOjE5dnc7IH0gLmNyZWRpdF9tX2JveCAuY3JlZGl0X21fYXBwcm92ZWQgeyBmb250LXNpemU6OHZ3OyB0ZXh0LXRyYW5zZm9ybTp2YXIoLS10eHQtdXBwZXIpOyB9IC5jcmVkaXRfbV9sb2dveyBwb3NpdGlvbjpyZWxhdGl2ZTtmbG9hdDpyaWdodDtoZWlnaHQ6ODVweDttYXJnaW4tcmlnaHQ6MzBweDtjbGVhcjpib3RoOyB9IC5jcmVkaXRfbV9waG90b3sgaGVpZ2h0OjM2M3B4OyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2ZpbmFuY2UvbW9iaWxlLWZpbmFuY2luZy1pbWcucG5nKSAwIDAgbm8tcmVwZWF0OyBiYWNrZ3JvdW5kLXNpemU6MTAwJTsgfSAuY3JlZGl0X21fYXBwcm92YWxfZnJ7IGZsb2F0OnJpZ2h0OyBjbGVhcjpyaWdodDsgd2lkdGg6MTYzcHg7IGhlaWdodDoxMzdweDsgbWFyZ2luOjI1cHggMjBweCAxMHB4IDA7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvZmluYW5jZS9sb2dvLWFwcHJvdmVkLW1vYmlsZV9yZWRfZnIucG5nKSAwIDAgbm8tcmVwZWF0OyB9IC5jcmVkaXRfbV9hcHByb3ZhbF9lbnsgZmxvYXQ6cmlnaHQ7IGNsZWFyOnJpZ2h0OyB3aWR0aDoxNjNweDsgaGVpZ2h0OjEzN3B4OyBtYXJnaW46MjVweCAyMHB4IDEwcHggMDsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9maW5hbmNlL2xvZ28tYXBwcm92ZWQtbW9iaWxlX3JlZF9lbi5wbmcpIDAgMCBuby1yZXBlYXQ7IH0gLmNyZWRpdF9tX3N0YXJ0aW5nYXRfd3JhcHBlcnsgZm9udC1zaXplOjEuNXJlbSA7IGZvbnQtd2VpZ2h0OmxpZ2h0ZXIgIWltcG9ydGFudDtsaW5lLWhlaWdodDoyNHB4O3RleHQtYWxpZ246Y2VudGVyO2NvbG9yOiMwMjQwNmY7Y2xlYXI6Ym90aDttYXJnaW4tYm90dG9tOjMwcHg7IH0gLmNyZWRpdF9tX3N0YXJ0aW5nYXQgeyBtYXJnaW4tdG9wOjI2MHB4O2ZvbnQtc2l6ZToxLjQzOHJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQgIWltcG9ydGFudDtsaW5lLWhlaWdodDoyNnB4O2Rpc3BsYXk6YmxvY2s7IH0gLmNyZWRpdF9tX2RlbGl2ZXJ5eyBmb250LXNpemU6MS41cmVtIDsgZm9udC13ZWlnaHQ6bGlnaHRlciAhaW1wb3J0YW50OyBsaW5lLWhlaWdodDoyNHB4O3RleHQtYWxpZ246Y2VudGVyO2NvbG9yOiMwMjQwNmY7IH0gLmNyZWRpdF9tX2NhbGx1c193cmFwcGVyeyBiYWNrZ3JvdW5kLWNvbG9yOiMwMjYyYWM7IGJhY2tncm91bmQtaW1hZ2U6LW1vei1saW5lYXItZ3JhZGllbnQoIzAyNjJhYywjMDEzNzYwKTsgYmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWxpbmVhci1ncmFkaWVudCgjMDI2MmFjLCMwMTM3NjApOyBiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCgjMDI2MmFjLCMwMTM3NjApOyB3aWR0aDoxMDAlOyBtYXJnaW46MCAwIDIwcHggMDsgYm9yZGVyLXJhZGl1czozcHg7IHRleHQtYWxpZ246Y2VudGVyOyB9IC5jcmVkaXRfbV9jYWxsdXMsIC5jcmVkaXRfbV9jYWxsdXMgYXsgZGlzcGxheTpibG9jaztoZWlnaHQ6NTVweDt3aWR0aDoxMDAlO2NvbG9yOiNmZmY7IH0gLmNyZWRpdF9jYWxsX3VzXzEgeyBmb250LXNpemU6MC43NXJlbSA7IGZvbnQtd2VpZ2h0OmxpZ2h0ZXIgIWltcG9ydGFudDsgbGluZS1oZWlnaHQ6MTJweDsgbGluZS1oZWlnaHQ6NTVweDsgbWFyZ2luLWxlZnQ6MTBweDsgcG9zaXRpb246IHJlbGF0aXZlOyBib3R0b206NnB4OyB9IC5jcmVkaXRfY2FsbF91c18yIHsgY29udGVudDp1cmwoL2ltYWdlcy9maW5hbmNlL2ljb24tcGhvbmUtd2hpdGUucG5nKTttYXJnaW46MCAxMHB4OyB9IC5jcmVkaXRfY2FsbF91c18zIHsgZm9udC1zaXplOjEuMzc1cmVtIDsgZm9udC13ZWlnaHQ6bm9ybWFsICFpbXBvcnRhbnQ7IGxpbmUtaGVpZ2h0OjIycHg7IGxpbmUtaGVpZ2h0OjU1cHg7IG1hcmdpbi1yaWdodDoxMHB4OyB9IC5jcmVkaXRfbV9pbm5lciB7IHBhZGRpbmc6MTVweCAxMHB4OyB9IC5jcmVkaXRfbV9zZWVuX2FsbHsgcG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MTAwJTsgaGVpZ2h0OjQwMHB4OyBtYXJnaW46MCBhdXRvOyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2ZpbmFuY2UvaGVhZGVyLWNvbmRpdGlvbnMtYmctbV9yZWQucG5nKSB0b3AgY2VudGVyIG5vLXJlcGVhdDsgei1pbmRleDo1OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IGNvbG9yOiNmZmY7IHRleHQtYWxpZ246Y2VudGVyOyB9IC5jcmVkaXRfbV9zZWVuX2FsbCB1bHsgcGFkZGluZy10b3A6MjBweDtmb250LXNpemU6MS4xMjVyZW0gOyB9IC5jcmVkaXRfbV9zZWVuX2FsbCB1bCBsaXsgZm9udC1zaXplOjEuMTI1cmVtIDsgZm9udC13ZWlnaHQ6Ym9sZCAhaW1wb3J0YW50OyBsaW5lLWhlaWdodDoxOHB4OyB0ZXh0LXRyYW5zZm9ybTp2YXIoLS10eHQtdXBwZXIpOyBwYWRkaW5nOjVweDsgYm9yZGVyLXRvcDoxcHggcmdiYSgyNTUsMjU1LDI1NSwwLjIpIHNvbGlkOyB9IC5jcmVkaXRfbV9zZWVuX2FsbCB1bCBsaTpmaXJzdC1jaGlsZCB7IHBhZGRpbmctdG9wOjA7IGJvcmRlci10b3A6bm9uZTsgfSAuY3JlZGl0X21fc2Vlbl9hbGwgcHsgZm9udC1zaXplOjEuOTM4cmVtIDsgbGluZS1oZWlnaHQ6MzFweDsgdGV4dC10cmFuc2Zvcm06dmFyKC0tdHh0LXVwcGVyKTsgbWFyZ2luOjIwcHggMCAwIDA7IH0gLmNyZWRpdF9tX2Zvcm1fd3JhcHBlcnsgdGV4dC1hbGlnbjpjZW50ZXI7IGJvcmRlci1yaWdodDpub25lOyBjb2xvcjojMDI0MDZmOyBmb250LXdlaWdodDpub3JtYWwgIWltcG9ydGFudDsgYm94LXNpemluZzpib3JkZXItYm94OyB6LWluZGV4OjcwOyBwYWRkaW5nOjIwcHggMTBweCA4MHB4IDVweDsgcG9zaXRpb246cmVsYXRpdmU7IGJvcmRlcjo1cHggc29saWQgIzAyNDA2ZjsgYm9yZGVyLXJhZGl1czoxMHB4OyBiYWNrZ3JvdW5kOiNGRkY7IHdpZHRoOjEwMCU7IG1hcmdpbi10b3A6MjBweDsgfSAuY3JlZGl0X21fYmVmb3JlX2Zvcm17IGZvbnQtc2l6ZToyLjEyNXJlbSA7IGxpbmUtaGVpZ2h0OjM0cHg7IHRleHQtdHJhbnNmb3JtOnZhcigtLXR4dC11cHBlcik7IH0gLmNyZWRpdF9tX2JlZm9yZV9mb3JtIHB7IGZvbnQtc2l6ZToxLjE4OHJlbSA7IGxpbmUtaGVpZ2h0OjE5cHg7IG1hcmdpbi10b3A6MTVweDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgfSAuY3JlZGl0X21fZm9ybV9ib3R0b217IHBvc2l0aW9uOmFic29sdXRlOyBib3R0b206LTJweDsgbGVmdDotMnB4OyB3aWR0aDoxMDAlOyBwYWRkaW5nOjEycHggMnB4IDhweCAycHg7IGJhY2tncm91bmQ6IzAyNDA2ZjsgY29sb3I6I2ZmZjsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtc2l6ZToxcmVtIDsgZm9udC13ZWlnaHQ6bm9ybWFsICFpbXBvcnRhbnQ7IGxpbmUtaGVpZ2h0OjE2cHg7IH0gLmNyZWRpdF9tX2FmdGVyX2Zvcm17IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgY29sb3I6I2ZmZjsgcGFkZGluZzozNXB4IDA7IGJhY2tncm91bmQ6I2ZmZiB1cmwoL2ltYWdlcy9maW5hbmNlL2ZlYXQtYmdfcmVkLnBuZyk7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGZvbnQtd2VpZ2h0Om5vcm1hbCAhaW1wb3J0YW50OyBsaW5lLWhlaWdodDoyMHB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAuY3JlZGl0X21fYWZ0ZXJfZm9ybSBzcGFueyB9IC5jcmVkaXRfbV9mb3JtX2JvdHRvbSBweyBwYWRkaW5nOjA7IGxpbmUtaGVpZ2h0OjEuMzsgfSAuY3JlZGl0X21fYWZ0ZXJfZm9ybSBoMnsgZm9udC1zaXplOjEuMzEzcmVtIDsgZm9udC13ZWlnaHQ6Ym9sZCAhaW1wb3J0YW50OyBsaW5lLWhlaWdodDoyNXB4OyBtYXJnaW46NXB4IDAgMCAwOyBwYWRkaW5nOjA7IH0gQG1lZGlhKG1heC13aWR0aDo0NTBweCkgeyAuY3JlZGl0X21fYWZ0ZXJfZm9ybSBoMntwYWRkaW5nOjAgMjAlO30gLmNyZWRpdF9tX2Zvcm1fYm90dG9tIHB7cGFkZGluZzowIDIwJTt9IH0gQG1lZGlhKG1heC13aWR0aDo0MDBweCkgeyAuY3JlZGl0X21fYWZ0ZXJfZm9ybSBoMntwYWRkaW5nOjAgMTUlO30gLmNyZWRpdF9tX2Zvcm1fYm90dG9tIHB7cGFkZGluZzowIDE1JTt9IH0gQG1lZGlhKG1heC13aWR0aDozNDBweCkgeyAuY3JlZGl0X21fYWZ0ZXJfZm9ybSBoMntwYWRkaW5nOjAgMTAlO30gLmNyZWRpdF9tX2Zvcm1fYm90dG9tIHB7cGFkZGluZzowIDEwJTt9IH0gLmNyZWRpdF9tXzNzdGVwc3sgbWFyZ2luLWxlZnQ6YXV0bzsgbWFyZ2luLXJpZ2h0OmF1dG87IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgcG9zaXRpb246cmVsYXRpdmU7IHRleHQtYWxpZ246bGVmdDsgbWFyZ2luOjAgYXV0bzsgcGFkZGluZy1yaWdodDoxMHB4OyBwYWRkaW5nLWxlZnQ6MTBweDsgbWF4LXdpZHRoOjk2MHB4OyB9IC5jcmVkaXRfbV8zc3RlcHMgaDJ7IGZvbnQtc2l6ZToxLjU2M3JlbSA7IGZvbnQtd2VpZ2h0Om5vcm1hbCAhaW1wb3J0YW50OyBsaW5lLWhlaWdodDoyNXB4OyB0ZXh0LXRyYW5zZm9ybTp2YXIoLS10eHQtdXBwZXIpOyBtYXJnaW4tdG9wOjA7IHBhZGRpbmctdG9wOjA7IGJvcmRlci10b3A6bm9uZTsgY29sb3I6IzAyNDA2ZjsgfSAuY3JlZGl0X21fM3N0ZXBzIHVseyBsaXN0LXN0eWxlOm5vbmU7IH0gLmNyZWRpdF9tXzNzdGVwcyBsaXsgcGFkZGluZzoyMHB4IDIwcHggMjBweCAxMTNweDsgYm9yZGVyLXJhZGl1czoxMHB4OyBwb3NpdGlvbjpyZWxhdGl2ZTsgYmFja2dyb3VuZC1jb2xvcjojZmZmOyBtYXJnaW4tdG9wOjEwcHg7IH0gLmNyZWRpdF9tXzNzdGVwc193cmFwcGVyeyBwYWRkaW5nOjQwcHggMDsgYmFja2dyb3VuZDojZTFlMWUxIHVybCgvaW1hZ2VzL2ZpbmFuY2Uvc3RlcHMtYmcuanBnKSB0b3AgY2VudGVyIG5vLXJlcGVhdDsgfSAuY3JlZGl0X21fM3N0ZXBzIHVsIGxpIGgzeyBmb250LXNpemU6MS4zNzVyZW0gOyBmb250LXdlaWdodDpub3JtYWwgIWltcG9ydGFudDsgbGluZS1oZWlnaHQ6MjJweDsgY29sb3I6IzAyNDA2ZjsgfSAuY3JlZGl0X21fM3N0ZXBzIHVsIGxpIHB7IGxpbmUtaGVpZ2h0OjIwcHg7IG1hcmdpbjowIDAgMTVweCAwOyBwYWRkaW5nOjA7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGZvbnQtd2VpZ2h0Om5vcm1hbCAhaW1wb3J0YW50OyBsaW5lLWhlaWdodDoxOHB4OyB9IC5jcmVkaXRfbV8zc3RlcHMgdWwgbGk6YWZ0ZXJ7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MDsgYm90dG9tOjA7IGxlZnQ6MjBweDsgbWFyZ2luOmF1dG8gMDsgY29udGVudDonICc7IGRpc3BsYXk6YmxvY2s7IHdpZHRoOjczcHg7IGhlaWdodDo2NnB4OyBiYWNrZ3JvdW5kLWltYWdlOnVybCgnL2ltYWdlcy9maW5hbmNlL3N0ZXBzLW1vYmlsZV9yZWQucG5nJyk7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgfSAuY3JlZGl0X21fM3N0ZXBzIHVsID4gbGk6Zmlyc3QtY2hpbGQ6YWZ0ZXIgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xOTFweCAwOyB9IC5jcmVkaXRfbV8zc3RlcHMgdWwgPiBsaTpudGgtY2hpbGQoMik6YWZ0ZXJ7IGJhY2tncm91bmQtcG9zaXRpb246MCAxcHg7IH0gLmNyZWRpdF9tXzNzdGVwcyB1bCA+IGxpOm50aC1jaGlsZCgzKTphZnRlcnsgYmFja2dyb3VuZC1wb3NpdGlvbjotOTBweCA5cHg7IH0gLmNyZWRpdF9tX2Zvb3Rlcl93cmFwcGVyeyBwYWRkaW5nOjEwcHggMDsgfSAuY3JlZGl0X21fZm9vdGVyeyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IHBvc2l0aW9uOnJlbGF0aXZlOyB0ZXh0LWFsaWduOmxlZnQ7IG1hcmdpbjowIGF1dG87IHBhZGRpbmctcmlnaHQ6MTBweDsgcGFkZGluZy1sZWZ0OjEwcHg7IG1heC13aWR0aDo5NjBweDsgfSAuY3JlZGl0X21fZm9vdGVyIGgyIHsgbWFyZ2luOnZhcigtLXM5KSAwIHZhcigtLXMzKSAwOyBsaW5lLWhlaWdodDoxLjc1cmVtOyB9IC5jcmVkaXRfbV9mb3JtIGlucHV0W3R5cGU9dGV4dF0sIC5jcmVkaXRfbV9mb3JtIGlucHV0W3R5cGU9ZGF0ZV0sIC5jcmVkaXRfbV9mb3JtIGlucHV0W3R5cGU9bnVtYmVyXSwgLmNyZWRpdF9tX2Zvcm0gaW5wdXRbdHlwZT1lbWFpbF0sIC5jcmVkaXRfbV9mb3JtIGlucHV0W3R5cGU9dGVsXSwgLmNyZWRpdF9tX2Zvcm0gc2VsZWN0eyBoZWlnaHQ6NTBweDsgZm9udC1zaXplOjEuMzc1cmVtIDsgZm9udC13ZWlnaHQ6Ym9sZCAhaW1wb3J0YW50OyBsaW5lLWhlaWdodDoyMnB4OyB3aWR0aDoxMDAlOyBtYXJnaW4tYm90dG9tOjBweDsgYm9yZGVyLXJhZGl1czoxMHB4OyBtYXJnaW46MDsgcGFkZGluZzozcHggNXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiNEQURBREE7IGJvcmRlcjoxcHggI0MyQjNCMyBzb2xpZDsgYm94LXNpemluZzpib3JkZXItYm94OyB9IC5jcmVkaXRfbV9mb3JtIHRhYmxleyB3aWR0aDoxMDAlOyBwYWRkaW5nOjAgMTBweDsgfSAuY3JlZGl0X21fZm9ybSAuY3JlZGl0X3JlcXVlc3Rfc3VibWl0eyBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MS44NzVyZW0gOyBwYWRkaW5nOjVweDsgZm9udC13ZWlnaHQ6Ym9sZCAhaW1wb3J0YW50OyBsaW5lLWhlaWdodDo2MHB4OyBtYXJnaW46MzBweCAwIDMwcHggMDsgYm94LXNoYWRvdzpub25lOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgYmFja2dyb3VuZDpub25lOyBiYWNrZ3JvdW5kLWNvbG9yOiNjZjE3MWY7IGNvbG9yOiNmZmY7IHRleHQtdHJhbnNmb3JtOnZhcigtLXR4dC11cHBlcik7IGJvcmRlci1yYWRpdXM6MTBweDsgfSAuY3JlZGl0X21fZm9ybSAubGFiZWx7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGZvbnQtd2VpZ2h0OmxpZ2h0ZXI7ICFpbXBvcnRhbnQ7IGNvbG9yOiMyNDI0MjQ7IGZsb2F0OmxlZnQ7IHdpZHRoOjEwMCU7IHRleHQtYWxpZ246bGVmdDsgfSAuY3JlZGl0X21fcmVxdWlyZWR7IGNvbG9yOiNjMDA7IH0gI2Jlc3RQcmljZVZkcE5ld1BvcHVwQ29udGFpbmVyeyB3aWR0aDoyODBweDsgaGVpZ2h0OjQ5MHB4OyBwYWRkaW5nOjI2cHggMTBweCAxMHB4IDEwcHg7IH0gI2Jlc3RQcmljZVZkcE5ld1BvcHVwQ29udGFpbmVyIC5wb3B1cF9iZ3sgd2lkdGg6MjgwcHg7IGhlaWdodDo0OTBweDsgfSAjYmVzdFByaWNlVmRwTmV3UG9wdXBDb250YWluZXIgLnBvcHVwX2JneyBiYWNrZ3JvdW5kLWltYWdlOnVybCgnL2ltYWdlcy9wb3B1cHMvbS9mci9iZXN0UHJpY2VOZXdWZHAucG5nJyk7IH0gLnBvcHVwX2JneyBiYWNrZ3JvdW5kLWNvbG9yOiM0NDQ0NDQ7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSAucG9wdXBGb3JtIC5hc3Rlcmlza3sgY29sb3I6I2QwMDsgZm9udC13ZWlnaHQ6Ym9sZDsgcGFkZGluZzowOyBmb250LXNpemU6aW5oZXJpdDsgbWFyZ2luOjA7IH0gLnBvcHVwRm9ybXsgei1pbmRleDo1MDsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDoyNzdweDsgaGVpZ2h0OjI0OXB4OyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IHdpZHRoOjI3MHB4OyBwYWRkaW5nOjNweDsgfSAucG9wdXBGb3JtIHRhYmxleyBtYXJnaW4tYm90dG9tOjEwcHg7IH0gLnBvcHVwRm9ybVRpdGxleyBoZWlnaHQ6MjVweDsgbWFyZ2luOjhweDsgZm9udC1zaXplOjFyZW0gOyBmb250LXdlaWdodDpib2xkOyB9IC5wb3B1cEZvcm1JbnB1dHMgdGQgeyBmb250LXNpemU6MC44NzVyZW0gOyB0ZXh0LWFsaWduOnJpZ2h0OyBwYWRkaW5nLXJpZ2h0OjEwcHg7IHBhZGRpbmctYm90dG9tOjNweDsgbGluZS1oZWlnaHQ6MTNweDsgbWluLXdpZHRoOjYwcHg7IH0gLnBvcHVwRm9ybSBpbnB1dHsgd2lkdGg6MTgwcHg7IH0gI2FzUHVyY2hhc2VJbnRlbnR7IHdpZHRoOjg1JTsgbWF4LXdpZHRoOjYwMHB4OyBwYWRkaW5nOjEwcHggMTBweDsgei1pbmRleDoxMDAwMDIxOyB9IC5zdHJpa2V7IHBvc2l0aW9uOnJlbGF0aXZlOyB9IC5zdHJpa2U6OmFmdGVyeyBjb250ZW50OicnOyBib3JkZXItYm90dG9tOjJweCBzb2xpZCAjQ0UwMDAwOyBwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDowOyB0b3A6MjUlOyB3aWR0aDoxMDAlOyB9IC5yZXNwb25zaXZlLWNvbnRhaW5lciB7IHBvc2l0aW9uOnJlbGF0aXZlOyBvdmVyZmxvdzpzY3JvbGw7IC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOnRvdWNoOyB9IC5yZXNwb25zaXZlLWNvbnRhaW5lci0xNng5IHsgcGFkZGluZy1ib3R0b206NTYuMjUlOyB9IC5yZXNwb25zaXZlLWNvbnRhaW5lci00eDMgeyBwYWRkaW5nLWJvdHRvbTo3NSU7IH0gLnJlc3BvbnNpdmUtY29udGFpbmVyLTEwMCB7IHBhZGRpbmctYm90dG9tOjEwMCU7IHdpZHRoOjEwMCU7IH0gLnJlc3BvbnNpdmUtY29udGFpbmVyLTEwIHsgcGFkZGluZy1ib3R0b206MTAlOyB3aWR0aDoxMDAlOyB9IC5yZXNwb25zaXZlLWNvbnRhaW5lciBpZnJhbWUgeyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjA7IGxlZnQ6MDsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IH0gLnJlc3BvbnNpdmUtY29udGFpbmVyIFtjbGFzcyo9ImNyZWRzaWkiXSBpZnJhbWUgeyBwb3NpdGlvbjppbmhlcml0OyB9IC5yZXNwb25zaXZlLWVkaXRvciBpZnJhbWV7IHBvc2l0aW9uOmluaXRpYWw7IH0gLnN1Ym1lbnVJdGVtQ29udGFpbmVyIC5sb2NhdGlvbi1uYW1lcyBhLCAuc3VibWVudUl0ZW1Db250YWluZXIgLmxvY2F0aW9uLW5hbWVzIC50aXRsZSwgLnN1Ym1lbnVJdGVtQ29udGFpbmVyIC5sb2NhdGlvbi1uYW1lcyAubG9jYXRpb24tZGV0YWlscy1pbmZvIGxpIHsgcGFkZGluZy1sZWZ0OjlweDsgfSAuc3VibWVudUl0ZW1Db250YWluZXIgLnN1Ym1lbnVJdGVtQ2hpbGRDb250YWluZXIgeyBkaXNwbGF5Om5vbmU7IH0gLnN1Ym1lbnVJdGVtQ2hpbGRDb250YWluZXIgLnN1Ym1lbnVJdGVtQ2hpbGRDb250YWluZXIgeyBkaXNwbGF5OmJsb2NrOyB9IC5zdWJtZW51SXRlbUNvbnRhaW5lciAuc3VibWVudUl0ZW1DaGlsZENvbnRhaW5lciAuc3VibWVudUl0ZW1DaGlsZENvbnRhaW5lciB7IGRpc3BsYXk6bm9uZTsgfSAuc3VibWVudUl0ZW1Db250YWluZXIgLmxvY2F0aW9uLW5hbWVzID4gYSB7IGJhY2tncm91bmQtY29sb3I6IzAwN2ZhNTsgfSBsaS5sb2NhdGlvbi1uYW1lcyB7IHRleHQtYWxpZ246bGVmdDsgfSBsaS5sb2NhdGlvbi1uYW1lcy5tb2JpbGUgeyBtYXJnaW4tYm90dG9tOjA7IH0gbGkubG9jYXRpb24tbmFtZXMubW9iaWxlID4gYSB7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgYm9yZGVyLXJhZGl1czowOyBib3JkZXI6MXB4IHNvbGlkICNCQkI7IGJvcmRlci1ib3R0b206bm9uZTsgfSAubG9jYXRpb24tZGV0YWlscyB7IGZvbnQtc2l6ZToxcmVtIDsgfSAubG9jYXRpb24tZGV0YWlscy1sb2dvIC50aXRsZSB7IG1hcmdpbi10b3A6OHB4OyB9IC5sb2NhdGlvbi1kZXRhaWxzLWxvZ28gaW1nIHsgbWFyZ2luLWJvdHRvbTo4cHg7IH0gLmxvY2F0aW9uLWRldGFpbHMtaW5mbyB1bCBsaTpub3QoLmRldGFpbHMtaW5mby1saW5rKSB7IGJvcmRlci1sZWZ0Om5vbmU7IGJvcmRlci1yaWdodDpub25lOyBib3JkZXItYm90dG9tOm5vbmU7IH0gLmxvY2F0aW9uLWRldGFpbHMtaW5mbyB1bCBsaTpub3QoOmZpcnN0LWNoaWxkKSB7IGJvcmRlcjpub25lOyB9ICNkZWZhdWx0VG9wQmFubmVyVGV4dCB7IH0gQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDozMjBweCkgeyAjdG9wQmFubmVySW1hZ2UuTkVXQ0FSUyAjZGVmYXVsdFRvcEJhbm5lclRpdGxleyBmb250LXNpemU6MS4zNzVyZW0gIWltcG9ydGFudDsgfSAjdG9wQmFubmVySW1hZ2UuTkVXQ0FSUyAjZGVmYXVsdFRvcEJhbm5lclRleHR7IGZvbnQtc2l6ZToxLjE4OHJlbSAhaW1wb3J0YW50OyB9ICN0b3BCYW5uZXJJbWFnZS5VU0VEQ0FSUyAjZGVmYXVsdFRvcEJhbm5lclRpdGxleyBmb250LXNpemU6MS4zNzVyZW0gIWltcG9ydGFudDsgfSAjdG9wQmFubmVySW1hZ2UuVVNFRENBUlMgI2RlZmF1bHRUb3BCYW5uZXJUZXh0eyBmb250LXNpemU6MS4xODhyZW0gIWltcG9ydGFudDsgfSB9IEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6MzIwcHgpIHsgI3RvcEJhbm5lckltYWdlLk5FV0NBUlMgI2RlZmF1bHRUb3BCYW5uZXJUaXRsZSwjdG9wQmFubmVySW1hZ2UuVVNFRENBUlMgI2RlZmF1bHRUb3BCYW5uZXJUaXRsZSB7IGZvbnQtc2l6ZToxLjE4OHJlbSAhaW1wb3J0YW50OyB9ICN0b3BCYW5uZXJJbWFnZS5ORVdDQVJTICNkZWZhdWx0VG9wQmFubmVyVGV4dCwjdG9wQmFubmVySW1hZ2UuVVNFRENBUlMgI2RlZmF1bHRUb3BCYW5uZXJUZXh0IHsgZm9udC1zaXplOjEuMDYzcmVtICFpbXBvcnRhbnQ7IH0gfSAjdG9wQmFubmVySW1hZ2UuVVNFRENBUlMgI2RlZmF1bHRUb3BCYW5uZXJXcmFweyBoZWlnaHQ6MTY1cHggIWltcG9ydGFudDsgfSAjdG9wQmFubmVySW1hZ2UuTkVXQ0FSUyAjZGVmYXVsdFRvcEJhbm5lcldyYXB7IGhlaWdodDoxNjVweCAhaW1wb3J0YW50OyB9ICNkZWZhdWx0VG9wQmFubmVyeyBtaW4taGVpZ2h0OmluaXRpYWw7IGhlaWdodDphdXRvOyB9ICNkZWZhdWx0VG9wQmFubmVyV3JhcCBkaXYuZGVmYXVsdFRvcEJhbm5lckJ0bldyYXBwZXJ7IG1hcmdpbjoxMHB4IDAgIWltcG9ydGFudDsgfSAjZGVmYXVsdFRvcEJhbm5lcldyYXAgeyB0b3A6MCFpbXBvcnRhbnQ7IHBhZGRpbmc6MTVweCA0cHggIWltcG9ydGFudDsgfSAjZGVmYXVsdFRvcEJhbm5lclRpdGxlIHsgbGluZS1oZWlnaHQ6bm9ybWFsIWltcG9ydGFudDsgfSAjZGVmYXVsdFRvcEJhbm5lclRleHQgeyB9ICNkZWZhdWx0VG9wQmFubmVyQnRuIHsgZm9udC1zaXplOjAuNzVyZW0gIWltcG9ydGFudDsgbWFyZ2luLWJvdHRvbToxMHB4OyBmb250LXdlaWdodDpub3JtYWwhaW1wb3J0YW50OyBwYWRkaW5nOjRweCAyMHB4IWltcG9ydGFudDsgfSAucHJvbW9CVE4gYXsgYm9yZGVyOm5vbmUhaW1wb3J0YW50OyB0ZXh0LXRyYW5zZm9ybTp2YXIoLS10eHQtdXBwZXIpOyB9IC5wcm9tb0JUTi5pcy1zdGlja3l7IHBvc2l0aW9uOnN0aWNreTsgdG9wOjNyZW07IGJhY2tncm91bmQtY29sb3I6dmFyKC0tbGlnaHQtZ3JheSk7IGFsaWduLWl0ZW1zOmNlbnRlcjsgfSAuc3BlY2lhbC1zY2hlZHVsZSB7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7IC1tb3otYm9yZGVyLXJhZGl1czo0cHg7IGJvcmRlci1yYWRpdXM6NHB4OyBjb2xvcjpyZ2IoMjU1LDI1NSwyNTUpOyB0ZXh0LWFsaWduOmxlZnQ7IHRleHQtZGVjb3JhdGlvbjpub25lOyBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MS4xZW07IGZvbnQtd2VpZ2h0OmJvbGQ7IHBhZGRpbmc6N3B4IDhweCA3cHggMHB4OyBiYWNrZ3JvdW5kOnJnYig3MiwgNzIsIDczKTsgbWFyZ2luOjEycHggMTBweCAzcHggMTBweDsgfSAjZGVmYXVsdFRvcEJhbm5lciB7IGhlaWdodDphdXRvOyB9IElOUFVUW3R5cGU9InRleHQiXS52YWxpZGl0eS1lcnJvbmVvdXMsIElOUFVUW3R5cGU9ImRhdGUiXS52YWxpZGl0eS1lcnJvbmVvdXMsIElOUFVUW3R5cGU9ImVtYWlsIl0udmFsaWRpdHktZXJyb25lb3VzLCBJTlBVVFt0eXBlPSJ0ZWwiXS52YWxpZGl0eS1lcnJvbmVvdXMsIElOUFVUW3R5cGU9InBhc3N3b3JkIl0udmFsaWRpdHktZXJyb25lb3VzIHsgYm9yZGVyOjFweCBzb2xpZCAjZGMzNTQ1OyBiYWNrZ3JvdW5kLWNvbG9yOiNmYWQ2ZGM7IH0gU0VMRUNULnZhbGlkaXR5LWVycm9uZW91c3sgYm9yZGVyOjFweCBzb2xpZCAjZGMzNTQ1OyBiYWNrZ3JvdW5kLWNvbG9yOiNmYWQ2ZGM7IH0gVEVYVEFSRUEudmFsaWRpdHktZXJyb25lb3VzeyBib3JkZXI6MXB4IHNvbGlkICNkYzM1NDU7IGJhY2tncm91bmQtY29sb3I6I2ZhZDZkYzsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIC50cmFkaW5TZWxlY3RQb3B1cHsgY29sb3I6IzNjMzgzNjsgZm9udC1zaXplOjFyZW07IGJhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwxKTsgYmFja2dyb3VuZC1wb3NpdGlvbjo5NSUgNTAlOyAtd2Via2l0LWFwcGVhcmFuY2U6bm9uZTsgLW1vei1hcHBlYXJhbmNlOm5vbmU7IG1hcmdpbjo1cHggMCAwOyBwYWRkaW5nOjAuM3JlbSFpbXBvcnRhbnQ7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyA6OnBsYWNlaG9sZGVyIHsgY29sb3I6I2E5YTlhOTsgb3BhY2l0eToxOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7IGNvbG9yOiNhOWE5YTk7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyA6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7IGNvbG9yOiNhOWE5YTk7IH0gLnJldmVhbC1tb2RhbCA6OnBsYWNlaG9sZGVyIHsgY29sb3I6I2E5YTlhOTsgb3BhY2l0eToxOyB9IC5yZXZlYWwtbW9kYWwgOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7IGNvbG9yOiNhOWE5YTk7IH0gLnJldmVhbC1tb2RhbCA6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7IGNvbG9yOiNhOWE5YTk7IH0gI2FzUHVyY2hhc2VJbnRlbnQgKnsgYm94LXNpemluZzpjb250ZW50LWJveCFpbXBvcnRhbnQ7IH0gI3RyYWRlSW5CYXJQb3B1cF90aXRsZXsgdGV4dC10cmFuc2Zvcm06dmFyKC0tdHh0LXVwcGVyKTsgZm9udC13ZWlnaHQ6Ym9sZDsgdGV4dC1hbGlnbjpjZW50ZXI7IGNvbG9yOiMwMDAwMDA7IH0gI3RyYWRlSW5CYXJQb3B1cFNlbGVjdGVkVmVoaWNsZXsgbWFyZ2luLWJvdHRvbToxMHB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgY29sb3I6IzAwMDAwMDsgfSAudHJhZGluU2VsZWN0V3sgZmxvYXQ6bGVmdDsgbWFyZ2luLWxlZnQ6MTBweDsgfSAudHJhZGluU2VsZWN0QXsgcG9zaXRpb246cmVsYXRpdmU7IH0gLnRyYWRpblNlbGVjdEE6YWZ0ZXIgeyBjb250ZW50OiIgIjsgaGVpZ2h0OjA7IHdpZHRoOjA7IGJvcmRlci1sZWZ0OjVweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXJpZ2h0OjVweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXRvcDo1cHggc29saWQgIzAwMDAwMDsgcG9zaXRpb246YWJzb2x1dGU7IHJpZ2h0OjE0cHg7IHRvcDoxN3B4OyB0cmFuc2l0aW9uOmFsbCAwLjNzIGxpbmVhcjsgcG9pbnRlci1ldmVudHM6bm9uZTsgfSAudHJhZGluTml2eyB3aWR0aDoxMDAlOyBwYWRkaW5nOjAuNHJlbTsgYm9yZGVyOjFweCBzb2xpZCAjYTlhOWE5OyBib3JkZXItcmFkaXVzOjVweDsgfSAudHJhZGluU2VsZWN0eyBjb2xvcjojM2MzODM2OyBib3JkZXI6MnB4IHNvbGlkICMjVFJBREVJTkpTRUxFQ1RCT1JERVJDT0xPUiMjOyBib3JkZXItcmFkaXVzOjVweDsgcGFkZGluZzoxMHB4IDEwcHg7IGZvbnQtc2l6ZToxcmVtIDsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC45KTsgYmFja2dyb3VuZC1wb3NpdGlvbjo5NSUgNTAlOyB3aWR0aDoyMDBweDsgLXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7IC1tb3otYXBwZWFyYW5jZTpub25lOyBwYWRkaW5nLXJpZ2h0OjI3cHg7IH0gLnRyYWRpblNlbGVjdDphZnRlciB7IGNvbnRlbnQ6IiAiOyBoZWlnaHQ6MDsgd2lkdGg6MDsgYm9yZGVyLWxlZnQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItcmlnaHQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItdG9wOjVweCBzb2xpZCAjMDAwMDAwOyBwb3NpdGlvbjphYnNvbHV0ZTsgcmlnaHQ6MTRweDsgdG9wOjE3cHg7IHRyYW5zaXRpb246YWxsIDAuM3MgbGluZWFyOyB9IC50cmFkZUluQmFyTW9iaWxlQnV0dG9uIHsgcG9zaXRpb246Zml4ZWQ7IGJvdHRvbToxMHB4OyBsZWZ0OjEwcHg7IHotaW5kZXg6NDsgd2lkdGg6MTQwcHggIWltcG9ydGFudDsgYm9yZGVyLXdpZHRoOjFweDsgdGV4dC1hbGlnbjpsZWZ0OyBiYWNrZ3JvdW5kLWNvbG9yOiMwMDJjNWYgIWltcG9ydGFudDsgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudDsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGJvcmRlci1yYWRpdXM6OHB4OyBib3JkZXItd2lkdGg6MXB4IDNweCA0cHggMXB4OyBib3JkZXItY29sb3I6IzMzMzMzMzsgcGFkZGluZy10b3A6MTBweDsgfSBCT0RZLlVzZWRTcnAyTW9iaWxlIC50cmFkZUluQmFyTW9iaWxlQnV0dG9ueyBib3R0b206NnJlbTsgfSAudHJhZGVJbkJhck1vYmlsZUJ1dHRvbiBpeyBkaXNwbGF5OmlubGluZS1mbGV4OyBib3JkZXItcmFkaXVzOjEwMCU7IHdpZHRoOjJlbTsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyBib3JkZXI6MnB4IHNvbGlkICNmZmY7IGJhY2tncm91bmQtY29sb3I6I2ZmZjsgaGVpZ2h0OjEuNWVtOyBjb2xvcjojMDAwOyBmbG9hdDpsZWZ0OyB9IC50cmFkZUluQmFyTW9iaWxlQnV0dG9uLndpdGhUb2FzdGVyIHsgYm90dG9tOjgwcHg7IH0gLnRyYWRlSW5CYXJNb2JpbGVCdXR0b24gYSB7IGNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnQ7IH0gLnRyYWRlSW5CYXJTdGVwMnsgbWFyZ2luOjYwcHggMDsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLnRyYWRlSW5CYXJTdGVwMiAudHJhZGVJbkJhclN0ZXAyUXVlc3Rpb257IG1hcmdpbjoyMHB4IDA7IH0gLnRyYWRlSW5CYXJTdGVwMyAudHJhZGVJbkJhclN0ZXAzUXVlc3Rpb257IG1hcmdpbjoyMHB4IDA7IH0gLnRyYWRlSW5CYXJTdGVwMiAucmFkaW9fZGl2IGxhYmVseyB3aWR0aDo1MHB4OyBwYWRkaW5nOjA7IG1hcmdpbjo1cHg7IGRpc3BsYXk6aW5saW5lLWJsb2NrIH0gLnRyYWRlSW5CYXJTdGVwMiAucmFkaW9fZGl2IGlucHV0eyB3aWR0aDphdXRvICFpbXBvcnRhbnQ7IHBhZGRpbmc6MCAhaW1wb3J0YW50OyBtYXJnaW46NXB4ICFpbXBvcnRhbnQ7IGJvcmRlcjpub25lICFpbXBvcnRhbnQ7IGhlaWdodDphdXRvICFpbXBvcnRhbnQ7IH0gLm11bHRpc2VsZWN0VmVoaWNsZU9wdGlvbnN7IG1hcmdpbi10b3A6NXB4OyB9IC5tdWx0aXNlbGVjdFZlaGljbGVPcHRpb25zIHNwYW57IGZvbnQtc2l6ZTowLjkzOHJlbSAhaW1wb3J0YW50OyBwYWRkaW5nOjAgIWltcG9ydGFudDsgbWFyZ2luOjAgIWltcG9ydGFudDsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIC50cmFkZUluQmFyTXVsdGlzZWxlY3R7IHdpZHRoOjEwMCUhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOjAuM3JlbSFpbXBvcnRhbnQ7IGJvcmRlci13aWR0aDoxcHghaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOjAuM3JlbSFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjojYTlhOWE5IWltcG9ydGFudDsgcGFkZGluZzowLjNyZW0haW1wb3J0YW50OyB9IC51aS1tdWx0aXNlbGVjdC1tZW51LnRyYWRlSW5CYXJNdWx0aXNlbGVjdHsgei1pbmRleDoxMDAwMDIwOyBtYXgtaGVpZ2h0OjExMHB4OyBvdmVyZmxvdzpzY3JvbGw7IH0gLnRyYWRlSW5CYXJEZWFsZXJTdGVweyB0ZXh0LWFsaWduOmNlbnRlcjsgbWFyZ2luLXRvcDoyNXB4OyB9IC50cmFkZUluQmFyRGVhbGVyU3RlcCAudHJhZGVJbkJhckRlYWxlclN0ZXBNYWtlTW9kZWxZZWFyeyBmb250LXdlaWdodDo3MDA7IH0gLnRyYWRlSW5CYXJEZWFsZXJTdGVwIHNwYW57IG1hcmdpbjowIWltcG9ydGFudDsgZm9udC13ZWlnaHQ6NzAwIWltcG9ydGFudDsgY29sb3I6IzAwMDAwMCFpbXBvcnRhbnQ7IHBhZGRpbmc6MCFpbXBvcnRhbnQ7IGZvbnQtc2l6ZToxLjMxM3JlbSAhaW1wb3J0YW50OyB9IC5tb2RlbG5veWVhckJ1dHRvbkxpc3R7IG1pbi1oZWlnaHQ6NDJweDsgbWFyZ2luOjE1cHggMDsgfSAubW9kZWxub3llYXJCdXR0b25MaXN0IHVseyBmbG9hdDpsZWZ0OyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgcGFkZGluZzowOyB9IC5tb2RlbG5veWVhckJ1dHRvbkxpc3QgbGl7IGZsb2F0OmxlZnQ7IHRleHQtYWxpZ246Y2VudGVyOyBtYXJnaW4tcmlnaHQ6M3B4OyBsaW5lLWhlaWdodDo0MHB4OyBwYWRkaW5nOjBweCAxNXB4OyBjdXJzb3I6cG9pbnRlcjsgYmFja2dyb3VuZC1jb2xvcjojZjBmMGYwOyBjb2xvcjojMDAwMDAwOyBib3JkZXI6MXB4IHNvbGlkICMwMDA7IGJvcmRlci1yYWRpdXM6M3B4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4OyAtbW96LWJvcmRlci1yYWRpdXM6M3B4OyB9IC5tb2RlbG5veWVhckJ1dHRvbkxpc3QgbGk6aG92ZXJ7IGNvbG9yOiNmZmZmZmY7IGJhY2tncm91bmQtY29sb3I6IzAwN2ZhNTsgYm9yZGVyOjFweCBzb2xpZCAjZmZmZmZmOyB9IC5tb2RlbG5veWVhckJ1dHRvbkxpc3Qgc3BhbnsgbWFyZ2luLWxlZnQ6MTBweDsgYm9yZGVyLXJhZGl1czoyMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiMwMDA7IGNvbG9yOiNmMGYwZjA7IHBhZGRpbmc6MnB4IDEwcHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGZvbnQtd2VpZ2h0OjcwMDsgfSAubW9kZWxub3llYXJCdXR0b25MaXN0IGxpOmhvdmVyIHNwYW57IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgY29sb3I6IzAwN2ZhNTsgfSAubW9kZWxub3llYXJCdXR0b25MaXN0IGxpLm1vZGVsbm95ZWFyQnV0dG9uU2VsZWN0ZWR7IGJhY2tncm91bmQtY29sb3I6cmdiKDAsMCwwKTsgY29sb3I6cmdiKDAsMCwwKTsgYm9yZGVyOjFweCBzb2xpZCByZ2IoMCwwLDApOyB9IC5tb2RlbG5veWVhckJ1dHRvbkxpc3QgbGkubW9kZWxub3llYXJCdXR0b25TZWxlY3RlZCBzcGFueyBiYWNrZ3JvdW5kLWNvbG9yOnJnYigwLDAsMCk7IGNvbG9yOnJnYigwLDAsMCk7IH0gLm11bHRpZm9ybV9mb290ZXIgLm11bHRpZm9ybV9zdGVwMnsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLm11bHRpZm9ybV9ib2R5eyBwYWRkaW5nOjMwcHggMTBweDsgfSAubXVsdGlmb3JtX3RleHR7IHBhZGRpbmctYm90dG9tOjE1cHghaW1wb3J0YW50OyB9IC5tdWx0aWZvcm1fYnRuXzJ7IHRleHQtYWxpZ246Y2VudGVyOyB9IC5yZWJhdGVUYWd7IG1hcmdpbjowIGF1dG87IHBhZGRpbmc6NHB4IDdweCA0cHggN3B4OyB0ZXh0LWFsaWduOmNlbnRlcjsgd2lkdGg6Zml0LWNvbnRlbnQ7IGxpbmUtaGVpZ2h0OjE1cHg7IGJvcmRlci1yYWRpdXM6M3B4OyBiYWNrZ3JvdW5kOiMwMDJjNWYhaW1wb3J0YW50OyBjb2xvcjojZmZmZmZmIWltcG9ydGFudDsgdGV4dC1zaGFkb3c6bm9uZSFpbXBvcnRhbnQ7IH0gLnJlYmF0ZVRhZyBzcGFuLnJlYmF0ZVRleHR7IGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZTowLjc1cmVtIDsgfSAucmViYXRlVGFnIHNwYW4ucmViYXRlQW1vdW50eyBkaXNwbGF5OmJsb2NrOyBmb250LXdlaWdodDo3MDA7IGZvbnQtc2l6ZToxcmVtIDsgfSAuZ3JheWJveCAuY2FyLXByaWNlLWRvd24tYXJyb3d7IG1hcmdpbi10b3A6LTI1cHg7IG1hcmdpbi1ib3R0b206MHB4OyBtYXJnaW4tbGVmdDoyMHB4OyBmbG9hdDpsZWZ0OyBwb3NpdGlvbjpyZWxhdGl2ZTsgei1pbmRleDo1OyB9IC5ncmF5Ym94IC5jYXItcHJpY2UtZG93bi1hcnJvdy51c2VkeyBtYXJnaW4tbGVmdDo1MHB4OyB9IC5wcm9tb0luZm9XcmFwcGVyeyB3aWR0aDoxMDAlOyBoZWlnaHQ6NjBweDsgYm90dG9tOjA7IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQtY29sb3I6I2VmZWZlZjsgZGlzcGxheTppbmxpbmUtdGFibGU7IG1hcmdpbi10b3A6LTIwcHg7IH0gLmRpdkNhclBheW1lbnRDb250YWluZXJ7IHRleHQtYWxpZ246Y2VudGVyOyBjb2xvcjpibGFjazsgfSAucmVzcG9uc2l2ZS1jb250YWluZXIgLmNvbnRlbnQtd3JhcHBlciB7IG1hcmdpbjowIDE1cHg7IH0gLmNhcmZheCB7IHRleHQtYWxpZ246Y2VudGVyOyB9IC5jYXJmYXggaW1nIHsgd2lkdGg6MjAwcHg7IHBhZGRpbmctdG9wOjE1cHg7IH0gLmNhcmZheCAuY2FycHJvb2YtYmFkZ2UgPiBESVZ7IG1heC13aWR0aDpub25lICFpbXBvcnRhbnQ7IHdpZHRoOjEwMCUgIWltcG9ydGFudDsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLmNhcmZheCAuY2FycHJvb2YtYmFkZ2UgPiBESVYgSU1HIHsgbWF4LXdpZHRoOm5vbmU7IGhlaWdodDo0MHB4OyB3aWR0aDoxMDAlOyBtYXJnaW46MTBweCAwIDIwcHg7IH0gLmRpdlNlYXJjaE1zZyB7IGZvbnQtc2l6ZTowLjlyZW07IHBhZGRpbmc6MTVweDsgYmFja2dyb3VuZC1jb2xvcjojZjdmN2Y3OyBib3JkZXItcmFkaXVzOjVweDsgfSAuYnV0dG9uXzEsIC5idXR0b25fMiwgLmJ1dHRvbl8zIHsgbWFyZ2luLWJvdHRvbToxMHB4OyB9IC5idXR0b25fMSBhLCAuYnV0dG9uXzIgYSwgLmJ1dHRvbl8zIGEgeyBkaXNwbGF5OmJsb2NrOyB3aWR0aDoyNDlweDsgaGVpZ2h0OjM4cHg7IGJvcmRlci1yYWRpdXM6M3B4OyBmb250LXNpemU6MS4xMjVyZW0gOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC1hbGlnbjpjZW50ZXI7IGxpbmUtaGVpZ2h0OjM4cHg7IH0gLmJ1dHRvbl8zLmpzLUNUQS1udW1iZXIgYSA+ICo6Zmlyc3QtY2hpbGR7IG1hcmdpbi1yaWdodDowLjVyZW07IH0gLmJ1dHRvbl8zIGF7IGJhY2tncm91bmQ6IzAwMDsgY29sb3I6I0ZGRjsgfSAuYnV0dG9uXzMgYTpob3ZlciwgLmJ1dHRvbl8zIGE6Zm9jdXN7IGJhY2tncm91bmQ6IzY2NjY2NjsgfSAjcHJvbW9EZXNjIC5ja2VkaXRvcldyYXBwZXIgaWZyYW1lIHsgbWF4LXdpZHRoOjEwMCU7IH0gQk9EWS5Vc2VkU3JwMk1vYmlsZSBIMS5kZWZhdWx0eyBmb250LXNpemU6MS4ycmVtOyBsaW5lLWhlaWdodDoxLjJyZW07IGNvbG9yOiMwMDAwMDA7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgY2xlYXI6Ym90aDsgcGFkZGluZzowIDAgMTVweCAwOyBkaXNwbGF5OmlubGluZS1mbGV4OyB9IEJPRFkuVXNlZFZkcDJNb2JpbGUgSDEuZGVmYXVsdHsgcGFkZGluZzoxMHB4OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IG1hcmdpbjowOyBkaXNwbGF5OmlubGluZS1mbGV4OyB9IEJPRFkuVXNlZFNycDJNb2JpbGUgSDEuZGVmYXVsdCBBeyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSBCT0RZLlVzZWRWZHAyTW9iaWxlIEgxLmRlZmF1bHQgSS5pY29uLCBCT0RZLlVzZWRTcnAyTW9iaWxlIEgxLmRlZmF1bHQgSS5pY29uIHsgYm9yZGVyLXJhZGl1czozMHB4OyB3aWR0aDoxNnB4OyBoZWlnaHQ6MjBweDsgcGFkZGluZy10b3A6NXB4OyBwYWRkaW5nLWxlZnQ6OHB4OyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MXJlbSA7IG1hcmdpbi1yaWdodDo1cHg7IGJvcmRlcjoxcHggc29saWQgIzAwMDAwMDsgY29sb3I6IzAwMDAwMDsgYmFja2dyb3VuZC1jb2xvcjojZTRkY2QzOyB9IEJPRFkuVXNlZFZkcDJNb2JpbGUgSDEuZGVmYXVsdCBJLmljb24ubXVsdGlMaW5lSDEsIEJPRFkuVXNlZFNycDJNb2JpbGUgSDEuZGVmYXVsdCBJLmljb24ubXVsdGlMaW5lSDF7IG1hcmdpbi10b3A6MHB4OyB9IEJPRFkuVXNlZFZkcDJNb2JpbGUgSDEuZGVmYXVsdCBJLmljb24uc2luZ2xlTGluZUgxLCBCT0RZLlVzZWRTcnAyTW9iaWxlIEgxLmRlZmF1bHQgSS5pY29uLnNpbmdsZUxpbmVIMXsgbWFyZ2luLXRvcDowcHg7IH0gQk9EWS5Vc2VkVmRwMk1vYmlsZSBIMS5kZWZhdWx0ID4gRElWLCBCT0RZLlVzZWRTcnAyTW9iaWxlIEgxLmRlZmF1bHQgPiBESVZ7IGRpc3BsYXk6dGFibGUtcm93OyB9IEJPRFkuVXNlZFNycDJNb2JpbGUgSDEuZGVmYXVsdCA+IERJViBESVY6bnRoLWNoaWxkKDEpeyBmb250LXdlaWdodDpib2xkOyB9IEJPRFkuVXNlZFNycDJNb2JpbGUgSDEuZGVmYXVsdCA+IERJViBESVY6bnRoLWNoaWxkKDIpeyBmb250LXdlaWdodDpub3JtYWw7IGNvbG9yOiM3NTc1NzU7IGZvbnQtc2l6ZTowLjlyZW07IH0gQk9EWS5Vc2VkU3JwMk1vYmlsZSBIMS5kZWZhdWx0ID4gRElWIERJVjpudGgtY2hpbGQoMyl7IGZvbnQtc2l6ZTowLjhyZW07IGNvbG9yOiNiYmI7IHBhZGRpbmctdG9wOjVweDsgfSAuY2FyZmF4Lm1vYmlsZSBkaXZ7IGhlaWdodDphdXRvIWltcG9ydGFudDsgfSAuY2FyZmF4Lm1vYmlsZSBkaXYgYXsgZGlzcGxheTpibG9jayFpbXBvcnRhbnQ7IH0gLmNyZWRzaWlNb2JpbGV7IGRpc3BsYXk6YmxvY2s7IHBvc2l0aW9uOnJlbGF0aXZlOyB9IC5jcmVkc2lpTW9iaWxlIC5jcmVkc2lpLXdpZGdldC1jb250YWluZXJ7IG1heC13aWR0aDoxMDAlIWltcG9ydGFudDsgfSAuYmFubmVyLWZvcm0gLk1haW5Cb3hMYXllciB7IHdpZHRoOmluaXRpYWw7IH0gQk9EWS5Vc2VkVmRwMk1vYmlsZSAuc3BlY3MtaW1hZ2VzLWdyb3VweyBwb3NpdGlvbjpyZWxhdGl2ZTsgZGlzcGxheTpmbGV4OyBmbGV4LWZsb3c6cm93IHdyYXA7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ3JpZC1nYXA6MzBweDsgYmFja2dyb3VuZC1jb2xvcjojZmZmOyBtYXJnaW46MzBweCAxNXB4OyB9IEJPRFkuVXNlZFZkcDJNb2JpbGUgLnNwZWNzLWltYWdlcy1ncm91cCA+IGRpdnsgdGV4dC1hbGlnbjpjZW50ZXI7IGZsZXg6MSAxIDQ1JTsgfSBCT0RZLlVzZWRWZHAyTW9iaWxlIC5zcGVjcy1pbWFnZXMtZ3JvdXAgPiBkaXYgPiBpbWcgeyB3aWR0aDoxMDAlOyBoZWlnaHQ6YXV0bzsgcGFkZGluZzo1cHg7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfSBCT0RZLlVzZWRWZHAyTW9iaWxlIC5zcGVjcy1pbWFnZXMtZ3JvdXAgLmNlcnQtdGl0bGUgeyBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MS4xZW07IH0gQk9EWS5Vc2VkVmRwMk1vYmlsZSAuc3BlY3MtaW1hZ2VzLWdyb3VwIC5jZXJ0LXN1YnRpdGxlIHsgZGlzcGxheTpibG9jazsgbWFyZ2luLWJvdHRvbToxMHB4OyBjb2xvcjojNzc3OyBmb250LXNpemU6MC45NWVtOyBtYXJnaW4tdG9wOjVweDsgfSBCT0RZLlVzZWRWZHAyTW9iaWxlIC5zcGVjcy1pbWFnZXMtZ3JvdXAgLmNlcnQtaGlnaGxpZ2h0ZWQtdmFsdWUgeyBiYWNrZ3JvdW5kLWNvbG9yOiMwMDA7IGJvcmRlcjoxcHggc29saWQgIzAwMDsgY29sb3I6I0ZGRjsgcGFkZGluZzoxMXB4IDIwcHggOXB4IDIwcHg7IGJvcmRlci1yYWRpdXM6M3B4OyBkaXNwbGF5OmlubGluZS1ibG9jazsgfSAuY29tcGFyZVRhYmxlSW1nIHsgaGVpZ2h0OjkwcHg7IG1hcmdpbjowIGF1dG87IGRpc3BsYXk6YmxvY2s7IH0gLmRlYWxlci1pbnNpZGUtY2FsbCBidXR0b257IGRpc3BsYXk6bm9uZSFpbXBvcnRhbnQ7IH0gLmJyb2NodXJlUG9zdGVyIHsgd2lkdGg6MTc1cHg7IG1hcmdpbjowIGF1dG87IGJvcmRlcjoxcHggc29saWQgI2FhYTsgYm9yZGVyLXJhZGl1czo0cHg7IG92ZXJmbG93OmhpZGRlbjsgfSAuYnJvY2h1cmVQb3N0ZXIgaW1neyB3aWR0aDoxMDAlOyBjdXJzb3I6cG9pbnRlcjsgfSAucGh5c2ljYWxBZGRyZXNzQm94eyBiYWNrZ3JvdW5kLWNvbG9yOiNGN0Y2Rjg7IHRleHQtYWxpZ246Y2VudGVyOyB9IC51dmRwLWxvY2F0ZWQtYXQtbXNneyBmb250LXNpemU6MXJlbSA7IGNvbG9yOiM3MDcwNzA7IGZvbnQtd2VpZ2h0OmxpZ2h0ZXI7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbi10b3A6NXB4OyB9IC51dmRwLWxvY2F0ZWQtZGVhbGVyLW5hbWV7IGZvbnQtc2l6ZToxLjMxM3JlbSA7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbi10b3A6NXB4OyBmb250LXdlaWdodDpib2xkOyB9IC51dmRwLWxvY2F0ZWQtYWRkcmVzc3sgZm9udC1zaXplOjAuNzVyZW0gOyBkaXNwbGF5OmJsb2NrOyBtYXJnaW46NXB4IDA7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgfSAudXZkcC1sb2NhdGVkLXdlYnNpdGUgeyBkaXNwbGF5OmJsb2NrOyBtYXJnaW4tdG9wOjVweDsgZm9udC1zaXplOnZhcigtLWZzLTEpOyBmb250LXdlaWdodDpib2xkOyB9IC5kcm9wZG93bi1jb250ZW50eyBkaXNwbGF5Om5vbmU7IHBvc2l0aW9uOmFic29sdXRlOyBiYWNrZ3JvdW5kLWNvbG9yOiNmOWY5Zjk7IHdpZHRoOjEwMCU7IGJveC1zaGFkb3c6MHB4IDhweCAxNnB4IDBweCByZ2JhKDAsMCwwLDAuMik7IHotaW5kZXg6MTsgYm94LXNpemluZzpib3JkZXItYm94OyBtYXJnaW46MTBweCAtMTBweDsgfSAuZHJvcGRvd24tY29udGVudCBheyBiYWNrZ3JvdW5kOnRyYW5zcGFyZW50OyBjb2xvcjojMDAwICFpbXBvcnRhbnQ7IGJvcmRlcjpub25lOyBmb250LXNpemU6MC44NzVyZW0gIWltcG9ydGFudDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgd2lkdGg6MTAwJTsgcGFkZGluZzo4cHg7IHRleHQtYWxpZ246bGVmdDsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGxpbmUtaGVpZ2h0OjEuNXJlbTsgcGFkZGluZy1sZWZ0OjMwcHg7IH0gLnRlc3Rkcml2ZUljb257IGZvbnQtc2l6ZToxLjM3NXJlbSA7IG1hcmdpbi1yaWdodDoyMHB4OyB9IC5wcmljZURpdnsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuOyBwYWRkaW5nOjAgMjBweCAwIDEwcHg7IGZsZXgtZmxvdzp3cmFwOyB9IC5wcmljZU1zZ0RpdnsgZm9udC1zaXplOjAuNzVyZW0gIWltcG9ydGFudDsgZGlzcGxheTpibG9jazsgd2lkdGg6NTAlOyB0ZXh0LWFsaWduOnJpZ2h0IWltcG9ydGFudDsgY29sb3I6IzZkNmQ2ZCAhaW1wb3J0YW50OyB9IC5wcmljZURpdlByaWNlLm11bHRpZmVlc3sgZm9udC1zaXplOjFyZW07IGNvbG9yOiM3MDcwNzA7IH0gLnByaWNlRGl2UHJpY2V7IGZvbnQtc2l6ZToxLjg3NXJlbSA7IGNvbG9yOmJsYWNrOyB9IC5oYXNBdmcgLnByaWNlRGl2UHJpY2V7IGZvbnQtc2l6ZToxLjU2M3JlbSA7IH0gLnByaWNlRGlzY2xhaW1lckRpdnsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDplbmQ7IHdpZHRoOjEwMCU7IH0gI3ZkcF9wcmljZV9ibG9jayAucHJpY2VEaXNjbGFpbWVyRGl2eyBwYWRkaW5nOjAgMjBweCAwIDEwcHg7IHdpZHRoOnVuc2V0OyB9IC5wcmljZURpc2NsYWltZXJTcGFueyBmb250LXNpemU6MC43NXJlbSAhaW1wb3J0YW50OyBkaXNwbGF5OmJsb2NrOyB0ZXh0LWFsaWduOnJpZ2h0IWltcG9ydGFudDsgY29sb3I6IzZkNmQ2ZCAhaW1wb3J0YW50OyB9IC5wcmljZUJhcnsgYm9yZGVyLXRvcDoxcHggc29saWQgI2I4YjhiODsgbWFyZ2luOjAgMTBweCAwIDU1JTsgfSAuY2FySW5mb3NEaXZ7IGJhY2tncm91bmQtY29sb3I6d2hpdGU7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkIGJsYWNrOyBwYWRkaW5nOjVweCAxJSAwcHggMSU7IH0gLmNhckluZm9QcmljZURpdnsgY29sb3I6Izc1NzU3NTsgZm9udC1zaXplOjAuNzVyZW0gOyBkaXNwbGF5OmlubGluZS1ibG9jazsgb3ZlcmZsb3c6aGlkZGVuOyB9IC5jYXJJbmZvUHJpY2VEaXYgaXsgbWFyZ2luLXJpZ2h0OjJweCB9IC5jYXJJbmZvS017IHRleHQtYWxpZ246bGVmdDsgd2lkdGg6MjglOyB9IC5jYXJJbmZvTWlkZGxleyB0ZXh0LWFsaWduOmNlbnRlcjsgd2lkdGg6MjclOyB9IC5jYXJJbmZvQ29sb3J7IHRleHQtYWxpZ246cmlnaHQ7IHdpZHRoOjQwJTsgfSAjdmRwdmlkZW97IG1heC13aWR0aDoxMDB2dzsgfSAjdmRwdmlkZW8gPiAqeyBtYXgtd2lkdGg6MTAwJTsgfSAuYmRjdHsgcGFkZGluZzowIDEwcHg7IG1hcmdpbjoyMHB4IDA7IGZsb2F0OmxlZnQ7IHdpZHRoOjEwMCU7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgZm9udC1zaXplOjAuODVyZW07IGNvbG9yOiM2NjY7IH0gLmJkY3QgSDN7IHBhZGRpbmc6MDsgbWFyZ2luOjAgMCA1cHggMDsgZm9udC1zaXplOjFyZW07IH0gLmJkY3QgPiBkaXZ7IHBhZGRpbmc6MTVweDsgYmFja2dyb3VuZC1jb2xvcjojZWVlOyBib3JkZXItcmFkaXVzOjdweDsgfSAucHJvbW8tYnRuIHsgcGFkZGluZzoxNXB4IDIwcHg7IG1hcmdpbjphdXRvOyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyBib3JkZXI6MXB4IHNvbGlkOyB0ZXh0LXRyYW5zZm9ybTp2YXIoLS1jZXJ0LXR4dC10cmFuc2Zvcm0sIHZhcigtLXR4dC11cHBlcikpOyBmb250LXdlaWdodDpib2xkOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgYm9yZGVyLWNvbG9yOiMwMDAwMDA7IGNvbG9yOiMwMDAwMDA7IGJhY2tncm91bmQtY29sb3I6I2U0ZGNkMzsgYm9yZGVyLXJhZGl1czoyNXB4OyBmb250LXNpemU6MC45cmVtOyB9IC4tdGV4dC11cHBlcmNhc2UsIC4tdXBwZXJjYXNlLCAudGV4dC11cHBlcmNhc2UgeyB0ZXh0LXRyYW5zZm9ybTp2YXIoLS10eHQtdXBwZXIpOyB9ICNkYXJrdG9vbHRpcC1jYXJQcmljZUluaXRpYWxUb29sVGlwSWNvbnsgd2lkdGg6MjAwcHg7IH0KLyoqIC9jc3MvbmV3Y2Fycy5jc3MgKiovCi5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyeyBtYXJnaW4tYm90dG9tOjQwcHg7IH0gLmRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIC5kaXZDYXRlZ29yeUJveFdyYXBwZXI6bGFzdC1jaGlsZHsgbWFyZ2luLWJvdHRvbTowOyB9IEgxLmRlZmF1bHQuaXNTaW5nbGVUaXRsZS5pc0JvdHRvbUJvcmRlcmVkLCAuZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIgLmRpdkNhdGVnb3J5Qm94V3JhcHBlciBIMnsgYm9yZGVyOjA7IH0gLmRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIC5kaXZDYXRlZ29yeUJveFdyYXBwZXIgLmRpdkNhcnNCb3hXcmFwcGVyIHsgZGlzcGxheTpmbGV4OyBmbGV4LWZsb3c6cm93IHdyYXA7IH0gLmRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIC5kaXZDYXRlZ29yeUJveFdyYXBwZXIgLmRpdkNhclNpbmdsZU91dGVyQm94eyBwb3NpdGlvbjpyZWxhdGl2ZTsgZmxvYXQ6bGVmdDsgYmFja2dyb3VuZC1jb2xvcjojZmZmOyBib3JkZXItcmFkaXVzOjdweDsgbWFyZ2luOjAgMCAyMHB4IDA7IHBhZGRpbmc6MTBweDsgYm9yZGVyOjFweCAjYWFhIHNvbGlkOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IHdpZHRoOjEwMCU7IG92ZXJmbG93OmhpZGRlbjsgfSAuZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIgLmRpdkNhdGVnb3J5Qm94V3JhcHBlciAuZGl2Q2FyU2luZ2xlT3V0ZXJCb3guZGl2TWFrZUxvZ29Pbmx5eyBoZWlnaHQ6MTU2cHg7IHdpZHRoOmF1dG87IG1hcmdpbi10b3A6MjBweDsgcGFkZGluZzoyMHB4OyBib3JkZXItY29sb3I6I2VlZTsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLmRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIC5kaXZDYXRlZ29yeUJveFdyYXBwZXIgLmRpdkNhclNpbmdsZU91dGVyQm94LmRpdk1ha2VMb2dvT25seSBJTUcgeyBoZWlnaHQ6MTAwJTsgd2lkdGg6YXV0bzsgfSAuZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIgLmRpdkNhdGVnb3J5Qm94V3JhcHBlciAuZGl2Q2FyU2luZ2xlT3V0ZXJCb3g6YWN0aXZlIHsgYm9yZGVyLWNvbG9yOiM2NjY7IH0gLmRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIC5kaXZDYXRlZ29yeUJveFdyYXBwZXIgLmRpdkNhclNpbmdsZU91dGVyQm94IC5kaXZDYXJTaW5nbGVJbm5lckJveHsgbWFyZ2luOjA7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyBmbG9hdDpsZWZ0OyBvcGFjaXR5OjE7IG92ZXJmbG93OmhpZGRlbjsgcG9zaXRpb246cmVsYXRpdmU7IH0gLmRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIC5kaXZDYXRlZ29yeUJveFdyYXBwZXIgLmRpdkNhclNpbmdsZU91dGVyQm94IC5kaXZDYXJTaW5nbGVJbm5lckJveCAuZGl2Q2FyVGl0bGVDb250YWluZXJ7IGNsZWFyOmJvdGg7IHdpZHRoOjc1JTsgfSAuZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIgLmRpdkNhdGVnb3J5Qm94V3JhcHBlciAuZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggLmRpdkNhclNpbmdsZUlubmVyQm94IC5kaXZDYXJUaXRsZUNvbnRhaW5lciBBeyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZGlzcGxheTpibG9jazsgfSAuZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIgLmRpdkNhdGVnb3J5Qm94V3JhcHBlciAuZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggLmRpdkNhclNpbmdsZUlubmVyQm94IC5kaXZDYXJUaXRsZUNvbnRhaW5lciBzcGFuLnNwYW5DYXJNYWtleyBmb250LXdlaWdodDpub3JtYWw7IGZvbnQtc2l6ZToxLjByZW07IGxpbmUtaGVpZ2h0OjEuMnJlbTsgd2lkdGg6YXV0bzsgaGVpZ2h0OmF1dG87IGNvbG9yOiMwMDAwMDA7IH0gLmRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIC5kaXZDYXRlZ29yeUJveFdyYXBwZXIgLmRpdkNhclNpbmdsZU91dGVyQm94IC5kaXZDYXJTaW5nbGVJbm5lckJveCAuZGl2Q2FyVGl0bGVDb250YWluZXIgc3Bhbi5zcGFuTW9kZWxOYW1leyBmb250LXdlaWdodDpib2xkOyBsaW5lLWhlaWdodDoxLjRyZW07IGZvbnQtc2l6ZToxLjRyZW07IHdpZHRoOmF1dG87IGhlaWdodDphdXRvOyBjb2xvcjojMDAyYzVmOyB9IC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIC5kaXZDYXJTaW5nbGVPdXRlckJveCAuZGl2Q2FyU2luZ2xlSW5uZXJCb3ggLmRpdkNhclRpdGxlQ29udGFpbmVyIC5kaXZOZXdDYXJTdGFydFByaWNlLCAuZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIgLmRpdkNhdGVnb3J5Qm94V3JhcHBlciAuZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggLmRpdkNhclNpbmdsZUlubmVyQm94IC5kaXZDYXJUaXRsZUNvbnRhaW5lciAuZGl2TmV3Q2FyUHJvbW9QcmljZXsgZm9udC13ZWlnaHQ6bm9ybWFsOyBmb250LXNpemU6MXJlbTsgd2lkdGg6YXV0bzsgaGVpZ2h0OmF1dG87IGxpbmUtaGVpZ2h0Om5vcm1hbDsgfSAuZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIgLmRpdkNhdGVnb3J5Qm94V3JhcHBlciAuZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggLmRpdkNhclNpbmdsZUlubmVyQm94IC5kaXZDYXJJbWFnZUNvbnRhaW5lcnsgcG9zaXRpb246cmVsYXRpdmU7IHdpZHRoOjEwMCU7IG1hcmdpbi10b3A6MHB4OyBtYXJnaW4tYm90dG9tOi0xMHB4OyBtaW4taGVpZ2h0OjI1MHB4OyB9IC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIC5kaXZDYXJTaW5nbGVPdXRlckJveCAuZGl2Q2FyU2luZ2xlSW5uZXJCb3ggLmRpdkNhckltYWdlQ29udGFpbmVyIEF7IGZsb2F0OmxlZnQ7IGNsZWFyOmJvdGg7IHdpZHRoOjEwMCU7IH0gLmRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIC5kaXZDYXRlZ29yeUJveFdyYXBwZXIgLmRpdkNhclNpbmdsZU91dGVyQm94IC5kaXZDYXJTaW5nbGVJbm5lckJveCAuZGl2Q2FySW1hZ2VDb250YWluZXIgSU1HeyB3aWR0aDoxMDAlOyBoZWlnaHQ6YXV0bzsgfSBkaXYuZGl2Q2FyRm9vdGVyQ29udGFpbmVyeyBwb3NpdGlvbjpyZWxhdGl2ZTsgYm90dG9tOjBweDsgbGVmdDowOyByaWdodDowOyB3aWR0aDoxMDAlOyB9IGRpdi5jYXJQYXltZW50V3JhcHBlcnsgaGVpZ2h0OjZyZW07IH0gLnJlYmF0ZVRhZ3sgcGFkZGluZzo1cHg7IHRleHQtYWxpZ246Y2VudGVyOyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjEwcHg7IHJpZ2h0OjEwcHg7IGJhY2tncm91bmQ6IzAwMmM1ZiFpbXBvcnRhbnQ7IGNvbG9yOiNmZmZmZmYhaW1wb3J0YW50OyB0ZXh0LXNoYWRvdzpub25lIWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czo1cHg7IH0gLnJlYmF0ZVRhZyBzcGFuLnJlYmF0ZVRleHR7IGZvbnQtc2l6ZTowLjhyZW07IGxpbmUtaGVpZ2h0OjFyZW07IH0gLnJlYmF0ZVRhZyBzcGFuLnJlYmF0ZUFtb3VudHsgZGlzcGxheTpibG9jazsgZm9udC13ZWlnaHQ6NzAwOyBmb250LXNpemU6MXJlbTsgbGluZS1oZWlnaHQ6MS4ycmVtOyB9IC5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIC5kaXZDYXJTaW5nbGVPdXRlckJveCAuZGl2Q2FyU2luZ2xlSW5uZXJCb3ggLmRpdkNhclBheW1lbnRDb250YWluZXJ7IHBvc2l0aW9uOnJlbGF0aXZlOyB0ZXh0LWFsaWduOmNlbnRlcjsgYmFja2dyb3VuZC1jb2xvcjojZjNmM2YzOyB3aWR0aDoxMDAlOyBib3JkZXItcmFkaXVzOjAgMCA3cHggN3B4OyBwYWRkaW5nOjEwcHggNXB4OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0gLmRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIC5kaXZDYXRlZ29yeUJveFdyYXBwZXIgLmRpdkNhclNpbmdsZU91dGVyQm94IC5kaXZDYXJTaW5nbGVJbm5lckJveCAuZGl2Q2FyUGF5bWVudENvbnRhaW5lciBheyB0ZXh0LWRlY29yYXRpb246bm9uZTsgcG9zaXRpb246cmVsYXRpdmU7IH0gLmRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIC5kaXZDYXRlZ29yeUJveFdyYXBwZXIgLmRpdkNhclNpbmdsZU91dGVyQm94IC5kaXZDYXJTaW5nbGVJbm5lckJveCAuZGl2Q2FyUGF5bWVudENvbnRhaW5lciAucGF5bWVudExpbmUyeyBmb250LXNpemU6MS4zcmVtOyBjb2xvcjpibGFjazsgfSAuZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIgLmRpdkNhdGVnb3J5Qm94V3JhcHBlciAuZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggLmRpdkNhclNpbmdsZUlubmVyQm94IC5kaXZDYXJQYXltZW50Q29udGFpbmVyIC5wYXltZW50TGluZTIgc3BhbnsgY29sb3I6IzAwMmM1ZjsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAuZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIgLmRpdkNhdGVnb3J5Qm94V3JhcHBlciAuZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggLmRpdkNhclNpbmdsZUlubmVyQm94IC5kaXZDYXJQYXltZW50Q29udGFpbmVyIC5wYXltZW50TGluZTN7IGZvbnQtc2l6ZTowLjlyZW07IGxpbmUtaGVpZ2h0OjFyZW07IGNvbG9yOmdyZXk7IH0gLmRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIC5kaXZDYXRlZ29yeUJveFdyYXBwZXIgLmRpdkNhclNpbmdsZU91dGVyQm94IC5kaXZDYXJTaW5nbGVJbm5lckJveCAuZGl2Q2FyUGF5bWVudENvbnRhaW5lciAucGF5bWVudExpbmUxeyBmb250LXNpemU6MC45cmVtOyBsaW5lLWhlaWdodDoxcmVtOyBjb2xvcjpncmV5OyB9IGRpdi5kaXZDYXRlZ29yaWVzQm94V3JhcHBlciBkaXYuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIGRpdi5kaXZDYXJTaW5nbGVPdXRlckJveCBkaXYuZGl2Q2FyU2luZ2xlSW5uZXJCb3ggZGl2LmRpdkNhckNvbnRhY3RDVEFDb250YWluZXJ7IGJhY2tncm91bmQtY29sb3I6I2ZmZjsgfSBkaXYuZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIgZGl2LmRpdkNhdGVnb3J5Qm94V3JhcHBlciBkaXYuZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggZGl2LmRpdkNhclNpbmdsZUlubmVyQm94IGRpdi5kaXZDYXJQYXltZW50Q29udGFpbmVyV2l0aENUQXsgfSAuZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggLmRpdkNhclBheW1lbnRDb250YWluZXJUb29sdGlweyBkaXNwbGF5OmlubGluZS10YWJsZTsgcGFkZGluZzowIDEwcHg7IGN1cnNvcjpwb2ludGVyOyB9IC5kaXZDYXRlZ29yeUJveFdyYXBwZXIgLmRpdkNhclNpbmdsZU91dGVyQm94IC5kaXZDYXJQYXltZW50Q2FsY3VsYXRvciB7IHBvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjEwJTsgfSAuZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIC5kaXZDYXJTaW5nbGVPdXRlckJveCAucGF5bWVudEluZm9CdWJibGUgeyBwb3NpdGlvbjphYnNvbHV0ZTsgcmlnaHQ6MTAlOyBkaXNwbGF5OmlubGluZS1ibG9jazsgZm9udC1zaXplOjEuNTYzcmVtIDsgdG9wOjMwJTsgY29sb3I6IzAwMDsgfSAuTmV3U3JwMk1vYmlsZSBIMS5kZWZhdWx0eyBmb250LXNpemU6MS43cmVtOyBsaW5lLWhlaWdodDoxLjdyZW07IGNvbG9yOiMwMDAwMDA7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgY2xlYXI6Ym90aDsgcGFkZGluZzowIDAgMTBweCAwOyB3aWR0aDoxMDAlOyBtYXJnaW4tYm90dG9tOjEwcHg7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNkZGQ7IH0gLk5ld1NycDJNb2JpbGUgSDEuZGVmYXVsdCBBeyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSAuTmV3U3JwMk1vYmlsZSBIMS5kZWZhdWx0IEkuaWNvbiB7IGJvcmRlci1yYWRpdXM6MzJweDsgd2lkdGg6MzJweDsgaGVpZ2h0OjMycHg7IHBhZGRpbmctdG9wOjA7IHBhZGRpbmctbGVmdDoxMHB4OyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MS4xMjVyZW0gOyBtYXJnaW4tcmlnaHQ6NXB4OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OjMwcHg7IGJvcmRlcjoxcHggc29saWQgIzAwMDAwMDsgY29sb3I6IzAwMDAwMDsgYmFja2dyb3VuZC1jb2xvcjojZTRkY2QzOyB9IC5OZXdTcnAyTW9iaWxlIEgxLmRlZmF1bHQgSS5pY29uLm11bHRpTGluZUgxeyBtYXJnaW4tdG9wOjBweDsgfSAuTmV3U3JwMk1vYmlsZSBIMS5kZWZhdWx0IEkuaWNvbi5zaW5nbGVMaW5lSDF7IG1hcmdpbi10b3A6MHB4OyB9IC5OZXdTcnAyTW9iaWxlIEgxLmRlZmF1bHQgPiBESVZ7IGRpc3BsYXk6dGFibGUtcm93OyB9IC5OZXdTcnAyTW9iaWxlIEgxLmRlZmF1bHQgPiBESVYgRElWOm50aC1jaGlsZCgxKXsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAuTmV3U3JwMk1vYmlsZSBIMS5kZWZhdWx0ID4gRElWIERJVjpudGgtY2hpbGQoMil7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgY29sb3I6Izc1NzU3NTsgZm9udC1zaXplOjEuMXJlbTsgbGluZS1oZWlnaHQ6MS4ycmVtOyB9IC5OZXdTcnAyTW9iaWxlIEgxLmRlZmF1bHQgPiBESVYgRElWOm50aC1jaGlsZCgzKXsgZm9udC1zaXplOjAuOHJlbTsgY29sb3I6I2JiYjsgcGFkZGluZy10b3A6NXB4OyB9IC5OZXdTcnAyTW9iaWxlIEgyLmRlZmF1bHR7IGZvbnQtc2l6ZToxLjRyZW07IGxpbmUtaGVpZ2h0OjEuNHJlbTsgY29sb3I6IzAwMDAwMDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBjbGVhcjpib3RoOyBwYWRkaW5nOjIwcHggMDsgbWFyZ2luOjA7IH0gLk5ld1NycDJNb2JpbGUgSDIuZGVmYXVsdCBJLmljb24geyBib3JkZXItcmFkaXVzOjI4cHg7IHdpZHRoOjI4cHg7IGhlaWdodDoyOHB4OyBwYWRkaW5nLXRvcDowOyBwYWRkaW5nLWxlZnQ6OXB4OyBmbG9hdDpsZWZ0OyBmb250LXNpemU6MXJlbSA7IGxpbmUtaGVpZ2h0OjI2cHg7IG1hcmdpbi1yaWdodDo1cHg7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgYm9yZGVyOjFweCBzb2xpZCAjMDAwMDAwOyBjb2xvcjojMDAwMDAwOyBiYWNrZ3JvdW5kLWNvbG9yOiNlNGRjZDM7IH0gLk5ld1NycDJNb2JpbGUgSDIuZGVmYXVsdCBJLmljb24ubXVsdGlMaW5lSDJ7IG1hcmdpbi10b3A6MHB4OyB9IC5OZXdTcnAyTW9iaWxlIEgyLmRlZmF1bHQgSS5pY29uLnNpbmdsZUxpbmVIMnsgbWFyZ2luLXRvcDowcHg7IH0gLk5ld1NycDJNb2JpbGUgSDIuZGVmYXVsdCA+IERJVnsgZGlzcGxheTp0YWJsZS1yb3c7IH0gLk5ld1NycDJNb2JpbGUgSDIuZGVmYXVsdCA+IERJViBESVY6bnRoLWNoaWxkKDEpeyBmb250LXdlaWdodDpib2xkOyB9IC5OZXdTcnAyTW9iaWxlIEgyLmRlZmF1bHQgPiBESVYgRElWOm50aC1jaGlsZCgyKXsgZm9udC13ZWlnaHQ6bm9ybWFsOyBjb2xvcjojNzU3NTc1OyBmb250LXNpemU6MXJlbTsgbGluZS1oZWlnaHQ6MXJlbTsgfSAuTmV3U3JwMi5OZXdTcnAyTW9iaWxlIGRpdi5NYWluQm94TGF5ZXIgZGl2Lk91dGVyQm94TGF5ZXIgeyBwYWRkaW5nOjEwcHg7IGZsb2F0OmxlZnQ7IHdpZHRoOjEwMCU7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfSAuY2FyX3RleHQgYSB7dGV4dC1kZWNvcmF0aW9uOm5vbmU7IGNvbG9yOiMwMDAwMDA7IGxpbmUtaGVpZ2h0OjEuMTt9IC5jYXJfdGV4dCBhOmhvdmVyIHsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgY29sb3I6IzAwMDAwMH0gLmRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIC5kaXZDYXRlZ29yeUJveFdyYXBwZXIgLmRpdkNhclNpbmdsZU91dGVyQm94IC5kaXZDYXJTaW5nbGVJbm5lckJveCAuZGl2Q2FyVGl0bGVDb250YWluZXIgLmRpdkNhckluU3RvY2tMaW5reyBiYWNrZ3JvdW5kLWNvbG9yOiNlZmVmZWY7IHBhZGRpbmc6M3B4IDhweDsgYm9yZGVyLXJhZGl1czozcHg7IHdpZHRoOmZpdC1jb250ZW50OyBjb2xvcjojMDAwOyBtYXJnaW4tdG9wOjEwcHg7IHBvc2l0aW9uOnJlbGF0aXZlOyB6LWluZGV4OjM7IH0gLmRpdkNhdGVnb3JpZXNCb3hXcmFwcGVyIC5kaXZDYXRlZ29yeUJveFdyYXBwZXIgLmRpdkNhclNpbmdsZU91dGVyQm94IC5kaXZDYXJTaW5nbGVJbm5lckJveCAuZGl2Q2FyVGl0bGVDb250YWluZXIgLmRpdkNhckluU3RvY2tMaW5rIGF7IGNvbG9yOiMwMDA7IH0gLmRpdkRpc2NsYWltZXJCbG9ja3sgYmFja2dyb3VuZC1jb2xvcjojZjVmNWY1OyBib3JkZXItcmFkaXVzOjNweDsgfSAuZGl2RGlzY2xhaW1lckJsb2NrQ29udGVudHsgcGFkZGluZzoxNXB4IDA7IH0gLmRpdkRpc2NsYWltZXJCbG9ja1RpdGxleyBoZWlnaHQ6YXV0bzsgZGlzcGxheTpibG9jazsgZm9udC13ZWlnaHQ6Ym9sZDsgcGFkZGluZzowIDQwcHggMTBweDsgYmFja2dyb3VuZDpub25lOyBtYXJnaW46MDsgfSAuZGl2RGlzY2xhaW1lckJsb2NrVGV4dHsgcGFkZGluZzowIDQwcHg7IGJhY2tncm91bmQ6bm9uZTsgbWFyZ2luOjA7IH0gLmRpdkZpbHRlck91dGVyQm94IC5kaXZGaWx0ZXJUaXRsZXsgZm9udC13ZWlnaHQ6Ym9sZDsgcGFkZGluZy1ib3R0b206MTBweDsgcGFkZGluZy10b3A6MjBweDsgZm9udC1zaXplOjFyZW0gOyB9IC5kaXZGaWx0ZXJPdXRlckJveCB1bCBsaSAuZmlsdGVyQ2hlY2ssIC5kaXZGaWx0ZXJPdXRlckJveCB1bCBsaSAucmFkaW9Tb3J0eyBwb3NpdGlvbjphYnNvbHV0ZTsgb3BhY2l0eTowOyB3aWR0aDoxcHg7IGhlaWdodDoxcHg7IG92ZXJmbG93OmhpZGRlbjsgY2xpcDpyZWN0KDAgMCAwIDApOyB9IC5kaXZGaWx0ZXJPdXRlckJveCB1bCBsaSAuZmlsdGVyQ2hlY2srLmZpbHRlclNwYW4sIC5kaXZGaWx0ZXJPdXRlckJveCB1bCBsaSAucmFkaW9Tb3J0Ky5maWx0ZXJTcGFueyBiYWNrZ3JvdW5kLWNvbG9yOiNGNkY2RjY7IGNvbG9yOiMzMzMzMzM7IH0gLmRpdkZpbHRlck91dGVyQm94IHVsIGxpIC5maWx0ZXJDaGVjazpjaGVja2VkKy5maWx0ZXJTcGFuLCAuZGl2RmlsdGVyT3V0ZXJCb3ggdWwgbGkgLnJhZGlvU29ydDpjaGVja2VkKy5maWx0ZXJTcGFueyBiYWNrZ3JvdW5kLWNvbG9yOiM2NjY2NjY7IGNvbG9yOiNGRkY7IH0gLmRpdkZpbHRlck91dGVyQm94IHVsIHsgZGlzcGxheTpmbGV4OyBmbGV4LXdyYXA6d3JhcDsgY29sdW1uLWdhcDoxMHB4OyByb3ctZ2FwOjVweDsgcGFkZGluZzowOyBtYXJnaW46MDsgYWxpZ24taXRlbXM6c3RyZXRjaDsgfSAuZGl2RmlsdGVyT3V0ZXJCb3ggdWwgbGl7IGZsZXg6MCAwIGNhbGMoNTAlIC0gNXB4KTsgYm94LXNpemluZzpib3JkZXItYm94OyB9IC5kaXZGaWx0ZXJPdXRlckJveCB1bCBsaSAuZmlsdGVyU3BhbnsgZGlzcGxheTpmbGV4OyBwYWRkaW5nOjdweCAyMHB4OyBib3JkZXI6bm9uZTsgYm9yZGVyLXJhZGl1czo1cHg7IGN1cnNvcjpwb2ludGVyOyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IHRyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAwLjNzIGVhc2U7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgbWFyZ2luLXRvcDo1cHg7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IH0gLk1haW5Cb3hMYXllciAuZmlsdGVyVG9nZ2xlV3JhcHBlciAuZmlsdGVyVG9nZ2xlQnRuIHsgZGlzcGxheTppbmxpbmUtYmxvY2s7IHBhZGRpbmc6MTBweCAyMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiMwMDJjNWY7IGNvbG9yOiNmZmZmZmY7IGJvcmRlcjpub25lOyBib3JkZXItcmFkaXVzOjVweDsgY3Vyc29yOnBvaW50ZXI7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXNpemU6MXJlbSA7IHRyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAwLjNzIGVhc2U7IHdpZHRoOjEwMCU7IHRleHQtZGVjb3JhdGlvbjpub25lIWltcG9ydGFudDsgfSAuTWFpbkJveExheWVyIC5zZWxlY3RUb2dnbGVXcmFwcGVyeyBkaXNwbGF5OmZsZXg7IGZsZXgtd3JhcDp3cmFwOyBjb2x1bW4tZ2FwOjEwcHg7IHJvdy1nYXA6NXB4OyBwYWRkaW5nOjA7IG1hcmdpbjowOyBhbGlnbi1pdGVtczpzdHJldGNoOyB9IC5NYWluQm94TGF5ZXIgLnNlbGVjdFRvZ2dsZVdyYXBwZXIgLnNlbGVjdEFsbFRvZ2dsZUJ0biwgLk1haW5Cb3hMYXllciAuc2VsZWN0VG9nZ2xlV3JhcHBlciAudW5zZWxlY3RBbGxUb2dnbGVCdG4geyBkaXNwbGF5OmlubGluZS1ibG9jazsgcGFkZGluZzoxMHB4IDNweDsgYmFja2dyb3VuZC1jb2xvcjojMDAyYzVmOyBjb2xvcjojZmZmZmZmOyBib3JkZXI6bm9uZTsgYm9yZGVyLXJhZGl1czo1cHg7IGN1cnNvcjpwb2ludGVyOyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC1zaXplOjFyZW0gOyB0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgMC4zcyBlYXNlOyB0ZXh0LWRlY29yYXRpb246bm9uZSFpbXBvcnRhbnQ7IGZsZXg6MCAwIGNhbGMoNTAlIC0gNXB4KTsgYm94LXNpemluZzpib3JkZXItYm94OyB9IC5kaXZGaWx0ZXJPdXRlckJveCBkaXYuZGl2UHJpY2VSYW5nZVNsaWRlciB7IG1hcmdpbjowcHggMCA0MHB4IDAhaW1wb3J0YW50OyB9IC5kaXZQcmljZVJhbmdlU2xpZGVyID4gLmRpdlNwYW4uZGl2U3BhbjEyOm5vdCguZGl2RmlsdGVyVGl0bGUpIHsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IH0gLmRpdlByaWNlUmFuZ2VTbGlkZXIgLnJhbmdlLXNsaWRlci1sZWZ0LCAuZGl2UHJpY2VSYW5nZVNsaWRlciAucmFuZ2Utc2xpZGVyLXJpZ2h0IHsgd2lkdGg6YXV0bzsgbWluLXdpZHRoOjQwcHg7IHRleHQtYWxpZ246Y2VudGVyOyB9IC5kaXZQcmljZVJhbmdlU2xpZGVyIC5yYW5nZS1zbGlkZXIudWktc2xpZGVyIHsgZmxleDoxIDEgYXV0bzsgbWF4LXdpZHRoOjUwMHB4OyB9IC5NYWluQm94TGF5ZXIgLnNpZGVTaWRlYmFyIHsgcG9zaXRpb246Zml4ZWQ7IHRvcDowOyBsZWZ0OjA7IHdpZHRoOjMwMHB4OyBoZWlnaHQ6MTAwJTsgYmFja2dyb3VuZC1jb2xvcjojZmZmOyBib3gtc2hhZG93Oi0ycHggMCA4cHggcmdiYSgwLDAsMCwwLjMpOyBwYWRkaW5nOjAgMjBweCAyMHB4IDIwcHg7IHotaW5kZXg6MTAwMDsgb3ZlcmZsb3cteTphdXRvOyBvdmVyZmxvdy14OmhpZGRlbjsgbWF4LXdpZHRoOjEwMCU7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwMCUpOyB0cmFuc2l0aW9uOnRyYW5zZm9ybSAwLjNzIGVhc2U7IH0gLk1haW5Cb3hMYXllciAuc2lkZVNpZGViYXIub3BlbiB7IHRyYW5zZm9ybTp0cmFuc2xhdGVYKDApOyBkaXNwbGF5OmJsb2NrOyB9IC5NYWluQm94TGF5ZXIgLmNsb3NlQnRuIHsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDoxMHB4OyByaWdodDotMTBweDsgZm9udC1zaXplOjEuNXJlbSA7IGJhY2tncm91bmQ6bm9uZTsgYm9yZGVyOm5vbmU7IGN1cnNvcjpwb2ludGVyOyB6LWluZGV4OjExOyB9IC5NYWluQm94TGF5ZXIgLnNpZGVTaWRlYmFyIC5kaXZGaWx0ZXJCb3hUaXRsZXsgZm9udC13ZWlnaHQ6Ym9sZDsgZm9udC1zaXplOjEuMTI1cmVtIDsgcG9zaXRpb246c3RpY2t5OyB0b3A6MDsgYmFja2dyb3VuZC1jb2xvcjojZmZmOyB6LWluZGV4OjEwOyBwYWRkaW5nOjEwcHggMCAwIDA7IH0gLk1haW5Cb3hMYXllciAuc2lkZVNpZGViYXIgLnNpZGViYXJIZWFkZXIgeyBwb3NpdGlvbjpzdGlja3k7IHRvcDowOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7IHotaW5kZXg6MTAwOyBwYWRkaW5nOjEwcHggMCAwIDA7IGRpc3BsYXk6ZmxleDsganVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47IGFsaWduLWl0ZW1zOmNlbnRlcjsgfQovKiogL2Nzcy9yZWQuY3NzICoqLwoubWVudSB1bCBsaSBhLCAubWVudSB1bCBsaSBhOmhvdmVyeyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NHB4OyAtbW96LWJvcmRlci1yYWRpdXM6NHB4OyBib3JkZXItcmFkaXVzOjRweDsgY29sb3I6I2ZmZmZmZjsgZmlsbDojZmZmZmZmOyB0ZXh0LWFsaWduOmxlZnQ7IHRleHQtZGVjb3JhdGlvbjpub25lOyBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MS4xZW07IGZvbnQtd2VpZ2h0OmJvbGQ7IHBhZGRpbmc6NXB4IDAgNXB4IDdweDsgYmFja2dyb3VuZDojMDAyYzVmOyB9IC50b3BuYXYgLm1lbnUgdWwgbGkgYXsgYmFja2dyb3VuZDojZmZmZmZmOyBjb2xvcjojMDAyYzVmOyBmaWxsOiMwMDJjNWY7IH0gLm1lbnUgdWwgbGkgYTpob3ZlcnsgYm9yZGVyLXJhZGl1czozcHggM3B4IDBweCAwcHg7IH0gLm1lbnUgLnByb21vIHsgbWFyZ2luOmluaXRpYWw7IG1pbi1oZWlnaHQ6YXV0bzsgfSAubWVudS5idXJnZXItYnRuLWNvbnRhaW5lciB1bCBsaSBhLCAubWVudS5idXJnZXItYnRuLWNvbnRhaW5lciB1bCBsaSBhOmhvdmVyeyBib3JkZXItcmFkaXVzOjA7IH0gLm1vYmlsZUJ1dHRvbnsgY29sb3I6cmdiKDAsMCwwKSAhaW1wb3J0YW50OyBiYWNrZ3JvdW5kOnJnYigyMjgsMjIwLDIxMSkhaW1wb3J0YW50OyB9IC5tZW51IHVsIGxpIGEuYmxhY2sge2JhY2tncm91bmQ6IzIyMjt9IC5oLWJ1dHRvbnMgdWwgbGkgYS5ibGFjayB7YmFja2dyb3VuZDojMDAwO2NvbG9yOiNGRkZGRkZ9IC5oLWJ1dHRvbnMge30gLmgtYnV0dG9ucyB1bCBsaSB7ZmxvYXQ6bGVmdDsgbGlzdC1zdHlsZTpub25lOyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbWFyZ2luOjAgMCAxMHB4IDBweDtkaXNwbGF5OmJsb2NrOyB0ZXh0LWFsaWduOmNlbnRlcjt9IC5oLWJ1dHRvbnMgdWwgbGkgYSB7IGJhY2tncm91bmQtY29sb3I6cmdiKDIyOCwyMjAsMjExKTsgY29sb3I6I2ZmZjsgZm9udC13ZWlnaHQ6Ym9sZDsgZGlzcGxheTpibG9jazsgcGFkZGluZzo1cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo2cHg7IC1tb3otYm9yZGVyLXJhZGl1czo2cHg7IGJvcmRlci1yYWRpdXM6NnB4OyBtaW4td2lkdGg6OTVweDsgfSAuZGVhbGVycGhvbmUgdWwgbGkgYSB7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7IC1tb3otYm9yZGVyLXJhZGl1czo0cHg7IGJvcmRlci1yYWRpdXM6NHB4OyBjb2xvcjojZmZmOyB0ZXh0LWFsaWduOmxlZnQ7IHRleHQtZGVjb3JhdGlvbjpub25lOyBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MS4xZW07IGZvbnQtd2VpZ2h0OmJvbGQ7IHBhZGRpbmc6MTBweDsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyBiYWNrZ3JvdW5kLXNpemU6MjVweDsgYmFja2dyb3VuZC1wb3NpdGlvbjo5OCUgNnB4OyBiYWNrZ3JvdW5kLWNvbG9yOiNkMDA7IGJhY2tncm91bmQtaW1hZ2U6dXJsKC9pbWFnZXMvYXJyb3cucG5nKTsgfSAubWVudSBsaS5pbnZlcnNlLWNvbG9yID4gYSB7IGNvbG9yOiNmZmZmZmY7IGJhY2tncm91bmQtY29sb3I6IzAwN2ZhNTsgYm9yZGVyOjFweCBzb2xpZDsgfSAjY2hhdC13aWRnZXQtY29udGFpbmVyLCAjbGl2ZV9jaGF0X3N0YXR1cywgI0NoYXREaXYsICNwb2RpdW0tYnViYmxlLCAjamNvbnQsIGpkaXYsICN0c3dfd3JhcHBlciwgLmZiX2RpYWxvZywgLmZiX2lmcmFtZV93aWRnZXQsIC5mYi1jdXN0b21lcmNoYXQsIC5lay1jaGF0LCAubWF0YWRvci1saXZlY2hhdC0xMjM3ODktbWFpbi13cmFwcGVyLCAjbWF0YWRvci1jb25uZWN0LXRleHQtbGFiZWwsICNtYXRhZG9yLWNvbm5lY3QtdGV4dC1sYWJlbC1iYWRnZXsgei1pbmRleDoxMDAwMCAhaW1wb3J0YW50OyB9IHN2Zy5jaGF0LWJ1YmJsZXsgd2lkdGg6cmV2ZXJ0OyBoZWlnaHQ6cmV2ZXJ0OyB9IC5Vc2VkU3JwMk1vYmlsZSBpZnJhbWUjcG9kaXVtLWJ1YmJsZXsgYm90dG9tOjNyZW0gIWltcG9ydGFudDsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIC50cmFkZUluQmFyTXVsdGlzZWxlY3R7IG1pbi13aWR0aDoyMjVweDsgbWF4LXdpZHRoOjEwMCUhaW1wb3J0YW50OyB9IC51aS1tdWx0aXNlbGVjdC1tZW51LnRyYWRlSW5CYXJNdWx0aXNlbGVjdHsgei1pbmRleDoxMDAwMDIwOyBtYXgtaGVpZ2h0OjExMHB4OyBvdmVyZmxvdzpzY3JvbGw7IH0gLm11bHRpc2VsZWN0VmVoaWNsZU9wdGlvbnN7IG1hcmdpbi10b3A6NXB4OyB9IC5tdWx0aXNlbGVjdFZlaGljbGVPcHRpb25zIHNwYW57IGZvbnQtc2l6ZTowLjkzOHJlbSAhaW1wb3J0YW50OyBwYWRkaW5nOjAgIWltcG9ydGFudDsgbWFyZ2luOjAgIWltcG9ydGFudDsgfSAudHJhZGluTml2eyB3aWR0aDoxMDAlOyBwYWRkaW5nOjAuNHJlbTsgYm9yZGVyOjFweCBzb2xpZCAjYTlhOWE5OyBib3JkZXItcmFkaXVzOjVweDsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIC50cmFkaW5OaXZ7IHdpZHRoOjEwMCU7IHBhZGRpbmc6MC41cmVtOyBib3JkZXI6MXB4IHNvbGlkICNhOWE5YTk7IGJvcmRlci1yYWRpdXM6NXB4OyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgLm5pdk1ha2VNb2RlbFNlbGVjdENvbnRhaW5lcnsgd2lkdGg6MTAwJTsgZm9udC1zaXplOjAuNzVyZW0gOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgLm5pdk1ha2VNb2RlbFNlbGVjdENvbnRhaW5lciAubml2TWFrZU1vZGVsU2VsZWN0eyBkaXNwbGF5Om5vbmU7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAubml2TWFrZU1vZGVsU2VsZWN0Q29udGFpbmVyIC5uaXZNYWtlTW9kZWxTZWxlY3RMYWJlbHsgZGlzcGxheTppbmxpbmUtYmxvY2s7IG1hcmdpbjowIDVweDsgY3Vyc29yOnBvaW50ZXI7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAubml2TWFrZU1vZGVsU2VsZWN0Q29udGFpbmVyIC5uaXZNYWtlTW9kZWxTZWxlY3Q6Y2hlY2tlZCtsYWJlbHsgYm9yZGVyLWJvdHRvbToycHggc29saWQgYmxhY2s7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAudHJhZGVJbkJhck11bHRpc2VsZWN0eyB3aWR0aDoxMDAlIWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czowLjNyZW0haW1wb3J0YW50OyBib3JkZXItd2lkdGg6MXB4IWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czowLjNyZW0haW1wb3J0YW50OyBib3JkZXItY29sb3I6I2E5YTlhOSFpbXBvcnRhbnQ7IHBhZGRpbmc6MC4zcmVtIWltcG9ydGFudDsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIC50cmFkaW5TZWxlY3RQb3B1cHsgY29sb3I6IzNjMzgzNjsgZm9udC1zaXplOjFyZW07IGJhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwxKTsgYmFja2dyb3VuZC1wb3NpdGlvbjo5NSUgNTAlOyAtd2Via2l0LWFwcGVhcmFuY2U6bm9uZTsgLW1vei1hcHBlYXJhbmNlOm5vbmU7IG1hcmdpbjo1cHggMCAwOyBwYWRkaW5nOjAuM3JlbSFpbXBvcnRhbnQ7IH0KLyoqIC9jc3MvZGl2X3Jhbmdlc2xpZGVyLmNzcyAqKi8KZGl2LmRpdlByaWNlUmFuZ2VTbGlkZXJ7IG1hcmdpbjowIDAgMTBweCAwOyBwYWRkaW5nOjA7IH0gZGl2LmRpdlByaWNlUmFuZ2VTbGlkZXIgZGl2LnJhbmdlLXNsaWRlci10aXRsZXsgZm9udC13ZWlnaHQ6Ym9sZDsgcGFkZGluZzowIDAgMTBweCAwOyB9IGRpdi5kaXZQcmljZVJhbmdlU2xpZGVyIGRpdi5yYW5nZS1zbGlkZXItcHJpY2VzeyBwYWRkaW5nOjAgMCAxNXB4IDA7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IH0gZGl2LmRpdlByaWNlUmFuZ2VTbGlkZXIgZGl2LnJhbmdlLXNsaWRlci1wcmljZXMgc3Bhbi5wcmljZS1taW57fSBkaXYuZGl2UHJpY2VSYW5nZVNsaWRlciBkaXYucmFuZ2Utc2xpZGVyLXByaWNlcyBzcGFuLnByaWNlLW1heHt9IGRpdi5kaXZQcmljZVJhbmdlU2xpZGVyIGRpdi5yYW5nZS1zbGlkZXJ7IGJvcmRlci1yYWRpdXM6NXB4ICFpbXBvcnRhbnQ7IGhlaWdodDoxMHB4OyBtYXJnaW46NHB4IDZweCAwIC0zcHg7IHBhZGRpbmc6MDsgYm9yZGVyOjFweCBzb2xpZCAjY2NjOyB9IGRpdi5kaXZQcmljZVJhbmdlU2xpZGVyIGRpdi5yYW5nZS1zbGlkZXItbGVmdCwgZGl2LmRpdlByaWNlUmFuZ2VTbGlkZXIgZGl2LnJhbmdlLXNsaWRlci1yaWdodHsgZm9udC1zaXplOjAuNzVyZW0gOyBsaW5lLWhlaWdodDoyMHB4OyBjb2xvcjojNzU3NTc1OyB9IGRpdi5kaXZQcmljZVJhbmdlU2xpZGVyIGRpdi5yYW5nZS1zbGlkZXItbGVmdHsgdGV4dC1hbGlnbjpsZWZ0OyB9IGRpdi5kaXZQcmljZVJhbmdlU2xpZGVyIGRpdi5yYW5nZS1zbGlkZXItcmlnaHR7IHRleHQtYWxpZ246cmlnaHQ7IH0gZGl2LmRpdlByaWNlUmFuZ2VTbGlkZXIgZGl2LnJhbmdlLXNsaWRlciBkaXYudWktc2xpZGVyLXJhbmdleyBiYWNrZ3JvdW5kOiNlNGRjZDMhaW1wb3J0YW50OyB9IGRpdi5kaXZQcmljZVJhbmdlU2xpZGVyIGRpdi5yYW5nZS1zbGlkZXIgQS51aS1zbGlkZXItaGFuZGxlLCBkaXYuZGl2UHJpY2VSYW5nZVNsaWRlciBkaXYucmFuZ2Utc2xpZGVyIHNwYW4udWktc2xpZGVyLWhhbmRsZXsgbWFyZ2luOi04cHggMCAwIC0xMXB4OyBib3JkZXI6MXB4IHNvbGlkICNjY2M7IHBhZGRpbmc6MCAhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOjUwcHggIWltcG9ydGFudDsgYmFja2dyb3VuZDojZmZmICFpbXBvcnRhbnQ7IHRvcDowOyBoZWlnaHQ6MjVweDsgd2lkdGg6MjVweDsgY3Vyc29yOnBvaW50ZXI7IG91dGxpbmU6bm9uZSAhaW1wb3J0YW50OyB9IGRpdi5kaXZQcmljZVJhbmdlU2xpZGVyIGRpdi5yYW5nZS1zbGlkZXIgQS51aS1zbGlkZXItaGFuZGxlLnVpLXN0YXRlLWhvdmVyLCBkaXYuZGl2UHJpY2VSYW5nZVNsaWRlciBkaXYucmFuZ2Utc2xpZGVyIEEudWktc2xpZGVyLWhhbmRsZS51aS1zdGF0ZS1hY3RpdmUsIGRpdi5kaXZQcmljZVJhbmdlU2xpZGVyIGRpdi5yYW5nZS1zbGlkZXIgc3Bhbi51aS1zbGlkZXItaGFuZGxlLnVpLXN0YXRlLWhvdmVyLCBkaXYuZGl2UHJpY2VSYW5nZVNsaWRlciBkaXYucmFuZ2Utc2xpZGVyIHNwYW4udWktc2xpZGVyLWhhbmRsZS51aS1zdGF0ZS1hY3RpdmV7IGJvcmRlci1jb2xvcjojNjY2OyB9IGRpdi5kaXZQcmljZVJhbmdlU2xpZGVyIGRpdi5yYW5nZS1zbGlkZXIgQS51aS1zbGlkZXItaGFuZGxlLnVpLXN0YXRlLWZvY3VzLCBkaXYuZGl2UHJpY2VSYW5nZVNsaWRlciBkaXYucmFuZ2Utc2xpZGVyIHNwYW4udWktc2xpZGVyLWhhbmRsZS51aS1zdGF0ZS1mb2N1c3sgb3V0bGluZTpub25lICFpbXBvcnRhbnQ7IH0KLyoqIC9jc3MvcGF5bWVudENhbGN1bGF0b3IuY3NzICoqLwo6aXMoI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyLCNmaW5hbmNlTXVsdGlzdGVwTmV3Q2FsY3VsYXRvcikuY2FsYy1tb2JpbGUgeyAtLXdyYXAtcGF5bWVudHM6d3JhcDsgLS1tb2JpbGUtZGlzcGxheTpub25lOyAtLW1vYi1mdWxsLXdpZHRoOjEwMCU7IC0tcGF5bWVudC1taW4td2lkdGg6Ni4zcmVtOyAtLWhlYWRlci1mb250LXNpemU6dmFyKC0tZnMyKTsgLS1oZWFkZXItaWNvbi1zaXplOnZhcigtLWZzNSk7IH0gI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyeyBtaW4taGVpZ2h0OjQ1MHB4OyBjb2xvcjpibGFjazsgfSAjcGF5bWVudENhbGN1bGF0b3JQb3B1cENvbnRhaW5lcnsgYm9yZGVyOjRweCBzb2xpZCAjZTRkY2QzOyB9ICNwYXltZW50Q2FsY3VsYXRvclBvcHVwQ29udGFpbmVyOmhhcyguY2FsYy1tb2JpbGUpeyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0gI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyLmNhbGMtbW9iaWxlIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXIsICNmaW5hbmNlTXVsdGlzdGVwTmV3Q2FsY3VsYXRvci5jYWxjLW1vYmlsZSAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyeyBvdmVyZmxvdy14OnZpc2libGU7IG92ZXJmbG93LXk6c2Nyb2xsOyBoZWlnaHQ6MzcwcHg7IGZsZXgtd3JhcDp3cmFwOyB9IC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXIsIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXJXaXRoVGF4ZXMgeyBvdmVyZmxvdy14OnNjcm9sbDsgZGlzcGxheTpmbGV4OyBnYXA6MTBweDsgfSAuZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lciwgLmZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXJXaXRoVGF4ZXMgeyB3aWR0aDoxMDAlOyB9IC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXIuYm94ZXM0eyB3aWR0aDo2NCU7IH0gLmZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXIuYm94ZXM0LCAuZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcldpdGhUYXhlcy5ib3hlczR7IHdpZHRoOjgwJTsgfSAucmV2ZWFsLW1vZGFsIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXIgc3BhbiwgLnJldmVhbC1tb2RhbCAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyV2l0aFRheGVzIHNwYW57IHBhZGRpbmc6MCFpbXBvcnRhbnQ7IG1hcmdpbi1ib3R0b206MCFpbXBvcnRhbnQ7IGNvbG9yOmluaGVyaXQ7IGZvbnQtc2l6ZTppbmhlcml0OyB9IC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRXcmFwcGVyeyBtYXJnaW4tYm90dG9tOnZhcigtLXMpOyB9ICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lci5jYWxjLW1vYmlsZSAucGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlcnsgbWFyZ2luLWJvdHRvbTowOyB9IC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRDb250YWluZXIuYm94ZXM0IC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRXcmFwcGVyLCAucGF5bWVudENhbGN1bGF0b3JQYXltZW50Q29udGFpbmVyV2l0aFRheGVzLmJveGVzNCAucGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlcnsgd2lkdGg6MjQlOyB9IC5wYXltZW50Q2FsY3VsYXRvckxpbmV7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkIGdyZXk7IG1hcmdpbjoxMHB4IDA7IH0gLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudExpbmUxeyBmb250LXNpemU6MC42ODhyZW0gOyB9IC5yZXZlYWwtbW9kYWwgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudExpbmUxIHNwYW57IGZvbnQtc2l6ZToxLjc1cmVtIDsgY29sb3I6IzAwMmM1ZjsgfSAucGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlciAucGF5bWVudENhbGN1bGF0b3JQYXltZW50TGluZTJ7IGZvbnQtc2l6ZTowLjc1cmVtIDsgfSAucmV2ZWFsLW1vZGFsIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRXcmFwcGVyIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRMaW5lMiBzcGFueyBmb250LXNpemU6MS4zNzVyZW0gOyB9IC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRXcmFwcGVyIC5wYXltZW50Q2FsY3VsYXRvclBheW1lbnRMaW5lM3sgZm9udC1zaXplOjAuNzVyZW0gOyB9IC5yZXZlYWwtbW9kYWwgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXIgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudExpbmUzIHNwYW57IGZvbnQtc2l6ZToxLjI1cmVtIDsgfSAucGF5bWVudENhbGN1bGF0b3JQYXltZW50V3JhcHBlciAucGF5bWVudENhbGN1bGF0b3JQYXltZW50TGluZTR7IGZvbnQtc2l6ZTowLjc1cmVtIDsgY29sb3I6Z3JleTsgd2hpdGUtc3BhY2U6bm9ybWFsOyB9ICNwYXltZW50Q2FsY3VsYXRvclZlaGljbGVJbWFnZURpdnsgbWF4LXdpZHRoOjMzJTsgcG9zaXRpb246YWJzb2x1dGU7IHJpZ2h0OjA7IHRvcDotNTAlOyBkaXNwbGF5OnZhcigtLW1vYmlsZS1kaXNwbGF5LCBpbml0aWFsKTsgfSAucGF5bWVudENhbGN1bGF0b3JPcHRpb25Db250YWluZXJ7IHdpZHRoOm1heCh2YXIoLS1tb2ItZnVsbC13aWR0aCwgNjYlKSwgMjByZW0pOyB9IC5jYWxjLXBheW1lbnRzeyBtYXgtd2lkdGg6dmFyKC0tbW9iLWZ1bGwtd2lkdGgsIDY2JSk7IH0gLmNhbGMtcGF5bWVudHMgOmlzKC5wcmljZS1mciwgLnByaWNlLWVuKXsgdGV4dC1hbGlnbjpyZXZlcnQ7IG1pbi13aWR0aDp1bnNldDsgfSAucGF5bWVudENhbGN1bGF0b3JQYXltZW50VHlwZUNvbnRhaW5lcnsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2NjY2NjYzsgfSAuZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGVDb250YWluZXJ7IG1hcmdpbi1ib3R0b206MTBweDsgfSAucGF5bWVudENhbGN1bGF0b3JQYXltZW50VHlwZXsgbGlzdC1zdHlsZTpub25lOyBwYWRkaW5nOjAgMDsgZGlzcGxheTppbmxpbmUtYmxvY2s7IH0gLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGUgbGl7IHBhZGRpbmc6MTBweDsgZmxvYXQ6bGVmdDsgbWluLXdpZHRoOjVyZW07IGN1cnNvcjpwb2ludGVyOyBib3JkZXItcmFkaXVzOjVweCA1cHggMCAwOyBib3JkZXItYm90dG9tOjBweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGJhY2tncm91bmQtY29sb3I6d2hpdGU7IH0gLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFR5cGUgbGk6aG92ZXJ7IGJhY2tncm91bmQtY29sb3I6I2Q5ZDlkOTsgfSAucGF5bWVudENhbGN1bGF0b3JQYXltZW50VHlwZSBsaS5hY3RpdmVQYXltZW50VHlwZXsgYmFja2dyb3VuZC1jb2xvcjojOTg5ODk4OyBjb2xvcjp3aGl0ZTsgfSAucGF5bWVudENhbGN1bGF0b3JJbnB1dENvbnRhaW5lcnsgbWFyZ2luLWJvdHRvbToxMHB4OyB9IC5wYXltZW50Q2FsY3VsYXRvcklucHV0Q29udGFpbmVyID4gKiB7IHBhZGRpbmctYm90dG9tOjAuNXJlbTsgfSAucGF5bWVudENhbGN1bGF0b3JJbnB1dENvbnRhaW5lciBsYWJlbHsgY29sb3I6Z3JleTsgZm9udC1zaXplOjAuODc1cmVtIDsgbWFyZ2luLWxlZnQ6M3B4OyBtYXJnaW4tYm90dG9tOjA7IH0gLnBheW1lbnRDYWxjdWxhdG9yVHJpbVNlbGVjdHsgYm9yZGVyLXJhZGl1czo1cHg7IHBhZGRpbmc6NXB4IDVweDsgZm9udC1zaXplOjFyZW0gOyBtaW4td2lkdGg6MTByZW07IG1heC13aWR0aDoyMHJlbTsgLXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7IC1tb3otYXBwZWFyYW5jZTpub25lOyBwYWRkaW5nLXJpZ2h0OjI3cHg7IGJhY2tncm91bmQtaW1hZ2U6dXJsKCdkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFBaDBsRVFWUTRUOTNUTVFyQ1VBekc4Vjl4OFF6aWlZU3VYZHpGQzdoNEFjRUxPUFFBZFhZb3ZaQ0hFQVRsZ1FWNUdGVGUxb3pKbHova1MxSXBqS3F3M3dRQlZ5eSsrSkkweTFHVGU3RENCYk1BY2tlTklRS2svQmFuQUxCQisxNkx0bkRFTG9NY3NNL0JFU0RsejJoZURSM1dlUHdLU0xvNWVveHozejZOTmNGRCt2dTNpajE0QXF6L0R4R2JLQjdDQUFBQUFFbEZUa1N1UW1DQycpOyBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7IGJhY2tncm91bmQtcG9zaXRpb246OTUlIGNlbnRlcjsgYm9yZGVyLWNvbG9yOiNhOWE5YTk7IGNvbG9yOmluaGVyaXQ7IGJveC1zaGFkb3c6bm9uZTsgLXdlYmtpdC1ib3gtc2hhZG93Om5vbmU7IH0gLnBheW1lbnRDYWxjdWxhdG9ySW50ZXJ2YWwsIC5kMmNmb3JtIC5wYXltZW50Q2FsY3VsYXRvckludGVydmFsIHsgYm9yZGVyLXJhZGl1czo1cHg7IHBhZGRpbmc6NXB4IDVweDsgZm9udC1zaXplOjFyZW0gOyBtaW4td2lkdGg6N3JlbTsgLXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7IC1tb3otYXBwZWFyYW5jZTpub25lOyBwYWRkaW5nLXJpZ2h0OjI3cHg7IGJhY2tncm91bmQtaW1hZ2U6dXJsKCdkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFBaDBsRVFWUTRUOTNUTVFyQ1VBekc4Vjl4OFF6aWlZU3VYZHpGQzdoNEFjRUxPUFFBZFhZb3ZaQ0hFQVRsZ1FWNUdGVGUxb3pKbHova1MxSXBqS3F3M3dRQlZ5eSsrSkkweTFHVGU3RENCYk1BY2tlTklRS2svQmFuQUxCQisxNkx0bkRFTG9NY3NNL0JFU0RsejJoZURSM1dlUHdLU0xvNWVveHozejZOTmNGRCt2dTNpajE0QXF6L0R4R2JLQjdDQUFBQUFFbEZUa1N1UW1DQycpOyBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7IGJhY2tncm91bmQtcG9zaXRpb246OTUlIGNlbnRlcjsgYm9yZGVyLWNvbG9yOiNhOWE5YTk7IGNvbG9yOmluaGVyaXQ7IGJveC1zaGFkb3c6bm9uZTsgLXdlYmtpdC1ib3gtc2hhZG93Om5vbmU7IH0gLnBheW1lbnRDYWxjdWxhdG9yS21BbGxvd2FuY2V7IGJvcmRlci1yYWRpdXM6NXB4OyBwYWRkaW5nOjVweCA1cHg7IGZvbnQtc2l6ZToxcmVtIDsgd2lkdGg6MTEwcHg7IC13ZWJraXQtYXBwZWFyYW5jZTpub25lOyAtbW96LWFwcGVhcmFuY2U6bm9uZTsgcGFkZGluZy1yaWdodDoyN3B4OyBiYWNrZ3JvdW5kLWltYWdlOnVybCgnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQWgwbEVRVlE0VDkzVE1RckNVQXpHOFY5eDhRemlpWVN1WGR6RkM3aDRBY0VMT1BRQWRYWW92WkNIRUFUbGdRVjVHRlRlMW96Smx6L2tTMUlwaktxdzN3UUJWeXkrK0pJMHkxR1RlN0RDQmJNQWNrZU5JUUtrL0JhbkFMQkIrMTZMdG5ERUxvTWNzTS9CRVNEbHoyaGVEUjNXZVB3S1NMbzVlb3h6M3o2Tk5jRkQrdnUzaWoxNEFxei9EeEdiS0I3Q0FBQUFBRWxGVGtTdVFtQ0MnKTsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOjk1JSBjZW50ZXI7IGJvcmRlci1jb2xvcjojYTlhOWE5OyBjb2xvcjppbmhlcml0OyBib3gtc2hhZG93Om5vbmU7IC13ZWJraXQtYm94LXNoYWRvdzpub25lOyB9IC5wYXltZW50Q2FsY3VsYXRvckRvd25QYXltZW50eyBib3JkZXI6MXB4IHNvbGlkICNhOWE5YTk7IGJvcmRlci1yYWRpdXM6NXB4OyBwYWRkaW5nOjVweCA1cHg7IGZvbnQtc2l6ZToxcmVtIDsgd2lkdGg6NXJlbTsgcGFkZGluZy1sZWZ0OjIwcHg7IGJhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgdmVyc2lvbj0nMS4xJyBoZWlnaHQ9JzI4cHgnIHdpZHRoPSc4NXB4Jz48dGV4dCB4PSc2JyB5PScyMScgZmlsbD0nJyBmb250LXNpemU9JzE2JyBmb250LWZhbWlseT0nYXJpYWwnPiQiKTsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyBiYWNrZ3JvdW5kLXNpemU6NjAlOyBiYWNrZ3JvdW5kLXBvc2l0aW9uLXk6NDAlOyAtbW96LWFwcGVhcmFuY2U6dGV4dGZpZWxkOyB9IC5wYXltZW50Q2FsY3VsYXRvckRvd25QYXltZW50Ojotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uLCAucGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudDo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbnsgLXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7IG1hcmdpbjowOyB9IC5wYXltZW50Q2FsY3VsYXRvck5vdGljZUNvbnRhaW5lcnsgbWluLXdpZHRoOjE4cmVtOyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojODY4Njg2OyBwYWRkaW5nOjA7IG1hcmdpbjowOyBkaXNwbGF5OnZhcigtLW1vYmlsZS1kaXNwbGF5LCBpbml0aWFsKTsgfSAucGF5bWVudENhbGN1bGF0b3JOb3RpY2VDb250YWluZXIuYm94ZXM0eyB3aWR0aDozMCU7IH0gLnJldmVhbC1tb2RhbCAucGF5bWVudENhbGN1bGF0b3JOb3RpY2VDb250YWluZXIgcCwgLnJldmVhbC1tb2RhbCAucGF5bWVudENhbGN1bGF0b3JOb3RpY2VDb250YWluZXIgc3BhbnsgY29sb3I6aW5oZXJpdDsgcGFkZGluZzowOyBmb250LXNpemU6MXJlbTsgfSAucGF5bWVudENhbGN1bGF0b3JFcnJvck1lc3NhZ2V7IHdpZHRoOjUwJTsgbWFyZ2luLXRvcDozMHB4OyB9ICNwYXltZW50Q2FsY3VsYXRvclZlaGljbGVJbmZveyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAjcGF5bWVudENhbGN1bGF0b3JWZWhpY2xlSW5mbyAuaWNvbnsgYm9yZGVyLXJhZGl1czo1MCU7IGJvcmRlcjoxcHggc29saWQgI2ZmZmZmZjsgY29sb3I6I2ZmZmZmZjsgbWFyZ2luOjA7IHBhZGRpbmc6MC40cmVtOyAtLXR4dC1jb2xvcjojZmZmZmZmOyAtLWZzOnZhcigtLWhlYWRlci1pY29uLXNpemUsIHZhcigtLWZzNykpOyBiYWNrZ3JvdW5kLWNvbG9yOiMwMDJjNWY7IH0gI3BheW1lbnRDYWxjdWxhdG9yVmVoaWNsZUluZm8gaDIgc3BhbjpmaXJzdC1jaGlsZHsgZm9udC1zaXplOnZhcigtLWZzMSk7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgfSAjcGF5bWVudENhbGN1bGF0b3JWZWhpY2xlSW5mbyBoMiBzcGFueyBmb250LXNpemU6dmFyKC0taGVhZGVyLWZvbnQtc2l6ZSwgdmFyKC0tZnMzKSk7IG1hcmdpbjowOyBsaW5lLWhlaWdodDpub3JtYWw7IGZvbnQtd2VpZ2h0OjcwMDsgcGFkZGluZzowOyB9ICNwYXltZW50Q2FsY3VsYXRvclZlaGljbGVJbmZvIGgzeyBmb250LXNpemU6MS4xODhyZW0gOyB9ICNwYXltZW50Q2FsY3VsYXRvclZlaGljbGVJbmZvIHNwYW4uaDItYWx0eyBtYXJnaW46MDsgcGFkZGluZzowOyBtYXJnaW4tbGVmdDp2YXIoLS1zKTsgZm9udC1zaXplOmluaGVyaXQ7IGZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtaDItd2VpZ2h0KTsgbGluZS1oZWlnaHQ6MS4yZW07IGNvbG9yOnZhcigtLWRlZmF1bHQtYmxhY2spOyB9ICNwYXltZW50Q2FsY3VsYXRvclZlaGljbGVJbmZvIC5oMi1hbHQgc3BhbjpmaXJzdC1jaGlsZHsgZm9udC1zaXplOnZhcigtLWZzMSk7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgfSAjcGF5bWVudENhbGN1bGF0b3JWZWhpY2xlSW5mbyAuaDItYWx0IHNwYW57IGZvbnQtc2l6ZTp2YXIoLS1oZWFkZXItZm9udC1zaXplLCB2YXIoLS1mczMpKTsgbWFyZ2luOjA7IGxpbmUtaGVpZ2h0Om5vcm1hbDsgZm9udC13ZWlnaHQ6NzAwOyBwYWRkaW5nOjA7IH0gI3BheW1lbnRDYWxjdWxhdG9yVmVoaWNsZUluZm8gLmgzLWFsdHsgZm9udC1zaXplOjEuMTg4cmVtIDsgfSAucGF5bWVudENhbGN1bGF0b3JDYWxsVG9BY3Rpb25Db250YWluZXJ7IHRleHQtYWxpZ246Y2VudGVyOyB9IC5wYXltZW50Q2FsY3VsYXRvckNhbGxUb0FjdGlvbkNvbnRhaW5lci5ib3hlczR7IHdpZHRoOjY0JTsgfSAucGF5bWVudENhbGN1bGF0b3JDYWxsVG9BY3Rpb25Db250YWluZXIgYXsgd2lkdGg6bWluKDY0JSwxOHJlbSk7IH0gLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFNlbGVjdHsgfSAuZmEuZmEtY2FsY3VsYXRvcnsgY29sb3I6IzAwMDAwMDsgfSAuLWJnLWJsYWNrIC5mYS5mYS1jYWxjdWxhdG9yeyBjb2xvcjojRkZGRkZGOyB9ICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciBzZWxlY3Q6Oi1tcy1leHBhbmQgeyBkaXNwbGF5Om5vbmU7IH0gLmNhbGMtcGF5bWVudC1jYXNoIHsgd2lkdGg6bWluKDE3cmVtLDkwJSk7IHBhZGRpbmc6MCAxLjVyZW07IH0gLmNhbGMtcGF5bWVudC1jYXNoIHNwYW57IG1hcmdpbi1ib3R0b206MDsgZm9udC1zaXplOnJldmVydDsgfSAuY2FsYy1wYXltZW50LWNhc2ggLnByaWNlRmluYWwgeyBwYWRkaW5nLXRvcDp2YXIoLS1zKTsgYm9yZGVyLXRvcDoxcHggc29saWQgI2JiYjsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAuY2FsYy1wYXltZW50LWNhc2ggLnByaWNlUm93IHsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuOyBsaW5lLWhlaWdodDpub3JtYWw7IH0gLmNhbGMtcGF5bWVudC1jYXNoIC5wcmljZU5hbWV7IHBhZGRpbmc6MDsgdGV4dC1hbGlnbjpsZWZ0OyBmb250LXNpemU6dmFyKC0tZnMwKTsgfSAjcGF5bWVudENhbGN1bGF0b3JPcHRpb25Db250YWluZXIgLnBheW1lbnRDYWxjdWxhdG9yVHJhZGVJbkJ1dHRvbnsgZm9udC1zaXplOjAuNjI1cmVtIDsgYm9yZGVyOjFweCBzb2xpZCAjYTlhOWE5OyBib3JkZXItcmFkaXVzOjVweDsgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsgd2lkdGg6MTA1cHg7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyBwYWRkaW5nOjJweDsgY3Vyc29yOnBvaW50ZXI7IH0gI3BheW1lbnRDYWxjdWxhdG9yT3B0aW9uQ29udGFpbmVyIC5wYXltZW50Q2FsY3VsYXRvclRyYWRlSW5WYWx1ZXsgYm9yZGVyOjFweCBzb2xpZCAjYTlhOWE5OyBib3JkZXItcmFkaXVzOjVweDsgcGFkZGluZzo1cHggNXB4OyBmb250LXNpemU6MXJlbSA7IHdpZHRoOjEwMHB4OyBwYWRkaW5nLWxlZnQ6MTVweDsgYmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2ZXJzaW9uPScxLjEnIGhlaWdodD0nMjhweCcgd2lkdGg9Jzg1cHgnPjx0ZXh0IHg9JzYnIHk9JzIxJyBmaWxsPScnIGZvbnQtc2l6ZT0nMTYnIGZvbnQtZmFtaWx5PSdhcmlhbCc+JCIpOyBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7IGJhY2tncm91bmQtY29sb3I6d2hpdGU7IH0gI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyIC5maW5hbmNpbmctb3B0aW9uLCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLmZpbmFuY2luZy1vcHRpb24geyBib3JkZXI6MS41cHggc29saWQgI2FhYTsgYm9yZGVyLXJhZGl1czo2cHg7IHBhZGRpbmc6OHB4OyB3aWR0aDoxOTBweDsgYmFja2dyb3VuZDp3aGl0ZTsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGFsaWduLWl0ZW1zOmNlbnRlcjsgdGV4dC1hbGlnbjpjZW50ZXI7IGZsZXgtc2hyaW5rOjA7IG1pbi13aWR0aDoxODdweDsgYm94LXNpemluZzpjb250ZW50LWJveCFpbXBvcnRhbnQ7IH0gI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyIC5maW5hbmNpbmctb3B0aW9uLnNlbGVjdGVkLCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLmZpbmFuY2luZy1vcHRpb24uc2VsZWN0ZWQgeyBib3JkZXItY29sb3I6IzAwN0JGRjsgYm94LXNoYWRvdzowIDAgMTBweCByZ2JhKDAsIDEyMywgMjU1LCAwLjUpOyB9ICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciAudGVybSwgI2ZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC50ZXJtIHsgZm9udC1zaXplOjAuODc1cmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgY29sb3I6IzMzMzsgbWFyZ2luLWJvdHRvbToycHg7IH0gI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyIC5kb3duLXBheW1lbnQsICNmaW5hbmNlTXVsdGlzdGVwTmV3Q2FsY3VsYXRvciAuZG93bi1wYXltZW50IHsgZm9udC1zaXplOjAuNjI1cmVtIDsgY29sb3I6Izk5OTsgbWFyZ2luLWJvdHRvbTo1cHg7IH0gI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyIC5zZXBhcmF0b3JQYXksICNmaW5hbmNlTXVsdGlzdGVwTmV3Q2FsY3VsYXRvciAuc2VwYXJhdG9yUGF5IHsgd2lkdGg6OTAlOyBoZWlnaHQ6MXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiNjY2M7IG1hcmdpbi1ib3R0b206NnB4OyB9ICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciAuY29udGVudC1jb250YWluZXIsICNmaW5hbmNlTXVsdGlzdGVwTmV3Q2FsY3VsYXRvciAuY29udGVudC1jb250YWluZXIgeyBkaXNwbGF5OmZsZXg7IGp1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuOyBhbGlnbi1pdGVtczpjZW50ZXI7IHdpZHRoOjEwMCU7IHBhZGRpbmctYm90dG9tOjhweDsgfSAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLmxlZnQtc2VjdGlvbiwgI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyIC5yaWdodC1zZWN0aW9uLCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLmxlZnQtc2VjdGlvbiwgI2ZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5yaWdodC1zZWN0aW9uIHsgd2lkdGg6NTAlOyB0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZzo2cHg7IHBvc2l0aW9uOnJlbGF0aXZlOyB9ICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciAubGVmdC1zZWN0aW9uLCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLmxlZnQtc2VjdGlvbiB7IGJvcmRlci1yaWdodDoxcHggc29saWQgI2NjYzsgfSAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLmxvd2VzdC1wYXltZW50LCAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLmxvd2VzdC1yYXRlLCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLmxvd2VzdC1wYXltZW50LCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLmxvd2VzdC1yYXRlIHsgZm9udC1zaXplOjEuMjVyZW0gOyBjb2xvcjojZDMyZjJmOyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLmluZm8taWNvbiwgI2ZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5pbmZvLWljb24geyBmb250LXNpemU6MC43NXJlbSA7IGNvbG9yOiM2NjY7IGN1cnNvcjpwb2ludGVyOyBtYXJnaW4tbGVmdDo0cHg7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MnB4OyB9ICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciAuYWN0dWFsLXJhdGUsICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciAuYWN0dWFsLXBheW1lbnQsICNmaW5hbmNlTXVsdGlzdGVwTmV3Q2FsY3VsYXRvciAuYWN0dWFsLXJhdGUsICNmaW5hbmNlTXVsdGlzdGVwTmV3Q2FsY3VsYXRvciAuYWN0dWFsLXBheW1lbnQgeyBmb250LXNpemU6MC45MzhyZW0gOyBtYXJnaW4tdG9wOjVweDsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLmFjdHVhbC1yYXRlLCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLmFjdHVhbC1yYXRlIHsgY29sb3I6IzMzMzsgfSAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLmFjdHVhbC1wYXltZW50LCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLmFjdHVhbC1wYXltZW50IHsgY29sb3I6IzAwMzM2NjsgfSAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgLmRldGFpbHNUYXgsICNmaW5hbmNlTXVsdGlzdGVwTmV3Q2FsY3VsYXRvciAuZGV0YWlsc1RheCB7IGZvbnQtc2l6ZTowLjY4OHJlbSA7IGNvbG9yOiMzMzM7IG1hcmdpbi10b3A6MnB4OyB9ICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciAucmFkaW8tY29udGFpbmVyLCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLnJhZGlvLWNvbnRhaW5lciB7IGRpc3BsYXk6ZmxleDsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MHB4OyBtYXJnaW4tdG9wOjhweDsgZm9udC1zaXplOjAuNjg4cmVtIDsgfSAjcGF5bWVudENhbGN1bGF0b3JDb250YWluZXIgaW5wdXRbdHlwZT0icmFkaW8iXVtuYW1lPSJzZWxlY3RlZFBheW1lbnQiXSwgI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyIGlucHV0W3R5cGU9InJhZGlvIl1bbmFtZT0ic2VsZWN0ZWRQYXltZW50V2l0aFRheGVzIl0sICNmaW5hbmNlTXVsdGlzdGVwTmV3Q2FsY3VsYXRvciBpbnB1dFt0eXBlPSJyYWRpbyJdW25hbWU9InNlbGVjdGVkUGF5bWVudCJdLCAjZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgaW5wdXRbdHlwZT0icmFkaW8iXVtuYW1lPSJzZWxlY3RlZFBheW1lbnRXaXRoVGF4ZXMiXSB7IG1hcmdpbi1yaWdodDo0cHg7IG9wYWNpdHk6dW5zZXQ7IHdpZHRoOnVuc2V0OyBoZWlnaHQ6dW5zZXQ7IHBvc2l0aW9uOnVuc2V0OyB9ICNwYXltZW50Q2FsY3VsYXRvckNvbnRhaW5lciAuc2luZ2xlLWNvbHVtbiwgI2ZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5zaW5nbGUtY29sdW1uIHsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgd2lkdGg6MTAwJTsgcGFkZGluZzo4cHg7IH0gI3BheW1lbnRDYWxjdWxhdG9yQ29udGFpbmVyIC5zbWFsbC1ib3gsICNmaW5hbmNlTXVsdGlzdGVwTmV3Q2FsY3VsYXRvciAuc21hbGwtYm94IHsgd2lkdGg6MTAwcHg7IHBhZGRpbmc6OHB4OyBtaW4td2lkdGg6MTAwcHg7IG1heC13aWR0aDoxMDBweDsgfQovKiogL2Nzcy9kYXJrdG9vbHRpcC5jc3MgKiovCi5kYXJrLXRvb2x0aXB7ZGlzcGxheTpub25lO3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDt0ZXh0LWRlY29yYXRpb246bm9uZTtmb250LXdlaWdodDpub3JtYWw7aGVpZ2h0OmF1dG87dG9wOjA7bGVmdDowfS5kYXJrLXRvb2x0aXAuc21hbGx7cGFkZGluZzo0cHg7Zm9udC1zaXplOjAuNzVyZW0gO21heC13aWR0aDoxNTBweDstd2Via2l0LWJvcmRlci1yYWRpdXM6MnB4Oy1tb3otYm9yZGVyLXJhZGl1czoycHg7Ym9yZGVyLXJhZGl1czoycHh9LmRhcmstdG9vbHRpcC5tZWRpdW17cGFkZGluZzo2cHg7Zm9udC1zaXplOjAuNjg4cmVtIDttYXgtd2lkdGg6MjAwcHg7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjRweDstbW96LWJvcmRlci1yYWRpdXM6NHB4O2JvcmRlci1yYWRpdXM6NHB4fS5kYXJrLXRvb2x0aXAubGFyZ2V7cGFkZGluZzoxNnB4O2ZvbnQtc2l6ZToxcmVtIDttYXgtd2lkdGg6MjUwcHg7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjZweDstbW96LWJvcmRlci1yYWRpdXM6NnB4O2JvcmRlci1yYWRpdXM6NnB4fS5kYXJrLXRvb2x0aXAgLnRpcHt0cmFuc2Zvcm06c2NhbGUoMS4wMSk7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMS4wMSk7dHJhbnNmb3JtOnNjYWxlKDEuMDEpO2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MDtoZWlnaHQ6MDtib3JkZXItc3R5bGU6c29saWQ7bGluZS1oZWlnaHQ6MH0uZGFyay10b29sdGlwLnNvdXRoIC50aXB7bGVmdDo1MCU7dG9wOjEwMCV9LmRhcmstdG9vbHRpcC53ZXN0IC50aXB7bGVmdDowO3RvcDo1MCV9LmRhcmstdG9vbHRpcC5ub3J0aCAudGlwe2xlZnQ6NTAlO3RvcDowfS5kYXJrLXRvb2x0aXAuZWFzdCAudGlwe2xlZnQ6MTAwJTt0b3A6NTAlfS5kYXJrLXRvb2x0aXAuc291dGguc21hbGwgLnRpcHtib3JkZXItd2lkdGg6MCA1cHggMCA1cHg7bWFyZ2luLWxlZnQ6LTVweH0uZGFyay10b29sdGlwLnNvdXRoLm1lZGl1bSAudGlwe2JvcmRlci13aWR0aDowIDZweCAwIDZweDttYXJnaW4tbGVmdDotNnB4fS5kYXJrLXRvb2x0aXAuc291dGgubGFyZ2UgLnRpcHtib3JkZXItd2lkdGg6MCAxMnB4IDAgMTJweDttYXJnaW4tbGVmdDotMTJweH0uZGFyay10b29sdGlwLndlc3Quc21hbGwgLnRpcHtib3JkZXItd2lkdGg6NXB4IDdweCA1cHggMDttYXJnaW4tbGVmdDotN3B4O21hcmdpbi10b3A6LTVweH0uZGFyay10b29sdGlwLndlc3QubWVkaXVtIC50aXB7Ym9yZGVyLXdpZHRoOjZweCA4cHggNnB4IDA7bWFyZ2luLWxlZnQ6LThweDttYXJnaW4tdG9wOi02cHh9LmRhcmstdG9vbHRpcC53ZXN0LmxhcmdlIC50aXB7Ym9yZGVyLXdpZHRoOjEycHggMTRweCAxMnB4IDA7bWFyZ2luLWxlZnQ6LTE0cHg7bWFyZ2luLXRvcDotMTJweH0uZGFyay10b29sdGlwLm5vcnRoLnNtYWxsIC50aXB7Ym9yZGVyLXdpZHRoOjAgNXB4IDdweCA1cHg7bWFyZ2luLWxlZnQ6LTVweDttYXJnaW4tdG9wOi03cHh9LmRhcmstdG9vbHRpcC5ub3J0aC5tZWRpdW0gLnRpcHtib3JkZXItd2lkdGg6MCA2cHggOHB4IDZweDttYXJnaW4tbGVmdDotNnB4O21hcmdpbi10b3A6LThweH0uZGFyay10b29sdGlwLm5vcnRoLmxhcmdlIC50aXB7Ym9yZGVyLXdpZHRoOjAgMTJweCAxNHB4IDEycHg7bWFyZ2luLWxlZnQ6LTEycHg7bWFyZ2luLXRvcDotMTRweH0uZGFyay10b29sdGlwLmVhc3Quc21hbGwgLnRpcHtib3JkZXItd2lkdGg6NXB4IDAgNXB4IDA7bWFyZ2luLXRvcDotNXB4fS5kYXJrLXRvb2x0aXAuZWFzdC5tZWRpdW0gLnRpcHtib3JkZXItd2lkdGg6NnB4IDAgNnB4IDA7bWFyZ2luLXRvcDotNnB4fS5kYXJrLXRvb2x0aXAuZWFzdC5sYXJnZSAudGlwe2JvcmRlci13aWR0aDoxMnB4IDAgMTJweCAwO21hcmdpbi10b3A6LTEycHh9LmRhcmstdG9vbHRpcCB1bC5jb25maXJte2xpc3Qtc3R5bGUtdHlwZTpub25lO21hcmdpbi10b3A6NXB4O2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbjowIGF1dG99LmRhcmstdG9vbHRpcCB1bC5jb25maXJtIGxpe3BhZGRpbmc6MTBweDtmbG9hdDpsZWZ0O21hcmdpbjo1cHg7bWluLXdpZHRoOjI1cHg7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDstbW96LWJvcmRlci1yYWRpdXM6M3B4Oy1vLWJvcmRlci1yYWRpdXM6M3B4O2JvcmRlci1yYWRpdXM6M3B4fS5kYXJrLXRvb2x0aXAuZGFya3tiYWNrZ3JvdW5kLWNvbG9yOiNkYWQ5ZGI7Y29sb3I6IzAwMH0uZGFyay10b29sdGlwLmxpZ2h0e2JhY2tncm91bmQtY29sb3I6I2Y1ZjVmNTtjb2xvcjojNWU1ZTVlO2JvcmRlcjoxcHggc29saWQgIzVlNWU1ZTt6LWluZGV4OjEwMDAwMzB9LmRhcmstdG9vbHRpcC5kYXJrLnNvdXRoIC50aXB7Ym9yZGVyLWNvbG9yOiNkYWQ5ZGIgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7X2JvcmRlci1jb2xvcjojZGFkOWRiICMwMDAgIzAwMCAjMDAwO19maWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkNocm9tYShjb2xvcj0nIzAwMDAwMCcpfS5kYXJrLXRvb2x0aXAuZGFyay53ZXN0IC50aXB7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50ICNkYWQ5ZGIgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7X2JvcmRlci1jb2xvcjojMDAwICNkYWQ5ZGIgIzAwMCAjMDAwO19maWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkNocm9tYShjb2xvcj0nIzAwMDAwMCcpfS5kYXJrLXRvb2x0aXAuZGFyay5ub3J0aCAudGlwe2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjZGFkOWRiIHRyYW5zcGFyZW50O19ib3JkZXItY29sb3I6IzAwMCAjMDAwICNkYWQ5ZGIgIzAwMDtfZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5DaHJvbWEoY29sb3I9JyMwMDAwMDAnKX0uZGFyay10b29sdGlwLmRhcmsuZWFzdCAudGlwe2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjZGFkOWRiO19ib3JkZXItY29sb3I6IzAwMCAjMDAwICMwMDAgI2RhZDlkYjtfZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5DaHJvbWEoY29sb3I9JyMwMDAwMDAnKX0uZGFyay10b29sdGlwLmxpZ2h0LnNvdXRoIC50aXB7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1pbWFnZTp1cmwoL2Nzcy90aXBzLnBuZyk7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O3dpZHRoOjEycHg7aGVpZ2h0OjhweH0uZGFyay10b29sdGlwLmxpZ2h0Lndlc3QgLnRpcHtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtiYWNrZ3JvdW5kLWltYWdlOnVybCgvY3NzL3RpcHcucG5nKTtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7d2lkdGg6OHB4O2hlaWdodDoxMnB4fS5kYXJrLXRvb2x0aXAubGlnaHQubm9ydGggLnRpcHtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtiYWNrZ3JvdW5kLWltYWdlOnVybCgvY3NzL3RpcG4ucG5nKTtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7d2lkdGg6MTJweDtoZWlnaHQ6OHB4fS5kYXJrLXRvb2x0aXAubGlnaHQuZWFzdCAudGlwe2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtaW1hZ2U6dXJsKC9jc3MvdGlwZS5wbmcpO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXBvc2l0aW9uOmxlZnQgY2VudGVyO3dpZHRoOjhweDtoZWlnaHQ6MTJweH0uZGFyay10b29sdGlwLmRhcmsgdWwuY29uZmlybSBsaXtiYWNrZ3JvdW5kLWNvbG9yOiM0MTZlODV9LmRhcmstdG9vbHRpcC5kYXJrIHVsLmNvbmZpcm0gbGk6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojNDE3ZTg1fS5kYXJrLXRvb2x0aXAubGlnaHQgdWwuY29uZmlybSBsaXtiYWNrZ3JvdW5kLWNvbG9yOiNjMWRiZGJ9LmRhcmstdG9vbHRpcC5saWdodCB1bC5jb25maXJtIGxpOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2RjZThlOH0uYW5pbWF0ZWR7LXdlYmtpdC1hbmltYXRpb24tZmlsbC1tb2RlOmJvdGg7LW1vei1hbmltYXRpb24tZmlsbC1tb2RlOmJvdGg7LW1zLWFuaW1hdGlvbi1maWxsLW1vZGU6Ym90aDstby1hbmltYXRpb24tZmlsbC1tb2RlOmJvdGg7YW5pbWF0aW9uLWZpbGwtbW9kZTpib3RoOy13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOi41czstbW96LWFuaW1hdGlvbi1kdXJhdGlvbjouNXM7LW1zLWFuaW1hdGlvbi1kdXJhdGlvbjouNXM7LW8tYW5pbWF0aW9uLWR1cmF0aW9uOi41czthbmltYXRpb24tZHVyYXRpb246LjVzfUAtd2Via2l0LWtleWZyYW1lcyBmbGlwSW5VcHswLjAwMDEley13ZWJraXQtdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVYKC05MGRlZyk7b3BhY2l0eTowfTQwJXstd2Via2l0LXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWCg1ZGVnKX03MCV7LXdlYmtpdC10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoLTVkZWcpfTEwMCV7LXdlYmtpdC10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoMCk7b3BhY2l0eToxfX1ALW1vei1rZXlmcmFtZXMgZmxpcEluVXB7MC4wMDAxJXt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoLTkwZGVnKTtvcGFjaXR5OjB9NDAle3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWCg1ZGVnKX03MCV7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVYKC01ZGVnKX0xMDAle3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWCgwKTtvcGFjaXR5OjF9fUAtby1rZXlmcmFtZXMgZmxpcEluVXB7MC4wMDAxJXstby10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoLTkwZGVnKTtvcGFjaXR5OjB9NDAley1vLXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWCg1ZGVnKX03MCV7LW8tdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVYKC01ZGVnKX0xMDAley1vLXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWCgwKTtvcGFjaXR5OjF9fUBrZXlmcmFtZXMgZmxpcEluVXB7MC4wMDAxJXt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoLTkwZGVnKTtvcGFjaXR5OjB9NDAle3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWCg1ZGVnKX03MCV7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVYKC01ZGVnKX0xMDAle3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWCgwKTtvcGFjaXR5OjF9fUAtd2Via2l0LWtleWZyYW1lcyBmbGlwSW5SaWdodHswLjAwMDEley13ZWJraXQtdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKC05MGRlZyk7b3BhY2l0eTowfTQwJXstd2Via2l0LXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSg1ZGVnKX03MCV7LXdlYmtpdC10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVkoLTVkZWcpfTEwMCV7LXdlYmtpdC10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVkoMCk7b3BhY2l0eToxfX1ALW1vei1rZXlmcmFtZXMgZmxpcEluUmlnaHR7MC4wMDAxJXt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVkoLTkwZGVnKTtvcGFjaXR5OjB9NDAle3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSg1ZGVnKX03MCV7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKC01ZGVnKX0xMDAle3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSgwKTtvcGFjaXR5OjF9fUAtby1rZXlmcmFtZXMgZmxpcEluUmlnaHR7MC4wMDAxJXstby10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVkoLTkwZGVnKTtvcGFjaXR5OjB9NDAley1vLXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSg1ZGVnKX03MCV7LW8tdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKC01ZGVnKX0xMDAley1vLXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSgwKTtvcGFjaXR5OjF9fUBrZXlmcmFtZXMgZmxpcEluUmlnaHR7MC4wMDAxJXt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVkoLTkwZGVnKTtvcGFjaXR5OjB9NDAle3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSg1ZGVnKX03MCV7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKC01ZGVnKX0xMDAle3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSgwKTtvcGFjaXR5OjF9fS5mbGlwSW57LXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OnZpc2libGUgIWltcG9ydGFudDstbW96LWJhY2tmYWNlLXZpc2liaWxpdHk6dmlzaWJsZSAhaW1wb3J0YW50Oy1vLWJhY2tmYWNlLXZpc2liaWxpdHk6dmlzaWJsZSAhaW1wb3J0YW50O2JhY2tmYWNlLXZpc2liaWxpdHk6dmlzaWJsZSAhaW1wb3J0YW50fS5mbGlwSW4uc291dGgsLmZsaXBJbi5ub3J0aHstd2Via2l0LWFuaW1hdGlvbi1uYW1lOmZsaXBJblVwOy1tb3otYW5pbWF0aW9uLW5hbWU6ZmxpcEluVXA7LW8tYW5pbWF0aW9uLW5hbWU6ZmxpcEluVXA7YW5pbWF0aW9uLW5hbWU6ZmxpcEluVXB9LmZsaXBJbi53ZXN0LC5mbGlwSW4uZWFzdHstd2Via2l0LWFuaW1hdGlvbi1uYW1lOmZsaXBJblJpZ2h0Oy1tb3otYW5pbWF0aW9uLW5hbWU6ZmxpcEluUmlnaHQ7LW8tYW5pbWF0aW9uLW5hbWU6ZmxpcEluUmlnaHQ7YW5pbWF0aW9uLW5hbWU6ZmxpcEluUmlnaHR9QC13ZWJraXQta2V5ZnJhbWVzIGZhZGVJbnswe29wYWNpdHk6MH0xMDAle29wYWNpdHk6MX19QC1tb3ota2V5ZnJhbWVzIGZhZGVJbnswe29wYWNpdHk6MH0xMDAle29wYWNpdHk6MX19QC1vLWtleWZyYW1lcyBmYWRlSW57MHtvcGFjaXR5OjB9MTAwJXtvcGFjaXR5OjF9fUBrZXlmcmFtZXMgZmFkZUluezB7b3BhY2l0eTowfTEwMCV7b3BhY2l0eToxfX0uZmFkZUluey13ZWJraXQtYW5pbWF0aW9uLW5hbWU6ZmFkZUluOy1tb3otYW5pbWF0aW9uLW5hbWU6ZmFkZUluOy1vLWFuaW1hdGlvbi1uYW1lOmZhZGVJbjthbmltYXRpb24tbmFtZTpmYWRlSW59Ci8qKiAvY3NzL3JldmVhbC5jc3MgKiovCi5yZXZlYWwtbW9kYWwtYmcgeyBwb3NpdGlvbjpmaXhlZDsgaGVpZ2h0OjEwMCU7IHdpZHRoOjEwMCU7IGJhY2tncm91bmQ6IzAwMDsgYmFja2dyb3VuZDpyZ2JhKDAsMCwwLC44KTsgei1pbmRleDoxMDAwMDA5OyBkaXNwbGF5Om5vbmU7IHRvcDowOyBsZWZ0OjA7IH0gLnJldmVhbC1tb2RhbCB7IHZpc2liaWxpdHk6aGlkZGVuOyB0b3A6LTEwMDBweDsgd2lkdGg6bWluKDUyMHB4LCA5MHZ3KTsgYmFja2dyb3VuZDojZWVlIHVybCgvaW1hZ2VzL21vZGFsLWdsb3NzLnBuZykgbm8tcmVwZWF0IC0yMDBweCAtODBweDsgYmFja2dyb3VuZC1jb2xvcjojZWVlOyBwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDowOyByaWdodDowOyBtYXJnaW46YXV0bzsgei1pbmRleDoxMDAwMDIwOyBwYWRkaW5nOjMwcHggNDBweCAzNHB4OyAtbW96LWJvcmRlci1yYWRpdXM6NXB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NXB4OyBib3JkZXItcmFkaXVzOjVweDsgLW1vei1ib3gtc2hhZG93OjAgMCAxMHB4IHJnYmEoMCwwLDAsLjQpOyAtd2Via2l0LWJveC1zaGFkb3c6MCAwIDEwcHggcmdiYSgwLDAsMCwuNCk7IC1ib3gtc2hhZG93OjAgMCAxMHB4IHJnYmEoMCwwLDAsLjQpOyB9IC5yZXZlYWwtbW9kZWwtZG8tbm90LXNob3cgeyB2aXNpYmlsaXR5OmhpZGRlbjsgdG9wOjEwMHB4OyB3aWR0aDo1MjBweDsgcG9zaXRpb246YWJzb2x1dGU7IHotaW5kZXg6MTAwMDAyMDsgcGFkZGluZzozMHB4IDQwcHggMzRweDsgYmFja2dyb3VuZDpub25lOyAtbW96LWJvcmRlci1yYWRpdXM6MHB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6MHB4OyBib3JkZXItcmFkaXVzOjBweDsgLW1vei1ib3gtc2hhZG93Om5vbmU7IC13ZWJraXQtYm94LXNoYWRvdzpub25lOyAtYm94LXNoYWRvdzpub25lOyB9IC4tLWlzLXBvcHVwLWZpeGVkLWNvbnRhaW5lciB7IHBvc2l0aW9uOmZpeGVkOyB0b3A6MDsgbGVmdDowOyByaWdodDowOyB6LWluZGV4OjEwMDAwMDAwMDsgfSAucmV2ZWFsLW1vZGFsLnNtYWxsIHsgd2lkdGg6MjAwcHg7fSAucmV2ZWFsLW1vZGFsLm1lZGl1bSB7IHdpZHRoOjQwMHB4O30gLnJldmVhbC1tb2RhbC5sYXJnZSB7IHdpZHRoOjYwMHB4O30gLnJldmVhbC1tb2RhbC54bGFyZ2UgeyB3aWR0aDo4MDBweDt9IC5yZXZlYWwtbW9kYWwgLmNsb3NlLXJldmVhbC1tb2RhbCB7IGZvbnQtc2l6ZToxLjM3NXJlbSA7IGxpbmUtaGVpZ2h0Oi41OyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjlweDsgcmlnaHQ6MTBweDsgY29sb3I6IzQ0NDsgdGV4dC1zaGFkb3c6MCAtMXB4IDFweCByYmdhKDAsMCwwLC42KTsgZm9udC13ZWlnaHQ6Ym9sZDsgY3Vyc29yOnBvaW50ZXI7IH0gLmNsb3NlLXJldmVhbC1tb2RhbC5tb2RhbC1jbG9zZS1oaWRlIHsgZGlzcGxheTpub25lOyB9IC5yZXZlYWwtbW9kYWwgc3BhbiB7IHBhZGRpbmc6MHB4OyBmb250LXNpemU6MS41cmVtIDsgbWFyZ2luLWJvdHRvbToxMHB4OyBjb2xvcjojNDE0MTQxOyB9IC5yZXZlYWwtbW9kYWwgc3Bhbi5zdWNjZXNzIHsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9jaXJjbGUtZ3JlZW4tMjQtbnMucG5nKSBuby1yZXBlYXQgc2Nyb2xsIGxlZnQgY2VudGVyIHRyYW5zcGFyZW50OyB9IC5yZXZlYWwtbW9kYWwgc3Bhbi5mYWlsIHsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9jaXJjbGUtcmVkLTI0LW5zLnBuZykgbm8tcmVwZWF0IHNjcm9sbCBsZWZ0IGNlbnRlciB0cmFuc3BhcmVudDsgfSAucmV2ZWFsLW1vZGFsIHAgeyBtYXJnaW46MCA7IGZvbnQtc2l6ZTowLjkzOHJlbSA7IGNvbG9yOiM0MTQxNDE7IH0gLnBvcHVwLWRvbS1ub3dyYXBwZXIgeyBiYWNrZ3JvdW5kOm5vbmUgIWltcG9ydGFudDsgYm94LXNoYWRvdzpub25lOyB9IEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC1kZXZpY2Utd2lkdGg6NDgwcHgpIHsgLnJldmVhbC1tb2RhbCwgLnJldmVhbC1tb2RlbC1kby1ub3Qtc2hvdyB7IHRvcDoxMHB4OyB6LWluZGV4OjEwMDAwMjA7IHBhZGRpbmc6MC41cmVtOyBwYWRkaW5nLXRvcDoycmVtOyB9IC5yZXZlYWwtbW9kYWwgLmNsb3NlLXJldmVhbC1tb2RhbCB7IGZvbnQtc2l6ZToxLjg3NXJlbSA7IGxpbmUtaGVpZ2h0OjAuNjsgcmlnaHQ6MC41cmVtOyB0b3A6MC41cmVtOyB6LWluZGV4OjE7IH0gfSAuZW1haWwtY29uc2VudC1ib3ggOmlzKC50aXRsZS10eHQsIHApeyBtYXJnaW4tbGVmdDowOyBwYWRkaW5nOjA7IGNvbG9yOiM0MTQxNDE7IH0gLmVtYWlsLWNvbnNlbnQtYm94eyBiYWNrZ3JvdW5kLWNvbG9yOiNlZWU7IGNvbG9yOiM0MTQxNDE7IH0gLmVtYWlsLWNvbnNlbnQtYm94IC5pY29uLXRpdGxleyB0ZXh0LWFsaWduOmNlbnRlcjsgfQovKiogL2Nzcy9tYWluLmNzcyAqKi8KLi1sZWZ0IHtmbG9hdDpsZWZ0IWltcG9ydGFudDt9IC4tcmlnaHQge2Zsb2F0OnJpZ2h0fSAuLXNtYWxsIHtmb250LXNpemU6LjhlbTttYXJnaW4tYm90dG9tOjEuODc1ZW07bGluZS1oZWlnaHQ6MS44NzVlbSFpbXBvcnRhbnQ7fSAuLWxhcmdlIHtmb250LXNpemU6MS4yZW07bGluZS1oZWlnaHQ6Mi41ZW07bWFyZ2luLWJvdHRvbToxLjI1ZW0haW1wb3J0YW50O30gLi1oaWRlIHtkaXNwbGF5Om5vbmUhaW1wb3J0YW50O30gLi1xdWlldCB7Y29sb3I6IzY2NiFpbXBvcnRhbnQ7fSAuLWxvdWQge2NvbG9yOiMwMDAwMDAhaW1wb3J0YW50O30gLi1oaWdobGlnaHQge2JhY2tncm91bmQ6I2ZmMCFpbXBvcnRhbnQ7fSAuLWFkZGVkIHtiYWNrZ3JvdW5kOiMwNjA7Y29sb3I6I2ZmZiFpbXBvcnRhbnQ7fSAuLXJlbW92ZWQge2JhY2tncm91bmQ6IzkwMDtjb2xvcjojZmZmIWltcG9ydGFudDt9IC4tcHVzaC1maXJzdCB7bWFyZ2luLWxlZnQ6MDtwYWRkaW5nLWxlZnQ6MCFpbXBvcnRhbnQ7fSAuLXB1c2gtbGFzdCB7bWFyZ2luLXJpZ2h0OjA7cGFkZGluZy1yaWdodDowIWltcG9ydGFudDt9IC4tcHVzaC1sZWZ0IHttYXJnaW4tdG9wOjA7cGFkZGluZy10b3A6MCFpbXBvcnRhbnQ7fSAuLXB1c2gtYm90dG9tIHttYXJnaW4tYm90dG9tOjA7cGFkZGluZy1ib3R0b206MCFpbXBvcnRhbnQ7fSAuLW5vYm9yZGVyIHtib3JkZXI6MCFpbXBvcnRhbnQ7fSAuLW5vZGVjb3JhdGlvbiwgLi1uby10ZXh0LWRlY29yYXRpb24sIC4tbm90ZXh0LWRlY29yYXRpb24ge3RleHQtZGVjb3JhdGlvbjpub25lIWltcG9ydGFudDt9IC4tdGV4dC11cHBlcmNhc2UsIC4tdXBwZXJjYXNlLCAudGV4dC11cHBlcmNhc2Uge3RleHQtdHJhbnNmb3JtOnZhcigtLXR4dC11cHBlcik7fSAuLXRleHQtbG93ZXJjYXNlLCAuLWxvd2VyY2FzZSB7dGV4dC10cmFuc2Zvcm06bG93ZXJjYXNlIWltcG9ydGFudDt9IC4taGlkZGVuIHsgZGlzcGxheTpub25lOyB9IC4tdGV4dC1ib2xkLC5ib2xke2ZvbnQtd2VpZ2h0OmJvbGQhaW1wb3J0YW50O30gLi10ZXh0LW5vcm1hbCwubm9ybWFse2ZvbnQtd2VpZ2h0Om5vcm1hbCFpbXBvcnRhbnQ7fSAuLWFsaWduLXRvcCB7dmVydGljYWwtYWxpZ246dG9wIWltcG9ydGFudDt9IC4tYWxpZ24tbWlkZGxlIHt2ZXJ0aWNhbC1hbGlnbjptaWRkbGUhaW1wb3J0YW50O30gLi1saW5lLWgxeyBsaW5lLWhlaWdodDoxZW07IH0gLi1saW5lLWgyeyBsaW5lLWhlaWdodDoyZW07IH0gLi1ib3R0b20weyBib3R0b206MDsgfSAuLWJvdHRvbTAtaW1wb3J0YW50eyBib3R0b206MCFpbXBvcnRhbnQ7IH0gLlBvcnNjaGUyeyBjbGVhcjpib3RoOyB9IC5ibGFjay10ZXh0IHsgY29sb3I6IzAwMDAwMDsgfSA6OnBsYWNlaG9sZGVyIHsgcGFkZGluZy10b3A6MXB4OyBjb2xvcjojYTlhOWE5OyBvcGFjaXR5OjE7IH0gOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7IGNvbG9yOiNhOWE5YTk7IH0gOjotbXMtaW5wdXQtcGxhY2Vob2xkZXIgeyBjb2xvcjojYTlhOWE5OyB9ICNjYXJUaXRsZSAuZmEtY2hldnJvbi1yaWdodCwgLlNwZWNpZmljYXRpb25zIC5mYS1jaGV2cm9uLXJpZ2h0IHsgYm9yZGVyLXJhZGl1czozMHB4OyB3aWR0aDoyMHB4OyBoZWlnaHQ6MjVweDsgcGFkZGluZy10b3A6NHB4OyBwYWRkaW5nLWxlZnQ6OXB4OyBmbG9hdDpsZWZ0OyBtYXJnaW4tdG9wOjhweDsgZm9udC1zaXplOjEuMzc1cmVtIDsgYm9yZGVyOjFweCBzb2xpZCAjMDAwMDAwOyBiYWNrZ3JvdW5kLWNvbG9yOiNlNGRjZDM7IGNvbG9yOiMwMDAwMDAgOyBtYXJnaW4tcmlnaHQ6MTBweDsgfSAuU3BlY2lmaWNhdGlvbnMgLmZhLWNoZXZyb24tcmlnaHR7IG1hcmdpbi10b3A6MXB4OyB9ICNjYXJUaXRsZSAubWFrZU1vZGVsWWVhcnsgZm9udC1zaXplOjEuNTYzcmVtIDsgfSAjY2FyVGl0bGUgLmRlYWxlckxjYXRpb25DYXJUaXRsZSB7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgY29sb3I6IzljOWM5YzsgZm9udC1zaXplOjEuMTI1cmVtIDsgbGV0dGVyLXNwYWNpbmc6LTFweDsgfSAuY2FyVGl0bGUgLmZhLWNoZXZyb24tcmlnaHR7IGJvcmRlci1yYWRpdXM6MzBweDsgd2lkdGg6MjBweDsgaGVpZ2h0OjI1cHg7IHBhZGRpbmctdG9wOjRweDsgcGFkZGluZy1sZWZ0OjlweDsgZmxvYXQ6bGVmdDsgbWFyZ2luLXRvcDo4cHg7IGZvbnQtc2l6ZToxLjM3NXJlbSA7IGJvcmRlcjoxcHggc29saWQgIzAwMDAwMDsgYmFja2dyb3VuZC1jb2xvcjojZTRkY2QzOyBjb2xvcjojMDAwMDAwIDsgbWFyZ2luLXJpZ2h0OjEwcHg7IH0gLmNhclRpdGxlIC5tYWtlTW9kZWxZZWFyeyBmb250LXNpemU6MS40MzhyZW0gOyB9IC5jYXJUaXRsZSAuZGVhbGVyTGNhdGlvbkNhclRpdGxlIHsgZm9udC13ZWlnaHQ6bm9ybWFsOyBjb2xvcjojOWM5YzljOyBmb250LXNpemU6MC45MzhyZW0gOyBsZXR0ZXItc3BhY2luZzotMXB4OyB9ICNTZWFyY2hUaXRsZSAuZmEtY2hldnJvbi1yaWdodHsgYm9yZGVyLXJhZGl1czozMHB4OyB3aWR0aDozMXB4OyBoZWlnaHQ6NDFweDsgcGFkZGluZy10b3A6NXB4OyBwYWRkaW5nLWxlZnQ6MTRweDsgZmxvYXQ6bGVmdDsgbWFyZ2luLXRvcDo4cHg7IGZvbnQtc2l6ZToyLjE4OHJlbSA7IGJvcmRlcjoxcHggc29saWQgIzAwMDAwMDsgYmFja2dyb3VuZC1jb2xvcjojZTRkY2QzOyBjb2xvcjojMDAwMDAwIDsgbWFyZ2luLXJpZ2h0OjEwcHg7IH0gI1NlYXJjaFRpdGxlIC5kZWFsZXJMY2F0aW9uQ2FyVGl0bGUgeyBmb250LXdlaWdodDpub3JtYWw7IGNvbG9yOiM5YzljOWM7IGZvbnQtc2l6ZToxcmVtIDsgbGV0dGVyLXNwYWNpbmc6LTFweDsgbWFyZ2luLWxlZnQ6NDVweDsgZGlzcGxheTpibG9jazsgfSAudWktbXVsdGlzZWxlY3QtY2hlY2tib3hlcyBsYWJlbCBpbnB1dCB7IHBvc2l0aW9uOnJlbGF0aXZlOyB0b3A6MXB4OyBtYXJnaW4tcmlnaHQ6OHB4OyBoZWlnaHQ6MTNweDsgfSAudWktd2lkZ2V0LC51aS1zdGF0ZS1ob3ZlciwgLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1ob3ZlciwgLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWhvdmVyLCAudWktc3RhdGUtZm9jdXMsIC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtZm9jdXMsIC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1mb2N1cywgLnVpLXN0YXRlLWRlZmF1bHQsIC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtZGVmYXVsdCwgLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWRlZmF1bHR7IGJhY2tncm91bmQ6I2ZmZiFpbXBvcnRhbnQ7IGNvbG9yOiM1NTU7IGZvbnQtc2l6ZTowLjkzOHJlbSAhaW1wb3J0YW50OyB9IC51aS1zdGF0ZS1kZWZhdWx0LCAudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWRlZmF1bHQsIC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1kZWZhdWx0eyBwYWRkaW5nOjhweCAxMHB4IWltcG9ydGFudDsgfSAudWktbXVsdGlzZWxlY3QtY2hlY2tib3hlcyBsaXsgZm9udC1zaXplOjAuOTM4cmVtICFpbXBvcnRhbnQ7IH0gLnVpLWNvcm5lci1hbGx7IGJvcmRlci1yYWRpdXM6MHB4IWltcG9ydGFudDsgfSAuLWNvbGxhcHNleyBib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7IH0gLi1saXsgbGlzdC1zdHlsZS10eXBlOm5vbmU7IH0gLi1uby1zaGFkb3csIC4tc2hhZG93MCwgLi1ub3NoYWRvd3sgYm94LXNoYWRvdzpub25lIWltcG9ydGFudDsgfSAuLXVuZGVybGluZXsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSFpbXBvcnRhbnQ7IH0gLi10b3AweyB0b3A6MDsgfSAuLXRleHQtbGVmdHt0ZXh0LWFsaWduOmxlZnQhaW1wb3J0YW50O30gLi10ZXh0LXJpZ2h0e3RleHQtYWxpZ246cmlnaHQhaW1wb3J0YW50O30gLi10ZXh0LWNlbnRlcnt0ZXh0LWFsaWduOmNlbnRlciFpbXBvcnRhbnQ7fSAuLXRleHQtcmVkLCAuLXJlZC10ZXh0e2NvbG9yOnJlZCFpbXBvcnRhbnQ7fSAuLWJsb2Nre2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50O30gLi1pbmxpbmUtYmxvY2t7ZGlzcGxheTppbmxpbmUtYmxvY2shaW1wb3J0YW50O30gLi1ub25lLCAuLWhpZGRlbiwgLi1oaWRkZSB7ZGlzcGxheTpub25lIWltcG9ydGFudDt9IC4taW5saW5lIHtkaXNwbGF5OmlubGluZSFpbXBvcnRhbnQ7fSAuLWNvbG9yMSB7IGNvbG9yOiM1NzU3NTchaW1wb3J0YW50O30gLi10aXRsZTEgeyBmb250LXNpemU6MS40MzhyZW0gIWltcG9ydGFudDsgZm9udC1jb2xvcjojMDAwMDAwICFpbXBvcnRhbnQ7IHRleHQtZGVjb3JhdGlvbjpub25lIWltcG9ydGFudDsgfSAuLWlucHV0IHsgZm9udC1zaXplOjAuODEzcmVtIDsgbGluZS1oZWlnaHQ6MTVweDsgdmVydGljYWwtYWxpZ246bWlkZGxlOyBoZWlnaHQ6MzJweDsgY29sb3I6IzQwNDA0MDsgcGFkZGluZzowcHggNnB4IWltcG9ydGFudDsgbWFyZ2luOjBweDsgb3V0bGluZTpub25lOyBtaW4taGVpZ2h0OjIwcHg7IGJvcmRlcjoxcHggc29saWQgI2NlZDRkYTsgYm9yZGVyLXJhZGl1czouMjVyZW07IHRyYW5zaXRpb246Ym9yZGVyLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsYm94LXNoYWRvdyAuMTVzIGVhc2UtaW4tb3V0OyB9IC4taW5wdXQ6Zm9jdXMsIC4taW5wdXQ6aG92ZXJ7IGJvcmRlci1jb2xvcjojODBiZGZmICFpbXBvcnRhbnQ7IGJveC1zaGFkb3c6MCAwIDAgMC4ycmVtIHJnYmEoMCwxMjMsMjU1LC4yNSk7IH0gLi1wb3NpdGlvbi1zdGF0aWMsIC4tcG9zLXN0YXRpYywgLi1wb3Mtc3RhdCB7cG9zaXRpb246c3RhdGljIWltcG9ydGFudDt9IC4tcG9zaXRpb24tYWJzb2x1dGUsIC4tcG9zLWFic29sdXRlLCAuLXBvcy1hYnMge3Bvc2l0aW9uOmFic29sdXRlIWltcG9ydGFudDt9IC4tcG9zaXRpb24tZml4ZWQsIC4tcG9zLWZpeGVkLCAuLXBvcy1maXgge3Bvc2l0aW9uOmZpeGVkIWltcG9ydGFudDt9IC4tcG9zaXRpb24tcmVsYXRpdmUsIC4tcG9zLXJlbGF0aXZlLCAuLXBvcy1yZWwge3Bvc2l0aW9uOnJlbGF0aXZlIWltcG9ydGFudDt9IC4tcG9zaXRpb24taW5oZXJpdCwgLi1wb3MtaW5oZXJpdCwgLi1wb3MtaW5oIHtwb3NpdGlvbjppbmhlcml0IWltcG9ydGFudDt9IC1saC0xLTMsIC1saW5lLWhlaWdodC0xLTN7IGxpbmUtaGVpZ2h0OjEuMzsgfSAtbGgtMjB7IGxpbmUtaGVpZ2h0OjIwcHg7IH0gLi1lcnJvciwgLi1hbGVydCwgLi1ub3RpY2UsIC4tc3VjY2VzcywgLi1pbmZvIHtwYWRkaW5nOjAuOGVtO21hcmdpbi1ib3R0b206MWVtO2JvcmRlcjoycHggc29saWQgI2RkZCFpbXBvcnRhbnQ7fSAuLWVycm9yLCAuLWFsZXJ0IHtiYWNrZ3JvdW5kOiNmYmUzZTQ7Y29sb3I6IzhhMWYxMTtib3JkZXItY29sb3I6I2ZiYzJjNCFpbXBvcnRhbnQ7fSAuLW5vdGljZSB7YmFja2dyb3VuZDojZmZmNmJmO2NvbG9yOiM1MTQ3MjE7Ym9yZGVyLWNvbG9yOiNmZmQzMjQhaW1wb3J0YW50O30gLi1zdWNjZXNzIHtiYWNrZ3JvdW5kOiNlNmVmYzI7Y29sb3I6IzI2NDQwOTtib3JkZXItY29sb3I6I2M2ZDg4MCFpbXBvcnRhbnQ7fSAuLWluZm8ge2JhY2tncm91bmQ6I2Q1ZWRmODtjb2xvcjojMjA1NzkxO2JvcmRlci1jb2xvcjojOTJjYWU0IWltcG9ydGFudDt9IC4tZXJyb3IgYSwgLmFsZXJ0IGEge2NvbG9yOiM4YTFmMTEhaW1wb3J0YW50O30gLi1ub3RpY2UgYSB7Y29sb3I6IzUxNDcyMSFpbXBvcnRhbnQ7fSAuLXN1Y2Nlc3MgYSB7Y29sb3I6IzI2NDQwOSFpbXBvcnRhbnQ7fSAuLWluZm8gYSB7Y29sb3I6IzIwNTc5MSFpbXBvcnRhbnQ7fSAuLWJveCB7cGFkZGluZzoxLjVlbTttYXJnaW4tYm90dG9tOjEuNWVtO2JhY2tncm91bmQ6I2U1ZUNmOSFpbXBvcnRhbnQ7fSAtaHIge2JhY2tncm91bmQ6I2RkZGRkZDtjb2xvcjojZGRkZGRkO2NsZWFyOmJvdGg7ZmxvYXQ6bm9uZTt3aWR0aDoxMDAlO2hlaWdodDoxcHg7bWFyZ2luOjAgMCAxN3B4O2JvcmRlcjpub25lIWltcG9ydGFudDt9IC1zcGFjZSB7YmFja2dyb3VuZDojZmZmO2NvbG9yOiNmZmY7dmlzaWJpbGl0eTpoaWRkZW47Y2xlYXI6Ym90aDtmbG9hdDpub25lO3dpZHRoOjEwMCU7aGVpZ2h0OjFweDttYXJnaW46MCAwIDE3cHg7Ym9yZGVyOm5vbmUhaW1wb3J0YW50O30gLi1jbGVhcmZpeDphZnRlciB7Y29udGVudDoiXDAwMjAiO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7Y2xlYXI6Ym90aDt2aXNpYmlsaXR5OmhpZGRlbjtvdmVyZmxvdzpoaWRkZW4haW1wb3J0YW50O30gLi1jbGVhcmZpeHtkaXNwbGF5OmJsb2NrIWltcG9ydGFudDt9IC4tY2xlYXIge2NsZWFyOmJvdGghaW1wb3J0YW50O30gLmludmlzaWJsZSB7dmlzaWJpbGl0eTpoaWRkZW47fSAuY2xlYXJmaXg6YWZ0ZXIge2NvbnRlbnQ6IiI7IGRpc3BsYXk6dGFibGU7IGNsZWFyOmJvdGg7fSAuLW92ZXJmbG93LWhpZGRlbiB7b3ZlcmZsb3c6aGlkZGVuIWltcG9ydGFudDt9IC4tdzUge3dpZHRoOjVweCFpbXBvcnRhbnQ7fSAuLXcxMCB7d2lkdGg6MTBweCFpbXBvcnRhbnQ7fSAuLXcxNSB7d2lkdGg6MTVweCFpbXBvcnRhbnQ7fSAuLXcxOCB7d2lkdGg6MThweCFpbXBvcnRhbnQ7fSAuLXcyMCB7d2lkdGg6MjBweCFpbXBvcnRhbnQ7fSAuLXcyNSB7d2lkdGg6MjVweCFpbXBvcnRhbnQ7fSAuLXczMCB7d2lkdGg6MzBweCFpbXBvcnRhbnQ7fSAuLXczNSB7d2lkdGg6MzVweCFpbXBvcnRhbnQ7fSAuLXc0MCB7d2lkdGg6NDBweCFpbXBvcnRhbnQ7fSAuLXc0NSB7d2lkdGg6NDVweCFpbXBvcnRhbnQ7fSAuLXc1MCB7d2lkdGg6NTBweCFpbXBvcnRhbnQ7fSAuLXc1NSB7d2lkdGg6NTVweCFpbXBvcnRhbnQ7fSAuLXc2MCB7d2lkdGg6NjBweCFpbXBvcnRhbnQ7fSAuLXc2NSB7d2lkdGg6NjVweCFpbXBvcnRhbnQ7fSAuLXc3MCB7d2lkdGg6NzBweCFpbXBvcnRhbnQ7fSAuLXc3MyB7d2lkdGg6NzNweCFpbXBvcnRhbnQ7fSAuLXc3NSB7d2lkdGg6NzVweCFpbXBvcnRhbnQ7fSAuLXc4MCB7d2lkdGg6ODBweCFpbXBvcnRhbnQ7fSAuLXc4NSB7d2lkdGg6ODVweCFpbXBvcnRhbnQ7fSAuLXc4OCB7d2lkdGg6ODhweCFpbXBvcnRhbnQ7fSAuLXc5MCB7d2lkdGg6OTBweCFpbXBvcnRhbnQ7fSAuLXc5NSB7d2lkdGg6OTVweCFpbXBvcnRhbnQ7fSAuLXcxMDAge3dpZHRoOjEwMHB4IWltcG9ydGFudDt9IC4tdzExMCB7d2lkdGg6MTEwcHghaW1wb3J0YW50O30gLi13MTIwIHt3aWR0aDoxMjBweCFpbXBvcnRhbnQ7fSAuLXcxMjUge3dpZHRoOjEyNXB4IWltcG9ydGFudDt9IC4tdzEzMCB7d2lkdGg6MTMwcHghaW1wb3J0YW50O30gLi13MTM1IHt3aWR0aDoxMzVweCFpbXBvcnRhbnQ7fSAuLXcxNDAge3dpZHRoOjE0MHB4IWltcG9ydGFudDt9IC4tdzE0MyB7d2lkdGg6MTQzcHghaW1wb3J0YW50O30gLi13MTQ1IHt3aWR0aDoxNDVweCFpbXBvcnRhbnQ7fSAuLXcxNTAge3dpZHRoOjE1MHB4IWltcG9ydGFudDt9IC4tdzE3MCB7d2lkdGg6MTgwcHghaW1wb3J0YW50O30gLi13MTgwIHt3aWR0aDoxODBweCFpbXBvcnRhbnQ7fSAuLXcxODUge3dpZHRoOjE4NXB4IWltcG9ydGFudDt9IC4tdzE5MCB7d2lkdGg6MTkwcHghaW1wb3J0YW50O30gLi13MjAwIHt3aWR0aDoyMDBweCFpbXBvcnRhbnQ7fSAuLXcyMTAge3dpZHRoOjIxMHB4IWltcG9ydGFudDt9IC4tdzIxNSB7d2lkdGg6MjE1cHghaW1wb3J0YW50O30gLi13MjIwIHt3aWR0aDoyMjBweCFpbXBvcnRhbnQ7fSAuLXcyMzAge3dpZHRoOjIzMHB4IWltcG9ydGFudDt9IC4tdzI0MCB7d2lkdGg6MjQwcHghaW1wb3J0YW50O30gLi13MjUwIHt3aWR0aDoyNTBweCFpbXBvcnRhbnQ7fSAuLXcyNTUge3dpZHRoOjI1NXB4IWltcG9ydGFudDt9IC4tdzI2MCB7d2lkdGg6MjYwcHghaW1wb3J0YW50O30gLi13MjcwIHt3aWR0aDoyNzBweCFpbXBvcnRhbnQ7fSAuLXcyNzUge3dpZHRoOjI3NXB4IWltcG9ydGFudDt9IC4tdzI4MCB7d2lkdGg6MjgwcHghaW1wb3J0YW50O30gLi13MjkwIHt3aWR0aDoyOTBweCFpbXBvcnRhbnQ7fSAuLXczMDAge3dpZHRoOjMwMHB4IWltcG9ydGFudDt9IC4tdzMxNSB7d2lkdGg6MzE1cHghaW1wb3J0YW50O30gLi13MzIwIHt3aWR0aDozMjBweCFpbXBvcnRhbnQ7fSAuLXczMjUge3dpZHRoOjMyNXB4IWltcG9ydGFudDt9IC4tdzM1MCB7d2lkdGg6MzUwcHghaW1wb3J0YW50O30gLi13NDAwIHt3aWR0aDo0MDBweCFpbXBvcnRhbnQ7fSAuLXc0NTAge3dpZHRoOjQ1MHB4IWltcG9ydGFudDt9IC4tdzQ2MCB7d2lkdGg6NDUwcHghaW1wb3J0YW50O30gLi13NTAwIHt3aWR0aDo1MDBweCFpbXBvcnRhbnQ7fSAuLXc2MzAge3dpZHRoOjYzMHB4IWltcG9ydGFudDt9IC4tdzYyMCB7d2lkdGg6NjIwcHghaW1wb3J0YW50O30gLi13NjI1IHt3aWR0aDo2MjVweCFpbXBvcnRhbnQ7fSAuLXc2NzUge3dpZHRoOjY3NXB4IWltcG9ydGFudDt9IC4tdzY4MCB7d2lkdGg6NjgwcHghaW1wb3J0YW50O30gLi13NjcwIHt3aWR0aDo2NzBweCFpbXBvcnRhbnQ7fSAuLXc3MDAge3dpZHRoOjcwMHB4IWltcG9ydGFudDt9IC4tdzcyMCB7d2lkdGg6NzIwcHghaW1wb3J0YW50O30gLi13NzI1IHt3aWR0aDo3MjVweCFpbXBvcnRhbnQ7fSAuLXc3MzAge3dpZHRoOjczMHB4IWltcG9ydGFudDt9IC4tdzc1MCB7d2lkdGg6NzUwcHghaW1wb3J0YW50O30gLi13ODAwIHt3aWR0aDo4MDBweCFpbXBvcnRhbnQ7fSAuLXc5MDAge3dpZHRoOjkwMHB4IWltcG9ydGFudDt9IC4tdzkzNyB7d2lkdGg6OTM3cHghaW1wb3J0YW50O30gLi13OTQwIHt3aWR0aDo5NDBweCFpbXBvcnRhbnQ7fSAuLXc5NjAge3dpZHRoOjk2MHB4IWltcG9ydGFudDt9IC4tdzk3MCB7d2lkdGg6OTcwcHghaW1wb3J0YW50O30gLi13MTAwMCB7d2lkdGg6MTAwMHB4IWltcG9ydGFudDt9IC4tdzVwIHt3aWR0aDo1JSFpbXBvcnRhbnQ7fSAuLXcxMHAge3dpZHRoOjEwJSFpbXBvcnRhbnQ7fSAuLXcxNXAge3dpZHRoOjIwJSFpbXBvcnRhbnQ7fSAuLXcyMHAge3dpZHRoOjIwJSFpbXBvcnRhbnQ7fSAuLXdxLCAuLXcyNXAge3dpZHRoOjI1JSFpbXBvcnRhbnQ7fSAuLXczMHAge3dpZHRoOjMwJSFpbXBvcnRhbnQ7fSAuLXczNXAge3dpZHRoOjM1JSFpbXBvcnRhbnQ7fSAuLXc0MHAge3dpZHRoOjQwJSFpbXBvcnRhbnQ7fSAuLXc0NXAge3dpZHRoOjQ1JSFpbXBvcnRhbnQ7fSAuLXdoLC4tdzUwcCB7d2lkdGg6NTAlIWltcG9ydGFudDt9IC4tdzU1cCB7d2lkdGg6NTUlIWltcG9ydGFudDt9IC4tdzYwcCB7d2lkdGg6NjAlIWltcG9ydGFudDt9IC4tdzY1cCB7d2lkdGg6NjUlIWltcG9ydGFudDt9IC4tdzcwcCB7d2lkdGg6NzAlIWltcG9ydGFudDt9IC4tdzc1cCB7d2lkdGg6NzUlIWltcG9ydGFudDt9IC4tdzgwcCB7d2lkdGg6ODAlIWltcG9ydGFudDt9IC4tdzg1cCB7d2lkdGg6ODUlIWltcG9ydGFudDt9IC4tdzkwcCB7d2lkdGg6OTAlIWltcG9ydGFudDt9IC4tdzk1cCB7d2lkdGg6OTUlIWltcG9ydGFudDt9IC4td2YsLi13MTAwcCB7d2lkdGg6MTAwJSFpbXBvcnRhbnQ7fSAuLW1heC13LW5vbmUge21heC13aWR0aDpub25lIWltcG9ydGFudDt9IC4taDUge2hlaWdodDo1cHghaW1wb3J0YW50O30gLi1oNiB7aGVpZ2h0OjZweCFpbXBvcnRhbnQ7fSAuLWg3IHtoZWlnaHQ6N3B4IWltcG9ydGFudDt9IC4taDgge2hlaWdodDo4cHghaW1wb3J0YW50O30gLi1oOSB7aGVpZ2h0OjlweCFpbXBvcnRhbnQ7fSAuLWgxMCB7aGVpZ2h0OjEwcHghaW1wb3J0YW50O30gLi1oMTEge2hlaWdodDoxMXB4IWltcG9ydGFudDt9IC4taDEyIHtoZWlnaHQ6MTJweCFpbXBvcnRhbnQ7fSAuLWgxMyB7aGVpZ2h0OjEzcHghaW1wb3J0YW50O30gLi1oMTQge2hlaWdodDoxNHB4IWltcG9ydGFudDt9IC4taDE1IHtoZWlnaHQ6MTVweCFpbXBvcnRhbnQ7fSAuLWgyMCB7aGVpZ2h0OjIwcHghaW1wb3J0YW50O30gLi1oMjUge2hlaWdodDoyNXB4IWltcG9ydGFudDt9IC4taDMwIHtoZWlnaHQ6MzBweCFpbXBvcnRhbnQ7fSAuLWgzMiB7aGVpZ2h0OjMycHghaW1wb3J0YW50O30gLi1oMzUge2hlaWdodDozNXB4IWltcG9ydGFudDt9IC4taDQwIHtoZWlnaHQ6NDBweCFpbXBvcnRhbnQ7fSAuLWg0NSB7aGVpZ2h0OjQ1cHghaW1wb3J0YW50O30gLi1oNTAge2hlaWdodDo1MHB4IWltcG9ydGFudDt9IC4taDU1IHtoZWlnaHQ6NTVweCFpbXBvcnRhbnQ7fSAuLWg2MCB7aGVpZ2h0OjYwcHghaW1wb3J0YW50O30gLi1oNjUge2hlaWdodDo2NXB4IWltcG9ydGFudDt9IC4taDcwIHtoZWlnaHQ6NzBweCFpbXBvcnRhbnQ7fSAuLWg3NSB7aGVpZ2h0Ojc1cHghaW1wb3J0YW50O30gLi1oODAge2hlaWdodDo4MHB4IWltcG9ydGFudDt9IC4taDg1IHtoZWlnaHQ6ODVweCFpbXBvcnRhbnQ7fSAuLWg5MCB7aGVpZ2h0OjkwcHghaW1wb3J0YW50O30gLi1oOTUge2hlaWdodDo5NXB4IWltcG9ydGFudDt9IC4taDEwMCB7aGVpZ2h0OjEwMHB4IWltcG9ydGFudDt9IC4taDExMCB7aGVpZ2h0OjExMHB4IWltcG9ydGFudDt9IC4taDEyMCB7aGVpZ2h0OjEyMHB4IWltcG9ydGFudDt9IC4taDEzMCB7aGVpZ2h0OjEzMHB4IWltcG9ydGFudDt9IC4taDE0MCB7aGVpZ2h0OjE0MHB4IWltcG9ydGFudDt9IC4taDE1MCB7aGVpZ2h0OjE1MHB4IWltcG9ydGFudDt9IC4taDE2MCB7aGVpZ2h0OjE2MHB4IWltcG9ydGFudDt9IC4taDE3MCB7aGVpZ2h0OjE3MHB4IWltcG9ydGFudDt9IC4taDE4MCB7aGVpZ2h0OjE4MHB4IWltcG9ydGFudDt9IC4taDE5MCB7aGVpZ2h0OjE5MHB4IWltcG9ydGFudDt9IC4taDIwMCB7aGVpZ2h0OjIwMHB4IWltcG9ydGFudDt9IC4taDIyMCB7aGVpZ2h0OjIyMHB4IWltcG9ydGFudDt9IC4taDIzMCB7aGVpZ2h0OjIzMHB4IWltcG9ydGFudDt9IC4taDI0MCB7aGVpZ2h0OjI0MHB4IWltcG9ydGFudDt9IC4taDI0NSB7aGVpZ2h0OjI0NXB4IWltcG9ydGFudDt9IC4taDI0OCB7aGVpZ2h0OjI0OHB4IWltcG9ydGFudDt9IC4taDI1MCB7aGVpZ2h0OjI1MHB4IWltcG9ydGFudDt9IC4taDI1NSB7aGVpZ2h0OjI1NXB4IWltcG9ydGFudDt9IC4taDI2MCB7aGVpZ2h0OjI2MHB4IWltcG9ydGFudDt9IC4taDMwMCB7aGVpZ2h0OjMwMHB4IWltcG9ydGFudDt9IC4taDM1MCB7aGVpZ2h0OjM1MHB4IWltcG9ydGFudDt9IC4taDQwMCB7aGVpZ2h0OjQwMHB4IWltcG9ydGFudDt9IC4taDQ1MCB7aGVpZ2h0OjQ1MHB4IWltcG9ydGFudDt9IC4taDUwMCB7aGVpZ2h0OjUwMHB4IWltcG9ydGFudDt9IC4taDU1MCB7aGVpZ2h0OjU1MHB4IWltcG9ydGFudDt9IC4taDYwMCB7aGVpZ2h0OjYwMHB4IWltcG9ydGFudDt9IC4taDY1MCB7aGVpZ2h0OjY1MHB4IWltcG9ydGFudDt9IC4taDcwMCB7aGVpZ2h0OjcwMHB4IWltcG9ydGFudDt9IC4taDc1MCB7aGVpZ2h0Ojc1MHB4IWltcG9ydGFudDt9IC4taDgwMCB7aGVpZ2h0OjgwMHB4IWltcG9ydGFudDt9IC4taDkwMCB7aGVpZ2h0OjkwMHB4IWltcG9ydGFudDt9IC4taDEwMDAge2hlaWdodDoxMDAwcHghaW1wb3J0YW50O30gLi1oNXAge2hlaWdodDo1JSFpbXBvcnRhbnQ7fSAuLWgxMHAge2hlaWdodDoxMCUhaW1wb3J0YW50O30gLi1oMTVwIHtoZWlnaHQ6MTUlIWltcG9ydGFudDt9IC4taDIwcCB7aGVpZ2h0OjIwJSFpbXBvcnRhbnQ7fSAuLWhxLCAuLWgyNXAge2hlaWdodDoyNSUhaW1wb3J0YW50O30gLi1oaCwuLWg1MHAge2hlaWdodDo1MCUhaW1wb3J0YW50O30gLi1oZiwuLWgxMDBwIHtoZWlnaHQ6MTAwJSFpbXBvcnRhbnQ7fSAuLWJveC1zLWJ7IC13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94OyAtbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDsgYm94LXNpemluZzpib3JkZXItYm94OyB9IC4tYm94LWNvbnRlbnR7IGJveC1zaXppbmc6Y29udGVudC1ib3g7IH0gLi1mbGV4e2Rpc3BsYXk6ZmxleDt9IC4tZmxleC1jb2x1bW57ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjt9IC4tYWktY2VudGVye2FsaWduLWl0ZW1zOmNlbnRlcjt9IC4tcDAsLi1ub3BhZGRpbmcsLi1ub3BhZGRpbmdzIHtwYWRkaW5nOjA7fSAuLXAxIHtwYWRkaW5nOjFweCFpbXBvcnRhbnQ7fSAuLXAyIHtwYWRkaW5nOjJweCFpbXBvcnRhbnQ7fSAuLXAzIHtwYWRkaW5nOjNweCFpbXBvcnRhbnQ7fSAuLXA0IHtwYWRkaW5nOjRweCFpbXBvcnRhbnQ7fSAuLXA1IHtwYWRkaW5nOjVweCFpbXBvcnRhbnQ7fSAuLXA2IHtwYWRkaW5nOjZweCFpbXBvcnRhbnQ7fSAuLXA3IHtwYWRkaW5nOjdweCFpbXBvcnRhbnQ7fSAuLXA4IHtwYWRkaW5nOjhweCFpbXBvcnRhbnQ7fSAuLXA5IHtwYWRkaW5nOjlweCFpbXBvcnRhbnQ7fSAuLXAxMCB7cGFkZGluZzoxMHB4IWltcG9ydGFudDt9IC4tcDE1IHtwYWRkaW5nOjE1cHghaW1wb3J0YW50O30gLi1wMjAge3BhZGRpbmc6MjBweCFpbXBvcnRhbnQ7fSAuLXAyNSB7cGFkZGluZzoyNXB4IWltcG9ydGFudDt9IC4tcDMwIHtwYWRkaW5nOjMwcHghaW1wb3J0YW50O30gLi1wMzUge3BhZGRpbmc6MzVweCFpbXBvcnRhbnQ7fSAuLXA0MCB7cGFkZGluZzo0MHB4IWltcG9ydGFudDt9IC4tcDQ1IHtwYWRkaW5nOjQ1cHghaW1wb3J0YW50O30gLi1wNTAge3BhZGRpbmc6NTBweCFpbXBvcnRhbnQ7fSAuLXBsMCB7cGFkZGluZy1sZWZ0OjAhaW1wb3J0YW50O30gLi1wbDEge3BhZGRpbmctbGVmdDoxcHghaW1wb3J0YW50O30gLi1wbDIge3BhZGRpbmctbGVmdDoycHghaW1wb3J0YW50O30gLi1wbDMge3BhZGRpbmctbGVmdDozcHghaW1wb3J0YW50O30gLi1wbDQge3BhZGRpbmctbGVmdDo0cHghaW1wb3J0YW50O30gLi1wbDUge3BhZGRpbmctbGVmdDo1cHghaW1wb3J0YW50O30gLi1wbDYge3BhZGRpbmctbGVmdDo2cHghaW1wb3J0YW50O30gLi1wbDcge3BhZGRpbmctbGVmdDo3cHghaW1wb3J0YW50O30gLi1wbDgge3BhZGRpbmctbGVmdDo4cHghaW1wb3J0YW50O30gLi1wbDkge3BhZGRpbmctbGVmdDo5cHghaW1wb3J0YW50O30gLi1wbDEwIHtwYWRkaW5nLWxlZnQ6MTBweCFpbXBvcnRhbnQ7fSAuLXBsMTUge3BhZGRpbmctbGVmdDoxNXB4IWltcG9ydGFudDt9IC4tcGwxNiB7cGFkZGluZy1sZWZ0OjE2cHghaW1wb3J0YW50O30gLi1wbDE3IHtwYWRkaW5nLWxlZnQ6MTdweCFpbXBvcnRhbnQ7fSAuLXBsMjAge3BhZGRpbmctbGVmdDoyMHB4IWltcG9ydGFudDt9IC4tcGwyNSB7cGFkZGluZy1sZWZ0OjI1cHghaW1wb3J0YW50O30gLi1wbDMwIHtwYWRkaW5nLWxlZnQ6MzBweCFpbXBvcnRhbnQ7fSAuLXBsMzUge3BhZGRpbmctbGVmdDozNXB4IWltcG9ydGFudDt9IC4tcGw0MCB7cGFkZGluZy1sZWZ0OjQwcHghaW1wb3J0YW50O30gLi1wbDQ1IHtwYWRkaW5nLWxlZnQ6NDVweCFpbXBvcnRhbnQ7fSAuLXBsNTAge3BhZGRpbmctbGVmdDo1MHB4IWltcG9ydGFudDt9IC4tcGw1NSB7cGFkZGluZy1sZWZ0OjU1cHghaW1wb3J0YW50O30gLi1wcjAge3BhZGRpbmctcmlnaHQ6MCFpbXBvcnRhbnQ7fSAuLXByMSB7cGFkZGluZy1yaWdodDoxcHghaW1wb3J0YW50O30gLi1wcjIge3BhZGRpbmctcmlnaHQ6MnB4IWltcG9ydGFudDt9IC4tcHIzIHtwYWRkaW5nLXJpZ2h0OjNweCFpbXBvcnRhbnQ7fSAuLXByNCB7cGFkZGluZy1yaWdodDo0cHghaW1wb3J0YW50O30gLi1wcjUge3BhZGRpbmctcmlnaHQ6NXB4IWltcG9ydGFudDt9IC4tcHI2IHtwYWRkaW5nLXJpZ2h0OjZweCFpbXBvcnRhbnQ7fSAuLXByNyB7cGFkZGluZy1yaWdodDo3cHghaW1wb3J0YW50O30gLi1wcjgge3BhZGRpbmctcmlnaHQ6OHB4IWltcG9ydGFudDt9IC4tcHI5IHtwYWRkaW5nLXJpZ2h0OjlweCFpbXBvcnRhbnQ7fSAuLXByMTAge3BhZGRpbmctcmlnaHQ6MTBweCFpbXBvcnRhbnQ7fSAuLXByMTUge3BhZGRpbmctcmlnaHQ6MTVweCFpbXBvcnRhbnQ7fSAuLXByMjAge3BhZGRpbmctcmlnaHQ6MjBweCFpbXBvcnRhbnQ7fSAuLXByMjUge3BhZGRpbmctcmlnaHQ6MjVweCFpbXBvcnRhbnQ7fSAuLXByMzAge3BhZGRpbmctcmlnaHQ6MzBweCFpbXBvcnRhbnQ7fSAuLXByMzUge3BhZGRpbmctcmlnaHQ6MzVweCFpbXBvcnRhbnQ7fSAuLXByNDAge3BhZGRpbmctcmlnaHQ6NDBweCFpbXBvcnRhbnQ7fSAuLXByNDUge3BhZGRpbmctcmlnaHQ6NDVweCFpbXBvcnRhbnQ7fSAuLXByNTAge3BhZGRpbmctcmlnaHQ6NTBweCFpbXBvcnRhbnQ7fSAuLXByNTUge3BhZGRpbmctcmlnaHQ6NTVweCFpbXBvcnRhbnQ7fSAuLXB0MHtwYWRkaW5nLXRvcDowIWltcG9ydGFudDt9IC4tcHQxIHtwYWRkaW5nLXRvcDoxcHghaW1wb3J0YW50O30gLi1wdDIge3BhZGRpbmctdG9wOjJweCFpbXBvcnRhbnQ7fSAuLXB0MyB7cGFkZGluZy10b3A6M3B4IWltcG9ydGFudDt9IC4tcHQ0IHtwYWRkaW5nLXRvcDo0cHghaW1wb3J0YW50O30gLi1wdDUge3BhZGRpbmctdG9wOjVweCFpbXBvcnRhbnQ7fSAuLXB0NiB7cGFkZGluZy10b3A6NnB4IWltcG9ydGFudDt9IC4tcHQ3IHtwYWRkaW5nLXRvcDo3cHghaW1wb3J0YW50O30gLi1wdDgge3BhZGRpbmctdG9wOjhweCFpbXBvcnRhbnQ7fSAuLXB0OSB7cGFkZGluZy10b3A6OXB4IWltcG9ydGFudDt9IC4tcHQxMCB7cGFkZGluZy10b3A6MTBweCFpbXBvcnRhbnQ7fSAuLXB0MTUge3BhZGRpbmctdG9wOjE1cHghaW1wb3J0YW50O30gLi1wdDIwIHtwYWRkaW5nLXRvcDoyMHB4IWltcG9ydGFudDt9IC4tcHQyNSB7cGFkZGluZy10b3A6MjVweCFpbXBvcnRhbnQ7fSAuLXB0MzAge3BhZGRpbmctdG9wOjMwcHghaW1wb3J0YW50O30gLi1wdDM1IHtwYWRkaW5nLXRvcDozNXB4IWltcG9ydGFudDt9IC4tcHQ0MCB7cGFkZGluZy10b3A6NDBweCFpbXBvcnRhbnQ7fSAuLXB0NDUge3BhZGRpbmctdG9wOjQ1cHghaW1wb3J0YW50O30gLi1wdDUwIHtwYWRkaW5nLXRvcDo1MHB4IWltcG9ydGFudDt9IC4tcHQ1NSB7cGFkZGluZy10b3A6NTVweCFpbXBvcnRhbnQ7fSAuLXB0MjAwIHtwYWRkaW5nLXRvcDoyMDBweCFpbXBvcnRhbnQ7fSAuLXBiMCB7cGFkZGluZy1ib3R0b206MCFpbXBvcnRhbnQ7fSAuLXBiMSB7cGFkZGluZy1ib3R0b206MXB4IWltcG9ydGFudDt9IC4tcGIyIHtwYWRkaW5nLWJvdHRvbToycHghaW1wb3J0YW50O30gLi1wYjMge3BhZGRpbmctYm90dG9tOjNweCFpbXBvcnRhbnQ7fSAuLXBiNCB7cGFkZGluZy1ib3R0b206NHB4IWltcG9ydGFudDt9IC4tcGI1IHtwYWRkaW5nLWJvdHRvbTo1cHghaW1wb3J0YW50O30gLi1wYjYge3BhZGRpbmctYm90dG9tOjZweCFpbXBvcnRhbnQ7fSAuLXBiNyB7cGFkZGluZy1ib3R0b206N3B4IWltcG9ydGFudDt9IC4tcGI4IHtwYWRkaW5nLWJvdHRvbTo4cHghaW1wb3J0YW50O30gLi1wYjkge3BhZGRpbmctYm90dG9tOjlweCFpbXBvcnRhbnQ7fSAuLXBiMTAge3BhZGRpbmctYm90dG9tOjEwcHghaW1wb3J0YW50O30gLi1wYjE1IHtwYWRkaW5nLWJvdHRvbToxNXB4IWltcG9ydGFudDt9IC4tcGIyMCB7cGFkZGluZy1ib3R0b206MjBweCFpbXBvcnRhbnQ7fSAuLXBiMjUge3BhZGRpbmctYm90dG9tOjI1cHghaW1wb3J0YW50O30gLi1wYjMwIHtwYWRkaW5nLWJvdHRvbTozMHB4IWltcG9ydGFudDt9IC4tcGI0MCB7cGFkZGluZy1ib3R0b206NDBweCFpbXBvcnRhbnQ7fSAtYm9yZGVyLXJhZGl1czAsLXJhZGl1czAsLXJhZDAge2JvcmRlci1yYWRpdXM6MHB4IWltcG9ydGFudDt9IC1ib3JkZXItcmFkaXVzMSwtcmFkaXVzMSwtcmFkMSB7Ym9yZGVyLXJhZGl1czowcHghaW1wb3J0YW50O30gLWJvcmRlci1yYWRpdXMyLC1yYWRpdXMyLC1yYWQyIHtib3JkZXItcmFkaXVzOjBweCFpbXBvcnRhbnQ7fSAtYm9yZGVyLXJhZGl1czMsLXJhZGl1czMsLXJhZDMge2JvcmRlci1yYWRpdXM6MHB4IWltcG9ydGFudDt9IC1ib3JkZXItcmFkaXVzNCwtcmFkaXVzNCwtcmFkNCB7Ym9yZGVyLXJhZGl1czowcHghaW1wb3J0YW50O30gLWJvcmRlci1yYWRpdXM1LC1yYWRpdXM1LC1yYWQ1IHtib3JkZXItcmFkaXVzOjBweCFpbXBvcnRhbnQ7fSAtYm9yZGVyLXJhZGl1czYsLXJhZGl1czYsLXJhZDYge2JvcmRlci1yYWRpdXM6MHB4IWltcG9ydGFudDt9IC1ib3JkZXItcmFkaXVzNywtcmFkaXVzNywtcmFkNyB7Ym9yZGVyLXJhZGl1czowcHghaW1wb3J0YW50O30gLWJvcmRlci1yYWRpdXM4LC1yYWRpdXM4LC1yYWQ4IHtib3JkZXItcmFkaXVzOjBweCFpbXBvcnRhbnQ7fSAtYm9yZGVyLXJhZGl1czksLXJhZGl1czksLXJhZDkge2JvcmRlci1yYWRpdXM6MHB4IWltcG9ydGFudDt9IC1ib3JkZXItcmFkaXVzMTAsLXJhZGl1czEwLC1yYWQxMCB7Ym9yZGVyLXJhZGl1czowcHghaW1wb3J0YW50O30gLi1tYXV0byB7bWFyZ2luOmF1dG8haW1wb3J0YW50O30gLi1tMCAuLW5vbWFyZ2lucywuLW5vbWFyZ2lue21hcmdpbjowIWltcG9ydGFudDt9IC4tbTEge21hcmdpbjoxcHghaW1wb3J0YW50O30gLi1tMiB7bWFyZ2luOjJweCFpbXBvcnRhbnQ7fSAuLW0zIHttYXJnaW46M3B4IWltcG9ydGFudDt9IC4tbTQge21hcmdpbjo0cHghaW1wb3J0YW50O30gLi1tNSB7bWFyZ2luOjVweCFpbXBvcnRhbnQ7fSAuLW02IHttYXJnaW46NnB4IWltcG9ydGFudDt9IC4tbTcge21hcmdpbjo3cHghaW1wb3J0YW50O30gLi1tOCB7bWFyZ2luOjhweCFpbXBvcnRhbnQ7fSAuLW05IHttYXJnaW46OXB4IWltcG9ydGFudDt9IC4tbTEwIHttYXJnaW46MTBweCFpbXBvcnRhbnQ7fSAuLW0xNSB7bWFyZ2luOjE1cHghaW1wb3J0YW50O30gLi1tMjAge21hcmdpbjoyMHB4IWltcG9ydGFudDt9IC4tbTIyIHttYXJnaW46MjJweCFpbXBvcnRhbnQ7fSAuLW0yNSB7bWFyZ2luOjI1cHghaW1wb3J0YW50O30gLi1tNXAge21hcmdpbjo1JSFpbXBvcnRhbnQ7fSAuLW0xMHAge21hcmdpbjoxMCUhaW1wb3J0YW50O30gLi1tMTVwIHttYXJnaW46MTUlIWltcG9ydGFudDt9IC4tbTIwcCB7bWFyZ2luOjIwJSFpbXBvcnRhbnQ7fSAuLW0yNXAge21hcmdpbjoyNSUhaW1wb3J0YW50O30gLi1tbGF1dG8ge21hcmdpbi1sZWZ0OmF1dG8haW1wb3J0YW50O30gLi1tbDAge21hcmdpbi1sZWZ0OjAhaW1wb3J0YW50O30gLi1tbDEge21hcmdpbi1sZWZ0OjFweCFpbXBvcnRhbnQ7fSAuLW1sMiB7bWFyZ2luLWxlZnQ6MnB4IWltcG9ydGFudDt9IC4tbWwzIHttYXJnaW4tbGVmdDozcHghaW1wb3J0YW50O30gLi1tbDQge21hcmdpbi1sZWZ0OjRweCFpbXBvcnRhbnQ7fSAuLW1sNSB7bWFyZ2luLWxlZnQ6NXB4IWltcG9ydGFudDt9IC4tbWw2IHttYXJnaW4tbGVmdDo2cHghaW1wb3J0YW50O30gLi1tbDcge21hcmdpbi1sZWZ0OjdweCFpbXBvcnRhbnQ7fSAuLW1sOCB7bWFyZ2luLWxlZnQ6OHB4IWltcG9ydGFudDt9IC4tbWw5IHttYXJnaW4tbGVmdDo5cHghaW1wb3J0YW50O30gLi1tbDEwIHttYXJnaW4tbGVmdDoxMHB4IWltcG9ydGFudDt9IC4tbWwxNSB7bWFyZ2luLWxlZnQ6MTVweCFpbXBvcnRhbnQ7fSAuLW1sMjAge21hcmdpbi1sZWZ0OjIwcHghaW1wb3J0YW50O30gLi1tbDI1IHttYXJnaW4tbGVmdDoyNXB4IWltcG9ydGFudDt9IC4tbWwyNyB7bWFyZ2luLWxlZnQ6MjdweCFpbXBvcnRhbnQ7fSAuLW1sMzAge21hcmdpbi1sZWZ0OjMwcHghaW1wb3J0YW50O30gLi1tbDUwIHttYXJnaW4tbGVmdDo1MHB4IWltcG9ydGFudDt9IC4tbWw4MCB7bWFyZ2luLWxlZnQ6ODBweCFpbXBvcnRhbnQ7fSAuLW1sMTAwIHttYXJnaW4tbGVmdDoxMDBweCFpbXBvcnRhbnQ7fSAuLW1sMTMwIHttYXJnaW4tbGVmdDoxMzBweCFpbXBvcnRhbnQ7fSAuLW1sMTUwIHttYXJnaW4tbGVmdDoxNTBweCFpbXBvcnRhbnQ7fSAuLW1sMnAge21hcmdpbi1sZWZ0OjIlIWltcG9ydGFudDt9IC4tbWwzcCB7bWFyZ2luLWxlZnQ6MyUhaW1wb3J0YW50O30gLi1tbDVwIHttYXJnaW4tbGVmdDo1JSFpbXBvcnRhbnQ7fSAuLW1sMTBwIHttYXJnaW4tbGVmdDoxMCUhaW1wb3J0YW50O30gLi1tbDE1cCB7bWFyZ2luLWxlZnQ6MTUlIWltcG9ydGFudDt9IC4tbWwyMHAge21hcmdpbi1sZWZ0OjIwJSFpbXBvcnRhbnQ7fSAuLW1sMjVwIHttYXJnaW4tbGVmdDoyNSUhaW1wb3J0YW50O30gLi1tcmF1dG8ge21hcmdpbi1yaWdodDphdXRvIWltcG9ydGFudDt9IC4tbXIwIHttYXJnaW4tcmlnaHQ6MCFpbXBvcnRhbnQ7fSAuLW1yMSB7bWFyZ2luLXJpZ2h0OjFweCFpbXBvcnRhbnQ7fSAuLW1yMiB7bWFyZ2luLXJpZ2h0OjJweCFpbXBvcnRhbnQ7fSAuLW1yMyB7bWFyZ2luLXJpZ2h0OjNweCFpbXBvcnRhbnQ7fSAuLW1yNCB7bWFyZ2luLXJpZ2h0OjRweCFpbXBvcnRhbnQ7fSAuLW1yNSB7bWFyZ2luLXJpZ2h0OjVweCFpbXBvcnRhbnQ7fSAuLW1yNiB7bWFyZ2luLXJpZ2h0OjZweCFpbXBvcnRhbnQ7fSAuLW1yNyB7bWFyZ2luLXJpZ2h0OjdweCFpbXBvcnRhbnQ7fSAuLW1yOCB7bWFyZ2luLXJpZ2h0OjhweCFpbXBvcnRhbnQ7fSAuLW1yOSB7bWFyZ2luLXJpZ2h0OjlweCFpbXBvcnRhbnQ7fSAuLW1yMTAge21hcmdpbi1yaWdodDoxMHB4IWltcG9ydGFudDt9IC4tbXIxNSB7bWFyZ2luLXJpZ2h0OjE1cHghaW1wb3J0YW50O30gLi1tcjIwIHttYXJnaW4tcmlnaHQ6MjBweCFpbXBvcnRhbnQ7fSAuLW1yMjUge21hcmdpbi1yaWdodDoyNXB4IWltcG9ydGFudDt9IC4tbXIzMCB7bWFyZ2luLXJpZ2h0OjMwcHghaW1wb3J0YW50O30gLi1tcjM1IHttYXJnaW4tcmlnaHQ6MzVweCFpbXBvcnRhbnQ7fSAuLW1yNDAge21hcmdpbi1yaWdodDo0MHB4IWltcG9ydGFudDt9IC4tbXI0NSB7bWFyZ2luLXJpZ2h0OjQ1cHghaW1wb3J0YW50O30gLi1tcjUwIHttYXJnaW4tcmlnaHQ6NTBweCFpbXBvcnRhbnQ7fSAuLW1yMTAwIHttYXJnaW4tcmlnaHQ6MTAwcHghaW1wb3J0YW50O30gLi1tcjJwIHttYXJnaW4tcmlnaHQ6MiUhaW1wb3J0YW50O30gLi1tcjNwIHttYXJnaW4tcmlnaHQ6MyUhaW1wb3J0YW50O30gLi1tcjVwIHttYXJnaW4tcmlnaHQ6NSUhaW1wb3J0YW50O30gLi1tcjEwcCB7bWFyZ2luLXJpZ2h0OjEwJSFpbXBvcnRhbnQ7fSAuLW1yMTVwIHttYXJnaW4tcmlnaHQ6MTUlIWltcG9ydGFudDt9IC4tbXIyMHAge21hcmdpbi1yaWdodDoyMCUhaW1wb3J0YW50O30gLi1tcjI1cCB7bWFyZ2luLXJpZ2h0OjI1JSFpbXBvcnRhbnQ7fSAuLW10YXV0byB7bWFyZ2luLXRvcDphdXRvIWltcG9ydGFudDt9IC4tbXQtN3ttYXJnaW4tdG9wOi03cHghaW1wb3J0YW50O30gLi1tdDB7bWFyZ2luLXRvcDowIWltcG9ydGFudDt9IC4tbXQxIHttYXJnaW4tdG9wOjFweCFpbXBvcnRhbnQ7fSAuLW10MiB7bWFyZ2luLXRvcDoycHghaW1wb3J0YW50O30gLi1tdDMge21hcmdpbi10b3A6M3B4IWltcG9ydGFudDt9IC4tbXQ0IHttYXJnaW4tdG9wOjRweCFpbXBvcnRhbnQ7fSAuLW10NSB7bWFyZ2luLXRvcDo1cHghaW1wb3J0YW50O30gLi1tdDYge21hcmdpbi10b3A6NnB4IWltcG9ydGFudDt9IC4tbXQ3IHttYXJnaW4tdG9wOjdweCFpbXBvcnRhbnQ7fSAuLW10OCB7bWFyZ2luLXRvcDo4cHghaW1wb3J0YW50O30gLi1tdDkge21hcmdpbi10b3A6OXB4IWltcG9ydGFudDt9IC4tbXQxMCB7bWFyZ2luLXRvcDoxMHB4IWltcG9ydGFudDt9IC4tbXQxMSB7bWFyZ2luLXRvcDoxMXB4IWltcG9ydGFudDt9IC4tbXQxMiB7bWFyZ2luLXRvcDoxMnB4IWltcG9ydGFudDt9IC4tbXQxMyB7bWFyZ2luLXRvcDoxM3B4IWltcG9ydGFudDt9IC4tbXQxNCB7bWFyZ2luLXRvcDoxNHB4IWltcG9ydGFudDt9IC4tbXQxNSB7bWFyZ2luLXRvcDoxNXB4IWltcG9ydGFudDt9IC4tbXQyMCB7bWFyZ2luLXRvcDoyMHB4IWltcG9ydGFudDt9IC4tbXQyNSB7bWFyZ2luLXRvcDoyNXB4IWltcG9ydGFudDt9IC4tbXQyNyB7bWFyZ2luLXRvcDoyN3B4IWltcG9ydGFudDt9IC4tbXQzMCB7bWFyZ2luLXRvcDozMHB4IWltcG9ydGFudDt9IC4tbXQzNSB7bWFyZ2luLXRvcDozNXB4IWltcG9ydGFudDt9IC4tbXQ0MCB7bWFyZ2luLXRvcDo0MHB4IWltcG9ydGFudDt9IC4tbXQ1MCB7bWFyZ2luLXRvcDo1MHB4IWltcG9ydGFudDt9IC4tbXQxMTUge21hcmdpbi10b3A6MTE1cHghaW1wb3J0YW50O30gLi1tdDIwMCB7bWFyZ2luLXRvcDoyMDBweCFpbXBvcnRhbnQ7fSAuLW1iYXV0byB7bWFyZ2luLWJvdHRvbTphdXRvIWltcG9ydGFudDt9IC4tbWIwIHttYXJnaW4tYm90dG9tOjAhaW1wb3J0YW50O30gLi1tYjEge21hcmdpbi1ib3R0b206MXB4IWltcG9ydGFudDt9IC4tbWIyIHttYXJnaW4tYm90dG9tOjJweCFpbXBvcnRhbnQ7fSAuLW1iMyB7bWFyZ2luLWJvdHRvbTozcHghaW1wb3J0YW50O30gLi1tYjQge21hcmdpbi1ib3R0b206NHB4IWltcG9ydGFudDt9IC4tbWI1IHttYXJnaW4tYm90dG9tOjVweCFpbXBvcnRhbnQ7fSAuLW1iNiB7bWFyZ2luLWJvdHRvbTo2cHghaW1wb3J0YW50O30gLi1tYjcge21hcmdpbi1ib3R0b206N3B4IWltcG9ydGFudDt9IC4tbWI4IHttYXJnaW4tYm90dG9tOjhweCFpbXBvcnRhbnQ7fSAuLW1iOSB7bWFyZ2luLWJvdHRvbTo5cHghaW1wb3J0YW50O30gLi1tYjEwIHttYXJnaW4tYm90dG9tOjEwcHghaW1wb3J0YW50O30gLi1tYjE1IHttYXJnaW4tYm90dG9tOjE1cHghaW1wb3J0YW50O30gLi1tYjIwIHttYXJnaW4tYm90dG9tOjIwcHghaW1wb3J0YW50O30gLi1tYjI1IHttYXJnaW4tYm90dG9tOjI1cHghaW1wb3J0YW50O30gLi1tYjMwIHttYXJnaW4tYm90dG9tOjMwcHghaW1wb3J0YW50O30gLi1tYjUwIHttYXJnaW4tYm90dG9tOjUwcHghaW1wb3J0YW50O30gLi10b3AtMTAsIC4tdC0xMCB7dG9wOi0xMHB4IWltcG9ydGFudDt9IC4tdG9wMCwgLi10MCB7dG9wOjBweCFpbXBvcnRhbnQ7fSAuLXRvcDEsIC4tdDEge3RvcDoxcHghaW1wb3J0YW50O30gLi10b3AyLCAuLXQyIHt0b3A6MnB4IWltcG9ydGFudDt9IC4tdG9wMywgLi10MyB7dG9wOjNweCFpbXBvcnRhbnQ7fSAuLXRvcDQsIC4tdDQge3RvcDo0cHghaW1wb3J0YW50O30gLi10b3A1LCAuLXQ1IHt0b3A6NXB4IWltcG9ydGFudDt9IC4tdG9wNiwgLi10NiB7dG9wOjZweCFpbXBvcnRhbnQ7fSAuLXRvcDcsIC4tdDcge3RvcDo3cHghaW1wb3J0YW50O30gLi10b3A4LCAuLXQ4IHt0b3A6OHB4IWltcG9ydGFudDt9IC4tdG9wOSwgLi10OSB7dG9wOjlweCFpbXBvcnRhbnQ7fSAuLXRvcDEwLCAuLXQxMCB7dG9wOjEwcHghaW1wb3J0YW50O30gLi10b3AxNSwgLi10MTUge3RvcDoxNXB4IWltcG9ydGFudDt9IC4tdG9wMjAsIC4tdDIwIHt0b3A6MjBweCFpbXBvcnRhbnQ7fSAuLXRvcDI1LCAuLXQyNXt0b3A6MjVweCFpbXBvcnRhbnQ7fSAuLXRvcDMwLCAuLXQzMCB7dG9wOjMwcHghaW1wb3J0YW50O30gLi10b3AzNSwgLi10MzUge3RvcDozNXB4IWltcG9ydGFudDt9IC4tdG9wNDAsIC4tdDQwIHt0b3A6NDBweCFpbXBvcnRhbnQ7fSAuLXRvcDQ1LCAuLXQ0NSB7dG9wOjQ1cHghaW1wb3J0YW50O30gLi10b3A1MCwgLi10NTAge3RvcDo1MHB4IWltcG9ydGFudDt9IC4tdG9wMTAwLCAuLXQxMDAge3RvcDoxMDBweCFpbXBvcnRhbnQ7fSAuLXRvcDIwMCwgLi10MjAwIHt0b3A6MjAwcHghaW1wb3J0YW50O30gLi10b3A1cCwgLi10NXAge3RvcDo1JSFpbXBvcnRhbnQ7fSAuLXRvcDEwcCwgLi10MTBwIHt0b3A6MTAlIWltcG9ydGFudDt9IC4tdG9wMTVwLCAuLXQxNXAge3RvcDoxNSUhaW1wb3J0YW50O30gLi10b3AyMHAsIC4tdDIwcCB7dG9wOjIwJSFpbXBvcnRhbnQ7fSAuLXRvcDI1cCwgLi10MjVwIHt0b3A6MjUlIWltcG9ydGFudDt9IC4tdG9wNTBwLCAuLXQ1MHAge3RvcDo1MCUhaW1wb3J0YW50O30gLi10b3AxMDBwLCAuLXQxMDBwIHt0b3A6MTAwJSFpbXBvcnRhbnQ7fSAuLWxlZnQwLCAuLWwwIHtsZWZ0OjBweCFpbXBvcnRhbnQ7fSAuLWxlZnQxLCAuLWwxIHtsZWZ0OjFweCFpbXBvcnRhbnQ7fSAuLWxlZnQyLCAuLWwyIHtsZWZ0OjJweCFpbXBvcnRhbnQ7fSAuLWxlZnQzLCAuLWwzIHtsZWZ0OjNweCFpbXBvcnRhbnQ7fSAuLWxlZnQ0LCAuLWw0IHtsZWZ0OjRweCFpbXBvcnRhbnQ7fSAuLWxlZnQ1LCAuLWw1IHtsZWZ0OjVweCFpbXBvcnRhbnQ7fSAuLWxlZnQ2LCAuLWw2IHtsZWZ0OjZweCFpbXBvcnRhbnQ7fSAuLWxlZnQ3LCAuLWw3IHtsZWZ0OjdweCFpbXBvcnRhbnQ7fSAuLWxlZnQ4LCAuLWw4IHtsZWZ0OjhweCFpbXBvcnRhbnQ7fSAuLWxlZnQ5LCAuLWw5IHtsZWZ0OjlweCFpbXBvcnRhbnQ7fSAuLWxlZnQxMCwgLi1sMTAge2xlZnQ6MTBweCFpbXBvcnRhbnQ7fSAuLWxlZnQxNSwgLi1sMTUge2xlZnQ6MTVweCFpbXBvcnRhbnQ7fSAuLWxlZnQyMCwgLi1sMjAge2xlZnQ6MjBweCFpbXBvcnRhbnQ7fSAuLWxlZnQyNSwgLi1sMjV7bGVmdDoyNXB4IWltcG9ydGFudDt9IC4tbGVmdDMwLCAuLWwzMCB7bGVmdDozMHB4IWltcG9ydGFudDt9IC4tbGVmdDM1LCAuLWwzNSB7bGVmdDozNXB4IWltcG9ydGFudDt9IC4tbGVmdDQwLCAuLWw0MCB7bGVmdDo0MHB4IWltcG9ydGFudDt9IC4tbGVmdDQ1LCAuLWw0NSB7bGVmdDo0NXB4IWltcG9ydGFudDt9IC4tbGVmdDUwLCAuLWw1MCB7bGVmdDo1MHB4IWltcG9ydGFudDt9IC4tbGVmdDU1LCAuLWw1NSB7bGVmdDo1NXB4IWltcG9ydGFudDt9IC4tbGVmdDYwLCAuLWw2MCB7bGVmdDo2MHB4IWltcG9ydGFudDt9IC4tbGVmdDY1LCAuLWw2NSB7bGVmdDo2NXB4IWltcG9ydGFudDt9IC4tbGVmdDcwLCAuLWw3MCB7bGVmdDo3MHB4IWltcG9ydGFudDt9IC4tbGVmdDc1LCAuLWw3NSB7bGVmdDo3NXB4IWltcG9ydGFudDt9IC4tbGVmdDgwLCAuLWw4MCB7bGVmdDo4MHB4IWltcG9ydGFudDt9IC4tbGVmdDg1LCAuLWw4NSB7bGVmdDo4NXB4IWltcG9ydGFudDt9IC4tbGVmdDkwLCAuLWw5MCB7bGVmdDo5MHB4IWltcG9ydGFudDt9IC4tbGVmdDk1LCAuLWw5NSB7bGVmdDo5NXB4IWltcG9ydGFudDt9IC4tbGVmdDEwMCwgLi1sMTAwIHtsZWZ0OjEwMHB4IWltcG9ydGFudDt9IC4tbGVmdDE1MCwgLi1sMTUwIHtsZWZ0OjE1MHB4IWltcG9ydGFudDt9IC4tbGVmdDIwMCwgLi1sMjAwIHtsZWZ0OjIwMHB4IWltcG9ydGFudDt9IC4tbGVmdDI1MCwgLi1sMjUwIHtsZWZ0OjI1MHB4IWltcG9ydGFudDt9IC4tbGVmdDMwMCwgLi1sMzAwIHtsZWZ0OjMwMHB4IWltcG9ydGFudDt9IC4tbGVmdDVwLCAuLWw1cCB7bGVmdDo1JSFpbXBvcnRhbnQ7fSAuLWxlZnQxMHAsIC4tbDEwcCB7bGVmdDoxMCUhaW1wb3J0YW50O30gLi1sZWZ0MTVwLCAuLWwxNXAge2xlZnQ6MTUlIWltcG9ydGFudDt9IC4tbGVmdDIwcCwgLi1sMjBwIHtsZWZ0OjIwJSFpbXBvcnRhbnQ7fSAuLWxlZnQyNXAsIC4tbDI1cCB7bGVmdDoyNSUhaW1wb3J0YW50O30gLi1sZWZ0NDBwLCAuLWw0MHAge2xlZnQ6NDAlIWltcG9ydGFudDt9IC4tbGVmdDUwcCwgLi1sNTBwIHtsZWZ0OjUwJSFpbXBvcnRhbnQ7fSAuLWxlZnQxMDBwLCAuLWwxMDBwIHtsZWZ0OjEwMCUhaW1wb3J0YW50O30gLi1yaWdodDAsIC4tcjAge3JpZ2h0OjBweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0MSwgLi1yMSB7cmlnaHQ6MXB4IWltcG9ydGFudDt9IC4tcmlnaHQyLCAuLXIyIHtyaWdodDoycHghaW1wb3J0YW50O30gLi1yaWdodDMsIC4tcjMge3JpZ2h0OjNweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0NCwgLi1yNCB7cmlnaHQ6NHB4IWltcG9ydGFudDt9IC4tcmlnaHQ1LCAuLXI1IHtyaWdodDo1cHghaW1wb3J0YW50O30gLi1yaWdodDYsIC4tcjYge3JpZ2h0OjZweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0NywgLi1yNyB7cmlnaHQ6N3B4IWltcG9ydGFudDt9IC4tcmlnaHQ4LCAuLXI4IHtyaWdodDo4cHghaW1wb3J0YW50O30gLi1yaWdodDksIC4tcjkge3JpZ2h0OjlweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0MTAsIC4tcjEwIHtyaWdodDoxMHB4IWltcG9ydGFudDt9IC4tcmlnaHQxNSwgLi1yMTUge3JpZ2h0OjE1cHghaW1wb3J0YW50O30gLi1yaWdodDIwLCAuLXIyMCB7cmlnaHQ6MjBweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0MjUsIC4tcjI1IHtyaWdodDoyNXB4IWltcG9ydGFudDt9IC4tcmlnaHQzMCwgLi1yMzAge3JpZ2h0OjMwcHghaW1wb3J0YW50O30gLi1yaWdodDM1LCAuLXIzNSB7cmlnaHQ6MzVweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0NDAsIC4tcjQwIHtyaWdodDo0MHB4IWltcG9ydGFudDt9IC4tcmlnaHQ0NSwgLi1yNDUge3JpZ2h0OjQ1cHghaW1wb3J0YW50O30gLi1yaWdodDUwLCAuLXI1MCB7cmlnaHQ6NTBweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0NTUsIC4tcjU1IHtyaWdodDo1NXB4IWltcG9ydGFudDt9IC4tcmlnaHQ2MCwgLi1yNjAge3JpZ2h0OjYwcHghaW1wb3J0YW50O30gLi1yaWdodDY1LCAuLXI2NSB7cmlnaHQ6NjVweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0NzAsIC4tcjcwIHtyaWdodDo3MHB4IWltcG9ydGFudDt9IC4tcmlnaHQ3NSwgLi1yNzUge3JpZ2h0Ojc1cHghaW1wb3J0YW50O30gLi1yaWdodDgwLCAuLXI4MCB7cmlnaHQ6ODBweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0ODUsIC4tcjg1IHtyaWdodDo4NXB4IWltcG9ydGFudDt9IC4tcmlnaHQ5MCwgLi1yOTAge3JpZ2h0OjkwcHghaW1wb3J0YW50O30gLi1yaWdodDk1LCAuLXI5NSB7cmlnaHQ6OTVweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0MTAwLCAuLXIxMDAge3JpZ2h0OjEwMHB4IWltcG9ydGFudDt9IC4tcmlnaHQxNTAsIC4tcjE1MCB7cmlnaHQ6MTUwcHghaW1wb3J0YW50O30gLi1yaWdodDIwMCwgLi1yMjAwIHtyaWdodDoyMDBweCFpbXBvcnRhbnQ7fSAuLXJpZ2h0MjUwLCAuLXIyNTAge3JpZ2h0OjI1MHB4IWltcG9ydGFudDt9IC4tcmlnaHQ1cCwgLi1yNXAge3JpZ2h0OjUlIWltcG9ydGFudDt9IC4tcmlnaHQxMHAsIC4tcjEwcCB7cmlnaHQ6MTAlIWltcG9ydGFudDt9IC4tcmlnaHQxNXAsIC4tcjE1cCB7cmlnaHQ6MTUlIWltcG9ydGFudDt9IC4tcmlnaHQyMHAsIC4tcjIwcCB7cmlnaHQ6MjAlIWltcG9ydGFudDt9IC4tcmlnaHQyNXAsIC4tcjI1cCB7cmlnaHQ6MjUlIWltcG9ydGFudDt9IC4tcmlnaHQ1MHAsIC4tcjUwcCB7cmlnaHQ6NTAlIWltcG9ydGFudDt9IC4tcmlnaHQxMDBwLCAuLXIxMDBwIHtyaWdodDoxMDAlIWltcG9ydGFudDt9IC4tei1pbmRleDk5e3otaW5kZXg6OTkhaW1wb3J0YW50O30gLi16LWluZGV4MTAwe3otaW5kZXg6MTAwIWltcG9ydGFudDt9IC4tei1pbmRleDEwMXt6LWluZGV4OjEwMSFpbXBvcnRhbnQ7fSAuLXotaW5kZXgxMDAxLCAuemluZGV4MTAwMXsgei1pbmRleDoxMDAxIWltcG9ydGFudDsgfSAuLXotaW5kZXgzNjAwMSwgLnppbmRleDM2MDAxeyB6LWluZGV4OjM2MDAxIWltcG9ydGFudDsgfSAuLW5vLWJvcmRlci1zcGFjaW5neyBib3JkZXItc3BhY2luZzowIWltcG9ydGFudDsgfSAuLXRhYmxleyBjZWxscGFkZGluZzowIWltcG9ydGFudDsgY2VsbHNwYWNpbmc6MCFpbXBvcnRhbnQ7IGJvcmRlcjowIWltcG9ydGFudDsgfSB0YWJsZS4tdGFibGUgdGhlYWQgdGggeyBiYWNrZ3JvdW5kOiNjM2Q5ZmYhaW1wb3J0YW50OyB9IHRhYmxlLi10YWJsZSB0ciB0aCwgdGFibGUuLXRhYmxlIHRyIHRkIHsgcGFkZGluZzo0cHggMTBweCA0cHggNXB4IWltcG9ydGFudDsgfSB0ci4tYm9yZGVyLWJvdHRvbSB0ZCwgdHIuLWJvcmRlci1ib3R0b20gdGggeyBib3JkZXItYm90dG9tOjFwdCBzb2xpZCBibGFjayFpbXBvcnRhbnQ7IH0gLXdoaXRlLXNwYWNlLW5vd3JhcCB7d2hpdGUtc3BhY2U6bm93cmFwIWltcG9ydGFudDt9IC4tY3Vyc29yLWF1dG8geyBjdXJzb3I6YXV0bzsgfSAuLWN1cnNvci1kZWZhdWx0IHsgY3Vyc29yOmRlZmF1bHQ7IH0gLi1jdXJzb3Itbm9uZSB7IGN1cnNvcjpub25lOyB9IC4tY3Vyc29yLWNvbnRleHQtbWVudSB7IGN1cnNvcjpjb250ZXh0LW1lbnU7IH0gLi1jdXJzb3ItaGVscCB7IGN1cnNvcjpoZWxwOyB9IC4tY3Vyc29yLXBvaW50ZXIgeyBjdXJzb3I6cG9pbnRlcjsgfSAuLWN1cnNvci1wcm9ncmVzcyB7IGN1cnNvcjpwcm9ncmVzczsgfSAuLWN1cnNvci13YWl0IHsgY3Vyc29yOndhaXQ7IH0gLi1jdXJzb3ItY2VsbCB7IGN1cnNvcjpjZWxsOyB9IC4tY3Vyc29yLWNyb3NzaGFpciB7IGN1cnNvcjpjcm9zc2hhaXI7IH0gLi1jdXJzb3ItdGV4dCB7IGN1cnNvcjp0ZXh0OyB9IC4tY3Vyc29yLXZlcnRpY2FsLXRleHQgeyBjdXJzb3I6dmVydGljYWwtdGV4dDsgfSAuLWN1cnNvci1hbGlhcyB7IGN1cnNvcjphbGlhczsgfSAuLWN1cnNvci1jb3B5IHsgY3Vyc29yOmNvcHk7IH0gLi1jdXJzb3ItbW92ZSB7IGN1cnNvcjptb3ZlOyB9IC4tY3Vyc29yLW5vLWRyb3AgeyBjdXJzb3I6bm8tZHJvcDsgfSAuLWN1cnNvci1ub3QtYWxsb3dlZCB7IGN1cnNvcjpub3QtYWxsb3dlZDsgfSAuLWN1cnNvci1hbGwtc2Nyb2xsIHsgY3Vyc29yOmFsbC1zY3JvbGw7IH0gLi1jdXJzb3ItY29sLXJlc2l6ZSB7IGN1cnNvcjpjb2wtcmVzaXplOyB9IC4tY3Vyc29yLXJvdy1yZXNpemUgeyBjdXJzb3I6cm93LXJlc2l6ZTsgfSAuLWN1cnNvci1uLXJlc2l6ZSB7IGN1cnNvcjpuLXJlc2l6ZTsgfSAuLWN1cnNvci1lLXJlc2l6ZSB7IGN1cnNvcjplLXJlc2l6ZTsgfSAuLWN1cnNvci1zLXJlc2l6ZSB7IGN1cnNvcjpzLXJlc2l6ZTsgfSAuLWN1cnNvci13LXJlc2l6ZSB7IGN1cnNvcjp3LXJlc2l6ZTsgfSAuLWN1cnNvci1ucy1yZXNpemUgeyBjdXJzb3I6bnMtcmVzaXplOyB9IC4tY3Vyc29yLWV3LXJlc2l6ZSB7IGN1cnNvcjpldy1yZXNpemU7IH0gLi1jdXJzb3ItbmUtcmVzaXplIHsgY3Vyc29yOm5lLXJlc2l6ZTsgfSAuLWN1cnNvci1udy1yZXNpemUgeyBjdXJzb3I6bnctcmVzaXplOyB9IC4tY3Vyc29yLXNlLXJlc2l6ZSB7IGN1cnNvcjpzZS1yZXNpemU7IH0gLi1jdXJzb3Itc3ctcmVzaXplIHsgY3Vyc29yOnN3LXJlc2l6ZTsgfSAuLWN1cnNvci1uZXN3LXJlc2l6ZSB7IGN1cnNvcjpuZXN3LXJlc2l6ZTsgfSAuLWN1cnNvci1ud3NlLXJlc2l6ZSB7IGN1cnNvcjpud3NlLXJlc2l6ZTsgfSAuLWZvbnQtc2l6ZTAsIC4tZnMweyBmb250LXNpemU6MCFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTEsIC4tZnMxeyBmb250LXNpemU6MXB4IWltcG9ydGFudDt9IC4tZm9udC1zaXplMiwgLi1mczJ7IGZvbnQtc2l6ZToycHghaW1wb3J0YW50O30gLi1mb250LXNpemUzLCAuLWZzM3sgZm9udC1zaXplOjNweCFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTQsIC4tZnM0eyBmb250LXNpemU6NHB4IWltcG9ydGFudDt9IC4tZm9udC1zaXplNSwgLi1mczV7IGZvbnQtc2l6ZTo1cHghaW1wb3J0YW50O30gLi1mb250LXNpemU2LCAuLWZzNnsgZm9udC1zaXplOjZweCFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTcsIC4tZnM3eyBmb250LXNpemU6N3B4IWltcG9ydGFudDt9IC4tZm9udC1zaXplOCwgLi1mczh7IGZvbnQtc2l6ZTowLjVyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplOSwgLi1mczl7IGZvbnQtc2l6ZTowLjU2M3JlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUxMCwgLi1mczEweyBmb250LXNpemU6MC42MjVyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMTEsIC4tZnMxMXsgZm9udC1zaXplOjAuNjg4cmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTEyLCAuLWZzMTJ7IGZvbnQtc2l6ZTowLjc1cmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTEzLCAuLWZzMTN7IGZvbnQtc2l6ZTowLjgxM3JlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUxNCwgLi1mczE0eyBmb250LXNpemU6MC44NzVyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMTUsIC4tZnMxNXsgZm9udC1zaXplOjAuOTM4cmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTE2LCAuLWZzMTZ7IGZvbnQtc2l6ZToxcmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTE3LCAuLWZzMTd7IGZvbnQtc2l6ZToxLjA2M3JlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUxOCwgLi1mczE4eyBmb250LXNpemU6MS4xMjVyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMTksIC4tZnMxOXsgZm9udC1zaXplOjEuMTg4cmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTIwLCAuLWZzMjB7IGZvbnQtc2l6ZToxLjI1cmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTIxLCAuLWZzMjF7IGZvbnQtc2l6ZToxLjMxM3JlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUyMiwgLi1mczIyeyBmb250LXNpemU6MS4zNzVyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMjMsIC4tZnMyM3sgZm9udC1zaXplOjEuNDM4cmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTI0LCAuLWZzMjR7IGZvbnQtc2l6ZToxLjVyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMjUsIC4tZnMyNXsgZm9udC1zaXplOjEuNTYzcmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTI2LCAuLWZzMjZ7IGZvbnQtc2l6ZToxLjYyNXJlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUyNywgLi1mczI3eyBmb250LXNpemU6MS42ODhyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMjgsIC4tZnMyOHsgZm9udC1zaXplOjEuNzVyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMjksIC4tZnMyOXsgZm9udC1zaXplOjEuODEzcmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTMwLCAuLWZzMzB7IGZvbnQtc2l6ZToxLjg3NXJlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUzMSwgLi1mczMxeyBmb250LXNpemU6MS45MzhyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMzIsIC4tZnMzMnsgZm9udC1zaXplOjJyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMzMsIC4tZnMzM3sgZm9udC1zaXplOjIuMDYzcmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTM0LCAuLWZzMzR7IGZvbnQtc2l6ZToyLjEyNXJlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUzNSwgLi1mczM1eyBmb250LXNpemU6Mi4xODhyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMzYsIC4tZnMzNnsgZm9udC1zaXplOjIuMjVyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplMzcsIC4tZnMzN3sgZm9udC1zaXplOjIuMzEzcmVtICFpbXBvcnRhbnQ7fSAuLWZvbnQtc2l6ZTM4LCAuLWZzMzh7IGZvbnQtc2l6ZToyLjM3NXJlbSAhaW1wb3J0YW50O30gLi1mb250LXNpemUzOSwgLi1mczM5eyBmb250LXNpemU6Mi40MzhyZW0gIWltcG9ydGFudDt9IC4tZm9udC1zaXplNDAsIC4tZnM0MHsgZm9udC1zaXplOjIuNXJlbSAhaW1wb3J0YW50O30gLi1yZWQtbGluZS1oMzV7IGhlaWdodDozNXB4OyBtYXJnaW4tYm90dG9tOi0zNXB4OyBwb3NpdGlvbjpyZWxhdGl2ZTsgdG9wOi0yNXB4OyB9ICNicmVhZGNydW1ic3sgZm9udC1zaXplOjFyZW0gOyBtYXJnaW4tbGVmdDoxMHB4OyBtYXJnaW4tdG9wOjhweDsgbWFyZ2luLWJvdHRvbToxNXB4OyBjb2xvcjojNzU3NTc1OyB9IC5Vc2VkVmRwMk1vYmlsZSAjYnJlYWRjcnVtYnN7IGZvbnQtc2l6ZTowLjlyZW07IGNvbG9yOiMyMjIyMjI7IGZvbnQtd2VpZ2h0OmJvbGQ7IHBhZGRpbmc6MTBweDsgbWFyZ2luOjA7IGxpbmUtaGVpZ2h0OjEuMjVyZW07IH0gI2JyZWFkY3J1bWJzIGF7IGNvbG9yOiM3NTc1NzU7IH0gI2NhcnByb29mX21haW4uY2FycHJvb2ZfbWFpbnsgd2lkdGg6MzQwcHg7IGhlaWdodDphdXRvOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7IHBhZGRpbmc6MjBweDsgZGlzcGxheTpub25lOyB6LWluZGV4Ojk5OTk7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgYm9yZGVyLXJhZGl1czo1cHg7IHBvc2l0aW9uOmZpeGVkOyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpOyAtbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKTsgbGVmdDo1MCU7IHRvcDo1MCU7IH0gI2NhcnByb29mX21haW4gLmNhcnByb29mQ2xvc2VCdXR0b257IGZsb2F0OnJpZ2h0OyB0b3A6MDsgfSAjY2FycHJvb2ZfbWFpbiAuY2FycHJvb2ZNYWluRGl2IHsgd2lkdGg6MTAwJTsgaGVpZ2h0OmF1dG87IHBhZGRpbmc6MDsgYmFja2dyb3VuZDojZmZmOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IHBvc2l0aW9uOnJlbGF0aXZlOyBmbG9hdDpsZWZ0OyB9ICNjYXJwcm9vZl9tYWluIC5jYXJwcm9vZk1haW5EaXYgVUx7IHdpZHRoOjEwMCU7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgcGFkZGluZzowICFpbXBvcnRhbnQ7IH0gI2NhcnByb29mX21haW4gLmNhcnByb29mTWFpbkRpdiBVTCBMSSB7IGxpc3Qtc3R5bGUtdHlwZTpub25lOyB3aWR0aDoxMDAlOyBmbG9hdDpsZWZ0OyBwYWRkaW5nOjAgMCA1cHggMDsgfSAjY2FycHJvb2ZfbWFpbiAuY2FycHJvb2ZfZmllbGR7IG1hcmdpbi1ib3R0b206N3B4OyB9ICNjYXJwcm9vZl9tYWluIC5jYXJwcm9vZk1lc3NhZ2V7IGZvbnQtc2l6ZToxcmVtOyBjb2xvcjojMDAwOyBmb250LXdlaWdodDpub3JtYWw7IHBhZGRpbmctYm90dG9tOjE1cHg7IHBvc2l0aW9uOnJlbGF0aXZlOyBmbG9hdDpsZWZ0OyB3aWR0aDoxMDAlOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0gI2lubmVyUGFnZURpdnsgZGlzcGxheTp0YWJsZTsgfSAjY2FycHJvb2ZfbWFpbiAuY2FycHJvb2ZfbGFiZWx7IGZvbnQtc2l6ZToxcmVtOyBjb2xvcjojNjY2NjY2OyBmb250LXdlaWdodDpib2xkOyBkaXNwbGF5OmJsb2NrOyBmbG9hdDpsZWZ0OyBtYXJnaW46MDsgdGV4dC1hbGlnbjpsZWZ0OyB3aWR0aDoxMDAlOyBsaW5lLWhlaWdodDoyNXB4OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0gI2NhcnByb29mX21haW4gLmNhcnByb29mX2lucHV0eyBmb250LXNpemU6MXJlbTsgcGFkZGluZzo1cHg7IGJvcmRlcjoxcHggc29saWQgI2I5YmRjMTsgd2lkdGg6MTAwJTsgY29sb3I6Izc5Nzk3OTsgYm94LXNpemluZzpib3JkZXItYm94OyBtYXJnaW4tYm90dG9tOjEwcHg7IGJvcmRlci1yYWRpdXM6NXB4OyB9ICNjYXJwcm9vZl9tYWluIC5jYXJwcm9vZl9pbnB1dDpmb2N1cyB7IGJhY2tncm91bmQtY29sb3I6I0Y0RjRGNDsgY29sb3I6IzAwMDAwMCAhaW1wb3J0YW50OyB9ICNjYXJwcm9vZl9tYWluIC5waG9uZUlucHV0eyBmb250LXNpemU6MXJlbTsgcGFkZGluZzo1cHg7IGJvcmRlcjoxcHggc29saWQgI2I5YmRjMTsgd2lkdGg6NDdweDsgbWFyZ2luLXJpZ2h0OjVweDsgY29sb3I6Izc5Nzk3OTsgYm9yZGVyLXJhZGl1czo1cHg7IH0gI2NhcnByb29mX21haW4gLnBob25lSW5wdXQ6Zm9jdXMgeyBiYWNrZ3JvdW5kLWNvbG9yOiNGNEY0RjQ7IGNvbG9yOiMwMDAwMDA7IH0gI2NhcnByb29mX21haW4gLmNhcnByb29mX2J1dHRvbklFIHsgYm9yZGVyOjFweCBzb2xpZCAjQzgzRjQxOyBtYXJnaW46MTBweCAxMHB4IDEwcHggMDsgcGFkZGluZzozcHggMTBweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGZsb2F0OnJpZ2h0OyB3aWR0aDo2MHB4OyBjb2xvcjojZmZmOyBjdXJzb3I6cG9pbnRlcjsgYm9yZGVyLXRvcC1jb2xvcjojQzgzRjQxOyBib3JkZXItcmlnaHQtY29sb3I6I0M4M0Y0MTsgYm9yZGVyLWJvdHRvbS1jb2xvcjojQzgzRjQxOyBib3JkZXItbGVmdC1jb2xvcjojQzgzRjQxOyBib3JkZXItdG9wLXdpZHRoOjFweDsgYm9yZGVyLXJpZ2h0LXdpZHRoOjFweDsgYm9yZGVyLWJvdHRvbS13aWR0aDoxcHg7IGJvcmRlci1sZWZ0LXdpZHRoOjFweDsgYm9yZGVyLXRvcC1zdHlsZTpzb2xpZDsgYm9yZGVyLXJpZ2h0LXN0eWxlOnNvbGlkOyBib3JkZXItYm90dG9tLXN0eWxlOnNvbGlkOyBib3JkZXItbGVmdC1zdHlsZTpzb2xpZDsgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czo4cHg7IGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOjhweDsgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6OHB4OyBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjhweDsgYm94LXNoYWRvdzowcHggMnB4IDNweCAjNjY2OyBiYWNrZ3JvdW5kLWltYWdlOm5vbmU7IGJhY2tncm91bmQtYXR0YWNobWVudDpzY3JvbGw7IGJhY2tncm91bmQtcmVwZWF0OnJlcGVhdDsgYmFja2dyb3VuZC1wb3NpdGlvbjowIDA7IGJhY2tncm91bmQtc2l6ZTphdXRvOyBiYWNrZ3JvdW5kLW9yaWdpbjpwYWRkaW5nLWJveDsgYmFja2dyb3VuZC1jbGlwOmJvcmRlci1ib3g7IGJhY2tncm91bmQtY29sb3I6cmdiKDIwMCwgNjMsIDY1KTsgZm9udC13ZWlnaHQ6bm9ybWFsOyB9ICNjYXJwcm9vZl9tYWluIC5jYXJwcm9vZl9idXR0b25JRUhvdmVyIHsgYmFja2dyb3VuZC1jb2xvcjojQzgzRjQxOyBmb250LXdlaWdodDpib2xkOyB9ICNjYXJwcm9vZl9tYWluIC5jYXJwcm9vZl9idXR0b24geyBmb250LXNpemU6MS4ycmVtOyBmbG9hdDpyaWdodDsgbWFyZ2luOjI1cHggMCAwOyBmb250LXdlaWdodDpub3JtYWw7IGxpbmUtaGVpZ2h0OjFyZW07IHBhZGRpbmc6MTBweCAxNXB4OyBjdXJzb3I6cG9pbnRlcjsgY29sb3I6I2ZmZjsgdGV4dC1hbGlnbjpjZW50ZXI7IHRleHQtc2hhZG93OjAgLTFweCAxcHggIzY0Nzk5ZTsgYmFja2dyb3VuZDojYmIwMDAzOyBiYWNrZ3JvdW5kOi1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgI0M4M0Y0MSAwJSwgI2JiMDAwMyAxMDAlKTsgYmFja2dyb3VuZDotd2Via2l0LWdyYWRpZW50KGxpbmVhciwgMCUgMCUsIDAlIDEwMCUsIGZyb20oI0M4M0Y0MSksIHRvKCNiYjAwMDMpKTsgYm9yZGVyOjFweCBzb2xpZCAjNWM2ZjkxOyAtbW96LWJvcmRlci1yYWRpdXM6NXB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NXB4OyBib3JkZXItcmFkaXVzOjVweDsgd2lkdGg6MTAwJTsgYm94LXNpemluZzpib3JkZXItYm94OyB9ICNjYXJwcm9vZl9tYWluIC5jYXJwcm9vZl9idXR0b246aG92ZXIgeyBiYWNrZ3JvdW5kOiNDODNGNDE7IGN1cnNvcjpwb2ludGVyOyB9ICNjYXJwcm9vZl9kaWFsb2ctb3ZlcmxheSB7IGJhY2tncm91bmQ6cmdiYSgwLDAsMCwuOCk7IHBvc2l0aW9uOmZpeGVkOyB0b3A6MDsgbGVmdDowOyByaWdodDowOyBib3R0b206MDsgei1pbmRleDo5OTk4OyBkaXNwbGF5Om5vbmU7IH0gLmNhcnByb29mLWJhZGdlLmRlc2t0b3AgeyBtYXJnaW4tbGVmdDotMTVweDsgaGVpZ2h0OjU2cHg7IG92ZXJmbG93OmhpZGRlbjsgbWFyZ2luLXRvcDotMTBweDsgZmxvYXQ6bGVmdDsgfSAucHJlUHJvY2Vzc29ySHRtbENhclBvb2ZBUElyZXBvcnQuY2FycHJvb2YtYmFkZ2UuZGVza3RvcCwgLnByZVByb2Nlc3NvckNhclBvb2ZBUElyZXBvcnRWNS5jYXJwcm9vZi1iYWRnZS5kZXNrdG9wLCAucHJlUHJvY2Vzc29ySHRtbENhclByb29mRGVmYXVsdC5jYXJwcm9vZi1iYWRnZS5kZXNrdG9wIHsgd2lkdGg6MTA2cHg7IG1hcmdpbjoycHggNXB4IDAgMDsgZmxvYXQ6bGVmdDsgfSAjY2FycHJvb2ZfbWFpbiBpbWcgeyB3aWR0aDo1MCU7IGZsb2F0OmxlZnQ7IHBvc2l0aW9uOnJlbGF0aXZlOyBtYXJnaW46MCAwIDE1cHggMDsgfSAjYXNQb3BVcHsgYmFja2dyb3VuZDojZmZmZmZmOyB3aWR0aDo2MDBweDsgcGFkZGluZzozMHB4OyBjb2xvcjojMDAwMDAwOyB6LWluZGV4OjEwMDAwMjE7IH0gI2FzUG9wVXAgLnBvcHVwLXBvbGljeSB7IG1pbi1oZWlnaHQ6MTAwcHg7IG1heC1oZWlnaHQ6MTUwcHg7IG92ZXJmbG93LXk6YXV0bzsgfSAucG9wdXAtcG9saWN5IGEgeyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyBjb2xvcjpibHVlOyB9ICNhc1BvcFVwIC5hc1RpdGxleyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC1zaXplOjIuMjVyZW0gOyBmb250LXdlaWdodDo7IG1hcmdpbi1ib3R0b206MjBweDsgfSAjYXNQb3BVcCAuYnRuRXhwbGljaXR7IGZsb2F0OmxlZnQ7IHBhZGRpbmctbGVmdDo3MHB4OyB3aWR0aDoxMDBweDsgfSAjYXNQb3BVcCAuYnRuSW1wbGljaXR7IGZsb2F0OnJpZ2h0OyB3aWR0aDoxMDBweDsgcGFkZGluZy1yaWdodDo3MHB4OyB9ICNhc1B1cmNoYXNlSW50ZW50LnJldmVhbC1tb2RhbCBzcGFuLmpxVHJhbnNmb3JtUmFkaW9XcmFwcGVyeyBwYWRkaW5nOjA7IG1hcmdpbjo2cHggNHB4IDA7IH0gI2FzUHVyY2hhc2VJbnRlbnQgLnBvcHVwLXBvbGljeSB7IG1heC1oZWlnaHQ6MTcwcHg7IG92ZXJmbG93LXk6YXV0bzsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAjYXNQdXJjaGFzZUludGVudCAuYXNQSVRpdGxleyB0ZXh0LWFsaWduOmxlZnQ7IGZvbnQtc2l6ZToxLjU2M3JlbSA7IG1hcmdpbi1ib3R0b206MDsgcGFkZGluZy1ib3R0b206MTBweDsgZGlzcGxheTpibG9jazsgfSAjYXNQdXJjaGFzZUludGVudCAudmlUZXh0eyBjbGVhcjpib3RoOyBmb250LXdlaWdodDpib2xkOyBwYWRkaW5nLWJvdHRvbToxMHB4OyB9ICNhc1B1cmNoYXNlSW50ZW50IC52aU9wdGlvbnN7IGxpc3Qtc3R5bGU6bm9uZTsgcGFkZGluZzo1cHg7IG1hcmdpbi1ib3R0b206M3B4OyB9ICNhc1B1cmNoYXNlSW50ZW50IC52aU9wdGlvbnMgbGkgeyBwYWRkaW5nOjJweDsgfSAjYXNQdXJjaGFzZUludGVudCAudmlPcHRpb25zIGxpeyBjbGVhcjpib3RoOyBmb250LXNpemU6MTBwdDsgfSAjYXNQdXJjaGFzZUludGVudCBsaSBsYWJlbHsgZm9udC1zaXplOjEwcHQ7IH0gI2FzUHVyY2hhc2VJbnRlbnQgLmJ1dHRvbkRlZmF1bHRDb2xvciB7IG1hcmdpbjowIGF1dG8gNXB4OyBkaXNwbGF5OmJsb2NrOyBjbGVhcjpib3RoOyB9ICNhc1B1cmNoYXNlSW50ZW50IC5zdGVwcyB7IGxpc3Qtc3R5bGU6aW5zaWRlIG5vbmUgbm9uZTsgfSAjYXNQdXJjaGFzZUludGVudCAuc3RlcHMgPiBsaXsgYmFja2dyb3VuZDojZmZmOyBib3JkZXI6MXB4IHNvbGlkICNiYmJiYmI7IGJvcmRlci13aWR0aDowIDFweCAxcHggMDsgcGFkZGluZzoxNXB4OyBtYXJnaW4tYm90dG9tOjE1cHg7IGZvbnQtc2l6ZToxMHB0OyB9ICNhc1B1cmNoYXNlSW50ZW50IC5hc3llc25vIHsgZmxvYXQ6bGVmdDsgcGFkZGluZy1yaWdodDoxMHB4OyB3aWR0aDo5MHB4OyB9ICNhc1B1cmNoYXNlSW50ZW50IC5hc3llc3sgcGFkZGluZy1sZWZ0OjkwcHg7IHdpZHRoOjcwcHg7IH0gLmNvbnNlbnQuZGlzY2xhaW1lciB7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7IGNvbG9yOmJsdWU7IGFsaWduLXNlbGY6Y2VudGVyOyBtYXJnaW4tYm90dG9tOnZhcigtLXMtMyk7IGN1cnNvcjpoZWxwOyB9IC5jdXN0b201X2xlZnQsIC5jdXN0b20yNV9sZWZ0LCAuY3VzdG9tMzVfbGVmdCwgLmN1c3RvbTQ1X2xlZnQsIC5jdGFfcHJpY2UsLmN0YV9jcmVkaXQsLmN0YV90ZXN0RHJpdmUsLmN0YV9ldmFsLC5jdGFfc3ZjcHJvbW8sLmN0YV9zZXJ2aWNlLC5jdGFfcGFydHMsLmN0YV90aXJlcyB7IHdpZHRoOjI4MHB4OyBoZWlnaHQ6NjFweDsgcGFkZGluZzowIDE1cHggMCA2MHB4OyBkaXNwbGF5OnRhYmxlLWNlbGw7IHZlcnRpY2FsLWFsaWduOm1pZGRsZTsgZm9udC1zaXplOjFyZW0gOyBmb250LXdlaWdodDpib2xkOyBjdXJzb3I6cG9pbnRlcjsgY29sb3I6IzE5MTkxOTsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYm94MjUucG5nJykgbm8tcmVwZWF0IHNjcm9sbCBsZWZ0IHRvcDsgYmFja2dyb3VuZC1zaXplOjU4OXB4IDU1MHB4OyB9IC5jdGFfcHJpY2UuYWx0OmhvdmVyLCAuY3RhX2NyZWRpdC5hbHQ6aG92ZXIsIC5jdGFfdGVzdERyaXZlLmFsdDpob3ZlciwgLmN0YV9ldmFsLmFsdDpob3ZlciwgLmN0YV9zZXJ2aWNlLmFsdDpob3ZlciwgLmN0YV9wYXJ0cy5hbHQ6aG92ZXIsIC5jdGFfdGlyZXMuYWx0OmhvdmVyLCAuY3RhX3N2Y3Byb21vLmFsdDpob3ZlciB7IGNvbG9yOiMxOTE5MTk7IH0gLmN1c3RvbTU1X2xlZnQsIC5jdXN0b20yNTVfbGVmdCwgLmN1c3RvbTM1NV9sZWZ0LCAuY3VzdG9tNDU1X2xlZnQsIC5jdGFfcHJpY2UuYWx0LC5jdGFfcHJpY2U6aG92ZXIsIC5jdGFfY3JlZGl0LmFsdCwgLmN0YV9jcmVkaXQ6aG92ZXIsIC5jdGFfdGVzdERyaXZlLmFsdCwgLmN0YV90ZXN0RHJpdmU6aG92ZXIsIC5jdGFfZXZhbC5hbHQsIC5jdGFfZXZhbDpob3ZlciwgLmN0YV9zZXJ2aWNlLmFsdCwgLmN0YV9zZXJ2aWNlOmhvdmVyLCAuY3RhX3BhcnRzLmFsdCwgLmN0YV9wYXJ0czpob3ZlciwgLmN0YV90aXJlcy5hbHQsIC5jdGFfdGlyZXM6aG92ZXIsIC5jdGFfc3ZjcHJvbW8uYWx0LCAuY3RhX3N2Y3Byb21vOmhvdmVyIHsgY29sb3I6I0ZGRkZGRjsgfSAuY3RhX3ByaWNlLCAuY3RhX3ByaWNlLmFsdDpob3ZlciB7IGJhY2tncm91bmQtcG9zaXRpb246MCAwOyB9IC5jdGFfcHJpY2UuYWx0LCAuY3RhX3ByaWNlOmhvdmVyIHsgYmFja2dyb3VuZC1wb3NpdGlvbjotMzA5cHggMDsgfSAuY3RhX2NyZWRpdCwgLmN0YV9jcmVkaXQuYWx0OmhvdmVyIHsgYmFja2dyb3VuZC1wb3NpdGlvbjpsZWZ0IC02N3B4OyB9IC5jdGFfY3JlZGl0LmFsdCwgLmN0YV9jcmVkaXQ6aG92ZXIgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMDlweCAtNjdweDsgfSAuY3RhX3Rlc3REcml2ZSwgLmN0YV90ZXN0RHJpdmUuYWx0OmhvdmVyIHsgYmFja2dyb3VuZC1wb3NpdGlvbjpsZWZ0IC0xMzVweDsgfSAuY3RhX3Rlc3REcml2ZS5hbHQsIC5jdGFfdGVzdERyaXZlOmhvdmVyIHsgYmFja2dyb3VuZC1wb3NpdGlvbjotMzA5cHggLTEzNXB4OyB9IC5jdGFfZXZhbCwgLmN0YV9ldmFsLmFsdDpob3ZlciB7IGJhY2tncm91bmQtcG9zaXRpb246bGVmdCAtMjA0cHg7IH0gLmN0YV9ldmFsLmFsdCwgLmN0YV9ldmFsOmhvdmVyIHsgYmFja2dyb3VuZC1wb3NpdGlvbjotMzA5cHggLTIwNHB4OyB9IC5jdGFfc3ZjcHJvbW8sIC5jdGFfc3ZjcHJvbW8uYWx0OmhvdmVyIHsgYmFja2dyb3VuZC1wb3NpdGlvbjpsZWZ0IC0yNzNweDsgfSAuY3RhX3N2Y3Byb21vLmFsdCwgLmN0YV9zdmNwcm9tbzpob3ZlciB7IGJhY2tncm91bmQtcG9zaXRpb246LTMwOXB4IC0yNzNweDsgfSAuY3RhX3NlcnZpY2UsIC5jdGFfc2VydmljZS5hbHQ6aG92ZXIgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmxlZnQgLTM0MXB4OyB9IC5jdGFfc2VydmljZS5hbHQsIC5jdGFfc2VydmljZTpob3ZlciB7IGJhY2tncm91bmQtcG9zaXRpb246LTMwOXB4IC0zNDFweDsgfSAuY3RhX3BhcnRzLCAuY3RhX3BhcnRzLmFsdDpob3ZlciB7IGJhY2tncm91bmQtcG9zaXRpb246bGVmdCAtNDEwcHg7IH0gLmN0YV9wYXJ0cy5hbHQsIC5jdGFfcGFydHM6aG92ZXIgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMDlweCAtNDEwcHg7IH0gLmN0YV90aXJlcywgLmN0YV90aXJlcy5hbHQ6aG92ZXIgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmxlZnQgLTQ4MnB4OyB9IC5jdGFfdGlyZXMuYWx0LCAuY3RhX3RpcmVzOmhvdmVyIHsgYmFja2dyb3VuZC1wb3NpdGlvbjotMzA5cHggLTQ4MnB4OyB9IC5jdGFfc2VydmljZS5oaWRlX3RleHQsIC5jdGFfcGFydHMuaGlkZV90ZXh0LCAuY3RhX3RpcmVzLmhpZGVfdGV4dCwgLmN0YV9wcmljZS5oaWRlX3RleHQsIC5jdGFfY3JlZGl0LmhpZGVfdGV4dCwgLmN0YV90ZXN0RHJpdmUuaGlkZV90ZXh0LCAuY3RhX2V2YWwuaGlkZV90ZXh0LCAuY3RhX3N2Y3Byb21vLmhpZGVfdGV4dCB7IHRleHQtaW5kZW50Oi0yMDAwZW07IH0gYm9keS5GUkVOQ0ggLmN0YV9wcmljZS5jdXN0b20sIGJvZHkuRlJFTkNIIC5jdGFfcHJpY2UuY3VzdG9tOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9ibGFuay5naWYnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfY3JlZGl0LmN1c3RvbSwgYm9keS5GUkVOQ0ggLmN0YV9jcmVkaXQuY3VzdG9tOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9ibGFuay5naWYnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfdGVzdERyaXZlLmN1c3RvbSwgYm9keS5GUkVOQ0ggLmN0YV90ZXN0RHJpdmUuY3VzdG9tOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9ibGFuay5naWYnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfZXZhbC5jdXN0b20sIGJvZHkuRlJFTkNIIC5jdGFfZXZhbC5jdXN0b206aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2JsYW5rLmdpZicpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9zZXJ2aWNlLmN1c3RvbSwgYm9keS5GUkVOQ0ggLmN0YV9zZXJ2aWNlLmN1c3RvbTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYmxhbmsuZ2lmJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3BhcnRzLmN1c3RvbSwgYm9keS5GUkVOQ0ggLmN0YV9wYXJ0cy5jdXN0b206aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2JsYW5rLmdpZicpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV90aXJlcy5jdXN0b20sIGJvZHkuRlJFTkNIIC5jdGFfdGlyZXMuY3VzdG9tOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9ibGFuay5naWYnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfc3ZjcHJvbW8uY3VzdG9tLCBib2R5LkZSRU5DSCAuY3RhX3N2Y3Byb21vLmN1c3RvbTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYmxhbmsuZ2lmJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9wcmljZS5jdXN0b20sIGJvZHkuRU5HTElTSCAuY3RhX3ByaWNlLmN1c3RvbTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYmxhbmsuZ2lmJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9jcmVkaXQuY3VzdG9tLCBib2R5LkVOR0xJU0ggLmN0YV9jcmVkaXQuY3VzdG9tOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9ibGFuay5naWYnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3Rlc3REcml2ZS5jdXN0b20sIGJvZHkuRU5HTElTSCAuY3RhX3Rlc3REcml2ZS5jdXN0b206aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2JsYW5rLmdpZicpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfZXZhbC5jdXN0b20sIGJvZHkuRU5HTElTSCAuY3RhX2V2YWwuY3VzdG9tOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9ibGFuay5naWYnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3NlcnZpY2UuY3VzdG9tLCBib2R5LkVOR0xJU0ggLmN0YV9zZXJ2aWNlLmN1c3RvbTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYmxhbmsuZ2lmJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9wYXJ0cy5jdXN0b20sIGJvZHkuRU5HTElTSCAuY3RhX3BhcnRzLmN1c3RvbTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYmxhbmsuZ2lmJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV90aXJlcy5jdXN0b20sIGJvZHkuRU5HTElTSCAuY3RhX3RpcmVzLmN1c3RvbTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYmxhbmsuZ2lmJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9zdmNwcm9tby5jdXN0b20sIGJvZHkuRU5HTElTSCAuY3RhX3N2Y3Byb21vLmN1c3RvbTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYmxhbmsuZ2lmJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3ByaWNlLmJsYWNrLCBib2R5LkZSRU5DSCAuY3RhX3ByaWNlLmJsYWNrOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfcHJpY2VfYmxhY2tfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX2NyZWRpdC5ibGFjaywgYm9keS5GUkVOQ0ggLmN0YV9jcmVkaXQuYmxhY2s6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9maW5hbmNlX2JsYWNrX2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV90ZXN0RHJpdmUuYmxhY2ssIGJvZHkuRlJFTkNIIC5jdGFfdGVzdERyaXZlLmJsYWNrOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfdGVzdGRyaXZlX2JsYWNrX2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9ldmFsLmJsYWNrLCBib2R5LkZSRU5DSCAuY3RhX2V2YWwuYmxhY2s6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV90cmFkZWluX2JsYWNrX2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9zZXJ2aWNlLmJsYWNrLCBib2R5LkZSRU5DSCAuY3RhX3NlcnZpY2UuYmxhY2s6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9zZXJ2aWNlX2JsYWNrX2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9wYXJ0cy5ibGFjaywgYm9keS5GUkVOQ0ggLmN0YV9wYXJ0cy5ibGFjazpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3BhcnRzX2JsYWNrX2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV90aXJlcy5ibGFjaywgYm9keS5GUkVOQ0ggLmN0YV90aXJlcy5ibGFjazpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3RpcmVzX2JsYWNrX2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9zdmNwcm9tby5ibGFjaywgYm9keS5GUkVOQ0ggLmN0YV9zdmNwcm9tby5ibGFjazpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3Byb21vc2VydmljZV9ibGFja19mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3ByaWNlLmJsYWNrLCBib2R5LkVOR0xJU0ggLmN0YV9wcmljZS5ibGFjazpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3ByaWNlX2JsYWNrX2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfY3JlZGl0LmJsYWNrLCBib2R5LkVOR0xJU0ggLmN0YV9jcmVkaXQuYmxhY2s6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9maW5hbmNlX2JsYWNrX2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfdGVzdERyaXZlLmJsYWNrLCBib2R5LkVOR0xJU0ggLmN0YV90ZXN0RHJpdmUuYmxhY2s6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV90ZXN0ZHJpdmVfYmxhY2tfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9ldmFsLmJsYWNrLCBib2R5LkVOR0xJU0ggLmN0YV9ldmFsLmJsYWNrOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfdHJhZGVpbl9ibGFja19lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3NlcnZpY2UuYmxhY2ssIGJvZHkuRU5HTElTSCAuY3RhX3NlcnZpY2UuYmxhY2s6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9zZXJ2aWNlX2JsYWNrX2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfcGFydHMuYmxhY2ssIGJvZHkuRU5HTElTSCAuY3RhX3BhcnRzLmJsYWNrOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfcGFydHNfYmxhY2tfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV90aXJlcy5ibGFjaywgYm9keS5FTkdMSVNIIC5jdGFfdGlyZXMuYmxhY2s6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV90aXJlc19ibGFja19lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3N2Y3Byb21vLmJsYWNrLCBib2R5LkVOR0xJU0ggLmN0YV9zdmNwcm9tby5ibGFjazpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3Byb21vc2VydmljZV9ibGFja19lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfcHJpY2UuYmx1ZSwgYm9keS5GUkVOQ0ggLmN0YV9wcmljZS5ibHVlOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfcHJpY2VfYmx1ZV9mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfY3JlZGl0LmJsdWUsIGJvZHkuRlJFTkNIIC5jdGFfY3JlZGl0LmJsdWU6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9maW5hbmNlX2JsdWVfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3Rlc3REcml2ZS5ibHVlLCBib2R5LkZSRU5DSCAuY3RhX3Rlc3REcml2ZS5ibHVlOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfdGVzdGRyaXZlX2JsdWVfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX2V2YWwuYmx1ZSwgYm9keS5GUkVOQ0ggLmN0YV9ldmFsLmJsdWU6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV90cmFkZWluX2JsdWVfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3NlcnZpY2UuYmx1ZSwgYm9keS5GUkVOQ0ggLmN0YV9zZXJ2aWNlLmJsdWU6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9zZXJ2aWNlX2JsdWVfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3BhcnRzLmJsdWUsIGJvZHkuRlJFTkNIIC5jdGFfcGFydHMuYmx1ZTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3BhcnRzX2JsdWVfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3RpcmVzLmJsdWUsIGJvZHkuRlJFTkNIIC5jdGFfdGlyZXMuYmx1ZTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3RpcmVzX2JsdWVfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3N2Y3Byb21vLmJsdWUsIGJvZHkuRlJFTkNIIC5jdGFfc3ZjcHJvbW8uYmx1ZTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3Byb21vc2VydmljZV9ibHVlX2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfcHJpY2UuYmx1ZSwgYm9keS5FTkdMSVNIIC5jdGFfcHJpY2UuYmx1ZTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3ByaWNlX2JsdWVfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9jcmVkaXQuYmx1ZSwgYm9keS5FTkdMSVNIIC5jdGFfY3JlZGl0LmJsdWU6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9maW5hbmNlX2JsdWVfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV90ZXN0RHJpdmUuYmx1ZSwgYm9keS5FTkdMSVNIIC5jdGFfdGVzdERyaXZlLmJsdWU6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV90ZXN0ZHJpdmVfYmx1ZV9lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX2V2YWwuYmx1ZSwgYm9keS5FTkdMSVNIIC5jdGFfZXZhbC5ibHVlOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfdHJhZGVpbl9ibHVlX2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfc2VydmljZS5ibHVlLCBib2R5LkVOR0xJU0ggLmN0YV9zZXJ2aWNlLmJsdWU6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9zZXJ2aWNlX2JsdWVfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9wYXJ0cy5ibHVlLCBib2R5LkVOR0xJU0ggLmN0YV9wYXJ0cy5ibHVlOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfcGFydHNfYmx1ZV9lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3RpcmVzLmJsdWUsIGJvZHkuRU5HTElTSCAuY3RhX3RpcmVzLmJsdWU6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV90aXJlc19ibHVlX2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfc3ZjcHJvbW8uYmx1ZSwgYm9keS5FTkdMSVNIIC5jdGFfc3ZjcHJvbW8uYmx1ZTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3Byb21vc2VydmljZV9ibHVlX2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9wcmljZS5yZWQsIGJvZHkuRlJFTkNIIC5jdGFfcHJpY2UucmVkOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfcHJpY2VfcmVkX2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9jcmVkaXQucmVkLCBib2R5LkZSRU5DSCAuY3RhX2NyZWRpdC5yZWQ6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9maW5hbmNlX3JlZF9mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfdGVzdERyaXZlLnJlZCwgYm9keS5GUkVOQ0ggLmN0YV90ZXN0RHJpdmUucmVkOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfdGVzdGRyaXZlX3JlZF9mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfZXZhbC5yZWQsIGJvZHkuRlJFTkNIIC5jdGFfZXZhbC5yZWQ6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV90cmFkZWluX3JlZF9mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfc2VydmljZS5yZWQsIGJvZHkuRlJFTkNIIC5jdGFfc2VydmljZS5yZWQ6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9zZXJ2aWNlX3JlZF9mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfcGFydHMucmVkLCBib2R5LkZSRU5DSCAuY3RhX3BhcnRzLnJlZDpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3BhcnRzX3JlZF9mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfdGlyZXMucmVkLCBib2R5LkZSRU5DSCAuY3RhX3RpcmVzLnJlZDpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3RpcmVzX3JlZF9mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRlJFTkNIIC5jdGFfc3ZjcHJvbW8ucmVkLCBib2R5LkZSRU5DSCAuY3RhX3N2Y3Byb21vLnJlZDpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3Byb21vc2VydmljZV9yZWRfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9wcmljZS5yZWQsIGJvZHkuRU5HTElTSCAuY3RhX3ByaWNlLnJlZDpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3ByaWNlX3JlZF9lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX2NyZWRpdC5yZWQsIGJvZHkuRU5HTElTSCAuY3RhX2NyZWRpdC5yZWQ6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9maW5hbmNlX3JlZF9lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3Rlc3REcml2ZS5yZWQsIGJvZHkuRU5HTElTSCAuY3RhX3Rlc3REcml2ZS5yZWQ6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV90ZXN0ZHJpdmVfcmVkX2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfZXZhbC5yZWQsIGJvZHkuRU5HTElTSCAuY3RhX2V2YWwucmVkOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfdHJhZGVpbl9yZWRfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9zZXJ2aWNlLnJlZCwgYm9keS5FTkdMSVNIIC5jdGFfc2VydmljZS5yZWQ6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9zZXJ2aWNlX3JlZF9lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3BhcnRzLnJlZCwgYm9keS5FTkdMSVNIIC5jdGFfcGFydHMucmVkOmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfcGFydHNfcmVkX2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfdGlyZXMucmVkLCBib2R5LkVOR0xJU0ggLmN0YV90aXJlcy5yZWQ6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV90aXJlc19yZWRfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9zdmNwcm9tby5yZWQsIGJvZHkuRU5HTElTSCAuY3RhX3N2Y3Byb21vLnJlZDpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3Byb21vc2VydmljZV9yZWRfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX3ByaWNlLmdyZXksIGJvZHkuRlJFTkNIIC5jdGFfcHJpY2UuZ3JleTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3ByaWNlX2dyZXlfZnIucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkZSRU5DSCAuY3RhX2NyZWRpdC5ncmV5LCBib2R5LkZSRU5DSCAuY3RhX2NyZWRpdC5ncmV5OmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfZmluYW5jZV9ncmV5X2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV90ZXN0RHJpdmUuZ3JleSwgYm9keS5GUkVOQ0ggLmN0YV90ZXN0RHJpdmUuZ3JleTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3Rlc3Rkcml2ZV9ncmV5X2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9ldmFsLmdyZXksIGJvZHkuRlJFTkNIIC5jdGFfZXZhbC5ncmV5OmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfdHJhZGVpbl9ncmV5X2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9zZXJ2aWNlLmdyZXksIGJvZHkuRlJFTkNIIC5jdGFfc2VydmljZS5ncmV5OmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfc2VydmljZV9ncmV5X2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9wYXJ0cy5ncmV5LCBib2R5LkZSRU5DSCAuY3RhX3BhcnRzLmdyZXk6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9wYXJ0c19ncmV5X2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV90aXJlcy5ncmV5LCBib2R5LkZSRU5DSCAuY3RhX3RpcmVzLmdyZXk6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV90aXJlc19ncmV5X2ZyLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5GUkVOQ0ggLmN0YV9zdmNwcm9tby5ncmV5LCBib2R5LkZSRU5DSCAuY3RhX3N2Y3Byb21vLmdyZXk6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9wcm9tb3NlcnZpY2VfZ3JleV9mci5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3ByaWNlLmdyZXksIGJvZHkuRU5HTElTSCAuY3RhX3ByaWNlLmdyZXk6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9wcmljZV9ncmV5X2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfY3JlZGl0LmdyZXksIGJvZHkuRU5HTElTSCAuY3RhX2NyZWRpdC5ncmV5OmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfZmluYW5jZV9ncmV5X2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfdGVzdERyaXZlLmdyZXksIGJvZHkuRU5HTElTSCAuY3RhX3Rlc3REcml2ZS5ncmV5OmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfdGVzdGRyaXZlX2dyZXlfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV9ldmFsLmdyZXksIGJvZHkuRU5HTElTSCAuY3RhX2V2YWwuZ3JleTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3RyYWRlaW5fZ3JleV9lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3NlcnZpY2UuZ3JleSwgYm9keS5FTkdMSVNIIC5jdGFfc2VydmljZS5ncmV5OmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfc2VydmljZV9ncmV5X2VuLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MjgwcHg7IH0gYm9keS5FTkdMSVNIIC5jdGFfcGFydHMuZ3JleSwgYm9keS5FTkdMSVNIIC5jdGFfcGFydHMuZ3JleTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvYWN0aW9uX2J1dHRvbnMvQ1RBX3BhcnRzX2dyZXlfZW4ucG5nJyk7IGJhY2tncm91bmQtc2l6ZToyODBweDsgfSBib2R5LkVOR0xJU0ggLmN0YV90aXJlcy5ncmV5LCBib2R5LkVOR0xJU0ggLmN0YV90aXJlcy5ncmV5OmhvdmVyeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hY3Rpb25fYnV0dG9ucy9DVEFfdGlyZXNfZ3JleV9lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuRU5HTElTSCAuY3RhX3N2Y3Byb21vLmdyZXksIGJvZHkuRU5HTElTSCAuY3RhX3N2Y3Byb21vLmdyZXk6aG92ZXJ7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2FjdGlvbl9idXR0b25zL0NUQV9wcm9tb3NlcnZpY2VfZ3JleV9lbi5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjI4MHB4OyB9IGJvZHkuaGVhZGluZ0NhcHNPbiBoMSwgYm9keS5oZWFkaW5nQ2Fwc09uIGgyLCBib2R5LmhlYWRpbmdDYXBzT24gaDMsIGJvZHkuaGVhZGluZ0NhcHNPbiBzcGFuLmgyLWFsdCwgYm9keS5oZWFkaW5nQ2Fwc09uIHNwYW4uaDMtYWx0LCBib2R5LmhlYWRpbmdDYXBzT24uVXNlZFNycDIgLmNhckJhc2ljcyAuY2FyVGl0bGUgLmRpdkNpdHksIGJvZHkuaGVhZGluZ0NhcHNPbiAudi1jYXJkIC5oZWFkZXItc2VjdGlvbiAub3JnLCBib2R5LmhlYWRpbmdDYXBzT24gI2Zvb3RlciAub3JnLCBib2R5LmhlYWRpbmdDYXBzT24gLmxvZ29hcmVhIC5hZGRyZXNzIC5hZHIgc3BhbjpmaXJzdC1jaGlsZCwgYm9keS5oZWFkaW5nQ2Fwc09uICNmb290ZXIgLnZpdiwgYm9keS5oZWFkaW5nQ2Fwc09uIC5zZWFyY2gtbGlua3Mtd3JhcHBlciAuc2VhcmNoLWxpbmstdGl0bGUsIGJvZHkuaGVhZGluZ0NhcHNPbiAucG9wdXBpemVyQm9keSAjdHJhZGVJbkJhclBvcHVwX2xpbmUxLCBib2R5LmhlYWRpbmdDYXBzT24gLmNhcm91c3NlbCAuY2Fyb3VzZWxUYWJzIC50YWItbGFiZWwsIGJvZHkuaGVhZGluZ0NhcHNPbiAuZm9ybUhlYWRpbmcsIGJvZHkuaGVhZGluZ0NhcHNPbiAuY29tcGFyZS12ZWhpY2xlcy1mb3JtLXRhYmxlIC50cmltLXByZXZpZXcgLmNvbXBhcmUtdGl0bGUgeyB0ZXh0LXRyYW5zZm9ybTpub25lICFpbXBvcnRhbnQ7IH0gYm9keS5oZWFkaW5nQ2Fwc09uIC5jYXJvdXNzZWwgLmNhcm91c2VsVGFicyAudGFiLWxhYmVsIHsgZm9udC1zaXplOjEuMjVyZW07IH0gQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOjEzMDFweCkgeyBib2R5LmhlYWRpbmdDYXBzT24gLmRpdkNlcnRpZmljYXRpb25CbG9jayBoMi5kZWZhdWx0IHsgZm9udC1zaXplOjEuNHJlbSAhaW1wb3J0YW50OyB9IH0gLmRpdkNlcnRpZmljYXRpb25CbG9jayBoMiBzcGFuLmljb24sIC5kaXZDZXJ0aWZpY2F0aW9uQmxvY2sgc3Bhbi5oMi1hbHQgc3Bhbi5pY29uIHsgbWluLXdpZHRoOjIwcHg7IH0gLmRpdkNlcnRpZmljYXRpb25CbG9jayAuY2VydC10aXRsZSB7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbi1sZWZ0OjIwcHg7IGZvbnQtc2l6ZToxLjNlbTsgfSAuZGl2Q2VydGlmaWNhdGlvbkJsb2NrIC5jZXJ0LXN1YnRpdGxlIHsgZGlzcGxheTpibG9jazsgbWFyZ2luLWxlZnQ6MjBweDsgbWFyZ2luLWJvdHRvbToxMHB4OyBjb2xvcjojNzc3OyBmb250LXNpemU6MWVtOyBtYXJnaW4tdG9wOjVweDsgfSAuZGl2Q2VydGlmaWNhdGlvbkJsb2NrIC5jZXJ0LWhpZ2hsaWdodGVkLXZhbHVlIHsgYmFja2dyb3VuZC1jb2xvcjojMDAwOyBib3JkZXI6MXB4IHNvbGlkICMwMDA7IGNvbG9yOiNGRkY7IHBhZGRpbmc6MTFweCAyMHB4IDlweCAyMHB4OyBib3JkZXItcmFkaXVzOjNweDsgZGlzcGxheTppbmxpbmUtYmxvY2s7IH0gLklubmVyQm94TGF5ZXIuZGl2Q2VydGlmaWNhdGlvbkJsb2NrLmlzT25lUm93IGltZyB7IG1heC13aWR0aDphdXRvICFpbXBvcnRhbnQ7IH0gLnVzZWRWZHBBY3Rpb25zIC5hY3Rpb24tYm94IGEuYnRuLWRlZmF1bHQgeyB3aWR0aDoxMDAlICFpbXBvcnRhbnQ7IGRpc3BsYXk6YmxvY2sgIWltcG9ydGFudDsgbWFyZ2luLWJvdHRvbToxMHB4ICFpbXBvcnRhbnQ7IH0gLmN0YV9wcmljZTpob3ZlciwgLmN0YV9jcmVkaXQ6aG92ZXIsIC5jdGFfdGVzdERyaXZlOmhvdmVyLCAuY3RhX2V2YWw6aG92ZXIsIC5jdGFfc2VydmljZTpob3ZlciwgLmN0YV9wYXJ0czpob3ZlciwgLmN0YV90aXJlczpob3ZlciwgLmN0YV9zdmNwcm9tbzpob3Zlcnsgb3BhY2l0eTowLjc1OyB9IC5zZWFyY2hfY2VydF9nZW5lcmljeyBoZWlnaHQ6NDRweDsgbWFyZ2luOjJweCA1cHggMCAwOyBmbG9hdDpsZWZ0OyBtYXJnaW4tdG9wOi0wcHg7IH0gI25ld0NhckluVXNlZFBhZ2V7IG1hcmdpbi10b3A6LTJweDsgbWFyZ2luLWJvdHRvbTo1cHg7IGRpc3BsYXk6bm9uZTsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0gI25ld0NhckluVXNlZFBhZ2UgLmJveDI4OF90b3B7IGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL3JpZ2h0X2JveDRfdG9wLnBuZycpIG5vLXJlcGVhdCBzY3JvbGwgbGVmdCB0b3AgdHJhbnNwYXJlbnQ7IH0gI25ld0NhckluVXNlZFBhZ2UgLmJveDI4ODBfbWlkeyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9yaWdodF9ib3g0X21pZC5wbmcnKSByZXBlYXQteSBzY3JvbGwgbGVmdCB0b3AgdHJhbnNwYXJlbnQgfSAjbmV3Q2FySW5Vc2VkUGFnZSAuYm94Mjg4X2Zvb3Rlcl9xc3sgYmFja2dyb3VuZCA6dXJsKCcvaW1hZ2VzL3JpZ2h0X2JveDRfZm9vdGVyLnBuZycpIG5vLXJlcGVhdCBzY3JvbGwgbGVmdCB0b3AgdHJhbnNwYXJlbnQgfSAjbmV3Q2FySW5Vc2VkUGFnZV9zY3JhdGNoUHJpY2V7IHdpZHRoOjExMHB4OyBoZWlnaHQ6MzVweDsgZmxvYXQ6cmlnaHQ7IHBvc2l0aW9uOnJlbGF0aXZlOyBsZWZ0Oi04M3B4OyBkaXNwbGF5Om5vbmU7IH0gI25ld0NhckluVXNlZFBhZ2VfdGl0bGV7IGRpc3BsYXk6YmxvY2s7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC1zaXplOjAuOTM4cmVtIDtmb250LXdlaWdodDpib2xkO3RleHQtZGVjb3JhdGlvbjpub25lOyB9IHVsI2NyZWRpdF9kcml2ZXRyYWluLCB1bCNjcmVkaXRfZnVlbHR5cGUsIHVsI2NyZWRpdF9ib2R5VHlwZXMgeyBsaXN0LXN0eWxlOm5vbmU7IGZsb2F0OmxlZnQ7IHdpZHRoOjMzJTsgcGFkZGluZy1ib3R0b206MTBweDsgfSB1bCNjcmVkaXRfZHJpdmV0cmFpbiBsaSA+IGxhYmVsLCB1bCNjcmVkaXRfZnVlbHR5cGUgbGkgPiBsYWJlbCwgdWwjY3JlZGl0X2JvZHlUeXBlcyBsaSA+IGxhYmVseyBkaXNwbGF5OmJsb2NrOyBwYWRkaW5nLWJvdHRvbTo1cHg7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzI0MjQyNDsgZmxvYXQ6bm9uZTsgfSB1bCNjcmVkaXRfZHJpdmV0cmFpbiBsaSA+IGRpdiwgdWwjY3JlZGl0X2Z1ZWx0eXBlIGxpID4gZGl2LCB1bCNjcmVkaXRfYm9keVR5cGVzIGxpID4gZGl2eyBkaXNwbGF5OmJsb2NrOyBwYWRkaW5nLWJvdHRvbTo1cHg7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgZm9udC1zaXplOjAuODEzcmVtIDsgY29sb3I6IzAwMDAwMDsgZmxvYXQ6bm9uZTsgfSB1bCNjcmVkaXRfZHJpdmV0cmFpbiBsaSA+IGxhYmVsID4gc3BhbiwgdWwjY3JlZGl0X2Z1ZWx0eXBlIGxpID4gbGFiZWwgPiBzcGFuLCB1bCNjcmVkaXRfYm9keVR5cGVzIGxpID4gbGFiZWwgPiBzcGFueyBtYXJnaW4tcmlnaHQ6OHB4OyBtYXJnaW4tdG9wOjBweDsgfSAjY3JlZGl0X3ZpX2FkdmFuY2VkIGxhYmVseyBmbG9hdDpsZWZ0OyB9ICNjcmVkaXRfdmlfYWR2YW5jZWQgbGFiZWwgZGl2LmxhYmVseyBmbG9hdDpsZWZ0OyBsaW5lLWhlaWdodDozMnB4OyBtYXJnaW4tcmlnaHQ6NnB4OyB3aWR0aDoyMDBweDsgdGV4dC1hbGlnbjpyaWdodDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBmb250LXNpemU6MC44MTNyZW0gOyBjb2xvcjojMjQyNDI0OyB9IC5kZXRhaWxzX2JveCAuYm94Ml9kZXRhaWxzX21pZCAuYm94Ml9kZXRhaWxzX3RleHQsIC5kZXRhaWxzX2JveCAuYm94Ml9kZXRhaWxzX21pZCAuYm94Ml9kZXRhaWxzX3RleHQyNSBzcGFuLCAuZGV0YWlsc19ib3ggLmJveDJfZGV0YWlsc19taWQgLmJveDJfZGV0YWlsc190ZXh0IHNwYW57IGNvbG9yOiMwMDJjNWY7IH0gLnVzcC1jb2xvciB7IGNvbG9yOiMwMDJjNWY7IH0gLm15Y2Fyb3VzZWxfdGR7IGRpc3BsYXk6YmxvY2s7IHdpZHRoOjU2MHB4OyBvdmVyZmxvdzpoaWRkZW47IG1hcmdpbi1sZWZ0OjMwcHg7IG1hcmdpbi10b3A6MTBweDsgfSAudmVoaWNsZUNhcm91c2VseyB3aWR0aDoxOTBweDsgfSAuZGV0YWlsc19ib3gsIC5kZXRhaWxzX2JveCAuYm94Ml9kZXRhaWxzX21pZEV4IHsgYmFja2dyb3VuZDojYjViNWI0OyB9ICNleHRDb2xvclNlbGVjdC5maXhlZFdpZHRoICwgI2ludENvbG9yU2VsZWN0LmZpeGVkV2lkdGggeyB3aWR0aDoyMzBweDsgfSAuY29sb3JDaG9pY2V7IGhlaWdodDozMXB4OyB3aWR0aDozMXB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC1pbmRlbnQ6LTIwMDBlbTsgbGluZS1oZWlnaHQ6MzFweDsgZm9udC1zaXplOjAuOTM4cmVtIDsgZm9udC13ZWlnaHQ6Ym9sZDsgZmxvYXQ6bGVmdDsgYm9yZGVyOjFweCBzb2xpZCAjMDAwOyBtYXJnaW46MnB4OyBjb2xvcjojZmZmOyB9IC5jb2xvckNob2ljZS5jaG9zZW4geyB0ZXh0LWluZGVudDowOyB9IC5jb2xvckNob2ljZS50YW4geyBiYWNrZ3JvdW5kLWNvbG9yOiNkMmI0OGM7IH0gLmNvbG9yQ2hvaWNlLmJsYWNrIHsgYmFja2dyb3VuZC1jb2xvcjojMDAwMDAwOyB9IC5jb2xvckNob2ljZS5nb2xkIHsgYmFja2dyb3VuZC1jb2xvcjojYjI5NjAwOyB9IC5jb2xvckNob2ljZS5icm93biB7IGJhY2tncm91bmQtY29sb3I6IzY2MzMwZTsgfSAuY29sb3JDaG9pY2UuZ3JlZW4geyBiYWNrZ3JvdW5kLWNvbG9yOiMwMDk5MDA7IH0gLmNvbG9yQ2hvaWNlLmdyYXkgeyBiYWNrZ3JvdW5kLWNvbG9yOiM5Nzk3OTc7IH0gLmNvbG9yQ2hvaWNlLmdyZXkgeyBiYWNrZ3JvdW5kLWNvbG9yOiM5Nzk3OTc7IH0gLmNvbG9yQ2hvaWNlLm9yYW5nZSB7IGJhY2tncm91bmQtY29sb3I6I2U2OTQwMDsgfSAuY29sb3JDaG9pY2Uuc2lsdmVyIHsgYmFja2dyb3VuZC1jb2xvcjojYzBjMGMwOyBjb2xvcjojMDAwMDAwOyB9IC5jb2xvckNob2ljZS5tYXV2ZSB7IGJhY2tncm91bmQtY29sb3I6I2Q0NzNkNDsgfSAuY29sb3JDaG9pY2UucmVkIHsgYmFja2dyb3VuZC1jb2xvcjojY2MwMDAwOyB9IC5jb2xvckNob2ljZS53aGl0ZSB7IGJhY2tncm91bmQtY29sb3I6I0ZGRkZGRjsgY29sb3I6IzAwMDAwMDsgfSAuY29sb3JDaG9pY2UueWVsbG93IHsgYmFja2dyb3VuZC1jb2xvcjojZjBjMDAwOyBjb2xvcjojMDAwMDAwOyB9IC5jb2xvckNob2ljZS5ibHVlIHsgYmFja2dyb3VuZC1jb2xvcjojMTkxOWM0OyB9IC5jb2xvckNob2ljZS5jb3BwZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiNBRjQ3NDQ7IH0gLmNvbG9yQ2hvaWNlLnB1cnBsZSB7IGJhY2tncm91bmQtY29sb3I6IzUzMTVCMjsgfSAubGlnaHQtZ3JheSB7IGJhY2tncm91bmQtY29sb3I6IzRiNGM0YzsgY29sb3I6IzAwMDAwMDt9IGEuY29sb3JDaG9pY2UgeyBjb2xvcjojZmZmOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSB0ci5ib3JkZXJfYm90dG9tX2xpbmUgdGQsIHRyLmJvcmRlcl9ib3R0b21fbGluZSB0aCB7IGJvcmRlci1ib3R0b206MXB0IHNvbGlkIGJsYWNrOyB9IC5ib3JkZXJfYm94eyBib3JkZXItcmFkaXVzOjVweDsgbWFyZ2luLWJvdHRvbTo1cHg7IGJhY2tncm91bmQtY29sb3I6cmdiKDI1NSwyNTUsMjU1KTsgLW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0xMDApOyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsMSk7IGJveC1zaGFkb3c6bm9uZTsgY2xlYXI6Ym90aDsgfSAuaG9tZXBhZ2UgLmJvcmRlcl9ib3h7IGJveC1zaGFkb3c6bm9uZSFpbXBvcnRhbnQ7IH0gI2hvbWVfc29jaWFsVGltZWxpbmV7IGJhY2tncm91bmQtY29sb3I6dmFyKC0taG9tZXBhZ2Utc29jaWFsLWJnLWNvbG9yKTsgfSAjZm9vdGVyV3JhcHBlcnsgd2lkdGg6MTAwJTsgbWFyZ2luLXRvcDowcHg7IGNsZWFyOmJvdGg7IHBhZGRpbmctdG9wOjE1cHg7IGNvbG9yOnZhcigtLWZvb3Rlci1pdGVtcy1saW5rLWNvbG9yKTsgY29sb3I6IzAwMDAwMDsgYmFja2dyb3VuZC1jb2xvcjojZTRkY2QzOyBiYWNrZ3JvdW5kLWNvbG9yOiNlNGRjZDM7IH0gI2Zvb3RlcldyYXBwZXIgc3ZnIHsgZmlsbDp2YXIoLS1mb290ZXItbGluay10aXRsZS1jb2wpOyB9IC5jdXN0b21mb3JtX3N1Ym1pdHsgbWFyZ2luLXRvcDoyMHB4OyBtYXJnaW4tYm90dG9tOjIwcHg7IH0gLnNlZU9wdGlvbnN7IGRpc3BsYXk6bm9uZTsgfSAuc3RyaWtlLXByaWNlLCAuc3RyaWtlLXByaWNlLWJsYWNrLCAuc3RyaWtlLXByaWNlLXdoaXRlIHsgZGlzcGxheTppbmxpbmUtYmxvY2s7IHBvc2l0aW9uOnJlbGF0aXZlOyB9IC5zdHJpa2UtcHJpY2U6OmJlZm9yZSwgLnN0cmlrZS1wcmljZS1ibGFjazo6YmVmb3JlLCAuc3RyaWtlLXByaWNlLXdoaXRlOjpiZWZvcmUgeyBjb250ZW50OiIiOyBoZWlnaHQ6MnB4OyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjQwJTsgLW1vei10cmFuc2Zvcm06cm90YXRlKDdkZWcpOyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoN2RlZyk7IHRyYW5zZm9ybTpyb3RhdGUoN2RlZyk7IHRyYW5zZm9ybS1vcmlnaW46NTAlIDUwJSAwOyB3aWR0aDoxMDAlOyB9IC5zdHJpa2UtcHJpY2UuLXRoaW46OmJlZm9yZXsgaGVpZ2h0OjFweDsgfSAuc3RyaWtlLXByaWNlOjpiZWZvcmUgeyBiYWNrZ3JvdW5kOm5vbmUgcmVwZWF0IHNjcm9sbCAwIDAgIzAwMDsgfSAuc3RyaWtlLXByaWNlLWJsYWNrOjpiZWZvcmUgeyBiYWNrZ3JvdW5kOm5vbmUgcmVwZWF0IHNjcm9sbCAwIDAgYmxhY2s7IH0gLnN0cmlrZS1wcmljZS13aGl0ZTo6YmVmb3JlIHsgYmFja2dyb3VuZDpub25lIHJlcGVhdCBzY3JvbGwgMCAwIHdoaXRlOyB9IC5ibHVyLXByaWNlIHsgLXdlYmtpdC1maWx0ZXI6Ymx1cigwLjE1ZW0pOyAtbW96LWZpbHRlcjpibHVyKDAuMTVlbSk7IC1tcy1maWx0ZXI6Ymx1cigwLjE1ZW0pOyAtby1maWx0ZXI6Ymx1cigwLjE1ZW0pOyBmaWx0ZXI6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIGhlaWdodD0nMCcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJz48ZmlsdGVyIGlkPSdzdmdCbHVyJyB4PSctNSUnIHk9Jy01JScgd2lkdGg9JzExMCUnIGhlaWdodD0nMTEwJSc+PGZlR2F1c3NpYW5CbHVyIGluPSdTb3VyY2VHcmFwaGljJyBzdGREZXZpYXRpb249JzUnLz4jc3ZnQmx1ciIpOyBmaWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkJsdXIoUGl4ZWxSYWRpdXM9JzUnKTsgZmlsdGVyOmJsdXIoMC4xNWVtKTsgfSAubGVmdF9ib3h7IGJhY2tncm91bmQtY29sb3I6cmdiKDI1NSwyNTUsMjU1KTsgLW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0xMDApOyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsMSk7IG1hcmdpbi10b3A6MTBweCA7IHBhZGRpbmc6MTBweCAwIDEwcHg7IGZsb2F0OmxlZnQ7IGhlaWdodDphdXRvOyBib3JkZXItcmFkaXVzOjVweDsgYm94LXNoYWRvdzpub25lOyB9IC5idG4tZGVmYXVsdCwgLmJ0bi1zbSwgLmJ0bi1sZywuY3VzdG9tZm9ybV9zdWJtaXQsLnN1Ym1pdHsgLW1vei1ib3JkZXItcmFkaXVzOjNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDsgZGlzcGxheTppbmxpbmUtYmxvY2s7IGN1cnNvcjpwb2ludGVyOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC10cmFuc2Zvcm06dmFyKC0tY2VydC10eHQtdHJhbnNmb3JtLCB2YXIoLS10eHQtdXBwZXIpKTsgfSAuYnRuLWRlZmF1bHR7IGJhY2tncm91bmQtY29sb3I6I2U0ZGNkMzsgfSAuYnRuLWRlZmF1bHQsIC5zdWJtaXQsIC5jdXN0b21mb3JtX3N1Ym1pdCwgaW5wdXRbdHlwZT1idXR0b25dLmJ0bi1kZWZhdWx0LCBpbnB1dFt0eXBlPXN1Ym1pdF0uYnRuLWRlZmF1bHQgeyBwYWRkaW5nOjExcHggMjBweCA5cHggMjBweDsgYm9yZGVyLXJhZGl1czozcHg7IH0gLmJ0bi1zbSwgaW5wdXRbdHlwZT1idXR0b25dLmJ0bi1zbSwgaW5wdXRbdHlwZT1zdWJtaXRdLmJ0bi1zbSB7IGZvbnQtc2l6ZTppbmhlcml0IWltcG9ydGFudDsgcGFkZGluZzo0cHggMTBweCFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6M3B4IWltcG9ydGFudDsgfSAuYnRuLWxnLCBpbnB1dFt0eXBlPWJ1dHRvbl0uYnRuLWxnLCBpbnB1dFt0eXBlPXN1Ym1pdF0uYnRuLWxnIHsgZm9udC1zaXplOjEuMDYzcmVtIDsgcGFkZGluZzoxMnB4IDUwcHg7IGJvcmRlci1yYWRpdXM6NnB4OyBmb250LXdlaWdodDpib2xkOyB9IC5idG4tZGVmYXVsdDpmb2N1cywgLmN1c3RvbWZvcm1fc3VibWl0OmZvY3VzLCAuYnRuLXNtOmZvY3VzLCAuYnRuLWxnOmZvY3VzLCAjZXhpdF9wb3B1cF95ZXM6Zm9jdXMsICNleGl0X3BvcHVwX25vOmZvY3VzIHsgb3V0bGluZTpub25lOyB9IC5idG4tZGVmYXVsdC5hcHBseS1jcmVkaXQgeyBkaXNwbGF5OmlubGluZS1ibG9jazsgdmVydGljYWwtYWxpZ246dG9wOyB3b3JkLXdyYXA6bm9ybWFsOyB3aWR0aDoxMDBweDsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmc6M3B4IDVweDsgZm9udC1zaXplOjAuNzVyZW0gOyB9IC5idG4tZGVmYXVsdCwgLmN1c3RvbWZvcm1fc3VibWl0LCBpbnB1dFt0eXBlPWJ1dHRvbl0uYnRuLWRlZmF1bHQsIGlucHV0W3R5cGU9c3VibWl0XS5idG4tZGVmYXVsdHsgZm9udC1zaXplOjAuOHJlbTsgfSAuYnRuLWRlZmF1bHQsIC5idG4tc20sLmJ0bi1sZywgLnN1Ym1pdCwgI3NsaWRlaXQgaW5wdXQuc2VuZCwgLmN1c3RvbWZvcm1fc3VibWl0IHsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS10YWItY29sb3IpOyBib3JkZXItd2lkdGg6MXB4OyBib3JkZXItc3R5bGU6c29saWQ7IGJvcmRlci1jb2xvcjp2YXIoLS10YWItdGV4dC1jb2xvcik7IGNvbG9yOnZhcigtLXRhYi10ZXh0LWNvbG9yKTsgdGV4dC1zaGFkb3c6bm9uZTsgfSAuYnRuLWRlZmF1bHQuYnRuLWJnLXNhbWUgeyBib3JkZXItY29sb3I6I2U0ZGNkMzsgfSAuYnRuLWRlZmF1bHQuYnRuLWJnLXNhbWU6aG92ZXIgeyBib3JkZXItY29sb3I6IzAwN2ZhNTsgfSAuYnRuLWRlZmF1bHQ6aG92ZXIsIC5jdXN0b21mb3JtX3N1Ym1pdDpob3ZlciwgLmJ0bi1zbTpob3ZlciwgLmJ0bi1sZzpob3ZlciwgLnN1Ym1pdDpob3ZlciwgI3NsaWRlaXQgaW5wdXQuc2VuZDpob3ZlciB7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tbWVudS1ob3Zlci1iZy1jb2xvcik7IGJvcmRlci13aWR0aDoxcHg7IGJvcmRlci1zdHlsZTpzb2xpZDsgYm9yZGVyLWNvbG9yOnZhcigtLW1lbnUtaG92ZXItdGV4dC1jb2xvcik7IGNvbG9yOnZhcigtLW1lbnUtaG92ZXItdGV4dC1jb2xvcik7IH0gLmJ0bi1kZWZhdWx0LnByb21vY29sb3IsIC5idG4tc20ucHJvbW9jb2xvciwgLmJ0bi1sZy5wcm9tb2NvbG9yIHsgYmFja2dyb3VuZC1jb2xvcjojMDAyYzVmOyBib3JkZXI6MXB4IHNvbGlkICMwMDJjNWY7IGNvbG9yOiNmZmZmZmY7IH0gLmJ0bi1kZWZhdWx0LnByb21vY29sb3I6aG92ZXIsIC5idG4tc20ucHJvbW9jb2xvcjpob3ZlciwgLmJ0bi1sZy5wcm9tb2NvbG9yOmhvdmVyeyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IGNvbG9yOiMwMDJjNWY7IH0gLmJ0bi1kZWZhdWx0LmJsYWNrLCAuYnRuLXNtLmJsYWNrLCAuYnRuLWxnLmJsYWNrIHsgYmFja2dyb3VuZC1jb2xvciA6IzAwMDAwMDsgYm9yZGVyIDoxcHggc29saWQgIzAwMDAwMDsgY29sb3IgOiNmZmZmZmY7IH0gLmJ0bi1kZWZhdWx0LmJsYWNrLndpdGhib3JkZXIsIC5idG4tc20uYmxhY2sud2l0aGJvcmRlciwgLmJ0bi1sZy5ibGFjay53aXRoYm9yZGVyIHsgYm9yZGVyIDoxcHggc29saWQgI2ZmZmZmZjsgfSAuYnRuLWRlZmF1bHQuYmxhY2s6aG92ZXIsIC5idG4tc20uYmxhY2s6aG92ZXIsIC5idG4tbGcuYmxhY2s6aG92ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yIDojZmZmZmZmOyBjb2xvcjojMDAwMDAwOyB9IC5idG4tZGVmYXVsdC5ubywgLmJ0bi1zbS5ubywgLmJ0bi1sZy5ubyB7IGJhY2tncm91bmQtY29sb3I6I0ZGRjsgYm9yZGVyOjFweCBzb2xpZCAjNTU1OyBjb2xvcjojMDAwOyB9IC5idG4tZGVmYXVsdC5ubzpob3ZlciwgLmJ0bi1zbS5ubzpob3ZlciwgLmJ0bi1sZy5ubzpob3ZlcnsgYmFja2dyb3VuZC1jb2xvcjojNjY2NjY2OyBib3JkZXI6MXB4IHNvbGlkICM2NjY2NjY7IGNvbG9yOiNGRkZGRkY7IH0gLmJ0bi1kZWZhdWx0LmludmVydCwgLmJ0bi1zbS5pbnZlcnQsIC5idG4tbGcuaW52ZXJ0LCAuYnRuLWRlZmF1bHQuaW52ZXJ0LmZsYXQsIC5idG4tc20uaW52ZXJ0LmZsYXQsIC5idG4tbGcuaW52ZXJ0LmZsYXQgeyBiYWNrZ3JvdW5kOiB2YXIoLS10YWItdGV4dC1jb2xvcik7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tdGFiLXRleHQtY29sb3IpOyBjb2xvcjp2YXIoLS10YWItY29sb3IpOyBib3gtc2hhZG93Om5vbmU7IH0gLmJ0bi1kZWZhdWx0LmludmVydDpob3ZlciwgLmJ0bi1zbS5pbnZlcnQ6aG92ZXIsIC5idG4tbGcuaW52ZXJ0OmhvdmVyLCAuYnRuLWRlZmF1bHQuaW52ZXJ0LmZsYXQ6aG92ZXIsIC5idG4tc20uaW52ZXJ0LmZsYXQ6aG92ZXIsIC5idG4tbGcuaW52ZXJ0LmZsYXQ6aG92ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXRhYi1jb2xvcik7IGJvcmRlci1jb2xvcjp2YXIoLS10YWItdGV4dC1jb2xvcik7IGNvbG9yOnZhcigtLXRhYi10ZXh0LWNvbG9yKTsgfSAuYnRuLWRlZmF1bHQucmVkLCAuYnRuLXNtLnJlZCwgLmJ0bi1sZy5yZWQgeyBiYWNrZ3JvdW5kOiNmZjMzMzMhaW1wb3J0YW50OyBiYWNrZ3JvdW5kLWNvbG9yOiNmZjMzMzMhaW1wb3J0YW50OyBib3JkZXI6MXB4IHNvbGlkICNmNTFhMWEhaW1wb3J0YW50OyBjb2xvcjojRkZGRkZGIWltcG9ydGFudDsgfSAuYnRuLWRlZmF1bHQucmVkOmhvdmVyLCAuYnRuLXNtLnJlZDpob3ZlciwgLmJ0bi1sZy5yZWQ6aG92ZXJ7IGJhY2tncm91bmQ6IzMzMzMzMyFpbXBvcnRhbnQ7IGJhY2tncm91bmQtY29sb3I6IzMzMzMzMyFpbXBvcnRhbnQ7IGJvcmRlcjoxcHggc29saWQgIzMzMzMzMyFpbXBvcnRhbnQ7IGNvbG9yOiNGRkZGRkYhaW1wb3J0YW50OyB9IC5idG4tZGVmYXVsdC53aGl0ZSwgLmJ0bi1zbS53aGl0ZSwgLmJ0bi1sZy53aGl0ZSB7IGJhY2tncm91bmQ6I2ZmZjsgYm9yZGVyOjFweCBzb2xpZCAjMDAwOyBjb2xvcjojMDAwMDAwOyBib3gtc2hhZG93Om5vbmU7IH0gLmRlYWxlci1zZWxlY3Qtd3JhcHBlciB7IGRpc3BsYXk6Z3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnI7IGNvbHVtbi1nYXA6MS41cmVtOyByb3ctZ2FwOjAuNXJlbTsgZ3JpZC1hdXRvLWNvbHVtbnM6MC41ZnI7IG1hcmdpbi1ib3R0b206MTBweDsgbWFyZ2luLXRvcDoxNXB4OyB9IC5kZWFsZXItc2VsZWN0LXdyYXBwZXIgLmJ0biB7IHRleHQtd3JhcDphdXRvOyB0ZXh0LWFsaWduOmxlZnQ7IHBhZGRpbmctbGVmdDoxMHB4OyB0cmFuc2l0aW9uOjAuMnMgZWFzZS1pbi1vdXQ7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgfSAuZGVhbGVyLXNlbGVjdC13cmFwcGVyIC5idG4uZm9jdXNlZCwgLmRlYWxlci1zZWxlY3Qtd3JhcHBlciAuYnRuOmZvY3VzIHsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS10YWItdGV4dC1jb2xvcik7IGJvcmRlci13aWR0aDoxcHg7IGJvcmRlci1zdHlsZTpzb2xpZDsgYm9yZGVyLWNvbG9yOnZhcigtLXRhYi1jb2xvcik7IGNvbG9yOnZhcigtLXRhYi1jb2xvcik7IGJveC1zaGFkb3c6MCA2cHggMTJweCByZ2JhKDAsMCwwLC4xNzUpOyB0cmFuc2Zvcm06dHJhbnNsYXRlWCgycHgpOyB9IC5hcHBseS1jcmVkaXQgeyAtbW96LWJveC1zaGFkb3c6aW5zZXQgMHB4IC0zcHggN3B4IDBweCAjMGQzOTZjOyAtd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMHB4IC0zcHggN3B4IDBweCAjMGQzOTZjOyBib3gtc2hhZG93Omluc2V0IDBweCAtM3B4IDdweCAwcHggIzBkMzk2YzsgYmFja2dyb3VuZDotd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBjb2xvci1zdG9wKDAuMDUsICMzMzVmOTIpLCBjb2xvci1zdG9wKDEsICMwMDJjNWYpKTsgYmFja2dyb3VuZDotbW96LWxpbmVhci1ncmFkaWVudCh0b3AsICMzMzVmOTIgNSUsICMwMDJjNWYgMTAwJSk7IGJhY2tncm91bmQ6LXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAjMzM1ZjkyIDUlLCAjMDAyYzVmIDEwMCUpOyBiYWNrZ3JvdW5kOi1vLWxpbmVhci1ncmFkaWVudCh0b3AsICMzMzVmOTIgNSUsICMwMDJjNWYgMTAwJSk7IGJhY2tncm91bmQ6LW1zLWxpbmVhci1ncmFkaWVudCh0b3AsICMzMzVmOTIgNSUsICMwMDJjNWYgMTAwJSk7IGJhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgIzMzNWY5MiA1JSwgIzAwMmM1ZiAxMDAlKTsgZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjZmYzMzMzJywgZW5kQ29sb3JzdHI9JyNEQjAwMDAnLEdyYWRpZW50VHlwZT0wKTsgYmFja2dyb3VuZC1jb2xvcjojMzM1ZjkyOyBib3JkZXI6MXB4IHNvbGlkICMxYTQ2Nzk7IH0gLmFwcGx5LWNyZWRpdDpob3ZlciB7IGJhY2tncm91bmQ6LXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgY29sb3Itc3RvcCgwLjA1LCAjMzM1ZjkyKSwgY29sb3Itc3RvcCgxLCAjMDAyYzVmKSk7IGJhY2tncm91bmQ6LW1vei1saW5lYXItZ3JhZGllbnQodG9wLCAjMDAyYzVmIDUlLCAjMzM1ZjkyIDEwMCUpOyBiYWNrZ3JvdW5kOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgIzAwMmM1ZiA1JSwgIzMzNWY5MiAxMDAlKTsgYmFja2dyb3VuZDotby1saW5lYXItZ3JhZGllbnQodG9wLCAjMDAyYzVmIDUlLCAjMzM1ZjkyIDEwMCUpOyBiYWNrZ3JvdW5kOi1tcy1saW5lYXItZ3JhZGllbnQodG9wLCAjMDAyYzVmIDUlLCAjMzM1ZjkyIDEwMCUpOyBiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICMwMDJjNWYgNSUsICMzMzVmOTIgMTAwJSk7IGZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI2ZmMzMzMycsIGVuZENvbG9yc3RyPScjREIwMDAwJyxHcmFkaWVudFR5cGU9MCk7IGJhY2tncm91bmQtY29sb3I6IzMzNWY5MjsgfSAub2ZmZXItYnRueyBjb2xvcjp2YXIoLS1idG4tdHh0LWNvbCwgdmFyKC0tdXNlZC1vZmZlci1idG4tdGV4dC1jb2xvciwgI2ZmZikpOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJ0bi1iZy1jb2wsIHZhcigtLXVzZWQtb2ZmZXItYnRuLWJnLWNvbG9yLCB2YXIoLS1wcm9tby1jb2xvcikpKTsgfSA6aXMoLm5ld1ZkcEFjdGlvbnMsIC51c2VkVmRwQWN0aW9ucykgKnsgYm94LXNpemluZzpib3JkZXItYm94OyB9IDppcygubmV3VmRwQWN0aW9ucywgLnVzZWRWZHBBY3Rpb25zKSAucHJvbW9CVE57IHRleHQtYWxpZ246bGVmdDsgfSA6aXMoLm5ld1ZkcEFjdGlvbnMsIC51c2VkVmRwQWN0aW9ucykgLnByb21vQlROOjphZnRlcnsgZm9udC1mYW1pbHk6J0ZvbnQgQXdlc29tZSA1IFBybycsIHNlcmlmOyBmb250LXdlaWdodDo5MDA7IH0gOmlzKC5uZXdWZHBBY3Rpb25zLCAudXNlZFZkcEFjdGlvbnMsIC51c2VkLWRldGFpbHMsIC5uZXctZGV0YWlscykgLnByb21vQlROID4gc3Bhbi5mYXsgZGlzcGxheTpmbGV4OyB3aWR0aDoxLjVlbTsgaGVpZ2h0OjEuNWVtOyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IGNvbG9yOmluaGVyaXQ7IH0gOmlzKC5uZXdWZHBBY3Rpb25zLCAudXNlZFZkcEFjdGlvbnMpIC5jb21wbGV0ZWQucHJvbW9CVE46OmFmdGVyeyBjb250ZW50OiJcZjAwYyI7IGNvbG9yOmluaGVyaXQ7IH0gOmlzKC5uZXdWZHBBY3Rpb25zLCAudXNlZFZkcEFjdGlvbnMpIC5jb21wbGV0ZWQucHJvbW9CVE4gc3Bhbi5mYXsgY29sb3I6IzAwMDsgfSAuZ3JheWJveCAucHJvbW9CVE4sIC51c2VkVmRwQWN0aW9ucyAucHJvbW9CVE57IGJvcmRlci1yYWRpdXM6M3B4IWltcG9ydGFudDsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgdGV4dC1hbGlnbjp1bnNldDsgbGluZS1oZWlnaHQ6MS41cmVtOyB9IC5ncmF5Ym94IC5idXR0b25fdW5kZXIgLnByb21vQlROIHN0YWNrLWxjLCAubmV3VmRwQWN0aW9ucyAuYnV0dG9uX3VuZGVyIC5wcm9tb0JUTiBzdGFjay1sYyB7IGZsZXgtZ3JvdzoxICFpbXBvcnRhbnQ7IHRleHQtYWxpZ246Y2VudGVyICFpbXBvcnRhbnQ7IH0gLm11bHRpZm9ybV9lbWJlZGRlZF9mb290ZXIgLi1mb3JjZWQtLWEtY2ZhOjphZnRlciB7IGZsZXg6MCAxOyB9IC5ncmF5Ym94IC5wcm9tb0JUTi5idG4taWNvbmVkeyBqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydDsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IG1hcmdpbjphdXRvOyB3aWR0aDo5NSU7IH0gLmdyYXlib3ggLnByb21vQlROLmJ0bi1kZWZhdWx0IHNwYW4uZmF7IGRpc3BsYXk6bm9uZTsgfSAuZ3JheWJveCAucHJvbW9CVE4uYnRuLWljb25lZCBzcGFuLmZheyBkaXNwbGF5OmZsZXg7IH0gLmdyYXlib3ggLnByb21vQlROIHNwYW4sIC51c2VkVmRwQWN0aW9ucyAucHJvbW9CVE4gc3BhbnsgbWFyZ2luLWxlZnQ6dW5zZXQ7IGxpbmUtaGVpZ2h0OjEuNWVtOyB9IC5wcm9tb0JUTi5jaGV2cm9uLXJpZ2h0IC5jdGEtbGFiZWwgeyBwYWRkaW5nLXJpZ2h0OjEuNXJlbTsgfSAucHJvbW9CVE4sIC5wcm9tb0JUTiBhLCAuYnJvY2h1cmVCdG57IGJhY2tncm91bmQ6IzAwMmM1ZjsgY29sb3I6I2ZmZmZmZjsgdGV4dC1zaGFkb3c6bm9uZTsgYW5pbWF0aW9uOmFsbCAzczsgYm9yZGVyLWNvbG9yOiMwMDJjNWY7IH0gLnByb21vQlROOmhvdmVyLCAucHJvbW9CVE4gYTpob3ZlcnsgYmFja2dyb3VuZDojMDA3ZmE1OyBjb2xvcjojZmZmZmZmOyBib3JkZXI6MXB4IHNvbGlkICMwMDdmYTU7IH0gLnByb21vQlROOmhvdmVyID4gKiA+IC5mYSwgLnByb21vQlROIGE6aG92ZXIgPiAqID4gLmZhIHsgYmFja2dyb3VuZDojZmZmZmZmOyBjb2xvcjojMDA3ZmE1OyB9IC5wcm9tb0JUTi5ncm93OmhvdmVyIHsgdHJhbnNmb3JtOnNjYWxlKDEuMSk7IH0gLnByb21vQlROLmdyb3c6aG92ZXIsIC5wcm9tb0JUTi5ncm93OmhvdmVyID4gKiA+IC5mYSwgLnByb21vQlROLmdyb3cgYTpob3ZlciA+ICogPiAuZmEgeyB0cmFuc2l0aW9uOmFsbCAwLjNzIGxpbmVhcjsgfSA6bm90KC5jdGEtdHJhY2stdHBsKSAucHJvbW9CVE4ucmlwcGxlIHsgcG9zaXRpb246cmVsYXRpdmU7IHotaW5kZXg6MTsgb3ZlcmZsb3c6aGlkZGVuOyB0cmFuc2l0aW9uOjFzIGFsbCBlYXNlOyB9IDpub3QoLmN0YS10cmFjay10cGwpIC5wcm9tb0JUTi5yaXBwbGU6YmVmb3JlIHsgY29udGVudCA6IiAiOyBwb3NpdGlvbiA6YWJzb2x1dGU7IHotaW5kZXggOi0xOyBib3JkZXItcmFkaXVzIDoxMDBweDsgd2lkdGggOjAlOyBoZWlnaHQgOjEyMCU7IHRvcCA6NTAlOyBib3R0b20gOjUwJTsgbGVmdCA6NTAlOyByaWdodCA6NTAlOyB0cmFuc2Zvcm0gOnRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsgdHJhbnNpdGlvbiA6YWxsIDAuNnMgZWFzZTsgYm9yZGVyOnVuc2V0OyBiYWNrZ3JvdW5kOiMwMDdmYTU7IH0gOm5vdCguY3RhLXRyYWNrLXRwbCkgLnByb21vQlROLnJpcHBsZTpob3ZlciB7IGJhY2tncm91bmQ6IzAwMmM1ZjsgY29sb3I6dmFyKC0tcHJvbW8tYnRuLWhvdmVyLXRleHQtY29sb3IpOyBib3JkZXItY29sb3I6dmFyKC0tcHJvbW8tYnRuLWhvdmVyLXRleHQtY29sb3IpOzsgfSA6bm90KC5jdGEtdHJhY2stdHBsKSAucHJvbW9CVE4ucmlwcGxlOmhvdmVyOmJlZm9yZSB7IHdpZHRoOjEyMCU7IH0gLnByb21vQlROLnJpcHBsZTpob3ZlciBzcGFuLmZheyBjb2xvcjp2YXIoLS1wcm9tby1idG4taG92ZXItdGV4dC1jb2xvcik7IH0gLnByb21vQXJyb3csLnByb21vQ29sb3J7IGNvbG9yOiMwMDJjNWYhaW1wb3J0YW50OyB9IC5icm9jaHVyZUJ0bnsgYm9yZGVyOm5vbmU7IGRpc3BsYXk6YmxvY2s7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nOjVweDsgfSAudmRwLWJ0biB7IGJvcmRlci1yYWRpdXM6M3B4OyBtYXJnaW4tYm90dG9tOjEwcHg7IHRleHQtdHJhbnNmb3JtOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXNpemU6MS4wNjNyZW0gOyBwYWRkaW5nOjhweCA1cHg7IHdpZHRoOjIzN3B4OyB9IEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDo0MDBweCkgeyAuYnRuLWRlZmF1bHQsIC5jdXN0b21mb3JtX3N1Ym1pdCwgaW5wdXRbdHlwZT1idXR0b25dLmJ0bi1kZWZhdWx0LCBpbnB1dFt0eXBlPXN1Ym1pdF0uYnRuLWRlZmF1bHR7IGZvbnQtc2l6ZTppbmhlcml0OyB9IC5hcHBseS1jcmVkaXQgeyBiYWNrZ3JvdW5kOiMzMzVmOTI7IGJvcmRlcjoxcHggc29saWQgIzFhNDY3OTsgfSAuYXBwbHktY3JlZGl0OmhvdmVyIHsgYmFja2dyb3VuZDp7JEFQUExZX0NSRURJVF9CVE5fQ09MT1JfRU5ESE9WRVJDT0xPUn07IH0gfSAuYmdfYmx1ZXsgYmFja2dyb3VuZC1jb2xvcjojMDY4OGZhIWltcG9ydGFudDsgY29sb3I6I2ZmZjsgfSAuYmdfcmVkeyBiYWNrZ3JvdW5kLWNvbG9yOiNmZjAwMDAhaW1wb3J0YW50OyBjb2xvcjojZmZmOyB9IC5iZ19ncmVlbnsgYmFja2dyb3VuZC1jb2xvcjojNjhhNTRiIWltcG9ydGFudDsgY29sb3I6I2ZmZjsgfSAuYmdfYmxhY2t7IGJhY2tncm91bmQtY29sb3I6IzAwMDAwMCFpbXBvcnRhbnQ7IGNvbG9yOiNmZmY7IH0gLmJnX2dyYXl7IGJhY2tncm91bmQtY29sb3I6Izc5Nzk3OSFpbXBvcnRhbnQ7IGNvbG9yOiNmZmY7IH0gLmJnX2JsdWUgYSwuYmdfcmVkIGEsLmJnX2dyZWVuIGEsLmJnX2JsYWNrIGEsLmJnX2dyYXkgYSB7IGNvbG9yOiNmZmY7IH0gLmJnX2RlZmF1bHR7IGJhY2tncm91bmQtY29sb3I6I2U0ZGNkMyFpbXBvcnRhbnQ7IH0gLmJveDI3eyB3aWR0aDoxMzFweDsgaGVpZ2h0OjI4cHg7IGZsb2F0OmxlZnQ7IG1hcmdpbi1ib3R0b206OHB4OyB9IC5ib3gyNyBheyB3aWR0aDoxMzFweDsgaGVpZ2h0OjI4cHg7IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvYnV0dG9uMTBfYmcucG5nKSBsZWZ0IHRvcCByZXBlYXQteCA7IGJvcmRlci1yYWRpdXM6M3B4OyBmb250LXNpemU6MC44NzVyZW0gOyBjb2xvcjojRkZGRkZGOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgZm9udC13ZWlnaHQ6bm9ybWFsOyBwYWRkaW5nOjA7IGxpbmUtaGVpZ2h0OjI4cHg7IHRleHQtYWxpZ246IGNlbnRlcjsgdGV4dC10cmFuc2Zvcm06bm9uZTsgfSAuYm94MjcgYTpob3ZlcnsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9idXR0b24xMF9iZy5wbmcpIGxlZnQgLTMycHggcmVwZWF0LXg7IGNvbG9yOiNGRkZGRkY7IH0gLmJveDI4eyB3aWR0aDoxMjdweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IG1hcmdpbjowcHg7IGJhY2tncm91bmQ6IzZmNmY2ZiB1cmwoL2ltYWdlcy9saXRlcl9iZy5wbmcpIGxlZnQgdG9wIHJlcGVhdC14OyBib3JkZXItcmFkaXVzOjNweDsgcGFkZGluZzoxMHB4IDJweCAxMHB4IDJweDsgbWFyZ2luOjAgMHB4IDAgMDsgfSAudGV4dDQ0eyB3aWR0aDoxMjdweDsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvbGl0ZXJfbGluZS5wbmcpIGxlZnQgYm90dG9tIHJlcGVhdC14OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmJvdHRvbTsgdGV4dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmctYm90dG9tOjVweDsgbWFyZ2luLWJvdHRvbTo1cHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGNvbG9yOiNGRkZGRkY7IHRleHQtZGVjb3JhdGlvbjpub25lOyBmb250LXdlaWdodDpub3JtYWw7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LXRyYW5zZm9ybTpub25lOyBsaW5lLWhlaWdodDoxOHB4OyB9IC5jb25zdW1wdGlvbi1ub3QtYXZhaWxhYmxlID4gLnRleHQ0NCA+IHNwYW4gPiAjY2l0eUZ1ZWwgeyBkaXNwbGF5Om5vbmU7IH0gLmNvbnN1bXB0aW9uLW5vdC1hdmFpbGFibGUgPiAudGV4dDQ0ID4gc3BhbiA+ICNoaWdod2F5RnVlbCB7IGRpc3BsYXk6bm9uZTsgfSAudGV4dF9zbGlkZSBhIHsgaGVpZ2h0OjM4cHg7IG1hcmdpbi1yaWdodDowLjNlbTsgcGFkZGluZy10b3A6MXB4ICFpbXBvcnRhbnQ7IH0gLnRleHRfc2xpZGUgYSA+IGIgeyBkaXNwbGF5OmJsb2NrOyBvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudDsgcG9zaXRpb246cmVsYXRpdmU7IGhlaWdodDoyNXB4OyB3aWR0aDoxMDAlOyB9IC50ZXh0X3NsaWRlIGEgPiBiID4gbTEgeyBkaXNwbGF5OmlubGluZS1ibG9jazsgcG9zaXRpb246cmVsYXRpdmU7IHdoaXRlLXNwYWNlOm5vd3JhcDsgbGluZS1oZWlnaHQ6MzhweCAhaW1wb3J0YW50OyB0b3A6LThweDsgbGVmdDowOyB9IC50ZXh0X3NsaWRlLnRleHRfc2xpZGVfNCBhID4gYiA+IG0xIHsgYW5pbWF0aW9uOnRleHRfc2xpZGVfNCA0cyBlYXNlIDVzOyBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OmluZmluaXRlOyB9IC50ZXh0X3NsaWRlLnRleHRfc2xpZGVfMyBhID4gYiA+IG0xIHsgYW5pbWF0aW9uOnRleHRfc2xpZGVfMyAzcyBlYXNlIDRzOyBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OmluZmluaXRlOyB9IC50ZXh0X3NsaWRlLnRleHRfc2xpZGVfMiBhID4gYiA+IG0xIHsgYW5pbWF0aW9uOnRleHRfc2xpZGVfMiAycyBlYXNlIDJzOyBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OmluZmluaXRlOyB9IC50ZXh0X3NsaWRlLnByb21vY29kZWJveCB7IHBhZGRpbmc6MHB4IDBweDsgbWFyZ2luLWxlZnQ6MHB4OyB3aWR0aDoxMDAlOyBtYXJnaW4tdG9wOjlweDsgfSBAa2V5ZnJhbWVzIHRleHRfc2xpZGVfNCB7IDAlIHsgdG9wOi04cHg7IH0gMjUlIHsgdG9wOi00NnB4OyB9IDUwJSB7IHRvcDotODRweDsgfSA3NSUgeyB0b3A6LTEyMnB4OyB9IDEwMCUgeyB0b3A6LTE2MHB4OyB9IH0gQGtleWZyYW1lcyB0ZXh0X3NsaWRlXzMgeyAwJSB7IHRvcDotOHB4OyB9IDMzJSB7IHRvcDotNDZweDsgfSA2NiUgeyB0b3A6LTg0cHg7IH0gMTAwJSB7IHRvcDotMTIycHg7IH0gfSBAa2V5ZnJhbWVzIHRleHRfc2xpZGVfMiB7IDAlIHsgdG9wOi04cHg7IH0gNTAlIHsgdG9wOi00NnB4OyB9IDEwMCUgeyB0b3A6LTg0cHg7IH0gfSAubWFwIHsgd2lkdGg6MTAwJTsgdGV4dC1hbGlnbjpjZW50ZXI7IHBvc2l0aW9uOnJlbGF0aXZlOyB9IC5tYXAgLndyYXBwZXJ7IHBvc2l0aW9uOnN0YXRpYyAhaW1wb3J0YW50OyB9IC5tYXBfZGVhbGVyX2xpc3QgeyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjkpOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MDsgcGFkZGluZzowIDMwcHg7IHdpZHRoOjMxNXB4OyBoZWlnaHQ6MTAwJTsgdGV4dC1hbGlnbjpsZWZ0OyBvdmVyZmxvdy15OmF1dG87IH0gLm1hcF9kZWFsZXJfbGlzdF9pdGVtIHsgY3Vyc29yOnBvaW50ZXI7IHBhZGRpbmc6MTNweCAwOyBmb250LXNpemU6MC44MTNyZW0gOyB9IC5tYXBfZGVhbGVyX2xpc3RfaXRlbV9uYW1lIHsgcG9zaXRpb246YWJzb2x1dGU7IH0gLm1hcF9kZWFsZXJfbGlzdF9pdGVtX25hbWU6aG92ZXIgeyBmb250LXdlaWdodDo3MDA7IH0gLm1hcF9kZWFsZXJfbGlzdF9pdGVtX25hbWVfYWN0aXZlIHsgZm9udC13ZWlnaHQ6NzAwOyB9IC5tYXJrZXJTcGFuIHsgaGVpZ2h0OjE4cHg7IHdpZHRoOjIwcHg7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyBwb3NpdGlvbjpyZWxhdGl2ZTsgZGlzcGxheTppbmxpbmUtYmxvY2s7IH0gLm1hcmtlclNwYW46YmVmb3JlIHsgY29udGVudDonJzsgaGVpZ2h0OjRweDsgd2lkdGg6NHB4OyBib3JkZXI6MnB4IHNvbGlkICMzMzM7IGRpc3BsYXk6YmxvY2s7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MnB4OyBsZWZ0OjBweDsgei1pbmRleDoxOyBiYWNrZ3JvdW5kOiNmZmY7IGxpbmUtaGVpZ2h0OjI2cHg7IGJvcmRlci1yYWRpdXM6NDBweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjQwcHg7IC1tb3otYm9yZGVyLXJhZGl1czo0MHB4OyBjb2xvcjojZmZmOyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAubWFya2VyU3BhbjphZnRlciB7IGNvbnRlbnQ6Jyc7IGhlaWdodDowcHg7IHdpZHRoOjBweDsgZGlzcGxheTpibG9jazsgcG9zaXRpb246YWJzb2x1dGU7IGJvdHRvbToycHg7IGxlZnQ6MnB4OyBib3JkZXI6MTBweCB0cmFuc3BhcmVudCBzb2xpZDsgYm9yZGVyLXRvcC1jb2xvcjojMzMzOyBib3JkZXItd2lkdGg6N3B4IDJweCAwcHggMnB4OyB9IC5tYXBfb3Blbl9ob3VycyB7IGJhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuOSk7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDowOyB3aWR0aDo0MDBweDsgaGVpZ2h0OjEwMCU7IHRleHQtYWxpZ246bGVmdDsgfSAub3Blbl9ob3Vyc19jb250YWluZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjkpOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IHRleHQtYWxpZ246bGVmdDsgfSAubWFwX29wZW5faG91cnMgLm1hcF9vcGVuX2hvdXJzLS10aXRsZSwgLm9wZW5faG91cnNfY29udGFpbmVyIGgyLCAub3Blbl9ob3Vyc19jb250YWluZXIgc3Bhbi5oMi1hbHQgeyBmb250LXNpemU6MS41ZW07IGZvbnQtd2VpZ2h0OmJvbGQ7IHBhZGRpbmctbGVmdDoxNXB4OyBtYXJnaW4tdG9wOjIwcHg7IG1hcmdpbi1ib3R0b206MTBweDsgY29sb3I6aW5oZXJpdDsgfSAubWFwX29wZW5faG91cnMgdWwsIC5vcGVuX2hvdXJzX2NvbnRhaW5lciB1bCB7IHBhZGRpbmc6MCAwOyB9IC5tYXBfb3Blbl9ob3VycyB1bCBsaSwgLm9wZW5faG91cnNfY29udGFpbmVyIHVsIGxpIHsgbGlzdC1zdHlsZTpub25lOyBjdXJzb3I6cG9pbnRlcjsgY3Vyc29yOmhhbmQ7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNmM2YzZjM7IH0gLm1hcF9vcGVuX2hvdXJzX2V4cGFuZHsgcGFkZGluZzo2cHggMzBweCA4cHggMTVweDsgZGlzcGxheTpibG9jazsgfSAuZXhwYW5kYWJsZV9jb250ZW50eyBwYWRkaW5nOjBweCAxNnB4IDVweCAxNnB4OyBmb250LXNpemU6MC44NzVyZW0gOyBsaW5lLWhlaWdodDoxLjQyODU3MTQzOyB9IC5leHBhbmRhYmxlX2NvbnRlbnQgZGl2LCAuZXhwYW5kYWJsZV9jb250ZW50X211bHRpbG9jYXRpb24gZGl2IHsgZGlzcGxheSA6ZmxleDsgZmxleC1kaXJlY3Rpb24gOnJvdzsgfSAuZXhwYW5kYWJsZV9jb250ZW50ID4gZGl2ID4gc3BhbjpmaXJzdC1vZi10eXBlLCAuZXhwYW5kYWJsZV9jb250ZW50X211bHRpbG9jYXRpb24gZGl2IHNwYW46Zmlyc3Qtb2YtdHlwZSB7IHdpZHRoOjQwJTsgfSAuZXhwYW5kYWJsZV9jb250ZW50X211bHRpbG9jYXRpb257IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGxpbmUtaGVpZ2h0OjEuNDI4NTcxNDM7IG1hcmdpbi10b3A6MTVweDsgfSBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGggOjc1OXB4KSB7IC5leHBhbmRhYmxlX2NvbnRlbnQsIC5leHBhbmRhYmxlX2NvbnRlbnRfbXVsdGlsb2NhdGlvbiB7IGZvbnQtc2l6ZTppbmhlcml0OyB9IH0gLmV4cGFuZGFibGVfY29udGVudF9tdWx0aWxvY2F0aW9uIHRhYmxleyBtYXJnaW4tdG9wOjE1cHg7IH0gLm1hcF9vcGVuX2hvdXJzX2V4cGFuZF9hcnJvd3sgZmxvYXQ6cmlnaHQ7IG1hcmdpbi10b3A6M3B4OyB9IC5tYXBfb3Blbl9ob3Vyc19leHBhbmRfYXJyb3cuZXhwYW5kZWR7IHRyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKTsgfSAubWFwX29wZW5faG91cnNfbW9iaWxleyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjkpOyB9IC5tYXBfb3Blbl9ob3Vyc19tb2JpbGUgLm1hcF9vcGVuX2hvdXJzX21vYmlsZS0tdGl0bGUgeyBmb250LXNpemU6dmFyKC0tZnM0KTsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gLm1hcF9vcGVuX2hvdXJzX21vYmlsZSB1bHsgcGFkZGluZzowIDA7IH0gLm1hcF9vcGVuX2hvdXJzX21vYmlsZSB1bCBsaXsgbGlzdC1zdHlsZTpub25lOyBjdXJzb3I6cG9pbnRlcjsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2YzZjNmMzsgfSAubWFpbl9sZWZ0X2JveCAjZm9vdGVyR29vZ2xlTWFwSG91cnNDb250YWluZXJ7IHdpZHRoOjk2MHB4OyB9IC52aWRlb0J0blNsaWRlciwgLnBob3RvQnRuU2xpZGVyeyBib3JkZXItcmFkaXVzOjUwJTsgYm9yZGVyOjFweCBzb2xpZCAjYjNiM2IzOyBjb2xvcjojYjNiM2IzOyB3aWR0aDo3NXB4OyBoZWlnaHQ6NzVweDsgYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyBvcGFjaXR5OjAuNTsgfSAudmlkZW9CdG5TbGlkZXI6aG92ZXIsIC5waG90b0J0blNsaWRlcjpob3ZlcnsgYm9yZGVyLXJhZGl1czo1MCU7IGJvcmRlcjoxcHggc29saWQgI2ZmZmZmZjsgd2lkdGg6NzVweDsgaGVpZ2h0Ojc1cHg7IGJhY2tncm91bmQtY29sb3I6I2IzYjNiMzsgb3BhY2l0eTowLjU7IH0gLnBob3RvQnRuU2xpZGVyIC5mYSwgLnZpZGVvQnRuU2xpZGVyIC5mYXsgY29sb3I6I2IzYjNiMzsgfSAucGhvdG9CdG5TbGlkZXI6aG92ZXIgLmZhLCAudmlkZW9CdG5TbGlkZXI6aG92ZXIgLmZheyBjb2xvcjojZmZmZmZmOyB9IC52aWRlb0J0blNsaWRlclVzZWQsIC5waG90b0J0blNsaWRlclVzZWR7IGJvcmRlci1yYWRpdXM6NTAlOyBib3JkZXI6MXB4IHNvbGlkICNiM2IzYjM7IGNvbG9yOiNiM2IzYjM7IHdpZHRoOjc1cHg7IGhlaWdodDo3NXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IG9wYWNpdHk6MC45OyB9IC52aWRlb0J0blNsaWRlclVzZWQ6aG92ZXIsIC5waG90b0J0blNsaWRlclVzZWQ6aG92ZXJ7IGJvcmRlci1yYWRpdXM6NTAlOyBib3JkZXI6MXB4IHNvbGlkICNmZmZmZmY7IHdpZHRoOjc1cHg7IGhlaWdodDo3NXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiNiM2IzYjM7IG9wYWNpdHk6MC41OyB9IC5waG90b0J0blNsaWRlclVzZWQgLmZhLCAudmlkZW9CdG5TbGlkZXJVc2VkIC5mYXsgY29sb3I6I2IzYjNiMzsgfSAucGhvdG9CdG5TbGlkZXJVc2VkOmhvdmVyIC5mYSwgLnZpZGVvQnRuU2xpZGVyVXNlZDpob3ZlciAuZmF7IGNvbG9yOiNmZmZmZmY7IH0gLnZpZGVvc19waWN0dXJlc19idXR0b25zX2NvbnRhaW5lcnsgbGVmdDo1cHg7IGJvdHRvbTo4MnB4OyBwb3NpdGlvbjpyZWxhdGl2ZTsgei1pbmRleDo5OTk7IGZsb2F0OmxlZnQ7IG1hcmdpbi1ib3R0b206LTgwcHg7IH0gLi1kaXNwbGF5LW5vbmV7IGRpc3BsYXk6bm9uZTsgfSAjZGVmYXVsdFRvcEJhbm5lcldyYXB7IHRleHQtYWxpZ246Y2VudGVyOyB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7IHBhZGRpbmc6NDBweCAxNXB4OyB9ICNkZWZhdWx0VG9wQmFubmVyeyB0ZXh0LWFsaWduOmNlbnRlcjsgd2lkdGg6MTAwJTsgYm9yZGVyLXJhZGl1czo2cHg7IGN1cnNvcjpwb2ludGVyOyB9ICNkZWZhdWx0VG9wQmFubmVyVGl0bGUsICNkZWZhdWx0VG9wQmFubmVyVGV4dHsgZm9udC13ZWlnaHQ6Ym9sZDsgfSAjZGVmYXVsdFRvcEJhbm5lcldyYXAgZGl2LmRlZmF1bHRUb3BCYW5uZXJCdG5XcmFwcGVyeyBtYXJnaW46MzBweCAwIDIwcHggMDsgd2lkdGg6MTAwJTsgZmxvYXQ6bGVmdDsgfSAjZGVmYXVsdFRvcEJhbm5lckJ0bnsgcGFkZGluZzoxMHB4IDMwcHg7IGJhY2tncm91bmQ6YmxhY2s7IGJvcmRlcjoycHggd2hpdGUgc29saWQ7IGJvcmRlci1yYWRpdXM6M3B4OyB0ZXh0LXRyYW5zZm9ybTpub25lOyBmb250LXdlaWdodDpib2xkOyBjb2xvcjojZmZmZmZmOyBib3gtc2hhZG93OjBweCAycHggMTNweCAwcHggIzFiMWIxYjsgfSAjdG9wQmFubmVySW1hZ2UuTkVXQ0FSUyAjZGVmYXVsdFRvcEJhbm5lclRpdGxleyBmb250LXNpemU6My4xMjVyZW0gOyB9ICN0b3BCYW5uZXJJbWFnZS5ORVdDQVJTICNkZWZhdWx0VG9wQmFubmVyVGV4dHsgZm9udC1zaXplOjIuODEzcmVtIDsgfSAjdG9wQmFubmVySW1hZ2UuVVNFRENBUlMgI2RlZmF1bHRUb3BCYW5uZXJUaXRsZXsgZm9udC1zaXplOjMuMTI1cmVtIDsgfSAjdG9wQmFubmVySW1hZ2UuVVNFRENBUlMgI2RlZmF1bHRUb3BCYW5uZXJUZXh0eyBmb250LXNpemU6Mi44MTNyZW0gOyB9ICN0b3BCYW5uZXJJbWFnZTplbXB0eXsgbWFyZ2luOjAgIWltcG9ydGFudDsgcGFkZGluZzowICFpbXBvcnRhbnQ7IH0gI3RvcEJhbm5lckltYWdlLlVTRURDQVJTICNkZWZhdWx0VG9wQmFubmVyV3JhcHsgaGVpZ2h0OjI2NXB4OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IHBhZGRpbmc6NDBweCAxNXB4OyB9ICN0b3BCYW5uZXJJbWFnZS5ORVdDQVJTICNkZWZhdWx0VG9wQmFubmVyV3JhcHsgaGVpZ2h0OjI2NXB4OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IHBhZGRpbmc6NDBweCAxNXB4OyB9ICNnb29nbGVfcmV2aWV3c3sgZm9udC1zaXplOjAuODc1cmVtIDsgY29sb3I6IzY2NjsgfSAjZ29vZ2xlX3Jldmlld3MgLnJldmlldy1pdGVtIC5yZXZpZXctc3RhcnMgdWwgeyBkaXNwbGF5OmlubGluZS1ibG9jazsgbGlzdC1zdHlsZTpub25lOyBwYWRkaW5nOjA7IH0gI2dvb2dsZV9yZXZpZXdzIC5yZXZpZXctaXRlbSAucmV2aWV3LXN0YXJzIHVsIGxpIHsgZmxvYXQ6bGVmdDsgbWFyZ2luLXJpZ2h0OjVweDsgd2lkdGg6aW5pdGlhbCAhaW1wb3J0YW50OyBwYWRkaW5nOmluaXRpYWw7IH0gI2dvb2dsZV9yZXZpZXdzIC5yZXZpZXctaXRlbSAucmV2aWV3LXN0YXJzIHVsIGxpIGkgeyBjb2xvcjojRTRCMjQ4OyBmb250LXN0eWxlOm5vcm1hbDsgZm9udC1zaXplOjAuOTM4cmVtIDsgfSAjZ29vZ2xlX3Jldmlld3MgLnJldmlldy1pdGVtIC5yZXZpZXctc3RhcnMgdWwgbGkgaS5pbmFjdGl2ZSB7IGNvbG9yOiNjNmM2YzY7IH0gI2dvb2dsZV9yZXZpZXdzIC5yZXZpZXctaXRlbSAucmV2aWV3LXN0YXI6YWZ0ZXIgeyBjb250ZW50OiJcMjYwNSI7IH0gI2Vhc3ktZ3BsYWNlcy1yZXZpZXdzLWJ1dHsgZm9udC13ZWlnaHQ6Ym9sZDsgcGFkZGluZzo1cHggOHB4OyBoZWlnaHQ6MjdweDsgbGluZS1oZWlnaHQ6MjdweDsgfSAucmV2aWV3LWF1dGhvcnsgdGV4dC10cmFuc2Zvcm06Y2FwaXRhbGl6ZTsgfSAjZWFzeS1ncGxhY2VzLXJldmlld3MtYnV0LmRlZmF1bHR7IGNvbG9yOiM0NDQ7IGJhY2tncm91bmQtY29sb3I6I2Y1ZjVmNTsgYmFja2dyb3VuZC1pbWFnZTotbW96LWxpbmVhci1ncmFkaWVudChjZW50ZXIgdG9wICwgI2Y1ZjVmNSwgI2YxZjFmMSk7IGJvcmRlcjoxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEpOyB9ICNlYXN5LWdwbGFjZXMtcmV2aWV3cy1idXQucmVkeyBjb2xvcjojZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiNmNWY1ZjU7IGJhY2tncm91bmQtaW1hZ2U6LW1vei1saW5lYXItZ3JhZGllbnQoY2VudGVyIHRvcCAsICNERDRCMzksICNEMTQ4MzYpOyBib3JkZXI6MXB4IHNvbGlkICNEMTQ4MzY7IH0gI2Vhc3ktZ3BsYWNlcy1yZXZpZXdzLWJ1dC5ibHVleyBjb2xvcjojZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiM0RDkwRkU7IGJhY2tncm91bmQtaW1hZ2U6LW1vei1saW5lYXItZ3JhZGllbnQoY2VudGVyIHRvcCAsICM0RDkwRkUsICM0Nzg3RUQpOyBib3JkZXI6MXB4IHNvbGlkICMzMDc5RUQ7IH0gLmVtYmVkLWNvbnRhaW5lci15b3V0dWJlIGlmcmFtZSwgLmVtYmVkLWNvbnRhaW5lci15b3V0dWJlIG9iamVjdCwgLmVtYmVkLWNvbnRhaW5lci15b3V0dWJlIGVtYmVkIHsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDowOyBsZWZ0OjA7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyB9IC5lbWJlZC1jb250YWluZXIteW91dHViZTJ7IHBvc2l0aW9uOnJlbGF0aXZlOyBwYWRkaW5nLWJvdHRvbTo1Ni4yNSU7IGhlaWdodDowOyBvdmVyZmxvdzpoaWRkZW47IG1heC13aWR0aDoxMDAlOyB9IC5lbWJlZC1jb250YWluZXIteW91dHViZTIgaWZyYW1lLCAuZW1iZWQtY29udGFpbmVyLXlvdXR1YmUyIG9iamVjdCwgLmVtYmVkLWNvbnRhaW5lci15b3V0dWJlMiBlbWJlZCB7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MDsgbGVmdDowOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgfSAjc2VhcmNoQ3JpdGVyaWFXOjphZnRlciwgI2FjdGlvbkJveEJ0bjo6YWZ0ZXIsICNsaW5rQ29udGFpbmVyOjphZnRlcnsgY29udGVudDonJzsgaGVpZ2h0OjFweDsgZGlzcGxheTppbmxpbmUtYmxvY2s7IG1hcmdpbi1ib3R0b206JzE1cHgnOyB9ICNzZWFyY2hDcml0ZXJpYVc6OmFmdGVyLCAjYWN0aW9uQm94QnRuOjphZnRlciwgI2xpbmtDb250YWluZXI6OmFmdGVyeyBiYWNrZ3JvdW5kOiNhYWE7IHdpZHRoOjI4MHB4OyB9IC5iYW5uZXJQb3B1cENsb3NleyBjb2xvcjojYWFhOyB9IC5zZWVWaWRlb0J0bjF7IGJhY2tncm91bmQtY29sb3I6IzAwMCAhaW1wb3J0YW50OyBib3JkZXI6MXB4IHNvbGlkICNmZmYgIWltcG9ydGFudDsgY29sb3I6I2ZmZiAhaW1wb3J0YW50OyB9IC5zZWVWaWRlb0J0bjE6aG92ZXJ7IGJhY2tncm91bmQtY29sb3I6I2ZmZiAhaW1wb3J0YW50OyBib3JkZXI6MXB4IHNvbGlkICMwMDAgIWltcG9ydGFudDsgY29sb3I6IzAwMDAwMCAhaW1wb3J0YW50OyB9ICNib3R0b21MZWZ0QmFubmVySW1hZ2V7IG1hcmdpbjoxMHB4IDBweCAwcHg7IGZsb2F0OmxlZnQ7IHdpZHRoOjEwMCU7IH0gI2RlZmF1bHRCb3R0b21MZWZ0QmFubmVyeyB0ZXh0LWFsaWduOmNlbnRlcjsgd2lkdGg6MTAwJTsgYm9yZGVyLXJhZGl1czo2cHg7IGN1cnNvcjpwb2ludGVyOyB9ICNkZWZhdWx0Qm90dG9tTGVmdEJhbm5lcldyYXB7IHRleHQtYWxpZ246Y2VudGVyOyB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7IHBhZGRpbmc6MTVweDsgfSAjZGVmYXVsdEJvdHRvbUxlZnRCYW5uZXJUaXRsZXsgZm9udC13ZWlnaHQ6Ym9sZDsgZm9udC1zaXplOjIuMTg4cmVtIDsgfSAjZGVmYXVsdEJvdHRvbUxlZnRCYW5uZXJUZXh0eyBmb250LXdlaWdodDpib2xkOyBmb250LXNpemU6MS45MzhyZW0gOyB9ICNkZWZhdWx0Qm90dG9tTGVmdEJhbm5lcldyYXAgZGl2LmRlZmF1bHRCb3R0b21MZWZ0QmFubmVyQnRuV3JhcHBlcnsgbWFyZ2luOjIwcHggMCAxMHB4IDA7IHdpZHRoOjEwMCU7IGZsb2F0OmxlZnQ7IH0gI2RlZmF1bHRCb3R0b21MZWZ0QmFubmVyQnRueyBwYWRkaW5nOjdweCAyMXB4OyBiYWNrZ3JvdW5kOmJsYWNrOyBib3JkZXI6MnB4IHdoaXRlIHNvbGlkOyBib3JkZXItcmFkaXVzOjNweDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgZm9udC13ZWlnaHQ6Ym9sZDsgY29sb3I6I2ZmZmZmZjsgYm94LXNoYWRvdzowcHggMnB4IDEzcHggMHB4ICMxYjFiMWI7IGZvbnQtc2l6ZTo3MCU7IH0gLm1haW5EaXYtd3JhcHBlciB7IHBhZGRpbmctdG9wOjAuMDFyZW07IGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgfSAubGFuZ3VhZ2VCYXIgI3NlcnZpY2VfYXBwb2ludF9oZWFkZXIgPiBhIHsgcGFkZGluZzowIDEycHg7IGhlaWdodDoyNnB4OyBsaW5lLWhlaWdodDoyN3B4OyBib3JkZXItcmFkaXVzOjA7IH0gI3NlcnZpY2VfYXBwb2ludF9oZWFkZXIgPiBhIHsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGJhY2tncm91bmQtY29sb3I6IzAwN2ZhNTsgYmFja2dyb3VuZC1jb2xvcjojMDAyYzVmOyBjb2xvcjp3aGl0ZTsgY29sb3I6I2ZmZmZmZjsgfSAjc2VydmljZV9hcHBvaW50X2hlYWRlciA+IGEuYnRuIHsgZm9udC13ZWlnaHQ6bm9ybWFsOyB9IC5sYW5ndWFnZUJhciAjc2VydmljZV9hcHBvaW50X2hlYWRlciA+IC5idG4tZGVmYXVsdDpob3ZlciB7IGJvcmRlci1jb2xvcjojMDA3ZmE1OyBib3JkZXItY29sb3I6IzAwMmM1ZjsgfSAjc2VydmljZV9hcHBvaW50X2hlYWRlciAuc2hvcnQtc2VydmljZS1mb3JtIHsgZGlzcGxheTpub25lOyBib3gtc2hhZG93OjAgNnB4IDEycHggcmdiYSgwLCAwLCAwLCAuMTc1KTsgcG9zaXRpb246YWJzb2x1dGU7IHdpZHRoOjM1MHB4OyByaWdodDowOyBwYWRkaW5nOjE1cHg7IHotaW5kZXg6OTk5OTsgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsgaGVpZ2h0OmF1dG87IHRvcDoyM3B4OyB9IC5sYW5ndWFnZUJhciAjc2VydmljZV9hcHBvaW50X2hlYWRlciBkaXY6bm90KFtjbGFzc10pIHsgZmxvYXQ6aW5pdGlhbDsgd2lkdGg6MTAwJTsgbWFyZ2luLXJpZ2h0OjA7IHRleHQtYWxpZ246aW5pdGlhbDsgfSAjc2VydmljZV9hcHBvaW50X2hlYWRlcjpob3ZlciAuc2hvcnQtc2VydmljZS1mb3JtIHsgZGlzcGxheTpibG9jazsgfSAjc2VydmljZV9hcHBvaW50X2hlYWRlciB7IHBvc2l0aW9uOnJlbGF0aXZlOyB9ICNzZXJ2aWNlX2FwcG9pbnRfaGVhZGVyLmlzT3BlbiAuc2hvcnQtc2VydmljZS1mb3JtIHsgZGlzcGxheTpibG9jazsgfSAubGFuZ3VhZ2VCYXIgI3NlcnZpY2VfYXBwb2ludF9oZWFkZXIgLm1haWx3aWRnZXQtLWZvcm0tcm93LCAubGFuZ3VhZ2VCYXIgI3NlcnZpY2VfYXBwb2ludF9oZWFkZXIgLm1haWx3aWRnZXQtLWZvcm0tcm93IGRpdiB7IG1hcmdpbi1yaWdodDppbmhlcml0OyB3aWR0aDoxMDAlICFpbXBvcnRhbnQ7IGZsb2F0Om5vbmU7IH0gLmxhbmd1YWdlQmFyICNzZXJ2aWNlX2FwcG9pbnRfaGVhZGVyIC5tYWlsd2lkZ2V0LS1mb3JtLXJvdyB0YWJsZSB0ZXh0YXJlYSB7IHdpZHRoOmNhbGMoMTAwJSArIDJweCkgIWltcG9ydGFudDsgfSAjdXNlZF80MDRfbWVzc2FnZSB7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nOjMwcHg7IGJvcmRlcjoxcHggc29saWQgI2YwMDsgbWFyZ2luOjAgMCAyMHB4IDA7IH0gLmF1ZGktdGl0bGUgaDIgeyBmb250LXdlaWdodDpub3JtYWw7IH0gLmF1ZGktY29sb3IgeyBjb2xvcjojYmIwYTMwOyBmb250LXdlaWdodDpib2xkOyB9IGRpdiNzb2NpYWxfbWVkaWFfaWNvbnNfZGl2IHsgZm9udC1zaXplOmluaGVyaXQ7IH0gYS5zb2NpYWwtbGluayB7IC0tZnM6dmFyKC0tZnM2KTsgLS10eHQtY29sb3I6IzAwN2ZhNTsgfSAjc29jaWFsX21lZGlhX2ljb25zX2RpdiAuc29jaWFsLWxpbmtbZGF0YS10b29sdGlwPSdZb3V0dWJlJ10gLnNvY2lhbC1pY29ucyB7IG1hcmdpbi1yaWdodDozcHg7IH0gLnBheXBhbF9idXR0b25faHRtbCB0YWJsZXsgbWFyZ2luLWxlZnQ6YXV0bzsgbWFyZ2luLXJpZ2h0OmF1dG87IGJhY2tncm91bmQtY29sb3I6YmxhY2s7IGNvbG9yOndoaXRlOyB3aWR0aDoxMDAlOyBwYWRkaW5nOjAgMCAxMHB4IDA7IGJvcmRlci1yYWRpdXM6M3B4IDNweCAwIDA7IHRleHQtYWxpZ246Y2VudGVyOyB9IC5wYXlwYWxfYnV0dG9uX2h0bWwgdGFibGUgdHI6Zmlyc3QtY2hpbGR7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IGhlaWdodDo0MHB4OyB9IC5wYXlwYWxfYnV0dG9uX2h0bWwgdGFibGUgc2VsZWN0eyBib3JkZXItcmFkaXVzOjVweDsgd2lkdGg6MjAwcHg7IGhlaWdodDozNXB4OyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyB9IC5wYXlwYWxfYnV0dG9uX2h0bWwgaW5wdXRbdHlwZT0iaW1hZ2UiXVtuYW1lPSJzdWJtaXQiXXsgd2lkdGg6MTAwJTsgYm9yZGVyOm5vbmU7IHBhZGRpbmc6MDsgfSBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NDAwcHgpIHsgLnBheXBhbF9idXR0b25faHRtbHsgd2lkdGg6OTAlOyBtYXJnaW46MCBhdXRvOyB9IH0gI211bHRpLWFkZHJlc3Mtc3VibWlzc2lvbiB7IHotaW5kZXg6MTAwMDAwMDAwMjE7IH0gI211bHRpLWFkZHJlc3Mtc3VibWlzc2lvbi5kZXNrdG9wIHsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gI211bHRpLWFkZHJlc3Mtc3VibWlzc2lvbi5kZXNrdG9wIHNlbGVjdCB7IG1heC13aWR0aDozMDBweDsgbWFyZ2luOjAgYXV0bzsgfSAjbXVsdGktYWRkcmVzcy1zdWJtaXNzaW9uLnNtYWxsIHsgcGFkZGluZzoyMHB4IDEwcHg7IH0gI211bHRpLWFkZHJlc3Mtc3VibWlzc2lvbiBsYWJlbCB7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbi1ib3R0b206NXB4OyBmb250LXdlaWdodDpib2xkOyB9ICNtdWx0aS1hZGRyZXNzLXN1Ym1pc3Npb24gI211dGxpQWRkcmVzc1N1Ym1pdCB7IG1hcmdpbjowIGF1dG87IG1hcmdpbi10b3A6OHB4OyBkaXNwbGF5OnRhYmxlOyB9ICNtdWx0aS1hZGRyZXNzLXN1Ym1pc3Npb24gI211bHRpLWRlYWxlci1tYXAgeyBoZWlnaHQ6NTIwcHg7IG1hcmdpbi1ib3R0b206MTJweDsgfSAjbXVsdGktYWRkcmVzcy1zdWJtaXNzaW9uLnJldmVhbC1tb2RhbCBzcGFuIHsgZm9udC1zaXplOmluaGVyaXQ7IH0gLnZhbGlkaXR5LWVycm9uZW91cyB7IGJvcmRlcjoxcHggc29saWQgI2RjMzU0NTsgYmFja2dyb3VuZC1jb2xvcjojZmFkNmRjIWltcG9ydGFudDsgfSAuYm94NC52YWxpZGl0eS1lcnJvbmVvdXMsIC5ib3g1LnZhbGlkaXR5LWVycm9uZW91cyB7IHdpZHRoOjI2M3B4OyB9IC5mb3JtLWNvbnRyb2wgeyBkaXNwbGF5OmJsb2NrOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MzRweDsgcGFkZGluZzo2cHggMTJweDsgZm9udC1zaXplOjAuODc1cmVtIDsgbGluZS1oZWlnaHQ6MS40Mjg1NzE0MzsgY29sb3I6IzU1NTsgYmFja2dyb3VuZC1jb2xvcjojZmZmOyBiYWNrZ3JvdW5kLWltYWdlOm5vbmU7IGJvcmRlcjoxcHggc29saWQgI2NjYzsgYm9yZGVyLXJhZGl1czo0cHg7IC13ZWJraXQtYm94LXNoYWRvdzppbnNldCAwIDFweCAxcHggcmdiYSgwLDAsMCwuMDc1KTsgYm94LXNoYWRvdzppbnNldCAwIDFweCAxcHggcmdiYSgwLDAsMCwuMDc1KTsgLXdlYmtpdC10cmFuc2l0aW9uOmJvcmRlci1jb2xvciBlYXNlLWluLW91dCAuMTVzLGJveC1zaGFkb3cgZWFzZS1pbi1vdXQgLjE1czsgLW8tdHJhbnNpdGlvbjpib3JkZXItY29sb3IgZWFzZS1pbi1vdXQgLjE1cyxib3gtc2hhZG93IGVhc2UtaW4tb3V0IC4xNXM7IC13ZWJraXQtdHJhbnNpdGlvbjpib3JkZXItY29sb3IgZWFzZS1pbi1vdXQgLjE1cywtd2Via2l0LWJveC1zaGFkb3cgZWFzZS1pbi1vdXQgLjE1czsgdHJhbnNpdGlvbjpib3JkZXItY29sb3IgZWFzZS1pbi1vdXQgLjE1cywtd2Via2l0LWJveC1zaGFkb3cgZWFzZS1pbi1vdXQgLjE1czsgdHJhbnNpdGlvbjpib3JkZXItY29sb3IgZWFzZS1pbi1vdXQgLjE1cyxib3gtc2hhZG93IGVhc2UtaW4tb3V0IC4xNXM7IHRyYW5zaXRpb246Ym9yZGVyLWNvbG9yIGVhc2UtaW4tb3V0IC4xNXMsYm94LXNoYWRvdyBlYXNlLWluLW91dCAuMTVzLC13ZWJraXQtYm94LXNoYWRvdyBlYXNlLWluLW91dCAuMTVzOyB9IC5iYW5uZXItZm9ybS1ib3ggeyBwYWRkaW5nOjMwcHg7IGJhY2tncm91bmQtY29sb3I6I2Y2ZjNmMjsgY29sb3I6IzAwMDAwMDsgfSAuYmFubmVyLWZvcm0tdGl0bGUgeyBmb250LXdlaWdodDo2MDA7IGZvbnQtc2l6ZToxOHB0OyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC10cmFuc2Zvcm06bm9uZTsgbWFyZ2luLWJvdHRvbTo1cHg7IH0gLmJhbm5lci1mb3JtLXN1YnRpdGxlIHsgZm9udC1zaXplOjExLjVwdDsgbWFyZ2luLWJvdHRvbTo1cHg7IH0gLmJhbm5lci1mb3JtLWJvZHkgeyBtYXJnaW4tYm90dG9tOjI1cHg7IH0gLmJhbm5lci1mb3JtLWJvZHkgLmZvcm0tY29udHJvbCB7IGhlaWdodDo0MXB4OyBtYXJnaW4tYm90dG9tOjE1cHg7IC13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94OyAtbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDsgYm94LXNpemluZzpib3JkZXItYm94OyB9IC5iYW5uZXItZm9ybS1ib3gtZm9vdGVyIHsgdGV4dC1hbGlnbjpjZW50ZXI7IG1hcmdpbi10b3A6MjVweDsgfSAuYmFubmVyLWZvcm0tYm94LWhlYWRlciB7IHRleHQtYWxpZ246Y2VudGVyOyBtYXJnaW4tYm90dG9tOjE1cHg7IH0gLmJ0bi5iYW5uZXItYnRuIHsgcGFkZGluZzo2cHggMjRweDsgZm9udC13ZWlnaHQ6Ym9sZDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgYmFja2dyb3VuZC1jb2xvcjpibGFjazsgY29sb3I6d2hpdGU7IGJhY2tncm91bmQtY29sb3I6IzAwMmM1ZjsgY29sb3I6I2ZmZmZmZjsgfSAuYnRuLmJhbm5lci1idG46aG92ZXIgeyBib3gtc2hhZG93Omluc2V0IDAgMCAxMDBweCAxMDBweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7IH0gLmJ0biB7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyBwYWRkaW5nOjZweCAxMnB4OyBtYXJnaW4tYm90dG9tOjA7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGZvbnQtd2VpZ2h0OjQwMDsgbGluZS1oZWlnaHQ6MS40Mjg1NzE0MzsgdGV4dC1hbGlnbjpjZW50ZXI7IHdoaXRlLXNwYWNlOm5vd3JhcDsgdmVydGljYWwtYWxpZ246bWlkZGxlOyAtbXMtdG91Y2gtYWN0aW9uOm1hbmlwdWxhdGlvbjsgdG91Y2gtYWN0aW9uOm1hbmlwdWxhdGlvbjsgY3Vyc29yOnBvaW50ZXI7IC13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTsgLW1vei11c2VyLXNlbGVjdDpub25lOyAtbXMtdXNlci1zZWxlY3Q6bm9uZTsgdXNlci1zZWxlY3Q6bm9uZTsgYm9yZGVyLXJhZGl1czo0cHg7IH0gLmxhenlsb2FkeyB2aXNpYmlsaXR5OmhpZGRlbjsgfSAuZ2JveCB7IGJvcmRlci1yYWRpdXM6NXB4OyBib3gtc2hhZG93OjAgMCAxMHB4IDFweCByZ2JhKDAsMCwwLDAuMik7IH0gLnBkIHsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgZm9udC1zaXplOjAuNWVtOyB2ZXJ0aWNhbC1hbGlnbjpzdXBlcjsgfSAudWktbG9hZGVyLWJhY2tncm91bmR7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyB0b3A6MDsgcGFkZGluZzowOyBtYXJnaW46MDsgYmFja2dyb3VuZDpyZ2JhKDAsIDAsIDAsIDAuMyk7IGRpc3BsYXk6bm9uZTsgcG9zaXRpb246Zml4ZWQ7IHotaW5kZXg6MTAwMDAwMDAwOyB9IC51aS1sb2FkZXItYmFja2dyb3VuZC1naWZ7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6NTAlOyBsZWZ0OjUwJTsgfSAuZDJjRm9vdGVyQ29va2llRGVsZXRlVGl0bGUgeyBmb250LXNpemU6MS4zZW07IH0gLmQyY0Zvb3RlckNvb2tpZURlbGV0ZVRleHQgeyBtYXJnaW4tdG9wOjMwcHg7IH0gLm1vbnRobHlQYXltZW50c1BvcHVwQ29udGFpbmVyX2J0bnsgYmFja2dyb3VuZDojMDAyYzVmOyBjb2xvcjojZmZmZmZmOyBwYWRkaW5nOjEwcHggMjBweCAxMHB4IDIwcHg7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB9IC5tb250aGx5UGF5bWVudHNQb3B1cENvbnRhaW5lcl9idG4gc3BhbnsgYmFja2dyb3VuZDojMDAyYzVmOyBjb2xvcjojZmZmZmZmOyB9ICNtb250aGx5UGF5bWVudHNQb3B1cENvbnRhaW5lcl9zbXN7IGJhY2tncm91bmQ6IzAwMmM1ZjsgY29sb3I6I2ZmZmZmZjsgfSAjbW9udGhseVBheW1lbnRzUG9wdXBDb250YWluZXJfc21zIHNwYW57IGJhY2tncm91bmQ6IzAwMmM1ZjsgY29sb3I6I2ZmZmZmZjsgfSAuYmxhY2tDb2xvckJvbGR7IGNvbG9yOiMwMDAhaW1wb3J0YW50OyBmb250LXdlaWdodDo3MDAhaW1wb3J0YW50OyBmb250LXNpemU6MXJlbSAhaW1wb3J0YW50OyB9IC5mbGV4LWNlbnRlciAucmVzcG9uc2l2ZS1lZGl0b3IgeyBmbGV4LWdyb3c6MTsgfSAucmV2ZWFsLW1vZGFseyBib3gtc2l6aW5nOmNvbnRlbnQtYm94OyB9IC5nbS1zdHlsZS1pdy1kIHsgcGFkZGluZy10b3A6MTJweDsgbWFyZ2luLXJpZ2h0Oi0yNHB4OyB9IC5nbS1zdHlsZSAuZ20tc3R5bGUtaXctYyB7IGZsZXgtZGlyZWN0aW9uOnJvdy1yZXZlcnNlOyB9Ci8qKiAvY3NzL2ZvbnRzLkh5dW5kYWlTYW5zSGVhZC5jc3MgKiovCkBmb250LWZhY2V7Zm9udC1kaXNwbGF5OnN3YXA7Zm9udC1mYW1pbHk6J0h5dW5kYWlTYW5zSGVhZCc7c3JjOnVybCgnaHR0cHM6Ly9mb250cy5kMmNtZWRpYS5jYS9IeXVuZGFpU2Fuc0hlYWQtUmVndWxhci53b2ZmMicpZm9ybWF0KCd3b2ZmMicpLHVybCgnaHR0cHM6Ly9mb250cy5kMmNtZWRpYS5jYS9IeXVuZGFpU2Fuc0hlYWQtUmVndWxhci53b2ZmJylmb3JtYXQoJ3dvZmYnKSx1cmwoJ2h0dHBzOi8vZm9udHMuZDJjbWVkaWEuY2EvSHl1bmRhaVNhbnNIZWFkLVJlZ3VsYXIuZW90PyNpZWZpeCcpZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLHVybCgnaHR0cHM6Ly9mb250cy5kMmNtZWRpYS5jYS9IeXVuZGFpU2Fuc0hlYWQtUmVndWxhci50dGYnKWZvcm1hdCgndHJ1ZXR5cGUnKTtmb250LXdlaWdodDpub3JtYWw7Zm9udC1zdHlsZTpub3JtYWw7fUBmb250LWZhY2V7Zm9udC1kaXNwbGF5OnN3YXA7Zm9udC1mYW1pbHk6J0h5dW5kYWlTYW5zSGVhZCc7c3JjOnVybCgnaHR0cHM6Ly9mb250cy5kMmNtZWRpYS5jYS9IeXVuZGFpU2Fuc0hlYWQtTWVkaXVtLndvZmYyJylmb3JtYXQoJ3dvZmYyJyksdXJsKCdodHRwczovL2ZvbnRzLmQyY21lZGlhLmNhL0h5dW5kYWlTYW5zSGVhZC1NZWRpdW0ud29mZicpZm9ybWF0KCd3b2ZmJyksdXJsKCdodHRwczovL2ZvbnRzLmQyY21lZGlhLmNhL0h5dW5kYWlTYW5zSGVhZC1NZWRpdW0uZW90PyNpZWZpeCcpZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLHVybCgnaHR0cHM6Ly9mb250cy5kMmNtZWRpYS5jYS9IeXVuZGFpU2Fuc0hlYWQtTWVkaXVtLnR0ZicpZm9ybWF0KCd0cnVldHlwZScpO2ZvbnQtd2VpZ2h0OjUwMDtmb250LXN0eWxlOm5vcm1hbDt9QGZvbnQtZmFjZXtmb250LWRpc3BsYXk6c3dhcDtmb250LWZhbWlseTonSHl1bmRhaVNhbnNIZWFkJztzcmM6dXJsKCdodHRwczovL2ZvbnRzLmQyY21lZGlhLmNhL0h5dW5kYWlTYW5zSGVhZC1Cb2xkLndvZmYyJylmb3JtYXQoJ3dvZmYyJyksdXJsKCdodHRwczovL2ZvbnRzLmQyY21lZGlhLmNhL0h5dW5kYWlTYW5zSGVhZC1Cb2xkLndvZmYnKWZvcm1hdCgnd29mZicpLHVybCgnaHR0cHM6Ly9mb250cy5kMmNtZWRpYS5jYS9IeXVuZGFpU2Fuc0hlYWQtQm9sZC5lb3Q\/I2llZml4Jylmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyksdXJsKCdodHRwczovL2ZvbnRzLmQyY21lZGlhLmNhL0h5dW5kYWlTYW5zSGVhZC1Cb2xkLnR0ZicpZm9ybWF0KCd0cnVldHlwZScpO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zdHlsZTpub3JtYWw7fUBmb250LWZhY2V7Zm9udC1kaXNwbGF5OnN3YXA7Zm9udC1mYW1pbHk6J0h5dW5kYWlTYW5zSGVhZCc7c3JjOnVybCgnaHR0cHM6Ly9mb250cy5kMmNtZWRpYS5jYS9IeXVuZGFpU2Fuc0hlYWQtTGlnaHQud29mZjInKWZvcm1hdCgnd29mZjInKSx1cmwoJ2h0dHBzOi8vZm9udHMuZDJjbWVkaWEuY2EvSHl1bmRhaVNhbnNIZWFkLUxpZ2h0LndvZmYnKWZvcm1hdCgnd29mZicpLHVybCgnaHR0cHM6Ly9mb250cy5kMmNtZWRpYS5jYS9IeXVuZGFpU2Fuc0hlYWQtTGlnaHQuZW90PyNpZWZpeCcpZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLHVybCgnaHR0cHM6Ly9mb250cy5kMmNtZWRpYS5jYS9IeXVuZGFpU2Fuc0hlYWQtTGlnaHQudHRmJylmb3JtYXQoJ3RydWV0eXBlJyk7Zm9udC13ZWlnaHQ6bGlnaHRlcjtmb250LXN0eWxlOm5vcm1hbDt9Ci8qKiAvY3NzL2Jhc2UuY3NzICoqLwpzdGFjay1sYywgLnN0YWNrLWxjIHsgLS1zcGFjZTp2YXIoLS1zLCAwLjVyZW0pOyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsganVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQ7IH0gc3RhY2stbGMgPiAqLCAuc3RhY2stbGMgPiAqIHsgbWFyZ2luLXRvcDowOyBtYXJnaW4tYm90dG9tOjA7IH0gc3RhY2stbGMgPiAqICsgKiwgLnN0YWNrLWxjID4gKiArICogeyBtYXJnaW4tdG9wOnZhcigtLXNwYWNlKTsgfSBzdGFjay1sYy4tLXMwID4gKiArICosIC5zdGFjay1sYy4tLXMwID4gKiArICogeyBib3JkZXItd2lkdGg6MDsgYm9yZGVyLXRvcC13aWR0aDp2YXIoLS1ib3JkZXItdGhpbik7IGJvcmRlci1jb2xvcjppbmhlcml0OyB9IC5ib3gtbGMsIGJveC1sYyB7IC0tc3BhY2U6dmFyKC0tcywgMC41cmVtKTsgZGlzcGxheTpibG9jazsgcGFkZGluZzp2YXIoLS1zcGFjZSk7IG91dGxpbmU6dmFyKC0tYm9yZGVyLXRoaW4pIHRyYW5zcGFyZW50OyBvdXRsaW5lLW9mZnNldDpjYWxjKHZhcigtLWJvcmRlci10aGluKSAqIC0xKTsgfSAuYm94LWxjLCBib3gtbGMgKiB7IGNvbG9yOmluaGVyaXQ7IH0gLmJnLWJveHsgY29sb3I6dmFyKC0tYmxhY2spOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXdoaXRlKTsgYm9yZGVyLXdpZHRoOnZhcigtLWJvcmRlci10aGluKTsgfSAuZ2xhc3MtYm94eyBib3JkZXI6bm9uZTsgYmFja2dyb3VuZDpub25lOyBiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50OyBjb2xvcjppbmhlcml0OyB9IC5jdHItYm94LCAuZmxleC1ib3gsIC5mbGV4LWNvbHVtbiwgLmZsZXgtYXJvdW5kLCAuZmxleC1iZXR3ZWVuLCAuZmxleC1ldmVubHksIC5mbGV4LWNlbnRlciwgLmZsZXgtc3RhcnQsIC5mbGV4LWVuZCwgLmZsZXgtYXV0bywgLmZsZXgtZXF1YWx7IGRpc3BsYXk6ZmxleDsgfSAuaW5saW5lLWJveHsgZGlzcGxheTppbmxpbmUtYmxvY2s7IH0gLnNoYWRvdy1ib3h7IGJveC1zaGFkb3c6MCAwIDEwcHggMnB4IHZhcigtLW1pZC1ncmF5KTsgYm9yZGVyLWNvbG9yOnZhcigtLWxpZ2h0LWdyYXkpOyB9IC5mbGV4LWJveDpub3QoOmlzKC5mbGV4LWJldHdlZW4sLmZsZXgtZXZlbmx5LC5mbGV4LWFyb3VuZCkpID4gKiArICp7IG1hcmdpbi1sZWZ0OnZhcigtLXMpOyB9IC5ncm91cC1sYywgZ3JvdXAtbGMgeyAtLXNwYWNlOnZhcigtLXMsIDAuNXJlbSk7IH0gLmdyb3VwLWxjID4gKiwgZ3JvdXAtbGMgPiAqIHsgZGlzcGxheTpmbGV4OyBmbGV4LXdyYXA6d3JhcDsganVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47IGFsaWduLWl0ZW1zOmNlbnRlcjsgbWFyZ2luOmNhbGModmFyKC0tc3BhY2UpIC8gMiAqIC0xKTsgfSAuZ3JvdXAtbGMgPiAqID4gKiwgZ3JvdXAtbGMgPiAqID4gKiB7IG1hcmdpbjpjYWxjKHZhcigtLXNwYWNlKSAvIDIpOyB9IDppcyguc2lkZWJhci1sYyxzaWRlYmFyLWxjKSB7IG92ZXJmbG93OmhpZGRlbjsgfSA6aXMoLnNpZGViYXItbGMsc2lkZWJhci1sYykgPiAqIHsgLS1zcGFjZTp2YXIoLS1zLCAwLjVyZW0pOyBkaXNwbGF5OmZsZXg7IGZsZXgtd3JhcDp3cmFwOyBtYXJnaW46Y2FsYyh2YXIoLS1zcGFjZSkgLyAyICogLTEpOyB9IDppcyguc2lkZWJhci1sYyxzaWRlYmFyLWxjKSA+ICogPiAqIHsgbWFyZ2luOmNhbGModmFyKC0tc3BhY2UpIC8gMik7IGZsZXgtZ3JvdzoxOyB9IDppcyguc2lkZWJhci1sYyxzaWRlYmFyLWxjKSA+ICogPiA6Zmlyc3QtY2hpbGQgeyBmbGV4LWJhc2lzOjA7IGZsZXgtZ3Jvdzo5OTk7IG1pbi13aWR0aDpjYWxjKHZhcigtLXNpZGViYXItYnAsIDUwJSkgLSB2YXIoLS1zcGFjZSkpOyB9IDppcyguc3dpdGNoZXItbGMsc3dpdGNoZXItbGMpID4gKiB7IC0tc3BhY2U6dmFyKC0tcywgMC41cmVtKTsgZGlzcGxheTpmbGV4OyBmbGV4LXdyYXA6d3JhcDsgbWFyZ2luOmNhbGMoKHZhcigtLXNwYWNlKSAvIDIpICogLTEpOyB9IDppcyguc3dpdGNoZXItbGMsc3dpdGNoZXItbGMpID4gKiA+ICogeyBmbGV4LWdyb3c6MTsgZmxleC1iYXNpczpjYWxjKCh2YXIoLS1zd2l0Y2gtYnAsIDMwcmVtKSAtICgxMDAlIC0gdmFyKC0tc3BhY2UpKSkgKiA5OTkpOyBtYXJnaW46Y2FsYyh2YXIoLS1zcGFjZSkgLyAyKTsgfSA6aXMoLnN3aXRjaGVyLWxjLHN3aXRjaGVyLWxjKSA+ICogPiA6bnRoLWxhc3QtY2hpbGQobis1KSwgOmlzKC5zd2l0Y2hlci1sYyxzd2l0Y2hlci1sYykgPiAqID4gOm50aC1sYXN0LWNoaWxkKG4rNSkgfiAqIHsgZmxleC1iYXNpczoxMDAlOyB9IC4tLXMwey0tc3BhY2U6dmFyKC0tczApO30gLi0tcy05ey0tc3BhY2U6dmFyKC0tcy05KTt9IC4tLXMtOHstLXNwYWNlOnZhcigtLXMtOCk7fSAuLS1zLTd7LS1zcGFjZTp2YXIoLS1zLTcpO30gLi0tcy02ey0tc3BhY2U6dmFyKC0tcy02KTt9IC4tLXMtNXstLXNwYWNlOnZhcigtLXMtNSk7fSAuLS1zLTR7LS1zcGFjZTp2YXIoLS1zLTQpO30gLi0tcy0zey0tc3BhY2U6dmFyKC0tcy0zKTt9IC4tLXMtMnstLXNwYWNlOnZhcigtLXMtMik7fSAuLS1zLTF7LS1zcGFjZTp2YXIoLS1zLTEpO30gLi0tc3stLXNwYWNlOnZhcigtLXMpO30gLi0tczF7LS1zcGFjZTp2YXIoLS1zMSk7fSAuLS1zMnstLXNwYWNlOnZhcigtLXMyKTt9IC4tLXMzey0tc3BhY2U6dmFyKC0tczMpO30gLi0tczR7LS1zcGFjZTp2YXIoLS1zNCk7fSAuLS1zNXstLXNwYWNlOnZhcigtLXM1KTt9IC4tLXM2ey0tc3BhY2U6dmFyKC0tczYpO30gLi0tczd7LS1zcGFjZTp2YXIoLS1zNyk7fSAuLS1zOHstLXNwYWNlOnZhcigtLXM4KTt9IC4tLXM5ey0tc3BhY2U6dmFyKC0tczkpO30gLi0tZnMtOXtmb250LXNpemU6dmFyKC0tZnMtOSk7LS1mczp2YXIoLS1mcy05KTt9IC4tLWZzLTh7Zm9udC1zaXplOnZhcigtLWZzLTgpOy0tZnM6dmFyKC0tZnMtOCk7fSAuLS1mcy03e2ZvbnQtc2l6ZTp2YXIoLS1mcy03KTstLWZzOnZhcigtLWZzLTcpO30gLi0tZnMtNntmb250LXNpemU6dmFyKC0tZnMtNik7LS1mczp2YXIoLS1mcy02KTt9IC4tLWZzLTV7Zm9udC1zaXplOnZhcigtLWZzLTUpOy0tZnM6dmFyKC0tZnMtNSk7fSAuLS1mcy00e2ZvbnQtc2l6ZTp2YXIoLS1mcy00KTstLWZzOnZhcigtLWZzLTQpO30gLi0tZnMtM3tmb250LXNpemU6dmFyKC0tZnMtMyk7LS1mczp2YXIoLS1mcy0zKTt9IC4tLWZzLTJ7Zm9udC1zaXplOnZhcigtLWZzLTIpOy0tZnM6dmFyKC0tZnMtMik7fSAuLS1mcy0xe2ZvbnQtc2l6ZTp2YXIoLS1mcy0xKTstLWZzOnZhcigtLWZzLTEpO30gLi0tZnMwe2ZvbnQtc2l6ZTp2YXIoLS1mczApOy0tZnM6dmFyKC0tZnMwKTt9IC4tLWZzMXtmb250LXNpemU6dmFyKC0tZnMxKTstLWZzOnZhcigtLWZzMSk7fSAuLS1mczJ7Zm9udC1zaXplOnZhcigtLWZzMik7LS1mczp2YXIoLS1mczIpO30gLi0tZnMze2ZvbnQtc2l6ZTp2YXIoLS1mczMpOy0tZnM6dmFyKC0tZnMzKTt9IC4tLWZzNHtmb250LXNpemU6dmFyKC0tZnM0KTstLWZzOnZhcigtLWZzNCk7fSAuLS1mczV7Zm9udC1zaXplOnZhcigtLWZzNSk7LS1mczp2YXIoLS1mczUpO30gLi0tZnM2e2ZvbnQtc2l6ZTp2YXIoLS1mczYpOy0tZnM6dmFyKC0tZnM2KTt9IC4tLWZzN3tmb250LXNpemU6dmFyKC0tZnM3KTstLWZzOnZhcigtLWZzNyk7fSAuLS1mczh7Zm9udC1zaXplOnZhcigtLWZzOCk7LS1mczp2YXIoLS1mczgpO30gLi0tZnM5e2ZvbnQtc2l6ZTp2YXIoLS1mczkpOy0tZnM6dmFyKC0tZnM5KTt9IC5zaHJpbmstZ3Jvd3tmbGV4OjEgMTt9IC5mbGV4LXdyYXAge2ZsZXgtd3JhcDp3cmFwO30gLmZsZXgtcmV2ZXJzZSB7ZmxleC1kaXJlY3Rpb246cm93LXJldmVyc2U7fSAuZmxleC1hdXRvID4gKntmbGV4OjEgMSBhdXRvO30gLmZsZXgtZXF1YWwgPiAqe2ZsZXg6MSAxO30gLmFsaWduLWNlbnRlciB7YWxpZ24taXRlbXM6Y2VudGVyO30gLmFsaWduLXN0YXJ0e2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7fSAuYWxpZ24tZW5ke2FsaWduLWl0ZW1zOmZsZXgtZW5kO30gLmFsaWduLWJhc2VsaW5le2FsaWduLWl0ZW1zOmJhc2VsaW5lO30gLmZsZXgtY29sdW1uIHtmbGV4LWZsb3c6Y29sdW1uO30gLmZsZXgtcm93IHtmbGV4LWZsb3c6cm93O30gLmZsZXgtYXJvdW5ke2p1c3RpZnktY29udGVudDpzcGFjZS1hcm91bmQ7fSAuZmxleC1iZXR3ZWVue2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO30gLmZsZXgtZXZlbmx5e2p1c3RpZnktY29udGVudDpzcGFjZS1ldmVubHk7fSAuZmxleC1jZW50ZXJ7anVzdGlmeS1jb250ZW50OmNlbnRlcjt9IC5mbGV4LXN0YXJ0e2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0O30gLmZsZXgtZW5ke2p1c3RpZnktY29udGVudDpmbGV4LWVuZDt9IC4tcDAge3BhZGRpbmc6MDt9IC4tcHQwIHtwYWRkaW5nLXRvcDowO30gLi1wYjAge3BhZGRpbmctYm90dG9tOjA7fSAuLXB2MCB7cGFkZGluZy10b3A6MDtwYWRkaW5nLWJvdHRvbTowfSAuLXBoMCB7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDowfSAuLXAge3BhZGRpbmc6dmFyKC0tc3BhY2UpO30gLi1wdntwYWRkaW5nLXRvcDp2YXIoLS1zcGFjZSk7IHBhZGRpbmctYm90dG9tOnZhcigtLXNwYWNlKTt9IC4tcGh7cGFkZGluZy1sZWZ0OnZhcigtLXNwYWNlKTsgcGFkZGluZy1yaWdodDp2YXIoLS1zcGFjZSk7fSAuLXB0e3BhZGRpbmctdG9wOnZhcigtLXNwYWNlKTt9IC4tcGJ7cGFkZGluZy1ib3R0b206dmFyKC0tc3BhY2UpO30gLi1tMCB7bWFyZ2luOjA7fSAuLW10MCB7bWFyZ2luLXRvcDowO30gLi1tYjAge21hcmdpbi1ib3R0b206MDt9IC4tbXYwIHttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowfSAuLW1oMCB7bWFyZ2luLWxlZnQ6MDttYXJnaW4tcmlnaHQ6MH0gLi1tIHttYXJnaW46dmFyKC0tc3BhY2UpO30gLi1tdnttYXJnaW4tdG9wOnZhcigtLXNwYWNlKTsgbWFyZ2luLWJvdHRvbTp2YXIoLS1zcGFjZSk7fSAuLW1oe21hcmdpbi1sZWZ0OnZhcigtLXNwYWNlKTsgbWFyZ2luLXJpZ2h0OnZhcigtLXNwYWNlKTt9IC4tbXR7bWFyZ2luLXRvcDp2YXIoLS1zcGFjZSk7fSAuLW1ie21hcmdpbi1ib3R0b206dmFyKC0tc3BhY2UpO30gLi1iMCB7Ym9yZGVyOm5vbmU7fSAuLWIyIHtib3JkZXItd2lkdGg6MnB4O30gLi1ie2JvcmRlci13aWR0aDoxcHg7fSAuLWJ0e2JvcmRlci10b3Atd2lkdGg6MXB4O30gLi1iYntib3JkZXItYm90dG9tLXdpZHRoOjFweDt9IC4tYnZ7Ym9yZGVyLXRvcC13aWR0aDoxcHg7Ym9yZGVyLWJvdHRvbS13aWR0aDoxcHg7fSAuLWJoe2JvcmRlci1sZWZ0LXdpZHRoOjFweDtib3JkZXItcmlnaHQtd2lkdGg6MXB4O30gLi13LWZ1bGwge3dpZHRoOjEwMHZ3O30gLi13LTEwMCB7d2lkdGg6MTAwJTt9IC4tdy01MCB7d2lkdGg6NTAlO30gLi13LTMzIHt3aWR0aDozMy4zMyU7fSAuLXctMjUge3dpZHRoOjI1JTt9IC4tdy01MHcge3dpZHRoOjUwdnc7fSAuLWZzLXh4c3tmb250LXNpemU6MC4xNXJlbTsgLS1mczowLjE1cmVtO30gLi1mcy14c3tmb250LXNpemU6MC41cmVtOyAtLWZzOjAuNXJlbTt9IC4tZnMtc3tmb250LXNpemU6MC43NXJlbTsgLS1mczowLjc1cmVtO30gLi1mcy1zcntmb250LXNpemU6MC45cmVtOyAtLWZzOjAuOXJlbTt9IC4tZnMtbHJ7Zm9udC1zaXplOjEuMXJlbTsgLS1mczoxLjFyZW07fSAuLWZzLWx7Zm9udC1zaXplOjEuMjVyZW07IC0tZnM6MS4yNXJlbTt9IC4tZnMteGx7Zm9udC1zaXplOjEuNXJlbTsgLS1mczoxLjVyZW07fSAuLWZzLXh4bHtmb250LXNpemU6MnJlbTsgLS1mczoycmVtO30gLi1mcy14eHhse2ZvbnQtc2l6ZToyLjI1cmVtOyAtLWZzOjIuMjVyZW07fSAuLWZ3MSB7Zm9udC13ZWlnaHQ6MTAwO30gLi1mdzIge2ZvbnQtd2VpZ2h0OjIwMDt9IC4tZnczIHtmb250LXdlaWdodDozMDA7fSAuLWZ3NCB7Zm9udC13ZWlnaHQ6NDAwO30gLi1mdzUge2ZvbnQtd2VpZ2h0OjUwMDt9IC4tZnc2IHtmb250LXdlaWdodDo2MDA7fSAuLWZ3NyB7Zm9udC13ZWlnaHQ6NzAwO30gLi1mdzgge2ZvbnQtd2VpZ2h0OjgwMDt9IC4tZnc5IHtmb250LXdlaWdodDo5MDA7fSAuLWJvbGQge2ZvbnQtd2VpZ2h0OmJvbGQ7fSAudHh0LXJlZCB7Y29sb3I6I2NjMDAwMDt9IC50eHQtY2VudGVye3RleHQtYWxpZ246Y2VudGVyO30gLnR4dC1yaWdodHt0ZXh0LWFsaWduOnJpZ2h0O30gLnR4dC1sZWZ0e3RleHQtYWxpZ246bGVmdDt9IC50eHQtdXBwZXJ7dGV4dC10cmFuc2Zvcm06dmFyKC0tY2VydC10eHQtdHJhbnNmb3JtLCB2YXIoLS10eHQtdXBwZXIsIHVwcGVyY2FzZSkpO30gLnR4dC1ub3Rle2ZvbnQtc3R5bGU6aXRhbGljO30gLnR4dC1wYXltZW50IHtjb2xvcjp2YXIoLS1uZXd2ZHAtYmVzdHByaWNlLXRleHQtY29sb3ItcHJpY2UpICFpbXBvcnRhbnQ7fSAuLXBvc3JlbHtwb3NpdGlvbjpyZWxhdGl2ZTt9IC5jZXJ0LXR4dC10cmFuc2Zvcm17dGV4dC10cmFuc2Zvcm06dmFyKC0tY2VydC10eHQtdHJhbnNmb3JtLCBub25lKTt9IFtoaWRkZW5dLCAuaGlkZGVuIHsgZGlzcGxheTpub25lICFpbXBvcnRhbnQ7IH0gLnNrZWxldG9uLXNsaWRlciA+ICp7IGRpc3BsYXk6bm9uZTsgfSAuc2tlbGV0b24tdHh0eyB0ZXh0LWluZGVudDoxMDAlOyB3aGl0ZS1zcGFjZTpub3dyYXA7IG92ZXJmbG93OmhpZGRlbjsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDIyMSwgMjIxLCAyMjEsIDAuOCk7IGJvcmRlci1yYWRpdXM6MC41cmVtOyB9IC5za2VsZXRvbi1idG57IHdpZHRoOm1pbigyMHJlbSwxMDAlKTsgaGVpZ2h0OjIuNXJlbTsgYm9yZGVyLXJhZGl1czowLjVyZW07IGJhY2tncm91bmQtY29sb3I6cmdiYSgyMjEsIDIyMSwgMjIxLCAwLjgpOyBtYXJnaW46YXV0bzsgfSAuc2tlbGV0b24tYmxvY2t7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjIxLCAyMjEsIDIyMSwgMC44KTsgfSAuc2tlbGV0b24tc2xpZGVyLCAuc2tlbGV0b24tdHh0LCAuc2tlbGV0b24tYnRuLCAuc2tlbGV0b24tYmxvY2sgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgb3ZlcmZsb3c6aGlkZGVuOyBkaXNwbGF5OmJsb2NrOyB9IC5za2VsZXRvbi1zbGlkZXI6OmFmdGVyLCAuc2tlbGV0b24tdHh0OjphZnRlciwgLnNrZWxldG9uLWJ0bjo6YWZ0ZXIsIC5za2VsZXRvbi1ibG9jazo6YWZ0ZXIgeyBjb250ZW50OiIiOyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjA7IHJpZ2h0OjA7IGJvdHRvbTowOyBsZWZ0OjA7IHRyYW5zZm9ybTp0cmFuc2xhdGVYKC0xMDAlKTsgYmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMCkgMCwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpIDIwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpIDYwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwKSk7IGFuaW1hdGlvbjpzaGltbWVyIDJzIGluZmluaXRlOyB9IC5za2VsZXRvbi1zbGlkZXIgeyBiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCA1MTIgNTEyJyUzRSUzQ3BhdGggZD0nTTQ2NCA0NDhINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWMTEyYzAtMjYuNTEgMjEuNDktNDggNDgtNDhoNDE2YzI2LjUxIDAgNDggMjEuNDkgNDggNDh2Mjg4YzAgMjYuNTEtMjEuNDkgNDgtNDggNDh6TTExMiAxMjBjLTMwLjkyOCAwLTU2IDI1LjA3Mi01NiA1NnMyNS4wNzIgNTYgNTYgNTYgNTYtMjUuMDcyIDU2LTU2LTI1LjA3Mi01Ni01Ni01NnpNNjQgMzg0aDM4NFYyNzJsLTg3LjUxNS04Ny41MTVjLTQuNjg2LTQuNjg2LTEyLjI4NC00LjY4Ni0xNi45NzEgMEwyMDggMzIwbC01NS41MTUtNTUuNTE1Yy00LjY4Ni00LjY4Ni0xMi4yODQtNC42ODYtMTYuOTcxIDBMNjQgMzM2djQ4eicgZmlsbD0nJTIzZWVlJy8lM0UlM0Mvc3ZnJTNFIik7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYmFja2dyb3VuZC1wb3NpdGlvbjpjZW50ZXI7IGJhY2tncm91bmQtY29sb3I6I2NjYzsgb3BhY2l0eTowLjk7IH0gQGtleWZyYW1lcyBzaGltbWVyIHsgMTAwJSB7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMTAwJSk7fSB9IEBzdXBwb3J0cyAoLXdlYmtpdC10b3VjaC1jYWxsb3V0Om5vbmUpIHsgLnNrZWxldG9uLXNsaWRlcjo6YWZ0ZXIsIC5za2VsZXRvbi10eHQ6OmFmdGVyeyBhbmltYXRpb246bm9uZTsgfSB9IC5jb250ZW50LXNrZWxldG9uIHsgYmFja2dyb3VuZDojZWVlOyBib3JkZXItcmFkaXVzOjAuNXJlbTsgb3ZlcmZsb3c6aGlkZGVuOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgbWF4LXdpZHRoOjQwMHB4OyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAuY29udGVudC1za2VsZXRvbi5yZWN0YW5nbGUgeyBhc3BlY3QtcmF0aW86dmFyKC0tcmF0aW8sIDE2LzkpOyB9IC5jb250ZW50LXNrZWxldG9uLnRleHQgeyBoZWlnaHQ6YXV0bzsgcGFkZGluZzoxcmVtOyB9IC5jb250ZW50LXNrZWxldG9uLnRleHQ6OmJlZm9yZSwgLmNvbnRlbnQtc2tlbGV0b24udGV4dDo6YWZ0ZXIgeyBjb250ZW50OiIiOyBkaXNwbGF5OmJsb2NrOyBoZWlnaHQ6MXJlbTsgYmFja2dyb3VuZDojZGRkOyBtYXJnaW4tYm90dG9tOjAuNXJlbTsgYm9yZGVyLXJhZGl1czowLjI1cmVtOyB9IC5jb250ZW50LXNrZWxldG9uLnRleHQ6OmFmdGVyIHsgd2lkdGg6NzAlOyB9IC5jb250ZW50LXNrZWxldG9uLmFjdGl2ZSB7IGJhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDkwZGVnLCAjZjlmOWY5IDI1JSwgI2RlZGVkZSA1MCUsICNmOWY5ZjkgNzUlKTsgYmFja2dyb3VuZC1zaXplOjIwMCUgMTAwJTsgYW5pbWF0aW9uOnNoaW1tZXIgMnMgaW5maW5pdGUgbGluZWFyOyB9IEBrZXlmcmFtZXMgc2hpbW1lciB7IDAlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjoyMDAlIDA7IH0gMTAwJSB7IGJhY2tncm91bmQtcG9zaXRpb246LTIwMCUgMDsgfSB9IC5jb250ZW50LXNrZWxldG9uLmRlYnVnOjphZnRlciB7IGNvbnRlbnQ6YXR0cihkYXRhLWJsb2NrKSAiIHwgIiBhdHRyKGRhdGEtc291cmNlKSAiIHwgIiBhdHRyKGRhdGEtZ2VuZXJhdGVkLWF0KTsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDo0cHg7IGxlZnQ6NHB4OyByaWdodDo0cHg7IGZvbnQtc2l6ZTowLjdyZW07IGZvbnQtZmFtaWx5Om1vbm9zcGFjZSwgc2Fucy1zZXJpZjsgY29sb3I6I2ZmZjsgYmFja2dyb3VuZDpyZ2JhKDAsMCwwLDAuNik7IHBhZGRpbmc6MnB4IDRweDsgYm9yZGVyLXJhZGl1czo0cHg7IHotaW5kZXg6MTA7IHBvaW50ZXItZXZlbnRzOm5vbmU7IH0gYm9keSB7IHdpZHRoOmF1dG87IG1hcmdpbjowOyBwYWRkaW5nOjA7IGZvbnQtc2l6ZToxcmVtOyBmb250LWZhbWlseTp2YXIoLS1mb250LXRleHQtbW9iKTsgY29sb3I6dmFyKC0tZGVmYXVsdC1ibGFjayk7IGZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtdGV4dC13ZWlnaHQpOyB9IHVsIHsgbGlzdC1zdHlsZTpub25lOyBsaXN0LXN0eWxlLXR5cGU6bm9uZTsgbGlzdC1zdHlsZS1wb3NpdGlvbjppbml0aWFsOyBsaXN0LXN0eWxlLWltYWdlOmluaXRpYWw7IH0gLnJlc3BvbnNpdmUtZWRpdG9yIHVsIHsgbGlzdC1zdHlsZTppbmhlcml0OyBsaXN0LXN0eWxlLXR5cGU6aW5oZXJpdDsgbGlzdC1zdHlsZS1wb3NpdGlvbjppbmhlcml0OyBsaXN0LXN0eWxlLWltYWdlOmluaGVyaXQ7IH0gc3ZnLCBzdmcuaWNvbnsgLS1pY29uLXNpemU6Y2FsYyh2YXIoLS1mcywgdmFyKC0tZnMwKSkgLyB2YXIoLS1yYXRpbykpOyBmaWxsOnZhcigtLXR4dC1jb2xvciwgdmFyKC0tYmxhY2spKTsgd2lkdGg6dmFyKC0taWNvbi1zaXplKTsgaGVpZ2h0OnZhcigtLWljb24tc2l6ZSk7IH0gc3ZnLmF1dGhvcml6ZWQtYmxhY2t7ZmlsbDojMjgyODI4IWltcG9ydGFudDt9IHN2Zy5hdXRob3JpemVkLWJsYWNrLWtpYXtmaWxsOiMwNTE0MUYhaW1wb3J0YW50O30gc3ZnLmF1dGhvcml6ZWQtcmVke2ZpbGw6I0ZGMDAwMCFpbXBvcnRhbnQ7fSBzdmcuYXV0aG9yaXplZC13aGl0ZXtmaWxsOiNGRkZGRkYhaW1wb3J0YW50O30gLmF1dGhvcml6ZWQtcmVkLXdoaXRlLXBsYXktYnRue2JhY2tncm91bmQ6cmFkaWFsLWdyYWRpZW50KCNGRkZGRkYgNTAlLHRyYW5zcGFyZW50IDUwJSk7fSBzdmcub2djb2xvci1mYWNlYm9va3tmaWxsOiM0MjY3QjIhaW1wb3J0YW50O30gc3ZnLm9nY29sb3ItdHdpdHRlcntmaWxsOiMxREExRjIhaW1wb3J0YW50O30gc3ZnLm9nY29sb3IteC10d2l0dGVye2ZpbGw6IzE0MTcxQSFpbXBvcnRhbnQ7fSBzdmcub2djb2xvci14LXR3aXR0ZXItd2hpdGV7ZmlsbDojRkZGRkZGIWltcG9ydGFudDt9IHN2Zy5vZ2NvbG9yLWxpbmtlZGlue2ZpbGw6IzAwNzdCNSFpbXBvcnRhbnQ7fSBzdmcub2djb2xvci1ibG9nZ2Vye2ZpbGw6I0ZGNTcyMiFpbXBvcnRhbnQ7fSBzdmcub2djb2xvci1waW50ZXJlc3R7ZmlsbDojRTYwMDIzIWltcG9ydGFudDt9IHN2Zy5vZ2NvbG9yLXlvdXR1YmV7ZmlsbDojRkYwMDAwIWltcG9ydGFudDsgYmFja2dyb3VuZDpyYWRpYWwtZ3JhZGllbnQoI0ZGRkZGRiA1MCUsdHJhbnNwYXJlbnQgNTAlKTt9IHN2Zy5vZ2NvbG9yLWluc3RhZ3JhbXtmaWxsOiM4MzNBQjQhaW1wb3J0YW50O30gc3ZnLm9nY29sb3ItdGlrdG9re2ZpbGw6I2ZmMDA1MCFpbXBvcnRhbnQ7fSAuZmFjZWJvb2stb2dpY29uLXR3ZWFrc3toZWlnaHQ6MjRweCFpbXBvcnRhbnQ7bWFyZ2luLXRvcDoycHghaW1wb3J0YW50O30gI2Zvb3RlciAuZmFjZWJvb2stb2dpY29uLXR3ZWFrc3toZWlnaHQ6MjNweCFpbXBvcnRhbnQ7bWFyZ2luLXRvcDowcHghaW1wb3J0YW50O30gLmluc3RhZ3JhbS1vZ2ljb24tdHdlYWtze2hlaWdodDoyOHB4IWltcG9ydGFudDttYXJnaW4tdG9wOjBweCFpbXBvcnRhbnQ7fSAjZm9vdGVyIC5pbnN0YWdyYW0tb2dpY29uLXR3ZWFrc3toZWlnaHQ6MjlweCFpbXBvcnRhbnQ7bWFyZ2luLXRvcDotNHB4IWltcG9ydGFudDt9IHN2Zy5jdXN0b21tZWRpYS1jb2xvcnBpY2tlcntmaWxsOnZhcigtLWFkbWluLXNvY2lhbC1jdXN0b20tY29sb3ItcGlja2VyLXRleHQpIWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYmctYXV0aG9yaXplZC1ibGFja3tiYWNrZ3JvdW5kLWNvbG9yOiMyODI4MjghaW1wb3J0YW50O30gLnNvY2lhbC1tZWRpYV9fY29udGFpbmVyIC5iZy1hdXRob3JpemVkLWJsYWNrLWtpYXtiYWNrZ3JvdW5kLWNvbG9yOiMwNTE0MUYhaW1wb3J0YW50O30gLnNvY2lhbC1tZWRpYV9fY29udGFpbmVyIC5iZy1hdXRob3JpemVkLXJlZHtiYWNrZ3JvdW5kLWNvbG9yOiNGRjAwMDAhaW1wb3J0YW50O30gLnNvY2lhbC1tZWRpYV9fY29udGFpbmVyIC5iZy1hdXRob3JpemVkLXdoaXRle2JhY2tncm91bmQtY29sb3I6I0ZGRkZGRiFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmJnLW9nY29sb3ItZmFjZWJvb2t7YmFja2dyb3VuZC1jb2xvcjojM2E1OTk4IWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYmctb2djb2xvci10d2l0dGVye2JhY2tncm91bmQtY29sb3I6IzAwYWNlZCFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmJnLW9nY29sb3IteC10d2l0dGVye2JhY2tncm91bmQtY29sb3I6IzE0MTcxQSFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmJnLW9nY29sb3IteC10d2l0dGVyLXdoaXRle2JhY2tncm91bmQtY29sb3I6I0ZGRkZGRiFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmJnLW9nY29sb3ItbGlua2VkaW57YmFja2dyb3VuZC1jb2xvcjojMDA3N0I1IWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYmctb2djb2xvci1ibG9nZ2Vye2JhY2tncm91bmQtY29sb3I6I0ZGNTcyMiFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmJnLW9nY29sb3ItcGludGVyZXN0e2JhY2tncm91bmQtY29sb3I6I0U2MDAyMyFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmJnLW9nY29sb3IteW91dHViZXtiYWNrZ3JvdW5kLWNvbG9yOiNGRjAwMDAhaW1wb3J0YW50O30gLnNvY2lhbC1tZWRpYV9fY29udGFpbmVyIC5iZy1vZ2NvbG9yLWluc3RhZ3JhbXtiYWNrZ3JvdW5kLWNvbG9yOiNmMjM5OTUhaW1wb3J0YW50O30gLnNvY2lhbC1tZWRpYV9fY29udGFpbmVyIC5iZy1vZ2NvbG9yLXRpa3Rva3tiYWNrZ3JvdW5kLWNvbG9yOiNmZjAwNTAhaW1wb3J0YW50O30gLnNvY2lhbC1tZWRpYV9fY29udGFpbmVyIC5iZy1jdXN0b21tZWRpYS1jb2xvcnBpY2tlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWFkbWluLXNvY2lhbC1jdXN0b20tY29sb3ItcGlja2VyLXRleHQpIWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYy1hdXRob3JpemVkLWJsYWNre2NvbG9yOiMyODI4MjghaW1wb3J0YW50O30gLnNvY2lhbC1tZWRpYV9fY29udGFpbmVyIC5jLWF1dGhvcml6ZWQtYmxhY2sta2lhe2NvbG9yOiMwNTE0MUYhaW1wb3J0YW50O30gLnNvY2lhbC1tZWRpYV9fY29udGFpbmVyIC5jLWF1dGhvcml6ZWQtcmVke2NvbG9yOiNGRjAwMDAhaW1wb3J0YW50O30gLnNvY2lhbC1tZWRpYV9fY29udGFpbmVyIC5jLWF1dGhvcml6ZWQtd2hpdGV7Y29sb3I6I0ZGRkZGRiFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmMtb2djb2xvci1mYWNlYm9va3tjb2xvcjojM2E1OTk4IWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYy1vZ2NvbG9yLXR3aXR0ZXJ7Y29sb3I6IzAwYWNlZCFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmMtb2djb2xvci14LXR3aXR0ZXJ7Y29sb3I6IzE0MTcxQSFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmMtb2djb2xvci14LXR3aXR0ZXItd2hpdGV7Y29sb3I6I0ZGRkZGRiFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmMtb2djb2xvci1saW5rZWRpbntjb2xvcjojMDA3N0I1IWltcG9ydGFudDt9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuYy1vZ2NvbG9yLWJsb2dnZXJ7Y29sb3I6I0ZGNTcyMiFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmMtb2djb2xvci1waW50ZXJlc3R7Y29sb3I6I0U2MDAyMyFpbXBvcnRhbnQ7fSAuc29jaWFsLW1lZGlhX19jb250YWluZXIgLmMtb2djb2xvci15b3V0dWJle2NvbG9yOiNGRjAwMDAhaW1wb3J0YW50OyBiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudCgjRkZGRkZGIDUwJSx0cmFuc3BhcmVudCA1MCUpO30gLnNvY2lhbC1tZWRpYV9fY29udGFpbmVyIC5jLW9nY29sb3ItaW5zdGFncmFte2NvbG9yOiNmMjM5OTUhaW1wb3J0YW50O30gLnNvY2lhbC1tZWRpYV9fY29udGFpbmVyIC5jLW9nY29sb3ItdGlrdG9re2NvbG9yOiNmZjAwNTAhaW1wb3J0YW50O30gLnNvY2lhbC1tZWRpYV9fY29udGFpbmVyIC5jLWN1c3RvbW1lZGlhLWNvbG9ycGlja2Vye2NvbG9yOnZhcigtLWFkbWluLXNvY2lhbC1jdXN0b20tY29sb3ItcGlja2VyLXRleHQpIWltcG9ydGFudDt9IC5ub3RlLWJveHsgZGlzcGxheTpibG9jazsgYm9yZGVyLXJhZGl1czowLjI1cmVtOyB9IC5ub3RlLXN1Y2Nlc3N7IGNvbG9yOiMxNTU3MjQ7IGJhY2tncm91bmQtY29sb3I6I2Q0ZWRkYTsgYm9yZGVyLWNvbG9yOiMxNTU3MjQ7IGJvcmRlci13aWR0aDp2YXIoLS1ib3JkZXItdGhpbik7IH0gLm5vdGUtZXJyb3J7IGNvbG9yOiNmZmZmZmY7IGJhY2tncm91bmQtY29sb3I6I2ZmMDAwMDsgYm9yZGVyLWNvbG9yOiNmZjAwMDA7IGJvcmRlci13aWR0aDp2YXIoLS1ib3JkZXItdGhpbik7IH0gdWwuY2hlY2tsaXN0IGxpOmJlZm9yZXsgY29udGVudDoiIjsgYm9yZGVyLWxlZnQ6MC4ycmVtIHNvbGlkOyBib3JkZXItYm90dG9tOjAuMnJlbSBzb2xpZDsgd2lkdGg6MC43cmVtOyBoZWlnaHQ6MC40cmVtOyBkaXNwbGF5OmlubGluZS1ibG9jazsgdHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpOyBtYXJnaW4tcmlnaHQ6MXJlbTsgfSB1bC5jaGVja2xpc3QgbGl7IG1hcmdpbi10b3A6dmFyKC0tc3BhY2UpOyBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgfSAuaW52YWxpZCA+IDppcyhpbnB1dCxzZWxlY3QsdGV4dGFyZWEpeyBiYWNrZ3JvdW5kLWNvbG9yOiNmYWQ2ZGM7IH0gLi1iZy13aGl0ZXsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS13aGl0ZSk7IH0gLi1iZy1ncmF5eyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWdyYXkpOyBjb2xvcjp2YXIoLS13aGl0ZSk7IH0gLi1iZy1kYXJrLWdyYXl7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tZGFyay1ncmF5KTsgY29sb3I6dmFyKC0td2hpdGUpOyB9IC4tYmctYmxhY2stZ3JheXsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1ibGFjay1ncmF5KTsgY29sb3I6dmFyKC0td2hpdGUpOyB9IC4tYmctYmxhY2t7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tYmxhY2spOyBjb2xvcjp2YXIoLS13aGl0ZSk7IH0gLi1iZy1saWdodHsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1saWdodCk7IGNvbG9yOnZhcigtLWJsYWNrKTsgfSAuLWJnLWxpZ2h0LWdyYXl7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tbGlnaHQtZ3JheSk7IGNvbG9yOnZhcigtLWJsYWNrKTsgfSAuLWJnLW5vbmV7YmFja2dyb3VuZDp0cmFuc3BhcmVudDt9IC4tcm91bmR7IGJvcmRlci1yYWRpdXM6MC4zcmVtOyB9IC5wdXNoLWRvd257IHBvc2l0aW9uOmFic29sdXRlOyBib3R0b206MHB4OyB9IC5wcmljZS1tYWlueyBjb2xvcjojZmYwMDAwOyB9IC5wcmljZS1zdHJpa2V7IGNvbG9yOiM5OTk7IHRleHQtZGVjb3JhdGlvbjpsaW5lLXRocm91Z2g7IH0gLmZvcm1hdC1wcmljZXsgcG9zaXRpb246cmVsYXRpdmU7IG1heC13aWR0aDpmaXQtY29udGVudDsgbWFyZ2luLXJpZ2h0OjAuN3JlbTsgbGluZS1oZWlnaHQ6MWVtOyB9IDppcyguRU5HTElTSCxbZGF0YS1sYW5nPSJlbiJdKSAuZm9ybWF0LXByaWNleyBtYXJnaW4tbGVmdDowLjZyZW07IG1hcmdpbi1yaWdodDp1bnNldDsgfSAuZm9ybWF0LXByaWNlOmFmdGVyeyBjb250ZW50OiIkIjsgZm9udC1zaXplOm1heCgwLjVyZW0sMC42ZW0pOyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOnZhcigtLWZvcm1hdC1waWNlLXNpZ24tcG9zaXRpb24sMCk7IHJpZ2h0Oi0wLjZlbTsgbGluZS1oZWlnaHQ6aW5oZXJpdDsgfSAuZmluYWwtcHJpY2UgLmZvcm1hdC1wcmljZTphZnRlcnsgbWFyZ2luLXRvcDotNXB4OyB9IC5maW5hbC1wcmljZSAuZm9ybWF0LXByaWNleyBkaXNwbGF5OmlubGluZS1ibG9jazsgcGFkZGluZy1yaWdodDoycHg7IH0gOmlzKC5FTkdMSVNILFtkYXRhLWxhbmc9ImVuIl0pIC5mb3JtYXQtcHJpY2U6YWZ0ZXJ7IGxlZnQ6LTAuN2VtOyByaWdodDp1bnNldDsgfSAucHJpY2UtZW46YmVmb3JleyBjb250ZW50OiIkIjsgfSA6aXMoLnByaWNlLWVuKTpiZWZvcmV7IGZvbnQtc2l6ZTowLjZlbTsgcG9zaXRpb246cmVsYXRpdmU7IHRvcDotMC41ZW07IH0gLnByaWNlLWZyOmFmdGVyeyBjb250ZW50OiIgJCI7IH0gOmlzKC5wcmljZS1mcik6YWZ0ZXJ7IGZvbnQtc2l6ZTowLjZlbTsgcG9zaXRpb246cmVsYXRpdmU7IHRvcDotMC41ZW07IH0gLnNjcmF0Y2gtb3ZlciwgLnNjcmF0Y2gtbGVhc2V7IHBvc2l0aW9uOnJlbGF0aXZlOyB9IC5zY3JhdGNoLW92ZXI6YmVmb3JlLCAuc2NyYXRjaC1sZWFzZTpiZWZvcmV7IGJhY2tncm91bmQ6bm9uZSByZXBlYXQgc2Nyb2xsIDAgMCBibGFjazsgY29udGVudDoiICI7IGhlaWdodDoycHg7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6NDUlOyAtbW96LXRyYW5zZm9ybTpyb3RhdGUoN2RlZyk7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSg3ZGVnKTsgdHJhbnNmb3JtOnJvdGF0ZSg3ZGVnKTsgd2lkdGg6OTAlOyB9IC5FTkdMSVNIIDppcyguc2NyYXRjaC1sZWFzZSwuc2NyYXRjaC1vdmVyKTpoYXMoLmZvcm1hdC1wcmljZSk6YmVmb3JleyBtYXJnaW4tbGVmdDowLjVyZW07IH0gLmJsdXItb3ZlciwgLmJsdXItbGVhc2UgeyAtd2Via2l0LWZpbHRlcjpibHVyKDAuMTVlbSk7IC1tb3otZmlsdGVyOmJsdXIoMC4xNWVtKTsgLW1zLWZpbHRlcjpibHVyKDAuMTVlbSk7IC1vLWZpbHRlcjpibHVyKDAuMTVlbSk7IGZpbHRlcjpibHVyKDAuMTVlbSk7IH0gLm91dC12aWV3eyBwb3NpdGlvbjpmaXhlZDsgdG9wOi0yMHB4OyBjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LDApOyB6LWluZGV4OjA7IH0gLnRvcC1maXhlZCB7IHBvc2l0aW9uOmZpeGVkOyB0b3A6My4ycmVtOyBsZWZ0OjA7IHotaW5kZXg6MTAwOyBhbGlnbi1pdGVtczpjZW50ZXI7IH0gLmZpeGVkLXdyYXBwZXIudG9wLWZpeGVkIHsgd2lkdGg6MTAwJTsgcGFkZGluZzp2YXIoLS1zKTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1saWdodC1ncmF5KTsgYm9yZGVyLWJvdHRvbS13aWR0aDoxcHg7IGJvcmRlci1ib3R0b20tY29sb3I6IzAwMDsgYm94LXNpemluZzpib3JkZXItYm94OyBkaXNwbGF5OmZsZXg7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IH0gLmZpeGVkLXdyYXBwZXIudG9wLWZpeGVkID4gLnByb21vQlROIHsgbWFyZ2luOjA7IHdpZHRoOjkwdnc7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IH0gLmZpeGVkLXdyYXBwZXIudG9wLWZpeGVkIC5jdGEtbGFiZWx7IHRleHQtYWxpZ246Y2VudGVyOyB9IC5tYWluLWNvbG9yc3sgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS10YWItY29sb3IpOyBjb2xvcjp2YXIoLS10YWItdGV4dC1jb2xvcik7IH0gLnByb21vLWNvbG9yc3sgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS10YWItY29sb3IpOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXByb21vLWNvbG9yKTsgY29sb3I6dmFyKC0tdGFiLXRleHQtY29sb3IpOyBjb2xvcjp2YXIoLS1wcm9tby10ZXh0LWNvbG9yKTsgfSAuYnRueyAtLWJ0bi1iZy1jb2w6dmFyKC0tdGFiLWNvbG9yKTsgLS1idG4tdHh0LWNvbDp2YXIoLS10YWItdGV4dC1jb2xvcik7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tYnRuLWJnLWNvbCk7IGNvbG9yOnZhcigtLWJ0bi10eHQtY29sKTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1idG4tYnJkLWNvbCwgdmFyKC0tYnRuLXR4dC1jb2wpKTsgcGFkZGluZzowLjVyZW07IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gLmJ0bi1kYXJrLWdyZXksIC5jYkRhcmtHcmV5eyAtLWJ0bi1iZy1jb2w6IzMzMzsgLS1idG4tdHh0LWNvbDojZmZmOyB9IFtyb2xlPSJidXR0b24iXXsgY3Vyc29yOnBvaW50ZXI7IH0gLmJ0bi1wcm9tb3sgLS10eHQtY29sb3I6dmFyKC0tcHJvbW8tdGV4dC1jb2xvciwgdmFyKC0tdGFiLXRleHQtY29sb3IpKTsgY29sb3I6dmFyKC0tdHh0LWNvbG9yKTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS10YWItY29sb3IpOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXByb21vLWNvbG9yKTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1wcm9tby10ZXh0LWNvbG9yKTsgcG9zaXRpb246cmVsYXRpdmU7IGFsaWduLWl0ZW1zOmNlbnRlcjsgYm9yZGVyOm5vbmU7IH0gLmJ0bi1jdGE6YWZ0ZXJ7IGNvbnRlbnQ6IlxmMDU0IjsgZm9udC1zdHlsZTpub3JtYWw7IHRleHQtZGVjb3JhdGlvbjppbmhlcml0OyBwb3NpdGlvbjphYnNvbHV0ZTsgcmlnaHQ6MXJlbTsgZm9udC1mYW1pbHk6J0ZvbnQgQXdlc29tZSA1IFBybyc7IGZvbnQtd2VpZ2h0OjkwMDsgfSAuYnRuLW1haW57IC0tYnRuLWJnLWNvbDp2YXIoLS10YWItY29sb3IpOyAtLWJ0bi10eHQtY29sOnZhcigtLXRhYi10ZXh0LWNvbG9yKTsgLS1idG4tYnJkLWNvbDp2YXIoLS10YWItdGV4dC1jb2xvciwgdmFyKC0tdGFiLXRleHQtY29sb3IpKTsgfSAuYnRuLW1haW4yLCAuYnRuLW1haW46aG92ZXJ7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tbWVudS1ob3Zlci1iZy1jb2xvcik7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tbWVudS1ob3Zlci10ZXh0LWNvbG9yKTsgY29sb3I6dmFyKC0tbWVudS1ob3Zlci10ZXh0LWNvbG9yKTsgfSAuYnRuLWJsYWNreyBiYWNrZ3JvdW5kLWNvbG9yOiMwMDA7IGNvbG9yOiNmZmY7IC0tdHh0LWNvbG9yOiNmZmY7IH0gLmJ0bi1saWdodHsgYmFja2dyb3VuZC1jb2xvcjojZmZmOyBib3JkZXI6MXB4IHNvbGlkICNhYWE7IGNvbG9yOiM4ODg7IH0gLmJ0bi1zdWNjZXNzeyAtLWJ0bi1iZy1jb2w6IzRjYWY1MDsgLS1idG4tdHh0LWNvbDojZmZmOyB9IC5idG4td2FybmluZ3sgLS1idG4tYmctY29sOiNmZjk4MDA7IC0tYnRuLXR4dC1jb2w6I2ZmZjsgfSAuYm50LWRpc2FibGVkLCAuYnRuW2Rpc2FibGVkXSB7IGNvbG9yOnZhcigtLWdyYXkpOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWxpZ2h0LWdyYXkpOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWdyYXkpOyB9IC5idG4tZW1haWwtbWUsIC5idG4tdGV4dC1tZXsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IH0gLmJ0bi1lbWFpbC1tZTpiZWZvcmV7IGNvbnRlbnQ6IlxmMGUwIjsgZm9udC13ZWlnaHQ6OTAwOyB9IC5idG4tdGV4dC1tZTpiZWZvcmV7IGNvbnRlbnQ6IlxmM2NkIjsgZm9udC1zaXplOngtbGFyZ2U7IGZvbnQtd2VpZ2h0OjkwMDsgfSAuYnRuLWVtYWlsLW1lOmJlZm9yZSwgLmJ0bi10ZXh0LW1lOmJlZm9yZXsgZm9udC1mYW1pbHk6J0ZvbnQgQXdlc29tZSA1IFBybyc7IG1hcmdpbi1yaWdodDo1cHg7IHBvc2l0aW9uOnJlbGF0aXZlOyB0b3A6LTFweDsgfSBidXR0b24ucm91bmQtYnV0dG9ueyBhbGw6aW5oZXJpdDsgYm9yZGVyLXJhZGl1czo1MCU7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tdGFiLXRleHQtY29sb3IpOyBmaWxsOnZhcigtLXRhYi1jb2xvcik7IHBhZGRpbmc6MC4zcmVtOyBjdXJzb3I6cG9pbnRlcjsgfSBidXR0b24uaWNvbi1idXR0b257IGNvbG9yOnZhcigtLXByb21vLWJ0bi1jb2xvcik7IGJhY2tncm91bmQtY29sb3I6I2ZmZjsgYm9yZGVyOm5vbmU7IHBhZGRpbmc6MC41cmVtOyB3aWR0aDphdXRvOyB9IC54LWNsb3NleyBiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIGFyaWEtaGlkZGVuPSd0cnVlJyBmb2N1c2FibGU9J2ZhbHNlJyB2aWV3Qm94PScwIDAgMTAgMTAnJTNFJTNDc3R5bGUlM0UudmVydCU3QmZpbGw6JTIzMDAwOyU3RCUzQy9zdHlsZSUzRSUzQ3JlY3QgY2xhc3M9J3ZlcnQnIGhlaWdodD0nOCcgd2lkdGg9JzInIHk9JzEnIHg9JzQnJTNFJTNDL3JlY3QlM0UlM0NyZWN0IGhlaWdodD0nMicgd2lkdGg9JzgnIHk9JzQnIHg9JzEnJTNFJTNDL3JlY3QlM0UlM0Mvc3ZnJTNFIik7IGJhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7IGJvcmRlcjpub25lOyB3aWR0aDoxLjVyZW07IGhlaWdodDoxLjVyZW07IHRyYW5zZm9ybTpyb3RhdGUoNDVkZWcpOyBjdXJzb3I6cG9pbnRlcjsgfSA6bm90KC5jb21wbGV0ZWQpLnJpcHBsZSB7IHBvc2l0aW9uOnJlbGF0aXZlOyBvdmVyZmxvdzpoaWRkZW47IHRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAwLCAwKTsgfSA6bm90KC5jb21wbGV0ZWQpLnJpcHBsZTphZnRlciB7IGNvbnRlbnQ6IiI7IGRpc3BsYXk6YmxvY2s7IHBvc2l0aW9uOmFic29sdXRlOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgdG9wOjA7IGxlZnQ6MDsgcG9pbnRlci1ldmVudHM6bm9uZTsgYmFja2dyb3VuZC1pbWFnZTpyYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCByZ2IoMCwgMCwgMCkgMTAlLCB0cmFuc3BhcmVudCAxMC4wMSUpOyBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7IGJhY2tncm91bmQtcG9zaXRpb246NTAlOyB0cmFuc2Zvcm06c2NhbGUoMTAsMTApOyBvcGFjaXR5OjA7IHRyYW5zaXRpb246dHJhbnNmb3JtIC41cywgb3BhY2l0eSAxczsgfSA6bm90KC5jb21wbGV0ZWQpLnJpcHBsZTphY3RpdmU6YWZ0ZXIgeyB0cmFuc2Zvcm06c2NhbGUoMCwwKTsgb3BhY2l0eTouMjsgdHJhbnNpdGlvbjowczsgfSAubG9nb2FyZWEgeyBtaW4taGVpZ2h0OjdyZW07IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNlZWU7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tYWRtaW4tZ2VuZXJhbC1oZWFkZXItYmctY29sb3IpOyB9IGEgPiA6d2hlcmUoOmlzKHN2ZywgLmZhLCAuZmFzKTpmaXJzdC1jaGlsZDpub3QoOm9ubHktY2hpbGQpKXsgbWFyZ2luLXJpZ2h0OjAuNnJlbTsgfSAucHJvbW9Ub3BCdG4gOmlzKGEsYnV0dG9uKSB7IC0tZnM6dmFyKC0tZnMxKTsgLS10eHQtY29sb3I6dmFyKC0tdG9wLXByb21vLWJ0bi10eHQsIHZhcigtLXRvcC1wcm9tby1idG4tdHh0LWNvbG9yKSk7IGJvcmRlci1yYWRpdXM6NHB4OyBib3JkZXItdG9wLXdpZHRoOjFweDsgYm9yZGVyLWJvdHRvbS13aWR0aDoxcHg7IGJvcmRlci1jb2xvcjojZjNmM2YzOyBoZWlnaHQ6My4ycmVtOyBmb250LXNpemU6dmFyKC0tZnMxKTsgZm9udC13ZWlnaHQ6Ym9sZDsgZGlzcGxheTpmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyBhbGlnbi1pdGVtczpjZW50ZXI7IGJhY2tncm91bmQ6dmFyKC0tdG9wLXByb21vLWJ0bi1iZywgdmFyKC0tdG9wLXByb21vLWJ0bi1iZy1jb2xvcikpOyBjb2xvcjp2YXIoLS10b3AtcHJvbW8tYnRuLXR4dCwgdmFyKC0tdG9wLXByb21vLWJ0bi10eHQtY29sb3IpKTsgfSAucHJvbW9Ub3BCdG4uZGVhbGVyTGluZUJ1dHRvbiA6aXMoYSxidXR0b24peyAtLXR4dC1jb2xvcjp2YXIoLS1hZG1pbi1nZW5lcmFsLXRleHQtdXMtZGVhbGVyLWxpbmUtdGV4dC1jb2xvcik7IGJhY2tncm91bmQ6dmFyKC0tYWRtaW4tZ2VuZXJhbC10ZXh0LXVzLWRlYWxlci1saW5lLWJnLWNvbG9yKTsgY29sb3I6dmFyKC0tYWRtaW4tZ2VuZXJhbC10ZXh0LXVzLWRlYWxlci1saW5lLXRleHQtY29sb3IpOyBib3JkZXItY29sb3I6dmFyKC0tYWRtaW4tZ2VuZXJhbC10ZXh0LXVzLWRlYWxlci1saW5lLXRleHQtY29sb3IpOyB3aWR0aDoxMDAlOyB9IDppcygucHJvbW9Ub3BCdG4sbGFiZWwpLmZsb2F0aW5neyBwb3NpdGlvbjpmaXhlZDsgYm90dG9tOjEuNXJlbTsgcmlnaHQ6MS41cmVtOyB6LWluZGV4OjEwOyB9IC5wcm9tb1RvcEJ0bi5mbG9hdGluZy53aXRoVG9hc3RlciB7Ym90dG9tOjZyZW07fSAucHJvbW9Ub3BCdG4uZmxvYXRpbmcgOmlzKGEsYnV0dG9uKXsgLS1mczp2YXIoLS1mczUpOyBwYWRkaW5nOjFyZW07IGJvcmRlci1yYWRpdXM6NTAlOyBib3JkZXItd2lkdGg6MXB4OyBoZWlnaHQ6dW5zZXQ7IH0gLnByb21vVG9wQnRuLmZsb2F0aW5nIDppcyhhLGJ1dHRvbikgc3BhbiB7ZGlzcGxheTpub25lO30gLmljb24taGVhZGluZyBzcGFuLmZheyBmb250LXNpemU6aW5oZXJpdDsgd2lkdGg6MWVtOyBwYWRkaW5nOjAuMmVtOyBoZWlnaHQ6MWVtOyB0ZXh0LWFsaWduOmNlbnRlcjsgYm9yZGVyLXJhZGl1czo1MCU7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYmxhY2spOyBjb2xvcjp2YXIoLS13aGl0ZSk7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tYmxhY2spOyBib3gtc2l6aW5nOmNvbnRlbnQtYm94OyB9IC5pY29uLWhlYWRpbmcgLnNlY29uZGFyeVRleHR7IGNvbG9yOiM3NTc1NzU7IGZvbnQtc2l6ZTowLjc1ZW07IH0gLmdyb3VwVGFicyA+ICp7IGN1cnNvcjpwb2ludGVyOyBmb250LXNpemU6Y2FsYygxLjJyZW0gKyAoMjAgLSAxOCkgKiAoKDEwMHZ3IC0gMzIwcHgpIC8gKDExMDAgLSAzMDApKSk7IH0gLmdyb3VwVGFicyA+ICo6aG92ZXJ7IGJhY2tncm91bmQtY29sb3I6I2VmZWZlZjsgfSAuZ3JvdXBUYWJzIC50YWItbGFiZWwsIC5uZXdDYXJTbGlkZXIgLmNhcm91c2VsVGl0bGV7IGNvbG9yOnZhcigtLW5ldy12ZWhpY2xlLWNhcm91c2VsLXR4dC1jb2xvciwgdmFyKC0tZGVmYXVsdC1ibGFjaykpOyB9IC5ncm91cFRhYnMgLmFjdGl2ZVRhYiAudGFiLWxhYmVseyBjb2xvcjp2YXIoLS1uZXctdmVoaWNsZS1jYXJvdXNlbC10eHQtY29sb3IsIHZhcigtLWRlZmF1bHQtYmxhY2spKTsgYm9yZGVyLWJvdHRvbTozcHggc29saWQ7IGJvcmRlci1ib3R0b20tY29sb3I6IzAwMDsgYm9yZGVyLWJvdHRvbS1jb2xvcjp2YXIoLS10YWItY29sb3IpOyB9IC5jYXJTbGlkZXJ7IGRpc3BsYXk6ZmxleDsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgfSAuY2FyU2xpZGVyID4gKnsgd2lkdGg6bWluKDkwcmVtLDEwMCUpOyB9IC5jYXJTbGlkZXIuLWJnLWxpZ2h0LWdyYXkgPiAqeyBtYXgtd2lkdGg6bWluKDc1cmVtLDEwMCUpOyB9IC5uZXdDYXJDYXJkeyBoZWlnaHQ6MTAwJTsgbWluLWhlaWdodDoyN3JlbTsgYm9yZGVyOjFweCBzb2xpZCAjYmJiOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IHBvc2l0aW9uOnJlbGF0aXZlOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXdoaXRlKTsgfSAubmV3Q2FyQ2FyZCBpbWd7IHdpZHRoOjEwMCU7IG1hcmdpbi10b3A6LTFyZW07IHBvc2l0aW9uOnJlbGF0aXZlOyB9IC5jYXJQYXltZW50V3JhcHBlcnsgd2lkdGg6bWluKDEwMCUsMjVyZW0pOyBtaW4taGVpZ2h0OjVyZW07IH0gLmNhclBheW1lbnRXcmFwcGVyIC5wYXltZW50QmxvY2t7IGhlaWdodDoxMDAlOyB9IC5wYXltZW50c0Rpc2FibGVkIC5uZXdDYXJDYXJkeyBtaW4taGVpZ2h0OjIycmVtOyB9IC52ZWhpY2xlQ2Fyb3VzZWwgLm5ld0NhckNhcmR7IGJhY2tncm91bmQtY29sb3I6dmFyKC0td2hpdGUpOyB3aWR0aDoyMy43cmVtOyBib3JkZXI6MXB4IHNvbGlkICNiYmI7IG1hcmdpbjowIDAuNHJlbTsgaGVpZ2h0OjEwMCUgfSAubmV3Q2FyQ2FyZCAucHJvbW8tYmFkZ2V7IGhlaWdodDpmaXQtY29udGVudDsgbWluLXdpZHRoOjZyZW07IH0gLm5ld0NhckNhcmQ6aG92ZXJ7IGJveC1zaGFkb3c6MCAwIDEwcHggMnB4IHZhcigtLW1pZC1ncmF5KTsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1saWdodC1ncmF5KTsgfSAubmV3Q2FyQ2FyZDpob3ZlciAuaW5TdG9ja0xpbmsgeyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IH0gLm5ld0NhckNhcmQgLmNhcmQtYm9keXsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGhlaWdodDoxMnJlbTsgb3ZlcmZsb3c6aGlkZGVuOyB9IC5uZXdDYXJDYXJkID4gLmJveC1sY3sgbWFyZ2luLXRvcDowOyBwYWRkaW5nLXRvcDowOyBwYWRkaW5nLWJvdHRvbTowOyB9IC5uZXdDYXJDYXJkID4gLmJveC1sYzpmaXJzdC1jaGlsZHsgcGFkZGluZy10b3A6MC41cmVtOyBtYXgtaGVpZ2h0OjEwcmVtOyB9IC5uZXdDYXJDYXJkIC5kZXNrdG9wUGF5bWVudHsgcG9zaXRpb246cmVsYXRpdmU7IH0gLm5ld0NhckNhcmQgc3Bhbi5wYXltZW50Q2FsY0J0bi5kZXNrdG9weyBwb3NpdGlvbjphYnNvbHV0ZTsgcmlnaHQ6NyU7IGZvbnQtc2l6ZToxLjdlbTsgY3Vyc29yOnBvaW50ZXI7IH0gLnVzZWRDYXJTbGlkZXsgZGlzcGxheTpibG9jazsgYm9yZGVyOjFweCBzb2xpZCAjYmJiOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7IGhlaWdodDoxMDAlOyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0gLnVzZWRDYXJTbGlkZSAqeyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0gLnVzZWRDYXJTbGlkZSAuc2xpZGVDb250ZW50eyBoZWlnaHQ6MTAwJSB9IC5hbmltYXRlZC10cmlhbmdsZSB7IHBvc2l0aW9uOnJlbGF0aXZlOyBtYXJnaW4tcmlnaHQ6MTBweDsgfSAuYW5pbWF0ZWQtdHJpYW5nbGUgPiAuZmE6OmFmdGVyIHsgY29udGVudDoiXGYwNzEiOyB9IC5hbmltYXRlZC10cmlhbmdsZSBpeyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAuYW5pbWF0ZWQtdHJpYW5nbGUgPiBzdmcsIC5hbmltYXRlZC10cmlhbmdsZSA+IC5mYTo6YWZ0ZXIgeyBhbmltYXRpb246cmlwcGxlLTEgMXMgaW5maW5pdGUgZWFzZS1pbi1vdXQ7IGFuaW1hdGlvbi1kZWxheTowLjVzOyBhbmltYXRpb246cmlwcGxlLTIgMXMgaW5maW5pdGUgZWFzZS1pbi1vdXQ7IGFuaW1hdGlvbi1kZWxheTowLjc1czsgcG9zaXRpb246YWJzb2x1dGU7IH0gLmFuaW1hdGVkLXRyaWFuZ2xlID4gLmZhOjphZnRlcnsgdG9wOjA7IGxlZnQ6MDsgfSAuYW5pbWF0ZWQtdHJpYW5nbGUgPiBzdmd7IHRvcDoxcHg7IGxlZnQ6LTFyZW07IH0gQGtleWZyYW1lcyByaXBwbGUtMSB7IDAlIHsgdHJhbnNmb3JtOnNjYWxlKDEpOyBvcGFjaXR5OjE7IH0gMTAwJSB7IHRyYW5zZm9ybTpzY2FsZSgxLjcpOyBvcGFjaXR5OjA7IH0gfSBAa2V5ZnJhbWVzIHJpcHBsZS0yIHsgMCUgeyB0cmFuc2Zvcm06c2NhbGUoMSk7IG9wYWNpdHk6MTsgfSAxMDAlIHsgdHJhbnNmb3JtOnNjYWxlKDIpOyBvcGFjaXR5OjA7IH0gfSBzcGFuLmFzdGVyaXg6YWZ0ZXJ7IGNvbnRlbnQ6IioiOyBwb3NpdGlvbjpyZWxhdGl2ZTsgZm9udC1zaXplOjJyZW07IH0gZGl2LnByaWNlTm90ZS5hc3Rlcml4OmJlZm9yZXsgY29udGVudDoiKiI7IHBvc2l0aW9uOnJlbGF0aXZlOyBmb250LXNpemU6MXJlbTsgfSBmb290ZXIgeyAtd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMHB4IDEwcHggMTFweCAtMTFweCByZ2JhKDUwLCA1MCwgNTAsIDAuNzUpOyAtbW96LWJveC1zaGFkb3c6IGluc2V0IDBweCAxMHB4IDExcHggLTExcHggcmdiYSg1MCwgNTAsIDUwLCAwLjc1KTsgYm94LXNoYWRvdzogaW5zZXQgMHB4IDEwcHggMTFweCAtMTFweCByZ2JhKDUwLCA1MCwgNTAsIDAuNzUpOyAtLXR4dC1jb2xvcjp2YXIoLS1mb290ZXItaXRlbXMtbGluay1jb2xvcik7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tZm9vdGVyLWJnLWNvbG9yKTsgY29sb3I6dmFyKC0tZm9vdGVyLWl0ZW1zLWxpbmstY29sb3IpOyB9IGEudmlzaXRDb250YWN0QnV0dG9ueyAtLXR4dC1jb2xvcjp2YXIoLS1wcm9tby1idG4tdGV4dC1jb2xvcik7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tcHJvbW8tYnRuLWJnLWNvbG9yKTsgY29sb3I6dmFyKC0tcHJvbW8tYnRuLXRleHQtY29sb3IpOyB9IC5jRm9vdGVyQ2FyTGlua3MgbGkuY0l0ZW1FeHBlbmR7IGRpc3BsYXk6bm9uZTsgfSAuY0Zvb3RlckNhckxpbmtzIGgzLCAuZm9vdGVyX2FkZHJlc3MgLmFkciA+IHNwYW57IGNvbG9yOnZhcigtLWZvb3Rlci1saW5rLXRpdGxlLWNvbCk7IH0gLmNGb290ZXJDYXJMaW5rcyBzcGFuLmgzLWFsdCB7IGRpc3BsYXk6YmxvY2s7IGNvbG9yOnZhcigtLWZvb3Rlci1saW5rLXRpdGxlLWNvbCk7IH0gLmNGb290ZXJDYXJMaW5rcy5jTGlzdEV4cGVuZGVkIGxpLmNJdGVtRXhwZW5keyBkaXNwbGF5OmJsb2NrOyB9IC5jRXhwZW5kTGlzdCBidXR0b257IHBhZGRpbmc6dmFyKC0tcykgMDsgYmFja2dyb3VuZDpub25lOyB9IC5jb25kaXRpb25zRm9vdGVyIHsgY29sb3I6dmFyKC0tZm9vdGVyLWNvbmRpdGlvbnMtY29sb3IsICM5MTkxOTEpOyAtLXR4dC1jb2xvcjp2YXIoLS1mb290ZXItY29uZGl0aW9ucy1jb2xvcik7IH0gLnRyYWRlSW5CYXJNb2JpbGVCdXR0b24geyBwb3NpdGlvbjpmaXhlZDsgYm90dG9tOjEwcHg7IG1hcmdpbjo1cHggNXB4IDE1cHggMTVweDsgei1pbmRleDo0OyB3aWR0aDoxNDBweCAhaW1wb3J0YW50OyBib3JkZXItd2lkdGg6MXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiNlYTAwMjk7IHRleHQtYWxpZ246bGVmdDsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS10cmFkZWluYmFyLWJ0bi1iZyk7IGNvbG9yOiB2YXIoLS10cmFkZWluYmFyLWJ0bi1jb2xvcik7IGFsaWduLWl0ZW1zOmNlbnRlcjsgYm9yZGVyLXJhZGl1czo4cHg7IGJvcmRlci13aWR0aDoxcHggM3B4IDRweCAxcHg7IGJvcmRlci1jb2xvcjojMzMzMzMzOyBwYWRkaW5nLXRvcDoxMHB4OyB9IC50cmFkZUluQmFyTW9iaWxlQnV0dG9uIGl7IGRpc3BsYXk6aW5saW5lLWZsZXg7IGJvcmRlci1yYWRpdXM6MTAwJTsgd2lkdGg6MmVtOyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IGJvcmRlcjoycHggc29saWQgI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjojZmZmOyBoZWlnaHQ6MS41ZW07IGNvbG9yOiMwMDA7IGZsb2F0OmxlZnQ7IH0gLnRyYWRlSW5CYXJNb2JpbGVCdXR0b24ud2l0aFRvYXN0ZXIgeyBib3R0b206NXJlbTsgfSAjdHJhZGVJbkJhclBvcHVwX2xpbmUxeyBiYWNrZ3JvdW5kLWNvbG9yOiNmMWYxZjE7IGJvcmRlcjoxcHggc29saWQgZ3JleTsgcGFkZGluZzoyMHB4IDQwcHg7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IHRleHQtYWxpZ246Y2VudGVyOyB9IC5idG4udHJhZGVJbkJhclBvcHVwU3VibWl0eyBwYWRkaW5nOjAuNzVyZW0gMC4zNzVyZW07IGJvcmRlci13aWR0aDoxcHg7IGJvcmRlci1jb2xvcjojMDAwOyBmb250LXdlaWdodDpib2xkOyBib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyOjFweCBzb2xpZCAjMDAwOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgaW5wdXR7IG1hcmdpbjo1cHggMCAwOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVd7IGhlaWdodDo1ODBweDsgYmFja2dyb3VuZC1jb2xvcjojZmZmOyBjb2xvcjp2YXIoLS1kZWZhdWx0LWJsYWNrLXRleHQpOyBwYWRkaW5nOjE1cHg7IHBvc2l0aW9uOnJlbGF0aXZlOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgaW5wdXR7IHBhZGRpbmc6MTFweCAxMHB4OyBmb250LXNpemU6MC45MzhyZW0gOyB3aWR0aDoyNTBweDsgbWFyZ2luOjVweCAwIDA7IGJvcmRlcjoxcHggc29saWQgI2E5YTlhOSFpbXBvcnRhbnQ7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAudHJhZGluU2VsZWN0UG9wdXB7IGNvbG9yOiMzYzM4MzY7IGZvbnQtc2l6ZToxcmVtOyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsMSk7IGJhY2tncm91bmQtcG9zaXRpb246OTUlIDUwJTsgYXBwZWFyYW5jZTpub25lOyAtd2Via2l0LWFwcGVhcmFuY2U6bm9uZTsgLW1vei1hcHBlYXJhbmNlOm5vbmU7IG1hcmdpbjo1cHggMCAwOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgOjpwbGFjZWhvbGRlciB7IGNvbG9yOiNhOWE5YTk7IG9wYWNpdHk6MTsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XIDotbXMtaW5wdXQtcGxhY2Vob2xkZXIgeyBjb2xvcjojYTlhOWE5OyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgOjotbXMtaW5wdXQtcGxhY2Vob2xkZXIgeyBjb2xvcjojYTlhOWE5OyB9IC50cmFkaW5TZWxlY3QsIC50cmFkaW5TZWxlY3RQb3B1cCB7IGNvbG9yOiMzYzM4MzY7IGZvbnQtc2l6ZToxcmVtOyBtYXJnaW46NXB4IDAgMDsgYXBwZWFyYW5jZTpub25lOyAtd2Via2l0LWFwcGVhcmFuY2U6bm9uZTsgLW1vei1hcHBlYXJhbmNlOm5vbmU7IH0gLnRyYWRpblNlbGVjdEEgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAudHJhZGluU2VsZWN0QTphZnRlciB7IGNvbnRlbnQ6IiAiOyBoZWlnaHQ6MDsgd2lkdGg6MDsgYm9yZGVyLWxlZnQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItcmlnaHQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItdG9wOjVweCBzb2xpZCAjMDAwMDAwOyBwb3NpdGlvbjphYnNvbHV0ZTsgcmlnaHQ6MTRweDsgdG9wOjE3cHg7IHRyYW5zaXRpb246YWxsIDAuM3MgbGluZWFyOyBwb2ludGVyLWV2ZW50czpub25lOyB9IC5lbWFpbEJvZHksIC5lbWFpbFN1YmplY3R7IGRpc3BsYXk6bm9uZTsgfSAucmV2ZWFsLW1vZGFsOm5vdCgjcGF5bWVudENhbGN1bGF0b3JQb3B1cENvbnRhaW5lcikgKjpub3QoLmZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIDppcyhpbnB1dCwgc2VsZWN0KSl7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfSAucmV2ZWFsLW1vZGFsOm5vdCgjcGF5bWVudENhbGN1bGF0b3JQb3B1cENvbnRhaW5lcikgOmlzKGlucHV0W3R5cGU9InRleHQiXTpub3QoLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAuY2FsYy1mb3JtIGlucHV0KSxpbnB1dFt0eXBlPSJlbWFpbCJdLGlucHV0W3R5cGU9InRlbCJdLHNlbGVjdDpub3QoLnBheW1lbnRDYWxjdWxhdG9ySW50ZXJ2YWwsLnBheW1lbnRDYWxjdWxhdG9yS21BbGxvd2FuY2UsLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAuY2FsYy1mb3JtIHNlbGVjdCwgc2VsZWN0LnN0ZXAyNHNlbGVjdCkpeyBwYWRkaW5nOjAuNHJlbTsgYm9yZGVyLXdpZHRoOjFweDsgYm9yZGVyLXJhZGl1czowLjNyZW07IHdpZHRoOjEwMCU7IGJvcmRlci1jb2xvcjojYTlhOWE5OyB9IFtkYXRhLXBhZ2U9IkhPTUVQQUdFIl17IGJhY2tncm91bmQtY29sb3I6dmFyKC0taG9tZS1iZy1jb2xvciwgI0ZGRkZGRik7IH0gLnl0LWJnLWNvbnRhaW5lcnsgcG9zaXRpb246cmVsYXRpdmU7IG92ZXJmbG93OmhpZGRlbjsgfSAuYmFubmVyLWJnLWNvbnRhaW5lcnsgYmFja2dyb3VuZC1zaXplOmNvdmVyOyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmNlbnRlciBjZW50ZXI7IGJhY2tncm91bmQtYmxlbmQtbW9kZTpjb2xvcjsgfSAjeW91dHViZV9fY29udGFpbmVyeyBwb3NpdGlvbjpyZWxhdGl2ZTsgd2lkdGg6MTAwJTsgaGVpZ2h0OjA7IG92ZXJmbG93OmhpZGRlbjsgcGFkZGluZy1ib3R0b206bWluKGNhbGMoMTAwdmggLSB2YXIoLS1oZWFkZXItaGVpZ2h0LDEwcmVtKSksNjd2dyk7IGJhY2tncm91bmQtY29sb3I6Izg4ODsgfSAjaG9tZXBhZ2VfeW91dHViZV9wbGF5ZXJ7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6LTQ1JTsgbGVmdDotMTAlOyBoZWlnaHQ6MTkwJTsgd2lkdGg6MTIwJTsgcG9pbnRlci1ldmVudHM6bm9uZTsgfSAjeW91dHViZV9fY29udGFpbmVyOmlzKC5mdWxsSGVpZ2h0LC52aXNpYmxlSGVpZ2h0KXsgcGFkZGluZy1ib3R0b206Y2FsYygxMDB2aCAtIHZhcigtLWhlYWRlci1oZWlnaHQsMTByZW0pKTsgfSA6aXMoLmZ1bGxIZWlnaHQsLnZpc2libGVIZWlnaHQpICNob21lcGFnZV95b3V0dWJlX3BsYXllcnsgaGVpZ2h0OjEwMCU7IHRvcDowOyB9ICN5b3V0dWJlX19jb250YWluZXIuZnVsbFdpZHRoeyBwYWRkaW5nLWJvdHRvbTo1Ni4yNSU7IH0gI21vYmlsZVNsaWRlciAjeW91dHViZV9fY29udGFpbmVyeyBwYWRkaW5nLWJvdHRvbTptYXgoNjd2dywyNHJlbSk7IH0gI21vYmlsZVNsaWRlciAjeW91dHViZV9fY29udGFpbmVyICNiYW5uZXJfc2VhcmNoX2Jhcl9jb250YWluZXJ7IGhlaWdodDptYXgoNjd2dywyNHJlbSk7IG1pbi1oZWlnaHQ6MThyZW07IHotaW5kZXg6MTsgfSAuZnVsbFdpZHRoICNob21lcGFnZV95b3V0dWJlX3BsYXllcnsgaGVpZ2h0OjEyMCU7IHRvcDotMTAlOyB9IC55dC12aWRlb3sgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmNlbnRlcjsgYmFja2dyb3VuZC1zaXplOmNvdmVyOyB9IC55dC1wbGF5eyBiYWNrZ3JvdW5kLWltYWdlOnVybCgnZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1NzYgNTEyIj48IS0tIEZvbnQgQXdlc29tZSBGcmVlIDUuMTUuMSBieSBAZm9udGF3ZXNvbWUgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbSBMaWNlbnNlIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20vbGljZW5zZS9mcmVlIChJY29uczpDQyBCWSA0LjAsIEZvbnRzOlNJTCBPRkwgMS4xLCBDb2RlOk1JVCBMaWNlbnNlKSAtLT48cGF0aCBkPSJNNTQ5LjY1NSAxMjQuMDgzYy02LjI4MS0yMy42NS0yNC43ODctNDIuMjc2LTQ4LjI4NC00OC41OTdDNDU4Ljc4MSA2NCAyODggNjQgMjg4IDY0UzExNy4yMiA2NCA3NC42MjkgNzUuNDg2Yy0yMy40OTcgNi4zMjItNDIuMDAzIDI0Ljk0Ny00OC4yODQgNDguNTk3LTExLjQxMiA0Mi44NjctMTEuNDEyIDEzMi4zMDUtMTEuNDEyIDEzMi4zMDVzMCA4OS40MzggMTEuNDEyIDEzMi4zMDVjNi4yODEgMjMuNjUgMjQuNzg3IDQxLjUgNDguMjg0IDQ3LjgyMUMxMTcuMjIgNDQ4IDI4OCA0NDggMjg4IDQ0OHMxNzAuNzggMCAyMTMuMzcxLTExLjQ4NmMyMy40OTctNi4zMjEgNDIuMDAzLTI0LjE3MSA0OC4yODQtNDcuODIxIDExLjQxMi00Mi44NjcgMTEuNDEyLTEzMi4zMDUgMTEuNDEyLTEzMi4zMDVzMC04OS40MzgtMTEuNDEyLTEzMi4zMDV6bS0zMTcuNTEgMjEzLjUwOFYxNzUuMTg1bDE0Mi43MzkgODEuMjA1LTE0Mi43MzkgODEuMjAxeiIgZmlsbD0iJTIzYzMzYzJkIiAvJTNFJTNDL3N2ZyUzRScpOyB3aWR0aDo1cmVtOyBoZWlnaHQ6NXJlbTsgYmFja2dyb3VuZC1zaXplOmNvbnRhaW47IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDsgb3BhY2l0eTowLjc7IH0gLmVtYmVkLWNvbnRhaW5lci15b3V0dWJlIHsgcG9zaXRpb246cmVsYXRpdmU7IGhlaWdodDpjYWxjKDEwMHZ3IC8gKDE2IC8gOSkpOyBvdmVyZmxvdzpoaWRkZW47IG1heC13aWR0aDoxMDAlOyBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7IGJhY2tncm91bmQtcG9zaXRpb246Y2VudGVyOyBiYWNrZ3JvdW5kLXNpemU6Y292ZXI7IH0gLm1vYmlsZV9idXNpbmVzc0Rlc2MgeyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJ1c2luZXNzLWRlc2MtYmctY29sb3JfbW9iLCB2YXIoLS1mb290ZXItYmctY29sb3IpKTsgY29sb3I6dmFyKC0tYnVzaW5lc3MtZGVzYy10eHQtY29sb3JfbW9iLCB2YXIoLS1mb290ZXItbGluay10aXRsZS1jb2wpKTsgfSAuYnVzaW5lc3NEZXNjIHsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1idXNpbmVzcy1kZXNjLWJnLWNvbG9yX21vYiwgdmFyKC0tZm9vdGVyLWJnLWNvbG9yKSk7IGNvbG9yOnZhcigtLWJ1c2luZXNzLWRlc2MtdHh0LWNvbG9yX21vYiwgdmFyKC0tZm9vdGVyLWxpbmstdGl0bGUtY29sKSk7IH0gLmJ1c2luZXNzRGVzYyAqIHsgbGluZS1oZWlnaHQ6MS41cmVtOyB9IC53cmFwcGVyIHsgbWFyZ2luOjAgYXV0bzsgd2lkdGg6OTYwcHg7IHBvc2l0aW9uOnJlbGF0aXZlOyB9IC5sYW5ndWFnZUJhciB7IG1hcmdpbjoxcmVtIGF1dG8gNXB4OyBoZWlnaHQ6MjhweDsgcGFkZGluZzowIHZhcigtLXMpOyB9IC52LWNhcmQudG9wX2JnIHsgZGlzcGxheTpmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjsgYWxpZ24taXRlbXM6Y2VudGVyOyBtYXJnaW4tdG9wOjEwcHg7IG1pbi1oZWlnaHQ6OHJlbTsgcGFkZGluZzowIHZhcigtLXMpOyB9IC5oZWFkZXItc2VjdGlvbiB7IGRpc3BsYXk6ZmxleDsgdmVydGljYWwtYWxpZ246bWlkZGxlOyBhbGlnbi1jb250ZW50OnNwYWNlLWJldHdlZW47IGFsaWduLWl0ZW1zOmNlbnRlcjsgfSAjdHJhZGVJbkJhck1vYmlsZXsgYmFja2dyb3VuZC1jb2xvcjpibGFjazsgY29sb3I6IHdoaXRlOyBib3JkZXItcmFkaXVzOjVweDsgZGlzcGxheTpibG9jazsgbWFyZ2luOjNweCA1cHggNXB4IDVweDsgfSAjdHJhZGVJbkJhck1vYmlsZSAubWlkZGxleyBjb2xvcjojZmZmZmZmOyB9ICN0cmFkZUluQmFyTW9iaWxlICNkZWZhdWx0VG9wQmFubmVyVGl0bGV7IHBhZGRpbmc6NXB4IDIwcHggMHB4IDIwcHg7IH0gI3RyYWRlSW5CYXJNb2JpbGUgLmRlZmF1bHRUb3BCYW5uZXJCdG5XcmFwcGVyIGRpdnsgbWF4LXdpZHRoOjMzMHB4OyBtYXJnaW46MTBweCBhdXRvOyBwYWRkaW5nOjEycHggMDsgYm9yZGVyLXJhZGl1czoycHg7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tcHJvbW8tYnRuLWJnLWNvbG9yKTsgfSAjdHJhZGVJbkJhck1vYmlsZSAuZGVmYXVsdFRvcEJhbm5lckJ0bldyYXBwZXIgYXsgdGV4dC1hbGlnbjpjZW50ZXI7IG1hcmdpbjowIGF1dG87IGZvbnQtd2VpZ2h0OjcwMDsgfSAjdHJhZGVJbkJhck1vYmlsZSAjZGVmYXVsdFRvcEJhbm5lckxvZ28gc3BhbnsgZm9udC1zaXplOjAuOHJlbTsgZm9udC13ZWlnaHQ6MzAwOyBjb2xvcjp2YXIoLS1taWQtZ3JheSk7IH0gI3RyYWRlSW5CYXJ7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tdHJhZGVpbmJhci1iZyk7IGNvbG9yOiB2YXIoLS10cmFkZWluYmFyLWNvbG9yKTsgfSAjdHJhZGVJbkJhcldNb2JpbGUsICN0cmFkZUluQmFyVyB7IGRpc3BsYXk6ZmxleDsgbWluLWhlaWdodDo1MHB4OyBtYXJnaW46YXV0bzsgd2lkdGg6bWluKDEwMCUsMTM1MHB4KTsgcG9zaXRpb246cmVsYXRpdmU7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IH0gLmxhbmd1YWdlQmFyIC5zZXJ2aWNlLWhlYWRlci1mb3JtID4gYXsgcGFkZGluZzo0cHggMTJweDsgaGVpZ2h0OjE4cHg7IGxpbmUtaGVpZ2h0OjE4cHg7IGJvcmRlci1yYWRpdXM6MDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWhlYWRlci1zZXJ2aWNlLWFwcG9pbnRtZW50LXRleHQtY29sb3ItYmcsIHZhcigtLWxhbmd1YWdlLWJ0bi1hY3RpdmUtYmctY29sb3IpKTsgY29sb3I6dmFyKC0taGVhZGVyLXNlcnZpY2UtYXBwb2ludG1lbnQtdGV4dC1jb2xvciwgd2hpdGUgKTsgfSAubGFuZ3VhZ2VCYXIgLnNlcnZpY2UtaGVhZGVyLWZvcm0gYTpob3ZlciB7IGJvcmRlci1jb2xvcjp2YXIoLS1oZWFkZXItc2VydmljZS1hcHBvaW50bWVudC10ZXh0LWNvbG9yLWJnLCB2YXIoLS1sYW5ndWFnZS1idG4tYWN0aXZlLWJnLWNvbG9yKSk7IH0gI2FsZXJ0TXNnQ29udGFpbmVyeyBwb3NpdGlvbjpyZWxhdGl2ZTsgYmFja2dyb3VuZC1jb2xvcjojMDAwOyB6LWluZGV4Ojk5OTsgd2lkdGg6MTAwJTsgY29sb3I6d2hpdGU7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgY29sb3I6dmFyKC0tYWRtaW4tZ2VuZXJhbC1hbGVydC1iYXItdGV4dC1jb2xvcik7IGZvbnQtd2VpZ2h0OjYwMDsgfSAjYWxlcnRNc2dDb250YWluZXIuc3RpY2stdG9weyBwb3NpdGlvbjpzdGlja3k7IHRvcDowOyB6LWluZGV4Ojk5OTk5OyB9IC5mYS1maXgtY2VudGVyOmJlZm9yZSB7IHdpZHRoOjEuNWVtOyBoZWlnaHQ6MS41ZW07IGp1c3RpZnktY29udGVudDpjZW50ZXI7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZGlzcGxheTpmbGV4OyB9ICN5b3V0dWJlX19jb250YWluZXIuZnVsbHNjcmVlbnsgb2JqZWN0LWZpdDpjb3ZlcjsgcG9zaXRpb246cmVsYXRpdmU7IGxlZnQ6MDsgcmlnaHQ6MDsgdG9wOjA7IG9wYWNpdHk6MC44OyB9IC5tYWluRGl2QWRqdXN0SGVhZGVyIHsgcG9zaXRpb246YWJzb2x1dGU7IGJhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7IHRyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAuM3MsIGJvcmRlciAuM3M7IHRvcDowOyBsZWZ0OjA7IHJpZ2h0OjA7IGJvdHRvbTowOyB9IC5tYWluRGl2QWRqdXN0SGVhZGVyLndpdGgtYWxlcnQgeyB0b3A6NDBweDsgfSAucGF5bWVudEJsb2NrQ29udGFpbmVyIHsgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jZXJ0LWNvbmNyZXRlLWdyYXksIHZhcigtLWxpZ2h0LWdyYXkpKTsgY29sb3I6dmFyKC0tZGFyay1ncmF5KTsgfSAudmVoaWNsZUxvY2F0aW9ueyBib3JkZXItdG9wOjFweCBzb2xpZCAjZGRkOyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAubGluZVNlcGFyYXRvcnsgYm9yZGVyLXRvcDoxcHggc29saWQgI0E5QTlBOTsgbWFyZ2luLXRvcDo0MHB4OyBtYXJnaW4tYm90dG9tOjQwcHg7IH0gLnJldmVhbC1tb2RhbCBzcGFuLmZhLWhhbmQtcG9pbnRlci1jb2xvciB7IGNvbG9yOiNmZmZmZmY7IG1hcmdpbi1yaWdodDo1cHg7IG1hcmdpbi10b3A6NXB4OyB9IC5jb25mbGljdC1yZXNvbHZlLW9wdGlvbnMgeyBmb250LXNpemU6MC44MTNyZW0gOyB9Ci8qKiAvY3NzL2ZvbnRhd2Vzb21lLWFsbC5taW4uY3NzICoqLwouZmEsLmZhcywuZmFyLC5mYWwsLmZhZCwuZmFiey1tb3otb3N4LWZvbnQtc21vb3RoaW5nOmdyYXlzY2FsZTstd2Via2l0LWZvbnQtc21vb3RoaW5nOmFudGlhbGlhc2VkO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtdmFyaWFudDpub3JtYWw7dGV4dC1yZW5kZXJpbmc6YXV0bztsaW5lLWhlaWdodDoxfS5mYS1sZ3tmb250LXNpemU6MS4zMzMzM2VtO2xpbmUtaGVpZ2h0Oi43NWVtO3ZlcnRpY2FsLWFsaWduOi0uMDY2N2VtfS5mYS14c3tmb250LXNpemU6Ljc1ZW19LmZhLXNte2ZvbnQtc2l6ZTouODc1ZW19LmZhLTF4e2ZvbnQtc2l6ZToxZW19LmZhLTJ4e2ZvbnQtc2l6ZToyZW19LmZhLTN4e2ZvbnQtc2l6ZTozZW19LmZhLTR4e2ZvbnQtc2l6ZTo0ZW19LmZhLTV4e2ZvbnQtc2l6ZTo1ZW19LmZhLTZ4e2ZvbnQtc2l6ZTo2ZW19LmZhLTd4e2ZvbnQtc2l6ZTo3ZW19LmZhLTh4e2ZvbnQtc2l6ZTo4ZW19LmZhLTl4e2ZvbnQtc2l6ZTo5ZW19LmZhLTEweHtmb250LXNpemU6MTBlbX0uZmEtZnd7dGV4dC1hbGlnbjpjZW50ZXI7d2lkdGg6MS4yNWVtfS5mYS11bHtsaXN0LXN0eWxlLXR5cGU6bm9uZTttYXJnaW4tbGVmdDoyLjVlbTtwYWRkaW5nLWxlZnQ6MH0uZmEtdWwgPiBsaXtwb3NpdGlvbjpyZWxhdGl2ZX0uZmEtbGl7bGVmdDotMmVtO3Bvc2l0aW9uOmFic29sdXRlO3RleHQtYWxpZ246Y2VudGVyO3dpZHRoOjJlbTtsaW5lLWhlaWdodDppbmhlcml0fS5mYS1ib3JkZXJ7Ym9yZGVyOnNvbGlkIC4wOGVtICNlZWU7Ym9yZGVyLXJhZGl1czouMWVtO3BhZGRpbmc6LjJlbSAuMjVlbSAuMTVlbX0uZmEtcHVsbC1sZWZ0e2Zsb2F0OmxlZnR9LmZhLXB1bGwtcmlnaHR7ZmxvYXQ6cmlnaHR9LmZhLmZhLXB1bGwtbGVmdCwuZmFzLmZhLXB1bGwtbGVmdCwuZmFyLmZhLXB1bGwtbGVmdCwuZmFsLmZhLXB1bGwtbGVmdCwuZmFiLmZhLXB1bGwtbGVmdHttYXJnaW4tcmlnaHQ6LjNlbX0uZmEuZmEtcHVsbC1yaWdodCwuZmFzLmZhLXB1bGwtcmlnaHQsLmZhci5mYS1wdWxsLXJpZ2h0LC5mYWwuZmEtcHVsbC1yaWdodCwuZmFiLmZhLXB1bGwtcmlnaHR7bWFyZ2luLWxlZnQ6LjNlbX0uZmEtc3Bpbnstd2Via2l0LWFuaW1hdGlvbjpmYS1zcGluIDJzIGluZmluaXRlIGxpbmVhcjthbmltYXRpb246ZmEtc3BpbiAycyBpbmZpbml0ZSBsaW5lYXJ9LmZhLXB1bHNley13ZWJraXQtYW5pbWF0aW9uOmZhLXNwaW4gMXMgaW5maW5pdGUgc3RlcHMoOCk7YW5pbWF0aW9uOmZhLXNwaW4gMXMgaW5maW5pdGUgc3RlcHMoOCl9QC13ZWJraXQta2V5ZnJhbWVzIGZhLXNwaW57MCV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoMGRlZyl9MTAwJXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMzYwZGVnKTt0cmFuc2Zvcm06cm90YXRlKDM2MGRlZyl9fUBrZXlmcmFtZXMgZmEtc3BpbnswJXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKX0xMDAley13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoMzYwZGVnKX19LmZhLXJvdGF0ZS05MHstbXMtZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5CYXNpY0ltYWdlKHJvdGF0aW9uPTEpOy13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSg5MGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSg5MGRlZyl9LmZhLXJvdGF0ZS0xODB7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQmFzaWNJbWFnZShyb3RhdGlvbj0yKTstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKTt0cmFuc2Zvcm06cm90YXRlKDE4MGRlZyl9LmZhLXJvdGF0ZS0yNzB7LW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQmFzaWNJbWFnZShyb3RhdGlvbj0zKTstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMjcwZGVnKTt0cmFuc2Zvcm06cm90YXRlKDI3MGRlZyl9LmZhLWZsaXAtaG9yaXpvbnRhbHstbXMtZmlsdGVyOiJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQmFzaWNJbWFnZShyb3RhdGlvbj0wLG1pcnJvcj0xKSI7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoLTEsMSk7dHJhbnNmb3JtOnNjYWxlKC0xLDEpfS5mYS1mbGlwLXZlcnRpY2Fsey1tcy1maWx0ZXI6InByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5CYXNpY0ltYWdlKHJvdGF0aW9uPTIsbWlycm9yPTEpIjstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxLC0xKTt0cmFuc2Zvcm06c2NhbGUoMSwtMSl9LmZhLWZsaXAtYm90aCwuZmEtZmxpcC1ob3Jpem9udGFsLmZhLWZsaXAtdmVydGljYWx7LW1zLWZpbHRlcjoicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkJhc2ljSW1hZ2Uocm90YXRpb249MixtaXJyb3I9MSkiOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKC0xLC0xKTt0cmFuc2Zvcm06c2NhbGUoLTEsLTEpfTpyb290IC5mYS1yb3RhdGUtOTAsOnJvb3QgLmZhLXJvdGF0ZS0xODAsOnJvb3QgLmZhLXJvdGF0ZS0yNzAsOnJvb3QgLmZhLWZsaXAtaG9yaXpvbnRhbCw6cm9vdCAuZmEtZmxpcC12ZXJ0aWNhbCw6cm9vdCAuZmEtZmxpcC1ib3Roey13ZWJraXQtZmlsdGVyOm5vbmU7ZmlsdGVyOm5vbmV9LmZhLXN0YWNre2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDoyZW07bGluZS1oZWlnaHQ6MmVtO3Bvc2l0aW9uOnJlbGF0aXZlO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTt3aWR0aDoyLjVlbX0uZmEtc3RhY2stMXgsLmZhLXN0YWNrLTJ4e2xlZnQ6MDtwb3NpdGlvbjphYnNvbHV0ZTt0ZXh0LWFsaWduOmNlbnRlcjt3aWR0aDoxMDAlfS5mYS1zdGFjay0xeHtsaW5lLWhlaWdodDppbmhlcml0fS5mYS1zdGFjay0yeHtmb250LXNpemU6MmVtfS5mYS1pbnZlcnNle2NvbG9yOiNmZmZ9LmZhLTUwMHB4OmJlZm9yZXtjb250ZW50OiJcZjI2ZSJ9LmZhLWFjY2Vzc2libGUtaWNvbjpiZWZvcmV7Y29udGVudDoiXGYzNjgifS5mYS1hZGRyZXNzLWJvb2s6YmVmb3Jle2NvbnRlbnQ6IlxmMmI5In0uZmEtYWRkcmVzcy1jYXJkOmJlZm9yZXtjb250ZW50OiJcZjJiYiJ9LmZhLWFpci1mcmVzaGVuZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNWQwIn0uZmEtYWxhcm0tY2xvY2s6YmVmb3Jle2NvbnRlbnQ6IlxmMzRlIn0uZmEtYW1idWxhbmNlOmJlZm9yZXtjb250ZW50OiJcZjBmOSJ9LmZhLWFuZHJvaWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTdiIn0uZmEtYW5nbGUtZG91YmxlLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTAzIn0uZmEtYW5nbGUtZG91YmxlLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTAwIn0uZmEtYW5nbGUtZG91YmxlLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjEwMSJ9LmZhLWFuZ2xlLWRvdWJsZS11cDpiZWZvcmV7Y29udGVudDoiXGYxMDIifS5mYS1hbmdsZS1kb3duOmJlZm9yZXtjb250ZW50OiJcZjEwNyJ9LmZhLWFuZ2xlLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTA0In0uZmEtYW5nbGUtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTA1In0uZmEtYW5nbGUtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMTA2In0uZmEtYXBwbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTc5In0uZmEtYXJjaGl2ZTpiZWZvcmV7Y29udGVudDoiXGYxODcifS5mYS1hcnJvdy1hbHQtY2lyY2xlLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMzU4In0uZmEtYXJyb3ctYWx0LWNpcmNsZS1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjM1OSJ9LmZhLWFycm93LWFsdC1jaXJjbGUtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzVhIn0uZmEtYXJyb3ctYWx0LWNpcmNsZS11cDpiZWZvcmV7Y29udGVudDoiXGYzNWIifS5mYS1hcnJvdy1hbHQtZG93bjpiZWZvcmV7Y29udGVudDoiXGYzNTQifS5mYS1hcnJvdy1hbHQtZnJvbS1ib3R0b206YmVmb3Jle2NvbnRlbnQ6IlxmMzQ2In0uZmEtYXJyb3ctYWx0LWZyb20tbGVmdDpiZWZvcmV7Y29udGVudDoiXGYzNDcifS5mYS1hcnJvdy1hbHQtZnJvbS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYzNDgifS5mYS1hcnJvdy1hbHQtZnJvbS10b3A6YmVmb3Jle2NvbnRlbnQ6IlxmMzQ5In0uZmEtYXJyb3ctYWx0LWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzU1In0uZmEtYXJyb3ctYWx0LXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjM1NiJ9LmZhLWFycm93LWFsdC1zcXVhcmUtZG93bjpiZWZvcmV7Y29udGVudDoiXGYzNTAifS5mYS1hcnJvdy1hbHQtc3F1YXJlLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzUxIn0uZmEtYXJyb3ctYWx0LXNxdWFyZS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYzNTIifS5mYS1hcnJvdy1hbHQtc3F1YXJlLXVwOmJlZm9yZXtjb250ZW50OiJcZjM1MyJ9LmZhLWFycm93LWFsdC10by1ib3R0b206YmVmb3Jle2NvbnRlbnQ6IlxmMzRhIn0uZmEtYXJyb3ctYWx0LXRvLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzRiIn0uZmEtYXJyb3ctYWx0LXRvLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjM0YyJ9LmZhLWFycm93LWFsdC10by10b3A6YmVmb3Jle2NvbnRlbnQ6IlxmMzRkIn0uZmEtYXJyb3ctYWx0LXVwOmJlZm9yZXtjb250ZW50OiJcZjM1NyJ9LmZhLWFycm93LWNpcmNsZS1kb3duOmJlZm9yZXtjb250ZW50OiJcZjBhYiJ9LmZhLWFycm93LWNpcmNsZS1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjBhOCJ9LmZhLWFycm93LWNpcmNsZS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYwYTkifS5mYS1hcnJvdy1jaXJjbGUtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMGFhIn0uZmEtYXJyb3ctZG93bjpiZWZvcmV7Y29udGVudDoiXGYwNjMifS5mYS1hcnJvdy1mcm9tLWJvdHRvbTpiZWZvcmV7Y29udGVudDoiXGYzNDIifS5mYS1hcnJvdy1mcm9tLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzQzIn0uZmEtYXJyb3ctZnJvbS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYzNDQifS5mYS1hcnJvdy1mcm9tLXRvcDpiZWZvcmV7Y29udGVudDoiXGYzNDUifS5mYS1hcnJvdy1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjA2MCJ9LmZhLWFycm93LXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjA2MSJ9LmZhLWFycm93LXNxdWFyZS1kb3duOmJlZm9yZXtjb250ZW50OiJcZjMzOSJ9LmZhLWFycm93LXNxdWFyZS1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjMzYSJ9LmZhLWFycm93LXNxdWFyZS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYzM2IifS5mYS1hcnJvdy1zcXVhcmUtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMzNjIn0uZmEtYXJyb3ctdG8tYm90dG9tOmJlZm9yZXtjb250ZW50OiJcZjMzZCJ9LmZhLWFycm93LXRvLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzNlIn0uZmEtYXJyb3ctdG8tcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzQwIn0uZmEtYXJyb3ctdG8tdG9wOmJlZm9yZXtjb250ZW50OiJcZjM0MSJ9LmZhLWFycm93LXVwOmJlZm9yZXtjb250ZW50OiJcZjA2MiJ9LmZhLWFycm93czpiZWZvcmV7Y29udGVudDoiXGYwNDcifS5mYS1hcnJvd3MtYWx0OmJlZm9yZXtjb250ZW50OiJcZjBiMiJ9LmZhLWFycm93cy1hbHQtaDpiZWZvcmV7Y29udGVudDoiXGYzMzcifS5mYS1hcnJvd3MtYWx0LXY6YmVmb3Jle2NvbnRlbnQ6IlxmMzM4In0uZmEtYXJyb3dzLWg6YmVmb3Jle2NvbnRlbnQ6IlxmMDdlIn0uZmEtYXJyb3dzLXY6YmVmb3Jle2NvbnRlbnQ6IlxmMDdkIn0uZmEtYXNzaXN0aXZlLWxpc3RlbmluZy1zeXN0ZW1zOmJlZm9yZXtjb250ZW50OiJcZjJhMiJ9LmZhLWF0OmJlZm9yZXtjb250ZW50OiJcZjFmYSJ9LmZhLWF1ZGlvLWRlc2NyaXB0aW9uOmJlZm9yZXtjb250ZW50OiJcZjI5ZSJ9LmZhLWF3YXJkOmJlZm9yZXtjb250ZW50OiJcZjU1OSJ9LmZhLWJhZGdlOmJlZm9yZXtjb250ZW50OiJcZjMzNSJ9LmZhLWJhZGdlLWNoZWNrOmJlZm9yZXtjb250ZW50OiJcZjMzNiJ9LmZhLWJhbjpiZWZvcmV7Y29udGVudDoiXGYwNWUifS5mYS1iYXJjb2RlOmJlZm9yZXtjb250ZW50OiJcZjAyYSJ9LmZhLWJhcmNvZGUtYWx0OmJlZm9yZXtjb250ZW50OiJcZjQ2MyJ9LmZhLWJhcnM6YmVmb3Jle2NvbnRlbnQ6IlxmMGM5In0uZmEtYmF0dGVyeS1mdWxsOmJlZm9yZXtjb250ZW50OiJcZjI0MCJ9LmZhLWJhdHRlcnktaGFsZjpiZWZvcmV7Y29udGVudDoiXGYyNDIifS5mYS1iZWxsOmJlZm9yZXtjb250ZW50OiJcZjBmMyJ9LmZhLWJlbGwtZXhjbGFtYXRpb246YmVmb3Jle2NvbnRlbnQ6IlxmODQ4In0uZmEtYmVsbC1wbHVzOmJlZm9yZXtjb250ZW50OiJcZjg0OSJ9LmZhLWJlbGwtc2xhc2g6YmVmb3Jle2NvbnRlbnQ6IlxmMWY2In0uZmEtYmxvZzpiZWZvcmV7Y29udGVudDoiXGY3ODEifS5mYS1ibG9nZ2VyOmJlZm9yZXtjb250ZW50OiJcZjM3YyJ9LmZhLWJsb2dnZXItYjpiZWZvcmV7Y29udGVudDoiXGYzN2QifS5mYS1ibHVldG9vdGg6YmVmb3Jle2NvbnRlbnQ6IlxmMjkzIn0uZmEtYmx1ZXRvb3RoLWI6YmVmb3Jle2NvbnRlbnQ6IlxmMjk0In0uZmEtYm9sdDpiZWZvcmV7Y29udGVudDoiXGYwZTcifS5mYS1ib29rbWFyazpiZWZvcmV7Y29udGVudDoiXGYwMmUifS5mYS1ib3gtb3BlbjpiZWZvcmV7Y29udGVudDoiXGY0OWUifS5mYS1icm9hZGNhc3QtdG93ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNTE5In0uZmEtYnRjOmJlZm9yZXtjb250ZW50OiJcZjE1YSJ9LmZhLWJ1ZzpiZWZvcmV7Y29udGVudDoiXGYxODgifS5mYS1idWlsZGluZzpiZWZvcmV7Y29udGVudDoiXGYxYWQifS5mYS1idWxsaG9ybjpiZWZvcmV7Y29udGVudDoiXGYwYTEifS5mYS1idWxsc2V5ZTpiZWZvcmV7Y29udGVudDoiXGYxNDAifS5mYS1idXM6YmVmb3Jle2NvbnRlbnQ6IlxmMjA3In0uZmEtYnVzLWFsdDpiZWZvcmV7Y29udGVudDoiXGY1NWUifS5mYS1idXMtc2Nob29sOmJlZm9yZXtjb250ZW50OiJcZjVkZCJ9LmZhLWNhbGN1bGF0b3I6YmVmb3Jle2NvbnRlbnQ6IlxmMWVjIn0uZmEtY2FsY3VsYXRvci1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmNjRjIn0uZmEtY2FsZW5kYXI6YmVmb3Jle2NvbnRlbnQ6IlxmMTMzIn0uZmEtY2FsZW5kYXItYWx0OmJlZm9yZXtjb250ZW50OiJcZjA3MyJ9LmZhLWNhbGVuZGFyLWNoZWNrOmJlZm9yZXtjb250ZW50OiJcZjI3NCJ9LmZhLWNhbGVuZGFyLWVkaXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzMzIn0uZmEtY2FsZW5kYXItZXhjbGFtYXRpb246YmVmb3Jle2NvbnRlbnQ6IlxmMzM0In0uZmEtY2FsZW5kYXItbWludXM6YmVmb3Jle2NvbnRlbnQ6IlxmMjcyIn0uZmEtY2FsZW5kYXItdGltZXM6YmVmb3Jle2NvbnRlbnQ6IlxmMjczIn0uZmEtY2FtZXJhOmJlZm9yZXtjb250ZW50OiJcZjAzMCJ9LmZhLWNhbWVyYS1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzMyIn0uZmEtY2FtZXJhLWhvbWU6YmVmb3Jle2NvbnRlbnQ6IlxmOGZlIn0uZmEtY2FyOmJlZm9yZXtjb250ZW50OiJcZjFiOSJ9LmZhLWNhci1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmNWRlIn0uZmEtY2FyLWJhdHRlcnk6YmVmb3Jle2NvbnRlbnQ6IlxmNWRmIn0uZmEtY2FyLWJ1aWxkaW5nOmJlZm9yZXtjb250ZW50OiJcZjg1OSJ9LmZhLWNhci1idW1wOmJlZm9yZXtjb250ZW50OiJcZjVlMCJ9LmZhLWNhci1idXM6YmVmb3Jle2NvbnRlbnQ6IlxmODVhIn0uZmEtY2FyLWNyYXNoOmJlZm9yZXtjb250ZW50OiJcZjVlMSJ9LmZhLWNhci1nYXJhZ2U6YmVmb3Jle2NvbnRlbnQ6IlxmNWUyIn0uZmEtY2FyLW1lY2hhbmljOmJlZm9yZXtjb250ZW50OiJcZjVlMyJ9LmZhLWNhci1zaWRlOmJlZm9yZXtjb250ZW50OiJcZjVlNCJ9LmZhLWNhci10aWx0OmJlZm9yZXtjb250ZW50OiJcZjVlNSJ9LmZhLWNhci13YXNoOmJlZm9yZXtjb250ZW50OiJcZjVlNiJ9LmZhLWNhcmF2YW46YmVmb3Jle2NvbnRlbnQ6IlxmOGZmIn0uZmEtY2FyYXZhbi1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxlMDAwIn0uZmEtY2FyZXQtY2lyY2xlLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMzJkIn0uZmEtY2FyZXQtY2lyY2xlLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzJlIn0uZmEtY2FyZXQtY2lyY2xlLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjMzMCJ9LmZhLWNhcmV0LWNpcmNsZS11cDpiZWZvcmV7Y29udGVudDoiXGYzMzEifS5mYS1jYXJldC1kb3duOmJlZm9yZXtjb250ZW50OiJcZjBkNyJ9LmZhLWNhcmV0LWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGQ5In0uZmEtY2FyZXQtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGRhIn0uZmEtY2FyZXQtc3F1YXJlLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTUwIn0uZmEtY2FyZXQtc3F1YXJlLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTkxIn0uZmEtY2FyZXQtc3F1YXJlLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjE1MiJ9LmZhLWNhcmV0LXNxdWFyZS11cDpiZWZvcmV7Y29udGVudDoiXGYxNTEifS5mYS1jYXJldC11cDpiZWZvcmV7Y29udGVudDoiXGYwZDgifS5mYS1jYXJzOmJlZm9yZXtjb250ZW50OiJcZjg1YiJ9LmZhLWNhcnQtYXJyb3ctZG93bjpiZWZvcmV7Y29udGVudDoiXGYyMTgifS5mYS1jYXJ0LXBsdXM6YmVmb3Jle2NvbnRlbnQ6IlxmMjE3In0uZmEtY2MtcGF5cGFsOmJlZm9yZXtjb250ZW50OiJcZjFmNCJ9LmZhLWNlcnRpZmljYXRlOmJlZm9yZXtjb250ZW50OiJcZjBhMyJ9LmZhLWNoYWlyOmJlZm9yZXtjb250ZW50OiJcZjZjMCJ9LmZhLWNoYWxrYm9hcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTFiIn0uZmEtY2hhcmdpbmctc3RhdGlvbjpiZWZvcmV7Y29udGVudDoiXGY1ZTcifS5mYS1jaGFydC1saW5lOmJlZm9yZXtjb250ZW50OiJcZjIwMSJ9LmZhLWNoYXJ0LWxpbmUtZG93bjpiZWZvcmV7Y29udGVudDoiXGY2NGQifS5mYS1jaGVjazpiZWZvcmV7Y29udGVudDoiXGYwMGMifS5mYS1jaGVjay1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMDU4In0uZmEtY2hlY2stZG91YmxlOmJlZm9yZXtjb250ZW50OiJcZjU2MCJ9LmZhLWNoZWNrLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxNGEifS5mYS1jaGV2cm9uLWNpcmNsZS1kb3duOmJlZm9yZXtjb250ZW50OiJcZjEzYSJ9LmZhLWNoZXZyb24tY2lyY2xlLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTM3In0uZmEtY2hldnJvbi1jaXJjbGUtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTM4In0uZmEtY2hldnJvbi1jaXJjbGUtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMTM5In0uZmEtY2hldnJvbi1kb3VibGUtZG93bjpiZWZvcmV7Y29udGVudDoiXGYzMjIifS5mYS1jaGV2cm9uLWRvdWJsZS1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjMyMyJ9LmZhLWNoZXZyb24tZG91YmxlLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjMyNCJ9LmZhLWNoZXZyb24tZG91YmxlLXVwOmJlZm9yZXtjb250ZW50OiJcZjMyNSJ9LmZhLWNoZXZyb24tZG93bjpiZWZvcmV7Y29udGVudDoiXGYwNzgifS5mYS1jaGV2cm9uLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDUzIn0uZmEtY2hldnJvbi1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYwNTQifS5mYS1jaGV2cm9uLXNxdWFyZS1kb3duOmJlZm9yZXtjb250ZW50OiJcZjMyOSJ9LmZhLWNoZXZyb24tc3F1YXJlLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzJhIn0uZmEtY2hldnJvbi1zcXVhcmUtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzJiIn0uZmEtY2hldnJvbi1zcXVhcmUtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMzJjIn0uZmEtY2hldnJvbi11cDpiZWZvcmV7Y29udGVudDoiXGYwNzcifS5mYS1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTExIn0uZmEtY2lyY2xlLW5vdGNoOmJlZm9yZXtjb250ZW50OiJcZjFjZSJ9LmZhLWNpdHk6YmVmb3Jle2NvbnRlbnQ6IlxmNjRmIn0uZmEtY2xpcGJvYXJkOmJlZm9yZXtjb250ZW50OiJcZjMyOCJ9LmZhLWNsb2NrOmJlZm9yZXtjb250ZW50OiJcZjAxNyJ9LmZhLWNsb25lOmJlZm9yZXtjb250ZW50OiJcZjI0ZCJ9LmZhLWNsb3NlZC1jYXB0aW9uaW5nOmJlZm9yZXtjb250ZW50OiJcZjIwYSJ9LmZhLWNsb3VkOmJlZm9yZXtjb250ZW50OiJcZjBjMiJ9LmZhLWNsb3VkLWRvd25sb2FkOmJlZm9yZXtjb250ZW50OiJcZjBlZCJ9LmZhLWNsb3VkLWRvd25sb2FkLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzODEifS5mYS1jbG91ZC11cGxvYWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGVlIn0uZmEtY2xvdWQtdXBsb2FkLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzODIifS5mYS1jbHViOmJlZm9yZXtjb250ZW50OiJcZjMyNyJ9LmZhLWNvZmZlZTpiZWZvcmV7Y29udGVudDoiXGYwZjQifS5mYS1jb2c6YmVmb3Jle2NvbnRlbnQ6IlxmMDEzIn0uZmEtY29nczpiZWZvcmV7Y29udGVudDoiXGYwODUifS5mYS1jb21tZW50OmJlZm9yZXtjb250ZW50OiJcZjA3NSJ9LmZhLWNvbW1lbnQtYWx0OmJlZm9yZXtjb250ZW50OiJcZjI3YSJ9LmZhLWNvbW1lbnQtYWx0LWNoZWNrOmJlZm9yZXtjb250ZW50OiJcZjRhMiJ9LmZhLWNvbW1lbnQtYWx0LWRvbGxhcjpiZWZvcmV7Y29udGVudDoiXGY2NTAifS5mYS1jb21tZW50LWRvbGxhcjpiZWZvcmV7Y29udGVudDoiXGY2NTEifS5mYS1jb21tZW50czpiZWZvcmV7Y29udGVudDoiXGYwODYifS5mYS1jb21tZW50cy1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmNGI2In0uZmEtY29tbWVudHMtYWx0LWRvbGxhcjpiZWZvcmV7Y29udGVudDoiXGY2NTIifS5mYS1jb21tZW50cy1kb2xsYXI6YmVmb3Jle2NvbnRlbnQ6IlxmNjUzIn0uZmEtY29tcHJlc3MtYWx0OmJlZm9yZXtjb250ZW50OiJcZjQyMiJ9LmZhLWNvbXByZXNzLWFycm93cy1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmNzhjIn0uZmEtY29weTpiZWZvcmV7Y29udGVudDoiXGYwYzUifS5mYS1jb3B5cmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWY5In0uZmEtY291Y2g6YmVmb3Jle2NvbnRlbnQ6IlxmNGI4In0uZmEtY3JlYXRpdmUtY29tbW9ucy1zaGFyZTpiZWZvcmV7Y29udGVudDoiXGY0ZjIifS5mYS1jcmVkaXQtY2FyZDpiZWZvcmV7Y29udGVudDoiXGYwOWQifS5mYS1jdXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGM0In0uZmEtZGF0YWJhc2U6YmVmb3Jle2NvbnRlbnQ6IlxmMWMwIn0uZmEtZGVza3RvcDpiZWZvcmV7Y29udGVudDoiXGYxMDgifS5mYS1kaWFtb25kOmJlZm9yZXtjb250ZW50OiJcZjIxOSJ9LmZhLWRpZ2l0YWwtdGFjaG9ncmFwaDpiZWZvcmV7Y29udGVudDoiXGY1NjYifS5mYS1kb2xsYXItc2lnbjpiZWZvcmV7Y29udGVudDoiXGYxNTUifS5mYS1kb3QtY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjE5MiJ9LmZhLWRvd25sb2FkOmJlZm9yZXtjb250ZW50OiJcZjAxOSJ9LmZhLWVkaXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDQ0In0uZmEtZWxsaXBzaXMtaDpiZWZvcmV7Y29udGVudDoiXGYxNDEifS5mYS1lbGxpcHNpcy1oLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzOWIifS5mYS1lbGxpcHNpcy12OmJlZm9yZXtjb250ZW50OiJcZjE0MiJ9LmZhLWVsbGlwc2lzLXYtYWx0OmJlZm9yZXtjb250ZW50OiJcZjM5YyJ9LmZhLWVuZ2luZS13YXJuaW5nOmJlZm9yZXtjb250ZW50OiJcZjVmMiJ9LmZhLWVudmVsb3BlOmJlZm9yZXtjb250ZW50OiJcZjBlMCJ9LmZhLWVudmVsb3BlLW9wZW46YmVmb3Jle2NvbnRlbnQ6IlxmMmI2In0uZmEtZW52ZWxvcGUtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjE5OSJ9LmZhLWVyYXNlcjpiZWZvcmV7Y29udGVudDoiXGYxMmQifS5mYS1leGNoYW5nZTpiZWZvcmV7Y29udGVudDoiXGYwZWMifS5mYS1leGNoYW5nZS1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzYyIn0uZmEtZXhjbGFtYXRpb246YmVmb3Jle2NvbnRlbnQ6IlxmMTJhIn0uZmEtZXhjbGFtYXRpb24tY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjA2YSJ9LmZhLWV4Y2xhbWF0aW9uLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYzMjEifS5mYS1leGNsYW1hdGlvbi10cmlhbmdsZTpiZWZvcmV7Y29udGVudDoiXGYwNzEifS5mYS1leHBhbmQtYWx0OmJlZm9yZXtjb250ZW50OiJcZjQyNCJ9LmZhLWV4cGFuZC1hcnJvd3M6YmVmb3Jle2NvbnRlbnQ6IlxmMzFkIn0uZmEtZXhwYW5kLWFycm93cy1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzFlIn0uZmEtZXh0ZXJuYWwtbGluazpiZWZvcmV7Y29udGVudDoiXGYwOGUifS5mYS1leHRlcm5hbC1saW5rLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzNWQifS5mYS1leHRlcm5hbC1saW5rLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxNGMifS5mYS1leHRlcm5hbC1saW5rLXNxdWFyZS1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzYwIn0uZmEtZXllOmJlZm9yZXtjb250ZW50OiJcZjA2ZSJ9LmZhLWV5ZS1zbGFzaDpiZWZvcmV7Y29udGVudDoiXGYwNzAifS5mYS1mYWNlYm9vazpiZWZvcmV7Y29udGVudDoiXGYwOWEifS5mYS1mYWNlYm9vay1mOmJlZm9yZXtjb250ZW50OiJcZjM5ZSJ9LmZhLWZhY2Vib29rLW1lc3NlbmdlcjpiZWZvcmV7Y29udGVudDoiXGYzOWYifS5mYS1mYWNlYm9vay1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMDgyIn0uZmEtZmF4OmJlZm9yZXtjb250ZW50OiJcZjFhYyJ9LmZhLWZpbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTViIn0uZmEtZmlsZS1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTVjIn0uZmEtZmlsZS1hcmNoaXZlOmJlZm9yZXtjb250ZW50OiJcZjFjNiJ9LmZhLWZpbGUtYXVkaW86YmVmb3Jle2NvbnRlbnQ6IlxmMWM3In0uZmEtZmlsZS1jaGFydC1saW5lOmJlZm9yZXtjb250ZW50OiJcZjY1OSJ9LmZhLWZpbGUtY2hlY2s6YmVmb3Jle2NvbnRlbnQ6IlxmMzE2In0uZmEtZmlsZS1jb2RlOmJlZm9yZXtjb250ZW50OiJcZjFjOSJ9LmZhLWZpbGUtZG93bmxvYWQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTZkIn0uZmEtZmlsZS1lZGl0OmJlZm9yZXtjb250ZW50OiJcZjMxYyJ9LmZhLWZpbGUtZXhjZWw6YmVmb3Jle2NvbnRlbnQ6IlxmMWMzIn0uZmEtZmlsZS1leGNsYW1hdGlvbjpiZWZvcmV7Y29udGVudDoiXGYzMWEifS5mYS1maWxlLWV4cG9ydDpiZWZvcmV7Y29udGVudDoiXGY1NmUifS5mYS1maWxlLWltYWdlOmJlZm9yZXtjb250ZW50OiJcZjFjNSJ9LmZhLWZpbGUtaW1wb3J0OmJlZm9yZXtjb250ZW50OiJcZjU2ZiJ9LmZhLWZpbGUtaW52b2ljZS1kb2xsYXI6YmVmb3Jle2NvbnRlbnQ6IlxmNTcxIn0uZmEtZmlsZS1taW51czpiZWZvcmV7Y29udGVudDoiXGYzMTgifS5mYS1maWxlLW11c2ljOmJlZm9yZXtjb250ZW50OiJcZjhiNiJ9LmZhLWZpbGUtcGRmOmJlZm9yZXtjb250ZW50OiJcZjFjMSJ9LmZhLWZpbGUtcGx1czpiZWZvcmV7Y29udGVudDoiXGYzMTkifS5mYS1maWxlLXBvd2VycG9pbnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWM0In0uZmEtZmlsZS1zZWFyY2g6YmVmb3Jle2NvbnRlbnQ6IlxmODY1In0uZmEtZmlsZS10aW1lczpiZWZvcmV7Y29udGVudDoiXGYzMTcifS5mYS1maWxlLXVwbG9hZDpiZWZvcmV7Y29udGVudDoiXGY1NzQifS5mYS1maWxlLXZpZGVvOmJlZm9yZXtjb250ZW50OiJcZjFjOCJ9LmZhLWZpbGUtd29yZDpiZWZvcmV7Y29udGVudDoiXGYxYzIifS5mYS1maWx0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMGIwIn0uZmEtZmluZ2VycHJpbnQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTc3In0uZmEtZmlyZTpiZWZvcmV7Y29udGVudDoiXGYwNmQifS5mYS1mbGFnOmJlZm9yZXtjb250ZW50OiJcZjAyNCJ9LmZhLWZsYWctYWx0OmJlZm9yZXtjb250ZW50OiJcZjc0YyJ9LmZhLWZsYWctY2hlY2tlcmVkOmJlZm9yZXtjb250ZW50OiJcZjExZSJ9LmZhLWZsdXgtY2FwYWNpdG9yOmJlZm9yZXtjb250ZW50OiJcZjhiYSJ9LmZhLWZvbGRlcjpiZWZvcmV7Y29udGVudDoiXGYwN2IifS5mYS1mb2xkZXItZG93bmxvYWQ6YmVmb3Jle2NvbnRlbnQ6IlxlMDUzIn0uZmEtZm9sZGVyLW9wZW46YmVmb3Jle2NvbnRlbnQ6IlxmMDdjIn0uZmEtZm9sZGVyLXVwbG9hZDpiZWZvcmV7Y29udGVudDoiXGUwNTQifS5mYS1mcm93bjpiZWZvcmV7Y29udGVudDoiXGYxMTkifS5mYS1mcm93bi1vcGVuOmJlZm9yZXtjb250ZW50OiJcZjU3YSJ9LmZhLWdhbGFjdGljLXNlbmF0ZTpiZWZvcmV7Y29udGVudDoiXGY1MGQifS5mYS1nYXJhZ2U6YmVmb3Jle2NvbnRlbnQ6IlxlMDA5In0uZmEtZ2FyYWdlLWNhcjpiZWZvcmV7Y29udGVudDoiXGUwMGEifS5mYS1nYXJhZ2Utb3BlbjpiZWZvcmV7Y29udGVudDoiXGUwMGIifS5mYS1nYXMtcHVtcDpiZWZvcmV7Y29udGVudDoiXGY1MmYifS5mYS1nYXMtcHVtcC1zbGFzaDpiZWZvcmV7Y29udGVudDoiXGY1ZjQifS5mYS1nbGFzc2VzOmJlZm9yZXtjb250ZW50OiJcZjUzMCJ9LmZhLWdsb2JlOmJlZm9yZXtjb250ZW50OiJcZjBhYyJ9LmZhLWdvb2dsZTpiZWZvcmV7Y29udGVudDoiXGYxYTAifS5mYS1ncmlwLWhvcml6b250YWw6YmVmb3Jle2NvbnRlbnQ6IlxmNThkIn0uZmEtZ3JpcC1saW5lczpiZWZvcmV7Y29udGVudDoiXGY3YTQifS5mYS1ncmlwLWxpbmVzLXZlcnRpY2FsOmJlZm9yZXtjb250ZW50OiJcZjdhNSJ9LmZhLWdyaXAtdmVydGljYWw6YmVmb3Jle2NvbnRlbnQ6IlxmNThlIn0uZmEtaGFuZC1ob2xkaW5nLXVzZDpiZWZvcmV7Y29udGVudDoiXGY0YzAifS5mYS1oYW5kLXBvaW50LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMGE3In0uZmEtaGFuZC1wb2ludC1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjBhNSJ9LmZhLWhhbmQtcG9pbnQtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGE0In0uZmEtaGFuZC1wb2ludC11cDpiZWZvcmV7Y29udGVudDoiXGYwYTYifS5mYS1oYW5kLXBvaW50ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMjVhIn0uZmEtaGFuZHMtdXNkOmJlZm9yZXtjb250ZW50OiJcZjRjNSJ9LmZhLWhhc2h0YWc6YmVmb3Jle2NvbnRlbnQ6IlxmMjkyIn0uZmEtaGVhcnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDA0In0uZmEtaGVhcnQtYnJva2VuOmJlZm9yZXtjb250ZW50OiJcZjdhOSJ9LmZhLWhleGFnb246YmVmb3Jle2NvbnRlbnQ6IlxmMzEyIn0uZmEtaGlzdG9yeTpiZWZvcmV7Y29udGVudDoiXGYxZGEifS5mYS1ob21lOmJlZm9yZXtjb250ZW50OiJcZjAxNSJ9LmZhLWhvbWUtYWx0OmJlZm9yZXtjb250ZW50OiJcZjgwYSJ9LmZhLWhvbWUtbGc6YmVmb3Jle2NvbnRlbnQ6IlxmODBiIn0uZmEtaG9tZS1sZy1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmODBjIn0uZmEtaG91c2U6YmVmb3Jle2NvbnRlbnQ6IlxlMDBkIn0uZmEtaS1jdXJzb3I6YmVmb3Jle2NvbnRlbnQ6IlxmMjQ2In0uZmEtaW5ib3g6YmVmb3Jle2NvbnRlbnQ6IlxmMDFjIn0uZmEtaW5ib3gtaW46YmVmb3Jle2NvbnRlbnQ6IlxmMzEwIn0uZmEtaW5ib3gtb3V0OmJlZm9yZXtjb250ZW50OiJcZjMxMSJ9LmZhLWluZm86YmVmb3Jle2NvbnRlbnQ6IlxmMTI5In0uZmEtaW5mby1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMDVhIn0uZmEtaW5mby1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMzBmIn0uZmEtaW5zdGFncmFtOmJlZm9yZXtjb250ZW50OiJcZjE2ZCJ9LmZhLWluc3RhZ3JhbS1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxlMDU1In0uZmEta2V5OmJlZm9yZXtjb250ZW50OiJcZjA4NCJ9LmZhLWxhbmd1YWdlOmJlZm9yZXtjb250ZW50OiJcZjFhYiJ9LmZhLWxhc3NvOmJlZm9yZXtjb250ZW50OiJcZjhjOCJ9LmZhLWxlYWY6YmVmb3Jle2NvbnRlbnQ6IlxmMDZjIn0uZmEtbGV2ZWwtZG93bjpiZWZvcmV7Y29udGVudDoiXGYxNDkifS5mYS1sZXZlbC1kb3duLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzYmUifS5mYS1sZXZlbC11cDpiZWZvcmV7Y29udGVudDoiXGYxNDgifS5mYS1sZXZlbC11cC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2JmIn0uZmEtbGlua2VkaW46YmVmb3Jle2NvbnRlbnQ6IlxmMDhjIn0uZmEtbGlua2VkaW4taW46YmVmb3Jle2NvbnRlbnQ6IlxmMGUxIn0uZmEtbG9jYXRpb24tYXJyb3c6YmVmb3Jle2NvbnRlbnQ6IlxmMTI0In0uZmEtbG9uZy1hcnJvdy1hbHQtZG93bjpiZWZvcmV7Y29udGVudDoiXGYzMDkifS5mYS1sb25nLWFycm93LWFsdC1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjMwYSJ9LmZhLWxvbmctYXJyb3ctYWx0LXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjMwYiJ9LmZhLWxvbmctYXJyb3ctYWx0LXVwOmJlZm9yZXtjb250ZW50OiJcZjMwYyJ9LmZhLWxvbmctYXJyb3ctZG93bjpiZWZvcmV7Y29udGVudDoiXGYxNzUifS5mYS1sb25nLWFycm93LWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTc3In0uZmEtbG9uZy1hcnJvdy1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYxNzgifS5mYS1sb25nLWFycm93LXVwOmJlZm9yZXtjb250ZW50OiJcZjE3NiJ9LmZhLW1hZ2ljOmJlZm9yZXtjb250ZW50OiJcZjBkMCJ9LmZhLW1hcDpiZWZvcmV7Y29udGVudDoiXGYyNzkifS5mYS1tYXAtbWFya2VyOmJlZm9yZXtjb250ZW50OiJcZjA0MSJ9LmZhLW1hcC1tYXJrZXItYWx0OmJlZm9yZXtjb250ZW50OiJcZjNjNSJ9LmZhLW1hcC1waW46YmVmb3Jle2NvbnRlbnQ6IlxmMjc2In0uZmEtbWFwLXNpZ25zOmJlZm9yZXtjb250ZW50OiJcZjI3NyJ9LmZhLW1hcmtlcjpiZWZvcmV7Y29udGVudDoiXGY1YTEifS5mYS1tZWRhbDpiZWZvcmV7Y29udGVudDoiXGY1YTIifS5mYS1tZWg6YmVmb3Jle2NvbnRlbnQ6IlxmMTFhIn0uZmEtbWljcm9jaGlwOmJlZm9yZXtjb250ZW50OiJcZjJkYiJ9LmZhLW1pY3JvcGhvbmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTMwIn0uZmEtbWljcm9waG9uZS1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2M5In0uZmEtbWljcm9waG9uZS1hbHQtc2xhc2g6YmVmb3Jle2NvbnRlbnQ6IlxmNTM5In0uZmEtbWljcm9waG9uZS1zbGFzaDpiZWZvcmV7Y29udGVudDoiXGYxMzEifS5mYS1taW5kLXNoYXJlOmJlZm9yZXtjb250ZW50OiJcZjY3NyJ9LmZhLW1pbnVzOmJlZm9yZXtjb250ZW50OiJcZjA2OCJ9LmZhLW1pbnVzLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYwNTYifS5mYS1taW51cy1oZXhhZ29uOmJlZm9yZXtjb250ZW50OiJcZjMwNyJ9LmZhLW1pbnVzLW9jdGFnb246YmVmb3Jle2NvbnRlbnQ6IlxmMzA4In0uZmEtbWludXMtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjE0NiJ9LmZhLW1vYmlsZTpiZWZvcmV7Y29udGVudDoiXGYxMGIifS5mYS1tb2JpbGUtYWx0OmJlZm9yZXtjb250ZW50OiJcZjNjZCJ9LmZhLW1vYmlsZS1hbmRyb2lkOmJlZm9yZXtjb250ZW50OiJcZjNjZSJ9LmZhLW1vYmlsZS1hbmRyb2lkLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzY2YifS5mYS1tb25leS1jaGVjazpiZWZvcmV7Y29udGVudDoiXGY1M2MifS5mYS1tb25leS1jaGVjay1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmNTNkIn0uZmEtbW9uZXktY2hlY2stZWRpdDpiZWZvcmV7Y29udGVudDoiXGY4NzIifS5mYS1tb25leS1jaGVjay1lZGl0LWFsdDpiZWZvcmV7Y29udGVudDoiXGY4NzMifS5mYS1tb3RvcmN5Y2xlOmJlZm9yZXtjb250ZW50OiJcZjIxYyJ9LmZhLW1vdW50YWluOmJlZm9yZXtjb250ZW50OiJcZjZmYyJ9LmZhLW1vdXNlLXBvaW50ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMjQ1In0uZmEtbXAzLXBsYXllcjpiZWZvcmV7Y29udGVudDoiXGY4Y2UifS5mYS1tdXNpYzpiZWZvcmV7Y29udGVudDoiXGYwMDEifS5mYS1vY3RhZ29uOmJlZm9yZXtjb250ZW50OiJcZjMwNiJ9LmZhLW9pbC1jYW46YmVmb3Jle2NvbnRlbnQ6IlxmNjEzIn0uZmEtb2lsLXRlbXA6YmVmb3Jle2NvbnRlbnQ6IlxmNjE0In0uZmEtcGFpbnQtYnJ1c2g6YmVmb3Jle2NvbnRlbnQ6IlxmMWZjIn0uZmEtcGFsZXR0ZTpiZWZvcmV7Y29udGVudDoiXGY1M2YifS5mYS1wYXBlci1wbGFuZTpiZWZvcmV7Y29udGVudDoiXGYxZDgifS5mYS1wYXN0ZTpiZWZvcmV7Y29udGVudDoiXGYwZWEifS5mYS1wYXlwYWw6YmVmb3Jle2NvbnRlbnQ6IlxmMWVkIn0uZmEtcGVuOmJlZm9yZXtjb250ZW50OiJcZjMwNCJ9LmZhLXBlbi1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzA1In0uZmEtcGVuLWZhbmN5OmJlZm9yZXtjb250ZW50OiJcZjVhYyJ9LmZhLXBlbmNpbDpiZWZvcmV7Y29udGVudDoiXGYwNDAifS5mYS1wZW5jaWwtYWx0OmJlZm9yZXtjb250ZW50OiJcZjMwMyJ9LmZhLXBlbmNpbC1ydWxlcjpiZWZvcmV7Y29udGVudDoiXGY1YWUifS5mYS1wZW9wbGUtYXJyb3dzOmJlZm9yZXtjb250ZW50OiJcZTA2OCJ9LmZhLXBob25lOmJlZm9yZXtjb250ZW50OiJcZjA5NSJ9LmZhLXBob25lLWFsdDpiZWZvcmV7Y29udGVudDoiXGY4NzkifS5mYS1waG9uZS1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMDk4In0uZmEtcGhvbmUtc3F1YXJlLWFsdDpiZWZvcmV7Y29udGVudDoiXGY4N2IifS5mYS1waG9uZS12b2x1bWU6YmVmb3Jle2NvbnRlbnQ6IlxmMmEwIn0uZmEtcGhvdG8tdmlkZW86YmVmb3Jle2NvbnRlbnQ6IlxmODdjIn0uZmEtcGludGVyZXN0OmJlZm9yZXtjb250ZW50OiJcZjBkMiJ9LmZhLXBpbnRlcmVzdC1wOmJlZm9yZXtjb250ZW50OiJcZjIzMSJ9LmZhLXBpbnRlcmVzdC1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMGQzIn0uZmEtcGxheTpiZWZvcmV7Y29udGVudDoiXGYwNGIifS5mYS1wbGF5LWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYxNDQifS5mYS1wbHVnOmJlZm9yZXtjb250ZW50OiJcZjFlNiJ9LmZhLXBsdXM6YmVmb3Jle2NvbnRlbnQ6IlxmMDY3In0uZmEtcGx1cy1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMDU1In0uZmEtcGx1cy1oZXhhZ29uOmJlZm9yZXtjb250ZW50OiJcZjMwMCJ9LmZhLXBsdXMtb2N0YWdvbjpiZWZvcmV7Y29udGVudDoiXGYzMDEifS5mYS1wbHVzLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYwZmUifS5mYS1wb286YmVmb3Jle2NvbnRlbnQ6IlxmMmZlIn0uZmEtcHJpbnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDJmIn0uZmEtcXJjb2RlOmJlZm9yZXtjb250ZW50OiJcZjAyOSJ9LmZhLXF1ZXN0aW9uOmJlZm9yZXtjb250ZW50OiJcZjEyOCJ9LmZhLXF1ZXN0aW9uLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYwNTkifS5mYS1xdWVzdGlvbi1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMmZkIn0uZmEtcXVvdGUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYxMGQifS5mYS1xdW90ZS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYxMGUifS5mYS1yYW5kb206YmVmb3Jle2NvbnRlbnQ6IlxmMDc0In0uZmEtcmVjdGFuZ2xlLWxhbmRzY2FwZTpiZWZvcmV7Y29udGVudDoiXGYyZmEifS5mYS1yZWN0YW5nbGUtcG9ydHJhaXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMmZiIn0uZmEtcmVjdGFuZ2xlLXdpZGU6YmVmb3Jle2NvbnRlbnQ6IlxmMmZjIn0uZmEtcmVjeWNsZTpiZWZvcmV7Y29udGVudDoiXGYxYjgifS5mYS1yZWRvOmJlZm9yZXtjb250ZW50OiJcZjAxZSJ9LmZhLXJlZG8tYWx0OmJlZm9yZXtjb250ZW50OiJcZjJmOSJ9LmZhLXJlcGVhdDpiZWZvcmV7Y29udGVudDoiXGYzNjMifS5mYS1yZXBlYXQtMTpiZWZvcmV7Y29udGVudDoiXGYzNjUifS5mYS1yZXBlYXQtMS1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzY2In0uZmEtcmVwZWF0LWFsdDpiZWZvcmV7Y29udGVudDoiXGYzNjQifS5mYS1yZXBseTpiZWZvcmV7Y29udGVudDoiXGYzZTUifS5mYS1yZXBseS1hbGw6YmVmb3Jle2NvbnRlbnQ6IlxmMTIyIn0uZmEtcmV0d2VldDpiZWZvcmV7Y29udGVudDoiXGYwNzkifS5mYS1yZXR3ZWV0LWFsdDpiZWZvcmV7Y29udGVudDoiXGYzNjEifS5mYS1yb2FkOmJlZm9yZXtjb250ZW50OiJcZjAxOCJ9LmZhLXJvYm90OmJlZm9yZXtjb250ZW50OiJcZjU0NCJ9LmZhLXJzczpiZWZvcmV7Y29udGVudDoiXGYwOWUifS5mYS1yc3Mtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjE0MyJ9LmZhLXJ2OmJlZm9yZXtjb250ZW50OiJcZjdiZSJ9LmZhLXNhdmU6YmVmb3Jle2NvbnRlbnQ6IlxmMGM3In0uZmEtc2NyZXdkcml2ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNTRhIn0uZmEtc2VhcmNoOmJlZm9yZXtjb250ZW50OiJcZjAwMiJ9LmZhLXNlYXJjaC1taW51czpiZWZvcmV7Y29udGVudDoiXGYwMTAifS5mYS1zZWFyY2gtcGx1czpiZWZvcmV7Y29udGVudDoiXGYwMGUifS5mYS1zaGFwZXM6YmVmb3Jle2NvbnRlbnQ6IlxmNjFmIn0uZmEtc2hhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMDY0In0uZmEtc2hhcmUtYWxsOmJlZm9yZXtjb250ZW50OiJcZjM2NyJ9LmZhLXNoYXJlLWFsdDpiZWZvcmV7Y29udGVudDoiXGYxZTAifS5mYS1zaGFyZS1hbHQtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjFlMSJ9LmZhLXNoYXJlLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxNGQifS5mYS1zaGllbGQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTMyIn0uZmEtc2hpZWxkLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzZWQifS5mYS1zaG9wcGluZy1iYXNrZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjkxIn0uZmEtc2hvcHBpbmctY2FydDpiZWZvcmV7Y29udGVudDoiXGYwN2EifS5mYS1zaHV0dGxlLXZhbjpiZWZvcmV7Y29udGVudDoiXGY1YjYifS5mYS1zaWduLWluOmJlZm9yZXtjb250ZW50OiJcZjA5MCJ9LmZhLXNpZ24taW4tYWx0OmJlZm9yZXtjb250ZW50OiJcZjJmNiJ9LmZhLXNpZ24tb3V0OmJlZm9yZXtjb250ZW50OiJcZjA4YiJ9LmZhLXNpZ24tb3V0LWFsdDpiZWZvcmV7Y29udGVudDoiXGYyZjUifS5mYS1zaWduYWw6YmVmb3Jle2NvbnRlbnQ6IlxmMDEyIn0uZmEtc2lnbmFsLXN0cmVhbTpiZWZvcmV7Y29udGVudDoiXGY4ZGQifS5mYS1zaXRlbWFwOmJlZm9yZXtjb250ZW50OiJcZjBlOCJ9LmZhLXNsaWRlcnMtaDpiZWZvcmV7Y29udGVudDoiXGYxZGUifS5mYS1zbGlkZXJzLWgtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjNmMCJ9LmZhLXNsaWRlcnMtdjpiZWZvcmV7Y29udGVudDoiXGYzZjEifS5mYS1zbGlkZXJzLXYtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjNmMiJ9LmZhLXNtaWxlOmJlZm9yZXtjb250ZW50OiJcZjExOCJ9LmZhLXNtczpiZWZvcmV7Y29udGVudDoiXGY3Y2QifS5mYS1zbm93Zmxha2U6YmVmb3Jle2NvbnRlbnQ6IlxmMmRjIn0uZmEtc29ydDpiZWZvcmV7Y29udGVudDoiXGYwZGMifS5mYS1zb3J0LWFscGhhLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTVkIn0uZmEtc29ydC1hbHBoYS1kb3duLWFsdDpiZWZvcmV7Y29udGVudDoiXGY4ODEifS5mYS1zb3J0LWFscGhhLXVwOmJlZm9yZXtjb250ZW50OiJcZjE1ZSJ9LmZhLXNvcnQtYWxwaGEtdXAtYWx0OmJlZm9yZXtjb250ZW50OiJcZjg4MiJ9LmZhLXNvcnQtYWx0OmJlZm9yZXtjb250ZW50OiJcZjg4MyJ9LmZhLXNvcnQtYW1vdW50LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTYwIn0uZmEtc29ydC1hbW91bnQtZG93bi1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmODg0In0uZmEtc29ydC1hbW91bnQtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMTYxIn0uZmEtc29ydC1hbW91bnQtdXAtYWx0OmJlZm9yZXtjb250ZW50OiJcZjg4NSJ9LmZhLXNvcnQtY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZTAzMCJ9LmZhLXNvcnQtY2lyY2xlLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxlMDMxIn0uZmEtc29ydC1jaXJjbGUtdXA6YmVmb3Jle2NvbnRlbnQ6IlxlMDMyIn0uZmEtc29ydC1kb3duOmJlZm9yZXtjb250ZW50OiJcZjBkZCJ9LmZhLXNvcnQtbnVtZXJpYy1kb3duOmJlZm9yZXtjb250ZW50OiJcZjE2MiJ9LmZhLXNvcnQtbnVtZXJpYy1kb3duLWFsdDpiZWZvcmV7Y29udGVudDoiXGY4ODYifS5mYS1zb3J0LW51bWVyaWMtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMTYzIn0uZmEtc29ydC1udW1lcmljLXVwLWFsdDpiZWZvcmV7Y29udGVudDoiXGY4ODcifS5mYS1zb3J0LXNoYXBlcy1kb3duOmJlZm9yZXtjb250ZW50OiJcZjg4OCJ9LmZhLXNvcnQtc2hhcGVzLWRvd24tYWx0OmJlZm9yZXtjb250ZW50OiJcZjg4OSJ9LmZhLXNvcnQtc2hhcGVzLXVwOmJlZm9yZXtjb250ZW50OiJcZjg4YSJ9LmZhLXNvcnQtc2hhcGVzLXVwLWFsdDpiZWZvcmV7Y29udGVudDoiXGY4OGIifS5mYS1zb3J0LXNpemUtZG93bjpiZWZvcmV7Y29udGVudDoiXGY4OGMifS5mYS1zb3J0LXNpemUtZG93bi1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmODhkIn0uZmEtc29ydC1zaXplLXVwOmJlZm9yZXtjb250ZW50OiJcZjg4ZSJ9LmZhLXNvcnQtc2l6ZS11cC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmODhmIn0uZmEtc29ydC11cDpiZWZvcmV7Y29udGVudDoiXGYwZGUifS5mYS1zcGFkZTpiZWZvcmV7Y29udGVudDoiXGYyZjQifS5mYS1zcGlubmVyOmJlZm9yZXtjb250ZW50OiJcZjExMCJ9LmZhLXNwaW5uZXItdGhpcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2Y0In0uZmEtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjBjOCJ9LmZhLXN0YXI6YmVmb3Jle2NvbnRlbnQ6IlxmMDA1In0uZmEtc3Rhci1leGNsYW1hdGlvbjpiZWZvcmV7Y29udGVudDoiXGYyZjMifS5mYS1zdGFyLWhhbGY6YmVmb3Jle2NvbnRlbnQ6IlxmMDg5In0uZmEtc3Rhci1oYWxmLWFsdDpiZWZvcmV7Y29udGVudDoiXGY1YzAifS5mYS1zdGVlcmluZy13aGVlbDpiZWZvcmV7Y29udGVudDoiXGY2MjIifS5mYS1zdGlja3ktbm90ZTpiZWZvcmV7Y29udGVudDoiXGYyNDkifS5mYS1zdG9wd2F0Y2g6YmVmb3Jle2NvbnRlbnQ6IlxmMmYyIn0uZmEtc3RvcmU6YmVmb3Jle2NvbnRlbnQ6IlxmNTRlIn0uZmEtc3RvcmUtYWx0OmJlZm9yZXtjb250ZW50OiJcZjU0ZiJ9LmZhLXN1aXRjYXNlLXJvbGxpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmNWMxIn0uZmEtc3VuOmJlZm9yZXtjb250ZW50OiJcZjE4NSJ9LmZhLXN5bmM6YmVmb3Jle2NvbnRlbnQ6IlxmMDIxIn0uZmEtc3luYy1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMmYxIn0uZmEtdGFibGV0OmJlZm9yZXtjb250ZW50OiJcZjEwYSJ9LmZhLXRhYmxldC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2ZhIn0uZmEtdGFjaG9tZXRlcjpiZWZvcmV7Y29udGVudDoiXGYwZTQifS5mYS10YWNob21ldGVyLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzZmQifS5mYS10YWNob21ldGVyLWFsdC1hdmVyYWdlOmJlZm9yZXtjb250ZW50OiJcZjYyNCJ9LmZhLXRhY2hvbWV0ZXItYWx0LWZhc3Q6YmVmb3Jle2NvbnRlbnQ6IlxmNjI1In0uZmEtdGFjaG9tZXRlci1hbHQtZmFzdGVzdDpiZWZvcmV7Y29udGVudDoiXGY2MjYifS5mYS10YWNob21ldGVyLWFsdC1zbG93OmJlZm9yZXtjb250ZW50OiJcZjYyNyJ9LmZhLXRhY2hvbWV0ZXItYWx0LXNsb3dlc3Q6YmVmb3Jle2NvbnRlbnQ6IlxmNjI4In0uZmEtdGFjaG9tZXRlci1hdmVyYWdlOmJlZm9yZXtjb250ZW50OiJcZjYyOSJ9LmZhLXRhY2hvbWV0ZXItZmFzdDpiZWZvcmV7Y29udGVudDoiXGY2MmEifS5mYS10YWNob21ldGVyLWZhc3Rlc3Q6YmVmb3Jle2NvbnRlbnQ6IlxmNjJiIn0uZmEtdGFjaG9tZXRlci1zbG93OmJlZm9yZXtjb250ZW50OiJcZjYyYyJ9LmZhLXRhY2hvbWV0ZXItc2xvd2VzdDpiZWZvcmV7Y29udGVudDoiXGY2MmQifS5mYS10YWc6YmVmb3Jle2NvbnRlbnQ6IlxmMDJiIn0uZmEtdGFnczpiZWZvcmV7Y29udGVudDoiXGYwMmMifS5mYS10YXhpOmJlZm9yZXtjb250ZW50OiJcZjFiYSJ9LmZhLXRlbXBlcmF0dXJlLWhpZ2g6YmVmb3Jle2NvbnRlbnQ6IlxmNzY5In0uZmEtdGVtcGVyYXR1cmUtbG93OmJlZm9yZXtjb250ZW50OiJcZjc2YiJ9LmZhLXRleHQtaGVpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjAzNCJ9LmZhLXRleHQtd2lkdGg6YmVmb3Jle2NvbnRlbnQ6IlxmMDM1In0uZmEtdGhlcm1vbWV0ZXItaGFsZjpiZWZvcmV7Y29udGVudDoiXGYyYzkifS5mYS10aHVtYnMtZG93bjpiZWZvcmV7Y29udGVudDoiXGYxNjUifS5mYS10aHVtYnMtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMTY0In0uZmEtdGlja2V0OmJlZm9yZXtjb250ZW50OiJcZjE0NSJ9LmZhLXRpa3RvazpiZWZvcmV7Y29udGVudDoiXGUwN2IifS5mYS10aW1lczpiZWZvcmV7Y29udGVudDoiXGYwMGQifS5mYS10aW1lcy1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMDU3In0uZmEtdGltZXMtaGV4YWdvbjpiZWZvcmV7Y29udGVudDoiXGYyZWUifS5mYS10aW1lcy1vY3RhZ29uOmJlZm9yZXtjb250ZW50OiJcZjJmMCJ9LmZhLXRpbWVzLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYyZDMifS5mYS10aW50OmJlZm9yZXtjb250ZW50OiJcZjA0MyJ9LmZhLXRpcmU6YmVmb3Jle2NvbnRlbnQ6IlxmNjMxIn0uZmEtdGlyZS1mbGF0OmJlZm9yZXtjb250ZW50OiJcZjYzMiJ9LmZhLXRpcmUtcHJlc3N1cmUtd2FybmluZzpiZWZvcmV7Y29udGVudDoiXGY2MzMifS5mYS10aXJlLXJ1Z2dlZDpiZWZvcmV7Y29udGVudDoiXGY2MzQifS5mYS10b2dnbGUtb2ZmOmJlZm9yZXtjb250ZW50OiJcZjIwNCJ9LmZhLXRvZ2dsZS1vbjpiZWZvcmV7Y29udGVudDoiXGYyMDUifS5mYS10b29sczpiZWZvcmV7Y29udGVudDoiXGY3ZDkifS5mYS10cmFpbGVyOmJlZm9yZXtjb250ZW50OiJcZTA0MSJ9LmZhLXRyYXNoOmJlZm9yZXtjb250ZW50OiJcZjFmOCJ9LmZhLXRyYXNoLWFsdDpiZWZvcmV7Y29udGVudDoiXGYyZWQifS5mYS10cmFzaC1yZXN0b3JlOmJlZm9yZXtjb250ZW50OiJcZjgyOSJ9LmZhLXRyYXNoLXJlc3RvcmUtYWx0OmJlZm9yZXtjb250ZW50OiJcZjgyYSJ9LmZhLXRyYXNoLXVuZG86YmVmb3Jle2NvbnRlbnQ6IlxmODk1In0uZmEtdHJhc2gtdW5kby1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmODk2In0uZmEtdHJpYW5nbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMmVjIn0uZmEtdHJvcGh5OmJlZm9yZXtjb250ZW50OiJcZjA5MSJ9LmZhLXRyb3BoeS1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMmViIn0uZmEtdHJ1Y2s6YmVmb3Jle2NvbnRlbnQ6IlxmMGQxIn0uZmEtdHJ1Y2stbG9hZGluZzpiZWZvcmV7Y29udGVudDoiXGY0ZGUifS5mYS10cnVjay1tb25zdGVyOmJlZm9yZXtjb250ZW50OiJcZjYzYiJ9LmZhLXRydWNrLXBpY2t1cDpiZWZvcmV7Y29udGVudDoiXGY2M2MifS5mYS10dHk6YmVmb3Jle2NvbnRlbnQ6IlxmMWU0In0uZmEtdHY6YmVmb3Jle2NvbnRlbnQ6IlxmMjZjIn0uZmEtdHdpdHRlcjpiZWZvcmV7Y29udGVudDoiXGYwOTkifS5mYS10d2l0dGVyLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYwODEifS5mYS11bmRvOmJlZm9yZXtjb250ZW50OiJcZjBlMiJ9LmZhLXVuZG8tYWx0OmJlZm9yZXtjb250ZW50OiJcZjJlYSJ9LmZhLXVwbG9hZDpiZWZvcmV7Y29udGVudDoiXGYwOTMifS5mYS11c2QtY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjJlOCJ9LmZhLXVzZC1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMmU5In0uZmEtdXNlcjpiZWZvcmV7Y29udGVudDoiXGYwMDcifS5mYS11c2VyLWFsdDpiZWZvcmV7Y29udGVudDoiXGY0MDYifS5mYS11c2VyLWNoZWNrOmJlZm9yZXtjb250ZW50OiJcZjRmYyJ9LmZhLXVzZXItY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjJiZCJ9LmZhLXVzZXItZnJpZW5kczpiZWZvcmV7Y29udGVudDoiXGY1MDAifS5mYS11c2VyczpiZWZvcmV7Y29udGVudDoiXGYwYzAifS5mYS12aWRlbzpiZWZvcmV7Y29udGVudDoiXGYwM2QifS5mYS12b2ljZW1haWw6YmVmb3Jle2NvbnRlbnQ6IlxmODk3In0uZmEtdm9sdW1lOmJlZm9yZXtjb250ZW50OiJcZjZhOCJ9LmZhLXZvbHVtZS1kb3duOmJlZm9yZXtjb250ZW50OiJcZjAyNyJ9LmZhLXZvbHVtZS1tdXRlOmJlZm9yZXtjb250ZW50OiJcZjZhOSJ9LmZhLXZvbHVtZS1vZmY6YmVmb3Jle2NvbnRlbnQ6IlxmMDI2In0uZmEtdm9sdW1lLXNsYXNoOmJlZm9yZXtjb250ZW50OiJcZjJlMiJ9LmZhLXZvbHVtZS11cDpiZWZvcmV7Y29udGVudDoiXGYwMjgifS5mYS13YWdvbi1jb3ZlcmVkOmJlZm9yZXtjb250ZW50OiJcZjhlZSJ9LmZhLXdhbGtpZS10YWxraWU6YmVmb3Jle2NvbnRlbnQ6IlxmOGVmIn0uZmEtd2ViY2FtOmJlZm9yZXtjb250ZW50OiJcZjgzMiJ9LmZhLXdlYmNhbS1zbGFzaDpiZWZvcmV7Y29udGVudDoiXGY4MzMifS5mYS13aGVlbGNoYWlyOmJlZm9yZXtjb250ZW50OiJcZjE5MyJ9LmZhLXdpZmk6YmVmb3Jle2NvbnRlbnQ6IlxmMWViIn0uZmEtd3JlbmNoOmJlZm9yZXtjb250ZW50OiJcZjBhZCJ9LmZhLXlvdXR1YmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTY3In0uZmEteW91dHViZS1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmNDMxIn0uZmEtc2hpZWxkLWNoZWNrOmJlZm9yZXtjb250ZW50OiJcZjJmNyJ9LmZhLWxpbms6YmVmb3Jle2NvbnRlbnQ6IlxmMGMxIn0uZmEtdW5saW5rOmJlZm9yZXtjb250ZW50OiJcZjEyNyJ9LmZhLWJhZGdlLWRvbGxhcjpiZWZvcmV7Y29udGVudDoiXGY2NDUifS5mYS1wZW4tc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjE0YiJ9LmZhLWNvbW1lbnQtYWx0LWRvdHM6YmVmb3Jle2NvbnRlbnQ6IlxmNGEzIn0uZmEtYXJyb3ctZG93bi10by1saW5lOmJlZm9yZXtjb250ZW50OiJcZjMzZCJ9LmZhLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjM1NiI7fS5zci1vbmx5e2JvcmRlcjowO2NsaXA6cmVjdCgwLDAsMCwwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4fS5zci1vbmx5LWZvY3VzYWJsZTphY3RpdmUsLnNyLW9ubHktZm9jdXNhYmxlOmZvY3Vze2NsaXA6YXV0bztoZWlnaHQ6YXV0bzttYXJnaW46MDtvdmVyZmxvdzp2aXNpYmxlO3Bvc2l0aW9uOnN0YXRpYzt3aWR0aDphdXRvfUBmb250LWZhY2V7Zm9udC1mYW1pbHk6J0ZvbnQgQXdlc29tZSA1IEJyYW5kcyc7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtZGlzcGxheTpibG9jaztzcmM6dXJsKC8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZGVza3RvcC1hd2Vzb21lL3dlYmZvbnRzL2ZhLWJyYW5kcy00MDAuZW90KTtzcmM6dXJsKC8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZGVza3RvcC1hd2Vzb21lL3dlYmZvbnRzL2ZhLWJyYW5kcy00MDAuZW90PyNpZWZpeCkgZm9ybWF0KCJlbWJlZGRlZC1vcGVudHlwZSIpLHVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1icmFuZHMtNDAwLndvZmYyKSBmb3JtYXQoIndvZmYyIiksdXJsKC8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZGVza3RvcC1hd2Vzb21lL3dlYmZvbnRzL2ZhLWJyYW5kcy00MDAud29mZikgZm9ybWF0KCJ3b2ZmIiksdXJsKC8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZGVza3RvcC1hd2Vzb21lL3dlYmZvbnRzL2ZhLWJyYW5kcy00MDAudHRmKSBmb3JtYXQoInRydWV0eXBlIiksdXJsKC8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZGVza3RvcC1hd2Vzb21lL3dlYmZvbnRzL2ZhLWJyYW5kcy00MDAuc3ZnI2ZvbnRhd2Vzb21lKSBmb3JtYXQoInN2ZyIpfS5mYWJ7Zm9udC1mYW1pbHk6J0ZvbnQgQXdlc29tZSA1IEJyYW5kcyc7Zm9udC13ZWlnaHQ6NDAwfUBmb250LWZhY2V7Zm9udC1mYW1pbHk6J0ZvbnQgQXdlc29tZSA1IFBybyc7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6MzAwO2ZvbnQtZGlzcGxheTpibG9jaztzcmM6dXJsKC8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZGVza3RvcC1hd2Vzb21lL3dlYmZvbnRzL2ZhLWxpZ2h0LTMwMC5lb3QpO3NyYzp1cmwoLy9mb250cy5kMmNtZWRpYS5jYS93ZWJmb250cy9kZXNrdG9wLWF3ZXNvbWUvd2ViZm9udHMvZmEtbGlnaHQtMzAwLmVvdD8jaWVmaXgpIGZvcm1hdCgiZW1iZWRkZWQtb3BlbnR5cGUiKSx1cmwoLy9mb250cy5kMmNtZWRpYS5jYS93ZWJmb250cy9kZXNrdG9wLWF3ZXNvbWUvd2ViZm9udHMvZmEtbGlnaHQtMzAwLndvZmYyKSBmb3JtYXQoIndvZmYyIiksdXJsKC8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZGVza3RvcC1hd2Vzb21lL3dlYmZvbnRzL2ZhLWxpZ2h0LTMwMC53b2ZmKSBmb3JtYXQoIndvZmYiKSx1cmwoLy9mb250cy5kMmNtZWRpYS5jYS93ZWJmb250cy9kZXNrdG9wLWF3ZXNvbWUvd2ViZm9udHMvZmEtbGlnaHQtMzAwLnR0ZikgZm9ybWF0KCJ0cnVldHlwZSIpLHVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1saWdodC0zMDAuc3ZnI2ZvbnRhd2Vzb21lKSBmb3JtYXQoInN2ZyIpfS5mYWx7Zm9udC1mYW1pbHk6J0ZvbnQgQXdlc29tZSA1IFBybyc7Zm9udC13ZWlnaHQ6MzAwfUBmb250LWZhY2V7Zm9udC1mYW1pbHk6J0ZvbnQgQXdlc29tZSA1IFBybyc7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtZGlzcGxheTpibG9jaztzcmM6dXJsKC8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZGVza3RvcC1hd2Vzb21lL3dlYmZvbnRzL2ZhLXJlZ3VsYXItNDAwLmVvdCk7c3JjOnVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1yZWd1bGFyLTQwMC5lb3Q\/I2llZml4KSBmb3JtYXQoImVtYmVkZGVkLW9wZW50eXBlIiksdXJsKC8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZGVza3RvcC1hd2Vzb21lL3dlYmZvbnRzL2ZhLXJlZ3VsYXItNDAwLndvZmYyKSBmb3JtYXQoIndvZmYyIiksdXJsKC8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZGVza3RvcC1hd2Vzb21lL3dlYmZvbnRzL2ZhLXJlZ3VsYXItNDAwLndvZmYpIGZvcm1hdCgid29mZiIpLHVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1yZWd1bGFyLTQwMC50dGYpIGZvcm1hdCgidHJ1ZXR5cGUiKSx1cmwoLy9mb250cy5kMmNtZWRpYS5jYS93ZWJmb250cy9kZXNrdG9wLWF3ZXNvbWUvd2ViZm9udHMvZmEtcmVndWxhci00MDAuc3ZnI2ZvbnRhd2Vzb21lKSBmb3JtYXQoInN2ZyIpfS5mYXJ7Zm9udC1mYW1pbHk6J0ZvbnQgQXdlc29tZSA1IFBybyc7Zm9udC13ZWlnaHQ6NDAwfUBmb250LWZhY2V7Zm9udC1mYW1pbHk6J0ZvbnQgQXdlc29tZSA1IFBybyc7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6OTAwO2ZvbnQtZGlzcGxheTpibG9jaztzcmM6dXJsKC8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZGVza3RvcC1hd2Vzb21lL3dlYmZvbnRzL2ZhLXNvbGlkLTkwMC5lb3QpO3NyYzp1cmwoLy9mb250cy5kMmNtZWRpYS5jYS93ZWJmb250cy9kZXNrdG9wLWF3ZXNvbWUvd2ViZm9udHMvZmEtc29saWQtOTAwLmVvdD8jaWVmaXgpIGZvcm1hdCgiZW1iZWRkZWQtb3BlbnR5cGUiKSx1cmwoLy9mb250cy5kMmNtZWRpYS5jYS93ZWJmb250cy9kZXNrdG9wLWF3ZXNvbWUvd2ViZm9udHMvZmEtc29saWQtOTAwLndvZmYyKSBmb3JtYXQoIndvZmYyIiksdXJsKC8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZGVza3RvcC1hd2Vzb21lL3dlYmZvbnRzL2ZhLXNvbGlkLTkwMC53b2ZmKSBmb3JtYXQoIndvZmYiKSx1cmwoLy9mb250cy5kMmNtZWRpYS5jYS93ZWJmb250cy9kZXNrdG9wLWF3ZXNvbWUvd2ViZm9udHMvZmEtc29saWQtOTAwLnR0ZikgZm9ybWF0KCJ0cnVldHlwZSIpLHVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2Rlc2t0b3AtYXdlc29tZS93ZWJmb250cy9mYS1zb2xpZC05MDAuc3ZnI2ZvbnRhd2Vzb21lKSBmb3JtYXQoInN2ZyIpfS5mYSwuZmFze2ZvbnQtZmFtaWx5OidGb250IEF3ZXNvbWUgNSBQcm8nIWltcG9ydGFudDtmb250LXdlaWdodDo5MDB9QGZvbnQtZmFjZXtmb250LWRpc3BsYXk6c3dhcDtmb250LWZhbWlseTonRDJDQ3VzdG9tSWNvbnMnO3NyYzpsb2NhbChEMkNDdXN0b21JY29ucyksdXJsKC8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZDJjLWN1c3RvbS1pY29ucy5lb3Q\/I2llZml4KSBmb3JtYXQoImVtYmVkZGVkLW9wZW50eXBlIiksdXJsKC8vZm9udHMuZDJjbWVkaWEuY2Evd2ViZm9udHMvZDJjLWN1c3RvbS1pY29ucy53b2ZmKSBmb3JtYXQoIndvZmYiKSx1cmwoLy9mb250cy5kMmNtZWRpYS5jYS93ZWJmb250cy9kMmMtY3VzdG9tLWljb25zLnR0ZikgZm9ybWF0KCJ0cnVldHlwZSIpLHVybCgvL2ZvbnRzLmQyY21lZGlhLmNhL3dlYmZvbnRzL2QyYy1jdXN0b20taWNvbnMuc3ZnI3N2Z0ZvbnROYW1lKSBmb3JtYXQoInN2ZyIpO2ZvbnQtd2VpZ2h0OjQwMDtmb250LXN0eWxlOm5vcm1hbH0uZmEteC10d2l0dGVyOmJlZm9yZXtmb250LWZhbWlseTonRDJDQ3VzdG9tSWNvbnMnLHNlcmlmO2NvbnRlbnQ6IlxlOTAwIjtkaXNwbGF5OmJsb2NrO2ZvbnQtd2VpZ2h0OjQwMDtmb250LXN0eWxlOm5vcm1hbH0KLyoqIC9jc3MvZm9udC1hd2Vzb21lLmNvbnRlbnQubWluLmNzcyAqKi8KLmZhLTUwMHB4OmJlZm9yZXtjb250ZW50OiJcZjI2ZSJ9LmZhLWFjY2Vzc2libGUtaWNvbjpiZWZvcmV7Y29udGVudDoiXGYzNjgifS5mYS1hY2N1c29mdDpiZWZvcmV7Y29udGVudDoiXGYzNjkifS5mYS1hZGRyZXNzLWJvb2s6YmVmb3Jle2NvbnRlbnQ6IlxmMmI5In0uZmEtYWRkcmVzcy1jYXJkOmJlZm9yZXtjb250ZW50OiJcZjJiYiJ9LmZhLWFkanVzdDpiZWZvcmV7Y29udGVudDoiXGYwNDIifS5mYS1hZG46YmVmb3Jle2NvbnRlbnQ6IlxmMTcwIn0uZmEtYWR2ZXJzYWw6YmVmb3Jle2NvbnRlbnQ6IlxmMzZhIn0uZmEtYWZmaWxpYXRldGhlbWU6YmVmb3Jle2NvbnRlbnQ6IlxmMzZiIn0uZmEtYWxnb2xpYTpiZWZvcmV7Y29udGVudDoiXGYzNmMifS5mYS1hbGlnbi1jZW50ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMDM3In0uZmEtYWxpZ24tanVzdGlmeTpiZWZvcmV7Y29udGVudDoiXGYwMzkifS5mYS1hbGlnbi1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjAzNiJ9LmZhLWFsaWduLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjAzOCJ9LmZhLWFtYXpvbjpiZWZvcmV7Y29udGVudDoiXGYyNzAifS5mYS1hbWF6b24tcGF5OmJlZm9yZXtjb250ZW50OiJcZjQyYyJ9LmZhLWFtYnVsYW5jZTpiZWZvcmV7Y29udGVudDoiXGYwZjkifS5mYS1hbWVyaWNhbi1zaWduLWxhbmd1YWdlLWludGVycHJldGluZzpiZWZvcmV7Y29udGVudDoiXGYyYTMifS5mYS1hbWlsaWE6YmVmb3Jle2NvbnRlbnQ6IlxmMzZkIn0uZmEtYW5jaG9yOmJlZm9yZXtjb250ZW50OiJcZjEzZCJ9LmZhLWFuZHJvaWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTdiIn0uZmEtYW5nZWxsaXN0OmJlZm9yZXtjb250ZW50OiJcZjIwOSJ9LmZhLWFuZ2xlLWRvdWJsZS1kb3duOmJlZm9yZXtjb250ZW50OiJcZjEwMyJ9LmZhLWFuZ2xlLWRvdWJsZS1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjEwMCJ9LmZhLWFuZ2xlLWRvdWJsZS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYxMDEifS5mYS1hbmdsZS1kb3VibGUtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMTAyIn0uZmEtYW5nbGUtZG93bjpiZWZvcmV7Y29udGVudDoiXGYxMDcifS5mYS1hbmdsZS1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjEwNCJ9LmZhLWFuZ2xlLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjEwNSJ9LmZhLWFuZ2xlLXVwOmJlZm9yZXtjb250ZW50OiJcZjEwNiJ9LmZhLWFuZ3J5Y3JlYXRpdmU6YmVmb3Jle2NvbnRlbnQ6IlxmMzZlIn0uZmEtYW5ndWxhcjpiZWZvcmV7Y29udGVudDoiXGY0MjAifS5mYS1hcHAtc3RvcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMzZmIn0uZmEtYXBwLXN0b3JlLWlvczpiZWZvcmV7Y29udGVudDoiXGYzNzAifS5mYS1hcHBlcjpiZWZvcmV7Y29udGVudDoiXGYzNzEifS5mYS1hcHBsZTpiZWZvcmV7Y29udGVudDoiXGYxNzkifS5mYS1hcHBsZS1wYXk6YmVmb3Jle2NvbnRlbnQ6IlxmNDE1In0uZmEtYXJjaGl2ZTpiZWZvcmV7Y29udGVudDoiXGYxODcifS5mYS1hcnJvdy1hbHQtY2lyY2xlLWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMzU4In0uZmEtYXJyb3ctYWx0LWNpcmNsZS1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjM1OSJ9LmZhLWFycm93LWFsdC1jaXJjbGUtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzVhIn0uZmEtYXJyb3ctYWx0LWNpcmNsZS11cDpiZWZvcmV7Y29udGVudDoiXGYzNWIifS5mYS1hcnJvdy1jaXJjbGUtZG93bjpiZWZvcmV7Y29udGVudDoiXGYwYWIifS5mYS1hcnJvdy1jaXJjbGUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYwYTgifS5mYS1hcnJvdy1jaXJjbGUtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGE5In0uZmEtYXJyb3ctY2lyY2xlLXVwOmJlZm9yZXtjb250ZW50OiJcZjBhYSJ9LmZhLWFycm93LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMDYzIn0uZmEtYXJyb3ctbGVmdDpiZWZvcmV7Y29udGVudDoiXGYwNjAifS5mYS1hcnJvdy1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYwNjEifS5mYS1hcnJvdy11cDpiZWZvcmV7Y29udGVudDoiXGYwNjIifS5mYS1hcnJvd3MtYWx0OmJlZm9yZXtjb250ZW50OiJcZjBiMiJ9LmZhLWFycm93cy1hbHQtaDpiZWZvcmV7Y29udGVudDoiXGYzMzcifS5mYS1hcnJvd3MtYWx0LXY6YmVmb3Jle2NvbnRlbnQ6IlxmMzM4In0uZmEtYXNzaXN0aXZlLWxpc3RlbmluZy1zeXN0ZW1zOmJlZm9yZXtjb250ZW50OiJcZjJhMiJ9LmZhLWFzdGVyaXNrOmJlZm9yZXtjb250ZW50OiJcZjA2OSJ9LmZhLWFzeW1tZXRyaWs6YmVmb3Jle2NvbnRlbnQ6IlxmMzcyIn0uZmEtYXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWZhIn0uZmEtYXVkaWJsZTpiZWZvcmV7Y29udGVudDoiXGYzNzMifS5mYS1hdWRpby1kZXNjcmlwdGlvbjpiZWZvcmV7Y29udGVudDoiXGYyOWUifS5mYS1hdXRvcHJlZml4ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmNDFjIn0uZmEtYXZpYW5leDpiZWZvcmV7Y29udGVudDoiXGYzNzQifS5mYS1hdmlhdG86YmVmb3Jle2NvbnRlbnQ6IlxmNDIxIn0uZmEtYXdzOmJlZm9yZXtjb250ZW50OiJcZjM3NSJ9LmZhLWJhY2t3YXJkOmJlZm9yZXtjb250ZW50OiJcZjA0YSJ9LmZhLWJhbGFuY2Utc2NhbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMjRlIn0uZmEtYmFuOmJlZm9yZXtjb250ZW50OiJcZjA1ZSJ9LmZhLWJhbmRjYW1wOmJlZm9yZXtjb250ZW50OiJcZjJkNSJ9LmZhLWJhcmNvZGU6YmVmb3Jle2NvbnRlbnQ6IlxmMDJhIn0uZmEtYmFyczpiZWZvcmV7Y29udGVudDoiXGYwYzkifS5mYS1iYXNlYmFsbC1iYWxsOmJlZm9yZXtjb250ZW50OiJcZjQzMyJ9LmZhLWJhc2tldGJhbGwtYmFsbDpiZWZvcmV7Y29udGVudDoiXGY0MzQifS5mYS1iYXRoOmJlZm9yZXtjb250ZW50OiJcZjJjZCJ9LmZhLWJhdHRlcnktZW1wdHk6YmVmb3Jle2NvbnRlbnQ6IlxmMjQ0In0uZmEtYmF0dGVyeS1mdWxsOmJlZm9yZXtjb250ZW50OiJcZjI0MCJ9LmZhLWJhdHRlcnktaGFsZjpiZWZvcmV7Y29udGVudDoiXGYyNDIifS5mYS1iYXR0ZXJ5LXF1YXJ0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMjQzIn0uZmEtYmF0dGVyeS10aHJlZS1xdWFydGVyczpiZWZvcmV7Y29udGVudDoiXGYyNDEifS5mYS1iZWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjM2In0uZmEtYmVlcjpiZWZvcmV7Y29udGVudDoiXGYwZmMifS5mYS1iZWhhbmNlOmJlZm9yZXtjb250ZW50OiJcZjFiNCJ9LmZhLWJlaGFuY2Utc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjFiNSJ9LmZhLWJlbGw6YmVmb3Jle2NvbnRlbnQ6IlxmMGYzIn0uZmEtYmVsbC1zbGFzaDpiZWZvcmV7Y29udGVudDoiXGYxZjYifS5mYS1iaWN5Y2xlOmJlZm9yZXtjb250ZW50OiJcZjIwNiJ9LmZhLWJpbW9iamVjdDpiZWZvcmV7Y29udGVudDoiXGYzNzgifS5mYS1iaW5vY3VsYXJzOmJlZm9yZXtjb250ZW50OiJcZjFlNSJ9LmZhLWJpcnRoZGF5LWNha2U6YmVmb3Jle2NvbnRlbnQ6IlxmMWZkIn0uZmEtYml0YnVja2V0OmJlZm9yZXtjb250ZW50OiJcZjE3MSJ9LmZhLWJpdGNvaW46YmVmb3Jle2NvbnRlbnQ6IlxmMzc5In0uZmEtYml0eTpiZWZvcmV7Y29udGVudDoiXGYzN2EifS5mYS1ibGFjay10aWU6YmVmb3Jle2NvbnRlbnQ6IlxmMjdlIn0uZmEtYmxhY2tiZXJyeTpiZWZvcmV7Y29udGVudDoiXGYzN2IifS5mYS1ibGluZDpiZWZvcmV7Y29udGVudDoiXGYyOWQifS5mYS1ibG9nZ2VyOmJlZm9yZXtjb250ZW50OiJcZjM3YyJ9LmZhLWJsb2dnZXItYjpiZWZvcmV7Y29udGVudDoiXGYzN2QifS5mYS1ibHVldG9vdGg6YmVmb3Jle2NvbnRlbnQ6IlxmMjkzIn0uZmEtYmx1ZXRvb3RoLWI6YmVmb3Jle2NvbnRlbnQ6IlxmMjk0In0uZmEtYm9sZDpiZWZvcmV7Y29udGVudDoiXGYwMzIifS5mYS1ib2x0OmJlZm9yZXtjb250ZW50OiJcZjBlNyJ9LmZhLWJvbWI6YmVmb3Jle2NvbnRlbnQ6IlxmMWUyIn0uZmEtYm9vazpiZWZvcmV7Y29udGVudDoiXGYwMmQifS5mYS1ib29rbWFyazpiZWZvcmV7Y29udGVudDoiXGYwMmUifS5mYS1ib3dsaW5nLWJhbGw6YmVmb3Jle2NvbnRlbnQ6IlxmNDM2In0uZmEtYnJhaWxsZTpiZWZvcmV7Y29udGVudDoiXGYyYTEifS5mYS1icmllZmNhc2U6YmVmb3Jle2NvbnRlbnQ6IlxmMGIxIn0uZmEtYnRjOmJlZm9yZXtjb250ZW50OiJcZjE1YSJ9LmZhLWJ1ZzpiZWZvcmV7Y29udGVudDoiXGYxODgifS5mYS1idWlsZGluZzpiZWZvcmV7Y29udGVudDoiXGYxYWQifS5mYS1idWxsaG9ybjpiZWZvcmV7Y29udGVudDoiXGYwYTEifS5mYS1idWxsc2V5ZTpiZWZvcmV7Y29udGVudDoiXGYxNDAifS5mYS1idXJvbW9iZWxleHBlcnRlOmJlZm9yZXtjb250ZW50OiJcZjM3ZiJ9LmZhLWJ1czpiZWZvcmV7Y29udGVudDoiXGYyMDcifS5mYS1idXlzZWxsYWRzOmJlZm9yZXtjb250ZW50OiJcZjIwZCJ9LmZhLWNhbGN1bGF0b3I6YmVmb3Jle2NvbnRlbnQ6IlxmMWVjIn0uZmEtY2FsZW5kYXI6YmVmb3Jle2NvbnRlbnQ6IlxmMTMzIn0uZmEtY2FsZW5kYXItYWx0OmJlZm9yZXtjb250ZW50OiJcZjA3MyJ9LmZhLWNhbGVuZGFyLWNoZWNrOmJlZm9yZXtjb250ZW50OiJcZjI3NCJ9LmZhLWNhbGVuZGFyLW1pbnVzOmJlZm9yZXtjb250ZW50OiJcZjI3MiJ9LmZhLWNhbGVuZGFyLXBsdXM6YmVmb3Jle2NvbnRlbnQ6IlxmMjcxIn0uZmEtY2FsZW5kYXItdGltZXM6YmVmb3Jle2NvbnRlbnQ6IlxmMjczIn0uZmEtY2FtZXJhOmJlZm9yZXtjb250ZW50OiJcZjAzMCJ9LmZhLWNhbWVyYS1yZXRybzpiZWZvcmV7Y29udGVudDoiXGYwODMifS5mYS1jYXI6YmVmb3JlLC5mYS1hdXRvbW9iaWxlOmJlZm9yZXtjb250ZW50OiJcZjFiOSJ9LmZhLWNhcmV0LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMGQ3In0uZmEtY2FyZXQtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYwZDkifS5mYS1jYXJldC1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYwZGEifS5mYS1jYXJldC1zcXVhcmUtZG93bjpiZWZvcmV7Y29udGVudDoiXGYxNTAifS5mYS1jYXJldC1zcXVhcmUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYxOTEifS5mYS1jYXJldC1zcXVhcmUtcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTUyIn0uZmEtY2FyZXQtc3F1YXJlLXVwOmJlZm9yZXtjb250ZW50OiJcZjE1MSJ9LmZhLWNhcmV0LXVwOmJlZm9yZXtjb250ZW50OiJcZjBkOCJ9LmZhLWNhcnQtYXJyb3ctZG93bjpiZWZvcmV7Y29udGVudDoiXGYyMTgifS5mYS1jYXJ0LXBsdXM6YmVmb3Jle2NvbnRlbnQ6IlxmMjE3In0uZmEtY2MtYW1hem9uLXBheTpiZWZvcmV7Y29udGVudDoiXGY0MmQifS5mYS1jYy1hbWV4OmJlZm9yZXtjb250ZW50OiJcZjFmMyJ9LmZhLWNjLWFwcGxlLXBheTpiZWZvcmV7Y29udGVudDoiXGY0MTYifS5mYS1jYy1kaW5lcnMtY2x1YjpiZWZvcmV7Y29udGVudDoiXGYyNGMifS5mYS1jYy1kaXNjb3ZlcjpiZWZvcmV7Y29udGVudDoiXGYxZjIifS5mYS1jYy1qY2I6YmVmb3Jle2NvbnRlbnQ6IlxmMjRiIn0uZmEtY2MtbWFzdGVyY2FyZDpiZWZvcmV7Y29udGVudDoiXGYxZjEifS5mYS1jYy1wYXlwYWw6YmVmb3Jle2NvbnRlbnQ6IlxmMWY0In0uZmEtY2Mtc3RyaXBlOmJlZm9yZXtjb250ZW50OiJcZjFmNSJ9LmZhLWNjLXZpc2E6YmVmb3Jle2NvbnRlbnQ6IlxmMWYwIn0uZmEtY2VudGVyY29kZTpiZWZvcmV7Y29udGVudDoiXGYzODAifS5mYS1jZXJ0aWZpY2F0ZTpiZWZvcmV7Y29udGVudDoiXGYwYTMifS5mYS1jaGFydC1hcmVhOmJlZm9yZXtjb250ZW50OiJcZjFmZSJ9LmZhLWNoYXJ0LWJhcjpiZWZvcmV7Y29udGVudDoiXGYwODAifS5mYS1jaGFydC1saW5lOmJlZm9yZXtjb250ZW50OiJcZjIwMSJ9LmZhLWNoYXJ0LXBpZTpiZWZvcmV7Y29udGVudDoiXGYyMDAifS5mYS1jaGVjazpiZWZvcmV7Y29udGVudDoiXGYwMGMifS5mYS1jaGVjay1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMDU4In0uZmEtY2hlY2stc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjE0YSJ9LmZhLWNoZXNzOmJlZm9yZXtjb250ZW50OiJcZjQzOSJ9LmZhLWNoZXNzLWJpc2hvcDpiZWZvcmV7Y29udGVudDoiXGY0M2EifS5mYS1jaGVzcy1ib2FyZDpiZWZvcmV7Y29udGVudDoiXGY0M2MifS5mYS1jaGVzcy1raW5nOmJlZm9yZXtjb250ZW50OiJcZjQzZiJ9LmZhLWNoZXNzLWtuaWdodDpiZWZvcmV7Y29udGVudDoiXGY0NDEifS5mYS1jaGVzcy1wYXduOmJlZm9yZXtjb250ZW50OiJcZjQ0MyJ9LmZhLWNoZXNzLXF1ZWVuOmJlZm9yZXtjb250ZW50OiJcZjQ0NSJ9LmZhLWNoZXNzLXJvb2s6YmVmb3Jle2NvbnRlbnQ6IlxmNDQ3In0uZmEtY2hldnJvbi1jaXJjbGUtZG93bjpiZWZvcmV7Y29udGVudDoiXGYxM2EifS5mYS1jaGV2cm9uLWNpcmNsZS1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjEzNyJ9LmZhLWNoZXZyb24tY2lyY2xlLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjEzOCJ9LmZhLWNoZXZyb24tY2lyY2xlLXVwOmJlZm9yZXtjb250ZW50OiJcZjEzOSJ9LmZhLWNoZXZyb24tZG93bjpiZWZvcmV7Y29udGVudDoiXGYwNzgifS5mYS1jaGV2cm9uLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDUzIn0uZmEtY2hldnJvbi1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYwNTQifS5mYS1jaGV2cm9uLXVwOmJlZm9yZXtjb250ZW50OiJcZjA3NyJ9LmZhLWNoaWxkOmJlZm9yZXtjb250ZW50OiJcZjFhZSJ9LmZhLWNocm9tZTpiZWZvcmV7Y29udGVudDoiXGYyNjgifS5mYS1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTExIn0uZmEtY2lyY2xlLW5vdGNoOmJlZm9yZXtjb250ZW50OiJcZjFjZSJ9LmZhLWNsaXBib2FyZDpiZWZvcmV7Y29udGVudDoiXGYzMjgifS5mYS1jbG9jazpiZWZvcmV7Y29udGVudDoiXGYwMTcifS5mYS1jbG9uZTpiZWZvcmV7Y29udGVudDoiXGYyNGQifS5mYS1jbG9zZWQtY2FwdGlvbmluZzpiZWZvcmV7Y29udGVudDoiXGYyMGEifS5mYS1jbG91ZDpiZWZvcmV7Y29udGVudDoiXGYwYzIifS5mYS1jbG91ZC1kb3dubG9hZC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzgxIn0uZmEtY2xvdWQtdXBsb2FkLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzODIifS5mYS1jbG91ZHNjYWxlOmJlZm9yZXtjb250ZW50OiJcZjM4MyJ9LmZhLWNsb3Vkc21pdGg6YmVmb3Jle2NvbnRlbnQ6IlxmMzg0In0uZmEtY2xvdWR2ZXJzaWZ5OmJlZm9yZXtjb250ZW50OiJcZjM4NSJ9LmZhLWNvZGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTIxIn0uZmEtY29kZS1icmFuY2g6YmVmb3Jle2NvbnRlbnQ6IlxmMTI2In0uZmEtY29kZXBlbjpiZWZvcmV7Y29udGVudDoiXGYxY2IifS5mYS1jb2RpZXBpZTpiZWZvcmV7Y29udGVudDoiXGYyODQifS5mYS1jb2ZmZWU6YmVmb3Jle2NvbnRlbnQ6IlxmMGY0In0uZmEtY29nOmJlZm9yZXtjb250ZW50OiJcZjAxMyJ9LmZhLWNvZ3M6YmVmb3Jle2NvbnRlbnQ6IlxmMDg1In0uZmEtZ2VhcnM6YmVmb3Jle2NvbnRlbnQ6IlxmMDg1In0uZmEtY29sdW1uczpiZWZvcmV7Y29udGVudDoiXGYwZGIifS5mYS1jb21tZW50OmJlZm9yZXtjb250ZW50OiJcZjA3NSJ9LmZhLWNvbW1lbnQtYWx0OmJlZm9yZXtjb250ZW50OiJcZjI3YSJ9LmZhLWNvbW1lbnRzOmJlZm9yZXtjb250ZW50OiJcZjA4NiJ9LmZhLWNvbXBhc3M6YmVmb3Jle2NvbnRlbnQ6IlxmMTRlIn0uZmEtY29tcHJlc3M6YmVmb3Jle2NvbnRlbnQ6IlxmMDY2In0uZmEtY29ubmVjdGRldmVsb3A6YmVmb3Jle2NvbnRlbnQ6IlxmMjBlIn0uZmEtY29udGFvOmJlZm9yZXtjb250ZW50OiJcZjI2ZCJ9LmZhLWNvcHk6YmVmb3Jle2NvbnRlbnQ6IlxmMGM1In0uZmEtY29weXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjFmOSJ9LmZhLWNwYW5lbDpiZWZvcmV7Y29udGVudDoiXGYzODgifS5mYS1jcmVhdGl2ZS1jb21tb25zOmJlZm9yZXtjb250ZW50OiJcZjI1ZSJ9LmZhLWNyZWRpdC1jYXJkOmJlZm9yZXtjb250ZW50OiJcZjA5ZCJ9LmZhLWNyb3A6YmVmb3Jle2NvbnRlbnQ6IlxmMTI1In0uZmEtY3Jvc3NoYWlyczpiZWZvcmV7Y29udGVudDoiXGYwNWIifS5mYS1jc3MzOmJlZm9yZXtjb250ZW50OiJcZjEzYyJ9LmZhLWNzczMtYWx0OmJlZm9yZXtjb250ZW50OiJcZjM4YiJ9LmZhLWN1YmU6YmVmb3Jle2NvbnRlbnQ6IlxmMWIyIn0uZmEtY3ViZXM6YmVmb3Jle2NvbnRlbnQ6IlxmMWIzIn0uZmEtY3V0OmJlZm9yZXtjb250ZW50OiJcZjBjNCJ9LmZhLWN1dHRsZWZpc2g6YmVmb3Jle2NvbnRlbnQ6IlxmMzhjIn0uZmEtZC1hbmQtZDpiZWZvcmV7Y29udGVudDoiXGYzOGQifS5mYS1kYXNoY3ViZTpiZWZvcmV7Y29udGVudDoiXGYyMTAifS5mYS1kYXRhYmFzZTpiZWZvcmV7Y29udGVudDoiXGYxYzAifS5mYS1kZWFmOmJlZm9yZXtjb250ZW50OiJcZjJhNCJ9LmZhLWRlbGljaW91czpiZWZvcmV7Y29udGVudDoiXGYxYTUifS5mYS1kZXBsb3lkb2c6YmVmb3Jle2NvbnRlbnQ6IlxmMzhlIn0uZmEtZGVza3BybzpiZWZvcmV7Y29udGVudDoiXGYzOGYifS5mYS1kZXNrdG9wOmJlZm9yZXtjb250ZW50OiJcZjEwOCJ9LmZhLWRldmlhbnRhcnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWJkIn0uZmEtZGlnZzpiZWZvcmV7Y29udGVudDoiXGYxYTYifS5mYS1kaWdpdGFsLW9jZWFuOmJlZm9yZXtjb250ZW50OiJcZjM5MSJ9LmZhLWRpc2NvcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzkyIn0uZmEtZGlzY291cnNlOmJlZm9yZXtjb250ZW50OiJcZjM5MyJ9LmZhLWRvY2h1YjpiZWZvcmV7Y29udGVudDoiXGYzOTQifS5mYS1kb2NrZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMzk1In0uZmEtZG9sbGFyLXNpZ246YmVmb3JlLC5mYS1kb2xsYXI6YmVmb3JlLC5mYS11c2Q6YmVmb3Jle2NvbnRlbnQ6IlxmMTU1In0uZmEtZG90LWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYxOTIifS5mYS1kb3dubG9hZDpiZWZvcmV7Y29udGVudDoiXGYwMTkifS5mYS1kcmFmdDJkaWdpdGFsOmJlZm9yZXtjb250ZW50OiJcZjM5NiJ9LmZhLWRyaWJiYmxlOmJlZm9yZXtjb250ZW50OiJcZjE3ZCJ9LmZhLWRyaWJiYmxlLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYzOTcifS5mYS1kcm9wYm94OmJlZm9yZXtjb250ZW50OiJcZjE2YiJ9LmZhLWRydXBhbDpiZWZvcmV7Y29udGVudDoiXGYxYTkifS5mYS1keWFsb2c6YmVmb3Jle2NvbnRlbnQ6IlxmMzk5In0uZmEtZWFybHliaXJkczpiZWZvcmV7Y29udGVudDoiXGYzOWEifS5mYS1lZGdlOmJlZm9yZXtjb250ZW50OiJcZjI4MiJ9LmZhLWVkaXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDQ0In0uZmEtZWplY3Q6YmVmb3Jle2NvbnRlbnQ6IlxmMDUyIn0uZmEtZWxlbWVudG9yOmJlZm9yZXtjb250ZW50OiJcZjQzMCJ9LmZhLWVsbGlwc2lzLWg6YmVmb3Jle2NvbnRlbnQ6IlxmMTQxIn0uZmEtZWxsaXBzaXMtdjpiZWZvcmV7Y29udGVudDoiXGYxNDIifS5mYS1lbWJlcjpiZWZvcmV7Y29udGVudDoiXGY0MjMifS5mYS1lbXBpcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMWQxIn0uZmEtZW52ZWxvcGU6YmVmb3Jle2NvbnRlbnQ6IlxmMGUwIn0uZmEtZW52ZWxvcGUtb3BlbjpiZWZvcmV7Y29udGVudDoiXGYyYjYifS5mYS1lbnZlbG9wZS1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTk5In0uZmEtZW52aXJhOmJlZm9yZXtjb250ZW50OiJcZjI5OSJ9LmZhLWVyYXNlcjpiZWZvcmV7Y29udGVudDoiXGYxMmQifS5mYS1lcmxhbmc6YmVmb3Jle2NvbnRlbnQ6IlxmMzlkIn0uZmEtZXRoZXJldW06YmVmb3Jle2NvbnRlbnQ6IlxmNDJlIn0uZmEtZXRzeTpiZWZvcmV7Y29udGVudDoiXGYyZDcifS5mYS1ldXJvLXNpZ246YmVmb3Jle2NvbnRlbnQ6IlxmMTUzIn0uZmEtZXhjaGFuZ2UtYWx0OmJlZm9yZXtjb250ZW50OiJcZjM2MiJ9LmZhLWV4Y2xhbWF0aW9uOmJlZm9yZXtjb250ZW50OiJcZjEyYSJ9LmZhLWV4Y2xhbWF0aW9uLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYwNmEifS5mYS1leGNsYW1hdGlvbi10cmlhbmdsZTpiZWZvcmV7Y29udGVudDoiXGYwNzEifS5mYS1leHBhbmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDY1In0uZmEtZXhwYW5kLWFycm93cy1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMzFlIn0uZmEtZXhwZWRpdGVkc3NsOmJlZm9yZXtjb250ZW50OiJcZjIzZSJ9LmZhLWV4dGVybmFsLWxpbmstYWx0OmJlZm9yZXtjb250ZW50OiJcZjM1ZCJ9LmZhLWV4dGVybmFsLWxpbmstc3F1YXJlLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzNjAifS5mYS1leWU6YmVmb3Jle2NvbnRlbnQ6IlxmMDZlIn0uZmEtZXllLWRyb3BwZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMWZiIn0uZmEtZXllLXNsYXNoOmJlZm9yZXtjb250ZW50OiJcZjA3MCJ9LmZhLWZhY2Vib29rOmJlZm9yZXtjb250ZW50OiJcZjA5YSJ9LmZhLWZhY2Vib29rLWY6YmVmb3Jle2NvbnRlbnQ6IlxmMzllIn0uZmEtZmFjZWJvb2stbWVzc2VuZ2VyOmJlZm9yZXtjb250ZW50OiJcZjM5ZiJ9LmZhLWZhY2Vib29rLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYwODIifS5mYS1mYXN0LWJhY2t3YXJkOmJlZm9yZXtjb250ZW50OiJcZjA0OSJ9LmZhLWZhc3QtZm9yd2FyZDpiZWZvcmV7Y29udGVudDoiXGYwNTAifS5mYS1mYXg6YmVmb3Jle2NvbnRlbnQ6IlxmMWFjIn0uZmEtZmVtYWxlOmJlZm9yZXtjb250ZW50OiJcZjE4MiJ9LmZhLWZpZ2h0ZXItamV0OmJlZm9yZXtjb250ZW50OiJcZjBmYiJ9LmZhLWZpbGU6YmVmb3JlLC5mYS1maWxlLW86YmVmb3Jle2NvbnRlbnQ6IlxmMTViIn0uZmEtZmlsZS1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTVjIn0uZmEtZmlsZS1hcmNoaXZlOmJlZm9yZXtjb250ZW50OiJcZjFjNiJ9LmZhLWZpbGUtYXVkaW86YmVmb3Jle2NvbnRlbnQ6IlxmMWM3In0uZmEtZmlsZS1jb2RlOmJlZm9yZXtjb250ZW50OiJcZjFjOSJ9LmZhLWZpbGUtZXhjZWw6YmVmb3Jle2NvbnRlbnQ6IlxmMWMzIn0uZmEtZmlsZS1pbWFnZTpiZWZvcmV7Y29udGVudDoiXGYxYzUifS5mYS1maWxlLXBkZjpiZWZvcmV7Y29udGVudDoiXGYxYzEifS5mYS1maWxlLXBvd2VycG9pbnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWM0In0uZmEtZmlsZS12aWRlbzpiZWZvcmV7Y29udGVudDoiXGYxYzgifS5mYS1maWxlLXdvcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWMyIn0uZmEtZmlsbTpiZWZvcmV7Y29udGVudDoiXGYwMDgifS5mYS1maWx0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMGIwIn0uZmEtZmlyZTpiZWZvcmV7Y29udGVudDoiXGYwNmQifS5mYS1maXJlLWV4dGluZ3Vpc2hlcjpiZWZvcmV7Y29udGVudDoiXGYxMzQifS5mYS1maXJlZm94OmJlZm9yZXtjb250ZW50OiJcZjI2OSJ9LmZhLWZpcnN0LW9yZGVyOmJlZm9yZXtjb250ZW50OiJcZjJiMCJ9LmZhLWZpcnN0ZHJhZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2ExIn0uZmEtZmxhZzpiZWZvcmV7Y29udGVudDoiXGYwMjQifS5mYS1mbGFnLWNoZWNrZXJlZDpiZWZvcmV7Y29udGVudDoiXGYxMWUifS5mYS1mbGFzazpiZWZvcmV7Y29udGVudDoiXGYwYzMifS5mYS1mbGlja3I6YmVmb3Jle2NvbnRlbnQ6IlxmMTZlIn0uZmEtZmxpcGJvYXJkOmJlZm9yZXtjb250ZW50OiJcZjQ0ZCJ9LmZhLWZseTpiZWZvcmV7Y29udGVudDoiXGY0MTcifS5mYS1mb2xkZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMDdiIn0uZmEtZm9sZGVyLW9wZW46YmVmb3Jle2NvbnRlbnQ6IlxmMDdjIn0uZmEtZm9udDpiZWZvcmV7Y29udGVudDoiXGYwMzEifS5mYS1mb250LWF3ZXNvbWU6YmVmb3Jle2NvbnRlbnQ6IlxmMmI0In0uZmEtZm9udC1hd2Vzb21lLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzNWMifS5mYS1mb250LWF3ZXNvbWUtZmxhZzpiZWZvcmV7Y29udGVudDoiXGY0MjUifS5mYS1mb250aWNvbnM6YmVmb3Jle2NvbnRlbnQ6IlxmMjgwIn0uZmEtZm9udGljb25zLWZpOmJlZm9yZXtjb250ZW50OiJcZjNhMiJ9LmZhLWZvb3RiYWxsLWJhbGw6YmVmb3Jle2NvbnRlbnQ6IlxmNDRlIn0uZmEtZm9ydC1hd2Vzb21lOmJlZm9yZXtjb250ZW50OiJcZjI4NiJ9LmZhLWZvcnQtYXdlc29tZS1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2EzIn0uZmEtZm9ydW1iZWU6YmVmb3Jle2NvbnRlbnQ6IlxmMjExIn0uZmEtZm9yd2FyZDpiZWZvcmV7Y29udGVudDoiXGYwNGUifS5mYS1mb3Vyc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjE4MCJ9LmZhLWZyZWUtY29kZS1jYW1wOmJlZm9yZXtjb250ZW50OiJcZjJjNSJ9LmZhLWZyZWVic2Q6YmVmb3Jle2NvbnRlbnQ6IlxmM2E0In0uZmEtZnJvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTE5In0uZmEtZnV0Ym9sOmJlZm9yZXtjb250ZW50OiJcZjFlMyJ9LmZhLWdhbWVwYWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTFiIn0uZmEtZ2F2ZWw6YmVmb3Jle2NvbnRlbnQ6IlxmMGUzIn0uZmEtZ2VtOmJlZm9yZXtjb250ZW50OiJcZjNhNSJ9LmZhLWdlbmRlcmxlc3M6YmVmb3Jle2NvbnRlbnQ6IlxmMjJkIn0uZmEtZ2V0LXBvY2tldDpiZWZvcmV7Y29udGVudDoiXGYyNjUifS5mYS1nZzpiZWZvcmV7Y29udGVudDoiXGYyNjAifS5mYS1nZy1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMjYxIn0uZmEtZ2lmdDpiZWZvcmV7Y29udGVudDoiXGYwNmIifS5mYS1naXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWQzIn0uZmEtZ2l0LXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxZDIifS5mYS1naXRodWI6YmVmb3Jle2NvbnRlbnQ6IlxmMDliIn0uZmEtZ2l0aHViLWFsdDpiZWZvcmV7Y29udGVudDoiXGYxMTMifS5mYS1naXRodWItc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjA5MiJ9LmZhLWdpdGtyYWtlbjpiZWZvcmV7Y29udGVudDoiXGYzYTYifS5mYS1naXRsYWI6YmVmb3Jle2NvbnRlbnQ6IlxmMjk2In0uZmEtZ2l0dGVyOmJlZm9yZXtjb250ZW50OiJcZjQyNiJ9LmZhLWdsYXNzLW1hcnRpbmk6YmVmb3Jle2NvbnRlbnQ6IlxmMDAwIn0uZmEtZ2xpZGU6YmVmb3Jle2NvbnRlbnQ6IlxmMmE1In0uZmEtZ2xpZGUtZzpiZWZvcmV7Y29udGVudDoiXGYyYTYifS5mYS1nbG9iZTpiZWZvcmV7Y29udGVudDoiXGYwYWMifS5mYS1nb2ZvcmU6YmVmb3Jle2NvbnRlbnQ6IlxmM2E3In0uZmEtZ29sZi1iYWxsOmJlZm9yZXtjb250ZW50OiJcZjQ1MCJ9LmZhLWdvb2RyZWFkczpiZWZvcmV7Y29udGVudDoiXGYzYTgifS5mYS1nb29kcmVhZHMtZzpiZWZvcmV7Y29udGVudDoiXGYzYTkifS5mYS1nb29nbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMWEwIn0uZmEtZ29vZ2xlLWRyaXZlOmJlZm9yZXtjb250ZW50OiJcZjNhYSJ9LmZhLWdvb2dsZS1wbGF5OmJlZm9yZXtjb250ZW50OiJcZjNhYiJ9LmZhLWdvb2dsZS1wbHVzOmJlZm9yZXtjb250ZW50OiJcZjJiMyJ9LmZhLWdvb2dsZS1wbHVzLWc6YmVmb3Jle2NvbnRlbnQ6IlxmMGQ1In0uZmEtZ29vZ2xlLXBsdXMtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjBkNCJ9LmZhLWdvb2dsZS13YWxsZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWVlIn0uZmEtZ3JhZHVhdGlvbi1jYXA6YmVmb3Jle2NvbnRlbnQ6IlxmMTlkIn0uZmEtZ3JhdGlwYXk6YmVmb3Jle2NvbnRlbnQ6IlxmMTg0In0uZmEtZ3JhdjpiZWZvcmV7Y29udGVudDoiXGYyZDYifS5mYS1ncmlwZmlyZTpiZWZvcmV7Y29udGVudDoiXGYzYWMifS5mYS1ncnVudDpiZWZvcmV7Y29udGVudDoiXGYzYWQifS5mYS1ndWxwOmJlZm9yZXtjb250ZW50OiJcZjNhZSJ9LmZhLWgtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjBmZCJ9LmZhLWhhY2tlci1uZXdzOmJlZm9yZXtjb250ZW50OiJcZjFkNCJ9LmZhLWhhY2tlci1uZXdzLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYzYWYifS5mYS1oYW5kLWxpemFyZDpiZWZvcmV7Y29udGVudDoiXGYyNTgifS5mYS1oYW5kLXBhcGVyOmJlZm9yZXtjb250ZW50OiJcZjI1NiJ9LmZhLWhhbmQtcGVhY2U6YmVmb3Jle2NvbnRlbnQ6IlxmMjViIn0uZmEtaGFuZC1wb2ludC1kb3duOmJlZm9yZXtjb250ZW50OiJcZjBhNyJ9LmZhLWhhbmQtcG9pbnQtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYwYTUifS5mYS1oYW5kLXBvaW50LXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjBhNCJ9LmZhLWhhbmQtcG9pbnQtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMGE2In0uZmEtaGFuZC1wb2ludGVyOmJlZm9yZSwuZmEtaGFuZC1wb2ludGVyLW86YmVmb3Jle2NvbnRlbnQ6IlxmMjVhIn0uZmEtaGFuZC1yb2NrOmJlZm9yZXtjb250ZW50OiJcZjI1NSJ9LmZhLWhhbmQtc2Npc3NvcnM6YmVmb3Jle2NvbnRlbnQ6IlxmMjU3In0uZmEtaGFuZC1zcG9jazpiZWZvcmV7Y29udGVudDoiXGYyNTkifS5mYS1oYW5kc2hha2U6YmVmb3Jle2NvbnRlbnQ6IlxmMmI1In0uZmEtaGFzaHRhZzpiZWZvcmV7Y29udGVudDoiXGYyOTIifS5mYS1oZGQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGEwIn0uZmEtaGVhZGluZzpiZWZvcmV7Y29udGVudDoiXGYxZGMifS5mYS1oZWFkcGhvbmVzOmJlZm9yZXtjb250ZW50OiJcZjAyNSJ9LmZhLWhlYXJ0OmJlZm9yZXtjb250ZW50OiJcZjAwNCJ9LmZhLWhlYXJ0YmVhdDpiZWZvcmV7Y29udGVudDoiXGYyMWUifS5mYS1oaXBzOmJlZm9yZXtjb250ZW50OiJcZjQ1MiJ9LmZhLWhpcmUtYS1oZWxwZXI6YmVmb3Jle2NvbnRlbnQ6IlxmM2IwIn0uZmEtaGlzdG9yeTpiZWZvcmV7Y29udGVudDoiXGYxZGEifS5mYS1ob2NrZXktcHVjazpiZWZvcmV7Y29udGVudDoiXGY0NTMifS5mYS1ob21lOmJlZm9yZXtjb250ZW50OiJcZjAxNSJ9LmZhLWhvb2xpOmJlZm9yZXtjb250ZW50OiJcZjQyNyJ9LmZhLWhvc3BpdGFsOmJlZm9yZXtjb250ZW50OiJcZjBmOCJ9LmZhLWhvdGphcjpiZWZvcmV7Y29udGVudDoiXGYzYjEifS5mYS1ob3VyZ2xhc3M6YmVmb3Jle2NvbnRlbnQ6IlxmMjU0In0uZmEtaG91cmdsYXNzLWVuZDpiZWZvcmV7Y29udGVudDoiXGYyNTMifS5mYS1ob3VyZ2xhc3MtaGFsZjpiZWZvcmV7Y29udGVudDoiXGYyNTIifS5mYS1ob3VyZ2xhc3Mtc3RhcnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjUxIn0uZmEtaG91eno6YmVmb3Jle2NvbnRlbnQ6IlxmMjdjIn0uZmEtaHRtbDU6YmVmb3Jle2NvbnRlbnQ6IlxmMTNiIn0uZmEtaHVic3BvdDpiZWZvcmV7Y29udGVudDoiXGYzYjIifS5mYS1pLWN1cnNvcjpiZWZvcmV7Y29udGVudDoiXGYyNDYifS5mYS1pZC1iYWRnZTpiZWZvcmV7Y29udGVudDoiXGYyYzEifS5mYS1pZC1jYXJkOmJlZm9yZXtjb250ZW50OiJcZjJjMiJ9LmZhLWltYWdlOmJlZm9yZXtjb250ZW50OiJcZjAzZSJ9LmZhLWltYWdlczpiZWZvcmV7Y29udGVudDoiXGYzMDIifS5mYS1pbWRiOmJlZm9yZXtjb250ZW50OiJcZjJkOCJ9LmZhLWluYm94OmJlZm9yZXtjb250ZW50OiJcZjAxYyJ9LmZhLWluZGVudDpiZWZvcmV7Y29udGVudDoiXGYwM2MifS5mYS1pbmR1c3RyeTpiZWZvcmV7Y29udGVudDoiXGYyNzUifS5mYS1pbmZvOmJlZm9yZXtjb250ZW50OiJcZjEyOSJ9LmZhLWluZm8tY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjA1YSJ9LmZhLWluc3RhZ3JhbTpiZWZvcmV7Y29udGVudDoiXGYxNmQifS5mYS1pbnRlcm5ldC1leHBsb3JlcjpiZWZvcmV7Y29udGVudDoiXGYyNmIifS5mYS1pb3hob3N0OmJlZm9yZXtjb250ZW50OiJcZjIwOCJ9LmZhLWl0YWxpYzpiZWZvcmV7Y29udGVudDoiXGYwMzMifS5mYS1pdHVuZXM6YmVmb3Jle2NvbnRlbnQ6IlxmM2I0In0uZmEtaXR1bmVzLW5vdGU6YmVmb3Jle2NvbnRlbnQ6IlxmM2I1In0uZmEtamVua2luczpiZWZvcmV7Y29udGVudDoiXGYzYjYifS5mYS1qb2dldDpiZWZvcmV7Y29udGVudDoiXGYzYjcifS5mYS1qb29tbGE6YmVmb3Jle2NvbnRlbnQ6IlxmMWFhIn0uZmEtanM6YmVmb3Jle2NvbnRlbnQ6IlxmM2I4In0uZmEtanMtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjNiOSJ9LmZhLWpzZmlkZGxlOmJlZm9yZXtjb250ZW50OiJcZjFjYyJ9LmZhLWtleTpiZWZvcmV7Y29udGVudDoiXGYwODQifS5mYS1rZXlib2FyZDpiZWZvcmV7Y29udGVudDoiXGYxMWMifS5mYS1rZXljZG46YmVmb3Jle2NvbnRlbnQ6IlxmM2JhIn0uZmEta2lja3N0YXJ0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmM2JiIn0uZmEta2lja3N0YXJ0ZXItazpiZWZvcmV7Y29udGVudDoiXGYzYmMifS5mYS1rb3J2dWU6YmVmb3Jle2NvbnRlbnQ6IlxmNDJmIn0uZmEtbGFuZ3VhZ2U6YmVmb3Jle2NvbnRlbnQ6IlxmMWFiIn0uZmEtbGFwdG9wOmJlZm9yZXtjb250ZW50OiJcZjEwOSJ9LmZhLWxhcmF2ZWw6YmVmb3Jle2NvbnRlbnQ6IlxmM2JkIn0uZmEtbGFzdGZtOmJlZm9yZXtjb250ZW50OiJcZjIwMiJ9LmZhLWxhc3RmbS1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMjAzIn0uZmEtbGVhZjpiZWZvcmV7Y29udGVudDoiXGYwNmMifS5mYS1sZWFucHViOmJlZm9yZXtjb250ZW50OiJcZjIxMiJ9LmZhLWxlbW9uOmJlZm9yZXtjb250ZW50OiJcZjA5NCJ9LmZhLWxlc3M6YmVmb3Jle2NvbnRlbnQ6IlxmNDFkIn0uZmEtbGV2ZWwtZG93bi1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2JlIn0uZmEtbGV2ZWwtdXAtYWx0OmJlZm9yZXtjb250ZW50OiJcZjNiZiJ9LmZhLWxpZmUtcmluZzpiZWZvcmV7Y29udGVudDoiXGYxY2QifS5mYS1saWdodGJ1bGI6YmVmb3Jle2NvbnRlbnQ6IlxmMGViIn0uZmEtbGluZTpiZWZvcmV7Y29udGVudDoiXGYzYzAifS5mYS1saW5rOmJlZm9yZXtjb250ZW50OiJcZjBjMSJ9LmZhLWxpbmtlZGluOmJlZm9yZXtjb250ZW50OiJcZjA4YyJ9LmZhLWxpbmtlZGluLWluOmJlZm9yZXtjb250ZW50OiJcZjBlMSJ9LmZhLWxpbm9kZTpiZWZvcmV7Y29udGVudDoiXGYyYjgifS5mYS1saW51eDpiZWZvcmV7Y29udGVudDoiXGYxN2MifS5mYS1saXJhLXNpZ246YmVmb3Jle2NvbnRlbnQ6IlxmMTk1In0uZmEtbGlzdDpiZWZvcmV7Y29udGVudDoiXGYwM2EifS5mYS1saXN0LWFsdDpiZWZvcmV7Y29udGVudDoiXGYwMjIifS5mYS1saXN0LW9sOmJlZm9yZXtjb250ZW50OiJcZjBjYiJ9LmZhLWxpc3QtdWw6YmVmb3Jle2NvbnRlbnQ6IlxmMGNhIn0uZmEtbG9jYXRpb24tYXJyb3c6YmVmb3Jle2NvbnRlbnQ6IlxmMTI0In0uZmEtbG9jazpiZWZvcmV7Y29udGVudDoiXGYwMjMifS5mYS1sb2NrLW9wZW46YmVmb3Jle2NvbnRlbnQ6IlxmM2MxIn0uZmEtbG9uZy1hcnJvdy1hbHQtZG93bjpiZWZvcmV7Y29udGVudDoiXGYzMDkifS5mYS1sb25nLWFycm93LWFsdC1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjMwYSJ9LmZhLWxvbmctYXJyb3ctYWx0LXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjMwYiJ9LmZhLWxvbmctYXJyb3ctYWx0LXVwOmJlZm9yZXtjb250ZW50OiJcZjMwYyJ9LmZhLWxvdy12aXNpb246YmVmb3Jle2NvbnRlbnQ6IlxmMmE4In0uZmEtbHlmdDpiZWZvcmV7Y29udGVudDoiXGYzYzMifS5mYS1tYWdlbnRvOmJlZm9yZXtjb250ZW50OiJcZjNjNCJ9LmZhLW1hZ2ljOmJlZm9yZXtjb250ZW50OiJcZjBkMCJ9LmZhLW1hZ25ldDpiZWZvcmV7Y29udGVudDoiXGYwNzYifS5mYS1tYWxlOmJlZm9yZXtjb250ZW50OiJcZjE4MyJ9LmZhLW1hcDpiZWZvcmV7Y29udGVudDoiXGYyNzkifS5mYS1tYXAtbWFya2VyOmJlZm9yZXtjb250ZW50OiJcZjA0MSJ9LmZhLW1hcC1tYXJrZXItYWx0OmJlZm9yZXtjb250ZW50OiJcZjNjNSJ9LmZhLW1hcC1waW46YmVmb3Jle2NvbnRlbnQ6IlxmMjc2In0uZmEtbWFwLXNpZ25zOmJlZm9yZXtjb250ZW50OiJcZjI3NyJ9LmZhLW1hcnM6YmVmb3Jle2NvbnRlbnQ6IlxmMjIyIn0uZmEtbWFycy1kb3VibGU6YmVmb3Jle2NvbnRlbnQ6IlxmMjI3In0uZmEtbWFycy1zdHJva2U6YmVmb3Jle2NvbnRlbnQ6IlxmMjI5In0uZmEtbWFycy1zdHJva2UtaDpiZWZvcmV7Y29udGVudDoiXGYyMmIifS5mYS1tYXJzLXN0cm9rZS12OmJlZm9yZXtjb250ZW50OiJcZjIyYSJ9LmZhLW1heGNkbjpiZWZvcmV7Y29udGVudDoiXGYxMzYifS5mYS1tZWRhcHBzOmJlZm9yZXtjb250ZW50OiJcZjNjNiJ9LmZhLW1lZGl1bTpiZWZvcmV7Y29udGVudDoiXGYyM2EifS5mYS1tZWRpdW0tbTpiZWZvcmV7Y29udGVudDoiXGYzYzcifS5mYS1tZWRraXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMGZhIn0uZmEtbWVkcnQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2M4In0uZmEtbWVldHVwOmJlZm9yZXtjb250ZW50OiJcZjJlMCJ9LmZhLW1laDpiZWZvcmV7Y29udGVudDoiXGYxMWEifS5mYS1tZXJjdXJ5OmJlZm9yZXtjb250ZW50OiJcZjIyMyJ9LmZhLW1pY3JvY2hpcDpiZWZvcmV7Y29udGVudDoiXGYyZGIifS5mYS1taWNyb3Bob25lOmJlZm9yZXtjb250ZW50OiJcZjEzMCJ9LmZhLW1pY3JvcGhvbmUtc2xhc2g6YmVmb3Jle2NvbnRlbnQ6IlxmMTMxIn0uZmEtbWljcm9zb2Z0OmJlZm9yZXtjb250ZW50OiJcZjNjYSJ9LmZhLW1pbnVzOmJlZm9yZXtjb250ZW50OiJcZjA2OCJ9LmZhLW1pbnVzLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYwNTYifS5mYS1taW51cy1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTQ2In0uZmEtbWl4OmJlZm9yZXtjb250ZW50OiJcZjNjYiJ9LmZhLW1peGNsb3VkOmJlZm9yZXtjb250ZW50OiJcZjI4OSJ9LmZhLW1penVuaTpiZWZvcmV7Y29udGVudDoiXGYzY2MifS5mYS1tb2JpbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTBiIn0uZmEtbW9iaWxlLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzY2QifS5mYS1tb2R4OmJlZm9yZXtjb250ZW50OiJcZjI4NSJ9LmZhLW1vbmVybzpiZWZvcmV7Y29udGVudDoiXGYzZDAifS5mYS1tb25leS1iaWxsLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzZDEifS5mYS1tb29uOmJlZm9yZXtjb250ZW50OiJcZjE4NiJ9LmZhLW1vdG9yY3ljbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMjFjIn0uZmEtbW91c2UtcG9pbnRlcjpiZWZvcmV7Y29udGVudDoiXGYyNDUifS5mYS1tdXNpYzpiZWZvcmV7Y29udGVudDoiXGYwMDEifS5mYS1uYXBzdGVyOmJlZm9yZXtjb250ZW50OiJcZjNkMiJ9LmZhLW5ldXRlcjpiZWZvcmV7Y29udGVudDoiXGYyMmMifS5mYS1uZXdzcGFwZXI6YmVmb3JlLC5mYS1uZXdzcGFwZXItbzpiZWZvcmV7Y29udGVudDoiXGYxZWEifS5mYS1uaW50ZW5kby1zd2l0Y2g6YmVmb3Jle2NvbnRlbnQ6IlxmNDE4In0uZmEtbm9kZTpiZWZvcmV7Y29udGVudDoiXGY0MTkifS5mYS1ub2RlLWpzOmJlZm9yZXtjb250ZW50OiJcZjNkMyJ9LmZhLW5wbTpiZWZvcmV7Y29udGVudDoiXGYzZDQifS5mYS1uczg6YmVmb3Jle2NvbnRlbnQ6IlxmM2Q1In0uZmEtbnV0cml0aW9uaXg6YmVmb3Jle2NvbnRlbnQ6IlxmM2Q2In0uZmEtb2JqZWN0LWdyb3VwOmJlZm9yZXtjb250ZW50OiJcZjI0NyJ9LmZhLW9iamVjdC11bmdyb3VwOmJlZm9yZXtjb250ZW50OiJcZjI0OCJ9LmZhLW9kbm9rbGFzc25pa2k6YmVmb3Jle2NvbnRlbnQ6IlxmMjYzIn0uZmEtb2Rub2tsYXNzbmlraS1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMjY0In0uZmEtb3BlbmNhcnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjNkIn0uZmEtb3BlbmlkOmJlZm9yZXtjb250ZW50OiJcZjE5YiJ9LmZhLW9wZXJhOmJlZm9yZXtjb250ZW50OiJcZjI2YSJ9LmZhLW9wdGluLW1vbnN0ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMjNjIn0uZmEtb3NpOmJlZm9yZXtjb250ZW50OiJcZjQxYSJ9LmZhLW91dGRlbnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDNiIn0uZmEtcGFnZTQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2Q3In0uZmEtcGFnZWxpbmVzOmJlZm9yZXtjb250ZW50OiJcZjE4YyJ9LmZhLXBhaW50LWJydXNoOmJlZm9yZXtjb250ZW50OiJcZjFmYyJ9LmZhLXBhbGZlZDpiZWZvcmV7Y29udGVudDoiXGYzZDgifS5mYS1wYXBlci1wbGFuZTpiZWZvcmV7Y29udGVudDoiXGYxZDgifS5mYS1wYXBlcmNsaXA6YmVmb3Jle2NvbnRlbnQ6IlxmMGM2In0uZmEtcGFyYWdyYXBoOmJlZm9yZXtjb250ZW50OiJcZjFkZCJ9LmZhLXBhc3RlOmJlZm9yZXtjb250ZW50OiJcZjBlYSJ9LmZhLXBhdHJlb246YmVmb3Jle2NvbnRlbnQ6IlxmM2Q5In0uZmEtcGF1c2U6YmVmb3Jle2NvbnRlbnQ6IlxmMDRjIn0uZmEtcGF1c2UtY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjI4YiJ9LmZhLXBhdzpiZWZvcmV7Y29udGVudDoiXGYxYjAifS5mYS1wYXlwYWw6YmVmb3Jle2NvbnRlbnQ6IlxmMWVkIn0uZmEtcGVuLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxNGIifS5mYS1wZW5jaWwtYWx0OmJlZm9yZXtjb250ZW50OiJcZjMwMyJ9LmZhLXBlcmNlbnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjk1In0uZmEtcGVyaXNjb3BlOmJlZm9yZXtjb250ZW50OiJcZjNkYSJ9LmZhLXBoYWJyaWNhdG9yOmJlZm9yZXtjb250ZW50OiJcZjNkYiJ9LmZhLXBob2VuaXgtZnJhbWV3b3JrOmJlZm9yZXtjb250ZW50OiJcZjNkYyJ9LmZhLXBob25lOmJlZm9yZXtjb250ZW50OiJcZjA5NSJ9LmZhLXBob25lLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYwOTgifS5mYS1waG9uZS12b2x1bWU6YmVmb3Jle2NvbnRlbnQ6IlxmMmEwIn0uZmEtcGhwOmJlZm9yZXtjb250ZW50OiJcZjQ1NyJ9LmZhLXBpZWQtcGlwZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMmFlIn0uZmEtcGllZC1waXBlci1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWE4In0uZmEtcGllZC1waXBlci1wcDpiZWZvcmV7Y29udGVudDoiXGYxYTcifS5mYS1waW50ZXJlc3Q6YmVmb3Jle2NvbnRlbnQ6IlxmMGQyIn0uZmEtcGludGVyZXN0LXA6YmVmb3Jle2NvbnRlbnQ6IlxmMjMxIn0uZmEtcGludGVyZXN0LXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYwZDMifS5mYS1wbGFuZTpiZWZvcmV7Y29udGVudDoiXGYwNzIifS5mYS1wbGF5OmJlZm9yZXtjb250ZW50OiJcZjA0YiJ9LmZhLXBsYXktY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjE0NCJ9LmZhLXBsYXlzdGF0aW9uOmJlZm9yZXtjb250ZW50OiJcZjNkZiJ9LmZhLXBsdWc6YmVmb3Jle2NvbnRlbnQ6IlxmMWU2In0uZmEtcGx1czpiZWZvcmV7Y29udGVudDoiXGYwNjcifS5mYS1wbHVzLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYwNTUifS5mYS1wbHVzLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYwZmUifS5mYS1wb2RjYXN0OmJlZm9yZXtjb250ZW50OiJcZjJjZSJ9LmZhLXBvdW5kLXNpZ246YmVmb3Jle2NvbnRlbnQ6IlxmMTU0In0uZmEtcG93ZXItb2ZmOmJlZm9yZXtjb250ZW50OiJcZjAxMSJ9LmZhLXByaW50OmJlZm9yZXtjb250ZW50OiJcZjAyZiJ9LmZhLXByb2R1Y3QtaHVudDpiZWZvcmV7Y29udGVudDoiXGYyODgifS5mYS1wdXNoZWQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2UxIn0uZmEtcHV6emxlLXBpZWNlOmJlZm9yZXtjb250ZW50OiJcZjEyZSJ9LmZhLXB5dGhvbjpiZWZvcmV7Y29udGVudDoiXGYzZTIifS5mYS1xcTpiZWZvcmV7Y29udGVudDoiXGYxZDYifS5mYS1xcmNvZGU6YmVmb3Jle2NvbnRlbnQ6IlxmMDI5In0uZmEtcXVlc3Rpb246YmVmb3Jle2NvbnRlbnQ6IlxmMTI4In0uZmEtcXVlc3Rpb24tY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjA1OSJ9LmZhLXF1aWRkaXRjaDpiZWZvcmV7Y29udGVudDoiXGY0NTgifS5mYS1xdWluc2NhcGU6YmVmb3Jle2NvbnRlbnQ6IlxmNDU5In0uZmEtcXVvcmE6YmVmb3Jle2NvbnRlbnQ6IlxmMmM0In0uZmEtcXVvdGUtbGVmdDpiZWZvcmV7Y29udGVudDoiXGYxMGQifS5mYS1xdW90ZS1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYxMGUifS5mYS1yYW5kb206YmVmb3Jle2NvbnRlbnQ6IlxmMDc0In0uZmEtcmF2ZWxyeTpiZWZvcmV7Y29udGVudDoiXGYyZDkifS5mYS1yZWFjdDpiZWZvcmV7Y29udGVudDoiXGY0MWIifS5mYS1yZWJlbDpiZWZvcmV7Y29udGVudDoiXGYxZDAifS5mYS1yZWN5Y2xlOmJlZm9yZXtjb250ZW50OiJcZjFiOCJ9LmZhLXJlZC1yaXZlcjpiZWZvcmV7Y29udGVudDoiXGYzZTMifS5mYS1yZWRkaXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWExIn0uZmEtcmVkZGl0LWFsaWVuOmJlZm9yZXtjb250ZW50OiJcZjI4MSJ9LmZhLXJlZGRpdC1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMWEyIn0uZmEtcmVkbzpiZWZvcmV7Y29udGVudDoiXGYwMWUifS5mYS1yZWRvLWFsdDpiZWZvcmV7Y29udGVudDoiXGYyZjkifS5mYS1yZWdpc3RlcmVkOmJlZm9yZXtjb250ZW50OiJcZjI1ZCJ9LmZhLXJlbmRhY3Q6YmVmb3Jle2NvbnRlbnQ6IlxmM2U0In0uZmEtcmVucmVuOmJlZm9yZXtjb250ZW50OiJcZjE4YiJ9LmZhLXJlcGx5OmJlZm9yZXtjb250ZW50OiJcZjNlNSJ9LmZhLXJlcGx5LWFsbDpiZWZvcmV7Y29udGVudDoiXGYxMjIifS5mYS1yZXBseWQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2U2In0uZmEtcmVzb2x2aW5nOmJlZm9yZXtjb250ZW50OiJcZjNlNyJ9LmZhLXJldHdlZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDc5In0uZmEtcm9hZDpiZWZvcmV7Y29udGVudDoiXGYwMTgifS5mYS1yb2NrZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTM1In0uZmEtcm9ja2V0Y2hhdDpiZWZvcmV7Y29udGVudDoiXGYzZTgifS5mYS1yb2Nrcm1zOmJlZm9yZXtjb250ZW50OiJcZjNlOSJ9LmZhLXJzczpiZWZvcmV7Y29udGVudDoiXGYwOWUifS5mYS1yc3Mtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjE0MyJ9LmZhLXJ1YmxlLXNpZ246YmVmb3Jle2NvbnRlbnQ6IlxmMTU4In0uZmEtcnVwZWUtc2lnbjpiZWZvcmV7Y29udGVudDoiXGYxNTYifS5mYS1zYWZhcmk6YmVmb3Jle2NvbnRlbnQ6IlxmMjY3In0uZmEtc2FzczpiZWZvcmV7Y29udGVudDoiXGY0MWUifS5mYS1zYXZlOmJlZm9yZXtjb250ZW50OiJcZjBjNyJ9LmZhLXNjaGxpeDpiZWZvcmV7Y29udGVudDoiXGYzZWEifS5mYS1zY3JpYmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjhhIn0uZmEtc2VhcmNoOmJlZm9yZXtjb250ZW50OiJcZjAwMiJ9LmZhLXNlYXJjaC1taW51czpiZWZvcmV7Y29udGVudDoiXGYwMTAifS5mYS1zZWFyY2gtcGx1czpiZWZvcmV7Y29udGVudDoiXGYwMGUifS5mYS1zZWFyY2hlbmdpbjpiZWZvcmV7Y29udGVudDoiXGYzZWIifS5mYS1zZWxsY2FzdDpiZWZvcmV7Y29udGVudDoiXGYyZGEifS5mYS1zZWxsc3k6YmVmb3Jle2NvbnRlbnQ6IlxmMjEzIn0uZmEtc2VydmVyOmJlZm9yZXtjb250ZW50OiJcZjIzMyJ9LmZhLXNlcnZpY2VzdGFjazpiZWZvcmV7Y29udGVudDoiXGYzZWMifS5mYS1zaGFyZTpiZWZvcmV7Y29udGVudDoiXGYwNjQifS5mYS1zaGFyZS1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWUwIn0uZmEtc2hhcmUtYWx0LXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxZTEifS5mYS1zaGFyZS1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTRkIn0uZmEtc2hla2VsLXNpZ246YmVmb3Jle2NvbnRlbnQ6IlxmMjBiIn0uZmEtc2hpZWxkLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzZWQifS5mYS1zaGlwOmJlZm9yZXtjb250ZW50OiJcZjIxYSJ9LmZhLXNoaXJ0c2luYnVsazpiZWZvcmV7Y29udGVudDoiXGYyMTQifS5mYS1zaG9wcGluZy1iYWc6YmVmb3Jle2NvbnRlbnQ6IlxmMjkwIn0uZmEtc2hvcHBpbmctYmFza2V0OmJlZm9yZXtjb250ZW50OiJcZjI5MSJ9LmZhLXNob3BwaW5nLWNhcnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDdhIn0uZmEtc2hvd2VyOmJlZm9yZXtjb250ZW50OiJcZjJjYyJ9LmZhLXNpZ24taW4tYWx0OmJlZm9yZXtjb250ZW50OiJcZjJmNiJ9LmZhLXNpZ24tbGFuZ3VhZ2U6YmVmb3Jle2NvbnRlbnQ6IlxmMmE3In0uZmEtc2lnbi1vdXQtYWx0OmJlZm9yZXtjb250ZW50OiJcZjJmNSJ9LmZhLXNpZ25hbDpiZWZvcmV7Y29udGVudDoiXGYwMTIifS5mYS1zaW1wbHlidWlsdDpiZWZvcmV7Y29udGVudDoiXGYyMTUifS5mYS1zaXN0cml4OmJlZm9yZXtjb250ZW50OiJcZjNlZSJ9LmZhLXNpdGVtYXA6YmVmb3Jle2NvbnRlbnQ6IlxmMGU4In0uZmEtc2t5YXRsYXM6YmVmb3Jle2NvbnRlbnQ6IlxmMjE2In0uZmEtc2t5cGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTdlIn0uZmEtc2xhY2s6YmVmb3Jle2NvbnRlbnQ6IlxmMTk4In0uZmEtc2xhY2staGFzaDpiZWZvcmV7Y29udGVudDoiXGYzZWYifS5mYS1zbGlkZXJzLWg6YmVmb3Jle2NvbnRlbnQ6IlxmMWRlIn0uZmEtc2xpZGVzaGFyZTpiZWZvcmV7Y29udGVudDoiXGYxZTcifS5mYS1zbWlsZTpiZWZvcmUsLmZhLXNtaWxlLW86YmVmb3Jle2NvbnRlbnQ6IlxmMTE4In0uZmEtc25hcGNoYXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMmFiIn0uZmEtc25hcGNoYXQtZ2hvc3Q6YmVmb3Jle2NvbnRlbnQ6IlxmMmFjIn0uZmEtc25hcGNoYXQtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjJhZCJ9LmZhLXNub3dmbGFrZTpiZWZvcmV7Y29udGVudDoiXGYyZGMifS5mYS1zb3J0OmJlZm9yZXtjb250ZW50OiJcZjBkYyJ9LmZhLXNvcnQtYWxwaGEtZG93bjpiZWZvcmV7Y29udGVudDoiXGYxNWQifS5mYS1zb3J0LWFscGhhLXVwOmJlZm9yZXtjb250ZW50OiJcZjE1ZSJ9LmZhLXNvcnQtYW1vdW50LWRvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTYwIn0uZmEtc29ydC1hbW91bnQtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMTYxIn0uZmEtc29ydC1kb3duOmJlZm9yZXtjb250ZW50OiJcZjBkZCJ9LmZhLXNvcnQtbnVtZXJpYy1kb3duOmJlZm9yZXtjb250ZW50OiJcZjE2MiJ9LmZhLXNvcnQtbnVtZXJpYy11cDpiZWZvcmV7Y29udGVudDoiXGYxNjMifS5mYS1zb3J0LXVwOmJlZm9yZXtjb250ZW50OiJcZjBkZSJ9LmZhLXNvdW5kY2xvdWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWJlIn0uZmEtc3BhY2Utc2h1dHRsZTpiZWZvcmV7Y29udGVudDoiXGYxOTcifS5mYS1zcGVha2FwOmJlZm9yZXtjb250ZW50OiJcZjNmMyJ9LmZhLXNwaW5uZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMTEwIn0uZmEtc3BvdGlmeTpiZWZvcmV7Y29udGVudDoiXGYxYmMifS5mYS1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMGM4In0uZmEtc3F1YXJlLWZ1bGw6YmVmb3Jle2NvbnRlbnQ6IlxmNDVjIn0uZmEtc3RhY2stZXhjaGFuZ2U6YmVmb3Jle2NvbnRlbnQ6IlxmMThkIn0uZmEtc3RhY2stb3ZlcmZsb3c6YmVmb3Jle2NvbnRlbnQ6IlxmMTZjIn0uZmEtc3RhcjpiZWZvcmV7Y29udGVudDoiXGYwMDUifS5mYS1zdGFyLWhhbGY6YmVmb3Jle2NvbnRlbnQ6IlxmMDg5In0uZmEtc3RheWxpbmtlZDpiZWZvcmV7Y29udGVudDoiXGYzZjUifS5mYS1zdGVhbTpiZWZvcmV7Y29udGVudDoiXGYxYjYifS5mYS1zdGVhbS1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMWI3In0uZmEtc3RlYW0tc3ltYm9sOmJlZm9yZXtjb250ZW50OiJcZjNmNiJ9LmZhLXN0ZXAtYmFja3dhcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDQ4In0uZmEtc3RlcC1mb3J3YXJkOmJlZm9yZXtjb250ZW50OiJcZjA1MSJ9LmZhLXN0ZXRob3Njb3BlOmJlZm9yZXtjb250ZW50OiJcZjBmMSJ9LmZhLXN0aWNrZXItbXVsZTpiZWZvcmV7Y29udGVudDoiXGYzZjcifS5mYS1zdGlja3ktbm90ZTpiZWZvcmV7Y29udGVudDoiXGYyNDkifS5mYS1zdG9wOmJlZm9yZXtjb250ZW50OiJcZjA0ZCJ9LmZhLXN0b3AtY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjI4ZCJ9LmZhLXN0b3B3YXRjaDpiZWZvcmV7Y29udGVudDoiXGYyZjIifS5mYS1zdHJhdmE6YmVmb3Jle2NvbnRlbnQ6IlxmNDI4In0uZmEtc3RyZWV0LXZpZXc6YmVmb3Jle2NvbnRlbnQ6IlxmMjFkIn0uZmEtc3RyaWtldGhyb3VnaDpiZWZvcmV7Y29udGVudDoiXGYwY2MifS5mYS1zdHJpcGU6YmVmb3Jle2NvbnRlbnQ6IlxmNDI5In0uZmEtc3RyaXBlLXM6YmVmb3Jle2NvbnRlbnQ6IlxmNDJhIn0uZmEtc3R1ZGlvdmluYXJpOmJlZm9yZXtjb250ZW50OiJcZjNmOCJ9LmZhLXN0dW1ibGV1cG9uOmJlZm9yZXtjb250ZW50OiJcZjFhNCJ9LmZhLXN0dW1ibGV1cG9uLWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYxYTMifS5mYS1zdWJzY3JpcHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTJjIn0uZmEtc3Vid2F5OmJlZm9yZXtjb250ZW50OiJcZjIzOSJ9LmZhLXN1aXRjYXNlOmJlZm9yZXtjb250ZW50OiJcZjBmMiJ9LmZhLXN1bjpiZWZvcmUsLmZhLXN1bi1vOmJlZm9yZXtjb250ZW50OiJcZjE4NSJ9LmZhLXN1cGVycG93ZXJzOmJlZm9yZXtjb250ZW50OiJcZjJkZCJ9LmZhLXN1cGVyc2NyaXB0OmJlZm9yZXtjb250ZW50OiJcZjEyYiJ9LmZhLXN1cHBsZTpiZWZvcmV7Y29udGVudDoiXGYzZjkifS5mYS1zeW5jOmJlZm9yZXtjb250ZW50OiJcZjAyMSJ9LmZhLXN5bmMtYWx0OmJlZm9yZXtjb250ZW50OiJcZjJmMSJ9LmZhLXRhYmxlOmJlZm9yZXtjb250ZW50OiJcZjBjZSJ9LmZhLXRhYmxlLXRlbm5pczpiZWZvcmV7Y29udGVudDoiXGY0NWQifS5mYS10YWJsZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTBhIn0uZmEtdGFibGV0LWFsdDpiZWZvcmV7Y29udGVudDoiXGYzZmEifS5mYS10YWNob21ldGVyLWFsdDpiZWZvcmV7Y29udGVudDoiXGYzZmQifS5mYS10YWc6YmVmb3Jle2NvbnRlbnQ6IlxmMDJiIn0uZmEtdGFnczpiZWZvcmV7Y29udGVudDoiXGYwMmMifS5mYS10YXNrczpiZWZvcmV7Y29udGVudDoiXGYwYWUifS5mYS10YXhpOmJlZm9yZXtjb250ZW50OiJcZjFiYSJ9LmZhLXRlbGVncmFtOmJlZm9yZXtjb250ZW50OiJcZjJjNiJ9LmZhLXRlbGVncmFtLXBsYW5lOmJlZm9yZXtjb250ZW50OiJcZjNmZSJ9LmZhLXRlbmNlbnQtd2VpYm86YmVmb3Jle2NvbnRlbnQ6IlxmMWQ1In0uZmEtdGVybWluYWw6YmVmb3Jle2NvbnRlbnQ6IlxmMTIwIn0uZmEtdGV4dC1oZWlnaHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDM0In0uZmEtdGV4dC13aWR0aDpiZWZvcmV7Y29udGVudDoiXGYwMzUifS5mYS10aDpiZWZvcmV7Y29udGVudDoiXGYwMGEifS5mYS10aC1sYXJnZTpiZWZvcmV7Y29udGVudDoiXGYwMDkifS5mYS10aC1saXN0OmJlZm9yZXtjb250ZW50OiJcZjAwYiJ9LmZhLXRoZW1laXNsZTpiZWZvcmV7Y29udGVudDoiXGYyYjIifS5mYS10aGVybW9tZXRlci1lbXB0eTpiZWZvcmV7Y29udGVudDoiXGYyY2IifS5mYS10aGVybW9tZXRlci1mdWxsOmJlZm9yZXtjb250ZW50OiJcZjJjNyJ9LmZhLXRoZXJtb21ldGVyLWhhbGY6YmVmb3Jle2NvbnRlbnQ6IlxmMmM5In0uZmEtdGhlcm1vbWV0ZXItcXVhcnRlcjpiZWZvcmV7Y29udGVudDoiXGYyY2EifS5mYS10aGVybW9tZXRlci10aHJlZS1xdWFydGVyczpiZWZvcmV7Y29udGVudDoiXGYyYzgifS5mYS10aHVtYnMtZG93bjpiZWZvcmV7Y29udGVudDoiXGYxNjUifS5mYS10aHVtYnMtdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMTY0In0uZmEtdGh1bWJ0YWNrOmJlZm9yZXtjb250ZW50OiJcZjA4ZCJ9LmZhLXRpY2tldC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmM2ZmIn0uZmEtdGltZXM6YmVmb3Jle2NvbnRlbnQ6IlxmMDBkIn0uZmEtdGltZXMtY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcZjA1NyJ9LmZhLXRpbnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDQzIn0uZmEtdG9nZ2xlLW9mZjpiZWZvcmV7Y29udGVudDoiXGYyMDQifS5mYS10b2dnbGUtb246YmVmb3Jle2NvbnRlbnQ6IlxmMjA1In0uZmEtdHJhZGVtYXJrOmJlZm9yZXtjb250ZW50OiJcZjI1YyJ9LmZhLXRyYWluOmJlZm9yZXtjb250ZW50OiJcZjIzOCJ9LmZhLXRyYW5zZ2VuZGVyOmJlZm9yZXtjb250ZW50OiJcZjIyNCJ9LmZhLXRyYW5zZ2VuZGVyLWFsdDpiZWZvcmV7Y29udGVudDoiXGYyMjUifS5mYS10cmFzaDpiZWZvcmV7Y29udGVudDoiXGYxZjgifS5mYS10cmFzaC1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMmVkIn0uZmEtdHJlZTpiZWZvcmV7Y29udGVudDoiXGYxYmIifS5mYS10cmVsbG86YmVmb3Jle2NvbnRlbnQ6IlxmMTgxIn0uZmEtdHJpcGFkdmlzb3I6YmVmb3Jle2NvbnRlbnQ6IlxmMjYyIn0uZmEtdHJvcGh5OmJlZm9yZXtjb250ZW50OiJcZjA5MSJ9LmZhLXRydWNrOmJlZm9yZXtjb250ZW50OiJcZjBkMSJ9LmZhLXR0eTpiZWZvcmV7Y29udGVudDoiXGYxZTQifS5mYS10dW1ibHI6YmVmb3Jle2NvbnRlbnQ6IlxmMTczIn0uZmEtdHVtYmxyLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxNzQifS5mYS10djpiZWZvcmV7Y29udGVudDoiXGYyNmMifS5mYS10d2l0Y2g6YmVmb3Jle2NvbnRlbnQ6IlxmMWU4In0uZmEtdHdpdHRlcjpiZWZvcmV7Y29udGVudDoiXGYwOTkifS5mYS10d2l0dGVyLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYwODEifS5mYS10eXBvMzpiZWZvcmV7Y29udGVudDoiXGY0MmIifS5mYS11YmVyOmJlZm9yZXtjb250ZW50OiJcZjQwMiJ9LmZhLXVpa2l0OmJlZm9yZXtjb250ZW50OiJcZjQwMyJ9LmZhLXVtYnJlbGxhOmJlZm9yZXtjb250ZW50OiJcZjBlOSJ9LmZhLXVuZGVybGluZTpiZWZvcmV7Y29udGVudDoiXGYwY2QifS5mYS11bmRvOmJlZm9yZXtjb250ZW50OiJcZjBlMiJ9LmZhLXVuZG8tYWx0OmJlZm9yZXtjb250ZW50OiJcZjJlYSJ9LmZhLXVuaXJlZ2lzdHJ5OmJlZm9yZXtjb250ZW50OiJcZjQwNCJ9LmZhLXVuaXZlcnNhbC1hY2Nlc3M6YmVmb3Jle2NvbnRlbnQ6IlxmMjlhIn0uZmEtdW5pdmVyc2l0eTpiZWZvcmV7Y29udGVudDoiXGYxOWMifS5mYS11bmxpbms6YmVmb3Jle2NvbnRlbnQ6IlxmMTI3In0uZmEtdW5sb2NrOmJlZm9yZXtjb250ZW50OiJcZjA5YyJ9LmZhLXVubG9jay1hbHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTNlIn0uZmEtdW50YXBwZDpiZWZvcmV7Y29udGVudDoiXGY0MDUifS5mYS11cGxvYWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMDkzIn0uZmEtdXNiOmJlZm9yZXtjb250ZW50OiJcZjI4NyJ9LmZhLXVzZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMDA3In0uZmEtdXNlci1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMmJkIn0uZmEtdXNlci1tZDpiZWZvcmV7Y29udGVudDoiXGYwZjAifS5mYS11c2VyLXBsdXM6YmVmb3Jle2NvbnRlbnQ6IlxmMjM0In0uZmEtdXNlci1zZWNyZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjFiIn0uZmEtdXNlci10aW1lczpiZWZvcmV7Y29udGVudDoiXGYyMzUifS5mYS11c2VyczpiZWZvcmV7Y29udGVudDoiXGYwYzAifS5mYS11c3N1bm5haDpiZWZvcmV7Y29udGVudDoiXGY0MDcifS5mYS11dGVuc2lsLXNwb29uOmJlZm9yZXtjb250ZW50OiJcZjJlNSJ9LmZhLXV0ZW5zaWxzOmJlZm9yZXtjb250ZW50OiJcZjJlNyJ9LmZhLXZhYWRpbjpiZWZvcmV7Y29udGVudDoiXGY0MDgifS5mYS12ZW51czpiZWZvcmV7Y29udGVudDoiXGYyMjEifS5mYS12ZW51cy1kb3VibGU6YmVmb3Jle2NvbnRlbnQ6IlxmMjI2In0uZmEtdmVudXMtbWFyczpiZWZvcmV7Y29udGVudDoiXGYyMjgifS5mYS12aWFjb2luOmJlZm9yZXtjb250ZW50OiJcZjIzNyJ9LmZhLXZpYWRlbzpiZWZvcmV7Y29udGVudDoiXGYyYTkifS5mYS12aWFkZW8tc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjJhYSJ9LmZhLXZpYmVyOmJlZm9yZXtjb250ZW50OiJcZjQwOSJ9LmZhLXZpZGVvOmJlZm9yZXtjb250ZW50OiJcZjAzZCJ9LmZhLXZpbWVvOmJlZm9yZXtjb250ZW50OiJcZjQwYSJ9LmZhLXZpbWVvLXNxdWFyZTpiZWZvcmV7Y29udGVudDoiXGYxOTQifS5mYS12aW1lby12OmJlZm9yZXtjb250ZW50OiJcZjI3ZCJ9LmZhLXZpbmU6YmVmb3Jle2NvbnRlbnQ6IlxmMWNhIn0uZmEtdms6YmVmb3Jle2NvbnRlbnQ6IlxmMTg5In0uZmEtdm52OmJlZm9yZXtjb250ZW50OiJcZjQwYiJ9LmZhLXZvbGxleWJhbGwtYmFsbDpiZWZvcmV7Y29udGVudDoiXGY0NWYifS5mYS12b2x1bWUtZG93bjpiZWZvcmV7Y29udGVudDoiXGYwMjcifS5mYS12b2x1bWUtb2ZmOmJlZm9yZXtjb250ZW50OiJcZjAyNiJ9LmZhLXZvbHVtZS11cDpiZWZvcmV7Y29udGVudDoiXGYwMjgifS5mYS12dWVqczpiZWZvcmV7Y29udGVudDoiXGY0MWYifS5mYS13ZWlibzpiZWZvcmV7Y29udGVudDoiXGYxOGEifS5mYS13ZWl4aW46YmVmb3Jle2NvbnRlbnQ6IlxmMWQ3In0uZmEtd2hhdHNhcHA6YmVmb3Jle2NvbnRlbnQ6IlxmMjMyIn0uZmEtd2hhdHNhcHAtc3F1YXJlOmJlZm9yZXtjb250ZW50OiJcZjQwYyJ9LmZhLXdoZWVsY2hhaXI6YmVmb3Jle2NvbnRlbnQ6IlxmMTkzIn0uZmEtd2htY3M6YmVmb3Jle2NvbnRlbnQ6IlxmNDBkIn0uZmEtd2lmaTpiZWZvcmV7Y29udGVudDoiXGYxZWIifS5mYS13aWtpcGVkaWEtdzpiZWZvcmV7Y29udGVudDoiXGYyNjYifS5mYS13aW5kb3ctY2xvc2U6YmVmb3Jle2NvbnRlbnQ6IlxmNDEwIn0uZmEtd2luZG93LW1heGltaXplOmJlZm9yZXtjb250ZW50OiJcZjJkMCJ9LmZhLXdpbmRvdy1taW5pbWl6ZTpiZWZvcmV7Y29udGVudDoiXGYyZDEifS5mYS13aW5kb3ctcmVzdG9yZTpiZWZvcmV7Y29udGVudDoiXGYyZDIifS5mYS13aW5kb3dzOmJlZm9yZXtjb250ZW50OiJcZjE3YSJ9LmZhLXdvbi1zaWduOmJlZm9yZXtjb250ZW50OiJcZjE1OSJ9LmZhLXdvcmRwcmVzczpiZWZvcmV7Y29udGVudDoiXGYxOWEifS5mYS13b3JkcHJlc3Mtc2ltcGxlOmJlZm9yZXtjb250ZW50OiJcZjQxMSJ9LmZhLXdwYmVnaW5uZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMjk3In0uZmEtd3BleHBsb3JlcjpiZWZvcmV7Y29udGVudDoiXGYyZGUifS5mYS13cGZvcm1zOmJlZm9yZXtjb250ZW50OiJcZjI5OCJ9LmZhLXdyZW5jaDpiZWZvcmV7Y29udGVudDoiXGYwYWQifS5mYS14Ym94OmJlZm9yZXtjb250ZW50OiJcZjQxMiJ9LmZhLXhpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmMTY4In0uZmEteGluZy1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTY5In0uZmEteS1jb21iaW5hdG9yOmJlZm9yZXtjb250ZW50OiJcZjIzYiJ9LmZhLXlhaG9vOmJlZm9yZXtjb250ZW50OiJcZjE5ZSJ9LmZhLXlhbmRleDpiZWZvcmV7Y29udGVudDoiXGY0MTMifS5mYS15YW5kZXgtaW50ZXJuYXRpb25hbDpiZWZvcmV7Y29udGVudDoiXGY0MTQifS5mYS15ZWxwOmJlZm9yZXtjb250ZW50OiJcZjFlOSJ9LmZhLXllbi1zaWduOmJlZm9yZXtjb250ZW50OiJcZjE1NyJ9LmZhLXlvYXN0OmJlZm9yZXtjb250ZW50OiJcZjJiMSJ9LmZhLXlvdXR1YmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTY3In0uZmEteW91dHViZS1zcXVhcmU6YmVmb3Jle2NvbnRlbnQ6IlxmNDMxIn0KLyoqIC9jc3MvdjIvYW5pbWF0ZS5jc3MgKiovCi5hbmltLWJlYXQgeyAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOmFuaW0tYmVhdDsgYW5pbWF0aW9uLW5hbWU6YW5pbS1iZWF0OyAtd2Via2l0LWFuaW1hdGlvbi1kZWxheTp2YXIoLS1hbmltLWRlbGF5LDBzKTsgYW5pbWF0aW9uLWRlbGF5OnZhcigtLWFuaW0tZGVsYXksMHMpOyAtd2Via2l0LWFuaW1hdGlvbi1kaXJlY3Rpb246dmFyKC0tYW5pbS1kaXJlY3Rpb24sbm9ybWFsKTsgYW5pbWF0aW9uLWRpcmVjdGlvbjp2YXIoLS1hbmltLWRpcmVjdGlvbixub3JtYWwpOyAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjp2YXIoLS1hbmltLWR1cmF0aW9uLDFzKTsgYW5pbWF0aW9uLWR1cmF0aW9uOnZhcigtLWFuaW0tZHVyYXRpb24sMXMpOyAtd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6dmFyKC0tYW5pbS1pdGVyYXRpb24tY291bnQsaW5maW5pdGUpOyBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnZhcigtLWFuaW0taXRlcmF0aW9uLWNvdW50LGluZmluaXRlKTsgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLWFuaW0tdGltaW5nLGVhc2UtaW4tb3V0KTsgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS1hbmltLXRpbWluZyxlYXNlLWluLW91dCkgfSAuYW5pbS1ib3VuY2UgeyAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOmFuaW0tYm91bmNlOyBhbmltYXRpb24tbmFtZTphbmltLWJvdW5jZTsgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6dmFyKC0tYW5pbS1kZWxheSwwcyk7IGFuaW1hdGlvbi1kZWxheTp2YXIoLS1hbmltLWRlbGF5LDBzKTsgLXdlYmtpdC1hbmltYXRpb24tZGlyZWN0aW9uOnZhcigtLWFuaW0tZGlyZWN0aW9uLG5vcm1hbCk7IGFuaW1hdGlvbi1kaXJlY3Rpb246dmFyKC0tYW5pbS1kaXJlY3Rpb24sbm9ybWFsKTsgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246dmFyKC0tYW5pbS1kdXJhdGlvbiwxcyk7IGFuaW1hdGlvbi1kdXJhdGlvbjp2YXIoLS1hbmltLWR1cmF0aW9uLDFzKTsgLXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnZhcigtLWFuaW0taXRlcmF0aW9uLWNvdW50LGluZmluaXRlKTsgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDp2YXIoLS1hbmltLWl0ZXJhdGlvbi1jb3VudCxpbmZpbml0ZSk7IC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS1hbmltLXRpbWluZyxjdWJpYy1iZXppZXIoLjI4LC44NCwuNDIsMSkpOyBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLWFuaW0tdGltaW5nLGN1YmljLWJlemllciguMjgsLjg0LC40MiwxKSkgfSAuYW5pbS1mYWRlIHsgLXdlYmtpdC1hbmltYXRpb24tbmFtZTphbmltLWZhZGU7IGFuaW1hdGlvbi1uYW1lOmFuaW0tZmFkZTsgLXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnZhcigtLWFuaW0taXRlcmF0aW9uLWNvdW50LGluZmluaXRlKTsgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDp2YXIoLS1hbmltLWl0ZXJhdGlvbi1jb3VudCxpbmZpbml0ZSk7IC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS1hbmltLXRpbWluZyxjdWJpYy1iZXppZXIoLjQsMCwuNiwxKSk7IGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tYW5pbS10aW1pbmcsY3ViaWMtYmV6aWVyKC40LDAsLjYsMSkpIH0gLmFuaW0tYmVhdC1mYWRlLC5hbmltLWZhZGUgeyAtd2Via2l0LWFuaW1hdGlvbi1kZWxheTp2YXIoLS1hbmltLWRlbGF5LDBzKTsgYW5pbWF0aW9uLWRlbGF5OnZhcigtLWFuaW0tZGVsYXksMHMpOyAtd2Via2l0LWFuaW1hdGlvbi1kaXJlY3Rpb246dmFyKC0tYW5pbS1kaXJlY3Rpb24sbm9ybWFsKTsgYW5pbWF0aW9uLWRpcmVjdGlvbjp2YXIoLS1hbmltLWRpcmVjdGlvbixub3JtYWwpOyAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjp2YXIoLS1hbmltLWR1cmF0aW9uLDFzKTsgYW5pbWF0aW9uLWR1cmF0aW9uOnZhcigtLWFuaW0tZHVyYXRpb24sMXMpIH0gLmFuaW0tYmVhdC1mYWRlIHsgLXdlYmtpdC1hbmltYXRpb24tbmFtZTphbmltLWJlYXQtZmFkZTsgYW5pbWF0aW9uLW5hbWU6YW5pbS1iZWF0LWZhZGU7IC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDp2YXIoLS1hbmltLWl0ZXJhdGlvbi1jb3VudCxpbmZpbml0ZSk7IGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6dmFyKC0tYW5pbS1pdGVyYXRpb24tY291bnQsaW5maW5pdGUpOyAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tYW5pbS10aW1pbmcsY3ViaWMtYmV6aWVyKC40LDAsLjYsMSkpOyBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLWFuaW0tdGltaW5nLGN1YmljLWJlemllciguNCwwLC42LDEpKSB9IC5hbmltLWZsaXAgeyAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOmFuaW0tZmxpcDsgYW5pbWF0aW9uLW5hbWU6YW5pbS1mbGlwOyAtd2Via2l0LWFuaW1hdGlvbi1kZWxheTp2YXIoLS1hbmltLWRlbGF5LDBzKTsgYW5pbWF0aW9uLWRlbGF5OnZhcigtLWFuaW0tZGVsYXksMHMpOyAtd2Via2l0LWFuaW1hdGlvbi1kaXJlY3Rpb246dmFyKC0tYW5pbS1kaXJlY3Rpb24sbm9ybWFsKTsgYW5pbWF0aW9uLWRpcmVjdGlvbjp2YXIoLS1hbmltLWRpcmVjdGlvbixub3JtYWwpOyAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjp2YXIoLS1hbmltLWR1cmF0aW9uLDNzKTsgYW5pbWF0aW9uLWR1cmF0aW9uOnZhcigtLWFuaW0tZHVyYXRpb24sM3MpOyAtd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6dmFyKC0tYW5pbS1pdGVyYXRpb24tY291bnQsaW5maW5pdGUpOyBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnZhcigtLWFuaW0taXRlcmF0aW9uLWNvdW50LGluZmluaXRlKTsgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLWFuaW0tdGltaW5nLGVhc2UtaW4tb3V0KTsgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS1hbmltLXRpbWluZyxlYXNlLWluLW91dCkgfSAuYW5pbS1zaGFrZSB7IC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6YW5pbS1zaGFrZTsgYW5pbWF0aW9uLW5hbWU6YW5pbS1zaGFrZTsgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246dmFyKC0tYW5pbS1kdXJhdGlvbiwxcyk7IGFuaW1hdGlvbi1kdXJhdGlvbjp2YXIoLS1hbmltLWR1cmF0aW9uLDFzKTsgLXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnZhcigtLWFuaW0taXRlcmF0aW9uLWNvdW50LGluZmluaXRlKTsgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDp2YXIoLS1hbmltLWl0ZXJhdGlvbi1jb3VudCxpbmZpbml0ZSk7IC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS1hbmltLXRpbWluZyxsaW5lYXIpOyBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLWFuaW0tdGltaW5nLGxpbmVhcikgfSAuYW5pbS1zaGFrZSwuYW5pbS1zcGluIHsgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6dmFyKC0tYW5pbS1kZWxheSwwcyk7IGFuaW1hdGlvbi1kZWxheTp2YXIoLS1hbmltLWRlbGF5LDBzKTsgLXdlYmtpdC1hbmltYXRpb24tZGlyZWN0aW9uOnZhcigtLWFuaW0tZGlyZWN0aW9uLG5vcm1hbCk7IGFuaW1hdGlvbi1kaXJlY3Rpb246dmFyKC0tYW5pbS1kaXJlY3Rpb24sbm9ybWFsKSB9IC5hbmltLXNwaW4geyAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOmFuaW0tc3BpbjsgYW5pbWF0aW9uLW5hbWU6YW5pbS1zcGluOyAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjp2YXIoLS1hbmltLWR1cmF0aW9uLDJzKTsgYW5pbWF0aW9uLWR1cmF0aW9uOnZhcigtLWFuaW0tZHVyYXRpb24sMnMpOyAtd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6dmFyKC0tYW5pbS1pdGVyYXRpb24tY291bnQsaW5maW5pdGUpOyBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnZhcigtLWFuaW0taXRlcmF0aW9uLWNvdW50LGluZmluaXRlKTsgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLWFuaW0tdGltaW5nLGxpbmVhcik7IGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tYW5pbS10aW1pbmcsbGluZWFyKSB9IC5hbmltLXNwaW4tcmV2ZXJzZSB7IC0tYW5pbS1kaXJlY3Rpb246cmV2ZXJzZSB9IC5hbmltLXB1bHNlLC5hbmltLXNwaW4tcHVsc2UgeyAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOmFuaW0tc3BpbjsgYW5pbWF0aW9uLW5hbWU6YW5pbS1zcGluOyAtd2Via2l0LWFuaW1hdGlvbi1kaXJlY3Rpb246dmFyKC0tYW5pbS1kaXJlY3Rpb24sbm9ybWFsKTsgYW5pbWF0aW9uLWRpcmVjdGlvbjp2YXIoLS1hbmltLWRpcmVjdGlvbixub3JtYWwpOyAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjp2YXIoLS1hbmltLWR1cmF0aW9uLDFzKTsgYW5pbWF0aW9uLWR1cmF0aW9uOnZhcigtLWFuaW0tZHVyYXRpb24sMXMpOyAtd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6dmFyKC0tYW5pbS1pdGVyYXRpb24tY291bnQsaW5maW5pdGUpOyBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OnZhcigtLWFuaW0taXRlcmF0aW9uLWNvdW50LGluZmluaXRlKTsgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLWFuaW0tdGltaW5nLHN0ZXBzKDgpKTsgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS1hbmltLXRpbWluZyxzdGVwcyg4KSkgfSBALXdlYmtpdC1rZXlmcmFtZXMgYW5pbS1iZWF0IHsgMCUsOTAlIHsgLXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSk7IHRyYW5zZm9ybTpzY2FsZSgxKSB9IDQ1JSB7IC13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKHZhcigtLWFuaW0tYmVhdC1zY2FsZSwxLjI1KSk7IHRyYW5zZm9ybTpzY2FsZSh2YXIoLS1hbmltLWJlYXQtc2NhbGUsMS4yNSkpIH0gfSBAa2V5ZnJhbWVzIGFuaW0tYmVhdCB7IDAlLDkwJSB7IC13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpOyB0cmFuc2Zvcm06c2NhbGUoMSkgfSA0NSUgeyAtd2Via2l0LXRyYW5zZm9ybTpzY2FsZSh2YXIoLS1hbmltLWJlYXQtc2NhbGUsMS4yNSkpOyB0cmFuc2Zvcm06c2NhbGUodmFyKC0tYW5pbS1iZWF0LXNjYWxlLDEuMjUpKSB9IH0gQC13ZWJraXQta2V5ZnJhbWVzIGFuaW0tYm91bmNlIHsgMCUgeyAtd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKSB0cmFuc2xhdGVZKDApOyB0cmFuc2Zvcm06c2NhbGUoMSkgdHJhbnNsYXRlWSgwKSB9IDEwJSB7IC13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKHZhcigtLWFuaW0tYm91bmNlLXN0YXJ0LXNjYWxlLXgsMS4xKSx2YXIoLS1hbmltLWJvdW5jZS1zdGFydC1zY2FsZS15LC45KSkgdHJhbnNsYXRlWSgwKTsgdHJhbnNmb3JtOnNjYWxlKHZhcigtLWFuaW0tYm91bmNlLXN0YXJ0LXNjYWxlLXgsMS4xKSx2YXIoLS1hbmltLWJvdW5jZS1zdGFydC1zY2FsZS15LC45KSkgdHJhbnNsYXRlWSgwKSB9IDMwJSB7IC13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKHZhcigtLWFuaW0tYm91bmNlLWp1bXAtc2NhbGUteCwuOSksdmFyKC0tYW5pbS1ib3VuY2UtanVtcC1zY2FsZS15LDEuMSkpIHRyYW5zbGF0ZVkodmFyKC0tYW5pbS1ib3VuY2UtaGVpZ2h0LC0uNWVtKSk7IHRyYW5zZm9ybTpzY2FsZSh2YXIoLS1hbmltLWJvdW5jZS1qdW1wLXNjYWxlLXgsLjkpLHZhcigtLWFuaW0tYm91bmNlLWp1bXAtc2NhbGUteSwxLjEpKSB0cmFuc2xhdGVZKHZhcigtLWFuaW0tYm91bmNlLWhlaWdodCwtLjVlbSkpIH0gNTAlIHsgLXdlYmtpdC10cmFuc2Zvcm06c2NhbGUodmFyKC0tYW5pbS1ib3VuY2UtbGFuZC1zY2FsZS14LDEuMDUpLHZhcigtLWFuaW0tYm91bmNlLWxhbmQtc2NhbGUteSwuOTUpKSB0cmFuc2xhdGVZKDApOyB0cmFuc2Zvcm06c2NhbGUodmFyKC0tYW5pbS1ib3VuY2UtbGFuZC1zY2FsZS14LDEuMDUpLHZhcigtLWFuaW0tYm91bmNlLWxhbmQtc2NhbGUteSwuOTUpKSB0cmFuc2xhdGVZKDApIH0gNTclIHsgLXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSkgdHJhbnNsYXRlWSh2YXIoLS1hbmltLWJvdW5jZS1yZWJvdW5kLC0uMTI1ZW0pKTsgdHJhbnNmb3JtOnNjYWxlKDEpIHRyYW5zbGF0ZVkodmFyKC0tYW5pbS1ib3VuY2UtcmVib3VuZCwtLjEyNWVtKSkgfSA2NCUgeyAtd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKSB0cmFuc2xhdGVZKDApOyB0cmFuc2Zvcm06c2NhbGUoMSkgdHJhbnNsYXRlWSgwKSB9IHRvIHsgLXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSkgdHJhbnNsYXRlWSgwKTsgdHJhbnNmb3JtOnNjYWxlKDEpIHRyYW5zbGF0ZVkoMCkgfSB9IEBrZXlmcmFtZXMgYW5pbS1ib3VuY2UgeyAwJSB7IC13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpIHRyYW5zbGF0ZVkoMCk7IHRyYW5zZm9ybTpzY2FsZSgxKSB0cmFuc2xhdGVZKDApIH0gMTAlIHsgLXdlYmtpdC10cmFuc2Zvcm06c2NhbGUodmFyKC0tYW5pbS1ib3VuY2Utc3RhcnQtc2NhbGUteCwxLjEpLHZhcigtLWFuaW0tYm91bmNlLXN0YXJ0LXNjYWxlLXksLjkpKSB0cmFuc2xhdGVZKDApOyB0cmFuc2Zvcm06c2NhbGUodmFyKC0tYW5pbS1ib3VuY2Utc3RhcnQtc2NhbGUteCwxLjEpLHZhcigtLWFuaW0tYm91bmNlLXN0YXJ0LXNjYWxlLXksLjkpKSB0cmFuc2xhdGVZKDApIH0gMzAlIHsgLXdlYmtpdC10cmFuc2Zvcm06c2NhbGUodmFyKC0tYW5pbS1ib3VuY2UtanVtcC1zY2FsZS14LC45KSx2YXIoLS1hbmltLWJvdW5jZS1qdW1wLXNjYWxlLXksMS4xKSkgdHJhbnNsYXRlWSh2YXIoLS1hbmltLWJvdW5jZS1oZWlnaHQsLS41ZW0pKTsgdHJhbnNmb3JtOnNjYWxlKHZhcigtLWFuaW0tYm91bmNlLWp1bXAtc2NhbGUteCwuOSksdmFyKC0tYW5pbS1ib3VuY2UtanVtcC1zY2FsZS15LDEuMSkpIHRyYW5zbGF0ZVkodmFyKC0tYW5pbS1ib3VuY2UtaGVpZ2h0LC0uNWVtKSkgfSA1MCUgeyAtd2Via2l0LXRyYW5zZm9ybTpzY2FsZSh2YXIoLS1hbmltLWJvdW5jZS1sYW5kLXNjYWxlLXgsMS4wNSksdmFyKC0tYW5pbS1ib3VuY2UtbGFuZC1zY2FsZS15LC45NSkpIHRyYW5zbGF0ZVkoMCk7IHRyYW5zZm9ybTpzY2FsZSh2YXIoLS1hbmltLWJvdW5jZS1sYW5kLXNjYWxlLXgsMS4wNSksdmFyKC0tYW5pbS1ib3VuY2UtbGFuZC1zY2FsZS15LC45NSkpIHRyYW5zbGF0ZVkoMCkgfSA1NyUgeyAtd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKSB0cmFuc2xhdGVZKHZhcigtLWFuaW0tYm91bmNlLXJlYm91bmQsLS4xMjVlbSkpOyB0cmFuc2Zvcm06c2NhbGUoMSkgdHJhbnNsYXRlWSh2YXIoLS1hbmltLWJvdW5jZS1yZWJvdW5kLC0uMTI1ZW0pKSB9IDY0JSB7IC13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpIHRyYW5zbGF0ZVkoMCk7IHRyYW5zZm9ybTpzY2FsZSgxKSB0cmFuc2xhdGVZKDApIH0gdG8geyAtd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKSB0cmFuc2xhdGVZKDApOyB0cmFuc2Zvcm06c2NhbGUoMSkgdHJhbnNsYXRlWSgwKSB9IH0gQC13ZWJraXQta2V5ZnJhbWVzIGFuaW0tZmFkZSB7IDUwJSB7IG9wYWNpdHk6dmFyKC0tYW5pbS1mYWRlLW9wYWNpdHksLjQpIH0gfSBAa2V5ZnJhbWVzIGFuaW0tZmFkZSB7IDUwJSB7IG9wYWNpdHk6dmFyKC0tYW5pbS1mYWRlLW9wYWNpdHksLjQpIH0gfSBALXdlYmtpdC1rZXlmcmFtZXMgYW5pbS1iZWF0LWZhZGUgeyAwJSx0byB7IG9wYWNpdHk6dmFyKC0tYW5pbS1iZWF0LWZhZGUtb3BhY2l0eSwuNCk7IC13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpOyB0cmFuc2Zvcm06c2NhbGUoMSkgfSA1MCUgeyBvcGFjaXR5OjE7IC13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKHZhcigtLWFuaW0tYmVhdC1mYWRlLXNjYWxlLDEuMTI1KSk7IHRyYW5zZm9ybTpzY2FsZSh2YXIoLS1hbmltLWJlYXQtZmFkZS1zY2FsZSwxLjEyNSkpIH0gfSBAa2V5ZnJhbWVzIGFuaW0tYmVhdC1mYWRlIHsgMCUsdG8geyBvcGFjaXR5OnZhcigtLWFuaW0tYmVhdC1mYWRlLW9wYWNpdHksLjQpOyAtd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKTsgdHJhbnNmb3JtOnNjYWxlKDEpIH0gNTAlIHsgb3BhY2l0eToxOyAtd2Via2l0LXRyYW5zZm9ybTpzY2FsZSh2YXIoLS1hbmltLWJlYXQtZmFkZS1zY2FsZSwxLjEyNSkpOyB0cmFuc2Zvcm06c2NhbGUodmFyKC0tYW5pbS1iZWF0LWZhZGUtc2NhbGUsMS4xMjUpKSB9IH0gQC13ZWJraXQta2V5ZnJhbWVzIGFuaW0tZmxpcCB7IDUwJSB7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZTNkKHZhcigtLWFuaW0tZmxpcC14LDApLHZhcigtLWFuaW0tZmxpcC15LDEpLHZhcigtLWFuaW0tZmxpcC16LDApLHZhcigtLWFuaW0tZmxpcC1hbmdsZSwtMTgwZGVnKSk7IHRyYW5zZm9ybTpyb3RhdGUzZCh2YXIoLS1hbmltLWZsaXAteCwwKSx2YXIoLS1hbmltLWZsaXAteSwxKSx2YXIoLS1hbmltLWZsaXAteiwwKSx2YXIoLS1hbmltLWZsaXAtYW5nbGUsLTE4MGRlZykpIH0gfSBAa2V5ZnJhbWVzIGFuaW0tZmxpcCB7IDUwJSB7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZTNkKHZhcigtLWFuaW0tZmxpcC14LDApLHZhcigtLWFuaW0tZmxpcC15LDEpLHZhcigtLWFuaW0tZmxpcC16LDApLHZhcigtLWFuaW0tZmxpcC1hbmdsZSwtMTgwZGVnKSk7IHRyYW5zZm9ybTpyb3RhdGUzZCh2YXIoLS1hbmltLWZsaXAteCwwKSx2YXIoLS1hbmltLWZsaXAteSwxKSx2YXIoLS1hbmltLWZsaXAteiwwKSx2YXIoLS1hbmltLWZsaXAtYW5nbGUsLTE4MGRlZykpIH0gfSBALXdlYmtpdC1rZXlmcmFtZXMgYW5pbS1zaGFrZSB7IDAlIHsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC0xNWRlZyk7IHRyYW5zZm9ybTpyb3RhdGUoLTE1ZGVnKSB9IDQlIHsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDE1ZGVnKTsgdHJhbnNmb3JtOnJvdGF0ZSgxNWRlZykgfSA4JSwyNCUgeyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTE4ZGVnKTsgdHJhbnNmb3JtOnJvdGF0ZSgtMThkZWcpIH0gMTIlLDI4JSB7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgxOGRlZyk7IHRyYW5zZm9ybTpyb3RhdGUoMThkZWcpIH0gMTYlIHsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC0yMmRlZyk7IHRyYW5zZm9ybTpyb3RhdGUoLTIyZGVnKSB9IDIwJSB7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgyMmRlZyk7IHRyYW5zZm9ybTpyb3RhdGUoMjJkZWcpIH0gMzIlIHsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC0xMmRlZyk7IHRyYW5zZm9ybTpyb3RhdGUoLTEyZGVnKSB9IDM2JSB7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgxMmRlZyk7IHRyYW5zZm9ybTpyb3RhdGUoMTJkZWcpIH0gNDAlLHRvIHsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDBkZWcpOyB0cmFuc2Zvcm06cm90YXRlKDBkZWcpIH0gfSBAa2V5ZnJhbWVzIGFuaW0tc2hha2UgeyAwJSB7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgtMTVkZWcpOyB0cmFuc2Zvcm06cm90YXRlKC0xNWRlZykgfSA0JSB7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgxNWRlZyk7IHRyYW5zZm9ybTpyb3RhdGUoMTVkZWcpIH0gOCUsMjQlIHsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC0xOGRlZyk7IHRyYW5zZm9ybTpyb3RhdGUoLTE4ZGVnKSB9IDEyJSwyOCUgeyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMThkZWcpOyB0cmFuc2Zvcm06cm90YXRlKDE4ZGVnKSB9IDE2JSB7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgtMjJkZWcpOyB0cmFuc2Zvcm06cm90YXRlKC0yMmRlZykgfSAyMCUgeyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMjJkZWcpOyB0cmFuc2Zvcm06cm90YXRlKDIyZGVnKSB9IDMyJSB7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgtMTJkZWcpOyB0cmFuc2Zvcm06cm90YXRlKC0xMmRlZykgfSAzNiUgeyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMTJkZWcpOyB0cmFuc2Zvcm06cm90YXRlKDEyZGVnKSB9IDQwJSx0byB7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgwZGVnKTsgdHJhbnNmb3JtOnJvdGF0ZSgwZGVnKSB9IH0gQC13ZWJraXQta2V5ZnJhbWVzIGFuaW0tc3BpbiB7IDAlIHsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDBkZWcpOyB0cmFuc2Zvcm06cm90YXRlKDBkZWcpIH0gdG8geyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMXR1cm4pOyB0cmFuc2Zvcm06cm90YXRlKDF0dXJuKSB9IH0gQGtleWZyYW1lcyBhbmltLXNwaW4geyAwJSB7IC13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgwZGVnKTsgdHJhbnNmb3JtOnJvdGF0ZSgwZGVnKSB9IHRvIHsgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDF0dXJuKTsgdHJhbnNmb3JtOnJvdGF0ZSgxdHVybikgfSB9IEBzdXBwb3J0cyAoLXdlYmtpdC10b3VjaC1jYWxsb3V0Om5vbmUpIHsgYm9keSAjcHJvbW9Ub3BCdG4gLmFuaW0tZmxpcHsgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6dW5zZXQ7IGFuaW1hdGlvbi1kZWxheTp1bnNldDsgLXdlYmtpdC1hbmltYXRpb24tZGlyZWN0aW9uOnVuc2V0OyBhbmltYXRpb24tZGlyZWN0aW9uOnVuc2V0OyAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjp1bnNldDsgYW5pbWF0aW9uLWR1cmF0aW9uOnVuc2V0OyAtd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6dW5zZXQ7IGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6dW5zZXQ7IC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjp1bnNldDsgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjp1bnNldDsgfSB9IC5wdWxzYXRpbmctY2lyY2xlIHsgcG9zaXRpb246cmVsYXRpdmU7IHdpZHRoOjMwcHg7IGhlaWdodDozMHB4OyBmbGV4OjAgMCBhdXRvOyAmOmJlZm9yZSB7IGNvbnRlbnQ6Jyc7IHBvc2l0aW9uOnJlbGF0aXZlOyBkaXNwbGF5OmJsb2NrOyB3aWR0aDozMDAlOyBoZWlnaHQ6MzAwJTsgYm94LXNpemluZzpib3JkZXItYm94OyBtYXJnaW4tbGVmdDotMTAwJTsgbWFyZ2luLXRvcDotMTAwJTsgYm9yZGVyLXJhZGl1czo0NXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiMwMWE0ZTk7IGFuaW1hdGlvbjpwdWxzZS1yaW5nIDEuMjVzIGN1YmljLWJlemllcigwLjIxNSwgMC42MSwgMC4zNTUsIDEpIGluZmluaXRlOyB9ICY6YWZ0ZXIgeyBjb250ZW50OicnOyBwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDowOyB0b3A6MDsgZGlzcGxheTpibG9jazsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IGJhY2tncm91bmQtY29sb3I6d2hpdGU7IGJvcmRlci1yYWRpdXM6MTVweDsgYm94LXNoYWRvdzowIDAgOHB4IHJnYmEoMCwwLDAsLjMpOyBhbmltYXRpb246cHVsc2UtZG90IDEuMjVzIGN1YmljLWJlemllcigwLjQ1NSwgMC4wMywgMC41MTUsIDAuOTU1KSAtLjRzIGluZmluaXRlOyB9IH0gQGtleWZyYW1lcyBwdWxzZS1yaW5nIHsgMCUgeyB0cmFuc2Zvcm06c2NhbGUoLjMzKTsgfSA4MCUsIDEwMCUgeyBvcGFjaXR5OjA7IH0gfSBAa2V5ZnJhbWVzIHB1bHNlLWRvdCB7IDAlIHsgdHJhbnNmb3JtOnNjYWxlKC44KTsgfSA1MCUgeyB0cmFuc2Zvcm06c2NhbGUoMSk7IH0gMTAwJSB7IHRyYW5zZm9ybTpzY2FsZSguOCk7IH0gfQovKiogL2Nzcy9kaXZfbGF5ZXJzLmNzcyAqKi8KZGl2Lk1haW5Cb3hMYXllcnsgd2lkdGg6bWluKDEwMCUsOTYwcHgpOyBtYXJnaW46MCBhdXRvOyB9IGRpdi5NYWluQm94TGF5ZXIgSDF7IHdpZHRoOjk0MHB4OyB9IGRpdi5NYWluQm94TGF5ZXIgLnJlc3BvbnNpdmUtZWRpdG9yIGgxIHsgd2lkdGg6aW5pdGlhbDsgfSBkaXYuTWFpbkJveExheWVyIGRpdi5jcmVkc2lpRGl2IEgxeyB3aWR0aDphdXRvOyB9IC5jcmVkc2lpRGl2eyB3aGl0ZS1zcGFjZTpub3JtYWw7IH0gZGl2Lk1haW5Cb3hMYXllciBkaXYuTGVmdEJveExheWVyIHsgfSBkaXYuTWFpbkJveExheWVyIGRpdi5SaWdodEJveExheWVyIHsgfSBkaXYuTWFpbkJveExheWVyIGRpdi5PdXRlckJveExheWVyIHsgcGFkZGluZzoxMHB4OyBmbG9hdDpsZWZ0OyB3aWR0aDo5NDBweDsgfSBkaXYuTWFpbkJveExheWVyIGRpdi5Jbm5lckJveExheWVyIHsgaGVpZ2h0OmF1dG87IGZsb2F0OmxlZnQ7IHBhZGRpbmc6MHB4OyBtYXJnaW46MHB4OyB3aWR0aDoxMDAlOyBjbGVhcjpib3RoOyB9IGRpdi5NYWluQm94TGF5ZXIgZGl2LklubmVyQm94TGF5ZXIudG9wQm9yZGVyZWR7IGJvcmRlci10b3A6MXB4IHNvbGlkICNjY2M7IH0gZGl2Lk1haW5Cb3hMYXllciBkaXYuSW5uZXJCb3hMYXllci5ib3R0b21Cb3JkZXJlZHsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2NjYzsgfSBkaXYuTWFpbkJveExheWVyIGRpdi5Cb3hDaGlsZCB7IH0gZGl2Lk1haW5Cb3hMYXllciBkaXYuQm94Q2hpbGQuZWFzdHsgZmxvYXQ6cmlnaHQ7IH0gZGl2Lk1haW5Cb3hMYXllciBkaXYuQm94Q2hpbGQud2VzdHsgZmxvYXQ6bGVmdDsgfSBib2R5LmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIGRpdi5NYWluQm94TGF5ZXIgI3RvcEJhbm5lckltYWdleyB3aWR0aDo5NDBweDsgaGVpZ2h0OmF1dG87IHRleHQtYWxpZ246Y2VudGVyOyBtYXJnaW46MCBhdXRvOyB9IGJvZHkuaXNGdWxsV2lkdGhQYWdlLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQgZGl2Lk1haW5Cb3hMYXllciAjdG9wQmFubmVySW1hZ2UgPiBpbWd7IG1heC13aWR0aDoxMDAlICFpbXBvcnRhbnQ7IH0gZGl2Lk1haW5Cb3hMYXllciBkaXYuT3V0ZXJCb3hMYXllciNoaXN0b3J5RGl2IGRpdi5Jbm5lckJveExheWVyICNicmVhZGNydW1icyB7IG1hcmdpbjowOyB9IEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDoxMzAxcHgpIHsgYm9keS5pc0Z1bGxXaWR0aFBhZ2UuaXNQYWdlRnVsbFdpZHRoRW5hYmxlZCBkaXYuTWFpbkJveExheWVyIHsgd2lkdGg6MTIwMHB4OyB9IGJvZHkuaXNGdWxsV2lkdGhQYWdlLmlzUGFnZUZ1bGxXaWR0aEVuYWJsZWQgZGl2Lk1haW5Cb3hMYXllciBkaXYuT3V0ZXJCb3hMYXllciB7IHdpZHRoOjExODBweDsgfSBib2R5LmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIGRpdi5NYWluQm94TGF5ZXIgZGl2Lk91dGVyQm94TGF5ZXIueHRpbWVGcmFtZSB7IHdpZHRoOjEyMDBweDsgfSBib2R5LmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIGRpdi5NYWluQm94TGF5ZXIgSDF7IHdpZHRoOjExODBweDsgfSBib2R5LmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIGRpdi5NYWluQm94TGF5ZXIgLnJlc3BvbnNpdmUtZWRpdG9yIGgxIHsgd2lkdGg6aW5pdGlhbDsgfSBib2R5LmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIGRpdi5NYWluQm94TGF5ZXIgZGl2LmNyZWRzaWlEaXYgSDF7IHdpZHRoOmF1dG87IH0gYm9keS5pc0Z1bGxXaWR0aFBhZ2UuaXNQYWdlRnVsbFdpZHRoRW5hYmxlZCBkaXYuTWFpbkJveExheWVyICN0b3BCYW5uZXJJbWFnZSB7IHdpZHRoOjExODBweDsgfSBib2R5LmlzRnVsbFdpZHRoUGFnZS5pc1BhZ2VGdWxsV2lkdGhFbmFibGVkIGRpdi5NYWluQm94TGF5ZXIgI3RvcEJhbm5lckltYWdlLlRFQU0geyB3aWR0aDo5NjBweDsgfSB9IGRpdi5NYWluQm94TGF5ZXIudWNwQ29udGVudEZ1bGxXaWR0aCB7IHdpZHRoOjEwMCUhaW1wb3J0YW50OyB9IGRpdi5NYWluQm94TGF5ZXIgZGl2LkxlZnRCb3hMYXllci51Y3BDb250ZW50RnVsbFdpZHRoIHsgd2lkdGg6MTAwJSFpbXBvcnRhbnQ7IH0gZGl2Lk1haW5Cb3hMYXllciBkaXYuT3V0ZXJCb3hMYXllci51Y3BDb250ZW50RnVsbFdpZHRoIHsgd2lkdGg6MTAwJSFpbXBvcnRhbnQ7IH0KLyoqIC9jc3MvZGl2X3NwYW5zLmNzcyAqKi8KLmRpdlNwYW57ZmxvYXQ6bGVmdDtib3gtc2l6aW5nOmJvcmRlci1ib3h9LmRpdlNwYW4uZGl2U3BhbkxlZnR7ZmxvYXQ6bGVmdH0uZGl2U3Bhbi5kaXZTcGFuUmlnaHR7ZmxvYXQ6cmlnaHR9LmRpdlNwYW4uZGl2U3BhbjF7d2lkdGg6OC4zMzMzMzMzMzMzMzMzMzMlfS5kaXZTcGFuLmRpdlNwYW4ye3dpZHRoOjE2LjY2NjY2NjY2NjY2NjY3JX0uZGl2U3Bhbi5kaXZTcGFuM3t3aWR0aDoyNSV9LmRpdlNwYW4uZGl2U3BhbjR7d2lkdGg6MzMuMzMzMzMzMzMzMzMzMzMlfS5kaXZTcGFuLmRpdlNwYW41e3dpZHRoOjQxLjY2NjY2NjY2NjY2NjY3JX0uZGl2U3Bhbi5kaXZTcGFuNnt3aWR0aDo1MCV9LmRpdlNwYW4uZGl2U3Bhbjd7d2lkdGg6NTguMzMzMzMzMzMzMzMzMzMlfS5kaXZTcGFuLmRpdlNwYW44e3dpZHRoOjY2LjY2NjY2NjY2NjY2NjY2JX0uZGl2U3Bhbi5kaXZTcGFuOXt3aWR0aDo3NSV9LmRpdlNwYW4uZGl2U3BhbjEwe3dpZHRoOjgzLjMzMzMzMzMzMzMzMzMzJX0uZGl2U3Bhbi5kaXZTcGFuMTF7d2lkdGg6OTEuNjY2NjY2NjY2NjY2NjYlfS5kaXZTcGFuLmRpdlNwYW4xMnt3aWR0aDoxMDAlfQovKiogL2Nzcy9tZW51aW1nLmNzcyAqKi8KLm1lbnVzcHJpdGV7YmFja2dyb3VuZC1pbWFnZTp1cmwoL2ltYWdlcy9tZW51aWNvbnMvbWVudXNwcml0ZXNoZWV0LnBuZyk7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2Rpc3BsYXk6aW5saW5lLXRhYmxlO2JvcmRlcjowfS5tZW51c3ByaXRlLWFycm93X2Rvd257d2lkdGg6MzJweDtoZWlnaHQ6MzJweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOi01cHggLTVweH0ubWVudXNwcml0ZS1hcnJvd191cHt3aWR0aDozMnB4O2hlaWdodDozMnB4O2JhY2tncm91bmQtcG9zaXRpb246LTVweCAtNDdweH0ubWVudXNwcml0ZS1jb250YWN0e3dpZHRoOjMycHg7aGVpZ2h0OjMycHg7YmFja2dyb3VuZC1wb3NpdGlvbjotNXB4IC04OXB4fS5tZW51c3ByaXRlLWRlbW9jYXJ7d2lkdGg6MzJweDtoZWlnaHQ6MzJweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOi01cHggLTEzMXB4fS5tZW51c3ByaXRlLWZpbmFuY2V7d2lkdGg6MzJweDtoZWlnaHQ6MzJweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOi01cHggLTE3M3B4fS5tZW51c3ByaXRlLWhvbWV7d2lkdGg6MzJweDtoZWlnaHQ6MzJweDtiYWNrZ3JvdW5kLXBvc2l0aW9uOi01cHggLTIxNXB4fS5tZW51c3ByaXRlLW5ld2Nhcnt3aWR0aDozMnB4O2hlaWdodDozMnB4O2JhY2tncm91bmQtcG9zaXRpb246LTVweCAtMjU3cHh9Lm1lbnVzcHJpdGUtb2xkY2Fye3dpZHRoOjMycHg7aGVpZ2h0OjMycHg7YmFja2dyb3VuZC1wb3NpdGlvbjotNXB4IC0yOTlweH0ubWVudXNwcml0ZS1wcm9tb3Rpb25ze3dpZHRoOjMycHg7aGVpZ2h0OjMycHg7YmFja2dyb3VuZC1wb3NpdGlvbjotNXB4IC0zNDFweH0ubWVudXNwcml0ZS1zZXJ2aWNle3dpZHRoOjMycHg7aGVpZ2h0OjMycHg7YmFja2dyb3VuZC1wb3NpdGlvbjotNXB4IC0zODNweH0KLyoqIC9jc3MvanF1ZXJ5Lm11bHRpc2VsZWN0LmNzcyAqKi8KLnVpLW11bHRpc2VsZWN0e3BhZGRpbmc6MnB4IDAgMnB4IDRweDt0ZXh0LWFsaWduOmxlZnR9LnVpLW11bHRpc2VsZWN0IHNwYW4udWktaWNvbntmbG9hdDpyaWdodH0udWktbXVsdGlzZWxlY3Qtc2luZ2xlIC51aS1tdWx0aXNlbGVjdC1jaGVja2JveGVzIGlucHV0e3Bvc2l0aW9uOmFic29sdXRlICFpbXBvcnRhbnQ7dG9wOmF1dG8gIWltcG9ydGFudDtsZWZ0Oi05OTk5cHh9LnVpLW11bHRpc2VsZWN0LXNpbmdsZSAudWktbXVsdGlzZWxlY3QtY2hlY2tib3hlcyBsYWJlbHtwYWRkaW5nOjVweCAhaW1wb3J0YW50fS51aS1tdWx0aXNlbGVjdC1oZWFkZXJ7bWFyZ2luLWJvdHRvbTozcHg7cGFkZGluZzozcHggMCAzcHggNHB4fS51aS1tdWx0aXNlbGVjdC1oZWFkZXIgdWx7Zm9udC1zaXplOi45ZW19LnVpLW11bHRpc2VsZWN0LWhlYWRlciB1bCBsaXtmbG9hdDpsZWZ0O3BhZGRpbmc6MCAxMHB4IDAgMH0udWktbXVsdGlzZWxlY3QtaGVhZGVyIGF7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnVpLW11bHRpc2VsZWN0LWhlYWRlciBhOmhvdmVye3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9LnVpLW11bHRpc2VsZWN0LWhlYWRlciBzcGFuLnVpLWljb257ZmxvYXQ6bGVmdH0udWktbXVsdGlzZWxlY3QtaGVhZGVyIGxpLnVpLW11bHRpc2VsZWN0LWNsb3Nle2Zsb2F0OnJpZ2h0O3RleHQtYWxpZ246cmlnaHQ7cGFkZGluZy1yaWdodDowfS51aS1tdWx0aXNlbGVjdC1tZW51e2Rpc3BsYXk6bm9uZTtwYWRkaW5nOjNweDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDAwO3RleHQtYWxpZ246bGVmdH0udWktbXVsdGlzZWxlY3QtY2hlY2tib3hlc3twb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdy15OmF1dG99LnVpLW11bHRpc2VsZWN0LWNoZWNrYm94ZXMgbGFiZWx7Y3Vyc29yOmRlZmF1bHQ7ZGlzcGxheTpibG9jaztib3JkZXI6MXB4IHNvbGlkIHRyYW5zcGFyZW50O3BhZGRpbmc6M3B4IDFweH0udWktbXVsdGlzZWxlY3QtY2hlY2tib3hlcyBsYWJlbCBpbnB1dHtwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6MXB4fS51aS1tdWx0aXNlbGVjdC1jaGVja2JveGVzIGxpe2NsZWFyOmJvdGg7Zm9udC1zaXplOi45ZW07cGFkZGluZy1yaWdodDozcHh9LnVpLW11bHRpc2VsZWN0LWNoZWNrYm94ZXMgbGkudWktbXVsdGlzZWxlY3Qtb3B0Z3JvdXAtbGFiZWx7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC13ZWlnaHQ6Ym9sZDtib3JkZXItYm90dG9tOjFweCBzb2xpZH0udWktbXVsdGlzZWxlY3QtY2hlY2tib3hlcyBsaS51aS1tdWx0aXNlbGVjdC1vcHRncm91cC1sYWJlbCBhe2Rpc3BsYXk6YmxvY2s7cGFkZGluZzozcHg7bWFyZ2luOjFweCAwO3RleHQtZGVjb3JhdGlvbjpub25lfSogaHRtbCAudWktbXVsdGlzZWxlY3QtY2hlY2tib3hlcyBsYWJlbHtib3JkZXI6MH0udWktbXVsdGlzZWxlY3QtaGFzZmlsdGVyIHVse3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDoycHh9LnVpLW11bHRpc2VsZWN0LWZpbHRlcntmbG9hdDpsZWZ0O21hcmdpbi1yaWdodDoxMHB4O2ZvbnQtc2l6ZToxMXB4fS51aS1tdWx0aXNlbGVjdC1maWx0ZXIgaW5wdXR7d2lkdGg6MTAwcHg7Zm9udC1zaXplOjAuNjI1cmVtIDttYXJnaW4tbGVmdDo1cHg7aGVpZ2h0OjE1cHg7cGFkZGluZzoycHg7Ym9yZGVyOjFweCBzb2xpZCAjMjkyOTI5Oy13ZWJraXQtYXBwZWFyYW5jZTp0ZXh0ZmllbGQ7LXdlYmtpdC1ib3gtc2l6aW5nOmNvbnRlbnQtYm94fQovKiogL2Nzcy90cmFkZWlucG9wdXAuY3NzICoqLwoudHJhZGVJbkJhclNtc09yRW1haWx7IHdpZHRoOjUwJTsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XICN0cmFkZUluQmFyU21zT3JFbWFpbFNtcywgI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAjdHJhZGVJbkJhclNtc09yRW1haWxFbWFpbHsgd2lkdGg6NTAlOyB9IC50cmFkZUluQmFyU3RlcDMsIC50cmFkZUluQmFyU3RlcDQsIC50cmFkZUluQmFyU3RlcDUsIC50cmFkZUluQmFyU3RlcDZ7IG1hcmdpbjo2MHB4IDA7IHRleHQtYWxpZ246Y2VudGVyOyB9IC50cmFkZUluQmFyU3RlcDZ7IG1hcmdpbjowIDAgMzBweCAwOyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAudHJhZGVJbkJhclN0ZXAzIC50cmFkZUluQmFyU3RlcDNRdWVzdGlvbiwgLnRyYWRlSW5CYXJTdGVwNCAudHJhZGVJbkJhclN0ZXA0UXVlc3Rpb24sIC50cmFkZUluQmFyU3RlcDUgLnRyYWRlSW5CYXJTdGVwNVF1ZXN0aW9uLCAudHJhZGVJbkJhclN0ZXA2IC50cmFkZUluQmFyU3RlcDZRdWVzdGlvbnsgbWFyZ2luOjIwcHggMDsgfSAjdHJhZGVJbkJhclBvcHVwU3VibWl0LCAudHJhZGVJbkJhclN0ZXAzICN0cmFkZUluU3RlcDNZZXMsIC50cmFkZUluQmFyU3RlcDQgI3RyYWRlSW5TdGVwNFllcywgLnRyYWRlSW5CYXJTdGVwNSAjdHJhZGVJblN0ZXA1WWVzLCAudHJhZGVJbkJhclN0ZXA2ICN0cmFkZUluU3RlcDZZZXN7IGJhY2tncm91bmQ6IzAwMmM1ZjsgY29sb3I6I2ZmZmZmZjsgcGFkZGluZzoxMnB4IDZweDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IGJvcmRlci1yYWRpdXM6M3B4OyBib3JkZXI6dW5zZXQ7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGRpc3BsYXk6YmxvY2s7IHRleHQtd3JhcDphdXRvOyB9IC50cmFkZUluQmFyU3RlcDMgI3RyYWRlSW5TdGVwM05veyBiYWNrZ3JvdW5kOiNlMGUwZTA7IGNvbG9yOiMzMzM7IHBhZGRpbmc6MTJweCA2cHg7IHRleHQtZGVjb3JhdGlvbjpub25lOyBib3JkZXItcmFkaXVzOjNweDsgYm9yZGVyOnVuc2V0OyBmb250LXNpemU6MC44NzVyZW0gOyBkaXNwbGF5OmJsb2NrOyB0ZXh0LXdyYXA6YXV0bzsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XICN0cmFkZUluQmFyUG9wdXBGb3JtIC50cmFkZUluQmFyU3RlcDYgLnRyYWRlSW5CYXJTdGVwNlRpdGxleyBmb250LXNpemU6MS4yNXJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAjdHJhZGVJbkJhclBvcHVwX2xpbmUxeyBib3JkZXItcmFkaXVzOjZweDsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XICN0cmFkZUluQmFyUG9wdXBGb3JtIC51cGxvYWRlci1jb250YWluZXIgeyBtYXgtd2lkdGg6NjAwcHg7IHdpZHRoOjEwMCU7IG1hcmdpbjowIGF1dG87IGJhY2tncm91bmQtY29sb3I6I2ZmZjsgcGFkZGluZzoyMHB4OyBib3JkZXItcmFkaXVzOjhweDsgYm94LXNoYWRvdzowIDRweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEpOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnVwbG9hZGVyLWNvbnRhaW5lciBoMiB7IGZvbnQtc2l6ZToxLjJyZW07IG1hcmdpbi1ib3R0b206MTBweDsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAjdHJhZGVJbkJhclBvcHVwRm9ybSAudXBsb2FkZXItY29udGFpbmVyIHAgeyBjb2xvcjojNjY2OyBtYXJnaW4tYm90dG9tOjIwcHg7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXNpemU6MC45cmVtOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgI3RyYWRlSW5CYXJQb3B1cEZvcm0gLmltYWdlLWdyaWQgeyBkaXNwbGF5OmdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoNCwgMWZyKTsgZ2FwOjE1cHg7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAjdHJhZGVJbkJhclBvcHVwRm9ybSAudXBsb2FkLWFyZWEgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgd2lkdGg6MTAwJTsgYXNwZWN0LXJhdGlvOjEgLyAxOyBib3JkZXI6MnB4IGRhc2hlZCAjY2NjOyBib3JkZXItcmFkaXVzOjEwcHg7IGN1cnNvcjpwb2ludGVyOyBvdmVyZmxvdzpoaWRkZW47IGJhY2tncm91bmQtc2l6ZTo5MCU7IGJhY2tncm91bmQtcG9zaXRpb246Y2VudGVyOyBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7IGJhY2tncm91bmQtY29sb3I6I2Y1ZjVmNTsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XICN0cmFkZUluQmFyUG9wdXBGb3JtIC51cGxvYWQtYXJlYSBpbnB1dFt0eXBlPSJmaWxlIl0geyBkaXNwbGF5Om5vbmU7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAjdHJhZGVJbkJhclBvcHVwRm9ybSAucGxhY2Vob2xkZXIgeyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjA7IGxlZnQ6MDsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IG9iamVjdC1maXQ6Y29udGFpbjsgZGlzcGxheTpub25lOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnBsYWNlaG9sZGVyLXRpdGxlIHsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDo1cHg7IGxlZnQ6NTAlOyB0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKTsgZm9udC1zaXplOjAuNXJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IGNvbG9yOiM2NjY7IGJhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpOyBwYWRkaW5nOjFweCA2cHg7IGJvcmRlci1yYWRpdXM6NHB4OyBwb2ludGVyLWV2ZW50czpub25lOyB0ZXh0LWFsaWduOmNlbnRlcjsgd2hpdGUtc3BhY2U6bm93cmFwOyBvdmVyZmxvdzpoaWRkZW47IHRleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAjdHJhZGVJbkJhclBvcHVwRm9ybSAuYWRkLWljb24geyBwb3NpdGlvbjphYnNvbHV0ZTsgYm90dG9tOjVweDsgcmlnaHQ6NXB4OyBmb250LXNpemU6MS4xcmVtOyBjb2xvcjojMDA3QkZGOyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyBib3JkZXItcmFkaXVzOjUwJTsgd2lkdGg6MjhweDsgaGVpZ2h0OjI4cHg7IGRpc3BsYXk6ZmxleDsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgYWxpZ24taXRlbXM6Y2VudGVyOyBib3gtc2hhZG93OjAgMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMik7IH0gI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAjdHJhZGVJbkJhclBvcHVwRm9ybSAuZGVsZXRlLWJ0biB7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6NXB4OyByaWdodDo1cHg7IHdpZHRoOjIwcHg7IGhlaWdodDoyMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwgMCwgMCwgMC43KTsgY29sb3I6d2hpdGU7IGJvcmRlcjpub25lOyBib3JkZXItcmFkaXVzOjUwJTsgZm9udC1zaXplOjAuNzVyZW0gOyBsaW5lLWhlaWdodDoyMHB4OyBjdXJzb3I6cG9pbnRlcjsgZGlzcGxheTpub25lOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnVwbG9hZC1hcmVhOmhvdmVyIC5kZWxldGUtYnRuIHsgZGlzcGxheTpmbGV4OyB9IC50cmFkZUluQm90dG9tTG9nb3sgdGV4dC1hbGlnbjpjZW50ZXI7IGNvbG9yOiNhOWE5YTk7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyBtYXJnaW4tdG9wOjAhaW1wb3J0YW50OyB9IEBtZWRpYSAobWF4LXdpZHRoOjYwMHB4KSB7ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgI3RyYWRlSW5CYXJQb3B1cEZvcm0gLnVwbG9hZGVyLWNvbnRhaW5lciB7IHBhZGRpbmc6MTVweDsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XICN0cmFkZUluQmFyUG9wdXBGb3JtIC5pbWFnZS1ncmlkIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgzLCAxZnIpOyBnYXA6MTBweDsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XICN0cmFkZUluQmFyUG9wdXBGb3JtIC5wbGFjZWhvbGRlci10aXRsZSB7IGZvbnQtc2l6ZTowLjVyZW0gOyB9IH0gQG1lZGlhIChtYXgtd2lkdGg6NDAwcHgpIHsgI3RyYWRlSW5CYXJQb3B1cF9mb3JtVyAjdHJhZGVJbkJhclBvcHVwRm9ybSAuaW1hZ2UtZ3JpZCB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMiwgMWZyKTsgZ2FwOjhweDsgfSAjdHJhZGVJbkJhclBvcHVwX2Zvcm1XICN0cmFkZUluQmFyUG9wdXBGb3JtIC5wbGFjZWhvbGRlci10aXRsZSB7IGZvbnQtc2l6ZTowLjVyZW0gOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgI3RyYWRlSW5CYXJQb3B1cEZvcm0gLmFkZC1pY29uIHsgd2lkdGg6MjRweDsgaGVpZ2h0OjI0cHg7IGZvbnQtc2l6ZToxcmVtOyB9ICN0cmFkZUluQmFyUG9wdXBfZm9ybVcgI3RyYWRlSW5CYXJQb3B1cEZvcm0gLmRlbGV0ZS1idG4geyB3aWR0aDoxNnB4OyBoZWlnaHQ6MTZweDsgZm9udC1zaXplOjAuNjI1cmVtIDsgfSB9Ci8qKiAvY3NzL2FkdmFuY2VkLXNsaWRlci1iYXNlLmNzcyAqKi8KLmFkdmFuY2VkLXNsaWRlciB7IHBvc2l0aW9uOnJlbGF0aXZlOyBvdmVyZmxvdzp2aXNpYmxlOyBvdXRsaW5lOm5vbmU7IG1hcmdpbi1sZWZ0OmF1dG87IG1hcmdpbi1yaWdodDphdXRvOyB9IC5hZHZhbmNlZC1zbGlkZXIgKiB7IG1hcmdpbjowOyBwYWRkaW5nOjA7IH0gLmFkdmFuY2VkLXNsaWRlciAuc2xpZGVyLW1haW4geyBwb3NpdGlvbjphYnNvbHV0ZTsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IHotaW5kZXg6MTA7IH0gLmFkdmFuY2VkLXNsaWRlciAuc2xpZGUtd3JhcHBlciB7IHBvc2l0aW9uOnJlbGF0aXZlOyBvdmVyZmxvdzp2aXNpYmxlOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgei1pbmRleDoxMDsgfSAuYWR2YW5jZWQtc2xpZGVyIHVsLnNsaWRlcyB7IHBvc2l0aW9uOmFic29sdXRlOyBvdmVyZmxvdzpoaWRkZW47IG1hcmdpbjowOyBwYWRkaW5nOjA7IGxpc3Qtc3R5bGU6bm9uZTsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IHotaW5kZXg6MTA7IH0gLmFkdmFuY2VkLXNsaWRlciBsaS5zbGlkZSB7IHBvc2l0aW9uOmFic29sdXRlOyBvdmVyZmxvdzpoaWRkZW47IGRpc3BsYXk6ZmxleDsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IHZpc2liaWxpdHk6aGlkZGVuOyBsaXN0LXN0eWxlOm5vbmU7IGZpbHRlcjphbHBoYShvcGFjaXR5PTEwMCk7IG9wYWNpdHk6MTsgfSAuYWR2YW5jZWQtc2xpZGVyIGxpLnNsaWRlIC5pbWFnZSwgLmFkdmFuY2VkLXNsaWRlciBsaS5zbGlkZSAudGh1bWJuYWlsLCAuYWR2YW5jZWQtc2xpZGVyIGxpLnNsaWRlIC5jYXB0aW9uLCAuYWR2YW5jZWQtc2xpZGVyIGxpLnNsaWRlIC5odG1sIHsgcG9zaXRpb246YWJzb2x1dGU7IH0gLmFkdmFuY2VkLXNsaWRlciBsaS5zbGlkZSBpbWcsIC5hZHZhbmNlZC1zbGlkZXIgLnRodW1ibmFpbCBpbWcgeyBtYXgtd2lkdGg6bm9uZTsgbWF4LWhlaWdodDpub25lOyBib3JkZXI6MCBub25lOyB9IC5hZHZhbmNlZC1zbGlkZXIgbGkuc2xpZGUgLmh0bWwgeyBvdmVyZmxvdzpoaWRkZW47IH0gLmFkdmFuY2VkLXNsaWRlciBsaS5zbGlkZSAudmlkZW8geyB9IC5hZHZhbmNlZC1zbGlkZXIgbGkuc2xpZGUuYWN0aXZlIC52aWRlbyB7IH0gLmFkdmFuY2VkLXNsaWRlciAuc2xpY2UtY29udGFpbmVyIHsgcG9zaXRpb246YWJzb2x1dGU7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyB6LWluZGV4OjEwOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnN3aXBlYWJsZS1jb250YWluZXIgeyBwb3NpdGlvbjphYnNvbHV0ZTsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IG92ZXJmbG93OmhpZGRlbjsgfSAuYWR2YW5jZWQtc2xpZGVyIC5zd2lwZWFibGUtY29udGFpbmVyIC5zbGlkZXMgeyAtd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7IC1tb3otdXNlci1zZWxlY3Q6bm9uZTsgLW8tdXNlci1zZWxlY3Q6bm9uZTsgdXNlci1zZWxlY3Q6bm9uZTsgfSAuYWR2YW5jZWQtc2xpZGVyIC5zd2lwZWFibGUtY29udGFpbmVyIC5zbGlkZXMgLnNlbGVjdGFibGUgeyAtd2Via2l0LXVzZXItc2VsZWN0OmF1dG87IC1tb3otdXNlci1zZWxlY3Q6YXV0bzsgLW8tdXNlci1zZWxlY3Q6YXV0bzsgdXNlci1zZWxlY3Q6YXV0bzsgY3Vyc29yOmF1dG87IH0gLmFkdmFuY2VkLXNsaWRlciAuc3dpcGVhYmxlLWNvbnRhaW5lciAuZ3JhYiB7IGN1cnNvcjpncmFiOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnN3aXBlYWJsZS1jb250YWluZXIgLmdyYWJiaW5nIHsgY3Vyc29yOmdyYWJiaW5nOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnNsaWNlIHsgZGlzcGxheTpibG9jazsgcG9zaXRpb246YWJzb2x1dGU7IH0gLmFkdmFuY2VkLXNsaWRlciAucHJlbG9hZGVyIHsgcG9zaXRpb246YWJzb2x1dGU7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvcHJlbG9hZGVyMi5naWYpIG5vLXJlcGVhdDsgd2lkdGg6NjJweDsgaGVpZ2h0OjE0cHg7IHotaW5kZXg6MTU7IH0gLmFkdmFuY2VkLXNsaWRlciAuc2xpZGUtYXJyb3dzIHsgcG9zaXRpb246c3RhdGljOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnNsaWRlLWFycm93cyBhIHsgcG9zaXRpb246YWJzb2x1dGU7IHotaW5kZXg6MzA7IGN1cnNvcjpwb2ludGVyOyB9IC5hZHZhbmNlZC1zbGlkZXIgLmxpZ2h0Ym94LWljb24geyBwb3NpdGlvbjphYnNvbHV0ZTsgd2lkdGg6ODBweDsgaGVpZ2h0OjgwcHg7IHRvcDo1MCU7IGxlZnQ6NTAlOyBtYXJnaW4tdG9wOi00MHB4OyBtYXJnaW4tbGVmdDotNDBweDsgY3Vyc29yOnBvaW50ZXI7IHotaW5kZXg6MTA7IH0gLmFkdmFuY2VkLXNsaWRlciAubGlnaHRib3gtaWNvbi5wbGF5IHsgYmFja2dyb3VuZC1pbWFnZTp1cmwoL2ltYWdlcy9saWdodGJveF9wbGF5LnBuZyk7IH0gLmFkdmFuY2VkLXNsaWRlciAubGlnaHRib3gtaWNvbi5tYWduaWZ5aW5nIHsgYmFja2dyb3VuZDp1cmwoL2ltYWdlcy9saWdodGJveF9tYWduaWZ5aW5nX3NtYWxsLnBuZykgbm8tcmVwZWF0OyBmbG9hdDpsZWZ0OyBsZWZ0OjA7IHRvcDowOyBtYXJnaW4tbGVmdDoxMHB4OyBtYXJnaW4tdG9wOjEwcHg7IGRpc3BsYXk6bm9uZTsgfSB9IC5hZHZhbmNlZC1zbGlkZXIgLmxpZ2h0Ym94LWljb24uaHlwZXJsaW5rIHsgYmFja2dyb3VuZC1pbWFnZTp1cmwoL2ltYWdlcy9saWdodGJveF9oeXBlcmxpbmsucG5nKTsgfSAuYWR2YW5jZWQtc2xpZGVyIC5zbGlkZXNob3ctY29udHJvbHMgeyBwb3NpdGlvbjphYnNvbHV0ZTsgei1pbmRleDo0MDsgY3Vyc29yOnBvaW50ZXI7IH0gLmFkdmFuY2VkLXNsaWRlciAuc2hhZG93IHsgcG9zaXRpb246YWJzb2x1dGU7IGhlaWdodDo5NHB4OyBtYXJnaW4tdG9wOi01MHB4OyB6LWluZGV4OjU7IH0gLmFkdmFuY2VkLXNsaWRlciAuc2hhZG93IC5zaGFkb3ctbGVmdCwgLmFkdmFuY2VkLXNsaWRlciAuc2hhZG93IC5zaGFkb3ctcmlnaHQsIC5hZHZhbmNlZC1zbGlkZXIgLnNoYWRvdyAuc2hhZG93LW1pZGRsZSB7IGZsb2F0OmxlZnQ7IH0gLmFkdmFuY2VkLXNsaWRlciAuZnVsbC1zY3JlZW4tY29udHJvbHMgeyBiYWNrZ3JvdW5kOnVybCgvaW1hZ2VzL2Z1bGxzY3JlZW4ucG5nKSBuby1yZXBlYXQ7IHBvc2l0aW9uOmFic29sdXRlOyB3aWR0aDozMXB4OyBoZWlnaHQ6MjdweDsgdG9wOjIwcHg7IGxlZnQ6MjBweDsgei1pbmRleDo2MDsgY3Vyc29yOnBvaW50ZXI7IH0gLmFkdmFuY2VkLXNsaWRlciAudGltZXItYW5pbWF0aW9uIHsgcG9zaXRpb246YWJzb2x1dGU7IHotaW5kZXg6NTA7IH0gLmFkdmFuY2VkLXNsaWRlciBjYW52YXMgeyBwb3NpdGlvbjphYnNvbHV0ZTsgfSAuYWR2YW5jZWQtc2xpZGVyIC50aW1lci1hbmltYXRpb24gLnRpbWVyLWFuaW1hdGlvbi1jb250cm9scyB7IHBvc2l0aW9uOmFic29sdXRlOyBjdXJzb3I6cG9pbnRlcjsgd2lkdGg6MjBweDsgaGVpZ2h0OjIwcHg7IHRvcDo1MCU7IGxlZnQ6NTAlOyBtYXJnaW4tdG9wOi0xMHB4OyBtYXJnaW4tbGVmdDotMTBweDsgfSAuYWR2YW5jZWQtc2xpZGVyIC50aW1lci1hbmltYXRpb24gLnRpbWVyLWFuaW1hdGlvbi1jb250cm9scyB7IGJhY2tncm91bmQ6dXJsKC9pbWFnZXMvcGxheXBhdXNlX3NtYWxsLnBuZykgbm8tcmVwZWF0OyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRpbWVyLWFuaW1hdGlvbi5wbGF5IC50aW1lci1hbmltYXRpb24tY29udHJvbHMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMHB4IDA7IH0gLmFkdmFuY2VkLXNsaWRlciAudGltZXItYW5pbWF0aW9uLnBhdXNlIC50aW1lci1hbmltYXRpb24tY29udHJvbHMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgMDsgfSAuYWR2YW5jZWQtc2xpZGVyIC5jYXB0aW9uLWNvbnRhaW5lciB7IG92ZXJmbG93OmhpZGRlbjsgcG9zaXRpb246YWJzb2x1dGU7IH0gLmFkdmFuY2VkLXNsaWRlciAuY2FwdGlvbi1jb250YWluZXIgLndyYXBwZXIgeyBwb3NpdGlvbjphYnNvbHV0ZTsgfSAuYWR2YW5jZWQtc2xpZGVyIC5jYXB0aW9uLWNvbnRhaW5lciAuYmFja2dyb3VuZCB7IHBvc2l0aW9uOmFic29sdXRlOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgfSAuYWR2YW5jZWQtc2xpZGVyIC50aHVtYm5haWwtd3JhcHBlciB7IHBvc2l0aW9uOmFic29sdXRlOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRodW1ibmFpbCB7IGJhY2tncm91bmQtaW1hZ2U6dXJsKC9pbWFnZXMvcHJlbG9hZGVyLmdpZik7IGJhY2tncm91bmQtcG9zaXRpb246Y2VudGVyOyBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7IHBvc2l0aW9uOmFic29sdXRlOyBvdmVyZmxvdzpoaWRkZW47IH0gLmFkdmFuY2VkLXNsaWRlciAuc2xpZGUtYnV0dG9ucyB7IHBvc2l0aW9uOmFic29sdXRlOyB6LWluZGV4OjIwOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnNsaWRlLWJ1dHRvbnMgLmxlZnQsIC5hZHZhbmNlZC1zbGlkZXIgLnNsaWRlLWJ1dHRvbnMgLnJpZ2h0LCAuYWR2YW5jZWQtc2xpZGVyIC5zbGlkZS1idXR0b25zIC5taWRkbGUgeyBmbG9hdDpsZWZ0OyB9IC5hZHZhbmNlZC1zbGlkZXIgLnNsaWRlLWJ1dHRvbnMgYSB7IHBvc2l0aW9uOnJlbGF0aXZlOyBjdXJzb3I6cG9pbnRlcjsgZmxvYXQ6bGVmdDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IHRleHQtYWxpZ246Y2VudGVyOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRodW1ibmFpbC1zY3JvbGxlciB7IHBvc2l0aW9uOmFic29sdXRlOyB6LWluZGV4OjIwOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRodW1ibmFpbC1zY3JvbGxlciAudmlzaWJsZS1jb250YWluZXIgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgb3ZlcmZsb3c6aGlkZGVuOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRodW1ibmFpbC1zY3JvbGxlciAuY29udGFpbmVyIHsgcG9zaXRpb246YWJzb2x1dGU7IG92ZXJmbG93OnZpc2libGU7IHRvcDowOyBsZWZ0OjA7IGxpc3Qtc3R5bGU6bm9uZTsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgfSAuYWR2YW5jZWQtc2xpZGVyIC50aHVtYm5haWwtc2Nyb2xsZXIgLnRodW1ibmFpbC13cmFwcGVyIHsgY3Vyc29yOnBvaW50ZXI7IGxpc3Qtc3R5bGU6bm9uZTsgfSAuYWR2YW5jZWQtc2xpZGVyIC50aHVtYm5haWwtc2Nyb2xsZXIgLmxpZ2h0Ym94LWljb24geyBwb3NpdGlvbjphYnNvbHV0ZTsgd2lkdGg6MzBweDsgaGVpZ2h0OjMwcHg7IHRvcDo1MCU7IGxlZnQ6NTAlOyBtYXJnaW4tdG9wOi0xNXB4OyBtYXJnaW4tbGVmdDotMTVweDsgY3Vyc29yOnBvaW50ZXI7IH0gLmFkdmFuY2VkLXNsaWRlciAudGh1bWJuYWlsLXNjcm9sbGVyIC5saWdodGJveC1pY29uLnBsYXkgeyBiYWNrZ3JvdW5kLWltYWdlOnVybCgvaW1hZ2VzL2xpZ2h0Ym94X3BsYXlfc21hbGwucG5nKTsgfSAuYWR2YW5jZWQtc2xpZGVyIC50aHVtYm5haWwtc2Nyb2xsZXIgLmxpZ2h0Ym94LWljb24ubWFnbmlmeWluZyB7IGJhY2tncm91bmQtaW1hZ2U6dXJsKC9pbWFnZXMvbGlnaHRib3hfbWFnbmlmeWluZ19zbWFsbC5wbmcpOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRodW1ibmFpbC1zY3JvbGxlciAubGlnaHRib3gtaWNvbi5oeXBlcmxpbmsgeyBiYWNrZ3JvdW5kLWltYWdlOnVybCgvaW1hZ2VzL2xpZ2h0Ym94X2h5cGVybGlua19zbWFsbC5wbmcpOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRodW1ibmFpbCAuY2FwdGlvbiB7IHBvc2l0aW9uOmFic29sdXRlOyB3aWR0aDoxMDAlOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRodW1ibmFpbCAuY2FwdGlvbiAuYmFja2dyb3VuZCB7IHBvc2l0aW9uOmFic29sdXRlOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgei1pbmRleDoxMDsgfSAuYWR2YW5jZWQtc2xpZGVyIC50aHVtYm5haWwgLmNhcHRpb24gLmNvbnRlbnQgeyBwb3NpdGlvbjphYnNvbHV0ZTsgd2lkdGg6MTAwJTsgei1pbmRleDoyMDsgfSAuYWR2YW5jZWQtc2xpZGVyIC50aHVtYm5haWwtc2Nyb2xsZXIgLmFycm93cyBhIHsgcG9zaXRpb246YWJzb2x1dGU7IGN1cnNvcjpwb2ludGVyOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRodW1ibmFpbC1zY3JvbGxlciAuYnV0dG9ucyB7IHBvc2l0aW9uOmFic29sdXRlOyB3aWR0aDphdXRvOyB9IC5hZHZhbmNlZC1zbGlkZXIgLnRodW1ibmFpbC1zY3JvbGxlciAuYnV0dG9ucyBhIHsgcG9zaXRpb246YWJzb2x1dGU7IGN1cnNvcjpwb2ludGVyOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgfSAuYWR2YW5jZWQtc2xpZGVyLXRvb2x0aXAgeyBwb3NpdGlvbjphYnNvbHV0ZTsgei1pbmRleDo5OTk5OyB9IC5vZW0taW1nLXNsaWRlciAuc2xpZGUgYSB7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyB9IC5vZW0taW1nLXNsaWRlciAuc2xpZGU6bnRoLWNoaWxkKC1uKzQpIGEgaW1neyB3aWR0aDoxMTUlICFpbXBvcnRhbnQ7IH0gLm9lbS1pbWctc2xpZGVyIC5zbGlkZSBhIGltZ3sgaGVpZ2h0OmF1dG8gIWltcG9ydGFudDsgbWFyZ2luOjAgIWltcG9ydGFudDsgbWF4LXdpZHRoOm5vbmUgIWltcG9ydGFudDsgbWF4LWhlaWdodDpub25lICFpbXBvcnRhbnQ7IHBvc2l0aW9uOnJlbGF0aXZlICFpbXBvcnRhbnQ7IGxlZnQ6aW5pdGlhbCAhaW1wb3J0YW50OyB0b3A6aW5pdGlhbCAhaW1wb3J0YW50OyBtYXgtd2lkdGg6dW5zZXQgIWltcG9ydGFudDsgbWF4LWhlaWdodDp1bnNldCAhaW1wb3J0YW50OyB9IC5vZW0taW1nLXNsaWRlciAjZmlyc3RTbGlkZXJJbWcgLnBsYWNlaG9sZGVyIHsgYmFja2dyb3VuZC1zaXplOjExNSU7IH0KLyoqIC9jc3MvcGFnZWJhbm5lci5jc3MgKiovCiN0b3BCYW5uZXJJbWFnZSB7IHBvc2l0aW9uOnJlbGF0aXZlOyB9ICN0b3BCYW5uZXJJbWFnZSAudG9wQmFubmVySW1hZ2UtLWRpc2NsYWltZXItY29udGFpbmVyIHsgei1pbmRleDoxMTA7IGNvbG9yOnZhcigtLWRlZmF1bHQtYmxhY2spOyBmb250LXNpemU6dmFyKC0tZnMpOyBwYWRkaW5nOjVweCAxMHB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgZGlzcGxheTpub25lOyB9ICN0b3BCYW5uZXJJbWFnZSAudG9wQmFubmVySW1hZ2UtLWRpc2NsYWltZXItY29udGFpbmVyIC5mYS10aW1lcyB7IGRpc3BsYXk6bm9uZTsgfSAjdG9wQmFubmVySW1hZ2UgLnRvcEJhbm5lckltYWdlLS1kaXNjbGFpbWVyLWNvbnRyb2wgeyB0ZXh0LWFsaWduOmNlbnRlcjsgY3Vyc29yOnBvaW50ZXI7IHRleHQtd3JhcDpub3dyYXA7IH0gI3RvcEJhbm5lckltYWdlIC50b3BCYW5uZXJJbWFnZS0tZGlzY2xhaW1lci1jb250cm9sID4gYnV0dG9uIHsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgZm9udC1zaXplOnZhcigtLWZzKTsgY29sb3I6dmFyKC0td2hpdGUpOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJsYWNrKTsgd2lkdGg6MTAwJTsgcGFkZGluZzowLjc1cmVtOyB9ICN0b3BCYW5uZXJJbWFnZTpub3QoOmhhcygqKSkgeyBkaXNwbGF5Om5vbmU7IH0gI3RvcEJhbm5lckltYWdlW2RhdGEtaW52Y2F0PSJuZXdpbnYiXTpoYXMoLnVzZWRJbnZCYW5uZXI6b25seS1jaGlsZCkgeyBkaXNwbGF5Om5vbmU7IH0gI3RvcEJhbm5lckltYWdlW2RhdGEtaW52Y2F0PSJ1c2VkIl06aGFzKC5uZXdJbnZCYW5uZXI6b25seS1jaGlsZCkgeyBkaXNwbGF5Om5vbmU7IH0gI3RvcEJhbm5lckltYWdlW2RhdGEtaW52Y2F0PSJuZXdpbnYiXSAudXNlZEludkJhbm5lciB7IGRpc3BsYXk6bm9uZTsgfSAjdG9wQmFubmVySW1hZ2VbZGF0YS1pbnZjYXQ9InVzZWQiXSAubmV3SW52QmFubmVyIHsgZGlzcGxheTpub25lOyB9ICN0b3BCYW5uZXJJbWFnZVtkYXRhLWludmNhdD0ibmV3aW52Il06aGFzKC5uZXdJbnZCYW5uZXIpICNkZWZhdWx0VG9wQmFubmVyIHsgZGlzcGxheTpub25lOyB9ICN0b3BCYW5uZXJJbWFnZVtkYXRhLWludmNhdD0idXNlZCJdOmhhcygudXNlZEludkJhbm5lcikgI2RlZmF1bHRUb3BCYW5uZXIgeyBkaXNwbGF5Om5vbmU7IH0gI3RvcEJhbm5lckltYWdlID4gaW1neyB3aWR0aDoxMDAlOyB9IEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDo3NjBweCkgeyAjdG9wQmFubmVySW1hZ2UgLnRvcEJhbm5lckltYWdlLS1kaXNjbGFpbWVyLWNvbnRyb2wgeyBwb3NpdGlvbjphYnNvbHV0ZTsgei1pbmRleDoxMDI7IGxlZnQ6NTAlOyB0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKTsgYm90dG9tOjAuNzVyZW07IH0gI3RvcEJhbm5lckltYWdlIC50b3BCYW5uZXJJbWFnZS0tZGlzY2xhaW1lci1jb250cm9sID4gYnV0dG9uIHsgd2lkdGg6YXV0bzsgYm9yZGVyLXJhZGl1czozcHg7IGJhY2tncm91bmQtY29sb3I6cmdiYSgwLCAwLCAwLCAwLjgpOyBib3JkZXI6bm9uZTsgY29sb3I6dmFyKC0td2hpdGUpOyBmb250LXNpemU6dmFyKC0tZnMtMik7IHRleHQtYWxpZ246Y2VudGVyOyBjdXJzb3I6cG9pbnRlcjsgZGlzcGxheTppbmxpbmUtYmxvY2s7IHBhZGRpbmc6OHB4IDEzcHg7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9ICN0b3BCYW5uZXJJbWFnZSAudG9wQmFubmVySW1hZ2UtLWRpc2NsYWltZXItY29udGFpbmVyIHsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDowOyB3aWR0aDpjYWxjKDEwMCUgLSAyMHB4KTsgaGVpZ2h0OmNhbGMoMTAwJSAtIDEwcHgpOyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsMC44KTsgY29sb3I6dmFyKC0tbGlnaHQpOyBmb250LXNpemU6dmFyKC0tZnMpOyB9ICN0b3BCYW5uZXJJbWFnZSAudG9wQmFubmVySW1hZ2UtLWRpc2NsYWltZXItY29udGFpbmVyIC5mYS10aW1lcyB7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wIDoxMHB4OyByaWdodDoxMCU7IGN1cnNvcjpwb2ludGVyOyB9ICN0b3BCYW5uZXJJbWFnZSAudG9wQmFubmVySW1hZ2UtLWRpc2NsYWltZXItY29udGFpbmVyID4gZGl2IHsgcG9zaXRpb246YWJzb2x1dGU7IHdpZHRoOjc1JTsgdG9wOjUwJTsgbGVmdDo1MCU7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSk7IGhlaWdodDo5MCU7IG92ZXJmbG93LXg6aGlkZGVuOyBvdmVyZmxvdy15OmF1dG87IH0gfQovKiogL2Nzcy90b2FzdHIuY3NzICoqLwoudG9hc3QtdGl0bGV7Zm9udC13ZWlnaHQ6Ym9sZH0udG9hc3QtbWVzc2FnZXstbXMtd29yZC13cmFwOmJyZWFrLXdvcmQ7d29yZC13cmFwOmJyZWFrLXdvcmR9LnRvYXN0LW1lc3NhZ2UgYSwudG9hc3QtbWVzc2FnZSBsYWJlbHtjb2xvcjojZmZmfS50b2FzdC1tZXNzYWdlIGE6aG92ZXJ7Y29sb3I6I2NjYzt0ZXh0LWRlY29yYXRpb246bm9uZX0udG9hc3QtY2xvc2UtYnV0dG9ue3Bvc2l0aW9uOnJlbGF0aXZlO3JpZ2h0Oi0wLjNlbTt0b3A6LTAuM2VtO2Zsb2F0OnJpZ2h0O2ZvbnQtc2l6ZToxLjI1cmVtIDtmb250LXdlaWdodDpib2xkO2NvbG9yOmluaGVyaXQ7LXdlYmtpdC10ZXh0LXNoYWRvdzowIDFweCAwICNmZmY7dGV4dC1zaGFkb3c6MCAxcHggMCAjZmZmO29wYWNpdHk6Ljg7LW1zLWZpbHRlcjphbHBoYShvcGFjaXR5PTgwKTtmaWx0ZXI6YWxwaGEob3BhY2l0eT04MCl9LnRvYXN0LWNsb3NlLWJ1dHRvbjpob3ZlciwudG9hc3QtY2xvc2UtYnV0dG9uOmZvY3Vze2NvbG9yOiMwMDAwMDA7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y3Vyc29yOnBvaW50ZXI7b3BhY2l0eTouNDstbXMtZmlsdGVyOmFscGhhKG9wYWNpdHk9NDApO2ZpbHRlcjphbHBoYShvcGFjaXR5PTQwKX1idXR0b24udG9hc3QtY2xvc2UtYnV0dG9ue3BhZGRpbmc6MDtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JvcmRlcjowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lfS50b2FzdC10b3AtY2VudGVye3RvcDowO3JpZ2h0OjA7d2lkdGg6MTAwJX0udG9hc3QtYm90dG9tLWNlbnRlcntib3R0b206MDtyaWdodDowO3dpZHRoOjEwMCV9LnRvYXN0LXRvcC1mdWxsLXdpZHRoe3RvcDowO3JpZ2h0OjA7d2lkdGg6MTAwJX0udG9hc3QtYm90dG9tLWZ1bGwtd2lkdGh7Ym90dG9tOjA7cmlnaHQ6MDt3aWR0aDoxMDAlfS50b2FzdC10b3AtbGVmdHt0b3A6MTJweDtsZWZ0OjEycHh9LnRvYXN0LXRvcC1yaWdodHt0b3A6MTJweDtyaWdodDoxMnB4fS50b2FzdC1ib3R0b20tcmlnaHR7cmlnaHQ6MTJweDtib3R0b206MTJweH0udG9hc3QtYm90dG9tLWxlZnR7Ym90dG9tOjEycHg7bGVmdDoxMnB4fSN0b2FzdC1jb250YWluZXJ7cG9zaXRpb246Zml4ZWQ7ei1pbmRleDo5OTk5OTk7Y29sb3I6I0ZGRn0jdG9hc3QtY29udGFpbmVyICp7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94fSN0b2FzdC1jb250YWluZXI+ZGl2e3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmhpZGRlbjttYXJnaW46MCAwIDZweDtwYWRkaW5nOjE1cHggMTVweCAxNXB4IDUwcHg7d2lkdGg6MzAwcHg7LW1vei1ib3JkZXItcmFkaXVzOjNweCAzcHggM3B4IDNweDstd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4IDNweCAzcHggM3B4O2JvcmRlci1yYWRpdXM6M3B4IDNweCAzcHggM3B4O2JhY2tncm91bmQtcG9zaXRpb246MTVweCBjZW50ZXI7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0Oy1tb3otYm94LXNoYWRvdzowIDAgMTJweCAjOTk5Oy13ZWJraXQtYm94LXNoYWRvdzowIDAgMTJweCAjOTk5O2JveC1zaGFkb3c6MCAwIDEycHggIzk5OTtjb2xvcjppbmhlcml0O29wYWNpdHk6Ljg7LW1zLWZpbHRlcjphbHBoYShvcGFjaXR5PTgwKTtmaWx0ZXI6YWxwaGEob3BhY2l0eT04MCl9I3RvYXN0LWNvbnRhaW5lcj46aG92ZXJ7LW1vei1ib3gtc2hhZG93OjAgMCAxMnB4ICMwMDA7LXdlYmtpdC1ib3gtc2hhZG93OjAgMCAxMnB4ICMwMDA7Ym94LXNoYWRvdzowIDAgMTJweCAjMDAwO29wYWNpdHk6MTstbXMtZmlsdGVyOmFscGhhKG9wYWNpdHk9MTAwKTtmaWx0ZXI6YWxwaGEob3BhY2l0eT0xMDApO2N1cnNvcjpwb2ludGVyfSN0b2FzdC1jb250YWluZXI+LnRvYXN0LWluZm97YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUFHd1NVUkJWRWhMdFphOVNnTkJFTWM5c1V4eFJjb1VLU3pTV0loWHBGTWhoWVdGaGFCZzR5UFlpV0NYWnhCTEVSc0xSUzNFUWtFZndDS2RqV0pBd1NLQ2dvS0NjdWR2NE81WUxydDdFemdYaGlVMy80K2IyY2ttd1ZqSlNwS2tRNndBaTRnd2hUK3ozd1JCY0V6MHlqU3NlVVRyY1J5ZnNIc1htRDBBbWJIT0M5SWk4VkltbnVYQlBnbEhwUTV3d1NWTTdzTm5URzdaYTRKd0RkQ2p4eUFpSDNueUEybXRhVEp1ZmlEWjVkQ2FxbEl0SUxoMU5IYXRmTjVza3ZqeDlaMzhtNjlDZ3p1WG1aZ1ZyUElHRTc2M0p4OXFLc1JveldZdzZ4T0hkRVIrbm4yS2tPK0JiK1VWNUNCTjZXQzZRdEJnYlJWb3pyYWhBYm1tNkh0VXNndFBDMTl0RmR4WFpZQk9ma2JtRkoxVmFIQTFWQUhqZDBwcDcwb1RaenZSK0VWcngyWWdmZHNxNmV1NTVCSFlSOGhsY2tpK24ra0VSVUZHOEJyQTBCd2plQXYyTThXTFFCdGN5K1NENmZOc21uQjNBbEJMcmdUdFZXMWMyUU40YlZXTEFUYUlTNjBKMkR1NXkxVGlKZ2pTQnZGVlpnVG13Q1UrZEFaRm9QeEdFRXM4bnlIQzlCd2UyR3ZFSnYyV1haYjB2amR5RlQ0Q3hrM2Uva0lxbE9Hb1ZMd3dQZXZwWUhUKzAwVCtoV3dYRGY0QUpBT1VxV2NEaGJ3QUFBQUFTVVZPUks1Q1lJST0iKSAhaW1wb3J0YW50fSN0b2FzdC1jb250YWluZXI+LnRvYXN0LWVycm9ye2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBSE9TVVJCVkVoTHJaYS9TZ05CRU1aemgwV0tDQ2xTQ0thSVlPRUQrQUFLZVFRTEc4SFd6dExDSW1CcllhZGdJZFkrZ0lLTllrQkZTd3U3Q0FvcUNna2tvR0JJL0UyOFBkYkxabWVETGd6WnpjeDgzL3paMlNTWEMxajlmcitJMUhxOTNnMnl4SDRpd00xdmtvQldBZHhDbXB6VHhma04yUmN5Wk5hSEZJa1NvMTArOGtneGtYSVVSVjVIR3hUbUZ1Yzc1QjJSZlFrcHhIRzhhQWdhQUZhMHRBSHFZRmZRN0l3ZTJ5aE9EazgrSjRDN3lBb1JUV0kzdy80a2xHUmdSNGxPN1JwbjkrZ3ZNeVdwK3V4Rmg4K0grQVJsZ04xbkp1SnVRQVl2TmtFbndHRmNrMThFcjRxM2VnRWMvb08rbWhMZEtnUnloZE5GaWFjQzBybE9DYmhOVno0SDlGbkFZZ0RCdlUzUUlpb1psSkZMSnRzb0hZUkRmaVpvVXlJeHFDdFJwVmxBTnEwRVU0ZEFwanJ0Z2V6UEZhZDVTMTlXZ2prYzBoTlZudUY0SGpWQTZDN1FyU0lieWxCK29aZTNhSGdCc3FsTnFLWUg0OGpYeUpLTXVBYml5Vko4S3phQjNlUmMwcGc5VndRNG5pRnJ5STY4cWlPaTNBYmp3ZHNmbkF0azBiQ2pUTEpLcjZtckQ5ZzhpcS9TL0I4MWhndU9NbFFUblZ5RzQwd0Fjam5tZ3NDTkVTRHJqbWU3d2ZmdFA0UDdTUDROM0NKWmR2em9OeUdxMmMvSFdPWEpHc3ZWZytSQS9rMk1DL3dONkkyWUEyUHQ4R2tBQUFBQVNVVk9SSzVDWUlJPSIpICFpbXBvcnRhbnR9I3RvYXN0LWNvbnRhaW5lcj4udG9hc3Qtc3VjY2Vzc3tiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCZ0FBQUFZQ0FZQUFBRGdkejM0QUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQURzTUFBQTdEQWNkdnFHUUFBQURzU1VSQlZFaExZMkFZQmZRTWdmLy8vM1A4Ky9ldkFJZ3ZBL0ZzSUYrQmF2WUREV01CR3JvYVNNTUJpRThWQzdBWkRySUZhTUZuaWkzQVpUalVnc1VVV1VEQThPZEFINmlRYlFFaHc0SHlHc1BFY0tCWEJJQzRBUmhleDRHNEJzam13ZVUxc29JRmFHZy9XdG9GWlJJWmRFdklNaHhrQ0NqWElWc0FUVjZnRkdBQ3M0UnN3MEVHZ0lJSDNRSllKZ0hTQVJRWkRyV0FCK2phd3pncytRMlVPNDlEN2puUlNSR29FRlJJTGNkbUVNV0dJMGNtMEpKMlFwWUExUkR2Y216SkVXaEFCaEQvcHFyTDBTMENXdUFCS2duUmtpOWxMc2VTN2cyQWxxd0hXUVNLSDRvS0xySUxwUkdoRVFDdzJMaVJVSWE0bHdBQUFBQkpSVTVFcmtKZ2dnPT0iKSAhaW1wb3J0YW50fSN0b2FzdC1jb250YWluZXI+LnRvYXN0LXdhcm5pbmd7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUFHWVNVUkJWRWhMNVpTdlRzTlFGTWJYWkdJQ01ZR1ltSmhBUUlKQUlDWVFQQUFDaVNEQjhBaUlDUVFKVDRDcVFFd2dKdllBU0FRQ2laaVltSmhBSUJBVENBUkp5KzlyVHNsZGQ4c0t1MU0wK2RMYjA1N3Y2L2xicS8yckswbVMvVFJOajljV05BS1BZSUpJSTdnSXhDY1E1MWN2cUlEK0dJRVg4QVNHNEIxYks1Z0laRmVRZm9KZEVYT2ZnWDRRQVFnN2tIMkE2NXlRODdseXhiMjdzZ2drQXpBdUZoYmJnMUsya2dDa0IxYlZ3eUlSOW0yTDdQUlBJaERVSVhnR3R5S3c1NzV5ejNsVE5zNlg0SlhualYrTEtNL20zTXlkblRidE9LSWp0ejZWaENCcTR2U20zbmNkckQybGswVmdVWFNWS2pWREpYSnppalcxUlFkc1U3Rjc3SGU4dTY4a29OWlR6OE96NXlHYTZKM0gzbFoweFlnWEJLMlF5bWxXV0ErUlduWWhza0xCdjJ2bUUraEJNQ3RiQTdLWDVkcld5UlQvMkpzcVoySXZmQjlZNGJXRE5NRmJKUkZtQzlFNzRTb1MwQ3F1bHdqa0MwKzVicGNWMUNaOE5NZWo0cGp5MFUrZG9EUXNHeW8xaHpWSnR0SWpoUTdHbkJ0UkZOMVVhclVsSDhGM3hpY3QrSFkwN3JFem9VR1BsV2NqUkZScjQvZ0NoWmdjM1pMMmQ4b0FBQUFBU1VWT1JLNUNZSUk9IikgIWltcG9ydGFudH0jdG9hc3QtY29udGFpbmVyLnRvYXN0LXRvcC1jZW50ZXI+ZGl2LCN0b2FzdC1jb250YWluZXIudG9hc3QtYm90dG9tLWNlbnRlcj5kaXZ7d2lkdGg6MzAwcHg7bWFyZ2luOmF1dG99I3RvYXN0LWNvbnRhaW5lci50b2FzdC10b3AtZnVsbC13aWR0aD5kaXYsI3RvYXN0LWNvbnRhaW5lci50b2FzdC1ib3R0b20tZnVsbC13aWR0aD5kaXZ7d2lkdGg6OTYlO21hcmdpbjphdXRvfS50b2FzdHtiYWNrZ3JvdW5kLWNvbG9yOiMwMzAzMDN9LnRvYXN0LXN1Y2Nlc3N7YmFja2dyb3VuZC1jb2xvcjojNTFhMzUxfS50b2FzdC1lcnJvcntiYWNrZ3JvdW5kLWNvbG9yOiNiZDM2MmZ9LnRvYXN0LWluZm97YmFja2dyb3VuZC1jb2xvcjojMmY5NmI0fS50b2FzdC13YXJuaW5ne2JhY2tncm91bmQtY29sb3I6I2Y4OTQwNn0udG9hc3QtcHJvZ3Jlc3N7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO2JvdHRvbTowO2hlaWdodDo0cHg7YmFja2dyb3VuZC1jb2xvcjojMDAwO29wYWNpdHk6LjQ7LW1zLWZpbHRlcjphbHBoYShvcGFjaXR5PTQwKTtmaWx0ZXI6YWxwaGEob3BhY2l0eT00MCl9QG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDoyNDBweCl7I3RvYXN0LWNvbnRhaW5lcj5kaXZ7cGFkZGluZzo4cHggOHB4IDhweCA1MHB4O3dpZHRoOjExZW19I3RvYXN0LWNvbnRhaW5lciAudG9hc3QtY2xvc2UtYnV0dG9ue3JpZ2h0Oi0wLjJlbTt0b3A6LTAuMmVtfX1AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjI0MXB4KSBhbmQgKG1heC13aWR0aDo0ODBweCl7I3RvYXN0LWNvbnRhaW5lcj5kaXZ7cGFkZGluZzo4cHggOHB4IDhweCA1MHB4O3dpZHRoOjE4ZW19I3RvYXN0LWNvbnRhaW5lciAudG9hc3QtY2xvc2UtYnV0dG9ue3JpZ2h0Oi0wLjJlbTt0b3A6LTAuMmVtfX1AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjQ4MXB4KSBhbmQgKG1heC13aWR0aDo3NjhweCl7I3RvYXN0LWNvbnRhaW5lcj5kaXZ7cGFkZGluZzoxNXB4IDE1cHggMTVweCA1MHB4O3dpZHRoOjI1ZW19fQovKiogL2Nzcy9zcXVhcmVfYnV0dG9ucy5jc3MgKiovCmJ1dHRvbjpub3QoLmJ0bi1yb3VuZCksIGlucHV0W3R5cGU9c3VibWl0XSwgaW5wdXRbdHlwZT1idXR0b25dLCBhW29uY2xpY2tdLCBkaXZbb25jbGlja10sICNkaS1yZWFjdGl2ZS1jb250YWluZXItcmlnaHQsICNkaS1wcm9hY3RpdmUtaGVhZGVyLW1pbmltaXplZCwgI2RpLXByb2FjdGl2ZS13ZWJjaGF0LWJ1dHRvbiwgI2RpLXByb2FjdGl2ZS1zbXMtYnV0dG9uLCAuVXNlZFNycDIgLmZsdFRvUmVzdWx0IC5kaXZBY3Rpb24sIC5kaXZTZW9MaW5rSW5uZXIgbGksIC5zcC1jbGVhci5hY3RpdmUsIC5zcGVjcy10b2dnbGUsIC5kaXZDYXJTaW5nbGVPdXRlckJveCAucmViYXRlVGFnLCAuYnVpbGRUcmltQ2F0ZWdvcnlMaXN0TGksIC50cmFkZUluQmFyTW9iaWxlQnV0dG9uLCAuYnRuLXNtLCAudG9wYmFyM2J0bldyYXAsICNkZWZhdWx0VG9wQmFubmVyQnRuLCAuYnRuLWRlZmF1bHQgeyBib3JkZXItcmFkaXVzOjAgIWltcG9ydGFudDsgfSAuY2Fyb3Vzc2VsIGEuYXJyb3cgc3BhbjppcyguZmEsIC5mYXMpIHsgbWFyZ2luLXJpZ2h0OjA7IH0KLyoqIC9jc3MvaHl1bmRhaV9jZXJ0aWZpZWQuY3NzICoqLwpib2R5ICo6bm90KC5mYSwgLmZhYiwgLmZhZCwgLmZhbCwgLmZhciwgLmZhcykgeyBmb250LWZhbWlseTppbmhlcml0ICFpbXBvcnRhbnQ7IH0gOmlzKGJ1dHRvbiwgW3JvbGU9ImJ1dHRvbiJdLCBhLCBpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSk6Zm9jdXMgeyBvdXRsaW5lOjJweCBzb2xpZCAjMDA3RkE1ICFpbXBvcnRhbnQ7IH0gLlVzZWRTcnAyIC5mbHRXcmFwcGVyIC5mbHRCb3ggLmZsdFRpdGxlLCAuZGl2U3BhbiAuZGl2U3BhbjEyIC5mbHRIZWFkIHsgdGV4dC10cmFuc2Zvcm06Y2FwaXRhbGl6ZTsgfSAjaHl1bmRhaUNlcnRpZmllZEZvb3RlciB7IHdpZHRoOjEwMCU7IGhlaWdodDo3NXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IGNsZWFyOmJvdGg7IH0gI2h5dW5kYWlDZXJ0aWZpZWRGb290ZXIuc2VwYXJhdG9yIHsgYm9yZGVyLXRvcDoxcHggc29saWQgI2NjY2NjYzsgfSAjaHl1bmRhaUNlcnRpZmllZEZvb3RlciAuY29udGFpbmVyIHsgZGlzcGxheSA6ZmxleDsgZmxleC1kaXJlY3Rpb24gOnJvdzsganVzdGlmeS1jb250ZW50IDpjZW50ZXI7IGFsaWduLWl0ZW1zIDpjZW50ZXI7IHdpZHRoIDo5NjBweDsgaGVpZ2h0IDo3NXB4OyBtYXJnaW4gOjAgYXV0bzsgcG9zaXRpb24gOnJlbGF0aXZlOyB9ICNoeXVuZGFpQ2VydGlmaWVkRm9vdGVyIC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciB7IGRpc3BsYXkgOmZsZXg7IGZsZXgtZGlyZWN0aW9uIDpyb3c7IGp1c3RpZnktY29udGVudCA6Y2VudGVyOyBhbGlnbi1pdGVtcyA6Y2VudGVyOyB9ICNoeXVuZGFpQ2VydGlmaWVkRm9vdGVyIC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciBhIHsgaGVpZ2h0IDoyOHB4OyB3aWR0aCA6MjhweDsgbWFyZ2luIDowIDEwcHg7IGJvcmRlci1yYWRpdXMgOjNweDsgYmFja2dyb3VuZC1jb2xvciA6dHJhbnNwYXJlbnQ7IGNvbG9yIDojMDAwMDAwOyB9ICNoeXVuZGFpQ2VydGlmaWVkRm9vdGVyIC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciBpbWcgeyBoZWlnaHQgOjI4cHg7IHdpZHRoIDoyOHB4OyB9ICNoeXVuZGFpQ2VydGlmaWVkRm9vdGVyIC5kaXNjbGFpbWVyX19jb250YWluZXIgeyB3aWR0aCA6NTAlOyBtYXJnaW4gOjAgMnJlbTsgfSAjaHl1bmRhaUNlcnRpZmllZEZvb3RlciAuZGlzY2xhaW1lcl9fY29udGFpbmVyIHAgeyBmb250LXNpemUgOjAuOHJlbTsgdGV4dC1hbGlnbiA6Y2VudGVyOyB9ICNoeXVuZGFpQ2VydGlmaWVkRm9vdGVyIC5jZXJ0aWZpZWQtbG9nbyB7IHdpZHRoIDoyMDBweDsgaGVpZ2h0IDphdXRvOyB9IGJ1dHRvbiAuLWJvbGQgeyBmb250LXdlaWdodDpub3JtYWw7IH0gLm5ld1ZkcEFjdGlvbnMgLnByb21vQlROLCAudXNlZFZkcEFjdGlvbnMgLnByb21vQlROIHsgaGVpZ2h0OjMuNXJlbTsgbGluZS1oZWlnaHQ6MS4xMjVyZW0gIWltcG9ydGFudDsgfSAudXNlZFZkcEFjdGlvbnMgLmJ1dHRvbl91bmRlciBhLnByb21vQlROIHsgaGVpZ2h0OjIuNHJlbTsgbGluZS1oZWlnaHQ6Mi40cmVtIWltcG9ydGFudDsgfSAuYmVzdHByaWNlcy0tY29udGFpbmVyIC5wcmljZS0tY2FsY3VsYXRvciAuYnRuLCAubGFuZ3VhZ2VCYXIgI3NlcnZpY2VfYXBwb2ludF9oZWFkZXIgPiBhLmJ0bi1kZWZhdWx0LCAjc3VibWl0ZXhwcmVzc3JlcXVlc3QgeyBiYWNrZ3JvdW5kIDojMDAyQzVGICFpbXBvcnRhbnQ7IGNvbG9yIDojRkZGRkZGICFpbXBvcnRhbnQ7IGJvcmRlciA6MnB4IHNvbGlkICMwMDJDNUYgIWltcG9ydGFudDsgfSAuYnRuLWRlZmF1bHQ6bm90KC5wcm9tb0JUTiksIC5idG4tc20sIC5idG4tbGcsIC5zdWJtaXQsICNzbGlkZWl0IGlucHV0LnNlbmQsIC5jdXN0b21mb3JtX3N1Ym1pdCwgLmJ0bi1kZWZhdWx0LmJ0bi1iZy1zYW1lLCAubmV3VmRwQWN0aW9ucyAuYnV0dG9uXzMgYSwgLnVzZWRWZHBBY3Rpb25zIC5hY3Rpb24tYm94IGEuYnRuLWRlZmF1bHQsIC51c2VkVmRwQWN0aW9ucyAuYnV0dG9uXzMgYSwgI2ZpbmFuY2VBbHREaXNwbGF5LmN1c3RvbSAuZm9ybWhvbGRlciBmb3JtIC5iaWdfQnV0dG9uLCAjbG9hbmNhbGN1bGF0b3IgYnV0dG9uI2xvYW5DYWxjdWxhdG9yQWN0aW9uLCAjbG9hbmNhbGN1bGF0b3IgYnV0dG9uI2FwcGx5TG9hbkNhbGN1bGF0b3IsIC5idXR0b25fMSBhLCAuYnV0dG9uXzIgYSwgLnByb21vLWJ0biwgLnB1bGxvdXRzIC5wdWxsb3V0LWJvZHktYnV0dG9uLCBidXR0b24jZm9ybXN1Ym1pdCB7IGJhY2tncm91bmQgOiNGRkZGRkYgIWltcG9ydGFudDsgY29sb3IgOiMwMDJDNUYgIWltcG9ydGFudDsgYm9yZGVyIDoycHggc29saWQgIzAwMkM1RiAhaW1wb3J0YW50OyBmb250LXNpemUgOjFyZW0gIWltcG9ydGFudDsgZm9udC13ZWlnaHQ6bm9ybWFsOyB9IC5idG4tZGVmYXVsdDpub3QoLnByb21vQlROKTphZnRlciwgLmJ0bi1kZWZhdWx0Om5vdCgucHJvbW9CVE4pOmJlZm9yZSwgLmJ0bi1kZWZhdWx0Om5vdCgucHJvbW9CVE4pIC5mYSwgLmJ0bi1zbTphZnRlciwgLmJ0bi1zbTpiZWZvcmUsIC5idG4tc20uZmEsIC5idG4tbGc6YWZ0ZXIsIC5idG4tbGc6YmVmb3JlLCAuYnRuLWxnLmZhLCAuc3VibWl0OmFmdGVyLCAuc3VibWl0OmJlZm9yZSwgLnN1Ym1pdC5mYSwgLmN1c3RvbWZvcm1fc3VibWl0OmFmdGVyLCAuY3VzdG9tZm9ybV9zdWJtaXQ6YmVmb3JlLCAuY3VzdG9tZm9ybV9zdWJtaXQuZmEsICNsb2FuY2FsY3VsYXRvciBidXR0b24jbG9hbkNhbGN1bGF0b3JBY3Rpb24gLmZhLCAuZ3JheWJveCAuYnRuLWRlZmF1bHQ6bm90KC5wcm9tb0JUTikgc3BhbiB7IGNvbG9yIDppbmhlcml0ICFpbXBvcnRhbnQ7IH0gLmJ0bi1sZywgI2ZpbmFuY2VBbHREaXNwbGF5LmN1c3RvbSAuZm9ybWhvbGRlciBmb3JtIC5iaWdfQnV0dG9uLCAjbG9hbmNhbGN1bGF0b3IgYnV0dG9uI2xvYW5DYWxjdWxhdG9yQWN0aW9uLCAjbG9hbmNhbGN1bGF0b3IgYnV0dG9uI2FwcGx5TG9hbkNhbGN1bGF0b3IgeyBtaW4taGVpZ2h0IDozLjI1cmVtICFpbXBvcnRhbnQ7IGxpbmUtaGVpZ2h0OjMuMjVyZW0gIWltcG9ydGFudDsgcGFkZGluZy10b3A6MCAhaW1wb3J0YW50OyBwYWRkaW5nLWJvdHRvbTowICFpbXBvcnRhbnQ7IHRleHQtc2hhZG93Om5vbmUhaW1wb3J0YW50OyBib3gtc2hhZG93Om5vbmUhaW1wb3J0YW50OyB9IC5idG4tc20sICNsb2FuY2FsY3VsYXRvciBidXR0b24jbG9hbkNhbGN1bGF0b3JBY3Rpb24sICNsb2FuY2FsY3VsYXRvciBidXR0b24jYXBwbHlMb2FuQ2FsY3VsYXRvciwgLnB1bGxvdXRzIC5wdWxsb3V0LWJvZHktYnV0dG9uIHsgcGFkZGluZy1sZWZ0OjEuMjVyZW0gIWltcG9ydGFudDsgcGFkZGluZy1yaWdodDoxLjI1cmVtICFpbXBvcnRhbnQ7IH0gLm5ld1ZkcEFjdGlvbnMgLmJ1dHRvbl8zIGEsIC51c2VkVmRwQWN0aW9ucyAuYWN0aW9uLWJveCBhLmJ0bi1kZWZhdWx0LCAudXNlZFZkcEFjdGlvbnMgLmJ1dHRvbl8zIGEgeyBoZWlnaHQgOjMuMjVyZW07IGxpbmUtaGVpZ2h0OjMuMjVyZW0gIWltcG9ydGFudDsgfSAuY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lckVtYmVkZGVkIC5jcmVkaXRTY29yZV9idG4geyBoZWlnaHQgOjMuNXJlbSAhaW1wb3J0YW50OyBsaW5lLWhlaWdodCA6My41cmVtICFpbXBvcnRhbnQ7IHBhZGRpbmcgOjAgMjBweDsgZm9udC1zaXplIDoxcmVtICFpbXBvcnRhbnQ7IH0gLnRyYWRlSW5CYXJfYnRuOmhvdmVyLCAubmV3VmRwQWN0aW9ucyAuYnV0dG9uXzMgYTpob3ZlciwgLnVzZWRWZHBBY3Rpb25zIC5hY3Rpb24tYm94IGEuYnRuLWRlZmF1bHQ6aG92ZXIsIC51c2VkVmRwQWN0aW9ucyAuYnV0dG9uXzMgYTpob3ZlciwgLmNyZWRpdFNjb3JlUG9wdXBDb250YWluZXJFbWJlZGRlZCAuY3JlZGl0U2NvcmVfYnRuOmhvdmVyLCAuYnRuLWRlZmF1bHQ6aG92ZXIsIC5jdXN0b21mb3JtX3N1Ym1pdDpob3ZlciwgLmJ0bi1zbTpob3ZlciwgLmJ0bi1sZzpob3ZlciwgLnN1Ym1pdDpob3ZlciwgI3NsaWRlaXQgaW5wdXQuc2VuZDpob3ZlciwgLmJ0bi1kZWZhdWx0LmJ0bi1iZy1zYW1lOmhvdmVyLCAjZmluYW5jZUFsdERpc3BsYXkuY3VzdG9tIC5mb3JtaG9sZGVyIGZvcm0gLmJpZ19CdXR0b246aG92ZXIsIC5wcm9tby1jYXJkLW9lbSBhLmJ0bjpob3ZlciwgI2xvYW5jYWxjdWxhdG9yIGJ1dHRvbiNsb2FuQ2FsY3VsYXRvckFjdGlvbjpub3QoOmRpc2FibGVkKTpob3ZlciAsICNsb2FuY2FsY3VsYXRvciBidXR0b24jYXBwbHlMb2FuQ2FsY3VsYXRvcjpub3QoOmRpc2FibGVkKTpob3ZlciwgLmJ1dHRvbl8xIGE6aG92ZXIsIC5idXR0b25fMiBhOmhvdmVyLCAucHJvbW8tYnRuOmhvdmVyLCAuYmVzdHByaWNlcy0tY29udGFpbmVyIC5wcmljZS0tY2FsY3VsYXRvciAuYnRuOmhvdmVyLCAucHVsbG91dHMgLnB1bGxvdXQtYm9keS1idXR0b246aG92ZXIsIC5sYW5ndWFnZUJhciAjc2VydmljZV9hcHBvaW50X2hlYWRlciA+IGEuYnRuLWRlZmF1bHQ6aG92ZXIsICN0cmFkZUluQmFyUG9wdXBTdWJtaXQ6aG92ZXIsIGJ1dHRvbiNmb3Jtc3VibWl0OmhvdmVyLCAjc3VibWl0ZXhwcmVzc3JlcXVlc3Q6aG92ZXIgeyBiYWNrZ3JvdW5kIDojMDA3RkE1ICFpbXBvcnRhbnQ7IGNvbG9yIDojRkZGRkZGICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvciA6IzAwN0ZBNSAhaW1wb3J0YW50OyB9IC5wcm9tb0JUTi5yaXBwbGU6aG92ZXIgc3Bhbi5mYXsgY29sb3I6aW5oZXJpdDsgfSAuaWROYXYxLCAuaWROYXYxIGxpLnRvcCB7IGhlaWdodDphdXRvOyB9ICNtYWluRGl2LndyYXBwZXIgLnRvcF9iZyB7IG1pbi1oZWlnaHQ6OTBweDsgbWFyZ2luLWJvdHRvbToxMHB4OyB9IC5oZWFkZXItaW1hZ2Utd3JhcHBlciB7IG1pbi1oZWlnaHQ6NjBweCAhaW1wb3J0YW50OyB9IC5oZWFkZXItc2VjdGlvbiAuYWRyIHsgbWFyZ2luOjA7IH0gI01haW5NZW51X1NFQVJDSF9CQVIgLnNlYXJjaC1pY29uIHsgYmFja2dyb3VuZC1jb2xvcjojMDAyYzVmICFpbXBvcnRhbnQ7IH0gLm1vYmlsZUh5dW5kYWlDZXJ0aWZpZWRGb290ZXJ7IGhlaWdodDoxMDAlIWltcG9ydGFudDsgbWFyZ2luLXRvcDoxMHB4OyB9IC5tb2JpbGVIeXVuZGFpQ2VydGlmaWVkRm9vdGVyID4gLmNvbnRhaW5lcnsgZmxleC1kaXJlY3Rpb246Y29sdW1uICFpbXBvcnRhbnQ7IGhlaWdodDoxMDAlIWltcG9ydGFudDsgd2lkdGg6MTAwJSFpbXBvcnRhbnQ7IHBhZGRpbmctdG9wOjEwcHg7IH0gLm1vYmlsZUh5dW5kYWlDZXJ0aWZpZWRGb290ZXIgLmRpc2NsYWltZXJfX2NvbnRhaW5lcnsgd2lkdGg6MTAwJSFpbXBvcnRhbnQ7IH0KLyoqIC9jc3MvdmVoaWNsZUZlYXR1cmVTdW1tYXJ5LnByZWxvYWQuY3NzICoqLwoudmRwRmVhdHVyZVN1bW1hcnl7IC0tc3dpdGNoLWJwOjUwcmVtOyBib3JkZXItY29sb3I6I2NjY2NjYzsgY2xlYXI6Ym90aDsgfSAudnNmaUl0ZW1TdW1tYXJ5IHsgZm9udC13ZWlnaHQ6NzAwOyBmb250LXNpemU6MS4ycmVtOyB9IC52ZHBGZWF0dXJlQ29uc3VtcHRpb257IGRpc3BsYXk6ZmxleDsgZmxleC13cmFwOndyYXA7IH0gLnZkcEZlYXR1cmVDb25zdW1wdGlvbiA+ICp7IGZsZXg6MSAxIDMxJTsgbWluLXdpZHRoOjlyZW07IH0KLyoqIC9jc3Mva2MuZmFiLmNzcyAqKi8KI2NvbnRhaW5lckZsQiB7IG1hcmdpbjowOyB3aWR0aDo2MHB4OyBoZWlnaHQ6NjBweDsgcG9zaXRpb246Zml4ZWQ7Ym90dG9tOjIwcHg7cmlnaHQ6MTBweDt9ICNjaXJjbGVGbEIgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgd2lkdGg6MTAwJTsgcGFkZGluZy1ib3R0b206MTAwJTsgb3ZlcmZsb3c6aGlkZGVuOyB9ICNjaXJjbGVGbEIgdGV4dCB7IGZvbnQtZmFtaWx5OidIZWx2ZXRpY2EgTmV1ZScsIEFyaWFsOyBmb250LXNpemU6MS4yNXJlbSA7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gI2NpcmNsZUZsQiBzdmcgeyBwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDowOyB0b3A6MDsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6cm90YXRlOyAtbW96LWFuaW1hdGlvbi1uYW1lOnJvdGF0ZTsgLW1zLWFuaW1hdGlvbi1uYW1lOnJvdGF0ZTsgLW8tYW5pbWF0aW9uLW5hbWU6cm90YXRlOyBhbmltYXRpb24tbmFtZTpyb3RhdGU7IC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOjVzOyAtbW96LWFuaW1hdGlvbi1kdXJhdGlvbjo1czsgLW1zLWFuaW1hdGlvbi1kdXJhdGlvbjo1czsgLW8tYW5pbWF0aW9uLWR1cmF0aW9uOjVzOyBhbmltYXRpb24tZHVyYXRpb246NXM7IC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDppbmZpbml0ZTsgLW1vei1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OmluZmluaXRlOyAtbXMtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDppbmZpbml0ZTsgLW8tYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDppbmZpbml0ZTsgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDppbmZpbml0ZTsgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmxpbmVhcjsgLW1vei1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmxpbmVhcjsgLW1zLWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246bGluZWFyOyAtby1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmxpbmVhcjsgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpsaW5lYXI7IH0gQC13ZWJraXQta2V5ZnJhbWVzIHJvdGF0ZSB7IGZyb20geyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMCk7IH0gdG8geyAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMzYwZGVnKTsgfSB9IEAtbW96LWtleWZyYW1lcyByb3RhdGUgeyBmcm9tIHsgLW1vei10cmFuc2Zvcm06cm90YXRlKDApOyB9IHRvIHsgLW1vei10cmFuc2Zvcm06cm90YXRlKDM2MGRlZyk7IH0gfSBALW1zLWtleWZyYW1lcyByb3RhdGUgeyBmcm9tIHsgLW1zLXRyYW5zZm9ybTpyb3RhdGUoMCk7IH0gdG8geyAtbXMtdHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpOyB9IH0gQC1vLWtleWZyYW1lcyByb3RhdGUgeyBmcm9tIHsgLW8tdHJhbnNmb3JtOnJvdGF0ZSgwKTsgfSB0byB7IC1vLXRyYW5zZm9ybTpyb3RhdGUoMzYwZGVnKTsgfSB9IEBrZXlmcmFtZXMgcm90YXRlIHsgZnJvbSB7IHRyYW5zZm9ybTpyb3RhdGUoMCk7IH0gdG8geyB0cmFuc2Zvcm06cm90YXRlKDM2MGRlZyk7IH0gfSAjc2lnbkZsQnsgY29sb3I6I2ZmZjtwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6LTQ3cHg7bGVmdDoxOXB4O2ZvbnQtc2l6ZToyLjE4OHJlbSA7IHotaW5kZXg6OTk5OTk5OyB9Ci8qKiAvY3NzL2dlbmVyaWNfY2VydGlmaWVkLmNzcyAqKi8KLnNvY2lhbC1tZWRpYV9fY29udGFpbmVyIC5mYWIgeyBmb250LXNpemU6MS42ODhyZW0gOyB9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuZmEtZmFjZWJvb2sgeyBjb2xvcjojM2E1OTk4OyB9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuZmEtdHdpdHRlciB7IGNvbG9yOiMwMGFjZWQ7IH0gLnNvY2lhbC1tZWRpYV9fY29udGFpbmVyIC5mYS1pbnN0YWdyYW0geyBjb2xvcjojZjIzOTk1OyB9IC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciAuZmEteW91dHViZSB7IGNvbG9yOiNmZjAwMDA7IH0KLyoqIC9jc3MvaHl1bmRhaV9jZXJ0aWZpZWQuY3NzICoqLwpib2R5ICo6bm90KC5mYSwgLmZhYiwgLmZhZCwgLmZhbCwgLmZhciwgLmZhcykgeyBmb250LWZhbWlseTppbmhlcml0ICFpbXBvcnRhbnQ7IH0gOmlzKGJ1dHRvbiwgW3JvbGU9ImJ1dHRvbiJdLCBhLCBpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSk6Zm9jdXMgeyBvdXRsaW5lOjJweCBzb2xpZCAjMDA3RkE1ICFpbXBvcnRhbnQ7IH0gLlVzZWRTcnAyIC5mbHRXcmFwcGVyIC5mbHRCb3ggLmZsdFRpdGxlLCAuZGl2U3BhbiAuZGl2U3BhbjEyIC5mbHRIZWFkIHsgdGV4dC10cmFuc2Zvcm06Y2FwaXRhbGl6ZTsgfSAjaHl1bmRhaUNlcnRpZmllZEZvb3RlciB7IHdpZHRoOjEwMCU7IGhlaWdodDo3NXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IGNsZWFyOmJvdGg7IH0gI2h5dW5kYWlDZXJ0aWZpZWRGb290ZXIuc2VwYXJhdG9yIHsgYm9yZGVyLXRvcDoxcHggc29saWQgI2NjY2NjYzsgfSAjaHl1bmRhaUNlcnRpZmllZEZvb3RlciAuY29udGFpbmVyIHsgZGlzcGxheSA6ZmxleDsgZmxleC1kaXJlY3Rpb24gOnJvdzsganVzdGlmeS1jb250ZW50IDpjZW50ZXI7IGFsaWduLWl0ZW1zIDpjZW50ZXI7IHdpZHRoIDo5NjBweDsgaGVpZ2h0IDo3NXB4OyBtYXJnaW4gOjAgYXV0bzsgcG9zaXRpb24gOnJlbGF0aXZlOyB9ICNoeXVuZGFpQ2VydGlmaWVkRm9vdGVyIC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciB7IGRpc3BsYXkgOmZsZXg7IGZsZXgtZGlyZWN0aW9uIDpyb3c7IGp1c3RpZnktY29udGVudCA6Y2VudGVyOyBhbGlnbi1pdGVtcyA6Y2VudGVyOyB9ICNoeXVuZGFpQ2VydGlmaWVkRm9vdGVyIC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciBhIHsgaGVpZ2h0IDoyOHB4OyB3aWR0aCA6MjhweDsgbWFyZ2luIDowIDEwcHg7IGJvcmRlci1yYWRpdXMgOjNweDsgYmFja2dyb3VuZC1jb2xvciA6dHJhbnNwYXJlbnQ7IGNvbG9yIDojMDAwMDAwOyB9ICNoeXVuZGFpQ2VydGlmaWVkRm9vdGVyIC5zb2NpYWwtbWVkaWFfX2NvbnRhaW5lciBpbWcgeyBoZWlnaHQgOjI4cHg7IHdpZHRoIDoyOHB4OyB9ICNoeXVuZGFpQ2VydGlmaWVkRm9vdGVyIC5kaXNjbGFpbWVyX19jb250YWluZXIgeyB3aWR0aCA6NTAlOyBtYXJnaW4gOjAgMnJlbTsgfSAjaHl1bmRhaUNlcnRpZmllZEZvb3RlciAuZGlzY2xhaW1lcl9fY29udGFpbmVyIHAgeyBmb250LXNpemUgOjAuOHJlbTsgdGV4dC1hbGlnbiA6Y2VudGVyOyB9ICNoeXVuZGFpQ2VydGlmaWVkRm9vdGVyIC5jZXJ0aWZpZWQtbG9nbyB7IHdpZHRoIDoyMDBweDsgaGVpZ2h0IDphdXRvOyB9IGJ1dHRvbiAuLWJvbGQgeyBmb250LXdlaWdodDpub3JtYWw7IH0gLm5ld1ZkcEFjdGlvbnMgLnByb21vQlROLCAudXNlZFZkcEFjdGlvbnMgLnByb21vQlROIHsgaGVpZ2h0OjMuNXJlbTsgbGluZS1oZWlnaHQ6MS4xMjVyZW0gIWltcG9ydGFudDsgfSAudXNlZFZkcEFjdGlvbnMgLmJ1dHRvbl91bmRlciBhLnByb21vQlROIHsgaGVpZ2h0OjIuNHJlbTsgbGluZS1oZWlnaHQ6Mi40cmVtIWltcG9ydGFudDsgfSAuYmVzdHByaWNlcy0tY29udGFpbmVyIC5wcmljZS0tY2FsY3VsYXRvciAuYnRuLCAubGFuZ3VhZ2VCYXIgI3NlcnZpY2VfYXBwb2ludF9oZWFkZXIgPiBhLmJ0bi1kZWZhdWx0LCAjc3VibWl0ZXhwcmVzc3JlcXVlc3QgeyBiYWNrZ3JvdW5kIDojMDAyQzVGICFpbXBvcnRhbnQ7IGNvbG9yIDojRkZGRkZGICFpbXBvcnRhbnQ7IGJvcmRlciA6MnB4IHNvbGlkICMwMDJDNUYgIWltcG9ydGFudDsgfSAuYnRuLWRlZmF1bHQ6bm90KC5wcm9tb0JUTiksIC5idG4tc20sIC5idG4tbGcsIC5zdWJtaXQsICNzbGlkZWl0IGlucHV0LnNlbmQsIC5jdXN0b21mb3JtX3N1Ym1pdCwgLmJ0bi1kZWZhdWx0LmJ0bi1iZy1zYW1lLCAubmV3VmRwQWN0aW9ucyAuYnV0dG9uXzMgYSwgLnVzZWRWZHBBY3Rpb25zIC5hY3Rpb24tYm94IGEuYnRuLWRlZmF1bHQsIC51c2VkVmRwQWN0aW9ucyAuYnV0dG9uXzMgYSwgI2ZpbmFuY2VBbHREaXNwbGF5LmN1c3RvbSAuZm9ybWhvbGRlciBmb3JtIC5iaWdfQnV0dG9uLCAjbG9hbmNhbGN1bGF0b3IgYnV0dG9uI2xvYW5DYWxjdWxhdG9yQWN0aW9uLCAjbG9hbmNhbGN1bGF0b3IgYnV0dG9uI2FwcGx5TG9hbkNhbGN1bGF0b3IsIC5idXR0b25fMSBhLCAuYnV0dG9uXzIgYSwgLnByb21vLWJ0biwgLnB1bGxvdXRzIC5wdWxsb3V0LWJvZHktYnV0dG9uLCBidXR0b24jZm9ybXN1Ym1pdCB7IGJhY2tncm91bmQgOiNGRkZGRkYgIWltcG9ydGFudDsgY29sb3IgOiMwMDJDNUYgIWltcG9ydGFudDsgYm9yZGVyIDoycHggc29saWQgIzAwMkM1RiAhaW1wb3J0YW50OyBmb250LXNpemUgOjFyZW0gIWltcG9ydGFudDsgZm9udC13ZWlnaHQ6bm9ybWFsOyB9IC5idG4tZGVmYXVsdDpub3QoLnByb21vQlROKTphZnRlciwgLmJ0bi1kZWZhdWx0Om5vdCgucHJvbW9CVE4pOmJlZm9yZSwgLmJ0bi1kZWZhdWx0Om5vdCgucHJvbW9CVE4pIC5mYSwgLmJ0bi1zbTphZnRlciwgLmJ0bi1zbTpiZWZvcmUsIC5idG4tc20uZmEsIC5idG4tbGc6YWZ0ZXIsIC5idG4tbGc6YmVmb3JlLCAuYnRuLWxnLmZhLCAuc3VibWl0OmFmdGVyLCAuc3VibWl0OmJlZm9yZSwgLnN1Ym1pdC5mYSwgLmN1c3RvbWZvcm1fc3VibWl0OmFmdGVyLCAuY3VzdG9tZm9ybV9zdWJtaXQ6YmVmb3JlLCAuY3VzdG9tZm9ybV9zdWJtaXQuZmEsICNsb2FuY2FsY3VsYXRvciBidXR0b24jbG9hbkNhbGN1bGF0b3JBY3Rpb24gLmZhLCAuZ3JheWJveCAuYnRuLWRlZmF1bHQ6bm90KC5wcm9tb0JUTikgc3BhbiB7IGNvbG9yIDppbmhlcml0ICFpbXBvcnRhbnQ7IH0gLmJ0bi1sZywgI2ZpbmFuY2VBbHREaXNwbGF5LmN1c3RvbSAuZm9ybWhvbGRlciBmb3JtIC5iaWdfQnV0dG9uLCAjbG9hbmNhbGN1bGF0b3IgYnV0dG9uI2xvYW5DYWxjdWxhdG9yQWN0aW9uLCAjbG9hbmNhbGN1bGF0b3IgYnV0dG9uI2FwcGx5TG9hbkNhbGN1bGF0b3IgeyBtaW4taGVpZ2h0IDozLjI1cmVtICFpbXBvcnRhbnQ7IGxpbmUtaGVpZ2h0OjMuMjVyZW0gIWltcG9ydGFudDsgcGFkZGluZy10b3A6MCAhaW1wb3J0YW50OyBwYWRkaW5nLWJvdHRvbTowICFpbXBvcnRhbnQ7IHRleHQtc2hhZG93Om5vbmUhaW1wb3J0YW50OyBib3gtc2hhZG93Om5vbmUhaW1wb3J0YW50OyB9IC5idG4tc20sICNsb2FuY2FsY3VsYXRvciBidXR0b24jbG9hbkNhbGN1bGF0b3JBY3Rpb24sICNsb2FuY2FsY3VsYXRvciBidXR0b24jYXBwbHlMb2FuQ2FsY3VsYXRvciwgLnB1bGxvdXRzIC5wdWxsb3V0LWJvZHktYnV0dG9uIHsgcGFkZGluZy1sZWZ0OjEuMjVyZW0gIWltcG9ydGFudDsgcGFkZGluZy1yaWdodDoxLjI1cmVtICFpbXBvcnRhbnQ7IH0gLm5ld1ZkcEFjdGlvbnMgLmJ1dHRvbl8zIGEsIC51c2VkVmRwQWN0aW9ucyAuYWN0aW9uLWJveCBhLmJ0bi1kZWZhdWx0LCAudXNlZFZkcEFjdGlvbnMgLmJ1dHRvbl8zIGEgeyBoZWlnaHQgOjMuMjVyZW07IGxpbmUtaGVpZ2h0OjMuMjVyZW0gIWltcG9ydGFudDsgfSAuY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lckVtYmVkZGVkIC5jcmVkaXRTY29yZV9idG4geyBoZWlnaHQgOjMuNXJlbSAhaW1wb3J0YW50OyBsaW5lLWhlaWdodCA6My41cmVtICFpbXBvcnRhbnQ7IHBhZGRpbmcgOjAgMjBweDsgZm9udC1zaXplIDoxcmVtICFpbXBvcnRhbnQ7IH0gLnRyYWRlSW5CYXJfYnRuOmhvdmVyLCAubmV3VmRwQWN0aW9ucyAuYnV0dG9uXzMgYTpob3ZlciwgLnVzZWRWZHBBY3Rpb25zIC5hY3Rpb24tYm94IGEuYnRuLWRlZmF1bHQ6aG92ZXIsIC51c2VkVmRwQWN0aW9ucyAuYnV0dG9uXzMgYTpob3ZlciwgLmNyZWRpdFNjb3JlUG9wdXBDb250YWluZXJFbWJlZGRlZCAuY3JlZGl0U2NvcmVfYnRuOmhvdmVyLCAuYnRuLWRlZmF1bHQ6aG92ZXIsIC5jdXN0b21mb3JtX3N1Ym1pdDpob3ZlciwgLmJ0bi1zbTpob3ZlciwgLmJ0bi1sZzpob3ZlciwgLnN1Ym1pdDpob3ZlciwgI3NsaWRlaXQgaW5wdXQuc2VuZDpob3ZlciwgLmJ0bi1kZWZhdWx0LmJ0bi1iZy1zYW1lOmhvdmVyLCAjZmluYW5jZUFsdERpc3BsYXkuY3VzdG9tIC5mb3JtaG9sZGVyIGZvcm0gLmJpZ19CdXR0b246aG92ZXIsIC5wcm9tby1jYXJkLW9lbSBhLmJ0bjpob3ZlciwgI2xvYW5jYWxjdWxhdG9yIGJ1dHRvbiNsb2FuQ2FsY3VsYXRvckFjdGlvbjpub3QoOmRpc2FibGVkKTpob3ZlciAsICNsb2FuY2FsY3VsYXRvciBidXR0b24jYXBwbHlMb2FuQ2FsY3VsYXRvcjpub3QoOmRpc2FibGVkKTpob3ZlciwgLmJ1dHRvbl8xIGE6aG92ZXIsIC5idXR0b25fMiBhOmhvdmVyLCAucHJvbW8tYnRuOmhvdmVyLCAuYmVzdHByaWNlcy0tY29udGFpbmVyIC5wcmljZS0tY2FsY3VsYXRvciAuYnRuOmhvdmVyLCAucHVsbG91dHMgLnB1bGxvdXQtYm9keS1idXR0b246aG92ZXIsIC5sYW5ndWFnZUJhciAjc2VydmljZV9hcHBvaW50X2hlYWRlciA+IGEuYnRuLWRlZmF1bHQ6aG92ZXIsICN0cmFkZUluQmFyUG9wdXBTdWJtaXQ6aG92ZXIsIGJ1dHRvbiNmb3Jtc3VibWl0OmhvdmVyLCAjc3VibWl0ZXhwcmVzc3JlcXVlc3Q6aG92ZXIgeyBiYWNrZ3JvdW5kIDojMDA3RkE1ICFpbXBvcnRhbnQ7IGNvbG9yIDojRkZGRkZGICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvciA6IzAwN0ZBNSAhaW1wb3J0YW50OyB9IC5wcm9tb0JUTi5yaXBwbGU6aG92ZXIgc3Bhbi5mYXsgY29sb3I6aW5oZXJpdDsgfSAuaWROYXYxLCAuaWROYXYxIGxpLnRvcCB7IGhlaWdodDphdXRvOyB9ICNtYWluRGl2LndyYXBwZXIgLnRvcF9iZyB7IG1pbi1oZWlnaHQ6OTBweDsgbWFyZ2luLWJvdHRvbToxMHB4OyB9IC5oZWFkZXItaW1hZ2Utd3JhcHBlciB7IG1pbi1oZWlnaHQ6NjBweCAhaW1wb3J0YW50OyB9IC5oZWFkZXItc2VjdGlvbiAuYWRyIHsgbWFyZ2luOjA7IH0gI01haW5NZW51X1NFQVJDSF9CQVIgLnNlYXJjaC1pY29uIHsgYmFja2dyb3VuZC1jb2xvcjojMDAyYzVmICFpbXBvcnRhbnQ7IH0gLm1vYmlsZUh5dW5kYWlDZXJ0aWZpZWRGb290ZXJ7IGhlaWdodDoxMDAlIWltcG9ydGFudDsgbWFyZ2luLXRvcDoxMHB4OyB9IC5tb2JpbGVIeXVuZGFpQ2VydGlmaWVkRm9vdGVyID4gLmNvbnRhaW5lcnsgZmxleC1kaXJlY3Rpb246Y29sdW1uICFpbXBvcnRhbnQ7IGhlaWdodDoxMDAlIWltcG9ydGFudDsgd2lkdGg6MTAwJSFpbXBvcnRhbnQ7IHBhZGRpbmctdG9wOjEwcHg7IH0gLm1vYmlsZUh5dW5kYWlDZXJ0aWZpZWRGb290ZXIgLmRpc2NsYWltZXJfX2NvbnRhaW5lcnsgd2lkdGg6MTAwJSFpbXBvcnRhbnQ7IH0KLyoqIC9jc3MvY29udGFjdFBvcHVwLmNzcyAqKi8KI2NvbnRhY3Rwb3B1cCB7IHdpZHRoOjU5OHB4OyBtaW4td2lkdGg6MjMwcHg7IH0gI2NvbnRhY3Rwb3B1cC5tb2JpbGUgeyB3aWR0aDoxMDAlOyB9IC5jb250YWN0cG9wdXAubW9iaWxlIHRhYmxlLmpxVHJhbnNmb3JtVGV4dGFyZWEsIC5jb250YWN0cG9wdXAubW9iaWxlIHRhYmxlLmpxVHJhbnNmb3JtVGV4dGFyZWEgdGV4dGFyZWEuanF0cmFuc2Zvcm1kb25lIHsgd2lkdGg6MTAwJTsgfSAuY29udGFjdHBvcHVwLm1vYmlsZSB0YWJsZS5qcVRyYW5zZm9ybVRleHRhcmVhIHRkLmpxVHJhbnNmb3JtVGV4dGFyZWEtbWwsIC5jb250YWN0cG9wdXAubW9iaWxlIHRhYmxlLmpxVHJhbnNmb3JtVGV4dGFyZWEgdGQuanFUcmFuc2Zvcm1UZXh0YXJlYS1tciB7IGRpc3BsYXk6bm9uZTsgfSAjY29udGFjdHBvcHVwICogeyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0gI2NvbnRhY3Rwb3B1cC5yZXZlYWwtbW9kYWwgeyBwYWRkaW5nOjA7IH0gI2NvbnRhY3Rwb3B1cC5yZXZlYWwtbW9kYWwgLmNsb3NlLXJldmVhbC1tb2RhbCB7IGRpc3BsYXk6bm9uZTsgfSAjY29udGFjdHBvcHVwIC5jb250YWN0cG9wdXAtYm9keSB7IGJhY2tncm91bmQtY29sb3I6d2hpdGU7IHBhZGRpbmc6MzBweCAxMHB4IDEwcHg7IH0gLmNvbnRhY3Rwb3B1cC1ib2R5IGlucHV0IHsgd2lkdGg6MTAwJTsgfSAuY29udGFjdHBvcHVwLWJvZHkgLmRpdkJsb2NrUm93Om5vdCg6bGFzdC1jaGlsZCkgLmRpdlNwYW4geyBtYXJnaW4tYm90dG9tOjE1cHg7IH0gLmNvbnRhY3Rwb3B1cC1ib2R5IC5kaXZCbG9ja1JvdyAuZGl2U3BhbjY6Zmlyc3QtY2hpbGQgeyBwYWRkaW5nLXJpZ2h0OjE1cHg7IH0gLmNvbnRhY3Rwb3B1cC1ib2R5IC5kaXZCbG9ja1JvdyAuZGl2U3BhbjY6bGFzdC1jaGlsZCB7IHBhZGRpbmctbGVmdDoxNXB4OyB9IC5jb250YWN0cG9wdXAtYm9keSAuZGl2QmxvY2tSb3cgLmRpdlNwYW42IC5qcVRyYW5zZm9ybUlucHV0V3JhcHBlciB7IG1heC13aWR0aDoyNzRweCAhaW1wb3J0YW50OyB9IC5jb250YWN0cG9wdXAtaGVhZGVyIHsgYm9yZGVyLXJhZGl1czo1cHggNXB4IDAgMDsgcGFkZGluZzoxNXB4IDE1cHggMzBweCAxNXB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgcG9zaXRpb246cmVsYXRpdmU7IC13ZWJraXQtYm94LXNoYWRvdzowIDAgMTBweCAycHggcmdiYSgwLDAsMCwwLjMpOyAtbW96LWJveC1zaGFkb3c6MCAwIDEwcHggMnB4IHJnYmEoMCwwLDAsMC4zKTsgYm94LXNoYWRvdzowIDAgMTBweCAycHggcmdiYSgwLDAsMCwwLjMpOyBmb250LXNpemU6MS42MjVyZW0gOyBjb2xvcjojMDAwMDAwOyBiYWNrZ3JvdW5kLWNvbG9yOiNlNGRjZDM7IH0gLmNvbnRhY3Rwb3B1cC1oZWFkZXI6OmFmdGVyIHsgY29udGVudDoiIjsgcG9zaXRpb246YWJzb2x1dGU7IGJvdHRvbTotMTVweDsgbGVmdDo1MCU7IC13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlKTsgLW1vei10cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUpOyAtbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlKTsgLW8tdHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlKTsgdHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlKTsgYm9yZGVyLWxlZnQ6MzBweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXJpZ2h0OjMwcHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci10b3A6MTVweCBzb2xpZCAjZTRkY2QzOyB9IC5jb250YWN0cG9wdXAtaGVhZGVyIC5mYS10aW1lcyB7IHBvc2l0aW9uOmFic29sdXRlOyByaWdodDowLjVyZW07IHRvcDowLjVyZW07IGZvbnQtc2l6ZTppbml0aWFsOyB9IC5jb250YWN0cG9wdXAtaGVhZGVyIC5mYS10aW1lczpob3ZlciB7IGN1cnNvcjpwb2ludGVyOyB9IC5jb250YWN0cG9wdXAtaGVhZGVyIC5oZWFkZXItcmVwbGFjZSB7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB9IGJ1dHRvbi5jb250YWN0LXN1Ym1pdCB7IHBhZGRpbmc6MTBweCAxNXB4OyBkaXNwbGF5OmJsb2NrOyBmbG9hdDpsZWZ0OyB3aWR0aDoxMDAlOyBib3JkZXItY29sb3I6IzAwMDAwMDsgYmFja2dyb3VuZDojZTRkY2QzOyB0cmFuc2l0aW9uOmFsbCAwLjI1czsgY29sb3I6IzAwMDAwMDsgZm9udC13ZWlnaHQ6NjAwOyBtYXJnaW46MDsgYm9yZGVyOjFweCBzb2xpZDsgdGV4dC10cmFuc2Zvcm06bm9uZTsgYm9yZGVyLXJhZGl1czozcHg7IGZvbnQtc2l6ZToxLjU2M3JlbSA7IH0gLmNvbnRhY3Qtc3VibWl0OmhvdmVyIHsgY3Vyc29yOnBvaW50ZXI7IGJvcmRlci1jb2xvcjojZmZmZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiMwMDdmYTU7IGNvbG9yOiNmZmZmZmY7IH0gLmNvbnRhY3Rwb3B1cC1mb290ZXIgeyB9IC5jb250YWN0cG9wdXAtZm9vdGVyIC5idG4td3JhcHBlciB7IHBhZGRpbmc6MTBweDsgfSAjY29udGFjdHBvcHVwIC5qcVRyYW5zZm9ybUlucHV0SW5uZXIgZGl2IHsgaGVpZ2h0OjMwcHg7IH0gI2NvbnRhY3Rwb3B1cCAuanFUcmFuc2Zvcm1JbnB1dElubmVyIGRpdi52YWxpZGl0eS1lcnJvbmVvdXMgeyB3aWR0aDppbmhlcml0OyB9Ci8qKiAvY3NzL2Rpdl90YWJsZXMuY3NzICoqLwpkaXYuZGl2VGFibGVWaWV3eyBmbG9hdDpsZWZ0OyB3aWR0aDoxMDAlOyB9IGRpdi5kaXZUYWJsZVZpZXcgZGl2LmRpdlRhYmxlV3JhcGVyeyB9IGRpdi5kaXZUYWJsZVZpZXcgZGl2LmRpdlRpdGxleyBkaXNwbGF5OmJsb2NrOyBmb250LXdlaWdodDpib2xkOyB0ZXh0LWFsaWduOmxlZnQ7IGZvbnQtc2l6ZTowLjkzOHJlbSA7IHBhZGRpbmc6MzBweCAwcHggMTBweCAxMHB4OyBjb2xvcjojMDAwMDAwOyB0ZXh0LWRlY29yYXRpb246bm9uZTsgdGV4dC10cmFuc2Zvcm06dmFyKC0tdHh0LXVwcGVyKTsgaGVpZ2h0OmF1dG87IH0gZGl2LmRpdlRhYmxlVmlldyBkaXYuZGl2VGFibGVPdXRlcnsgYm9yZGVyOjFweCBzb2xpZCAjZGRkOyBwYWRkaW5nOjA7IGJvcmRlci1yYWRpdXM6OHB4OyBtYXJnaW46MDsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzUpOyBvdmVyZmxvdzpoaWRkZW47IH0gZGl2LmRpdlRhYmxlVmlldyBkaXYuZGl2VGFibGV7IGRpc3BsYXk6dGFibGU7IHdpZHRoOjEwMCU7IHBhZGRpbmc6MDsgbWFyZ2luOjA7IH0gZGl2LmRpdlRhYmxlVmlldyBkaXYuZGl2SGVhZGluZ3sgZGlzcGxheTp0YWJsZS1yb3c7IGZvbnQtd2VpZ2h0OmluaXRpYWw7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXdlaWdodDpib2xkOyBoZWlnaHQ6NDVweDsgfSBkaXYuZGl2VGFibGVWaWV3IGRpdi5kaXZSb3d7IGRpc3BsYXk6dGFibGUtcm93OyB3aWR0aDoxMDAlOyBoZWlnaHQ6NjVweDsgfSBkaXYuZGl2VGFibGVWaWV3IGRpdi5kaXZDZWxseyBkaXNwbGF5OnRhYmxlLWNlbGw7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNkZGQ7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nOjE1cHggMTVweCAyNXB4IDE1cHg7IGJvcmRlci1yaWdodDoxcHggc29saWQgI2RkZDsgY29sb3I6IzAwMDAwMDsgZm9udC1zaXplOjAuODc1cmVtIDsgfSBkaXYuZGl2VGFibGVWaWV3IGRpdi5kaXZDZWxsOmxhc3QtY2hpbGR7IGJvcmRlci1yaWdodDoxcHggc29saWQgdHJhbnNwYXJlbnQ7IH0gZGl2LmRpdlRhYmxlVmlldyBkaXYuZGl2SGVhZGluZyBkaXYuZGl2Q2VsbHsgcGFkZGluZzoxMHB4IDE1cHg7IGJhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsIDI1NSwgMjU1LCAxLjApOyB9IGRpdi5kaXZUYWJsZVZpZXcgZGl2LmRpdkhlYWRpbmcgZGl2LmRpdkNlbGw6bnRoLWNoaWxkKGV2ZW4peyBiYWNrZ3JvdW5kLWNvbG9yOiNlZWU7IH0gZGl2LmRpdlRhYmxlVmlldyBkaXYuZGl2SGVhZGluZyBkaXYuZGl2Q2VsbDpsYXN0LWNoaWxkeyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czo4cHg7IH0gZGl2LmRpdlRhYmxlVmlldyBkaXYuZGl2SGVhZGluZyBkaXYuZGl2Q2VsbDpmaXJzdC1jaGlsZHsgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czo4cHg7IH0gZGl2LmRpdlRhYmxlVmlldyBkaXYuZGl2Um93Omxhc3QtY2hpbGQgZGl2LmRpdkNlbGx7IGJvcmRlci1ib3R0b206MHB4OyB9IGRpdi5kaXZUYWJsZVZpZXcgZGl2LmRpdlJvdyBkaXYuZGl2Q2VsbHsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7IH0gZGl2LmRpdlRhYmxlVmlldyBkaXYuZGl2Um93IGRpdi5kaXZDZWxsOm50aC1jaGlsZChldmVuKXsgYmFja2dyb3VuZC1jb2xvcjojZjZmN2Y4OyB9Ci8qKiAvY3NzL2Rpdl9ibG9ja3MuY3NzICoqLwpkaXYuZGl2QmxvY2tWaWV3eyBkaXNwbGF5OmJsb2NrOyBmbG9hdDpsZWZ0OyB3aWR0aDoxMDAlOyB9IGRpdi5kaXZCbG9ja1ZpZXcgZGl2LmRpdkJsb2NrVGl0bGUsIGRpdi5kaXZCbG9ja1ZpZXcgbGFiZWwuZGl2QmxvY2tUaXRsZXsgZGlzcGxheTpibG9jazsgZm9udC13ZWlnaHQ6Ym9sZDsgdGV4dC1hbGlnbjpsZWZ0OyBwYWRkaW5nOjMwcHggMTBweCAxMHB4IDEwcHg7IGNvbG9yOiMwMDAwMDA7IHRleHQtZGVjb3JhdGlvbjpub25lOyB0ZXh0LXRyYW5zZm9ybTp2YXIoLS10eHQtdXBwZXIpOyBoZWlnaHQ6YXV0bzsgZmxvYXQ6bGVmdDsgfSBkaXYuZGl2QmxvY2tWaWV3IGRpdi5kaXZCbG9ja1RpdGxlLmJsb2NrVGl0bGVTdHlsZTIsIGRpdi5kaXZCbG9ja1ZpZXcgbGFiZWwuZGl2QmxvY2tUaXRsZS5ibG9ja1RpdGxlU3R5bGUyeyBwYWRkaW5nOjAgNDBweCAxMHB4OyB9IGRpdi5kaXZCbG9ja1ZpZXcgZGl2LmRpdkJsb2NrQ29udGVudHsgYmFja2dyb3VuZDpub25lOyBwYWRkaW5nOjE1cHggMHB4OyBtYXJnaW46MDsgZmxvYXQ6bGVmdDsgd2lkdGg6MTAwJTsgfSBkaXYuZGl2QmxvY2tWaWV3IGRpdi5kaXZCbG9ja0NvbnRlbnQgZGl2LmRpdkJsb2NrQ29sdW1ueyBiYWNrZ3JvdW5kOm5vbmU7IHBhZGRpbmc6MCA0MHB4OyBtYXJnaW46MDsgd2lkdGg6ODYwcHggIWltcG9ydGFudDsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOmluaGVyaXQ7IH0gZGl2LmRpdkJsb2NrVmlldyBVTC5kaXZCbG9ja0xpc3R7IGJhY2tncm91bmQ6aW5pdGlhbDsgcGFkZGluZzowOyBtYXJnaW46MCAwIDIwcHggMDsgfSBkaXYuZGl2QmxvY2tWaWV3IFVMLmRpdkJsb2NrTGlzdCBVTC5kaXZJbm5lckJsb2NrTGlzdCB7IHBhZGRpbmc6MTBweCAwIDAgMDsgfSBkaXYuZGl2QmxvY2tWaWV3IFVMLmRpdkJsb2NrTGlzdC5zaXplRm9yNENvbHVtbnNMaXN0eyB9IGRpdi5kaXZCbG9ja1ZpZXcgVUwuZGl2QmxvY2tMaXN0Om5vdCguc2l6ZUZvcjRDb2x1bW5zTGlzdCk6bnRoLWNoaWxkKDNuKzEpLCBkaXYuZGl2QmxvY2tWaWV3IFVMLmRpdkJsb2NrTGlzdC5zaXplRm9yNENvbHVtbnNMaXN0Om50aC1jaGlsZCg0bisxKXsgY2xlYXI6bGVmdDsgfSBkaXYuZGl2QmxvY2tWaWV3IFVMLmRpdkJsb2NrTGlzdCBkaXYuZGl2QmxvY2tMaXN0VGl0bGV7IGJhY2tncm91bmQ6aW5pdGlhbDsgcGFkZGluZzowIDAgMTBweCAwOyBtYXJnaW46MDsgd2lkdGg6MTAwJTsgZmxvYXQ6bGVmdDsgZm9udC13ZWlnaHQ6Ym9sZCB9IGRpdi5kaXZCbG9ja1ZpZXcgVUwuZGl2QmxvY2tMaXN0IExJLmRpdkxpc3RJdGVteyBwYWRkaW5nOjAgMzBweCAxMHB4IDEwcHg7IG1hcmdpbjowOyB0ZXh0LWluZGVudDowOyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9hcnJvd19yZWQucG5nJykgbm8tcmVwZWF0IHNjcm9sbCAwIDVweCB0cmFuc3BhcmVudDsgfSBkaXYuZGl2QmxvY2tWaWV3IFVMLmRpdkJsb2NrTGlzdCBMSS5kaXZMaXN0SXRlbSA+IEF7IG1hcmdpbjowOyBwYWRkaW5nOjA7IGJhY2tncm91bmQ6bm9uZTsgZm9udC1zaXplOmluaXRpYWw7IH0gZGl2LmRpdkJsb2NrVmlldyBVTC5kaXZCbG9ja0xpc3QgTEkuZGl2TGlzdFRpdGxlMnsgZm9udC1zaXplOjEuMWVtOyBib3JkZXI6MDsgbWFyZ2luOjA7IHBhZGRpbmc6MCAwIDEwcHggMDsgZm9udC13ZWlnaHQ6Ym9sZDsgbGlzdC1zdHlsZTpub25lOyB9IGRpdi5kaXZCbG9ja1ZpZXcgVUwuZGl2QmxvY2tMaXN0IExJLmRpdkxpc3RJdGVtMnsgcGFkZGluZzowIDMwcHggMTBweCAxMHB4OyB0ZXh0LWluZGVudDowOyBsaXN0LXN0eWxlOm5vbmUgb3V0c2lkZSBub25lOyBkaXNwbGF5OmJsb2NrOyBtYXJnaW46MCAwIDAgMTJweDsgfSBkaXYuZGl2QmxvY2tWaWV3IFVMLmRpdkJsb2NrTGlzdCBMSS5kaXZMaXN0SXRlbTI6YmVmb3JleyBjb250ZW50OiJcZjEzOCI7IGZvbnQtZmFtaWx5OidGb250IEF3ZXNvbWUgNSBQcm8nOyBmb250LXdlaWdodDo5MDA7IG1hcmdpbi1yaWdodDowOyBtYXJnaW4tbGVmdDotMjFweDsgcGFkZGluZy1yaWdodDo1cHg7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IH0gZGl2LmRpdkJsb2NrVmlldyBVTC5kaXZCbG9ja0xpc3QgVUwuZGl2SW5uZXJCbG9ja0xpc3QgTEkuZGl2TGlzdEl0ZW0yOmJlZm9yZXsgZm9udC13ZWlnaHQ6bm9ybWFsOyB9IGRpdi5kaXZCbG9ja1ZpZXcgVUwuZGl2QmxvY2tMaXN0IFVMLmRpdklubmVyQmxvY2tMaXN0IExJIHsgcGFkZGluZzowIDMwcHggMTBweCAxMHB4OyB9IGRpdi5kaXZCbG9ja1ZpZXcgVUwuZGl2QmxvY2tMaXN0IExJLmRpdkxpc3RJdGVtLm5vU3R5bGVJdGVteyBwYWRkaW5nOjAgMCA1cHggMDsgbWFyZ2luOjA7IHRleHQtaW5kZW50OjA7IGJhY2tncm91bmQ6bm9uZTsgbGlzdC1zdHlsZTpub25lOyB9IGRpdi5kaXZCbG9ja1ZpZXcgVUwuZGl2QmxvY2tMaXN0IExJLmRpdkxpc3RJdGVtLm9uU2FtZUxpbmV7IHBhZGRpbmctcmlnaHQ6MTVweDsgZGlzcGxheTppbmxpbmUtdGFibGU7IH0gZGl2LmRpdkJsb2NrVmlldyBVTC5kaXZCbG9ja0xpc3QgTEkuZGl2TGlzdEl0ZW0ub25TYW1lTGluZTpsYXN0LWNoaWxkeyBwYWRkaW5nLXJpZ2h0OjA7IH0gZGl2LmRpdkJsb2NrVmlldyBkaXYuZGl2QmxvY2tUYWJsZU91dGVyeyB9IGRpdi5kaXZCbG9ja1ZpZXcgZGl2LmRpdkJsb2NrVGFibGV7IGRpc3BsYXk6dGFibGU7IHdpZHRoOjEwMCU7IHBhZGRpbmc6MDsgbWFyZ2luOjA7IH0gZGl2LmRpdkJsb2NrVmlldyBkaXYuZGl2QmxvY2tSb3d7IGRpc3BsYXk6dGFibGUtcm93OyB3aWR0aDoxMDAlOyB9IGRpdi5kaXZCbG9ja1ZpZXcgZGl2LmRpdkJsb2NrQ2VsbHsgZGlzcGxheTp0YWJsZS1jZWxsOyB9IGRpdi5kaXZEaXNjbGFpbWVyQmxvY2t7IGJhY2tncm91bmQtY29sb3I6dmFyKC0tZ2VuZXJhbC1iZy1jb2xvcik7IGJvcmRlci1yYWRpdXM6M3B4OyB9IEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDoxMzAxcHgpIHsgYm9keS5pc0Z1bGxXaWR0aFBhZ2UuaXNQYWdlRnVsbFdpZHRoRW5hYmxlZCBkaXYuZGl2QmxvY2tWaWV3IGRpdi5kaXZCbG9ja0NvbnRlbnQgZGl2LmRpdkJsb2NrQ29sdW1uIHsgd2lkdGg6MTEwMHB4ICFpbXBvcnRhbnQ7IH0gfQovKiogL2Nzcy9mb3Jtcy9mb3Jtcy5wcmVsb2FkLmNzcyAqKi8KLmQyY2Zvcm0geyAtLWxhYmVsLXJlcXVpcmVkLXN5bWJvbDoiKiI7IC0tbGFiZWwtcmVxdWlyZWQtY29sb3I6I0ZGMDAwMDsgLS1pbnB1dC1wYWRkaW5nOnZhcigtLXMtMSkgdmFyKC0tczEpOyAtLWlucHV0LWJnLWNvbG9yOnZhcigtLXdoaXRlKTsgLS1pbnB1dC1ib3JkZXItY29sb3I6dmFyKC0tbWlkLWdyYXkpOyAtLWlucHV0LXJhZGl1czp2YXIoLS1zLTYpOyAtLWlucHV0LWZvbnQtc2l6ZTp2YXIoLS1mczApOyAtLWlucHV0LWxpbmUtaGVpZ2h0OnZhcigtLWZzMik7IH0gLmQyY2Zvcm0gKiB7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfSAuZDJjZm9ybSBib3gtbGMgeyAtLXNwYWNlOnZhcigtLXMtNCk7IHBhZGRpbmctbGVmdDowOyBwYWRkaW5nLXJpZ2h0OjA7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBhbGlnbi1pdGVtczpmbGV4LXN0YXJ0OyB9IC5kMmNmb3JtLS10aGluIGJveC1sYyB7IC0tc3BhY2U6dmFyKC0tcy05KTsgfSAuZDJjZm9ybS0tcm93IHN0YWNrLWxjIHsgZmxleC1kaXJlY3Rpb246cm93OyBmbGV4LXdyYXA6d3JhcDsgfSAuZDJjZm9ybS0tcm93IGJveC1sYyB7IHBhZGRpbmctcmlnaHQ6dmFyKC0tc3BhY2UpOyBwYWRkaW5nLWxlZnQ6dmFyKC0tc3BhY2UpOyB9IC5kMmNmb3JtLS1ob3Jpem9udGFsIGJveC1sYyB7IGZsZXgtZGlyZWN0aW9uOnJvdzsgYWxpZ24taXRlbXM6ZmxleC1zdGFydDsgfSAuZDJjZm9ybS0taG9yaXpvbnRhbCBib3gtbGMgbGFiZWwgeyBtaW4td2lkdGg6MTE1cHg7IHdpZHRoOjMwJTsgcGFkZGluZy1yaWdodDp2YXIoLS1zKTsgbWFyZ2luLXRvcDp2YXIoLS1zMSk7IG1hcmdpbi1ib3R0b206MDsgfSAuZDJjZm9ybSBsYWJlbDpoYXMoW3JlcXVpcmVkXSkgc3BhbjphZnRlcnsgY29sb3IgOnZhcigtLWxhYmVsLXJlcXVpcmVkLWNvbG9yKTsgY29udGVudCA6dmFyKC0tbGFiZWwtcmVxdWlyZWQtc3ltYm9sKTsgcGFkZGluZy1sZWZ0IDp2YXIoLS1zLTYpOyB9IC5kMmNmb3JtIGxhYmVsOm5vdCguZmluYW5jZUNhbGMpLCAuZDJjZm9ybSAubGFiZWw6bm90KC5maW5hbmNlQ2FsYykgeyBtYXJnaW4tYm90dG9tOnZhcigtLXMtMyk7IGZvbnQtc2l6ZTp2YXIoLS1pbnB1dC1mb250LXNpemUpOyBsaW5lLWhlaWdodDp2YXIoLS1pbnB1dC1saW5lLWhlaWdodCk7IGZvbnQtd2VpZ2h0OjQwMDsgfSAuZDJjZm9ybSBsYWJlbC4tLXJlcXVpcmVkOm5vdCgudHh0LXJpZ2h0KTphZnRlciwgLmQyY2Zvcm0gLmxhYmVsLi0tcmVxdWlyZWQ6bm90KC50eHQtcmlnaHQpOmFmdGVyLCAuZDJjZm9ybSBsYWJlbC4tcmVxdWlyZWQ6bm90KC50eHQtcmlnaHQpOmFmdGVyLCAuZDJjZm9ybSAubGFiZWwuLXJlcXVpcmVkOm5vdCgudHh0LXJpZ2h0KTphZnRlciB7IGNvbG9yIDp2YXIoLS1sYWJlbC1yZXF1aXJlZC1jb2xvcik7IGNvbnRlbnQgOnZhcigtLWxhYmVsLXJlcXVpcmVkLXN5bWJvbCk7IHBhZGRpbmctbGVmdCA6dmFyKC0tcy02KTsgfSAuZDJjZm9ybSBsYWJlbC4tLXJlcXVpcmVkLnR4dC1yaWdodDpiZWZvcmUsIC5kMmNmb3JtIC5sYWJlbC4tLXJlcXVpcmVkLnR4dC1yaWdodDpiZWZvcmUsIC5kMmNmb3JtIGxhYmVsLi1yZXF1aXJlZC50eHQtcmlnaHQ6YmVmb3JlLCAuZDJjZm9ybSAubGFiZWwuLXJlcXVpcmVkLnR4dC1yaWdodDpiZWZvcmUgeyBjb2xvciA6dmFyKC0tbGFiZWwtcmVxdWlyZWQtY29sb3IpOyBjb250ZW50IDp2YXIoLS1sYWJlbC1yZXF1aXJlZC1zeW1ib2wpOyBwYWRkaW5nLXJpZ2h0IDp2YXIoLS1zLTYpOyB9IC5kMmNmb3JtIDp3aGVyZShpbnB1dDpub3QoW3R5cGU9c3VibWl0XSwucGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudCk6bm90KFt0eXBlPSJyYWRpbyJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pKSwgLmQyY2Zvcm0gc2VsZWN0Om5vdCgucGF5bWVudENhbGN1bGF0b3JJbnRlcnZhbCwucGF5bWVudENhbGN1bGF0b3JLbUFsbG93YW5jZSwuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5jYWxjLWZvcm0gc2VsZWN0KSwgLmQyY2Zvcm0gdGV4dGFyZWEgeyB3aWR0aDoxMDAlOyBwYWRkaW5nOnZhcigtLWlucHV0LXBhZGRpbmcpOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWlucHV0LWJnLWNvbG9yKTsgYm9yZGVyLXJhZGl1czp2YXIoLS1pbnB1dC1yYWRpdXMpOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWlucHV0LWJvcmRlci1jb2xvcik7IGNvbG9yOiMyMTI1Mjk7IGZvbnQtc2l6ZTp2YXIoLS1pbnB1dC1mb250LXNpemUpOyBsaW5lLWhlaWdodDp2YXIoLS1pbnB1dC1saW5lLWhlaWdodCk7IGZvbnQtd2VpZ2h0OjQwMDsgfSAuZDJjZm9ybSBpbnB1dDpub3QoW3R5cGU9c3VibWl0XSk6bm90KFt0eXBlPSJyYWRpbyJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pLCAuZDJjZm9ybSBzZWxlY3QgeyBoZWlnaHQ6MzVweDsgfSAuZDJjZm9ybSAuaW52YWxpZCA+IDppcyhpbnB1dCxzZWxlY3QsdGV4dGFyZWEpeyBiYWNrZ3JvdW5kLWNvbG9yOiNmYWQ2ZGM7IH0gLmQyY2Zvcm0gaW5wdXQ6ZGlzYWJsZWQsIC5kMmNmb3JtIGlucHV0LmRpc2FibGVkIHsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDIzOSwgMjM5LCAyMzksIDAuMyk7IGNvbG9yOnJnYig4NCwgODQsIDg0KTsgYm9yZGVyLWNvbG9yOnJnYmEoMTE4LCAxMTgsIDExOCwgMC4zKTsgY3Vyc29yOm5vdC1hbGxvd2VkOyB9IC5kMmNmb3JtIGlucHV0LnR4dC11cHBlciB7IHRleHQtdHJhbnNmb3JtOm5vbmU7IH0gLmQyY2Zvcm0gaW5wdXQudHh0LXVwcGVyOjpwbGFjZWhvbGRlciB7IHRleHQtdHJhbnNmb3JtOnZhcigtLXR4dC11cHBlciwgdXBwZXJjYXNlKTsgfSAuZDJjZm9ybSAuaW5wdXQtaWNvbi1sZWZ0LCAuZDJjZm9ybSAuaW5wdXQtaWNvbi1yaWdodCB7IHBvc2l0aW9uOnJlbGF0aXZlOyB9IC5kMmNmb3JtIC5pbnB1dC1pY29uIHsgcG9zaXRpb246YWJzb2x1dGU7IHotaW5kZXg6MTsgdG9wOnZhcigtLXMxKTsgZm9udC1zaXplOnZhcigtLWlucHV0LWZvbnQtc2l6ZSk7IGxpbmUtaGVpZ2h0OnZhcigtLWlucHV0LWxpbmUtaGVpZ2h0KTsgY29sb3I6dmFyKC0tZGFyay1ncmF5KTsgfSAuZDJjZm9ybSAuaW5wdXQtaWNvbi1yaWdodCAuaW5wdXQtaWNvbiB7IHJpZ2h0OnZhcigtLXM0KTsgfSAuZDJjZm9ybSAuaW5wdXQtaWNvbi1sZWZ0IC5pbnB1dC1pY29uIHsgbGVmdDp2YXIoLS1zNCk7IH0gLmQyY2Zvcm0gLmlucHV0LWljb24tbGVmdCBpbnB1dCB7IHBhZGRpbmctbGVmdDp2YXIoLS1zOSk7IH0gLmQyY2Zvcm0gLnNlcGFyYXRvciB7IHdpZHRoOjEwMCU7IGJvcmRlci10b3A6MXB4IHNvbGlkICNkNGQ0ZDQ7IG1hcmdpbi10b3A6dmFyKC0tczcpOyBtYXJnaW4tYm90dG9tOnZhcigtLXM3KTsgfSAuZDJjZm9ybSAucmFkaW8taW5saW5lIHsgZGlzcGxheTpmbGV4OyB3aWR0aDoxMDAlOyB9IC5kMmNmb3JtIC5jaGVja2JveC1saXN0IHsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IG1hcmdpbi1ib3R0b206dmFyKC0tcy0zKTsgfSAuZDJjZm9ybSAuY2hlY2tib3gtbGlzdCA+ICogeyBtYXJnaW4tYm90dG9tOjA7IH0gLmQyY2Zvcm0gLm11bHRpcGxlLWlucHV0IHsgZGlzcGxheTpmbGV4OyB3aWR0aDoxMDAlOyB9IC5kMmNmb3JtIC5tdWx0aXBsZS1pbnB1dCA+ICo6bm90KDpsYXN0LW9mLXR5cGUpIHsgbWFyZ2luLXJpZ2h0OnZhcigtLXMxKTsgfSAuZDJjZm9ybSAuaW5wdXQtZ3JvdXAgeyBkaXNwbGF5OmZsZXg7IHdpZHRoIDoxMDAlOyB9IC5kMmNmb3JtIC5pbnB1dC1ncm91cCAuaW5wdXQtZ3JvdXAtdGV4dCB7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBwYWRkaW5nOnZhcigtLWlucHV0LXBhZGRpbmcpOyBiYWNrZ3JvdW5kOnZhcigtLWxpZ2h0LWdyYXkpOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWlucHV0LWJvcmRlci1jb2xvcik7IGJvcmRlci1yYWRpdXM6dmFyKC0taW5wdXQtcmFkaXVzKTsgZm9udC1zaXplOnZhcigtLWlucHV0LWZvbnQtc2l6ZSk7IGxpbmUtaGVpZ2h0OnZhcigtLWlucHV0LWxpbmUtaGVpZ2h0KTsgd2hpdGUtc3BhY2U6bm93cmFwOyB9IC5kMmNmb3JtIC5pbnB1dC1ncm91cCA+IDpub3QoOmZpcnN0LWNoaWxkKSB7IGJvcmRlci1sZWZ0OjA7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6MCAhaW1wb3J0YW50OyBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjAgIWltcG9ydGFudDsgfSAuZDJjZm9ybSAuaW5wdXQtZ3JvdXAgPiA6bm90KDpsYXN0LWNoaWxkKSB7IGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOjAgIWltcG9ydGFudDsgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MCAhaW1wb3J0YW50OyB9IEBtZWRpYSAobWF4LXdpZHRoOjk4MHB4KSB7IC5kMmNmb3JtLS1ob3Jpem9udGFsIGJveC1sYyBsYWJlbCB7IG1pbi13aWR0aDo4NXB4OyB9IH0KLyoqIC9jc3MvZm9ybXMvZm9ybXMuY3NzICoqLwouZDJjZm9ybSBpbnB1dDpub3QoW3R5cGU9c3VibWl0XSk6bm90KFt0eXBlPSJyYWRpbyJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pLCAuZDJjZm9ybSBzZWxlY3QsIC5kMmNmb3JtIHRleHRhcmVhIHsgdHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjE1cyBlYXNlLWluLW91dCxib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXQ7IH0gLmQyY2Zvcm0gaW5wdXQ6bm90KFt0eXBlPXN1Ym1pdF0pOm5vdChbdHlwZT0icmFkaW8iXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpmb2N1cywgLmQyY2Zvcm0gc2VsZWN0OmZvY3VzLCAuZDJjZm9ybSB0ZXh0YXJlYTpmb2N1cyB7IGJvcmRlci1jb2xvcjojODZiN2ZlOyBvdXRsaW5lOjA7IGJveC1zaGFkb3c6MCAwIDAgMC4ycmVtIHJnYigxMyAxMTAgMjUzIC8gMjUlKTsgfSAuZDJjZm9ybSAuaW5wdXQtZ3JvdXAgaW5wdXQ6bm90KFt0eXBlPXN1Ym1pdF0pOm5vdChbdHlwZT0icmFkaW8iXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpmb2N1cywgLmQyY2Zvcm0gLmlucHV0LWdyb3VwIHNlbGVjdDpmb2N1cywgLmQyY2Zvcm0gLmlucHV0LWdyb3VwIHRleHRhcmVhOmZvY3VzIHsgei1pbmRleDozOyB9IC5kMmNmb3JtIGlucHV0LnZhbGlkaXR5LWVycm9uZW91cywgLmQyY2Zvcm0gc2VsZWN0LnZhbGlkaXR5LWVycm9uZW91cywgLmQyY2Zvcm0gdGV4dGFyZWEudmFsaWRpdHktZXJyb25lb3VzLCAuZDJjZm9ybSAuaW5wdXQtZ3JvdXAgLnZhbGlkaXR5LWVycm9uZW91cyArIC5pbnB1dC1ncm91cC10ZXh0IHsgYm9yZGVyLWNvbG9yOiNkYzM1NDUgIWltcG9ydGFudDsgYmFja2dyb3VuZC1jb2xvcjojZmFkNmRjICFpbXBvcnRhbnQ7IH0gLmQyY2Zvcm0gaW5wdXQudmFsaWRpdHktZXJyb25lb3VzOjpwbGFjZWhvbGRlciwgLmQyY2Zvcm0gdGV4dGFyZWEudmFsaWRpdHktZXJyb25lb3VzOjpwbGFjZWhvbGRlciwgLmQyY2Zvcm0gc2VsZWN0LnZhbGlkaXR5LWVycm9uZW91cywgLmQyY2Zvcm0gLmlucHV0LWdyb3VwIC52YWxpZGl0eS1lcnJvbmVvdXMgKyAuaW5wdXQtZ3JvdXAtdGV4dCB7IGNvbG9yOiNkYzM1NDU7IH0KLyoqIC9jc3MvY3JlZGl0U2NvcmVQb3B1cC5jc3MgKiovCiNjcmVkaXRTY29yZVBvcHVwQ29udGFpbmVyeyBiYWNrZ3JvdW5kOndoaXRlOyBwYWRkaW5nOjMwcHggMjBweCAzNHB4OyBtYXgtd2lkdGg6Y2FsYygxMDB2dyAtIDQwcHgpOyB9ICNjcmVkaXRTY29yZVBvcHVwQ29udGFpbmVyIHNwYW57IG1hcmdpbjowOyBwYWRkaW5nOjA7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IH0gI2NyZWRpdFNjb3JlUG9wdXBDb250YWluZXIgc3Bhbi5jcmVkaXRTY29yZUdyZWVuQ29sb3J7IGNvbG9yOiM0ZDhmMTQ7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gI2NyZWRpdFNjb3JlUG9wdXBDb250YWluZXIgc3Bhbi5jcmVkaXRTY29yZUJvbGR7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0gLmNyZWRpdFNjb3JlX2J0bnsgY29sb3I6I2ZmZmZmZjsgYmFja2dyb3VuZDojMDAyYzVmOyB9IC5jcmVkaXRTY29yZUltYWdleyB3aWR0aDoxMDAlOyB9ICNjcmVkaXRTY29yZVBvcHVwQ29udGFpbmVyIGRpdi5jcmVkaXRTY29yZVRpdGxlQ29udGFpbmVyeyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAjY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lciBkaXYuY3JlZGl0U2NvcmVUaXRsZXsgZm9udC1zaXplOjEuMjVyZW0gOyB9ICNjcmVkaXRTY29yZVBvcHVwQ29udGFpbmVyIGRpdi5jcmVkaXRTY29yZUltYWdlQ29udGFpbmVyeyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAjY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lciBzcGFuLmNyZWRpdFNjb3JlVGl0bGVGcmVleyBmb250LXNpemU6Mi44MTNyZW0gOyB0ZXh0LXNoYWRvdzoycHggMDsgfSAjY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lciBzcGFuLmNyZWRpdFNjb3JlVGl0bGVTY29yZXsgZm9udC1zaXplOjEuODEzcmVtIDsgdGV4dC1zaGFkb3c6MS40cHggMDsgfSAjY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lciBpbnB1dHsgaGVpZ2h0OjMycHg7IGZvbnQtc2l6ZTowLjgxM3JlbSA7IHdpZHRoOjEzNXB4OyBwYWRkaW5nOjAgMTBweDsgbWFyZ2luLWJvdHRvbToxMHB4OyBib3JkZXI6MXB4IHNvbGlkICNlZWVlZWU7IGJveC1zaXppbmc6Y29udGVudC1ib3g7IH0gI2NyZWRpdFNjb3JlUG9wdXBDb250YWluZXIgI2NyZWRpdFNjb3JlRW1haWx7IHdpZHRoOjI5NnB4OyB9ICNjcmVkaXRTY29yZVBvcHVwQ29udGFpbmVyICNjcmVkaXRTY29yZUFkZHJlc3N7IHdpZHRoOjI5NnB4OyB9ICNjcmVkaXRTY29yZVBvcHVwQ29udGFpbmVyIC5jcmVkaXRTY29yZV9idG57IHdpZHRoOjMyMHB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgaGVpZ2h0OjQwcHg7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgLXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7IH0gI2NyZWRpdFNjb3JlUG9wdXBDb250YWluZXIgZGl2LmNyZWRpdFNjb3JlRXh0cmFUZXh0eyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAjY3JlZGl0U2NvcmVQb3B1cENvbnRhaW5lciBkaXYuY3JlZGl0U2NvcmVDb25zZW50TWVzc2FnZXsgY29sb3I6I2IzYjNiMzsgZm9udC1zaXplOjAuNjg4cmVtIDsgdGV4dC1hbGlnbjpjZW50ZXI7IG1hcmdpbi10b3A6MnB4OyB9ICNjcmVkaXRTY29yZVBvcHVwQ29udGFpbmVyIC5jcmVkaXRTY29yZUltYWdleyBiYWNrZ3JvdW5kLWNvbG9yOiMwMDdmYTU7IH0gLnBhYy1jb250YWluZXIgeyB6LWluZGV4OjEwMDAwMjE7IH0KLyoqIC9jc3MvbmViQ2FsL25lYkNhbC5jc3MgKiovCi5uZWJDYWwgKiB7IG92ZXJmbG93OmhpZGRlbjsgcGFkZGluZzowOyBtYXJnaW46MDsgbGluZS1oZWlnaHQ6MTAwJTsgYmFja2dyb3VuZC1jb2xvciA6d2hpdGU7IH0gLm5lYkNhbCAuY2FsLWhlYWRlciAuY2FsLWFycm93LWxlZnQsIC5uZWJDYWwgLmNhbC1oZWFkZXIgLmNhbC1hcnJvdy1yaWdodCB7IGN1cnNvcjpwb2ludGVyO30gLm5lYkNhbCAuY2FsLWhlYWRlciAuY2FsLWFycm93LWxlZnQgeyBmbG9hdDpsZWZ0OyB9IC5uZWJDYWwgLmNhbC1oZWFkZXIgLmNhbC1hcnJvdy1sZWZ0OmJlZm9yZSB7IGNvbnRlbnQ6JzwnOyBmb250LXdlaWdodDpib2xkOyBjb2xvcjojNTIzYTI5OyB9IC5uZWJDYWwgLmNhbC1oZWFkZXIgLmNhbC1hcnJvdy1yaWdodCB7IGZsb2F0OnJpZ2h0OyB9IC5uZWJDYWwgLmNhbC1oZWFkZXIgLmNhbC1hcnJvdy1yaWdodDpiZWZvcmUgeyBjb250ZW50Oic+JzsgZm9udC13ZWlnaHQ6Ym9sZDsgY29sb3I6IzUyM2EyOTsgfSAubmViQ2FsIC5jYWwtaGVhZGVyIC5jYWwtbGFiZWwgeyBkaXNwbGF5OmlubGluZS1ibG9jazsgb3ZlcmZsb3c6dmlzaWJsZTsgd2lkdGg6MTQ2cHg7IH0gLm5lYkNhbCAuY2FsLWhlYWRlciAuY2FsLWxhYmVsLmNhbC1jbGlja2FibGUgeyBjdXJzb3I6cG9pbnRlcjsgfSAubmViQ2FsIC5jYWwtYm9keSB7IHBvc2l0aW9uOnJlbGF0aXZlOyB9IC5uZWJDYWwgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIgeyBwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDowOyB9IC5uZWJDYWwgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIgLmNhbC1yb3cgZGl2IHsgZmxvYXQ6bGVmdDsgfSAubmViQ2FsIC5jYWwtYm9keSAuY2FsLWlubmVyIC5jYWwtY29udGFpbmVyLmNhbC1tb250aC5jYWwtcGlja2FibGUgLmNhbC1yb3cgZGl2LCAubmViQ2FsIC5jYWwtYm9keSAuY2FsLWlubmVyIC5jYWwtY29udGFpbmVyLmNhbC15ZWFyLWRlY2FkZSAuY2FsLXJvdyBkaXYgeyBjdXJzb3I6cG9pbnRlcjt9IC5uZWJDYWwgeyBjdXJzb3I6ZGVmYXVsdDsgcG9zaXRpb246YWJzb2x1dGU7IHotaW5kZXg6MTAwMDAyMDsgdGV4dC1hbGlnbjpjZW50ZXI7IHdpZHRoOjI5MHB4OyBoZWlnaHQ6MjE1cHg7IGZvbnQtc2l6ZTowLjkzOHJlbSA7IGNvbG9yOiM1MjNhMjk7IH0gLm5lYkNhbC5pbmxpbmUgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC13cmFwcGVyIHsgcGFkZGluZzowIDRweDsgYm9yZGVyOnNvbGlkIDFweCAjZGRkZWQ5OyAtbW96LWJveC1zaGFkb3c6MHB4IDBweCA0cHggMnB4ICNkOGQ4ZDg7LXdlYmtpdC1ib3gtc2hhZG93OjBweCAwcHggNHB4IDJweCAjZDhkOGQ4O2JveC1zaGFkb3c6MHB4IDBweCA0cHggMnB4ICNkOGQ4ZDg7fSAubmViQ2FsLmRlZmF1bHQgLmNhbC1oZWFkZXIgeyBoZWlnaHQ6MjVweDsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1oZWFkZXIgLmNhbC1hcnJvdy1sZWZ0LCAubmViQ2FsLmRlZmF1bHQgLmNhbC1oZWFkZXIgLmNhbC1hcnJvdy1yaWdodCB7IHdpZHRoOjEycHg7IGhlaWdodDoxM3B4OyBtYXJnaW46NnB4IDdweDsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1oZWFkZXIgLmNhbC1hcnJvdy1sZWZ0IHsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1oZWFkZXIgLmNhbC1hcnJvdy1sZWZ0OmhvdmVyIHsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1oZWFkZXIgLmNhbC1hcnJvdy1yaWdodCB7IH0gLm5lYkNhbC5kZWZhdWx0IC5jYWwtaGVhZGVyIC5jYWwtYXJyb3ctcmlnaHQ6aG92ZXIgeyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWhlYWRlciAuY2FsLWxhYmVsIHsgbGluZS1oZWlnaHQ6MjVweDsgY29sb3I6IzUyM2EyOTsgdGV4dC10cmFuc2Zvcm06bm9uZTsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1oZWFkZXIgLmNhbC1sYWJlbC5jYWwtY2xpY2thYmxlIHsgY29sb3I6IzA4YTUzYzsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1oZWFkZXIgLmNhbC1sYWJlbC5jYWwtY2xpY2thYmxlOmhvdmVyIHsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1ib2R5IHsgaGVpZ2h0OjE4MHB4OyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lciB7IHdpZHRoOjI5MHB4OyBoZWlnaHQ6MTgwcHg7IH0gLm5lYkNhbC5kZWZhdWx0IC5jYWwtYm9keSAuY2FsLWlubmVyIC5jYWwtY29udGFpbmVyIC5jYWwtcm93IHsgd2lkdGg6MjkwcHg7IH0gLm5lYkNhbC5kZWZhdWx0IC5jYWwtYm9keSAuY2FsLWlubmVyIC5jYWwtY29udGFpbmVyLmNhbC15ZWFyLWRlY2FkZSAuY2FsLXJvdy5jYWwtb2RkIGRpdiB7IG1hcmdpbjo1cHg7IGJhY2tncm91bmQtY29sb3I6I2RlZGVkZTtib3JkZXI6MXB4IHNvbGlkICNkOWQ5ZDk7fSAubmViQ2FsLmRlZmF1bHQgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIuY2FsLXllYXItZGVjYWRlIC5jYWwtcm93LmNhbC1ldmVuIGRpdiB7IG1hcmdpbjo1cHg7IGJhY2tncm91bmQtY29sb3I6I2YwZjBmMDtib3JkZXI6MXB4IHNvbGlkICNlY2VjZWM7fSAubmViQ2FsLmRlZmF1bHQgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIgLmNhbC1yb3cgZGl2LmNhbC10b2RheSB7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7IH0gLm5lYkNhbC5kZWZhdWx0IC5jYWwtYm9keSAuY2FsLWlubmVyIC5jYWwtY29udGFpbmVyIC5jYWwtcm93IGRpdi5jYWwtc2VsZWN0ZWQgeyBtYXJnaW4tbGVmdDo1cHg7IG1hcmdpbi1yaWdodDo1cHg7IGhlaWdodDoyMHB4O2ZvbnQtc2l6ZToxcmVtIDtmb250LXdlaWdodDo2MDA7IGNvbG9yOiNmZmYgIWltcG9ydGFudDt0ZXh0LXNoYWRvdzoxcHggMXB4IDBweCAjMzlhNjYzOyBiYWNrZ3JvdW5kLWNvbG9yOiM1NGJiMDA7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjVweDstbW96LWJvcmRlci1yYWRpdXM6NXB4O2JvcmRlci1yYWRpdXM6NXB4O30gLm5lYkNhbC5kZWZhdWx0IC5jYWwtYm9keSAuY2FsLWlubmVyIC5jYWwtY29udGFpbmVyIC5jYWwtcm93IGRpdi5jYWwtbm9uLXNlbGVjdGFibGUsIC5uZWJDYWwuZGVmYXVsdCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lciAuY2FsLXJvdyBkaXYuY2FsLW5vbi1zZWxlY3RhYmxlOmhvdmVyIHsgY29sb3I6I2JkYmRiZCAhaW1wb3J0YW50OyBjdXJzb3I6ZGVmYXVsdCAhaW1wb3J0YW50OyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lci5jYWwtbW9udGggLmNhbC1yb3cuYSBkaXYgeyBjdXJzb3I6ZGVmYXVsdCAhaW1wb3J0YW50OyBjb2xvcjojMzc5YjU3ICFpbXBvcnRhbnQ7dGV4dC10cmFuc2Zvcm06bm9uZTsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIuY2FsLW1vbnRoIC5jYWwtcm93IHsgaGVpZ2h0OjI2cHg7IH0gLm5lYkNhbC5kZWZhdWx0IC5jYWwtYm9keSAuY2FsLWlubmVyIC5jYWwtY29udGFpbmVyLmNhbC1tb250aCAuY2FsLXJvdyBkaXYgeyBtYXJnaW4tdG9wOjNweDsgd2lkdGg6NDBweDsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIuY2FsLW1vbnRoIC5jYWwtcm93IGRpdi5jYWwtc2VsZWN0ZWQgeyBtYXJnaW4tdG9wOjNweDsgd2lkdGg6MzBweDsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIuY2FsLW1vbnRoIC5jYWwtcm93IGRpdi5jYWwtZmlyc3QgeyBwYWRkaW5nLWxlZnQ6MTZweDsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIuY2FsLW1vbnRoIC5jYWwtcm93IGRpdi5jYWwtbGFzdCB7IHBhZGRpbmctcmlnaHQ6MTZweDsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIuY2FsLW1vbnRoIC5jYWwtcm93IGRpdi5jYWwtb3V0c2lkZSB7IGNvbG9yOiNkZWRlZGU7IH0gLm5lYkNhbC5kZWZhdWx0IC5jYWwtYm9keSAuY2FsLWlubmVyIC5jYWwtY29udGFpbmVyLmNhbC1tb250aCAuY2FsLXJvdy5jYWwtZXZlbiBkaXYuY2FsLW91dHNpZGUgeyBjb2xvcjojY2VjZWNlOyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lci5jYWwtbW9udGggLmNhbC1yb3cuYSBkaXYgeyBjb2xvcjojOWM5YzljOyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lci5jYWwteWVhci1kZWNhZGUgLmNhbC1yb3cgeyBoZWlnaHQ6NDJweDsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIuY2FsLXllYXItZGVjYWRlIC5jYWwtcm93IGRpdiB7IHdpZHRoOjgwcHg7bGluZS1oZWlnaHQ6MjdweDsgaGVpZ2h0OjI3cHg7IH0gLm5lYkNhbC5kZWZhdWx0IC5jYWwtYm9keSAuY2FsLWlubmVyIC5jYWwtY29udGFpbmVyLmNhbC15ZWFyLWRlY2FkZSAuY2FsLXJvdyBkaXYuY2FsLWZpcnN0IHsgbWFyZ2luLWxlZnQ6MTZweDsgfSAubmViQ2FsLmRlZmF1bHQgLmNhbC1ib2R5IC5jYWwtaW5uZXIgLmNhbC1jb250YWluZXIuY2FsLXllYXItZGVjYWRlIC5jYWwtcm93IGRpdi5jYWwtbGFzdCB7IG1hcmdpbi1yaWdodDoxNnB4OyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lci5jYWwteWVhci1kZWNhZGUgLmNhbC1yb3cgZGl2LmNhbC1zZWxlY3RlZCB7IGJhY2tncm91bmQtY29sb3I6IzU0YmIwMDt9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWJvZHkgLmNhbC1pbm5lciAuY2FsLWNvbnRhaW5lci5jYWwtbW9udGguY2FsLXBpY2thYmxlIC5jYWwtcm93IGRpdjpob3ZlciwgLm5lYkNhbC5kZWZhdWx0IC5jYWwtYm9keSAuY2FsLWlubmVyIC5jYWwtY29udGFpbmVyLmNhbC15ZWFyLWRlY2FkZSAuY2FsLXJvdyBkaXY6aG92ZXIgeyBjb2xvcjojYjJjZmUxOyB9IC5uZWJDYWwuZGVmYXVsdCAuY2FsLWZvb3RlciB7IGhlaWdodDo0cHg7IH0KLyoqIC9jc3MvZmluYW5jZV9tdWx0aXN0ZXAuY3NzICoqLwojZmluYW5jZV9tdWx0aXN0ZXBfZm9ybXsgdGV4dC1hbGlnbjpjZW50ZXI7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yeyB0ZXh0LWFsaWduOmxlZnQ7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gaDJ7IHRleHQtYWxpZ246Y2VudGVyOyBtYXJnaW4tdG9wOjEwcHg7IG1hcmdpbi1ib3R0b206MTVweDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSBoM3sgdGV4dC1hbGlnbjpjZW50ZXI7IG1hcmdpbi10b3A6MTBweDsgbWFyZ2luLWJvdHRvbToxNXB4OyBmb250LXNpemU6MS4yNXJlbSA7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm1fbmV4dF9idG4geyB0ZXh0LWFsaWduOmNlbnRlcjsgbWFyZ2luLXRvcDoyNXB4OyBtYXJnaW4tYm90dG9tOjI1cHg7IHdpZHRoOjEwMCU7IHBvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjA7IGJvdHRvbTowOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtICNmaW5hbmNlX211bHRpc3RlcF9mb3JtX25leHRfYnRuIGJ1dHRvbnsgcGFkZGluZzoxN3B4IDY1cHggMTVweCA2NXB4OyBmb250LXNpemU6MS4yNXJlbSA7IGZvbnQtd2VpZ2h0OjQwMDsgd2lkdGg6MjgwcHg7IGJhY2tncm91bmQtY29sb3I6d2hpdGU7IGNvbG9yOiNDMEMwQzA7IGJvcmRlcjpub25lOyBjdXJzb3I6cG9pbnRlcjsgYm9yZGVyOjFweCBzb2xpZCAjQzBDMEMwOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtICNmaW5hbmNlX211bHRpc3RlcF9mb3JtX25leHRfYnRuIGJ1dHRvbi5pc1ZhbGlkeyBiYWNrZ3JvdW5kLWNvbG9yOiNlNGRjZDM7IGNvbG9yOiMwMDAwMDA7IGJvcmRlcjoxcHggc29saWQgIzAwMDAwMDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSBpbnB1dFt0eXBlPSJyYWRpbyJdeyBvcGFjaXR5OjA7IHdpZHRoOjA7IGhlaWdodDowOyBwb3NpdGlvbjphYnNvbHV0ZTsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSBsYWJlbC5yYWRpb19sYWJlbCB7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgcGFkZGluZzoxNXB4IDEwcHg7IGN1cnNvcjpwb2ludGVyOyBvcGFjaXR5OjE7IHRyYW5zaXRpb246YWxsIDFzIGVhc2UtaW4tb3V0OyBtYXJnaW4tYm90dG9tOjVweDsgYm9yZGVyOjFweCBzb2xpZCAjY2NjY2NjOyBib3JkZXItYm90dG9tLXdpZHRoOjVweDsgd2lkdGg6MTAwJTsgZmxvYXQ6bGVmdDsgZm9udC1zaXplOjEuMTI1cmVtIDsgbWluLWhlaWdodDoxMDJweDsgYmFja2dyb3VuZDojZmZmZmZmOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIGlucHV0W3R5cGU9InJhZGlvIl06Y2hlY2tlZCB+IGxhYmVsLnJhZGlvX2xhYmVsIHsgYm9yZGVyOjFweCBzb2xpZCAjMDAwOyBib3JkZXItYm90dG9tLXdpZHRoOjVweDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSBsYWJlbC5yYWRpb19sYWJlbDIgeyBib3JkZXI6MXB4IHNvbGlkIHJnYmEoMjUwLCAyNTAsIDI1MCwgMC4xNSk7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgcGFkZGluZzoxMHB4IDVweCA1cHggNXB4OyBjdXJzb3I6cG9pbnRlcjsgb3BhY2l0eToxOyB0cmFuc2l0aW9uOmFsbCAxcyBlYXNlLWluLW91dDsgbWFyZ2luLWJvdHRvbTo1cHg7IGJvcmRlcjoxcHggc29saWQgI2NjY2NjYzsgYm9yZGVyLWJvdHRvbS13aWR0aDo1cHg7IHdpZHRoOjEwMCU7IGZsb2F0OmxlZnQ7IGZvbnQtc2l6ZToxLjEyNXJlbSA7IG1pbi1oZWlnaHQ6NDVweDsgYmFja2dyb3VuZDojZmZmZmZmOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIGlucHV0W3R5cGU9InJhZGlvIl06Y2hlY2tlZCB+IGxhYmVsLnJhZGlvX2xhYmVsMiB7IGJvcmRlcjoxcHggc29saWQgIzAwMDsgYm9yZGVyLWJvdHRvbS13aWR0aDo1cHg7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLnJhZGlvX2Rpdnsgd2lkdGg6NDUlOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5yYWRpb19kaXYucmRfd2lkZXsgd2lkdGg6NDYlOyBtaW4taGVpZ2h0Ojg4cHg7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLnJhZGlvX2RpdjpudGgtb2YtdHlwZShvZGQpeyBmbG9hdDpsZWZ0OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5yYWRpb19kaXY6bnRoLW9mLXR5cGUoZXZlbil7IGZsb2F0OnJpZ2h0OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIGlucHV0W3R5cGU9InRleHQiXXsgd2lkdGg6MjkwcHg7IGhlaWdodDo0MHB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC1zaXplOjEuMjVyZW0gOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIGlucHV0W3R5cGU9Im51bWJlciJdOm5vdCgucGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudCl7IGRpc3BsYXk6YmxvY2s7IGZsb2F0OmxlZnQ7IGJvcmRlcjoxcHggc29saWQgI2RkZGRkZDsgd2lkdGg6MTIwcHg7IGJvcmRlci1yaWdodDpub25lOyBtYXJnaW46MCAwIDEwcHg7IGxpbmUtaGVpZ2h0OjMwcHg7IGhlaWdodDo3NXB4OyBwYWRkaW5nOjA7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXNpemU6MS41cmVtIDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAubnVtYmVyLXR5cGUtbGFiZWx7IGRpc3BsYXk6YmxvY2s7IGZsb2F0OmxlZnQ7IGJvcmRlcjoxcHggc29saWQgI2RkZGRkZDsgd2lkdGg6MTIwcHg7IGNvbG9yOiMyNTI1MjU7IGhlaWdodDo3NXB4OyBsaW5lLWhlaWdodDozNXB4OyBmb250LXNpemU6MS41cmVtIDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAubnVtYmVyLXR5cGUtZGl2eyBmbG9hdDpsZWZ0OyBsZWZ0OjEwJTsgbWFyZ2luLXRvcDoyMHB4OyBwb3NpdGlvbjpyZWxhdGl2ZTsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZV9tdWx0aXN0ZXBfc2VsZWN0X2NvbnRhaW5lcnsgbWFyZ2luLXRvcDoxMHB4OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlX211bHRpc3RlcF9zZWxlY3RfY29udGFpbmVyX2Rpdnsgd2lkdGg6MTAwJTsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZV9tdWx0aXN0ZXBfc2VsZWN0X2NvbnRhaW5lciBzZWxlY3R7IGNvbG9yOiMzYzM4MzY7IGJvcmRlcjoycHggc29saWQgIzAwMDAwMDsgYm9yZGVyLXJhZGl1czo1cHg7IHBhZGRpbmc6MTBweCAxMHB4OyBmb250LXNpemU6MXJlbSA7IGJhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuOSk7IGJhY2tncm91bmQtcG9zaXRpb246OTUlIDUwJTsgd2lkdGg6OTBweDsgLXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7IC1tb3otYXBwZWFyYW5jZTpub25lOyBwYWRkaW5nLXJpZ2h0OjI3cHg7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VfbXVsdGlzdGVwX3NlbGVjdF9jb250YWluZXJfc2VsZWN0eyBwb3NpdGlvbjpyZWxhdGl2ZTsgd2lkdGg6NDAlOyBtYXJnaW46YXV0bzsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZV9tdWx0aXN0ZXBfc2VsZWN0X2NvbnRhaW5lcl9zZWxlY3Q6YWZ0ZXIgeyBjb250ZW50OiIgIjsgaGVpZ2h0OjA7IHdpZHRoOjA7IGJvcmRlci1sZWZ0OjVweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXJpZ2h0OjVweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXRvcDo1cHggc29saWQgIzAwMDsgcG9zaXRpb246YWJzb2x1dGU7IHJpZ2h0OjE0cHg7IHRvcDoxN3B4OyB0cmFuc2l0aW9uOmFsbCAuM3MgbGluZWFyOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5zdGVwMjRzZWxlY3R7IG1hcmdpbi10b3A6MTBweDsgcGFkZGluZzowLjVyZW07IGJhY2tncm91bmQtY29sb3I6d2hpdGU7IGJvcmRlci1yYWRpdXM6MC41cmVtOyBib3JkZXI6MXB4IHNvbGlkICNkZGQ7IGNvbG9yOiMyMTI1Mjk7IGZvbnQtc2l6ZTowLjg3NXJlbSA7IGxpbmUtaGVpZ2h0Om5vcm1hbDsgZm9udC13ZWlnaHQ6NDAwOyB3aWR0aDoxMDAlOyB9IC5wYWMtY29udGFpbmVyIHsgei1pbmRleDoxMDAwMDIxOyB9IGlucHV0Ojotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uLCBpbnB1dDo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiB7IC13ZWJraXQtYXBwZWFyYW5jZTpub25lOyBtYXJnaW46MDsgfSAjZmluYW5jZU11bHRpc3RlcFBvcHVwQ29udGFpbmVyeyBtYXgtd2lkdGg6Y2FsYygxMDB2dyAtIDIwcHgpOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtICNtdWx0aXN0ZXAtbXVsdGlhZGRyZXNzIHNlbGVjdCB7IG1heC13aWR0aDoyODBweDsgbWFyZ2luOjAgYXV0bzsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAjbXVsdGlzdGVwLW11bHRpYWRkcmVzcyBsYWJlbCB7IHRleHQtYWxpZ246Y2VudGVyOyBtYXJnaW4tdG9wOjI1cHg7IG1hcmdpbi1ib3R0b206MjVweDsgZm9udC1zaXplOjEuNXJlbSA7IGRpc3BsYXk6YmxvY2s7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gI211bHRpc3RlcC1tdWx0aWFkZHJlc3MgI211dGxpQWRkcmVzc1N1Ym1pdCB7IGRpc3BsYXk6bm9uZTsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZV9tdWx0aXN0ZXBfYmlydGhkYXRlX2lucHV0c3sgZGlzcGxheTppbmxpbmUtZmxleDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZV9tdWx0aXN0ZXBfYmlydGhkYXRlX2lucHV0X2RpdnsgbWFyZ2luOjIwcHggNXB4IDIwcHggNXB4OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlX211bHRpc3RlcF9iaXJ0aGRhdGVfaW5wdXRfZGl2IGxhYmVseyBmb250LXNpemU6MS4xMjVyZW0gOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlX211bHRpc3RlcF9iaXJ0aGRhdGVfaW5wdXRfZGl2IGlucHV0W3R5cGU9Im51bWJlciJdeyB3aWR0aDo4MHB4OyBoZWlnaHQ6NTBweDsgZGlzcGxheTpibG9jazsgZmxvYXQ6bm9uZTsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZV9tdWx0aXN0ZXBfYmlydGhkYXRlX2lucHV0X2RpdiBpbnB1dFt0eXBlPSJudW1iZXIiXS5iaXJ0aHllYXJ7IHdpZHRoOjEwMHB4OyB9IC5yZXZlYWwtbW9kYWwuZmluYW5jZV9iYWNrZ3JvdW5kX2ltYWdleyBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9wb3B1cHMvZmluYW5jZXBvcHVwLWJnLW1vYmlsZS53ZWJwJyk7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VJY29uRGl2eyBwb3NpdGlvbjpyZWxhdGl2ZTsgaGVpZ2h0OjEzNXB4OyBtYXJnaW4tYm90dG9tOjEwcHg7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VJY29uRGl2IC5maW5hbmNlQ2FsY3sgY29sb3I6IzRlYmE1OTsgZm9udC1zaXplOjEwMHB4OyBsZWZ0OjM1JTsgcG9zaXRpb246YWJzb2x1dGU7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VJY29uRGl2IC5maW5hbmNlQ2FyeyBjb2xvcjojMDAwMDAwOyBmb250LXNpemU6MTAwcHg7IGxlZnQ6MzMlOyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjUwcHg7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmVtcGxveW1lbnRUZXh0TGFiZWx7IHdpZHRoOjQ1JTsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZW1wbG95bWVudFRleHRMYWJlbDJ7IG1hcmdpbi1yaWdodDoyNXB4OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5lbXBsb3ltZW50VGV4dHsgd2lkdGg6NjAlIWltcG9ydGFudDsgZm9udC1zaXplOjEuMTI1cmVtICFpbXBvcnRhbnQ7IGJvcmRlcjoxcHggc29saWQgI2NjY2NjYzsgaGVpZ2h0OjI1cHg7IG1hcmdpbi1ib3R0b206NXB4OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIGlucHV0W3R5cGU9Im51bWJlciJdLmVtcGxveW1lbnRTdGF0dXNUaW1leyB3aWR0aDo1MHB4OyBoZWlnaHQ6NTBweDsgYm9yZGVyOjFweCBzb2xpZCAjYTlhOWE5OyBib3JkZXItcmFkaXVzOjVweDsgYWxpZ24tc2VsZjpjZW50ZXI7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmVtcGxveW1lbnRBZGRlZEluZm97IHdpZHRoOjk1JTsgaGVpZ2h0OjUwcHg7IHJlc2l6ZTpub25lOyBtYXJnaW4tdG9wOjEwcHg7IG1hcmdpbi1ib3R0b206MTBweDsgYm9yZGVyOjFweCBzb2xpZCAjY2NjY2NjOyBmb250LXNpemU6MC45MzhyZW0gIWltcG9ydGFudDsgfSAuZmFkZS1lbnRlciwgLmZhZGUtbGVhdmUgeyBvcGFjaXR5OjA7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAuY2FsYy1mb3JteyB3aWR0aDoxMDAlOyB0ZXh0LWFsaWduOmNlbnRlcjsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5jYWxjLWZvcm0gbGFiZWx7IG1hcmdpbi1ib3R0b206MTVweDsgcGFkZGluZzowOyBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47IHBvc2l0aW9uOnJlbGF0aXZlOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLmNhbGMtZm9ybSBsYWJlbC5wYXltZW50VmFsdWVMYWJlbHsganVzdGlmeS1jb250ZW50OnVuc2V0OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3Igc3BhbnsgZm9udC1zaXplOjFlbTsgd2lkdGg6NTAlOyB0ZXh0LWFsaWduOmxlZnQ7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciBpbnB1dHsgdGV4dC1hbGlnbjpsZWZ0OyBoZWlnaHQ6MjVweDsgZm9udC1zaXplOjFlbTsgY29sb3I6YmxhY2s7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciBzZWxlY3R7IGhlaWdodDoyOHB4OyBjb2xvcjpibGFjazsgZm9udC1zaXplOjFlbTsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5lc3RpbWF0ZWRUZXh0eyBmb250LXdlaWdodDo3MDA7IHdpZHRoOjcwJTsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5vdXRwdXRwcmljZS10eHR7IHdpZHRoOjM1JTsgbWFyZ2luLWxlZnQ6MzBweDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC50YXhlVGV4dHsgcG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MDsgYm90dG9tOi0xMHB4OyB3aWR0aDpmaXQtY29udGVudDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5pbnB1dCB7IGJvcmRlcjoxcHggc29saWQgIzk5OTsgYmFja2dyb3VuZDojZWVlOyBwYWRkaW5nOjAuMjVyZW07IGJvcmRlci1yYWRpdXM6MC4yNXJlbTsgd2lkdGg6bWluKDUwJSw2cmVtKTsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5jYWxjLWZvcm0gZGl2LmRvbGxhclNwYW57IGRpc3BsYXk6Y29udGVudHM7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciBkaXYuZG9sbGFyU3BhbiAuaW5wdXR7IHBhZGRpbmctbGVmdDoxMnB4OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLmNhbGMtZm9ybSBkaXYuZG9sbGFyU3Bhbjo6YmVmb3JleyBjb250ZW50OiIkIjsgZm9udC1zaXplOjFlbTsgcG9zaXRpb246YWJzb2x1dGU7IHJpZ2h0Ojg1cHg7IHRvcDo0OSU7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC00MyUpOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlX211bHRpc3RlcF9jb25zZW50X3RleHRfZGl2eyBvdmVyZmxvdy15OnNjcm9sbDsgaGVpZ2h0OjQ0MHB4OyB3aWR0aDoxMDAlOyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5tdWx0aXN0ZXBQYXltZW50VmVoaWNsZXsgZm9udC1zaXplOmluaGVyaXQ7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudFdyYXBwZXJ7IG1heC1oZWlnaHQ6MTc1cHg7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLnBheW1lbnRDYWxjdWxhdG9yUGF5bWVudENvbnRhaW5lcnsgaGVpZ2h0OjI3NXB4OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLmNhbGMtZm9ybSAubG9hbmFtb3VudCwgI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAuY2FsYy1mb3JtIC5pbnRlcmVzdHJhdGV7IGJvcmRlcjowOyBiYWNrZ3JvdW5kLWNvbG9yOnVuc2V0OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLmNhbGMtZm9ybSBpbnB1dCwgI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VNdWx0aXN0ZXBVc2VkQ2FsY3VsYXRvciAuY2FsYy1mb3JtIHNlbGVjdHsgYmFja2dyb3VuZC1jb2xvcjojZmZmOyBib3JkZXItcmFkaXVzOjAuM3JlbTsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAubXVsdGlzdGVwSW5pdGlhbFRpdGxleyBmb250LXdlaWdodDpib2xkOyBtYXJnaW4tdG9wOjA7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gc3Bhbi5oMi1hbHR7IHRleHQtYWxpZ246Y2VudGVyOyBtYXJnaW4tYm90dG9tOjE1cHg7IGZvbnQtc2l6ZTppbmhlcml0OyBkaXNwbGF5OmJsb2NrOyBjb2xvcjp2YXIoLS1kZWZhdWx0LWJsYWNrKTsgbWFyZ2luLWxlZnQ6MDsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSBzcGFuLmgzLWFsdHsgdGV4dC1hbGlnbjpjZW50ZXI7IG1hcmdpbi10b3A6MTBweDsgbWFyZ2luLWJvdHRvbToxNXB4OyBmb250LXNpemU6MS4yNXJlbSA7IGRpc3BsYXk6YmxvY2s7IGZvbnQtZmFtaWx5OnZhcigtLWZvbnQtaDItbW9iKTsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAuaGlkZGVuSW5wdXR7IGRpc3BsYXk6bm9uZTsgfSAuZmluYW5jZU11bHRpc3RlcE5ld0NhbGN1bGF0b3IgLnBheW1lbnRDYWxjdWxhdG9ySW5jbHVkZVRheENoZWNrRGl2eyBwb3NpdGlvbjphYnNvbHV0ZTsgbWFyZ2luLXRvcDoxMHB4OyByaWdodDowcHg7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLmZpbmFuY2VNdWx0aXN0ZXBOZXdDYWxjdWxhdG9yIC5wYXltZW50Q2FsY3VsYXRvclRyYWRlSW5Jbml0aWFseyBmb250LXNpemU6MC42MjVyZW0gOyBib3JkZXI6MXB4IHNvbGlkICNhOWE5YTk7IGhlaWdodDozNXB4OyBib3JkZXItcmFkaXVzOjVweDsgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsgd2lkdGg6MTA1cHg7IHRleHQtYWxpZ246Y2VudGVyOyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyBwYWRkaW5nOjRweCAycHggNXB4OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlTXVsdGlzdGVwTmV3Q2FsY3VsYXRvciAucGF5bWVudENhbGN1bGF0b3JUcmFkZUluRmluYWx7IGJvcmRlcjoxcHggc29saWQgI2E5YTlhOTsgaGVpZ2h0OjM1cHg7IGJvcmRlci1yYWRpdXM6NXB4OyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyB3aWR0aDoxMDVweCFpbXBvcnRhbnQ7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nOjVweCAycHg7IGJhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgdmVyc2lvbj0nMS4xJyBoZWlnaHQ9JzI4cHgnIHdpZHRoPSc4NXB4Jz48dGV4dCB4PSc2JyB5PScyMScgZmlsbD0nJyBmb250LXNpemU9JzE2JyBmb250LWZhbWlseT0nYXJpYWwnPiQiKTsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLnBheW1lbnRDYWxjdWxhdG9yVHJhZGVJbkluaXRpYWx7IGZvbnQtc2l6ZTowLjYyNXJlbSA7IGJvcmRlcjoxcHggc29saWQgI2E5YTlhOTsgaGVpZ2h0OjM1cHg7IGJvcmRlci1yYWRpdXM6NXB4OyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyB3aWR0aDo5NnB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgcGFkZGluZzo1cHggMnB4OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5maW5hbmNlTXVsdGlzdGVwVXNlZENhbGN1bGF0b3IgLnBheW1lbnRDYWxjdWxhdG9yVHJhZGVJbkZpbmFseyBib3JkZXI6MXB4IHNvbGlkICNhOWE5YTk7IGhlaWdodDozNXB4OyBib3JkZXItcmFkaXVzOjVweDsgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsgd2lkdGg6OTZweCFpbXBvcnRhbnQ7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nOjVweCAycHg7IGJhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgdmVyc2lvbj0nMS4xJyBoZWlnaHQ9JzI4cHgnIHdpZHRoPSc4NXB4Jz48dGV4dCB4PSc2JyB5PScyMScgZmlsbD0nJyBmb250LXNpemU9JzE2JyBmb250LWZhbWlseT0nYXJpYWwnPiQiKTsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyB9ICNmaW5hbmNlX211bHRpc3RlcF9mb3JtIC5mb3JtYXQtcHJpY2V7IG1hcmdpbi1ib3R0b206dW5zZXQ7IG1hcmdpbi1sZWZ0OjAuN3JlbTsgfSA6aXMoLkVOR0xJU0gsW2RhdGEtbGFuZz0iZW4iXSkgbGFiZWwgLmZvcm1hdC1wcmljZXsgbWFyZ2luLXJpZ2h0OjAuM3JlbTsgfSAjZmluYW5jZV9tdWx0aXN0ZXBfZm9ybSAudndDb25zZW50VGV4dHsgaGVpZ2h0OjE5MHB4OyBvdmVyZmxvdy15OnNjcm9sbDsgYmFja2dyb3VuZC1jb2xvcjojZmZmOyBwYWRkaW5nOjEwcHggMTBweDsgbGluZS1oZWlnaHQ6MS41ICFpbXBvcnRhbnQ7IH0gLnZ3Q29uc2VudFRleHQgaDF7IGZvbnQtc2l6ZToxLjI1cmVtICFpbXBvcnRhbnQ7IGZvbnQtd2VpZ2h0OjcwMCAhaW1wb3J0YW50OyBtYXJnaW46MCAwIDE2cHggMCAhaW1wb3J0YW50OyB9IC52d0NvbnNlbnRUZXh0IGgyeyBmb250LXNpemU6MXJlbSAhaW1wb3J0YW50OyBmb250LXdlaWdodDo3MDAgIWltcG9ydGFudDsgbWFyZ2luOjI0cHggMCAxMHB4IDAgIWltcG9ydGFudDsgfSAudndDb25zZW50VGV4dCBweyBmb250LXNpemU6MC44NzVyZW0gIWltcG9ydGFudDsgZm9udC13ZWlnaHQ6NDAwICFpbXBvcnRhbnQ7IGxpbmUtaGVpZ2h0OjEuNSAhaW1wb3J0YW50OyBtYXJnaW46MCAwIDEycHggMCAhaW1wb3J0YW50OyB0ZXh0LWFsaWduOmp1c3RpZnkgIWltcG9ydGFudDsgfSAudndDb25zZW50VGV4dCB1bHsgbWFyZ2luOjhweCAwIDE2cHggMjRweCAhaW1wb3J0YW50OyBwYWRkaW5nOjAgIWltcG9ydGFudDsgfSAudndDb25zZW50VGV4dCBsaXsgZm9udC1zaXplOjAuODc1cmVtICFpbXBvcnRhbnQ7IGZvbnQtd2VpZ2h0OjQwMCAhaW1wb3J0YW50OyBsaW5lLWhlaWdodDoxLjUgIWltcG9ydGFudDsgbWFyZ2luOjAgMCAxMnB4IDAgIWltcG9ydGFudDsgdGV4dC1hbGlnbjpqdXN0aWZ5ICFpbXBvcnRhbnQ7IH0gLnZ3Q29uc2VudFRleHQgc3Ryb25neyBmb250LXdlaWdodDo3MDAgIWltcG9ydGFudDsgfSAudndDb25zZW50VGV4dCBheyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lICFpbXBvcnRhbnQ7IH0gI2ZpbmFuY2VfbXVsdGlzdGVwX2Zvcm0gLnZ3Q29uc2VudERpdnN7IG1hcmdpbi10b3A6MTBweDsgZm9udC1zaXplOjAuNzVyZW0gOyB0ZXh0LWFsaWduOmxlZnQ7IH0KLyoqIC9jc3MvanF1ZXJ5LmRhdGV0aW1lcGlja2VyLmNzcyAqKi8KLnhkc29mdF9kYXRldGltZXBpY2tlcntib3gtc2hhZG93OjAgNXB4IDE1cHggLTVweCByZ2JhKDAsMCwwLDAuNTA2KTtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2JiYjtib3JkZXItbGVmdDoxcHggc29saWQgI2NjYztib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNjY2M7Ym9yZGVyLXRvcDoxcHggc29saWQgI2NjYztjb2xvcjojMzMzO2ZvbnQtZmFtaWx5OiJIZWx2ZXRpY2EgTmV1ZSIsSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7cGFkZGluZzo4cHg7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy10b3A6MnB4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDAyMTstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTpub25lfS54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIgaWZyYW1le3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0b3A6MDt3aWR0aDo3NXB4O2hlaWdodDoyMTBweDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JvcmRlcjowfS54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIgYnV0dG9ue2JvcmRlcjpub25lICFpbXBvcnRhbnR9Lnhkc29mdF9ub3NlbGVjdHstd2Via2l0LXRvdWNoLWNhbGxvdXQ6bm9uZTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LWtodG1sLXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lOy1vLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZX0ueGRzb2Z0X25vc2VsZWN0OjpzZWxlY3Rpb257YmFja2dyb3VuZDp0cmFuc3BhcmVudH0ueGRzb2Z0X25vc2VsZWN0OjotbW96LXNlbGVjdGlvbntiYWNrZ3JvdW5kOnRyYW5zcGFyZW50fS54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIueGRzb2Z0X2lubGluZXtkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpzdGF0aWM7Ym94LXNoYWRvdzpub25lfS54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIgKnstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7cGFkZGluZzowO21hcmdpbjowfS54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIgLnhkc29mdF9kYXRlcGlja2VyLC54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIgLnhkc29mdF90aW1lcGlja2Vye2Rpc3BsYXk6bm9uZX0ueGRzb2Z0X2RhdGV0aW1lcGlja2VyIC54ZHNvZnRfZGF0ZXBpY2tlci5hY3RpdmUsLnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X3RpbWVwaWNrZXIuYWN0aXZle2Rpc3BsYXk6YmxvY2t9Lnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X2RhdGVwaWNrZXJ7d2lkdGg6MjI0cHg7ZmxvYXQ6bGVmdDttYXJnaW4tbGVmdDo4cHh9Lnhkc29mdF9kYXRldGltZXBpY2tlci54ZHNvZnRfc2hvd3dlZWtzIC54ZHNvZnRfZGF0ZXBpY2tlcnt3aWR0aDoyNTZweH0ueGRzb2Z0X2RhdGV0aW1lcGlja2VyIC54ZHNvZnRfdGltZXBpY2tlcnt3aWR0aDo1OHB4O2Zsb2F0OmxlZnQ7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luLWxlZnQ6OHB4O21hcmdpbi10b3A6MH0ueGRzb2Z0X2RhdGV0aW1lcGlja2VyIC54ZHNvZnRfZGF0ZXBpY2tlci5hY3RpdmUrLnhkc29mdF90aW1lcGlja2Vye21hcmdpbi10b3A6OHB4O21hcmdpbi1ib3R0b206M3B4fS54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIgLnhkc29mdF9tb3VudGhwaWNrZXJ7cG9zaXRpb246cmVsYXRpdmU7dGV4dC1hbGlnbjpjZW50ZXJ9Lnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X2xhYmVsIGksLnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X3ByZXYsLnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X25leHQsLnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X3RvZGF5X2J1dHRvbntiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUdRQUFBQWVDQVlBQUFEYVc3dnpBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQXlKcFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1TXkxak1ERXhJRFkyTGpFME5UWTJNU3dnTWpBeE1pOHdNaTh3TmkweE5EbzFOam95TnlBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdklpQjRiV3h1Y3pwNGJYQk5UVDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5NFlYQXZNUzR3TDIxdEx5SWdlRzFzYm5NNmMzUlNaV1k5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5elZIbHdaUzlTWlhOdmRYSmpaVkpsWmlNaUlIaHRjRHBEY21WaGRHOXlWRzl2YkQwaVFXUnZZbVVnVUdodmRHOXphRzl3SUVOVE5pQW9WMmx1Wkc5M2N5a2lJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZRME5CUmpJMU5qTTBNMFV3TVRGRk5EazROa0ZHTXpKRlFrUXpRakV3UlVJaUlIaHRjRTFOT2tSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNlEwTkJSakkxTmpRME0wVXdNVEZGTkRrNE5rRkdNekpGUWtRelFqRXdSVUlpUGlBOGVHMXdUVTA2UkdWeWFYWmxaRVp5YjIwZ2MzUlNaV1k2YVc1emRHRnVZMlZKUkQwaWVHMXdMbWxwWkRwRFEwRkdNalUyTVRRelJUQXhNVVUwT1RnMlFVWXpNa1ZDUkROQ01UQkZRaUlnYzNSU1pXWTZaRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRHBEUTBGR01qVTJNalF6UlRBeE1VVTBPVGcyUVVZek1rVkNSRE5DTVRCRlFpSXZQaUE4TDNKa1pqcEVaWE5qY21sd2RHbHZiajRnUEM5eVpHWTZVa1JHUGlBOEwzZzZlRzF3YldWMFlUNGdQRDk0Y0dGamEyVjBJR1Z1WkQwaWNpSS9Qb05FUDU0QUFBSU9TVVJCVkhqYTdKcTlUc013RU1jeHJaRDRXcEJZZUtVQ2Ura1RNQ0FDSFpoNEJGZkhPL0FBSUhaR0ZoWWtCQnNTRXF4c0xDQWdYS2hiWFlPVHhoOXBmSlZQK3F1dG5aNXMvNUx6Mlk1STAzUWhXamkyR0ljZ0Fva1dnZkN4TnZjT0NDR0txaVNxaFVwMGxhSE9uZTA1dmRFeUdNZmtkeEpEVmpnd0RsRVFnWVFCZ3grVUxKYVdTWFhTNnIvRVI1RkJWUjhWZkdmdFRLY0lUTnMrYTFYcGNGb0V4UkVJREYxNEFWSUZ4Z1FVUytoNTIwY2R1ZDZ3TmtDMFVCdzZCQ08vSG9DWXdCaEQ4UUNrUS94MW13RHlENHBsaDRENkREVjBUQUd5bzRIY2F3TElCQlNMRGtIZUgwTWcyeVZQM2w0VFFNWlFERHNFT2wvTWdIUXFoTU51RTBEK29CaDBDSXI4TUFLeWF6Qkg5V3lCdUt4RFdnYlhmak5mMzJUWjFLV20vQXAxb1NrL1I1M1V0UTV4VGgzTFVsTW1UOGd0Nmc1MVE5cCtTb2J4Z0pRL3Ftc2ZaaFd5d0dGU2wweUJqQ0xKQ01nWGFpbDNiNytydW1kVkoyWVJzczRjTityNnFBSERrUFdqUGpkSkNGNG45Um1BRC9WOUEvV3A0TlFhc3NEandsQjZYQmlDeGNKUVdtWlpiOFRIRmlsZnkvbGZyVHZMZ2hxMlRxVEhyUk1US05KMHNJaGRvMTVSVCtScHlXd0ZkWTk2VVovTGRRS0JHamNYcGNjMUFsU0ZFZkxtb3VEKzFrbnV4QkRVVnJ2T0Jtb09DL3JFY043T1F4S1ZlSlRDaUFkVXpVSmhBMk9lejlRVGtwNzJPVFZjeERjWFk4aUtOa3hHQUpYbUpDT1F3T2E2ZGh5WHNPYTZYd0VHQUtkZWI1RVQzclFkQUFBQUFFbEZUa1N1UW1DQyl9Lnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X2xhYmVsIGl7b3BhY2l0eTouNTtiYWNrZ3JvdW5kLXBvc2l0aW9uOi05MnB4IC0xOXB4O2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjlweDtoZWlnaHQ6MjBweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9Lnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X3ByZXZ7ZmxvYXQ6bGVmdDtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMHB4IDB9Lnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X3RvZGF5X2J1dHRvbntmbG9hdDpsZWZ0O2JhY2tncm91bmQtcG9zaXRpb246LTcwcHggMDttYXJnaW4tbGVmdDo1cHh9Lnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X25leHR7ZmxvYXQ6cmlnaHQ7YmFja2dyb3VuZC1wb3NpdGlvbjowIDB9Lnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X25leHQsLnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X3ByZXYsLnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X3RvZGF5X2J1dHRvbntiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtib3JkZXI6MCBub25lO2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjMwcHg7b3BhY2l0eTouNTstbXMtZmlsdGVyOiJhbHBoYShvcGFjaXR5PTUwKSI7b3V0bGluZTptZWRpdW0gbm9uZTtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOnJlbGF0aXZlO3RleHQtaW5kZW50OjEwMCU7d2hpdGUtc3BhY2U6bm93cmFwO3dpZHRoOjIwcHg7bWluLXdpZHRoOjB9Lnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X3RpbWVwaWNrZXIgLnhkc29mdF9wcmV2LC54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIgLnhkc29mdF90aW1lcGlja2VyIC54ZHNvZnRfbmV4dHtmbG9hdDpub25lO2JhY2tncm91bmQtcG9zaXRpb246LTQwcHggLTE1cHg7aGVpZ2h0OjE1cHg7d2lkdGg6MzBweDtkaXNwbGF5OmJsb2NrO21hcmdpbi1sZWZ0OjE0cHg7bWFyZ2luLXRvcDo3cHh9Lnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X3RpbWVwaWNrZXIgLnhkc29mdF9wcmV2e2JhY2tncm91bmQtcG9zaXRpb246LTQwcHggMDttYXJnaW4tYm90dG9tOjdweDttYXJnaW4tdG9wOjB9Lnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X3RpbWVwaWNrZXIgLnhkc29mdF90aW1lX2JveHtoZWlnaHQ6MTUxcHg7b3ZlcmZsb3c6aGlkZGVuO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNkZGR9Lnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X3RpbWVwaWNrZXIgLnhkc29mdF90aW1lX2JveD5kaXY+ZGl2e2JhY2tncm91bmQ6I2Y1ZjVmNTtib3JkZXItdG9wOjFweCBzb2xpZCAjZGRkO2NvbG9yOiM2NjY7Zm9udC1zaXplOjAuNzVyZW0gO3RleHQtYWxpZ246Y2VudGVyO2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTtjdXJzb3I6cG9pbnRlcjtib3JkZXItYm90dG9tLXdpZHRoOjA7aGVpZ2h0OjI1cHg7bGluZS1oZWlnaHQ6MjVweH0ueGRzb2Z0X2RhdGV0aW1lcGlja2VyIC54ZHNvZnRfdGltZXBpY2tlciAueGRzb2Z0X3RpbWVfYm94PmRpdj5kaXY6Zmlyc3QtY2hpbGR7Ym9yZGVyLXRvcC13aWR0aDowfS54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIgLnhkc29mdF90b2RheV9idXR0b246aG92ZXIsLnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X25leHQ6aG92ZXIsLnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X3ByZXY6aG92ZXJ7b3BhY2l0eToxOy1tcy1maWx0ZXI6ImFscGhhKG9wYWNpdHk9MTAwKSJ9Lnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X2xhYmVse2Rpc3BsYXk6aW5saW5lO3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6OTk5OTttYXJnaW46MDtwYWRkaW5nOjVweCAzcHg7Zm9udC1zaXplOjAuODc1cmVtIDtsaW5lLWhlaWdodDoyMHB4O2ZvbnQtd2VpZ2h0OmJvbGQ7YmFja2dyb3VuZC1jb2xvcjojZmZmO2Zsb2F0OmxlZnQ7d2lkdGg6MTgycHg7dGV4dC1hbGlnbjpjZW50ZXI7Y3Vyc29yOnBvaW50ZXJ9Lnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X2xhYmVsOmhvdmVyPnNwYW57dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX0ueGRzb2Z0X2RhdGV0aW1lcGlja2VyIC54ZHNvZnRfbGFiZWw6aG92ZXIgaXtvcGFjaXR5OjEuMH0ueGRzb2Z0X2RhdGV0aW1lcGlja2VyIC54ZHNvZnRfbGFiZWw+Lnhkc29mdF9zZWxlY3R7Ym9yZGVyOjFweCBzb2xpZCAjY2NjO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7dG9wOjMwcHg7ei1pbmRleDoxMDE7ZGlzcGxheTpub25lO2JhY2tncm91bmQ6I2ZmZjttYXgtaGVpZ2h0OjE2MHB4O292ZXJmbG93LXk6aGlkZGVufS54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIgLnhkc29mdF9sYWJlbD4ueGRzb2Z0X3NlbGVjdC54ZHNvZnRfbW9udGhzZWxlY3R7cmlnaHQ6LTdweH0ueGRzb2Z0X2RhdGV0aW1lcGlja2VyIC54ZHNvZnRfbGFiZWw+Lnhkc29mdF9zZWxlY3QueGRzb2Z0X3llYXJzZWxlY3R7cmlnaHQ6MnB4fS54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIgLnhkc29mdF9sYWJlbD4ueGRzb2Z0X3NlbGVjdD5kaXY+Lnhkc29mdF9vcHRpb246aG92ZXJ7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOiMzMzN9Lnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X2xhYmVsPi54ZHNvZnRfc2VsZWN0PmRpdj4ueGRzb2Z0X29wdGlvbntwYWRkaW5nOjJweCAxMHB4IDJweCA1cHg7dGV4dC1kZWNvcmF0aW9uOm5vbmUgIWltcG9ydGFudH0ueGRzb2Z0X2RhdGV0aW1lcGlja2VyIC54ZHNvZnRfbGFiZWw+Lnhkc29mdF9zZWxlY3Q+ZGl2Pi54ZHNvZnRfb3B0aW9uLnhkc29mdF9jdXJyZW50e2JhY2tncm91bmQ6IzNhZjtib3gtc2hhZG93OiMxNzhmZTUgMCAxcHggM3B4IDAgaW5zZXQ7Y29sb3I6I2ZmZjtmb250LXdlaWdodDo3MDB9Lnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X21vbnRoe3dpZHRoOjEwMHB4O3RleHQtYWxpZ246cmlnaHR9Lnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X2NhbGVuZGFye2NsZWFyOmJvdGh9Lnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X3llYXJ7d2lkdGg6NDhweDttYXJnaW4tbGVmdDo1cHh9Lnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X2NhbGVuZGFyIHRhYmxle2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTt3aWR0aDoxMDAlfS54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIgLnhkc29mdF9jYWxlbmRhciB0ZD5kaXZ7cGFkZGluZy1yaWdodDo1cHh9Lnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X2NhbGVuZGFyIHRoe2hlaWdodDoyNXB4fS54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIgLnhkc29mdF9jYWxlbmRhciB0ZCwueGRzb2Z0X2RhdGV0aW1lcGlja2VyIC54ZHNvZnRfY2FsZW5kYXIgdGh7d2lkdGg6MTQuMjg1NzE0MiU7YmFja2dyb3VuZDojZjVmNWY1O2JvcmRlcjoxcHggc29saWQgI2RkZDtjb2xvcjojNjY2O2ZvbnQtc2l6ZTowLjc1cmVtIDt0ZXh0LWFsaWduOnJpZ2h0O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtwYWRkaW5nOjA7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO2N1cnNvcjpwb2ludGVyO2hlaWdodDoyNXB4fS54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIueGRzb2Z0X3Nob3d3ZWVrcyAueGRzb2Z0X2NhbGVuZGFyIHRkLC54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIueGRzb2Z0X3Nob3d3ZWVrcyAueGRzb2Z0X2NhbGVuZGFyIHRoe3dpZHRoOjEyLjUlfS54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIgLnhkc29mdF9jYWxlbmRhciB0aHtiYWNrZ3JvdW5kOiNmMWYxZjF9Lnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X2NhbGVuZGFyIHRkLnhkc29mdF90b2RheXtjb2xvcjojM2FmfS54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIgLnhkc29mdF9jYWxlbmRhciB0ZC54ZHNvZnRfaGlnaGxpZ2h0ZWRfZGVmYXVsdHtiYWNrZ3JvdW5kOiNmZmU5ZDI7Ym94LXNoYWRvdzojZmZiODcxIDAgMXB4IDRweCAwIGluc2V0O2NvbG9yOiMwMDB9Lnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X2NhbGVuZGFyIHRkLnhkc29mdF9oaWdobGlnaHRlZF9taW50e2JhY2tncm91bmQ6I2MxZmZjOTtib3gtc2hhZG93OiMwMGRkMWMgMCAxcHggNHB4IDAgaW5zZXQ7Y29sb3I6IzAwMH0ueGRzb2Z0X2RhdGV0aW1lcGlja2VyIC54ZHNvZnRfY2FsZW5kYXIgdGQueGRzb2Z0X2RlZmF1bHQsLnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X2NhbGVuZGFyIHRkLnhkc29mdF9jdXJyZW50LC54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIgLnhkc29mdF90aW1lcGlja2VyIC54ZHNvZnRfdGltZV9ib3g+ZGl2PmRpdi54ZHNvZnRfY3VycmVudHtiYWNrZ3JvdW5kOmdyZXk7Ym94LXNoYWRvdzpyZ2JhKDI5LDMwLDMxLDAuNykgMCAxcHggM3B4IDAgaW5zZXQ7Y29sb3I6I2ZmZjtmb250LXdlaWdodDo3MDB9Lnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X2NhbGVuZGFyIHRkLnhkc29mdF9vdGhlcl9tb250aCwueGRzb2Z0X2RhdGV0aW1lcGlja2VyIC54ZHNvZnRfY2FsZW5kYXIgdGQueGRzb2Z0X2Rpc2FibGVkLC54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIgLnhkc29mdF90aW1lX2JveD5kaXY+ZGl2Lnhkc29mdF9kaXNhYmxlZHtvcGFjaXR5Oi41Oy1tcy1maWx0ZXI6ImFscGhhKG9wYWNpdHk9NTApIjtjdXJzb3I6ZGVmYXVsdH0ueGRzb2Z0X2RhdGV0aW1lcGlja2VyIC54ZHNvZnRfY2FsZW5kYXIgdGQueGRzb2Z0X290aGVyX21vbnRoLnhkc29mdF9kaXNhYmxlZHtvcGFjaXR5Oi4yOy1tcy1maWx0ZXI6ImFscGhhKG9wYWNpdHk9MjApIn0ueGRzb2Z0X2RhdGV0aW1lcGlja2VyIC54ZHNvZnRfY2FsZW5kYXIgdGQ6aG92ZXIsLnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X3RpbWVwaWNrZXIgLnhkc29mdF90aW1lX2JveD5kaXY+ZGl2OmhvdmVye2NvbG9yOiNmZmYgIWltcG9ydGFudDtiYWNrZ3JvdW5kOiMzMzMgIWltcG9ydGFudDtib3gtc2hhZG93Om5vbmUgIWltcG9ydGFudH0ueGRzb2Z0X2RhdGV0aW1lcGlja2VyIC54ZHNvZnRfY2FsZW5kYXIgdGQueGRzb2Z0X2N1cnJlbnQueGRzb2Z0X2Rpc2FibGVkOmhvdmVyLC54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIgLnhkc29mdF90aW1lcGlja2VyIC54ZHNvZnRfdGltZV9ib3g+ZGl2PmRpdi54ZHNvZnRfY3VycmVudC54ZHNvZnRfZGlzYWJsZWQ6aG92ZXJ7YmFja2dyb3VuZDojM2FmICFpbXBvcnRhbnQ7Ym94LXNoYWRvdzojMTc4ZmU1IDAgMXB4IDNweCAwIGluc2V0ICFpbXBvcnRhbnQ7Y29sb3I6I2ZmZiAhaW1wb3J0YW50fS54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIgLnhkc29mdF9jYWxlbmRhciB0ZC54ZHNvZnRfZGlzYWJsZWQ6aG92ZXIsLnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X3RpbWVwaWNrZXIgLnhkc29mdF90aW1lX2JveD5kaXY+ZGl2Lnhkc29mdF9kaXNhYmxlZDpob3Zlcntjb2xvcjppbmhlcml0ICFpbXBvcnRhbnQ7YmFja2dyb3VuZDppbmhlcml0ICFpbXBvcnRhbnQ7Ym94LXNoYWRvdzppbmhlcml0ICFpbXBvcnRhbnR9Lnhkc29mdF9kYXRldGltZXBpY2tlciAueGRzb2Z0X2NhbGVuZGFyIHRoe2ZvbnQtd2VpZ2h0OjcwMDt0ZXh0LWFsaWduOmNlbnRlcjtjb2xvcjojOTk5O2N1cnNvcjpkZWZhdWx0fS54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIgLnhkc29mdF9jb3B5cmlnaHR7Y29sb3I6I2NjYyAhaW1wb3J0YW50O2ZvbnQtc2l6ZTowLjYyNXJlbSA7Y2xlYXI6Ym90aDtmbG9hdDpub25lO21hcmdpbi1sZWZ0OjhweH0ueGRzb2Z0X2RhdGV0aW1lcGlja2VyIC54ZHNvZnRfY29weXJpZ2h0IGF7Y29sb3I6I2VlZSAhaW1wb3J0YW50fS54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIgLnhkc29mdF9jb3B5cmlnaHQgYTpob3Zlcntjb2xvcjojYWFhICFpbXBvcnRhbnR9Lnhkc29mdF90aW1lX2JveHtwb3NpdGlvbjpyZWxhdGl2ZTtib3JkZXI6MXB4IHNvbGlkICNjY2N9Lnhkc29mdF9zY3JvbGxiYXI+Lnhkc29mdF9zY3JvbGxlcntiYWNrZ3JvdW5kOiNjY2MgIWltcG9ydGFudDtoZWlnaHQ6MjBweDtib3JkZXItcmFkaXVzOjNweH0ueGRzb2Z0X3Njcm9sbGJhcntwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDo3cHg7cmlnaHQ6MDt0b3A6MDtib3R0b206MDtjdXJzb3I6cG9pbnRlcn0ueGRzb2Z0X3Njcm9sbGVyX2JveHtwb3NpdGlvbjpyZWxhdGl2ZX0ueGRzb2Z0X2RhdGV0aW1lcGlja2VyLnhkc29mdF9kYXJre2JveC1zaGFkb3c6MCA1cHggMTVweCAtNXB4IHJnYmEoMjU1LDI1NSwyNTUsMC41MDYpO2JhY2tncm91bmQ6IzAwMDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjNDQ0O2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjMzMzO2JvcmRlci1yaWdodDoxcHggc29saWQgIzMzMztib3JkZXItdG9wOjFweCBzb2xpZCAjMzMzO2NvbG9yOiNjY2N9Lnhkc29mdF9kYXRldGltZXBpY2tlci54ZHNvZnRfZGFyayAueGRzb2Z0X3RpbWVwaWNrZXIgLnhkc29mdF90aW1lX2JveHtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjMjIyfS54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIueGRzb2Z0X2RhcmsgLnhkc29mdF90aW1lcGlja2VyIC54ZHNvZnRfdGltZV9ib3g+ZGl2PmRpdntiYWNrZ3JvdW5kOiMwYTBhMGE7Ym9yZGVyLXRvcDoxcHggc29saWQgIzIyMjtjb2xvcjojOTk5fS54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIueGRzb2Z0X2RhcmsgLnhkc29mdF9sYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lnhkc29mdF9kYXRldGltZXBpY2tlci54ZHNvZnRfZGFyayAueGRzb2Z0X2xhYmVsPi54ZHNvZnRfc2VsZWN0e2JvcmRlcjoxcHggc29saWQgIzMzMztiYWNrZ3JvdW5kOiMwMDB9Lnhkc29mdF9kYXRldGltZXBpY2tlci54ZHNvZnRfZGFyayAueGRzb2Z0X2xhYmVsPi54ZHNvZnRfc2VsZWN0PmRpdj4ueGRzb2Z0X29wdGlvbjpob3Zlcntjb2xvcjojMDAwO2JhY2tncm91bmQ6IzAwN2ZmZn0ueGRzb2Z0X2RhdGV0aW1lcGlja2VyLnhkc29mdF9kYXJrIC54ZHNvZnRfbGFiZWw+Lnhkc29mdF9zZWxlY3Q+ZGl2Pi54ZHNvZnRfb3B0aW9uLnhkc29mdF9jdXJyZW50e2JhY2tncm91bmQ6I2M1MDtib3gtc2hhZG93OiNiMDNlMDAgMCAxcHggM3B4IDAgaW5zZXQ7Y29sb3I6IzAwMH0ueGRzb2Z0X2RhdGV0aW1lcGlja2VyLnhkc29mdF9kYXJrIC54ZHNvZnRfbGFiZWwgaSwueGRzb2Z0X2RhdGV0aW1lcGlja2VyLnhkc29mdF9kYXJrIC54ZHNvZnRfcHJldiwueGRzb2Z0X2RhdGV0aW1lcGlja2VyLnhkc29mdF9kYXJrIC54ZHNvZnRfbmV4dCwueGRzb2Z0X2RhdGV0aW1lcGlja2VyLnhkc29mdF9kYXJrIC54ZHNvZnRfdG9kYXlfYnV0dG9ue2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBR1FBQUFBZUNBWUFBQURhVzd2ekFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBeUpwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVNeTFqTURFeElEWTJMakUwTlRZMk1Td2dNakF4TWk4d01pOHdOaTB4TkRvMU5qb3lOeUFnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2SWlCNGJXeHVjenA0YlhCTlRUMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMMjF0THlJZ2VHMXNibk02YzNSU1pXWTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl6Vkhsd1pTOVNaWE52ZFhKalpWSmxaaU1pSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5UTmlBb1YybHVaRzkzY3lraUlIaHRjRTFOT2tsdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNlFVRXhRVVV6T1RBME0wVXlNVEZGTkRsQk0wRkZRVEpFTlRFeFJEVkJPRFlpSUhodGNFMU5Pa1J2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2UVVFeFFVVXpPVEUwTTBVeU1URkZORGxCTTBGRlFUSkVOVEV4UkRWQk9EWWlQaUE4ZUcxd1RVMDZSR1Z5YVhabFpFWnliMjBnYzNSU1pXWTZhVzV6ZEdGdVkyVkpSRDBpZUcxd0xtbHBaRHBCUVRGQlJUTTRSVFF6UlRJeE1VVTBPVUV6UVVWQk1rUTFNVEZFTlVFNE5pSWdjM1JTWldZNlpHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEcEJRVEZCUlRNNFJqUXpSVEl4TVVVME9VRXpRVVZCTWtRMU1URkVOVUU0TmlJdlBpQThMM0prWmpwRVpYTmpjbWx3ZEdsdmJqNGdQQzl5WkdZNlVrUkdQaUE4TDNnNmVHMXdiV1YwWVQ0Z1BEOTRjR0ZqYTJWMElHVnVaRDBpY2lJL1BwMFZ4R0VBQUFJQVNVUkJWSGphN0pyTlNnTXhFTWVidGdoKzNNU0xyMVQxWG4yQ0hvU0tCMDgrUW1SOEJ4OUE4ZTdSaXhkQjlDS0NvTmRleEl1Z3hGbEphN3JOWm5lVGJMSXBNL0NuTkxzZE12TmpNOGwwbVJDaVE5WWU2MUlLQ0FnWkFVbkgrbVUzTU1aYUhZQ2hCbkpVRHpXT0ZaZFZmYzUrWkZMYnJXRGVYUHdieElxckxMZmFlUzBoRUJWR0lSUUNFaVpvSFF3dGxHU0J5Q0NkWUJsOGc4ZWdUVEFXb0tRTVJCUkJjWnhZbGh6aEtlZ3FNT2FnZUVyc0NIVmtrM2hYSUZvb0RnSEIxS2tISUhWZ3pLQjRBREpRL0ExakFGbUFZaGtRcUE1VE9CdG9jcktyZ1h3UUE4Z2NGSXVBSU84c1FTQTdoaWR2UHdhUUdaU2FBWUhPVVdKQUJoV1d3MkVNSUg5UWFnUUVSVTRTQXJKWG8wWlpMMTh1dmF4ZWpYdC9FbTh4alZCWG12RnIxS1ZtL0FKMTB0UmUyWG5yYU5xYUp2S0UzS0h1VWJmSzFFK1ZIQjBxNDAveTNzZFFTeFk0RkhXZUtKQ3VuUDhVeURkcUpaZW5UM250VlY1aklZQ0FoMjB2VDdpb1A4dHBmNkUybGZFTXdFUmUrd2hWMU1IandaQjdQQmlDeGNHUVd3S1pLRDYybGZHTm5QLzFwb0ZBQTYwVDdyRjFVZ2NLZDJpZDNLRGVVUytvTFdWOERmV0FlcE9mcTAwQ2dRYWJpOXpqY2dKVllWRDdQVnpRVUFVR0FRa2JOSlRCSUNEaGd3WVRqRFlENlhlVzA4WktoK0E0cFlremVuT3hYVWJ2WmNXejdFOHlrUk1uSUhHWDFYUGwrMW0ydlBZcEwrMnFkYjhDREFBUmxLRkV6L1pWa0FBQUFBQkpSVTVFcmtKZ2dnPT0pfS54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIueGRzb2Z0X2RhcmsgLnhkc29mdF9jYWxlbmRhciB0ZCwueGRzb2Z0X2RhdGV0aW1lcGlja2VyLnhkc29mdF9kYXJrIC54ZHNvZnRfY2FsZW5kYXIgdGh7YmFja2dyb3VuZDojMGEwYTBhO2JvcmRlcjoxcHggc29saWQgIzIyMjtjb2xvcjojOTk5fS54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIueGRzb2Z0X2RhcmsgLnhkc29mdF9jYWxlbmRhciB0aHtiYWNrZ3JvdW5kOiMwZTBlMGV9Lnhkc29mdF9kYXRldGltZXBpY2tlci54ZHNvZnRfZGFyayAueGRzb2Z0X2NhbGVuZGFyIHRkLnhkc29mdF90b2RheXtjb2xvcjojYzUwfS54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIueGRzb2Z0X2RhcmsgLnhkc29mdF9jYWxlbmRhciB0ZC54ZHNvZnRfaGlnaGxpZ2h0ZWRfZGVmYXVsdHtiYWNrZ3JvdW5kOiNmZmU5ZDI7Ym94LXNoYWRvdzojZmZiODcxIDAgMXB4IDRweCAwIGluc2V0O2NvbG9yOiMwMDB9Lnhkc29mdF9kYXRldGltZXBpY2tlci54ZHNvZnRfZGFyayAueGRzb2Z0X2NhbGVuZGFyIHRkLnhkc29mdF9oaWdobGlnaHRlZF9taW50e2JhY2tncm91bmQ6I2MxZmZjOTtib3gtc2hhZG93OiMwMGRkMWMgMCAxcHggNHB4IDAgaW5zZXQ7Y29sb3I6IzAwMH0ueGRzb2Z0X2RhdGV0aW1lcGlja2VyLnhkc29mdF9kYXJrIC54ZHNvZnRfY2FsZW5kYXIgdGQueGRzb2Z0X2RlZmF1bHQsLnhkc29mdF9kYXRldGltZXBpY2tlci54ZHNvZnRfZGFyayAueGRzb2Z0X2NhbGVuZGFyIHRkLnhkc29mdF9jdXJyZW50LC54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIueGRzb2Z0X2RhcmsgLnhkc29mdF90aW1lcGlja2VyIC54ZHNvZnRfdGltZV9ib3g+ZGl2PmRpdi54ZHNvZnRfY3VycmVudHtiYWNrZ3JvdW5kOiNjNTA7Ym94LXNoYWRvdzojYjAzZTAwIDAgMXB4IDNweCAwIGluc2V0O2NvbG9yOiMwMDB9Lnhkc29mdF9kYXRldGltZXBpY2tlci54ZHNvZnRfZGFyayAueGRzb2Z0X2NhbGVuZGFyIHRkOmhvdmVyLC54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIueGRzb2Z0X2RhcmsgLnhkc29mdF90aW1lcGlja2VyIC54ZHNvZnRfdGltZV9ib3g+ZGl2PmRpdjpob3Zlcntjb2xvcjojMDAwICFpbXBvcnRhbnQ7YmFja2dyb3VuZDojMDA3ZmZmICFpbXBvcnRhbnR9Lnhkc29mdF9kYXRldGltZXBpY2tlci54ZHNvZnRfZGFyayAueGRzb2Z0X2NhbGVuZGFyIHRoe2NvbG9yOiM2NjZ9Lnhkc29mdF9kYXRldGltZXBpY2tlci54ZHNvZnRfZGFyayAueGRzb2Z0X2NvcHlyaWdodHtjb2xvcjojMzMzICFpbXBvcnRhbnR9Lnhkc29mdF9kYXRldGltZXBpY2tlci54ZHNvZnRfZGFyayAueGRzb2Z0X2NvcHlyaWdodCBhe2NvbG9yOiMxMTEgIWltcG9ydGFudH0ueGRzb2Z0X2RhdGV0aW1lcGlja2VyLnhkc29mdF9kYXJrIC54ZHNvZnRfY29weXJpZ2h0IGE6aG92ZXJ7Y29sb3I6IzU1NSAhaW1wb3J0YW50fS54ZHNvZnRfZGFyayAueGRzb2Z0X3RpbWVfYm94e2JvcmRlcjoxcHggc29saWQgIzMzM30ueGRzb2Z0X2RhcmsgLnhkc29mdF9zY3JvbGxiYXI+Lnhkc29mdF9zY3JvbGxlcntiYWNrZ3JvdW5kOiMzMzMgIWltcG9ydGFudH0ueGRzb2Z0X2RhdGV0aW1lcGlja2VyIC54ZHNvZnRfc2F2ZV9zZWxlY3RlZHtkaXNwbGF5OmJsb2NrO2JvcmRlcjoxcHggc29saWQgI2RkZCAhaW1wb3J0YW50O21hcmdpbi10b3A6NXB4O3dpZHRoOjEwMCU7Y29sb3I6IzQ1NDU1MTtmb250LXNpemU6MTNweH0ueGRzb2Z0X2RhdGV0aW1lcGlja2VyIC5ibHVlLWdyYWRpZW50LWJ1dHRvbntmb250LWZhbWlseToibXVzZW8tc2FucyIsIkJvb2sgQW50aXF1YSIsc2Fucy1zZXJpZjtmb250LXNpemU6MC43NXJlbSA7Zm9udC13ZWlnaHQ6MzAwO2NvbG9yOiM4Mjg3OGM7aGVpZ2h0OjI4cHg7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZzo0cHggMTdweCA0cHggMzNweDtib3JkZXI6MXB4IHNvbGlkICNkN2Q4ZGE7YmFja2dyb3VuZDotbW96LWxpbmVhci1ncmFkaWVudCh0b3AsI2ZmZiAwLCNmNGY4ZmEgNzMlKTtiYWNrZ3JvdW5kOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLGxlZnQgdG9wLGxlZnQgYm90dG9tLGNvbG9yLXN0b3AoMCwjZmZmKSxjb2xvci1zdG9wKDczJSwjZjRmOGZhKSk7YmFja2dyb3VuZDotd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsI2ZmZiAwLCNmNGY4ZmEgNzMlKTtiYWNrZ3JvdW5kOi1vLWxpbmVhci1ncmFkaWVudCh0b3AsI2ZmZiAwLCNmNGY4ZmEgNzMlKTtiYWNrZ3JvdW5kOi1tcy1saW5lYXItZ3JhZGllbnQodG9wLCNmZmYgMCwjZjRmOGZhIDczJSk7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCNmZmYgMCwjZjRmOGZhIDczJSk7ZmlsdGVyOnByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjZmZmJyxlbmRDb2xvcnN0cj0nI2Y0ZjhmYScsR3JhZGllbnRUeXBlPTApfS54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIgLmJsdWUtZ3JhZGllbnQtYnV0dG9uOmhvdmVyLC54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIgLmJsdWUtZ3JhZGllbnQtYnV0dG9uOmZvY3VzLC54ZHNvZnRfZGF0ZXRpbWVwaWNrZXIgLmJsdWUtZ3JhZGllbnQtYnV0dG9uOmhvdmVyIHNwYW4sLnhkc29mdF9kYXRldGltZXBpY2tlciAuYmx1ZS1ncmFkaWVudC1idXR0b246Zm9jdXMgc3Bhbntjb2xvcjojNDU0NTUxO2JhY2tncm91bmQ6LW1vei1saW5lYXItZ3JhZGllbnQodG9wLCNmNGY4ZmEgMCwjRkZGIDczJSk7YmFja2dyb3VuZDotd2Via2l0LWdyYWRpZW50KGxpbmVhcixsZWZ0IHRvcCxsZWZ0IGJvdHRvbSxjb2xvci1zdG9wKDAsI2Y0ZjhmYSksY29sb3Itc3RvcCg3MyUsI0ZGRikpO2JhY2tncm91bmQ6LXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCNmNGY4ZmEgMCwjRkZGIDczJSk7YmFja2dyb3VuZDotby1saW5lYXItZ3JhZGllbnQodG9wLCNmNGY4ZmEgMCwjRkZGIDczJSk7YmFja2dyb3VuZDotbXMtbGluZWFyLWdyYWRpZW50KHRvcCwjZjRmOGZhIDAsI0ZGRiA3MyUpO2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwjZjRmOGZhIDAsI0ZGRiA3MyUpO2ZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0nI2Y0ZjhmYScsZW5kQ29sb3JzdHI9JyNGRkYnLEdyYWRpZW50VHlwZT0wKX0ueGRzb2Z0X2Rpc2FibGVke2JhY2tncm91bmQtY29sb3I6cmVkO2NvbG9yOndoaXRlO29wYWNpdHk6MX0ueGRzb2Z0X2Rpc2FibGVke2JhY2tncm91bmQtY29sb3I6I2U4NDY0NiAhaW1wb3J0YW50O2NvbG9yOndoaXRlICFpbXBvcnRhbnR9Ci8qKiAvY3NzL3Zpc2l0Q29udGFjdEZvcm1Qb3B1cC5jc3MgKiovCiN2aXNpdENvbnRhY3RGb3JtQ29udGFpbmVyTmV3IGgyLCN2aXNpdENvbnRhY3RGb3JtQ29udGFpbmVyVXNlZCBoMntmb250LXNpemU6MC45MzhyZW0gO2ZvbnQtd2VpZ2h0OmJvbGQ7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luOjEwcHggMH0udmlzaXRDb250YWN0Rm9ybSAudmlzaXRDb250YWN0RGF0ZURpdntwb3NpdGlvbjpyZWxhdGl2ZX0udmlzaXRDb250YWN0Rm9ybSAudmlzaXRDb250YWN0RGF0ZURpdiBzcGFue3Bvc2l0aW9uOmFic29sdXRlO3RvcDo4cHg7cmlnaHQ6MTBweDtjb2xvcjojYWFhfS52aXNpdENvbnRhY3RGb3JtIGlucHV0Om5vdChbdHlwZT0ic3VibWl0Il0pe2Rpc3BsYXk6YmxvY2s7bWFyZ2luLWJvdHRvbToxMHB4O3dpZHRoOjEwMCU7aGVpZ2h0OjMwcHg7Ym94LXNpemluZzpib3JkZXItYm94O3BhZGRpbmc6MCAxMHB4fS52aXNpdENvbnRhY3RGb3JtIHRleHRhcmVhLnZpc2l0Q29udGFjdENvbW1lbnR7ZGlzcGxheTpub25lO21hcmdpbi1ib3R0b206MTBweDt3aWR0aDoxMDAlO2hlaWdodDo0MHB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtyZXNpemU6dmVydGljYWw7cGFkZGluZzowIDEwcHh9LnZpc2l0Q29udGFjdEZvcm0gdGV4dGFyZWEudmlzaXRDb250YWN0Q29tbWVudC5zaG93Q29tbWVudHtkaXNwbGF5OmJsb2NrfS52aXNpdENvbnRhY3RGb3JtIC52aXNpdENvbnRhY3RGb3JtU3VibWl0e2hlaWdodDphdXRvO21hcmdpbi1ib3R0b206MDt3aWR0aDoxMDAlO2JhY2tncm91bmQtY29sb3I6IzAwMmM1Zjtjb2xvcjojZmZmZmZmfQovKiogL2Nzcy9mb3Jtcy9mb3Jtcy5wcmVsb2FkLmNzcyAqKi8KLmQyY2Zvcm0geyAtLWxhYmVsLXJlcXVpcmVkLXN5bWJvbDoiKiI7IC0tbGFiZWwtcmVxdWlyZWQtY29sb3I6I0ZGMDAwMDsgLS1pbnB1dC1wYWRkaW5nOnZhcigtLXMtMSkgdmFyKC0tczEpOyAtLWlucHV0LWJnLWNvbG9yOnZhcigtLXdoaXRlKTsgLS1pbnB1dC1ib3JkZXItY29sb3I6dmFyKC0tbWlkLWdyYXkpOyAtLWlucHV0LXJhZGl1czp2YXIoLS1zLTYpOyAtLWlucHV0LWZvbnQtc2l6ZTp2YXIoLS1mczApOyAtLWlucHV0LWxpbmUtaGVpZ2h0OnZhcigtLWZzMik7IH0gLmQyY2Zvcm0gKiB7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfSAuZDJjZm9ybSBib3gtbGMgeyAtLXNwYWNlOnZhcigtLXMtNCk7IHBhZGRpbmctbGVmdDowOyBwYWRkaW5nLXJpZ2h0OjA7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBhbGlnbi1pdGVtczpmbGV4LXN0YXJ0OyB9IC5kMmNmb3JtLS10aGluIGJveC1sYyB7IC0tc3BhY2U6dmFyKC0tcy05KTsgfSAuZDJjZm9ybS0tcm93IHN0YWNrLWxjIHsgZmxleC1kaXJlY3Rpb246cm93OyBmbGV4LXdyYXA6d3JhcDsgfSAuZDJjZm9ybS0tcm93IGJveC1sYyB7IHBhZGRpbmctcmlnaHQ6dmFyKC0tc3BhY2UpOyBwYWRkaW5nLWxlZnQ6dmFyKC0tc3BhY2UpOyB9IC5kMmNmb3JtLS1ob3Jpem9udGFsIGJveC1sYyB7IGZsZXgtZGlyZWN0aW9uOnJvdzsgYWxpZ24taXRlbXM6ZmxleC1zdGFydDsgfSAuZDJjZm9ybS0taG9yaXpvbnRhbCBib3gtbGMgbGFiZWwgeyBtaW4td2lkdGg6MTE1cHg7IHdpZHRoOjMwJTsgcGFkZGluZy1yaWdodDp2YXIoLS1zKTsgbWFyZ2luLXRvcDp2YXIoLS1zMSk7IG1hcmdpbi1ib3R0b206MDsgfSAuZDJjZm9ybSBsYWJlbDpoYXMoW3JlcXVpcmVkXSkgc3BhbjphZnRlcnsgY29sb3IgOnZhcigtLWxhYmVsLXJlcXVpcmVkLWNvbG9yKTsgY29udGVudCA6dmFyKC0tbGFiZWwtcmVxdWlyZWQtc3ltYm9sKTsgcGFkZGluZy1sZWZ0IDp2YXIoLS1zLTYpOyB9IC5kMmNmb3JtIGxhYmVsOm5vdCguZmluYW5jZUNhbGMpLCAuZDJjZm9ybSAubGFiZWw6bm90KC5maW5hbmNlQ2FsYykgeyBtYXJnaW4tYm90dG9tOnZhcigtLXMtMyk7IGZvbnQtc2l6ZTp2YXIoLS1pbnB1dC1mb250LXNpemUpOyBsaW5lLWhlaWdodDp2YXIoLS1pbnB1dC1saW5lLWhlaWdodCk7IGZvbnQtd2VpZ2h0OjQwMDsgfSAuZDJjZm9ybSBsYWJlbC4tLXJlcXVpcmVkOm5vdCgudHh0LXJpZ2h0KTphZnRlciwgLmQyY2Zvcm0gLmxhYmVsLi0tcmVxdWlyZWQ6bm90KC50eHQtcmlnaHQpOmFmdGVyLCAuZDJjZm9ybSBsYWJlbC4tcmVxdWlyZWQ6bm90KC50eHQtcmlnaHQpOmFmdGVyLCAuZDJjZm9ybSAubGFiZWwuLXJlcXVpcmVkOm5vdCgudHh0LXJpZ2h0KTphZnRlciB7IGNvbG9yIDp2YXIoLS1sYWJlbC1yZXF1aXJlZC1jb2xvcik7IGNvbnRlbnQgOnZhcigtLWxhYmVsLXJlcXVpcmVkLXN5bWJvbCk7IHBhZGRpbmctbGVmdCA6dmFyKC0tcy02KTsgfSAuZDJjZm9ybSBsYWJlbC4tLXJlcXVpcmVkLnR4dC1yaWdodDpiZWZvcmUsIC5kMmNmb3JtIC5sYWJlbC4tLXJlcXVpcmVkLnR4dC1yaWdodDpiZWZvcmUsIC5kMmNmb3JtIGxhYmVsLi1yZXF1aXJlZC50eHQtcmlnaHQ6YmVmb3JlLCAuZDJjZm9ybSAubGFiZWwuLXJlcXVpcmVkLnR4dC1yaWdodDpiZWZvcmUgeyBjb2xvciA6dmFyKC0tbGFiZWwtcmVxdWlyZWQtY29sb3IpOyBjb250ZW50IDp2YXIoLS1sYWJlbC1yZXF1aXJlZC1zeW1ib2wpOyBwYWRkaW5nLXJpZ2h0IDp2YXIoLS1zLTYpOyB9IC5kMmNmb3JtIDp3aGVyZShpbnB1dDpub3QoW3R5cGU9c3VibWl0XSwucGF5bWVudENhbGN1bGF0b3JEb3duUGF5bWVudCk6bm90KFt0eXBlPSJyYWRpbyJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pKSwgLmQyY2Zvcm0gc2VsZWN0Om5vdCgucGF5bWVudENhbGN1bGF0b3JJbnRlcnZhbCwucGF5bWVudENhbGN1bGF0b3JLbUFsbG93YW5jZSwuZmluYW5jZU11bHRpc3RlcFVzZWRDYWxjdWxhdG9yIC5jYWxjLWZvcm0gc2VsZWN0KSwgLmQyY2Zvcm0gdGV4dGFyZWEgeyB3aWR0aDoxMDAlOyBwYWRkaW5nOnZhcigtLWlucHV0LXBhZGRpbmcpOyBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWlucHV0LWJnLWNvbG9yKTsgYm9yZGVyLXJhZGl1czp2YXIoLS1pbnB1dC1yYWRpdXMpOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWlucHV0LWJvcmRlci1jb2xvcik7IGNvbG9yOiMyMTI1Mjk7IGZvbnQtc2l6ZTp2YXIoLS1pbnB1dC1mb250LXNpemUpOyBsaW5lLWhlaWdodDp2YXIoLS1pbnB1dC1saW5lLWhlaWdodCk7IGZvbnQtd2VpZ2h0OjQwMDsgfSAuZDJjZm9ybSBpbnB1dDpub3QoW3R5cGU9c3VibWl0XSk6bm90KFt0eXBlPSJyYWRpbyJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pLCAuZDJjZm9ybSBzZWxlY3QgeyBoZWlnaHQ6MzVweDsgfSAuZDJjZm9ybSAuaW52YWxpZCA+IDppcyhpbnB1dCxzZWxlY3QsdGV4dGFyZWEpeyBiYWNrZ3JvdW5kLWNvbG9yOiNmYWQ2ZGM7IH0gLmQyY2Zvcm0gaW5wdXQ6ZGlzYWJsZWQsIC5kMmNmb3JtIGlucHV0LmRpc2FibGVkIHsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDIzOSwgMjM5LCAyMzksIDAuMyk7IGNvbG9yOnJnYig4NCwgODQsIDg0KTsgYm9yZGVyLWNvbG9yOnJnYmEoMTE4LCAxMTgsIDExOCwgMC4zKTsgY3Vyc29yOm5vdC1hbGxvd2VkOyB9IC5kMmNmb3JtIGlucHV0LnR4dC11cHBlciB7IHRleHQtdHJhbnNmb3JtOm5vbmU7IH0gLmQyY2Zvcm0gaW5wdXQudHh0LXVwcGVyOjpwbGFjZWhvbGRlciB7IHRleHQtdHJhbnNmb3JtOnZhcigtLXR4dC11cHBlciwgdXBwZXJjYXNlKTsgfSAuZDJjZm9ybSAuaW5wdXQtaWNvbi1sZWZ0LCAuZDJjZm9ybSAuaW5wdXQtaWNvbi1yaWdodCB7IHBvc2l0aW9uOnJlbGF0aXZlOyB9IC5kMmNmb3JtIC5pbnB1dC1pY29uIHsgcG9zaXRpb246YWJzb2x1dGU7IHotaW5kZXg6MTsgdG9wOnZhcigtLXMxKTsgZm9udC1zaXplOnZhcigtLWlucHV0LWZvbnQtc2l6ZSk7IGxpbmUtaGVpZ2h0OnZhcigtLWlucHV0LWxpbmUtaGVpZ2h0KTsgY29sb3I6dmFyKC0tZGFyay1ncmF5KTsgfSAuZDJjZm9ybSAuaW5wdXQtaWNvbi1yaWdodCAuaW5wdXQtaWNvbiB7IHJpZ2h0OnZhcigtLXM0KTsgfSAuZDJjZm9ybSAuaW5wdXQtaWNvbi1sZWZ0IC5pbnB1dC1pY29uIHsgbGVmdDp2YXIoLS1zNCk7IH0gLmQyY2Zvcm0gLmlucHV0LWljb24tbGVmdCBpbnB1dCB7IHBhZGRpbmctbGVmdDp2YXIoLS1zOSk7IH0gLmQyY2Zvcm0gLnNlcGFyYXRvciB7IHdpZHRoOjEwMCU7IGJvcmRlci10b3A6MXB4IHNvbGlkICNkNGQ0ZDQ7IG1hcmdpbi10b3A6dmFyKC0tczcpOyBtYXJnaW4tYm90dG9tOnZhcigtLXM3KTsgfSAuZDJjZm9ybSAucmFkaW8taW5saW5lIHsgZGlzcGxheTpmbGV4OyB3aWR0aDoxMDAlOyB9IC5kMmNmb3JtIC5jaGVja2JveC1saXN0IHsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IG1hcmdpbi1ib3R0b206dmFyKC0tcy0zKTsgfSAuZDJjZm9ybSAuY2hlY2tib3gtbGlzdCA+ICogeyBtYXJnaW4tYm90dG9tOjA7IH0gLmQyY2Zvcm0gLm11bHRpcGxlLWlucHV0IHsgZGlzcGxheTpmbGV4OyB3aWR0aDoxMDAlOyB9IC5kMmNmb3JtIC5tdWx0aXBsZS1pbnB1dCA+ICo6bm90KDpsYXN0LW9mLXR5cGUpIHsgbWFyZ2luLXJpZ2h0OnZhcigtLXMxKTsgfSAuZDJjZm9ybSAuaW5wdXQtZ3JvdXAgeyBkaXNwbGF5OmZsZXg7IHdpZHRoIDoxMDAlOyB9IC5kMmNmb3JtIC5pbnB1dC1ncm91cCAuaW5wdXQtZ3JvdXAtdGV4dCB7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBwYWRkaW5nOnZhcigtLWlucHV0LXBhZGRpbmcpOyBiYWNrZ3JvdW5kOnZhcigtLWxpZ2h0LWdyYXkpOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWlucHV0LWJvcmRlci1jb2xvcik7IGJvcmRlci1yYWRpdXM6dmFyKC0taW5wdXQtcmFkaXVzKTsgZm9udC1zaXplOnZhcigtLWlucHV0LWZvbnQtc2l6ZSk7IGxpbmUtaGVpZ2h0OnZhcigtLWlucHV0LWxpbmUtaGVpZ2h0KTsgd2hpdGUtc3BhY2U6bm93cmFwOyB9IC5kMmNmb3JtIC5pbnB1dC1ncm91cCA+IDpub3QoOmZpcnN0LWNoaWxkKSB7IGJvcmRlci1sZWZ0OjA7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6MCAhaW1wb3J0YW50OyBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjAgIWltcG9ydGFudDsgfSAuZDJjZm9ybSAuaW5wdXQtZ3JvdXAgPiA6bm90KDpsYXN0LWNoaWxkKSB7IGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOjAgIWltcG9ydGFudDsgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MCAhaW1wb3J0YW50OyB9IEBtZWRpYSAobWF4LXdpZHRoOjk4MHB4KSB7IC5kMmNmb3JtLS1ob3Jpem9udGFsIGJveC1sYyBsYWJlbCB7IG1pbi13aWR0aDo4NXB4OyB9IH0KLyoqIC9jc3MvZm9ybXMvZm9ybXMuY3NzICoqLwouZDJjZm9ybSBpbnB1dDpub3QoW3R5cGU9c3VibWl0XSk6bm90KFt0eXBlPSJyYWRpbyJdKTpub3QoW3R5cGU9ImNoZWNrYm94Il0pLCAuZDJjZm9ybSBzZWxlY3QsIC5kMmNmb3JtIHRleHRhcmVhIHsgdHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjE1cyBlYXNlLWluLW91dCxib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXQ7IH0gLmQyY2Zvcm0gaW5wdXQ6bm90KFt0eXBlPXN1Ym1pdF0pOm5vdChbdHlwZT0icmFkaW8iXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpmb2N1cywgLmQyY2Zvcm0gc2VsZWN0OmZvY3VzLCAuZDJjZm9ybSB0ZXh0YXJlYTpmb2N1cyB7IGJvcmRlci1jb2xvcjojODZiN2ZlOyBvdXRsaW5lOjA7IGJveC1zaGFkb3c6MCAwIDAgMC4ycmVtIHJnYigxMyAxMTAgMjUzIC8gMjUlKTsgfSAuZDJjZm9ybSAuaW5wdXQtZ3JvdXAgaW5wdXQ6bm90KFt0eXBlPXN1Ym1pdF0pOm5vdChbdHlwZT0icmFkaW8iXSk6bm90KFt0eXBlPSJjaGVja2JveCJdKTpmb2N1cywgLmQyY2Zvcm0gLmlucHV0LWdyb3VwIHNlbGVjdDpmb2N1cywgLmQyY2Zvcm0gLmlucHV0LWdyb3VwIHRleHRhcmVhOmZvY3VzIHsgei1pbmRleDozOyB9IC5kMmNmb3JtIGlucHV0LnZhbGlkaXR5LWVycm9uZW91cywgLmQyY2Zvcm0gc2VsZWN0LnZhbGlkaXR5LWVycm9uZW91cywgLmQyY2Zvcm0gdGV4dGFyZWEudmFsaWRpdHktZXJyb25lb3VzLCAuZDJjZm9ybSAuaW5wdXQtZ3JvdXAgLnZhbGlkaXR5LWVycm9uZW91cyArIC5pbnB1dC1ncm91cC10ZXh0IHsgYm9yZGVyLWNvbG9yOiNkYzM1NDUgIWltcG9ydGFudDsgYmFja2dyb3VuZC1jb2xvcjojZmFkNmRjICFpbXBvcnRhbnQ7IH0gLmQyY2Zvcm0gaW5wdXQudmFsaWRpdHktZXJyb25lb3VzOjpwbGFjZWhvbGRlciwgLmQyY2Zvcm0gdGV4dGFyZWEudmFsaWRpdHktZXJyb25lb3VzOjpwbGFjZWhvbGRlciwgLmQyY2Zvcm0gc2VsZWN0LnZhbGlkaXR5LWVycm9uZW91cywgLmQyY2Zvcm0gLmlucHV0LWdyb3VwIC52YWxpZGl0eS1lcnJvbmVvdXMgKyAuaW5wdXQtZ3JvdXAtdGV4dCB7IGNvbG9yOiNkYzM1NDU7IH0KLyoqIC9jc3MvdjIvbW9kYWwuY3NzICoqLwoubW9kYWwtd3JhcHBlciB7IHBvc2l0aW9uOmZpeGVkOyB0b3A6MTUwJTsgbGVmdDo1MCU7IHRyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwgLTUwJSk7IHotaW5kZXg6MTYwMDE7IHRyYW5zaXRpb246dG9wIDE1MG1zIGVhc2UtaW47IH0gLm1vZGFsLXdyYXBwZXIuaXMtYWN0aXZleyB0b3A6NTAlOyB9IC5tb2RhbC13cmFwcGVyIC5tb2RhbC1ib2R5eyBtaW4td2lkdGg6MjByZW07IG1heC13aWR0aDoxMDAlOyBtYXgtaGVpZ2h0Ojg1dmg7IG92ZXJmbG93LXk6YXV0bzsgfSAubW9kYWwtb3ZlcmxheXsgcG9zaXRpb246Zml4ZWQ7IHRvcDowOyBsZWZ0OjA7IHdpZHRoOjEwMHZ3OyBoZWlnaHQ6MTAwdmg7IGJhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwwLjUpOyB6LWluZGV4OjEwMDAwOyB9IC5sb2FkaW5nLW92ZXJsYXl7IHBvc2l0aW9uOmFic29sdXRlOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgdG9wOjA7IGxlZnQ6MDsgYmFja2dyb3VuZC1pbWFnZTp1cmwoL2ltYWdlcy9hamF4LWxvYWRlci5naWYpOyBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7IGJhY2tncm91bmQtcG9zaXRpb246Y2VudGVyOyB9IC5tb2RhbC13cmFwcGVyIDppcyhpbnB1dFt0eXBlPSJ0ZXh0Il0saW5wdXRbdHlwZT0iZW1haWwiXSxpbnB1dFt0eXBlPSJ0ZWwiXSl7IHBhZGRpbmc6MC40cmVtOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLW1pZC1ncmF5KTsgYm9yZGVyLXJhZGl1czowLjNyZW07IH0gLm1vZGFsLWJvZHkgLmlmcmFtZS13cmFwcGVyeyB3aWR0aDptYXgoOTB2dywgMjAuNXJlbSk7IGhlaWdodDptYXgoODR2aCwgMzByZW0pOyB3aWR0aDpjbGFtcCgyMC41cmVtLCBtYXgoOTB2dywgMjAuNXJlbSksIDYwcmVtKTsgaGVpZ2h0OmNsYW1wKDMwcmVtLCBtYXgoODR2aCwgMzByZW0pLCA2MHJlbSk7IH0gLm1vZGFsLWJvZHkgLmlmcmFtZS13cmFwcGVyIGlmcmFtZXsgd2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCU7IH0KLyoqIC9jc3MvdjIvZmxhdHBpY2tyLm1pbi5jc3MgKiovCi5mbGF0cGlja3ItY2FsZW5kYXJ7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtvcGFjaXR5OjA7ZGlzcGxheTpub25lO3RleHQtYWxpZ246Y2VudGVyO3Zpc2liaWxpdHk6aGlkZGVuO3BhZGRpbmc6MDstd2Via2l0LWFuaW1hdGlvbjpub25lO2FuaW1hdGlvbjpub25lO2RpcmVjdGlvbjpsdHI7Ym9yZGVyOjA7Zm9udC1zaXplOjAuODc1cmVtIDtsaW5lLWhlaWdodDoyNHB4O2JvcmRlci1yYWRpdXM6NXB4O3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjMwNy44NzVweDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1zLXRvdWNoLWFjdGlvbjptYW5pcHVsYXRpb247dG91Y2gtYWN0aW9uOm1hbmlwdWxhdGlvbjtiYWNrZ3JvdW5kOiNmZmY7LXdlYmtpdC1ib3gtc2hhZG93OjFweCAwIDAgI2U2ZTZlNiwtMXB4IDAgMCAjZTZlNmU2LDAgMXB4IDAgI2U2ZTZlNiwwIC0xcHggMCAjZTZlNmU2LDAgM3B4IDEzcHggcmdiYSgwLDAsMCwwLjA4KTtib3gtc2hhZG93OjFweCAwIDAgI2U2ZTZlNiwtMXB4IDAgMCAjZTZlNmU2LDAgMXB4IDAgI2U2ZTZlNiwwIC0xcHggMCAjZTZlNmU2LDAgM3B4IDEzcHggcmdiYSgwLDAsMCwwLjA4KX0uZmxhdHBpY2tyLWNhbGVuZGFyLm9wZW4sLmZsYXRwaWNrci1jYWxlbmRhci5pbmxpbmV7b3BhY2l0eToxO21heC1oZWlnaHQ6NjQwcHg7dmlzaWJpbGl0eTp2aXNpYmxlfS5mbGF0cGlja3ItY2FsZW5kYXIub3BlbntkaXNwbGF5OmlubGluZS1ibG9jazt6LWluZGV4Ojk5OTk5fS5mbGF0cGlja3ItY2FsZW5kYXIuYW5pbWF0ZS5vcGVuey13ZWJraXQtYW5pbWF0aW9uOmZwRmFkZUluRG93biAzMDBtcyBjdWJpYy1iZXppZXIoLjIzLDEsLjMyLDEpO2FuaW1hdGlvbjpmcEZhZGVJbkRvd24gMzAwbXMgY3ViaWMtYmV6aWVyKC4yMywxLC4zMiwxKX0uZmxhdHBpY2tyLWNhbGVuZGFyLmlubGluZXtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDoycHh9LmZsYXRwaWNrci1jYWxlbmRhci5zdGF0aWN7cG9zaXRpb246YWJzb2x1dGU7dG9wOmNhbGMoMTAwJSArIDJweCl9LmZsYXRwaWNrci1jYWxlbmRhci5zdGF0aWMub3Blbnt6LWluZGV4Ojk5OTtkaXNwbGF5OmJsb2NrfS5mbGF0cGlja3ItY2FsZW5kYXIubXVsdGlNb250aCAuZmxhdHBpY2tyLWRheXMgLmRheUNvbnRhaW5lcjpudGgtY2hpbGQobisxKSAuZmxhdHBpY2tyLWRheS5pblJhbmdlOm50aC1jaGlsZCg3bis3KXstd2Via2l0LWJveC1zaGFkb3c6bm9uZSAhaW1wb3J0YW50O2JveC1zaGFkb3c6bm9uZSAhaW1wb3J0YW50fS5mbGF0cGlja3ItY2FsZW5kYXIubXVsdGlNb250aCAuZmxhdHBpY2tyLWRheXMgLmRheUNvbnRhaW5lcjpudGgtY2hpbGQobisyKSAuZmxhdHBpY2tyLWRheS5pblJhbmdlOm50aC1jaGlsZCg3bisxKXstd2Via2l0LWJveC1zaGFkb3c6LTJweCAwIDAgI2U2ZTZlNiw1cHggMCAwICNlNmU2ZTY7Ym94LXNoYWRvdzotMnB4IDAgMCAjZTZlNmU2LDVweCAwIDAgI2U2ZTZlNn0uZmxhdHBpY2tyLWNhbGVuZGFyIC5oYXNXZWVrcyAuZGF5Q29udGFpbmVyLC5mbGF0cGlja3ItY2FsZW5kYXIgLmhhc1RpbWUgLmRheUNvbnRhaW5lcntib3JkZXItYm90dG9tOjA7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjB9LmZsYXRwaWNrci1jYWxlbmRhciAuaGFzV2Vla3MgLmRheUNvbnRhaW5lcntib3JkZXItbGVmdDowfS5mbGF0cGlja3ItY2FsZW5kYXIuaGFzVGltZSAuZmxhdHBpY2tyLXRpbWV7aGVpZ2h0OjQwcHg7Ym9yZGVyLXRvcDoxcHggc29saWQgI2U2ZTZlNn0uZmxhdHBpY2tyLWNhbGVuZGFyLm5vQ2FsZW5kYXIuaGFzVGltZSAuZmxhdHBpY2tyLXRpbWV7aGVpZ2h0OmF1dG99LmZsYXRwaWNrci1jYWxlbmRhcjpiZWZvcmUsLmZsYXRwaWNrci1jYWxlbmRhcjphZnRlcntwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmJsb2NrO3BvaW50ZXItZXZlbnRzOm5vbmU7Ym9yZGVyOnNvbGlkIHRyYW5zcGFyZW50O2NvbnRlbnQ6Jyc7aGVpZ2h0OjA7d2lkdGg6MDtsZWZ0OjIycHh9LmZsYXRwaWNrci1jYWxlbmRhci5yaWdodE1vc3Q6YmVmb3JlLC5mbGF0cGlja3ItY2FsZW5kYXIuYXJyb3dSaWdodDpiZWZvcmUsLmZsYXRwaWNrci1jYWxlbmRhci5yaWdodE1vc3Q6YWZ0ZXIsLmZsYXRwaWNrci1jYWxlbmRhci5hcnJvd1JpZ2h0OmFmdGVye2xlZnQ6YXV0bztyaWdodDoyMnB4fS5mbGF0cGlja3ItY2FsZW5kYXIuYXJyb3dDZW50ZXI6YmVmb3JlLC5mbGF0cGlja3ItY2FsZW5kYXIuYXJyb3dDZW50ZXI6YWZ0ZXJ7bGVmdDo1MCU7cmlnaHQ6NTAlfS5mbGF0cGlja3ItY2FsZW5kYXI6YmVmb3Jle2JvcmRlci13aWR0aDo1cHg7bWFyZ2luOjAgLTVweH0uZmxhdHBpY2tyLWNhbGVuZGFyOmFmdGVye2JvcmRlci13aWR0aDo0cHg7bWFyZ2luOjAgLTRweH0uZmxhdHBpY2tyLWNhbGVuZGFyLmFycm93VG9wOmJlZm9yZSwuZmxhdHBpY2tyLWNhbGVuZGFyLmFycm93VG9wOmFmdGVye2JvdHRvbToxMDAlfS5mbGF0cGlja3ItY2FsZW5kYXIuYXJyb3dUb3A6YmVmb3Jle2JvcmRlci1ib3R0b20tY29sb3I6I2U2ZTZlNn0uZmxhdHBpY2tyLWNhbGVuZGFyLmFycm93VG9wOmFmdGVye2JvcmRlci1ib3R0b20tY29sb3I6I2ZmZn0uZmxhdHBpY2tyLWNhbGVuZGFyLmFycm93Qm90dG9tOmJlZm9yZSwuZmxhdHBpY2tyLWNhbGVuZGFyLmFycm93Qm90dG9tOmFmdGVye3RvcDoxMDAlfS5mbGF0cGlja3ItY2FsZW5kYXIuYXJyb3dCb3R0b206YmVmb3Jle2JvcmRlci10b3AtY29sb3I6I2U2ZTZlNn0uZmxhdHBpY2tyLWNhbGVuZGFyLmFycm93Qm90dG9tOmFmdGVye2JvcmRlci10b3AtY29sb3I6I2ZmZn0uZmxhdHBpY2tyLWNhbGVuZGFyOmZvY3Vze291dGxpbmU6MH0uZmxhdHBpY2tyLXdyYXBwZXJ7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmZsYXRwaWNrci1tb250aHN7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi13ZWJraXQtZmxleDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleH0uZmxhdHBpY2tyLW1vbnRocyAuZmxhdHBpY2tyLW1vbnRoe2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6cmdiYSgwLDAsMCwwLjkpO2ZpbGw6cmdiYSgwLDAsMCwwLjkpO2hlaWdodDozNHB4O2xpbmUtaGVpZ2h0OjE7dGV4dC1hbGlnbjpjZW50ZXI7cG9zaXRpb246cmVsYXRpdmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO292ZXJmbG93OmhpZGRlbjstd2Via2l0LWJveC1mbGV4OjE7LXdlYmtpdC1mbGV4OjE7LW1zLWZsZXg6MTtmbGV4OjF9LmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1wcmV2LW1vbnRoLC5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItbmV4dC1tb250aHt0ZXh0LWRlY29yYXRpb246bm9uZTtjdXJzb3I6cG9pbnRlcjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtoZWlnaHQ6MzRweDtwYWRkaW5nOjEwcHg7ei1pbmRleDozO2NvbG9yOnJnYmEoMCwwLDAsMC45KTtmaWxsOnJnYmEoMCwwLDAsMC45KX0uZmxhdHBpY2tyLW1vbnRocyAuZmxhdHBpY2tyLXByZXYtbW9udGguZmxhdHBpY2tyLWRpc2FibGVkLC5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItbmV4dC1tb250aC5mbGF0cGlja3ItZGlzYWJsZWR7ZGlzcGxheTpub25lfS5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItcHJldi1tb250aCBpLC5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItbmV4dC1tb250aCBpe3Bvc2l0aW9uOnJlbGF0aXZlfS5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItcHJldi1tb250aC5mbGF0cGlja3ItcHJldi1tb250aCwuZmxhdHBpY2tyLW1vbnRocyAuZmxhdHBpY2tyLW5leHQtbW9udGguZmxhdHBpY2tyLXByZXYtbW9udGh7bGVmdDowfSAuZmxhdHBpY2tyLW1vbnRocyAuZmxhdHBpY2tyLXByZXYtbW9udGguZmxhdHBpY2tyLW5leHQtbW9udGgsLmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1uZXh0LW1vbnRoLmZsYXRwaWNrci1uZXh0LW1vbnRoe3JpZ2h0OjB9IC5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItcHJldi1tb250aDpob3ZlciwuZmxhdHBpY2tyLW1vbnRocyAuZmxhdHBpY2tyLW5leHQtbW9udGg6aG92ZXJ7Y29sb3I6Izk1OWVhOX0uZmxhdHBpY2tyLW1vbnRocyAuZmxhdHBpY2tyLXByZXYtbW9udGg6aG92ZXIgc3ZnLC5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItbmV4dC1tb250aDpob3ZlciBzdmd7ZmlsbDojZjY0NzQ3fS5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItcHJldi1tb250aCBzdmcsLmZsYXRwaWNrci1tb250aHMgLmZsYXRwaWNrci1uZXh0LW1vbnRoIHN2Z3t3aWR0aDoxNHB4O2hlaWdodDoxNHB4fS5mbGF0cGlja3ItbW9udGhzIC5mbGF0cGlja3ItcHJldi1tb250aCBzdmcgcGF0aCwuZmxhdHBpY2tyLW1vbnRocyAuZmxhdHBpY2tyLW5leHQtbW9udGggc3ZnIHBhdGh7LXdlYmtpdC10cmFuc2l0aW9uOmZpbGwgLjFzO3RyYW5zaXRpb246ZmlsbCAuMXM7ZmlsbDppbmhlcml0fS5udW1JbnB1dFdyYXBwZXJ7cG9zaXRpb246cmVsYXRpdmU7aGVpZ2h0OmF1dG99Lm51bUlucHV0V3JhcHBlciBpbnB1dCwubnVtSW5wdXRXcmFwcGVyIHNwYW57ZGlzcGxheTppbmxpbmUtYmxvY2t9Lm51bUlucHV0V3JhcHBlciBpbnB1dHt3aWR0aDoxMDAlfS5udW1JbnB1dFdyYXBwZXIgaW5wdXQ6Oi1tcy1jbGVhcntkaXNwbGF5Om5vbmV9Lm51bUlucHV0V3JhcHBlciBpbnB1dDo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiwubnVtSW5wdXRXcmFwcGVyIGlucHV0Ojotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9ue21hcmdpbjowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lfS5udW1JbnB1dFdyYXBwZXIgc3Bhbntwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3dpZHRoOjE0cHg7cGFkZGluZzowIDRweCAwIDJweDtoZWlnaHQ6NTAlO2xpbmUtaGVpZ2h0OjUwJTtvcGFjaXR5OjA7Y3Vyc29yOnBvaW50ZXI7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDU3LDU3LDU3LDAuMTUpOy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubnVtSW5wdXRXcmFwcGVyIHNwYW46aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLDAuMSl9Lm51bUlucHV0V3JhcHBlciBzcGFuOmFjdGl2ZXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMC4yKX0ubnVtSW5wdXRXcmFwcGVyIHNwYW46YWZ0ZXJ7ZGlzcGxheTpibG9jaztjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlfS5udW1JbnB1dFdyYXBwZXIgc3Bhbi5hcnJvd1Vwe3RvcDowO2JvcmRlci1ib3R0b206MH0ubnVtSW5wdXRXcmFwcGVyIHNwYW4uYXJyb3dVcDphZnRlcntib3JkZXItbGVmdDo0cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJpZ2h0OjRweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOjRweCBzb2xpZCByZ2JhKDU3LDU3LDU3LDAuNik7dG9wOjI2JX0ubnVtSW5wdXRXcmFwcGVyIHNwYW4uYXJyb3dEb3due3RvcDo1MCV9Lm51bUlucHV0V3JhcHBlciBzcGFuLmFycm93RG93bjphZnRlcntib3JkZXItbGVmdDo0cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJpZ2h0OjRweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItdG9wOjRweCBzb2xpZCByZ2JhKDU3LDU3LDU3LDAuNik7dG9wOjQwJX0ubnVtSW5wdXRXcmFwcGVyIHNwYW4gc3Zne3dpZHRoOmluaGVyaXQ7aGVpZ2h0OmF1dG99Lm51bUlucHV0V3JhcHBlciBzcGFuIHN2ZyBwYXRoe2ZpbGw6cmdiYSgwLDAsMCwwLjUpfS5udW1JbnB1dFdyYXBwZXI6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLDAuMDUpfS5udW1JbnB1dFdyYXBwZXI6aG92ZXIgc3BhbntvcGFjaXR5OjF9LmZsYXRwaWNrci1jdXJyZW50LW1vbnRoe2ZvbnQtc2l6ZToxMzUlO2xpbmUtaGVpZ2h0OmluaGVyaXQ7Zm9udC13ZWlnaHQ6MzAwO2NvbG9yOmluaGVyaXQ7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6NzUlO2xlZnQ6MTIuNSU7cGFkZGluZzo3LjQ4cHggMCAwIDA7bGluZS1oZWlnaHQ6MTtoZWlnaHQ6MzRweDtkaXNwbGF5OmlubGluZS1ibG9jazt0ZXh0LWFsaWduOmNlbnRlcjstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMCwwKX0uZmxhdHBpY2tyLWN1cnJlbnQtbW9udGggc3Bhbi5jdXItbW9udGh7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXdlaWdodDo3MDA7Y29sb3I6aW5oZXJpdDtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tbGVmdDouNWNoO3BhZGRpbmc6MH0uZmxhdHBpY2tyLWN1cnJlbnQtbW9udGggc3Bhbi5jdXItbW9udGg6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLDAuMDUpfS5mbGF0cGlja3ItY3VycmVudC1tb250aCAubnVtSW5wdXRXcmFwcGVye3dpZHRoOjZjaDt3aWR0aDo3Y2hcMDtkaXNwbGF5OmlubGluZS1ibG9ja30uZmxhdHBpY2tyLWN1cnJlbnQtbW9udGggLm51bUlucHV0V3JhcHBlciBzcGFuLmFycm93VXA6YWZ0ZXJ7Ym9yZGVyLWJvdHRvbS1jb2xvcjpyZ2JhKDAsMCwwLDAuOSl9LmZsYXRwaWNrci1jdXJyZW50LW1vbnRoIC5udW1JbnB1dFdyYXBwZXIgc3Bhbi5hcnJvd0Rvd246YWZ0ZXJ7Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLDAuOSl9LmZsYXRwaWNrci1jdXJyZW50LW1vbnRoIGlucHV0LmN1ci15ZWFye2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O2NvbG9yOmluaGVyaXQ7Y3Vyc29yOnRleHQ7cGFkZGluZzowIDAgMCAuNWNoO21hcmdpbjowO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC13ZWlnaHQ6MzAwO2xpbmUtaGVpZ2h0OmluaGVyaXQ7aGVpZ2h0OmF1dG87Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czowO3ZlcnRpY2FsLWFsaWduOmluaXRpYWw7LXdlYmtpdC1hcHBlYXJhbmNlOnRleHRmaWVsZDstbW96LWFwcGVhcmFuY2U6dGV4dGZpZWxkO2FwcGVhcmFuY2U6dGV4dGZpZWxkfS5mbGF0cGlja3ItY3VycmVudC1tb250aCBpbnB1dC5jdXIteWVhcjpmb2N1c3tvdXRsaW5lOjB9LmZsYXRwaWNrci1jdXJyZW50LW1vbnRoIGlucHV0LmN1ci15ZWFyW2Rpc2FibGVkXSwuZmxhdHBpY2tyLWN1cnJlbnQtbW9udGggaW5wdXQuY3VyLXllYXJbZGlzYWJsZWRdOmhvdmVye2ZvbnQtc2l6ZToxMDAlO2NvbG9yOnJnYmEoMCwwLDAsMC41KTtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O3BvaW50ZXItZXZlbnRzOm5vbmV9LmZsYXRwaWNrci1jdXJyZW50LW1vbnRoIC5mbGF0cGlja3ItbW9udGhEcm9wZG93bi1tb250aHN7YXBwZWFyYW5jZTptZW51bGlzdDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JvcmRlcjpub25lO2JvcmRlci1yYWRpdXM6MDtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y29sb3I6aW5oZXJpdDtjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6aW5oZXJpdDtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtd2VpZ2h0OjMwMDtoZWlnaHQ6YXV0bztsaW5lLWhlaWdodDppbmhlcml0O21hcmdpbjotMXB4IDAgMCAwO291dGxpbmU6bm9uZTtwYWRkaW5nOjAgMCAwIC41Y2g7cG9zaXRpb246cmVsYXRpdmU7dmVydGljYWwtYWxpZ246aW5pdGlhbDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LWFwcGVhcmFuY2U6bWVudWxpc3Q7LW1vei1hcHBlYXJhbmNlOm1lbnVsaXN0O3dpZHRoOmF1dG99LmZsYXRwaWNrci1jdXJyZW50LW1vbnRoIC5mbGF0cGlja3ItbW9udGhEcm9wZG93bi1tb250aHM6Zm9jdXMsLmZsYXRwaWNrci1jdXJyZW50LW1vbnRoIC5mbGF0cGlja3ItbW9udGhEcm9wZG93bi1tb250aHM6YWN0aXZle291dGxpbmU6bm9uZX0uZmxhdHBpY2tyLWN1cnJlbnQtbW9udGggLmZsYXRwaWNrci1tb250aERyb3Bkb3duLW1vbnRoczpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMC4wNSl9LmZsYXRwaWNrci1jdXJyZW50LW1vbnRoIC5mbGF0cGlja3ItbW9udGhEcm9wZG93bi1tb250aHMgLmZsYXRwaWNrci1tb250aERyb3Bkb3duLW1vbnRoe2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7b3V0bGluZTpub25lO3BhZGRpbmc6MH0uZmxhdHBpY2tyLXdlZWtkYXlze2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7dGV4dC1hbGlnbjpjZW50ZXI7b3ZlcmZsb3c6aGlkZGVuO3dpZHRoOjEwMCU7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi13ZWJraXQtZmxleDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7LXdlYmtpdC1hbGlnbi1pdGVtczpjZW50ZXI7LW1zLWZsZXgtYWxpZ246Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtoZWlnaHQ6MjhweH0uZmxhdHBpY2tyLXdlZWtkYXlzIC5mbGF0cGlja3Itd2Vla2RheWNvbnRhaW5lcntkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LXdlYmtpdC1mbGV4O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LWZsZXg6MTstd2Via2l0LWZsZXg6MTstbXMtZmxleDoxO2ZsZXg6MX1zcGFuLmZsYXRwaWNrci13ZWVrZGF5e2N1cnNvcjpkZWZhdWx0O2ZvbnQtc2l6ZTo5MCU7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjpyZ2JhKDAsMCwwLDAuNTQpO2xpbmUtaGVpZ2h0OjE7bWFyZ2luOjA7dGV4dC1hbGlnbjpjZW50ZXI7ZGlzcGxheTpibG9jazstd2Via2l0LWJveC1mbGV4OjE7LXdlYmtpdC1mbGV4OjE7LW1zLWZsZXg6MTtmbGV4OjE7Zm9udC13ZWlnaHQ6Ym9sZGVyfS5kYXlDb250YWluZXIsLmZsYXRwaWNrci13ZWVrc3twYWRkaW5nOjFweCAwIDAgMH0uZmxhdHBpY2tyLWRheXN7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVuO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotd2Via2l0LWZsZXg7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtYWxpZ246c3RhcnQ7LXdlYmtpdC1hbGlnbi1pdGVtczpmbGV4LXN0YXJ0Oy1tcy1mbGV4LWFsaWduOnN0YXJ0O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7d2lkdGg6MzA3Ljg3NXB4fS5mbGF0cGlja3ItZGF5czpmb2N1c3tvdXRsaW5lOjB9LmRheUNvbnRhaW5lcntwYWRkaW5nOjA7b3V0bGluZTowO3RleHQtYWxpZ246bGVmdDt3aWR0aDozMDcuODc1cHg7bWluLXdpZHRoOjMwNy44NzVweDttYXgtd2lkdGg6MzA3Ljg3NXB4Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmlubGluZS1ibG9jaztkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotd2Via2l0LWZsZXg7ZGlzcGxheTpmbGV4Oy13ZWJraXQtZmxleC13cmFwOndyYXA7ZmxleC13cmFwOndyYXA7LW1zLWZsZXgtd3JhcDp3cmFwOy1tcy1mbGV4LXBhY2s6anVzdGlmeTstd2Via2l0LWp1c3RpZnktY29udGVudDpzcGFjZS1hcm91bmQ7anVzdGlmeS1jb250ZW50OnNwYWNlLWFyb3VuZDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMCwwKTtvcGFjaXR5OjF9LmRheUNvbnRhaW5lciArIC5kYXlDb250YWluZXJ7LXdlYmtpdC1ib3gtc2hhZG93Oi0xcHggMCAwICNlNmU2ZTY7Ym94LXNoYWRvdzotMXB4IDAgMCAjZTZlNmU2fS5mbGF0cGlja3ItZGF5e2JhY2tncm91bmQ6bm9uZTtib3JkZXI6MXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yYWRpdXM6MTUwcHg7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O2NvbG9yOiMzOTM5Mzk7Y3Vyc29yOnBvaW50ZXI7Zm9udC13ZWlnaHQ6NDAwO3dpZHRoOjE0LjI4NTcxNDMlOy13ZWJraXQtZmxleC1iYXNpczoxNC4yODU3MTQzJTstbXMtZmxleC1wcmVmZXJyZWQtc2l6ZToxNC4yODU3MTQzJTtmbGV4LWJhc2lzOjE0LjI4NTcxNDMlO21heC13aWR0aDozOXB4O2hlaWdodDozOXB4O2xpbmUtaGVpZ2h0OjM5cHg7bWFyZ2luOjA7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246cmVsYXRpdmU7LXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7LXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOy1tcy1mbGV4LXBhY2s6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7dGV4dC1hbGlnbjpjZW50ZXJ9LmZsYXRwaWNrci1kYXkuaW5SYW5nZSwuZmxhdHBpY2tyLWRheS5wcmV2TW9udGhEYXkuaW5SYW5nZSwuZmxhdHBpY2tyLWRheS5uZXh0TW9udGhEYXkuaW5SYW5nZSwuZmxhdHBpY2tyLWRheS50b2RheS5pblJhbmdlLC5mbGF0cGlja3ItZGF5LnByZXZNb250aERheS50b2RheS5pblJhbmdlLC5mbGF0cGlja3ItZGF5Lm5leHRNb250aERheS50b2RheS5pblJhbmdlLC5mbGF0cGlja3ItZGF5OmhvdmVyLC5mbGF0cGlja3ItZGF5LnByZXZNb250aERheTpob3ZlciwuZmxhdHBpY2tyLWRheS5uZXh0TW9udGhEYXk6aG92ZXIsLmZsYXRwaWNrci1kYXk6Zm9jdXMsLmZsYXRwaWNrci1kYXkucHJldk1vbnRoRGF5OmZvY3VzLC5mbGF0cGlja3ItZGF5Lm5leHRNb250aERheTpmb2N1c3tjdXJzb3I6cG9pbnRlcjtvdXRsaW5lOjA7YmFja2dyb3VuZDojZTZlNmU2O2JvcmRlci1jb2xvcjojZTZlNmU2fS5mbGF0cGlja3ItZGF5LnRvZGF5e2JvcmRlci1jb2xvcjojOTU5ZWE5fS5mbGF0cGlja3ItZGF5LnRvZGF5OmhvdmVyLC5mbGF0cGlja3ItZGF5LnRvZGF5OmZvY3Vze2JvcmRlci1jb2xvcjojOTU5ZWE5O2JhY2tncm91bmQ6Izk1OWVhOTtjb2xvcjojZmZmfS5mbGF0cGlja3ItZGF5LnNlbGVjdGVkLC5mbGF0cGlja3ItZGF5LnN0YXJ0UmFuZ2UsLmZsYXRwaWNrci1kYXkuZW5kUmFuZ2UsLmZsYXRwaWNrci1kYXkuc2VsZWN0ZWQuaW5SYW5nZSwuZmxhdHBpY2tyLWRheS5zdGFydFJhbmdlLmluUmFuZ2UsLmZsYXRwaWNrci1kYXkuZW5kUmFuZ2UuaW5SYW5nZSwuZmxhdHBpY2tyLWRheS5zZWxlY3RlZDpmb2N1cywuZmxhdHBpY2tyLWRheS5zdGFydFJhbmdlOmZvY3VzLC5mbGF0cGlja3ItZGF5LmVuZFJhbmdlOmZvY3VzLC5mbGF0cGlja3ItZGF5LnNlbGVjdGVkOmhvdmVyLC5mbGF0cGlja3ItZGF5LnN0YXJ0UmFuZ2U6aG92ZXIsLmZsYXRwaWNrci1kYXkuZW5kUmFuZ2U6aG92ZXIsLmZsYXRwaWNrci1kYXkuc2VsZWN0ZWQucHJldk1vbnRoRGF5LC5mbGF0cGlja3ItZGF5LnN0YXJ0UmFuZ2UucHJldk1vbnRoRGF5LC5mbGF0cGlja3ItZGF5LmVuZFJhbmdlLnByZXZNb250aERheSwuZmxhdHBpY2tyLWRheS5zZWxlY3RlZC5uZXh0TW9udGhEYXksLmZsYXRwaWNrci1kYXkuc3RhcnRSYW5nZS5uZXh0TW9udGhEYXksLmZsYXRwaWNrci1kYXkuZW5kUmFuZ2UubmV4dE1vbnRoRGF5e2JhY2tncm91bmQ6IzU2OWZmNzstd2Via2l0LWJveC1zaGFkb3c6bm9uZTtib3gtc2hhZG93Om5vbmU7Y29sb3I6I2ZmZjtib3JkZXItY29sb3I6IzU2OWZmN30uZmxhdHBpY2tyLWRheS5zZWxlY3RlZC5zdGFydFJhbmdlLC5mbGF0cGlja3ItZGF5LnN0YXJ0UmFuZ2Uuc3RhcnRSYW5nZSwuZmxhdHBpY2tyLWRheS5lbmRSYW5nZS5zdGFydFJhbmdle2JvcmRlci1yYWRpdXM6NTBweCAwIDAgNTBweH0uZmxhdHBpY2tyLWRheS5zZWxlY3RlZC5lbmRSYW5nZSwuZmxhdHBpY2tyLWRheS5zdGFydFJhbmdlLmVuZFJhbmdlLC5mbGF0cGlja3ItZGF5LmVuZFJhbmdlLmVuZFJhbmdle2JvcmRlci1yYWRpdXM6MCA1MHB4IDUwcHggMH0uZmxhdHBpY2tyLWRheS5zZWxlY3RlZC5zdGFydFJhbmdlICsgLmVuZFJhbmdlOm5vdCg6bnRoLWNoaWxkKDduKzEpKSwuZmxhdHBpY2tyLWRheS5zdGFydFJhbmdlLnN0YXJ0UmFuZ2UgKyAuZW5kUmFuZ2U6bm90KDpudGgtY2hpbGQoN24rMSkpLC5mbGF0cGlja3ItZGF5LmVuZFJhbmdlLnN0YXJ0UmFuZ2UgKyAuZW5kUmFuZ2U6bm90KDpudGgtY2hpbGQoN24rMSkpey13ZWJraXQtYm94LXNoYWRvdzotMTBweCAwIDAgIzU2OWZmNztib3gtc2hhZG93Oi0xMHB4IDAgMCAjNTY5ZmY3fS5mbGF0cGlja3ItZGF5LnNlbGVjdGVkLnN0YXJ0UmFuZ2UuZW5kUmFuZ2UsLmZsYXRwaWNrci1kYXkuc3RhcnRSYW5nZS5zdGFydFJhbmdlLmVuZFJhbmdlLC5mbGF0cGlja3ItZGF5LmVuZFJhbmdlLnN0YXJ0UmFuZ2UuZW5kUmFuZ2V7Ym9yZGVyLXJhZGl1czo1MHB4fS5mbGF0cGlja3ItZGF5LmluUmFuZ2V7Ym9yZGVyLXJhZGl1czowOy13ZWJraXQtYm94LXNoYWRvdzotNXB4IDAgMCAjZTZlNmU2LDVweCAwIDAgI2U2ZTZlNjtib3gtc2hhZG93Oi01cHggMCAwICNlNmU2ZTYsNXB4IDAgMCAjZTZlNmU2fS5mbGF0cGlja3ItZGF5LmZsYXRwaWNrci1kaXNhYmxlZCwuZmxhdHBpY2tyLWRheS5mbGF0cGlja3ItZGlzYWJsZWQ6aG92ZXIsLmZsYXRwaWNrci1kYXkucHJldk1vbnRoRGF5LC5mbGF0cGlja3ItZGF5Lm5leHRNb250aERheSwuZmxhdHBpY2tyLWRheS5ub3RBbGxvd2VkLC5mbGF0cGlja3ItZGF5Lm5vdEFsbG93ZWQucHJldk1vbnRoRGF5LC5mbGF0cGlja3ItZGF5Lm5vdEFsbG93ZWQubmV4dE1vbnRoRGF5e2NvbG9yOnJnYmEoNTcsNTcsNTcsMC4zKTtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudDtjdXJzb3I6ZGVmYXVsdH0uZmxhdHBpY2tyLWRheS5mbGF0cGlja3ItZGlzYWJsZWQsLmZsYXRwaWNrci1kYXkuZmxhdHBpY2tyLWRpc2FibGVkOmhvdmVye2N1cnNvcjpub3QtYWxsb3dlZDtjb2xvcjpyZ2JhKDU3LDU3LDU3LDAuMSl9LmZsYXRwaWNrci1kYXkud2Vlay5zZWxlY3RlZHtib3JkZXItcmFkaXVzOjA7LXdlYmtpdC1ib3gtc2hhZG93Oi01cHggMCAwICM1NjlmZjcsNXB4IDAgMCAjNTY5ZmY3O2JveC1zaGFkb3c6LTVweCAwIDAgIzU2OWZmNyw1cHggMCAwICM1NjlmZjd9LmZsYXRwaWNrci1kYXkuaGlkZGVue3Zpc2liaWxpdHk6aGlkZGVufS5yYW5nZU1vZGUgLmZsYXRwaWNrci1kYXl7bWFyZ2luLXRvcDoxcHh9LmZsYXRwaWNrci13ZWVrd3JhcHBlcntmbG9hdDpsZWZ0fS5mbGF0cGlja3Itd2Vla3dyYXBwZXIgLmZsYXRwaWNrci13ZWVrc3twYWRkaW5nOjAgMTJweDstd2Via2l0LWJveC1zaGFkb3c6MXB4IDAgMCAjZTZlNmU2O2JveC1zaGFkb3c6MXB4IDAgMCAjZTZlNmU2fS5mbGF0cGlja3Itd2Vla3dyYXBwZXIgLmZsYXRwaWNrci13ZWVrZGF5e2Zsb2F0Om5vbmU7d2lkdGg6MTAwJTtsaW5lLWhlaWdodDoyOHB4fS5mbGF0cGlja3Itd2Vla3dyYXBwZXIgc3Bhbi5mbGF0cGlja3ItZGF5LC5mbGF0cGlja3Itd2Vla3dyYXBwZXIgc3Bhbi5mbGF0cGlja3ItZGF5OmhvdmVye2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTttYXgtd2lkdGg6bm9uZTtjb2xvcjpyZ2JhKDU3LDU3LDU3LDAuMyk7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjdXJzb3I6ZGVmYXVsdDtib3JkZXI6bm9uZX0uZmxhdHBpY2tyLWlubmVyQ29udGFpbmVye2Rpc3BsYXk6YmxvY2s7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi13ZWJraXQtZmxleDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7b3ZlcmZsb3c6aGlkZGVufS5mbGF0cGlja3ItckNvbnRhaW5lcntkaXNwbGF5OmlubGluZS1ibG9jaztwYWRkaW5nOjA7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94fS5mbGF0cGlja3ItdGltZXt0ZXh0LWFsaWduOmNlbnRlcjtvdXRsaW5lOjA7ZGlzcGxheTpibG9jaztoZWlnaHQ6MDtsaW5lLWhlaWdodDo0MHB4O21heC1oZWlnaHQ6NDBweDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3g7b3ZlcmZsb3c6aGlkZGVuO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotd2Via2l0LWZsZXg7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXh9LmZsYXRwaWNrci10aW1lOmFmdGVye2NvbnRlbnQ6IiI7ZGlzcGxheTp0YWJsZTtjbGVhcjpib3RofS5mbGF0cGlja3ItdGltZSAubnVtSW5wdXRXcmFwcGVyey13ZWJraXQtYm94LWZsZXg6MTstd2Via2l0LWZsZXg6MTstbXMtZmxleDoxO2ZsZXg6MTt3aWR0aDo0MCU7aGVpZ2h0OjQwcHg7ZmxvYXQ6bGVmdH0uZmxhdHBpY2tyLXRpbWUgLm51bUlucHV0V3JhcHBlciBzcGFuLmFycm93VXA6YWZ0ZXJ7Ym9yZGVyLWJvdHRvbS1jb2xvcjojMzkzOTM5fS5mbGF0cGlja3ItdGltZSAubnVtSW5wdXRXcmFwcGVyIHNwYW4uYXJyb3dEb3duOmFmdGVye2JvcmRlci10b3AtY29sb3I6IzM5MzkzOX0uZmxhdHBpY2tyLXRpbWUuaGFzU2Vjb25kcyAubnVtSW5wdXRXcmFwcGVye3dpZHRoOjI2JX0uZmxhdHBpY2tyLXRpbWUudGltZTI0aHIgLm51bUlucHV0V3JhcHBlcnt3aWR0aDo0OSV9LmZsYXRwaWNrci10aW1lIGlucHV0e2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7LXdlYmtpdC1ib3gtc2hhZG93Om5vbmU7Ym94LXNoYWRvdzpub25lO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MDt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW46MDtwYWRkaW5nOjA7aGVpZ2h0OmluaGVyaXQ7bGluZS1oZWlnaHQ6aW5oZXJpdDtjb2xvcjojMzkzOTM5O2ZvbnQtc2l6ZTowLjg3NXJlbSA7cG9zaXRpb246cmVsYXRpdmU7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94Oy13ZWJraXQtYXBwZWFyYW5jZTp0ZXh0ZmllbGQ7LW1vei1hcHBlYXJhbmNlOnRleHRmaWVsZDthcHBlYXJhbmNlOnRleHRmaWVsZH0uZmxhdHBpY2tyLXRpbWUgaW5wdXQuZmxhdHBpY2tyLWhvdXJ7Zm9udC13ZWlnaHQ6Ym9sZH0uZmxhdHBpY2tyLXRpbWUgaW5wdXQuZmxhdHBpY2tyLW1pbnV0ZSwuZmxhdHBpY2tyLXRpbWUgaW5wdXQuZmxhdHBpY2tyLXNlY29uZHtmb250LXdlaWdodDo0MDB9LmZsYXRwaWNrci10aW1lIGlucHV0OmZvY3Vze291dGxpbmU6MDtib3JkZXI6MH0uZmxhdHBpY2tyLXRpbWUgLmZsYXRwaWNrci10aW1lLXNlcGFyYXRvciwuZmxhdHBpY2tyLXRpbWUgLmZsYXRwaWNrci1hbS1wbXtoZWlnaHQ6aW5oZXJpdDtmbG9hdDpsZWZ0O2xpbmUtaGVpZ2h0OmluaGVyaXQ7Y29sb3I6IzM5MzkzOTtmb250LXdlaWdodDpib2xkO3dpZHRoOjIlOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTstd2Via2l0LWFsaWduLXNlbGY6Y2VudGVyOy1tcy1mbGV4LWl0ZW0tYWxpZ246Y2VudGVyO2FsaWduLXNlbGY6Y2VudGVyfS5mbGF0cGlja3ItdGltZSAuZmxhdHBpY2tyLWFtLXBte291dGxpbmU6MDt3aWR0aDoxOCU7Y3Vyc29yOnBvaW50ZXI7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC13ZWlnaHQ6NDAwfS5mbGF0cGlja3ItdGltZSBpbnB1dDpob3ZlciwuZmxhdHBpY2tyLXRpbWUgLmZsYXRwaWNrci1hbS1wbTpob3ZlciwuZmxhdHBpY2tyLXRpbWUgaW5wdXQ6Zm9jdXMsLmZsYXRwaWNrci10aW1lIC5mbGF0cGlja3ItYW0tcG06Zm9jdXN7YmFja2dyb3VuZDojZWVlfS5mbGF0cGlja3ItaW5wdXRbcmVhZG9ubHlde2N1cnNvcjpwb2ludGVyfUAtd2Via2l0LWtleWZyYW1lcyBmcEZhZGVJbkRvd257ZnJvbXtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtMjBweCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtMjBweCwwKX10b3tvcGFjaXR5OjE7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCl9fUBrZXlmcmFtZXMgZnBGYWRlSW5Eb3due2Zyb217b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTIwcHgsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTIwcHgsMCl9dG97b3BhY2l0eToxOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApfX0KLyoqIC9jc3MvaW5saW5lLmZyLm5ld2NhcnMuY3NzICoqLwouY3VzdG9tLXBhZ2UgLmNvbC1zbS0yLCAuY3VzdG9tLXBhZ2UgLmNvbC1zbS0zLCAuY3VzdG9tLXBhZ2UgLmNvbC1zbS02LCAuY3VzdG9tLXBhZ2UgLmNvbC1zbS05LCAuY3VzdG9tLXBhZ2UgLmNvbC1zbS0xMiB7IHBhZGRpbmctbGVmdDowICFpbXBvcnRhbnQ7IHBhZGRpbmctcmlnaHQ6MCAhaW1wb3J0YW50OyB9IC5yb3ctLWZ1bGwtd2lkdGggeyB3aWR0aDo5OS42dncgIWltcG9ydGFudDsgcG9zaXRpb246cmVsYXRpdmUgIWltcG9ydGFudDsgbWFyZ2luLWxlZnQ6LTUwdncgIWltcG9ydGFudDsgbGVmdDo1MCUgIWltcG9ydGFudDsgfSAucmVzcG9uc2l2ZS1lZGl0b3IgLmN1c3RvbS1wYWdlIC5yb3cgeyBtYXJnaW4tbGVmdDowOyBtYXJnaW4tcmlnaHQ6MDsgfSBidXR0b24jb25ldHJ1c3QtYWNjZXB0LWJ0bi1oYW5kbGVyIHsgYmFja2dyb3VuZC1jb2xvcjojMDAyYzVmICFpbXBvcnRhbnQ7IGNvbG9yOiNmZmZmZmYgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiNmZmZmZmYgIWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czpweCAhaW1wb3J0YW50OyB9IGJ1dHRvbiNvbmV0cnVzdC1yZWplY3QtYWxsLWhhbmRsZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiMwMDJjNWYgIWltcG9ydGFudDsgY29sb3I6IzAwMmM1ZiAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6IzAwMmM1ZiAhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOnB4ICFpbXBvcnRhbnQ7IH0gYnV0dG9uI29uZXRydXN0LXBjLWJ0bi1oYW5kbGVyIHsgYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmICFpbXBvcnRhbnQ7IGNvbG9yOiM2OTY5NjkgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiM5MDkwOTAgIWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czpweCAhaW1wb3J0YW50OyB9IGJ1dHRvbi5zYXZlLXByZWZlcmVuY2UtYnRuLWhhbmRsZXIub25ldHJ1c3QtY2xvc2UtYnRuLWhhbmRsZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYgIWltcG9ydGFudDsgY29sb3I6IzAwMmM1ZiAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6IzAwMmM1ZiAhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOnB4ICFpbXBvcnRhbnQ7IH0gYnV0dG9uLm90LXBjLXJlZnVzZS1hbGwtaGFuZGxlciB7IGJhY2tncm91bmQtY29sb3I6IzAwMmM1ZiAhaW1wb3J0YW50OyBjb2xvcjojMDAyYzVmICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjojMDAyYzVmICFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6cHggIWltcG9ydGFudDsgfSBidXR0b24jYWNjZXB0LXJlY29tbWVuZGVkLWJ0bi1oYW5kbGVyeyBiYWNrZ3JvdW5kLWNvbG9yOiMwMDJjNWYgIWltcG9ydGFudDsgY29sb3I6I2ZmZmZmZiAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6I2ZmZmZmZiAhaW1wb3J0YW50OyBmb250LXNpemU6c21hbGwgIWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czpweCAhaW1wb3J0YW50OyB9IC5vdC1wYy1sb2dvIGltZ3sgY29udGVudDp1cmwoIi9pbWFnZXMvTG9nb01vYmlsZS9oeXVuZGFpLW1vYmlsZS1sb2dvLXJnYi1mci5wbmciKSAhaW1wb3J0YW50OyB9ICNvbmV0cnVzdC1wYy1zZGsgLm90LXBjLWxvZ297IHdpZHRoOjMwJSAhaW1wb3J0YW50OyBqdXN0aWZ5LWNvbnRlbnQ6bGVmdCAhaW1wb3J0YW50OyB9IC5vdC1ibnItbG9nb3sgY29udGVudDp1cmwoIi9pbWFnZXMvTG9nb01vYmlsZS9oeXVuZGFpLW1vYmlsZS1sb2dvLXJnYi1mci5wbmciKSAhaW1wb3J0YW50OyB9ICNvbmV0cnVzdC1iYW5uZXItc2RrLm90LWJuci13LWxvZ28gLm90LWJuci1sb2dveyB3aWR0aDo4NXB4ICFpbXBvcnRhbnQ7IGhlaWdodDphdXRvICFpbXBvcnRhbnQ7IG1hcmdpbi1sZWZ0OjI1cHggIWltcG9ydGFudDsgfSAjb25ldHJ1c3QtYmFubmVyLXNkay5vdC1ibnItdy1sb2dvICNvbmV0cnVzdC1wb2xpY3kgeyBtYXJnaW4tbGVmdDoxMTBweCAhaW1wb3J0YW50OyBwYWRkaW5nLWxlZnQ6MjVweDsgfSBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NDI1cHgpeyAjb25ldHJ1c3QtYmFubmVyLXNkay5vdC1ibnItdy1sb2dvIC5vdC1ibnItbG9nb3sgcG9zaXRpb246cmVsYXRpdmU7IG1hcmdpbjoxNXB4IDAgMTBweCAwICFpbXBvcnRhbnQ7IHRyYW5zZm9ybTppbmhlcml0OyB6b29tOjQwJTsgfSAjb25ldHJ1c3QtYmFubmVyLXNkay5vdC1ibnItdy1sb2dvICNvbmV0cnVzdC1wb2xpY3kgeyBtYXJnaW4tbGVmdDowcHggIWltcG9ydGFudDsgcGFkZGluZy1sZWZ0OjBweDsgbWFyZ2luLXRvcDo1cHg7IH0gI29uZXRydXN0LWNvbnNlbnQtc2RrICNvbmV0cnVzdC1wb2xpY3ktdGl0bGV7IGZvbnQtc2l6ZToxZW0gIWltcG9ydGFudDsgfSAjb25ldHJ1c3QtYmFubmVyLXNkayAjb25ldHJ1c3QtYWNjZXB0LWJ0bi1oYW5kbGVyLCAjb25ldHJ1c3QtYmFubmVyLXNkayAjb25ldHJ1c3QtcmVqZWN0LWFsbC1oYW5kbGVyLCAjb25ldHJ1c3QtYmFubmVyLXNkayAjb25ldHJ1c3QtcGMtYnRuLWhhbmRsZXJ7IHBhZGRpbmc6MTBweCAxMHB4OyB9ICNvbmV0cnVzdC1iYW5uZXItc2RrIGJ1dHRvbiwgI29uZXRydXN0LXBjLXNkayBidXR0b24sICNvdC1zZGstY29va2llLXBvbGljeSBidXR0b257IG1hcmdpbi1ib3R0b206MC41cmVtOyB9ICNvbmV0cnVzdC1wYy1zZGsgYnV0dG9uIHsgd2lkdGg6YXV0bzsgfSAjb25ldHJ1c3QtYmFubmVyLXNkayAub3Qtc2RrLWNvbnRhaW5lciwgI29uZXRydXN0LXBjLXNkayAub3Qtc2RrLWNvbnRhaW5lciwgI290LXNkay1jb29raWUtcG9saWN5IC5vdC1zZGstY29udGFpbmVyeyBwYWRkaW5nOjVweCAyMHB4OyB9ICNvbmV0cnVzdC1iYW5uZXItc2RrICNvbmV0cnVzdC1wb2xpY3l7IG1hcmdpbjowOyB9ICNvbmV0cnVzdC1iYW5uZXItc2RrICNvbmV0cnVzdC1idXR0b24tZ3JvdXAgI29uZXRydXN0LWFjY2VwdC1idG4taGFuZGxlcnsgZm9udC1zaXplOnZhcigtLWZzMCk7IH0gfTwvc3R5bGU+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgoJCQkJLmNudFNlcGFyYXRvciB7CgkJCQkJcGFkZGluZy10b3A6MjJweDsKCQkJCX0KCQkJCTwvc3R5bGU+CiAgICAgICAKICAgICAgIDwhLS0gT086OjE1ZGJlMWVjNGJiODE5ZjNiZTlhZjBiYjkxNzMxZDlmIC0tPgogICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IsOgIHZlbmRyZSIgaWQ9InRleHRGb3JTYWxlIj4KICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJEw6l0YWlscyIgaWQ9InRleHREZXRhaWxzIj4KICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJUb3VzIiBpZD0idGV4dEFsbCI+CiAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iUHJpeCBSw6lkdWl0IiBpZD0idGV4dFJlZHVjZWQiPgogICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IlPDqWxlY3Rpb25uZXogdW5lIG1hcnF1ZSIgaWQ9InRleHRNYW51VGl0bGUiPgogICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IlZvaXIgbm9zIG1vZMOobGVzIEh5dW5kYWkiIGlkPSJ0ZXh0QnJhbmRUaXRsZSI+CiAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iTW9kw6hsZXMgSHl1bmRhaSBuZXVmcyAyMDI1ICZhbXA7IDIwMjYiIGlkPSJ0ZXh0TWFpblRpdGxlIj4KICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJBdXRvcyBuZXV2ZXMgSHl1bmRhaSAyMDI1ICZhbXA7IDIwMjYgw6AgeyRORVdDSVRZfSIgaWQ9InRleHRDYXJUaXRsZSI+CiAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iVlVTIG5ldWZzIEh5dW5kYWkgMjAyNSAmYW1wOyAyMDI2IMOgIHskTkVXQ0lUWX0iIGlkPSJ0ZXh0U1VWVGl0bGUiPgogICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IkNhbWlvbnMgbmV1ZnMgSHl1bmRhaSAyMDI1ICZhbXA7IDIwMjYgw6AgeyRORVdDSVRZfSIgaWQ9InRleHRUcnVja1RpdGxlIj4KICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJIeWJyaWRlcyBuZXV2ZXMgSHl1bmRhaSAyMDI1ICZhbXA7IDIwMjYgw6AgeyRORVdDSVRZfSIgaWQ9InRleHRIeWJyaWRUaXRsZSI+CiAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0ibm91dmVhdSIgaWQ9InRleHROZXciPgogICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9Ikh5dW5kYWkgeyRDTEFTU05BTUV9IDIwMjUgJmFtcDsgMjAyNiIgaWQ9InRleHRDbGFzc1ZpZXciPgogICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IkFjY3VlaWwiIGlkPSJ0ZXh0SG9tZSI+CiAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iLyIgaWQ9InVyaUhvbWUiPgogICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9Ii9uZXVmcy9ub3V2ZWF1Lmh0bWwiIGlkPSJ1cmlOZXdDYXJzIj4KICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSIvbmV1ZnMvIiBpZD0idGV4dE5ld0NhckZvbGRlciI+CiAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iTm9zIG1hcnF1ZXMiIGlkPSJ0ZXh0TWFudVNlbGVjdCI+CiAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iRW4gU3RvY2sgLyBEaXNwb25pYmxlcyIgaWQ9ImluU3RvY2tMYWJlbCI+CiAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iL2ltYWdlcy8iIGlkPSJ0ZXh0QmFzZUltYWdlUGF0aCI+CiAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iL3Byb3h5X2F1Yi8iIGlkPSJicmFuZEltYWdlUGF0aCI+CiAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmb3JjZVRvRmlsbFBvcHVwX25ldyIgdmFsdWU9Im5vbmUiPgoJICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IjEiIGlkPSJpc21vYmlsZSI+CiAgICAgICAJCQkJPHNjcmlwdD4KCgkJLy9nbG9iYWwgc3RvcmUKCQl2YXIgc3RvcmUgPSBudWxsOwoKCQljb25zdCBpbml0U3RvcmUgPSAoKSA9PiB7CgoJCQlpZih0eXBlb2YgY3JlYXRlRGF0YVN0b3JlICE9PSAnZnVuY3Rpb24nKXsKCQkJCXNldFRpbWVvdXQoaW5pdFN0b3JlLCA1MCk7CgkJCQlyZXR1cm47CgkJCX0KCgkJCXN0b3JlID0gY3JlYXRlRGF0YVN0b3JlKHsiY29udGV4dCI6eyJsYW5nIjoiRlJFTkNIIiwic2hvcnRMYW5nIjoiZnIiLCJpc01vYmlsZSI6dHJ1ZSwiY2F0ZWdvcnkiOiJhbGwiLCJzZWN0aW9uIjoiTkVXIiwibG9jYWxlIjoiZnJfQ0EiLCJkYXRlZm9ybWF0IjoiJWUgJUIifSwiZGVhbGVySW5mbyI6eyJhZGRyZXNzIjoiODQ1LCBydWUgTm90cmUtRGFtZSIsImNpdHkiOiJSZXBlbnRpZ255IiwicHJvdmluY2UiOiJRdVx1MDBlOWJlYyIsInJlZ2lvbiI6IkxhbmF1ZGlcdTAwZThyZSIsInBvc3RhbCI6Iko1WSAxQzQiLCJuYW1lIjoiSHl1bmRhaSBSZXBlbnRpZ255IiwiZW1haWwiOiJqcGVsbGV0aWVyQGh5dW5kYWlyZXBlbnRpZ255LmNvbTtraGFvbGFAZDJjbWVkaWEuY2EiLCJkZWFsZXJJRCI6IjE4MDgiLCJkZWFsZXJHcm91cCI6eyJncm91cGVOYW1lIjoiR3JvdXBlIEdFTlgiLCJncm91cGVJRCI6IjQxNTQiLCJkZWFsZXJzIjpbeyJkZWFsZXJJRCI6IjE3ODkiLCJuYW1lIjoiQXV0byBQcm8gQ3JcdTAwZTlkaXQiLCJzaXRlSUQiOiIyMjciLCJpc0xpdmUiOiJZRVMifSx7ImRlYWxlcklEIjoiNzIxIiwibmFtZSI6IkZvcnRpZXIgQXV0byBDclx1MDBlOWRpdCIsInNpdGVJRCI6IjEzMTAiLCJpc0xpdmUiOiJZRVMifSx7ImRlYWxlcklEIjoiMzk3NiIsIm5hbWUiOiJHRU5YIEdyb3VwZSBBdXRvbW9iaWxlIiwic2l0ZUlEIjoiMTQxNyIsImlzTGl2ZSI6IllFUyJ9LHsiZGVhbGVySUQiOiIxODA4IiwibmFtZSI6Ikh5dW5kYWkgUmVwZW50aWdueSIsInNpdGVJRCI6IjI1MSIsImlzTGl2ZSI6IllFUyJ9LHsiZGVhbGVySUQiOiI5MzgiLCJuYW1lIjoiSHl1bmRhaSBTdC1KXHUwMGU5clx1MDBmNG1lIiwic2l0ZUlEIjoiMTEzIiwiaXNMaXZlIjoiWUVTIn0seyJkZWFsZXJJRCI6IjExMDIiLCJuYW1lIjoiS2lhIFJlcGVudGlnbnkiLCJzaXRlSUQiOiI0MzQiLCJpc0xpdmUiOiJZRVMifSx7ImRlYWxlcklEIjoiMTgxMCIsIm5hbWUiOiJNYXpkYSBQb2ludGUtQXV4LVRyZW1ibGVzIiwic2l0ZUlEIjoiMjUzIiwiaXNMaXZlIjoiWUVTIn0seyJkZWFsZXJJRCI6IjE4MDkiLCJuYW1lIjoiTWF6ZGEgUmVwZW50aWdueSIsInNpdGVJRCI6IjI1MiIsImlzTGl2ZSI6IllFUyJ9LHsiZGVhbGVySUQiOiIyMDEwIiwibmFtZSI6Ik1lcmNlZGVzLUJlbnogTW9udHJcdTAwZTlhbC1Fc3QiLCJzaXRlSUQiOiI0MzAiLCJpc0xpdmUiOiJZRVMifSx7ImRlYWxlcklEIjoiODY3IiwibmFtZSI6IlJlcGVudGlnbnkgTWl0c3ViaXNoaSIsInNpdGVJRCI6IjQ5NyIsImlzTGl2ZSI6IllFUyJ9XX0sImZheCI6IiIsInBob25lIjoiNDUwLTU4Mi0zMTgyIiwibGF0aXR1ZGUiOiI0NS43NjMxMTAwMDAwIiwibG9uZ2l0dWRlIjoiLTczLjQyMjQ4MDAwMDAiLCJwcm92aW5jZV9jb2RlIjoiUUMiLCJkZXRhaWxfcHJpeCI6IiIsImRldGFpbF9wcml4X2FuIjoiIiwiZGV0YWlsX3ByaXhfdXNlZCI6IiIsImRldGFpbF9wcml4X3VzZWRfYW4iOiIiLCJvZW1EZWFsZXJDb2RlIjoiMzEwMjYiLCJwcmljZV9kaXNjbGFpbWVyX3ByZWZlcmVuY2UiOiIwIiwicHJpY2VfZGlzY2xhaW1lcl9wcmVmZXJlbmNlX3VzZWQiOiIwIiwiZ21CQUMiOiIiLCJwbGFjZUlkIjoiQ2hJSksyVlA5SXJseUV3UjhLY0txSXgxN2ljIn0sImlzVk0iOmZhbHNlLCJmaWVsZHMiOnsiU0hPV1JPT01fSU1BR0VfU09VUkNFX1RZUEUiOiJjaHJvbWUiLCJORVdfSU5WX0lNQUdFX1NPVVJDRV9UWVBFIjoiY2hyb21lIn0sImkxOG4iOnsiV0VCX1NJVEVfR0VORVJBVE9SX1BBR0VfTkVXSU5WIjoiXC9uZXVmc1wvaW52ZW50YWlyZVwvcmVjaGVyY2hlLmh0bWwiLCJQQVlNRU5UUyI6IlBhaWVtZW50cyIsIkRFRkFVTFRfUEFZTUVOVF9DQVNIIjoiQ29tcHRhbnQiLCJMQUJFTF9CRUZPUkVfVEFYRVMiOiJBdmFudCB0YXhlcyIsIkxBQkVMX1NBVkVfQlVJTERfVElUTEUiOiJFbnJlZ2lzdHJlciB2b3RyZSBjb25maWd1cmF0aW9uISJ9LCJzaG93T2VtSW1hZ2VzIjpmYWxzZX0pOwoJCX07CgoJCWluaXRTdG9yZSgpOwoKCTwvc2NyaXB0PgoJCQkJCQk8c3ZnIGFyaWEtaGlkZGVuPSJ0cnVlIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB3aWR0aDogMDsgaGVpZ2h0OiAwOyBvdmVyZmxvdzogaGlkZGVuOyIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KCQkJCQk8c3ltYm9sIGlkPSJpY29uLWNoZXZyb24tcmlnaHQiIHZpZXdib3g9IjAgMCAzMjAgNTEyIj4KCQk8cGF0aCBkPSJNMjg1LjQ3NiAyNzIuOTcxTDkxLjEzMiA0NjcuMzE0Yy05LjM3MyA5LjM3My0yNC41NjkgOS4zNzMtMzMuOTQxIDBsLTIyLjY2Ny0yMi42NjdjLTkuMzU3LTkuMzU3LTkuMzc1LTI0LjUyMi0uMDQtMzMuOTAxTDE4OC41MDUgMjU2IDM0LjQ4NCAxMDEuMjU1Yy05LjMzNS05LjM3OS05LjMxNy0yNC41NDQuMDQtMzMuOTAxbDIyLjY2Ny0yMi42NjdjOS4zNzMtOS4zNzMgMjQuNTY5LTkuMzczIDMzLjk0MSAwTDI4NS40NzUgMjM5LjAzYzkuMzczIDkuMzcyIDkuMzczIDI0LjU2OC4wMDEgMzMuOTQxeiI+PC9wYXRoPgoJPC9zeW1ib2w+CTxzeW1ib2wgaWQ9Imljb24tY2hldnJvbi1kb3duIiB2aWV3Ym94PSIwIDAgNDQ4IDUxMiI+CgkJPHBhdGggZD0iTTIwNy4wMjkgMzgxLjQ3NkwxMi42ODYgMTg3LjEzMmMtOS4zNzMtOS4zNzMtOS4zNzMtMjQuNTY5IDAtMzMuOTQxbDIyLjY2Ny0yMi42NjdjOS4zNTctOS4zNTcgMjQuNTIyLTkuMzc1IDMzLjkwMS0uMDRMMjI0IDI4NC41MDVsMTU0Ljc0NS0xNTQuMDIxYzkuMzc5LTkuMzM1IDI0LjU0NC05LjMxNyAzMy45MDEuMDRsMjIuNjY3IDIyLjY2N2M5LjM3MyA5LjM3MyA5LjM3MyAyNC41NjkgMCAzMy45NDFMMjQwLjk3MSAzODEuNDc2Yy05LjM3MyA5LjM3Mi0yNC41NjkgOS4zNzItMzMuOTQyIDB6Ij48L3BhdGg+Cgk8L3N5bWJvbD4JPHN5bWJvbCBpZD0iaWNvbi1jYXIiIHZpZXdib3g9IjAgMCA1MTIgNTEyIj4KCQk8cGF0aCBkPSJNNDk5Ljk5IDE3NmgtNTkuODdsLTE2LjY0LTQxLjZDNDA2LjM4IDkxLjYzIDM2NS41NyA2NCAzMTkuNSA2NGgtMTI3Yy00Ni4wNiAwLTg2Ljg4IDI3LjYzLTEwMy45OSA3MC40TDcxLjg3IDE3NkgxMi4wMUM0LjIgMTc2LTEuNTMgMTgzLjM0LjM3IDE5MC45MWw2IDI0QzcuNyAyMjAuMjUgMTIuNSAyMjQgMTguMDEgMjI0aDIwLjA3QzI0LjY1IDIzNS43MyAxNiAyNTIuNzggMTYgMjcydjQ4YzAgMTYuMTIgNi4xNiAzMC42NyAxNiA0MS45M1Y0MTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmgyNTZ2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi01NC4wN2M5Ljg0LTExLjI1IDE2LTI1LjggMTYtNDEuOTN2LTQ4YzAtMTkuMjItOC42NS0zNi4yNy0yMi4wNy00OEg0OTRjNS41MSAwIDEwLjMxLTMuNzUgMTEuNjQtOS4wOWw2LTI0YzEuODktNy41Ny0zLjg0LTE0LjkxLTExLjY1LTE0Ljkxem0tMzUyLjA2LTE3LjgzYzcuMjktMTguMjIgMjQuOTQtMzAuMTcgNDQuNTctMzAuMTdoMTI3YzE5LjYzIDAgMzcuMjggMTEuOTUgNDQuNTcgMzAuMTdMMzg0IDIwOEgxMjhsMTkuOTMtNDkuODN6TTk2IDMxOS44Yy0xOS4yIDAtMzItMTIuNzYtMzItMzEuOVM3Ni44IDI1NiA5NiAyNTZzNDggMjguNzEgNDggNDcuODUtMjguOCAxNS45NS00OCAxNS45NXptMzIwIDBjLTE5LjIgMC00OCAzLjE5LTQ4LTE1Ljk1UzM5Ni44IDI1NiA0MTYgMjU2czMyIDEyLjc2IDMyIDMxLjktMTIuOCAzMS45LTMyIDMxLjl6Ij48L3BhdGg+Cgk8L3N5bWJvbD4JPHN5bWJvbCBpZD0iaWNvbi1zdGVlcmluZy13aGVlbCIgdmlld2JveD0iMCAwIDUxMiA1MTIiPgoJCTxwYXRoIGQ9Ik0wIDI1NkMwIDExNC42IDExNC42IDAgMjU2IDBDMzk3LjQgMCA1MTIgMTE0LjYgNTEyIDI1NkM1MTIgMzk3LjQgMzk3LjQgNTEyIDI1NiA1MTJDMTE0LjYgNTEyIDAgMzk3LjQgMCAyNTZ6TTE2OC45IDI4OEg2Ni42NUM4MC4xNCAzNjguNCAxNDMuNiA0MzEuOSAyMjQgNDQ1LjNWMzU4LjlMMTY4LjkgMjg4ek0yODggMzU4LjlWNDQ1LjNDMzY4LjQgNDMxLjkgNDMxLjkgMzY4LjQgNDQ1LjMgMjg4SDM0My4xTDI4OCAzNTguOXpNMzUyIDIyNEg0NDUuM0M0MzAuMSAxMzMuMiAzNTEuMSA2NCAyNTYgNjRDMTYwLjkgNjQgODEuODkgMTMzLjIgNjYuNjUgMjI0SDE2MEwxNjcuMiAyMDkuN0MxNzIuNiAxOTguOCAxODMuNyAxOTIgMTk1LjggMTkySDMxNi4yQzMyOC4zIDE5MiAzMzkuNCAxOTguOCAzNDQuOCAyMDkuN0wzNTIgMjI0eiI+PC9wYXRoPgoJPC9zeW1ib2w+CTxzeW1ib2wgaWQ9Imljb24tc2hvcHBpbmctY2FydCIgdmlld2JveD0iMCAwIDU3NiA1MTIiPgoJCTxwYXRoIGQ9Ik01MjguMTIgMzAxLjMxOWw0Ny4yNzMtMjA4QzU3OC44MDYgNzguMzAxIDU2Ny4zOTEgNjQgNTUxLjk5IDY0SDE1OS4yMDhsLTkuMTY2LTQ0LjgxQzE0Ny43NTggOC4wMjEgMTM3LjkzIDAgMTI2LjUyOSAwSDI0QzEwLjc0NSAwIDAgMTAuNzQ1IDAgMjR2MTZjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDY5Ljg4M2w3MC4yNDggMzQzLjQzNUMxNDcuMzI1IDQxNy4xIDEzNiA0MzUuMjIyIDEzNiA0NTZjMCAzMC45MjggMjUuMDcyIDU2IDU2IDU2czU2LTI1LjA3MiA1Ni01NmMwLTE1LjY3NC02LjQ0Ny0yOS44MzUtMTYuODI0LTQwaDIwOS42NDdDNDMwLjQ0NyA0MjYuMTY1IDQyNCA0NDAuMzI2IDQyNCA0NTZjMCAzMC45MjggMjUuMDcyIDU2IDU2IDU2czU2LTI1LjA3MiA1Ni01NmMwLTIyLjE3Mi0xMi44ODgtNDEuMzMyLTMxLjU3OS01MC40MDVsNS41MTctMjQuMjc2YzMuNDEzLTE1LjAxOC04LjAwMi0yOS4zMTktMjMuNDAzLTI5LjMxOUgyMTguMTE3bC02LjU0NS0zMmgyOTMuMTQ1YzExLjIwNiAwIDIwLjkyLTcuNzU0IDIzLjQwMy0xOC42ODF6Ij48L3BhdGg+Cgk8L3N5bWJvbD4JPHN5bWJvbCBpZD0iaWNvbi10YWdzIiB2aWV3Ym94PSIwIDAgNjQwIDUxMiI+CgkJPHBhdGggZD0iTTQ5Ny45NDEgMjI1Ljk0MUwyODYuMDU5IDE0LjA1OUE0OCA0OCAwIDAgMCAyNTIuMTE4IDBINDhDMjEuNDkgMCAwIDIxLjQ5IDAgNDh2MjA0LjExOGE0OCA0OCAwIDAgMCAxNC4wNTkgMzMuOTQxbDIxMS44ODIgMjExLjg4MmMxOC43NDQgMTguNzQ1IDQ5LjEzNiAxOC43NDYgNjcuODgyIDBsMjA0LjExOC0yMDQuMTE4YzE4Ljc0NS0xOC43NDUgMTguNzQ1LTQ5LjEzNyAwLTY3Ljg4MnpNMTEyIDE2MGMtMjYuNTEgMC00OC0yMS40OS00OC00OHMyMS40OS00OCA0OC00OCA0OCAyMS40OSA0OCA0OC0yMS40OSA0OC00OCA0OHptNTEzLjk0MSAxMzMuODIzTDQyMS44MjMgNDk3Ljk0MWMtMTguNzQ1IDE4Ljc0NS00OS4xMzcgMTguNzQ1LTY3Ljg4MiAwbC0uMzYtLjM2TDUyNy42NCAzMjMuNTIyYzE2Ljk5OS0xNi45OTkgMjYuMzYtMzkuNiAyNi4zNi02My42NHMtOS4zNjItNDYuNjQxLTI2LjM2LTYzLjY0TDMzMS4zOTcgMGg0OC43MjFhNDggNDggMCAwIDEgMzMuOTQxIDE0LjA1OWwyMTEuODgyIDIxMS44ODJjMTguNzQ1IDE4Ljc0NSAxOC43NDUgNDkuMTM3IDAgNjcuODgyeiI+PC9wYXRoPgoJPC9zeW1ib2w+CTxzeW1ib2wgaWQ9Imljb24tdG9vbHMiIHZpZXdib3g9IjAgMCA1MTIgNTEyIj4KCQk8cGF0aCBkPSJNNTAxLjEgMzk1LjdMMzg0IDI3OC42Yy0yMy4xLTIzLjEtNTcuNi0yNy42LTg1LjQtMTMuOUwxOTIgMTU4LjFWOTZMNjQgMCAwIDY0bDk2IDEyOGg2Mi4xbDEwNi42IDEwNi42Yy0xMy42IDI3LjgtOS4yIDYyLjMgMTMuOSA4NS40bDExNy4xIDExNy4xYzE0LjYgMTQuNiAzOC4yIDE0LjYgNTIuNyAwbDUyLjctNTIuN2MxNC41LTE0LjYgMTQuNS0zOC4yIDAtNTIuN3pNMzMxLjcgMjI1YzI4LjMgMCA1NC45IDExIDc0LjkgMzFsMTkuNCAxOS40YzE1LjgtNi45IDMwLjgtMTYuNSA0My44LTI5LjUgMzcuMS0zNy4xIDQ5LjctODkuMyAzNy45LTEzNi43LTIuMi05LTEzLjUtMTIuMS0yMC4xLTUuNWwtNzQuNCA3NC40LTY3LjktMTEuM0wzMzQgOTguOWw3NC40LTc0LjRjNi42LTYuNiAzLjQtMTcuOS01LjctMjAuMi00Ny40LTExLjctOTkuNi45LTEzNi42IDM3LjktMjguNSAyOC41LTQxLjkgNjYuMS00MS4yIDEwMy42bDgyLjEgODIuMWM4LjEtMS45IDE2LjUtMi45IDI0LjctMi45em0tMTAzLjkgODJsLTU2LjctNTYuN0wxOC43IDQwMi44Yy0yNSAyNS0yNSA2NS41IDAgOTAuNXM2NS41IDI1IDkwLjUgMGwxMjMuNi0xMjMuNmMtNy42LTE5LjktOS45LTQxLjYtNS02Mi43ek02NCA0NzJjLTEzLjIgMC0yNC0xMC44LTI0LTI0IDAtMTMuMyAxMC43LTI0IDI0LTI0czI0IDEwLjcgMjQgMjRjMCAxMy4yLTEwLjcgMjQtMjQgMjR6Ij48L3BhdGg+Cgk8L3N5bWJvbD4JPHN5bWJvbCBpZD0iaWNvbi1oYW5kLWhvbGRpbmctdXNkIiB2aWV3Ym94PSIwIDAgNTc2IDUxMiI+CgkJPHBhdGggZD0iTTI3MS4wNiwxNDQuM2w1NC4yNywxNC4zYTguNTksOC41OSwwLDAsMSw2LjYzLDguMWMwLDQuNi00LjA5LDguNC05LjEyLDguNGgtMzUuNmEzMCwzMCwwLDAsMS0xMS4xOS0yLjJjLTUuMjQtMi4yLTExLjI4LTEuNy0xNS4zLDJsLTE5LDE3LjVhMTEuNjgsMTEuNjgsMCwwLDAtMi4yNSwyLjY2LDExLjQyLDExLjQyLDAsMCwwLDMuODgsMTUuNzQsODMuNzcsODMuNzcsMCwwLDAsMzQuNTEsMTEuNVYyNDBjMCw4LjgsNy44MywxNiwxNy4zNywxNmgxNy4zN2M5LjU1LDAsMTcuMzgtNy4yLDE3LjM4LTE2VjIyMi40YzMyLjkzLTMuNiw1Ny44NC0zMSw1My41LTYzLTMuMTUtMjMtMjIuNDYtNDEuMy00Ni41Ni00Ny43TDI4Mi42OCw5Ny40YTguNTksOC41OSwwLDAsMS02LjYzLTguMWMwLTQuNiw0LjA5LTguNCw5LjEyLTguNGgzNS42QTMwLDMwLDAsMCwxLDMzMiw4My4xYzUuMjMsMi4yLDExLjI4LDEuNywxNS4zLTJsMTktMTcuNUExMS4zMSwxMS4zMSwwLDAsMCwzNjguNDcsNjFhMTEuNDMsMTEuNDMsMCwwLDAtMy44NC0xNS43OCw4My44Miw4My44MiwwLDAsMC0zNC41Mi0xMS41VjE2YzAtOC44LTcuODItMTYtMTcuMzctMTZIMjk1LjM3QzI4NS44MiwwLDI3OCw3LjIsMjc4LDE2VjMzLjZjLTMyLjg5LDMuNi01Ny44NSwzMS01My41MSw2M0MyMjcuNjMsMTE5LjYsMjQ3LDEzNy45LDI3MS4wNiwxNDQuM1pNNTY1LjI3LDMyOC4xYy0xMS44LTEwLjctMzAuMi0xMC00Mi42LDBMNDMwLjI3LDQwMmE2My42NCw2My42NCwwLDAsMS00MCwxNEgyNzJhMTYsMTYsMCwwLDEsMC0zMmg3OC4yOWMxNS45LDAsMzAuNzEtMTAuOSwzMy4yNS0yNi42YTMxLjIsMzEuMiwwLDAsMCwuNDYtNS40NkEzMiwzMiwwLDAsMCwzNTIsMzIwSDE5MmExMTcuNjYsMTE3LjY2LDAsMCwwLTc0LjEsMjYuMjlMNzEuNCwzODRIMTZBMTYsMTYsMCwwLDAsMCw0MDB2OTZhMTYsMTYsMCwwLDAsMTYsMTZIMzcyLjc3YTY0LDY0LDAsMCwwLDQwLTE0TDU2NCwzNzdhMzIsMzIsMCwwLDAsMS4yOC00OC45WiI+PC9wYXRoPgoJPC9zeW1ib2w+CTxzeW1ib2wgaWQ9Imljb24tdXNlci1mcmllbmRzIiB2aWV3Ym94PSIwIDAgNjQwIDUxMiI+CgkJPHBhdGggZD0iTTE5MiAyNTZjNjEuOSAwIDExMi01MC4xIDExMi0xMTJTMjUzLjkgMzIgMTkyIDMyIDgwIDgyLjEgODAgMTQ0czUwLjEgMTEyIDExMiAxMTJ6bTc2LjggMzJoLTguM2MtMjAuOCAxMC00My45IDE2LTY4LjUgMTZzLTQ3LjYtNi02OC41LTE2aC04LjNDNTEuNiAyODggMCAzMzkuNiAwIDQwMy4yVjQzMmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyODhjMjYuNSAwIDQ4LTIxLjUgNDgtNDh2LTI4LjhjMC02My42LTUxLjYtMTE1LjItMTE1LjItMTE1LjJ6TTQ4MCAyNTZjNTMgMCA5Ni00MyA5Ni05NnMtNDMtOTYtOTYtOTYtOTYgNDMtOTYgOTYgNDMgOTYgOTYgOTZ6bTQ4IDMyaC0zLjhjLTEzLjkgNC44LTI4LjYgOC00NC4yIDhzLTMwLjMtMy4yLTQ0LjItOEg0MzJjLTIwLjQgMC0zOS4yIDUuOS01NS43IDE1LjQgMjQuNCAyNi4zIDM5LjcgNjEuMiAzOS43IDk5Ljh2MzguNGMwIDIuMi0uNSA0LjMtLjYgNi40SDU5MmMyNi41IDAgNDgtMjEuNSA0OC00OCAwLTYxLjktNTAuMS0xMTItMTEyLTExMnoiPjwvcGF0aD4KCTwvc3ltYm9sPgk8c3ltYm9sIGlkPSJpY29uLWdsb2JlIiB2aWV3Ym94PSIwIDAgNDk2IDUxMiI+CgkJPHBhdGggZD0iTTMzNi41IDE2MEMzMjIgNzAuNyAyODcuOCA4IDI0OCA4cy03NCA2Mi43LTg4LjUgMTUyaDE3N3pNMTUyIDI1NmMwIDIyLjIgMS4yIDQzLjUgMy4zIDY0aDE4NS4zYzIuMS0yMC41IDMuMy00MS44IDMuMy02NHMtMS4yLTQzLjUtMy4zLTY0SDE1NS4zYy0yLjEgMjAuNS0zLjMgNDEuOC0zLjMgNjR6bTMyNC43LTk2Yy0yOC42LTY3LjktODYuNS0xMjAuNC0xNTgtMTQxLjYgMjQuNCAzMy44IDQxLjIgODQuNyA1MCAxNDEuNmgxMDh6TTE3Ny4yIDE4LjRDMTA1LjggMzkuNiA0Ny44IDkyLjEgMTkuMyAxNjBoMTA4YzguNy01Ni45IDI1LjUtMTA3LjggNDkuOS0xNDEuNnpNNDg3LjQgMTkySDM3Mi43YzIuMSAyMSAzLjMgNDIuNSAzLjMgNjRzLTEuMiA0My0zLjMgNjRoMTE0LjZjNS41LTIwLjUgOC42LTQxLjggOC42LTY0cy0zLjEtNDMuNS04LjUtNjR6TTEyMCAyNTZjMC0yMS41IDEuMi00MyAzLjMtNjRIOC42QzMuMiAyMTIuNSAwIDIzMy44IDAgMjU2czMuMiA0My41IDguNiA2NGgxMTQuNmMtMi0yMS0zLjItNDIuNS0zLjItNjR6bTM5LjUgOTZjMTQuNSA4OS4zIDQ4LjcgMTUyIDg4LjUgMTUyczc0LTYyLjcgODguNS0xNTJoLTE3N3ptMTU5LjMgMTQxLjZjNzEuNC0yMS4yIDEyOS40LTczLjcgMTU4LTE0MS42aC0xMDhjLTguOCA1Ni45LTI1LjYgMTA3LjgtNTAgMTQxLjZ6TTE5LjMgMzUyYzI4LjYgNjcuOSA4Ni41IDEyMC40IDE1OCAxNDEuNi0yNC40LTMzLjgtNDEuMi04NC43LTUwLTE0MS42aC0xMDh6Ij48L3BhdGg+Cgk8L3N5bWJvbD4JPHN5bWJvbCBpZD0iaWNvbi1uZXdzcGFwZXIiIHZpZXdib3g9IjAgMCA1NzYgNTEyIj4KCQk8cGF0aCBkPSJNNTUyIDY0SDg4Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2OEgyNGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djI3MmMwIDMwLjkyOCAyNS4wNzIgNTYgNTYgNTZoNDcyYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWODhjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0ek01NiA0MDBhOCA4IDAgMCAxLTgtOFYxNDRoMTZ2MjQ4YTggOCAwIDAgMS04IDh6bTIzNi0xNkgxNDBjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ2LThjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxNTJjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY4YzAgNi42MjctNS4zNzMgMTItMTIgMTJ6bTIwOCAwSDM0OGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtOGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDE1MmM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjhjMCA2LjYyNy01LjM3MyAxMi0xMiAxMnptLTIwOC05NkgxNDBjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ2LThjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxNTJjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY4YzAgNi42MjctNS4zNzMgMTItMTIgMTJ6bTIwOCAwSDM0OGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtOGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDE1MmM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjhjMCA2LjYyNy01LjM3MyAxMi0xMiAxMnptMC05NkgxNDBjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ2LTQwYzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMzYwYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NDBjMCA2LjYyNy01LjM3MyAxMi0xMiAxMnoiPjwvcGF0aD4KCTwvc3ltYm9sPgoJCQk8L3N2Zz4KCgkJCQkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJpc01vYmlsZSIgbmFtZT0iaXNNb2JpbGUiIHZhbHVlPSIxIj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IlNpdGVzX1BhZ2VfR2VuZXJhbF9NZW51X0JUTiIgdmFsdWU9Ik1lbnUgZMOpcm91bGFudCI+CgkJCQoJCQk8aGVhZGVyIGNsYXNzPSJtb2JpbGUtaGVhZGVyIGZsZXgtYm94IGZsZXgtYmV0d2VlbiBhbGlnbi1jZW50ZXIgLS1mczIgdGhpbiIgaGlkZGVuPSIxIj4KCQkJCQoJCQk8Ym94LWxjIGNsYXNzPSJidXJnZXItbWVudS1jb250YWluZXIgLXBoIj4KCQkJCTxsYWJlbCBmb3I9ImJtX3RvZ2dsZSI+PC9sYWJlbD4KCQkJCTxpbnB1dCBpZD0iYm1fdG9nZ2xlIiB0eXBlPSJjaGVja2JveCIgaGlkZGVuPgoJCQkJPGRpdiBpZD0iYnVyZ2VyLW1lbnUtYnV0dG9uIiBjbGFzcz0ic3RhY2stbGMgYnVyZ2VyLW1lbnUtYnV0dG9uIC0tcy0yIj4KCQkJCQk8c3BhbiBjbGFzcz0iYnVyZ2VyX3RvcCI+PC9zcGFuPgoJCQkJCTxzcGFuIGNsYXNzPSJidXJnZXJfbWlkZGxlIj48L3NwYW4+CgkJCQkJPHNwYW4gY2xhc3M9ImJ1cmdlcl9ib3R0b20iPjwvc3Bhbj4KCQkJCTwvZGl2PgoKCQkJCTxhc2lkZSBjbGFzcz0iYnVyZ2VyLW5hdiI+CgkJCQkJCQkJPG5hdj4KCQkJCTx1bD4KCQkJCQkJCQkJPGxpIGNsYXNzPSIiIGhyZWY9Ij9wYXRoPSI+CgkJCQkJCgkJCQkJPGEgY2xhc3M9IlVTRUQgICBtZW51LWl0ZW0gZmxleC1ib3giIGhyZWY9Ij9wYXRoPS9pbnZlbnRhaXJlLmh0bWwiIHRhcmdldD0iX3RvcCIgb25jbGljaz0iIj4KCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jYXIiPjwvdXNlPjwvc3ZnPgoJCQkJCQk8c3BhbiBjbGFzcz0ic2hyaW5rLWdyb3cgc2tlbGV0b24tdHh0Ij5JbnZlbnRhaXJlPC9zcGFuPgoJCQkJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSJtZW51RXhwYW5kIC1wIC0tcy0zIiBhcmlhLWxhYmVsPSJNZW51IGTDqXJvdWxhbnQiPgoJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tZG93biI+PC91c2U+PC9zdmc+CgkJCQkJPC9zcGFuPgoJCQkJCTwvYT4KCQkJCQkJCQkJCTxkaXYgY2xhc3M9InN1Ym1lbnVJdGVtQ29udGFpbmVyIiBzdHlsZT0iZGlzcGxheTpub25lOyI+CgkJCQkJCTxzdGFjay1sYyBpZD0iaXRlbV9VU0VEIiBjbGFzcz0iLS1zLTkiPgoJCQkJCQkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgVVNFRF9ORVdJTlYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9pbnZlbnRhaXJlL3JlY2hlcmNoZS5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5Ww6loaWN1bGVzIG5ldWZzPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgR1BfMTQ4NzkxNmE3OGJhMDgwIiBocmVmPSI\/cGF0aD0vb2NjYXNpb24tY2VydGlmaWUuaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+UXUnZXN0LWNlIHF1ZSBsJ29jY2FzaW9uIGNlcnRpZmnDqWU\/PC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgVVNFRF9ERU1PIiBocmVmPSI\/cGF0aD0vZGVtb25zdHJhdGV1cnMvcmVjaGVyY2hlLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPlbDqWhpY3VsZXMgZMOpbW9uc3RyYXRldXJzPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgVVNFRF9DRVJUX0NBUlMiIGhyZWY9Ij9wYXRoPS9vY2Nhc2lvbi9jZXJ0aWZpZXMuaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+VsOpaGljdWxlcyBkJ29jY2FzaW9uIGNlcnRpZmnDqXM8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBVU0VEX0NBUlMiIGhyZWY9Ij9wYXRoPS9vY2Nhc2lvbi9yZWNoZXJjaGUuaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+VsOpaGljdWxlcyBkJ29jY2FzaW9uPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgVVNFRF9BTExJTlYiIGhyZWY9Ij9wYXRoPS9pbnZlbnRhaXJlLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPlZvaXIgdG91cyBsZXMgdsOpaGljdWxlczwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IDcwMTJmNjBhLTM3MjAtMTE0Ny03MGFiLWUiIGhyZWY9Ij9wYXRoPS9lbGFudHJhLW4tdGNyLTIwMjYuaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+RWxhbnRyYSBOIFRDUiAyMDI2PC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CgkJCQkJCTwvc3RhY2stbGM+CgkJCQkJPC9kaXY+CgkJCQk8L2xpPgoKCQkJCQoJCQkJPGxpIGNsYXNzPSIiPgoJCQkJCQoJCQkJCTxhIGNsYXNzPSJORVcgICBtZW51LWl0ZW0gZmxleC1ib3giIGhyZWY9Ij9wYXRoPS9uZXVmcy9ub3V2ZWF1Lmh0bWwiIHRhcmdldD0iX3RvcCIgb25jbGljaz0iIj4KCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1zdGVlcmluZy13aGVlbCI+PC91c2U+PC9zdmc+CgkJCQkJCTxzcGFuIGNsYXNzPSJzaHJpbmstZ3JvdyBza2VsZXRvbi10eHQiPlNhbGxlIGQnZXhwb3NpdGlvbjwvc3Bhbj4KCQkJCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0ibWVudUV4cGFuZCAtcCAtLXMtMyIgYXJpYS1sYWJlbD0iTWVudSBkw6lyb3VsYW50Ij4KCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLWRvd24iPjwvdXNlPjwvc3ZnPgoJCQkJCTwvc3Bhbj4KCQkJCQk8L2E+CgkJCQkJCQkJCQk8ZGl2IGNsYXNzPSJzdWJtZW51SXRlbUNvbnRhaW5lciIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgoJCQkJCQk8c3RhY2stbGMgaWQ9Iml0ZW1fTkVXIiBjbGFzcz0iLS1zLTkiPgoJCQkJCQkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgTkVXX0xJTkVVUCIgaHJlZj0iP3BhdGg9L25ldWZzL0h5dW5kYWkuaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+Vm9pciBsYSBnYW1tZTwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IE5FV19QSEVWIiBocmVmPSI\/cGF0aD0vbmV1ZnMvUEhFVi5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5IeWJyaWRlcyByZWNoYXJnZWFibGVzPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgTkVXX1NVViIgaHJlZj0iP3BhdGg9L25ldWZzL1ZVUy5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5NdWx0aXNlZ21lbnRzIC8gVlVTPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgTkVXX1NFREFOIiBocmVmPSI\/cGF0aD0vbmV1ZnMvYXV0b3MuaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+Q29tcGFjdGVzIC8gQmVybGluZXM8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBORVdfSFlCUklEIiBocmVmPSI\/cGF0aD0vbmV1ZnMvSHlicmlkZXMuaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+SHlicmlkZXM8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBORVdfRUxFQ1RSSUMiIGhyZWY9Ij9wYXRoPS9uZXVmcy9lbGVjdHJpcXVlLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPsOJbGVjdHJpcXVlczwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IE5FV19UUlVDSyIgaHJlZj0iP3BhdGg9L25ldWZzL2NhbWlvbnMuaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+Q2FtaW9uczwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgoJCQkJCQk8L3N0YWNrLWxjPgoJCQkJCTwvZGl2PgoJCQkJPC9saT4KCgkJCQkKCQkJCTxsaSBjbGFzcz0iIj4KCQkJCQkKCQkJCQk8YSBjbGFzcz0iVE9PTFMgICBtZW51LWl0ZW0gZmxleC1ib3giIGhyZWY9Ij9wYXRoPS9jb25maWd1cmF0aW9uLWV0LXByaXgvY29uZmlndXJhdGlvbi5odG1sIiB0YXJnZXQ9Il90b3AiIG9uY2xpY2s9IiI+CgkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tc2hvcHBpbmctY2FydCI+PC91c2U+PC9zdmc+CgkJCQkJCTxzcGFuIGNsYXNzPSJzaHJpbmstZ3JvdyBza2VsZXRvbi10eHQiPk91dGlscyBkJ2FjaGF0PC9zcGFuPgoJCQkJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSJtZW51RXhwYW5kIC1wIC0tcy0zIiBhcmlhLWxhYmVsPSJNZW51IGTDqXJvdWxhbnQiPgoJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tZG93biI+PC91c2U+PC9zdmc+CgkJCQkJPC9zcGFuPgoJCQkJCTwvYT4KCQkJCQkJCQkJCTxkaXYgY2xhc3M9InN1Ym1lbnVJdGVtQ29udGFpbmVyIiBzdHlsZT0iZGlzcGxheTpub25lOyI+CgkJCQkJCTxzdGFjay1sYyBpZD0iaXRlbV9UT09MUyIgY2xhc3M9Ii0tcy05Ij4KCQkJCQkJCQkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IENMSUNLVE9CVVkiIGhyZWY9Imh0dHBzOi8vcmVwZW50aWdueS5zaG9wLmh5dW5kYWljYW5hZGEuY29tLyIgdGFyZ2V0PSJfYmxhbmsiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+Q29tbWVuY2VyIHZvdHJlIGFjaGF0IGVuLWxpZ25lPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgQk5QIiBocmVmPSI\/cGF0aD0vY29uZmlndXJhdGlvbi1ldC1wcml4L2NvbmZpZ3VyYXRpb24uaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+Q29uZmlndXJhdGlvbiBldCBwcml4PC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgVEVTVERSViIgaHJlZj0iP3BhdGg9L2RlbWFuZGVzL2Vzc2Fpcy1yb3V0aWVyLW5ldWYuaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+UsOpc2VydmVyIHVuIGVzc2FpIHJvdXRpZXI8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBRVU9URSIgaHJlZj0iP3BhdGg9L2RlbWFuZGVzL3ByaXgtbmV1Zi5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5EZW1hbmRlciB1biBkZXZpczwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IFRSQURFSU4iIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgdGFyZ2V0PSIiIG9uY2xpY2s9ImphdmFzY3JpcHQ6dm9pZCgkKCcjVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyJykucG9wdXBpemUoKS5zZXRUcmlnZ2VyKCdjbGljaycpLm9wZW4oKSk7Ij4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5EZW1hbmRlIGRlIHZhbGV1ciBkJ8OpY2hhbmdlPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgQlJPQ0hVUkUiIGhyZWY9Ij9wYXRoPS9kZW1hbmRlcy9icm9jaHVyZXMuaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+QnJvY2h1cmVzPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgMzRkMDYzYTgtNDU3Yy01ZjM4LTcxODctYSIgaHJlZj0iP3BhdGg9L2RlbWFuZGUtY3JlZGl0Lmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPkRlbWFuZGUgZGUgQ3LDqWRpdDwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgoJCQkJCQk8L3N0YWNrLWxjPgoJCQkJCTwvZGl2PgoJCQkJPC9saT4KCgkJCQkKCQkJCTxsaSBjbGFzcz0iIj4KCQkJCQkKCQkJCQk8YSBjbGFzcz0iT0ZGRVJTICAgbWVudS1pdGVtIGZsZXgtYm94IiBocmVmPSI\/cGF0aD0vcHJvbW90aW9ucy5odG1sIiB0YXJnZXQ9Il90b3AiIG9uY2xpY2s9IiI+CgkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tdGFncyI+PC91c2U+PC9zdmc+CgkJCQkJCTxzcGFuIGNsYXNzPSJzaHJpbmstZ3JvdyBza2VsZXRvbi10eHQiIGRhdGEtbWVudS10cmFuc2xhdGU9Ik9GRkVSUyI+T2ZmcmVzIHNww6ljaWFsZXM8L3NwYW4+CgkJCQkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Im1lbnVFeHBhbmQgLXAgLS1zLTMiIGFyaWEtbGFiZWw9Ik1lbnUgZMOpcm91bGFudCI+CgkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1kb3duIj48L3VzZT48L3N2Zz4KCQkJCQk8L3NwYW4+CgkJCQkJPC9hPgoJCQkJCQkJCQkJPGRpdiBjbGFzcz0ic3VibWVudUl0ZW1Db250YWluZXIiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KCQkJCQkJPHN0YWNrLWxjIGlkPSJpdGVtX09GRkVSUyIgY2xhc3M9Ii0tcy05Ij4KCQkJCQkJCQkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IFBST01PX01BTlVGQUNUVVJFUiIgaHJlZj0iP3BhdGg9L3Byb21vdGlvbnMuaHRtbCNtYW51ZmFjdHVyZXIiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPkluY2l0YXRpZnMgSHl1bmRhaTwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IFBST01PX05FVyIgaHJlZj0iP3BhdGg9L3Byb21vdGlvbnMuaHRtbCNuZXciIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPk9mZnJlcyB2w6loaWN1bGVzIG5ldWZzPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgUFJPTU9fVVNFRCIgaHJlZj0iP3BhdGg9L3Byb21vdGlvbnMuaHRtbCN1c2VkIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5PZmZyZXMgdsOpaGljdWxlcyBkJ29jY2FzaW9uPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgUFJPTU9fU0VSVklDRSIgaHJlZj0iP3BhdGg9L3Byb21vdGlvbnMuaHRtbCNzZXJ2aWNlIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5Qcm9tb3Rpb25zIGRlIHNlcnZpY2U8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBQUk9NT19ERUFMRVIiIGhyZWY9Ij9wYXRoPS9wcm9tb3Rpb25zLmh0bWwjb3RoZXIiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPlByb21vdGlvbnMgY29uY2Vzc2lvbm5haXJlPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgYTMzYTllOTUtYzFkMS1kYzU2LWQ4NmItZSIgaHJlZj0iaHR0cHM6Ly93d3cuaHl1bmRhaXJlcGVudGlnbnkuY29tL3Byb2dyYW1tZS1ub3V2ZWF1eC1hcnJpdmFudHMuaHRtbCIgdGFyZ2V0PSJfYmxhbmsiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+UHJvZ3JhbW1lIG5vdXZlYXV4IGFycml2YW50czwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgoJCQkJCQk8L3N0YWNrLWxjPgoJCQkJCTwvZGl2PgoJCQkJPC9saT4KCgkJCQkKCQkJCTxsaSBjbGFzcz0iIj4KCQkJCQkKCQkJCQk8YSBjbGFzcz0iU0VSVklDRSAgIG1lbnUtaXRlbSBmbGV4LWJveCIgaHJlZj0iP3BhdGg9L3NlcnZpY2VzLWh5dW5kYWkuaHRtbCIgdGFyZ2V0PSJfdG9wIiBvbmNsaWNrPSIiPgoJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLXRvb2xzIj48L3VzZT48L3N2Zz4KCQkJCQkJPHNwYW4gY2xhc3M9InNocmluay1ncm93IHNrZWxldG9uLXR4dCI+U2VydmljZTwvc3Bhbj4KCQkJCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0ibWVudUV4cGFuZCAtcCAtLXMtMyIgYXJpYS1sYWJlbD0iTWVudSBkw6lyb3VsYW50Ij4KCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLWRvd24iPjwvdXNlPjwvc3ZnPgoJCQkJCTwvc3Bhbj4KCQkJCQk8L2E+CgkJCQkJCQkJCQk8ZGl2IGNsYXNzPSJzdWJtZW51SXRlbUNvbnRhaW5lciIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgoJCQkJCQk8c3RhY2stbGMgaWQ9Iml0ZW1fU0VSVklDRSIgY2xhc3M9Ii0tcy05Ij4KCQkJCQkJCQkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IEFQUE9JTlRNRU5UIiBocmVmPSJodHRwczovL3NlcnZpY2UuY29ubmVjdGNkay5jb20\/Y2lkPTI1MDIxNzIiIHRhcmdldD0iX2JsYW5rIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPlByZW5kcmUgcmVuZGV6LXZvdXM8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBHUF9kODI2Nzk5ODYzZWVlNjM2IiBocmVmPSI\/cGF0aD0vbG9jYWxpc2F0ZXVyLWRlLXBuZXVzLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPkxvY2FsaXNhdGV1ciBkZSBwbmV1czwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IEdQX2Q0YjE2NGJiMmJiZDI2ZWIiIGhyZWY9Ij9wYXRoPS9lbnRyZXRpZW5zLXJlY29tbWFuZGVzLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPkNhbGVuZHJpZXJzIGQnZW50cmV0aWVuPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgNWFhM2NmMWMtNGIzYS01ODg2LWIxMTUtNiIgaHJlZj0iaHR0cHM6Ly9waWVjZXMuaHl1bmRhaXJlcGVudGlnbnkuY29tIiB0YXJnZXQ9Il9ibGFuayIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5NYWdhc2luZXogdm9zIHBpw6hjZXMgJmFtcDsgYWNjZXNzb2lyZXM8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSBjYmM0N2MzZC1iYjdjLTVkODEtYjEwMi04IiBocmVmPSI\/cGF0aD0vcHJvZ3JhbW1lLWVudHJldGllbi5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5Qcm9ncmFtbWUgZW50cmV0aWVuPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgR1BfYmMyZjQ3NWRhZTE2MzhmIiBocmVmPSI\/cGF0aD0vYXNzaXN0YW5jZS1yb3V0aWVyZS1oeXVuZGFpLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPkFzc2lzdGFuY2UgUm91dGnDqHJlPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgR1BfMWNmZDQzMGIxOTk3NWU3MSIgaHJlZj0iP3BhdGg9L2dhcmFudGllLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPkdhcmFudGllIGV0IHByb3RlY3Rpb25zIHByb2xvbmfDqWVzPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgU1ZfUFJPTU8iIGhyZWY9Ij9wYXRoPS9wcm9tb3Rpb25zLmh0bWwjc2VydmljZSIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+UHJvbW90aW9ucyBkZSBzZXJ2aWNlPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgR1BfYjNhZTVhNWNiZDQ3ZTJjZiIgaHJlZj0iaHR0cHM6Ly93d3cuaHl1bmRhaWNhbmFkYS5jb20vZnIvb3duZXJzLXNlY3Rpb24vcmVjYWxscyIgdGFyZ2V0PSJfYmxhbmsiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+VsOpcmlmaWNhdGlvbiBkZSByYXBwZWwgSHl1bmRhaTwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgoJCQkJCQk8L3N0YWNrLWxjPgoJCQkJCTwvZGl2PgoJCQkJPC9saT4KCgkJCQkKCQkJCTxsaSBjbGFzcz0iIj4KCQkJCQkKCQkJCQk8YSBjbGFzcz0iRklOQU5DRSAgIG1lbnUtaXRlbSBmbGV4LWJveCIgaHJlZj0iP3BhdGg9L2RlbWFuZGVzL2ZpbmFuY2VtZW50Lmh0bWwiIHRhcmdldD0iX3RvcCIgb25jbGljaz0iIj4KCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1oYW5kLWhvbGRpbmctdXNkIj48L3VzZT48L3N2Zz4KCQkJCQkJPHNwYW4gY2xhc3M9InNocmluay1ncm93IHNrZWxldG9uLXR4dCI+RmluYW5jZW1lbnQgLyBMb2NhdGlvbjwvc3Bhbj4KCQkJCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0ibWVudUV4cGFuZCAtcCAtLXMtMyIgYXJpYS1sYWJlbD0iTWVudSBkw6lyb3VsYW50Ij4KCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLWRvd24iPjwvdXNlPjwvc3ZnPgoJCQkJCTwvc3Bhbj4KCQkJCQk8L2E+CgkJCQkJCQkJCQk8ZGl2IGNsYXNzPSJzdWJtZW51SXRlbUNvbnRhaW5lciIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgoJCQkJCQk8c3RhY2stbGMgaWQ9Iml0ZW1fRklOQU5DRSIgY2xhc3M9Ii0tcy05Ij4KCQkJCQkJCQkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IENSRURJVCIgaHJlZj0iP3BhdGg9L2RlbWFuZGVzL2ZpbmFuY2VtZW50Lmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPkRlbWFuZGUgZGUgY3LDqWRpdDwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IFBBWV9FU1QiIGhyZWY9Ij9wYXRoPS9pbnZlbnRhaXJlL2NhbGN1bGF0cmljZS1wcmV0LWF1dG8uaHRtbCIgdGFyZ2V0PSIiIG9uY2xpY2s9IiI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1waCI+Q2FsY3VsYXRldXIgZGUgcGFpZW1lbnRzPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CgkJCQkJCTwvc3RhY2stbGM+CgkJCQkJPC9kaXY+CgkJCQk8L2xpPgoKCQkJCQoJCQkJPGxpIGNsYXNzPSIiPgoJCQkJCQoJCQkJCTxhIGNsYXNzPSJURUFNICAgbWVudS1pdGVtIGZsZXgtYm94IiBocmVmPSI\/cGF0aD0vY29udGFjdGV6bm91cy5odG1sIiB0YXJnZXQ9Il90b3AiIG9uY2xpY2s9IiI+CgkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tdXNlci1mcmllbmRzIj48L3VzZT48L3N2Zz4KCQkJCQkJPHNwYW4gY2xhc3M9InNocmluay1ncm93IHNrZWxldG9uLXR4dCI+UXVpIHNvbW1lcy1ub3VzPzwvc3Bhbj4KCQkJCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0ibWVudUV4cGFuZCAtcCAtLXMtMyIgYXJpYS1sYWJlbD0iTWVudSBkw6lyb3VsYW50Ij4KCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLWRvd24iPjwvdXNlPjwvc3ZnPgoJCQkJCTwvc3Bhbj4KCQkJCQk8L2E+CgkJCQkJCQkJCQk8ZGl2IGNsYXNzPSJzdWJtZW51SXRlbUNvbnRhaW5lciIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgoJCQkJCQk8c3RhY2stbGMgaWQ9Iml0ZW1fVEVBTSIgY2xhc3M9Ii0tcy05Ij4KCQkJCQkJCQkJCQkJCTxzcGFuIGNsYXNzPSItbTAiPgoJCQkJCQkJPGEgY2xhc3M9InN1Ym1lbnUtaXRlbSBmbGV4LWJveCBmbGV4LWJldHdlZW4gLWJ0IC0tcy01IENPTlRBQ1QiIGhyZWY9Ij9wYXRoPS9jb250YWN0ZXpub3VzLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPkNvbnRhY3Rlei1ub3VzPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgTkVXUyIgaHJlZj0iP3BhdGg9L25vdXZlbGxlcy5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5Ob3V2ZWxsZXMgZXQgw6l2w6luZW1lbnRzPC9zcGFuPgoJCQkJCQkJCTxzcGFuIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiIGNsYXNzPSItcCAtLXMtNSI+CgkJCQkJCQkJCQkJCTxzdmcgY2xhc3M9Imljb24iPjx1c2UgeGxpbms6aHJlZj0iI2ljb24tY2hldnJvbi1yaWdodCI+PC91c2U+PC9zdmc+CgkJCQkJCQkJPC9zcGFuPgoJCQkJCQkJPC9hPgoJCQkJCQk8L3NwYW4+CQkJCQkJPHNwYW4gY2xhc3M9Ii1tMCI+CgkJCQkJCQk8YSBjbGFzcz0ic3VibWVudS1pdGVtIGZsZXgtYm94IGZsZXgtYmV0d2VlbiAtYnQgLS1zLTUgMWFjZjNhMzktNzRjNi02YTRiLTJmY2MtMSIgaHJlZj0iP3BhdGg9L2Jsb2d1ZS5odG1sIiB0YXJnZXQ9IiIgb25jbGljaz0iIj4KCQkJCQkJCQk8c3BhbiBjbGFzcz0iLXBoIj5CbG9ndWU8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSAxMzcwZTRiLWY3NzMtY2M2Ni0xMjAzLWM3IiBocmVmPSI\/cGF0aD0vY2Fwc3VsZXMtdmlkZW9zLmh0bWwiIHRhcmdldD0iIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPkNhcHN1bGVzIFZpZMOpb3M8L3NwYW4+CgkJCQkJCQkJPHNwYW4gcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgY2xhc3M9Ii1wIC0tcy01Ij4KCQkJCQkJCQkJCQkJPHN2ZyBjbGFzcz0iaWNvbiI+PHVzZSB4bGluazpocmVmPSIjaWNvbi1jaGV2cm9uLXJpZ2h0Ij48L3VzZT48L3N2Zz4KCQkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8L2E+CgkJCQkJCTwvc3Bhbj4JCQkJCQk8c3BhbiBjbGFzcz0iLW0wIj4KCQkJCQkJCTxhIGNsYXNzPSJzdWJtZW51LWl0ZW0gZmxleC1ib3ggZmxleC1iZXR3ZWVuIC1idCAtLXMtNSAxMmM5NjQ5Yi02YmIwLWZmZjctNTY2OS05IiBocmVmPSJodHRwczovL3d3dy5oeXVuZGFpcmVwZW50aWdueS5jb20vZmFxLWZyLmh0bWwiIHRhcmdldD0iX2JsYW5rIiBvbmNsaWNrPSIiPgoJCQkJCQkJCTxzcGFuIGNsYXNzPSItcGgiPkZBUTwvc3Bhbj4KCQkJCQkJCQk8c3BhbiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBjbGFzcz0iLXAgLS1zLTUiPgoJCQkJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWNoZXZyb24tcmlnaHQiPjwvdXNlPjwvc3ZnPgoJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCTwvYT4KCQkJCQkJPC9zcGFuPgoJCQkJCQk8L3N0YWNrLWxjPgoJCQkJCTwvZGl2PgoJCQkJPC9saT4KCgkJCQkKCQkJCTxsaSBjbGFzcz0ibWVudS1ncm91cCI+CgkJCQkJCgkJCQkJPGEgY2xhc3M9IkxBTkdVQUdFICAtYm9sZCAgbWVudS1pdGVtIGZsZXgtYm94IiBocmVmPSI\/cGF0aD0vZW5nLyIgdGFyZ2V0PSJfdG9wIiBvbmNsaWNrPSIiPgoJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLWdsb2JlIj48L3VzZT48L3N2Zz4KCQkJCQkJPHNwYW4gY2xhc3M9InNocmluay1ncm93IHNrZWxldG9uLXR4dCI+RW5nbGlzaDwvc3Bhbj4KCQkJCQkJCgkJCQkJPC9hPgoJCQkJCQoJCQkJPC9saT4KCgkJCQkKCQkJCTxsaSBjbGFzcz0ibWVudS1ncm91cCI+CgkJCQkJCgkJCQkJPGEgY2xhc3M9Ik5FV1MgICBtZW51LWl0ZW0gZmxleC1ib3giIGhyZWY9Ij9wYXRoPS9ub3V2ZWxsZXMuaHRtbCIgdGFyZ2V0PSJfdG9wIiBvbmNsaWNrPSIiPgoJCQkJCQkJCQk8c3ZnIGNsYXNzPSJpY29uIj48dXNlIHhsaW5rOmhyZWY9IiNpY29uLW5ld3NwYXBlciI+PC91c2U+PC9zdmc+CgkJCQkJCTxzcGFuIGNsYXNzPSJzaHJpbmstZ3JvdyBza2VsZXRvbi10eHQiPk5vdXZlbGxlczwvc3Bhbj4KCQkJCQkJCgkJCQkJPC9hPgoJCQkJCQoJCQkJPC9saT4KCgkJCQkKCgkJCQk8L3VsPgoJCQk8L25hdj4KCQkJCTwvYXNpZGU+CgkJCTwvYm94LWxjPgoKCgkJCTxzdGFjay1sYyBjbGFzcz0ibG9nby1hY3Rpb24gc2hyaW5rLWdyb3cgYWxpZ24tY2VudGVyIGZsZXgtZXZlbmx5Ij4KCQkJCTxhIGNsYXNzPSJsb2dvIiBocmVmPSI\/cGF0aD0vIiBpdGVtcHJvcD0idXJsIj4KCQkJCQk8aW1nIGFsdD0iTG9nbyIgY2xhc3M9ImxpdmVsb2FkIG9wdGFub24tY2F0ZWdvcnktQzAwMDEiIGRhdGEtc2NvZGVyZWY9IjUxOTc4LVQiIHNyYz0iaHR0cHM6Ly9oeXVuZGFpcmVwZW50aWdueS5jb20vL2ltYWdlcy9Mb2dvTW9iaWxlL2h5dW5kYWktbW9iaWxlLWxvZ28tcmdiLWZyLnBuZyIgc3R5bGU9IndpZHRoOiA5OHB4OyBoZWlnaHQ6IDMwcHg7IiBkYXRhLW90LWlnbm9yZSBkYXRhLWNvb2tpZWNvbnNlbnQ9Imlnbm9yZSI+CgkJCQk8L2E+CgkJCQkJCQk8c3BhbiBjbGFzcz0iaGVhZGVyLWRlYWxlci1uYW1lIC1tMCI+CgkJCQlIeXVuZGFpIFJlcGVudGlnbnkKCQkJPC9zcGFuPgoJCQk8L3N0YWNrLWxjPgoKCQkJPGEgY2xhc3M9InBob25lLWFjdGlvbiIgdGl0bGU9IkNvbnRhY3Rlei1ub3VzIiBkYXRhLWRlcGFydG1lbnQ9IlNhbGVzIiBocmVmPSI\/cGF0aD10ZWw6NDUwJTIwNTgyLTMxODIiPgoJCQkJPHN2ZyBjbGFzcz0iIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdib3g9IjAgMCA1MTIgNTEyIj48IS0tIEZvbnQgQXdlc29tZSBGcmVlIDUuMTUuMSBieSBAZm9udGF3ZXNvbWUgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbSBMaWNlbnNlIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20vbGljZW5zZS9mcmVlIChJY29uczogQ0MgQlkgNC4wLCBGb250czogU0lMIE9GTCAxLjEsIENvZGU6IE1JVCBMaWNlbnNlKSAtLT48cGF0aCBkPSJNNDk3LjM5IDM2MS44bC0xMTItNDhhMjQgMjQgMCAwIDAtMjggNi45bC00OS42IDYwLjZBMzcwLjY2IDM3MC42NiAwIDAgMSAxMzAuNiAyMDQuMTFsNjAuNi00OS42YTIzLjk0IDIzLjk0IDAgMCAwIDYuOS0yOGwtNDgtMTEyQTI0LjE2IDI0LjE2IDAgMCAwIDEyMi42LjYxbC0xMDQgMjRBMjQgMjQgMCAwIDAgMCA0OGMwIDI1Ni41IDIwNy45IDQ2NCA0NjQgNDY0YTI0IDI0IDAgMCAwIDIzLjQtMTguNmwyNC0xMDRhMjQuMjkgMjQuMjkgMCAwIDAtMTQuMDEtMjcuNnoiPjwvcGF0aD48L3N2Zz4KCQkJCQoJCQk8L2E+CgoJCQk8L2hlYWRlcj4JCgkJCQoJCQkKCgkJCTxkaXYgaWQ9InBob25lTnVtYmVyRGl2IiBjbGFzcz0icmV2ZWFsLW1vZGFsIiBzdHlsZT0id2lkdGg6ODAlO21hcmdpbi1sZWZ0OjBweDtsZWZ0OjUlO3BhZGRpbmc6NSU7ei1pbmRleDogOTk5OTk5OTt2aXNpYmlsaXR5OmhpZGRlbjt0b3A6IC0xMDAwcHg7cG9zaXRpb246IGFic29sdXRlOyI+PC9kaXY+CgoJCQkKCQkJCgkJCTwhLS0gT086OmRmMzNlMmViNmI5NTA3ODBjMTBiNzUzNmIxMzc0MDA2IC0tPgoJCQk8IS0tZW5kIHRvcCAtLT4KCgogICAgICAgPGRpdiBjbGFzcz0ic2VhcmNoYm94Ij4KICAgICAgICAgICAgICAgPGRpdiBpZD0ibmV3Y2FyQ29udGFpbmVyIiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIgTWFpbkJveExheWVyIj4KICAgICAgICA8IS0tIElOSVRJQUwgTE9DQVRJT05CQVIgLS0+CiAgICAgICAgPGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIgT3V0ZXJCb3hMYXllciI+CiAgICAgICAgCTxkaXYgY2xhc3M9ImhlYWRlckltZyI+PGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IjEiIGlkPSJ0cmFkZUluQmFyU3RpY2t5Qm90dG9tIj4KPCEtLVNUQVJUX1JFTU9WQUJMRV9DT0RFX0JMT0NLX0NPTU1FTlRfMDAwMS0tPgoKCQkJCQk8ZGl2IGlkPSJ0cmFkZUluQmFyTW9iaWxlIiBjbGFzcz0iYm94LWxjIC1jbGVhciI+CiAgICAgICAgICAgIAkJPGRpdiBpZD0idHJhZGVJbkJhcldNb2JpbGUiIGNsYXNzPSJmbGV4LWJveCBmbGV4LWVxdWFsIj4KCQkJCQk8dGFibGUgY2xhc3M9Im1pZGRsZSIgaWQ9ImRlZmF1bHRUb3BCYW5uZXIiPgoJCQkJCTx0Ym9keT4KCQkJCQkJPHRyPgoJCQkJCQk8dGQgaWQ9ImRlZmF1bHRUb3BCYW5uZXJXcmFwIj4KCQkJCQkJCTxkaXYgaWQ9ImRlZmF1bHRUb3BCYW5uZXJUaXRsZSI+PHA+RMOpY291dnJleiBsYSB2YWxldXIgZGUgdm90cmUgw6ljaGFuZ2U8L3A+PC9kaXY+CgkJCQkJCQk8ZGl2IGNsYXNzPSJkZWZhdWx0VG9wQmFubmVyQnRuV3JhcHBlciI+CgkJCQkJCQkJPGRpdj48YSBkYXRhLXBvcHVwaWQ9IlRyYWRlSW5CYXJQb3B1cENvbnRhaW5lciI+UkVDRVZFWiBVTiBFU1RJTcOJIEdSQVRVSVQhPC9hPjwvZGl2PgoJCQkJCQkJPC9kaXY+CgkJCQkJCQk8ZGl2IGlkPSJkZWZhdWx0VG9wQmFubmVyTG9nbyI+CgkJCQkJCQkJPHA+PHNwYW4+UHJvcHVsc8OpIHBhcjwvc3Bhbj4gQ2FuYWRpYW4gQmxhY2sgQm9vazwvcD4KCQkJCQkJCTwvZGl2PgoJCQkJCQk8L3RkPgoJCQkJCQk8L3RyPgoJCQkJCTwvdGJvZHk+CgkJCQkJPC90YWJsZT4KCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj48Ym94LWxjIGlkPSJ0cmFkZUluQmFyTW9iaWxlQnV0dG9uIiBjbGFzcz0idHJhZGVJbkJhck1vYmlsZUJ1dHRvbiAtLWZzMCIgc3R5bGU9ImRpc3BsYXk6ZmxleDt3aWR0aDoxNDBweCFpbXBvcnRhbnQ7Ij48aSBjbGFzcz0iZmEgZmEtc3luYyBmYS1zcGluIj48L2k+PGEgc3R5bGU9InRleHQtYWxpZ246IGxlZnQ7d2lkdGg6IDEwMCU7ZmxvYXQ6IGxlZnQ7dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtmb250LXNpemU6IC45cmVtO3BhZGRpbmctbGVmdDogNXB4O3dpZHRoOjEwMCU7IiBkYXRhLXBvcHVwaWQ9IlRyYWRlSW5CYXJQb3B1cENvbnRhaW5lciI+w4l2YWx1ZXogdm90cmU8cCBzdHlsZT0iZm9udC1zaXplOiAxcmVtO2ZvbnQtd2VpZ2h0OiBib2xkOyI+w4lDSEFOR0UhPC9wPjwvYT48L2JveC1sYz4JCQoJCTxkaXYgaWQ9IlRyYWRlSW5CYXJQb3B1cENvbnRhaW5lciIgY2xhc3M9InJldmVhbC1tb2RhbCAiIHN0eWxlPSJ3aWR0aDozMDBweDtoZWlnaHQ6OTYwcHg7IiBkYXRhLWxhenlsb2FkaWQ9Im5ld2NhcnNfdHJhZGVpbmJhcnBvcHVwY29udGFpbmVyIj4KCQkJCgkJPC9kaXY+CgoJCTwhLS0gT086OjUwZTBhNGM3NTc5MTViYTA1ZjYzZDBiNTI4NmFmYjk3IC0tPgoKCQkKCiAgICA8ZGl2IGlkPSJlbWFpbFN1Y2Nlc3NNZXNzYWdlX1RyYWRlSW5CYXJQb3B1cENvbnRhaW5lciIgY2xhc3M9InJldmVhbC1tb2RhbCBlbWFpbC1jb25zZW50LWJveCIgc3R5bGU9IndpZHRoOjYwJTsiPgogICAgICA8ZGl2IGNsYXNzPSJpY29uLXRpdGxlIj4KICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPSJ0aXRsZS1pY29uIHN1Y2Nlc3MgLW1sMCI+PC9zcGFuPiAtLT4KICAgICAgICA8c3BhbiBjbGFzcz0idGl0bGUtdHh0Ij5Wb3RyZSBkZW1hbmRlIGEgYmllbiDDqXTDqSBlbnZvecOpZSE8L3NwYW4+CiAgICAgIDwvZGl2PgogICAgICA8cCBjbGFzcz0iZGVmYXVsdFN1Y2Nlc3MiPjxicj5IeXVuZGFpIFJlcGVudGlnbnkgdm91cyByZW1lcmNpZSBkJ2F2b2lyIGNvbW11bmlxdcOpIHZvdHJlIGRlbWFuZGUuIFVuIGNvbnNlaWxsZXIgY29tbXVuaXF1ZXJhIGF2ZWMgdm91cyBzb3VzIHBldS48L3A+CiAgICAgIDxwIGNsYXNzPSJzZXJ2aWNlU3VjY2VzcyIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPjxicj5NZXJjaSBwb3VyIHZvdHJlIGRlbWFuZGUuIFVuIG1lbWJyZSBkZSBub3RyZSDDqXF1aXBlIGNvbW11bmlxdWVyYSBhdmVjIHZvdXMgc291cyBwZXUuPC9wPgogICAgICA8IS0tIDxhIGNsYXNzPSJjbG9zZS1yZXZlYWwtbW9kYWwiPiYjMjE1OzwvYT4gLS0+CiAgICAgIDxkaXYgY2xhc3M9ImVtYWlsLWNvbnNlbnQtYnRucyAtcHQyMCAtcmlnaHQgYW1wQ29uc2VudFJlc3BvbnNlU2VuZERpc21pc3MiPgogICAgICAgIDxhIGhyZWY9Ij9wYXRoPSMiIGNsYXNzPSIgLXVwcGVyY2FzZSBidG4tZGVmYXVsdCAiIG9uY2xpY2s9IiQoJy5jbG9zZS1yZXZlYWwtbW9kYWw6dmlzaWJsZScpLnRyaWdnZXIoJ2NsaWNrJyk7cmV0dXJuIGZhbHNlOyI+RmVybWVyPC9hPgogICAgICA8L2Rpdj4KICAgICAgPGZvcm0gaWQ9ImVtYWlsbXNnZnJtX1RyYWRlSW5CYXJQb3B1cENvbnRhaW5lciIgY2xhc3M9ImNvbmZpcm1faHRtbCIgdGFyZ2V0PSJpZnJhbWUiIG1ldGhvZD0icG9zdCIgYWN0aW9uPSIvY29uZmlybWF0aW9uLmh0bWwiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJsYWJlbCIgY2xhc3M9ImxhYmVsZW1haWwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzZWN0aW9uIiBjbGFzcz0ibGFiZWxzZWN0aW9uIiB2YWx1ZT0iT2NjYXNpb24iPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJicmFuZCIgY2xhc3M9ImJyYW5kZW1haWwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJtb2RlbCIgY2xhc3M9Im1vZGVsZW1haWwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ5ZWFyIiBjbGFzcz0ieWVhcmVtYWlsIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZ29vZ2xlaWQiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJnb29nbGVpZGQyY21lZGlhIiB2YWx1ZT0iIj4KCQkJCQkJICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhZHdvcmRzY29uaWQiIHZhbHVlPSI5NDgxNjg5NTUiPgoJCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWR3b3Jkc2xhYmVsaWQiIHZhbHVlPSJDc3ZkQ0xlQmxGNFEtOUdQeEFNIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYmluZ2NvbmlkIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYmluZ2FjdGlvbmlkIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYmluZ2RvbWFpbmlkIiB2YWx1ZT0iIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFkcm9sbEFkdiIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFkcm9sbFBpeCIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmYWNlYm9va0NvbklkIiB2YWx1ZT0iMjA2ODI4NDEzMDk2NzgwIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRvbWFpbiIgdmFsdWU9Imh5dW5kYWlyZXBlbnRpZ255LmNvbSI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InJlZmVycmVyIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZGVwYXJ0bWVudCIgdmFsdWU9Ik5FVyI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImxlYWRfZGVwYXJ0bWVudCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzZXhwcmVzcyIgY2xhc3M9ImlzZXhwcmVzcyIgdmFsdWU9IjAiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc3Byb21vIiB2YWx1ZT0iMCI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzaG9tZXBhZ2UiIHZhbHVlPSIwIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idGVzdG1vZGUiIGNsYXNzPSJ0ZXN0bW9kZSIgdmFsdWU9IjAiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibGVhZFR5cGUiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJwYWdlSUQiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjdXJyZW50VVJMIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNDb25maXJtUG9wdXAiIHZhbHVlPSIiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY29uZmlybV9lbWFpbCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNvbmZpcm1fZmlyc3RfbmFtZSIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNvbmZpcm1fbGFzdF9uYW1lIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY29uZmlybV9waG9uZV9udW1iZXIiIHZhbHVlPSIiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNGdWxsV2lkdGgiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkZWFsZXJOYW1lIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYnV0dG9uUG9zaXRpb24iIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc01vYmlsZU5ld1ZEUCIgdmFsdWU9IjEiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmcm9tQXV0b0F1YmFpbmUiIHZhbHVlPSIiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9Ik5FVyIgbmFtZT0idGV4dENhclNlY3Rpb25UeXBlIiBzdHlsZT0iZGlzcGxheTpub25lOyI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImxhbmciIHZhbHVlPSJmciI+CiAgICAgIDwvZm9ybT4KICAgICAgPGlmcmFtZSB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBuYW1lPSJpZnJhbWUiIGZyYW1lYm9yZGVyPSIwIiBzdHlsZT0id2lkdGg6MXB4O2hlaWdodDoxcHg7Ij48L2lmcmFtZT4KICAgIDwvZGl2PgoKICAgIDxkaXYgaWQ9ImVtYWlsRmFpbE1lc3NhZ2VfVHJhZGVJbkJhclBvcHVwQ29udGFpbmVyIiBjbGFzcz0icmV2ZWFsLW1vZGFsIGVtYWlsLWNvbnNlbnQtYm94IiBzdHlsZT0id2lkdGg6NjAlOyI+CiAgICAgIDxzcGFuIGNsYXNzPSJmYWlsIj5VbmUgZXJyZXVyIHMnZXN0IHByb2R1aXRlPC9zcGFuPgogICAgICA8cD5Ob3VzIG4nYXZvbnMgcGFzIHB1IGVudm95ZXIgdm90cmUgbWVzc2FnZS4gUydpbCB2b3VzIHBsYcOudCByYWZyYcOuY2hpciBldCBlc3NheWV6IMOgIG5vdXZlYXU8L3A+CiAgICAgIDxkaXYgY2xhc3M9ImNsb3NlLXJldmVhbC1tb2RhbCI+PGVtIGNsYXNzPSJmYSBmYS10aW1lcy1jaXJjbGUiPjwvZW0+PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9Ii1wdDIwIC1yaWdodCBhbXBDb25zZW50UmVzcG9uc2VTZW5kRGlzbWlzcyI+CiAgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgY2xhc3M9IiAtdXBwZXJjYXNlIGJ0bi1kZWZhdWx0ICIgb25jbGljaz0iJCgnI2VtYWlsRmFpbE1lc3NhZ2UnKS50cmlnZ2VyKCdyZXZlYWw6Y2xvc2UnKTsiIHZhbHVlPSJGZXJtZXIiPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKCgkJCQk8IS0tIE9POjplMjVkNmNmYWIzOTI3ZDc4ZDllMmY1YTJlMzQ3NjAxNiAtLT4KCQkKDTwhLS0gVFJBREUgSU4gQkFSIE5FV0NBUlMgLS0+Cg0KPCEtLUVORF9SRU1PVkFCTEVfQ09ERV9CTE9DS19DT01NRU5UXzAwMDEtLT4KCTxkaXYgaWQ9InRvcEJhbm5lckltYWdlIiBjbGFzcz0iTkVXQ0FSUy1jbGVhciBmbGV4LWNvbHVtbiBmbGV4LWNlbnRlciBhbGlnbi1jZW50ZXIiIHN0eWxlPSJhc3BlY3QtcmF0aW86MTAwLzI3Ljc3Nzc2O21hcmdpbi1ib3R0b206MTBweCAhaW1wb3J0YW50OyIgZGF0YS1pbnZjYXQ9ImFsbCI+CgkJCTxpbWcgY2xhc3M9ImxpdmVsb2FkICBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLWNvb2tpZWNvbnNlbnQ9Imlnbm9yZSIgZGF0YS1vdC1pZ25vcmU9IiIgZmV0Y2hwcmlvcml0eT0iaGlnaCIgc3JjPSJodHRwczovL2h5dW5kYWlyZXBlbnRpZ255LmNvbS8vaW1hZ2VzL05ld0NhclBhZ2VJbWFnZUR5bi9NQkFOX0hZVU5EQUklMjBfRUxBTlRSQV9GUiUyMF8xMjUwLmpwZyIgYWx0PSIgbSBiIGEgbiAgaCB5IHUgbiBkIGEgaSAgIGUgbCBhIG4gdCByIGEgIGYgciAgMTI1MCI+Cgk8L2Rpdj4KCQo8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGlkPSJ1bmRlckJhbm5lciI+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIgT3V0ZXJCb3hMYXllciI+CiAgICAgICAgCTxkaXYgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEyIj4KICAgICAgICAJCTxkaXYgY2xhc3M9IklubmVyQm94TGF5ZXIiPjxoMSBjbGFzcz0iZGVmYXVsdCBIMV8xNjk0ICI+PGRpdj48ZGl2Pkh5dW5kYWkgbmV1dmVzIDIwMjUgJmFtcDsgMjAyNiDDoCB2ZW5kcmXCoDwvZGl2PjxkaXY+w6AgUmVwZW50aWdueSAoZW50cmUgTWFzY291Y2hlIGV0IE1vbnRyw6lhbCnCoDwvZGl2PjwvZGl2PjwvaDE+PC9kaXY+PGRpdiBjbGFzcz0iSW5uZXJCb3hMYXllciI+PC9kaXY+CQkJCQk8IS0tIE9QRU4gTU9CSUxFIEZJTFRFUiBCVVRUT04gKCcuX19MSU5FX18uJyktLT4KCTxkaXYgY2xhc3M9ImZpbHRlclRvZ2dsZVdyYXBwZXIiPgoJCTxidXR0b24gaWQ9InRvZ2dsZUZpbHRlckJ0biIgY2xhc3M9ImZpbHRlclRvZ2dsZUJ0biI+RmlsdHJlcjwvYnV0dG9uPgoJPC9kaXY+Cgk8IS0tIENMT1NFIE1PQklMRSBGSUxURVIgQlVUVE9OICgnLl9fTElORV9fLicpLS0+CgkJCQk8ZGl2IGlkPSJzaWRlU2lkZWJhckZpbHRlciIgY2xhc3M9InNpZGVTaWRlYmFyIj4KCQkJCQk8ZGl2IGNsYXNzPSJzaWRlYmFySGVhZGVyIj4KCQkJCQkJPGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIgZGl2RmlsdGVyQm94VGl0bGUiPgoJCQkJCQkJUmFmZmluZXogdm90cmUgcmVjaGVyY2hlIDoKCQkJCQkJPC9kaXY+CgkJCQkJCTxidXR0b24gaWQ9ImNsb3NlU2lkZWJhckJ0biIgY2xhc3M9ImNsb3NlQnRuIj7DlzwvYnV0dG9uPgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgaWQ9ImZpbHRlckNvbnRlbnQiPgoJCQkJCQk8ZGl2IGlkPSJmaWx0ZXJNYWluQm94IiBjbGFzcz0iSW5uZXJCb3hMYXllciBibGFjay10ZXh0Ij4KCQkJCQkJCTxkaXYgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEyIj4KCQkJCQkJCQk8ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiBkaXZGaWx0ZXJPdXRlckJveCI+CgkJCQkJCQkJCTxkaXYgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEyIj4KCQkJCQkJCQkJCTxkaXYgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEyIj4KCQkJCQkJCQkJCQk8ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiI+PGRpdiBjbGFzcz0iZGl2RmlsdGVyVGl0bGUiPlR5cGUgZGUgY2Fycm9zc2VyaWU8L2Rpdj48dWwgY2xhc3M9IiI+PGxpIGNsYXNzPSIiPjxpbnB1dCBjbGFzcz0iZmlsdGVyQ2hlY2sgY2F0ZWdvcnkiIGlkPSJzaG93Q2xhc3NfY2FyIiB0eXBlPSJjaGVja2JveCIgdmFsdWU9ImNhciIgY2hlY2tlZD48bGFiZWwgY2xhc3M9ImZpbHRlclNwYW4gY2F0ZWdvcnkiIGZvcj0ic2hvd0NsYXNzX2NhciI+QXV0bzwvbGFiZWw+PC9saT48bGkgY2xhc3M9IiI+PGlucHV0IGNsYXNzPSJmaWx0ZXJDaGVjayBjYXRlZ29yeSIgaWQ9InNob3dDbGFzc190cnVjayIgdHlwZT0iY2hlY2tib3giIHZhbHVlPSJ0cnVjayIgY2hlY2tlZD48bGFiZWwgY2xhc3M9ImZpbHRlclNwYW4gY2F0ZWdvcnkiIGZvcj0ic2hvd0NsYXNzX3RydWNrIj5DYW1pb248L2xhYmVsPjwvbGk+PGxpIGNsYXNzPSIiPjxpbnB1dCBjbGFzcz0iZmlsdGVyQ2hlY2sgY2F0ZWdvcnkiIGlkPSJzaG93Q2xhc3Nfc3V2IiB0eXBlPSJjaGVja2JveCIgdmFsdWU9InN1diIgY2hlY2tlZD48bGFiZWwgY2xhc3M9ImZpbHRlclNwYW4gY2F0ZWdvcnkiIGZvcj0ic2hvd0NsYXNzX3N1diI+VlVTPC9sYWJlbD48L2xpPjwvdWw+PC9kaXY+PGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIiPjwvZGl2PjxkaXYgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEyIj48ZGl2IGNsYXNzPSJkaXZGaWx0ZXJUaXRsZSI+TW90cmljaXTDqTwvZGl2Pjx1bCBjbGFzcz0iIj48bGkgY2xhc3M9IiI+PGlucHV0IGlkPSJmaWx0ZXJEcml2ZVRyYWluQ2hlY2sxIiBjbGFzcz0iZmlsdGVyQ2hlY2sgZHJpdmV0cmFpbiIgdHlwZT0iY2hlY2tib3giIHZhbHVlPSIxIiBkYXRhLWRyaXZldHJhaW49IkZXRCIgY2hlY2tlZD48bGFiZWwgZm9yPSJmaWx0ZXJEcml2ZVRyYWluQ2hlY2sxIiBjbGFzcz0iZmlsdGVyU3BhbiI+VHJhY3Rpb24gYXZhbnQ8L2xhYmVsPjwvbGk+PGxpIGNsYXNzPSIiPjxpbnB1dCBpZD0iZmlsdGVyRHJpdmVUcmFpbkNoZWNrMiIgY2xhc3M9ImZpbHRlckNoZWNrIGRyaXZldHJhaW4iIHR5cGU9ImNoZWNrYm94IiB2YWx1ZT0iMiIgZGF0YS1kcml2ZXRyYWluPSJSV0QiIGNoZWNrZWQ+PGxhYmVsIGZvcj0iZmlsdGVyRHJpdmVUcmFpbkNoZWNrMiIgY2xhc3M9ImZpbHRlclNwYW4iPlByb3B1bHNpb24gYXJyacOocmU8L2xhYmVsPjwvbGk+PC91bD48L2Rpdj48ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiI+PGRpdiBjbGFzcz0iZGl2RmlsdGVyVGl0bGUiPlR5cGUgZGUgY2FyYnVyYW50PC9kaXY+PHVsIGNsYXNzPSIiPgk8bGkgY2xhc3M9IiI+CgkJPGlucHV0IGRhdGEtZXNzZW5jZT0iZWxlY3RyaWMiIGNsYXNzPSJmaWx0ZXJDaGVjayBmdWVsdHlwZSIgaWQ9ImZpbHRlckVzc2VuY2VDaGVjazMiIHR5cGU9ImNoZWNrYm94IiB2YWx1ZT0iMyIgY2hlY2tlZD4KCQk8bGFiZWwgZm9yPSJmaWx0ZXJFc3NlbmNlQ2hlY2szIiBjbGFzcz0iZmlsdGVyU3BhbiI+CgkJCcOJbGVjdHJpcXVlCgkJPC9sYWJlbD4KCTwvbGk+CTxsaSBjbGFzcz0iIj4KCQk8aW5wdXQgZGF0YS1lc3NlbmNlPSJnYXMiIGNsYXNzPSJmaWx0ZXJDaGVjayBmdWVsdHlwZSIgaWQ9ImZpbHRlckVzc2VuY2VDaGVjazEiIHR5cGU9ImNoZWNrYm94IiB2YWx1ZT0iMSIgY2hlY2tlZD4KCQk8bGFiZWwgZm9yPSJmaWx0ZXJFc3NlbmNlQ2hlY2sxIiBjbGFzcz0iZmlsdGVyU3BhbiI+CgkJCUVzc2VuY2UKCQk8L2xhYmVsPgoJPC9saT4JPGxpIGNsYXNzPSIiPgoJCTxpbnB1dCBkYXRhLWVzc2VuY2U9Imh5YnJpZCIgY2xhc3M9ImZpbHRlckNoZWNrIGZ1ZWx0eXBlIiBpZD0iZmlsdGVyRXNzZW5jZUNoZWNrNCIgdHlwZT0iY2hlY2tib3giIHZhbHVlPSI0IiBjaGVja2VkPgoJCTxsYWJlbCBmb3I9ImZpbHRlckVzc2VuY2VDaGVjazQiIGNsYXNzPSJmaWx0ZXJTcGFuIj4KCQkJSHlicmlkZQoJCTwvbGFiZWw+Cgk8L2xpPgk8bGkgY2xhc3M9IiI+CgkJPGlucHV0IGRhdGEtZXNzZW5jZT0icGhldiIgY2xhc3M9ImZpbHRlckNoZWNrIGZ1ZWx0eXBlIiBpZD0iZmlsdGVyRXNzZW5jZUNoZWNrNSIgdHlwZT0iY2hlY2tib3giIHZhbHVlPSI1IiBjaGVja2VkPgoJCTxsYWJlbCBmb3I9ImZpbHRlckVzc2VuY2VDaGVjazUiIGNsYXNzPSJmaWx0ZXJTcGFuIj4KCQkJSHlicmlkZSByZWNoYXJnZWFibGUKCQk8L2xhYmVsPgoJPC9saT48L3VsPjwvZGl2PjxkaXYgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEyIj48ZGl2IGNsYXNzPSJkaXZGaWx0ZXJUaXRsZSI+VHJpZXIgcGFyPC9kaXY+PHVsIGNsYXNzPSIiPjxsaSBjbGFzcz0iIj48aW5wdXQgaWQ9InJhZGlvTW9kbGUiIGNsYXNzPSJyYWRpb1NvcnQiIHR5cGU9InJhZGlvIiBuYW1lPSJzb3J0YnkiIHZhbHVlPSJtb2RlbCIgY2hlY2tlZD48bGFiZWwgY2xhc3M9ImZpbHRlclNwYW4iIGZvcj0icmFkaW9Nb2RsZSI+TW9kw6hsZTxsaSBjbGFzcz0iIj48aW5wdXQgaWQ9InJhZGlvUHJpY2UiIGNsYXNzPSJyYWRpb1NvcnQiIHR5cGU9InJhZGlvIiBuYW1lPSJzb3J0YnkiIHZhbHVlPSJwcmljZSI+PGxhYmVsIGNsYXNzPSJmaWx0ZXJTcGFuIiBmb3I9InJhZGlvUHJpY2UiPlByaXg8L2xhYmVsPjwvbGk+PGxpIGNsYXNzPSIiPjxpbnB1dCBpZD0icmFkaW9Db25zbyIgY2xhc3M9InJhZGlvU29ydCIgdHlwZT0icmFkaW8iIG5hbWU9InNvcnRieSIgdmFsdWU9ImNvbnNvIj48bGFiZWwgY2xhc3M9ImZpbHRlclNwYW4iIGZvcj0icmFkaW9Db25zbyI+TC8xMDBrbTwvbGFiZWw+PC9saT48L2xhYmVsPjwvbGk+PC91bD48L2Rpdj4JCQkJCQoJCQkJCQkJCQkJPC9kaXY+CgkJCQkJCQkJCQk8ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiI+CgkJCQkJCQkJCQkJCQkJCTxkaXYgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEyIGRpdlByaWNlUmFuZ2VTbGlkZXIiIGlkPSJwcmljZVJhbmdlU2xpZGVyRmlsdGVyQ29udGFpbmVyIj4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiBkaXZGaWx0ZXJUaXRsZSI+CgkJCQkJCUZvdXJjaGV0dGUgZGUgcHJpeAoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEyIHJhbmdlLXNsaWRlci1wcmljZXMiPgoJCQkJCQk8c3BhbiBjbGFzcz0icHJpY2UtbWluIGZvcm1hdC1wcmljZSI+PC9zcGFuPsKgwqDDoMKgwqA8c3BhbiBjbGFzcz0icHJpY2UtbWF4IGZvcm1hdC1wcmljZSI+PC9zcGFuPgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEyIj4KCQkJCQkJPGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMSByYW5nZS1zbGlkZXItbGVmdCI+TWluPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjkgcmFuZ2Utc2xpZGVyIiBhdHRyLXByaWNlLW1pbj0iMjM0OTciIGF0dHItcHJpY2UtbWF4PSI4MDk5NiI+PC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEgcmFuZ2Utc2xpZGVyLXJpZ2h0Ij5NYXg8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQkJCQkJCQkJPC9kaXY+CgkJCQkJCQkJCTwvZGl2PgoJCQkJCQkJCTwvZGl2PgoJCQkJCQkJPC9kaXY+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJPC9kaXY+PCEtLSBPUEVOIENBVEVHT1JJRVNCT1hXUkFQUEVSICgxOTg4KS0tPjxkaXYgY2xhc3M9IklubmVyQm94TGF5ZXIgZGl2Q2F0ZWdvcmllc0JveFdyYXBwZXIiPjwhLS0gT1BFTiBDQVRFR09SWUJPWFdSQVBQRVIgKDIwNTIpIC0tPjxkaXYgaWQ9ImNsYXNzY2FyX2NvbnRhaW5lciIgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEyIGRpdkNhdGVnb3J5Qm94V3JhcHBlciIgc3RhdGU9Im9wZW4iIG5idmlzaWJsZT0iMSI+PGgyIGNsYXNzPSJkZWZhdWx0IGljb24taGVhZGluZyBmbGV4LWJveCBhbGlnbi1jZW50ZXIiPgoJPHNwYW4gY2xhc3M9ImZhIGZhLWNoZXZyb24tcmlnaHQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L3NwYW4+Cgk8Ym94LWxjIGNsYXNzPSItcHYwIj4KCQk8ZGl2IGNsYXNzPSJtYWluVGV4dCAtYm9sZCI+QXV0b3MgbmV1dmVzIEh5dW5kYWkgMjAyNSAmYW1wOyAyMDI2PC9kaXY+CgkJPGRpdiBjbGFzcz0ic2Vjb25kYXJ5VGV4dCI+w6AgUmVwZW50aWdueSAoZW50cmUgTWFzY291Y2hlIGV0IE1vbnRyw6lhbCk8L2Rpdj4KCTwvYm94LWxjPgo8L2gyPjxkaXYgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEyIGRpdkNhcnNCb3hXcmFwcGVyIENMQVNTX2NhciI+CTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZU91dGVyQm94ICByZWJhdGVCb3JkZXJDb2xvciIgaWQ9ImZieF9jYXJfMSI+CgkJCgkJPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlSW5uZXJCb3giIGlkPSIiPgoJCQkKCQkJPGRpdiBjbGFzcz0iZGl2Q2FyVGl0bGVDb250YWluZXIiPgoJCQkJPGEgdGl0bGU9Ikh5dW5kYWkgRWxhbnRyYSAyMDI2IiBocmVmPSI\/cGF0aD0vbmV1ZnMvSHl1bmRhaS1FbGFudHJhLTIwMjYuaHRtbCIgZGF0YS1tYWtlPSJIeXVuZGFpIiBkYXRhLW1vZGVsPSJFbGFudHJhIDIwMjYiPgoJCQkJCTxoMz4KCQkJCQkJPHNwYW4gY2xhc3M9InNwYW5DYXJNYWtlICI+SHl1bmRhaTwvc3Bhbj48YnI+CgkJCQkJCTxzcGFuIGNsYXNzPSJtb2RlbE5hbWUgc3Bhbk1vZGVsTmFtZSI+RWxhbnRyYSAyMDI2PC9zcGFuPgoJCQkJCTwvaDM+CgkJCQk8L2E+CgkJCQkgICAgPCEtLSBPUEVOIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CiAgICA8ZGl2IGNsYXNzPSJkaXZOZXdDYXJTdGFydFByaWNlIj4KICAgICAgICDDoCBwYXJ0aXIgZGUKICAgICAgICA8c3BhbiBjbGFzcz0iIj4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+MjUgODQ2PC9zcGFuPjwvc3Bhbj4KICAgICAgICA8aSBzdHlsZT0iY29sb3I6IzAwMDtmb250LXNpemU6MjBweDsiIGNsYXNzPSJjYXJQcmljZUluaXRpYWxUb29sVGlwSWNvbiBmYWwgZmEtaW5mby1jaXJjbGUgYmxhY2tDb2xvckJvbGQiIGRhdGEtdG9vbHRpcD0iJmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtQRFNGOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzIyIDk5OSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RyYW5zcG9ydCAmYW1wOyBQcsOpcGFyYXRpb246Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MSA5MDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBkJ2FkbWluaXN0cmF0aW9uJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7Nzk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgUkRQUk0mbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs0OCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RheGUgQUM6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VG90YWwmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsyNSA4NDYmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Ij48L2k+CiAgICA8L2Rpdj4KICAgIDwhLS0gQ0xPU0UgTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJblN0b2NrTGluayIgaGlkZGVuPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBkYXRhLXR5cGU9ImludmRhdGEiIGRhdGEtbWFrZT0iSHl1bmRhaSIgZGF0YS1tb2RlbD0iRWxhbnRyYSIgZGF0YS15ZWFyPSIyMDI2IiBkYXRhLXN0eWxlaWRzPSI0ODEyNTEsNDgxMjUyLDQ4MTI1Myw0ODEyNTQsNDgxMjU1LDQ4MTI1NiIgZGF0YS1oeWJyaWQ9IjAiPgoJPC9kaXY+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJbWFnZUNvbnRhaW5lciBmbGV4LWNlbnRlciBhbGlnbi1jZW50ZXIgIj4KCQkJCTxhIHRpdGxlPSJIeXVuZGFpIEVsYW50cmEgMjAyNiIgaHJlZj0iP3BhdGg9L25ldWZzL0h5dW5kYWktRWxhbnRyYS0yMDI2Lmh0bWwiPgoJCQkJCTxpbWcgYWx0PSJIeXVuZGFpIEVsYW50cmEgMjAyNiIgYm9yZGVyPSIwIiBjbGFzcz0ibGl2ZWxvYWQgb3B0YW5vbi1jYXRlZ29yeS1DMDAwMSIgZGF0YS1pbWdzcmM9Imh0dHBzOi8vY2FyaW1hZ2VzLmQyY21lZGlhLmNhL25ld2NhcmltYWdlcy9mci9IeXVuZGFpL0VsYW50cmEvMjAyNi80ODEyNTEvUmVkL3Byb2ZpbGUud2VicCIgc3JjPSJodHRwczovL2NhcmltYWdlcy5kMmNtZWRpYS5jYS9uZXdjYXJpbWFnZXMvZnIvSHl1bmRhaS9FbGFudHJhLzIwMjYvNDgxMjUxL1JlZC9wcm9maWxlLndlYnAiIGRhdGEtb3QtaWdub3JlIGRhdGEtY29va2llY29uc2VudD0iaWdub3JlIj4KCQkJCTwvYT4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckZvb3RlckNvbnRhaW5lciBzdGFjay1sYyAtLXMtOSI+CgkJCQkJPGRpdiBjbGFzcz0iY2FyUGF5bWVudFdyYXBwZXIiPgoJCQk8ZGl2IGNsYXNzPSJjb250ZW50LXNrZWxldG9uIGh0bWwtYmxvY2siIGRhdGEtYmxvY2s9InBheW1lbnRCbG9jayIgZGF0YS10eXBlPSJibG9jayIgZGF0YS1zb3VyY2U9InNlcnZlciIgZGF0YS1jYWxsYmFjaz0icGF5bWVudENhbGNCbG9jayI+CgkJCgk8aW5wdXQgbmFtZT0iYmxvY2stZGF0YSIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0ieyZxdW90O3N0eWxlaWQmcXVvdDs6JnF1b3Q7NDgxMjUxJnF1b3Q7LCZxdW90O3RpdGxlJnF1b3Q7OiZxdW90O0h5dW5kYWkgRWxhbnRyYSAyMDI2JnF1b3Q7LCZxdW90O2hyZWYmcXVvdDs6JnF1b3Q7XC9uZXVmc1wvSHl1bmRhaS1FbGFudHJhLTIwMjYuaHRtbCZxdW90OywmcXVvdDtsaW5rc3R5bGUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2xpbmtjbGFzcyZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7Y29udGFpbmVyY2xhc3MmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3Byb21vdGV4dCZxdW90OzomcXVvdDtEXHUwMGU5Y291dnJleiBsJ29mZnJlISZxdW90O30iPgoJPC9kaXY+Cgk8L2Rpdj4KCQkJCQoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2Pgk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVPdXRlckJveCAgcmViYXRlQm9yZGVyQ29sb3IiIGlkPSJmYnhfY2FyXzIiPgoJCQoJCTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZUlubmVyQm94IiBpZD0iIj4KCQkJCgkJCTxkaXYgY2xhc3M9ImRpdkNhclRpdGxlQ29udGFpbmVyIj4KCQkJCTxhIHRpdGxlPSJIeXVuZGFpIEVsYW50cmEgMjAyNSIgaHJlZj0iP3BhdGg9L25ldWZzL0h5dW5kYWktRWxhbnRyYS0yMDI1Lmh0bWwiIGRhdGEtbWFrZT0iSHl1bmRhaSIgZGF0YS1tb2RlbD0iRWxhbnRyYSAyMDI1Ij4KCQkJCQk8aDM+CgkJCQkJCTxzcGFuIGNsYXNzPSJzcGFuQ2FyTWFrZSAiPkh5dW5kYWk8L3NwYW4+PGJyPgoJCQkJCQk8c3BhbiBjbGFzcz0ibW9kZWxOYW1lIHNwYW5Nb2RlbE5hbWUiPkVsYW50cmEgMjAyNTwvc3Bhbj4KCQkJCQk8L2gzPgoJCQkJPC9hPgoJCQkJICAgIDwhLS0gT1BFTiBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgogICAgPGRpdiBjbGFzcz0iZGl2TmV3Q2FyU3RhcnRQcmljZSI+CiAgICAgICAgw6AgcGFydGlyIGRlCiAgICAgICAgPHNwYW4gY2xhc3M9IiI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjI0IDY0Nzwvc3Bhbj48L3NwYW4+CiAgICAgICAgPGkgc3R5bGU9ImNvbG9yOiMwMDA7Zm9udC1zaXplOjIwcHg7IiBjbGFzcz0iY2FyUHJpY2VJbml0aWFsVG9vbFRpcEljb24gZmFsIGZhLWluZm8tY2lyY2xlIGJsYWNrQ29sb3JCb2xkIiBkYXRhLXRvb2x0aXA9JyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7UERTRjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MjIgNTk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7VHJhbnNwb3J0ICZhbXA7IFByw6lwYXJhdGlvbjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MSA5MDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtGcmFpcyBSRFBSTSZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDs0OCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1RheGUgQUM6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzEwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1RvdGFsJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzI0IDY0NyZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsnPjwvaT4KICAgIDwvZGl2PgogICAgPCEtLSBDTE9TRSBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgoJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckluU3RvY2tMaW5rIiBoaWRkZW4+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGRhdGEtdHlwZT0iaW52ZGF0YSIgZGF0YS1tYWtlPSJIeXVuZGFpIiBkYXRhLW1vZGVsPSJFbGFudHJhIiBkYXRhLXllYXI9IjIwMjUiIGRhdGEtc3R5bGVpZHM9IjQ2MjU4NCw0NjI1ODUsNDYyNTg2LDQ2MjU4Nyw0NjI1ODgsNDYyNTg5IiBkYXRhLWh5YnJpZD0iMCI+Cgk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckltYWdlQ29udGFpbmVyIGZsZXgtY2VudGVyIGFsaWduLWNlbnRlciAiPgoJCQkJPGEgdGl0bGU9Ikh5dW5kYWkgRWxhbnRyYSAyMDI1IiBocmVmPSI\/cGF0aD0vbmV1ZnMvSHl1bmRhaS1FbGFudHJhLTIwMjUuaHRtbCI+CgkJCQkJPGltZyBhbHQ9Ikh5dW5kYWkgRWxhbnRyYSAyMDI1IiBib3JkZXI9IjAiIGNsYXNzPSJsaXZlbG9hZCBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLWltZ3NyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0h5dW5kYWkvRWxhbnRyYS8yMDI1LzQ2MjU4NC9SZWQvcHJvZmlsZS53ZWJwIiBzcmM9Imh0dHBzOi8vY2FyaW1hZ2VzLmQyY21lZGlhLmNhL25ld2NhcmltYWdlcy9mci9IeXVuZGFpL0VsYW50cmEvMjAyNS80NjI1ODQvUmVkL3Byb2ZpbGUud2VicCIgZGF0YS1vdC1pZ25vcmUgZGF0YS1jb29raWVjb25zZW50PSJpZ25vcmUiPgoJCQkJPC9hPgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyRm9vdGVyQ29udGFpbmVyIHN0YWNrLWxjIC0tcy05Ij4KCQkJCQk8ZGl2IGNsYXNzPSJjYXJQYXltZW50V3JhcHBlciI+CgkJCTxkaXYgY2xhc3M9ImNvbnRlbnQtc2tlbGV0b24gaHRtbC1ibG9jayIgZGF0YS1ibG9jaz0icGF5bWVudEJsb2NrIiBkYXRhLXR5cGU9ImJsb2NrIiBkYXRhLXNvdXJjZT0ic2VydmVyIiBkYXRhLWNhbGxiYWNrPSJwYXltZW50Q2FsY0Jsb2NrIj4KCQkKCTxpbnB1dCBuYW1lPSJibG9jay1kYXRhIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSJ7JnF1b3Q7c3R5bGVpZCZxdW90OzomcXVvdDs0NjI1ODQmcXVvdDssJnF1b3Q7dGl0bGUmcXVvdDs6JnF1b3Q7SHl1bmRhaSBFbGFudHJhIDIwMjUmcXVvdDssJnF1b3Q7aHJlZiZxdW90OzomcXVvdDtcL25ldWZzXC9IeXVuZGFpLUVsYW50cmEtMjAyNS5odG1sJnF1b3Q7LCZxdW90O2xpbmtzdHlsZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7bGlua2NsYXNzJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtjb250YWluZXJjbGFzcyZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7cHJvbW90ZXh0JnF1b3Q7OiZxdW90O0RcdTAwZTljb3V2cmV6IGwnb2ZmcmUhJnF1b3Q7fSI+Cgk8L2Rpdj4KCTwvZGl2PgoJCQkJCgkJCTwvZGl2PgoJCTwvZGl2PgoJPC9kaXY+CTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZU91dGVyQm94ICByZWJhdGVCb3JkZXJDb2xvciIgaWQ9ImZieF9jYXJfMyI+CgkJCgkJPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlSW5uZXJCb3giIGlkPSIiPgoJCQkKCQkJPGRpdiBjbGFzcz0iZGl2Q2FyVGl0bGVDb250YWluZXIiPgoJCQkJPGEgdGl0bGU9Ikh5dW5kYWkgRWxhbnRyYSBOIDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9IeXVuZGFpLUVsYW50cmFfTi0yMDI2Lmh0bWwiIGRhdGEtbWFrZT0iSHl1bmRhaSIgZGF0YS1tb2RlbD0iRWxhbnRyYSBOIDIwMjYiPgoJCQkJCTxoMz4KCQkJCQkJPHNwYW4gY2xhc3M9InNwYW5DYXJNYWtlICI+SHl1bmRhaTwvc3Bhbj48YnI+CgkJCQkJCTxzcGFuIGNsYXNzPSJtb2RlbE5hbWUgc3Bhbk1vZGVsTmFtZSI+RWxhbnRyYSBOIDIwMjY8L3NwYW4+CgkJCQkJPC9oMz4KCQkJCTwvYT4KCQkJCSAgICA8IS0tIE9QRU4gTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KICAgIDxkaXYgY2xhc3M9ImRpdk5ld0NhclN0YXJ0UHJpY2UiPgogICAgICAgIMOgIHBhcnRpciBkZQogICAgICAgIDxzcGFuIGNsYXNzPSIiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj40MyA3OTY8L3NwYW4+PC9zcGFuPgogICAgICAgIDxpIHN0eWxlPSJjb2xvcjojMDAwO2ZvbnQtc2l6ZToyMHB4OyIgY2xhc3M9ImNhclByaWNlSW5pdGlhbFRvb2xUaXBJY29uIGZhbCBmYS1pbmZvLWNpcmNsZSBibGFja0NvbG9yQm9sZCIgZGF0YS10b29sdGlwPSImbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1BEU0Y6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NDAgOTQ5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VHJhbnNwb3J0ICZhbXA7IFByw6lwYXJhdGlvbjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsxIDkwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O0ZyYWlzIGQnYWRtaW5pc3RyYXRpb24mbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs3OTkmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBSRFBSTSZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzQ4Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VGF4ZSBBQzombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUb3RhbCZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzQzIDc5NiZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsiPjwvaT4KICAgIDwvZGl2PgogICAgPCEtLSBDTE9TRSBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgoJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckluU3RvY2tMaW5rIiBoaWRkZW4+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGRhdGEtdHlwZT0iaW52ZGF0YSIgZGF0YS1tYWtlPSJIeXVuZGFpIiBkYXRhLW1vZGVsPSJFbGFudHJhIE4iIGRhdGEteWVhcj0iMjAyNiIgZGF0YS1zdHlsZWlkcz0iNDgwMjkzLDQ4MDI5NCw0ODAyOTUsNDgwMjk2IiBkYXRhLWh5YnJpZD0iMCI+Cgk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckltYWdlQ29udGFpbmVyIGZsZXgtY2VudGVyIGFsaWduLWNlbnRlciAiPgoJCQkJPGEgdGl0bGU9Ikh5dW5kYWkgRWxhbnRyYSBOIDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9IeXVuZGFpLUVsYW50cmFfTi0yMDI2Lmh0bWwiPgoJCQkJCTxpbWcgYWx0PSJIeXVuZGFpIEVsYW50cmEgTiAyMDI2IiBib3JkZXI9IjAiIGNsYXNzPSJsaXZlbG9hZCBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLWltZ3NyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0h5dW5kYWkvRWxhbnRyYV9OLzIwMjYvNDgwMjkzL1JlZC9wcm9maWxlLndlYnAiIHNyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0h5dW5kYWkvRWxhbnRyYV9OLzIwMjYvNDgwMjkzL1JlZC9wcm9maWxlLndlYnAiIGRhdGEtb3QtaWdub3JlIGRhdGEtY29va2llY29uc2VudD0iaWdub3JlIj4KCQkJCTwvYT4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckZvb3RlckNvbnRhaW5lciBzdGFjay1sYyAtLXMtOSI+CgkJCQkJPGRpdiBjbGFzcz0iY2FyUGF5bWVudFdyYXBwZXIiPgoJCQk8ZGl2IGNsYXNzPSJjb250ZW50LXNrZWxldG9uIGh0bWwtYmxvY2siIGRhdGEtYmxvY2s9InBheW1lbnRCbG9jayIgZGF0YS10eXBlPSJibG9jayIgZGF0YS1zb3VyY2U9InNlcnZlciIgZGF0YS1jYWxsYmFjaz0icGF5bWVudENhbGNCbG9jayI+CgkJCgk8aW5wdXQgbmFtZT0iYmxvY2stZGF0YSIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0ieyZxdW90O3N0eWxlaWQmcXVvdDs6JnF1b3Q7NDgwMjkzJnF1b3Q7LCZxdW90O3RpdGxlJnF1b3Q7OiZxdW90O0h5dW5kYWkgRWxhbnRyYSBOIDIwMjYmcXVvdDssJnF1b3Q7aHJlZiZxdW90OzomcXVvdDtcL25ldWZzXC9IeXVuZGFpLUVsYW50cmFfTi0yMDI2Lmh0bWwmcXVvdDssJnF1b3Q7bGlua3N0eWxlJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtsaW5rY2xhc3MmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2NvbnRhaW5lcmNsYXNzJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtwcm9tb3RleHQmcXVvdDs6JnF1b3Q7RFx1MDBlOWNvdXZyZXogbCdvZmZyZSEmcXVvdDt9Ij4KCTwvZGl2PgoJPC9kaXY+CgkJCQkKCQkJPC9kaXY+CgkJPC9kaXY+Cgk8L2Rpdj4JPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggIHJlYmF0ZUJvcmRlckNvbG9yIiBpZD0iZmJ4X2Nhcl80Ij4KCQkKCQk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVJbm5lckJveCIgaWQ9IiI+CgkJCQoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJUaXRsZUNvbnRhaW5lciI+CgkJCQk8YSB0aXRsZT0iSHl1bmRhaSBFbGFudHJhIE4gMjAyNSIgaHJlZj0iP3BhdGg9L25ldWZzL0h5dW5kYWktRWxhbnRyYV9OLTIwMjUuaHRtbCIgZGF0YS1tYWtlPSJIeXVuZGFpIiBkYXRhLW1vZGVsPSJFbGFudHJhIE4gMjAyNSI+CgkJCQkJPGgzPgoJCQkJCQk8c3BhbiBjbGFzcz0ic3BhbkNhck1ha2UgIj5IeXVuZGFpPC9zcGFuPjxicj4KCQkJCQkJPHNwYW4gY2xhc3M9Im1vZGVsTmFtZSBzcGFuTW9kZWxOYW1lIj5FbGFudHJhIE4gMjAyNTwvc3Bhbj4KCQkJCQk8L2gzPgoJCQkJPC9hPgoJCQkJICAgIDwhLS0gT1BFTiBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgogICAgPGRpdiBjbGFzcz0iZGl2TmV3Q2FyU3RhcnRQcmljZSI+CiAgICAgICAgw6AgcGFydGlyIGRlCiAgICAgICAgPHNwYW4gY2xhc3M9IiI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjQyIDI0Nzwvc3Bhbj48L3NwYW4+CiAgICAgICAgPGkgc3R5bGU9ImNvbG9yOiMwMDA7Zm9udC1zaXplOjIwcHg7IiBjbGFzcz0iY2FyUHJpY2VJbml0aWFsVG9vbFRpcEljb24gZmFsIGZhLWluZm8tY2lyY2xlIGJsYWNrQ29sb3JCb2xkIiBkYXRhLXRvb2x0aXA9JyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7UERTRjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7NDAgMTk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7VHJhbnNwb3J0ICZhbXA7IFByw6lwYXJhdGlvbjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MSA5MDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtGcmFpcyBSRFBSTSZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDs0OCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1RheGUgQUM6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzEwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1RvdGFsJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzQyIDI0NyZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsnPjwvaT4KICAgIDwvZGl2PgogICAgPCEtLSBDTE9TRSBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgoJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckluU3RvY2tMaW5rIiBoaWRkZW4+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGRhdGEtdHlwZT0iaW52ZGF0YSIgZGF0YS1tYWtlPSJIeXVuZGFpIiBkYXRhLW1vZGVsPSJFbGFudHJhIE4iIGRhdGEteWVhcj0iMjAyNSIgZGF0YS1zdHlsZWlkcz0iNDYyNzAwLDQ2MjcwMSIgZGF0YS1oeWJyaWQ9IjAiPgoJPC9kaXY+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJbWFnZUNvbnRhaW5lciBmbGV4LWNlbnRlciBhbGlnbi1jZW50ZXIgIj4KCQkJCTxhIHRpdGxlPSJIeXVuZGFpIEVsYW50cmEgTiAyMDI1IiBocmVmPSI\/cGF0aD0vbmV1ZnMvSHl1bmRhaS1FbGFudHJhX04tMjAyNS5odG1sIj4KCQkJCQk8aW1nIGFsdD0iSHl1bmRhaSBFbGFudHJhIE4gMjAyNSIgYm9yZGVyPSIwIiBjbGFzcz0ibGl2ZWxvYWQgb3B0YW5vbi1jYXRlZ29yeS1DMDAwMSIgZGF0YS1pbWdzcmM9Imh0dHBzOi8vY2FyaW1hZ2VzLmQyY21lZGlhLmNhL25ld2NhcmltYWdlcy9mci9IeXVuZGFpL0VsYW50cmFfTi8yMDI1LzQ2MjcwMC9SZWQvcHJvZmlsZS53ZWJwIiBzcmM9Imh0dHBzOi8vY2FyaW1hZ2VzLmQyY21lZGlhLmNhL25ld2NhcmltYWdlcy9mci9IeXVuZGFpL0VsYW50cmFfTi8yMDI1LzQ2MjcwMC9SZWQvcHJvZmlsZS53ZWJwIiBkYXRhLW90LWlnbm9yZSBkYXRhLWNvb2tpZWNvbnNlbnQ9Imlnbm9yZSI+CgkJCQk8L2E+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJGb290ZXJDb250YWluZXIgc3RhY2stbGMgLS1zLTkiPgoJCQkJCTxkaXYgY2xhc3M9ImNhclBheW1lbnRXcmFwcGVyIj4KCQkJPGRpdiBjbGFzcz0iY29udGVudC1za2VsZXRvbiBodG1sLWJsb2NrIiBkYXRhLWJsb2NrPSJwYXltZW50QmxvY2siIGRhdGEtdHlwZT0iYmxvY2siIGRhdGEtc291cmNlPSJzZXJ2ZXIiIGRhdGEtY2FsbGJhY2s9InBheW1lbnRDYWxjQmxvY2siPgoJCQoJPGlucHV0IG5hbWU9ImJsb2NrLWRhdGEiIHR5cGU9ImhpZGRlbiIgdmFsdWU9InsmcXVvdDtzdHlsZWlkJnF1b3Q7OiZxdW90OzQ2MjcwMCZxdW90OywmcXVvdDt0aXRsZSZxdW90OzomcXVvdDtIeXVuZGFpIEVsYW50cmEgTiAyMDI1JnF1b3Q7LCZxdW90O2hyZWYmcXVvdDs6JnF1b3Q7XC9uZXVmc1wvSHl1bmRhaS1FbGFudHJhX04tMjAyNS5odG1sJnF1b3Q7LCZxdW90O2xpbmtzdHlsZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7bGlua2NsYXNzJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtjb250YWluZXJjbGFzcyZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7cHJvbW90ZXh0JnF1b3Q7OiZxdW90O0RcdTAwZTljb3V2cmV6IGwnb2ZmcmUhJnF1b3Q7fSI+Cgk8L2Rpdj4KCTwvZGl2PgoJCQkJCgkJCTwvZGl2PgoJCTwvZGl2PgoJPC9kaXY+CTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZU91dGVyQm94ICByZWJhdGVCb3JkZXJDb2xvciIgaWQ9ImZieF9jYXJfNSI+CgkJCgkJPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlSW5uZXJCb3giIGlkPSIiPgoJCQkKCQkJPGRpdiBjbGFzcz0iZGl2Q2FyVGl0bGVDb250YWluZXIiPgoJCQkJPGEgdGl0bGU9Ikh5dW5kYWkgU29uYXRhIDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9IeXVuZGFpLVNvbmF0YS0yMDI2Lmh0bWwiIGRhdGEtbWFrZT0iSHl1bmRhaSIgZGF0YS1tb2RlbD0iU29uYXRhIDIwMjYiPgoJCQkJCTxoMz4KCQkJCQkJPHNwYW4gY2xhc3M9InNwYW5DYXJNYWtlICI+SHl1bmRhaTwvc3Bhbj48YnI+CgkJCQkJCTxzcGFuIGNsYXNzPSJtb2RlbE5hbWUgc3Bhbk1vZGVsTmFtZSI+U29uYXRhIDIwMjY8L3NwYW4+CgkJCQkJPC9oMz4KCQkJCTwvYT4KCQkJCSAgICA8IS0tIE9QRU4gTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KICAgIDxkaXYgY2xhc3M9ImRpdk5ld0NhclN0YXJ0UHJpY2UiPgogICAgICAgIMOgIHBhcnRpciBkZQogICAgICAgIDxzcGFuIGNsYXNzPSIiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj4zOSAwMjE8L3NwYW4+PC9zcGFuPgogICAgICAgIDxpIHN0eWxlPSJjb2xvcjojMDAwO2ZvbnQtc2l6ZToyMHB4OyIgY2xhc3M9ImNhclByaWNlSW5pdGlhbFRvb2xUaXBJY29uIGZhbCBmYS1pbmZvLWNpcmNsZSBibGFja0NvbG9yQm9sZCIgZGF0YS10b29sdGlwPSImbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1BEU0Y6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MzYgMDk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VHJhbnNwb3J0ICZhbXA7IFByw6lwYXJhdGlvbjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsxIDk3NSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O0ZyYWlzIGQnYWRtaW5pc3RyYXRpb24mbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs3OTkmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBSRFBSTSZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzQ4Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VGF4ZSBBQzombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUb3RhbCZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzM5IDAyMSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsiPjwvaT4KICAgIDwvZGl2PgogICAgPCEtLSBDTE9TRSBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgoJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckluU3RvY2tMaW5rIiBoaWRkZW4+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGRhdGEtdHlwZT0iaW52ZGF0YSIgZGF0YS1tYWtlPSJIeXVuZGFpIiBkYXRhLW1vZGVsPSJTb25hdGEiIGRhdGEteWVhcj0iMjAyNiIgZGF0YS1zdHlsZWlkcz0iNDgwMTM1LDQ4MDEzNCIgZGF0YS1oeWJyaWQ9IjAiPgoJPC9kaXY+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJbWFnZUNvbnRhaW5lciBmbGV4LWNlbnRlciBhbGlnbi1jZW50ZXIgIj4KCQkJCTxhIHRpdGxlPSJIeXVuZGFpIFNvbmF0YSAyMDI2IiBocmVmPSI\/cGF0aD0vbmV1ZnMvSHl1bmRhaS1Tb25hdGEtMjAyNi5odG1sIj4KCQkJCQk8aW1nIGFsdD0iSHl1bmRhaSBTb25hdGEgMjAyNiIgYm9yZGVyPSIwIiBjbGFzcz0ibGF6eWxvYWQgb3B0YW5vbi1jYXRlZ29yeS1DMDAwMSIgZGF0YS1pbWdzcmM9Imh0dHBzOi8vY2FyaW1hZ2VzLmQyY21lZGlhLmNhL25ld2NhcmltYWdlcy9mci9IeXVuZGFpL1NvbmF0YS8yMDI2LzQ4MDEzNS9SZWQvcHJvZmlsZS53ZWJwIiBkYXRhLW90LWlnbm9yZSBkYXRhLWNvb2tpZWNvbnNlbnQ9Imlnbm9yZSI+CgkJCQk8L2E+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJGb290ZXJDb250YWluZXIgc3RhY2stbGMgLS1zLTkiPgoJCQkJCTxkaXYgY2xhc3M9ImNhclBheW1lbnRXcmFwcGVyIj4KCQkJPGRpdiBjbGFzcz0iY29udGVudC1za2VsZXRvbiBodG1sLWJsb2NrIiBkYXRhLWJsb2NrPSJwYXltZW50QmxvY2siIGRhdGEtdHlwZT0iYmxvY2siIGRhdGEtc291cmNlPSJzZXJ2ZXIiIGRhdGEtY2FsbGJhY2s9InBheW1lbnRDYWxjQmxvY2siPgoJCQoJPGlucHV0IG5hbWU9ImJsb2NrLWRhdGEiIHR5cGU9ImhpZGRlbiIgdmFsdWU9InsmcXVvdDtzdHlsZWlkJnF1b3Q7OiZxdW90OzQ4MDEzNSZxdW90OywmcXVvdDt0aXRsZSZxdW90OzomcXVvdDtIeXVuZGFpIFNvbmF0YSAyMDI2JnF1b3Q7LCZxdW90O2hyZWYmcXVvdDs6JnF1b3Q7XC9uZXVmc1wvSHl1bmRhaS1Tb25hdGEtMjAyNi5odG1sJnF1b3Q7LCZxdW90O2xpbmtzdHlsZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7bGlua2NsYXNzJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtjb250YWluZXJjbGFzcyZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7cHJvbW90ZXh0JnF1b3Q7OiZxdW90O0RcdTAwZTljb3V2cmV6IGwnb2ZmcmUhJnF1b3Q7fSI+Cgk8L2Rpdj4KCTwvZGl2PgoJCQkJCgkJCTwvZGl2PgoJCTwvZGl2PgoJPC9kaXY+CTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZU91dGVyQm94ICByZWJhdGVCb3JkZXJDb2xvciIgaWQ9ImZieF9jYXJfNiI+CgkJCgkJPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlSW5uZXJCb3giIGlkPSIiPgoJCQkKCQkJPGRpdiBjbGFzcz0iZGl2Q2FyVGl0bGVDb250YWluZXIiPgoJCQkJPGEgdGl0bGU9Ikh5dW5kYWkgU29uYXRhIDIwMjUiIGhyZWY9Ij9wYXRoPS9uZXVmcy9IeXVuZGFpLVNvbmF0YS0yMDI1Lmh0bWwiIGRhdGEtbWFrZT0iSHl1bmRhaSIgZGF0YS1tb2RlbD0iU29uYXRhIDIwMjUiPgoJCQkJCTxoMz4KCQkJCQkJPHNwYW4gY2xhc3M9InNwYW5DYXJNYWtlICI+SHl1bmRhaTwvc3Bhbj48YnI+CgkJCQkJCTxzcGFuIGNsYXNzPSJtb2RlbE5hbWUgc3Bhbk1vZGVsTmFtZSI+U29uYXRhIDIwMjU8L3NwYW4+CgkJCQkJPC9oMz4KCQkJCTwvYT4KCQkJCSAgICA8IS0tIE9QRU4gTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KICAgIDxkaXYgY2xhc3M9ImRpdk5ld0NhclN0YXJ0UHJpY2UiPgogICAgICAgIMOgIHBhcnRpciBkZQogICAgICAgIDxzcGFuIGNsYXNzPSIiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj4zNSAyMjI8L3NwYW4+PC9zcGFuPgogICAgICAgIDxpIHN0eWxlPSJjb2xvcjojMDAwO2ZvbnQtc2l6ZToyMHB4OyIgY2xhc3M9ImNhclByaWNlSW5pdGlhbFRvb2xUaXBJY29uIGZhbCBmYS1pbmZvLWNpcmNsZSBibGFja0NvbG9yQm9sZCIgZGF0YS10b29sdGlwPScmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1BEU0Y6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzMzIDA5OSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1RyYW5zcG9ydCAmYW1wOyBQcsOpcGFyYXRpb246Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzEgOTc1Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7RnJhaXMgUkRQUk0mbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7NDgmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtUYXhlIEFDOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDsxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtUb3RhbCZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDszNSAyMjImbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jz48L2k+CiAgICA8L2Rpdj4KICAgIDwhLS0gQ0xPU0UgTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJblN0b2NrTGluayIgaGlkZGVuPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBkYXRhLXR5cGU9ImludmRhdGEiIGRhdGEtbWFrZT0iSHl1bmRhaSIgZGF0YS1tb2RlbD0iU29uYXRhIiBkYXRhLXllYXI9IjIwMjUiIGRhdGEtc3R5bGVpZHM9IjQ2NDA4NCw0NjQwODYsNDY0MDg1IiBkYXRhLWh5YnJpZD0iMCI+Cgk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckltYWdlQ29udGFpbmVyIGZsZXgtY2VudGVyIGFsaWduLWNlbnRlciAiPgoJCQkJPGEgdGl0bGU9Ikh5dW5kYWkgU29uYXRhIDIwMjUiIGhyZWY9Ij9wYXRoPS9uZXVmcy9IeXVuZGFpLVNvbmF0YS0yMDI1Lmh0bWwiPgoJCQkJCTxpbWcgYWx0PSJIeXVuZGFpIFNvbmF0YSAyMDI1IiBib3JkZXI9IjAiIGNsYXNzPSJsYXp5bG9hZCBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLWltZ3NyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0h5dW5kYWkvU29uYXRhLzIwMjUvNDY0MDg0L1JlZC9wcm9maWxlLndlYnAiIGRhdGEtb3QtaWdub3JlIGRhdGEtY29va2llY29uc2VudD0iaWdub3JlIj4KCQkJCTwvYT4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckZvb3RlckNvbnRhaW5lciBzdGFjay1sYyAtLXMtOSI+CgkJCQkJPGRpdiBjbGFzcz0iY2FyUGF5bWVudFdyYXBwZXIiPgoJCQk8ZGl2IGNsYXNzPSJjb250ZW50LXNrZWxldG9uIGh0bWwtYmxvY2siIGRhdGEtYmxvY2s9InBheW1lbnRCbG9jayIgZGF0YS10eXBlPSJibG9jayIgZGF0YS1zb3VyY2U9InNlcnZlciIgZGF0YS1jYWxsYmFjaz0icGF5bWVudENhbGNCbG9jayI+CgkJCgk8aW5wdXQgbmFtZT0iYmxvY2stZGF0YSIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0ieyZxdW90O3N0eWxlaWQmcXVvdDs6JnF1b3Q7NDY0MDg0JnF1b3Q7LCZxdW90O3RpdGxlJnF1b3Q7OiZxdW90O0h5dW5kYWkgU29uYXRhIDIwMjUmcXVvdDssJnF1b3Q7aHJlZiZxdW90OzomcXVvdDtcL25ldWZzXC9IeXVuZGFpLVNvbmF0YS0yMDI1Lmh0bWwmcXVvdDssJnF1b3Q7bGlua3N0eWxlJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtsaW5rY2xhc3MmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2NvbnRhaW5lcmNsYXNzJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtwcm9tb3RleHQmcXVvdDs6JnF1b3Q7RFx1MDBlOWNvdXZyZXogbCdvZmZyZSEmcXVvdDt9Ij4KCTwvZGl2PgoJPC9kaXY+CgkJCQkKCQkJPC9kaXY+CgkJPC9kaXY+Cgk8L2Rpdj48L2Rpdj48L2Rpdj48IS0tIENMT1NFIENBVEVHT1JZQk9YV1JBUFBFUiAoMjA2MCktLT48IS0tIE9QRU4gQ0FURUdPUllCT1hXUkFQUEVSICgyMDUyKSAtLT48ZGl2IGlkPSJjbGFzc3N1dl9jb250YWluZXIiIGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiBkaXZDYXRlZ29yeUJveFdyYXBwZXIiIHN0YXRlPSJvcGVuIiBuYnZpc2libGU9IjEiPjxoMiBjbGFzcz0iZGVmYXVsdCBpY29uLWhlYWRpbmcgZmxleC1ib3ggYWxpZ24tY2VudGVyIj4KCTxzcGFuIGNsYXNzPSJmYSBmYS1jaGV2cm9uLXJpZ2h0IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9zcGFuPgoJPGJveC1sYyBjbGFzcz0iLXB2MCI+CgkJPGRpdiBjbGFzcz0ibWFpblRleHQgLWJvbGQiPlZVUyBuZXVmcyBIeXVuZGFpIDIwMjUgJmFtcDsgMjAyNjwvZGl2PgoJCTxkaXYgY2xhc3M9InNlY29uZGFyeVRleHQiPsOgIFJlcGVudGlnbnkgKGVudHJlIE1hc2NvdWNoZSBldCBNb250csOpYWwpPC9kaXY+Cgk8L2JveC1sYz4KPC9oMj48ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiBkaXZDYXJzQm94V3JhcHBlciBDTEFTU19zdXYiPgk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVPdXRlckJveCAgcmViYXRlQm9yZGVyQ29sb3IiIGlkPSJmYnhfc3V2XzEiPgoJCQoJCTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZUlubmVyQm94IiBpZD0iIj4KCQkJCgkJCTxkaXYgY2xhc3M9ImRpdkNhclRpdGxlQ29udGFpbmVyIj4KCQkJCTxhIHRpdGxlPSJIeXVuZGFpIEtvbmEgMjAyNiIgaHJlZj0iP3BhdGg9L25ldWZzL0h5dW5kYWktS29uYS0yMDI2Lmh0bWwiIGRhdGEtbWFrZT0iSHl1bmRhaSIgZGF0YS1tb2RlbD0iS29uYSAyMDI2Ij4KCQkJCQk8aDM+CgkJCQkJCTxzcGFuIGNsYXNzPSJzcGFuQ2FyTWFrZSAiPkh5dW5kYWk8L3NwYW4+PGJyPgoJCQkJCQk8c3BhbiBjbGFzcz0ibW9kZWxOYW1lIHNwYW5Nb2RlbE5hbWUiPktvbmEgMjAyNjwvc3Bhbj4KCQkJCQk8L2gzPgoJCQkJPC9hPgoJCQkJICAgIDwhLS0gT1BFTiBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgogICAgPGRpdiBjbGFzcz0iZGl2TmV3Q2FyU3RhcnRQcmljZSI+CiAgICAgICAgw6AgcGFydGlyIGRlCiAgICAgICAgPHNwYW4gY2xhc3M9IiI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjI5IDc0Njwvc3Bhbj48L3NwYW4+CiAgICAgICAgPGkgc3R5bGU9ImNvbG9yOiMwMDA7Zm9udC1zaXplOjIwcHg7IiBjbGFzcz0iY2FyUHJpY2VJbml0aWFsVG9vbFRpcEljb24gZmFsIGZhLWluZm8tY2lyY2xlIGJsYWNrQ29sb3JCb2xkIiBkYXRhLXRvb2x0aXA9IiZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7UERTRjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsyNiA3NDkmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUcmFuc3BvcnQgJmFtcDsgUHLDqXBhcmF0aW9uOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzIgMDUwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgZCdhZG1pbmlzdHJhdGlvbiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0Ozc5OSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O0ZyYWlzIFJEUFJNJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NDgmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUYXhlIEFDOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzEwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RvdGFsJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MjkgNzQ2Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyI+PC9pPgogICAgPC9kaXY+CiAgICA8IS0tIENMT1NFIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CgkJCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW5TdG9ja0xpbmsiIGhpZGRlbj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgZGF0YS10eXBlPSJpbnZkYXRhIiBkYXRhLW1ha2U9Ikh5dW5kYWkiIGRhdGEtbW9kZWw9IktvbmEiIGRhdGEteWVhcj0iMjAyNiIgZGF0YS1zdHlsZWlkcz0iNDc5Mjc1LDQ3OTI3Nyw0NzkyNzYsNDc5Mjc4LDQ3OTI3OSw0NzkyODAsNDc5MjgxLDQ3OTI4Miw0NzkyODMiIGRhdGEtaHlicmlkPSIwIj4KCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW1hZ2VDb250YWluZXIgZmxleC1jZW50ZXIgYWxpZ24tY2VudGVyICI+CgkJCQk8YSB0aXRsZT0iSHl1bmRhaSBLb25hIDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9IeXVuZGFpLUtvbmEtMjAyNi5odG1sIj4KCQkJCQk8aW1nIGFsdD0iSHl1bmRhaSBLb25hIDIwMjYiIGJvcmRlcj0iMCIgY2xhc3M9Imxhenlsb2FkIG9wdGFub24tY2F0ZWdvcnktQzAwMDEiIGRhdGEtaW1nc3JjPSJodHRwczovL2NhcmltYWdlcy5kMmNtZWRpYS5jYS9uZXdjYXJpbWFnZXMvZnIvSHl1bmRhaS9Lb25hLzIwMjYvNDc5Mjc1L1JlZC9wcm9maWxlLndlYnAiIGRhdGEtb3QtaWdub3JlIGRhdGEtY29va2llY29uc2VudD0iaWdub3JlIj4KCQkJCTwvYT4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckZvb3RlckNvbnRhaW5lciBzdGFjay1sYyAtLXMtOSI+CgkJCQkJPGRpdiBjbGFzcz0iY2FyUGF5bWVudFdyYXBwZXIiPgoJCQk8ZGl2IGNsYXNzPSJjb250ZW50LXNrZWxldG9uIGh0bWwtYmxvY2siIGRhdGEtYmxvY2s9InBheW1lbnRCbG9jayIgZGF0YS10eXBlPSJibG9jayIgZGF0YS1zb3VyY2U9InNlcnZlciIgZGF0YS1jYWxsYmFjaz0icGF5bWVudENhbGNCbG9jayI+CgkJCgk8aW5wdXQgbmFtZT0iYmxvY2stZGF0YSIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0ieyZxdW90O3N0eWxlaWQmcXVvdDs6JnF1b3Q7NDc5Mjc1JnF1b3Q7LCZxdW90O3RpdGxlJnF1b3Q7OiZxdW90O0h5dW5kYWkgS29uYSAyMDI2JnF1b3Q7LCZxdW90O2hyZWYmcXVvdDs6JnF1b3Q7XC9uZXVmc1wvSHl1bmRhaS1Lb25hLTIwMjYuaHRtbCZxdW90OywmcXVvdDtsaW5rc3R5bGUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2xpbmtjbGFzcyZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7Y29udGFpbmVyY2xhc3MmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3Byb21vdGV4dCZxdW90OzomcXVvdDtEXHUwMGU5Y291dnJleiBsJ29mZnJlISZxdW90O30iPgoJPC9kaXY+Cgk8L2Rpdj4KCQkJCQoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2Pgk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVPdXRlckJveCAgcmViYXRlQm9yZGVyQ29sb3IiIGlkPSJmYnhfc3V2XzIiPgoJCQoJCTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZUlubmVyQm94IiBpZD0iIj4KCQkJCgkJCTxkaXYgY2xhc3M9ImRpdkNhclRpdGxlQ29udGFpbmVyIj4KCQkJCTxhIHRpdGxlPSJIeXVuZGFpIEtvbmEgMjAyNSIgaHJlZj0iP3BhdGg9L25ldWZzL0h5dW5kYWktS29uYS0yMDI1Lmh0bWwiIGRhdGEtbWFrZT0iSHl1bmRhaSIgZGF0YS1tb2RlbD0iS29uYSAyMDI1Ij4KCQkJCQk8aDM+CgkJCQkJCTxzcGFuIGNsYXNzPSJzcGFuQ2FyTWFrZSAiPkh5dW5kYWk8L3NwYW4+PGJyPgoJCQkJCQk8c3BhbiBjbGFzcz0ibW9kZWxOYW1lIHNwYW5Nb2RlbE5hbWUiPktvbmEgMjAyNTwvc3Bhbj4KCQkJCQk8L2gzPgoJCQkJPC9hPgoJCQkJICAgIDwhLS0gT1BFTiBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgogICAgPGRpdiBjbGFzcz0iZGl2TmV3Q2FyU3RhcnRQcmljZSI+CiAgICAgICAgw6AgcGFydGlyIGRlCiAgICAgICAgPHNwYW4gY2xhc3M9IiI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjI4IDY0Nzwvc3Bhbj48L3NwYW4+CiAgICAgICAgPGkgc3R5bGU9ImNvbG9yOiMwMDA7Zm9udC1zaXplOjIwcHg7IiBjbGFzcz0iY2FyUHJpY2VJbml0aWFsVG9vbFRpcEljb24gZmFsIGZhLWluZm8tY2lyY2xlIGJsYWNrQ29sb3JCb2xkIiBkYXRhLXRvb2x0aXA9JyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7UERTRjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MjYgNDQ5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7VHJhbnNwb3J0ICZhbXA7IFByw6lwYXJhdGlvbjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MiAwNTAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtGcmFpcyBSRFBSTSZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDs0OCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1RheGUgQUM6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzEwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1RvdGFsJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzI4IDY0NyZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsnPjwvaT4KICAgIDwvZGl2PgogICAgPCEtLSBDTE9TRSBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgoJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckluU3RvY2tMaW5rIiBoaWRkZW4+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGRhdGEtdHlwZT0iaW52ZGF0YSIgZGF0YS1tYWtlPSJIeXVuZGFpIiBkYXRhLW1vZGVsPSJLb25hIiBkYXRhLXllYXI9IjIwMjUiIGRhdGEtc3R5bGVpZHM9IjQ2MTg4OCw0NjE4OTAsNDYxODg5LDQ2MTg5MSw0NjE4OTIsNDYxODk3LDQ2MTg5Myw0NjE4OTQsNDYxODk1LDQ2MTg5NiIgZGF0YS1oeWJyaWQ9IjAiPgoJPC9kaXY+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJbWFnZUNvbnRhaW5lciBmbGV4LWNlbnRlciBhbGlnbi1jZW50ZXIgIj4KCQkJCTxhIHRpdGxlPSJIeXVuZGFpIEtvbmEgMjAyNSIgaHJlZj0iP3BhdGg9L25ldWZzL0h5dW5kYWktS29uYS0yMDI1Lmh0bWwiPgoJCQkJCTxpbWcgYWx0PSJIeXVuZGFpIEtvbmEgMjAyNSIgYm9yZGVyPSIwIiBjbGFzcz0ibGF6eWxvYWQgb3B0YW5vbi1jYXRlZ29yeS1DMDAwMSIgZGF0YS1pbWdzcmM9Imh0dHBzOi8vY2FyaW1hZ2VzLmQyY21lZGlhLmNhL25ld2NhcmltYWdlcy9mci9IeXVuZGFpL0tvbmEvMjAyNS80NjE4ODgvUmVkL3Byb2ZpbGUud2VicCIgZGF0YS1vdC1pZ25vcmUgZGF0YS1jb29raWVjb25zZW50PSJpZ25vcmUiPgoJCQkJPC9hPgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyRm9vdGVyQ29udGFpbmVyIHN0YWNrLWxjIC0tcy05Ij4KCQkJCQk8ZGl2IGNsYXNzPSJjYXJQYXltZW50V3JhcHBlciI+CgkJCTxkaXYgY2xhc3M9ImNvbnRlbnQtc2tlbGV0b24gaHRtbC1ibG9jayIgZGF0YS1ibG9jaz0icGF5bWVudEJsb2NrIiBkYXRhLXR5cGU9ImJsb2NrIiBkYXRhLXNvdXJjZT0ic2VydmVyIiBkYXRhLWNhbGxiYWNrPSJwYXltZW50Q2FsY0Jsb2NrIj4KCQkKCTxpbnB1dCBuYW1lPSJibG9jay1kYXRhIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSJ7JnF1b3Q7c3R5bGVpZCZxdW90OzomcXVvdDs0NjE4ODgmcXVvdDssJnF1b3Q7dGl0bGUmcXVvdDs6JnF1b3Q7SHl1bmRhaSBLb25hIDIwMjUmcXVvdDssJnF1b3Q7aHJlZiZxdW90OzomcXVvdDtcL25ldWZzXC9IeXVuZGFpLUtvbmEtMjAyNS5odG1sJnF1b3Q7LCZxdW90O2xpbmtzdHlsZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7bGlua2NsYXNzJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtjb250YWluZXJjbGFzcyZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7cHJvbW90ZXh0JnF1b3Q7OiZxdW90O0RcdTAwZTljb3V2cmV6IGwnb2ZmcmUhJnF1b3Q7fSI+Cgk8L2Rpdj4KCTwvZGl2PgoJCQkJCgkJCTwvZGl2PgoJCTwvZGl2PgoJPC9kaXY+CTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZU91dGVyQm94ICByZWJhdGVCb3JkZXJDb2xvciIgaWQ9ImZieF9zdXZfMyI+CgkJCgkJPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlSW5uZXJCb3giIGlkPSIiPgoJCQkKCQkJPGRpdiBjbGFzcz0iZGl2Q2FyVGl0bGVDb250YWluZXIiPgoJCQkJPGEgdGl0bGU9Ikh5dW5kYWkgUGFsaXNhZGUgMjAyNiIgaHJlZj0iP3BhdGg9L25ldWZzL0h5dW5kYWktUGFsaXNhZGUtMjAyNi5odG1sIiBkYXRhLW1ha2U9Ikh5dW5kYWkiIGRhdGEtbW9kZWw9IlBhbGlzYWRlIDIwMjYiPgoJCQkJCTxoMz4KCQkJCQkJPHNwYW4gY2xhc3M9InNwYW5DYXJNYWtlICI+SHl1bmRhaTwvc3Bhbj48YnI+CgkJCQkJCTxzcGFuIGNsYXNzPSJtb2RlbE5hbWUgc3Bhbk1vZGVsTmFtZSI+UGFsaXNhZGUgMjAyNjwvc3Bhbj4KCQkJCQk8L2gzPgoJCQkJPC9hPgoJCQkJICAgIDwhLS0gT1BFTiBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgogICAgPGRpdiBjbGFzcz0iZGl2TmV3Q2FyU3RhcnRQcmljZSI+CiAgICAgICAgw6AgcGFydGlyIGRlCiAgICAgICAgPHNwYW4gY2xhc3M9IiI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjU2IDc0Njwvc3Bhbj48L3NwYW4+CiAgICAgICAgPGkgc3R5bGU9ImNvbG9yOiMwMDA7Zm9udC1zaXplOjIwcHg7IiBjbGFzcz0iY2FyUHJpY2VJbml0aWFsVG9vbFRpcEljb24gZmFsIGZhLWluZm8tY2lyY2xlIGJsYWNrQ29sb3JCb2xkIiBkYXRhLXRvb2x0aXA9IiZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7UERTRjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs1MyA2OTkmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUcmFuc3BvcnQgJmFtcDsgUHLDqXBhcmF0aW9uOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzIgMTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgZCdhZG1pbmlzdHJhdGlvbiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0Ozc5OSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O0ZyYWlzIFJEUFJNJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NDgmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUYXhlIEFDOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzEwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RvdGFsJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NTYgNzQ2Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyI+PC9pPgogICAgPC9kaXY+CiAgICA8IS0tIENMT1NFIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CgkJCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW5TdG9ja0xpbmsiIGhpZGRlbj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgZGF0YS10eXBlPSJpbnZkYXRhIiBkYXRhLW1ha2U9Ikh5dW5kYWkiIGRhdGEtbW9kZWw9IlBhbGlzYWRlIiBkYXRhLXllYXI9IjIwMjYiIGRhdGEtc3R5bGVpZHM9IjQ4MDE4Niw0ODAxODgsNDgwMTg3IiBkYXRhLWh5YnJpZD0iMCI+Cgk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckltYWdlQ29udGFpbmVyIGZsZXgtY2VudGVyIGFsaWduLWNlbnRlciAiPgoJCQkJPGEgdGl0bGU9Ikh5dW5kYWkgUGFsaXNhZGUgMjAyNiIgaHJlZj0iP3BhdGg9L25ldWZzL0h5dW5kYWktUGFsaXNhZGUtMjAyNi5odG1sIj4KCQkJCQk8aW1nIGFsdD0iSHl1bmRhaSBQYWxpc2FkZSAyMDI2IiBib3JkZXI9IjAiIGNsYXNzPSJsYXp5bG9hZCBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLWltZ3NyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0h5dW5kYWkvUGFsaXNhZGUvMjAyNi80ODAxODYvUmVkL3Byb2ZpbGUud2VicCIgZGF0YS1vdC1pZ25vcmUgZGF0YS1jb29raWVjb25zZW50PSJpZ25vcmUiPgoJCQkJPC9hPgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyRm9vdGVyQ29udGFpbmVyIHN0YWNrLWxjIC0tcy05Ij4KCQkJCQk8ZGl2IGNsYXNzPSJjYXJQYXltZW50V3JhcHBlciI+CgkJCTxkaXYgY2xhc3M9ImNvbnRlbnQtc2tlbGV0b24gaHRtbC1ibG9jayIgZGF0YS1ibG9jaz0icGF5bWVudEJsb2NrIiBkYXRhLXR5cGU9ImJsb2NrIiBkYXRhLXNvdXJjZT0ic2VydmVyIiBkYXRhLWNhbGxiYWNrPSJwYXltZW50Q2FsY0Jsb2NrIj4KCQkKCTxpbnB1dCBuYW1lPSJibG9jay1kYXRhIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSJ7JnF1b3Q7c3R5bGVpZCZxdW90OzomcXVvdDs0ODAxODYmcXVvdDssJnF1b3Q7dGl0bGUmcXVvdDs6JnF1b3Q7SHl1bmRhaSBQYWxpc2FkZSAyMDI2JnF1b3Q7LCZxdW90O2hyZWYmcXVvdDs6JnF1b3Q7XC9uZXVmc1wvSHl1bmRhaS1QYWxpc2FkZS0yMDI2Lmh0bWwmcXVvdDssJnF1b3Q7bGlua3N0eWxlJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtsaW5rY2xhc3MmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2NvbnRhaW5lcmNsYXNzJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtwcm9tb3RleHQmcXVvdDs6JnF1b3Q7RFx1MDBlOWNvdXZyZXogbCdvZmZyZSEmcXVvdDt9Ij4KCTwvZGl2PgoJPC9kaXY+CgkJCQkKCQkJPC9kaXY+CgkJPC9kaXY+Cgk8L2Rpdj4JPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggIHJlYmF0ZUJvcmRlckNvbG9yIiBpZD0iZmJ4X3N1dl80Ij4KCQk8ZGl2IGNsYXNzPSJyZWJhdGVUYWciPjxzcGFuIGNsYXNzPSJyZWJhdGVUZXh0Ij5yYWJhaXMganVzcXUnw6A8L3NwYW4+PHNwYW4gY2xhc3M9InJlYmF0ZUFtb3VudCI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjUwMDwvc3Bhbj48L3NwYW4+PC9kaXY+CgkJPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlSW5uZXJCb3giIGlkPSIiPgoJCQkKCQkJPGRpdiBjbGFzcz0iZGl2Q2FyVGl0bGVDb250YWluZXIiPgoJCQkJPGEgdGl0bGU9Ikh5dW5kYWkgUGFsaXNhZGUgMjAyNSIgaHJlZj0iP3BhdGg9L25ldWZzL0h5dW5kYWktUGFsaXNhZGUtMjAyNS5odG1sIiBkYXRhLW1ha2U9Ikh5dW5kYWkiIGRhdGEtbW9kZWw9IlBhbGlzYWRlIDIwMjUiPgoJCQkJCTxoMz4KCQkJCQkJPHNwYW4gY2xhc3M9InNwYW5DYXJNYWtlICI+SHl1bmRhaTwvc3Bhbj48YnI+CgkJCQkJCTxzcGFuIGNsYXNzPSJtb2RlbE5hbWUgc3Bhbk1vZGVsTmFtZSI+UGFsaXNhZGUgMjAyNTwvc3Bhbj4KCQkJCQk8L2gzPgoJCQkJPC9hPgoJCQkJICAgIDwhLS0gT1BFTiBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgogICAgPGRpdiBjbGFzcz0iZGl2TmV3Q2FyU3RhcnRQcmljZSI+CiAgICAgICAgw6AgcGFydGlyIGRlCiAgICAgICAgPHNwYW4gY2xhc3M9InN0cmlrZS1wcmljZSI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjUyIDc0Nzwvc3Bhbj48L3NwYW4+CiAgICAgICAgPGkgc3R5bGU9ImNvbG9yOiMwMDA7Zm9udC1zaXplOjIwcHg7IiBjbGFzcz0iY2FyUHJpY2VJbml0aWFsVG9vbFRpcEljb24gZmFsIGZhLWluZm8tY2lyY2xlIGJsYWNrQ29sb3JCb2xkIiBkYXRhLXRvb2x0aXA9JyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7UERTRjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7NTAgNDk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7VHJhbnNwb3J0ICZhbXA7IFByw6lwYXJhdGlvbjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MiAxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtGcmFpcyBSRFBSTSZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDs0OCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1RheGUgQUM6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzEwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1RvdGFsJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzUyIDc0NyZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsnPjwvaT4KICAgIDwvZGl2PgogICAgPCEtLSBDTE9TRSBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPjwhLS0gT1BFTiBORVcgQ0FSIFBST01PIFBSSUNFICgyNzQpLS0+PGRpdiBjbGFzcz0iZGl2TmV3Q2FyUHJvbW9QcmljZSI+ZW4gcmFiYWlzIMOgIDxzcGFuIGNsYXNzPSJzdHJpa2UtcHJpY2UiIHN0eWxlPSJjb2xvcjogIzAwMmM1ZjsiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj41MiAyNDc8L3NwYW4+PC9zcGFuPjwvZGl2PjwhLS0gQ0xPU0UgTkVXIENBUiBQUk9NTyBQUklDRSAoMjgxKS0tPgoJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckluU3RvY2tMaW5rIiBoaWRkZW4+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGRhdGEtdHlwZT0iaW52ZGF0YSIgZGF0YS1tYWtlPSJIeXVuZGFpIiBkYXRhLW1vZGVsPSJQYWxpc2FkZSIgZGF0YS15ZWFyPSIyMDI1IiBkYXRhLXN0eWxlaWRzPSI0NjA1NzYsNDU2MDE2LDQ1NjAxNyw0NTYwMTgsNDU2MDE5LDQ1NjAyMCIgZGF0YS1oeWJyaWQ9IjAiPgoJPC9kaXY+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJbWFnZUNvbnRhaW5lciBmbGV4LWNlbnRlciBhbGlnbi1jZW50ZXIgIj4KCQkJCTxhIHRpdGxlPSJIeXVuZGFpIFBhbGlzYWRlIDIwMjUiIGhyZWY9Ij9wYXRoPS9uZXVmcy9IeXVuZGFpLVBhbGlzYWRlLTIwMjUuaHRtbCI+CgkJCQkJPGltZyBhbHQ9Ikh5dW5kYWkgUGFsaXNhZGUgMjAyNSIgYm9yZGVyPSIwIiBjbGFzcz0ibGF6eWxvYWQgb3B0YW5vbi1jYXRlZ29yeS1DMDAwMSIgZGF0YS1pbWdzcmM9Imh0dHBzOi8vY2FyaW1hZ2VzLmQyY21lZGlhLmNhL25ld2NhcmltYWdlcy9mci9IeXVuZGFpL1BhbGlzYWRlLzIwMjUvNDYwNTc2L1JlZC9wcm9maWxlLndlYnAiIGRhdGEtb3QtaWdub3JlIGRhdGEtY29va2llY29uc2VudD0iaWdub3JlIj4KCQkJCTwvYT4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckZvb3RlckNvbnRhaW5lciBzdGFjay1sYyAtLXMtOSI+CgkJCQkJPGRpdiBjbGFzcz0iY2FyUGF5bWVudFdyYXBwZXIiPgoJCQk8ZGl2IGNsYXNzPSJjb250ZW50LXNrZWxldG9uIGh0bWwtYmxvY2siIGRhdGEtYmxvY2s9InBheW1lbnRCbG9jayIgZGF0YS10eXBlPSJibG9jayIgZGF0YS1zb3VyY2U9InNlcnZlciIgZGF0YS1jYWxsYmFjaz0icGF5bWVudENhbGNCbG9jayI+CgkJCgk8aW5wdXQgbmFtZT0iYmxvY2stZGF0YSIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0ieyZxdW90O3N0eWxlaWQmcXVvdDs6JnF1b3Q7NDYwNTc2JnF1b3Q7LCZxdW90O3RpdGxlJnF1b3Q7OiZxdW90O0h5dW5kYWkgUGFsaXNhZGUgMjAyNSZxdW90OywmcXVvdDtocmVmJnF1b3Q7OiZxdW90O1wvbmV1ZnNcL0h5dW5kYWktUGFsaXNhZGUtMjAyNS5odG1sJnF1b3Q7LCZxdW90O2xpbmtzdHlsZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7bGlua2NsYXNzJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtjb250YWluZXJjbGFzcyZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7cHJvbW90ZXh0JnF1b3Q7OiZxdW90O0RcdTAwZTljb3V2cmV6IGwnb2ZmcmUhJnF1b3Q7fSI+Cgk8L2Rpdj4KCTwvZGl2PgoJCQkJCgkJCTwvZGl2PgoJCTwvZGl2PgoJPC9kaXY+CTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZU91dGVyQm94ICByZWJhdGVCb3JkZXJDb2xvciIgaWQ9ImZieF9zdXZfNSI+CgkJCgkJPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlSW5uZXJCb3giIGlkPSIiPgoJCQkKCQkJPGRpdiBjbGFzcz0iZGl2Q2FyVGl0bGVDb250YWluZXIiPgoJCQkJPGEgdGl0bGU9Ikh5dW5kYWkgU2FudGEgRmUgMjAyNSIgaHJlZj0iP3BhdGg9L25ldWZzL0h5dW5kYWktU2FudGFfRmUtMjAyNS5odG1sIiBkYXRhLW1ha2U9Ikh5dW5kYWkiIGRhdGEtbW9kZWw9IlNhbnRhIEZlIDIwMjUiPgoJCQkJCTxoMz4KCQkJCQkJPHNwYW4gY2xhc3M9InNwYW5DYXJNYWtlICI+SHl1bmRhaTwvc3Bhbj48YnI+CgkJCQkJCTxzcGFuIGNsYXNzPSJtb2RlbE5hbWUgc3Bhbk1vZGVsTmFtZSI+U2FudGEgRmUgMjAyNTwvc3Bhbj4KCQkJCQk8L2gzPgoJCQkJPC9hPgoJCQkJICAgIDwhLS0gT1BFTiBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgogICAgPGRpdiBjbGFzcz0iZGl2TmV3Q2FyU3RhcnRQcmljZSI+CiAgICAgICAgw6AgcGFydGlyIGRlCiAgICAgICAgPHNwYW4gY2xhc3M9IiI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjUwIDI0Nzwvc3Bhbj48L3NwYW4+CiAgICAgICAgPGkgc3R5bGU9ImNvbG9yOiMwMDA7Zm9udC1zaXplOjIwcHg7IiBjbGFzcz0iY2FyUHJpY2VJbml0aWFsVG9vbFRpcEljb24gZmFsIGZhLWluZm8tY2lyY2xlIGJsYWNrQ29sb3JCb2xkIiBkYXRhLXRvb2x0aXA9JyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7UERTRjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7NDcgOTk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7VHJhbnNwb3J0ICZhbXA7IFByw6lwYXJhdGlvbjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MiAxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtGcmFpcyBSRFBSTSZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDs0OCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1RheGUgQUM6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzEwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1RvdGFsJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzUwIDI0NyZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsnPjwvaT4KICAgIDwvZGl2PgogICAgPCEtLSBDTE9TRSBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgoJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckluU3RvY2tMaW5rIiBoaWRkZW4+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGRhdGEtdHlwZT0iaW52ZGF0YSIgZGF0YS1tYWtlPSJIeXVuZGFpIiBkYXRhLW1vZGVsPSJTYW50YSBGZSIgZGF0YS15ZWFyPSIyMDI1IiBkYXRhLXN0eWxlaWRzPSI0NjMyODUsNDYzMjg2LDQ2MzI4Nyw0NjMyODgiIGRhdGEtaHlicmlkPSIwIj4KCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW1hZ2VDb250YWluZXIgZmxleC1jZW50ZXIgYWxpZ24tY2VudGVyICI+CgkJCQk8YSB0aXRsZT0iSHl1bmRhaSBTYW50YSBGZSAyMDI1IiBocmVmPSI\/cGF0aD0vbmV1ZnMvSHl1bmRhaS1TYW50YV9GZS0yMDI1Lmh0bWwiPgoJCQkJCTxpbWcgYWx0PSJIeXVuZGFpIFNhbnRhIEZlIDIwMjUiIGJvcmRlcj0iMCIgY2xhc3M9Imxhenlsb2FkIG9wdGFub24tY2F0ZWdvcnktQzAwMDEiIGRhdGEtaW1nc3JjPSJodHRwczovL2NhcmltYWdlcy5kMmNtZWRpYS5jYS9uZXdjYXJpbWFnZXMvZnIvSHl1bmRhaS9TYW50YV9GZS8yMDI1LzQ2MzI4NS9SZWQvcHJvZmlsZS53ZWJwIiBkYXRhLW90LWlnbm9yZSBkYXRhLWNvb2tpZWNvbnNlbnQ9Imlnbm9yZSI+CgkJCQk8L2E+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJGb290ZXJDb250YWluZXIgc3RhY2stbGMgLS1zLTkiPgoJCQkJCTxkaXYgY2xhc3M9ImNhclBheW1lbnRXcmFwcGVyIj4KCQkJPGRpdiBjbGFzcz0iY29udGVudC1za2VsZXRvbiBodG1sLWJsb2NrIiBkYXRhLWJsb2NrPSJwYXltZW50QmxvY2siIGRhdGEtdHlwZT0iYmxvY2siIGRhdGEtc291cmNlPSJzZXJ2ZXIiIGRhdGEtY2FsbGJhY2s9InBheW1lbnRDYWxjQmxvY2siPgoJCQoJPGlucHV0IG5hbWU9ImJsb2NrLWRhdGEiIHR5cGU9ImhpZGRlbiIgdmFsdWU9InsmcXVvdDtzdHlsZWlkJnF1b3Q7OiZxdW90OzQ2MzI4NSZxdW90OywmcXVvdDt0aXRsZSZxdW90OzomcXVvdDtIeXVuZGFpIFNhbnRhIEZlIDIwMjUmcXVvdDssJnF1b3Q7aHJlZiZxdW90OzomcXVvdDtcL25ldWZzXC9IeXVuZGFpLVNhbnRhX0ZlLTIwMjUuaHRtbCZxdW90OywmcXVvdDtsaW5rc3R5bGUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2xpbmtjbGFzcyZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7Y29udGFpbmVyY2xhc3MmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3Byb21vdGV4dCZxdW90OzomcXVvdDtEXHUwMGU5Y291dnJleiBsJ29mZnJlISZxdW90O30iPgoJPC9kaXY+Cgk8L2Rpdj4KCQkJCQoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2Pgk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVPdXRlckJveCAgcmViYXRlQm9yZGVyQ29sb3IiIGlkPSJmYnhfc3V2XzYiPgoJCQoJCTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZUlubmVyQm94IiBpZD0iIj4KCQkJCgkJCTxkaXYgY2xhc3M9ImRpdkNhclRpdGxlQ29udGFpbmVyIj4KCQkJCTxhIHRpdGxlPSJIeXVuZGFpIFR1Y3NvbiAyMDI2IiBocmVmPSI\/cGF0aD0vbmV1ZnMvSHl1bmRhaS1UdWNzb24tMjAyNi5odG1sIiBkYXRhLW1ha2U9Ikh5dW5kYWkiIGRhdGEtbW9kZWw9IlR1Y3NvbiAyMDI2Ij4KCQkJCQk8aDM+CgkJCQkJCTxzcGFuIGNsYXNzPSJzcGFuQ2FyTWFrZSAiPkh5dW5kYWk8L3NwYW4+PGJyPgoJCQkJCQk8c3BhbiBjbGFzcz0ibW9kZWxOYW1lIHNwYW5Nb2RlbE5hbWUiPlR1Y3NvbiAyMDI2PC9zcGFuPgoJCQkJCTwvaDM+CgkJCQk8L2E+CgkJCQkgICAgPCEtLSBPUEVOIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CiAgICA8ZGl2IGNsYXNzPSJkaXZOZXdDYXJTdGFydFByaWNlIj4KICAgICAgICDDoCBwYXJ0aXIgZGUKICAgICAgICA8c3BhbiBjbGFzcz0iIj4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+MzggMDk2PC9zcGFuPjwvc3Bhbj4KICAgICAgICA8aSBzdHlsZT0iY29sb3I6IzAwMDtmb250LXNpemU6MjBweDsiIGNsYXNzPSJjYXJQcmljZUluaXRpYWxUb29sVGlwSWNvbiBmYWwgZmEtaW5mby1jaXJjbGUgYmxhY2tDb2xvckJvbGQiIGRhdGEtdG9vbHRpcD0iJmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtQRFNGOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzM1IDA5OSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RyYW5zcG9ydCAmYW1wOyBQcsOpcGFyYXRpb246Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MiAwNTAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBkJ2FkbWluaXN0cmF0aW9uJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7Nzk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgUkRQUk0mbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs0OCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RheGUgQUM6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VG90YWwmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDszOCAwOTYmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Ij48L2k+CiAgICA8L2Rpdj4KICAgIDwhLS0gQ0xPU0UgTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJblN0b2NrTGluayIgaGlkZGVuPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBkYXRhLXR5cGU9ImludmRhdGEiIGRhdGEtbWFrZT0iSHl1bmRhaSIgZGF0YS1tb2RlbD0iVHVjc29uIiBkYXRhLXllYXI9IjIwMjYiIGRhdGEtc3R5bGVpZHM9IjQ4MDU4MCw0ODA1NzgsNDgwNTgxLDQ4MDU3OSIgZGF0YS1oeWJyaWQ9IjAiPgoJPC9kaXY+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJbWFnZUNvbnRhaW5lciBmbGV4LWNlbnRlciBhbGlnbi1jZW50ZXIgIj4KCQkJCTxhIHRpdGxlPSJIeXVuZGFpIFR1Y3NvbiAyMDI2IiBocmVmPSI\/cGF0aD0vbmV1ZnMvSHl1bmRhaS1UdWNzb24tMjAyNi5odG1sIj4KCQkJCQk8aW1nIGFsdD0iSHl1bmRhaSBUdWNzb24gMjAyNiIgYm9yZGVyPSIwIiBjbGFzcz0ibGF6eWxvYWQgb3B0YW5vbi1jYXRlZ29yeS1DMDAwMSIgZGF0YS1pbWdzcmM9Imh0dHBzOi8vY2FyaW1hZ2VzLmQyY21lZGlhLmNhL25ld2NhcmltYWdlcy9mci9IeXVuZGFpL1R1Y3Nvbi8yMDI2LzQ4MDU4MC9SZWQvcHJvZmlsZS53ZWJwIiBkYXRhLW90LWlnbm9yZSBkYXRhLWNvb2tpZWNvbnNlbnQ9Imlnbm9yZSI+CgkJCQk8L2E+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJGb290ZXJDb250YWluZXIgc3RhY2stbGMgLS1zLTkiPgoJCQkJCTxkaXYgY2xhc3M9ImNhclBheW1lbnRXcmFwcGVyIj4KCQkJPGRpdiBjbGFzcz0iY29udGVudC1za2VsZXRvbiBodG1sLWJsb2NrIiBkYXRhLWJsb2NrPSJwYXltZW50QmxvY2siIGRhdGEtdHlwZT0iYmxvY2siIGRhdGEtc291cmNlPSJzZXJ2ZXIiIGRhdGEtY2FsbGJhY2s9InBheW1lbnRDYWxjQmxvY2siPgoJCQoJPGlucHV0IG5hbWU9ImJsb2NrLWRhdGEiIHR5cGU9ImhpZGRlbiIgdmFsdWU9InsmcXVvdDtzdHlsZWlkJnF1b3Q7OiZxdW90OzQ4MDU4MCZxdW90OywmcXVvdDt0aXRsZSZxdW90OzomcXVvdDtIeXVuZGFpIFR1Y3NvbiAyMDI2JnF1b3Q7LCZxdW90O2hyZWYmcXVvdDs6JnF1b3Q7XC9uZXVmc1wvSHl1bmRhaS1UdWNzb24tMjAyNi5odG1sJnF1b3Q7LCZxdW90O2xpbmtzdHlsZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7bGlua2NsYXNzJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtjb250YWluZXJjbGFzcyZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7cHJvbW90ZXh0JnF1b3Q7OiZxdW90O0RcdTAwZTljb3V2cmV6IGwnb2ZmcmUhJnF1b3Q7fSI+Cgk8L2Rpdj4KCTwvZGl2PgoJCQkJCgkJCTwvZGl2PgoJCTwvZGl2PgoJPC9kaXY+CTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZU91dGVyQm94ICByZWJhdGVCb3JkZXJDb2xvciIgaWQ9ImZieF9zdXZfNyI+CgkJPGRpdiBjbGFzcz0icmViYXRlVGFnIj48c3BhbiBjbGFzcz0icmViYXRlVGV4dCI+cmFiYWlzIGp1c3F1J8OgPC9zcGFuPjxzcGFuIGNsYXNzPSJyZWJhdGVBbW91bnQiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj41MDA8L3NwYW4+PC9zcGFuPjwvZGl2PgoJCTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZUlubmVyQm94IiBpZD0iIj4KCQkJCgkJCTxkaXYgY2xhc3M9ImRpdkNhclRpdGxlQ29udGFpbmVyIj4KCQkJCTxhIHRpdGxlPSJIeXVuZGFpIFR1Y3NvbiAyMDI1IiBocmVmPSI\/cGF0aD0vbmV1ZnMvSHl1bmRhaS1UdWNzb24tMjAyNS5odG1sIiBkYXRhLW1ha2U9Ikh5dW5kYWkiIGRhdGEtbW9kZWw9IlR1Y3NvbiAyMDI1Ij4KCQkJCQk8aDM+CgkJCQkJCTxzcGFuIGNsYXNzPSJzcGFuQ2FyTWFrZSAiPkh5dW5kYWk8L3NwYW4+PGJyPgoJCQkJCQk8c3BhbiBjbGFzcz0ibW9kZWxOYW1lIHNwYW5Nb2RlbE5hbWUiPlR1Y3NvbiAyMDI1PC9zcGFuPgoJCQkJCTwvaDM+CgkJCQk8L2E+CgkJCQkgICAgPCEtLSBPUEVOIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CiAgICA8ZGl2IGNsYXNzPSJkaXZOZXdDYXJTdGFydFByaWNlIj4KICAgICAgICDDoCBwYXJ0aXIgZGUKICAgICAgICA8c3BhbiBjbGFzcz0ic3RyaWtlLXByaWNlIj4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+MzYgODk3PC9zcGFuPjwvc3Bhbj4KICAgICAgICA8aSBzdHlsZT0iY29sb3I6IzAwMDtmb250LXNpemU6MjBweDsiIGNsYXNzPSJjYXJQcmljZUluaXRpYWxUb29sVGlwSWNvbiBmYWwgZmEtaW5mby1jaXJjbGUgYmxhY2tDb2xvckJvbGQiIGRhdGEtdG9vbHRpcD0nJmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtQRFNGOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDszNCA2OTkmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtUcmFuc3BvcnQgJmFtcDsgUHLDqXBhcmF0aW9uOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDsyIDA1MCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O0ZyYWlzIFJEUFJNJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzQ4Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7VGF4ZSBBQzombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7VG90YWwmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7MzYgODk3Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0Oyc+PC9pPgogICAgPC9kaXY+CiAgICA8IS0tIENMT1NFIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+PCEtLSBPUEVOIE5FVyBDQVIgUFJPTU8gUFJJQ0UgKDI3NCktLT48ZGl2IGNsYXNzPSJkaXZOZXdDYXJQcm9tb1ByaWNlIj5lbiByYWJhaXMgw6AgPHNwYW4gY2xhc3M9InN0cmlrZS1wcmljZSIgc3R5bGU9ImNvbG9yOiAjMDAyYzVmOyI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjM2IDM5Nzwvc3Bhbj48L3NwYW4+PC9kaXY+PCEtLSBDTE9TRSBORVcgQ0FSIFBST01PIFBSSUNFICgyODEpLS0+CgkJCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW5TdG9ja0xpbmsiIGhpZGRlbj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgZGF0YS10eXBlPSJpbnZkYXRhIiBkYXRhLW1ha2U9Ikh5dW5kYWkiIGRhdGEtbW9kZWw9IlR1Y3NvbiIgZGF0YS15ZWFyPSIyMDI1IiBkYXRhLXN0eWxlaWRzPSI0NjE5MTMsNDc4MjM0LDQ2MTkxNCw0NzgyMzUsNDYxOTE1IiBkYXRhLWh5YnJpZD0iMCI+Cgk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckltYWdlQ29udGFpbmVyIGZsZXgtY2VudGVyIGFsaWduLWNlbnRlciAiPgoJCQkJPGEgdGl0bGU9Ikh5dW5kYWkgVHVjc29uIDIwMjUiIGhyZWY9Ij9wYXRoPS9uZXVmcy9IeXVuZGFpLVR1Y3Nvbi0yMDI1Lmh0bWwiPgoJCQkJCTxpbWcgYWx0PSJIeXVuZGFpIFR1Y3NvbiAyMDI1IiBib3JkZXI9IjAiIGNsYXNzPSJsYXp5bG9hZCBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLWltZ3NyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0h5dW5kYWkvVHVjc29uLzIwMjUvNDYxOTEzL1JlZC9wcm9maWxlLndlYnAiIGRhdGEtb3QtaWdub3JlIGRhdGEtY29va2llY29uc2VudD0iaWdub3JlIj4KCQkJCTwvYT4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckZvb3RlckNvbnRhaW5lciBzdGFjay1sYyAtLXMtOSI+CgkJCQkJPGRpdiBjbGFzcz0iY2FyUGF5bWVudFdyYXBwZXIiPgoJCQk8ZGl2IGNsYXNzPSJjb250ZW50LXNrZWxldG9uIGh0bWwtYmxvY2siIGRhdGEtYmxvY2s9InBheW1lbnRCbG9jayIgZGF0YS10eXBlPSJibG9jayIgZGF0YS1zb3VyY2U9InNlcnZlciIgZGF0YS1jYWxsYmFjaz0icGF5bWVudENhbGNCbG9jayI+CgkJCgk8aW5wdXQgbmFtZT0iYmxvY2stZGF0YSIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0ieyZxdW90O3N0eWxlaWQmcXVvdDs6JnF1b3Q7NDYxOTEzJnF1b3Q7LCZxdW90O3RpdGxlJnF1b3Q7OiZxdW90O0h5dW5kYWkgVHVjc29uIDIwMjUmcXVvdDssJnF1b3Q7aHJlZiZxdW90OzomcXVvdDtcL25ldWZzXC9IeXVuZGFpLVR1Y3Nvbi0yMDI1Lmh0bWwmcXVvdDssJnF1b3Q7bGlua3N0eWxlJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtsaW5rY2xhc3MmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2NvbnRhaW5lcmNsYXNzJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtwcm9tb3RleHQmcXVvdDs6JnF1b3Q7RFx1MDBlOWNvdXZyZXogbCdvZmZyZSEmcXVvdDt9Ij4KCTwvZGl2PgoJPC9kaXY+CgkJCQkKCQkJPC9kaXY+CgkJPC9kaXY+Cgk8L2Rpdj4JPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggIHJlYmF0ZUJvcmRlckNvbG9yIiBpZD0iZmJ4X3N1dl84Ij4KCQkKCQk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVJbm5lckJveCIgaWQ9IiI+CgkJCQoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJUaXRsZUNvbnRhaW5lciI+CgkJCQk8YSB0aXRsZT0iSHl1bmRhaSBWZW51ZSAyMDI2IiBocmVmPSI\/cGF0aD0vbmV1ZnMvSHl1bmRhaS1WZW51ZS0yMDI2Lmh0bWwiIGRhdGEtbWFrZT0iSHl1bmRhaSIgZGF0YS1tb2RlbD0iVmVudWUgMjAyNiI+CgkJCQkJPGgzPgoJCQkJCQk8c3BhbiBjbGFzcz0ic3BhbkNhck1ha2UgIj5IeXVuZGFpPC9zcGFuPjxicj4KCQkJCQkJPHNwYW4gY2xhc3M9Im1vZGVsTmFtZSBzcGFuTW9kZWxOYW1lIj5WZW51ZSAyMDI2PC9zcGFuPgoJCQkJCTwvaDM+CgkJCQk8L2E+CgkJCQkgICAgPCEtLSBPUEVOIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CiAgICA8ZGl2IGNsYXNzPSJkaXZOZXdDYXJTdGFydFByaWNlIj4KICAgICAgICDDoCBwYXJ0aXIgZGUKICAgICAgICA8c3BhbiBjbGFzcz0iIj4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+MjQgOTk2PC9zcGFuPjwvc3Bhbj4KICAgICAgICA8aSBzdHlsZT0iY29sb3I6IzAwMDtmb250LXNpemU6MjBweDsiIGNsYXNzPSJjYXJQcmljZUluaXRpYWxUb29sVGlwSWNvbiBmYWwgZmEtaW5mby1jaXJjbGUgYmxhY2tDb2xvckJvbGQiIGRhdGEtdG9vbHRpcD0iJmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtQRFNGOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzIxIDk5OSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RyYW5zcG9ydCAmYW1wOyBQcsOpcGFyYXRpb246Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MiAwNTAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBkJ2FkbWluaXN0cmF0aW9uJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7Nzk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgUkRQUk0mbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs0OCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RheGUgQUM6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VG90YWwmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsyNCA5OTYmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Ij48L2k+CiAgICA8L2Rpdj4KICAgIDwhLS0gQ0xPU0UgTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJblN0b2NrTGluayIgaGlkZGVuPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBkYXRhLXR5cGU9ImludmRhdGEiIGRhdGEtbWFrZT0iSHl1bmRhaSIgZGF0YS1tb2RlbD0iVmVudWUiIGRhdGEteWVhcj0iMjAyNiIgZGF0YS1zdHlsZWlkcz0iNDgwMzAwLDQ4MDMwMSw0ODAzMDIsNDgwMzAzLDQ4MDMwNCw0ODAzMDUiIGRhdGEtaHlicmlkPSIwIj4KCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW1hZ2VDb250YWluZXIgZmxleC1jZW50ZXIgYWxpZ24tY2VudGVyICI+CgkJCQk8YSB0aXRsZT0iSHl1bmRhaSBWZW51ZSAyMDI2IiBocmVmPSI\/cGF0aD0vbmV1ZnMvSHl1bmRhaS1WZW51ZS0yMDI2Lmh0bWwiPgoJCQkJCTxpbWcgYWx0PSJIeXVuZGFpIFZlbnVlIDIwMjYiIGJvcmRlcj0iMCIgY2xhc3M9Imxhenlsb2FkIG9wdGFub24tY2F0ZWdvcnktQzAwMDEiIGRhdGEtaW1nc3JjPSJodHRwczovL2NhcmltYWdlcy5kMmNtZWRpYS5jYS9uZXdjYXJpbWFnZXMvZnIvSHl1bmRhaS9WZW51ZS8yMDI2LzQ4MDMwMC9SZWQvcHJvZmlsZS53ZWJwIiBkYXRhLW90LWlnbm9yZSBkYXRhLWNvb2tpZWNvbnNlbnQ9Imlnbm9yZSI+CgkJCQk8L2E+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJGb290ZXJDb250YWluZXIgc3RhY2stbGMgLS1zLTkiPgoJCQkJCTxkaXYgY2xhc3M9ImNhclBheW1lbnRXcmFwcGVyIj4KCQkJPGRpdiBjbGFzcz0iY29udGVudC1za2VsZXRvbiBodG1sLWJsb2NrIiBkYXRhLWJsb2NrPSJwYXltZW50QmxvY2siIGRhdGEtdHlwZT0iYmxvY2siIGRhdGEtc291cmNlPSJzZXJ2ZXIiIGRhdGEtY2FsbGJhY2s9InBheW1lbnRDYWxjQmxvY2siPgoJCQoJPGlucHV0IG5hbWU9ImJsb2NrLWRhdGEiIHR5cGU9ImhpZGRlbiIgdmFsdWU9InsmcXVvdDtzdHlsZWlkJnF1b3Q7OiZxdW90OzQ4MDMwMCZxdW90OywmcXVvdDt0aXRsZSZxdW90OzomcXVvdDtIeXVuZGFpIFZlbnVlIDIwMjYmcXVvdDssJnF1b3Q7aHJlZiZxdW90OzomcXVvdDtcL25ldWZzXC9IeXVuZGFpLVZlbnVlLTIwMjYuaHRtbCZxdW90OywmcXVvdDtsaW5rc3R5bGUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2xpbmtjbGFzcyZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7Y29udGFpbmVyY2xhc3MmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3Byb21vdGV4dCZxdW90OzomcXVvdDtEXHUwMGU5Y291dnJleiBsJ29mZnJlISZxdW90O30iPgoJPC9kaXY+Cgk8L2Rpdj4KCQkJCQoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2Pgk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVPdXRlckJveCAgcmViYXRlQm9yZGVyQ29sb3IiIGlkPSJmYnhfc3V2XzkiPgoJCQoJCTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZUlubmVyQm94IiBpZD0iIj4KCQkJCgkJCTxkaXYgY2xhc3M9ImRpdkNhclRpdGxlQ29udGFpbmVyIj4KCQkJCTxhIHRpdGxlPSJIeXVuZGFpIFZlbnVlIDIwMjUiIGhyZWY9Ij9wYXRoPS9uZXVmcy9IeXVuZGFpLVZlbnVlLTIwMjUuaHRtbCIgZGF0YS1tYWtlPSJIeXVuZGFpIiBkYXRhLW1vZGVsPSJWZW51ZSAyMDI1Ij4KCQkJCQk8aDM+CgkJCQkJCTxzcGFuIGNsYXNzPSJzcGFuQ2FyTWFrZSAiPkh5dW5kYWk8L3NwYW4+PGJyPgoJCQkJCQk8c3BhbiBjbGFzcz0ibW9kZWxOYW1lIHNwYW5Nb2RlbE5hbWUiPlZlbnVlIDIwMjU8L3NwYW4+CgkJCQkJPC9oMz4KCQkJCTwvYT4KCQkJCSAgICA8IS0tIE9QRU4gTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KICAgIDxkaXYgY2xhc3M9ImRpdk5ld0NhclN0YXJ0UHJpY2UiPgogICAgICAgIMOgIHBhcnRpciBkZQogICAgICAgIDxzcGFuIGNsYXNzPSIiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj4yMyA0OTc8L3NwYW4+PC9zcGFuPgogICAgICAgIDxpIHN0eWxlPSJjb2xvcjojMDAwO2ZvbnQtc2l6ZToyMHB4OyIgY2xhc3M9ImNhclByaWNlSW5pdGlhbFRvb2xUaXBJY29uIGZhbCBmYS1pbmZvLWNpcmNsZSBibGFja0NvbG9yQm9sZCIgZGF0YS10b29sdGlwPScmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1BEU0Y6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzIxIDI5OSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1RyYW5zcG9ydCAmYW1wOyBQcsOpcGFyYXRpb246Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzIgMDUwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7RnJhaXMgUkRQUk0mbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7NDgmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtUYXhlIEFDOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDsxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtUb3RhbCZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDsyMyA0OTcmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jz48L2k+CiAgICA8L2Rpdj4KICAgIDwhLS0gQ0xPU0UgTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJblN0b2NrTGluayIgaGlkZGVuPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBkYXRhLXR5cGU9ImludmRhdGEiIGRhdGEtbWFrZT0iSHl1bmRhaSIgZGF0YS1tb2RlbD0iVmVudWUiIGRhdGEteWVhcj0iMjAyNSIgZGF0YS1zdHlsZWlkcz0iNDYzMzUyLDQ2MzM1Myw0NjMzNTQsNDYzMzU1LDQ2MzM1Niw0NjMzNTciIGRhdGEtaHlicmlkPSIwIj4KCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW1hZ2VDb250YWluZXIgZmxleC1jZW50ZXIgYWxpZ24tY2VudGVyICI+CgkJCQk8YSB0aXRsZT0iSHl1bmRhaSBWZW51ZSAyMDI1IiBocmVmPSI\/cGF0aD0vbmV1ZnMvSHl1bmRhaS1WZW51ZS0yMDI1Lmh0bWwiPgoJCQkJCTxpbWcgYWx0PSJIeXVuZGFpIFZlbnVlIDIwMjUiIGJvcmRlcj0iMCIgY2xhc3M9Imxhenlsb2FkIG9wdGFub24tY2F0ZWdvcnktQzAwMDEiIGRhdGEtaW1nc3JjPSJodHRwczovL2NhcmltYWdlcy5kMmNtZWRpYS5jYS9uZXdjYXJpbWFnZXMvZnIvSHl1bmRhaS9WZW51ZS8yMDI1LzQ2MzM1Mi9SZWQvcHJvZmlsZS53ZWJwIiBkYXRhLW90LWlnbm9yZSBkYXRhLWNvb2tpZWNvbnNlbnQ9Imlnbm9yZSI+CgkJCQk8L2E+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJGb290ZXJDb250YWluZXIgc3RhY2stbGMgLS1zLTkiPgoJCQkJCTxkaXYgY2xhc3M9ImNhclBheW1lbnRXcmFwcGVyIj4KCQkJPGRpdiBjbGFzcz0iY29udGVudC1za2VsZXRvbiBodG1sLWJsb2NrIiBkYXRhLWJsb2NrPSJwYXltZW50QmxvY2siIGRhdGEtdHlwZT0iYmxvY2siIGRhdGEtc291cmNlPSJzZXJ2ZXIiIGRhdGEtY2FsbGJhY2s9InBheW1lbnRDYWxjQmxvY2siPgoJCQoJPGlucHV0IG5hbWU9ImJsb2NrLWRhdGEiIHR5cGU9ImhpZGRlbiIgdmFsdWU9InsmcXVvdDtzdHlsZWlkJnF1b3Q7OiZxdW90OzQ2MzM1MiZxdW90OywmcXVvdDt0aXRsZSZxdW90OzomcXVvdDtIeXVuZGFpIFZlbnVlIDIwMjUmcXVvdDssJnF1b3Q7aHJlZiZxdW90OzomcXVvdDtcL25ldWZzXC9IeXVuZGFpLVZlbnVlLTIwMjUuaHRtbCZxdW90OywmcXVvdDtsaW5rc3R5bGUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2xpbmtjbGFzcyZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7Y29udGFpbmVyY2xhc3MmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3Byb21vdGV4dCZxdW90OzomcXVvdDtEXHUwMGU5Y291dnJleiBsJ29mZnJlISZxdW90O30iPgoJPC9kaXY+Cgk8L2Rpdj4KCQkJCQoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2PjwvZGl2PjwvZGl2PjwhLS0gQ0xPU0UgQ0FURUdPUllCT1hXUkFQUEVSICgyMDYwKS0tPjwhLS0gT1BFTiBDQVRFR09SWUJPWFdSQVBQRVIgKDIwNTIpIC0tPjxkaXYgaWQ9ImNsYXNzdHJ1Y2tfY29udGFpbmVyIiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIgZGl2Q2F0ZWdvcnlCb3hXcmFwcGVyIiBzdGF0ZT0ib3BlbiIgbmJ2aXNpYmxlPSIxIj48aDIgY2xhc3M9ImRlZmF1bHQgaWNvbi1oZWFkaW5nIGZsZXgtYm94IGFsaWduLWNlbnRlciI+Cgk8c3BhbiBjbGFzcz0iZmEgZmEtY2hldnJvbi1yaWdodCIgYXJpYS1oaWRkZW49InRydWUiPjwvc3Bhbj4KCTxib3gtbGMgY2xhc3M9Ii1wdjAiPgoJCTxkaXYgY2xhc3M9Im1haW5UZXh0IC1ib2xkIj5DYW1pb25zIG5ldWZzIEh5dW5kYWkgMjAyNTwvZGl2PgoJCTxkaXYgY2xhc3M9InNlY29uZGFyeVRleHQiPsOgIFJlcGVudGlnbnkgKGVudHJlIE1hc2NvdWNoZSBldCBNb250csOpYWwpPC9kaXY+Cgk8L2JveC1sYz4KPC9oMj48ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiBkaXZDYXJzQm94V3JhcHBlciBDTEFTU190cnVjayI+CTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZU91dGVyQm94ICByZWJhdGVCb3JkZXJDb2xvciIgaWQ9ImZieF90cnVja18xIj4KCQkKCQk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVJbm5lckJveCIgaWQ9IiI+CgkJCQoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJUaXRsZUNvbnRhaW5lciI+CgkJCQk8YSB0aXRsZT0iSHl1bmRhaSBTYW50YSBDcnV6IDIwMjUiIGhyZWY9Ij9wYXRoPS9uZXVmcy9IeXVuZGFpLVNhbnRhX0NydXotMjAyNS5odG1sIiBkYXRhLW1ha2U9Ikh5dW5kYWkiIGRhdGEtbW9kZWw9IlNhbnRhIENydXogMjAyNSI+CgkJCQkJPGgzPgoJCQkJCQk8c3BhbiBjbGFzcz0ic3BhbkNhck1ha2UgIj5IeXVuZGFpPC9zcGFuPjxicj4KCQkJCQkJPHNwYW4gY2xhc3M9Im1vZGVsTmFtZSBzcGFuTW9kZWxOYW1lIj5TYW50YSBDcnV6IDIwMjU8L3NwYW4+CgkJCQkJPC9oMz4KCQkJCTwvYT4KCQkJCSAgICA8IS0tIE9QRU4gTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KICAgIDxkaXYgY2xhc3M9ImRpdk5ld0NhclN0YXJ0UHJpY2UiPgogICAgICAgIMOgIHBhcnRpciBkZQogICAgICAgIDxzcGFuIGNsYXNzPSIiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj40NCAxOTc8L3NwYW4+PC9zcGFuPgogICAgICAgIDxpIHN0eWxlPSJjb2xvcjojMDAwO2ZvbnQtc2l6ZToyMHB4OyIgY2xhc3M9ImNhclByaWNlSW5pdGlhbFRvb2xUaXBJY29uIGZhbCBmYS1pbmZvLWNpcmNsZSBibGFja0NvbG9yQm9sZCIgZGF0YS10b29sdGlwPScmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1BEU0Y6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzQxIDk5OSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0iZmxleC1iZXR3ZWVuIiBzdHlsZT0ibWluLXdpZHRoOjE2MHB4OyImZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0ibWF4LXdpZHRoOjcwJTsiJmd0O1RyYW5zcG9ydCAmYW1wOyBQcsOpcGFyYXRpb246Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9IiImZ3Q7CSZsdDtzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiJmd0OzIgMDUwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSJmbGV4LWJldHdlZW4iIHN0eWxlPSJtaW4td2lkdGg6MTYwcHg7IiZndDsKCSZsdDtzcGFuIHN0eWxlPSJtYXgtd2lkdGg6NzAlOyImZ3Q7RnJhaXMgUkRQUk0mbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0iIiZndDsJJmx0O3NwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSImZ3Q7NDgmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtUYXhlIEFDOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDsxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9ImZsZXgtYmV0d2VlbiIgc3R5bGU9Im1pbi13aWR0aDoxNjBweDsiJmd0OwoJJmx0O3NwYW4gc3R5bGU9Im1heC13aWR0aDo3MCU7IiZndDtUb3RhbCZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSIiJmd0OwkmbHQ7c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIiZndDs0NCAxOTcmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jz48L2k+CiAgICA8L2Rpdj4KICAgIDwhLS0gQ0xPU0UgTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJblN0b2NrTGluayIgaGlkZGVuPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBkYXRhLXR5cGU9ImludmRhdGEiIGRhdGEtbWFrZT0iSHl1bmRhaSIgZGF0YS1tb2RlbD0iU2FudGEgQ3J1eiIgZGF0YS15ZWFyPSIyMDI1IiBkYXRhLXN0eWxlaWRzPSI0NjM4NzMsNDYzODc2LDQ2Mzg3NCw0NjM4NzUiIGRhdGEtaHlicmlkPSIwIj4KCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW1hZ2VDb250YWluZXIgZmxleC1jZW50ZXIgYWxpZ24tY2VudGVyICI+CgkJCQk8YSB0aXRsZT0iSHl1bmRhaSBTYW50YSBDcnV6IDIwMjUiIGhyZWY9Ij9wYXRoPS9uZXVmcy9IeXVuZGFpLVNhbnRhX0NydXotMjAyNS5odG1sIj4KCQkJCQk8aW1nIGFsdD0iSHl1bmRhaSBTYW50YSBDcnV6IDIwMjUiIGJvcmRlcj0iMCIgY2xhc3M9Imxhenlsb2FkIG9wdGFub24tY2F0ZWdvcnktQzAwMDEiIGRhdGEtaW1nc3JjPSJodHRwczovL2NhcmltYWdlcy5kMmNtZWRpYS5jYS9uZXdjYXJpbWFnZXMvZnIvSHl1bmRhaS9TYW50YV9DcnV6LzIwMjUvNDYzODczL1JlZC9wcm9maWxlLndlYnAiIGRhdGEtb3QtaWdub3JlIGRhdGEtY29va2llY29uc2VudD0iaWdub3JlIj4KCQkJCTwvYT4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckZvb3RlckNvbnRhaW5lciBzdGFjay1sYyAtLXMtOSI+CgkJCQkJPGRpdiBjbGFzcz0iY2FyUGF5bWVudFdyYXBwZXIiPgoJCQk8ZGl2IGNsYXNzPSJjb250ZW50LXNrZWxldG9uIGh0bWwtYmxvY2siIGRhdGEtYmxvY2s9InBheW1lbnRCbG9jayIgZGF0YS10eXBlPSJibG9jayIgZGF0YS1zb3VyY2U9InNlcnZlciIgZGF0YS1jYWxsYmFjaz0icGF5bWVudENhbGNCbG9jayI+CgkJCgk8aW5wdXQgbmFtZT0iYmxvY2stZGF0YSIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0ieyZxdW90O3N0eWxlaWQmcXVvdDs6JnF1b3Q7NDYzODczJnF1b3Q7LCZxdW90O3RpdGxlJnF1b3Q7OiZxdW90O0h5dW5kYWkgU2FudGEgQ3J1eiAyMDI1JnF1b3Q7LCZxdW90O2hyZWYmcXVvdDs6JnF1b3Q7XC9uZXVmc1wvSHl1bmRhaS1TYW50YV9DcnV6LTIwMjUuaHRtbCZxdW90OywmcXVvdDtsaW5rc3R5bGUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2xpbmtjbGFzcyZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7Y29udGFpbmVyY2xhc3MmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3Byb21vdGV4dCZxdW90OzomcXVvdDtEXHUwMGU5Y291dnJleiBsJ29mZnJlISZxdW90O30iPgoJPC9kaXY+Cgk8L2Rpdj4KCQkJCQoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2PjwvZGl2PjwvZGl2PjwhLS0gQ0xPU0UgQ0FURUdPUllCT1hXUkFQUEVSICgyMDYwKS0tPjwhLS0gT1BFTiBDQVRFR09SWUJPWFdSQVBQRVIgKDIwNTIpIC0tPjxkaXYgaWQ9ImNsYXNzaHlicmlkX2NvbnRhaW5lciIgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEyIGRpdkNhdGVnb3J5Qm94V3JhcHBlciIgc3RhdGU9Im9wZW4iIG5idmlzaWJsZT0iMSI+PGgyIGNsYXNzPSJkZWZhdWx0IGljb24taGVhZGluZyBmbGV4LWJveCBhbGlnbi1jZW50ZXIiPgoJPHNwYW4gY2xhc3M9ImZhIGZhLWNoZXZyb24tcmlnaHQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L3NwYW4+Cgk8Ym94LWxjIGNsYXNzPSItcHYwIj4KCQk8ZGl2IGNsYXNzPSJtYWluVGV4dCAtYm9sZCI+SHlicmlkZXMgKFNtYXJ0c3RyZWFtKSBuZXV2ZXMgSHl1bmRhaSAyMDI1ICZhbXA7IDIwMjY8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJzZWNvbmRhcnlUZXh0Ij7DoCBSZXBlbnRpZ255IChlbnRyZSBNYXNjb3VjaGUgZXQgTW9udHLDqWFsKTwvZGl2PgoJPC9ib3gtbGM+CjwvaDI+PGRpdiBjbGFzcz0iZGl2U3BhbiBkaXZTcGFuMTIgZGl2Q2Fyc0JveFdyYXBwZXIgQ0xBU1NfaHlicmlkIj4JPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggIHJlYmF0ZUJvcmRlckNvbG9yIiBpZD0iZmJ4X2h5YnJpZF8xIj4KCQkKCQk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVJbm5lckJveCIgaWQ9IiI+CgkJCQoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJUaXRsZUNvbnRhaW5lciI+CgkJCQk8YSB0aXRsZT0iSHl1bmRhaSBFbGFudHJhIEh5YnJpZCAyMDI2IiBocmVmPSI\/cGF0aD0vbmV1ZnMvSHl1bmRhaS1FbGFudHJhX0h5YnJpZC0yMDI2Lmh0bWwiIGRhdGEtbWFrZT0iSHl1bmRhaSIgZGF0YS1tb2RlbD0iRWxhbnRyYSBoeWJyaWRlIDIwMjYiPgoJCQkJCTxoMz4KCQkJCQkJPHNwYW4gY2xhc3M9InNwYW5DYXJNYWtlICI+SHl1bmRhaTwvc3Bhbj48YnI+CgkJCQkJCTxzcGFuIGNsYXNzPSJtb2RlbE5hbWUgc3Bhbk1vZGVsTmFtZSI+RWxhbnRyYSBIeWJyaWQgMjAyNjwvc3Bhbj4KCQkJCQk8L2gzPgoJCQkJPC9hPgoJCQkJICAgIDwhLS0gT1BFTiBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgogICAgPGRpdiBjbGFzcz0iZGl2TmV3Q2FyU3RhcnRQcmljZSI+CiAgICAgICAgw6AgcGFydGlyIGRlCiAgICAgICAgPHNwYW4gY2xhc3M9IiI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjM0IDM0Njwvc3Bhbj48L3NwYW4+CiAgICAgICAgPGkgc3R5bGU9ImNvbG9yOiMwMDA7Zm9udC1zaXplOjIwcHg7IiBjbGFzcz0iY2FyUHJpY2VJbml0aWFsVG9vbFRpcEljb24gZmFsIGZhLWluZm8tY2lyY2xlIGJsYWNrQ29sb3JCb2xkIiBkYXRhLXRvb2x0aXA9IiZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7UERTRjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDszMSA0OTkmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUcmFuc3BvcnQgJmFtcDsgUHLDqXBhcmF0aW9uOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzEgOTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgZCdhZG1pbmlzdHJhdGlvbiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0Ozc5OSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O0ZyYWlzIFJEUFJNJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NDgmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUYXhlIEFDOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzEwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RvdGFsJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MzQgMzQ2Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyI+PC9pPgogICAgPC9kaXY+CiAgICA8IS0tIENMT1NFIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CgkJCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW5TdG9ja0xpbmsiIGhpZGRlbj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgZGF0YS10eXBlPSJpbnZkYXRhIiBkYXRhLW1ha2U9Ikh5dW5kYWkiIGRhdGEtbW9kZWw9IkVsYW50cmEgSHlicmlkIiBkYXRhLXllYXI9IjIwMjYiIGRhdGEtc3R5bGVpZHM9IjQ4MTI2MCw0ODEyNjEiIGRhdGEtaHlicmlkPSIxIj4KCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW1hZ2VDb250YWluZXIgZmxleC1jZW50ZXIgYWxpZ24tY2VudGVyICI+CgkJCQk8YSB0aXRsZT0iSHl1bmRhaSBFbGFudHJhIEh5YnJpZCAyMDI2IiBocmVmPSI\/cGF0aD0vbmV1ZnMvSHl1bmRhaS1FbGFudHJhX0h5YnJpZC0yMDI2Lmh0bWwiPgoJCQkJCTxpbWcgYWx0PSJIeXVuZGFpIEVsYW50cmEgSHlicmlkIDIwMjYiIGJvcmRlcj0iMCIgY2xhc3M9ImxpdmVsb2FkIG9wdGFub24tY2F0ZWdvcnktQzAwMDEiIGRhdGEtaW1nc3JjPSJodHRwczovL2NhcmltYWdlcy5kMmNtZWRpYS5jYS9uZXdjYXJpbWFnZXMvZnIvSHl1bmRhaS9FbGFudHJhX0h5YnJpZC8yMDI2LzQ4MTI2MC9SZWQvcHJvZmlsZS53ZWJwIiBzcmM9Imh0dHBzOi8vY2FyaW1hZ2VzLmQyY21lZGlhLmNhL25ld2NhcmltYWdlcy9mci9IeXVuZGFpL0VsYW50cmFfSHlicmlkLzIwMjYvNDgxMjYwL1JlZC9wcm9maWxlLndlYnAiIGRhdGEtb3QtaWdub3JlIGRhdGEtY29va2llY29uc2VudD0iaWdub3JlIj4KCQkJCTwvYT4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckZvb3RlckNvbnRhaW5lciBzdGFjay1sYyAtLXMtOSI+CgkJCQkJPGRpdiBjbGFzcz0iY2FyUGF5bWVudFdyYXBwZXIiPgoJCQk8ZGl2IGNsYXNzPSJjb250ZW50LXNrZWxldG9uIGh0bWwtYmxvY2siIGRhdGEtYmxvY2s9InBheW1lbnRCbG9jayIgZGF0YS10eXBlPSJibG9jayIgZGF0YS1zb3VyY2U9InNlcnZlciIgZGF0YS1jYWxsYmFjaz0icGF5bWVudENhbGNCbG9jayI+CgkJCgk8aW5wdXQgbmFtZT0iYmxvY2stZGF0YSIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0ieyZxdW90O3N0eWxlaWQmcXVvdDs6JnF1b3Q7NDgxMjYwJnF1b3Q7LCZxdW90O3RpdGxlJnF1b3Q7OiZxdW90O0h5dW5kYWkgRWxhbnRyYSBIeWJyaWQgMjAyNiZxdW90OywmcXVvdDtocmVmJnF1b3Q7OiZxdW90O1wvbmV1ZnNcL0h5dW5kYWktRWxhbnRyYV9IeWJyaWQtMjAyNi5odG1sJnF1b3Q7LCZxdW90O2xpbmtzdHlsZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7bGlua2NsYXNzJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtjb250YWluZXJjbGFzcyZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7cHJvbW90ZXh0JnF1b3Q7OiZxdW90O0RcdTAwZTljb3V2cmV6IGwnb2ZmcmUhJnF1b3Q7fSI+Cgk8L2Rpdj4KCTwvZGl2PgoJCQkJCgkJCTwvZGl2PgoJCTwvZGl2PgoJPC9kaXY+CTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZU91dGVyQm94ICByZWJhdGVCb3JkZXJDb2xvciIgaWQ9ImZieF9oeWJyaWRfMiI+CgkJCgkJPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlSW5uZXJCb3giIGlkPSIiPgoJCQkKCQkJPGRpdiBjbGFzcz0iZGl2Q2FyVGl0bGVDb250YWluZXIiPgoJCQkJPGEgdGl0bGU9Ikh5dW5kYWkgRWxhbnRyYSBIeWJyaWQgMjAyNSIgaHJlZj0iP3BhdGg9L25ldWZzL0h5dW5kYWktRWxhbnRyYV9IeWJyaWQtMjAyNS5odG1sIiBkYXRhLW1ha2U9Ikh5dW5kYWkiIGRhdGEtbW9kZWw9IkVsYW50cmEgaHlicmlkZSAyMDI1Ij4KCQkJCQk8aDM+CgkJCQkJCTxzcGFuIGNsYXNzPSJzcGFuQ2FyTWFrZSAiPkh5dW5kYWk8L3NwYW4+PGJyPgoJCQkJCQk8c3BhbiBjbGFzcz0ibW9kZWxOYW1lIHNwYW5Nb2RlbE5hbWUiPkVsYW50cmEgSHlicmlkIDIwMjU8L3NwYW4+CgkJCQkJPC9oMz4KCQkJCTwvYT4KCQkJCSAgICA8IS0tIE9QRU4gTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KICAgIDxkaXYgY2xhc3M9ImRpdk5ld0NhclN0YXJ0UHJpY2UiPgogICAgICAgIMOgIHBhcnRpciBkZQogICAgICAgIDxzcGFuIGNsYXNzPSIiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj4zMyA5NDY8L3NwYW4+PC9zcGFuPgogICAgICAgIDxpIHN0eWxlPSJjb2xvcjojMDAwO2ZvbnQtc2l6ZToyMHB4OyIgY2xhc3M9ImNhclByaWNlSW5pdGlhbFRvb2xUaXBJY29uIGZhbCBmYS1pbmZvLWNpcmNsZSBibGFja0NvbG9yQm9sZCIgZGF0YS10b29sdGlwPSImbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1BEU0Y6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MzEgMDk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VHJhbnNwb3J0ICZhbXA7IFByw6lwYXJhdGlvbjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsxIDkwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O0ZyYWlzIGQnYWRtaW5pc3RyYXRpb24mbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs3OTkmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBSRFBSTSZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzQ4Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VGF4ZSBBQzombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUb3RhbCZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzMzIDk0NiZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsiPjwvaT4KICAgIDwvZGl2PgogICAgPCEtLSBDTE9TRSBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgoJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckluU3RvY2tMaW5rIiBoaWRkZW4+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGRhdGEtdHlwZT0iaW52ZGF0YSIgZGF0YS1tYWtlPSJIeXVuZGFpIiBkYXRhLW1vZGVsPSJFbGFudHJhIEh5YnJpZCIgZGF0YS15ZWFyPSIyMDI1IiBkYXRhLXN0eWxlaWRzPSI0NjI3MDYsNDYyNzA3IiBkYXRhLWh5YnJpZD0iMSI+Cgk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckltYWdlQ29udGFpbmVyIGZsZXgtY2VudGVyIGFsaWduLWNlbnRlciAiPgoJCQkJPGEgdGl0bGU9Ikh5dW5kYWkgRWxhbnRyYSBIeWJyaWQgMjAyNSIgaHJlZj0iP3BhdGg9L25ldWZzL0h5dW5kYWktRWxhbnRyYV9IeWJyaWQtMjAyNS5odG1sIj4KCQkJCQk8aW1nIGFsdD0iSHl1bmRhaSBFbGFudHJhIEh5YnJpZCAyMDI1IiBib3JkZXI9IjAiIGNsYXNzPSJsaXZlbG9hZCBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLWltZ3NyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0h5dW5kYWkvRWxhbnRyYV9IeWJyaWQvMjAyNS80NjI3MDYvUmVkL3Byb2ZpbGUud2VicCIgc3JjPSJodHRwczovL2NhcmltYWdlcy5kMmNtZWRpYS5jYS9uZXdjYXJpbWFnZXMvZnIvSHl1bmRhaS9FbGFudHJhX0h5YnJpZC8yMDI1LzQ2MjcwNi9SZWQvcHJvZmlsZS53ZWJwIiBkYXRhLW90LWlnbm9yZSBkYXRhLWNvb2tpZWNvbnNlbnQ9Imlnbm9yZSI+CgkJCQk8L2E+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJGb290ZXJDb250YWluZXIgc3RhY2stbGMgLS1zLTkiPgoJCQkJCTxkaXYgY2xhc3M9ImNhclBheW1lbnRXcmFwcGVyIj4KCQkJPGRpdiBjbGFzcz0iY29udGVudC1za2VsZXRvbiBodG1sLWJsb2NrIiBkYXRhLWJsb2NrPSJwYXltZW50QmxvY2siIGRhdGEtdHlwZT0iYmxvY2siIGRhdGEtc291cmNlPSJzZXJ2ZXIiIGRhdGEtY2FsbGJhY2s9InBheW1lbnRDYWxjQmxvY2siPgoJCQoJPGlucHV0IG5hbWU9ImJsb2NrLWRhdGEiIHR5cGU9ImhpZGRlbiIgdmFsdWU9InsmcXVvdDtzdHlsZWlkJnF1b3Q7OiZxdW90OzQ2MjcwNiZxdW90OywmcXVvdDt0aXRsZSZxdW90OzomcXVvdDtIeXVuZGFpIEVsYW50cmEgSHlicmlkIDIwMjUmcXVvdDssJnF1b3Q7aHJlZiZxdW90OzomcXVvdDtcL25ldWZzXC9IeXVuZGFpLUVsYW50cmFfSHlicmlkLTIwMjUuaHRtbCZxdW90OywmcXVvdDtsaW5rc3R5bGUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2xpbmtjbGFzcyZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7Y29udGFpbmVyY2xhc3MmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3Byb21vdGV4dCZxdW90OzomcXVvdDtEXHUwMGU5Y291dnJleiBsJ29mZnJlISZxdW90O30iPgoJPC9kaXY+Cgk8L2Rpdj4KCQkJCQoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2Pgk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVPdXRlckJveCAgcmViYXRlQm9yZGVyQ29sb3IiIGlkPSJmYnhfaHlicmlkXzMiPgoJCQoJCTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZUlubmVyQm94IiBpZD0iIj4KCQkJCgkJCTxkaXYgY2xhc3M9ImRpdkNhclRpdGxlQ29udGFpbmVyIj4KCQkJCTxhIHRpdGxlPSJIeXVuZGFpIFBhbGlzYWRlIEh5YnJpZCAyMDI2IiBocmVmPSI\/cGF0aD0vbmV1ZnMvSHl1bmRhaS1QYWxpc2FkZV9IeWJyaWQtMjAyNi5odG1sIiBkYXRhLW1ha2U9Ikh5dW5kYWkiIGRhdGEtbW9kZWw9IlBhbGlzYWRlIGh5YnJpZGUgMjAyNiI+CgkJCQkJPGgzPgoJCQkJCQk8c3BhbiBjbGFzcz0ic3BhbkNhck1ha2UgIj5IeXVuZGFpPC9zcGFuPjxicj4KCQkJCQkJPHNwYW4gY2xhc3M9Im1vZGVsTmFtZSBzcGFuTW9kZWxOYW1lIj5QYWxpc2FkZSBIeWJyaWQgMjAyNjwvc3Bhbj4KCQkJCQk8L2gzPgoJCQkJPC9hPgoJCQkJICAgIDwhLS0gT1BFTiBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgogICAgPGRpdiBjbGFzcz0iZGl2TmV3Q2FyU3RhcnRQcmljZSI+CiAgICAgICAgw6AgcGFydGlyIGRlCiAgICAgICAgPHNwYW4gY2xhc3M9IiI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjYzIDU0Njwvc3Bhbj48L3NwYW4+CiAgICAgICAgPGkgc3R5bGU9ImNvbG9yOiMwMDA7Zm9udC1zaXplOjIwcHg7IiBjbGFzcz0iY2FyUHJpY2VJbml0aWFsVG9vbFRpcEljb24gZmFsIGZhLWluZm8tY2lyY2xlIGJsYWNrQ29sb3JCb2xkIiBkYXRhLXRvb2x0aXA9IiZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7UERTRjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs2MCA0OTkmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUcmFuc3BvcnQgJmFtcDsgUHLDqXBhcmF0aW9uOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzIgMTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgZCdhZG1pbmlzdHJhdGlvbiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0Ozc5OSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O0ZyYWlzIFJEUFJNJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NDgmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUYXhlIEFDOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzEwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RvdGFsJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NjMgNTQ2Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyI+PC9pPgogICAgPC9kaXY+CiAgICA8IS0tIENMT1NFIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CgkJCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW5TdG9ja0xpbmsiIGhpZGRlbj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgZGF0YS10eXBlPSJpbnZkYXRhIiBkYXRhLW1ha2U9Ikh5dW5kYWkiIGRhdGEtbW9kZWw9IlBhbGlzYWRlIEh5YnJpZCIgZGF0YS15ZWFyPSIyMDI2IiBkYXRhLXN0eWxlaWRzPSI0ODAyOTcsNDgwMjk4LDQ4MDI5OSw0ODE1MjMiIGRhdGEtaHlicmlkPSIxIj4KCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW1hZ2VDb250YWluZXIgZmxleC1jZW50ZXIgYWxpZ24tY2VudGVyICI+CgkJCQk8YSB0aXRsZT0iSHl1bmRhaSBQYWxpc2FkZSBIeWJyaWQgMjAyNiIgaHJlZj0iP3BhdGg9L25ldWZzL0h5dW5kYWktUGFsaXNhZGVfSHlicmlkLTIwMjYuaHRtbCI+CgkJCQkJPGltZyBhbHQ9Ikh5dW5kYWkgUGFsaXNhZGUgSHlicmlkIDIwMjYiIGJvcmRlcj0iMCIgY2xhc3M9Imxhenlsb2FkIG9wdGFub24tY2F0ZWdvcnktQzAwMDEiIGRhdGEtaW1nc3JjPSJodHRwczovL2NhcmltYWdlcy5kMmNtZWRpYS5jYS9uZXdjYXJpbWFnZXMvZnIvSHl1bmRhaS9QYWxpc2FkZV9IeWJyaWQvMjAyNi80ODAyOTcvUmVkL3Byb2ZpbGUud2VicCIgZGF0YS1vdC1pZ25vcmUgZGF0YS1jb29raWVjb25zZW50PSJpZ25vcmUiPgoJCQkJPC9hPgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyRm9vdGVyQ29udGFpbmVyIHN0YWNrLWxjIC0tcy05Ij4KCQkJCQk8ZGl2IGNsYXNzPSJjYXJQYXltZW50V3JhcHBlciI+CgkJCTxkaXYgY2xhc3M9ImNvbnRlbnQtc2tlbGV0b24gaHRtbC1ibG9jayIgZGF0YS1ibG9jaz0icGF5bWVudEJsb2NrIiBkYXRhLXR5cGU9ImJsb2NrIiBkYXRhLXNvdXJjZT0ic2VydmVyIiBkYXRhLWNhbGxiYWNrPSJwYXltZW50Q2FsY0Jsb2NrIj4KCQkKCTxpbnB1dCBuYW1lPSJibG9jay1kYXRhIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSJ7JnF1b3Q7c3R5bGVpZCZxdW90OzomcXVvdDs0ODAyOTcmcXVvdDssJnF1b3Q7dGl0bGUmcXVvdDs6JnF1b3Q7SHl1bmRhaSBQYWxpc2FkZSBIeWJyaWQgMjAyNiZxdW90OywmcXVvdDtocmVmJnF1b3Q7OiZxdW90O1wvbmV1ZnNcL0h5dW5kYWktUGFsaXNhZGVfSHlicmlkLTIwMjYuaHRtbCZxdW90OywmcXVvdDtsaW5rc3R5bGUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2xpbmtjbGFzcyZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7Y29udGFpbmVyY2xhc3MmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3Byb21vdGV4dCZxdW90OzomcXVvdDtEXHUwMGU5Y291dnJleiBsJ29mZnJlISZxdW90O30iPgoJPC9kaXY+Cgk8L2Rpdj4KCQkJCQoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2Pgk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVPdXRlckJveCAgcmViYXRlQm9yZGVyQ29sb3IiIGlkPSJmYnhfaHlicmlkXzQiPgoJCQoJCTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZUlubmVyQm94IiBpZD0iIj4KCQkJCgkJCTxkaXYgY2xhc3M9ImRpdkNhclRpdGxlQ29udGFpbmVyIj4KCQkJCTxhIHRpdGxlPSJIeXVuZGFpIFNhbnRhIEZlIEh5YnJpZCAyMDI2IiBocmVmPSI\/cGF0aD0vbmV1ZnMvSHl1bmRhaS1TYW50YV9GZV9IeWJyaWQtMjAyNi5odG1sIiBkYXRhLW1ha2U9Ikh5dW5kYWkiIGRhdGEtbW9kZWw9IlNhbnRhIEZlIGh5YnJpZGUgMjAyNiI+CgkJCQkJPGgzPgoJCQkJCQk8c3BhbiBjbGFzcz0ic3BhbkNhck1ha2UgIj5IeXVuZGFpPC9zcGFuPjxicj4KCQkJCQkJPHNwYW4gY2xhc3M9Im1vZGVsTmFtZSBzcGFuTW9kZWxOYW1lIj5TYW50YSBGZSBIeWJyaWQgMjAyNjwvc3Bhbj4KCQkJCQk8L2gzPgoJCQkJPC9hPgoJCQkJICAgIDwhLS0gT1BFTiBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgogICAgPGRpdiBjbGFzcz0iZGl2TmV3Q2FyU3RhcnRQcmljZSI+CiAgICAgICAgw6AgcGFydGlyIGRlCiAgICAgICAgPHNwYW4gY2xhc3M9IiI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjQ2IDg0Njwvc3Bhbj48L3NwYW4+CiAgICAgICAgPGkgc3R5bGU9ImNvbG9yOiMwMDA7Zm9udC1zaXplOjIwcHg7IiBjbGFzcz0iY2FyUHJpY2VJbml0aWFsVG9vbFRpcEljb24gZmFsIGZhLWluZm8tY2lyY2xlIGJsYWNrQ29sb3JCb2xkIiBkYXRhLXRvb2x0aXA9IiZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7UERTRjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs0MyA3OTkmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUcmFuc3BvcnQgJmFtcDsgUHLDqXBhcmF0aW9uOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzIgMTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgZCdhZG1pbmlzdHJhdGlvbiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0Ozc5OSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O0ZyYWlzIFJEUFJNJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NDgmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUYXhlIEFDOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzEwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RvdGFsJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NDYgODQ2Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyI+PC9pPgogICAgPC9kaXY+CiAgICA8IS0tIENMT1NFIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CgkJCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW5TdG9ja0xpbmsiIGhpZGRlbj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgZGF0YS10eXBlPSJpbnZkYXRhIiBkYXRhLW1ha2U9Ikh5dW5kYWkiIGRhdGEtbW9kZWw9IlNhbnRhIEZlIEh5YnJpZCIgZGF0YS15ZWFyPSIyMDI2IiBkYXRhLXN0eWxlaWRzPSI0ODAxODksNDgwMTkwLDQ4MDE5MSw0ODAxOTIsNDgwMTkzIiBkYXRhLWh5YnJpZD0iMSI+Cgk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckltYWdlQ29udGFpbmVyIGZsZXgtY2VudGVyIGFsaWduLWNlbnRlciAiPgoJCQkJPGEgdGl0bGU9Ikh5dW5kYWkgU2FudGEgRmUgSHlicmlkIDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9IeXVuZGFpLVNhbnRhX0ZlX0h5YnJpZC0yMDI2Lmh0bWwiPgoJCQkJCTxpbWcgYWx0PSJIeXVuZGFpIFNhbnRhIEZlIEh5YnJpZCAyMDI2IiBib3JkZXI9IjAiIGNsYXNzPSJsYXp5bG9hZCBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLWltZ3NyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0h5dW5kYWkvU2FudGFfRmVfSHlicmlkLzIwMjYvNDgwMTg5L1JlZC9wcm9maWxlLndlYnAiIGRhdGEtb3QtaWdub3JlIGRhdGEtY29va2llY29uc2VudD0iaWdub3JlIj4KCQkJCTwvYT4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckZvb3RlckNvbnRhaW5lciBzdGFjay1sYyAtLXMtOSI+CgkJCQkJPGRpdiBjbGFzcz0iY2FyUGF5bWVudFdyYXBwZXIiPgoJCQk8ZGl2IGNsYXNzPSJjb250ZW50LXNrZWxldG9uIGh0bWwtYmxvY2siIGRhdGEtYmxvY2s9InBheW1lbnRCbG9jayIgZGF0YS10eXBlPSJibG9jayIgZGF0YS1zb3VyY2U9InNlcnZlciIgZGF0YS1jYWxsYmFjaz0icGF5bWVudENhbGNCbG9jayI+CgkJCgk8aW5wdXQgbmFtZT0iYmxvY2stZGF0YSIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0ieyZxdW90O3N0eWxlaWQmcXVvdDs6JnF1b3Q7NDgwMTg5JnF1b3Q7LCZxdW90O3RpdGxlJnF1b3Q7OiZxdW90O0h5dW5kYWkgU2FudGEgRmUgSHlicmlkIDIwMjYmcXVvdDssJnF1b3Q7aHJlZiZxdW90OzomcXVvdDtcL25ldWZzXC9IeXVuZGFpLVNhbnRhX0ZlX0h5YnJpZC0yMDI2Lmh0bWwmcXVvdDssJnF1b3Q7bGlua3N0eWxlJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtsaW5rY2xhc3MmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2NvbnRhaW5lcmNsYXNzJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtwcm9tb3RleHQmcXVvdDs6JnF1b3Q7RFx1MDBlOWNvdXZyZXogbCdvZmZyZSEmcXVvdDt9Ij4KCTwvZGl2PgoJPC9kaXY+CgkJCQkKCQkJPC9kaXY+CgkJPC9kaXY+Cgk8L2Rpdj4JPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggIHJlYmF0ZUJvcmRlckNvbG9yIiBpZD0iZmJ4X2h5YnJpZF81Ij4KCQkKCQk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVJbm5lckJveCIgaWQ9IiI+CgkJCQoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJUaXRsZUNvbnRhaW5lciI+CgkJCQk8YSB0aXRsZT0iSHl1bmRhaSBTYW50YSBGZSBIeWJyaWQgMjAyNSIgaHJlZj0iP3BhdGg9L25ldWZzL0h5dW5kYWktU2FudGFfRmVfSHlicmlkLTIwMjUuaHRtbCIgZGF0YS1tYWtlPSJIeXVuZGFpIiBkYXRhLW1vZGVsPSJTYW50YSBGZSBoeWJyaWRlIDIwMjUiPgoJCQkJCTxoMz4KCQkJCQkJPHNwYW4gY2xhc3M9InNwYW5DYXJNYWtlICI+SHl1bmRhaTwvc3Bhbj48YnI+CgkJCQkJCTxzcGFuIGNsYXNzPSJtb2RlbE5hbWUgc3Bhbk1vZGVsTmFtZSI+U2FudGEgRmUgSHlicmlkIDIwMjU8L3NwYW4+CgkJCQkJPC9oMz4KCQkJCTwvYT4KCQkJCSAgICA8IS0tIE9QRU4gTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KICAgIDxkaXYgY2xhc3M9ImRpdk5ld0NhclN0YXJ0UHJpY2UiPgogICAgICAgIMOgIHBhcnRpciBkZQogICAgICAgIDxzcGFuIGNsYXNzPSIiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj40NSA1NDY8L3NwYW4+PC9zcGFuPgogICAgICAgIDxpIHN0eWxlPSJjb2xvcjojMDAwO2ZvbnQtc2l6ZToyMHB4OyIgY2xhc3M9ImNhclByaWNlSW5pdGlhbFRvb2xUaXBJY29uIGZhbCBmYS1pbmZvLWNpcmNsZSBibGFja0NvbG9yQm9sZCIgZGF0YS10b29sdGlwPSImbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1BEU0Y6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NDIgNDk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VHJhbnNwb3J0ICZhbXA7IFByw6lwYXJhdGlvbjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsyIDEwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O0ZyYWlzIGQnYWRtaW5pc3RyYXRpb24mbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs3OTkmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBSRFBSTSZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzQ4Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VGF4ZSBBQzombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUb3RhbCZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzQ1IDU0NiZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsiPjwvaT4KICAgIDwvZGl2PgogICAgPCEtLSBDTE9TRSBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgoJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckluU3RvY2tMaW5rIiBoaWRkZW4+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGRhdGEtdHlwZT0iaW52ZGF0YSIgZGF0YS1tYWtlPSJIeXVuZGFpIiBkYXRhLW1vZGVsPSJTYW50YSBGZSBIeWJyaWQiIGRhdGEteWVhcj0iMjAyNSIgZGF0YS1zdHlsZWlkcz0iNDYzMjg5LDQ2MzI5MCIgZGF0YS1oeWJyaWQ9IjEiPgoJPC9kaXY+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJbWFnZUNvbnRhaW5lciBmbGV4LWNlbnRlciBhbGlnbi1jZW50ZXIgIj4KCQkJCTxhIHRpdGxlPSJIeXVuZGFpIFNhbnRhIEZlIEh5YnJpZCAyMDI1IiBocmVmPSI\/cGF0aD0vbmV1ZnMvSHl1bmRhaS1TYW50YV9GZV9IeWJyaWQtMjAyNS5odG1sIj4KCQkJCQk8aW1nIGFsdD0iSHl1bmRhaSBTYW50YSBGZSBIeWJyaWQgMjAyNSIgYm9yZGVyPSIwIiBjbGFzcz0ibGF6eWxvYWQgb3B0YW5vbi1jYXRlZ29yeS1DMDAwMSIgZGF0YS1pbWdzcmM9Imh0dHBzOi8vY2FyaW1hZ2VzLmQyY21lZGlhLmNhL25ld2NhcmltYWdlcy9mci9IeXVuZGFpL1NhbnRhX0ZlX0h5YnJpZC8yMDI1LzQ2MzI4OS9SZWQvcHJvZmlsZS53ZWJwIiBkYXRhLW90LWlnbm9yZSBkYXRhLWNvb2tpZWNvbnNlbnQ9Imlnbm9yZSI+CgkJCQk8L2E+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJGb290ZXJDb250YWluZXIgc3RhY2stbGMgLS1zLTkiPgoJCQkJCTxkaXYgY2xhc3M9ImNhclBheW1lbnRXcmFwcGVyIj4KCQkJPGRpdiBjbGFzcz0iY29udGVudC1za2VsZXRvbiBodG1sLWJsb2NrIiBkYXRhLWJsb2NrPSJwYXltZW50QmxvY2siIGRhdGEtdHlwZT0iYmxvY2siIGRhdGEtc291cmNlPSJzZXJ2ZXIiIGRhdGEtY2FsbGJhY2s9InBheW1lbnRDYWxjQmxvY2siPgoJCQoJPGlucHV0IG5hbWU9ImJsb2NrLWRhdGEiIHR5cGU9ImhpZGRlbiIgdmFsdWU9InsmcXVvdDtzdHlsZWlkJnF1b3Q7OiZxdW90OzQ2MzI4OSZxdW90OywmcXVvdDt0aXRsZSZxdW90OzomcXVvdDtIeXVuZGFpIFNhbnRhIEZlIEh5YnJpZCAyMDI1JnF1b3Q7LCZxdW90O2hyZWYmcXVvdDs6JnF1b3Q7XC9uZXVmc1wvSHl1bmRhaS1TYW50YV9GZV9IeWJyaWQtMjAyNS5odG1sJnF1b3Q7LCZxdW90O2xpbmtzdHlsZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7bGlua2NsYXNzJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtjb250YWluZXJjbGFzcyZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7cHJvbW90ZXh0JnF1b3Q7OiZxdW90O0RcdTAwZTljb3V2cmV6IGwnb2ZmcmUhJnF1b3Q7fSI+Cgk8L2Rpdj4KCTwvZGl2PgoJCQkJCgkJCTwvZGl2PgoJCTwvZGl2PgoJPC9kaXY+CTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZU91dGVyQm94ICByZWJhdGVCb3JkZXJDb2xvciIgaWQ9ImZieF9oeWJyaWRfNiI+CgkJCgkJPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlSW5uZXJCb3giIGlkPSIiPgoJCQkKCQkJPGRpdiBjbGFzcz0iZGl2Q2FyVGl0bGVDb250YWluZXIiPgoJCQkJPGEgdGl0bGU9Ikh5dW5kYWkgU29uYXRhIEh5YnJpZCAyMDI2IiBocmVmPSI\/cGF0aD0vbmV1ZnMvSHl1bmRhaS1Tb25hdGFfSHlicmlkLTIwMjYuaHRtbCIgZGF0YS1tYWtlPSJIeXVuZGFpIiBkYXRhLW1vZGVsPSJTb25hdGEgaHlicmlkZSAyMDI2Ij4KCQkJCQk8aDM+CgkJCQkJCTxzcGFuIGNsYXNzPSJzcGFuQ2FyTWFrZSAiPkh5dW5kYWk8L3NwYW4+PGJyPgoJCQkJCQk8c3BhbiBjbGFzcz0ibW9kZWxOYW1lIHNwYW5Nb2RlbE5hbWUiPlNvbmF0YSBIeWJyaWQgMjAyNjwvc3Bhbj4KCQkJCQk8L2gzPgoJCQkJPC9hPgoJCQkJICAgIDwhLS0gT1BFTiBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgogICAgPGRpdiBjbGFzcz0iZGl2TmV3Q2FyU3RhcnRQcmljZSI+CiAgICAgICAgw6AgcGFydGlyIGRlCiAgICAgICAgPHNwYW4gY2xhc3M9IiI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjM5IDEyMTwvc3Bhbj48L3NwYW4+CiAgICAgICAgPGkgc3R5bGU9ImNvbG9yOiMwMDA7Zm9udC1zaXplOjIwcHg7IiBjbGFzcz0iY2FyUHJpY2VJbml0aWFsVG9vbFRpcEljb24gZmFsIGZhLWluZm8tY2lyY2xlIGJsYWNrQ29sb3JCb2xkIiBkYXRhLXRvb2x0aXA9IiZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7UERTRjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDszNiAxOTkmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUcmFuc3BvcnQgJmFtcDsgUHLDqXBhcmF0aW9uOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzEgOTc1Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgZCdhZG1pbmlzdHJhdGlvbiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0Ozc5OSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O0ZyYWlzIFJEUFJNJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NDgmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUYXhlIEFDOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzEwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RvdGFsJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MzkgMTIxJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyI+PC9pPgogICAgPC9kaXY+CiAgICA8IS0tIENMT1NFIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CgkJCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW5TdG9ja0xpbmsiIGhpZGRlbj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgZGF0YS10eXBlPSJpbnZkYXRhIiBkYXRhLW1ha2U9Ikh5dW5kYWkiIGRhdGEtbW9kZWw9IlNvbmF0YSBIeWJyaWQiIGRhdGEteWVhcj0iMjAyNiIgZGF0YS1zdHlsZWlkcz0iNDgwMTM2IiBkYXRhLWh5YnJpZD0iMSI+Cgk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckltYWdlQ29udGFpbmVyIGZsZXgtY2VudGVyIGFsaWduLWNlbnRlciAiPgoJCQkJPGEgdGl0bGU9Ikh5dW5kYWkgU29uYXRhIEh5YnJpZCAyMDI2IiBocmVmPSI\/cGF0aD0vbmV1ZnMvSHl1bmRhaS1Tb25hdGFfSHlicmlkLTIwMjYuaHRtbCI+CgkJCQkJPGltZyBhbHQ9Ikh5dW5kYWkgU29uYXRhIEh5YnJpZCAyMDI2IiBib3JkZXI9IjAiIGNsYXNzPSJsYXp5bG9hZCBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLWltZ3NyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0h5dW5kYWkvU29uYXRhX0h5YnJpZC8yMDI2LzQ4MDEzNi9SZWQvcHJvZmlsZS53ZWJwIiBkYXRhLW90LWlnbm9yZSBkYXRhLWNvb2tpZWNvbnNlbnQ9Imlnbm9yZSI+CgkJCQk8L2E+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJGb290ZXJDb250YWluZXIgc3RhY2stbGMgLS1zLTkiPgoJCQkJCTxkaXYgY2xhc3M9ImNhclBheW1lbnRXcmFwcGVyIj4KCQkJPGRpdiBjbGFzcz0iY29udGVudC1za2VsZXRvbiBodG1sLWJsb2NrIiBkYXRhLWJsb2NrPSJwYXltZW50QmxvY2siIGRhdGEtdHlwZT0iYmxvY2siIGRhdGEtc291cmNlPSJzZXJ2ZXIiIGRhdGEtY2FsbGJhY2s9InBheW1lbnRDYWxjQmxvY2siPgoJCQoJPGlucHV0IG5hbWU9ImJsb2NrLWRhdGEiIHR5cGU9ImhpZGRlbiIgdmFsdWU9InsmcXVvdDtzdHlsZWlkJnF1b3Q7OiZxdW90OzQ4MDEzNiZxdW90OywmcXVvdDt0aXRsZSZxdW90OzomcXVvdDtIeXVuZGFpIFNvbmF0YSBIeWJyaWQgMjAyNiZxdW90OywmcXVvdDtocmVmJnF1b3Q7OiZxdW90O1wvbmV1ZnNcL0h5dW5kYWktU29uYXRhX0h5YnJpZC0yMDI2Lmh0bWwmcXVvdDssJnF1b3Q7bGlua3N0eWxlJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtsaW5rY2xhc3MmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2NvbnRhaW5lcmNsYXNzJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtwcm9tb3RleHQmcXVvdDs6JnF1b3Q7RFx1MDBlOWNvdXZyZXogbCdvZmZyZSEmcXVvdDt9Ij4KCTwvZGl2PgoJPC9kaXY+CgkJCQkKCQkJPC9kaXY+CgkJPC9kaXY+Cgk8L2Rpdj4JPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggIHJlYmF0ZUJvcmRlckNvbG9yIiBpZD0iZmJ4X2h5YnJpZF83Ij4KCQkKCQk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVJbm5lckJveCIgaWQ9IiI+CgkJCQoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJUaXRsZUNvbnRhaW5lciI+CgkJCQk8YSB0aXRsZT0iSHl1bmRhaSBUdWNzb24gSHlicmlkIDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9IeXVuZGFpLVR1Y3Nvbl9IeWJyaWQtMjAyNi5odG1sIiBkYXRhLW1ha2U9Ikh5dW5kYWkiIGRhdGEtbW9kZWw9IlR1Y3NvbiBoeWJyaWRlIDIwMjYiPgoJCQkJCTxoMz4KCQkJCQkJPHNwYW4gY2xhc3M9InNwYW5DYXJNYWtlICI+SHl1bmRhaTwvc3Bhbj48YnI+CgkJCQkJCTxzcGFuIGNsYXNzPSJtb2RlbE5hbWUgc3Bhbk1vZGVsTmFtZSI+VHVjc29uIEh5YnJpZCAyMDI2PC9zcGFuPgoJCQkJCTwvaDM+CgkJCQk8L2E+CgkJCQkgICAgPCEtLSBPUEVOIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CiAgICA8ZGl2IGNsYXNzPSJkaXZOZXdDYXJTdGFydFByaWNlIj4KICAgICAgICDDoCBwYXJ0aXIgZGUKICAgICAgICA8c3BhbiBjbGFzcz0iIj4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+NDYgNzk2PC9zcGFuPjwvc3Bhbj4KICAgICAgICA8aSBzdHlsZT0iY29sb3I6IzAwMDtmb250LXNpemU6MjBweDsiIGNsYXNzPSJjYXJQcmljZUluaXRpYWxUb29sVGlwSWNvbiBmYWwgZmEtaW5mby1jaXJjbGUgYmxhY2tDb2xvckJvbGQiIGRhdGEtdG9vbHRpcD0iJmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtQRFNGOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzQzIDc5OSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RyYW5zcG9ydCAmYW1wOyBQcsOpcGFyYXRpb246Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MiAwNTAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBkJ2FkbWluaXN0cmF0aW9uJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7Nzk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgUkRQUk0mbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs0OCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RheGUgQUM6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VG90YWwmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs0NiA3OTYmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Ij48L2k+CiAgICA8L2Rpdj4KICAgIDwhLS0gQ0xPU0UgTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJblN0b2NrTGluayIgaGlkZGVuPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBkYXRhLXR5cGU9ImludmRhdGEiIGRhdGEtbWFrZT0iSHl1bmRhaSIgZGF0YS1tb2RlbD0iVHVjc29uIEh5YnJpZCIgZGF0YS15ZWFyPSIyMDI2IiBkYXRhLXN0eWxlaWRzPSI0ODA1NjIsNDgwNTYzIiBkYXRhLWh5YnJpZD0iMSI+Cgk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckltYWdlQ29udGFpbmVyIGZsZXgtY2VudGVyIGFsaWduLWNlbnRlciAiPgoJCQkJPGEgdGl0bGU9Ikh5dW5kYWkgVHVjc29uIEh5YnJpZCAyMDI2IiBocmVmPSI\/cGF0aD0vbmV1ZnMvSHl1bmRhaS1UdWNzb25fSHlicmlkLTIwMjYuaHRtbCI+CgkJCQkJPGltZyBhbHQ9Ikh5dW5kYWkgVHVjc29uIEh5YnJpZCAyMDI2IiBib3JkZXI9IjAiIGNsYXNzPSJsYXp5bG9hZCBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLWltZ3NyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0h5dW5kYWkvVHVjc29uX0h5YnJpZC8yMDI2LzQ4MDU2Mi9SZWQvcHJvZmlsZS53ZWJwIiBkYXRhLW90LWlnbm9yZSBkYXRhLWNvb2tpZWNvbnNlbnQ9Imlnbm9yZSI+CgkJCQk8L2E+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJGb290ZXJDb250YWluZXIgc3RhY2stbGMgLS1zLTkiPgoJCQkJCTxkaXYgY2xhc3M9ImNhclBheW1lbnRXcmFwcGVyIj4KCQkJPGRpdiBjbGFzcz0iY29udGVudC1za2VsZXRvbiBodG1sLWJsb2NrIiBkYXRhLWJsb2NrPSJwYXltZW50QmxvY2siIGRhdGEtdHlwZT0iYmxvY2siIGRhdGEtc291cmNlPSJzZXJ2ZXIiIGRhdGEtY2FsbGJhY2s9InBheW1lbnRDYWxjQmxvY2siPgoJCQoJPGlucHV0IG5hbWU9ImJsb2NrLWRhdGEiIHR5cGU9ImhpZGRlbiIgdmFsdWU9InsmcXVvdDtzdHlsZWlkJnF1b3Q7OiZxdW90OzQ4MDU2MiZxdW90OywmcXVvdDt0aXRsZSZxdW90OzomcXVvdDtIeXVuZGFpIFR1Y3NvbiBIeWJyaWQgMjAyNiZxdW90OywmcXVvdDtocmVmJnF1b3Q7OiZxdW90O1wvbmV1ZnNcL0h5dW5kYWktVHVjc29uX0h5YnJpZC0yMDI2Lmh0bWwmcXVvdDssJnF1b3Q7bGlua3N0eWxlJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtsaW5rY2xhc3MmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2NvbnRhaW5lcmNsYXNzJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtwcm9tb3RleHQmcXVvdDs6JnF1b3Q7RFx1MDBlOWNvdXZyZXogbCdvZmZyZSEmcXVvdDt9Ij4KCTwvZGl2PgoJPC9kaXY+CgkJCQkKCQkJPC9kaXY+CgkJPC9kaXY+Cgk8L2Rpdj4JPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggIHJlYmF0ZUJvcmRlckNvbG9yIiBpZD0iZmJ4X2h5YnJpZF84Ij4KCQk8ZGl2IGNsYXNzPSJyZWJhdGVUYWciPjxzcGFuIGNsYXNzPSJyZWJhdGVUZXh0Ij5yYWJhaXMganVzcXUnw6A8L3NwYW4+PHNwYW4gY2xhc3M9InJlYmF0ZUFtb3VudCI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjUwMDwvc3Bhbj48L3NwYW4+PC9kaXY+CgkJPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlSW5uZXJCb3giIGlkPSIiPgoJCQkKCQkJPGRpdiBjbGFzcz0iZGl2Q2FyVGl0bGVDb250YWluZXIiPgoJCQkJPGEgdGl0bGU9Ikh5dW5kYWkgVHVjc29uIEh5YnJpZCAyMDI1IiBocmVmPSI\/cGF0aD0vbmV1ZnMvSHl1bmRhaS1UdWNzb25fSHlicmlkLTIwMjUuaHRtbCIgZGF0YS1tYWtlPSJIeXVuZGFpIiBkYXRhLW1vZGVsPSJUdWNzb24gaHlicmlkZSAyMDI1Ij4KCQkJCQk8aDM+CgkJCQkJCTxzcGFuIGNsYXNzPSJzcGFuQ2FyTWFrZSAiPkh5dW5kYWk8L3NwYW4+PGJyPgoJCQkJCQk8c3BhbiBjbGFzcz0ibW9kZWxOYW1lIHNwYW5Nb2RlbE5hbWUiPlR1Y3NvbiBIeWJyaWQgMjAyNTwvc3Bhbj4KCQkJCQk8L2gzPgoJCQkJPC9hPgoJCQkJICAgIDwhLS0gT1BFTiBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgogICAgPGRpdiBjbGFzcz0iZGl2TmV3Q2FyU3RhcnRQcmljZSI+CiAgICAgICAgw6AgcGFydGlyIGRlCiAgICAgICAgPHNwYW4gY2xhc3M9InN0cmlrZS1wcmljZSI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjQ2IDM5Njwvc3Bhbj48L3NwYW4+CiAgICAgICAgPGkgc3R5bGU9ImNvbG9yOiMwMDA7Zm9udC1zaXplOjIwcHg7IiBjbGFzcz0iY2FyUHJpY2VJbml0aWFsVG9vbFRpcEljb24gZmFsIGZhLWluZm8tY2lyY2xlIGJsYWNrQ29sb3JCb2xkIiBkYXRhLXRvb2x0aXA9IiZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7UERTRjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs0MyAzOTkmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUcmFuc3BvcnQgJmFtcDsgUHLDqXBhcmF0aW9uOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzIgMDUwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgZCdhZG1pbmlzdHJhdGlvbiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0Ozc5OSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O0ZyYWlzIFJEUFJNJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NDgmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUYXhlIEFDOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzEwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RvdGFsJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NDYgMzk2Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyI+PC9pPgogICAgPC9kaXY+CiAgICA8IS0tIENMT1NFIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+PCEtLSBPUEVOIE5FVyBDQVIgUFJPTU8gUFJJQ0UgKDI3NCktLT48ZGl2IGNsYXNzPSJkaXZOZXdDYXJQcm9tb1ByaWNlIj5lbiByYWJhaXMgw6AgPHNwYW4gY2xhc3M9InN0cmlrZS1wcmljZSIgc3R5bGU9ImNvbG9yOiAjMDAyYzVmOyI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjQ1IDg5Njwvc3Bhbj48L3NwYW4+PC9kaXY+PCEtLSBDTE9TRSBORVcgQ0FSIFBST01PIFBSSUNFICgyODEpLS0+CgkJCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW5TdG9ja0xpbmsiIGhpZGRlbj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgZGF0YS10eXBlPSJpbnZkYXRhIiBkYXRhLW1ha2U9Ikh5dW5kYWkiIGRhdGEtbW9kZWw9IlR1Y3NvbiBIeWJyaWQiIGRhdGEteWVhcj0iMjAyNSIgZGF0YS1zdHlsZWlkcz0iNDYxOTQxLDQ2MTk0MiIgZGF0YS1oeWJyaWQ9IjEiPgoJPC9kaXY+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJbWFnZUNvbnRhaW5lciBmbGV4LWNlbnRlciBhbGlnbi1jZW50ZXIgIj4KCQkJCTxhIHRpdGxlPSJIeXVuZGFpIFR1Y3NvbiBIeWJyaWQgMjAyNSIgaHJlZj0iP3BhdGg9L25ldWZzL0h5dW5kYWktVHVjc29uX0h5YnJpZC0yMDI1Lmh0bWwiPgoJCQkJCTxpbWcgYWx0PSJIeXVuZGFpIFR1Y3NvbiBIeWJyaWQgMjAyNSIgYm9yZGVyPSIwIiBjbGFzcz0ibGF6eWxvYWQgb3B0YW5vbi1jYXRlZ29yeS1DMDAwMSIgZGF0YS1pbWdzcmM9Imh0dHBzOi8vY2FyaW1hZ2VzLmQyY21lZGlhLmNhL25ld2NhcmltYWdlcy9mci9IeXVuZGFpL1R1Y3Nvbl9IeWJyaWQvMjAyNS80NjE5NDEvUmVkL3Byb2ZpbGUud2VicCIgZGF0YS1vdC1pZ25vcmUgZGF0YS1jb29raWVjb25zZW50PSJpZ25vcmUiPgoJCQkJPC9hPgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyRm9vdGVyQ29udGFpbmVyIHN0YWNrLWxjIC0tcy05Ij4KCQkJCQk8ZGl2IGNsYXNzPSJjYXJQYXltZW50V3JhcHBlciI+CgkJCTxkaXYgY2xhc3M9ImNvbnRlbnQtc2tlbGV0b24gaHRtbC1ibG9jayIgZGF0YS1ibG9jaz0icGF5bWVudEJsb2NrIiBkYXRhLXR5cGU9ImJsb2NrIiBkYXRhLXNvdXJjZT0ic2VydmVyIiBkYXRhLWNhbGxiYWNrPSJwYXltZW50Q2FsY0Jsb2NrIj4KCQkKCTxpbnB1dCBuYW1lPSJibG9jay1kYXRhIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSJ7JnF1b3Q7c3R5bGVpZCZxdW90OzomcXVvdDs0NjE5NDEmcXVvdDssJnF1b3Q7dGl0bGUmcXVvdDs6JnF1b3Q7SHl1bmRhaSBUdWNzb24gSHlicmlkIDIwMjUmcXVvdDssJnF1b3Q7aHJlZiZxdW90OzomcXVvdDtcL25ldWZzXC9IeXVuZGFpLVR1Y3Nvbl9IeWJyaWQtMjAyNS5odG1sJnF1b3Q7LCZxdW90O2xpbmtzdHlsZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7bGlua2NsYXNzJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtjb250YWluZXJjbGFzcyZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7cHJvbW90ZXh0JnF1b3Q7OiZxdW90O0RcdTAwZTljb3V2cmV6IGwnb2ZmcmUhJnF1b3Q7fSI+Cgk8L2Rpdj4KCTwvZGl2PgoJCQkJCgkJCTwvZGl2PgoJCTwvZGl2PgoJPC9kaXY+PC9kaXY+PC9kaXY+PCEtLSBDTE9TRSBDQVRFR09SWUJPWFdSQVBQRVIgKDIwNjApLS0+PCEtLSBPUEVOIENBVEVHT1JZQk9YV1JBUFBFUiAoMjA1MikgLS0+PGRpdiBpZD0iY2xhc3NwaGV2X2NvbnRhaW5lciIgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEyIGRpdkNhdGVnb3J5Qm94V3JhcHBlciIgc3RhdGU9Im9wZW4iIG5idmlzaWJsZT0iMSI+PGgyIGNsYXNzPSJkZWZhdWx0IGljb24taGVhZGluZyBmbGV4LWJveCBhbGlnbi1jZW50ZXIiPgoJPHNwYW4gY2xhc3M9ImZhIGZhLWNoZXZyb24tcmlnaHQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L3NwYW4+Cgk8Ym94LWxjIGNsYXNzPSItcHYwIj4KCQk8ZGl2IGNsYXNzPSJtYWluVGV4dCAtYm9sZCI+SHlicmlkZXMgcmVjaGFyZ2VhYmxlIG5ldWZzIEh5dW5kYWkgMjAyNSAmYW1wOyAyMDI2PC9kaXY+CgkJPGRpdiBjbGFzcz0ic2Vjb25kYXJ5VGV4dCI+w6AgUmVwZW50aWdueSAoZW50cmUgTWFzY291Y2hlIGV0IE1vbnRyw6lhbCk8L2Rpdj4KCTwvYm94LWxjPgo8L2gyPjxkaXYgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEyIGRpdkNhcnNCb3hXcmFwcGVyIENMQVNTX3BoZXYiPgk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVPdXRlckJveCAgcmViYXRlQm9yZGVyQ29sb3IiIGlkPSJmYnhfcGhldl8xIj4KCQk8ZGl2IGNsYXNzPSJyZWJhdGVUYWciPjxzcGFuIGNsYXNzPSJyZWJhdGVUZXh0Ij5yYWJhaXMganVzcXUnw6A8L3NwYW4+PHNwYW4gY2xhc3M9InJlYmF0ZUFtb3VudCI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjUwMDwvc3Bhbj48L3NwYW4+PC9kaXY+CgkJPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlSW5uZXJCb3giIGlkPSIiPgoJCQkKCQkJPGRpdiBjbGFzcz0iZGl2Q2FyVGl0bGVDb250YWluZXIiPgoJCQkJPGEgdGl0bGU9Ikh5dW5kYWkgVHVjc29uIFBsdWctSW4gSHlicmlkIDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9IeXVuZGFpLVR1Y3Nvbl9QbHVnX0luX0h5YnJpZC0yMDI2Lmh0bWwiIGRhdGEtbWFrZT0iSHl1bmRhaSIgZGF0YS1tb2RlbD0iVHVjc29uIGh5YnJpZGUgcmVjaGFyZ2VhYmxlIDIwMjYiPgoJCQkJCTxoMz4KCQkJCQkJPHNwYW4gY2xhc3M9InNwYW5DYXJNYWtlICI+SHl1bmRhaTwvc3Bhbj48YnI+CgkJCQkJCTxzcGFuIGNsYXNzPSJtb2RlbE5hbWUgc3Bhbk1vZGVsTmFtZSI+VHVjc29uIFBsdWctSW4gSHlicmlkIDIwMjY8L3NwYW4+CgkJCQkJPC9oMz4KCQkJCTwvYT4KCQkJCSAgICA8IS0tIE9QRU4gTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KICAgIDxkaXYgY2xhc3M9ImRpdk5ld0NhclN0YXJ0UHJpY2UiPgogICAgICAgIMOgIHBhcnRpciBkZQogICAgICAgIDxzcGFuIGNsYXNzPSJzdHJpa2UtcHJpY2UiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj41NiAyOTY8L3NwYW4+PC9zcGFuPgogICAgICAgIDxpIHN0eWxlPSJjb2xvcjojMDAwO2ZvbnQtc2l6ZToyMHB4OyIgY2xhc3M9ImNhclByaWNlSW5pdGlhbFRvb2xUaXBJY29uIGZhbCBmYS1pbmZvLWNpcmNsZSBibGFja0NvbG9yQm9sZCIgZGF0YS10b29sdGlwPSImbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1BEU0Y6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NTMgMjk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VHJhbnNwb3J0ICZhbXA7IFByw6lwYXJhdGlvbjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsyIDA1MCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O0ZyYWlzIGQnYWRtaW5pc3RyYXRpb24mbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs1OTkmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBSRFBSTSZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzQ4Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VGF4ZSBBQzombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUb3RhbCZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzU2IDA5NiZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsiPjwvaT4KICAgIDwvZGl2PgogICAgPCEtLSBDTE9TRSBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPjwhLS0gT1BFTiBORVcgQ0FSIFBST01PIFBSSUNFICgyNzQpLS0+PGRpdiBjbGFzcz0iZGl2TmV3Q2FyUHJvbW9QcmljZSI+ZW4gcmFiYWlzIMOgIDxzcGFuIGNsYXNzPSJzdHJpa2UtcHJpY2UiIHN0eWxlPSJjb2xvcjogIzAwMmM1ZjsiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj41NSA3OTY8L3NwYW4+PC9zcGFuPjwvZGl2PjwhLS0gQ0xPU0UgTkVXIENBUiBQUk9NTyBQUklDRSAoMjgxKS0tPgoJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckluU3RvY2tMaW5rIiBoaWRkZW4+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGRhdGEtdHlwZT0iaW52ZGF0YSIgZGF0YS1tYWtlPSJIeXVuZGFpIiBkYXRhLW1vZGVsPSJUdWNzb24gUGx1Zy1JbiBIeWJyaWQiIGRhdGEteWVhcj0iMjAyNiIgZGF0YS1zdHlsZWlkcz0iNDgwNTY0IiBkYXRhLWh5YnJpZD0iMSI+Cgk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckltYWdlQ29udGFpbmVyIGZsZXgtY2VudGVyIGFsaWduLWNlbnRlciAiPgoJCQkJPGEgdGl0bGU9Ikh5dW5kYWkgVHVjc29uIFBsdWctSW4gSHlicmlkIDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9IeXVuZGFpLVR1Y3Nvbl9QbHVnX0luX0h5YnJpZC0yMDI2Lmh0bWwiPgoJCQkJCTxpbWcgYWx0PSJIeXVuZGFpIFR1Y3NvbiBQbHVnLUluIEh5YnJpZCAyMDI2IiBib3JkZXI9IjAiIGNsYXNzPSJsYXp5bG9hZCBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLWltZ3NyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0h5dW5kYWkvVHVjc29uX1BsdWdfSW5fSHlicmlkLzIwMjYvNDgwNTY0L1JlZC9wcm9maWxlLndlYnAiIGRhdGEtb3QtaWdub3JlIGRhdGEtY29va2llY29uc2VudD0iaWdub3JlIj4KCQkJCTwvYT4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckZvb3RlckNvbnRhaW5lciBzdGFjay1sYyAtLXMtOSI+CgkJCQkJPGRpdiBjbGFzcz0iY2FyUGF5bWVudFdyYXBwZXIiPgoJCQk8ZGl2IGNsYXNzPSJjb250ZW50LXNrZWxldG9uIGh0bWwtYmxvY2siIGRhdGEtYmxvY2s9InBheW1lbnRCbG9jayIgZGF0YS10eXBlPSJibG9jayIgZGF0YS1zb3VyY2U9InNlcnZlciIgZGF0YS1jYWxsYmFjaz0icGF5bWVudENhbGNCbG9jayI+CgkJCgk8aW5wdXQgbmFtZT0iYmxvY2stZGF0YSIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0ieyZxdW90O3N0eWxlaWQmcXVvdDs6JnF1b3Q7NDgwNTY0JnF1b3Q7LCZxdW90O3RpdGxlJnF1b3Q7OiZxdW90O0h5dW5kYWkgVHVjc29uIFBsdWctSW4gSHlicmlkIDIwMjYmcXVvdDssJnF1b3Q7aHJlZiZxdW90OzomcXVvdDtcL25ldWZzXC9IeXVuZGFpLVR1Y3Nvbl9QbHVnX0luX0h5YnJpZC0yMDI2Lmh0bWwmcXVvdDssJnF1b3Q7bGlua3N0eWxlJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtsaW5rY2xhc3MmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2NvbnRhaW5lcmNsYXNzJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtwcm9tb3RleHQmcXVvdDs6JnF1b3Q7RFx1MDBlOWNvdXZyZXogbCdvZmZyZSEmcXVvdDt9Ij4KCTwvZGl2PgoJPC9kaXY+CgkJCQkKCQkJPC9kaXY+CgkJPC9kaXY+Cgk8L2Rpdj4JPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggIHJlYmF0ZUJvcmRlckNvbG9yIiBpZD0iZmJ4X3BoZXZfMiI+CgkJPGRpdiBjbGFzcz0icmViYXRlVGFnIj48c3BhbiBjbGFzcz0icmViYXRlVGV4dCI+cmFiYWlzIGp1c3F1J8OgPC9zcGFuPjxzcGFuIGNsYXNzPSJyZWJhdGVBbW91bnQiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj40IDUwMDwvc3Bhbj48L3NwYW4+PC9kaXY+CgkJPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlSW5uZXJCb3giIGlkPSIiPgoJCQkKCQkJPGRpdiBjbGFzcz0iZGl2Q2FyVGl0bGVDb250YWluZXIiPgoJCQkJPGEgdGl0bGU9Ikh5dW5kYWkgVHVjc29uIFBsdWctSW4gSHlicmlkIDIwMjUiIGhyZWY9Ij9wYXRoPS9uZXVmcy9IeXVuZGFpLVR1Y3Nvbl9QbHVnX0luX0h5YnJpZC0yMDI1Lmh0bWwiIGRhdGEtbWFrZT0iSHl1bmRhaSIgZGF0YS1tb2RlbD0iVHVjc29uIGh5YnJpZGUgcmVjaGFyZ2VhYmxlIDIwMjUiPgoJCQkJCTxoMz4KCQkJCQkJPHNwYW4gY2xhc3M9InNwYW5DYXJNYWtlICI+SHl1bmRhaTwvc3Bhbj48YnI+CgkJCQkJCTxzcGFuIGNsYXNzPSJtb2RlbE5hbWUgc3Bhbk1vZGVsTmFtZSI+VHVjc29uIFBsdWctSW4gSHlicmlkIDIwMjU8L3NwYW4+CgkJCQkJPC9oMz4KCQkJCTwvYT4KCQkJCSAgICA8IS0tIE9QRU4gTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KICAgIDxkaXYgY2xhc3M9ImRpdk5ld0NhclN0YXJ0UHJpY2UiPgogICAgICAgIMOgIHBhcnRpciBkZQogICAgICAgIDxzcGFuIGNsYXNzPSJzdHJpa2UtcHJpY2UiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj41NSA4OTY8L3NwYW4+PC9zcGFuPgogICAgICAgIDxpIHN0eWxlPSJjb2xvcjojMDAwO2ZvbnQtc2l6ZToyMHB4OyIgY2xhc3M9ImNhclByaWNlSW5pdGlhbFRvb2xUaXBJY29uIGZhbCBmYS1pbmZvLWNpcmNsZSBibGFja0NvbG9yQm9sZCIgZGF0YS10b29sdGlwPSImbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1BEU0Y6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NTIgODk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VHJhbnNwb3J0ICZhbXA7IFByw6lwYXJhdGlvbjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsyIDA1MCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O0ZyYWlzIGQnYWRtaW5pc3RyYXRpb24mbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs1OTkmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBSRFBSTSZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzQ4Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VGF4ZSBBQzombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUb3RhbCZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzU1IDY5NiZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsiPjwvaT4KICAgIDwvZGl2PgogICAgPCEtLSBDTE9TRSBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPjwhLS0gT1BFTiBORVcgQ0FSIFBST01PIFBSSUNFICgyNzQpLS0+PGRpdiBjbGFzcz0iZGl2TmV3Q2FyUHJvbW9QcmljZSI+ZW4gcmFiYWlzIMOgIDxzcGFuIGNsYXNzPSJzdHJpa2UtcHJpY2UiIHN0eWxlPSJjb2xvcjogIzAwMmM1ZjsiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj41MSAzOTY8L3NwYW4+PC9zcGFuPjwvZGl2PjwhLS0gQ0xPU0UgTkVXIENBUiBQUk9NTyBQUklDRSAoMjgxKS0tPgoJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckluU3RvY2tMaW5rIiBoaWRkZW4+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGRhdGEtdHlwZT0iaW52ZGF0YSIgZGF0YS1tYWtlPSJIeXVuZGFpIiBkYXRhLW1vZGVsPSJUdWNzb24gUGx1Zy1JbiBIeWJyaWQiIGRhdGEteWVhcj0iMjAyNSIgZGF0YS1zdHlsZWlkcz0iNDYxOTQwIiBkYXRhLWh5YnJpZD0iMSI+Cgk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckltYWdlQ29udGFpbmVyIGZsZXgtY2VudGVyIGFsaWduLWNlbnRlciAiPgoJCQkJPGEgdGl0bGU9Ikh5dW5kYWkgVHVjc29uIFBsdWctSW4gSHlicmlkIDIwMjUiIGhyZWY9Ij9wYXRoPS9uZXVmcy9IeXVuZGFpLVR1Y3Nvbl9QbHVnX0luX0h5YnJpZC0yMDI1Lmh0bWwiPgoJCQkJCTxpbWcgYWx0PSJIeXVuZGFpIFR1Y3NvbiBQbHVnLUluIEh5YnJpZCAyMDI1IiBib3JkZXI9IjAiIGNsYXNzPSJsYXp5bG9hZCBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLWltZ3NyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0h5dW5kYWkvVHVjc29uX1BsdWdfSW5fSHlicmlkLzIwMjUvNDYxOTQwL1JlZC9wcm9maWxlLndlYnAiIGRhdGEtb3QtaWdub3JlIGRhdGEtY29va2llY29uc2VudD0iaWdub3JlIj4KCQkJCTwvYT4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckZvb3RlckNvbnRhaW5lciBzdGFjay1sYyAtLXMtOSI+CgkJCQkJPGRpdiBjbGFzcz0iY2FyUGF5bWVudFdyYXBwZXIiPgoJCQk8ZGl2IGNsYXNzPSJjb250ZW50LXNrZWxldG9uIGh0bWwtYmxvY2siIGRhdGEtYmxvY2s9InBheW1lbnRCbG9jayIgZGF0YS10eXBlPSJibG9jayIgZGF0YS1zb3VyY2U9InNlcnZlciIgZGF0YS1jYWxsYmFjaz0icGF5bWVudENhbGNCbG9jayI+CgkJCgk8aW5wdXQgbmFtZT0iYmxvY2stZGF0YSIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0ieyZxdW90O3N0eWxlaWQmcXVvdDs6JnF1b3Q7NDYxOTQwJnF1b3Q7LCZxdW90O3RpdGxlJnF1b3Q7OiZxdW90O0h5dW5kYWkgVHVjc29uIFBsdWctSW4gSHlicmlkIDIwMjUmcXVvdDssJnF1b3Q7aHJlZiZxdW90OzomcXVvdDtcL25ldWZzXC9IeXVuZGFpLVR1Y3Nvbl9QbHVnX0luX0h5YnJpZC0yMDI1Lmh0bWwmcXVvdDssJnF1b3Q7bGlua3N0eWxlJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtsaW5rY2xhc3MmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2NvbnRhaW5lcmNsYXNzJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtwcm9tb3RleHQmcXVvdDs6JnF1b3Q7RFx1MDBlOWNvdXZyZXogbCdvZmZyZSEmcXVvdDt9Ij4KCTwvZGl2PgoJPC9kaXY+CgkJCQkKCQkJPC9kaXY+CgkJPC9kaXY+Cgk8L2Rpdj48L2Rpdj48L2Rpdj48IS0tIENMT1NFIENBVEVHT1JZQk9YV1JBUFBFUiAoMjA2MCktLT48IS0tIE9QRU4gQ0FURUdPUllCT1hXUkFQUEVSICgyMDUyKSAtLT48ZGl2IGlkPSJjbGFzc2VsZWN0cmljX2NvbnRhaW5lciIgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEyIGRpdkNhdGVnb3J5Qm94V3JhcHBlciIgc3RhdGU9Im9wZW4iIG5idmlzaWJsZT0iMSI+PGgyIGNsYXNzPSJkZWZhdWx0IGljb24taGVhZGluZyBmbGV4LWJveCBhbGlnbi1jZW50ZXIiPgoJPHNwYW4gY2xhc3M9ImZhIGZhLWNoZXZyb24tcmlnaHQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L3NwYW4+Cgk8Ym94LWxjIGNsYXNzPSItcHYwIj4KCQk8ZGl2IGNsYXNzPSJtYWluVGV4dCAtYm9sZCI+w4lsZWN0cmlxdWVzIG5ldXZlcyBIeXVuZGFpIDIwMjUgJmFtcDsgMjAyNjwvZGl2PgoJCTxkaXYgY2xhc3M9InNlY29uZGFyeVRleHQiPsOgIFJlcGVudGlnbnkgKGVudHJlIE1hc2NvdWNoZSBldCBNb250csOpYWwpPC9kaXY+Cgk8L2JveC1sYz4KPC9oMj48ZGl2IGNsYXNzPSJkaXZTcGFuIGRpdlNwYW4xMiBkaXZDYXJzQm94V3JhcHBlciBDTEFTU19lbGVjdHJpYyI+CTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZU91dGVyQm94ICByZWJhdGVCb3JkZXJDb2xvciIgaWQ9ImZieF9lbGVjdHJpY18xIj4KCQk8ZGl2IGNsYXNzPSJyZWJhdGVUYWciPjxzcGFuIGNsYXNzPSJyZWJhdGVUZXh0Ij5yYWJhaXMganVzcXUnw6A8L3NwYW4+PHNwYW4gY2xhc3M9InJlYmF0ZUFtb3VudCI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjIgMDAwPC9zcGFuPjwvc3Bhbj48L2Rpdj4KCQk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVJbm5lckJveCIgaWQ9IiI+CgkJCQoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJUaXRsZUNvbnRhaW5lciI+CgkJCQk8YSB0aXRsZT0iSHl1bmRhaSBJT05JUSA1IDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9IeXVuZGFpLUlPTklRXzUtMjAyNi5odG1sIiBkYXRhLW1ha2U9Ikh5dW5kYWkiIGRhdGEtbW9kZWw9IklPTklRIDUgMjAyNiI+CgkJCQkJPGgzPgoJCQkJCQk8c3BhbiBjbGFzcz0ic3BhbkNhck1ha2UgIj5IeXVuZGFpPC9zcGFuPjxicj4KCQkJCQkJPHNwYW4gY2xhc3M9Im1vZGVsTmFtZSBzcGFuTW9kZWxOYW1lIj5JT05JUSA1IDIwMjY8L3NwYW4+CgkJCQkJPC9oMz4KCQkJCTwvYT4KCQkJCSAgICA8IS0tIE9QRU4gTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KICAgIDxkaXYgY2xhc3M9ImRpdk5ld0NhclN0YXJ0UHJpY2UiPgogICAgICAgIMOgIHBhcnRpciBkZQogICAgICAgIDxzcGFuIGNsYXNzPSJzdHJpa2UtcHJpY2UiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj41OCAyOTY8L3NwYW4+PC9zcGFuPgogICAgICAgIDxpIHN0eWxlPSJjb2xvcjojMDAwO2ZvbnQtc2l6ZToyMHB4OyIgY2xhc3M9ImNhclByaWNlSW5pdGlhbFRvb2xUaXBJY29uIGZhbCBmYS1pbmZvLWNpcmNsZSBibGFja0NvbG9yQm9sZCIgZGF0YS10b29sdGlwPSImbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1BEU0Y6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NTUgNDk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VHJhbnNwb3J0ICZhbXA7IFByw6lwYXJhdGlvbjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsyIDA1MCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O0ZyYWlzIGQnYWRtaW5pc3RyYXRpb24mbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs1OTkmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBSRFBSTSZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzQ4Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VGF4ZSBBQzombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUb3RhbCZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzU4IDI5NiZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsiPjwvaT4KICAgIDwvZGl2PgogICAgPCEtLSBDTE9TRSBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPjwhLS0gT1BFTiBORVcgQ0FSIFBST01PIFBSSUNFICgyNzQpLS0+PGRpdiBjbGFzcz0iZGl2TmV3Q2FyUHJvbW9QcmljZSI+ZW4gcmFiYWlzIMOgIDxzcGFuIGNsYXNzPSJzdHJpa2UtcHJpY2UiIHN0eWxlPSJjb2xvcjogIzAwMmM1ZjsiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj41NiAyOTY8L3NwYW4+PC9zcGFuPjwvZGl2PjwhLS0gQ0xPU0UgTkVXIENBUiBQUk9NTyBQUklDRSAoMjgxKS0tPgoJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckluU3RvY2tMaW5rIiBoaWRkZW4+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGRhdGEtdHlwZT0iaW52ZGF0YSIgZGF0YS1tYWtlPSJIeXVuZGFpIiBkYXRhLW1vZGVsPSJJT05JUSA1IiBkYXRhLXllYXI9IjIwMjYiIGRhdGEtc3R5bGVpZHM9IjQ4MDQ2Miw0ODA0NjMsNDgwNDY0IiBkYXRhLWh5YnJpZD0iMCI+Cgk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckltYWdlQ29udGFpbmVyIGZsZXgtY2VudGVyIGFsaWduLWNlbnRlciAiPgoJCQkJPGEgdGl0bGU9Ikh5dW5kYWkgSU9OSVEgNSAyMDI2IiBocmVmPSI\/cGF0aD0vbmV1ZnMvSHl1bmRhaS1JT05JUV81LTIwMjYuaHRtbCI+CgkJCQkJPGltZyBhbHQ9Ikh5dW5kYWkgSU9OSVEgNSAyMDI2IiBib3JkZXI9IjAiIGNsYXNzPSJsYXp5bG9hZCBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLWltZ3NyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0h5dW5kYWkvSU9OSVFfNS8yMDI2LzQ4MDQ2Mi9SZWQvcHJvZmlsZS53ZWJwIiBkYXRhLW90LWlnbm9yZSBkYXRhLWNvb2tpZWNvbnNlbnQ9Imlnbm9yZSI+CgkJCQk8L2E+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJGb290ZXJDb250YWluZXIgc3RhY2stbGMgLS1zLTkiPgoJCQkJCTxkaXYgY2xhc3M9ImNhclBheW1lbnRXcmFwcGVyIj4KCQkJPGRpdiBjbGFzcz0iY29udGVudC1za2VsZXRvbiBodG1sLWJsb2NrIiBkYXRhLWJsb2NrPSJwYXltZW50QmxvY2siIGRhdGEtdHlwZT0iYmxvY2siIGRhdGEtc291cmNlPSJzZXJ2ZXIiIGRhdGEtY2FsbGJhY2s9InBheW1lbnRDYWxjQmxvY2siPgoJCQoJPGlucHV0IG5hbWU9ImJsb2NrLWRhdGEiIHR5cGU9ImhpZGRlbiIgdmFsdWU9InsmcXVvdDtzdHlsZWlkJnF1b3Q7OiZxdW90OzQ4MDQ2MiZxdW90OywmcXVvdDt0aXRsZSZxdW90OzomcXVvdDtIeXVuZGFpIElPTklRIDUgMjAyNiZxdW90OywmcXVvdDtocmVmJnF1b3Q7OiZxdW90O1wvbmV1ZnNcL0h5dW5kYWktSU9OSVFfNS0yMDI2Lmh0bWwmcXVvdDssJnF1b3Q7bGlua3N0eWxlJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtsaW5rY2xhc3MmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2NvbnRhaW5lcmNsYXNzJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtwcm9tb3RleHQmcXVvdDs6JnF1b3Q7RFx1MDBlOWNvdXZyZXogbCdvZmZyZSEmcXVvdDt9Ij4KCTwvZGl2PgoJPC9kaXY+CgkJCQkKCQkJPC9kaXY+CgkJPC9kaXY+Cgk8L2Rpdj4JPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggIHJlYmF0ZUJvcmRlckNvbG9yIiBpZD0iZmJ4X2VsZWN0cmljXzIiPgoJCTxkaXYgY2xhc3M9InJlYmF0ZVRhZyI+PHNwYW4gY2xhc3M9InJlYmF0ZVRleHQiPnJhYmFpcyBqdXNxdSfDoDwvc3Bhbj48c3BhbiBjbGFzcz0icmViYXRlQW1vdW50Ij4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+NyAwMDA8L3NwYW4+PC9zcGFuPjwvZGl2PgoJCTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZUlubmVyQm94IiBpZD0iIj4KCQkJCgkJCTxkaXYgY2xhc3M9ImRpdkNhclRpdGxlQ29udGFpbmVyIj4KCQkJCTxhIHRpdGxlPSJIeXVuZGFpIElPTklRIDUgMjAyNSIgaHJlZj0iP3BhdGg9L25ldWZzL0h5dW5kYWktSU9OSVFfNS0yMDI1Lmh0bWwiIGRhdGEtbWFrZT0iSHl1bmRhaSIgZGF0YS1tb2RlbD0iSU9OSVEgNSAyMDI1Ij4KCQkJCQk8aDM+CgkJCQkJCTxzcGFuIGNsYXNzPSJzcGFuQ2FyTWFrZSAiPkh5dW5kYWk8L3NwYW4+PGJyPgoJCQkJCQk8c3BhbiBjbGFzcz0ibW9kZWxOYW1lIHNwYW5Nb2RlbE5hbWUiPklPTklRIDUgMjAyNTwvc3Bhbj4KCQkJCQk8L2gzPgoJCQkJPC9hPgoJCQkJICAgIDwhLS0gT1BFTiBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPgogICAgPGRpdiBjbGFzcz0iZGl2TmV3Q2FyU3RhcnRQcmljZSI+CiAgICAgICAgw6AgcGFydGlyIGRlCiAgICAgICAgPHNwYW4gY2xhc3M9InN0cmlrZS1wcmljZSI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjU1IDc5Njwvc3Bhbj48L3NwYW4+CiAgICAgICAgPGkgc3R5bGU9ImNvbG9yOiMwMDA7Zm9udC1zaXplOjIwcHg7IiBjbGFzcz0iY2FyUHJpY2VJbml0aWFsVG9vbFRpcEljb24gZmFsIGZhLWluZm8tY2lyY2xlIGJsYWNrQ29sb3JCb2xkIiBkYXRhLXRvb2x0aXA9IiZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7UERTRjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs1MiA5OTkmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUcmFuc3BvcnQgJmFtcDsgUHLDqXBhcmF0aW9uOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzIgMDUwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgZCdhZG1pbmlzdHJhdGlvbiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzU5OSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O0ZyYWlzIFJEUFJNJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NDgmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUYXhlIEFDOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzEwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RvdGFsJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NTUgNzk2Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyI+PC9pPgogICAgPC9kaXY+CiAgICA8IS0tIENMT1NFIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+PCEtLSBPUEVOIE5FVyBDQVIgUFJPTU8gUFJJQ0UgKDI3NCktLT48ZGl2IGNsYXNzPSJkaXZOZXdDYXJQcm9tb1ByaWNlIj5lbiByYWJhaXMgw6AgPHNwYW4gY2xhc3M9InN0cmlrZS1wcmljZSIgc3R5bGU9ImNvbG9yOiAjMDAyYzVmOyI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjQ4IDc5Njwvc3Bhbj48L3NwYW4+PC9kaXY+PCEtLSBDTE9TRSBORVcgQ0FSIFBST01PIFBSSUNFICgyODEpLS0+CgkJCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW5TdG9ja0xpbmsiIGhpZGRlbj4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgZGF0YS10eXBlPSJpbnZkYXRhIiBkYXRhLW1ha2U9Ikh5dW5kYWkiIGRhdGEtbW9kZWw9IklPTklRIDUiIGRhdGEteWVhcj0iMjAyNSIgZGF0YS1zdHlsZWlkcz0iNDY5MTczLDQ2OTE3MCw0NjkxNzEsNDY5MTcyIiBkYXRhLWh5YnJpZD0iMCI+Cgk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckltYWdlQ29udGFpbmVyIGZsZXgtY2VudGVyIGFsaWduLWNlbnRlciAiPgoJCQkJPGEgdGl0bGU9Ikh5dW5kYWkgSU9OSVEgNSAyMDI1IiBocmVmPSI\/cGF0aD0vbmV1ZnMvSHl1bmRhaS1JT05JUV81LTIwMjUuaHRtbCI+CgkJCQkJPGltZyBhbHQ9Ikh5dW5kYWkgSU9OSVEgNSAyMDI1IiBib3JkZXI9IjAiIGNsYXNzPSJsYXp5bG9hZCBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLWltZ3NyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0h5dW5kYWkvSU9OSVFfNS8yMDI1LzQ2OTE3My9SZWQvcHJvZmlsZS53ZWJwIiBkYXRhLW90LWlnbm9yZSBkYXRhLWNvb2tpZWNvbnNlbnQ9Imlnbm9yZSI+CgkJCQk8L2E+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJGb290ZXJDb250YWluZXIgc3RhY2stbGMgLS1zLTkiPgoJCQkJCTxkaXYgY2xhc3M9ImNhclBheW1lbnRXcmFwcGVyIj4KCQkJPGRpdiBjbGFzcz0iY29udGVudC1za2VsZXRvbiBodG1sLWJsb2NrIiBkYXRhLWJsb2NrPSJwYXltZW50QmxvY2siIGRhdGEtdHlwZT0iYmxvY2siIGRhdGEtc291cmNlPSJzZXJ2ZXIiIGRhdGEtY2FsbGJhY2s9InBheW1lbnRDYWxjQmxvY2siPgoJCQoJPGlucHV0IG5hbWU9ImJsb2NrLWRhdGEiIHR5cGU9ImhpZGRlbiIgdmFsdWU9InsmcXVvdDtzdHlsZWlkJnF1b3Q7OiZxdW90OzQ2OTE3MyZxdW90OywmcXVvdDt0aXRsZSZxdW90OzomcXVvdDtIeXVuZGFpIElPTklRIDUgMjAyNSZxdW90OywmcXVvdDtocmVmJnF1b3Q7OiZxdW90O1wvbmV1ZnNcL0h5dW5kYWktSU9OSVFfNS0yMDI1Lmh0bWwmcXVvdDssJnF1b3Q7bGlua3N0eWxlJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtsaW5rY2xhc3MmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2NvbnRhaW5lcmNsYXNzJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtwcm9tb3RleHQmcXVvdDs6JnF1b3Q7RFx1MDBlOWNvdXZyZXogbCdvZmZyZSEmcXVvdDt9Ij4KCTwvZGl2PgoJPC9kaXY+CgkJCQkKCQkJPC9kaXY+CgkJPC9kaXY+Cgk8L2Rpdj4JPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlT3V0ZXJCb3ggIHJlYmF0ZUJvcmRlckNvbG9yIiBpZD0iZmJ4X2VsZWN0cmljXzMiPgoJCTxkaXYgY2xhc3M9InJlYmF0ZVRhZyI+PHNwYW4gY2xhc3M9InJlYmF0ZVRleHQiPnJhYmFpcyBqdXNxdSfDoDwvc3Bhbj48c3BhbiBjbGFzcz0icmViYXRlQW1vdW50Ij4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+NSAwMDA8L3NwYW4+PC9zcGFuPjwvZGl2PgoJCTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZUlubmVyQm94IiBpZD0iIj4KCQkJCgkJCTxkaXYgY2xhc3M9ImRpdkNhclRpdGxlQ29udGFpbmVyIj4KCQkJCTxhIHRpdGxlPSJIeXVuZGFpIElPTklRIDUgTiAyMDI1IiBocmVmPSI\/cGF0aD0vbmV1ZnMvSHl1bmRhaS1JT05JUV81X04tMjAyNS5odG1sIiBkYXRhLW1ha2U9Ikh5dW5kYWkiIGRhdGEtbW9kZWw9IklPTklRIDUgTiAyMDI1Ij4KCQkJCQk8aDM+CgkJCQkJCTxzcGFuIGNsYXNzPSJzcGFuQ2FyTWFrZSAiPkh5dW5kYWk8L3NwYW4+PGJyPgoJCQkJCQk8c3BhbiBjbGFzcz0ibW9kZWxOYW1lIHNwYW5Nb2RlbE5hbWUiPklPTklRIDUgTiAyMDI1PC9zcGFuPgoJCQkJCTwvaDM+CgkJCQk8L2E+CgkJCQkgICAgPCEtLSBPUEVOIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CiAgICA8ZGl2IGNsYXNzPSJkaXZOZXdDYXJTdGFydFByaWNlIj4KICAgICAgICDDoCBwYXJ0aXIgZGUKICAgICAgICA8c3BhbiBjbGFzcz0ic3RyaWtlLXByaWNlIj4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+ODAgOTk2PC9zcGFuPjwvc3Bhbj4KICAgICAgICA8aSBzdHlsZT0iY29sb3I6IzAwMDtmb250LXNpemU6MjBweDsiIGNsYXNzPSJjYXJQcmljZUluaXRpYWxUb29sVGlwSWNvbiBmYWwgZmEtaW5mby1jaXJjbGUgYmxhY2tDb2xvckJvbGQiIGRhdGEtdG9vbHRpcD0iJmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtQRFNGOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0Ozc4IDE5OSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RyYW5zcG9ydCAmYW1wOyBQcsOpcGFyYXRpb246Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MiAwNTAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBkJ2FkbWluaXN0cmF0aW9uJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NTk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgUkRQUk0mbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs0OCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RheGUgQUM6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VG90YWwmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs4MCA5OTYmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Ij48L2k+CiAgICA8L2Rpdj4KICAgIDwhLS0gQ0xPU0UgTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT48IS0tIE9QRU4gTkVXIENBUiBQUk9NTyBQUklDRSAoMjc0KS0tPjxkaXYgY2xhc3M9ImRpdk5ld0NhclByb21vUHJpY2UiPmVuIHJhYmFpcyDDoCA8c3BhbiBjbGFzcz0ic3RyaWtlLXByaWNlIiBzdHlsZT0iY29sb3I6ICMwMDJjNWY7Ij4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+NzUgOTk2PC9zcGFuPjwvc3Bhbj48L2Rpdj48IS0tIENMT1NFIE5FVyBDQVIgUFJPTU8gUFJJQ0UgKDI4MSktLT4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJblN0b2NrTGluayIgaGlkZGVuPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBkYXRhLXR5cGU9ImludmRhdGEiIGRhdGEtbWFrZT0iSHl1bmRhaSIgZGF0YS1tb2RlbD0iSU9OSVEgNSBOIiBkYXRhLXllYXI9IjIwMjUiIGRhdGEtc3R5bGVpZHM9IjQ1NjQ3MiIgZGF0YS1oeWJyaWQ9IjAiPgoJPC9kaXY+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJbWFnZUNvbnRhaW5lciBmbGV4LWNlbnRlciBhbGlnbi1jZW50ZXIgIj4KCQkJCTxhIHRpdGxlPSJIeXVuZGFpIElPTklRIDUgTiAyMDI1IiBocmVmPSI\/cGF0aD0vbmV1ZnMvSHl1bmRhaS1JT05JUV81X04tMjAyNS5odG1sIj4KCQkJCQk8aW1nIGFsdD0iSHl1bmRhaSBJT05JUSA1IE4gMjAyNSIgYm9yZGVyPSIwIiBjbGFzcz0ibGF6eWxvYWQgb3B0YW5vbi1jYXRlZ29yeS1DMDAwMSIgZGF0YS1pbWdzcmM9Imh0dHBzOi8vY2FyaW1hZ2VzLmQyY21lZGlhLmNhL25ld2NhcmltYWdlcy9mci9IeXVuZGFpL0lPTklRXzVfTi8yMDI1LzQ1NjQ3Mi9PcmFuZ2UvcHJvZmlsZS53ZWJwIiBkYXRhLW90LWlnbm9yZSBkYXRhLWNvb2tpZWNvbnNlbnQ9Imlnbm9yZSI+CgkJCQk8L2E+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJGb290ZXJDb250YWluZXIgc3RhY2stbGMgLS1zLTkiPgoJCQkJCTxkaXYgY2xhc3M9ImNhclBheW1lbnRXcmFwcGVyIj4KCQkJPGRpdiBjbGFzcz0iY29udGVudC1za2VsZXRvbiBodG1sLWJsb2NrIiBkYXRhLWJsb2NrPSJwYXltZW50QmxvY2siIGRhdGEtdHlwZT0iYmxvY2siIGRhdGEtc291cmNlPSJzZXJ2ZXIiIGRhdGEtY2FsbGJhY2s9InBheW1lbnRDYWxjQmxvY2siPgoJCQoJPGlucHV0IG5hbWU9ImJsb2NrLWRhdGEiIHR5cGU9ImhpZGRlbiIgdmFsdWU9InsmcXVvdDtzdHlsZWlkJnF1b3Q7OiZxdW90OzQ1NjQ3MiZxdW90OywmcXVvdDt0aXRsZSZxdW90OzomcXVvdDtIeXVuZGFpIElPTklRIDUgTiAyMDI1JnF1b3Q7LCZxdW90O2hyZWYmcXVvdDs6JnF1b3Q7XC9uZXVmc1wvSHl1bmRhaS1JT05JUV81X04tMjAyNS5odG1sJnF1b3Q7LCZxdW90O2xpbmtzdHlsZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7bGlua2NsYXNzJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtjb250YWluZXJjbGFzcyZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7cHJvbW90ZXh0JnF1b3Q7OiZxdW90O0RcdTAwZTljb3V2cmV6IGwnb2ZmcmUhJnF1b3Q7fSI+Cgk8L2Rpdj4KCTwvZGl2PgoJCQkJCgkJCTwvZGl2PgoJCTwvZGl2PgoJPC9kaXY+CTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZU91dGVyQm94ICByZWJhdGVCb3JkZXJDb2xvciIgaWQ9ImZieF9lbGVjdHJpY180Ij4KCQk8ZGl2IGNsYXNzPSJyZWJhdGVUYWciPjxzcGFuIGNsYXNzPSJyZWJhdGVUZXh0Ij5yYWJhaXMganVzcXUnw6A8L3NwYW4+PHNwYW4gY2xhc3M9InJlYmF0ZUFtb3VudCI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjE4IDAwMDwvc3Bhbj48L3NwYW4+PC9kaXY+CgkJPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlSW5uZXJCb3giIGlkPSIiPgoJCQkKCQkJPGRpdiBjbGFzcz0iZGl2Q2FyVGl0bGVDb250YWluZXIiPgoJCQkJPGEgdGl0bGU9Ikh5dW5kYWkgSU9OSVEgNiAyMDI1IiBocmVmPSI\/cGF0aD0vbmV1ZnMvSHl1bmRhaS1JT05JUV82LTIwMjUuaHRtbCIgZGF0YS1tYWtlPSJIeXVuZGFpIiBkYXRhLW1vZGVsPSJJT05JUSA2IDIwMjUiPgoJCQkJCTxoMz4KCQkJCQkJPHNwYW4gY2xhc3M9InNwYW5DYXJNYWtlICI+SHl1bmRhaTwvc3Bhbj48YnI+CgkJCQkJCTxzcGFuIGNsYXNzPSJtb2RlbE5hbWUgc3Bhbk1vZGVsTmFtZSI+SU9OSVEgNiAyMDI1PC9zcGFuPgoJCQkJCTwvaDM+CgkJCQk8L2E+CgkJCQkgICAgPCEtLSBPUEVOIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CiAgICA8ZGl2IGNsYXNzPSJkaXZOZXdDYXJTdGFydFByaWNlIj4KICAgICAgICDDoCBwYXJ0aXIgZGUKICAgICAgICA8c3BhbiBjbGFzcz0ic3RyaWtlLXByaWNlIj4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+NTcgNzk2PC9zcGFuPjwvc3Bhbj4KICAgICAgICA8aSBzdHlsZT0iY29sb3I6IzAwMDtmb250LXNpemU6MjBweDsiIGNsYXNzPSJjYXJQcmljZUluaXRpYWxUb29sVGlwSWNvbiBmYWwgZmEtaW5mby1jaXJjbGUgYmxhY2tDb2xvckJvbGQiIGRhdGEtdG9vbHRpcD0iJmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtQRFNGOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzU0IDk5OSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RyYW5zcG9ydCAmYW1wOyBQcsOpcGFyYXRpb246Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MiAwNTAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBkJ2FkbWluaXN0cmF0aW9uJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NTk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgUkRQUk0mbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs0OCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RheGUgQUM6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VG90YWwmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs1NyA3OTYmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Ij48L2k+CiAgICA8L2Rpdj4KICAgIDwhLS0gQ0xPU0UgTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT48IS0tIE9QRU4gTkVXIENBUiBQUk9NTyBQUklDRSAoMjc0KS0tPjxkaXYgY2xhc3M9ImRpdk5ld0NhclByb21vUHJpY2UiPmVuIHJhYmFpcyDDoCA8c3BhbiBjbGFzcz0ic3RyaWtlLXByaWNlIiBzdHlsZT0iY29sb3I6ICMwMDJjNWY7Ij4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+NDQgNzk2PC9zcGFuPjwvc3Bhbj48L2Rpdj48IS0tIENMT1NFIE5FVyBDQVIgUFJPTU8gUFJJQ0UgKDI4MSktLT4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJblN0b2NrTGluayIgaGlkZGVuPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBkYXRhLXR5cGU9ImludmRhdGEiIGRhdGEtbWFrZT0iSHl1bmRhaSIgZGF0YS1tb2RlbD0iSU9OSVEgNiIgZGF0YS15ZWFyPSIyMDI1IiBkYXRhLXN0eWxlaWRzPSI0NjI4MjgsNDYyODI5LDQ2MjgzMCIgZGF0YS1oeWJyaWQ9IjAiPgoJPC9kaXY+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJbWFnZUNvbnRhaW5lciBmbGV4LWNlbnRlciBhbGlnbi1jZW50ZXIgIj4KCQkJCTxhIHRpdGxlPSJIeXVuZGFpIElPTklRIDYgMjAyNSIgaHJlZj0iP3BhdGg9L25ldWZzL0h5dW5kYWktSU9OSVFfNi0yMDI1Lmh0bWwiPgoJCQkJCTxpbWcgYWx0PSJIeXVuZGFpIElPTklRIDYgMjAyNSIgYm9yZGVyPSIwIiBjbGFzcz0ibGF6eWxvYWQgb3B0YW5vbi1jYXRlZ29yeS1DMDAwMSIgZGF0YS1pbWdzcmM9Imh0dHBzOi8vY2FyaW1hZ2VzLmQyY21lZGlhLmNhL25ld2NhcmltYWdlcy9mci9IeXVuZGFpL0lPTklRXzYvMjAyNS80NjI4MjgvUmVkL3Byb2ZpbGUud2VicCIgZGF0YS1vdC1pZ25vcmUgZGF0YS1jb29raWVjb25zZW50PSJpZ25vcmUiPgoJCQkJPC9hPgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FyRm9vdGVyQ29udGFpbmVyIHN0YWNrLWxjIC0tcy05Ij4KCQkJCQk8ZGl2IGNsYXNzPSJjYXJQYXltZW50V3JhcHBlciI+CgkJCTxkaXYgY2xhc3M9ImNvbnRlbnQtc2tlbGV0b24gaHRtbC1ibG9jayIgZGF0YS1ibG9jaz0icGF5bWVudEJsb2NrIiBkYXRhLXR5cGU9ImJsb2NrIiBkYXRhLXNvdXJjZT0ic2VydmVyIiBkYXRhLWNhbGxiYWNrPSJwYXltZW50Q2FsY0Jsb2NrIj4KCQkKCTxpbnB1dCBuYW1lPSJibG9jay1kYXRhIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSJ7JnF1b3Q7c3R5bGVpZCZxdW90OzomcXVvdDs0NjI4MjgmcXVvdDssJnF1b3Q7dGl0bGUmcXVvdDs6JnF1b3Q7SHl1bmRhaSBJT05JUSA2IDIwMjUmcXVvdDssJnF1b3Q7aHJlZiZxdW90OzomcXVvdDtcL25ldWZzXC9IeXVuZGFpLUlPTklRXzYtMjAyNS5odG1sJnF1b3Q7LCZxdW90O2xpbmtzdHlsZSZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7bGlua2NsYXNzJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtjb250YWluZXJjbGFzcyZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7cHJvbW90ZXh0JnF1b3Q7OiZxdW90O0RcdTAwZTljb3V2cmV6IGwnb2ZmcmUhJnF1b3Q7fSI+Cgk8L2Rpdj4KCTwvZGl2PgoJCQkJCgkJCTwvZGl2PgoJCTwvZGl2PgoJPC9kaXY+CTxkaXYgY2xhc3M9ImRpdkNhclNpbmdsZU91dGVyQm94ICByZWJhdGVCb3JkZXJDb2xvciIgaWQ9ImZieF9lbGVjdHJpY181Ij4KCQk8ZGl2IGNsYXNzPSJyZWJhdGVUYWciPjxzcGFuIGNsYXNzPSJyZWJhdGVUZXh0Ij5yYWJhaXMganVzcXUnw6A8L3NwYW4+PHNwYW4gY2xhc3M9InJlYmF0ZUFtb3VudCI+CTxzcGFuIGNsYXNzPSJmb3JtYXQtcHJpY2UiPjIgMDAwPC9zcGFuPjwvc3Bhbj48L2Rpdj4KCQk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVJbm5lckJveCIgaWQ9IiI+CgkJCQoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJUaXRsZUNvbnRhaW5lciI+CgkJCQk8YSB0aXRsZT0iSHl1bmRhaSBJT05JUSA5IDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9IeXVuZGFpLUlPTklRXzktMjAyNi5odG1sIiBkYXRhLW1ha2U9Ikh5dW5kYWkiIGRhdGEtbW9kZWw9IklPTklRIDkgMjAyNiI+CgkJCQkJPGgzPgoJCQkJCQk8c3BhbiBjbGFzcz0ic3BhbkNhck1ha2UgIj5IeXVuZGFpPC9zcGFuPjxicj4KCQkJCQkJPHNwYW4gY2xhc3M9Im1vZGVsTmFtZSBzcGFuTW9kZWxOYW1lIj5JT05JUSA5IDIwMjY8L3NwYW4+CgkJCQkJPC9oMz4KCQkJCTwvYT4KCQkJCSAgICA8IS0tIE9QRU4gTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KICAgIDxkaXYgY2xhc3M9ImRpdk5ld0NhclN0YXJ0UHJpY2UiPgogICAgICAgIMOgIHBhcnRpciBkZQogICAgICAgIDxzcGFuIGNsYXNzPSJzdHJpa2UtcHJpY2UiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj42MyAwNDY8L3NwYW4+PC9zcGFuPgogICAgICAgIDxpIHN0eWxlPSJjb2xvcjojMDAwO2ZvbnQtc2l6ZToyMHB4OyIgY2xhc3M9ImNhclByaWNlSW5pdGlhbFRvb2xUaXBJY29uIGZhbCBmYS1pbmZvLWNpcmNsZSBibGFja0NvbG9yQm9sZCIgZGF0YS10b29sdGlwPSImbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1BEU0Y6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NTkgOTk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VHJhbnNwb3J0ICZhbXA7IFByw6lwYXJhdGlvbjombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsyIDA1MCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O09wdGlvbnMgaW5jbHVzOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzI1MCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O0ZyYWlzIGQnYWRtaW5pc3RyYXRpb24mbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs1OTkmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBSRFBSTSZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzQ4Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VGF4ZSBBQzombHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDsxMDAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtUb3RhbCZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzYzIDA0NiZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsiPjwvaT4KICAgIDwvZGl2PgogICAgPCEtLSBDTE9TRSBORVcgQ0FSIFNUQVJUIFBSSUNFICh7X19MSU5FX199KS0tPjwhLS0gT1BFTiBORVcgQ0FSIFBST01PIFBSSUNFICgyNzQpLS0+PGRpdiBjbGFzcz0iZGl2TmV3Q2FyUHJvbW9QcmljZSI+ZW4gcmFiYWlzIMOgIDxzcGFuIGNsYXNzPSJzdHJpa2UtcHJpY2UiIHN0eWxlPSJjb2xvcjogIzAwMmM1ZjsiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj42MSAwNDY8L3NwYW4+PC9zcGFuPjwvZGl2PjwhLS0gQ0xPU0UgTkVXIENBUiBQUk9NTyBQUklDRSAoMjgxKS0tPgoJCQkJCTxkaXYgY2xhc3M9ImRpdkNhckluU3RvY2tMaW5rIiBoaWRkZW4+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGRhdGEtdHlwZT0iaW52ZGF0YSIgZGF0YS1tYWtlPSJIeXVuZGFpIiBkYXRhLW1vZGVsPSJJT05JUSA5IiBkYXRhLXllYXI9IjIwMjYiIGRhdGEtc3R5bGVpZHM9IjQ3NjA2OSw0NzYwNzAsNDc3NTYzLDQ3NjA3MSw0NzYwNzIiIGRhdGEtaHlicmlkPSIwIj4KCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW1hZ2VDb250YWluZXIgZmxleC1jZW50ZXIgYWxpZ24tY2VudGVyICI+CgkJCQk8YSB0aXRsZT0iSHl1bmRhaSBJT05JUSA5IDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9IeXVuZGFpLUlPTklRXzktMjAyNi5odG1sIj4KCQkJCQk8aW1nIGFsdD0iSHl1bmRhaSBJT05JUSA5IDIwMjYiIGJvcmRlcj0iMCIgY2xhc3M9Imxhenlsb2FkIG9wdGFub24tY2F0ZWdvcnktQzAwMDEiIGRhdGEtaW1nc3JjPSJodHRwczovL2NhcmltYWdlcy5kMmNtZWRpYS5jYS9uZXdjYXJpbWFnZXMvZnIvSHl1bmRhaS9JT05JUV85LzIwMjYvNDc2MDY5L1JlZC9wcm9maWxlLndlYnAiIGRhdGEtb3QtaWdub3JlIGRhdGEtY29va2llY29uc2VudD0iaWdub3JlIj4KCQkJCTwvYT4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckZvb3RlckNvbnRhaW5lciBzdGFjay1sYyAtLXMtOSI+CgkJCQkJPGRpdiBjbGFzcz0iY2FyUGF5bWVudFdyYXBwZXIiPgoJCQk8ZGl2IGNsYXNzPSJjb250ZW50LXNrZWxldG9uIGh0bWwtYmxvY2siIGRhdGEtYmxvY2s9InBheW1lbnRCbG9jayIgZGF0YS10eXBlPSJibG9jayIgZGF0YS1zb3VyY2U9InNlcnZlciIgZGF0YS1jYWxsYmFjaz0icGF5bWVudENhbGNCbG9jayI+CgkJCgk8aW5wdXQgbmFtZT0iYmxvY2stZGF0YSIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0ieyZxdW90O3N0eWxlaWQmcXVvdDs6JnF1b3Q7NDc2MDY5JnF1b3Q7LCZxdW90O3RpdGxlJnF1b3Q7OiZxdW90O0h5dW5kYWkgSU9OSVEgOSAyMDI2JnF1b3Q7LCZxdW90O2hyZWYmcXVvdDs6JnF1b3Q7XC9uZXVmc1wvSHl1bmRhaS1JT05JUV85LTIwMjYuaHRtbCZxdW90OywmcXVvdDtsaW5rc3R5bGUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2xpbmtjbGFzcyZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7Y29udGFpbmVyY2xhc3MmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3Byb21vdGV4dCZxdW90OzomcXVvdDtEXHUwMGU5Y291dnJleiBsJ29mZnJlISZxdW90O30iPgoJPC9kaXY+Cgk8L2Rpdj4KCQkJCQoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2Pgk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVPdXRlckJveCAgcmViYXRlQm9yZGVyQ29sb3IiIGlkPSJmYnhfZWxlY3RyaWNfNiI+CgkJPGRpdiBjbGFzcz0icmViYXRlVGFnIj48c3BhbiBjbGFzcz0icmViYXRlVGV4dCI+cmFiYWlzIGp1c3F1J8OgPC9zcGFuPjxzcGFuIGNsYXNzPSJyZWJhdGVBbW91bnQiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj41IDAwMDwvc3Bhbj48L3NwYW4+PC9kaXY+CgkJPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlSW5uZXJCb3giIGlkPSIiPgoJCQkKCQkJPGRpdiBjbGFzcz0iZGl2Q2FyVGl0bGVDb250YWluZXIiPgoJCQkJPGEgdGl0bGU9Ikh5dW5kYWkgS29uYSBFbGVjdHJpYyAyMDI2IiBocmVmPSI\/cGF0aD0vbmV1ZnMvSHl1bmRhaS1Lb25hX0VsZWN0cmljLTIwMjYuaHRtbCIgZGF0YS1tYWtlPSJIeXVuZGFpIiBkYXRhLW1vZGVsPSJLb25hIMOpbGVjdHJpcXVlIDIwMjYiPgoJCQkJCTxoMz4KCQkJCQkJPHNwYW4gY2xhc3M9InNwYW5DYXJNYWtlICI+SHl1bmRhaTwvc3Bhbj48YnI+CgkJCQkJCTxzcGFuIGNsYXNzPSJtb2RlbE5hbWUgc3Bhbk1vZGVsTmFtZSI+S29uYSBFbGVjdHJpYyAyMDI2PC9zcGFuPgoJCQkJCTwvaDM+CgkJCQk8L2E+CgkJCQkgICAgPCEtLSBPUEVOIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CiAgICA8ZGl2IGNsYXNzPSJkaXZOZXdDYXJTdGFydFByaWNlIj4KICAgICAgICDDoCBwYXJ0aXIgZGUKICAgICAgICA8c3BhbiBjbGFzcz0ic3RyaWtlLXByaWNlIj4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+NDYgNzk2PC9zcGFuPjwvc3Bhbj4KICAgICAgICA8aSBzdHlsZT0iY29sb3I6IzAwMDtmb250LXNpemU6MjBweDsiIGNsYXNzPSJjYXJQcmljZUluaXRpYWxUb29sVGlwSWNvbiBmYWwgZmEtaW5mby1jaXJjbGUgYmxhY2tDb2xvckJvbGQiIGRhdGEtdG9vbHRpcD0iJmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtQRFNGOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzQzIDk5OSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RyYW5zcG9ydCAmYW1wOyBQcsOpcGFyYXRpb246Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MiAwNTAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBkJ2FkbWluaXN0cmF0aW9uJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NTk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgUkRQUk0mbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs0OCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RheGUgQUM6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VG90YWwmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs0NiA3OTYmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Ij48L2k+CiAgICA8L2Rpdj4KICAgIDwhLS0gQ0xPU0UgTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT48IS0tIE9QRU4gTkVXIENBUiBQUk9NTyBQUklDRSAoMjc0KS0tPjxkaXYgY2xhc3M9ImRpdk5ld0NhclByb21vUHJpY2UiPmVuIHJhYmFpcyDDoCA8c3BhbiBjbGFzcz0ic3RyaWtlLXByaWNlIiBzdHlsZT0iY29sb3I6ICMwMDJjNWY7Ij4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+NDIgMjk2PC9zcGFuPjwvc3Bhbj48L2Rpdj48IS0tIENMT1NFIE5FVyBDQVIgUFJPTU8gUFJJQ0UgKDI4MSktLT4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJblN0b2NrTGluayIgaGlkZGVuPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBkYXRhLXR5cGU9ImludmRhdGEiIGRhdGEtbWFrZT0iSHl1bmRhaSIgZGF0YS1tb2RlbD0iS29uYSBFbGVjdHJpYyIgZGF0YS15ZWFyPSIyMDI2IiBkYXRhLXN0eWxlaWRzPSI0ODE0NDYsNDgxNDQ3LDQ4MTQ0OCw0ODE0NDkiIGRhdGEtaHlicmlkPSIwIj4KCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW1hZ2VDb250YWluZXIgZmxleC1jZW50ZXIgYWxpZ24tY2VudGVyICI+CgkJCQk8YSB0aXRsZT0iSHl1bmRhaSBLb25hIEVsZWN0cmljIDIwMjYiIGhyZWY9Ij9wYXRoPS9uZXVmcy9IeXVuZGFpLUtvbmFfRWxlY3RyaWMtMjAyNi5odG1sIj4KCQkJCQk8aW1nIGFsdD0iSHl1bmRhaSBLb25hIEVsZWN0cmljIDIwMjYiIGJvcmRlcj0iMCIgY2xhc3M9Imxhenlsb2FkIG9wdGFub24tY2F0ZWdvcnktQzAwMDEiIGRhdGEtaW1nc3JjPSJodHRwczovL2NhcmltYWdlcy5kMmNtZWRpYS5jYS9uZXdjYXJpbWFnZXMvZnIvSHl1bmRhaS9Lb25hX0VsZWN0cmljLzIwMjYvNDgxNDQ2L1JlZC9wcm9maWxlLndlYnAiIGRhdGEtb3QtaWdub3JlIGRhdGEtY29va2llY29uc2VudD0iaWdub3JlIj4KCQkJCTwvYT4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckZvb3RlckNvbnRhaW5lciBzdGFjay1sYyAtLXMtOSI+CgkJCQkJPGRpdiBjbGFzcz0iY2FyUGF5bWVudFdyYXBwZXIiPgoJCQk8ZGl2IGNsYXNzPSJjb250ZW50LXNrZWxldG9uIGh0bWwtYmxvY2siIGRhdGEtYmxvY2s9InBheW1lbnRCbG9jayIgZGF0YS10eXBlPSJibG9jayIgZGF0YS1zb3VyY2U9InNlcnZlciIgZGF0YS1jYWxsYmFjaz0icGF5bWVudENhbGNCbG9jayI+CgkJCgk8aW5wdXQgbmFtZT0iYmxvY2stZGF0YSIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0ieyZxdW90O3N0eWxlaWQmcXVvdDs6JnF1b3Q7NDgxNDQ2JnF1b3Q7LCZxdW90O3RpdGxlJnF1b3Q7OiZxdW90O0h5dW5kYWkgS29uYSBFbGVjdHJpYyAyMDI2JnF1b3Q7LCZxdW90O2hyZWYmcXVvdDs6JnF1b3Q7XC9uZXVmc1wvSHl1bmRhaS1Lb25hX0VsZWN0cmljLTIwMjYuaHRtbCZxdW90OywmcXVvdDtsaW5rc3R5bGUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2xpbmtjbGFzcyZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7Y29udGFpbmVyY2xhc3MmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3Byb21vdGV4dCZxdW90OzomcXVvdDtEXHUwMGU5Y291dnJleiBsJ29mZnJlISZxdW90O30iPgoJPC9kaXY+Cgk8L2Rpdj4KCQkJCQoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2Pgk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVPdXRlckJveCAgcmViYXRlQm9yZGVyQ29sb3IiIGlkPSJmYnhfZWxlY3RyaWNfNyI+CgkJPGRpdiBjbGFzcz0icmViYXRlVGFnIj48c3BhbiBjbGFzcz0icmViYXRlVGV4dCI+cmFiYWlzIGp1c3F1J8OgPC9zcGFuPjxzcGFuIGNsYXNzPSJyZWJhdGVBbW91bnQiPgk8c3BhbiBjbGFzcz0iZm9ybWF0LXByaWNlIj4yIDAwMDwvc3Bhbj48L3NwYW4+PC9kaXY+CgkJPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlSW5uZXJCb3giIGlkPSIiPgoJCQkKCQkJPGRpdiBjbGFzcz0iZGl2Q2FyVGl0bGVDb250YWluZXIiPgoJCQkJPGEgdGl0bGU9Ikh5dW5kYWkgS29uYSBFbGVjdHJpYyAyMDI1IiBocmVmPSI\/cGF0aD0vbmV1ZnMvSHl1bmRhaS1Lb25hX0VsZWN0cmljLTIwMjUuaHRtbCIgZGF0YS1tYWtlPSJIeXVuZGFpIiBkYXRhLW1vZGVsPSJLb25hIMOpbGVjdHJpcXVlIDIwMjUiPgoJCQkJCTxoMz4KCQkJCQkJPHNwYW4gY2xhc3M9InNwYW5DYXJNYWtlICI+SHl1bmRhaTwvc3Bhbj48YnI+CgkJCQkJCTxzcGFuIGNsYXNzPSJtb2RlbE5hbWUgc3Bhbk1vZGVsTmFtZSI+S29uYSBFbGVjdHJpYyAyMDI1PC9zcGFuPgoJCQkJCTwvaDM+CgkJCQk8L2E+CgkJCQkgICAgPCEtLSBPUEVOIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CiAgICA8ZGl2IGNsYXNzPSJkaXZOZXdDYXJTdGFydFByaWNlIj4KICAgICAgICDDoCBwYXJ0aXIgZGUKICAgICAgICA8c3BhbiBjbGFzcz0ic3RyaWtlLXByaWNlIj4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+NDkgMjk2PC9zcGFuPjwvc3Bhbj4KICAgICAgICA8aSBzdHlsZT0iY29sb3I6IzAwMDtmb250LXNpemU6MjBweDsiIGNsYXNzPSJjYXJQcmljZUluaXRpYWxUb29sVGlwSWNvbiBmYWwgZmEtaW5mby1jaXJjbGUgYmxhY2tDb2xvckJvbGQiIGRhdGEtdG9vbHRpcD0iJmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtQRFNGOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzQ2IDQ5OSZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RyYW5zcG9ydCAmYW1wOyBQcsOpcGFyYXRpb246Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MiAwNTAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBkJ2FkbWluaXN0cmF0aW9uJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NTk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgUkRQUk0mbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs0OCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RheGUgQUM6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VG90YWwmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs0OSAyOTYmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Ij48L2k+CiAgICA8L2Rpdj4KICAgIDwhLS0gQ0xPU0UgTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT48IS0tIE9QRU4gTkVXIENBUiBQUk9NTyBQUklDRSAoMjc0KS0tPjxkaXYgY2xhc3M9ImRpdk5ld0NhclByb21vUHJpY2UiPmVuIHJhYmFpcyDDoCA8c3BhbiBjbGFzcz0ic3RyaWtlLXByaWNlIiBzdHlsZT0iY29sb3I6ICMwMDJjNWY7Ij4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+NDcgMjk2PC9zcGFuPjwvc3Bhbj48L2Rpdj48IS0tIENMT1NFIE5FVyBDQVIgUFJPTU8gUFJJQ0UgKDI4MSktLT4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJblN0b2NrTGluayIgaGlkZGVuPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBkYXRhLXR5cGU9ImludmRhdGEiIGRhdGEtbWFrZT0iSHl1bmRhaSIgZGF0YS1tb2RlbD0iS29uYSBFbGVjdHJpYyIgZGF0YS15ZWFyPSIyMDI1IiBkYXRhLXN0eWxlaWRzPSI0NjE5MzIsNDYxOTM2LDQ2MTkzMyw0NjE5MzUsNDYyNjA0LDQ2MjYwNiw0NjE5MzQsNDYyNjA1LDQ2MTkzNyw0NjI2MDciIGRhdGEtaHlicmlkPSIwIj4KCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iZGl2Q2FySW1hZ2VDb250YWluZXIgZmxleC1jZW50ZXIgYWxpZ24tY2VudGVyICI+CgkJCQk8YSB0aXRsZT0iSHl1bmRhaSBLb25hIEVsZWN0cmljIDIwMjUiIGhyZWY9Ij9wYXRoPS9uZXVmcy9IeXVuZGFpLUtvbmFfRWxlY3RyaWMtMjAyNS5odG1sIj4KCQkJCQk8aW1nIGFsdD0iSHl1bmRhaSBLb25hIEVsZWN0cmljIDIwMjUiIGJvcmRlcj0iMCIgY2xhc3M9Imxhenlsb2FkIG9wdGFub24tY2F0ZWdvcnktQzAwMDEiIGRhdGEtaW1nc3JjPSJodHRwczovL2NhcmltYWdlcy5kMmNtZWRpYS5jYS9uZXdjYXJpbWFnZXMvZnIvSHl1bmRhaS9Lb25hX0VsZWN0cmljLzIwMjUvNDYxOTMyL1JlZC9wcm9maWxlLndlYnAiIGRhdGEtb3QtaWdub3JlIGRhdGEtY29va2llY29uc2VudD0iaWdub3JlIj4KCQkJCTwvYT4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckZvb3RlckNvbnRhaW5lciBzdGFjay1sYyAtLXMtOSI+CgkJCQkJPGRpdiBjbGFzcz0iY2FyUGF5bWVudFdyYXBwZXIiPgoJCQk8ZGl2IGNsYXNzPSJjb250ZW50LXNrZWxldG9uIGh0bWwtYmxvY2siIGRhdGEtYmxvY2s9InBheW1lbnRCbG9jayIgZGF0YS10eXBlPSJibG9jayIgZGF0YS1zb3VyY2U9InNlcnZlciIgZGF0YS1jYWxsYmFjaz0icGF5bWVudENhbGNCbG9jayI+CgkJCgk8aW5wdXQgbmFtZT0iYmxvY2stZGF0YSIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0ieyZxdW90O3N0eWxlaWQmcXVvdDs6JnF1b3Q7NDYxOTMyJnF1b3Q7LCZxdW90O3RpdGxlJnF1b3Q7OiZxdW90O0h5dW5kYWkgS29uYSBFbGVjdHJpYyAyMDI1JnF1b3Q7LCZxdW90O2hyZWYmcXVvdDs6JnF1b3Q7XC9uZXVmc1wvSHl1bmRhaS1Lb25hX0VsZWN0cmljLTIwMjUuaHRtbCZxdW90OywmcXVvdDtsaW5rc3R5bGUmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2xpbmtjbGFzcyZxdW90OzomcXVvdDsmcXVvdDssJnF1b3Q7Y29udGFpbmVyY2xhc3MmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O3Byb21vdGV4dCZxdW90OzomcXVvdDtEXHUwMGU5Y291dnJleiBsJ29mZnJlISZxdW90O30iPgoJPC9kaXY+Cgk8L2Rpdj4KCQkJCQoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2Pgk8ZGl2IGNsYXNzPSJkaXZDYXJTaW5nbGVPdXRlckJveCAgcmViYXRlQm9yZGVyQ29sb3IiIGlkPSJmYnhfZWxlY3RyaWNfOCI+CgkJCgkJPGRpdiBjbGFzcz0iZGl2Q2FyU2luZ2xlSW5uZXJCb3giIGlkPSIiPgoJCQkKCQkJPGRpdiBjbGFzcz0iZGl2Q2FyVGl0bGVDb250YWluZXIiPgoJCQkJPGEgdGl0bGU9Ikh5dW5kYWkgTkVYTyAyMDI1IiBocmVmPSI\/cGF0aD0vbmV1ZnMvSHl1bmRhaS1ORVhPLTIwMjUuaHRtbCIgZGF0YS1tYWtlPSJIeXVuZGFpIiBkYXRhLW1vZGVsPSJORVhPIDIwMjUiPgoJCQkJCTxoMz4KCQkJCQkJPHNwYW4gY2xhc3M9InNwYW5DYXJNYWtlICI+SHl1bmRhaTwvc3Bhbj48YnI+CgkJCQkJCTxzcGFuIGNsYXNzPSJtb2RlbE5hbWUgc3Bhbk1vZGVsTmFtZSI+TkVYTyAyMDI1PC9zcGFuPgoJCQkJCTwvaDM+CgkJCQk8L2E+CgkJCQkgICAgPCEtLSBPUEVOIE5FVyBDQVIgU1RBUlQgUFJJQ0UgKHtfX0xJTkVfX30pLS0+CiAgICA8ZGl2IGNsYXNzPSJkaXZOZXdDYXJTdGFydFByaWNlIj4KICAgICAgICDDoCBwYXJ0aXIgZGUKICAgICAgICA8c3BhbiBjbGFzcz0iIj4JPHNwYW4gY2xhc3M9ImZvcm1hdC1wcmljZSI+NzUgMjk3PC9zcGFuPjwvc3Bhbj4KICAgICAgICA8aSBzdHlsZT0iY29sb3I6IzAwMDtmb250LXNpemU6MjBweDsiIGNsYXNzPSJjYXJQcmljZUluaXRpYWxUb29sVGlwSWNvbiBmYWwgZmEtaW5mby1jaXJjbGUgYmxhY2tDb2xvckJvbGQiIGRhdGEtdG9vbHRpcD0iJmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtQRFNGOiZsdDsvc3BhbiZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90OyZxdW90OyZndDsJJmx0O3NwYW4gY2xhc3M9JnF1b3Q7Zm9ybWF0LXByaWNlJnF1b3Q7Jmd0OzcyIDUwMCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RyYW5zcG9ydCAmYW1wOyBQcsOpcGFyYXRpb246Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MiAwNTAmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Jmx0O3AgY2xhc3M9JnF1b3Q7ZmxleC1iZXR3ZWVuJnF1b3Q7IHN0eWxlPSZxdW90O21pbi13aWR0aDoxNjBweDsmcXVvdDsmZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDttYXgtd2lkdGg6NzAlOyZxdW90OyZndDtGcmFpcyBkJ2FkbWluaXN0cmF0aW9uJmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7NTk5Jmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7RnJhaXMgUkRQUk0mbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs0OCZsdDsvc3BhbiZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDsvcCZndDsmbHQ7cCBjbGFzcz0mcXVvdDtmbGV4LWJldHdlZW4mcXVvdDsgc3R5bGU9JnF1b3Q7bWluLXdpZHRoOjE2MHB4OyZxdW90OyZndDsKCSZsdDtzcGFuIHN0eWxlPSZxdW90O21heC13aWR0aDo3MCU7JnF1b3Q7Jmd0O1RheGUgQUM6Jmx0Oy9zcGFuJmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7JnF1b3Q7Jmd0OwkmbHQ7c3BhbiBjbGFzcz0mcXVvdDtmb3JtYXQtcHJpY2UmcXVvdDsmZ3Q7MTAwJmx0Oy9zcGFuJmd0OyZsdDsvc3BhbiZndDsKJmx0Oy9wJmd0OyZsdDtwIGNsYXNzPSZxdW90O2ZsZXgtYmV0d2VlbiZxdW90OyBzdHlsZT0mcXVvdDttaW4td2lkdGg6MTYwcHg7JnF1b3Q7Jmd0OwoJJmx0O3NwYW4gc3R5bGU9JnF1b3Q7bWF4LXdpZHRoOjcwJTsmcXVvdDsmZ3Q7VG90YWwmbHQ7L3NwYW4mZ3Q7CgkmbHQ7c3BhbiBzdHlsZT0mcXVvdDsmcXVvdDsmZ3Q7CSZsdDtzcGFuIGNsYXNzPSZxdW90O2Zvcm1hdC1wcmljZSZxdW90OyZndDs3NSAyOTcmbHQ7L3NwYW4mZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7L3AmZ3Q7Ij48L2k+CiAgICA8L2Rpdj4KICAgIDwhLS0gQ0xPU0UgTkVXIENBUiBTVEFSVCBQUklDRSAoe19fTElORV9ffSktLT4KCQkJCQk8ZGl2IGNsYXNzPSJkaXZDYXJJblN0b2NrTGluayIgaGlkZGVuPgoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBkYXRhLXR5cGU9ImludmRhdGEiIGRhdGEtbWFrZT0iSHl1bmRhaSIgZGF0YS1tb2RlbD0iTkVYTyIgZGF0YS15ZWFyPSIyMDI1IiBkYXRhLXN0eWxlaWRzPSI0NjQzNzMsNDY0Mzc0IiBkYXRhLWh5YnJpZD0iMCI+Cgk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImRpdkNhckltYWdlQ29udGFpbmVyIGZsZXgtY2VudGVyIGFsaWduLWNlbnRlciAiPgoJCQkJPGEgdGl0bGU9Ikh5dW5kYWkgTkVYTyAyMDI1IiBocmVmPSI\/cGF0aD0vbmV1ZnMvSHl1bmRhaS1ORVhPLTIwMjUuaHRtbCI+CgkJCQkJPGltZyBhbHQ9Ikh5dW5kYWkgTkVYTyAyMDI1IiBib3JkZXI9IjAiIGNsYXNzPSJsYXp5bG9hZCBvcHRhbm9uLWNhdGVnb3J5LUMwMDAxIiBkYXRhLWltZ3NyYz0iaHR0cHM6Ly9jYXJpbWFnZXMuZDJjbWVkaWEuY2EvbmV3Y2FyaW1hZ2VzL2ZyL0h5dW5kYWkvTkVYTy8yMDI1LzQ2NDM3My9SZWQvcHJvZmlsZS53ZWJwIiBkYXRhLW90LWlnbm9yZSBkYXRhLWNvb2tpZWNvbnNlbnQ9Imlnbm9yZSI+CgkJCQk8L2E+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJkaXZDYXJGb290ZXJDb250YWluZXIgc3RhY2stbGMgLS1zLTkiPgoJCQkJCTxkaXYgY2xhc3M9ImNhclBheW1lbnRXcmFwcGVyIj4KCQkJPGRpdiBjbGFzcz0iY29udGVudC1za2VsZXRvbiBodG1sLWJsb2NrIiBkYXRhLWJsb2NrPSJwYXltZW50QmxvY2siIGRhdGEtdHlwZT0iYmxvY2siIGRhdGEtc291cmNlPSJzZXJ2ZXIiIGRhdGEtY2FsbGJhY2s9InBheW1lbnRDYWxjQmxvY2siPgoJCQoJPGlucHV0IG5hbWU9ImJsb2NrLWRhdGEiIHR5cGU9ImhpZGRlbiIgdmFsdWU9InsmcXVvdDtzdHlsZWlkJnF1b3Q7OiZxdW90OzQ2NDM3MyZxdW90OywmcXVvdDt0aXRsZSZxdW90OzomcXVvdDtIeXVuZGFpIE5FWE8gMjAyNSZxdW90OywmcXVvdDtocmVmJnF1b3Q7OiZxdW90O1wvbmV1ZnNcL0h5dW5kYWktTkVYTy0yMDI1Lmh0bWwmcXVvdDssJnF1b3Q7bGlua3N0eWxlJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtsaW5rY2xhc3MmcXVvdDs6JnF1b3Q7JnF1b3Q7LCZxdW90O2NvbnRhaW5lcmNsYXNzJnF1b3Q7OiZxdW90OyZxdW90OywmcXVvdDtwcm9tb3RleHQmcXVvdDs6JnF1b3Q7RFx1MDBlOWNvdXZyZXogbCdvZmZyZSEmcXVvdDt9Ij4KCTwvZGl2PgoJPC9kaXY+CgkJCQkKCQkJPC9kaXY+CgkJPC9kaXY+Cgk8L2Rpdj48L2Rpdj48L2Rpdj48IS0tIENMT1NFIENBVEVHT1JZQk9YV1JBUFBFUiAoMjA2MCktLT48L2Rpdj48IS0tIENMT1NFIENBVEVHT1JJRVNCT1hXUkFQUEVSICgyMDY2KS0tPjxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJIeXVuZGFpIiBpZD0iaXNCcmFuZFBhZ2UiPgogICAgICAgIAk8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImRpdlNwYW4gZGl2U3BhbjEyIGRpdkRpc2NsYWltZXJCbG9jayI+CiAgICAgICAgPGRpdiBjbGFzcz0iZGl2RGlzY2xhaW1lckJsb2NrQ29udGVudCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRpdkRpc2NsYWltZXJCbG9ja1RpdGxlIj4KICAgICAgICAgICAgICAgIENsYXVzZSBkZSBub24tcmVzcG9uc2FiaWxpdMOpCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJkaXZEaXNjbGFpbWVyQmxvY2tUZXh0Ij4KICAgICAgICAgICAgICAgIExlIG1vbnRhbnQgaW5kaXF1w6kgcmVwcsOpc2VudGUgdW5lIGVzdGltYXRpb24gZHUgbW9udGFudCBxdWUgdm91cyBwb3V2ZXogdm91cyBhdHRlbmRyZSDDoCBwYXllciBlbiBkb2xsYXJzIGNhbmFkaWVucy4gTGVzIHRheGVzIHNvbnQgZXhjbHVlcyAoc2F1ZiBpbmRpY2F0aW9uIGNvbnRyYWlyZSkuIExlcyBwaG90b3MgcmVwcsOpc2VudGVudCBsZSBtb2TDqGxlIG9mZmVydCBtYWlzIHBldXZlbnQgdmFyaWVyIGzDqWfDqHJlbWVudCBlbiBjb3VsZXVyLCBvcHRpb25zLCBvdSBjYXJhY3TDqXJpc3RpcXVlcy4gQmllbiBxdWUgbm91cyBub3VzIGVmZm9yY2lvbnMgZGUgZ2FyYW50aXIgbCdleGFjdGl0dWRlIGRlcyBpbmZvcm1hdGlvbnMgc3VyIGNlIHNpdGUgV2ViLCBub3VzIHZvdXMgcmVjb21tYW5kb25zIGRlIG5vdXMgY29udGFjdGVyIGRpcmVjdGVtZW50IHBvdXIgdsOpcmlmaWVyIGxlcyBkw6l0YWlscyBldCBvYnRlbmlyIGRlcyBpbmZvcm1hdGlvbnMgc3VwcGzDqW1lbnRhaXJlcyBzdXIgbGUgdsOpaGljdWxlLCB5IGNvbXByaXMgbGEgY29uZmlybWF0aW9uIGRlcyBwcml4LCBkZXMgY291bGV1cnMsIGRlcyBmaW5pdGlvbnMsIGRlcyBvcHRpb25zIGV0IGF1dHJlcyBzcMOpY2lmaWNhdGlvbnMuCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgkJCTwvZGl2PgoKICAgICAgIAkKCgk8ZGl2IGNsYXNzPSJ1aS1sb2FkZXItYmFja2dyb3VuZCI+PGltZyBjbGFzcz0idWktbG9hZGVyLWJhY2tncm91bmQtZ2lmIGxhenlsb2FkIG9wdGFub24tY2F0ZWdvcnktQzAwMDEiIGRhdGEtaW1nc3JjPSJodHRwczovL2h5dW5kYWlyZXBlbnRpZ255LmNvbS8vaW1hZ2VzL2FqYXgtbG9hZGVyMi5naWYiIGFsdD0iYWpheCBsb2FkZXIyIiBkYXRhLW90LWlnbm9yZSBkYXRhLWNvb2tpZWNvbnNlbnQ9Imlnbm9yZSI+PC9kaXY+CgoJCTxkaXYgaWQ9ImFzUG9wVXAiIGNsYXNzPSJyZXZlYWwtbW9kYWwgc21hbGwiIHN0eWxlPSJib3gtc2hhZG93OiBub25lO2JhY2tncm91bmQ6I2ZmZmZmZjtjb2xvcjojMDAwO3dpZHRoOjg1JTttYXgtd2lkdGg6NjAwcHg7cGFkZGluZzoyMHB4OyI+CgkJPGRpdiBjbGFzcz0idGV4dC11cHBlcmNhc2UiIHN0eWxlPSJoZWlnaHQ6NDBweDt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXNpemU6IDEuNzVyZW07bWFyZ2luLWJvdHRvbToxMHB4OyI+CgkJCVNWUCBjb25maXJtZXIKCQk8L2Rpdj4KCgkJPGZvcm0gbWV0aG9kPSJwb3N0Ij4KCQkJCTxzdGFjay1sYz4KCQk8Ym94LWxjIGNsYXNzPSJ2aVRleHQiPgoJCQk8ZGl2IGNsYXNzPSJwb3B1cC1wb2xpY3kiPkFmaW4gZGUgcmVzcGVjdGVyIGxhIExvaSBDYW5hZGllbm5lIEFudGktUG91cnJpZWwgZXQgbGEgTG9pIDI1IGR1IFF1w6liZWMsIG5vdXMgdm91cyBwcmlvbnMgZGUgYmllbiB2b3Vsb2lyIGNvbmZpcm1lciBzaSB2b3VzIHNvdWhhaXRleiByZWNldm9pciBub3MgY29tbXVuaWNhdGlvbnMgZnV0dXJlcyBjb25jZXJuYW50IGxlcyByYWJhaXMsIGxlcyBwcm9tb3Rpb25zLCBsZXMgb2ZmcmVzIGV0IGxlcyB2ZW50ZXMgcHJpdsOpZXMuIFZldWlsbGV6IG5vdGVyIHF1ZSB2b3VzIHBvdXZleiBtb2RpZmllciBvdSByZXRpcmVyIGNlIGNvbnNlbnRlbWVudCDDoCB0b3V0IG1vbWVudC4gRW4gY2xpcXVhbnQgc3VyIE91aSwgdm91cyBjb25maXJtZXogYXZvaXIgbHUgZXQgYWNjZXB0w6kgbm90cmUgPGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Ij9wYXRoPS9wb2xpdGlxdWUtZGUtY29uZmlkZW50aWFsaXRlLmh0bWwiPnBvbGl0aXF1ZSBkZSBjb25maWRlbnRpYWxpdMOpPC9hPi48L2Rpdj4KCQk8L2JveC1sYz4KCQk8Ym94LWxjIGNsYXNzPSJkZWFsZXJDb25zZW50Ij4KCQkJPGRpdiBjbGFzcz0iZmxleC1iZXR3ZWVuIj4KCQkJCTxkaXYgY2xhc3M9Ii13NTBwIj5IeXVuZGFpIFJlcGVudGlnbnk8L2Rpdj4KCQkJCTxkaXYgY2xhc3M9Ii13NTBwIj4KCQkJCQk8bGFiZWw+CgkJCQkJCTxpbnB1dCB0eXBlPSJyYWRpbyIgdmFsdWU9IjEiIG5hbWU9ImNvbnNlbnQiIGNsYXNzPSJyZXFSYWRpbyI+CgkJCQkJCU91aQoJCQkJCTwvbGFiZWw+CgkJCQkJPGxhYmVsPgoJCQkJCQk8aW5wdXQgdHlwZT0icmFkaW8iIHZhbHVlPSItMSIgbmFtZT0iY29uc2VudCIgY2xhc3M9InJlcVJhZGlvIj4KCQkJCQkJTm9uCgkJCQkJPC9sYWJlbD4KCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0iY29uc2VudCBkaXNjbGFpbWVyIiBzdHlsZT0id2lkdGg6IDUwJTsiIGRhdGEtdG9vbHRpcD0nRW4gZm91cm5pc3NhbnQgbWVzIGluZm9ybWF0aW9ucyBwZXJzb25uZWxsZXMsIGplIGNvbnNlbnMgw6AgbGV1ciB1dGlsaXNhdGlvbiBldCBsZXVyIGRpdnVsZ2F0aW9uIGNvbmZvcm3DqW1lbnQgw6AgbGEgUG9saXRpcXVlIGRlIGNvbmZpZGVudGlhbGl0w6kgZGUgSHl1bmRhaSBSZXBlbnRpZ255LiBKZSBjb25maXJtZSBhdm9pciBsdSBsYSAmbHQ7YSBocmVmPSIvcG9saXRpcXVlLWRlLWNvbmZpZGVudGlhbGl0ZS5odG1sIiZndDtQb2xpdGlxdWUgZGUgY29uZmlkZW50aWFsaXTDqSZsdDsvYSZndDsuIEplIGNvbXByZW5kcyBxdWUgSHl1bmRhaSBSZXBlbnRpZ255IHBldXQgcGFydGFnZXIgbWVzIGluZm9ybWF0aW9ucyBwZXJzb25uZWxsZXMgYXZlYyBkZXMgdGllcnMgZGFucyBsZSBidXQgZGUgZ8OpcmVyIG1hIHJlbGF0aW9uIGF2ZWMgZXV4LCB0ZWxzIHF1ZSBub3RyZSBmb3Vybmlzc2V1ciBkZSBnZXN0aW9uIGRlIGxhIHJlbGF0aW9uIGNsaWVudCAoQ1JNKS4gSmUgY29tcHJlbmRzIHF1ZSBjZXJ0YWlucyBkZSBjZXMgZm91cm5pc3NldXJzIHBldXZlbnQgc3RvY2tlciBtZXMgaW5mb3JtYXRpb25zIHBlcnNvbm5lbGxlcyBzdXIgZGVzIHNlcnZldXJzIGV0IGRlcyBiYXNlcyBkZSBkb25uw6llcyBzaXR1w6lzIGVuIGRlaG9ycyBkZSBtYSBwcm92aW5jZS4gSmUgY29tcHJlbmRzIMOpZ2FsZW1lbnQgcXVlIGplIHBldXggcmV0aXJlciBtb24gY29uc2VudGVtZW50IGV0IG1lIGTDqXNhYm9ubmVyIGRlIGxhIHLDqWNlcHRpb24gZGUgY29tbXVuaWNhdGlvbnMgZnV0dXJlcyBkZSBIeXVuZGFpIFJlcGVudGlnbnkgw6AgdG91dCBtb21lbnQuIExlIGNvbnNlbnRlbWVudCDDoCBsYSByw6ljZXB0aW9uIGRlIGNvbW11bmljYXRpb25zIMOpbGVjdHJvbmlxdWVzIGVzdCBzb2xsaWNpdMOpIHBhciBIeXVuZGFpIFJlcGVudGlnbnkuJz5DbGF1c2UgZGUgbm9uLXJlc3BvbnNhYmlsaXTDqTwvZGl2PgoJCTwvYm94LWxjPgoKCQkKCgk8L3N0YWNrLWxjPgoJPGRpdiBjbGFzcz0iLXB0MTAiIHN0eWxlPSJmb250LXNpemU6IDEwcHg7dGV4dC1hbGlnbjogY2VudGVyO2NvbG9yOiB2YXIoLS1kYXJrLWdyYXkpOyI+SU1QT1JUQU5UOiBWb3VzIHBvdXZleiBmYWNpbGVtZW50IHJldGlyZXIgdm90cmUgY29uc2VudGVtZW50IGVuIHRvdXQgdGVtcHMhPC9kaXY+CgoJCQk8ZGl2IGNsYXNzPSJmbGV4LWJveCBmbGV4LWV2ZW5seSIgc3R5bGU9Im1hcmdpbi10b3A6IDM1cHg7Ij4KCQkJCTxpbnB1dCB0eXBlPSJidXR0b24iIGlkPSJjb25zZW50U3VibWl0IiBjbGFzcz0iIGJ0bi1kZWZhdWx0ICIgdmFsdWU9IlNvdW1ldHRyZSI+CgkJCTwvZGl2PgoJCTwvZm9ybT4KCgkJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9Imxhc3RDb25zZW50UG9wIiB2YWx1ZT0iIj4KCTwvZGl2PgoJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJwdXJjaGFzZV9pbnRlbnRfYW5zd2VyIiB2YWx1ZT0iUEdKeUlDOCtUR1VnWTJ4cFpXNTBJR0VnYkNkcGJuUmxiblJwYjI0Z1pDZGhZMmhsZEdWeUlITnZiaUJ3Y205amFHRnBiaUIyNldocFkzVnNaU0E4WWo0bGRHbHRaV1p5WVcxbEpUd3ZZajQ4WW5JZ0x6ND0iPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InB1cmNoYXNlX2ludGVudF9ub19hbnN3ZXIiIHZhbHVlPSJjMkZ1Y3lCa1lYUmxJSEJ5NldOcGMyVT0iPgoJPGRpdiBjbGFzcz0icmV2ZWFsLW1vZGFsIiBpZD0iYXNQdXJjaGFzZUludGVudCI+CgkgIDxmb3JtIG1ldGhvZD0icG9zdCI+CgkgICAgPHN0cm9uZyBjbGFzcz0iYXNQSVRpdGxlIj4KCSAgICAgIFF1ZWxxdWVzIHByw6ljaXNpb25zCgkgICAgPC9zdHJvbmc+CgkgICAgPG9sIGNsYXNzPSJzdGVwcyI+CgkgICAgPGxpIGlkPSJBTExPV19TSEFSRV9QRVJTT05BTF9JTkZPIiBjbGFzcz0iaGlkZGVuIj4KCQkJCQk8ZGl2IHN0eWxlPSJoZWlnaHQ6MTA1cHg7Ij4KCQkJCQkJPHN0cm9uZyBjbGFzcz0idmlUZXh0Ij4KCQkJCQkJCU5vdXMgcGVybWV0dGV6LXZvdXMgZGUgcGFydGFnZXIgdm9zIGluZm9ybWF0aW9ucyBwZXJzb25uZWxsZXMgYXZlYyBsZXMgaW5zdGl0dXRpb25zIGZpbmFuY2nDqHJlcyBwb3VyIHZvdHJlIGJ1cmVhdSBkZSBjcsOpZGl0PwoJCQkJCQk8L3N0cm9uZz4KCQkJCQkJPGRpdiBjbGFzcz0iY2xyIj48L2Rpdj4KCgkJCQkJCTxkaXYgY2xhc3M9ImFzeWVzbm8gYXN5ZXMiPgoJCQkJCQkJPGlucHV0IHR5cGU9InJhZGlvIiB2YWx1ZT0ieWVzIiBuYW1lPSJzaGFyZV9wZXJzb25hbCIgY2xhc3M9InJlcVJhZGlvIj4KCQkJCQkJCQk8bGFiZWw+T3VpPC9sYWJlbD4KCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImFzeWVzbm8gYXNubyI+CgkJCQkJCQk8aW5wdXQgdHlwZT0icmFkaW8iIHZhbHVlPSJubyIgbmFtZT0ic2hhcmVfcGVyc29uYWwiIGNsYXNzPSJyZXFSYWRpbyI+CgkJCQkJCQkJPGxhYmVsPk5vbjwvbGFiZWw+CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IHN0eWxlPSJkaXNwbGF5Om5vbmU7Y29sb3I6cmVkO3BhZGRpbmctdG9wOjRweDtjbGVhcjogYm90aDsiIGlkPSJBTExPV19TSEFSRV9QRVJTT05BTF9JTkZPX1RFWFRfRVJST1IiPlZvdHJlIGNvbnNlbnRlbWVudCBlc3QgcmVxdWlzIHBvdXIgY29tcGzDqXRlciB2b3RyZSBkZW1hbmRlIGRlIGNyw6lkaXQhPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQk8L2xpPgoKCSAgICAgIDxsaSBjbGFzcz0ic3RlcEludGVudCBoaWRkZW4iPgoJICAgICAgICA8c3Ryb25nIGNsYXNzPSJ2aVRleHQiPgoJCQkJCVF1YW5kIHByw6l2b3llei12b3VzIGFjaGV0ZXIgdW4gdsOpaGljdWxlPwoJICAgICAgICA8L3N0cm9uZz4KCSAgICAgICAgPHVsIGNsYXNzPSJ2aU9wdGlvbnMiPgoJICAgICAgICAgIDxsaT48aW5wdXQgdHlwZT0icmFkaW8iIHZhbHVlPSJEJ2ljaSAzMCBqb3VycyIgbmFtZT0icHVyY2hhc2VfaW50ZW50IiBjbGFzcz0icmVxUmFkaW8iPjxsYWJlbD4gRCdpY2kgMzAgam91cnM8L2xhYmVsPjwvbGk+CgkgICAgICAgICAgPGxpPjxpbnB1dCB0eXBlPSJyYWRpbyIgdmFsdWU9IkQnaWNpIDMgbW9pcyIgbmFtZT0icHVyY2hhc2VfaW50ZW50IiBjbGFzcz0icmVxUmFkaW8iPjxsYWJlbD4gRCdpY2kgMyBtb2lzPC9sYWJlbD48L2xpPgoJICAgICAgICAgIDxsaT48aW5wdXQgdHlwZT0icmFkaW8iIHZhbHVlPSJEJ2ljaSA2IG1vaXMiIG5hbWU9InB1cmNoYXNlX2ludGVudCIgY2xhc3M9InJlcVJhZGlvIj48bGFiZWw+IEQnaWNpIDYgbW9pczwvbGFiZWw+PC9saT4KCSAgICAgICAgICA8bGk+PGlucHV0IHR5cGU9InJhZGlvIiB2YWx1ZT0iRCdpY2kgcGx1cyBkZSA2IG1vaXMiIG5hbWU9InB1cmNoYXNlX2ludGVudCIgY2xhc3M9InJlcVJhZGlvIj48bGFiZWw+IEQnaWNpIHBsdXMgZGUgNiBtb2lzPC9sYWJlbD48L2xpPgoJICAgICAgICA8L3VsPgoJICAgICAgICA8YnIgY2xhc3M9ImNsciI+CgkgICAgICA8L2xpPgoKCSAgICAgIDxsaSBjbGFzcz0ic3RlcENvbnRhY3QgaGlkZGVuIiBkYXRhLWRlcGFydG1lbnRzPSIiPgoJCQk8ZGl2IHN0eWxlPSJib3JkZXI6IG5vbmU7IiBjbGFzcz0iZDJjZm9ybSBkMmNmb3JtLS1yb3ciPgoJCQkJPGJveC1sYz4KCQkJCQk8ZGl2IGNsYXNzPSJ2aVRleHQiPgoJCQkJCQk8c3Ryb25nPlF1ZWxsZSBlc3Qgdm90cmUgbcOpdGhvZGUgZGUgY29udGFjdCBwcsOpZsOpcsOpZSA\/PC9zdHJvbmc+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0icmFkaW8taW5saW5lIj4KCQkJCQkJPGxhYmVsIGNsYXNzPSIiPgoJCQkJCQkJPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJwcmVmZXJyZWRfY29udGFjdCIgdmFsdWU9IlTDqWzDqXBob25lIiBjbGFzcz0icmVxUmFkaW8iPgoJCQkJCQkJVMOpbMOpcGhvbmUKCQkJCQkJPC9sYWJlbD4KCQkJCQkJPGxhYmVsIGNsYXNzPSIiPgoJCQkJCQkJPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJwcmVmZXJyZWRfY29udGFjdCIgdmFsdWU9IkNvdXJyaWVsIiBjbGFzcz0icmVxUmFkaW8iPgoJCQkJCQkJQ291cnJpZWwKCQkJCQkJPC9sYWJlbD4KCQkJCQkJPGxhYmVsIGNsYXNzPSIiPgoJCQkJCQkJPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJwcmVmZXJyZWRfY29udGFjdCIgdmFsdWU9IlNNUyIgY2xhc3M9InJlcVJhZGlvIj4KCQkJCQkJCVNNUwoJCQkJCQk8L2xhYmVsPgoJCQkJCTwvZGl2PgoJCQkJPC9ib3gtbGM+CgkJCTwvZGl2PgoJCTwvbGk+CgoJCTxsaSBjbGFzcz0ic3RlcENvbnNlbnQiPgoJCQkJPHN0YWNrLWxjPgoJCTxib3gtbGMgY2xhc3M9InZpVGV4dCI+CgkJCTxkaXYgY2xhc3M9InBvcHVwLXBvbGljeSI+QWZpbiBkZSByZXNwZWN0ZXIgbGEgTG9pIENhbmFkaWVubmUgQW50aS1Qb3VycmllbCBldCBsYSBMb2kgMjUgZHUgUXXDqWJlYywgbm91cyB2b3VzIHByaW9ucyBkZSBiaWVuIHZvdWxvaXIgY29uZmlybWVyIHNpIHZvdXMgc291aGFpdGV6IHJlY2V2b2lyIG5vcyBjb21tdW5pY2F0aW9ucyBmdXR1cmVzIGNvbmNlcm5hbnQgbGVzIHJhYmFpcywgbGVzIHByb21vdGlvbnMsIGxlcyBvZmZyZXMgZXQgbGVzIHZlbnRlcyBwcml2w6llcy4gVmV1aWxsZXogbm90ZXIgcXVlIHZvdXMgcG91dmV6IG1vZGlmaWVyIG91IHJldGlyZXIgY2UgY29uc2VudGVtZW50IMOgIHRvdXQgbW9tZW50LiBFbiBjbGlxdWFudCBzdXIgT3VpLCB2b3VzIGNvbmZpcm1leiBhdm9pciBsdSBldCBhY2NlcHTDqSBub3RyZSA8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iP3BhdGg9L3BvbGl0aXF1ZS1kZS1jb25maWRlbnRpYWxpdGUuaHRtbCI+cG9saXRpcXVlIGRlIGNvbmZpZGVudGlhbGl0w6k8L2E+LjwvZGl2PgoJCTwvYm94LWxjPgoJCTxib3gtbGMgY2xhc3M9ImRlYWxlckNvbnNlbnQiPgoJCQk8ZGl2IGNsYXNzPSJmbGV4LWJldHdlZW4iPgoJCQkJPGRpdiBjbGFzcz0iLXc1MHAiPkh5dW5kYWkgUmVwZW50aWdueTwvZGl2PgoJCQkJPGRpdiBjbGFzcz0iLXc1MHAiPgoJCQkJCTxsYWJlbD4KCQkJCQkJPGlucHV0IHR5cGU9InJhZGlvIiB2YWx1ZT0iMSIgbmFtZT0iY29uc2VudCIgY2xhc3M9InJlcVJhZGlvIj4KCQkJCQkJT3VpCgkJCQkJPC9sYWJlbD4KCQkJCQk8bGFiZWw+CgkJCQkJCTxpbnB1dCB0eXBlPSJyYWRpbyIgdmFsdWU9Ii0xIiBuYW1lPSJjb25zZW50IiBjbGFzcz0icmVxUmFkaW8iPgoJCQkJCQlOb24KCQkJCQk8L2xhYmVsPgoJCQkJPC9kaXY+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJjb25zZW50IGRpc2NsYWltZXIiIHN0eWxlPSJ3aWR0aDogNTAlOyIgZGF0YS10b29sdGlwPSdFbiBmb3Vybmlzc2FudCBtZXMgaW5mb3JtYXRpb25zIHBlcnNvbm5lbGxlcywgamUgY29uc2VucyDDoCBsZXVyIHV0aWxpc2F0aW9uIGV0IGxldXIgZGl2dWxnYXRpb24gY29uZm9ybcOpbWVudCDDoCBsYSBQb2xpdGlxdWUgZGUgY29uZmlkZW50aWFsaXTDqSBkZSBIeXVuZGFpIFJlcGVudGlnbnkuIEplIGNvbmZpcm1lIGF2b2lyIGx1IGxhICZsdDthIGhyZWY9Ii9wb2xpdGlxdWUtZGUtY29uZmlkZW50aWFsaXRlLmh0bWwiJmd0O1BvbGl0aXF1ZSBkZSBjb25maWRlbnRpYWxpdMOpJmx0Oy9hJmd0Oy4gSmUgY29tcHJlbmRzIHF1ZSBIeXVuZGFpIFJlcGVudGlnbnkgcGV1dCBwYXJ0YWdlciBtZXMgaW5mb3JtYXRpb25zIHBlcnNvbm5lbGxlcyBhdmVjIGRlcyB0aWVycyBkYW5zIGxlIGJ1dCBkZSBnw6lyZXIgbWEgcmVsYXRpb24gYXZlYyBldXgsIHRlbHMgcXVlIG5vdHJlIGZvdXJuaXNzZXVyIGRlIGdlc3Rpb24gZGUgbGEgcmVsYXRpb24gY2xpZW50IChDUk0pLiBKZSBjb21wcmVuZHMgcXVlIGNlcnRhaW5zIGRlIGNlcyBmb3Vybmlzc2V1cnMgcGV1dmVudCBzdG9ja2VyIG1lcyBpbmZvcm1hdGlvbnMgcGVyc29ubmVsbGVzIHN1ciBkZXMgc2VydmV1cnMgZXQgZGVzIGJhc2VzIGRlIGRvbm7DqWVzIHNpdHXDqXMgZW4gZGVob3JzIGRlIG1hIHByb3ZpbmNlLiBKZSBjb21wcmVuZHMgw6lnYWxlbWVudCBxdWUgamUgcGV1eCByZXRpcmVyIG1vbiBjb25zZW50ZW1lbnQgZXQgbWUgZMOpc2Fib25uZXIgZGUgbGEgcsOpY2VwdGlvbiBkZSBjb21tdW5pY2F0aW9ucyBmdXR1cmVzIGRlIEh5dW5kYWkgUmVwZW50aWdueSDDoCB0b3V0IG1vbWVudC4gTGUgY29uc2VudGVtZW50IMOgIGxhIHLDqWNlcHRpb24gZGUgY29tbXVuaWNhdGlvbnMgw6lsZWN0cm9uaXF1ZXMgZXN0IHNvbGxpY2l0w6kgcGFyIEh5dW5kYWkgUmVwZW50aWdueS4nPkNsYXVzZSBkZSBub24tcmVzcG9uc2FiaWxpdMOpPC9kaXY+CgkJPC9ib3gtbGM+CgoJCQoKCTwvc3RhY2stbGM+Cgk8ZGl2IGNsYXNzPSItcHQxMCIgc3R5bGU9ImZvbnQtc2l6ZTogMTBweDt0ZXh0LWFsaWduOiBjZW50ZXI7Y29sb3I6IHZhcigtLWRhcmstZ3JheSk7Ij5JTVBPUlRBTlQ6IFZvdXMgcG91dmV6IGZhY2lsZW1lbnQgcmV0aXJlciB2b3RyZSBjb25zZW50ZW1lbnQgZW4gdG91dCB0ZW1wcyE8L2Rpdj4KCQk8L2xpPgoKCSAgICA8L29sPgoJICA8L2Zvcm0+CgkgIDxkaXYgY2xhc3M9Ii10ZXh0LWNlbnRlciI+CgkgICAgPGEgaWQ9ImVtYWlsQ29uc2VudFN1Ym1pdCIgaHJlZj0iP3BhdGg9IyIgY2xhc3M9IiAtdXBwZXJjYXNlIGJ0bi1kZWZhdWx0ICI+U09VTUVUVFJFPC9hPgoJICA8L2Rpdj4KCTwvZGl2PgoKCgoJCgkKCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJhc2tWaXNpdG9yR2VvbG9jIiB2YWx1ZT0iMSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iY3VycmVudEl0ZW1UeXBlIiB2YWx1ZT0iY2FyIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJjdXJyZW50SXRlbVR5cGVVUkxTYWZlRU4iIHZhbHVlPSIiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImN1cnJlbnRTdGF0dXMiIHZhbHVlPSJuZXciPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InR4dFVzZXJBZ2VudCIgdmFsdWU9IiAgIj4KCQk8c2NyaXB0IGFzeW5jIHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3N0YXRzLmQyY21lZGlhLmNhL3NlcnZpY2UvZDJjLmluaXQuanMiPjwvc2NyaXB0PgoKCTxkaXYgaWQ9ImNvbnZlcnNpb25UYWdzV3JhcHBlciI+PC9kaXY+CgoJPGRpdiBpZD0iZDJjX3ZhcnMiPjxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJuZXdjYXJzLmh0bWwiIGlkPSIxNmQ3dnd0NjZwbW93bzBrIiBkYXRhLWZvcnZhcj0iQ1VSUkVOVFBBR0UiPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iIiBpZD0iM3BtNnR2Z3FxZWd3NHciIGRhdGEtZm9ydmFyPSJVU0VEX0VNQUlMIj4KPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9Ik5FVyIgaWQ9InNvN3l1cWFqNGR3Y2M4cyIgZGF0YS1mb3J2YXI9IlNJVEVfQ0FSX1NFQ1RJT05fVFlQRSI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSIjI01BS0UjIyIgaWQ9ImNra242ZXQ5MDN3b3NrIiBkYXRhLWZvcnZhcj0iTUFLRSI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSIjI01PREVMIyMiIGlkPSI0MmNsc2h5cXN4d2tza28iIGRhdGEtZm9ydmFyPSJNT0RFTCI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSIjI1lFQVIjIyIgaWQ9IjFwOTZwcTIydDI3NGNjYyIgZGF0YS1mb3J2YXI9IllFQVIiPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iIyNTVE9DS05VTUJFUiMjIiBpZD0iM3NiNnhzZ2JrazRrNDQiIGRhdGEtZm9ydmFyPSJTVE9DS05VTUJFUiI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSIiIGlkPSIxM2RxdHNuY2Q4MXdrODQ0IiBkYXRhLWZvcnZhcj0iRklOQU5DRV9FTUFJTCI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJiYTYyMGMzZjJlZTU3NTRjZmFiM2NmYWQxNDE3NTczY3wzMjU1NjY5ODg2IiBpZD0iNWNjeWdrOTI1bWd3ZzAiIGRhdGEtZm9ydmFyPSJGSU5BTkNFX0FERl9FTUFJTCI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJiYTYyMGMzZjJlZTU3NTRjZmFiM2NmYWQxNDE3NTczY3wzMjU1NjY5ODg2IiBpZD0icmQ1cDhzNGg2cjRzMGNrIiBkYXRhLWZvcnZhcj0iQURGX0VNQUlMIj4KPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9ImxpdmUiIGlkPSIyZWpoYmMweXlvZzB3d3ciIGRhdGEtZm9ydmFyPSJERVBMT1lNRU5UVFlQRSI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJnb29nbGUiIGlkPSIxNDA0cmEwNGJ3cmtvNHdnIiBkYXRhLWZvcnZhcj0iTUFQVE9VU0UiPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0icmVzZXQiIGlkPSI2anlwNDY2NHZnd3M4MHciIGRhdGEtZm9ydmFyPSJQT1BVUFdJREdFVFRPQUNUSVZFIj4KPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9Imh5dW5kYWlyZXBlbnRpZ255LmNvbSIgaWQ9InU2dGhydzlvbGNnOHc4dyIgZGF0YS1mb3J2YXI9IkRPTUFJTk5BTUUiPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iaHR0cHM6Ly93d3cuaHl1bmRhaXJlcGVudGlnbnkuY29tIiBpZD0iY291OWhtNDI5MWMwa29jIiBkYXRhLWZvcnZhcj0iTk9STUFMU0lURVVSSSI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSIiIGlkPSIxZXJpdjkwMHBkYTg4d3c4IiBkYXRhLWZvcnZhcj0iTUFLRUZPUkVNQUlMIj4KPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IiIgaWQ9IjEwcGE3djNxZWxkY29zayIgZGF0YS1mb3J2YXI9Ik1PREVMRk9SRU1BSUwiPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iIiBpZD0icjgyemZreGEyZHdzczAwIiBkYXRhLWZvcnZhcj0iWUVBUiI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSIiIGlkPSJpM2dzYXhnczVqazh3Y2siIGRhdGEtZm9ydmFyPSJSRUZFUkVSIj4KPC9kaXY+PCEtLSAjI0VORE9GUEFHRSMjIC0tPgoJPGRpdiBpZD0iY29uZmlybV9mb3JtcyI+PC9kaXY+CgoJPCEtLSBPTzo6ZTUzYTZjMWI5MTU5OTI3NDBhYjU5ZGE1ZGQ1N2NiMDMgLS0+CgoJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZhY2Vib29va19pc19hY3RpdmUiIHZhbHVlPSIxIj4KCTwhLS0gRmFjZWJvb2sgUGl4ZWwgQ29kZSBWaWV3Q29udGVudCAtLT4KCTwhLS0gT086OjU5YTFlMmJlY2U3YjRiYjNkODQ2MmE4ZWQ4NjFhOWNlIC0tPgoJPG5vc2NyaXB0PgoJCTxpbWcgY2xhc3M9Imxhenlsb2FkIG9wdGFub24tY2F0ZWdvcnktQzAwMDEiIGRhdGEtaW1nc3JjPSJodHRwczovL3d3dy5mYWNlYm9vay5jb20vdHI\/aWQ9MjA2ODI4NDEzMDk2NzgwJmFtcDtldj1QYWdlVmlldyZhbXA7bm9zY3JpcHQ9MSIgYWx0PSJ0ciBpZCAyMDY4Mjg0MTMwOTY3ODAgZXYgIHBhZ2UgdmlldyBub3NjcmlwdCAxIiBoZWlnaHQ9IjEiIHN0eWxlPSJkaXNwbGF5Om5vbmUiIHdpZHRoPSIxIiBkYXRhLW90LWlnbm9yZSBkYXRhLWNvb2tpZWNvbnNlbnQ9Imlnbm9yZSI+Cgk8L25vc2NyaXB0PgoJPCEtLSBFbmQgRmFjZWJvb2sgUGl4ZWwgQ29kZSBWaWV3Q29udGVudCAtLT4KCgk8IS0tIERXUC0yNDM5IC0tPgoJPCEtLSBPTzo6MzE0Y2FhNWJmNTkwOTJjNmY3Y2Y2YTJmYzcyZTk1MTMgLS0+CjxzY3JpcHQgc3JjPSJodHRwczovL2FpYXBwcy5kMmNtZWRpYS5jYS9jaGF0Ym90L2QyY2JvdC13aWRnZXQuanMiIGRhdGEtY2hhdC13aWRnZXQ9IiI+PC9zY3JpcHQ+PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2FpYXBwcy5kMmNtZWRpYS5jYS9jaGF0Ym90L2QyY2JvdC13aWRnZXQuY3NzIj4JPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IjEiIGlkPSJpc21vYmlsZSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iRlJFTkNIIiBpZD0iYWN0aXZlc2l0ZWxhbmd1YWdlIj4KCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0idG9wc2l0ZWlkIiBuYW1lPSJ0b3BzaXRlaWQiIHZhbHVlPSIyNTEiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InRvcGNhcmlkIiBuYW1lPSJ0b3BjYXJpZCIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0idG9wY2FyaWRNdWx0aXN0ZXBGb3JtIiBuYW1lPSJ0b3BjYXJpZE11bHRpc3RlcEZvcm0iIHZhbHVlPSIiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InRvcGlzbW9iaWxlIiBuYW1lPSJ0b3Bpc21vYmlsZSIgdmFsdWU9IjEiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InRvcGRlcGxveW1lbnR0eXBlIiBuYW1lPSJ0b3BkZXBsb3ltZW50dHlwZSIgdmFsdWU9ImxpdmUiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImVNb2RlbCIgbmFtZT0iZU1vZGVsIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJwb3B1cG1ha2UiIG5hbWU9InBvcHVwbWFrZSIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0icG9wdXBtYWtlTXVsdGlzdGVwRm9ybSIgbmFtZT0icG9wdXBtYWtlTXVsdGlzdGVwRm9ybSIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0icG9wdXBtb2RlbCIgbmFtZT0icG9wdXBtb2RlbCIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0icG9wdXBtb2RlbE11bHRpc3RlcEZvcm0iIG5hbWU9InBvcHVwbW9kZWxNdWx0aXN0ZXBGb3JtIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJwb3B1cHllYXIiIG5hbWU9InBvcHVweWVhciIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0icG9wdXB5ZWFyTXVsdGlzdGVwRm9ybSIgbmFtZT0icG9wdXB5ZWFyTXVsdGlzdGVwRm9ybSIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0icG9wdXB0cmltIiBuYW1lPSJwb3B1cHRyaW0iIHZhbHVlPSIiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InBvcHVwc3RvY2tudW1iZXIiIG5hbWU9InBvcHVwc3RvY2tudW1iZXIiIHZhbHVlPSIiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InBvcHVwc3RvY2tudW1iZXJNdWx0aXN0ZXBGb3JtIiBuYW1lPSJwb3B1cHN0b2NrbnVtYmVyTXVsdGlzdGVwRm9ybSIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ibGFzdHZpZXdlZG1ha2UiIG5hbWU9Imxhc3R2aWV3ZWRtYWtlIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJsYXN0dmlld2VkbW9kZWwiIG5hbWU9Imxhc3R2aWV3ZWRtb2RlbCIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ibGFzdHZpZXdlZHllYXIiIG5hbWU9Imxhc3R2aWV3ZWR5ZWFyIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJsYXN0dmlld2VkdHJpbSIgbmFtZT0ibGFzdHZpZXdlZHRyaW0iIHZhbHVlPSIiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9Imxhc3R2aWV3ZWRzdG9ja251bWJlciIgbmFtZT0ibGFzdHZpZXdlZHN0b2NrbnVtYmVyIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJoYXNNdWx0aXBsZURlYWxlcnMiIHZhbHVlPSIiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InNlbmRFbWFpbFRvQWxsRGVhbGVycyIgdmFsdWU9IjAiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InNlYXJjaGVkVmVoaWNsZSIgdmFsdWU9IiAgIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJzZWFyY2hlZHF1ZXJ5bWFrZSIgbmFtZT0ic2VhcmNoZWRxdWVyeW1ha2UiIHZhbHVlPSIiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InNlYXJjaGVkcXVlcnltb2RlbCIgbmFtZT0ic2VhcmNoZWRxdWVyeW1vZGVsIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJzZWFyY2hlZHF1ZXJ5eWVhciIgbmFtZT0ic2VhcmNoZWRxdWVyeXllYXIiIHZhbHVlPSIiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImltZ3N2cnBvb2xhY3RpdmUiIG5hbWU9ImltZ3N2cnBvb2xhY3RpdmUiIHZhbHVlPSJUUlVFIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJpc0FWR01hcmtldFByaWNlQWN0aXZlIiB2YWx1ZT0iMSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ic2l0ZWNvbXBpbGVpZCIgbmFtZT0ic2l0ZWNvbXBpbGVpZCIgdmFsdWU9IjY5YWQwMjU5OGM0NzAiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImVtYWlsTGlzdFN1ZmZpeCIgbmFtZT0iZW1haWxMaXN0U3VmZml4IiB2YWx1ZT0iMzI1NTY2OTg4NiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iZGlzYWJsZVBvcHVwcyIgbmFtZT0iZGlzYWJsZVBvcHVwcyIgdmFsdWU9IjAiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IkFETUlOX0dFTkVSQUxfQkxPQ0tfRlJfRE9NQUlOX0NIRUNLIiBuYW1lPSJBRE1JTl9HRU5FUkFMX0JMT0NLX0ZSX0RPTUFJTl9DSEVDSyIgdmFsdWU9IjEiPgoKCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJ0YXJnZXRQYWdlIiBuYW1lPSJ0YXJnZXRQYWdlIiB2YWx1ZT0iTkVXQ0FSUyI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0icGFnZVNlY3Rpb24iIG5hbWU9InBhZ2VTZWN0aW9uIiB2YWx1ZT0iTkVXIj4KCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iRGlzY291bnRQb3B1cE90aGVyUGFnZXMiIG5hbWU9IkRpc2NvdW50UG9wdXBPdGhlclBhZ2VzIiB2YWx1ZT0iSE9NRVBBR0U7UFJPTU87U0VSVklDRVM7RklOQU5DRTtURUFNO0NPTlRBQ1QiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IkRpc2NvdW50UG9wdXBEZWxheVNob3dPdGhlciIgbmFtZT0iRGlzY291bnRQb3B1cERlbGF5U2hvd090aGVyIiB2YWx1ZT0iMSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iRGlzY291bnRQb3B1cERlbGF5U2hvdyIgbmFtZT0iRGlzY291bnRQb3B1cERlbGF5U2hvdyIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iRGlzY291bnRQb3B1cERlbGF5U2hvd05ldyIgbmFtZT0iRGlzY291bnRQb3B1cERlbGF5U2hvd05ldyIgdmFsdWU9IiI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iU0hPV19QT1BVUF9BVVRPIiBuYW1lPSJTSE9XX1BPUFVQX0FVVE8iIHZhbHVlPSJkZWxheSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iU0hPV19QT1BVUF9BVVRPX1VTRUQiIG5hbWU9IlNIT1dfUE9QVVBfQVVUT19VU0VEIiB2YWx1ZT0iZGVsYXkiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IlNIT1dfUE9QVVBfQVVUT19ORVciIG5hbWU9IlNIT1dfUE9QVVBfQVVUT19ORVciIHZhbHVlPSJzY3JvbGx1cCI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iQVVUT19QRVJDRU5UX1BPUFVQIiBuYW1lPSJBVVRPX1BFUkNFTlRfUE9QVVAiIHZhbHVlPSI3NSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iQVVUT19QRVJDRU5UX1BPUFVQX1VTRUQiIG5hbWU9IkFVVE9fUEVSQ0VOVF9QT1BVUF9VU0VEIiB2YWx1ZT0iNzUiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IkFVVE9fUEVSQ0VOVF9QT1BVUF9ORVciIG5hbWU9IkFVVE9fUEVSQ0VOVF9QT1BVUF9ORVciIHZhbHVlPSI3NSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iR0VORVJBTF9VU0VEX1BBR0VfUE9QVVBfU0VMRUNUIiBuYW1lPSJHRU5FUkFMX1VTRURfUEFHRV9QT1BVUF9TRUxFQ1QiIHZhbHVlPSJFWENMVURJTkciPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IkdFTkVSQUxfTkVXX1BBR0VfUE9QVVBfU0VMRUNUIiBuYW1lPSJHRU5FUkFMX05FV19QQUdFX1BPUFVQX1NFTEVDVCIgdmFsdWU9IkVYQ0xVRElORyI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iVVNFRF9MT0dPX09OX0NIRUNLIiBuYW1lPSJVU0VEX0xPR09fT05fQ0hFQ0siIHZhbHVlPSIxIj4KCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iU0VNX0JPT1NURVJfQUNUSVZFIiBuYW1lPSJTRU1fQk9PU1RFUl9BQ1RJVkUiIHZhbHVlPSIxIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJQQUdFSUQiIG5hbWU9IlBBR0VJRCIgdmFsdWU9Im5ld2NhcnMuaHRtbCI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iRGlzY291bnRQb3B1cENoZWNrYm94T3RoZXIiIG5hbWU9IkRpc2NvdW50UG9wdXBDaGVja2JveE90aGVyIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJEaXNjb3VudFBvcHVwQ2hlY2tib3giIG5hbWU9IkRpc2NvdW50UG9wdXBDaGVja2JveCIgdmFsdWU9IjEiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IkRpc2NvdW50UG9wdXBDaGVja2JveE5ldyIgbmFtZT0iRGlzY291bnRQb3B1cENoZWNrYm94TmV3IiB2YWx1ZT0iMSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iQ1JNX1dTU19BQ1RJVkUiIG5hbWU9IkNSTV9XU1NfQUNUSVZFIiB2YWx1ZT0ieWVzIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJ0eHRCdWlsZEFuZFByaWNlRW1haWxMaW5rIiB2YWx1ZT0iRGVybmllciB2w6loaWN1bGUgY29uZmlndXLDqSAobW9kdWxlIENvbmZpZ3VyYXRpb24gJmFtcDsgUHJpeCkgbGUgeyRCQU5QTElOS30iPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InR4dEJ1aWxkQW5kUHJpY2VGb2xkZXJQYXRoIiB2YWx1ZT0iL2NvbmZpZ3VyYXRpb24tZXQtcHJpeC8iPgoKCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJuZXdTZWN0aW9ubmFibGVkIiBuYW1lPSJuZXdTZWN0aW9ubmFibGVkIiB2YWx1ZT0iMSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0idXNlZFNlY3Rpb25uYWJsZWQiIG5hbWU9InVzZWRTZWN0aW9ubmFibGVkIiB2YWx1ZT0iMSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iZmluYW5jZVNlY3Rpb25uYWJsZWQiIG5hbWU9ImZpbmFuY2VTZWN0aW9ubmFibGVkIiB2YWx1ZT0iMSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ic2VydmljZVNlY3Rpb25uYWJsZWQiIG5hbWU9InNlcnZpY2VTZWN0aW9ubmFibGVkIiB2YWx1ZT0iMSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0icHJvbW9TZWN0aW9ubmFibGVkIiBuYW1lPSJwcm9tb1NlY3Rpb25uYWJsZWQiIHZhbHVlPSIxIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJDQU1QQUlHTklEIiBuYW1lPSJDQU1QQUlHTklEIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJJU1ZNIiBuYW1lPSJJU1ZNIiB2YWx1ZT0iIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJoaWRkZW5EZWFsZXJOYW1lIiB2YWx1ZT0iSHl1bmRhaSBSZXBlbnRpZ255Ij4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkNCQkNoZWNrVXNlciIgdmFsdWU9Ik1UZ3VPVGN1TVRRdU9Eaz0iPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZm9ybV9lbWFpbHMiIHZhbHVlPSIiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IjEiIGlkPSJoYXNWQkRDRW5hYmxlZCI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iZmZkTDEiIHZhbHVlPSI2NDVjNzJiNjAyNTRmNzcyM2RmYjUwNTU5NmM2Mjk5ZmEwNmM1MjJhIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJHUldMIiBuYW1lPSJHUldMIiB2YWx1ZT0iYjJlMzUwYjcxYzE2NDZiN2VlZWM5ZTFhZjZjODU0YjEzY2IxZGI1MTtiYTZiODYxMWNiYTExNzgwMzFiMTdmYTdlMzUwYWNmMmNlMTM1YWE1OzA5YzM1ODA3YmE0N2E4MjU5MmVmODhlNWQ2MzA0ZWE2OTliOGNiZTIiPgoKCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJERUFMRVJCUkFORCIgbmFtZT0iREVBTEVSQlJBTkQiIHZhbHVlPSJIeXVuZGFpIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJERUFMRVJQQUNPREUiIG5hbWU9IkRFQUxFUlBBQ09ERSIgdmFsdWU9IjMxMDI2Ij4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJGSU5BTkNFRk9STVRZUEUiIG5hbWU9IkZJTkFOQ0VGT1JNVFlQRSIgdmFsdWU9Im11bHRpc3RlcCI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iRGlzY291bnRQb3B1cE5ld1JlYmF0ZVNob3dUZXh0VXMiIHZhbHVlPSIwIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJEaXNjb3VudFBvcHVwVXNlZFJlYmF0ZVNob3dUZXh0VXMiIHZhbHVlPSIwIj4KCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ib2VtQ2VydGlmaWNhdGlvbiIgdmFsdWU9IjEiPgoKCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJjb29raWVMb2dUb2tlbiIgdmFsdWU9Ik5EUTFNREV5TURnMk1qWTUiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9ImNvb2tpZVRvQ2hlY2siIHZhbHVlPSIxIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJkaXNhYmxlSW50ZXJuYWxTZXNzaW9uIiB2YWx1ZT0iMSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iZGVhbGVyUHJvdmluY2VDb2RlIiB2YWx1ZT0iUUMiPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InNpdGVJRCIgdmFsdWU9IjI1MSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0ic2l0ZWFwaXVybCIgdmFsdWU9Imh0dHBzOi8vc2l0ZWFwaS5kMmNtZWRpYS5jYSI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iRmluYW5jZV9Gb3JtVHlwZSIgdmFsdWU9Im11bHRpc3RlcCI+CgogICAgPGRpdiBpZD0iZW1haWxTdWNjZXNzTWVzc2FnZSIgY2xhc3M9InJldmVhbC1tb2RhbCBlbWFpbC1jb25zZW50LWJveCIgc3R5bGU9IndpZHRoOjYwJTsiPgogICAgICA8ZGl2IGNsYXNzPSJpY29uLXRpdGxlIj4KICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPSJ0aXRsZS1pY29uIHN1Y2Nlc3MgLW1sMCI+PC9zcGFuPiAtLT4KICAgICAgICA8c3BhbiBjbGFzcz0idGl0bGUtdHh0Ij5Wb3RyZSBkZW1hbmRlIGEgYmllbiDDqXTDqSBlbnZvecOpZSE8L3NwYW4+CiAgICAgIDwvZGl2PgogICAgICA8cCBjbGFzcz0iZGVmYXVsdFN1Y2Nlc3MiPjxicj5Wb3RyZSBkZW1hbmRlIGEgw6l0w6kgZW52b3nDqWUgYXZlYyBzdWNjw6hzLiBVbiByZXByw6lzZW50YW50IHZvdXMgY29udGFjdGVyYSBzb3VzIHBldS48L3A+CiAgICAgIDxwIGNsYXNzPSJzZXJ2aWNlU3VjY2VzcyIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPjxicj5NZXJjaSBwb3VyIHZvdHJlIGRlbWFuZGUuIFVuIG1lbWJyZSBkZSBub3RyZSDDqXF1aXBlIGNvbW11bmlxdWVyYSBhdmVjIHZvdXMgc291cyBwZXUuPC9wPgogICAgICA8IS0tIDxhIGNsYXNzPSJjbG9zZS1yZXZlYWwtbW9kYWwiPiYjMjE1OzwvYT4gLS0+CiAgICAgIDxkaXYgY2xhc3M9ImVtYWlsLWNvbnNlbnQtYnRucyAtcHQyMCAtcmlnaHQgYW1wQ29uc2VudFJlc3BvbnNlU2VuZERpc21pc3MiPgogICAgICAgIDxhIGhyZWY9Ij9wYXRoPSMiIGNsYXNzPSIgLXVwcGVyY2FzZSBidG4tZGVmYXVsdCAiIG9uY2xpY2s9IiQoJy5jbG9zZS1yZXZlYWwtbW9kYWw6dmlzaWJsZScpLnRyaWdnZXIoJ2NsaWNrJyk7cmV0dXJuIGZhbHNlOyI+RmVybWVyPC9hPgogICAgICA8L2Rpdj4KICAgICAgPGZvcm0gaWQ9ImVtYWlsbXNnZnJtIiBjbGFzcz0iY29uZmlybV9odG1sIiB0YXJnZXQ9ImlmcmFtZSIgbWV0aG9kPSJwb3N0IiBhY3Rpb249Ii9jb25maXJtYXRpb24uaHRtbCI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImxhYmVsIiBjbGFzcz0ibGFiZWxlbWFpbCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNlY3Rpb24iIGNsYXNzPSJsYWJlbHNlY3Rpb24iIHZhbHVlPSJPY2Nhc2lvbiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJyYW5kIiBjbGFzcz0iYnJhbmRlbWFpbCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Im1vZGVsIiBjbGFzcz0ibW9kZWxlbWFpbCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InllYXIiIGNsYXNzPSJ5ZWFyZW1haWwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJnb29nbGVpZCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Imdvb2dsZWlkZDJjbWVkaWEiIHZhbHVlPSIiPgoJCQkJCQkgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFkd29yZHNjb25pZCIgdmFsdWU9Ijk0ODE2ODk1NSI+CgkJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhZHdvcmRzbGFiZWxpZCIgdmFsdWU9IkNzdmRDTGVCbEY0US05R1B4QU0iPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJiaW5nY29uaWQiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJiaW5nYWN0aW9uaWQiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJiaW5nZG9tYWluaWQiIHZhbHVlPSIiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWRyb2xsQWR2IiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWRyb2xsUGl4IiB2YWx1ZT0iIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZhY2Vib29rQ29uSWQiIHZhbHVlPSIyMDY4Mjg0MTMwOTY3ODAiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZG9tYWluIiB2YWx1ZT0iaHl1bmRhaXJlcGVudGlnbnkuY29tIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0icmVmZXJyZXIiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkZXBhcnRtZW50IiB2YWx1ZT0iTkVXIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibGVhZF9kZXBhcnRtZW50IiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNleHByZXNzIiBjbGFzcz0iaXNleHByZXNzIiB2YWx1ZT0iMCI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzcHJvbW8iIHZhbHVlPSIwIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNob21lcGFnZSIgdmFsdWU9IjAiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ0ZXN0bW9kZSIgY2xhc3M9InRlc3Rtb2RlIiB2YWx1ZT0iMCI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJsZWFkVHlwZSIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InBhZ2VJRCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImN1cnJlbnRVUkwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc0NvbmZpcm1Qb3B1cCIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjb25maXJtX2VtYWlsIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY29uZmlybV9maXJzdF9uYW1lIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY29uZmlybV9sYXN0X25hbWUiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjb25maXJtX3Bob25lX251bWJlciIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc0Z1bGxXaWR0aCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRlYWxlck5hbWUiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJidXR0b25Qb3NpdGlvbiIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzTW9iaWxlTmV3VkRQIiB2YWx1ZT0iMSI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZyb21BdXRvQXViYWluZSIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iTkVXIiBuYW1lPSJ0ZXh0Q2FyU2VjdGlvblR5cGUiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibGFuZyIgdmFsdWU9ImZyIj4KICAgICAgPC9mb3JtPgogICAgICA8aWZyYW1lIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIG5hbWU9ImlmcmFtZSIgZnJhbWVib3JkZXI9IjAiIHN0eWxlPSJ3aWR0aDoxcHg7aGVpZ2h0OjFweDsiPjwvaWZyYW1lPgogICAgPC9kaXY+CgogICAgPGRpdiBpZD0iZW1haWxGYWlsTWVzc2FnZSIgY2xhc3M9InJldmVhbC1tb2RhbCBlbWFpbC1jb25zZW50LWJveCIgc3R5bGU9IndpZHRoOjYwJTsiPgogICAgICA8c3BhbiBjbGFzcz0iZmFpbCI+VW5lIGVycmV1ciBzJ2VzdCBwcm9kdWl0ZTwvc3Bhbj4KICAgICAgPHA+Tm91cyBuJ2F2b25zIHBhcyBwdSBlbnZveWVyIHZvdHJlIG1lc3NhZ2UuIFMnaWwgdm91cyBwbGHDrnQgcmFmcmHDrmNoaXIgZXQgZXNzYXlleiDDoCBub3V2ZWF1PC9wPgogICAgICA8ZGl2IGNsYXNzPSJjbG9zZS1yZXZlYWwtbW9kYWwiPjxlbSBjbGFzcz0iZmEgZmEtdGltZXMtY2lyY2xlIj48L2VtPjwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSItcHQyMCAtcmlnaHQgYW1wQ29uc2VudFJlc3BvbnNlU2VuZERpc21pc3MiPgogICAgICAgIDxpbnB1dCB0eXBlPSJidXR0b24iIGNsYXNzPSIgLXVwcGVyY2FzZSBidG4tZGVmYXVsdCAiIG9uY2xpY2s9IiQoJyNlbWFpbEZhaWxNZXNzYWdlJykudHJpZ2dlcigncmV2ZWFsOmNsb3NlJyk7IiB2YWx1ZT0iRmVybWVyIj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCgoJCQoJCTxkaXYgaWQ9ImQyY0Zvb3RlckNvb2tpZURlbGV0ZSIgY2xhc3M9InJldmVhbC1tb2RhbCAiIHN0eWxlPSJ3aWR0aDozMjBweDtoZWlnaHQ6MjUwcHg7cGFkZGluZzozMHB4IDEwcHggODBweDsiIGRhdGEtbGF6eWxvYWRpZD0ibmV3Y2Fyc19kMmNmb290ZXJjb29raWVkZWxldGUiPgoJCQkKCQk8L2Rpdj4KCgkJPCEtLSBPTzo6MDBkMGQ0MjU5NzExMjA1OTA4MTkxYWFkYTdhYjRlNzYgLS0+CgoJCQoJCQkJCQoKCQkJCgkJPHN0eWxlPgoKCQkJI2xlYWREZWFsZXJBcHBvaW50bWVudCBzaWRlYmFyLWxjID4gKnsKCQkJCXdpZHRoOiBjbGFtcCgyMC41cmVtLCBtYXgoOTB2dywgMjAuNXJlbSksIDYwcmVtKTsKCQkJCWRpcmVjdGlvbjogcnRsOwoJCQl9CgoJCQkjbGVhZERlYWxlckFwcG9pbnRtZW50IHNpZGViYXItbGMgPiAqID4gKnsKCQkJCWRpcmVjdGlvbjogaW5pdGlhbDsKCQkJfQoKCQkJI2xlYWREZWFsZXJBcHBvaW50bWVudCBzaWRlYmFyLWxjID4gKiA+Omxhc3QtY2hpbGR7CgkJCQl3aWR0aDogMjByZW07CgkJCX0KCgkJCSNsZWFkRGVhbGVyQXBwb2ludG1lbnQgc2lkZWJhci1sY3sKCQkJCS0tc2lkZWJhci1icDogNDAlOwoJCQl9CgoJCQkjbGVhZERlYWxlckFwcG9pbnRtZW50IHN3aXRjaGVyLWxjewoJCQkJLS1zd2l0Y2gtYnA6IDM1cmVtOwoJCQl9CgoKCQkJI2Zvcm1EZWFsZXJBcHBvaW50bWVudCBsYWJlbHsKCQkJCW1heC13aWR0aDoxOXJlbTsKCQkJCWRpc3BsYXk6IGZsZXg7CgkJCQlmbGV4LXdyYXA6IHdyYXA7CgkJCQlqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CgkJCX0KCgkJCSNmb3JtRGVhbGVyQXBwb2ludG1lbnQgbGFiZWwgc3BhbnsKCQkJCXdpZHRoOjRyZW07CgkJCX0KCgoJCQkjZm9ybURlYWxlckFwcG9pbnRtZW50IFt0eXBlPSJzdWJtaXQiXXsKCQkJCW1heC13aWR0aDoxOXJlbTsKCQkJfQoKCQkJLmNvbnRhY3RNYXBDb250YWluZXJ7CgkJCQloZWlnaHQ6MTAwJTsKCQkJCW1pbi1oZWlnaHQ6bWluKDc1dmgsIDM4cmVtKTsKCQkJfQoKCQkJLmNvbnRhY3RGb3JtewoJCQkJYm9yZGVyLWNvbG9yOiNiYmI7CgkJCQlib3gtc2l6aW5nOiBib3JkZXItYm94OwoJCQl9CgoJCQkjbGVhZERlYWxlckFwcG9pbnRtZW50IC5jb250YWN0Rm9ybSBpbnB1dHsKCQkJCW1heC13aWR0aDogMTByZW07CgkJCX0KCgoKCQkJI2xlYWREZWFsZXJBcHBvaW50bWVudCAuZmxhdHBpY2tyLWRheS5zZWxlY3RlZHsKCQkJCWJhY2tncm91bmQtY29sb3I6IzAwMDsKCQkJCWJvcmRlci1jb2xvcjojMDAwOwoJCQl9CgoJCQkjbGVhZERlYWxlckFwcG9pbnRtZW50IC5mbGF0cGlja3ItdGltZSA6aXMoaW5wdXQ6aG92ZXIsaW5wdXQ6Zm9jdXMpewoJCQkJYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CgkJCX0KCgkJCS5mbGF0cGlja3ItbW9udGhEcm9wZG93bi1tb250aCwgLmZsYXRwaWNrci1tb250aERyb3Bkb3duLW1vbnRoc3sKCQkJCXRleHQtdHJhbnNmb3JtOnZhcigtLXR4dC11cHBlciwgdXBwZXJjYXNlKTsKCQkJfQoKCQkJLyogLmRwLWxhcmdlIC5mbGF0cGlja3ItY2FsZW5kYXJ7CgkJCQl3aWR0aDozMHJlbTsKCQkJCWZvbnQtc2l6ZToxLjFyZW07CgkJCX0KCgkJCS5kcC1sYXJnZSAuZmxhdHBpY2tyLXdlZWtkYXlzewoJCQkJaGVpZ2h0OjIuNXJlbTsKCQkJfQoKCQkJLmRwLWxhcmdlIC5mbGF0cGlja3ItZGF5ewoJCQkJbWF4LXdpZHRoOiA0cmVtOwoJCQkJaGVpZ2h0OiAyLjVyZW07CgkJCQlsaW5lLWhlaWdodDogMi41cmVtOwoJCQl9CgoJCQkuZHAtbGFyZ2UgOmlzKC5mbGF0cGlja3ItZGF5cywuZGF5Q29udGFpbmVyKSB7CgkJCQl3aWR0aDoxMDAlOwoJCQkJbWF4LXdpZHRoOiAzMHJlbTsKCQkJfSAqLwoJCTwvc3R5bGU+CgoJCQk8ZGl2IGlkPSJsZWFkRGVhbGVyQXBwb2ludG1lbnQiIGhpZGRlbj4KCQkJCTxkaXYgY2xhc3M9ImZsZXgtY2VudGVyIGFsaWduLWNlbnRlciI+CgkJCQk8c2lkZWJhci1sYz4KCQkJCQk8ZGl2PiA8IS0tIGludGVybWVkaWFyeSB3cmFwcGVyIC0tPgoKCQkJCQkJPGJveC1sYz4KCQkJCQkJCTxzdGFjay1sYyBjbGFzcz0iYWxpZ24tY2VudGVyIj4KCQkJCQkJCQk8dWwgY2xhc3M9ImNoZWNrbGlzdCAtZnMtMSAtLXMiPgoJCQkJCQkJCQk8bGk+VW5lIGV4cMOpcmllbmNlIHBlcnNvbm5hbGlzw6llIGTDqHMgdm90cmUgYXJyaXbDqWU8L2xpPgoJCQkJCQkJCQk8bGk+QXVjdW5lIGF0dGVudGUgY2hleiBsZSBjb25jZXNzaW9ubmFpcmU8L2xpPgoJCQkJCQkJCQk8bGk+QXVjdW5lIHBhcGVyYXNzZSBpbnV0aWxlOiBjb25jZW50cmV6LXZvdXMgc3VyIGxlIHbDqWhpY3VsZTwvbGk+CgkJCQkJCQkJPC91bD4KCQkJCQkJCQk8Ym94LWxjIGNsYXNzPSJmbGV4LWNlbnRlciI+CgkJCQkJCQkJCTxpbnB1dCBjbGFzcz0iZGF0ZXBpY2tlciBmbGF0cGlja3ItaW5wdXQiIGhpZGRlbiB0eXBlPSJ0ZXh0IiB0aXRsZT0iU2VsZWN0IERhdGUuLi4iIHBsYWNlaG9sZGVyPSJTZWxlY3QgRGF0ZS4uLiIgZGF0YS1pZD0iaW5saW5lIiByZWFkb25seT4KCQkJCQkJCQk8L2JveC1sYz4KCQkJCQkJCQk8Ym94LWxjIGNsYXNzPSJjb250YWN0Rm9ybSAtYiAtdy0xMDAgZmxleC1jZW50ZXIgLS1zMiI+CgkJCQkJCQkJCTxmb3JtIGlkPSJmb3JtRGVhbGVyQXBwb2ludG1lbnQiIGNsYXNzPSItdy0xMDAiIG5vdmFsaWRhdGU+CgkJCQkJCQkJCQk8c3RhY2stbGMgY2xhc3M9Ii0tczIgYWxpZ24tY2VudGVyIj4KCgkJCQkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1ib2xkIHR4dC1jZW50ZXIgdHh0LXVwcGVyIHNlbGVjdGVkVGltZSI+PC9zcGFuPgoJCQkJCQkJCQkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRhdGUiPgoKCQkJCQkJCQkJCQk8c3dpdGNoZXItbGM+CgkJCQkJCQkJCQkJCTxkaXYgY2xhc3M9ImZsZXgtY2VudGVyIj4gPCEtLSBpbnRlcm1lZGlhcnkgd3JhcHBlciAtLT4KCQkJCQkJCQkJCQkJCTxsYWJlbCBjbGFzcz0iZm9ybS1sYWJlbCBhbGlnbi1jZW50ZXIiPgoJCQkJCQkJCQkJCQkJCTxzcGFuPk5vbSAqPC9zcGFuPgoJCQkJCQkJCQkJCQkJCTxpbnB1dCByZXF1aXJlZCBjbGFzcz0iLXBoIiBuYW1lPSJuYW1lIiB0eXBlPSJ0ZXh0Ij4KCQkJCQkJCQkJCQkJCTwvbGFiZWw+CgoJCQkJCQkJCQkJCQkJPGxhYmVsIGNsYXNzPSJmb3JtLWxhYmVsIGFsaWduLWNlbnRlciI+CgkJCQkJCQkJCQkJCQkJPHNwYW4+Q291cnJpZWwgKjwvc3Bhbj4KCQkJCQkJCQkJCQkJCQk8aW5wdXQgbmFtZT0iZW1haWwiIHR5cGU9ImVtYWlsIiByZXF1aXJlZD4KCQkJCQkJCQkJCQkJCTwvbGFiZWw+CgoJCQkJCQkJCQkJCQkJPGxhYmVsIGNsYXNzPSJmb3JtLWxhYmVsIGFsaWduLWNlbnRlciI+CgkJCQkJCQkJCQkJCQkJPHNwYW4+VMOpbMOpcGhvbmUgKjwvc3Bhbj4KCQkJCQkJCQkJCQkJCQk8aW5wdXQgZGF0YS1wcmlzdGluZS1waG9uZSBuYW1lPSJwaG9uZW51bSIgdHlwZT0idGVsIiByZXF1aXJlZD4KCQkJCQkJCQkJCQkJCTwvbGFiZWw+CgkJCQkJCQkJCQkJCTwvZGl2PgoJCQkJCQkJCQkJCTwvc3dpdGNoZXItbGM+CgoJCQkJCQkJCQkJCTxidXR0b24gb25zdWJtaXQ9ImphdmFzY3JpcHQ6dm9pZCgpIiBjbGFzcz0iYnRuIGJ0bi1wcm9tbyAtZnMtbHIgLXctMTAwIHR4dC11cHBlciAtYm9sZCIgdHlwZT0ic3VibWl0Ij4KCQkJCQkJCQkJCQkJUHJlbmRyZSByZW5kZXotdm91cwoJCQkJCQkJCQkJCTwvYnV0dG9uPgoKCQkJCQkJCQkJCQk8aW5wdXQgbmFtZT0iZGF0YSIgdHlwZT0iaGlkZGVuIiBkYXRhLW1ha2U9IiIgZGF0YS1tb2RlbD0iIiBkYXRhLXllYXI9IiIgZGF0YS10cmltPSIiIGRhdGEtY29uZGl0aW9uPSIiIGRhdGEta209IiIgZGF0YS12aW49IiIgZGF0YS1zdG9jay1udW1iZXI9IiI+CgoJCQkJCQkJCQkJCTxpbnB1dCBuYW1lPSJzZW5kVG8iIHZhbHVlPSIiIHR5cGU9ImhpZGRlbiI+CgkJCQkJCQkJCQkJPGlucHV0IG5hbWU9InNlbmRUb0FERkZvcm1hdCIgdmFsdWU9ImJhNjIwYzNmMmVlNTc1NGNmYWIzY2ZhZDE0MTc1NzNjfDMyNTU2Njk4ODYiIHR5cGU9ImhpZGRlbiI+CgkJCQkJCQkJCQkJPGlucHV0IG5hbWU9Im1haWxJRCIgdmFsdWU9IkRlYWxlckFwcG9pbnRtZW50IiB0eXBlPSJoaWRkZW4iPgoJCQkJCQkJCQkJCTxpbnB1dCBuYW1lPSJwb3B1cE9mZmVyVHlwZSIgdmFsdWU9IkRlYWxlckFwcG9pbnRtZW50QWxsIiB0eXBlPSJoaWRkZW4iPgoKCQkJCQkJCQkJCQk8ZGl2IGNsYXNzPSJsZWFkRW1haWwiIGhpZGRlbj4KCQkJCQkJCQkJCQkJPHNwYW4gZGF0YS1zdWJqZWN0PkxlYWQgOiBEZW1hbmRlIGRlIHJlbmRlei12b3VzPC9zcGFuPgoJCQkJCQkJCQkJCQk8c3BhbiBkYXRhLWJvZHk+Qm9uam91ciw8YnI+PGJyPlVuIGNsaWVudCBwb3RlbnRpZWwgYXlhbnQgdmlzaXTDqSB2b3RyZSBzaXRlIHdlYiwgYWltZXJhaXQgcHJlbmRyZSB1biByZW5kZXotdm91czo8YnI+PGJyPjx1PlJlbnNlaWduZW1lbnRzIHN1ciBsZSB2w6loaWN1bGU8L3U+Ojxicj5Nb2TDqGxlOiA8c3Ryb25nPiAgPC9zdHJvbmc+PGJyPk5JVjogPHN0cm9uZz57JFZJTn08L3N0cm9uZz48YnI+TnVtw6lybyBkZSBzdG9jazogPHN0cm9uZz57JFNUT0NLTlVNQkVSfTwvc3Ryb25nPjxicj5LaWxvbcOodHJlczogPHN0cm9uZz57JEtNfTwvc3Ryb25nPjxicj48YnI+PHU+RGF0ZSBkdSByZW5kZXotdm91cyBzb3VoYWl0w6k8L3U+IDogPHN0cm9uZz57JERBVEV9PC9zdHJvbmc+PGJyPjxicj48dT5SZW5zZWlnbmVtZW50cyBzdXIgbGUgdmlzaXRldXI8L3U+Ojxicj5Ob206IDxzdHJvbmc+eyROQU1FfTwvc3Ryb25nPjxicj5Db3VycmllbDogPHN0cm9uZz48YSBocmVmPSI\/cGF0aD1tYWlsdG86JTdCJTI0RU1BSUwlN0QiPnskRU1BSUx9PC9hPjwvc3Ryb25nPjxicj5Uw6lsw6lwaG9uZTogPHN0cm9uZz48YSBocmVmPSI\/cGF0aD10ZWw6JTdCJTI0UEhPTkVOVU0lN0QiPnskUEhPTkVOVU19PC9hPjwvc3Ryb25nPiB7JFBIT05FX1ZBTElEQVRJT05fQVRURU1QVFN9PGJyPjxicj48dT5Db25jZXNzaW9uPC91Pjo8YnI+Tm9tIDogPHN0cm9uZz57JERFQUxFUk5BTUV9PC9zdHJvbmc+PGJyPjxicj48ZGl2IHN0eWxlPSIjI1NFT0JMT0NLRElTUExBWSMjIj5Tb3VyY2UgTcOpZGlhOiA8c3Ryb25nPnskVVRNREVUQUlMU308L3N0cm9uZz48YnI+TmF2aWdhdGV1cjogPHN0cm9uZz57JFVTRVJBR0VOVH0gLSA8L3N0cm9uZz48YnI+SGlzdG9yaXF1ZSBkZSBuYXZpZ2F0aW9uOiA8c3Ryb25nPjxhIGhyZWY9Ij9wYXRoPSU3QiUyNFVVTElOSyU3RCIgcmVsPSJub2ZvbGxvdyB1Z2Mgc3BvbnNvcmVkIG5vaW5kZXgiIHN0eWxlPSJjb2xvcjpibGFjazsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyI+Q2xpcXVleiBpY2k8L2E+PC9zdHJvbmc+PGJyPjwvZGl2PkNvbnNlbnRlbWVudDogPHN0cm9uZz57JENPTlNFTlRfREVUQUlMU308L3N0cm9uZz57JFBVUkNIQVNFX0lOVEVOVH08L3NwYW4+CgkJCQkJCQkJCQkJPC9kaXY+CgoJCQkJCQkJCQkJPC9zdGFjay1sYz4KCQkJCQkJCQkJPC9mb3JtPgoJCQkJCQkJCTwvYm94LWxjPgoJCQkJCQkJPC9zdGFjay1sYz4KCQkJCQkJPC9ib3gtbGM+CgoJCQkJCQk8ZGl2PgoJCQkJCQkJPHN0YWNrLWxjIGNsYXNzPSJjb250YWN0TWFwQ29udGFpbmVyIC0tcy04IC1iZy1saWdodCIgaWQ9ImZvb3Rlckdvb2dsZU1hcEhvdXJzQ29udGFpbmVyIj4KCgkJCQkJCQkJCgkJCTxpZnJhbWUgdGl0bGU9Ikdvb2dsZSBNYXAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZyYW1lYm9yZGVyPSIwIiBjbGFzcz0iIGxhenlsb2FkZWQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9tYXBzL2VtYmVkL3YxL3BsYWNlP3E9cGxhY2VfaWQlM0FDaElKSzJWUDlJcmx5RXdSOEtjS3FJeDE3aWMmYW1wO2tleT1BSXphU3lDcktENlpQck9MZ21HV3JXX1lSMDlfZW15aVZxbDdfX2cmYW1wO3pvb209MTQmYW1wO3JlZ2lvbj1DQSZhbXA7bGFuZ3VhZ2U9ZnIiIGFsbG93ZnVsbHNjcmVlbj0iIj48L2lmcmFtZT4KCgkJCQkJCQkJPGJveC1sYyBjbGFzcz0iY29udGFjdEJsb2NrIC0tczIgLW0wIj4KCQkJCQkJCQkJPHN0YWNrLWxjIGNsYXNzPSItLXMzIj4KCQkJCQkJCQkJCTxkaXY+CgkJCQkJCQkJCQkJPHN0YWNrLWxjIGNsYXNzPSItLXMtOCI+CgkJCQkJCQkJCQkJCTxzcGFuIGNsYXNzPSItLWZzMCI+SHl1bmRhaSBSZXBlbnRpZ255PC9zcGFuPgoJCQkJCQkJCQkJCQk8YSBocmVmPSJodHRwczovL3d3dy5nb29nbGUuY2EvbWFwcy9kaXIvP2FwaT0xJmFtcDtkZXN0aW5hdGlvbj1IeXVuZGFpJTJCUmVwZW50aWdueSUyQzg0NSsrcnVlK05vdHJlLURhbWUlMkNSZXBlbnRpZ255JTJDUUMlMkNKNVkrMUM0JmFtcDtobD1mciZhbXA7dD1tJmFtcDt6PTE2JmFtcDtpZT1VVEY4JmFtcDtkZXN0aW5hdGlvbl9wbGFjZV9pZD1DaElKSzJWUDlJcmx5RXdSOEtjS3FJeDE3aWMiIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0iLS1mcy0xIj4KCQkJCQkJCQkJCQkJCTxzcGFuPjg0NSwgcnVlIE5vdHJlLURhbWU8L3NwYW4+CgkJCQkJCQkJCQkJCQk8c3Bhbj5SZXBlbnRpZ255LCBRQzwvc3Bhbj4KCQkJCQkJCQkJCQkJCTxzcGFuPko1WSAxQzQ8L3NwYW4+CgkJCQkJCQkJCQkJCTwvYT4KCQkJCQkJCQkJCQk8L3N0YWNrLWxjPgoJCQkJCQkJCQkJPC9kaXY+CgoJCQkJCQkJCQkJPGRpdj4KCQkJCQkJCQkJCQk8c3RhY2stbGMgY2xhc3M9Ii0tcy04Ij4KCQkJCQkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1ib2xkIj5Uw6lsw6lwaG9uZTwvc3Bhbj4KCQkJCQkJCQkJCQkJPHNwYW4gY2xhc3M9Ii0tZnMtMSI+CgkJCQkJCQkJCQkJCQk8YSBocmVmPSI\/cGF0aD10ZWw6NDUwJTIwNTgyLTMxODIiIGRhdGEtZGVwYXJ0bWVudD0iU2FsZXMiIHRpdGxlPSJDb250YWN0IFBob25lIj40NTAgNTgyLTMxODI8L2E+CgkJCQkJCQkJCQkJCTwvc3Bhbj4KCQkJCQkJCQkJCQk8L3N0YWNrLWxjPgoJCQkJCQkJCQkJPC9kaXY+CgoJCQkJCQkJCQkJPGRpdj4KCQkJCQkJCQkJCQk8c3RhY2stbGMgY2xhc3M9Ii0tcy04Ij4KCQkJCQkJCQkJCQkJPHNwYW4gY2xhc3M9Ii1ib2xkIj5IZXVyZXM8L3NwYW4+CgkJCQkJCQkJCQkJCQkJCTxkaXYgaWQ9Iml0ZW1fbmV3Ij4KCQkJCTxzdGFjay1sYyBjbGFzcz0iaG91cnNMaXN0Ij4KCQkJCQkJCQkJPGJveC1sYyBjbGFzcz0iZmxleC1iZXR3ZWVuIC0tZnMtMSAtLXMtOCIgZGF0YS1taW5ob3VyPSIwOTowMCIgZGF0YS1tYXhob3VyPSIyMDowMCIgZGF0YS1jbG9zZWQ9IjAiPgoJCQkJCTxzcGFuIGNsYXNzPSJkYXkiPkx1bmRpPC9zcGFuPgoJCQkJCTxzcGFuIGNsYXNzPSJob3VycyI+MDk6MDAgLSAyMDowMDwvc3Bhbj4KCQkJCTwvYm94LWxjPgkJCQk8Ym94LWxjIGNsYXNzPSJmbGV4LWJldHdlZW4gLS1mcy0xIC0tcy04IiBkYXRhLW1pbmhvdXI9IjA5OjAwIiBkYXRhLW1heGhvdXI9IjIwOjAwIiBkYXRhLWNsb3NlZD0iMCI+CgkJCQkJPHNwYW4gY2xhc3M9ImRheSI+TWFyZGk8L3NwYW4+CgkJCQkJPHNwYW4gY2xhc3M9ImhvdXJzIj4wOTowMCAtIDIwOjAwPC9zcGFuPgoJCQkJPC9ib3gtbGM+CQkJCTxib3gtbGMgY2xhc3M9ImZsZXgtYmV0d2VlbiAtLWZzLTEgLS1zLTgiIGRhdGEtbWluaG91cj0iMDk6MDAiIGRhdGEtbWF4aG91cj0iMjA6MDAiIGRhdGEtY2xvc2VkPSIwIj4KCQkJCQk8c3BhbiBjbGFzcz0iZGF5Ij5NZXJjcmVkaTwvc3Bhbj4KCQkJCQk8c3BhbiBjbGFzcz0iaG91cnMiPjA5OjAwIC0gMjA6MDA8L3NwYW4+CgkJCQk8L2JveC1sYz4JCQkJPGJveC1sYyBjbGFzcz0iZmxleC1iZXR3ZWVuIC0tZnMtMSAtLXMtOCIgZGF0YS1taW5ob3VyPSIwOTowMCIgZGF0YS1tYXhob3VyPSIyMDowMCIgZGF0YS1jbG9zZWQ9IjAiPgoJCQkJCTxzcGFuIGNsYXNzPSJkYXkiPkpldWRpPC9zcGFuPgoJCQkJCTxzcGFuIGNsYXNzPSJob3VycyI+MDk6MDAgLSAyMDowMDwvc3Bhbj4KCQkJCTwvYm94LWxjPgkJCQk8Ym94LWxjIGNsYXNzPSJmbGV4LWJldHdlZW4gLS1mcy0xIC0tcy04IiBkYXRhLW1pbmhvdXI9IjA5OjAwIiBkYXRhLW1heGhvdXI9IjE4OjAwIiBkYXRhLWNsb3NlZD0iMCI+CgkJCQkJPHNwYW4gY2xhc3M9ImRheSI+VmVuZHJlZGk8L3NwYW4+CgkJCQkJPHNwYW4gY2xhc3M9ImhvdXJzIj4wOTowMCAtIDE4OjAwPC9zcGFuPgoJCQkJPC9ib3gtbGM+CQkJCTxib3gtbGMgY2xhc3M9ImZsZXgtYmV0d2VlbiAtLWZzLTEgLS1zLTgiIGRhdGEtbWluaG91cj0iMCIgZGF0YS1tYXhob3VyPSIwIiBkYXRhLWNsb3NlZD0iMSI+CgkJCQkJPHNwYW4gY2xhc3M9ImRheSI+U2FtZWRpPC9zcGFuPgoJCQkJCTxzcGFuIGNsYXNzPSJob3VycyI+RmVybcOpPC9zcGFuPgoJCQkJPC9ib3gtbGM+CQkJCTxib3gtbGMgY2xhc3M9ImZsZXgtYmV0d2VlbiAtLWZzLTEgLS1zLTgiIGRhdGEtbWluaG91cj0iMCIgZGF0YS1tYXhob3VyPSIwIiBkYXRhLWNsb3NlZD0iMSI+CgkJCQkJPHNwYW4gY2xhc3M9ImRheSI+RGltYW5jaGU8L3NwYW4+CgkJCQkJPHNwYW4gY2xhc3M9ImhvdXJzIj5GZXJtw6k8L3NwYW4+CgkJCQk8L2JveC1sYz4KCQkJCTwvc3RhY2stbGM+CgkJCTwvZGl2PgoJCQkJCQkJCQkJCTwvc3RhY2stbGM+CgkJCQkJCQkJCQk8L2Rpdj4KCgkJCQkJCQkJCTwvc3RhY2stbGM+CgkJCQkJCQkJPC9ib3gtbGM+CgoJCQkJCQkJPC9zdGFjay1sYz4KCQkJCQkJPC9kaXY+CgoJCQkJCTwvZGl2PgoJCQkJPC9zaWRlYmFyLWxjPgoJCQkJPC9kaXY+CgkJCQk8L2Rpdj4KCgkJCQkKCgkJCQk8IS0tIE9POjo5OGViZDlhYTMyNDAxNDMwYWU1YjZkOTdkODk4ODdhMSAtLT4JPCEtLSBPTzo6ZmViZDljYzliMTk4NDRiMzJjNzQ0MzNjNGE4NWE5MmEgLS0+CTwhLS0gT086OmY3NzdjMmZhMDQ5MGZmMDhkODYxODZjYjI0MzRmN2Y3IC0tPgoKICAgICAgIDwhLS0gTUFJTiBQT1BVUCBuZXcgQ29udGFjdFBvcHVwIC0tPgoJCQoJCTxkaXYgaWQ9ImNvbnRhY3Rwb3B1cCIgY2xhc3M9InJldmVhbC1tb2RhbCAiIHN0eWxlPSJ3aWR0aDo4MCU7IiBkYXRhLWxhenlsb2FkaWQ9Im5ld2NhcnNfY29udGFjdHBvcHVwIj4KCQkJCgkJPC9kaXY+CgoJCTwhLS0gT086OjU2Y2QwZDMzMDEzY2E0YmMyMjIwMjIxYjY3MTY1NjJkIC0tPgoKCQkKCiAgICA8ZGl2IGlkPSJlbWFpbFN1Y2Nlc3NNZXNzYWdlX2NvbnRhY3Rwb3B1cCIgY2xhc3M9InJldmVhbC1tb2RhbCBlbWFpbC1jb25zZW50LWJveCIgc3R5bGU9IndpZHRoOjYwJTsiPgogICAgICA8ZGl2IGNsYXNzPSJpY29uLXRpdGxlIj4KICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPSJ0aXRsZS1pY29uIHN1Y2Nlc3MgLW1sMCI+PC9zcGFuPiAtLT4KICAgICAgICA8c3BhbiBjbGFzcz0idGl0bGUtdHh0Ij5Wb3RyZSBtZXNzYWdlIGEgYmllbiDDqXTDqSBlbnZvecOpITwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICAgIDxwIGNsYXNzPSJkZWZhdWx0U3VjY2VzcyI+PGJyPk1lcmNpISBVbiBtZW1icmUgZGUgbm90cmUgw6lxdWlwZSB2b3VzIGNvbnRhY3RlcmEgc291cyBwZXUuPC9wPgogICAgICA8cCBjbGFzcz0ic2VydmljZVN1Y2Nlc3MiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij48YnI+TWVyY2khIFVuIG1lbWJyZSBkZSBub3RyZSDDqXF1aXBlIHZvdXMgY29udGFjdGVyYSBzb3VzIHBldS48L3A+CiAgICAgIDwhLS0gPGEgY2xhc3M9ImNsb3NlLXJldmVhbC1tb2RhbCI+JiMyMTU7PC9hPiAtLT4KICAgICAgPGRpdiBjbGFzcz0iZW1haWwtY29uc2VudC1idG5zIC1wdDIwIC1yaWdodCBhbXBDb25zZW50UmVzcG9uc2VTZW5kRGlzbWlzcyI+CiAgICAgICAgPGEgaHJlZj0iP3BhdGg9IyIgY2xhc3M9IiAtdXBwZXJjYXNlIGJ0bi1kZWZhdWx0ICIgb25jbGljaz0iJCgnLmNsb3NlLXJldmVhbC1tb2RhbDp2aXNpYmxlJykudHJpZ2dlcignY2xpY2snKTtyZXR1cm4gZmFsc2U7Ij5GZXJtZXI8L2E+CiAgICAgIDwvZGl2PgogICAgICA8Zm9ybSBpZD0iZW1haWxtc2dmcm1fY29udGFjdHBvcHVwIiBjbGFzcz0iY29uZmlybV9odG1sIiB0YXJnZXQ9ImlmcmFtZSIgbWV0aG9kPSJwb3N0IiBhY3Rpb249Ii9jb25maXJtYXRpb24uaHRtbCI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImxhYmVsIiBjbGFzcz0ibGFiZWxlbWFpbCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNlY3Rpb24iIGNsYXNzPSJsYWJlbHNlY3Rpb24iIHZhbHVlPSJPY2Nhc2lvbiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJyYW5kIiBjbGFzcz0iYnJhbmRlbWFpbCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Im1vZGVsIiBjbGFzcz0ibW9kZWxlbWFpbCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InllYXIiIGNsYXNzPSJ5ZWFyZW1haWwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJnb29nbGVpZCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Imdvb2dsZWlkZDJjbWVkaWEiIHZhbHVlPSIiPgoJCQkJCQkgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFkd29yZHNjb25pZCIgdmFsdWU9Ijk0ODE2ODk1NSI+CgkJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhZHdvcmRzbGFiZWxpZCIgdmFsdWU9IkNzdmRDTGVCbEY0US05R1B4QU0iPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJiaW5nY29uaWQiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJiaW5nYWN0aW9uaWQiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJiaW5nZG9tYWluaWQiIHZhbHVlPSIiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWRyb2xsQWR2IiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWRyb2xsUGl4IiB2YWx1ZT0iIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZhY2Vib29rQ29uSWQiIHZhbHVlPSIyMDY4Mjg0MTMwOTY3ODAiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZG9tYWluIiB2YWx1ZT0iaHl1bmRhaXJlcGVudGlnbnkuY29tIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0icmVmZXJyZXIiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkZXBhcnRtZW50IiB2YWx1ZT0iTkVXIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibGVhZF9kZXBhcnRtZW50IiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNleHByZXNzIiBjbGFzcz0iaXNleHByZXNzIiB2YWx1ZT0iMCI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzcHJvbW8iIHZhbHVlPSIwIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNob21lcGFnZSIgdmFsdWU9IjAiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ0ZXN0bW9kZSIgY2xhc3M9InRlc3Rtb2RlIiB2YWx1ZT0iMCI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJsZWFkVHlwZSIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InBhZ2VJRCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImN1cnJlbnRVUkwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc0NvbmZpcm1Qb3B1cCIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjb25maXJtX2VtYWlsIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY29uZmlybV9maXJzdF9uYW1lIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY29uZmlybV9sYXN0X25hbWUiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjb25maXJtX3Bob25lX251bWJlciIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc0Z1bGxXaWR0aCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRlYWxlck5hbWUiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJidXR0b25Qb3NpdGlvbiIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzTW9iaWxlTmV3VkRQIiB2YWx1ZT0iMSI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZyb21BdXRvQXViYWluZSIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iTkVXIiBuYW1lPSJ0ZXh0Q2FyU2VjdGlvblR5cGUiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibGFuZyIgdmFsdWU9ImZyIj4KICAgICAgPC9mb3JtPgogICAgICA8aWZyYW1lIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIG5hbWU9ImlmcmFtZSIgZnJhbWVib3JkZXI9IjAiIHN0eWxlPSJ3aWR0aDoxcHg7aGVpZ2h0OjFweDsiPjwvaWZyYW1lPgogICAgPC9kaXY+CgogICAgPGRpdiBpZD0iZW1haWxGYWlsTWVzc2FnZV9jb250YWN0cG9wdXAiIGNsYXNzPSJyZXZlYWwtbW9kYWwgZW1haWwtY29uc2VudC1ib3giIHN0eWxlPSJ3aWR0aDo2MCU7Ij4KICAgICAgPHNwYW4gY2xhc3M9ImZhaWwiPlVuZSBlcnJldXIgcydlc3QgcHJvZHVpdGU8L3NwYW4+CiAgICAgIDxwPk5vdXMgbidhdm9ucyBwYXMgcHUgZW52b3llciB2b3RyZSBtZXNzYWdlLiBTJ2lsIHZvdXMgcGxhw650IHJhZnJhw65jaGlyIGV0IGVzc2F5ZXogw6Agbm91dmVhdTwvcD4KICAgICAgPGRpdiBjbGFzcz0iY2xvc2UtcmV2ZWFsLW1vZGFsIj48ZW0gY2xhc3M9ImZhIGZhLXRpbWVzLWNpcmNsZSI+PC9lbT48L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iLXB0MjAgLXJpZ2h0IGFtcENvbnNlbnRSZXNwb25zZVNlbmREaXNtaXNzIj4KICAgICAgICA8aW5wdXQgdHlwZT0iYnV0dG9uIiBjbGFzcz0iIC11cHBlcmNhc2UgYnRuLWRlZmF1bHQgIiBvbmNsaWNrPSIkKCcjZW1haWxGYWlsTWVzc2FnZScpLnRyaWdnZXIoJ3JldmVhbDpjbG9zZScpOyIgdmFsdWU9IkZlcm1lciI+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgoKCQkJCTwhLS0gT086OjNkNzg1NDI3NDEyNWVhNjliMDI0NTc1NjQ2YTY5OGRjIC0tPgoJCQo8IS0tIEVORCBuZXcgLS0+Cgo8IS0tIENSRURJVCBTQ09SRSBQT1BVUCAtLT4KCQkKCQk8ZGl2IGlkPSJjcmVkaXRTY29yZVBvcHVwQ29udGFpbmVyIiBjbGFzcz0icmV2ZWFsLW1vZGFsICIgc3R5bGU9IndpZHRoOjMyMHB4O2hlaWdodDo2MDBweDsiIGRhdGEtbGF6eWxvYWRpZD0ibmV3Y2Fyc19jcmVkaXRzY29yZXBvcHVwY29udGFpbmVyIj4KCQkJCgkJPC9kaXY+CgoJCTwhLS0gT086OjNmYmI2ZDg1NzQwNmU4YzAwOGFjOTRmZDllZTRjZmNmIC0tPgoKCQkKCiAgICA8ZGl2IGlkPSJlbWFpbFN1Y2Nlc3NNZXNzYWdlX2NyZWRpdFNjb3JlUG9wdXBDb250YWluZXIiIGNsYXNzPSJyZXZlYWwtbW9kYWwgZW1haWwtY29uc2VudC1ib3giIHN0eWxlPSJ3aWR0aDo2MCU7Ij4KICAgICAgPGRpdiBjbGFzcz0iaWNvbi10aXRsZSI+CiAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz0idGl0bGUtaWNvbiBzdWNjZXNzIC1tbDAiPjwvc3Bhbj4gLS0+CiAgICAgICAgPHNwYW4gY2xhc3M9InRpdGxlLXR4dCI+Vm90cmUgZGVtYW5kZSBhIGJpZW4gw6l0w6kgZW52b3nDqWUhPC9zcGFuPgogICAgICA8L2Rpdj4KICAgICAgPHAgY2xhc3M9ImRlZmF1bHRTdWNjZXNzIj48YnI+TWVyY2khIFVuIGNvbnNlaWxsZXIgY29tbXVuaXF1ZXJhIGF2ZWMgdm91cyBwb3VyIHZvdXMgZG9ubmVyIGxlcyBkw6l0YWlscyBzdXIgdm90cmUgcG90ZW50aWVsIGRlIGNyw6lkaXQuPC9wPgogICAgICA8cCBjbGFzcz0ic2VydmljZVN1Y2Nlc3MiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij48YnI+TWVyY2khIFVuIGNvbnNlaWxsZXIgY29tbXVuaXF1ZXJhIGF2ZWMgdm91cyBwb3VyIHZvdXMgZG9ubmVyIGxlcyBkw6l0YWlscyBzdXIgdm90cmUgcG90ZW50aWVsIGRlIGNyw6lkaXQuPC9wPgogICAgICA8IS0tIDxhIGNsYXNzPSJjbG9zZS1yZXZlYWwtbW9kYWwiPiYjMjE1OzwvYT4gLS0+CiAgICAgIDxkaXYgY2xhc3M9ImVtYWlsLWNvbnNlbnQtYnRucyAtcHQyMCAtcmlnaHQgYW1wQ29uc2VudFJlc3BvbnNlU2VuZERpc21pc3MiPgogICAgICAgIDxhIGhyZWY9Ij9wYXRoPSMiIGNsYXNzPSIgLXVwcGVyY2FzZSBidG4tZGVmYXVsdCAiIG9uY2xpY2s9IiQoJy5jbG9zZS1yZXZlYWwtbW9kYWw6dmlzaWJsZScpLnRyaWdnZXIoJ2NsaWNrJyk7cmV0dXJuIGZhbHNlOyI+RmVybWVyPC9hPgogICAgICA8L2Rpdj4KICAgICAgPGZvcm0gaWQ9ImVtYWlsbXNnZnJtX2NyZWRpdFNjb3JlUG9wdXBDb250YWluZXIiIGNsYXNzPSJjb25maXJtX2h0bWwiIHRhcmdldD0iaWZyYW1lIiBtZXRob2Q9InBvc3QiIGFjdGlvbj0iL2NvbmZpcm1hdGlvbi5odG1sIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibGFiZWwiIGNsYXNzPSJsYWJlbGVtYWlsIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic2VjdGlvbiIgY2xhc3M9ImxhYmVsc2VjdGlvbiIgdmFsdWU9Ik9jY2FzaW9uIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYnJhbmQiIGNsYXNzPSJicmFuZGVtYWlsIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibW9kZWwiIGNsYXNzPSJtb2RlbGVtYWlsIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ieWVhciIgY2xhc3M9InllYXJlbWFpbCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Imdvb2dsZWlkIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZ29vZ2xlaWRkMmNtZWRpYSIgdmFsdWU9IiI+CgkJCQkJCSAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWR3b3Jkc2NvbmlkIiB2YWx1ZT0iOTQ4MTY4OTU1Ij4KCQkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFkd29yZHNsYWJlbGlkIiB2YWx1ZT0iQ3N2ZENMZUJsRjRRLTlHUHhBTSI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJpbmdjb25pZCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJpbmdhY3Rpb25pZCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJpbmdkb21haW5pZCIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhZHJvbGxBZHYiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhZHJvbGxQaXgiIHZhbHVlPSIiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZmFjZWJvb2tDb25JZCIgdmFsdWU9IjIwNjgyODQxMzA5Njc4MCI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkb21haW4iIHZhbHVlPSJoeXVuZGFpcmVwZW50aWdueS5jb20iPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJyZWZlcnJlciIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRlcGFydG1lbnQiIHZhbHVlPSJORVciPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJsZWFkX2RlcGFydG1lbnQiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc2V4cHJlc3MiIGNsYXNzPSJpc2V4cHJlc3MiIHZhbHVlPSIwIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNwcm9tbyIgdmFsdWU9IjAiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc2hvbWVwYWdlIiB2YWx1ZT0iMCI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InRlc3Rtb2RlIiBjbGFzcz0idGVzdG1vZGUiIHZhbHVlPSIwIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImxlYWRUeXBlIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0icGFnZUlEIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY3VycmVudFVSTCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzQ29uZmlybVBvcHVwIiB2YWx1ZT0iIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNvbmZpcm1fZW1haWwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjb25maXJtX2ZpcnN0X25hbWUiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjb25maXJtX2xhc3RfbmFtZSIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNvbmZpcm1fcGhvbmVfbnVtYmVyIiB2YWx1ZT0iIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzRnVsbFdpZHRoIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZGVhbGVyTmFtZSIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJ1dHRvblBvc2l0aW9uIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNNb2JpbGVOZXdWRFAiIHZhbHVlPSIxIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZnJvbUF1dG9BdWJhaW5lIiB2YWx1ZT0iIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJORVciIG5hbWU9InRleHRDYXJTZWN0aW9uVHlwZSIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJsYW5nIiB2YWx1ZT0iZnIiPgogICAgICA8L2Zvcm0+CiAgICAgIDxpZnJhbWUgd2lkdGg9IjEiIGhlaWdodD0iMSIgbmFtZT0iaWZyYW1lIiBmcmFtZWJvcmRlcj0iMCIgc3R5bGU9IndpZHRoOjFweDtoZWlnaHQ6MXB4OyI+PC9pZnJhbWU+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGlkPSJlbWFpbEZhaWxNZXNzYWdlX2NyZWRpdFNjb3JlUG9wdXBDb250YWluZXIiIGNsYXNzPSJyZXZlYWwtbW9kYWwgZW1haWwtY29uc2VudC1ib3giIHN0eWxlPSJ3aWR0aDo2MCU7Ij4KICAgICAgPHNwYW4gY2xhc3M9ImZhaWwiPlVuZSBlcnJldXIgcydlc3QgcHJvZHVpdGU8L3NwYW4+CiAgICAgIDxwPk5vdXMgbidhdm9ucyBwYXMgcHUgZW52b3llciB2b3RyZSBtZXNzYWdlLiBTJ2lsIHZvdXMgcGxhw650IHJhZnJhw65jaGlyIGV0IGVzc2F5ZXogw6Agbm91dmVhdTwvcD4KICAgICAgPGRpdiBjbGFzcz0iY2xvc2UtcmV2ZWFsLW1vZGFsIj48ZW0gY2xhc3M9ImZhIGZhLXRpbWVzLWNpcmNsZSI+PC9lbT48L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iLXB0MjAgLXJpZ2h0IGFtcENvbnNlbnRSZXNwb25zZVNlbmREaXNtaXNzIj4KICAgICAgICA8aW5wdXQgdHlwZT0iYnV0dG9uIiBjbGFzcz0iIC11cHBlcmNhc2UgYnRuLWRlZmF1bHQgIiBvbmNsaWNrPSIkKCcjZW1haWxGYWlsTWVzc2FnZScpLnRyaWdnZXIoJ3JldmVhbDpjbG9zZScpOyIgdmFsdWU9IkZlcm1lciI+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgoKCQkJCTwhLS0gT086OmQ2NmY1ZDk0ODU5NzQyYzZhNTFmOGJhZDljMGRmYWUwIC0tPgoJCQo8IS0tIEVORCBDUkVESVQgU0NPUkUgUE9QVVAgLS0+Cgo8IS0tIENSRURJVCBTQ09SRSBDT05GSVJNIFBPUFVQIC0tPgoKPCEtLSBFTkQgQ1JFRElUIFNDT1JFIENPTkZJUk0gUE9QVVAgLS0+CgoKCQkKCQk8ZGl2IGlkPSJ2aXNpdENvbnRhY3RGb3JtQ29udGFpbmVyTmV3IiBjbGFzcz0icmV2ZWFsLW1vZGFsICIgc3R5bGU9IndpZHRoOjIyNXB4O2hlaWdodDoyODVweDsiIGRhdGEtbGF6eWxvYWRpZD0ibmV3Y2Fyc192aXNpdGNvbnRhY3Rmb3JtY29udGFpbmVybmV3Ij4KCQkJCgkJPC9kaXY+CgoJCTwhLS0gT086OmY4YzYxNmUxYjY2OGEzZWMxMDkzMjE0ZTA4OTVkODkzIC0tPgoKCQkKCiAgICA8ZGl2IGlkPSJlbWFpbFN1Y2Nlc3NNZXNzYWdlX3Zpc2l0Q29udGFjdEZvcm1Db250YWluZXJOZXciIGNsYXNzPSJyZXZlYWwtbW9kYWwgZW1haWwtY29uc2VudC1ib3giIHN0eWxlPSJ3aWR0aDo2MCU7Ij4KICAgICAgPGRpdiBjbGFzcz0iaWNvbi10aXRsZSI+CiAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz0idGl0bGUtaWNvbiBzdWNjZXNzIC1tbDAiPjwvc3Bhbj4gLS0+CiAgICAgICAgPHNwYW4gY2xhc3M9InRpdGxlLXR4dCI+Vm90cmUgZGVtYW5kZSBhIGJpZW4gw6l0w6kgZW52b3nDqWUhPC9zcGFuPgogICAgICA8L2Rpdj4KICAgICAgPHAgY2xhc3M9ImRlZmF1bHRTdWNjZXNzIj48YnI+TWVyY2khIFVuIGNvbnNlaWxsZXIgY29tbXVuaXF1ZXJhIGF2ZWMgdm91cyBwb3VyIHZvdXMgZG9ubmVyIGxlcyBkw6l0YWlscyBzdXIgdm90cmUgcG90ZW50aWVsIGRlIGNyw6lkaXQuPC9wPgogICAgICA8cCBjbGFzcz0ic2VydmljZVN1Y2Nlc3MiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij48YnI+TWVyY2khIFVuIGNvbnNlaWxsZXIgY29tbXVuaXF1ZXJhIGF2ZWMgdm91cyBwb3VyIHZvdXMgZG9ubmVyIGxlcyBkw6l0YWlscyBzdXIgdm90cmUgcG90ZW50aWVsIGRlIGNyw6lkaXQuPC9wPgogICAgICA8IS0tIDxhIGNsYXNzPSJjbG9zZS1yZXZlYWwtbW9kYWwiPiYjMjE1OzwvYT4gLS0+CiAgICAgIDxkaXYgY2xhc3M9ImVtYWlsLWNvbnNlbnQtYnRucyAtcHQyMCAtcmlnaHQgYW1wQ29uc2VudFJlc3BvbnNlU2VuZERpc21pc3MiPgogICAgICAgIDxhIGhyZWY9Ij9wYXRoPSMiIGNsYXNzPSIgLXVwcGVyY2FzZSBidG4tZGVmYXVsdCAiIG9uY2xpY2s9IiQoJy5jbG9zZS1yZXZlYWwtbW9kYWw6dmlzaWJsZScpLnRyaWdnZXIoJ2NsaWNrJyk7cmV0dXJuIGZhbHNlOyI+RmVybWVyPC9hPgogICAgICA8L2Rpdj4KICAgICAgPGZvcm0gaWQ9ImVtYWlsbXNnZnJtX3Zpc2l0Q29udGFjdEZvcm1Db250YWluZXJOZXciIGNsYXNzPSJjb25maXJtX2h0bWwiIHRhcmdldD0iaWZyYW1lIiBtZXRob2Q9InBvc3QiIGFjdGlvbj0iL2NvbmZpcm1hdGlvbi5odG1sIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibGFiZWwiIGNsYXNzPSJsYWJlbGVtYWlsIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic2VjdGlvbiIgY2xhc3M9ImxhYmVsc2VjdGlvbiIgdmFsdWU9Ik9jY2FzaW9uIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYnJhbmQiIGNsYXNzPSJicmFuZGVtYWlsIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibW9kZWwiIGNsYXNzPSJtb2RlbGVtYWlsIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ieWVhciIgY2xhc3M9InllYXJlbWFpbCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Imdvb2dsZWlkIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZ29vZ2xlaWRkMmNtZWRpYSIgdmFsdWU9IiI+CgkJCQkJCSAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWR3b3Jkc2NvbmlkIiB2YWx1ZT0iOTQ4MTY4OTU1Ij4KCQkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFkd29yZHNsYWJlbGlkIiB2YWx1ZT0iQ3N2ZENMZUJsRjRRLTlHUHhBTSI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJpbmdjb25pZCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJpbmdhY3Rpb25pZCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJpbmdkb21haW5pZCIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhZHJvbGxBZHYiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhZHJvbGxQaXgiIHZhbHVlPSIiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZmFjZWJvb2tDb25JZCIgdmFsdWU9IjIwNjgyODQxMzA5Njc4MCI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkb21haW4iIHZhbHVlPSJoeXVuZGFpcmVwZW50aWdueS5jb20iPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJyZWZlcnJlciIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRlcGFydG1lbnQiIHZhbHVlPSJORVciPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJsZWFkX2RlcGFydG1lbnQiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc2V4cHJlc3MiIGNsYXNzPSJpc2V4cHJlc3MiIHZhbHVlPSIwIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNwcm9tbyIgdmFsdWU9IjAiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc2hvbWVwYWdlIiB2YWx1ZT0iMCI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InRlc3Rtb2RlIiBjbGFzcz0idGVzdG1vZGUiIHZhbHVlPSIwIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImxlYWRUeXBlIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0icGFnZUlEIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY3VycmVudFVSTCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzQ29uZmlybVBvcHVwIiB2YWx1ZT0iIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNvbmZpcm1fZW1haWwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjb25maXJtX2ZpcnN0X25hbWUiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjb25maXJtX2xhc3RfbmFtZSIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNvbmZpcm1fcGhvbmVfbnVtYmVyIiB2YWx1ZT0iIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzRnVsbFdpZHRoIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZGVhbGVyTmFtZSIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJ1dHRvblBvc2l0aW9uIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNNb2JpbGVOZXdWRFAiIHZhbHVlPSIxIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZnJvbUF1dG9BdWJhaW5lIiB2YWx1ZT0iIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJORVciIG5hbWU9InRleHRDYXJTZWN0aW9uVHlwZSIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJsYW5nIiB2YWx1ZT0iZnIiPgogICAgICA8L2Zvcm0+CiAgICAgIDxpZnJhbWUgd2lkdGg9IjEiIGhlaWdodD0iMSIgbmFtZT0iaWZyYW1lIiBmcmFtZWJvcmRlcj0iMCIgc3R5bGU9IndpZHRoOjFweDtoZWlnaHQ6MXB4OyI+PC9pZnJhbWU+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGlkPSJlbWFpbEZhaWxNZXNzYWdlX3Zpc2l0Q29udGFjdEZvcm1Db250YWluZXJOZXciIGNsYXNzPSJyZXZlYWwtbW9kYWwgZW1haWwtY29uc2VudC1ib3giIHN0eWxlPSJ3aWR0aDo2MCU7Ij4KICAgICAgPHNwYW4gY2xhc3M9ImZhaWwiPlVuZSBlcnJldXIgcydlc3QgcHJvZHVpdGU8L3NwYW4+CiAgICAgIDxwPk5vdXMgbidhdm9ucyBwYXMgcHUgZW52b3llciB2b3RyZSBtZXNzYWdlLiBTJ2lsIHZvdXMgcGxhw650IHJhZnJhw65jaGlyIGV0IGVzc2F5ZXogw6Agbm91dmVhdTwvcD4KICAgICAgPGRpdiBjbGFzcz0iY2xvc2UtcmV2ZWFsLW1vZGFsIj48ZW0gY2xhc3M9ImZhIGZhLXRpbWVzLWNpcmNsZSI+PC9lbT48L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iLXB0MjAgLXJpZ2h0IGFtcENvbnNlbnRSZXNwb25zZVNlbmREaXNtaXNzIj4KICAgICAgICA8aW5wdXQgdHlwZT0iYnV0dG9uIiBjbGFzcz0iIC11cHBlcmNhc2UgYnRuLWRlZmF1bHQgIiBvbmNsaWNrPSIkKCcjZW1haWxGYWlsTWVzc2FnZScpLnRyaWdnZXIoJ3JldmVhbDpjbG9zZScpOyIgdmFsdWU9IkZlcm1lciI+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgoKCQkJCTwhLS0gT086OjZlZjkwYzY1OTExMDNjMGQxOWZmMDQzM2VjM2ZkZTZmIC0tPgoJCQkJCgkJPGRpdiBpZD0idmlzaXRDb250YWN0Rm9ybUNvbnRhaW5lclVzZWQiIGNsYXNzPSJyZXZlYWwtbW9kYWwgIiBzdHlsZT0id2lkdGg6MjI1cHg7aGVpZ2h0OjI4NXB4OyIgZGF0YS1sYXp5bG9hZGlkPSJuZXdjYXJzX3Zpc2l0Y29udGFjdGZvcm1jb250YWluZXJ1c2VkIj4KCQkJCgkJPC9kaXY+CgoJCTwhLS0gT086OjBmZGEyYzg3ZDdiMmJjNzliMDk4M2M5MWE3N2Q3NjUzIC0tPgoKCQkKCiAgICA8ZGl2IGlkPSJlbWFpbFN1Y2Nlc3NNZXNzYWdlX3Zpc2l0Q29udGFjdEZvcm1Db250YWluZXJVc2VkIiBjbGFzcz0icmV2ZWFsLW1vZGFsIGVtYWlsLWNvbnNlbnQtYm94IiBzdHlsZT0id2lkdGg6NjAlOyI+CiAgICAgIDxkaXYgY2xhc3M9Imljb24tdGl0bGUiPgogICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9InRpdGxlLWljb24gc3VjY2VzcyAtbWwwIj48L3NwYW4+IC0tPgogICAgICAgIDxzcGFuIGNsYXNzPSJ0aXRsZS10eHQiPlZvdHJlIGRlbWFuZGUgYSBiaWVuIMOpdMOpIGVudm95w6llITwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICAgIDxwIGNsYXNzPSJkZWZhdWx0U3VjY2VzcyI+PGJyPk1lcmNpISBVbiBjb25zZWlsbGVyIGNvbW11bmlxdWVyYSBhdmVjIHZvdXMgcG91ciB2b3VzIGRvbm5lciBsZXMgZMOpdGFpbHMgc3VyIHZvdHJlIHBvdGVudGllbCBkZSBjcsOpZGl0LjwvcD4KICAgICAgPHAgY2xhc3M9InNlcnZpY2VTdWNjZXNzIiBzdHlsZT0iZGlzcGxheTpub25lOyI+PGJyPk1lcmNpISBVbiBjb25zZWlsbGVyIGNvbW11bmlxdWVyYSBhdmVjIHZvdXMgcG91ciB2b3VzIGRvbm5lciBsZXMgZMOpdGFpbHMgc3VyIHZvdHJlIHBvdGVudGllbCBkZSBjcsOpZGl0LjwvcD4KICAgICAgPCEtLSA8YSBjbGFzcz0iY2xvc2UtcmV2ZWFsLW1vZGFsIj4mIzIxNTs8L2E+IC0tPgogICAgICA8ZGl2IGNsYXNzPSJlbWFpbC1jb25zZW50LWJ0bnMgLXB0MjAgLXJpZ2h0IGFtcENvbnNlbnRSZXNwb25zZVNlbmREaXNtaXNzIj4KICAgICAgICA8YSBocmVmPSI\/cGF0aD0jIiBjbGFzcz0iIC11cHBlcmNhc2UgYnRuLWRlZmF1bHQgIiBvbmNsaWNrPSIkKCcuY2xvc2UtcmV2ZWFsLW1vZGFsOnZpc2libGUnKS50cmlnZ2VyKCdjbGljaycpO3JldHVybiBmYWxzZTsiPkZlcm1lcjwvYT4KICAgICAgPC9kaXY+CiAgICAgIDxmb3JtIGlkPSJlbWFpbG1zZ2ZybV92aXNpdENvbnRhY3RGb3JtQ29udGFpbmVyVXNlZCIgY2xhc3M9ImNvbmZpcm1faHRtbCIgdGFyZ2V0PSJpZnJhbWUiIG1ldGhvZD0icG9zdCIgYWN0aW9uPSIvY29uZmlybWF0aW9uLmh0bWwiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJsYWJlbCIgY2xhc3M9ImxhYmVsZW1haWwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzZWN0aW9uIiBjbGFzcz0ibGFiZWxzZWN0aW9uIiB2YWx1ZT0iT2NjYXNpb24iPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJicmFuZCIgY2xhc3M9ImJyYW5kZW1haWwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJtb2RlbCIgY2xhc3M9Im1vZGVsZW1haWwiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ5ZWFyIiBjbGFzcz0ieWVhcmVtYWlsIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZ29vZ2xlaWQiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJnb29nbGVpZGQyY21lZGlhIiB2YWx1ZT0iIj4KCQkJCQkJICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhZHdvcmRzY29uaWQiIHZhbHVlPSI5NDgxNjg5NTUiPgoJCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWR3b3Jkc2xhYmVsaWQiIHZhbHVlPSJDc3ZkQ0xlQmxGNFEtOUdQeEFNIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYmluZ2NvbmlkIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYmluZ2FjdGlvbmlkIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYmluZ2RvbWFpbmlkIiB2YWx1ZT0iIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFkcm9sbEFkdiIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFkcm9sbFBpeCIgdmFsdWU9IiI+CgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmYWNlYm9va0NvbklkIiB2YWx1ZT0iMjA2ODI4NDEzMDk2NzgwIj4KCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRvbWFpbiIgdmFsdWU9Imh5dW5kYWlyZXBlbnRpZ255LmNvbSI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InJlZmVycmVyIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZGVwYXJ0bWVudCIgdmFsdWU9Ik5FVyI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImxlYWRfZGVwYXJ0bWVudCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzZXhwcmVzcyIgY2xhc3M9ImlzZXhwcmVzcyIgdmFsdWU9IjAiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc3Byb21vIiB2YWx1ZT0iMCI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImlzaG9tZXBhZ2UiIHZhbHVlPSIwIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idGVzdG1vZGUiIGNsYXNzPSJ0ZXN0bW9kZSIgdmFsdWU9IjAiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibGVhZFR5cGUiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJwYWdlSUQiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjdXJyZW50VVJMIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNDb25maXJtUG9wdXAiIHZhbHVlPSIiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY29uZmlybV9lbWFpbCIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNvbmZpcm1fZmlyc3RfbmFtZSIgdmFsdWU9IiI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNvbmZpcm1fbGFzdF9uYW1lIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY29uZmlybV9waG9uZV9udW1iZXIiIHZhbHVlPSIiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iaXNGdWxsV2lkdGgiIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkZWFsZXJOYW1lIiB2YWx1ZT0iIj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYnV0dG9uUG9zaXRpb24iIHZhbHVlPSIiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJpc01vYmlsZU5ld1ZEUCIgdmFsdWU9IjEiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmcm9tQXV0b0F1YmFpbmUiIHZhbHVlPSIiPgoKICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9Ik5FVyIgbmFtZT0idGV4dENhclNlY3Rpb25UeXBlIiBzdHlsZT0iZGlzcGxheTpub25lOyI+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImxhbmciIHZhbHVlPSJmciI+CiAgICAgIDwvZm9ybT4KICAgICAgPGlmcmFtZSB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBuYW1lPSJpZnJhbWUiIGZyYW1lYm9yZGVyPSIwIiBzdHlsZT0id2lkdGg6MXB4O2hlaWdodDoxcHg7Ij48L2lmcmFtZT4KICAgIDwvZGl2PgoKICAgIDxkaXYgaWQ9ImVtYWlsRmFpbE1lc3NhZ2VfdmlzaXRDb250YWN0Rm9ybUNvbnRhaW5lclVzZWQiIGNsYXNzPSJyZXZlYWwtbW9kYWwgZW1haWwtY29uc2VudC1ib3giIHN0eWxlPSJ3aWR0aDo2MCU7Ij4KICAgICAgPHNwYW4gY2xhc3M9ImZhaWwiPlVuZSBlcnJldXIgcydlc3QgcHJvZHVpdGU8L3NwYW4+CiAgICAgIDxwPk5vdXMgbidhdm9ucyBwYXMgcHUgZW52b3llciB2b3RyZSBtZXNzYWdlLiBTJ2lsIHZvdXMgcGxhw650IHJhZnJhw65jaGlyIGV0IGVzc2F5ZXogw6Agbm91dmVhdTwvcD4KICAgICAgPGRpdiBjbGFzcz0iY2xvc2UtcmV2ZWFsLW1vZGFsIj48ZW0gY2xhc3M9ImZhIGZhLXRpbWVzLWNpcmNsZSI+PC9lbT48L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iLXB0MjAgLXJpZ2h0IGFtcENvbnNlbnRSZXNwb25zZVNlbmREaXNtaXNzIj4KICAgICAgICA8aW5wdXQgdHlwZT0iYnV0dG9uIiBjbGFzcz0iIC11cHBlcmNhc2UgYnRuLWRlZmF1bHQgIiBvbmNsaWNrPSIkKCcjZW1haWxGYWlsTWVzc2FnZScpLnRyaWdnZXIoJ3JldmVhbDpjbG9zZScpOyIgdmFsdWU9IkZlcm1lciI+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgoKCQkJCTwhLS0gT086OmE5NmRiZDE1MGRlOGZhOTYzNGQ0MTMzOTE4NTIwMjQ1IC0tPgoJCQoKPCEtLSBGSU5BTkNFIE1VTFRJU1RFUCBQT1BVUCBuZXcgLS0+CgkJCgkJPGRpdiBpZD0iZmluYW5jZU11bHRpc3RlcFBvcHVwQ29udGFpbmVyIiBjbGFzcz0icmV2ZWFsLW1vZGFsICIgc3R5bGU9IndpZHRoOjMyMHB4O2hlaWdodDo0OTVweDtwYWRkaW5nOjMwcHggMTBweCA4MHB4OyIgZGF0YS1sYXp5bG9hZGlkPSJuZXdjYXJzX2ZpbmFuY2VtdWx0aXN0ZXBwb3B1cGNvbnRhaW5lciI+CgkJCQoJCTwvZGl2PgoKCQk8IS0tIE9POjplOWIwZWY1YTc5YTgwOWRjOTM2ZmRjM2ZjM2Y3ZDU1YSAtLT4KCgkJCgkJCjwhLS0gRU5EIG5ldyAtLT4KCjwhLS0gRklOQU5DRSBNVUxUSVNURVAgSU5TVEFOVCAtLT4KCjwhLS0gRU5EIEZJTkFOQ0UgTVVMVElTVEVQIElOU1RBTlQgLS0+Cgo8IS0tIENSRURJVCBCT09TVCBNVUxUSSAtLT4KCjwhLS0gRU5EIENSRURJVCBCT09TVCBNVUxUSSAtLT4KCjwhLS0gU0VDT05EIENIQU5DRSBQT1BVUCBuZXcgLS0+CgkJCgkJPGRpdiBpZD0iU2Vjb25kUG9wdXBDb250YWluZXIiIGNsYXNzPSJyZXZlYWwtbW9kYWwgIiBzdHlsZT0id2lkdGg6MjgwcHg7aGVpZ2h0OjUyNXB4OyIgZGF0YS1sYXp5bG9hZGlkPSJuZXdjYXJzX3NlY29uZHBvcHVwY29udGFpbmVyIj4KCQkJCgkJPC9kaXY+CgoJCTwhLS0gT086OjFjYjQ3ODBkZTQwZWMwZGJjZjkyZDkwNjc1MDU5M2RjIC0tPgoKCQkKCQkKPCEtLSBFTkQgbmV3IC0tPgoKPCEtLSBSRVRVUk4gUE9QVVAgbmV3IC0tPgoKPCEtLSBFTkQgbmV3IC0tPgoKPCEtLSBFWElUIFBPUFVQIG5ldyAtLT4KCjwhLS0gRU5EIG5ldyAtLT4KCjwhLS0gQkVTVCBQUkFDVElDRSBQT1BVUCBuZXcgLS0+Cgo8IS0tIEVORCBuZXcgLS0+CiAgICAgICAJCQoJCTxkaXYgaWQ9InBheW1lbnRDYWxjdWxhdG9yUG9wdXBDb250YWluZXIiIGNsYXNzPSJyZXZlYWwtbW9kYWwgIiBzdHlsZT0id2lkdGg6ODIlO21pbi1oZWlnaHQ6NzMwcHg7bWluLXdpZHRoOjM1MHB4OyIgZGF0YS1sYXp5bG9hZGlkPSJuZXdjYXJzX3BheW1lbnRjYWxjdWxhdG9ycG9wdXBjb250YWluZXIiPgoJCQkKCQk8L2Rpdj4KCgkJPCEtLSBPTzo6YmE0NGQ0ZTNhZWM5MWU3MjA1OWUxNDQwMDk5MDM4ZmIgLS0+CgoJCQoJCQogICAgICAgCQkKCQk8ZGl2IGlkPSJtb3RvaW5zaWdodFNob3BQb3B1cENvbnRhaW5lciIgY2xhc3M9InJldmVhbC1tb2RhbCAiIHN0eWxlPSJ3aWR0aDo4NSU7aGVpZ2h0Ojg1dmg7IiBkYXRhLWxhenlsb2FkaWQ9Im5ld2NhcnNfbW90b2luc2lnaHRzaG9wcG9wdXBjb250YWluZXIiPgoJCQkKCQk8L2Rpdj4KCgkJPCEtLSBPTzo6MjMyODgyMzkwZTJjNjU1ZDg3YzEwNjgzYzFmZmE5YjIgLS0+CgoJCQoJCQogICAgICA8c2NyaXB0IGRhdGEtc2NvZGVyZWY9IjIxMTEtQiIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGFzeW5jPSJ0cnVlIj48L3NjcmlwdD4KPHNjcmlwdCBkYXRhLXNjb2RlcmVmPSIyMTExLUIiIHNyYz0iaHR0cHM6Ly9oeXVuZGFpcmVwZW50aWdueS5jb20vanMvbWFwcy5qcy5waHA\/JmFtcDtsYW5nPWZyIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGFzeW5jPSJ0cnVlIj48L3NjcmlwdD4KPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9Ik5FVyIgaWQ9ImRlZmF1bHREZXBhcnRtZW50Ij4KICAgIAoJPC9kaXY+","logs":"{\"result\":\"1\",\"error\":\"\",\"sources\":\"https:\\\/\\\/hyundairepentigny.com\\\/js_r\\\/resource.loader.fr.js?v=3&js=hVTRbtswDPyhJVmzYR-wDsUGtEOBbNijQcu0zVgWPYlKln796GaW7CTFHgzbR0k8Ho_a7MNm_zuiP6334d0m_xnmjnACD-DIWtCvMx407gI6ubXAiQYeGSr0b-9fZish4KePF2AFvhNmKzRcRA5gqSJJnHsgN31beDkFetEUfQbP-1aRVjUYYX_a3K3vPqy3OTBfndkGXZtEQE1jv4KrbC5s30JoBUqbVjk8GvCXBWoC4Wja1RCdaefJBjj1qtc9WBMtaL5rFtRD6G4TrNn3E9qgQ0_mSVmmw3mIg4qRD52JedwZD2LaZ6gmKBzrRcnJDNFJxcdEoALBn0I2LBKldrAwuUBNK7uWh-d5rNqaAoIpGrhst8cDQmbuueeiOjnoyRQ1WSzqVIV4Ndc39xmWCLkFjX_nDh5FTs-tktpehHSX0hRid22Wc792Rxpw2a4GS3AuS7r0rtYnpttE5T-SXtfktKjZAZ1Z11BOfzygazlmvzTMjVWnDQmpmQX9L6oalOIpFcwQJHGoVDn0uz58j32ZqTXIj2zgtcCkKzn50VI6fpxXnYlFkxyW6sfx9UUb_eCu8fvcqUPE8Vn48wytpMXVq3enUlQMZ7Doow51EEwJTXL_g87HyDdcXQaCQj0OZLpc4DiRO9NiFVXq7fr99YD0XM2oJthiNn1G4Q9xuD1oqlsQcvjGGCr3kZn_Xzh7OHRoUbQxYwM829mlkkIl1rNh1L3T5ULOjlz24S8&jsrpl=&wswidth=0&device=mobile&ua=Q0NCb3QvMi4wIChodHRwczovL2NvbW1vbmNyYXdsLm9yZy9mYXEvKQ==\"}"}