Apache mod_proxy SSRF(CVE-2021-40438)的一点分析和延伸【破产求金币】

longhack520   ·   发表于 2021-10-19 11:34:51   ·   代码审计
PHA+5ZGo5LqU5pma5LiK5byA5aeL5a2m5LmgQXBhY2hlIEhUVFAgU2VydmVy77yI5ZCO5paH566A56ew5Li6QXBhY2hl77yJbW9kX3Byb3h555qEU1NSRua8j+a0nu+8iENWRS0yMDIxLTQwNDM477yJ77yM5bm25Zyo5pif55CD566A5Y2V5LuL57uN5LqG5LiA5LiL57yW6K+R44CB6LCD6K+VQXBhY2hl5pyN5Yqh5Zmo55qE5pa55rOV77yM5LuK5aSp57un57ut5rex5YWl5YiG5p6Q5LiA5LiL6L+Z5Liq5ryP5rSe55qE5oiQ5Zug77yM5Lul5Y+K5LiA5Lqb5bu25Ly455qE6Zeu6aKY56CU56m244CCPC9wPgo8cD7miJHlvojkuYXkuI3lj5HmvI/mtJ7liIbmnpDkuobvvIzlm6DkuLrkuI3mmK/oh6rlt7HmjJbnmoTmvI/mtJ7vvIzmiJHoh6rlt7HnmoTmgJ3ogIPlhbblrp7mmK/kuI3lpJ/nmoTvvIzlho3liqDkuIrlvojlpJrlh7rmvI/mtJ7nmoTova/ku7bmiJHpg73msqHnlKjov4fvvIzkuZ/mm7TosIjkuI3kuIrmt7HlhaXnmoTnkIbop6PvvIzlvojlrrnmmJPokL3kv5flpZflj5jmiJDmtYHmsLTotKbvvJvlj6blpJbov5nkupvlubTnvZHlj4vku6zkuZ/lvojnp6/mnoHvvIzkuI3nvLrmiJHnmoTkuIDnr4fmvI/mtJ7liIbmnpDmlofnq6DvvIzmiYDku6XmiJHlsLHlhpnnmoTlsJHkuobjgILkuI3ov4fmnIDov5FBcGFjaGUgSFRUUCBTZXJ2ZXLlh7rnmoTlh6DkuKrmvI/mtJ7vvIzov5jmmK/lgLzlvpfliIbmnpDkuIDkuIvjgII8L3A+CjxwPuWPpuWklu+8jOmYheivu+acrOaWh+WJje+8jOW7uuiuruaMieeFp+aIkeWcqOi/meS4pOevh+W4luWtkOmHjOWPkeeahOaWueW8jzxhIGhyZWY9Imh0dHBzOi8vdC56c3hxLmNvbS9SdmZtRXUz44CBaHR0cHM6Ly90LnpzeHEuY29tLzdxTmZlaWXkuIvovb3lpb1hcHLjgIFhcHItdXRpbOOAgWFwYWNoZeeahOa6kOeggeW5tue8luivke+8jOS+v+S6juWQjue7reiwg+ivleS7peeQhuino+aWh+eroOOAgiI+aHR0cHM6Ly90LnpzeHEuY29tL1J2Zm1FdTPjgIFodHRwczovL3QuenN4cS5jb20vN3FOZmVpZeS4i+i9veWlvWFwcuOAgWFwci11dGls44CBYXBhY2hl55qE5rqQ56CB5bm257yW6K+R77yM5L6/5LqO5ZCO57ut6LCD6K+V5Lul55CG6Kej5paH56ug44CCPC9hPjwvcD4KPHA+MHgwMSBBcGFjaGUgTW9kdWxl57u86L+wPGJyPuWmguaenOaIkeS7rOimgemDqOe9suS4gOS4qlBIUOi/kOihjOeOr+Wig++8jOS4lOWwhkFwYWNoZeS9nOS4uldlYuW6lOeUqOacjeWKoeWZqO+8jOmCo+S5iOW4uOeUqOeahOacieS4ieenjeaWueazle+8mjwvcD4KPHA+QXBhY2hl5LulQ0dJ55qE5b2i5byP6L+Q6KGMUEhQ6ISa5pysPGJyPlBIUOS7pW1vZF9waHDnmoTmlrnlvI/kvZzkuLpBcGFjaGXnmoTkuIDkuKrmqKHlnZfov5DooYw8YnI+UEhQ5LulRlBN55qE5pa55byP6L+Q6KGM5Li654us56uL5pyN5Yqh77yMQXBhY2hl5L2/55SobW9kX3Byb3h5X2ZjZ2nmqKHlnZfkvZzkuLrlj43ku6PmnI3liqHlmajlsIbor7fmsYLku6PnkIbnu5lQSFAtRlBNPGJyPuesrOS4gOenjeaWueW8j+avlOi+g+WPpOiAge+8jOaAp+iDvei+g+W3ru+8jOWfuuacrOW3sue7j+a3mOaxsO+8m+esrOS6jOenjeaWueW8j+WcqEFwYWNoZeeOr+Wig+S4i+S9v+eUqOi+g+W5v++8jOmFjee9ruacgOS4uueugOWNle+8m+esrOS4ieenjeaWueazleS5n+aciei+g+Wkp+eUqOaIt+S9k+mHj++8jOS4jei/h0FwYWNoZeS7heS9nOS4uuS4gOS4quS4remXtOeahOWPjeS7o+acjeWKoeWZqO+8jOabtOWkmuaWsOeahOeUqOaIt+S8mumAieaLqeS9v+eUqOaAp+iDveabtOWlveeahE5naW545pu/5Luj44CCPC9wPgo8cD7ov5nlhbbkuK3vvIznrKzkuInnp43mlrnms5Xkvb/nlKjnmoRtb2RfcHJveHlfZmNnaeWwseaYr+acrOaWh+S4u+inkm1vZF9wcm94eeaooeWdl+eahOS4gOS4quWtkOaooeWdl+OAgm1vZF9wcm94eeaYr0FwYWNoZeacjeWKoeWZqOS4reeUqOS6juWPjeS7o+WQjuerr+acjeWKoeeahOS4gOS4quaooeWdl++8jOiAjOWug+aLpeacieaVsOS4quS4jeWQjOWKn+iDveeahOWtkOaooeWdl++8jOWIhuWIq+eUqOS6juaUr+aMgeS4jeWQjOmAmuS/oeWNj+iurueahOWQjuerr++8jOavlOWmguW4uOingeeahOacie+8mjwvcD4KPHA+bW9kX3Byb3h5X2ZjZ2kg55So5LqO5Y+N5Luj5ZCO56uv5pivZmFzdGNnaeWNj+iurueahOacjeWKoe+8jOavlOWmgnBocC1mcG08YnI+bW9kX3Byb3h5X2h0dHAg55So5LqO5Y+N5Luj5ZCO56uv5pivaHR0cOOAgWh0dHBz5Y2P6K6u55qE5pyN5YqhPGJyPm1vZF9wcm94eV91d3NnaSDnlKjkuo7lj43ku6PlkI7nq6/mmK91d3NnaeWNj+iurueahOacjeWKoe+8jOS4u+imgemSiOWvuXVXU0dJPGJyPm1vZF9wcm94eV9hanAg55So5LqO5Y+N5Luj5ZCO56uv5pivYWpw5Y2P6K6u55qE5pyN5Yqh77yM5Li76KaB6ZKI5a+5VG9tY2F0PGJyPm1vZF9wcm94eV9mdHAg55So5LqO5Y+N5Luj5ZCO56uv5pivZnRw5Y2P6K6u55qE5pyN5YqhPGJyPumZpOWOu21vZF9wcm94eV9mY2dp55So5LqO5Y+N5LujUEhQ77yM5oiR5Lus5Zyo5L2/55SoTm9kZS5qc+OAgVB5dGhvbuetieiEmuacrOivreiogOe8luWGmeeahOW6lOeUqOS5n+W4uOW4uOS8muS9v+eUqG1vZF9wcm94eV9odHRw5L2c5Li65LiA5bGC5Y+N5Luj5pyN5Yqh5Zmo77yM6L+Z5qC35Lit6Ze05bGC5Y+v5Lul5YGaQUNM44CB6Z2Z5oCB5paH5Lu25pyN5Yqh562J44CCPC9wPgo8cD7ov5nmrKHnmoRTU1JG5ryP5rSe5piv5Ye65ZyobW9kX3Byb3h56L+Z5Liq5qih5Z2X5Lit55qE77yM5oiR5Lus5bCx5p2l5LuO5Luj56CB55qE5bGC6Z2i5YiG5p6Q5LiA5LiL5a6D55qE5Y6f55CG5piv5LuA5LmI77yM56m256uf5b2x5ZON5pyJ5aSa5aSn44CCPC9wPgo8cD4weDAyIOa8j+a0nuWOn+eQhuWIhuaekDxicj7jgIpCdWlsZGluZyBhIFBPQyBmb3IgQ1ZFLTIwMjEtNDA0MzjjgIvov5nnr4fmlofnq6DkuK3mj5DliLDkuobov5nkuKrmvI/mtJ7nmoTlpI3njrDmlrnms5XvvJrlvZPnm67moIfnjq/looPkvb/nlKjkuoZtb2RfcHJveHnlgZrlj43lkJHku6PnkIbvvIzmr5TlpoJQcm94eVBhc3MgLyDigJw8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvJnF1b3Q777yM5q2k5pe26YCa6L+H6K+35rGCaHR0cDovL3RhcmdldC8/dW5peDp7JiMzOTtBJiMzOTsqNTAwMH18aHR0cDovL2V4YW1wbGUuY29tL+WNs+WPr+WQkWh0dHA6Ly9leGFtcGxlLmNvbeWPkemAgeivt+axgu+8jOmAoOaIkOS4gOS4qlNTUkbmlLvlh7vjgIIiPmh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC8mcXVvdDvvvIzmraTml7bpgJrov4for7fmsYJodHRwOi8vdGFyZ2V0Lz91bml4OnsmIzM5O0EmIzM5Oyo1MDAwfXxodHRwOi8vZXhhbXBsZS5jb20v5Y2z5Y+v5ZCRaHR0cDovL2V4YW1wbGUuY29t5Y+R6YCB6K+35rGC77yM6YCg5oiQ5LiA5LiqU1NSRuaUu+WHu+OAgjwvYT48L3A+CjxwPui/memHjOmdou+8jEFwYWNoZeS7o+eggeS4reeKr+W+l+mUmeivr+aYr+WcqG1vZHVsZXMvcHJveHkvcHJveHlfdXRpbC5j55qEZml4X3Vkc19maWxlbmFtZeWHveaVsO+8mjwvcD4KPHA+Lyo8L3A+Cjx1bD4KPGxpPkluIHRoZSBjYXNlIG9mIHRoZSByZXZlcnNlIHByb3h5LCB3ZSBuZWVkIHRvIHNlZSBpZiB3ZTwvbGk+PGxpPndlcmUgcGFzc2VkIGEgVURTIHVybCAoZWc6IGZyb20gbW9kX3Byb3h5KSBhbmQgYWRqdXN0IHVkc19wYXRoPC9saT48bGk+PHA+YXMgcmVxdWlyZWQuPGJyPjxlbT4vPGJyPnN0YXRpYyB2b2lkIGZpeF91ZHNfZmlsZW5hbWUocmVxdWVzdF9yZWMgPC9lbT5yLCBjaGFyIDxlbT4qdXJsKTxicj57PGJyPiBjaGFyIDwvZW0+cHRyLCAqcHRyMjs8YnI+IGlmICghciB8fCAhci0mZ3Q7ZmlsZW5hbWUpIHJldHVybjs8L3A+CjxwPiBpZiAoIXN0cm5jbXAoci0mZ3Q7ZmlsZW5hbWUsIOKAnHByb3h5OuKAnSwgNikgJmFtcDsmYW1wOzwvcD4KPHByZT48Y29kZT4gICAgIChwdHIyID0gYXBfc3RyY2FzZXN0cihyLSZndDtmaWxlbmFtZSwgJnF1b3Q7dW5peDomcXVvdDspKSAmYW1wOyZhbXA7CiAgICAgKHB0ciA9IGFwX3N0cmNocihwdHIyLCAmIzM5O3wmIzM5OykpKSB7CiBhcHJfdXJpX3QgdXJpc29jazsKIGFwcl9zdGF0dXNfdCBydjsKICpwdHIgPSAmIzM5OyYjMzk7OwogcnYgPSBhcHJfdXJpX3BhcnNlKHItJmd0O3Bvb2wsIHB0cjIsICZhbXA7dXJpc29jayk7CiBpZiAocnYgPT0gQVBSX1NVQ0NFU1MpIHsKICAgICBjaGFyICpydXJsID0gcHRyKzE7CiAgICAgY2hhciAqc29ja3BhdGggPSBhcF9ydW50aW1lX2Rpcl9yZWxhdGl2ZShyLSZndDtwb29sLCB1cmlzb2NrLnBhdGgpOwogICAgIGFwcl90YWJsZV9zZXRuKHItJmd0O25vdGVzLCAmcXVvdDt1ZHNfcGF0aCZxdW90Oywgc29ja3BhdGgpOwogICAgICp1cmwgPSBhcHJfcHN0cmR1cChyLSZndDtwb29sLCBydXJsKTsgLyogc28gd2UgZ2V0IHRoZSBzY2hlbWUgZm9yIHRoZSB1ZHMgKi8KICAgICAvKiByLSZndDtmaWxlbmFtZSBzdGFydHMgdy8gJnF1b3Q7cHJveHk6JnF1b3Q7LCBzbyBhZGQgYWZ0ZXIgdGhhdCAqLwogICAgIG1lbW1vdmUoci0mZ3Q7ZmlsZW5hbWUrNiwgcnVybCwgc3RybGVuKHJ1cmwpKzEpOwogICAgIGFwX2xvZ19yZXJyb3IoQVBMT0dfTUFSSywgQVBMT0dfVFJBQ0UyLCAwLCByLAogICAgICAgICAgICAgJnF1b3Q7KjogcmV3cml0ZSBvZiB1cmwgZHVlIHRvIFVEUyglcyk6ICVzICglcykmcXVvdDssCiAgICAgICAgICAgICBzb2NrcGF0aCwgKnVybCwgci0mZ3Q7ZmlsZW5hbWUpOwogfQogZWxzZSB7CiAgICAgKnB0ciA9ICYjMzk7fCYjMzk7OwogfQo8L2NvZGU+PC9wcmU+PHA+IH08YnI+fTxicj5BcGFjaGXlnKjphY3nva7lj43ku6PnmoTlkI7nq6/mnI3liqHlmajml7bvvIzmnInkuKTnp43mg4XlhrXvvJo8L3A+CjwvbGk+PC91bD4KPHA+55u05o6l5L2/55So5p+Q5Liq5Y2P6K6u5Y+N5Luj5Yiw5p+Q5LiqSVDlkoznq6/lj6PvvIzmr5TlpoJQcm94eVBhc3MgLyDigJw8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjgwODAiPmh0dHA6Ly9sb2NhbGhvc3Q6ODA4MDwvYT7igJw8YnI+5L2/55So5p+Q5Liq5Y2P6K6u5Y+N5Luj5YiwdW5peOWll+aOpeWtl++8jOavlOWmglByb3h5UGFzcyAvIOKAnHVuaXg6L3Zhci9ydW4vd3d3LnNvY2t8PGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo4MDgwLyI+aHR0cDovL2xvY2FsaG9zdDo4MDgwLzwvYT7igJw8YnI+56ys5LiA56eN5oOF5Ya15q+U6L6D5aW955CG6Kej77yM56ys5LqM56eN5oOF5Ya155qE6K6+6K6h5oiR6KeJ5b6X5LiN5piv5b6I5aW977yM55u45b2T5LqO6K6p55So5oi35Y+v5Lul5L2/55So5LiA5LiqQXBhY2hl6Ieq5Yib55qE5YaZ5rOV5p2l6YWN572u5ZCO56uv5Zyw5Z2A44CC6YKj5LmI6L+Z5pe25YCZ5bCx5Lya5raJ5Y+K5YiwcGFyc2XnmoTov4fnqIvvvIzpnIDopoHlsIbov5nnp43oh6rliJvnmoTor63ms5XovazmjaLmiJDog73lhbzlrrnmraPluLhzb2NrZXTov57mjqXnmoTnu5PmnoTvvIzogIxmaXhfdWRzX2ZpbGVuYW1l5Ye95pWw5bCx5piv5YGa6L+Z5Liq5LqL5oOF55qE44CCPC9wPgo8cD7kvb/nlKjlrZfnrKbkuLLmlofms5XmnaXooajnpLrlpJrnp43lkKvkuYnnmoTmlrnlvI/pgJrluLjmmpfol4/kuIDkupvmvI/mtJ7vvIzmr5TlpoLov5nph4zvvIzov5vlhaXov5nkuKppZuivreWPpemcgOimgea7oei2s+S4ieS4quadoeS7tu+8mjwvcD4KPHA+ci0mZ3Q7ZmlsZW5hbWXnmoTliY025Liq5a2X56ym562J5LqOcHJveHk6PGJyPnItJmd0O2ZpbGVuYW1l55qE5a2X56ym5Liy5Lit5ZCr5pyJ5YWz6ZSu5a2XdW5peDo8YnI+dW5peDrlhbPplK7lrZflkI7nmoTpg6jliIblkKvmnInlrZfnrKZ8PGJyPuW9k+a7oei2s+i/meS4ieS4quadoeS7tuWQju+8jOWwhnVuaXg65ZCO6Z2i55qE5YaF5a656L+b6KGM6Kej5p6Q77yM6K6+572u5oiQdWRzX3BhdGjnmoTlgLzvvJvlsIblrZfnrKZ85ZCO6Z2i55qE5YaF5a6577yM6K6+572u5oiQcnVybOeahOWAvOOAgjwvcD4KPHA+5Li+5Liq5L6L5a2Q77yM5YmN6Z2i5LuL57uN5Lit55qEUHJveHlQYXNzIC8g4oCcdW5peDovdmFyL3J1bi93d3cuc29ja3w8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjgwODAvJnF1b3Q777yM5Zyo6Kej5p6Q5a6M5oiQ5ZCO77yMdWRzX3BhdGjnmoTlgLznrYnkuo4vdmFyL3J1bi93d3cuc29ja++8jHJ1cmznmoTlgLznrYnkuo5odHRwOi8vbG9jYWxob3N0OjgwODAv44CCIj5odHRwOi8vbG9jYWxob3N0OjgwODAvJnF1b3Q777yM5Zyo6Kej5p6Q5a6M5oiQ5ZCO77yMdWRzX3BhdGjnmoTlgLznrYnkuo4vdmFyL3J1bi93d3cuc29ja++8jHJ1cmznmoTlgLznrYnkuo5odHRwOi8vbG9jYWxob3N0OjgwODAv44CCPC9hPjwvcD4KPHA+55yL5Yiw6L+Z6YeM5YW25a6e6YO95rKh5pyJ5LuA5LmI6Zeu6aKY77yM6YKj5LmI5oiR5Lus6IKv5a6a5Lya5oCd6ICD77yMci0mZ3Q7ZmlsZW5hbWXmmK/ku47lk6rmnaXnmoTvvIznlKjmiLflj6/mjqflkJfvvIzkuLrku4DkuYjvvJ88L3A+CjxwPui/meaXtuWwseimgeivtOWIsOWPpuS4gOS4quWHveaVsO+8jHByb3h5X2hvb2tfY2Fub25faGFuZGxlcu+8jOi/meS4quWHveaVsOeUqOS6juazqOWGjGNhbm9uIGhhbmRsZXLvvIzmr5TlpoLvvJo8L3A+CjxwPmltYWdlLTIwMjExMDE3MjM0MzU0NjE1LnBuZzwvcD4KPHA+5Y+v5Lul55yL5Yiw77yM5q+P5LiA5LiqbW9kX3Byb3h5X3h4eOmDveS8muazqOWGjOS4gOS4quiHquW3seeahGNhbm9uIGhhbmRsZXLvvIxjYW5vbiBoYW5kbGVy5Lya5Zyo5Y+N5Luj55qE5pe25YCZ6KKr6LCD55So77yM55So5LqO5ZGK6K+JQXBhY2hl5Li756iL5bqP5a6D5bqU6K+l5oqK6L+Z5Liq6K+35rGC5Lqk57uZ5ZOq5Liq5aSE55CG5pa55rOV5p2l5aSE55CG44CCPC9wPgo8cD7mr5TlpoLvvIzmiJHku6znnIvliLBtb2RfcHJveHlfaHR0cOeahHByb3h5X2h0dHBfY2Fub27lh73mlbDvvJo8L3A+CjxwPnN0YXRpYyBpbnQgcHJveHlfaHR0cF9jYW5vbihyZXF1ZXN0X3JlYyA8ZW0+ciwgY2hhciA8L2VtPnVybCk8YnI+ezxicj4gICAgLy8g4oCmPGJyPiAgICAvLyBmaXJzdCBwYXJ0PGJyPiAgICBpZiAoc3RybmNhc2VjbXAodXJsLCDigJxodHRwOuKAnSwgNSkgPT0gMCkgezxicj4gICAgICAgIHVybCArPSA1Ozxicj4gICAgICAgIHNjaGVtZSA9IOKAnGh0dHDigJ07PGJyPiAgICB9PGJyPiAgICBlbHNlIGlmIChzdHJuY2FzZWNtcCh1cmwsIOKAnGh0dHBzOuKAnSwgNikgPT0gMCkgezxicj4gICAgICAgIHVybCArPSA2Ozxicj4gICAgICAgIHNjaGVtZSA9IOKAnGh0dHBz4oCdOzxicj4gICAgfTxicj4gICAgZWxzZSB7PGJyPiAgICAgICAgcmV0dXJuIERFQ0xJTkVEOzxicj4gICAgfTxicj4gICAgcG9ydCA9IGRlZl9wb3J0ID0gYXBfcHJveHlfcG9ydF9vZl9zY2hlbWUoc2NoZW1lKTs8L3A+CjxwcmU+PGNvZGU+Ly8gc2Vjb25kIHBhcnQKYXBfcHJveHlfY2Fub25fbmV0bG9jKHItJmd0O3Bvb2wsICZhbXA7dXJsLCBOVUxMLCBOVUxMLCAmYW1wO2hvc3QsICZhbXA7cG9ydCk7CnN3aXRjaCAoci0mZ3Q7cHJveHlyZXEpIHsKZGVmYXVsdDogLyogd3RmIGFyZSB3ZSBkb2luZyBoZXJlPyAqLwpjYXNlIFBST1hZUkVRX1JFVkVSU0U6CiAgICBpZiAoYXByX3RhYmxlX2dldChyLSZndDtub3RlcywgJnF1b3Q7cHJveHktbm9jYW5vbiZxdW90OykpIHsKICAgICAgICBwYXRoID0gdXJsOyAgIC8qIHRoaXMgaXMgdGhlIHJhdyBwYXRoICovCiAgICB9CiAgICBlbHNlIHsKICAgICAgICBwYXRoID0gYXBfcHJveHlfY2Fub25lbmMoci0mZ3Q7cG9vbCwgdXJsLCBzdHJsZW4odXJsKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jX3BhdGgsIDAsIHItJmd0O3Byb3h5cmVxKTsKICAgICAgICBzZWFyY2ggPSByLSZndDthcmdzOwogICAgfQogICAgYnJlYWs7CmNhc2UgUFJPWFlSRVFfUFJPWFk6CiAgICBwYXRoID0gdXJsOwogICAgYnJlYWs7Cn0KCmlmIChwYXRoID09IE5VTEwpCiAgICByZXR1cm4gSFRUUF9CQURfUkVRVUVTVDsKCmlmIChwb3J0ICE9IGRlZl9wb3J0KQogICAgYXByX3NucHJpbnRmKHNwb3J0LCBzaXplb2Yoc3BvcnQpLCAmcXVvdDs6JWQmcXVvdDssIHBvcnQpOwplbHNlCiAgICBzcG9ydFswXSA9ICYjMzk7JiMzOTs7CgppZiAoYXBfc3RyY2hyX2MoaG9zdCwgJiMzOTs6JiMzOTspKSB7IC8qIGlmIGxpdGVyYWwgSVB2NiBhZGRyZXNzICovCiAgICBob3N0ID0gYXByX3BzdHJjYXQoci0mZ3Q7cG9vbCwgJnF1b3Q7WyZxdW90OywgaG9zdCwgJnF1b3Q7XSZxdW90OywgTlVMTCk7Cn0KCi8vIGZvdXJ0aCBwYXJ0CnItJmd0O2ZpbGVuYW1lID0gYXByX3BzdHJjYXQoci0mZ3Q7cG9vbCwgJnF1b3Q7cHJveHk6JnF1b3Q7LCBzY2hlbWUsICZxdW90OzovLyZxdW90OywgaG9zdCwgc3BvcnQsCiAgICAgICAgJnF1b3Q7LyZxdW90OywgcGF0aCwgKHNlYXJjaCkgPyAmcXVvdDs/JnF1b3Q7IDogJnF1b3Q7JnF1b3Q7LCAoc2VhcmNoKSA/IHNlYXJjaCA6ICZxdW90OyZxdW90OywgTlVMTCk7CnJldHVybiBPSzsKPC9jb2RlPjwvcHJlPjxwPn08YnI+6L+Z5Liq5Ye95pWw5Lit5pyJ5LiJ5Liq5Li76KaB55qE6YOo5YiG77yM56ys5LiA6YOo5YiG5qOA5p+l5LqG6YWN572u5Lit55qEdXJs55qE5byA5aS05piv5LiN5pivaHR0cDrmiJZodHRwczrvvIzlpoLmnpzkuI3mmK/vvIzor7TmmI7ov5nkuKror7fmsYLkuI3or6XnlLFtb2RfcHJveHlfaHR0cOaooeWdl+WkhOeQhu+8jOWQjue7reeahOi/h+eoi+i3s+i/h++8m+esrOS6jOmDqOWIhu+8jOeUqOWQhOenjeaWueW8j+iOt+WPluWIsHNjaGVtZeOAgWhvc3TjgIFwb3J044CBcGF0aOOAgXNlYXJjaOetieWHoOS4qlVSTOeahOe7hOaIkOWPmOmHj++8m+esrOS4iemDqOWIhu+8jOaLvOaOpXByb3h5OuOAgXNjaGVtZeOAgTovL+OAgWhvc3TjgIFzcG9ydOOAgS/jgIFwYXRo44CBc2VhcmNo77yM5oiQ5Li65LiA5Liq5a2X56ym5Liy77yM6LWL5YC857uZci0mZ3Q7ZmlsZW5hbWXjgII8L3A+CjxwPui/memHjOmdou+8jHNjaGVtZeOAgWhvc3TjgIFzcG9ydOadpeiHquS6jumFjee9ruaWh+S7tuS4remFjee9rueahFByb3h5UGFzc++8jOiAjHBhdGjjgIFzZWFyY2jmnaXoh6rkuo7nlKjmiLflj5HpgIHnmoTmlbDmja7ljIXjgILkuZ/lsLHmmK/or7TvvIxyLSZndDtmaWxlbmFtZeS4reeahOWQjuWNiumDqOWIhuaYr+eUqOaIt+WPr+aOp+eahOOAgjwvcD4KPHA+6YKj5oiR5Lus5Zue55yL5YmN6Z2i55qEZml4X3Vkc19maWxlbmFtZeWHveaVsO+8jOWug+WcqHItJmd0O2ZpbGVuYW1l5Lit5p+l5om+5YWz6ZSu5a2XdW5peDrvvIzlubblsIbov5nkuKrlhbPplK7lrZflkI7pnaLnm7TliLB855qE6YOo5YiG5L2c5Li6dW5peOWll+aOpeWtl+WcsOWdgO+8jOiAjOWwhnzlkI7pnaLnmoTpg6jliIbkvZzkuLrlj43ku6PnmoTlkI7nq6/lnLDlnYDjgII8L3A+CjxwPuaIkeS7rOWPr+S7pemAmui/h+ivt+axgueahHBhdGjmiJbogIVzZWFyY2jmnaXmjqfliLbov5nkuKTkuKrpg6jliIbvvIzmjqfliLbkuoblj43ku6PnmoTlkI7nq6/lnLDlnYDvvIzov5nkuZ/lsLHmmK/kuLrku4DkuYjov5nph4zkvJrlh7rnjrBTU1JG55qE5Y6f5Zug44CCPC9wPgo8cD4weDAzIOmZkOWItue7lei/hzxicj7lvZPnhLbvvIzov5nph4zpnaLmnInkuIDkuKrpl67popjvvIzpgqPlsLHmmK9BcGFjaGXlnKjmraPluLjmg4XlhrXkuIvvvIzlm6DkuLror4bliKvliLDkuoZ1bml45aWX5o6l5a2X77yM5omA5Lul5Lya5oqK55So5oi36K+35rGC5Y+R6YCB57uZ6L+Z5Liq5pys5Zyw5paH5Lu25aWX5o6l5a2X77yM6ICM5LiN5piv5ZCO56uvVVJM44CCPC9wPgo8cD7lj6/ku6XmnaXlgZrkuKrmtYvor5XvvIzmiJHku6zlj5HpgIHov5nmoLfkuIDkuKror7fmsYLvvJo8L3A+CjxwPkdFVCAvP3VuaXg6L3Zhci9ydW4vdGVzdC5zb2NrfDxhIGhyZWY9Imh0dHA6Ly9leGFtcGxlLmNvbS8iPmh0dHA6Ly9leGFtcGxlLmNvbS88L2E+IEhUVFAvMS4xPGJyPuKApjxicj7mraTml7bkvJrlvpfliLDkuIDkuKo1MDPplJnor6/vvIzplJnor6/ml6Xlv5fkvJrlj43ppojov5nmoLfnmoTnu5PmnpzvvJo8L3A+CjxwPltNb24gT2N0IDE4IDAwJiM1ODsxNCYjNTg7MzguNjM0Nzk1IDIwMjFdIFtwcm94eTplcnJvcl0gW3BpZCA3ODIxODA6dGlkIDE0MDczNzMwNjc5NzgyNF0gKDIpTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeTogQUgwMjQ1NDogSFRUUDogYXR0ZW1wdCB0byBjb25uZWN0IHRvIFVuaXggZG9tYWluIHNvY2tldCAvdmFyL3J1bi90ZXN0LnNvY2sgKDE5Mi4xNjguMS4xKSBmYWlsZWQ8YnI+W01vbiBPY3QgMTggMDAmIzU4OzE0JiM1ODszOC42MzQ4NzUgMjAyMV0gW3Byb3h5X2h0dHA6ZXJyb3JdIFtwaWQgNzgyMTgwOnRpZCAxNDA3MzczMDY3OTc4MjRdIFtjbGllbnQgMTkyLjE2OC4xLjE0Mjo1OTY5Nl0gQUgwMTExNDogSFRUUDogZmFpbGVkIHRvIG1ha2UgY29ubmVjdGlvbiB0byBiYWNrZW5kOiBodHRwZC1VRFM8YnI+5om+5LiN5YiwdW5peOWll+aOpeWtly92YXIvcnVuL3Rlc3Quc29ja++8jOi/meaYr+W9k+eEtuOAgjwvcD4KPHA+5oiR5Lus5LiN6IO96K6p5LuW5oqK6K+35rGC5Y+R6YCB5YiwdW5peOWll+aOpeWtl+S4iu+8jOiAjOaYr+WPkemAgee7meaIkeS7rOmcgOimgeeahHzlkI7pnaLnmoTlnLDlnYDjgII8L3A+CjxwPuWbveWklumCo+S9jeS9nOiAhee7meWHuuS6huS4gOS4qumdnuW4uOW3p+WmmeeahOaWueazle+8jOWcqGZpeF91ZHNfZmlsZW5hbWXlh73mlbDkuK3vvIx1bml45aWX5o6l5a2X55qE5Zyw5Z2A5p2l6Ieq5LqO5LiL6Z2i6L+Z5Lik6KGM5Luj56CB77yaPC9wPgo8cD5jaGFyICpzb2NrcGF0aCA9IGFwX3J1bnRpbWVfZGlyX3JlbGF0aXZlKHItJmd0O3Bvb2wsIHVyaXNvY2sucGF0aCk7PGJyPmFwcl90YWJsZV9zZXRuKHItJmd0O25vdGVzLCDigJx1ZHNfcGF0aOKAnSwgc29ja3BhdGgpOzxicj7lpoLmnpzov5nph4xhcF9ydW50aW1lX2Rpcl9yZWxhdGl2ZeWHveaVsOi/lOWbnuWAvOaYr251bGzvvIzliJnlkI7pnaLojrflj5Z1ZHNfcGF0aOaXtuWwhuS4jeS8muS9v+eUqHVuaXjlpZfmjqXlrZflnLDlnYDvvIzogIzlj5jmiJDmma7pgJrnmoRUQ1Dov57mjqXvvJo8L3A+CjxwPnVkc19wYXRoID0gKDxlbT53b3JrZXItJmd0O3MtJmd0O3Vkc19wYXRoID8gd29ya2VyLSZndDtzLSZndDt1ZHNfcGF0aCA6IGFwcl90YWJsZV9nZXQoci0mZ3Q7bm90ZXMsIOKAnHVkc19wYXRo4oCdKSk7PGJyPmlmICh1ZHNfcGF0aCkgezxicj4gICAgaWYgKGNvbm4tJmd0O3Vkc19wYXRoID09IE5VTEwpIHs8YnI+ICAgICAgICAvPC9lbT4gdXNlICg8ZW0+Y29ubiktJmd0O3Bvb2wgaW5zdGVhZCBvZiB3b3JrZXItJmd0O2NwLSZndDtwb29sIHRvIG1hdGNoIGxpZmV0aW1lIDwvZW0+Lzxicj4gICAgICAgIGNvbm4tJmd0O3Vkc19wYXRoID0gYXByX3BzdHJkdXAoY29ubi0mZ3Q7cG9vbCwgdWRzX3BhdGgpOzxicj4gICAgfTxicj4gICAgLy8g4oCmPGJyPiAgICBjb25uLSZndDtob3N0bmFtZSA9IOKAnGh0dHBkLVVEU+KAnTs8YnI+ICAgIGNvbm4tJmd0O3BvcnQgPSAwOzxicj59PGJyPmVsc2Ugezxicj4gICAgLy8g4oCmPGJyPiAgICBjb25uLSZndDtob3N0bmFtZSA9IGFwcl9wc3RyZHVwKGNvbm4tJmd0O3Bvb2wsIHVyaS0mZ3Q7aG9zdG5hbWUpOzxicj4gICAgY29ubi0mZ3Q7cG9ydCA9IHVyaS0mZ3Q7cG9ydDs8YnI+ICAgIC8vIOKApjxicj59PGJyPumCo+S5iOWmguS9leiuqWFwX3J1bnRpbWVfZGlyX3JlbGF0aXZl55qE6L+U5Zue5YC85pivbnVsbO+8n2FwX3J1bnRpbWVfZGlyX3JlbGF0aXZl5Ye95pWw5pyA5ZCO5byV55So5LqGYXBy5bqT5Lit55qEYXByX2ZpbGVwYXRoX21lcmdl5Ye95pWw77yM5a6D55qE5Li76KaB5L2c55So5bCx5piv6Lev5b6E55qEam9pbu+8jOeUqOS6juWkhOeQhuebuOWvuei3r+W+hOOAgee7neWvuei3r+W+hOOAgS4uL+i/nuaOpeOAgjwvcD4KPHA+6L+Z5Liq5Ye95pWw5Lit77yM5b2T5b6Fam9pbueahOS4pOautei3r+W+hOmVv+W6pis05aSn5LqOQVBSX1BBVEhfTUFY77yM5Lmf5bCx5pivNDA5NueahOaXtuWAme+8jOWImeWHveaVsOS8mui/lOWbnuS4gOS4qui3r+W+hOi/h+mVv+eahOeKtuaAgeegge+8jOWvvOiHtOacgOWQjnVuaXjlpZfmjqXlrZfnmoTlgLzmmK9udWxs77yaPC9wPgo8cD5yb290bGVuID0gc3RybGVuKHJvb3RwYXRoKTs8YnI+bWF4bGVuID0gcm9vdGxlbiArIHN0cmxlbihhZGRwYXRoKSArIDQ7IC8qIDQgZm9yIHNsYXNoZXMgYXQgc3RhcnQsIGFmdGVyPC9wPgo8cHJlPjxjb2RlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByb290LCBhbmQgYXQgZW5kLCBwbHVzIHRyYWlsaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBudWxsICovCjwvY29kZT48L3ByZT48cD5pZiAobWF4bGVuICZndDsgQVBSX1BBVEhfTUFYKSB7PGJyPiAgICByZXR1cm4gQVBSX0VOQU1FVE9PTE9ORzs8YnI+fTxicj7kuZ/lsLHmmK/or7TvvIzmiJHku6zlj6rpnIDopoHlnKh1bml4OuS4jnzkuYvpl7TkvKDlhaXlhoXlrrnplb/luqblpKfmpoLotoXov4c0MDky55qE5a2X56ym5Liy77yM5bCx6IO95p6E6YCg5Ye6dWRzX3BhdGjkuLpudWxs55qE57uT5p6c77yM6K6pQXBhY2hl5LiN5YaN5Y+R6YCB6K+35rGC57uZdW5peOWll+aOpeWtl+OAgjwvcD4KPHA+5pyA5ZCO77yM6L+Z5qC35p6E6YCg5Ye655qE6K+35rGC5oiQ5Yqf6Kem5Y+RU1NSRua8j+a0nu+8mjwvcD4KPHA+aW1hZ2UtMjAyMTEwMTgwMTA0MDA1OTQucG5nPC9wPgo8cD5BcGFjaGXlrpjmlrnlr7nov5nkuKrmvI/mtJ7nmoTkv67lpI3kuZ/mr5TovoPnroDljZXvvIzlm6DkuLrnlKjmiLflj6rog73mjqfliLZyLSZndDtmaWxlbmFtZeeahOWQjuWNiumDqOWIhu+8jOiAjOWJjeWNiumDqOWIhnByb3h5OntzY2hlbWV9Oi8ve2hvc3R9e3Nwb3J0fS/mnaXoh6rkuo7phY3nva7mlofku7bvvIzmiYDku6XmnIDmlrDniYjmlLnmiJDmo4Dmn6XlhbblvIDlpLTmmK/kuI3mmK9wcm94eTp1bml4Ou+8jOi/meS4gOmDqOWIhueUqOaIt+aXoOazleaOp+WItuOAgjwvcD4KPHA+MHgwNCBtb2RfcHJveHlfZmNnaeaYr+WQpuWtmOWcqOa8j+a0nu+8nzxicj7miJHku6zliY3mlofpg73ku6Vtb2RfcHJveHlfaHR0cOS9nOS4uuS+i+WtkOadpeeglOeptu+8jOiAjOWcqEFwYWNoZStQSFDnjq/looPkuIvvvIxtb2RfcHJveHlfZmNnaeeahOS9v+eUqOmikeeOh+abtOmrmO+8jOmCo+S5iOWug+aYr+WQpuS5n+S8muiiq1NTUkbmvI/mtJ7lvbHlk43lkaLvvJ88L3A+CjxwPui/meS4qua8j+a0nuWHuueOsOWcqG1vZHVsZXMvcHJveHkvcHJveHlfdXRpbC5j55qEZml4X3Vkc19maWxlbmFtZeWHveaVsO+8jOeQhuiuuuS4iuaYr21vZF9wcm94eeeahOa8j+a0nu+8jOmCo+S5iOWug+eahOWtkOaooeWdl+W6lOivpemDveS8muiiq+W9seWTje+8jOS9hui/meS4qua8j+a0nuS4reacieS4gOS4quW+iOWFs+mUrueahOWPmOmHj+aYr3ItJmd0O2ZpbGVuYW1l77yM5LuW5piv5ZCm5Y+v5o6n5Yaz5a6a5LqG5ZCO6Z2i55qE5Yip55So5piv5ZCm5Y+v5Lul5oiQ5Yqf44CCPC9wPgo8cD7miJHku6znnIvkuIDkuIttb2RfcHJveHlfZmNnaeeahGNhbm9u5Ye95pWw77yaPC9wPgo8cD5zdGF0aWMgaW50IHByb3h5X2ZjZ2lfY2Fub24ocmVxdWVzdF9yZWMgPGVtPnIsIGNoYXIgPC9lbT51cmwpPGJyPns8YnI+ICAgIGNoYXIgPGVtPmhvc3QsIHNwb3J0WzddOzxicj4gICAgY29uc3QgY2hhciA8L2VtPmVycjs8YnI+ICAgIGNoYXIgPGVtPnBhdGg7PGJyPiAgICBhcHJfcG9ydF90IHBvcnQsIGRlZl9wb3J0Ozxicj4gICAgZmNnaV9yZXFfY29uZmlnX3QgPC9lbT5yY29uZiA9IE5VTEw7PGJyPiAgICBjb25zdCBjaGFyICpwYXRoaW5mb190eXBlID0gTlVMTDs8L3A+CjxwcmU+PGNvZGU+aWYgKGFwX2NzdHJfY2FzZWNtcG4odXJsLCAmcXVvdDtmY2dpOiZxdW90OywgNSkgPT0gMCkgewogICAgdXJsICs9IDU7Cn0KZWxzZSB7CiAgICByZXR1cm4gREVDTElORUQ7Cn0KCi8vIC4uLgoKaWYgKGFwcl90YWJsZV9nZXQoci0mZ3Q7bm90ZXMsICZxdW90O3Byb3h5LW5vY2Fub24mcXVvdDspKSB7CiAgICBwYXRoID0gdXJsOyAgIC8qIHRoaXMgaXMgdGhlIHJhdyBwYXRoICovCn0KZWxzZSB7CiAgICBwYXRoID0gYXBfcHJveHlfY2Fub25lbmMoci0mZ3Q7cG9vbCwgdXJsLCBzdHJsZW4odXJsKSwgZW5jX3BhdGgsIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICByLSZndDtwcm94eXJlcSk7Cn0KaWYgKHBhdGggPT0gTlVMTCkKICAgIHJldHVybiBIVFRQX0JBRF9SRVFVRVNUOwoKci0mZ3Q7ZmlsZW5hbWUgPSBhcHJfcHN0cmNhdChyLSZndDtwb29sLCAmcXVvdDtwcm94eTpmY2dpOi8vJnF1b3Q7LCBob3N0LCBzcG9ydCwgJnF1b3Q7LyZxdW90OywKICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLCBOVUxMKTsKLy8gLi4uCjwvY29kZT48L3ByZT48cD59PGJyPuWPr+inge+8jOi/memHjOeahHItJmd0O2ZpbGVuYW1l562J5LqOcHJveHk6ZmNnaTovL3tob3N0fXtzcG9ydH0ve3BhdGh977yM55u45q+U5LqObW9kX3Byb3h5X2h0dHDlsJHkuoZzZWFyY2jjgILkuI3ov4fvvIxwYXRo5LuN54S25piv55So5oi35Y+v5Lul5o6n5Yi255qE77yM5oiR5Lus5Y+v5Lul5bCd6K+V5Y+R6YCB6L+Z5qC355qE5pWw5o2u5YyF77yaPC9wPgo8cD5HRVQgL3VuaXg6dGVzdHRlc3R8PGEgaHJlZj0iaHR0cDovL2V4YW1wbGUuY29tLzEucGhwIj5odHRwOi8vZXhhbXBsZS5jb20vMS5waHA8L2E+IEhUVFAvMS4xPGJyPuKApjxicj7nu4/ov4fosIPor5Xlj6/op4HvvIxwYXRo5Lit55qEfOiiq2FwX3Byb3h5X2Nhbm9uZW5j5Ye95pWw57yW56CB5oiQ5LqGJTdD77yaPC9wPgo8cD5pbWFnZS0yMDIxMTAxODAxMzcwODc0NS5wbmc8L3A+CjxwPuayoeaciXzvvIzlkI7pnaLkuZ/lsLHml6Dms5XlrozmiJBTU1JG5Yip55So5LqG44CCPC9wPgo8cD4weDA1IOWTquS6m+aooeWdl+WPl+WIsOW9seWTjTxicj7pgqPkuYjvvIzmiJHku6zlhbblrp7lj6/ku6XorqTkuLrvvIzlpoLmnpxyLSZndDtmaWxlbmFtZeaciemDqOWIhuWPr+aOp++8jOS4lOWPr+aOp+eahOmDqOWIhuayoeacieiiq+e8luegge+8iOS4jeaYr3BhdGjvvInvvIzov5nkuKrmqKHlnZflsLHkvJrlj5fliLBTU1JG5ryP5rSe55qE5b2x5ZON44CCPC9wPgo8cD7lr7nov5nkuKrnu5PorrrmiJHmsqHmnInpgJDkuIDmtYvor5XogIPor4HvvIzmiJHku4XmjJHpgInlj6bkuIDkuKrovoPkuLrluLjnlKjnmoTmqKHlnZdtb2RfcHJveHlfYWpw5p2l5aSN546w5ryP5rSe44CCPC9wPgo8cD5tb2RfcHJveHlfYWpw5piv55So5LqO5Y+N5LujVG9tY2F055qE5LiA5LiqQXBhY2hl5qih5Z2X77yMVG9tY2F05ZyoOC41LjUx54mI5pys5Lul5YmN6buY6K6k5Lya5byA5ZCv5Lik5Liq56uv5Y+jODA4MOWSjDgwMDnvvIzliIbliKvlr7nlupRIVFRQ5Y2P6K6u5ZKMQUpQ5Y2P6K6u44CCSFRUUOWNj+iuruWlveeQhuino++8jEFKUOWNj+iuruaYr+S4gOS4quS6jOi/m+WItuWNj+iuru+8jOmAmuS/oeWNj+iuruebuOavlOi1t+adpeaViOeOh+abtOmrmOOAguaJgOS7peS7peWJjeW+iOWkmui/kOe7tOS6uuWRmOS8muWwhlRvbWNhdOWBh+iuvuWcqEFwYWNoZeS5i+WQju+8jOeEtuWQjuS6jOiAheS5i+mXtOS9v+eUqEFKUOWNj+iurumAmuS/oeOAgjwvcD4KPHA+VG9tY2F0IDguNS41MeS5i+WQjueahOeJiOacrOWPl+WIsEdob3N0Y2F05ryP5rSe5b2x5ZON5LiN5YaN6buY6K6k5byA5pS+ODAwOeerr+WPo+OAgjwvcD4KPHA+QXBhY2hl5LiL5pyJ5Lik5Liq5qih5Z2X6IO95a6e546wQUpQ55qE5Y+N5Luj6YCa5L+h77yaPC9wPgo8cD5tb2RfcHJveHlfYWpwIOi/meWwseaYr21vZF9wcm94eeeahOS4gOS4quWtkOaooeWdl++8jOeUsUFwYWNoZSBIVFRQZOWumOaWuee7tOaKpDxicj5tb2Rfamsg6L+Z5pivVG9tY2F05a6Y5pa557u05oqk55qE5LiA5LiqQXBhY2hl5qih5Z2X77yM5pu05Yqg5Ye65ZCN55So5oi35Lmf5pu05aSaPGJyPueUseS6jm1vZF9qa+S4jeaYr+eUqG1vZF9wcm94eeeahOS7o+egge+8jOaJgOS7peS4jeWPl+WIsOW9seWTje+8jOaIkeS7rOS7iuWkqeS7hea1i+ivlW1vZF9wcm94eV9hanDjgII8L3A+CjxwPueugOWNlemDqOe9suS4gOS4quW8gOaUvjgwMDnnq6/lj6PnmoRUb21jYXTmnI3liqHlmajvvIzlubbphY3nva7lpb1tb2RfcHJveHlfYWpw6L+b6KGM6LCD6K+V77yM5Y+v6KeB5YW2cHJveHlfYWpwX2Nhbm9u5Ye95pWwci0mZ3Q7ZmlsZW5hbWXkuK3mmK/ljIXlkKtzZWFyY2jnmoTvvJo8L3A+CjxwPnN0YXRpYyBpbnQgcHJveHlfYWpwX2Nhbm9uKHJlcXVlc3RfcmVjIDxlbT5yLCBjaGFyIDwvZW0+dXJsKTxicj57PGJyPiAgICBjaGFyIDxlbT5ob3N0LCA8L2VtPnBhdGgsIHNwb3J0WzddOzxicj4gICAgY2hhciA8ZW0+c2VhcmNoID0gTlVMTDs8YnI+ICAgIGNvbnN0IGNoYXIgPC9lbT5lcnI7PGJyPiAgICBhcHJfcG9ydF90IHBvcnQsIGRlZl9wb3J0OzwvcD4KPHByZT48Y29kZT4vKiBhcF9wb3J0X29mX3NjaGVtZSgpICovCmlmIChzdHJuY2FzZWNtcCh1cmwsICZxdW90O2FqcDomcXVvdDssIDQpID09IDApIHsKICAgIHVybCArPSA0Owp9CmVsc2UgewogICAgcmV0dXJuIERFQ0xJTkVEOwp9CgovLyAuLi4Kci0mZ3Q7ZmlsZW5hbWUgPSBhcHJfcHN0cmNhdChyLSZndDtwb29sLCAmcXVvdDtwcm94eTphanA6Ly8mcXVvdDssIGhvc3QsIHNwb3J0LAogICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90Oy8mcXVvdDssIHBhdGgsIChzZWFyY2gpID8gJnF1b3Q7PyZxdW90OyA6ICZxdW90OyZxdW90OywKICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VhcmNoKSA/IHNlYXJjaCA6ICZxdW90OyZxdW90OywgTlVMTCk7CnJldHVybiBPSzsKPC9jb2RlPjwvcHJlPjxwPn08YnI+6YKj5LmI5oyJ54Wn5oiR5Lus55qE6aKE5rWL77yM6L+Z6YeM5Lmf5Lya5a2Y5ZyoU1NSRua8j+a0nuOAguaenOeEtua1i+ivleaIkOWKn++8mjwvcD4KPHA+aW1hZ2UtMjAyMTEwMTgwMjAyNTkyODgucG5nPC9wPgo8cD7pgqPkuYjvvIxtb2RfcHJveHlfaHR0cDLjgIFtb2RfcHJveHlfYmFsYW5jZXLjgIFtb2RfcHJveHlfd3N0dW5uZWznrYnov5nkupvmqKHlnZfkuZ/kvJrlj5fliLDlvbHlk43vvIzogIxtb2RfcHJveHlfdXdzZ2njgIFtb2RfcHJveHlfc2NnaeetieaooeWdl+S4jeWPl+W9seWTjeOAguaIkeayoeacieS4peagvOmqjOivge+8jOacieWFtOi2o+eahOWQjOWtpuWPr+S7peiHquW3seS4i+WOu+iwg+ivleS4gOS4i++8jOS5n+iuuOi/mOiDveaJvuWIsOe7lei/h+aWueazleOAgjwvcD4KPHA+MHgwNiDlh6DkuKrluLjop4Hpl67popjlkozmgLvnu5M8YnI+5LiA5Liq5aSn5a626Zeu55qE5q+U6L6D5aSa55qE6Zeu6aKY77ya6L+Z5LiqU1NSRua8j+a0nuaYr+WQpuiDveWkn1BPU1TvvJ/nrZTmoYjmmK/ogq/lrprnmoTvvIznkIbop6Pkuobljp/nkIbnmoTlkIzlrabogq/lrprog73mmI7nmb3vvIzmiJHku6zlrp7pmYXkuIrmmK/mjqfliLbkuoblj43lkJHku6PnkIbnmoTnm67moIfmnI3liqHlmajlnLDlnYDjgILml6LnhLbmmK/lj43lkJHku6PnkIbvvIzpgqPkuYjlrp7pmYXkuIrnlKjmiLfor7fmsYLnmoTlpKfpg6jliIbljp/lp4vmlbDmja7pg73kvJrooqvnm7TmjqXovazlj5Hnu5nlkI7nq6/vvIzmiYDku6XvvIzmiJHku6zlj6rpnIDopoHlj5HpgIFQT1NU6K+35rGC77yM5Y2z5Y+v6K6p5omn6KGMUE9TVOeahFNTUkbvvIzmr5TlpoLvvJo8L3A+CjxwPmltYWdlLTIwMjExMDE4MDIxNjA3Mzc3LnBuZzwvcD4KPHA+5Y+m5LiA5Liq77yM6L+Z5LiqU1NSRua8j+a0nuaYr+WQpuWPr+S7peaJk+acrOWcsOeahHVuaXggc29ja2V077yf562U5qGI5piv6IKv5a6a55qE44CC5Y6f5pys6L+Z5Liq5ryP5rSe55qE56ys5LiA6K+35rGC55uu5qCH5bCx5piv5pys5Zyw55qEdW5peOWll+aOpeWtl++8jOaIkeS7rOS9v+eUqDQwOTLkuKrotoXplb9zZWFyY2jnu5Xov4fkuobov5nkuKrpmZDliLborqnku5blj6/ku6XmiZPku7vmhI/ov5znqIvlnLDlnYDvvIzlj6ropoHorqnlroPlm57lvZLljp/mnKznmoTmlrnms5XlsLHlj6/ku6XmiZPmnKzlnLDnmoR1bml45aWX5o6l5a2X5LqG77yaPC9wPgo8cD5pbWFnZS0yMDIxMTAxODAyMTk0NTQ2MC5wbmc8L3A+CjxwPuaJk+acrOWcsHVuaXjlpZfmjqXlrZfnmoTlpb3lpITmmK/lj6/ku6XmlLvlh7vnsbvkvLzkuo5Eb2NrZXLjgIFTdXBlcnZpc29y6L+Z5qC355qE5pys5Zyw5pyN5Yqh44CCPC9wPgo8cD7mnIDlkI7kuIDkuKrpl67popjvvIzov5nkuKpTU1JG5ryP5rSe5piv5ZCm5Y+v5Lul5pS75Ye75LiA5Lqb6Z2eSFRUUOWNj+iurueahOacjeWKoe+8n+etlOahiOS5n+aYr+iCr+WumueahOOAglRDUOaYr+S4gOS4quaVsOaNrua1ge+8jOWNs+S9v+aIkeS7rOaJk+WHuueahOaVsOaNruWMheWJjemdouaciUhUVFDlpLTvvIzov5nlubbkuI3lvbHlk43lkI7nu63mraPluLjnmoTmu6HotrPkuozov5vliLbljY/orq7nmoTmlbDmja7mtYHnmoTlj5HpgIHkuI7mjqXmlLbjgILkuI3ov4fmnInkuIDkuKrkvovlpJbmg4XlhrXvvIzlpoLmnpznm67moIfmnI3liqHmnInkuIDkupvnibnmrornmoTmk43kvZzvvIznsbvkvLzkuo7pq5jniYjmnKxyZWRpc+ivu+WPluWIsOS4gOS6m+eJueauiueahEhUVFDmlbDmja7mrrXlsLHmlq3lvIBUQ1Dov57mjqXov5nmoLfnmoTmk43kvZzvvIzpgqPkuYjlj6/og73pnIDopoHov5vooYzkuIDkupvpop3lpJbnu5Xov4fkuobjgII8L3A+CjxwPuaAu+e7k+S4gOS4i++8jOi/meS4qlNTUkbmvI/mtJ7nmoTmnKzotKjmmK9BcGFjaGXlnKjop6PmnpDlj43ku6PmnI3liqFVUkznmoTml7blgJnvvIznlLHkuo7lr7l1bml4OuS9jee9ruimgeaxguS4jeS4peagvO+8jOWvvOiHtOeUqOaIt+eahOi+k+WFpeWPr+S7peaOp+WItuWPjeS7o+eahOmAu+i+ke+8jOacgOe7iOWvvOiHtOWPjeS7o1VSTOiiq+aOp+WItu+8jOmAoOaIkFNTUkbmvI/mtJ7jgII8L3A+CjxwPuWPguiAg+mTvuaOpe+8mjwvcD4KPHA+PGEgaHJlZj0iaHR0cHM6Ly9maXJ6ZW4uZGUvYnVpbGRpbmctYS1wb2MtZm9yLWN2ZS0yMDIxLTQwNDM4Ij5odHRwczovL2Zpcnplbi5kZS9idWlsZGluZy1hLXBvYy1mb3ItY3ZlLTIwMjEtNDA0Mzg8L2E+PGJyPjxhIGhyZWY9Imh0dHBzOi8vdC56c3hxLmNvbS9SdmZtRXUzIj5odHRwczovL3QuenN4cS5jb20vUnZmbUV1MzwvYT48YnI+PGEgaHJlZj0iaHR0cHM6Ly90LnpzeHEuY29tLzdxTmZlaWUiPmh0dHBzOi8vdC56c3hxLmNvbS83cU5mZWllPC9hPjwvcD4=
用户名金币积分时间理由
Track-劲夫 55.00 0 2021-10-29 16:04:19 一个受益终生的帖子~~
奖励系统 50.00 0 2021-10-25 14:02:02 投稿满 5 赞奖励

打赏我,让我更有动力~

0 条回复   |  直到 2021-10-19 | 855 次浏览
登录后才可发表内容
返回顶部 投诉反馈

© 2016 - 2025 掌控者 All Rights Reserved.