The Complete Guide To Pay Off Parent PLUS Loans

By Mentor Staff | Edited By Mentor Staff

Updated On March 3, 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 Parent PLUS Loans, or your parent’s have Parent PLUS Loans, here is everything you need to know about how to pay off Parent PLUS Loans. Parent PLUS Loans are federal student loans that you can borrow from the federal government to help pay for a dependent’s education. It’s essential to know all your options to pay off Parent PLUS Loans.

Top Picks For Parent PLUS Loan Refinancing

PD9waHAKCWVjaG8gZGF0ZSgnRicpIC4gIiAiIC4gZGF0ZSgiWSIpOwo/Pg==

PGRpdiBjbGFzcz0ibGVuZGVycy10YWJsZS1oZWFkZXItcm93LXdyYXBwZXIiPgoJPGRpdiBjbGFzcz0ibGVuZGVycy10YWJsZS1oZWFkZXItcm93Ij4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItbG9nby1oZWFkZXIgbGVuZGVycy10YWJsZS1oZWFkZXItY2VsbCI+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLXZhcmlhYmxlLWFwci1oZWFkZXIgbGVuZGVycy10YWJsZS1oZWFkZXItY2VsbCI+CgkJCVZhcmlhYmxlIEFQUiA8c3BhbiBjbGFzcz0ibW9yZS1pbmZvLXRvb2x0aXAtdHJpZ2dlciI+PzxzcGFuIGNsYXNzPSJtb3JlLWluZm8tdG9vbHRpcC10ZXh0Ij5BUFIsIG9yIEFubnVhbCBQZXJjZW50YWdlIFJhdGUsIGlzIHRoZSBwcmljZSB5b3UgcGF5IHRvIGJvcnJvdyBtb25leS4gVmFyaWFibGUgQVBSIG1lYW5zIHRoYXQgeW91ciBpbnRlcmVzdCByYXRlIGNhbiBmbHVjdHVhdGUgb3ZlciB0aW1lLCB3aGljaCBjYW4gaW5jcmVhc2Ugb3IgZGVjcmVhc2UgeW91ciBtb250aGx5IHN0dWRlbnQgbG9hbiBwYXltZW50LiBUeXBpY2FsbHksIGEgdmFyaWFibGUtcmF0ZSBsb2FuIGhhcyBhIGxvd2VyIGludHJvZHVjdG9yeSByYXRlIHRoYW4gYSBmaXhlZC1sb2FuIHJhdGUgbG9hbi4gVmFyaWFibGUgQVBSIGluY2x1ZGVzIGEgMC4yNSUgZGlzY291bnQgd2hlbiB5b3UgZW5yb2xsIGluIGF1dG9wYXkuPC9zcGFuPjwvc3Bhbj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItZml4ZWQtYXByLWhlYWRlciBsZW5kZXJzLXRhYmxlLWhlYWRlci1jZWxsIj4KCQkJRml4ZWQgQVBSIDxzcGFuIGNsYXNzPSJtb3JlLWluZm8tdG9vbHRpcC10cmlnZ2VyIj4/PHNwYW4gY2xhc3M9Im1vcmUtaW5mby10b29sdGlwLXRleHQiPkFQUiwgb3IgQW5udWFsIFBlcmNlbnRhZ2UgUmF0ZSwgaXMgdGhlIHByaWNlIHlvdSBwYXkgdG8gYm9ycm93IG1vbmV5LiBGaXhlZCBBUFIgbWVhbnMgdGhhdCB5b3VyIGludGVyZXN0IHJhdGUgd2lsbCBhbHdheXMgc3RheSB0aGUgc2FtZS4gRXZlbiBpZiBpbnRlcmVzdCByYXRlcyBjaGFuZ2UsIHlvdXIgaW50ZXJlc3QgcmF0ZSBvciBtb250aGx5IHBheW1lbnQgd2lsbCBub3QuIEZpeGVkIEFQUiBpbmNsdWRlcyBhIDAuMjUlIGRpc2NvdW50IHdoZW4geW91IGVucm9sbCBpbiBhdXRvcGF5Ljwvc3Bhbj48L3NwYW4+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLW92ZXJhbGwtYXByLWhlYWRlciBsZW5kZXJzLXRhYmxlLWhlYWRlci1jZWxsIj4KCQkJQVBSCgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWFmZmlsaWF0ZS1idXR0b24taGVhZGVyIGxlbmRlcnMtdGFibGUtaGVhZGVyLWNlbGwiPgoJCTwvZGl2PgoJPC9kaXY+CjwvZGl2Pg==
PD9waHAKCSRhcHJfbGltaXRzID0gYXJyYXkoKTsKCgkkYXByX2xpbWl0XzEgPSBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICk7CgkkYXByX2xpbWl0XzIgPSBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl92YXJpYWJsZV9hcHJfdXBwZXJfbGltaXQnICk7CgkkYXByX2xpbWl0XzMgPSBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICk7CgkkYXByX2xpbWl0XzQgPSBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl9maXhlZF9hcHJfdXBwZXJfbGltaXQnICk7CgoJaWYoICRhcHJfbGltaXRfMSAhPSAnLScgKQoJewoJCSRhcHJfbGltaXRzW10gPSAkYXByX2xpbWl0XzE7Cgl9CgoJaWYoICRhcHJfbGltaXRfMiAhPSAnLScgKQoJewoJCSRhcHJfbGltaXRzW10gPSAkYXByX2xpbWl0XzI7Cgl9CgoJaWYoICRhcHJfbGltaXRfMyAhPSAnLScgKQoJewoJCSRhcHJfbGltaXRzW10gPSAkYXByX2xpbWl0XzM7Cgl9CgoJaWYoICRhcHJfbGltaXRfNCAhPSAnLScgKQoJewoJCSRhcHJfbGltaXRzW10gPSAkYXByX2xpbWl0XzQ7Cgl9Cj8+CjxkaXYgY2xhc3M9ImxlbmRlci1yb3ctd3JhcHBlciI+Cgk8ZGl2IGNsYXNzPSJsZW5kZXItcHJpbWFyeS1yb3ciPgoJCTxkaXYgY2xhc3M9ImxlbmRlci1sb2dvLXdyYXBwZXIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8YSBkYXRhLWV2ZW50LWxhYmVsPSI8P3BocCBlY2hvICdQUExSIC0gJyAuIGdldF90aGVfdGl0bGUoKTsgPz4iIGhyZWY9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfYWZmaWxpYXRlX2xpbmsnICk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImxlbmRlci1sb2dvLWxpbmsiPgoJCQkJPGltZyBzcmM9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfbG9nbycgKVsndXJsJ107ID8+IiBhbHQ9Ijw/cGhwIHRoZV90aXRsZSgpOyA/PiIgY2xhc3M9ImxlbmRlci1sb2dvIiAvPgoJCQk8L2E+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLXZhcmlhYmxlLWFwciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTw/cGhwCgkJCQlpZiggKCBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICkgIT0gIi0iICkgJiYgKCBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl92YXJpYWJsZV9hcHJfdXBwZXJfbGltaXQnICkgIT0gIi0iICkgKQoJCQkJewoJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfdmFyaWFibGVfYXByX2xvd2VyX2xpbWl0JyApIC4gJyUgLSAnIC4gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfdmFyaWFibGVfYXByX3VwcGVyX2xpbWl0JyApIC4gJyUnOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCWVjaG8gJy0nOwoJCQkJfQoJCQk/PgoJCTwvZGl2PgoJCTxkaXYgY2xhc3M9ImxlbmRlci1maXhlZC1hcHIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8P3BocAoJCQkJaWYoICggZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX3VwcGVyX2xpbWl0JyApICE9ICItIiApICkKCQkJCXsKCQkJCQllY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX2ZpeGVkX2Fwcl9sb3dlcl9saW1pdCcgKSAuICclIC0gJyAuIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQllY2hvICctJzsKCQkJCX0KCQkJPz4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItb3ZlcmFsbC1hcHIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8P3BocCBlY2hvIG1pbigkYXByX2xpbWl0cyk7ID8+JSAtIDw/cGhwIGVjaG8gbWF4KCRhcHJfbGltaXRzKTsgPz4lCgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWFmZmlsaWF0ZS1idXR0b24td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1BQTFIgLSAnIC4gZ2V0X3RoZV90aXRsZSgpOyA/PiIgaHJlZj0iPD9waHAgZWNobyBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl9hZmZpbGlhdGVfbGluaycgKTsgPz4iIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vZm9sbG93IiBjbGFzcz0ibGVuZGVyLWFmZmlsaWF0ZS1idXR0b24iPgoJCQkJR2V0IE15IFJhdGUKCQkJPC9hPgoJCTwvZGl2PgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJsZW5kZXItc2Vjb25kYXJ5LXJvdyI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWxvZ28tc2Vjb25kYXJ5LXJvdy1jZWxsIGxlbmRlci1zZWNvbmRhcnktcm93LWNlbGwiPgoJCQk8cCBjbGFzcz0ibGVuZGVyLXZpZXctZGV0YWlscy10cmlnZ2VyIj4KCQkJCTxzcGFuIGNsYXNzPSJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmsgbGVuZGVyLXZpZXctZGV0YWlscy1saW5rLTw/cGhwIHRoZV9JRCgpOyA/PiI+CgkJCQkJPHNwYW4gY2xhc3M9ImxlbmRlci12aWV3LWRldGFpbHMtbGluay1hcnJvdyI+PC9zcGFuPlZpZXcgRGV0YWlscwoJCQkJPHNwYW4+CgkJCTwvcD4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItdmFyaWFibGUtYXByLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItZml4ZWQtYXByLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItb3ZlcmFsbC1hcHItc2Vjb25kYXJ5LXJvdy1jZWxsIGxlbmRlci1zZWNvbmRhcnktcm93LWNlbGwiPgoJCTwvZGl2PgoJCTxkaXYgY2xhc3M9ImxlbmRlci1hZmZpbGlhdGUtYnV0dG9uLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQkJPHAgY2xhc3M9ImxlbmRlci1hZmZpbGlhdGUtYnV0dG9uLWhlbHBlci10ZXh0Ij4KCQkJCTw/cGhwCgkJCQkJaWYoIHN0cl9lbmRzX3dpdGgoIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX25hbWVfYmVsb3dfYnV0dG9uJyApLCAncycgKSApCgkJCQkJewoJCQkJCQllY2hvICdvbiAnIC4gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfbmFtZV9iZWxvd19idXR0b24nICkgLiAnXCcgd2Vic2l0ZSc7CgkJCQkJfQoJCQkJCWVsc2UKCQkJCQl7CgkJCQkJCWVjaG8gJ29uICcgLiBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl9uYW1lX2JlbG93X2J1dHRvbicgKSAuICdcJ3Mgd2Vic2l0ZSc7CgkJCQkJfQoJCQkJPz4KCQkJPC9wPgoJCTwvZGl2PgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93IGxlbmRlci1jb2xsYXBzaWJsZS1yb3ctPD9waHAgdGhlX0lEKCk7ID8+Ij4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbHMiPgoJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC0xIj4KCQkJCTxoMyBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtaGVhZGVyIj4KCQkJCQlPdmVydmlldwoJCQkJPC9oMz4KCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWNvbnRlbnQiPgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlWYXJpYWJsZSBBUFI6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocAoJCQkJCQkJCWlmKCAoIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKSAhPSAiLSIgKSAmJiAoIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAhPSAiLSIgKSApCgkJCQkJCQkJewoJCQkJCQkJCQllY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKSAuICclIC0gJyAuIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCQkJCQl9CgkJCQkJCQkJZWxzZQoJCQkJCQkJCXsKCQkJCQkJCQkJZWNobyAnLSc7CgkJCQkJCQkJfQoJCQkJCQkJPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUZpeGVkIEFQUjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwCgkJCQkJCQkJaWYoICggZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX3VwcGVyX2xpbWl0JyApICE9ICItIiApICkKCQkJCQkJCQl7CgkJCQkJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApIC4gJyUgLSAnIC4gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX3VwcGVyX2xpbWl0JyApIC4gJyUnOwoJCQkJCQkJCX0KCQkJCQkJCQllbHNlCgkJCQkJCQkJewoJCQkJCQkJCQllY2hvICctJzsKCQkJCQkJCQl9CgkJCQkJCQk/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBDcmVkaXQgU2NvcmU6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX21pbmltdW1fY3JlZGl0X3Njb3JlJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBJbmNvbWU6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX21pbmltdW1faW5jb21lJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJRmVlczoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZmVlcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLTIiPgoJCQkJPGgzIGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC1oZWFkZXIiPgoJCQkJCURldGFpbHMKCQkJCTwvaDM+CgkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC1jb250ZW50Ij4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJRWxpZ2libGUgTG9hbnM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX2VsaWdpYmxlX2xvYW5zJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBMb2FuIEFtb3VudDoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfbWluaW11bV9sb2FuX2Ftb3VudCcgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUxvYW4gVGVybXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX2xvYW5fdGVybXMnICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlCb3Jyb3dlciBSZXNpZGVuY3k6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX2JvcnJvd2VyX3Jlc2lkZW5jeScgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUhhcmRzaGlwIERlZmVybWVudDoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfaGFyZHNoaXBfZGVmZXJtZW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJQ28tc2lnbmVyIE9wdGlvbjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfY29zaWduZXJfb3B0aW9uJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQk8L2Rpdj4KCQk8P3BocCBpZiAoIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX3Jldmlld191cmwnICkgKTogPz4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1yZXZpZXciPgoJCQkJPHAgY2xhc3M9ImxlbmRlci1yZXZpZXctaGVhZGluZyI+CgkJCQkJUmV2aWV3OgoJCQkJPC9wPgoJCQkJPHA+CgkJCQkJPGEgaHJlZj0iPD9waHAgZWNobyBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl9yZXZpZXdfdXJsJyApOyA/PiIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJsZW5kZXItcmV2aWV3LWxpbmsiPjw/cGhwIHRoZV90aXRsZSgpOyA/PiBQYXJlbnQgUExVUyBMb2FuIFJlZmluYW5jaW5nIFJldmlldzwvYT4KCQkJCTwvcD4KCQkJPC9kaXY+CgkJPD9waHAgZW5kaWY7ID8+Cgk8L2Rpdj4KPC9kaXY+Cjw/cGhwCgllY2hvICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+JzsKCSRsZW5kZXJfdmlld19kZXRhaWxzX2xpbmtfanNfdmFyID0gJ2xlbmRlcl92aWV3X2RldGFpbHNfbGlua18nIC4gZ2V0X3RoZV9pZCgpOwoJJGxlbmRlcl9jb2xsYXBzaWJsZV9yb3dfanNfdmFyID0gJ2xlbmRlcl9jb2xsYXBzaWJsZV9yb3dfJyAuIGdldF90aGVfaWQoKTsKCWVjaG8gJ3ZhciAnIC4gJGxlbmRlcl92aWV3X2RldGFpbHNfbGlua19qc192YXIgLiAnID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgibGVuZGVyLXZpZXctZGV0YWlscy1saW5rLScgLiBnZXRfdGhlX2lkKCkgLiAnIilbMF07JzsKCWVjaG8gJGxlbmRlcl92aWV3X2RldGFpbHNfbGlua19qc192YXIgLiAnLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oKSB7JzsKCWVjaG8gJ3RoaXMuY2xhc3NMaXN0LnRvZ2dsZSgiYWN0aXZlIik7JzsKCWVjaG8gJ3ZhciAnIC4gJGxlbmRlcl9jb2xsYXBzaWJsZV9yb3dfanNfdmFyIC4gJyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctJyAuIGdldF90aGVfaWQoKSAuICciKVswXTsnOwoJZWNobyAnaWYgKCcgLiAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnLnN0eWxlLm1heEhlaWdodCkgeyc7CgllY2hvICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0ID0gbnVsbDsnOwoJZWNobyAnfSBlbHNlIHsnOwoJZWNobyAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnLnN0eWxlLm1heEhlaWdodCA9ICcgLiAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnLnNjcm9sbEhlaWdodCArICJweCI7JzsKCWVjaG8gJ30nOwoJZWNobyAnfSk7JzsKCWVjaG8gJzwvc2NyaXB0Pic7Cj8+ PD9waHAKCSRhcHJfbGltaXRzID0gYXJyYXkoKTsKCgkkYXByX2xpbWl0XzEgPSBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICk7CgkkYXByX2xpbWl0XzIgPSBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl92YXJpYWJsZV9hcHJfdXBwZXJfbGltaXQnICk7CgkkYXByX2xpbWl0XzMgPSBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICk7CgkkYXByX2xpbWl0XzQgPSBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl9maXhlZF9hcHJfdXBwZXJfbGltaXQnICk7CgoJaWYoICRhcHJfbGltaXRfMSAhPSAnLScgKQoJewoJCSRhcHJfbGltaXRzW10gPSAkYXByX2xpbWl0XzE7Cgl9CgoJaWYoICRhcHJfbGltaXRfMiAhPSAnLScgKQoJewoJCSRhcHJfbGltaXRzW10gPSAkYXByX2xpbWl0XzI7Cgl9CgoJaWYoICRhcHJfbGltaXRfMyAhPSAnLScgKQoJewoJCSRhcHJfbGltaXRzW10gPSAkYXByX2xpbWl0XzM7Cgl9CgoJaWYoICRhcHJfbGltaXRfNCAhPSAnLScgKQoJewoJCSRhcHJfbGltaXRzW10gPSAkYXByX2xpbWl0XzQ7Cgl9Cj8+CjxkaXYgY2xhc3M9ImxlbmRlci1yb3ctd3JhcHBlciI+Cgk8ZGl2IGNsYXNzPSJsZW5kZXItcHJpbWFyeS1yb3ciPgoJCTxkaXYgY2xhc3M9ImxlbmRlci1sb2dvLXdyYXBwZXIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8YSBkYXRhLWV2ZW50LWxhYmVsPSI8P3BocCBlY2hvICdQUExSIC0gJyAuIGdldF90aGVfdGl0bGUoKTsgPz4iIGhyZWY9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfYWZmaWxpYXRlX2xpbmsnICk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImxlbmRlci1sb2dvLWxpbmsiPgoJCQkJPGltZyBzcmM9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfbG9nbycgKVsndXJsJ107ID8+IiBhbHQ9Ijw/cGhwIHRoZV90aXRsZSgpOyA/PiIgY2xhc3M9ImxlbmRlci1sb2dvIiAvPgoJCQk8L2E+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLXZhcmlhYmxlLWFwciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTw/cGhwCgkJCQlpZiggKCBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICkgIT0gIi0iICkgJiYgKCBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl92YXJpYWJsZV9hcHJfdXBwZXJfbGltaXQnICkgIT0gIi0iICkgKQoJCQkJewoJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfdmFyaWFibGVfYXByX2xvd2VyX2xpbWl0JyApIC4gJyUgLSAnIC4gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfdmFyaWFibGVfYXByX3VwcGVyX2xpbWl0JyApIC4gJyUnOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCWVjaG8gJy0nOwoJCQkJfQoJCQk/PgoJCTwvZGl2PgoJCTxkaXYgY2xhc3M9ImxlbmRlci1maXhlZC1hcHIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8P3BocAoJCQkJaWYoICggZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX3VwcGVyX2xpbWl0JyApICE9ICItIiApICkKCQkJCXsKCQkJCQllY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX2ZpeGVkX2Fwcl9sb3dlcl9saW1pdCcgKSAuICclIC0gJyAuIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQllY2hvICctJzsKCQkJCX0KCQkJPz4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItb3ZlcmFsbC1hcHIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8P3BocCBlY2hvIG1pbigkYXByX2xpbWl0cyk7ID8+JSAtIDw/cGhwIGVjaG8gbWF4KCRhcHJfbGltaXRzKTsgPz4lCgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWFmZmlsaWF0ZS1idXR0b24td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1BQTFIgLSAnIC4gZ2V0X3RoZV90aXRsZSgpOyA/PiIgaHJlZj0iPD9waHAgZWNobyBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl9hZmZpbGlhdGVfbGluaycgKTsgPz4iIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vZm9sbG93IiBjbGFzcz0ibGVuZGVyLWFmZmlsaWF0ZS1idXR0b24iPgoJCQkJR2V0IE15IFJhdGUKCQkJPC9hPgoJCTwvZGl2PgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJsZW5kZXItc2Vjb25kYXJ5LXJvdyI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWxvZ28tc2Vjb25kYXJ5LXJvdy1jZWxsIGxlbmRlci1zZWNvbmRhcnktcm93LWNlbGwiPgoJCQk8cCBjbGFzcz0ibGVuZGVyLXZpZXctZGV0YWlscy10cmlnZ2VyIj4KCQkJCTxzcGFuIGNsYXNzPSJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmsgbGVuZGVyLXZpZXctZGV0YWlscy1saW5rLTw/cGhwIHRoZV9JRCgpOyA/PiI+CgkJCQkJPHNwYW4gY2xhc3M9ImxlbmRlci12aWV3LWRldGFpbHMtbGluay1hcnJvdyI+PC9zcGFuPlZpZXcgRGV0YWlscwoJCQkJPHNwYW4+CgkJCTwvcD4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItdmFyaWFibGUtYXByLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItZml4ZWQtYXByLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItb3ZlcmFsbC1hcHItc2Vjb25kYXJ5LXJvdy1jZWxsIGxlbmRlci1zZWNvbmRhcnktcm93LWNlbGwiPgoJCTwvZGl2PgoJCTxkaXYgY2xhc3M9ImxlbmRlci1hZmZpbGlhdGUtYnV0dG9uLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQkJPHAgY2xhc3M9ImxlbmRlci1hZmZpbGlhdGUtYnV0dG9uLWhlbHBlci10ZXh0Ij4KCQkJCTw/cGhwCgkJCQkJaWYoIHN0cl9lbmRzX3dpdGgoIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX25hbWVfYmVsb3dfYnV0dG9uJyApLCAncycgKSApCgkJCQkJewoJCQkJCQllY2hvICdvbiAnIC4gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfbmFtZV9iZWxvd19idXR0b24nICkgLiAnXCcgd2Vic2l0ZSc7CgkJCQkJfQoJCQkJCWVsc2UKCQkJCQl7CgkJCQkJCWVjaG8gJ29uICcgLiBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl9uYW1lX2JlbG93X2J1dHRvbicgKSAuICdcJ3Mgd2Vic2l0ZSc7CgkJCQkJfQoJCQkJPz4KCQkJPC9wPgoJCTwvZGl2PgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93IGxlbmRlci1jb2xsYXBzaWJsZS1yb3ctPD9waHAgdGhlX0lEKCk7ID8+Ij4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbHMiPgoJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC0xIj4KCQkJCTxoMyBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtaGVhZGVyIj4KCQkJCQlPdmVydmlldwoJCQkJPC9oMz4KCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWNvbnRlbnQiPgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlWYXJpYWJsZSBBUFI6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocAoJCQkJCQkJCWlmKCAoIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKSAhPSAiLSIgKSAmJiAoIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAhPSAiLSIgKSApCgkJCQkJCQkJewoJCQkJCQkJCQllY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKSAuICclIC0gJyAuIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCQkJCQl9CgkJCQkJCQkJZWxzZQoJCQkJCQkJCXsKCQkJCQkJCQkJZWNobyAnLSc7CgkJCQkJCQkJfQoJCQkJCQkJPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUZpeGVkIEFQUjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwCgkJCQkJCQkJaWYoICggZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX3VwcGVyX2xpbWl0JyApICE9ICItIiApICkKCQkJCQkJCQl7CgkJCQkJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApIC4gJyUgLSAnIC4gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX3VwcGVyX2xpbWl0JyApIC4gJyUnOwoJCQkJCQkJCX0KCQkJCQkJCQllbHNlCgkJCQkJCQkJewoJCQkJCQkJCQllY2hvICctJzsKCQkJCQkJCQl9CgkJCQkJCQk/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBDcmVkaXQgU2NvcmU6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX21pbmltdW1fY3JlZGl0X3Njb3JlJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBJbmNvbWU6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX21pbmltdW1faW5jb21lJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJRmVlczoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZmVlcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLTIiPgoJCQkJPGgzIGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC1oZWFkZXIiPgoJCQkJCURldGFpbHMKCQkJCTwvaDM+CgkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC1jb250ZW50Ij4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJRWxpZ2libGUgTG9hbnM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX2VsaWdpYmxlX2xvYW5zJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBMb2FuIEFtb3VudDoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfbWluaW11bV9sb2FuX2Ftb3VudCcgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUxvYW4gVGVybXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX2xvYW5fdGVybXMnICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlCb3Jyb3dlciBSZXNpZGVuY3k6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX2JvcnJvd2VyX3Jlc2lkZW5jeScgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUhhcmRzaGlwIERlZmVybWVudDoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfaGFyZHNoaXBfZGVmZXJtZW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJQ28tc2lnbmVyIE9wdGlvbjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfY29zaWduZXJfb3B0aW9uJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQk8L2Rpdj4KCQk8P3BocCBpZiAoIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX3Jldmlld191cmwnICkgKTogPz4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1yZXZpZXciPgoJCQkJPHAgY2xhc3M9ImxlbmRlci1yZXZpZXctaGVhZGluZyI+CgkJCQkJUmV2aWV3OgoJCQkJPC9wPgoJCQkJPHA+CgkJCQkJPGEgaHJlZj0iPD9waHAgZWNobyBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl9yZXZpZXdfdXJsJyApOyA/PiIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJsZW5kZXItcmV2aWV3LWxpbmsiPjw/cGhwIHRoZV90aXRsZSgpOyA/PiBQYXJlbnQgUExVUyBMb2FuIFJlZmluYW5jaW5nIFJldmlldzwvYT4KCQkJCTwvcD4KCQkJPC9kaXY+CgkJPD9waHAgZW5kaWY7ID8+Cgk8L2Rpdj4KPC9kaXY+Cjw/cGhwCgllY2hvICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+JzsKCSRsZW5kZXJfdmlld19kZXRhaWxzX2xpbmtfanNfdmFyID0gJ2xlbmRlcl92aWV3X2RldGFpbHNfbGlua18nIC4gZ2V0X3RoZV9pZCgpOwoJJGxlbmRlcl9jb2xsYXBzaWJsZV9yb3dfanNfdmFyID0gJ2xlbmRlcl9jb2xsYXBzaWJsZV9yb3dfJyAuIGdldF90aGVfaWQoKTsKCWVjaG8gJ3ZhciAnIC4gJGxlbmRlcl92aWV3X2RldGFpbHNfbGlua19qc192YXIgLiAnID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgibGVuZGVyLXZpZXctZGV0YWlscy1saW5rLScgLiBnZXRfdGhlX2lkKCkgLiAnIilbMF07JzsKCWVjaG8gJGxlbmRlcl92aWV3X2RldGFpbHNfbGlua19qc192YXIgLiAnLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oKSB7JzsKCWVjaG8gJ3RoaXMuY2xhc3NMaXN0LnRvZ2dsZSgiYWN0aXZlIik7JzsKCWVjaG8gJ3ZhciAnIC4gJGxlbmRlcl9jb2xsYXBzaWJsZV9yb3dfanNfdmFyIC4gJyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctJyAuIGdldF90aGVfaWQoKSAuICciKVswXTsnOwoJZWNobyAnaWYgKCcgLiAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnLnN0eWxlLm1heEhlaWdodCkgeyc7CgllY2hvICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0ID0gbnVsbDsnOwoJZWNobyAnfSBlbHNlIHsnOwoJZWNobyAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnLnN0eWxlLm1heEhlaWdodCA9ICcgLiAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnLnNjcm9sbEhlaWdodCArICJweCI7JzsKCWVjaG8gJ30nOwoJZWNobyAnfSk7JzsKCWVjaG8gJzwvc2NyaXB0Pic7Cj8+ PD9waHAKCSRhcHJfbGltaXRzID0gYXJyYXkoKTsKCgkkYXByX2xpbWl0XzEgPSBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICk7CgkkYXByX2xpbWl0XzIgPSBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl92YXJpYWJsZV9hcHJfdXBwZXJfbGltaXQnICk7CgkkYXByX2xpbWl0XzMgPSBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICk7CgkkYXByX2xpbWl0XzQgPSBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl9maXhlZF9hcHJfdXBwZXJfbGltaXQnICk7CgoJaWYoICRhcHJfbGltaXRfMSAhPSAnLScgKQoJewoJCSRhcHJfbGltaXRzW10gPSAkYXByX2xpbWl0XzE7Cgl9CgoJaWYoICRhcHJfbGltaXRfMiAhPSAnLScgKQoJewoJCSRhcHJfbGltaXRzW10gPSAkYXByX2xpbWl0XzI7Cgl9CgoJaWYoICRhcHJfbGltaXRfMyAhPSAnLScgKQoJewoJCSRhcHJfbGltaXRzW10gPSAkYXByX2xpbWl0XzM7Cgl9CgoJaWYoICRhcHJfbGltaXRfNCAhPSAnLScgKQoJewoJCSRhcHJfbGltaXRzW10gPSAkYXByX2xpbWl0XzQ7Cgl9Cj8+CjxkaXYgY2xhc3M9ImxlbmRlci1yb3ctd3JhcHBlciI+Cgk8ZGl2IGNsYXNzPSJsZW5kZXItcHJpbWFyeS1yb3ciPgoJCTxkaXYgY2xhc3M9ImxlbmRlci1sb2dvLXdyYXBwZXIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8YSBkYXRhLWV2ZW50LWxhYmVsPSI8P3BocCBlY2hvICdQUExSIC0gJyAuIGdldF90aGVfdGl0bGUoKTsgPz4iIGhyZWY9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfYWZmaWxpYXRlX2xpbmsnICk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImxlbmRlci1sb2dvLWxpbmsiPgoJCQkJPGltZyBzcmM9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfbG9nbycgKVsndXJsJ107ID8+IiBhbHQ9Ijw/cGhwIHRoZV90aXRsZSgpOyA/PiIgY2xhc3M9ImxlbmRlci1sb2dvIiAvPgoJCQk8L2E+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLXZhcmlhYmxlLWFwciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTw/cGhwCgkJCQlpZiggKCBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICkgIT0gIi0iICkgJiYgKCBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl92YXJpYWJsZV9hcHJfdXBwZXJfbGltaXQnICkgIT0gIi0iICkgKQoJCQkJewoJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfdmFyaWFibGVfYXByX2xvd2VyX2xpbWl0JyApIC4gJyUgLSAnIC4gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfdmFyaWFibGVfYXByX3VwcGVyX2xpbWl0JyApIC4gJyUnOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCWVjaG8gJy0nOwoJCQkJfQoJCQk/PgoJCTwvZGl2PgoJCTxkaXYgY2xhc3M9ImxlbmRlci1maXhlZC1hcHIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8P3BocAoJCQkJaWYoICggZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX3VwcGVyX2xpbWl0JyApICE9ICItIiApICkKCQkJCXsKCQkJCQllY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX2ZpeGVkX2Fwcl9sb3dlcl9saW1pdCcgKSAuICclIC0gJyAuIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQllY2hvICctJzsKCQkJCX0KCQkJPz4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItb3ZlcmFsbC1hcHIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8P3BocCBlY2hvIG1pbigkYXByX2xpbWl0cyk7ID8+JSAtIDw/cGhwIGVjaG8gbWF4KCRhcHJfbGltaXRzKTsgPz4lCgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWFmZmlsaWF0ZS1idXR0b24td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1BQTFIgLSAnIC4gZ2V0X3RoZV90aXRsZSgpOyA/PiIgaHJlZj0iPD9waHAgZWNobyBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl9hZmZpbGlhdGVfbGluaycgKTsgPz4iIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vZm9sbG93IiBjbGFzcz0ibGVuZGVyLWFmZmlsaWF0ZS1idXR0b24iPgoJCQkJR2V0IE15IFJhdGUKCQkJPC9hPgoJCTwvZGl2PgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJsZW5kZXItc2Vjb25kYXJ5LXJvdyI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWxvZ28tc2Vjb25kYXJ5LXJvdy1jZWxsIGxlbmRlci1zZWNvbmRhcnktcm93LWNlbGwiPgoJCQk8cCBjbGFzcz0ibGVuZGVyLXZpZXctZGV0YWlscy10cmlnZ2VyIj4KCQkJCTxzcGFuIGNsYXNzPSJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmsgbGVuZGVyLXZpZXctZGV0YWlscy1saW5rLTw/cGhwIHRoZV9JRCgpOyA/PiI+CgkJCQkJPHNwYW4gY2xhc3M9ImxlbmRlci12aWV3LWRldGFpbHMtbGluay1hcnJvdyI+PC9zcGFuPlZpZXcgRGV0YWlscwoJCQkJPHNwYW4+CgkJCTwvcD4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItdmFyaWFibGUtYXByLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItZml4ZWQtYXByLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItb3ZlcmFsbC1hcHItc2Vjb25kYXJ5LXJvdy1jZWxsIGxlbmRlci1zZWNvbmRhcnktcm93LWNlbGwiPgoJCTwvZGl2PgoJCTxkaXYgY2xhc3M9ImxlbmRlci1hZmZpbGlhdGUtYnV0dG9uLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQkJPHAgY2xhc3M9ImxlbmRlci1hZmZpbGlhdGUtYnV0dG9uLWhlbHBlci10ZXh0Ij4KCQkJCTw/cGhwCgkJCQkJaWYoIHN0cl9lbmRzX3dpdGgoIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX25hbWVfYmVsb3dfYnV0dG9uJyApLCAncycgKSApCgkJCQkJewoJCQkJCQllY2hvICdvbiAnIC4gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfbmFtZV9iZWxvd19idXR0b24nICkgLiAnXCcgd2Vic2l0ZSc7CgkJCQkJfQoJCQkJCWVsc2UKCQkJCQl7CgkJCQkJCWVjaG8gJ29uICcgLiBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl9uYW1lX2JlbG93X2J1dHRvbicgKSAuICdcJ3Mgd2Vic2l0ZSc7CgkJCQkJfQoJCQkJPz4KCQkJPC9wPgoJCTwvZGl2PgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93IGxlbmRlci1jb2xsYXBzaWJsZS1yb3ctPD9waHAgdGhlX0lEKCk7ID8+Ij4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbHMiPgoJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC0xIj4KCQkJCTxoMyBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtaGVhZGVyIj4KCQkJCQlPdmVydmlldwoJCQkJPC9oMz4KCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWNvbnRlbnQiPgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlWYXJpYWJsZSBBUFI6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocAoJCQkJCQkJCWlmKCAoIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKSAhPSAiLSIgKSAmJiAoIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAhPSAiLSIgKSApCgkJCQkJCQkJewoJCQkJCQkJCQllY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKSAuICclIC0gJyAuIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCQkJCQl9CgkJCQkJCQkJZWxzZQoJCQkJCQkJCXsKCQkJCQkJCQkJZWNobyAnLSc7CgkJCQkJCQkJfQoJCQkJCQkJPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUZpeGVkIEFQUjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwCgkJCQkJCQkJaWYoICggZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX3VwcGVyX2xpbWl0JyApICE9ICItIiApICkKCQkJCQkJCQl7CgkJCQkJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApIC4gJyUgLSAnIC4gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX3VwcGVyX2xpbWl0JyApIC4gJyUnOwoJCQkJCQkJCX0KCQkJCQkJCQllbHNlCgkJCQkJCQkJewoJCQkJCQkJCQllY2hvICctJzsKCQkJCQkJCQl9CgkJCQkJCQk/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBDcmVkaXQgU2NvcmU6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX21pbmltdW1fY3JlZGl0X3Njb3JlJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBJbmNvbWU6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX21pbmltdW1faW5jb21lJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJRmVlczoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZmVlcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLTIiPgoJCQkJPGgzIGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC1oZWFkZXIiPgoJCQkJCURldGFpbHMKCQkJCTwvaDM+CgkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC1jb250ZW50Ij4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJRWxpZ2libGUgTG9hbnM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX2VsaWdpYmxlX2xvYW5zJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBMb2FuIEFtb3VudDoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfbWluaW11bV9sb2FuX2Ftb3VudCcgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUxvYW4gVGVybXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX2xvYW5fdGVybXMnICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlCb3Jyb3dlciBSZXNpZGVuY3k6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX2JvcnJvd2VyX3Jlc2lkZW5jeScgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUhhcmRzaGlwIERlZmVybWVudDoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfaGFyZHNoaXBfZGVmZXJtZW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJQ28tc2lnbmVyIE9wdGlvbjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfY29zaWduZXJfb3B0aW9uJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQk8L2Rpdj4KCQk8P3BocCBpZiAoIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX3Jldmlld191cmwnICkgKTogPz4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1yZXZpZXciPgoJCQkJPHAgY2xhc3M9ImxlbmRlci1yZXZpZXctaGVhZGluZyI+CgkJCQkJUmV2aWV3OgoJCQkJPC9wPgoJCQkJPHA+CgkJCQkJPGEgaHJlZj0iPD9waHAgZWNobyBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl9yZXZpZXdfdXJsJyApOyA/PiIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJsZW5kZXItcmV2aWV3LWxpbmsiPjw/cGhwIHRoZV90aXRsZSgpOyA/PiBQYXJlbnQgUExVUyBMb2FuIFJlZmluYW5jaW5nIFJldmlldzwvYT4KCQkJCTwvcD4KCQkJPC9kaXY+CgkJPD9waHAgZW5kaWY7ID8+Cgk8L2Rpdj4KPC9kaXY+Cjw/cGhwCgllY2hvICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+JzsKCSRsZW5kZXJfdmlld19kZXRhaWxzX2xpbmtfanNfdmFyID0gJ2xlbmRlcl92aWV3X2RldGFpbHNfbGlua18nIC4gZ2V0X3RoZV9pZCgpOwoJJGxlbmRlcl9jb2xsYXBzaWJsZV9yb3dfanNfdmFyID0gJ2xlbmRlcl9jb2xsYXBzaWJsZV9yb3dfJyAuIGdldF90aGVfaWQoKTsKCWVjaG8gJ3ZhciAnIC4gJGxlbmRlcl92aWV3X2RldGFpbHNfbGlua19qc192YXIgLiAnID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgibGVuZGVyLXZpZXctZGV0YWlscy1saW5rLScgLiBnZXRfdGhlX2lkKCkgLiAnIilbMF07JzsKCWVjaG8gJGxlbmRlcl92aWV3X2RldGFpbHNfbGlua19qc192YXIgLiAnLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oKSB7JzsKCWVjaG8gJ3RoaXMuY2xhc3NMaXN0LnRvZ2dsZSgiYWN0aXZlIik7JzsKCWVjaG8gJ3ZhciAnIC4gJGxlbmRlcl9jb2xsYXBzaWJsZV9yb3dfanNfdmFyIC4gJyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctJyAuIGdldF90aGVfaWQoKSAuICciKVswXTsnOwoJZWNobyAnaWYgKCcgLiAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnLnN0eWxlLm1heEhlaWdodCkgeyc7CgllY2hvICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0ID0gbnVsbDsnOwoJZWNobyAnfSBlbHNlIHsnOwoJZWNobyAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnLnN0eWxlLm1heEhlaWdodCA9ICcgLiAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnLnNjcm9sbEhlaWdodCArICJweCI7JzsKCWVjaG8gJ30nOwoJZWNobyAnfSk7JzsKCWVjaG8gJzwvc2NyaXB0Pic7Cj8+ PD9waHAKCSRhcHJfbGltaXRzID0gYXJyYXkoKTsKCgkkYXByX2xpbWl0XzEgPSBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICk7CgkkYXByX2xpbWl0XzIgPSBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl92YXJpYWJsZV9hcHJfdXBwZXJfbGltaXQnICk7CgkkYXByX2xpbWl0XzMgPSBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICk7CgkkYXByX2xpbWl0XzQgPSBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl9maXhlZF9hcHJfdXBwZXJfbGltaXQnICk7CgoJaWYoICRhcHJfbGltaXRfMSAhPSAnLScgKQoJewoJCSRhcHJfbGltaXRzW10gPSAkYXByX2xpbWl0XzE7Cgl9CgoJaWYoICRhcHJfbGltaXRfMiAhPSAnLScgKQoJewoJCSRhcHJfbGltaXRzW10gPSAkYXByX2xpbWl0XzI7Cgl9CgoJaWYoICRhcHJfbGltaXRfMyAhPSAnLScgKQoJewoJCSRhcHJfbGltaXRzW10gPSAkYXByX2xpbWl0XzM7Cgl9CgoJaWYoICRhcHJfbGltaXRfNCAhPSAnLScgKQoJewoJCSRhcHJfbGltaXRzW10gPSAkYXByX2xpbWl0XzQ7Cgl9Cj8+CjxkaXYgY2xhc3M9ImxlbmRlci1yb3ctd3JhcHBlciI+Cgk8ZGl2IGNsYXNzPSJsZW5kZXItcHJpbWFyeS1yb3ciPgoJCTxkaXYgY2xhc3M9ImxlbmRlci1sb2dvLXdyYXBwZXIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8YSBkYXRhLWV2ZW50LWxhYmVsPSI8P3BocCBlY2hvICdQUExSIC0gJyAuIGdldF90aGVfdGl0bGUoKTsgPz4iIGhyZWY9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfYWZmaWxpYXRlX2xpbmsnICk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImxlbmRlci1sb2dvLWxpbmsiPgoJCQkJPGltZyBzcmM9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfbG9nbycgKVsndXJsJ107ID8+IiBhbHQ9Ijw/cGhwIHRoZV90aXRsZSgpOyA/PiIgY2xhc3M9ImxlbmRlci1sb2dvIiAvPgoJCQk8L2E+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLXZhcmlhYmxlLWFwciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTw/cGhwCgkJCQlpZiggKCBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICkgIT0gIi0iICkgJiYgKCBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl92YXJpYWJsZV9hcHJfdXBwZXJfbGltaXQnICkgIT0gIi0iICkgKQoJCQkJewoJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfdmFyaWFibGVfYXByX2xvd2VyX2xpbWl0JyApIC4gJyUgLSAnIC4gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfdmFyaWFibGVfYXByX3VwcGVyX2xpbWl0JyApIC4gJyUnOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCWVjaG8gJy0nOwoJCQkJfQoJCQk/PgoJCTwvZGl2PgoJCTxkaXYgY2xhc3M9ImxlbmRlci1maXhlZC1hcHIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8P3BocAoJCQkJaWYoICggZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX3VwcGVyX2xpbWl0JyApICE9ICItIiApICkKCQkJCXsKCQkJCQllY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX2ZpeGVkX2Fwcl9sb3dlcl9saW1pdCcgKSAuICclIC0gJyAuIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQllY2hvICctJzsKCQkJCX0KCQkJPz4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItb3ZlcmFsbC1hcHIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8P3BocCBlY2hvIG1pbigkYXByX2xpbWl0cyk7ID8+JSAtIDw/cGhwIGVjaG8gbWF4KCRhcHJfbGltaXRzKTsgPz4lCgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWFmZmlsaWF0ZS1idXR0b24td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1BQTFIgLSAnIC4gZ2V0X3RoZV90aXRsZSgpOyA/PiIgaHJlZj0iPD9waHAgZWNobyBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl9hZmZpbGlhdGVfbGluaycgKTsgPz4iIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vZm9sbG93IiBjbGFzcz0ibGVuZGVyLWFmZmlsaWF0ZS1idXR0b24iPgoJCQkJR2V0IE15IFJhdGUKCQkJPC9hPgoJCTwvZGl2PgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJsZW5kZXItc2Vjb25kYXJ5LXJvdyI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWxvZ28tc2Vjb25kYXJ5LXJvdy1jZWxsIGxlbmRlci1zZWNvbmRhcnktcm93LWNlbGwiPgoJCQk8cCBjbGFzcz0ibGVuZGVyLXZpZXctZGV0YWlscy10cmlnZ2VyIj4KCQkJCTxzcGFuIGNsYXNzPSJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmsgbGVuZGVyLXZpZXctZGV0YWlscy1saW5rLTw/cGhwIHRoZV9JRCgpOyA/PiI+CgkJCQkJPHNwYW4gY2xhc3M9ImxlbmRlci12aWV3LWRldGFpbHMtbGluay1hcnJvdyI+PC9zcGFuPlZpZXcgRGV0YWlscwoJCQkJPHNwYW4+CgkJCTwvcD4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItdmFyaWFibGUtYXByLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItZml4ZWQtYXByLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItb3ZlcmFsbC1hcHItc2Vjb25kYXJ5LXJvdy1jZWxsIGxlbmRlci1zZWNvbmRhcnktcm93LWNlbGwiPgoJCTwvZGl2PgoJCTxkaXYgY2xhc3M9ImxlbmRlci1hZmZpbGlhdGUtYnV0dG9uLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQkJPHAgY2xhc3M9ImxlbmRlci1hZmZpbGlhdGUtYnV0dG9uLWhlbHBlci10ZXh0Ij4KCQkJCTw/cGhwCgkJCQkJaWYoIHN0cl9lbmRzX3dpdGgoIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX25hbWVfYmVsb3dfYnV0dG9uJyApLCAncycgKSApCgkJCQkJewoJCQkJCQllY2hvICdvbiAnIC4gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfbmFtZV9iZWxvd19idXR0b24nICkgLiAnXCcgd2Vic2l0ZSc7CgkJCQkJfQoJCQkJCWVsc2UKCQkJCQl7CgkJCQkJCWVjaG8gJ29uICcgLiBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl9uYW1lX2JlbG93X2J1dHRvbicgKSAuICdcJ3Mgd2Vic2l0ZSc7CgkJCQkJfQoJCQkJPz4KCQkJPC9wPgoJCTwvZGl2PgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93IGxlbmRlci1jb2xsYXBzaWJsZS1yb3ctPD9waHAgdGhlX0lEKCk7ID8+Ij4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbHMiPgoJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC0xIj4KCQkJCTxoMyBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtaGVhZGVyIj4KCQkJCQlPdmVydmlldwoJCQkJPC9oMz4KCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWNvbnRlbnQiPgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlWYXJpYWJsZSBBUFI6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocAoJCQkJCQkJCWlmKCAoIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKSAhPSAiLSIgKSAmJiAoIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAhPSAiLSIgKSApCgkJCQkJCQkJewoJCQkJCQkJCQllY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKSAuICclIC0gJyAuIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCQkJCQl9CgkJCQkJCQkJZWxzZQoJCQkJCQkJCXsKCQkJCQkJCQkJZWNobyAnLSc7CgkJCQkJCQkJfQoJCQkJCQkJPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUZpeGVkIEFQUjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwCgkJCQkJCQkJaWYoICggZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX3VwcGVyX2xpbWl0JyApICE9ICItIiApICkKCQkJCQkJCQl7CgkJCQkJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApIC4gJyUgLSAnIC4gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX3VwcGVyX2xpbWl0JyApIC4gJyUnOwoJCQkJCQkJCX0KCQkJCQkJCQllbHNlCgkJCQkJCQkJewoJCQkJCQkJCQllY2hvICctJzsKCQkJCQkJCQl9CgkJCQkJCQk/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBDcmVkaXQgU2NvcmU6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX21pbmltdW1fY3JlZGl0X3Njb3JlJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBJbmNvbWU6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX21pbmltdW1faW5jb21lJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJRmVlczoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZmVlcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLTIiPgoJCQkJPGgzIGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC1oZWFkZXIiPgoJCQkJCURldGFpbHMKCQkJCTwvaDM+CgkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC1jb250ZW50Ij4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJRWxpZ2libGUgTG9hbnM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX2VsaWdpYmxlX2xvYW5zJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBMb2FuIEFtb3VudDoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfbWluaW11bV9sb2FuX2Ftb3VudCcgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUxvYW4gVGVybXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX2xvYW5fdGVybXMnICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlCb3Jyb3dlciBSZXNpZGVuY3k6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX2JvcnJvd2VyX3Jlc2lkZW5jeScgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUhhcmRzaGlwIERlZmVybWVudDoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfaGFyZHNoaXBfZGVmZXJtZW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJQ28tc2lnbmVyIE9wdGlvbjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfY29zaWduZXJfb3B0aW9uJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQk8L2Rpdj4KCQk8P3BocCBpZiAoIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX3Jldmlld191cmwnICkgKTogPz4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1yZXZpZXciPgoJCQkJPHAgY2xhc3M9ImxlbmRlci1yZXZpZXctaGVhZGluZyI+CgkJCQkJUmV2aWV3OgoJCQkJPC9wPgoJCQkJPHA+CgkJCQkJPGEgaHJlZj0iPD9waHAgZWNobyBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl9yZXZpZXdfdXJsJyApOyA/PiIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJsZW5kZXItcmV2aWV3LWxpbmsiPjw/cGhwIHRoZV90aXRsZSgpOyA/PiBQYXJlbnQgUExVUyBMb2FuIFJlZmluYW5jaW5nIFJldmlldzwvYT4KCQkJCTwvcD4KCQkJPC9kaXY+CgkJPD9waHAgZW5kaWY7ID8+Cgk8L2Rpdj4KPC9kaXY+Cjw/cGhwCgllY2hvICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+JzsKCSRsZW5kZXJfdmlld19kZXRhaWxzX2xpbmtfanNfdmFyID0gJ2xlbmRlcl92aWV3X2RldGFpbHNfbGlua18nIC4gZ2V0X3RoZV9pZCgpOwoJJGxlbmRlcl9jb2xsYXBzaWJsZV9yb3dfanNfdmFyID0gJ2xlbmRlcl9jb2xsYXBzaWJsZV9yb3dfJyAuIGdldF90aGVfaWQoKTsKCWVjaG8gJ3ZhciAnIC4gJGxlbmRlcl92aWV3X2RldGFpbHNfbGlua19qc192YXIgLiAnID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgibGVuZGVyLXZpZXctZGV0YWlscy1saW5rLScgLiBnZXRfdGhlX2lkKCkgLiAnIilbMF07JzsKCWVjaG8gJGxlbmRlcl92aWV3X2RldGFpbHNfbGlua19qc192YXIgLiAnLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oKSB7JzsKCWVjaG8gJ3RoaXMuY2xhc3NMaXN0LnRvZ2dsZSgiYWN0aXZlIik7JzsKCWVjaG8gJ3ZhciAnIC4gJGxlbmRlcl9jb2xsYXBzaWJsZV9yb3dfanNfdmFyIC4gJyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctJyAuIGdldF90aGVfaWQoKSAuICciKVswXTsnOwoJZWNobyAnaWYgKCcgLiAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnLnN0eWxlLm1heEhlaWdodCkgeyc7CgllY2hvICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0ID0gbnVsbDsnOwoJZWNobyAnfSBlbHNlIHsnOwoJZWNobyAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnLnN0eWxlLm1heEhlaWdodCA9ICcgLiAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnLnNjcm9sbEhlaWdodCArICJweCI7JzsKCWVjaG8gJ30nOwoJZWNobyAnfSk7JzsKCWVjaG8gJzwvc2NyaXB0Pic7Cj8+ PD9waHAKCSRhcHJfbGltaXRzID0gYXJyYXkoKTsKCgkkYXByX2xpbWl0XzEgPSBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICk7CgkkYXByX2xpbWl0XzIgPSBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl92YXJpYWJsZV9hcHJfdXBwZXJfbGltaXQnICk7CgkkYXByX2xpbWl0XzMgPSBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICk7CgkkYXByX2xpbWl0XzQgPSBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl9maXhlZF9hcHJfdXBwZXJfbGltaXQnICk7CgoJaWYoICRhcHJfbGltaXRfMSAhPSAnLScgKQoJewoJCSRhcHJfbGltaXRzW10gPSAkYXByX2xpbWl0XzE7Cgl9CgoJaWYoICRhcHJfbGltaXRfMiAhPSAnLScgKQoJewoJCSRhcHJfbGltaXRzW10gPSAkYXByX2xpbWl0XzI7Cgl9CgoJaWYoICRhcHJfbGltaXRfMyAhPSAnLScgKQoJewoJCSRhcHJfbGltaXRzW10gPSAkYXByX2xpbWl0XzM7Cgl9CgoJaWYoICRhcHJfbGltaXRfNCAhPSAnLScgKQoJewoJCSRhcHJfbGltaXRzW10gPSAkYXByX2xpbWl0XzQ7Cgl9Cj8+CjxkaXYgY2xhc3M9ImxlbmRlci1yb3ctd3JhcHBlciI+Cgk8ZGl2IGNsYXNzPSJsZW5kZXItcHJpbWFyeS1yb3ciPgoJCTxkaXYgY2xhc3M9ImxlbmRlci1sb2dvLXdyYXBwZXIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8YSBkYXRhLWV2ZW50LWxhYmVsPSI8P3BocCBlY2hvICdQUExSIC0gJyAuIGdldF90aGVfdGl0bGUoKTsgPz4iIGhyZWY9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfYWZmaWxpYXRlX2xpbmsnICk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImxlbmRlci1sb2dvLWxpbmsiPgoJCQkJPGltZyBzcmM9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfbG9nbycgKVsndXJsJ107ID8+IiBhbHQ9Ijw/cGhwIHRoZV90aXRsZSgpOyA/PiIgY2xhc3M9ImxlbmRlci1sb2dvIiAvPgoJCQk8L2E+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLXZhcmlhYmxlLWFwciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTw/cGhwCgkJCQlpZiggKCBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICkgIT0gIi0iICkgJiYgKCBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl92YXJpYWJsZV9hcHJfdXBwZXJfbGltaXQnICkgIT0gIi0iICkgKQoJCQkJewoJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfdmFyaWFibGVfYXByX2xvd2VyX2xpbWl0JyApIC4gJyUgLSAnIC4gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfdmFyaWFibGVfYXByX3VwcGVyX2xpbWl0JyApIC4gJyUnOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCWVjaG8gJy0nOwoJCQkJfQoJCQk/PgoJCTwvZGl2PgoJCTxkaXYgY2xhc3M9ImxlbmRlci1maXhlZC1hcHIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8P3BocAoJCQkJaWYoICggZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX3VwcGVyX2xpbWl0JyApICE9ICItIiApICkKCQkJCXsKCQkJCQllY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX2ZpeGVkX2Fwcl9sb3dlcl9saW1pdCcgKSAuICclIC0gJyAuIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQllY2hvICctJzsKCQkJCX0KCQkJPz4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItb3ZlcmFsbC1hcHIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8P3BocCBlY2hvIG1pbigkYXByX2xpbWl0cyk7ID8+JSAtIDw/cGhwIGVjaG8gbWF4KCRhcHJfbGltaXRzKTsgPz4lCgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWFmZmlsaWF0ZS1idXR0b24td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1BQTFIgLSAnIC4gZ2V0X3RoZV90aXRsZSgpOyA/PiIgaHJlZj0iPD9waHAgZWNobyBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl9hZmZpbGlhdGVfbGluaycgKTsgPz4iIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vZm9sbG93IiBjbGFzcz0ibGVuZGVyLWFmZmlsaWF0ZS1idXR0b24iPgoJCQkJR2V0IE15IFJhdGUKCQkJPC9hPgoJCTwvZGl2PgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJsZW5kZXItc2Vjb25kYXJ5LXJvdyI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWxvZ28tc2Vjb25kYXJ5LXJvdy1jZWxsIGxlbmRlci1zZWNvbmRhcnktcm93LWNlbGwiPgoJCQk8cCBjbGFzcz0ibGVuZGVyLXZpZXctZGV0YWlscy10cmlnZ2VyIj4KCQkJCTxzcGFuIGNsYXNzPSJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmsgbGVuZGVyLXZpZXctZGV0YWlscy1saW5rLTw/cGhwIHRoZV9JRCgpOyA/PiI+CgkJCQkJPHNwYW4gY2xhc3M9ImxlbmRlci12aWV3LWRldGFpbHMtbGluay1hcnJvdyI+PC9zcGFuPlZpZXcgRGV0YWlscwoJCQkJPHNwYW4+CgkJCTwvcD4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItdmFyaWFibGUtYXByLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItZml4ZWQtYXByLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItb3ZlcmFsbC1hcHItc2Vjb25kYXJ5LXJvdy1jZWxsIGxlbmRlci1zZWNvbmRhcnktcm93LWNlbGwiPgoJCTwvZGl2PgoJCTxkaXYgY2xhc3M9ImxlbmRlci1hZmZpbGlhdGUtYnV0dG9uLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQkJPHAgY2xhc3M9ImxlbmRlci1hZmZpbGlhdGUtYnV0dG9uLWhlbHBlci10ZXh0Ij4KCQkJCTw/cGhwCgkJCQkJaWYoIHN0cl9lbmRzX3dpdGgoIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX25hbWVfYmVsb3dfYnV0dG9uJyApLCAncycgKSApCgkJCQkJewoJCQkJCQllY2hvICdvbiAnIC4gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfbmFtZV9iZWxvd19idXR0b24nICkgLiAnXCcgd2Vic2l0ZSc7CgkJCQkJfQoJCQkJCWVsc2UKCQkJCQl7CgkJCQkJCWVjaG8gJ29uICcgLiBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl9uYW1lX2JlbG93X2J1dHRvbicgKSAuICdcJ3Mgd2Vic2l0ZSc7CgkJCQkJfQoJCQkJPz4KCQkJPC9wPgoJCTwvZGl2PgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93IGxlbmRlci1jb2xsYXBzaWJsZS1yb3ctPD9waHAgdGhlX0lEKCk7ID8+Ij4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbHMiPgoJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC0xIj4KCQkJCTxoMyBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtaGVhZGVyIj4KCQkJCQlPdmVydmlldwoJCQkJPC9oMz4KCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWNvbnRlbnQiPgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlWYXJpYWJsZSBBUFI6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocAoJCQkJCQkJCWlmKCAoIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKSAhPSAiLSIgKSAmJiAoIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAhPSAiLSIgKSApCgkJCQkJCQkJewoJCQkJCQkJCQllY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKSAuICclIC0gJyAuIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCQkJCQl9CgkJCQkJCQkJZWxzZQoJCQkJCQkJCXsKCQkJCQkJCQkJZWNobyAnLSc7CgkJCQkJCQkJfQoJCQkJCQkJPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUZpeGVkIEFQUjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwCgkJCQkJCQkJaWYoICggZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX3VwcGVyX2xpbWl0JyApICE9ICItIiApICkKCQkJCQkJCQl7CgkJCQkJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApIC4gJyUgLSAnIC4gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX3VwcGVyX2xpbWl0JyApIC4gJyUnOwoJCQkJCQkJCX0KCQkJCQkJCQllbHNlCgkJCQkJCQkJewoJCQkJCQkJCQllY2hvICctJzsKCQkJCQkJCQl9CgkJCQkJCQk/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBDcmVkaXQgU2NvcmU6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX21pbmltdW1fY3JlZGl0X3Njb3JlJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBJbmNvbWU6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX21pbmltdW1faW5jb21lJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJRmVlczoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZmVlcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLTIiPgoJCQkJPGgzIGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC1oZWFkZXIiPgoJCQkJCURldGFpbHMKCQkJCTwvaDM+CgkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC1jb250ZW50Ij4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJRWxpZ2libGUgTG9hbnM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX2VsaWdpYmxlX2xvYW5zJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBMb2FuIEFtb3VudDoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfbWluaW11bV9sb2FuX2Ftb3VudCcgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUxvYW4gVGVybXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX2xvYW5fdGVybXMnICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlCb3Jyb3dlciBSZXNpZGVuY3k6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX2JvcnJvd2VyX3Jlc2lkZW5jeScgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUhhcmRzaGlwIERlZmVybWVudDoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfaGFyZHNoaXBfZGVmZXJtZW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJQ28tc2lnbmVyIE9wdGlvbjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfY29zaWduZXJfb3B0aW9uJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQk8L2Rpdj4KCQk8P3BocCBpZiAoIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX3Jldmlld191cmwnICkgKTogPz4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1yZXZpZXciPgoJCQkJPHAgY2xhc3M9ImxlbmRlci1yZXZpZXctaGVhZGluZyI+CgkJCQkJUmV2aWV3OgoJCQkJPC9wPgoJCQkJPHA+CgkJCQkJPGEgaHJlZj0iPD9waHAgZWNobyBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl9yZXZpZXdfdXJsJyApOyA/PiIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJsZW5kZXItcmV2aWV3LWxpbmsiPjw/cGhwIHRoZV90aXRsZSgpOyA/PiBQYXJlbnQgUExVUyBMb2FuIFJlZmluYW5jaW5nIFJldmlldzwvYT4KCQkJCTwvcD4KCQkJPC9kaXY+CgkJPD9waHAgZW5kaWY7ID8+Cgk8L2Rpdj4KPC9kaXY+Cjw/cGhwCgllY2hvICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+JzsKCSRsZW5kZXJfdmlld19kZXRhaWxzX2xpbmtfanNfdmFyID0gJ2xlbmRlcl92aWV3X2RldGFpbHNfbGlua18nIC4gZ2V0X3RoZV9pZCgpOwoJJGxlbmRlcl9jb2xsYXBzaWJsZV9yb3dfanNfdmFyID0gJ2xlbmRlcl9jb2xsYXBzaWJsZV9yb3dfJyAuIGdldF90aGVfaWQoKTsKCWVjaG8gJ3ZhciAnIC4gJGxlbmRlcl92aWV3X2RldGFpbHNfbGlua19qc192YXIgLiAnID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgibGVuZGVyLXZpZXctZGV0YWlscy1saW5rLScgLiBnZXRfdGhlX2lkKCkgLiAnIilbMF07JzsKCWVjaG8gJGxlbmRlcl92aWV3X2RldGFpbHNfbGlua19qc192YXIgLiAnLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oKSB7JzsKCWVjaG8gJ3RoaXMuY2xhc3NMaXN0LnRvZ2dsZSgiYWN0aXZlIik7JzsKCWVjaG8gJ3ZhciAnIC4gJGxlbmRlcl9jb2xsYXBzaWJsZV9yb3dfanNfdmFyIC4gJyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctJyAuIGdldF90aGVfaWQoKSAuICciKVswXTsnOwoJZWNobyAnaWYgKCcgLiAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnLnN0eWxlLm1heEhlaWdodCkgeyc7CgllY2hvICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0ID0gbnVsbDsnOwoJZWNobyAnfSBlbHNlIHsnOwoJZWNobyAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnLnN0eWxlLm1heEhlaWdodCA9ICcgLiAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnLnNjcm9sbEhlaWdodCArICJweCI7JzsKCWVjaG8gJ30nOwoJZWNobyAnfSk7JzsKCWVjaG8gJzwvc2NyaXB0Pic7Cj8+ PD9waHAKCSRhcHJfbGltaXRzID0gYXJyYXkoKTsKCgkkYXByX2xpbWl0XzEgPSBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICk7CgkkYXByX2xpbWl0XzIgPSBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl92YXJpYWJsZV9hcHJfdXBwZXJfbGltaXQnICk7CgkkYXByX2xpbWl0XzMgPSBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICk7CgkkYXByX2xpbWl0XzQgPSBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl9maXhlZF9hcHJfdXBwZXJfbGltaXQnICk7CgoJaWYoICRhcHJfbGltaXRfMSAhPSAnLScgKQoJewoJCSRhcHJfbGltaXRzW10gPSAkYXByX2xpbWl0XzE7Cgl9CgoJaWYoICRhcHJfbGltaXRfMiAhPSAnLScgKQoJewoJCSRhcHJfbGltaXRzW10gPSAkYXByX2xpbWl0XzI7Cgl9CgoJaWYoICRhcHJfbGltaXRfMyAhPSAnLScgKQoJewoJCSRhcHJfbGltaXRzW10gPSAkYXByX2xpbWl0XzM7Cgl9CgoJaWYoICRhcHJfbGltaXRfNCAhPSAnLScgKQoJewoJCSRhcHJfbGltaXRzW10gPSAkYXByX2xpbWl0XzQ7Cgl9Cj8+CjxkaXYgY2xhc3M9ImxlbmRlci1yb3ctd3JhcHBlciI+Cgk8ZGl2IGNsYXNzPSJsZW5kZXItcHJpbWFyeS1yb3ciPgoJCTxkaXYgY2xhc3M9ImxlbmRlci1sb2dvLXdyYXBwZXIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8YSBkYXRhLWV2ZW50LWxhYmVsPSI8P3BocCBlY2hvICdQUExSIC0gJyAuIGdldF90aGVfdGl0bGUoKTsgPz4iIGhyZWY9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfYWZmaWxpYXRlX2xpbmsnICk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImxlbmRlci1sb2dvLWxpbmsiPgoJCQkJPGltZyBzcmM9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfbG9nbycgKVsndXJsJ107ID8+IiBhbHQ9Ijw/cGhwIHRoZV90aXRsZSgpOyA/PiIgY2xhc3M9ImxlbmRlci1sb2dvIiAvPgoJCQk8L2E+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLXZhcmlhYmxlLWFwciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTw/cGhwCgkJCQlpZiggKCBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICkgIT0gIi0iICkgJiYgKCBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl92YXJpYWJsZV9hcHJfdXBwZXJfbGltaXQnICkgIT0gIi0iICkgKQoJCQkJewoJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfdmFyaWFibGVfYXByX2xvd2VyX2xpbWl0JyApIC4gJyUgLSAnIC4gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfdmFyaWFibGVfYXByX3VwcGVyX2xpbWl0JyApIC4gJyUnOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCWVjaG8gJy0nOwoJCQkJfQoJCQk/PgoJCTwvZGl2PgoJCTxkaXYgY2xhc3M9ImxlbmRlci1maXhlZC1hcHIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8P3BocAoJCQkJaWYoICggZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX3VwcGVyX2xpbWl0JyApICE9ICItIiApICkKCQkJCXsKCQkJCQllY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX2ZpeGVkX2Fwcl9sb3dlcl9saW1pdCcgKSAuICclIC0gJyAuIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQllY2hvICctJzsKCQkJCX0KCQkJPz4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItb3ZlcmFsbC1hcHIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8P3BocCBlY2hvIG1pbigkYXByX2xpbWl0cyk7ID8+JSAtIDw/cGhwIGVjaG8gbWF4KCRhcHJfbGltaXRzKTsgPz4lCgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWFmZmlsaWF0ZS1idXR0b24td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1BQTFIgLSAnIC4gZ2V0X3RoZV90aXRsZSgpOyA/PiIgaHJlZj0iPD9waHAgZWNobyBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl9hZmZpbGlhdGVfbGluaycgKTsgPz4iIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vZm9sbG93IiBjbGFzcz0ibGVuZGVyLWFmZmlsaWF0ZS1idXR0b24iPgoJCQkJR2V0IE15IFJhdGUKCQkJPC9hPgoJCTwvZGl2PgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJsZW5kZXItc2Vjb25kYXJ5LXJvdyI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWxvZ28tc2Vjb25kYXJ5LXJvdy1jZWxsIGxlbmRlci1zZWNvbmRhcnktcm93LWNlbGwiPgoJCQk8cCBjbGFzcz0ibGVuZGVyLXZpZXctZGV0YWlscy10cmlnZ2VyIj4KCQkJCTxzcGFuIGNsYXNzPSJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmsgbGVuZGVyLXZpZXctZGV0YWlscy1saW5rLTw/cGhwIHRoZV9JRCgpOyA/PiI+CgkJCQkJPHNwYW4gY2xhc3M9ImxlbmRlci12aWV3LWRldGFpbHMtbGluay1hcnJvdyI+PC9zcGFuPlZpZXcgRGV0YWlscwoJCQkJPHNwYW4+CgkJCTwvcD4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItdmFyaWFibGUtYXByLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItZml4ZWQtYXByLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItb3ZlcmFsbC1hcHItc2Vjb25kYXJ5LXJvdy1jZWxsIGxlbmRlci1zZWNvbmRhcnktcm93LWNlbGwiPgoJCTwvZGl2PgoJCTxkaXYgY2xhc3M9ImxlbmRlci1hZmZpbGlhdGUtYnV0dG9uLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQkJPHAgY2xhc3M9ImxlbmRlci1hZmZpbGlhdGUtYnV0dG9uLWhlbHBlci10ZXh0Ij4KCQkJCTw/cGhwCgkJCQkJaWYoIHN0cl9lbmRzX3dpdGgoIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX25hbWVfYmVsb3dfYnV0dG9uJyApLCAncycgKSApCgkJCQkJewoJCQkJCQllY2hvICdvbiAnIC4gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfbmFtZV9iZWxvd19idXR0b24nICkgLiAnXCcgd2Vic2l0ZSc7CgkJCQkJfQoJCQkJCWVsc2UKCQkJCQl7CgkJCQkJCWVjaG8gJ29uICcgLiBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl9uYW1lX2JlbG93X2J1dHRvbicgKSAuICdcJ3Mgd2Vic2l0ZSc7CgkJCQkJfQoJCQkJPz4KCQkJPC9wPgoJCTwvZGl2PgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93IGxlbmRlci1jb2xsYXBzaWJsZS1yb3ctPD9waHAgdGhlX0lEKCk7ID8+Ij4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbHMiPgoJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC0xIj4KCQkJCTxoMyBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtaGVhZGVyIj4KCQkJCQlPdmVydmlldwoJCQkJPC9oMz4KCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWNvbnRlbnQiPgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlWYXJpYWJsZSBBUFI6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocAoJCQkJCQkJCWlmKCAoIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKSAhPSAiLSIgKSAmJiAoIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAhPSAiLSIgKSApCgkJCQkJCQkJewoJCQkJCQkJCQllY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKSAuICclIC0gJyAuIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCQkJCQl9CgkJCQkJCQkJZWxzZQoJCQkJCQkJCXsKCQkJCQkJCQkJZWNobyAnLSc7CgkJCQkJCQkJfQoJCQkJCQkJPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUZpeGVkIEFQUjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwCgkJCQkJCQkJaWYoICggZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX3VwcGVyX2xpbWl0JyApICE9ICItIiApICkKCQkJCQkJCQl7CgkJCQkJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApIC4gJyUgLSAnIC4gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX3VwcGVyX2xpbWl0JyApIC4gJyUnOwoJCQkJCQkJCX0KCQkJCQkJCQllbHNlCgkJCQkJCQkJewoJCQkJCQkJCQllY2hvICctJzsKCQkJCQkJCQl9CgkJCQkJCQk/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBDcmVkaXQgU2NvcmU6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX21pbmltdW1fY3JlZGl0X3Njb3JlJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBJbmNvbWU6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX21pbmltdW1faW5jb21lJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJRmVlczoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZmVlcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLTIiPgoJCQkJPGgzIGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC1oZWFkZXIiPgoJCQkJCURldGFpbHMKCQkJCTwvaDM+CgkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC1jb250ZW50Ij4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJRWxpZ2libGUgTG9hbnM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX2VsaWdpYmxlX2xvYW5zJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBMb2FuIEFtb3VudDoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfbWluaW11bV9sb2FuX2Ftb3VudCcgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUxvYW4gVGVybXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX2xvYW5fdGVybXMnICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlCb3Jyb3dlciBSZXNpZGVuY3k6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX2JvcnJvd2VyX3Jlc2lkZW5jeScgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUhhcmRzaGlwIERlZmVybWVudDoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfaGFyZHNoaXBfZGVmZXJtZW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJQ28tc2lnbmVyIE9wdGlvbjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfY29zaWduZXJfb3B0aW9uJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQk8L2Rpdj4KCQk8P3BocCBpZiAoIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX3Jldmlld191cmwnICkgKTogPz4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1yZXZpZXciPgoJCQkJPHAgY2xhc3M9ImxlbmRlci1yZXZpZXctaGVhZGluZyI+CgkJCQkJUmV2aWV3OgoJCQkJPC9wPgoJCQkJPHA+CgkJCQkJPGEgaHJlZj0iPD9waHAgZWNobyBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl9yZXZpZXdfdXJsJyApOyA/PiIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJsZW5kZXItcmV2aWV3LWxpbmsiPjw/cGhwIHRoZV90aXRsZSgpOyA/PiBQYXJlbnQgUExVUyBMb2FuIFJlZmluYW5jaW5nIFJldmlldzwvYT4KCQkJCTwvcD4KCQkJPC9kaXY+CgkJPD9waHAgZW5kaWY7ID8+Cgk8L2Rpdj4KPC9kaXY+Cjw/cGhwCgllY2hvICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+JzsKCSRsZW5kZXJfdmlld19kZXRhaWxzX2xpbmtfanNfdmFyID0gJ2xlbmRlcl92aWV3X2RldGFpbHNfbGlua18nIC4gZ2V0X3RoZV9pZCgpOwoJJGxlbmRlcl9jb2xsYXBzaWJsZV9yb3dfanNfdmFyID0gJ2xlbmRlcl9jb2xsYXBzaWJsZV9yb3dfJyAuIGdldF90aGVfaWQoKTsKCWVjaG8gJ3ZhciAnIC4gJGxlbmRlcl92aWV3X2RldGFpbHNfbGlua19qc192YXIgLiAnID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgibGVuZGVyLXZpZXctZGV0YWlscy1saW5rLScgLiBnZXRfdGhlX2lkKCkgLiAnIilbMF07JzsKCWVjaG8gJGxlbmRlcl92aWV3X2RldGFpbHNfbGlua19qc192YXIgLiAnLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oKSB7JzsKCWVjaG8gJ3RoaXMuY2xhc3NMaXN0LnRvZ2dsZSgiYWN0aXZlIik7JzsKCWVjaG8gJ3ZhciAnIC4gJGxlbmRlcl9jb2xsYXBzaWJsZV9yb3dfanNfdmFyIC4gJyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctJyAuIGdldF90aGVfaWQoKSAuICciKVswXTsnOwoJZWNobyAnaWYgKCcgLiAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnLnN0eWxlLm1heEhlaWdodCkgeyc7CgllY2hvICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0ID0gbnVsbDsnOwoJZWNobyAnfSBlbHNlIHsnOwoJZWNobyAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnLnN0eWxlLm1heEhlaWdodCA9ICcgLiAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnLnNjcm9sbEhlaWdodCArICJweCI7JzsKCWVjaG8gJ30nOwoJZWNobyAnfSk7JzsKCWVjaG8gJzwvc2NyaXB0Pic7Cj8+ PD9waHAKCSRhcHJfbGltaXRzID0gYXJyYXkoKTsKCgkkYXByX2xpbWl0XzEgPSBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICk7CgkkYXByX2xpbWl0XzIgPSBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl92YXJpYWJsZV9hcHJfdXBwZXJfbGltaXQnICk7CgkkYXByX2xpbWl0XzMgPSBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICk7CgkkYXByX2xpbWl0XzQgPSBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl9maXhlZF9hcHJfdXBwZXJfbGltaXQnICk7CgoJaWYoICRhcHJfbGltaXRfMSAhPSAnLScgKQoJewoJCSRhcHJfbGltaXRzW10gPSAkYXByX2xpbWl0XzE7Cgl9CgoJaWYoICRhcHJfbGltaXRfMiAhPSAnLScgKQoJewoJCSRhcHJfbGltaXRzW10gPSAkYXByX2xpbWl0XzI7Cgl9CgoJaWYoICRhcHJfbGltaXRfMyAhPSAnLScgKQoJewoJCSRhcHJfbGltaXRzW10gPSAkYXByX2xpbWl0XzM7Cgl9CgoJaWYoICRhcHJfbGltaXRfNCAhPSAnLScgKQoJewoJCSRhcHJfbGltaXRzW10gPSAkYXByX2xpbWl0XzQ7Cgl9Cj8+CjxkaXYgY2xhc3M9ImxlbmRlci1yb3ctd3JhcHBlciI+Cgk8ZGl2IGNsYXNzPSJsZW5kZXItcHJpbWFyeS1yb3ciPgoJCTxkaXYgY2xhc3M9ImxlbmRlci1sb2dvLXdyYXBwZXIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8YSBkYXRhLWV2ZW50LWxhYmVsPSI8P3BocCBlY2hvICdQUExSIC0gJyAuIGdldF90aGVfdGl0bGUoKTsgPz4iIGhyZWY9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfYWZmaWxpYXRlX2xpbmsnICk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImxlbmRlci1sb2dvLWxpbmsiPgoJCQkJPGltZyBzcmM9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfbG9nbycgKVsndXJsJ107ID8+IiBhbHQ9Ijw/cGhwIHRoZV90aXRsZSgpOyA/PiIgY2xhc3M9ImxlbmRlci1sb2dvIiAvPgoJCQk8L2E+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLXZhcmlhYmxlLWFwciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTw/cGhwCgkJCQlpZiggKCBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICkgIT0gIi0iICkgJiYgKCBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl92YXJpYWJsZV9hcHJfdXBwZXJfbGltaXQnICkgIT0gIi0iICkgKQoJCQkJewoJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfdmFyaWFibGVfYXByX2xvd2VyX2xpbWl0JyApIC4gJyUgLSAnIC4gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfdmFyaWFibGVfYXByX3VwcGVyX2xpbWl0JyApIC4gJyUnOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCWVjaG8gJy0nOwoJCQkJfQoJCQk/PgoJCTwvZGl2PgoJCTxkaXYgY2xhc3M9ImxlbmRlci1maXhlZC1hcHIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8P3BocAoJCQkJaWYoICggZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX3VwcGVyX2xpbWl0JyApICE9ICItIiApICkKCQkJCXsKCQkJCQllY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX2ZpeGVkX2Fwcl9sb3dlcl9saW1pdCcgKSAuICclIC0gJyAuIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQllY2hvICctJzsKCQkJCX0KCQkJPz4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItb3ZlcmFsbC1hcHIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8P3BocCBlY2hvIG1pbigkYXByX2xpbWl0cyk7ID8+JSAtIDw/cGhwIGVjaG8gbWF4KCRhcHJfbGltaXRzKTsgPz4lCgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWFmZmlsaWF0ZS1idXR0b24td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1BQTFIgLSAnIC4gZ2V0X3RoZV90aXRsZSgpOyA/PiIgaHJlZj0iPD9waHAgZWNobyBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl9hZmZpbGlhdGVfbGluaycgKTsgPz4iIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vZm9sbG93IiBjbGFzcz0ibGVuZGVyLWFmZmlsaWF0ZS1idXR0b24iPgoJCQkJR2V0IE15IFJhdGUKCQkJPC9hPgoJCTwvZGl2PgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJsZW5kZXItc2Vjb25kYXJ5LXJvdyI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWxvZ28tc2Vjb25kYXJ5LXJvdy1jZWxsIGxlbmRlci1zZWNvbmRhcnktcm93LWNlbGwiPgoJCQk8cCBjbGFzcz0ibGVuZGVyLXZpZXctZGV0YWlscy10cmlnZ2VyIj4KCQkJCTxzcGFuIGNsYXNzPSJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmsgbGVuZGVyLXZpZXctZGV0YWlscy1saW5rLTw/cGhwIHRoZV9JRCgpOyA/PiI+CgkJCQkJPHNwYW4gY2xhc3M9ImxlbmRlci12aWV3LWRldGFpbHMtbGluay1hcnJvdyI+PC9zcGFuPlZpZXcgRGV0YWlscwoJCQkJPHNwYW4+CgkJCTwvcD4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItdmFyaWFibGUtYXByLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItZml4ZWQtYXByLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItb3ZlcmFsbC1hcHItc2Vjb25kYXJ5LXJvdy1jZWxsIGxlbmRlci1zZWNvbmRhcnktcm93LWNlbGwiPgoJCTwvZGl2PgoJCTxkaXYgY2xhc3M9ImxlbmRlci1hZmZpbGlhdGUtYnV0dG9uLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQkJPHAgY2xhc3M9ImxlbmRlci1hZmZpbGlhdGUtYnV0dG9uLWhlbHBlci10ZXh0Ij4KCQkJCTw/cGhwCgkJCQkJaWYoIHN0cl9lbmRzX3dpdGgoIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX25hbWVfYmVsb3dfYnV0dG9uJyApLCAncycgKSApCgkJCQkJewoJCQkJCQllY2hvICdvbiAnIC4gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfbmFtZV9iZWxvd19idXR0b24nICkgLiAnXCcgd2Vic2l0ZSc7CgkJCQkJfQoJCQkJCWVsc2UKCQkJCQl7CgkJCQkJCWVjaG8gJ29uICcgLiBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl9uYW1lX2JlbG93X2J1dHRvbicgKSAuICdcJ3Mgd2Vic2l0ZSc7CgkJCQkJfQoJCQkJPz4KCQkJPC9wPgoJCTwvZGl2PgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93IGxlbmRlci1jb2xsYXBzaWJsZS1yb3ctPD9waHAgdGhlX0lEKCk7ID8+Ij4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbHMiPgoJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC0xIj4KCQkJCTxoMyBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtaGVhZGVyIj4KCQkJCQlPdmVydmlldwoJCQkJPC9oMz4KCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWNvbnRlbnQiPgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlWYXJpYWJsZSBBUFI6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocAoJCQkJCQkJCWlmKCAoIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKSAhPSAiLSIgKSAmJiAoIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAhPSAiLSIgKSApCgkJCQkJCQkJewoJCQkJCQkJCQllY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKSAuICclIC0gJyAuIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCQkJCQl9CgkJCQkJCQkJZWxzZQoJCQkJCQkJCXsKCQkJCQkJCQkJZWNobyAnLSc7CgkJCQkJCQkJfQoJCQkJCQkJPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUZpeGVkIEFQUjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwCgkJCQkJCQkJaWYoICggZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX3VwcGVyX2xpbWl0JyApICE9ICItIiApICkKCQkJCQkJCQl7CgkJCQkJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApIC4gJyUgLSAnIC4gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX3VwcGVyX2xpbWl0JyApIC4gJyUnOwoJCQkJCQkJCX0KCQkJCQkJCQllbHNlCgkJCQkJCQkJewoJCQkJCQkJCQllY2hvICctJzsKCQkJCQkJCQl9CgkJCQkJCQk/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBDcmVkaXQgU2NvcmU6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX21pbmltdW1fY3JlZGl0X3Njb3JlJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBJbmNvbWU6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX21pbmltdW1faW5jb21lJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJRmVlczoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZmVlcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLTIiPgoJCQkJPGgzIGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC1oZWFkZXIiPgoJCQkJCURldGFpbHMKCQkJCTwvaDM+CgkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC1jb250ZW50Ij4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJRWxpZ2libGUgTG9hbnM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX2VsaWdpYmxlX2xvYW5zJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBMb2FuIEFtb3VudDoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfbWluaW11bV9sb2FuX2Ftb3VudCcgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUxvYW4gVGVybXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX2xvYW5fdGVybXMnICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlCb3Jyb3dlciBSZXNpZGVuY3k6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX2JvcnJvd2VyX3Jlc2lkZW5jeScgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUhhcmRzaGlwIERlZmVybWVudDoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfaGFyZHNoaXBfZGVmZXJtZW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJQ28tc2lnbmVyIE9wdGlvbjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfY29zaWduZXJfb3B0aW9uJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQk8L2Rpdj4KCQk8P3BocCBpZiAoIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX3Jldmlld191cmwnICkgKTogPz4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1yZXZpZXciPgoJCQkJPHAgY2xhc3M9ImxlbmRlci1yZXZpZXctaGVhZGluZyI+CgkJCQkJUmV2aWV3OgoJCQkJPC9wPgoJCQkJPHA+CgkJCQkJPGEgaHJlZj0iPD9waHAgZWNobyBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl9yZXZpZXdfdXJsJyApOyA/PiIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJsZW5kZXItcmV2aWV3LWxpbmsiPjw/cGhwIHRoZV90aXRsZSgpOyA/PiBQYXJlbnQgUExVUyBMb2FuIFJlZmluYW5jaW5nIFJldmlldzwvYT4KCQkJCTwvcD4KCQkJPC9kaXY+CgkJPD9waHAgZW5kaWY7ID8+Cgk8L2Rpdj4KPC9kaXY+Cjw/cGhwCgllY2hvICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+JzsKCSRsZW5kZXJfdmlld19kZXRhaWxzX2xpbmtfanNfdmFyID0gJ2xlbmRlcl92aWV3X2RldGFpbHNfbGlua18nIC4gZ2V0X3RoZV9pZCgpOwoJJGxlbmRlcl9jb2xsYXBzaWJsZV9yb3dfanNfdmFyID0gJ2xlbmRlcl9jb2xsYXBzaWJsZV9yb3dfJyAuIGdldF90aGVfaWQoKTsKCWVjaG8gJ3ZhciAnIC4gJGxlbmRlcl92aWV3X2RldGFpbHNfbGlua19qc192YXIgLiAnID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgibGVuZGVyLXZpZXctZGV0YWlscy1saW5rLScgLiBnZXRfdGhlX2lkKCkgLiAnIilbMF07JzsKCWVjaG8gJGxlbmRlcl92aWV3X2RldGFpbHNfbGlua19qc192YXIgLiAnLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oKSB7JzsKCWVjaG8gJ3RoaXMuY2xhc3NMaXN0LnRvZ2dsZSgiYWN0aXZlIik7JzsKCWVjaG8gJ3ZhciAnIC4gJGxlbmRlcl9jb2xsYXBzaWJsZV9yb3dfanNfdmFyIC4gJyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctJyAuIGdldF90aGVfaWQoKSAuICciKVswXTsnOwoJZWNobyAnaWYgKCcgLiAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnLnN0eWxlLm1heEhlaWdodCkgeyc7CgllY2hvICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0ID0gbnVsbDsnOwoJZWNobyAnfSBlbHNlIHsnOwoJZWNobyAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnLnN0eWxlLm1heEhlaWdodCA9ICcgLiAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnLnNjcm9sbEhlaWdodCArICJweCI7JzsKCWVjaG8gJ30nOwoJZWNobyAnfSk7JzsKCWVjaG8gJzwvc2NyaXB0Pic7Cj8+ PD9waHAKCSRhcHJfbGltaXRzID0gYXJyYXkoKTsKCgkkYXByX2xpbWl0XzEgPSBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICk7CgkkYXByX2xpbWl0XzIgPSBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl92YXJpYWJsZV9hcHJfdXBwZXJfbGltaXQnICk7CgkkYXByX2xpbWl0XzMgPSBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl9maXhlZF9hcHJfbG93ZXJfbGltaXQnICk7CgkkYXByX2xpbWl0XzQgPSBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl9maXhlZF9hcHJfdXBwZXJfbGltaXQnICk7CgoJaWYoICRhcHJfbGltaXRfMSAhPSAnLScgKQoJewoJCSRhcHJfbGltaXRzW10gPSAkYXByX2xpbWl0XzE7Cgl9CgoJaWYoICRhcHJfbGltaXRfMiAhPSAnLScgKQoJewoJCSRhcHJfbGltaXRzW10gPSAkYXByX2xpbWl0XzI7Cgl9CgoJaWYoICRhcHJfbGltaXRfMyAhPSAnLScgKQoJewoJCSRhcHJfbGltaXRzW10gPSAkYXByX2xpbWl0XzM7Cgl9CgoJaWYoICRhcHJfbGltaXRfNCAhPSAnLScgKQoJewoJCSRhcHJfbGltaXRzW10gPSAkYXByX2xpbWl0XzQ7Cgl9Cj8+CjxkaXYgY2xhc3M9ImxlbmRlci1yb3ctd3JhcHBlciI+Cgk8ZGl2IGNsYXNzPSJsZW5kZXItcHJpbWFyeS1yb3ciPgoJCTxkaXYgY2xhc3M9ImxlbmRlci1sb2dvLXdyYXBwZXIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8YSBkYXRhLWV2ZW50LWxhYmVsPSI8P3BocCBlY2hvICdQUExSIC0gJyAuIGdldF90aGVfdGl0bGUoKTsgPz4iIGhyZWY9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfYWZmaWxpYXRlX2xpbmsnICk7ID8+IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImxlbmRlci1sb2dvLWxpbmsiPgoJCQkJPGltZyBzcmM9Ijw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfbG9nbycgKVsndXJsJ107ID8+IiBhbHQ9Ijw/cGhwIHRoZV90aXRsZSgpOyA/PiIgY2xhc3M9ImxlbmRlci1sb2dvIiAvPgoJCQk8L2E+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLXZhcmlhYmxlLWFwciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTw/cGhwCgkJCQlpZiggKCBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl92YXJpYWJsZV9hcHJfbG93ZXJfbGltaXQnICkgIT0gIi0iICkgJiYgKCBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl92YXJpYWJsZV9hcHJfdXBwZXJfbGltaXQnICkgIT0gIi0iICkgKQoJCQkJewoJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfdmFyaWFibGVfYXByX2xvd2VyX2xpbWl0JyApIC4gJyUgLSAnIC4gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfdmFyaWFibGVfYXByX3VwcGVyX2xpbWl0JyApIC4gJyUnOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCWVjaG8gJy0nOwoJCQkJfQoJCQk/PgoJCTwvZGl2PgoJCTxkaXYgY2xhc3M9ImxlbmRlci1maXhlZC1hcHIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8P3BocAoJCQkJaWYoICggZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX3VwcGVyX2xpbWl0JyApICE9ICItIiApICkKCQkJCXsKCQkJCQllY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX2ZpeGVkX2Fwcl9sb3dlcl9saW1pdCcgKSAuICclIC0gJyAuIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX2ZpeGVkX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQllY2hvICctJzsKCQkJCX0KCQkJPz4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItb3ZlcmFsbC1hcHIgbGVuZGVyLXByaW1hcnktcm93LWNlbGwiPgoJCQk8P3BocCBlY2hvIG1pbigkYXByX2xpbWl0cyk7ID8+JSAtIDw/cGhwIGVjaG8gbWF4KCRhcHJfbGltaXRzKTsgPz4lCgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWFmZmlsaWF0ZS1idXR0b24td3JhcHBlciBsZW5kZXItcHJpbWFyeS1yb3ctY2VsbCI+CgkJCTxhIGRhdGEtZXZlbnQtbGFiZWw9Ijw/cGhwIGVjaG8gJ1BQTFIgLSAnIC4gZ2V0X3RoZV90aXRsZSgpOyA/PiIgaHJlZj0iPD9waHAgZWNobyBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl9hZmZpbGlhdGVfbGluaycgKTsgPz4iIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vZm9sbG93IiBjbGFzcz0ibGVuZGVyLWFmZmlsaWF0ZS1idXR0b24iPgoJCQkJR2V0IE15IFJhdGUKCQkJPC9hPgoJCTwvZGl2PgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJsZW5kZXItc2Vjb25kYXJ5LXJvdyI+CgkJPGRpdiBjbGFzcz0ibGVuZGVyLWxvZ28tc2Vjb25kYXJ5LXJvdy1jZWxsIGxlbmRlci1zZWNvbmRhcnktcm93LWNlbGwiPgoJCQk8cCBjbGFzcz0ibGVuZGVyLXZpZXctZGV0YWlscy10cmlnZ2VyIj4KCQkJCTxzcGFuIGNsYXNzPSJsZW5kZXItdmlldy1kZXRhaWxzLWxpbmsgbGVuZGVyLXZpZXctZGV0YWlscy1saW5rLTw/cGhwIHRoZV9JRCgpOyA/PiI+CgkJCQkJPHNwYW4gY2xhc3M9ImxlbmRlci12aWV3LWRldGFpbHMtbGluay1hcnJvdyI+PC9zcGFuPlZpZXcgRGV0YWlscwoJCQkJPHNwYW4+CgkJCTwvcD4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItdmFyaWFibGUtYXByLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItZml4ZWQtYXByLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItb3ZlcmFsbC1hcHItc2Vjb25kYXJ5LXJvdy1jZWxsIGxlbmRlci1zZWNvbmRhcnktcm93LWNlbGwiPgoJCTwvZGl2PgoJCTxkaXYgY2xhc3M9ImxlbmRlci1hZmZpbGlhdGUtYnV0dG9uLXNlY29uZGFyeS1yb3ctY2VsbCBsZW5kZXItc2Vjb25kYXJ5LXJvdy1jZWxsIj4KCQkJPHAgY2xhc3M9ImxlbmRlci1hZmZpbGlhdGUtYnV0dG9uLWhlbHBlci10ZXh0Ij4KCQkJCTw/cGhwCgkJCQkJaWYoIHN0cl9lbmRzX3dpdGgoIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX25hbWVfYmVsb3dfYnV0dG9uJyApLCAncycgKSApCgkJCQkJewoJCQkJCQllY2hvICdvbiAnIC4gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfbmFtZV9iZWxvd19idXR0b24nICkgLiAnXCcgd2Vic2l0ZSc7CgkJCQkJfQoJCQkJCWVsc2UKCQkJCQl7CgkJCQkJCWVjaG8gJ29uICcgLiBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl9uYW1lX2JlbG93X2J1dHRvbicgKSAuICdcJ3Mgd2Vic2l0ZSc7CgkJCQkJfQoJCQkJPz4KCQkJPC9wPgoJCTwvZGl2PgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93IGxlbmRlci1jb2xsYXBzaWJsZS1yb3ctPD9waHAgdGhlX0lEKCk7ID8+Ij4KCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbHMiPgoJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC0xIj4KCQkJCTxoMyBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1jb2wtaGVhZGVyIj4KCQkJCQlPdmVydmlldwoJCQkJPC9oMz4KCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLWNvbnRlbnQiPgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlWYXJpYWJsZSBBUFI6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocAoJCQkJCQkJCWlmKCAoIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKSAhPSAiLSIgKSAmJiAoIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAhPSAiLSIgKSApCgkJCQkJCQkJewoJCQkJCQkJCQllY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl9sb3dlcl9saW1pdCcgKSAuICclIC0gJyAuIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX3ZhcmlhYmxlX2Fwcl91cHBlcl9saW1pdCcgKSAuICclJzsKCQkJCQkJCQl9CgkJCQkJCQkJZWxzZQoJCQkJCQkJCXsKCQkJCQkJCQkJZWNobyAnLSc7CgkJCQkJCQkJfQoJCQkJCQkJPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUZpeGVkIEFQUjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwCgkJCQkJCQkJaWYoICggZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApICE9ICItIiApICYmICggZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX3VwcGVyX2xpbWl0JyApICE9ICItIiApICkKCQkJCQkJCQl7CgkJCQkJCQkJCWVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX2xvd2VyX2xpbWl0JyApIC4gJyUgLSAnIC4gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZml4ZWRfYXByX3VwcGVyX2xpbWl0JyApIC4gJyUnOwoJCQkJCQkJCX0KCQkJCQkJCQllbHNlCgkJCQkJCQkJewoJCQkJCQkJCQllY2hvICctJzsKCQkJCQkJCQl9CgkJCQkJCQk/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBDcmVkaXQgU2NvcmU6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX21pbmltdW1fY3JlZGl0X3Njb3JlJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBJbmNvbWU6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX21pbmltdW1faW5jb21lJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJRmVlczoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZmVlcycgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQk8L2Rpdj4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctY29sLTIiPgoJCQkJPGgzIGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC1oZWFkZXIiPgoJCQkJCURldGFpbHMKCQkJCTwvaDM+CgkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWNvbC1jb250ZW50Ij4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJRWxpZ2libGUgTG9hbnM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX2VsaWdpYmxlX2xvYW5zJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJTWluaW11bSBMb2FuIEFtb3VudDoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfbWluaW11bV9sb2FuX2Ftb3VudCcgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUxvYW4gVGVybXM6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX2xvYW5fdGVybXMnICk7ID8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LXZhbHVlLXJvdyI+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3cta2V5LWNvbCI+CgkJCQkJCQlCb3Jyb3dlciBSZXNpZGVuY3k6CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LXZhbHVlLWNvbCI+CgkJCQkJCQk8P3BocCBlY2hvIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX2JvcnJvd2VyX3Jlc2lkZW5jeScgKTsgPz4KCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktdmFsdWUtcm93Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1rZXktY29sIj4KCQkJCQkJCUhhcmRzaGlwIERlZmVybWVudDoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfaGFyZHNoaXBfZGVmZXJtZW50JyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS12YWx1ZS1yb3ciPgoJCQkJCQk8ZGl2IGNsYXNzPSJsZW5kZXItY29sbGFwc2libGUtcm93LWtleS1jb2wiPgoJCQkJCQkJQ28tc2lnbmVyIE9wdGlvbjoKCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctdmFsdWUtY29sIj4KCQkJCQkJCTw/cGhwIGVjaG8gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfY29zaWduZXJfb3B0aW9uJyApOyA/PgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQk8L2Rpdj4KCQk8P3BocCBpZiAoIGdldF9maWVsZCggJ3BwbHJfbGVuZGVyX3Jldmlld191cmwnICkgKTogPz4KCQkJPGRpdiBjbGFzcz0ibGVuZGVyLWNvbGxhcHNpYmxlLXJvdy1yZXZpZXciPgoJCQkJPHAgY2xhc3M9ImxlbmRlci1yZXZpZXctaGVhZGluZyI+CgkJCQkJUmV2aWV3OgoJCQkJPC9wPgoJCQkJPHA+CgkJCQkJPGEgaHJlZj0iPD9waHAgZWNobyBnZXRfZmllbGQoICdwcGxyX2xlbmRlcl9yZXZpZXdfdXJsJyApOyA/PiIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJsZW5kZXItcmV2aWV3LWxpbmsiPjw/cGhwIHRoZV90aXRsZSgpOyA/PiBQYXJlbnQgUExVUyBMb2FuIFJlZmluYW5jaW5nIFJldmlldzwvYT4KCQkJCTwvcD4KCQkJPC9kaXY+CgkJPD9waHAgZW5kaWY7ID8+Cgk8L2Rpdj4KPC9kaXY+Cjw/cGhwCgllY2hvICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+JzsKCSRsZW5kZXJfdmlld19kZXRhaWxzX2xpbmtfanNfdmFyID0gJ2xlbmRlcl92aWV3X2RldGFpbHNfbGlua18nIC4gZ2V0X3RoZV9pZCgpOwoJJGxlbmRlcl9jb2xsYXBzaWJsZV9yb3dfanNfdmFyID0gJ2xlbmRlcl9jb2xsYXBzaWJsZV9yb3dfJyAuIGdldF90aGVfaWQoKTsKCWVjaG8gJ3ZhciAnIC4gJGxlbmRlcl92aWV3X2RldGFpbHNfbGlua19qc192YXIgLiAnID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgibGVuZGVyLXZpZXctZGV0YWlscy1saW5rLScgLiBnZXRfdGhlX2lkKCkgLiAnIilbMF07JzsKCWVjaG8gJGxlbmRlcl92aWV3X2RldGFpbHNfbGlua19qc192YXIgLiAnLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oKSB7JzsKCWVjaG8gJ3RoaXMuY2xhc3NMaXN0LnRvZ2dsZSgiYWN0aXZlIik7JzsKCWVjaG8gJ3ZhciAnIC4gJGxlbmRlcl9jb2xsYXBzaWJsZV9yb3dfanNfdmFyIC4gJyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImxlbmRlci1jb2xsYXBzaWJsZS1yb3ctJyAuIGdldF90aGVfaWQoKSAuICciKVswXTsnOwoJZWNobyAnaWYgKCcgLiAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnLnN0eWxlLm1heEhlaWdodCkgeyc7CgllY2hvICRsZW5kZXJfY29sbGFwc2libGVfcm93X2pzX3ZhciAuICcuc3R5bGUubWF4SGVpZ2h0ID0gbnVsbDsnOwoJZWNobyAnfSBlbHNlIHsnOwoJZWNobyAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnLnN0eWxlLm1heEhlaWdodCA9ICcgLiAkbGVuZGVyX2NvbGxhcHNpYmxlX3Jvd19qc192YXIgLiAnLnNjcm9sbEhlaWdodCArICJweCI7JzsKCWVjaG8gJ30nOwoJZWNobyAnfSk7JzsKCWVjaG8gJzwvc2NyaXB0Pic7Cj8+

PD9waHAKCSRvdXRwdXQgPSAnJzsKCQoJJGFyZ3MgPSBhcnJheSgKICAgICAgICAncG9zdF90eXBlJyA9PiAncHBscl9sZW5kZXInLAogICAgICAgICdwb3N0c19wZXJfcGFnZScgPT4gLTEsCgkJJ21ldGFfcXVlcnknID0+IGFycmF5KAoJCQkJCQkJJ3JlbGF0aW9uJyA9PiAnQU5EJywKCQkJCQkJCWFycmF5KAoJCQkJCQkJCSdrZXknID0+ICdwcGxyX2xlbmRlcl92aXNpYmxlJywKCQkJCQkJCQkndmFsdWUnID0+ICcxJywKCQkJCQkJCQknY29tcGFyZScgPT4gJz0nLAoJCQkJCQkJKSwKCQkJCQkJCWFycmF5KAoJCQkJCQkJCSdrZXknID0+ICdwcGxyX2xlbmRlcl9kaXNjbG9zdXJlX3VybCcsCgkJCQkJCQkJJ2NvbXBhcmUnID0+ICdFWElTVFMnLAoJCQkJCQkJKSwKCQkJCQkJKSwKCQknbWV0YV9rZXknID0+ICdwcGxyX2xlbmRlcl9wb3NpdGlvbicsCgkJJ29yZGVyYnknID0+ICdtZXRhX3ZhbHVlX251bScsCgkJJ29yZGVyJyA9PiAnQVNDJywKICAgICk7CgoJJGxvb3AgPSBuZXcgV1BfUXVlcnkoICRhcmdzICk7CgoJaWYgKCAkbG9vcCAtPiBoYXZlX3Bvc3RzKCkgKSB7CgkJCgkJJG91dHB1dCA9ICdEaXNjbG9zdXJlczogJzsKCQkKCQl3aGlsZSAoICRsb29wIC0+IGhhdmVfcG9zdHMoKSApIHsKCQkJCgkJCSRsb29wIC0+IHRoZV9wb3N0KCk7CgkJCQoJCQkkb3V0cHV0IC49ICc8YSBocmVmPSInIC4gZ2V0X2ZpZWxkKCAncHBscl9sZW5kZXJfZGlzY2xvc3VyZV91cmwnICkgLiAnIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub2ZvbGxvdyI+JyAuIGdldF90aGVfdGl0bGUoKSAuICc8L2E+IHwgJzsKCQkJCgkJfQoJCQoJfQoKCXdwX3Jlc2V0X3Bvc3RkYXRhKCk7CgoJJG91dHB1dCA9IHN1YnN0ciggJG91dHB1dCwgMCwgc3RybGVuKCAkb3V0cHV0ICkgLSAzICk7CgoJZWNobyAkb3V0cHV0Owo/Pg==

In this complete guide to pay off Parent PLUS Loans, you will learn how to:

How To Refinance Parent PLUS Loans

Can you refinance Parent PLUS Loans? The answer is yes. Parent PLUS Loans typically have high interest rates, which can interfere with your retirement savings and become a financial burden. You can refinance Parent PLUS Loans to save money, lower your interest rate and pay off debt more quickly. There are two ways to refinance Parent PLUS Loans:

  • Refinance Parent PLUS Loans in your name only
  • Parent PLUS Loan refinancing in your child’s name

Refinance Parent PLUS Loans in your name only​

Refinancing Parent PLUS Loans in your name only is the standard way that borrowers refinance Parent PLUS Loans. When you refinance Parent PLUS Loans, the process is similar to how to refinance student loans. To qualify for Parent PLUS Loan refinancing, you will need good credit, stable and recurring monthly income, and a low debt-to-income ratio. Lenders want to ensure that you can afford your monthly living expenses, plus debt payments for mortgages, student loans and credit cards. When you refinance Parent PLUS Loans, a private lender pays off your existing Parent PLUS Loans, which means you no longer will have the benefits of a federal government loan.

The process to refinance Parent PLUS Loans is simple. You can compare Parent PLUS Loans refinance lenders and then check your new interest rate for free in about two minutes with no impact to your credit score. Then, you can apply online in about 10-15 minutes.

Parent PLUS Loan refinancing in your child’s name​

Can a Parent PLUS Loan be transferred to the student? Many Parent PLUS Loans borrowers ask whether they can transfer Parent PLUS Loans to their child. The short answer is no, you can’t directly transfer Parent PLUS Loans to a child. However, you can refinance Parent PLUS Loans in your child’s name with certain private lenders. To qualify, the student must qualify for student loan refinancing. That means your child must have good credit (at least 650 or higher), stable and recurring income, and a low debt-to-income ratio. Lenders want to ensure that your child can repay student loans, pay for living expenses, and pay other debt obligations such as credit card debt or a mortgage.

How To Consolidate Parent PLUS Loans

Many parents ask: Should I consolidate my Parent PLUS Loans? When you consolidate Parent PLUS Loans, you combine your existing Parent PLUS Loans into a single, Direct Consolidation Loan. You can even consolidate a single Parent PLUS Loan too. Parent PLUS Loan consolidation helps you to organize your existing Parent PLUS Loans into a single loan. When you consolidate Parent PLUS Loans, the repayment period is 10-30 years. While a longer repayment schedule may lower your monthly payment, you may pay more in total interest. The interest rate for a Direct Consolidation Loan is equal to a weighted average of your existing Parent PLUS Loans, rounded up to the nearest 1/8%. Therefore, Parent PLUS Loan consolidation doesn’t lower your interest rate.

How To Lower Your Parent PLUS Loan Payments

An income-driven repayment plan is one option tolower your Parent PLUS Loan payments. Income-driven repayment plans are federal repayment plans that cap your student loan payment at a percentage of your monthly income. Parent PLUS Loans are only eligible for Income-Contingent Repayment (ICR), which is one type of income-driven repayment plan.

Income-Contingent Repayment (ICR) lowers your monthly payment to the lesser of:

  • 20% of your discretionary income; and
  • The amount you would pay on a fixed, 12-year repayment schedule

Choose an Income-Contingent Repayment (ICR) plan if you are unable to afford the Standard Repayment Plan, which is 10 years. To qualify for ICR, first you must consolidate your Parent PLUS Loans to a Direct Consolidation Loan. You also may be liable for income taxes if you receive any loan forgiveness.

How To Get Parent PLUS Loan Forgiveness

Many parent borrowers ask: Are Parent PLUS Loans eligible for forgiveness? Other parents ask: How can I get my Parent PLUS Loan forgiven?

If you want to know how to get Parent PLUS Loan forgiveness, the best way is through Public Service Loan Forgiveness. The Public Service Loan Forgiveness program is a federal program that offers student loan forgiveness. To qualify, you must be a full-time employee of a public service or non-profit employer. To get Parent PLUS Loan forgiveness, the employment of the parent borrower is what matters; not your child’s employment. You also must make at least 120 monthly student loan payments.

It is important to understand all the requirements of the Public Service Loan Forgiveness program. To qualify, you must first consolidate your Parent PLUS Loans into a Direct Consolidation Loan. Then, you must make a majority of your loan payments while enrolled in an income-driven repayment plan.

Parent PLUS Loans: Important Questions

What is the best way to pay off Parent PLUS Loans?

The best way to pay off Parent PLUS Loans depends on your personal circumstances and financial situation. The Standard Repayment Plan takes 10 years to pay off Parent PLUS Loans and is the most straightforward.

If you want to lower the interest rate on your Parent PLUS Loans, then Parent PLUS Loan refinancing is your best strategy. You can lower your interest rate, save money and pay off Parent PLUS Loans faster.

If you are struggling to pay off your Parent PLUS Loan, then you consider an income-driven repayment plan such as Income-Contingent Repayment (ICR). While you can lower your monthly payment, this strategy may be more expensive because interest still accrues on your Parent PLUS Loan.

Can you pay off Parent PLUS Loans early?

Yes, you can pay off Parent PLUS Loans early. Parent PLUS Loans are federal student loans, which can be paid off any time with no prepayment penalty.You may choose to pay off Parent PLUS Loans early, or you may decide to use those funds to save more for retirement.

Can Parent PLUS Loans be forgiven?

Parent PLUS Loans can be forgiven. The best way to get Parent PLUS Loan forgiveness is through the Public Service Loan Forgiveness program. You can receive Parent PLUS Loan forgiveness if you meet all requirements, including 120 monthly payments, and work for an eligible employer.

Do you have to pay back Parent PLUS Loans?

Parent PLUS Loan repayment begins immediately. The good news is that you are able to apply for student loan deferment while your child is enrolled in school and for six months after graduation. That’s why it is important to have a Parent PLUS Loan repayment strategy in place so that you understand all your options.

Let's mentor your money

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