U3lzdGVtLldlYi5IdHRwRXhjZXB0aW9uICgweDgwMDA0MDA1KTogRXJyb3IgZXhlY3V0aW5nIGNoaWxkIHJlcXVlc3QgZm9yIGhhbmRsZXIgJ1N5c3RlbS5XZWIuTXZjLkh0dHBIYW5kbGVyVXRpbCtTZXJ2ZXJFeGVjdXRlSHR0cEhhbmRsZXJBc3luY1dyYXBwZXInLiAtLS0+IFN5c3RlbS5OdWxsUmVmZXJlbmNlRXhjZXB0aW9uOiBVbmFibGUgdG8gZ2V0IEZvcm0gd2l0aCBJRDogJ2RjZTEwMDBkLWFlZmYtNDRkMy05NWJkLWM5ZjAyYzAxZDg2NScgb2ZmIGRpc2sgb3IgZnJvbSB0aGUgY2FjaGUuIENoZWNrIHRoZSBmaWxlIGV4aXN0cyBvbiBkaXNrDQogICBhdCBVbWJyYWNvLkZvcm1zLkNvcmUuRGF0YS5TdG9yYWdlLkZvcm1TdG9yYWdlLkdldEZvcm0oR3VpZCBpZCkNCiAgIGF0IFVtYnJhY28uRm9ybXMuV2ViLkNvbnRyb2xsZXJzLlVtYnJhY29Gb3Jtc0NvbnRyb2xsZXIuR2V0Rm9ybShHdWlkIGZvcm1JZCkNCiAgIGF0IFVtYnJhY28uRm9ybXMuV2ViLkNvbnRyb2xsZXJzLlVtYnJhY29Gb3Jtc0NvbnRyb2xsZXIuR2V0Rm9ybU1vZGVsKEd1aWQgZm9ybUlkLCBOdWxsYWJsZWAxIHJlY29yZElkLCBTdHJpbmcgdGhlbWUpDQogICBhdCBVbWJyYWNvLkZvcm1zLldlYi5Db250cm9sbGVycy5VbWJyYWNvRm9ybXNDb250cm9sbGVyLlJlbmRlckZvcm0oR3VpZCBmb3JtSWQsIE51bGxhYmxlYDEgcmVjb3JkSWQsIFN0cmluZyB0aGVtZSwgQm9vbGVhbiBpbmNsdWRlU2NyaXB0cykNCiAgIGF0IGxhbWJkYV9tZXRob2QoQ2xvc3VyZSAsIENvbnRyb2xsZXJCYXNlICwgT2JqZWN0W10gKQ0KICAgYXQgU3lzdGVtLldlYi5NdmMuQWN0aW9uTWV0aG9kRGlzcGF0Y2hlci5FeGVjdXRlKENvbnRyb2xsZXJCYXNlIGNvbnRyb2xsZXIsIE9iamVjdFtdIHBhcmFtZXRlcnMpDQogICBhdCBTeXN0ZW0uV2ViLk12Yy5SZWZsZWN0ZWRBY3Rpb25EZXNjcmlwdG9yLkV4ZWN1dGUoQ29udHJvbGxlckNvbnRleHQgY29udHJvbGxlckNvbnRleHQsIElEaWN0aW9uYXJ5YDIgcGFyYW1ldGVycykNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLkNvbnRyb2xsZXJBY3Rpb25JbnZva2VyLkludm9rZUFjdGlvbk1ldGhvZChDb250cm9sbGVyQ29udGV4dCBjb250cm9sbGVyQ29udGV4dCwgQWN0aW9uRGVzY3JpcHRvciBhY3Rpb25EZXNjcmlwdG9yLCBJRGljdGlvbmFyeWAyIHBhcmFtZXRlcnMpDQogICBhdCBTeXN0ZW0uV2ViLk12Yy5Bc3luYy5Bc3luY0NvbnRyb2xsZXJBY3Rpb25JbnZva2VyLjw+Yy48QmVnaW5JbnZva2VTeW5jaHJvbm91c0FjdGlvbk1ldGhvZD5iX185XzAoSUFzeW5jUmVzdWx0IGFzeW5jUmVzdWx0LCBBY3Rpb25JbnZvY2F0aW9uIGlubmVySW52b2tlU3RhdGUpDQogICBhdCBTeXN0ZW0uV2ViLk12Yy5Bc3luYy5Bc3luY1Jlc3VsdFdyYXBwZXIuV3JhcHBlZEFzeW5jUmVzdWx0YDIuQ2FsbEVuZERlbGVnYXRlKElBc3luY1Jlc3VsdCBhc3luY1Jlc3VsdCkNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLkFzeW5jLkFzeW5jUmVzdWx0V3JhcHBlci5XcmFwcGVkQXN5bmNSZXN1bHRCYXNlYDEuRW5kKCkNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLkFzeW5jLkFzeW5jQ29udHJvbGxlckFjdGlvbkludm9rZXIuRW5kSW52b2tlQWN0aW9uTWV0aG9kKElBc3luY1Jlc3VsdCBhc3luY1Jlc3VsdCkNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLkFzeW5jLkFzeW5jQ29udHJvbGxlckFjdGlvbkludm9rZXIuQXN5bmNJbnZvY2F0aW9uV2l0aEZpbHRlcnMuPD5jX19EaXNwbGF5Q2xhc3MxMV8wLjxJbnZva2VBY3Rpb25NZXRob2RGaWx0ZXJBc3luY2hyb25vdXNseVJlY3Vyc2l2ZT5iX18wKCkNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLkFzeW5jLkFzeW5jQ29udHJvbGxlckFjdGlvbkludm9rZXIuQXN5bmNJbnZvY2F0aW9uV2l0aEZpbHRlcnMuPD5jX19EaXNwbGF5Q2xhc3MxMV8yLjxJbnZva2VBY3Rpb25NZXRob2RGaWx0ZXJBc3luY2hyb25vdXNseVJlY3Vyc2l2ZT5iX18yKCkNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLkFzeW5jLkFzeW5jQ29udHJvbGxlckFjdGlvbkludm9rZXIuQXN5bmNJbnZvY2F0aW9uV2l0aEZpbHRlcnMuPD5jX19EaXNwbGF5Q2xhc3MxMV8yLjxJbnZva2VBY3Rpb25NZXRob2RGaWx0ZXJBc3luY2hyb25vdXNseVJlY3Vyc2l2ZT5iX18yKCkNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLkFzeW5jLkFzeW5jQ29udHJvbGxlckFjdGlvbkludm9rZXIuQXN5bmNJbnZvY2F0aW9uV2l0aEZpbHRlcnMuPD5jX19EaXNwbGF5Q2xhc3MxMV8yLjxJbnZva2VBY3Rpb25NZXRob2RGaWx0ZXJBc3luY2hyb25vdXNseVJlY3Vyc2l2ZT5iX18yKCkNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLkFzeW5jLkFzeW5jQ29udHJvbGxlckFjdGlvbkludm9rZXIuQXN5bmNJbnZvY2F0aW9uV2l0aEZpbHRlcnMuPD5jX19EaXNwbGF5Q2xhc3MxMV8yLjxJbnZva2VBY3Rpb25NZXRob2RGaWx0ZXJBc3luY2hyb25vdXNseVJlY3Vyc2l2ZT5iX18yKCkNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLkFzeW5jLkFzeW5jQ29udHJvbGxlckFjdGlvbkludm9rZXIuPD5jX19EaXNwbGF5Q2xhc3M3XzAuPEJlZ2luSW52b2tlQWN0aW9uTWV0aG9kV2l0aEZpbHRlcnM+Yl9fMShJQXN5bmNSZXN1bHQgYXN5bmNSZXN1bHQpDQogICBhdCBTeXN0ZW0uV2ViLk12Yy5Bc3luYy5Bc3luY1Jlc3VsdFdyYXBwZXIuV3JhcHBlZEFzeW5jUmVzdWx0YDEuQ2FsbEVuZERlbGVnYXRlKElBc3luY1Jlc3VsdCBhc3luY1Jlc3VsdCkNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLkFzeW5jLkFzeW5jUmVzdWx0V3JhcHBlci5XcmFwcGVkQXN5bmNSZXN1bHRCYXNlYDEuRW5kKCkNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLkFzeW5jLkFzeW5jQ29udHJvbGxlckFjdGlvbkludm9rZXIuRW5kSW52b2tlQWN0aW9uTWV0aG9kV2l0aEZpbHRlcnMoSUFzeW5jUmVzdWx0IGFzeW5jUmVzdWx0KQ0KICAgYXQgU3lzdGVtLldlYi5NdmMuQXN5bmMuQXN5bmNDb250cm9sbGVyQWN0aW9uSW52b2tlci48PmNfX0Rpc3BsYXlDbGFzczNfNi48QmVnaW5JbnZva2VBY3Rpb24+Yl9fNCgpDQogICBhdCBTeXN0ZW0uV2ViLk12Yy5Bc3luYy5Bc3luY0NvbnRyb2xsZXJBY3Rpb25JbnZva2VyLjw+Y19fRGlzcGxheUNsYXNzM18xLjxCZWdpbkludm9rZUFjdGlvbj5iX18xKElBc3luY1Jlc3VsdCBhc3luY1Jlc3VsdCkNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLkFzeW5jLkFzeW5jUmVzdWx0V3JhcHBlci5XcmFwcGVkQXN5bmNSZXN1bHRgMS5DYWxsRW5kRGVsZWdhdGUoSUFzeW5jUmVzdWx0IGFzeW5jUmVzdWx0KQ0KICAgYXQgU3lzdGVtLldlYi5NdmMuQXN5bmMuQXN5bmNSZXN1bHRXcmFwcGVyLldyYXBwZWRBc3luY1Jlc3VsdEJhc2VgMS5FbmQoKQ0KICAgYXQgU3lzdGVtLldlYi5NdmMuQXN5bmMuQXN5bmNDb250cm9sbGVyQWN0aW9uSW52b2tlci5FbmRJbnZva2VBY3Rpb24oSUFzeW5jUmVzdWx0IGFzeW5jUmVzdWx0KQ0KICAgYXQgU3lzdGVtLldlYi5NdmMuQ29udHJvbGxlci48PmMuPEJlZ2luRXhlY3V0ZUNvcmU+Yl9fMTUyXzEoSUFzeW5jUmVzdWx0IGFzeW5jUmVzdWx0LCBFeGVjdXRlQ29yZVN0YXRlIGlubmVyU3RhdGUpDQogICBhdCBTeXN0ZW0uV2ViLk12Yy5Bc3luYy5Bc3luY1Jlc3VsdFdyYXBwZXIuV3JhcHBlZEFzeW5jVm9pZGAxLkNhbGxFbmREZWxlZ2F0ZShJQXN5bmNSZXN1bHQgYXN5bmNSZXN1bHQpDQogICBhdCBTeXN0ZW0uV2ViLk12Yy5Bc3luYy5Bc3luY1Jlc3VsdFdyYXBwZXIuV3JhcHBlZEFzeW5jUmVzdWx0QmFzZWAxLkVuZCgpDQogICBhdCBTeXN0ZW0uV2ViLk12Yy5Db250cm9sbGVyLkVuZEV4ZWN1dGVDb3JlKElBc3luY1Jlc3VsdCBhc3luY1Jlc3VsdCkNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLkNvbnRyb2xsZXIuPD5jLjxCZWdpbkV4ZWN1dGU+Yl9fMTUxXzIoSUFzeW5jUmVzdWx0IGFzeW5jUmVzdWx0LCBDb250cm9sbGVyIGNvbnRyb2xsZXIpDQogICBhdCBTeXN0ZW0uV2ViLk12Yy5Bc3luYy5Bc3luY1Jlc3VsdFdyYXBwZXIuV3JhcHBlZEFzeW5jVm9pZGAxLkNhbGxFbmREZWxlZ2F0ZShJQXN5bmNSZXN1bHQgYXN5bmNSZXN1bHQpDQogICBhdCBTeXN0ZW0uV2ViLk12Yy5Bc3luYy5Bc3luY1Jlc3VsdFdyYXBwZXIuV3JhcHBlZEFzeW5jUmVzdWx0QmFzZWAxLkVuZCgpDQogICBhdCBTeXN0ZW0uV2ViLk12Yy5Db250cm9sbGVyLkVuZEV4ZWN1dGUoSUFzeW5jUmVzdWx0IGFzeW5jUmVzdWx0KQ0KICAgYXQgU3lzdGVtLldlYi5NdmMuQ29udHJvbGxlci5TeXN0ZW0uV2ViLk12Yy5Bc3luYy5JQXN5bmNDb250cm9sbGVyLkVuZEV4ZWN1dGUoSUFzeW5jUmVzdWx0IGFzeW5jUmVzdWx0KQ0KICAgYXQgU3lzdGVtLldlYi5NdmMuTXZjSGFuZGxlci48PmMuPEJlZ2luUHJvY2Vzc1JlcXVlc3Q+Yl9fMjBfMShJQXN5bmNSZXN1bHQgYXN5bmNSZXN1bHQsIFByb2Nlc3NSZXF1ZXN0U3RhdGUgaW5uZXJTdGF0ZSkNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLkFzeW5jLkFzeW5jUmVzdWx0V3JhcHBlci5XcmFwcGVkQXN5bmNWb2lkYDEuQ2FsbEVuZERlbGVnYXRlKElBc3luY1Jlc3VsdCBhc3luY1Jlc3VsdCkNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLkFzeW5jLkFzeW5jUmVzdWx0V3JhcHBlci5XcmFwcGVkQXN5bmNSZXN1bHRCYXNlYDEuRW5kKCkNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLk12Y0hhbmRsZXIuRW5kUHJvY2Vzc1JlcXVlc3QoSUFzeW5jUmVzdWx0IGFzeW5jUmVzdWx0KQ0KICAgYXQgU3lzdGVtLldlYi5NdmMuTXZjSGFuZGxlci5TeXN0ZW0uV2ViLklIdHRwQXN5bmNIYW5kbGVyLkVuZFByb2Nlc3NSZXF1ZXN0KElBc3luY1Jlc3VsdCByZXN1bHQpDQogICBhdCBTeXN0ZW0uV2ViLk12Yy5IdHRwSGFuZGxlclV0aWwuU2VydmVyRXhlY3V0ZUh0dHBIYW5kbGVyQXN5bmNXcmFwcGVyLjw+Y19fRGlzcGxheUNsYXNzM18wLjxFbmRQcm9jZXNzUmVxdWVzdD5iX18wKCkNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLkh0dHBIYW5kbGVyVXRpbC5TZXJ2ZXJFeGVjdXRlSHR0cEhhbmRsZXJXcmFwcGVyLjw+Y19fRGlzcGxheUNsYXNzNV8wLjxXcmFwPmJfXzAoKQ0KICAgYXQgU3lzdGVtLldlYi5NdmMuSHR0cEhhbmRsZXJVdGlsLlNlcnZlckV4ZWN1dGVIdHRwSGFuZGxlcldyYXBwZXIuV3JhcFtUUmVzdWx0XShGdW5jYDEgZnVuYykNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLkh0dHBIYW5kbGVyVXRpbC5TZXJ2ZXJFeGVjdXRlSHR0cEhhbmRsZXJXcmFwcGVyLldyYXAoQWN0aW9uIGFjdGlvbikNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLkh0dHBIYW5kbGVyVXRpbC5TZXJ2ZXJFeGVjdXRlSHR0cEhhbmRsZXJBc3luY1dyYXBwZXIuRW5kUHJvY2Vzc1JlcXVlc3QoSUFzeW5jUmVzdWx0IHJlc3VsdCkNCiAgIGF0IFN5c3RlbS5XZWIuSHR0cFNlcnZlclV0aWxpdHkuRXhlY3V0ZUludGVybmFsKElIdHRwSGFuZGxlciBoYW5kbGVyLCBUZXh0V3JpdGVyIHdyaXRlciwgQm9vbGVhbiBwcmVzZXJ2ZUZvcm0sIEJvb2xlYW4gc2V0UHJldmlvdXNQYWdlLCBWaXJ0dWFsUGF0aCBwYXRoLCBWaXJ0dWFsUGF0aCBmaWxlUGF0aCwgU3RyaW5nIHBoeXNQYXRoLCBFeGNlcHRpb24gZXJyb3IsIFN0cmluZyBxdWVyeVN0cmluZ092ZXJyaWRlKQ0KICAgYXQgU3lzdGVtLldlYi5IdHRwU2VydmVyVXRpbGl0eS5FeGVjdXRlSW50ZXJuYWwoSUh0dHBIYW5kbGVyIGhhbmRsZXIsIFRleHRXcml0ZXIgd3JpdGVyLCBCb29sZWFuIHByZXNlcnZlRm9ybSwgQm9vbGVhbiBzZXRQcmV2aW91c1BhZ2UsIFZpcnR1YWxQYXRoIHBhdGgsIFZpcnR1YWxQYXRoIGZpbGVQYXRoLCBTdHJpbmcgcGh5c1BhdGgsIEV4Y2VwdGlvbiBlcnJvciwgU3RyaW5nIHF1ZXJ5U3RyaW5nT3ZlcnJpZGUpDQogICBhdCBTeXN0ZW0uV2ViLkh0dHBTZXJ2ZXJVdGlsaXR5LkV4ZWN1dGUoSUh0dHBIYW5kbGVyIGhhbmRsZXIsIFRleHRXcml0ZXIgd3JpdGVyLCBCb29sZWFuIHByZXNlcnZlRm9ybSwgQm9vbGVhbiBzZXRQcmV2aW91c1BhZ2UpDQogICBhdCBTeXN0ZW0uV2ViLkh0dHBTZXJ2ZXJVdGlsaXR5LkV4ZWN1dGUoSUh0dHBIYW5kbGVyIGhhbmRsZXIsIFRleHRXcml0ZXIgd3JpdGVyLCBCb29sZWFuIHByZXNlcnZlRm9ybSkNCiAgIGF0IFN5c3RlbS5XZWIuSHR0cFNlcnZlclV0aWxpdHlXcmFwcGVyLkV4ZWN1dGUoSUh0dHBIYW5kbGVyIGhhbmRsZXIsIFRleHRXcml0ZXIgd3JpdGVyLCBCb29sZWFuIHByZXNlcnZlRm9ybSkNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLkh0bWwuQ2hpbGRBY3Rpb25FeHRlbnNpb25zLkFjdGlvbkhlbHBlcihIdG1sSGVscGVyIGh0bWxIZWxwZXIsIFN0cmluZyBhY3Rpb25OYW1lLCBTdHJpbmcgY29udHJvbGxlck5hbWUsIFJvdXRlVmFsdWVEaWN0aW9uYXJ5IHJvdXRlVmFsdWVzLCBUZXh0V3JpdGVyIHRleHRXcml0ZXIpDQogICBhdCBTeXN0ZW0uV2ViLk12Yy5IdG1sLkNoaWxkQWN0aW9uRXh0ZW5zaW9ucy5SZW5kZXJBY3Rpb24oSHRtbEhlbHBlciBodG1sSGVscGVyLCBTdHJpbmcgYWN0aW9uTmFtZSwgU3RyaW5nIGNvbnRyb2xsZXJOYW1lLCBPYmplY3Qgcm91dGVWYWx1ZXMpDQogICBhdCBBU1AuX1BhZ2VfVmlld3NfTWFjcm9QYXJ0aWFsc19JbnNlcnRVbWJyYWNvRm9ybVdpdGhUaGVtZV9jc2h0bWwuRXhlY3V0ZSgpIGluIEM6XGhvbWVcc2l0ZVx3d3dyb290XFZpZXdzXE1hY3JvUGFydGlhbHNcSW5zZXJ0VW1icmFjb0Zvcm1XaXRoVGhlbWUuY3NodG1sOmxpbmUgNDkNCiAgIGF0IFN5c3RlbS5XZWIuV2ViUGFnZXMuV2ViUGFnZUJhc2UuRXhlY3V0ZVBhZ2VIaWVyYXJjaHkoKQ0KICAgYXQgU3lzdGVtLldlYi5NdmMuV2ViVmlld1BhZ2UuRXhlY3V0ZVBhZ2VIaWVyYXJjaHkoKQ0KICAgYXQgU3lzdGVtLldlYi5XZWJQYWdlcy5XZWJQYWdlQmFzZS5FeGVjdXRlUGFnZUhpZXJhcmNoeShXZWJQYWdlQ29udGV4dCBwYWdlQ29udGV4dCwgVGV4dFdyaXRlciB3cml0ZXIsIFdlYlBhZ2VSZW5kZXJpbmdCYXNlIHN0YXJ0UGFnZSkNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLlJhem9yVmlldy5SZW5kZXJWaWV3KFZpZXdDb250ZXh0IHZpZXdDb250ZXh0LCBUZXh0V3JpdGVyIHdyaXRlciwgT2JqZWN0IGluc3RhbmNlKQ0KICAgYXQgU3lzdGVtLldlYi5NdmMuQnVpbGRNYW5hZ2VyQ29tcGlsZWRWaWV3LlJlbmRlcihWaWV3Q29udGV4dCB2aWV3Q29udGV4dCwgVGV4dFdyaXRlciB3cml0ZXIpDQogICBhdCBVbWJyYWNvLldlYi5NdmMuUHJvZmlsaW5nVmlldy5SZW5kZXIoVmlld0NvbnRleHQgdmlld0NvbnRleHQsIFRleHRXcml0ZXIgd3JpdGVyKSBpbiBEOlxhXDFcc1xzcmNcVW1icmFjby5XZWJcTXZjXFByb2ZpbGluZ1ZpZXcuY3M6bGluZSAyNQ0KICAgYXQgVW1icmFjby5XZWIuTXZjLkNvbnRyb2xsZXJFeHRlbnNpb25zLlJlbmRlclZpZXdSZXN1bHRBc1N0cmluZyhDb250cm9sbGVyQmFzZSBjb250cm9sbGVyLCBWaWV3UmVzdWx0QmFzZSB2aWV3UmVzdWx0KSBpbiBEOlxhXDFcc1xzcmNcVW1icmFjby5XZWJcTXZjXENvbnRyb2xsZXJFeHRlbnNpb25zLmNzOmxpbmUgNzQNCiAgIGF0IFVtYnJhY28uV2ViLk1hY3Jvcy5QYXJ0aWFsVmlld01hY3JvRW5naW5lLkV4ZWN1dGUoTWFjcm9Nb2RlbCBtYWNybywgSVB1Ymxpc2hlZENvbnRlbnQgY29udGVudCkgaW4gRDpcYVwxXHNcc3JjXFVtYnJhY28uV2ViXE1hY3Jvc1xQYXJ0aWFsVmlld01hY3JvRW5naW5lLmNzOmxpbmUgOTgNCiAgIGF0IFVtYnJhY28uV2ViLk1hY3Jvcy5NYWNyb1JlbmRlcmVyLjw+Y19fRGlzcGxheUNsYXNzMTdfMC48RXhlY3V0ZU1hY3JvT2ZUeXBlPmJfXzAoKSBpbiBEOlxhXDFcc1xzcmNcVW1icmFjby5XZWJcTWFjcm9zXE1hY3JvUmVuZGVyZXIuY3M6bGluZSAzNDINCiAgIGF0IFVtYnJhY28uV2ViLk1hY3Jvcy5NYWNyb1JlbmRlcmVyLkV4ZWN1dGVQcm9maWxlTWFjcm9XaXRoRXJyb3JXcmFwcGVyKE1hY3JvTW9kZWwgbWFjcm8sIFN0cmluZyBtc2dJbiwgRnVuY2AxIGdldE1hY3JvQ29udGVudCwgRnVuY2AxIG1zZ0VycikgaW4gRDpcYVwxXHNcc3JjXFVtYnJhY28uV2ViXE1hY3Jvc1xNYWNyb1JlbmRlcmVyLmNzOmxpbmUgMzEzDQogICBhdCBVbWJyYWNvLldlYi5NYWNyb3MuTWFjcm9SZW5kZXJlci5FeGVjdXRlTWFjcm9XaXRoRXJyb3JXcmFwcGVyKE1hY3JvTW9kZWwgbWFjcm8sIFN0cmluZyBtc2dJbiwgU3RyaW5nIG1zZ091dCwgRnVuY2AxIGdldE1hY3JvQ29udGVudCwgRnVuY2AxIG1zZ0VycikgaW4gRDpcYVwxXHNcc3JjXFVtYnJhY28uV2ViXE1hY3Jvc1xNYWNyb1JlbmRlcmVyLmNzOmxpbmUgMjcyDQogICBhdCBVbWJyYWNvLldlYi5NYWNyb3MuTWFjcm9SZW5kZXJlci5FeGVjdXRlTWFjcm9PZlR5cGUoTWFjcm9Nb2RlbCBtb2RlbCwgSVB1Ymxpc2hlZENvbnRlbnQgY29udGVudCkgaW4gRDpcYVwxXHNcc3JjXFVtYnJhY28uV2ViXE1hY3Jvc1xNYWNyb1JlbmRlcmVyLmNzOmxpbmUgMzM5DQogICBhdCBVbWJyYWNvLldlYi5NYWNyb3MuTWFjcm9SZW5kZXJlci5SZW5kZXIoTWFjcm9Nb2RlbCBtYWNybywgSVB1Ymxpc2hlZENvbnRlbnQgY29udGVudCwgSURpY3Rpb25hcnkgcGFnZUVsZW1lbnRzKSBpbiBEOlxhXDFcc1xzcmNcVW1icmFjby5XZWJcTWFjcm9zXE1hY3JvUmVuZGVyZXIuY3M6bGluZSAyNDUNCiAgIGF0IFVtYnJhY28uV2ViLk1hY3Jvcy5NYWNyb1JlbmRlcmVyLlJlbmRlcihTdHJpbmcgbWFjcm9BbGlhcywgSVB1Ymxpc2hlZENvbnRlbnQgY29udGVudCwgSURpY3Rpb25hcnlgMiBtYWNyb1BhcmFtcykgaW4gRDpcYVwxXHNcc3JjXFVtYnJhY28uV2ViXE1hY3Jvc1xNYWNyb1JlbmRlcmVyLmNzOmxpbmUgMjE1DQogICBhdCBVbWJyYWNvLldlYi5VbWJyYWNvQ29tcG9uZW50UmVuZGVyZXIuUmVuZGVyTWFjcm8oSVB1Ymxpc2hlZENvbnRlbnQgY29udGVudCwgU3RyaW5nIGFsaWFzLCBJRGljdGlvbmFyeWAyIHBhcmFtZXRlcnMpIGluIEQ6XGFcMVxzXHNyY1xVbWJyYWNvLldlYlxVbWJyYWNvQ29tcG9uZW50UmVuZGVyZXIuY3M6bGluZSAxMzENCiAgIGF0IFVtYnJhY28uV2ViLlVtYnJhY29Db21wb25lbnRSZW5kZXJlci5SZW5kZXJNYWNybyhJbnQzMiBjb250ZW50SWQsIFN0cmluZyBhbGlhcywgSURpY3Rpb25hcnlgMiBwYXJhbWV0ZXJzKSBpbiBEOlxhXDFcc1xzcmNcVW1icmFjby5XZWJcVW1icmFjb0NvbXBvbmVudFJlbmRlcmVyLmNzOmxpbmUgMTAyDQogICBhdCBVbWJyYWNvLldlYi5VbWJyYWNvSGVscGVyLlJlbmRlck1hY3JvKFN0cmluZyBhbGlhcywgT2JqZWN0IHBhcmFtZXRlcnMpIGluIEQ6XGFcMVxzXHNyY1xVbWJyYWNvLldlYlxVbWJyYWNvSGVscGVyLmNzOmxpbmUgMTY3DQogICBhdCBBU1AuX1BhZ2VfVmlld3NfUGFydGlhbHNfQmxvY2tMaXN0X0NvbXBvbmVudHNfRm9ybVN1YmJsb2NrX2NzaHRtbC5FeGVjdXRlKCkgaW4gQzpcaG9tZVxzaXRlXHd3d3Jvb3RcVmlld3NcUGFydGlhbHNcQmxvY2tMaXN0XENvbXBvbmVudHNcRm9ybVN1YmJsb2NrLmNzaHRtbDpsaW5lIDExDQogICBhdCBTeXN0ZW0uV2ViLldlYlBhZ2VzLldlYlBhZ2VCYXNlLkV4ZWN1dGVQYWdlSGllcmFyY2h5KCkNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLldlYlZpZXdQYWdlLkV4ZWN1dGVQYWdlSGllcmFyY2h5KCkNCiAgIGF0IFN5c3RlbS5XZWIuV2ViUGFnZXMuV2ViUGFnZUJhc2UuRXhlY3V0ZVBhZ2VIaWVyYXJjaHkoV2ViUGFnZUNvbnRleHQgcGFnZUNvbnRleHQsIFRleHRXcml0ZXIgd3JpdGVyLCBXZWJQYWdlUmVuZGVyaW5nQmFzZSBzdGFydFBhZ2UpDQogICBhdCBTeXN0ZW0uV2ViLk12Yy5SYXpvclZpZXcuUmVuZGVyVmlldyhWaWV3Q29udGV4dCB2aWV3Q29udGV4dCwgVGV4dFdyaXRlciB3cml0ZXIsIE9iamVjdCBpbnN0YW5jZSkNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLkJ1aWxkTWFuYWdlckNvbXBpbGVkVmlldy5SZW5kZXIoVmlld0NvbnRleHQgdmlld0NvbnRleHQsIFRleHRXcml0ZXIgd3JpdGVyKQ0KICAgYXQgVW1icmFjby5XZWIuTXZjLlByb2ZpbGluZ1ZpZXcuUmVuZGVyKFZpZXdDb250ZXh0IHZpZXdDb250ZXh0LCBUZXh0V3JpdGVyIHdyaXRlcikgaW4gRDpcYVwxXHNcc3JjXFVtYnJhY28uV2ViXE12Y1xQcm9maWxpbmdWaWV3LmNzOmxpbmUgMjUNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLkh0bWxIZWxwZXIuUmVuZGVyUGFydGlhbEludGVybmFsKFN0cmluZyBwYXJ0aWFsVmlld05hbWUsIFZpZXdEYXRhRGljdGlvbmFyeSB2aWV3RGF0YSwgT2JqZWN0IG1vZGVsLCBUZXh0V3JpdGVyIHdyaXRlciwgVmlld0VuZ2luZUNvbGxlY3Rpb24gdmlld0VuZ2luZUNvbGxlY3Rpb24pDQogICBhdCBTeXN0ZW0uV2ViLk12Yy5IdG1sLlBhcnRpYWxFeHRlbnNpb25zLlBhcnRpYWwoSHRtbEhlbHBlciBodG1sSGVscGVyLCBTdHJpbmcgcGFydGlhbFZpZXdOYW1lLCBPYmplY3QgbW9kZWwsIFZpZXdEYXRhRGljdGlvbmFyeSB2aWV3RGF0YSkNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLkh0bWwuUGFydGlhbEV4dGVuc2lvbnMuUGFydGlhbChIdG1sSGVscGVyIGh0bWxIZWxwZXIsIFN0cmluZyBwYXJ0aWFsVmlld05hbWUsIE9iamVjdCBtb2RlbCkNCiAgIGF0IEFTUC5fUGFnZV9WaWV3c19QYXJ0aWFsc19CbG9ja0xpc3RfRGVmYXVsdF9jc2h0bWwuRXhlY3V0ZSgpIGluIEM6XGhvbWVcc2l0ZVx3d3dyb290XFZpZXdzXFBhcnRpYWxzXEJsb2NrTGlzdFxEZWZhdWx0LmNzaHRtbDpsaW5lIDExDQogICBhdCBTeXN0ZW0uV2ViLldlYlBhZ2VzLldlYlBhZ2VCYXNlLkV4ZWN1dGVQYWdlSGllcmFyY2h5KCkNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLldlYlZpZXdQYWdlLkV4ZWN1dGVQYWdlSGllcmFyY2h5KCkNCiAgIGF0IFN5c3RlbS5XZWIuV2ViUGFnZXMuV2ViUGFnZUJhc2UuRXhlY3V0ZVBhZ2VIaWVyYXJjaHkoV2ViUGFnZUNvbnRleHQgcGFnZUNvbnRleHQsIFRleHRXcml0ZXIgd3JpdGVyLCBXZWJQYWdlUmVuZGVyaW5nQmFzZSBzdGFydFBhZ2UpDQogICBhdCBTeXN0ZW0uV2ViLk12Yy5SYXpvclZpZXcuUmVuZGVyVmlldyhWaWV3Q29udGV4dCB2aWV3Q29udGV4dCwgVGV4dFdyaXRlciB3cml0ZXIsIE9iamVjdCBpbnN0YW5jZSkNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLkJ1aWxkTWFuYWdlckNvbXBpbGVkVmlldy5SZW5kZXIoVmlld0NvbnRleHQgdmlld0NvbnRleHQsIFRleHRXcml0ZXIgd3JpdGVyKQ0KICAgYXQgVW1icmFjby5XZWIuTXZjLlByb2ZpbGluZ1ZpZXcuUmVuZGVyKFZpZXdDb250ZXh0IHZpZXdDb250ZXh0LCBUZXh0V3JpdGVyIHdyaXRlcikgaW4gRDpcYVwxXHNcc3JjXFVtYnJhY28uV2ViXE12Y1xQcm9maWxpbmdWaWV3LmNzOmxpbmUgMjUNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLkh0bWxIZWxwZXIuUmVuZGVyUGFydGlhbEludGVybmFsKFN0cmluZyBwYXJ0aWFsVmlld05hbWUsIFZpZXdEYXRhRGljdGlvbmFyeSB2aWV3RGF0YSwgT2JqZWN0IG1vZGVsLCBUZXh0V3JpdGVyIHdyaXRlciwgVmlld0VuZ2luZUNvbGxlY3Rpb24gdmlld0VuZ2luZUNvbGxlY3Rpb24pDQogICBhdCBTeXN0ZW0uV2ViLk12Yy5IdG1sLlBhcnRpYWxFeHRlbnNpb25zLlBhcnRpYWwoSHRtbEhlbHBlciBodG1sSGVscGVyLCBTdHJpbmcgcGFydGlhbFZpZXdOYW1lLCBPYmplY3QgbW9kZWwsIFZpZXdEYXRhRGljdGlvbmFyeSB2aWV3RGF0YSkNCiAgIGF0IFVtYnJhY28uV2ViLkJsb2NrTGlzdFRlbXBsYXRlRXh0ZW5zaW9ucy5HZXRCbG9ja0xpc3RIdG1sKEh0bWxIZWxwZXIgaHRtbCwgQmxvY2tMaXN0TW9kZWwgbW9kZWwsIFN0cmluZyB0ZW1wbGF0ZSkgaW4gRDpcYVwxXHNcc3JjXFVtYnJhY28uV2ViXEJsb2NrTGlzdFRlbXBsYXRlRXh0ZW5zaW9ucy5jczpsaW5lIDIwDQogICBhdCBBU1AuX1BhZ2VfVmlld3NfUGFydGlhbHNfQmxvY2tMaXN0X0NvbXBvbmVudHNfU3VicGFnZUNvbnRlbnRCbG9ja19jc2h0bWwuRXhlY3V0ZSgpIGluIEM6XGhvbWVcc2l0ZVx3d3dyb290XFZpZXdzXFBhcnRpYWxzXEJsb2NrTGlzdFxDb21wb25lbnRzXFN1YnBhZ2VDb250ZW50QmxvY2suY3NodG1sOmxpbmUgMjYNCiAgIGF0IFN5c3RlbS5XZWIuV2ViUGFnZXMuV2ViUGFnZUJhc2UuRXhlY3V0ZVBhZ2VIaWVyYXJjaHkoKQ0KICAgYXQgU3lzdGVtLldlYi5NdmMuV2ViVmlld1BhZ2UuRXhlY3V0ZVBhZ2VIaWVyYXJjaHkoKQ0KICAgYXQgU3lzdGVtLldlYi5XZWJQYWdlcy5XZWJQYWdlQmFzZS5FeGVjdXRlUGFnZUhpZXJhcmNoeShXZWJQYWdlQ29udGV4dCBwYWdlQ29udGV4dCwgVGV4dFdyaXRlciB3cml0ZXIsIFdlYlBhZ2VSZW5kZXJpbmdCYXNlIHN0YXJ0UGFnZSkNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLlJhem9yVmlldy5SZW5kZXJWaWV3KFZpZXdDb250ZXh0IHZpZXdDb250ZXh0LCBUZXh0V3JpdGVyIHdyaXRlciwgT2JqZWN0IGluc3RhbmNlKQ0KICAgYXQgU3lzdGVtLldlYi5NdmMuQnVpbGRNYW5hZ2VyQ29tcGlsZWRWaWV3LlJlbmRlcihWaWV3Q29udGV4dCB2aWV3Q29udGV4dCwgVGV4dFdyaXRlciB3cml0ZXIpDQogICBhdCBVbWJyYWNvLldlYi5NdmMuUHJvZmlsaW5nVmlldy5SZW5kZXIoVmlld0NvbnRleHQgdmlld0NvbnRleHQsIFRleHRXcml0ZXIgd3JpdGVyKSBpbiBEOlxhXDFcc1xzcmNcVW1icmFjby5XZWJcTXZjXFByb2ZpbGluZ1ZpZXcuY3M6bGluZSAyNQ0KICAgYXQgU3lzdGVtLldlYi5NdmMuSHRtbEhlbHBlci5SZW5kZXJQYXJ0aWFsSW50ZXJuYWwoU3RyaW5nIHBhcnRpYWxWaWV3TmFtZSwgVmlld0RhdGFEaWN0aW9uYXJ5IHZpZXdEYXRhLCBPYmplY3QgbW9kZWwsIFRleHRXcml0ZXIgd3JpdGVyLCBWaWV3RW5naW5lQ29sbGVjdGlvbiB2aWV3RW5naW5lQ29sbGVjdGlvbikNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLkh0bWwuUGFydGlhbEV4dGVuc2lvbnMuUGFydGlhbChIdG1sSGVscGVyIGh0bWxIZWxwZXIsIFN0cmluZyBwYXJ0aWFsVmlld05hbWUsIE9iamVjdCBtb2RlbCwgVmlld0RhdGFEaWN0aW9uYXJ5IHZpZXdEYXRhKQ0KICAgYXQgU3lzdGVtLldlYi5NdmMuSHRtbC5QYXJ0aWFsRXh0ZW5zaW9ucy5QYXJ0aWFsKEh0bWxIZWxwZXIgaHRtbEhlbHBlciwgU3RyaW5nIHBhcnRpYWxWaWV3TmFtZSwgT2JqZWN0IG1vZGVsKQ0KICAgYXQgQVNQLl9QYWdlX1ZpZXdzX1BhcnRpYWxzX0Jsb2NrTGlzdF9EZWZhdWx0X2NzaHRtbC5FeGVjdXRlKCkgaW4gQzpcaG9tZVxzaXRlXHd3d3Jvb3RcVmlld3NcUGFydGlhbHNcQmxvY2tMaXN0XERlZmF1bHQuY3NodG1sOmxpbmUgMTENCiAgIGF0IFN5c3RlbS5XZWIuV2ViUGFnZXMuV2ViUGFnZUJhc2UuRXhlY3V0ZVBhZ2VIaWVyYXJjaHkoKQ0KICAgYXQgU3lzdGVtLldlYi5NdmMuV2ViVmlld1BhZ2UuRXhlY3V0ZVBhZ2VIaWVyYXJjaHkoKQ0KICAgYXQgU3lzdGVtLldlYi5XZWJQYWdlcy5XZWJQYWdlQmFzZS5FeGVjdXRlUGFnZUhpZXJhcmNoeShXZWJQYWdlQ29udGV4dCBwYWdlQ29udGV4dCwgVGV4dFdyaXRlciB3cml0ZXIsIFdlYlBhZ2VSZW5kZXJpbmdCYXNlIHN0YXJ0UGFnZSkNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLlJhem9yVmlldy5SZW5kZXJWaWV3KFZpZXdDb250ZXh0IHZpZXdDb250ZXh0LCBUZXh0V3JpdGVyIHdyaXRlciwgT2JqZWN0IGluc3RhbmNlKQ0KICAgYXQgU3lzdGVtLldlYi5NdmMuQnVpbGRNYW5hZ2VyQ29tcGlsZWRWaWV3LlJlbmRlcihWaWV3Q29udGV4dCB2aWV3Q29udGV4dCwgVGV4dFdyaXRlciB3cml0ZXIpDQogICBhdCBVbWJyYWNvLldlYi5NdmMuUHJvZmlsaW5nVmlldy5SZW5kZXIoVmlld0NvbnRleHQgdmlld0NvbnRleHQsIFRleHRXcml0ZXIgd3JpdGVyKSBpbiBEOlxhXDFcc1xzcmNcVW1icmFjby5XZWJcTXZjXFByb2ZpbGluZ1ZpZXcuY3M6bGluZSAyNQ0KICAgYXQgU3lzdGVtLldlYi5NdmMuSHRtbEhlbHBlci5SZW5kZXJQYXJ0aWFsSW50ZXJuYWwoU3RyaW5nIHBhcnRpYWxWaWV3TmFtZSwgVmlld0RhdGFEaWN0aW9uYXJ5IHZpZXdEYXRhLCBPYmplY3QgbW9kZWwsIFRleHRXcml0ZXIgd3JpdGVyLCBWaWV3RW5naW5lQ29sbGVjdGlvbiB2aWV3RW5naW5lQ29sbGVjdGlvbikNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLkh0bWwuUGFydGlhbEV4dGVuc2lvbnMuUGFydGlhbChIdG1sSGVscGVyIGh0bWxIZWxwZXIsIFN0cmluZyBwYXJ0aWFsVmlld05hbWUsIE9iamVjdCBtb2RlbCwgVmlld0RhdGFEaWN0aW9uYXJ5IHZpZXdEYXRhKQ0KICAgYXQgVW1icmFjby5XZWIuQmxvY2tMaXN0VGVtcGxhdGVFeHRlbnNpb25zLkdldEJsb2NrTGlzdEh0bWwoSHRtbEhlbHBlciBodG1sLCBCbG9ja0xpc3RNb2RlbCBtb2RlbCwgU3RyaW5nIHRlbXBsYXRlKSBpbiBEOlxhXDFcc1xzcmNcVW1icmFjby5XZWJcQmxvY2tMaXN0VGVtcGxhdGVFeHRlbnNpb25zLmNzOmxpbmUgMjANCiAgIGF0IEFTUC5fUGFnZV9WaWV3c19Db250ZW50UGFnZV9jc2h0bWwuRXhlY3V0ZSgpIGluIEM6XGhvbWVcc2l0ZVx3d3dyb290XFZpZXdzXENvbnRlbnRQYWdlLmNzaHRtbDpsaW5lIDIwDQogICBhdCBTeXN0ZW0uV2ViLldlYlBhZ2VzLldlYlBhZ2VCYXNlLkV4ZWN1dGVQYWdlSGllcmFyY2h5KCkNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLldlYlZpZXdQYWdlLkV4ZWN1dGVQYWdlSGllcmFyY2h5KCkNCiAgIGF0IFN5c3RlbS5XZWIuV2ViUGFnZXMuV2ViUGFnZUJhc2UuRXhlY3V0ZVBhZ2VIaWVyYXJjaHkoV2ViUGFnZUNvbnRleHQgcGFnZUNvbnRleHQsIFRleHRXcml0ZXIgd3JpdGVyLCBXZWJQYWdlUmVuZGVyaW5nQmFzZSBzdGFydFBhZ2UpDQogICBhdCBTeXN0ZW0uV2ViLk12Yy5SYXpvclZpZXcuUmVuZGVyVmlldyhWaWV3Q29udGV4dCB2aWV3Q29udGV4dCwgVGV4dFdyaXRlciB3cml0ZXIsIE9iamVjdCBpbnN0YW5jZSkNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLkJ1aWxkTWFuYWdlckNvbXBpbGVkVmlldy5SZW5kZXIoVmlld0NvbnRleHQgdmlld0NvbnRleHQsIFRleHRXcml0ZXIgd3JpdGVyKQ0KICAgYXQgVW1icmFjby5XZWIuTXZjLlByb2ZpbGluZ1ZpZXcuUmVuZGVyKFZpZXdDb250ZXh0IHZpZXdDb250ZXh0LCBUZXh0V3JpdGVyIHdyaXRlcikgaW4gRDpcYVwxXHNcc3JjXFVtYnJhY28uV2ViXE12Y1xQcm9maWxpbmdWaWV3LmNzOmxpbmUgMjUNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLlZpZXdSZXN1bHRCYXNlLkV4ZWN1dGVSZXN1bHQoQ29udHJvbGxlckNvbnRleHQgY29udGV4dCkNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLkNvbnRyb2xsZXJBY3Rpb25JbnZva2VyLkludm9rZUFjdGlvblJlc3VsdChDb250cm9sbGVyQ29udGV4dCBjb250cm9sbGVyQ29udGV4dCwgQWN0aW9uUmVzdWx0IGFjdGlvblJlc3VsdCkNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLkNvbnRyb2xsZXJBY3Rpb25JbnZva2VyLkludm9rZUFjdGlvblJlc3VsdEZpbHRlclJlY3Vyc2l2ZShJTGlzdGAxIGZpbHRlcnMsIEludDMyIGZpbHRlckluZGV4LCBSZXN1bHRFeGVjdXRpbmdDb250ZXh0IHByZUNvbnRleHQsIENvbnRyb2xsZXJDb250ZXh0IGNvbnRyb2xsZXJDb250ZXh0LCBBY3Rpb25SZXN1bHQgYWN0aW9uUmVzdWx0KQ0KICAgYXQgU3lzdGVtLldlYi5NdmMuQ29udHJvbGxlckFjdGlvbkludm9rZXIuSW52b2tlQWN0aW9uUmVzdWx0RmlsdGVyUmVjdXJzaXZlKElMaXN0YDEgZmlsdGVycywgSW50MzIgZmlsdGVySW5kZXgsIFJlc3VsdEV4ZWN1dGluZ0NvbnRleHQgcHJlQ29udGV4dCwgQ29udHJvbGxlckNvbnRleHQgY29udHJvbGxlckNvbnRleHQsIEFjdGlvblJlc3VsdCBhY3Rpb25SZXN1bHQpDQogICBhdCBTeXN0ZW0uV2ViLk12Yy5Db250cm9sbGVyQWN0aW9uSW52b2tlci5JbnZva2VBY3Rpb25SZXN1bHRGaWx0ZXJSZWN1cnNpdmUoSUxpc3RgMSBmaWx0ZXJzLCBJbnQzMiBmaWx0ZXJJbmRleCwgUmVzdWx0RXhlY3V0aW5nQ29udGV4dCBwcmVDb250ZXh0LCBDb250cm9sbGVyQ29udGV4dCBjb250cm9sbGVyQ29udGV4dCwgQWN0aW9uUmVzdWx0IGFjdGlvblJlc3VsdCkNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLkNvbnRyb2xsZXJBY3Rpb25JbnZva2VyLkludm9rZUFjdGlvblJlc3VsdEZpbHRlclJlY3Vyc2l2ZShJTGlzdGAxIGZpbHRlcnMsIEludDMyIGZpbHRlckluZGV4LCBSZXN1bHRFeGVjdXRpbmdDb250ZXh0IHByZUNvbnRleHQsIENvbnRyb2xsZXJDb250ZXh0IGNvbnRyb2xsZXJDb250ZXh0LCBBY3Rpb25SZXN1bHQgYWN0aW9uUmVzdWx0KQ0KICAgYXQgU3lzdGVtLldlYi5NdmMuQ29udHJvbGxlckFjdGlvbkludm9rZXIuSW52b2tlQWN0aW9uUmVzdWx0V2l0aEZpbHRlcnMoQ29udHJvbGxlckNvbnRleHQgY29udHJvbGxlckNvbnRleHQsIElMaXN0YDEgZmlsdGVycywgQWN0aW9uUmVzdWx0IGFjdGlvblJlc3VsdCkNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLkFzeW5jLkFzeW5jQ29udHJvbGxlckFjdGlvbkludm9rZXIuPD5jX19EaXNwbGF5Q2xhc3MzXzYuPEJlZ2luSW52b2tlQWN0aW9uPmJfXzQoKQ0KICAgYXQgU3lzdGVtLldlYi5NdmMuQXN5bmMuQXN5bmNDb250cm9sbGVyQWN0aW9uSW52b2tlci48PmNfX0Rpc3BsYXlDbGFzczNfMS48QmVnaW5JbnZva2VBY3Rpb24+Yl9fMShJQXN5bmNSZXN1bHQgYXN5bmNSZXN1bHQpDQogICBhdCBTeXN0ZW0uV2ViLk12Yy5Bc3luYy5Bc3luY1Jlc3VsdFdyYXBwZXIuV3JhcHBlZEFzeW5jUmVzdWx0YDEuQ2FsbEVuZERlbGVnYXRlKElBc3luY1Jlc3VsdCBhc3luY1Jlc3VsdCkNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLkFzeW5jLkFzeW5jUmVzdWx0V3JhcHBlci5XcmFwcGVkQXN5bmNSZXN1bHRCYXNlYDEuRW5kKCkNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLkFzeW5jLkFzeW5jQ29udHJvbGxlckFjdGlvbkludm9rZXIuRW5kSW52b2tlQWN0aW9uKElBc3luY1Jlc3VsdCBhc3luY1Jlc3VsdCkNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLkNvbnRyb2xsZXIuPD5jLjxCZWdpbkV4ZWN1dGVDb3JlPmJfXzE1Ml8xKElBc3luY1Jlc3VsdCBhc3luY1Jlc3VsdCwgRXhlY3V0ZUNvcmVTdGF0ZSBpbm5lclN0YXRlKQ0KICAgYXQgU3lzdGVtLldlYi5NdmMuQXN5bmMuQXN5bmNSZXN1bHRXcmFwcGVyLldyYXBwZWRBc3luY1ZvaWRgMS5DYWxsRW5kRGVsZWdhdGUoSUFzeW5jUmVzdWx0IGFzeW5jUmVzdWx0KQ0KICAgYXQgU3lzdGVtLldlYi5NdmMuQXN5bmMuQXN5bmNSZXN1bHRXcmFwcGVyLldyYXBwZWRBc3luY1Jlc3VsdEJhc2VgMS5FbmQoKQ0KICAgYXQgU3lzdGVtLldlYi5NdmMuQ29udHJvbGxlci5FbmRFeGVjdXRlQ29yZShJQXN5bmNSZXN1bHQgYXN5bmNSZXN1bHQpDQogICBhdCBTeXN0ZW0uV2ViLk12Yy5Db250cm9sbGVyLjw+Yy48QmVnaW5FeGVjdXRlPmJfXzE1MV8yKElBc3luY1Jlc3VsdCBhc3luY1Jlc3VsdCwgQ29udHJvbGxlciBjb250cm9sbGVyKQ0KICAgYXQgU3lzdGVtLldlYi5NdmMuQXN5bmMuQXN5bmNSZXN1bHRXcmFwcGVyLldyYXBwZWRBc3luY1ZvaWRgMS5DYWxsRW5kRGVsZWdhdGUoSUFzeW5jUmVzdWx0IGFzeW5jUmVzdWx0KQ0KICAgYXQgU3lzdGVtLldlYi5NdmMuQXN5bmMuQXN5bmNSZXN1bHRXcmFwcGVyLldyYXBwZWRBc3luY1Jlc3VsdEJhc2VgMS5FbmQoKQ0KICAgYXQgU3lzdGVtLldlYi5NdmMuQ29udHJvbGxlci5FbmRFeGVjdXRlKElBc3luY1Jlc3VsdCBhc3luY1Jlc3VsdCkNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLkNvbnRyb2xsZXIuU3lzdGVtLldlYi5NdmMuQXN5bmMuSUFzeW5jQ29udHJvbGxlci5FbmRFeGVjdXRlKElBc3luY1Jlc3VsdCBhc3luY1Jlc3VsdCkNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLk12Y0hhbmRsZXIuPD5jLjxCZWdpblByb2Nlc3NSZXF1ZXN0PmJfXzIwXzEoSUFzeW5jUmVzdWx0IGFzeW5jUmVzdWx0LCBQcm9jZXNzUmVxdWVzdFN0YXRlIGlubmVyU3RhdGUpDQogICBhdCBTeXN0ZW0uV2ViLk12Yy5Bc3luYy5Bc3luY1Jlc3VsdFdyYXBwZXIuV3JhcHBlZEFzeW5jVm9pZGAxLkNhbGxFbmREZWxlZ2F0ZShJQXN5bmNSZXN1bHQgYXN5bmNSZXN1bHQpDQogICBhdCBTeXN0ZW0uV2ViLk12Yy5Bc3luYy5Bc3luY1Jlc3VsdFdyYXBwZXIuV3JhcHBlZEFzeW5jUmVzdWx0QmFzZWAxLkVuZCgpDQogICBhdCBTeXN0ZW0uV2ViLk12Yy5NdmNIYW5kbGVyLkVuZFByb2Nlc3NSZXF1ZXN0KElBc3luY1Jlc3VsdCBhc3luY1Jlc3VsdCkNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLk12Y0hhbmRsZXIuU3lzdGVtLldlYi5JSHR0cEFzeW5jSGFuZGxlci5FbmRQcm9jZXNzUmVxdWVzdChJQXN5bmNSZXN1bHQgcmVzdWx0KQ0KICAgYXQgU3lzdGVtLldlYi5IdHRwQXBwbGljYXRpb24uQ2FsbEhhbmRsZXJFeGVjdXRpb25TdGVwLlN5c3RlbS5XZWIuSHR0cEFwcGxpY2F0aW9uLklFeGVjdXRpb25TdGVwLkV4ZWN1dGUoKQ0KICAgYXQgU3lzdGVtLldlYi5IdHRwQXBwbGljYXRpb24uRXhlY3V0ZVN0ZXBJbXBsKElFeGVjdXRpb25TdGVwIHN0ZXApDQogICBhdCBTeXN0ZW0uV2ViLkh0dHBBcHBsaWNhdGlvbi5FeGVjdXRlU3RlcChJRXhlY3V0aW9uU3RlcCBzdGVwLCBCb29sZWFuJiBjb21wbGV0ZWRTeW5jaHJvbm91c2x5KQ==U3lzdGVtLk51bGxSZWZlcmVuY2VFeGNlcHRpb246IFVuYWJsZSB0byBnZXQgRm9ybSB3aXRoIElEOiAnZGNlMTAwMGQtYWVmZi00NGQzLTk1YmQtYzlmMDJjMDFkODY1JyBvZmYgZGlzayBvciBmcm9tIHRoZSBjYWNoZS4gQ2hlY2sgdGhlIGZpbGUgZXhpc3RzIG9uIGRpc2sNCiAgIGF0IFVtYnJhY28uRm9ybXMuQ29yZS5EYXRhLlN0b3JhZ2UuRm9ybVN0b3JhZ2UuR2V0Rm9ybShHdWlkIGlkKQ0KICAgYXQgVW1icmFjby5Gb3Jtcy5XZWIuQ29udHJvbGxlcnMuVW1icmFjb0Zvcm1zQ29udHJvbGxlci5HZXRGb3JtKEd1aWQgZm9ybUlkKQ0KICAgYXQgVW1icmFjby5Gb3Jtcy5XZWIuQ29udHJvbGxlcnMuVW1icmFjb0Zvcm1zQ29udHJvbGxlci5HZXRGb3JtTW9kZWwoR3VpZCBmb3JtSWQsIE51bGxhYmxlYDEgcmVjb3JkSWQsIFN0cmluZyB0aGVtZSkNCiAgIGF0IFVtYnJhY28uRm9ybXMuV2ViLkNvbnRyb2xsZXJzLlVtYnJhY29Gb3Jtc0NvbnRyb2xsZXIuUmVuZGVyRm9ybShHdWlkIGZvcm1JZCwgTnVsbGFibGVgMSByZWNvcmRJZCwgU3RyaW5nIHRoZW1lLCBCb29sZWFuIGluY2x1ZGVTY3JpcHRzKQ0KICAgYXQgbGFtYmRhX21ldGhvZChDbG9zdXJlICwgQ29udHJvbGxlckJhc2UgLCBPYmplY3RbXSApDQogICBhdCBTeXN0ZW0uV2ViLk12Yy5BY3Rpb25NZXRob2REaXNwYXRjaGVyLkV4ZWN1dGUoQ29udHJvbGxlckJhc2UgY29udHJvbGxlciwgT2JqZWN0W10gcGFyYW1ldGVycykNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLlJlZmxlY3RlZEFjdGlvbkRlc2NyaXB0b3IuRXhlY3V0ZShDb250cm9sbGVyQ29udGV4dCBjb250cm9sbGVyQ29udGV4dCwgSURpY3Rpb25hcnlgMiBwYXJhbWV0ZXJzKQ0KICAgYXQgU3lzdGVtLldlYi5NdmMuQ29udHJvbGxlckFjdGlvbkludm9rZXIuSW52b2tlQWN0aW9uTWV0aG9kKENvbnRyb2xsZXJDb250ZXh0IGNvbnRyb2xsZXJDb250ZXh0LCBBY3Rpb25EZXNjcmlwdG9yIGFjdGlvbkRlc2NyaXB0b3IsIElEaWN0aW9uYXJ5YDIgcGFyYW1ldGVycykNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLkFzeW5jLkFzeW5jQ29udHJvbGxlckFjdGlvbkludm9rZXIuPD5jLjxCZWdpbkludm9rZVN5bmNocm9ub3VzQWN0aW9uTWV0aG9kPmJfXzlfMChJQXN5bmNSZXN1bHQgYXN5bmNSZXN1bHQsIEFjdGlvbkludm9jYXRpb24gaW5uZXJJbnZva2VTdGF0ZSkNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLkFzeW5jLkFzeW5jUmVzdWx0V3JhcHBlci5XcmFwcGVkQXN5bmNSZXN1bHRgMi5DYWxsRW5kRGVsZWdhdGUoSUFzeW5jUmVzdWx0IGFzeW5jUmVzdWx0KQ0KICAgYXQgU3lzdGVtLldlYi5NdmMuQXN5bmMuQXN5bmNSZXN1bHRXcmFwcGVyLldyYXBwZWRBc3luY1Jlc3VsdEJhc2VgMS5FbmQoKQ0KICAgYXQgU3lzdGVtLldlYi5NdmMuQXN5bmMuQXN5bmNDb250cm9sbGVyQWN0aW9uSW52b2tlci5FbmRJbnZva2VBY3Rpb25NZXRob2QoSUFzeW5jUmVzdWx0IGFzeW5jUmVzdWx0KQ0KICAgYXQgU3lzdGVtLldlYi5NdmMuQXN5bmMuQXN5bmNDb250cm9sbGVyQWN0aW9uSW52b2tlci5Bc3luY0ludm9jYXRpb25XaXRoRmlsdGVycy48PmNfX0Rpc3BsYXlDbGFzczExXzAuPEludm9rZUFjdGlvbk1ldGhvZEZpbHRlckFzeW5jaHJvbm91c2x5UmVjdXJzaXZlPmJfXzAoKQ0KICAgYXQgU3lzdGVtLldlYi5NdmMuQXN5bmMuQXN5bmNDb250cm9sbGVyQWN0aW9uSW52b2tlci5Bc3luY0ludm9jYXRpb25XaXRoRmlsdGVycy48PmNfX0Rpc3BsYXlDbGFzczExXzIuPEludm9rZUFjdGlvbk1ldGhvZEZpbHRlckFzeW5jaHJvbm91c2x5UmVjdXJzaXZlPmJfXzIoKQ0KICAgYXQgU3lzdGVtLldlYi5NdmMuQXN5bmMuQXN5bmNDb250cm9sbGVyQWN0aW9uSW52b2tlci5Bc3luY0ludm9jYXRpb25XaXRoRmlsdGVycy48PmNfX0Rpc3BsYXlDbGFzczExXzIuPEludm9rZUFjdGlvbk1ldGhvZEZpbHRlckFzeW5jaHJvbm91c2x5UmVjdXJzaXZlPmJfXzIoKQ0KICAgYXQgU3lzdGVtLldlYi5NdmMuQXN5bmMuQXN5bmNDb250cm9sbGVyQWN0aW9uSW52b2tlci5Bc3luY0ludm9jYXRpb25XaXRoRmlsdGVycy48PmNfX0Rpc3BsYXlDbGFzczExXzIuPEludm9rZUFjdGlvbk1ldGhvZEZpbHRlckFzeW5jaHJvbm91c2x5UmVjdXJzaXZlPmJfXzIoKQ0KICAgYXQgU3lzdGVtLldlYi5NdmMuQXN5bmMuQXN5bmNDb250cm9sbGVyQWN0aW9uSW52b2tlci5Bc3luY0ludm9jYXRpb25XaXRoRmlsdGVycy48PmNfX0Rpc3BsYXlDbGFzczExXzIuPEludm9rZUFjdGlvbk1ldGhvZEZpbHRlckFzeW5jaHJvbm91c2x5UmVjdXJzaXZlPmJfXzIoKQ0KICAgYXQgU3lzdGVtLldlYi5NdmMuQXN5bmMuQXN5bmNDb250cm9sbGVyQWN0aW9uSW52b2tlci48PmNfX0Rpc3BsYXlDbGFzczdfMC48QmVnaW5JbnZva2VBY3Rpb25NZXRob2RXaXRoRmlsdGVycz5iX18xKElBc3luY1Jlc3VsdCBhc3luY1Jlc3VsdCkNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLkFzeW5jLkFzeW5jUmVzdWx0V3JhcHBlci5XcmFwcGVkQXN5bmNSZXN1bHRgMS5DYWxsRW5kRGVsZWdhdGUoSUFzeW5jUmVzdWx0IGFzeW5jUmVzdWx0KQ0KICAgYXQgU3lzdGVtLldlYi5NdmMuQXN5bmMuQXN5bmNSZXN1bHRXcmFwcGVyLldyYXBwZWRBc3luY1Jlc3VsdEJhc2VgMS5FbmQoKQ0KICAgYXQgU3lzdGVtLldlYi5NdmMuQXN5bmMuQXN5bmNDb250cm9sbGVyQWN0aW9uSW52b2tlci5FbmRJbnZva2VBY3Rpb25NZXRob2RXaXRoRmlsdGVycyhJQXN5bmNSZXN1bHQgYXN5bmNSZXN1bHQpDQogICBhdCBTeXN0ZW0uV2ViLk12Yy5Bc3luYy5Bc3luY0NvbnRyb2xsZXJBY3Rpb25JbnZva2VyLjw+Y19fRGlzcGxheUNsYXNzM182LjxCZWdpbkludm9rZUFjdGlvbj5iX180KCkNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLkFzeW5jLkFzeW5jQ29udHJvbGxlckFjdGlvbkludm9rZXIuPD5jX19EaXNwbGF5Q2xhc3MzXzEuPEJlZ2luSW52b2tlQWN0aW9uPmJfXzEoSUFzeW5jUmVzdWx0IGFzeW5jUmVzdWx0KQ0KICAgYXQgU3lzdGVtLldlYi5NdmMuQXN5bmMuQXN5bmNSZXN1bHRXcmFwcGVyLldyYXBwZWRBc3luY1Jlc3VsdGAxLkNhbGxFbmREZWxlZ2F0ZShJQXN5bmNSZXN1bHQgYXN5bmNSZXN1bHQpDQogICBhdCBTeXN0ZW0uV2ViLk12Yy5Bc3luYy5Bc3luY1Jlc3VsdFdyYXBwZXIuV3JhcHBlZEFzeW5jUmVzdWx0QmFzZWAxLkVuZCgpDQogICBhdCBTeXN0ZW0uV2ViLk12Yy5Bc3luYy5Bc3luY0NvbnRyb2xsZXJBY3Rpb25JbnZva2VyLkVuZEludm9rZUFjdGlvbihJQXN5bmNSZXN1bHQgYXN5bmNSZXN1bHQpDQogICBhdCBTeXN0ZW0uV2ViLk12Yy5Db250cm9sbGVyLjw+Yy48QmVnaW5FeGVjdXRlQ29yZT5iX18xNTJfMShJQXN5bmNSZXN1bHQgYXN5bmNSZXN1bHQsIEV4ZWN1dGVDb3JlU3RhdGUgaW5uZXJTdGF0ZSkNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLkFzeW5jLkFzeW5jUmVzdWx0V3JhcHBlci5XcmFwcGVkQXN5bmNWb2lkYDEuQ2FsbEVuZERlbGVnYXRlKElBc3luY1Jlc3VsdCBhc3luY1Jlc3VsdCkNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLkFzeW5jLkFzeW5jUmVzdWx0V3JhcHBlci5XcmFwcGVkQXN5bmNSZXN1bHRCYXNlYDEuRW5kKCkNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLkNvbnRyb2xsZXIuRW5kRXhlY3V0ZUNvcmUoSUFzeW5jUmVzdWx0IGFzeW5jUmVzdWx0KQ0KICAgYXQgU3lzdGVtLldlYi5NdmMuQ29udHJvbGxlci48PmMuPEJlZ2luRXhlY3V0ZT5iX18xNTFfMihJQXN5bmNSZXN1bHQgYXN5bmNSZXN1bHQsIENvbnRyb2xsZXIgY29udHJvbGxlcikNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLkFzeW5jLkFzeW5jUmVzdWx0V3JhcHBlci5XcmFwcGVkQXN5bmNWb2lkYDEuQ2FsbEVuZERlbGVnYXRlKElBc3luY1Jlc3VsdCBhc3luY1Jlc3VsdCkNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLkFzeW5jLkFzeW5jUmVzdWx0V3JhcHBlci5XcmFwcGVkQXN5bmNSZXN1bHRCYXNlYDEuRW5kKCkNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLkNvbnRyb2xsZXIuRW5kRXhlY3V0ZShJQXN5bmNSZXN1bHQgYXN5bmNSZXN1bHQpDQogICBhdCBTeXN0ZW0uV2ViLk12Yy5Db250cm9sbGVyLlN5c3RlbS5XZWIuTXZjLkFzeW5jLklBc3luY0NvbnRyb2xsZXIuRW5kRXhlY3V0ZShJQXN5bmNSZXN1bHQgYXN5bmNSZXN1bHQpDQogICBhdCBTeXN0ZW0uV2ViLk12Yy5NdmNIYW5kbGVyLjw+Yy48QmVnaW5Qcm9jZXNzUmVxdWVzdD5iX18yMF8xKElBc3luY1Jlc3VsdCBhc3luY1Jlc3VsdCwgUHJvY2Vzc1JlcXVlc3RTdGF0ZSBpbm5lclN0YXRlKQ0KICAgYXQgU3lzdGVtLldlYi5NdmMuQXN5bmMuQXN5bmNSZXN1bHRXcmFwcGVyLldyYXBwZWRBc3luY1ZvaWRgMS5DYWxsRW5kRGVsZWdhdGUoSUFzeW5jUmVzdWx0IGFzeW5jUmVzdWx0KQ0KICAgYXQgU3lzdGVtLldlYi5NdmMuQXN5bmMuQXN5bmNSZXN1bHRXcmFwcGVyLldyYXBwZWRBc3luY1Jlc3VsdEJhc2VgMS5FbmQoKQ0KICAgYXQgU3lzdGVtLldlYi5NdmMuTXZjSGFuZGxlci5FbmRQcm9jZXNzUmVxdWVzdChJQXN5bmNSZXN1bHQgYXN5bmNSZXN1bHQpDQogICBhdCBTeXN0ZW0uV2ViLk12Yy5NdmNIYW5kbGVyLlN5c3RlbS5XZWIuSUh0dHBBc3luY0hhbmRsZXIuRW5kUHJvY2Vzc1JlcXVlc3QoSUFzeW5jUmVzdWx0IHJlc3VsdCkNCiAgIGF0IFN5c3RlbS5XZWIuTXZjLkh0dHBIYW5kbGVyVXRpbC5TZXJ2ZXJFeGVjdXRlSHR0cEhhbmRsZXJBc3luY1dyYXBwZXIuPD5jX19EaXNwbGF5Q2xhc3MzXzAuPEVuZFByb2Nlc3NSZXF1ZXN0PmJfXzAoKQ0KICAgYXQgU3lzdGVtLldlYi5NdmMuSHR0cEhhbmRsZXJVdGlsLlNlcnZlckV4ZWN1dGVIdHRwSGFuZGxlcldyYXBwZXIuPD5jX19EaXNwbGF5Q2xhc3M1XzAuPFdyYXA+Yl9fMCgpDQogICBhdCBTeXN0ZW0uV2ViLk12Yy5IdHRwSGFuZGxlclV0aWwuU2VydmVyRXhlY3V0ZUh0dHBIYW5kbGVyV3JhcHBlci5XcmFwW1RSZXN1bHRdKEZ1bmNgMSBmdW5jKQ0KICAgYXQgU3lzdGVtLldlYi5NdmMuSHR0cEhhbmRsZXJVdGlsLlNlcnZlckV4ZWN1dGVIdHRwSGFuZGxlcldyYXBwZXIuV3JhcChBY3Rpb24gYWN0aW9uKQ0KICAgYXQgU3lzdGVtLldlYi5NdmMuSHR0cEhhbmRsZXJVdGlsLlNlcnZlckV4ZWN1dGVIdHRwSGFuZGxlckFzeW5jV3JhcHBlci5FbmRQcm9jZXNzUmVxdWVzdChJQXN5bmNSZXN1bHQgcmVzdWx0KQ0KICAgYXQgU3lzdGVtLldlYi5IdHRwU2VydmVyVXRpbGl0eS5FeGVjdXRlSW50ZXJuYWwoSUh0dHBIYW5kbGVyIGhhbmRsZXIsIFRleHRXcml0ZXIgd3JpdGVyLCBCb29sZWFuIHByZXNlcnZlRm9ybSwgQm9vbGVhbiBzZXRQcmV2aW91c1BhZ2UsIFZpcnR1YWxQYXRoIHBhdGgsIFZpcnR1YWxQYXRoIGZpbGVQYXRoLCBTdHJpbmcgcGh5c1BhdGgsIEV4Y2VwdGlvbiBlcnJvciwgU3RyaW5nIHF1ZXJ5U3RyaW5nT3ZlcnJpZGUp