ZGlmZiAtLWdpdCBhL3ByZWxvYWRlZC1jbGFzc2VzIGIvcHJlbG9hZGVkLWNsYXNzZXMKaW5kZXggN2QxZjk2MC4uNjljNTk2YyAxMDA2NDQKLS0tIGEvcHJlbG9hZGVkLWNsYXNzZXMKKysrIGIvcHJlbG9hZGVkLWNsYXNzZXMKQEAgLTEsMTE5ICsxLDY2IEBACiAjIENsYXNzZXMgd2hpY2ggYXJlIHByZWxvYWRlZCBieSBjb20uYW5kcm9pZC5pbnRlcm5hbC5vcy5aeWdvdGVJbml0LgotIyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSAvZnJhbWV3b3Jrcy9iYXNlL3Rvb2xzL3ByZWxvYWQuCi0jIHBlcmNlbnQ9NzUsIHdlaWdodD01MDAsIGJ1Y2tldF9zaXplPTUKKyMgQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgZnJhbWV3b3Jrcy9iYXNlL3Rvb2xzL3ByZWxvYWQvV3JpdGVQcmVsb2FkZWRDbGFzc0ZpbGUuamF2YS4KKyMgTUlOX0xPQURfVElNRV9NSUNST1M9MTI1MAogU1FMaXRlLkJsb2IKIFNRTGl0ZS5EYXRhYmFzZQogU1FMaXRlLkZ1bmN0aW9uQ29udGV4dAogU1FMaXRlLlN0bXQKIFNRTGl0ZS5WbQogYW5kcm9pZC5SJHN0eWxlYWJsZQotYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50TW9uaXRvcgotYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50TW9uaXRvciRBY2NvdW50VXBkYXRlcgotYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50TW9uaXRvckxpc3RlbmVyCi1hbmRyb2lkLmFjY291bnRzLkFjY291bnRzU2VydmljZUNvbnN0YW50cwotYW5kcm9pZC5hY2NvdW50cy5JQWNjb3VudHNTZXJ2aWNlCiBhbmRyb2lkLmFjY291bnRzLklBY2NvdW50c1NlcnZpY2UkU3R1YgogYW5kcm9pZC5hcHAuQWN0aXZpdHkKLWFuZHJvaWQuYXBwLkFjdGl2aXR5JE1hbmFnZWRDdXJzb3IKIGFuZHJvaWQuYXBwLkFjdGl2aXR5R3JvdXAKK2FuZHJvaWQuYXBwLkFjdGl2aXR5TWFuYWdlcgorYW5kcm9pZC5hcHAuQWN0aXZpdHlNYW5hZ2VyJE1lbW9yeUluZm8KIGFuZHJvaWQuYXBwLkFjdGl2aXR5TWFuYWdlck5hdGl2ZQogYW5kcm9pZC5hcHAuQWN0aXZpdHlNYW5hZ2VyUHJveHkKIGFuZHJvaWQuYXBwLkFjdGl2aXR5VGhyZWFkCi1hbmRyb2lkLmFwcC5BY3Rpdml0eVRocmVhZCRBY3Rpdml0eVJlY29yZAotYW5kcm9pZC5hcHAuQWN0aXZpdHlUaHJlYWQkQXBwQmluZERhdGEKIGFuZHJvaWQuYXBwLkFjdGl2aXR5VGhyZWFkJEFwcGxpY2F0aW9uVGhyZWFkCi1hbmRyb2lkLmFwcC5BY3Rpdml0eVRocmVhZCRCaW5kU2VydmljZURhdGEKLWFuZHJvaWQuYXBwLkFjdGl2aXR5VGhyZWFkJENvbnRleHRDbGVhbnVwSW5mbwotYW5kcm9pZC5hcHAuQWN0aXZpdHlUaHJlYWQkQ3JlYXRlU2VydmljZURhdGEKLWFuZHJvaWQuYXBwLkFjdGl2aXR5VGhyZWFkJEdjSWRsZXIKIGFuZHJvaWQuYXBwLkFjdGl2aXR5VGhyZWFkJEgKLWFuZHJvaWQuYXBwLkFjdGl2aXR5VGhyZWFkJElkbGVyCi1hbmRyb2lkLmFwcC5BY3Rpdml0eVRocmVhZCROZXdJbnRlbnREYXRhCi1hbmRyb2lkLmFwcC5BY3Rpdml0eVRocmVhZCRQYWNrYWdlSW5mbwotYW5kcm9pZC5hcHAuQWN0aXZpdHlUaHJlYWQkUGFja2FnZUluZm8kUmVjZWl2ZXJEaXNwYXRjaGVyCi1hbmRyb2lkLmFwcC5BY3Rpdml0eVRocmVhZCRQYWNrYWdlSW5mbyRSZWNlaXZlckRpc3BhdGNoZXIkQXJncwotYW5kcm9pZC5hcHAuQWN0aXZpdHlUaHJlYWQkUGFja2FnZUluZm8kUmVjZWl2ZXJEaXNwYXRjaGVyJElubmVyUmVjZWl2ZXIKLWFuZHJvaWQuYXBwLkFjdGl2aXR5VGhyZWFkJFBhY2thZ2VJbmZvJFNlcnZpY2VEaXNwYXRjaGVyCi1hbmRyb2lkLmFwcC5BY3Rpdml0eVRocmVhZCRQYWNrYWdlSW5mbyRTZXJ2aWNlRGlzcGF0Y2hlciRDb25uZWN0aW9uSW5mbwotYW5kcm9pZC5hcHAuQWN0aXZpdHlUaHJlYWQkUGFja2FnZUluZm8kU2VydmljZURpc3BhdGNoZXIkRGVhdGhNb25pdG9yCi1hbmRyb2lkLmFwcC5BY3Rpdml0eVRocmVhZCRQYWNrYWdlSW5mbyRTZXJ2aWNlRGlzcGF0Y2hlciRJbm5lckNvbm5lY3Rpb24KLWFuZHJvaWQuYXBwLkFjdGl2aXR5VGhyZWFkJFBhY2thZ2VJbmZvJFNlcnZpY2VEaXNwYXRjaGVyJFJ1bkNvbm5lY3Rpb24KLWFuZHJvaWQuYXBwLkFjdGl2aXR5VGhyZWFkJFByb3ZpZGVyUmVjb3JkCi1hbmRyb2lkLmFwcC5BY3Rpdml0eVRocmVhZCRQcm92aWRlclJlZkNvdW50Ci1hbmRyb2lkLmFwcC5BY3Rpdml0eVRocmVhZCRSZWNlaXZlckRhdGEKLWFuZHJvaWQuYXBwLkFjdGl2aXR5VGhyZWFkJFJlc291cmNlc0tleQotYW5kcm9pZC5hcHAuQWN0aXZpdHlUaHJlYWQkUmVzdWx0RGF0YQotYW5kcm9pZC5hcHAuQWN0aXZpdHlUaHJlYWQkU2VydmljZUFyZ3NEYXRhCi1hbmRyb2lkLmFwcC5BY3Rpdml0eVRocmVhZCRTdG9wSW5mbwogYW5kcm9pZC5hcHAuQWxlcnREaWFsb2cKLWFuZHJvaWQuYXBwLkFsZXJ0RGlhbG9nJEJ1aWxkZXIKIGFuZHJvaWQuYXBwLkFwcGxpY2F0aW9uCiBhbmRyb2lkLmFwcC5BcHBsaWNhdGlvbkNvbnRleHQKIGFuZHJvaWQuYXBwLkFwcGxpY2F0aW9uQ29udGV4dCRBcHBsaWNhdGlvbkNvbnRlbnRSZXNvbHZlcgogYW5kcm9pZC5hcHAuQXBwbGljYXRpb25Db250ZXh0JEFwcGxpY2F0aW9uUGFja2FnZU1hbmFnZXIKLWFuZHJvaWQuYXBwLkFwcGxpY2F0aW9uQ29udGV4dCRBcHBsaWNhdGlvblBhY2thZ2VNYW5hZ2VyJFBhY2thZ2VSZW1vdmVkUmVjZWl2ZXIKLWFuZHJvaWQuYXBwLkFwcGxpY2F0aW9uQ29udGV4dCRBcHBsaWNhdGlvblBhY2thZ2VNYW5hZ2VyJFJlc291cmNlTmFtZQotYW5kcm9pZC5hcHAuQXBwbGljYXRpb25Db250ZXh0JFNoYXJlZFByZWZlcmVuY2VzSW1wbAotYW5kcm9pZC5hcHAuQXBwbGljYXRpb25Db250ZXh0JFNoYXJlZFByZWZlcmVuY2VzSW1wbCRFZGl0b3JJbXBsCi1hbmRyb2lkLmFwcC5BcHBsaWNhdGlvbkxvYWRlcnMKK2FuZHJvaWQuYXBwLkFwcGxpY2F0aW9uQ29udGV4dCRXYWxscGFwZXJDYWxsYmFjawogYW5kcm9pZC5hcHAuQXBwbGljYXRpb25UaHJlYWROYXRpdmUKK2FuZHJvaWQuYXBwLkRhdGVQaWNrZXJEaWFsb2cKIGFuZHJvaWQuYXBwLkRpYWxvZwotYW5kcm9pZC5hcHAuRGlhbG9nJDEKLWFuZHJvaWQuYXBwLkRpYWxvZyRMaXN0ZW5lcnNIYW5kbGVyCiBhbmRyb2lkLmFwcC5FeHBhbmRhYmxlTGlzdEFjdGl2aXR5CiBhbmRyb2lkLmFwcC5JQWN0aXZpdHlNYW5hZ2VyCiBhbmRyb2lkLmFwcC5JQWN0aXZpdHlNYW5hZ2VyJENvbnRlbnRQcm92aWRlckhvbGRlcgotYW5kcm9pZC5hcHAuSUFjdGl2aXR5TWFuYWdlciRDb250ZW50UHJvdmlkZXJIb2xkZXIkMQotYW5kcm9pZC5hcHAuSUFsYXJtTWFuYWdlcgogYW5kcm9pZC5hcHAuSUFsYXJtTWFuYWdlciRTdHViCi1hbmRyb2lkLmFwcC5JQWxhcm1NYW5hZ2VyJFN0dWIkUHJveHkKLWFuZHJvaWQuYXBwLklBcHBsaWNhdGlvblRocmVhZAotYW5kcm9pZC5hcHAuSUluc3RydW1lbnRhdGlvbldhdGNoZXIKLWFuZHJvaWQuYXBwLklJbnN0cnVtZW50YXRpb25XYXRjaGVyJFN0dWIKLWFuZHJvaWQuYXBwLklOb3RpZmljYXRpb25NYW5hZ2VyCiBhbmRyb2lkLmFwcC5JTm90aWZpY2F0aW9uTWFuYWdlciRTdHViCi1hbmRyb2lkLmFwcC5JTm90aWZpY2F0aW9uTWFuYWdlciRTdHViJFByb3h5Ci1hbmRyb2lkLmFwcC5JU2VhcmNoTWFuYWdlcgogYW5kcm9pZC5hcHAuSVNlYXJjaE1hbmFnZXIkU3R1YgotYW5kcm9pZC5hcHAuSVNlYXJjaE1hbmFnZXIkU3R1YiRQcm94eQotYW5kcm9pZC5hcHAuSVNlYXJjaE1hbmFnZXJDYWxsYmFjawogYW5kcm9pZC5hcHAuSVNlYXJjaE1hbmFnZXJDYWxsYmFjayRTdHViCi1hbmRyb2lkLmFwcC5JU2VydmljZUNvbm5lY3Rpb24KLWFuZHJvaWQuYXBwLklTZXJ2aWNlQ29ubmVjdGlvbiRTdHViCi1hbmRyb2lkLmFwcC5JVHJhbnNpZW50Tm90aWZpY2F0aW9uCithbmRyb2lkLmFwcC5JU3RhdHVzQmFyJFN0dWIKIGFuZHJvaWQuYXBwLklUcmFuc2llbnROb3RpZmljYXRpb24kU3R1YgorYW5kcm9pZC5hcHAuSVdhbGxwYXBlclNlcnZpY2UkU3R1YgorYW5kcm9pZC5hcHAuSVdhbGxwYXBlclNlcnZpY2VDYWxsYmFjayRTdHViCiBhbmRyb2lkLmFwcC5JbnN0cnVtZW50YXRpb24KLWFuZHJvaWQuYXBwLkludGVudFJlY2VpdmVyTGVha2VkCithbmRyb2lkLmFwcC5JbnRlbnRTZXJ2aWNlCiBhbmRyb2lkLmFwcC5MaXN0QWN0aXZpdHkKLWFuZHJvaWQuYXBwLkxpc3RBY3Rpdml0eSQxCi1hbmRyb2lkLmFwcC5MaXN0QWN0aXZpdHkkMgogYW5kcm9pZC5hcHAuTG9jYWxBY3Rpdml0eU1hbmFnZXIKLWFuZHJvaWQuYXBwLkxvY2FsQWN0aXZpdHlNYW5hZ2VyJExvY2FsQWN0aXZpdHlSZWNvcmQKIGFuZHJvaWQuYXBwLk5vdGlmaWNhdGlvbgotYW5kcm9pZC5hcHAuTm90aWZpY2F0aW9uJDEKLWFuZHJvaWQuYXBwLk5vdGlmaWNhdGlvbk1hbmFnZXIKIGFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQKLWFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQkMQogYW5kcm9pZC5hcHAuUHJvZ3Jlc3NEaWFsb2cKLWFuZHJvaWQuYXBwLlJlY2VpdmVyUmVzdHJpY3RlZENvbnRleHQKIGFuZHJvaWQuYXBwLlJlc3VsdEluZm8KLWFuZHJvaWQuYXBwLlJlc3VsdEluZm8kMQogYW5kcm9pZC5hcHAuU2VhcmNoTWFuYWdlciRTZWFyY2hNYW5hZ2VyQ2FsbGJhY2sKLWFuZHJvaWQuYXBwLlNlYXJjaE1hbmFnZXIkU2VhcmNoTWFuYWdlckNhbGxiYWNrJDEKLWFuZHJvaWQuYXBwLlNlYXJjaE1hbmFnZXIkU2VhcmNoTWFuYWdlckNhbGxiYWNrJDIKIGFuZHJvaWQuYXBwLlNlcnZpY2UKLWFuZHJvaWQuYXBwLlNlcnZpY2VDb25uZWN0aW9uTGVha2VkCithbmRyb2lkLmFwcC5TdGF0dXNCYXJNYW5hZ2VyCiBhbmRyb2lkLmFwcC5UYWJBY3Rpdml0eQorYW5kcm9pZC5hcHAuVGltZVBpY2tlckRpYWxvZworYW5kcm9pZC5hcHB3aWRnZXQuQXBwV2lkZ2V0SG9zdAogYW5kcm9pZC5hcHB3aWRnZXQuQXBwV2lkZ2V0SG9zdFZpZXcKIGFuZHJvaWQuYXBwd2lkZ2V0LkFwcFdpZGdldE1hbmFnZXIKIGFuZHJvaWQuYXBwd2lkZ2V0LkFwcFdpZGdldFByb3ZpZGVyCithbmRyb2lkLmFwcHdpZGdldC5BcHBXaWRnZXRQcm92aWRlckluZm8KIGFuZHJvaWQuYmFja3VwLkJhY2t1cERhdGFJbnB1dAogYW5kcm9pZC5iYWNrdXAuQmFja3VwRGF0YUlucHV0JEVudGl0eUhlYWRlcgogYW5kcm9pZC5iYWNrdXAuQmFja3VwRGF0YU91dHB1dAogYW5kcm9pZC5iYWNrdXAuQmFja3VwSGVscGVyRGlzcGF0Y2hlcgogYW5kcm9pZC5iYWNrdXAuQmFja3VwSGVscGVyRGlzcGF0Y2hlciRIZWFkZXIKIGFuZHJvaWQuYmFja3VwLkZpbGVCYWNrdXBIZWxwZXJCYXNlCi1hbmRyb2lkLmJsdWV0b290aC5CbHVldG9vdGhBMmRwCiBhbmRyb2lkLmJsdWV0b290aC5CbHVldG9vdGhBdWRpb0dhdGV3YXkKIGFuZHJvaWQuYmx1ZXRvb3RoLkJsdWV0b290aERldmljZQogYW5kcm9pZC5ibHVldG9vdGguRGF0YWJhc2UKQEAgLTEyNSw4OSArNzIsNDQgQEAKIGFuZHJvaWQuYmx1ZXRvb3RoLklCbHVldG9vdGhEZXZpY2UkU3R1YiRQcm94eQogYW5kcm9pZC5ibHVldG9vdGguUmZjb21tU29ja2V0CiBhbmRyb2lkLmJsdWV0b290aC5TY29Tb2NrZXQKLWFuZHJvaWQuY29udGVudC5Bc3luY1F1ZXJ5SGFuZGxlcgotYW5kcm9pZC5jb250ZW50LkFzeW5jUXVlcnlIYW5kbGVyJFdvcmtlckFyZ3MKLWFuZHJvaWQuY29udGVudC5Bc3luY1F1ZXJ5SGFuZGxlciRXb3JrZXJIYW5kbGVyCi1hbmRyb2lkLmNvbnRlbnQuQnJvYWRjYXN0UmVjZWl2ZXIKLWFuZHJvaWQuY29udGVudC5Db21wb25lbnRDYWxsYmFja3MKK2FuZHJvaWQuY29udGVudC5BYnN0cmFjdFN5bmNhYmxlQ29udGVudFByb3ZpZGVyCithbmRyb2lkLmNvbnRlbnQuQWJzdHJhY3RUYWJsZU1lcmdlcgogYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUKLWFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lJDEKLWFuZHJvaWQuY29udGVudC5Db250ZW50UHJvdmlkZXIKIGFuZHJvaWQuY29udGVudC5Db250ZW50UHJvdmlkZXIkVHJhbnNwb3J0Ci1hbmRyb2lkLmNvbnRlbnQuQ29udGVudFByb3ZpZGVyTmF0aXZlCi1hbmRyb2lkLmNvbnRlbnQuQ29udGVudFByb3ZpZGVyUHJveHkKLWFuZHJvaWQuY29udGVudC5Db250ZW50UXVlcnlNYXAKLWFuZHJvaWQuY29udGVudC5Db250ZW50UXVlcnlNYXAkMQogYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlcgogYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciRDdXJzb3JXcmFwcGVySW5uZXIKLWFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIkUGFyY2VsRmlsZURlc2NyaXB0b3JJbm5lcgotYW5kcm9pZC5jb250ZW50LkNvbnRlbnRVcmlzCiBhbmRyb2lkLmNvbnRlbnQuQ29udGVudFZhbHVlcwotYW5kcm9pZC5jb250ZW50LkNvbnRlbnRWYWx1ZXMkMQogYW5kcm9pZC5jb250ZW50LkNvbnRleHQKIGFuZHJvaWQuY29udGVudC5Db250ZXh0V3JhcHBlcgotYW5kcm9pZC5jb250ZW50LkRpYWxvZ0ludGVyZmFjZQotYW5kcm9pZC5jb250ZW50LkRpYWxvZ0ludGVyZmFjZSRPbkNhbmNlbExpc3RlbmVyCi1hbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlJE9uQ2xpY2tMaXN0ZW5lcgotYW5kcm9pZC5jb250ZW50LkRpYWxvZ0ludGVyZmFjZSRPbkRpc21pc3NMaXN0ZW5lcgotYW5kcm9pZC5jb250ZW50LkRpYWxvZ0ludGVyZmFjZSRPbktleUxpc3RlbmVyCiBhbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlJE9uTXVsdGlDaG9pY2VDbGlja0xpc3RlbmVyCi1hbmRyb2lkLmNvbnRlbnQuSUNvbnRlbnRQcm92aWRlcgotYW5kcm9pZC5jb250ZW50LklDb250ZW50U2VydmljZQogYW5kcm9pZC5jb250ZW50LklDb250ZW50U2VydmljZSRTdHViCi1hbmRyb2lkLmNvbnRlbnQuSUNvbnRlbnRTZXJ2aWNlJFN0dWIkUHJveHkKLWFuZHJvaWQuY29udGVudC5JSW50ZW50UmVjZWl2ZXIKLWFuZHJvaWQuY29udGVudC5JSW50ZW50UmVjZWl2ZXIkU3R1YgotYW5kcm9pZC5jb250ZW50LklJbnRlbnRTZW5kZXIKLWFuZHJvaWQuY29udGVudC5JSW50ZW50U2VuZGVyJFN0dWIKLWFuZHJvaWQuY29udGVudC5JSW50ZW50U2VuZGVyJFN0dWIkUHJveHkKLWFuZHJvaWQuY29udGVudC5JU3luY0FkYXB0ZXIKIGFuZHJvaWQuY29udGVudC5JU3luY0FkYXB0ZXIkU3R1YgogYW5kcm9pZC5jb250ZW50LkludGVudAotYW5kcm9pZC5jb250ZW50LkludGVudCQxCithbmRyb2lkLmNvbnRlbnQuSW50ZW50JFNob3J0Y3V0SWNvblJlc291cmNlCiBhbmRyb2lkLmNvbnRlbnQuSW50ZW50RmlsdGVyCi1hbmRyb2lkLmNvbnRlbnQuSW50ZW50RmlsdGVyJDEKLWFuZHJvaWQuY29udGVudC5TZWFyY2hSZWNlbnRTdWdnZXN0aW9uc1Byb3ZpZGVyCi1hbmRyb2lkLmNvbnRlbnQuU2VhcmNoUmVjZW50U3VnZ2VzdGlvbnNQcm92aWRlciREYXRhYmFzZUhlbHBlcgotYW5kcm9pZC5jb250ZW50LlNlcnZpY2VDb25uZWN0aW9uCi1hbmRyb2lkLmNvbnRlbnQuU2hhcmVkUHJlZmVyZW5jZXMKLWFuZHJvaWQuY29udGVudC5TaGFyZWRQcmVmZXJlbmNlcyRFZGl0b3IKLWFuZHJvaWQuY29udGVudC5TaGFyZWRQcmVmZXJlbmNlcyRPblNoYXJlZFByZWZlcmVuY2VDaGFuZ2VMaXN0ZW5lcgotYW5kcm9pZC5jb250ZW50LlN5bmNBZGFwdGVyCiBhbmRyb2lkLmNvbnRlbnQuU3luY0FkYXB0ZXIkVHJhbnNwb3J0Ci1hbmRyb2lkLmNvbnRlbnQuU3luY0NvbnRleHQKIGFuZHJvaWQuY29udGVudC5TeW5jUmVzdWx0CithbmRyb2lkLmNvbnRlbnQuU3luY1N0YXRlQ29udGVudFByb3ZpZGVySGVscGVyCiBhbmRyb2lkLmNvbnRlbnQuU3luY1N0YXRzCithbmRyb2lkLmNvbnRlbnQuU3luY2FibGVDb250ZW50UHJvdmlkZXIKK2FuZHJvaWQuY29udGVudC5UZW1wUHJvdmlkZXJTeW5jQWRhcHRlcgogYW5kcm9pZC5jb250ZW50LlVyaU1hdGNoZXIKIGFuZHJvaWQuY29udGVudC5wbS5BY3Rpdml0eUluZm8KLWFuZHJvaWQuY29udGVudC5wbS5BY3Rpdml0eUluZm8kMQogYW5kcm9pZC5jb250ZW50LnBtLkFwcGxpY2F0aW9uSW5mbwotYW5kcm9pZC5jb250ZW50LnBtLkFwcGxpY2F0aW9uSW5mbyQxCi1hbmRyb2lkLmNvbnRlbnQucG0uQ29tcG9uZW50SW5mbwogYW5kcm9pZC5jb250ZW50LnBtLkNvbmZpZ3VyYXRpb25JbmZvCi1hbmRyb2lkLmNvbnRlbnQucG0uQ29uZmlndXJhdGlvbkluZm8kMQorYW5kcm9pZC5jb250ZW50LnBtLklQYWNrYWdlRGF0YU9ic2VydmVyJFN0dWIKIGFuZHJvaWQuY29udGVudC5wbS5JUGFja2FnZURlbGV0ZU9ic2VydmVyJFN0dWIKLWFuZHJvaWQuY29udGVudC5wbS5JUGFja2FnZU1hbmFnZXIKIGFuZHJvaWQuY29udGVudC5wbS5JUGFja2FnZU1hbmFnZXIkU3R1YgogYW5kcm9pZC5jb250ZW50LnBtLklQYWNrYWdlTWFuYWdlciRTdHViJFByb3h5CithbmRyb2lkLmNvbnRlbnQucG0uSVBhY2thZ2VTdGF0c09ic2VydmVyJFN0dWIKIGFuZHJvaWQuY29udGVudC5wbS5JbnN0cnVtZW50YXRpb25JbmZvCi1hbmRyb2lkLmNvbnRlbnQucG0uSW5zdHJ1bWVudGF0aW9uSW5mbyQxCiBhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZUluZm8KLWFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlSW5mbyQxCi1hbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZUl0ZW1JbmZvCiBhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIKK2FuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlU3RhdHMKIGFuZHJvaWQuY29udGVudC5wbS5QYXRoUGVybWlzc2lvbgotYW5kcm9pZC5jb250ZW50LnBtLlBhdGhQZXJtaXNzaW9uJDEKIGFuZHJvaWQuY29udGVudC5wbS5QZXJtaXNzaW9uSW5mbwotYW5kcm9pZC5jb250ZW50LnBtLlBlcm1pc3Npb25JbmZvJDEKLWFuZHJvaWQuY29udGVudC5wbS5Qcm92aWRlckluZm8KLWFuZHJvaWQuY29udGVudC5wbS5Qcm92aWRlckluZm8kMQogYW5kcm9pZC5jb250ZW50LnBtLlJlc29sdmVJbmZvCi1hbmRyb2lkLmNvbnRlbnQucG0uUmVzb2x2ZUluZm8kMQotYW5kcm9pZC5jb250ZW50LnBtLlNlcnZpY2VJbmZvCi1hbmRyb2lkLmNvbnRlbnQucG0uU2VydmljZUluZm8kMQogYW5kcm9pZC5jb250ZW50LnBtLlNpZ25hdHVyZQotYW5kcm9pZC5jb250ZW50LnBtLlNpZ25hdHVyZSQxCiBhbmRyb2lkLmNvbnRlbnQucmVzLkFzc2V0RmlsZURlc2NyaXB0b3IKIGFuZHJvaWQuY29udGVudC5yZXMuQXNzZXRGaWxlRGVzY3JpcHRvciQxCiBhbmRyb2lkLmNvbnRlbnQucmVzLkFzc2V0TWFuYWdlcgpAQCAtMjE2LDY1ICsxMTgsMzggQEAKIGFuZHJvaWQuY29udGVudC5yZXMuQ29sb3JTdGF0ZUxpc3QkMQogYW5kcm9pZC5jb250ZW50LnJlcy5Db21wYXRpYmlsaXR5SW5mbwogYW5kcm9pZC5jb250ZW50LnJlcy5Db21wYXRpYmlsaXR5SW5mbyQxCi1hbmRyb2lkLmNvbnRlbnQucmVzLkNvbXBhdGliaWxpdHlJbmZvJFRyYW5zbGF0b3IKIGFuZHJvaWQuY29udGVudC5yZXMuQ29uZmlndXJhdGlvbgogYW5kcm9pZC5jb250ZW50LnJlcy5Db25maWd1cmF0aW9uJDEKLWFuZHJvaWQuY29udGVudC5yZXMuUGx1cmFsUnVsZXMKLWFuZHJvaWQuY29udGVudC5yZXMuUGx1cmFsUnVsZXMkZW4KIGFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzCiBhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcyQxCi1hbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcyRUaGVtZQogYW5kcm9pZC5jb250ZW50LnJlcy5TdHJpbmdCbG9jawotYW5kcm9pZC5jb250ZW50LnJlcy5TdHJpbmdCbG9jayRTdHlsZUlEcwogYW5kcm9pZC5jb250ZW50LnJlcy5UeXBlZEFycmF5CiBhbmRyb2lkLmNvbnRlbnQucmVzLlhtbEJsb2NrCiBhbmRyb2lkLmNvbnRlbnQucmVzLlhtbEJsb2NrJFBhcnNlcgogYW5kcm9pZC5jb250ZW50LnJlcy5YbWxSZXNvdXJjZVBhcnNlcgogYW5kcm9pZC5kYXRhYmFzZS5BYnN0cmFjdEN1cnNvcgotYW5kcm9pZC5kYXRhYmFzZS5BYnN0cmFjdEN1cnNvciRTZWxmQ29udGVudE9ic2VydmVyCiBhbmRyb2lkLmRhdGFiYXNlLkFic3RyYWN0V2luZG93ZWRDdXJzb3IKLWFuZHJvaWQuZGF0YWJhc2UuQnVsa0N1cnNvck5hdGl2ZQotYW5kcm9pZC5kYXRhYmFzZS5CdWxrQ3Vyc29yUHJveHkKIGFuZHJvaWQuZGF0YWJhc2UuQnVsa0N1cnNvclRvQ3Vyc29yQWRhcHRvcgogYW5kcm9pZC5kYXRhYmFzZS5DaGFyQXJyYXlCdWZmZXIKLWFuZHJvaWQuZGF0YWJhc2UuQ29udGVudE9ic2VydmFibGUKLWFuZHJvaWQuZGF0YWJhc2UuQ29udGVudE9ic2VydmVyCi1hbmRyb2lkLmRhdGFiYXNlLkNvbnRlbnRPYnNlcnZlciROb3RpZmljYXRpb25SdW5uYWJsZQotYW5kcm9pZC5kYXRhYmFzZS5Db250ZW50T2JzZXJ2ZXIkVHJhbnNwb3J0Ci1hbmRyb2lkLmRhdGFiYXNlLkNyb3NzUHJvY2Vzc0N1cnNvcgotYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IKK2FuZHJvaWQuZGF0YWJhc2UuQ3Vyc29ySm9pbmVyJFJlc3VsdAogYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3JUb0J1bGtDdXJzb3JBZGFwdG9yCi1hbmRyb2lkLmRhdGFiYXNlLkN1cnNvclRvQnVsa0N1cnNvckFkYXB0b3IkQ29udGVudE9ic2VydmVyUHJveHkKIGFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yV2luZG93CiBhbmRyb2lkLmRhdGFiYXNlLkN1cnNvcldpbmRvdyQxCiBhbmRyb2lkLmRhdGFiYXNlLkN1cnNvcldyYXBwZXIKLWFuZHJvaWQuZGF0YWJhc2UuRGF0YVNldE9ic2VydmFibGUKLWFuZHJvaWQuZGF0YWJhc2UuRGF0YVNldE9ic2VydmVyCiBhbmRyb2lkLmRhdGFiYXNlLkRhdGFiYXNlVXRpbHMKLWFuZHJvaWQuZGF0YWJhc2UuRGF0YWJhc2VVdGlscyRJbnNlcnRIZWxwZXIKLWFuZHJvaWQuZGF0YWJhc2UuSUJ1bGtDdXJzb3IKLWFuZHJvaWQuZGF0YWJhc2UuSUNvbnRlbnRPYnNlcnZlcgotYW5kcm9pZC5kYXRhYmFzZS5JQ29udGVudE9ic2VydmVyJFN0dWIKLWFuZHJvaWQuZGF0YWJhc2UuSUNvbnRlbnRPYnNlcnZlciRTdHViJFByb3h5CiBhbmRyb2lkLmRhdGFiYXNlLk1hdHJpeEN1cnNvcgotYW5kcm9pZC5kYXRhYmFzZS5PYnNlcnZhYmxlCi1hbmRyb2lkLmRhdGFiYXNlLlNRTEV4Y2VwdGlvbgorYW5kcm9pZC5kYXRhYmFzZS5NZXJnZUN1cnNvcgogYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlQ2xvc2FibGUKIGFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZUN1cnNvcgotYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlQ3Vyc29yRHJpdmVyCiBhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVEYXRhYmFzZQotYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlRGF0YWJhc2UkQ3Vyc29yRmFjdG9yeQorYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlRGF0YWJhc2UkQ29uZmxpY3RBbGdvcml0aG0KIGFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZURlYnVnCiBhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVEZWJ1ZyRQYWdlclN0YXRzCiBhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVEaXJlY3RDdXJzb3JEcml2ZXIKLWFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZUV4Y2VwdGlvbgotYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlT3BlbkhlbHBlcgogYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlUHJvZ3JhbQogYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlUXVlcnkKIGFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZVF1ZXJ5QnVpbGRlcgogYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlU3RhdGVtZW50Ci1hbmRyb2lkLmRkbS5EZG1IYW5kbGVBcHBOYW1lCi1hbmRyb2lkLmRkbS5EZG1IYW5kbGVFeGl0CiBhbmRyb2lkLmRkbS5EZG1IYW5kbGVIZWFwCiBhbmRyb2lkLmRkbS5EZG1IYW5kbGVIZWxsbwogYW5kcm9pZC5kZG0uRGRtSGFuZGxlTmF0aXZlSGVhcApAQCAtMjk0LDcgKzE2OSw2IEBACiBhbmRyb2lkLmdyYXBoaWNzLkJsdXJNYXNrRmlsdGVyCiBhbmRyb2lkLmdyYXBoaWNzLkNhbWVyYQogYW5kcm9pZC5ncmFwaGljcy5DYW52YXMKLWFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzJEVkZ2VUeXBlCiBhbmRyb2lkLmdyYXBoaWNzLkNvbG9yCiBhbmRyb2lkLmdyYXBoaWNzLkNvbG9yRmlsdGVyCiBhbmRyb2lkLmdyYXBoaWNzLkNvbG9yTWF0cml4Q29sb3JGaWx0ZXIKQEAgLTMxMSw3ICsxODUsNiBAQAogYW5kcm9pZC5ncmFwaGljcy5MaW5lYXJHcmFkaWVudAogYW5kcm9pZC5ncmFwaGljcy5NYXNrRmlsdGVyCiBhbmRyb2lkLmdyYXBoaWNzLk1hdHJpeAotYW5kcm9pZC5ncmFwaGljcy5NYXRyaXgkU2NhbGVUb0ZpdAogYW5kcm9pZC5ncmFwaGljcy5Nb3ZpZQogYW5kcm9pZC5ncmFwaGljcy5OaW5lUGF0Y2gKIGFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQKQEAgLTMyMyw3ICsxOTYsNiBAQAogYW5kcm9pZC5ncmFwaGljcy5QYWludCRTdHlsZQogYW5kcm9pZC5ncmFwaGljcy5QYWludEZsYWdzRHJhd0ZpbHRlcgogYW5kcm9pZC5ncmFwaGljcy5QYXRoCi1hbmRyb2lkLmdyYXBoaWNzLlBhdGgkRGlyZWN0aW9uCiBhbmRyb2lkLmdyYXBoaWNzLlBhdGgkRmlsbFR5cGUKIGFuZHJvaWQuZ3JhcGhpY3MuUGF0aERhc2hQYXRoRWZmZWN0CiBhbmRyb2lkLmdyYXBoaWNzLlBhdGhFZmZlY3QKQEAgLTM1MCw3ICsyMjIsNiBAQAogYW5kcm9pZC5ncmFwaGljcy5TaGFkZXIkVGlsZU1vZGUKIGFuZHJvaWQuZ3JhcGhpY3MuU3VtUGF0aEVmZmVjdAogYW5kcm9pZC5ncmFwaGljcy5Td2VlcEdyYWRpZW50Ci1hbmRyb2lkLmdyYXBoaWNzLlRlbXBvcmFyeUJ1ZmZlcgogYW5kcm9pZC5ncmFwaGljcy5UeXBlZmFjZQogYW5kcm9pZC5ncmFwaGljcy5YZmVybW9kZQogYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5BbmltYXRhYmxlCkBAIC0zNzAsNyArMjQxLDYgQEAKIGFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGVDb250YWluZXIKIGFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGVDb250YWluZXIkRHJhd2FibGVDb250YWluZXJTdGF0ZQogYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5HcmFkaWVudERyYXdhYmxlCi1hbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkdyYWRpZW50RHJhd2FibGUkMQogYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5HcmFkaWVudERyYXdhYmxlJEdyYWRpZW50U3RhdGUKIGFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuR3JhZGllbnREcmF3YWJsZSRPcmllbnRhdGlvbgogYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5MYXllckRyYXdhYmxlCkBAIC0zNzksNTUgKzI0OSwzOCBAQAogYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5OaW5lUGF0Y2hEcmF3YWJsZQogYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5OaW5lUGF0Y2hEcmF3YWJsZSROaW5lUGF0Y2hTdGF0ZQogYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5QYWludERyYXdhYmxlCithbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLlJvdGF0ZURyYXdhYmxlCiBhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLlNoYXBlRHJhd2FibGUKLWFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuU2hhcGVEcmF3YWJsZSRTaGFwZVN0YXRlCiBhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLlN0YXRlTGlzdERyYXdhYmxlCiBhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLlN0YXRlTGlzdERyYXdhYmxlJFN0YXRlTGlzdFN0YXRlCiBhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLlRyYW5zaXRpb25EcmF3YWJsZQogYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5UcmFuc2l0aW9uRHJhd2FibGUkVHJhbnNpdGlvblN0YXRlCi1hbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLnNoYXBlcy5SZWN0U2hhcGUKIGFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuc2hhcGVzLlJvdW5kUmVjdFNoYXBlCi1hbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLnNoYXBlcy5TaGFwZQogYW5kcm9pZC5oYXJkd2FyZS5DYW1lcmEKLWFuZHJvaWQuaGFyZHdhcmUuSVNlbnNvclNlcnZpY2UKIGFuZHJvaWQuaGFyZHdhcmUuSVNlbnNvclNlcnZpY2UkU3R1YgotYW5kcm9pZC5oYXJkd2FyZS5JU2Vuc29yU2VydmljZSRTdHViJFByb3h5Ci1hbmRyb2lkLmhhcmR3YXJlLlNlbnNvcgotYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JFdmVudAotYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JFdmVudExpc3RlbmVyCi1hbmRyb2lkLmhhcmR3YXJlLlNlbnNvckxpc3RlbmVyCiBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvck1hbmFnZXIKLWFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yTWFuYWdlciQxCi1hbmRyb2lkLmhhcmR3YXJlLlNlbnNvck1hbmFnZXIkTGVnYWN5TGlzdGVuZXIKLWFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yTWFuYWdlciRMaXN0ZW5lckRlbGVnYXRlCi1hbmRyb2lkLmhhcmR3YXJlLlNlbnNvck1hbmFnZXIkTGlzdGVuZXJEZWxlZ2F0ZSQxCi1hbmRyb2lkLmhhcmR3YXJlLlNlbnNvck1hbmFnZXIkTG1zRmlsdGVyCi1hbmRyb2lkLmhhcmR3YXJlLlNlbnNvck1hbmFnZXIkU2Vuc29yVGhyZWFkCi1hbmRyb2lkLmhhcmR3YXJlLlNlbnNvck1hbmFnZXIkU2Vuc29yVGhyZWFkJFNlbnNvclRocmVhZFJ1bm5hYmxlCithbmRyb2lkLmlucHV0bWV0aG9kc2VydmljZS5BYnN0cmFjdElucHV0TWV0aG9kU2VydmljZQorYW5kcm9pZC5pbnB1dG1ldGhvZHNlcnZpY2UuQWJzdHJhY3RJbnB1dE1ldGhvZFNlcnZpY2UkQWJzdHJhY3RJbnB1dE1ldGhvZFNlc3Npb25JbXBsCithbmRyb2lkLmlucHV0bWV0aG9kc2VydmljZS5FeHRyYWN0QnV0dG9uCiBhbmRyb2lkLmlucHV0bWV0aG9kc2VydmljZS5FeHRyYWN0RWRpdFRleHQKK2FuZHJvaWQuaW5wdXRtZXRob2RzZXJ2aWNlLklJbnB1dE1ldGhvZFNlc3Npb25XcmFwcGVyCithbmRyb2lkLmlucHV0bWV0aG9kc2VydmljZS5JSW5wdXRNZXRob2RTZXNzaW9uV3JhcHBlciRJbnB1dE1ldGhvZEV2ZW50Q2FsbGJhY2tXcmFwcGVyCithbmRyb2lkLmlucHV0bWV0aG9kc2VydmljZS5JSW5wdXRNZXRob2RXcmFwcGVyCiBhbmRyb2lkLmlucHV0bWV0aG9kc2VydmljZS5JbnB1dE1ldGhvZFNlcnZpY2UKK2FuZHJvaWQuaW5wdXRtZXRob2RzZXJ2aWNlLktleWJvYXJkCithbmRyb2lkLmlucHV0bWV0aG9kc2VydmljZS5LZXlib2FyZCRLZXkKIGFuZHJvaWQuaW5wdXRtZXRob2RzZXJ2aWNlLktleWJvYXJkVmlldworYW5kcm9pZC5pbnB1dG1ldGhvZHNlcnZpY2UuS2V5Ym9hcmRWaWV3JDIKIGFuZHJvaWQubG9jYXRpb24uQWRkcmVzcwotYW5kcm9pZC5sb2NhdGlvbi5BZGRyZXNzJDEKLWFuZHJvaWQubG9jYXRpb24uR2VvY29kZXIKLWFuZHJvaWQubG9jYXRpb24uR3BzU2F0ZWxsaXRlCi1hbmRyb2lkLmxvY2F0aW9uLkdwc1N0YXR1cwotYW5kcm9pZC5sb2NhdGlvbi5HcHNTdGF0dXMkMQotYW5kcm9pZC5sb2NhdGlvbi5JTG9jYXRpb25MaXN0ZW5lcgotYW5kcm9pZC5sb2NhdGlvbi5JTG9jYXRpb25MaXN0ZW5lciRTdHViCi1hbmRyb2lkLmxvY2F0aW9uLklMb2NhdGlvbk1hbmFnZXIKK2FuZHJvaWQubG9jYXRpb24uQ3JpdGVyaWEKIGFuZHJvaWQubG9jYXRpb24uSUxvY2F0aW9uTWFuYWdlciRTdHViCiBhbmRyb2lkLmxvY2F0aW9uLklMb2NhdGlvbk1hbmFnZXIkU3R1YiRQcm94eQogYW5kcm9pZC5sb2NhdGlvbi5JTG9jYXRpb25Qcm92aWRlcgogYW5kcm9pZC5sb2NhdGlvbi5JTG9jYXRpb25Qcm92aWRlciRTdHViCiBhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uCi1hbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uJDEKLWFuZHJvaWQubG9jYXRpb24uTG9jYXRpb25MaXN0ZW5lcgogYW5kcm9pZC5sb2NhdGlvbi5Mb2NhdGlvbk1hbmFnZXIKIGFuZHJvaWQubG9jYXRpb24uTG9jYXRpb25NYW5hZ2VyJExpc3RlbmVyVHJhbnNwb3J0Ci1hbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uTWFuYWdlciRMaXN0ZW5lclRyYW5zcG9ydCQxCi1hbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uUHJvdmlkZXIKLWFuZHJvaWQubWVkaWEuQW1ySW5wdXRTdHJlYW0KK2FuZHJvaWQubG9jYXRpb24uTG9jYXRpb25NYW5hZ2VyJExwUG93ZXJDb21wYXJhdG9yCiBhbmRyb2lkLm1lZGlhLkF1ZGlvRm9ybWF0CiBhbmRyb2lkLm1lZGlhLkF1ZGlvTWFuYWdlcgogYW5kcm9pZC5tZWRpYS5BdWRpb1JlY29yZApAQCAtNDM1LDcwICsyODgsNTYgQEAKIGFuZHJvaWQubWVkaWEuQXVkaW9UcmFjawogYW5kcm9pZC5tZWRpYS5FeGlmSW50ZXJmYWNlCiBhbmRyb2lkLm1lZGlhLkZhY2VEZXRlY3RvcgotYW5kcm9pZC5tZWRpYS5JQXVkaW9TZXJ2aWNlCithbmRyb2lkLm1lZGlhLkZhY2VEZXRlY3RvciRGYWNlCiBhbmRyb2lkLm1lZGlhLklBdWRpb1NlcnZpY2UkU3R1YgogYW5kcm9pZC5tZWRpYS5JQXVkaW9TZXJ2aWNlJFN0dWIkUHJveHkKIGFuZHJvaWQubWVkaWEuSmV0UGxheWVyCiBhbmRyb2lkLm1lZGlhLk1lZGlhTWV0YWRhdGFSZXRyaWV2ZXIKIGFuZHJvaWQubWVkaWEuTWVkaWFQbGF5ZXIKLWFuZHJvaWQubWVkaWEuTWVkaWFQbGF5ZXIkRXZlbnRIYW5kbGVyCi1hbmRyb2lkLm1lZGlhLk1lZGlhUGxheWVyJE9uQnVmZmVyaW5nVXBkYXRlTGlzdGVuZXIKLWFuZHJvaWQubWVkaWEuTWVkaWFQbGF5ZXIkT25Db21wbGV0aW9uTGlzdGVuZXIKLWFuZHJvaWQubWVkaWEuTWVkaWFQbGF5ZXIkT25FcnJvckxpc3RlbmVyCi1hbmRyb2lkLm1lZGlhLk1lZGlhUGxheWVyJE9uUHJlcGFyZWRMaXN0ZW5lcgogYW5kcm9pZC5tZWRpYS5NZWRpYVJlY29yZGVyCiBhbmRyb2lkLm1lZGlhLk1lZGlhU2Nhbm5lcgotYW5kcm9pZC5tZWRpYS5SZXNhbXBsZUlucHV0U3RyZWFtCithbmRyb2lkLm1lZGlhLk1lZGlhU2Nhbm5lciRNeU1lZGlhU2Nhbm5lckNsaWVudAorYW5kcm9pZC5tZWRpYS5SaW5ndG9uZQogYW5kcm9pZC5tZWRpYS5SaW5ndG9uZU1hbmFnZXIKIGFuZHJvaWQubWVkaWEuVG9uZUdlbmVyYXRvcgogYW5kcm9pZC5uZXQuQ29ubmVjdGl2aXR5TWFuYWdlcgogYW5kcm9pZC5uZXQuQ3JlZGVudGlhbHMKIGFuZHJvaWQubmV0LkRoY3BJbmZvCiBhbmRyb2lkLm5ldC5EaGNwSW5mbyQxCi1hbmRyb2lkLm5ldC5JQ29ubmVjdGl2aXR5TWFuYWdlcgogYW5kcm9pZC5uZXQuSUNvbm5lY3Rpdml0eU1hbmFnZXIkU3R1YgotYW5kcm9pZC5uZXQuSUNvbm5lY3Rpdml0eU1hbmFnZXIkU3R1YiRQcm94eQogYW5kcm9pZC5uZXQuTG9jYWxTZXJ2ZXJTb2NrZXQKIGFuZHJvaWQubmV0LkxvY2FsU29ja2V0CithbmRyb2lkLm5ldC5Mb2NhbFNvY2tldEFkZHJlc3MkTmFtZXNwYWNlCiBhbmRyb2lkLm5ldC5Mb2NhbFNvY2tldEltcGwKIGFuZHJvaWQubmV0LkxvY2FsU29ja2V0SW1wbCRTb2NrZXRJbnB1dFN0cmVhbQogYW5kcm9pZC5uZXQuTG9jYWxTb2NrZXRJbXBsJFNvY2tldE91dHB1dFN0cmVhbQogYW5kcm9pZC5uZXQuTmV0d29ya0Nvbm5lY3Rpdml0eUxpc3RlbmVyCi1hbmRyb2lkLm5ldC5OZXR3b3JrQ29ubmVjdGl2aXR5TGlzdGVuZXIkQ29ubmVjdGl2aXR5QnJvYWRjYXN0UmVjZWl2ZXIKLWFuZHJvaWQubmV0Lk5ldHdvcmtDb25uZWN0aXZpdHlMaXN0ZW5lciRTdGF0ZQogYW5kcm9pZC5uZXQuTmV0d29ya0luZm8KLWFuZHJvaWQubmV0Lk5ldHdvcmtJbmZvJDEKIGFuZHJvaWQubmV0Lk5ldHdvcmtJbmZvJERldGFpbGVkU3RhdGUKLWFuZHJvaWQubmV0Lk5ldHdvcmtJbmZvJFN0YXRlCiBhbmRyb2lkLm5ldC5OZXR3b3JrVXRpbHMKIGFuZHJvaWQubmV0LlVyaQotYW5kcm9pZC5uZXQuVXJpJDEKLWFuZHJvaWQubmV0LlVyaSRBYnN0cmFjdEhpZXJhcmNoaWNhbFVyaQotYW5kcm9pZC5uZXQuVXJpJEFic3RyYWN0UGFydAotYW5kcm9pZC5uZXQuVXJpJEJ1aWxkZXIKIGFuZHJvaWQubmV0LlVyaSRIaWVyYXJjaGljYWxVcmkKIGFuZHJvaWQubmV0LlVyaSRPcGFxdWVVcmkKIGFuZHJvaWQubmV0LlVyaSRQYXJ0Ci1hbmRyb2lkLm5ldC5VcmkkUGFydCRFbXB0eVBhcnQKLWFuZHJvaWQubmV0LlVyaSRQYXRoUGFydAotYW5kcm9pZC5uZXQuVXJpJFBhdGhTZWdtZW50cwotYW5kcm9pZC5uZXQuVXJpJFBhdGhTZWdtZW50c0J1aWxkZXIKIGFuZHJvaWQubmV0LlVyaSRTdHJpbmdVcmkKIGFuZHJvaWQubmV0LldlYkFkZHJlc3MKIGFuZHJvaWQubmV0Lmh0dHAuQW5kcm9pZEh0dHBDbGllbnQKLWFuZHJvaWQubmV0Lmh0dHAuQW5kcm9pZEh0dHBDbGllbnQkMQogYW5kcm9pZC5uZXQuaHR0cC5BbmRyb2lkSHR0cENsaWVudCQyCi1hbmRyb2lkLm5ldC5odHRwLkFuZHJvaWRIdHRwQ2xpZW50JEN1cmxMb2dnZXIKLWFuZHJvaWQubmV0Lmh0dHAuQW5kcm9pZEh0dHBDbGllbnQkTG9nZ2luZ0NvbmZpZ3VyYXRpb24KIGFuZHJvaWQubmV0Lmh0dHAuQ2VydGlmaWNhdGVDaGFpblZhbGlkYXRvcgorYW5kcm9pZC5uZXQuaHR0cC5Db25uZWN0aW9uCithbmRyb2lkLm5ldC5odHRwLkRvbWFpbk5hbWVDaGVja2VyCiBhbmRyb2lkLm5ldC5odHRwLkV2ZW50SGFuZGxlcgogYW5kcm9pZC5uZXQuaHR0cC5IZWFkZXJzCi1hbmRyb2lkLm5ldC5odHRwLkhlYWRlcnMkSGVhZGVyQ2FsbGJhY2sKIGFuZHJvaWQubmV0Lmh0dHAuSHR0cHNDb25uZWN0aW9uCithbmRyb2lkLm5ldC5odHRwLlJlcXVlc3QKK2FuZHJvaWQubmV0Lmh0dHAuUmVxdWVzdFF1ZXVlCithbmRyb2lkLm5ldC5odHRwLlNzbENlcnRpZmljYXRlCiBhbmRyb2lkLm5ldC52cG4uSVZwblNlcnZpY2UkU3R1YgorYW5kcm9pZC5uZXQudnBuLlBwdHBQcm9maWxlCiBhbmRyb2lkLm5ldC52cG4uVnBuTWFuYWdlcgorYW5kcm9pZC5uZXQudnBuLlZwblByb2ZpbGUKK2FuZHJvaWQubmV0LnZwbi5WcG5TdGF0ZQogYW5kcm9pZC5uZXQudnBuLlZwblR5cGUKLWFuZHJvaWQubmV0LndpZmkuSVdpZmlNYW5hZ2VyCiBhbmRyb2lkLm5ldC53aWZpLklXaWZpTWFuYWdlciRTdHViCiBhbmRyb2lkLm5ldC53aWZpLklXaWZpTWFuYWdlciRTdHViJFByb3h5CiBhbmRyb2lkLm5ldC53aWZpLldpZmlNYW5hZ2VyCkBAIC01MDcsNiArMzQ2LDcgQEAKIGFuZHJvaWQub3BlbmdsLkdMRVMxMEV4dAogYW5kcm9pZC5vcGVuZ2wuR0xFUzExCiBhbmRyb2lkLm9wZW5nbC5HTEVTMTFFeHQKK2FuZHJvaWQub3BlbmdsLkdMVQogYW5kcm9pZC5vcGVuZ2wuR0xVdGlscwogYW5kcm9pZC5vcGVuZ2wuTWF0cml4CiBhbmRyb2lkLm9wZW5nbC5WaXNpYmlsaXR5CkBAIC01MTYsNyArMzU2LDcgQEAKIGFuZHJvaWQub3MuQnVpbGQKIGFuZHJvaWQub3MuQnVpbGQkVkVSU0lPTgogYW5kcm9pZC5vcy5CdW5kbGUKLWFuZHJvaWQub3MuQnVuZGxlJDEKK2FuZHJvaWQub3MuRGVhZE9iamVjdEV4Y2VwdGlvbgogYW5kcm9pZC5vcy5EZWJ1ZwogYW5kcm9pZC5vcy5EZWJ1ZyRNZW1vcnlJbmZvCiBhbmRyb2lkLm9zLkVudmlyb25tZW50CkBAIC01MjUsMTI2ICszNjUsMTExIEBACiBhbmRyb2lkLm9zLkZpbGVVdGlscwogYW5kcm9pZC5vcy5GaWxlVXRpbHMkRmlsZVN0YXR1cwogYW5kcm9pZC5vcy5IYW5kbGVyCi1hbmRyb2lkLm9zLkhhbmRsZXJUaHJlYWQKIGFuZHJvaWQub3MuSGFyZHdhcmUKIGFuZHJvaWQub3MuSUJpbmRlcgotYW5kcm9pZC5vcy5JQmluZGVyJERlYXRoUmVjaXBpZW50Ci1hbmRyb2lkLm9zLklDaGVja2luU2VydmljZQogYW5kcm9pZC5vcy5JQ2hlY2tpblNlcnZpY2UkU3R1YgotYW5kcm9pZC5vcy5JQ2hlY2tpblNlcnZpY2UkU3R1YiRQcm94eQotYW5kcm9pZC5vcy5JSGFyZHdhcmVTZXJ2aWNlCiBhbmRyb2lkLm9zLklIYXJkd2FyZVNlcnZpY2UkU3R1YgotYW5kcm9pZC5vcy5JSGFyZHdhcmVTZXJ2aWNlJFN0dWIkUHJveHkKIGFuZHJvaWQub3MuSUludGVyZmFjZQotYW5kcm9pZC5vcy5JTWVzc2VuZ2VyCi1hbmRyb2lkLm9zLklQb3dlck1hbmFnZXIKK2FuZHJvaWQub3MuSU1vdW50U2VydmljZSRTdHViCithbmRyb2lkLm9zLklQYXJlbnRhbENvbnRyb2xDYWxsYmFjayRTdHViCiBhbmRyb2lkLm9zLklQb3dlck1hbmFnZXIkU3R1YgotYW5kcm9pZC5vcy5JUG93ZXJNYW5hZ2VyJFN0dWIkUHJveHkKLWFuZHJvaWQub3MuSVNlcnZpY2VNYW5hZ2VyCiBhbmRyb2lkLm9zLkxvb3BlcgogYW5kcm9pZC5vcy5NZW1vcnlGaWxlCiBhbmRyb2lkLm9zLk1lc3NhZ2UKLWFuZHJvaWQub3MuTWVzc2FnZSQxCi1hbmRyb2lkLm9zLk1lc3NhZ2VRdWV1ZQotYW5kcm9pZC5vcy5NZXNzYWdlUXVldWUkSWRsZUhhbmRsZXIKIGFuZHJvaWQub3MuTmV0U3RhdAogYW5kcm9pZC5vcy5QYXJjZWwKIGFuZHJvaWQub3MuUGFyY2VsJDEKIGFuZHJvaWQub3MuUGFyY2VsRmlsZURlc2NyaXB0b3IKIGFuZHJvaWQub3MuUGFyY2VsRmlsZURlc2NyaXB0b3IkMQotYW5kcm9pZC5vcy5QYXJjZWxGaWxlRGVzY3JpcHRvciRBdXRvQ2xvc2VJbnB1dFN0cmVhbQogYW5kcm9pZC5vcy5QYXJjZWxhYmxlCiBhbmRyb2lkLm9zLlBhcmNlbGFibGUkQ3JlYXRvcgogYW5kcm9pZC5vcy5QYXR0ZXJuTWF0Y2hlcgotYW5kcm9pZC5vcy5QYXR0ZXJuTWF0Y2hlciQxCiBhbmRyb2lkLm9zLlBvd2VyCi1hbmRyb2lkLm9zLlBvd2VyTWFuYWdlcgotYW5kcm9pZC5vcy5Qb3dlck1hbmFnZXIkV2FrZUxvY2sKLWFuZHJvaWQub3MuUG93ZXJNYW5hZ2VyJFdha2VMb2NrJDEKIGFuZHJvaWQub3MuUHJvY2VzcwotYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb24KLWFuZHJvaWQub3MuU2VydmljZU1hbmFnZXIKLWFuZHJvaWQub3MuU2VydmljZU1hbmFnZXJOYXRpdmUKLWFuZHJvaWQub3MuU2VydmljZU1hbmFnZXJQcm94eQorYW5kcm9pZC5vcy5SZXN1bHRSZWNlaXZlcgogYW5kcm9pZC5vcy5TdGF0RnMKIGFuZHJvaWQub3MuU3lzdGVtQ2xvY2sKIGFuZHJvaWQub3MuU3lzdGVtUHJvcGVydGllcwogYW5kcm9pZC5vcy5VRXZlbnRPYnNlcnZlcgotYW5kcm9pZC5vcy5WaWJyYXRvcgogYW5kcm9pZC5waW0uRXZlbnRSZWN1cnJlbmNlCiBhbmRyb2lkLnByZWZlcmVuY2UuQ2hlY2tCb3hQcmVmZXJlbmNlCithbmRyb2lkLnByZWZlcmVuY2UuQ2hlY2tCb3hQcmVmZXJlbmNlJFNhdmVkU3RhdGUKIGFuZHJvaWQucHJlZmVyZW5jZS5EaWFsb2dQcmVmZXJlbmNlCiBhbmRyb2lkLnByZWZlcmVuY2UuRWRpdFRleHRQcmVmZXJlbmNlCi1hbmRyb2lkLnByZWZlcmVuY2UuR2VuZXJpY0luZmxhdGVyCi1hbmRyb2lkLnByZWZlcmVuY2UuR2VuZXJpY0luZmxhdGVyJFBhcmVudAogYW5kcm9pZC5wcmVmZXJlbmNlLkxpc3RQcmVmZXJlbmNlCi1hbmRyb2lkLnByZWZlcmVuY2UuTGlzdFByZWZlcmVuY2UkMQotYW5kcm9pZC5wcmVmZXJlbmNlLk9uRGVwZW5kZW5jeUNoYW5nZUxpc3RlbmVyCithbmRyb2lkLnByZWZlcmVuY2UuTGlzdFByZWZlcmVuY2UkU2F2ZWRTdGF0ZQogYW5kcm9pZC5wcmVmZXJlbmNlLlByZWZlcmVuY2UKLWFuZHJvaWQucHJlZmVyZW5jZS5QcmVmZXJlbmNlJEJhc2VTYXZlZFN0YXRlCi1hbmRyb2lkLnByZWZlcmVuY2UuUHJlZmVyZW5jZSRCYXNlU2F2ZWRTdGF0ZSQxCi1hbmRyb2lkLnByZWZlcmVuY2UuUHJlZmVyZW5jZSRPblByZWZlcmVuY2VDaGFuZ2VJbnRlcm5hbExpc3RlbmVyCi1hbmRyb2lkLnByZWZlcmVuY2UuUHJlZmVyZW5jZSRPblByZWZlcmVuY2VDaGFuZ2VMaXN0ZW5lcgotYW5kcm9pZC5wcmVmZXJlbmNlLlByZWZlcmVuY2UkT25QcmVmZXJlbmNlQ2xpY2tMaXN0ZW5lcgogYW5kcm9pZC5wcmVmZXJlbmNlLlByZWZlcmVuY2VBY3Rpdml0eQotYW5kcm9pZC5wcmVmZXJlbmNlLlByZWZlcmVuY2VBY3Rpdml0eSQxCi1hbmRyb2lkLnByZWZlcmVuY2UuUHJlZmVyZW5jZUNhdGVnb3J5CiBhbmRyb2lkLnByZWZlcmVuY2UuUHJlZmVyZW5jZUdyb3VwCiBhbmRyb2lkLnByZWZlcmVuY2UuUHJlZmVyZW5jZUdyb3VwQWRhcHRlcgotYW5kcm9pZC5wcmVmZXJlbmNlLlByZWZlcmVuY2VHcm91cEFkYXB0ZXIkMQogYW5kcm9pZC5wcmVmZXJlbmNlLlByZWZlcmVuY2VJbmZsYXRlcgogYW5kcm9pZC5wcmVmZXJlbmNlLlByZWZlcmVuY2VNYW5hZ2VyCi1hbmRyb2lkLnByZWZlcmVuY2UuUHJlZmVyZW5jZU1hbmFnZXIkT25BY3Rpdml0eURlc3Ryb3lMaXN0ZW5lcgotYW5kcm9pZC5wcmVmZXJlbmNlLlByZWZlcmVuY2VNYW5hZ2VyJE9uQWN0aXZpdHlSZXN1bHRMaXN0ZW5lcgotYW5kcm9pZC5wcmVmZXJlbmNlLlByZWZlcmVuY2VNYW5hZ2VyJE9uUHJlZmVyZW5jZVRyZWVDbGlja0xpc3RlbmVyCiBhbmRyb2lkLnByZWZlcmVuY2UuUHJlZmVyZW5jZVNjcmVlbgogYW5kcm9pZC5wcmVmZXJlbmNlLlJpbmd0b25lUHJlZmVyZW5jZQotYW5kcm9pZC5wcm92aWRlci5CYXNlQ29sdW1ucworYW5kcm9pZC5wcmVmZXJlbmNlLlZvbHVtZVByZWZlcmVuY2UKK2FuZHJvaWQucHJlZmVyZW5jZS5Wb2x1bWVQcmVmZXJlbmNlJFNlZWtCYXJWb2x1bWl6ZXIKIGFuZHJvaWQucHJvdmlkZXIuQnJvd3NlcgotYW5kcm9pZC5wcm92aWRlci5DaGVja2luCithbmRyb2lkLnByb3ZpZGVyLkNhbGVuZGFyJEF0dGVuZGVlcworYW5kcm9pZC5wcm92aWRlci5DYWxlbmRhciRCdXN5Qml0cworYW5kcm9pZC5wcm92aWRlci5DYWxlbmRhciRDYWxlbmRhckFsZXJ0cworYW5kcm9pZC5wcm92aWRlci5DYWxlbmRhciRDYWxlbmRhcnMKK2FuZHJvaWQucHJvdmlkZXIuQ2FsZW5kYXIkRXZlbnRzCithbmRyb2lkLnByb3ZpZGVyLkNhbGVuZGFyJEluc3RhbmNlcworYW5kcm9pZC5wcm92aWRlci5DYWxsTG9nJENhbGxzCiBhbmRyb2lkLnByb3ZpZGVyLkNoZWNraW4kRXZlbnRzJFRhZworYW5kcm9pZC5wcm92aWRlci5DaGVja2luJFByb3BlcnRpZXMKIGFuZHJvaWQucHJvdmlkZXIuQ2hlY2tpbiRQcm9wZXJ0aWVzJFRhZwotYW5kcm9pZC5wcm92aWRlci5DaGVja2luJFN0YXRzCiBhbmRyb2lkLnByb3ZpZGVyLkNoZWNraW4kU3RhdHMkVGFnCithbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzCiBhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzJENvbnRhY3RNZXRob2RzCi1hbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzJENvbnRhY3RNZXRob2RzQ29sdW1ucwogYW5kcm9pZC5wcm92aWRlci5Db250YWN0cyRQZW9wbGUKLWFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHMkUGVvcGxlQ29sdW1ucwogYW5kcm9pZC5wcm92aWRlci5Db250YWN0cyRQaG9uZXMKLWFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHMkUGhvbmVzQ29sdW1ucwotYW5kcm9pZC5wcm92aWRlci5Db250YWN0cyRQcmVzZW5jZUNvbHVtbnMKK2FuZHJvaWQucHJvdmlkZXIuQ29udGFjdHMkUHJlc2VuY2UKK2FuZHJvaWQucHJvdmlkZXIuQ29udGFjdHMkU2V0dGluZ3MKIGFuZHJvaWQucHJvdmlkZXIuRG93bmxvYWRzCiBhbmRyb2lkLnByb3ZpZGVyLkdtYWlsCithbmRyb2lkLnByb3ZpZGVyLkdtYWlsJEF0dGFjaG1lbnRPcmlnaW4KK2FuZHJvaWQucHJvdmlkZXIuR21haWwkQXR0YWNobWVudFJlbmRpdGlvbgorYW5kcm9pZC5wcm92aWRlci5HbWFpbCRDb252ZXJzYXRpb25DdXJzb3IKK2FuZHJvaWQucHJvdmlkZXIuR21haWwkQ3Vyc29yU3RhdHVzCiBhbmRyb2lkLnByb3ZpZGVyLkdtYWlsJExhYmVsTWFwCithbmRyb2lkLnByb3ZpZGVyLkdtYWlsJE1lc3NhZ2VDdXJzb3IKIGFuZHJvaWQucHJvdmlkZXIuR21haWwkUGVyc29uYWxMZXZlbAogYW5kcm9pZC5wcm92aWRlci5HbWFpbCRTZXR0aW5ncwotYW5kcm9pZC5wcm92aWRlci5JbSRDb21tb25QcmVzZW5jZUNvbHVtbnMKK2FuZHJvaWQucHJvdmlkZXIuSW0kQWNjb3VudAorYW5kcm9pZC5wcm92aWRlci5JbSRBdmF0YXJzCithbmRyb2lkLnByb3ZpZGVyLkltJENoYXRzCithbmRyb2lkLnByb3ZpZGVyLkltJENvbnRhY3RzCithbmRyb2lkLnByb3ZpZGVyLkltJExhc3RSbXFJZAorYW5kcm9pZC5wcm92aWRlci5JbSRNZXNzYWdlcworYW5kcm9pZC5wcm92aWRlci5JbSRPdXRnb2luZ1JtcQorYW5kcm9pZC5wcm92aWRlci5JbSRQcmVzZW5jZQogYW5kcm9pZC5wcm92aWRlci5JbSRQcm92aWRlcgotYW5kcm9pZC5wcm92aWRlci5NZWRpYVN0b3JlJEF1ZGlvJEF1ZGlvQ29sdW1ucworYW5kcm9pZC5wcm92aWRlci5JbSRQcm92aWRlclNldHRpbmdzCithbmRyb2lkLnByb3ZpZGVyLk1lZGlhU3RvcmUKK2FuZHJvaWQucHJvdmlkZXIuTWVkaWFTdG9yZSRBdWRpbyRBbGJ1bXMKK2FuZHJvaWQucHJvdmlkZXIuTWVkaWFTdG9yZSRBdWRpbyRBcnRpc3RzCithbmRyb2lkLnByb3ZpZGVyLk1lZGlhU3RvcmUkQXVkaW8kQXJ0aXN0cyRBbGJ1bXMKIGFuZHJvaWQucHJvdmlkZXIuTWVkaWFTdG9yZSRBdWRpbyRNZWRpYQorYW5kcm9pZC5wcm92aWRlci5NZWRpYVN0b3JlJEF1ZGlvJFBsYXlsaXN0cwogYW5kcm9pZC5wcm92aWRlci5NZWRpYVN0b3JlJEltYWdlcyRNZWRpYQotYW5kcm9pZC5wcm92aWRlci5NZWRpYVN0b3JlJE1lZGlhQ29sdW1ucworYW5kcm9pZC5wcm92aWRlci5NZWRpYVN0b3JlJEltYWdlcyRUaHVtYm5haWxzCiBhbmRyb2lkLnByb3ZpZGVyLlNlYXJjaFJlY2VudFN1Z2dlc3Rpb25zCiBhbmRyb2lkLnByb3ZpZGVyLlNldHRpbmdzJEdzZXJ2aWNlcwotYW5kcm9pZC5wcm92aWRlci5TZXR0aW5ncyROYW1lVmFsdWVDYWNoZQotYW5kcm9pZC5wcm92aWRlci5TZXR0aW5ncyROYW1lVmFsdWVUYWJsZQogYW5kcm9pZC5wcm92aWRlci5TZXR0aW5ncyRTZWN1cmUKIGFuZHJvaWQucHJvdmlkZXIuU2V0dGluZ3MkU3lzdGVtCi1hbmRyb2lkLnByb3ZpZGVyLlN1YnNjcmliZWRGZWVkcyRGZWVkQ29sdW1ucwogYW5kcm9pZC5wcm92aWRlci5TdWJzY3JpYmVkRmVlZHMkRmVlZHMKLWFuZHJvaWQucHJvdmlkZXIuU3luY0NvbnN0VmFsdWUKK2FuZHJvaWQucHJvdmlkZXIuVGVsZXBob255JENhcnJpZXJzCiBhbmRyb2lkLnByb3ZpZGVyLlRlbGVwaG9ueSRNbXMKIGFuZHJvaWQucHJvdmlkZXIuVGVsZXBob255JE1tc1NtcwogYW5kcm9pZC5wcm92aWRlci5UZWxlcGhvbnkkTW1zU21zJFBlbmRpbmdNZXNzYWdlcworYW5kcm9pZC5wcm92aWRlci5UZWxlcGhvbnkkU21zCithbmRyb2lkLnByb3ZpZGVyLlRlbGVwaG9ueSRTbXMkQ29udmVyc2F0aW9ucwogYW5kcm9pZC5wcm92aWRlci5UZWxlcGhvbnkkVGhyZWFkcworYW5kcm9pZC5wcm92aWRlci5Vc2VyRGljdGlvbmFyeQogYW5kcm9pZC5wcm92aWRlci5Vc2VyRGljdGlvbmFyeSRXb3JkcwotYW5kcm9pZC5zYXguQ2hpbGRyZW4KLWFuZHJvaWQuc2F4LkNoaWxkcmVuJENoaWxkCi1hbmRyb2lkLnNheC5FbGVtZW50Ci1hbmRyb2lkLnNheC5FbmRUZXh0RWxlbWVudExpc3RlbmVyCiBhbmRyb2lkLnNheC5Sb290RWxlbWVudAogYW5kcm9pZC5zYXguUm9vdEVsZW1lbnQkSGFuZGxlcgotYW5kcm9pZC5zYXguU3RhcnRFbGVtZW50TGlzdGVuZXIKIGFuZHJvaWQuc2VjdXJpdHkuS2V5c3RvcmUKIGFuZHJvaWQuc2VjdXJpdHkuS2V5c3RvcmUkRmlsZUtleXN0b3JlCiBhbmRyb2lkLnNlY3VyaXR5Lk1kNU1lc3NhZ2VEaWdlc3QKQEAgLTY1Niw2ODEgKzQ4MSwzMjQgQEAKIGFuZHJvaWQuc2VydmVyLkJsdWV0b290aEV2ZW50TG9vcAogYW5kcm9pZC5zZXJ2ZXIuZGF0YS5CdWlsZERhdGEKIGFuZHJvaWQuc2VydmVyLmRhdGEuQ3Jhc2hEYXRhCi1hbmRyb2lkLnNlcnZlci5kYXRhLlN0YWNrVHJhY2VFbGVtZW50RGF0YQogYW5kcm9pZC5zZXJ2ZXIuZGF0YS5UaHJvd2FibGVEYXRhCiBhbmRyb2lkLnNlcnZlci5zZWFyY2guU2VhcmNoYWJsZUluZm8KLWFuZHJvaWQuc2VydmVyLnNlYXJjaC5TZWFyY2hhYmxlSW5mbyQxCithbmRyb2lkLnNlcnZlci5zZWFyY2guU2VhcmNoYWJsZXMKK2FuZHJvaWQuc3BlZWNoLklSZWNvZ25pdGlvbkxpc3RlbmVyJFN0dWIKIGFuZHJvaWQuc3BlZWNoLklSZWNvZ25pdGlvblNlcnZpY2UkU3R1YgorYW5kcm9pZC5zcGVlY2guUmVjb2duaXRpb25SZXN1bHQKK2FuZHJvaWQuc3BlZWNoLlJlY29nbml0aW9uU2VydmljZVV0aWwKK2FuZHJvaWQuc3BlZWNoLnNyZWMuTWljcm9waG9uZUlucHV0U3RyZWFtCiBhbmRyb2lkLnNwZWVjaC5zcmVjLlJlY29nbml6ZXIKIGFuZHJvaWQuc3BlZWNoLnR0cy5JVHRzJFN0dWIKIGFuZHJvaWQuc3BlZWNoLnR0cy5JVHRzJFN0dWIkUHJveHkKIGFuZHJvaWQuc3BlZWNoLnR0cy5UZXh0VG9TcGVlY2gKLWFuZHJvaWQudGVsZXBob255LkNlbGxMb2NhdGlvbgogYW5kcm9pZC50ZWxlcGhvbnkuUGhvbmVOdW1iZXJVdGlscwotYW5kcm9pZC50ZWxlcGhvbnkuUGhvbmVTdGF0ZUxpc3RlbmVyCiBhbmRyb2lkLnRlbGVwaG9ueS5QaG9uZVN0YXRlTGlzdGVuZXIkMQotYW5kcm9pZC50ZWxlcGhvbnkuUGhvbmVTdGF0ZUxpc3RlbmVyJDIKIGFuZHJvaWQudGVsZXBob255LlNlcnZpY2VTdGF0ZQotYW5kcm9pZC50ZWxlcGhvbnkuU2VydmljZVN0YXRlJDEKIGFuZHJvaWQudGVsZXBob255LlNpZ25hbFN0cmVuZ3RoCithbmRyb2lkLnRlbGVwaG9ueS5TbXNNZXNzYWdlCiBhbmRyb2lkLnRlbGVwaG9ueS5UZWxlcGhvbnlNYW5hZ2VyCi1hbmRyb2lkLnRlbGVwaG9ueS5nc20uR3NtQ2VsbExvY2F0aW9uCiBhbmRyb2lkLnRleHQuQW5kcm9pZENoYXJhY3RlcgogYW5kcm9pZC50ZXh0LkFubm90YXRpb24KIGFuZHJvaWQudGV4dC5BdXRvVGV4dAogYW5kcm9pZC50ZXh0LkJvcmluZ0xheW91dAotYW5kcm9pZC50ZXh0LkJvcmluZ0xheW91dCRNZXRyaWNzCiBhbmRyb2lkLnRleHQuRHluYW1pY0xheW91dAotYW5kcm9pZC50ZXh0LkR5bmFtaWNMYXlvdXQkQ2hhbmdlV2F0Y2hlcgotYW5kcm9pZC50ZXh0LkVkaXRhYmxlCi1hbmRyb2lkLnRleHQuRWRpdGFibGUkRmFjdG9yeQotYW5kcm9pZC50ZXh0LkdldENoYXJzCi1hbmRyb2lkLnRleHQuR3JhcGhpY3NPcGVyYXRpb25zCithbmRyb2lkLnRleHQuSHRtbAogYW5kcm9pZC50ZXh0Lkh0bWwkSHRtbFBhcnNlcgorYW5kcm9pZC50ZXh0Lkh0bWxUb1NwYW5uZWRDb252ZXJ0ZXIKIGFuZHJvaWQudGV4dC5JQ2xpcGJvYXJkJFN0dWIKLWFuZHJvaWQudGV4dC5JbnB1dEZpbHRlcgotYW5kcm9pZC50ZXh0LklucHV0VHlwZQogYW5kcm9pZC50ZXh0LkxheW91dAotYW5kcm9pZC50ZXh0LkxheW91dCRBbGlnbm1lbnQKLWFuZHJvaWQudGV4dC5MYXlvdXQkRGlyZWN0aW9ucwotYW5kcm9pZC50ZXh0LkxheW91dCRFbGxpcHNpemVyCi1hbmRyb2lkLnRleHQuTm9Db3B5U3BhbgotYW5kcm9pZC50ZXh0Lk5vQ29weVNwYW4kQ29uY3JldGUKLWFuZHJvaWQudGV4dC5QYWNrZWRJbnRWZWN0b3IKLWFuZHJvaWQudGV4dC5QYWNrZWRPYmplY3RWZWN0b3IKLWFuZHJvaWQudGV4dC5QYXJjZWxhYmxlU3BhbgogYW5kcm9pZC50ZXh0LlNlbGVjdGlvbgotYW5kcm9pZC50ZXh0LlNlbGVjdGlvbiRFTkQKLWFuZHJvaWQudGV4dC5TZWxlY3Rpb24kU1RBUlQKLWFuZHJvaWQudGV4dC5TcGFuV2F0Y2hlcgotYW5kcm9pZC50ZXh0LlNwYW5uYWJsZQotYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSRGYWN0b3J5Ci1hbmRyb2lkLnRleHQuU3Bhbm5hYmxlU3RyaW5nCiBhbmRyb2lkLnRleHQuU3Bhbm5hYmxlU3RyaW5nQnVpbGRlcgotYW5kcm9pZC50ZXh0LlNwYW5uYWJsZVN0cmluZ0ludGVybmFsCi1hbmRyb2lkLnRleHQuU3Bhbm5lZAogYW5kcm9pZC50ZXh0LlNwYW5uZWRTdHJpbmcKIGFuZHJvaWQudGV4dC5TdGF0aWNMYXlvdXQKLWFuZHJvaWQudGV4dC5TdHlsZWQKLWFuZHJvaWQudGV4dC5UZXh0UGFpbnQKIGFuZHJvaWQudGV4dC5UZXh0VXRpbHMKLWFuZHJvaWQudGV4dC5UZXh0VXRpbHMkMQotYW5kcm9pZC50ZXh0LlRleHRVdGlscyRFbGxpcHNpemVDYWxsYmFjawotYW5kcm9pZC50ZXh0LlRleHRVdGlscyRTaW1wbGVTdHJpbmdTcGxpdHRlcgotYW5kcm9pZC50ZXh0LlRleHRVdGlscyRTdHJpbmdTcGxpdHRlcgotYW5kcm9pZC50ZXh0LlRleHRVdGlscyRUcnVuY2F0ZUF0Ci1hbmRyb2lkLnRleHQuVGV4dFdhdGNoZXIKLWFuZHJvaWQudGV4dC5mb3JtYXQuRGF0ZUZvcm1hdAogYW5kcm9pZC50ZXh0LmZvcm1hdC5EYXRlVXRpbHMKIGFuZHJvaWQudGV4dC5mb3JtYXQuRm9ybWF0dGVyCiBhbmRyb2lkLnRleHQuZm9ybWF0LlRpbWUKIGFuZHJvaWQudGV4dC5tZXRob2QuQXJyb3dLZXlNb3ZlbWVudE1ldGhvZAogYW5kcm9pZC50ZXh0Lm1ldGhvZC5CYXNlS2V5TGlzdGVuZXIKLWFuZHJvaWQudGV4dC5tZXRob2QuS2V5TGlzdGVuZXIKK2FuZHJvaWQudGV4dC5tZXRob2QuRGlhbGVyS2V5TGlzdGVuZXIKK2FuZHJvaWQudGV4dC5tZXRob2QuRGlnaXRzS2V5TGlzdGVuZXIKK2FuZHJvaWQudGV4dC5tZXRob2QuTGlua01vdmVtZW50TWV0aG9kCiBhbmRyb2lkLnRleHQubWV0aG9kLk1ldGFLZXlLZXlMaXN0ZW5lcgotYW5kcm9pZC50ZXh0Lm1ldGhvZC5Nb3ZlbWVudE1ldGhvZAotYW5kcm9pZC50ZXh0Lm1ldGhvZC5OdW1iZXJLZXlMaXN0ZW5lcgotYW5kcm9pZC50ZXh0Lm1ldGhvZC5QYXNzd29yZFRyYW5zZm9ybWF0aW9uTWV0aG9kCi1hbmRyb2lkLnRleHQubWV0aG9kLlBhc3N3b3JkVHJhbnNmb3JtYXRpb25NZXRob2QkUGFzc3dvcmRDaGFyU2VxdWVuY2UKLWFuZHJvaWQudGV4dC5tZXRob2QuUGFzc3dvcmRUcmFuc2Zvcm1hdGlvbk1ldGhvZCRWaWV3UmVmZXJlbmNlCi1hbmRyb2lkLnRleHQubWV0aG9kLlBhc3N3b3JkVHJhbnNmb3JtYXRpb25NZXRob2QkVmlzaWJsZQogYW5kcm9pZC50ZXh0Lm1ldGhvZC5Rd2VydHlLZXlMaXN0ZW5lcgotYW5kcm9pZC50ZXh0Lm1ldGhvZC5Rd2VydHlLZXlMaXN0ZW5lciRSZXBsYWNlZAotYW5kcm9pZC50ZXh0Lm1ldGhvZC5SZXBsYWNlbWVudFRyYW5zZm9ybWF0aW9uTWV0aG9kCi1hbmRyb2lkLnRleHQubWV0aG9kLlJlcGxhY2VtZW50VHJhbnNmb3JtYXRpb25NZXRob2QkUmVwbGFjZW1lbnRDaGFyU2VxdWVuY2UKIGFuZHJvaWQudGV4dC5tZXRob2QuUmVwbGFjZW1lbnRUcmFuc2Zvcm1hdGlvbk1ldGhvZCRTcGFubmVkUmVwbGFjZW1lbnRDaGFyU2VxdWVuY2UKIGFuZHJvaWQudGV4dC5tZXRob2QuU2luZ2xlTGluZVRyYW5zZm9ybWF0aW9uTWV0aG9kCiBhbmRyb2lkLnRleHQubWV0aG9kLlRleHRLZXlMaXN0ZW5lcgotYW5kcm9pZC50ZXh0Lm1ldGhvZC5UZXh0S2V5TGlzdGVuZXIkQ2FwaXRhbGl6ZQotYW5kcm9pZC50ZXh0Lm1ldGhvZC5UZXh0S2V5TGlzdGVuZXIkU2V0dGluZ3NPYnNlcnZlcgotYW5kcm9pZC50ZXh0Lm1ldGhvZC5Ub3VjaAotYW5kcm9pZC50ZXh0Lm1ldGhvZC5Ub3VjaCREcmFnU3RhdGUKLWFuZHJvaWQudGV4dC5tZXRob2QuVHJhbnNmb3JtYXRpb25NZXRob2QKLWFuZHJvaWQudGV4dC5zdHlsZS5BbGlnbm1lbnRTcGFuCi1hbmRyb2lkLnRleHQuc3R5bGUuQ2hhcmFjdGVyU3R5bGUKLWFuZHJvaWQudGV4dC5zdHlsZS5DbGlja2FibGVTcGFuCi1hbmRyb2lkLnRleHQuc3R5bGUuRm9yZWdyb3VuZENvbG9yU3BhbgotYW5kcm9pZC50ZXh0LnN0eWxlLkxlYWRpbmdNYXJnaW5TcGFuCi1hbmRyb2lkLnRleHQuc3R5bGUuTGluZUJhY2tncm91bmRTcGFuCi1hbmRyb2lkLnRleHQuc3R5bGUuTGluZUhlaWdodFNwYW4KK2FuZHJvaWQudGV4dC5zdHlsZS5CdWxsZXRTcGFuCithbmRyb2lkLnRleHQuc3R5bGUuSW1hZ2VTcGFuCiBhbmRyb2lkLnRleHQuc3R5bGUuTWV0cmljQWZmZWN0aW5nU3BhbgotYW5kcm9pZC50ZXh0LnN0eWxlLlBhcmFncmFwaFN0eWxlCi1hbmRyb2lkLnRleHQuc3R5bGUuUmVwbGFjZW1lbnRTcGFuCiBhbmRyb2lkLnRleHQuc3R5bGUuU3R5bGVTcGFuCithbmRyb2lkLnRleHQuc3R5bGUuVGV4dEFwcGVhcmFuY2VTcGFuCiBhbmRyb2lkLnRleHQuc3R5bGUuVVJMU3BhbgotYW5kcm9pZC50ZXh0LnN0eWxlLlVuZGVybGluZVNwYW4KLWFuZHJvaWQudGV4dC5zdHlsZS5VcGRhdGVBcHBlYXJhbmNlCi1hbmRyb2lkLnRleHQuc3R5bGUuVXBkYXRlTGF5b3V0Ci1hbmRyb2lkLnRleHQuc3R5bGUuV3JhcFRvZ2V0aGVyU3BhbgogYW5kcm9pZC50ZXh0LnV0aWwuTGlua2lmeQotYW5kcm9pZC50ZXh0LnV0aWwuTGlua2lmeSQxCi1hbmRyb2lkLnRleHQudXRpbC5MaW5raWZ5JDIKLWFuZHJvaWQudGV4dC51dGlsLkxpbmtpZnkkMwotYW5kcm9pZC50ZXh0LnV0aWwuTGlua2lmeSQ0Ci1hbmRyb2lkLnRleHQudXRpbC5MaW5raWZ5JE1hdGNoRmlsdGVyCi1hbmRyb2lkLnRleHQudXRpbC5MaW5raWZ5JFRyYW5zZm9ybUZpbHRlcgogYW5kcm9pZC50ZXh0LnV0aWwuUmVnZXgKIGFuZHJvaWQudGV4dC51dGlsLlJmYzgyMlZhbGlkYXRvcgotYW5kcm9pZC51dGlsLkFuZHJvaWRFeGNlcHRpb24KLWFuZHJvaWQudXRpbC5BbmRyb2lkUnVudGltZUV4Y2VwdGlvbgogYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldAogYW5kcm9pZC51dGlsLkRpc3BsYXlNZXRyaWNzCiBhbmRyb2lkLnV0aWwuRXZlbnRMb2cKIGFuZHJvaWQudXRpbC5FdmVudExvZyRFdmVudAogYW5kcm9pZC51dGlsLkV2ZW50TG9nJExpc3QKLWFuZHJvaWQudXRpbC5GaW5pdGVQb29sCiBhbmRyb2lkLnV0aWwuRmxvYXRNYXRoCiBhbmRyb2lkLnV0aWwuTG9nCiBhbmRyb2lkLnV0aWwuTG9uZ1NwYXJzZUFycmF5Ci1hbmRyb2lkLnV0aWwuUG9vbAotYW5kcm9pZC51dGlsLlBvb2xhYmxlCi1hbmRyb2lkLnV0aWwuUG9vbGFibGVNYW5hZ2VyCi1hbmRyb2lkLnV0aWwuUG9vbHMKLWFuZHJvaWQudXRpbC5QcmludGVyCiBhbmRyb2lkLnV0aWwuU3BhcnNlQXJyYXkKLWFuZHJvaWQudXRpbC5TcGFyc2VCb29sZWFuQXJyYXkKLWFuZHJvaWQudXRpbC5TcGFyc2VJbnRBcnJheQogYW5kcm9pZC51dGlsLlN0YXRlU2V0Ci1hbmRyb2lkLnV0aWwuU3luY2hyb25pemVkUG9vbAogYW5kcm9pZC51dGlsLlR5cGVkVmFsdWUKIGFuZHJvaWQudXRpbC5YbWwKK2FuZHJvaWQudXRpbC5YbWwkRW5jb2RpbmcKIGFuZHJvaWQudmlldy5BYnNTYXZlZFN0YXRlCi1hbmRyb2lkLnZpZXcuQWJzU2F2ZWRTdGF0ZSQxCi1hbmRyb2lkLnZpZXcuQWJzU2F2ZWRTdGF0ZSQyCi1hbmRyb2lkLnZpZXcuQ29udGV4dE1lbnUKLWFuZHJvaWQudmlldy5Db250ZXh0TWVudSRDb250ZXh0TWVudUluZm8KIGFuZHJvaWQudmlldy5Db250ZXh0VGhlbWVXcmFwcGVyCiBhbmRyb2lkLnZpZXcuRGlzcGxheQotYW5kcm9pZC52aWV3LkRpc3BsYXkkQ29tcGF0aWJsZURpc3BsYXkKIGFuZHJvaWQudmlldy5Gb2N1c0ZpbmRlcgotYW5kcm9pZC52aWV3LkZvY3VzRmluZGVyJDEKIGFuZHJvaWQudmlldy5HZXN0dXJlRGV0ZWN0b3IKLWFuZHJvaWQudmlldy5HZXN0dXJlRGV0ZWN0b3IkR2VzdHVyZUhhbmRsZXIKLWFuZHJvaWQudmlldy5HZXN0dXJlRGV0ZWN0b3IkT25Eb3VibGVUYXBMaXN0ZW5lcgotYW5kcm9pZC52aWV3Lkdlc3R1cmVEZXRlY3RvciRPbkdlc3R1cmVMaXN0ZW5lcgogYW5kcm9pZC52aWV3Lkdlc3R1cmVEZXRlY3RvciRTaW1wbGVPbkdlc3R1cmVMaXN0ZW5lcgotYW5kcm9pZC52aWV3LkdyYXZpdHkKLWFuZHJvaWQudmlldy5JUm90YXRpb25XYXRjaGVyCiBhbmRyb2lkLnZpZXcuSVJvdGF0aW9uV2F0Y2hlciRTdHViCi1hbmRyb2lkLnZpZXcuSVdpbmRvdwotYW5kcm9pZC52aWV3LklXaW5kb3ckU3R1YgotYW5kcm9pZC52aWV3LklXaW5kb3dNYW5hZ2VyCiBhbmRyb2lkLnZpZXcuSVdpbmRvd01hbmFnZXIkU3R1YgogYW5kcm9pZC52aWV3LklXaW5kb3dNYW5hZ2VyJFN0dWIkUHJveHkKLWFuZHJvaWQudmlldy5JV2luZG93U2Vzc2lvbgogYW5kcm9pZC52aWV3LklXaW5kb3dTZXNzaW9uJFN0dWIKLWFuZHJvaWQudmlldy5JV2luZG93U2Vzc2lvbiRTdHViJFByb3h5CiBhbmRyb2lkLnZpZXcuS2V5Q2hhcmFjdGVyTWFwCiBhbmRyb2lkLnZpZXcuS2V5Q2hhcmFjdGVyTWFwJEtleURhdGEKIGFuZHJvaWQudmlldy5LZXlFdmVudAotYW5kcm9pZC52aWV3LktleUV2ZW50JDEKLWFuZHJvaWQudmlldy5LZXlFdmVudCRDYWxsYmFjawogYW5kcm9pZC52aWV3LkxheW91dEluZmxhdGVyCi1hbmRyb2lkLnZpZXcuTGF5b3V0SW5mbGF0ZXIkRmFjdG9yeQotYW5kcm9pZC52aWV3LkxheW91dEluZmxhdGVyJEZpbHRlcgotYW5kcm9pZC52aWV3Lk1lbnUKLWFuZHJvaWQudmlldy5NZW51SW5mbGF0ZXIKIGFuZHJvaWQudmlldy5NZW51SW5mbGF0ZXIkTWVudVN0YXRlCi1hbmRyb2lkLnZpZXcuTWVudUl0ZW0KIGFuZHJvaWQudmlldy5Nb3Rpb25FdmVudAotYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50JDEKIGFuZHJvaWQudmlldy5TdXJmYWNlCiBhbmRyb2lkLnZpZXcuU3VyZmFjZSQxCi1hbmRyb2lkLnZpZXcuU3VyZmFjZSRDb21wYXRpYmxlQ2FudmFzCi1hbmRyb2lkLnZpZXcuU3VyZmFjZUhvbGRlcgotYW5kcm9pZC52aWV3LlN1cmZhY2VIb2xkZXIkQ2FsbGJhY2sKIGFuZHJvaWQudmlldy5TdXJmYWNlU2Vzc2lvbgogYW5kcm9pZC52aWV3LlN1cmZhY2VWaWV3Ci1hbmRyb2lkLnZpZXcuU3VyZmFjZVZpZXckMQotYW5kcm9pZC52aWV3LlN1cmZhY2VWaWV3JDIKLWFuZHJvaWQudmlldy5TdXJmYWNlVmlldyRNeVdpbmRvdwotYW5kcm9pZC52aWV3LlRvdWNoRGVsZWdhdGUKIGFuZHJvaWQudmlldy5WZWxvY2l0eVRyYWNrZXIKLWFuZHJvaWQudmlldy5WZWxvY2l0eVRyYWNrZXIkMQogYW5kcm9pZC52aWV3LlZpZXcKLWFuZHJvaWQudmlldy5WaWV3JEF0dGFjaEluZm8KIGFuZHJvaWQudmlldy5WaWV3JEF0dGFjaEluZm8kQ2FsbGJhY2tzCithbmRyb2lkLnZpZXcuVmlldyRBdHRhY2hJbmZvJEludmFsaWRhdGVJbmZvCiBhbmRyb2lkLnZpZXcuVmlldyRCYXNlU2F2ZWRTdGF0ZQotYW5kcm9pZC52aWV3LlZpZXckQmFzZVNhdmVkU3RhdGUkMQotYW5kcm9pZC52aWV3LlZpZXckQ2hlY2tGb3JMb25nUHJlc3MKLWFuZHJvaWQudmlldy5WaWV3JE1lYXN1cmVTcGVjCi1hbmRyb2lkLnZpZXcuVmlldyRPbkNsaWNrTGlzdGVuZXIKLWFuZHJvaWQudmlldy5WaWV3JE9uQ3JlYXRlQ29udGV4dE1lbnVMaXN0ZW5lcgotYW5kcm9pZC52aWV3LlZpZXckT25Gb2N1c0NoYW5nZUxpc3RlbmVyCi1hbmRyb2lkLnZpZXcuVmlldyRPbktleUxpc3RlbmVyCi1hbmRyb2lkLnZpZXcuVmlldyRPbkxvbmdDbGlja0xpc3RlbmVyCi1hbmRyb2lkLnZpZXcuVmlldyRPblRvdWNoTGlzdGVuZXIKLWFuZHJvaWQudmlldy5WaWV3JFNjcm9sbGFiaWxpdHlDYWNoZQotYW5kcm9pZC52aWV3LlZpZXckVW5zZXRQcmVzc2VkU3RhdGUKLWFuZHJvaWQudmlldy5WaWV3Q29uZmlndXJhdGlvbgogYW5kcm9pZC52aWV3LlZpZXdHcm91cAotYW5kcm9pZC52aWV3LlZpZXdHcm91cCRMYXlvdXRQYXJhbXMKLWFuZHJvaWQudmlldy5WaWV3R3JvdXAkTWFyZ2luTGF5b3V0UGFyYW1zCi1hbmRyb2lkLnZpZXcuVmlld0dyb3VwJE9uSGllcmFyY2h5Q2hhbmdlTGlzdGVuZXIKLWFuZHJvaWQudmlldy5WaWV3TWFuYWdlcgogYW5kcm9pZC52aWV3LlZpZXdQYXJlbnQKIGFuZHJvaWQudmlldy5WaWV3Um9vdAotYW5kcm9pZC52aWV3LlZpZXdSb290JDEKLWFuZHJvaWQudmlldy5WaWV3Um9vdCRJbnB1dE1ldGhvZENhbGxiYWNrCi1hbmRyb2lkLnZpZXcuVmlld1Jvb3QkUnVuUXVldWUKLWFuZHJvaWQudmlldy5WaWV3Um9vdCRSdW5RdWV1ZSRIYW5kbGVyQWN0aW9uCi1hbmRyb2lkLnZpZXcuVmlld1Jvb3QkVHJhY2tiYWxsQXhpcwotYW5kcm9pZC52aWV3LlZpZXdSb290JFcKLWFuZHJvaWQudmlldy5WaWV3VHJlZU9ic2VydmVyCi1hbmRyb2lkLnZpZXcuVmlld1RyZWVPYnNlcnZlciRJbnRlcm5hbEluc2V0c0luZm8KLWFuZHJvaWQudmlldy5WaWV3VHJlZU9ic2VydmVyJE9uR2xvYmFsRm9jdXNDaGFuZ2VMaXN0ZW5lcgotYW5kcm9pZC52aWV3LlZpZXdUcmVlT2JzZXJ2ZXIkT25HbG9iYWxMYXlvdXRMaXN0ZW5lcgotYW5kcm9pZC52aWV3LlZpZXdUcmVlT2JzZXJ2ZXIkT25QcmVEcmF3TGlzdGVuZXIKLWFuZHJvaWQudmlldy5WaWV3VHJlZU9ic2VydmVyJE9uU2Nyb2xsQ2hhbmdlZExpc3RlbmVyCi1hbmRyb2lkLnZpZXcuVmlld1RyZWVPYnNlcnZlciRPblRvdWNoTW9kZUNoYW5nZUxpc3RlbmVyCithbmRyb2lkLnZpZXcuVmlld1N0dWIKIGFuZHJvaWQudmlldy5XaW5kb3cKLWFuZHJvaWQudmlldy5XaW5kb3ckQ2FsbGJhY2sKLWFuZHJvaWQudmlldy5XaW5kb3ckTG9jYWxXaW5kb3dNYW5hZ2VyCi1hbmRyb2lkLnZpZXcuV2luZG93TGVha2VkCi1hbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlcgogYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXIkTGF5b3V0UGFyYW1zCi1hbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlciRMYXlvdXRQYXJhbXMkMQogYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXJJbXBsCiBhbmRyb2lkLnZpZXcuYWNjZXNzaWJpbGl0eS5BY2Nlc3NpYmlsaXR5RXZlbnQKIGFuZHJvaWQudmlldy5hY2Nlc3NpYmlsaXR5LkFjY2Vzc2liaWxpdHlFdmVudCQxCi1hbmRyb2lkLnZpZXcuYWNjZXNzaWJpbGl0eS5BY2Nlc3NpYmlsaXR5RXZlbnRTb3VyY2UKLWFuZHJvaWQudmlldy5hY2Nlc3NpYmlsaXR5LkFjY2Vzc2liaWxpdHlNYW5hZ2VyCi1hbmRyb2lkLnZpZXcuYWNjZXNzaWJpbGl0eS5BY2Nlc3NpYmlsaXR5TWFuYWdlciQxCi1hbmRyb2lkLnZpZXcuYWNjZXNzaWJpbGl0eS5BY2Nlc3NpYmlsaXR5TWFuYWdlciRNeUhhbmRsZXIKLWFuZHJvaWQudmlldy5hY2Nlc3NpYmlsaXR5LklBY2Nlc3NpYmlsaXR5TWFuYWdlcgotYW5kcm9pZC52aWV3LmFjY2Vzc2liaWxpdHkuSUFjY2Vzc2liaWxpdHlNYW5hZ2VyJFN0dWIKLWFuZHJvaWQudmlldy5hY2Nlc3NpYmlsaXR5LklBY2Nlc3NpYmlsaXR5TWFuYWdlciRTdHViJFByb3h5Ci1hbmRyb2lkLnZpZXcuYWNjZXNzaWJpbGl0eS5JQWNjZXNzaWJpbGl0eU1hbmFnZXJDbGllbnQKLWFuZHJvaWQudmlldy5hY2Nlc3NpYmlsaXR5LklBY2Nlc3NpYmlsaXR5TWFuYWdlckNsaWVudCRTdHViCi1hbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFjY2VsZXJhdGVEZWNlbGVyYXRlSW50ZXJwb2xhdG9yCi1hbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFjY2VsZXJhdGVJbnRlcnBvbGF0b3IKLWFuZHJvaWQudmlldy5hbmltYXRpb24uQWxwaGFBbmltYXRpb24KIGFuZHJvaWQudmlldy5hbmltYXRpb24uQW5pbWF0aW9uCi1hbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFuaW1hdGlvbiRBbmltYXRpb25MaXN0ZW5lcgotYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5BbmltYXRpb24kRGVzY3JpcHRpb24KIGFuZHJvaWQudmlldy5hbmltYXRpb24uQW5pbWF0aW9uU2V0Ci1hbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFuaW1hdGlvblV0aWxzCi1hbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkludGVycG9sYXRvcgotYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5MYXlvdXRBbmltYXRpb25Db250cm9sbGVyCi1hbmRyb2lkLnZpZXcuYW5pbWF0aW9uLlNjYWxlQW5pbWF0aW9uCi1hbmRyb2lkLnZpZXcuYW5pbWF0aW9uLlRyYW5zZm9ybWF0aW9uCi1hbmRyb2lkLnZpZXcuYW5pbWF0aW9uLlRyYW5zbGF0ZUFuaW1hdGlvbgogYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLkJhc2VJbnB1dENvbm5lY3Rpb24KIGFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5Db21wbGV0aW9uSW5mbwotYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLkNvbXBsZXRpb25JbmZvJDEKLWFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5Db21wb3NpbmdUZXh0CiBhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuRWRpdG9ySW5mbwotYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLkVkaXRvckluZm8kMQogYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLkV4dHJhY3RlZFRleHQKLWFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5FeHRyYWN0ZWRUZXh0JDEKLWFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5FeHRyYWN0ZWRUZXh0UmVxdWVzdAotYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLkV4dHJhY3RlZFRleHRSZXF1ZXN0JDEKLWFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5JbnB1dENvbm5lY3Rpb24KLWFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5JbnB1dENvbm5lY3Rpb25XcmFwcGVyCithbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuSW5wdXRNZXRob2RJbmZvCiBhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuSW5wdXRNZXRob2RNYW5hZ2VyCiBhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuSW5wdXRNZXRob2RNYW5hZ2VyJDEKLWFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5JbnB1dE1ldGhvZE1hbmFnZXIkQ29udHJvbGxlZElucHV0Q29ubmVjdGlvbldyYXBwZXIKLWFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5JbnB1dE1ldGhvZE1hbmFnZXIkSAogYW5kcm9pZC53ZWJraXQuQnJvd3NlckZyYW1lCi1hbmRyb2lkLndlYmtpdC5CeXRlQXJyYXlCdWlsZGVyCi1hbmRyb2lkLndlYmtpdC5CeXRlQXJyYXlCdWlsZGVyJENodW5rCithbmRyb2lkLndlYmtpdC5DYWNoZUxvYWRlcgogYW5kcm9pZC53ZWJraXQuQ2FjaGVNYW5hZ2VyCiBhbmRyb2lkLndlYmtpdC5DYWxsYmFja1Byb3h5CithbmRyb2lkLndlYmtpdC5DYWxsYmFja1Byb3h5JFJlc3VsdFRyYW5zcG9ydAogYW5kcm9pZC53ZWJraXQuQ29va2llTWFuYWdlcgogYW5kcm9pZC53ZWJraXQuQ29va2llU3luY01hbmFnZXIKIGFuZHJvaWQud2Via2l0LkRhdGFMb2FkZXIKLWFuZHJvaWQud2Via2l0LkZyYW1lTG9hZGVyCi1hbmRyb2lkLndlYmtpdC5IdHRwQXV0aEhhbmRsZXIKK2FuZHJvaWQud2Via2l0LkdlYXJzUGVybWlzc2lvbnNNYW5hZ2VyCiBhbmRyb2lkLndlYmtpdC5IdHRwRGF0ZVRpbWUKIGFuZHJvaWQud2Via2l0LkpXZWJDb3JlSmF2YUJyaWRnZQogYW5kcm9pZC53ZWJraXQuTG9hZExpc3RlbmVyCi1hbmRyb2lkLndlYmtpdC5Mb2FkTGlzdGVuZXIkMQogYW5kcm9pZC53ZWJraXQuTWltZVR5cGVNYXAKLWFuZHJvaWQud2Via2l0LlBlcmZDaGVja2VyCi1hbmRyb2lkLndlYmtpdC5Tc2xFcnJvckhhbmRsZXIKLWFuZHJvaWQud2Via2l0LlN0cmVhbUxvYWRlcgogYW5kcm9pZC53ZWJraXQuVGV4dERpYWxvZwogYW5kcm9pZC53ZWJraXQuVVJMVXRpbAotYW5kcm9pZC53ZWJraXQuV2ViQmFja0ZvcndhcmRMaXN0Ci1hbmRyb2lkLndlYmtpdC5XZWJIaXN0b3J5SXRlbQotYW5kcm9pZC53ZWJraXQuV2ViSWNvbkRhdGFiYXNlCi1hbmRyb2lkLndlYmtpdC5XZWJJY29uRGF0YWJhc2UkRXZlbnRIYW5kbGVyCi1hbmRyb2lkLndlYmtpdC5XZWJJY29uRGF0YWJhc2UkRXZlbnRIYW5kbGVyJDEKK2FuZHJvaWQud2Via2l0LldlYkljb25EYXRhYmFzZSRJY29uTGlzdGVuZXIKIGFuZHJvaWQud2Via2l0LldlYlNldHRpbmdzCi1hbmRyb2lkLndlYmtpdC5XZWJTZXR0aW5ncyRFdmVudEhhbmRsZXIKLWFuZHJvaWQud2Via2l0LldlYlNldHRpbmdzJEV2ZW50SGFuZGxlciQxCi1hbmRyb2lkLndlYmtpdC5XZWJTZXR0aW5ncyRMYXlvdXRBbGdvcml0aG0KLWFuZHJvaWQud2Via2l0LldlYlNldHRpbmdzJFJlbmRlclByaW9yaXR5CiBhbmRyb2lkLndlYmtpdC5XZWJTZXR0aW5ncyRUZXh0U2l6ZQotYW5kcm9pZC53ZWJraXQuV2ViU2V0dGluZ3MkWm9vbURlbnNpdHkKLWFuZHJvaWQud2Via2l0LldlYlN5bmNNYW5hZ2VyCi1hbmRyb2lkLndlYmtpdC5XZWJTeW5jTWFuYWdlciRTeW5jSGFuZGxlcgogYW5kcm9pZC53ZWJraXQuV2ViVmlldwotYW5kcm9pZC53ZWJraXQuV2ViVmlldyQxCi1hbmRyb2lkLndlYmtpdC5XZWJWaWV3JDIKLWFuZHJvaWQud2Via2l0LldlYlZpZXckRm9jdXNOb2RlCiBhbmRyb2lkLndlYmtpdC5XZWJWaWV3JEhpdFRlc3RSZXN1bHQKLWFuZHJvaWQud2Via2l0LldlYlZpZXckUHJpdmF0ZUhhbmRsZXIKIGFuZHJvaWQud2Via2l0LldlYlZpZXdDb3JlCi1hbmRyb2lkLndlYmtpdC5XZWJWaWV3Q29yZSREcmF3RGF0YQotYW5kcm9pZC53ZWJraXQuV2ViVmlld0NvcmUkRXZlbnRIdWIKLWFuZHJvaWQud2Via2l0LldlYlZpZXdDb3JlJEV2ZW50SHViJDEKLWFuZHJvaWQud2Via2l0LldlYlZpZXdDb3JlJEZvY3VzRGF0YQotYW5kcm9pZC53ZWJraXQuV2ViVmlld0NvcmUkV2ViQ29yZVRocmVhZAotYW5kcm9pZC53ZWJraXQuV2ViVmlld0NvcmUkV2ViQ29yZVRocmVhZCQxCiBhbmRyb2lkLndlYmtpdC5XZWJWaWV3RGF0YWJhc2UKK2FuZHJvaWQud2Via2l0LmdlYXJzLkFwYWNoZUh0dHBSZXF1ZXN0QW5kcm9pZAorYW5kcm9pZC53ZWJraXQuZ2VhcnMuQXBhY2hlSHR0cFJlcXVlc3RBbmRyb2lkJEJ1ZmZlcgorYW5kcm9pZC53ZWJraXQuZ2VhcnMuTmF0aXZlRGlhbG9nCiBhbmRyb2lkLndpZGdldC5BYnNMaXN0VmlldwotYW5kcm9pZC53aWRnZXQuQWJzTGlzdFZpZXckMQotYW5kcm9pZC53aWRnZXQuQWJzTGlzdFZpZXckMgogYW5kcm9pZC53aWRnZXQuQWJzTGlzdFZpZXckMwotYW5kcm9pZC53aWRnZXQuQWJzTGlzdFZpZXckQ2hlY2tGb3JMb25nUHJlc3MKLWFuZHJvaWQud2lkZ2V0LkFic0xpc3RWaWV3JENoZWNrRm9yVGFwCi1hbmRyb2lkLndpZGdldC5BYnNMaXN0VmlldyRGbGluZ1J1bm5hYmxlCi1hbmRyb2lkLndpZGdldC5BYnNMaXN0VmlldyRMYXlvdXRQYXJhbXMKLWFuZHJvaWQud2lkZ2V0LkFic0xpc3RWaWV3JE9uU2Nyb2xsTGlzdGVuZXIKIGFuZHJvaWQud2lkZ2V0LkFic0xpc3RWaWV3JFBlcmZvcm1DbGljawotYW5kcm9pZC53aWRnZXQuQWJzTGlzdFZpZXckUmVjeWNsZUJpbgotYW5kcm9pZC53aWRnZXQuQWJzTGlzdFZpZXckUmVjeWNsZXJMaXN0ZW5lcgogYW5kcm9pZC53aWRnZXQuQWJzTGlzdFZpZXckU2F2ZWRTdGF0ZQotYW5kcm9pZC53aWRnZXQuQWJzTGlzdFZpZXckU2F2ZWRTdGF0ZSQxCi1hbmRyb2lkLndpZGdldC5BYnNMaXN0VmlldyRXaW5kb3dSdW5ubmFibGUKIGFuZHJvaWQud2lkZ2V0LkFic1NlZWtCYXIKIGFuZHJvaWQud2lkZ2V0LkFic1NwaW5uZXIKLWFuZHJvaWQud2lkZ2V0LkFic1NwaW5uZXIkUmVjeWNsZUJpbgogYW5kcm9pZC53aWRnZXQuQWJzU3Bpbm5lciRTYXZlZFN0YXRlCi1hbmRyb2lkLndpZGdldC5BYnNTcGlubmVyJFNhdmVkU3RhdGUkMQogYW5kcm9pZC53aWRnZXQuQWJzb2x1dGVMYXlvdXQKLWFuZHJvaWQud2lkZ2V0LkFkYXB0ZXIKIGFuZHJvaWQud2lkZ2V0LkFkYXB0ZXJWaWV3Ci1hbmRyb2lkLndpZGdldC5BZGFwdGVyVmlldyRBZGFwdGVyRGF0YVNldE9ic2VydmVyCi1hbmRyb2lkLndpZGdldC5BZGFwdGVyVmlldyRPbkl0ZW1DbGlja0xpc3RlbmVyCi1hbmRyb2lkLndpZGdldC5BZGFwdGVyVmlldyRPbkl0ZW1Mb25nQ2xpY2tMaXN0ZW5lcgotYW5kcm9pZC53aWRnZXQuQWRhcHRlclZpZXckT25JdGVtU2VsZWN0ZWRMaXN0ZW5lcgogYW5kcm9pZC53aWRnZXQuQW5hbG9nQ2xvY2sKIGFuZHJvaWQud2lkZ2V0LkFwcFNlY3VyaXR5UGVybWlzc2lvbnMKK2FuZHJvaWQud2lkZ2V0LkFwcFNlY3VyaXR5UGVybWlzc2lvbnMkU3RhdGUKIGFuZHJvaWQud2lkZ2V0LkFycmF5QWRhcHRlcgogYW5kcm9pZC53aWRnZXQuQXV0b0NvbXBsZXRlVGV4dFZpZXcKLWFuZHJvaWQud2lkZ2V0LkF1dG9Db21wbGV0ZVRleHRWaWV3JDEKLWFuZHJvaWQud2lkZ2V0LkF1dG9Db21wbGV0ZVRleHRWaWV3JDIKLWFuZHJvaWQud2lkZ2V0LkF1dG9Db21wbGV0ZVRleHRWaWV3JERyb3BEb3duSXRlbUNsaWNrTGlzdGVuZXIKIGFuZHJvaWQud2lkZ2V0LkF1dG9Db21wbGV0ZVRleHRWaWV3JERyb3BEb3duTGlzdFZpZXcKLWFuZHJvaWQud2lkZ2V0LkF1dG9Db21wbGV0ZVRleHRWaWV3JExpc3RTZWxlY3RvckhpZGVyCi1hbmRyb2lkLndpZGdldC5BdXRvQ29tcGxldGVUZXh0VmlldyRNeVdhdGNoZXIKLWFuZHJvaWQud2lkZ2V0LkF1dG9Db21wbGV0ZVRleHRWaWV3JFBhc3NUaHJvdWdoQ2xpY2tMaXN0ZW5lcgotYW5kcm9pZC53aWRnZXQuQXV0b0NvbXBsZXRlVGV4dFZpZXckUG9wdXBUb3VjaEludGVyY2VwdGVyCi1hbmRyb2lkLndpZGdldC5BdXRvQ29tcGxldGVUZXh0VmlldyRWYWxpZGF0b3IKIGFuZHJvaWQud2lkZ2V0LkJhc2VBZGFwdGVyCi1hbmRyb2lkLndpZGdldC5CdXR0b24KK2FuZHJvaWQud2lkZ2V0LkJhc2VFeHBhbmRhYmxlTGlzdEFkYXB0ZXIKIGFuZHJvaWQud2lkZ2V0LkNoZWNrQm94Ci1hbmRyb2lkLndpZGdldC5DaGVja2FibGUKIGFuZHJvaWQud2lkZ2V0LkNoZWNrZWRUZXh0VmlldwogYW5kcm9pZC53aWRnZXQuQ2hyb25vbWV0ZXIKIGFuZHJvaWQud2lkZ2V0LkNvbXBvdW5kQnV0dG9uCi1hbmRyb2lkLndpZGdldC5Db21wb3VuZEJ1dHRvbiRPbkNoZWNrZWRDaGFuZ2VMaXN0ZW5lcgogYW5kcm9pZC53aWRnZXQuQ29tcG91bmRCdXR0b24kU2F2ZWRTdGF0ZQotYW5kcm9pZC53aWRnZXQuQ29tcG91bmRCdXR0b24kU2F2ZWRTdGF0ZSQxCiBhbmRyb2lkLndpZGdldC5DdXJzb3JBZGFwdGVyCi1hbmRyb2lkLndpZGdldC5DdXJzb3JBZGFwdGVyJENoYW5nZU9ic2VydmVyCi1hbmRyb2lkLndpZGdldC5DdXJzb3JBZGFwdGVyJE15RGF0YVNldE9ic2VydmVyCi1hbmRyb2lkLndpZGdldC5DdXJzb3JGaWx0ZXIKLWFuZHJvaWQud2lkZ2V0LkN1cnNvckZpbHRlciRDdXJzb3JGaWx0ZXJDbGllbnQKIGFuZHJvaWQud2lkZ2V0LkN1cnNvclRyZWVBZGFwdGVyCiBhbmRyb2lkLndpZGdldC5EYXRlUGlja2VyCiBhbmRyb2lkLndpZGdldC5FZGl0VGV4dAogYW5kcm9pZC53aWRnZXQuRXhwYW5kYWJsZUxpc3RDb25uZWN0b3IKK2FuZHJvaWQud2lkZ2V0LkV4cGFuZGFibGVMaXN0Q29ubmVjdG9yJEdyb3VwTWV0YWRhdGEKIGFuZHJvaWQud2lkZ2V0LkV4cGFuZGFibGVMaXN0VmlldwogYW5kcm9pZC53aWRnZXQuRmFzdFNjcm9sbGVyCi1hbmRyb2lkLndpZGdldC5GaWx0ZXIKLWFuZHJvaWQud2lkZ2V0LkZpbHRlciRGaWx0ZXJMaXN0ZW5lcgotYW5kcm9pZC53aWRnZXQuRmlsdGVyJEZpbHRlclJlc3VsdHMKLWFuZHJvaWQud2lkZ2V0LkZpbHRlciRSZXF1ZXN0QXJndW1lbnRzCi1hbmRyb2lkLndpZGdldC5GaWx0ZXIkUmVxdWVzdEhhbmRsZXIKLWFuZHJvaWQud2lkZ2V0LkZpbHRlciRSZXN1bHRzSGFuZGxlcgotYW5kcm9pZC53aWRnZXQuRmlsdGVyUXVlcnlQcm92aWRlcgotYW5kcm9pZC53aWRnZXQuRmlsdGVyYWJsZQogYW5kcm9pZC53aWRnZXQuRnJhbWVMYXlvdXQKLWFuZHJvaWQud2lkZ2V0LkZyYW1lTGF5b3V0JExheW91dFBhcmFtcwogYW5kcm9pZC53aWRnZXQuR2FsbGVyeQogYW5kcm9pZC53aWRnZXQuR3JpZFZpZXcKIGFuZHJvaWQud2lkZ2V0LkhlYWRlclZpZXdMaXN0QWRhcHRlcgotYW5kcm9pZC53aWRnZXQuSW1hZ2VCdXR0b24KIGFuZHJvaWQud2lkZ2V0LkltYWdlVmlldwogYW5kcm9pZC53aWRnZXQuSW1hZ2VWaWV3JFNjYWxlVHlwZQogYW5kcm9pZC53aWRnZXQuTGluZWFyTGF5b3V0Ci1hbmRyb2lkLndpZGdldC5MaW5lYXJMYXlvdXQkTGF5b3V0UGFyYW1zCi1hbmRyb2lkLndpZGdldC5MaXN0QWRhcHRlcgogYW5kcm9pZC53aWRnZXQuTGlzdFZpZXcKLWFuZHJvaWQud2lkZ2V0Lkxpc3RWaWV3JEFycm93U2Nyb2xsRm9jdXNSZXN1bHQKLWFuZHJvaWQud2lkZ2V0Lkxpc3RWaWV3JEZpeGVkVmlld0luZm8KIGFuZHJvaWQud2lkZ2V0Lkxpc3RWaWV3JFNhdmVkU3RhdGUKLWFuZHJvaWQud2lkZ2V0Lkxpc3RWaWV3JFNhdmVkU3RhdGUkMQogYW5kcm9pZC53aWRnZXQuTWVkaWFDb250cm9sbGVyCiBhbmRyb2lkLndpZGdldC5NdWx0aUF1dG9Db21wbGV0ZVRleHRWaWV3CiBhbmRyb2lkLndpZGdldC5Qb3B1cFdpbmRvdwotYW5kcm9pZC53aWRnZXQuUG9wdXBXaW5kb3ckMQogYW5kcm9pZC53aWRnZXQuUG9wdXBXaW5kb3ckUG9wdXBWaWV3Q29udGFpbmVyCiBhbmRyb2lkLndpZGdldC5Qcm9ncmVzc0JhcgogYW5kcm9pZC53aWRnZXQuUHJvZ3Jlc3NCYXIkU2F2ZWRTdGF0ZQotYW5kcm9pZC53aWRnZXQuUHJvZ3Jlc3NCYXIkU2F2ZWRTdGF0ZSQxCithbmRyb2lkLndpZGdldC5SYWRpb0J1dHRvbgogYW5kcm9pZC53aWRnZXQuUmFkaW9Hcm91cAogYW5kcm9pZC53aWRnZXQuUmF0aW5nQmFyCiBhbmRyb2lkLndpZGdldC5SZWxhdGl2ZUxheW91dAotYW5kcm9pZC53aWRnZXQuUmVsYXRpdmVMYXlvdXQkRGVwZW5kZW5jeUdyYXBoCiBhbmRyb2lkLndpZGdldC5SZWxhdGl2ZUxheW91dCREZXBlbmRlbmN5R3JhcGgkTm9kZQotYW5kcm9pZC53aWRnZXQuUmVsYXRpdmVMYXlvdXQkRGVwZW5kZW5jeUdyYXBoJE5vZGUkMQotYW5kcm9pZC53aWRnZXQuUmVsYXRpdmVMYXlvdXQkTGF5b3V0UGFyYW1zCiBhbmRyb2lkLndpZGdldC5SZW1vdGVWaWV3cwotYW5kcm9pZC53aWRnZXQuUmVtb3RlVmlld3MkMQotYW5kcm9pZC53aWRnZXQuUmVtb3RlVmlld3MkQWN0aW9uCi1hbmRyb2lkLndpZGdldC5SZW1vdGVWaWV3cyRSZWZsZWN0aW9uQWN0aW9uCi1hbmRyb2lkLndpZGdldC5SZW1vdGVWaWV3cyRTZXRPbkNsaWNrUGVuZGluZ0ludGVudAogYW5kcm9pZC53aWRnZXQuUmVzb3VyY2VDdXJzb3JBZGFwdGVyCithbmRyb2lkLndpZGdldC5SZXNvdXJjZUN1cnNvclRyZWVBZGFwdGVyCiBhbmRyb2lkLndpZGdldC5TY3JvbGxCYXJEcmF3YWJsZQogYW5kcm9pZC53aWRnZXQuU2Nyb2xsVmlldwotYW5kcm9pZC53aWRnZXQuU2Nyb2xsZXIKIGFuZHJvaWQud2lkZ2V0LlNlZWtCYXIKLWFuZHJvaWQud2lkZ2V0LlNlZWtCYXIkT25TZWVrQmFyQ2hhbmdlTGlzdGVuZXIKK2FuZHJvaWQud2lkZ2V0LlNpbXBsZUFkYXB0ZXIKIGFuZHJvaWQud2lkZ2V0LlNpbXBsZUN1cnNvckFkYXB0ZXIKK2FuZHJvaWQud2lkZ2V0LlNpbXBsZUN1cnNvclRyZWVBZGFwdGVyCiBhbmRyb2lkLndpZGdldC5TbGlkaW5nRHJhd2VyCiBhbmRyb2lkLndpZGdldC5TcGlubmVyCi1hbmRyb2lkLndpZGdldC5TcGlubmVyQWRhcHRlcgorYW5kcm9pZC53aWRnZXQuU3Bpbm5lciREcm9wRG93bkFkYXB0ZXIKIGFuZHJvaWQud2lkZ2V0LlRhYkhvc3QKLWFuZHJvaWQud2lkZ2V0LlRhYkhvc3QkMQotYW5kcm9pZC53aWRnZXQuVGFiSG9zdCQyCi1hbmRyb2lkLndpZGdldC5UYWJIb3N0JENvbnRlbnRTdHJhdGVneQotYW5kcm9pZC53aWRnZXQuVGFiSG9zdCRJbmRpY2F0b3JTdHJhdGVneQotYW5kcm9pZC53aWRnZXQuVGFiSG9zdCRJbnRlbnRDb250ZW50U3RyYXRlZ3kKLWFuZHJvaWQud2lkZ2V0LlRhYkhvc3QkTGFiZWxBbmRJY29uSW5kaWNhdG9yU3RyYXRlZ3kKLWFuZHJvaWQud2lkZ2V0LlRhYkhvc3QkT25UYWJDaGFuZ2VMaXN0ZW5lcgotYW5kcm9pZC53aWRnZXQuVGFiSG9zdCRUYWJTcGVjCi1hbmRyb2lkLndpZGdldC5UYWJIb3N0JFZpZXdJbmRpY2F0b3JTdHJhdGVneQogYW5kcm9pZC53aWRnZXQuVGFiV2lkZ2V0Ci1hbmRyb2lkLndpZGdldC5UYWJXaWRnZXQkT25UYWJTZWxlY3Rpb25DaGFuZ2VkCi1hbmRyb2lkLndpZGdldC5UYWJXaWRnZXQkVGFiQ2xpY2tMaXN0ZW5lcgogYW5kcm9pZC53aWRnZXQuVGFibGVMYXlvdXQKLWFuZHJvaWQud2lkZ2V0LlRhYmxlTGF5b3V0JExheW91dFBhcmFtcwotYW5kcm9pZC53aWRnZXQuVGFibGVMYXlvdXQkUGFzc1Rocm91Z2hIaWVyYXJjaHlDaGFuZ2VMaXN0ZW5lcgogYW5kcm9pZC53aWRnZXQuVGFibGVSb3cKLWFuZHJvaWQud2lkZ2V0LlRhYmxlUm93JENoaWxkcmVuVHJhY2tlcgotYW5kcm9pZC53aWRnZXQuVGFibGVSb3ckTGF5b3V0UGFyYW1zCiBhbmRyb2lkLndpZGdldC5UZXh0VmlldwotYW5kcm9pZC53aWRnZXQuVGV4dFZpZXckMgotYW5kcm9pZC53aWRnZXQuVGV4dFZpZXckMwotYW5kcm9pZC53aWRnZXQuVGV4dFZpZXckQmxpbmsKIGFuZHJvaWQud2lkZ2V0LlRleHRWaWV3JEJ1ZmZlclR5cGUKLWFuZHJvaWQud2lkZ2V0LlRleHRWaWV3JENoYW5nZVdhdGNoZXIKLWFuZHJvaWQud2lkZ2V0LlRleHRWaWV3JENoYXJXcmFwcGVyCi1hbmRyb2lkLndpZGdldC5UZXh0VmlldyREcmF3YWJsZXMKLWFuZHJvaWQud2lkZ2V0LlRleHRWaWV3JElucHV0Q29udGVudFR5cGUKLWFuZHJvaWQud2lkZ2V0LlRleHRWaWV3JElucHV0TWV0aG9kU3RhdGUKLWFuZHJvaWQud2lkZ2V0LlRleHRWaWV3JE9uRWRpdG9yQWN0aW9uTGlzdGVuZXIKK2FuZHJvaWQud2lkZ2V0LlRleHRWaWV3JENvbW1pdFNlbGVjdGlvblJlY2VpdmVyCiBhbmRyb2lkLndpZGdldC5UZXh0VmlldyRTYXZlZFN0YXRlCi1hbmRyb2lkLndpZGdldC5UZXh0VmlldyRTYXZlZFN0YXRlJDEKIGFuZHJvaWQud2lkZ2V0LlRpbWVQaWNrZXIKK2FuZHJvaWQud2lkZ2V0LlRpbWVQaWNrZXIkU2F2ZWRTdGF0ZQogYW5kcm9pZC53aWRnZXQuVG9hc3QKIGFuZHJvaWQud2lkZ2V0LlRvYXN0JFROCi1hbmRyb2lkLndpZGdldC5Ub2FzdCRUTiQxCi1hbmRyb2lkLndpZGdldC5Ub2FzdCRUTiQyCithbmRyb2lkLndpZGdldC5Ud29MaW5lTGlzdEl0ZW0KIGFuZHJvaWQud2lkZ2V0LlZpZGVvVmlldwogYW5kcm9pZC53aWRnZXQuVmlld0FuaW1hdG9yCiBhbmRyb2lkLndpZGdldC5WaWV3U3dpdGNoZXIKLWFuZHJvaWQud2lkZ2V0LldyYXBwZXJMaXN0QWRhcHRlcgogYW5kcm9pZC53aWRnZXQuWm9vbUJ1dHRvbgotYW5kcm9pZC53aWRnZXQuWm9vbUJ1dHRvbiQxCiBhbmRyb2lkLndpZGdldC5ab29tQnV0dG9uc0NvbnRyb2xsZXIKLWFuZHJvaWQud2lkZ2V0Llpvb21CdXR0b25zQ29udHJvbGxlciQxCi1hbmRyb2lkLndpZGdldC5ab29tQnV0dG9uc0NvbnRyb2xsZXIkMgotYW5kcm9pZC53aWRnZXQuWm9vbUJ1dHRvbnNDb250cm9sbGVyJDMKLWFuZHJvaWQud2lkZ2V0Llpvb21CdXR0b25zQ29udHJvbGxlciQ0Ci1hbmRyb2lkLndpZGdldC5ab29tQnV0dG9uc0NvbnRyb2xsZXIkQ29udGFpbmVyCi1hbmRyb2lkLndpZGdldC5ab29tQnV0dG9uc0NvbnRyb2xsZXIkT25ab29tTGlzdGVuZXIKIGFuZHJvaWQud2lkZ2V0Llpvb21Db250cm9scwogY29tLmFuZHJvaWQuaW50ZXJuYWwuUiRkcmF3YWJsZQogY29tLmFuZHJvaWQuaW50ZXJuYWwuUiRzdHlsZWFibGUKIGNvbS5hbmRyb2lkLmludGVybmFsLmFwcC5BbGVydEFjdGl2aXR5CiBjb20uYW5kcm9pZC5pbnRlcm5hbC5hcHAuQWxlcnRDb250cm9sbGVyCi1jb20uYW5kcm9pZC5pbnRlcm5hbC5hcHAuQWxlcnRDb250cm9sbGVyJDEKIGNvbS5hbmRyb2lkLmludGVybmFsLmFwcC5BbGVydENvbnRyb2xsZXIkQWxlcnRQYXJhbXMKLWNvbS5hbmRyb2lkLmludGVybmFsLmFwcC5BbGVydENvbnRyb2xsZXIkQWxlcnRQYXJhbXMkMwotY29tLmFuZHJvaWQuaW50ZXJuYWwuYXBwLkFsZXJ0Q29udHJvbGxlciRCdXR0b25IYW5kbGVyCitjb20uYW5kcm9pZC5pbnRlcm5hbC5hcHAuQWxlcnRDb250cm9sbGVyJEFsZXJ0UGFyYW1zJDEKIGNvbS5hbmRyb2lkLmludGVybmFsLmFwcC5BbGVydENvbnRyb2xsZXIkUmVjeWNsZUxpc3RWaWV3CiBjb20uYW5kcm9pZC5pbnRlcm5hbC5hcHAuQ2hvb3NlckFjdGl2aXR5CiBjb20uYW5kcm9pZC5pbnRlcm5hbC5hcHAuUmVzb2x2ZXJBY3Rpdml0eQorY29tLmFuZHJvaWQuaW50ZXJuYWwuYXBwLlJlc29sdmVyQWN0aXZpdHkkUmVzb2x2ZUxpc3RBZGFwdGVyCiBjb20uYW5kcm9pZC5pbnRlcm5hbC5hcHAuUmluZ3RvbmVQaWNrZXJBY3Rpdml0eQotY29tLmFuZHJvaWQuaW50ZXJuYWwuYXBwd2lkZ2V0LklBcHBXaWRnZXRTZXJ2aWNlCitjb20uYW5kcm9pZC5pbnRlcm5hbC5hcHB3aWRnZXQuSUFwcFdpZGdldEhvc3QkU3R1YgogY29tLmFuZHJvaWQuaW50ZXJuYWwuYXBwd2lkZ2V0LklBcHBXaWRnZXRTZXJ2aWNlJFN0dWIKLWNvbS5hbmRyb2lkLmludGVybmFsLmFwcHdpZGdldC5JQXBwV2lkZ2V0U2VydmljZSRTdHViJFByb3h5Citjb20uYW5kcm9pZC5pbnRlcm5hbC5kYXRhYmFzZS5BcnJheUxpc3RDdXJzb3IKIGNvbS5hbmRyb2lkLmludGVybmFsLmRhdGFiYXNlLlNvcnRDdXJzb3IKK2NvbS5hbmRyb2lkLmludGVybmFsLmRhdGFiYXNlLlNvcnRDdXJzb3IkMQogY29tLmFuZHJvaWQuaW50ZXJuYWwuZ3JhcGhpY3MuTmF0aXZlVXRpbHMKIGNvbS5hbmRyb2lkLmludGVybmFsLmxvY2F0aW9uLkR1bW15TG9jYXRpb25Qcm92aWRlcgogY29tLmFuZHJvaWQuaW50ZXJuYWwubG9jYXRpb24uR3BzTG9jYXRpb25Qcm92aWRlcgotY29tLmFuZHJvaWQuaW50ZXJuYWwubG9nZ2luZy5BbmRyb2lkQ29uZmlnCiBjb20uYW5kcm9pZC5pbnRlcm5hbC5sb2dnaW5nLkFuZHJvaWRIYW5kbGVyCi1jb20uYW5kcm9pZC5pbnRlcm5hbC5sb2dnaW5nLkFuZHJvaWRIYW5kbGVyJDEKIGNvbS5hbmRyb2lkLmludGVybmFsLm9zLkFuZHJvaWRQcmludFN0cmVhbQogY29tLmFuZHJvaWQuaW50ZXJuYWwub3MuQmluZGVySW50ZXJuYWwKIGNvbS5hbmRyb2lkLmludGVybmFsLm9zLkJpbmRlckludGVybmFsJEdjV2F0Y2hlcgogY29tLmFuZHJvaWQuaW50ZXJuYWwub3MuTG9nZ2luZ1ByaW50U3RyZWFtCi1jb20uYW5kcm9pZC5pbnRlcm5hbC5vcy5Mb2dnaW5nUHJpbnRTdHJlYW0kMQogY29tLmFuZHJvaWQuaW50ZXJuYWwub3MuUnVudGltZUluaXQKIGNvbS5hbmRyb2lkLmludGVybmFsLm9zLlJ1bnRpbWVJbml0JDEKLWNvbS5hbmRyb2lkLmludGVybmFsLm9zLlJ1bnRpbWVJbml0JFVuY2F1Z2h0SGFuZGxlcgogY29tLmFuZHJvaWQuaW50ZXJuYWwub3MuWnlnb3RlQ29ubmVjdGlvbgogY29tLmFuZHJvaWQuaW50ZXJuYWwub3MuWnlnb3RlQ29ubmVjdGlvbiRBcmd1bWVudHMKIGNvbS5hbmRyb2lkLmludGVybmFsLm9zLlp5Z290ZUluaXQKLWNvbS5hbmRyb2lkLmludGVybmFsLm9zLlp5Z290ZUluaXQkTWV0aG9kQW5kQXJnc0NhbGxlcgotY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LklQb2xpY3kKIGNvbS5hbmRyb2lkLmludGVybmFsLnBvbGljeS5Qb2xpY3lNYW5hZ2VyCiBjb20uYW5kcm9pZC5pbnRlcm5hbC5wb2xpY3kuaW1wbC5QaG9uZUxheW91dEluZmxhdGVyCiBjb20uYW5kcm9pZC5pbnRlcm5hbC5wb2xpY3kuaW1wbC5QaG9uZVdpbmRvdwotY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGwuUGhvbmVXaW5kb3ckMQotY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGwuUGhvbmVXaW5kb3ckQ29udGV4dE1lbnVDYWxsYmFjawogY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGwuUGhvbmVXaW5kb3ckRGVjb3JWaWV3Ci1jb20uYW5kcm9pZC5pbnRlcm5hbC5wb2xpY3kuaW1wbC5QaG9uZVdpbmRvdyREcmF3YWJsZUZlYXR1cmVTdGF0ZQotY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGwuUGhvbmVXaW5kb3ckUGFuZWxGZWF0dXJlU3RhdGUKIGNvbS5hbmRyb2lkLmludGVybmFsLnBvbGljeS5pbXBsLlBob25lV2luZG93JFBhbmVsRmVhdHVyZVN0YXRlJFNhdmVkU3RhdGUKLWNvbS5hbmRyb2lkLmludGVybmFsLnBvbGljeS5pbXBsLlBob25lV2luZG93JFBhbmVsRmVhdHVyZVN0YXRlJFNhdmVkU3RhdGUkMQogY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGwuUGhvbmVXaW5kb3dNYW5hZ2VyCiBjb20uYW5kcm9pZC5pbnRlcm5hbC5wb2xpY3kuaW1wbC5Qb2xpY3kKLWNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5CYXNlQ29tbWFuZHMKLWNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5Db25uZWN0aW9uJERpc2Nvbm5lY3RDYXVzZQogY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LkdzbUFscGhhYmV0Ci1jb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuSVBob25lU3RhdGVMaXN0ZW5lcgogY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LklQaG9uZVN0YXRlTGlzdGVuZXIkU3R1YgotY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LklQaG9uZVN1YkluZm8KIGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5JUGhvbmVTdWJJbmZvJFN0dWIKLWNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5JUGhvbmVTdWJJbmZvJFN0dWIkUHJveHkKLWNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5JVGVsZXBob255CiBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuSVRlbGVwaG9ueSRTdHViCiBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuSVRlbGVwaG9ueSRTdHViJFByb3h5Ci1jb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuSVRlbGVwaG9ueVJlZ2lzdHJ5CiBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuSVRlbGVwaG9ueVJlZ2lzdHJ5JFN0dWIKLWNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5JVGVsZXBob255UmVnaXN0cnkkU3R1YiRQcm94eQotY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LkljY0NhcmRBcHBsaWNhdGlvbiRQZXJzb1N1YlN0YXRlCi1jb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuSWNjUHJvdmlkZXIKK2NvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5JY2NDYXJkJFN0YXRlCiBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuUGhvbmUkU3RhdGUKLWNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5QaG9uZUJhc2UKLWNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5QaG9uZVByb3h5CiBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuUGhvbmVTdGF0ZUludGVudFJlY2VpdmVyCi1jb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuUklMCiBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuU21zTWVzc2FnZUJhc2UKLWNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5nc20uR1NNUGhvbmUKLWNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5nc20uR3NtRGF0YUNvbm5lY3Rpb25UcmFja2VyCi1jb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuZ3NtLkdzbU1taUNvZGUKLWNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5nc20uTWNjVGFibGUKK2NvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5nc20uR3NtU21zQWRkcmVzcwogY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LmdzbS5TbXNNZXNzYWdlCi1jb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuZ3NtLnN0ay5Db21tYW5kRGV0YWlscwotY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LmdzbS5zdGsuUmVzdWx0Q29kZQorY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LmdzbS5TbXNNZXNzYWdlJFN1Ym1pdFBkdQogY29tLmFuZHJvaWQuaW50ZXJuYWwudXRpbC5BcnJheVV0aWxzCiBjb20uYW5kcm9pZC5pbnRlcm5hbC51dGlsLkZhc3RYbWxTZXJpYWxpemVyCi1jb20uYW5kcm9pZC5pbnRlcm5hbC51dGlsLlhtbFV0aWxzCiBjb20uYW5kcm9pZC5pbnRlcm5hbC52aWV3LklJbnB1dENvbm5lY3Rpb25XcmFwcGVyCi1jb20uYW5kcm9pZC5pbnRlcm5hbC52aWV3LklJbnB1dENvbm5lY3Rpb25XcmFwcGVyJE15SGFuZGxlcgotY29tLmFuZHJvaWQuaW50ZXJuYWwudmlldy5JSW5wdXRDb25uZWN0aW9uV3JhcHBlciRTb21lQXJncwotY29tLmFuZHJvaWQuaW50ZXJuYWwudmlldy5JSW5wdXRDb250ZXh0CiBjb20uYW5kcm9pZC5pbnRlcm5hbC52aWV3LklJbnB1dENvbnRleHQkU3R1YgotY29tLmFuZHJvaWQuaW50ZXJuYWwudmlldy5JSW5wdXRDb250ZXh0Q2FsbGJhY2sKLWNvbS5hbmRyb2lkLmludGVybmFsLnZpZXcuSUlucHV0Q29udGV4dENhbGxiYWNrJFN0dWIKLWNvbS5hbmRyb2lkLmludGVybmFsLnZpZXcuSUlucHV0Q29udGV4dENhbGxiYWNrJFN0dWIkUHJveHkKLWNvbS5hbmRyb2lkLmludGVybmFsLnZpZXcuSUlucHV0TWV0aG9kQ2FsbGJhY2sKLWNvbS5hbmRyb2lkLmludGVybmFsLnZpZXcuSUlucHV0TWV0aG9kQ2FsbGJhY2skU3R1YgotY29tLmFuZHJvaWQuaW50ZXJuYWwudmlldy5JSW5wdXRNZXRob2RDbGllbnQKLWNvbS5hbmRyb2lkLmludGVybmFsLnZpZXcuSUlucHV0TWV0aG9kQ2xpZW50JFN0dWIKLWNvbS5hbmRyb2lkLmludGVybmFsLnZpZXcuSUlucHV0TWV0aG9kTWFuYWdlcgorY29tLmFuZHJvaWQuaW50ZXJuYWwudmlldy5JSW5wdXRNZXRob2QkU3R1YgogY29tLmFuZHJvaWQuaW50ZXJuYWwudmlldy5JSW5wdXRNZXRob2RNYW5hZ2VyJFN0dWIKLWNvbS5hbmRyb2lkLmludGVybmFsLnZpZXcuSUlucHV0TWV0aG9kTWFuYWdlciRTdHViJFByb3h5Ci1jb20uYW5kcm9pZC5pbnRlcm5hbC52aWV3LklJbnB1dE1ldGhvZFNlc3Npb24KLWNvbS5hbmRyb2lkLmludGVybmFsLnZpZXcuSUlucHV0TWV0aG9kU2Vzc2lvbiRTdHViCi1jb20uYW5kcm9pZC5pbnRlcm5hbC52aWV3LklJbnB1dE1ldGhvZFNlc3Npb24kU3R1YiRQcm94eQotY29tLmFuZHJvaWQuaW50ZXJuYWwudmlldy5JbnB1dEJpbmRSZXN1bHQKLWNvbS5hbmRyb2lkLmludGVybmFsLnZpZXcuSW5wdXRCaW5kUmVzdWx0JDEKK2NvbS5hbmRyb2lkLmludGVybmFsLnZpZXcuSW5wdXRDb25uZWN0aW9uV3JhcHBlciRJbnB1dENvbnRleHRDYWxsYmFjawogY29tLmFuZHJvaWQuaW50ZXJuYWwudmlldy5tZW51LkV4cGFuZGVkTWVudVZpZXcKIGNvbS5hbmRyb2lkLmludGVybmFsLnZpZXcubWVudS5JY29uTWVudUl0ZW1WaWV3CiBjb20uYW5kcm9pZC5pbnRlcm5hbC52aWV3Lm1lbnUuSWNvbk1lbnVWaWV3Ci1jb20uYW5kcm9pZC5pbnRlcm5hbC52aWV3Lm1lbnUuSWNvbk1lbnVWaWV3JDEKLWNvbS5hbmRyb2lkLmludGVybmFsLnZpZXcubWVudS5JY29uTWVudVZpZXckTGF5b3V0UGFyYW1zCiBjb20uYW5kcm9pZC5pbnRlcm5hbC52aWV3Lm1lbnUuSWNvbk1lbnVWaWV3JFNhdmVkU3RhdGUKLWNvbS5hbmRyb2lkLmludGVybmFsLnZpZXcubWVudS5JY29uTWVudVZpZXckU2F2ZWRTdGF0ZSQxCiBjb20uYW5kcm9pZC5pbnRlcm5hbC52aWV3Lm1lbnUuTGlzdE1lbnVJdGVtVmlldwogY29tLmFuZHJvaWQuaW50ZXJuYWwudmlldy5tZW51Lk1lbnVCdWlsZGVyCi1jb20uYW5kcm9pZC5pbnRlcm5hbC52aWV3Lm1lbnUuTWVudUJ1aWxkZXIkQ2FsbGJhY2sKLWNvbS5hbmRyb2lkLmludGVybmFsLnZpZXcubWVudS5NZW51QnVpbGRlciRJdGVtSW52b2tlcgotY29tLmFuZHJvaWQuaW50ZXJuYWwudmlldy5tZW51Lk1lbnVCdWlsZGVyJE1lbnVBZGFwdGVyCi1jb20uYW5kcm9pZC5pbnRlcm5hbC52aWV3Lm1lbnUuTWVudUJ1aWxkZXIkTWVudVR5cGUKIGNvbS5hbmRyb2lkLmludGVybmFsLnZpZXcubWVudS5NZW51SXRlbUltcGwKLWNvbS5hbmRyb2lkLmludGVybmFsLnZpZXcubWVudS5NZW51VmlldwotY29tLmFuZHJvaWQuaW50ZXJuYWwudmlldy5tZW51Lk1lbnVWaWV3JEl0ZW1WaWV3CiBjb20uYW5kcm9pZC5pbnRlcm5hbC52aWV3Lm1lbnUuU3ViTWVudUJ1aWxkZXIKLWNvbS5hbmRyb2lkLmludGVybmFsLndpZGdldC5EaWFsb2dUaXRsZQotY29tLmFuZHJvaWQuaW50ZXJuYWwud2lkZ2V0LkVkaXRhYmxlSW5wdXRDb25uZWN0aW9uCiBjb20uYW5kcm9pZC5pbnRlcm5hbC53aWRnZXQuTG9ja1BhdHRlcm5VdGlscwogY29tLmFuZHJvaWQuaW50ZXJuYWwud2lkZ2V0Lk51bWJlclBpY2tlcgotY29tLmdvb2dsZS5hbmRyb2lkLmNvbGxlY3QuTGlzdHMKLWNvbS5nb29nbGUuYW5kcm9pZC5jb2xsZWN0Lk1hcHMKLWNvbS5nb29nbGUuYW5kcm9pZC5jb2xsZWN0LlNldHMKK2NvbS5hbmRyb2lkLmludGVybmFsLndpZGdldC5OdW1iZXJQaWNrZXJCdXR0b24KK2NvbS5hbmRyb2lkLmludGVybmFsLndpZGdldC5TbWlsZXlzCiBjb20uZ29vZ2xlLmFuZHJvaWQuZ2RhdGEuY2xpZW50LkFuZHJvaWRHRGF0YUNsaWVudAorY29tLmdvb2dsZS5hbmRyb2lkLmdkYXRhLmNsaWVudC5BbmRyb2lkWG1sUGFyc2VyRmFjdG9yeQogY29tLmdvb2dsZS5hbmRyb2lkLmdsZXNfam5pLkVHTEltcGwKIGNvbS5nb29nbGUuYW5kcm9pZC5nbGVzX2puaS5HTEltcGwKIGNvbS5nb29nbGUuYW5kcm9pZC5tbXMucGR1LlBkdVBlcnNpc3RlcgogY29tLmdvb2dsZS5hbmRyb2lkLm1tcy51dGlsLlBkdUNhY2hlCiBjb20uZ29vZ2xlLmFuZHJvaWQubmV0Lkdvb2dsZUh0dHBDbGllbnQKLWNvbS5nb29nbGUuYW5kcm9pZC5uZXQuR29vZ2xlSHR0cENsaWVudCRXcmFwcGVkTGF5ZXJlZFNvY2tldEZhY3RvcnkKLWNvbS5nb29nbGUuYW5kcm9pZC5uZXQuR29vZ2xlSHR0cENsaWVudCRXcmFwcGVkU29ja2V0RmFjdG9yeQogY29tLmdvb2dsZS5hbmRyb2lkLm5ldC5OZXR3b3JrU3RhdHNFbnRpdHkKLWNvbS5nb29nbGUuYW5kcm9pZC5uZXQuU1NMQ2xpZW50U2Vzc2lvbkNhY2hlRmFjdG9yeQogY29tLmdvb2dsZS5hbmRyb2lkLm5ldC5VcmxSdWxlcwogY29tLmdvb2dsZS5hbmRyb2lkLm5ldC5VcmxSdWxlcyRSdWxlCi1jb20uZ29vZ2xlLmNvbW1vbi5DbG9jawogY29tLmdvb2dsZS5jb21tb24uQ29uZmlnCi1jb20uZ29vZ2xlLmNvbW1vbi5HZW5lcmljQ2xvY2sKLWNvbS5nb29nbGUuY29tbW9uLkkxOG4KIGNvbS5nb29nbGUuY29tbW9uLkxvZwotY29tLmdvb2dsZS5jb21tb24uU3RhdGljVXRpbAotY29tLmdvb2dsZS5jb21tb24uYW5kcm9pZC5BbmRyb2lkQ2xvY2sKIGNvbS5nb29nbGUuY29tbW9uLmFuZHJvaWQuQW5kcm9pZENvbmZpZwotY29tLmdvb2dsZS5jb21tb24uYW5kcm9pZC5BbmRyb2lkQ29uZmlnJDEKLWNvbS5nb29nbGUuY29tbW9uLmdyYXBoaWNzLkZvbnRGYWN0b3J5Ci1jb20uZ29vZ2xlLmNvbW1vbi5ncmFwaGljcy5JbWFnZUZhY3RvcnkKLWNvbS5nb29nbGUuY29tbW9uLmdyYXBoaWNzLkludGVycG9sYXRlZEZvbnRGYWN0b3J5Ci1jb20uZ29vZ2xlLmNvbW1vbi5ncmFwaGljcy5hbmRyb2lkLkFuZHJvaWRGb250RmFjdG9yeQotY29tLmdvb2dsZS5jb21tb24uZ3JhcGhpY3MuYW5kcm9pZC5BbmRyb2lkSW1hZ2VGYWN0b3J5Ci1jb20uZ29vZ2xlLmNvbW1vbi5pby5CYXNlQ29ubmVjdGlvbkZhY3RvcnkKK2NvbS5nb29nbGUuY29tbW9uLmFzeW5jLkFzeW5jSHR0cFJlcXVlc3RGYWN0b3J5JEFzeW5jSHR0cFJlcXVlc3RJbXBsCitjb20uZ29vZ2xlLmNvbW1vbi5ncmFwaGljcy5hbmRyb2lkLkFuZHJvaWRHcmFwaGljcwogY29tLmdvb2dsZS5jb21tb24uaW8uQmFzZUh0dHBDb25uZWN0aW9uRmFjdG9yeQotY29tLmdvb2dsZS5jb21tb24uaW8uQmFzZVBlcnNpc3RlbnRTdG9yZQotY29tLmdvb2dsZS5jb21tb24uaW8uQmFzZVRjcENvbm5lY3Rpb25GYWN0b3J5Ci1jb20uZ29vZ2xlLmNvbW1vbi5pby5Db25uZWN0aW9uRmFjdG9yeQotY29tLmdvb2dsZS5jb21tb24uaW8uR29vZ2xlSHR0cENvbm5lY3Rpb24KLWNvbS5nb29nbGUuY29tbW9uLmlvLkd1bnppcHBlcgotY29tLmdvb2dsZS5jb21tb24uaW8uR3VuemlwcGVyJEd1bnppcEludGVyZmFjZQotY29tLmdvb2dsZS5jb21tb24uaW8uSHR0cENvbm5lY3Rpb25GYWN0b3J5Ci1jb20uZ29vZ2xlLmNvbW1vbi5pby5Jbk1lbW9yeVBlcnNpc3RlbnRTdG9yZQotY29tLmdvb2dsZS5jb21tb24uaW8uUGVyc2lzdGVudFN0b3JlCi1jb20uZ29vZ2xlLmNvbW1vbi5pby5QZXJzaXN0ZW50U3RvcmUkUGVyc2lzdGVudFN0b3JlRXhjZXB0aW9uCi1jb20uZ29vZ2xlLmNvbW1vbi5pby5QcmVmZXJlbmNlU3RvcmUKLWNvbS5nb29nbGUuY29tbW9uLmlvLlRjcENvbm5lY3Rpb25GYWN0b3J5Ci1jb20uZ29vZ2xlLmNvbW1vbi5pby5hbmRyb2lkLkFuZHJvaWRGaXhlZFBlcnNpc3RlbnRTdG9yZQorY29tLmdvb2dsZS5jb21tb24uaW8uSW9VdGlsCiBjb20uZ29vZ2xlLmNvbW1vbi5pby5hbmRyb2lkLkFuZHJvaWRIdHRwQ2xpZW50Ci1jb20uZ29vZ2xlLmNvbW1vbi5pby5hbmRyb2lkLkFuZHJvaWRIdHRwQ2xpZW50JDEKLWNvbS5nb29nbGUuY29tbW9uLmlvLmFuZHJvaWQuQW5kcm9pZEh0dHBDbGllbnQkMgotY29tLmdvb2dsZS5jb21tb24uaW8uYW5kcm9pZC5BbmRyb2lkSHR0cENsaWVudCRDdXJsTG9nZ2VyCi1jb20uZ29vZ2xlLmNvbW1vbi5pby5hbmRyb2lkLkFuZHJvaWRIdHRwQ2xpZW50JExvZ2dpbmdDb25maWd1cmF0aW9uCiBjb20uZ29vZ2xlLmNvbW1vbi5pby5hbmRyb2lkLkFuZHJvaWRIdHRwQ29ubmVjdGlvbkZhY3RvcnkKLWNvbS5nb29nbGUuY29tbW9uLmlvLmFuZHJvaWQuQW5kcm9pZEh0dHBDb25uZWN0aW9uRmFjdG9yeSQxCi1jb20uZ29vZ2xlLmNvbW1vbi5pby5hbmRyb2lkLkFuZHJvaWRIdHRwQ29ubmVjdGlvbkZhY3RvcnkkQW5kcm9pZEdvb2dsZUh0dHBDb25uZWN0aW9uCiBjb20uZ29vZ2xlLmNvbW1vbi5pby5hbmRyb2lkLkFuZHJvaWRQZXJzaXN0ZW50U3RvcmUKLWNvbS5nb29nbGUuY29tbW9uLmlvLmFuZHJvaWQuQW5kcm9pZFRjcENvbm5lY3Rpb25GYWN0b3J5Ci1jb20uZ29vZ2xlLmNvbW1vbi5pby5hbmRyb2lkLkNvdW50aW5nQnl0ZUNoYW5uZWwkQ291bnRlcgotY29tLmdvb2dsZS5jb21tb24uaW8uYW5kcm9pZC5Hb29nbGVIdHRwQ2xpZW50Ci1jb20uZ29vZ2xlLmNvbW1vbi5pby5hbmRyb2lkLkoyU2VUY3BDb25uZWN0aW9uRmFjdG9yeQogY29tLmdvb2dsZS5jb21tb24uaW8ucHJvdG9jb2wuUHJvdG9CdWYKIGNvbS5nb29nbGUuY29tbW9uLmlvLnByb3RvY29sLlByb3RvQnVmVHlwZQogY29tLmdvb2dsZS5jb21tb24udXRpbC50ZXh0LlRleHRVdGlsCi1jb20uZ29vZ2xlLmRlYnVnLkRlYnVnVXRpbAorY29tLmdvb2dsZS5tYXNmLkJsb2NraW5nQnl0ZVF1ZXVlCiBjb20uZ29vZ2xlLm1hc2YuTW9iaWxlU2VydmljZU11eAorY29tLmdvb2dsZS5tYXNmLnByb3RvY29sLlBsYWluUmVxdWVzdAorY29tLmdvb2dsZS5tYXNmLnNlcnZpY2VzLkV2ZW50TG9nU2VydmljZQogY29tLmdvb2dsZS5tYXNmLnNlcnZpY2VzLkxvZ3NlcnZpY2VNZXNzYWdlVHlwZXMKIGNvbS5nb29nbGUubWFzZi5zZXJ2aWNlcy5yZXN1bWUuV2luZG93UmVzdW1lU2VydmljZQogY29tLmdvb2dsZS53aXJlbGVzcy5nZGF0YS5jYWxlbmRhci5jbGllbnQuQ2FsZW5kYXJDbGllbnQKK2NvbS5nb29nbGUud2lyZWxlc3MuZ2RhdGEuY2xpZW50LkdEYXRhU2VydmljZUNsaWVudAogY29tLmdvb2dsZS53aXJlbGVzcy5nZGF0YS5jb250YWN0cy5jbGllbnQuQ29udGFjdHNDbGllbnQKK2NvbS5nb29nbGUud2lyZWxlc3MuZ2RhdGEuY29udGFjdHMucGFyc2VyLnhtbC5YbWxDb250YWN0c0dEYXRhUGFyc2VyRmFjdG9yeQogY29tLmlibS5pY3U0am5pLmNoYXJzZXQuQ2hhcnNldERlY29kZXJJQ1UKIGNvbS5pYm0uaWN1NGpuaS5jaGFyc2V0LkNoYXJzZXRFbmNvZGVySUNVCiBjb20uaWJtLmljdTRqbmkuY2hhcnNldC5DaGFyc2V0SUNVCkBAIC0xMzM5LDIzICs4MDcsMTQgQEAKIGNvbS5pYm0uaWN1NGpuaS5jb21tb24uRXJyb3JDb2RlCiBjb20uaWJtLmljdTRqbmkubGFuZy5VQ2hhcmFjdGVyCiBjb20uaWJtLmljdTRqbmkucmVnZXguTmF0aXZlUmVnRXgKLWNvbS5pYm0uaWN1NGpuaS50ZXh0LkNvbGxhdGlvbkF0dHJpYnV0ZQotY29tLmlibS5pY3U0am5pLnRleHQuQ29sbGF0b3IKIGNvbS5pYm0uaWN1NGpuaS50ZXh0LkRlY2ltYWxGb3JtYXQKLWNvbS5pYm0uaWN1NGpuaS50ZXh0LkRlY2ltYWxGb3JtYXRTeW1ib2xzCi1jb20uaWJtLmljdTRqbmkudGV4dC5EZWNpbWFsRm9ybWF0U3ltYm9scyQxCiBjb20uaWJtLmljdTRqbmkudGV4dC5OYXRpdmVCcmVha0l0ZXJhdG9yCiBjb20uaWJtLmljdTRqbmkudGV4dC5OYXRpdmVDb2xsYXRpb24KIGNvbS5pYm0uaWN1NGpuaS50ZXh0Lk5hdGl2ZURlY2ltYWxGb3JtYXQKIGNvbS5pYm0uaWN1NGpuaS50ZXh0Lk5hdGl2ZURlY2ltYWxGb3JtYXQkVU51bWJlckZvcm1hdEF0dHJpYnV0ZQogY29tLmlibS5pY3U0am5pLnRleHQuTmF0aXZlRGVjaW1hbEZvcm1hdCRVTnVtYmVyRm9ybWF0U3ltYm9sCi1jb20uaWJtLmljdTRqbmkudGV4dC5SdWxlQmFzZWRDb2xsYXRvcgogY29tLmlibS5pY3U0am5pLnRleHQuUnVsZUJhc2VkTnVtYmVyRm9ybWF0CiBjb20uaWJtLmljdTRqbmkudXRpbC5SZXNvdXJjZXMKLWNvbS5pYm0uaWN1NGpuaS51dGlsLlJlc291cmNlcyRJU080Q3VycmVuY2llcwotY29tLmlibS5pY3U0am5pLnV0aWwuUmVzb3VyY2VzJElTTzRDdXJyZW5jaWVzVG9EaWdpdHMKLWNvbS5pYm0uaWN1NGpuaS51dGlsLlJlc291cmNlcyRMb2NhbGUKLWRhbHZpay5zeXN0ZW0uRGV4RmlsZQogZGFsdmlrLnN5c3RlbS5OYXRpdmVTdGFydAogZGFsdmlrLnN5c3RlbS5QYXRoQ2xhc3NMb2FkZXIKIGRhbHZpay5zeXN0ZW0uVG91Y2hEZXgKQEAgLTEzNjQsNTMgKzgyMywzOSBAQAogZGFsdmlrLnN5c3RlbS5WTVN0YWNrCiBkYWx2aWsuc3lzdGVtLlp5Z290ZQogamF2YS5iZWFucy5Qcm9wZXJ0eUNoYW5nZUV2ZW50Ci1qYXZhLmJlYW5zLlByb3BlcnR5Q2hhbmdlTGlzdGVuZXIKIGphdmEuYmVhbnMuUHJvcGVydHlDaGFuZ2VTdXBwb3J0CiBqYXZhLmlvLkJ1ZmZlcmVkSW5wdXRTdHJlYW0KLWphdmEuaW8uQnVmZmVyZWRPdXRwdXRTdHJlYW0KIGphdmEuaW8uQnVmZmVyZWRSZWFkZXIKLWphdmEuaW8uQnl0ZUFycmF5SW5wdXRTdHJlYW0KLWphdmEuaW8uQnl0ZUFycmF5T3V0cHV0U3RyZWFtCiBqYXZhLmlvLkNsb3NlYWJsZQogamF2YS5pby5EYXRhSW5wdXQKLWphdmEuaW8uRGF0YUlucHV0U3RyZWFtCiBqYXZhLmlvLkRhdGFPdXRwdXQKIGphdmEuaW8uRGF0YU91dHB1dFN0cmVhbQotamF2YS5pby5FeHRlcm5hbGl6YWJsZQoramF2YS5pby5FbXVsYXRlZEZpZWxkc0ZvckR1bXBpbmcKK2phdmEuaW8uRW11bGF0ZWRGaWVsZHNGb3JMb2FkaW5nCiBqYXZhLmlvLkZpbGUKIGphdmEuaW8uRmlsZURlc2NyaXB0b3IKIGphdmEuaW8uRmlsZUlucHV0U3RyZWFtCiBqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbSRSZXBvc2l0aW9uaW5nTG9jawotamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb24KIGphdmEuaW8uRmlsZU91dHB1dFN0cmVhbQotamF2YS5pby5GaWx0ZXJJbnB1dFN0cmVhbQogamF2YS5pby5GaWx0ZXJPdXRwdXRTdHJlYW0KIGphdmEuaW8uRmx1c2hhYmxlCi1qYXZhLmlvLklPRXhjZXB0aW9uCiBqYXZhLmlvLklucHV0U3RyZWFtCiBqYXZhLmlvLklucHV0U3RyZWFtUmVhZGVyCi1qYXZhLmlvLkludGVycnVwdGVkSU9FeGNlcHRpb24KIGphdmEuaW8uT2JqZWN0SW5wdXQKIGphdmEuaW8uT2JqZWN0SW5wdXRTdHJlYW0KIGphdmEuaW8uT2JqZWN0T3V0cHV0CiBqYXZhLmlvLk9iamVjdE91dHB1dFN0cmVhbQogamF2YS5pby5PYmplY3RTdHJlYW1DbGFzcwogamF2YS5pby5PYmplY3RTdHJlYW1Db25zdGFudHMKLWphdmEuaW8uT2JqZWN0U3RyZWFtRXhjZXB0aW9uCiBqYXZhLmlvLk9iamVjdFN0cmVhbUZpZWxkCi1qYXZhLmlvLk9iamVjdFN0cmVhbUZpZWxkJDEKIGphdmEuaW8uT3V0cHV0U3RyZWFtCiBqYXZhLmlvLlByaW50U3RyZWFtCiBqYXZhLmlvLlByaW50V3JpdGVyCitqYXZhLmlvLlB1c2hiYWNrUmVhZGVyCiBqYXZhLmlvLlJhbmRvbUFjY2Vzc0ZpbGUKLWphdmEuaW8uUmFuZG9tQWNjZXNzRmlsZSRSZXBvc2l0aW9uTG9jawogamF2YS5pby5SZWFkZXIKIGphdmEuaW8uU2VyaWFsaXphYmxlCi1qYXZhLmlvLlN0cmVhbUNvcnJ1cHRlZEV4Y2VwdGlvbgotamF2YS5pby5TdHJpbmdSZWFkZXIKIGphdmEuaW8uU3RyaW5nV3JpdGVyCi1qYXZhLmlvLlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24KLWphdmEuaW8uV3JpdGVyCiBqYXZhLmxhbmcuQWJzdHJhY3RTdHJpbmdCdWlsZGVyCiBqYXZhLmxhbmcuQXBwZW5kYWJsZQogamF2YS5sYW5nLkFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbgpAQCAtMTQyMywyMyArODY4LDE2IEBACiBqYXZhLmxhbmcuQ2xhc3MKIGphdmEubGFuZy5DbGFzc0NhY2hlCiBqYXZhLmxhbmcuQ2xhc3NDYWNoZSRFbnVtQ29tcGFyYXRvcgotamF2YS5sYW5nLkNsYXNzQ2FzdEV4Y2VwdGlvbgogamF2YS5sYW5nLkNsYXNzTG9hZGVyCiBqYXZhLmxhbmcuQ2xhc3NMb2FkZXIkU3lzdGVtQ2xhc3NMb2FkZXIKLWphdmEubGFuZy5DbGFzc05vdEZvdW5kRXhjZXB0aW9uCi1qYXZhLmxhbmcuQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24KIGphdmEubGFuZy5DbG9uZWFibGUKIGphdmEubGFuZy5Db21wYXJhYmxlCiBqYXZhLmxhbmcuRG91YmxlCiBqYXZhLmxhbmcuRW51bQogamF2YS5sYW5nLkVycm9yCiBqYXZhLmxhbmcuRXhjZXB0aW9uCi1qYXZhLmxhbmcuRXhjZXB0aW9uSW5Jbml0aWFsaXplckVycm9yCiBqYXZhLmxhbmcuRmxvYXQKIGphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24KLWphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24KLWphdmEubGFuZy5JbmNvbXBhdGlibGVDbGFzc0NoYW5nZUVycm9yCi1qYXZhLmxhbmcuSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbgogamF2YS5sYW5nLkludGVnZXIKIGphdmEubGFuZy5JbnRlZ2VyJHZhbHVlT2ZDYWNoZQogamF2YS5sYW5nLkludGVybmFsRXJyb3IKQEAgLTE0NTEsOSArODg5LDYgQEAKIGphdmEubGFuZy5Mb25nJHZhbHVlT2ZDYWNoZQogamF2YS5sYW5nLk1hdGgKIGphdmEubGFuZy5Ob0NsYXNzRGVmRm91bmRFcnJvcgotamF2YS5sYW5nLk5vU3VjaEZpZWxkRXhjZXB0aW9uCi1qYXZhLmxhbmcuTm9TdWNoTWV0aG9kRXhjZXB0aW9uCi1qYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb24KIGphdmEubGFuZy5OdW1iZXIKIGphdmEubGFuZy5OdW1iZXJGb3JtYXRFeGNlcHRpb24KIGphdmEubGFuZy5PYmplY3QKQEAgLTE0ODEsOCArOTE2LDYgQEAKIGphdmEubGFuZy5UaHJlYWRHcm91cAogamF2YS5sYW5nLlRocmVhZEdyb3VwJENoaWxkcmVuR3JvdXBzTG9jawogamF2YS5sYW5nLlRocmVhZEdyb3VwJENoaWxkcmVuVGhyZWFkc0xvY2sKLWphdmEubGFuZy5UaHJlYWRMb2NhbAotamF2YS5sYW5nLlRocmVhZExvY2FsJFZhbHVlcwogamF2YS5sYW5nLlRocm93YWJsZQogamF2YS5sYW5nLlVuc2F0aXNmaWVkTGlua0Vycm9yCiBqYXZhLmxhbmcuVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24KQEAgLTE1MTAsNDUgKzk0MywyNiBAQAogamF2YS5sYW5nLnJlZmxlY3QuVHlwZQogamF2YS5tYXRoLkJpZ0RlY2ltYWwKIGphdmEubWF0aC5CaWdJbnQKLWphdmEubWF0aC5CaWdJbnQkQ29udGV4dAogamF2YS5tYXRoLkJpZ0ludGVnZXIKIGphdmEubWF0aC5NdWx0aXBsaWNhdGlvbgotamF2YS5uZXQuQ29udGVudEhhbmRsZXIKIGphdmEubmV0LkRhdGFncmFtUGFja2V0CiBqYXZhLm5ldC5IdHRwVVJMQ29ubmVjdGlvbgogamF2YS5uZXQuSW5ldDRBZGRyZXNzCi1qYXZhLm5ldC5JbmV0NkFkZHJlc3MKIGphdmEubmV0LkluZXRBZGRyZXNzCi1qYXZhLm5ldC5JbmV0QWRkcmVzcyRDYWNoZQotamF2YS5uZXQuSW5ldEFkZHJlc3MkQ2FjaGVFbGVtZW50CiBqYXZhLm5ldC5JbmV0QWRkcmVzcyRXYWl0UmVhY2hhYmxlCiBqYXZhLm5ldC5JbmV0U29ja2V0QWRkcmVzcwogamF2YS5uZXQuSmFyVVJMQ29ubmVjdGlvbgotamF2YS5uZXQuTmVnYXRpdmVDYWNoZQotamF2YS5uZXQuTmV0UGVybWlzc2lvbgogamF2YS5uZXQuTmV0d29ya0ludGVyZmFjZQogamF2YS5uZXQuUHJveHkKLWphdmEubmV0LlByb3h5JFR5cGUKIGphdmEubmV0LlByb3h5U2VsZWN0b3IKIGphdmEubmV0LlByb3h5U2VsZWN0b3JJbXBsCi1qYXZhLm5ldC5Qcm94eVNlbGVjdG9ySW1wbCQxCi1qYXZhLm5ldC5SZXNwb25zZUNhY2hlCiBqYXZhLm5ldC5TZXJ2ZXJTb2NrZXQKIGphdmEubmV0LlNvY2tldAotamF2YS5uZXQuU29ja2V0JENvbm5lY3RMb2NrCi1qYXZhLm5ldC5Tb2NrZXRBZGRyZXNzCiBqYXZhLm5ldC5Tb2NrZXRJbXBsCiBqYXZhLm5ldC5Tb2NrZXRPcHRpb25zCi1qYXZhLm5ldC5Tb2NrZXRUaW1lb3V0RXhjZXB0aW9uCiBqYXZhLm5ldC5VUkkKLWphdmEubmV0LlVSSSRIZWxwZXIKLWphdmEubmV0LlVSSUVuY29kZXJEZWNvZGVyCi1qYXZhLm5ldC5VUklTeW50YXhFeGNlcHRpb24KIGphdmEubmV0LlVSTAogamF2YS5uZXQuVVJMQ29ubmVjdGlvbgotamF2YS5uZXQuVVJMQ29ubmVjdGlvbiREZWZhdWx0Q29udGVudEhhbmRsZXIKLWphdmEubmV0LlVSTEVuY29kZXIKLWphdmEubmV0LlVSTFN0cmVhbUhhbmRsZXIKIGphdmEubmlvLkJhc2VCeXRlQnVmZmVyCiBqYXZhLm5pby5CdWZmZXIKIGphdmEubmlvLkJ1ZmZlckZhY3RvcnkKQEAgLTE1NTcsMTMgKzk3MSwxOCBAQAogamF2YS5uaW8uQ2hhckFycmF5QnVmZmVyCiBqYXZhLm5pby5DaGFyQnVmZmVyCiBqYXZhLm5pby5DaGFyU2VxdWVuY2VBZGFwdGVyCitqYXZhLm5pby5DaGFyVG9CeXRlQnVmZmVyQWRhcHRlcgogamF2YS5uaW8uRGlyZWN0Qnl0ZUJ1ZmZlcgoramF2YS5uaW8uRmxvYXRCdWZmZXIKK2phdmEubmlvLkZsb2F0VG9CeXRlQnVmZmVyQWRhcHRlcgogamF2YS5uaW8uSGVhcEJ5dGVCdWZmZXIKIGphdmEubmlvLkludFRvQnl0ZUJ1ZmZlckFkYXB0ZXIKIGphdmEubmlvLk5JT0FjY2VzcwogamF2YS5uaW8uUmVhZFdyaXRlQ2hhckFycmF5QnVmZmVyCiBqYXZhLm5pby5SZWFkV3JpdGVEaXJlY3RCeXRlQnVmZmVyCiBqYXZhLm5pby5SZWFkV3JpdGVIZWFwQnl0ZUJ1ZmZlcgoramF2YS5uaW8uUmVhZFdyaXRlSW50QXJyYXlCdWZmZXIKK2phdmEubmlvLlNob3J0VG9CeXRlQnVmZmVyQWRhcHRlcgogamF2YS5uaW8uY2hhbm5lbHMuQnl0ZUNoYW5uZWwKIGphdmEubmlvLmNoYW5uZWxzLkNoYW5uZWwKIGphdmEubmlvLmNoYW5uZWxzLkZpbGVDaGFubmVsCkBAIC0xNTgxLDI0OCArMTAwMCwxMjcgQEAKIGphdmEubmlvLmNoYXJzZXQuQ29kZXJSZXN1bHQKIGphdmEubmlvLmNoYXJzZXQuQ29kaW5nRXJyb3JBY3Rpb24KIGphdmEubmlvLmNoYXJzZXQuc3BpLkNoYXJzZXRQcm92aWRlcgotamF2YS5zZWN1cml0eS5BY2Nlc3NDb250cm9sQ29udGV4dAogamF2YS5zZWN1cml0eS5BY2Nlc3NDb250cm9sbGVyCiBqYXZhLnNlY3VyaXR5LkJhc2ljUGVybWlzc2lvbgotamF2YS5zZWN1cml0eS5HZW5lcmFsU2VjdXJpdHlFeGNlcHRpb24KIGphdmEuc2VjdXJpdHkuR3VhcmQKLWphdmEuc2VjdXJpdHkuS2V5Ci1qYXZhLnNlY3VyaXR5LktleUZhY3RvcnkKLWphdmEuc2VjdXJpdHkuS2V5RmFjdG9yeVNwaQogamF2YS5zZWN1cml0eS5LZXlTdG9yZQotamF2YS5zZWN1cml0eS5LZXlTdG9yZSQxCi1qYXZhLnNlY3VyaXR5LktleVN0b3JlU3BpCiBqYXZhLnNlY3VyaXR5Lk1lc3NhZ2VEaWdlc3QKLWphdmEuc2VjdXJpdHkuTWVzc2FnZURpZ2VzdFNwaQogamF2YS5zZWN1cml0eS5QZXJtaXNzaW9uCi1qYXZhLnNlY3VyaXR5LlByaW5jaXBhbAogamF2YS5zZWN1cml0eS5Qcml2aWxlZ2VkQWN0aW9uCiBqYXZhLnNlY3VyaXR5LlByaXZpbGVnZWRFeGNlcHRpb25BY3Rpb24KLWphdmEuc2VjdXJpdHkuUHJvdGVjdGlvbkRvbWFpbgogamF2YS5zZWN1cml0eS5Qcm92aWRlcgotamF2YS5zZWN1cml0eS5Qcm92aWRlciRTZXJ2aWNlCi1qYXZhLnNlY3VyaXR5LlByb3ZpZGVyJFNlcnZpY2UkMQotamF2YS5zZWN1cml0eS5QdWJsaWNLZXkKIGphdmEuc2VjdXJpdHkuU2VjdXJlUmFuZG9tCi1qYXZhLnNlY3VyaXR5LlNlY3VyZVJhbmRvbVNwaQogamF2YS5zZWN1cml0eS5TZWN1cml0eQotamF2YS5zZWN1cml0eS5TZWN1cml0eSQxCi1qYXZhLnNlY3VyaXR5LlNlY3VyaXR5JFNlY3VyaXR5RG9vcgotamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoCi1qYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFBhdGhQYXJhbWV0ZXJzCi1qYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFBhdGhWYWxpZGF0b3IKLWphdmEuc2VjdXJpdHkuY2VydC5DZXJ0UGF0aFZhbGlkYXRvclJlc3VsdAotamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoVmFsaWRhdG9yU3BpCi1qYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFNlbGVjdG9yCi1qYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGUKLWphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUZhY3RvcnkKLWphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUZhY3RvcnlTcGkKLWphdmEuc2VjdXJpdHkuY2VydC5QS0lYQ2VydFBhdGhWYWxpZGF0b3JSZXN1bHQKK2phdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZVBhcnNpbmdFeGNlcHRpb24KIGphdmEuc2VjdXJpdHkuY2VydC5QS0lYUGFyYW1ldGVycwotamF2YS5zZWN1cml0eS5jZXJ0LlBvbGljeU5vZGUKLWphdmEuc2VjdXJpdHkuY2VydC5UcnVzdEFuY2hvcgogamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlDZXJ0U2VsZWN0b3IKIGphdmEuc2VjdXJpdHkuY2VydC5YNTA5Q2VydGlmaWNhdGUKLWphdmEuc2VjdXJpdHkuY2VydC5YNTA5RXh0ZW5zaW9uCi1qYXZhLnNlY3VyaXR5LmludGVyZmFjZXMuUlNBS2V5Ci1qYXZhLnNlY3VyaXR5LmludGVyZmFjZXMuUlNBUHVibGljS2V5Ci1qYXZhLnNlY3VyaXR5LnNwZWMuRW5jb2RlZEtleVNwZWMKLWphdmEuc2VjdXJpdHkuc3BlYy5LZXlTcGVjCi1qYXZhLnNlY3VyaXR5LnNwZWMuWDUwOUVuY29kZWRLZXlTcGVjCi1qYXZhLnRleHQuQXR0cmlidXRlZENoYXJhY3Rlckl0ZXJhdG9yJEF0dHJpYnV0ZQogamF2YS50ZXh0LkNvbGxhdG9yCiBqYXZhLnRleHQuRGF0ZUZvcm1hdAogamF2YS50ZXh0LkRhdGVGb3JtYXQkRmllbGQKLWphdmEudGV4dC5EYXRlRm9ybWF0U3ltYm9scwogamF2YS50ZXh0LkRlY2ltYWxGb3JtYXQKLWphdmEudGV4dC5EZWNpbWFsRm9ybWF0JDIKIGphdmEudGV4dC5EZWNpbWFsRm9ybWF0U3ltYm9scwotamF2YS50ZXh0LkZpZWxkUG9zaXRpb24KIGphdmEudGV4dC5Gb3JtYXQKLWphdmEudGV4dC5Gb3JtYXQkMQotamF2YS50ZXh0LkZvcm1hdCRGaWVsZAogamF2YS50ZXh0Lk51bWJlckZvcm1hdAotamF2YS50ZXh0LlJ1bGVCYXNlZENvbGxhdG9yCiBqYXZhLnRleHQuU2ltcGxlRGF0ZUZvcm1hdAogamF2YS51dGlsLkFic3RyYWN0Q29sbGVjdGlvbgogamF2YS51dGlsLkFic3RyYWN0TGlzdAotamF2YS51dGlsLkFic3RyYWN0TGlzdCRGdWxsTGlzdEl0ZXJhdG9yCi1qYXZhLnV0aWwuQWJzdHJhY3RMaXN0JFNpbXBsZUxpc3RJdGVyYXRvcgogamF2YS51dGlsLkFic3RyYWN0TWFwCi1qYXZhLnV0aWwuQWJzdHJhY3RRdWV1ZQotamF2YS51dGlsLkFic3RyYWN0U2VxdWVudGlhbExpc3QKIGphdmEudXRpbC5BYnN0cmFjdFNldAogamF2YS51dGlsLkFycmF5TGlzdAogamF2YS51dGlsLkFycmF5cwotamF2YS51dGlsLkFycmF5cyRBcnJheUxpc3QKK2phdmEudXRpbC5CaXRTZXQKIGphdmEudXRpbC5DYWxlbmRhcgogamF2YS51dGlsLkNvbGxlY3Rpb24KIGphdmEudXRpbC5Db2xsZWN0aW9ucwogamF2YS51dGlsLkNvbGxlY3Rpb25zJEVtcHR5TGlzdAogamF2YS51dGlsLkNvbGxlY3Rpb25zJEVtcHR5TWFwCiBqYXZhLnV0aWwuQ29sbGVjdGlvbnMkRW1wdHlTZXQKLWphdmEudXRpbC5Db2xsZWN0aW9ucyRTeW5jaHJvbml6ZWRDb2xsZWN0aW9uCi1qYXZhLnV0aWwuQ29sbGVjdGlvbnMkU3luY2hyb25pemVkU2V0CitqYXZhLnV0aWwuQ29sbGVjdGlvbnMkU3luY2hyb25pemVkTGlzdAoramF2YS51dGlsLkNvbGxlY3Rpb25zJFN5bmNocm9uaXplZFJhbmRvbUFjY2Vzc0xpc3QKIGphdmEudXRpbC5Db2xsZWN0aW9ucyRVbm1vZGlmaWFibGVDb2xsZWN0aW9uCiBqYXZhLnV0aWwuQ29sbGVjdGlvbnMkVW5tb2RpZmlhYmxlQ29sbGVjdGlvbiQxCiBqYXZhLnV0aWwuQ29sbGVjdGlvbnMkVW5tb2RpZmlhYmxlTGlzdAotamF2YS51dGlsLkNvbGxlY3Rpb25zJFVubW9kaWZpYWJsZU1hcAotamF2YS51dGlsLkNvbGxlY3Rpb25zJFVubW9kaWZpYWJsZU1hcCRVbm1vZGlmaWFibGVFbnRyeVNldAotamF2YS51dGlsLkNvbGxlY3Rpb25zJFVubW9kaWZpYWJsZU1hcCRVbm1vZGlmaWFibGVFbnRyeVNldCQxCiBqYXZhLnV0aWwuQ29sbGVjdGlvbnMkVW5tb2RpZmlhYmxlUmFuZG9tQWNjZXNzTGlzdAogamF2YS51dGlsLkNvbGxlY3Rpb25zJFVubW9kaWZpYWJsZVNldAotamF2YS51dGlsLkNvbXBhcmFibGVUaW1Tb3J0CiBqYXZhLnV0aWwuQ29tcGFyYXRvcgotamF2YS51dGlsLkN1cnJlbmN5CiBqYXZhLnV0aWwuRGF0ZQogamF2YS51dGlsLkRpY3Rpb25hcnkKIGphdmEudXRpbC5FbnVtTWFwCiBqYXZhLnV0aWwuRW51bVNldAogamF2YS51dGlsLkVudW1lcmF0aW9uCi1qYXZhLnV0aWwuRXZlbnRMaXN0ZW5lcgotamF2YS51dGlsLkV2ZW50T2JqZWN0Ci1qYXZhLnV0aWwuRm9ybWF0dGFibGUKIGphdmEudXRpbC5Gb3JtYXR0ZXIKLWphdmEudXRpbC5Gb3JtYXR0ZXIkRmxvYXRVdGlsCi1qYXZhLnV0aWwuRm9ybWF0dGVyJEZvcm1hdFRva2VuCi1qYXZhLnV0aWwuRm9ybWF0dGVyJFBhcnNlclN0YXRlTWFjaGluZQotamF2YS51dGlsLkZvcm1hdHRlciRUcmFuc2Zvcm1lcgogamF2YS51dGlsLkdyZWdvcmlhbkNhbGVuZGFyCiBqYXZhLnV0aWwuSGFzaE1hcAogamF2YS51dGlsLkhhc2hNYXAkMQogamF2YS51dGlsLkhhc2hNYXAkMSQxCi1qYXZhLnV0aWwuSGFzaE1hcCQyCi1qYXZhLnV0aWwuSGFzaE1hcCQyJDEKIGphdmEudXRpbC5IYXNoTWFwJEVudHJ5Ci1qYXZhLnV0aWwuSGFzaE1hcCRIYXNoTWFwRW50cnlTZXQKLWphdmEudXRpbC5IYXNoTWFwJEhhc2hNYXBFbnRyeVNldCQxCiBqYXZhLnV0aWwuSGFzaE1hcCRIYXNoTWFwSXRlcmF0b3IKIGphdmEudXRpbC5IYXNoU2V0CiBqYXZhLnV0aWwuSGFzaHRhYmxlCiBqYXZhLnV0aWwuSGFzaHRhYmxlJDEKLWphdmEudXRpbC5IYXNodGFibGUkMgotamF2YS51dGlsLkhhc2h0YWJsZSQyJDEKLWphdmEudXRpbC5IYXNodGFibGUkNAotamF2YS51dGlsLkhhc2h0YWJsZSQ0JDEKIGphdmEudXRpbC5IYXNodGFibGUkRW50cnkKLWphdmEudXRpbC5IYXNodGFibGUkSGFzaEVudW1lcmF0b3IKLWphdmEudXRpbC5IYXNodGFibGUkSGFzaEl0ZXJhdG9yCiBqYXZhLnV0aWwuSWRlbnRpdHlIYXNoTWFwCiBqYXZhLnV0aWwuSXRlcmF0b3IKLWphdmEudXRpbC5MaW5rZWRIYXNoTWFwCi1qYXZhLnV0aWwuTGlua2VkSGFzaE1hcCQxCi1qYXZhLnV0aWwuTGlua2VkSGFzaE1hcCQxJDEKLWphdmEudXRpbC5MaW5rZWRIYXNoTWFwJExpbmtlZEhhc2hJdGVyYXRvcgotamF2YS51dGlsLkxpbmtlZEhhc2hNYXAkTGlua2VkSGFzaE1hcEVudHJ5Ci1qYXZhLnV0aWwuTGlua2VkSGFzaE1hcCRMaW5rZWRIYXNoTWFwRW50cnlTZXQKLWphdmEudXRpbC5MaW5rZWRIYXNoTWFwJExpbmtlZEhhc2hNYXBFbnRyeVNldCQxCiBqYXZhLnV0aWwuTGlua2VkTGlzdAotamF2YS51dGlsLkxpbmtlZExpc3QkTGluawotamF2YS51dGlsLkxpbmtlZExpc3QkTGlua0l0ZXJhdG9yCiBqYXZhLnV0aWwuTGlzdAotamF2YS51dGlsLkxpc3RJdGVyYXRvcgotamF2YS51dGlsLkxpc3RSZXNvdXJjZUJ1bmRsZQogamF2YS51dGlsLkxvY2FsZQotamF2YS51dGlsLkxvY2FsZSQxCiBqYXZhLnV0aWwuTWFwCiBqYXZhLnV0aWwuTWFwJEVudHJ5CiBqYXZhLnV0aWwuTWFwRW50cnkKIGphdmEudXRpbC5NYXBFbnRyeSRUeXBlCi1qYXZhLnV0aWwuT2JzZXJ2YWJsZQotamF2YS51dGlsLk9ic2VydmVyCiBqYXZhLnV0aWwuUHJpb3JpdHlRdWV1ZQogamF2YS51dGlsLlByb3BlcnRpZXMKIGphdmEudXRpbC5Qcm9wZXJ0eVBlcm1pc3Npb24KLWphdmEudXRpbC5Qcm9wZXJ0eVJlc291cmNlQnVuZGxlCi1qYXZhLnV0aWwuUXVldWUKLWphdmEudXRpbC5SYW5kb20KIGphdmEudXRpbC5SYW5kb21BY2Nlc3MKIGphdmEudXRpbC5SZXNvdXJjZUJ1bmRsZQotamF2YS51dGlsLlJlc291cmNlQnVuZGxlJDEKLWphdmEudXRpbC5SZXNvdXJjZUJ1bmRsZSRNaXNzaW5nQnVuZGxlCiBqYXZhLnV0aWwuU2Nhbm5lcgogamF2YS51dGlsLlNldAogamF2YS51dGlsLlNpbXBsZVRpbWVab25lCiBqYXZhLnV0aWwuU29ydGVkTWFwCiBqYXZhLnV0aWwuU29ydGVkU2V0CitqYXZhLnV0aWwuU3BlY2lhbEFjY2VzcwogamF2YS51dGlsLlN0YWNrCiBqYXZhLnV0aWwuU3RyaW5nVG9rZW5pemVyCi1qYXZhLnV0aWwuVGltU29ydAogamF2YS51dGlsLlRpbWVab25lCiBqYXZhLnV0aWwuVGltZXIKIGphdmEudXRpbC5UcmVlTWFwCi1qYXZhLnV0aWwuVHJlZU1hcCQyCi1qYXZhLnV0aWwuVHJlZU1hcCRBYnN0cmFjdE1hcEl0ZXJhdG9yCi1qYXZhLnV0aWwuVHJlZU1hcCRFbnRyeQotamF2YS51dGlsLlRyZWVNYXAkVW5ib3VuZGVkS2V5SXRlcmF0b3IKIGphdmEudXRpbC5UcmVlU2V0CiBqYXZhLnV0aWwuVmVjdG9yCitqYXZhLnV0aWwuVmVjdG9yJDEKIGphdmEudXRpbC5XZWFrSGFzaE1hcAotamF2YS51dGlsLldlYWtIYXNoTWFwJDEKLWphdmEudXRpbC5XZWFrSGFzaE1hcCQxJDEKLWphdmEudXRpbC5XZWFrSGFzaE1hcCQyCi1qYXZhLnV0aWwuV2Vha0hhc2hNYXAkMiQxCiBqYXZhLnV0aWwuV2Vha0hhc2hNYXAkRW50cnkKLWphdmEudXRpbC5XZWFrSGFzaE1hcCRFbnRyeSRUeXBlCi1qYXZhLnV0aWwuV2Vha0hhc2hNYXAkSGFzaEl0ZXJhdG9yCiBqYXZhLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEV4ZWN1dG9yU2VydmljZQotamF2YS51dGlsLmNvbmN1cnJlbnQuQmxvY2tpbmdRdWV1ZQotamF2YS51dGlsLmNvbmN1cnJlbnQuQ2FsbGFibGUKK2phdmEudXRpbC5jb25jdXJyZW50LkFycmF5QmxvY2tpbmdRdWV1ZQogamF2YS51dGlsLmNvbmN1cnJlbnQuQ29uY3VycmVudEhhc2hNYXAKK2phdmEudXRpbC5jb25jdXJyZW50LkNvbmN1cnJlbnRIYXNoTWFwJFNlZ21lbnQKIGphdmEudXRpbC5jb25jdXJyZW50LkNvcHlPbldyaXRlQXJyYXlMaXN0Ci1qYXZhLnV0aWwuY29uY3VycmVudC5Db3B5T25Xcml0ZUFycmF5TGlzdCRMaXN0SXRlcmF0b3JJbXBsCi1qYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcgotamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JTZXJ2aWNlCi1qYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMKLWphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyREZWZhdWx0VGhyZWFkRmFjdG9yeQotamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlCi1qYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrCi1qYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrJFN5bmMKK2phdmEudXRpbC5jb25jdXJyZW50LkRlbGF5UXVldWUKK2phdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyREZWxlZ2F0ZWRFeGVjdXRvclNlcnZpY2UKK2phdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyREZWxlZ2F0ZWRTY2hlZHVsZWRFeGVjdXRvclNlcnZpY2UKIGphdmEudXRpbC5jb25jdXJyZW50LkxpbmtlZEJsb2NraW5nUXVldWUKLWphdmEudXRpbC5jb25jdXJyZW50LkxpbmtlZEJsb2NraW5nUXVldWUkTm9kZQotamF2YS51dGlsLmNvbmN1cnJlbnQuUmVqZWN0ZWRFeGVjdXRpb25IYW5kbGVyCiBqYXZhLnV0aWwuY29uY3VycmVudC5TY2hlZHVsZWRUaHJlYWRQb29sRXhlY3V0b3IKK2phdmEudXRpbC5jb25jdXJyZW50LlNjaGVkdWxlZFRocmVhZFBvb2xFeGVjdXRvciREZWxheWVkV29ya1F1ZXVlCitqYXZhLnV0aWwuY29uY3VycmVudC5TY2hlZHVsZWRUaHJlYWRQb29sRXhlY3V0b3IkU2NoZWR1bGVkRnV0dXJlVGFzaworamF2YS51dGlsLmNvbmN1cnJlbnQuU2VtYXBob3JlCiBqYXZhLnV0aWwuY29uY3VycmVudC5TeW5jaHJvbm91c1F1ZXVlCi1qYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRGYWN0b3J5CitqYXZhLnV0aWwuY29uY3VycmVudC5TeW5jaHJvbm91c1F1ZXVlJE5vZGUKIGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvcgotamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJEFib3J0UG9saWN5Ci1qYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyCiBqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdAogamF2YS51dGlsLmNvbmN1cnJlbnQuYXRvbWljLkF0b21pY0ludGVnZXIKIGphdmEudXRpbC5jb25jdXJyZW50LmF0b21pYy5BdG9taWNMb25nCitqYXZhLnV0aWwuY29uY3VycmVudC5hdG9taWMuQXRvbWljUmVmZXJlbmNlCiBqYXZhLnV0aWwuY29uY3VycmVudC5hdG9taWMuVW5zYWZlQWNjZXNzCiBqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5BYnN0cmFjdFF1ZXVlZFN5bmNocm9uaXplcgotamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuQWJzdHJhY3RRdWV1ZWRTeW5jaHJvbml6ZXIkQ29uZGl0aW9uT2JqZWN0Ci1qYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5BYnN0cmFjdFF1ZXVlZFN5bmNocm9uaXplciROb2RlCi1qYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5Db25kaXRpb24KLWphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkxvY2sKLWphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkxvY2tTdXBwb3J0CiBqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5SZWVudHJhbnRMb2NrCi1qYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5SZWVudHJhbnRMb2NrJEZhaXJTeW5jCi1qYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5SZWVudHJhbnRMb2NrJE5vbmZhaXJTeW5jCiBqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5SZWVudHJhbnRMb2NrJFN5bmMKLWphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLlVuc2FmZUFjY2VzcwotamF2YS51dGlsLmphci5BdHRyaWJ1dGVzCiBqYXZhLnV0aWwuamFyLkF0dHJpYnV0ZXMkTmFtZQotamF2YS51dGlsLmphci5Jbml0TWFuaWZlc3QKLWphdmEudXRpbC5qYXIuSmFyRW50cnkKIGphdmEudXRpbC5qYXIuSmFyRmlsZQotamF2YS51dGlsLmphci5KYXJGaWxlJDFKYXJGaWxlRW51bWVyYXRvcgotamF2YS51dGlsLmphci5KYXJGaWxlJEphckZpbGVJbnB1dFN0cmVhbQotamF2YS51dGlsLmphci5KYXJWZXJpZmllcgogamF2YS51dGlsLmphci5NYW5pZmVzdAotamF2YS51dGlsLmxvZ2dpbmcuRXJyb3JNYW5hZ2VyCi1qYXZhLnV0aWwubG9nZ2luZy5Gb3JtYXR0ZXIKLWphdmEudXRpbC5sb2dnaW5nLkhhbmRsZXIKIGphdmEudXRpbC5sb2dnaW5nLkxldmVsCiBqYXZhLnV0aWwubG9nZ2luZy5Mb2dNYW5hZ2VyCi1qYXZhLnV0aWwubG9nZ2luZy5Mb2dNYW5hZ2VyJDEKLWphdmEudXRpbC5sb2dnaW5nLkxvZ01hbmFnZXIkMgotamF2YS51dGlsLmxvZ2dpbmcuTG9nTWFuYWdlciQyJDEKLWphdmEudXRpbC5sb2dnaW5nLkxvZ01hbmFnZXIkMwogamF2YS51dGlsLmxvZ2dpbmcuTG9nUmVjb3JkCiBqYXZhLnV0aWwubG9nZ2luZy5Mb2dnZXIKLWphdmEudXRpbC5sb2dnaW5nLkxvZ2dpbmdQZXJtaXNzaW9uCiBqYXZhLnV0aWwucmVnZXguTWF0Y2hSZXN1bHQKIGphdmEudXRpbC5yZWdleC5NYXRjaGVyCiBqYXZhLnV0aWwucmVnZXguUGF0dGVybgpAQCAtMTgzMSwxMDIgKzExMjksNDcgQEAKIGphdmEudXRpbC56aXAuQ2hlY2tzdW0KIGphdmEudXRpbC56aXAuRGVmbGF0ZXIKIGphdmEudXRpbC56aXAuRGVmbGF0ZXJPdXRwdXRTdHJlYW0KLWphdmEudXRpbC56aXAuR1pJUElucHV0U3RyZWFtCi1qYXZhLnV0aWwuemlwLkdaSVBPdXRwdXRTdHJlYW0KIGphdmEudXRpbC56aXAuSW5mbGF0ZXIKLWphdmEudXRpbC56aXAuSW5mbGF0ZXJJbnB1dFN0cmVhbQotamF2YS51dGlsLnppcC5aaXBDb25zdGFudHMKLWphdmEudXRpbC56aXAuWmlwRW50cnkKLWphdmEudXRpbC56aXAuWmlwRW50cnkkTGl0dGxlRW5kaWFuUmVhZGVyCiBqYXZhLnV0aWwuemlwLlppcEZpbGUKLWphdmEudXRpbC56aXAuWmlwRmlsZSQyCi1qYXZhLnV0aWwuemlwLlppcEZpbGUkUkFGU3RyZWFtCitqYXZheC5jcnlwdG8uQ2lwaGVyCitqYXZheC5jcnlwdG8uc3BlYy5TZWNyZXRLZXlTcGVjCiBqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMCiBqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMMTAKK2phdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0xDb250ZXh0CiBqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5vcGVuZ2xlcy5HTAogamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3Mub3BlbmdsZXMuR0wxMAogamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3Mub3BlbmdsZXMuR0wxMEV4dAogamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3Mub3BlbmdsZXMuR0wxMQogamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3Mub3BlbmdsZXMuR0wxMUV4dAogamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3Mub3BlbmdsZXMuR0wxMUV4dGVuc2lvblBhY2sKLWphdmF4Lm5ldC5Tb2NrZXRGYWN0b3J5CiBqYXZheC5uZXQuc3NsLkRlZmF1bHRIb3N0bmFtZVZlcmlmaWVyCi1qYXZheC5uZXQuc3NsLkhvc3RuYW1lVmVyaWZpZXIKIGphdmF4Lm5ldC5zc2wuSHR0cHNVUkxDb25uZWN0aW9uCi1qYXZheC5uZXQuc3NsLktleU1hbmFnZXIKLWphdmF4Lm5ldC5zc2wuS2V5TWFuYWdlckZhY3RvcnkKLWphdmF4Lm5ldC5zc2wuS2V5TWFuYWdlckZhY3RvcnkkMQotamF2YXgubmV0LnNzbC5LZXlNYW5hZ2VyRmFjdG9yeVNwaQotamF2YXgubmV0LnNzbC5TU0xDb250ZXh0U3BpCitqYXZheC5uZXQuc3NsLlNTTENvbnRleHQKK2phdmF4Lm5ldC5zc2wuU1NMSGFuZHNoYWtlRXhjZXB0aW9uCiBqYXZheC5uZXQuc3NsLlNTTFNlcnZlclNvY2tldAogamF2YXgubmV0LnNzbC5TU0xTZXNzaW9uCi1qYXZheC5uZXQuc3NsLlNTTFNlc3Npb25Db250ZXh0CiBqYXZheC5uZXQuc3NsLlNTTFNvY2tldAotamF2YXgubmV0LnNzbC5TU0xTb2NrZXRGYWN0b3J5Ci1qYXZheC5uZXQuc3NsLlNTTFNvY2tldEZhY3RvcnkkMQotamF2YXgubmV0LnNzbC5UcnVzdE1hbmFnZXIKLWphdmF4Lm5ldC5zc2wuVHJ1c3RNYW5hZ2VyRmFjdG9yeQotamF2YXgubmV0LnNzbC5UcnVzdE1hbmFnZXJGYWN0b3J5JDEKLWphdmF4Lm5ldC5zc2wuVHJ1c3RNYW5hZ2VyRmFjdG9yeVNwaQotamF2YXgubmV0LnNzbC5YNTA5RXh0ZW5kZWRLZXlNYW5hZ2VyCi1qYXZheC5uZXQuc3NsLlg1MDlLZXlNYW5hZ2VyCi1qYXZheC5uZXQuc3NsLlg1MDlUcnVzdE1hbmFnZXIKLWphdmF4LnNlY3VyaXR5LmF1dGgueDUwMC5YNTAwUHJpbmNpcGFsCi1qYXZheC5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlCiBqYXZheC5zZWN1cml0eS5jZXJ0Llg1MDlDZXJ0aWZpY2F0ZQotamF2YXguc2VjdXJpdHkuY2VydC5YNTA5Q2VydGlmaWNhdGUkMQotamF2YXguc2VjdXJpdHkuY2VydC5YNTA5Q2VydGlmaWNhdGUkMgotamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyCi1qYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5CiBqdW5pdC5mcmFtZXdvcmsuQXNzZXJ0Ci1vcmcuYXBhY2hlLmNvbW1vbnMuY29kZWMuQmluYXJ5RGVjb2Rlcgotb3JnLmFwYWNoZS5jb21tb25zLmNvZGVjLkJpbmFyeUVuY29kZXIKLW9yZy5hcGFjaGUuY29tbW9ucy5jb2RlYy5EZWNvZGVyCi1vcmcuYXBhY2hlLmNvbW1vbnMuY29kZWMuRW5jb2Rlcgogb3JnLmFwYWNoZS5jb21tb25zLmNvZGVjLmJpbmFyeS5CYXNlNjQKIG9yZy5hcGFjaGUuY29tbW9ucy5jb2RlYy5iaW5hcnkuSGV4Ci1vcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2cKIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLkxvZ0ZhY3RvcnkKIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLmltcGwuSmRrMTRMb2dnZXIKLW9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nLmltcGwuV2Vha0hhc2h0YWJsZQotb3JnLmFwYWNoZS5oYXJtb255LmFyY2hpdmUudXRpbC5VdGlsCiBvcmcuYXBhY2hlLmhhcm1vbnkuZGFsdmlrLk5hdGl2ZVRlc3RUYXJnZXQKLW9yZy5hcGFjaGUuaGFybW9ueS5kYWx2aWsuZGRtYy5DaHVuawogb3JnLmFwYWNoZS5oYXJtb255LmRhbHZpay5kZG1jLkNodW5rSGFuZGxlcgogb3JnLmFwYWNoZS5oYXJtb255LmRhbHZpay5kZG1jLkRkbVNlcnZlcgogb3JnLmFwYWNoZS5oYXJtb255Lmtlcm5lbC52bS5MYW5nQWNjZXNzCiBvcmcuYXBhY2hlLmhhcm1vbnkua2VybmVsLnZtLlJlZmxlY3Rpb25BY2Nlc3MKIG9yZy5hcGFjaGUuaGFybW9ueS5sYW5nLmFubm90YXRpb24uQW5ub3RhdGlvbkZhY3RvcnkKIG9yZy5hcGFjaGUuaGFybW9ueS5sYW5nLmFubm90YXRpb24uQW5ub3RhdGlvbk1lbWJlcgotb3JnLmFwYWNoZS5oYXJtb255Lmx1bmkuaW50ZXJuYWwubmV0Lnd3dy5wcm90b2NvbC5maWxlLkZpbGVVUkxDb25uZWN0aW9uCi1vcmcuYXBhY2hlLmhhcm1vbnkubHVuaS5pbnRlcm5hbC5uZXQud3d3LnByb3RvY29sLmZpbGUuSGFuZGxlcgotb3JnLmFwYWNoZS5oYXJtb255Lmx1bmkuaW50ZXJuYWwubmV0Lnd3dy5wcm90b2NvbC5odHRwLkhhbmRsZXIKLW9yZy5hcGFjaGUuaGFybW9ueS5sdW5pLmludGVybmFsLm5ldC53d3cucHJvdG9jb2wuaHR0cC5IZWFkZXIKLW9yZy5hcGFjaGUuaGFybW9ueS5sdW5pLmludGVybmFsLm5ldC53d3cucHJvdG9jb2wuaHR0cC5IdHRwQ29uZmlndXJhdGlvbgotb3JnLmFwYWNoZS5oYXJtb255Lmx1bmkuaW50ZXJuYWwubmV0Lnd3dy5wcm90b2NvbC5odHRwLkh0dHBDb25uZWN0aW9uCi1vcmcuYXBhY2hlLmhhcm1vbnkubHVuaS5pbnRlcm5hbC5uZXQud3d3LnByb3RvY29sLmh0dHAuSHR0cENvbm5lY3Rpb25NYW5hZ2VyCi1vcmcuYXBhY2hlLmhhcm1vbnkubHVuaS5pbnRlcm5hbC5uZXQud3d3LnByb3RvY29sLmh0dHAuSHR0cENvbm5lY3Rpb25NYW5hZ2VyJENvbm5lY3Rpb25Qb29sCitvcmcuYXBhY2hlLmhhcm1vbnkubGFuZy5hbm5vdGF0aW9uLkFubm90YXRpb25NZW1iZXIkRGVmYXVsdFZhbHVlcwogb3JnLmFwYWNoZS5oYXJtb255Lmx1bmkuaW50ZXJuYWwubmV0Lnd3dy5wcm90b2NvbC5odHRwLkh0dHBVUkxDb25uZWN0aW9uCi1vcmcuYXBhY2hlLmhhcm1vbnkubHVuaS5pbnRlcm5hbC5uZXQud3d3LnByb3RvY29sLmh0dHAuSHR0cFVSTENvbm5lY3Rpb24kMQotb3JnLmFwYWNoZS5oYXJtb255Lmx1bmkuaW50ZXJuYWwubmV0Lnd3dy5wcm90b2NvbC5odHRwLkh0dHBVUkxDb25uZWN0aW9uJExpbWl0ZWRJbnB1dFN0cmVhbQogb3JnLmFwYWNoZS5oYXJtb255Lmx1bmkuaW50ZXJuYWwubmV0Lnd3dy5wcm90b2NvbC5odHRwcy5IYW5kbGVyCiBvcmcuYXBhY2hlLmhhcm1vbnkubHVuaS5pbnRlcm5hbC5uZXQud3d3LnByb3RvY29sLmphci5IYW5kbGVyCiBvcmcuYXBhY2hlLmhhcm1vbnkubHVuaS5pbnRlcm5hbC5uZXQud3d3LnByb3RvY29sLmphci5KYXJVUkxDb25uZWN0aW9uCi1vcmcuYXBhY2hlLmhhcm1vbnkubHVuaS5pbnRlcm5hbC5uZXQud3d3LnByb3RvY29sLmphci5KYXJVUkxDb25uZWN0aW9uJDEKLW9yZy5hcGFjaGUuaGFybW9ueS5sdW5pLmludGVybmFsLm5ldC53d3cucHJvdG9jb2wuamFyLkphclVSTENvbm5lY3Rpb24kQ2FjaGVFbnRyeQotb3JnLmFwYWNoZS5oYXJtb255Lmx1bmkuaW50ZXJuYWwubmV0Lnd3dy5wcm90b2NvbC5qYXIuSmFyVVJMQ29ubmVjdGlvbiRKYXJVUkxDb25uZWN0aW9uSW5wdXRTdHJlYW0KLW9yZy5hcGFjaGUuaGFybW9ueS5sdW5pLmludGVybmFsLm5ldC53d3cucHJvdG9jb2wuamFyLkphclVSTENvbm5lY3Rpb24kTFJVQ29tcGFyYXRvcgotb3JnLmFwYWNoZS5oYXJtb255Lmx1bmkuaW50ZXJuYWwudXRpbC5UaW1lem9uZUdldHRlcgotb3JnLmFwYWNoZS5oYXJtb255Lmx1bmkuaW50ZXJuYWwudXRpbC5ab25lSW5mbwogb3JnLmFwYWNoZS5oYXJtb255Lmx1bmkuaW50ZXJuYWwudXRpbC5ab25lSW5mb0RCCiBvcmcuYXBhY2hlLmhhcm1vbnkubHVuaS5uZXQuR2VuZXJpY0lQTXJlcQotb3JnLmFwYWNoZS5oYXJtb255Lmx1bmkubmV0Lk5ldFV0aWwKLW9yZy5hcGFjaGUuaGFybW9ueS5sdW5pLm5ldC5OZXRVdGlsJEFjdGlvbgogb3JnLmFwYWNoZS5oYXJtb255Lmx1bmkubmV0LlBsYWluU29ja2V0SW1wbAotb3JnLmFwYWNoZS5oYXJtb255Lmx1bmkubmV0LlBsYWluU29ja2V0SW1wbDIKLW9yZy5hcGFjaGUuaGFybW9ueS5sdW5pLm5ldC5Tb2NrZXRJbXBsUHJvdmlkZXIKLW9yZy5hcGFjaGUuaGFybW9ueS5sdW5pLm5ldC5Tb2NrZXRJbnB1dFN0cmVhbQotb3JnLmFwYWNoZS5oYXJtb255Lmx1bmkubmV0LlNvY2tldE91dHB1dFN0cmVhbQogb3JnLmFwYWNoZS5oYXJtb255Lmx1bmkucGxhdGZvcm0uQWRhcHRlck1hbmFnZXIKIG9yZy5hcGFjaGUuaGFybW9ueS5sdW5pLnBsYXRmb3JtLkVuZGlhbm5lc3MKIG9yZy5hcGFjaGUuaGFybW9ueS5sdW5pLnBsYXRmb3JtLklBZGFwdGFibGUKQEAgLTE5NDQsMTkgKzExODcsOSBAQAogb3JnLmFwYWNoZS5oYXJtb255Lmx1bmkucGxhdGZvcm0uUGxhdGZvcm0KIG9yZy5hcGFjaGUuaGFybW9ueS5sdW5pLnBsYXRmb3JtLlBsYXRmb3JtQWRkcmVzcwogb3JnLmFwYWNoZS5oYXJtb255Lmx1bmkucGxhdGZvcm0uUGxhdGZvcm1BZGRyZXNzRmFjdG9yeQotb3JnLmFwYWNoZS5oYXJtb255Lmx1bmkudXRpbC5CYXNlNjQKIG9yZy5hcGFjaGUuaGFybW9ueS5sdW5pLnV0aWwuRmxvYXRpbmdQb2ludFBhcnNlcgotb3JnLmFwYWNoZS5oYXJtb255Lmx1bmkudXRpbC5GbG9hdGluZ1BvaW50UGFyc2VyJFN0cmluZ0V4cG9uZW50UGFpcgotb3JnLmFwYWNoZS5oYXJtb255Lmx1bmkudXRpbC5JbmV0NlV0aWwKLW9yZy5hcGFjaGUuaGFybW9ueS5sdW5pLnV0aWwuTXNnSGVscAotb3JnLmFwYWNoZS5oYXJtb255Lmx1bmkudXRpbC5Nc2dIZWxwJDEKIG9yZy5hcGFjaGUuaGFybW9ueS5sdW5pLnV0aWwuTnVtYmVyQ29udmVydGVyCiBvcmcuYXBhY2hlLmhhcm1vbnkubHVuaS51dGlsLlByaXZpQWN0aW9uCi1vcmcuYXBhY2hlLmhhcm1vbnkubHVuaS51dGlsLlR3b0tleUhhc2hNYXAKLW9yZy5hcGFjaGUuaGFybW9ueS5sdW5pLnV0aWwuVHdvS2V5SGFzaE1hcCRFbnRyeQotb3JnLmFwYWNoZS5oYXJtb255Lmx1bmkudXRpbC5Ud29LZXlIYXNoTWFwJEVudHJ5SXRlcmF0b3JJbXBsCi1vcmcuYXBhY2hlLmhhcm1vbnkubHVuaS51dGlsLlR3b0tleUhhc2hNYXAkVmFsdWVJdGVyYXRvckltcGwKLW9yZy5hcGFjaGUuaGFybW9ueS5sdW5pLnV0aWwuVHdvS2V5SGFzaE1hcCRWYWx1ZXNDb2xsZWN0aW9uSW1wbAogb3JnLmFwYWNoZS5oYXJtb255Lmx1bmkudXRpbC5VdGlsCiBvcmcuYXBhY2hlLmhhcm1vbnkubmlvLkFkZHJlc3NVdGlsCiBvcmcuYXBhY2hlLmhhcm1vbnkubmlvLkZpbGVDaGFubmVsRmFjdG9yeQpAQCAtMTk2Niw1MDggKzExOTksMTYwIEBACiBvcmcuYXBhY2hlLmhhcm1vbnkubmlvLmludGVybmFsLkxvY2tNYW5hZ2VyCiBvcmcuYXBhY2hlLmhhcm1vbnkubmlvLmludGVybmFsLkxvY2tNYW5hZ2VyJDEKIG9yZy5hcGFjaGUuaGFybW9ueS5uaW8uaW50ZXJuYWwuV3JpdGVPbmx5RmlsZUNoYW5uZWwKLW9yZy5hcGFjaGUuaGFybW9ueS5zZWN1cml0eS5hc24xLkFTTjFBbnkKLW9yZy5hcGFjaGUuaGFybW9ueS5zZWN1cml0eS5hc24xLkFTTjFCaXRTdHJpbmcKLW9yZy5hcGFjaGUuaGFybW9ueS5zZWN1cml0eS5hc24xLkFTTjFCaXRTdHJpbmckQVNOMU5hbWVkQml0TGlzdAotb3JnLmFwYWNoZS5oYXJtb255LnNlY3VyaXR5LmFzbjEuQVNOMUJvb2xlYW4KLW9yZy5hcGFjaGUuaGFybW9ueS5zZWN1cml0eS5hc24xLkFTTjFDaG9pY2UKLW9yZy5hcGFjaGUuaGFybW9ueS5zZWN1cml0eS5hc24xLkFTTjFDb25zdGFudHMKLW9yZy5hcGFjaGUuaGFybW9ueS5zZWN1cml0eS5hc24xLkFTTjFDb25zdHJ1Y3R1cmVkCi1vcmcuYXBhY2hlLmhhcm1vbnkuc2VjdXJpdHkuYXNuMS5BU04xRXhwbGljaXQKIG9yZy5hcGFjaGUuaGFybW9ueS5zZWN1cml0eS5hc24xLkFTTjFHZW5lcmFsaXplZFRpbWUKLW9yZy5hcGFjaGUuaGFybW9ueS5zZWN1cml0eS5hc24xLkFTTjFJbXBsaWNpdAogb3JnLmFwYWNoZS5oYXJtb255LnNlY3VyaXR5LmFzbjEuQVNOMUludGVnZXIKLW9yZy5hcGFjaGUuaGFybW9ueS5zZWN1cml0eS5hc24xLkFTTjFPY3RldFN0cmluZwogb3JnLmFwYWNoZS5oYXJtb255LnNlY3VyaXR5LmFzbjEuQVNOMU9pZAotb3JnLmFwYWNoZS5oYXJtb255LnNlY3VyaXR5LmFzbjEuQVNOMU9pZCQxCi1vcmcuYXBhY2hlLmhhcm1vbnkuc2VjdXJpdHkuYXNuMS5BU04xUHJpbWl0aXZlCiBvcmcuYXBhY2hlLmhhcm1vbnkuc2VjdXJpdHkuYXNuMS5BU04xU2VxdWVuY2UKLW9yZy5hcGFjaGUuaGFybW9ueS5zZWN1cml0eS5hc24xLkFTTjFTZXF1ZW5jZU9mCi1vcmcuYXBhY2hlLmhhcm1vbnkuc2VjdXJpdHkuYXNuMS5BU04xU2V0T2YKIG9yZy5hcGFjaGUuaGFybW9ueS5zZWN1cml0eS5hc24xLkFTTjFTdHJpbmdUeXBlCi1vcmcuYXBhY2hlLmhhcm1vbnkuc2VjdXJpdHkuYXNuMS5BU04xU3RyaW5nVHlwZSQxCi1vcmcuYXBhY2hlLmhhcm1vbnkuc2VjdXJpdHkuYXNuMS5BU04xU3RyaW5nVHlwZSQyCi1vcmcuYXBhY2hlLmhhcm1vbnkuc2VjdXJpdHkuYXNuMS5BU04xU3RyaW5nVHlwZSQzCi1vcmcuYXBhY2hlLmhhcm1vbnkuc2VjdXJpdHkuYXNuMS5BU04xU3RyaW5nVHlwZSQ0Ci1vcmcuYXBhY2hlLmhhcm1vbnkuc2VjdXJpdHkuYXNuMS5BU04xU3RyaW5nVHlwZSQ1Ci1vcmcuYXBhY2hlLmhhcm1vbnkuc2VjdXJpdHkuYXNuMS5BU04xU3RyaW5nVHlwZSQ2Ci1vcmcuYXBhY2hlLmhhcm1vbnkuc2VjdXJpdHkuYXNuMS5BU04xU3RyaW5nVHlwZSQ3Ci1vcmcuYXBhY2hlLmhhcm1vbnkuc2VjdXJpdHkuYXNuMS5BU04xVGltZQotb3JnLmFwYWNoZS5oYXJtb255LnNlY3VyaXR5LmFzbjEuQVNOMVR5cGUKLW9yZy5hcGFjaGUuaGFybW9ueS5zZWN1cml0eS5hc24xLkFTTjFUeXBlQ29sbGVjdGlvbgotb3JnLmFwYWNoZS5oYXJtb255LnNlY3VyaXR5LmFzbjEuQVNOMVVUQ1RpbWUKLW9yZy5hcGFjaGUuaGFybW9ueS5zZWN1cml0eS5hc24xLkFTTjFWYWx1ZUNvbGxlY3Rpb24KLW9yZy5hcGFjaGUuaGFybW9ueS5zZWN1cml0eS5hc24xLkJlcklucHV0U3RyZWFtCi1vcmcuYXBhY2hlLmhhcm1vbnkuc2VjdXJpdHkuYXNuMS5CZXJPdXRwdXRTdHJlYW0KLW9yZy5hcGFjaGUuaGFybW9ueS5zZWN1cml0eS5hc24xLkJpdFN0cmluZwogb3JnLmFwYWNoZS5oYXJtb255LnNlY3VyaXR5LmFzbjEuRGVySW5wdXRTdHJlYW0KIG9yZy5hcGFjaGUuaGFybW9ueS5zZWN1cml0eS5hc24xLkRlck91dHB1dFN0cmVhbQotb3JnLmFwYWNoZS5oYXJtb255LnNlY3VyaXR5LmFzbjEuT2JqZWN0SWRlbnRpZmllcgotb3JnLmFwYWNoZS5oYXJtb255LnNlY3VyaXR5LmZvcnRyZXNzLkVuZ2luZQotb3JnLmFwYWNoZS5oYXJtb255LnNlY3VyaXR5LmZvcnRyZXNzLlNlY3VyaXR5QWNjZXNzCi1vcmcuYXBhY2hlLmhhcm1vbnkuc2VjdXJpdHkuZm9ydHJlc3MuU2VjdXJpdHlVdGlscwogb3JnLmFwYWNoZS5oYXJtb255LnNlY3VyaXR5LmZvcnRyZXNzLlNlcnZpY2VzCi1vcmcuYXBhY2hlLmhhcm1vbnkuc2VjdXJpdHkuZm9ydHJlc3MuU2VydmljZXMkMQotb3JnLmFwYWNoZS5oYXJtb255LnNlY3VyaXR5LmludGVybmFsLm5scy5NZXNzYWdlcwogb3JnLmFwYWNoZS5oYXJtb255LnNlY3VyaXR5LnBrY3M3LkNvbnRlbnRJbmZvCi1vcmcuYXBhY2hlLmhhcm1vbnkuc2VjdXJpdHkucGtjczcuQ29udGVudEluZm8kMQotb3JnLmFwYWNoZS5oYXJtb255LnNlY3VyaXR5LnByb3ZpZGVyLmNlcnQuQ2FjaGUKIG9yZy5hcGFjaGUuaGFybW9ueS5zZWN1cml0eS5wcm92aWRlci5jZXJ0LkRSTENlcnRGYWN0b3J5Ci1vcmcuYXBhY2hlLmhhcm1vbnkuc2VjdXJpdHkucHJvdmlkZXIuY2VydC5EUkxDZXJ0RmFjdG9yeSQxCiBvcmcuYXBhY2hlLmhhcm1vbnkuc2VjdXJpdHkucHJvdmlkZXIuY2VydC5YNTA5Q2VydEZhY3RvcnlJbXBsCiBvcmcuYXBhY2hlLmhhcm1vbnkuc2VjdXJpdHkucHJvdmlkZXIuY2VydC5YNTA5Q2VydEltcGwKIG9yZy5hcGFjaGUuaGFybW9ueS5zZWN1cml0eS5wcm92aWRlci5jZXJ0Llg1MDlDZXJ0UGF0aEltcGwKLW9yZy5hcGFjaGUuaGFybW9ueS5zZWN1cml0eS5wcm92aWRlci5jZXJ0Llg1MDlDZXJ0UGF0aEltcGwkMQotb3JnLmFwYWNoZS5oYXJtb255LnNlY3VyaXR5LnByb3ZpZGVyLmNlcnQuWDUwOUNlcnRQYXRoSW1wbCQyCi1vcmcuYXBhY2hlLmhhcm1vbnkuc2VjdXJpdHkucHJvdmlkZXIuY2VydC5YNTA5Q2VydFBhdGhJbXBsJDMKLW9yZy5hcGFjaGUuaGFybW9ueS5zZWN1cml0eS5wcm92aWRlci5jcnlwdG8uQ3J5cHRvUHJvdmlkZXIKLW9yZy5hcGFjaGUuaGFybW9ueS5zZWN1cml0eS5wcm92aWRlci5jcnlwdG8uQ3J5cHRvUHJvdmlkZXIkMQogb3JnLmFwYWNoZS5oYXJtb255LnNlY3VyaXR5LnByb3ZpZGVyLmNyeXB0by5SYW5kb21CaXRzU3VwcGxpZXIKLW9yZy5hcGFjaGUuaGFybW9ueS5zZWN1cml0eS5wcm92aWRlci5jcnlwdG8uUmFuZG9tQml0c1N1cHBsaWVyJDEKLW9yZy5hcGFjaGUuaGFybW9ueS5zZWN1cml0eS5wcm92aWRlci5jcnlwdG8uU0hBMUltcGwKIG9yZy5hcGFjaGUuaGFybW9ueS5zZWN1cml0eS5wcm92aWRlci5jcnlwdG8uU0hBMVBSTkdfU2VjdXJlUmFuZG9tSW1wbAotb3JnLmFwYWNoZS5oYXJtb255LnNlY3VyaXR5LnByb3ZpZGVyLmNyeXB0by5TSEExX0RhdGEKK29yZy5hcGFjaGUuaGFybW9ueS5zZWN1cml0eS5wcm92aWRlci5jcnlwdG8uU0hBMV9NZXNzYWdlRGlnZXN0SW1wbAogb3JnLmFwYWNoZS5oYXJtb255LnNlY3VyaXR5LnV0aWxzLkFsZ05hbWVNYXBwZXIKLW9yZy5hcGFjaGUuaGFybW9ueS5zZWN1cml0eS51dGlscy5PYmplY3RJZGVudGlmaWVyCiBvcmcuYXBhY2hlLmhhcm1vbnkuc2VjdXJpdHkueDUwMS5BdHRyaWJ1dGVUeXBlQW5kVmFsdWUKLW9yZy5hcGFjaGUuaGFybW9ueS5zZWN1cml0eS54NTAxLkF0dHJpYnV0ZVR5cGVBbmRWYWx1ZSQxCi1vcmcuYXBhY2hlLmhhcm1vbnkuc2VjdXJpdHkueDUwMS5BdHRyaWJ1dGVUeXBlQW5kVmFsdWUkMgotb3JnLmFwYWNoZS5oYXJtb255LnNlY3VyaXR5Lng1MDEuQXR0cmlidXRlVHlwZUFuZFZhbHVlQ29tcGFyYXRvcgotb3JnLmFwYWNoZS5oYXJtb255LnNlY3VyaXR5Lng1MDEuQXR0cmlidXRlVmFsdWUKIG9yZy5hcGFjaGUuaGFybW9ueS5zZWN1cml0eS54NTAxLkRpcmVjdG9yeVN0cmluZwotb3JnLmFwYWNoZS5oYXJtb255LnNlY3VyaXR5Lng1MDEuRGlyZWN0b3J5U3RyaW5nJDEKIG9yZy5hcGFjaGUuaGFybW9ueS5zZWN1cml0eS54NTAxLk5hbWUKLW9yZy5hcGFjaGUuaGFybW9ueS5zZWN1cml0eS54NTAxLk5hbWUkMQogb3JnLmFwYWNoZS5oYXJtb255LnNlY3VyaXR5Lng1MDkuQWxnb3JpdGhtSWRlbnRpZmllcgotb3JnLmFwYWNoZS5oYXJtb255LnNlY3VyaXR5Lng1MDkuQWxnb3JpdGhtSWRlbnRpZmllciQxCiBvcmcuYXBhY2hlLmhhcm1vbnkuc2VjdXJpdHkueDUwOS5CYXNpY0NvbnN0cmFpbnRzCi1vcmcuYXBhY2hlLmhhcm1vbnkuc2VjdXJpdHkueDUwOS5CYXNpY0NvbnN0cmFpbnRzJDEKIG9yZy5hcGFjaGUuaGFybW9ueS5zZWN1cml0eS54NTA5LkNlcnRpZmljYXRlCi1vcmcuYXBhY2hlLmhhcm1vbnkuc2VjdXJpdHkueDUwOS5DZXJ0aWZpY2F0ZSQxCi1vcmcuYXBhY2hlLmhhcm1vbnkuc2VjdXJpdHkueDUwOS5ETlBhcnNlcgogb3JnLmFwYWNoZS5oYXJtb255LnNlY3VyaXR5Lng1MDkuRURJUGFydHlOYW1lCi1vcmcuYXBhY2hlLmhhcm1vbnkuc2VjdXJpdHkueDUwOS5FRElQYXJ0eU5hbWUkMQogb3JnLmFwYWNoZS5oYXJtb255LnNlY3VyaXR5Lng1MDkuRXh0ZW5zaW9uCi1vcmcuYXBhY2hlLmhhcm1vbnkuc2VjdXJpdHkueDUwOS5FeHRlbnNpb24kMQotb3JnLmFwYWNoZS5oYXJtb255LnNlY3VyaXR5Lng1MDkuRXh0ZW5zaW9uJDIKLW9yZy5hcGFjaGUuaGFybW9ueS5zZWN1cml0eS54NTA5LkV4dGVuc2lvblZhbHVlCiBvcmcuYXBhY2hlLmhhcm1vbnkuc2VjdXJpdHkueDUwOS5FeHRlbnNpb25zCi1vcmcuYXBhY2hlLmhhcm1vbnkuc2VjdXJpdHkueDUwOS5FeHRlbnNpb25zJDEKIG9yZy5hcGFjaGUuaGFybW9ueS5zZWN1cml0eS54NTA5LkdlbmVyYWxOYW1lCi1vcmcuYXBhY2hlLmhhcm1vbnkuc2VjdXJpdHkueDUwOS5HZW5lcmFsTmFtZSQxCiBvcmcuYXBhY2hlLmhhcm1vbnkuc2VjdXJpdHkueDUwOS5HZW5lcmFsTmFtZXMKLW9yZy5hcGFjaGUuaGFybW9ueS5zZWN1cml0eS54NTA5LkdlbmVyYWxOYW1lcyQxCiBvcmcuYXBhY2hlLmhhcm1vbnkuc2VjdXJpdHkueDUwOS5LZXlVc2FnZQogb3JnLmFwYWNoZS5oYXJtb255LnNlY3VyaXR5Lng1MDkuT1JBZGRyZXNzCi1vcmcuYXBhY2hlLmhhcm1vbnkuc2VjdXJpdHkueDUwOS5PUkFkZHJlc3MkMQotb3JnLmFwYWNoZS5oYXJtb255LnNlY3VyaXR5Lng1MDkuT1JBZGRyZXNzJDIKIG9yZy5hcGFjaGUuaGFybW9ueS5zZWN1cml0eS54NTA5Lk90aGVyTmFtZQotb3JnLmFwYWNoZS5oYXJtb255LnNlY3VyaXR5Lng1MDkuT3RoZXJOYW1lJDEKK29yZy5hcGFjaGUuaGFybW9ueS5zZWN1cml0eS54NTA5LlBvbGljeVF1YWxpZmllckluZm8KIG9yZy5hcGFjaGUuaGFybW9ueS5zZWN1cml0eS54NTA5LlN1YmplY3RQdWJsaWNLZXlJbmZvCi1vcmcuYXBhY2hlLmhhcm1vbnkuc2VjdXJpdHkueDUwOS5TdWJqZWN0UHVibGljS2V5SW5mbyQxCiBvcmcuYXBhY2hlLmhhcm1vbnkuc2VjdXJpdHkueDUwOS5UQlNDZXJ0aWZpY2F0ZQotb3JnLmFwYWNoZS5oYXJtb255LnNlY3VyaXR5Lng1MDkuVEJTQ2VydGlmaWNhdGUkMQogb3JnLmFwYWNoZS5oYXJtb255LnNlY3VyaXR5Lng1MDkuVGltZQotb3JnLmFwYWNoZS5oYXJtb255LnNlY3VyaXR5Lng1MDkuVGltZSQxCi1vcmcuYXBhY2hlLmhhcm1vbnkuc2VjdXJpdHkueDUwOS5VdGlscwogb3JnLmFwYWNoZS5oYXJtb255LnNlY3VyaXR5Lng1MDkuVmFsaWRpdHkKLW9yZy5hcGFjaGUuaGFybW9ueS5zZWN1cml0eS54NTA5LlZhbGlkaXR5JDEKIG9yZy5hcGFjaGUuaGFybW9ueS50ZXh0LkJpZGlXcmFwcGVyCiBvcmcuYXBhY2hlLmhhcm1vbnkueG1sLkV4cGF0QXR0cmlidXRlcwogb3JnLmFwYWNoZS5oYXJtb255LnhtbC5FeHBhdFBhcnNlcgotb3JnLmFwYWNoZS5oYXJtb255LnhtbC5FeHBhdFBhcnNlciRDbG9uZWRBdHRyaWJ1dGVzCi1vcmcuYXBhY2hlLmhhcm1vbnkueG1sLkV4cGF0UGFyc2VyJEN1cnJlbnRBdHRyaWJ1dGVzCi1vcmcuYXBhY2hlLmhhcm1vbnkueG1sLkV4cGF0UGFyc2VyJEV4cGF0TG9jYXRvcgogb3JnLmFwYWNoZS5oYXJtb255LnhtbC5FeHBhdFB1bGxQYXJzZXIKIG9yZy5hcGFjaGUuaGFybW9ueS54bWwuRXhwYXRQdWxsUGFyc2VyJEJ5dGVEb2N1bWVudAotb3JnLmFwYWNoZS5oYXJtb255LnhtbC5FeHBhdFB1bGxQYXJzZXIkRG9jdW1lbnQKLW9yZy5hcGFjaGUuaGFybW9ueS54bWwuRXhwYXRQdWxsUGFyc2VyJERvY3VtZW50JFNheEhhbmRsZXIKLW9yZy5hcGFjaGUuaGFybW9ueS54bWwuRXhwYXRQdWxsUGFyc2VyJEVuZFRhZ0V2ZW50Ci1vcmcuYXBhY2hlLmhhcm1vbnkueG1sLkV4cGF0UHVsbFBhcnNlciRFdmVudAotb3JnLmFwYWNoZS5oYXJtb255LnhtbC5FeHBhdFB1bGxQYXJzZXIkTmFtZXNwYWNlU3RhY2sKLW9yZy5hcGFjaGUuaGFybW9ueS54bWwuRXhwYXRQdWxsUGFyc2VyJE5hbWVzcGFjZVN0YWNrJEJ1aWxkZXIKLW9yZy5hcGFjaGUuaGFybW9ueS54bWwuRXhwYXRQdWxsUGFyc2VyJFN0YXJ0RG9jdW1lbnRFdmVudAotb3JnLmFwYWNoZS5oYXJtb255LnhtbC5FeHBhdFB1bGxQYXJzZXIkU3RhcnRUYWdFdmVudAotb3JnLmFwYWNoZS5oYXJtb255LnhtbC5FeHBhdFB1bGxQYXJzZXIkVGV4dEV2ZW50CiBvcmcuYXBhY2hlLmhhcm1vbnkueG1sLkV4cGF0UmVhZGVyCi1vcmcuYXBhY2hlLmhhcm1vbnkueG1sLmRvbS5ET01JbXBsZW1lbnRhdGlvbkltcGwKK29yZy5hcGFjaGUuaGFybW9ueS54bWwuZG9tLkF0dHJJbXBsCitvcmcuYXBhY2hlLmhhcm1vbnkueG1sLmRvbS5DaGFyYWN0ZXJEYXRhSW1wbAorb3JnLmFwYWNoZS5oYXJtb255LnhtbC5kb20uQ29tbWVudEltcGwKIG9yZy5hcGFjaGUuaGFybW9ueS54bWwuZG9tLkRvY3VtZW50SW1wbAorb3JnLmFwYWNoZS5oYXJtb255LnhtbC5kb20uRWxlbWVudEltcGwKK29yZy5hcGFjaGUuaGFybW9ueS54bWwuZG9tLklubmVyTm9kZUltcGwKK29yZy5hcGFjaGUuaGFybW9ueS54bWwuZG9tLk5vZGVJbXBsCitvcmcuYXBhY2hlLmhhcm1vbnkueG1sLmRvbS5UZXh0SW1wbAogb3JnLmFwYWNoZS5oYXJtb255LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3RvcnlJbXBsCiBvcmcuYXBhY2hlLmhhcm1vbnkueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVySW1wbAorb3JnLmFwYWNoZS5oYXJtb255LnhtbC5wYXJzZXJzLlNBWFBhcnNlckZhY3RvcnlJbXBsCiBvcmcuYXBhY2hlLmhhcm1vbnkueG5ldC5wcm92aWRlci5qc3NlLkFic3RyYWN0U2Vzc2lvbkNvbnRleHQKLW9yZy5hcGFjaGUuaGFybW9ueS54bmV0LnByb3ZpZGVyLmpzc2UuQ2xpZW50U2Vzc2lvbkNvbnRleHQKLW9yZy5hcGFjaGUuaGFybW9ueS54bmV0LnByb3ZpZGVyLmpzc2UuQ2xpZW50U2Vzc2lvbkNvbnRleHQkMQotb3JnLmFwYWNoZS5oYXJtb255LnhuZXQucHJvdmlkZXIuanNzZS5DbGllbnRTZXNzaW9uQ29udGV4dCRIb3N0QW5kUG9ydAogb3JnLmFwYWNoZS5oYXJtb255LnhuZXQucHJvdmlkZXIuanNzZS5GaWxlQ2xpZW50U2Vzc2lvbkNhY2hlCi1vcmcuYXBhY2hlLmhhcm1vbnkueG5ldC5wcm92aWRlci5qc3NlLkZpbGVDbGllbnRTZXNzaW9uQ2FjaGUkSW1wbAotb3JnLmFwYWNoZS5oYXJtb255LnhuZXQucHJvdmlkZXIuanNzZS5KU1NFUHJvdmlkZXIKLW9yZy5hcGFjaGUuaGFybW9ueS54bmV0LnByb3ZpZGVyLmpzc2UuSlNTRVByb3ZpZGVyJDEKLW9yZy5hcGFjaGUuaGFybW9ueS54bmV0LnByb3ZpZGVyLmpzc2UuS2V5TWFuYWdlckZhY3RvcnlJbXBsCi1vcmcuYXBhY2hlLmhhcm1vbnkueG5ldC5wcm92aWRlci5qc3NlLktleU1hbmFnZXJGYWN0b3J5SW1wbCQxCi1vcmcuYXBhY2hlLmhhcm1vbnkueG5ldC5wcm92aWRlci5qc3NlLktleU1hbmFnZXJJbXBsCiBvcmcuYXBhY2hlLmhhcm1vbnkueG5ldC5wcm92aWRlci5qc3NlLk5hdGl2ZUNyeXB0bwotb3JnLmFwYWNoZS5oYXJtb255LnhuZXQucHJvdmlkZXIuanNzZS5PcGVuU1NMTWVzc2FnZURpZ2VzdAogb3JnLmFwYWNoZS5oYXJtb255LnhuZXQucHJvdmlkZXIuanNzZS5PcGVuU1NMU2VydmVyU29ja2V0SW1wbAogb3JnLmFwYWNoZS5oYXJtb255LnhuZXQucHJvdmlkZXIuanNzZS5PcGVuU1NMU2Vzc2lvbkltcGwKIG9yZy5hcGFjaGUuaGFybW9ueS54bmV0LnByb3ZpZGVyLmpzc2UuT3BlblNTTFNvY2tldEZhY3RvcnlJbXBsCiBvcmcuYXBhY2hlLmhhcm1vbnkueG5ldC5wcm92aWRlci5qc3NlLk9wZW5TU0xTb2NrZXRJbXBsCiBvcmcuYXBhY2hlLmhhcm1vbnkueG5ldC5wcm92aWRlci5qc3NlLk9wZW5TU0xTb2NrZXRJbXBsJEZpbmFsaXplcgogb3JnLmFwYWNoZS5oYXJtb255LnhuZXQucHJvdmlkZXIuanNzZS5PcGVuU1NMU29ja2V0SW1wbCRMb2dnZXJIb2xkZXIKLW9yZy5hcGFjaGUuaGFybW9ueS54bmV0LnByb3ZpZGVyLmpzc2UuT3BlblNTTFNvY2tldEltcGwkU1NMSW5wdXRTdHJlYW0KLW9yZy5hcGFjaGUuaGFybW9ueS54bmV0LnByb3ZpZGVyLmpzc2UuT3BlblNTTFNvY2tldEltcGwkU1NMT3V0cHV0U3RyZWFtCiBvcmcuYXBhY2hlLmhhcm1vbnkueG5ldC5wcm92aWRlci5qc3NlLlByb3RvY29sVmVyc2lvbgotb3JnLmFwYWNoZS5oYXJtb255LnhuZXQucHJvdmlkZXIuanNzZS5TU0xDbGllbnRTZXNzaW9uQ2FjaGUKIG9yZy5hcGFjaGUuaGFybW9ueS54bmV0LnByb3ZpZGVyLmpzc2UuU1NMQ29udGV4dEltcGwKIG9yZy5hcGFjaGUuaGFybW9ueS54bmV0LnByb3ZpZGVyLmpzc2UuU1NMUGFyYW1ldGVycwogb3JnLmFwYWNoZS5oYXJtb255LnhuZXQucHJvdmlkZXIuanNzZS5TZXJ2ZXJTZXNzaW9uQ29udGV4dAotb3JnLmFwYWNoZS5oYXJtb255LnhuZXQucHJvdmlkZXIuanNzZS5TZXJ2ZXJTZXNzaW9uQ29udGV4dCQxCi1vcmcuYXBhY2hlLmhhcm1vbnkueG5ldC5wcm92aWRlci5qc3NlLlRydXN0TWFuYWdlckZhY3RvcnlJbXBsCi1vcmcuYXBhY2hlLmhhcm1vbnkueG5ldC5wcm92aWRlci5qc3NlLlRydXN0TWFuYWdlckZhY3RvcnlJbXBsJDEKLW9yZy5hcGFjaGUuaGFybW9ueS54bmV0LnByb3ZpZGVyLmpzc2UuVHJ1c3RNYW5hZ2VyRmFjdG9yeUltcGwkMgotb3JnLmFwYWNoZS5oYXJtb255LnhuZXQucHJvdmlkZXIuanNzZS5UcnVzdE1hbmFnZXJJbXBsCi1vcmcuYXBhY2hlLmh0dHAuQ29ubmVjdGlvblJldXNlU3RyYXRlZ3kKLW9yZy5hcGFjaGUuaHR0cC5Gb3JtYXR0ZWRIZWFkZXIKLW9yZy5hcGFjaGUuaHR0cC5IZWFkZXIKLW9yZy5hcGFjaGUuaHR0cC5IZWFkZXJFbGVtZW50Ci1vcmcuYXBhY2hlLmh0dHAuSGVhZGVyRWxlbWVudEl0ZXJhdG9yCi1vcmcuYXBhY2hlLmh0dHAuSGVhZGVySXRlcmF0b3IKLW9yZy5hcGFjaGUuaHR0cC5IdHRwQ2xpZW50Q29ubmVjdGlvbgotb3JnLmFwYWNoZS5odHRwLkh0dHBDb25uZWN0aW9uCi1vcmcuYXBhY2hlLmh0dHAuSHR0cENvbm5lY3Rpb25NZXRyaWNzCi1vcmcuYXBhY2hlLmh0dHAuSHR0cEVudGl0eQotb3JnLmFwYWNoZS5odHRwLkh0dHBFbnRpdHlFbmNsb3NpbmdSZXF1ZXN0Ci1vcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbgotb3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0Ci1vcmcuYXBhY2hlLmh0dHAuSHR0cEluZXRDb25uZWN0aW9uCi1vcmcuYXBhY2hlLmh0dHAuSHR0cE1lc3NhZ2UKLW9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdAotb3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0SW50ZXJjZXB0b3IKLW9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UKLW9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2VGYWN0b3J5Ci1vcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlSW50ZXJjZXB0b3IKIG9yZy5hcGFjaGUuaHR0cC5IdHRwVmVyc2lvbgotb3JnLmFwYWNoZS5odHRwLk5hbWVWYWx1ZVBhaXIKK29yZy5hcGFjaGUuaHR0cC5Ob0h0dHBSZXNwb25zZUV4Y2VwdGlvbgogb3JnLmFwYWNoZS5odHRwLlByb3RvY29sRXhjZXB0aW9uCi1vcmcuYXBhY2hlLmh0dHAuUHJvdG9jb2xWZXJzaW9uCi1vcmcuYXBhY2hlLmh0dHAuUmVhc29uUGhyYXNlQ2F0YWxvZwotb3JnLmFwYWNoZS5odHRwLlJlcXVlc3RMaW5lCi1vcmcuYXBhY2hlLmh0dHAuU3RhdHVzTGluZQotb3JnLmFwYWNoZS5odHRwLlRva2VuSXRlcmF0b3IKLW9yZy5hcGFjaGUuaHR0cC5hdXRoLkF1dGhTY2hlbWVGYWN0b3J5Ci1vcmcuYXBhY2hlLmh0dHAuYXV0aC5BdXRoU2NoZW1lUmVnaXN0cnkKLW9yZy5hcGFjaGUuaHR0cC5hdXRoLkF1dGhTdGF0ZQotb3JnLmFwYWNoZS5odHRwLmNsaWVudC5BdXRoZW50aWNhdGlvbkhhbmRsZXIKLW9yZy5hcGFjaGUuaHR0cC5jbGllbnQuQ2xpZW50UHJvdG9jb2xFeGNlcHRpb24KLW9yZy5hcGFjaGUuaHR0cC5jbGllbnQuQ29va2llU3RvcmUKLW9yZy5hcGFjaGUuaHR0cC5jbGllbnQuQ3JlZGVudGlhbHNQcm92aWRlcgogb3JnLmFwYWNoZS5odHRwLmNsaWVudC5IdHRwQ2xpZW50Ci1vcmcuYXBhY2hlLmh0dHAuY2xpZW50Lkh0dHBSZXF1ZXN0UmV0cnlIYW5kbGVyCi1vcmcuYXBhY2hlLmh0dHAuY2xpZW50LlJlZGlyZWN0SGFuZGxlcgotb3JnLmFwYWNoZS5odHRwLmNsaWVudC5SZXF1ZXN0RGlyZWN0b3IKLW9yZy5hcGFjaGUuaHR0cC5jbGllbnQuUmVzcG9uc2VIYW5kbGVyCi1vcmcuYXBhY2hlLmh0dHAuY2xpZW50LlVzZXJUb2tlbkhhbmRsZXIKLW9yZy5hcGFjaGUuaHR0cC5jbGllbnQubWV0aG9kcy5BYm9ydGFibGVIdHRwUmVxdWVzdAogb3JnLmFwYWNoZS5odHRwLmNsaWVudC5tZXRob2RzLkh0dHBFbnRpdHlFbmNsb3NpbmdSZXF1ZXN0QmFzZQogb3JnLmFwYWNoZS5odHRwLmNsaWVudC5tZXRob2RzLkh0dHBHZXQKIG9yZy5hcGFjaGUuaHR0cC5jbGllbnQubWV0aG9kcy5IdHRwUG9zdAogb3JnLmFwYWNoZS5odHRwLmNsaWVudC5tZXRob2RzLkh0dHBSZXF1ZXN0QmFzZQotb3JnLmFwYWNoZS5odHRwLmNsaWVudC5tZXRob2RzLkh0dHBVcmlSZXF1ZXN0Ci1vcmcuYXBhY2hlLmh0dHAuY2xpZW50LnBhcmFtcy5IdHRwQ2xpZW50UGFyYW1zCi1vcmcuYXBhY2hlLmh0dHAuY2xpZW50LnByb3RvY29sLlJlcXVlc3RBZGRDb29raWVzCi1vcmcuYXBhY2hlLmh0dHAuY2xpZW50LnByb3RvY29sLlJlcXVlc3REZWZhdWx0SGVhZGVycwotb3JnLmFwYWNoZS5odHRwLmNsaWVudC5wcm90b2NvbC5SZXF1ZXN0UHJveHlBdXRoZW50aWNhdGlvbgotb3JnLmFwYWNoZS5odHRwLmNsaWVudC5wcm90b2NvbC5SZXF1ZXN0VGFyZ2V0QXV0aGVudGljYXRpb24KLW9yZy5hcGFjaGUuaHR0cC5jbGllbnQucHJvdG9jb2wuUmVzcG9uc2VQcm9jZXNzQ29va2llcwotb3JnLmFwYWNoZS5odHRwLmNsaWVudC51dGlscy5VUklVdGlscwogb3JnLmFwYWNoZS5odHRwLmNvbm4uQmFzaWNNYW5hZ2VkRW50aXR5Ci1vcmcuYXBhY2hlLmh0dHAuY29ubi5DbGllbnRDb25uZWN0aW9uTWFuYWdlcgotb3JnLmFwYWNoZS5odHRwLmNvbm4uQ2xpZW50Q29ubmVjdGlvbk9wZXJhdG9yCi1vcmcuYXBhY2hlLmh0dHAuY29ubi5DbGllbnRDb25uZWN0aW9uUmVxdWVzdAotb3JnLmFwYWNoZS5odHRwLmNvbm4uQ29ubmVjdGlvbktlZXBBbGl2ZVN0cmF0ZWd5Ci1vcmcuYXBhY2hlLmh0dHAuY29ubi5Db25uZWN0aW9uUmVsZWFzZVRyaWdnZXIKLW9yZy5hcGFjaGUuaHR0cC5jb25uLkVvZlNlbnNvcklucHV0U3RyZWFtCi1vcmcuYXBhY2hlLmh0dHAuY29ubi5Fb2ZTZW5zb3JXYXRjaGVyCi1vcmcuYXBhY2hlLmh0dHAuY29ubi5NYW5hZ2VkQ2xpZW50Q29ubmVjdGlvbgotb3JnLmFwYWNoZS5odHRwLmNvbm4uT3BlcmF0ZWRDbGllbnRDb25uZWN0aW9uCi1vcmcuYXBhY2hlLmh0dHAuY29ubi5wYXJhbXMuQ29ubk1hbmFnZXJQTmFtZXMKIG9yZy5hcGFjaGUuaHR0cC5jb25uLnBhcmFtcy5Db25uTWFuYWdlclBhcmFtcwotb3JnLmFwYWNoZS5odHRwLmNvbm4ucGFyYW1zLkNvbm5NYW5hZ2VyUGFyYW1zJDEKLW9yZy5hcGFjaGUuaHR0cC5jb25uLnBhcmFtcy5Db25uUGVyUm91dGUKLW9yZy5hcGFjaGUuaHR0cC5jb25uLnBhcmFtcy5Db25uUGVyUm91dGVCZWFuCi1vcmcuYXBhY2hlLmh0dHAuY29ubi5wYXJhbXMuQ29ublJvdXRlUE5hbWVzCiBvcmcuYXBhY2hlLmh0dHAuY29ubi5wYXJhbXMuQ29ublJvdXRlUGFyYW1zCi1vcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkJhc2ljUm91dGVEaXJlY3Rvcgogb3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5IdHRwUm91dGUKLW9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlRGlyZWN0b3IKLW9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlUGxhbm5lcgotb3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5Sb3V0ZUluZm8KLW9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuUm91dGVJbmZvJExheWVyVHlwZQotb3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5Sb3V0ZUluZm8kVHVubmVsVHlwZQotb3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5Sb3V0ZVRyYWNrZXIKLW9yZy5hcGFjaGUuaHR0cC5jb25uLnNjaGVtZS5MYXllcmVkU29ja2V0RmFjdG9yeQogb3JnLmFwYWNoZS5odHRwLmNvbm4uc2NoZW1lLlBsYWluU29ja2V0RmFjdG9yeQotb3JnLmFwYWNoZS5odHRwLmNvbm4uc2NoZW1lLlNjaGVtZQotb3JnLmFwYWNoZS5odHRwLmNvbm4uc2NoZW1lLlNjaGVtZVJlZ2lzdHJ5Ci1vcmcuYXBhY2hlLmh0dHAuY29ubi5zY2hlbWUuU29ja2V0RmFjdG9yeQogb3JnLmFwYWNoZS5odHRwLmNvbm4uc3NsLkFic3RyYWN0VmVyaWZpZXIKLW9yZy5hcGFjaGUuaHR0cC5jb25uLnNzbC5BbGxvd0FsbEhvc3RuYW1lVmVyaWZpZXIKLW9yZy5hcGFjaGUuaHR0cC5jb25uLnNzbC5Ccm93c2VyQ29tcGF0SG9zdG5hbWVWZXJpZmllcgogb3JnLmFwYWNoZS5odHRwLmNvbm4uc3NsLlNTTFNvY2tldEZhY3RvcnkKLW9yZy5hcGFjaGUuaHR0cC5jb25uLnNzbC5TdHJpY3RIb3N0bmFtZVZlcmlmaWVyCi1vcmcuYXBhY2hlLmh0dHAuY29ubi5zc2wuWDUwOUhvc3RuYW1lVmVyaWZpZXIKLW9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ2xpZW50Q29va2llCi1vcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZQotb3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVBdHRyaWJ1dGVIYW5kbGVyCi1vcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZUlkZW50aXR5Q29tcGFyYXRvcgotb3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVPcmlnaW4KLW9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llUGF0aENvbXBhcmF0b3IKLW9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llU3BlYwotb3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVTcGVjRmFjdG9yeQotb3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVTcGVjUmVnaXN0cnkKLW9yZy5hcGFjaGUuaHR0cC5jb29raWUuU2V0Q29va2llCi1vcmcuYXBhY2hlLmh0dHAuZW50aXR5LkFic3RyYWN0SHR0cEVudGl0eQorb3JnLmFwYWNoZS5odHRwLmNvbm4udXRpbC5JbmV0QWRkcmVzc1V0aWxzCiBvcmcuYXBhY2hlLmh0dHAuZW50aXR5LkJhc2ljSHR0cEVudGl0eQotb3JnLmFwYWNoZS5odHRwLmVudGl0eS5CeXRlQXJyYXlFbnRpdHkKLW9yZy5hcGFjaGUuaHR0cC5lbnRpdHkuQ29udGVudExlbmd0aFN0cmF0ZWd5Ci1vcmcuYXBhY2hlLmh0dHAuZW50aXR5Lkh0dHBFbnRpdHlXcmFwcGVyCitvcmcuYXBhY2hlLmh0dHAuZW50aXR5LklucHV0U3RyZWFtRW50aXR5CiBvcmcuYXBhY2hlLmh0dHAuZW50aXR5LlN0cmluZ0VudGl0eQogb3JnLmFwYWNoZS5odHRwLmltcGwuQWJzdHJhY3RIdHRwQ2xpZW50Q29ubmVjdGlvbgotb3JnLmFwYWNoZS5odHRwLmltcGwuRGVmYXVsdENvbm5lY3Rpb25SZXVzZVN0cmF0ZWd5Ci1vcmcuYXBhY2hlLmh0dHAuaW1wbC5EZWZhdWx0SHR0cFJlc3BvbnNlRmFjdG9yeQogb3JnLmFwYWNoZS5odHRwLmltcGwuRW5nbGlzaFJlYXNvblBocmFzZUNhdGFsb2cKIG9yZy5hcGFjaGUuaHR0cC5pbXBsLkh0dHBDb25uZWN0aW9uTWV0cmljc0ltcGwKIG9yZy5hcGFjaGUuaHR0cC5pbXBsLlNvY2tldEh0dHBDbGllbnRDb25uZWN0aW9uCi1vcmcuYXBhY2hlLmh0dHAuaW1wbC5hdXRoLkJhc2ljU2NoZW1lRmFjdG9yeQotb3JnLmFwYWNoZS5odHRwLmltcGwuYXV0aC5EaWdlc3RTY2hlbWVGYWN0b3J5CiBvcmcuYXBhY2hlLmh0dHAuaW1wbC5jbGllbnQuQWJzdHJhY3RBdXRoZW50aWNhdGlvbkhhbmRsZXIKIG9yZy5hcGFjaGUuaHR0cC5pbXBsLmNsaWVudC5BYnN0cmFjdEh0dHBDbGllbnQKLW9yZy5hcGFjaGUuaHR0cC5pbXBsLmNsaWVudC5CYXNpY0Nvb2tpZVN0b3JlCi1vcmcuYXBhY2hlLmh0dHAuaW1wbC5jbGllbnQuQmFzaWNDcmVkZW50aWFsc1Byb3ZpZGVyCi1vcmcuYXBhY2hlLmh0dHAuaW1wbC5jbGllbnQuQ2xpZW50UGFyYW1zU3RhY2sKLW9yZy5hcGFjaGUuaHR0cC5pbXBsLmNsaWVudC5EZWZhdWx0Q29ubmVjdGlvbktlZXBBbGl2ZVN0cmF0ZWd5CiBvcmcuYXBhY2hlLmh0dHAuaW1wbC5jbGllbnQuRGVmYXVsdEh0dHBDbGllbnQKLW9yZy5hcGFjaGUuaHR0cC5pbXBsLmNsaWVudC5EZWZhdWx0SHR0cFJlcXVlc3RSZXRyeUhhbmRsZXIKLW9yZy5hcGFjaGUuaHR0cC5pbXBsLmNsaWVudC5EZWZhdWx0UHJveHlBdXRoZW50aWNhdGlvbkhhbmRsZXIKLW9yZy5hcGFjaGUuaHR0cC5pbXBsLmNsaWVudC5EZWZhdWx0UmVkaXJlY3RIYW5kbGVyCi1vcmcuYXBhY2hlLmh0dHAuaW1wbC5jbGllbnQuRGVmYXVsdFJlcXVlc3REaXJlY3Rvcgotb3JnLmFwYWNoZS5odHRwLmltcGwuY2xpZW50LkRlZmF1bHRUYXJnZXRBdXRoZW50aWNhdGlvbkhhbmRsZXIKLW9yZy5hcGFjaGUuaHR0cC5pbXBsLmNsaWVudC5EZWZhdWx0VXNlclRva2VuSGFuZGxlcgogb3JnLmFwYWNoZS5odHRwLmltcGwuY2xpZW50LkVudGl0eUVuY2xvc2luZ1JlcXVlc3RXcmFwcGVyCi1vcmcuYXBhY2hlLmh0dHAuaW1wbC5jbGllbnQuUmVxdWVzdFdyYXBwZXIKLW9yZy5hcGFjaGUuaHR0cC5pbXBsLmNsaWVudC5Sb3V0ZWRSZXF1ZXN0CiBvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLkFic3RyYWN0Q2xpZW50Q29ubkFkYXB0ZXIKLW9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4uQWJzdHJhY3RQb29sRW50cnkKIG9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4uQWJzdHJhY3RQb29sZWRDb25uQWRhcHRlcgogb3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi5EZWZhdWx0Q2xpZW50Q29ubmVjdGlvbgotb3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi5EZWZhdWx0Q2xpZW50Q29ubmVjdGlvbk9wZXJhdG9yCi1vcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLkRlZmF1bHRIdHRwUm91dGVQbGFubmVyCi1vcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLkRlZmF1bHRSZXNwb25zZVBhcnNlcgotb3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi5JZGxlQ29ubmVjdGlvbkhhbmRsZXIKLW9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4uSWRsZUNvbm5lY3Rpb25IYW5kbGVyJFRpbWVWYWx1ZXMKIG9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4uU2luZ2xlQ2xpZW50Q29ubk1hbmFnZXIKLW9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4uU2luZ2xlQ2xpZW50Q29ubk1hbmFnZXIkMQotb3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi5TaW5nbGVDbGllbnRDb25uTWFuYWdlciRDb25uQWRhcHRlcgotb3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi5TaW5nbGVDbGllbnRDb25uTWFuYWdlciRQb29sRW50cnkKLW9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4udHNjY20uQWJzdHJhY3RDb25uUG9vbAotb3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi50c2NjbS5CYXNpY1Bvb2xFbnRyeQotb3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi50c2NjbS5CYXNpY1Bvb2xFbnRyeVJlZgotb3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi50c2NjbS5CYXNpY1Bvb2xlZENvbm5BZGFwdGVyCiBvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLnRzY2NtLkNvbm5Qb29sQnlSb3V0ZQotb3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi50c2NjbS5Db25uUG9vbEJ5Um91dGUkMQotb3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi50c2NjbS5Qb29sRW50cnlSZXF1ZXN0Ci1vcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLnRzY2NtLlJlZlF1ZXVlSGFuZGxlcgotb3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi50c2NjbS5SZWZRdWV1ZVdvcmtlcgotb3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi50c2NjbS5Sb3V0ZVNwZWNpZmljUG9vbAogb3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi50c2NjbS5UaHJlYWRTYWZlQ2xpZW50Q29ubk1hbmFnZXIKLW9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4udHNjY20uVGhyZWFkU2FmZUNsaWVudENvbm5NYW5hZ2VyJDEKLW9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4udHNjY20uV2FpdGluZ1RocmVhZEFib3J0ZXIKLW9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5BYnN0cmFjdENvb2tpZUF0dHJpYnV0ZUhhbmRsZXIKLW9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5BYnN0cmFjdENvb2tpZVNwZWMKIG9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5CYXNpY0NsaWVudENvb2tpZQotb3JnLmFwYWNoZS5odHRwLmltcGwuY29va2llLkJhc2ljQ29tbWVudEhhbmRsZXIKLW9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5CYXNpY0RvbWFpbkhhbmRsZXIKLW9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5CYXNpY0V4cGlyZXNIYW5kbGVyCi1vcmcuYXBhY2hlLmh0dHAuaW1wbC5jb29raWUuQmFzaWNNYXhBZ2VIYW5kbGVyCi1vcmcuYXBhY2hlLmh0dHAuaW1wbC5jb29raWUuQmFzaWNQYXRoSGFuZGxlcgotb3JnLmFwYWNoZS5odHRwLmltcGwuY29va2llLkJhc2ljU2VjdXJlSGFuZGxlcgotb3JnLmFwYWNoZS5odHRwLmltcGwuY29va2llLkJlc3RNYXRjaFNwZWMKLW9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5CZXN0TWF0Y2hTcGVjRmFjdG9yeQogb3JnLmFwYWNoZS5odHRwLmltcGwuY29va2llLkJyb3dzZXJDb21wYXRTcGVjCi1vcmcuYXBhY2hlLmh0dHAuaW1wbC5jb29raWUuQnJvd3NlckNvbXBhdFNwZWNGYWN0b3J5Ci1vcmcuYXBhY2hlLmh0dHAuaW1wbC5jb29raWUuQ29va2llU3BlY0Jhc2UKIG9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5EYXRlVXRpbHMKLW9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5OZXRzY2FwZURyYWZ0U3BlY0ZhY3RvcnkKLW9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5SRkMyMTA5RG9tYWluSGFuZGxlcgogb3JnLmFwYWNoZS5odHRwLmltcGwuY29va2llLlJGQzIxMDlTcGVjCi1vcmcuYXBhY2hlLmh0dHAuaW1wbC5jb29raWUuUkZDMjEwOVNwZWNGYWN0b3J5Ci1vcmcuYXBhY2hlLmh0dHAuaW1wbC5jb29raWUuUkZDMjEwOVZlcnNpb25IYW5kbGVyCi1vcmcuYXBhY2hlLmh0dHAuaW1wbC5jb29raWUuUkZDMjk2NUNvbW1lbnRVcmxBdHRyaWJ1dGVIYW5kbGVyCi1vcmcuYXBhY2hlLmh0dHAuaW1wbC5jb29raWUuUkZDMjk2NURpc2NhcmRBdHRyaWJ1dGVIYW5kbGVyCi1vcmcuYXBhY2hlLmh0dHAuaW1wbC5jb29raWUuUkZDMjk2NURvbWFpbkF0dHJpYnV0ZUhhbmRsZXIKLW9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5SRkMyOTY1UG9ydEF0dHJpYnV0ZUhhbmRsZXIKIG9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5SRkMyOTY1U3BlYwotb3JnLmFwYWNoZS5odHRwLmltcGwuY29va2llLlJGQzI5NjVTcGVjRmFjdG9yeQotb3JnLmFwYWNoZS5odHRwLmltcGwuY29va2llLlJGQzI5NjVWZXJzaW9uQXR0cmlidXRlSGFuZGxlcgotb3JnLmFwYWNoZS5odHRwLmltcGwuZW50aXR5LkVudGl0eURlc2VyaWFsaXplcgotb3JnLmFwYWNoZS5odHRwLmltcGwuZW50aXR5LkVudGl0eVNlcmlhbGl6ZXIKLW9yZy5hcGFjaGUuaHR0cC5pbXBsLmVudGl0eS5MYXhDb250ZW50TGVuZ3RoU3RyYXRlZ3kKLW9yZy5hcGFjaGUuaHR0cC5pbXBsLmVudGl0eS5TdHJpY3RDb250ZW50TGVuZ3RoU3RyYXRlZ3kKLW9yZy5hcGFjaGUuaHR0cC5pbXBsLmlvLkFic3RyYWN0TWVzc2FnZVBhcnNlcgotb3JnLmFwYWNoZS5odHRwLmltcGwuaW8uQWJzdHJhY3RNZXNzYWdlV3JpdGVyCiBvcmcuYXBhY2hlLmh0dHAuaW1wbC5pby5BYnN0cmFjdFNlc3Npb25JbnB1dEJ1ZmZlcgotb3JnLmFwYWNoZS5odHRwLmltcGwuaW8uQWJzdHJhY3RTZXNzaW9uT3V0cHV0QnVmZmVyCi1vcmcuYXBhY2hlLmh0dHAuaW1wbC5pby5DaHVua2VkSW5wdXRTdHJlYW0KLW9yZy5hcGFjaGUuaHR0cC5pbXBsLmlvLkNvbnRlbnRMZW5ndGhJbnB1dFN0cmVhbQotb3JnLmFwYWNoZS5odHRwLmltcGwuaW8uQ29udGVudExlbmd0aE91dHB1dFN0cmVhbQotb3JnLmFwYWNoZS5odHRwLmltcGwuaW8uSHR0cFJlcXVlc3RXcml0ZXIKLW9yZy5hcGFjaGUuaHR0cC5pbXBsLmlvLkh0dHBUcmFuc3BvcnRNZXRyaWNzSW1wbAogb3JnLmFwYWNoZS5odHRwLmltcGwuaW8uU29ja2V0SW5wdXRCdWZmZXIKLW9yZy5hcGFjaGUuaHR0cC5pbXBsLmlvLlNvY2tldE91dHB1dEJ1ZmZlcgotb3JnLmFwYWNoZS5odHRwLmlvLkh0dHBNZXNzYWdlUGFyc2VyCi1vcmcuYXBhY2hlLmh0dHAuaW8uSHR0cE1lc3NhZ2VXcml0ZXIKLW9yZy5hcGFjaGUuaHR0cC5pby5IdHRwVHJhbnNwb3J0TWV0cmljcwotb3JnLmFwYWNoZS5odHRwLmlvLlNlc3Npb25JbnB1dEJ1ZmZlcgotb3JnLmFwYWNoZS5odHRwLmlvLlNlc3Npb25PdXRwdXRCdWZmZXIKIG9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkFic3RyYWN0SHR0cE1lc3NhZ2UKLW9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkJhc2ljSGVhZGVyCiBvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5CYXNpY0hlYWRlckVsZW1lbnQKLW9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkJhc2ljSGVhZGVyRWxlbWVudEl0ZXJhdG9yCi1vcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5CYXNpY0hlYWRlclZhbHVlUGFyc2VyCitvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5CYXNpY0h0dHBFbnRpdHlFbmNsb3NpbmdSZXF1ZXN0CitvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5CYXNpY0h0dHBSZXF1ZXN0CiBvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5CYXNpY0h0dHBSZXNwb25zZQogb3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuQmFzaWNMaW5lRm9ybWF0dGVyCiBvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5CYXNpY0xpbmVQYXJzZXIKLW9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkJhc2ljTGlzdEhlYWRlckl0ZXJhdG9yCi1vcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5CYXNpY05hbWVWYWx1ZVBhaXIKLW9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkJhc2ljUmVxdWVzdExpbmUKLW9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkJhc2ljU3RhdHVzTGluZQogb3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuQmFzaWNUb2tlbkl0ZXJhdG9yCi1vcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5CdWZmZXJlZEhlYWRlcgotb3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuSGVhZGVyR3JvdXAKLW9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkhlYWRlclZhbHVlUGFyc2VyCi1vcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5MaW5lRm9ybWF0dGVyCi1vcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5MaW5lUGFyc2VyCi1vcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5QYXJzZXJDdXJzb3IKIG9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuQWJzdHJhY3RIdHRwUGFyYW1zCiBvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkJhc2ljSHR0cFBhcmFtcwotb3JnLmFwYWNoZS5odHRwLnBhcmFtcy5Db3JlQ29ubmVjdGlvblBOYW1lcwotb3JnLmFwYWNoZS5odHRwLnBhcmFtcy5Db3JlUHJvdG9jb2xQTmFtZXMKLW9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cENvbm5lY3Rpb25QYXJhbXMKLW9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcwotb3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUHJvdG9jb2xQYXJhbXMKLW9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5CYXNpY0h0dHBDb250ZXh0CiBvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuQmFzaWNIdHRwUHJvY2Vzc29yCiBvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSFRUUAotb3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ci1vcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cFByb2Nlc3Nvcgotb3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBSZXF1ZXN0RXhlY3V0b3IKLW9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwUmVxdWVzdEludGVyY2VwdG9yTGlzdAotb3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBSZXNwb25zZUludGVyY2VwdG9yTGlzdAotb3JnLmFwYWNoZS5odHRwLnByb3RvY29sLlJlcXVlc3RDb25uQ29udHJvbAotb3JnLmFwYWNoZS5odHRwLnByb3RvY29sLlJlcXVlc3RDb250ZW50Ci1vcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuUmVxdWVzdEV4cGVjdENvbnRpbnVlCi1vcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuUmVxdWVzdFRhcmdldEhvc3QKLW9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5SZXF1ZXN0VXNlckFnZW50Ci1vcmcuYXBhY2hlLmh0dHAudXRpbC5CeXRlQXJyYXlCdWZmZXIKLW9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlcgotb3JnLmFwYWNoZS5odHRwLnV0aWwuRW50aXR5VXRpbHMKLW9yZy5hcGFjaGUuaHR0cC51dGlsLkxhbmdVdGlscwotb3JnLmFwYWNoZS5odHRwLnV0aWwuVmVyc2lvbkluZm8KLW9yZy5ib3VuY3ljYXN0bGUuYXNuMS5BU04xQ2hvaWNlCi1vcmcuYm91bmN5Y2FzdGxlLmFzbjEuQVNOMUNvbGxlY3Rpb24KLW9yZy5ib3VuY3ljYXN0bGUuYXNuMS5BU04xQ29sbGVjdGlvbiRBU04xQ29sbGVjdGlvbkVudW1lcmF0aW9uCi1vcmcuYm91bmN5Y2FzdGxlLmFzbjEuQVNOMUVuY29kYWJsZQotb3JnLmJvdW5jeWNhc3RsZS5hc24xLkFTTjFFbmNvZGFibGVWZWN0b3IKLW9yZy5ib3VuY3ljYXN0bGUuYXNuMS5BU04xSW5wdXRTdHJlYW0KLW9yZy5ib3VuY3ljYXN0bGUuYXNuMS5BU04xSW5wdXRTdHJlYW0kMQotb3JnLmJvdW5jeWNhc3RsZS5hc24xLkFTTjFOdWxsCi1vcmcuYm91bmN5Y2FzdGxlLmFzbjEuQVNOMU9jdGV0U3RyaW5nCi1vcmcuYm91bmN5Y2FzdGxlLmFzbjEuQVNOMU91dHB1dFN0cmVhbQotb3JnLmJvdW5jeWNhc3RsZS5hc24xLkFTTjFTZXF1ZW5jZQotb3JnLmJvdW5jeWNhc3RsZS5hc24xLkFTTjFTZXQKLW9yZy5ib3VuY3ljYXN0bGUuYXNuMS5BU04xVGFnZ2VkT2JqZWN0Ci1vcmcuYm91bmN5Y2FzdGxlLmFzbjEuREVSQml0U3RyaW5nCi1vcmcuYm91bmN5Y2FzdGxlLmFzbjEuREVSQm9vbGVhbgotb3JnLmJvdW5jeWNhc3RsZS5hc24xLkRFUkVuY29kYWJsZQotb3JnLmJvdW5jeWNhc3RsZS5hc24xLkRFUkVuY29kYWJsZVZlY3Rvcgotb3JnLmJvdW5jeWNhc3RsZS5hc24xLkRFUklBNVN0cmluZwotb3JnLmJvdW5jeWNhc3RsZS5hc24xLkRFUkludGVnZXIKIG9yZy5ib3VuY3ljYXN0bGUuYXNuMS5ERVJOdWxsCiBvcmcuYm91bmN5Y2FzdGxlLmFzbjEuREVST2JqZWN0CiBvcmcuYm91bmN5Y2FzdGxlLmFzbjEuREVST2JqZWN0SWRlbnRpZmllcgotb3JnLmJvdW5jeWNhc3RsZS5hc24xLkRFUk9jdGV0U3RyaW5nCi1vcmcuYm91bmN5Y2FzdGxlLmFzbjEuREVST3V0cHV0U3RyZWFtCi1vcmcuYm91bmN5Y2FzdGxlLmFzbjEuREVSUHJpbnRhYmxlU3RyaW5nCi1vcmcuYm91bmN5Y2FzdGxlLmFzbjEuREVSU2VxdWVuY2UKLW9yZy5ib3VuY3ljYXN0bGUuYXNuMS5ERVJTZXQKLW9yZy5ib3VuY3ljYXN0bGUuYXNuMS5ERVJTdHJpbmcKLW9yZy5ib3VuY3ljYXN0bGUuYXNuMS5ERVJUYWdnZWRPYmplY3QKLW9yZy5ib3VuY3ljYXN0bGUuYXNuMS5ERVJUYWdzCi1vcmcuYm91bmN5Y2FzdGxlLmFzbjEuREVSVVRDVGltZQotb3JnLmJvdW5jeWNhc3RsZS5hc24xLkRFUlVURjhTdHJpbmcKLW9yZy5ib3VuY3ljYXN0bGUuYXNuMS5PSURUb2tlbml6ZXIKLW9yZy5ib3VuY3ljYXN0bGUuYXNuMS5PcmRlcmVkVGFibGUKIG9yZy5ib3VuY3ljYXN0bGUuYXNuMS5pYW5hLklBTkFPYmplY3RJZGVudGlmaWVycwogb3JnLmJvdW5jeWNhc3RsZS5hc24xLm5pc3QuTklTVE9iamVjdElkZW50aWZpZXJzCiBvcmcuYm91bmN5Y2FzdGxlLmFzbjEub2l3Lk9JV09iamVjdElkZW50aWZpZXJzCiBvcmcuYm91bmN5Y2FzdGxlLmFzbjEucGtjcy5QS0NTT2JqZWN0SWRlbnRpZmllcnMKLW9yZy5ib3VuY3ljYXN0bGUuYXNuMS54NTA5LkFsZ29yaXRobUlkZW50aWZpZXIKLW9yZy5ib3VuY3ljYXN0bGUuYXNuMS54NTA5LkJhc2ljQ29uc3RyYWludHMKLW9yZy5ib3VuY3ljYXN0bGUuYXNuMS54NTA5LlJTQVB1YmxpY0tleVN0cnVjdHVyZQotb3JnLmJvdW5jeWNhc3RsZS5hc24xLng1MDkuU3ViamVjdFB1YmxpY0tleUluZm8KLW9yZy5ib3VuY3ljYXN0bGUuYXNuMS54NTA5LlRCU0NlcnRpZmljYXRlU3RydWN0dXJlCi1vcmcuYm91bmN5Y2FzdGxlLmFzbjEueDUwOS5UaW1lCi1vcmcuYm91bmN5Y2FzdGxlLmFzbjEueDUwOS5YNTA5Q2VydGlmaWNhdGVTdHJ1Y3R1cmUKLW9yZy5ib3VuY3ljYXN0bGUuYXNuMS54NTA5Llg1MDlFeHRlbnNpb24KIG9yZy5ib3VuY3ljYXN0bGUuYXNuMS54NTA5Llg1MDlFeHRlbnNpb25zCiBvcmcuYm91bmN5Y2FzdGxlLmFzbjEueDUwOS5YNTA5TmFtZQotb3JnLmJvdW5jeWNhc3RsZS5hc24xLng1MDkuWDUwOU5hbWVFbGVtZW50TGlzdAotb3JnLmJvdW5jeWNhc3RsZS5hc24xLng1MDkuWDUwOU9iamVjdElkZW50aWZpZXJzCi1vcmcuYm91bmN5Y2FzdGxlLmNyeXB0by5DaXBoZXJQYXJhbWV0ZXJzCi1vcmcuYm91bmN5Y2FzdGxlLmNyeXB0by5EaWdlc3QKLW9yZy5ib3VuY3ljYXN0bGUuY3J5cHRvLkV4dGVuZGVkRGlnZXN0Ci1vcmcuYm91bmN5Y2FzdGxlLmNyeXB0by5NYWMKLW9yZy5ib3VuY3ljYXN0bGUuY3J5cHRvLlBCRVBhcmFtZXRlcnNHZW5lcmF0b3IKK29yZy5ib3VuY3ljYXN0bGUuY3J5cHRvLmRpZ2VzdHMuU0hBMURpZ2VzdAogb3JnLmJvdW5jeWNhc3RsZS5jcnlwdG8uZW5naW5lcy5BRVNGYXN0RW5naW5lCiBvcmcuYm91bmN5Y2FzdGxlLmNyeXB0by5nZW5lcmF0b3JzLlBLQ1MxMlBhcmFtZXRlcnNHZW5lcmF0b3IKLW9yZy5ib3VuY3ljYXN0bGUuY3J5cHRvLmlvLk1hY0lucHV0U3RyZWFtCiBvcmcuYm91bmN5Y2FzdGxlLmNyeXB0by5tYWNzLkhNYWMKLW9yZy5ib3VuY3ljYXN0bGUuY3J5cHRvLnBhcmFtcy5LZXlQYXJhbWV0ZXIKLW9yZy5ib3VuY3ljYXN0bGUuamNlLmludGVyZmFjZXMuQkNLZXlTdG9yZQotb3JnLmJvdW5jeWNhc3RsZS5qY2UuaW50ZXJmYWNlcy5QS0NTMTJCYWdBdHRyaWJ1dGVDYXJyaWVyCiBvcmcuYm91bmN5Y2FzdGxlLmpjZS5wcm92aWRlci5Cb3VuY3lDYXN0bGVQcm92aWRlcgogb3JnLmJvdW5jeWNhc3RsZS5qY2UucHJvdmlkZXIuQ2VydFBhdGhWYWxpZGF0b3JVdGlsaXRpZXMKK29yZy5ib3VuY3ljYXN0bGUuamNlLnByb3ZpZGVyLkpDRUJsb2NrQ2lwaGVyCiBvcmcuYm91bmN5Y2FzdGxlLmpjZS5wcm92aWRlci5KQ0VCbG9ja0NpcGhlciRBRVMKLW9yZy5ib3VuY3ljYXN0bGUuamNlLnByb3ZpZGVyLkpDRVJTQVB1YmxpY0tleQorb3JnLmJvdW5jeWNhc3RsZS5qY2UucHJvdmlkZXIuSkNFTWFjCiBvcmcuYm91bmN5Y2FzdGxlLmpjZS5wcm92aWRlci5KREtLZXlGYWN0b3J5CiBvcmcuYm91bmN5Y2FzdGxlLmpjZS5wcm92aWRlci5KREtLZXlGYWN0b3J5JFJTQQogb3JnLmJvdW5jeWNhc3RsZS5qY2UucHJvdmlkZXIuSkRLS2V5U3RvcmUKLW9yZy5ib3VuY3ljYXN0bGUuamNlLnByb3ZpZGVyLkpES0tleVN0b3JlJFN0b3JlRW50cnkKIG9yZy5ib3VuY3ljYXN0bGUuamNlLnByb3ZpZGVyLkpES1g1MDlDZXJ0aWZpY2F0ZUZhY3RvcnkKIG9yZy5ib3VuY3ljYXN0bGUuamNlLnByb3ZpZGVyLlBLSVhDZXJ0UGF0aFZhbGlkYXRvclNwaQotb3JnLmJvdW5jeWNhc3RsZS5qY2UucHJvdmlkZXIuUEtJWFBvbGljeU5vZGUKLW9yZy5ib3VuY3ljYXN0bGUuamNlLnByb3ZpZGVyLlJTQVV0aWwKK29yZy5ib3VuY3ljYXN0bGUuamNlLnByb3ZpZGVyLldyYXBDaXBoZXJTcGkKIG9yZy5ib3VuY3ljYXN0bGUuamNlLnByb3ZpZGVyLlg1MDlDZXJ0aWZpY2F0ZU9iamVjdAotb3JnLmJvdW5jeWNhc3RsZS51dGlsLlN0cmluZ3MKK29yZy5jY2lsLmNvd2FuLnRhZ3NvdXAuQXR0cmlidXRlc0ltcGwKIG9yZy5jY2lsLmNvd2FuLnRhZ3NvdXAuSFRNTFNjYW5uZXIKK29yZy5jY2lsLmNvd2FuLnRhZ3NvdXAuSFRNTFNjaGVtYQogb3JnLmNjaWwuY293YW4udGFnc291cC5QYXJzZXIKLW9yZy5qc29uLkpTT05BcnJheQogb3JnLmpzb24uSlNPTk9iamVjdAotb3JnLmpzb24uSlNPTk9iamVjdCROdWxsCi1vcmcuanNvbi5KU09OVG9rZW5lcgogb3JnLmt4bWwyLmlvLktYbWxQYXJzZXIKIG9yZy5reG1sMi5pby5LWG1sU2VyaWFsaXplcgogb3JnLm9wZW5zc2wuTmF0aXZlQk4KLW9yZy53M2MuZG9tLkRPTUltcGxlbWVudGF0aW9uCiBvcmcueG1sLnNheC5BdHRyaWJ1dGVzCi1vcmcueG1sLnNheC5Db250ZW50SGFuZGxlcgotb3JnLnhtbC5zYXguRFRESGFuZGxlcgotb3JnLnhtbC5zYXguRW50aXR5UmVzb2x2ZXIKLW9yZy54bWwuc2F4LkVycm9ySGFuZGxlcgotb3JnLnhtbC5zYXguSW5wdXRTb3VyY2UKLW9yZy54bWwuc2F4LkxvY2F0b3IKLW9yZy54bWwuc2F4LlhNTFJlYWRlcgogb3JnLnhtbC5zYXguaGVscGVycy5EZWZhdWx0SGFuZGxlcgogb3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlcgotb3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlckZhY3RvcnkKLW9yZy54bWxwdWxsLnYxLlhtbFNlcmlhbGl6ZXIKK29yZy54bWxwdWxsLnYxLlhtbFB1bGxQYXJzZXJFeGNlcHRpb24KK29yZy54bWxwdWxsLnYxLnNheDIuRHJpdmVyCiBzdW4ubWlzYy5VbnNhZmUKZGlmZiAtLWdpdCBhL3Rvb2xzL3ByZWxvYWQvMjAwOTA4MTEuY29tcGlsZWQgYi90b29scy9wcmVsb2FkLzIwMDkwODExLmNvbXBpbGVkCmluZGV4IGRkNjE0ODcuLjZkYmVjYTAgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3ByZWxvYWQvMjAwOTA4MTEuY29tcGlsZWQKKysrIGIvdG9vbHMvcHJlbG9hZC8yMDA5MDgxMS5jb21waWxlZApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90b29scy9wcmVsb2FkL0FuZHJvaWQubWsgYi90b29scy9wcmVsb2FkL0FuZHJvaWQubWsKaW5kZXggZTZmYTEwMy4uZjMyNTg3MCAxMDA2NDQKLS0tIGEvdG9vbHMvcHJlbG9hZC9BbmRyb2lkLm1rCisrKyBiL3Rvb2xzL3ByZWxvYWQvQW5kcm9pZC5tawpAQCAtMywxMyArMywxMyBAQAogaW5jbHVkZSAkKENMRUFSX1ZBUlMpCiAKIExPQ0FMX1NSQ19GSUxFUyA6PSBcCi0JQ2xhc3NSYW5rLmphdmEgXAogCUNvbXBpbGUuamF2YSAgXAogCUxvYWRlZENsYXNzLmphdmEgXAogCU1lbW9yeVVzYWdlLmphdmEgXAogCU9wZXJhdGlvbi5qYXZhIFwKIAlQb2xpY3kuamF2YSBcCiAJUHJpbnRDc3YuamF2YSBcCisJUHJpbnRIdG1sRGlmZi5qYXZhIFwKIAlQcmludFBzVHJlZS5qYXZhIFwKIAlQcm9jLmphdmEgXAogCVJlY29yZC5qYXZhIFwKZGlmZiAtLWdpdCBhL3Rvb2xzL3ByZWxvYWQvQ2xhc3NSYW5rLmphdmEgYi90b29scy9wcmVsb2FkL0NsYXNzUmFuay5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTYyZDVjLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3ByZWxvYWQvQ2xhc3NSYW5rLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotaW1wb3J0IGphdmEudXRpbC5Db21wYXJhdG9yOwotCi0vKioKLSAqIFJhbmtzIGNsYXNzZXMgZm9yIHByZWxvYWRpbmcgYmFzZWQgb24gaG93IGxvbmcgdGhlaXIgb3BlcmF0aW9ucyB0b29rCi0gKiBhbmQgaG93IGVhcmx5IHRoZSBvcGVyYXRpb25zIGhhcHBlbmVkLiBIaWdoZXIgcmFua2VkIGNsYXNzZXMgY29tZSBmaXJzdC4KLSAqLwotY2xhc3MgQ2xhc3NSYW5rIGltcGxlbWVudHMgQ29tcGFyYXRvcjxPcGVyYXRpb24+IHsKLQotICAgIC8qKgotICAgICAqIEluY3JlYXNlIHRoaXMgbnVtYmVyIHRvIGFkZCBtb3JlIHdlaWdodCB0byBjbGFzc2VzIHdoaWNoIHdlcmUgbG9hZGVkCi0gICAgICogZWFybGllci4KLSAgICAgKi8KLSAgICBzdGF0aWMgZmluYWwgaW50IFNFUVVFTkNFX1dFSUdIVCA9IDUwMDsgLy8gMC41bXMKLQotICAgIHN0YXRpYyBmaW5hbCBpbnQgQlVDS0VUX1NJWkUgPSA1OwotCi0gICAgcHVibGljIGludCBjb21wYXJlKE9wZXJhdGlvbiBhLCBPcGVyYXRpb24gYikgewotICAgICAgICAvLyBIaWdoZXIgcmFua2VkIG9wZXJhdGlvbnMgc2hvdWxkIGNvbWUgZmlyc3QuCi0gICAgICAgIGludCByZXN1bHQgPSByYW5rT2YoYikgLSByYW5rT2YoYSk7Ci0gICAgICAgIGlmIChyZXN1bHQgIT0gMCkgewotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBkb24ndCBkcm9wIG9uZSBvZiB0d28gY2xhc3NlcyB3LyB0aGUgc2FtZSByYW5rLgotICAgICAgICAvLyBJZiBhIGxvYWQgYW5kIGFuIGluaXRpYWxpemF0aW9uIGhhdmUgdGhlIHNhbWUgcmFuaywgaXQncyBPSwotICAgICAgICAvLyB0byB0cmVhdCB0aGUgb3BlcmF0aW9ucyBlcXVhbGx5LgotICAgICAgICByZXR1cm4gYS5sb2FkZWRDbGFzcy5uYW1lLmNvbXBhcmVUbyhiLmxvYWRlZENsYXNzLm5hbWUpOwotICAgIH0KLQotICAgIC8qKiBSYW5rcyB0aGUgZ2l2ZW4gb3BlcmF0aW9uLiAqLwotICAgIHByaXZhdGUgc3RhdGljIGludCByYW5rT2YoT3BlcmF0aW9uIG8pIHsKLSAgICAgICAgcmV0dXJuIG8ubWVkaWFuRXhjbHVzaXZlVGltZU1pY3JvcygpCi0gICAgICAgICAgICAgICAgKyBTRVFVRU5DRV9XRUlHSFQgLyAoby5pbmRleCAvIEJVQ0tFVF9TSVpFICsgMSk7Ci0gICAgfQotfQotCi0KZGlmZiAtLWdpdCBhL3Rvb2xzL3ByZWxvYWQvTG9hZGVkQ2xhc3MuamF2YSBiL3Rvb2xzL3ByZWxvYWQvTG9hZGVkQ2xhc3MuamF2YQppbmRleCA5ZWYxN2Y1Li44NmU1ZGZjIDEwMDY0NAotLS0gYS90b29scy9wcmVsb2FkL0xvYWRlZENsYXNzLmphdmEKKysrIGIvdG9vbHMvcHJlbG9hZC9Mb2FkZWRDbGFzcy5qYXZhCkBAIC01MSw3ICs1MSw3IEBACiAgICAgfQogCiAgICAgdm9pZCBtZWFzdXJlTWVtb3J5VXNhZ2UoKSB7Ci0vLyAgICAgICAgdGhpcy5tZW1vcnlVc2FnZSA9IE1lbW9yeVVzYWdlLmZvckNsYXNzKG5hbWUpOworICAgICAgICB0aGlzLm1lbW9yeVVzYWdlID0gTWVtb3J5VXNhZ2UuZm9yQ2xhc3MobmFtZSk7CiAgICAgfQogCiAgICAgaW50IG1sdCA9IC0xOwpAQCAtNzYsNiArNzYsMTAgQEAKICAgICAgICAgcmV0dXJuIG1pdCA9IGNhbGN1bGF0ZU1lZGlhbihpbml0aWFsaXphdGlvbnMpOwogICAgIH0KIAorICAgIGludCBtZWRpYW5UaW1lTWljcm9zKCkgeworICAgICAgICByZXR1cm4gbWVkaWFuSW5pdFRpbWVNaWNyb3MoKSArIG1lZGlhbkxvYWRUaW1lTWljcm9zKCk7CisgICAgfQorCiAgICAgLyoqIENhbGN1bGF0ZXMgdGhlIG1lZGlhbiBkdXJhdGlvbiBmb3IgYSBsaXN0IG9mIG9wZXJhdGlvbnMuICovCiAgICAgcHJpdmF0ZSBzdGF0aWMgaW50IGNhbGN1bGF0ZU1lZGlhbihMaXN0PE9wZXJhdGlvbj4gb3BlcmF0aW9ucykgewogICAgICAgICBpbnQgc2l6ZSA9IG9wZXJhdGlvbnMuc2l6ZSgpOwpAQCAtOTksMTggKzEwMywxOCBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgLyoqIFJldHVybnMgbmFtZXMgb2YgYXBwcyB0aGF0IGxvYWRlZCB0aGlzIGNsYXNzLiAqLwotICAgIFNldDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZXMoKSB7Ci0gICAgICAgIFNldDxTdHJpbmc+IGFwcE5hbWVzID0gbmV3IEhhc2hTZXQ8U3RyaW5nPigpOwotICAgICAgICBhZGRQcm9jZXNzTmFtZXMobG9hZHMsIGFwcE5hbWVzKTsKLSAgICAgICAgYWRkUHJvY2Vzc05hbWVzKGluaXRpYWxpemF0aW9ucywgYXBwTmFtZXMpOwotICAgICAgICByZXR1cm4gYXBwTmFtZXM7CisgICAgLyoqIFJldHVybnMgbmFtZXMgb2YgcHJvY2Vzc2VzIHRoYXQgbG9hZGVkIHRoaXMgY2xhc3MuICovCisgICAgU2V0PFN0cmluZz4gcHJvY2Vzc05hbWVzKCkgeworICAgICAgICBTZXQ8U3RyaW5nPiBuYW1lcyA9IG5ldyBIYXNoU2V0PFN0cmluZz4oKTsKKyAgICAgICAgYWRkUHJvY2Vzc05hbWVzKGxvYWRzLCBuYW1lcyk7CisgICAgICAgIGFkZFByb2Nlc3NOYW1lcyhpbml0aWFsaXphdGlvbnMsIG5hbWVzKTsKKyAgICAgICAgcmV0dXJuIG5hbWVzOwogICAgIH0KIAotICAgIHByaXZhdGUgdm9pZCBhZGRQcm9jZXNzTmFtZXMoTGlzdDxPcGVyYXRpb24+IG9wcywgU2V0PFN0cmluZz4gYXBwTmFtZXMpIHsKKyAgICBwcml2YXRlIHZvaWQgYWRkUHJvY2Vzc05hbWVzKExpc3Q8T3BlcmF0aW9uPiBvcHMsIFNldDxTdHJpbmc+IG5hbWVzKSB7CiAgICAgICAgIGZvciAoT3BlcmF0aW9uIG9wZXJhdGlvbiA6IG9wcykgewotICAgICAgICAgICAgaWYgKG9wZXJhdGlvbi5wcm9jZXNzLmlzQXBwbGljYXRpb24oKSkgewotICAgICAgICAgICAgICAgIGFwcE5hbWVzLmFkZChvcGVyYXRpb24ucHJvY2Vzcy5uYW1lKTsKKyAgICAgICAgICAgIGlmIChvcGVyYXRpb24ucHJvY2Vzcy5mcm9tWnlnb3RlKCkpIHsKKyAgICAgICAgICAgICAgICBuYW1lcy5hZGQob3BlcmF0aW9uLnByb2Nlc3MubmFtZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xMjMsMzEgKzEyNyw0IEBACiAgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKICAgICAgICAgcmV0dXJuIG5hbWU7CiAgICAgfQotCi0gICAgLyoqCi0gICAgICogUmV0dXJucyB0cnVlIGlmIHRoaXMgY2xhc3MncyBpbml0aWFsaXphdGlvbiBjYXVzZXMgdGhlIGdpdmVuIGNsYXNzIHRvCi0gICAgICogaW5pdGlhbGl6ZS4KLSAgICAgKi8KLSAgICBwdWJsaWMgYm9vbGVhbiBpbml0aWFsaXplcyhMb2FkZWRDbGFzcyBjbGF6eiwgU2V0PExvYWRlZENsYXNzPiB2aXNpdGVkKSB7Ci0gICAgICAgIC8vIEF2b2lkIGluZmluaXRlIHJlY3Vyc2lvbi4KLSAgICAgICAgaWYgKCF2aXNpdGVkLmFkZCh0aGlzKSkgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGNsYXp6ID09IHRoaXMpIHsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgZm9yIChPcGVyYXRpb24gaW5pdGlhbGl6YXRpb24gOiBpbml0aWFsaXphdGlvbnMpIHsKLSAgICAgICAgICAgIGlmIChpbml0aWFsaXphdGlvbi5sb2FkZWRDbGFzcy5pbml0aWFsaXplcyhjbGF6eiwgdmlzaXRlZCkpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgYm9vbGVhbiBpc1ByZWxvYWRhYmxlKCkgewotICAgICAgICByZXR1cm4gc3lzdGVtQ2xhc3MgJiYgUG9saWN5LmlzUHJlbG9hZGFibGVDbGFzcyhuYW1lKTsKLSAgICB9CiB9CmRpZmYgLS1naXQgYS90b29scy9wcmVsb2FkL01lbW9yeVVzYWdlLmphdmEgYi90b29scy9wcmVsb2FkL01lbW9yeVVzYWdlLmphdmEKaW5kZXggZTVkZmIyYS4uYmMyMWI2ZiAxMDA2NDQKLS0tIGEvdG9vbHMvcHJlbG9hZC9NZW1vcnlVc2FnZS5qYXZhCisrKyBiL3Rvb2xzL3ByZWxvYWQvTWVtb3J5VXNhZ2UuamF2YQpAQCAtMzQsOCArMzQsOCBAQAogICAgIHN0YXRpYyBmaW5hbCBNZW1vcnlVc2FnZSBOT1RfQVZBSUxBQkxFID0gbmV3IE1lbW9yeVVzYWdlKCk7CiAgICAgCiAgICAgc3RhdGljIGludCBlcnJvckNvdW50ID0gMDsKLSAgICBzdGF0aWMgZmluYWwgaW50IE1BWElNVU1fRVJST1JTID0gMTA7ICAgICAgICAvLyBnaXZlIHVwIGFmdGVyIHRoaXMgbWFueSBmYWlscwogCisgICAgLy8gVGhlc2UgdmFsdWVzIGFyZSBpbiAxa0IgaW5jcmVtZW50cyAobm90IDRrQiBsaWtlIHlvdSdkIGV4cGVjdCkuCiAgICAgZmluYWwgaW50IG5hdGl2ZVNoYXJlZFBhZ2VzOwogICAgIGZpbmFsIGludCBqYXZhU2hhcmVkUGFnZXM7CiAgICAgZmluYWwgaW50IG90aGVyU2hhcmVkUGFnZXM7CkBAIC0xMjMsMTUgKzEyMywyNCBAQAogICAgICAgICByZXR1cm4gYWxsb2NTaXplIC0gZnJlZWRTaXplOwogICAgIH0KIAorICAgIGludCB0b3RhbEhlYXAoKSB7CisgICAgICAgIHJldHVybiBqYXZhSGVhcFNpemUoKSArIChpbnQpIG5hdGl2ZUhlYXBTaXplOworICAgIH0KKwogICAgIGludCBqYXZhUGFnZXNJbksoKSB7Ci0gICAgICAgIHJldHVybiAoamF2YVNoYXJlZFBhZ2VzICsgamF2YVByaXZhdGVQYWdlcykgKiA0OworICAgICAgICByZXR1cm4gamF2YVNoYXJlZFBhZ2VzICsgamF2YVByaXZhdGVQYWdlczsKICAgICB9CiAKICAgICBpbnQgbmF0aXZlUGFnZXNJbksoKSB7Ci0gICAgICAgIHJldHVybiAobmF0aXZlU2hhcmVkUGFnZXMgKyBuYXRpdmVQcml2YXRlUGFnZXMpICogNDsKKyAgICAgICAgcmV0dXJuIG5hdGl2ZVNoYXJlZFBhZ2VzICsgbmF0aXZlUHJpdmF0ZVBhZ2VzOwogICAgIH0KICAgICBpbnQgb3RoZXJQYWdlc0luSygpIHsKLSAgICAgICAgcmV0dXJuIChvdGhlclNoYXJlZFBhZ2VzICsgb3RoZXJQcml2YXRlUGFnZXMpICogNDsKKyAgICAgICAgcmV0dXJuIG90aGVyU2hhcmVkUGFnZXMgKyBvdGhlclByaXZhdGVQYWdlczsKKyAgICB9CisKKyAgICBpbnQgdG90YWxQYWdlcygpIHsKKyAgICAgICAgcmV0dXJuIGphdmFTaGFyZWRQYWdlcyArIGphdmFQcml2YXRlUGFnZXMgKyBuYXRpdmVTaGFyZWRQYWdlcyArCisgICAgICAgICAgICAgICAgbmF0aXZlUHJpdmF0ZVBhZ2VzICsgb3RoZXJTaGFyZWRQYWdlcyArIG90aGVyUHJpdmF0ZVBhZ2VzOwogICAgIH0KIAogICAgIC8qKgpAQCAtMTYzLDEzICsxNzIsNiBAQAogICAgICAqIE1lYXN1cmVzIG1lbW9yeSB1c2FnZSBmb3IgdGhlIGdpdmVuIGNsYXNzLgogICAgICAqLwogICAgIHN0YXRpYyBNZW1vcnlVc2FnZSBmb3JDbGFzcyhTdHJpbmcgY2xhc3NOYW1lKSB7Ci0gICAgICAgIAotICAgICAgICAvLyBUaGlzIGlzIGEgY29hcnNlIGFwcHJveGltYXRpb24gZm9yIGRldGVybWluaW5nIHRoYXQgbm8gZGV2aWNlIGlzIGNvbm5lY3RlZCwKLSAgICAgICAgLy8gb3IgdGhhdCB0aGUgY29tbXVuaWNhdGlvbiBwcm90b2NvbCBoYXMgY2hhbmdlZCwgYnV0IHdlJ2xsIGtlZXAgZ29pbmcgYW5kIHN0b3Agd2hpbmluZy4KLSAgICAgICAgaWYgKGVycm9yQ291bnQgPj0gTUFYSU1VTV9FUlJPUlMpIHsKLSAgICAgICAgICAgIHJldHVybiBOT1RfQVZBSUxBQkxFOwotICAgICAgICB9Ci0gICAgICAgIAogICAgICAgICBNZWFzdXJlV2l0aFRpbWVvdXQgbWVhc3VyZXIgPSBuZXcgTWVhc3VyZVdpdGhUaW1lb3V0KGNsYXNzTmFtZSk7CiAKICAgICAgICAgbmV3IFRocmVhZChtZWFzdXJlcikuc3RhcnQoKTsKQEAgLTI4MCw0ICsyODIsMTcgQEAKICAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CiAgICAgICAgIH0KICAgICB9CisKKyAgICAvKiogTWVhc3VyZXMgbWVtb3J5IHVzYWdlIGluZm9ybWF0aW9uIGFuZCBzdG9yZXMgaXQgaW4gdGhlIG1vZGVsLiAqLworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBJT0V4Y2VwdGlvbiwKKyAgICAgICAgICAgIENsYXNzTm90Rm91bmRFeGNlcHRpb24geworICAgICAgICBSb290IHJvb3QgPSBSb290LmZyb21GaWxlKGFyZ3NbMF0pOworICAgICAgICByb290LmJhc2VsaW5lID0gYmFzZWxpbmUoKTsKKyAgICAgICAgZm9yIChMb2FkZWRDbGFzcyBsb2FkZWRDbGFzcyA6IHJvb3QubG9hZGVkQ2xhc3Nlcy52YWx1ZXMoKSkgeworICAgICAgICAgICAgaWYgKGxvYWRlZENsYXNzLnN5c3RlbUNsYXNzKSB7CisgICAgICAgICAgICAgICAgbG9hZGVkQ2xhc3MubWVhc3VyZU1lbW9yeVVzYWdlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcm9vdC50b0ZpbGUoYXJnc1swXSk7CisgICAgfQogfQpkaWZmIC0tZ2l0IGEvdG9vbHMvcHJlbG9hZC9Qb2xpY3kuamF2YSBiL3Rvb2xzL3ByZWxvYWQvUG9saWN5LmphdmEKaW5kZXggYWRlODg5ZTMuLjdhMTkwYWMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3ByZWxvYWQvUG9saWN5LmphdmEKKysrIGIvdG9vbHMvcHJlbG9hZC9Qb2xpY3kuamF2YQpAQCAtMTksMTAgKzE5LDEwIEBACiBpbXBvcnQgamF2YS51dGlsLlNldDsKIAogLyoqCi0gKiBUaGlzIGlzIG5vdCBpbnN0YW50aWF0ZWQgLSB3ZSBqdXN0IHByb3ZpZGUgZGF0YSBmb3Igb3RoZXIgY2xhc3NlcyB0byB1c2UKKyAqIFBvbGljeSB0aGF0IGdvdmVybnMgd2hpY2ggY2xhc3NlcyBhcmUgcHJlbG9hZGVkLgogICovCiBwdWJsaWMgY2xhc3MgUG9saWN5IHsKLSAgICAKKwogICAgIC8qKgogICAgICAqIE5vIGNvbnN0cnVjdG9yIC0gdXNlIHN0YXRpYyBtZXRob2RzIG9ubHkKICAgICAgKi8KQEAgLTMxLDE4ICszMSwyNCBAQAogICAgIC8qKgogICAgICAqIFRoaXMgbG9jYXRpb24gKGluIHRoZSBidWlsZCBzeXN0ZW0pIG9mIHRoZSBwcmVsb2FkZWQtY2xhc3NlcyBmaWxlLgogICAgICAqLwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBQUkVMT0FERURfQ0xBU1NfRklMRQorICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgUFJFTE9BREVEX0NMQVNTX0ZJTEUKICAgICAgICAgICAgID0gImZyYW1ld29ya3MvYmFzZS9wcmVsb2FkZWQtY2xhc3NlcyI7CiAKICAgICAvKioKICAgICAgKiBMb25nIHJ1bm5pbmcgc2VydmljZXMuIFRoZXNlIGFyZSByZXN0cmljdGVkIGluIHRoZWlyIGNvbnRyaWJ1dGlvbiB0byB0aGUgCiAgICAgICogcHJlbG9hZGVyIGJlY2F1c2UgdGhlaXIgbGF1bmNoIHRpbWUgaXMgbGVzcyBjcml0aWNhbC4KICAgICAgKi8KKyAgICAvLyBUT0RPOiBHZW5lcmF0ZSB0aGlzIGF1dG9tYXRpY2FsbHkgZnJvbSBwYWNrYWdlIG1hbmFnZXIuCiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU2V0PFN0cmluZz4gU0VSVklDRVMgPSBuZXcgSGFzaFNldDxTdHJpbmc+KEFycmF5cy5hc0xpc3QoCi0gICAgICAgICAgICAic3lzdGVtX3NlcnZlciIsCi0gICAgICAgICAgICAiY29tLmdvb2dsZS5wcm9jZXNzLmNvbnRlbnQiLAotICAgICAgICAgICAgImFuZHJvaWQucHJvY2Vzcy5tZWRpYSIsCi0gICAgICAgICAgICAiY29tLmdvb2dsZS5wcm9jZXNzLmdhcHBzIgorICAgICAgICAic3lzdGVtX3NlcnZlciIsCisgICAgICAgICJjb20uZ29vZ2xlLnByb2Nlc3MuY29udGVudCIsCisgICAgICAgICJhbmRyb2lkLnByb2Nlc3MubWVkaWEiLAorICAgICAgICAiY29tLmFuZHJvaWQucGhvbmUiLAorICAgICAgICAiY29tLmdvb2dsZS5hbmRyb2lkLmFwcHMubWFwcy5GcmllbmRTZXJ2aWNlIiwKKyAgICAgICAgImNvbS5nb29nbGUuYW5kcm9pZC5hcHBzLm1hcHMuTG9jYXRpb25GcmllbmRTZXJ2aWNlIiwKKyAgICAgICAgImNvbS5nb29nbGUuYW5kcm9pZC5nb29nbGVhcHBzIiwKKyAgICAgICAgImNvbS5nb29nbGUucHJvY2Vzcy5nYXBwcyIsCisgICAgICAgICJhbmRyb2lkLnR0cyIKICAgICApKTsKIAogICAgIC8qKgpAQCAtNjMsMjQgKzY5LDE1IEBACiAgICAgKSk7CiAKICAgICAvKioKLSAgICAgKiBSZXR1cm5zIHRoZSBwYXRoL2ZpbGUgbmFtZSBvZiB0aGUgcHJlbG9hZGVkIGNsYXNzZXMgZmlsZSB0aGF0IHdpbGwgYmUgd3JpdHRlbiAKLSAgICAgKiBieSBXcml0ZVByZWxvYWRlZENsYXNzRmlsZS4KLSAgICAgKi8KLSAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRQcmVsb2FkZWRDbGFzc0ZpbGVOYW1lKCkgewotICAgICAgICByZXR1cm4gUFJFTE9BREVEX0NMQVNTX0ZJTEU7Ci0gICAgfQotICAgIAotICAgIC8qKgotICAgICAqIFJlcG9ydHMgaWYgdGhlIGdpdmVuIHByb2Nlc3MgbmFtZSBpcyBhICJsb25nIHJ1bm5pbmciIHByb2Nlc3Mgb3Igc2VydmljZQorICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gcHJvY2VzcyBuYW1lIGlzIGEgImxvbmcgcnVubmluZyIgcHJvY2VzcyBvcgorICAgICAqIHNlcnZpY2UuCiAgICAgICovCiAgICAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzU2VydmljZShTdHJpbmcgcHJvY2Vzc05hbWUpIHsKICAgICAgICAgcmV0dXJuIFNFUlZJQ0VTLmNvbnRhaW5zKHByb2Nlc3NOYW1lKTsKICAgICB9Ci0gICAgCi0gICAgLyoqCi0gICAgICogUmVwb3J0cyBpZiB0aGUgZ2l2ZW4gY2xhc3Mgc2hvdWxkIG5ldmVyIGJlIHByZWxvYWRlZAotICAgICAqLwotICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc1ByZWxvYWRhYmxlQ2xhc3MoU3RyaW5nIGNsYXNzTmFtZSkgewotICAgICAgICByZXR1cm4gIUVYQ0xVREVEX0NMQVNTRVMuY29udGFpbnMoY2xhc3NOYW1lKTsKKworICAgIC8qKlJlcG9ydHMgaWYgdGhlIGdpdmVuIGNsYXNzIHNob3VsZCBiZSBwcmVsb2FkZWQuICovCisgICAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzUHJlbG9hZGFibGUoTG9hZGVkQ2xhc3MgY2xhenopIHsKKyAgICAgICAgcmV0dXJuIGNsYXp6LnN5c3RlbUNsYXNzICYmICFFWENMVURFRF9DTEFTU0VTLmNvbnRhaW5zKGNsYXp6Lm5hbWUpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL3Rvb2xzL3ByZWxvYWQvUHJpbnRDc3YuamF2YSBiL3Rvb2xzL3ByZWxvYWQvUHJpbnRDc3YuamF2YQppbmRleCA2MmY0MjcxLi4xODIwODMwIDEwMDY0NAotLS0gYS90b29scy9wcmVsb2FkL1ByaW50Q3N2LmphdmEKKysrIGIvdG9vbHMvcHJlbG9hZC9QcmludENzdi5qYXZhCkBAIC0xOCw5ICsxOCwxMiBAQAogaW1wb3J0IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtOwogaW1wb3J0IGphdmEuaW8uT2JqZWN0SW5wdXRTdHJlYW07CiBpbXBvcnQgamF2YS5pby5CdWZmZXJlZElucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uV3JpdGVyOworaW1wb3J0IGphdmEuaW8uUHJpbnRTdHJlYW07CiBpbXBvcnQgamF2YS51dGlsLlNldDsKIGltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKIGltcG9ydCBqYXZhLnV0aWwuVHJlZVNldDsKK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CiAKIC8qKgogICogUHJpbnRzIHJhdyBpbmZvcm1hdGlvbiBpbiBDU1YgZm9ybWF0LgpAQCAtMzYsNzEgKzM5LDg5IEBACiAKICAgICAgICAgUm9vdCByb290ID0gUm9vdC5mcm9tRmlsZShhcmdzWzBdKTsKIAotICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIk5hbWUiCi0gICAgICAgICAgICAgICAgKyAiLFByZWxvYWRlZCIKLSAgICAgICAgICAgICAgICArICIsTWVkaWFuIExvYWQgVGltZSAodXMpIgotICAgICAgICAgICAgICAgICsgIixNZWRpYW4gSW5pdCBUaW1lICh1cykiCi0gICAgICAgICAgICAgICAgKyAiLFByb2Nlc3MgTmFtZXMiCi0gICAgICAgICAgICAgICAgKyAiLExvYWQgQ291bnQiCi0gICAgICAgICAgICAgICAgKyAiLEluaXQgQ291bnQiKTsKLS8vICAgICAgICAgICAgICAgICsgIixNYW5hZ2VkIEhlYXAgKEIpIgotLy8gICAgICAgICAgICAgICAgKyAiLE5hdGl2ZSBIZWFwIChCKSIKLS8vICAgICAgICAgICAgICAgICsgIixNYW5hZ2VkIFBhZ2VzIChrQikiCi0vLyAgICAgICAgICAgICAgICArICIsTmF0aXZlIFBhZ2VzIChrQikiCi0vLyAgICAgICAgICAgICAgICArICIsT3RoZXIgUGFnZXMgKGtCKSIpOworICAgICAgICBwcmludEhlYWRlcnMoU3lzdGVtLm91dCk7CiAKLSAgICAgICAgTWVtb3J5VXNhZ2UgYmFzZWxpbmUgPSByb290LmJhc2VsaW5lOworICAgICAgICBNZW1vcnlVc2FnZSBiYXNlbGluZSA9IE1lbW9yeVVzYWdlLmJhc2VsaW5lKCk7CiAKICAgICAgICAgZm9yIChMb2FkZWRDbGFzcyBsb2FkZWRDbGFzcyA6IHJvb3QubG9hZGVkQ2xhc3Nlcy52YWx1ZXMoKSkgewogICAgICAgICAgICAgaWYgKCFsb2FkZWRDbGFzcy5zeXN0ZW1DbGFzcykgewogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KGxvYWRlZENsYXNzLm5hbWUpOwotICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludCgnLCcpOwotICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludChsb2FkZWRDbGFzcy5wcmVsb2FkZWQpOwotICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludCgnLCcpOwotICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludChsb2FkZWRDbGFzcy5tZWRpYW5Mb2FkVGltZU1pY3JvcygpKTsKLSAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoJywnKTsKLSAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQobG9hZGVkQ2xhc3MubWVkaWFuSW5pdFRpbWVNaWNyb3MoKSk7Ci0gICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCcsJyk7Ci0gICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCciJyk7Ci0KLSAgICAgICAgICAgIFNldDxTdHJpbmc+IHByb2NOYW1lcyA9IG5ldyBUcmVlU2V0PFN0cmluZz4oKTsKLSAgICAgICAgICAgIGZvciAoT3BlcmF0aW9uIG9wIDogbG9hZGVkQ2xhc3MubG9hZHMpCi0gICAgICAgICAgICAgICAgcHJvY05hbWVzLmFkZChvcC5wcm9jZXNzLm5hbWUpOwotICAgICAgICAgICAgZm9yIChPcGVyYXRpb24gb3AgOiBsb2FkZWRDbGFzcy5pbml0aWFsaXphdGlvbnMpCi0gICAgICAgICAgICAgICAgcHJvY05hbWVzLmFkZChvcC5wcm9jZXNzLm5hbWUpOwotICAgICAgICAgICAgZm9yIChTdHJpbmcgbmFtZSA6IHByb2NOYW1lcykgewotICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQobmFtZSArICJcbiIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCciJyk7Ci0gICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCcsJyk7Ci0gICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KGxvYWRlZENsYXNzLmxvYWRzLnNpemUoKSk7Ci0gICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCcsJyk7Ci0gICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KGxvYWRlZENsYXNzLmluaXRpYWxpemF0aW9ucy5zaXplKCkpOwotLyoKLSAgICAgICAgICAgIGlmIChsb2FkZWRDbGFzcy5tZW1vcnlVc2FnZS5pc0F2YWlsYWJsZSgpKSB7Ci0gICAgICAgICAgICAgICAgTWVtb3J5VXNhZ2Ugc3VidHJhY3RlZAotICAgICAgICAgICAgICAgICAgICAgICAgPSBsb2FkZWRDbGFzcy5tZW1vcnlVc2FnZS5zdWJ0cmFjdChiYXNlbGluZSk7Ci0KLSAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCcsJyk7Ci0gICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludChzdWJ0cmFjdGVkLmphdmFIZWFwU2l6ZSgpKTsKLSAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCcsJyk7Ci0gICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludChzdWJ0cmFjdGVkLm5hdGl2ZUhlYXBTaXplKTsKLSAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCcsJyk7Ci0gICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludChzdWJ0cmFjdGVkLmphdmFQYWdlc0luSygpKTsKLSAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCcsJyk7Ci0gICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludChzdWJ0cmFjdGVkLm5hdGl2ZVBhZ2VzSW5LKCkpOwotICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoJywnKTsKLSAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KHN1YnRyYWN0ZWQub3RoZXJQYWdlc0luSygpKTsKLQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCIsbi9hLG4vYSxuL2Esbi9hLG4vYSIpOwotICAgICAgICAgICAgfQotKi8KLSAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOworICAgICAgICAgICAgcHJpbnRSb3coU3lzdGVtLm91dCwgYmFzZWxpbmUsIGxvYWRlZENsYXNzKTsKICAgICAgICAgfQogICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHByaW50SGVhZGVycyhQcmludFN0cmVhbSBvdXQpIHsKKyAgICAgICAgb3V0LnByaW50bG4oIk5hbWUiCisgICAgICAgICAgICAgICAgKyAiLFByZWxvYWRlZCIKKyAgICAgICAgICAgICAgICArICIsTWVkaWFuIExvYWQgVGltZSAodXMpIgorICAgICAgICAgICAgICAgICsgIixNZWRpYW4gSW5pdCBUaW1lICh1cykiCisgICAgICAgICAgICAgICAgKyAiLFByb2Nlc3MgTmFtZXMiCisgICAgICAgICAgICAgICAgKyAiLExvYWQgQ291bnQiCisgICAgICAgICAgICAgICAgKyAiLEluaXQgQ291bnQiCisgICAgICAgICAgICAgICAgKyAiLE1hbmFnZWQgSGVhcCAoQikiCisgICAgICAgICAgICAgICAgKyAiLE5hdGl2ZSBIZWFwIChCKSIKKyAgICAgICAgICAgICAgICArICIsTWFuYWdlZCBQYWdlcyAoa0IpIgorICAgICAgICAgICAgICAgICsgIixOYXRpdmUgUGFnZXMgKGtCKSIKKyAgICAgICAgICAgICAgICArICIsT3RoZXIgUGFnZXMgKGtCKSIpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHByaW50Um93KFByaW50U3RyZWFtIG91dCwgTWVtb3J5VXNhZ2UgYmFzZWxpbmUsCisgICAgICAgICAgICBMb2FkZWRDbGFzcyBsb2FkZWRDbGFzcykgeworICAgICAgICBvdXQucHJpbnQobG9hZGVkQ2xhc3MubmFtZSk7CisgICAgICAgIG91dC5wcmludCgnLCcpOworICAgICAgICBvdXQucHJpbnQobG9hZGVkQ2xhc3MucHJlbG9hZGVkKTsKKyAgICAgICAgb3V0LnByaW50KCcsJyk7CisgICAgICAgIG91dC5wcmludChsb2FkZWRDbGFzcy5tZWRpYW5Mb2FkVGltZU1pY3JvcygpKTsKKyAgICAgICAgb3V0LnByaW50KCcsJyk7CisgICAgICAgIG91dC5wcmludChsb2FkZWRDbGFzcy5tZWRpYW5Jbml0VGltZU1pY3JvcygpKTsKKyAgICAgICAgb3V0LnByaW50KCcsJyk7CisgICAgICAgIG91dC5wcmludCgnIicpOworCisgICAgICAgIFNldDxTdHJpbmc+IHByb2NOYW1lcyA9IG5ldyBUcmVlU2V0PFN0cmluZz4oKTsKKyAgICAgICAgZm9yIChPcGVyYXRpb24gb3AgOiBsb2FkZWRDbGFzcy5sb2FkcykKKyAgICAgICAgICAgIHByb2NOYW1lcy5hZGQob3AucHJvY2Vzcy5uYW1lKTsKKyAgICAgICAgZm9yIChPcGVyYXRpb24gb3AgOiBsb2FkZWRDbGFzcy5pbml0aWFsaXphdGlvbnMpCisgICAgICAgICAgICBwcm9jTmFtZXMuYWRkKG9wLnByb2Nlc3MubmFtZSk7CisKKyAgICAgICAgaWYgKHByb2NOYW1lcy5zaXplKCkgPD0gMykgeworICAgICAgICAgICAgZm9yIChTdHJpbmcgbmFtZSA6IHByb2NOYW1lcykgeworICAgICAgICAgICAgICAgIG91dC5wcmludChuYW1lICsgIlxuIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBJdGVyYXRvcjxTdHJpbmc+IGkgPSBwcm9jTmFtZXMuaXRlcmF0b3IoKTsKKyAgICAgICAgICAgIG91dC5wcmludChpLm5leHQoKSArICJcbiIpOworICAgICAgICAgICAgb3V0LnByaW50KGkubmV4dCgpICsgIlxuIik7CisgICAgICAgICAgICBvdXQucHJpbnQoIi4uLmFuZCAiICsgKHByb2NOYW1lcy5zaXplKCkgLSAyKQorICAgICAgICAgICAgICAgICAgICArICIgb3RoZXJzLiIpOworICAgICAgICB9CisKKyAgICAgICAgb3V0LnByaW50KCciJyk7CisgICAgICAgIG91dC5wcmludCgnLCcpOworICAgICAgICBvdXQucHJpbnQobG9hZGVkQ2xhc3MubG9hZHMuc2l6ZSgpKTsKKyAgICAgICAgb3V0LnByaW50KCcsJyk7CisgICAgICAgIG91dC5wcmludChsb2FkZWRDbGFzcy5pbml0aWFsaXphdGlvbnMuc2l6ZSgpKTsKKworICAgICAgICBpZiAobG9hZGVkQ2xhc3MubWVtb3J5VXNhZ2UuaXNBdmFpbGFibGUoKSkgeworICAgICAgICAgICAgTWVtb3J5VXNhZ2Ugc3VidHJhY3RlZAorICAgICAgICAgICAgICAgICAgICA9IGxvYWRlZENsYXNzLm1lbW9yeVVzYWdlLnN1YnRyYWN0KGJhc2VsaW5lKTsKKworICAgICAgICAgICAgb3V0LnByaW50KCcsJyk7CisgICAgICAgICAgICBvdXQucHJpbnQoc3VidHJhY3RlZC5qYXZhSGVhcFNpemUoKSk7CisgICAgICAgICAgICBvdXQucHJpbnQoJywnKTsKKyAgICAgICAgICAgIG91dC5wcmludChzdWJ0cmFjdGVkLm5hdGl2ZUhlYXBTaXplKTsKKyAgICAgICAgICAgIG91dC5wcmludCgnLCcpOworICAgICAgICAgICAgb3V0LnByaW50KHN1YnRyYWN0ZWQuamF2YVBhZ2VzSW5LKCkpOworICAgICAgICAgICAgb3V0LnByaW50KCcsJyk7CisgICAgICAgICAgICBvdXQucHJpbnQoc3VidHJhY3RlZC5uYXRpdmVQYWdlc0luSygpKTsKKyAgICAgICAgICAgIG91dC5wcmludCgnLCcpOworICAgICAgICAgICAgb3V0LnByaW50KHN1YnRyYWN0ZWQub3RoZXJQYWdlc0luSygpKTsKKworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgb3V0LnByaW50KCIsbi9hLG4vYSxuL2Esbi9hLG4vYSIpOworICAgICAgICB9CisKKyAgICAgICAgb3V0LnByaW50bG4oKTsKKyAgICB9CiB9CmRpZmYgLS1naXQgYS90b29scy9wcmVsb2FkL1ByaW50SHRtbERpZmYuamF2YSBiL3Rvb2xzL3ByZWxvYWQvUHJpbnRIdG1sRGlmZi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxMDFjODUKLS0tIC9kZXYvbnVsbAorKysgYi90b29scy9wcmVsb2FkL1ByaW50SHRtbERpZmYuamF2YQpAQCAtMCwwICsxLDE0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uRmlsZVJlYWRlcjsKK2ltcG9ydCBqYXZhLmlvLkJ1ZmZlcmVkUmVhZGVyOworaW1wb3J0IGphdmEuaW8uUHJpbnRTdHJlYW07CitpbXBvcnQgamF2YS51dGlsLlNldDsKK2ltcG9ydCBqYXZhLnV0aWwuVHJlZVNldDsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CisKKy8qKgorICogUHJpbnRzIEhUTUwgY29udGFpbmluZyByZW1vdmVkIGFuZCBhZGRlZCBmaWxlcy4KKyAqLworcHVibGljIGNsYXNzIFByaW50SHRtbERpZmYgeworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIE9MRF9QUkVMT0FERURfQ0xBU1NFUworICAgICAgICAgICAgPSAib2xkLXByZWxvYWRlZC1jbGFzc2VzIjsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBJT0V4Y2VwdGlvbiwKKyAgICAgICAgICAgIENsYXNzTm90Rm91bmRFeGNlcHRpb24geworICAgICAgICBSb290IHJvb3QgPSBSb290LmZyb21GaWxlKGFyZ3NbMF0pOworCisgICAgICAgIEJ1ZmZlcmVkUmVhZGVyIG9sZENsYXNzZXMgPSBuZXcgQnVmZmVyZWRSZWFkZXIoCisgICAgICAgICAgICBuZXcgRmlsZVJlYWRlcihPTERfUFJFTE9BREVEX0NMQVNTRVMpKTsKKworICAgICAgICAvLyBDbGFzc2VzIGxvYWRlZCBpbXBsaWNpdGx5IGJ5IHRoZSB6eWdvdGUuCisgICAgICAgIFNldDxMb2FkZWRDbGFzcz4genlnb3RlID0gbmV3IEhhc2hTZXQ8TG9hZGVkQ2xhc3M+KCk7CisgICAgICAgIGZvciAoUHJvYyBwcm9jIDogcm9vdC5wcm9jZXNzZXMudmFsdWVzKCkpIHsKKyAgICAgICAgICAgIGlmIChwcm9jLm5hbWUuZXF1YWxzKCJ6eWdvdGUiKSkgeworICAgICAgICAgICAgICAgIGZvciAoT3BlcmF0aW9uIG9wIDogcHJvYy5vcGVyYXRpb25zKSB7CisgICAgICAgICAgICAgICAgICAgIHp5Z290ZS5hZGQob3AubG9hZGVkQ2xhc3MpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIFNldDxMb2FkZWRDbGFzcz4gcmVtb3ZlZCA9IG5ldyBUcmVlU2V0PExvYWRlZENsYXNzPigpOworICAgICAgICBTZXQ8TG9hZGVkQ2xhc3M+IGFkZGVkID0gbmV3IFRyZWVTZXQ8TG9hZGVkQ2xhc3M+KCk7CisKKyAgICAgICAgZm9yIChMb2FkZWRDbGFzcyBsb2FkZWRDbGFzcyA6IHJvb3QubG9hZGVkQ2xhc3Nlcy52YWx1ZXMoKSkgeworICAgICAgICAgICAgaWYgKGxvYWRlZENsYXNzLnByZWxvYWRlZCAmJiAhenlnb3RlLmNvbnRhaW5zKGxvYWRlZENsYXNzKSkgeworICAgICAgICAgICAgICAgIGFkZGVkLmFkZChsb2FkZWRDbGFzcyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBTdHJpbmcgbGluZTsKKyAgICAgICAgd2hpbGUgKChsaW5lID0gb2xkQ2xhc3Nlcy5yZWFkTGluZSgpKSAhPSBudWxsKSB7CisgICAgICAgICAgICBsaW5lID0gbGluZS50cmltKCk7CisgICAgICAgICAgICBMb2FkZWRDbGFzcyBjbGF6eiA9IHJvb3QubG9hZGVkQ2xhc3Nlcy5nZXQobGluZSk7CisgICAgICAgICAgICBpZiAoY2xhenogIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGFkZGVkLnJlbW92ZShjbGF6eik7CisgICAgICAgICAgICAgICAgaWYgKCFjbGF6ei5wcmVsb2FkZWQpIHJlbW92ZWQuYWRkKGNsYXp6KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIFByaW50U3RyZWFtIG91dCA9IFN5c3RlbS5vdXQ7CisKKyAgICAgICAgb3V0LnByaW50bG4oIjxodG1sPjxib2R5PiIpOworICAgICAgICBvdXQucHJpbnRsbigiPHN0eWxlPiIpOworICAgICAgICBvdXQucHJpbnRsbigiYSwgdGgsIHRkLCBoMiB7IGZvbnQtZmFtaWx5OiBhcmlhbCB9Iik7CisgICAgICAgIG91dC5wcmludGxuKCJ0aCwgdGQgeyBmb250LXNpemU6IHNtYWxsIH0iKTsKKyAgICAgICAgb3V0LnByaW50bG4oIjwvc3R5bGU+Iik7CisgICAgICAgIG91dC5wcmludGxuKCI8c2NyaXB0IHNyYz1cInNvcnR0YWJsZS5qc1wiPjwvc2NyaXB0PiIpOworICAgICAgICBvdXQucHJpbnRsbigiPHA+PGEgaHJlZj1cIiNyZW1vdmVkXCI+UmVtb3ZlZDwvYT4iKTsKKyAgICAgICAgb3V0LnByaW50bG4oIjxhIG5hbWU9XCJhZGRlZFwiLz48aDI+QWRkZWQ8L2gyPiIpOworICAgICAgICBwcmludFRhYmxlKG91dCwgcm9vdC5iYXNlbGluZSwgYWRkZWQpOworICAgICAgICBvdXQucHJpbnRsbigiPGEgbmFtZT1cInJlbW92ZWRcIi8+PGgyPlJlbW92ZWQ8L2gyPiIpOworICAgICAgICBwcmludFRhYmxlKG91dCwgcm9vdC5iYXNlbGluZSwgcmVtb3ZlZCk7CisgICAgICAgIG91dC5wcmludGxuKCI8L2JvZHk+PC9odG1sPiIpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHByaW50VGFibGUoUHJpbnRTdHJlYW0gb3V0LCBNZW1vcnlVc2FnZSBiYXNlbGluZSwKKyAgICAgICAgICAgIEl0ZXJhYmxlPExvYWRlZENsYXNzPiBjbGFzc2VzKSB7CisgICAgICAgIG91dC5wcmludGxuKCI8dGFibGUgYm9yZGVyPVwiMVwiIGNlbGxwYWRkaW5nPVwiNVwiIgorICAgICAgICAgICAgICAgICsgIiBjbGFzcz1cInNvcnRhYmxlXCI+Iik7CisKKyAgICAgICAgb3V0LnByaW50bG4oIjx0aGVhZD48dHI+Iik7CisgICAgICAgIG91dC5wcmludGxuKCI8dGg+TmFtZTwvdGg+Iik7CisgICAgICAgIG91dC5wcmludGxuKCI8dGg+TG9hZCBUaW1lICh1cyk8L3RoPiIpOworICAgICAgICBvdXQucHJpbnRsbigiPHRoPkxvYWRlZCBCeTwvdGg+Iik7CisgICAgICAgIG91dC5wcmludGxuKCI8dGg+SGVhcCAoQik8L3RoPiIpOworICAgICAgICBvdXQucHJpbnRsbigiPHRoPlBhZ2VzPC90aD4iKTsKKyAgICAgICAgb3V0LnByaW50bG4oIjwvdHI+PC90aGVhZD4iKTsKKworICAgICAgICBmb3IgKExvYWRlZENsYXNzIGNsYXp6IDogY2xhc3NlcykgeworICAgICAgICAgICAgb3V0LnByaW50bG4oIjx0cj4iKTsKKyAgICAgICAgICAgIG91dC5wcmludGxuKCI8dGQ+IiArIGNsYXp6Lm5hbWUgKyAiPC90ZD4iKTsKKyAgICAgICAgICAgIG91dC5wcmludGxuKCI8dGQ+IiArIGNsYXp6Lm1lZGlhblRpbWVNaWNyb3MoKSArICI8L3RkPiIpOworCisgICAgICAgICAgICBvdXQucHJpbnRsbigiPHRkPiIpOworICAgICAgICAgICAgU2V0PFN0cmluZz4gcHJvY05hbWVzID0gbmV3IFRyZWVTZXQ8U3RyaW5nPigpOworICAgICAgICAgICAgZm9yIChPcGVyYXRpb24gb3AgOiBjbGF6ei5sb2FkcykgcHJvY05hbWVzLmFkZChvcC5wcm9jZXNzLm5hbWUpOworICAgICAgICAgICAgZm9yIChPcGVyYXRpb24gb3AgOiBjbGF6ei5pbml0aWFsaXphdGlvbnMpIHsKKyAgICAgICAgICAgICAgICBwcm9jTmFtZXMuYWRkKG9wLnByb2Nlc3MubmFtZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocHJvY05hbWVzLnNpemUoKSA8PSAzKSB7CisgICAgICAgICAgICAgICAgZm9yIChTdHJpbmcgbmFtZSA6IHByb2NOYW1lcykgeworICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnQobmFtZSArICI8YnIvPiIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgSXRlcmF0b3I8U3RyaW5nPiBpID0gcHJvY05hbWVzLml0ZXJhdG9yKCk7CisgICAgICAgICAgICAgICAgb3V0LnByaW50KGkubmV4dCgpICsgIjxici8+Iik7CisgICAgICAgICAgICAgICAgb3V0LnByaW50KGkubmV4dCgpICsgIjxici8+Iik7CisgICAgICAgICAgICAgICAgb3V0LnByaW50KCIuLi5hbmQgIiArIChwcm9jTmFtZXMuc2l6ZSgpIC0gMikKKyAgICAgICAgICAgICAgICAgICAgICAgICsgIiBvdGhlcnMuIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBvdXQucHJpbnRsbigiPC90ZD4iKTsKKworICAgICAgICAgICAgaWYgKGNsYXp6Lm1lbW9yeVVzYWdlLmlzQXZhaWxhYmxlKCkpIHsKKyAgICAgICAgICAgICAgICBNZW1vcnlVc2FnZSBzdWJ0cmFjdGVkCisgICAgICAgICAgICAgICAgICAgICAgICA9IGNsYXp6Lm1lbW9yeVVzYWdlLnN1YnRyYWN0KGJhc2VsaW5lKTsKKworICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCI8dGQ+IiArIChzdWJ0cmFjdGVkLmphdmFIZWFwU2l6ZSgpCisgICAgICAgICAgICAgICAgICAgICAgICArIHN1YnRyYWN0ZWQubmF0aXZlSGVhcFNpemUpICsgIjwvdGQ+Iik7CisgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oIjx0ZD4iICsgc3VidHJhY3RlZC50b3RhbFBhZ2VzKCkgKyAiPC90ZD4iKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oIjx0ZD5uL2E8L3RkPiIpOyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBvdXQucHJpbnRsbigiPC90cj4iKTsKKyAgICAgICAgfQorCisgICAgICAgIG91dC5wcmludGxuKCI8L3RhYmxlPiIpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3Rvb2xzL3ByZWxvYWQvUHJvYy5qYXZhIGIvdG9vbHMvcHJlbG9hZC9Qcm9jLmphdmEKaW5kZXggNjZlMDRkYy4uMjEwNTAyMSAxMDA2NDQKLS0tIGEvdG9vbHMvcHJlbG9hZC9Qcm9jLmphdmEKKysrIGIvdG9vbHMvcHJlbG9hZC9Qcm9jLmphdmEKQEAgLTE0LDEzICsxNCwxMSBAQAogICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAgKi8KIAotaW1wb3J0IGphdmEudXRpbC5BcnJheXM7CiBpbXBvcnQgamF2YS51dGlsLkxpc3Q7CiBpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKIGltcG9ydCBqYXZhLnV0aWwuTGlua2VkTGlzdDsKIGltcG9ydCBqYXZhLnV0aWwuTWFwOwogaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwotaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKIGltcG9ydCBqYXZhLmlvLlNlcmlhbGl6YWJsZTsKIAogLyoqCkBAIC0zMCwxMSArMjgsNiBAQAogCiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMDsKIAotICAgIC8qKgotICAgICAqIERlZmF1bHQgcGVyY2VudGFnZSBvZiB0aW1lIHRvIGN1dCBvZmYgb2YgYXBwIGNsYXNzIGxvYWRpbmcgdGltZXMuCi0gICAgICovCi0gICAgc3RhdGljIGZpbmFsIGludCBQRVJDRU5UQUdFX1RPX1BSRUxPQUQgPSA3NTsKLQogICAgIC8qKiBQYXJlbnQgcHJvY2Vzcy4gKi8KICAgICBmaW5hbCBQcm9jIHBhcmVudDsKIApAQCAtODAsNzIgKzczLDExIEBACiAgICAgfQogCiAgICAgLyoqCi0gICAgICogUmV0dXJucyB0aGUgcGVyY2VudGFnZSBvZiB0aW1lIHdlIHNob3VsZCBjdXQgYnkgcHJlbG9hZGluZyBmb3IgdGhpcwotICAgICAqIGFwcC4KKyAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhpcyBwcm9jZXNzIGNvbWVzIGZyb20gdGhlIHp5Z290ZS4KICAgICAgKi8KLSAgICBpbnQgcGVyY2VudGFnZVRvUHJlbG9hZCgpIHsKLSAgICAgICAgcmV0dXJuIFBFUkNFTlRBR0VfVE9fUFJFTE9BRDsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBSZXR1cm5zIGEgbGlzdCBvZiBjbGFzc2VzIHdoaWNoIHNob3VsZCBiZSBwcmVsb2FkZWQuCi0gICAgICovCi0gICAgTGlzdDxMb2FkZWRDbGFzcz4gaGlnaGVzdFJhbmtlZENsYXNzZXMoKSB7Ci0gICAgICAgIGlmICghaXNBcHBsaWNhdGlvbigpIHx8IFBvbGljeS5pc1NlcnZpY2UodGhpcy5uYW1lKSkgewotICAgICAgICAgICAgcmV0dXJuIENvbGxlY3Rpb25zLmVtcHR5TGlzdCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gU29ydCBieSByYW5rLgotICAgICAgICBPcGVyYXRpb25bXSByYW5rZWQgPSBuZXcgT3BlcmF0aW9uW29wZXJhdGlvbnMuc2l6ZSgpXTsKLSAgICAgICAgcmFua2VkID0gb3BlcmF0aW9ucy50b0FycmF5KHJhbmtlZCk7Ci0gICAgICAgIEFycmF5cy5zb3J0KHJhbmtlZCwgbmV3IENsYXNzUmFuaygpKTsKLQotICAgICAgICAvLyBUaGUgcGVyY2VudGFnZSBvZiB0aW1lIHRvIHNhdmUgYnkgcHJlbG9hZGluZy4KLSAgICAgICAgaW50IHRpbWVUb1NhdmUgPSB0b3RhbFRpbWVNaWNyb3MoKSAqIHBlcmNlbnRhZ2VUb1ByZWxvYWQoKSAvIDEwMDsKLSAgICAgICAgaW50IHRpbWVTYXZlZCA9IDA7Ci0KLSAgICAgICAgaW50IGNvdW50ID0gMDsKLSAgICAgICAgTGlzdDxMb2FkZWRDbGFzcz4gaGlnaGVzdCA9IG5ldyBBcnJheUxpc3Q8TG9hZGVkQ2xhc3M+KCk7Ci0gICAgICAgIGZvciAoT3BlcmF0aW9uIG9wZXJhdGlvbiA6IHJhbmtlZCkgewotICAgICAgICAgICAgaWYgKHRpbWVTYXZlZCA+PSB0aW1lVG9TYXZlIHx8IGNvdW50KysgPiAxMDApIHsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCFQb2xpY3kuaXNQcmVsb2FkYWJsZUNsYXNzKG9wZXJhdGlvbi5sb2FkZWRDbGFzcy5uYW1lKSkgewotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoIW9wZXJhdGlvbi5sb2FkZWRDbGFzcy5zeXN0ZW1DbGFzcykgewotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgIAotICAgICAgICAgICAgaGlnaGVzdC5hZGQob3BlcmF0aW9uLmxvYWRlZENsYXNzKTsKLSAgICAgICAgICAgIHRpbWVTYXZlZCArPSBvcGVyYXRpb24ubWVkaWFuRXhjbHVzaXZlVGltZU1pY3JvcygpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGhpZ2hlc3Q7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogVG90YWwgdGltZSBzcGVudCBjbGFzcyBsb2FkaW5nIGFuZCBpbml0aWFsaXppbmcuCi0gICAgICovCi0gICAgaW50IHRvdGFsVGltZU1pY3JvcygpIHsKLSAgICAgICAgaW50IHRvdGFsVGltZSA9IDA7Ci0gICAgICAgIGZvciAoT3BlcmF0aW9uIG9wZXJhdGlvbiA6IG9wZXJhdGlvbnMpIHsKLSAgICAgICAgICAgIHRvdGFsVGltZSArPSBvcGVyYXRpb24ubWVkaWFuRXhjbHVzaXZlVGltZU1pY3JvcygpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0b3RhbFRpbWU7Ci0gICAgfQotCi0gICAgLyoqIAotICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGlzIHByb2Nlc3MgaXMgYW4gYXBwLgotICAgICAqLwotICAgIHB1YmxpYyBib29sZWFuIGlzQXBwbGljYXRpb24oKSB7Ci0gICAgICAgIGlmIChuYW1lLmVxdWFscygiY29tLmFuZHJvaWQuZGV2ZWxvcG1lbnQiKSkgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHBhcmVudCAhPSBudWxsICYmIHBhcmVudC5uYW1lLmVxdWFscygienlnb3RlIik7CisgICAgcHVibGljIGJvb2xlYW4gZnJvbVp5Z290ZSgpIHsKKyAgICAgICAgcmV0dXJuIHBhcmVudCAhPSBudWxsICYmIHBhcmVudC5uYW1lLmVxdWFscygienlnb3RlIikKKyAgICAgICAgICAgICAgICAmJiAhbmFtZS5lcXVhbHMoImNvbS5hbmRyb2lkLmRldmVsb3BtZW50Iik7CiAgICAgfQogCiAgICAgLyoqCmRpZmYgLS1naXQgYS90b29scy9wcmVsb2FkL1Jvb3QuamF2YSBiL3Rvb2xzL3ByZWxvYWQvUm9vdC5qYXZhCmluZGV4IDk0OWY5YjcuLjBiYzI5YmYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3ByZWxvYWQvUm9vdC5qYXZhCisrKyBiL3Rvb2xzL3ByZWxvYWQvUm9vdC5qYXZhCkBAIC00Niw3ICs0Niw3IEBACiAgICAgZmluYWwgTWFwPFN0cmluZywgTG9hZGVkQ2xhc3M+IGxvYWRlZENsYXNzZXMKICAgICAgICAgICAgID0gbmV3IEhhc2hNYXA8U3RyaW5nLCBMb2FkZWRDbGFzcz4oKTsKIAotICAgIGZpbmFsIE1lbW9yeVVzYWdlIGJhc2VsaW5lID0gTWVtb3J5VXNhZ2UuYmFzZWxpbmUoKTsKKyAgICBNZW1vcnlVc2FnZSBiYXNlbGluZSA9IE1lbW9yeVVzYWdlLmJhc2VsaW5lKCk7CiAKICAgICAvKioKICAgICAgKiBSZWNvcmRzIGNsYXNzIGxvYWRzIGFuZCBpbml0aWFsaXphdGlvbnMuCmRpZmYgLS1naXQgYS90b29scy9wcmVsb2FkL1dyaXRlUHJlbG9hZGVkQ2xhc3NGaWxlLmphdmEgYi90b29scy9wcmVsb2FkL1dyaXRlUHJlbG9hZGVkQ2xhc3NGaWxlLmphdmEKaW5kZXggYjIwOWFmMC4uOTZjNTM5YiAxMDA2NDQKLS0tIGEvdG9vbHMvcHJlbG9hZC9Xcml0ZVByZWxvYWRlZENsYXNzRmlsZS5qYXZhCisrKyBiL3Rvb2xzL3ByZWxvYWQvV3JpdGVQcmVsb2FkZWRDbGFzc0ZpbGUuamF2YQpAQCAtMjQsMTIgKzI0LDE4IEBACiBpbXBvcnQgamF2YS51dGlsLlRyZWVTZXQ7CiAKIC8qKgotICogV3JpdGVzIC9mcmFtZXdvcmtzL2Jhc2UvcHJlbG9hZGVkLWNsYXNzZXMuIEFsc28gdXBkYXRlcyBMb2FkZWRDbGFzcy5wcmVsb2FkZWQKLSAqIGZpZWxkcyBhbmQgd3JpdGVzIG92ZXIgY29tcGlsZWQgbG9nIGZpbGUuCisgKiBXcml0ZXMgL2ZyYW1ld29ya3MvYmFzZS9wcmVsb2FkZWQtY2xhc3Nlcy4gQWxzbyB1cGRhdGVzCisgKiB7QGxpbmsgTG9hZGVkQ2xhc3MjcHJlbG9hZGVkfSBmaWVsZHMgYW5kIHdyaXRlcyBvdmVyIGNvbXBpbGVkIGxvZyBmaWxlLgogICovCiBwdWJsaWMgY2xhc3MgV3JpdGVQcmVsb2FkZWRDbGFzc0ZpbGUgewogCi0gICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIElPRXhjZXB0aW9uLCBDbGFzc05vdEZvdW5kRXhjZXB0aW9uIHsKKyAgICAvKioKKyAgICAgKiBQcmVsb2FkIGFueSBjbGFzcyB0aGF0IHRha2UgbG9uZ2VyIHRvIGxvYWQgdGhhbiBNSU5fTE9BRF9USU1FX01JQ1JPUyB1cy4KKyAgICAgKi8KKyAgICBzdGF0aWMgZmluYWwgaW50IE1JTl9MT0FEX1RJTUVfTUlDUk9TID0gMTI1MDsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBJT0V4Y2VwdGlvbiwKKyAgICAgICAgICAgIENsYXNzTm90Rm91bmRFeGNlcHRpb24gewogICAgICAgICBpZiAoYXJncy5sZW5ndGggIT0gMSkgewogICAgICAgICAgICAgU3lzdGVtLmVyci5wcmludGxuKCJVc2FnZTogV3JpdGVQcmVsb2FkZWRDbGFzc0ZpbGUgW2NvbXBpbGVkIGxvZ10iKTsKICAgICAgICAgICAgIFN5c3RlbS5leGl0KC0xKTsKQEAgLTQ0LDQ4ICs1MCw2NCBAQAogCiAgICAgICAgIC8vIE9wZW4gcHJlbG9hZGVkLWNsYXNzZXMgZmlsZSBmb3Igb3V0cHV0LgogICAgICAgICBXcml0ZXIgb3V0ID0gbmV3IEJ1ZmZlcmVkV3JpdGVyKG5ldyBPdXRwdXRTdHJlYW1Xcml0ZXIoCi0gICAgICAgICAgICAgICAgbmV3IEZpbGVPdXRwdXRTdHJlYW0oUG9saWN5LmdldFByZWxvYWRlZENsYXNzRmlsZU5hbWUoKSksCisgICAgICAgICAgICAgICAgbmV3IEZpbGVPdXRwdXRTdHJlYW0oUG9saWN5LlBSRUxPQURFRF9DTEFTU19GSUxFKSwKICAgICAgICAgICAgICAgICBDaGFyc2V0LmZvck5hbWUoIlVTLUFTQ0lJIikpKTsKIAotICAgICAgICBvdXQud3JpdGUoIiMgQ2xhc3NlcyB3aGljaCBhcmUgcHJlbG9hZGVkIGJ5IGNvbS5hbmRyb2lkLmludGVybmFsLm9zLlp5Z290ZUluaXQuXG4iKTsKLSAgICAgICAgb3V0LndyaXRlKCIjIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IC9mcmFtZXdvcmtzL2Jhc2UvdG9vbHMvcHJlbG9hZC5cbiIpOwotICAgICAgICBvdXQud3JpdGUoIiMgcGVyY2VudD0iICsgUHJvYy5QRVJDRU5UQUdFX1RPX1BSRUxPQUQKLSAgICAgICAgICAgICAgICArICIsIHdlaWdodD0iICsgQ2xhc3NSYW5rLlNFUVVFTkNFX1dFSUdIVAotICAgICAgICAgICAgICAgICsgIiwgYnVja2V0X3NpemU9IiArIENsYXNzUmFuay5CVUNLRVRfU0laRQotICAgICAgICAgICAgICAgICsgIlxuIik7CisgICAgICAgIG91dC53cml0ZSgiIyBDbGFzc2VzIHdoaWNoIGFyZSBwcmVsb2FkZWQgYnkiCisgICAgICAgICAgICAgICAgKyAiIGNvbS5hbmRyb2lkLmludGVybmFsLm9zLlp5Z290ZUluaXQuXG4iKTsKKyAgICAgICAgb3V0LndyaXRlKCIjIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IGZyYW1ld29ya3MvYmFzZS90b29scy9wcmVsb2FkLyIKKyAgICAgICAgICAgICsgV3JpdGVQcmVsb2FkZWRDbGFzc0ZpbGUuY2xhc3MuZ2V0U2ltcGxlTmFtZSgpICsgIi5qYXZhLlxuIik7CisgICAgICAgIG91dC53cml0ZSgiIyBNSU5fTE9BRF9USU1FX01JQ1JPUz0iICsgTUlOX0xPQURfVElNRV9NSUNST1MgKyAiXG4iKTsKIAorICAgICAgICAvKgorICAgICAgICAgKiBUaGUgc2V0IG9mIGNsYXNzZXMgdG8gcHJlbG9hZC4gV2UgcHJlbG9hZCBhIGNsYXNzIGlmOgorICAgICAgICAgKgorICAgICAgICAgKiAgYSkgaXQncyBsb2FkZWQgaW4gdGhlIGJvb3RjbGFzc3BhdGggKGkuZS4sIGlzIGEgc3lzdGVtIGNsYXNzKQorICAgICAgICAgKiAgYikgaXQgdGFrZXMgPiBNSU5fTE9BRF9USU1FX01JQ1JPUyB1cyB0byBsb2FkLCBhbmQKKyAgICAgICAgICogIGMpIGl0J3MgbG9hZGVkIGJ5IG1vcmUgdGhhbiBvbmUgcHJvY2Vzcywgb3IgaXQncyBsb2FkZWQgYnkgYW4KKyAgICAgICAgICogICAgIGFwcGxpY2F0aW9uIChpLmUuLCBub3QgYSBsb25nIHJ1bm5pbmcgc2VydmljZSkKKyAgICAgICAgICovCiAgICAgICAgIFNldDxMb2FkZWRDbGFzcz4gdG9QcmVsb2FkID0gbmV3IFRyZWVTZXQ8TG9hZGVkQ2xhc3M+KCk7CiAKLSAgICAgICAgLy8gUHJlbG9hZCBhbGwgY2xhc3NlcyB0aGF0IHdlcmUgbG9hZGVkIGJ5IGF0IGxlYXN0IDIgYXBwcywgaWYgYm90aAotICAgICAgICAvLyBhcHBzIHJ1biBhdCB0aGUgc2FtZSB0aW1lLCB0aGV5J2xsIHNoYXJlIG1lbW9yeS4KKyAgICAgICAgLy8gUHJlbG9hZCBjbGFzc2VzIHRoYXQgd2VyZSBsb2FkZWQgYnkgYXQgbGVhc3QgMiBwcm9jZXNzZXMuIEhvcGVmdWxseSwKKyAgICAgICAgLy8gdGhlIG1lbW9yeSBhc3NvY2lhdGVkIHdpdGggdGhlc2UgY2xhc3NlcyB3aWxsIGJlIHNoYXJlZC4KICAgICAgICAgZm9yIChMb2FkZWRDbGFzcyBsb2FkZWRDbGFzcyA6IHJvb3QubG9hZGVkQ2xhc3Nlcy52YWx1ZXMoKSkgewotICAgICAgICAgICAgaWYgKCFsb2FkZWRDbGFzcy5pc1ByZWxvYWRhYmxlKCkpIHsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgU2V0PFN0cmluZz4gYXBwTmFtZXMgPSBsb2FkZWRDbGFzcy5hcHBsaWNhdGlvbk5hbWVzKCk7Ci0KLSAgICAgICAgICAgIGlmIChhcHBOYW1lcy5zaXplKCkgPiAzKSB7CisgICAgICAgICAgICBTZXQ8U3RyaW5nPiBuYW1lcyA9IGxvYWRlZENsYXNzLnByb2Nlc3NOYW1lcygpOworICAgICAgICAgICAgaWYgKHNob3VsZFByZWxvYWQobG9hZGVkQ2xhc3MpICYmIG5hbWVzLnNpemUoKSA+IDEpIHsKICAgICAgICAgICAgICAgICB0b1ByZWxvYWQuYWRkKGxvYWRlZENsYXNzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIC8vIFRyeSB0byBtYWtlIGluZGl2aWR1YWwgYXBwcyBzdGFydCBmYXN0ZXIgYnkgcHJlbG9hZGluZyBzbG93ZXN0Ci0gICAgICAgIC8vIGNsYXNzZXMuCisgICAgICAgIGludCBpbml0aWFsU2l6ZSA9IHRvUHJlbG9hZC5zaXplKCk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihpbml0aWFsU2l6ZQorICAgICAgICAgICAgICAgICsgIiBjbGFzc3NlcyB3ZXJlIGxvYWRlZCBieSBtb3JlIHRoYW4gb25lIGFwcC4iKTsKKworICAgICAgICAvLyBQcmVsb2FkIGVsaWdhYmxlIGNsYXNzZXMgZnJvbSBhcHBsaWNhdGlvbnMgKG5vdCBsb25nLXJ1bm5pbmcKKyAgICAgICAgLy8gc2VydmljZXMpLgogICAgICAgICBmb3IgKFByb2MgcHJvYyA6IHJvb3QucHJvY2Vzc2VzLnZhbHVlcygpKSB7Ci0gICAgICAgICAgICB0b1ByZWxvYWQuYWRkQWxsKHByb2MuaGlnaGVzdFJhbmtlZENsYXNzZXMoKSk7CisgICAgICAgICAgICBpZiAocHJvYy5mcm9tWnlnb3RlKCkgJiYgIVBvbGljeS5pc1NlcnZpY2UocHJvYy5uYW1lKSkgeworICAgICAgICAgICAgICAgIGZvciAoT3BlcmF0aW9uIG9wZXJhdGlvbiA6IHByb2Mub3BlcmF0aW9ucykgeworICAgICAgICAgICAgICAgICAgICBMb2FkZWRDbGFzcyBsb2FkZWRDbGFzcyA9IG9wZXJhdGlvbi5sb2FkZWRDbGFzczsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNob3VsZFByZWxvYWQobG9hZGVkQ2xhc3MpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0b1ByZWxvYWQuYWRkKGxvYWRlZENsYXNzKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbih0b1ByZWxvYWQuc2l6ZSgpICsgIiBjbGFzc2VzIHdpbGwgYmUgcHJlbG9hZGVkLiIpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkFkZGVkICIgKyAodG9QcmVsb2FkLnNpemUoKSAtIGluaXRpYWxTaXplKQorICAgICAgICAgICAgICAgICsgIiBtb3JlIHRvIHNwZWVkIHVwIGFwcGxpY2F0aW9ucy4iKTsKIAotICAgICAgICAvLyBNYWtlIGNsYXNzZXMgdGhhdCB3ZXJlIGFscmVhZHkgbG9hZGVkIGJ5IHRoZSB6eWdvdGUgZXhwbGljaXQuCisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbih0b1ByZWxvYWQuc2l6ZSgpCisgICAgICAgICAgICAgICAgKyAiIHRvdGFsIGNsYXNzZXMgd2lsbCBiZSBwcmVsb2FkZWQuIik7CisKKyAgICAgICAgLy8gTWFrZSBjbGFzc2VzIHRoYXQgd2VyZSBpbXBsaWNpdGx5IGxvYWRlZCBieSB0aGUgenlnb3RlIGV4cGxpY2l0LgogICAgICAgICAvLyBUaGlzIGFkZHMgbWluaW1hbCBvdmVyaGVhZCBidXQgYXZvaWQgY29uZnVzaW9uIGFib3V0IGNsYXNzZXMgbm90CiAgICAgICAgIC8vIGFwcGVhcmluZyBpbiB0aGUgbGlzdC4KLSAgICAgICAgYWRkQWxsQ2xhc3Nlc0Zvcigienlnb3RlIiwgcm9vdCwgdG9QcmVsb2FkKTsKKyAgICAgICAgYWRkQWxsQ2xhc3Nlc0Zyb20oInp5Z290ZSIsIHJvb3QsIHRvUHJlbG9hZCk7CiAKICAgICAgICAgZm9yIChMb2FkZWRDbGFzcyBsb2FkZWRDbGFzcyA6IHRvUHJlbG9hZCkgewotICAgICAgICAgICAgb3V0LndyaXRlKGxvYWRlZENsYXNzLm5hbWUpOwotICAgICAgICAgICAgb3V0LndyaXRlKCdcbicpOworICAgICAgICAgICAgb3V0LndyaXRlKGxvYWRlZENsYXNzLm5hbWUgKyAiXG4iKTsKICAgICAgICAgfQogCiAgICAgICAgIG91dC5jbG9zZSgpOwpAQCAtOTcsMTggKzExOSwyNiBAQAogICAgICAgICByb290LnRvRmlsZShyb290RmlsZSk7CiAgICAgfQogCi0gICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBhZGRBbGxDbGFzc2VzRm9yKFN0cmluZyBwYWNrYWdlTmFtZSwgUm9vdCByb290LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXQ8TG9hZGVkQ2xhc3M+IHRvUHJlbG9hZCkgeworICAgIHByaXZhdGUgc3RhdGljIHZvaWQgYWRkQWxsQ2xhc3Nlc0Zyb20oU3RyaW5nIHByb2Nlc3NOYW1lLCBSb290IHJvb3QsCisgICAgICAgICAgICBTZXQ8TG9hZGVkQ2xhc3M+IHRvUHJlbG9hZCkgewogICAgICAgICBmb3IgKFByb2MgcHJvYyA6IHJvb3QucHJvY2Vzc2VzLnZhbHVlcygpKSB7Ci0gICAgICAgICAgICBpZiAocHJvYy5uYW1lLmVxdWFscyhwYWNrYWdlTmFtZSkpIHsKKyAgICAgICAgICAgIGlmIChwcm9jLm5hbWUuZXF1YWxzKHByb2Nlc3NOYW1lKSkgewogICAgICAgICAgICAgICAgIGZvciAoT3BlcmF0aW9uIG9wZXJhdGlvbiA6IHByb2Mub3BlcmF0aW9ucykgewotICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBJJ20gbm90IHN1cmUgaG93IHRoZSB6eWdvdGUgbG9hZGVkIGNsYXNzZXMgdGhhdAotICAgICAgICAgICAgICAgICAgICAvLyBhcmVuJ3Qgc3VwcG9zZWQgdG8gYmUgcHJlbG9hZGFibGUuLi4KLSAgICAgICAgICAgICAgICAgICAgaWYgKG9wZXJhdGlvbi5sb2FkZWRDbGFzcy5pc1ByZWxvYWRhYmxlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBwcmVsb2FkYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gUG9saWN5LmlzUHJlbG9hZGFibGUob3BlcmF0aW9uLmxvYWRlZENsYXNzKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHByZWxvYWRhYmxlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICB0b1ByZWxvYWQuYWRkKG9wZXJhdGlvbi5sb2FkZWRDbGFzcyk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIGNsYXNzIHNob3VsZCBiZSBwcmVsb2FkZWQuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBzaG91bGRQcmVsb2FkKExvYWRlZENsYXNzIGNsYXp6KSB7CisgICAgICAgIHJldHVybiBQb2xpY3kuaXNQcmVsb2FkYWJsZShjbGF6eikKKyAgICAgICAgICAgICAgICAmJiBjbGF6ei5tZWRpYW5UaW1lTWljcm9zKCkgPiBNSU5fTE9BRF9USU1FX01JQ1JPUzsKKyAgICB9CiB9CmRpZmYgLS1naXQgYS90b29scy9wcmVsb2FkL2xvYWRjbGFzcy9Mb2FkQ2xhc3MuamF2YSBiL3Rvb2xzL3ByZWxvYWQvbG9hZGNsYXNzL0xvYWRDbGFzcy5qYXZhCmluZGV4IDQ3MWNjODQuLmE3MWI2YTggMTAwNjQ0Ci0tLSBhL3Rvb2xzL3ByZWxvYWQvbG9hZGNsYXNzL0xvYWRDbGFzcy5qYXZhCisrKyBiL3Rvb2xzL3ByZWxvYWQvbG9hZGNsYXNzL0xvYWRDbGFzcy5qYXZhCkBAIC0zNSw3ICszNSwxMSBAQAogCiAgICAgICAgIGlmIChhcmdzLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgbG9uZyBzdGFydCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOwogICAgICAgICAgICAgICAgIENsYXNzLmZvck5hbWUoYXJnc1swXSk7CisgICAgICAgICAgICAgICAgbG9uZyBlbGFwc2VkID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCkgLSBzdGFydDsKKyAgICAgICAgICAgICAgICBMb2cuaSgiTG9hZENsYXNzIiwgIkxvYWRlZCAiICsgYXJnc1swXSArICIgaW4gIiArIGVsYXBzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICsgIm1zLiIpOwogICAgICAgICAgICAgfSBjYXRjaCAoQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiBlKSB7CiAgICAgICAgICAgICAgICAgTG9nLncoIkxvYWRDbGFzcyIsIGUpOwogICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL3Rvb2xzL3ByZWxvYWQvcHJlbG9hZC5pcHIgYi90b29scy9wcmVsb2FkL3ByZWxvYWQuaXByCmluZGV4IGY3OGJmNzYuLjBjOTYyMWMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3ByZWxvYWQvcHJlbG9hZC5pcHIKKysrIGIvdG9vbHMvcHJlbG9hZC9wcmVsb2FkLmlwcgpAQCAtMjUsNyArMjUsMjggQEAKICAgICA8b3B0aW9uIG5hbWU9IlVTRV9QUk9KRUNUX0xFVkVMX1NFVFRJTkdTIiB2YWx1ZT0iZmFsc2UiIC8+CiAgIDwvY29tcG9uZW50PgogICA8Y29tcG9uZW50IG5hbWU9IkNvZGVTdHlsZVNldHRpbmdzTWFuYWdlciI+Ci0gICAgPG9wdGlvbiBuYW1lPSJQRVJfUFJPSkVDVF9TRVRUSU5HUyIgLz4KKyAgICA8b3B0aW9uIG5hbWU9IlBFUl9QUk9KRUNUX1NFVFRJTkdTIj4KKyAgICAgIDx2YWx1ZT4KKyAgICAgICAgPEFERElUSU9OQUxfSU5ERU5UX09QVElPTlMgZmlsZVR5cGU9ImphdmEiPgorICAgICAgICAgIDxvcHRpb24gbmFtZT0iSU5ERU5UX1NJWkUiIHZhbHVlPSI0IiAvPgorICAgICAgICAgIDxvcHRpb24gbmFtZT0iQ09OVElOVUFUSU9OX0lOREVOVF9TSVpFIiB2YWx1ZT0iOCIgLz4KKyAgICAgICAgICA8b3B0aW9uIG5hbWU9IlRBQl9TSVpFIiB2YWx1ZT0iNCIgLz4KKyAgICAgICAgICA8b3B0aW9uIG5hbWU9IlVTRV9UQUJfQ0hBUkFDVEVSIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgICAgICAgPG9wdGlvbiBuYW1lPSJTTUFSVF9UQUJTIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgICAgICAgPG9wdGlvbiBuYW1lPSJMQUJFTF9JTkRFTlRfU0laRSIgdmFsdWU9IjAiIC8+CisgICAgICAgICAgPG9wdGlvbiBuYW1lPSJMQUJFTF9JTkRFTlRfQUJTT0xVVEUiIHZhbHVlPSJmYWxzZSIgLz4KKyAgICAgICAgPC9BRERJVElPTkFMX0lOREVOVF9PUFRJT05TPgorICAgICAgICA8QURESVRJT05BTF9JTkRFTlRfT1BUSU9OUyBmaWxlVHlwZT0ieG1sIj4KKyAgICAgICAgICA8b3B0aW9uIG5hbWU9IklOREVOVF9TSVpFIiB2YWx1ZT0iNCIgLz4KKyAgICAgICAgICA8b3B0aW9uIG5hbWU9IkNPTlRJTlVBVElPTl9JTkRFTlRfU0laRSIgdmFsdWU9IjgiIC8+CisgICAgICAgICAgPG9wdGlvbiBuYW1lPSJUQUJfU0laRSIgdmFsdWU9IjQiIC8+CisgICAgICAgICAgPG9wdGlvbiBuYW1lPSJVU0VfVEFCX0NIQVJBQ1RFUiIgdmFsdWU9ImZhbHNlIiAvPgorICAgICAgICAgIDxvcHRpb24gbmFtZT0iU01BUlRfVEFCUyIgdmFsdWU9ImZhbHNlIiAvPgorICAgICAgICAgIDxvcHRpb24gbmFtZT0iTEFCRUxfSU5ERU5UX1NJWkUiIHZhbHVlPSIwIiAvPgorICAgICAgICAgIDxvcHRpb24gbmFtZT0iTEFCRUxfSU5ERU5UX0FCU09MVVRFIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgICAgIDwvQURESVRJT05BTF9JTkRFTlRfT1BUSU9OUz4KKyAgICAgIDwvdmFsdWU+CisgICAgPC9vcHRpb24+CiAgICAgPG9wdGlvbiBuYW1lPSJVU0VfUEVSX1BST0pFQ1RfU0VUVElOR1MiIHZhbHVlPSJmYWxzZSIgLz4KICAgPC9jb21wb25lbnQ+CiAgIDxjb21wb25lbnQgbmFtZT0iQ29tcGlsZXJDb25maWd1cmF0aW9uIj4KQEAgLTQwNSw2ICs0MjYsNyBAQAogICA8L2NvbXBvbmVudD4KICAgPGNvbXBvbmVudCBuYW1lPSJWY3NEaXJlY3RvcnlNYXBwaW5ncyI+CiAgICAgPG1hcHBpbmcgZGlyZWN0b3J5PSIiIHZjcz0iUGVyZm9yY2UiIC8+CisgICAgPG1hcHBpbmcgZGlyZWN0b3J5PSIvVm9sdW1lcy9BbmRyb2lkL2RvbnV0L2ZyYW1ld29ya3MvYmFzZSIgdmNzPSJHaXQiIC8+CiAgIDwvY29tcG9uZW50PgogICA8Y29tcG9uZW50IG5hbWU9IlZzc0NvbmZpZ3VyYXRpb24iPgogICAgIDxvcHRpb24gbmFtZT0iQ0xJRU5UX1BBVEgiIHZhbHVlPSIiIC8+CmRpZmYgLS1naXQgYS90b29scy9wcmVsb2FkL3NvcnR0YWJsZS5qcyBiL3Rvb2xzL3ByZWxvYWQvc29ydHRhYmxlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1YmNjYjIKLS0tIC9kZXYvbnVsbAorKysgYi90b29scy9wcmVsb2FkL3NvcnR0YWJsZS5qcwpAQCAtMCwwICsxLDQ5MyBAQAorLyoKKyAgU29ydFRhYmxlCisgIHZlcnNpb24gMgorICA3dGggQXByaWwgMjAwNworICBTdHVhcnQgTGFuZ3JpZGdlLCBodHRwOi8vd3d3LmtyeW9nZW5peC5vcmcvY29kZS9icm93c2VyL3NvcnR0YWJsZS8KKyAgCisgIEluc3RydWN0aW9uczoKKyAgRG93bmxvYWQgdGhpcyBmaWxlCisgIEFkZCA8c2NyaXB0IHNyYz0ic29ydHRhYmxlLmpzIj48L3NjcmlwdD4gdG8geW91ciBIVE1MCisgIEFkZCBjbGFzcz0ic29ydGFibGUiIHRvIGFueSB0YWJsZSB5b3UnZCBsaWtlIHRvIG1ha2Ugc29ydGFibGUKKyAgQ2xpY2sgb24gdGhlIGhlYWRlcnMgdG8gc29ydAorICAKKyAgVGhhbmtzIHRvIG1hbnksIG1hbnkgcGVvcGxlIGZvciBjb250cmlidXRpb25zIGFuZCBzdWdnZXN0aW9ucy4KKyAgTGljZW5jZWQgYXMgWDExOiBodHRwOi8vd3d3LmtyeW9nZW5peC5vcmcvY29kZS9icm93c2VyL2xpY2VuY2UuaHRtbAorICBUaGlzIGJhc2ljYWxseSBtZWFuczogZG8gd2hhdCB5b3Ugd2FudCB3aXRoIGl0LgorKi8KKworIAordmFyIHN0SXNJRSA9IC8qQGNjX29uIUAqL2ZhbHNlOworCitzb3J0dGFibGUgPSB7CisgIGluaXQ6IGZ1bmN0aW9uKCkgeworICAgIC8vIHF1aXQgaWYgdGhpcyBmdW5jdGlvbiBoYXMgYWxyZWFkeSBiZWVuIGNhbGxlZAorICAgIGlmIChhcmd1bWVudHMuY2FsbGVlLmRvbmUpIHJldHVybjsKKyAgICAvLyBmbGFnIHRoaXMgZnVuY3Rpb24gc28gd2UgZG9uJ3QgZG8gdGhlIHNhbWUgdGhpbmcgdHdpY2UKKyAgICBhcmd1bWVudHMuY2FsbGVlLmRvbmUgPSB0cnVlOworICAgIC8vIGtpbGwgdGhlIHRpbWVyCisgICAgaWYgKF90aW1lcikgY2xlYXJJbnRlcnZhbChfdGltZXIpOworICAgIAorICAgIGlmICghZG9jdW1lbnQuY3JlYXRlRWxlbWVudCB8fCAhZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUpIHJldHVybjsKKyAgICAKKyAgICBzb3J0dGFibGUuREFURV9SRSA9IC9eKFxkXGQ/KVtcL1wuLV0oXGRcZD8pW1wvXC4tXSgoXGRcZCk/XGRcZCkkLzsKKyAgICAKKyAgICBmb3JFYWNoKGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0YWJsZScpLCBmdW5jdGlvbih0YWJsZSkgeworICAgICAgaWYgKHRhYmxlLmNsYXNzTmFtZS5zZWFyY2goL1xic29ydGFibGVcYi8pICE9IC0xKSB7CisgICAgICAgIHNvcnR0YWJsZS5tYWtlU29ydGFibGUodGFibGUpOworICAgICAgfQorICAgIH0pOworICAgIAorICB9LAorICAKKyAgbWFrZVNvcnRhYmxlOiBmdW5jdGlvbih0YWJsZSkgeworICAgIGlmICh0YWJsZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgndGhlYWQnKS5sZW5ndGggPT0gMCkgeworICAgICAgLy8gdGFibGUgZG9lc24ndCBoYXZlIGEgdEhlYWQuIFNpbmNlIGl0IHNob3VsZCBoYXZlLCBjcmVhdGUgb25lIGFuZAorICAgICAgLy8gcHV0IHRoZSBmaXJzdCB0YWJsZSByb3cgaW4gaXQuCisgICAgICB0aGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0aGVhZCcpOworICAgICAgdGhlLmFwcGVuZENoaWxkKHRhYmxlLnJvd3NbMF0pOworICAgICAgdGFibGUuaW5zZXJ0QmVmb3JlKHRoZSx0YWJsZS5maXJzdENoaWxkKTsKKyAgICB9CisgICAgLy8gU2FmYXJpIGRvZXNuJ3Qgc3VwcG9ydCB0YWJsZS50SGVhZCwgc2lnaAorICAgIGlmICh0YWJsZS50SGVhZCA9PSBudWxsKSB0YWJsZS50SGVhZCA9IHRhYmxlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0aGVhZCcpWzBdOworICAgIAorICAgIGlmICh0YWJsZS50SGVhZC5yb3dzLmxlbmd0aCAhPSAxKSByZXR1cm47IC8vIGNhbid0IGNvcGUgd2l0aCB0d28gaGVhZGVyIHJvd3MKKyAgICAKKyAgICAvLyBTb3J0dGFibGUgdjEgcHV0IHJvd3Mgd2l0aCBhIGNsYXNzIG9mICJzb3J0Ym90dG9tIiBhdCB0aGUgYm90dG9tIChhcworICAgIC8vICJ0b3RhbCIgcm93cywgZm9yIGV4YW1wbGUpLiBUaGlzIGlzIEImUiwgc2luY2Ugd2hhdCB5b3UncmUgc3VwcG9zZWQKKyAgICAvLyB0byBkbyBpcyBwdXQgdGhlbSBpbiBhIHRmb290LiBTbywgaWYgdGhlcmUgYXJlIHNvcnRib3R0b20gcm93cywKKyAgICAvLyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIG1vdmUgdGhlbSB0byB0Zm9vdCAoY3JlYXRpbmcgaXQgaWYgbmVlZGVkKS4KKyAgICBzb3J0Ym90dG9tcm93cyA9IFtdOworICAgIGZvciAodmFyIGk9MDsgaTx0YWJsZS5yb3dzLmxlbmd0aDsgaSsrKSB7CisgICAgICBpZiAodGFibGUucm93c1tpXS5jbGFzc05hbWUuc2VhcmNoKC9cYnNvcnRib3R0b21cYi8pICE9IC0xKSB7CisgICAgICAgIHNvcnRib3R0b21yb3dzW3NvcnRib3R0b21yb3dzLmxlbmd0aF0gPSB0YWJsZS5yb3dzW2ldOworICAgICAgfQorICAgIH0KKyAgICBpZiAoc29ydGJvdHRvbXJvd3MpIHsKKyAgICAgIGlmICh0YWJsZS50Rm9vdCA9PSBudWxsKSB7CisgICAgICAgIC8vIHRhYmxlIGRvZXNuJ3QgaGF2ZSBhIHRmb290LiBDcmVhdGUgb25lLgorICAgICAgICB0Zm8gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0Zm9vdCcpOworICAgICAgICB0YWJsZS5hcHBlbmRDaGlsZCh0Zm8pOworICAgICAgfQorICAgICAgZm9yICh2YXIgaT0wOyBpPHNvcnRib3R0b21yb3dzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIHRmby5hcHBlbmRDaGlsZChzb3J0Ym90dG9tcm93c1tpXSk7CisgICAgICB9CisgICAgICBkZWxldGUgc29ydGJvdHRvbXJvd3M7CisgICAgfQorICAgIAorICAgIC8vIHdvcmsgdGhyb3VnaCBlYWNoIGNvbHVtbiBhbmQgY2FsY3VsYXRlIGl0cyB0eXBlCisgICAgaGVhZHJvdyA9IHRhYmxlLnRIZWFkLnJvd3NbMF0uY2VsbHM7CisgICAgZm9yICh2YXIgaT0wOyBpPGhlYWRyb3cubGVuZ3RoOyBpKyspIHsKKyAgICAgIC8vIG1hbnVhbGx5IG92ZXJyaWRlIHRoZSB0eXBlIHdpdGggYSBzb3J0dGFibGVfdHlwZSBhdHRyaWJ1dGUKKyAgICAgIGlmICghaGVhZHJvd1tpXS5jbGFzc05hbWUubWF0Y2goL1xic29ydHRhYmxlX25vc29ydFxiLykpIHsgLy8gc2tpcCB0aGlzIGNvbAorICAgICAgICBtdGNoID0gaGVhZHJvd1tpXS5jbGFzc05hbWUubWF0Y2goL1xic29ydHRhYmxlXyhbYS16MC05XSspXGIvKTsKKyAgICAgICAgaWYgKG10Y2gpIHsgb3ZlcnJpZGUgPSBtdGNoWzFdOyB9CisJICAgICAgaWYgKG10Y2ggJiYgdHlwZW9mIHNvcnR0YWJsZVsic29ydF8iK292ZXJyaWRlXSA9PSAnZnVuY3Rpb24nKSB7CisJICAgICAgICBoZWFkcm93W2ldLnNvcnR0YWJsZV9zb3J0ZnVuY3Rpb24gPSBzb3J0dGFibGVbInNvcnRfIitvdmVycmlkZV07CisJICAgICAgfSBlbHNlIHsKKwkgICAgICAgIGhlYWRyb3dbaV0uc29ydHRhYmxlX3NvcnRmdW5jdGlvbiA9IHNvcnR0YWJsZS5ndWVzc1R5cGUodGFibGUsaSk7CisJICAgICAgfQorCSAgICAgIC8vIG1ha2UgaXQgY2xpY2thYmxlIHRvIHNvcnQKKwkgICAgICBoZWFkcm93W2ldLnNvcnR0YWJsZV9jb2x1bW5pbmRleCA9IGk7CisJICAgICAgaGVhZHJvd1tpXS5zb3J0dGFibGVfdGJvZHkgPSB0YWJsZS50Qm9kaWVzWzBdOworCSAgICAgIGRlYW5fYWRkRXZlbnQoaGVhZHJvd1tpXSwiY2xpY2siLCBmdW5jdGlvbihlKSB7CisKKyAgICAgICAgICBpZiAodGhpcy5jbGFzc05hbWUuc2VhcmNoKC9cYnNvcnR0YWJsZV9zb3J0ZWRcYi8pICE9IC0xKSB7CisgICAgICAgICAgICAvLyBpZiB3ZSdyZSBhbHJlYWR5IHNvcnRlZCBieSB0aGlzIGNvbHVtbiwganVzdCAKKyAgICAgICAgICAgIC8vIHJldmVyc2UgdGhlIHRhYmxlLCB3aGljaCBpcyBxdWlja2VyCisgICAgICAgICAgICBzb3J0dGFibGUucmV2ZXJzZSh0aGlzLnNvcnR0YWJsZV90Ym9keSk7CisgICAgICAgICAgICB0aGlzLmNsYXNzTmFtZSA9IHRoaXMuY2xhc3NOYW1lLnJlcGxhY2UoJ3NvcnR0YWJsZV9zb3J0ZWQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzb3J0dGFibGVfc29ydGVkX3JldmVyc2UnKTsKKyAgICAgICAgICAgIHRoaXMucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NvcnR0YWJsZV9zb3J0ZndkaW5kJykpOworICAgICAgICAgICAgc29ydHJldmluZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKKyAgICAgICAgICAgIHNvcnRyZXZpbmQuaWQgPSAic29ydHRhYmxlX3NvcnRyZXZpbmQiOworICAgICAgICAgICAgc29ydHJldmluZC5pbm5lckhUTUwgPSBzdElzSUUgPyAnJm5ic3A8Zm9udCBmYWNlPSJ3ZWJkaW5ncyI+NTwvZm9udD4nIDogJyZuYnNwOyYjeDI1QjQ7JzsKKyAgICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQoc29ydHJldmluZCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgfQorICAgICAgICAgIGlmICh0aGlzLmNsYXNzTmFtZS5zZWFyY2goL1xic29ydHRhYmxlX3NvcnRlZF9yZXZlcnNlXGIvKSAhPSAtMSkgeworICAgICAgICAgICAgLy8gaWYgd2UncmUgYWxyZWFkeSBzb3J0ZWQgYnkgdGhpcyBjb2x1bW4gaW4gcmV2ZXJzZSwganVzdCAKKyAgICAgICAgICAgIC8vIHJlLXJldmVyc2UgdGhlIHRhYmxlLCB3aGljaCBpcyBxdWlja2VyCisgICAgICAgICAgICBzb3J0dGFibGUucmV2ZXJzZSh0aGlzLnNvcnR0YWJsZV90Ym9keSk7CisgICAgICAgICAgICB0aGlzLmNsYXNzTmFtZSA9IHRoaXMuY2xhc3NOYW1lLnJlcGxhY2UoJ3NvcnR0YWJsZV9zb3J0ZWRfcmV2ZXJzZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NvcnR0YWJsZV9zb3J0ZWQnKTsKKyAgICAgICAgICAgIHRoaXMucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NvcnR0YWJsZV9zb3J0cmV2aW5kJykpOworICAgICAgICAgICAgc29ydGZ3ZGluZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKKyAgICAgICAgICAgIHNvcnRmd2RpbmQuaWQgPSAic29ydHRhYmxlX3NvcnRmd2RpbmQiOworICAgICAgICAgICAgc29ydGZ3ZGluZC5pbm5lckhUTUwgPSBzdElzSUUgPyAnJm5ic3A8Zm9udCBmYWNlPSJ3ZWJkaW5ncyI+NjwvZm9udD4nIDogJyZuYnNwOyYjeDI1QkU7JzsKKyAgICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQoc29ydGZ3ZGluZCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgfQorICAgICAgICAgIAorICAgICAgICAgIC8vIHJlbW92ZSBzb3J0dGFibGVfc29ydGVkIGNsYXNzZXMKKyAgICAgICAgICB0aGVhZHJvdyA9IHRoaXMucGFyZW50Tm9kZTsKKyAgICAgICAgICBmb3JFYWNoKHRoZWFkcm93LmNoaWxkTm9kZXMsIGZ1bmN0aW9uKGNlbGwpIHsKKyAgICAgICAgICAgIGlmIChjZWxsLm5vZGVUeXBlID09IDEpIHsgLy8gYW4gZWxlbWVudAorICAgICAgICAgICAgICBjZWxsLmNsYXNzTmFtZSA9IGNlbGwuY2xhc3NOYW1lLnJlcGxhY2UoJ3NvcnR0YWJsZV9zb3J0ZWRfcmV2ZXJzZScsJycpOworICAgICAgICAgICAgICBjZWxsLmNsYXNzTmFtZSA9IGNlbGwuY2xhc3NOYW1lLnJlcGxhY2UoJ3NvcnR0YWJsZV9zb3J0ZWQnLCcnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9KTsKKyAgICAgICAgICBzb3J0ZndkaW5kID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NvcnR0YWJsZV9zb3J0ZndkaW5kJyk7CisgICAgICAgICAgaWYgKHNvcnRmd2RpbmQpIHsgc29ydGZ3ZGluZC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHNvcnRmd2RpbmQpOyB9CisgICAgICAgICAgc29ydHJldmluZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzb3J0dGFibGVfc29ydHJldmluZCcpOworICAgICAgICAgIGlmIChzb3J0cmV2aW5kKSB7IHNvcnRyZXZpbmQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzb3J0cmV2aW5kKTsgfQorICAgICAgICAgIAorICAgICAgICAgIHRoaXMuY2xhc3NOYW1lICs9ICcgc29ydHRhYmxlX3NvcnRlZCc7CisgICAgICAgICAgc29ydGZ3ZGluZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKKyAgICAgICAgICBzb3J0ZndkaW5kLmlkID0gInNvcnR0YWJsZV9zb3J0ZndkaW5kIjsKKyAgICAgICAgICBzb3J0ZndkaW5kLmlubmVySFRNTCA9IHN0SXNJRSA/ICcmbmJzcDxmb250IGZhY2U9IndlYmRpbmdzIj42PC9mb250PicgOiAnJm5ic3A7JiN4MjVCRTsnOworICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQoc29ydGZ3ZGluZCk7CisKKwkgICAgICAgIC8vIGJ1aWxkIGFuIGFycmF5IHRvIHNvcnQuIFRoaXMgaXMgYSBTY2h3YXJ0emlhbiB0cmFuc2Zvcm0gdGhpbmcsCisJICAgICAgICAvLyBpLmUuLCB3ZSAiZGVjb3JhdGUiIGVhY2ggcm93IHdpdGggdGhlIGFjdHVhbCBzb3J0IGtleSwKKwkgICAgICAgIC8vIHNvcnQgYmFzZWQgb24gdGhlIHNvcnQga2V5cywgYW5kIHRoZW4gcHV0IHRoZSByb3dzIGJhY2sgaW4gb3JkZXIKKwkgICAgICAgIC8vIHdoaWNoIGlzIGEgbG90IGZhc3RlciBiZWNhdXNlIHlvdSBvbmx5IGRvIGdldElubmVyVGV4dCBvbmNlIHBlciByb3cKKwkgICAgICAgIHJvd19hcnJheSA9IFtdOworCSAgICAgICAgY29sID0gdGhpcy5zb3J0dGFibGVfY29sdW1uaW5kZXg7CisJICAgICAgICByb3dzID0gdGhpcy5zb3J0dGFibGVfdGJvZHkucm93czsKKwkgICAgICAgIGZvciAodmFyIGo9MDsgajxyb3dzLmxlbmd0aDsgaisrKSB7CisJICAgICAgICAgIHJvd19hcnJheVtyb3dfYXJyYXkubGVuZ3RoXSA9IFtzb3J0dGFibGUuZ2V0SW5uZXJUZXh0KHJvd3Nbal0uY2VsbHNbY29sXSksIHJvd3Nbal1dOworCSAgICAgICAgfQorCSAgICAgICAgLyogSWYgeW91IHdhbnQgYSBzdGFibGUgc29ydCwgdW5jb21tZW50IHRoZSBmb2xsb3dpbmcgbGluZSAqLworCSAgICAgICAgLy9zb3J0dGFibGUuc2hha2VyX3NvcnQocm93X2FycmF5LCB0aGlzLnNvcnR0YWJsZV9zb3J0ZnVuY3Rpb24pOworCSAgICAgICAgLyogYW5kIGNvbW1lbnQgb3V0IHRoaXMgb25lICovCisJICAgICAgICByb3dfYXJyYXkuc29ydCh0aGlzLnNvcnR0YWJsZV9zb3J0ZnVuY3Rpb24pOworCSAgICAgICAgCisJICAgICAgICB0YiA9IHRoaXMuc29ydHRhYmxlX3Rib2R5OworCSAgICAgICAgZm9yICh2YXIgaj0wOyBqPHJvd19hcnJheS5sZW5ndGg7IGorKykgeworCSAgICAgICAgICB0Yi5hcHBlbmRDaGlsZChyb3dfYXJyYXlbal1bMV0pOworCSAgICAgICAgfQorCSAgICAgICAgCisJICAgICAgICBkZWxldGUgcm93X2FycmF5OworCSAgICAgIH0pOworCSAgICB9CisgICAgfQorICB9LAorICAKKyAgZ3Vlc3NUeXBlOiBmdW5jdGlvbih0YWJsZSwgY29sdW1uKSB7CisgICAgLy8gZ3Vlc3MgdGhlIHR5cGUgb2YgYSBjb2x1bW4gYmFzZWQgb24gaXRzIGZpcnN0IG5vbi1ibGFuayByb3cKKyAgICBzb3J0Zm4gPSBzb3J0dGFibGUuc29ydF9hbHBoYTsKKyAgICBmb3IgKHZhciBpPTA7IGk8dGFibGUudEJvZGllc1swXS5yb3dzLmxlbmd0aDsgaSsrKSB7CisgICAgICB0ZXh0ID0gc29ydHRhYmxlLmdldElubmVyVGV4dCh0YWJsZS50Qm9kaWVzWzBdLnJvd3NbaV0uY2VsbHNbY29sdW1uXSk7CisgICAgICBpZiAodGV4dCAhPSAnJykgeworICAgICAgICBpZiAodGV4dC5tYXRjaCgvXi0/W6MkpF0/W1xkLC5dKyU/JC8pKSB7CisgICAgICAgICAgcmV0dXJuIHNvcnR0YWJsZS5zb3J0X251bWVyaWM7CisgICAgICAgIH0KKyAgICAgICAgLy8gY2hlY2sgZm9yIGEgZGF0ZTogZGQvbW0veXl5eSBvciBkZC9tbS95eSAKKyAgICAgICAgLy8gY2FuIGhhdmUgLyBvciAuIG9yIC0gYXMgc2VwYXJhdG9yCisgICAgICAgIC8vIGNhbiBiZSBtbS9kZCBhcyB3ZWxsCisgICAgICAgIHBvc3NkYXRlID0gdGV4dC5tYXRjaChzb3J0dGFibGUuREFURV9SRSkKKyAgICAgICAgaWYgKHBvc3NkYXRlKSB7CisgICAgICAgICAgLy8gbG9va3MgbGlrZSBhIGRhdGUKKyAgICAgICAgICBmaXJzdCA9IHBhcnNlSW50KHBvc3NkYXRlWzFdKTsKKyAgICAgICAgICBzZWNvbmQgPSBwYXJzZUludChwb3NzZGF0ZVsyXSk7CisgICAgICAgICAgaWYgKGZpcnN0ID4gMTIpIHsKKyAgICAgICAgICAgIC8vIGRlZmluaXRlbHkgZGQvbW0KKyAgICAgICAgICAgIHJldHVybiBzb3J0dGFibGUuc29ydF9kZG1tOworICAgICAgICAgIH0gZWxzZSBpZiAoc2Vjb25kID4gMTIpIHsKKyAgICAgICAgICAgIHJldHVybiBzb3J0dGFibGUuc29ydF9tbWRkOworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBsb29rcyBsaWtlIGEgZGF0ZSwgYnV0IHdlIGNhbid0IHRlbGwgd2hpY2gsIHNvIGFzc3VtZQorICAgICAgICAgICAgLy8gdGhhdCBpdCdzIGRkL21tIChFbmdsaXNoIGltcGVyaWFsaXNtISkgYW5kIGtlZXAgbG9va2luZworICAgICAgICAgICAgc29ydGZuID0gc29ydHRhYmxlLnNvcnRfZGRtbTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHNvcnRmbjsKKyAgfSwKKyAgCisgIGdldElubmVyVGV4dDogZnVuY3Rpb24obm9kZSkgeworICAgIC8vIGdldHMgdGhlIHRleHQgd2Ugd2FudCB0byB1c2UgZm9yIHNvcnRpbmcgZm9yIGEgY2VsbC4KKyAgICAvLyBzdHJpcHMgbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZS4KKyAgICAvLyB0aGlzIGlzICpub3QqIGEgZ2VuZXJpYyBnZXRJbm5lclRleHQgZnVuY3Rpb247IGl0J3Mgc3BlY2lhbCB0byBzb3J0dGFibGUuCisgICAgLy8gZm9yIGV4YW1wbGUsIHlvdSBjYW4gb3ZlcnJpZGUgdGhlIGNlbGwgdGV4dCB3aXRoIGEgY3VzdG9ta2V5IGF0dHJpYnV0ZS4KKyAgICAvLyBpdCBhbHNvIGdldHMgLnZhbHVlIGZvciA8aW5wdXQ+IGZpZWxkcy4KKyAgICAKKyAgICBoYXNJbnB1dHMgPSAodHlwZW9mIG5vZGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUgPT0gJ2Z1bmN0aW9uJykgJiYKKyAgICAgICAgICAgICAgICAgbm9kZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKS5sZW5ndGg7CisgICAgCisgICAgaWYgKG5vZGUuZ2V0QXR0cmlidXRlKCJzb3J0dGFibGVfY3VzdG9ta2V5IikgIT0gbnVsbCkgeworICAgICAgcmV0dXJuIG5vZGUuZ2V0QXR0cmlidXRlKCJzb3J0dGFibGVfY3VzdG9ta2V5Iik7CisgICAgfQorICAgIGVsc2UgaWYgKHR5cGVvZiBub2RlLnRleHRDb250ZW50ICE9ICd1bmRlZmluZWQnICYmICFoYXNJbnB1dHMpIHsKKyAgICAgIHJldHVybiBub2RlLnRleHRDb250ZW50LnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJyk7CisgICAgfQorICAgIGVsc2UgaWYgKHR5cGVvZiBub2RlLmlubmVyVGV4dCAhPSAndW5kZWZpbmVkJyAmJiAhaGFzSW5wdXRzKSB7CisgICAgICByZXR1cm4gbm9kZS5pbm5lclRleHQucmVwbGFjZSgvXlxzK3xccyskL2csICcnKTsKKyAgICB9CisgICAgZWxzZSBpZiAodHlwZW9mIG5vZGUudGV4dCAhPSAndW5kZWZpbmVkJyAmJiAhaGFzSW5wdXRzKSB7CisgICAgICByZXR1cm4gbm9kZS50ZXh0LnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgc3dpdGNoIChub2RlLm5vZGVUeXBlKSB7CisgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICBpZiAobm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09ICdpbnB1dCcpIHsKKyAgICAgICAgICAgIHJldHVybiBub2RlLnZhbHVlLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJyk7CisgICAgICAgICAgfQorICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgcmV0dXJuIG5vZGUubm9kZVZhbHVlLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJyk7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgY2FzZSAxMToKKyAgICAgICAgICB2YXIgaW5uZXJUZXh0ID0gJyc7CisgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlLmNoaWxkTm9kZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGlubmVyVGV4dCArPSBzb3J0dGFibGUuZ2V0SW5uZXJUZXh0KG5vZGUuY2hpbGROb2Rlc1tpXSk7CisgICAgICAgICAgfQorICAgICAgICAgIHJldHVybiBpbm5lclRleHQucmVwbGFjZSgvXlxzK3xccyskL2csICcnKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICByZXR1cm4gJyc7CisgICAgICB9CisgICAgfQorICB9LAorICAKKyAgcmV2ZXJzZTogZnVuY3Rpb24odGJvZHkpIHsKKyAgICAvLyByZXZlcnNlIHRoZSByb3dzIGluIGEgdGJvZHkKKyAgICBuZXdyb3dzID0gW107CisgICAgZm9yICh2YXIgaT0wOyBpPHRib2R5LnJvd3MubGVuZ3RoOyBpKyspIHsKKyAgICAgIG5ld3Jvd3NbbmV3cm93cy5sZW5ndGhdID0gdGJvZHkucm93c1tpXTsKKyAgICB9CisgICAgZm9yICh2YXIgaT1uZXdyb3dzLmxlbmd0aC0xOyBpPj0wOyBpLS0pIHsKKyAgICAgICB0Ym9keS5hcHBlbmRDaGlsZChuZXdyb3dzW2ldKTsKKyAgICB9CisgICAgZGVsZXRlIG5ld3Jvd3M7CisgIH0sCisgIAorICAvKiBzb3J0IGZ1bmN0aW9ucworICAgICBlYWNoIHNvcnQgZnVuY3Rpb24gdGFrZXMgdHdvIHBhcmFtZXRlcnMsIGEgYW5kIGIKKyAgICAgeW91IGFyZSBjb21wYXJpbmcgYVswXSBhbmQgYlswXSAqLworICBzb3J0X251bWVyaWM6IGZ1bmN0aW9uKGEsYikgeworICAgIGFhID0gcGFyc2VGbG9hdChhWzBdLnJlcGxhY2UoL1teMC05Li1dL2csJycpKTsKKyAgICBpZiAoaXNOYU4oYWEpKSBhYSA9IDA7CisgICAgYmIgPSBwYXJzZUZsb2F0KGJbMF0ucmVwbGFjZSgvW14wLTkuLV0vZywnJykpOyAKKyAgICBpZiAoaXNOYU4oYmIpKSBiYiA9IDA7CisgICAgcmV0dXJuIGFhLWJiOworICB9LAorICBzb3J0X2FscGhhOiBmdW5jdGlvbihhLGIpIHsKKyAgICBpZiAoYVswXT09YlswXSkgcmV0dXJuIDA7CisgICAgaWYgKGFbMF08YlswXSkgcmV0dXJuIC0xOworICAgIHJldHVybiAxOworICB9LAorICBzb3J0X2RkbW06IGZ1bmN0aW9uKGEsYikgeworICAgIG10Y2ggPSBhWzBdLm1hdGNoKHNvcnR0YWJsZS5EQVRFX1JFKTsKKyAgICB5ID0gbXRjaFszXTsgbSA9IG10Y2hbMl07IGQgPSBtdGNoWzFdOworICAgIGlmIChtLmxlbmd0aCA9PSAxKSBtID0gJzAnK207CisgICAgaWYgKGQubGVuZ3RoID09IDEpIGQgPSAnMCcrZDsKKyAgICBkdDEgPSB5K20rZDsKKyAgICBtdGNoID0gYlswXS5tYXRjaChzb3J0dGFibGUuREFURV9SRSk7CisgICAgeSA9IG10Y2hbM107IG0gPSBtdGNoWzJdOyBkID0gbXRjaFsxXTsKKyAgICBpZiAobS5sZW5ndGggPT0gMSkgbSA9ICcwJyttOworICAgIGlmIChkLmxlbmd0aCA9PSAxKSBkID0gJzAnK2Q7CisgICAgZHQyID0geSttK2Q7CisgICAgaWYgKGR0MT09ZHQyKSByZXR1cm4gMDsKKyAgICBpZiAoZHQxPGR0MikgcmV0dXJuIC0xOworICAgIHJldHVybiAxOworICB9LAorICBzb3J0X21tZGQ6IGZ1bmN0aW9uKGEsYikgeworICAgIG10Y2ggPSBhWzBdLm1hdGNoKHNvcnR0YWJsZS5EQVRFX1JFKTsKKyAgICB5ID0gbXRjaFszXTsgZCA9IG10Y2hbMl07IG0gPSBtdGNoWzFdOworICAgIGlmIChtLmxlbmd0aCA9PSAxKSBtID0gJzAnK207CisgICAgaWYgKGQubGVuZ3RoID09IDEpIGQgPSAnMCcrZDsKKyAgICBkdDEgPSB5K20rZDsKKyAgICBtdGNoID0gYlswXS5tYXRjaChzb3J0dGFibGUuREFURV9SRSk7CisgICAgeSA9IG10Y2hbM107IGQgPSBtdGNoWzJdOyBtID0gbXRjaFsxXTsKKyAgICBpZiAobS5sZW5ndGggPT0gMSkgbSA9ICcwJyttOworICAgIGlmIChkLmxlbmd0aCA9PSAxKSBkID0gJzAnK2Q7CisgICAgZHQyID0geSttK2Q7CisgICAgaWYgKGR0MT09ZHQyKSByZXR1cm4gMDsKKyAgICBpZiAoZHQxPGR0MikgcmV0dXJuIC0xOworICAgIHJldHVybiAxOworICB9LAorICAKKyAgc2hha2VyX3NvcnQ6IGZ1bmN0aW9uKGxpc3QsIGNvbXBfZnVuYykgeworICAgIC8vIEEgc3RhYmxlIHNvcnQgZnVuY3Rpb24gdG8gYWxsb3cgbXVsdGktbGV2ZWwgc29ydGluZyBvZiBkYXRhCisgICAgLy8gc2VlOiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvY2t0YWlsX3NvcnQKKyAgICAvLyB0aGFua3MgdG8gSm9zZXBoIE5haG1pYXMKKyAgICB2YXIgYiA9IDA7CisgICAgdmFyIHQgPSBsaXN0Lmxlbmd0aCAtIDE7CisgICAgdmFyIHN3YXAgPSB0cnVlOworCisgICAgd2hpbGUoc3dhcCkgeworICAgICAgICBzd2FwID0gZmFsc2U7CisgICAgICAgIGZvcih2YXIgaSA9IGI7IGkgPCB0OyArK2kpIHsKKyAgICAgICAgICAgIGlmICggY29tcF9mdW5jKGxpc3RbaV0sIGxpc3RbaSsxXSkgPiAwICkgeworICAgICAgICAgICAgICAgIHZhciBxID0gbGlzdFtpXTsgbGlzdFtpXSA9IGxpc3RbaSsxXTsgbGlzdFtpKzFdID0gcTsKKyAgICAgICAgICAgICAgICBzd2FwID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSAvLyBmb3IKKyAgICAgICAgdC0tOworCisgICAgICAgIGlmICghc3dhcCkgYnJlYWs7CisKKyAgICAgICAgZm9yKHZhciBpID0gdDsgaSA+IGI7IC0taSkgeworICAgICAgICAgICAgaWYgKCBjb21wX2Z1bmMobGlzdFtpXSwgbGlzdFtpLTFdKSA8IDAgKSB7CisgICAgICAgICAgICAgICAgdmFyIHEgPSBsaXN0W2ldOyBsaXN0W2ldID0gbGlzdFtpLTFdOyBsaXN0W2ktMV0gPSBxOworICAgICAgICAgICAgICAgIHN3YXAgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9IC8vIGZvcgorICAgICAgICBiKys7CisKKyAgICB9IC8vIHdoaWxlKHN3YXApCisgIH0gIAorfQorCisvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgIFN1cHBvcnRpbmcgZnVuY3Rpb25zOiBidW5kbGVkIGhlcmUgdG8gYXZvaWQgZGVwZW5kaW5nIG9uIGEgbGlicmFyeQorICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCisKKy8vIERlYW4gRWR3YXJkcy9NYXR0aGlhcyBNaWxsZXIvSm9obiBSZXNpZworCisvKiBmb3IgTW96aWxsYS9PcGVyYTkgKi8KK2lmIChkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKSB7CisgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIHNvcnR0YWJsZS5pbml0LCBmYWxzZSk7Cit9CisKKy8qIGZvciBJbnRlcm5ldCBFeHBsb3JlciAqLworLypAY2Nfb24gQCovCisvKkBpZiAoQF93aW4zMikKKyAgICBkb2N1bWVudC53cml0ZSgiPHNjcmlwdCBpZD1fX2llX29ubG9hZCBkZWZlciBzcmM9amF2YXNjcmlwdDp2b2lkKDApPjxcL3NjcmlwdD4iKTsKKyAgICB2YXIgc2NyaXB0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIl9faWVfb25sb2FkIik7CisgICAgc2NyaXB0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAodGhpcy5yZWFkeVN0YXRlID09ICJjb21wbGV0ZSIpIHsKKyAgICAgICAgICAgIHNvcnR0YWJsZS5pbml0KCk7IC8vIGNhbGwgdGhlIG9ubG9hZCBoYW5kbGVyCisgICAgICAgIH0KKyAgICB9OworLypAZW5kIEAqLworCisvKiBmb3IgU2FmYXJpICovCitpZiAoL1dlYktpdC9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpIHsgLy8gc25pZmYKKyAgICB2YXIgX3RpbWVyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICgvbG9hZGVkfGNvbXBsZXRlLy50ZXN0KGRvY3VtZW50LnJlYWR5U3RhdGUpKSB7CisgICAgICAgICAgICBzb3J0dGFibGUuaW5pdCgpOyAvLyBjYWxsIHRoZSBvbmxvYWQgaGFuZGxlcgorICAgICAgICB9CisgICAgfSwgMTApOworfQorCisvKiBmb3Igb3RoZXIgYnJvd3NlcnMgKi8KK3dpbmRvdy5vbmxvYWQgPSBzb3J0dGFibGUuaW5pdDsKKworLy8gd3JpdHRlbiBieSBEZWFuIEVkd2FyZHMsIDIwMDUKKy8vIHdpdGggaW5wdXQgZnJvbSBUaW5vIFppamRlbCwgTWF0dGhpYXMgTWlsbGVyLCBEaWVnbyBQZXJpbmkKKworLy8gaHR0cDovL2RlYW4uZWR3YXJkcy5uYW1lL3dlYmxvZy8yMDA1LzEwL2FkZC1ldmVudC8KKworZnVuY3Rpb24gZGVhbl9hZGRFdmVudChlbGVtZW50LCB0eXBlLCBoYW5kbGVyKSB7CisJaWYgKGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcikgeworCQllbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgaGFuZGxlciwgZmFsc2UpOworCX0gZWxzZSB7CisJCS8vIGFzc2lnbiBlYWNoIGV2ZW50IGhhbmRsZXIgYSB1bmlxdWUgSUQKKwkJaWYgKCFoYW5kbGVyLiQkZ3VpZCkgaGFuZGxlci4kJGd1aWQgPSBkZWFuX2FkZEV2ZW50Lmd1aWQrKzsKKwkJLy8gY3JlYXRlIGEgaGFzaCB0YWJsZSBvZiBldmVudCB0eXBlcyBmb3IgdGhlIGVsZW1lbnQKKwkJaWYgKCFlbGVtZW50LmV2ZW50cykgZWxlbWVudC5ldmVudHMgPSB7fTsKKwkJLy8gY3JlYXRlIGEgaGFzaCB0YWJsZSBvZiBldmVudCBoYW5kbGVycyBmb3IgZWFjaCBlbGVtZW50L2V2ZW50IHBhaXIKKwkJdmFyIGhhbmRsZXJzID0gZWxlbWVudC5ldmVudHNbdHlwZV07CisJCWlmICghaGFuZGxlcnMpIHsKKwkJCWhhbmRsZXJzID0gZWxlbWVudC5ldmVudHNbdHlwZV0gPSB7fTsKKwkJCS8vIHN0b3JlIHRoZSBleGlzdGluZyBldmVudCBoYW5kbGVyIChpZiB0aGVyZSBpcyBvbmUpCisJCQlpZiAoZWxlbWVudFsib24iICsgdHlwZV0pIHsKKwkJCQloYW5kbGVyc1swXSA9IGVsZW1lbnRbIm9uIiArIHR5cGVdOworCQkJfQorCQl9CisJCS8vIHN0b3JlIHRoZSBldmVudCBoYW5kbGVyIGluIHRoZSBoYXNoIHRhYmxlCisJCWhhbmRsZXJzW2hhbmRsZXIuJCRndWlkXSA9IGhhbmRsZXI7CisJCS8vIGFzc2lnbiBhIGdsb2JhbCBldmVudCBoYW5kbGVyIHRvIGRvIGFsbCB0aGUgd29yaworCQllbGVtZW50WyJvbiIgKyB0eXBlXSA9IGhhbmRsZUV2ZW50OworCX0KK307CisvLyBhIGNvdW50ZXIgdXNlZCB0byBjcmVhdGUgdW5pcXVlIElEcworZGVhbl9hZGRFdmVudC5ndWlkID0gMTsKKworZnVuY3Rpb24gcmVtb3ZlRXZlbnQoZWxlbWVudCwgdHlwZSwgaGFuZGxlcikgeworCWlmIChlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIpIHsKKwkJZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGhhbmRsZXIsIGZhbHNlKTsKKwl9IGVsc2UgeworCQkvLyBkZWxldGUgdGhlIGV2ZW50IGhhbmRsZXIgZnJvbSB0aGUgaGFzaCB0YWJsZQorCQlpZiAoZWxlbWVudC5ldmVudHMgJiYgZWxlbWVudC5ldmVudHNbdHlwZV0pIHsKKwkJCWRlbGV0ZSBlbGVtZW50LmV2ZW50c1t0eXBlXVtoYW5kbGVyLiQkZ3VpZF07CisJCX0KKwl9Cit9OworCitmdW5jdGlvbiBoYW5kbGVFdmVudChldmVudCkgeworCXZhciByZXR1cm5WYWx1ZSA9IHRydWU7CisJLy8gZ3JhYiB0aGUgZXZlbnQgb2JqZWN0IChJRSB1c2VzIGEgZ2xvYmFsIGV2ZW50IG9iamVjdCkKKwlldmVudCA9IGV2ZW50IHx8IGZpeEV2ZW50KCgodGhpcy5vd25lckRvY3VtZW50IHx8IHRoaXMuZG9jdW1lbnQgfHwgdGhpcykucGFyZW50V2luZG93IHx8IHdpbmRvdykuZXZlbnQpOworCS8vIGdldCBhIHJlZmVyZW5jZSB0byB0aGUgaGFzaCB0YWJsZSBvZiBldmVudCBoYW5kbGVycworCXZhciBoYW5kbGVycyA9IHRoaXMuZXZlbnRzW2V2ZW50LnR5cGVdOworCS8vIGV4ZWN1dGUgZWFjaCBldmVudCBoYW5kbGVyCisJZm9yICh2YXIgaSBpbiBoYW5kbGVycykgeworCQl0aGlzLiQkaGFuZGxlRXZlbnQgPSBoYW5kbGVyc1tpXTsKKwkJaWYgKHRoaXMuJCRoYW5kbGVFdmVudChldmVudCkgPT09IGZhbHNlKSB7CisJCQlyZXR1cm5WYWx1ZSA9IGZhbHNlOworCQl9CisJfQorCXJldHVybiByZXR1cm5WYWx1ZTsKK307CisKK2Z1bmN0aW9uIGZpeEV2ZW50KGV2ZW50KSB7CisJLy8gYWRkIFczQyBzdGFuZGFyZCBldmVudCBtZXRob2RzCisJZXZlbnQucHJldmVudERlZmF1bHQgPSBmaXhFdmVudC5wcmV2ZW50RGVmYXVsdDsKKwlldmVudC5zdG9wUHJvcGFnYXRpb24gPSBmaXhFdmVudC5zdG9wUHJvcGFnYXRpb247CisJcmV0dXJuIGV2ZW50OworfTsKK2ZpeEV2ZW50LnByZXZlbnREZWZhdWx0ID0gZnVuY3Rpb24oKSB7CisJdGhpcy5yZXR1cm5WYWx1ZSA9IGZhbHNlOworfTsKK2ZpeEV2ZW50LnN0b3BQcm9wYWdhdGlvbiA9IGZ1bmN0aW9uKCkgeworICB0aGlzLmNhbmNlbEJ1YmJsZSA9IHRydWU7Cit9CisKKy8vIERlYW4ncyBmb3JFYWNoOiBodHRwOi8vZGVhbi5lZHdhcmRzLm5hbWUvYmFzZS9mb3JFYWNoLmpzCisvKgorCWZvckVhY2gsIHZlcnNpb24gMS4wCisJQ29weXJpZ2h0IDIwMDYsIERlYW4gRWR3YXJkcworCUxpY2Vuc2U6IGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwCisqLworCisvLyBhcnJheS1saWtlIGVudW1lcmF0aW9uCitpZiAoIUFycmF5LmZvckVhY2gpIHsgLy8gbW96aWxsYSBhbHJlYWR5IHN1cHBvcnRzIHRoaXMKKwlBcnJheS5mb3JFYWNoID0gZnVuY3Rpb24oYXJyYXksIGJsb2NrLCBjb250ZXh0KSB7CisJCWZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHsKKwkJCWJsb2NrLmNhbGwoY29udGV4dCwgYXJyYXlbaV0sIGksIGFycmF5KTsKKwkJfQorCX07Cit9CisKKy8vIGdlbmVyaWMgZW51bWVyYXRpb24KK0Z1bmN0aW9uLnByb3RvdHlwZS5mb3JFYWNoID0gZnVuY3Rpb24ob2JqZWN0LCBibG9jaywgY29udGV4dCkgeworCWZvciAodmFyIGtleSBpbiBvYmplY3QpIHsKKwkJaWYgKHR5cGVvZiB0aGlzLnByb3RvdHlwZVtrZXldID09ICJ1bmRlZmluZWQiKSB7CisJCQlibG9jay5jYWxsKGNvbnRleHQsIG9iamVjdFtrZXldLCBrZXksIG9iamVjdCk7CisJCX0KKwl9Cit9OworCisvLyBjaGFyYWN0ZXIgZW51bWVyYXRpb24KK1N0cmluZy5mb3JFYWNoID0gZnVuY3Rpb24oc3RyaW5nLCBibG9jaywgY29udGV4dCkgeworCUFycmF5LmZvckVhY2goc3RyaW5nLnNwbGl0KCIiKSwgZnVuY3Rpb24oY2hyLCBpbmRleCkgeworCQlibG9jay5jYWxsKGNvbnRleHQsIGNociwgaW5kZXgsIHN0cmluZyk7CisJfSk7Cit9OworCisvLyBnbG9iYWxseSByZXNvbHZlIGZvckVhY2ggZW51bWVyYXRpb24KK3ZhciBmb3JFYWNoID0gZnVuY3Rpb24ob2JqZWN0LCBibG9jaywgY29udGV4dCkgeworCWlmIChvYmplY3QpIHsKKwkJdmFyIHJlc29sdmUgPSBPYmplY3Q7IC8vIGRlZmF1bHQKKwkJaWYgKG9iamVjdCBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7CisJCQkvLyBmdW5jdGlvbnMgaGF2ZSBhICJsZW5ndGgiIHByb3BlcnR5CisJCQlyZXNvbHZlID0gRnVuY3Rpb247CisJCX0gZWxzZSBpZiAob2JqZWN0LmZvckVhY2ggaW5zdGFuY2VvZiBGdW5jdGlvbikgeworCQkJLy8gdGhlIG9iamVjdCBpbXBsZW1lbnRzIGEgY3VzdG9tIGZvckVhY2ggbWV0aG9kIHNvIHVzZSB0aGF0CisJCQlvYmplY3QuZm9yRWFjaChibG9jaywgY29udGV4dCk7CisJCQlyZXR1cm47CisJCX0gZWxzZSBpZiAodHlwZW9mIG9iamVjdCA9PSAic3RyaW5nIikgeworCQkJLy8gdGhlIG9iamVjdCBpcyBhIHN0cmluZworCQkJcmVzb2x2ZSA9IFN0cmluZzsKKwkJfSBlbHNlIGlmICh0eXBlb2Ygb2JqZWN0Lmxlbmd0aCA9PSAibnVtYmVyIikgeworCQkJLy8gdGhlIG9iamVjdCBpcyBhcnJheS1saWtlCisJCQlyZXNvbHZlID0gQXJyYXk7CisJCX0KKwkJcmVzb2x2ZS5mb3JFYWNoKG9iamVjdCwgYmxvY2ssIGNvbnRleHQpOworCX0KK307CisK