ZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLmRhdGF0b29scy5jb25uZWN0aXZpdHkub2RhLmRlc2lnbi50ZXN0cy8uY2xhc3NwYXRoIGIvdGVzdHMvb3JnLmVjbGlwc2UuZGF0YXRvb2xzLmNvbm5lY3Rpdml0eS5vZGEuZGVzaWduLnRlc3RzLy5jbGFzc3BhdGgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzUxYzhmMgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL29yZy5lY2xpcHNlLmRhdGF0b29scy5jb25uZWN0aXZpdHkub2RhLmRlc2lnbi50ZXN0cy8uY2xhc3NwYXRoCkBAIC0wLDAgKzEsNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxjbGFzc3BhdGg+CisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9InNyYyIgcGF0aD0ic3JjIi8+CisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImNvbiIgcGF0aD0ib3JnLmVjbGlwc2UuamR0LmxhdW5jaGluZy5KUkVfQ09OVEFJTkVSIi8+CisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImNvbiIgcGF0aD0ib3JnLmVjbGlwc2UucGRlLmNvcmUucmVxdWlyZWRQbHVnaW5zIi8+CisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9Im91dHB1dCIgcGF0aD0iYmluIi8+Cis8L2NsYXNzcGF0aD4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLmRhdGF0b29scy5jb25uZWN0aXZpdHkub2RhLmRlc2lnbi50ZXN0cy8uY3ZzaWdub3JlIGIvdGVzdHMvb3JnLmVjbGlwc2UuZGF0YXRvb2xzLmNvbm5lY3Rpdml0eS5vZGEuZGVzaWduLnRlc3RzLy5jdnNpZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmEwNzdhNAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL29yZy5lY2xpcHNlLmRhdGF0b29scy5jb25uZWN0aXZpdHkub2RhLmRlc2lnbi50ZXN0cy8uY3ZzaWdub3JlCkBAIC0wLDAgKzEgQEAKK2JpbgpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2UuZGF0YXRvb2xzLmNvbm5lY3Rpdml0eS5vZGEuZGVzaWduLnRlc3RzLy5wcm9qZWN0IGIvdGVzdHMvb3JnLmVjbGlwc2UuZGF0YXRvb2xzLmNvbm5lY3Rpdml0eS5vZGEuZGVzaWduLnRlc3RzLy5wcm9qZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3OTc1MmMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9vcmcuZWNsaXBzZS5kYXRhdG9vbHMuY29ubmVjdGl2aXR5Lm9kYS5kZXNpZ24udGVzdHMvLnByb2plY3QKQEAgLTAsMCArMSwyOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9qZWN0RGVzY3JpcHRpb24+CisJPG5hbWU+b3JnLmVjbGlwc2UuZGF0YXRvb2xzLmNvbm5lY3Rpdml0eS5vZGEuZGVzaWduLnRlc3RzPC9uYW1lPgorCTxjb21tZW50PjwvY29tbWVudD4KKwk8cHJvamVjdHM+CisJPC9wcm9qZWN0cz4KKwk8YnVpbGRTcGVjPgorCQk8YnVpbGRDb21tYW5kPgorCQkJPG5hbWU+b3JnLmVjbGlwc2UuamR0LmNvcmUuamF2YWJ1aWxkZXI8L25hbWU+CisJCQk8YXJndW1lbnRzPgorCQkJPC9hcmd1bWVudHM+CisJCTwvYnVpbGRDb21tYW5kPgorCQk8YnVpbGRDb21tYW5kPgorCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLk1hbmlmZXN0QnVpbGRlcjwvbmFtZT4KKwkJCTxhcmd1bWVudHM+CisJCQk8L2FyZ3VtZW50cz4KKwkJPC9idWlsZENvbW1hbmQ+CisJCTxidWlsZENvbW1hbmQ+CisJCQk8bmFtZT5vcmcuZWNsaXBzZS5wZGUuU2NoZW1hQnVpbGRlcjwvbmFtZT4KKwkJCTxhcmd1bWVudHM+CisJCQk8L2FyZ3VtZW50cz4KKwkJPC9idWlsZENvbW1hbmQ+CisJPC9idWlsZFNwZWM+CisJPG5hdHVyZXM+CisJCTxuYXR1cmU+b3JnLmVjbGlwc2UuamR0LmNvcmUuamF2YW5hdHVyZTwvbmF0dXJlPgorCQk8bmF0dXJlPm9yZy5lY2xpcHNlLnBkZS5QbHVnaW5OYXR1cmU8L25hdHVyZT4KKwk8L25hdHVyZXM+Cis8L3Byb2plY3REZXNjcmlwdGlvbj4KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLmRhdGF0b29scy5jb25uZWN0aXZpdHkub2RhLmRlc2lnbi50ZXN0cy9NRVRBLUlORi9NQU5JRkVTVC5NRiBiL3Rlc3RzL29yZy5lY2xpcHNlLmRhdGF0b29scy5jb25uZWN0aXZpdHkub2RhLmRlc2lnbi50ZXN0cy9NRVRBLUlORi9NQU5JRkVTVC5NRgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODg0NzFjCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvb3JnLmVjbGlwc2UuZGF0YXRvb2xzLmNvbm5lY3Rpdml0eS5vZGEuZGVzaWduLnRlc3RzL01FVEEtSU5GL01BTklGRVNULk1GCkBAIC0wLDAgKzEsMTMgQEAKK01hbmlmZXN0LVZlcnNpb246IDEuMAorQnVuZGxlLU1hbmlmZXN0VmVyc2lvbjogMgorQnVuZGxlLU5hbWU6IERUUCBPREEgRGVzaWduIFRlc3RzIFN1aXRlCitCdW5kbGUtU3ltYm9saWNOYW1lOiBvcmcuZWNsaXBzZS5kYXRhdG9vbHMuY29ubmVjdGl2aXR5Lm9kYS5kZXNpZ24udGVzdHM7IHNpbmdsZXRvbjo9dHJ1ZQorQnVuZGxlLVZlcnNpb246IDMuMC42LjIwMDcxMTE5MQorQnVuZGxlLUNsYXNzUGF0aDogb3JnLmVjbGlwc2UuZGF0YXRvb2xzLmNvbm5lY3Rpdml0eS5vZGEuZGVzaWduLnRlc3RzLmphcgorQnVuZGxlLVZlbmRvcjogRWNsaXBzZS5vcmcKK0V4cG9ydC1QYWNrYWdlOiBvcmcuZWNsaXBzZS5kYXRhdG9vbHMuY29ubmVjdGl2aXR5Lm9kYS5kZXNpZ24udGVzdHMKK1JlcXVpcmUtQnVuZGxlOiBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUsCisgb3JnLmVjbGlwc2UuZGF0YXRvb2xzLmNvbm5lY3Rpdml0eS5vZGEuZGVzaWduO3Zpc2liaWxpdHk6PXJlZXhwb3J0LAorIG9yZy5lY2xpcHNlLmVtZi5lY29yZS54bWk7dmlzaWJpbGl0eTo9cmVleHBvcnQsCisgb3JnLmp1bml0O3Zpc2liaWxpdHk6PXJlZXhwb3J0CitFY2xpcHNlLUxhenlTdGFydDogdHJ1ZQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2UuZGF0YXRvb2xzLmNvbm5lY3Rpdml0eS5vZGEuZGVzaWduLnRlc3RzL2Fib3V0Lmh0bWwgYi90ZXN0cy9vcmcuZWNsaXBzZS5kYXRhdG9vbHMuY29ubmVjdGl2aXR5Lm9kYS5kZXNpZ24udGVzdHMvYWJvdXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjdkMjc1Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvb3JnLmVjbGlwc2UuZGF0YXRvb2xzLmNvbm5lY3Rpdml0eS5vZGEuZGVzaWduLnRlc3RzL2Fib3V0Lmh0bWwKQEAgLTAsMCArMSwyOCBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5BYm91dCBUaGlzIENvbnRlbnQ8L3RpdGxlPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2PgorPGgzPkFib3V0IFRoaXMgQ29udGVudDwvaDM+Cis8cD5NYXkgMiwgMjAwNjwvcD4KKzxoMz5MaWNlbnNlPC9oMz4KKzxwPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbgorKCZxdW90O0NvbnRlbnQmcXVvdDspLiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQgaXMKK3Byb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UKK1ZlcnNpb24gMS4wICgmcXVvdDtFUEwmcXVvdDspLiBBIGNvcHkgb2YgdGhlIEVQTCBpcyBhdmFpbGFibGUgYXQgPGEKK2hyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvb3JnL2RvY3VtZW50cy9lcGwtdjEwLnBocCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWw8L2E+LgorRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICZxdW90O1Byb2dyYW0mcXVvdDsgd2lsbCBtZWFuIHRoZSBDb250ZW50LjwvcD4KKworPHA+SWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uLAordGhlIENvbnRlbnQgaXMgYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5ICgmcXVvdDtSZWRpc3RyaWJ1dG9yJnF1b3Q7KQorYW5kIGRpZmZlcmVudCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkgYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluCit0aGUgQ29udGVudC4gQ2hlY2sgdGhlIFJlZGlzdHJpYnV0b3KScyBsaWNlbnNlIHRoYXQgd2FzIHByb3ZpZGVkIHdpdGggdGhlCitDb250ZW50LiBJZiBubyBzdWNoIGxpY2Vuc2UgZXhpc3RzLCBjb250YWN0IHRoZSBSZWRpc3RyaWJ1dG9yLiBVbmxlc3Mgb3RoZXJ3aXNlCitpbmRpY2F0ZWQgYmVsb3csIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UKK2NvZGUgaW4gdGhlIENvbnRlbnQgYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0IDxhCitocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZzwvYT4uPC9wPgorPHA+Jm5ic3A7PC9wPgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS5kYXRhdG9vbHMuY29ubmVjdGl2aXR5Lm9kYS5kZXNpZ24udGVzdHMvYnVpbGQucHJvcGVydGllcyBiL3Rlc3RzL29yZy5lY2xpcHNlLmRhdGF0b29scy5jb25uZWN0aXZpdHkub2RhLmRlc2lnbi50ZXN0cy9idWlsZC5wcm9wZXJ0aWVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzOTI0NTAKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9vcmcuZWNsaXBzZS5kYXRhdG9vbHMuY29ubmVjdGl2aXR5Lm9kYS5kZXNpZ24udGVzdHMvYnVpbGQucHJvcGVydGllcwpAQCAtMCwwICsxLDIzIEBACisjIDxjb3B5cmlnaHQ+CisjICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyMgKiBDb3B5cmlnaHQgKGMpIDIwMDcgQWN0dWF0ZSBDb3Jwb3JhdGlvbi4KKyMgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCisjICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisjICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKKyMgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorIyAqCisjICogQ29udHJpYnV0b3JzOgorIyAqICBBY3R1YXRlIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCisjICogIAorIyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjIDwvY29weXJpZ2h0PgorIworIyAkSWQkCisKK2Jpbi5pbmNsdWRlcyA9IG9yZy5lY2xpcHNlLmRhdGF0b29scy5jb25uZWN0aXZpdHkub2RhLmRlc2lnbi50ZXN0cy5qYXIsXAorICAgICAgICAgICAgICAgTUVUQS1JTkYvLFwKKyAgICAgICAgICAgICAgIHBsdWdpbi54bWwsXAorICAgICAgICAgICAgICAgdGVzdEZpbGVzLworamFycy5jb21waWxlLm9yZGVyID0gb3JnLmVjbGlwc2UuZGF0YXRvb2xzLmNvbm5lY3Rpdml0eS5vZGEuZGVzaWduLnRlc3RzLmphcgorc291cmNlLm9yZy5lY2xpcHNlLmRhdGF0b29scy5jb25uZWN0aXZpdHkub2RhLmRlc2lnbi50ZXN0cy5qYXIgPSBzcmMvCitvdXRwdXQub3JnLmVjbGlwc2UuZGF0YXRvb2xzLmNvbm5lY3Rpdml0eS5vZGEuZGVzaWduLnRlc3RzLmphciA9IGJpbi8KZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLmRhdGF0b29scy5jb25uZWN0aXZpdHkub2RhLmRlc2lnbi50ZXN0cy9wbHVnaW4ueG1sIGIvdGVzdHMvb3JnLmVjbGlwc2UuZGF0YXRvb2xzLmNvbm5lY3Rpdml0eS5vZGEuZGVzaWduLnRlc3RzL3BsdWdpbi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODIzY2NiMAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL29yZy5lY2xpcHNlLmRhdGF0b29scy5jb25uZWN0aXZpdHkub2RhLmRlc2lnbi50ZXN0cy9wbHVnaW4ueG1sCkBAIC0wLDAgKzEsMjQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8P2VjbGlwc2UgdmVyc2lvbj0iMy4wIj8+CisKKzwhLS0KKyA8Y29weXJpZ2h0PgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMjAwNyBBY3R1YXRlIENvcnBvcmF0aW9uLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscworICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqCisgKiBDb250cmlidXRvcnM6CisgKiAgQWN0dWF0ZSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgorICogIAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyA8L2NvcHlyaWdodD4KKworICRJZCQKKy0tPgorCis8cGx1Z2luPgorPC9wbHVnaW4+CisKZGlmZiAtLWdpdCBhL3Rlc3RzL29yZy5lY2xpcHNlLmRhdGF0b29scy5jb25uZWN0aXZpdHkub2RhLmRlc2lnbi50ZXN0cy9zcmMvb3JnL2VjbGlwc2UvZGF0YXRvb2xzL2Nvbm5lY3Rpdml0eS9vZGEvZGVzaWduL3Rlc3RzL0Rlc2lnblV0aWxMb2FkU2F2ZVRlc3QuamF2YSBiL3Rlc3RzL29yZy5lY2xpcHNlLmRhdGF0b29scy5jb25uZWN0aXZpdHkub2RhLmRlc2lnbi50ZXN0cy9zcmMvb3JnL2VjbGlwc2UvZGF0YXRvb2xzL2Nvbm5lY3Rpdml0eS9vZGEvZGVzaWduL3Rlc3RzL0Rlc2lnblV0aWxMb2FkU2F2ZVRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZWVkZTkwCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvb3JnLmVjbGlwc2UuZGF0YXRvb2xzLmNvbm5lY3Rpdml0eS5vZGEuZGVzaWduLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS9kYXRhdG9vbHMvY29ubmVjdGl2aXR5L29kYS9kZXNpZ24vdGVzdHMvRGVzaWduVXRpbExvYWRTYXZlVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTc2IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMjAwNyBBY3R1YXRlIENvcnBvcmF0aW9uLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscworICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqCisgKiBDb250cmlidXRvcnM6CisgKiAgQWN0dWF0ZSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgorICogIAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCitwYWNrYWdlIG9yZy5lY2xpcHNlLmRhdGF0b29scy5jb25uZWN0aXZpdHkub2RhLmRlc2lnbi50ZXN0czsKKworaW1wb3J0IGphdmEuaW8uQnVmZmVyZWRSZWFkZXI7CitpbXBvcnQgamF2YS5pby5GaWxlOworaW1wb3J0IGphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uRmlsZVJlYWRlcjsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworCitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlOworCitpbXBvcnQgb3JnLmVjbGlwc2UuZGF0YXRvb2xzLmNvbm5lY3Rpdml0eS5vZGEuZGVzaWduLk9kYURlc2lnblNlc3Npb247CitpbXBvcnQgb3JnLmVjbGlwc2UuZGF0YXRvb2xzLmNvbm5lY3Rpdml0eS5vZGEuZGVzaWduLnV0aWwuRGVzaWduVXRpbDsKKworLyoqCisgKiBUZXN0IGNhc2VzIGZvciBsb2FkaW5nIGFuZCBzYXZpbmcgT2RhRGVzaWduU2Vzc2lvbiB1dGlsaXR5IGluIERlc2lnblV0aWwuICAKKyAqLworcHVibGljIGNsYXNzIERlc2lnblV0aWxMb2FkU2F2ZVRlc3QgZXh0ZW5kcyBUZXN0Q2FzZQoreworICAgIHByaXZhdGUgU3RyaW5nIG1fdGVzdEZpbGVQYXRoOworICAgIAorICAgIHByb3RlY3RlZCB2b2lkIHNldFVwKCkgdGhyb3dzIEV4Y2VwdGlvbgorICAgIHsKKyAgICAgICAgc3VwZXIuc2V0VXAoKTsKKyAgICAgICAgaWYoIG1fdGVzdEZpbGVQYXRoID09IG51bGwgKQorICAgICAgICB7CisgICAgICAgICAgICB0cnkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtX3Rlc3RGaWxlUGF0aCA9IFRlc3RVdGlsLmdldFBsdWdpblRlc3RGaWxlUGF0aCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2F0Y2goIElPRXhjZXB0aW9uIGV4ICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBleC5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgICAgICAgICAgICBmYWlsKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcm90ZWN0ZWQgdm9pZCB0ZWFyRG93bigpIHRocm93cyBFeGNlcHRpb24KKyAgICB7CisgICAgICAgIHN1cGVyLnRlYXJEb3duKCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdExvYWRPZGFEZXNpZ25TZXNzaW9uKCkKKyAgICB7CisgICAgICAgIE9kYURlc2lnblNlc3Npb24gZGVzaWduID0gbG9hZE9kYURlc2lnblNlc3Npb24oIG5ldyBGaWxlKCBnZXRTYW1wbGVEYlRlc3RGaWxlKCkgKSk7CisgICAgICAgIGFzc2VydEVxdWFscyggInNhbXBsZWRiIERhdGEgU2V0IiwgZGVzaWduLmdldFJlc3BvbnNlRGF0YVNldERlc2lnbigpLmdldE5hbWUoKSApOworICAgICAgICBhc3NlcnROb3ROdWxsKCBkZXNpZ24uZ2V0UmVxdWVzdERhdGFTZXREZXNpZ24oKSApOworICAgICAgICBhc3NlcnROb3ROdWxsKCBkZXNpZ24uZ2V0UmVzcG9uc2VEYXRhU2V0RGVzaWduKCkgKTsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBPZGFEZXNpZ25TZXNzaW9uIGxvYWRPZGFEZXNpZ25TZXNzaW9uKCBGaWxlIHRlc3RGaWxlICkKKyAgICB7CisgICAgICAgIE9kYURlc2lnblNlc3Npb24gZGVzaWduID0gbnVsbDsKKyAgICAgICAgdHJ5CisgICAgICAgIHsKKyAgICAgICAgICAgIGRlc2lnbiA9IERlc2lnblV0aWwubG9hZE9kYURlc2lnblNlc3Npb24oIHRlc3RGaWxlICk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2goIEV4Y2VwdGlvbiBleCApCisgICAgICAgIHsKKyAgICAgICAgICAgIGZhaWwoKTsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnROb3ROdWxsKCBkZXNpZ24gKTsKKyAgICAgICAgcmV0dXJuIGRlc2lnbjsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBTdHJpbmcgZ2V0R29sZGVuVGVzdEZpbGVQYXRoKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX3Rlc3RGaWxlUGF0aCArICIvZ29sZGVuIjsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBTdHJpbmcgZ2V0U2FtcGxlRGJUZXN0RmlsZSgpCisgICAgeworICAgICAgICByZXR1cm4gZ2V0R29sZGVuVGVzdEZpbGVQYXRoKCkgKyAiL2pkYmNCaXJ0U2FtcGxlU2Vzc2lvbi54bWwiOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIFN0cmluZyBnZXRUZW1wT3V0RmlsZSgpCisgICAgeworICAgICAgICByZXR1cm4gbV90ZXN0RmlsZVBhdGggKyAiL3RlbXBPdXQueG1sIjsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0U2F2ZURlc2lnblNlc3Npb24oKQorICAgIHsKKyAgICAgICAgRmlsZSBnb2xkZW5GaWxlID0gbmV3IEZpbGUoIGdldFNhbXBsZURiVGVzdEZpbGUoKSApOworICAgICAgICBPZGFEZXNpZ25TZXNzaW9uIGRlc2lnbiA9IGxvYWRPZGFEZXNpZ25TZXNzaW9uKCBnb2xkZW5GaWxlICk7CisKKyAgICAgICAgRmlsZSB0ZW1wT3V0ID0gbmV3IEZpbGUoIGdldFRlbXBPdXRGaWxlKCkgKTsKKyAgICAgICAgc2F2ZURlc2lnblNlc3Npb24oIGRlc2lnbiwgdGVtcE91dCApOworICAgICAgICBhc3NlcnRUcnVlKCBjb21wYXJlRmlsZUNvbnRlbnQoIGdvbGRlbkZpbGUsIHRlbXBPdXQgKSApOworICAgICAgICAKKyAgICAgICAgLy8gbW9kaWZ5IHRoZSBkZXNpZ24gYW5kIHRlc3Qgbm9uRXF1YWwgb3V0cHV0CisgICAgICAgIGRlc2lnbi5nZXRSZXNwb25zZURhdGFTZXREZXNpZ24oKS5zZXROYW1lKCAidGVzdCBjaGFuZ2UgaW4gbmFtZSIgKTsKKyAgICAgICAgc2F2ZURlc2lnblNlc3Npb24oIGRlc2lnbiwgdGVtcE91dCApOworICAgICAgICBhc3NlcnRGYWxzZSggY29tcGFyZUZpbGVDb250ZW50KCBnb2xkZW5GaWxlLCB0ZW1wT3V0ICkgKTsKKyAgICAgICAgCisgICAgICAgIGNsZWFudXBGaWxlKCB0ZW1wT3V0ICk7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgdm9pZCBzYXZlRGVzaWduU2Vzc2lvbiggT2RhRGVzaWduU2Vzc2lvbiBkZXNpZ24sIEZpbGUgdGVtcE91dCApCisgICAgeworICAgICAgICB0cnkKKyAgICAgICAgeworICAgICAgICAgICAgRGVzaWduVXRpbC5zYXZlT2RhRGVzaWduU2Vzc2lvbiggZGVzaWduLCB0ZW1wT3V0ICk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2goIEV4Y2VwdGlvbiBleCApCisgICAgICAgIHsKKyAgICAgICAgICAgIGNsZWFudXBGaWxlKCB0ZW1wT3V0ICk7CisgICAgICAgICAgICBmYWlsKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBib29sZWFuIGNvbXBhcmVGaWxlQ29udGVudCggRmlsZSBmaWxlMSwgRmlsZSBmaWxlMiApCisgICAgeworICAgICAgICBib29sZWFuIG1hdGNoID0gdHJ1ZTsKKyAgICAgICAgQnVmZmVyZWRSZWFkZXIgZmlsZTFCdWZSZWFkZXIgPSBudWxsOworICAgICAgICBCdWZmZXJlZFJlYWRlciBmaWxlMkJ1ZlJlYWRlciA9IG51bGw7CisgICAgICAgIHRyeQorICAgICAgICB7CisgICAgICAgICAgICBmaWxlMUJ1ZlJlYWRlciA9IG5ldyBCdWZmZXJlZFJlYWRlciggbmV3IEZpbGVSZWFkZXIoIGZpbGUxICkgKTsgCisgICAgICAgICAgICBmaWxlMkJ1ZlJlYWRlciA9IG5ldyBCdWZmZXJlZFJlYWRlciggbmV3IEZpbGVSZWFkZXIoIGZpbGUyICkgKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCggRmlsZU5vdEZvdW5kRXhjZXB0aW9uIGV4ICkKKyAgICAgICAgeworICAgICAgICAgICAgbWF0Y2ggPSBmYWxzZTsKKyAgICAgICAgICAgIGV4LnByaW50U3RhY2tUcmFjZSgpOworICAgICAgICB9IAorICAgICAgICAKKyAgICAgICAgdHJ5CisgICAgICAgIHsKKyAgICAgICAgICAgIFN0cmluZyBmaWxlMUxpbmUsIGZpbGUyTGluZTsKKyAgICAgICAgICAgIHdoaWxlKCBtYXRjaCAmJiAoZmlsZTFMaW5lID0gZmlsZTFCdWZSZWFkZXIucmVhZExpbmUoKSApICE9IG51bGwgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZpbGUyTGluZSA9IGZpbGUyQnVmUmVhZGVyLnJlYWRMaW5lKCk7CisgICAgICAgICAgICAgICAgbWF0Y2ggPSBmaWxlMUxpbmUuZXF1YWxzKCBmaWxlMkxpbmUgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXRjaCggSU9FeGNlcHRpb24gZXggKQorICAgICAgICB7CisgICAgICAgICAgICBtYXRjaCA9IGZhbHNlOworICAgICAgICAgICAgZXgucHJpbnRTdGFja1RyYWNlKCk7CisgICAgICAgIH0KKworICAgICAgICB0cnkKKyAgICAgICAgeworICAgICAgICAgICAgZmlsZTFCdWZSZWFkZXIuY2xvc2UoKTsKKyAgICAgICAgICAgIGZpbGUyQnVmUmVhZGVyLmNsb3NlKCk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2goIElPRXhjZXB0aW9uIGV4ICkKKyAgICAgICAgeworICAgICAgICAgICAgZXgucHJpbnRTdGFja1RyYWNlKCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBtYXRjaDsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSB2b2lkIGNsZWFudXBGaWxlKCBGaWxlIGZpbGUgKQorICAgIHsKKyAgICAgICAgaWYoIGZpbGUgIT0gbnVsbCAmJiBmaWxlLmV4aXN0cygpICkKKyAgICAgICAgICAgIGZpbGUuZGVsZXRlKCk7CisgICAgfQorICAgIAorfQorCmRpZmYgLS1naXQgYS90ZXN0cy9vcmcuZWNsaXBzZS5kYXRhdG9vbHMuY29ubmVjdGl2aXR5Lm9kYS5kZXNpZ24udGVzdHMvc3JjL29yZy9lY2xpcHNlL2RhdGF0b29scy9jb25uZWN0aXZpdHkvb2RhL2Rlc2lnbi90ZXN0cy9UZXN0VXRpbC5qYXZhIGIvdGVzdHMvb3JnLmVjbGlwc2UuZGF0YXRvb2xzLmNvbm5lY3Rpdml0eS5vZGEuZGVzaWduLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS9kYXRhdG9vbHMvY29ubmVjdGl2aXR5L29kYS9kZXNpZ24vdGVzdHMvVGVzdFV0aWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODE1NTU4Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvb3JnLmVjbGlwc2UuZGF0YXRvb2xzLmNvbm5lY3Rpdml0eS5vZGEuZGVzaWduLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS9kYXRhdG9vbHMvY29ubmVjdGl2aXR5L29kYS9kZXNpZ24vdGVzdHMvVGVzdFV0aWwuamF2YQpAQCAtMCwwICsxLDM0IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoYykgMjAwNyBBY3R1YXRlIENvcnBvcmF0aW9uLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscworICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyAqCisgKiBDb250cmlidXRvcnM6CisgKiAgQWN0dWF0ZSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgorICogIAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCitwYWNrYWdlIG9yZy5lY2xpcHNlLmRhdGF0b29scy5jb25uZWN0aXZpdHkub2RhLmRlc2lnbi50ZXN0czsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CisKK2ltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuRmlsZUxvY2F0b3I7CitpbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLlBsYXRmb3JtOworaW1wb3J0IG9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGU7CisKK3B1YmxpYyBjbGFzcyBUZXN0VXRpbAoreworCisgICAgc3RhdGljIFN0cmluZyBnZXRQbHVnaW5UZXN0RmlsZVBhdGgoKQorICAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICB7ICAgICAgIAorICAgICAgICBCdW5kbGUgYnVuZGxlID0gUGxhdGZvcm0uZ2V0QnVuZGxlKCBUZXN0VXRpbC5jbGFzcy5nZXRQYWNrYWdlKCkuZ2V0TmFtZSgpICk7CisgICAgICAgIFN0cmluZyB0ZXN0RmlsZVBhdGggPSBGaWxlTG9jYXRvci50b0ZpbGVVUkwoIGJ1bmRsZS5nZXRFbnRyeSggIi90ZXN0RmlsZXMiICkgKS5nZXRGaWxlKCk7CisgICAgICAgIHJldHVybiB0ZXN0RmlsZVBhdGg7CisgICAgfQorICAgIAorfQpkaWZmIC0tZ2l0IGEvdGVzdHMvb3JnLmVjbGlwc2UuZGF0YXRvb2xzLmNvbm5lY3Rpdml0eS5vZGEuZGVzaWduLnRlc3RzL3Rlc3RGaWxlcy9nb2xkZW4vamRiY0JpcnRTYW1wbGVTZXNzaW9uLnhtbCBiL3Rlc3RzL29yZy5lY2xpcHNlLmRhdGF0b29scy5jb25uZWN0aXZpdHkub2RhLmRlc2lnbi50ZXN0cy90ZXN0RmlsZXMvZ29sZGVuL2pkYmNCaXJ0U2FtcGxlU2Vzc2lvbi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWU4YzUxMQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL29yZy5lY2xpcHNlLmRhdGF0b29scy5jb25uZWN0aXZpdHkub2RhLmRlc2lnbi50ZXN0cy90ZXN0RmlsZXMvZ29sZGVuL2pkYmNCaXJ0U2FtcGxlU2Vzc2lvbi54bWwKQEAgLTAsMCArMSwxOTYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IkFTQ0lJIj8+Cis8ZGVzaWduOm9kYURlc2lnblNlc3Npb24geG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeG1sbnM6ZGVzaWduPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2RhdGF0b29scy9jb25uZWN0aXZpdHkvb2RhL2Rlc2lnbiIgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2RhdGF0b29scy9jb25uZWN0aXZpdHkvb2RhL2Rlc2lnbiBqYXZhOi8vb3JnLmVjbGlwc2UuZGF0YXRvb2xzLmNvbm5lY3Rpdml0eS5vZGEuZGVzaWduLkRlc2lnblBhY2thZ2UiPgorICA8ZGVzaWduOnJlcXVlc3Q+CisgICAgPGRlc2lnbjpkYXRhQWNjZXNzRGVzaWduPgorICAgICAgPGRlc2lnbjpkYXRhU2V0RGVzaWduPgorICAgICAgICA8ZGVzaWduOm5hbWU+c2FtcGxlZGIgRGF0YSBTZXQ8L2Rlc2lnbjpuYW1lPgorICAgICAgICA8ZGVzaWduOm9kYUV4dGVuc2lvbkRhdGFTZXRJZD5vcmcuZWNsaXBzZS5iaXJ0LnJlcG9ydC5kYXRhLm9kYS5qZGJjLkpkYmNTZWxlY3REYXRhU2V0PC9kZXNpZ246b2RhRXh0ZW5zaW9uRGF0YVNldElkPgorICAgICAgICA8ZGVzaWduOmRhdGFTb3VyY2VEZXNpZ24+CisgICAgICAgICAgPGRlc2lnbjpuYW1lPnNhbXBsZWRiIERhdGEgU291cmNlPC9kZXNpZ246bmFtZT4KKyAgICAgICAgICA8ZGVzaWduOm9kYUV4dGVuc2lvbklkPm9yZy5lY2xpcHNlLmJpcnQucmVwb3J0LmRhdGEub2RhLmpkYmM8L2Rlc2lnbjpvZGFFeHRlbnNpb25JZD4KKyAgICAgICAgICA8ZGVzaWduOnB1YmxpY1Byb3BlcnRpZXM+CisgICAgICAgICAgICA8ZGVzaWduOnByb3BlcnRpZXM+CisgICAgICAgICAgICAgIDxkZXNpZ246bmFtZVZhbHVlPgorICAgICAgICAgICAgICAgIDxkZXNpZ246bmFtZT5vZGFEcml2ZXJDbGFzczwvZGVzaWduOm5hbWU+CisgICAgICAgICAgICAgICAgPGRlc2lnbjp2YWx1ZT5vcmcuZWNsaXBzZS5iaXJ0LnJlcG9ydC5kYXRhLm9kYS5zYW1wbGVkYi5Ecml2ZXI8L2Rlc2lnbjp2YWx1ZT4KKyAgICAgICAgICAgICAgPC9kZXNpZ246bmFtZVZhbHVlPgorICAgICAgICAgICAgPC9kZXNpZ246cHJvcGVydGllcz4KKyAgICAgICAgICAgIDxkZXNpZ246cHJvcGVydGllcz4KKyAgICAgICAgICAgICAgPGRlc2lnbjpuYW1lVmFsdWU+CisgICAgICAgICAgICAgICAgPGRlc2lnbjpuYW1lPm9kYVVSTDwvZGVzaWduOm5hbWU+CisgICAgICAgICAgICAgICAgPGRlc2lnbjp2YWx1ZT5qZGJjOmNsYXNzaWNtb2RlbHM6c2FtcGxlZGI8L2Rlc2lnbjp2YWx1ZT4KKyAgICAgICAgICAgICAgPC9kZXNpZ246bmFtZVZhbHVlPgorICAgICAgICAgICAgPC9kZXNpZ246cHJvcGVydGllcz4KKyAgICAgICAgICAgIDxkZXNpZ246cHJvcGVydGllcz4KKyAgICAgICAgICAgICAgPGRlc2lnbjpuYW1lVmFsdWU+CisgICAgICAgICAgICAgICAgPGRlc2lnbjpuYW1lPm9kYVVzZXI8L2Rlc2lnbjpuYW1lPgorICAgICAgICAgICAgICAgIDxkZXNpZ246dmFsdWU+Q2xhc3NpY01vZGVsczwvZGVzaWduOnZhbHVlPgorICAgICAgICAgICAgICA8L2Rlc2lnbjpuYW1lVmFsdWU+CisgICAgICAgICAgICA8L2Rlc2lnbjpwcm9wZXJ0aWVzPgorICAgICAgICAgICAgPGRlc2lnbjpwcm9wZXJ0aWVzPgorICAgICAgICAgICAgICA8ZGVzaWduOm5hbWVWYWx1ZT4KKyAgICAgICAgICAgICAgICA8ZGVzaWduOm5hbWU+b2RhUGFzc3dvcmQ8L2Rlc2lnbjpuYW1lPgorICAgICAgICAgICAgICA8L2Rlc2lnbjpuYW1lVmFsdWU+CisgICAgICAgICAgICA8L2Rlc2lnbjpwcm9wZXJ0aWVzPgorICAgICAgICAgICAgPGRlc2lnbjpwcm9wZXJ0aWVzPgorICAgICAgICAgICAgICA8ZGVzaWduOm5hbWVWYWx1ZT4KKyAgICAgICAgICAgICAgICA8ZGVzaWduOm5hbWU+b2RhSm5kaU5hbWU8L2Rlc2lnbjpuYW1lPgorICAgICAgICAgICAgICA8L2Rlc2lnbjpuYW1lVmFsdWU+CisgICAgICAgICAgICA8L2Rlc2lnbjpwcm9wZXJ0aWVzPgorICAgICAgICAgICAgPGRlc2lnbjpwcm9wZXJ0aWVzPgorICAgICAgICAgICAgICA8ZGVzaWduOm5hbWVWYWx1ZT4KKyAgICAgICAgICAgICAgICA8ZGVzaWduOm5hbWU+T2RhQ29ublByb2ZpbGVOYW1lPC9kZXNpZ246bmFtZT4KKyAgICAgICAgICAgICAgPC9kZXNpZ246bmFtZVZhbHVlPgorICAgICAgICAgICAgPC9kZXNpZ246cHJvcGVydGllcz4KKyAgICAgICAgICAgIDxkZXNpZ246cHJvcGVydGllcz4KKyAgICAgICAgICAgICAgPGRlc2lnbjpuYW1lVmFsdWU+CisgICAgICAgICAgICAgICAgPGRlc2lnbjpuYW1lPk9kYUNvbm5Qcm9maWxlU3RvcmVQYXRoPC9kZXNpZ246bmFtZT4KKyAgICAgICAgICAgICAgPC9kZXNpZ246bmFtZVZhbHVlPgorICAgICAgICAgICAgPC9kZXNpZ246cHJvcGVydGllcz4KKyAgICAgICAgICA8L2Rlc2lnbjpwdWJsaWNQcm9wZXJ0aWVzPgorICAgICAgICA8L2Rlc2lnbjpkYXRhU291cmNlRGVzaWduPgorICAgICAgICA8ZGVzaWduOnF1ZXJ5PgorICAgICAgICAgIDxkZXNpZ246cXVlcnlUZXh0PnNlbGVjdCBjaXR5Citmcm9tIENMQVNTSUNNT0RFTFMuT0ZGSUNFUword2hlcmUgb2ZmaWNlY29kZSBsaWtlID88L2Rlc2lnbjpxdWVyeVRleHQ+CisgICAgICAgIDwvZGVzaWduOnF1ZXJ5PgorICAgICAgICA8ZGVzaWduOnJlc3VsdFNldHM+CisgICAgICAgICAgPGRlc2lnbjpyZXN1bHRTZXREZWZpbml0aW9ucz4KKyAgICAgICAgICAgIDxkZXNpZ246cmVzdWx0U2V0Q29sdW1ucz4KKyAgICAgICAgICAgICAgPGRlc2lnbjpyZXN1bHRDb2x1bW5EZWZpbml0aW9ucz4KKyAgICAgICAgICAgICAgICA8ZGVzaWduOmF0dHJpYnV0ZXM+CisgICAgICAgICAgICAgICAgICA8ZGVzaWduOm5hbWU+Q0lUWTwvZGVzaWduOm5hbWU+CisgICAgICAgICAgICAgICAgICA8ZGVzaWduOnBvc2l0aW9uPjE8L2Rlc2lnbjpwb3NpdGlvbj4KKyAgICAgICAgICAgICAgICAgIDxkZXNpZ246bmF0aXZlRGF0YVR5cGVDb2RlPjEyPC9kZXNpZ246bmF0aXZlRGF0YVR5cGVDb2RlPgorICAgICAgICAgICAgICAgICAgPGRlc2lnbjp1aUhpbnRzPgorICAgICAgICAgICAgICAgICAgICA8ZGVzaWduOmRpc3BsYXlOYW1lPkNJVFk8L2Rlc2lnbjpkaXNwbGF5TmFtZT4KKyAgICAgICAgICAgICAgICAgIDwvZGVzaWduOnVpSGludHM+CisgICAgICAgICAgICAgICAgPC9kZXNpZ246YXR0cmlidXRlcz4KKyAgICAgICAgICAgICAgPC9kZXNpZ246cmVzdWx0Q29sdW1uRGVmaW5pdGlvbnM+CisgICAgICAgICAgICA8L2Rlc2lnbjpyZXN1bHRTZXRDb2x1bW5zPgorICAgICAgICAgIDwvZGVzaWduOnJlc3VsdFNldERlZmluaXRpb25zPgorICAgICAgICA8L2Rlc2lnbjpyZXN1bHRTZXRzPgorICAgICAgICA8ZGVzaWduOnBhcmFtZXRlcnM+CisgICAgICAgICAgPGRlc2lnbjpwYXJhbWV0ZXJEZWZpbml0aW9ucz4KKyAgICAgICAgICAgIDxkZXNpZ246aW5PdXRNb2RlPkluPC9kZXNpZ246aW5PdXRNb2RlPgorICAgICAgICAgICAgPGRlc2lnbjphdHRyaWJ1dGVzPgorICAgICAgICAgICAgICA8ZGVzaWduOm5hbWU+PC9kZXNpZ246bmFtZT4KKyAgICAgICAgICAgICAgPGRlc2lnbjpwb3NpdGlvbj4xPC9kZXNpZ246cG9zaXRpb24+CisgICAgICAgICAgICAgIDxkZXNpZ246bmF0aXZlRGF0YVR5cGVDb2RlPjEyPC9kZXNpZ246bmF0aXZlRGF0YVR5cGVDb2RlPgorICAgICAgICAgICAgICA8ZGVzaWduOm51bGxhYmlsaXR5Pk51bGxhYmxlPC9kZXNpZ246bnVsbGFiaWxpdHk+CisgICAgICAgICAgICAgIDxkZXNpZ246dWlIaW50cy8+CisgICAgICAgICAgICA8L2Rlc2lnbjphdHRyaWJ1dGVzPgorICAgICAgICAgICAgPGRlc2lnbjppbnB1dEF0dHJpYnV0ZXM+CisgICAgICAgICAgICAgIDxkZXNpZ246ZWxlbWVudEF0dHJpYnV0ZXM+CisgICAgICAgICAgICAgICAgPGRlc2lnbjpvcHRpb25hbD50cnVlPC9kZXNpZ246b3B0aW9uYWw+CisgICAgICAgICAgICAgICAgPGRlc2lnbjptYXNrc1ZhbHVlPmZhbHNlPC9kZXNpZ246bWFza3NWYWx1ZT4KKyAgICAgICAgICAgICAgICA8ZGVzaWduOnVpSGludHM+CisgICAgICAgICAgICAgICAgICA8ZGVzaWduOnByb21wdFN0eWxlPlNlbGVjdGFibGVMaXN0V2l0aFRleHRGaWVsZDwvZGVzaWduOnByb21wdFN0eWxlPgorICAgICAgICAgICAgICAgIDwvZGVzaWduOnVpSGludHM+CisgICAgICAgICAgICAgIDwvZGVzaWduOmVsZW1lbnRBdHRyaWJ1dGVzPgorICAgICAgICAgICAgPC9kZXNpZ246aW5wdXRBdHRyaWJ1dGVzPgorICAgICAgICAgIDwvZGVzaWduOnBhcmFtZXRlckRlZmluaXRpb25zPgorICAgICAgICA8L2Rlc2lnbjpwYXJhbWV0ZXJzPgorICAgICAgPC9kZXNpZ246ZGF0YVNldERlc2lnbj4KKyAgICA8L2Rlc2lnbjpkYXRhQWNjZXNzRGVzaWduPgorICAgIDxkZXNpZ246c2Vzc2lvbkxvY2FsZT4KKyAgICAgIDxkZXNpZ246bGFuZ3VhZ2U+ZW48L2Rlc2lnbjpsYW5ndWFnZT4KKyAgICAgIDxkZXNpZ246Y291bnRyeT5VUzwvZGVzaWduOmNvdW50cnk+CisgICAgPC9kZXNpZ246c2Vzc2lvbkxvY2FsZT4KKyAgPC9kZXNpZ246cmVxdWVzdD4KKyAgPGRlc2lnbjpyZXNwb25zZT4KKyAgICA8ZGVzaWduOnNlc3Npb25TdGF0dXM+T2s8L2Rlc2lnbjpzZXNzaW9uU3RhdHVzPgorICAgIDxkZXNpZ246ZGF0YUFjY2Vzc0Rlc2lnbj4KKyAgICAgIDxkZXNpZ246ZGF0YVNldERlc2lnbj4KKyAgICAgICAgPGRlc2lnbjpuYW1lPnNhbXBsZWRiIERhdGEgU2V0PC9kZXNpZ246bmFtZT4KKyAgICAgICAgPGRlc2lnbjpvZGFFeHRlbnNpb25EYXRhU2V0SWQ+b3JnLmVjbGlwc2UuYmlydC5yZXBvcnQuZGF0YS5vZGEuamRiYy5KZGJjU2VsZWN0RGF0YVNldDwvZGVzaWduOm9kYUV4dGVuc2lvbkRhdGFTZXRJZD4KKyAgICAgICAgPGRlc2lnbjpkYXRhU291cmNlRGVzaWduPgorICAgICAgICAgIDxkZXNpZ246bmFtZT5zYW1wbGVkYiBEYXRhIFNvdXJjZTwvZGVzaWduOm5hbWU+CisgICAgICAgICAgPGRlc2lnbjpvZGFFeHRlbnNpb25JZD5vcmcuZWNsaXBzZS5iaXJ0LnJlcG9ydC5kYXRhLm9kYS5qZGJjPC9kZXNpZ246b2RhRXh0ZW5zaW9uSWQ+CisgICAgICAgICAgPGRlc2lnbjpwdWJsaWNQcm9wZXJ0aWVzPgorICAgICAgICAgICAgPGRlc2lnbjpwcm9wZXJ0aWVzPgorICAgICAgICAgICAgICA8ZGVzaWduOm5hbWVWYWx1ZT4KKyAgICAgICAgICAgICAgICA8ZGVzaWduOm5hbWU+b2RhRHJpdmVyQ2xhc3M8L2Rlc2lnbjpuYW1lPgorICAgICAgICAgICAgICAgIDxkZXNpZ246dmFsdWU+b3JnLmVjbGlwc2UuYmlydC5yZXBvcnQuZGF0YS5vZGEuc2FtcGxlZGIuRHJpdmVyPC9kZXNpZ246dmFsdWU+CisgICAgICAgICAgICAgIDwvZGVzaWduOm5hbWVWYWx1ZT4KKyAgICAgICAgICAgIDwvZGVzaWduOnByb3BlcnRpZXM+CisgICAgICAgICAgICA8ZGVzaWduOnByb3BlcnRpZXM+CisgICAgICAgICAgICAgIDxkZXNpZ246bmFtZVZhbHVlPgorICAgICAgICAgICAgICAgIDxkZXNpZ246bmFtZT5vZGFVUkw8L2Rlc2lnbjpuYW1lPgorICAgICAgICAgICAgICAgIDxkZXNpZ246dmFsdWU+amRiYzpjbGFzc2ljbW9kZWxzOnNhbXBsZWRiPC9kZXNpZ246dmFsdWU+CisgICAgICAgICAgICAgIDwvZGVzaWduOm5hbWVWYWx1ZT4KKyAgICAgICAgICAgIDwvZGVzaWduOnByb3BlcnRpZXM+CisgICAgICAgICAgICA8ZGVzaWduOnByb3BlcnRpZXM+CisgICAgICAgICAgICAgIDxkZXNpZ246bmFtZVZhbHVlPgorICAgICAgICAgICAgICAgIDxkZXNpZ246bmFtZT5vZGFVc2VyPC9kZXNpZ246bmFtZT4KKyAgICAgICAgICAgICAgICA8ZGVzaWduOnZhbHVlPkNsYXNzaWNNb2RlbHM8L2Rlc2lnbjp2YWx1ZT4KKyAgICAgICAgICAgICAgPC9kZXNpZ246bmFtZVZhbHVlPgorICAgICAgICAgICAgPC9kZXNpZ246cHJvcGVydGllcz4KKyAgICAgICAgICAgIDxkZXNpZ246cHJvcGVydGllcz4KKyAgICAgICAgICAgICAgPGRlc2lnbjpuYW1lVmFsdWU+CisgICAgICAgICAgICAgICAgPGRlc2lnbjpuYW1lPm9kYVBhc3N3b3JkPC9kZXNpZ246bmFtZT4KKyAgICAgICAgICAgICAgPC9kZXNpZ246bmFtZVZhbHVlPgorICAgICAgICAgICAgPC9kZXNpZ246cHJvcGVydGllcz4KKyAgICAgICAgICAgIDxkZXNpZ246cHJvcGVydGllcz4KKyAgICAgICAgICAgICAgPGRlc2lnbjpuYW1lVmFsdWU+CisgICAgICAgICAgICAgICAgPGRlc2lnbjpuYW1lPm9kYUpuZGlOYW1lPC9kZXNpZ246bmFtZT4KKyAgICAgICAgICAgICAgPC9kZXNpZ246bmFtZVZhbHVlPgorICAgICAgICAgICAgPC9kZXNpZ246cHJvcGVydGllcz4KKyAgICAgICAgICAgIDxkZXNpZ246cHJvcGVydGllcz4KKyAgICAgICAgICAgICAgPGRlc2lnbjpuYW1lVmFsdWU+CisgICAgICAgICAgICAgICAgPGRlc2lnbjpuYW1lPk9kYUNvbm5Qcm9maWxlTmFtZTwvZGVzaWduOm5hbWU+CisgICAgICAgICAgICAgIDwvZGVzaWduOm5hbWVWYWx1ZT4KKyAgICAgICAgICAgIDwvZGVzaWduOnByb3BlcnRpZXM+CisgICAgICAgICAgICA8ZGVzaWduOnByb3BlcnRpZXM+CisgICAgICAgICAgICAgIDxkZXNpZ246bmFtZVZhbHVlPgorICAgICAgICAgICAgICAgIDxkZXNpZ246bmFtZT5PZGFDb25uUHJvZmlsZVN0b3JlUGF0aDwvZGVzaWduOm5hbWU+CisgICAgICAgICAgICAgIDwvZGVzaWduOm5hbWVWYWx1ZT4KKyAgICAgICAgICAgIDwvZGVzaWduOnByb3BlcnRpZXM+CisgICAgICAgICAgPC9kZXNpZ246cHVibGljUHJvcGVydGllcz4KKyAgICAgICAgPC9kZXNpZ246ZGF0YVNvdXJjZURlc2lnbj4KKyAgICAgICAgPGRlc2lnbjpxdWVyeT4KKyAgICAgICAgICA8ZGVzaWduOnF1ZXJ5VGV4dD5zZWxlY3QgY2l0eQorZnJvbSBDTEFTU0lDTU9ERUxTLk9GRklDRVMKK3doZXJlIG9mZmljZWNvZGUgbGlrZSA/PC9kZXNpZ246cXVlcnlUZXh0PgorICAgICAgICA8L2Rlc2lnbjpxdWVyeT4KKyAgICAgICAgPGRlc2lnbjpyZXN1bHRTZXRzPgorICAgICAgICAgIDxkZXNpZ246cmVzdWx0U2V0RGVmaW5pdGlvbnM+CisgICAgICAgICAgICA8ZGVzaWduOnJlc3VsdFNldENvbHVtbnM+CisgICAgICAgICAgICAgIDxkZXNpZ246cmVzdWx0Q29sdW1uRGVmaW5pdGlvbnM+CisgICAgICAgICAgICAgICAgPGRlc2lnbjphdHRyaWJ1dGVzPgorICAgICAgICAgICAgICAgICAgPGRlc2lnbjpuYW1lPkNJVFk8L2Rlc2lnbjpuYW1lPgorICAgICAgICAgICAgICAgICAgPGRlc2lnbjpwb3NpdGlvbj4xPC9kZXNpZ246cG9zaXRpb24+CisgICAgICAgICAgICAgICAgICA8ZGVzaWduOm5hdGl2ZURhdGFUeXBlQ29kZT4xMjwvZGVzaWduOm5hdGl2ZURhdGFUeXBlQ29kZT4KKyAgICAgICAgICAgICAgICAgIDxkZXNpZ246dWlIaW50cz4KKyAgICAgICAgICAgICAgICAgICAgPGRlc2lnbjpkaXNwbGF5TmFtZT5DSVRZPC9kZXNpZ246ZGlzcGxheU5hbWU+CisgICAgICAgICAgICAgICAgICA8L2Rlc2lnbjp1aUhpbnRzPgorICAgICAgICAgICAgICAgIDwvZGVzaWduOmF0dHJpYnV0ZXM+CisgICAgICAgICAgICAgIDwvZGVzaWduOnJlc3VsdENvbHVtbkRlZmluaXRpb25zPgorICAgICAgICAgICAgPC9kZXNpZ246cmVzdWx0U2V0Q29sdW1ucz4KKyAgICAgICAgICA8L2Rlc2lnbjpyZXN1bHRTZXREZWZpbml0aW9ucz4KKyAgICAgICAgPC9kZXNpZ246cmVzdWx0U2V0cz4KKyAgICAgICAgPGRlc2lnbjpwYXJhbWV0ZXJzPgorICAgICAgICAgIDxkZXNpZ246cGFyYW1ldGVyRGVmaW5pdGlvbnM+CisgICAgICAgICAgICA8ZGVzaWduOmluT3V0TW9kZT5JbjwvZGVzaWduOmluT3V0TW9kZT4KKyAgICAgICAgICAgIDxkZXNpZ246YXR0cmlidXRlcz4KKyAgICAgICAgICAgICAgPGRlc2lnbjpuYW1lPjwvZGVzaWduOm5hbWU+CisgICAgICAgICAgICAgIDxkZXNpZ246cG9zaXRpb24+MTwvZGVzaWduOnBvc2l0aW9uPgorICAgICAgICAgICAgICA8ZGVzaWduOm5hdGl2ZURhdGFUeXBlQ29kZT4xMjwvZGVzaWduOm5hdGl2ZURhdGFUeXBlQ29kZT4KKyAgICAgICAgICAgICAgPGRlc2lnbjpudWxsYWJpbGl0eT5OdWxsYWJsZTwvZGVzaWduOm51bGxhYmlsaXR5PgorICAgICAgICAgICAgICA8ZGVzaWduOnVpSGludHMvPgorICAgICAgICAgICAgPC9kZXNpZ246YXR0cmlidXRlcz4KKyAgICAgICAgICAgIDxkZXNpZ246aW5wdXRBdHRyaWJ1dGVzPgorICAgICAgICAgICAgICA8ZGVzaWduOmVsZW1lbnRBdHRyaWJ1dGVzPgorICAgICAgICAgICAgICAgIDxkZXNpZ246b3B0aW9uYWw+dHJ1ZTwvZGVzaWduOm9wdGlvbmFsPgorICAgICAgICAgICAgICAgIDxkZXNpZ246bWFza3NWYWx1ZT5mYWxzZTwvZGVzaWduOm1hc2tzVmFsdWU+CisgICAgICAgICAgICAgICAgPGRlc2lnbjp1aUhpbnRzPgorICAgICAgICAgICAgICAgICAgPGRlc2lnbjpwcm9tcHRTdHlsZT5TZWxlY3RhYmxlTGlzdFdpdGhUZXh0RmllbGQ8L2Rlc2lnbjpwcm9tcHRTdHlsZT4KKyAgICAgICAgICAgICAgICA8L2Rlc2lnbjp1aUhpbnRzPgorICAgICAgICAgICAgICA8L2Rlc2lnbjplbGVtZW50QXR0cmlidXRlcz4KKyAgICAgICAgICAgIDwvZGVzaWduOmlucHV0QXR0cmlidXRlcz4KKyAgICAgICAgICA8L2Rlc2lnbjpwYXJhbWV0ZXJEZWZpbml0aW9ucz4KKyAgICAgICAgPC9kZXNpZ246cGFyYW1ldGVycz4KKyAgICAgIDwvZGVzaWduOmRhdGFTZXREZXNpZ24+CisgICAgPC9kZXNpZ246ZGF0YUFjY2Vzc0Rlc2lnbj4KKyAgPC9kZXNpZ246cmVzcG9uc2U+Cis8L2Rlc2lnbjpvZGFEZXNpZ25TZXNzaW9uPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK