ZGlmZiAtLWdpdCBhL0NPTlRSSUJVVE9SUy50eHQgYi9DT05UUklCVVRPUlMudHh0CmluZGV4IDJmOGRlYzIuLjgxZDExNDkgMTAwNjQ0Ci0tLSBhL0NPTlRSSUJVVE9SUy50eHQKKysrIGIvQ09OVFJJQlVUT1JTLnR4dApAQCAtMTEsMTIgKzExLDEyIEBACiANCiBHb29nbGUgSW5jLg0KICBOaWNvbGFzIENhcGVucyA8Y2FwbkBnb29nbGUuY29tPg0KLSBBbGV4aXMgSOl0dSA8c3Vnb2lAZ29vZ2xlLmNvbT4NCisgQWxleGlzIEjDqXR1IDxzdWdvaUBnb29nbGUuY29tPg0KICBTaGFubm9uIFdvb2RzIDxzaGFubm9ud29vZHNAZ29vZ2xlLmNvbT4NCiAgQ29yZW50aW4gV2FsbGV6IDxjd2FsbGV6QGdvb2dsZS5jb20+DQogIEdyZWcgSGFydG1hbiA8Z2hhcnRtYW5AZ29vZ2xlLmNvbT4NCiAgUGluZy1IYW8gV3UgPHBpbmdoYW9AZ29vZ2xlLmNvbT4NCi0gTWF4aW1lIEdy6WdvaXJlIDxtZ3JlZ29pcmVAZ29vZ2xlLmNvbT4NCisgTWF4aW1lIEdyw6lnb2lyZSA8bWdyZWdvaXJlQGdvb2dsZS5jb20+DQogIFZlcmFuaWthIExpYXVrZXZpY2ggPHZlcmFuaWthQGdvb2dsZS5jb20+DQogIEpvaG4gQmF1bWFuIDxqYmF1bWFuQGdvb2dsZS5jb20+DQogIEtldW4gU29vIFlpbSA8eWltQGdvb2dsZS5jb20+DQpAQCAtMjQsNiArMjQsNyBAQAogIFBoaWxpcHBlIEhhbWVsIDxoYW1lbHBoaUBnb29nbGUuY29tPg0KICBEYW5pZWwgVG95YW1hIDxrZW5qaXRveWFtYUBnb29nbGUuY29tPg0KICBNZW5nLUxpbiBXdSA8bWFybGV5bW9vQGdvb2dsZS5jb20+DQorIEtyenlzenRvZiBLb3NpxYRza2kgPGtyenlzaW9AZ29vZ2xlLmNvbT4NCiANCiBUcmFuc0dhbWluZyBJbmMuDQogIE5pY29sYXMgQ2FwZW5zDQpAQCAtMzEsNCArMzIsNCBAQAogIEppbSBNYWNBcnRodXINCiAgRGFuaWVsIEtvY2gNCiAgTHV0aGVyIEpvaG5zb24NCi0gUm9iIFN0ZXBpbnNraQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKyBSb2IgU3RlcGluc2tpDQpkaWZmIC0tZ2l0IGEvc3JjL09wZW5HTC9saWJHTEVTdjIvQ29udGV4dC5jcHAgYi9zcmMvT3BlbkdML2xpYkdMRVN2Mi9Db250ZXh0LmNwcAppbmRleCAxMTU0MWU3Li43YmQ5ZmVhIDEwMDY0NAotLS0gYS9zcmMvT3BlbkdML2xpYkdMRVN2Mi9Db250ZXh0LmNwcAorKysgYi9zcmMvT3BlbkdML2xpYkdMRVN2Mi9Db250ZXh0LmNwcApAQCAtMTczNCwxNiArMTczNCwxNyBAQAogCiAJc3dpdGNoKHBuYW1lKQogCXsKLQljYXNlIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUjogICBzYW1wbGVyT2JqZWN0LT5zZXRNaW5GaWx0ZXIoc3RhdGljX2Nhc3Q8R0xlbnVtPihwYXJhbSkpOyAgIGJyZWFrOwotCWNhc2UgR0xfVEVYVFVSRV9NQUdfRklMVEVSOiAgIHNhbXBsZXJPYmplY3QtPnNldE1hZ0ZpbHRlcihzdGF0aWNfY2FzdDxHTGVudW0+KHBhcmFtKSk7ICAgYnJlYWs7Ci0JY2FzZSBHTF9URVhUVVJFX1dSQVBfUzogICAgICAgc2FtcGxlck9iamVjdC0+c2V0V3JhcFMoc3RhdGljX2Nhc3Q8R0xlbnVtPihwYXJhbSkpOyAgICAgICBicmVhazsKLQljYXNlIEdMX1RFWFRVUkVfV1JBUF9UOiAgICAgICBzYW1wbGVyT2JqZWN0LT5zZXRXcmFwVChzdGF0aWNfY2FzdDxHTGVudW0+KHBhcmFtKSk7ICAgICAgIGJyZWFrOwotCWNhc2UgR0xfVEVYVFVSRV9XUkFQX1I6ICAgICAgIHNhbXBsZXJPYmplY3QtPnNldFdyYXBSKHN0YXRpY19jYXN0PEdMZW51bT4ocGFyYW0pKTsgICAgICAgYnJlYWs7Ci0JY2FzZSBHTF9URVhUVVJFX01JTl9MT0Q6ICAgICAgc2FtcGxlck9iamVjdC0+c2V0TWluTG9kKHN0YXRpY19jYXN0PEdMZmxvYXQ+KHBhcmFtKSk7ICAgICBicmVhazsKLQljYXNlIEdMX1RFWFRVUkVfTUFYX0xPRDogICAgICBzYW1wbGVyT2JqZWN0LT5zZXRNYXhMb2Qoc3RhdGljX2Nhc3Q8R0xmbG9hdD4ocGFyYW0pKTsgICAgIGJyZWFrOwotCWNhc2UgR0xfVEVYVFVSRV9DT01QQVJFX01PREU6IHNhbXBsZXJPYmplY3QtPnNldENvbXBhcmVNb2RlKHN0YXRpY19jYXN0PEdMZW51bT4ocGFyYW0pKTsgYnJlYWs7Ci0JY2FzZSBHTF9URVhUVVJFX0NPTVBBUkVfRlVOQzogc2FtcGxlck9iamVjdC0+c2V0Q29tcGFyZUZ1bmMoc3RhdGljX2Nhc3Q8R0xlbnVtPihwYXJhbSkpOyBicmVhazsKLQlkZWZhdWx0OiAgICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRShwbmFtZSk7IGJyZWFrOworCWNhc2UgR0xfVEVYVFVSRV9NSU5fRklMVEVSOiAgICAgICAgIHNhbXBsZXJPYmplY3QtPnNldE1pbkZpbHRlcihzdGF0aWNfY2FzdDxHTGVudW0+KHBhcmFtKSk7ICAgICAgYnJlYWs7CisJY2FzZSBHTF9URVhUVVJFX01BR19GSUxURVI6ICAgICAgICAgc2FtcGxlck9iamVjdC0+c2V0TWFnRmlsdGVyKHN0YXRpY19jYXN0PEdMZW51bT4ocGFyYW0pKTsgICAgICBicmVhazsKKwljYXNlIEdMX1RFWFRVUkVfV1JBUF9TOiAgICAgICAgICAgICBzYW1wbGVyT2JqZWN0LT5zZXRXcmFwUyhzdGF0aWNfY2FzdDxHTGVudW0+KHBhcmFtKSk7ICAgICAgICAgIGJyZWFrOworCWNhc2UgR0xfVEVYVFVSRV9XUkFQX1Q6ICAgICAgICAgICAgIHNhbXBsZXJPYmplY3QtPnNldFdyYXBUKHN0YXRpY19jYXN0PEdMZW51bT4ocGFyYW0pKTsgICAgICAgICAgYnJlYWs7CisJY2FzZSBHTF9URVhUVVJFX1dSQVBfUjogICAgICAgICAgICAgc2FtcGxlck9iamVjdC0+c2V0V3JhcFIoc3RhdGljX2Nhc3Q8R0xlbnVtPihwYXJhbSkpOyAgICAgICAgICBicmVhazsKKwljYXNlIEdMX1RFWFRVUkVfTUlOX0xPRDogICAgICAgICAgICBzYW1wbGVyT2JqZWN0LT5zZXRNaW5Mb2Qoc3RhdGljX2Nhc3Q8R0xmbG9hdD4ocGFyYW0pKTsgICAgICAgIGJyZWFrOworCWNhc2UgR0xfVEVYVFVSRV9NQVhfTE9EOiAgICAgICAgICAgIHNhbXBsZXJPYmplY3QtPnNldE1heExvZChzdGF0aWNfY2FzdDxHTGZsb2F0PihwYXJhbSkpOyAgICAgICAgYnJlYWs7CisJY2FzZSBHTF9URVhUVVJFX0NPTVBBUkVfTU9ERTogICAgICAgc2FtcGxlck9iamVjdC0+c2V0Q29tcGFyZU1vZGUoc3RhdGljX2Nhc3Q8R0xlbnVtPihwYXJhbSkpOyAgICBicmVhazsKKwljYXNlIEdMX1RFWFRVUkVfQ09NUEFSRV9GVU5DOiAgICAgICBzYW1wbGVyT2JqZWN0LT5zZXRDb21wYXJlRnVuYyhzdGF0aWNfY2FzdDxHTGVudW0+KHBhcmFtKSk7ICAgIGJyZWFrOworCWNhc2UgR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6IHNhbXBsZXJPYmplY3QtPnNldE1heEFuaXNvdHJvcHkoc3RhdGljX2Nhc3Q8R0xmbG9hdD4ocGFyYW0pKTsgYnJlYWs7CisJZGVmYXVsdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUocG5hbWUpOyBicmVhazsKIAl9CiB9CiAKQEAgLTE3NTYsMTYgKzE3NTcsMTcgQEAKIAogCXN3aXRjaChwbmFtZSkKIAl7Ci0JY2FzZSBHTF9URVhUVVJFX01JTl9GSUxURVI6ICAgc2FtcGxlck9iamVjdC0+c2V0TWluRmlsdGVyKHN0YXRpY19jYXN0PEdMZW51bT4ocm91bmRmKHBhcmFtKSkpOyAgIGJyZWFrOwotCWNhc2UgR0xfVEVYVFVSRV9NQUdfRklMVEVSOiAgIHNhbXBsZXJPYmplY3QtPnNldE1hZ0ZpbHRlcihzdGF0aWNfY2FzdDxHTGVudW0+KHJvdW5kZihwYXJhbSkpKTsgICBicmVhazsKLQljYXNlIEdMX1RFWFRVUkVfV1JBUF9TOiAgICAgICBzYW1wbGVyT2JqZWN0LT5zZXRXcmFwUyhzdGF0aWNfY2FzdDxHTGVudW0+KHJvdW5kZihwYXJhbSkpKTsgICAgICAgYnJlYWs7Ci0JY2FzZSBHTF9URVhUVVJFX1dSQVBfVDogICAgICAgc2FtcGxlck9iamVjdC0+c2V0V3JhcFQoc3RhdGljX2Nhc3Q8R0xlbnVtPihyb3VuZGYocGFyYW0pKSk7ICAgICAgIGJyZWFrOwotCWNhc2UgR0xfVEVYVFVSRV9XUkFQX1I6ICAgICAgIHNhbXBsZXJPYmplY3QtPnNldFdyYXBSKHN0YXRpY19jYXN0PEdMZW51bT4ocm91bmRmKHBhcmFtKSkpOyAgICAgICBicmVhazsKLQljYXNlIEdMX1RFWFRVUkVfTUlOX0xPRDogICAgICBzYW1wbGVyT2JqZWN0LT5zZXRNaW5Mb2QocGFyYW0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0JY2FzZSBHTF9URVhUVVJFX01BWF9MT0Q6ICAgICAgc2FtcGxlck9iamVjdC0+c2V0TWF4TG9kKHBhcmFtKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotCWNhc2UgR0xfVEVYVFVSRV9DT01QQVJFX01PREU6IHNhbXBsZXJPYmplY3QtPnNldENvbXBhcmVNb2RlKHN0YXRpY19jYXN0PEdMZW51bT4ocm91bmRmKHBhcmFtKSkpOyBicmVhazsKLQljYXNlIEdMX1RFWFRVUkVfQ09NUEFSRV9GVU5DOiBzYW1wbGVyT2JqZWN0LT5zZXRDb21wYXJlRnVuYyhzdGF0aWNfY2FzdDxHTGVudW0+KHJvdW5kZihwYXJhbSkpKTsgYnJlYWs7Ci0JZGVmYXVsdDogICAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUocG5hbWUpOyBicmVhazsKKwljYXNlIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUjogICAgICAgICBzYW1wbGVyT2JqZWN0LT5zZXRNaW5GaWx0ZXIoc3RhdGljX2Nhc3Q8R0xlbnVtPihyb3VuZGYocGFyYW0pKSk7ICAgYnJlYWs7CisJY2FzZSBHTF9URVhUVVJFX01BR19GSUxURVI6ICAgICAgICAgc2FtcGxlck9iamVjdC0+c2V0TWFnRmlsdGVyKHN0YXRpY19jYXN0PEdMZW51bT4ocm91bmRmKHBhcmFtKSkpOyAgIGJyZWFrOworCWNhc2UgR0xfVEVYVFVSRV9XUkFQX1M6ICAgICAgICAgICAgIHNhbXBsZXJPYmplY3QtPnNldFdyYXBTKHN0YXRpY19jYXN0PEdMZW51bT4ocm91bmRmKHBhcmFtKSkpOyAgICAgICBicmVhazsKKwljYXNlIEdMX1RFWFRVUkVfV1JBUF9UOiAgICAgICAgICAgICBzYW1wbGVyT2JqZWN0LT5zZXRXcmFwVChzdGF0aWNfY2FzdDxHTGVudW0+KHJvdW5kZihwYXJhbSkpKTsgICAgICAgYnJlYWs7CisJY2FzZSBHTF9URVhUVVJFX1dSQVBfUjogICAgICAgICAgICAgc2FtcGxlck9iamVjdC0+c2V0V3JhcFIoc3RhdGljX2Nhc3Q8R0xlbnVtPihyb3VuZGYocGFyYW0pKSk7ICAgICAgIGJyZWFrOworCWNhc2UgR0xfVEVYVFVSRV9NSU5fTE9EOiAgICAgICAgICAgIHNhbXBsZXJPYmplY3QtPnNldE1pbkxvZChwYXJhbSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKwljYXNlIEdMX1RFWFRVUkVfTUFYX0xPRDogICAgICAgICAgICBzYW1wbGVyT2JqZWN0LT5zZXRNYXhMb2QocGFyYW0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJY2FzZSBHTF9URVhUVVJFX0NPTVBBUkVfTU9ERTogICAgICAgc2FtcGxlck9iamVjdC0+c2V0Q29tcGFyZU1vZGUoc3RhdGljX2Nhc3Q8R0xlbnVtPihyb3VuZGYocGFyYW0pKSk7IGJyZWFrOworCWNhc2UgR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkM6ICAgICAgIHNhbXBsZXJPYmplY3QtPnNldENvbXBhcmVGdW5jKHN0YXRpY19jYXN0PEdMZW51bT4ocm91bmRmKHBhcmFtKSkpOyBicmVhazsKKwljYXNlIEdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUOiBzYW1wbGVyT2JqZWN0LT5zZXRNYXhBbmlzb3Ryb3B5KHBhcmFtKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJZGVmYXVsdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUocG5hbWUpOyBicmVhazsKIAl9CiB9CiAKQEAgLTE3NzgsMTYgKzE3ODAsMTcgQEAKIAogCXN3aXRjaChwbmFtZSkKIAl7Ci0JY2FzZSBHTF9URVhUVVJFX01JTl9GSUxURVI6ICAgcmV0dXJuIHN0YXRpY19jYXN0PEdMaW50PihzYW1wbGVyT2JqZWN0LT5nZXRNaW5GaWx0ZXIoKSk7Ci0JY2FzZSBHTF9URVhUVVJFX01BR19GSUxURVI6ICAgcmV0dXJuIHN0YXRpY19jYXN0PEdMaW50PihzYW1wbGVyT2JqZWN0LT5nZXRNYWdGaWx0ZXIoKSk7Ci0JY2FzZSBHTF9URVhUVVJFX1dSQVBfUzogICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdMaW50PihzYW1wbGVyT2JqZWN0LT5nZXRXcmFwUygpKTsKLQljYXNlIEdMX1RFWFRVUkVfV1JBUF9UOiAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0xpbnQ+KHNhbXBsZXJPYmplY3QtPmdldFdyYXBUKCkpOwotCWNhc2UgR0xfVEVYVFVSRV9XUkFQX1I6ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHTGludD4oc2FtcGxlck9iamVjdC0+Z2V0V3JhcFIoKSk7Ci0JY2FzZSBHTF9URVhUVVJFX01JTl9MT0Q6ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdMaW50Pihyb3VuZGYoc2FtcGxlck9iamVjdC0+Z2V0TWluTG9kKCkpKTsKLQljYXNlIEdMX1RFWFRVUkVfTUFYX0xPRDogICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0xpbnQ+KHJvdW5kZihzYW1wbGVyT2JqZWN0LT5nZXRNYXhMb2QoKSkpOwotCWNhc2UgR0xfVEVYVFVSRV9DT01QQVJFX01PREU6IHJldHVybiBzdGF0aWNfY2FzdDxHTGludD4oc2FtcGxlck9iamVjdC0+Z2V0Q29tcGFyZU1vZGUoKSk7Ci0JY2FzZSBHTF9URVhUVVJFX0NPTVBBUkVfRlVOQzogcmV0dXJuIHN0YXRpY19jYXN0PEdMaW50PihzYW1wbGVyT2JqZWN0LT5nZXRDb21wYXJlRnVuYygpKTsKLQlkZWZhdWx0OiAgICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRShwbmFtZSk7IHJldHVybiAwOworCWNhc2UgR0xfVEVYVFVSRV9NSU5fRklMVEVSOiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHTGludD4oc2FtcGxlck9iamVjdC0+Z2V0TWluRmlsdGVyKCkpOworCWNhc2UgR0xfVEVYVFVSRV9NQUdfRklMVEVSOiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHTGludD4oc2FtcGxlck9iamVjdC0+Z2V0TWFnRmlsdGVyKCkpOworCWNhc2UgR0xfVEVYVFVSRV9XUkFQX1M6ICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHTGludD4oc2FtcGxlck9iamVjdC0+Z2V0V3JhcFMoKSk7CisJY2FzZSBHTF9URVhUVVJFX1dSQVBfVDogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdMaW50PihzYW1wbGVyT2JqZWN0LT5nZXRXcmFwVCgpKTsKKwljYXNlIEdMX1RFWFRVUkVfV1JBUF9SOiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0xpbnQ+KHNhbXBsZXJPYmplY3QtPmdldFdyYXBSKCkpOworCWNhc2UgR0xfVEVYVFVSRV9NSU5fTE9EOiAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHTGludD4ocm91bmRmKHNhbXBsZXJPYmplY3QtPmdldE1pbkxvZCgpKSk7CisJY2FzZSBHTF9URVhUVVJFX01BWF9MT0Q6ICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdMaW50Pihyb3VuZGYoc2FtcGxlck9iamVjdC0+Z2V0TWF4TG9kKCkpKTsKKwljYXNlIEdMX1RFWFRVUkVfQ09NUEFSRV9NT0RFOiAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0xpbnQ+KHNhbXBsZXJPYmplY3QtPmdldENvbXBhcmVNb2RlKCkpOworCWNhc2UgR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkM6ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHTGludD4oc2FtcGxlck9iamVjdC0+Z2V0Q29tcGFyZUZ1bmMoKSk7CisJY2FzZSBHTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVDogcmV0dXJuIHN0YXRpY19jYXN0PEdMaW50PihzYW1wbGVyT2JqZWN0LT5nZXRNYXhBbmlzb3Ryb3B5KCkpOworCWRlZmF1bHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKHBuYW1lKTsgcmV0dXJuIDA7CiAJfQogfQogCkBAIC0xODAwLDE2ICsxODAzLDE3IEBACiAKIAlzd2l0Y2gocG5hbWUpCiAJewotCWNhc2UgR0xfVEVYVFVSRV9NSU5fRklMVEVSOiAgIHJldHVybiBzdGF0aWNfY2FzdDxHTGZsb2F0PihzYW1wbGVyT2JqZWN0LT5nZXRNaW5GaWx0ZXIoKSk7Ci0JY2FzZSBHTF9URVhUVVJFX01BR19GSUxURVI6ICAgcmV0dXJuIHN0YXRpY19jYXN0PEdMZmxvYXQ+KHNhbXBsZXJPYmplY3QtPmdldE1hZ0ZpbHRlcigpKTsKLQljYXNlIEdMX1RFWFRVUkVfV1JBUF9TOiAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0xmbG9hdD4oc2FtcGxlck9iamVjdC0+Z2V0V3JhcFMoKSk7Ci0JY2FzZSBHTF9URVhUVVJFX1dSQVBfVDogICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdMZmxvYXQ+KHNhbXBsZXJPYmplY3QtPmdldFdyYXBUKCkpOwotCWNhc2UgR0xfVEVYVFVSRV9XUkFQX1I6ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHTGZsb2F0PihzYW1wbGVyT2JqZWN0LT5nZXRXcmFwUigpKTsKLQljYXNlIEdMX1RFWFRVUkVfTUlOX0xPRDogICAgICByZXR1cm4gc2FtcGxlck9iamVjdC0+Z2V0TWluTG9kKCk7Ci0JY2FzZSBHTF9URVhUVVJFX01BWF9MT0Q6ICAgICAgcmV0dXJuIHNhbXBsZXJPYmplY3QtPmdldE1heExvZCgpOwotCWNhc2UgR0xfVEVYVFVSRV9DT01QQVJFX01PREU6IHJldHVybiBzdGF0aWNfY2FzdDxHTGZsb2F0PihzYW1wbGVyT2JqZWN0LT5nZXRDb21wYXJlTW9kZSgpKTsKLQljYXNlIEdMX1RFWFRVUkVfQ09NUEFSRV9GVU5DOiByZXR1cm4gc3RhdGljX2Nhc3Q8R0xmbG9hdD4oc2FtcGxlck9iamVjdC0+Z2V0Q29tcGFyZUZ1bmMoKSk7Ci0JZGVmYXVsdDogICAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUocG5hbWUpOyByZXR1cm4gMDsKKwljYXNlIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUjogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0xmbG9hdD4oc2FtcGxlck9iamVjdC0+Z2V0TWluRmlsdGVyKCkpOworCWNhc2UgR0xfVEVYVFVSRV9NQUdfRklMVEVSOiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHTGZsb2F0PihzYW1wbGVyT2JqZWN0LT5nZXRNYWdGaWx0ZXIoKSk7CisJY2FzZSBHTF9URVhUVVJFX1dSQVBfUzogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdMZmxvYXQ+KHNhbXBsZXJPYmplY3QtPmdldFdyYXBTKCkpOworCWNhc2UgR0xfVEVYVFVSRV9XUkFQX1Q6ICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHTGZsb2F0PihzYW1wbGVyT2JqZWN0LT5nZXRXcmFwVCgpKTsKKwljYXNlIEdMX1RFWFRVUkVfV1JBUF9SOiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0xmbG9hdD4oc2FtcGxlck9iamVjdC0+Z2V0V3JhcFIoKSk7CisJY2FzZSBHTF9URVhUVVJFX01JTl9MT0Q6ICAgICAgICAgICAgcmV0dXJuIHNhbXBsZXJPYmplY3QtPmdldE1pbkxvZCgpOworCWNhc2UgR0xfVEVYVFVSRV9NQVhfTE9EOiAgICAgICAgICAgIHJldHVybiBzYW1wbGVyT2JqZWN0LT5nZXRNYXhMb2QoKTsKKwljYXNlIEdMX1RFWFRVUkVfQ09NUEFSRV9NT0RFOiAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0xmbG9hdD4oc2FtcGxlck9iamVjdC0+Z2V0Q29tcGFyZU1vZGUoKSk7CisJY2FzZSBHTF9URVhUVVJFX0NPTVBBUkVfRlVOQzogICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdMZmxvYXQ+KHNhbXBsZXJPYmplY3QtPmdldENvbXBhcmVGdW5jKCkpOworCWNhc2UgR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6IHJldHVybiBzYW1wbGVyT2JqZWN0LT5nZXRNYXhBbmlzb3Ryb3B5KCk7CisJZGVmYXVsdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUocG5hbWUpOyByZXR1cm4gMDsKIAl9CiB9CiAKQEAgLTMxMjMsNyArMzEyNyw3IEBACiAJCQlpZih0ZXh0dXJlLT5pc1NhbXBsZXJDb21wbGV0ZSgpKQogCQkJewogCQkJCUdMZW51bSB3cmFwUywgd3JhcFQsIHdyYXBSLCBtaW5GaWx0ZXIsIG1hZ0ZpbHRlciwgY29tcEZ1bmMsIGNvbXBNb2RlOwotCQkJCUdMZmxvYXQgbWluTE9ELCBtYXhMT0Q7CisJCQkJR0xmbG9hdCBtaW5MT0QsIG1heExPRCwgbWF4QW5pc290cm9weTsKIAogCQkJCVNhbXBsZXIgKnNhbXBsZXJPYmplY3QgPSBtU3RhdGUuc2FtcGxlclt0ZXh0dXJlVW5pdF07CiAJCQkJaWYoc2FtcGxlck9iamVjdCkKQEAgLTMxMzcsNiArMzE0MSw3IEBACiAJCQkJCW1heExPRCA9IHNhbXBsZXJPYmplY3QtPmdldE1heExvZCgpOwogCQkJCQljb21wRnVuYyA9IHNhbXBsZXJPYmplY3QtPmdldENvbXBhcmVGdW5jKCk7CiAJCQkJCWNvbXBNb2RlID0gc2FtcGxlck9iamVjdC0+Z2V0Q29tcGFyZU1vZGUoKTsKKwkJCQkJbWF4QW5pc290cm9weSA9IHNhbXBsZXJPYmplY3QtPmdldE1heEFuaXNvdHJvcHkoKTsKIAkJCQl9CiAJCQkJZWxzZQogCQkJCXsKQEAgLTMxNDksOSArMzE1NCw5IEBACiAJCQkJCW1heExPRCA9IHRleHR1cmUtPmdldE1heExPRCgpOwogCQkJCQljb21wRnVuYyA9IHRleHR1cmUtPmdldENvbXBhcmVGdW5jKCk7CiAJCQkJCWNvbXBNb2RlID0gdGV4dHVyZS0+Z2V0Q29tcGFyZU1vZGUoKTsKKwkJCQkJbWF4QW5pc290cm9weSA9IHRleHR1cmUtPmdldE1heEFuaXNvdHJvcHkoKTsKIAkJCQl9CiAKLQkJCQlHTGZsb2F0IG1heEFuaXNvdHJvcHkgPSB0ZXh0dXJlLT5nZXRNYXhBbmlzb3Ryb3B5KCk7CiAJCQkJR0xpbnQgYmFzZUxldmVsID0gdGV4dHVyZS0+Z2V0QmFzZUxldmVsKCk7CiAJCQkJR0xpbnQgbWF4TGV2ZWwgPSB0ZXh0dXJlLT5nZXRNYXhMZXZlbCgpOwogCQkJCUdMZW51bSBzd2l6emxlUiA9IHRleHR1cmUtPmdldFN3aXp6bGVSKCk7CmRpZmYgLS1naXQgYS9zcmMvT3BlbkdML2xpYkdMRVN2Mi9TYW1wbGVyLmggYi9zcmMvT3BlbkdML2xpYkdMRVN2Mi9TYW1wbGVyLmgKaW5kZXggMGRiZjhjOS4uOTExODVkYSAxMDA2NDQKLS0tIGEvc3JjL09wZW5HTC9saWJHTEVTdjIvU2FtcGxlci5oCisrKyBiL3NyYy9PcGVuR0wvbGliR0xFU3YyL1NhbXBsZXIuaApAQCAtNDEsNiArNDEsNyBAQAogCQltTWF4TG9kID0gMTAwMC4wZjsKIAkJbUNvbXBhcmVNb2RlID0gR0xfTk9ORTsKIAkJbUNvbXBhcmVGdW5jID0gR0xfTEVRVUFMOworCQltTWF4QW5pc290cm9weSA9IDEuMGY7CiAJfQogCiAJdm9pZCBzZXRNaW5GaWx0ZXIoR0xlbnVtIG1pbkZpbHRlcikgeyBtTWluRmlsdGVyID0gbWluRmlsdGVyOyB9CkBAIC01Miw2ICs1Myw3IEBACiAJdm9pZCBzZXRNYXhMb2QoR0xmbG9hdCBtYXhMb2QpIHsgbU1heExvZCA9IG1heExvZDsgfQogCXZvaWQgc2V0Q29tcGFyZU1vZGUoR0xlbnVtIGNvbXBhcmVNb2RlKSB7IG1Db21wYXJlTW9kZSA9IGNvbXBhcmVNb2RlOyB9CiAJdm9pZCBzZXRDb21wYXJlRnVuYyhHTGVudW0gY29tcGFyZUZ1bmMpIHsgbUNvbXBhcmVGdW5jID0gY29tcGFyZUZ1bmM7IH0KKwl2b2lkIHNldE1heEFuaXNvdHJvcHkoR0xmbG9hdCBtYXhBbmlzb3Ryb3B5KSB7IG1NYXhBbmlzb3Ryb3B5ID0gbWF4QW5pc290cm9weTsgfQogCiAJR0xlbnVtIGdldE1pbkZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIG1NaW5GaWx0ZXI7IH0KIAlHTGVudW0gZ2V0TWFnRmlsdGVyKCkgY29uc3QgeyByZXR1cm4gbU1hZ0ZpbHRlcjsgfQpAQCAtNjIsNiArNjQsNyBAQAogCUdMZmxvYXQgZ2V0TWF4TG9kKCkgY29uc3QgeyByZXR1cm4gbU1heExvZDsgfQogCUdMZW51bSBnZXRDb21wYXJlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1Db21wYXJlTW9kZTsgfQogCUdMZW51bSBnZXRDb21wYXJlRnVuYygpIGNvbnN0IHsgcmV0dXJuIG1Db21wYXJlRnVuYzsgfQorCUdMZmxvYXQgZ2V0TWF4QW5pc290cm9weSgpIGNvbnN0IHsgcmV0dXJuIG1NYXhBbmlzb3Ryb3B5OyB9CiAKIHByaXZhdGU6CiAJR0xlbnVtIG1NaW5GaWx0ZXI7CkBAIC03NSw2ICs3OCw3IEBACiAJR0xmbG9hdCBtTWF4TG9kOwogCUdMZW51bSBtQ29tcGFyZU1vZGU7CiAJR0xlbnVtIG1Db21wYXJlRnVuYzsKKwlHTGZsb2F0IG1NYXhBbmlzb3Ryb3B5OwogfTsKIAogfQo=