PD9waHAKLyoqCiAqIFBsdWdpbiBOYW1lOiDlnKjllYboqIDms5Ugwrcg5Yqf6IO95aKe5by6ICh6YWlzaGFuZy1mZWF0dXJlcykKICogRGVzY3JpcHRpb246IOW+i+W4iOWFpempuyArIOeUqOaIt+WSqOivoiArIOW4ruWKqeW3peWFt+W5s+WPsOOAguS/neeVmSBXQi1VbmlmeSDmoYbmnrbkuI3lj5jvvIzmqKHlnZfljJbmianlsZXjgIIKICogVmVyc2lvbjogMS40Ni4wCiAqIEF1dGhvcjog5bCP6b6ZCiAqLwoKaWYgKCAhIGRlZmluZWQoICdBQlNQQVRIJyApICkgewogICAgZXhpdDsgLy8g56aB5q2i55u05o6l6K6/6ZeuCn0KCmRlZmluZSggJ1pTRl9QQVRIJywgcGx1Z2luX2Rpcl9wYXRoKCBfX0ZJTEVfXyApICk7CmRlZmluZSggJ1pTRl9VUkwnLCBwbHVnaW5fZGlyX3VybCggX19GSUxFX18gKSApOwovLyDljZXkuIDniYjmnKzlj7fmnaXmupDvvJrotYTkuqfniYjmnKzjgIHph43lhpnop4TliJnliLfmlrDjgIHlkI7lj7DpobXohJrnu5/kuIDlvJXnlKjvvIzpgb/lhY3lpJrlpITnoaznvJbnoIHkuI3lkIzmraXjgIIKZGVmaW5lKCAnWlNGX1ZFUlNJT04nLCAnMS40Ni4wJyApOwoKLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKiDmqKHlnZfliqDovb3vvIjjirQgbW9kdWxlLWd1YXJkIOayu+eQhiArIOazqOWGjOihqOmpseWKqO+8iQogKgogKiBtb2R1bGUtZ3VhcmQucGhwIOW/hemhu+acgOWFiOWKoOi9ve+8muWug+WumuS5iSB6c2ZfbG9hZF9tb2R1bGVzKCkgLyB6c2ZfbW9kdWxlX3JlZ2lzdHJ5KCkKICog562J5rK755CG5Ye95pWw44CC5YW25L2ZIDUwKyDkuKrkuJrliqHmqKHlnZfvvIjlkKsg44q1IGVycm9yLXBhZ2Vz77yJ5pS555Sx5rOo5YaM6KGo6aG65bqPICsKICog5ZCO5Y+w5byA5YWz54q25oCB5Yaz5a6a5Yqg6L295LiO5ZCm77yM5LiN5YaN56Gs57yW56CBIHJlcXVpcmXjgILov5nmoLflj6/lrp7njrDliIbmibnngbDluqbpg6jnvbIKICog5LiO5Y2V5qih5Z2X56eS57qn5YWz5YGc77yI6K+m6KeB5ZCO5Y+w44CM5qih5Z2X5byA5YWz44CN6aG177yJ77yM6YG/5YWN5LiA5qyh5oCn6YOo572yIDMwIOS4quaooeWdlwogKiDku7vkuIDlvILluLjljbPlhajnq5nnmb3lsY/jgILpobrluo/mlY/mhJ/pgLvovpHlt7LmlLbmlZvov5sgenNmX21vZHVsZV9yZWdpc3RyeSgp44CCCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KcmVxdWlyZV9vbmNlIFpTRl9QQVRIIC4gJ2luY2x1ZGVzL21vZHVsZS1ndWFyZC5waHAnOyAgLy8g44q0IOaooeWdl+eBsOW6puW8gOWFs+S4juWuieWFqOaooeW8j++8iOayu+eQhuWxgu+8jOacgOWFiOWKoOi9ve+8jOS4jeS+nei1luWFtuS7luaooeWdl++8iQp6c2ZfbG9hZF9tb2R1bGVzKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOaMieazqOWGjOihqCArIOayu+eQhueKtuaAgeWKoOi9veWFqOmDqOS4muWKoeaooeWdl++8iGNwdOKGkuKApuKGknNoZWxsLWZpbGzvvInihpIg5ZCrIOOKtSBlcnJvci1wYWdlcwpyZXF1aXJlX29uY2UgWlNGX1BBVEggLiAnaW5jbHVkZXMvc2VydmljZS1uYXYtc2hvcnRjb2RlLnBocCc7CnJlcXVpcmVfb25jZSBaU0ZfUEFUSCAuICdpbmNsdWRlcy9zZW8tZ2VvLXNjaGVtYS5waHAnOyAgLy8gR0VPL1NFTyBTY2hlbWEub3JnIEpTT04tTEQg5rOo5YWl77yId3BfZm9vdGVyICsgd3BzZW8gYXJ0aWNsZSBmaWx0ZXLvvIkgIC8vIOacjeWKoeWvvOiIquS4reW/g+efreS7o+eggSBbenNfc2VydmljZV9uYXZd77yIUjQyIOaWueW8jzIg6YOo572y77yJCgovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqIOi1hOS6p+WKoOi9ve+8iENTUy9KU++8iQogKgogKiDph43opoHvvJrmnKznq5nkuLvpopggLyDmoYbmnrYoV0ItVW5pZnkp5LiN6LWw5qCH5YeGIHdwX2VucXVldWUg6L6T5Ye6566h6YGT77yMCiAqIOaPkuS7tiBlbnF1ZXVlIOeahCB6cy1mZWF0dXJlcyAvIHpzLXRvb2xzIOi1hOa6kOS4jeS8muiiq+aJk+WNsOWIsOWJjeerrwogKiDvvIh3cF9oZWFkL3dwX2Zvb3RlciDkuI3kvJrovpPlh7rmj5Lku7YgPGxpbms+LzxzY3JpcHQ+77yMalF1ZXJ5IOS5n+acquWKoOi9ve+8ieOAggogKiDlm6DmraTkv53nlZnmoIflh4YgZW5xdWV1Ze+8iOS+m+ato+W4uCBXUCDkuLvpopjlhbzlrrnvvInnmoTlkIzml7bvvIwKICog6aKd5aSW55So44CMdGhlX2NvbnRlbnQg5YaF6IGU5qC35byPICsg5a6i5oi356uv5oyJ6ZyA5Yqg6L296ISa5pys44CN5YWc5bqV77yMCiAqIOehruS/neW3peWFt+WcqOS7u+aEj+S4u+mimC/moYbmnrbkuIvpg73og73mraPnoa7moLflvI/ljJblubblhbflpIfkuqTkupLog73lipvjgIIKICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwphZGRfYWN0aW9uKCAnd3BfZW5xdWV1ZV9zY3JpcHRzJywgZnVuY3Rpb24gKCkgewogICAgaWYgKCBpc19hZG1pbigpICkgcmV0dXJuOwogICAgd3BfZW5xdWV1ZV9zdHlsZSggJ3pzLWZlYXR1cmVzJywgWlNGX1VSTCAuICdhc3NldHMvY3NzL3pzLWZlYXR1cmVzLmNzcycsIGFycmF5KCksIFpTRl9WRVJTSU9OLCAnYWxsJyApOwogICAgd3BfZW5xdWV1ZV9zY3JpcHQoICd6cy1mZWF0dXJlcycsIFpTRl9VUkwgLiAnYXNzZXRzL2pzL3pzLWZlYXR1cmVzLmpzJywgYXJyYXkoICdqcXVlcnknICksIFpTRl9WRVJTSU9OLCB0cnVlICk7CiAgICB3cF9sb2NhbGl6ZV9zY3JpcHQoICd6cy1mZWF0dXJlcycsICdaU19BSkFYJywgYXJyYXkoCiAgICAgICAgJ2FqYXh1cmwnID0+IGFkbWluX3VybCggJ2FkbWluLWFqYXgucGhwJyApLAogICAgICAgICdub25jZScgICA9PiB3cF9jcmVhdGVfbm9uY2UoICd6c19mZWF0dXJlc19ub25jZScgKSwKICAgICkgKTsKCiAgICAvKiDikasg5YiR6L6p5bel5YW357uE6LWE5Lqn77ya5LuF5Zyo5a6e6ZmF5L2/55So5Yiw5bel5YW355+t5Luj56CB55qE6aG16Z2i5Yqg6L2977yM6YG/5YWN5YWo56uZ5aSa5L2Z6K+35rGCICovCiAgICBpZiAoIGZ1bmN0aW9uX2V4aXN0cyggJ3pzX3BhZ2VfbmVlZHNfdG9vbHNfYXNzZXRzJyApICYmIHpzX3BhZ2VfbmVlZHNfdG9vbHNfYXNzZXRzKCkgKSB7CiAgICAgICAgd3BfZW5xdWV1ZV9zdHlsZSggJ3pzLXRvb2xzJywgWlNGX1VSTCAuICdhc3NldHMvY3NzL3pzLXRvb2xzLmNzcycsIGFycmF5KCAnenMtZmVhdHVyZXMnICksIFpTRl9WRVJTSU9OLCAnYWxsJyApOwogICAgICAgIHdwX2VucXVldWVfc2NyaXB0KCAnenMtdG9vbHMnLCBaU0ZfVVJMIC4gJ2Fzc2V0cy9qcy96cy10b29scy5qcycsIGFycmF5KCAnanF1ZXJ5JywgJ3pzLWZlYXR1cmVzJyApLCBaU0ZfVkVSU0lPTiwgdHJ1ZSApOwogICAgfQp9LCAyMCApOwoKLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKiBGLVIzMi0wMe+8iFAw77yJ5YaF6IGUIENTUyDpooTlpITnkIbvvJp3cGF1dG9wIOWFjeeWqyArIOS9k+enr+WOi+e8qQogKgogKiDpl67popjvvJp6c190b29sc19pbmxpbmVfYXNzZXRzIOi/kOihjOS6jiB0aGVfY29udGVudCDkvJjlhYjnuqcgNe+8jOaKiuWOn+WniyBDU1MKICogICDvvIjlkKvnqbrooYzkuI4gLyog5rOo6YeKICpcL++8ieaLvOi/m+ato+aWh++8m3dwYXV0b3Ag5Zyo5LyY5YWI57qnIDEwIOS5i+WQjuWkhOeQhuWQjOS4gOautQogKiAgIOato+aWh++8jOaKiiBDU1Mg5Lit55qEKirnqbrooYwqKui9rOaIkCBgPC9wPjxwPmDvvIzms6jlhaXliLAgPHN0eWxlPiDlhoXpg6jjgIIKICogICDnur/kuIrlrp7mtYsgL2FwcGVhbC8g5Y2V5LiqIDxzdHlsZSBpZD0ienMtdG9vbHMtaW5saW5lIj4g5YaF5ZCrIDQ2OCDlpIQgPHA+LzwvcD7vvIwKICogICDmtY/op4jlmajmjIkgQ1NTIOivreazleino+aekOaXtiBgPC9wPmAg6KKr5b2T5L2c6Z2e5rOV6YCJ5oup5ZmoIOKGkgogKiAgICoq57Sn6ZqP5YW25ZCO55qE5pW05p2h6KeE5YiZ6KKr5Lii5byDKirvvIzlrp7mtYvlj5flvbHlk43op4TliJnnuqYgMTk5IOadoe+8jAogKiAgIOWFtuS4reWMheWQqyAuenMtY2FyZCAvIC56cy1idG4gLyAuenMtZm9ybSAvIC56cy1hbGVydCAvIC56cy1ncmlkIOetieaguOW/g+e7hOS7tuOAggogKgogKiDkv67lpI3vvJrlhoXogZTliY3lhYjlgZrjgIzkv53lrojljovnvKnjgI3igJTigJQKICogICAxLiDliaXnprsgLyogKlwvIOazqOmHiu+8iOmhuuW4pua2iOmZpCBIVE1MIOa6kOeggeS4reW9ouWmgiBbenNfeHh4XSDnmoTms6jph4rmlofmnKzlmarlo7DvvInvvJsKICogICAyLiDmiormiYDmnInov57nu63nqbrnmb3vvIjlkKvmjaLooYzvvInmipjlj6DkuLrljZXkuKrnqbrmoLwg4oaSIOS4jeWGjeWtmOWcqOepuuihjCDihpIgd3BhdXRvcCDml6Dku47kuIvmiYvvvJsKICogICAzLiDku4XlnKjliIbpmpTnrKYgeyB9IDsgOiAsIOmCu+Wfn+aUtue0p+epuuagvO+8iOS4jeWKqCA+ICsgfiAoICkg5LiO5ZCO6ZqP5YaS5Y+377yMCiAqICAgICAg6YG/5YWNIGNhbGMoKS/lkI7ku6PpgInmi6nlmagv5Lyq57G76K+t5LmJ6KKr5pS55YaZ77yJ44CCCiAqICAg5a2X56ym5Liy5a2X6Z2i6YeP77yIY29udGVudDoi4oCmIu+8ieWFqOeoi+WOn+agt+S/neeVmeOAggogKgogKiDnu5Pmnpzlr7nlkIzkuIDku70gQ1NTIOivreS5ieetieS7t++8jOS9k+enr+e6puWHjyAyNSXvvIzkuJTlvbvlupXlhY3nlqsgd3BhdXRvcCDnoLTlnY/jgIIKICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwppZiAoICEgZnVuY3Rpb25fZXhpc3RzKCAnenNfY3NzX2lubGluZV9wcmVwYXJlJyApICkgewogICAgZnVuY3Rpb24genNfY3NzX2lubGluZV9wcmVwYXJlKCAkY3NzICkgewogICAgICAgIGlmICggISBpc19zdHJpbmcoICRjc3MgKSB8fCAnJyA9PT0gJGNzcyApIHsKICAgICAgICAgICAgcmV0dXJuICcnOwogICAgICAgIH0KCiAgICAgICAgJGxlbiAgPSBzdHJsZW4oICRjc3MgKTsKICAgICAgICAkb3V0ICA9ICcnOwogICAgICAgICRpICAgID0gMDsKICAgICAgICAkcSAgICA9ICcnOyAgIC8vIOW9k+WJjeWtl+espuS4suWumueVjOespu+8iCcnIOihqOekuuS4jeWcqOWtl+espuS4suWGhe+8iQogICAgICAgICR0aWdodF9wcmV2ID0gYXJyYXkoICd7JyA9PiAxLCAnfScgPT4gMSwgJzsnID0+IDEsICc6JyA9PiAxLCAnLCcgPT4gMSApOwogICAgICAgICR0aWdodF9uZXh0ID0gYXJyYXkoICd7JyA9PiAxLCAnfScgPT4gMSwgJzsnID0+IDEsICcsJyA9PiAxICk7CgogICAgICAgIHdoaWxlICggJGkgPCAkbGVuICkgewogICAgICAgICAgICAkY2ggPSAkY3NzWyAkaSBdOwoKICAgICAgICAgICAgLyog5a2X56ym5Liy5YaF6YOo77ya5Y6f5qC36YCP5Lyg77yM5ZCr6L2s5LmJ5bqP5YiXICovCiAgICAgICAgICAgIGlmICggJycgIT09ICRxICkgewogICAgICAgICAgICAgICAgaWYgKCAnXFwnID09PSAkY2ggJiYgJGkgKyAxIDwgJGxlbiApIHsKICAgICAgICAgICAgICAgICAgICAkb3V0IC49ICRjaCAuICRjc3NbICRpICsgMSBdOwogICAgICAgICAgICAgICAgICAgICRpICAgKz0gMjsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRvdXQgLj0gJGNoOwogICAgICAgICAgICAgICAgaWYgKCAkY2ggPT09ICRxICkgewogICAgICAgICAgICAgICAgICAgICRxID0gJyc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkaSsrOwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJyInID09PSAkY2ggfHwgIiciID09PSAkY2ggKSB7CiAgICAgICAgICAgICAgICAkcSAgICA9ICRjaDsKICAgICAgICAgICAgICAgICRvdXQgLj0gJGNoOwogICAgICAgICAgICAgICAgJGkrKzsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvKiDms6jph4rvvJrmlbTmrrXkuKLlvIMgKi8KICAgICAgICAgICAgaWYgKCAnLycgPT09ICRjaCAmJiAkaSArIDEgPCAkbGVuICYmICcqJyA9PT0gJGNzc1sgJGkgKyAxIF0gKSB7CiAgICAgICAgICAgICAgICAkZW5kID0gc3RycG9zKCAkY3NzLCAnKi8nLCAkaSArIDIgKTsKICAgICAgICAgICAgICAgICRpICAgPSAoIGZhbHNlID09PSAkZW5kICkgPyAkbGVuIDogJGVuZCArIDI7CiAgICAgICAgICAgICAgICAvKiDnlKjkuIDkuKrnqbrmoLzljaDkvY3vvIzpgb/lhY3ms6jph4rkuKTkvqfnmoTorrDlj7fmhI/lpJbnspjov54gKi8KICAgICAgICAgICAgICAgIGlmICggJycgIT09ICRvdXQgJiYgJyAnICE9PSBzdWJzdHIoICRvdXQsIC0xICkgKSB7CiAgICAgICAgICAgICAgICAgICAgJG91dCAuPSAnICc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLyog56m655m95oqY5Y+gICovCiAgICAgICAgICAgIGlmICggJyAnID09PSAkY2ggfHwgIlx0IiA9PT0gJGNoIHx8ICJcbiIgPT09ICRjaCB8fCAiXHIiID09PSAkY2ggfHwgIlxmIiA9PT0gJGNoICkgewogICAgICAgICAgICAgICAgd2hpbGUgKCAkaSA8ICRsZW4gKSB7CiAgICAgICAgICAgICAgICAgICAgJHcgPSAkY3NzWyAkaSBdOwogICAgICAgICAgICAgICAgICAgIGlmICggJyAnICE9PSAkdyAmJiAiXHQiICE9PSAkdyAmJiAiXG4iICE9PSAkdyAmJiAiXHIiICE9PSAkdyAmJiAiXGYiICE9PSAkdyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRpKys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkcHJldiA9ICggJycgPT09ICRvdXQgKSA/ICcnIDogc3Vic3RyKCAkb3V0LCAtMSApOwogICAgICAgICAgICAgICAgJG5leHQgPSAoICRpIDwgJGxlbiApID8gJGNzc1sgJGkgXSA6ICcnOwogICAgICAgICAgICAgICAgaWYgKCAnJyA9PT0gJHByZXYgfHwgJycgPT09ICRuZXh0ICkgewogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyDpppblsL7nqbrnmb3nm7TmjqXkuKLlvIMKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICggaXNzZXQoICR0aWdodF9wcmV2WyAkcHJldiBdICkgfHwgaXNzZXQoICR0aWdodF9uZXh0WyAkbmV4dCBdICkgKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7IC8vIOWIhumalOespumCu+Wfn++8muepuuagvOaXoOivreS5ie+8jOaUtue0pwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJG91dCAuPSAnICc7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJG91dCAuPSAkY2g7CiAgICAgICAgICAgICRpKys7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJpbSggJG91dCApOwogICAgfQp9CgovKioKICog6K+75Y+W5bm25Y6L57yp6LWE5LqnIENTU++8iOW4piB0cmFuc2llbnQg57yT5a2Y77yM6ZSu5ZCrIG10aW1lK3NpemXvvIzmlofku7bkuIDmlLnljbPlpLHmlYjvvInjgIIKICoKICogQHBhcmFtIHN0cmluZyAkcmVsIOebuOWvueaPkuS7tuagueebruW9leeahOi3r+W+hOOAggogKiBAcmV0dXJuIHN0cmluZyDljovnvKnlkI7nmoQgQ1NT77yb5paH5Lu25LiN5a2Y5Zyo6L+U5Zue56m65Liy44CCCiAqLwppZiAoICEgZnVuY3Rpb25fZXhpc3RzKCAnenNfY3NzX2lubGluZV9nZXQnICkgKSB7CiAgICBmdW5jdGlvbiB6c19jc3NfaW5saW5lX2dldCggJHJlbCApIHsKICAgICAgICBzdGF0aWMgJG1lbSA9IGFycmF5KCk7CiAgICAgICAgaWYgKCBpc3NldCggJG1lbVsgJHJlbCBdICkgKSB7CiAgICAgICAgICAgIHJldHVybiAkbWVtWyAkcmVsIF07CiAgICAgICAgfQoKICAgICAgICAkcGF0aCA9IFpTRl9QQVRIIC4gJHJlbDsKICAgICAgICBpZiAoICEgZmlsZV9leGlzdHMoICRwYXRoICkgKSB7CiAgICAgICAgICAgICRtZW1bICRyZWwgXSA9ICcnOwogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQoKICAgICAgICAka2V5ID0gJ3pzX2NzbWluXycgLiBtZDUoICRyZWwgLiAnfCcgLiAoaW50KSBmaWxlbXRpbWUoICRwYXRoICkgLiAnfCcgLiAoaW50KSBmaWxlc2l6ZSggJHBhdGggKSAuICd8JyAuIFpTRl9WRVJTSU9OICk7CiAgICAgICAgJGhpdCA9IGdldF90cmFuc2llbnQoICRrZXkgKTsKICAgICAgICBpZiAoIGlzX3N0cmluZyggJGhpdCApICYmICcnICE9PSAkaGl0ICkgewogICAgICAgICAgICAkbWVtWyAkcmVsIF0gPSAkaGl0OwogICAgICAgICAgICByZXR1cm4gJGhpdDsKICAgICAgICB9CgogICAgICAgICRtaW4gPSB6c19jc3NfaW5saW5lX3ByZXBhcmUoIChzdHJpbmcpIGZpbGVfZ2V0X2NvbnRlbnRzKCAkcGF0aCApICk7CiAgICAgICAgaWYgKCAnJyAhPT0gJG1pbiApIHsKICAgICAgICAgICAgc2V0X3RyYW5zaWVudCggJGtleSwgJG1pbiwgV0VFS19JTl9TRUNPTkRTICk7CiAgICAgICAgfQogICAgICAgICRtZW1bICRyZWwgXSA9ICRtaW47CiAgICAgICAgcmV0dXJuICRtaW47CiAgICB9Cn0KCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICog5YWc5bqV5rOo5YWl77ya5YaF6IGU5bel5YW3IENTUyArIOWuouaIt+err+WKoOi9vSBKU++8iGpRdWVyeSDnvLrlpLHml7bku44gQ0ROIOihpei9ve+8iQogKiDor6XmlrnmoYjkuI3kvp3otZbkuLvpopjmmK/lkKbosIPnlKggd3BfaGVhZC93cF9mb290ZXLvvIzkuZ/kuI3kvp3otZbmoYbmnrbmmK/lkKbmiZPljbAgZW5xdWV1Ze+8jAogKiDlm6DmraTog73nqLPlrprkv67lpI3jgIzlt6Xlhbfml6DmoLflvI8gLyDml6DkuqTkupLjgI3nmoTpl67popjjgIIKICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwphZGRfZmlsdGVyKCAndGhlX2NvbnRlbnQnLCAnenNfdG9vbHNfaW5saW5lX2Fzc2V0cycsIDUgKTsKaWYgKCAhIGZ1bmN0aW9uX2V4aXN0cyggJ3pzX3Rvb2xzX2lubGluZV9hc3NldHMnICkgKSB7CiAgICBmdW5jdGlvbiB6c190b29sc19pbmxpbmVfYXNzZXRzKCAkY29udGVudCApIHsKICAgICAgICBzdGF0aWMgJGRvbmUgPSBmYWxzZTsKICAgICAgICBpZiAoICRkb25lIHx8IGlzX2FkbWluKCkgKSB7CiAgICAgICAgICAgIHJldHVybiAkY29udGVudDsKICAgICAgICB9CgogICAgICAgIC8qIOS6pOS6kuWei+W3peWFt++8mumcgOimgSB6cy10b29scy5jc3MgKyDmj5Lku7YgSlPvvIjlkKsgalF1ZXJ5IOWFnOW6leihpei9ve+8iSAqLwogICAgICAgICR0b29sc19jb2RlcyA9IGFycmF5KAogICAgICAgICAgICAnenNfc2VudGVuY2VfY2FsYycsICd6c19iYWlsX2Fzc2VzcycsICd6c19jcmltaW5hbF90aW1lbGluZScsCiAgICAgICAgICAgICd6c19jcmltZV9wZW5hbHR5JywgJ3pzX3Rvb2xzX2h1YicsCiAgICAgICAgICAgICd6c19mZWVfY2FsY3VsYXRvcicsICd6c19saXRpZ2F0aW9uX2NhbGN1bGF0b3InLCAnenNfZG9jX2xpYicsICd6c19sYXdfc2VhcmNoJywKICAgICAgICApOwogICAgICAgICRuZWVkX3Rvb2xzID0gZmFsc2U7CiAgICAgICAgZm9yZWFjaCAoICR0b29sc19jb2RlcyBhcyAkYyApIHsKICAgICAgICAgICAgaWYgKCBoYXNfc2hvcnRjb2RlKCAkY29udGVudCwgJGMgKSApIHsKICAgICAgICAgICAgICAgICRuZWVkX3Rvb2xzID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvKiDln7rnoYDmoLflvI/pl6jmjqfvvIjoh6rliqjvvIxSMzAg6YeN5p6E77yJ77yaCiAgICAgICAgICAg5Y6f5pa55qGI5omL5bel57u05oqkICRiYXNlX2NvZGVzIOa4heWNle+8jOmaj+aooeWdl+WinuWKoOmcgOWQjOatpe+8jOW3sue0r+iuoSAxNiDkuKogbGVnYWN5CiAgICAgICAgICAg55+t5Luj56CB5ryP5YiXIOKGkiDplb/mnJ/lkYrorabjgILmlLnkuLrov5DooYzml7bku44gV1Ag5bey5rOo5YaM55+t5Luj56CB5qCH562+5Lit6K+G5Yir5YWo6YOoIHpzXwogICAgICAgICAgIOefreS7o+egge+8jOWunueOsOOAjOaWsOWinuefreS7o+eggeiHquWKqOiOt+W+l+agt+W8j+WFnOW6leOAgeaOpee6v+aXoOmcgOWQjOatpea4heWNleOAjeOAggogICAgICAgICAgIOS6pOS6kuWei+W3peWFt++8iOmcgCB6cy10b29scy5jc3MgKyBKU++8ieS7jeeUseS4iuaWuSAkdG9vbHNfY29kZXMg5Yik5a6a77yM5L+d5oyB5LiN5Y+Y44CCICovCgogICAgICAgIC8qIOOJnyDml6LmnInpobXlip/og73loavlhYXlsYLpooTliKTvvJoKICAgICAgICAgICDloavlhYXlsYLlnKggdGhlX2NvbnRlbnQ6MjAg5omN6L+95Yqg5Yqf6IO95Yy677yM5pys5Ye95pWw6L+Q6KGM5LqO5LyY5YWI57qnIDXvvIwKICAgICAgICAgICDmraTliLvmraPmlofph4zlubbmsqHmnInlroPlsIbopoHov73liqDnmoTnn63ku6PnoIHjgILoi6XkuI3pooTliKTvvIwKICAgICAgICAgICDooqvloavlhYXnmoTpobXpnaLkvJrlh7rnjrDjgIzmnInnu5PmnoTjgIHml6DmoLflvI/jgIHml6DkuqTkupLjgI3jgIIKICAgICAgICAgICDmlYXmiorjgIzljbPlsIbov73liqDnmoTnn63ku6PnoIHkuLLjgI3lubblhaXmjqLmtYvnm67moIfkuIDotbfliKTmlq3jgIIgKi8KICAgICAgICAkcHJvYmUgPSAoc3RyaW5nKSAkY29udGVudDsKICAgICAgICBpZiAoIGZ1bmN0aW9uX2V4aXN0cyggJ3pzX3NoZWxsX2ZpbGxfY29kZXNfZm9yX2N1cnJlbnQnICkgKSB7CiAgICAgICAgICAgICRwZW5kaW5nID0genNfc2hlbGxfZmlsbF9jb2Rlc19mb3JfY3VycmVudCgpOwogICAgICAgICAgICBpZiAoICcnICE9PSAkcGVuZGluZyApIHsKICAgICAgICAgICAgICAgICRwcm9iZSAuPSAkcGVuZGluZzsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCAkdG9vbHNfY29kZXMgYXMgJGMgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCBoYXNfc2hvcnRjb2RlKCAkcGVuZGluZywgJGMgKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG5lZWRfdG9vbHMgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8qIOiHquWKqOivhuWIq++8muS7u+S4gOW3suazqOWGjCB6c18g55+t5Luj56CB77yI5ZCr5Y+C5pWw5Z6L77yJ5Ye6546w5Y2z5rOo5YWl5Z+656GA5qC35byP44CCCiAgICAgICAgICAgJHNob3J0Y29kZV90YWdzIOWcqCB0aGVfY29udGVudCDpmLbmrrXlt7Llrozlhajms6jlhozvvIzlj6/lronlhajpgY3ljobjgIIgKi8KICAgICAgICAkbmVlZF9iYXNlID0gJG5lZWRfdG9vbHM7CiAgICAgICAgaWYgKCAhICRuZWVkX2Jhc2UgKSB7CiAgICAgICAgICAgIGdsb2JhbCAkc2hvcnRjb2RlX3RhZ3M7CiAgICAgICAgICAgIGlmICggISBlbXB0eSggJHNob3J0Y29kZV90YWdzICkgJiYgaXNfYXJyYXkoICRzaG9ydGNvZGVfdGFncyApICkgewogICAgICAgICAgICAgICAgZm9yZWFjaCAoIGFycmF5X2tleXMoICRzaG9ydGNvZGVfdGFncyApIGFzICR0YWcgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCBzdHJwb3MoIChzdHJpbmcpICR0YWcsICd6c18nICkgPT09IDAgJiYgaGFzX3Nob3J0Y29kZSggJHByb2JlLCAkdGFnICkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRuZWVkX2Jhc2UgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCAhICRuZWVkX2Jhc2UgJiYgcHJlZ19tYXRjaCggJy9cW3pzX1thLXpfXStcXS8nLCAkcHJvYmUgKSApIHsKICAgICAgICAgICAgICAgICRuZWVkX2Jhc2UgPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoICEgJG5lZWRfYmFzZSApIHsKICAgICAgICAgICAgcmV0dXJuICRjb250ZW50OwogICAgICAgIH0KICAgICAgICAkZG9uZSA9IHRydWU7CgogICAgICAgIC8qIOWGheiBlCBDU1PvvIjopobnm5bmoYbmnrbmnKrovpPlh7rmj5Lku7bmoLflvI/nmoTmg4XlhrXvvIkgKi8KICAgICAgICAkY3NzX2ZpbGVzID0gYXJyYXkoICdhc3NldHMvY3NzL3pzLWZlYXR1cmVzLmNzcycgKTsKICAgICAgICBpZiAoICRuZWVkX3Rvb2xzICkgewogICAgICAgICAgICAkY3NzX2ZpbGVzW10gPSAnYXNzZXRzL2Nzcy96cy10b29scy5jc3MnOwogICAgICAgIH0KICAgICAgICAvKiBGLVIzMi0wMe+8muaUueeUqOWOi+e8qeWQjueahCBDU1PvvIjml6Dms6jph4rjgIHml6DnqbrooYzvvInihpIgd3BhdXRvcCDml6DnqbrooYzlj6/ovazvvIwKICAgICAgICAgICDkuI3lho3lkJEgPHN0eWxlPiDlhoXms6jlhaUgPHA+LzwvcD7vvJvotYTkuqfnrb7lkI3mlLnnlKjkuI3lkKsgLyogKlwvIOeahOWxnuaAp+agh+iusO+8jAogICAgICAgICAgIOS+myBhc3NldC1maXgg5Yik6YeN77yI5Y6f44CMLyogenMtYXNzZXQ6IOaWh+S7tuWQjSAqXC/jgI3ms6jph4rlt7Lpmo/ljovnvKnliaXnprvvvInjgIIgKi8KICAgICAgICAkY3NzICA9ICcnOwogICAgICAgICRzaWcgID0gYXJyYXkoKTsKICAgICAgICBmb3JlYWNoICggJGNzc19maWxlcyBhcyAkcmVsICkgewogICAgICAgICAgICAkYyA9IHpzX2Nzc19pbmxpbmVfZ2V0KCAkcmVsICk7CiAgICAgICAgICAgIGlmICggJycgIT09ICRjICkgewogICAgICAgICAgICAgICAgJGNzcyAgLj0gJGMgLiAiXG4iOwogICAgICAgICAgICAgICAgJHNpZ1tdID0gYmFzZW5hbWUoICRyZWwgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkc3R5bGUgPSAkY3NzCiAgICAgICAgICAgID8gIlxuPHN0eWxlIGlkPVwienMtdG9vbHMtaW5saW5lXCIgZGF0YS16cy1hc3NldHM9XCIiIC4gZXNjX2F0dHIoIGltcGxvZGUoICcsJywgJHNpZyApICkgLiAiXCI+IiAuICRjc3MgLiAiPC9zdHlsZT5cbiIKICAgICAgICAgICAgOiAnJzsKCiAgICAgICAgLyog5LuF5Lqk5LqS5Z6L5bel5YW35omN5Yqg6L29IEpT77ya57y6IGpRdWVyeSDliJnku44gQ0ROIOihpei9ve+8jOWGjeaMieW6j+WKoOi9veaPkuS7tuiEmuacrOOAggogICAgICAgICAgIOeUqCBjcmVhdGVFbGVtZW50IOazqOWFpe+8jOmBv+WFjeiiq+ahhuaetui+k+WHuue8k+WGsuW9k+S9nOaPkuS7tiA8c2NyaXB0IHNyYz4g5Yml56a744CCICovCiAgICAgICAgJGpzID0gJyc7CiAgICAgICAgaWYgKCAkbmVlZF90b29scyApIHsKICAgICAgICAgICAgJGFqYXh1cmwgPSBhZG1pbl91cmwoICdhZG1pbi1hamF4LnBocCcgKTsKICAgICAgICAgICAgJG5vbmNlICAgPSB3cF9jcmVhdGVfbm9uY2UoICd6c19mZWF0dXJlc19ub25jZScgKTsKICAgICAgICAgICAgJGZfanMgICAgPSBaU0ZfVVJMIC4gJ2Fzc2V0cy9qcy96cy1mZWF0dXJlcy5qcyc7CiAgICAgICAgICAgICR0X2pzICAgID0gWlNGX1VSTCAuICdhc3NldHMvanMvenMtdG9vbHMuanMnOwogICAgICAgICAgICAkanEgICAgICA9ICdodHRwczovL2NvZGUuanF1ZXJ5LmNvbS9qcXVlcnktMy43LjEubWluLmpzJzsKCiAgICAgICAgICAgICRqcyA9ICJcbjxzY3JpcHQgaWQ9XCJ6cy10b29scy1sb2FkZXJcIj4iCiAgICAgICAgICAgICAgICAuICJ3aW5kb3cuWlNfQUpBWD17YWpheHVybDoiIC4ganNvbl9lbmNvZGUoICRhamF4dXJsICkgLiAiLG5vbmNlOiIgLiBqc29uX2VuY29kZSggJG5vbmNlICkgLiAifTsiCiAgICAgICAgICAgICAgICAuICIoZnVuY3Rpb24oKXtmdW5jdGlvbiBMKHMsY2Ipe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO2Uuc3JjPXM7ZS5hc3luYz1mYWxzZTtlLm9ubG9hZD1jYjtlLm9uZXJyb3I9Y2I7ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChlKTt9IgogICAgICAgICAgICAgICAgLiAiZnVuY3Rpb24gdG9vbCgpe0woIiAuIGpzb25fZW5jb2RlKCAkZl9qcyApIC4gIixmdW5jdGlvbigpe0woIiAuIGpzb25fZW5jb2RlKCAkdF9qcyApIC4gIik7fSk7fSIKICAgICAgICAgICAgICAgIC4gImlmKHdpbmRvdy5qUXVlcnkpe3Rvb2woKTt9ZWxzZXtMKCIgLiBqc29uX2VuY29kZSggJGpxICkgLiAiLHRvb2wpO30iCiAgICAgICAgICAgICAgICAuICJ9KSgpOzwvc2NyaXB0PlxuIjsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkc3R5bGUgLiAkY29udGVudCAuICRqczsKICAgIH0KfQoKLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKiDmv4DmtLvml7bliLfmlrDph43lhpnop4TliJnvvIhDUFQg6ZyA6KaB77yJCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KcmVnaXN0ZXJfYWN0aXZhdGlvbl9ob29rKCBfX0ZJTEVfXywgZnVuY3Rpb24gKCkgewogICAgZG9fYWN0aW9uKCAnenNfcmVnaXN0ZXJfY3B0cycgKTsKICAgIGZsdXNoX3Jld3JpdGVfcnVsZXMoKTsKfSApOwpyZWdpc3Rlcl9kZWFjdGl2YXRpb25faG9vayggX19GSUxFX18sIGZ1bmN0aW9uICgpIHsKICAgIGZsdXNoX3Jld3JpdGVfcnVsZXMoKTsKfSApOwoKLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKiDopobnm5blvI/mm7TmlrDkuI3kvJrop6blj5Hmv4DmtLvpkqnlrZDvvIzmlYXku6XniYjmnKzlj7flgZrkuIDmrKHmgKfph43lhpnop4TliJnliLfmlrDvvIjkv67lpI0gQ1BUIOWNlemhtSA0MDTvvIkKICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwphZGRfYWN0aW9uKCAnaW5pdCcsIGZ1bmN0aW9uICgpIHsKICAgICR2ID0gWlNGX1ZFUlNJT047CiAgICBpZiAoIGdldF9vcHRpb24oICd6c19mZWF0dXJlc19yZXdyaXRlX3YnICkgIT09ICR2ICkgewogICAgICAgIGZsdXNoX3Jld3JpdGVfcnVsZXMoKTsKICAgICAgICB1cGRhdGVfb3B0aW9uKCAnenNfZmVhdHVyZXNfcmV3cml0ZV92JywgJHYgKTsKICAgIH0KfSwgMjAgKTsKCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICogU0VPIOS8mOWMlu+8muS7jiBtZXRhIC8gT0cgLyBUd2l0dGVyIOaPj+i/sOS4reWJlOmZpOacrOaPkuS7tuefreS7o+eggeagh+iusO+8iOmBv+WFjeijuOa6kOeggeazhOa8j++8iQogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCmlmICggISBmdW5jdGlvbl9leGlzdHMoICd6c19zdHJpcF9zaG9ydGNvZGVfZGVzYycgKSApIHsKICAgIGZ1bmN0aW9uIHpzX3N0cmlwX3Nob3J0Y29kZV9kZXNjKCAkZGVzYyApIHsKICAgICAgICAkY2xlYW4gPSB0cmltKCBwcmVnX3JlcGxhY2UoICcvXFt6c19bXlxdXSpcXT8vJywgJycsIChzdHJpbmcpICRkZXNjICkgKTsKICAgICAgICAvLyDliZTpmaTlkI7kuLrnqbrvvIjpobXpnaLmraPmlofku4XmnInnn63ku6PnoIHvvInml7bvvIzlm57pgIDkuLrnq5nngrnmoIfpopjvvIzpgb/lhY0gT0cvVHdpdHRlciDmmL7npLrnqbrmiJbmupDnoIEKICAgICAgICBpZiAoICcnID09PSAkY2xlYW4gKSB7CiAgICAgICAgICAgICRjbGVhbiA9IGdldF9ibG9naW5mbyggJ25hbWUnICkgLiAnIMK3IOWIkeS6i+i+qeaKpOS4juazleW+i+WSqOivouW5s+WPsCc7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkY2xlYW47CiAgICB9Cn0KYWRkX2ZpbHRlciggJ3dwc2VvX21ldGFkZXNjJywgJ3pzX3N0cmlwX3Nob3J0Y29kZV9kZXNjJywgMjAgKTsKYWRkX2ZpbHRlciggJ3dwc2VvX29wZW5ncmFwaF9kZXNjJywgJ3pzX3N0cmlwX3Nob3J0Y29kZV9kZXNjJywgMjAgKTsKYWRkX2ZpbHRlciggJ3dwc2VvX3R3aXR0ZXJfZGVzY3JpcHRpb24nLCAnenNfc3RyaXBfc2hvcnRjb2RlX2Rlc2MnLCAyMCApOwphZGRfZmlsdGVyKCAndGhlX2V4Y2VycHQnLCBmdW5jdGlvbiAoICRleGNlcnB0ICkgewogICAgcmV0dXJuIHRyaW0oIHByZWdfcmVwbGFjZSggJy9cW3pzX1thLXpfXStcXS8nLCAnJywgKHN0cmluZykgJGV4Y2VycHQgKSApOwp9LCAyMCApOwoKLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKiDlhZzlupXmuIXnkIbvvJrkuLvpopggLyBZb2FzdCAvIOWFtuS7liBTRU8g5o+S5Lu25Z2H5Y+v6IO96L6T5Ye65ZCr6KO455+t5Luj56CB55qECiAqIGRlc2NyaXB0aW9uIC8gb2c6ZGVzY3JpcHRpb24gLyB0d2l0dGVyOmRlc2NyaXB0aW9u44CC55So6L6T5Ye657yT5Yay57uf5LiA5riF5rSX77yMCiAqIOehruS/neS7u+S9leadpea6kOmDveS4jeS8muaKiiBbenNfeHh4XSDms4TmvI/liLDliY3nq68gbWV0YeOAggogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCmFkZF9hY3Rpb24oICd0ZW1wbGF0ZV9yZWRpcmVjdCcsIGZ1bmN0aW9uICgpIHsKICAgIGlmICggaXNfYWRtaW4oKSApIHsgcmV0dXJuOyB9CiAgICBvYl9zdGFydCggJ3pzX2NsZWFuX21ldGFfb2InICk7Cn0sIDk5OTkgKTsKCmlmICggISBmdW5jdGlvbl9leGlzdHMoICd6c19jbGVhbl9tZXRhX29iJyApICkgewogICAgZnVuY3Rpb24genNfY2xlYW5fbWV0YV9vYiggJGh0bWwgKSB7CiAgICAgICAgaWYgKCAhIGlzX3N0cmluZyggJGh0bWwgKSB8fCAnJyA9PT0gJGh0bWwgKSB7IHJldHVybiAkaHRtbDsgfQogICAgICAgICRmYiA9IGdldF9ibG9naW5mbyggJ25hbWUnICkgLiAnIMK3IOWIkeS6i+i+qeaKpOS4juazleW+i+WSqOivouW5s+WPsCc7CiAgICAgICAgJGh0bWwgPSBwcmVnX3JlcGxhY2VfY2FsbGJhY2soICcvPG1ldGFcYltePl0qPi9pJywgZnVuY3Rpb24gKCAkbSApIHVzZSAoICRmYiApIHsKICAgICAgICAgICAgJHRhZyA9ICRtWzBdOwogICAgICAgICAgICBpZiAoICEgcHJlZ19tYXRjaCggJy8oPzpuYW1lfHByb3BlcnR5KVxzKj1ccypbIlwnXSg/OmRlc2NyaXB0aW9ufG9nOmRlc2NyaXB0aW9ufHR3aXR0ZXI6ZGVzY3JpcHRpb24pWyJcJ10vaScsICR0YWcgKSApIHsKICAgICAgICAgICAgICAgIHJldHVybiAkdGFnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggISBwcmVnX21hdGNoKCAnL2NvbnRlbnRccyo9XHMqWyJcJ10oW14iXCddKilbIlwnXS9pJywgJHRhZywgJGMgKSApIHsKICAgICAgICAgICAgICAgIHJldHVybiAkdGFnOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRjbGVhbiA9IHRyaW0oIHByZWdfcmVwbGFjZSggJy9cW3pzX1teXF1dKlxdPy8nLCAnJywgJGNbMV0gKSApOwogICAgICAgICAgICBpZiAoICcnID09PSAkY2xlYW4gKSB7ICRjbGVhbiA9ICRmYjsgfQogICAgICAgICAgICByZXR1cm4gcHJlZ19yZXBsYWNlKCAnL2NvbnRlbnRccyo9XHMqWyJcJ10oW14iXCddKilbIlwnXS9pJywgJ2NvbnRlbnQ9IicgLiBlc2NfYXR0ciggJGNsZWFuICkgLiAnIicsICR0YWcsIDEgKTsKICAgICAgICB9LCAkaHRtbCApOwoKICAgICAgICAvKiDnu5/kuIDnmoTmlbTpobUgSFRNTCDov4fmu6TlhaXlj6PvvJrika4gYXNzZXQtZml4IOetieaooeWdl+aMguWcqOi/memHjO+8jAogICAgICAgICAgIOWkjeeUqOWQjOS4gOWxgui+k+WHuue8k+WGsu+8jOmBv+WFjeW1jOWllyBvYl9zdGFydOOAgiAqLwogICAgICAgIHJldHVybiBhcHBseV9maWx0ZXJzKCAnenNfb2JfaHRtbCcsICRodG1sICk7CiAgICB9Cn0K require_once __DIR__ . '/includes/seo-meta-extras.php'; // R53 SEO+GEO meta 补全 在商言法(北京)文化有限公司官网 | 法律知识与服务平台
10万+问答 5万+专业文章 50+实用工具 100+合作律师
📞 18511835733 18511835733@163.com
首页 > 在商言法(北京)文化有限公司官网
在商言法 · 法律知识与咨询平台

找答案、找律师、查法规,一站式法律服务入口

围绕问答、文章、工具、案例与律师咨询,构建可搜索、可转化、可运营的法律门户。

最新问答

更多

专业文章

更多

法律法规

更多
💬📞
在商言法(北京)文化有限公司负责本平台运营与技术服务;具体法律服务由用户实际委托的律师或机构提供。 了解平台