How to Pay Off $50,000 of Student Loans

By Mentor Staff | Edited By Mentor Staff

Updated On March 23, 2022

Editorial Note: This content is based solely on the author's opinions and is not provided, approved, endorsed or reviewed by any financial institution or partner.

How do we make money? The products featured on this website are from our partners who compensate us. This may impact which companies we review, the products we evaluate, and where and how a product appears on a page. We receive compensation from a partner when you apply for and receive a product through Mentor. This helps us to support our website, offer free content, tools and calculators, and continue to be one of the leading sources on personal finance.

If you have $50,000 of student loans, it may feel intimidating to pay off student loans. However, there are helpful strategies that can help with student loan repayment. From student loan refinancing to an income-driven repayment, let’s explore how to pay off $50,000 of student loans.

Top Picks For Student Loan Refinancing

PD9waHAKCWVjaG8gZGF0ZSgnRicpIC4gIiAiIC4gZGF0ZSgiWSIpOwo/Pg==

PGRpdiBjbGFzcz0ibGVuZGVycy10YWJsZS1oZWFkZXItcm93LXdyYXBwZXIiPgoJPGRpdiBjbGFzcz0ibGVuZGVycy10YWJsZS1oZWFkZXItcm93Ij4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItbG9nby1oZWFkZXIgbGVuZGVycy10YWJsZS1oZWFkZXItY2VsbCI+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLXZhcmlhYmxlLWFwci1oZWFkZXIgbGVuZGVycy10YWJsZS1oZWFkZXItY2VsbCI+CgkJCVZhcmlhYmxlIEFQUiA8c3BhbiBjbGFzcz0ibW9yZS1pbmZvLXRvb2x0aXAtdHJpZ2dlciI+PzxzcGFuIGNsYXNzPSJtb3JlLWluZm8tdG9vbHRpcC10ZXh0Ij5BUFIsIG9yIEFubnVhbCBQZXJjZW50YWdlIFJhdGUsIGlzIHRoZSBwcmljZSB5b3UgcGF5IHRvIGJvcnJvdyBtb25leS4gVmFyaWFibGUgQVBSIG1lYW5zIHRoYXQgeW91ciBpbnRlcmVzdCByYXRlIGNhbiBmbHVjdHVhdGUgb3ZlciB0aW1lLCB3aGljaCBjYW4gaW5jcmVhc2Ugb3IgZGVjcmVhc2UgeW91ciBtb250aGx5IHN0dWRlbnQgbG9hbiBwYXltZW50LiBUeXBpY2FsbHksIGEgdmFyaWFibGUtcmF0ZSBsb2FuIGhhcyBhIGxvd2VyIGludHJvZHVjdG9yeSByYXRlIHRoYW4gYSBmaXhlZC1sb2FuIHJhdGUgbG9hbi4gVmFyaWFibGUgQVBSIGluY2x1ZGVzIGEgMC4yNSUgZGlzY291bnQgd2hlbiB5b3UgZW5yb2xsIGluIGF1dG9wYXkuPC9zcGFuPjwvc3Bhbj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItZml4ZWQtYXByLWhlYWRlciBsZW5kZXJzLXRhYmxlLWhlYWRlci1jZWxsIj4KCQkJRml4ZWQgQVBSIDxzcGFuIGNsYXNzPSJtb3JlLWluZm8tdG9vbHRpcC10cmlnZ2VyIj4/PHNwYW4gY2xhc3M9Im1vcmUtaW5mby10b29sdGlwLXRleHQiPkFQUiwgb3IgQW5udWFsIFBlcmNlbnRhZ2UgUmF0ZSwgaXMgdGhlIHByaWNlIHlvdSBwYXkgdG8gYm9ycm93IG1vbmV5LiBGaXhlZCBBUFIgbWVhbnMgdGhhdCB5b3VyIGludGVyZXN0IHJhdGUgd2lsbCBhbHdheXMgc3RheSB0aGUgc2FtZS4gRXZlbiBpZiBpbnRlcmVzdCByYXRlcyBjaGFuZ2UsIHlvdXIgaW50ZXJlc3QgcmF0ZSBvciBtb250aGx5IHBheW1lbnQgd2lsbCBub3QuIEZpeGVkIEFQUiBpbmNsdWRlcyBhIDAuMjUlIGRpc2NvdW50IHdoZW4geW91IGVucm9sbCBpbiBhdXRvcGF5Ljwvc3Bhbj48L3NwYW4+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLW92ZXJhbGwtYXByLWhlYWRlciBsZW5kZXJzLXRhYmxlLWhlYWRlci1jZWxsIj4KCQkJQVBSCgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWFmZmlsaWF0ZS1idXR0b24taGVhZGVyIGxlbmRlcnMtdGFibGUtaGVhZGVyLWNlbGwiPgoJCTwvZGl2PgoJPC9kaXY+CjwvZGl2Pg==
PD9waHAKCSRhcHJfbGltaXRzID0gYXJyYXkoKTsKCgkkYXByX2xpbWl0XzEgPSBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKTsKCSRhcHJfbGltaXRfMiA9IGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX3VwcGVyX2xpbWl0JyApOwoJJGFwcl9saW1pdF8zID0gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICk7CgkkYXByX2xpbWl0XzQgPSBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKTsKCglpZiggJGFwcl9saW1pdF8xICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMTsKCX0KCglpZiggJGFwcl9saW1pdF8yICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMjsKCX0KCglpZiggJGFwcl9saW1pdF8zICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMzsKCX0KCglpZiggJGFwcl9saW1pdF80ICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfNDsKCX0KPz4KPGRpdiBjbGFzcz0ibGVuZGVyLXJvdy13cmFwcGVyIj4KCTxkaXYgY2xhc3M9ImxlbmRlci1wcmltYXJ5LXJvdyI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWxvZ28td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1NMUiAtICcgLiBnZXRfdGhlX3RpdGxlKCk7ID8+IiBocmVmPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfYWZmaWxpYXRlX2xpbmsnICk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImxlbmRlci1sb2dvLWxpbmsiPgoJCQkJPGltZyBzcmM9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9sb2dvJyApWyd1cmwnXTsgPz4iIGFsdD0iPD9waHAgdGhlX3RpdGxlKCk7ID8+IiBjbGFzcz0ibGVuZGVyLWxvZ28iIC8+CgkJCTwvYT4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItdmFyaWFibGUtYXByIGxlbmRlci1wcmltYXJ5LXJvdy1jZWxsIj4KCQkJPD9waHAKCQkJCWlmKCAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfdXBwZXJfbGltaXQnICkgIT0gIi0iICkgKQoJCQkJewoJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQllY2hvICctJzsKCQkJCX0KCQkJPz4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItZml4ZWQtYXByIGxlbmRlci1wcmltYXJ5LXJvdy1jZWxsIj4KCQkJPD9waHAKCQkJCWlmKCAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfdXBwZXJfbGltaXQnICkgIT0gIi0iICkgKQoJCQkJewoJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQllY2hvICctJzsKCQkJCX0KCQkJPz4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItb3ZlcmFsbC1hcHIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8P3BocCBlY2hvIG1pbigkYXByX2xpbWl0cyk7ID8+JSAtIDw/cGhwIGVjaG8gbWF4KCRhcHJfbGltaXRzKTsgPz4lCgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWFmZmlsaWF0ZS1idXR0b24td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1NMUiAtICcgLiBnZXRfdGhlX3RpdGxlKCk7ID8+IiBocmVmPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfYWZmaWxpYXRlX2xpbmsnICk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImxlbmRlci1hZmZpbGlhdGUtYnV0dG9uIj4KCQkJCUdldCBNeSBSYXRlCgkJCTwvYT4KCQk8L2Rpdj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibGVuZGVyLXNlY29uZGFyeS1yb3ciPgoJCTxkaXYgY2xhc3M9ImxlbmRlci1sb2dvLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQkJPHAgY2xhc3M9ImxlbmRlci12aWV3LWRldGFpbHMtdHJpZ2dlciI+CgkJCQk8c3BhbiBjbGFzcz0ibGVuZGVyLXZpZXctZGV0YWlscy1saW5rIGxlbmRlci12aWV3LWRldGFpbHMtbGluay08P3BocCB0aGVfSUQoKTsgPz4iPgoJCQkJCTxzcGFuIGNsYXNzPSJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmstYXJyb3ciPjwvc3Bhbj5WaWV3IERldGFpbHMKCQkJCTxzcGFuPgoJCQk8L3A+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLXZhcmlhYmxlLWFwci1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWZpeGVkLWFwci1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLW92ZXJhbGwtYXByLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItYWZmaWxpYXRlLWJ1dHRvbi1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJCTxwIGNsYXNzPSJsZW5kZXItYWZmaWxpYXRlLWJ1dHRvbi1oZWxwZXItdGV4dCI+CgkJCQk8P3BocAoJCQkJCWlmKCBzdHJfZW5kc193aXRoKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX25hbWVfYmVsb3dfYnV0dG9uJyApLCAncycgKSApCgkJCQkJewoJCQkJCQllY2hvICdvbiAnIC4gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9uYW1lX2JlbG93X2J1dHRvbicgKSAuICdcJyB3ZWJzaXRlJzsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJZWNobyAnb24gJyAuIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfbmFtZV9iZWxvd19idXR0b24nICkgLiAnXCdzIHdlYnNpdGUnOwoJCQkJCX0KCQkJCT8+CgkJCTwvcD4KCQk8L2Rpdj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdyBsZW5kZXItY29sbGFwc2libGUtcm93LTw/cGhwIHRoZV9JRCgpOyA/PiI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2xzIj4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtMSI+CgkJCQk8aDMgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWhlYWRlciI+CgkJCQkJT3ZlcnZpZXcKCQkJCTwvaDM+CgkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC1jb250ZW50Ij4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJVmFyaWFibGUgQVBSOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAKCQkJCQkJCQlpZiggKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKSAhPSAiLSIgKSAmJiAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX3VwcGVyX2xpbWl0JyApICE9ICItIiApICkKCQkJCQkJCQl7CgkJCQkJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCQkJCQl9CgkJCQkJCQkJZWxzZQoJCQkJCQkJCXsKCQkJCQkJCQkJZWNobyAnLSc7CgkJCQkJCQkJfQoJCQkJCQkJPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUZpeGVkIEFQUjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwCgkJCQkJCQkJaWYoICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICkgIT0gIi0iICkgJiYgKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKSAhPSAiLSIgKSApCgkJCQkJCQkJewoJCQkJCQkJCQllY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApIC4gJyUgLSAnIC4gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfdXBwZXJfbGltaXQnICkgLiAnJSc7CgkJCQkJCQkJfQoJCQkJCQkJCWVsc2UKCQkJCQkJCQl7CgkJCQkJCQkJCWVjaG8gJy0nOwoJCQkJCQkJCX0KCQkJCQkJCT8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlNaW5pbXVtIENyZWRpdCBTY29yZToKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9taW5pbXVtX2NyZWRpdF9zY29yZScgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCU1pbmltdW0gSW5jb21lOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAgZWNobyBnZXRfZmllbGQoICdzbHJfbGVuZGVyX21pbmltdW1faW5jb21lJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJRmVlczoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9mZWVzJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBMb2FuIEFtb3VudDoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9taW5pbXVtX2xvYW5fYW1vdW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtMiI+CgkJCQk8aDMgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWhlYWRlciI+CgkJCQkJRGV0YWlscwoJCQkJPC9oMz4KCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWNvbnRlbnQiPgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlFbGlnaWJsZSBMb2FuczoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9lbGlnaWJsZV9sb2FucycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUVsaWdpYmxlIERlZ3JlZXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZWxpZ2libGVfZGVncmVlcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUxvYW4gVGVybXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfbG9hbl90ZXJtcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUJvcnJvd2VyIFJlc2lkZW5jeToKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9ib3Jyb3dlcl9yZXNpZGVuY3knICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlIYXJkc2hpcCBEZWZlcm1lbnQ6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfaGFyZHNoaXBfZGVmZXJtZW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJQ28tc2lnbmVyIE9wdGlvbjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9jb3NpZ25lcl9vcHRpb24nICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCTwvZGl2PgoJCTwvZGl2PgoJCTw/cGhwIGlmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9yZXZpZXdfdXJsJyApICk6ID8+CgkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctcmV2aWV3Ij4KCQkJCTxwIGNsYXNzPSJsZW5kZXItcmV2aWV3LWhlYWRpbmciPgoJCQkJCVJldmlldzoKCQkJCTwvcD4KCQkJCTxwPgoJCQkJCTxhIGhyZWY9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9yZXZpZXdfdXJsJyApOyA/PiIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJsZW5kZXItcmV2aWV3LWxpbmsiPjw/cGhwIHRoZV90aXRsZSgpOyA/PiBTdHVkZW50IExvYW4gUmVmaW5hbmNpbmcgUmV2aWV3PC9hPgoJCQkJPC9wPgoJCQk8L2Rpdj4KCQk8P3BocCBlbmRpZjsgPz4KCTwvZGl2Pgo8L2Rpdj4KPD9waHAKCWVjaG8gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4nOwoJJGxlbmRlcl92aWV3X2RldGFpbHNfbGlua19qc192YXIgPSAnbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rXycgLiBnZXRfdGhlX2lkKCk7CgkkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgPSAnbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd18nIC4gZ2V0X3RoZV9pZCgpOwoJZWNobyAndmFyICcgLiAkbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rX2pzX3ZhciAuICcgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmstJyAuIGdldF90aGVfaWQoKSAuICciKVswXTsnOwoJZWNobyAkbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rX2pzX3ZhciAuICcuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigpIHsnOwoJZWNobyAndGhpcy5jbGFzc0xpc3QudG9nZ2xlKCJhY3RpdmUiKTsnOwoJZWNobyAndmFyICcgLiAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy0nIC4gZ2V0X3RoZV9pZCgpIC4gJyIpWzBdOyc7CgllY2hvICdpZiAoJyAuICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0KSB7JzsKCWVjaG8gJGxlbmRlcl9jb2xsYXBzaWJsZV9yb3dfanNfdmFyIC4gJy5zdHlsZS5tYXhIZWlnaHQgPSBudWxsOyc7CgllY2hvICd9IGVsc2Ugeyc7CgllY2hvICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0ID0gJyAuICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc2Nyb2xsSGVpZ2h0ICsgInB4IjsnOwoJZWNobyAnfSc7CgllY2hvICd9KTsnOwoJZWNobyAnPC9zY3JpcHQ+JzsKPz4= PD9waHAKCSRhcHJfbGltaXRzID0gYXJyYXkoKTsKCgkkYXByX2xpbWl0XzEgPSBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKTsKCSRhcHJfbGltaXRfMiA9IGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX3VwcGVyX2xpbWl0JyApOwoJJGFwcl9saW1pdF8zID0gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICk7CgkkYXByX2xpbWl0XzQgPSBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKTsKCglpZiggJGFwcl9saW1pdF8xICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMTsKCX0KCglpZiggJGFwcl9saW1pdF8yICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMjsKCX0KCglpZiggJGFwcl9saW1pdF8zICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMzsKCX0KCglpZiggJGFwcl9saW1pdF80ICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfNDsKCX0KPz4KPGRpdiBjbGFzcz0ibGVuZGVyLXJvdy13cmFwcGVyIj4KCTxkaXYgY2xhc3M9ImxlbmRlci1wcmltYXJ5LXJvdyI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWxvZ28td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1NMUiAtICcgLiBnZXRfdGhlX3RpdGxlKCk7ID8+IiBocmVmPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfYWZmaWxpYXRlX2xpbmsnICk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImxlbmRlci1sb2dvLWxpbmsiPgoJCQkJPGltZyBzcmM9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9sb2dvJyApWyd1cmwnXTsgPz4iIGFsdD0iPD9waHAgdGhlX3RpdGxlKCk7ID8+IiBjbGFzcz0ibGVuZGVyLWxvZ28iIC8+CgkJCTwvYT4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItdmFyaWFibGUtYXByIGxlbmRlci1wcmltYXJ5LXJvdy1jZWxsIj4KCQkJPD9waHAKCQkJCWlmKCAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfdXBwZXJfbGltaXQnICkgIT0gIi0iICkgKQoJCQkJewoJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQllY2hvICctJzsKCQkJCX0KCQkJPz4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItZml4ZWQtYXByIGxlbmRlci1wcmltYXJ5LXJvdy1jZWxsIj4KCQkJPD9waHAKCQkJCWlmKCAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfdXBwZXJfbGltaXQnICkgIT0gIi0iICkgKQoJCQkJewoJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQllY2hvICctJzsKCQkJCX0KCQkJPz4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItb3ZlcmFsbC1hcHIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8P3BocCBlY2hvIG1pbigkYXByX2xpbWl0cyk7ID8+JSAtIDw/cGhwIGVjaG8gbWF4KCRhcHJfbGltaXRzKTsgPz4lCgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWFmZmlsaWF0ZS1idXR0b24td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1NMUiAtICcgLiBnZXRfdGhlX3RpdGxlKCk7ID8+IiBocmVmPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfYWZmaWxpYXRlX2xpbmsnICk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImxlbmRlci1hZmZpbGlhdGUtYnV0dG9uIj4KCQkJCUdldCBNeSBSYXRlCgkJCTwvYT4KCQk8L2Rpdj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibGVuZGVyLXNlY29uZGFyeS1yb3ciPgoJCTxkaXYgY2xhc3M9ImxlbmRlci1sb2dvLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQkJPHAgY2xhc3M9ImxlbmRlci12aWV3LWRldGFpbHMtdHJpZ2dlciI+CgkJCQk8c3BhbiBjbGFzcz0ibGVuZGVyLXZpZXctZGV0YWlscy1saW5rIGxlbmRlci12aWV3LWRldGFpbHMtbGluay08P3BocCB0aGVfSUQoKTsgPz4iPgoJCQkJCTxzcGFuIGNsYXNzPSJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmstYXJyb3ciPjwvc3Bhbj5WaWV3IERldGFpbHMKCQkJCTxzcGFuPgoJCQk8L3A+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLXZhcmlhYmxlLWFwci1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWZpeGVkLWFwci1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLW92ZXJhbGwtYXByLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItYWZmaWxpYXRlLWJ1dHRvbi1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJCTxwIGNsYXNzPSJsZW5kZXItYWZmaWxpYXRlLWJ1dHRvbi1oZWxwZXItdGV4dCI+CgkJCQk8P3BocAoJCQkJCWlmKCBzdHJfZW5kc193aXRoKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX25hbWVfYmVsb3dfYnV0dG9uJyApLCAncycgKSApCgkJCQkJewoJCQkJCQllY2hvICdvbiAnIC4gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9uYW1lX2JlbG93X2J1dHRvbicgKSAuICdcJyB3ZWJzaXRlJzsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJZWNobyAnb24gJyAuIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfbmFtZV9iZWxvd19idXR0b24nICkgLiAnXCdzIHdlYnNpdGUnOwoJCQkJCX0KCQkJCT8+CgkJCTwvcD4KCQk8L2Rpdj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdyBsZW5kZXItY29sbGFwc2libGUtcm93LTw/cGhwIHRoZV9JRCgpOyA/PiI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2xzIj4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtMSI+CgkJCQk8aDMgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWhlYWRlciI+CgkJCQkJT3ZlcnZpZXcKCQkJCTwvaDM+CgkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC1jb250ZW50Ij4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJVmFyaWFibGUgQVBSOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAKCQkJCQkJCQlpZiggKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKSAhPSAiLSIgKSAmJiAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX3VwcGVyX2xpbWl0JyApICE9ICItIiApICkKCQkJCQkJCQl7CgkJCQkJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCQkJCQl9CgkJCQkJCQkJZWxzZQoJCQkJCQkJCXsKCQkJCQkJCQkJZWNobyAnLSc7CgkJCQkJCQkJfQoJCQkJCQkJPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUZpeGVkIEFQUjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwCgkJCQkJCQkJaWYoICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICkgIT0gIi0iICkgJiYgKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKSAhPSAiLSIgKSApCgkJCQkJCQkJewoJCQkJCQkJCQllY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApIC4gJyUgLSAnIC4gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfdXBwZXJfbGltaXQnICkgLiAnJSc7CgkJCQkJCQkJfQoJCQkJCQkJCWVsc2UKCQkJCQkJCQl7CgkJCQkJCQkJCWVjaG8gJy0nOwoJCQkJCQkJCX0KCQkJCQkJCT8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlNaW5pbXVtIENyZWRpdCBTY29yZToKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9taW5pbXVtX2NyZWRpdF9zY29yZScgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCU1pbmltdW0gSW5jb21lOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAgZWNobyBnZXRfZmllbGQoICdzbHJfbGVuZGVyX21pbmltdW1faW5jb21lJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJRmVlczoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9mZWVzJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBMb2FuIEFtb3VudDoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9taW5pbXVtX2xvYW5fYW1vdW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtMiI+CgkJCQk8aDMgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWhlYWRlciI+CgkJCQkJRGV0YWlscwoJCQkJPC9oMz4KCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWNvbnRlbnQiPgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlFbGlnaWJsZSBMb2FuczoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9lbGlnaWJsZV9sb2FucycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUVsaWdpYmxlIERlZ3JlZXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZWxpZ2libGVfZGVncmVlcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUxvYW4gVGVybXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfbG9hbl90ZXJtcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUJvcnJvd2VyIFJlc2lkZW5jeToKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9ib3Jyb3dlcl9yZXNpZGVuY3knICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlIYXJkc2hpcCBEZWZlcm1lbnQ6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfaGFyZHNoaXBfZGVmZXJtZW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJQ28tc2lnbmVyIE9wdGlvbjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9jb3NpZ25lcl9vcHRpb24nICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCTwvZGl2PgoJCTwvZGl2PgoJCTw/cGhwIGlmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9yZXZpZXdfdXJsJyApICk6ID8+CgkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctcmV2aWV3Ij4KCQkJCTxwIGNsYXNzPSJsZW5kZXItcmV2aWV3LWhlYWRpbmciPgoJCQkJCVJldmlldzoKCQkJCTwvcD4KCQkJCTxwPgoJCQkJCTxhIGhyZWY9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9yZXZpZXdfdXJsJyApOyA/PiIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJsZW5kZXItcmV2aWV3LWxpbmsiPjw/cGhwIHRoZV90aXRsZSgpOyA/PiBTdHVkZW50IExvYW4gUmVmaW5hbmNpbmcgUmV2aWV3PC9hPgoJCQkJPC9wPgoJCQk8L2Rpdj4KCQk8P3BocCBlbmRpZjsgPz4KCTwvZGl2Pgo8L2Rpdj4KPD9waHAKCWVjaG8gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4nOwoJJGxlbmRlcl92aWV3X2RldGFpbHNfbGlua19qc192YXIgPSAnbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rXycgLiBnZXRfdGhlX2lkKCk7CgkkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgPSAnbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd18nIC4gZ2V0X3RoZV9pZCgpOwoJZWNobyAndmFyICcgLiAkbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rX2pzX3ZhciAuICcgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmstJyAuIGdldF90aGVfaWQoKSAuICciKVswXTsnOwoJZWNobyAkbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rX2pzX3ZhciAuICcuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigpIHsnOwoJZWNobyAndGhpcy5jbGFzc0xpc3QudG9nZ2xlKCJhY3RpdmUiKTsnOwoJZWNobyAndmFyICcgLiAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy0nIC4gZ2V0X3RoZV9pZCgpIC4gJyIpWzBdOyc7CgllY2hvICdpZiAoJyAuICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0KSB7JzsKCWVjaG8gJGxlbmRlcl9jb2xsYXBzaWJsZV9yb3dfanNfdmFyIC4gJy5zdHlsZS5tYXhIZWlnaHQgPSBudWxsOyc7CgllY2hvICd9IGVsc2Ugeyc7CgllY2hvICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0ID0gJyAuICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc2Nyb2xsSGVpZ2h0ICsgInB4IjsnOwoJZWNobyAnfSc7CgllY2hvICd9KTsnOwoJZWNobyAnPC9zY3JpcHQ+JzsKPz4= PD9waHAKCSRhcHJfbGltaXRzID0gYXJyYXkoKTsKCgkkYXByX2xpbWl0XzEgPSBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKTsKCSRhcHJfbGltaXRfMiA9IGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX3VwcGVyX2xpbWl0JyApOwoJJGFwcl9saW1pdF8zID0gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICk7CgkkYXByX2xpbWl0XzQgPSBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKTsKCglpZiggJGFwcl9saW1pdF8xICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMTsKCX0KCglpZiggJGFwcl9saW1pdF8yICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMjsKCX0KCglpZiggJGFwcl9saW1pdF8zICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMzsKCX0KCglpZiggJGFwcl9saW1pdF80ICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfNDsKCX0KPz4KPGRpdiBjbGFzcz0ibGVuZGVyLXJvdy13cmFwcGVyIj4KCTxkaXYgY2xhc3M9ImxlbmRlci1wcmltYXJ5LXJvdyI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWxvZ28td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1NMUiAtICcgLiBnZXRfdGhlX3RpdGxlKCk7ID8+IiBocmVmPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfYWZmaWxpYXRlX2xpbmsnICk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImxlbmRlci1sb2dvLWxpbmsiPgoJCQkJPGltZyBzcmM9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9sb2dvJyApWyd1cmwnXTsgPz4iIGFsdD0iPD9waHAgdGhlX3RpdGxlKCk7ID8+IiBjbGFzcz0ibGVuZGVyLWxvZ28iIC8+CgkJCTwvYT4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItdmFyaWFibGUtYXByIGxlbmRlci1wcmltYXJ5LXJvdy1jZWxsIj4KCQkJPD9waHAKCQkJCWlmKCAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfdXBwZXJfbGltaXQnICkgIT0gIi0iICkgKQoJCQkJewoJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQllY2hvICctJzsKCQkJCX0KCQkJPz4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItZml4ZWQtYXByIGxlbmRlci1wcmltYXJ5LXJvdy1jZWxsIj4KCQkJPD9waHAKCQkJCWlmKCAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfdXBwZXJfbGltaXQnICkgIT0gIi0iICkgKQoJCQkJewoJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQllY2hvICctJzsKCQkJCX0KCQkJPz4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItb3ZlcmFsbC1hcHIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8P3BocCBlY2hvIG1pbigkYXByX2xpbWl0cyk7ID8+JSAtIDw/cGhwIGVjaG8gbWF4KCRhcHJfbGltaXRzKTsgPz4lCgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWFmZmlsaWF0ZS1idXR0b24td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1NMUiAtICcgLiBnZXRfdGhlX3RpdGxlKCk7ID8+IiBocmVmPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfYWZmaWxpYXRlX2xpbmsnICk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImxlbmRlci1hZmZpbGlhdGUtYnV0dG9uIj4KCQkJCUdldCBNeSBSYXRlCgkJCTwvYT4KCQk8L2Rpdj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibGVuZGVyLXNlY29uZGFyeS1yb3ciPgoJCTxkaXYgY2xhc3M9ImxlbmRlci1sb2dvLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQkJPHAgY2xhc3M9ImxlbmRlci12aWV3LWRldGFpbHMtdHJpZ2dlciI+CgkJCQk8c3BhbiBjbGFzcz0ibGVuZGVyLXZpZXctZGV0YWlscy1saW5rIGxlbmRlci12aWV3LWRldGFpbHMtbGluay08P3BocCB0aGVfSUQoKTsgPz4iPgoJCQkJCTxzcGFuIGNsYXNzPSJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmstYXJyb3ciPjwvc3Bhbj5WaWV3IERldGFpbHMKCQkJCTxzcGFuPgoJCQk8L3A+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLXZhcmlhYmxlLWFwci1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWZpeGVkLWFwci1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLW92ZXJhbGwtYXByLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItYWZmaWxpYXRlLWJ1dHRvbi1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJCTxwIGNsYXNzPSJsZW5kZXItYWZmaWxpYXRlLWJ1dHRvbi1oZWxwZXItdGV4dCI+CgkJCQk8P3BocAoJCQkJCWlmKCBzdHJfZW5kc193aXRoKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX25hbWVfYmVsb3dfYnV0dG9uJyApLCAncycgKSApCgkJCQkJewoJCQkJCQllY2hvICdvbiAnIC4gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9uYW1lX2JlbG93X2J1dHRvbicgKSAuICdcJyB3ZWJzaXRlJzsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJZWNobyAnb24gJyAuIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfbmFtZV9iZWxvd19idXR0b24nICkgLiAnXCdzIHdlYnNpdGUnOwoJCQkJCX0KCQkJCT8+CgkJCTwvcD4KCQk8L2Rpdj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdyBsZW5kZXItY29sbGFwc2libGUtcm93LTw/cGhwIHRoZV9JRCgpOyA/PiI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2xzIj4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtMSI+CgkJCQk8aDMgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWhlYWRlciI+CgkJCQkJT3ZlcnZpZXcKCQkJCTwvaDM+CgkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC1jb250ZW50Ij4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJVmFyaWFibGUgQVBSOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAKCQkJCQkJCQlpZiggKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKSAhPSAiLSIgKSAmJiAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX3VwcGVyX2xpbWl0JyApICE9ICItIiApICkKCQkJCQkJCQl7CgkJCQkJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCQkJCQl9CgkJCQkJCQkJZWxzZQoJCQkJCQkJCXsKCQkJCQkJCQkJZWNobyAnLSc7CgkJCQkJCQkJfQoJCQkJCQkJPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUZpeGVkIEFQUjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwCgkJCQkJCQkJaWYoICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICkgIT0gIi0iICkgJiYgKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKSAhPSAiLSIgKSApCgkJCQkJCQkJewoJCQkJCQkJCQllY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApIC4gJyUgLSAnIC4gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfdXBwZXJfbGltaXQnICkgLiAnJSc7CgkJCQkJCQkJfQoJCQkJCQkJCWVsc2UKCQkJCQkJCQl7CgkJCQkJCQkJCWVjaG8gJy0nOwoJCQkJCQkJCX0KCQkJCQkJCT8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlNaW5pbXVtIENyZWRpdCBTY29yZToKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9taW5pbXVtX2NyZWRpdF9zY29yZScgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCU1pbmltdW0gSW5jb21lOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAgZWNobyBnZXRfZmllbGQoICdzbHJfbGVuZGVyX21pbmltdW1faW5jb21lJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJRmVlczoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9mZWVzJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBMb2FuIEFtb3VudDoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9taW5pbXVtX2xvYW5fYW1vdW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtMiI+CgkJCQk8aDMgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWhlYWRlciI+CgkJCQkJRGV0YWlscwoJCQkJPC9oMz4KCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWNvbnRlbnQiPgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlFbGlnaWJsZSBMb2FuczoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9lbGlnaWJsZV9sb2FucycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUVsaWdpYmxlIERlZ3JlZXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZWxpZ2libGVfZGVncmVlcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUxvYW4gVGVybXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfbG9hbl90ZXJtcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUJvcnJvd2VyIFJlc2lkZW5jeToKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9ib3Jyb3dlcl9yZXNpZGVuY3knICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlIYXJkc2hpcCBEZWZlcm1lbnQ6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfaGFyZHNoaXBfZGVmZXJtZW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJQ28tc2lnbmVyIE9wdGlvbjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9jb3NpZ25lcl9vcHRpb24nICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCTwvZGl2PgoJCTwvZGl2PgoJCTw/cGhwIGlmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9yZXZpZXdfdXJsJyApICk6ID8+CgkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctcmV2aWV3Ij4KCQkJCTxwIGNsYXNzPSJsZW5kZXItcmV2aWV3LWhlYWRpbmciPgoJCQkJCVJldmlldzoKCQkJCTwvcD4KCQkJCTxwPgoJCQkJCTxhIGhyZWY9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9yZXZpZXdfdXJsJyApOyA/PiIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJsZW5kZXItcmV2aWV3LWxpbmsiPjw/cGhwIHRoZV90aXRsZSgpOyA/PiBTdHVkZW50IExvYW4gUmVmaW5hbmNpbmcgUmV2aWV3PC9hPgoJCQkJPC9wPgoJCQk8L2Rpdj4KCQk8P3BocCBlbmRpZjsgPz4KCTwvZGl2Pgo8L2Rpdj4KPD9waHAKCWVjaG8gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4nOwoJJGxlbmRlcl92aWV3X2RldGFpbHNfbGlua19qc192YXIgPSAnbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rXycgLiBnZXRfdGhlX2lkKCk7CgkkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgPSAnbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd18nIC4gZ2V0X3RoZV9pZCgpOwoJZWNobyAndmFyICcgLiAkbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rX2pzX3ZhciAuICcgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmstJyAuIGdldF90aGVfaWQoKSAuICciKVswXTsnOwoJZWNobyAkbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rX2pzX3ZhciAuICcuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigpIHsnOwoJZWNobyAndGhpcy5jbGFzc0xpc3QudG9nZ2xlKCJhY3RpdmUiKTsnOwoJZWNobyAndmFyICcgLiAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy0nIC4gZ2V0X3RoZV9pZCgpIC4gJyIpWzBdOyc7CgllY2hvICdpZiAoJyAuICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0KSB7JzsKCWVjaG8gJGxlbmRlcl9jb2xsYXBzaWJsZV9yb3dfanNfdmFyIC4gJy5zdHlsZS5tYXhIZWlnaHQgPSBudWxsOyc7CgllY2hvICd9IGVsc2Ugeyc7CgllY2hvICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0ID0gJyAuICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc2Nyb2xsSGVpZ2h0ICsgInB4IjsnOwoJZWNobyAnfSc7CgllY2hvICd9KTsnOwoJZWNobyAnPC9zY3JpcHQ+JzsKPz4= PD9waHAKCSRhcHJfbGltaXRzID0gYXJyYXkoKTsKCgkkYXByX2xpbWl0XzEgPSBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKTsKCSRhcHJfbGltaXRfMiA9IGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX3VwcGVyX2xpbWl0JyApOwoJJGFwcl9saW1pdF8zID0gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICk7CgkkYXByX2xpbWl0XzQgPSBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKTsKCglpZiggJGFwcl9saW1pdF8xICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMTsKCX0KCglpZiggJGFwcl9saW1pdF8yICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMjsKCX0KCglpZiggJGFwcl9saW1pdF8zICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMzsKCX0KCglpZiggJGFwcl9saW1pdF80ICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfNDsKCX0KPz4KPGRpdiBjbGFzcz0ibGVuZGVyLXJvdy13cmFwcGVyIj4KCTxkaXYgY2xhc3M9ImxlbmRlci1wcmltYXJ5LXJvdyI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWxvZ28td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1NMUiAtICcgLiBnZXRfdGhlX3RpdGxlKCk7ID8+IiBocmVmPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfYWZmaWxpYXRlX2xpbmsnICk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImxlbmRlci1sb2dvLWxpbmsiPgoJCQkJPGltZyBzcmM9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9sb2dvJyApWyd1cmwnXTsgPz4iIGFsdD0iPD9waHAgdGhlX3RpdGxlKCk7ID8+IiBjbGFzcz0ibGVuZGVyLWxvZ28iIC8+CgkJCTwvYT4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItdmFyaWFibGUtYXByIGxlbmRlci1wcmltYXJ5LXJvdy1jZWxsIj4KCQkJPD9waHAKCQkJCWlmKCAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfdXBwZXJfbGltaXQnICkgIT0gIi0iICkgKQoJCQkJewoJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQllY2hvICctJzsKCQkJCX0KCQkJPz4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItZml4ZWQtYXByIGxlbmRlci1wcmltYXJ5LXJvdy1jZWxsIj4KCQkJPD9waHAKCQkJCWlmKCAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfdXBwZXJfbGltaXQnICkgIT0gIi0iICkgKQoJCQkJewoJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQllY2hvICctJzsKCQkJCX0KCQkJPz4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItb3ZlcmFsbC1hcHIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8P3BocCBlY2hvIG1pbigkYXByX2xpbWl0cyk7ID8+JSAtIDw/cGhwIGVjaG8gbWF4KCRhcHJfbGltaXRzKTsgPz4lCgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWFmZmlsaWF0ZS1idXR0b24td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1NMUiAtICcgLiBnZXRfdGhlX3RpdGxlKCk7ID8+IiBocmVmPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfYWZmaWxpYXRlX2xpbmsnICk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImxlbmRlci1hZmZpbGlhdGUtYnV0dG9uIj4KCQkJCUdldCBNeSBSYXRlCgkJCTwvYT4KCQk8L2Rpdj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibGVuZGVyLXNlY29uZGFyeS1yb3ciPgoJCTxkaXYgY2xhc3M9ImxlbmRlci1sb2dvLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQkJPHAgY2xhc3M9ImxlbmRlci12aWV3LWRldGFpbHMtdHJpZ2dlciI+CgkJCQk8c3BhbiBjbGFzcz0ibGVuZGVyLXZpZXctZGV0YWlscy1saW5rIGxlbmRlci12aWV3LWRldGFpbHMtbGluay08P3BocCB0aGVfSUQoKTsgPz4iPgoJCQkJCTxzcGFuIGNsYXNzPSJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmstYXJyb3ciPjwvc3Bhbj5WaWV3IERldGFpbHMKCQkJCTxzcGFuPgoJCQk8L3A+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLXZhcmlhYmxlLWFwci1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWZpeGVkLWFwci1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLW92ZXJhbGwtYXByLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItYWZmaWxpYXRlLWJ1dHRvbi1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJCTxwIGNsYXNzPSJsZW5kZXItYWZmaWxpYXRlLWJ1dHRvbi1oZWxwZXItdGV4dCI+CgkJCQk8P3BocAoJCQkJCWlmKCBzdHJfZW5kc193aXRoKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX25hbWVfYmVsb3dfYnV0dG9uJyApLCAncycgKSApCgkJCQkJewoJCQkJCQllY2hvICdvbiAnIC4gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9uYW1lX2JlbG93X2J1dHRvbicgKSAuICdcJyB3ZWJzaXRlJzsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJZWNobyAnb24gJyAuIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfbmFtZV9iZWxvd19idXR0b24nICkgLiAnXCdzIHdlYnNpdGUnOwoJCQkJCX0KCQkJCT8+CgkJCTwvcD4KCQk8L2Rpdj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdyBsZW5kZXItY29sbGFwc2libGUtcm93LTw/cGhwIHRoZV9JRCgpOyA/PiI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2xzIj4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtMSI+CgkJCQk8aDMgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWhlYWRlciI+CgkJCQkJT3ZlcnZpZXcKCQkJCTwvaDM+CgkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC1jb250ZW50Ij4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJVmFyaWFibGUgQVBSOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAKCQkJCQkJCQlpZiggKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKSAhPSAiLSIgKSAmJiAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX3VwcGVyX2xpbWl0JyApICE9ICItIiApICkKCQkJCQkJCQl7CgkJCQkJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCQkJCQl9CgkJCQkJCQkJZWxzZQoJCQkJCQkJCXsKCQkJCQkJCQkJZWNobyAnLSc7CgkJCQkJCQkJfQoJCQkJCQkJPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUZpeGVkIEFQUjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwCgkJCQkJCQkJaWYoICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICkgIT0gIi0iICkgJiYgKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKSAhPSAiLSIgKSApCgkJCQkJCQkJewoJCQkJCQkJCQllY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApIC4gJyUgLSAnIC4gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfdXBwZXJfbGltaXQnICkgLiAnJSc7CgkJCQkJCQkJfQoJCQkJCQkJCWVsc2UKCQkJCQkJCQl7CgkJCQkJCQkJCWVjaG8gJy0nOwoJCQkJCQkJCX0KCQkJCQkJCT8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlNaW5pbXVtIENyZWRpdCBTY29yZToKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9taW5pbXVtX2NyZWRpdF9zY29yZScgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCU1pbmltdW0gSW5jb21lOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAgZWNobyBnZXRfZmllbGQoICdzbHJfbGVuZGVyX21pbmltdW1faW5jb21lJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJRmVlczoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9mZWVzJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBMb2FuIEFtb3VudDoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9taW5pbXVtX2xvYW5fYW1vdW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtMiI+CgkJCQk8aDMgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWhlYWRlciI+CgkJCQkJRGV0YWlscwoJCQkJPC9oMz4KCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWNvbnRlbnQiPgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlFbGlnaWJsZSBMb2FuczoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9lbGlnaWJsZV9sb2FucycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUVsaWdpYmxlIERlZ3JlZXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZWxpZ2libGVfZGVncmVlcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUxvYW4gVGVybXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfbG9hbl90ZXJtcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUJvcnJvd2VyIFJlc2lkZW5jeToKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9ib3Jyb3dlcl9yZXNpZGVuY3knICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlIYXJkc2hpcCBEZWZlcm1lbnQ6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfaGFyZHNoaXBfZGVmZXJtZW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJQ28tc2lnbmVyIE9wdGlvbjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9jb3NpZ25lcl9vcHRpb24nICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCTwvZGl2PgoJCTwvZGl2PgoJCTw/cGhwIGlmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9yZXZpZXdfdXJsJyApICk6ID8+CgkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctcmV2aWV3Ij4KCQkJCTxwIGNsYXNzPSJsZW5kZXItcmV2aWV3LWhlYWRpbmciPgoJCQkJCVJldmlldzoKCQkJCTwvcD4KCQkJCTxwPgoJCQkJCTxhIGhyZWY9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9yZXZpZXdfdXJsJyApOyA/PiIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJsZW5kZXItcmV2aWV3LWxpbmsiPjw/cGhwIHRoZV90aXRsZSgpOyA/PiBTdHVkZW50IExvYW4gUmVmaW5hbmNpbmcgUmV2aWV3PC9hPgoJCQkJPC9wPgoJCQk8L2Rpdj4KCQk8P3BocCBlbmRpZjsgPz4KCTwvZGl2Pgo8L2Rpdj4KPD9waHAKCWVjaG8gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4nOwoJJGxlbmRlcl92aWV3X2RldGFpbHNfbGlua19qc192YXIgPSAnbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rXycgLiBnZXRfdGhlX2lkKCk7CgkkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgPSAnbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd18nIC4gZ2V0X3RoZV9pZCgpOwoJZWNobyAndmFyICcgLiAkbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rX2pzX3ZhciAuICcgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmstJyAuIGdldF90aGVfaWQoKSAuICciKVswXTsnOwoJZWNobyAkbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rX2pzX3ZhciAuICcuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigpIHsnOwoJZWNobyAndGhpcy5jbGFzc0xpc3QudG9nZ2xlKCJhY3RpdmUiKTsnOwoJZWNobyAndmFyICcgLiAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy0nIC4gZ2V0X3RoZV9pZCgpIC4gJyIpWzBdOyc7CgllY2hvICdpZiAoJyAuICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0KSB7JzsKCWVjaG8gJGxlbmRlcl9jb2xsYXBzaWJsZV9yb3dfanNfdmFyIC4gJy5zdHlsZS5tYXhIZWlnaHQgPSBudWxsOyc7CgllY2hvICd9IGVsc2Ugeyc7CgllY2hvICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0ID0gJyAuICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc2Nyb2xsSGVpZ2h0ICsgInB4IjsnOwoJZWNobyAnfSc7CgllY2hvICd9KTsnOwoJZWNobyAnPC9zY3JpcHQ+JzsKPz4= PD9waHAKCSRhcHJfbGltaXRzID0gYXJyYXkoKTsKCgkkYXByX2xpbWl0XzEgPSBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKTsKCSRhcHJfbGltaXRfMiA9IGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX3VwcGVyX2xpbWl0JyApOwoJJGFwcl9saW1pdF8zID0gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICk7CgkkYXByX2xpbWl0XzQgPSBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKTsKCglpZiggJGFwcl9saW1pdF8xICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMTsKCX0KCglpZiggJGFwcl9saW1pdF8yICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMjsKCX0KCglpZiggJGFwcl9saW1pdF8zICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMzsKCX0KCglpZiggJGFwcl9saW1pdF80ICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfNDsKCX0KPz4KPGRpdiBjbGFzcz0ibGVuZGVyLXJvdy13cmFwcGVyIj4KCTxkaXYgY2xhc3M9ImxlbmRlci1wcmltYXJ5LXJvdyI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWxvZ28td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1NMUiAtICcgLiBnZXRfdGhlX3RpdGxlKCk7ID8+IiBocmVmPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfYWZmaWxpYXRlX2xpbmsnICk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImxlbmRlci1sb2dvLWxpbmsiPgoJCQkJPGltZyBzcmM9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9sb2dvJyApWyd1cmwnXTsgPz4iIGFsdD0iPD9waHAgdGhlX3RpdGxlKCk7ID8+IiBjbGFzcz0ibGVuZGVyLWxvZ28iIC8+CgkJCTwvYT4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItdmFyaWFibGUtYXByIGxlbmRlci1wcmltYXJ5LXJvdy1jZWxsIj4KCQkJPD9waHAKCQkJCWlmKCAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfdXBwZXJfbGltaXQnICkgIT0gIi0iICkgKQoJCQkJewoJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQllY2hvICctJzsKCQkJCX0KCQkJPz4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItZml4ZWQtYXByIGxlbmRlci1wcmltYXJ5LXJvdy1jZWxsIj4KCQkJPD9waHAKCQkJCWlmKCAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfdXBwZXJfbGltaXQnICkgIT0gIi0iICkgKQoJCQkJewoJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQllY2hvICctJzsKCQkJCX0KCQkJPz4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItb3ZlcmFsbC1hcHIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8P3BocCBlY2hvIG1pbigkYXByX2xpbWl0cyk7ID8+JSAtIDw/cGhwIGVjaG8gbWF4KCRhcHJfbGltaXRzKTsgPz4lCgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWFmZmlsaWF0ZS1idXR0b24td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1NMUiAtICcgLiBnZXRfdGhlX3RpdGxlKCk7ID8+IiBocmVmPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfYWZmaWxpYXRlX2xpbmsnICk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImxlbmRlci1hZmZpbGlhdGUtYnV0dG9uIj4KCQkJCUdldCBNeSBSYXRlCgkJCTwvYT4KCQk8L2Rpdj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibGVuZGVyLXNlY29uZGFyeS1yb3ciPgoJCTxkaXYgY2xhc3M9ImxlbmRlci1sb2dvLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQkJPHAgY2xhc3M9ImxlbmRlci12aWV3LWRldGFpbHMtdHJpZ2dlciI+CgkJCQk8c3BhbiBjbGFzcz0ibGVuZGVyLXZpZXctZGV0YWlscy1saW5rIGxlbmRlci12aWV3LWRldGFpbHMtbGluay08P3BocCB0aGVfSUQoKTsgPz4iPgoJCQkJCTxzcGFuIGNsYXNzPSJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmstYXJyb3ciPjwvc3Bhbj5WaWV3IERldGFpbHMKCQkJCTxzcGFuPgoJCQk8L3A+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLXZhcmlhYmxlLWFwci1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWZpeGVkLWFwci1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLW92ZXJhbGwtYXByLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItYWZmaWxpYXRlLWJ1dHRvbi1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJCTxwIGNsYXNzPSJsZW5kZXItYWZmaWxpYXRlLWJ1dHRvbi1oZWxwZXItdGV4dCI+CgkJCQk8P3BocAoJCQkJCWlmKCBzdHJfZW5kc193aXRoKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX25hbWVfYmVsb3dfYnV0dG9uJyApLCAncycgKSApCgkJCQkJewoJCQkJCQllY2hvICdvbiAnIC4gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9uYW1lX2JlbG93X2J1dHRvbicgKSAuICdcJyB3ZWJzaXRlJzsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJZWNobyAnb24gJyAuIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfbmFtZV9iZWxvd19idXR0b24nICkgLiAnXCdzIHdlYnNpdGUnOwoJCQkJCX0KCQkJCT8+CgkJCTwvcD4KCQk8L2Rpdj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdyBsZW5kZXItY29sbGFwc2libGUtcm93LTw/cGhwIHRoZV9JRCgpOyA/PiI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2xzIj4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtMSI+CgkJCQk8aDMgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWhlYWRlciI+CgkJCQkJT3ZlcnZpZXcKCQkJCTwvaDM+CgkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC1jb250ZW50Ij4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJVmFyaWFibGUgQVBSOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAKCQkJCQkJCQlpZiggKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKSAhPSAiLSIgKSAmJiAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX3VwcGVyX2xpbWl0JyApICE9ICItIiApICkKCQkJCQkJCQl7CgkJCQkJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCQkJCQl9CgkJCQkJCQkJZWxzZQoJCQkJCQkJCXsKCQkJCQkJCQkJZWNobyAnLSc7CgkJCQkJCQkJfQoJCQkJCQkJPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUZpeGVkIEFQUjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwCgkJCQkJCQkJaWYoICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICkgIT0gIi0iICkgJiYgKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKSAhPSAiLSIgKSApCgkJCQkJCQkJewoJCQkJCQkJCQllY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApIC4gJyUgLSAnIC4gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfdXBwZXJfbGltaXQnICkgLiAnJSc7CgkJCQkJCQkJfQoJCQkJCQkJCWVsc2UKCQkJCQkJCQl7CgkJCQkJCQkJCWVjaG8gJy0nOwoJCQkJCQkJCX0KCQkJCQkJCT8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlNaW5pbXVtIENyZWRpdCBTY29yZToKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9taW5pbXVtX2NyZWRpdF9zY29yZScgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCU1pbmltdW0gSW5jb21lOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAgZWNobyBnZXRfZmllbGQoICdzbHJfbGVuZGVyX21pbmltdW1faW5jb21lJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJRmVlczoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9mZWVzJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBMb2FuIEFtb3VudDoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9taW5pbXVtX2xvYW5fYW1vdW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtMiI+CgkJCQk8aDMgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWhlYWRlciI+CgkJCQkJRGV0YWlscwoJCQkJPC9oMz4KCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWNvbnRlbnQiPgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlFbGlnaWJsZSBMb2FuczoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9lbGlnaWJsZV9sb2FucycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUVsaWdpYmxlIERlZ3JlZXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZWxpZ2libGVfZGVncmVlcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUxvYW4gVGVybXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfbG9hbl90ZXJtcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUJvcnJvd2VyIFJlc2lkZW5jeToKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9ib3Jyb3dlcl9yZXNpZGVuY3knICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlIYXJkc2hpcCBEZWZlcm1lbnQ6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfaGFyZHNoaXBfZGVmZXJtZW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJQ28tc2lnbmVyIE9wdGlvbjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9jb3NpZ25lcl9vcHRpb24nICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCTwvZGl2PgoJCTwvZGl2PgoJCTw/cGhwIGlmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9yZXZpZXdfdXJsJyApICk6ID8+CgkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctcmV2aWV3Ij4KCQkJCTxwIGNsYXNzPSJsZW5kZXItcmV2aWV3LWhlYWRpbmciPgoJCQkJCVJldmlldzoKCQkJCTwvcD4KCQkJCTxwPgoJCQkJCTxhIGhyZWY9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9yZXZpZXdfdXJsJyApOyA/PiIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJsZW5kZXItcmV2aWV3LWxpbmsiPjw/cGhwIHRoZV90aXRsZSgpOyA/PiBTdHVkZW50IExvYW4gUmVmaW5hbmNpbmcgUmV2aWV3PC9hPgoJCQkJPC9wPgoJCQk8L2Rpdj4KCQk8P3BocCBlbmRpZjsgPz4KCTwvZGl2Pgo8L2Rpdj4KPD9waHAKCWVjaG8gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4nOwoJJGxlbmRlcl92aWV3X2RldGFpbHNfbGlua19qc192YXIgPSAnbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rXycgLiBnZXRfdGhlX2lkKCk7CgkkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgPSAnbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd18nIC4gZ2V0X3RoZV9pZCgpOwoJZWNobyAndmFyICcgLiAkbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rX2pzX3ZhciAuICcgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmstJyAuIGdldF90aGVfaWQoKSAuICciKVswXTsnOwoJZWNobyAkbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rX2pzX3ZhciAuICcuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigpIHsnOwoJZWNobyAndGhpcy5jbGFzc0xpc3QudG9nZ2xlKCJhY3RpdmUiKTsnOwoJZWNobyAndmFyICcgLiAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy0nIC4gZ2V0X3RoZV9pZCgpIC4gJyIpWzBdOyc7CgllY2hvICdpZiAoJyAuICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0KSB7JzsKCWVjaG8gJGxlbmRlcl9jb2xsYXBzaWJsZV9yb3dfanNfdmFyIC4gJy5zdHlsZS5tYXhIZWlnaHQgPSBudWxsOyc7CgllY2hvICd9IGVsc2Ugeyc7CgllY2hvICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0ID0gJyAuICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc2Nyb2xsSGVpZ2h0ICsgInB4IjsnOwoJZWNobyAnfSc7CgllY2hvICd9KTsnOwoJZWNobyAnPC9zY3JpcHQ+JzsKPz4= PD9waHAKCSRhcHJfbGltaXRzID0gYXJyYXkoKTsKCgkkYXByX2xpbWl0XzEgPSBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKTsKCSRhcHJfbGltaXRfMiA9IGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX3VwcGVyX2xpbWl0JyApOwoJJGFwcl9saW1pdF8zID0gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICk7CgkkYXByX2xpbWl0XzQgPSBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKTsKCglpZiggJGFwcl9saW1pdF8xICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMTsKCX0KCglpZiggJGFwcl9saW1pdF8yICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMjsKCX0KCglpZiggJGFwcl9saW1pdF8zICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMzsKCX0KCglpZiggJGFwcl9saW1pdF80ICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfNDsKCX0KPz4KPGRpdiBjbGFzcz0ibGVuZGVyLXJvdy13cmFwcGVyIj4KCTxkaXYgY2xhc3M9ImxlbmRlci1wcmltYXJ5LXJvdyI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWxvZ28td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1NMUiAtICcgLiBnZXRfdGhlX3RpdGxlKCk7ID8+IiBocmVmPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfYWZmaWxpYXRlX2xpbmsnICk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImxlbmRlci1sb2dvLWxpbmsiPgoJCQkJPGltZyBzcmM9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9sb2dvJyApWyd1cmwnXTsgPz4iIGFsdD0iPD9waHAgdGhlX3RpdGxlKCk7ID8+IiBjbGFzcz0ibGVuZGVyLWxvZ28iIC8+CgkJCTwvYT4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItdmFyaWFibGUtYXByIGxlbmRlci1wcmltYXJ5LXJvdy1jZWxsIj4KCQkJPD9waHAKCQkJCWlmKCAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfdXBwZXJfbGltaXQnICkgIT0gIi0iICkgKQoJCQkJewoJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQllY2hvICctJzsKCQkJCX0KCQkJPz4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItZml4ZWQtYXByIGxlbmRlci1wcmltYXJ5LXJvdy1jZWxsIj4KCQkJPD9waHAKCQkJCWlmKCAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfdXBwZXJfbGltaXQnICkgIT0gIi0iICkgKQoJCQkJewoJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQllY2hvICctJzsKCQkJCX0KCQkJPz4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItb3ZlcmFsbC1hcHIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8P3BocCBlY2hvIG1pbigkYXByX2xpbWl0cyk7ID8+JSAtIDw/cGhwIGVjaG8gbWF4KCRhcHJfbGltaXRzKTsgPz4lCgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWFmZmlsaWF0ZS1idXR0b24td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1NMUiAtICcgLiBnZXRfdGhlX3RpdGxlKCk7ID8+IiBocmVmPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfYWZmaWxpYXRlX2xpbmsnICk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImxlbmRlci1hZmZpbGlhdGUtYnV0dG9uIj4KCQkJCUdldCBNeSBSYXRlCgkJCTwvYT4KCQk8L2Rpdj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibGVuZGVyLXNlY29uZGFyeS1yb3ciPgoJCTxkaXYgY2xhc3M9ImxlbmRlci1sb2dvLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQkJPHAgY2xhc3M9ImxlbmRlci12aWV3LWRldGFpbHMtdHJpZ2dlciI+CgkJCQk8c3BhbiBjbGFzcz0ibGVuZGVyLXZpZXctZGV0YWlscy1saW5rIGxlbmRlci12aWV3LWRldGFpbHMtbGluay08P3BocCB0aGVfSUQoKTsgPz4iPgoJCQkJCTxzcGFuIGNsYXNzPSJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmstYXJyb3ciPjwvc3Bhbj5WaWV3IERldGFpbHMKCQkJCTxzcGFuPgoJCQk8L3A+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLXZhcmlhYmxlLWFwci1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWZpeGVkLWFwci1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLW92ZXJhbGwtYXByLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItYWZmaWxpYXRlLWJ1dHRvbi1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJCTxwIGNsYXNzPSJsZW5kZXItYWZmaWxpYXRlLWJ1dHRvbi1oZWxwZXItdGV4dCI+CgkJCQk8P3BocAoJCQkJCWlmKCBzdHJfZW5kc193aXRoKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX25hbWVfYmVsb3dfYnV0dG9uJyApLCAncycgKSApCgkJCQkJewoJCQkJCQllY2hvICdvbiAnIC4gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9uYW1lX2JlbG93X2J1dHRvbicgKSAuICdcJyB3ZWJzaXRlJzsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJZWNobyAnb24gJyAuIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfbmFtZV9iZWxvd19idXR0b24nICkgLiAnXCdzIHdlYnNpdGUnOwoJCQkJCX0KCQkJCT8+CgkJCTwvcD4KCQk8L2Rpdj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdyBsZW5kZXItY29sbGFwc2libGUtcm93LTw/cGhwIHRoZV9JRCgpOyA/PiI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2xzIj4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtMSI+CgkJCQk8aDMgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWhlYWRlciI+CgkJCQkJT3ZlcnZpZXcKCQkJCTwvaDM+CgkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC1jb250ZW50Ij4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJVmFyaWFibGUgQVBSOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAKCQkJCQkJCQlpZiggKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKSAhPSAiLSIgKSAmJiAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX3VwcGVyX2xpbWl0JyApICE9ICItIiApICkKCQkJCQkJCQl7CgkJCQkJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCQkJCQl9CgkJCQkJCQkJZWxzZQoJCQkJCQkJCXsKCQkJCQkJCQkJZWNobyAnLSc7CgkJCQkJCQkJfQoJCQkJCQkJPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUZpeGVkIEFQUjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwCgkJCQkJCQkJaWYoICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICkgIT0gIi0iICkgJiYgKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKSAhPSAiLSIgKSApCgkJCQkJCQkJewoJCQkJCQkJCQllY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApIC4gJyUgLSAnIC4gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfdXBwZXJfbGltaXQnICkgLiAnJSc7CgkJCQkJCQkJfQoJCQkJCQkJCWVsc2UKCQkJCQkJCQl7CgkJCQkJCQkJCWVjaG8gJy0nOwoJCQkJCQkJCX0KCQkJCQkJCT8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlNaW5pbXVtIENyZWRpdCBTY29yZToKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9taW5pbXVtX2NyZWRpdF9zY29yZScgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCU1pbmltdW0gSW5jb21lOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAgZWNobyBnZXRfZmllbGQoICdzbHJfbGVuZGVyX21pbmltdW1faW5jb21lJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJRmVlczoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9mZWVzJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBMb2FuIEFtb3VudDoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9taW5pbXVtX2xvYW5fYW1vdW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtMiI+CgkJCQk8aDMgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWhlYWRlciI+CgkJCQkJRGV0YWlscwoJCQkJPC9oMz4KCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWNvbnRlbnQiPgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlFbGlnaWJsZSBMb2FuczoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9lbGlnaWJsZV9sb2FucycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUVsaWdpYmxlIERlZ3JlZXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZWxpZ2libGVfZGVncmVlcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUxvYW4gVGVybXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfbG9hbl90ZXJtcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUJvcnJvd2VyIFJlc2lkZW5jeToKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9ib3Jyb3dlcl9yZXNpZGVuY3knICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlIYXJkc2hpcCBEZWZlcm1lbnQ6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfaGFyZHNoaXBfZGVmZXJtZW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJQ28tc2lnbmVyIE9wdGlvbjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9jb3NpZ25lcl9vcHRpb24nICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCTwvZGl2PgoJCTwvZGl2PgoJCTw/cGhwIGlmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9yZXZpZXdfdXJsJyApICk6ID8+CgkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctcmV2aWV3Ij4KCQkJCTxwIGNsYXNzPSJsZW5kZXItcmV2aWV3LWhlYWRpbmciPgoJCQkJCVJldmlldzoKCQkJCTwvcD4KCQkJCTxwPgoJCQkJCTxhIGhyZWY9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9yZXZpZXdfdXJsJyApOyA/PiIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJsZW5kZXItcmV2aWV3LWxpbmsiPjw/cGhwIHRoZV90aXRsZSgpOyA/PiBTdHVkZW50IExvYW4gUmVmaW5hbmNpbmcgUmV2aWV3PC9hPgoJCQkJPC9wPgoJCQk8L2Rpdj4KCQk8P3BocCBlbmRpZjsgPz4KCTwvZGl2Pgo8L2Rpdj4KPD9waHAKCWVjaG8gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4nOwoJJGxlbmRlcl92aWV3X2RldGFpbHNfbGlua19qc192YXIgPSAnbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rXycgLiBnZXRfdGhlX2lkKCk7CgkkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgPSAnbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd18nIC4gZ2V0X3RoZV9pZCgpOwoJZWNobyAndmFyICcgLiAkbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rX2pzX3ZhciAuICcgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmstJyAuIGdldF90aGVfaWQoKSAuICciKVswXTsnOwoJZWNobyAkbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rX2pzX3ZhciAuICcuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigpIHsnOwoJZWNobyAndGhpcy5jbGFzc0xpc3QudG9nZ2xlKCJhY3RpdmUiKTsnOwoJZWNobyAndmFyICcgLiAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy0nIC4gZ2V0X3RoZV9pZCgpIC4gJyIpWzBdOyc7CgllY2hvICdpZiAoJyAuICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0KSB7JzsKCWVjaG8gJGxlbmRlcl9jb2xsYXBzaWJsZV9yb3dfanNfdmFyIC4gJy5zdHlsZS5tYXhIZWlnaHQgPSBudWxsOyc7CgllY2hvICd9IGVsc2Ugeyc7CgllY2hvICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0ID0gJyAuICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc2Nyb2xsSGVpZ2h0ICsgInB4IjsnOwoJZWNobyAnfSc7CgllY2hvICd9KTsnOwoJZWNobyAnPC9zY3JpcHQ+JzsKPz4= PD9waHAKCSRhcHJfbGltaXRzID0gYXJyYXkoKTsKCgkkYXByX2xpbWl0XzEgPSBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKTsKCSRhcHJfbGltaXRfMiA9IGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX3VwcGVyX2xpbWl0JyApOwoJJGFwcl9saW1pdF8zID0gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICk7CgkkYXByX2xpbWl0XzQgPSBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKTsKCglpZiggJGFwcl9saW1pdF8xICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMTsKCX0KCglpZiggJGFwcl9saW1pdF8yICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMjsKCX0KCglpZiggJGFwcl9saW1pdF8zICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMzsKCX0KCglpZiggJGFwcl9saW1pdF80ICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfNDsKCX0KPz4KPGRpdiBjbGFzcz0ibGVuZGVyLXJvdy13cmFwcGVyIj4KCTxkaXYgY2xhc3M9ImxlbmRlci1wcmltYXJ5LXJvdyI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWxvZ28td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1NMUiAtICcgLiBnZXRfdGhlX3RpdGxlKCk7ID8+IiBocmVmPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfYWZmaWxpYXRlX2xpbmsnICk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImxlbmRlci1sb2dvLWxpbmsiPgoJCQkJPGltZyBzcmM9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9sb2dvJyApWyd1cmwnXTsgPz4iIGFsdD0iPD9waHAgdGhlX3RpdGxlKCk7ID8+IiBjbGFzcz0ibGVuZGVyLWxvZ28iIC8+CgkJCTwvYT4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItdmFyaWFibGUtYXByIGxlbmRlci1wcmltYXJ5LXJvdy1jZWxsIj4KCQkJPD9waHAKCQkJCWlmKCAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfdXBwZXJfbGltaXQnICkgIT0gIi0iICkgKQoJCQkJewoJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQllY2hvICctJzsKCQkJCX0KCQkJPz4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItZml4ZWQtYXByIGxlbmRlci1wcmltYXJ5LXJvdy1jZWxsIj4KCQkJPD9waHAKCQkJCWlmKCAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfdXBwZXJfbGltaXQnICkgIT0gIi0iICkgKQoJCQkJewoJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQllY2hvICctJzsKCQkJCX0KCQkJPz4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItb3ZlcmFsbC1hcHIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8P3BocCBlY2hvIG1pbigkYXByX2xpbWl0cyk7ID8+JSAtIDw/cGhwIGVjaG8gbWF4KCRhcHJfbGltaXRzKTsgPz4lCgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWFmZmlsaWF0ZS1idXR0b24td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1NMUiAtICcgLiBnZXRfdGhlX3RpdGxlKCk7ID8+IiBocmVmPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfYWZmaWxpYXRlX2xpbmsnICk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImxlbmRlci1hZmZpbGlhdGUtYnV0dG9uIj4KCQkJCUdldCBNeSBSYXRlCgkJCTwvYT4KCQk8L2Rpdj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibGVuZGVyLXNlY29uZGFyeS1yb3ciPgoJCTxkaXYgY2xhc3M9ImxlbmRlci1sb2dvLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQkJPHAgY2xhc3M9ImxlbmRlci12aWV3LWRldGFpbHMtdHJpZ2dlciI+CgkJCQk8c3BhbiBjbGFzcz0ibGVuZGVyLXZpZXctZGV0YWlscy1saW5rIGxlbmRlci12aWV3LWRldGFpbHMtbGluay08P3BocCB0aGVfSUQoKTsgPz4iPgoJCQkJCTxzcGFuIGNsYXNzPSJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmstYXJyb3ciPjwvc3Bhbj5WaWV3IERldGFpbHMKCQkJCTxzcGFuPgoJCQk8L3A+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLXZhcmlhYmxlLWFwci1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWZpeGVkLWFwci1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLW92ZXJhbGwtYXByLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItYWZmaWxpYXRlLWJ1dHRvbi1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJCTxwIGNsYXNzPSJsZW5kZXItYWZmaWxpYXRlLWJ1dHRvbi1oZWxwZXItdGV4dCI+CgkJCQk8P3BocAoJCQkJCWlmKCBzdHJfZW5kc193aXRoKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX25hbWVfYmVsb3dfYnV0dG9uJyApLCAncycgKSApCgkJCQkJewoJCQkJCQllY2hvICdvbiAnIC4gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9uYW1lX2JlbG93X2J1dHRvbicgKSAuICdcJyB3ZWJzaXRlJzsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJZWNobyAnb24gJyAuIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfbmFtZV9iZWxvd19idXR0b24nICkgLiAnXCdzIHdlYnNpdGUnOwoJCQkJCX0KCQkJCT8+CgkJCTwvcD4KCQk8L2Rpdj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdyBsZW5kZXItY29sbGFwc2libGUtcm93LTw/cGhwIHRoZV9JRCgpOyA/PiI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2xzIj4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtMSI+CgkJCQk8aDMgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWhlYWRlciI+CgkJCQkJT3ZlcnZpZXcKCQkJCTwvaDM+CgkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC1jb250ZW50Ij4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJVmFyaWFibGUgQVBSOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAKCQkJCQkJCQlpZiggKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKSAhPSAiLSIgKSAmJiAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX3VwcGVyX2xpbWl0JyApICE9ICItIiApICkKCQkJCQkJCQl7CgkJCQkJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCQkJCQl9CgkJCQkJCQkJZWxzZQoJCQkJCQkJCXsKCQkJCQkJCQkJZWNobyAnLSc7CgkJCQkJCQkJfQoJCQkJCQkJPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUZpeGVkIEFQUjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwCgkJCQkJCQkJaWYoICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICkgIT0gIi0iICkgJiYgKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKSAhPSAiLSIgKSApCgkJCQkJCQkJewoJCQkJCQkJCQllY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApIC4gJyUgLSAnIC4gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfdXBwZXJfbGltaXQnICkgLiAnJSc7CgkJCQkJCQkJfQoJCQkJCQkJCWVsc2UKCQkJCQkJCQl7CgkJCQkJCQkJCWVjaG8gJy0nOwoJCQkJCQkJCX0KCQkJCQkJCT8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlNaW5pbXVtIENyZWRpdCBTY29yZToKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9taW5pbXVtX2NyZWRpdF9zY29yZScgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCU1pbmltdW0gSW5jb21lOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAgZWNobyBnZXRfZmllbGQoICdzbHJfbGVuZGVyX21pbmltdW1faW5jb21lJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJRmVlczoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9mZWVzJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBMb2FuIEFtb3VudDoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9taW5pbXVtX2xvYW5fYW1vdW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtMiI+CgkJCQk8aDMgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWhlYWRlciI+CgkJCQkJRGV0YWlscwoJCQkJPC9oMz4KCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWNvbnRlbnQiPgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlFbGlnaWJsZSBMb2FuczoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9lbGlnaWJsZV9sb2FucycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUVsaWdpYmxlIERlZ3JlZXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZWxpZ2libGVfZGVncmVlcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUxvYW4gVGVybXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfbG9hbl90ZXJtcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUJvcnJvd2VyIFJlc2lkZW5jeToKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9ib3Jyb3dlcl9yZXNpZGVuY3knICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlIYXJkc2hpcCBEZWZlcm1lbnQ6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfaGFyZHNoaXBfZGVmZXJtZW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJQ28tc2lnbmVyIE9wdGlvbjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9jb3NpZ25lcl9vcHRpb24nICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCTwvZGl2PgoJCTwvZGl2PgoJCTw/cGhwIGlmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9yZXZpZXdfdXJsJyApICk6ID8+CgkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctcmV2aWV3Ij4KCQkJCTxwIGNsYXNzPSJsZW5kZXItcmV2aWV3LWhlYWRpbmciPgoJCQkJCVJldmlldzoKCQkJCTwvcD4KCQkJCTxwPgoJCQkJCTxhIGhyZWY9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9yZXZpZXdfdXJsJyApOyA/PiIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJsZW5kZXItcmV2aWV3LWxpbmsiPjw/cGhwIHRoZV90aXRsZSgpOyA/PiBTdHVkZW50IExvYW4gUmVmaW5hbmNpbmcgUmV2aWV3PC9hPgoJCQkJPC9wPgoJCQk8L2Rpdj4KCQk8P3BocCBlbmRpZjsgPz4KCTwvZGl2Pgo8L2Rpdj4KPD9waHAKCWVjaG8gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4nOwoJJGxlbmRlcl92aWV3X2RldGFpbHNfbGlua19qc192YXIgPSAnbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rXycgLiBnZXRfdGhlX2lkKCk7CgkkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgPSAnbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd18nIC4gZ2V0X3RoZV9pZCgpOwoJZWNobyAndmFyICcgLiAkbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rX2pzX3ZhciAuICcgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmstJyAuIGdldF90aGVfaWQoKSAuICciKVswXTsnOwoJZWNobyAkbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rX2pzX3ZhciAuICcuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigpIHsnOwoJZWNobyAndGhpcy5jbGFzc0xpc3QudG9nZ2xlKCJhY3RpdmUiKTsnOwoJZWNobyAndmFyICcgLiAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy0nIC4gZ2V0X3RoZV9pZCgpIC4gJyIpWzBdOyc7CgllY2hvICdpZiAoJyAuICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0KSB7JzsKCWVjaG8gJGxlbmRlcl9jb2xsYXBzaWJsZV9yb3dfanNfdmFyIC4gJy5zdHlsZS5tYXhIZWlnaHQgPSBudWxsOyc7CgllY2hvICd9IGVsc2Ugeyc7CgllY2hvICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0ID0gJyAuICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc2Nyb2xsSGVpZ2h0ICsgInB4IjsnOwoJZWNobyAnfSc7CgllY2hvICd9KTsnOwoJZWNobyAnPC9zY3JpcHQ+JzsKPz4= PD9waHAKCSRhcHJfbGltaXRzID0gYXJyYXkoKTsKCgkkYXByX2xpbWl0XzEgPSBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKTsKCSRhcHJfbGltaXRfMiA9IGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX3VwcGVyX2xpbWl0JyApOwoJJGFwcl9saW1pdF8zID0gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICk7CgkkYXByX2xpbWl0XzQgPSBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKTsKCglpZiggJGFwcl9saW1pdF8xICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMTsKCX0KCglpZiggJGFwcl9saW1pdF8yICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMjsKCX0KCglpZiggJGFwcl9saW1pdF8zICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMzsKCX0KCglpZiggJGFwcl9saW1pdF80ICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfNDsKCX0KPz4KPGRpdiBjbGFzcz0ibGVuZGVyLXJvdy13cmFwcGVyIj4KCTxkaXYgY2xhc3M9ImxlbmRlci1wcmltYXJ5LXJvdyI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWxvZ28td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1NMUiAtICcgLiBnZXRfdGhlX3RpdGxlKCk7ID8+IiBocmVmPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfYWZmaWxpYXRlX2xpbmsnICk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImxlbmRlci1sb2dvLWxpbmsiPgoJCQkJPGltZyBzcmM9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9sb2dvJyApWyd1cmwnXTsgPz4iIGFsdD0iPD9waHAgdGhlX3RpdGxlKCk7ID8+IiBjbGFzcz0ibGVuZGVyLWxvZ28iIC8+CgkJCTwvYT4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItdmFyaWFibGUtYXByIGxlbmRlci1wcmltYXJ5LXJvdy1jZWxsIj4KCQkJPD9waHAKCQkJCWlmKCAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfdXBwZXJfbGltaXQnICkgIT0gIi0iICkgKQoJCQkJewoJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQllY2hvICctJzsKCQkJCX0KCQkJPz4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItZml4ZWQtYXByIGxlbmRlci1wcmltYXJ5LXJvdy1jZWxsIj4KCQkJPD9waHAKCQkJCWlmKCAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfdXBwZXJfbGltaXQnICkgIT0gIi0iICkgKQoJCQkJewoJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQllY2hvICctJzsKCQkJCX0KCQkJPz4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItb3ZlcmFsbC1hcHIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8P3BocCBlY2hvIG1pbigkYXByX2xpbWl0cyk7ID8+JSAtIDw/cGhwIGVjaG8gbWF4KCRhcHJfbGltaXRzKTsgPz4lCgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWFmZmlsaWF0ZS1idXR0b24td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1NMUiAtICcgLiBnZXRfdGhlX3RpdGxlKCk7ID8+IiBocmVmPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfYWZmaWxpYXRlX2xpbmsnICk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImxlbmRlci1hZmZpbGlhdGUtYnV0dG9uIj4KCQkJCUdldCBNeSBSYXRlCgkJCTwvYT4KCQk8L2Rpdj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibGVuZGVyLXNlY29uZGFyeS1yb3ciPgoJCTxkaXYgY2xhc3M9ImxlbmRlci1sb2dvLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQkJPHAgY2xhc3M9ImxlbmRlci12aWV3LWRldGFpbHMtdHJpZ2dlciI+CgkJCQk8c3BhbiBjbGFzcz0ibGVuZGVyLXZpZXctZGV0YWlscy1saW5rIGxlbmRlci12aWV3LWRldGFpbHMtbGluay08P3BocCB0aGVfSUQoKTsgPz4iPgoJCQkJCTxzcGFuIGNsYXNzPSJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmstYXJyb3ciPjwvc3Bhbj5WaWV3IERldGFpbHMKCQkJCTxzcGFuPgoJCQk8L3A+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLXZhcmlhYmxlLWFwci1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWZpeGVkLWFwci1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLW92ZXJhbGwtYXByLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItYWZmaWxpYXRlLWJ1dHRvbi1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJCTxwIGNsYXNzPSJsZW5kZXItYWZmaWxpYXRlLWJ1dHRvbi1oZWxwZXItdGV4dCI+CgkJCQk8P3BocAoJCQkJCWlmKCBzdHJfZW5kc193aXRoKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX25hbWVfYmVsb3dfYnV0dG9uJyApLCAncycgKSApCgkJCQkJewoJCQkJCQllY2hvICdvbiAnIC4gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9uYW1lX2JlbG93X2J1dHRvbicgKSAuICdcJyB3ZWJzaXRlJzsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJZWNobyAnb24gJyAuIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfbmFtZV9iZWxvd19idXR0b24nICkgLiAnXCdzIHdlYnNpdGUnOwoJCQkJCX0KCQkJCT8+CgkJCTwvcD4KCQk8L2Rpdj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdyBsZW5kZXItY29sbGFwc2libGUtcm93LTw/cGhwIHRoZV9JRCgpOyA/PiI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2xzIj4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtMSI+CgkJCQk8aDMgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWhlYWRlciI+CgkJCQkJT3ZlcnZpZXcKCQkJCTwvaDM+CgkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC1jb250ZW50Ij4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJVmFyaWFibGUgQVBSOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAKCQkJCQkJCQlpZiggKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKSAhPSAiLSIgKSAmJiAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX3VwcGVyX2xpbWl0JyApICE9ICItIiApICkKCQkJCQkJCQl7CgkJCQkJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCQkJCQl9CgkJCQkJCQkJZWxzZQoJCQkJCQkJCXsKCQkJCQkJCQkJZWNobyAnLSc7CgkJCQkJCQkJfQoJCQkJCQkJPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUZpeGVkIEFQUjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwCgkJCQkJCQkJaWYoICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICkgIT0gIi0iICkgJiYgKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKSAhPSAiLSIgKSApCgkJCQkJCQkJewoJCQkJCQkJCQllY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApIC4gJyUgLSAnIC4gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfdXBwZXJfbGltaXQnICkgLiAnJSc7CgkJCQkJCQkJfQoJCQkJCQkJCWVsc2UKCQkJCQkJCQl7CgkJCQkJCQkJCWVjaG8gJy0nOwoJCQkJCQkJCX0KCQkJCQkJCT8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlNaW5pbXVtIENyZWRpdCBTY29yZToKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9taW5pbXVtX2NyZWRpdF9zY29yZScgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCU1pbmltdW0gSW5jb21lOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAgZWNobyBnZXRfZmllbGQoICdzbHJfbGVuZGVyX21pbmltdW1faW5jb21lJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJRmVlczoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9mZWVzJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBMb2FuIEFtb3VudDoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9taW5pbXVtX2xvYW5fYW1vdW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtMiI+CgkJCQk8aDMgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWhlYWRlciI+CgkJCQkJRGV0YWlscwoJCQkJPC9oMz4KCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWNvbnRlbnQiPgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlFbGlnaWJsZSBMb2FuczoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9lbGlnaWJsZV9sb2FucycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUVsaWdpYmxlIERlZ3JlZXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZWxpZ2libGVfZGVncmVlcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUxvYW4gVGVybXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfbG9hbl90ZXJtcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUJvcnJvd2VyIFJlc2lkZW5jeToKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9ib3Jyb3dlcl9yZXNpZGVuY3knICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlIYXJkc2hpcCBEZWZlcm1lbnQ6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfaGFyZHNoaXBfZGVmZXJtZW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJQ28tc2lnbmVyIE9wdGlvbjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9jb3NpZ25lcl9vcHRpb24nICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCTwvZGl2PgoJCTwvZGl2PgoJCTw/cGhwIGlmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9yZXZpZXdfdXJsJyApICk6ID8+CgkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctcmV2aWV3Ij4KCQkJCTxwIGNsYXNzPSJsZW5kZXItcmV2aWV3LWhlYWRpbmciPgoJCQkJCVJldmlldzoKCQkJCTwvcD4KCQkJCTxwPgoJCQkJCTxhIGhyZWY9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9yZXZpZXdfdXJsJyApOyA/PiIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJsZW5kZXItcmV2aWV3LWxpbmsiPjw/cGhwIHRoZV90aXRsZSgpOyA/PiBTdHVkZW50IExvYW4gUmVmaW5hbmNpbmcgUmV2aWV3PC9hPgoJCQkJPC9wPgoJCQk8L2Rpdj4KCQk8P3BocCBlbmRpZjsgPz4KCTwvZGl2Pgo8L2Rpdj4KPD9waHAKCWVjaG8gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4nOwoJJGxlbmRlcl92aWV3X2RldGFpbHNfbGlua19qc192YXIgPSAnbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rXycgLiBnZXRfdGhlX2lkKCk7CgkkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgPSAnbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd18nIC4gZ2V0X3RoZV9pZCgpOwoJZWNobyAndmFyICcgLiAkbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rX2pzX3ZhciAuICcgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmstJyAuIGdldF90aGVfaWQoKSAuICciKVswXTsnOwoJZWNobyAkbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rX2pzX3ZhciAuICcuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigpIHsnOwoJZWNobyAndGhpcy5jbGFzc0xpc3QudG9nZ2xlKCJhY3RpdmUiKTsnOwoJZWNobyAndmFyICcgLiAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy0nIC4gZ2V0X3RoZV9pZCgpIC4gJyIpWzBdOyc7CgllY2hvICdpZiAoJyAuICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0KSB7JzsKCWVjaG8gJGxlbmRlcl9jb2xsYXBzaWJsZV9yb3dfanNfdmFyIC4gJy5zdHlsZS5tYXhIZWlnaHQgPSBudWxsOyc7CgllY2hvICd9IGVsc2Ugeyc7CgllY2hvICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0ID0gJyAuICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc2Nyb2xsSGVpZ2h0ICsgInB4IjsnOwoJZWNobyAnfSc7CgllY2hvICd9KTsnOwoJZWNobyAnPC9zY3JpcHQ+JzsKPz4= PD9waHAKCSRhcHJfbGltaXRzID0gYXJyYXkoKTsKCgkkYXByX2xpbWl0XzEgPSBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKTsKCSRhcHJfbGltaXRfMiA9IGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX3VwcGVyX2xpbWl0JyApOwoJJGFwcl9saW1pdF8zID0gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICk7CgkkYXByX2xpbWl0XzQgPSBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKTsKCglpZiggJGFwcl9saW1pdF8xICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMTsKCX0KCglpZiggJGFwcl9saW1pdF8yICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMjsKCX0KCglpZiggJGFwcl9saW1pdF8zICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfMzsKCX0KCglpZiggJGFwcl9saW1pdF80ICE9ICctJyApCgl7CgkJJGFwcl9saW1pdHNbXSA9ICRhcHJfbGltaXRfNDsKCX0KPz4KPGRpdiBjbGFzcz0ibGVuZGVyLXJvdy13cmFwcGVyIj4KCTxkaXYgY2xhc3M9ImxlbmRlci1wcmltYXJ5LXJvdyI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWxvZ28td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1NMUiAtICcgLiBnZXRfdGhlX3RpdGxlKCk7ID8+IiBocmVmPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfYWZmaWxpYXRlX2xpbmsnICk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImxlbmRlci1sb2dvLWxpbmsiPgoJCQkJPGltZyBzcmM9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9sb2dvJyApWyd1cmwnXTsgPz4iIGFsdD0iPD9waHAgdGhlX3RpdGxlKCk7ID8+IiBjbGFzcz0ibGVuZGVyLWxvZ28iIC8+CgkJCTwvYT4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItdmFyaWFibGUtYXByIGxlbmRlci1wcmltYXJ5LXJvdy1jZWxsIj4KCQkJPD9waHAKCQkJCWlmKCAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfdXBwZXJfbGltaXQnICkgIT0gIi0iICkgKQoJCQkJewoJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQllY2hvICctJzsKCQkJCX0KCQkJPz4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItZml4ZWQtYXByIGxlbmRlci1wcmltYXJ5LXJvdy1jZWxsIj4KCQkJPD9waHAKCQkJCWlmKCAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfdXBwZXJfbGltaXQnICkgIT0gIi0iICkgKQoJCQkJewoJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQllY2hvICctJzsKCQkJCX0KCQkJPz4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItb3ZlcmFsbC1hcHIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8P3BocCBlY2hvIG1pbigkYXByX2xpbWl0cyk7ID8+JSAtIDw/cGhwIGVjaG8gbWF4KCRhcHJfbGltaXRzKTsgPz4lCgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWFmZmlsaWF0ZS1idXR0b24td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1NMUiAtICcgLiBnZXRfdGhlX3RpdGxlKCk7ID8+IiBocmVmPSI8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfYWZmaWxpYXRlX2xpbmsnICk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImxlbmRlci1hZmZpbGlhdGUtYnV0dG9uIj4KCQkJCUdldCBNeSBSYXRlCgkJCTwvYT4KCQk8L2Rpdj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibGVuZGVyLXNlY29uZGFyeS1yb3ciPgoJCTxkaXYgY2xhc3M9ImxlbmRlci1sb2dvLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQkJPHAgY2xhc3M9ImxlbmRlci12aWV3LWRldGFpbHMtdHJpZ2dlciI+CgkJCQk8c3BhbiBjbGFzcz0ibGVuZGVyLXZpZXctZGV0YWlscy1saW5rIGxlbmRlci12aWV3LWRldGFpbHMtbGluay08P3BocCB0aGVfSUQoKTsgPz4iPgoJCQkJCTxzcGFuIGNsYXNzPSJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmstYXJyb3ciPjwvc3Bhbj5WaWV3IERldGFpbHMKCQkJCTxzcGFuPgoJCQk8L3A+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLXZhcmlhYmxlLWFwci1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWZpeGVkLWFwci1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLW92ZXJhbGwtYXByLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItYWZmaWxpYXRlLWJ1dHRvbi1zZWNvbmRhcnktcm93LWNlbGwgbGVuZGVyLXNlY29uZGFyeS1yb3ctY2VsbCI+CgkJCTxwIGNsYXNzPSJsZW5kZXItYWZmaWxpYXRlLWJ1dHRvbi1oZWxwZXItdGV4dCI+CgkJCQk8P3BocAoJCQkJCWlmKCBzdHJfZW5kc193aXRoKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX25hbWVfYmVsb3dfYnV0dG9uJyApLCAncycgKSApCgkJCQkJewoJCQkJCQllY2hvICdvbiAnIC4gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9uYW1lX2JlbG93X2J1dHRvbicgKSAuICdcJyB3ZWJzaXRlJzsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJZWNobyAnb24gJyAuIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfbmFtZV9iZWxvd19idXR0b24nICkgLiAnXCdzIHdlYnNpdGUnOwoJCQkJCX0KCQkJCT8+CgkJCTwvcD4KCQk8L2Rpdj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdyBsZW5kZXItY29sbGFwc2libGUtcm93LTw/cGhwIHRoZV9JRCgpOyA/PiI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2xzIj4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtMSI+CgkJCQk8aDMgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWhlYWRlciI+CgkJCQkJT3ZlcnZpZXcKCQkJCTwvaDM+CgkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC1jb250ZW50Ij4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJVmFyaWFibGUgQVBSOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAKCQkJCQkJCQlpZiggKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKSAhPSAiLSIgKSAmJiAoIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfdmFyaWFibGVfYXByX3VwcGVyX2xpbWl0JyApICE9ICItIiApICkKCQkJCQkJCQl7CgkJCQkJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICkgLiAnJSAtICcgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCQkJCQl9CgkJCQkJCQkJZWxzZQoJCQkJCQkJCXsKCQkJCQkJCQkJZWNobyAnLSc7CgkJCQkJCQkJfQoJCQkJCQkJPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUZpeGVkIEFQUjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwCgkJCQkJCQkJaWYoICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICkgIT0gIi0iICkgJiYgKCBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKSAhPSAiLSIgKSApCgkJCQkJCQkJewoJCQkJCQkJCQllY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApIC4gJyUgLSAnIC4gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9maXhlZF9hcHJfdXBwZXJfbGltaXQnICkgLiAnJSc7CgkJCQkJCQkJfQoJCQkJCQkJCWVsc2UKCQkJCQkJCQl7CgkJCQkJCQkJCWVjaG8gJy0nOwoJCQkJCQkJCX0KCQkJCQkJCT8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlNaW5pbXVtIENyZWRpdCBTY29yZToKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9taW5pbXVtX2NyZWRpdF9zY29yZScgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCU1pbmltdW0gSW5jb21lOgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy12YWx1ZS1jb2wiPgoJCQkJCQkJPD9waHAgZWNobyBnZXRfZmllbGQoICdzbHJfbGVuZGVyX21pbmltdW1faW5jb21lJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJRmVlczoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9mZWVzJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBMb2FuIEFtb3VudDoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9taW5pbXVtX2xvYW5fYW1vdW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtMiI+CgkJCQk8aDMgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWhlYWRlciI+CgkJCQkJRGV0YWlscwoJCQkJPC9oMz4KCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWNvbnRlbnQiPgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlFbGlnaWJsZSBMb2FuczoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9lbGlnaWJsZV9sb2FucycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUVsaWdpYmxlIERlZ3JlZXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfZWxpZ2libGVfZGVncmVlcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUxvYW4gVGVybXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfbG9hbl90ZXJtcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUJvcnJvd2VyIFJlc2lkZW5jeToKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9ib3Jyb3dlcl9yZXNpZGVuY3knICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlIYXJkc2hpcCBEZWZlcm1lbnQ6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3Nscl9sZW5kZXJfaGFyZHNoaXBfZGVmZXJtZW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJQ28tc2lnbmVyIE9wdGlvbjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9jb3NpZ25lcl9vcHRpb24nICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCTwvZGl2PgoJCTwvZGl2PgoJCTw/cGhwIGlmICggZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9yZXZpZXdfdXJsJyApICk6ID8+CgkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctcmV2aWV3Ij4KCQkJCTxwIGNsYXNzPSJsZW5kZXItcmV2aWV3LWhlYWRpbmciPgoJCQkJCVJldmlldzoKCQkJCTwvcD4KCQkJCTxwPgoJCQkJCTxhIGhyZWY9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAnc2xyX2xlbmRlcl9yZXZpZXdfdXJsJyApOyA/PiIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJsZW5kZXItcmV2aWV3LWxpbmsiPjw/cGhwIHRoZV90aXRsZSgpOyA/PiBTdHVkZW50IExvYW4gUmVmaW5hbmNpbmcgUmV2aWV3PC9hPgoJCQkJPC9wPgoJCQk8L2Rpdj4KCQk8P3BocCBlbmRpZjsgPz4KCTwvZGl2Pgo8L2Rpdj4KPD9waHAKCWVjaG8gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4nOwoJJGxlbmRlcl92aWV3X2RldGFpbHNfbGlua19qc192YXIgPSAnbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rXycgLiBnZXRfdGhlX2lkKCk7CgkkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgPSAnbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd18nIC4gZ2V0X3RoZV9pZCgpOwoJZWNobyAndmFyICcgLiAkbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rX2pzX3ZhciAuICcgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmstJyAuIGdldF90aGVfaWQoKSAuICciKVswXTsnOwoJZWNobyAkbGVuZGVyX3ZpZXdfZGV0YWlsc19saW5rX2pzX3ZhciAuICcuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigpIHsnOwoJZWNobyAndGhpcy5jbGFzc0xpc3QudG9nZ2xlKCJhY3RpdmUiKTsnOwoJZWNobyAndmFyICcgLiAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy0nIC4gZ2V0X3RoZV9pZCgpIC4gJyIpWzBdOyc7CgllY2hvICdpZiAoJyAuICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0KSB7JzsKCWVjaG8gJGxlbmRlcl9jb2xsYXBzaWJsZV9yb3dfanNfdmFyIC4gJy5zdHlsZS5tYXhIZWlnaHQgPSBudWxsOyc7CgllY2hvICd9IGVsc2Ugeyc7CgllY2hvICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0ID0gJyAuICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc2Nyb2xsSGVpZ2h0ICsgInB4IjsnOwoJZWNobyAnfSc7CgllY2hvICd9KTsnOwoJZWNobyAnPC9zY3JpcHQ+JzsKPz4=

PD9waHAKCSRvdXRwdXQgPSAnJzsKCQoJJGFyZ3MgPSBhcnJheSgKICAgICAgICAncG9zdF90eXBlJyA9PiAnc2xyX2xlbmRlcicsCiAgICAgICAgJ3Bvc3RzX3Blcl9wYWdlJyA9PiAtMSwKCQknbWV0YV9xdWVyeScgPT4gYXJyYXkoCgkJCQkJCQkncmVsYXRpb24nID0+ICdBTkQnLAoJCQkJCQkJYXJyYXkoCgkJCQkJCQkJJ2tleScgPT4gJ3Nscl9sZW5kZXJfdmlzaWJsZScsCgkJCQkJCQkJJ3ZhbHVlJyA9PiAnMScsCgkJCQkJCQkJJ2NvbXBhcmUnID0+ICc9JywKCQkJCQkJCSksCgkJCQkJCQlhcnJheSgKCQkJCQkJCQkna2V5JyA9PiAnc2xyX2xlbmRlcl9kaXNjbG9zdXJlX3VybCcsCgkJCQkJCQkJJ2NvbXBhcmUnID0+ICdFWElTVFMnLAoJCQkJCQkJKSwKCQkJCQkJKSwKCQknbWV0YV9rZXknID0+ICdzbHJfbGVuZGVyX3Bvc2l0aW9uJywKCQknb3JkZXJieScgPT4gJ21ldGFfdmFsdWVfbnVtJywKCQknb3JkZXInID0+ICdBU0MnLAogICAgKTsKCgkkbG9vcCA9IG5ldyBXUF9RdWVyeSggJGFyZ3MgKTsKCglpZiAoICRsb29wIC0+IGhhdmVfcG9zdHMoKSApIHsKCQkKCQkkb3V0cHV0ID0gJ0Rpc2Nsb3N1cmVzOiAnOwoJCQoJCXdoaWxlICggJGxvb3AgLT4gaGF2ZV9wb3N0cygpICkgewoJCQkKCQkJJGxvb3AgLT4gdGhlX3Bvc3QoKTsKCQkJCgkJCSRvdXRwdXQgLj0gJzxhIGhyZWY9IicgLiBnZXRfZmllbGQoICdzbHJfbGVuZGVyX2Rpc2Nsb3N1cmVfdXJsJyApIC4gJyIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9mb2xsb3ciPicgLiBnZXRfdGhlX3RpdGxlKCkgLiAnPC9hPiB8ICc7CgkJCQoJCX0KCQkKCX0KCgl3cF9yZXNldF9wb3N0ZGF0YSgpOwoKCSRvdXRwdXQgPSBzdWJzdHIoICRvdXRwdXQsIDAsIHN0cmxlbiggJG91dHB1dCApIC0gMyApOwoKCWVjaG8gJG91dHB1dDsKPz4=

Here are 5 ways to pay off $50,000 of student loans:

  1. Refinance student loans
  2. Increase student loan payments
  3. Consider an income-driven repayment plan
  4. Pursue student loan forgiveness
  5. Refinance student loans with a cosigner

Refinance student loans

If you have $50,000 of student loans, your best options may be to refinance student loans. Student loan refinancing helps you get a lower interest rate and lower monthly payment so that you can pay off your student loans faster. First, it's possible to combine your existing federal student loans, private student loans or both into a single student loan with a lower interest rate, which can save you money. Second, you can refinance both college and graduate school student loans, and you can choose a fixed or variable interest rate. Third, you can also choose a student loan repayment term from 5 to 20 years, which can provide flexibility for student loan repayment.

Compare the latest rates for student loan refinancing.

How much money can you save with student loan refinancing? This student loan refinancing calculator shows you how much you can save when you refinance student loans.

For example, let’s assume that you have $50,000 of student loans at a 7% interest rate and a 10-year repayment term. Let’s assume you refinance student loans at a 3% interest rate and a 10-year repayment term. You would save $98 each month and $11,729 overall.

There are no application fees, origination fees or prepayment fees when you refinance student loans. To qualify to refinance student loans, you typically need a 650 credit score, be currently employed with steady income, and have enough monthly cash flow to pay debt and living expenses.

Here are helpful resources for student loan refinancing:

Increase student loan payments

If you want to know how to pay off $50,000 of student loans, you can increase your student loan payments. This assumes that you have extra funds to pay off student loans, which not everyone has. If you have extra funds of any amount, you can instruct your student loan servicer to apply your extra student loan payment to pay off your principal student loan balance. For example, you could increase your monthly payment by $100 each month.

This student loan payoff calculator shows you how much money you can save when you pay off your student loans faster.

Let’s assume that you have $50,000 of student loans and an 8% interest rate. Let’s also assume that your monthly student loan payment is $607. If you pay an extra $100 per month (for a total of $707 per month), you could pay off your student loans 1.99 years earlier and save $4,923.

Consider an income-driven repayment plan

Another way to pay off $50,000 of student loans is to enroll in an income-driven repayment plan. An income-driven repayment plan bases your monthly federal student loan payment on your discretionary income, family size and state of residence. With an income-driven repayment plan, it’s possible to get a federal student loan payment as low as $0 each month.

There are four income-driven repayment plans:

After 20 years (undergraduate student loans) or 25 years (graduate student loans) of on-time monthly payments, you can get student loan forgiveness for your remaining federal student loan balance.

Pursue student loan forgiveness

Pursue student loan forgiveness

If you want to know how to pay off $50,000 of student loans, you could consider student loan forgiveness. Student loan forgiveness is available for federal student loans only through the federal government. There are multiple opportunities for federal student loan forgiveness. Two popular options include public service loan forgiveness and teacher loan forgiveness. There are also opportunities for student loan forgiveness. For example, if you have a total and permanent disability, you could qualify for total student loan cancellation. Similarly, if you were misled by your college or university, you could qualify for student loan forgiveness under borrower defense to repayment.

Public Service Loan Forgiveness

If you have $50,000 of federal student loans, you could get student loan forgiveness through the Public Service Loan Forgiveness program. To qualify, you must work full-time for a qualified public service or non-profit employer and make 120 monthly student loan payments. You also must meet other requirements, including making a majority of federal student loan payments while enrolled in an income-driven repayment plan.

This public service loan forgiveness calculator shows you your monthly student loan payment and how much student loan forgiveness you can get when you enroll in public service loan forgiveness.

Teacher Student Loan Forgiveness

While public service loan forgiveness provides full student loan forgiveness, the Teacher Loan Forgiveness program can provide up to $17,500 of federal student loan forgiveness. To qualify, you must be employed full-time for five complete and consecutive academic years at an elementary school, secondary school or educational service agency that serves low-income students.

Refinance student loans with a cosigner

If you want to pay off $50,000 of student loans, you could also refinance student loans with a cosigner. A cosigner is a relative such as a parent or spouse that helps you get approved for student loan refinancing and qualify for a lower interest rate. A qualified cosigner will assume equal financial responsibility for your student loans and should have strong credit and stable income. A qualified cosigner can be especially helpful if you don’t qualify on your own for student loan refinancing. Alternatively, you may qualify for student loan refinancing, but a cosigner can help you get a lower interest rate so you can save money.

Compare the latest rates for student loan refinancing.

Let's mentor your money

Get the latest personal finance advice delivered directly to your inbox.