ZGlmZiAtLWdpdCBhL3NyYy9kaWdyYXBoLmMgYi9zcmMvZGlncmFwaC5jCmluZGV4IDIxOTVkNjQuLjVkYWI1MWIgMTAwNjQ0Ci0tLSBhL3NyYy9kaWdyYXBoLmMKKysrIGIvc3JjL2RpZ3JhcGguYwpAQCAtMzksNzQgKzM5LDcgQEAKICAqIGNvbXBpbGVycyBjYW5ub3QgaGFuZGxlIHRoZW0gKEFtaWdhIFNBUy9DIGlzIHRoZSBtb3N0IHBpY2t5IG9uZSkuCiAgKi8KIHN0YXRpYyBkaWdyX1QgZGlncmFwaGRlZmF1bHRbXSA9Ci0jaWYgZGVmaW5lZChNU0RPUykKLQkvKgotCSAqIE1TRE9TIGRpZ3JhcGhzLgotCSAqLwotICAgICAgIHt7J0MnLCAnLCcsIDEyOH0sCS8qIH5AIFhYICovCi0Jeyd1JywgJyInLCAxMjl9LAkvKiCBICovCi0JeydlJywgJ1wnJywgMTMwfSwJLyoggiAqLwotCXsnYScsICdeJywgMTMxfSwJLyoggyAqLwotCXsnYScsICciJywgMTMyfSwJLyoghCAqLwotCXsnYScsICdgJywgMTMzfSwJLyoghSAqLwotCXsnYScsICdAJywgMTM0fSwJLyoghiAqLwotCXsnYycsICcsJywgMTM1fSwJLyogfkcgWFggKi8KLQl7J2UnLCAnXicsIDEzNn0sCS8qIH5IIFhYICovCi0JeydlJywgJyInLCAxMzd9LAkvKiCJICovCi0JeydlJywgJ2AnLCAxMzh9LAkvKiCKICovCi0JeydpJywgJyInLCAxMzl9LAkvKiCLICovCi0JeydpJywgJ14nLCAxNDB9LAkvKiCMICovCi0JeydpJywgJ2AnLCAxNDF9LAkvKiCNICovCi0JeydBJywgJyInLCAxNDJ9LAkvKiB+TiBYWCAqLwotCXsnQScsICdAJywgMTQzfSwJLyogjyAqLwotCXsnRScsICdcJycsIDE0NH0sCS8qIJAgKi8KLQl7J2EnLCAnZScsIDE0NX0sCS8qIJEgKi8KLQl7J0EnLCAnRScsIDE0Nn0sCS8qIJIgKi8KLQl7J28nLCAnXicsIDE0N30sCS8qIJMgKi8KLQl7J28nLCAnIicsIDE0OH0sCS8qIJQgKi8KLQl7J28nLCAnYCcsIDE0OX0sCS8qIJUgKi8KLQl7J3UnLCAnXicsIDE1MH0sCS8qIJYgKi8KLQl7J3UnLCAnYCcsIDE1MX0sCS8qIJcgKi8KLQl7J3knLCAnIicsIDE1Mn0sCS8qIJggKi8KLQl7J08nLCAnIicsIDE1M30sCS8qIJkgKi8KLQl7J1UnLCAnIicsIDE1NH0sCS8qIJogKi8KLQl7J2MnLCAnfCcsIDE1NX0sCS8qIJsgKi8KLQl7JyQnLCAnJCcsIDE1Nn0sCS8qIJwgKi8KLQl7J1knLCAnLScsIDE1N30sCS8qIH5dIFhYICovCi0JeydQJywgJ3QnLCAxNTh9LAkvKiCeICovCi0JeydmJywgJ2YnLCAxNTl9LAkvKiCfICovCi0JeydhJywgJ1wnJywgMTYwfSwJLyogoCAqLwotCXsnaScsICdcJycsIDE2MX0sCS8qIKEgKi8KLQl7J28nLCAnXCcnLCAxNjJ9LAkvKiCiICovCi0Jeyd1JywgJ1wnJywgMTYzfSwJLyogeCBYWCAqLwotCXsnbicsICd+JywgMTY0fSwJLyogpCAqLwotCXsnTicsICd+JywgMTY1fSwJLyogpSAqLwotCXsnYScsICdhJywgMTY2fSwJLyogpiAqLwotCXsnbycsICdvJywgMTY3fSwJLyogpyAqLwotCXsnficsICc/JywgMTY4fSwJLyogqCAqLwotCXsnLScsICdhJywgMTY5fSwJLyogqSAqLwotCXsnYScsICctJywgMTcwfSwJLyogqiAqLwotCXsnMScsICcyJywgMTcxfSwJLyogqyAqLwotCXsnMScsICc0JywgMTcyfSwJLyogrCAqLwotCXsnficsICchJywgMTczfSwJLyogrSAqLwotCXsnPCcsICc8JywgMTc0fSwJLyogriAqLwotCXsnPicsICc+JywgMTc1fSwJLyogryAqLwotCi0JeydzJywgJ3MnLCAyMjV9LAkvKiDhICovCi0JeydqJywgJ3UnLCAyMzB9LAkvKiDmICovCi0JeydvJywgJy8nLCAyMzd9LAkvKiDtICovCi0JeycrJywgJy0nLCAyNDF9LAkvKiDxICovCi0Jeyc+JywgJz0nLCAyNDJ9LAkvKiDyICovCi0Jeyc8JywgJz0nLCAyNDN9LAkvKiDzICovCi0Jeyc6JywgJy0nLCAyNDZ9LAkvKiD2ICovCi0Jeyd+JywgJ34nLCAyNDd9LAkvKiD3ICovCi0Jeyd+JywgJ28nLCAyNDh9LAkvKiD4ICovCi0JeycyJywgJzInLCAyNTN9LAkvKiD9ICovCi0Je05VTCwgTlVMLCBOVUx9Ci0JfTsKLQotI2Vsc2UJLyogIU1TRE9TICovCi0jIGlmZGVmIF9fTUlOVF9fCisjaWZkZWYgX19NSU5UX18KIAogCS8qCiAJICogQVRBUkkgZGlncmFwaHMKQEAgLTE3MSw4ICsxMDQsOCBAQAogCXtOVUwsIE5VTCwgTlVMfQogCX07CiAKLSMgZWxzZQkvKiAhX19NSU5UX18gKi8KLSMgIGlmZGVmIEhQVVhfRElHUkFQSFMKKyNlbHNlCS8qICFfX01JTlRfXyAqLworIyBpZmRlZiBIUFVYX0RJR1JBUEhTCiAKIAkvKgogCSAqIGRpZmZlcmVudCBIUFVYIGRpZ3JhcGhzCkBAIC0yNzUsOSArMjA4LDkgQEAKIAl7TlVMLCBOVUwsIE5VTH0KIAl9OwogCi0jICBlbHNlCS8qICFIUFVYX0RJR1JBUEhTICovCisjIGVsc2UJLyogIUhQVVhfRElHUkFQSFMgKi8KIAotIyAgIGlmZGVmIEVCQ0RJQworIyAgaWZkZWYgRUJDRElDCiAKIAkvKgogCSAqIEVCQ0RJQyAtIElTTyBkaWdyYXBocwpAQCAtMzg3LDggKzMyMCw4IEBACiAJe05VTCwgTlVMLCBOVUx9CiAJfTsKIAotIyAgIGVsc2UKLSMgICAgaWYgZGVmaW5lZChNQUNPUykgJiYgIWRlZmluZWQoRkVBVF9NQllURSkKKyMgIGVsc2UKKyMgICBpZiBkZWZpbmVkKE1BQ09TKSAmJiAhZGVmaW5lZChGRUFUX01CWVRFKQogCiAJLyoKIAkgKiBNYWNpbnRvc2ggZGlncmFwaHMKQEAgLTUxNiw5ICs0NDksOSBAQAogCXtOVUwsIE5VTCwgTlVMfQogCX07CiAKLSMgICAgZWxzZQkvKiAhTUFDT1MgKi8KKyMgICBlbHNlCS8qICFNQUNPUyAqLwogCi0jICAgICBpZmRlZiBPTERfRElHUkFQSFMKKyMgICAgaWZkZWYgT0xEX0RJR1JBUEhTCiAKIAkvKgogCSAqIGRpZ3JhcGhzIGNvbXBhdGlibGUgd2l0aCBWaW0gNS54CkBAIC02MjUsNyArNTU4LDcgQEAKIAl7J3knLCAnIicsIDI1NX0sCS8qIHggWFggKi8KIAl7TlVMLCBOVUwsIE5VTH0KIAl9OwotIyAgICAgZWxzZSAvKiBPTERfRElHUkFQSFMgKi8KKyMgICAgZWxzZSAvKiBPTERfRElHUkFQSFMgKi8KIAogCS8qCiAJICogZGlncmFwaHMgZm9yIFVuaWNvZGUgZnJvbSBSRkMxMzQ1CkBAIC0yMDAxLDEzICsxOTM0LDEyIEBACiAJe05VTCwgTlVMLCBOVUx9CiAgICAgICAgfTsKIAotIyAgICAgZW5kaWYgLyogT0xEX0RJR1JBUEhTICovCisjICAgIGVuZGlmIC8qIE9MRF9ESUdSQVBIUyAqLwogCi0jICAgIGVuZGlmIC8qIE1hY2ludG9zaCAqLwotIyAgIGVuZGlmIC8qIEVCQ0RJQyAqLwotIyAgZW5kaWYgICAgLyogIUhQVVhfRElHUkFQSFMgKi8KLSMgZW5kaWYJLyogIV9fTUlOVF9fICovCi0jZW5kaWYJLyogIU1TRE9TICovCisjICAgZW5kaWYgLyogTWFjaW50b3NoICovCisjICBlbmRpZiAvKiBFQkNESUMgKi8KKyMgZW5kaWYgICAgLyogIUhQVVhfRElHUkFQSFMgKi8KKyNlbmRpZgkvKiAhX19NSU5UX18gKi8KIAogLyoKICAqIGhhbmRsZSBkaWdyYXBocyBhZnRlciB0eXBpbmcgYSBjaGFyYWN0ZXIK