Ozs7IGdjY2J1Zy5lbCAtLS0gZm9yd2FyZCBidWcgcmVwb3J0cyB0byBnbmF0cwo7OyAoQykgMjAwMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KOzsgV3JpdHRlbiBieSBNYXJ0aW4gdi4gTPZ3aXMKOzsgVXNhZ2U6Cjs7IEluIHJtYWlsLCBiaW5kIGEga2V5IHRvIHJtYWlsLWdjY2J1Zy1yZXBseSwgZS5nLgo7OyAgIChyZXF1aXJlICdybWFpbCkKOzsgICAocmVxdWlyZSAnZ2NjYnVnKQo7OyAgIChkZWZpbmUta2V5IHJtYWlsLW1vZGUtbWFwICJSIiAncm1haWwtZ2NjYnVnLXJlcGx5KQo7OyBUaGVuLCB3aGVuIHJldmlld2luZyBhIHJlcG9ydCwgdHlwZSBSIHRvIGNyZWF0ZSBhIGduYXRzLWZvcm1hdHRlZAo7OyBtZXNzYWdlLgoKKHByb3ZpZGUgJ2djY2J1ZykKCihkZWZ1biBnY2NidWctcmVwbHkgKCkKICAoaW50ZXJhY3RpdmUpCiAgKGxldCAoKG9yaWcteWFuay1wcmVmaXggbWFpbC15YW5rLXByZWZpeCkpCiAgICAoaW5zZXJ0ICI+U3VibWl0dGVyLUlkOiBuZXRcbiIpCiAgICAoaW5zZXJ0ICI+T3JpZ2luYXRvcjogXG4iKQogICAgKGluc2VydCAiPkNvbmZpZGVudGlhbDogbm9cbiIpCiAgICAoaW5zZXJ0ICI+U3lub3BzaXM6ICIpCiAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgKG1haWwtc3ViamVjdCkKICAgICAgKGxldCAoKHN0b3AgKHBvaW50KSkpCgkocmUtc2VhcmNoLWJhY2t3YXJkICJSZTogIikKCShjb3B5LXJlZ2lvbi1hcy1raWxsIChtYXRjaC1lbmQgMCkgc3RvcCkpKQogICAgKHlhbmspCiAgICAoaW5zZXJ0ICJcbiIpCiAgICAoaW5zZXJ0ICI+U2V2ZXJpdHk6IHNlcmlvdXNcbiIpCiAgICAoaW5zZXJ0ICI+UHJpb3JpdHk6IG1lZGl1bVxuIikKICAgIChpbnNlcnQgIj5DYXRlZ29yeTogXG4iKQogICAgKGluc2VydCAiPkNsYXNzOiBcbiIpCiAgICA7KGluc2VydCAiPlN0YXRlOiBhbmFseXplZFxuIikKICAgIChpbnNlcnQgIj5SZWxlYXNlOiAyLjk1LjJcbiIpCiAgICAoaW5zZXJ0ICI+RW52aXJvbm1lbnQ6XG4iKQogICAgKGluc2VydCAiPkRlc2NyaXB0aW9uOlxuIikKICAgIChzZXQgJ21haWwteWFuay1wcmVmaXggbmlsKQogICAgKHNldCAnbWFpbC15YW5rLWlnbm9yZWQtaGVhZGVycyAKCSAiXnZpYTpcXHxebWFpbC1mcm9tOlxcfF5vcmlnaW46XFx8XnN0YXR1czpcXHxecmVtYWlsZWRcXHxecmVjZWl2ZWQ6XFx8XnN1bW1hcnktbGluZTpcXHxedG86XFx8XnN1YmplY3Q6XFx8XmluLXJlcGx5LXRvOlxcfF5yZXR1cm4tcGF0aDpcXHxeWC0uKjpcXHxeVXNlci1BZ2VudDpcXHxeTUlNRS1WZXJzaW9uOlxcfF5Db250ZW50LS4qOlxcfF5MaXN0LS4qOlxcfENbQ2NdOlxcfF5QcmVjZWRlbmNlOlxcfF5TZW5kZXI6XFx8Xk1haWxpbmctTGlzdDpcXHxeRGVsaXZlcmVkLVRvOlxcfF4+RnJvbSIpCiAgICAobWFpbC15YW5rLW9yaWdpbmFsIHQpCiAgICAoc2V0ICdtYWlsLXlhbmstcHJlZml4IG9yaWcteWFuay1wcmVmaXgpCiAgICA7IENvcHkgRnJvbTogZmllbGQgdG8gT3JpZ2luYXRvcjoKICAgIChyZS1zZWFyY2gtYmFja3dhcmQgIkZyb206ICIpCiAgICAobGV0ICgoYmVnIChtYXRjaC1lbmQgMCkpKQogICAgICAoZW5kLW9mLWxpbmUpCiAgICAgIChraWxsLXJlZ2lvbiBiZWcgKHBvaW50KSkpCiAgICAocmUtc2VhcmNoLWJhY2t3YXJkICI+T3JpZ2luYXRvcjogIikKICAgIChnb3RvLWNoYXIgKG1hdGNoLWVuZCAwKSkKICAgICh5YW5rKQogICAgOyBLaWxsIEZyb206IGxpbmUKICAgIChyZS1zZWFyY2gtZm9yd2FyZCAiRnJvbToiKQogICAgKGJlZ2lubmluZy1vZi1saW5lKQogICAgKGtpbGwtbGluZSAxKQogICAgOyBSZXBsYWNlIE1lc3NhZ2UtSUQ6IHdpdGggT3JpZ2luYWwtTWVzc2FnZS1JRAogICAgKGJlZ2lubmluZy1vZi1idWZmZXIpCiAgICAocmUtc2VhcmNoLWZvcndhcmQgIk1lc3NhZ2UtSUQ6IC4qIikKICAgIChyZXBsYWNlLW1hdGNoICJPcmlnaW5hbC1cXCYiKQogICAgOyBSZXBsYWNlIFRvOiBsaW5lLCBhZGRpbmcgcmVjaXBpZW50IHRvIE5vdGlmeSBsaXN0CiAgICAobWFpbC10bykKICAgIChyZS1zZWFyY2gtYmFja3dhcmQgIlRvOiAiKQogICAgKHJlcGxhY2UtbWF0Y2ggIlRvOiBnY2MtZ25hdHNAZ2NjLmdudS5vcmdcblgtR05BVFMtTm90aWZ5OiAiKQogICAgOyBhZGQgYWRkaXRpb25hbCBmaWVsZHMKICAgIChlbmQtb2YtYnVmZmVyKQogICAgKGluc2VydCAiPkhvdy1Uby1SZXBlYXQ6IFxuPkZpeDogXG4iKQogICAgOyBTZWUgd2hldGhlciBhbiBPcmdhbml6YXRpb246IGlzIHByZXNlbnQKICAgIChsZXQgKChvcmcgKHJlLXNlYXJjaC1iYWNrd2FyZCAiT3JnYW5pemF0aW9uOi4qIiBuaWwgdCkpKQogICAgICAoaWYgb3JnCgkgIChwcm9nbiAKCSAgICAoa2lsbC1yZWdpb24gKHBvaW50KSAobWF0Y2gtZW5kIDApKQoJICAgIChyZS1zZWFyY2gtYmFja3dhcmQgIj5Db25maWRlbnRpYWwiKQoJICAgIChpbnNlcnQgIj4iKQoJICAgICh5YW5rKQoJICAgIChpbnNlcnQgIlxuIikpKSkKOyAgICAgVGhpcyBraWxscyBDQzogbGluZXMsIGJ1dCBybWFpbC1yZXBseSBiZWxvdyB3b24ndCBjcmVhdGUgYW55CjsgICAgIChtYWlsLWNjKQo7ICAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCjsgICAgIChraWxsLWxpbmUgMSkKICAgICkpCgooZGVmdW4gcm1haWwtZ2NjYnVnLXJlcGx5ICgpCiAgKGludGVyYWN0aXZlKQogIChybWFpbC10b2dnbGUtaGVhZGVyIDApCiAgKHJtYWlsLXJlcGx5IHQpCiAgKGdjY2J1Zy1yZXBseSkpCgo=