ZGlmZiAtLWdpdCBhL21hdmVuLWFyY2hldHlwZS1hcmNoZXR5cGUvcG9tLnhtbCBiL21hdmVuLWFyY2hldHlwZS1hcmNoZXR5cGUvcG9tLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzRjOTE2MS4uMDAwMDAwMAotLS0gYS9tYXZlbi1hcmNoZXR5cGUtYXJjaGV0eXBlL3BvbS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotCi08IS0tCi1MaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCi1vciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKLWRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCi1yZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCi10byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCi0iTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCi13aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0KLSAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0KLVVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKLXNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCi0iQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKLUtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQotc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucwotdW5kZXIgdGhlIExpY2Vuc2UuCi0tLT4KLQotPHByb2plY3QgeG1sbnM9Imh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL1BPTS80LjAuMCIKLSAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKLSAgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9QT00vNC4wLjAgaHR0cDovL21hdmVuLmFwYWNoZS5vcmcvbWF2ZW4tdjRfMF8wLnhzZCI+Ci0gIDxwYXJlbnQ+Ci0gICAgPGFydGlmYWN0SWQ+bWF2ZW4tYXJjaGV0eXBlLWJ1bmRsZXM8L2FydGlmYWN0SWQ+Ci0gICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS5tYXZlbi5hcmNoZXR5cGVzPC9ncm91cElkPgotICAgIDx2ZXJzaW9uPjMtU05BUFNIT1Q8L3ZlcnNpb24+Ci0gIDwvcGFyZW50PgotICA8bW9kZWxWZXJzaW9uPjQuMC4wPC9tb2RlbFZlcnNpb24+ICAKLSAgPGRlc2NyaXB0aW9uPgotICAgIEFuIGFyY2hldHlwZSB3aGljaCBjb250YWlucyBhIHNhbXBsZSBhcmNoZXR5cGUuIAotICA8L2Rlc2NyaXB0aW9uPgotICA8YXJ0aWZhY3RJZD5tYXZlbi1hcmNoZXR5cGUtYXJjaGV0eXBlPC9hcnRpZmFjdElkPgotICA8bmFtZT5NYXZlbiBBcmNoZXR5cGUgQXJjaGV0eXBlPC9uYW1lPgotICA8dmVyc2lvbj4xLjEtU05BUFNIT1Q8L3ZlcnNpb24+Ci08L3Byb2plY3Q+CmRpZmYgLS1naXQgYS9tYXZlbi1hcmNoZXR5cGUtYXJjaGV0eXBlL3NyYy9tYWluL3Jlc291cmNlcy9NRVRBLUlORi9tYXZlbi9hcmNoZXR5cGUueG1sIGIvbWF2ZW4tYXJjaGV0eXBlLWFyY2hldHlwZS9zcmMvbWFpbi9yZXNvdXJjZXMvTUVUQS1JTkYvbWF2ZW4vYXJjaGV0eXBlLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzdiODc2NC4uMDAwMDAwMAotLS0gYS9tYXZlbi1hcmNoZXR5cGUtYXJjaGV0eXBlL3NyYy9tYWluL3Jlc291cmNlcy9NRVRBLUlORi9tYXZlbi9hcmNoZXR5cGUueG1sCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi08YXJjaGV0eXBlPgotICA8aWQ+YXJjaGV0eXBlPC9pZD4KLSAgPHJlc291cmNlcz4KLSAgICA8cmVzb3VyY2U+c3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvcG9tLnhtbDwvcmVzb3VyY2U+Ci0gICAgPHJlc291cmNlPnNyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy9tYWluL2phdmEvQXBwLmphdmE8L3Jlc291cmNlPgotICAgIDxyZXNvdXJjZT5zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvdGVzdC9qYXZhL0FwcFRlc3QuamF2YTwvcmVzb3VyY2U+Ci0gICAgPHJlc291cmNlPnNyYy9tYWluL3Jlc291cmNlcy9NRVRBLUlORi9tYXZlbi9hcmNoZXR5cGUueG1sPC9yZXNvdXJjZT4KLSAgPC9yZXNvdXJjZXM+IAotPC9hcmNoZXR5cGU+CmRpZmYgLS1naXQgYS9tYXZlbi1hcmNoZXR5cGUtYXJjaGV0eXBlL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3BvbS54bWwgYi9tYXZlbi1hcmNoZXR5cGUtYXJjaGV0eXBlL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3BvbS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjYmRjN2EuLjAwMDAwMDAKLS0tIGEvbWF2ZW4tYXJjaGV0eXBlLWFyY2hldHlwZS9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9wb20ueG1sCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi08cHJvamVjdCB4bWxucz0iaHR0cDovL21hdmVuLmFwYWNoZS5vcmcvUE9NLzQuMC4wIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgotICB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL1BPTS80LjAuMCBodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9tYXZlbi12NF8wXzAueHNkIj4KLSAgPG1vZGVsVmVyc2lvbj40LjAuMDwvbW9kZWxWZXJzaW9uPgotICA8Z3JvdXBJZD4ke2dyb3VwSWR9PC9ncm91cElkPgotICA8YXJ0aWZhY3RJZD4ke2FydGlmYWN0SWR9PC9hcnRpZmFjdElkPgotICA8dmVyc2lvbj4ke3ZlcnNpb259PC92ZXJzaW9uPgotICA8bmFtZT5BcmNoZXR5cGUgLSAke2FydGlmYWN0SWR9PC9uYW1lPgotICA8dXJsPmh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnPC91cmw+Ci08L3Byb2plY3Q+CmRpZmYgLS1naXQgYS9tYXZlbi1hcmNoZXR5cGUtYXJjaGV0eXBlL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy9tYWluL3Jlc291cmNlcy9NRVRBLUlORi9tYXZlbi9hcmNoZXR5cGUueG1sIGIvbWF2ZW4tYXJjaGV0eXBlLWFyY2hldHlwZS9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvbWFpbi9yZXNvdXJjZXMvTUVUQS1JTkYvbWF2ZW4vYXJjaGV0eXBlLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2VjMDBlMS4uMDAwMDAwMAotLS0gYS9tYXZlbi1hcmNoZXR5cGUtYXJjaGV0eXBlL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy9tYWluL3Jlc291cmNlcy9NRVRBLUlORi9tYXZlbi9hcmNoZXR5cGUueG1sCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi08YXJjaGV0eXBlPgotICA8aWQ+JHthcnRpZmFjdElkfTwvaWQ+Ci0gIDxzb3VyY2VzPgotICAgIDxzb3VyY2U+c3JjL21haW4vamF2YS9BcHAuamF2YTwvc291cmNlPgotICA8L3NvdXJjZXM+Ci0gIDx0ZXN0U291cmNlcz4KLSAgICA8c291cmNlPnNyYy90ZXN0L2phdmEvQXBwVGVzdC5qYXZhPC9zb3VyY2U+Ci0gIDwvdGVzdFNvdXJjZXM+Ci08L2FyY2hldHlwZT4KZGlmZiAtLWdpdCBhL21hdmVuLWFyY2hldHlwZS1hcmNoZXR5cGUvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvcG9tLnhtbCBiL21hdmVuLWFyY2hldHlwZS1hcmNoZXR5cGUvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvcG9tLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQyOGExOC4uMDAwMDAwMAotLS0gYS9tYXZlbi1hcmNoZXR5cGUtYXJjaGV0eXBlL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3BvbS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi08cHJvamVjdCB4bWxucz0iaHR0cDovL21hdmVuLmFwYWNoZS5vcmcvUE9NLzQuMC4wIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgotICB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL1BPTS80LjAuMCBodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9tYXZlbi12NF8wXzAueHNkIj4KLSAgPG1vZGVsVmVyc2lvbj40LjAuMDwvbW9kZWxWZXJzaW9uPgotICA8Z3JvdXBJZD4kJHtncm91cElkfTwvZ3JvdXBJZD4KLSAgPGFydGlmYWN0SWQ+JCR7YXJ0aWZhY3RJZH08L2FydGlmYWN0SWQ+Ci0gIDx2ZXJzaW9uPiQke3ZlcnNpb259PC92ZXJzaW9uPgotICA8ZGVwZW5kZW5jaWVzPgotICAgIDxkZXBlbmRlbmN5PgotICAgICAgPGdyb3VwSWQ+anVuaXQ8L2dyb3VwSWQ+Ci0gICAgICA8YXJ0aWZhY3RJZD5qdW5pdDwvYXJ0aWZhY3RJZD4KLSAgICAgIDx2ZXJzaW9uPjMuOC4xPC92ZXJzaW9uPgotICAgICAgPHNjb3BlPnRlc3Q8L3Njb3BlPgotICAgIDwvZGVwZW5kZW5jeT4KLSAgPC9kZXBlbmRlbmNpZXM+Ci08L3Byb2plY3Q+CmRpZmYgLS1naXQgYS9tYXZlbi1hcmNoZXR5cGUtYXJjaGV0eXBlL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy9tYWluL2phdmEvQXBwLmphdmEgYi9tYXZlbi1hcmNoZXR5cGUtYXJjaGV0eXBlL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy9tYWluL2phdmEvQXBwLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2NTI0ZGUuLjAwMDAwMDAKLS0tIGEvbWF2ZW4tYXJjaGV0eXBlLWFyY2hldHlwZS9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvbWFpbi9qYXZhL0FwcC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotcGFja2FnZSAkJHBhY2thZ2U7Ci0KLS8qKgotICogSGVsbG8gd29ybGQhCi0gKgotICovCi1wdWJsaWMgY2xhc3MgQXBwIAotewotICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKCBTdHJpbmdbXSBhcmdzICkKLSAgICB7Ci0gICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbiggIkhlbGxvIFdvcmxkISIgKTsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9tYXZlbi1hcmNoZXR5cGUtYXJjaGV0eXBlL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy90ZXN0L2phdmEvQXBwVGVzdC5qYXZhIGIvbWF2ZW4tYXJjaGV0eXBlLWFyY2hldHlwZS9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvdGVzdC9qYXZhL0FwcFRlc3QuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2FhNDU1OC4uMDAwMDAwMAotLS0gYS9tYXZlbi1hcmNoZXR5cGUtYXJjaGV0eXBlL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy90ZXN0L2phdmEvQXBwVGVzdC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotcGFja2FnZSAkJHBhY2thZ2U7Ci0KLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdDsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2U7Ci1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZTsKLQotLyoqCi0gKiBVbml0IHRlc3QgZm9yIHNpbXBsZSBBcHAuCi0gKi8KLXB1YmxpYyBjbGFzcyBBcHBUZXN0IAotICAgIGV4dGVuZHMgVGVzdENhc2UKLXsKLSAgICAvKioKLSAgICAgKiBDcmVhdGUgdGhlIHRlc3QgY2FzZQotICAgICAqCi0gICAgICogQHBhcmFtIHRlc3ROYW1lIG5hbWUgb2YgdGhlIHRlc3QgY2FzZQotICAgICAqLwotICAgIHB1YmxpYyBBcHBUZXN0KCBTdHJpbmcgdGVzdE5hbWUgKQotICAgIHsKLSAgICAgICAgc3VwZXIoIHRlc3ROYW1lICk7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogQHJldHVybiB0aGUgc3VpdGUgb2YgdGVzdHMgYmVpbmcgdGVzdGVkCi0gICAgICovCi0gICAgcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgVGVzdFN1aXRlKCBBcHBUZXN0LmNsYXNzICk7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogUmlnb3Vyb3VzIFRlc3QgOi0pCi0gICAgICovCi0gICAgcHVibGljIHZvaWQgdGVzdEFwcCgpCi0gICAgewotICAgICAgICBhc3NlcnRUcnVlKCB0cnVlICk7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvbWF2ZW4tYXJjaGV0eXBlLWoyZWUtc2ltcGxlL3BvbS54bWwgYi9tYXZlbi1hcmNoZXR5cGUtajJlZS1zaW1wbGUvcG9tLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDM4NTYwNS4uMDAwMDAwMAotLS0gYS9tYXZlbi1hcmNoZXR5cGUtajJlZS1zaW1wbGUvcG9tLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci0KLTwhLS0KLUxpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKLW9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQotZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KLXJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKLXRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKLSJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKLXdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLQotICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLQotVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAotc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KLSJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQotS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCi1zcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCi11bmRlciB0aGUgTGljZW5zZS4KLS0tPgotCi08cHJvamVjdCB4bWxucz0iaHR0cDovL21hdmVuLmFwYWNoZS5vcmcvUE9NLzQuMC4wIgotICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgotICB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL1BPTS80LjAuMCBodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9tYXZlbi12NF8wXzAueHNkIj4KLSAgPHBhcmVudD4KLSAgICA8YXJ0aWZhY3RJZD5tYXZlbi1hcmNoZXR5cGUtYnVuZGxlczwvYXJ0aWZhY3RJZD4KLSAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLm1hdmVuLmFyY2hldHlwZXM8L2dyb3VwSWQ+Ci0gICAgPHZlcnNpb24+My1TTkFQU0hPVDwvdmVyc2lvbj4KLSAgPC9wYXJlbnQ+Ci0gIDxtb2RlbFZlcnNpb24+NC4wLjA8L21vZGVsVmVyc2lvbj4KLSAgPGRlc2NyaXB0aW9uPgotICAgIEFuIGFyY2hldHlwZSB3aGljaCBjb250YWlucyBhIHNpbXBsaWZlZCBzYW1wbGUgSjJFRSBhcHBsaWNhdGlvbi4KLSAgPC9kZXNjcmlwdGlvbj4gIAotICA8YXJ0aWZhY3RJZD5tYXZlbi1hcmNoZXR5cGUtajJlZS1zaW1wbGU8L2FydGlmYWN0SWQ+Ci0gIDxuYW1lPk1hdmVuIFNpbXBsZSBKMkVFIEFyY2hldHlwZTwvbmFtZT4KLSAgPHZlcnNpb24+MS4xLVNOQVBTSE9UPC92ZXJzaW9uPgotPC9wcm9qZWN0PgpkaWZmIC0tZ2l0IGEvbWF2ZW4tYXJjaGV0eXBlLWoyZWUtc2ltcGxlL3NyYy9tYWluL3Jlc291cmNlcy9NRVRBLUlORi9hcmNoZXR5cGUueG1sIGIvbWF2ZW4tYXJjaGV0eXBlLWoyZWUtc2ltcGxlL3NyYy9tYWluL3Jlc291cmNlcy9NRVRBLUlORi9hcmNoZXR5cGUueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMTEyODJlLi4wMDAwMDAwCi0tLSBhL21hdmVuLWFyY2hldHlwZS1qMmVlLXNpbXBsZS9zcmMvbWFpbi9yZXNvdXJjZXMvTUVUQS1JTkYvYXJjaGV0eXBlLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLTxhcmNoZXR5cGU+Ci0gIDxpZD5qMmVlPC9pZD4KLSAgPHJlc291cmNlcz4KLSAgICA8cmVzb3VyY2U+cG9tLnhtbDwvcmVzb3VyY2U+Ci0gICAgPHJlc291cmNlPmVhci9wb20ueG1sPC9yZXNvdXJjZT4KLSAgICA8cmVzb3VyY2U+ZWpicy9zcmMvbWFpbi9yZXNvdXJjZXMvTUVUQS1JTkYvZWpiLWphci54bWw8L3Jlc291cmNlPgotICAgIDxyZXNvdXJjZT5lamJzL3BvbS54bWw8L3Jlc291cmNlPgotICAgIDxyZXNvdXJjZT5wcmltYXJ5LXNvdXJjZS9wb20ueG1sPC9yZXNvdXJjZT4KLSAgICA8cmVzb3VyY2U+cHJvamVjdHMvbG9nZ2luZy9wb20ueG1sPC9yZXNvdXJjZT4KLSAgICA8cmVzb3VyY2U+cHJvamVjdHMvcG9tLnhtbDwvcmVzb3VyY2U+Ci0gICAgPHJlc291cmNlPnNlcnZsZXRzL3BvbS54bWw8L3Jlc291cmNlPgotICAgIDxyZXNvdXJjZT5zZXJ2bGV0cy9zZXJ2bGV0L3BvbS54bWw8L3Jlc291cmNlPgotICAgIDxyZXNvdXJjZT5zZXJ2bGV0cy9zZXJ2bGV0L3NyYy9tYWluL3dlYmFwcC9pbmRleC5qc3A8L3Jlc291cmNlPgotICAgIDxyZXNvdXJjZT5zZXJ2bGV0cy9zZXJ2bGV0L3NyYy9tYWluL3dlYmFwcC9XRUItSU5GL3dlYi54bWw8L3Jlc291cmNlPgotICA8L3Jlc291cmNlcz4KLTwvYXJjaGV0eXBlPgpkaWZmIC0tZ2l0IGEvbWF2ZW4tYXJjaGV0eXBlLWoyZWUtc2ltcGxlL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL2Vhci9wb20ueG1sIGIvbWF2ZW4tYXJjaGV0eXBlLWoyZWUtc2ltcGxlL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL2Vhci9wb20ueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZWViZTQ1Li4wMDAwMDAwCi0tLSBhL21hdmVuLWFyY2hldHlwZS1qMmVlLXNpbXBsZS9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9lYXIvcG9tLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLTxwcm9qZWN0PgotICAgPG1vZGVsVmVyc2lvbj40LjAuMDwvbW9kZWxWZXJzaW9uPgotICAgPGdyb3VwSWQ+cm9vdC5wcm9qZWN0PC9ncm91cElkPgotICAgPGFydGlmYWN0SWQ+ZWFyPC9hcnRpZmFjdElkPgotICAgPHBhY2thZ2luZz5lYXI8L3BhY2thZ2luZz4KLSAgIDx2ZXJzaW9uPjEuMDwvdmVyc2lvbj4KLSAgIDxuYW1lPmVhciBhc3NlbWJseTwvbmFtZT4KLSAgIDxwYXJlbnQ+Ci0gICAgICA8Z3JvdXBJZD5yb290PC9ncm91cElkPgotICAgICAgPGFydGlmYWN0SWQ+cHJvamVjdDwvYXJ0aWZhY3RJZD4KLSAgICAgIDx2ZXJzaW9uPjEuMDwvdmVyc2lvbj4KLSAgIDwvcGFyZW50PgotICAgPGRlcGVuZGVuY2llcz4KLSAgICAgIDxkZXBlbmRlbmN5PgotICAgICAgICAgPGdyb3VwSWQ+cm9vdC5wcm9qZWN0PC9ncm91cElkPgotICAgICAgICAgPGFydGlmYWN0SWQ+ZWpiczwvYXJ0aWZhY3RJZD4KLSAgICAgICAgIDx0eXBlPmVqYjwvdHlwZT4KLSAgICAgIDwvZGVwZW5kZW5jeT4KLSAgICAgIDxkZXBlbmRlbmN5PgotICAgICAgICAgPGdyb3VwSWQ+cm9vdC5wcm9qZWN0LnNlcnZsZXRzPC9ncm91cElkPgotICAgICAgICAgPGFydGlmYWN0SWQ+c2VydmxldDwvYXJ0aWZhY3RJZD4KLSAgICAgICAgIDx0eXBlPndhcjwvdHlwZT4KLSAgICAgIDwvZGVwZW5kZW5jeT4KLSAgICAgIDxkZXBlbmRlbmN5PgotICAgICAgICAgPGdyb3VwSWQ+cm9vdC5wcm9qZWN0PC9ncm91cElkPgotICAgICAgICAgPGFydGlmYWN0SWQ+cHJpbWFyeS1zb3VyY2U8L2FydGlmYWN0SWQ+Ci0gICAgICA8L2RlcGVuZGVuY3k+Ci0gICAgICA8ZGVwZW5kZW5jeT4KLSAgICAgICAgIDxncm91cElkPnJvb3QucHJvamVjdC5wcm9qZWN0czwvZ3JvdXBJZD4KLSAgICAgICAgIDxhcnRpZmFjdElkPmxvZ2dpbmc8L2FydGlmYWN0SWQ+Ci0gICAgICA8L2RlcGVuZGVuY3k+Ci0gICA8L2RlcGVuZGVuY2llcz4KLSAgIDxidWlsZD4KLSAgICAgIDxwbHVnaW5zPgotICAgICAgICAgPHBsdWdpbj4KLSAgICAgICAgICAgIDxhcnRpZmFjdElkPm1hdmVuLWVhci1wbHVnaW48L2FydGlmYWN0SWQ+Ci0gICAgICAgICAgICA8Y29uZmlndXJhdGlvbj4KLSAgICAgICAgICAgICAgIDxhcmNoaXZlPgotICAgICAgICAgICAgICAgICAgPG1hbmlmZXN0PgotICAgICAgICAgICAgICAgICAgICAgPGFkZENsYXNzcGF0aD50cnVlPC9hZGRDbGFzc3BhdGg+Ci0gICAgICAgICAgICAgICAgICA8L21hbmlmZXN0PgotICAgICAgICAgICAgICAgPC9hcmNoaXZlPgotICAgICAgICAgICAgPC9jb25maWd1cmF0aW9uPgotICAgICAgICAgPC9wbHVnaW4+Ci0gICAgICA8L3BsdWdpbnM+Ci0gICA8L2J1aWxkPgotPC9wcm9qZWN0PgpkaWZmIC0tZ2l0IGEvbWF2ZW4tYXJjaGV0eXBlLWoyZWUtc2ltcGxlL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL2VqYnMvcG9tLnhtbCBiL21hdmVuLWFyY2hldHlwZS1qMmVlLXNpbXBsZS9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9lamJzL3BvbS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0NzdkZDcuLjAwMDAwMDAKLS0tIGEvbWF2ZW4tYXJjaGV0eXBlLWoyZWUtc2ltcGxlL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL2VqYnMvcG9tLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLTxwcm9qZWN0PgotICAgPG1vZGVsVmVyc2lvbj40LjAuMDwvbW9kZWxWZXJzaW9uPgotICAgPGdyb3VwSWQ+cm9vdC5wcm9qZWN0PC9ncm91cElkPgotICAgPGFydGlmYWN0SWQ+ZWpiczwvYXJ0aWZhY3RJZD4KLSAgIDxwYWNrYWdpbmc+ZWpiPC9wYWNrYWdpbmc+Ci0gICA8dmVyc2lvbj4xLjA8L3ZlcnNpb24+Ci0gICA8bmFtZT5lbnRlcnByaXNlIGphdmEgYmVhbnM8L25hbWU+Ci0gICA8cGFyZW50PgotICAgICAgPGdyb3VwSWQ+cm9vdDwvZ3JvdXBJZD4KLSAgICAgIDxhcnRpZmFjdElkPnByb2plY3Q8L2FydGlmYWN0SWQ+Ci0gICAgICA8dmVyc2lvbj4xLjA8L3ZlcnNpb24+Ci0gICA8L3BhcmVudD4KLSAgIDxkZXBlbmRlbmNpZXM+Ci0gICAgICA8ZGVwZW5kZW5jeT4KLSAgICAgICAgIDxncm91cElkPnJvb3QucHJvamVjdDwvZ3JvdXBJZD4KLSAgICAgICAgIDxhcnRpZmFjdElkPnByaW1hcnktc291cmNlPC9hcnRpZmFjdElkPgotICAgICAgPC9kZXBlbmRlbmN5PgotICAgICAgPGRlcGVuZGVuY3k+Ci0gICAgICAgICA8Z3JvdXBJZD5yb290LnByb2plY3QucHJvamVjdHM8L2dyb3VwSWQ+Ci0gICAgICAgICA8YXJ0aWZhY3RJZD5sb2dnaW5nPC9hcnRpZmFjdElkPgotICAgICAgPC9kZXBlbmRlbmN5PgotICA8L2RlcGVuZGVuY2llcz4KLSAgIDxidWlsZD4KLSAgICAgIDxwbHVnaW5zPgotICAgICAgICAgPHBsdWdpbj4KLSAgICAgICAgICAgIDxhcnRpZmFjdElkPm1hdmVuLWVqYi1wbHVnaW48L2FydGlmYWN0SWQ+Ci0gICAgICAgICAgICA8Y29uZmlndXJhdGlvbj4KLSAgICAgICAgICAgICAgIDxhcmNoaXZlPgotICAgICAgICAgICAgICAgICAgPG1hbmlmZXN0PgotICAgICAgICAgICAgICAgICAgICAgPGFkZENsYXNzcGF0aD50cnVlPC9hZGRDbGFzc3BhdGg+Ci0gICAgICAgICAgICAgICAgICA8L21hbmlmZXN0PgotICAgICAgICAgICAgICAgPC9hcmNoaXZlPiAKLSAgICAgICAgICAgIDwvY29uZmlndXJhdGlvbj4KLSAgICAgICAgIDwvcGx1Z2luPgotICAgICAgPC9wbHVnaW5zPgotICAgPC9idWlsZD4KLTwvcHJvamVjdD4KZGlmZiAtLWdpdCBhL21hdmVuLWFyY2hldHlwZS1qMmVlLXNpbXBsZS9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9lamJzL3NyYy9tYWluL3Jlc291cmNlcy9NRVRBLUlORi9lamItamFyLnhtbCBiL21hdmVuLWFyY2hldHlwZS1qMmVlLXNpbXBsZS9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9lamJzL3NyYy9tYWluL3Jlc291cmNlcy9NRVRBLUlORi9lamItamFyLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTY5ZGUyOS4uMDAwMDAwMAotLS0gYS9tYXZlbi1hcmNoZXR5cGUtajJlZS1zaW1wbGUvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvZWpicy9zcmMvbWFpbi9yZXNvdXJjZXMvTUVUQS1JTkYvZWpiLWphci54bWwKKysrIC9kZXYvbnVsbApkaWZmIC0tZ2l0IGEvbWF2ZW4tYXJjaGV0eXBlLWoyZWUtc2ltcGxlL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3BvbS54bWwgYi9tYXZlbi1hcmNoZXR5cGUtajJlZS1zaW1wbGUvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvcG9tLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzYwOTc4Ni4uMDAwMDAwMAotLS0gYS9tYXZlbi1hcmNoZXR5cGUtajJlZS1zaW1wbGUvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvcG9tLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLTxwcm9qZWN0PgotICAgPG1vZGVsVmVyc2lvbj40LjAuMDwvbW9kZWxWZXJzaW9uPgotICAgPGdyb3VwSWQ+cm9vdDwvZ3JvdXBJZD4KLSAgIDx2ZXJzaW9uPjEuMDwvdmVyc2lvbj4KLSAgIDxhcnRpZmFjdElkPnByb2plY3Q8L2FydGlmYWN0SWQ+Ci0gICA8cGFja2FnaW5nPnBvbTwvcGFja2FnaW5nPgotICAgPG5hbWU+cHJvamVjdDwvbmFtZT4KLSAgIDxtb2R1bGVzPgotICAgICAgPG1vZHVsZT5wcm9qZWN0czwvbW9kdWxlPgotICAgICAgPG1vZHVsZT5wcmltYXJ5LXNvdXJjZTwvbW9kdWxlPgotICAgICAgPG1vZHVsZT5zZXJ2bGV0czwvbW9kdWxlPgotICAgICAgPG1vZHVsZT5lamJzPC9tb2R1bGU+Ci0gICAgICA8bW9kdWxlPmVhcjwvbW9kdWxlPgotICAgPC9tb2R1bGVzPgotICAgPGJ1aWxkPgotICAgICAgPHBsdWdpbk1hbmFnZW1lbnQ+Ci0gICAgICAgICA8cGx1Z2lucz4KLSAgICAgICAgICAgIDxwbHVnaW4+Ci0gICAgICAgICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLm1hdmVuLnBsdWdpbnM8L2dyb3VwSWQ+Ci0gICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5tYXZlbi1zaXRlLXBsdWdpbjwvYXJ0aWZhY3RJZD4KLSAgICAgICAgICAgICAgIDxjb25maWd1cmF0aW9uPgotICAgICAgICAgICAgICAgICAgPHVuemlwQ29tbWFuZD4vdXNyL2Jpbi91bnppcCAtbyA+IGVyci50eHQ8L3VuemlwQ29tbWFuZD4KLSAgICAgICAgICAgICAgIDwvY29uZmlndXJhdGlvbj4KLSAgICAgICAgICAgIDwvcGx1Z2luPgotICAgICAgICAgPC9wbHVnaW5zPgotICAgICAgPC9wbHVnaW5NYW5hZ2VtZW50PgotICAgPC9idWlsZD4KLSAgIDxkZXBlbmRlbmN5TWFuYWdlbWVudD4KLSAgICAgIDxkZXBlbmRlbmNpZXM+Ci0gICAgICAgICA8ZGVwZW5kZW5jeT4KLSAgICAgICAgICAgIDxncm91cElkPnJvb3QucHJvamVjdC5wcm9qZWN0czwvZ3JvdXBJZD4KLSAgICAgICAgICAgIDxhcnRpZmFjdElkPmxvZ2dpbmc8L2FydGlmYWN0SWQ+Ci0gICAgICAgICAgICA8dmVyc2lvbj4xLjA8L3ZlcnNpb24+Ci0gICAgICAgICA8L2RlcGVuZGVuY3k+Ci0gICAgICAgICA8ZGVwZW5kZW5jeT4KLSAgICAgICAgICAgIDxncm91cElkPnJvb3QucHJvamVjdDwvZ3JvdXBJZD4KLSAgICAgICAgICAgIDxhcnRpZmFjdElkPnByaW1hcnktc291cmNlPC9hcnRpZmFjdElkPgotICAgICAgICAgICAgPHZlcnNpb24+MS4wPC92ZXJzaW9uPgotICAgICAgICAgPC9kZXBlbmRlbmN5PgotICAgICAgICAgPGRlcGVuZGVuY3k+Ci0gICAgICAgICAgICA8Z3JvdXBJZD5yb290LnByb2plY3Quc2VydmxldHM8L2dyb3VwSWQ+Ci0gICAgICAgICAgICA8YXJ0aWZhY3RJZD5zZXJ2bGV0PC9hcnRpZmFjdElkPgotICAgICAgICAgICAgPHZlcnNpb24+MS4wPC92ZXJzaW9uPgotICAgICAgICAgICAgPHR5cGU+d2FyPC90eXBlPgotICAgICAgICAgPC9kZXBlbmRlbmN5PgotICAgICAgICAgPGRlcGVuZGVuY3k+Ci0gICAgICAgICAgICA8Z3JvdXBJZD5yb290LnByb2plY3Q8L2dyb3VwSWQ+Ci0gICAgICAgICAgICA8YXJ0aWZhY3RJZD5lamJzPC9hcnRpZmFjdElkPgotICAgICAgICAgICAgPHZlcnNpb24+MS4wPC92ZXJzaW9uPgotICAgICAgICAgICAgPHR5cGU+ZWpiPC90eXBlPgotICAgICAgICAgPC9kZXBlbmRlbmN5PgotICAgICAgPC9kZXBlbmRlbmNpZXM+Ci0gICA8L2RlcGVuZGVuY3lNYW5hZ2VtZW50PgotICAgPGRpc3RyaWJ1dGlvbk1hbmFnZW1lbnQ+Ci0gICAgICA8c2l0ZT4KLSAgICAgICAgIDxpZD5zaXRlPC9pZD4KLSAgICAgICAgIDxuYW1lPnByb2plY3Qgd2Vic2l0ZTwvbmFtZT4KLSAgICAgICAgIDx1cmw+c2NwOi8vbG9jYWwuY29tcGFueS5jb20vd2Vic2l0ZXMvcHJvamVjdC5jb21wYW55LmNvbS88L3VybD4KLSAgICAgIDwvc2l0ZT4KLSAgIDwvZGlzdHJpYnV0aW9uTWFuYWdlbWVudD4KLTwvcHJvamVjdD4KZGlmZiAtLWdpdCBhL21hdmVuLWFyY2hldHlwZS1qMmVlLXNpbXBsZS9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9wcmltYXJ5LXNvdXJjZS9wb20ueG1sIGIvbWF2ZW4tYXJjaGV0eXBlLWoyZWUtc2ltcGxlL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3ByaW1hcnktc291cmNlL3BvbS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1MzcyOTkuLjAwMDAwMDAKLS0tIGEvbWF2ZW4tYXJjaGV0eXBlLWoyZWUtc2ltcGxlL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3ByaW1hcnktc291cmNlL3BvbS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08cHJvamVjdD4KLSAgIDxtb2RlbFZlcnNpb24+NC4wLjA8L21vZGVsVmVyc2lvbj4KLSAgIDxncm91cElkPnJvb3QucHJvamVjdDwvZ3JvdXBJZD4KLSAgIDxhcnRpZmFjdElkPnByaW1hcnktc291cmNlPC9hcnRpZmFjdElkPgotICAgPHBhY2thZ2luZz5qYXI8L3BhY2thZ2luZz4KLSAgIDxuYW1lPmNvcmUgcHJvamVjdCBjbGFzc2VzPC9uYW1lPgotICAgPHBhcmVudD4KLSAgICAgIDxncm91cElkPnJvb3Q8L2dyb3VwSWQ+Ci0gICAgICA8YXJ0aWZhY3RJZD5wcm9qZWN0PC9hcnRpZmFjdElkPgotICAgICAgPHZlcnNpb24+MS4wPC92ZXJzaW9uPgotICAgPC9wYXJlbnQ+Ci0gICA8ZGVwZW5kZW5jaWVzPgotICAgICAgPGRlcGVuZGVuY3k+Ci0gICAgICAgICA8Z3JvdXBJZD5yb290LnByb2plY3QucHJvamVjdHM8L2dyb3VwSWQ+Ci0gICAgICAgICA8YXJ0aWZhY3RJZD5sb2dnaW5nPC9hcnRpZmFjdElkPgotICAgICAgPC9kZXBlbmRlbmN5PiAgICAgICAgICAgICAgICAgIAotICAgPC9kZXBlbmRlbmNpZXM+Ci0gICA8YnVpbGQ+Ci0gICAgICA8cGx1Z2lucz4KLSAgICAgICAgIDxwbHVnaW4+Ci0gICAgICAgICAgICA8YXJ0aWZhY3RJZD5tYXZlbi1jb21waWxlci1wbHVnaW48L2FydGlmYWN0SWQ+Ci0gICAgICAgICAgICA8Y29uZmlndXJhdGlvbj4KLSAgICAgICAgICAgICAgIDxlbmNvZGluZz5pc28tODg1OS0xPC9lbmNvZGluZz4KLSAgICAgICAgICAgIDwvY29uZmlndXJhdGlvbj4KLSAgICAgICAgIDwvcGx1Z2luPgotICAgICAgICAgPHBsdWdpbj4KLSAgICAgICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUubWF2ZW4ucGx1Z2luczwvZ3JvdXBJZD4KLSAgICAgICAgICAgIDxhcnRpZmFjdElkPm1hdmVuLWphdmFkb2MtcGx1Z2luPC9hcnRpZmFjdElkPgotICAgICAgICAgICAgPGNvbmZpZ3VyYXRpb24+Ci0gICAgICAgICAgICAgICA8bWlubWVtb3J5PjEyOG08L21pbm1lbW9yeT4KLSAgICAgICAgICAgICAgIDxtYXhtZW1vcnk+NTEybTwvbWF4bWVtb3J5PgotICAgICAgICAgICAgPC9jb25maWd1cmF0aW9uPgotICAgICAgICAgPC9wbHVnaW4+Ci0gICAgICA8L3BsdWdpbnM+Ci0gICA8L2J1aWxkPgotPC9wcm9qZWN0PgpkaWZmIC0tZ2l0IGEvbWF2ZW4tYXJjaGV0eXBlLWoyZWUtc2ltcGxlL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3Byb2plY3RzL2xvZ2dpbmcvcG9tLnhtbCBiL21hdmVuLWFyY2hldHlwZS1qMmVlLXNpbXBsZS9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9wcm9qZWN0cy9sb2dnaW5nL3BvbS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjNDI2ZWEuLjAwMDAwMDAKLS0tIGEvbWF2ZW4tYXJjaGV0eXBlLWoyZWUtc2ltcGxlL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3Byb2plY3RzL2xvZ2dpbmcvcG9tLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLTxwcm9qZWN0PgotICAgPG1vZGVsVmVyc2lvbj40LjAuMDwvbW9kZWxWZXJzaW9uPgotICAgPGdyb3VwSWQ+cm9vdC5wcm9qZWN0LnByb2plY3RzPC9ncm91cElkPgotICAgPGFydGlmYWN0SWQ+bG9nZ2luZzwvYXJ0aWZhY3RJZD4KLSAgIDxwYWNrYWdpbmc+amFyPC9wYWNrYWdpbmc+Ci0gICA8bmFtZT5sb2dnaW5nPC9uYW1lPgotICAgPHBhcmVudD4KLSAgICAgIDxncm91cElkPnJvb3QucHJvamVjdDwvZ3JvdXBJZD4KLSAgICAgIDxhcnRpZmFjdElkPnByb2plY3RzPC9hcnRpZmFjdElkPgotICAgICAgPHZlcnNpb24+MS4wPC92ZXJzaW9uPgotICAgPC9wYXJlbnQ+Ci08L3Byb2plY3Q+CmRpZmYgLS1naXQgYS9tYXZlbi1hcmNoZXR5cGUtajJlZS1zaW1wbGUvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvcHJvamVjdHMvcG9tLnhtbCBiL21hdmVuLWFyY2hldHlwZS1qMmVlLXNpbXBsZS9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9wcm9qZWN0cy9wb20ueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzc3NGI2Li4wMDAwMDAwCi0tLSBhL21hdmVuLWFyY2hldHlwZS1qMmVlLXNpbXBsZS9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9wcm9qZWN0cy9wb20ueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotPHByb2plY3Q+Ci0gICA8bW9kZWxWZXJzaW9uPjQuMC4wPC9tb2RlbFZlcnNpb24+Ci0gICA8Z3JvdXBJZD5yb290LnByb2plY3Q8L2dyb3VwSWQ+Ci0gICA8dmVyc2lvbj4xLjA8L3ZlcnNpb24+Ci0gICA8YXJ0aWZhY3RJZD5wcm9qZWN0czwvYXJ0aWZhY3RJZD4KLSAgIDxwYWNrYWdpbmc+cG9tPC9wYWNrYWdpbmc+Ci0gICA8bmFtZT5zdWIgcHJvamVjdHM8L25hbWU+Ci0gICA8cGFyZW50PgotICAgICAgPGdyb3VwSWQ+cm9vdDwvZ3JvdXBJZD4KLSAgICAgIDxhcnRpZmFjdElkPnByb2plY3Q8L2FydGlmYWN0SWQ+Ci0gICAgICA8dmVyc2lvbj4xLjA8L3ZlcnNpb24+Ci0gICA8L3BhcmVudD4KLSAgIDxtb2R1bGVzPgotICAgICAgPG1vZHVsZT5sb2dnaW5nPC9tb2R1bGU+Ci0gICA8L21vZHVsZXM+Ci08L3Byb2plY3Q+CmRpZmYgLS1naXQgYS9tYXZlbi1hcmNoZXR5cGUtajJlZS1zaW1wbGUvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvc2VydmxldHMvcG9tLnhtbCBiL21hdmVuLWFyY2hldHlwZS1qMmVlLXNpbXBsZS9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zZXJ2bGV0cy9wb20ueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhN2U2MzAyLi4wMDAwMDAwCi0tLSBhL21hdmVuLWFyY2hldHlwZS1qMmVlLXNpbXBsZS9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zZXJ2bGV0cy9wb20ueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotPHByb2plY3Q+Ci0gICA8bW9kZWxWZXJzaW9uPjQuMC4wPC9tb2RlbFZlcnNpb24+Ci0gICA8Z3JvdXBJZD5yb290LnByb2plY3Q8L2dyb3VwSWQ+Ci0gICA8YXJ0aWZhY3RJZD5zZXJ2bGV0czwvYXJ0aWZhY3RJZD4KLSAgIDxwYWNrYWdpbmc+cG9tPC9wYWNrYWdpbmc+Ci0gICA8bmFtZT5zZXJ2bGV0czwvbmFtZT4KLSAgIDx2ZXJzaW9uPjEuMDwvdmVyc2lvbj4KLSAgIDxwYXJlbnQ+Ci0gICAgICA8Z3JvdXBJZD5yb290PC9ncm91cElkPgotICAgICAgPGFydGlmYWN0SWQ+cHJvamVjdDwvYXJ0aWZhY3RJZD4KLSAgICAgIDx2ZXJzaW9uPjEuMDwvdmVyc2lvbj4KLSAgIDwvcGFyZW50PgotICAgPG1vZHVsZXM+Ci0gICAgICA8bW9kdWxlPnNlcnZsZXQ8L21vZHVsZT4KLSAgIDwvbW9kdWxlcz4KLTwvcHJvamVjdD4KLQpkaWZmIC0tZ2l0IGEvbWF2ZW4tYXJjaGV0eXBlLWoyZWUtc2ltcGxlL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NlcnZsZXRzL3NlcnZsZXQvcG9tLnhtbCBiL21hdmVuLWFyY2hldHlwZS1qMmVlLXNpbXBsZS9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zZXJ2bGV0cy9zZXJ2bGV0L3BvbS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5Y2U2M2YuLjAwMDAwMDAKLS0tIGEvbWF2ZW4tYXJjaGV0eXBlLWoyZWUtc2ltcGxlL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NlcnZsZXRzL3NlcnZsZXQvcG9tLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLTxwcm9qZWN0PgotICAgPG1vZGVsVmVyc2lvbj40LjAuMDwvbW9kZWxWZXJzaW9uPgotICAgPGdyb3VwSWQ+cm9vdC5wcm9qZWN0LnNlcnZsZXRzPC9ncm91cElkPgotICAgPGFydGlmYWN0SWQ+c2VydmxldDwvYXJ0aWZhY3RJZD4KLSAgIDxwYWNrYWdpbmc+d2FyPC9wYWNrYWdpbmc+Ci0gICA8bmFtZT5zZXJ2bGV0PC9uYW1lPgotICAgPHBhcmVudD4KLSAgICAgIDxncm91cElkPnJvb3QucHJvamVjdDwvZ3JvdXBJZD4KLSAgICAgIDxhcnRpZmFjdElkPnNlcnZsZXRzPC9hcnRpZmFjdElkPgotICAgICAgPHZlcnNpb24+MS4wPC92ZXJzaW9uPgotICAgPC9wYXJlbnQ+Ci0gICA8ZGVwZW5kZW5jaWVzPgotICAgICAgPGRlcGVuZGVuY3k+Ci0gICAgICAgICA8Z3JvdXBJZD5yb290LnByb2plY3Q8L2dyb3VwSWQ+Ci0gICAgICAgICA8YXJ0aWZhY3RJZD5wcmltYXJ5LXNvdXJjZTwvYXJ0aWZhY3RJZD4KLSAgICAgICAgIDxzY29wZT5wcm92aWRlZDwvc2NvcGU+Ci0gICAgICA8L2RlcGVuZGVuY3k+Ci0gICA8L2RlcGVuZGVuY2llcz4KLTwvcHJvamVjdD4KZGlmZiAtLWdpdCBhL21hdmVuLWFyY2hldHlwZS1qMmVlLXNpbXBsZS9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zZXJ2bGV0cy9zZXJ2bGV0L3NyYy9tYWluL3dlYmFwcC9XRUItSU5GL3dlYi54bWwgYi9tYXZlbi1hcmNoZXR5cGUtajJlZS1zaW1wbGUvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvc2VydmxldHMvc2VydmxldC9zcmMvbWFpbi93ZWJhcHAvV0VCLUlORi93ZWIueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjlkZTI5Li4wMDAwMDAwCi0tLSBhL21hdmVuLWFyY2hldHlwZS1qMmVlLXNpbXBsZS9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zZXJ2bGV0cy9zZXJ2bGV0L3NyYy9tYWluL3dlYmFwcC9XRUItSU5GL3dlYi54bWwKKysrIC9kZXYvbnVsbApkaWZmIC0tZ2l0IGEvbWF2ZW4tYXJjaGV0eXBlLWoyZWUtc2ltcGxlL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NlcnZsZXRzL3NlcnZsZXQvc3JjL21haW4vd2ViYXBwL2luZGV4LmpzcCBiL21hdmVuLWFyY2hldHlwZS1qMmVlLXNpbXBsZS9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zZXJ2bGV0cy9zZXJ2bGV0L3NyYy9tYWluL3dlYmFwcC9pbmRleC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzODE2OWIuLjAwMDAwMDAKLS0tIGEvbWF2ZW4tYXJjaGV0eXBlLWoyZWUtc2ltcGxlL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NlcnZsZXRzL3NlcnZsZXQvc3JjL21haW4vd2ViYXBwL2luZGV4LmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotPGh0bWw+Ci08Ym9keT4KLTxoMj5IZWxsbyBXb3JsZCE8L2gyPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvbWF2ZW4tYXJjaGV0eXBlLW1vam8vUkVBRE1FLnR4dCBiL21hdmVuLWFyY2hldHlwZS1tb2pvL1JFQURNRS50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1ZjdjNTguLjAwMDAwMDAKLS0tIGEvbWF2ZW4tYXJjaGV0eXBlLW1vam8vUkVBRE1FLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotVGhpcyBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBhbiBhcmNoZXR5cGUgd2l0aCBhIGJldHRlciBhcnRpZmFjdElkLiBUaGF0Ci1iZWluZyBtYXZlbi1hcmNoZXR5cGUtcGx1Z2luLgpkaWZmIC0tZ2l0IGEvbWF2ZW4tYXJjaGV0eXBlLW1vam8vcG9tLnhtbCBiL21hdmVuLWFyY2hldHlwZS1tb2pvL3BvbS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjYmVkNjkuLjAwMDAwMDAKLS0tIGEvbWF2ZW4tYXJjaGV0eXBlLW1vam8vcG9tLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci0KLTwhLS0KLUxpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKLW9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQotZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KLXJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKLXRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKLSJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKLXdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLQotICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLQotVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAotc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KLSJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQotS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCi1zcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCi11bmRlciB0aGUgTGljZW5zZS4KLS0tPgotCi08cHJvamVjdCB4bWxucz0iaHR0cDovL21hdmVuLmFwYWNoZS5vcmcvUE9NLzQuMC4wIgotICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgotICB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL1BPTS80LjAuMCBodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9tYXZlbi12NF8wXzAueHNkIj4KLSAgPHBhcmVudD4KLSAgICA8YXJ0aWZhY3RJZD5tYXZlbi1hcmNoZXR5cGUtYnVuZGxlczwvYXJ0aWZhY3RJZD4KLSAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLm1hdmVuLmFyY2hldHlwZXM8L2dyb3VwSWQ+Ci0gICAgPHZlcnNpb24+My1TTkFQU0hPVDwvdmVyc2lvbj4KLSAgPC9wYXJlbnQ+Ci0gIDxtb2RlbFZlcnNpb24+NC4wLjA8L21vZGVsVmVyc2lvbj4KLSAgPGRlc2NyaXB0aW9uPgotICAgIEFuIGFyY2hldHlwZSB3aGljaCBjb250YWlucyBhIHNhbXBsZSBhIHNhbXBsZSBNYXZlbiBwbHVnaW4uCi0gIDwvZGVzY3JpcHRpb24+Ci0gIDxhcnRpZmFjdElkPm1hdmVuLWFyY2hldHlwZS1tb2pvPC9hcnRpZmFjdElkPgotICA8bmFtZT5NYXZlbiBNb2pvIEFyY2hldHlwZTwvbmFtZT4KLSAgPHZlcnNpb24+MS4xLVNOQVBTSE9UPC92ZXJzaW9uPgotPC9wcm9qZWN0PgpkaWZmIC0tZ2l0IGEvbWF2ZW4tYXJjaGV0eXBlLW1vam8vc3JjL21haW4vcmVzb3VyY2VzL01FVEEtSU5GL2FyY2hldHlwZS54bWwgYi9tYXZlbi1hcmNoZXR5cGUtbW9qby9zcmMvbWFpbi9yZXNvdXJjZXMvTUVUQS1JTkYvYXJjaGV0eXBlLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjliOThiMi4uMDAwMDAwMAotLS0gYS9tYXZlbi1hcmNoZXR5cGUtbW9qby9zcmMvbWFpbi9yZXNvdXJjZXMvTUVUQS1JTkYvYXJjaGV0eXBlLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotPGFyY2hldHlwZT4KLSAgPGlkPnBsdWdpbjwvaWQ+Ci0gIDxzb3VyY2VzPgotICAgIDxzb3VyY2U+c3JjL21haW4vamF2YS9NeU1vam8uamF2YTwvc291cmNlPgotICA8L3NvdXJjZXM+Ci08L2FyY2hldHlwZT4KZGlmZiAtLWdpdCBhL21hdmVuLWFyY2hldHlwZS1tb2pvL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3BvbS54bWwgYi9tYXZlbi1hcmNoZXR5cGUtbW9qby9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9wb20ueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZjYwMjdjLi4wMDAwMDAwCi0tLSBhL21hdmVuLWFyY2hldHlwZS1tb2pvL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3BvbS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi08cHJvamVjdCB4bWxucz0iaHR0cDovL21hdmVuLmFwYWNoZS5vcmcvUE9NLzQuMC4wIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgotICB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL1BPTS80LjAuMCBodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9tYXZlbi12NF8wXzAueHNkIj4KLSAgPG1vZGVsVmVyc2lvbj40LjAuMDwvbW9kZWxWZXJzaW9uPgotICA8Z3JvdXBJZD4ke2dyb3VwSWR9PC9ncm91cElkPgotICA8YXJ0aWZhY3RJZD4ke2FydGlmYWN0SWR9PC9hcnRpZmFjdElkPgotICA8cGFja2FnaW5nPm1hdmVuLXBsdWdpbjwvcGFja2FnaW5nPgotICA8dmVyc2lvbj4ke3ZlcnNpb259PC92ZXJzaW9uPgotICA8bmFtZT4ke2FydGlmYWN0SWR9IE1hdmVuIE1vam88L25hbWU+Ci0gIDx1cmw+aHR0cDovL21hdmVuLmFwYWNoZS5vcmc8L3VybD4KLSAgPGRlcGVuZGVuY2llcz4KLSAgICA8ZGVwZW5kZW5jeT4KLSAgICAgIDxncm91cElkPm9yZy5hcGFjaGUubWF2ZW48L2dyb3VwSWQ+Ci0gICAgICA8YXJ0aWZhY3RJZD5tYXZlbi1wbHVnaW4tYXBpPC9hcnRpZmFjdElkPgotICAgICAgPHZlcnNpb24+Mi4wPC92ZXJzaW9uPgotICAgIDwvZGVwZW5kZW5jeT4KLSAgICA8ZGVwZW5kZW5jeT4KLSAgICAgIDxncm91cElkPmp1bml0PC9ncm91cElkPgotICAgICAgPGFydGlmYWN0SWQ+anVuaXQ8L2FydGlmYWN0SWQ+Ci0gICAgICA8dmVyc2lvbj4zLjguMTwvdmVyc2lvbj4KLSAgICAgIDxzY29wZT50ZXN0PC9zY29wZT4KLSAgICA8L2RlcGVuZGVuY3k+Ci0gIDwvZGVwZW5kZW5jaWVzPgotPC9wcm9qZWN0PgpkaWZmIC0tZ2l0IGEvbWF2ZW4tYXJjaGV0eXBlLW1vam8vc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvc3JjL21haW4vamF2YS9NeU1vam8uamF2YSBiL21hdmVuLWFyY2hldHlwZS1tb2pvL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy9tYWluL2phdmEvTXlNb2pvLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0NzZlZmMuLjAwMDAwMDAKLS0tIGEvbWF2ZW4tYXJjaGV0eXBlLW1vam8vc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvc3JjL21haW4vamF2YS9NeU1vam8uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLXBhY2thZ2UgJHBhY2thZ2U7Ci0KLS8qCi0gKiBDb3B5cmlnaHQgMjAwMS0yMDA1IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbi4KLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotaW1wb3J0IG9yZy5hcGFjaGUubWF2ZW4ucGx1Z2luLkFic3RyYWN0TW9qbzsKLWltcG9ydCBvcmcuYXBhY2hlLm1hdmVuLnBsdWdpbi5Nb2pvRXhlY3V0aW9uRXhjZXB0aW9uOwotCi1pbXBvcnQgamF2YS5pby5GaWxlOwotaW1wb3J0IGphdmEuaW8uRmlsZVdyaXRlcjsKLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotCi0vKioKLSAqIEdvYWwgd2hpY2ggdG91Y2hlcyBhIHRpbWVzdGFtcCBmaWxlLgotICoKLSAqIEBnb2FsIHRvdWNoCi0gKiAKLSAqIEBwaGFzZSBwcm9jZXNzLXNvdXJjZXMKLSAqLwotcHVibGljIGNsYXNzIE15TW9qbwotICAgIGV4dGVuZHMgQWJzdHJhY3RNb2pvCi17Ci0gICAgLyoqCi0gICAgICogTG9jYXRpb24gb2YgdGhlIGZpbGUuCi0gICAgICogQHBhcmFtZXRlciBleHByZXNzaW9uPSIke3Byb2plY3QuYnVpbGQuZGlyZWN0b3J5fSIKLSAgICAgKiBAcmVxdWlyZWQKLSAgICAgKi8KLSAgICBwcml2YXRlIEZpbGUgb3V0cHV0RGlyZWN0b3J5OwotCi0gICAgcHVibGljIHZvaWQgZXhlY3V0ZSgpCi0gICAgICAgIHRocm93cyBNb2pvRXhlY3V0aW9uRXhjZXB0aW9uCi0gICAgewotICAgICAgICBGaWxlIGYgPSBvdXRwdXREaXJlY3Rvcnk7Ci0KLSAgICAgICAgaWYgKCAhZi5leGlzdHMoKSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGYubWtkaXJzKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBGaWxlIHRvdWNoID0gbmV3IEZpbGUoIGYsICJ0b3VjaC50eHQiICk7Ci0KLSAgICAgICAgRmlsZVdyaXRlciB3ID0gbnVsbDsKLSAgICAgICAgdHJ5Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHcgPSBuZXcgRmlsZVdyaXRlciggdG91Y2ggKTsKLQotICAgICAgICAgICAgdy53cml0ZSggInRvdWNoLnR4dCIgKTsKLSAgICAgICAgfQotICAgICAgICBjYXRjaCAoIElPRXhjZXB0aW9uIGUgKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aHJvdyBuZXcgTW9qb0V4ZWN1dGlvbkV4Y2VwdGlvbiggIkVycm9yIGNyZWF0aW5nIGZpbGUgIiArIHRvdWNoLCBlICk7Ci0gICAgICAgIH0KLSAgICAgICAgZmluYWxseQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIHcgIT0gbnVsbCApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHJ5Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICB3LmNsb3NlKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGNhdGNoICggSU9FeGNlcHRpb24gZSApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAvLyBpZ25vcmUKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19CmRpZmYgLS1naXQgYS9tYXZlbi1hcmNoZXR5cGUtcGx1Z2luLXNpdGUvcG9tLnhtbCBiL21hdmVuLWFyY2hldHlwZS1wbHVnaW4tc2l0ZS9wb20ueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYmMxMzIyLi4wMDAwMDAwCi0tLSBhL21hdmVuLWFyY2hldHlwZS1wbHVnaW4tc2l0ZS9wb20ueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLQotPCEtLQotTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQotb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCi1kaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgotcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQotdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQotIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQotd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotCi0gIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotCi1Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCi1zb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgotIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCi1LSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKLXNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKLXVuZGVyIHRoZSBMaWNlbnNlLgotLS0+Ci0KLTxwcm9qZWN0IHhtbG5zPSJodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9QT00vNC4wLjAiCi0gIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiCi0gIHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL21hdmVuLmFwYWNoZS5vcmcvUE9NLzQuMC4wIGh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL21hdmVuLXY0XzBfMC54c2QiPgotICA8cGFyZW50PgotICAgIDxhcnRpZmFjdElkPm1hdmVuLWFyY2hldHlwZS1idW5kbGVzPC9hcnRpZmFjdElkPgotICAgIDxncm91cElkPm9yZy5hcGFjaGUubWF2ZW4uYXJjaGV0eXBlczwvZ3JvdXBJZD4KLSAgICA8dmVyc2lvbj4zLVNOQVBTSE9UPC92ZXJzaW9uPgotICA8L3BhcmVudD4KLSAgPG1vZGVsVmVyc2lvbj40LjAuMDwvbW9kZWxWZXJzaW9uPgotICA8ZGVzY3JpcHRpb24+Ci0gICAgQW4gYXJjaGV0eXBlIHdoaWNoIGNvbnRhaW5zIGEgc2FtcGxlIE1hdmVuIHBsdWdpbiBzaXRlLiBUaGlzIGFyY2hldHlwZSBjYW4gYmUgbGF5ZXJlZCB1cG9uIGFuCi0gICAgZXhpc3RpbmcgTWF2ZW4gcGx1Z2luIHByb2plY3QuCi0gIDwvZGVzY3JpcHRpb24+Ci0gIDxhcnRpZmFjdElkPm1hdmVuLWFyY2hldHlwZS1wbHVnaW4tc2l0ZTwvYXJ0aWZhY3RJZD4KLSAgPHZlcnNpb24+MS4xLVNOQVBTSE9UPC92ZXJzaW9uPgotICA8bmFtZT5NYXZlbiBQbHVnaW4gU2l0ZSBBcmNoZXR5cGU8L25hbWU+Ci08L3Byb2plY3Q+CmRpZmYgLS1naXQgYS9tYXZlbi1hcmNoZXR5cGUtcGx1Z2luLXNpdGUvc3JjL21haW4vcmVzb3VyY2VzL01FVEEtSU5GL2FyY2hldHlwZS54bWwgYi9tYXZlbi1hcmNoZXR5cGUtcGx1Z2luLXNpdGUvc3JjL21haW4vcmVzb3VyY2VzL01FVEEtSU5GL2FyY2hldHlwZS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjYzRkMTQuLjAwMDAwMDAKLS0tIGEvbWF2ZW4tYXJjaGV0eXBlLXBsdWdpbi1zaXRlL3NyYy9tYWluL3Jlc291cmNlcy9NRVRBLUlORi9hcmNoZXR5cGUueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotPGFyY2hldHlwZT4KLSAgPGlkPnBsdWdpbjwvaWQ+Ci0gIDxhbGxvd1BhcnRpYWw+dHJ1ZTwvYWxsb3dQYXJ0aWFsPgotICA8c2l0ZVJlc291cmNlcz4KLSAgICA8cmVzb3VyY2U+c3JjL3NpdGUvc2l0ZS54bWw8L3Jlc291cmNlPgotICAgIDxyZXNvdXJjZT5zcmMvc2l0ZS9hcHQvaW5kZXguYXB0PC9yZXNvdXJjZT4KLSAgICA8cmVzb3VyY2U+c3JjL3NpdGUvYXB0L3VzYWdlLmFwdDwvcmVzb3VyY2U+Ci0gICAgPHJlc291cmNlPnNyYy9zaXRlL2FwdC9leGFtcGxlcy9leGFtcGxlLmFwdDwvcmVzb3VyY2U+Ci0gIDwvc2l0ZVJlc291cmNlcz4KLTwvYXJjaGV0eXBlPgpkaWZmIC0tZ2l0IGEvbWF2ZW4tYXJjaGV0eXBlLXBsdWdpbi1zaXRlL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3BvbS54bWwgYi9tYXZlbi1hcmNoZXR5cGUtcGx1Z2luLXNpdGUvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvcG9tLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjZiM2RhMi4uMDAwMDAwMAotLS0gYS9tYXZlbi1hcmNoZXR5cGUtcGx1Z2luLXNpdGUvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvcG9tLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLTxwcm9qZWN0IHhtbG5zPSJodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9QT00vNC4wLjAiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiCi0gIHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL21hdmVuLmFwYWNoZS5vcmcvUE9NLzQuMC4wIGh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL21hdmVuLXY0XzBfMC54c2QiPgotICA8bW9kZWxWZXJzaW9uPjQuMC4wPC9tb2RlbFZlcnNpb24+Ci0gIDxncm91cElkPiR7Z3JvdXBJZH08L2dyb3VwSWQ+Ci0gIDxhcnRpZmFjdElkPiR7YXJ0aWZhY3RJZH08L2FydGlmYWN0SWQ+Ci0gIDx2ZXJzaW9uPiR7dmVyc2lvbn08L3ZlcnNpb24+Ci0gIDxuYW1lPk1hdmVuPC9uYW1lPgotICA8dXJsPmh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL21hdmVuMjwvdXJsPgotICA8aW5jZXB0aW9uWWVhcj4yMDAxPC9pbmNlcHRpb25ZZWFyPgotICA8ZGlzdHJpYnV0aW9uTWFuYWdlbWVudD4KLSAgICA8c2l0ZT4KLSAgICAgIDxpZD53ZWJzaXRlPC9pZD4KLSAgICAgIDx1cmw+ZmlsZTovLyR7YmFzZWRpcn0vdGFyZ2V0L2RlcGxveWVkLXNpdGU8L3VybD4KLSAgICA8L3NpdGU+Ci0gIDwvZGlzdHJpYnV0aW9uTWFuYWdlbWVudD4KLTwvcHJvamVjdD4KZGlmZiAtLWdpdCBhL21hdmVuLWFyY2hldHlwZS1wbHVnaW4tc2l0ZS9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvc2l0ZS9hcHQvZXhhbXBsZXMvZXhhbXBsZS5hcHQgYi9tYXZlbi1hcmNoZXR5cGUtcGx1Z2luLXNpdGUvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvc3JjL3NpdGUvYXB0L2V4YW1wbGVzL2V4YW1wbGUuYXB0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZTc4YjliLi4wMDAwMDAwCi0tLSBhL21hdmVuLWFyY2hldHlwZS1wbHVnaW4tc2l0ZS9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvc2l0ZS9hcHQvZXhhbXBsZXMvZXhhbXBsZS5hcHQKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0gLS0tLS0tCi0gU01UUCBBdXRoZW50aWNhdGlvbgotIC0tLS0tLQotIEFsbGFuIFJhbWlyZXoKLSAtLS0tLS0KLSAyMSBPY3RvYmVyIDIwMDUKLSAtLS0tLS0KLQotU01UUCBBdXRoZW50aWNhdGlvbgotCi0gIElmIHRoZSBTTVRQIGhvc3QgbmVlZHMgYXV0aGVudGljYXRpb24sIHlvdSBjYW4gcHJvdmlkZSB5b3VyIHVzZXJuYW1lIGFuZCBwYXNzd29yZAotICBpbiB0aGUgPDw8XDxjb25maWd1cmF0aW9uXD4+Pj4gc2VjdGlvbjoKLQotLS0tLS0tLS0tLS0tLS0tLS0tLQotPHByb2plY3Q+Ci0gIC4uLgotICA8YnVpbGQ+Ci0gICAgPHBsdWdpbnM+Ci0gICAgICA8cGx1Z2luPgotICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLm1hdmVuLnBsdWdpbnM8L2dyb3VwSWQ+Ci0gICAgICAgIDxhcnRpZmFjdElkPm1hdmVuLWNoYW5nZXMtcGx1Z2luPC9hcnRpZmFjdElkPgotICAgICAgICA8Y29uZmlndXJhdGlvbj4KLSAgICAgICAgICA8c210cEhvc3Q+bWFpbC55b3VyaG9zdC5jb208L3NtdHBIb3N0PgotICAgICAgICAgIDxzbXRwUG9ydCBpbXBsZW1lbnRhdGlvbj0iamF2YS5sYW5nLkludGVnZXIiPjI1PC9zbXRwUG9ydD4KLSAgICAgICAgICA8dXNlcm5hbWU+c29tZUBlbWFpbC5jb208L3VzZXJuYW1lPgotICAgICAgICAgIDxwYXNzd29yZD5zb21lcGFzc3dvcmQ8L3Bhc3N3b3JkPgotICAgICAgICAgIC4uLgotICAgICAgICA8L2NvbmZpZ3VyYXRpb24+Ci0gICAgICA8L3BsdWdpbj4KLSAgICA8L3BsdWdpbnM+Ci0gIDwvYnVpbGQ+Ci0gIC4uLgotPC9wcm9qZWN0PgotLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvbWF2ZW4tYXJjaGV0eXBlLXBsdWdpbi1zaXRlL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy9zaXRlL2FwdC9pbmRleC5hcHQgYi9tYXZlbi1hcmNoZXR5cGUtcGx1Z2luLXNpdGUvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvc3JjL3NpdGUvYXB0L2luZGV4LmFwdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWM0OTdjYy4uMDAwMDAwMAotLS0gYS9tYXZlbi1hcmNoZXR5cGUtcGx1Z2luLXNpdGUvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvc3JjL3NpdGUvYXB0L2luZGV4LmFwdAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLSAtLS0tLS0KLSBJbnRyb2R1Y3Rpb24KLSAtLS0tLS0KLSBKYXNvbiB2YW4gWnlsCi0gLS0tLS0tCi0gMjcgTm92ZW1iZXIgMjAwNgotIC0tLS0tLQotCi1NYXZlbiAyIFN1cGVyRHVwZXIgUGx1Z2luCi0KLSAgVGhpcyBwbHVnaW4gaXMgdXNlZCB0byB0cmFuc2Zvcm0geW91ciBkZXZlbG9wbWVudCBsaWZlLiBEb24ndCBib3RoZXIgd2l0aCBzZWxmLWhlbHAKLSAgYm9va3Mgb24gaG93IHRvIGdldCBvdmVyIHlvdXIgYnVpbGQtdGltZSBibHVlcy4gSnVzdCB1c2UgdGhpcyBwbHVnaW4gYW5kCi0gIGV2ZXJ5dGhpbmcgd2lsbCBtaXJhY3Vsb3VzbHkgY2hhbmdlLgotCi0qIEdvYWxzIE92ZXJ2aWV3Ci0KLSAgKiB7e3tzdXBlcmR1cGVyLXRyYW5zZm9ybS5odG1sfXN1cGVyZHVwZXI6dHJhbnNmb3JtfX0gcGVyZm9ybXMgdGhlIG1pcmFjdWxvdXMgYnVpbGQgdHJhbnNmb3JtYXRpb24uCi0KLSAgW10KLQotKiBVc2FnZQotCi0gIEluc3RydWN0aW9ucyBvbiBob3cgdG8gdXNlIHRoZSBTdXBlckR1cGVyIFBsdWdpbiBjYW4gYmUgZm91bmQge3t7dXNhZ2UuaHRtbH1oZXJlfX0uCi0KLSogRXhhbXBsZXMKLQotICBUbyBwcm92aWRlIHlvdSB3aXRoIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHNvbWUgdXNhZ2VzIG9mIHRoZSBTdXBlckR1cGVyIFBsdWdpbiwKLSAgeW91IGNhbiB0YWtlIGEgbG9vayBhdCB0aGUgZm9sbG93aW5nIGV4YW1wbGVzOgotCi0gICoge3t7ZXhhbXBsZXMvc2FtcGxlLWV4YW1wbGUuaHRtbH1TYW1wbGUgRXhhbXBsZX19CmRpZmYgLS1naXQgYS9tYXZlbi1hcmNoZXR5cGUtcGx1Z2luLXNpdGUvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvc3JjL3NpdGUvYXB0L3VzYWdlLmFwdCBiL21hdmVuLWFyY2hldHlwZS1wbHVnaW4tc2l0ZS9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvc2l0ZS9hcHQvdXNhZ2UuYXB0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZWJkNmU4Li4wMDAwMDAwCi0tLSBhL21hdmVuLWFyY2hldHlwZS1wbHVnaW4tc2l0ZS9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvc2l0ZS9hcHQvdXNhZ2UuYXB0CisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotIC0tLS0tLQotIFVzYWdlCi0gLS0tLS0tCi0gSmFzb24gdmFuIFp5bAotIC0tLS0tLQotIDI3IE5vdmVtYmVyIDIwMDYKLSAtLS0tLS0KLQotVXNhZ2UKLQotIFRoaXMgcGx1Z2luIGlzIHVzZWQgdG8gY3JlYXRlIG1pcmFjdWxvdXNseSB0cmFuc2Zvcm0geW91ciBidWlsZCEKLSAKLSpIb3cgdG8gbWlyYWN1bG91c2x5IHRyYW5zZm9ybSB5b3VyIGJ1aWxkCi0gCi0gRGVzY3JpYmUgaGVyZSBob3cgeW91IG1pcmFjdWxvdXNseSB0cmFuc2Zvcm0gcGVvcGxlcycgYnVpbGRzISAKLQotLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1QdXQgeW91ciBhd2Vzb21lIGV4YW1wbGUgaGVyZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21hdmVuLWFyY2hldHlwZS1wbHVnaW4tc2l0ZS9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvc2l0ZS9zaXRlLnhtbCBiL21hdmVuLWFyY2hldHlwZS1wbHVnaW4tc2l0ZS9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvc2l0ZS9zaXRlLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjVlYzQ5My4uMDAwMDAwMAotLS0gYS9tYXZlbi1hcmNoZXR5cGUtcGx1Z2luLXNpdGUvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvc3JjL3NpdGUvc2l0ZS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJJU08tODg1OS0xIj8+Ci0KLTwhLS0KLS8qCi0gKiBDb3B5cmlnaHQgMjAwNiBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCi0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0tLT4KLQotPHByb2plY3Q+Ci0gIDxib2R5PgotICAgIDxtZW51IG5hbWU9Ik92ZXJ2aWV3Ij4KLSAgICAgIDxpdGVtIG5hbWU9IkludHJvZHVjdGlvbiIgaHJlZj0iaW5kZXguaHRtbCIvPgotICAgICAgPGl0ZW0gbmFtZT0iR29hbHMiIGhyZWY9InBsdWdpbi1pbmZvLmh0bWwiLz4KLSAgICAgIDxpdGVtIG5hbWU9IlVzYWdlIiBocmVmPSJ1c2FnZS5odG1sIi8+Ci0gICAgICA8aXRlbSBuYW1lPSJGQVEiIGhyZWY9ImZhcS5odG1sIi8+Ci0gICAgPC9tZW51PgotICAgIDxtZW51IG5hbWU9IlNhbXBsZXMiPgotICAgICAgPGl0ZW0gbmFtZT0iU2FtcGxlIENoYW5nZXMgUmVwb3J0IiBocmVmPSJjaGFuZ2VzLXJlcG9ydC5odG1sIi8+Ci0gICAgICA8aXRlbSBuYW1lPSJMaXZlIEpJUkEgUmVwb3J0IiBocmVmPSJqaXJhLXJlcG9ydC5odG1sIi8+Ci0gICAgPC9tZW51PgotCi0gICAgPG1lbnUgbmFtZT0iRXhhbXBsZXMiPgotICAgICAgPGl0ZW0gbmFtZT0iQWx0ZXJuYXRlIExvY2F0aW9uIGZvciB0aGUgY2hhbmdlcy54bWwgRmlsZSIgaHJlZj0iZXhhbXBsZXMvYWx0ZXJuYXRlLWNoYW5nZXMteG1sLWxvY2F0aW9uLmh0bWwiLz4KLSAgICAgIDxpdGVtIG5hbWU9IlNNVFAgQXV0aGVudGljYXRpb24iIGhyZWY9ImV4YW1wbGVzL3NtdHAtYXV0aGVudGljYXRpb24uaHRtbCIvPgotICAgIDwvbWVudT4KLSAgPC9ib2R5PgotPC9wcm9qZWN0PgpkaWZmIC0tZ2l0IGEvbWF2ZW4tYXJjaGV0eXBlLXBsdWdpbi9wb20ueG1sIGIvbWF2ZW4tYXJjaGV0eXBlLXBsdWdpbi9wb20ueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMGJjMDU4Li4wMDAwMDAwCi0tLSBhL21hdmVuLWFyY2hldHlwZS1wbHVnaW4vcG9tLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci0KLTwhLS0KLUxpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKLW9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQotZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KLXJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKLXRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKLSJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKLXdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLQotICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLQotVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAotc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KLSJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQotS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCi1zcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCi11bmRlciB0aGUgTGljZW5zZS4KLS0tPgotCi08cHJvamVjdCB4bWxucz0iaHR0cDovL21hdmVuLmFwYWNoZS5vcmcvUE9NLzQuMC4wIgotICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgotICB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL1BPTS80LjAuMCBodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9tYXZlbi12NF8wXzAueHNkIj4KLSAgPHBhcmVudD4KLSAgICA8YXJ0aWZhY3RJZD5tYXZlbi1hcmNoZXR5cGUtYnVuZGxlczwvYXJ0aWZhY3RJZD4KLSAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLm1hdmVuLmFyY2hldHlwZXM8L2dyb3VwSWQ+Ci0gICAgPHZlcnNpb24+My1TTkFQU0hPVDwvdmVyc2lvbj4KLSAgPC9wYXJlbnQ+Ci0gIDxtb2RlbFZlcnNpb24+NC4wLjA8L21vZGVsVmVyc2lvbj4KLSAgPGRlc2NyaXB0aW9uPgotICAgIEFuIGFyY2hldHlwZSB3aGljaCBjb250YWlucyBhIHNhbXBsZSBNYXZlbiBwbHVnaW4uCi0gIDwvZGVzY3JpcHRpb24+Ci0gIDxhcnRpZmFjdElkPm1hdmVuLWFyY2hldHlwZS1wbHVnaW48L2FydGlmYWN0SWQ+Ci0gIDxuYW1lPk1hdmVuIFBsdWdpbiBBcmNoZXR5cGU8L25hbWU+Ci0gIDx2ZXJzaW9uPjEuMS1TTkFQU0hPVDwvdmVyc2lvbj4KLTwvcHJvamVjdD4KZGlmZiAtLWdpdCBhL21hdmVuLWFyY2hldHlwZS1wbHVnaW4vc3JjL21haW4vcmVzb3VyY2VzL01FVEEtSU5GL2FyY2hldHlwZS54bWwgYi9tYXZlbi1hcmNoZXR5cGUtcGx1Z2luL3NyYy9tYWluL3Jlc291cmNlcy9NRVRBLUlORi9hcmNoZXR5cGUueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOWI5OGIyLi4wMDAwMDAwCi0tLSBhL21hdmVuLWFyY2hldHlwZS1wbHVnaW4vc3JjL21haW4vcmVzb3VyY2VzL01FVEEtSU5GL2FyY2hldHlwZS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLTxhcmNoZXR5cGU+Ci0gIDxpZD5wbHVnaW48L2lkPgotICA8c291cmNlcz4KLSAgICA8c291cmNlPnNyYy9tYWluL2phdmEvTXlNb2pvLmphdmE8L3NvdXJjZT4KLSAgPC9zb3VyY2VzPgotPC9hcmNoZXR5cGU+CmRpZmYgLS1naXQgYS9tYXZlbi1hcmNoZXR5cGUtcGx1Z2luL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3BvbS54bWwgYi9tYXZlbi1hcmNoZXR5cGUtcGx1Z2luL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3BvbS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmNjAyN2MuLjAwMDAwMDAKLS0tIGEvbWF2ZW4tYXJjaGV0eXBlLXBsdWdpbi9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9wb20ueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotPHByb2plY3QgeG1sbnM9Imh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL1BPTS80LjAuMCIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKLSAgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9QT00vNC4wLjAgaHR0cDovL21hdmVuLmFwYWNoZS5vcmcvbWF2ZW4tdjRfMF8wLnhzZCI+Ci0gIDxtb2RlbFZlcnNpb24+NC4wLjA8L21vZGVsVmVyc2lvbj4KLSAgPGdyb3VwSWQ+JHtncm91cElkfTwvZ3JvdXBJZD4KLSAgPGFydGlmYWN0SWQ+JHthcnRpZmFjdElkfTwvYXJ0aWZhY3RJZD4KLSAgPHBhY2thZ2luZz5tYXZlbi1wbHVnaW48L3BhY2thZ2luZz4KLSAgPHZlcnNpb24+JHt2ZXJzaW9ufTwvdmVyc2lvbj4KLSAgPG5hbWU+JHthcnRpZmFjdElkfSBNYXZlbiBNb2pvPC9uYW1lPgotICA8dXJsPmh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnPC91cmw+Ci0gIDxkZXBlbmRlbmNpZXM+Ci0gICAgPGRlcGVuZGVuY3k+Ci0gICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLm1hdmVuPC9ncm91cElkPgotICAgICAgPGFydGlmYWN0SWQ+bWF2ZW4tcGx1Z2luLWFwaTwvYXJ0aWZhY3RJZD4KLSAgICAgIDx2ZXJzaW9uPjIuMDwvdmVyc2lvbj4KLSAgICA8L2RlcGVuZGVuY3k+Ci0gICAgPGRlcGVuZGVuY3k+Ci0gICAgICA8Z3JvdXBJZD5qdW5pdDwvZ3JvdXBJZD4KLSAgICAgIDxhcnRpZmFjdElkPmp1bml0PC9hcnRpZmFjdElkPgotICAgICAgPHZlcnNpb24+My44LjE8L3ZlcnNpb24+Ci0gICAgICA8c2NvcGU+dGVzdDwvc2NvcGU+Ci0gICAgPC9kZXBlbmRlbmN5PgotICA8L2RlcGVuZGVuY2llcz4KLTwvcHJvamVjdD4KZGlmZiAtLWdpdCBhL21hdmVuLWFyY2hldHlwZS1wbHVnaW4vc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvc3JjL21haW4vamF2YS9NeU1vam8uamF2YSBiL21hdmVuLWFyY2hldHlwZS1wbHVnaW4vc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvc3JjL21haW4vamF2YS9NeU1vam8uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTQ3NmVmYy4uMDAwMDAwMAotLS0gYS9tYXZlbi1hcmNoZXR5cGUtcGx1Z2luL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy9tYWluL2phdmEvTXlNb2pvLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi1wYWNrYWdlICRwYWNrYWdlOwotCi0vKgotICogQ29weXJpZ2h0IDIwMDEtMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCi0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLWltcG9ydCBvcmcuYXBhY2hlLm1hdmVuLnBsdWdpbi5BYnN0cmFjdE1vam87Ci1pbXBvcnQgb3JnLmFwYWNoZS5tYXZlbi5wbHVnaW4uTW9qb0V4ZWN1dGlvbkV4Y2VwdGlvbjsKLQotaW1wb3J0IGphdmEuaW8uRmlsZTsKLWltcG9ydCBqYXZhLmlvLkZpbGVXcml0ZXI7Ci1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKLQotLyoqCi0gKiBHb2FsIHdoaWNoIHRvdWNoZXMgYSB0aW1lc3RhbXAgZmlsZS4KLSAqCi0gKiBAZ29hbCB0b3VjaAotICogCi0gKiBAcGhhc2UgcHJvY2Vzcy1zb3VyY2VzCi0gKi8KLXB1YmxpYyBjbGFzcyBNeU1vam8KLSAgICBleHRlbmRzIEFic3RyYWN0TW9qbwotewotICAgIC8qKgotICAgICAqIExvY2F0aW9uIG9mIHRoZSBmaWxlLgotICAgICAqIEBwYXJhbWV0ZXIgZXhwcmVzc2lvbj0iJHtwcm9qZWN0LmJ1aWxkLmRpcmVjdG9yeX0iCi0gICAgICogQHJlcXVpcmVkCi0gICAgICovCi0gICAgcHJpdmF0ZSBGaWxlIG91dHB1dERpcmVjdG9yeTsKLQotICAgIHB1YmxpYyB2b2lkIGV4ZWN1dGUoKQotICAgICAgICB0aHJvd3MgTW9qb0V4ZWN1dGlvbkV4Y2VwdGlvbgotICAgIHsKLSAgICAgICAgRmlsZSBmID0gb3V0cHV0RGlyZWN0b3J5OwotCi0gICAgICAgIGlmICggIWYuZXhpc3RzKCkgKQotICAgICAgICB7Ci0gICAgICAgICAgICBmLm1rZGlycygpOwotICAgICAgICB9Ci0KLSAgICAgICAgRmlsZSB0b3VjaCA9IG5ldyBGaWxlKCBmLCAidG91Y2gudHh0IiApOwotCi0gICAgICAgIEZpbGVXcml0ZXIgdyA9IG51bGw7Ci0gICAgICAgIHRyeQotICAgICAgICB7Ci0gICAgICAgICAgICB3ID0gbmV3IEZpbGVXcml0ZXIoIHRvdWNoICk7Ci0KLSAgICAgICAgICAgIHcud3JpdGUoICJ0b3VjaC50eHQiICk7Ci0gICAgICAgIH0KLSAgICAgICAgY2F0Y2ggKCBJT0V4Y2VwdGlvbiBlICkKLSAgICAgICAgewotICAgICAgICAgICAgdGhyb3cgbmV3IE1vam9FeGVjdXRpb25FeGNlcHRpb24oICJFcnJvciBjcmVhdGluZyBmaWxlICIgKyB0b3VjaCwgZSApOwotICAgICAgICB9Ci0gICAgICAgIGZpbmFsbHkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCB3ICE9IG51bGwgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHRyeQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgdy5jbG9zZSgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBjYXRjaCAoIElPRXhjZXB0aW9uIGUgKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gaWdub3JlCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvbWF2ZW4tYXJjaGV0eXBlLXBvcnRsZXQvcG9tLnhtbCBiL21hdmVuLWFyY2hldHlwZS1wb3J0bGV0L3BvbS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkMjBjODEuLjAwMDAwMDAKLS0tIGEvbWF2ZW4tYXJjaGV0eXBlLXBvcnRsZXQvcG9tLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci0KLTwhLS0KLUxpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKLW9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQotZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KLXJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKLXRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKLSJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKLXdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLQotICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLQotVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAotc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KLSJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQotS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCi1zcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCi11bmRlciB0aGUgTGljZW5zZS4KLS0tPgotCi08cHJvamVjdCB4bWxucz0iaHR0cDovL21hdmVuLmFwYWNoZS5vcmcvUE9NLzQuMC4wIgotICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgotICB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL1BPTS80LjAuMCBodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9tYXZlbi12NF8wXzAueHNkIj4KLSAgPHBhcmVudD4KLSAgICA8YXJ0aWZhY3RJZD5tYXZlbi1hcmNoZXR5cGUtYnVuZGxlczwvYXJ0aWZhY3RJZD4KLSAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLm1hdmVuLmFyY2hldHlwZXM8L2dyb3VwSWQ+Ci0gICAgPHZlcnNpb24+My1TTkFQU0hPVDwvdmVyc2lvbj4KLSAgPC9wYXJlbnQ+Ci0gIDxtb2RlbFZlcnNpb24+NC4wLjA8L21vZGVsVmVyc2lvbj4KLSAgPGRlc2NyaXB0aW9uPgotICAgIEFuIGFyY2hldHlwZSB3aGljaCBjb250YWlucyBhIHNhbXBsZSBKU1ItMjY4IFBvcnRsZXQuCi0gIDwvZGVzY3JpcHRpb24+Ci0gIDxhcnRpZmFjdElkPm1hdmVuLWFyY2hldHlwZS1wb3J0bGV0PC9hcnRpZmFjdElkPgotICA8bmFtZT5NYXZlbiBQb3J0bGV0IEFyY2hldHlwZTwvbmFtZT4KLSAgPHZlcnNpb24+MS4wLjEtU05BUFNIT1Q8L3ZlcnNpb24+Ci08L3Byb2plY3Q+CmRpZmYgLS1naXQgYS9tYXZlbi1hcmNoZXR5cGUtcG9ydGxldC9zcmMvbWFpbi9yZXNvdXJjZXMvTUVUQS1JTkYvYXJjaGV0eXBlLnhtbCBiL21hdmVuLWFyY2hldHlwZS1wb3J0bGV0L3NyYy9tYWluL3Jlc291cmNlcy9NRVRBLUlORi9hcmNoZXR5cGUueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNWM3ZGZmLi4wMDAwMDAwCi0tLSBhL21hdmVuLWFyY2hldHlwZS1wb3J0bGV0L3NyYy9tYWluL3Jlc291cmNlcy9NRVRBLUlORi9hcmNoZXR5cGUueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotPGFyY2hldHlwZT4KLSAgPGlkPndlYmFwcDwvaWQ+Ci0gIDxzb3VyY2VzPgotICAgIDxzb3VyY2U+c3JjL21haW4vamF2YS9NeVBvcnRsZXQuamF2YTwvc291cmNlPgotICA8L3NvdXJjZXM+Ci0gIDxyZXNvdXJjZXM+Ci0gICAgPHJlc291cmNlPnNyYy9tYWluL2pldHNwZWVkL3dlYi54bWw8L3Jlc291cmNlPgotICAgIDxyZXNvdXJjZT5zcmMvbWFpbi93ZWJhcHAvbm9ybWFsLmpzcDwvcmVzb3VyY2U+Ci0gICAgPHJlc291cmNlPnNyYy9tYWluL3dlYmFwcC9tYXhpbWl6ZWQuanNwPC9yZXNvdXJjZT4KLSAgICA8cmVzb3VyY2U+c3JjL21haW4vd2ViYXBwL2hlbHAuanNwPC9yZXNvdXJjZT4KLSAgICA8cmVzb3VyY2U+c3JjL21haW4vd2ViYXBwL1dFQi1JTkYvd2ViLnhtbDwvcmVzb3VyY2U+Ci0gICAgPHJlc291cmNlPnNyYy9tYWluL3dlYmFwcC9XRUItSU5GL3BvcnRsZXQueG1sPC9yZXNvdXJjZT4KLSAgICA8cmVzb3VyY2UgZmlsdGVyZWQ9ImZhbHNlIj5zcmMvbWFpbi93ZWJhcHAvV0VCLUlORi90bGQvcG9ydGxldC50bGQ8L3Jlc291cmNlPgotICA8L3Jlc291cmNlcz4KLTwvYXJjaGV0eXBlPgpkaWZmIC0tZ2l0IGEvbWF2ZW4tYXJjaGV0eXBlLXBvcnRsZXQvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvcG9tLnhtbCBiL21hdmVuLWFyY2hldHlwZS1wb3J0bGV0L3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3BvbS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyZjcwNjcuLjAwMDAwMDAKLS0tIGEvbWF2ZW4tYXJjaGV0eXBlLXBvcnRsZXQvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvcG9tLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLTxwcm9qZWN0IHhtbG5zPSJodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9QT00vNC4wLjAiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiCi0gIHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL21hdmVuLmFwYWNoZS5vcmcvUE9NLzQuMC4wIGh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL21hdmVuLXY0XzBfMC54c2QiPgotICA8bW9kZWxWZXJzaW9uPjQuMC4wPC9tb2RlbFZlcnNpb24+Ci0gIDxncm91cElkPiR7Z3JvdXBJZH08L2dyb3VwSWQ+Ci0gIDxhcnRpZmFjdElkPiR7YXJ0aWZhY3RJZH08L2FydGlmYWN0SWQ+Ci0gIDxwYWNrYWdpbmc+d2FyPC9wYWNrYWdpbmc+Ci0gIDx2ZXJzaW9uPiR7dmVyc2lvbn08L3ZlcnNpb24+Ci0gIDxuYW1lPk1hdmVuIFBvcnRsZXQgQXJjaGV0eXBlPC9uYW1lPgotICA8dXJsPmh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnPC91cmw+Ci0gIDxwcm9maWxlcz4KLSAgICAgIDxwcm9maWxlPgotICAgICAgICAgIDxpZD5qZXRzcGVlZDwvaWQ+Ci0gICAgICAgICAgPGJ1aWxkPgotICAgICAgICAgICAgICA8cGx1Z2lucz4KLSAgICAgICAgICAgICAgICAgIDxwbHVnaW4+Ci0gICAgICAgICAgICAgICAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS5tYXZlbi5wbHVnaW5zPC9ncm91cElkPgotICAgICAgICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPm1hdmVuLXdhci1wbHVnaW48L2FydGlmYWN0SWQ+Ci0gICAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+Mi4wLWJldGEtMjwvdmVyc2lvbj4KLSAgICAgICAgICAgICAgICAgICAgICA8Y29uZmlndXJhdGlvbj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgPHdlYlhtbD5zcmMvbWFpbi9qZXRzcGVlZC93ZWIueG1sPC93ZWJYbWw+Ci0gICAgICAgICAgICAgICAgICAgICAgPC9jb25maWd1cmF0aW9uPgotICAgICAgICAgICAgICAgICAgPC9wbHVnaW4+Ci0gICAgICAgICAgICAgIDwvcGx1Z2lucz4KLSAgICAgICAgICA8L2J1aWxkPgotICAgICAgPC9wcm9maWxlPgotICA8L3Byb2ZpbGVzPgotICA8ZGVwZW5kZW5jaWVzPgotICAgICAgPGRlcGVuZGVuY3k+Ci0gICAgICAgICAgPGdyb3VwSWQ+cG9ydGxldC1hcGk8L2dyb3VwSWQ+Ci0gICAgICAgICAgPGFydGlmYWN0SWQ+cG9ydGxldC1hcGk8L2FydGlmYWN0SWQ+Ci0gICAgICAgICAgPHZlcnNpb24+MS4wPC92ZXJzaW9uPgotICAgICAgICAgIDxzY29wZT5wcm92aWRlZDwvc2NvcGU+Ci0gICAgICA8L2RlcGVuZGVuY3k+Ci0gICAgICA8ZGVwZW5kZW5jeT4KLSAgICAgICAgICA8Z3JvdXBJZD5qc3RsPC9ncm91cElkPgotICAgICAgICAgIDxhcnRpZmFjdElkPmpzdGw8L2FydGlmYWN0SWQ+Ci0gICAgICAgICAgPHZlcnNpb24+MS4wLjI8L3ZlcnNpb24+Ci0gICAgICA8L2RlcGVuZGVuY3k+Ci0gICAgICA8ZGVwZW5kZW5jeT4KLSAgICAgICAgICA8Z3JvdXBJZD50YWdsaWJzPC9ncm91cElkPgotICAgICAgICAgIDxhcnRpZmFjdElkPnN0YW5kYXJkPC9hcnRpZmFjdElkPgotICAgICAgICAgIDx2ZXJzaW9uPjEuMC40PC92ZXJzaW9uPgotICAgICAgPC9kZXBlbmRlbmN5PgotICA8L2RlcGVuZGVuY2llcz4KLTwvcHJvamVjdD4KZGlmZiAtLWdpdCBhL21hdmVuLWFyY2hldHlwZS1wb3J0bGV0L3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy9tYWluL2phdmEvTXlQb3J0bGV0LmphdmEgYi9tYXZlbi1hcmNoZXR5cGUtcG9ydGxldC9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvbWFpbi9qYXZhL015UG9ydGxldC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOGI0M2VlLi4wMDAwMDAwCi0tLSBhL21hdmVuLWFyY2hldHlwZS1wb3J0bGV0L3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy9tYWluL2phdmEvTXlQb3J0bGV0LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi1wYWNrYWdlICRwYWNrYWdlOwotCi0vKgotICogQ29weXJpZ2h0IDIwMDEtMjAwNSBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24uCi0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotaW1wb3J0IGphdmF4LnBvcnRsZXQuUG9ydGxldENvbmZpZzsKLWltcG9ydCBqYXZheC5wb3J0bGV0LkdlbmVyaWNQb3J0bGV0OwotaW1wb3J0IGphdmF4LnBvcnRsZXQuUG9ydGxldEV4Y2VwdGlvbjsKLWltcG9ydCBqYXZheC5wb3J0bGV0LlBvcnRsZXRSZXF1ZXN0RGlzcGF0Y2hlcjsKLWltcG9ydCBqYXZheC5wb3J0bGV0LlJlbmRlclJlcXVlc3Q7Ci1pbXBvcnQgamF2YXgucG9ydGxldC5SZW5kZXJSZXNwb25zZTsKLWltcG9ydCBqYXZheC5wb3J0bGV0LldpbmRvd1N0YXRlOwotCi1wdWJsaWMgY2xhc3MgTXlQb3J0bGV0IGV4dGVuZHMgR2VuZXJpY1BvcnRsZXQgewotCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIE5PUk1BTF9WSUVXID0gIi9ub3JtYWwuanNwIjsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgTUFYSU1JWkVEX1ZJRVcgPSAiL21heGltaXplZC5qc3AiOwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBIRUxQX1ZJRVcgPSAiL2hlbHAuanNwIjsKLQotICAgIHByaXZhdGUgUG9ydGxldFJlcXVlc3REaXNwYXRjaGVyIG5vcm1hbFZpZXc7Ci0gICAgcHJpdmF0ZSBQb3J0bGV0UmVxdWVzdERpc3BhdGNoZXIgbWF4aW1pemVkVmlldzsKLSAgICBwcml2YXRlIFBvcnRsZXRSZXF1ZXN0RGlzcGF0Y2hlciBoZWxwVmlldzsKLQotICAgIHB1YmxpYyB2b2lkIGRvVmlldyggUmVuZGVyUmVxdWVzdCByZXF1ZXN0LCBSZW5kZXJSZXNwb25zZSByZXNwb25zZSApCi0gICAgICAgIHRocm93cyBQb3J0bGV0RXhjZXB0aW9uLCBJT0V4Y2VwdGlvbiB7Ci0KLSAgICAgICAgaWYoIFdpbmRvd1N0YXRlLk1JTklNSVpFRC5lcXVhbHMoIHJlcXVlc3QuZ2V0V2luZG93U3RhdGUoKSApICkgewotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCBXaW5kb3dTdGF0ZS5OT1JNQUwuZXF1YWxzKCByZXF1ZXN0LmdldFdpbmRvd1N0YXRlKCkgKSApIHsKLSAgICAgICAgICAgIG5vcm1hbFZpZXcuaW5jbHVkZSggcmVxdWVzdCwgcmVzcG9uc2UgKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1heGltaXplZFZpZXcuaW5jbHVkZSggcmVxdWVzdCwgcmVzcG9uc2UgKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHByb3RlY3RlZCB2b2lkIGRvSGVscCggUmVuZGVyUmVxdWVzdCByZXF1ZXN0LCBSZW5kZXJSZXNwb25zZSByZXNwb25zZSApCi0gICAgICAgIHRocm93cyBQb3J0bGV0RXhjZXB0aW9uLCBJT0V4Y2VwdGlvbiB7Ci0KLSAgICAgICAgaGVscFZpZXcuaW5jbHVkZSggcmVxdWVzdCwgcmVzcG9uc2UgKTsKLQotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIGluaXQoIFBvcnRsZXRDb25maWcgY29uZmlnICkgdGhyb3dzIFBvcnRsZXRFeGNlcHRpb24gewotICAgICAgICBzdXBlci5pbml0KCBjb25maWcgKTsKLSAgICAgICAgbm9ybWFsVmlldyA9IGNvbmZpZy5nZXRQb3J0bGV0Q29udGV4dCgpLmdldFJlcXVlc3REaXNwYXRjaGVyKCBOT1JNQUxfVklFVyApOwotICAgICAgICBtYXhpbWl6ZWRWaWV3ID0gY29uZmlnLmdldFBvcnRsZXRDb250ZXh0KCkuZ2V0UmVxdWVzdERpc3BhdGNoZXIoIE1BWElNSVpFRF9WSUVXICk7Ci0gICAgICAgIGhlbHBWaWV3ID0gY29uZmlnLmdldFBvcnRsZXRDb250ZXh0KCkuZ2V0UmVxdWVzdERpc3BhdGNoZXIoIEhFTFBfVklFVyApOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIGRlc3Ryb3koKSB7Ci0gICAgICAgIG5vcm1hbFZpZXcgPSBudWxsOwotICAgICAgICBtYXhpbWl6ZWRWaWV3ID0gbnVsbDsKLSAgICAgICAgaGVscFZpZXcgPSBudWxsOwotICAgICAgICBzdXBlci5kZXN0cm95KCk7Ci0gICAgfQotCi19CmRpZmYgLS1naXQgYS9tYXZlbi1hcmNoZXR5cGUtcG9ydGxldC9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvbWFpbi9qZXRzcGVlZC93ZWIueG1sIGIvbWF2ZW4tYXJjaGV0eXBlLXBvcnRsZXQvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvc3JjL21haW4vamV0c3BlZWQvd2ViLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2EzYjdhNi4uMDAwMDAwMAotLS0gYS9tYXZlbi1hcmNoZXR5cGUtcG9ydGxldC9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvbWFpbi9qZXRzcGVlZC93ZWIueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLQotPCFET0NUWVBFIHdlYi1hcHAgUFVCTElDICItLy9TdW4gTWljcm9zeXN0ZW1zLCBJbmMuLy9EVEQgV2ViIEFwcGxpY2F0aW9uIDIuMy8vRU4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgImh0dHA6Ly9qYXZhLnN1bi5jb20vZHRkL3dlYi1hcHBfMl8zLmR0ZCI+Ci08d2ViLWFwcD4KLSAgICA8ZGlzcGxheS1uYW1lPiR7YXJ0aWZhY3RJZH0gV3JhcHBlcjwvZGlzcGxheS1uYW1lPgotCi0gICAgPGRlc2NyaXB0aW9uPkdlbmVyYXRlZCBQb3J0bGV0IFdyYXBwZXI8L2Rlc2NyaXB0aW9uPgotCi0gICAgPHNlcnZsZXQ+Ci0gICAgICAgIDxzZXJ2bGV0LW5hbWU+JHthcnRpZmFjdElkfTwvc2VydmxldC1uYW1lPgotICAgICAgICA8ZGlzcGxheS1uYW1lPiR7YXJ0aWZhY3RJZH0gUG9ydGxldDwvZGlzcGxheS1uYW1lPgotICAgICAgICA8ZGVzY3JpcHRpb24+UG9ydGxldCBmb3IgSmV0c3BlZWQgRnVzaW9uPC9kZXNjcmlwdGlvbj4KLSAgICAgICAgPHNlcnZsZXQtY2xhc3M+b3JnLmFwYWNoZS5qZXRzcGVlZC5jb250YWluZXIuSmV0c3BlZWRDb250YWluZXJTZXJ2bGV0PC9zZXJ2bGV0LWNsYXNzPgotCi0gICAgICAgIDxpbml0LXBhcmFtPgotICAgICAgICAgICAgPHBhcmFtLW5hbWU+cmVnaXN0ZXJBdEluaXQ8L3BhcmFtLW5hbWU+Ci0gICAgICAgICAgICA8cGFyYW0tdmFsdWU+MTwvcGFyYW0tdmFsdWU+Ci0gICAgICAgIDwvaW5pdC1wYXJhbT4KLQotICAgICAgICA8aW5pdC1wYXJhbT4KLSAgICAgICAgICAgIDxwYXJhbS1uYW1lPnBvcnRsZXRBcHBsaWNhdGlvbjwvcGFyYW0tbmFtZT4KLSAgICAgICAgICAgIDxwYXJhbS12YWx1ZT4ke2FydGlmYWN0SWR9PC9wYXJhbS12YWx1ZT4KLSAgICAgICAgPC9pbml0LXBhcmFtPgotICAgIDwvc2VydmxldD4KLQotICAgIDxzZXJ2bGV0LW1hcHBpbmc+Ci0gICAgICAgIDxzZXJ2bGV0LW5hbWU+SmV0c3BlZWRDb250YWluZXI8L3NlcnZsZXQtbmFtZT4KLSAgICAgICAgPHVybC1wYXR0ZXJuPi9jb250YWluZXIvKjwvdXJsLXBhdHRlcm4+Ci0gICAgPC9zZXJ2bGV0LW1hcHBpbmc+Ci0KLSAgICA8dGFnbGliPgotICAgICAgICA8dGFnbGliLXVyaT5odHRwOi8vamF2YS5zdW4uY29tL3BvcnRsZXQ8L3RhZ2xpYi11cmk+Ci0gICAgICAgIDx0YWdsaWItbG9jYXRpb24+L1dFQi1JTkYvdGxkL3BvcnRsZXQudGxkPC90YWdsaWItbG9jYXRpb24+Ci0gICAgPC90YWdsaWI+Ci08L3dlYi1hcHA+CmRpZmYgLS1naXQgYS9tYXZlbi1hcmNoZXR5cGUtcG9ydGxldC9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvbWFpbi93ZWJhcHAvV0VCLUlORi9wb3J0bGV0LnhtbCBiL21hdmVuLWFyY2hldHlwZS1wb3J0bGV0L3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy9tYWluL3dlYmFwcC9XRUItSU5GL3BvcnRsZXQueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYzYzOWMyLi4wMDAwMDAwCi0tLSBhL21hdmVuLWFyY2hldHlwZS1wb3J0bGV0L3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy9tYWluL3dlYmFwcC9XRUItSU5GL3BvcnRsZXQueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLQotPHBvcnRsZXQtYXBwCi0gICAgeG1sbnM9Imh0dHA6Ly9qYXZhLnN1bi5jb20veG1sL25zL3BvcnRsZXQvcG9ydGxldC1hcHBfMV8wLnhzZCIKLSAgICB2ZXJzaW9uPSIxLjAiCi0gICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKLSAgICB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly9qYXZhLnN1bi5jb20veG1sL25zL3BvcnRsZXQvcG9ydGxldC1hcHBfMV8wLnhzZAotICAgICAgICAgICAgICAgICAgICAgICAgaHR0cDovL2phdmEuc3VuLmNvbS94bWwvbnMvcG9ydGxldC9wb3J0bGV0LWFwcF8xXzAueHNkIj4KLQotICAgIDxwb3J0bGV0PgotICAgICAgICA8ZGVzY3JpcHRpb24+V3JpdGUgaGVyZSBhIHNob3J0IGRlc2NyaXB0aW9uIGFib3V0IHlvdXIgcG9ydGxldC48L2Rlc2NyaXB0aW9uPgotICAgICAgICA8cG9ydGxldC1uYW1lPiR7YXJ0aWZhY3RJZH08L3BvcnRsZXQtbmFtZT4KLSAgICAgICAgPGRpc3BsYXktbmFtZT4ke2FydGlmYWN0SWR9IFBvcnRsZXQ8L2Rpc3BsYXktbmFtZT4KLQotICAgICAgICA8cG9ydGxldC1jbGFzcz4ke2dyb3VwSWR9LiR7YXJ0aWZhY3RJZH08L3BvcnRsZXQtY2xhc3M+Ci0KLSAgICAgICAgPHN1cHBvcnRzPgotICAgICAgICAgICAgPG1pbWUtdHlwZT50ZXh0L2h0bWw8L21pbWUtdHlwZT4KLSAgICAgICAgICAgIDxwb3J0bGV0LW1vZGU+VklFVzwvcG9ydGxldC1tb2RlPgotICAgICAgICA8L3N1cHBvcnRzPgotCi0gICAgICAgIDxzdXBwb3J0ZWQtbG9jYWxlPmVuPC9zdXBwb3J0ZWQtbG9jYWxlPgotCi0gICAgICAgIDxwb3J0bGV0LWluZm8+Ci0gICAgICAgICAgICA8dGl0bGU+UHV0IHRoZSBwb3J0bGV0IHRpdGxlIGhlcmU8L3RpdGxlPgotICAgICAgICAgICAgPHNob3J0LXRpdGxlPlBvcnRsZXQgU2hvcnQgVGl0bGU8L3Nob3J0LXRpdGxlPgotICAgICAgICAgICAgPGtleXdvcmRzPnB1dCBrZXl3b3JkcyBoZXJlPC9rZXl3b3Jkcz4KLSAgICAgICAgPC9wb3J0bGV0LWluZm8+Ci0gICAgPC9wb3J0bGV0PgotPC9wb3J0bGV0LWFwcD4KZGlmZiAtLWdpdCBhL21hdmVuLWFyY2hldHlwZS1wb3J0bGV0L3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy9tYWluL3dlYmFwcC9XRUItSU5GL3RsZC9wb3J0bGV0LnRsZCBiL21hdmVuLWFyY2hldHlwZS1wb3J0bGV0L3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy9tYWluL3dlYmFwcC9XRUItSU5GL3RsZC9wb3J0bGV0LnRsZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjRhZjhlYS4uMDAwMDAwMAotLS0gYS9tYXZlbi1hcmNoZXR5cGUtcG9ydGxldC9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvbWFpbi93ZWJhcHAvV0VCLUlORi90bGQvcG9ydGxldC50bGQKKysrIC9kZXYvbnVsbApAQCAtMSwxMDQgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSIgPz4KLTwhRE9DVFlQRSB0YWdsaWIgUFVCTElDCi0gICItLy9TdW4gTWljcm9zeXN0ZW1zLCBJbmMuLy9EVEQgSlNQIFRhZyBMaWJyYXJ5IDEuMS8vRU4iCi0gICJodHRwOi8vamF2YS5zdW4uY29tL2oyZWUvZHRkcy93ZWItanNwdGFnbGlicmFyeV8xXzEuZHRkIj4KLTwhLS0gCi1Db3B5cmlnaHQgMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KLUxpY2Vuc2VkICB1bmRlciB0aGUgIEFwYWNoZSBMaWNlbnNlLCAgVmVyc2lvbiAyLjAgICh0aGUgIkxpY2Vuc2UiKTsKLXlvdSBtYXkgbm90IHVzZSAgdGhpcyBmaWxlICBleGNlcHQgaW4gIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLVlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdCAKLQotaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0KLVVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLWRpc3RyaWJ1dGVkICB1bmRlciB0aGUgIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLVdJVEhPVVQgIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyAgT0YgQU5ZIEtJTkQsIGVpdGhlciAgZXhwcmVzcyAgb3IKLWltcGxpZWQuCi0KLVNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLWxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotLS0+Ci08dGFnbGliPgotICAgIDx0bGlidmVyc2lvbj4xLjA8L3RsaWJ2ZXJzaW9uPgotICAgIDxqc3B2ZXJzaW9uPjEuMTwvanNwdmVyc2lvbj4KLSAgICA8c2hvcnRuYW1lPnBvcnRsZXQ8L3Nob3J0bmFtZT4KLSAgICA8dXJpPmh0dHA6Ly9qYXZhLnN1bi5jb20vcG9ydGxldDwvdXJpPgotICAgIDx0YWc+Ci0gICAgICAgIDxuYW1lPmRlZmluZU9iamVjdHM8L25hbWU+Ci0gICAgICAgIDx0YWdjbGFzcz5vcmcuYXBhY2hlLnBsdXRvLnRhZ3MuRGVmaW5lT2JqZWN0c1RhZzwvdGFnY2xhc3M+Ci0gICAgICAgIDx0ZWljbGFzcz5vcmcuYXBhY2hlLnBsdXRvLnRhZ3MuRGVmaW5lT2JqZWN0c1RhZyRURUk8L3RlaWNsYXNzPgotICAgICAgICA8Ym9keWNvbnRlbnQ+ZW1wdHk8L2JvZHljb250ZW50PgotICAgIDwvdGFnPgotICAgIDx0YWc+Ci0gICAgICAgIDxuYW1lPnBhcmFtPC9uYW1lPgotICAgICAgICA8dGFnY2xhc3M+b3JnLmFwYWNoZS5wbHV0by50YWdzLlBhcmFtVGFnPC90YWdjbGFzcz4KLSAgICAgICAgPGJvZHljb250ZW50PmVtcHR5PC9ib2R5Y29udGVudD4KLSAgICAgICAgPGF0dHJpYnV0ZT4KLSAgICAgICAgICAgIDxuYW1lPm5hbWU8L25hbWU+Ci0gICAgICAgICAgICA8cmVxdWlyZWQ+dHJ1ZTwvcmVxdWlyZWQ+Ci0gICAgICAgICAgICA8cnRleHBydmFsdWU+dHJ1ZTwvcnRleHBydmFsdWU+Ci0gICAgICAgIDwvYXR0cmlidXRlPgotICAgICAgICA8YXR0cmlidXRlPgotICAgICAgICAgICAgPG5hbWU+dmFsdWU8L25hbWU+Ci0gICAgICAgICAgICA8cmVxdWlyZWQ+dHJ1ZTwvcmVxdWlyZWQ+Ci0gICAgICAgICAgICA8cnRleHBydmFsdWU+dHJ1ZTwvcnRleHBydmFsdWU+Ci0gICAgICAgIDwvYXR0cmlidXRlPgotICAgIDwvdGFnPgotICAgIDx0YWc+Ci0gICAgICAgIDxuYW1lPmFjdGlvblVSTDwvbmFtZT4KLSAgICAgICAgPHRhZ2NsYXNzPm9yZy5hcGFjaGUucGx1dG8udGFncy5BY3Rpb25VUkxUYWc8L3RhZ2NsYXNzPgotICAgICAgICA8dGVpY2xhc3M+b3JnLmFwYWNoZS5wbHV0by50YWdzLkJhc2ljVVJMVGFnJFRFSTwvdGVpY2xhc3M+Ci0gICAgICAgIDxib2R5Y29udGVudD5KU1A8L2JvZHljb250ZW50PgotICAgICAgICA8YXR0cmlidXRlPgotICAgICAgICAgICAgPG5hbWU+d2luZG93U3RhdGU8L25hbWU+Ci0gICAgICAgICAgICA8cmVxdWlyZWQ+ZmFsc2U8L3JlcXVpcmVkPgotICAgICAgICAgICAgPHJ0ZXhwcnZhbHVlPnRydWU8L3J0ZXhwcnZhbHVlPgotICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgPGF0dHJpYnV0ZT4KLSAgICAgICAgICAgIDxuYW1lPnBvcnRsZXRNb2RlPC9uYW1lPgotICAgICAgICAgICAgPHJlcXVpcmVkPmZhbHNlPC9yZXF1aXJlZD4KLSAgICAgICAgICAgIDxydGV4cHJ2YWx1ZT50cnVlPC9ydGV4cHJ2YWx1ZT4KLSAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICAgIDxhdHRyaWJ1dGU+Ci0gICAgICAgICAgICA8bmFtZT5zZWN1cmU8L25hbWU+Ci0gICAgICAgICAgICA8cmVxdWlyZWQ+ZmFsc2U8L3JlcXVpcmVkPgotICAgICAgICAgICAgPHJ0ZXhwcnZhbHVlPnRydWU8L3J0ZXhwcnZhbHVlPgotICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgPGF0dHJpYnV0ZT4KLSAgICAgICAgICAgIDxuYW1lPnZhcjwvbmFtZT4KLSAgICAgICAgICAgIDxyZXF1aXJlZD5mYWxzZTwvcmVxdWlyZWQ+Ci0gICAgICAgICAgICA8cnRleHBydmFsdWU+dHJ1ZTwvcnRleHBydmFsdWU+Ci0gICAgICAgIDwvYXR0cmlidXRlPgotICAgIDwvdGFnPgotICAgIDx0YWc+Ci0gICAgICAgIDxuYW1lPnJlbmRlclVSTDwvbmFtZT4KLSAgICAgICAgPHRhZ2NsYXNzPm9yZy5hcGFjaGUucGx1dG8udGFncy5SZW5kZXJVUkxUYWc8L3RhZ2NsYXNzPgotICAgICAgICA8dGVpY2xhc3M+b3JnLmFwYWNoZS5wbHV0by50YWdzLkJhc2ljVVJMVGFnJFRFSTwvdGVpY2xhc3M+Ci0gICAgICAgIDxib2R5Y29udGVudD5KU1A8L2JvZHljb250ZW50PgotICAgICAgICA8YXR0cmlidXRlPgotICAgICAgICAgICAgPG5hbWU+d2luZG93U3RhdGU8L25hbWU+Ci0gICAgICAgICAgICA8cmVxdWlyZWQ+ZmFsc2U8L3JlcXVpcmVkPgotICAgICAgICAgICAgPHJ0ZXhwcnZhbHVlPnRydWU8L3J0ZXhwcnZhbHVlPgotICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgPGF0dHJpYnV0ZT4KLSAgICAgICAgICAgIDxuYW1lPnBvcnRsZXRNb2RlPC9uYW1lPgotICAgICAgICAgICAgPHJlcXVpcmVkPmZhbHNlPC9yZXF1aXJlZD4KLSAgICAgICAgICAgIDxydGV4cHJ2YWx1ZT50cnVlPC9ydGV4cHJ2YWx1ZT4KLSAgICAgICAgPC9hdHRyaWJ1dGU+Ci0gICAgICAgIDxhdHRyaWJ1dGU+Ci0gICAgICAgICAgICA8bmFtZT5zZWN1cmU8L25hbWU+Ci0gICAgICAgICAgICA8cmVxdWlyZWQ+ZmFsc2U8L3JlcXVpcmVkPgotICAgICAgICAgICAgPHJ0ZXhwcnZhbHVlPnRydWU8L3J0ZXhwcnZhbHVlPgotICAgICAgICA8L2F0dHJpYnV0ZT4KLSAgICAgICAgPGF0dHJpYnV0ZT4KLSAgICAgICAgICAgIDxuYW1lPnZhcjwvbmFtZT4KLSAgICAgICAgICAgIDxyZXF1aXJlZD5mYWxzZTwvcmVxdWlyZWQ+Ci0gICAgICAgICAgICA8cnRleHBydmFsdWU+dHJ1ZTwvcnRleHBydmFsdWU+Ci0gICAgICAgIDwvYXR0cmlidXRlPgotICAgIDwvdGFnPgotICAgIDx0YWc+Ci0gICAgICAgIDxuYW1lPm5hbWVzcGFjZTwvbmFtZT4KLSAgICAgICAgPHRhZ2NsYXNzPm9yZy5hcGFjaGUucGx1dG8udGFncy5OYW1lc3BhY2VUYWc8L3RhZ2NsYXNzPgotICAgICAgICA8Ym9keWNvbnRlbnQ+ZW1wdHk8L2JvZHljb250ZW50PgotICAgIDwvdGFnPgotPC90YWdsaWI+CmRpZmYgLS1naXQgYS9tYXZlbi1hcmNoZXR5cGUtcG9ydGxldC9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvbWFpbi93ZWJhcHAvV0VCLUlORi93ZWIueG1sIGIvbWF2ZW4tYXJjaGV0eXBlLXBvcnRsZXQvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvc3JjL21haW4vd2ViYXBwL1dFQi1JTkYvd2ViLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmRlOTc2OC4uMDAwMDAwMAotLS0gYS9tYXZlbi1hcmNoZXR5cGUtcG9ydGxldC9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvbWFpbi93ZWJhcHAvV0VCLUlORi93ZWIueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLQotPCFET0NUWVBFIHdlYi1hcHAgUFVCTElDICItLy9TdW4gTWljcm9zeXN0ZW1zLCBJbmMuLy9EVEQgV2ViIEFwcGxpY2F0aW9uIDIuMy8vRU4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgImh0dHA6Ly9qYXZhLnN1bi5jb20vZHRkL3dlYi1hcHBfMl8zLmR0ZCI+Ci08d2ViLWFwcD4KLSAgICA8ZGlzcGxheS1uYW1lPkZvcnR1bmVQb3J0bGV0PC9kaXNwbGF5LW5hbWU+Ci0KLSAgICA8ZGVzY3JpcHRpb24+QXV0b21hdGVkIGdlbmVyYXRlZCBBcHBsaWNhdGlvbiBXcmFwcGVyPC9kZXNjcmlwdGlvbj4KLQotICAgIDxzZXJ2bGV0PgotICAgICAgICA8c2VydmxldC1uYW1lPiR7YXJ0aWZhY3RJZH08L3NlcnZsZXQtbmFtZT4KLSAgICAgICAgPGRpc3BsYXktbmFtZT4ke2FydGlmYWN0SWR9IFBvcnRsZXQ8L2Rpc3BsYXktbmFtZT4KLSAgICAgICAgPGRlc2NyaXB0aW9uPkdlbmVyYXRlZCBQb3J0bGV0IFdyYXBwZXI8L2Rlc2NyaXB0aW9uPgotICAgICAgICA8c2VydmxldC1jbGFzcz5vcmcuYXBhY2hlLnBsdXRvLmNvcmUuUG9ydGxldFNlcnZsZXQ8L3NlcnZsZXQtY2xhc3M+Ci0KLSAgICAgICAgPGluaXQtcGFyYW0+Ci0gICAgICAgICAgICA8cGFyYW0tbmFtZT5wb3J0bGV0LWNsYXNzPC9wYXJhbS1uYW1lPgotICAgICAgICAgICAgPHBhcmFtLXZhbHVlPiR7Z3JvdXBJZH0uJHthcnRpZmFjdElkfTwvcGFyYW0tdmFsdWU+Ci0gICAgICAgIDwvaW5pdC1wYXJhbT4KLQotICAgICAgICA8aW5pdC1wYXJhbT4KLSAgICAgICAgICAgIDxwYXJhbS1uYW1lPnBvcnRsZXQtZ3VpZDwvcGFyYW0tbmFtZT4KLSAgICAgICAgICAgIDxwYXJhbS12YWx1ZT55b3VycG9ydGxldC4ke2FydGlmYWN0SWR9PC9wYXJhbS12YWx1ZT4KLSAgICAgICAgPC9pbml0LXBhcmFtPgotICAgIDwvc2VydmxldD4KLQotICAgIDxzZXJ2bGV0LW1hcHBpbmc+Ci0gICAgICAgIDxzZXJ2bGV0LW5hbWU+JHthcnRpZmFjdElkfTwvc2VydmxldC1uYW1lPgotICAgICAgICA8dXJsLXBhdHRlcm4+LyR7YXJ0aWZhY3RJZH0vKjwvdXJsLXBhdHRlcm4+Ci0gICAgPC9zZXJ2bGV0LW1hcHBpbmc+Ci0KLSAgICA8dGFnbGliPgotICAgICAgICA8dGFnbGliLXVyaT5odHRwOi8vamF2YS5zdW4uY29tL3BvcnRsZXQ8L3RhZ2xpYi11cmk+Ci0gICAgICAgIDx0YWdsaWItbG9jYXRpb24+L1dFQi1JTkYvdGxkL3BvcnRsZXQudGxkPC90YWdsaWItbG9jYXRpb24+Ci0gICAgPC90YWdsaWI+Ci08L3dlYi1hcHA+CmRpZmYgLS1naXQgYS9tYXZlbi1hcmNoZXR5cGUtcG9ydGxldC9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvbWFpbi93ZWJhcHAvaGVscC5qc3AgYi9tYXZlbi1hcmNoZXR5cGUtcG9ydGxldC9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvbWFpbi93ZWJhcHAvaGVscC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhMmVjZWQuLjAwMDAwMDAKLS0tIGEvbWF2ZW4tYXJjaGV0eXBlLXBvcnRsZXQvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvc3JjL21haW4vd2ViYXBwL2hlbHAuanNwCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08JUAgdGFnbGliIHVyaT0iaHR0cDovL2phdmEuc3VuLmNvbS9qc3RsL2NvcmUiIHByZWZpeD0iYyIgJT4KLQotPGg0Pk5lZWQgaGVscD88L2g0PgpkaWZmIC0tZ2l0IGEvbWF2ZW4tYXJjaGV0eXBlLXBvcnRsZXQvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvc3JjL21haW4vd2ViYXBwL21heGltaXplZC5qc3AgYi9tYXZlbi1hcmNoZXR5cGUtcG9ydGxldC9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvbWFpbi93ZWJhcHAvbWF4aW1pemVkLmpzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWMyMTZlYi4uMDAwMDAwMAotLS0gYS9tYXZlbi1hcmNoZXR5cGUtcG9ydGxldC9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvbWFpbi93ZWJhcHAvbWF4aW1pemVkLmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPCVAIHRhZ2xpYiB1cmk9Imh0dHA6Ly9qYXZhLnN1bi5jb20vanN0bC9jb3JlIiBwcmVmaXg9ImMiICU+Ci0KLTxoND5UaGlzIGlzIGEgbXVjaCBiaWdnZXIgd29ybGQgaXNuJ3QgaXQ/PC9oND4KZGlmZiAtLWdpdCBhL21hdmVuLWFyY2hldHlwZS1wb3J0bGV0L3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy9tYWluL3dlYmFwcC9ub3JtYWwuanNwIGIvbWF2ZW4tYXJjaGV0eXBlLXBvcnRsZXQvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvc3JjL21haW4vd2ViYXBwL25vcm1hbC5qc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwNzRmY2IuLjAwMDAwMDAKLS0tIGEvbWF2ZW4tYXJjaGV0eXBlLXBvcnRsZXQvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvc3JjL21haW4vd2ViYXBwL25vcm1hbC5qc3AKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTwlQCB0YWdsaWIgdXJpPSJodHRwOi8vamF2YS5zdW4uY29tL2pzdGwvY29yZSIgcHJlZml4PSJjIiAlPgotCi08aDQ+V2VsY29tZSB0byB0aGUgTWF2ZW4gMiBXb3JsZCE8L2g0PgpkaWZmIC0tZ2l0IGEvbWF2ZW4tYXJjaGV0eXBlLXByb2ZpbGVzL3BvbS54bWwgYi9tYXZlbi1hcmNoZXR5cGUtcHJvZmlsZXMvcG9tLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGU4YTc4OC4uMDAwMDAwMAotLS0gYS9tYXZlbi1hcmNoZXR5cGUtcHJvZmlsZXMvcG9tLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci0KLTwhLS0KLUxpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKLW9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQotZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KLXJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKLXRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKLSJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKLXdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLQotICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLQotVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAotc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KLSJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQotS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCi1zcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCi11bmRlciB0aGUgTGljZW5zZS4KLS0tPgotCi08cHJvamVjdCB4bWxucz0iaHR0cDovL21hdmVuLmFwYWNoZS5vcmcvUE9NLzQuMC4wIgotICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgotICB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL1BPTS80LjAuMCBodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9tYXZlbi12NF8wXzAueHNkIj4KLSAgPHBhcmVudD4KLSAgICA8YXJ0aWZhY3RJZD5tYXZlbi1hcmNoZXR5cGUtYnVuZGxlczwvYXJ0aWZhY3RJZD4KLSAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLm1hdmVuLmFyY2hldHlwZXM8L2dyb3VwSWQ+Ci0gICAgPHZlcnNpb24+MTwvdmVyc2lvbj4KLSAgPC9wYXJlbnQ+Ci0gIDxtb2RlbFZlcnNpb24+NC4wLjA8L21vZGVsVmVyc2lvbj4KLSAgPGRlc2NyaXB0aW9uPgotICAgIEFuIGFyY2hldHlwZSB3aGljaCBjb250YWlucyBhIHNhbXBsZSBNYXZlbiBwcm9qZWN0IHdoaWNoIGRlbW9uc3RyYXRlcyB0aGUgdXNlIG9mIHByb2ZpbGVzLgotICA8L2Rlc2NyaXB0aW9uPgotICA8YXJ0aWZhY3RJZD5tYXZlbi1hcmNoZXR5cGUtcHJvZmlsZXM8L2FydGlmYWN0SWQ+Ci0gIDxuYW1lPk1hdmVuIFByb2ZpbGVzIEFyY2hldHlwZTwvbmFtZT4KLSAgPHZlcnNpb24+MS4wLVNOQVBTSE9UPC92ZXJzaW9uPgotPC9wcm9qZWN0PgpkaWZmIC0tZ2l0IGEvbWF2ZW4tYXJjaGV0eXBlLXByb2ZpbGVzL3NyYy9tYWluL3Jlc291cmNlcy9NRVRBLUlORi9hcmNoZXR5cGUueG1sIGIvbWF2ZW4tYXJjaGV0eXBlLXByb2ZpbGVzL3NyYy9tYWluL3Jlc291cmNlcy9NRVRBLUlORi9hcmNoZXR5cGUueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OGEzNmU0Li4wMDAwMDAwCi0tLSBhL21hdmVuLWFyY2hldHlwZS1wcm9maWxlcy9zcmMvbWFpbi9yZXNvdXJjZXMvTUVUQS1JTkYvYXJjaGV0eXBlLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotPGFyY2hldHlwZT4KLSAgPGlkPnByb2ZpbGVzPC9pZD4KLSAgPHNvdXJjZXM+Ci0gICAgPHNvdXJjZT5zcmMvbWFpbi9qYXZhL0FwcC5qYXZhPC9zb3VyY2U+Ci0gIDwvc291cmNlcz4KLSAgPHRlc3RTb3VyY2VzPgotICAgIDxzb3VyY2U+c3JjL3Rlc3QvamF2YS9BcHBUZXN0LmphdmE8L3NvdXJjZT4KLSAgPC90ZXN0U291cmNlcz4KLTwvYXJjaGV0eXBlPgpkaWZmIC0tZ2l0IGEvbWF2ZW4tYXJjaGV0eXBlLXByb2ZpbGVzL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3BvbS54bWwgYi9tYXZlbi1hcmNoZXR5cGUtcHJvZmlsZXMvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvcG9tLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWRmYWY4YS4uMDAwMDAwMAotLS0gYS9tYXZlbi1hcmNoZXR5cGUtcHJvZmlsZXMvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvcG9tLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLTxwcm9qZWN0IHhtbG5zPSJodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9QT00vNC4wLjAiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiCi0gIHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL21hdmVuLmFwYWNoZS5vcmcvUE9NLzQuMC4wIGh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL21hdmVuLXY0XzBfMC54c2QiPgotICA8bW9kZWxWZXJzaW9uPjQuMC4wPC9tb2RlbFZlcnNpb24+Ci0gIDxncm91cElkPiR7Z3JvdXBJZH08L2dyb3VwSWQ+Ci0gIDxhcnRpZmFjdElkPiR7YXJ0aWZhY3RJZH08L2FydGlmYWN0SWQ+Ci0gIDxwYWNrYWdpbmc+amFyPC9wYWNrYWdpbmc+Ci0gIDx2ZXJzaW9uPiR7dmVyc2lvbn08L3ZlcnNpb24+Ci0gIDxuYW1lPk1hdmVuIFF1aWNrIFN0YXJ0IEFyY2hldHlwZTwvbmFtZT4KLSAgPHVybD5odHRwOi8vbWF2ZW4uYXBhY2hlLm9yZzwvdXJsPgotICA8ZGVwZW5kZW5jaWVzPgotICAgIDxkZXBlbmRlbmN5PgotICAgICAgPGdyb3VwSWQ+anVuaXQ8L2dyb3VwSWQ+Ci0gICAgICA8YXJ0aWZhY3RJZD5qdW5pdDwvYXJ0aWZhY3RJZD4KLSAgICAgIDx2ZXJzaW9uPjMuOC4xPC92ZXJzaW9uPgotICAgICAgPHNjb3BlPnRlc3Q8L3Njb3BlPgotICAgIDwvZGVwZW5kZW5jeT4KLSAgPC9kZXBlbmRlbmNpZXM+Ci08L3Byb2plY3Q+CmRpZmYgLS1naXQgYS9tYXZlbi1hcmNoZXR5cGUtcHJvZmlsZXMvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvc3JjL21haW4vZmlsdGVycy9kZXZlbG9wbWVudC5wcm9wZXJ0aWVzIGIvbWF2ZW4tYXJjaGV0eXBlLXByb2ZpbGVzL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy9tYWluL2ZpbHRlcnMvZGV2ZWxvcG1lbnQucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGRhYzIzZi4uMDAwMDAwMAotLS0gYS9tYXZlbi1hcmNoZXR5cGUtcHJvZmlsZXMvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvc3JjL21haW4vZmlsdGVycy9kZXZlbG9wbWVudC5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotZW52aXJvbm1lbnQ9ZGV2ZWxvcG1lbnQKZGlmZiAtLWdpdCBhL21hdmVuLWFyY2hldHlwZS1wcm9maWxlcy9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvbWFpbi9maWx0ZXJzL3Byb2R1Y3Rpb24ucHJvcGVydGllcyBiL21hdmVuLWFyY2hldHlwZS1wcm9maWxlcy9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvbWFpbi9maWx0ZXJzL3Byb2R1Y3Rpb24ucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDM4N2Y5Yy4uMDAwMDAwMAotLS0gYS9tYXZlbi1hcmNoZXR5cGUtcHJvZmlsZXMvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvc3JjL21haW4vZmlsdGVycy9wcm9kdWN0aW9uLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1lbnZpcm9ubWVudD1wcm9kdWN0aW9uCmRpZmYgLS1naXQgYS9tYXZlbi1hcmNoZXR5cGUtcHJvZmlsZXMvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvc3JjL21haW4vZmlsdGVycy9xYS5wcm9wZXJ0aWVzIGIvbWF2ZW4tYXJjaGV0eXBlLXByb2ZpbGVzL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy9tYWluL2ZpbHRlcnMvcWEucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGI1NGYzMy4uMDAwMDAwMAotLS0gYS9tYXZlbi1hcmNoZXR5cGUtcHJvZmlsZXMvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvc3JjL21haW4vZmlsdGVycy9xYS5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotZW52aXJvbm1lbnQ9cWEKZGlmZiAtLWdpdCBhL21hdmVuLWFyY2hldHlwZS1wcm9maWxlcy9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvbWFpbi9qYXZhL0FwcC5qYXZhIGIvbWF2ZW4tYXJjaGV0eXBlLXByb2ZpbGVzL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy9tYWluL2phdmEvQXBwLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwOWMzY2UuLjAwMDAwMDAKLS0tIGEvbWF2ZW4tYXJjaGV0eXBlLXByb2ZpbGVzL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy9tYWluL2phdmEvQXBwLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1wYWNrYWdlICRwYWNrYWdlOwotCi0vKioKLSAqIEhlbGxvIHdvcmxkIQotICoKLSAqLwotcHVibGljIGNsYXNzIEFwcCAKLXsKLSAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiggU3RyaW5nW10gYXJncyApCi0gICAgewotICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oICJIZWxsbyBXb3JsZCEiICk7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvbWF2ZW4tYXJjaGV0eXBlLXByb2ZpbGVzL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy90ZXN0L2phdmEvQXBwVGVzdC5qYXZhIGIvbWF2ZW4tYXJjaGV0eXBlLXByb2ZpbGVzL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy90ZXN0L2phdmEvQXBwVGVzdC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZDliZjRlLi4wMDAwMDAwCi0tLSBhL21hdmVuLWFyY2hldHlwZS1wcm9maWxlcy9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvdGVzdC9qYXZhL0FwcFRlc3QuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLXBhY2thZ2UgJHBhY2thZ2U7Ci0KLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdDsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2U7Ci1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZTsKLQotLyoqCi0gKiBVbml0IHRlc3QgZm9yIHNpbXBsZSBBcHAuCi0gKi8KLXB1YmxpYyBjbGFzcyBBcHBUZXN0IAotICAgIGV4dGVuZHMgVGVzdENhc2UKLXsKLSAgICAvKioKLSAgICAgKiBDcmVhdGUgdGhlIHRlc3QgY2FzZQotICAgICAqCi0gICAgICogQHBhcmFtIHRlc3ROYW1lIG5hbWUgb2YgdGhlIHRlc3QgY2FzZQotICAgICAqLwotICAgIHB1YmxpYyBBcHBUZXN0KCBTdHJpbmcgdGVzdE5hbWUgKQotICAgIHsKLSAgICAgICAgc3VwZXIoIHRlc3ROYW1lICk7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogQHJldHVybiB0aGUgc3VpdGUgb2YgdGVzdHMgYmVpbmcgdGVzdGVkCi0gICAgICovCi0gICAgcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgVGVzdFN1aXRlKCBBcHBUZXN0LmNsYXNzICk7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogUmlnb3Vyb3VzIFRlc3QgOi0pCi0gICAgICovCi0gICAgcHVibGljIHZvaWQgdGVzdEFwcCgpCi0gICAgewotICAgICAgICBhc3NlcnRUcnVlKCB0cnVlICk7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvbWF2ZW4tYXJjaGV0eXBlLXF1aWNrc3RhcnQvcG9tLnhtbCBiL21hdmVuLWFyY2hldHlwZS1xdWlja3N0YXJ0L3BvbS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjMzFkZmQuLjAwMDAwMDAKLS0tIGEvbWF2ZW4tYXJjaGV0eXBlLXF1aWNrc3RhcnQvcG9tLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci0KLTwhLS0KLUxpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKLW9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQotZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KLXJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKLXRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKLSJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKLXdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLQotICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLQotVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAotc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KLSJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQotS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCi1zcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCi11bmRlciB0aGUgTGljZW5zZS4KLS0tPgotCi08cHJvamVjdCB4bWxucz0iaHR0cDovL21hdmVuLmFwYWNoZS5vcmcvUE9NLzQuMC4wIgotICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgotICB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL1BPTS80LjAuMCBodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9tYXZlbi12NF8wXzAueHNkIj4KLSAgPHBhcmVudD4KLSAgICA8YXJ0aWZhY3RJZD5tYXZlbi1hcmNoZXR5cGUtYnVuZGxlczwvYXJ0aWZhY3RJZD4KLSAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLm1hdmVuLmFyY2hldHlwZXM8L2dyb3VwSWQ+Ci0gICAgPHZlcnNpb24+My1TTkFQU0hPVDwvdmVyc2lvbj4KLSAgPC9wYXJlbnQ+Ci0gIDxtb2RlbFZlcnNpb24+NC4wLjA8L21vZGVsVmVyc2lvbj4KLSAgPGRlc2NyaXB0aW9uPgotICAgIEFuIGFyY2hldHlwZSB3aGljaCBjb250YWlucyBhIHNhbXBsZSBNYXZlbiBwcm9qZWN0LgotICA8L2Rlc2NyaXB0aW9uPgotICA8YXJ0aWZhY3RJZD5tYXZlbi1hcmNoZXR5cGUtcXVpY2tzdGFydDwvYXJ0aWZhY3RJZD4KLSAgPG5hbWU+TWF2ZW4gUXVpY2tzdGFydCBBcmNoZXR5cGU8L25hbWU+Ci0gIDx2ZXJzaW9uPjEuMS1TTkFQU0hPVDwvdmVyc2lvbj4KLSAgPGRlcGVuZGVuY2llcz4KLSAgICA8ZGVwZW5kZW5jeT4KLSAgICAgIDxncm91cElkPmp1bml0PC9ncm91cElkPgotICAgICAgPGFydGlmYWN0SWQ+anVuaXQ8L2FydGlmYWN0SWQ+Ci0gICAgICA8dmVyc2lvbj4zLjguMTwvdmVyc2lvbj4KLSAgICA8L2RlcGVuZGVuY3k+Ci0gIDwvZGVwZW5kZW5jaWVzPiAgCi08L3Byb2plY3Q+CmRpZmYgLS1naXQgYS9tYXZlbi1hcmNoZXR5cGUtcXVpY2tzdGFydC9zcmMvbWFpbi9yZXNvdXJjZXMvTUVUQS1JTkYvYXJjaGV0eXBlLnhtbCBiL21hdmVuLWFyY2hldHlwZS1xdWlja3N0YXJ0L3NyYy9tYWluL3Jlc291cmNlcy9NRVRBLUlORi9hcmNoZXR5cGUueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTJmMGU4Li4wMDAwMDAwCi0tLSBhL21hdmVuLWFyY2hldHlwZS1xdWlja3N0YXJ0L3NyYy9tYWluL3Jlc291cmNlcy9NRVRBLUlORi9hcmNoZXR5cGUueG1sCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi08YXJjaGV0eXBlPgotICA8aWQ+cXVpY2tzdGFydDwvaWQ+Ci0gIDxzb3VyY2VzPgotICAgIDxzb3VyY2U+c3JjL21haW4vamF2YS9BcHAuamF2YTwvc291cmNlPgotICA8L3NvdXJjZXM+Ci0gIDx0ZXN0U291cmNlcz4KLSAgICA8c291cmNlPnNyYy90ZXN0L2phdmEvQXBwVGVzdC5qYXZhPC9zb3VyY2U+Ci0gIDwvdGVzdFNvdXJjZXM+Ci08L2FyY2hldHlwZT4KZGlmZiAtLWdpdCBhL21hdmVuLWFyY2hldHlwZS1xdWlja3N0YXJ0L3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3BvbS54bWwgYi9tYXZlbi1hcmNoZXR5cGUtcXVpY2tzdGFydC9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9wb20ueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZTdjMzEzLi4wMDAwMDAwCi0tLSBhL21hdmVuLWFyY2hldHlwZS1xdWlja3N0YXJ0L3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3BvbS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi08cHJvamVjdCB4bWxucz0iaHR0cDovL21hdmVuLmFwYWNoZS5vcmcvUE9NLzQuMC4wIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgotICB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL1BPTS80LjAuMCBodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9tYXZlbi12NF8wXzAueHNkIj4KLSAgPG1vZGVsVmVyc2lvbj40LjAuMDwvbW9kZWxWZXJzaW9uPgotICA8Z3JvdXBJZD4ke2dyb3VwSWR9PC9ncm91cElkPgotICA8YXJ0aWZhY3RJZD4ke2FydGlmYWN0SWR9PC9hcnRpZmFjdElkPgotICA8cGFja2FnaW5nPmphcjwvcGFja2FnaW5nPgotICA8dmVyc2lvbj4ke3ZlcnNpb259PC92ZXJzaW9uPgotICA8bmFtZT4ke2FydGlmYWN0SWR9PC9uYW1lPgotICA8dXJsPmh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnPC91cmw+Ci0gIDxkZXBlbmRlbmNpZXM+Ci0gICAgPGRlcGVuZGVuY3k+Ci0gICAgICA8Z3JvdXBJZD5qdW5pdDwvZ3JvdXBJZD4KLSAgICAgIDxhcnRpZmFjdElkPmp1bml0PC9hcnRpZmFjdElkPgotICAgICAgPHZlcnNpb24+My44LjE8L3ZlcnNpb24+Ci0gICAgICA8c2NvcGU+dGVzdDwvc2NvcGU+Ci0gICAgPC9kZXBlbmRlbmN5PgotICA8L2RlcGVuZGVuY2llcz4KLTwvcHJvamVjdD4KZGlmZiAtLWdpdCBhL21hdmVuLWFyY2hldHlwZS1xdWlja3N0YXJ0L3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy9tYWluL2phdmEvQXBwLmphdmEgYi9tYXZlbi1hcmNoZXR5cGUtcXVpY2tzdGFydC9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvbWFpbi9qYXZhL0FwcC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMDljM2NlLi4wMDAwMDAwCi0tLSBhL21hdmVuLWFyY2hldHlwZS1xdWlja3N0YXJ0L3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy9tYWluL2phdmEvQXBwLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1wYWNrYWdlICRwYWNrYWdlOwotCi0vKioKLSAqIEhlbGxvIHdvcmxkIQotICoKLSAqLwotcHVibGljIGNsYXNzIEFwcCAKLXsKLSAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiggU3RyaW5nW10gYXJncyApCi0gICAgewotICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oICJIZWxsbyBXb3JsZCEiICk7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvbWF2ZW4tYXJjaGV0eXBlLXF1aWNrc3RhcnQvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvc3JjL3Rlc3QvamF2YS9BcHBUZXN0LmphdmEgYi9tYXZlbi1hcmNoZXR5cGUtcXVpY2tzdGFydC9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvdGVzdC9qYXZhL0FwcFRlc3QuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmQ5YmY0ZS4uMDAwMDAwMAotLS0gYS9tYXZlbi1hcmNoZXR5cGUtcXVpY2tzdGFydC9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvdGVzdC9qYXZhL0FwcFRlc3QuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLXBhY2thZ2UgJHBhY2thZ2U7Ci0KLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdDsKLWltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2U7Ci1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZTsKLQotLyoqCi0gKiBVbml0IHRlc3QgZm9yIHNpbXBsZSBBcHAuCi0gKi8KLXB1YmxpYyBjbGFzcyBBcHBUZXN0IAotICAgIGV4dGVuZHMgVGVzdENhc2UKLXsKLSAgICAvKioKLSAgICAgKiBDcmVhdGUgdGhlIHRlc3QgY2FzZQotICAgICAqCi0gICAgICogQHBhcmFtIHRlc3ROYW1lIG5hbWUgb2YgdGhlIHRlc3QgY2FzZQotICAgICAqLwotICAgIHB1YmxpYyBBcHBUZXN0KCBTdHJpbmcgdGVzdE5hbWUgKQotICAgIHsKLSAgICAgICAgc3VwZXIoIHRlc3ROYW1lICk7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogQHJldHVybiB0aGUgc3VpdGUgb2YgdGVzdHMgYmVpbmcgdGVzdGVkCi0gICAgICovCi0gICAgcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgVGVzdFN1aXRlKCBBcHBUZXN0LmNsYXNzICk7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogUmlnb3Vyb3VzIFRlc3QgOi0pCi0gICAgICovCi0gICAgcHVibGljIHZvaWQgdGVzdEFwcCgpCi0gICAgewotICAgICAgICBhc3NlcnRUcnVlKCB0cnVlICk7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvbWF2ZW4tYXJjaGV0eXBlLXNpbXBsZS9wb20ueG1sIGIvbWF2ZW4tYXJjaGV0eXBlLXNpbXBsZS9wb20ueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYjYxYjVmLi4wMDAwMDAwCi0tLSBhL21hdmVuLWFyY2hldHlwZS1zaW1wbGUvcG9tLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci0KLTwhLS0KLUxpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKLW9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQotZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KLXJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKLXRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKLSJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKLXdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLQotICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLQotVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAotc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KLSJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQotS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCi1zcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCi11bmRlciB0aGUgTGljZW5zZS4KLS0tPgotCi08cHJvamVjdCB4bWxucz0iaHR0cDovL21hdmVuLmFwYWNoZS5vcmcvUE9NLzQuMC4wIgotICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgotICB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL1BPTS80LjAuMCBodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9tYXZlbi12NF8wXzAueHNkIj4KLSAgPHBhcmVudD4KLSAgICA8YXJ0aWZhY3RJZD5tYXZlbi1hcmNoZXR5cGUtYnVuZGxlczwvYXJ0aWZhY3RJZD4KLSAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLm1hdmVuLmFyY2hldHlwZXM8L2dyb3VwSWQ+Ci0gICAgPHZlcnNpb24+My1TTkFQU0hPVDwvdmVyc2lvbj4KLSAgPC9wYXJlbnQ+Ci0gIDxtb2RlbFZlcnNpb24+NC4wLjA8L21vZGVsVmVyc2lvbj4KLSAgPGRlc2NyaXB0aW9uPgotICAgIEFuIGFyY2hldHlwZSB3aGljaCBjb250YWlucyBhIHNpbXBsZSBNYXZlbiBwcm9qZWN0LgotICA8L2Rlc2NyaXB0aW9uPgotICA8YXJ0aWZhY3RJZD5tYXZlbi1hcmNoZXR5cGUtc2ltcGxlPC9hcnRpZmFjdElkPgotICA8bmFtZT5NYXZlbiBTaW1wbGUgUHJvamVjdCBBcmNoZXR5cGU8L25hbWU+Ci0gIDx2ZXJzaW9uPjEuMS1TTkFQU0hPVDwvdmVyc2lvbj4KLSAgPGRlcGVuZGVuY2llcz4KLSAgICA8ZGVwZW5kZW5jeT4KLSAgICAgIDxncm91cElkPmp1bml0PC9ncm91cElkPgotICAgICAgPGFydGlmYWN0SWQ+anVuaXQ8L2FydGlmYWN0SWQ+Ci0gICAgICA8dmVyc2lvbj4zLjguMTwvdmVyc2lvbj4KLSAgICA8L2RlcGVuZGVuY3k+Ci0gIDwvZGVwZW5kZW5jaWVzPgotPC9wcm9qZWN0PgpkaWZmIC0tZ2l0IGEvbWF2ZW4tYXJjaGV0eXBlLXNpbXBsZS9zcmMvbWFpbi9hcmNoZXR5cGUvYXJjaGV0eXBlLnByb3BlcnRpZXMgYi9tYXZlbi1hcmNoZXR5cGUtc2ltcGxlL3NyYy9tYWluL2FyY2hldHlwZS9hcmNoZXR5cGUucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODJmOTUyMS4uMDAwMDAwMAotLS0gYS9tYXZlbi1hcmNoZXR5cGUtc2ltcGxlL3NyYy9tYWluL2FyY2hldHlwZS9hcmNoZXR5cGUucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLXBhY2thZ2U9YXJjaGV0eXBlCmRpZmYgLS1naXQgYS9tYXZlbi1hcmNoZXR5cGUtc2ltcGxlL3NyYy9tYWluL2phdmEvYXJjaGV0eXBlL0FwcC5qYXZhIGIvbWF2ZW4tYXJjaGV0eXBlLXNpbXBsZS9zcmMvbWFpbi9qYXZhL2FyY2hldHlwZS9BcHAuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGY2Y2UwZC4uMDAwMDAwMAotLS0gYS9tYXZlbi1hcmNoZXR5cGUtc2ltcGxlL3NyYy9tYWluL2phdmEvYXJjaGV0eXBlL0FwcC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotcGFja2FnZSBhcmNoZXR5cGU7Ci0KLS8qKgotICogSGVsbG8gd29ybGQhCi0gKgotICovCi1wdWJsaWMgY2xhc3MgQXBwIAotewotICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKCBTdHJpbmdbXSBhcmdzICkKLSAgICB7Ci0gICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbiggIkhlbGxvIFdvcmxkISIgKTsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9tYXZlbi1hcmNoZXR5cGUtc2ltcGxlL3NyYy9tYWluL3Jlc291cmNlcy9hcHAucHJvcGVydGllcyBiL21hdmVuLWFyY2hldHlwZS1zaW1wbGUvc3JjL21haW4vcmVzb3VyY2VzL2FwcC5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwY2MwNWFhLi4wMDAwMDAwCi0tLSBhL21hdmVuLWFyY2hldHlwZS1zaW1wbGUvc3JjL21haW4vcmVzb3VyY2VzL2FwcC5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotYXBwPUNvb2xpbwpkaWZmIC0tZ2l0IGEvbWF2ZW4tYXJjaGV0eXBlLXNpbXBsZS9zcmMvdGVzdC9qYXZhL2FyY2hldHlwZS9BcHBUZXN0LmphdmEgYi9tYXZlbi1hcmNoZXR5cGUtc2ltcGxlL3NyYy90ZXN0L2phdmEvYXJjaGV0eXBlL0FwcFRlc3QuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTdkYWJhZi4uMDAwMDAwMAotLS0gYS9tYXZlbi1hcmNoZXR5cGUtc2ltcGxlL3NyYy90ZXN0L2phdmEvYXJjaGV0eXBlL0FwcFRlc3QuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLXBhY2thZ2UgYXJjaGV0eXBlOwotCi1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3Q7Ci1pbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlOwotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0U3VpdGU7Ci0KLS8qKgotICogVW5pdCB0ZXN0IGZvciBzaW1wbGUgQXBwLgotICovCi1wdWJsaWMgY2xhc3MgQXBwVGVzdCAKLSAgICBleHRlbmRzIFRlc3RDYXNlCi17Ci0gICAgLyoqCi0gICAgICogQ3JlYXRlIHRoZSB0ZXN0IGNhc2UKLSAgICAgKgotICAgICAqIEBwYXJhbSB0ZXN0TmFtZSBuYW1lIG9mIHRoZSB0ZXN0IGNhc2UKLSAgICAgKi8KLSAgICBwdWJsaWMgQXBwVGVzdCggU3RyaW5nIHRlc3ROYW1lICkKLSAgICB7Ci0gICAgICAgIHN1cGVyKCB0ZXN0TmFtZSApOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIEByZXR1cm4gdGhlIHN1aXRlIG9mIHRlc3RzIGJlaW5nIHRlc3RlZAotICAgICAqLwotICAgIHB1YmxpYyBzdGF0aWMgVGVzdCBzdWl0ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gbmV3IFRlc3RTdWl0ZSggQXBwVGVzdC5jbGFzcyApOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIFJpZ291cm91cyBUZXN0IDotKQotICAgICAqLwotICAgIHB1YmxpYyB2b2lkIHRlc3RBcHAoKQotICAgIHsKLSAgICAgICAgYXNzZXJ0VHJ1ZSggdHJ1ZSApOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL21hdmVuLWFyY2hldHlwZS1zaW1wbGUvc3JjL3Rlc3QvcmVzb3VyY2VzL3Rlc3QucHJvcGVydGllcyBiL21hdmVuLWFyY2hldHlwZS1zaW1wbGUvc3JjL3Rlc3QvcmVzb3VyY2VzL3Rlc3QucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzRkMGE0My4uMDAwMDAwMAotLS0gYS9tYXZlbi1hcmNoZXR5cGUtc2ltcGxlL3NyYy90ZXN0L3Jlc291cmNlcy90ZXN0LnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1mb289YmFyCmRpZmYgLS1naXQgYS9tYXZlbi1hcmNoZXR5cGUtc2l0ZS1zaW1wbGUvcG9tLnhtbCBiL21hdmVuLWFyY2hldHlwZS1zaXRlLXNpbXBsZS9wb20ueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNmYxMTg3Li4wMDAwMDAwCi0tLSBhL21hdmVuLWFyY2hldHlwZS1zaXRlLXNpbXBsZS9wb20ueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLQotPCEtLQotTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQotb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCi1kaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgotcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQotdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQotIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQotd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotCi0gIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotCi1Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCi1zb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgotIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCi1LSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKLXNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKLXVuZGVyIHRoZSBMaWNlbnNlLgotLS0+Ci0KLTxwcm9qZWN0IHhtbG5zPSJodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9QT00vNC4wLjAiCi0gIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiCi0gIHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL21hdmVuLmFwYWNoZS5vcmcvUE9NLzQuMC4wIGh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL21hdmVuLXY0XzBfMC54c2QiPgotICA8cGFyZW50PgotICAgIDxhcnRpZmFjdElkPm1hdmVuLWFyY2hldHlwZS1idW5kbGVzPC9hcnRpZmFjdElkPgotICAgIDxncm91cElkPm9yZy5hcGFjaGUubWF2ZW4uYXJjaGV0eXBlczwvZ3JvdXBJZD4KLSAgICA8dmVyc2lvbj4zLVNOQVBTSE9UPC92ZXJzaW9uPgotICA8L3BhcmVudD4KLSAgPG1vZGVsVmVyc2lvbj40LjAuMDwvbW9kZWxWZXJzaW9uPgotICA8ZGVzY3JpcHRpb24+Ci0gICAgQW4gYXJjaGV0eXBlIHdoaWNoIGNvbnRhaW5zIGEgc2FtcGxlIE1hdmVuIHNpdGUuCi0gIDwvZGVzY3JpcHRpb24+Ci0gIDxhcnRpZmFjdElkPm1hdmVuLWFyY2hldHlwZS1zaXRlLXNpbXBsZTwvYXJ0aWZhY3RJZD4KLSAgPG5hbWU+TWF2ZW4gQXJjaGV0eXBlIGZvciBTaW1wbGUgU2l0ZTwvbmFtZT4KLSAgPHZlcnNpb24+MS4xLVNOQVBTSE9UPC92ZXJzaW9uPgotPC9wcm9qZWN0PgpkaWZmIC0tZ2l0IGEvbWF2ZW4tYXJjaGV0eXBlLXNpdGUtc2ltcGxlL3NyYy9tYWluL3Jlc291cmNlcy9NRVRBLUlORi9hcmNoZXR5cGUueG1sIGIvbWF2ZW4tYXJjaGV0eXBlLXNpdGUtc2ltcGxlL3NyYy9tYWluL3Jlc291cmNlcy9NRVRBLUlORi9hcmNoZXR5cGUueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNzBiMDQ2Li4wMDAwMDAwCi0tLSBhL21hdmVuLWFyY2hldHlwZS1zaXRlLXNpbXBsZS9zcmMvbWFpbi9yZXNvdXJjZXMvTUVUQS1JTkYvYXJjaGV0eXBlLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotPGFyY2hldHlwZT4KLSAgPGlkPnBsdWdpbjwvaWQ+Ci0gIDxhbGxvd1BhcnRpYWw+dHJ1ZTwvYWxsb3dQYXJ0aWFsPgotICA8c2l0ZVJlc291cmNlcz4KLSAgICA8cmVzb3VyY2U+c3JjL3NpdGUvc2l0ZS54bWw8L3Jlc291cmNlPgotICAgIDxyZXNvdXJjZT5zcmMvc2l0ZS9hcHQvaW5kZXguYXB0PC9yZXNvdXJjZT4KLSAgPC9zaXRlUmVzb3VyY2VzPgotPC9hcmNoZXR5cGU+CmRpZmYgLS1naXQgYS9tYXZlbi1hcmNoZXR5cGUtc2l0ZS1zaW1wbGUvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvcG9tLnhtbCBiL21hdmVuLWFyY2hldHlwZS1zaXRlLXNpbXBsZS9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9wb20ueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNWY4ZjRkLi4wMDAwMDAwCi0tLSBhL21hdmVuLWFyY2hldHlwZS1zaXRlLXNpbXBsZS9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9wb20ueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotPHByb2plY3QgeG1sbnM9Imh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL1BPTS80LjAuMCIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKLSAgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9QT00vNC4wLjAgaHR0cDovL21hdmVuLmFwYWNoZS5vcmcvbWF2ZW4tdjRfMF8wLnhzZCI+Ci0gIDxtb2RlbFZlcnNpb24+NC4wLjA8L21vZGVsVmVyc2lvbj4KLSAgPGdyb3VwSWQ+JHtncm91cElkfTwvZ3JvdXBJZD4KLSAgPGFydGlmYWN0SWQ+JHthcnRpZmFjdElkfTwvYXJ0aWZhY3RJZD4KLSAgPHZlcnNpb24+JHt2ZXJzaW9ufTwvdmVyc2lvbj4KLSAgPHBhY2thZ2luZz5wb208L3BhY2thZ2luZz4KLSAgPGRpc3RyaWJ1dGlvbk1hbmFnZW1lbnQ+Ci0gICAgPHNpdGU+Ci0gICAgICA8aWQ+d2Vic2l0ZTwvaWQ+Ci0gICAgICA8dXJsPnNjcDovL3dlYmhvc3QuY29tcGFueS5jb20vd3d3L3dlYnNpdGU8L3VybD4KLSAgICA8L3NpdGU+Ci0gIDwvZGlzdHJpYnV0aW9uTWFuYWdlbWVudD4KLTwvcHJvamVjdD4KZGlmZiAtLWdpdCBhL21hdmVuLWFyY2hldHlwZS1zaXRlLXNpbXBsZS9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvc2l0ZS9hcHQvaW5kZXguYXB0IGIvbWF2ZW4tYXJjaGV0eXBlLXNpdGUtc2ltcGxlL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy9zaXRlL2FwdC9pbmRleC5hcHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxYjYyNDYuLjAwMDAwMDAKLS0tIGEvbWF2ZW4tYXJjaGV0eXBlLXNpdGUtc2ltcGxlL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy9zaXRlL2FwdC9pbmRleC5hcHQKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi0gLS0tLS0KLSBUaXRsZSBIZXJlCi0gLS0tLS0KLSBBdXRob3IgSGVyZQotIC0tLS0tCi0gRGF0ZSBIZXJlCi0gLS0tLS0KLQotTWF2ZW4gU2l0ZSBmb3IgeW91ciBwcm9qZWN0Ci0KLSBDb25ncmF0dWxhdGlvbnMhIElmIHlvdSBhcmUgbG9va2luZyBhdCB0aGlzIHBhZ2UgdGhlbiB5b3UgaGF2ZSBzdWNjZXNzZnVsbHkgZ2VuZXJhdGVkIGEKLSB0ZW1wbGF0ZSBzaXRlIGVtcGxveWluZyB0aGUgc2l0ZSBhcmNoZXR5cGUgYW5kIHlvdSBoYXZlIHJ1bjoKLSAgCi0rLS0tLS0rCi0KLW12biBzaXRlCi0KLSstLS0tLSsKZGlmZiAtLWdpdCBhL21hdmVuLWFyY2hldHlwZS1zaXRlLXNpbXBsZS9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvc2l0ZS9zaXRlLnhtbCBiL21hdmVuLWFyY2hldHlwZS1zaXRlLXNpbXBsZS9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvc2l0ZS9zaXRlLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTE1NTQyNS4uMDAwMDAwMAotLS0gYS9tYXZlbi1hcmNoZXR5cGUtc2l0ZS1zaW1wbGUvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvc3JjL3NpdGUvc2l0ZS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJJU08tODg1OS0xIj8+Ci08cHJvamVjdD4KLSAgPGJvZHk+Ci0gICAgPGxpbmtzPgotICAgICAgPGl0ZW0gbmFtZT0iTWF2ZW4iIGhyZWY9Imh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnLyIvPgotICAgIDwvbGlua3M+Ci0KLSAgICA8bWVudSBuYW1lPSJEb2N1bWVudGF0aW9uIj4KLSAgICAgIDwhLS08aXRlbSBuYW1lPSJYZG9jIEV4YW1wbGUiIGhyZWY9Inhkb2MuaHRtbCIvPi0tPgotICAgIDwvbWVudT4KLSAgPC9ib2R5PgotPC9wcm9qZWN0PgpkaWZmIC0tZ2l0IGEvbWF2ZW4tYXJjaGV0eXBlLXNpdGUvcG9tLnhtbCBiL21hdmVuLWFyY2hldHlwZS1zaXRlL3BvbS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhN2ViY2QuLjAwMDAwMDAKLS0tIGEvbWF2ZW4tYXJjaGV0eXBlLXNpdGUvcG9tLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci0KLTwhLS0KLUxpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKLW9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQotZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KLXJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKLXRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKLSJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKLXdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLQotICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLQotVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAotc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KLSJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQotS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCi1zcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCi11bmRlciB0aGUgTGljZW5zZS4KLS0tPgotCi08cHJvamVjdCB4bWxucz0iaHR0cDovL21hdmVuLmFwYWNoZS5vcmcvUE9NLzQuMC4wIgotICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgotICB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL1BPTS80LjAuMCBodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9tYXZlbi12NF8wXzAueHNkIj4KLSAgPHBhcmVudD4KLSAgICA8YXJ0aWZhY3RJZD5tYXZlbi1hcmNoZXR5cGUtYnVuZGxlczwvYXJ0aWZhY3RJZD4KLSAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLm1hdmVuLmFyY2hldHlwZXM8L2dyb3VwSWQ+Ci0gICAgPHZlcnNpb24+My1TTkFQU0hPVDwvdmVyc2lvbj4KLSAgPC9wYXJlbnQ+Ci0gIDxtb2RlbFZlcnNpb24+NC4wLjA8L21vZGVsVmVyc2lvbj4KLSAgPGRlc2NyaXB0aW9uPgotICAgIEFuIGFyY2hldHlwZSB3aGljaCBjb250YWlucyBhIHNhbXBsZSBNYXZlbiBzaXRlIHdoaWNoIGRlbW9uc3RyYXRlcyBzb21lIG9mIHRoZSBzdXBwb3J0ZWQgZG9jdW1lbnQgdHlwZXMgbGlrZQotICAgIEFQVCwgWERvYywgYW5kIEZNTCBhbmQgZGVtb25zdHJhdGVzIGhvdyB0byBpMThuIHlvdXIgc2l0ZS4gVGhpcyBhcmNoZXR5cGUgY2FuIGJlIGxheWVyZWQgCi0gICAgdXBvbiBhbiBleGlzdGluZyBNYXZlbiBwcm9qZWN0LiAKLSAgPC9kZXNjcmlwdGlvbj4gIAotICA8YXJ0aWZhY3RJZD5tYXZlbi1hcmNoZXR5cGUtc2l0ZTwvYXJ0aWZhY3RJZD4KLSAgPHZlcnNpb24+MS4xLVNOQVBTSE9UPC92ZXJzaW9uPgotICA8bmFtZT5NYXZlbiBTaXRlIEFyY2hldHlwZTwvbmFtZT4KLTwvcHJvamVjdD4KZGlmZiAtLWdpdCBhL21hdmVuLWFyY2hldHlwZS1zaXRlL3NyYy9tYWluL3Jlc291cmNlcy9NRVRBLUlORi9hcmNoZXR5cGUueG1sIGIvbWF2ZW4tYXJjaGV0eXBlLXNpdGUvc3JjL21haW4vcmVzb3VyY2VzL01FVEEtSU5GL2FyY2hldHlwZS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1N2U0YjQuLjAwMDAwMDAKLS0tIGEvbWF2ZW4tYXJjaGV0eXBlLXNpdGUvc3JjL21haW4vcmVzb3VyY2VzL01FVEEtSU5GL2FyY2hldHlwZS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi08YXJjaGV0eXBlPgotICA8aWQ+cGx1Z2luPC9pZD4KLSAgPGFsbG93UGFydGlhbD50cnVlPC9hbGxvd1BhcnRpYWw+Ci0gIDxzaXRlUmVzb3VyY2VzPgotICAgIDxyZXNvdXJjZT5zcmMvc2l0ZS9zaXRlLnhtbDwvcmVzb3VyY2U+Ci0gICAgPHJlc291cmNlPnNyYy9zaXRlL3NpdGVfZnIueG1sPC9yZXNvdXJjZT4KLSAgICA8cmVzb3VyY2U+c3JjL3NpdGUvYXB0L2luZGV4LmFwdDwvcmVzb3VyY2U+Ci0gICAgPHJlc291cmNlPnNyYy9zaXRlL2FwdC9mb3JtYXQuYXB0PC9yZXNvdXJjZT4gICAgCi0gICAgPHJlc291cmNlPnNyYy9zaXRlL2ZtbC9mYXEuZm1sPC9yZXNvdXJjZT4KLSAgICA8cmVzb3VyY2U+c3JjL3NpdGUveGRvYy94ZG9jLnhtbDwvcmVzb3VyY2U+ICAgIAotICAgIDxyZXNvdXJjZT5zcmMvc2l0ZS9mci9hcHQvaW5kZXguYXB0PC9yZXNvdXJjZT4KLSAgICA8cmVzb3VyY2U+c3JjL3NpdGUvZnIvYXB0L2Zvcm1hdC5hcHQ8L3Jlc291cmNlPiAgICAKLSAgICA8cmVzb3VyY2U+c3JjL3NpdGUvZnIvZm1sL2ZhcS5mbWw8L3Jlc291cmNlPgotICAgIDxyZXNvdXJjZT5zcmMvc2l0ZS9mci94ZG9jL3hkb2MueG1sPC9yZXNvdXJjZT4gICAgCi0gIDwvc2l0ZVJlc291cmNlcz4KLTwvYXJjaGV0eXBlPgpkaWZmIC0tZ2l0IGEvbWF2ZW4tYXJjaGV0eXBlLXNpdGUvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvcG9tLnhtbCBiL21hdmVuLWFyY2hldHlwZS1zaXRlL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3BvbS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3YTFjMjguLjAwMDAwMDAKLS0tIGEvbWF2ZW4tYXJjaGV0eXBlLXNpdGUvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvcG9tLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLTxwcm9qZWN0IHhtbG5zPSJodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9QT00vNC4wLjAiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiCi0gIHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL21hdmVuLmFwYWNoZS5vcmcvUE9NLzQuMC4wIGh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL21hdmVuLXY0XzBfMC54c2QiPgotICA8bW9kZWxWZXJzaW9uPjQuMC4wPC9tb2RlbFZlcnNpb24+Ci0gIDxncm91cElkPiR7Z3JvdXBJZH08L2dyb3VwSWQ+Ci0gIDxhcnRpZmFjdElkPiR7YXJ0aWZhY3RJZH08L2FydGlmYWN0SWQ+Ci0gIDx2ZXJzaW9uPiR7dmVyc2lvbn08L3ZlcnNpb24+Ci0gIDxuYW1lPk1hdmVuPC9uYW1lPgotICA8dXJsPmh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL21hdmVuMjwvdXJsPgotICA8aW5jZXB0aW9uWWVhcj4yMDAxPC9pbmNlcHRpb25ZZWFyPgotICA8ZGlzdHJpYnV0aW9uTWFuYWdlbWVudD4KLSAgICA8c2l0ZT4KLSAgICAgIDxpZD53ZWJzaXRlPC9pZD4KLSAgICAgIDx1cmw+c2NwOi8vd2ViaG9zdC5jb21wYW55LmNvbS93d3cvd2Vic2l0ZTwvdXJsPgotICAgIDwvc2l0ZT4KLSAgPC9kaXN0cmlidXRpb25NYW5hZ2VtZW50PgotICA8YnVpbGQ+Ci0gICAgPHBsdWdpbnM+Ci0gICAgICA8cGx1Z2luPgotICAgICAgICA8YXJ0aWZhY3RJZD5tYXZlbi1zaXRlLXBsdWdpbjwvYXJ0aWZhY3RJZD4KLSAgICAgICAgPGNvbmZpZ3VyYXRpb24+Ci0gICAgICAgICAgPGxvY2FsZXM+ZW4sZnI8L2xvY2FsZXM+Ci0gICAgICAgIDwvY29uZmlndXJhdGlvbj4KLSAgICAgIDwvcGx1Z2luPgotICAgIDwvcGx1Z2lucz4KLSAgPC9idWlsZD4KLTwvcHJvamVjdD4KZGlmZiAtLWdpdCBhL21hdmVuLWFyY2hldHlwZS1zaXRlL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy9zaXRlL2FwdC9mb3JtYXQuYXB0IGIvbWF2ZW4tYXJjaGV0eXBlLXNpdGUvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvc3JjL3NpdGUvYXB0L2Zvcm1hdC5hcHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzOGQxNDIuLjAwMDAwMDAKLS0tIGEvbWF2ZW4tYXJjaGV0eXBlLXNpdGUvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvc3JjL3NpdGUvYXB0L2Zvcm1hdC5hcHQKKysrIC9kZXYvbnVsbApAQCAtMSw1OTYgKzAsMCBAQAotDAotVGhlIEFQVCBmb3JtYXQKLX5+fn5+fn5+fn5+fn5+Ci0KLSAgSW4gdGhlIGZvbGxvd2luZyBzZWN0aW9uLCBib3hlcyBjb250YWluaW5nIHRleHQgaW4gdHlwZXdyaXRlci1saWtlIGZvbnQgYXJlCi0gIGV4YW1wbGVzIG9mIEFQVCBzb3VyY2UuCi0KLSogRG9jdW1lbnQgc3RydWN0dXJlCi1+fn5+fn5+fn5+fn5+fn5+fn5+fgotCi0gIEEgc2hvcnQgQVBUIGRvY3VtZW50IGlzIGNvbnRhaW5lZCBpbiBhIHNpbmdsZSB0ZXh0IGZpbGUuIEEgbG9uZ2VyIGRvY3VtZW50Ci0gIG1heSBiZSBjb250YWluZWQgaW4gYSBvcmRlcmVkIGxpc3Qgb2YgdGV4dCBmaWxlcy4gRm9yIGluc3RhbmNlLCBmaXJzdCB0ZXh0Ci0gIGZpbGUgY29udGFpbnMgc2VjdGlvbiAxLCBzZWNvbmQgdGV4dCBmaWxlIGNvbnRhaW5zIHNlY3Rpb24gMiwgYW5kIHNvIG9uLgotCi0gICAgICBbTm90ZTpdIFNwbGl0dGluZyB0aGUgQVBUIGRvY3VtZW50IGluIHNldmVyYWwgdGV4dCBmaWxlcyBvbiBhIHNlY3Rpb24KLSAgICAgICAgICAgICAgYm91bmRhcnkgaXMgbm90IG1hbmRhdG9yeS4gVGhlIHNwbGl0IG1heSBvY2N1ciBhbnl3aGVyZS4KLSAgICAgICAgICAgICAgSG93ZXZlciBkb2luZyBzbyBpcyByZWNvbW1lbmRlZCBiZWNhdXNlIGEgdGV4dCBmaWxlIGNvbnRhaW5pbmcgYQotICAgICAgICAgICAgICBzZWN0aW9uIGlzIGJ5IGl0c2VsZiBhIHZhbGlkIEFQVCBkb2N1bWVudC4KLQotICBBIGZpbGUgY29udGFpbnMgYSBzZXF1ZW5jZSBvZiBwYXJhZ3JhcGhzIGFuZCBgYGRpc3BsYXlzJycgKG5vbiBwYXJhZ3JhcGhzCi0gIHN1Y2ggYXMgdGFibGVzKSBzZXBhcmF0ZWQgYnkgb3BlbiBsaW5lcy4KLQotICBBIHBhcmFncmFwaCBpcyBzaW1wbHkgYSBzZXF1ZW5jZSBvZiBjb25zZWN1dGl2ZSB0ZXh0IGxpbmVzLgotCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICBGaXJzdCBsaW5lIG9mIGZpcnN0IHBhcmFncmFwaC4KLSAgU2Vjb25kIGxpbmUgb2YgZmlyc3QgcGFyYWdyYXBoLgotICBUaGlyZCBsaW5lIG9mIGZpcnN0IHBhcmFncmFwaC4KLSAgCi0gIExpbmUgMSBvZiBwYXJhZ3JhcGggMiAoc2VwYXJhdGVkIGZyb20gZmlyc3QgcGFyYWdyYXBoIGJ5IGFuIG9wZW4gbGluZSkuCi0gIExpbmUgMiBvZiBwYXJhZ3JhcGggMi4KLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0KLSAgVGhlIGluZGVudGF0aW9uIG9mIHRoZSBmaXJzdCBsaW5lIG9mIGEgcGFyYWdyYXBoIGlzIHRoZSBtYWluIG1ldGhvZCB1c2VkIGJ5Ci0gIGFuIEFQVCBwcm9jZXNzb3IgdG8gcmVjb2duaXplIHRoZSB0eXBlIG9mIHRoZSBwYXJhZ3JhcGguIEZvciBleGFtcGxlLCBhCi0gIHNlY3Rpb24gdGl0bGUgbXVzdCBub3QgYmUgaW5kZW50ZWQgYXQgYWxsLgotCi0gIEEgYGBwbGFpbicnIHBhcmFncmFwaCBtdXN0IGJlIGluZGVudGVkIGJ5IGEgY2VydGFpbiBhbW91bnQgb2Ygc3BhY2UuIEZvcgotICBleGFtcGxlLCBhIHBsYWluIHBhcmFncmFwaCB3aGljaCBpcyBub3QgY29udGFpbmVkIGluIGEgbGlzdCBtYXkgYmUgaW5kZW50ZWQKLSAgYnkgdHdvIHNwYWNlcy4KLQotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi1NeSBzZWN0aW9uIHRpdGxlIChub3QgaW5kZW50ZWQpLgotCi0gIE15IHBhcmFncmFwaCBmaXJzdCBsaW5lIChpbmRlbnRlZCBieSAyIHNwYWNlcykuCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLQotICBJbmRlbnRhdGlvbiBpcyBub3QgcmlnaWQuIEFueSBhbW91bnQgb2Ygc3BhY2Ugd2lsbCBkby4gWW91IGRvbid0IGV2ZW4gbmVlZAotICB0byB1c2UgYSBjb25zaXN0ZW50IGluZGVudGF0aW9uIGFsbCBvdmVyIHlvdXIgZG9jdW1lbnQuIFdoYXQgcmVhbGx5IG1hdHRlcnMKLSAgZm9yIGFuIEFQVCBwcm9jZXNzb3IgaXMgd2hldGhlciB0aGUgcGFyYWdyYXBoIGlzIG5vdCBpbmRlbnRlZCBhdCBhbGwgb3IsCi0gIHdoZW4gaW5zaWRlIGEgbGlzdCwgd2hldGhlciBhIHBhcmFncmFwaCBpcyBtb3JlIG9yIGxlc3MgaW5kZW50ZWQgdGhhbiB0aGUKLSAgZmlyc3QgaXRlbSBvZiB0aGUgbGlzdCAobW9yZSBhYm91dCB0aGlzIGxhdGVyKS4KLQotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICAgRmlyc3QgcGFyYWdyYXBoIGhhcyBpdHMgZmlyc3QgbGluZSBpbmRlbnRlZCBieSBmb3VyCi1zcGFjZXMuIFRoZW4gdGhlIGF1dGhvciBkaWQgZXZlbiBib3RoZXIgdG8gaW5kZW50IHRoZQotb3RoZXIgbGluZXMgb2YgdGhlIHBhcmFncmFwaC4KLQotICBTZWNvbmQgcGFyYWdyYXBoIGNvbnRhaW5zIHNldmVyYWwgbGluZXMgd2hpY2ggYXJlIGFsbCAKLSAgaW5kZW50ZWQgYnkgdHdvIHNwYWNlcy4gVGhpcyBzdHlsZSBpcyBtdWNoIG5pY2VyIHRoYW4gCi0gIHRoZSBvbmUgdXNlZCBmb3IgdGhlIHByZXZpb3VzIHBhcmFncmFwaC4KLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotCi0gIE5vdGUgdGhhdCB0YWJzIGFyZSBleHBhbmRlZCB3aXRoIGEgdGFiIHdpZHRoIHNldCB0byA4LgotCi0qIERvY3VtZW50IGVsZW1lbnRzCi1+fn5+fn5+fn5+fn5+fn5+fn5+Ci0KLSoqIEJsb2NrIGxldmVsIGVsZW1lbnRzCi1+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgotCi0qKiogVGl0bGUKLX5+fn5+fn5+fn4KLQotICBBIHRpdGxlIGlzIG9wdGlvbmFsLiBJZiB1c2VkLCBpdCBtdXN0IGFwcGVhciBhcyB0aGUgZmlyc3QgYmxvY2sgb2YgdGhlCi0gIGRvY3VtZW50LgotCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLQkJCQkgICAgLS0tLS0tCi0JCQkJICAgIFRpdGxlCi0JCQkJICAgIC0tLS0tLQotCQkJCSAgICBBdXRob3IKLQkJCQkgICAgLS0tLS0tCi0JCQkJICAgICBEYXRlCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLQotICBBIHRpdGxlIGJsb2NrIGlzIGluZGVudGVkIChjZW50ZXJpbmcgaXQgaXMgbmljZXIpLiBJdCBiZWdpbnMgd2l0aCBhIGxpbmUKLSAgY29udGFpbmluZyBhdCBsZWFzdCAzIGRhc2hlcyAoPDw8LS0tPj4+KS4KLQotICBBZnRlciB0aGUgZmlyc3QgPDw8LS0tPj4+IGxpbmUsIG9uZSBvciBzZXZlcmFsIGNvbnNlY3V0aXZlIGxpbmVzIG9mIHRleHQKLSAgKGltcGxpY2l0IGxpbmUgYnJlYWsgYWZ0ZXIgZWFjaCBsaW5lKSBzcGVjaWZ5IHRoZSB0aXRsZSBvZiB0aGUgZG9jdW1lbnQuCi0KLSAgVGhpcyB0ZXh0IG1heSBpbW1lZGlhdGVseSBiZSBmb2xsb3dlZCBieSBhbm90aGVyIDw8PC0tLT4+PiBsaW5lIGFuZCBvbmUgb3IKLSAgc2V2ZXJhbCBjb25zZWN1dGl2ZSBsaW5lcyBvZiB0ZXh0IHdoaWNoIHNwZWNpZmllcyB0aGUgYXV0aG9yIG9mIHRoZQotICBkb2N1bWVudC4KLQotICBUaGUgYXV0aG9yIHN1Yi1ibG9jayBtYXkgb3B0aW9uYWx5IGJlIGZvbGxvd2VkIGJ5IGEgZGF0ZSBzdWItYmxvY2sgdXNpbmcgdGhlCi0gIHNhbWUgc3ludGF4LgotCi0gIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBpcyB1c2VkIGZvciBhIGRvY3VtZW50IHdpdGggYW4gdGl0bGUgYW5kIGEgZGF0ZSBidXQKLSAgd2l0aCBubyBkZWNsYXJlZCBhdXRob3IuCi0KLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotCQkJCSAgICAtLS0tLS0KLQkJCQkgICAgVGl0bGUKLQkJCQkgICAgLS0tLS0tCi0JCQkJICAgIC0tLS0tLQotCQkJCSAgICAgRGF0ZQotCQkJCSAgICAtLS0tLS0KLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotCi0gIFRoZSBsYXN0IGxpbmUgaXMgaWdub3JlZC4gSXQgaXMganVzdCB0aGVyZSB0byBtYWtlIHRoZSBibG9jayBuaWNlci4KLQotKioqIFBhcmFncmFwaAotfn5+fn5+fn5+fn5+fgotCi0gIFBhcmFncmFwaHMgb3RoZXIgdGhhbiB0aGUgdGl0bGUgYmxvY2sgbWF5IGFwcGVhciBiZWZvcmUgdGhlIGZpcnN0IHNlY3Rpb24uCi0KLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICBQYXJhZ3JhcGggMSwgbGluZSAxLgotICBQYXJhZ3JhcGggMSwgbGluZSAyLgotCi0gIFBhcmFncmFwaCAyLCBsaW5lIDEuCi0gIFBhcmFncmFwaCAyLCBsaW5lIDIuCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLQotICBQYXJhZ3JhcGhzIGFyZSBpbmRlbnRlZC4gVGhleSBoYXZlIGFscmVhZHkgYmVlbiBkZXNjcmliZWQgaW4gdGhlIHt7ZG9jdW1lbnQKLSAgc3RydWN0dXJlfX0gc2VjdGlvbi4KLQotKioqIFNlY3Rpb24KLX5+fn5+fn5+fn5+Ci0KLSAgU2VjdGlvbnMgYXJlIGNyZWF0ZWQgYnkgaW5zZXJ0aW5nIHNlY3Rpb24gdGl0bGVzIGludG8gdGhlIGRvY3VtZW50LiBTaW1wbGUKLSAgZG9jdW1lbnRzIG5lZWQgbm90IGNvbnRhaW4gc2VjdGlvbnMuCi0KLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLVNlY3Rpb24gdGl0bGUKLQotKiBTdWItc2VjdGlvbiB0aXRsZQotCi0qKiBTdWItc3ViLXNlY3Rpb24gdGl0bGUKLQotKioqIFN1Yi1zdWItc3ViLXNlY3Rpb24gdGl0bGUKLQotKioqKiBTdWItc3ViLXN1Yi1zdWItc2VjdGlvbiB0aXRsZQotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotCi0gIFNlY3Rpb24gdGl0bGVzIGFyZSBub3QgaW5kZW50ZWQuIEEgc3ViLXNlY3Rpb24gdGl0bGUgYmVnaW5zIHdpdGggb25lCi0gIGFzdGVyaXNrICg8PDwqPj4+KSwgYSBzdWItc3ViLXNlY3Rpb24gdGl0bGUgYmVnaW5zIHdpdGggdHdvIGFzdGVyaXNrcwotICAoPDw8Kio+Pj4pLCBhbmQgc28gZm9ydGggdXAgdG8gZm91ciBzdWItc2VjdGlvbiBsZXZlbHMuCi0KLSoqKiBMaXN0Ci1+fn5+fn5+fgotCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAgKiBMaXN0IGl0ZW0gMS4KLQotICAgICAgKiBMaXN0IGl0ZW0gMi4KLQotCVBhcmFncmFwaCBjb250YWluZWQgaW4gbGlzdCBpdGVtIDIuCi0KLQkgICAgKiBTdWItbGlzdCBpdGVtIDEuCi0KLQkgICAgKiBTdWItbGlzdCBpdGVtIDIuCi0KLSAgICAgICogTGlzdCBpdGVtIDMuCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotCi0gIExpc3QgaXRlbXMgYXJlIGluZGVudGVkIGFuZCBiZWdpbiB3aXRoIGEgYXN0ZXJpc2sgKDw8PCo+Pj4pLiAKLQotICBQbGFpbiBwYXJhZ3JhcGhzIG1vcmUgaW5kZW50ZWQgdGhhbiB0aGUgZmlyc3QgbGlzdCBpdGVtIGFyZSBuZXN0ZWQgaW4gdGhhdAotICBsaXN0LiBEaXNwbGF5cyBzdWNoIGFzIHRhYmxlcyAobm90IGluZGVudGVkKSBhcmUgYWx3YXlzIG5lc3RlZCBpbiB0aGUKLSAgY3VycmVudCBsaXN0LgotCi0gIFRvIG5lc3QgYSBsaXN0IGluc2lkZSBhIGxpc3QsIGluZGVudCBpdHMgZmlyc3QgaXRlbSBtb3JlIHRoYW4gaXRzIHBhcmVudAotICBsaXN0LiBUbyBlbmQgYSBsaXN0LCBhZGQgYSBwYXJhZ3JhcGggb3IgbGlzdCBpdGVtIGxlc3MgaW5kZW50ZWQgdGhhbiB0aGUKLSAgY3VycmVudCBsaXN0LgotCi0gIFNlY3Rpb24gdGl0bGVzIGFsd2F5cyBlbmQgYSBsaXN0LiBEaXNwbGF5cyBjYW5ub3QgZW5kIGEgbGlzdCBidXQgdGhlCi0gIDw8PFtdPj4+IHBzZXVkby1lbGVtZW50IG1heSBiZSB1c2VkIHRvIGZvcmNlIHRoZSBlbmQgb2YgYSBsaXN0LgotCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAgKiBMaXN0IGl0ZW0gMy4KLSAgICAgICAgRm9yY2UgZW5kIG9mIGxpc3Q6Ci0KLSAgICAgIFtdCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1WZXJiYXRpbSB0ZXh0IG5vdCBjb250YWluZWQgaW4gbGlzdCBpdGVtIDMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotCi0gIEluIHRoZSBwcmV2aW91cyBleGFtcGxlLCB3aXRob3V0IHRoZSA8PDxbXT4+PiwgdGhlIHZlcmJhdGltIHRleHQgKG5vdAotICBpbmRlbnRlZCBhcyBhbGwgZGlzcGxheXMpIHdvdWxkIGhhdmUgYmVlbiBjb250YWluZWQgaW4gbGlzdCBpdGVtIDMuCi0KLSAgQSBzaW5nbGUgPDw8W10+Pj4gbWF5IGJlIHVzZWQgdG8gZW5kIHNldmVyYWwgbmVzdGVkIGxpc3RzIGF0IHRoZSBzYW1lCi0gIHRpbWUuIFRoZSBpbmRlbnRhdGlvbiBvZiA8PDxbXT4+PiBtYXkgYmUgdXNlZCB0byBzcGVjaWZ5IGV4YWN0bHkgd2hpY2gKLSAgbGlzdHMgc2hvdWxkIGJlIGVuZGVkLiBFeGFtcGxlOgotCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAgKiBMaXN0IGl0ZW0gMS4KLQotICAgICAgKiBMaXN0IGl0ZW0gMi4KLQotCSAgICAqIFN1Yi1saXN0IGl0ZW0gMS4KLQotCSAgICAqIFN1Yi1saXN0IGl0ZW0gMi4KLQotCSAgICBbXQotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1WZXJiYXRpbSB0ZXh0IGNvbnRhaW5lZCBpbiBsaXN0IGl0ZW0gMiwgYnV0IG5vdCBpbiBzdWItbGlzdCBpdGVtIDIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0KLSAgVGhlcmUgYXJlIHRocmVlIGtpbmQgb2YgbGlzdHMsIHRoZSBidWxsZXRlZCBsaXN0cyB3ZSBoYXZlIGFscmVhZHkgZGVzY3JpYmVkLAotICB0aGUgbnVtYmVyZWQgbGlzdHMgYW5kIHRoZSBkZWZpbml0aW9uIGxpc3RzLgotCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICAgICBbWzFdXSBOdW1iZXJlZCBpdGVtIDEuCi0KLSAgICAgICAgICAgICAgICBbW0FdXSBOdW1iZXJlZCBpdGVtIEEuCi0KLSAgICAgICAgICAgICAgICBbW0JdXSBOdW1iZXJlZCBpdGVtIEIuCi0KLSAgICAgIFtbMl1dIE51bWJlcmVkIGl0ZW0gMi4KLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLQotICBBIG51bWJlcmVkIGxpc3QgaXRlbSBiZWdpbnMgd2l0aCBhIGxhYmVsIGJlZXR3ZWVuIHR3byBzcXVhcmUgYnJhY2tldHMuIFRoZQotICBsYWJlbCBvZiB0aGUgZmlyc3QgaXRlbSBlc3RhYmxpc2hlcyB0aGUgbnVtYmVyaW5nIHNjaGVtZSBmb3IgdGhlIHdob2xlIGxpc3Q6Ci0KLSAgICAgIFs8PDxbWzFcXVxdPj4+XSBEZWNpbWFsIG51bWJlcmluZzogMSwgMiwgMywgNCwgZXRjLgotCi0gICAgICBbPDw8W1thXF1cXT4+Pl0gTG93ZXItYWxwaGEgbnVtYmVyaW5nOiBhLCBiLCBjLCBkLCBldGMuCi0KLSAgICAgIFs8PDxbW0FcXVxdPj4+XSBVcHBlci1hbHBoYSBudW1iZXJpbmc6IEEsIEIsIEMsIEQsIGV0Yy4KLQotICAgICAgWzw8PFtbaVxdXF0+Pj5dIExvd2VyLXJvbWFuIG51bWJlcmluZzogaSwgaWksIGlpaSwgaXYsIGV0Yy4KLQotICAgICAgWzw8PFtbSVxdXF0+Pj5dIFVwcGVyLXJvbWFuIG51bWJlcmluZzogSSwgSUksIElJSSwgSVYsIGV0Yy4KLQotICBUaGUgbGFiZWxzIG9mIHRoZSBpdGVtcyBvdGhlciB0aGFuIHRoZSBmaXJzdCBvbmUgYXJlIGlnbm9yZWQuIEl0IGlzCi0gIHJlY29tbWVuZGVkIHRvIHRha2UgdGhlIHRpbWUgdG8gdHlwZSB0aGUgY29ycmVjdCBsYWJlbCBmb3IgZWFjaCBpdGVtIGluCi0gIG9yZGVyIHRvIGtlZXAgdGhlIEFQVCBzb3VyY2UgZG9jdW1lbnQgcmVhZGFibGUuCi0KLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAgW0RlZmluZWQgdGVybSAxXSBvZiBkZWZpbml0aW9uIGxpc3QgMi4KLQotICAgICAgW0RlZmluZWQgdGVybSAyXSBvZiBkZWZpbml0aW9uIGxpc3QgMi4KLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotCi0gIEEgZGVmaW5pdGlvbiBsaXN0IGl0ZW0gYmVnaW5zIHdpdGggYSBkZWZpbmVkIHRlcm06IHRleHQgYmV0d2VlbiBzcXVhcmUKLSAgYnJhY2tldHMuCi0KLSoqKiBWZXJiYXRpbSB0ZXh0Ci1+fn5+fn5+fn5+fn5+fn5+fgotCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVZlcmJhdGltIAotCSB0ZXh0LAotCQlwcmVmb3JtYXR0ZWQsCi0JCQkJZXNjYXBlZC4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotCi0gIEEgdmVyYmF0aW0gYmxvY2sgaXMgbm90IGluZGVudGVkLiBJdCBiZWdpbnMgd2l0aCBhIG5vbiBpbmRlbnRlZCBsaW5lCi0gIGNvbnRhaW5pbmcgYXQgbGVhc3QgMyBkYXNoZXMgKDw8PC0tLT4+PikuIEl0IGVuZHMgd2l0aCBhIHNpbWlsYXIgbGluZS4KLQotICA8PDwrLS0+Pj4gaW5zdGVhZCBvZiA8PDwtLS0+Pj4gZHJhd3MgYSBib3ggYXJvdW5kIHZlcmJhdGltIHRleHQuCi0KLSAgTGlrZSBpbiBIVE1MLCB2ZXJiYXRpbSB0ZXh0IGlzIHByZWZvcm1hdHRlZC4gVW5saWtlIEhUTUwsIHZlcmJhdGltIHRleHQgaXMKLSAgZXNjYXBlZDogaW5zaWRlIGEgdmVyYmF0aW0gZGlzcGxheSwgbWFya3VwIGlzIG5vdCBpbnRlcnByZXRlZCBieSB0aGUgQVBUCi0gIHByb2Nlc3Nvci4KLQotKioqIEZpZ3VyZQotfn5+fn5+fn5+fgotCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotW0ZpZ3VyZSBuYW1lXSBGaWd1cmUgY2FwdGlvbgotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLQotICBBIGZpZ3VyZSBibG9jayBpcyBub3QgaW5kZW50ZWQuIEl0IGJlZ2lucyB3aXRoIHRoZSBmaWd1cmUgbmFtZSBiZXR3ZWVuCi0gIHNxdWFyZSBicmFja2V0cy4gVGhlIGZpZ3VyZSBuYW1lIGlzIG9wdGlvbmFsbHkgZm9sbG93ZWQgYnkgc29tZSB0ZXh0OiB0aGUKLSAgZmlndXJlIGNhcHRpb24uCi0KLSAgVGhlIGZpZ3VyZSBuYW1lIGlzIHRoZSBwYXRobmFtZSBvZiB0aGUgZmlsZSBjb250YWluaW5nIHRoZSBmaWd1cmUgYnV0Ci0gIHdpdGhvdXQgYW4gZXh0ZW5zaW9uLiBFeGFtcGxlOiBpZiB5b3VyIGZpZ3VyZSBpcyBjb250YWluZWQgaW4KLSAgPDw8L2hvbWUvam9lL2RvY3MvbXlsb2dvLmpwZWc+Pj4sIHRoZSBmaWd1cmUgbmFtZSBpcwotICA8PDwvaG9tZS9qb2UvZG9jcy9teWxvZ28+Pj4uCi0KLSAgSWYgdGhlIGZpZ3VyZSBuYW1lIGNvbWVzIGZyb20gYSByZWxhdGl2ZSBwYXRobmFtZSAocmVjb21tZW5kZWQgcHJhY3RpY2UpCi0gIHJhdGhlciB0aGFuIGZyb20gYW4gYWJzb2x1dGUgcGF0aG5hbWUsIHRoaXMgcmVsYXRpdmUgcGF0aG5hbWUgaXMgdGFrZW4gdG8gYmUKLSAgcmVsYXRpdmUgdG8gdGhlIGRpcmVjdG9yeSBvZiB0aGUgY3VycmVudCBBUFQgZG9jdW1lbnQgKGEgbGEgSFRNTCkKLSAgcmF0aGVyIHRoYW4gcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCi0KLSAgV2h5IG5vdCBsZWF2ZSB0aGUgZmlsZSBleHRlbnNpb24gaW4gdGhlIGZpZ3VyZSBuYW1lPyBUaGlzIGlzIGJldHRlcgotICBleHBsYWluZWQgYnkgYW4gZXhhbXBsZS4gWW91IG5lZWQgdG8gY29udmVydCBhbiBBUFQgZG9jdW1lbnQgdG8gUG9zdFNjcmlwdAotICBhbmQgeW91ciBmaWd1cmUgbmFtZSBpcyA8PDwvaG9tZS9qb2UvZG9jcy9teWxvZ28+Pj4uIEEgQVBUIHByb2Nlc3NvciB3aWxsCi0gIGZpcnN0IHRyeSB0byBsb2FkIDw8PC9ob21lL2pvZS9kb2NzL215bG9nby5lcHM+Pj4uIFdoZW4gdGhlIGRlc2lyZWQgZm9ybWF0Ci0gIGlzIG5vdCBmb3VuZCwgYSBBUFQgcHJvY2Vzc29yIHRyaWVzIHRvIGNvbnZlcnQgb25lIG9mIHRoZSBleGlzdGluZwotICBmb3JtYXRzLiBJbiBvdXIgZXhhbXBsZSwgdGhlIEFQVCBwcm9jZXNzb3IgdHJpZXMgdG8gY29udmVydAotICA8PDwvaG9tZS9qb2UvZG9jcy9teWxvZ28uanBlZz4+PiB0byBlbmNhcHN1bGF0ZWQgUG9zdFNjcmlwdC4KLQotKioqIFRhYmxlCi1+fn5+fn5+fn4KLQotICBBIHRhYmxlIGJsb2NrIGlzIG5vdCBpbmRlbnRlZC4gSXQgYmVnaW5zIHdpdGggYSBub24gaW5kZW50ZWQgbGluZSBjb250YWluaW5nCi0gIGFuIGFzdGVyaXNrIGFuZCBhdCBsZWFzdCAyIGRhc2hlcyAoPDw8Ki0tPj4+KS4gSXQgZW5kcyB3aXRoIGEKLSAgc2ltaWxhciBsaW5lLgotCi0gIFRoZSBmaXJzdCBsaW5lIGlzIG5vdCBvbmx5IHVzZWQgdG8gcmVjb2duaXplIGEgdGFibGUgYnV0IGFsc28gdG8gc3BlY2lmeQotICBjb2x1bW4ganVzdGlmaWNhdGlvbi4gSW4gdGhlIGZvbGxvd2luZyBleGFtcGxlLCAKLQotICAgICAgKiB0aGUgc2Vjb25kIGFzdGVyaXNrICg8PDwqPj4+KSBpcyB1c2VkIHRvIHNwZWNpZnkgdGhhdCBjb2x1bW4gMSBpcwotICAgICAgICBjZW50ZXJlZCwKLQotICAgICAgKiB0aGUgcGx1cyBzaWduICg8PDwrPj4+KSBzcGVjaWZpZXMgdGhhdCBjb2x1bW4gMiBpcyBsZWZ0IGFsaWduZWQsIAotCi0gICAgICAqIHRoZSBjb2xvbiAoPDw8Oj4+Pikgc3BlY2lmaWVzIHRoYXQgY29sdW1uIDMgaXMgcmlnaHQgYWxpZ25lZC4KLQotICAgICAgW10KLQotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSotLS0tLS0tLS0tKi0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS06Ci18IENlbnRlcmVkIHwgTGVmdC1hbGlnbmVkIHwgUmlnaHQtYWxpZ25lZCAgfAotfCBjZWxsIDEsMSB8IGNlbGwgMSwyICAgICB8IGNlbGwgMSwzICAgICAgIHwKLSotLS0tLS0tLS0tKi0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS06Ci18IGNlbGwgMiwxIHwgY2VsbCAyLDIgICAgIHwgY2VsbCAyLDMgICAgICAgfAotKi0tLS0tLS0tLS0qLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLToKLVRhYmxlIGNhcHRpb24KLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0KLSAgUm93cyBhcmUgc2VwYXJhdGVkIGJ5IGEgbm9uIGluZGVudGVkIGxpbmUgYmVnaW5uaW5nIHdpdGggPDw8Ki0tPj4+LgotCi0gIEFuIG9wdGlvbmFsIHRhYmxlIGNhcHRpb24gKG5vbiBpbmRlbnRlZCB0ZXh0KSBtYXkgaW1tZWRpYXRlbHkgZm9sbG93IHRoZQotICB0YWJsZS4KLQotICBSb3dzIG1heSBjb250YWluIHNpbmdsZSBsaW5lIG9yIG11bHRpcGxlIGxpbmUgY2VsbHMuIEVhY2ggbGluZSBvZiBjZWxsIHRleHQKLSAgaXMgc2VwYXJhdGVkIGZyb20gdGhlIGFkamFjZW50IGNlbGwgYnkgdGhlIHBpcGUgY2hhcmFjdGVyICg8PDx8Pj4+KS4KLSAgKDw8PHw+Pj4gbWF5IGJlIHVzZWQgaW4gdGhlIGNlbGwgdGV4dCBpZiBxdW90ZWQ6IDw8PFxcfD4+Pi4pCi0KLSAgVGhlIGxhc3QgPDw8fD4+PiBpcyBvbmx5IHVzZWQgdG8gbWFrZSB0aGUgdGFibGUgbmljZXIuICBUaGUgZmlyc3QgPDw8fD4+PiBpcwotICBub3Qgb25seSB1c2VkIHRvIG1ha2UgdGhlIHRhYmxlIG5pY2VyLCBidXQgYWxzbyB0byBzcGVjaWZ5IHRoYXQgYSBncmlkIGlzIHRvCi0gIGJlIGRyYXduIGFyb3VuZCB0YWJsZSBjZWxscy4KLQotICBUaGUgZm9sbG93aW5nIGV4YW1wbGUgc2hvd3MgYSBzaW1wbGUgdGFibGUgd2l0aCBubyBncmlkIGFuZCBubyBjYXB0aW9uLgotCi0rLS0tLS0tLS0tLS0tLS0tKwotKi0tLS0tKi0tLS0tLSoKLSBjZWxsIHwgY2VsbAotKi0tLS0tKi0tLS0tLSoKLSBjZWxsIHwgY2VsbAotKi0tLS0tKi0tLS0tLSoKLSstLS0tLS0tLS0tLS0tLS0rCi0KLSoqKiBIb3Jpem9udGFsIHJ1bGUKLX5+fn5+fn5+fn5+fn5+fn5+fn4KLQotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLT09PT09PT09PT09PT09PT09PT09PQotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLQotICBBIG5vbiBpbmRlbnRlZCBsaW5lIGNvbnRhaW5pbmcgYXQgbGVhc3QgMyBlcXVhbCBzaWducyAoPDw8PT09Pj4+KS4KLQotKioqIFBhZ2UgYnJlYWsKLX5+fn5+fn5+fn5+fn5+Ci0KLSstLS0rCi1eTAotKy0tLSsKLQotICBBIG5vbiBpbmRlbnRlZCBsaW5lIGNvbnRhaW5pbmcgYSBzaW5nbGUgZm9ybSBmZWVkIGNoYXJhY3RlciAoQ29udHJvbC1MKS4KLQotKiogVGV4dCBsZXZlbCBlbGVtZW50cwotfn5+fn5+fn5+fn5+fn5+fn5+fn5+fgotCi0qKiogRm9udAotfn5+fn5+fn4KLQotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICA8SXRhbGljPiBmb250LiA8PEJvbGQ+PiBmb250LiA8PDxNb25vc3BhY2VkPj4+IGZvbnQuCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0KLSAgVGV4dCBiZXR3ZWVuIFw8IGFuZCA+IG11c3QgYmUgcmVuZGVyZWQgaW4gaXRhbGljLiBUZXh0IGJldHdlZW4gXDxcPCBhbmQgPj4KLSAgbXVzdCBiZSByZW5kZXJlZCBpbiBib2xkLiBUZXh0IGJldHdlZW4gXDxcPFw8IGFuZCA+Pj4gbXVzdCBiZSByZW5kZXJlZCB1c2luZwotICBhIG1vbm9zcGFjZWQsIHR5cGV3cml0ZXItbGlrZSBmb250LgotCi0gIEZvbnQgZWxlbWVudHMgbWF5IGFwcGVhciBhbnl3aGVyZSBleGNlcHQgaW5zaWRlIG90aGVyIGZvbnQgZWxlbWVudHMuCi0KLSAgSXQgaXMgbm90IHJlY29tbWVuZGVkIHRvIHVzZSBmb250IGVsZW1lbnRzIGluc2lkZSB0aXRsZXMsIHNlY3Rpb24gdGl0bGVzLAotICBsaW5rcyBhbmQgZGVmaW5lZCB0ZXJtcyBiZWNhdXNlIGEgQVBUIHByb2Nlc3NvciBhdXRvbWF0aWNhbGx5IGFwcGxpZXMKLSAgYXBwcm9wcmlhdGUgZm9udCBzdHlsZXMgdG8gdGhlc2UgZWxlbWVudHMuCi0KLSoqKiBBbmNob3IgYW5kIGxpbmsKLX5+fn5+fn5+fn5+fn5+fn5+fn4KLQotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICB7QW5jaG9yfS4gTGluayB0byB7e2FuY2hvcn19LiBMaW5rIHRvIHt7aHR0cDovL3d3dy5waXh3YXJlLmZyfX0uIAotICBMaW5rIHRvIHt7e2FuY2hvcn1zaG93aW5nIGFsdGVybmF0ZSB0ZXh0fX0uCi0gIExpbmsgdG8ge3t7aHR0cDovL3d3dy5waXh3YXJlLmZyfVBpeHdhcmUgaG9tZSBwYWdlfX0uCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0KLSAgVGV4dCBiZXR3ZWVuIGN1cmx5IGJyYWNlcyAoPDw8XHt9Pj4+KSBzcGVjaWZpZXMgYW4gYW5jaG9yLiBUZXh0IGJldHdlZW4KLSAgZG91YmxlIGN1cmx5IGJyYWNlcyAoPDw8XHtce319Pj4+KSBzcGVjaWZpZXMgYSBsaW5rLgotCi0gIEl0IGlzIGFuIGVycm9yIHRvIGNyZWF0ZSBhIGxpbmsgZWxlbWVudCB0aGF0IGRvZXMgbm90IHJlZmVyIHRvIGFuIGFuY2hvciBvZgotICB0aGUgc2FtZSBuYW1lLiBUaGUgbmFtZSBvZiBhbiBhbmNob3IvbGluayBpcyBpdHMgdGV4dCB3aXRoIGFsbCBub24KLSAgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgc3RyaXBwZWQuCi0KLSAgVGhpcyBydWxlIGRvZXMgbm90IGFwcGx5IHRvIGxpbmtzIHRvIDxleHRlcm5hbD4gYW5jaG9ycy4gVGV4dCBiZWdpbm5pbmcKLSAgd2l0aCA8PDxodHRwOi8+Pj4sIDw8PGh0dHBzOi8+Pj4sIDw8PGZ0cDovPj4+LCA8PDxmaWxlOi8+Pj4sIDw8PG1haWx0bzo+Pj4sCi0gIDw8PC4uLz4+PiwgPDw8Li8+Pj4gKDw8PC4uXFw+Pj4gYW5kIDw8PC5cXD4+PiBvbiBXaW5kb3dzKSBpcyByZWNvZ25pemVkIGFzCi0gIGFuIGV4dGVybmFsIGFuY2hvciBuYW1lLgotCi0gIFdoZW4gdGhlIGNvbnN0cnVjdCA8PFx7XHtcez4+PG5hbWU+PDx9Pj48dGV4dD48PH19Pj4gaXMgdXNlZCwgdGhlIGxpbmsgdGV4dAotICA8dGV4dD4gbWF5IGRpZmZlciBmcm9tIHRoZSBsaW5rIG5hbWUgPG5hbWU+LgotCi0gIEFuY2hvci9saW5rIGVsZW1lbnRzIG1heSBhcHBlYXIgYW55d2hlcmUgZXhjZXB0IGluc2lkZSBvdGhlciBhbmNob3IvbGluawotICBlbGVtZW50cy4KLQotICBTZWN0aW9uIHRpdGxlcyBhcmUgaW1wbGljaXRseSBkZWZpbmVkIGFuY2hvcnMuCi0KLSoqKiBMaW5lIGJyZWFrCi1+fn5+fn5+fn5+fn5+fgotCi0rLS0tLS0tLS0tLS0tLSsKLSAgRm9yY2UgbGluZVwKLSAgYnJlYWsuCi0rLS0tLS0tLS0tLS0tLSsKLQotICBBIGJhY2tzbGFzaCBjaGFyYWN0ZXIgKDw8PFxcPj4+KSBmb2xsb3dlZCBieSBhIG5ld2xpbmUgY2hhcmFjdGVyLgotCi0gIExpbmUgYnJlYWtzIG11c3Qgbm90IGJlIHVzZWQgaW5zaWRlIHRpdGxlcyBhbmQgdGFibGVzICh3aGljaCBhcmUgbGluZQotICBvcmllbnRlZCBibG9ja3Mgd2l0aCBpbXBsaWNpdCBsaW5lIGJyZWFrcykuCi0KLSoqKiBOb24gYnJlYWtpbmcgc3BhY2UKLX5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KLQotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gIE5vblwgYnJlYWtpbmdcIHNwYWNlLgotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0KLSAgQSBiYWNrc2xhc2ggY2hhcmFjdGVyICg8PDxcXD4+PikgZm9sbG93ZWQgYnkgYSBzcGFjZSBjaGFyYWN0ZXIuCi0KLSoqKiBTcGVjaWFsIGNoYXJhY3Rlcgotfn5+fn5+fn5+fn5+fn5+fn5+fn5+Ci0KLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gIEVzY2FwZWQgc3BlY2lhbCBjaGFyYWN0ZXJzOiBcfiwgXD0sIFwtLCBcKywgXCosIFxbLCBcXSwgXDwsIFw+LCBceywgXH0sIFxcLgotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLQotICBJbiBjZXJ0YWluIGNvbnRleHRzLCB0aGVzZSBjaGFyYWN0ZXJzIGhhdmUgYSBzcGVjaWFsIG1lYW5pbmcgYW5kIHRoZXJlZm9yZQotICBtdXN0IGJlIGVzY2FwZWQgaWYgbmVlZGVkIGFzIGlzLiBUaGV5IGFyZSBlc2NhcGVkIGJ5IGFkZGluZyBhIGJhY2tzbGFzaCBpbgotICBmcm9udCBvZiB0aGVtLiBUaGUgYmFja3NsYXNoIG1heSBpdHNlbGYgYmUgZXNjYXBlZCBieSBhZGRpbmcgYW5vdGhlcgotICBiYWNrc2xhc2ggaW4gZnJvbnQgb2YgaXQuCi0KLSAgTm90ZSB0aGF0IGFuIGFzdGVyaXNrLCBmb3IgZXhhbXBsZSwgbmVlZHMgdG8gYmUgZXNjYXBlZCBvbmx5IGlmIGl0cyBiZWdpbnMgYQotICBwYXJhZ3JhcGguICg8PDwqPj4+IGhhcyBubyBzcGVjaWFsIG1lYW5pbmcgaW4gdGhlIG1pZGRsZSBvZiBhIHBhcmFncmFwaC4pCi0KLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgQ29weXJpZ2h0IHN5bWJvbDogXDI1MSwgXHhBOSwgXHUwMGE5LgotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotCi0gIExhdGluLTEgY2hhcmFjdGVycyAod2hhdGV2ZXIgaXMgdGhlIGVuY29kaW5nIG9mIHRoZSBBUFQgZG9jdW1lbnQpIG1heSBiZQotICBzcGVjaWZpZWQgYnkgdGhlaXIgY29kZXMgdXNpbmcgYSBiYWNrc2xhc2ggZm9sbG93ZWQgYnkgb25lIHRvIHRocmVlIG9jdGFsCi0gIGRpZ2l0cyBvciBieSB1c2luZyB0aGUgPDw8XHg+Pj48Tk4+IG5vdGF0aW9uLCB3aGVyZSA8Tk4+IGFyZSB0d28gaGV4YWRlY2ltYWwKLSAgZGlnaXRzLgotCi0gIFVuaWNvZGUgY2hhcmFjdGVycyBtYXkgYmUgc3BlY2lmaWVkIGJ5IHRoZWlyIGNvZGVzIHVzaW5nIHRoZSA8PDxcdT4+PjxOTk5OPgotICBub3RhdGlvbiwgd2hlcmUgPE5OTk4+IGFyZSBmb3VyIGhleGFkZWNpbWFsIGRpZ2l0cy4KLQotKioqIENvbW1lbnQKLX5+fn5+fn5+fn5+Ci0KLSstLS0tLS0tLS0tLS0tLS0rCi1+fkNvbW1lbnRlZCBvdXQuCi0rLS0tLS0tLS0tLS0tLS0tKwotCi0gIFRleHQgZm91bmQgYWZ0ZXIgdHdvIHRpbGRlcyAoPDw8XH5+Pj4+KSBpcyBpZ25vcmVkIHVwIHRvIHRoZSBlbmQgb2YgbGluZS4KLQotICBBIGxpbmUgb2YgPDw8fj4+PiBpcyBvZnRlbiB1c2VkIHRvIGBgdW5kZXJsaW5lJycgc2VjdGlvbiB0aXRsZXMgaW4gb3JkZXIgdG8KLSAgbWFrZSB0aGVtIHN0YW5kIG91dCBvZiBvdGhlciBwYXJhZ3JhcGhzLgotCi0MCi0qIFRoZSBBUFQgZm9ybWF0IGF0IGEgZ2xhbmNlCi1+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+Ci0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCQkJCSAgICAtLS0tLS0KLQkJCQkgICAgVGl0bGUKLQkJCQkgICAgLS0tLS0tCi0JCQkJICAgIEF1dGhvcgotCQkJCSAgICAtLS0tLS0KLQkJCQkgICAgIERhdGUKLQotICBQYXJhZ3JhcGggMSwgbGluZSAxLgotICBQYXJhZ3JhcGggMSwgbGluZSAyLgotCi0gIFBhcmFncmFwaCAyLCBsaW5lIDEuCi0gIFBhcmFncmFwaCAyLCBsaW5lIDIuCi0KLVNlY3Rpb24gdGl0bGUKLQotKiBTdWItc2VjdGlvbiB0aXRsZQotCi0qKiBTdWItc3ViLXNlY3Rpb24gdGl0bGUKLQotKioqIFN1Yi1zdWItc3ViLXNlY3Rpb24gdGl0bGUKLQotKioqKiBTdWItc3ViLXN1Yi1zdWItc2VjdGlvbiB0aXRsZQotCi0gICAgICAqIExpc3QgaXRlbSAxLgotCi0gICAgICAqIExpc3QgaXRlbSAyLgotCi0JUGFyYWdyYXBoIGNvbnRhaW5lZCBpbiBsaXN0IGl0ZW0gMi4KLQotCSAgICAqIFN1Yi1saXN0IGl0ZW0gMS4KLQotCSAgICAqIFN1Yi1saXN0IGl0ZW0gMi4KLQotICAgICAgKiBMaXN0IGl0ZW0gMy4KLSAgICAgICAgRm9yY2UgZW5kIG9mIGxpc3Q6Ci0KLSAgICAgIFtdCi0KLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi1WZXJiYXRpbSB0ZXh0IG5vdCBjb250YWluZWQgaW4gbGlzdCBpdGVtIDMKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0KLSAgICAgIFtbMV1dIE51bWJlcmVkIGl0ZW0gMS4KLQotICAgICAgICAgICAgICAgIFtbQV1dIE51bWJlcmVkIGl0ZW0gQS4KLQotICAgICAgICAgICAgICAgIFtbQl1dIE51bWJlcmVkIGl0ZW0gQi4KLQotICAgICAgW1syXV0gTnVtYmVyZWQgaXRlbSAyLgotCi0gIExpc3QgbnVtYmVyaW5nIHNjaGVtZXM6IFtbMV1dLCBbW2FdXSwgW1tBXV0sIFtbaV1dLCBbW0ldXS4KLQotICAgICAgW0RlZmluZWQgdGVybSAxXSBvZiBkZWZpbml0aW9uIGxpc3QuCi0KLSAgICAgIFtEZWZpbmVkIHRlcm0gMl0gb2YgZGVmaW5pdGlvbiBsaXN0LgotCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLVZlcmJhdGltIHRleHQKLQkJCWluIGEgYm94CQotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0KLSAgLS0tIGluc3RlYWQgb2YgKy0tIHN1cHByZXNzZXMgdGhlIGJveCBhcm91bmQgdmVyYmF0aW0gdGV4dC4KLQotW0ZpZ3VyZSBuYW1lXSBGaWd1cmUgY2FwdGlvbgotCi0qLS0tLS0tLS0tLSotLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tOgotfCBDZW50ZXJlZCB8IExlZnQtYWxpZ25lZCB8IFJpZ2h0LWFsaWduZWQgIHwKLXwgY2VsbCAxLDEgfCBjZWxsIDEsMiAgICAgfCBjZWxsIDEsMyAgICAgICB8Ci0qLS0tLS0tLS0tLSotLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tOgotfCBjZWxsIDIsMSB8IGNlbGwgMiwyICAgICB8IGNlbGwgMiwzICAgICAgIHwKLSotLS0tLS0tLS0tKi0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS06Ci1UYWJsZSBjYXB0aW9uCi0KLSAgTm8gZ3JpZCwgbm8gY2FwdGlvbjoKLQotKi0tLS0tKi0tLS0tLSoKLSBjZWxsIHwgY2VsbAotKi0tLS0tKi0tLS0tLSoKLSBjZWxsIHwgY2VsbAotKi0tLS0tKi0tLS0tLSoKLQotICBIb3Jpem9udGFsIGxpbmU6Ci0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLV5MCi0gIE5ldyBwYWdlLgotCi0gIDxJdGFsaWM+IGZvbnQuIDw8Qm9sZD4+IGZvbnQuIDw8PE1vbm9zcGFjZWQ+Pj4gZm9udC4KLQotICB7QW5jaG9yfS4gTGluayB0byB7e2FuY2hvcn19LiBMaW5rIHRvIHt7aHR0cDovL3d3dy5waXh3YXJlLmZyfX0uIAotICBMaW5rIHRvIHt7e2FuY2hvcn1zaG93aW5nIGFsdGVybmF0ZSB0ZXh0fX0uCi0gIExpbmsgdG8ge3t7aHR0cDovL3d3dy5waXh3YXJlLmZyfVBpeHdhcmUgaG9tZSBwYWdlfX0uCi0KLSAgRm9yY2UgbGluZVwKLSAgYnJlYWsuCi0KLSAgTm9uXCBicmVha2luZ1wgc3BhY2UuCi0KLSAgRXNjYXBlZCBzcGVjaWFsIGNoYXJhY3RlcnM6IFx+LCBcPSwgXC0sIFwrLCBcKiwgXFssIFxdLCBcPCwgXD4sIFx7LCBcfSwgXFwuCi0KLSAgQ29weXJpZ2h0IHN5bWJvbDogXDI1MSwgXHhBOSwgXHUwMGE5LgotCi1+fkNvbW1lbnRlZCBvdXQuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCmRpZmYgLS1naXQgYS9tYXZlbi1hcmNoZXR5cGUtc2l0ZS9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvc2l0ZS9hcHQvaW5kZXguYXB0IGIvbWF2ZW4tYXJjaGV0eXBlLXNpdGUvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvc3JjL3NpdGUvYXB0L2luZGV4LmFwdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzE0MDQzYy4uMDAwMDAwMAotLS0gYS9tYXZlbi1hcmNoZXR5cGUtc2l0ZS9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvc2l0ZS9hcHQvaW5kZXguYXB0CisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotIC0tLS0tCi0gVGhlIFNpdGUKLSAtLS0tLQotIFRoZSBNYXZlbiBUZWFtCi0gLS0tLS0KLQotTWF2ZW4gU2l0ZSBmb3IgeW91ciBwcm9qZWN0Ci0KLSBDb25ncmF0dWxhdGlvbnMhIElmIHlvdSBhcmUgbG9va2luZyBhdCB0aGlzIHBhZ2UgdGhlbiB5b3UgaGF2ZSBzdWNjZXNzZnVsbHkgZ2VuZXJhdGVkIGEKLSB0ZW1wbGF0ZSBzaXRlIGVtcGxveWluZyB0aGUgc2l0ZSBhcmNoZXR5cGUgYW5kIHlvdSBoYXZlIHJ1bjoKLSAgCi0rLS0tLS0rCi0KLW0yIHNpdGU6c2l0ZQotCi0rLS0tLS0rCmRpZmYgLS1naXQgYS9tYXZlbi1hcmNoZXR5cGUtc2l0ZS9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvc2l0ZS9mbWwvZmFxLmZtbCBiL21hdmVuLWFyY2hldHlwZS1zaXRlL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy9zaXRlL2ZtbC9mYXEuZm1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZWI0OGUwLi4wMDAwMDAwCi0tLSBhL21hdmVuLWFyY2hldHlwZS1zaXRlL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy9zaXRlL2ZtbC9mYXEuZm1sCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIj8+Ci08ZmFxcyBpZD0iR2VuZXJhbCBGQVEiPgotICA8cGFydCBpZD0iR2VuZXJhbCI+Ci0gICAgPGZhcSBpZD0id2hlcmUiPgotICAgICAgPHF1ZXN0aW9uPldoZXJlIGRpZCBNYXZlbiBjb21lIGZyb20/PC9xdWVzdGlvbj4KLSAgICAgIDxhbnN3ZXI+Ci0gICAgICAgIDxwPgotICAgICAgICAgIE1hdmVuIHdhcyBjcmVhdGVkIGJ5IGEgZ3JvdXAgb2Ygc29mdHdhcmUgZGV2ZWxvcGVycyB3aG8gd2VyZSB0aXJlZAotICAgICAgICAgIG9mIHdhc3RpbmcgdGhlaXIgdGltZSBmaWRkbGluZyBhcm91bmQgd2l0aCBidWlsZHMgYW5kIHdhbnRlZCB0byBnZXQKLSAgICAgICAgICBkb3duIHRvIGJyYXNzIHRhY2tzIGFuZCBhY3R1YWxseSBkZXZlbG9wIHNvZnR3YXJlIQotICAgICAgICA8L3A+Ci0gICAgICA8L2Fuc3dlcj4KLSAgICA8L2ZhcT4KLSAgICA8ZmFxIGlkPSJ3aHkiPgotICAgICAgPHF1ZXN0aW9uPldoeSBpcyBtYXZlbiBzbyB3aWxkbHkgcG9wdWxhcj88L3F1ZXN0aW9uPgotICAgICAgPGFuc3dlcj4KLSAgICAgICAgPHA+Ci0gICAgICAgICAgTWF2ZW4gc2F2ZXMgeW91IHNvIG11Y2ggdGltZSBpbiB5b3VyIHNvZnR3YXJlIGRldmVsb3BtZW50IGVmZm9ydHMgdGhhdAotICAgICAgICAgIHlvdSB3aWxsIGhhdmUgdGltZSB0byBsZWFybiBhIHNlY29uZCBsYW5ndWFnZSwgcmVsYXggdGVuIGhvdXJzIGEKLSAgICAgICAgICBkYXksIGFuZCB0cmFpbiBmb3IgdGhhdCBtYXJhdGhvbiB5b3UndmUgYWx3YXlzIHdhbnRlZCB0byBydW4hCi0gICAgICAgIDwvcD4KLSAgICAgIDwvYW5zd2VyPgotICAgIDwvZmFxPgotICA8L3BhcnQ+Ci08L2ZhcXM+CmRpZmYgLS1naXQgYS9tYXZlbi1hcmNoZXR5cGUtc2l0ZS9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvc2l0ZS9mci9hcHQvZm9ybWF0LmFwdCBiL21hdmVuLWFyY2hldHlwZS1zaXRlL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy9zaXRlL2ZyL2FwdC9mb3JtYXQuYXB0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjdjMzI5Li4wMDAwMDAwCi0tLSBhL21hdmVuLWFyY2hldHlwZS1zaXRlL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy9zaXRlL2ZyL2FwdC9mb3JtYXQuYXB0CisrKyAvZGV2L251bGwKQEAgLTEsNTk2ICswLDAgQEAKLQwKLUxlIGZvcm1hdCBBUFQKLX5+fn5+fn5+fn5+fn4KLQotICAgRGFucyBsYSBzZWN0aW9uIHN1aXZhbnRlLCBsZXMgYm/udGVzIGNvbnRlbmFudCBkdSB0ZXh0ZSBkYW5zIGxhIHBvbGljZQotICAgZGUgdHlwZSBtYWNoaW5lIOAg6WNyaXJlIHNvbnQgZGVzIGV4ZW1wbGVzIGRlIHNvdXJjZSBBUFQuCi0KLSogU3RydWN0dXJlIGR1IGRvY3VtZW50Ci1+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgotCi0gIEEgc2hvcnQgQVBUIGRvY3VtZW50IGlzIGNvbnRhaW5lZCBpbiBhIHNpbmdsZSB0ZXh0IGZpbGUuIEEgbG9uZ2VyIGRvY3VtZW50Ci0gIG1heSBiZSBjb250YWluZWQgaW4gYSBvcmRlcmVkIGxpc3Qgb2YgdGV4dCBmaWxlcy4gRm9yIGluc3RhbmNlLCBmaXJzdCB0ZXh0Ci0gIGZpbGUgY29udGFpbnMgc2VjdGlvbiAxLCBzZWNvbmQgdGV4dCBmaWxlIGNvbnRhaW5zIHNlY3Rpb24gMiwgYW5kIHNvIG9uLgotCi0gICAgICBbTm90ZTpdIFNwbGl0dGluZyB0aGUgQVBUIGRvY3VtZW50IGluIHNldmVyYWwgdGV4dCBmaWxlcyBvbiBhIHNlY3Rpb24KLSAgICAgICAgICAgICAgYm91bmRhcnkgaXMgbm90IG1hbmRhdG9yeS4gVGhlIHNwbGl0IG1heSBvY2N1ciBhbnl3aGVyZS4KLSAgICAgICAgICAgICAgSG93ZXZlciBkb2luZyBzbyBpcyByZWNvbW1lbmRlZCBiZWNhdXNlIGEgdGV4dCBmaWxlIGNvbnRhaW5pbmcgYQotICAgICAgICAgICAgICBzZWN0aW9uIGlzIGJ5IGl0c2VsZiBhIHZhbGlkIEFQVCBkb2N1bWVudC4KLQotICBBIGZpbGUgY29udGFpbnMgYSBzZXF1ZW5jZSBvZiBwYXJhZ3JhcGhzIGFuZCBgYGRpc3BsYXlzJycgKG5vbiBwYXJhZ3JhcGhzCi0gIHN1Y2ggYXMgdGFibGVzKSBzZXBhcmF0ZWQgYnkgb3BlbiBsaW5lcy4KLQotICBBIHBhcmFncmFwaCBpcyBzaW1wbHkgYSBzZXF1ZW5jZSBvZiBjb25zZWN1dGl2ZSB0ZXh0IGxpbmVzLgotCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICBGaXJzdCBsaW5lIG9mIGZpcnN0IHBhcmFncmFwaC4KLSAgU2Vjb25kIGxpbmUgb2YgZmlyc3QgcGFyYWdyYXBoLgotICBUaGlyZCBsaW5lIG9mIGZpcnN0IHBhcmFncmFwaC4KLSAgCi0gIExpbmUgMSBvZiBwYXJhZ3JhcGggMiAoc2VwYXJhdGVkIGZyb20gZmlyc3QgcGFyYWdyYXBoIGJ5IGFuIG9wZW4gbGluZSkuCi0gIExpbmUgMiBvZiBwYXJhZ3JhcGggMi4KLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0KLSAgVGhlIGluZGVudGF0aW9uIG9mIHRoZSBmaXJzdCBsaW5lIG9mIGEgcGFyYWdyYXBoIGlzIHRoZSBtYWluIG1ldGhvZCB1c2VkIGJ5Ci0gIGFuIEFQVCBwcm9jZXNzb3IgdG8gcmVjb2duaXplIHRoZSB0eXBlIG9mIHRoZSBwYXJhZ3JhcGguIEZvciBleGFtcGxlLCBhCi0gIHNlY3Rpb24gdGl0bGUgbXVzdCBub3QgYmUgaW5kZW50ZWQgYXQgYWxsLgotCi0gIEEgYGBwbGFpbicnIHBhcmFncmFwaCBtdXN0IGJlIGluZGVudGVkIGJ5IGEgY2VydGFpbiBhbW91bnQgb2Ygc3BhY2UuIEZvcgotICBleGFtcGxlLCBhIHBsYWluIHBhcmFncmFwaCB3aGljaCBpcyBub3QgY29udGFpbmVkIGluIGEgbGlzdCBtYXkgYmUgaW5kZW50ZWQKLSAgYnkgdHdvIHNwYWNlcy4KLQotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi1NeSBzZWN0aW9uIHRpdGxlIChub3QgaW5kZW50ZWQpLgotCi0gIE15IHBhcmFncmFwaCBmaXJzdCBsaW5lIChpbmRlbnRlZCBieSAyIHNwYWNlcykuCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLQotICBJbmRlbnRhdGlvbiBpcyBub3QgcmlnaWQuIEFueSBhbW91bnQgb2Ygc3BhY2Ugd2lsbCBkby4gWW91IGRvbid0IGV2ZW4gbmVlZAotICB0byB1c2UgYSBjb25zaXN0ZW50IGluZGVudGF0aW9uIGFsbCBvdmVyIHlvdXIgZG9jdW1lbnQuIFdoYXQgcmVhbGx5IG1hdHRlcnMKLSAgZm9yIGFuIEFQVCBwcm9jZXNzb3IgaXMgd2hldGhlciB0aGUgcGFyYWdyYXBoIGlzIG5vdCBpbmRlbnRlZCBhdCBhbGwgb3IsCi0gIHdoZW4gaW5zaWRlIGEgbGlzdCwgd2hldGhlciBhIHBhcmFncmFwaCBpcyBtb3JlIG9yIGxlc3MgaW5kZW50ZWQgdGhhbiB0aGUKLSAgZmlyc3QgaXRlbSBvZiB0aGUgbGlzdCAobW9yZSBhYm91dCB0aGlzIGxhdGVyKS4KLQotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICAgRmlyc3QgcGFyYWdyYXBoIGhhcyBpdHMgZmlyc3QgbGluZSBpbmRlbnRlZCBieSBmb3VyCi1zcGFjZXMuIFRoZW4gdGhlIGF1dGhvciBkaWQgZXZlbiBib3RoZXIgdG8gaW5kZW50IHRoZQotb3RoZXIgbGluZXMgb2YgdGhlIHBhcmFncmFwaC4KLQotICBTZWNvbmQgcGFyYWdyYXBoIGNvbnRhaW5zIHNldmVyYWwgbGluZXMgd2hpY2ggYXJlIGFsbCAKLSAgaW5kZW50ZWQgYnkgdHdvIHNwYWNlcy4gVGhpcyBzdHlsZSBpcyBtdWNoIG5pY2VyIHRoYW4gCi0gIHRoZSBvbmUgdXNlZCBmb3IgdGhlIHByZXZpb3VzIHBhcmFncmFwaC4KLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotCi0gIE5vdGUgdGhhdCB0YWJzIGFyZSBleHBhbmRlZCB3aXRoIGEgdGFiIHdpZHRoIHNldCB0byA4LgotCi0qIERvY3VtZW50IGVsZW1lbnRzCi1+fn5+fn5+fn5+fn5+fn5+fn5+Ci0KLSoqIEJsb2NrIGxldmVsIGVsZW1lbnRzCi1+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgotCi0qKiogVGl0bGUKLX5+fn5+fn5+fn4KLQotICBBIHRpdGxlIGlzIG9wdGlvbmFsLiBJZiB1c2VkLCBpdCBtdXN0IGFwcGVhciBhcyB0aGUgZmlyc3QgYmxvY2sgb2YgdGhlCi0gIGRvY3VtZW50LgotCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLQkJCQkgICAgLS0tLS0tCi0JCQkJICAgIFRpdGxlCi0JCQkJICAgIC0tLS0tLQotCQkJCSAgICBBdXRob3IKLQkJCQkgICAgLS0tLS0tCi0JCQkJICAgICBEYXRlCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLQotICBBIHRpdGxlIGJsb2NrIGlzIGluZGVudGVkIChjZW50ZXJpbmcgaXQgaXMgbmljZXIpLiBJdCBiZWdpbnMgd2l0aCBhIGxpbmUKLSAgY29udGFpbmluZyBhdCBsZWFzdCAzIGRhc2hlcyAoPDw8LS0tPj4+KS4KLQotICBBZnRlciB0aGUgZmlyc3QgPDw8LS0tPj4+IGxpbmUsIG9uZSBvciBzZXZlcmFsIGNvbnNlY3V0aXZlIGxpbmVzIG9mIHRleHQKLSAgKGltcGxpY2l0IGxpbmUgYnJlYWsgYWZ0ZXIgZWFjaCBsaW5lKSBzcGVjaWZ5IHRoZSB0aXRsZSBvZiB0aGUgZG9jdW1lbnQuCi0KLSAgVGhpcyB0ZXh0IG1heSBpbW1lZGlhdGVseSBiZSBmb2xsb3dlZCBieSBhbm90aGVyIDw8PC0tLT4+PiBsaW5lIGFuZCBvbmUgb3IKLSAgc2V2ZXJhbCBjb25zZWN1dGl2ZSBsaW5lcyBvZiB0ZXh0IHdoaWNoIHNwZWNpZmllcyB0aGUgYXV0aG9yIG9mIHRoZQotICBkb2N1bWVudC4KLQotICBUaGUgYXV0aG9yIHN1Yi1ibG9jayBtYXkgb3B0aW9uYWx5IGJlIGZvbGxvd2VkIGJ5IGEgZGF0ZSBzdWItYmxvY2sgdXNpbmcgdGhlCi0gIHNhbWUgc3ludGF4LgotCi0gIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBpcyB1c2VkIGZvciBhIGRvY3VtZW50IHdpdGggYW4gdGl0bGUgYW5kIGEgZGF0ZSBidXQKLSAgd2l0aCBubyBkZWNsYXJlZCBhdXRob3IuCi0KLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotCQkJCSAgICAtLS0tLS0KLQkJCQkgICAgVGl0bGUKLQkJCQkgICAgLS0tLS0tCi0JCQkJICAgIC0tLS0tLQotCQkJCSAgICAgRGF0ZQotCQkJCSAgICAtLS0tLS0KLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotCi0gIFRoZSBsYXN0IGxpbmUgaXMgaWdub3JlZC4gSXQgaXMganVzdCB0aGVyZSB0byBtYWtlIHRoZSBibG9jayBuaWNlci4KLQotKioqIFBhcmFncmFwaAotfn5+fn5+fn5+fn5+fgotCi0gIFBhcmFncmFwaHMgb3RoZXIgdGhhbiB0aGUgdGl0bGUgYmxvY2sgbWF5IGFwcGVhciBiZWZvcmUgdGhlIGZpcnN0IHNlY3Rpb24uCi0KLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICBQYXJhZ3JhcGggMSwgbGluZSAxLgotICBQYXJhZ3JhcGggMSwgbGluZSAyLgotCi0gIFBhcmFncmFwaCAyLCBsaW5lIDEuCi0gIFBhcmFncmFwaCAyLCBsaW5lIDIuCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLQotICBQYXJhZ3JhcGhzIGFyZSBpbmRlbnRlZC4gVGhleSBoYXZlIGFscmVhZHkgYmVlbiBkZXNjcmliZWQgaW4gdGhlIHt7ZG9jdW1lbnQKLSAgc3RydWN0dXJlfX0gc2VjdGlvbi4KLQotKioqIFNlY3Rpb24KLX5+fn5+fn5+fn5+Ci0KLSAgU2VjdGlvbnMgYXJlIGNyZWF0ZWQgYnkgaW5zZXJ0aW5nIHNlY3Rpb24gdGl0bGVzIGludG8gdGhlIGRvY3VtZW50LiBTaW1wbGUKLSAgZG9jdW1lbnRzIG5lZWQgbm90IGNvbnRhaW4gc2VjdGlvbnMuCi0KLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLVNlY3Rpb24gdGl0bGUKLQotKiBTdWItc2VjdGlvbiB0aXRsZQotCi0qKiBTdWItc3ViLXNlY3Rpb24gdGl0bGUKLQotKioqIFN1Yi1zdWItc3ViLXNlY3Rpb24gdGl0bGUKLQotKioqKiBTdWItc3ViLXN1Yi1zdWItc2VjdGlvbiB0aXRsZQotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotCi0gIFNlY3Rpb24gdGl0bGVzIGFyZSBub3QgaW5kZW50ZWQuIEEgc3ViLXNlY3Rpb24gdGl0bGUgYmVnaW5zIHdpdGggb25lCi0gIGFzdGVyaXNrICg8PDwqPj4+KSwgYSBzdWItc3ViLXNlY3Rpb24gdGl0bGUgYmVnaW5zIHdpdGggdHdvIGFzdGVyaXNrcwotICAoPDw8Kio+Pj4pLCBhbmQgc28gZm9ydGggdXAgdG8gZm91ciBzdWItc2VjdGlvbiBsZXZlbHMuCi0KLSoqKiBMaXN0Ci1+fn5+fn5+fgotCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAgKiBMaXN0IGl0ZW0gMS4KLQotICAgICAgKiBMaXN0IGl0ZW0gMi4KLQotCVBhcmFncmFwaCBjb250YWluZWQgaW4gbGlzdCBpdGVtIDIuCi0KLQkgICAgKiBTdWItbGlzdCBpdGVtIDEuCi0KLQkgICAgKiBTdWItbGlzdCBpdGVtIDIuCi0KLSAgICAgICogTGlzdCBpdGVtIDMuCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotCi0gIExpc3QgaXRlbXMgYXJlIGluZGVudGVkIGFuZCBiZWdpbiB3aXRoIGEgYXN0ZXJpc2sgKDw8PCo+Pj4pLiAKLQotICBQbGFpbiBwYXJhZ3JhcGhzIG1vcmUgaW5kZW50ZWQgdGhhbiB0aGUgZmlyc3QgbGlzdCBpdGVtIGFyZSBuZXN0ZWQgaW4gdGhhdAotICBsaXN0LiBEaXNwbGF5cyBzdWNoIGFzIHRhYmxlcyAobm90IGluZGVudGVkKSBhcmUgYWx3YXlzIG5lc3RlZCBpbiB0aGUKLSAgY3VycmVudCBsaXN0LgotCi0gIFRvIG5lc3QgYSBsaXN0IGluc2lkZSBhIGxpc3QsIGluZGVudCBpdHMgZmlyc3QgaXRlbSBtb3JlIHRoYW4gaXRzIHBhcmVudAotICBsaXN0LiBUbyBlbmQgYSBsaXN0LCBhZGQgYSBwYXJhZ3JhcGggb3IgbGlzdCBpdGVtIGxlc3MgaW5kZW50ZWQgdGhhbiB0aGUKLSAgY3VycmVudCBsaXN0LgotCi0gIFNlY3Rpb24gdGl0bGVzIGFsd2F5cyBlbmQgYSBsaXN0LiBEaXNwbGF5cyBjYW5ub3QgZW5kIGEgbGlzdCBidXQgdGhlCi0gIDw8PFtdPj4+IHBzZXVkby1lbGVtZW50IG1heSBiZSB1c2VkIHRvIGZvcmNlIHRoZSBlbmQgb2YgYSBsaXN0LgotCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAgKiBMaXN0IGl0ZW0gMy4KLSAgICAgICAgRm9yY2UgZW5kIG9mIGxpc3Q6Ci0KLSAgICAgIFtdCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1WZXJiYXRpbSB0ZXh0IG5vdCBjb250YWluZWQgaW4gbGlzdCBpdGVtIDMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotCi0gIEluIHRoZSBwcmV2aW91cyBleGFtcGxlLCB3aXRob3V0IHRoZSA8PDxbXT4+PiwgdGhlIHZlcmJhdGltIHRleHQgKG5vdAotICBpbmRlbnRlZCBhcyBhbGwgZGlzcGxheXMpIHdvdWxkIGhhdmUgYmVlbiBjb250YWluZWQgaW4gbGlzdCBpdGVtIDMuCi0KLSAgQSBzaW5nbGUgPDw8W10+Pj4gbWF5IGJlIHVzZWQgdG8gZW5kIHNldmVyYWwgbmVzdGVkIGxpc3RzIGF0IHRoZSBzYW1lCi0gIHRpbWUuIFRoZSBpbmRlbnRhdGlvbiBvZiA8PDxbXT4+PiBtYXkgYmUgdXNlZCB0byBzcGVjaWZ5IGV4YWN0bHkgd2hpY2gKLSAgbGlzdHMgc2hvdWxkIGJlIGVuZGVkLiBFeGFtcGxlOgotCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAgKiBMaXN0IGl0ZW0gMS4KLQotICAgICAgKiBMaXN0IGl0ZW0gMi4KLQotCSAgICAqIFN1Yi1saXN0IGl0ZW0gMS4KLQotCSAgICAqIFN1Yi1saXN0IGl0ZW0gMi4KLQotCSAgICBbXQotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1WZXJiYXRpbSB0ZXh0IGNvbnRhaW5lZCBpbiBsaXN0IGl0ZW0gMiwgYnV0IG5vdCBpbiBzdWItbGlzdCBpdGVtIDIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0KLSAgVGhlcmUgYXJlIHRocmVlIGtpbmQgb2YgbGlzdHMsIHRoZSBidWxsZXRlZCBsaXN0cyB3ZSBoYXZlIGFscmVhZHkgZGVzY3JpYmVkLAotICB0aGUgbnVtYmVyZWQgbGlzdHMgYW5kIHRoZSBkZWZpbml0aW9uIGxpc3RzLgotCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICAgICBbWzFdXSBOdW1iZXJlZCBpdGVtIDEuCi0KLSAgICAgICAgICAgICAgICBbW0FdXSBOdW1iZXJlZCBpdGVtIEEuCi0KLSAgICAgICAgICAgICAgICBbW0JdXSBOdW1iZXJlZCBpdGVtIEIuCi0KLSAgICAgIFtbMl1dIE51bWJlcmVkIGl0ZW0gMi4KLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLQotICBBIG51bWJlcmVkIGxpc3QgaXRlbSBiZWdpbnMgd2l0aCBhIGxhYmVsIGJlZXR3ZWVuIHR3byBzcXVhcmUgYnJhY2tldHMuIFRoZQotICBsYWJlbCBvZiB0aGUgZmlyc3QgaXRlbSBlc3RhYmxpc2hlcyB0aGUgbnVtYmVyaW5nIHNjaGVtZSBmb3IgdGhlIHdob2xlIGxpc3Q6Ci0KLSAgICAgIFs8PDxbWzFcXVxdPj4+XSBEZWNpbWFsIG51bWJlcmluZzogMSwgMiwgMywgNCwgZXRjLgotCi0gICAgICBbPDw8W1thXF1cXT4+Pl0gTG93ZXItYWxwaGEgbnVtYmVyaW5nOiBhLCBiLCBjLCBkLCBldGMuCi0KLSAgICAgIFs8PDxbW0FcXVxdPj4+XSBVcHBlci1hbHBoYSBudW1iZXJpbmc6IEEsIEIsIEMsIEQsIGV0Yy4KLQotICAgICAgWzw8PFtbaVxdXF0+Pj5dIExvd2VyLXJvbWFuIG51bWJlcmluZzogaSwgaWksIGlpaSwgaXYsIGV0Yy4KLQotICAgICAgWzw8PFtbSVxdXF0+Pj5dIFVwcGVyLXJvbWFuIG51bWJlcmluZzogSSwgSUksIElJSSwgSVYsIGV0Yy4KLQotICBUaGUgbGFiZWxzIG9mIHRoZSBpdGVtcyBvdGhlciB0aGFuIHRoZSBmaXJzdCBvbmUgYXJlIGlnbm9yZWQuIEl0IGlzCi0gIHJlY29tbWVuZGVkIHRvIHRha2UgdGhlIHRpbWUgdG8gdHlwZSB0aGUgY29ycmVjdCBsYWJlbCBmb3IgZWFjaCBpdGVtIGluCi0gIG9yZGVyIHRvIGtlZXAgdGhlIEFQVCBzb3VyY2UgZG9jdW1lbnQgcmVhZGFibGUuCi0KLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAgW0RlZmluZWQgdGVybSAxXSBvZiBkZWZpbml0aW9uIGxpc3QgMi4KLQotICAgICAgW0RlZmluZWQgdGVybSAyXSBvZiBkZWZpbml0aW9uIGxpc3QgMi4KLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotCi0gIEEgZGVmaW5pdGlvbiBsaXN0IGl0ZW0gYmVnaW5zIHdpdGggYSBkZWZpbmVkIHRlcm06IHRleHQgYmV0d2VlbiBzcXVhcmUKLSAgYnJhY2tldHMuCi0KLSoqKiBWZXJiYXRpbSB0ZXh0Ci1+fn5+fn5+fn5+fn5+fn5+fgotCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVZlcmJhdGltIAotCSB0ZXh0LAotCQlwcmVmb3JtYXR0ZWQsCi0JCQkJZXNjYXBlZC4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotCi0gIEEgdmVyYmF0aW0gYmxvY2sgaXMgbm90IGluZGVudGVkLiBJdCBiZWdpbnMgd2l0aCBhIG5vbiBpbmRlbnRlZCBsaW5lCi0gIGNvbnRhaW5pbmcgYXQgbGVhc3QgMyBkYXNoZXMgKDw8PC0tLT4+PikuIEl0IGVuZHMgd2l0aCBhIHNpbWlsYXIgbGluZS4KLQotICA8PDwrLS0+Pj4gaW5zdGVhZCBvZiA8PDwtLS0+Pj4gZHJhd3MgYSBib3ggYXJvdW5kIHZlcmJhdGltIHRleHQuCi0KLSAgTGlrZSBpbiBIVE1MLCB2ZXJiYXRpbSB0ZXh0IGlzIHByZWZvcm1hdHRlZC4gVW5saWtlIEhUTUwsIHZlcmJhdGltIHRleHQgaXMKLSAgZXNjYXBlZDogaW5zaWRlIGEgdmVyYmF0aW0gZGlzcGxheSwgbWFya3VwIGlzIG5vdCBpbnRlcnByZXRlZCBieSB0aGUgQVBUCi0gIHByb2Nlc3Nvci4KLQotKioqIEZpZ3VyZQotfn5+fn5+fn5+fgotCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotW0ZpZ3VyZSBuYW1lXSBGaWd1cmUgY2FwdGlvbgotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLQotICBBIGZpZ3VyZSBibG9jayBpcyBub3QgaW5kZW50ZWQuIEl0IGJlZ2lucyB3aXRoIHRoZSBmaWd1cmUgbmFtZSBiZXR3ZWVuCi0gIHNxdWFyZSBicmFja2V0cy4gVGhlIGZpZ3VyZSBuYW1lIGlzIG9wdGlvbmFsbHkgZm9sbG93ZWQgYnkgc29tZSB0ZXh0OiB0aGUKLSAgZmlndXJlIGNhcHRpb24uCi0KLSAgVGhlIGZpZ3VyZSBuYW1lIGlzIHRoZSBwYXRobmFtZSBvZiB0aGUgZmlsZSBjb250YWluaW5nIHRoZSBmaWd1cmUgYnV0Ci0gIHdpdGhvdXQgYW4gZXh0ZW5zaW9uLiBFeGFtcGxlOiBpZiB5b3VyIGZpZ3VyZSBpcyBjb250YWluZWQgaW4KLSAgPDw8L2hvbWUvam9lL2RvY3MvbXlsb2dvLmpwZWc+Pj4sIHRoZSBmaWd1cmUgbmFtZSBpcwotICA8PDwvaG9tZS9qb2UvZG9jcy9teWxvZ28+Pj4uCi0KLSAgSWYgdGhlIGZpZ3VyZSBuYW1lIGNvbWVzIGZyb20gYSByZWxhdGl2ZSBwYXRobmFtZSAocmVjb21tZW5kZWQgcHJhY3RpY2UpCi0gIHJhdGhlciB0aGFuIGZyb20gYW4gYWJzb2x1dGUgcGF0aG5hbWUsIHRoaXMgcmVsYXRpdmUgcGF0aG5hbWUgaXMgdGFrZW4gdG8gYmUKLSAgcmVsYXRpdmUgdG8gdGhlIGRpcmVjdG9yeSBvZiB0aGUgY3VycmVudCBBUFQgZG9jdW1lbnQgKGEgbGEgSFRNTCkKLSAgcmF0aGVyIHRoYW4gcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCi0KLSAgV2h5IG5vdCBsZWF2ZSB0aGUgZmlsZSBleHRlbnNpb24gaW4gdGhlIGZpZ3VyZSBuYW1lPyBUaGlzIGlzIGJldHRlcgotICBleHBsYWluZWQgYnkgYW4gZXhhbXBsZS4gWW91IG5lZWQgdG8gY29udmVydCBhbiBBUFQgZG9jdW1lbnQgdG8gUG9zdFNjcmlwdAotICBhbmQgeW91ciBmaWd1cmUgbmFtZSBpcyA8PDwvaG9tZS9qb2UvZG9jcy9teWxvZ28+Pj4uIEEgQVBUIHByb2Nlc3NvciB3aWxsCi0gIGZpcnN0IHRyeSB0byBsb2FkIDw8PC9ob21lL2pvZS9kb2NzL215bG9nby5lcHM+Pj4uIFdoZW4gdGhlIGRlc2lyZWQgZm9ybWF0Ci0gIGlzIG5vdCBmb3VuZCwgYSBBUFQgcHJvY2Vzc29yIHRyaWVzIHRvIGNvbnZlcnQgb25lIG9mIHRoZSBleGlzdGluZwotICBmb3JtYXRzLiBJbiBvdXIgZXhhbXBsZSwgdGhlIEFQVCBwcm9jZXNzb3IgdHJpZXMgdG8gY29udmVydAotICA8PDwvaG9tZS9qb2UvZG9jcy9teWxvZ28uanBlZz4+PiB0byBlbmNhcHN1bGF0ZWQgUG9zdFNjcmlwdC4KLQotKioqIFRhYmxlCi1+fn5+fn5+fn4KLQotICBBIHRhYmxlIGJsb2NrIGlzIG5vdCBpbmRlbnRlZC4gSXQgYmVnaW5zIHdpdGggYSBub24gaW5kZW50ZWQgbGluZSBjb250YWluaW5nCi0gIGFuIGFzdGVyaXNrIGFuZCBhdCBsZWFzdCAyIGRhc2hlcyAoPDw8Ki0tPj4+KS4gSXQgZW5kcyB3aXRoIGEKLSAgc2ltaWxhciBsaW5lLgotCi0gIFRoZSBmaXJzdCBsaW5lIGlzIG5vdCBvbmx5IHVzZWQgdG8gcmVjb2duaXplIGEgdGFibGUgYnV0IGFsc28gdG8gc3BlY2lmeQotICBjb2x1bW4ganVzdGlmaWNhdGlvbi4gSW4gdGhlIGZvbGxvd2luZyBleGFtcGxlLCAKLQotICAgICAgKiB0aGUgc2Vjb25kIGFzdGVyaXNrICg8PDwqPj4+KSBpcyB1c2VkIHRvIHNwZWNpZnkgdGhhdCBjb2x1bW4gMSBpcwotICAgICAgICBjZW50ZXJlZCwKLQotICAgICAgKiB0aGUgcGx1cyBzaWduICg8PDwrPj4+KSBzcGVjaWZpZXMgdGhhdCBjb2x1bW4gMiBpcyBsZWZ0IGFsaWduZWQsIAotCi0gICAgICAqIHRoZSBjb2xvbiAoPDw8Oj4+Pikgc3BlY2lmaWVzIHRoYXQgY29sdW1uIDMgaXMgcmlnaHQgYWxpZ25lZC4KLQotICAgICAgW10KLQotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSotLS0tLS0tLS0tKi0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS06Ci18IENlbnRlcmVkIHwgTGVmdC1hbGlnbmVkIHwgUmlnaHQtYWxpZ25lZCAgfAotfCBjZWxsIDEsMSB8IGNlbGwgMSwyICAgICB8IGNlbGwgMSwzICAgICAgIHwKLSotLS0tLS0tLS0tKi0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS06Ci18IGNlbGwgMiwxIHwgY2VsbCAyLDIgICAgIHwgY2VsbCAyLDMgICAgICAgfAotKi0tLS0tLS0tLS0qLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLToKLVRhYmxlIGNhcHRpb24KLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0KLSAgUm93cyBhcmUgc2VwYXJhdGVkIGJ5IGEgbm9uIGluZGVudGVkIGxpbmUgYmVnaW5uaW5nIHdpdGggPDw8Ki0tPj4+LgotCi0gIEFuIG9wdGlvbmFsIHRhYmxlIGNhcHRpb24gKG5vbiBpbmRlbnRlZCB0ZXh0KSBtYXkgaW1tZWRpYXRlbHkgZm9sbG93IHRoZQotICB0YWJsZS4KLQotICBSb3dzIG1heSBjb250YWluIHNpbmdsZSBsaW5lIG9yIG11bHRpcGxlIGxpbmUgY2VsbHMuIEVhY2ggbGluZSBvZiBjZWxsIHRleHQKLSAgaXMgc2VwYXJhdGVkIGZyb20gdGhlIGFkamFjZW50IGNlbGwgYnkgdGhlIHBpcGUgY2hhcmFjdGVyICg8PDx8Pj4+KS4KLSAgKDw8PHw+Pj4gbWF5IGJlIHVzZWQgaW4gdGhlIGNlbGwgdGV4dCBpZiBxdW90ZWQ6IDw8PFxcfD4+Pi4pCi0KLSAgVGhlIGxhc3QgPDw8fD4+PiBpcyBvbmx5IHVzZWQgdG8gbWFrZSB0aGUgdGFibGUgbmljZXIuICBUaGUgZmlyc3QgPDw8fD4+PiBpcwotICBub3Qgb25seSB1c2VkIHRvIG1ha2UgdGhlIHRhYmxlIG5pY2VyLCBidXQgYWxzbyB0byBzcGVjaWZ5IHRoYXQgYSBncmlkIGlzIHRvCi0gIGJlIGRyYXduIGFyb3VuZCB0YWJsZSBjZWxscy4KLQotICBUaGUgZm9sbG93aW5nIGV4YW1wbGUgc2hvd3MgYSBzaW1wbGUgdGFibGUgd2l0aCBubyBncmlkIGFuZCBubyBjYXB0aW9uLgotCi0rLS0tLS0tLS0tLS0tLS0tKwotKi0tLS0tKi0tLS0tLSoKLSBjZWxsIHwgY2VsbAotKi0tLS0tKi0tLS0tLSoKLSBjZWxsIHwgY2VsbAotKi0tLS0tKi0tLS0tLSoKLSstLS0tLS0tLS0tLS0tLS0rCi0KLSoqKiBIb3Jpem9udGFsIHJ1bGUKLX5+fn5+fn5+fn5+fn5+fn5+fn4KLQotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLT09PT09PT09PT09PT09PT09PT09PQotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLQotICBBIG5vbiBpbmRlbnRlZCBsaW5lIGNvbnRhaW5pbmcgYXQgbGVhc3QgMyBlcXVhbCBzaWducyAoPDw8PT09Pj4+KS4KLQotKioqIFBhZ2UgYnJlYWsKLX5+fn5+fn5+fn5+fn5+Ci0KLSstLS0rCi1eTAotKy0tLSsKLQotICBBIG5vbiBpbmRlbnRlZCBsaW5lIGNvbnRhaW5pbmcgYSBzaW5nbGUgZm9ybSBmZWVkIGNoYXJhY3RlciAoQ29udHJvbC1MKS4KLQotKiogVGV4dCBsZXZlbCBlbGVtZW50cwotfn5+fn5+fn5+fn5+fn5+fn5+fn5+fgotCi0qKiogRm9udAotfn5+fn5+fn4KLQotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICA8SXRhbGljPiBmb250LiA8PEJvbGQ+PiBmb250LiA8PDxNb25vc3BhY2VkPj4+IGZvbnQuCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0KLSAgVGV4dCBiZXR3ZWVuIFw8IGFuZCA+IG11c3QgYmUgcmVuZGVyZWQgaW4gaXRhbGljLiBUZXh0IGJldHdlZW4gXDxcPCBhbmQgPj4KLSAgbXVzdCBiZSByZW5kZXJlZCBpbiBib2xkLiBUZXh0IGJldHdlZW4gXDxcPFw8IGFuZCA+Pj4gbXVzdCBiZSByZW5kZXJlZCB1c2luZwotICBhIG1vbm9zcGFjZWQsIHR5cGV3cml0ZXItbGlrZSBmb250LgotCi0gIEZvbnQgZWxlbWVudHMgbWF5IGFwcGVhciBhbnl3aGVyZSBleGNlcHQgaW5zaWRlIG90aGVyIGZvbnQgZWxlbWVudHMuCi0KLSAgSXQgaXMgbm90IHJlY29tbWVuZGVkIHRvIHVzZSBmb250IGVsZW1lbnRzIGluc2lkZSB0aXRsZXMsIHNlY3Rpb24gdGl0bGVzLAotICBsaW5rcyBhbmQgZGVmaW5lZCB0ZXJtcyBiZWNhdXNlIGEgQVBUIHByb2Nlc3NvciBhdXRvbWF0aWNhbGx5IGFwcGxpZXMKLSAgYXBwcm9wcmlhdGUgZm9udCBzdHlsZXMgdG8gdGhlc2UgZWxlbWVudHMuCi0KLSoqKiBBbmNob3IgYW5kIGxpbmsKLX5+fn5+fn5+fn5+fn5+fn5+fn4KLQotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICB7QW5jaG9yfS4gTGluayB0byB7e2FuY2hvcn19LiBMaW5rIHRvIHt7aHR0cDovL3d3dy5waXh3YXJlLmZyfX0uIAotICBMaW5rIHRvIHt7e2FuY2hvcn1zaG93aW5nIGFsdGVybmF0ZSB0ZXh0fX0uCi0gIExpbmsgdG8ge3t7aHR0cDovL3d3dy5waXh3YXJlLmZyfVBpeHdhcmUgaG9tZSBwYWdlfX0uCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0KLSAgVGV4dCBiZXR3ZWVuIGN1cmx5IGJyYWNlcyAoPDw8XHt9Pj4+KSBzcGVjaWZpZXMgYW4gYW5jaG9yLiBUZXh0IGJldHdlZW4KLSAgZG91YmxlIGN1cmx5IGJyYWNlcyAoPDw8XHtce319Pj4+KSBzcGVjaWZpZXMgYSBsaW5rLgotCi0gIEl0IGlzIGFuIGVycm9yIHRvIGNyZWF0ZSBhIGxpbmsgZWxlbWVudCB0aGF0IGRvZXMgbm90IHJlZmVyIHRvIGFuIGFuY2hvciBvZgotICB0aGUgc2FtZSBuYW1lLiBUaGUgbmFtZSBvZiBhbiBhbmNob3IvbGluayBpcyBpdHMgdGV4dCB3aXRoIGFsbCBub24KLSAgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgc3RyaXBwZWQuCi0KLSAgVGhpcyBydWxlIGRvZXMgbm90IGFwcGx5IHRvIGxpbmtzIHRvIDxleHRlcm5hbD4gYW5jaG9ycy4gVGV4dCBiZWdpbm5pbmcKLSAgd2l0aCA8PDxodHRwOi8+Pj4sIDw8PGh0dHBzOi8+Pj4sIDw8PGZ0cDovPj4+LCA8PDxmaWxlOi8+Pj4sIDw8PG1haWx0bzo+Pj4sCi0gIDw8PC4uLz4+PiwgPDw8Li8+Pj4gKDw8PC4uXFw+Pj4gYW5kIDw8PC5cXD4+PiBvbiBXaW5kb3dzKSBpcyByZWNvZ25pemVkIGFzCi0gIGFuIGV4dGVybmFsIGFuY2hvciBuYW1lLgotCi0gIFdoZW4gdGhlIGNvbnN0cnVjdCA8PFx7XHtcez4+PG5hbWU+PDx9Pj48dGV4dD48PH19Pj4gaXMgdXNlZCwgdGhlIGxpbmsgdGV4dAotICA8dGV4dD4gbWF5IGRpZmZlciBmcm9tIHRoZSBsaW5rIG5hbWUgPG5hbWU+LgotCi0gIEFuY2hvci9saW5rIGVsZW1lbnRzIG1heSBhcHBlYXIgYW55d2hlcmUgZXhjZXB0IGluc2lkZSBvdGhlciBhbmNob3IvbGluawotICBlbGVtZW50cy4KLQotICBTZWN0aW9uIHRpdGxlcyBhcmUgaW1wbGljaXRseSBkZWZpbmVkIGFuY2hvcnMuCi0KLSoqKiBMaW5lIGJyZWFrCi1+fn5+fn5+fn5+fn5+fgotCi0rLS0tLS0tLS0tLS0tLSsKLSAgRm9yY2UgbGluZVwKLSAgYnJlYWsuCi0rLS0tLS0tLS0tLS0tLSsKLQotICBBIGJhY2tzbGFzaCBjaGFyYWN0ZXIgKDw8PFxcPj4+KSBmb2xsb3dlZCBieSBhIG5ld2xpbmUgY2hhcmFjdGVyLgotCi0gIExpbmUgYnJlYWtzIG11c3Qgbm90IGJlIHVzZWQgaW5zaWRlIHRpdGxlcyBhbmQgdGFibGVzICh3aGljaCBhcmUgbGluZQotICBvcmllbnRlZCBibG9ja3Mgd2l0aCBpbXBsaWNpdCBsaW5lIGJyZWFrcykuCi0KLSoqKiBOb24gYnJlYWtpbmcgc3BhY2UKLX5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KLQotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gIE5vblwgYnJlYWtpbmdcIHNwYWNlLgotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0KLSAgQSBiYWNrc2xhc2ggY2hhcmFjdGVyICg8PDxcXD4+PikgZm9sbG93ZWQgYnkgYSBzcGFjZSBjaGFyYWN0ZXIuCi0KLSoqKiBTcGVjaWFsIGNoYXJhY3Rlcgotfn5+fn5+fn5+fn5+fn5+fn5+fn5+Ci0KLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gIEVzY2FwZWQgc3BlY2lhbCBjaGFyYWN0ZXJzOiBcfiwgXD0sIFwtLCBcKywgXCosIFxbLCBcXSwgXDwsIFw+LCBceywgXH0sIFxcLgotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLQotICBJbiBjZXJ0YWluIGNvbnRleHRzLCB0aGVzZSBjaGFyYWN0ZXJzIGhhdmUgYSBzcGVjaWFsIG1lYW5pbmcgYW5kIHRoZXJlZm9yZQotICBtdXN0IGJlIGVzY2FwZWQgaWYgbmVlZGVkIGFzIGlzLiBUaGV5IGFyZSBlc2NhcGVkIGJ5IGFkZGluZyBhIGJhY2tzbGFzaCBpbgotICBmcm9udCBvZiB0aGVtLiBUaGUgYmFja3NsYXNoIG1heSBpdHNlbGYgYmUgZXNjYXBlZCBieSBhZGRpbmcgYW5vdGhlcgotICBiYWNrc2xhc2ggaW4gZnJvbnQgb2YgaXQuCi0KLSAgTm90ZSB0aGF0IGFuIGFzdGVyaXNrLCBmb3IgZXhhbXBsZSwgbmVlZHMgdG8gYmUgZXNjYXBlZCBvbmx5IGlmIGl0cyBiZWdpbnMgYQotICBwYXJhZ3JhcGguICg8PDwqPj4+IGhhcyBubyBzcGVjaWFsIG1lYW5pbmcgaW4gdGhlIG1pZGRsZSBvZiBhIHBhcmFncmFwaC4pCi0KLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgQ29weXJpZ2h0IHN5bWJvbDogXDI1MSwgXHhBOSwgXHUwMGE5LgotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotCi0gIExhdGluLTEgY2hhcmFjdGVycyAod2hhdGV2ZXIgaXMgdGhlIGVuY29kaW5nIG9mIHRoZSBBUFQgZG9jdW1lbnQpIG1heSBiZQotICBzcGVjaWZpZWQgYnkgdGhlaXIgY29kZXMgdXNpbmcgYSBiYWNrc2xhc2ggZm9sbG93ZWQgYnkgb25lIHRvIHRocmVlIG9jdGFsCi0gIGRpZ2l0cyBvciBieSB1c2luZyB0aGUgPDw8XHg+Pj48Tk4+IG5vdGF0aW9uLCB3aGVyZSA8Tk4+IGFyZSB0d28gaGV4YWRlY2ltYWwKLSAgZGlnaXRzLgotCi0gIFVuaWNvZGUgY2hhcmFjdGVycyBtYXkgYmUgc3BlY2lmaWVkIGJ5IHRoZWlyIGNvZGVzIHVzaW5nIHRoZSA8PDxcdT4+PjxOTk5OPgotICBub3RhdGlvbiwgd2hlcmUgPE5OTk4+IGFyZSBmb3VyIGhleGFkZWNpbWFsIGRpZ2l0cy4KLQotKioqIENvbW1lbnQKLX5+fn5+fn5+fn5+Ci0KLSstLS0tLS0tLS0tLS0tLS0rCi1+fkNvbW1lbnRlZCBvdXQuCi0rLS0tLS0tLS0tLS0tLS0tKwotCi0gIFRleHQgZm91bmQgYWZ0ZXIgdHdvIHRpbGRlcyAoPDw8XH5+Pj4+KSBpcyBpZ25vcmVkIHVwIHRvIHRoZSBlbmQgb2YgbGluZS4KLQotICBBIGxpbmUgb2YgPDw8fj4+PiBpcyBvZnRlbiB1c2VkIHRvIGBgdW5kZXJsaW5lJycgc2VjdGlvbiB0aXRsZXMgaW4gb3JkZXIgdG8KLSAgbWFrZSB0aGVtIHN0YW5kIG91dCBvZiBvdGhlciBwYXJhZ3JhcGhzLgotCi0MCi0qIFRoZSBBUFQgZm9ybWF0IGF0IGEgZ2xhbmNlCi1+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+Ci0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCQkJCSAgICAtLS0tLS0KLQkJCQkgICAgVGl0bGUKLQkJCQkgICAgLS0tLS0tCi0JCQkJICAgIEF1dGhvcgotCQkJCSAgICAtLS0tLS0KLQkJCQkgICAgIERhdGUKLQotICBQYXJhZ3JhcGggMSwgbGluZSAxLgotICBQYXJhZ3JhcGggMSwgbGluZSAyLgotCi0gIFBhcmFncmFwaCAyLCBsaW5lIDEuCi0gIFBhcmFncmFwaCAyLCBsaW5lIDIuCi0KLVNlY3Rpb24gdGl0bGUKLQotKiBTdWItc2VjdGlvbiB0aXRsZQotCi0qKiBTdWItc3ViLXNlY3Rpb24gdGl0bGUKLQotKioqIFN1Yi1zdWItc3ViLXNlY3Rpb24gdGl0bGUKLQotKioqKiBTdWItc3ViLXN1Yi1zdWItc2VjdGlvbiB0aXRsZQotCi0gICAgICAqIExpc3QgaXRlbSAxLgotCi0gICAgICAqIExpc3QgaXRlbSAyLgotCi0JUGFyYWdyYXBoIGNvbnRhaW5lZCBpbiBsaXN0IGl0ZW0gMi4KLQotCSAgICAqIFN1Yi1saXN0IGl0ZW0gMS4KLQotCSAgICAqIFN1Yi1saXN0IGl0ZW0gMi4KLQotICAgICAgKiBMaXN0IGl0ZW0gMy4KLSAgICAgICAgRm9yY2UgZW5kIG9mIGxpc3Q6Ci0KLSAgICAgIFtdCi0KLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi1WZXJiYXRpbSB0ZXh0IG5vdCBjb250YWluZWQgaW4gbGlzdCBpdGVtIDMKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0KLSAgICAgIFtbMV1dIE51bWJlcmVkIGl0ZW0gMS4KLQotICAgICAgICAgICAgICAgIFtbQV1dIE51bWJlcmVkIGl0ZW0gQS4KLQotICAgICAgICAgICAgICAgIFtbQl1dIE51bWJlcmVkIGl0ZW0gQi4KLQotICAgICAgW1syXV0gTnVtYmVyZWQgaXRlbSAyLgotCi0gIExpc3QgbnVtYmVyaW5nIHNjaGVtZXM6IFtbMV1dLCBbW2FdXSwgW1tBXV0sIFtbaV1dLCBbW0ldXS4KLQotICAgICAgW0RlZmluZWQgdGVybSAxXSBvZiBkZWZpbml0aW9uIGxpc3QuCi0KLSAgICAgIFtEZWZpbmVkIHRlcm0gMl0gb2YgZGVmaW5pdGlvbiBsaXN0LgotCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLVZlcmJhdGltIHRleHQKLQkJCWluIGEgYm94CQotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0KLSAgLS0tIGluc3RlYWQgb2YgKy0tIHN1cHByZXNzZXMgdGhlIGJveCBhcm91bmQgdmVyYmF0aW0gdGV4dC4KLQotW0ZpZ3VyZSBuYW1lXSBGaWd1cmUgY2FwdGlvbgotCi0qLS0tLS0tLS0tLSotLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tOgotfCBDZW50ZXJlZCB8IExlZnQtYWxpZ25lZCB8IFJpZ2h0LWFsaWduZWQgIHwKLXwgY2VsbCAxLDEgfCBjZWxsIDEsMiAgICAgfCBjZWxsIDEsMyAgICAgICB8Ci0qLS0tLS0tLS0tLSotLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tOgotfCBjZWxsIDIsMSB8IGNlbGwgMiwyICAgICB8IGNlbGwgMiwzICAgICAgIHwKLSotLS0tLS0tLS0tKi0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS06Ci1UYWJsZSBjYXB0aW9uCi0KLSAgTm8gZ3JpZCwgbm8gY2FwdGlvbjoKLQotKi0tLS0tKi0tLS0tLSoKLSBjZWxsIHwgY2VsbAotKi0tLS0tKi0tLS0tLSoKLSBjZWxsIHwgY2VsbAotKi0tLS0tKi0tLS0tLSoKLQotICBIb3Jpem9udGFsIGxpbmU6Ci0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLV5MCi0gIE5ldyBwYWdlLgotCi0gIDxJdGFsaWM+IGZvbnQuIDw8Qm9sZD4+IGZvbnQuIDw8PE1vbm9zcGFjZWQ+Pj4gZm9udC4KLQotICB7QW5jaG9yfS4gTGluayB0byB7e2FuY2hvcn19LiBMaW5rIHRvIHt7aHR0cDovL3d3dy5waXh3YXJlLmZyfX0uIAotICBMaW5rIHRvIHt7e2FuY2hvcn1zaG93aW5nIGFsdGVybmF0ZSB0ZXh0fX0uCi0gIExpbmsgdG8ge3t7aHR0cDovL3d3dy5waXh3YXJlLmZyfVBpeHdhcmUgaG9tZSBwYWdlfX0uCi0KLSAgRm9yY2UgbGluZVwKLSAgYnJlYWsuCi0KLSAgTm9uXCBicmVha2luZ1wgc3BhY2UuCi0KLSAgRXNjYXBlZCBzcGVjaWFsIGNoYXJhY3RlcnM6IFx+LCBcPSwgXC0sIFwrLCBcKiwgXFssIFxdLCBcPCwgXD4sIFx7LCBcfSwgXFwuCi0KLSAgQ29weXJpZ2h0IHN5bWJvbDogXDI1MSwgXHhBOSwgXHUwMGE5LgotCi1+fkNvbW1lbnRlZCBvdXQuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCmRpZmYgLS1naXQgYS9tYXZlbi1hcmNoZXR5cGUtc2l0ZS9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvc2l0ZS9mci9hcHQvaW5kZXguYXB0IGIvbWF2ZW4tYXJjaGV0eXBlLXNpdGUvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvc3JjL3NpdGUvZnIvYXB0L2luZGV4LmFwdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTEwYmRjYy4uMDAwMDAwMAotLS0gYS9tYXZlbi1hcmNoZXR5cGUtc2l0ZS9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvc2l0ZS9mci9hcHQvaW5kZXguYXB0CisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotIC0tLS0tCi0gTGUgU2l0ZQotIC0tLS0tCi0gTCfpcXVpcGUgTWF2ZW4KLSAtLS0tLQotCi1TaXRlIE1hdmVuIHBvdXIgdm90cmUgcHJvamV0Ci0KLSBG6WxpY2l0YXRpb25zISAgU2kgdm91cyByZWdhcmRleiBjZXR0ZSBwYWdlIGFsb3JzIHZvdXMgYXZlegotIGfpbuly6SBhdmVjIHN1Y2PocyB1biBtb2TobGUgZGUgc2l0ZSBlbiB1dGlsaXNhbnQgbCdhcmNo6XR5cGUKLSBkZSBzaXRlIGV0IHZvdXMgYXZleiBsYW5j6SA6Ci0gIAotKy0tLS0tKwotCi1tMiBzaXRlOnNpdGUKLQotKy0tLS0tKwpkaWZmIC0tZ2l0IGEvbWF2ZW4tYXJjaGV0eXBlLXNpdGUvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvc3JjL3NpdGUvZnIvZm1sL2ZhcS5mbWwgYi9tYXZlbi1hcmNoZXR5cGUtc2l0ZS9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvc2l0ZS9mci9mbWwvZmFxLmZtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTE0OTI4NS4uMDAwMDAwMAotLS0gYS9tYXZlbi1hcmNoZXR5cGUtc2l0ZS9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvc2l0ZS9mci9mbWwvZmFxLmZtbAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCI/PgotPGZhcXMgaWQ9IkZBUSBH6W7pcmFsIj4KLSAgPHBhcnQgaWQ9IkdlbmVyYWwiPgotICAgIDxmYXEgaWQ9IndoZXJlIj4KLSAgICAgIDxxdWVzdGlvbj5EJ2/5IHZpZW50IE1hdmVuPC9xdWVzdGlvbj4KLSAgICAgIDxhbnN3ZXI+Ci0gICAgICAgIDxwPgotICAgICAgICAgIE1hdmVuIHdhcyBjcmVhdGVkIGJ5IGEgZ3JvdXAgb2Ygc29mdHdhcmUgZGV2ZWxvcGVycyB3aG8gd2VyZSB0aXJlZAotICAgICAgICAgIG9mIHdhc3RpbmcgdGhlaXIgdGltZSBmaWRkbGluZyBhcm91bmQgd2l0aCBidWlsZHMgYW5kIHdhbnRlZCB0byBnZXQKLSAgICAgICAgICBkb3duIHRvIGJyYXNzIHRhY2tzIGFuZCBhY3R1YWxseSBkZXZlbG9wIHNvZnR3YXJlIQotICAgICAgICA8L3A+Ci0gICAgICA8L2Fuc3dlcj4KLSAgICA8L2ZhcT4KLSAgICA8ZmFxIGlkPSJ3aHkiPgotICAgICAgPHF1ZXN0aW9uPlBvdXJxdW9pIE1hdmVuIGVzdC1pbCBzaSBwb3B1bGFpcmU/PC9xdWVzdGlvbj4KLSAgICAgIDxhbnN3ZXI+Ci0gICAgICAgIDxwPgotICAgICAgICAgIE1hdmVuIHNhdmVzIHlvdSBzbyBtdWNoIHRpbWUgaW4geW91ciBzb2Z0d2FyZSBkZXZlbG9wbWVudCBlZmZvcnRzIHRoYXQKLSAgICAgICAgICB5b3Ugd2lsbCBoYXZlIHRpbWUgdG8gbGVhcm4gYSBzZWNvbmQgbGFuZ3VhZ2UsIHJlbGF4IHRlbiBob3VycyBhCi0gICAgICAgICAgZGF5LCBhbmQgdHJhaW4gZm9yIHRoYXQgbWFyYXRob24geW91J3ZlIGFsd2F5cyB3YW50ZWQgdG8gcnVuIQotICAgICAgICA8L3A+Ci0gICAgICA8L2Fuc3dlcj4KLSAgICA8L2ZhcT4KLSAgPC9wYXJ0PgotPC9mYXFzPgpkaWZmIC0tZ2l0IGEvbWF2ZW4tYXJjaGV0eXBlLXNpdGUvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvc3JjL3NpdGUvZnIveGRvYy94ZG9jLnhtbCBiL21hdmVuLWFyY2hldHlwZS1zaXRlL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy9zaXRlL2ZyL3hkb2MveGRvYy54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5Yzg2OWMuLjAwMDAwMDAKLS0tIGEvbWF2ZW4tYXJjaGV0eXBlLXNpdGUvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvc3JjL3NpdGUvZnIveGRvYy94ZG9jLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCI/PgotPGRvY3VtZW50PgotICA8cHJvcGVydGllcz4KLSAgICA8dGl0bGU+QmllbnZlbnVlPC90aXRsZT4KLSAgICA8YXV0aG9yIGVtYWlsPSJkZXZAbWF2ZW4uYXBhY2hlLm9yZyI+VGhlIE1hdmVuIFRlYW08L2F1dGhvcj4KLSAgPC9wcm9wZXJ0aWVzPgotICA8Ym9keT4KLSAgICA8c2VjdGlvbiBuYW1lPSJCaWVudmVudWUgZGFucyB1biBmaWNoaWVyIFhET0MhIj4KLSAgICAgIDxwPgotICAgICAgICBDZWNpIGVzdCBkdSB0ZXh0ZSBwb3VyIGxlIGZpY2hpZXIgeGRvYy4KLSAgICAgIDwvcD4KLSAgICA8L3NlY3Rpb24+Ci0gIDwvYm9keT4KLTwvZG9jdW1lbnQ+Ci0KZGlmZiAtLWdpdCBhL21hdmVuLWFyY2hldHlwZS1zaXRlL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy9zaXRlL3NpdGUueG1sIGIvbWF2ZW4tYXJjaGV0eXBlLXNpdGUvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvc3JjL3NpdGUvc2l0ZS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwM2E4MzAuLjAwMDAwMDAKLS0tIGEvbWF2ZW4tYXJjaGV0eXBlLXNpdGUvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvc3JjL3NpdGUvc2l0ZS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJJU08tODg1OS0xIj8+Ci08cHJvamVjdCBuYW1lPSJNYXZlbiI+Ci0gIDxiYW5uZXJMZWZ0PgotICAgIDxuYW1lPk1hdmVuPC9uYW1lPgotICAgIDxzcmM+aHR0cDovL21hdmVuLmFwYWNoZS5vcmcvaW1hZ2VzL2FwYWNoZS1tYXZlbi1wcm9qZWN0LnBuZzwvc3JjPgotICAgIDxocmVmPmh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnLzwvaHJlZj4KLSAgPC9iYW5uZXJMZWZ0PgotICA8YmFubmVyUmlnaHQ+Ci0gICAgPHNyYz5odHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9pbWFnZXMvbWF2ZW4tc21hbGwuZ2lmPC9zcmM+Ci0gIDwvYmFubmVyUmlnaHQ+Ci0gIDxib2R5PgotICAgIDxsaW5rcz4KLSAgICAgIDxpdGVtIG5hbWU9IkFwYWNoZSIgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnLyIgLz4KLSAgICAgIDxpdGVtIG5hbWU9Ik1hdmVuIDEuMCIgaHJlZj0iaHR0cDovL21hdmVuLmFwYWNoZS5vcmcvIi8+Ci0gICAgICA8aXRlbSBuYW1lPSJNYXZlbiAyIiBocmVmPSJodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9tYXZlbjIvIi8+Ci0gICAgPC9saW5rcz4KLQotICAgIDxtZW51IG5hbWU9Ik1hdmVuIDIuMCI+Ci0gICAgICA8aXRlbSBuYW1lPSJBUFQgRm9ybWF0IiBocmVmPSJmb3JtYXQuaHRtbCIvPgotICAgICAgPGl0ZW0gbmFtZT0iRkFRIiBocmVmPSJmYXEuaHRtbCIvPgotICAgICAgPGl0ZW0gbmFtZT0iWGRvYyBFeGFtcGxlIiBocmVmPSJ4ZG9jLmh0bWwiLz4gICAgICAKLSAgICA8L21lbnU+Ci0gIDwvYm9keT4KLTwvcHJvamVjdD4KZGlmZiAtLWdpdCBhL21hdmVuLWFyY2hldHlwZS1zaXRlL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy9zaXRlL3NpdGVfZnIueG1sIGIvbWF2ZW4tYXJjaGV0eXBlLXNpdGUvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvc3JjL3NpdGUvc2l0ZV9mci54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllZDU3MzIuLjAwMDAwMDAKLS0tIGEvbWF2ZW4tYXJjaGV0eXBlLXNpdGUvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvc3JjL3NpdGUvc2l0ZV9mci54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJJU08tODg1OS0xIj8+Ci08cHJvamVjdCBuYW1lPSJNYXZlbiI+Ci0gIDxiYW5uZXJMZWZ0PgotICAgIDxuYW1lPk1hdmVuPC9uYW1lPgotICAgIDxzcmM+aHR0cDovL21hdmVuLmFwYWNoZS5vcmcvaW1hZ2VzL2FwYWNoZS1tYXZlbi1wcm9qZWN0LnBuZzwvc3JjPgotICAgIDxocmVmPmh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnLzwvaHJlZj4KLSAgPC9iYW5uZXJMZWZ0PgotICA8YmFubmVyUmlnaHQ+Ci0gICAgPHNyYz5odHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9pbWFnZXMvbWF2ZW4tc21hbGwuZ2lmPC9zcmM+Ci0gIDwvYmFubmVyUmlnaHQ+Ci0gIDxib2R5PgotICAgIDxsaW5rcz4KLSAgICAgIDxpdGVtIG5hbWU9IkFwYWNoZSIgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnLyIgLz4KLSAgICAgIDxpdGVtIG5hbWU9Ik1hdmVuIDEuMCIgaHJlZj0iaHR0cDovL21hdmVuLmFwYWNoZS5vcmcvIi8+Ci0gICAgICA8aXRlbSBuYW1lPSJNYXZlbiAyIiBocmVmPSJodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9tYXZlbjIvIi8+Ci0gICAgPC9saW5rcz4KLQotICAgIDxtZW51IG5hbWU9Ik1hdmVuIDIuMCI+Ci0gICAgICA8aXRlbSBuYW1lPSJGb3JtYXQgQVBUIiBocmVmPSJmb3JtYXQuaHRtbCIvPgotICAgICAgPGl0ZW0gbmFtZT0iRkFRIiBocmVmPSJmYXEuaHRtbCIvPgotICAgICAgPGl0ZW0gbmFtZT0iRXhlbXBsZSBYZG9jIiBocmVmPSJ4ZG9jLmh0bWwiLz4gICAgICAKLSAgICA8L21lbnU+Ci0gIDwvYm9keT4KLTwvcHJvamVjdD4KZGlmZiAtLWdpdCBhL21hdmVuLWFyY2hldHlwZS1zaXRlL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy9zaXRlL3hkb2MveGRvYy54bWwgYi9tYXZlbi1hcmNoZXR5cGUtc2l0ZS9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvc2l0ZS94ZG9jL3hkb2MueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjNlNGY2Li4wMDAwMDAwCi0tLSBhL21hdmVuLWFyY2hldHlwZS1zaXRlL3NyYy9tYWluL3Jlc291cmNlcy9hcmNoZXR5cGUtcmVzb3VyY2VzL3NyYy9zaXRlL3hkb2MveGRvYy54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiPz4KLTxkb2N1bWVudD4KLSAgPHByb3BlcnRpZXM+Ci0gICAgPHRpdGxlPldlbGNvbWU8L3RpdGxlPgotICAgIDxhdXRob3IgZW1haWw9ImRldkBtYXZlbi5hcGFjaGUub3JnIj5UaGUgTWF2ZW4gVGVhbTwvYXV0aG9yPgotICA8L3Byb3BlcnRpZXM+Ci0gIDxib2R5PgotICAgIDxzZWN0aW9uIG5hbWU9IldlbGNvbWUgdG8gYW4gWERPQyBmaWxlISI+Ci0gICAgICA8cD4KLSAgICAgICAgVGhpcyBpcyBzb21lIHRleHQgZm9yIHRoZSB4ZG9jIGZpbGUuCi0gICAgICA8L3A+Ci0gICAgPC9zZWN0aW9uPgotICA8L2JvZHk+Ci08L2RvY3VtZW50PgotCmRpZmYgLS1naXQgYS9tYXZlbi1hcmNoZXR5cGUtd2ViYXBwL3BvbS54bWwgYi9tYXZlbi1hcmNoZXR5cGUtd2ViYXBwL3BvbS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwNDU4ZTQuLjAwMDAwMDAKLS0tIGEvbWF2ZW4tYXJjaGV0eXBlLXdlYmFwcC9wb20ueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLQotPCEtLQotTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQotb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCi1kaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgotcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQotdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQotIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQotd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotCi0gIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotCi1Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCi1zb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgotIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCi1LSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKLXNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKLXVuZGVyIHRoZSBMaWNlbnNlLgotLS0+Ci0KLTxwcm9qZWN0IHhtbG5zPSJodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9QT00vNC4wLjAiCi0gIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiCi0gIHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL21hdmVuLmFwYWNoZS5vcmcvUE9NLzQuMC4wIGh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL21hdmVuLXY0XzBfMC54c2QiPgotICA8cGFyZW50PgotICAgIDxhcnRpZmFjdElkPm1hdmVuLWFyY2hldHlwZS1idW5kbGVzPC9hcnRpZmFjdElkPgotICAgIDxncm91cElkPm9yZy5hcGFjaGUubWF2ZW4uYXJjaGV0eXBlczwvZ3JvdXBJZD4KLSAgICA8dmVyc2lvbj4zLVNOQVBTSE9UPC92ZXJzaW9uPgotICA8L3BhcmVudD4KLSAgPG1vZGVsVmVyc2lvbj40LjAuMDwvbW9kZWxWZXJzaW9uPgotICA8ZGVzY3JpcHRpb24+Ci0gICAgQW4gYXJjaGV0eXBlIHdoaWNoIGNvbnRhaW5zIGEgc2FtcGxlIE1hdmVuIFdlYmFwcCBwcm9qZWN0LgotICA8L2Rlc2NyaXB0aW9uPgotICA8YXJ0aWZhY3RJZD5tYXZlbi1hcmNoZXR5cGUtd2ViYXBwPC9hcnRpZmFjdElkPgotICA8bmFtZT5NYXZlbiBXZWJhcHAgQXJjaGV0eXBlPC9uYW1lPgotICA8dmVyc2lvbj4xLjEtU05BUFNIT1Q8L3ZlcnNpb24+Ci08L3Byb2plY3Q+CmRpZmYgLS1naXQgYS9tYXZlbi1hcmNoZXR5cGUtd2ViYXBwL3NyYy9tYWluL3Jlc291cmNlcy9NRVRBLUlORi9hcmNoZXR5cGUueG1sIGIvbWF2ZW4tYXJjaGV0eXBlLXdlYmFwcC9zcmMvbWFpbi9yZXNvdXJjZXMvTUVUQS1JTkYvYXJjaGV0eXBlLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWMxMWYzMi4uMDAwMDAwMAotLS0gYS9tYXZlbi1hcmNoZXR5cGUtd2ViYXBwL3NyYy9tYWluL3Jlc291cmNlcy9NRVRBLUlORi9hcmNoZXR5cGUueG1sCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi08YXJjaGV0eXBlPgotICA8aWQ+d2ViYXBwPC9pZD4KLSAgPHJlc291cmNlcz4KLSAgICA8cmVzb3VyY2U+c3JjL21haW4vd2ViYXBwL2luZGV4LmpzcDwvcmVzb3VyY2U+Ci0gICAgPHJlc291cmNlPnNyYy9tYWluL3dlYmFwcC9XRUItSU5GL3dlYi54bWw8L3Jlc291cmNlPgotICA8L3Jlc291cmNlcz4KLTwvYXJjaGV0eXBlPgpkaWZmIC0tZ2l0IGEvbWF2ZW4tYXJjaGV0eXBlLXdlYmFwcC9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9wb20ueG1sIGIvbWF2ZW4tYXJjaGV0eXBlLXdlYmFwcC9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9wb20ueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMzg1MDI5Li4wMDAwMDAwCi0tLSBhL21hdmVuLWFyY2hldHlwZS13ZWJhcHAvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvcG9tLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLTxwcm9qZWN0IHhtbG5zPSJodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9QT00vNC4wLjAiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiCi0gIHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL21hdmVuLmFwYWNoZS5vcmcvUE9NLzQuMC4wIGh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL21hdmVuLXY0XzBfMC54c2QiPgotICA8bW9kZWxWZXJzaW9uPjQuMC4wPC9tb2RlbFZlcnNpb24+Ci0gIDxncm91cElkPiR7Z3JvdXBJZH08L2dyb3VwSWQ+Ci0gIDxhcnRpZmFjdElkPiR7YXJ0aWZhY3RJZH08L2FydGlmYWN0SWQ+Ci0gIDxwYWNrYWdpbmc+d2FyPC9wYWNrYWdpbmc+Ci0gIDx2ZXJzaW9uPiR7dmVyc2lvbn08L3ZlcnNpb24+Ci0gIDxuYW1lPiR7YXJ0aWZhY3RJZH0gTWF2ZW4gV2ViYXBwPC9uYW1lPgotICA8dXJsPmh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnPC91cmw+Ci0gIDxkZXBlbmRlbmNpZXM+Ci0gICAgPGRlcGVuZGVuY3k+Ci0gICAgICA8Z3JvdXBJZD5qdW5pdDwvZ3JvdXBJZD4KLSAgICAgIDxhcnRpZmFjdElkPmp1bml0PC9hcnRpZmFjdElkPgotICAgICAgPHZlcnNpb24+My44LjE8L3ZlcnNpb24+Ci0gICAgICA8c2NvcGU+dGVzdDwvc2NvcGU+Ci0gICAgPC9kZXBlbmRlbmN5PgotICA8L2RlcGVuZGVuY2llcz4KLSAgPGJ1aWxkPgotICAgIDxmaW5hbE5hbWU+JHthcnRpZmFjdElkfTwvZmluYWxOYW1lPgotICA8L2J1aWxkPgotPC9wcm9qZWN0PgpkaWZmIC0tZ2l0IGEvbWF2ZW4tYXJjaGV0eXBlLXdlYmFwcC9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvbWFpbi93ZWJhcHAvV0VCLUlORi93ZWIueG1sIGIvbWF2ZW4tYXJjaGV0eXBlLXdlYmFwcC9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvbWFpbi93ZWJhcHAvV0VCLUlORi93ZWIueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Zjg4YzFmLi4wMDAwMDAwCi0tLSBhL21hdmVuLWFyY2hldHlwZS13ZWJhcHAvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvc3JjL21haW4vd2ViYXBwL1dFQi1JTkYvd2ViLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotPCFET0NUWVBFIHdlYi1hcHAgUFVCTElDCi0gIi0vL1N1biBNaWNyb3N5c3RlbXMsIEluYy4vL0RURCBXZWIgQXBwbGljYXRpb24gMi4zLy9FTiIKLSAiaHR0cDovL2phdmEuc3VuLmNvbS9kdGQvd2ViLWFwcF8yXzMuZHRkIiA+Ci0KLTx3ZWItYXBwPgotICA8ZGlzcGxheS1uYW1lPkFyY2hldHlwZSBDcmVhdGVkIFdlYiBBcHBsaWNhdGlvbjwvZGlzcGxheS1uYW1lPgotPC93ZWItYXBwPgpkaWZmIC0tZ2l0IGEvbWF2ZW4tYXJjaGV0eXBlLXdlYmFwcC9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvbWFpbi93ZWJhcHAvaW5kZXguanNwIGIvbWF2ZW4tYXJjaGV0eXBlLXdlYmFwcC9zcmMvbWFpbi9yZXNvdXJjZXMvYXJjaGV0eXBlLXJlc291cmNlcy9zcmMvbWFpbi93ZWJhcHAvaW5kZXguanNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzgxNjliLi4wMDAwMDAwCi0tLSBhL21hdmVuLWFyY2hldHlwZS13ZWJhcHAvc3JjL21haW4vcmVzb3VyY2VzL2FyY2hldHlwZS1yZXNvdXJjZXMvc3JjL21haW4vd2ViYXBwL2luZGV4LmpzcAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotPGh0bWw+Ci08Ym9keT4KLTxoMj5IZWxsbyBXb3JsZCE8L2gyPgotPC9ib2R5PgotPC9odG1sPgo=