1688054433
waR3U4bTeM%3A104e52a064476cd34cf23d895c431bf0-9ce1b92002a87c71a7eaf96fc28c26ae
s:205788:"TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlIjoxNDp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBkb2NCbG9jayI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrIjo3OntzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHN1bW1hcnkiO3M6MjU6IlRoZSBiYXNlIHRva2VuaXplciBjbGFzcy4iO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHRhZ3MiO2E6Mzp7aTowO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXEF1dGhvciI6NDp7czo3OiIAKgBuYW1lIjtzOjY6ImF1dGhvciI7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXEF1dGhvcgBhdXRob3JOYW1lIjtzOjEzOiJHcmVnIFNoZXJ3b29kIjtzOjU4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcQXV0aG9yAGF1dGhvckVtYWlsIjtzOjE5OiJnc2hlcndvb2RAc3F1aXoubmV0IjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tjt9aToxO086NDY6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXEdlbmVyaWMiOjI6e3M6NzoiACoAbmFtZSI7czo5OiJjb3B5cmlnaHQiO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjQ0OiIyMDA2LTIwMTUgU3F1aXogUHR5IEx0ZCAoQUJOIDc3IDA4NCA2NzAgNjAwKSI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fWk6MjtPOjQ2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xHZW5lcmljIjoyOntzOjc6IgAqAG5hbWUiO3M6NzoibGljZW5zZSI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6ODA6Imh0dHBzOi8vZ2l0aHViLmNvbS9zcXVpemxhYnMvUEhQX0NvZGVTbmlmZmVyL2Jsb2IvbWFzdGVyL2xpY2VuY2UudHh0IEJTRCBMaWNlbmNlIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAY29udGV4dCI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQiOjI6e3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29udGV4dABuYW1lc3BhY2UiO3M6MDoiIjtzOjU2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQAbmFtZXNwYWNlQWxpYXNlcyI7YTowOnt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAbG9jYXRpb24iO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlU3RhcnQiO2I6MDtzOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVFbmQiO2I6MDt9czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBoYXNoIjtzOjMyOiI5Y2UxYjkyMDAyYTg3YzcxYTdlYWY5NmZjMjhjMjZhZSI7czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBuYW1lIjtzOjEzOiJUb2tlbml6ZXIucGhwIjtzOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAHBhdGgiO3M6NjE6InZlbmRvci9zcXVpemxhYnMvcGhwX2NvZGVzbmlmZmVyL3NyYy9Ub2tlbml6ZXJzL1Rva2VuaXplci5waHAiO3M6NDE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAc291cmNlIjtzOjc5NzA5OiI8P3BocAovKioKICogVGhlIGJhc2UgdG9rZW5pemVyIGNsYXNzLgogKgogKiBAYXV0aG9yICAgIEdyZWcgU2hlcndvb2QgPGdzaGVyd29vZEBzcXVpei5uZXQ+CiAqIEBjb3B5cmlnaHQgMjAwNi0yMDE1IFNxdWl6IFB0eSBMdGQgKEFCTiA3NyAwODQgNjcwIDYwMCkKICogQGxpY2Vuc2UgICBodHRwczovL2dpdGh1Yi5jb20vc3F1aXpsYWJzL1BIUF9Db2RlU25pZmZlci9ibG9iL21hc3Rlci9saWNlbmNlLnR4dCBCU0QgTGljZW5jZQogKi8KCm5hbWVzcGFjZSBQSFBfQ29kZVNuaWZmZXJcVG9rZW5pemVyczsKCnVzZSBQSFBfQ29kZVNuaWZmZXJcRXhjZXB0aW9uc1xUb2tlbml6ZXJFeGNlcHRpb247CnVzZSBQSFBfQ29kZVNuaWZmZXJcVXRpbDsKCmFic3RyYWN0IGNsYXNzIFRva2VuaXplcgp7CgogICAgLyoqCiAgICAgKiBUaGUgY29uZmlnIGRhdGEgZm9yIHRoZSBydW4uCiAgICAgKgogICAgICogQHZhciBcUEhQX0NvZGVTbmlmZmVyXENvbmZpZwogICAgICovCiAgICBwcm90ZWN0ZWQgJGNvbmZpZyA9IG51bGw7CgogICAgLyoqCiAgICAgKiBUaGUgRU9MIGNoYXIgdXNlZCBpbiB0aGUgY29udGVudC4KICAgICAqCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBwcm90ZWN0ZWQgJGVvbENoYXIgPSBbXTsKCiAgICAvKioKICAgICAqIEEgdG9rZW4tYmFzZWQgcmVwcmVzZW50YXRpb24gb2YgdGhlIGNvbnRlbnQuCiAgICAgKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgJHRva2VucyA9IFtdOwoKICAgIC8qKgogICAgICogVGhlIG51bWJlciBvZiB0b2tlbnMgaW4gdGhlIHRva2VucyBhcnJheS4KICAgICAqCiAgICAgKiBAdmFyIGludGVnZXIKICAgICAqLwogICAgcHJvdGVjdGVkICRudW1Ub2tlbnMgPSAwOwoKICAgIC8qKgogICAgICogQSBsaXN0IG9mIHRva2VucyB0aGF0IGFyZSBhbGxvd2VkIHRvIG9wZW4gYSBzY29wZS4KICAgICAqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyAkc2NvcGVPcGVuZXJzID0gW107CgogICAgLyoqCiAgICAgKiBBIGxpc3Qgb2YgdG9rZW5zIHRoYXQgZW5kIHRoZSBzY29wZS4KICAgICAqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyAkZW5kU2NvcGVUb2tlbnMgPSBbXTsKCiAgICAvKioKICAgICAqIEtub3duIGxlbmd0aHMgb2YgdG9rZW5zLgogICAgICoKICAgICAqIEB2YXIgYXJyYXk8aW50LCBpbnQ+CiAgICAgKi8KICAgIHB1YmxpYyAka25vd25MZW5ndGhzID0gW107CgogICAgLyoqCiAgICAgKiBBIGxpc3Qgb2YgbGluZXMgYmVpbmcgaWdub3JlZCBkdWUgdG8gZXJyb3Igc3VwcHJlc3Npb24gY29tbWVudHMuCiAgICAgKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwdWJsaWMgJGlnbm9yZWRMaW5lcyA9IFtdOwoKCiAgICAvKioKICAgICAqIEluaXRpYWxpc2UgYW5kIHJ1biB0aGUgdG9rZW5pemVyLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRlbnQgVGhlIGNvbnRlbnQgdG8gdG9rZW5pemUsCiAgICAgKiBAcGFyYW0gXFBIUF9Db2RlU25pZmZlclxDb25maWcgfCBudWxsICRjb25maWcgIFRoZSBjb25maWcgZGF0YSBmb3IgdGhlIHJ1bi4KICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgJGVvbENoYXIgVGhlIEVPTCBjaGFyIHVzZWQgaW4gdGhlIGNvbnRlbnQuCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKiBAdGhyb3dzIFxQSFBfQ29kZVNuaWZmZXJcRXhjZXB0aW9uc1xUb2tlbml6ZXJFeGNlcHRpb24gSWYgdGhlIGZpbGUgYXBwZWFycyB0byBiZSBtaW5pZmllZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRjb250ZW50LCAkY29uZmlnLCAkZW9sQ2hhcj0nXG4nKQogICAgewogICAgICAgICR0aGlzLT5lb2xDaGFyID0gJGVvbENoYXI7CgogICAgICAgICR0aGlzLT5jb25maWcgPSAkY29uZmlnOwogICAgICAgICR0aGlzLT50b2tlbnMgPSAkdGhpcy0+dG9rZW5pemUoJGNvbnRlbnQpOwoKICAgICAgICBpZiAoJGNvbmZpZyA9PT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+Y3JlYXRlUG9zaXRpb25NYXAoKTsKICAgICAgICAkdGhpcy0+Y3JlYXRlVG9rZW5NYXAoKTsKICAgICAgICAkdGhpcy0+Y3JlYXRlUGFyZW50aGVzaXNOZXN0aW5nTWFwKCk7CiAgICAgICAgJHRoaXMtPmNyZWF0ZVNjb3BlTWFwKCk7CiAgICAgICAgJHRoaXMtPmNyZWF0ZUxldmVsTWFwKCk7CgogICAgICAgIC8vIEFsbG93IHRoZSB0b2tlbml6ZXIgdG8gZG8gYWRkaXRpb25hbCBwcm9jZXNzaW5nIGlmIHJlcXVpcmVkLgogICAgICAgICR0aGlzLT5wcm9jZXNzQWRkaXRpb25hbCgpOwoKICAgIH0vL2VuZCBfX2NvbnN0cnVjdCgpCgoKICAgIC8qKgogICAgICogQ2hlY2tzIHRoZSBjb250ZW50IHRvIHNlZSBpZiBpdCBsb29rcyBtaW5pZmllZC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRjb250ZW50IFRoZSBjb250ZW50IHRvIHRva2VuaXplLgogICAgICogQHBhcmFtIHN0cmluZyAkZW9sQ2hhciBUaGUgRU9MIGNoYXIgdXNlZCBpbiB0aGUgY29udGVudC4KICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2xlYW4KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGlzTWluaWZpZWRDb250ZW50KCRjb250ZW50LCAkZW9sQ2hhcj0nXG4nKQogICAgewogICAgICAgIC8vIE1pbmlmaWVkIGZpbGVzIG9mdGVuIGhhdmUgYSB2ZXJ5IGxhcmdlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHBlciBsaW5lCiAgICAgICAgLy8gYW5kIGNhdXNlIGlzc3VlcyB3aGVuIHRva2VuaXppbmcuCiAgICAgICAgJG51bUNoYXJzID0gc3RybGVuKCRjb250ZW50KTsKICAgICAgICAkbnVtTGluZXMgPSAoc3Vic3RyX2NvdW50KCRjb250ZW50LCAkZW9sQ2hhcikgKyAxKTsKICAgICAgICAkYXZlcmFnZSAgPSAoJG51bUNoYXJzIC8gJG51bUxpbmVzKTsKICAgICAgICBpZiAoJGF2ZXJhZ2UgPiAxMDApIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgfS8vZW5kIGlzTWluaWZpZWRDb250ZW50KCkKCgogICAgLyoqCiAgICAgKiBHZXRzIHRoZSBhcnJheSBvZiB0b2tlbnMuCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VG9rZW5zKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnRva2VuczsKCiAgICB9Ly9lbmQgZ2V0VG9rZW5zKCkKCgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRva2VucyB3aGVuIGdpdmVuIHNvbWUgY29udGVudC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzdHJpbmcgVGhlIHN0cmluZyB0byB0b2tlbml6ZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIGFic3RyYWN0IHByb3RlY3RlZCBmdW5jdGlvbiB0b2tlbml6ZSgkc3RyaW5nKTsKCgogICAgLyoqCiAgICAgKiBQZXJmb3JtcyBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgYWZ0ZXIgbWFpbiB0b2tlbml6aW5nLgogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBhYnN0cmFjdCBwcm90ZWN0ZWQgZnVuY3Rpb24gcHJvY2Vzc0FkZGl0aW9uYWwoKTsKCgogICAgLyoqCiAgICAgKiBTZXRzIHRva2VuIHBvc2l0aW9uIGluZm9ybWF0aW9uLgogICAgICoKICAgICAqIENhbiBhbHNvIGNvbnZlcnQgdGFicyBpbnRvIHNwYWNlcy4gRWFjaCB0YWIgY2FuIHJlcHJlc2VudCBiZXR3ZWVuCiAgICAgKiAxIGFuZCAkd2lkdGggc3BhY2VzLCBzbyB0aGlzIGNhbm5vdCBiZSBhIHN0cmFpZ2h0IHN0cmluZyByZXBsYWNlLgogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNyZWF0ZVBvc2l0aW9uTWFwKCkKICAgIHsKICAgICAgICAkY3VyckNvbHVtbiA9IDE7CiAgICAgICAgJGxpbmVOdW1iZXIgPSAxOwogICAgICAgICRlb2xMZW4gICAgID0gc3RybGVuKCR0aGlzLT5lb2xDaGFyKTsKICAgICAgICAkaWdub3JpbmcgICA9IG51bGw7CiAgICAgICAgJGluVGVzdHMgICAgPSBkZWZpbmVkKCdQSFBfQ09ERVNOSUZGRVJfSU5fVEVTVFMnKTsKCiAgICAgICAgJGNoZWNrRW5jb2RpbmcgPSBmYWxzZTsKICAgICAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdpY29udl9zdHJsZW4nKSA9PT0gdHJ1ZSkgewogICAgICAgICAgICAkY2hlY2tFbmNvZGluZyA9IHRydWU7CiAgICAgICAgfQoKICAgICAgICAkY2hlY2tBbm5vdGF0aW9ucyA9ICR0aGlzLT5jb25maWctPmFubm90YXRpb25zOwogICAgICAgICRlbmNvZGluZyAgICAgICAgID0gJHRoaXMtPmNvbmZpZy0+ZW5jb2Rpbmc7CiAgICAgICAgJHRhYldpZHRoICAgICAgICAgPSAkdGhpcy0+Y29uZmlnLT50YWJXaWR0aDsKCiAgICAgICAgJHRva2Vuc1dpdGhUYWJzID0gWwogICAgICAgICAgICBUX1dISVRFU1BBQ0UgICAgICAgICAgICAgICA9PiB0cnVlLAogICAgICAgICAgICBUX0NPTU1FTlQgICAgICAgICAgICAgICAgICA9PiB0cnVlLAogICAgICAgICAgICBUX0RPQ19DT01NRU5UICAgICAgICAgICAgICA9PiB0cnVlLAogICAgICAgICAgICBUX0RPQ19DT01NRU5UX1dISVRFU1BBQ0UgICA9PiB0cnVlLAogICAgICAgICAgICBUX0RPQ19DT01NRU5UX1NUUklORyAgICAgICA9PiB0cnVlLAogICAgICAgICAgICBUX0NPTlNUQU5UX0VOQ0FQU0VEX1NUUklORyA9PiB0cnVlLAogICAgICAgICAgICBUX0RPVUJMRV9RVU9URURfU1RSSU5HICAgICA9PiB0cnVlLAogICAgICAgICAgICBUX0hFUkVET0MgICAgICAgICAgICAgICAgICA9PiB0cnVlLAogICAgICAgICAgICBUX05PV0RPQyAgICAgICAgICAgICAgICAgICA9PiB0cnVlLAogICAgICAgICAgICBUX0lOTElORV9IVE1MICAgICAgICAgICAgICA9PiB0cnVlLAogICAgICAgIF07CgogICAgICAgICR0aGlzLT5udW1Ub2tlbnMgPSBjb3VudCgkdGhpcy0+dG9rZW5zKTsKICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCAkdGhpcy0+bnVtVG9rZW5zOyAkaSsrKSB7CiAgICAgICAgICAgICR0aGlzLT50b2tlbnNbJGldWydsaW5lJ10gICA9ICRsaW5lTnVtYmVyOwogICAgICAgICAgICAkdGhpcy0+dG9rZW5zWyRpXVsnY29sdW1uJ10gPSAkY3VyckNvbHVtbjsKCiAgICAgICAgICAgIGlmIChpc3NldCgkdGhpcy0+a25vd25MZW5ndGhzWyR0aGlzLT50b2tlbnNbJGldWydjb2RlJ11dKSA9PT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgLy8gVGhlcmUgYXJlIG5vIHRhYnMgaW4gdGhlIHRva2VucyB3ZSBrbm93IHRoZSBsZW5ndGggb2YuCiAgICAgICAgICAgICAgICAkbGVuZ3RoICAgICAgPSAkdGhpcy0+a25vd25MZW5ndGhzWyR0aGlzLT50b2tlbnNbJGldWydjb2RlJ11dOwogICAgICAgICAgICAgICAgJGN1cnJDb2x1bW4gKz0gJGxlbmd0aDsKICAgICAgICAgICAgfSBlbHNlIGlmICgkdGFiV2lkdGggPT09IDAKICAgICAgICAgICAgICAgIHx8IGlzc2V0KCR0b2tlbnNXaXRoVGFic1skdGhpcy0+dG9rZW5zWyRpXVsnY29kZSddXSkgPT09IGZhbHNlCiAgICAgICAgICAgICAgICB8fCBzdHJwb3MoJHRoaXMtPnRva2Vuc1skaV1bJ2NvbnRlbnQnXSwgIlx0IikgPT09IGZhbHNlCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgLy8gVGhlcmUgYXJlIG5vIHRhYnMgaW4gdGhpcyBjb250ZW50LCBvciB3ZSBhcmVuJ3QgcmVwbGFjaW5nIHRoZW0uCiAgICAgICAgICAgICAgICBpZiAoJGNoZWNrRW5jb2RpbmcgPT09IHRydWUpIHsKICAgICAgICAgICAgICAgICAgICAvLyBOb3QgdXNpbmcgdGhlIGRlZmF1bHQgZW5jb2RpbmcsIHNvIHRha2UgYSBiaXQgbW9yZSBjYXJlLgogICAgICAgICAgICAgICAgICAgICRvbGRMZXZlbCA9IGVycm9yX3JlcG9ydGluZygpOwogICAgICAgICAgICAgICAgICAgIGVycm9yX3JlcG9ydGluZygwKTsKICAgICAgICAgICAgICAgICAgICAkbGVuZ3RoID0gaWNvbnZfc3RybGVuKCR0aGlzLT50b2tlbnNbJGldWydjb250ZW50J10sICRlbmNvZGluZyk7CiAgICAgICAgICAgICAgICAgICAgZXJyb3JfcmVwb3J0aW5nKCRvbGRMZXZlbCk7CgogICAgICAgICAgICAgICAgICAgIGlmICgkbGVuZ3RoID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBTdHJpbmcgY29udGFpbmVkIGludmFsaWQgY2hhcmFjdGVycywgc28gcmV2ZXJ0IHRvIGRlZmF1bHQuCiAgICAgICAgICAgICAgICAgICAgICAgICRsZW5ndGggPSBzdHJsZW4oJHRoaXMtPnRva2Vuc1skaV1bJ2NvbnRlbnQnXSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkbGVuZ3RoID0gc3RybGVuKCR0aGlzLT50b2tlbnNbJGldWydjb250ZW50J10pOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRjdXJyQ29sdW1uICs9ICRsZW5ndGg7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+cmVwbGFjZVRhYnNJblRva2VuKCR0aGlzLT50b2tlbnNbJGldKTsKICAgICAgICAgICAgICAgICRsZW5ndGggICAgICA9ICR0aGlzLT50b2tlbnNbJGldWydsZW5ndGgnXTsKICAgICAgICAgICAgICAgICRjdXJyQ29sdW1uICs9ICRsZW5ndGg7CiAgICAgICAgICAgIH0vL2VuZCBpZgoKICAgICAgICAgICAgJHRoaXMtPnRva2Vuc1skaV1bJ2xlbmd0aCddID0gJGxlbmd0aDsKCiAgICAgICAgICAgIGlmIChpc3NldCgkdGhpcy0+a25vd25MZW5ndGhzWyR0aGlzLT50b2tlbnNbJGldWydjb2RlJ11dKSA9PT0gZmFsc2UKICAgICAgICAgICAgICAgICYmIHN0cnBvcygkdGhpcy0+dG9rZW5zWyRpXVsnY29udGVudCddLCAkdGhpcy0+ZW9sQ2hhcikgIT09IGZhbHNlCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgJGxpbmVOdW1iZXIrKzsKICAgICAgICAgICAgICAgICRjdXJyQ29sdW1uID0gMTsKCiAgICAgICAgICAgICAgICAvLyBOZXdsaW5lIGNoYXJzIGFyZSBub3QgY291bnRlZCBpbiB0aGUgdG9rZW4gbGVuZ3RoLgogICAgICAgICAgICAgICAgJHRoaXMtPnRva2Vuc1skaV1bJ2xlbmd0aCddIC09ICRlb2xMZW47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkdGhpcy0+dG9rZW5zWyRpXVsnY29kZSddID09PSBUX0NPTU1FTlQKICAgICAgICAgICAgICAgIHx8ICR0aGlzLT50b2tlbnNbJGldWydjb2RlJ10gPT09IFRfRE9DX0NPTU1FTlRfU1RSSU5HCiAgICAgICAgICAgICAgICB8fCAkdGhpcy0+dG9rZW5zWyRpXVsnY29kZSddID09PSBUX0RPQ19DT01NRU5UX1RBRwogICAgICAgICAgICAgICAgfHwgKCRpblRlc3RzID09PSB0cnVlICYmICR0aGlzLT50b2tlbnNbJGldWydjb2RlJ10gPT09IFRfSU5MSU5FX0hUTUwpCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgJGNvbW1lbnRUZXh0ICAgICAgPSBsdHJpbSgkdGhpcy0+dG9rZW5zWyRpXVsnY29udGVudCddLCAiIFx0LyojIik7CiAgICAgICAgICAgICAgICAkY29tbWVudFRleHQgICAgICA9IHJ0cmltKCRjb21tZW50VGV4dCwgIiAqL1x0XHJcbiIpOwogICAgICAgICAgICAgICAgJGNvbW1lbnRUZXh0TG93ZXIgPSBzdHJ0b2xvd2VyKCRjb21tZW50VGV4dCk7CiAgICAgICAgICAgICAgICBpZiAoc3RycG9zKCRjb21tZW50VGV4dCwgJ0Bjb2RpbmdTdGFuZGFyZHMnKSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGNvbW1lbnQgaXMgdGhlIG9ubHkgdGhpbmcgb24gdGhlIGxpbmUsIGl0IHRlbGxzIHVzCiAgICAgICAgICAgICAgICAgICAgLy8gdG8gaWdub3JlIHRoZSBmb2xsb3dpbmcgbGluZS4gSWYgdGhlIGxpbmUgY29udGFpbnMgb3RoZXIgY29udGVudAogICAgICAgICAgICAgICAgICAgIC8vIHRoZW4gd2UgYXJlIGp1c3QgaWdub3JpbmcgdGhpcyBvbmUgc2luZ2xlIGxpbmUuCiAgICAgICAgICAgICAgICAgICAgJG93bkxpbmUgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICBpZiAoJGkgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoJHByZXYgPSAoJGkgLSAxKTsgJHByZXYgPj0gMDsgJHByZXYtLSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCR0aGlzLT50b2tlbnNbJHByZXZdWydjb2RlJ10gPT09IFRfV0hJVEVTUEFDRSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPnRva2Vuc1skcHJldl1bJ2xpbmUnXSAhPT0gJHRoaXMtPnRva2Vuc1skaV1bJ2xpbmUnXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG93bkxpbmUgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBpZiAoJGlnbm9yaW5nID09PSBudWxsCiAgICAgICAgICAgICAgICAgICAgICAgICYmIHN0cnBvcygkY29tbWVudFRleHQsICdAY29kaW5nU3RhbmRhcmRzSWdub3JlU3RhcnQnKSAhPT0gZmFsc2UKICAgICAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGlnbm9yaW5nID0gWycuYWxsJyA9PiB0cnVlXTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRvd25MaW5lID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+aWdub3JlZExpbmVzWyR0aGlzLT50b2tlbnNbJGldWydsaW5lJ11dID0gJGlnbm9yaW5nOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkaWdub3JpbmcgIT09IG51bGwKICAgICAgICAgICAgICAgICAgICAgICAgJiYgc3RycG9zKCRjb21tZW50VGV4dCwgJ0Bjb2RpbmdTdGFuZGFyZHNJZ25vcmVFbmQnKSAhPT0gZmFsc2UKICAgICAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRvd25MaW5lID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+aWdub3JlZExpbmVzWyR0aGlzLT50b2tlbnNbJGldWydsaW5lJ11dID0gWycuYWxsJyA9PiB0cnVlXTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5pZ25vcmVkTGluZXNbJHRoaXMtPnRva2Vuc1skaV1bJ2xpbmUnXV0gPSAkaWdub3Jpbmc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICRpZ25vcmluZyA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkaWdub3JpbmcgPT09IG51bGwKICAgICAgICAgICAgICAgICAgICAgICAgJiYgc3RycG9zKCRjb21tZW50VGV4dCwgJ0Bjb2RpbmdTdGFuZGFyZHNJZ25vcmVMaW5lJykgIT09IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRpZ25vcmluZyA9IFsnLmFsbCcgPT4gdHJ1ZV07CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkb3duTGluZSA9PT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmlnbm9yZWRMaW5lc1skdGhpcy0+dG9rZW5zWyRpXVsnbGluZSddXSAgICAgICA9ICRpZ25vcmluZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5pZ25vcmVkTGluZXNbKCR0aGlzLT50b2tlbnNbJGldWydsaW5lJ10gKyAxKV0gPSAkaWdub3Jpbmc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+aWdub3JlZExpbmVzWyR0aGlzLT50b2tlbnNbJGldWydsaW5lJ11dID0gJGlnbm9yaW5nOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAkaWdub3JpbmcgPSBudWxsOwogICAgICAgICAgICAgICAgICAgIH0vL2VuZCBpZgogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzdWJzdHIoJGNvbW1lbnRUZXh0TG93ZXIsIDAsIDYpID09PSAncGhwY3M6JwogICAgICAgICAgICAgICAgICAgIHx8IHN1YnN0cigkY29tbWVudFRleHRMb3dlciwgMCwgNykgPT09ICdAcGhwY3M6JwogICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIEBwaHBjczogc3ludGF4IGlzIGJlaW5nIHVzZWQsIHN0cmlwIHRoZSBAIHRvIG1ha2UKICAgICAgICAgICAgICAgICAgICAvLyBjb21wYXJpc29ucyBlYXNpZXIuCiAgICAgICAgICAgICAgICAgICAgaWYgKCRjb21tZW50VGV4dFswXSA9PT0gJ0AnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRjb21tZW50VGV4dCAgICAgID0gc3Vic3RyKCRjb21tZW50VGV4dCwgMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICRjb21tZW50VGV4dExvd2VyID0gc3RydG9sb3dlcigkY29tbWVudFRleHQpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBjb21tZW50IG9uIHRoZSBlbmQsIHN0cmlwIGl0IG9mZi4KICAgICAgICAgICAgICAgICAgICAkY29tbWVudFN0YXJ0ID0gc3RycG9zKCRjb21tZW50VGV4dExvd2VyLCAnIC0tJyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRjb21tZW50U3RhcnQgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRjb21tZW50VGV4dCAgICAgID0gc3Vic3RyKCRjb21tZW50VGV4dCwgMCwgJGNvbW1lbnRTdGFydCk7CiAgICAgICAgICAgICAgICAgICAgICAgICRjb21tZW50VGV4dExvd2VyID0gc3RydG9sb3dlcigkY29tbWVudFRleHQpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBjb21tZW50IGlzIHRoZSBvbmx5IHRoaW5nIG9uIHRoZSBsaW5lLCBpdCB0ZWxscyB1cwogICAgICAgICAgICAgICAgICAgIC8vIHRvIGlnbm9yZSB0aGUgZm9sbG93aW5nIGxpbmUuIElmIHRoZSBsaW5lIGNvbnRhaW5zIG90aGVyIGNvbnRlbnQKICAgICAgICAgICAgICAgICAgICAvLyB0aGVuIHdlIGFyZSBqdXN0IGlnbm9yaW5nIHRoaXMgb25lIHNpbmdsZSBsaW5lLgogICAgICAgICAgICAgICAgICAgICRsaW5lSGFzT3RoZXJDb250ZW50ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgJGxpbmVIYXNPdGhlclRva2VucyAgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICBpZiAoJGkgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoJHByZXYgPSAoJGkgLSAxKTsgJHByZXYgPiAwOyAkcHJldi0tKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPnRva2Vuc1skcHJldl1bJ2xpbmUnXSAhPT0gJHRoaXMtPnRva2Vuc1skaV1bJ2xpbmUnXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENoYW5nZWQgbGluZXMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCR0aGlzLT50b2tlbnNbJHByZXZdWydjb2RlJ10gPT09IFRfV0hJVEVTUEFDRQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICR0aGlzLT50b2tlbnNbJHByZXZdWydjb2RlJ10gPT09IFRfRE9DX0NPTU1FTlRfV0hJVEVTUEFDRQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgkdGhpcy0+dG9rZW5zWyRwcmV2XVsnY29kZSddID09PSBUX0lOTElORV9IVE1MCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgdHJpbSgkdGhpcy0+dG9rZW5zWyRwcmV2XVsnY29udGVudCddKSA9PT0gJycpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGluZUhhc090aGVyVG9rZW5zID0gdHJ1ZTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPnRva2Vuc1skcHJldl1bJ2NvZGUnXSA9PT0gVF9PUEVOX1RBRwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICR0aGlzLT50b2tlbnNbJHByZXZdWydjb2RlJ10gPT09IFRfRE9DX0NPTU1FTlRfU1RBUgogICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpbmVIYXNPdGhlckNvbnRlbnQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0vL2VuZCBmb3IKCiAgICAgICAgICAgICAgICAgICAgICAgICRjaGFuZ2VkTGluZXMgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICgkbmV4dCA9ICRpOyAkbmV4dCA8ICR0aGlzLT5udW1Ub2tlbnM7ICRuZXh0KyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkY2hhbmdlZExpbmVzID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2hhbmdlZCBsaW5lcy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPmtub3duTGVuZ3Roc1skdGhpcy0+dG9rZW5zWyRuZXh0XVsnY29kZSddXSkgPT09IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgc3RycG9zKCR0aGlzLT50b2tlbnNbJG5leHRdWydjb250ZW50J10sICR0aGlzLT5lb2xDaGFyKSAhPT0gZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIExhc3QgdG9rZW4gb24gdGhlIGN1cnJlbnQgbGluZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY2hhbmdlZExpbmVzID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJG5leHQgPT09ICRpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCR0aGlzLT50b2tlbnNbJG5leHRdWydjb2RlJ10gPT09IFRfV0hJVEVTUEFDRQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICR0aGlzLT50b2tlbnNbJG5leHRdWydjb2RlJ10gPT09IFRfRE9DX0NPTU1FTlRfV0hJVEVTUEFDRQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgkdGhpcy0+dG9rZW5zWyRuZXh0XVsnY29kZSddID09PSBUX0lOTElORV9IVE1MCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgdHJpbSgkdGhpcy0+dG9rZW5zWyRuZXh0XVsnY29udGVudCddKSA9PT0gJycpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGluZUhhc090aGVyVG9rZW5zID0gdHJ1ZTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPnRva2Vuc1skbmV4dF1bJ2NvZGUnXSA9PT0gVF9DTE9TRV9UQUcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGluZUhhc090aGVyQ29udGVudCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfS8vZW5kIGZvcgogICAgICAgICAgICAgICAgICAgIH0vL2VuZCBpZgoKICAgICAgICAgICAgICAgICAgICBpZiAoc3Vic3RyKCRjb21tZW50VGV4dExvd2VyLCAwLCA5KSA9PT0gJ3BocGNzOnNldCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWdub3JlIHN0YW5kYXJkcyBmb3IgY29tcGxldGUgbGluZXMgdGhhdCBjaGFuZ2Ugc25pZmYgc2V0dGluZ3MuCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkbGluZUhhc090aGVyVG9rZW5zID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmlnbm9yZWRMaW5lc1skdGhpcy0+dG9rZW5zWyRpXVsnbGluZSddXSA9IFsnLmFsbCcgPT4gdHJ1ZV07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5lZWQgdG8gbWFpbnRhaW4gY2FzZSBoZXJlLCB0byBnZXQgdGhlIGNvcnJlY3Qgc25pZmYgY29kZS4KICAgICAgICAgICAgICAgICAgICAgICAgJHBhcnRzID0gZXhwbG9kZSgnICcsIHN1YnN0cigkY29tbWVudFRleHQsIDEwKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb3VudCgkcGFydHMpID49IDIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzbmlmZlBhcnRzID0gZXhwbG9kZSgnLicsICRwYXJ0c1swXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY291bnQoJHNuaWZmUGFydHMpID49IDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+dG9rZW5zWyRpXVsnc25pZmZDb2RlJ10gICAgICAgICAgPSBhcnJheV9zaGlmdCgkcGFydHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT50b2tlbnNbJGldWydzbmlmZlByb3BlcnR5J10gICAgICA9IGFycmF5X3NoaWZ0KCRwYXJ0cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnRva2Vuc1skaV1bJ3NuaWZmUHJvcGVydHlWYWx1ZSddID0gcnRyaW0oaW1wbG9kZSgnICcsICRwYXJ0cyksICIgKi9cclxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT50b2tlbnNbJGldWydjb2RlJ10gPSBUX1BIUENTX1NFVDsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnRva2Vuc1skaV1bJ3R5cGUnXSA9ICdUX1BIUENTX1NFVCc7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzdWJzdHIoJGNvbW1lbnRUZXh0TG93ZXIsIDAsIDE2KSA9PT0gJ3BocGNzOmlnbm9yZWZpbGUnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSB3aG9sZSBmaWxlIHdpbGwgYmUgaWdub3JlZCwgYnV0IGF0IGxlYXN0IHNldCB0aGUgY29ycmVjdCB0b2tlbi4KICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnRva2Vuc1skaV1bJ2NvZGUnXSA9IFRfUEhQQ1NfSUdOT1JFX0ZJTEU7CiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT50b2tlbnNbJGldWyd0eXBlJ10gPSAnVF9QSFBDU19JR05PUkVfRklMRSc7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzdWJzdHIoJGNvbW1lbnRUZXh0TG93ZXIsIDAsIDEzKSA9PT0gJ3BocGNzOmRpc2FibGUnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkbGluZUhhc090aGVyQ29udGVudCA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvbXBsZXRlbHkgaWdub3JlIHRoZSBjb21tZW50IGxpbmUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+aWdub3JlZExpbmVzWyR0aGlzLT50b2tlbnNbJGldWydsaW5lJ11dID0gWycuYWxsJyA9PiB0cnVlXTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRpZ25vcmluZyA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGlnbm9yaW5nID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICRkaXNhYmxlZFNuaWZmcyA9IFtdOwoKICAgICAgICAgICAgICAgICAgICAgICAgJGFkZGl0aW9uYWxUZXh0ID0gc3Vic3RyKCRjb21tZW50VGV4dCwgMTQpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZW1wdHkoJGFkZGl0aW9uYWxUZXh0KSA9PT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGlnbm9yaW5nID0gWycuYWxsJyA9PiB0cnVlXTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJ0cyA9IGV4cGxvZGUoJywnLCAkYWRkaXRpb25hbFRleHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJHBhcnRzIGFzICRzbmlmZkNvZGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc25pZmZDb2RlID0gdHJpbSgkc25pZmZDb2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGlzYWJsZWRTbmlmZnNbJHNuaWZmQ29kZV0gPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpZ25vcmluZ1skc25pZmZDb2RlXSAgICAgICA9IHRydWU7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgbmV3bHkgZGlzYWJsZWQgc25pZmYgbWlnaHQgYmUgZGlzYWJsaW5nIGFuIGV4aXN0aW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW5hYmxlZCBleGNlcHRpb24gdGhhdCB3ZSBhcmUgdHJhY2tpbmcuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRpZ25vcmluZ1snLmV4Y2VwdCddKSA9PT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoIChhcnJheV9rZXlzKCRpZ25vcmluZ1snLmV4Y2VwdCddKSBhcyAkaWdub3JlZFNuaWZmQ29kZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRpZ25vcmVkU25pZmZDb2RlID09PSAkc25pZmZDb2RlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgc3RycG9zKCRpZ25vcmVkU25pZmZDb2RlLCAkc25pZmZDb2RlLicuJykgPT09IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2V0KCRpZ25vcmluZ1snLmV4Y2VwdCddWyRpZ25vcmVkU25pZmZDb2RlXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbXB0eSgkaWdub3JpbmdbJy5leGNlcHQnXSkgPT09IHRydWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2V0KCRpZ25vcmluZ1snLmV4Y2VwdCddKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0vL2VuZCBmb3JlYWNoCiAgICAgICAgICAgICAgICAgICAgICAgIH0vL2VuZCBpZgoKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnRva2Vuc1skaV1bJ2NvZGUnXSAgICAgICA9IFRfUEhQQ1NfRElTQUJMRTsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnRva2Vuc1skaV1bJ3R5cGUnXSAgICAgICA9ICdUX1BIUENTX0RJU0FCTEUnOwogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+dG9rZW5zWyRpXVsnc25pZmZDb2RlcyddID0gJGRpc2FibGVkU25pZmZzOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3Vic3RyKCRjb21tZW50VGV4dExvd2VyLCAwLCAxMikgPT09ICdwaHBjczplbmFibGUnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkaWdub3JpbmcgIT09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRlbmFibGVkU25pZmZzID0gW107CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGFkZGl0aW9uYWxUZXh0ID0gc3Vic3RyKCRjb21tZW50VGV4dCwgMTMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVtcHR5KCRhZGRpdGlvbmFsVGV4dCkgPT09IHRydWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaWdub3JpbmcgPSBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFydHMgPSBleHBsb2RlKCcsJywgJGFkZGl0aW9uYWxUZXh0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkcGFydHMgYXMgJHNuaWZmQ29kZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc25pZmZDb2RlID0gdHJpbSgkc25pZmZDb2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGVuYWJsZWRTbmlmZnNbJHNuaWZmQ29kZV0gPSB0cnVlOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBuZXcgZW5hYmxlZCBzbmlmZiBtaWdodCByZW1vdmUgcHJldmlvdXNseSBkaXNhYmxlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzbmlmZnMgaWYgaXQgaXMgYWN0dWFsbHkgYSBzdGFuZGFyZCBvciBjYXRlZ29yeSBvZiBzbmlmZnMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKGFycmF5X2tleXMoJGlnbm9yaW5nKSBhcyAkaWdub3JlZFNuaWZmQ29kZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRpZ25vcmVkU25pZmZDb2RlID09PSAkc25pZmZDb2RlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgc3RycG9zKCRpZ25vcmVkU25pZmZDb2RlLCAkc25pZmZDb2RlLicuJykgPT09IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2V0KCRpZ25vcmluZ1skaWdub3JlZFNuaWZmQ29kZV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIG5ldyBlbmFibGVkIHNuaWZmIG1pZ2h0IGJlIGFibGUgdG8gY2xlYXIgdXAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJldmlvdXNseSBlbmFibGVkIHNuaWZmcyBpZiBpdCBpcyBhY3R1YWxseSBhIHN0YW5kYXJkIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhdGVnb3J5IG9mIHNuaWZmcy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRpZ25vcmluZ1snLmV4Y2VwdCddKSA9PT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoYXJyYXlfa2V5cygkaWdub3JpbmdbJy5leGNlcHQnXSkgYXMgJGlnbm9yZWRTbmlmZkNvZGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGlnbm9yZWRTbmlmZkNvZGUgPT09ICRzbmlmZkNvZGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgc3RycG9zKCRpZ25vcmVkU25pZmZDb2RlLCAkc25pZmZDb2RlLicuJykgPT09IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zZXQoJGlnbm9yaW5nWycuZXhjZXB0J11bJGlnbm9yZWRTbmlmZkNvZGVdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ly9lbmQgZm9yZWFjaAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZW1wdHkoJGlnbm9yaW5nKSA9PT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaWdub3JpbmcgPSBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkaWdub3JpbmdbJy5leGNlcHQnXSkgPT09IHRydWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpZ25vcmluZ1snLmV4Y2VwdCddICs9ICRlbmFibGVkU25pZmZzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGlnbm9yaW5nWycuZXhjZXB0J10gPSAkZW5hYmxlZFNuaWZmczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0vL2VuZCBpZgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkbGluZUhhc090aGVyQ29udGVudCA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb21wbGV0ZWx5IGlnbm9yZSB0aGUgY29tbWVudCBsaW5lLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5pZ25vcmVkTGluZXNbJHRoaXMtPnRva2Vuc1skaV1bJ2xpbmUnXV0gPSBbJy5hbGwnID0+IHRydWVdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgY29tbWVudCBpcyBvbiB0aGUgc2FtZSBsaW5lIGFzIHRoZSBjb2RlIGl0IGlzIGlnbm9yaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNvIHJlc3BlY3QgdGhlIG5ldyBpZ25vcmUgcnVsZXMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmlnbm9yZWRMaW5lc1skdGhpcy0+dG9rZW5zWyRpXVsnbGluZSddXSA9ICRpZ25vcmluZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+dG9rZW5zWyRpXVsnc25pZmZDb2RlcyddID0gJGVuYWJsZWRTbmlmZnM7CiAgICAgICAgICAgICAgICAgICAgICAgIH0vL2VuZCBpZgoKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnRva2Vuc1skaV1bJ2NvZGUnXSA9IFRfUEhQQ1NfRU5BQkxFOwogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+dG9rZW5zWyRpXVsndHlwZSddID0gJ1RfUEhQQ1NfRU5BQkxFJzsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHN1YnN0cigkY29tbWVudFRleHRMb3dlciwgMCwgMTIpID09PSAncGhwY3M6aWdub3JlJykgewogICAgICAgICAgICAgICAgICAgICAgICAkaWdub3JlUnVsZXMgPSBbXTsKCiAgICAgICAgICAgICAgICAgICAgICAgICRhZGRpdGlvbmFsVGV4dCA9IHN1YnN0cigkY29tbWVudFRleHQsIDEzKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVtcHR5KCRhZGRpdGlvbmFsVGV4dCkgPT09IHRydWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpZ25vcmVSdWxlcyA9IFsnLmFsbCcgPT4gdHJ1ZV07CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFydHMgPSBleHBsb2RlKCcsJywgJGFkZGl0aW9uYWxUZXh0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRwYXJ0cyBhcyAkc25pZmZDb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGlnbm9yZVJ1bGVzW3RyaW0oJHNuaWZmQ29kZSldID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnRva2Vuc1skaV1bJ2NvZGUnXSAgICAgICA9IFRfUEhQQ1NfSUdOT1JFOwogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+dG9rZW5zWyRpXVsndHlwZSddICAgICAgID0gJ1RfUEhQQ1NfSUdOT1JFJzsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnRva2Vuc1skaV1bJ3NuaWZmQ29kZXMnXSA9ICRpZ25vcmVSdWxlczsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkaWdub3JpbmcgIT09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpZ25vcmVSdWxlcyArPSAkaWdub3Jpbmc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkbGluZUhhc090aGVyQ29udGVudCA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvbXBsZXRlbHkgaWdub3JlIHRoZSBjb21tZW50IGxpbmUsIGFuZCBzZXQgdGhlIGZvbGxvd2luZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGluZSB0byBpbmNsdWRlIHRoZSBpZ25vcmUgcnVsZXMgd2UndmUgc2V0LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmlnbm9yZWRMaW5lc1skdGhpcy0+dG9rZW5zWyRpXVsnbGluZSddXSAgICAgICA9IFsnLmFsbCcgPT4gdHJ1ZV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+aWdub3JlZExpbmVzWygkdGhpcy0+dG9rZW5zWyRpXVsnbGluZSddICsgMSldID0gJGlnbm9yZVJ1bGVzOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGNvbW1lbnQgaXMgb24gdGhlIHNhbWUgbGluZSBhcyB0aGUgY29kZSBpdCBpcyBpZ25vcmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNvIHJlc3BlY3QgdGhlIGlnbm9yZSBydWxlcyBpdCBzZXQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+aWdub3JlZExpbmVzWyR0aGlzLT50b2tlbnNbJGldWydsaW5lJ11dID0gJGlnbm9yZVJ1bGVzOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfS8vZW5kIGlmCiAgICAgICAgICAgICAgICB9Ly9lbmQgaWYKICAgICAgICAgICAgfS8vZW5kIGlmCgogICAgICAgICAgICBpZiAoJGlnbm9yaW5nICE9PSBudWxsICYmIGlzc2V0KCR0aGlzLT5pZ25vcmVkTGluZXNbJHRoaXMtPnRva2Vuc1skaV1bJ2xpbmUnXV0pID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgJHRoaXMtPmlnbm9yZWRMaW5lc1skdGhpcy0+dG9rZW5zWyRpXVsnbGluZSddXSA9ICRpZ25vcmluZzsKICAgICAgICAgICAgfQogICAgICAgIH0vL2VuZCBmb3IKCiAgICAgICAgLy8gSWYgYW5ub3RhdGlvbnMgYXJlIGJlaW5nIGlnbm9yZWQsIHdlIGNsZWFyIG91dCBhbGwgdGhlIGlnbm9yZSBydWxlcwogICAgICAgIC8vIGJ1dCBsZWF2ZSB0aGUgYW5ub3RhdGlvbnMgdG9rZW5pemVkIGFzIG5vcm1hbC4KICAgICAgICBpZiAoJGNoZWNrQW5ub3RhdGlvbnMgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICR0aGlzLT5pZ25vcmVkTGluZXMgPSBbXTsKICAgICAgICB9CgogICAgfS8vZW5kIGNyZWF0ZVBvc2l0aW9uTWFwKCkKCgogICAgLyoqCiAgICAgKiBSZXBsYWNlcyB0YWJzIGluIG9yaWdpbmFsIHRva2VuIGNvbnRlbnQgd2l0aCBzcGFjZXMuCiAgICAgKgogICAgICogRWFjaCB0YWIgY2FuIHJlcHJlc2VudCBiZXR3ZWVuIDEgYW5kICRjb25maWctPnRhYldpZHRoIHNwYWNlcywKICAgICAqIHNvIHRoaXMgY2Fubm90IGJlIGEgc3RyYWlnaHQgc3RyaW5nIHJlcGxhY2UuIFRoZSBvcmlnaW5hbCBjb250ZW50CiAgICAgKiBpcyBwbGFjZWQgaW50byBhbiBvcmlnX2NvbnRlbnQgaW5kZXggYW5kIHRoZSBuZXcgdG9rZW4gbGVuZ3RoIGlzIGFsc28KICAgICAqIHNldCBpbiB0aGUgbGVuZ3RoIGluZGV4LgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAgJHRva2VuICAgIFRoZSB0b2tlbiB0byByZXBsYWNlIHRhYnMgaW5zaWRlLgogICAgICogQHBhcmFtIHN0cmluZyAkcHJlZml4ICAgVGhlIGNoYXJhY3RlciB0byB1c2UgdG8gcmVwcmVzZW50IHRoZSBzdGFydCBvZiBhIHRhYi4KICAgICAqIEBwYXJhbSBzdHJpbmcgJHBhZGRpbmcgIFRoZSBjaGFyYWN0ZXIgdG8gdXNlIHRvIHJlcHJlc2VudCB0aGUgZW5kIG9mIGEgdGFiLgogICAgICogQHBhcmFtIGludCAgICAkdGFiV2lkdGggVGhlIG51bWJlciBvZiBzcGFjZXMgZWFjaCB0YWIgcmVwcmVzZW50cy4KICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlcGxhY2VUYWJzSW5Ub2tlbigmJHRva2VuLCAkcHJlZml4PScgJywgJHBhZGRpbmc9JyAnLCAkdGFiV2lkdGg9bnVsbCkKICAgIHsKICAgICAgICAkY2hlY2tFbmNvZGluZyA9IGZhbHNlOwogICAgICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ2ljb252X3N0cmxlbicpID09PSB0cnVlKSB7CiAgICAgICAgICAgICRjaGVja0VuY29kaW5nID0gdHJ1ZTsKICAgICAgICB9CgogICAgICAgICRjdXJyQ29sdW1uID0gJHRva2VuWydjb2x1bW4nXTsKICAgICAgICBpZiAoJHRhYldpZHRoID09PSBudWxsKSB7CiAgICAgICAgICAgICR0YWJXaWR0aCA9ICR0aGlzLT5jb25maWctPnRhYldpZHRoOwogICAgICAgICAgICBpZiAoJHRhYldpZHRoID09PSAwKSB7CiAgICAgICAgICAgICAgICAkdGFiV2lkdGggPSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAocnRyaW0oJHRva2VuWydjb250ZW50J10sICJcdCIpID09PSAnJykgewogICAgICAgICAgICAvLyBTdHJpbmcgb25seSBjb250YWlucyB0YWJzLCBzbyB3ZSBjYW4gc2hvcnRjdXQgdGhlIHByb2Nlc3MuCiAgICAgICAgICAgICRudW1UYWJzID0gc3RybGVuKCR0b2tlblsnY29udGVudCddKTsKCiAgICAgICAgICAgICRmaXJzdFRhYlNpemUgPSAoJHRhYldpZHRoIC0gKCgkY3VyckNvbHVtbiAtIDEpICUgJHRhYldpZHRoKSk7CiAgICAgICAgICAgICRsZW5ndGggICAgICAgPSAoJGZpcnN0VGFiU2l6ZSArICgkdGFiV2lkdGggKiAoJG51bVRhYnMgLSAxKSkpOwogICAgICAgICAgICAkbmV3Q29udGVudCAgID0gJHByZWZpeC5zdHJfcmVwZWF0KCRwYWRkaW5nLCAoJGxlbmd0aCAtIDEpKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGRldGVybWluZSB0aGUgbGVuZ3RoIG9mIGVhY2ggdGFiLgogICAgICAgICAgICAkdGFicyA9IGV4cGxvZGUoIlx0IiwgJHRva2VuWydjb250ZW50J10pOwoKICAgICAgICAgICAgJG51bVRhYnMgICAgPSAoY291bnQoJHRhYnMpIC0gMSk7CiAgICAgICAgICAgICR0YWJOdW0gICAgID0gMDsKICAgICAgICAgICAgJG5ld0NvbnRlbnQgPSAnJzsKICAgICAgICAgICAgJGxlbmd0aCAgICAgPSAwOwoKICAgICAgICAgICAgZm9yZWFjaCAoJHRhYnMgYXMgJGNvbnRlbnQpIHsKICAgICAgICAgICAgICAgIGlmICgkY29udGVudCAhPT0gJycpIHsKICAgICAgICAgICAgICAgICAgICAkbmV3Q29udGVudCAuPSAkY29udGVudDsKICAgICAgICAgICAgICAgICAgICBpZiAoJGNoZWNrRW5jb2RpbmcgPT09IHRydWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm90IHVzaW5nIHRoZSBkZWZhdWx0IGVuY29kaW5nLCBzbyB0YWtlIGEgYml0IG1vcmUgY2FyZS4KICAgICAgICAgICAgICAgICAgICAgICAgJG9sZExldmVsID0gZXJyb3JfcmVwb3J0aW5nKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX3JlcG9ydGluZygwKTsKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRlbnRMZW5ndGggPSBpY29udl9zdHJsZW4oJGNvbnRlbnQsICR0aGlzLT5jb25maWctPmVuY29kaW5nKTsKICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfcmVwb3J0aW5nKCRvbGRMZXZlbCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkY29udGVudExlbmd0aCA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN0cmluZyBjb250YWluZWQgaW52YWxpZCBjaGFyYWN0ZXJzLCBzbyByZXZlcnQgdG8gZGVmYXVsdC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250ZW50TGVuZ3RoID0gc3RybGVuKCRjb250ZW50KTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRjb250ZW50TGVuZ3RoID0gc3RybGVuKCRjb250ZW50KTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRjdXJyQ29sdW1uICs9ICRjb250ZW50TGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICRsZW5ndGggICAgICs9ICRjb250ZW50TGVuZ3RoOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIFRoZSBsYXN0IHBpZWNlIG9mIGNvbnRlbnQgZG9lcyBub3QgaGF2ZSBhIHRhYiBhZnRlciBpdC4KICAgICAgICAgICAgICAgIGlmICgkdGFiTnVtID09PSAkbnVtVGFicykgewogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIFByb2Nlc3MgdGhlIHRhYiB0aGF0IGNvbWVzIGFmdGVyIHRoZSBjb250ZW50LgogICAgICAgICAgICAgICAgJHRhYk51bSsrOwoKICAgICAgICAgICAgICAgIC8vIE1vdmUgdGhlIHBvaW50ZXIgdG8gdGhlIG5leHQgdGFiIHN0b3AuCiAgICAgICAgICAgICAgICAkcGFkICAgICAgICAgPSAoJHRhYldpZHRoIC0gKCRjdXJyQ29sdW1uICsgJHRhYldpZHRoIC0gMSkgJSAkdGFiV2lkdGgpOwogICAgICAgICAgICAgICAgJGN1cnJDb2x1bW4gKz0gJHBhZDsKICAgICAgICAgICAgICAgICRsZW5ndGggICAgICs9ICRwYWQ7CiAgICAgICAgICAgICAgICAkbmV3Q29udGVudCAuPSAkcHJlZml4LnN0cl9yZXBlYXQoJHBhZGRpbmcsICgkcGFkIC0gMSkpOwogICAgICAgICAgICB9Ly9lbmQgZm9yZWFjaAogICAgICAgIH0vL2VuZCBpZgoKICAgICAgICAkdG9rZW5bJ29yaWdfY29udGVudCddID0gJHRva2VuWydjb250ZW50J107CiAgICAgICAgJHRva2VuWydjb250ZW50J10gICAgICA9ICRuZXdDb250ZW50OwogICAgICAgICR0b2tlblsnbGVuZ3RoJ10gICAgICAgPSAkbGVuZ3RoOwoKICAgIH0vL2VuZCByZXBsYWNlVGFic0luVG9rZW4oKQoKCiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBtYXAgb2YgYnJhY2tldHMgcG9zaXRpb25zLgogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNyZWF0ZVRva2VuTWFwKCkKICAgIHsKICAgICAgICBpZiAoUEhQX0NPREVTTklGRkVSX1ZFUkJPU0lUWSA+IDEpIHsKICAgICAgICAgICAgZWNobyAiXHQqKiogU1RBUlQgVE9LRU4gTUFQICoqKiIuUEhQX0VPTDsKICAgICAgICB9CgogICAgICAgICRzcXVhcmVPcGVuZXJzICAgPSBbXTsKICAgICAgICAkY3VybHlPcGVuZXJzICAgID0gW107CiAgICAgICAgJHRoaXMtPm51bVRva2VucyA9IGNvdW50KCR0aGlzLT50b2tlbnMpOwoKICAgICAgICAkb3BlbmVycyAgID0gW107CiAgICAgICAgJG9wZW5Pd25lciA9IG51bGw7CgogICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICR0aGlzLT5udW1Ub2tlbnM7ICRpKyspIHsKICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgIFBhcmVudGhlc2lzIG1hcHBpbmcuCiAgICAgICAgICAgICovCgogICAgICAgICAgICBpZiAoaXNzZXQoVXRpbFxUb2tlbnM6OiRwYXJlbnRoZXNpc09wZW5lcnNbJHRoaXMtPnRva2Vuc1skaV1bJ2NvZGUnXV0pID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+dG9rZW5zWyRpXVsncGFyZW50aGVzaXNfb3BlbmVyJ10gPSBudWxsOwogICAgICAgICAgICAgICAgJHRoaXMtPnRva2Vuc1skaV1bJ3BhcmVudGhlc2lzX2Nsb3NlciddID0gbnVsbDsKICAgICAgICAgICAgICAgICR0aGlzLT50b2tlbnNbJGldWydwYXJlbnRoZXNpc19vd25lciddICA9ICRpOwogICAgICAgICAgICAgICAgJG9wZW5Pd25lciA9ICRpOwoKICAgICAgICAgICAgICAgIGlmIChQSFBfQ09ERVNOSUZGRVJfVkVSQk9TSVRZID4gMSkgewogICAgICAgICAgICAgICAgICAgIGVjaG8gc3RyX3JlcGVhdCgiXHQiLCAoY291bnQoJG9wZW5lcnMpICsgMSkpOwogICAgICAgICAgICAgICAgICAgIGVjaG8gIj0+IEZvdW5kIHBhcmVudGhlc2lzIG93bmVyIGF0ICRpIi5QSFBfRU9MOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgaWYgKCR0aGlzLT50b2tlbnNbJGldWydjb2RlJ10gPT09IFRfT1BFTl9QQVJFTlRIRVNJUykgewogICAgICAgICAgICAgICAgJG9wZW5lcnNbXSA9ICRpOwogICAgICAgICAgICAgICAgJHRoaXMtPnRva2Vuc1skaV1bJ3BhcmVudGhlc2lzX29wZW5lciddID0gJGk7CiAgICAgICAgICAgICAgICBpZiAoJG9wZW5Pd25lciAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgIGlmIChQSFBfQ09ERVNOSUZGRVJfVkVSQk9TSVRZID4gMSkgewogICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHN0cl9yZXBlYXQoIlx0IiwgY291bnQoJG9wZW5lcnMpKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPT4gRm91bmQgcGFyZW50aGVzaXMgb3BlbmVyIGF0ICRpIGZvciAkb3Blbk93bmVyIi5QSFBfRU9MOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnRva2Vuc1skb3Blbk93bmVyXVsncGFyZW50aGVzaXNfb3BlbmVyJ10gPSAkaTsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+dG9rZW5zWyRpXVsncGFyZW50aGVzaXNfb3duZXInXSAgICAgICAgICA9ICRvcGVuT3duZXI7CiAgICAgICAgICAgICAgICAgICAgJG9wZW5Pd25lciA9IG51bGw7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgZWNobyBzdHJfcmVwZWF0KCJcdCIsIGNvdW50KCRvcGVuZXJzKSk7CiAgICAgICAgICAgICAgICAgICAgZWNobyAiPT4gRm91bmQgdW5vd25lZCBwYXJlbnRoZXNpcyBvcGVuZXIgYXQgJGkiLlBIUF9FT0w7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSBpZiAoJHRoaXMtPnRva2Vuc1skaV1bJ2NvZGUnXSA9PT0gVF9DTE9TRV9QQVJFTlRIRVNJUykgewogICAgICAgICAgICAgICAgLy8gRGlkIHdlIHNldCBhbiBvd25lciBmb3IgdGhpcyBzZXQgb2YgcGFyZW50aGVzaXM/CiAgICAgICAgICAgICAgICAkbnVtT3BlbmVycyA9IGNvdW50KCRvcGVuZXJzKTsKICAgICAgICAgICAgICAgIGlmICgkbnVtT3BlbmVycyAhPT0gMCkgewogICAgICAgICAgICAgICAgICAgICRvcGVuZXIgPSBhcnJheV9wb3AoJG9wZW5lcnMpOwogICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkdGhpcy0+dG9rZW5zWyRvcGVuZXJdWydwYXJlbnRoZXNpc19vd25lciddKSA9PT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAkb3duZXIgPSAkdGhpcy0+dG9rZW5zWyRvcGVuZXJdWydwYXJlbnRoZXNpc19vd25lciddOwoKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnRva2Vuc1skb3duZXJdWydwYXJlbnRoZXNpc19jbG9zZXInXSA9ICRpOwogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+dG9rZW5zWyRpXVsncGFyZW50aGVzaXNfb3duZXInXSAgICAgID0gJG93bmVyOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHN0cl9yZXBlYXQoIlx0IiwgKGNvdW50KCRvcGVuZXJzKSArIDEpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIj0+IEZvdW5kIHBhcmVudGhlc2lzIGNsb3NlciBhdCAkaSBmb3IgJG93bmVyIi5QSFBfRU9MOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChQSFBfQ09ERVNOSUZGRVJfVkVSQk9TSVRZID4gMSkgewogICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHN0cl9yZXBlYXQoIlx0IiwgKGNvdW50KCRvcGVuZXJzKSArIDEpKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPT4gRm91bmQgdW5vd25lZCBwYXJlbnRoZXNpcyBjbG9zZXIgYXQgJGkgZm9yICRvcGVuZXIiLlBIUF9FT0w7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+dG9rZW5zWyRpXVsncGFyZW50aGVzaXNfb3BlbmVyJ10gICAgICA9ICRvcGVuZXI7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnRva2Vuc1skaV1bJ3BhcmVudGhlc2lzX2Nsb3NlciddICAgICAgPSAkaTsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+dG9rZW5zWyRvcGVuZXJdWydwYXJlbnRoZXNpc19jbG9zZXInXSA9ICRpOwogICAgICAgICAgICAgICAgfS8vZW5kIGlmCiAgICAgICAgICAgIH0gZWxzZSBpZiAoJHRoaXMtPnRva2Vuc1skaV1bJ2NvZGUnXSA9PT0gVF9BVFRSSUJVVEUpIHsKICAgICAgICAgICAgICAgICRvcGVuZXJzW10gPSAkaTsKICAgICAgICAgICAgICAgIGlmIChQSFBfQ09ERVNOSUZGRVJfVkVSQk9TSVRZID4gMSkgewogICAgICAgICAgICAgICAgICAgIGVjaG8gc3RyX3JlcGVhdCgiXHQiLCBjb3VudCgkb3BlbmVycykpOwogICAgICAgICAgICAgICAgICAgIGVjaG8gIj0+IEZvdW5kIGF0dHJpYnV0ZSBvcGVuZXIgYXQgJGkiLlBIUF9FT0w7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHRoaXMtPnRva2Vuc1skaV1bJ2F0dHJpYnV0ZV9vcGVuZXInXSA9ICRpOwogICAgICAgICAgICAgICAgJHRoaXMtPnRva2Vuc1skaV1bJ2F0dHJpYnV0ZV9jbG9zZXInXSA9IG51bGw7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoJHRoaXMtPnRva2Vuc1skaV1bJ2NvZGUnXSA9PT0gVF9BVFRSSUJVVEVfRU5EKSB7CiAgICAgICAgICAgICAgICAkbnVtT3BlbmVycyA9IGNvdW50KCRvcGVuZXJzKTsKICAgICAgICAgICAgICAgIGlmICgkbnVtT3BlbmVycyAhPT0gMCkgewogICAgICAgICAgICAgICAgICAgICRvcGVuZXIgPSBhcnJheV9wb3AoJG9wZW5lcnMpOwogICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkdGhpcy0+dG9rZW5zWyRvcGVuZXJdWydhdHRyaWJ1dGVfb3BlbmVyJ10pID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT50b2tlbnNbJG9wZW5lcl1bJ2F0dHJpYnV0ZV9jbG9zZXInXSA9ICRpOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHN0cl9yZXBlYXQoIlx0IiwgKGNvdW50KCRvcGVuZXJzKSArIDEpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIj0+IEZvdW5kIGF0dHJpYnV0ZSBjbG9zZXIgYXQgJGkgZm9yICRvcGVuZXIiLlBIUF9FT0w7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoJHggPSAoJG9wZW5lciArIDEpOyAkeCA8PSAkaTsgKyskeCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT50b2tlbnNbJHhdWydhdHRyaWJ1dGVfY2xvc2VyJ10pID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnRva2Vuc1skeF1bJ2F0dHJpYnV0ZV9vcGVuZXInXSA9ICRvcGVuZXI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+dG9rZW5zWyR4XVsnYXR0cmlidXRlX2Nsb3NlciddID0gJGk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gc3RyX3JlcGVhdCgiXHQiLCAoY291bnQoJG9wZW5lcnMpICsgMSkpOwogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI9PiBGb3VuZCB1bm93bmVkIGF0dHJpYnV0ZSBjbG9zZXIgYXQgJGkgZm9yICRvcGVuZXIiLlBIUF9FT0w7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfS8vZW5kIGlmCiAgICAgICAgICAgIH0vL2VuZCBpZgoKICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgIEJyYWNrZXQgbWFwcGluZy4KICAgICAgICAgICAgKi8KCiAgICAgICAgICAgIHN3aXRjaCAoJHRoaXMtPnRva2Vuc1skaV1bJ2NvZGUnXSkgewogICAgICAgICAgICBjYXNlIFRfT1BFTl9TUVVBUkVfQlJBQ0tFVDoKICAgICAgICAgICAgICAgICRzcXVhcmVPcGVuZXJzW10gPSAkaTsKCiAgICAgICAgICAgICAgICBpZiAoUEhQX0NPREVTTklGRkVSX1ZFUkJPU0lUWSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICBlY2hvIHN0cl9yZXBlYXQoIlx0IiwgY291bnQoJHNxdWFyZU9wZW5lcnMpKTsKICAgICAgICAgICAgICAgICAgICBlY2hvIHN0cl9yZXBlYXQoIlx0IiwgY291bnQoJGN1cmx5T3BlbmVycykpOwogICAgICAgICAgICAgICAgICAgIGVjaG8gIj0+IEZvdW5kIHNxdWFyZSBicmFja2V0IG9wZW5lciBhdCAkaSIuUEhQX0VPTDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIFRfT1BFTl9DVVJMWV9CUkFDS0VUOgogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT50b2tlbnNbJGldWydzY29wZV9jbG9zZXInXSkgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgJGN1cmx5T3BlbmVyc1tdID0gJGk7CgogICAgICAgICAgICAgICAgICAgIGlmIChQSFBfQ09ERVNOSUZGRVJfVkVSQk9TSVRZID4gMSkgewogICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHN0cl9yZXBlYXQoIlx0IiwgY291bnQoJHNxdWFyZU9wZW5lcnMpKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyBzdHJfcmVwZWF0KCJcdCIsIGNvdW50KCRjdXJseU9wZW5lcnMpKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPT4gRm91bmQgY3VybHkgYnJhY2tldCBvcGVuZXIgYXQgJGkiLlBIUF9FT0w7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgVF9DTE9TRV9TUVVBUkVfQlJBQ0tFVDoKICAgICAgICAgICAgICAgIGlmIChlbXB0eSgkc3F1YXJlT3BlbmVycykgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgJG9wZW5lciA9IGFycmF5X3BvcCgkc3F1YXJlT3BlbmVycyk7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnRva2Vuc1skaV1bJ2JyYWNrZXRfb3BlbmVyJ10gICAgICA9ICRvcGVuZXI7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnRva2Vuc1skaV1bJ2JyYWNrZXRfY2xvc2VyJ10gICAgICA9ICRpOwogICAgICAgICAgICAgICAgICAgICR0aGlzLT50b2tlbnNbJG9wZW5lcl1bJ2JyYWNrZXRfb3BlbmVyJ10gPSAkb3BlbmVyOwogICAgICAgICAgICAgICAgICAgICR0aGlzLT50b2tlbnNbJG9wZW5lcl1bJ2JyYWNrZXRfY2xvc2VyJ10gPSAkaTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gc3RyX3JlcGVhdCgiXHQiLCBjb3VudCgkc3F1YXJlT3BlbmVycykpOwogICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHN0cl9yZXBlYXQoIlx0IiwgY291bnQoJGN1cmx5T3BlbmVycykpOwogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICJcdD0+IEZvdW5kIHNxdWFyZSBicmFja2V0IGNsb3NlciBhdCAkaSBmb3IgJG9wZW5lciIuUEhQX0VPTDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSBUX0NMT1NFX0NVUkxZX0JSQUNLRVQ6CiAgICAgICAgICAgICAgICBpZiAoZW1wdHkoJGN1cmx5T3BlbmVycykgPT09IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgJiYgaXNzZXQoJHRoaXMtPnRva2Vuc1skaV1bJ3Njb3BlX29wZW5lciddKSA9PT0gZmFsc2UKICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgICRvcGVuZXIgPSBhcnJheV9wb3AoJGN1cmx5T3BlbmVycyk7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnRva2Vuc1skaV1bJ2JyYWNrZXRfb3BlbmVyJ10gICAgICA9ICRvcGVuZXI7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnRva2Vuc1skaV1bJ2JyYWNrZXRfY2xvc2VyJ10gICAgICA9ICRpOwogICAgICAgICAgICAgICAgICAgICR0aGlzLT50b2tlbnNbJG9wZW5lcl1bJ2JyYWNrZXRfb3BlbmVyJ10gPSAkb3BlbmVyOwogICAgICAgICAgICAgICAgICAgICR0aGlzLT50b2tlbnNbJG9wZW5lcl1bJ2JyYWNrZXRfY2xvc2VyJ10gPSAkaTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gc3RyX3JlcGVhdCgiXHQiLCBjb3VudCgkc3F1YXJlT3BlbmVycykpOwogICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHN0cl9yZXBlYXQoIlx0IiwgY291bnQoJGN1cmx5T3BlbmVycykpOwogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICJcdD0+IEZvdW5kIGN1cmx5IGJyYWNrZXQgY2xvc2VyIGF0ICRpIGZvciAkb3BlbmVyIi5QSFBfRU9MOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgY29udGludWUgMjsKICAgICAgICAgICAgfS8vZW5kIHN3aXRjaAogICAgICAgIH0vL2VuZCBmb3IKCiAgICAgICAgLy8gQ2xlYW51cCBmb3IgYW55IG9wZW5lcnMgdGhhdCB3ZSBkaWRuJ3QgZmluZCBjbG9zZXJzIGZvci4KICAgICAgICAvLyBUaGlzIHR5cGljYWxseSBtZWFucyB0aGVyZSB3YXMgYSBzeW50YXggZXJyb3IgYnJlYWtpbmcgdGhpbmdzLgogICAgICAgIGZvcmVhY2ggKCRvcGVuZXJzIGFzICRvcGVuZXIpIHsKICAgICAgICAgICAgdW5zZXQoJHRoaXMtPnRva2Vuc1skb3BlbmVyXVsncGFyZW50aGVzaXNfb3BlbmVyJ10pOwogICAgICAgICAgICB1bnNldCgkdGhpcy0+dG9rZW5zWyRvcGVuZXJdWydwYXJlbnRoZXNpc19vd25lciddKTsKICAgICAgICB9CgogICAgICAgIGlmIChQSFBfQ09ERVNOSUZGRVJfVkVSQk9TSVRZID4gMSkgewogICAgICAgICAgICBlY2hvICJcdCoqKiBFTkQgVE9LRU4gTUFQICoqKiIuUEhQX0VPTDsKICAgICAgICB9CgogICAgfS8vZW5kIGNyZWF0ZVRva2VuTWFwKCkKCgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgbWFwIGZvciB0aGUgcGFyZW50aGVzaXMgdG9rZW5zIHRoYXQgc3Vycm91bmQgb3RoZXIgdG9rZW5zLgogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNyZWF0ZVBhcmVudGhlc2lzTmVzdGluZ01hcCgpCiAgICB7CiAgICAgICAgJG1hcCA9IFtdOwogICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICR0aGlzLT5udW1Ub2tlbnM7ICRpKyspIHsKICAgICAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT50b2tlbnNbJGldWydwYXJlbnRoZXNpc19vcGVuZXInXSkgPT09IHRydWUKICAgICAgICAgICAgICAgICYmICRpID09PSAkdGhpcy0+dG9rZW5zWyRpXVsncGFyZW50aGVzaXNfb3BlbmVyJ10KICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICBpZiAoZW1wdHkoJG1hcCkgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnRva2Vuc1skaV1bJ25lc3RlZF9wYXJlbnRoZXNpcyddID0gJG1hcDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPnRva2Vuc1skaV1bJ3BhcmVudGhlc2lzX2Nsb3NlciddKSA9PT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgICAgICRtYXBbJHRoaXMtPnRva2Vuc1skaV1bJ3BhcmVudGhlc2lzX29wZW5lciddXQogICAgICAgICAgICAgICAgICAgICAgICA9ICR0aGlzLT50b2tlbnNbJGldWydwYXJlbnRoZXNpc19jbG9zZXInXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIGlmIChpc3NldCgkdGhpcy0+dG9rZW5zWyRpXVsncGFyZW50aGVzaXNfY2xvc2VyJ10pID09PSB0cnVlCiAgICAgICAgICAgICAgICAmJiAkaSA9PT0gJHRoaXMtPnRva2Vuc1skaV1bJ3BhcmVudGhlc2lzX2Nsb3NlciddCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgYXJyYXlfcG9wKCRtYXApOwogICAgICAgICAgICAgICAgaWYgKGVtcHR5KCRtYXApID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT50b2tlbnNbJGldWyduZXN0ZWRfcGFyZW50aGVzaXMnXSA9ICRtYXA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAoZW1wdHkoJG1hcCkgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnRva2Vuc1skaV1bJ25lc3RlZF9wYXJlbnRoZXNpcyddID0gJG1hcDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfS8vZW5kIGlmCiAgICAgICAgfS8vZW5kIGZvcgoKICAgIH0vL2VuZCBjcmVhdGVQYXJlbnRoZXNpc05lc3RpbmdNYXAoKQoKCiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBzY29wZSBtYXAgb2YgdG9rZW5zIHRoYXQgb3BlbiBzY29wZXMuCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKiBAc2VlICAgIHJlY3Vyc2VTY29wZU1hcCgpCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gY3JlYXRlU2NvcGVNYXAoKQogICAgewogICAgICAgIGlmIChQSFBfQ09ERVNOSUZGRVJfVkVSQk9TSVRZID4gMSkgewogICAgICAgICAgICBlY2hvICJcdCoqKiBTVEFSVCBTQ09QRSBNQVAgKioqIi5QSFBfRU9MOwogICAgICAgIH0KCiAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgJHRoaXMtPm51bVRva2VuczsgJGkrKykgewogICAgICAgICAgICAvLyBDaGVjayB0byBzZWUgaWYgdGhlIGN1cnJlbnQgdG9rZW4gc3RhcnRzIGEgbmV3IHNjb3BlLgogICAgICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPnNjb3BlT3BlbmVyc1skdGhpcy0+dG9rZW5zWyRpXVsnY29kZSddXSkgPT09IHRydWUpIHsKICAgICAgICAgICAgICAgIGlmIChQSFBfQ09ERVNOSUZGRVJfVkVSQk9TSVRZID4gMSkgewogICAgICAgICAgICAgICAgICAgICR0eXBlICAgID0gJHRoaXMtPnRva2Vuc1skaV1bJ3R5cGUnXTsKICAgICAgICAgICAgICAgICAgICAkY29udGVudCA9IFV0aWxcQ29tbW9uOjpwcmVwYXJlRm9yT3V0cHV0KCR0aGlzLT50b2tlbnNbJGldWydjb250ZW50J10pOwogICAgICAgICAgICAgICAgICAgIGVjaG8gIlx0U3RhcnQgc2NvcGUgbWFwIGF0ICRpOiR0eXBlID0+ICRjb250ZW50Ii5QSFBfRU9MOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmIChpc3NldCgkdGhpcy0+dG9rZW5zWyRpXVsnc2NvcGVfY29uZGl0aW9uJ10pID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIlx0KiBhbHJlYWR5IHByb2Nlc3NlZCwgc2tpcHBpbmcgKiIuUEhQX0VPTDsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRpID0gJHRoaXMtPnJlY3Vyc2VTY29wZU1hcCgkaSk7CiAgICAgICAgICAgIH0vL2VuZCBpZgogICAgICAgIH0vL2VuZCBmb3IKCiAgICAgICAgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgIGVjaG8gIlx0KioqIEVORCBTQ09QRSBNQVAgKioqIi5QSFBfRU9MOwogICAgICAgIH0KCiAgICB9Ly9lbmQgY3JlYXRlU2NvcGVNYXAoKQoKCiAgICAvKioKICAgICAqIFJlY3Vyc2VzIHRob3VnaCB0aGUgc2NvcGUgb3BlbmVycyB0byBidWlsZCBhIHNjb3BlIG1hcC4KICAgICAqCiAgICAgKiBAcGFyYW0gaW50ICRzdGFja1B0ciBUaGUgcG9zaXRpb24gaW4gdGhlIHN0YWNrIG9mIHRoZSB0b2tlbiB0aGF0CiAgICAgKiAgICAgICAgICAgICAgICAgICAgICBvcGVuZWQgdGhlIHNjb3BlIChlZy4gYW4gSUYgdG9rZW4gb3IgRk9SIHRva2VuKS4KICAgICAqIEBwYXJhbSBpbnQgJGRlcHRoICAgIEhvdyBtYW55IHNjb3BlIGxldmVscyBkb3duIHdlIGFyZS4KICAgICAqIEBwYXJhbSBpbnQgJGlnbm9yZSAgIEhvdyBtYW55IGN1cmx5IGJyYWNlcyB3ZSBhcmUgaWdub3JpbmcuCiAgICAgKgogICAgICogQHJldHVybiBpbnQgVGhlIHBvc2l0aW9uIGluIHRoZSBzdGFjayB0aGF0IGNsb3NlZCB0aGUgc2NvcGUuCiAgICAgKiBAdGhyb3dzIFxQSFBfQ29kZVNuaWZmZXJcRXhjZXB0aW9uc1xUb2tlbml6ZXJFeGNlcHRpb24gSWYgdGhlIG5lc3RpbmcgbGV2ZWwgZ2V0cyB0b28gZGVlcC4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiByZWN1cnNlU2NvcGVNYXAoJHN0YWNrUHRyLCAkZGVwdGg9MSwgJiRpZ25vcmU9MCkKICAgIHsKICAgICAgICBpZiAoUEhQX0NPREVTTklGRkVSX1ZFUkJPU0lUWSA+IDEpIHsKICAgICAgICAgICAgZWNobyBzdHJfcmVwZWF0KCJcdCIsICRkZXB0aCk7CiAgICAgICAgICAgIGVjaG8gIj0+IEJlZ2luIHNjb3BlIG1hcCByZWN1cnNpb24gYXQgdG9rZW4gJHN0YWNrUHRyIHdpdGggZGVwdGggJGRlcHRoIi5QSFBfRU9MOwogICAgICAgIH0KCiAgICAgICAgJG9wZW5lciAgICA9IG51bGw7CiAgICAgICAgJGN1cnJUeXBlICA9ICR0aGlzLT50b2tlbnNbJHN0YWNrUHRyXVsnY29kZSddOwogICAgICAgICRzdGFydExpbmUgPSAkdGhpcy0+dG9rZW5zWyRzdGFja1B0cl1bJ2xpbmUnXTsKCiAgICAgICAgLy8gV2Ugd2lsbCBuZWVkIHRoaXMgdG8gcmVzdG9yZSB0aGUgdmFsdWUgaWYgd2UgZW5kIHVwCiAgICAgICAgLy8gcmV0dXJuaW5nIGEgdG9rZW4gSUQgdGhhdCBjYXVzZXMgb3VyIGNhbGxpbmcgZnVuY3Rpb24gdG8gZ28gYmFjawogICAgICAgIC8vIG92ZXIgYWxyZWFkeSBpZ25vcmVkIGJyYWNlcy4KICAgICAgICAkb3JpZ2luYWxJZ25vcmUgPSAkaWdub3JlOwoKICAgICAgICAvLyBJZiB0aGUgc3RhcnQgdG9rZW4gZm9yIHRoaXMgc2NvcGUgb3BlbmVyIGlzIHRoZSBzYW1lIGFzCiAgICAgICAgLy8gdGhlIHNjb3BlIHRva2VuLCB3ZSBoYXZlIGFscmVhZHkgZm91bmQgb3VyIG9wZW5lci4KICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPnNjb3BlT3BlbmVyc1skY3VyclR5cGVdWydzdGFydCddWyRjdXJyVHlwZV0pID09PSB0cnVlKSB7CiAgICAgICAgICAgICRvcGVuZXIgPSAkc3RhY2tQdHI7CiAgICAgICAgfQoKICAgICAgICBmb3IgKCRpID0gKCRzdGFja1B0ciArIDEpOyAkaSA8ICR0aGlzLT5udW1Ub2tlbnM7ICRpKyspIHsKICAgICAgICAgICAgJHRva2VuVHlwZSA9ICR0aGlzLT50b2tlbnNbJGldWydjb2RlJ107CgogICAgICAgICAgICBpZiAoUEhQX0NPREVTTklGRkVSX1ZFUkJPU0lUWSA+IDEpIHsKICAgICAgICAgICAgICAgICR0eXBlICAgID0gJHRoaXMtPnRva2Vuc1skaV1bJ3R5cGUnXTsKICAgICAgICAgICAgICAgICRsaW5lICAgID0gJHRoaXMtPnRva2Vuc1skaV1bJ2xpbmUnXTsKICAgICAgICAgICAgICAgICRjb250ZW50ID0gVXRpbFxDb21tb246OnByZXBhcmVGb3JPdXRwdXQoJHRoaXMtPnRva2Vuc1skaV1bJ2NvbnRlbnQnXSk7CgogICAgICAgICAgICAgICAgZWNobyBzdHJfcmVwZWF0KCJcdCIsICRkZXB0aCk7CiAgICAgICAgICAgICAgICBlY2hvICJQcm9jZXNzIHRva2VuICRpIG9uIGxpbmUgJGxpbmUgWyI7CiAgICAgICAgICAgICAgICBpZiAoJG9wZW5lciAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgIGVjaG8gIm9wZW5lcjokb3BlbmVyOyI7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCRpZ25vcmUgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgZWNobyAiaWdub3JlPSRpZ25vcmU7IjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBlY2hvICJdOiAkdHlwZSA9PiAkY29udGVudCIuUEhQX0VPTDsKICAgICAgICAgICAgfS8vZW5kIGlmCgogICAgICAgICAgICAvLyBWZXJ5IHNwZWNpYWwgY2FzZSBmb3IgSUYgc3RhdGVtZW50cyBpbiBQSFAgdGhhdCBjYW4gYmUgZGVmaW5lZCB3aXRob3V0CiAgICAgICAgICAgIC8vIHNjb3BlIHRva2Vucy4gRS5nLiwgaWYgKDEpIDE7IDEgPyAoMSA/IDEgOiAxKSA6IDE7CiAgICAgICAgICAgIC8vIElmIGFuIElGIHN0YXRlbWVudCBiZWxvdyB0aGlzIG9uZSBoYXMgYW4gb3BlbmVyIGJ1dCBubwogICAgICAgICAgICAvLyBrZXl3b3JkLCB0aGUgb3BlbmVyIHdpbGwgYmUgaW5jb3JyZWN0bHkgYXNzaWduZWQgdG8gdGhpcyBJRiBzdGF0ZW1lbnQuCiAgICAgICAgICAgIC8vIFRoZSBzYW1lIGNhc2UgYWxzbyBhcHBsaWVzIHRvIFVTRSBzdGF0ZW1lbnRzLCB3aGljaCBkb24ndCBoYXZlIHRvIGhhdmUKICAgICAgICAgICAgLy8gb3BlbmVycywgc28gYSBmb2xsb3dpbmcgVVNFIHN0YXRlbWVudCBjYW4gY2F1c2UgYW4gaW5jb3JyZWN0IGJyYWNlIG1hdGNoLgogICAgICAgICAgICBpZiAoKCRjdXJyVHlwZSA9PT0gVF9JRiB8fCAkY3VyclR5cGUgPT09IFRfRUxTRSB8fCAkY3VyclR5cGUgPT09IFRfVVNFKQogICAgICAgICAgICAgICAgJiYgJG9wZW5lciA9PT0gbnVsbAogICAgICAgICAgICAgICAgJiYgKCR0aGlzLT50b2tlbnNbJGldWydjb2RlJ10gPT09IFRfU0VNSUNPTE9OCiAgICAgICAgICAgICAgICB8fCAkdGhpcy0+dG9rZW5zWyRpXVsnY29kZSddID09PSBUX0NMT1NFX1RBRykKICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICBpZiAoUEhQX0NPREVTTklGRkVSX1ZFUkJPU0lUWSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAkdHlwZSA9ICR0aGlzLT50b2tlbnNbJHN0YWNrUHRyXVsndHlwZSddOwogICAgICAgICAgICAgICAgICAgIGVjaG8gc3RyX3JlcGVhdCgiXHQiLCAkZGVwdGgpOwogICAgICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+dG9rZW5zWyRpXVsnY29kZSddID09PSBUX1NFTUlDT0xPTikgewogICAgICAgICAgICAgICAgICAgICAgICAkY2xvc2VyVHlwZSA9ICdzZW1pY29sb24nOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRjbG9zZXJUeXBlID0gJ2Nsb3NlIHRhZyc7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBlY2hvICI9PiBGb3VuZCAkY2xvc2VyVHlwZSBiZWZvcmUgc2NvcGUgb3BlbmVyIGZvciAkc3RhY2tQdHI6JHR5cGUsIGJhaWxpbmciLlBIUF9FT0w7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuICRpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIFBIUCBjb250cm9sIHN0cnVjdHVyZXMgdGhhdCBoYXZlIG5vIGJyYWNlcy4KICAgICAgICAgICAgLy8gSWYgd2UgZmluZCBhIGN1cmx5IGJyYWNlIGNsb3NlciBiZWZvcmUgd2UgZmluZCB0aGUgb3BlbmVyLAogICAgICAgICAgICAvLyB3ZSdyZSBub3QgZ29pbmcgdG8gZmluZCBhbiBvcGVuZXIuIFRoYXQgY2xvc2VyIHByb2JhYmx5IGJlbG9uZ3MgdG8KICAgICAgICAgICAgLy8gYSBjb250cm9sIHN0cnVjdHVyZSBoaWdoZXIgdXAuCiAgICAgICAgICAgIGlmICgkb3BlbmVyID09PSBudWxsCiAgICAgICAgICAgICAgICAmJiAkaWdub3JlID09PSAwCiAgICAgICAgICAgICAgICAmJiAkdG9rZW5UeXBlID09PSBUX0NMT1NFX0NVUkxZX0JSQUNLRVQKICAgICAgICAgICAgICAgICYmIGlzc2V0KCR0aGlzLT5zY29wZU9wZW5lcnNbJGN1cnJUeXBlXVsnZW5kJ11bJHRva2VuVHlwZV0pID09PSB0cnVlCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgJHR5cGUgPSAkdGhpcy0+dG9rZW5zWyRzdGFja1B0cl1bJ3R5cGUnXTsKICAgICAgICAgICAgICAgICAgICBlY2hvIHN0cl9yZXBlYXQoIlx0IiwgJGRlcHRoKTsKICAgICAgICAgICAgICAgICAgICBlY2hvICI9PiBGb3VuZCBjdXJseSBicmFjZSBjbG9zZXIgYmVmb3JlIHNjb3BlIG9wZW5lciBmb3IgJHN0YWNrUHRyOiR0eXBlLCBiYWlsaW5nIi5QSFBfRU9MOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiAoJGkgLSAxKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRvcGVuZXIgIT09IG51bGwKICAgICAgICAgICAgICAgICYmIChpc3NldCgkdGhpcy0+dG9rZW5zWyRpXVsnc2NvcGVfb3BlbmVyJ10pID09PSBmYWxzZQogICAgICAgICAgICAgICAgfHwgJHRoaXMtPnNjb3BlT3BlbmVyc1skdGhpcy0+dG9rZW5zWyRzdGFja1B0cl1bJ2NvZGUnXV1bJ3NoYXJlZCddID09PSB0cnVlKQogICAgICAgICAgICAgICAgJiYgaXNzZXQoJHRoaXMtPnNjb3BlT3BlbmVyc1skY3VyclR5cGVdWydlbmQnXVskdG9rZW5UeXBlXSkgPT09IHRydWUKICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICBpZiAoJGlnbm9yZSA+IDAgJiYgJHRva2VuVHlwZSA9PT0gVF9DTE9TRV9DVVJMWV9CUkFDS0VUKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGxhc3Qgb3BlbmluZyBicmFja2V0IG11c3QgaGF2ZSBiZWVuIGZvciBhIHN0cmluZwogICAgICAgICAgICAgICAgICAgIC8vIG9mZnNldCBvciBhbGlrZSwgc28gbGV0J3MgaWdub3JlIGl0LgogICAgICAgICAgICAgICAgICAgIGlmIChQSFBfQ09ERVNOSUZGRVJfVkVSQk9TSVRZID4gMSkgewogICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHN0cl9yZXBlYXQoIlx0IiwgJGRlcHRoKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnKiBmaW5pc2hlZCBpZ25vcmluZyBjdXJseSBicmFjZSAqJy5QSFBfRU9MOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJGlnbm9yZS0tOwogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkdGhpcy0+dG9rZW5zWyRvcGVuZXJdWydjb2RlJ10gPT09IFRfT1BFTl9DVVJMWV9CUkFDS0VUCiAgICAgICAgICAgICAgICAgICAgJiYgJHRva2VuVHlwZSAhPT0gVF9DTE9TRV9DVVJMWV9CUkFDS0VUCiAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAvLyBUaGUgb3BlbmVyIGlzIGEgY3VybHkgYnJhY2tldCBzbyB0aGUgY2xvc2VyIG11c3QgYmUgYSBjdXJseSBicmFja2V0IGFzIHdlbGwuCiAgICAgICAgICAgICAgICAgICAgLy8gV2UgaWdub3JlIHRoaXMgY2xvc2VyIHRvIGhhbmRsZSBjYXNlcyBzdWNoIGFzIFRfRUxTRSBvciBUX0VMU0VJRiBiZWluZyBjb25zaWRlcmVkCiAgICAgICAgICAgICAgICAgICAgLy8gYSBjbG9zZXIgb2YgVF9JRiB3aGVuIGl0IHNob3VsZCBub3QuCiAgICAgICAgICAgICAgICAgICAgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlID0gJHRoaXMtPnRva2Vuc1skc3RhY2tQdHJdWyd0eXBlJ107CiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gc3RyX3JlcGVhdCgiXHQiLCAkZGVwdGgpOwogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI9PiBJZ25vcmluZyBub24tY3VybHkgc2NvcGUgY2xvc2VyIGZvciAkc3RhY2tQdHI6JHR5cGUiLlBIUF9FT0w7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkc2NvcGVDbG9zZXIgPSAkaTsKICAgICAgICAgICAgICAgICAgICAkdG9kbyAgICAgICAgPSBbCiAgICAgICAgICAgICAgICAgICAgICAgICRzdGFja1B0ciwKICAgICAgICAgICAgICAgICAgICAgICAgJG9wZW5lciwKICAgICAgICAgICAgICAgICAgICBdOwoKICAgICAgICAgICAgICAgICAgICBpZiAoUEhQX0NPREVTTklGRkVSX1ZFUkJPU0lUWSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGUgICAgICAgPSAkdGhpcy0+dG9rZW5zWyRzdGFja1B0cl1bJ3R5cGUnXTsKICAgICAgICAgICAgICAgICAgICAgICAgJGNsb3NlclR5cGUgPSAkdGhpcy0+dG9rZW5zWyRzY29wZUNsb3Nlcl1bJ3R5cGUnXTsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyBzdHJfcmVwZWF0KCJcdCIsICRkZXB0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIj0+IEZvdW5kIHNjb3BlIGNsb3NlciAoJHNjb3BlQ2xvc2VyOiRjbG9zZXJUeXBlKSBmb3IgJHN0YWNrUHRyOiR0eXBlIi5QSFBfRU9MOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJHZhbGlkQ2xvc2VyID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICBpZiAoKCR0aGlzLT50b2tlbnNbJHN0YWNrUHRyXVsnY29kZSddID09PSBUX0lGIHx8ICR0aGlzLT50b2tlbnNbJHN0YWNrUHRyXVsnY29kZSddID09PSBUX0VMU0VJRikKICAgICAgICAgICAgICAgICAgICAgICAgJiYgKCR0b2tlblR5cGUgPT09IFRfRUxTRSB8fCAkdG9rZW5UeXBlID09PSBUX0VMU0VJRikKICAgICAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gVG8gYmUgYSBjbG9zZXIsIHRoaXMgdG9rZW4gbXVzdCBoYXZlIGFuIG9wZW5lci4KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHN0cl9yZXBlYXQoIlx0IiwgJGRlcHRoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIiogY2xvc2VyIG5lZWRzIHRvIGJlIHRlc3RlZCAqIi5QSFBfRU9MOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAkaSA9IHNlbGY6OnJlY3Vyc2VTY29wZU1hcCgkaSwgKCRkZXB0aCArIDEpLCAkaWdub3JlKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkdGhpcy0+dG9rZW5zWyRzY29wZUNsb3Nlcl1bJ3Njb3BlX29wZW5lciddKSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR2YWxpZENsb3NlciA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyBzdHJfcmVwZWF0KCJcdCIsICRkZXB0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiKiBjbG9zZXIgaXMgbm90IHZhbGlkIChubyBvcGVuZXIgZm91bmQpICoiLlBIUF9FT0w7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJHRoaXMtPnRva2Vuc1skdGhpcy0+dG9rZW5zWyRzY29wZUNsb3Nlcl1bJ3Njb3BlX29wZW5lciddXVsnY29kZSddICE9PSAkdGhpcy0+dG9rZW5zWyRvcGVuZXJdWydjb2RlJ10pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR2YWxpZENsb3NlciA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyBzdHJfcmVwZWF0KCJcdCIsICRkZXB0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGUgICAgICAgPSAkdGhpcy0+dG9rZW5zWyR0aGlzLT50b2tlbnNbJHNjb3BlQ2xvc2VyXVsnc2NvcGVfb3BlbmVyJ11dWyd0eXBlJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG9wZW5lclR5cGUgPSAkdGhpcy0+dG9rZW5zWyRvcGVuZXJdWyd0eXBlJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiKiBjbG9zZXIgaXMgbm90IHZhbGlkIChtaXNtYXRjaGVkIG9wZW5lciB0eXBlOyAkdHlwZSAhPSAkb3BlbmVyVHlwZSkgKiIuUEhQX0VPTDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChQSFBfQ09ERVNOSUZGRVJfVkVSQk9TSVRZID4gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyBzdHJfcmVwZWF0KCJcdCIsICRkZXB0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICIqIGNsb3NlciB3YXMgdmFsaWQgKiIuUEhQX0VPTDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBjbG9zZXIgd2FzIG5vdCBwcm9jZXNzZWQsIHNvIHdlIG5lZWQgdG8KICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29tcGxldGUgdGhhdCB0b2tlbiBhcyB3ZWxsLgogICAgICAgICAgICAgICAgICAgICAgICAkdG9kb1tdID0gJHNjb3BlQ2xvc2VyOwogICAgICAgICAgICAgICAgICAgIH0vL2VuZCBpZgoKICAgICAgICAgICAgICAgICAgICBpZiAoJHZhbGlkQ2xvc2VyID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCR0b2RvIGFzICR0b2tlbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnRva2Vuc1skdG9rZW5dWydzY29wZV9jb25kaXRpb24nXSA9ICRzdGFja1B0cjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT50b2tlbnNbJHRva2VuXVsnc2NvcGVfb3BlbmVyJ10gICAgPSAkb3BlbmVyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnRva2Vuc1skdG9rZW5dWydzY29wZV9jbG9zZXInXSAgICA9ICRzY29wZUNsb3NlcjsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5zY29wZU9wZW5lcnNbJHRoaXMtPnRva2Vuc1skc3RhY2tQdHJdWydjb2RlJ11dWydzaGFyZWQnXSA9PT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXMgd2UgYXJlIGdvaW5nIGJhY2sgdG8gd2hlcmUgd2Ugc3RhcnRlZCBvcmlnaW5hbGx5LCByZXN0b3JlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgaWdub3JlIHZhbHVlIGJhY2sgdG8gaXRzIG9yaWdpbmFsIHZhbHVlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGlnbm9yZSA9ICRvcmlnaW5hbElnbm9yZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkb3BlbmVyOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCRzY29wZUNsb3NlciA9PT0gJGkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIGlzc2V0KCR0aGlzLT5zY29wZU9wZW5lcnNbJHRva2VuVHlwZV0pID09PSB0cnVlCiAgICAgICAgICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVW5zZXQgc2NvcGVfY29uZGl0aW9uIGhlcmUgb3IgZWxzZSB0aGUgdG9rZW4gd2lsbCBhcHBlYXIgdG8gaGF2ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxyZWFkeSBiZWVuIHByb2Nlc3NlZCwgYW5kIGl0IHdpbGwgYmUgc2tpcHBlZC4gTm9ybWFsbHkgd2Ugd2FudCB0aGF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnV0IGluIHRoaXMgY2FzZSwgdGhlIHRva2VuIGlzIGJvdGggYSBjbG9zZXIgYW5kIGFuIG9wZW5lciwgc28KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGl0IG5lZWRzIHRvIGFjdCBsaWtlIGFuIG9wZW5lci4gVGhpcyBpcyBhbHNvIHdoeSB3ZSByZXR1cm4gdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0b2tlbiBiZWZvcmUgdGhpcyBvbmU7IHNvIHRoZSBjbG9zZXIgaGFzIGEgY2hhbmNlIHRvIGJlIHByb2Nlc3NlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBzZWNvbmQgdGltZSwgYnV0IGFzIGFuIG9wZW5lci4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2V0KCR0aGlzLT50b2tlbnNbJHNjb3BlQ2xvc2VyXVsnc2NvcGVfY29uZGl0aW9uJ10pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgkaSAtIDEpOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgfS8vZW5kIGlmCiAgICAgICAgICAgICAgICB9Ly9lbmQgaWYKICAgICAgICAgICAgfS8vZW5kIGlmCgogICAgICAgICAgICAvLyBJcyB0aGlzIGFuIG9wZW5pbmcgY29uZGl0aW9uID8KICAgICAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5zY29wZU9wZW5lcnNbJHRva2VuVHlwZV0pID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICBpZiAoJG9wZW5lciA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgIGlmICgkdG9rZW5UeXBlID09PSBUX1VTRSkgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBQSFAgdXNlIGtleXdvcmRzIGFyZSBzcGVjaWFsIGJlY2F1c2UgdGhleSBjYW4gYmUKICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlZCBhcyBibG9ja3MgYnV0IGFsc28gaW5saW5lIGluIGZ1bmN0aW9uIGRlZmluaXRpb25zLgogICAgICAgICAgICAgICAgICAgICAgICAvLyBTbyBpZiB3ZSBmaW5kIHRoZW0gbmVzdGVkIGluc2lkZSBhbm90aGVyIG9wZW5lciwganVzdCBza2lwIHRoZW0uCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKCR0b2tlblR5cGUgPT09IFRfTkFNRVNQQUNFKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBIUCBuYW1lc3BhY2Uga2V5d29yZHMgYXJlIHNwZWNpYWwgYmVjYXVzZSB0aGV5IGNhbiBiZQogICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VkIGFzIGJsb2NrcyBidXQgYWxzbyBpbmxpbmUgYXMgb3BlcmF0b3JzLgogICAgICAgICAgICAgICAgICAgICAgICAvLyBTbyBpZiB3ZSBmaW5kIHRoZW0gbmVzdGVkIGluc2lkZSBhbm90aGVyIG9wZW5lciwganVzdCBza2lwIHRoZW0uCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKCR0b2tlblR5cGUgPT09IFRfRlVOQ1RJT04KICAgICAgICAgICAgICAgICAgICAgICAgJiYgJHRoaXMtPnRva2Vuc1skc3RhY2tQdHJdWydjb2RlJ10gIT09IFRfRlVOQ1RJT04KICAgICAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gUHJvYmFibHkgYSBjbG9zdXJlLCBzbyBwcm9jZXNzIGl0IG1hbnVhbGx5LgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoUEhQX0NPREVTTklGRkVSX1ZFUkJPU0lUWSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlID0gJHRoaXMtPnRva2Vuc1skc3RhY2tQdHJdWyd0eXBlJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHN0cl9yZXBlYXQoIlx0IiwgJGRlcHRoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIj0+IEZvdW5kIGZ1bmN0aW9uIGJlZm9yZSBzY29wZSBvcGVuZXIgZm9yICRzdGFja1B0cjokdHlwZSwgcHJvY2Vzc2luZyBtYW51YWxseSIuUEhQX0VPTDsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT50b2tlbnNbJGldWydzY29wZV9jbG9zZXInXSkgPT09IHRydWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlJ3ZlIGFscmVhZHkgcHJvY2Vzc2VkIHRoaXMgY2xvc3VyZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQSFBfQ09ERVNOSUZGRVJfVkVSQk9TSVRZID4gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gc3RyX3JlcGVhdCgiXHQiLCAkZGVwdGgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJyogYWxyZWFkeSBwcm9jZXNzZWQsIHNraXBwaW5nIConLlBIUF9FT0w7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGkgPSAkdGhpcy0+dG9rZW5zWyRpXVsnc2NvcGVfY2xvc2VyJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgJGkgPSBzZWxmOjpyZWN1cnNlU2NvcGVNYXAoJGksICgkZGVwdGggKyAxKSwgJGlnbm9yZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIH0vL2VuZCBpZgoKICAgICAgICAgICAgICAgICAgICBpZiAoJHRva2VuVHlwZSA9PT0gVF9DTEFTUykgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBQcm9iYWJseSBhbiBhbm9ueW1vdXMgY2xhc3MgaW5zaWRlIGFub3RoZXIgYW5vbnltb3VzIGNsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICAvLyBzbyBwcm9jZXNzIGl0IG1hbnVhbGx5LgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoUEhQX0NPREVTTklGRkVSX1ZFUkJPU0lUWSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlID0gJHRoaXMtPnRva2Vuc1skc3RhY2tQdHJdWyd0eXBlJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHN0cl9yZXBlYXQoIlx0IiwgJGRlcHRoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIj0+IEZvdW5kIGNsYXNzIGJlZm9yZSBzY29wZSBvcGVuZXIgZm9yICRzdGFja1B0cjokdHlwZSwgcHJvY2Vzc2luZyBtYW51YWxseSIuUEhQX0VPTDsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT50b2tlbnNbJGldWydzY29wZV9jbG9zZXInXSkgPT09IHRydWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlJ3ZlIGFscmVhZHkgcHJvY2Vzc2VkIHRoaXMgYW5vbiBjbGFzcy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQSFBfQ09ERVNOSUZGRVJfVkVSQk9TSVRZID4gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gc3RyX3JlcGVhdCgiXHQiLCAkZGVwdGgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJyogYWxyZWFkeSBwcm9jZXNzZWQsIHNraXBwaW5nIConLlBIUF9FT0w7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGkgPSAkdGhpcy0+dG9rZW5zWyRpXVsnc2NvcGVfY2xvc2VyJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgJGkgPSBzZWxmOjpyZWN1cnNlU2NvcGVNYXAoJGksICgkZGVwdGggKyAxKSwgJGlnbm9yZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIH0vL2VuZCBpZgoKICAgICAgICAgICAgICAgICAgICAvLyBGb3VuZCBhbm90aGVyIG9wZW5pbmcgY29uZGl0aW9uIGJ1dCBzdGlsbCBoYXZlbid0CiAgICAgICAgICAgICAgICAgICAgLy8gZm91bmQgb3VyIG9wZW5lciwgc28gd2UgYXJlIG5ldmVyIGdvaW5nIHRvIGZpbmQgb25lLgogICAgICAgICAgICAgICAgICAgIGlmIChQSFBfQ09ERVNOSUZGRVJfVkVSQk9TSVRZID4gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAkdHlwZSA9ICR0aGlzLT50b2tlbnNbJHN0YWNrUHRyXVsndHlwZSddOwogICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHN0cl9yZXBlYXQoIlx0IiwgJGRlcHRoKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPT4gRm91bmQgbmV3IG9wZW5pbmcgY29uZGl0aW9uIGJlZm9yZSBzY29wZSBvcGVuZXIgZm9yICRzdGFja1B0cjokdHlwZSwgIjsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmICgoJHRoaXMtPnRva2Vuc1skc3RhY2tQdHJdWydjb2RlJ10gPT09IFRfSUYKICAgICAgICAgICAgICAgICAgICAgICAgfHwgJHRoaXMtPnRva2Vuc1skc3RhY2tQdHJdWydjb2RlJ10gPT09IFRfRUxTRUlGCiAgICAgICAgICAgICAgICAgICAgICAgIHx8ICR0aGlzLT50b2tlbnNbJHN0YWNrUHRyXVsnY29kZSddID09PSBUX0VMU0UpCiAgICAgICAgICAgICAgICAgICAgICAgICYmICgkdGhpcy0+dG9rZW5zWyRpXVsnY29kZSddID09PSBUX0VMU0UKICAgICAgICAgICAgICAgICAgICAgICAgfHwgJHRoaXMtPnRva2Vuc1skaV1bJ2NvZGUnXSA9PT0gVF9FTFNFSUYpCiAgICAgICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQSFBfQ09ERVNOSUZGRVJfVkVSQk9TSVRZID4gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiY29udGludWluZyIuUEhQX0VPTDsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgkaSAtIDEpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQSFBfQ09ERVNOSUZGRVJfVkVSQk9TSVRZID4gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiYmFja3RyYWNraW5nIi5QSFBfRU9MOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHN0YWNrUHRyOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0vL2VuZCBpZgoKICAgICAgICAgICAgICAgIGlmIChQSFBfQ09ERVNOSUZGRVJfVkVSQk9TSVRZID4gMSkgewogICAgICAgICAgICAgICAgICAgIGVjaG8gc3RyX3JlcGVhdCgiXHQiLCAkZGVwdGgpOwogICAgICAgICAgICAgICAgICAgIGVjaG8gJyogdG9rZW4gaXMgYW4gb3BlbmluZyBjb25kaXRpb24gKicuUEhQX0VPTDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkaXNTaGFyZWQgPSAoJHRoaXMtPnNjb3BlT3BlbmVyc1skdG9rZW5UeXBlXVsnc2hhcmVkJ10gPT09IHRydWUpOwoKICAgICAgICAgICAgICAgIGlmIChpc3NldCgkdGhpcy0+dG9rZW5zWyRpXVsnc2NvcGVfY29uZGl0aW9uJ10pID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gV2UndmUgYmVlbiBoZXJlIGJlZm9yZS4KICAgICAgICAgICAgICAgICAgICBpZiAoUEhQX0NPREVTTklGRkVSX1ZFUkJPU0lUWSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyBzdHJfcmVwZWF0KCJcdCIsICRkZXB0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJyogYWxyZWFkeSBwcm9jZXNzZWQsIHNraXBwaW5nIConLlBIUF9FT0w7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBpZiAoJGlzU2hhcmVkID09PSBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAmJiBpc3NldCgkdGhpcy0+dG9rZW5zWyRpXVsnc2NvcGVfY2xvc2VyJ10pID09PSB0cnVlCiAgICAgICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRpID0gJHRoaXMtPnRva2Vuc1skaV1bJ3Njb3BlX2Nsb3NlciddOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCRjdXJyVHlwZSA9PT0gJHRva2VuVHlwZQogICAgICAgICAgICAgICAgICAgICYmICRpc1NoYXJlZCA9PT0gZmFsc2UKICAgICAgICAgICAgICAgICAgICAmJiAkb3BlbmVyID09PSBudWxsCiAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlbid0IHlldCBmb3VuZCBvdXIgb3BlbmVyLCBidXQgd2UgaGF2ZSBmb3VuZCBhbm90aGVyCiAgICAgICAgICAgICAgICAgICAgLy8gc2NvcGUgb3BlbmVyIHdoaWNoIGlzIHRoZSBzYW1lIHR5cGUgYXMgdXMsIGFuZCB3ZSBkb24ndAogICAgICAgICAgICAgICAgICAgIC8vIHNoYXJlIG9wZW5lcnMsIHNvIHdlIHdpbGwgbmV2ZXIgZmluZCBvbmUuCiAgICAgICAgICAgICAgICAgICAgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gc3RyX3JlcGVhdCgiXHQiLCAkZGVwdGgpOwogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICcqIGl0IHdhcyBhbm90aGVyIHRva2VuXCdzIG9wZW5lciwgYmFpbGluZyAqJy5QSFBfRU9MOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRzdGFja1B0cjsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gc3RyX3JlcGVhdCgiXHQiLCAkZGVwdGgpOwogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICcqIHNlYXJjaGluZyBmb3Igb3BlbmVyIConLlBIUF9FT0w7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPnNjb3BlT3BlbmVyc1skdG9rZW5UeXBlXVsnZW5kJ11bVF9DTE9TRV9DVVJMWV9CUkFDS0VUXSkgPT09IHRydWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG9sZElnbm9yZSA9ICRpZ25vcmU7CiAgICAgICAgICAgICAgICAgICAgICAgICRpZ25vcmUgICAgPSAwOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgLy8gUEhQIGhhcyBhIG1heCBuZXN0aW5nIGxldmVsIGZvciBmdW5jdGlvbnMuIFN0b3AgYmVmb3JlIHdlIGhpdCB0aGF0IGxpbWl0CiAgICAgICAgICAgICAgICAgICAgLy8gYmVjYXVzZSB0b28gbWFueSBsb29wcyBtZWFucyB3ZSd2ZSBydW4gaW50byB0cm91YmxlIGFueXdheS4KICAgICAgICAgICAgICAgICAgICBpZiAoJGRlcHRoID4gNTApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHN0cl9yZXBlYXQoIlx0IiwgJGRlcHRoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJyogcmVhY2hlZCBtYXhpbXVtIG5lc3RpbmcgbGV2ZWw7IGFib3J0aW5nIConLlBIUF9FT0w7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUb2tlbml6ZXJFeGNlcHRpb24oJ01heGltdW0gbmVzdGluZyBsZXZlbCByZWFjaGVkOyBmaWxlIGNvdWxkIG5vdCBiZSBwcm9jZXNzZWQnKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRvbGREZXB0aCA9ICRkZXB0aDsKICAgICAgICAgICAgICAgICAgICBpZiAoJGlzU2hhcmVkID09PSB0cnVlCiAgICAgICAgICAgICAgICAgICAgICAgICYmIGlzc2V0KCR0aGlzLT5zY29wZU9wZW5lcnNbJHRva2VuVHlwZV1bJ3dpdGgnXVskY3VyclR5cGVdKSA9PT0gdHJ1ZQogICAgICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBEb24ndCBhbGxvdyB0aGUgZGVwdGggdG8gaW5jcmVtZW50IGJlY2F1c2UgdGhpcyBpcwogICAgICAgICAgICAgICAgICAgICAgICAvLyBwb3NzaWJseSBub3QgYSB0cnVlIG5lc3RpbmcgaWYgd2UgYXJlIHNoYXJpbmcgb3VyIGNsb3Nlci4KICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBjYW4gaGFwcGVuLCBmb3IgZXhhbXBsZSwgd2hlbiBhIFNXSVRDSCBoYXMgYSBsYXJnZQogICAgICAgICAgICAgICAgICAgICAgICAvLyBudW1iZXIgb2YgQ0FTRSBzdGF0ZW1lbnRzIHdpdGggdGhlIHNhbWUgc2hhcmVkIEJSRUFLLgogICAgICAgICAgICAgICAgICAgICAgICAkZGVwdGgtLTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRpICAgICA9IHNlbGY6OnJlY3Vyc2VTY29wZU1hcCgkaSwgKCRkZXB0aCArIDEpLCAkaWdub3JlKTsKICAgICAgICAgICAgICAgICAgICAkZGVwdGggPSAkb2xkRGVwdGg7CgogICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkdGhpcy0+c2NvcGVPcGVuZXJzWyR0b2tlblR5cGVdWydlbmQnXVtUX0NMT1NFX0NVUkxZX0JSQUNLRVRdKSA9PT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAkaWdub3JlID0gJG9sZElnbm9yZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9Ly9lbmQgaWYKICAgICAgICAgICAgfS8vZW5kIGlmCgogICAgICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPnNjb3BlT3BlbmVyc1skY3VyclR5cGVdWydzdGFydCddWyR0b2tlblR5cGVdKSA9PT0gdHJ1ZQogICAgICAgICAgICAgICAgJiYgJG9wZW5lciA9PT0gbnVsbAogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgIGlmICgkdG9rZW5UeXBlID09PSBUX09QRU5fQ1VSTFlfQlJBQ0tFVCkgewogICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkdGhpcy0+dG9rZW5zWyRzdGFja1B0cl1bJ3BhcmVudGhlc2lzX2Nsb3NlciddKSA9PT0gdHJ1ZQogICAgICAgICAgICAgICAgICAgICAgICAmJiAkaSA8ICR0aGlzLT50b2tlbnNbJHN0YWNrUHRyXVsncGFyZW50aGVzaXNfY2xvc2VyJ10KICAgICAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgZm91bmQgYSBjdXJseSBicmFjZSBpbnNpZGUgdGhlIGNvbmRpdGlvbiBvZiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgLy8gY3VycmVudCBzY29wZSBvcGVuZXIsIHNvIGl0IG11c3QgYmUgYSBzdHJpbmcgb2Zmc2V0LgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoUEhQX0NPREVTTklGRkVSX1ZFUkJPU0lUWSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gc3RyX3JlcGVhdCgiXHQiLCAkZGVwdGgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnKiBpZ25vcmluZyBjdXJseSBicmFjZSBpbnNpZGUgY29uZGl0aW9uIConLlBIUF9FT0w7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICRpZ25vcmUrKzsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhpcyBpcyBhY3R1YWxseSBhbiBvcGVuZXIgYW5kIG5vdCBhCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0cmluZyBvZmZzZXQgKGUuZy4sICR2YXJ7MH0pLgogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCR4ID0gKCRpIC0gMSk7ICR4ID4gMDsgJHgtLSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KFV0aWxcVG9rZW5zOjokZW1wdHlUb2tlbnNbJHRoaXMtPnRva2Vuc1skeF1bJ2NvZGUnXV0pID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBmaXJzdCBub24td2hpdGVzcGFjZS9jb21tZW50IHRva2VuIGxvb2tzIGxpa2UgdGhpcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJyYWNlIGlzIGEgc3RyaW5nIG9mZnNldCwgb3IgdGhpcyBicmFjZSBpcyBtaWQtd2F5IHRocm91Z2gKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhIG5ldyBzdGF0ZW1lbnQsIGl0IGlzbid0IGEgc2NvcGUgb3BlbmVyLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkaXNhbGxvd2VkICA9IFV0aWxcVG9rZW5zOjokYXNzaWdubWVudFRva2VuczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGlzYWxsb3dlZCArPSBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRfRE9MTEFSICAgICAgICAgICAgICAgICAgID0+IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRfVkFSSUFCTEUgICAgICAgICAgICAgICAgID0+IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRfT0JKRUNUX09QRVJBVE9SICAgICAgICAgID0+IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRfTlVMTFNBRkVfT0JKRUNUX09QRVJBVE9SID0+IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRfQ09NTUEgICAgICAgICAgICAgICAgICAgID0+IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRfT1BFTl9QQVJFTlRIRVNJUyAgICAgICAgID0+IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRkaXNhbGxvd2VkWyR0aGlzLT50b2tlbnNbJHhdWydjb2RlJ11dKSA9PT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUEhQX0NPREVTTklGRkVSX1ZFUkJPU0lUWSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gc3RyX3JlcGVhdCgiXHQiLCAkZGVwdGgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnKiBpZ25vcmluZyBjdXJseSBicmFjZSAqJy5QSFBfRU9MOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaWdub3JlKys7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0vL2VuZCBpZgogICAgICAgICAgICAgICAgICAgICAgICB9Ly9lbmQgZm9yCiAgICAgICAgICAgICAgICAgICAgfS8vZW5kIGlmCiAgICAgICAgICAgICAgICB9Ly9lbmQgaWYKCiAgICAgICAgICAgICAgICBpZiAoJGlnbm9yZSA9PT0gMCB8fCAkdG9rZW5UeXBlICE9PSBUX09QRU5fQ1VSTFlfQlJBQ0tFVCkgewogICAgICAgICAgICAgICAgICAgICRvcGVuZXJOZXN0ZWQgPSBpc3NldCgkdGhpcy0+dG9rZW5zWyRpXVsnbmVzdGVkX3BhcmVudGhlc2lzJ10pOwogICAgICAgICAgICAgICAgICAgICRvd25lck5lc3RlZCAgPSBpc3NldCgkdGhpcy0+dG9rZW5zWyRzdGFja1B0cl1bJ25lc3RlZF9wYXJlbnRoZXNpcyddKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCgkb3BlbmVyTmVzdGVkID09PSB0cnVlICYmICRvd25lck5lc3RlZCA9PT0gZmFsc2UpCiAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgkb3BlbmVyTmVzdGVkID09PSBmYWxzZSAmJiAkb3duZXJOZXN0ZWQgPT09IHRydWUpCiAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgkb3BlbmVyTmVzdGVkID09PSB0cnVlCiAgICAgICAgICAgICAgICAgICAgICAgICYmICR0aGlzLT50b2tlbnNbJGldWyduZXN0ZWRfcGFyZW50aGVzaXMnXSAhPT0gJHRoaXMtPnRva2Vuc1skc3RhY2tQdHJdWyduZXN0ZWRfcGFyZW50aGVzaXMnXSkKICAgICAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgZm91bmQgdGhlIGEgdG9rZW4gdGhhdCBsb29rcyBsaWtlIHRoZSBvcGVuZXIsIGJ1dCBpdCdzIG5lc3RlZCBkaWZmZXJlbnRseS4KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHlwZSA9ICR0aGlzLT50b2tlbnNbJGldWyd0eXBlJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHN0cl9yZXBlYXQoIlx0IiwgJGRlcHRoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIiogaWdub3JpbmcgcG9zc2libGUgb3BlbmVyICRpOiR0eXBlIGFzIG5lc3RlZCBwYXJlbnRoZXNpcyBkb24ndCBtYXRjaCAqIi5QSFBfRU9MOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgZm91bmQgdGhlIG9wZW5pbmcgc2NvcGUgdG9rZW4gZm9yICRjdXJyVHlwZS4KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHlwZSA9ICR0aGlzLT50b2tlbnNbJHN0YWNrUHRyXVsndHlwZSddOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyBzdHJfcmVwZWF0KCJcdCIsICRkZXB0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI9PiBGb3VuZCBzY29wZSBvcGVuZXIgZm9yICRzdGFja1B0cjokdHlwZSIuUEhQX0VPTDsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgJG9wZW5lciA9ICRpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0vL2VuZCBpZgogICAgICAgICAgICB9IGVsc2UgaWYgKCR0b2tlblR5cGUgPT09IFRfU0VNSUNPTE9OCiAgICAgICAgICAgICAgICAmJiAkb3BlbmVyID09PSBudWxsCiAgICAgICAgICAgICAgICAmJiAoaXNzZXQoJHRoaXMtPnRva2Vuc1skc3RhY2tQdHJdWydwYXJlbnRoZXNpc19jbG9zZXInXSkgPT09IGZhbHNlCiAgICAgICAgICAgICAgICB8fCAkaSA+ICR0aGlzLT50b2tlbnNbJHN0YWNrUHRyXVsncGFyZW50aGVzaXNfY2xvc2VyJ10pCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgLy8gRm91bmQgdGhlIGVuZCBvZiBhIHN0YXRlbWVudCBidXQgc3RpbGwgaGF2ZW4ndAogICAgICAgICAgICAgICAgLy8gZm91bmQgb3VyIG9wZW5lciwgc28gd2UgYXJlIG5ldmVyIGdvaW5nIHRvIGZpbmQgb25lLgogICAgICAgICAgICAgICAgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgJHR5cGUgPSAkdGhpcy0+dG9rZW5zWyRzdGFja1B0cl1bJ3R5cGUnXTsKICAgICAgICAgICAgICAgICAgICBlY2hvIHN0cl9yZXBlYXQoIlx0IiwgJGRlcHRoKTsKICAgICAgICAgICAgICAgICAgICBlY2hvICI9PiBGb3VuZCBlbmQgb2Ygc3RhdGVtZW50IGJlZm9yZSBzY29wZSBvcGVuZXIgZm9yICRzdGFja1B0cjokdHlwZSwgY29udGludWluZyIuUEhQX0VPTDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gKCRpIC0gMSk7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoJHRva2VuVHlwZSA9PT0gVF9PUEVOX1BBUkVOVEhFU0lTKSB7CiAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPnRva2Vuc1skaV1bJ3BhcmVudGhlc2lzX293bmVyJ10pID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgJG93bmVyID0gJHRoaXMtPnRva2Vuc1skaV1bJ3BhcmVudGhlc2lzX293bmVyJ107CiAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KFV0aWxcVG9rZW5zOjokc2NvcGVPcGVuZXJzWyR0aGlzLT50b2tlbnNbJG93bmVyXVsnY29kZSddXSkgPT09IHRydWUKICAgICAgICAgICAgICAgICAgICAgICAgJiYgaXNzZXQoJHRoaXMtPnRva2Vuc1skaV1bJ3BhcmVudGhlc2lzX2Nsb3NlciddKSA9PT0gdHJ1ZQogICAgICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB3ZSBnZXQgaW50byBoZXJlLCB0aGVuIHdlIG9wZW5lZCBhIHBhcmVudGhlc2lzIGZvcgogICAgICAgICAgICAgICAgICAgICAgICAvLyBhIHNjb3BlIChlZy4gYW4gaWYgb3IgZWxzZSBpZikgc28gd2UgbmVlZCB0byB1cGRhdGUgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YXJ0IG9mIHRoZSBsaW5lIHNvIHRoYXQgd2hlbiB3ZSBjaGVjayB0byBzZWUKICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIGNsb3NpbmcgcGFyZW50aGVzaXMgaXMgbW9yZSB0aGFuIG4gbGluZXMgYXdheSBmcm9tCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBzdGF0ZW1lbnQsIHdlIGNoZWNrIGZyb20gdGhlIGNsb3NpbmcgcGFyZW50aGVzaXMuCiAgICAgICAgICAgICAgICAgICAgICAgICRzdGFydExpbmUgPSAkdGhpcy0+dG9rZW5zWyR0aGlzLT50b2tlbnNbJGldWydwYXJlbnRoZXNpc19jbG9zZXInXV1bJ2xpbmUnXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSBpZiAoJHRva2VuVHlwZSA9PT0gVF9PUEVOX0NVUkxZX0JSQUNLRVQgJiYgJG9wZW5lciAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgLy8gV2Ugb3BlbmVkIHNvbWV0aGluZyB0aGF0IHdlIGRvbid0IGhhdmUgYSBzY29wZSBvcGVuZXIgZm9yLgogICAgICAgICAgICAgICAgLy8gRXhhbXBsZXMgb2YgdGhpcyBhcmUgY3VybHkgYnJhY2tldHMgZm9yIHN0cmluZyBvZmZzZXRzIGV0Yy4KICAgICAgICAgICAgICAgIC8vIFdlIHdhbnQgdG8gaWdub3JlIHRoaXMgc28gdGhhdCB3ZSBkb24ndCBoYXZlIGFuIGludmFsaWQgc2NvcGUKICAgICAgICAgICAgICAgIC8vIG1hcC4KICAgICAgICAgICAgICAgIGlmIChQSFBfQ09ERVNOSUZGRVJfVkVSQk9TSVRZID4gMSkgewogICAgICAgICAgICAgICAgICAgIGVjaG8gc3RyX3JlcGVhdCgiXHQiLCAkZGVwdGgpOwogICAgICAgICAgICAgICAgICAgIGVjaG8gJyogaWdub3JpbmcgY3VybHkgYnJhY2UgKicuUEhQX0VPTDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkaWdub3JlKys7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoJHRva2VuVHlwZSA9PT0gVF9DTE9TRV9DVVJMWV9CUkFDS0VUICYmICRpZ25vcmUgPiAwKSB7CiAgICAgICAgICAgICAgICAvLyBXZSBmb3VuZCB0aGUgZW5kIHRva2VuIGZvciB0aGUgb3BlbmVyIHdlIHdlcmUgaWdub3JpbmcuCiAgICAgICAgICAgICAgICBpZiAoUEhQX0NPREVTTklGRkVSX1ZFUkJPU0lUWSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICBlY2hvIHN0cl9yZXBlYXQoIlx0IiwgJGRlcHRoKTsKICAgICAgICAgICAgICAgICAgICBlY2hvICcqIGZpbmlzaGVkIGlnbm9yaW5nIGN1cmx5IGJyYWNlIConLlBIUF9FT0w7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJGlnbm9yZS0tOwogICAgICAgICAgICB9IGVsc2UgaWYgKCRvcGVuZXIgPT09IG51bGwKICAgICAgICAgICAgICAgICYmIGlzc2V0KCR0aGlzLT5zY29wZU9wZW5lcnNbJGN1cnJUeXBlXSkgPT09IHRydWUKICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAvLyBJZiB3ZSBzdGlsbCBoYXZlbid0IGZvdW5kIHRoZSBvcGVuZXIgYWZ0ZXIgMzAgbGluZXMsCiAgICAgICAgICAgICAgICAvLyB3ZSdyZSBub3QgZ29pbmcgdG8gZmluZCBpdCwgdW5sZXNzIHdlIGtub3cgaXQgcmVxdWlyZXMKICAgICAgICAgICAgICAgIC8vIGFuIG9wZW5lciAoaW4gd2hpY2ggY2FzZSB3ZSBiZXR0ZXIga2VlcCBsb29raW5nKSBvciB0aGUgbGFzdAogICAgICAgICAgICAgICAgLy8gdG9rZW4gd2FzIGVtcHR5IChpbiB3aGljaCBjYXNlIHdlJ2xsIGp1c3QgY29uZmlybSB0aGVyZSBpcwogICAgICAgICAgICAgICAgLy8gbW9yZSBjb2RlIGluIHRoaXMgZmlsZSBhbmQgbm90IGp1c3QgYSBiaWcgY29tbWVudCkuCiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPnRva2Vuc1skaV1bJ2xpbmUnXSA+PSAoJHN0YXJ0TGluZSArIDMwKQogICAgICAgICAgICAgICAgICAgICYmIGlzc2V0KFV0aWxcVG9rZW5zOjokZW1wdHlUb2tlbnNbJHRoaXMtPnRva2Vuc1soJGkgLSAxKV1bJ2NvZGUnXV0pID09PSBmYWxzZQogICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5zY29wZU9wZW5lcnNbJGN1cnJUeXBlXVsnc3RyaWN0J10gPT09IHRydWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHlwZSAgPSAkdGhpcy0+dG9rZW5zWyRzdGFja1B0cl1bJ3R5cGUnXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsaW5lcyA9ICgkdGhpcy0+dG9rZW5zWyRpXVsnbGluZSddIC0gJHN0YXJ0TGluZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHN0cl9yZXBlYXQoIlx0IiwgJGRlcHRoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIj0+IFN0aWxsIGxvb2tpbmcgZm9yICRzdGFja1B0cjokdHlwZSBzY29wZSBvcGVuZXIgYWZ0ZXIgJGxpbmVzIGxpbmVzIi5QSFBfRU9MOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHlwZSA9ICR0aGlzLT50b2tlbnNbJHN0YWNrUHRyXVsndHlwZSddOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyBzdHJfcmVwZWF0KCJcdCIsICRkZXB0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI9PiBDb3VsZG4ndCBmaW5kIHNjb3BlIG9wZW5lciBmb3IgJHN0YWNrUHRyOiR0eXBlLCBiYWlsaW5nIi5QSFBfRU9MOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHN0YWNrUHRyOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIGlmICgkb3BlbmVyICE9PSBudWxsCiAgICAgICAgICAgICAgICAmJiAkdG9rZW5UeXBlICE9PSBUX0JSRUFLCiAgICAgICAgICAgICAgICAmJiBpc3NldCgkdGhpcy0+ZW5kU2NvcGVUb2tlbnNbJHRva2VuVHlwZV0pID09PSB0cnVlCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT50b2tlbnNbJGldWydzY29wZV9jb25kaXRpb24nXSkgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRpZ25vcmUgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGZvdW5kIHRoZSBlbmQgdG9rZW4gZm9yIHRoZSBvcGVuZXIgd2Ugd2VyZSBpZ25vcmluZy4KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHN0cl9yZXBlYXQoIlx0IiwgJGRlcHRoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJyogZmluaXNoZWQgaWdub3JpbmcgY3VybHkgYnJhY2UgKicuUEhQX0VPTDsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgJGlnbm9yZS0tOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGZvdW5kIGEgdG9rZW4gdGhhdCBjbG9zZXMgdGhlIHNjb3BlIGJ1dCBpdCBkb2Vzbid0CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhdmUgYSBjb25kaXRpb24sIHNvIGl0IGJlbG9uZ3MgdG8gYW5vdGhlciB0b2tlbiBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3VyIHRva2VuIGRvZXNuJ3QgaGF2ZSBhIGNsb3Nlciwgc28gcHJldGVuZCB0aGlzIGlzCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBjbG9zZXIuCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQSFBfQ09ERVNOSUZGRVJfVkVSQk9TSVRZID4gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGUgPSAkdGhpcy0+dG9rZW5zWyRzdGFja1B0cl1bJ3R5cGUnXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gc3RyX3JlcGVhdCgiXHQiLCAkZGVwdGgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPT4gRm91bmQgKHVuZXhwZWN0ZWQpIHNjb3BlIGNsb3NlciBmb3IgJHN0YWNrUHRyOiR0eXBlIi5QSFBfRU9MOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoIChbJHN0YWNrUHRyLCAkb3BlbmVyXSBhcyAkdG9rZW4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT50b2tlbnNbJHRva2VuXVsnc2NvcGVfY29uZGl0aW9uJ10gPSAkc3RhY2tQdHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+dG9rZW5zWyR0b2tlbl1bJ3Njb3BlX29wZW5lciddICAgID0gJG9wZW5lcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT50b2tlbnNbJHRva2VuXVsnc2NvcGVfY2xvc2VyJ10gICAgPSAkaTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgkaSAtIDEpOwogICAgICAgICAgICAgICAgICAgIH0vL2VuZCBpZgogICAgICAgICAgICAgICAgfS8vZW5kIGlmCiAgICAgICAgICAgIH0vL2VuZCBpZgogICAgICAgIH0vL2VuZCBmb3IKCiAgICAgICAgcmV0dXJuICRzdGFja1B0cjsKCiAgICB9Ly9lbmQgcmVjdXJzZVNjb3BlTWFwKCkKCgogICAgLyoqCiAgICAgKiBDb25zdHJ1Y3RzIHRoZSBsZXZlbCBtYXAuCiAgICAgKgogICAgICogVGhlIGxldmVsIG1hcCBhZGRzIGEgJ2xldmVsJyBpbmRleCB0byBlYWNoIHRva2VuIHdoaWNoIGluZGljYXRlcyB0aGUKICAgICAqIGRlcHRoIHRoYXQgYSB0b2tlbiB3aXRoaW4gYSBzZXQgb2Ygc2NvcGUgYmxvY2tzLiBJdCBhbHNvIGFkZHMgYQogICAgICogJ2NvbmRpdGlvbnMnIGluZGV4IHdoaWNoIGlzIGFuIGFycmF5IG9mIHRoZSBzY29wZSBjb25kaXRpb25zIHRoYXQgb3BlbmVkCiAgICAgKiBlYWNoIG9mIHRoZSBzY29wZXMgLSBwb3NpdGlvbiAwIGJlaW5nIHRoZSBmaXJzdCBzY29wZSBvcGVuZXIuCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gY3JlYXRlTGV2ZWxNYXAoKQogICAgewogICAgICAgIGlmIChQSFBfQ09ERVNOSUZGRVJfVkVSQk9TSVRZID4gMSkgewogICAgICAgICAgICBlY2hvICJcdCoqKiBTVEFSVCBMRVZFTCBNQVAgKioqIi5QSFBfRU9MOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPm51bVRva2VucyA9IGNvdW50KCR0aGlzLT50b2tlbnMpOwogICAgICAgICRsZXZlbCAgICAgICAgICAgPSAwOwogICAgICAgICRjb25kaXRpb25zICAgICAgPSBbXTsKICAgICAgICAkbGFzdE9wZW5lciAgICAgID0gbnVsbDsKICAgICAgICAkb3BlbmVycyAgICAgICAgID0gW107CgogICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICR0aGlzLT5udW1Ub2tlbnM7ICRpKyspIHsKICAgICAgICAgICAgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgICAgICAkdHlwZSA9ICR0aGlzLT50b2tlbnNbJGldWyd0eXBlJ107CiAgICAgICAgICAgICAgICAkbGluZSA9ICR0aGlzLT50b2tlbnNbJGldWydsaW5lJ107CiAgICAgICAgICAgICAgICAkbGVuICA9ICR0aGlzLT50b2tlbnNbJGldWydsZW5ndGgnXTsKICAgICAgICAgICAgICAgICRjb2wgID0gJHRoaXMtPnRva2Vuc1skaV1bJ2NvbHVtbiddOwoKICAgICAgICAgICAgICAgICRjb250ZW50ID0gVXRpbFxDb21tb246OnByZXBhcmVGb3JPdXRwdXQoJHRoaXMtPnRva2Vuc1skaV1bJ2NvbnRlbnQnXSk7CgogICAgICAgICAgICAgICAgZWNobyBzdHJfcmVwZWF0KCJcdCIsICgkbGV2ZWwgKyAxKSk7CiAgICAgICAgICAgICAgICBlY2hvICJQcm9jZXNzIHRva2VuICRpIG9uIGxpbmUgJGxpbmUgW2NvbDokY29sO2xlbjokbGVuO2x2bDokbGV2ZWw7IjsKICAgICAgICAgICAgICAgIGlmIChlbXB0eSgkY29uZGl0aW9ucykgIT09IHRydWUpIHsKICAgICAgICAgICAgICAgICAgICAkY29uZGl0aW9uU3RyaW5nID0gJ2NvbmRzOyc7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGNvbmRpdGlvbnMgYXMgJGNvbmRpdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICAkY29uZGl0aW9uU3RyaW5nIC49IFV0aWxcVG9rZW5zOjp0b2tlbk5hbWUoJGNvbmRpdGlvbikuJywnOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZWNobyBydHJpbSgkY29uZGl0aW9uU3RyaW5nLCAnLCcpLic7JzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBlY2hvICJdOiAkdHlwZSA9PiAkY29udGVudCIuUEhQX0VPTDsKICAgICAgICAgICAgfS8vZW5kIGlmCgogICAgICAgICAgICAkdGhpcy0+dG9rZW5zWyRpXVsnbGV2ZWwnXSAgICAgID0gJGxldmVsOwogICAgICAgICAgICAkdGhpcy0+dG9rZW5zWyRpXVsnY29uZGl0aW9ucyddID0gJGNvbmRpdGlvbnM7CgogICAgICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPnRva2Vuc1skaV1bJ3Njb3BlX2NvbmRpdGlvbiddKSA9PT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoaXMgdG9rZW4gb3BlbmVkIHRoZSBzY29wZS4KICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+dG9rZW5zWyRpXVsnc2NvcGVfb3BlbmVyJ10gPT09ICRpKSB7CiAgICAgICAgICAgICAgICAgICAgJHN0YWNrUHRyID0gJHRoaXMtPnRva2Vuc1skaV1bJ3Njb3BlX2NvbmRpdGlvbiddOwogICAgICAgICAgICAgICAgICAgIGlmIChQSFBfQ09ERVNOSUZGRVJfVkVSQk9TSVRZID4gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAkdHlwZSA9ICR0aGlzLT50b2tlbnNbJHN0YWNrUHRyXVsndHlwZSddOwogICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHN0cl9yZXBlYXQoIlx0IiwgKCRsZXZlbCArIDEpKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPT4gRm91bmQgc2NvcGUgb3BlbmVyIGZvciAkc3RhY2tQdHI6JHR5cGUiLlBIUF9FT0w7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkc3RhY2tQdHIgPSAkdGhpcy0+dG9rZW5zWyRpXVsnc2NvcGVfY29uZGl0aW9uJ107CgogICAgICAgICAgICAgICAgICAgIC8vIElmIHdlIGZpbmQgYSBzY29wZSBvcGVuZXIgdGhhdCBoYXMgYSBzaGFyZWQgY2xvc2VyLAogICAgICAgICAgICAgICAgICAgIC8vIHRoZW4gd2UgbmVlZCB0byBnbyBiYWNrIG92ZXIgdGhlIGNvbmRpdGlvbiBtYXAgdGhhdCB3ZQogICAgICAgICAgICAgICAgICAgIC8vIGp1c3QgY3JlYXRlZCBhbmQgZml4IG91cnNlbHZlcyBhcyB3ZSBqdXN0IGFkZGVkIHNvbWUKICAgICAgICAgICAgICAgICAgICAvLyBjb25kaXRpb25zIHdoZXJlIHRoZXJlIHdhcyBub25lLiBUaGlzIGhhcHBlbnMgZm9yIFRfQ0FTRQogICAgICAgICAgICAgICAgICAgIC8vIHN0YXRlbWVudHMgdGhhdCBhcmUgdXNpbmcgdGhlIHNhbWUgYnJlYWsgc3RhdGVtZW50LgogICAgICAgICAgICAgICAgICAgIGlmICgkbGFzdE9wZW5lciAhPT0gbnVsbCAmJiAkdGhpcy0+dG9rZW5zWyRsYXN0T3BlbmVyXVsnc2NvcGVfY2xvc2VyJ10gPT09ICR0aGlzLT50b2tlbnNbJGldWydzY29wZV9jbG9zZXInXSkgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIG9wZW5lciBzaGFyZXMgaXRzIGNsb3NlciB3aXRoIHRoZSBwcmV2aW91cyBvcGVuZXIsCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ1dCB3ZSBzdGlsbCBuZWVkIHRvIGNoZWNrIGlmIHRoZSB0d28gb3BlbmVycyBzaGFyZSB0aGVpcgogICAgICAgICAgICAgICAgICAgICAgICAvLyBjbG9zZXIgd2l0aCBlYWNoIG90aGVyIGRpcmVjdGx5IChsaWtlIENBU0UgYW5kIERFRkFVTFQpCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yIGlmIHRoZXkgYXJlIGp1c3Qgc2hhcmluZyBiZWNhdXNlIG9uZSBkb2Vzbid0IGhhdmUgYQogICAgICAgICAgICAgICAgICAgICAgICAvLyBjbG9zZXIgKGxpa2UgQ0FTRSB3aXRoIG5vIEJSRUFLIHVzaW5nIGEgU1dJVENIZXMgY2xvc2VyKS4KICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXNUeXBlID0gJHRoaXMtPnRva2Vuc1skdGhpcy0+dG9rZW5zWyRpXVsnc2NvcGVfY29uZGl0aW9uJ11dWydjb2RlJ107CiAgICAgICAgICAgICAgICAgICAgICAgICRvcGVuZXIgICA9ICR0aGlzLT50b2tlbnNbJGxhc3RPcGVuZXJdWydzY29wZV9jb25kaXRpb24nXTsKCiAgICAgICAgICAgICAgICAgICAgICAgICRpc1NoYXJlZCA9IGlzc2V0KCR0aGlzLT5zY29wZU9wZW5lcnNbJHRoaXNUeXBlXVsnd2l0aCddWyR0aGlzLT50b2tlbnNbJG9wZW5lcl1bJ2NvZGUnXV0pOwoKICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXQoJHRoaXMtPnNjb3BlT3BlbmVyc1skdGhpc1R5cGVdWydlbmQnXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0KCR0aGlzLT5zY29wZU9wZW5lcnNbJHRoaXMtPnRva2Vuc1skb3BlbmVyXVsnY29kZSddXVsnZW5kJ10pOwogICAgICAgICAgICAgICAgICAgICAgICAkc2FtZUVuZCA9IChjdXJyZW50KCR0aGlzLT5zY29wZU9wZW5lcnNbJHRoaXNUeXBlXVsnZW5kJ10pID09PSBjdXJyZW50KCR0aGlzLT5zY29wZU9wZW5lcnNbJHRoaXMtPnRva2Vuc1skb3BlbmVyXVsnY29kZSddXVsnZW5kJ10pKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkaXNTaGFyZWQgPT09IHRydWUgJiYgJHNhbWVFbmQgPT09IHRydWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRiYWRUb2tlbiA9ICRvcGVuZXI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUEhQX0NPREVTTklGRkVSX1ZFUkJPU0lUWSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHlwZSA9ICR0aGlzLT50b2tlbnNbJGJhZFRva2VuXVsndHlwZSddOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gc3RyX3JlcGVhdCgiXHQiLCAoJGxldmVsICsgMSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIiogc2hhcmVkIGNsb3NlciwgY2xlYW5pbmcgdXAgJGJhZFRva2VuOiR0eXBlICoiLlBIUF9FT0w7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICgkeCA9ICR0aGlzLT50b2tlbnNbJGldWydzY29wZV9jb25kaXRpb24nXTsgJHggPD0gJGk7ICR4KyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb2xkQ29uZGl0aW9ucyA9ICR0aGlzLT50b2tlbnNbJHhdWydjb25kaXRpb25zJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG9sZExldmVsICAgICAgPSAkdGhpcy0+dG9rZW5zWyR4XVsnbGV2ZWwnXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+dG9rZW5zWyR4XVsnbGV2ZWwnXS0tOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2V0KCR0aGlzLT50b2tlbnNbJHhdWydjb25kaXRpb25zJ11bJGJhZFRva2VuXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlICAgICA9ICR0aGlzLT50b2tlbnNbJHhdWyd0eXBlJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvbGRDb25kcyA9ICcnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkb2xkQ29uZGl0aW9ucyBhcyAkY29uZGl0aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb2xkQ29uZHMgLj0gVXRpbFxUb2tlbnM6OnRva2VuTmFtZSgkY29uZGl0aW9uKS4nLCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvbGRDb25kcyA9IHJ0cmltKCRvbGRDb25kcywgJywnKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuZXdDb25kcyA9ICcnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkdGhpcy0+dG9rZW5zWyR4XVsnY29uZGl0aW9ucyddIGFzICRjb25kaXRpb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuZXdDb25kcyAuPSBVdGlsXFRva2Vuczo6dG9rZW5OYW1lKCRjb25kaXRpb24pLicsJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5ld0NvbmRzID0gcnRyaW0oJG5ld0NvbmRzLCAnLCcpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5ld0xldmVsID0gJHRoaXMtPnRva2Vuc1skeF1bJ2xldmVsJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gc3RyX3JlcGVhdCgiXHQiLCAoJGxldmVsICsgMSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICIqIGNsZWFuZWQgJHg6JHR5cGUgKiIuUEhQX0VPTDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyBzdHJfcmVwZWF0KCJcdCIsICgkbGV2ZWwgKyAyKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIj0+IGxldmVsIGNoYW5nZWQgZnJvbSAkb2xkTGV2ZWwgdG8gJG5ld0xldmVsIi5QSFBfRU9MOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHN0cl9yZXBlYXQoIlx0IiwgKCRsZXZlbCArIDIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPT4gY29uZGl0aW9ucyBjaGFuZ2VkIGZyb20gJG9sZENvbmRzIHRvICRuZXdDb25kcyIuUEhQX0VPTDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ly9lbmQgaWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0vL2VuZCBmb3IKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNldCgkY29uZGl0aW9uc1skYmFkVG9rZW5dKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQSFBfQ09ERVNOSUZGRVJfVkVSQk9TSVRZID4gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlID0gJHRoaXMtPnRva2Vuc1skYmFkVG9rZW5dWyd0eXBlJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyBzdHJfcmVwZWF0KCJcdCIsICgkbGV2ZWwgKyAxKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiKiB0b2tlbiAkYmFkVG9rZW46JHR5cGUgcmVtb3ZlZCBmcm9tIGNvbmRpdGlvbnMgYXJyYXkgKiIuUEhQX0VPTDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNldCgkb3BlbmVyc1skbGFzdE9wZW5lcl0pOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsZXZlbC0tOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyBzdHJfcmVwZWF0KCJcdCIsICgkbGV2ZWwgKyAyKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnKiBsZXZlbCBkZWNyZWFzZWQgKicuUEhQX0VPTDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfS8vZW5kIGlmCiAgICAgICAgICAgICAgICAgICAgfS8vZW5kIGlmCgogICAgICAgICAgICAgICAgICAgICRsZXZlbCsrOwogICAgICAgICAgICAgICAgICAgIGlmIChQSFBfQ09ERVNOSUZGRVJfVkVSQk9TSVRZID4gMSkgewogICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHN0cl9yZXBlYXQoIlx0IiwgKCRsZXZlbCArIDEpKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnKiBsZXZlbCBpbmNyZWFzZWQgKicuUEhQX0VPTDsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRjb25kaXRpb25zWyRzdGFja1B0cl0gPSAkdGhpcy0+dG9rZW5zWyRzdGFja1B0cl1bJ2NvZGUnXTsKICAgICAgICAgICAgICAgICAgICBpZiAoUEhQX0NPREVTTklGRkVSX1ZFUkJPU0lUWSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGUgPSAkdGhpcy0+dG9rZW5zWyRzdGFja1B0cl1bJ3R5cGUnXTsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyBzdHJfcmVwZWF0KCJcdCIsICgkbGV2ZWwgKyAxKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIiogdG9rZW4gJHN0YWNrUHRyOiR0eXBlIGFkZGVkIHRvIGNvbmRpdGlvbnMgYXJyYXkgKiIuUEhQX0VPTDsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRsYXN0T3BlbmVyID0gJHRoaXMtPnRva2Vuc1skaV1bJ3Njb3BlX29wZW5lciddOwogICAgICAgICAgICAgICAgICAgIGlmICgkbGFzdE9wZW5lciAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAkb3BlbmVyc1skbGFzdE9wZW5lcl0gPSAkbGFzdE9wZW5lcjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCRsYXN0T3BlbmVyICE9PSBudWxsICYmICR0aGlzLT50b2tlbnNbJGxhc3RPcGVuZXJdWydzY29wZV9jbG9zZXInXSA9PT0gJGkpIHsKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoIChhcnJheV9yZXZlcnNlKCRvcGVuZXJzKSBhcyAkb3BlbmVyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+dG9rZW5zWyRvcGVuZXJdWydzY29wZV9jbG9zZXInXSA9PT0gJGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvbGRPcGVuZXIgPSBhcnJheV9wb3AoJG9wZW5lcnMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVtcHR5KCRvcGVuZXJzKSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGFzdE9wZW5lciAgICAgICAgICAgPSBhcnJheV9wb3AoJG9wZW5lcnMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvcGVuZXJzWyRsYXN0T3BlbmVyXSA9ICRsYXN0T3BlbmVyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGFzdE9wZW5lciA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGUgPSAkdGhpcy0+dG9rZW5zWyRvbGRPcGVuZXJdWyd0eXBlJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyBzdHJfcmVwZWF0KCJcdCIsICgkbGV2ZWwgKyAxKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPT4gRm91bmQgc2NvcGUgY2xvc2VyIGZvciAkb2xkT3BlbmVyOiR0eXBlIi5QSFBfRU9MOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvbGRDb25kaXRpb24gPSBhcnJheV9wb3AoJGNvbmRpdGlvbnMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyBzdHJfcmVwZWF0KCJcdCIsICgkbGV2ZWwgKyAxKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnKiB0b2tlbiAnLlV0aWxcVG9rZW5zOjp0b2tlbk5hbWUoJG9sZENvbmRpdGlvbikuJyByZW1vdmVkIGZyb20gY29uZGl0aW9ucyBhcnJheSAqJy5QSFBfRU9MOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGlzIGNsb3NlciBhY3R1YWxseSBiZWxvbmdzIHRvIHVzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRWl0aGVyIHRoZSBjb25kaXRpb24gYWxzbyBoYXMgdG8gdGhpbmsgdGhpcyBpcyB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNsb3Nlciwgb3IgaXQgaGFzIHRvIGFsbG93IHNoYXJpbmcgd2l0aCB1cy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb25kaXRpb24gPSAkdGhpcy0+dG9rZW5zWyR0aGlzLT50b2tlbnNbJGldWydzY29wZV9jb25kaXRpb24nXV1bJ2NvZGUnXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkY29uZGl0aW9uICE9PSAkb2xkQ29uZGl0aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5zY29wZU9wZW5lcnNbJG9sZENvbmRpdGlvbl1bJ3dpdGgnXVskY29uZGl0aW9uXSkgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRiYWRUb2tlbiA9ICR0aGlzLT50b2tlbnNbJG9sZE9wZW5lcl1bJ3Njb3BlX2NvbmRpdGlvbiddOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHlwZSA9IFV0aWxcVG9rZW5zOjp0b2tlbk5hbWUoJG9sZENvbmRpdGlvbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHN0cl9yZXBlYXQoIlx0IiwgKCRsZXZlbCArIDEpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIiogc2NvcGUgY2xvc2VyIHdhcyBiYWQsIGNsZWFuaW5nIHVwICRiYWRUb2tlbjokdHlwZSAqIi5QSFBfRU9MOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCR4ID0gKCRvbGRPcGVuZXIgKyAxKTsgJHggPD0gJGk7ICR4KyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvbGRDb25kaXRpb25zID0gJHRoaXMtPnRva2Vuc1skeF1bJ2NvbmRpdGlvbnMnXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvbGRMZXZlbCAgICAgID0gJHRoaXMtPnRva2Vuc1skeF1bJ2xldmVsJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+dG9rZW5zWyR4XVsnbGV2ZWwnXS0tOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zZXQoJHRoaXMtPnRva2Vuc1skeF1bJ2NvbmRpdGlvbnMnXVskYmFkVG9rZW5dKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQSFBfQ09ERVNOSUZGRVJfVkVSQk9TSVRZID4gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlICAgICA9ICR0aGlzLT50b2tlbnNbJHhdWyd0eXBlJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG9sZENvbmRzID0gJyc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJG9sZENvbmRpdGlvbnMgYXMgJGNvbmRpdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb2xkQ29uZHMgLj0gVXRpbFxUb2tlbnM6OnRva2VuTmFtZSgkY29uZGl0aW9uKS4nLCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb2xkQ29uZHMgPSBydHJpbSgkb2xkQ29uZHMsICcsJyk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuZXdDb25kcyA9ICcnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCR0aGlzLT50b2tlbnNbJHhdWydjb25kaXRpb25zJ10gYXMgJGNvbmRpdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbmV3Q29uZHMgLj0gVXRpbFxUb2tlbnM6OnRva2VuTmFtZSgkY29uZGl0aW9uKS4nLCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbmV3Q29uZHMgPSBydHJpbSgkbmV3Q29uZHMsICcsJyk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuZXdMZXZlbCA9ICR0aGlzLT50b2tlbnNbJHhdWydsZXZlbCddOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gc3RyX3JlcGVhdCgiXHQiLCAoJGxldmVsICsgMSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIiogY2xlYW5lZCAkeDokdHlwZSAqIi5QSFBfRU9MOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gc3RyX3JlcGVhdCgiXHQiLCAoJGxldmVsICsgMikpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIj0+IGxldmVsIGNoYW5nZWQgZnJvbSAkb2xkTGV2ZWwgdG8gJG5ld0xldmVsIi5QSFBfRU9MOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gc3RyX3JlcGVhdCgiXHQiLCAoJGxldmVsICsgMikpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIj0+IGNvbmRpdGlvbnMgY2hhbmdlZCBmcm9tICRvbGRDb25kcyB0byAkbmV3Q29uZHMiLlBIUF9FT0w7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ly9lbmQgaWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfS8vZW5kIGZvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0vL2VuZCBpZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfS8vZW5kIGlmCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxldmVsLS07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUEhQX0NPREVTTklGRkVSX1ZFUkJPU0lUWSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHN0cl9yZXBlYXQoIlx0IiwgKCRsZXZlbCArIDIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICcqIGxldmVsIGRlY3JlYXNlZCAqJy5QSFBfRU9MOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT50b2tlbnNbJGldWydsZXZlbCddICAgICAgPSAkbGV2ZWw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+dG9rZW5zWyRpXVsnY29uZGl0aW9ucyddID0gJGNvbmRpdGlvbnM7CiAgICAgICAgICAgICAgICAgICAgICAgIH0vL2VuZCBpZgogICAgICAgICAgICAgICAgICAgIH0vL2VuZCBmb3JlYWNoCiAgICAgICAgICAgICAgICB9Ly9lbmQgaWYKICAgICAgICAgICAgfS8vZW5kIGlmCiAgICAgICAgfS8vZW5kIGZvcgoKICAgICAgICBpZiAoUEhQX0NPREVTTklGRkVSX1ZFUkJPU0lUWSA+IDEpIHsKICAgICAgICAgICAgZWNobyAiXHQqKiogRU5EIExFVkVMIE1BUCAqKioiLlBIUF9FT0w7CiAgICAgICAgfQoKICAgIH0vL2VuZCBjcmVhdGVMZXZlbE1hcCgpCgoKfS8vZW5kIGNsYXNzCiI7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBuYW1lc3BhY2VzIjthOjE6e3M6Mjc6IlxQSFBfQ29kZVNuaWZmZXJcVG9rZW5pemVycyI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjI3OiJcUEhQX0NvZGVTbmlmZmVyXFRva2VuaXplcnMiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxMDoiVG9rZW5pemVycyI7fX1zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGluY2x1ZGVzIjthOjA6e31zOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGZ1bmN0aW9ucyI7YTowOnt9czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBjb25zdGFudHMiO2E6MDp7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAY2xhc3NlcyI7YToxOntzOjM3OiJcUEhQX0NvZGVTbmlmZmVyXFRva2VuaXplcnNcVG9rZW5pemVyIjtPOjM1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXyI6MTM6e3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjM3OiJcUEhQX0NvZGVTbmlmZmVyXFRva2VuaXplcnNcVG9rZW5pemVyIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6OToiVG9rZW5pemVyIjt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGRvY0Jsb2NrIjtOO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBhYnN0cmFjdCI7YjoxO3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBmaW5hbCI7YjowO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBwYXJlbnQiO047czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGltcGxlbWVudHMiO2E6MDp7fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBjb25zdGFudHMiO2E6MDp7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBwcm9wZXJ0aWVzIjthOjg6e3M6NDY6IlxQSFBfQ29kZVNuaWZmZXJcVG9rZW5pemVyc1xUb2tlbml6ZXI6OiRjb25maWciO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkiOjExOntzOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjQ2OiJcUEhQX0NvZGVTbmlmZmVyXFRva2VuaXplcnNcVG9rZW5pemVyOjokY29uZmlnIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6NjoiY29uZmlnIjt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAZG9jQmxvY2siO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jayI6Nzp7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBzdW1tYXJ5IjtzOjI4OiJUaGUgY29uZmlnIGRhdGEgZm9yIHRoZSBydW4uIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawB0YWdzIjthOjE6e2k6MDtPOjQzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xWYXJfIjo0OntzOjE1OiIAKgB2YXJpYWJsZU5hbWUiO3M6MDoiIjtzOjc6IgAqAHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfIjoxOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8AZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czoyMzoiXFBIUF9Db2RlU25pZmZlclxDb25maWciO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo2OiJDb25maWciO319czo3OiIAKgBuYW1lIjtzOjM6InZhciI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAY29udGV4dCI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQiOjI6e3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29udGV4dABuYW1lc3BhY2UiO3M6MjY6IlBIUF9Db2RlU25pZmZlclxUb2tlbml6ZXJzIjtzOjU2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQAbmFtZXNwYWNlQWxpYXNlcyI7YToyOntzOjE4OiJUb2tlbml6ZXJFeGNlcHRpb24iO3M6NDU6IlBIUF9Db2RlU25pZmZlclxFeGNlcHRpb25zXFRva2VuaXplckV4Y2VwdGlvbiI7czo0OiJVdGlsIjtzOjIwOiJQSFBfQ29kZVNuaWZmZXJcVXRpbCI7fX1zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGxvY2F0aW9uIjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZVN0YXJ0IjtiOjA7czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlRW5kIjtiOjA7fXM6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AHR5cGVzIjthOjA6e31zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBkZWZhdWx0IjtzOjQ6Im51bGwiO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AHN0YXRpYyI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AHZpc2liaWxpdHkiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eSI6MTp7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eQB2aXNpYmlsaXR5IjtzOjk6InByb3RlY3RlZCI7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToyMztzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MjM7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAdHlwZSI7TjtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQByZWFkT25seSI7YjowO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AG1ldGFkYXRhIjthOjA6e319czo0NzoiXFBIUF9Db2RlU25pZmZlclxUb2tlbml6ZXJzXFRva2VuaXplcjo6JGVvbENoYXIiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkiOjExOntzOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjQ3OiJcUEhQX0NvZGVTbmlmZmVyXFRva2VuaXplcnNcVG9rZW5pemVyOjokZW9sQ2hhciI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjc6ImVvbENoYXIiO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBkb2NCbG9jayI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrIjo3OntzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHN1bW1hcnkiO3M6MzM6IlRoZSBFT0wgY2hhciB1c2VkIGluIHRoZSBjb250ZW50LiI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAdGFncyI7YToxOntpOjA7Tzo0MzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcVmFyXyI6NDp7czoxNToiACoAdmFyaWFibGVOYW1lIjtzOjA6IiI7czo3OiIAKgB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcU3RyaW5nXyI6MDp7fXM6NzoiACoAbmFtZSI7czozOiJ2YXIiO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO3I6NzI7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBsb2NhdGlvbiI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVTdGFydCI7YjowO3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZUVuZCI7YjowO31zOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQB0eXBlcyI7YTowOnt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAZGVmYXVsdCI7czoyOiJbXSI7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAc3RhdGljIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6OToicHJvdGVjdGVkIjt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjMwO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTozMDtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQB0eXBlIjtOO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AHJlYWRPbmx5IjtiOjA7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAbWV0YWRhdGEiO2E6MDp7fX1zOjQ2OiJcUEhQX0NvZGVTbmlmZmVyXFRva2VuaXplcnNcVG9rZW5pemVyOjokdG9rZW5zIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5IjoxMTp7czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo0NjoiXFBIUF9Db2RlU25pZmZlclxUb2tlbml6ZXJzXFRva2VuaXplcjo6JHRva2VucyI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjY6InRva2VucyI7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AGRvY0Jsb2NrIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2siOjc6e3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAc3VtbWFyeSI7czo0NDoiQSB0b2tlbi1iYXNlZCByZXByZXNlbnRhdGlvbiBvZiB0aGUgY29udGVudC4iO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHRhZ3MiO2E6MTp7aTowO086NDM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFZhcl8iOjQ6e3M6MTU6IgAqAHZhcmlhYmxlTmFtZSI7czowOiIiO3M6NzoiACoAdHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFycmF5XyI6Mzp7czoxMjoiACoAdmFsdWVUeXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czoxMDoiACoAa2V5VHlwZSI7TjtzOjE3OiIAKgBkZWZhdWx0S2V5VHlwZSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbXBvdW5kIjoyOntzOjUyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFnZ3JlZ2F0ZWRUeXBlAHR5cGVzIjthOjI6e2k6MDtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcU3RyaW5nXyI6MDp7fWk6MTtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcSW50ZWdlciI6MDp7fX1zOjUyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFnZ3JlZ2F0ZWRUeXBlAHRva2VuIjtzOjE6InwiO319czo3OiIAKgBuYW1lIjtzOjM6InZhciI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAY29udGV4dCI7cjo3MjtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGxvY2F0aW9uIjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZVN0YXJ0IjtiOjA7czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlRW5kIjtiOjA7fXM6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AHR5cGVzIjthOjA6e31zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBkZWZhdWx0IjtzOjI6IltdIjtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBzdGF0aWMiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQB2aXNpYmlsaXR5IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkiOjE6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkAdmlzaWJpbGl0eSI7czo5OiJwcm90ZWN0ZWQiO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBsb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6Mzc7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjM3O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AHR5cGUiO047czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAcmVhZE9ubHkiO2I6MDtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBtZXRhZGF0YSI7YTowOnt9fXM6NDk6IlxQSFBfQ29kZVNuaWZmZXJcVG9rZW5pemVyc1xUb2tlbml6ZXI6OiRudW1Ub2tlbnMiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkiOjExOntzOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjQ5OiJcUEhQX0NvZGVTbmlmZmVyXFRva2VuaXplcnNcVG9rZW5pemVyOjokbnVtVG9rZW5zIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6OToibnVtVG9rZW5zIjt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAZG9jQmxvY2siO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jayI6Nzp7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBzdW1tYXJ5IjtzOjQxOiJUaGUgbnVtYmVyIG9mIHRva2VucyBpbiB0aGUgdG9rZW5zIGFycmF5LiI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAdGFncyI7YToxOntpOjA7Tzo0MzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcVmFyXyI6NDp7czoxNToiACoAdmFyaWFibGVOYW1lIjtzOjA6IiI7czo3OiIAKgB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcSW50ZWdlciI6MDp7fXM6NzoiACoAbmFtZSI7czozOiJ2YXIiO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO3I6NzI7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBsb2NhdGlvbiI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVTdGFydCI7YjowO3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZUVuZCI7YjowO31zOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQB0eXBlcyI7YTowOnt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAZGVmYXVsdCI7czoxOiIwIjtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBzdGF0aWMiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQB2aXNpYmlsaXR5IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkiOjE6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkAdmlzaWJpbGl0eSI7czo5OiJwcm90ZWN0ZWQiO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBsb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6NDQ7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjQ0O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AHR5cGUiO047czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAcmVhZE9ubHkiO2I6MDtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBtZXRhZGF0YSI7YTowOnt9fXM6NTI6IlxQSFBfQ29kZVNuaWZmZXJcVG9rZW5pemVyc1xUb2tlbml6ZXI6OiRzY29wZU9wZW5lcnMiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkiOjExOntzOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjUyOiJcUEhQX0NvZGVTbmlmZmVyXFRva2VuaXplcnNcVG9rZW5pemVyOjokc2NvcGVPcGVuZXJzIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MTI6InNjb3BlT3BlbmVycyI7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AGRvY0Jsb2NrIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2siOjc6e3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAc3VtbWFyeSI7czo1MDoiQSBsaXN0IG9mIHRva2VucyB0aGF0IGFyZSBhbGxvd2VkIHRvIG9wZW4gYSBzY29wZS4iO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHRhZ3MiO2E6MTp7aTowO086NDM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFZhcl8iOjQ6e3M6MTU6IgAqAHZhcmlhYmxlTmFtZSI7czowOiIiO3M6NzoiACoAdHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFycmF5XyI6Mzp7czoxMjoiACoAdmFsdWVUeXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czoxMDoiACoAa2V5VHlwZSI7TjtzOjE3OiIAKgBkZWZhdWx0S2V5VHlwZSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbXBvdW5kIjoyOntzOjUyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFnZ3JlZ2F0ZWRUeXBlAHR5cGVzIjthOjI6e2k6MDtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcU3RyaW5nXyI6MDp7fWk6MTtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcSW50ZWdlciI6MDp7fX1zOjUyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFnZ3JlZ2F0ZWRUeXBlAHRva2VuIjtzOjE6InwiO319czo3OiIAKgBuYW1lIjtzOjM6InZhciI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAY29udGV4dCI7cjo3MjtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGxvY2F0aW9uIjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZVN0YXJ0IjtiOjA7czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlRW5kIjtiOjA7fXM6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AHR5cGVzIjthOjA6e31zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBkZWZhdWx0IjtzOjI6IltdIjtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBzdGF0aWMiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQB2aXNpYmlsaXR5IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkiOjE6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkAdmlzaWJpbGl0eSI7czo2OiJwdWJsaWMiO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBsb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6NTE7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjUxO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AHR5cGUiO047czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAcmVhZE9ubHkiO2I6MDtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBtZXRhZGF0YSI7YTowOnt9fXM6NTQ6IlxQSFBfQ29kZVNuaWZmZXJcVG9rZW5pemVyc1xUb2tlbml6ZXI6OiRlbmRTY29wZVRva2VucyI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eSI6MTE6e3M6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6NTQ6IlxQSFBfQ29kZVNuaWZmZXJcVG9rZW5pemVyc1xUb2tlbml6ZXI6OiRlbmRTY29wZVRva2VucyI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjE0OiJlbmRTY29wZVRva2VucyI7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AGRvY0Jsb2NrIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2siOjc6e3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAc3VtbWFyeSI7czozNjoiQSBsaXN0IG9mIHRva2VucyB0aGF0IGVuZCB0aGUgc2NvcGUuIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawB0YWdzIjthOjE6e2k6MDtPOjQzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xWYXJfIjo0OntzOjE1OiIAKgB2YXJpYWJsZU5hbWUiO3M6MDoiIjtzOjc6IgAqAHR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBcnJheV8iOjM6e3M6MTI6IgAqAHZhbHVlVHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6MTA6IgAqAGtleVR5cGUiO047czoxNzoiACoAZGVmYXVsdEtleVR5cGUiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb21wb3VuZCI6Mjp7czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0eXBlcyI7YToyOntpOjA7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFN0cmluZ18iOjA6e31pOjE7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEludGVnZXIiOjA6e319czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0b2tlbiI7czoxOiJ8Ijt9fXM6NzoiACoAbmFtZSI7czozOiJ2YXIiO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO3I6NzI7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBsb2NhdGlvbiI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVTdGFydCI7YjowO3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZUVuZCI7YjowO31zOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQB0eXBlcyI7YTowOnt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAZGVmYXVsdCI7czoyOiJbXSI7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAc3RhdGljIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6NjoicHVibGljIjt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjU4O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTo1ODtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQB0eXBlIjtOO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AHJlYWRPbmx5IjtiOjA7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAbWV0YWRhdGEiO2E6MDp7fX1zOjUyOiJcUEhQX0NvZGVTbmlmZmVyXFRva2VuaXplcnNcVG9rZW5pemVyOjoka25vd25MZW5ndGhzIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5IjoxMTp7czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo1MjoiXFBIUF9Db2RlU25pZmZlclxUb2tlbml6ZXJzXFRva2VuaXplcjo6JGtub3duTGVuZ3RocyI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjEyOiJrbm93bkxlbmd0aHMiO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBkb2NCbG9jayI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrIjo3OntzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHN1bW1hcnkiO3M6MjQ6Iktub3duIGxlbmd0aHMgb2YgdG9rZW5zLiI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAdGFncyI7YToxOntpOjA7Tzo0MzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcVmFyXyI6NDp7czoxNToiACoAdmFyaWFibGVOYW1lIjtzOjA6IiI7czo3OiIAKgB0eXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQXJyYXlfIjozOntzOjEyOiIAKgB2YWx1ZVR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xJbnRlZ2VyIjowOnt9czoxMDoiACoAa2V5VHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEludGVnZXIiOjA6e31zOjE3OiIAKgBkZWZhdWx0S2V5VHlwZSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbXBvdW5kIjoyOntzOjUyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFnZ3JlZ2F0ZWRUeXBlAHR5cGVzIjthOjI6e2k6MDtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcU3RyaW5nXyI6MDp7fWk6MTtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcSW50ZWdlciI6MDp7fX1zOjUyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFnZ3JlZ2F0ZWRUeXBlAHRva2VuIjtzOjE6InwiO319czo3OiIAKgBuYW1lIjtzOjM6InZhciI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAY29udGV4dCI7cjo3MjtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGxvY2F0aW9uIjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZVN0YXJ0IjtiOjA7czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlRW5kIjtiOjA7fXM6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AHR5cGVzIjthOjA6e31zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBkZWZhdWx0IjtzOjI6IltdIjtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBzdGF0aWMiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQB2aXNpYmlsaXR5IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkiOjE6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkAdmlzaWJpbGl0eSI7czo2OiJwdWJsaWMiO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBsb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6NjU7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjY1O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AHR5cGUiO047czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAcmVhZE9ubHkiO2I6MDtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBtZXRhZGF0YSI7YTowOnt9fXM6NTI6IlxQSFBfQ29kZVNuaWZmZXJcVG9rZW5pemVyc1xUb2tlbml6ZXI6OiRpZ25vcmVkTGluZXMiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkiOjExOntzOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjUyOiJcUEhQX0NvZGVTbmlmZmVyXFRva2VuaXplcnNcVG9rZW5pemVyOjokaWdub3JlZExpbmVzIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MTI6Imlnbm9yZWRMaW5lcyI7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AGRvY0Jsb2NrIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2siOjc6e3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAc3VtbWFyeSI7czo2NDoiQSBsaXN0IG9mIGxpbmVzIGJlaW5nIGlnbm9yZWQgZHVlIHRvIGVycm9yIHN1cHByZXNzaW9uIGNvbW1lbnRzLiI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAdGFncyI7YToxOntpOjA7Tzo0MzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcVmFyXyI6NDp7czoxNToiACoAdmFyaWFibGVOYW1lIjtzOjA6IiI7czo3OiIAKgB0eXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQXJyYXlfIjozOntzOjEyOiIAKgB2YWx1ZVR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xNaXhlZF8iOjA6e31zOjEwOiIAKgBrZXlUeXBlIjtOO3M6MTc6IgAqAGRlZmF1bHRLZXlUeXBlIjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29tcG91bmQiOjI6e3M6NTI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQWdncmVnYXRlZFR5cGUAdHlwZXMiO2E6Mjp7aTowO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xTdHJpbmdfIjowOnt9aToxO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xJbnRlZ2VyIjowOnt9fXM6NTI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQWdncmVnYXRlZFR5cGUAdG9rZW4iO3M6MToifCI7fX1zOjc6IgAqAG5hbWUiO3M6MzoidmFyIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX19czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBjb250ZXh0IjtyOjcyO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAbG9jYXRpb24iO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlU3RhcnQiO2I6MDtzOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVFbmQiO2I6MDt9czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAdHlwZXMiO2E6MDp7fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AGRlZmF1bHQiO3M6MjoiW10iO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AHN0YXRpYyI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AHZpc2liaWxpdHkiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eSI6MTp7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eQB2aXNpYmlsaXR5IjtzOjY6InB1YmxpYyI7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTo3MjtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6NzI7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAdHlwZSI7TjtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQByZWFkT25seSI7YjowO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AG1ldGFkYXRhIjthOjA6e319fXM6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBtZXRob2RzIjthOjEyOntzOjUyOiJcUEhQX0NvZGVTbmlmZmVyXFRva2VuaXplcnNcVG9rZW5pemVyOjpfX2NvbnN0cnVjdCgpIjtPOjM1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZCI6MTI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABkb2NCbG9jayI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrIjo3OntzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHN1bW1hcnkiO3M6MzM6IkluaXRpYWxpc2UgYW5kIHJ1biB0aGUgdG9rZW5pemVyLiI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAdGFncyI7YTo1OntpOjA7Tzo0NDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0iOjY6e3M6NTg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQB2YXJpYWJsZU5hbWUiO3M6NzoiY29udGVudCI7czo1NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzVmFyaWFkaWMiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNSZWZlcmVuY2UiO2I6MDtzOjc6IgAqAHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xTdHJpbmdfIjowOnt9czo3OiIAKgBuYW1lIjtzOjU6InBhcmFtIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czoyNDoiVGhlIGNvbnRlbnQgdG8gdG9rZW5pemUsIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19aToxO086NDQ6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtIjo2OntzOjU4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AdmFyaWFibGVOYW1lIjtzOjA6IiI7czo1NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzVmFyaWFkaWMiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNSZWZlcmVuY2UiO2I6MDtzOjc6IgAqAHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfIjoxOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8AZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czoyMzoiXFBIUF9Db2RlU25pZmZlclxDb25maWciO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo2OiJDb25maWciO319czo3OiIAKgBuYW1lIjtzOjU6InBhcmFtIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czo0NDoifCBudWxsICRjb25maWcgIFRoZSBjb25maWcgZGF0YSBmb3IgdGhlIHJ1bi4iO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX1pOjI7Tzo0NDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0iOjY6e3M6NTg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQB2YXJpYWJsZU5hbWUiO3M6NzoiZW9sQ2hhciI7czo1NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzVmFyaWFkaWMiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNSZWZlcmVuY2UiO2I6MDtzOjc6IgAqAHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xTdHJpbmdfIjowOnt9czo3OiIAKgBuYW1lIjtzOjU6InBhcmFtIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czozMzoiVGhlIEVPTCBjaGFyIHVzZWQgaW4gdGhlIGNvbnRlbnQuIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19aTozO086NDY6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFJldHVybl8iOjM6e3M6NzoiACoAdHlwZSI7TzozNjoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFZvaWRfIjowOnt9czo3OiIAKgBuYW1lIjtzOjY6InJldHVybiI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19aTo0O086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFRocm93cyI6Mzp7czo3OiIAKgB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XyI6MTp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6NDY6IlxQSFBfQ29kZVNuaWZmZXJcRXhjZXB0aW9uc1xUb2tlbml6ZXJFeGNlcHRpb24iO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxODoiVG9rZW5pemVyRXhjZXB0aW9uIjt9fXM6NzoiACoAbmFtZSI7czo2OiJ0aHJvd3MiO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjM1OiJJZiB0aGUgZmlsZSBhcHBlYXJzIHRvIGJlIG1pbmlmaWVkLiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO3I6NzI7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBsb2NhdGlvbiI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVTdGFydCI7YjowO3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZUVuZCI7YjowO31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo1MjoiXFBIUF9Db2RlU25pZmZlclxUb2tlbml6ZXJzXFRva2VuaXplcjo6X19jb25zdHJ1Y3QoKSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjExOiJfX2NvbnN0cnVjdCI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhYnN0cmFjdCI7YjowO3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmaW5hbCI7YjowO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABzdGF0aWMiO2I6MDtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6NjoicHVibGljIjt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFyZ3VtZW50cyI7YTozOntpOjA7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAbmFtZSI7czo3OiJjb250ZW50IjtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9aToxO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQiOjU6e3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6NjoiY29uZmlnIjtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9aToyO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQiOjU6e3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6NzoiZW9sQ2hhciI7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO3M6NToiJ1xcbiciO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO319czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTo4NTtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjEwNTtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAcmV0dXJuVHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABoYXNSZXR1cm5CeVJlZmVyZW5jZSI7YjowO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABtZXRhZGF0YSI7YTowOnt9fXM6NTg6IlxQSFBfQ29kZVNuaWZmZXJcVG9rZW5pemVyc1xUb2tlbml6ZXI6OmlzTWluaWZpZWRDb250ZW50KCkiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kIjoxMjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGRvY0Jsb2NrIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2siOjc6e3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAc3VtbWFyeSI7czo0NzoiQ2hlY2tzIHRoZSBjb250ZW50IHRvIHNlZSBpZiBpdCBsb29rcyBtaW5pZmllZC4iO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHRhZ3MiO2E6Mzp7aTowO086NDQ6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtIjo2OntzOjU4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AdmFyaWFibGVOYW1lIjtzOjc6ImNvbnRlbnQiO3M6NTY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1ZhcmlhZGljIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzUmVmZXJlbmNlIjtiOjA7czo3OiIAKgB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcU3RyaW5nXyI6MDp7fXM6NzoiACoAbmFtZSI7czo1OiJwYXJhbSI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MjQ6IlRoZSBjb250ZW50IHRvIHRva2VuaXplLiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fWk6MTtPOjQ0OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbSI6Njp7czo1ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAHZhcmlhYmxlTmFtZSI7czo3OiJlb2xDaGFyIjtzOjU2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNWYXJpYWRpYyI7YjowO3M6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1JlZmVyZW5jZSI7YjowO3M6NzoiACoAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFN0cmluZ18iOjA6e31zOjc6IgAqAG5hbWUiO3M6NToicGFyYW0iO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjMzOiJUaGUgRU9MIGNoYXIgdXNlZCBpbiB0aGUgY29udGVudC4iO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX1pOjI7Tzo0NjoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUmV0dXJuXyI6Mzp7czo3OiIAKgB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQm9vbGVhbiI6MDp7fXM6NzoiACoAbmFtZSI7czo2OiJyZXR1cm4iO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO3I6NzI7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBsb2NhdGlvbiI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVTdGFydCI7YjowO3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZUVuZCI7YjowO31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo1ODoiXFBIUF9Db2RlU25pZmZlclxUb2tlbml6ZXJzXFRva2VuaXplcjo6aXNNaW5pZmllZENvbnRlbnQoKSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjE3OiJpc01pbmlmaWVkQ29udGVudCI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhYnN0cmFjdCI7YjowO3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmaW5hbCI7YjowO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABzdGF0aWMiO2I6MDtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6OToicHJvdGVjdGVkIjt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFyZ3VtZW50cyI7YToyOntpOjA7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAbmFtZSI7czo3OiJjb250ZW50IjtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9aToxO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQiOjU6e3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6NzoiZW9sQ2hhciI7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO3M6NToiJ1xcbiciO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO319czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToxMTY7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToxMjk7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHJldHVyblR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xNaXhlZF8iOjA6e31zOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAaGFzUmV0dXJuQnlSZWZlcmVuY2UiO2I6MDtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbWV0YWRhdGEiO2E6MDp7fX1zOjUwOiJcUEhQX0NvZGVTbmlmZmVyXFRva2VuaXplcnNcVG9rZW5pemVyOjpnZXRUb2tlbnMoKSI7TzozNToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QiOjEyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZG9jQmxvY2siO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jayI6Nzp7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBzdW1tYXJ5IjtzOjI1OiJHZXRzIHRoZSBhcnJheSBvZiB0b2tlbnMuIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawB0YWdzIjthOjE6e2k6MDtPOjQ2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xSZXR1cm5fIjozOntzOjc6IgAqAHR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBcnJheV8iOjM6e3M6MTI6IgAqAHZhbHVlVHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6MTA6IgAqAGtleVR5cGUiO047czoxNzoiACoAZGVmYXVsdEtleVR5cGUiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb21wb3VuZCI6Mjp7czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0eXBlcyI7YToyOntpOjA7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFN0cmluZ18iOjA6e31pOjE7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEludGVnZXIiOjA6e319czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0b2tlbiI7czoxOiJ8Ijt9fXM6NzoiACoAbmFtZSI7czo2OiJyZXR1cm4iO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO3I6NzI7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBsb2NhdGlvbiI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVTdGFydCI7YjowO3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZUVuZCI7YjowO31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo1MDoiXFBIUF9Db2RlU25pZmZlclxUb2tlbml6ZXJzXFRva2VuaXplcjo6Z2V0VG9rZW5zKCkiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo5OiJnZXRUb2tlbnMiO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYWJzdHJhY3QiO2I6MDtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZmluYWwiO2I6MDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAc3RhdGljIjtiOjA7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHZpc2liaWxpdHkiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eSI6MTp7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eQB2aXNpYmlsaXR5IjtzOjY6InB1YmxpYyI7fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhcmd1bWVudHMiO2E6MDp7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABsb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MTM3O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MTQxO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAByZXR1cm5UeXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGhhc1JldHVybkJ5UmVmZXJlbmNlIjtiOjA7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAG1ldGFkYXRhIjthOjA6e319czo0OToiXFBIUF9Db2RlU25pZmZlclxUb2tlbml6ZXJzXFRva2VuaXplcjo6dG9rZW5pemUoKSI7TzozNToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QiOjEyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZG9jQmxvY2siO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jayI6Nzp7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBzdW1tYXJ5IjtzOjUxOiJDcmVhdGVzIGFuIGFycmF5IG9mIHRva2VucyB3aGVuIGdpdmVuIHNvbWUgY29udGVudC4iO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHRhZ3MiO2E6Mjp7aTowO086NDQ6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtIjo2OntzOjU4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AdmFyaWFibGVOYW1lIjtzOjY6InN0cmluZyI7czo1NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzVmFyaWFkaWMiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNSZWZlcmVuY2UiO2I6MDtzOjc6IgAqAHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xTdHJpbmdfIjowOnt9czo3OiIAKgBuYW1lIjtzOjU6InBhcmFtIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czoyMzoiVGhlIHN0cmluZyB0byB0b2tlbml6ZS4iO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX1pOjE7Tzo0NjoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUmV0dXJuXyI6Mzp7czo3OiIAKgB0eXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQXJyYXlfIjozOntzOjEyOiIAKgB2YWx1ZVR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xNaXhlZF8iOjA6e31zOjEwOiIAKgBrZXlUeXBlIjtOO3M6MTc6IgAqAGRlZmF1bHRLZXlUeXBlIjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29tcG91bmQiOjI6e3M6NTI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQWdncmVnYXRlZFR5cGUAdHlwZXMiO2E6Mjp7aTowO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xTdHJpbmdfIjowOnt9aToxO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xJbnRlZ2VyIjowOnt9fXM6NTI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQWdncmVnYXRlZFR5cGUAdG9rZW4iO3M6MToifCI7fX1zOjc6IgAqAG5hbWUiO3M6NjoicmV0dXJuIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX19czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBjb250ZXh0IjtyOjcyO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAbG9jYXRpb24iO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlU3RhcnQiO2I6MDtzOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVFbmQiO2I6MDt9czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6NDk6IlxQSFBfQ29kZVNuaWZmZXJcVG9rZW5pemVyc1xUb2tlbml6ZXI6OnRva2VuaXplKCkiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo4OiJ0b2tlbml6ZSI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhYnN0cmFjdCI7YjoxO3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmaW5hbCI7YjowO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABzdGF0aWMiO2I6MDtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6OToicHJvdGVjdGVkIjt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFyZ3VtZW50cyI7YToxOntpOjA7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAbmFtZSI7czo2OiJzdHJpbmciO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AHR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xNaXhlZF8iOjA6e31zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABkZWZhdWx0IjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO319czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToxNTE7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToxNTE7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHJldHVyblR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xNaXhlZF8iOjA6e31zOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAaGFzUmV0dXJuQnlSZWZlcmVuY2UiO2I6MDtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbWV0YWRhdGEiO2E6MDp7fX1zOjU4OiJcUEhQX0NvZGVTbmlmZmVyXFRva2VuaXplcnNcVG9rZW5pemVyOjpwcm9jZXNzQWRkaXRpb25hbCgpIjtPOjM1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZCI6MTI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABkb2NCbG9jayI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrIjo3OntzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHN1bW1hcnkiO3M6NTM6IlBlcmZvcm1zIGFkZGl0aW9uYWwgcHJvY2Vzc2luZyBhZnRlciBtYWluIHRva2VuaXppbmcuIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawB0YWdzIjthOjE6e2k6MDtPOjQ2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xSZXR1cm5fIjozOntzOjc6IgAqAHR5cGUiO086MzY6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xWb2lkXyI6MDp7fXM6NzoiACoAbmFtZSI7czo2OiJyZXR1cm4iO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO3I6NzI7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBsb2NhdGlvbiI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVTdGFydCI7YjowO3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZUVuZCI7YjowO31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo1ODoiXFBIUF9Db2RlU25pZmZlclxUb2tlbml6ZXJzXFRva2VuaXplcjo6cHJvY2Vzc0FkZGl0aW9uYWwoKSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjE3OiJwcm9jZXNzQWRkaXRpb25hbCI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhYnN0cmFjdCI7YjoxO3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmaW5hbCI7YjowO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABzdGF0aWMiO2I6MDtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6OToicHJvdGVjdGVkIjt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFyZ3VtZW50cyI7YTowOnt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToxNTk7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToxNTk7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHJldHVyblR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xNaXhlZF8iOjA6e31zOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAaGFzUmV0dXJuQnlSZWZlcmVuY2UiO2I6MDtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbWV0YWRhdGEiO2E6MDp7fX1zOjU4OiJcUEhQX0NvZGVTbmlmZmVyXFRva2VuaXplcnNcVG9rZW5pemVyOjpjcmVhdGVQb3NpdGlvbk1hcCgpIjtPOjM1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZCI6MTI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABkb2NCbG9jayI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrIjo3OntzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHN1bW1hcnkiO3M6MzI6IlNldHMgdG9rZW4gcG9zaXRpb24gaW5mb3JtYXRpb24uIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjEzMToiQ2FuIGFsc28gY29udmVydCB0YWJzIGludG8gc3BhY2VzLiBFYWNoIHRhYiBjYW4gcmVwcmVzZW50IGJldHdlZW4KMSBhbmQgJHdpZHRoIHNwYWNlcywgc28gdGhpcyBjYW5ub3QgYmUgYSBzdHJhaWdodCBzdHJpbmcgcmVwbGFjZS4iO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAdGFncyI7YToxOntpOjA7Tzo0NjoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUmV0dXJuXyI6Mzp7czo3OiIAKgB0eXBlIjtPOjM2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcVm9pZF8iOjA6e31zOjc6IgAqAG5hbWUiO3M6NjoicmV0dXJuIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX19czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBjb250ZXh0IjtyOjcyO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAbG9jYXRpb24iO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlU3RhcnQiO2I6MDtzOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVFbmQiO2I6MDt9czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6NTg6IlxQSFBfQ29kZVNuaWZmZXJcVG9rZW5pemVyc1xUb2tlbml6ZXI6OmNyZWF0ZVBvc2l0aW9uTWFwKCkiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxNzoiY3JlYXRlUG9zaXRpb25NYXAiO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYWJzdHJhY3QiO2I6MDtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZmluYWwiO2I6MDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAc3RhdGljIjtiOjA7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHZpc2liaWxpdHkiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eSI6MTp7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eQB2aXNpYmlsaXR5IjtzOjc6InByaXZhdGUiO31zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXJndW1lbnRzIjthOjA6e31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjE3MDtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjU2NTtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAcmV0dXJuVHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABoYXNSZXR1cm5CeVJlZmVyZW5jZSI7YjowO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABtZXRhZGF0YSI7YTowOnt9fXM6NTk6IlxQSFBfQ29kZVNuaWZmZXJcVG9rZW5pemVyc1xUb2tlbml6ZXI6OnJlcGxhY2VUYWJzSW5Ub2tlbigpIjtPOjM1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZCI6MTI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABkb2NCbG9jayI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrIjo3OntzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHN1bW1hcnkiO3M6NTI6IlJlcGxhY2VzIHRhYnMgaW4gb3JpZ2luYWwgdG9rZW4gY29udGVudCB3aXRoIHNwYWNlcy4iO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MjIzOiJFYWNoIHRhYiBjYW4gcmVwcmVzZW50IGJldHdlZW4gMSBhbmQgJGNvbmZpZy0+dGFiV2lkdGggc3BhY2VzLApzbyB0aGlzIGNhbm5vdCBiZSBhIHN0cmFpZ2h0IHN0cmluZyByZXBsYWNlLiBUaGUgb3JpZ2luYWwgY29udGVudAppcyBwbGFjZWQgaW50byBhbiBvcmlnX2NvbnRlbnQgaW5kZXggYW5kIHRoZSBuZXcgdG9rZW4gbGVuZ3RoIGlzIGFsc28Kc2V0IGluIHRoZSBsZW5ndGggaW5kZXguIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHRhZ3MiO2E6NTp7aTowO086NDQ6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtIjo2OntzOjU4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AdmFyaWFibGVOYW1lIjtzOjU6InRva2VuIjtzOjU2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNWYXJpYWRpYyI7YjowO3M6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1JlZmVyZW5jZSI7YjowO3M6NzoiACoAdHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFycmF5XyI6Mzp7czoxMjoiACoAdmFsdWVUeXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czoxMDoiACoAa2V5VHlwZSI7TjtzOjE3OiIAKgBkZWZhdWx0S2V5VHlwZSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbXBvdW5kIjoyOntzOjUyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFnZ3JlZ2F0ZWRUeXBlAHR5cGVzIjthOjI6e2k6MDtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcU3RyaW5nXyI6MDp7fWk6MTtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcSW50ZWdlciI6MDp7fX1zOjUyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFnZ3JlZ2F0ZWRUeXBlAHRva2VuIjtzOjE6InwiO319czo3OiIAKgBuYW1lIjtzOjU6InBhcmFtIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czozMzoiVGhlIHRva2VuIHRvIHJlcGxhY2UgdGFicyBpbnNpZGUuIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19aToxO086NDQ6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtIjo2OntzOjU4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AdmFyaWFibGVOYW1lIjtzOjY6InByZWZpeCI7czo1NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzVmFyaWFkaWMiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNSZWZlcmVuY2UiO2I6MDtzOjc6IgAqAHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xTdHJpbmdfIjowOnt9czo3OiIAKgBuYW1lIjtzOjU6InBhcmFtIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czo1MzoiVGhlIGNoYXJhY3RlciB0byB1c2UgdG8gcmVwcmVzZW50IHRoZSBzdGFydCBvZiBhIHRhYi4iO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX1pOjI7Tzo0NDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0iOjY6e3M6NTg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQB2YXJpYWJsZU5hbWUiO3M6NzoicGFkZGluZyI7czo1NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzVmFyaWFkaWMiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNSZWZlcmVuY2UiO2I6MDtzOjc6IgAqAHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xTdHJpbmdfIjowOnt9czo3OiIAKgBuYW1lIjtzOjU6InBhcmFtIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czo1MToiVGhlIGNoYXJhY3RlciB0byB1c2UgdG8gcmVwcmVzZW50IHRoZSBlbmQgb2YgYSB0YWIuIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19aTozO086NDQ6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtIjo2OntzOjU4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AdmFyaWFibGVOYW1lIjtzOjg6InRhYldpZHRoIjtzOjU2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNWYXJpYWRpYyI7YjowO3M6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1JlZmVyZW5jZSI7YjowO3M6NzoiACoAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEludGVnZXIiOjA6e31zOjc6IgAqAG5hbWUiO3M6NToicGFyYW0iO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjQxOiJUaGUgbnVtYmVyIG9mIHNwYWNlcyBlYWNoIHRhYiByZXByZXNlbnRzLiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fWk6NDtPOjQ2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xSZXR1cm5fIjozOntzOjc6IgAqAHR5cGUiO086MzY6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xWb2lkXyI6MDp7fXM6NzoiACoAbmFtZSI7czo2OiJyZXR1cm4iO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO3I6NzI7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBsb2NhdGlvbiI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVTdGFydCI7YjowO3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZUVuZCI7YjowO31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo1OToiXFBIUF9Db2RlU25pZmZlclxUb2tlbml6ZXJzXFRva2VuaXplcjo6cmVwbGFjZVRhYnNJblRva2VuKCkiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxODoicmVwbGFjZVRhYnNJblRva2VuIjt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFic3RyYWN0IjtiOjA7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZpbmFsIjtiOjA7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHN0YXRpYyI7YjowO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAB2aXNpYmlsaXR5IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkiOjE6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkAdmlzaWJpbGl0eSI7czo2OiJwdWJsaWMiO31zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXJndW1lbnRzIjthOjQ6e2k6MDtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjU6InRva2VuIjtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjoxO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9aToxO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQiOjU6e3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6NjoicHJlZml4IjtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7czozOiInICciO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO31pOjI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAbmFtZSI7czo3OiJwYWRkaW5nIjtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7czozOiInICciO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO31pOjM7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAbmFtZSI7czo4OiJ0YWJXaWR0aCI7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO3M6NDoibnVsbCI7czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fX1zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjU4MztzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjY1NTtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAcmV0dXJuVHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABoYXNSZXR1cm5CeVJlZmVyZW5jZSI7YjowO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABtZXRhZGF0YSI7YTowOnt9fXM6NTU6IlxQSFBfQ29kZVNuaWZmZXJcVG9rZW5pemVyc1xUb2tlbml6ZXI6OmNyZWF0ZVRva2VuTWFwKCkiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kIjoxMjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGRvY0Jsb2NrIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2siOjc6e3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAc3VtbWFyeSI7czozNjoiQ3JlYXRlcyBhIG1hcCBvZiBicmFja2V0cyBwb3NpdGlvbnMuIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawB0YWdzIjthOjE6e2k6MDtPOjQ2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xSZXR1cm5fIjozOntzOjc6IgAqAHR5cGUiO086MzY6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xWb2lkXyI6MDp7fXM6NzoiACoAbmFtZSI7czo2OiJyZXR1cm4iO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO3I6NzI7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBsb2NhdGlvbiI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVTdGFydCI7YjowO3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZUVuZCI7YjowO31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo1NToiXFBIUF9Db2RlU25pZmZlclxUb2tlbml6ZXJzXFRva2VuaXplcjo6Y3JlYXRlVG9rZW5NYXAoKSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjE0OiJjcmVhdGVUb2tlbk1hcCI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhYnN0cmFjdCI7YjowO3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmaW5hbCI7YjowO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABzdGF0aWMiO2I6MDtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6NzoicHJpdmF0ZSI7fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhcmd1bWVudHMiO2E6MDp7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABsb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6NjYzO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6ODQwO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAByZXR1cm5UeXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGhhc1JldHVybkJ5UmVmZXJlbmNlIjtiOjA7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAG1ldGFkYXRhIjthOjA6e319czo2ODoiXFBIUF9Db2RlU25pZmZlclxUb2tlbml6ZXJzXFRva2VuaXplcjo6Y3JlYXRlUGFyZW50aGVzaXNOZXN0aW5nTWFwKCkiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kIjoxMjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGRvY0Jsb2NrIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2siOjc6e3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAc3VtbWFyeSI7czo2ODoiQ3JlYXRlcyBhIG1hcCBmb3IgdGhlIHBhcmVudGhlc2lzIHRva2VucyB0aGF0IHN1cnJvdW5kIG90aGVyIHRva2Vucy4iO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHRhZ3MiO2E6MTp7aTowO086NDY6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFJldHVybl8iOjM6e3M6NzoiACoAdHlwZSI7TzozNjoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFZvaWRfIjowOnt9czo3OiIAKgBuYW1lIjtzOjY6InJldHVybiI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAY29udGV4dCI7cjo3MjtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGxvY2F0aW9uIjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZVN0YXJ0IjtiOjA7czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlRW5kIjtiOjA7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjY4OiJcUEhQX0NvZGVTbmlmZmVyXFRva2VuaXplcnNcVG9rZW5pemVyOjpjcmVhdGVQYXJlbnRoZXNpc05lc3RpbmdNYXAoKSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjI3OiJjcmVhdGVQYXJlbnRoZXNpc05lc3RpbmdNYXAiO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYWJzdHJhY3QiO2I6MDtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZmluYWwiO2I6MDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAc3RhdGljIjtiOjA7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHZpc2liaWxpdHkiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eSI6MTp7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eQB2aXNpYmlsaXR5IjtzOjc6InByaXZhdGUiO31zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXJndW1lbnRzIjthOjA6e31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjg0ODtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjg3NztzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAcmV0dXJuVHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABoYXNSZXR1cm5CeVJlZmVyZW5jZSI7YjowO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABtZXRhZGF0YSI7YTowOnt9fXM6NTU6IlxQSFBfQ29kZVNuaWZmZXJcVG9rZW5pemVyc1xUb2tlbml6ZXI6OmNyZWF0ZVNjb3BlTWFwKCkiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kIjoxMjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGRvY0Jsb2NrIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2siOjc6e3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAc3VtbWFyeSI7czo0NzoiQ3JlYXRlcyBhIHNjb3BlIG1hcCBvZiB0b2tlbnMgdGhhdCBvcGVuIHNjb3Blcy4iO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHRhZ3MiO2E6Mjp7aTowO086NDY6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFJldHVybl8iOjM6e3M6NzoiACoAdHlwZSI7TzozNjoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFZvaWRfIjowOnt9czo3OiIAKgBuYW1lIjtzOjY6InJldHVybiI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19aToxO086NDI6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFNlZSI6Mzp7czo3OiIAKgBuYW1lIjtzOjM6InNlZSI7czo5OiIAKgByZWZlcnMiO086NTQ6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFJlZmVyZW5jZVxGcXNlbiI6MTp7czo2MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFJlZmVyZW5jZVxGcXNlbgBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjQ1OiJcUEhQX0NvZGVTbmlmZmVyXFRva2VuaXplcnNccmVjdXJzZVNjb3BlTWFwKCkiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxNToicmVjdXJzZVNjb3BlTWFwIjt9fXM6MTQ6IgAqAGRlc2NyaXB0aW9uIjtOO319czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBjb250ZXh0IjtyOjcyO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAbG9jYXRpb24iO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlU3RhcnQiO2I6MDtzOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVFbmQiO2I6MDt9czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6NTU6IlxQSFBfQ29kZVNuaWZmZXJcVG9rZW5pemVyc1xUb2tlbml6ZXI6OmNyZWF0ZVNjb3BlTWFwKCkiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxNDoiY3JlYXRlU2NvcGVNYXAiO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYWJzdHJhY3QiO2I6MDtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZmluYWwiO2I6MDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAc3RhdGljIjtiOjA7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHZpc2liaWxpdHkiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eSI6MTp7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eQB2aXNpYmlsaXR5IjtzOjc6InByaXZhdGUiO31zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXJndW1lbnRzIjthOjA6e31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjg4NjtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjkxNztzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAcmV0dXJuVHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABoYXNSZXR1cm5CeVJlZmVyZW5jZSI7YjowO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABtZXRhZGF0YSI7YTowOnt9fXM6NTY6IlxQSFBfQ29kZVNuaWZmZXJcVG9rZW5pemVyc1xUb2tlbml6ZXI6OnJlY3Vyc2VTY29wZU1hcCgpIjtPOjM1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZCI6MTI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABkb2NCbG9jayI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrIjo3OntzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHN1bW1hcnkiO3M6NTU6IlJlY3Vyc2VzIHRob3VnaCB0aGUgc2NvcGUgb3BlbmVycyB0byBidWlsZCBhIHNjb3BlIG1hcC4iO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHRhZ3MiO2E6NTp7aTowO086NDQ6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtIjo2OntzOjU4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AdmFyaWFibGVOYW1lIjtzOjg6InN0YWNrUHRyIjtzOjU2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNWYXJpYWRpYyI7YjowO3M6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1JlZmVyZW5jZSI7YjowO3M6NzoiACoAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEludGVnZXIiOjA6e31zOjc6IgAqAG5hbWUiO3M6NToicGFyYW0iO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjkyOiJUaGUgcG9zaXRpb24gaW4gdGhlIHN0YWNrIG9mIHRoZSB0b2tlbiB0aGF0Cm9wZW5lZCB0aGUgc2NvcGUgKGVnLiBhbiBJRiB0b2tlbiBvciBGT1IgdG9rZW4pLiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fWk6MTtPOjQ0OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbSI6Njp7czo1ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAHZhcmlhYmxlTmFtZSI7czo1OiJkZXB0aCI7czo1NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzVmFyaWFkaWMiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNSZWZlcmVuY2UiO2I6MDtzOjc6IgAqAHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xJbnRlZ2VyIjowOnt9czo3OiIAKgBuYW1lIjtzOjU6InBhcmFtIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czozNDoiSG93IG1hbnkgc2NvcGUgbGV2ZWxzIGRvd24gd2UgYXJlLiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fWk6MjtPOjQ0OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbSI6Njp7czo1ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAHZhcmlhYmxlTmFtZSI7czo2OiJpZ25vcmUiO3M6NTY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1ZhcmlhZGljIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzUmVmZXJlbmNlIjtiOjA7czo3OiIAKgB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcSW50ZWdlciI6MDp7fXM6NzoiACoAbmFtZSI7czo1OiJwYXJhbSI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6Mzg6IkhvdyBtYW55IGN1cmx5IGJyYWNlcyB3ZSBhcmUgaWdub3JpbmcuIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19aTozO086NDY6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFJldHVybl8iOjM6e3M6NzoiACoAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEludGVnZXIiOjA6e31zOjc6IgAqAG5hbWUiO3M6NjoicmV0dXJuIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czo0ODoiVGhlIHBvc2l0aW9uIGluIHRoZSBzdGFjayB0aGF0IGNsb3NlZCB0aGUgc2NvcGUuIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19aTo0O086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFRocm93cyI6Mzp7czo3OiIAKgB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XyI6MTp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6NDY6IlxQSFBfQ29kZVNuaWZmZXJcRXhjZXB0aW9uc1xUb2tlbml6ZXJFeGNlcHRpb24iO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxODoiVG9rZW5pemVyRXhjZXB0aW9uIjt9fXM6NzoiACoAbmFtZSI7czo2OiJ0aHJvd3MiO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjM1OiJJZiB0aGUgbmVzdGluZyBsZXZlbCBnZXRzIHRvbyBkZWVwLiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO3I6NzI7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBsb2NhdGlvbiI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVTdGFydCI7YjowO3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZUVuZCI7YjowO31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo1NjoiXFBIUF9Db2RlU25pZmZlclxUb2tlbml6ZXJzXFRva2VuaXplcjo6cmVjdXJzZVNjb3BlTWFwKCkiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxNToicmVjdXJzZVNjb3BlTWFwIjt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFic3RyYWN0IjtiOjA7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZpbmFsIjtiOjA7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHN0YXRpYyI7YjowO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAB2aXNpYmlsaXR5IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkiOjE6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkAdmlzaWJpbGl0eSI7czo3OiJwcml2YXRlIjt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFyZ3VtZW50cyI7YTozOntpOjA7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAbmFtZSI7czo4OiJzdGFja1B0ciI7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fWk6MTtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjU6ImRlcHRoIjtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7czoxOiIxIjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9aToyO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQiOjU6e3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6NjoiaWdub3JlIjtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7czoxOiIwIjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjoxO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABsb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6OTMxO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MTQ4NTtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAcmV0dXJuVHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABoYXNSZXR1cm5CeVJlZmVyZW5jZSI7YjowO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABtZXRhZGF0YSI7YTowOnt9fXM6NTU6IlxQSFBfQ29kZVNuaWZmZXJcVG9rZW5pemVyc1xUb2tlbml6ZXI6OmNyZWF0ZUxldmVsTWFwKCkiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kIjoxMjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGRvY0Jsb2NrIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2siOjc6e3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAc3VtbWFyeSI7czoyNToiQ29uc3RydWN0cyB0aGUgbGV2ZWwgbWFwLiI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czoyNjc6IlRoZSBsZXZlbCBtYXAgYWRkcyBhICdsZXZlbCcgaW5kZXggdG8gZWFjaCB0b2tlbiB3aGljaCBpbmRpY2F0ZXMgdGhlCmRlcHRoIHRoYXQgYSB0b2tlbiB3aXRoaW4gYSBzZXQgb2Ygc2NvcGUgYmxvY2tzLiBJdCBhbHNvIGFkZHMgYQonY29uZGl0aW9ucycgaW5kZXggd2hpY2ggaXMgYW4gYXJyYXkgb2YgdGhlIHNjb3BlIGNvbmRpdGlvbnMgdGhhdCBvcGVuZWQKZWFjaCBvZiB0aGUgc2NvcGVzIC0gcG9zaXRpb24gMCBiZWluZyB0aGUgZmlyc3Qgc2NvcGUgb3BlbmVyLiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawB0YWdzIjthOjE6e2k6MDtPOjQ2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xSZXR1cm5fIjozOntzOjc6IgAqAHR5cGUiO086MzY6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xWb2lkXyI6MDp7fXM6NzoiACoAbmFtZSI7czo2OiJyZXR1cm4iO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO3I6NzI7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBsb2NhdGlvbiI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVTdGFydCI7YjowO3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZUVuZCI7YjowO31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo1NToiXFBIUF9Db2RlU25pZmZlclxUb2tlbml6ZXJzXFRva2VuaXplcjo6Y3JlYXRlTGV2ZWxNYXAoKSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjE0OiJjcmVhdGVMZXZlbE1hcCI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhYnN0cmFjdCI7YjowO3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmaW5hbCI7YjowO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABzdGF0aWMiO2I6MDtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6NzoicHJpdmF0ZSI7fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhcmd1bWVudHMiO2E6MDp7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABsb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MTQ5ODtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjE3Mjk7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHJldHVyblR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xNaXhlZF8iOjA6e31zOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAaGFzUmV0dXJuQnlSZWZlcmVuY2UiO2I6MDtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbWV0YWRhdGEiO2E6MDp7fX19czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAHVzZWRUcmFpdHMiO2E6MDp7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBsb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MTU7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToxNzMyO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBtZXRhZGF0YSI7YTowOnt9fX1zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGludGVyZmFjZXMiO2E6MDp7fXM6NDE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAdHJhaXRzIjthOjA6e31zOjQwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGVudW1zIjthOjA6e31zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAG1ldGFkYXRhIjthOjA6e319";