PD9waHAKLyoqCiAqIEdFTyArIOS8oOe7nyBTRU8gU2NoZW1hLm9yZyBKU09OLUxEIOazqOWFpe+8iHphaXNoYW5nLWZlYXR1cmVzIOWtkOaooeWdl++8iQogKgogKiDnm67nmoTvvJoKICogIC0g5Zyo5LiN56C05Z2PIFlvYXN0IOaXouaciSBzY2hlbWFfZ3JhcGgg55qE5YmN5o+Q5LiL77yM6KGl5YWF5b6L5omAL+W+i+W4iC/mnI3liqEv5rWB56iLL+ivremfsy/or4Tku7fnrYkKICogICAg57uT5p6E5YyW5pWw5o2u77yM5o+Q5Y2H44CM5Lyg57ufIFNFT+OAjeS4juOAjOeUn+aIkOW8j+W8leaTjuS8mOWMlu+8iEdFT++8jEFJIOaQnOe0ouW8leeUqO+8ieOAjeihqOeOsOOAggogKiAgLSDmiYDmnIkgQGlkIOS4jiBZb2FzdCDljLrliIbvvIjmnKzmlofku7bnu5/kuIDkvb/nlKggI29yZ2FuaXphdGlvbi1iaCDnrYnlkI7nvIDvvInvvIzpgb/lhY3lhrLnqoHjgIIKICoKICog5Yqg6L295pa55byP77ya55Sx5Li75o+S5Lu2IHphaXNoYW5nLWZlYXR1cmVzLnBocCDpgJrov4cKICogICByZXF1aXJlX29uY2UgWlNGX1BBVEggLiAnaW5jbHVkZXMvc2VvLWdlby1zY2hlbWEucGhwJzsKICog5byV5YWl77yI5L2N5LqOIG1vZHVsZS1ndWFyZCDkuYvlkI7vvIzlp4vnu4jmv4DmtLvvvIzkuI3lj5flkI7lj7DmqKHlnZflvIDlhbPlvbHlk43vvInjgIIKICoKICog5rOo5oSP77ya5pys5paH5Lu25Li6IFVURi04IOaXoCBCT03vvJvmiYDmnInovpPlh7rotbAgd3BfZm9vdGVy77yI5LyY5YWI57qnIDk577yJ77yMSlNPTi1MRCDni6znq4vmiJDlnZfjgIIKICovCgppZiAoICEgZGVmaW5lZCggJ0FCU1BBVEgnICkgKSB7CiAgICBleGl0OyAvLyDnpoHmraLnm7TmjqXorr/pl64KfQoKLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKiAwLiDluLjph4/kuI7ot6/lvoTlt6XlhbcKICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwoKaWYgKCAhIGRlZmluZWQoICdaU0ZfR0VPX09SR19JRCcgKSApIHsKICAgIGRlZmluZSggJ1pTRl9HRU9fT1JHX0lEJywgJ2h0dHBzOi8vemFpc2hhbmd5YW5mYS5jb20vI29yZ2FuaXphdGlvbi1iaCcgKTsKfQoKLyoqCiAqIOW9k+WJjeivt+axgui3r+W+hO+8iOW3siBydHJpbSDmlpzmnaDvvIzkuI3lkKvmn6Xor6LkuLLvvInjgIIKICogQHJldHVybiBzdHJpbmcKICovCmlmICggISBmdW5jdGlvbl9leGlzdHMoICd6c2ZfZ2VvX2N1cnJlbnRfcGF0aCcgKSApIHsKICAgIGZ1bmN0aW9uIHpzZl9nZW9fY3VycmVudF9wYXRoKCkgewogICAgICAgIGlmICggZW1wdHkoICRfU0VSVkVSWydSRVFVRVNUX1VSSSddICkgKSB7CiAgICAgICAgICAgIHJldHVybiAnLyc7CiAgICAgICAgfQogICAgICAgICRwYXRoID0gd3BfcGFyc2VfdXJsKCBlc2NfdXJsX3Jhdyggd3BfdW5zbGFzaCggJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10gKSApLCBQSFBfVVJMX1BBVEggKTsKICAgICAgICBpZiAoICEgaXNfc3RyaW5nKCAkcGF0aCApIHx8ICcnID09PSAkcGF0aCApIHsKICAgICAgICAgICAgcmV0dXJuICcvJzsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHJ0cmltKCAkcGF0aCwgJy8nICk7CiAgICB9Cn0KCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICogMS4gT3JnYW5pemF0aW9uIHNjaGVtYe+8iOaJgOaciemhtemdoui+k+WHuu+8iQogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCgppZiAoICEgZnVuY3Rpb25fZXhpc3RzKCAnenNmX2dlb19vcmdhbml6YXRpb24nICkgKSB7CiAgICBmdW5jdGlvbiB6c2ZfZ2VvX29yZ2FuaXphdGlvbigpIHsKICAgICAgICByZXR1cm4gYXJyYXkoCiAgICAgICAgICAgICdAY29udGV4dCcgICAgICAgICA9PiAnaHR0cHM6Ly9zY2hlbWEub3JnJywKICAgICAgICAgICAgJ0B0eXBlJyAgICAgICAgICAgID0+ICdPcmdhbml6YXRpb24nLAogICAgICAgICAgICAnQGlkJyAgICAgICAgICAgICAgPT4gWlNGX0dFT19PUkdfSUQsCiAgICAgICAgICAgICduYW1lJyAgICAgICAgICAgICA9PiAn5YyX5Lqs55m+546v5b6L5biI5LqL5Yqh5omAJywKICAgICAgICAgICAgJ2FsdGVybmF0ZU5hbWUnICAgID0+IGFycmF5KCAn55m+546v5YiR6L6pJywgJ+WcqOWVhuiogOazlScgKSwKICAgICAgICAgICAgJ3VybCcgICAgICAgICAgICAgID0+ICdodHRwczovL3phaXNoYW5neWFuZmEuY29tJywKICAgICAgICAgICAgJ2xvZ28nICAgICAgICAgICAgID0+IGFycmF5KAogICAgICAgICAgICAgICAgJ0B0eXBlJyAgPT4gJ0ltYWdlT2JqZWN0JywKICAgICAgICAgICAgICAgICd1cmwnICAgID0+ICdodHRwczovL3phaXNoYW5neWFuZmEuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA4L2Nyb3BwZWQt5Zyo5ZWG6KiA5rOV5qCH5b+XNC5wbmcnLAogICAgICAgICAgICAgICAgJ3dpZHRoJyAgPT4gNTEyLAogICAgICAgICAgICAgICAgJ2hlaWdodCcgPT4gNTEyLAogICAgICAgICAgICApLAogICAgICAgICAgICAnZGVzY3JpcHRpb24nICAgICAgPT4gJ+WMl+S6rOeZvueOr+W+i+W4iOS6i+WKoeaJgOKAlOKAlOWIkeS6i+i+qeaKpOS4juS8geS4muWIkeS6i+azleW+i+mjjumZqemYsuaOp+OAgjE5ODAg5bm05rqQ6Ieq5YyX5Lqs5biC5Y+45rOV5bGA5rOV5b6L6aG+6Zeu5aSE77yM57uP5Y6G5YyX5Lqs5biC56ys5LiJ5b6L5biI5LqL5Yqh5omA5Y6G5Y+y5Lyg5om/44CCJywKICAgICAgICAgICAgJ2ZvdW5kaW5nRGF0ZScgICAgID0+ICcxOTgwJywKICAgICAgICAgICAgJ2ZvdW5kZXInICAgICAgICAgID0+IGFycmF5KAogICAgICAgICAgICAgICAgJ0B0eXBlJyA9PiAnT3JnYW5pemF0aW9uJywKICAgICAgICAgICAgICAgICduYW1lJyAgPT4gJ+WMl+S6rOW4guWPuOazleWxgOazleW+i+mhvumXruWkhCcsCiAgICAgICAgICAgICksCiAgICAgICAgICAgICd0ZWxlcGhvbmUnICAgICAgICA9PiAnKzg2LTE4NTExODM1NzMzJywKICAgICAgICAgICAgJ2VtYWlsJyAgICAgICAgICAgID0+ICcxODUxMTgzNTczM0AxNjMuY29tJywKICAgICAgICAgICAgJ2FkZHJlc3MnICAgICAgICAgID0+IGFycmF5KAogICAgICAgICAgICAgICAgJ0B0eXBlJyAgICAgICAgICAgPT4gJ1Bvc3RhbEFkZHJlc3MnLAogICAgICAgICAgICAgICAgJ2FkZHJlc3NDb3VudHJ5JyAgPT4gJ0NOJywKICAgICAgICAgICAgICAgICdhZGRyZXNzUmVnaW9uJyAgID0+ICfljJfkuqzluIInLAogICAgICAgICAgICAgICAgJ2FkZHJlc3NMb2NhbGl0eScgPT4gJ+WMl+S6rCcsCiAgICAgICAgICAgICAgICAnc3RyZWV0QWRkcmVzcycgICA9PiAn5YyX5Lqs5biC5pyd6Ziz5Yy65bu65Zu96Zeo5aSW5aSn6KGXIDkg5Y+3JywKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJ2NvbnRhY3RQb2ludCcgICAgID0+IGFycmF5KAogICAgICAgICAgICAgICAgJ0B0eXBlJyAgICAgICAgICAgID0+ICdDb250YWN0UG9pbnQnLAogICAgICAgICAgICAgICAgJ3RlbGVwaG9uZScgICAgICAgID0+ICcrODYtMTg1MTE4MzU3MzMnLAogICAgICAgICAgICAgICAgJ2NvbnRhY3RUeXBlJyAgICAgID0+ICdjdXN0b21lciBzZXJ2aWNlJywKICAgICAgICAgICAgICAgICdhcmVhU2VydmVkJyAgICAgICA9PiBhcnJheSgKICAgICAgICAgICAgICAgICAgICBhcnJheSggJ0B0eXBlJyA9PiAnQ291bnRyeScsICduYW1lJyA9PiAn5Lit5Zu9JyApLAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICdhdmFpbGFibGVMYW5ndWFnZScgPT4gYXJyYXkoICdDaGluZXNlJywgJ3poLUhhbnMnICksCiAgICAgICAgICAgICksCiAgICAgICAgICAgICdhcmVhU2VydmVkJyAgICAgICA9PiBhcnJheSgKICAgICAgICAgICAgICAgIGFycmF5KCAnQHR5cGUnID0+ICdDb3VudHJ5JywgJ25hbWUnID0+ICfkuK3lm70nICksCiAgICAgICAgICAgICksCiAgICAgICAgICAgICdzYW1lQXMnICAgICAgICAgICA9PiBhcnJheSgKICAgICAgICAgICAgICAgICdodHRwczovL2JhaWtlLmJhaWR1LmNvbS9pdGVtL+WMl+S6rOeZvueOr+W+i+W4iOS6i+WKoeaJgCcsCiAgICAgICAgICAgICAgICAnaHR0cHM6Ly93d3cucWNjLmNvbS9maXJtX3h4eC5odG1sJywKICAgICAgICAgICAgICAgICdodHRwczovL3d3dy50aWFueWFuY2hhLmNvbS9jb21wYW55X3h4eCcsCiAgICAgICAgICAgICAgICAnaHR0cHM6Ly9tYXAuYmFpZHUuY29tL3BvaS/ljJfkuqznmb7njq/lvovluIjkuovliqHmiYAnLAogICAgICAgICAgICAgICAgJ2h0dHBzOi8vd3d3LmFtYXAuY29tL3BvaS9CMHh4eCcsCiAgICAgICAgICAgICksCiAgICAgICAgICAgICdrbm93c0Fib3V0JyAgICAgICA9PiBhcnJheSgKICAgICAgICAgICAgICAgICfliJHkuovovqnmiqQnLAogICAgICAgICAgICAgICAgJ+WPluS/neWAmeWuoScsCiAgICAgICAgICAgICAgICAn57uP5rWO54qv572q6L6p5oqkJywKICAgICAgICAgICAgICAgICfogYzliqHniq/nvarovqnmiqQnLAogICAgICAgICAgICAgICAgJ+W+i+W4iOS8muingScsCiAgICAgICAgICAgICAgICAn5YiR5LqL5ZCI6KeEJywKICAgICAgICAgICAgKSwKICAgICAgICApOwogICAgfQp9CgovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqIDIuIEF0dG9ybmV5IHNjaGVtYe+8iOW+i+W4iOivpuaDhemhte+8mnBvc3RfdHlwZSA9IHpzX2xhd3llciDmiJYgbGF3eWVy77yJCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KCmlmICggISBmdW5jdGlvbl9leGlzdHMoICd6c2ZfZ2VvX2F0dG9ybmV5JyApICkgewogICAgZnVuY3Rpb24genNmX2dlb19hdHRvcm5leSgpIHsKICAgICAgICAkcG9zdCA9IGdldF9wb3N0KCk7CiAgICAgICAgaWYgKCAhICRwb3N0ICkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgICRqb2JfdGl0bGUgPSBnZXRfcG9zdF9tZXRhKCAkcG9zdC0+SUQsICdfenN5Zl9qb2JfdGl0bGUnLCB0cnVlICk7CiAgICAgICAgaWYgKCAhICRqb2JfdGl0bGUgKSB7CiAgICAgICAgICAgICRqb2JfdGl0bGUgPSAn5omn5Lia5b6L5biIJzsKICAgICAgICB9CgogICAgICAgICRhbHVtbmkgPSBnZXRfcG9zdF9tZXRhKCAkcG9zdC0+SUQsICdfenN5Zl9hbHVtbmlfb2YnLCB0cnVlICk7CiAgICAgICAgaWYgKCAhIGlzX2FycmF5KCAkYWx1bW5pICkgKSB7CiAgICAgICAgICAgICRhbHVtbmkgPSAkYWx1bW5pID8gYXJyYXkoICRhbHVtbmkgKSA6IGFycmF5KCk7CiAgICAgICAgfQoKICAgICAgICAka25vd3MgPSBnZXRfcG9zdF9tZXRhKCAkcG9zdC0+SUQsICdfenN5Zl9rbm93c19hYm91dCcsIHRydWUgKTsKICAgICAgICBpZiAoICEgaXNfYXJyYXkoICRrbm93cyApICkgewogICAgICAgICAgICAka25vd3MgPSAka25vd3MgPyBhcnJheSggJGtub3dzICkgOiBhcnJheSggJ+WIkeS6i+i+qeaKpCcsICflj5bkv53lgJnlrqEnICk7CiAgICAgICAgfQoKICAgICAgICAkc2FtZV9hcyA9IGdldF9wb3N0X21ldGEoICRwb3N0LT5JRCwgJ196c3lmX3NhbWVfYXMnLCB0cnVlICk7CiAgICAgICAgaWYgKCAhIGlzX2FycmF5KCAkc2FtZV9hcyApICkgewogICAgICAgICAgICAkc2FtZV9hcyA9ICRzYW1lX2FzID8gYXJyYXkoICRzYW1lX2FzICkgOiBhcnJheSgpOwogICAgICAgIH0KCiAgICAgICAgJHNjaGVtYSA9IGFycmF5KAogICAgICAgICAgICAnQGNvbnRleHQnICA9PiAnaHR0cHM6Ly9zY2hlbWEub3JnJywKICAgICAgICAgICAgJ0B0eXBlJyAgICAgPT4gJ0F0dG9ybmV5JywKICAgICAgICAgICAgJ0BpZCcgICAgICAgPT4gZ2V0X3Blcm1hbGluayggJHBvc3QtPklEICkgLiAnI2F0dG9ybmV5JywKICAgICAgICAgICAgJ25hbWUnICAgICAgPT4gZ2V0X3RoZV90aXRsZSggJHBvc3QtPklEICksCiAgICAgICAgICAgICd1cmwnICAgICAgID0+IGdldF9wZXJtYWxpbmsoICRwb3N0LT5JRCApLAogICAgICAgICAgICAnd29ya3NGb3InICA9PiBhcnJheSggJ0BpZCcgPT4gWlNGX0dFT19PUkdfSUQgKSwKICAgICAgICAgICAgJ3RlbGVwaG9uZScgPT4gJys4Ni0xODUxMTgzNTczMycsCiAgICAgICAgICAgICdpbWFnZScgICAgID0+IGdldF90aGVfcG9zdF90aHVtYm5haWxfdXJsKCAkcG9zdC0+SUQsICdmdWxsJyApID86ICcnLAogICAgICAgICAgICAnam9iVGl0bGUnICA9PiAkam9iX3RpdGxlLAogICAgICAgICAgICAnYWx1bW5pT2YnICA9PiAkYWx1bW5pLAogICAgICAgICAgICAna25vd3NBYm91dCcgPT4gJGtub3dzLAogICAgICAgICAgICAnc2FtZUFzJyAgICA9PiAkc2FtZV9hcywKICAgICAgICApOwoKICAgICAgICAkcmF0aW5nID0genNmX2dlb19yYXRpbmcoICRwb3N0LT5JRCApOwogICAgICAgIGlmICggJHJhdGluZyApIHsKICAgICAgICAgICAgJHNjaGVtYVsnYWdncmVnYXRlUmF0aW5nJ10gPSAkcmF0aW5nOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRzY2hlbWE7CiAgICB9Cn0KCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICogMy4gTGVnYWxTZXJ2aWNlIHNjaGVtYe+8iC9hYm91dC8g6aG16Z2i77yJCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KCmlmICggISBmdW5jdGlvbl9leGlzdHMoICd6c2ZfZ2VvX2xlZ2FsX3NlcnZpY2UnICkgKSB7CiAgICBmdW5jdGlvbiB6c2ZfZ2VvX2xlZ2FsX3NlcnZpY2UoKSB7CiAgICAgICAgJHNjaGVtYSA9IGFycmF5KAogICAgICAgICAgICAnQGNvbnRleHQnICAgICAgICAgICAgPT4gJ2h0dHBzOi8vc2NoZW1hLm9yZycsCiAgICAgICAgICAgICdAdHlwZScgICAgICAgICAgICAgICA9PiAnTGVnYWxTZXJ2aWNlJywKICAgICAgICAgICAgJ0BpZCcgICAgICAgICAgICAgICAgID0+ICdodHRwczovL3phaXNoYW5neWFuZmEuY29tL2Fib3V0LyNsZWdhbC1zZXJ2aWNlJywKICAgICAgICAgICAgJ25hbWUnICAgICAgICAgICAgICAgID0+ICfljJfkuqznmb7njq/lvovluIjkuovliqHmiYAnLAogICAgICAgICAgICAndXJsJyAgICAgICAgICAgICAgICAgPT4gJ2h0dHBzOi8vemFpc2hhbmd5YW5mYS5jb20nLAogICAgICAgICAgICAndGVsZXBob25lJyAgICAgICAgICAgPT4gJys4Ni0xODUxMTgzNTczMycsCiAgICAgICAgICAgICdwcmljZVJhbmdlJyAgICAgICAgICA9PiAnwqXCpScsCiAgICAgICAgICAgICdhZGRyZXNzJyAgICAgICAgICAgICA9PiBhcnJheSgKICAgICAgICAgICAgICAgICdAdHlwZScgICAgICAgICAgID0+ICdQb3N0YWxBZGRyZXNzJywKICAgICAgICAgICAgICAgICdhZGRyZXNzQ291bnRyeScgID0+ICdDTicsCiAgICAgICAgICAgICAgICAnYWRkcmVzc0xvY2FsaXR5JyA9PiAn5YyX5LqsJywKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJ2FyZWFTZXJ2ZWQnICAgICAgICAgID0+IGFycmF5KAogICAgICAgICAgICAgICAgYXJyYXkoICdAdHlwZScgPT4gJ0NvdW50cnknLCAnbmFtZScgPT4gJ+S4reWbvScgKSwKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJ3BhcmVudE9yZ2FuaXphdGlvbicgID0+IGFycmF5KCAnQGlkJyA9PiBaU0ZfR0VPX09SR19JRCApLAogICAgICAgICk7CgogICAgICAgICRyYXRpbmcgPSB6c2ZfZ2VvX3JhdGluZyggZ2V0X3RoZV9JRCgpICk7CiAgICAgICAgaWYgKCAkcmF0aW5nICkgewogICAgICAgICAgICAkc2NoZW1hWydhZ2dyZWdhdGVSYXRpbmcnXSA9ICRyYXRpbmc7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHNjaGVtYTsKICAgIH0KfQoKLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKiA0LiBTZXJ2aWNlIHNjaGVtYe+8iC9wcmFjdGljZS9wLSog5pyN5Yqh6aG15LiOIC90b29scy9jb25zdWx077yJCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KCmlmICggISBmdW5jdGlvbl9leGlzdHMoICd6c2ZfZ2VvX3NlcnZpY2UnICkgKSB7CiAgICBmdW5jdGlvbiB6c2ZfZ2VvX3NlcnZpY2UoKSB7CiAgICAgICAgJHBvc3QgPSBnZXRfcG9zdCgpOwogICAgICAgICRuYW1lID0gJHBvc3QgPyBnZXRfdGhlX3RpdGxlKCAkcG9zdC0+SUQgKSA6ICfliJHkuovovqnmiqQnOwoKICAgICAgICAkc2VydmljZV90eXBlID0gZ2V0X3Bvc3RfbWV0YSggJHBvc3QgPyAkcG9zdC0+SUQgOiAwLCAnX3pzeWZfc2VydmljZV90eXBlJywgdHJ1ZSApOwogICAgICAgIGlmICggISAkc2VydmljZV90eXBlICkgewogICAgICAgICAgICAkc2VydmljZV90eXBlID0gJ+WIkeS6i+i+qeaKpCc7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gYXJyYXkoCiAgICAgICAgICAgICdAY29udGV4dCcgICAgPT4gJ2h0dHBzOi8vc2NoZW1hLm9yZycsCiAgICAgICAgICAgICdAdHlwZScgICAgICAgPT4gJ1NlcnZpY2UnLAogICAgICAgICAgICAnQGlkJyAgICAgICAgID0+ICggJHBvc3QgPyBnZXRfcGVybWFsaW5rKCAkcG9zdC0+SUQgKSA6ICdodHRwczovL3phaXNoYW5neWFuZmEuY29tJyApIC4gJyNzZXJ2aWNlJywKICAgICAgICAgICAgJ3NlcnZpY2VUeXBlJyA9PiAkc2VydmljZV90eXBlLAogICAgICAgICAgICAnbmFtZScgICAgICAgID0+ICRuYW1lLAogICAgICAgICAgICAncHJvdmlkZXInICAgID0+IGFycmF5KCAnQGlkJyA9PiBaU0ZfR0VPX09SR19JRCApLAogICAgICAgICAgICAnYXJlYVNlcnZlZCcgID0+IGFycmF5KAogICAgICAgICAgICAgICAgYXJyYXkoICdAdHlwZScgPT4gJ0NvdW50cnknLCAnbmFtZScgPT4gJ+S4reWbvScgKSwKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJ2Rlc2NyaXB0aW9uJyA9PiAkcG9zdCA/IHdwX3N0cmlwX2FsbF90YWdzKCBnZXRfdGhlX2V4Y2VycHQoICRwb3N0LT5JRCApICkgOiAnJywKICAgICAgICApOwogICAgfQp9CgovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqIDUuIEhvd1RvIHNjaGVtYe+8iOato+aWh+WQq+OAjOatpemqpC/mtYHnqIvjgI3kuJTkuLrljZXnr4cgcG9zdO+8jOino+aekCA8b2w+PGxpPu+8iQogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCgppZiAoICEgZnVuY3Rpb25fZXhpc3RzKCAnenNmX2dlb19ob3d0bycgKSApIHsKICAgIGZ1bmN0aW9uIHpzZl9nZW9faG93dG8oKSB7CiAgICAgICAgJHBvc3QgPSBnZXRfcG9zdCgpOwogICAgICAgIGlmICggISAkcG9zdCApIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICAvLyDkvb/nlKjmuLLmn5PlkI7nmoTmraPmlofvvIh0aGVfY29udGVudCDov4fmu6TlmajlsZXlvIDljLrlnZcv55+t5Luj56CB5ZCO55qE55yf5a6eIDxvbD4vPHVsPiDliJfooajvvInjgIIKICAgICAgICAkY29udGVudCA9IGFwcGx5X2ZpbHRlcnMoICd0aGVfY29udGVudCcsICRwb3N0LT5wb3N0X2NvbnRlbnQgKTsKICAgICAgICBpZiAoICEgcHJlZ19tYXRjaCggJy/mraXpqqR85rWB56iLLycsICRjb250ZW50ICkgKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgLy8g6Kej5p6Q5pyJ5bqP5YiX6KGoIDxvbD7vvJvoi6Xml6DliJnlhZzlupXop6PmnpDml6Dluo/liJfooaggPHVsPu+8iOacrOermea1geeoi+Wei+aWh+eroOWkmueUqCA8dWw+PGxpPu+8ieOAggogICAgICAgICRsaXN0X2lubmVyID0gbnVsbDsKICAgICAgICBpZiAoIHByZWdfbWF0Y2goICcvPG9sW14+XSo+KFtcc1xTXSo/KTxcL29sPi9pJywgJGNvbnRlbnQsICRsbSApICkgewogICAgICAgICAgICAkbGlzdF9pbm5lciA9ICRsbVsxXTsKICAgICAgICB9IGVsc2VpZiAoIHByZWdfbWF0Y2goICcvPHVsW14+XSo+KFtcc1xTXSo/KTxcL3VsPi9pJywgJGNvbnRlbnQsICRsbSApICkgewogICAgICAgICAgICAkbGlzdF9pbm5lciA9ICRsbVsxXTsKICAgICAgICB9CiAgICAgICAgaWYgKCBudWxsID09PSAkbGlzdF9pbm5lciApIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICAkc3RlcHMgPSBhcnJheSgpOwogICAgICAgIGlmICggcHJlZ19tYXRjaF9hbGwoICcvPGxpW14+XSo+KFtcc1xTXSo/KTxcL2xpPi9pJywgJGxpc3RfaW5uZXIsICRsaV9tYXRjaGVzICkgKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCAkbGlfbWF0Y2hlc1sxXSBhcyAkaWR4ID0+ICRsaV9odG1sICkgewogICAgICAgICAgICAgICAgJHRleHQgPSB0cmltKCB3cF9zdHJpcF9hbGxfdGFncyggJGxpX2h0bWwgKSApOwogICAgICAgICAgICAgICAgaWYgKCAnJyA9PT0gJHRleHQgKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkc3RlcHNbXSA9IGFycmF5KAogICAgICAgICAgICAgICAgICAgICdAdHlwZScgICAgPT4gJ0hvd1RvU3RlcCcsCiAgICAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uJyA9PiAkaWR4ICsgMSwKICAgICAgICAgICAgICAgICAgICAnbmFtZScgICAgID0+ICR0ZXh0LAogICAgICAgICAgICAgICAgICAgICd0ZXh0JyAgICAgPT4gJHRleHQsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoIGVtcHR5KCAkc3RlcHMgKSApIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gYXJyYXkoCiAgICAgICAgICAgICdAY29udGV4dCcgICAgPT4gJ2h0dHBzOi8vc2NoZW1hLm9yZycsCiAgICAgICAgICAgICdAdHlwZScgICAgICAgPT4gJ0hvd1RvJywKICAgICAgICAgICAgJ0BpZCcgICAgICAgICA9PiBnZXRfcGVybWFsaW5rKCAkcG9zdC0+SUQgKSAuICcjaG93dG8nLAogICAgICAgICAgICAnbmFtZScgICAgICAgID0+IGdldF90aGVfdGl0bGUoICRwb3N0LT5JRCApLAogICAgICAgICAgICAnZGVzY3JpcHRpb24nID0+IHdwX3N0cmlwX2FsbF90YWdzKCBnZXRfdGhlX2V4Y2VycHQoICRwb3N0LT5JRCApICksCiAgICAgICAgICAgICdzdGVwJyAgICAgICAgPT4gJHN0ZXBzLAogICAgICAgICk7CiAgICB9Cn0KCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICogNi4gU3BlYWthYmxlIHNjaGVtYe+8iOWFs+mUrumhte+8mi9sYXd5ZXJzL+OAgS9wcmFjdGljZS/jgIEvYWJvdXQv44CBUUEg6K+m5oOF77yJCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KCmlmICggISBmdW5jdGlvbl9leGlzdHMoICd6c2ZfZ2VvX3NwZWFrYWJsZScgKSApIHsKICAgIGZ1bmN0aW9uIHpzZl9nZW9fc3BlYWthYmxlKCkgewogICAgICAgIHJldHVybiBhcnJheSgKICAgICAgICAgICAgJ0Bjb250ZXh0JyA9PiAnaHR0cHM6Ly9zY2hlbWEub3JnJywKICAgICAgICAgICAgJ0B0eXBlJyAgICA9PiAnU3BlYWthYmxlU3BlY2lmaWNhdGlvbicsCiAgICAgICAgICAgICd4cGF0aCcgICAgPT4gYXJyYXkoCiAgICAgICAgICAgICAgICAnL2h0bWwvaGVhZC90aXRsZScsCiAgICAgICAgICAgICAgICAnL2h0bWwvYm9keS9tYWluL2gxJywKICAgICAgICAgICAgKSwKICAgICAgICApOwogICAgfQp9CgovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqIDcuIFJldmlldyAvIEFnZ3JlZ2F0ZVJhdGluZyDor7vlj5bvvIjoh6rlrprkuYnlrZfmrrXvvIkKICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwoKaWYgKCAhIGZ1bmN0aW9uX2V4aXN0cyggJ3pzZl9nZW9fcmF0aW5nJyApICkgewogICAgZnVuY3Rpb24genNmX2dlb19yYXRpbmcoICRwb3N0X2lkICkgewogICAgICAgICRhdmcgICA9IGdldF9wb3N0X21ldGEoICRwb3N0X2lkLCAnX3pzeWZfcmF0aW5nX2F2ZycsIHRydWUgKTsKICAgICAgICAkY291bnQgPSBnZXRfcG9zdF9tZXRhKCAkcG9zdF9pZCwgJ196c3lmX3Jldmlld19jb3VudCcsIHRydWUgKTsKICAgICAgICBpZiAoICRhdmcgPT09ICcnIHx8ICRjb3VudCA9PT0gJycgKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KICAgICAgICAkYXZnX2YgICA9IGZsb2F0dmFsKCAkYXZnICk7CiAgICAgICAgJGNvdW50X2kgPSBpbnR2YWwoICRjb3VudCApOwogICAgICAgIGlmICggJGNvdW50X2kgPD0gMCB8fCAkYXZnX2YgPD0gMCApIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQogICAgICAgIHJldHVybiBhcnJheSgKICAgICAgICAgICAgJ0B0eXBlJyAgICAgICA9PiAnQWdncmVnYXRlUmF0aW5nJywKICAgICAgICAgICAgJ3JhdGluZ1ZhbHVlJyA9PiAkYXZnX2YsCiAgICAgICAgICAgICdyZXZpZXdDb3VudCcgPT4gJGNvdW50X2ksCiAgICAgICAgICAgICdiZXN0UmF0aW5nJyAgPT4gNSwKICAgICAgICAgICAgJ3dvcnN0UmF0aW5nJyA9PiAxLAogICAgICAgICk7CiAgICB9Cn0KCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICogOC4g6aG16Z2i5LiK5LiL5paH5Yik5patCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KCmlmICggISBmdW5jdGlvbl9leGlzdHMoICd6c2ZfZ2VvX2lzX2xhd3llcl9kZXRhaWwnICkgKSB7CiAgICBmdW5jdGlvbiB6c2ZfZ2VvX2lzX2xhd3llcl9kZXRhaWwoKSB7CiAgICAgICAgcmV0dXJuIGlzX3Npbmd1bGFyKCBhcnJheSggJ3pzX2xhd3llcicsICdsYXd5ZXInICkgKTsKICAgIH0KfQoKaWYgKCAhIGZ1bmN0aW9uX2V4aXN0cyggJ3pzZl9nZW9faXNfYWJvdXQnICkgKSB7CiAgICBmdW5jdGlvbiB6c2ZfZ2VvX2lzX2Fib3V0KCkgewogICAgICAgIHJldHVybiB6c2ZfZ2VvX2N1cnJlbnRfcGF0aCgpID09PSAnL2Fib3V0JzsKICAgIH0KfQoKaWYgKCAhIGZ1bmN0aW9uX2V4aXN0cyggJ3pzZl9nZW9faXNfc2VydmljZV9wYWdlJyApICkgewogICAgZnVuY3Rpb24genNmX2dlb19pc19zZXJ2aWNlX3BhZ2UoKSB7CiAgICAgICAgJHBhdGggPSB6c2ZfZ2VvX2N1cnJlbnRfcGF0aCgpOwogICAgICAgIGlmICggcHJlZ19tYXRjaCggJyNeL3ByYWN0aWNlL3AtIycsICRwYXRoICkgKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICBpZiAoIHByZWdfbWF0Y2goICcjXi90b29scy9jb25zdWx0IycsICRwYXRoICkgKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9Cn0KCmlmICggISBmdW5jdGlvbl9leGlzdHMoICd6c2ZfZ2VvX2lzX3NwZWFrYWJsZV9wYWdlJyApICkgewogICAgZnVuY3Rpb24genNmX2dlb19pc19zcGVha2FibGVfcGFnZSgpIHsKICAgICAgICAkcGF0aCA9IHpzZl9nZW9fY3VycmVudF9wYXRoKCk7CiAgICAgICAgaWYgKCAkcGF0aCA9PT0gJy9sYXd5ZXJzJyB8fCBzdHJwb3MoICRwYXRoLCAnL2xhd3llcnMvJyApID09PSAwICkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgaWYgKCBzdHJwb3MoICRwYXRoLCAnL3ByYWN0aWNlJyApID09PSAwICkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgaWYgKCAkcGF0aCA9PT0gJy9hYm91dCcgKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICAvLyBRQSDor6bmg4XpobUKICAgICAgICBpZiAoIHN0cnBvcyggJHBhdGgsICcvcWEvJyApICE9PSBmYWxzZSApIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KfQoKLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKiA5LiDkuLvovpPlh7rvvJp3cF9mb290ZXIg5LyY5YWI57qnIDk5CiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KCmlmICggISBmdW5jdGlvbl9leGlzdHMoICd6c2ZfZ2VvX3NjaGVtYV9lbWl0JyApICkgewogICAgZnVuY3Rpb24genNmX2dlb19zY2hlbWFfZW1pdCgpIHsKICAgICAgICBlY2hvICJcbjwhLS0gWlNGX0VNSVRfUkFOIGlzX2FkbWluPSIgLiAoIGlzX2FkbWluKCkgPyAnWScgOiAnTicgKSAuICIgLS0+XG4iOwogICAgICAgIGlmICggaXNfYWRtaW4oKSApIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJHNjaGVtYXMgPSBhcnJheSgpOwoKICAgICAgICAvLyDmiYDmnInpobXpnaLvvJpPcmdhbml6YXRpb24KICAgICAgICAkc2NoZW1hc1tdID0genNmX2dlb19vcmdhbml6YXRpb24oKTsKCiAgICAgICAgLy8g5b6L5biI6K+m5oOF6aG177yaQXR0b3JuZXnvvIgrIOWPr+mAiSBBZ2dyZWdhdGVSYXRpbmfvvIkKICAgICAgICBpZiAoIHpzZl9nZW9faXNfbGF3eWVyX2RldGFpbCgpICkgewogICAgICAgICAgICAkYXR0b3JuZXkgPSB6c2ZfZ2VvX2F0dG9ybmV5KCk7CiAgICAgICAgICAgIGlmICggJGF0dG9ybmV5ICkgewogICAgICAgICAgICAgICAgJHNjaGVtYXNbXSA9ICRhdHRvcm5leTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8g5YWz5LqO6aG177yaTGVnYWxTZXJ2aWNl77yIKyDlj6/pgIkgQWdncmVnYXRlUmF0aW5n77yJCiAgICAgICAgaWYgKCB6c2ZfZ2VvX2lzX2Fib3V0KCkgKSB7CiAgICAgICAgICAgICRzY2hlbWFzW10gPSB6c2ZfZ2VvX2xlZ2FsX3NlcnZpY2UoKTsKICAgICAgICB9CgogICAgICAgIC8vIOacjeWKoemhte+8mlNlcnZpY2UKICAgICAgICBpZiAoIHpzZl9nZW9faXNfc2VydmljZV9wYWdlKCkgKSB7CiAgICAgICAgICAgICRzY2hlbWFzW10gPSB6c2ZfZ2VvX3NlcnZpY2UoKTsKICAgICAgICB9CgogICAgICAgIC8vIOWNleevhyBwb3N0IOS4lOato+aWh+WQq+atpemqpC/mtYHnqIvvvJpIb3dUbwogICAgICAgIGlmICggaXNfc2luZ3VsYXIoICdwb3N0JyApICkgewogICAgICAgICAgICAkaG93dG8gPSB6c2ZfZ2VvX2hvd3RvKCk7CiAgICAgICAgICAgIGlmICggJGhvd3RvICkgewogICAgICAgICAgICAgICAgJHNjaGVtYXNbXSA9ICRob3d0bzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8g5YWz6ZSu6aG177yaU3BlYWthYmxlCiAgICAgICAgaWYgKCB6c2ZfZ2VvX2lzX3NwZWFrYWJsZV9wYWdlKCkgKSB7CiAgICAgICAgICAgICRzY2hlbWFzW10gPSB6c2ZfZ2VvX3NwZWFrYWJsZSgpOwogICAgICAgIH0KCiAgICAgICAgZm9yZWFjaCAoICRzY2hlbWFzIGFzICRzY2hlbWEgKSB7CiAgICAgICAgICAgIGlmICggZW1wdHkoICRzY2hlbWEgKSB8fCAhIGlzX2FycmF5KCAkc2NoZW1hICkgKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkanNvbiA9IHdwX2pzb25fZW5jb2RlKCAkc2NoZW1hLCBKU09OX1VORVNDQVBFRF9TTEFTSEVTIHwgSlNPTl9VTkVTQ0FQRURfVU5JQ09ERSB8IEpTT05fUFJFVFRZX1BSSU5UICk7CiAgICAgICAgICAgIGlmICggZmFsc2UgPT09ICRqc29uICkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWNobyAiXG4iIC4gJzxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vbGQranNvbiI+JyAuICRqc29uIC4gJzwvc2NyaXB0PicgLiAiXG4iOwogICAgICAgIH0KICAgIH0KfQoKYWRkX2FjdGlvbiggJ3dwX2Zvb3RlcicsICd6c2ZfZ2VvX3NjaGVtYV9lbWl0JywgOTkgKTsKLy8g5Y+M5L+d6Zmp77ya6YOo5YiG6Ieq5a6a5LmJ5qGG5p6277yIV0ItVW5pZnkg562J77yJd3BfZm9vdGVyIOS4jeWPr+mdoO+8jHdwX2hlYWQg5b+F54S26Kem5Y+R5LiUIEpTT04tTEQg5ZCI5rOV44CCCmFkZF9hY3Rpb24oICd3cF9oZWFkJywgJ3pzZl9nZW9fc2NoZW1hX2VtaXQnLCA5OSApOwoKLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKiAxMC4gQXJ0aWNsZSBzY2hlbWEg5L+u5q2j77ya5aGr5YWFIHB1Ymxpc2hlciDkuI4gYXV0aG9yLm5hbWUKICogICAgIO+8iFlvYXN0IHdwc2VvX3NjaGVtYV9hcnRpY2xlIGZpbHRlcu+8iQogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCgppZiAoICEgZnVuY3Rpb25fZXhpc3RzKCAnenNmX2ZpeF9hcnRpY2xlX3B1Ymxpc2hlcicgKSApIHsKICAgIGZ1bmN0aW9uIHpzZl9maXhfYXJ0aWNsZV9wdWJsaXNoZXIoICRzY2hlbWEgKSB7CiAgICAgICAgaWYgKCAhIGlzX2FycmF5KCAkc2NoZW1hICkgKSB7CiAgICAgICAgICAgIHJldHVybiAkc2NoZW1hOwogICAgICAgIH0KCiAgICAgICAgJHNjaGVtYVsncHVibGlzaGVyJ10gPSBhcnJheSgKICAgICAgICAgICAgJ0B0eXBlJyA9PiAnT3JnYW5pemF0aW9uJywKICAgICAgICAgICAgJ0BpZCcgICA9PiBaU0ZfR0VPX09SR19JRCwKICAgICAgICAgICAgJ25hbWUnICA9PiAn5YyX5Lqs55m+546v5b6L5biI5LqL5Yqh5omAJywKICAgICAgICApOwoKICAgICAgICBpZiAoIGVtcHR5KCAkc2NoZW1hWydhdXRob3InXVsnbmFtZSddICkgKSB7CiAgICAgICAgICAgICRzY2hlbWFbJ2F1dGhvciddWyduYW1lJ10gPSAn5YyX5Lqs55m+546v5b6L5biI5LqL5Yqh5omAJzsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkc2NoZW1hOwogICAgfQp9CgphZGRfZmlsdGVyKCAnd3BzZW9fc2NoZW1hX2FydGljbGUnLCAnenNmX2ZpeF9hcnRpY2xlX3B1Ymxpc2hlcicsIDEwLCAxICk7Cg== 常见罪名解析归档 - 第189页 共4096页 - 在商言法(北京)文化有限公司 常见罪名解析归档 - 第189页 共4096页 - 在商言法(北京)文化有限公司
10万+问答 5万+专业文章 50+实用工具 100+合作律师
📞 18511835733 18511835733@163.com
首页 > 常见罪名解析归档

分组: 常见罪名解析

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

微信号与手机号相同

18511835733