These Entrepreneurs Raised $221 Million To Beat Craigslist

By Mentor Staff | Edited By Mentor Staff

Updated On November 2, 2021

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.

At the 2013 White House Correspondents Dinner, Conan O’Brien quipped that Matt Drudge, founder of the Drudge Report, was not in attendance because “he had a prior commitment to teach a web design class in 1997.”

Successful minimalist websites are a rarity, but Drudge Report (which generates more than 750 million page views per month) and Craigslist are two that have bucked the trend.

Founded in 1995 by Craig Newmark, Craigslist is the local classified advertisements website that generates over 50 billion page views per month – all without an iOS or Android app.

For years, Craigslist has been the go-to website to buy and sell used items online. Until now.

Enter Nick Huzar and Arean van Veelen.

They are the two young entrepreneurs behind OfferUp, the mobile-driven local marketplace that is disrupting the way that we buy and sell merchandise.

With over 33 million downloads and more than $14 billion in transactions, OfferUp is now the largest mobile marketplace in the U.S. Founded in 2011, the peer-to-peer commerce marketplace generated more transactions in less than five years than EBay North America had generated in its first 10 years.

“Since the smartphone was just starting to really permeate our everyday lives, we wanted to make the most seamless, user-friendly mobile app that makes buying and selling locally easier than ever,” van Veelen said.

With its headquarters in Bellevue, Washington, OfferUp enables users to buy and sell everything from furniture and electronics to cars and boats through its free mobile app. Users can conduct the entire transaction through their smart phone: snapping and uploading photos of an item to sell, adding a description and interacting with potential buyers. OfferUp is a national platform, but the goal is to buy and sell items within a user’s local community.

Buyers can then message sellers to meet, and then pay for items through the app or in person. Unlike EBay, OfferUp currently does not charge sellers a listing fee or transaction fee. To ensure a more trustworthy transaction, the marketplace has a verified identification system (which requires state-issued identification and Facebook profile), user profiles, buyer and seller ratings and in-app messaging.

Huzar, 39, serves as chief executive officer and van Veelen, 43, is chief technology officer. Prior to OfferUp, Huzar worked at Microsoft and T-Mobile and founded several start-ups. Van Veelen also worked at start-ups, including with Huzar at Konnects, a networking platform. Together, they oversee over 100 OfferUp employees.

In her 2016 Internet Trends report, Mary Meeker, a senior partner at venture firm Kleiner Perkins Caufield and Byers, wrote that OfferUp users spend an average of 25 minutes per day on the OfferUp app, which is the same amount of time users spend on Instagram and Snapchat (and more time than on both Pinterest and Twitter).

Huzar attributed the high level of engagement to OfferUp’s focus on a secure, frictionless user experience, an image-driven platform and the creation of a community built on personal connectivity.

Top Picks For Student Loan Refinancing

PD9waHAKCWVjaG8gZGF0ZSgnRicpIC4gIiAiIC4gZGF0ZSgiWSIpOwo/Pg==

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

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

The Investment Thesis: A Venture Capitalist Perspective

Great investments are built on a solid investment thesis.

Now valued at over $1 billion, OfferUp is no different.

How did venture capitalists view the investment opportunity?

The advent of the mobile revolution transformed the way in which people transact. Ask Jeff Jordan, a general partner at Andreessen Horowitz (an OfferUp investor), the former president of PayPal and the former president and chief executive officer of OpenTable. According to Jordan, as a mobile-first platform, OfferUp emerged as a disruptor by providing an improved user interface, frictionless experience and on-demand transactions from anywhere.

“Nick and Arean did a fantastic job rethinking what a smartphone could do to deliver an easier, faster and more enjoyable user experience for both buyers and sellers, which in turn has driven both liquidity and virality in the marketplace,” said Justin Sadrian, a managing director at Warburg Pincus, an OfferUp investor. “We have been one of the most active investors in marketplace businesses around the world, and rarely have we seen the scale, liquidity, virality and growth that OfferUp has demonstrated in a market this big.”

In the early 2000s, Craigslist disrupted the classified advertising market by converting newspaper readers to online users and thereby decimating the print media advertising model. Twenty years later, the smart phone is the new digital disruptor – and a major force in driving users from PC to mobile.

In this technology shift, Huzar and van Veelen saw massive opportunity, particularly as Craigslist did not adapt to the new mobile paradigm. As new fathers, they needed to sell their old belongings to make room for their newborns, but felt limited by the existing online options.

They created OfferUp to create a “simpler and more trusted way to buy and sell locally” – one in which users leverage the power and ease of their smart phone to take photos and then list and sell items in a more seamless way.

“I strongly believe OfferUp will surpass Craigslist and all other competitors as the go-to marketplace for the American consumer to buy and sell locally,” said Josh Breinlinger, an OfferUp board member and managing director at Jackson Square Ventures, which led OfferUp’s Series A financing round. “To achieve this, they need to continue growing consumer awareness, increase seller liquidity (percentage of items that sell), and continue to emphasize ease of use and trust for all users.”

OfferUp has raised over $221 million from some of the smartest minds in technology and finance, including one of its most recent investors, Max Levchin, co-founder of PayPal and co-founder and chief executive officer of Affirm.

“OfferUp is one the most exciting e-commerce companies I have come across in a long time,” Levchin said in a statement last November. “While consumer commerce continues to evolve in specific areas, it’s rare to have a company completely redefine the marketplace experience from start to finish. OfferUp is that type of company and it has been rewarded by a fiercely loyal and engaged user base, and explosive growth. I am excited to work with Nick, Arean and the team there to continue to usher in the era of mobile-driven local commerce.”

Other OfferUp investors include Coatue Management, Tiger Global, T. Rowe Price, Allen & Company, High Line Venture Partners, GGV Capital, Third Kind Capital, Altimeter Capital and Vy Capital, among others.

How Can You Make Money On OfferUp?

As a marketplace, OfferUp is not only positioned to help declutter your life, but it is also a monetization platform to convert unwanted items to extra cash.

Huzar and van Veelen focused intently on understanding the competitive landscape, consumer behavior and the economic backdrop to design a tech-enabled solution for its customer base.

According to a 2016 OfferUp and ClearVoice survey, OfferUp found that 48% of respondents consider their home to be cluttered with items they do not use, and 62% own more than 10 items they have not used in the past year. OfferUp also found that 46% of respondents find it difficult to meet their household expenses on time each month, and 50% have more than $1,000 in credit card debt.

Despite these statistics, 68% plan to donate their unneeded items, and more than one in eight people planned to throw them in the trash. Why? Respondents feel that it is easier to donate than sell, citing the required time investment and amount of work.

OfferUp is hoping technology will simplify the sale process and enable users to monetize the cash hiding in their home.

Some users use OfferUp to help grow their small businesses. Vance Lile, a Vancouver, Washington resident, owns an antique reselling businesses that he uses as a second source of income. Greg Theer of Tacoma, Washington uses OfferUp to sell his unique clock and garden sculpture creations to help fund his son’s college tuition.

Van Veelen sees the mobile trend continuing in 2018. “I think we’ll continue to see a shift towards mobile,” van Veelen said. “OfferUp was one of the first, truly mobile marketplaces and more and more experiences are going to continue to happen exclusively via smartphones.”

Top 3 Tips From OfferUp To Convert Your Items To Cash

Here are some pointers from OfferUp co-founder Arean van Veelen to maximize your profit:

  1. The top unused items in our homes are clothes and shoes (67%), games and toys (34%), electronics (33%), jewelry and accessories (22%) and kitchen supplies (18%).
  2. OfferUp has a very visual interface so the quality of your photos can impact how many offers you receive. Take photos of your item from all angles so that buyers can get a feel for the size and dimensions of the item you are selling.
  3. Unsure about a selling price? Rather than specify a price, sellers can also list their item as “not firm on price,” which means buyers are able to chat and negotiate with sellers before deciding on a price.

Let's mentor your money

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