ZGlmZiAtLWdpdCBhL3JlbGVuZy8uY3ZzaWdub3JlIGIvcmVsZW5nLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhNGVkZjYuLjAwMDAwMDAKLS0tIGEvcmVsZW5nLy5jdnNpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0ucHJvamVjdApkaWZmIC0tZ2l0IGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5yZWxlbmcvLmN2c2lnbm9yZSBiL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucmVsZW5nLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkOTQyOWUuLjAwMDAwMDAKLS0tIGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5yZWxlbmcvLmN2c2lnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotcmVzdWx0cwotdG9vbHMKZGlmZiAtLWdpdCBhL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucmVsZW5nLy5wcm9qZWN0IGIvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5yZWxlbmcvLnByb2plY3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmMDFkZTcuLjAwMDAwMDAKLS0tIGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5yZWxlbmcvLnByb2plY3QKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHByb2plY3REZXNjcmlwdGlvbj4KLQk8bmFtZT5vcmcuZWNsaXBzZS5wdHAucmVsZW5nPC9uYW1lPgotCTxjb21tZW50PjwvY29tbWVudD4KLQk8cHJvamVjdHM+Ci0JPC9wcm9qZWN0cz4KLQk8YnVpbGRTcGVjPgotCTwvYnVpbGRTcGVjPgotCTxuYXR1cmVzPgotCTwvbmF0dXJlcz4KLTwvcHJvamVjdERlc2NyaXB0aW9uPgpkaWZmIC0tZ2l0IGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5yZWxlbmcvYnVpbGQuc2ggYi9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJlbGVuZy9idWlsZC5zaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzBmNGQxMC4uMDAwMDAwMAotLS0gYS9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJlbGVuZy9idWlsZC5zaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLSMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jIENvcHlyaWdodCAoYykgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgQ29udHJpYnV0b3JzOgotIyAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jIGV4cG9ydCBkaXNwbGF5IGZvciBydW5uaW5nIHRoZSB0ZXN0cwotZXhwb3J0IERJU1BMQVk9OjEKLQotIyBzZXQgdXAgdG8gdXNlIHRoZSBKYXZhIDUgSlJFCi1leHBvcnQgUEFUSD0vb3B0L3B1YmxpYy9jb21tb24vaWJtLWphdmEyLXBwYy01MC9iaW46JFBBVEgKLQotIyBtYWtlIHN1cmUgd2UncmUgaW4gdGhlIHJlbGVuZyBwcm9qZWN0IGRpciAKLWNkIGBkaXJuYW1lICQwYAotCi11bWFzayAwMDIyCi0KLSMgQ2hlY2tvdXQgYmFzZWJ1aWxkZXIgdG8gcnVuIHRoZSBidWlsZAotbWtkaXIgLXAgdG9vbHMKLWNkIHRvb2xzCi1jdnMgLWQ6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L2VjbGlwc2UgXAotCWNoZWNrb3V0IC1yIFJDMl8zNCBvcmcuZWNsaXBzZS5yZWxlbmcuYmFzZWJ1aWxkZXIKLWNkIC4uCi0KLSMgTGV0J3MgZ28hCi1qYXZhIC1qYXIgdG9vbHMvb3JnLmVjbGlwc2UucmVsZW5nLmJhc2VidWlsZGVyL3BsdWdpbnMvb3JnLmVjbGlwc2UuZXF1aW5veC5sYXVuY2hlci5qYXIgXAotCS13cyBndGsgLWFyY2ggcHBjIC1vcyBsaW51eCAtYXBwbGljYXRpb24gb3JnLmVjbGlwc2UuYW50LmNvcmUuYW50UnVubmVyICQqCi0KLSMgQnVpbGQgUkRUIHNlcnZlciBwYWNrYWdlcwotY2QgcmVzdWx0cy9wbHVnaW5zCi0KLSMgQ2hlY2sgb3V0IHJkdC5jb3JlLnJlbW90ZWphcnMsIHJkdC5jb3JlLnN0dWJzIGFuZCBjZHQuY29yZSBmb3Igc291cmNlCi1leHBvcnQgQ1ZTUk9PVD06cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzCi1jdnMgY28gLWQgb3JnLmVjbGlwc2UucHRwLnJkdC5jb3JlLnJlbW90ZWphcnMgb3JnLmVjbGlwc2UucHRwL3JkdC9vcmcuZWNsaXBzZS5wdHAucmR0LmNvcmUucmVtb3RlamFycwotY3ZzIGNvIC1kIG9yZy5lY2xpcHNlLnB0cC5yZHQuY29yZS5zdHVicyBvcmcuZWNsaXBzZS5wdHAvcmR0L29yZy5lY2xpcHNlLnB0cC5yZHQuY29yZS5zdHVicwotY3ZzIGNvIC1yIGNkdF81XzAgLWQgb3JnLmVjbGlwc2UuY2R0LmNvcmUgb3JnLmVjbGlwc2UuY2R0L2FsbC9vcmcuZWNsaXBzZS5jZHQuY29yZQotCi1jZCBvcmcuZWNsaXBzZS5wdHAucmR0LmNvcmUucmVtb3RlamFycwotCi0jIHJ1biB0aGUgc2NyaXB0IGluIHJlbW90ZWphcnMKLWV4cG9ydCBQQVRIPS9vcHQvcHVibGljL2NvbW1vbi9pYm0tamF2YTItcHBjLTUwL2JpbjokUEFUSAotZWNobyBgamF2YSAtdmVyc2lvbmAKLWphdmEgLWphciAuLi8uLi8uLi90b29scy9vcmcuZWNsaXBzZS5yZWxlbmcuYmFzZWJ1aWxkZXIvcGx1Z2lucy9vcmcuZWNsaXBzZS5lcXVpbm94LmxhdW5jaGVyLmphciBcCi0JLXdzIGd0ayAtYXJjaCBwcGMgLW9zIGxpbnV4IC1hcHBsaWNhdGlvbiBvcmcuZWNsaXBzZS5hbnQuY29yZS5hbnRSdW5uZXIKZGlmZiAtLWdpdCBhL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucmVsZW5nL2J1aWxkLnhtbCBiL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucmVsZW5nL2J1aWxkLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjQ5ZTY2OC4uMDAwMDAwMAotLS0gYS9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJlbGVuZy9idWlsZC54bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0MDcgKzAsMCBAQAotPHByb2plY3QgbmFtZT0iUFRQIiBkZWZhdWx0PSJuaWdodGx5Ij4KLQk8dGFyZ2V0IG5hbWU9ImhpIj4KLQkJPGVjaG8gbWVzc2FnZT0iJHtlY2xpcHNlLmhvbWV9Ii8+Ci0JPC90YXJnZXQ+Ci0JCi0JPHRhcmdldCBuYW1lPSJidWlsZCIgZGVwZW5kcz0iemlwcyx0ZXN0Ii8+Ci0JPHRhcmdldCBuYW1lPSJuaWdodGx5IiBkZXBlbmRzPSJ0YWcsemlwcyxzaWduLHRlc3QsY29weSIvPgotCTx0YXJnZXQgbmFtZT0idGVzdGJ1aWxkIiBkZXBlbmRzPSJ6aXBzLHRlc3QsY29weSIvPgotCTx0YXJnZXQgbmFtZT0iYnVpbGRjb3B5IiBkZXBlbmRzPSJ6aXBzLGNvcHkiLz4KLQkKLQk8dGFyZ2V0IG5hbWU9ImluaXQiPgotCQk8dG91Y2ggZmlsZT0iJHt1c2VyLmhvbWV9Ly5jdnNwYXNzIiAvPgotCQk8dHN0YW1wLz4KLQkJPHByb3BlcnR5IG5hbWU9ImVjbGlwc2VEaXN0IiB2YWx1ZT0iL2hvbWUvZGF0YS9odHRwZC9kb3dubG9hZC5lY2xpcHNlLm9yZy9lY2xpcHNlL2Rvd25sb2Fkcy9kcm9wcy9SLTMuNC0yMDA4MDYxNzIwMDAvZWNsaXBzZS1TREstMy40LWxpbnV4LWd0ay1wcGMudGFyLmd6Ii8+Ci0JCTxwcm9wZXJ0eSBuYW1lPSJjZHREaXN0IiB2YWx1ZT0iL2hvbWUvZGF0YS9odHRwZC9kb3dubG9hZC5lY2xpcHNlLm9yZy90b29scy9jZHQvYnVpbGRzLzUuMC4yL0kuSTIwMDgxMDA2MjA1OS9jZHQtbWFzdGVyLTUuMC4yLUkyMDA4MTAwNjIwNTkuemlwIi8+Ci0JCTxwcm9wZXJ0eSBuYW1lPSJteWx5bkRpc3QiIHZhbHVlPSIvaG9tZS9kYXRhL2h0dHBkL2Rvd25sb2FkLmVjbGlwc2Uub3JnL3Rvb2xzL215bHluL3VwZGF0ZS9nYW55bWVkZS9teWx5bi0zLjAuMS52MjAwODA3MjEtMjEwMC1lMy40LnppcCIvPgotCQk8cHJvcGVydHkgbmFtZT0icnNlRGlzdCIgdmFsdWU9Ii9ob21lL2RhdGEvaHR0cGQvZG93bmxvYWQuZWNsaXBzZS5vcmcvZHNkcC90bS9kb3dubG9hZHMvZHJvcHMvUi0zLjAtMjAwODA2MjAyMTMwL1JTRS1TREstMy4wLnppcCIvPgotCQk8cHJvcGVydHkgbmFtZT0icGhvdHJhbkRpc3QiIHZhbHVlPSIvaG9tZS9kYXRhL2h0dHBkL2Rvd25sb2FkLmVjbGlwc2Uub3JnL3RlY2hub2xvZ3kvcGhvdHJhbi91cGRhdGVzL3Bob3RyYW40MGI0LW1hc3Rlci56aXAiLz4KLQkJPHByb3BlcnR5IG5hbWU9InRhdUphcnMiIHZhbHVlPSIke3VzZXIuaG9tZX0vdGF1X2phcnMuemlwIi8+Ci0JCTxwcm9wZXJ0eSBuYW1lPSJicmFuY2hWZXJzaW9uIiB2YWx1ZT0iMi4xLjAiLz4KLQkJPHByb3BlcnR5IG5hbWU9InRpbWVzdGFtcCIgdmFsdWU9IiR7RFNUQU1QfSR7VFNUQU1QfSIgLz4KLQkJPHByb3BlcnR5IG5hbWU9ImZvcmNlQ29udGV4dFF1YWxpZmllciIgdmFsdWU9IiR7dGltZXN0YW1wfSIvPgotCQk8cHJvcGVydHkgbmFtZT0iYnVpbGRpbmdPU0dpIiB2YWx1ZT0idHJ1ZSIvPgotCQk8cHJvcGVydHkgbmFtZT0iYnVpbGREaXJlY3RvcnkiIHZhbHVlPSIke2Jhc2VkaXJ9L3Jlc3VsdHMiLz4KLQkJPHByb3BlcnR5IG5hbWU9InRlc3REaXJlY3RvcnkiIHZhbHVlPSIke2J1aWxkRGlyZWN0b3J5fS90ZXN0Ii8+Ci0JCTxwcm9wZXJ0eSBuYW1lPSJiYXNlTG9jYXRpb24iIHZhbHVlPSIke2J1aWxkRGlyZWN0b3J5fS9lY2xpcHNlIi8+Ci0JCTxwcm9wZXJ0eSBuYW1lPSJwZGUuYnVpbGQuc2NyaXB0cyIgdmFsdWU9IiR7ZWNsaXBzZS5wZGVidWlsZC5zY3JpcHRzfSIvPgotCQk8cHJvcGVydHkgbmFtZT0iY29sbGVjdGluZ0ZvbGRlciIgdmFsdWU9ImVjbGlwc2UiLz4KLQkJPHByb3BlcnR5IG5hbWU9ImFyY2hpdmVQcmVmaXgiIHZhbHVlPSJlY2xpcHNlIi8+Ci0JCTxwcm9wZXJ0eSBuYW1lPSJidWlsZFR5cGUiIHZhbHVlPSJJIiAvPgotCQk8cHJvcGVydHkgbmFtZT0iYnVpbGRJZCIgdmFsdWU9IiR7YnVpbGRUeXBlfSR7dGltZXN0YW1wfSIvPgotCQk8cHJvcGVydHkgbmFtZT0iemlwc2RpciIgdmFsdWU9IiR7YnVpbGREaXJlY3Rvcnl9LyR7YnVpbGRUeXBlfS4ke2J1aWxkSWR9Ii8+Ci0JCTxwcm9wZXJ0eSBuYW1lPSJtYXN0ZXJGaWxlIiB2YWx1ZT0icHRwLW1hc3Rlci0ke2JyYW5jaFZlcnNpb259LSR7YnVpbGRJZH0uemlwIi8+Ci0JCTxwcm9wZXJ0eSBuYW1lPSJlY2xpcHNlVGVzdCIgdmFsdWU9Im9yZy5lY2xpcHNlLnRlc3RfMy4yLjAiLz4KLQkJPHByb3BlcnR5IG5hbWU9Im1haWx0byIgdmFsdWU9Imcud2F0c29uQGNvbXB1dGVyLm9yZyIvPgotCQk8cHJvcGVydHkgbmFtZT0iZWNsaXBzZVJvb3QiIHZhbHVlPSI6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L2VjbGlwc2UiLz4KLQkJPHByb3BlcnR5IG5hbWU9ImJhc2VvcyIgdmFsdWU9IiR7b3NnaS5vc30iLz4KLQkJPHByb3BlcnR5IG5hbWU9ImJhc2V3cyIgdmFsdWU9IiR7b3NnaS53c30iLz4KLQkJPHByb3BlcnR5IG5hbWU9ImJhc2VhcmNoIiB2YWx1ZT0iJHtvc2dpLmFyY2h9Ii8+Ci0JCTxwcm9wZXJ0eSBuYW1lPSJ0YWdicmFuY2giIHZhbHVlPSIiLz4KLQkJPHByb3BlcnR5IG5hbWU9InRhZ25hbWUiIHZhbHVlPSJ2JHt0aW1lc3RhbXB9Ii8+Ci0JCTxwcm9wZXJ0eSBuYW1lPSJ0ZXN0UmVwb3J0cyIgdmFsdWU9IiR7emlwc2Rpcn0vdGVzdFJlcG9ydHMiLz4KLQkJPHByb3BlcnR5IG5hbWU9Imp1bml0LXJlcG9ydC1vdXRwdXQiIHZhbHVlPSIke3Rlc3RSZXBvcnRzfSIvPgotCQk8Y29uZGl0aW9uIHByb3BlcnR5PSJvbldpbmRvd3MiPgotCQkJPG9zIGZhbWlseT0id2luZG93cyIvPgotCQk8L2NvbmRpdGlvbj4KLQkJPG1rZGlyIGRpcj0iJHtidWlsZERpcmVjdG9yeX0iLz4KLQkJPG1rZGlyIGRpcj0iJHt0ZXN0UmVwb3J0c30iLz4KLQk8L3RhcmdldD4KLQkKLQk8dGFyZ2V0IG5hbWU9ImZldGNoIiBkZXBlbmRzPSJpbml0Ij4KLQkJPGFudCBhbnRmaWxlPSJidWlsZC54bWwiIGRpcj0iJHtwZGUuYnVpbGQuc2NyaXB0c30iIHRhcmdldD0icHJlQnVpbGQiPgotCQkJPHByb3BlcnR5IG5hbWU9ImJ1aWxkZXIiIHZhbHVlPSIke2Jhc2VkaXJ9L21hc3RlciIvPgotCQk8L2FudD4KLQkJPGFudCBhbnRmaWxlPSJidWlsZC54bWwiIGRpcj0iJHtwZGUuYnVpbGQuc2NyaXB0c30iIHRhcmdldD0iZmV0Y2giPgotCQkJPHByb3BlcnR5IG5hbWU9ImJ1aWxkZXIiIHZhbHVlPSIke2Jhc2VkaXJ9L21hc3RlciIvPgotCQk8L2FudD4KLQk8L3RhcmdldD4KLQkKLQk8dGFyZ2V0IG5hbWU9InVuemlwIiBkZXBlbmRzPSJpbml0IiB1bmxlc3M9ImRvbnRVbnppcCI+Ci0JCTx1bnRhciBzcmM9IiR7ZWNsaXBzZURpc3R9IiBkZXN0PSIke2J1aWxkRGlyZWN0b3J5fSIgY29tcHJlc3Npb249Imd6aXAiLz4KLQkJPHVuemlwIHNyYz0iJHtyc2VEaXN0fSIgZGVzdD0iJHtidWlsZERpcmVjdG9yeX0iLz4KLQkJPHVuemlwIHNyYz0iJHtjZHREaXN0fSIgZGVzdD0iJHtidWlsZERpcmVjdG9yeX0vZWNsaXBzZSIvPgotCQk8dW56aXAgc3JjPSIke215bHluRGlzdH0iIGRlc3Q9IiR7YnVpbGREaXJlY3Rvcnl9L2VjbGlwc2UiLz4KLQkJPHVuemlwIHNyYz0iJHtwaG90cmFuRGlzdH0iIGRlc3Q9IiR7YnVpbGREaXJlY3Rvcnl9L2VjbGlwc2UiLz4KLQk8L3RhcmdldD4KLQkKLQk8dGFyZ2V0IG5hbWU9InppcHMiIGRlcGVuZHM9ImluaXQsdW56aXAiPgotCQk8YW50IGFudGZpbGU9ImJ1aWxkLnhtbCIgZGlyPSIke3BkZS5idWlsZC5zY3JpcHRzfSI+Ci0JCQk8cHJvcGVydHkgbmFtZT0iYnVpbGRlciIgdmFsdWU9IiR7YmFzZWRpcn0vbWFzdGVyIiAvPgotCQk8L2FudD4KLQkJPGNvbmNhdCBkZXN0ZmlsZT0iJHt6aXBzZGlyfS9jb21waWxlbG9nLnR4dCI+Ci0JCQk8ZmlsZXNldCBkaXI9IiR7YnVpbGREaXJlY3Rvcnl9L3BsdWdpbnMiIGluY2x1ZGVzPSIqKi8qLmJpbi5sb2ciLz4KLQkJPC9jb25jYXQ+Ci0JCTxsb2FkZmlsZSBwcm9wZXJ0eT0iY29tcGlsZUxvZyIgc3JjRmlsZT0iJHt6aXBzZGlyfS9jb21waWxlbG9nLnR4dCIvPgotCQk8Y29uZGl0aW9uIHByb3BlcnR5PSJoYXNFcnJvcnMiPgotCQkJPGNvbnRhaW5zIHN0cmluZz0iJHtjb21waWxlTG9nfSIgc3Vic3RyaW5nPSIgRVJST1IiLz4KLQkJPC9jb25kaXRpb24+Ci0JCTxtb3ZlIGZpbGU9IiR7emlwc2Rpcn0vJHttYXN0ZXJGaWxlfSIgdG9kaXI9IiR7YnVpbGREaXJlY3Rvcnl9Ii8+Ci0JCTx1bnppcCBzcmM9IiR7YnVpbGREaXJlY3Rvcnl9LyR7bWFzdGVyRmlsZX0iIGRlc3Q9IiR7YnVpbGREaXJlY3Rvcnl9L3NpdGUiLz4KLQkJPG1vdmUgZmlsZT0iJHtidWlsZERpcmVjdG9yeX0vZWNsaXBzZS9lcGwtdjEwLmh0bWwiIHRvZGlyPSIke2J1aWxkRGlyZWN0b3J5fS9zaXRlL2VjbGlwc2UiLz4KLQkJPG1vdmUgZmlsZT0iJHtidWlsZERpcmVjdG9yeX0vZWNsaXBzZS9ub3RpY2UuaHRtbCIgdG9kaXI9IiR7YnVpbGREaXJlY3Rvcnl9L3NpdGUvZWNsaXBzZSIvPgotCQk8Y29weSBmaWxlPSJidWlsZHNpdGUueG1sIiB0b2ZpbGU9IiR7YnVpbGREaXJlY3Rvcnl9L3NpdGUvZWNsaXBzZS9zaXRlLnhtbCIvPgotCQk8cmVwbGFjZSBmaWxlPSIke2J1aWxkRGlyZWN0b3J5fS9zaXRlL2VjbGlwc2Uvc2l0ZS54bWwiPgotCQkJPHJlcGxhY2VmaWx0ZXIgdG9rZW49IkBidWlsZFZlcnNpb25AIiB2YWx1ZT0iJHticmFuY2hWZXJzaW9ufS4ke3RpbWVzdGFtcH0iLz4KLQkJPC9yZXBsYWNlPgotCQk8Y29weSBmaWxlPSJwYWNrLnByb3BlcnRpZXMiIHRvZGlyPSIke2J1aWxkRGlyZWN0b3J5fS9zaXRlL2VjbGlwc2UiLz4KLQotCQk8emlwIGRlc3RmaWxlPSIke3ppcHNkaXJ9LyR7bWFzdGVyRmlsZX0iCi0JCQliYXNlZGlyPSIke2J1aWxkRGlyZWN0b3J5fS9zaXRlL2VjbGlwc2UiLz4KLQk8L3RhcmdldD4KLQotCTx0YXJnZXQgbmFtZT0ic2lnbiIgZGVwZW5kcz0iaW5pdCIgdW5sZXNzPSJoYXNFcnJvcnMiPgotCQk8ZXhlYyBleGVjdXRhYmxlPSJzaWduIj4KLQkJCTxhcmcgdmFsdWU9Ii9ob21lL2RhdGEvaHR0cGQvZG93bmxvYWQtc3RhZ2luZy5wcml2L3Rvb2xzL3B0cC9yZWxlbmcvcmVzdWx0cy8ke2J1aWxkVHlwZX0uJHtidWlsZElkfS8ke21hc3RlckZpbGV9Ii8+Ci0JCQk8YXJnIHZhbHVlPSJub21haWwiLz4KLQkJCTxhcmcgdmFsdWU9Ii9ob21lL2RhdGEvaHR0cGQvZG93bmxvYWQtc3RhZ2luZy5wcml2L3Rvb2xzL3B0cC9yZWxlbmcvcmVzdWx0cy9zaWduZWQiLz4KLQkJPC9leGVjPgotCQk8d2FpdGZvciBtYXh3YWl0PSIzMCIgbWF4d2FpdHVuaXQ9Im1pbnV0ZSI+Ci0JCQk8YXZhaWxhYmxlIGZpbGU9IiR7YnVpbGREaXJlY3Rvcnl9L3NpZ25lZC8ke21hc3RlckZpbGV9Ii8+Ci0JCTwvd2FpdGZvcj4KLQkJPG1vdmUgZmlsZT0iJHtidWlsZERpcmVjdG9yeX0vc2lnbmVkLyR7bWFzdGVyRmlsZX0iIHRvZGlyPSIke3ppcHNkaXJ9Ii8+Ci0JPC90YXJnZXQ+Ci0JPHRhcmdldCBuYW1lPSJ0ZXN0IiBkZXBlbmRzPSJpbml0IiB1bmxlc3M9Imhhc0Vycm9ycyIvPgotCTx0YXJnZXQgbmFtZT0iY29weSIgZGVwZW5kcz0iaW5pdCIgdW5sZXNzPSJoYXNFcnJvcnMiPgotCQk8cHJvcGVydHkgbmFtZT0iY29weVRvRGlyIiB2YWx1ZT0iL2hvbWUvd3d3L3Rvb2xzL3B0cC9idWlsZHMvJHticmFuY2hWZXJzaW9ufSIvPgotCQk8bWtkaXIgZGlyPSIke2NvcHlUb0Rpcn0vJHtidWlsZFR5cGV9LiR7YnVpbGRJZH0iLz4KLQkJPGNvcHkgdG9kaXI9IiR7Y29weVRvRGlyfS8ke2J1aWxkVHlwZX0uJHtidWlsZElkfSI+Ci0JCQk8ZmlsZXNldCBkaXI9IiR7YnVpbGREaXJlY3Rvcnl9LyR7YnVpbGRUeXBlfS4ke2J1aWxkSWR9Ii8+Ci0JCTwvY29weT4KLQkJPCEtLSBDcmVhdGUgc3ltbGluayB0byBsYXRlc3QgYnVpbGQgLS0+Ci0JCTxzeW1saW5rIGFjdGlvbj0iZGVsZXRlIiBsaW5rPSIke2NvcHlUb0Rpcn0vbGF0ZXN0IiBmYWlsb25lcnJvcj0iZmFsc2UiLz4KLQkJPHN5bWxpbmsgbGluaz0iJHtjb3B5VG9EaXJ9L2xhdGVzdCIgcmVzb3VyY2U9IiR7Y29weVRvRGlyfS8ke2J1aWxkVHlwZX0uJHtidWlsZElkfSIgb3ZlcndyaXRlPSJ0cnVlIi8+Ci0JCTxzeW1saW5rIGFjdGlvbj0iZGVsZXRlIiBsaW5rPSIke2NvcHlUb0Rpcn0vcHRwLW1hc3Rlci0ke2JyYW5jaFZlcnNpb259LWxhdGVzdC56aXAiIGZhaWxvbmVycm9yPSJmYWxzZSIvPgotCQk8c3ltbGluayBsaW5rPSIke2NvcHlUb0Rpcn0vcHRwLW1hc3Rlci0ke2JyYW5jaFZlcnNpb259LWxhdGVzdC56aXAiIHJlc291cmNlPSIke2NvcHlUb0Rpcn0vJHtidWlsZFR5cGV9LiR7YnVpbGRJZH0vJHttYXN0ZXJGaWxlfSIgb3ZlcndyaXRlPSJ0cnVlIi8+Ci0JPC90YXJnZXQ+Ci0JCi0JPHRhcmdldCBuYW1lPSJ0YWdvbmUiPgotCQk8Y3ZzIGN2c3Jvb3Q9Ii9jdnNyb290L3Rvb2xzIiBjb21tYW5kPSJydGFnICR7dGFnYnJhbmNofSAke3RhZ25hbWV9ICR7dGFnbW9kdWxlfSIvPgotCTwvdGFyZ2V0PgotCQotCTx0YXJnZXQgbmFtZT0idGFnIiBkZXBlbmRzPSJpbml0Ij4KLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLm1hc3RlciIvPgotCQk8L2FudGNhbGw+Ci0JCQotCQk8IS0tRmVhdHVyZXMtLT4KLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLWZlYXR1cmUiLz4KLQkJPC9hbnRjYWxsPgotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAudXRpbHMtZmVhdHVyZSIvPgotCQk8L2FudGNhbGw+Ci0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5jb3JlLWZlYXR1cmUiLz4KLQkJPC9hbnRjYWxsPgkJCi0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5yZW1vdGUtZmVhdHVyZSIvPgotCQk8L2FudGNhbGw+Ci0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5yZW1vdGUucmVtb3RldG9vbHMtZmVhdHVyZSIvPgotCQk8L2FudGNhbGw+Ci0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5yZW1vdGUucnNlLWZlYXR1cmUiLz4KLQkJPC9hbnRjYWxsPgkJCi0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5yZW1vdGV0b29scy1mZWF0dXJlIi8+Ci0JCTwvYW50Y2FsbD4KLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC9ybXMvb3JnLmVjbGlwc2UucHRwLnJtLmlibS5sbC1mZWF0dXJlIi8+Ci0JCTwvYW50Y2FsbD4JCQotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3Jtcy9vcmcuZWNsaXBzZS5wdHAucm0uaWJtLnBlLWZlYXR1cmUiLz4KLQkJPC9hbnRjYWxsPgkJCi0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvcm1zL29yZy5lY2xpcHNlLnB0cC5ybS5vcGVubXBpLWZlYXR1cmUiLz4KLQkJPC9hbnRjYWxsPgkJCi0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5leHRlcm5hbC1mZWF0dXJlIi8+Ci0JCTwvYW50Y2FsbD4KLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnNkbS1mZWF0dXJlIi8+Ci0JCTwvYW50Y2FsbD4JCQotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucGxkdC1mZWF0dXJlIi8+Ci0JCTwvYW50Y2FsbD4JCQotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucGxkdC5sYXBpLWZlYXR1cmUiLz4KLQkJPC9hbnRjYWxsPgotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucGVyZi1mZWF0dXJlIi8+Ci0JCTwvYW50Y2FsbD4KLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnBlcmYudGF1LWZlYXR1cmUiLz4KLQkJPC9hbnRjYWxsPgkJCi0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5wZXJmLnRhdS5mb3J0cmFuLWZlYXR1cmUiLz4KLQkJPC9hbnRjYWxsPgkJCi0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5yZHQtZmVhdHVyZSIvPgotCQk8L2FudGNhbGw+CQkKLQkJCi0JCTwhLS1QbHVnaW5zLS0+Ci0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvcmVsZW5nL29yZy5lY2xpcHNlLnB0cCIvPgotCQk8L2FudGNhbGw+Ci0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvY29yZS9vcmcuZWNsaXBzZS5wdHAuY29yZSIvPgotCQk8L2FudGNhbGw+Ci0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvY29yZS9vcmcuZWNsaXBzZS5wdHAudXRpbHMuY29yZSIvPgotCQk8L2FudGNhbGw+CQkKLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC9jb3JlL29yZy5lY2xpcHNlLnB0cC51dGlscy51aSIvPgotCQk8L2FudGNhbGw+Ci0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvY29yZS9vcmcuZWNsaXBzZS5wdHAucHJveHkucHJvdG9jb2wiLz4KLQkJPC9hbnRjYWxsPgotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL2NvcmUvb3JnLmVjbGlwc2UucHRwLnJlbW90ZS5jb3JlIi8+Ci0JCTwvYW50Y2FsbD4JCQotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL2NvcmUvb3JnLmVjbGlwc2UucHRwLnJlbW90ZS5yZW1vdGV0b29scy5jb3JlIi8+Ci0JCTwvYW50Y2FsbD4KLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC9jb3JlL29yZy5lY2xpcHNlLnB0cC5yZW1vdGUucmVtb3RldG9vbHMudWkiLz4KLQkJPC9hbnRjYWxsPgkJCi0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvY29yZS9vcmcuZWNsaXBzZS5wdHAucmVtb3RlLnJzZS5jb3JlIi8+Ci0JCTwvYW50Y2FsbD4JCQotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL2NvcmUvb3JnLmVjbGlwc2UucHRwLnJlbW90ZS5yc2UudWkiLz4KLQkJPC9hbnRjYWxsPgkJCi0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvY29yZS9vcmcuZWNsaXBzZS5wdHAucmVtb3RlLnVpIi8+Ci0JCTwvYW50Y2FsbD4KLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC9ybXMvb3JnLmVjbGlwc2UucHRwLnJtLmNvcmUiLz4KLQkJPC9hbnRjYWxsPgkJCi0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvcm1zL29yZy5lY2xpcHNlLnB0cC5ybS5pYm0ubGwuY29yZSIvPgotCQk8L2FudGNhbGw+CQkKLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC9ybXMvb3JnLmVjbGlwc2UucHRwLnJtLmlibS5sbC5oZWxwIi8+Ci0JCTwvYW50Y2FsbD4JCQotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3Jtcy9vcmcuZWNsaXBzZS5wdHAucm0uaWJtLmxsLnByb3h5Ii8+Ci0JCTwvYW50Y2FsbD4JCQkKLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC9ybXMvb3JnLmVjbGlwc2UucHRwLnJtLmlibS5sbC51aSIvPgotCQk8L2FudGNhbGw+Ci0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvcm1zL29yZy5lY2xpcHNlLnB0cC5ybS5pYm0ucGUuY29yZSIvPgotCQk8L2FudGNhbGw+Ci0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvcm1zL29yZy5lY2xpcHNlLnB0cC5ybS5pYm0ucGUuaGVscCIvPgotCQk8L2FudGNhbGw+CQkKLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC9ybXMvb3JnLmVjbGlwc2UucHRwLnJtLmlibS5wZS5wcm94eSIvPgotCQk8L2FudGNhbGw+Ci0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvcm1zL29yZy5lY2xpcHNlLnB0cC5ybS5pYm0ucGUudWkiLz4KLQkJPC9hbnRjYWxsPgotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3Jtcy9vcmcuZWNsaXBzZS5wdHAucm0ubXBpLm9wZW5tcGkuY29yZSIvPgotCQk8L2FudGNhbGw+CQkKLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC9ybXMvb3JnLmVjbGlwc2UucHRwLnJtLm1waS5vcGVubXBpLnVpIi8+Ci0JCTwvYW50Y2FsbD4KLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC9jb3JlL29yZy5lY2xpcHNlLnB0cC5ybS5yZW1vdGUiLz4KLQkJPC9hbnRjYWxsPgkJCi0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvcm1zL29yZy5lY2xpcHNlLnB0cC5ybS51aSIvPgotCQk8L2FudGNhbGw+CQkKLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC9jb3JlL29yZy5lY2xpcHNlLnB0cC51aSIvPgotCQk8L2FudGNhbGw+CQkKLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC9kZWJ1Zy9vcmcuZWNsaXBzZS5wdHAuZGVidWcuY29yZSIvPgotCQk8L2FudGNhbGw+Ci0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvZGVidWcvb3JnLmVjbGlwc2UucHRwLmRlYnVnLnNkbSIvPgotCQk8L2FudGNhbGw+CQkKLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC9kZWJ1Zy9vcmcuZWNsaXBzZS5wdHAuZGVidWcuc2RtLmNvcmUiLz4KLQkJPC9hbnRjYWxsPgkJCi0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvZGVidWcvb3JnLmVjbGlwc2UucHRwLmRlYnVnLnNkbS51aSIvPgotCQk8L2FudGNhbGw+CQkKLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC9kZWJ1Zy9vcmcuZWNsaXBzZS5wdHAuZGVidWcudWkiLz4KLQkJPC9hbnRjYWxsPgkJCi0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvZGVidWcvb3JnLmVjbGlwc2UucHRwLmRlYnVnLnNkbSIvPgotCQk8L2FudGNhbGw+Ci0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvY29yZS9vcmcuZWNsaXBzZS5wdHAucHJveHkiLz4KLQkJPC9hbnRjYWxsPgotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL2NvcmUvb3JnLmVjbGlwc2UucHRwLnV0aWxzIi8+Ci0JCTwvYW50Y2FsbD4JCQotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3Rvb2xzL29yZy5lY2xpcHNlLnB0cC5yZW1vdGV0b29scy5jb3JlIi8+Ci0JCTwvYW50Y2FsbD4KLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC90b29scy9vcmcuZWNsaXBzZS5wdHAucmVtb3RldG9vbHMuZW52aXJvbm1lbnQuY29yZSIvPgotCQk8L2FudGNhbGw+Ci0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvdG9vbHMvb3JnLmVjbGlwc2UucHRwLnJlbW90ZXRvb2xzLmVudmlyb25tZW50LmdlbmVyaWNob3N0Ii8+Ci0JCTwvYW50Y2FsbD4JCQotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3Rvb2xzL29yZy5lY2xpcHNlLnB0cC5yZW1vdGV0b29scy5lbnZpcm9ubWVudC5sYXVuY2hlciIvPgotCQk8L2FudGNhbGw+Ci0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvdG9vbHMvb3JnLmVjbGlwc2UucHRwLnJlbW90ZXRvb2xzLmVudmlyb25tZW50LnVpIi8+Ci0JCTwvYW50Y2FsbD4JCQotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3Rvb2xzL29yZy5lY2xpcHNlLnB0cC5yZW1vdGV0b29scy5wcmVmZXJlbmNlcyIvPgotCQk8L2FudGNhbGw+CQkKLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC90b29scy9vcmcuZWNsaXBzZS5wdHAucmVtb3RldG9vbHMudXRpbHMiLz4KLQkJPC9hbnRjYWxsPgkJCi0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvY29yZS9vcmcuZWNsaXBzZS5wdHAubGF1bmNoIi8+Ci0JCTwvYW50Y2FsbD4KLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC9kb2Mvb3JnLmVjbGlwc2UucHRwLmhlbHAiLz4KLQkJPC9hbnRjYWxsPgkJCi0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvdG9vbHMvb3JnLmVjbGlwc2UucHRwLnBsZHQuY29tbW9uIi8+Ci0JCTwvYW50Y2FsbD4JCQotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3Rvb2xzL29yZy5lY2xpcHNlLnB0cC5wbGR0LmxhcGkiLz4KLQkJPC9hbnRjYWxsPgkJCi0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvdG9vbHMvb3JnLmVjbGlwc2UucHRwLnBsZHQubXBpLmFuYWx5c2lzIi8+Ci0JCTwvYW50Y2FsbD4JCQkKLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC90b29scy9vcmcuZWNsaXBzZS5wdHAucGxkdC5tcGkuYW5hbHlzaXMuY2R0Ii8+Ci0JCTwvYW50Y2FsbD4KLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC90b29scy9vcmcuZWNsaXBzZS5wdHAucGxkdC5tcGkuY29yZSIvPgotCQk8L2FudGNhbGw+Ci0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvdG9vbHMvb3JnLmVjbGlwc2UucHRwLnBsZHQub3Blbm1wLmFuYWx5c2lzIi8+Ci0JCTwvYW50Y2FsbD4JCQotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3Rvb2xzL29yZy5lY2xpcHNlLnB0cC5wbGR0Lm9wZW5tcC5jb3JlIi8+Ci0JCTwvYW50Y2FsbD4KLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC90b29scy9vcmcuZWNsaXBzZS5wdHAucGxkdC5vcGVubXAudWkucHYiLz4KLQkJPC9hbnRjYWxsPgotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3Rvb2xzL29yZy5lY2xpcHNlLnB0cC5wbGR0LndpemFyZHMiLz4KLQkJPC9hbnRjYWxsPgkJCi0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvdG9vbHMvcGVyZi9vcmcuZWNsaXBzZS5wdHAucGVyZiIvPgotCQk8L2FudGNhbGw+Ci0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvdG9vbHMvcGVyZi9vcmcuZWNsaXBzZS5wdHAucGVyZi50YXUiLz4KLQkJPC9hbnRjYWxsPgotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3Rvb2xzL3BlcmYvb3JnLmVjbGlwc2UucHRwLnBlcmYudGF1LmphcnMiLz4KLQkJPC9hbnRjYWxsPgotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3Rvb2xzL3BlcmYvb3JnLmVjbGlwc2UucHRwLnBlcmYudGF1LnBhcGlzZWxlY3QiLz4KLQkJPC9hbnRjYWxsPgotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3Rvb2xzL3BlcmYvb3JnLmVjbGlwc2UucHRwLnBlcmYudGF1LnBlcmZkbWYiLz4KLQkJPC9hbnRjYWxsPgotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3Rvb2xzL3BlcmYvb3JnLmVjbGlwc2UucHRwLnBlcmYudGF1LnNlbGluc3QiLz4KLQkJPC9hbnRjYWxsPgotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3Rvb2xzL3BlcmYvb3JnLmVjbGlwc2UucHRwLnBlcmYudGF1LnNlbGluc3Rmb3J0Ii8+Ci0JCTwvYW50Y2FsbD4KLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC90b29scy9wZXJmL29yZy5lY2xpcHNlLnB0cC5wZXJmLnRvb2xvcHRzIi8+Ci0JCTwvYW50Y2FsbD4KLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC9yZHQvb3JnLmVjbGlwc2UucHRwLnJkdC5jb3JlIi8+Ci0JCTwvYW50Y2FsbD4KLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC9yZHQvb3JnLmVjbGlwc2UucHRwLnJkdC5jb3JlLnJlbW90ZWphcnMiLz4KLQkJPC9hbnRjYWxsPgotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3JkdC9vcmcuZWNsaXBzZS5wdHAucmR0LmNvcmUuc3R1YnMiLz4KLQkJPC9hbnRjYWxsPgotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3JkdC9vcmcuZWNsaXBzZS5wdHAucmR0LnNlcnZpY2VzIi8+Ci0JCTwvYW50Y2FsbD4KLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC9yZHQvb3JnLmVjbGlwc2UucHRwLnJkdC51aSIvPgotCQk8L2FudGNhbGw+Ci0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5haXgucHBjIi8+Ci0JCTwvYW50Y2FsbD4KLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLmxpbnV4LnBwYyIvPgotCQk8L2FudGNhbGw+Ci0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5saW51eC54ODYiLz4KLQkJPC9hbnRjYWxsPgotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAubGludXgueDg2XzY0Ii8+Ci0JCTwvYW50Y2FsbD4KLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLm1hY29zeC5wcGMiLz4KLQkJPC9hbnRjYWxsPgotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAubWFjb3N4Lng4NiIvPgotCQk8L2FudGNhbGw+Ci0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvdG9vbHMvcGVyZi9vcmcuZWNsaXBzZS5wdHAucGVyZi5wYXJhbGxlbCIvPgotCQk8L2FudGNhbGw+Ci0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvdG9vbHMvcGVyZi9vcmcuZWNsaXBzZS5wdHAucGVyZi50YXUucGFwaXRlc3QiLz4KLQkJPC9hbnRjYWxsPgotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3JkdC9vcmcuZWNsaXBzZS5wdHAucmR0LmNvcmUudGVzdHMiLz4KLQkJPC9hbnRjYWxsPgotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3JkdC9vcmcuZWNsaXBzZS5wdHAucmR0LnNlcnZpY2VzLnRlc3QiLz4KLQkJPC9hbnRjYWxsPgotCTwvdGFyZ2V0PgotPC9wcm9qZWN0PgpkaWZmIC0tZ2l0IGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5yZWxlbmcvYnVpbGRzaXRlLnhtbCBiL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucmVsZW5nL2J1aWxkc2l0ZS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkYTI3NzMuLjAwMDAwMDAKLS0tIGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5yZWxlbmcvYnVpbGRzaXRlLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2l0ZT4KLQk8ZGVzY3JpcHRpb24gdXJsPSJodHRwOi8vZG93bmxvYWQuZWNsaXBzZS5vcmcvdG9vbHMvcHRwL3JlbGVhc2VzLzIuMSI+Ci0JCVBhcmFsbGVsIFRvb2xzIFBsYXRmb3JtIHVwZGF0ZSBzaXRlIC0gUmVsZWFzZSAyLjEKLQk8L2Rlc2NyaXB0aW9uPgotCTxmZWF0dXJlIHVybD0iZmVhdHVyZXMvb3JnLmVjbGlwc2UucHRwX0BidWlsZFZlcnNpb25ALmphciIgaWQ9Im9yZy5lY2xpcHNlLnB0cCIgdmVyc2lvbj0iQGJ1aWxkVmVyc2lvbkAiPgotCQk8Y2F0ZWdvcnkgbmFtZT0iUGFyYWxsZWwgVG9vbHMgUGxhdGZvcm0gMi4xIi8+Ci0JPC9mZWF0dXJlPgotCTxmZWF0dXJlIHVybD0iZmVhdHVyZXMvb3JnLmVjbGlwc2UucHRwLmNvcmVfQGJ1aWxkVmVyc2lvbkAuamFyIiBpZD0ib3JnLmVjbGlwc2UucHRwLmNvcmUiIHZlcnNpb249IkBidWlsZFZlcnNpb25AIj4KLQkJPGNhdGVnb3J5IG5hbWU9IlBhcmFsbGVsIFRvb2xzIFBsYXRmb3JtIDIuMSIvPgotCTwvZmVhdHVyZT4KLQk8ZmVhdHVyZSB1cmw9ImZlYXR1cmVzL29yZy5lY2xpcHNlLnB0cC51dGlsc19AYnVpbGRWZXJzaW9uQC5qYXIiIGlkPSJvcmcuZWNsaXBzZS5wdHAudXRpbHMiIHZlcnNpb249IkBidWlsZFZlcnNpb25AIj4KLQkJPGNhdGVnb3J5IG5hbWU9IlBhcmFsbGVsIFRvb2xzIFBsYXRmb3JtIDIuMSIvPgotCTwvZmVhdHVyZT4KLQk8ZmVhdHVyZSB1cmw9ImZlYXR1cmVzL29yZy5lY2xpcHNlLnB0cC5yZW1vdGV0b29sc19AYnVpbGRWZXJzaW9uQC5qYXIiIGlkPSJvcmcuZWNsaXBzZS5wdHAucmVtb3RldG9vbHMiIHZlcnNpb249IkBidWlsZFZlcnNpb25AIj4KLQkJPGNhdGVnb3J5IG5hbWU9IlBhcmFsbGVsIFRvb2xzIFBsYXRmb3JtIDIuMSIvPgotCTwvZmVhdHVyZT4KLQk8ZmVhdHVyZSB1cmw9ImZlYXR1cmVzL29yZy5lY2xpcHNlLnB0cC5ybS5pYm0ubGxfQGJ1aWxkVmVyc2lvbkAuamFyIiBpZD0ib3JnLmVjbGlwc2UucHRwLnJtLmlibS5sbCIgdmVyc2lvbj0iQGJ1aWxkVmVyc2lvbkAiPgotCQk8Y2F0ZWdvcnkgbmFtZT0iUGFyYWxsZWwgVG9vbHMgUGxhdGZvcm0gMi4xIi8+Ci0JPC9mZWF0dXJlPgotCTxmZWF0dXJlIHVybD0iZmVhdHVyZXMvb3JnLmVjbGlwc2UucHRwLnJtLmlibS5wZV9AYnVpbGRWZXJzaW9uQC5qYXIiIGlkPSJvcmcuZWNsaXBzZS5wdHAucm0uaWJtLnBlIiB2ZXJzaW9uPSJAYnVpbGRWZXJzaW9uQCI+Ci0JCTxjYXRlZ29yeSBuYW1lPSJQYXJhbGxlbCBUb29scyBQbGF0Zm9ybSAyLjEiLz4KLQk8L2ZlYXR1cmU+Ci0JPGZlYXR1cmUgdXJsPSJmZWF0dXJlcy9vcmcuZWNsaXBzZS5wdHAucmVtb3RlLnJlbW90ZXRvb2xzX0BidWlsZFZlcnNpb25ALmphciIgaWQ9Im9yZy5lY2xpcHNlLnB0cC5yZW1vdGUucmVtb3RldG9vbHMiIHZlcnNpb249IkBidWlsZFZlcnNpb25AIj4KLQkJPGNhdGVnb3J5IG5hbWU9IlBhcmFsbGVsIFRvb2xzIFBsYXRmb3JtIDIuMSIvPgotCTwvZmVhdHVyZT4KLQk8ZmVhdHVyZSB1cmw9ImZlYXR1cmVzL29yZy5lY2xpcHNlLnB0cC5yZW1vdGUucnNlX0BidWlsZFZlcnNpb25ALmphciIgaWQ9Im9yZy5lY2xpcHNlLnB0cC5yZW1vdGUucnNlIiB2ZXJzaW9uPSJAYnVpbGRWZXJzaW9uQCI+Ci0JCTxjYXRlZ29yeSBuYW1lPSJQYXJhbGxlbCBUb29scyBQbGF0Zm9ybSAyLjEiLz4KLQk8L2ZlYXR1cmU+Ci0JPGZlYXR1cmUgdXJsPSJmZWF0dXJlcy9vcmcuZWNsaXBzZS5wdHAuZGVidWcuc2RtX0BidWlsZFZlcnNpb25ALmphciIgaWQ9Im9yZy5lY2xpcHNlLnB0cC5kZWJ1Zy5zZG0iIHZlcnNpb249IkBidWlsZFZlcnNpb25AIj4KLQkJPGNhdGVnb3J5IG5hbWU9IlBhcmFsbGVsIFRvb2xzIFBsYXRmb3JtIDIuMSIvPgotCTwvZmVhdHVyZT4KLQk8ZmVhdHVyZSB1cmw9ImZlYXR1cmVzL29yZy5lY2xpcHNlLnB0cC5leHRlcm5hbF9AYnVpbGRWZXJzaW9uQC5qYXIiIGlkPSJvcmcuZWNsaXBzZS5wdHAuZXh0ZXJuYWwiIHZlcnNpb249IkBidWlsZFZlcnNpb25AIj4KLQkJPGNhdGVnb3J5IG5hbWU9IlBhcmFsbGVsIFRvb2xzIFBsYXRmb3JtIDIuMSIvPgotCTwvZmVhdHVyZT4KLQk8ZmVhdHVyZSB1cmw9ImZlYXR1cmVzL29yZy5lY2xpcHNlLnB0cC5yZW1vdGVfQGJ1aWxkVmVyc2lvbkAuamFyIiBpZD0ib3JnLmVjbGlwc2UucHRwLnJlbW90ZSIgdmVyc2lvbj0iQGJ1aWxkVmVyc2lvbkAiPgotCQk8Y2F0ZWdvcnkgbmFtZT0iUGFyYWxsZWwgVG9vbHMgUGxhdGZvcm0gMi4xIi8+Ci0JPC9mZWF0dXJlPgotCTxmZWF0dXJlIHVybD0iZmVhdHVyZXMvb3JnLmVjbGlwc2UucHRwLnJtLm9wZW5tcGlfQGJ1aWxkVmVyc2lvbkAuamFyIiBpZD0ib3JnLmVjbGlwc2UucHRwLnJtLm9wZW5tcGkiIHZlcnNpb249IkBidWlsZFZlcnNpb25AIj4KLQkJPGNhdGVnb3J5IG5hbWU9IlBhcmFsbGVsIFRvb2xzIFBsYXRmb3JtIDIuMSIvPgotCTwvZmVhdHVyZT4KLQk8ZmVhdHVyZSB1cmw9ImZlYXR1cmVzL29yZy5lY2xpcHNlLnB0cC5wbGR0X0BidWlsZFZlcnNpb25ALmphciIgaWQ9Im9yZy5lY2xpcHNlLnB0cC5wbGR0IiB2ZXJzaW9uPSJAYnVpbGRWZXJzaW9uQCI+Ci0JCTxjYXRlZ29yeSBuYW1lPSJQYXJhbGxlbCBUb29scyBQbGF0Zm9ybSAyLjEiLz4KLQk8L2ZlYXR1cmU+Ci0JPGZlYXR1cmUgdXJsPSJmZWF0dXJlcy9vcmcuZWNsaXBzZS5wdHAucGxkdC5sYXBpX0BidWlsZFZlcnNpb25ALmphciIgaWQ9Im9yZy5lY2xpcHNlLnB0cC5wbGR0LmxhcGkiIHZlcnNpb249IkBidWlsZFZlcnNpb25AIj4KLQkJPGNhdGVnb3J5IG5hbWU9IlBhcmFsbGVsIFRvb2xzIFBsYXRmb3JtIDIuMSIvPgotCTwvZmVhdHVyZT4KLQk8ZmVhdHVyZSB1cmw9ImZlYXR1cmVzL29yZy5lY2xpcHNlLnB0cC5wZXJmX0BidWlsZFZlcnNpb25ALmphciIgaWQ9Im9yZy5lY2xpcHNlLnB0cC5wZXJmIiB2ZXJzaW9uPSJAYnVpbGRWZXJzaW9uQCI+Ci0JCTxjYXRlZ29yeSBuYW1lPSJQYXJhbGxlbCBUb29scyBQbGF0Zm9ybSAyLjEiLz4KLQk8L2ZlYXR1cmU+Ci0JPGZlYXR1cmUgdXJsPSJmZWF0dXJlcy9vcmcuZWNsaXBzZS5wdHAucGVyZi50YXVfQGJ1aWxkVmVyc2lvbkAuamFyIiBpZD0ib3JnLmVjbGlwc2UucHRwLnBlcmYudGF1IiB2ZXJzaW9uPSJAYnVpbGRWZXJzaW9uQCI+Ci0JCTxjYXRlZ29yeSBuYW1lPSJQYXJhbGxlbCBUb29scyBQbGF0Zm9ybSAyLjEiLz4KLQk8L2ZlYXR1cmU+Ci0JPGZlYXR1cmUgaWQ9Im9yZy5lY2xpcHNlLnB0cC5yZHQiIHVybD0iZmVhdHVyZXMvb3JnLmVjbGlwc2UucHRwLnJkdF9AYnVpbGRWZXJzaW9uQC5qYXIiIHZlcnNpb249IkBidWlsZFZlcnNpb25AIj4KLQkJPGNhdGVnb3J5IG5hbWU9IlJlbW90ZSBEZXZlbG9wbWVudCBUb29scyIvPgotCTwvZmVhdHVyZT4KLQk8Y2F0ZWdvcnktZGVmIG5hbWU9IlBhcmFsbGVsIFRvb2xzIFBsYXRmb3JtIDIuMSIgbGFiZWw9IlBhcmFsbGVsIFRvb2xzIFBsYXRmb3JtIDIuMSIvPgotCTxjYXRlZ29yeS1kZWYgbmFtZT0iUmVtb3RlIERldmVsb3BtZW50IFRvb2xzIiBsYWJlbD0iUmVtb3RlIERldmVsb3BtZW50IFRvb2xzIi8+Ci08L3NpdGU+CmRpZmYgLS1naXQgYS9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJlbGVuZy9tYXBzL3B0cC5tYXAgYi9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJlbGVuZy9tYXBzL3B0cC5tYXAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4NWIzNzAuLjAwMDAwMDAKLS0tIGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5yZWxlbmcvbWFwcy9wdHAubWFwCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLSEgVGhlIG1hc3RlcgotZmVhdHVyZUBvcmcuZWNsaXBzZS5wdHAubWFzdGVyPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLm1hc3RlcgotCi0hIFBUUCBmZWF0dXJlcwotZmVhdHVyZUBvcmcuZWNsaXBzZS5wdHA9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAtZmVhdHVyZQotZmVhdHVyZUBvcmcuZWNsaXBzZS5wdHAudXRpbHM9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAudXRpbHMtZmVhdHVyZQotZmVhdHVyZUBvcmcuZWNsaXBzZS5wdHAuY29yZT1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5jb3JlLWZlYXR1cmUKLWZlYXR1cmVAb3JnLmVjbGlwc2UucHRwLnJlbW90ZT1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5yZW1vdGUtZmVhdHVyZQotZmVhdHVyZUBvcmcuZWNsaXBzZS5wdHAucmVtb3RlLnJlbW90ZXRvb2xzPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJlbW90ZS5yZW1vdGV0b29scy1mZWF0dXJlCi1mZWF0dXJlQG9yZy5lY2xpcHNlLnB0cC5yZW1vdGUucnNlPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJlbW90ZS5yc2UtZmVhdHVyZQotZmVhdHVyZUBvcmcuZWNsaXBzZS5wdHAucmVtb3RldG9vbHM9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucmVtb3RldG9vbHMtZmVhdHVyZQotZmVhdHVyZUBvcmcuZWNsaXBzZS5wdHAucm0uaWJtLmxsPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC9ybXMvb3JnLmVjbGlwc2UucHRwLnJtLmlibS5sbC1mZWF0dXJlCi1mZWF0dXJlQG9yZy5lY2xpcHNlLnB0cC5ybS5pYm0ucGU9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL3Jtcy9vcmcuZWNsaXBzZS5wdHAucm0uaWJtLnBlLWZlYXR1cmUKLWZlYXR1cmVAb3JnLmVjbGlwc2UucHRwLnJtLm9wZW5tcGk9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL3Jtcy9vcmcuZWNsaXBzZS5wdHAucm0ub3Blbm1waS1mZWF0dXJlCi1mZWF0dXJlQG9yZy5lY2xpcHNlLnB0cC5leHRlcm5hbD1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5leHRlcm5hbC1mZWF0dXJlCi1mZWF0dXJlQG9yZy5lY2xpcHNlLnB0cC5kZWJ1Zy5zZG09QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAuc2RtLWZlYXR1cmUKLWZlYXR1cmVAb3JnLmVjbGlwc2UucHRwLnBsZHQ9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucGxkdC1mZWF0dXJlCi1mZWF0dXJlQG9yZy5lY2xpcHNlLnB0cC5wbGR0LmxhcGk9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucGxkdC5sYXBpLWZlYXR1cmUKLWZlYXR1cmVAb3JnLmVjbGlwc2UucHRwLnBlcmY9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucGVyZi1mZWF0dXJlCi1mZWF0dXJlQG9yZy5lY2xpcHNlLnB0cC5wZXJmLnRhdT1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5wZXJmLnRhdS1mZWF0dXJlCi1mZWF0dXJlQG9yZy5lY2xpcHNlLnB0cC5wZXJmLnRhdS5mb3J0cmFuPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnBlcmYudGF1LmZvcnRyYW4tZmVhdHVyZQotZmVhdHVyZUBvcmcuZWNsaXBzZS5wdHAucmR0PUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJkdC1mZWF0dXJlCi0KLSEgUGx1Z2lucwotcGx1Z2luQG9yZy5lY2xpcHNlLnB0cD1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvcmVsZW5nL29yZy5lY2xpcHNlLnB0cAotcGx1Z2luQG9yZy5lY2xpcHNlLnB0cC5jb3JlPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC9jb3JlL29yZy5lY2xpcHNlLnB0cC5jb3JlCi1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnV0aWxzLmNvcmU9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL2NvcmUvb3JnLmVjbGlwc2UucHRwLnV0aWxzLmNvcmUKLXBsdWdpbkBvcmcuZWNsaXBzZS5wdHAudXRpbHMudWk9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL2NvcmUvb3JnLmVjbGlwc2UucHRwLnV0aWxzLnVpCi1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnByb3h5LnByb3RvY29sPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC9jb3JlL29yZy5lY2xpcHNlLnB0cC5wcm94eS5wcm90b2NvbAotcGx1Z2luQG9yZy5lY2xpcHNlLnB0cC5yZW1vdGUuY29yZT1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvY29yZS9vcmcuZWNsaXBzZS5wdHAucmVtb3RlLmNvcmUKLXBsdWdpbkBvcmcuZWNsaXBzZS5wdHAucmVtb3RlLnJlbW90ZXRvb2xzLmNvcmU9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL2NvcmUvb3JnLmVjbGlwc2UucHRwLnJlbW90ZS5yZW1vdGV0b29scy5jb3JlCi1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnJlbW90ZS5yZW1vdGV0b29scy51aT1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvY29yZS9vcmcuZWNsaXBzZS5wdHAucmVtb3RlLnJlbW90ZXRvb2xzLnVpCi1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnJlbW90ZS5yc2UuY29yZT1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvY29yZS9vcmcuZWNsaXBzZS5wdHAucmVtb3RlLnJzZS5jb3JlCi1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnJlbW90ZS5yc2UudWk9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL2NvcmUvb3JnLmVjbGlwc2UucHRwLnJlbW90ZS5yc2UudWkKLXBsdWdpbkBvcmcuZWNsaXBzZS5wdHAucmVtb3RlLnVpPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC9jb3JlL29yZy5lY2xpcHNlLnB0cC5yZW1vdGUudWkKLXBsdWdpbkBvcmcuZWNsaXBzZS5wdHAucm0uY29yZT1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvcm1zL29yZy5lY2xpcHNlLnB0cC5ybS5jb3JlCi1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnJtLmlibS5sbC5jb3JlPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC9ybXMvb3JnLmVjbGlwc2UucHRwLnJtLmlibS5sbC5jb3JlCi1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnJtLmlibS5sbC5oZWxwPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC9ybXMvb3JnLmVjbGlwc2UucHRwLnJtLmlibS5sbC5oZWxwCi1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnJtLmlibS5sbC5wcm94eT1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvcm1zL29yZy5lY2xpcHNlLnB0cC5ybS5pYm0ubGwucHJveHkKLXBsdWdpbkBvcmcuZWNsaXBzZS5wdHAucm0uaWJtLmxsLnVpPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC9ybXMvb3JnLmVjbGlwc2UucHRwLnJtLmlibS5sbC51aQotcGx1Z2luQG9yZy5lY2xpcHNlLnB0cC5ybS5pYm0ucGUuY29yZT1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvcm1zL29yZy5lY2xpcHNlLnB0cC5ybS5pYm0ucGUuY29yZQotcGx1Z2luQG9yZy5lY2xpcHNlLnB0cC5ybS5pYm0ucGUuaGVscD1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvcm1zL29yZy5lY2xpcHNlLnB0cC5ybS5pYm0ucGUuaGVscAotcGx1Z2luQG9yZy5lY2xpcHNlLnB0cC5ybS5pYm0ucGUucHJveHk9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL3Jtcy9vcmcuZWNsaXBzZS5wdHAucm0uaWJtLnBlLnByb3h5Ci1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnJtLmlibS5wZS51aT1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvcm1zL29yZy5lY2xpcHNlLnB0cC5ybS5pYm0ucGUudWkKLXBsdWdpbkBvcmcuZWNsaXBzZS5wdHAucm0ubXBpLm9wZW5tcGkuY29yZT1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvcm1zL29yZy5lY2xpcHNlLnB0cC5ybS5tcGkub3Blbm1waS5jb3JlCi1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnJtLm1waS5vcGVubXBpLnVpPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC9ybXMvb3JnLmVjbGlwc2UucHRwLnJtLm1waS5vcGVubXBpLnVpCi1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnJtLnJlbW90ZT1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvY29yZS9vcmcuZWNsaXBzZS5wdHAucm0ucmVtb3RlCi1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnJtLnVpPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC9ybXMvb3JnLmVjbGlwc2UucHRwLnJtLnVpCi1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnVpPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC9jb3JlL29yZy5lY2xpcHNlLnB0cC51aQotcGx1Z2luQG9yZy5lY2xpcHNlLnB0cC5kZWJ1Zy5jb3JlPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC9kZWJ1Zy9vcmcuZWNsaXBzZS5wdHAuZGVidWcuY29yZQotcGx1Z2luQG9yZy5lY2xpcHNlLnB0cC5kZWJ1Zy5zZG09QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL2RlYnVnL29yZy5lY2xpcHNlLnB0cC5kZWJ1Zy5zZG0KLXBsdWdpbkBvcmcuZWNsaXBzZS5wdHAuZGVidWcuc2RtLmNvcmU9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL2RlYnVnL29yZy5lY2xpcHNlLnB0cC5kZWJ1Zy5zZG0uY29yZQotcGx1Z2luQG9yZy5lY2xpcHNlLnB0cC5kZWJ1Zy5zZG0udWk9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL2RlYnVnL29yZy5lY2xpcHNlLnB0cC5kZWJ1Zy5zZG0udWkKLXBsdWdpbkBvcmcuZWNsaXBzZS5wdHAuZGVidWcudWk9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL2RlYnVnL29yZy5lY2xpcHNlLnB0cC5kZWJ1Zy51aQotcGx1Z2luQG9yZy5lY2xpcHNlLnB0cC5kZWJ1Zy5zZG09QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL2RlYnVnL29yZy5lY2xpcHNlLnB0cC5kZWJ1Zy5zZG0KLXBsdWdpbkBvcmcuZWNsaXBzZS5wdHAucHJveHk9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL2NvcmUvb3JnLmVjbGlwc2UucHRwLnByb3h5Ci1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnV0aWxzPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC9jb3JlL29yZy5lY2xpcHNlLnB0cC51dGlscwotcGx1Z2luQG9yZy5lY2xpcHNlLnB0cC5yZW1vdGV0b29scy5jb3JlPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC90b29scy9vcmcuZWNsaXBzZS5wdHAucmVtb3RldG9vbHMuY29yZQotcGx1Z2luQG9yZy5lY2xpcHNlLnB0cC5yZW1vdGV0b29scy5lbnZpcm9ubWVudC5jb3JlPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC90b29scy9vcmcuZWNsaXBzZS5wdHAucmVtb3RldG9vbHMuZW52aXJvbm1lbnQuY29yZQotcGx1Z2luQG9yZy5lY2xpcHNlLnB0cC5yZW1vdGV0b29scy5lbnZpcm9ubWVudC5nZW5lcmljaG9zdD1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvdG9vbHMvb3JnLmVjbGlwc2UucHRwLnJlbW90ZXRvb2xzLmVudmlyb25tZW50LmdlbmVyaWNob3N0Ci1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnJlbW90ZXRvb2xzLmVudmlyb25tZW50LmxhdW5jaGVyPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC90b29scy9vcmcuZWNsaXBzZS5wdHAucmVtb3RldG9vbHMuZW52aXJvbm1lbnQubGF1bmNoZXIKLXBsdWdpbkBvcmcuZWNsaXBzZS5wdHAucmVtb3RldG9vbHMuZW52aXJvbm1lbnQudWk9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL3Rvb2xzL29yZy5lY2xpcHNlLnB0cC5yZW1vdGV0b29scy5lbnZpcm9ubWVudC51aQotcGx1Z2luQG9yZy5lY2xpcHNlLnB0cC5yZW1vdGV0b29scy5wcmVmZXJlbmNlcz1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvdG9vbHMvb3JnLmVjbGlwc2UucHRwLnJlbW90ZXRvb2xzLnByZWZlcmVuY2VzCi1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnJlbW90ZXRvb2xzLnV0aWxzPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC90b29scy9vcmcuZWNsaXBzZS5wdHAucmVtb3RldG9vbHMudXRpbHMKLXBsdWdpbkBvcmcuZWNsaXBzZS5wdHAubGF1bmNoPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC9jb3JlL29yZy5lY2xpcHNlLnB0cC5sYXVuY2gKLXBsdWdpbkBvcmcuZWNsaXBzZS5wdHAuaGVscD1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvZG9jL29yZy5lY2xpcHNlLnB0cC5oZWxwCi1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnBsZHQuY29tbW9uPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC90b29scy9vcmcuZWNsaXBzZS5wdHAucGxkdC5jb21tb24KLXBsdWdpbkBvcmcuZWNsaXBzZS5wdHAucGxkdC5oZWxwPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC90b29scy9vcmcuZWNsaXBzZS5wdHAucGxkdC5oZWxwCi1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnBsZHQubGFwaT1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvdG9vbHMvb3JnLmVjbGlwc2UucHRwLnBsZHQubGFwaQotcGx1Z2luQG9yZy5lY2xpcHNlLnB0cC5wbGR0Lm1waS5hbmFseXNpcz1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvdG9vbHMvb3JnLmVjbGlwc2UucHRwLnBsZHQubXBpLmFuYWx5c2lzCi1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnBsZHQubXBpLmFuYWx5c2lzLmNkdD1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvdG9vbHMvb3JnLmVjbGlwc2UucHRwLnBsZHQubXBpLmFuYWx5c2lzLmNkdAotcGx1Z2luQG9yZy5lY2xpcHNlLnB0cC5wbGR0Lm1waS5jb3JlPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC90b29scy9vcmcuZWNsaXBzZS5wdHAucGxkdC5tcGkuY29yZQotcGx1Z2luQG9yZy5lY2xpcHNlLnB0cC5wbGR0Lm9wZW5tcC5hbmFseXNpcz1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvdG9vbHMvb3JnLmVjbGlwc2UucHRwLnBsZHQub3Blbm1wLmFuYWx5c2lzCi1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnBsZHQub3Blbm1wLmNvcmU9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL3Rvb2xzL29yZy5lY2xpcHNlLnB0cC5wbGR0Lm9wZW5tcC5jb3JlCi1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnBsZHQub3Blbm1wLnVpLnB2PUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC90b29scy9vcmcuZWNsaXBzZS5wdHAucGxkdC5vcGVubXAudWkucHYKLXBsdWdpbkBvcmcuZWNsaXBzZS5wdHAucGxkdC51cGM9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL3Rvb2xzL29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYwotcGx1Z2luQG9yZy5lY2xpcHNlLnB0cC5wbGR0LndpemFyZHM9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL3Rvb2xzL29yZy5lY2xpcHNlLnB0cC5wbGR0LndpemFyZHMKLXBsdWdpbkBvcmcuZWNsaXBzZS5wdHAucGVyZj1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvdG9vbHMvcGVyZi9vcmcuZWNsaXBzZS5wdHAucGVyZgotcGx1Z2luQG9yZy5lY2xpcHNlLnB0cC5wZXJmLnRhdT1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvdG9vbHMvcGVyZi9vcmcuZWNsaXBzZS5wdHAucGVyZi50YXUKLXBsdWdpbkBvcmcuZWNsaXBzZS5wdHAucGVyZi50YXUuamFycz1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvdG9vbHMvcGVyZi9vcmcuZWNsaXBzZS5wdHAucGVyZi50YXUuamFycwotcGx1Z2luQG9yZy5lY2xpcHNlLnB0cC5wZXJmLnRhdS5wYXBpc2VsZWN0PUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC90b29scy9wZXJmL29yZy5lY2xpcHNlLnB0cC5wZXJmLnRhdS5wYXBpc2VsZWN0Ci1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnBlcmYudGF1LnBlcmZkbWY9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL3Rvb2xzL3BlcmYvb3JnLmVjbGlwc2UucHRwLnBlcmYudGF1LnBlcmZkbWYKLXBsdWdpbkBvcmcuZWNsaXBzZS5wdHAucGVyZi50YXUuc2VsaW5zdD1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvdG9vbHMvcGVyZi9vcmcuZWNsaXBzZS5wdHAucGVyZi50YXUuc2VsaW5zdAotcGx1Z2luQG9yZy5lY2xpcHNlLnB0cC5wZXJmLnRhdS5zZWxpbnN0Zm9ydD1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvdG9vbHMvcGVyZi9vcmcuZWNsaXBzZS5wdHAucGVyZi50YXUuc2VsaW5zdGZvcnQKLXBsdWdpbkBvcmcuZWNsaXBzZS5wdHAucGVyZi50b29sb3B0cz1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvdG9vbHMvcGVyZi9vcmcuZWNsaXBzZS5wdHAucGVyZi50b29sb3B0cwotcGx1Z2luQG9yZy5lY2xpcHNlLnB0cC5yZHQuY29yZT1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvcmR0L29yZy5lY2xpcHNlLnB0cC5yZHQuY29yZQotcGx1Z2luQG9yZy5lY2xpcHNlLnB0cC5yZHQudWk9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL3JkdC9vcmcuZWNsaXBzZS5wdHAucmR0LnVpCi1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnJkdC5zZXJ2aWNlcz1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvcmR0L29yZy5lY2xpcHNlLnB0cC5yZHQuc2VydmljZXMKLQotISBGcmFnbWVudHMKLWZyYWdtZW50QG9yZy5lY2xpcHNlLnB0cC5haXgucHBjPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLmFpeC5wcGMKLWZyYWdtZW50QG9yZy5lY2xpcHNlLnB0cC5saW51eC5wcGM9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAubGludXgucHBjCi1mcmFnbWVudEBvcmcuZWNsaXBzZS5wdHAubGludXgueDg2PUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLmxpbnV4Lng4NgotZnJhZ21lbnRAb3JnLmVjbGlwc2UucHRwLmxpbnV4Lng4Nl82ND1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5saW51eC54ODZfNjQKLWZyYWdtZW50QG9yZy5lY2xpcHNlLnB0cC5tYWNvc3gucHBjPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLm1hY29zeC5wcGMKLWZyYWdtZW50QG9yZy5lY2xpcHNlLnB0cC5tYWNvc3gueDg2PUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLm1hY29zeC54ODYKLWZyYWdtZW50QG9yZy5lY2xpcHNlLnB0cC5wZXJmLnBhcmFsbGVsPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC90b29scy9wZXJmL29yZy5lY2xpcHNlLnB0cC5wZXJmLnBhcmFsbGVsCi0KLSEgVGVzdHMKLXBsdWdpbkBvcmcuZWNsaXBzZS5wdHAucGVyZi50YXUucGFwaXRlc3Q9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL3Rvb2xzL3BlcmYvb3JnLmVjbGlwc2UucHRwLnBlcmYudGF1LnBhcGl0ZXN0Ci1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnJkdC5jb3JlLnRlc3RzPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC9yZHQvb3JnLmVjbGlwc2UucHRwLnJkdC5jb3JlLnRlc3RzCi0KZGlmZiAtLWdpdCBhL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucmVsZW5nL21hc3Rlci9idWlsZC5wcm9wZXJ0aWVzIGIvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5yZWxlbmcvbWFzdGVyL2J1aWxkLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyMzZjZTIuLjAwMDAwMDAKLS0tIGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5yZWxlbmcvbWFzdGVyL2J1aWxkLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwNSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgQ29udHJpYnV0b3JzOgotIyAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgUGFyYW1ldGVycyBkZXNjcmliaW5nIGhvdyBhbmQgd2hlcmUgdG8gZXhlY3V0ZSB0aGUgYnVpbGQuCi0jIFR5cGljYWwgdXNlcnMgbmVlZCBvbmx5IHVwZGF0ZSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6Ci0jICAgIGJhc2VMb2NhdGlvbiAtIHdoZXJlIHRoaW5ncyB5b3UgYXJlIGJ1aWxkaW5nIGFnYWluc3QgYXJlIGluc3RhbGxlZAotIyAgICBib290Y2xhc3NwYXRoIC0gVGhlIGJhc2UgamFycyB0byBjb21waWxlIGFnYWluc3QgKHR5cGljYWx5IHJ0LmphcikKLSMgICAgY29uZmlncyAtIHRoZSBsaXN0IG9mIHtvcywgd3MsIGFyY2h9IGNvbmZpZ3VyYXRpb25zIHRvIGJ1aWxkLiAgCi0jCi0jIE9mIGNvdXJzZSBhbnkgb2YgdGhlIHNldHRpbmdzIGhlcmUgY2FuIGJlIG92ZXJyaWRkZW4gYnkgc3BlYydpbmcgCi0jIHRoZW0gb24gdGhlIGNvbW1hbmQgbGluZSAoZS5nLiwgLURiYXNlTG9jYXRpb249ZDovZWNsaXBzZQotCi0jIyMjIyMjIyMjIyMjIENWUyBDT05UUk9MICMjIyMjIyMjIyMjIyMjIyMKLSMgVGhlIENWUyB0YWcgdG8gdXNlIHdoZW4gZmV0Y2hpbmcgdGhlIG1hcCBmaWxlcyBmcm9tIHRoZSByZXBvc2l0b3J5Ci1tYXBWZXJzaW9uVGFnPUhFQUQKLQotIyBUaGUgQ1ZTIHRhZyB0byB1c2Ugd2hlbiBmZXRjaGluZyBlbGVtZW50cyB0byBidWlsZC4gIEJ5IGRlZmF1bHQgdGhlCi0jIGJ1aWxkZXIgd2lsbCB1c2Ugd2hhdGV2ZXIgaXMgaW4gdGhlIG1hcHMuICBVc2UgdGhpcyB2YWx1ZSB0byBvdmVycmlkZQotIyBmb3IgZXhhbXBsZSwgd2hlbiBkb2luZyBhIG5pZ2h0bHkgYnVpbGQgb3V0IG9mIEhFQUQKLSMgZmV0Y2hUYWc9SEVBRAotCi1wdHBUYWc9SEVBRAotCi0jIyMjIyMjIyMjIyMjIyBCVUlMRCAvIEdFTkVSQVRJT04gQ09OVFJPTCAjIyMjIyMjIyMjIyMjIyMjCi0jIFRoZSBkaXJlY3RvcnkgaW50byB3aGljaCB0aGUgYnVpbGQgZWxlbWVudHMgd2lsbCBiZSBmZXRjaGVkIGFuZCB3aGVyZQotIyB0aGUgYnVpbGQgd2lsbCB0YWtlIHBsYWNlLiAgYnVpbGREaXJlY3RvcnkgYW5kIGluc3RhbGwgc2hvdWxkIGJlIHRoZSBzYW1lCi0jIHZhbHVlLgotYnVpbGREaXJlY3Rvcnk9YnVpbGQKLQotIyBUeXBlIG9mIGJ1aWxkLiAgVXNlZCBpbiBuYW1pbmcgdGhlIGJ1aWxkIG91dHB1dC4gIFR5cGljYWxseSB0aGlzIHZhbHVlIGlzCi0jIG9uZSBvZiBJLCBOLCBNLCBTLCAuLi4KLWJ1aWxkVHlwZT1JCi0KLSMgSUQgb2YgdGhlIGJ1aWxkLiAgVXNlZCBpbiBuYW1pbmcgdGhlIGJ1aWxkIG91dHB1dC4KLWJ1aWxkSWQ9VGVzdEJ1aWxkCi0KLSMgTGFiZWwgZm9yIHRoZSBidWlsZC4gIFVzZWQgaW4gbmFtaW5nIHRoZSBidWlsZCBvdXRwdXQKLWJ1aWxkTGFiZWw9JHtidWlsZFR5cGV9LiR7YnVpbGRJZH0KLQotIyBUaW1lc3RhbXAgZm9yIHRoZSBidWlsZC4gIFVzZWQgaW4gbmFtaW5nIHRoZSBidWlsZCBvdXRwdXQKLXRpbWVzdGFtcD0wMDcKLQotIyBCYXNlIGxvY2F0aW9uIGZvciBhbnl0aGluZyB0aGUgYnVpbGQgbmVlZHMgdG8gY29tcGlsZSBhZ2FpbnN0LiAgRm9yIGV4YW1wbGUsCi0jIHdoZW4gYnVpbGRpbmcgR0VGLCB0aGUgYmFzZUxvY2F0aW9uIHNob3VsZCBiZSB0aGUgbG9jYXRpb24gb2YgYSBwcmV2aW91c2x5Ci0jIGluc3RhbGxlZCBFY2xpcHNlIGFnYWluc3Qgd2hpY2ggdGhlIEdFRiBjb2RlIHdpbGwgYmUgY29tcGlsZWQuCi1iYXNlTG9jYXRpb249Ci0KLSNPcy9Xcy9BcmNoL25sIG9mIHRoZSBlY2xpcHNlIHNwZWNpZmllZCBieSBiYXNlTG9jYXRpb24KLSNiYXNlb3MKLSNiYXNld3MKLSNiYXNlYXJjaAotI2Jhc2VubAotCi0jIFRoZSBsb2NhdGlvbiB1bmRlcndoaWNoIGFsbCBvZiB0aGUgYnVpbGQgb3V0cHV0IHdpbGwgYmUgY29sbGVjdGVkLiAgVGhpcyB3aWxsIGJlCi0jIHRoZSByb290IHBhdGggaW4gdGhlIHJlc3VsdGFudCB6aXAgZmlsZS4KLWNvbGxQbGFjZT1lY2xpcHNlCi0KLSMgVGhlIGRpcmVjdG9yeSAgaW4gd2hpY2ggdG8gZXhlY3V0ZSB6aXAgb2YgdGhlICR7Y29sbFBsYWNlfSBkaXJlY3RvcnkKLWNvbGxCYXNlPS4KLQotIyBUaGUgbGlzdCBvZiB7b3MsIHdzLCBhcmNofSBjb25maWd1cmF0aW9ucyB0byBidWlsZC4gIFRoaXMgCi0jIHZhbHVlIGlzIGEgJyYnIHNlcGFyYXRlZCBsaXN0IG9mICcsJyBzZXBhcmF0ZSB0cmlwbGVzLiAgRm9yIGV4YW1wbGUsIAotIyAgICAgY29uZmlncz13aW4zMix3aW4zMix4ODYgJiBsaW51eCxtb3RpZix4ODYKLSMgQnkgZGVmYXVsdCB0aGUgdmFsdWUgaXMgKiwqLCoKLWNvbmZpZ3M9IFwKLQkgIGFpeCxtb3RpZixwcGMgXAotICAgICYgbGludXgsZ3RrLHg4NiBcCi0gICAgJiBsaW51eCxndGsseDg2XzY0IFwKLSAgICAmIGxpbnV4LGd0ayxwcGMgXAotICAgICYgbWFjb3N4LGNhcmJvbixwcGMgXAotICAgICYgd2luMzIsd2luMzIseDg2Ci0KLW91dHB1dFVwZGF0ZUphcnM9dHJ1ZQotZ3JvdXBDb25maWd1cmF0aW9ucz10cnVlCi0KLSNBcmd1bWVudHMgdG8gc2VuZCB0byB0aGUgemlwIGV4ZWN1dGFibGUKLXppcGFyZ3M9Ci0KLSMjIyMjIyMjIyMjIyMgSkFWQSBDT01QSUxFUiBPUFRJT05TICMjIyMjIyMjIyMjIyMjCi0jIFRoZSBsb2NhdGlvbiBvZiB0aGUgSmF2YSBqYXJzIHRvIGNvbXBpbGUgYWdhaW5zdC4gIFR5cGljYWxseSB0aGUgcnQuamFyIGZvciB5b3VyIEpESy9KUkUKLSNib290Y2xhc3NwYXRoPWQ6L2libTEuMy4xL2pyZS9saWIvcnQuamFyCi0KLWphdmFjRGVidWdJbmZvPW9uCi1qYXZhY1ZlcmJvc2U9dHJ1ZQotamF2YWNGYWlsT25FcnJvcj1mYWxzZQotCi0jIFRoZSB2ZXJzaW9uIG9mIHRoZSBzb3VyY2UgY29kZQotamF2YWNTb3VyY2U9MS41Ci0KLSMgVGhlIHZlcnNpb24gb2YgdGhlIGJ5dGUgY29kZSB0YXJnZXRlZAotamF2YWNUYXJnZXQ9MS41CmRpZmYgLS1naXQgYS9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJlbGVuZy9tYXN0ZXIvY3VzdG9tVGFyZ2V0cy54bWwgYi9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJlbGVuZy9tYXN0ZXIvY3VzdG9tVGFyZ2V0cy54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmYjZmNWUuLjAwMDAwMDAKLS0tIGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5yZWxlbmcvbWFzdGVyL2N1c3RvbVRhcmdldHMueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTM3ICswLDAgQEAKLTxwcm9qZWN0IG5hbWU9IkJ1aWxkIHNwZWNpZmljIHRhcmdldHMgYW5kIHByb3BlcnRpZXMiIGRlZmF1bHQ9Im5vRGVmYXVsdCIgPgotCi08IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLTwhLS0gUnVuIGEgZ2l2ZW4gJHt0YXJnZXR9IG9uIGFsbCBlbGVtZW50cyBiZWluZyBidWlsdCAtLT4KLTwhLS0gQWRkIG9uIDxhbnQ+IHRhc2sgZm9yIGVhY2ggdG9wIGxldmVsIGVsZW1lbnQgYmVpbmcgYnVpbHQuIC0tPgotPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+Ci08dGFyZ2V0IG5hbWU9ImFsbEVsZW1lbnRzIj4KLQk8YW50IGFudGZpbGU9IiR7Z2VuZXJpY1RhcmdldHN9IiB0YXJnZXQ9IiR7dGFyZ2V0fSI+Ci0JCTxwcm9wZXJ0eSBuYW1lPSJ0eXBlIiB2YWx1ZT0iZmVhdHVyZSIvPgotCQk8cHJvcGVydHkgbmFtZT0iaWQiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAubWFzdGVyIi8+Ci0JPC9hbnQ+Ci08L3RhcmdldD4KLQotPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+Ci08IS0tIFRhcmdldHMgdG8gYXNzZW1ibGUgdGhlIGJ1aWx0IGVsZW1lbnRzIGZvciBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb25zICAtLT4KLTwhLS0gVGhlc2UgZ2VuZXJhbGx5IGNhbGwgdGhlIGdlbmVyYXRlZCBhc3NlbWJsZSBzY3JpcHRzIChuYW1lZCBpbiAtLT4KLTwhLS0gJHthc3NlbWJsZVNjcmlwdE5hbWV9KSBidXQgbWF5IGFsc28gYWRkIHByZSBhbmQgcG9zdCBwcm9jZXNzaW5nIC0tPgotPCEtLSBBZGQgb25lIHRhcmdldCBmb3IgZWFjaCByb290IGVsZW1lbnQgYW5kIGVhY2ggY29uZmlndXJhdGlvbiAtLT4KLTwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgotCi08dGFyZ2V0IG5hbWU9ImFzc2VtYmxlLm9yZy5lY2xpcHNlLnB0cC5tYXN0ZXIuZ3JvdXAuZ3JvdXAuZ3JvdXAiPgotCTxhbnQgYW50ZmlsZT0iJHthc3NlbWJsZVNjcmlwdE5hbWV9IiBkaXI9IiR7YnVpbGREaXJlY3Rvcnl9Ij4KLQkJPHByb3BlcnR5IG5hbWU9ImFyY2hpdmVOYW1lIiB2YWx1ZT0icHRwLW1hc3Rlci0ke2JyYW5jaFZlcnNpb259LSR7YnVpbGRJZH0uemlwIi8+Ci0JPC9hbnQ+Ci08L3RhcmdldD4KLQkKLTwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgotPCEtLSBDaGVjayBvdXQgbWFwIGZpbGVzIGZyb20gY29ycmVjdCByZXBvc2l0b3J5IC0tPgotPCEtLSBSZXBsYWNlIHZhbHVlcyBmb3IgY3ZzUm9vdCwgcGFja2FnZSBhbmQgbWFwVmVyc2lvblRhZyBhcyBkZXNpcmVkLiAtLT4KLTwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgotPHRhcmdldCBuYW1lPSJnZXRNYXBGaWxlcyI+Ci0JPGNvcHkgZmlsZT0iJHtidWlsZGVyfS8uLi9tYXBzL3B0cC5tYXAiIHRvZGlyPSIke2J1aWxkRGlyZWN0b3J5fS9tYXBzIi8+Ci0JPHJlcGxhY2UgZmlsZT0iJHtidWlsZERpcmVjdG9yeX0vbWFwcy9wdHAubWFwIj4KLQkJPHJlcGxhY2VmaWx0ZXIgdG9rZW49IkBwdHBUYWdAIiB2YWx1ZT0iJHtwdHBUYWd9Ii8+Ci0JPC9yZXBsYWNlPgotPC90YXJnZXQ+Ci0KLTwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgotPCEtLSBTdGVwcyB0byBkbyBiZWZvcmUgc2V0dXAgLS0+Ci08IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLTx0YXJnZXQgbmFtZT0icHJlU2V0dXAiPgotPC90YXJnZXQ+Ci0KLTwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgotPCEtLSBTdGVwcyB0byBkbyBhZnRlciBzZXR1cCBidXQgYmVmb3JlIHN0YXJ0aW5nIHRoZSBidWlsZCBwcm9wZXIgLS0+Ci08IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLTx0YXJnZXQgbmFtZT0icG9zdFNldHVwIj4KLTwvdGFyZ2V0PgotCi08IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLTwhLS0gU3RlcHMgdG8gZG8gYmVmb3JlIGZldGNoaW5nIHRoZSBidWlsZCBlbGVtZW50cyAtLT4KLTwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgotPHRhcmdldCBuYW1lPSJwcmVGZXRjaCI+Ci08L3RhcmdldD4KLQotPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+Ci08IS0tIFN0ZXBzIHRvIGRvIGFmdGVyIGZldGNoaW5nIHRoZSBidWlsZCBlbGVtZW50cyAtLT4KLTwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgotPHRhcmdldCBuYW1lPSJwb3N0RmV0Y2giPgotCTxjb25kaXRpb24gcHJvcGVydHk9InBhdGNoZXNBdmFpbGFibGUiPgotCQk8YXZhaWxhYmxlIGZpbGU9IiR7YnVpbGRlcn0vcGF0Y2gueG1sIi8+Ci0JPC9jb25kaXRpb24+Ci0JPGFudGNhbGwgdGFyZ2V0PSJhcHBseVBhdGNoZXMiLz4KLTwvdGFyZ2V0PgotCi08dGFyZ2V0IG5hbWU9ImFwcGx5UGF0Y2hlcyIgaWY9InBhdGNoZXNBdmFpbGFibGUiPgotCTxhbnQgYW50ZmlsZT0iJHtidWlsZGVyfS9wYXRjaC54bWwiLz4KLTwvdGFyZ2V0PgotCi08IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLTwhLS0gU3RlcHMgdG8gZG8gYmVmb3JlIGdlbmVyYXRpbmcgdGhlIGJ1aWxkIHNjcmlwdHMuIC0tPgotPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+Ci08dGFyZ2V0IG5hbWU9InByZUdlbmVyYXRlIj4KLTwvdGFyZ2V0PgotCi08IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLTwhLS0gU3RlcHMgdG8gZG8gYWZ0ZXIgZ2VuZXJhdGluZyB0aGUgYnVpbGQgc2NyaXB0cy4gLS0+Ci08IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLTx0YXJnZXQgbmFtZT0icG9zdEdlbmVyYXRlIj4KLTwvdGFyZ2V0PgotCi0KLTwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgotPCEtLSBTdGVwcyB0byBkbyBiZWZvcmUgcnVubmluZyB0aGUgYnVpbGQueG1scyBmb3IgdGhlIGVsZW1lbnRzIGJlaW5nIGJ1aWx0LiAtLT4KLTwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgotPHRhcmdldCBuYW1lPSJwcmVQcm9jZXNzIj4KLQk8cmVwbGFjZSBkaXI9IiR7YnVpbGREaXJlY3Rvcnl9L3BsdWdpbnMiIHZhbHVlPSIke3RpbWVzdGFtcH0iIHRva2VuPSJAYnVpbGRAIj4KLQkJPGluY2x1ZGUgbmFtZT0iKiovYWJvdXQubWFwcGluZ3MiIC8+Ci0JPC9yZXBsYWNlPgotCTx1bnppcCBzcmM9IiR7dGF1SmFyc30iIGRlc3Q9IiR7YnVpbGREaXJlY3Rvcnl9Ii8+Ci08L3RhcmdldD4KLQotPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+Ci08IS0tIFN0ZXBzIHRvIGRvIGFmdGVyIHJ1bm5pbmcgdGhlIGJ1aWxkLnhtbHMgZm9yIHRoZSBlbGVtZW50cyBiZWluZyBidWlsdC4gLS0+Ci08IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLTx0YXJnZXQgbmFtZT0icG9zdFByb2Nlc3MiPgotPC90YXJnZXQ+Ci0KLQotPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+Ci08IS0tIFN0ZXBzIHRvIGRvIGJlZm9yZSBydW5uaW5nIGFzc2VtYmxlLiAtLT4KLTwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgotPHRhcmdldCBuYW1lPSJwcmVBc3NlbWJsZSI+Ci08L3RhcmdldD4KLQotPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+Ci08IS0tIFN0ZXBzIHRvIGRvIGFmdGVyICBydW5uaW5nIGFzc2VtYmxlLiAtLT4KLTwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgotPHRhcmdldCBuYW1lPSJwb3N0QXNzZW1ibGUiPgotPC90YXJnZXQ+Ci0KLTwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgotPCEtLSBTdGVwcyB0byBkbyBhZnRlciB0aGUgYnVpbGQgaXMgZG9uZS4gLS0+Ci08IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLTx0YXJnZXQgbmFtZT0icG9zdEJ1aWxkIj4KLTwvdGFyZ2V0PgotCi08IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLTwhLS0gU3RlcHMgdG8gZG8gdG8gdGVzdCB0aGUgYnVpbGQgcmVzdWx0cyAtLT4KLTwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgotPHRhcmdldCBuYW1lPSJ0ZXN0Ij4KLTwvdGFyZ2V0PgotCi08IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLTwhLS0gU3RlcHMgdG8gZG8gdG8gcHVibGlzaCB0aGUgYnVpbGQgcmVzdWx0cyAtLT4KLTwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgotPHRhcmdldCBuYW1lPSJwdWJsaXNoIj4KLTwvdGFyZ2V0PgotCi08IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLTwhLS0gRGVmYXVsdCB0YXJnZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPgotPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+Ci08dGFyZ2V0IG5hbWU9Im5vRGVmYXVsdCI+Ci0JPGVjaG8gbWVzc2FnZT0iWW91IG11c3Qgc3BlY2lmeSBhIHRhcmdldCB3aGVuIGludm9raW5nIHRoaXMgZmlsZSIgLz4KLTwvdGFyZ2V0PgotCi08L3Byb2plY3Q+CmRpZmYgLS1naXQgYS9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJlbGVuZy9wYWNrLnByb3BlcnRpZXMgYi9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJlbGVuZy9wYWNrLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjYjVhNWUuLjAwMDAwMDAKLS0tIGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5yZWxlbmcvcGFjay5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotcGFjazIwMC5kZWZhdWx0LmFyZ3M9LUU0CmRpZmYgLS1naXQgYS9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJlbGVuZy9wdHBidWlsZCBiL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucmVsZW5nL3B0cGJ1aWxkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwY2Q4MmIyLi4wMDAwMDAwCi0tLSBhL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucmVsZW5nL3B0cGJ1aWxkCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotIyEvYmluL3NoCi0jCi0jIHB0cGJ1aWxkIHdyYXBwZXIgc2NyaXB0Ci0jCi0jIFVzYWdlOiBwdHBidWlsZCB2ZXJzaW9uIFtidWlsZF9hcmdzXQotIwotIyB3aGVyZSB2ZXJzaW9uIGlzIHRoZSBjdXJyZW50IFBUUCB2ZXJzaW9uIGJlaW5nIGJ1aWx0IGFuZAotIyBidWlsZF9hcmdzIGFyZSBhbnkgb3RoZXIgYXJndW1lbnRzIHlvdSB3YW50IHRvIHBhc3MgdG8gdGhlCi0jIGJ1aWxkIHNjcmlwdC4KLSMKLSMgc2V0IHVwIGFueXRoaW5nIGVudmlyb25tZW50IHNwZWNpZmljIHRoYXQgbmVlZHMgdG8gYmUgZG9uZSBiZWZvcmUKLSMgbGF1bmNoaW5nIHRoZSBidWlsZCBzY3JpcHQgaW4gdGhlIHJlbGVuZyBwcm9qZWN0Ci0KLWlmIFsgJCMgLWx0IDEgXTsgdGhlbgotCWVjaG8gInVzYWdlOiBwdHBidWlsZCB2ZXJzaW9uIFtidWlsZF9hcmdzXSIKLQlleGl0IDEKLWZpCi0KLSMgVmVyc2lvbiBvZiBQVFAgd2UncmUgYnVpbGRpbmcKLVBUUF9WRVJTSU9OPSQxOyBzaGlmdAotCi0jIG1haW4gc3RhZ2luZyBkaXJlY3RvcnkKLVNUQUdJTkdfRElSPS9vcHQvcHVibGljL2Rvd25sb2FkLXN0YWdpbmcucHJpdi90b29scy9wdHAvcmVsZW5nCi0KLSMgZG93bmxvYWQgbG9jYXRpb24gZm9yIGJ1aWxkcwotQlVJTERTX0RJUj0vaG9tZS93d3cvdG9vbHMvcHRwL2J1aWxkcy8kUFRQX1ZFUlNJT04KLQotIyBjcmVhdGUgdGhlIHJlbGVuZyBzdGFnaW5nIGRpcmVjdG9yeSBhbmQgZ28gdGhlcmUKLW1rZGlyIC1wICRTVEFHSU5HX0RJUgotY2QgJFNUQUdJTkdfRElSCi0KLSMgbWFrZSBhIGxpbmsgdG8gdGhlIHJlc3VsdHMKLWlmIFsgISAtTCByZXN1bHRzIF07IHRoZW4KLQlsbiAtcyBvcmcuZWNsaXBzZS5wdHAvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5yZWxlbmcvcmVzdWx0cyByZXN1bHRzCi1maQotCi0jIHJlbW92ZSB0aGUgb2xkIGJ1aWxkCi1ybSAtZnIgb3JnLmVjbGlwc2UucHRwCi0KLSMgQ2hlY2sgb3V0IHRoZSByZWxlbmcgcHJvamVjdAotZXhwb3J0IENWU1JPT1Q9OnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scwotY3ZzIGNvIG9yZy5lY2xpcHNlLnB0cC9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJlbGVuZwotCi0jIHJ1biB0aGUgbWFpbiBzY3JpcHQKLWNkIG9yZy5lY2xpcHNlLnB0cC9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJlbGVuZwotc2ggYnVpbGQuc2ggJCogMj4mMSB8IHRlZSAkU1RBR0lOR19ESVIvYnVpbGQubG9nCi0KLSMgQ29weSB0aGUgYnVpbGQubG9nIHRvIHdoZXJlIHRoZSBsYXRlc3QgYnVpbGQgaXMuIE9ubHkgY29weQotIyBpZiBhIGJ1aWxkLmxvZyBkb2Vzbid0IGV4aXN0LCBvdGhlcndpc2UgdGhlIGJ1aWxkIGZhaWxlZCBhbmQKLSMgd2Ugd291bGQgY29weSBvdmVyIGFuIG9sZCBsb2cgZmlsZS4KLWlmIFsgISAtZiAkQlVJTERTX0RJUi9sYXRlc3QvYnVpbGQubG9nIF07IHRoZW4KLQljcCAkU1RBR0lOR19ESVIvYnVpbGQubG9nICRCVUlMRFNfRElSL2xhdGVzdAotZmkKZGlmZiAtLWdpdCBhL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0uaWJtLmJsdWVnZW5lLWZlYXR1cmUvLnByb2plY3QgYi9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLmlibS5ibHVlZ2VuZS1mZWF0dXJlLy5wcm9qZWN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NjFlYjdiLi4wMDAwMDAwCi0tLSBhL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0uaWJtLmJsdWVnZW5lLWZlYXR1cmUvLnByb2plY3QKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHByb2plY3REZXNjcmlwdGlvbj4KLQk8bmFtZT5vcmcuZWNsaXBzZS5wdHAucm0uaWJtLmJsdWVnZW5lLWZlYXR1cmU8L25hbWU+Ci0JPGNvbW1lbnQ+PC9jb21tZW50PgotCTxwcm9qZWN0cz4KLQk8L3Byb2plY3RzPgotCTxidWlsZFNwZWM+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5wZGUuRmVhdHVyZUJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCTwvYnVpbGRTcGVjPgotCTxuYXR1cmVzPgotCQk8bmF0dXJlPm9yZy5lY2xpcHNlLnBkZS5GZWF0dXJlTmF0dXJlPC9uYXR1cmU+Ci0JPC9uYXR1cmVzPgotPC9wcm9qZWN0RGVzY3JpcHRpb24+CmRpZmYgLS1naXQgYS9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLmlibS5ibHVlZ2VuZS1mZWF0dXJlL2J1aWxkLnByb3BlcnRpZXMgYi9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLmlibS5ibHVlZ2VuZS1mZWF0dXJlL2J1aWxkLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3OWRmOGYuLjAwMDAwMDAKLS0tIGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5ybS5pYm0uYmx1ZWdlbmUtZmVhdHVyZS9idWlsZC5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1iaW4uaW5jbHVkZXMgPSBmZWF0dXJlLnhtbCxcCi0gICAgICAgICAgICAgICBsaWNlbnNlLmh0bWwsXAotICAgICAgICAgICAgICAgZmVhdHVyZS5wcm9wZXJ0aWVzLFwKLSAgICAgICAgICAgICAgIGVwbC12MTAuaHRtbApkaWZmIC0tZ2l0IGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5ybS5pYm0uYmx1ZWdlbmUtZmVhdHVyZS9lcGwtdjEwLmh0bWwgYi9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLmlibS5ibHVlZ2VuZS1mZWF0dXJlL2VwbC12MTAuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQ0YjE5Ni4uMDAwMDAwMAotLS0gYS9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLmlibS5ibHVlZ2VuZS1mZWF0dXJlL2VwbC12MTAuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDMyOCArMCwwIEBACi08aHRtbCB4bWxuczpvPSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTpvZmZpY2UiCi14bWxuczp3PSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTp3b3JkIgoteG1sbnM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy1odG1sNDAiPgotCi08aGVhZD4KLTxtZXRhIGh0dHAtZXF1aXY9Q29udGVudC1UeXBlIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD13aW5kb3dzLTEyNTIiPgotPG1ldGEgbmFtZT1Qcm9nSWQgY29udGVudD1Xb3JkLkRvY3VtZW50PgotPG1ldGEgbmFtZT1HZW5lcmF0b3IgY29udGVudD0iTWljcm9zb2Z0IFdvcmQgOSI+Ci08bWV0YSBuYW1lPU9yaWdpbmF0b3IgY29udGVudD0iTWljcm9zb2Z0IFdvcmQgOSI+Ci08bGluayByZWw9RmlsZS1MaXN0Ci1ocmVmPSIuL0VjbGlwc2UlMjBFUEwlMjAyMDAzXzExXzEwJTIwRmluYWxfZmlsZXMvZmlsZWxpc3QueG1sIj4KLTx0aXRsZT5FY2xpcHNlIFB1YmxpYyBMaWNlbnNlIC0gVmVyc2lvbiAxLjA8L3RpdGxlPgotPCEtLVtpZiBndGUgbXNvIDldPjx4bWw+Ci0gPG86RG9jdW1lbnRQcm9wZXJ0aWVzPgotICA8bzpSZXZpc2lvbj4yPC9vOlJldmlzaW9uPgotICA8bzpUb3RhbFRpbWU+MzwvbzpUb3RhbFRpbWU+Ci0gIDxvOkNyZWF0ZWQ+MjAwNC0wMy0wNVQyMzowMzowMFo8L286Q3JlYXRlZD4KLSAgPG86TGFzdFNhdmVkPjIwMDQtMDMtMDVUMjM6MDM6MDBaPC9vOkxhc3RTYXZlZD4KLSAgPG86UGFnZXM+NDwvbzpQYWdlcz4KLSAgPG86V29yZHM+MTYyNjwvbzpXb3Jkcz4KLSAgPG86Q2hhcmFjdGVycz45MjcwPC9vOkNoYXJhY3RlcnM+Ci0gICA8bzpMaW5lcz43NzwvbzpMaW5lcz4KLSAgPG86UGFyYWdyYXBocz4xODwvbzpQYXJhZ3JhcGhzPgotICA8bzpDaGFyYWN0ZXJzV2l0aFNwYWNlcz4xMTM4NDwvbzpDaGFyYWN0ZXJzV2l0aFNwYWNlcz4KLSAgPG86VmVyc2lvbj45LjQ0MDI8L286VmVyc2lvbj4KLSA8L286RG9jdW1lbnRQcm9wZXJ0aWVzPgotPC94bWw+PCFbZW5kaWZdLS0+PCEtLVtpZiBndGUgbXNvIDldPjx4bWw+Ci0gPHc6V29yZERvY3VtZW50PgotICA8dzpUcmFja1JldmlzaW9ucy8+Ci0gPC93OldvcmREb2N1bWVudD4KLTwveG1sPjwhW2VuZGlmXS0tPgotPHN0eWxlPgotPCEtLQotIC8qIEZvbnQgRGVmaW5pdGlvbnMgKi8KLUBmb250LWZhY2UKLQl7Zm9udC1mYW1pbHk6VGFob21hOwotCXBhbm9zZS0xOjIgMTEgNiA0IDMgNSA0IDQgMiA0OwotCW1zby1mb250LWNoYXJzZXQ6MDsKLQltc28tZ2VuZXJpYy1mb250LWZhbWlseTpzd2lzczsKLQltc28tZm9udC1waXRjaDp2YXJpYWJsZTsKLQltc28tZm9udC1zaWduYXR1cmU6NTUzNjc5NDk1IC0yMTQ3NDgzNjQ4IDggMCA2NjA0NyAwO30KLSAvKiBTdHlsZSBEZWZpbml0aW9ucyAqLwotcC5Nc29Ob3JtYWwsIGxpLk1zb05vcm1hbCwgZGl2Lk1zb05vcm1hbAotCXttc28tc3R5bGUtcGFyZW50OiIiOwotCW1hcmdpbjowaW47Ci0JbWFyZ2luLWJvdHRvbTouMDAwMXB0OwotCW1zby1wYWdpbmF0aW9uOndpZG93LW9ycGhhbjsKLQlmb250LXNpemU6MTIuMHB0OwotCWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iOwotCW1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iO30KLXAKLQl7bWFyZ2luLXJpZ2h0OjBpbjsKLQltc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzsKLQltc28tbWFyZ2luLWJvdHRvbS1hbHQ6YXV0bzsKLQltYXJnaW4tbGVmdDowaW47Ci0JbXNvLXBhZ2luYXRpb246d2lkb3ctb3JwaGFuOwotCWZvbnQtc2l6ZToxMi4wcHQ7Ci0JZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7Ci0JbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7fQotcC5CYWxsb29uVGV4dCwgbGkuQmFsbG9vblRleHQsIGRpdi5CYWxsb29uVGV4dAotCXttc28tc3R5bGUtbmFtZToiQmFsbG9vbiBUZXh0IjsKLQltYXJnaW46MGluOwotCW1hcmdpbi1ib3R0b206LjAwMDFwdDsKLQltc28tcGFnaW5hdGlvbjp3aWRvdy1vcnBoYW47Ci0JZm9udC1zaXplOjguMHB0OwotCWZvbnQtZmFtaWx5OlRhaG9tYTsKLQltc28tZmFyZWFzdC1mb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjt9Ci1AcGFnZSBTZWN0aW9uMQotCXtzaXplOjguNWluIDExLjBpbjsKLQltYXJnaW46MS4waW4gMS4yNWluIDEuMGluIDEuMjVpbjsKLQltc28taGVhZGVyLW1hcmdpbjouNWluOwotCW1zby1mb290ZXItbWFyZ2luOi41aW47Ci0JbXNvLXBhcGVyLXNvdXJjZTowO30KLWRpdi5TZWN0aW9uMQotCXtwYWdlOlNlY3Rpb24xO30KLS0tPgotPC9zdHlsZT4KLTwvaGVhZD4KLQotPGJvZHkgbGFuZz1FTi1VUyBzdHlsZT0ndGFiLWludGVydmFsOi41aW4nPgotCi08ZGl2IGNsYXNzPVNlY3Rpb24xPgotCi08cCBhbGlnbj1jZW50ZXIgc3R5bGU9J3RleHQtYWxpZ246Y2VudGVyJz48Yj5FY2xpcHNlIFB1YmxpYyBMaWNlbnNlIC0gdiAxLjA8L2I+Ci08L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5USEUgQUNDT01QQU5ZSU5HIFBST0dSQU0gSVMgUFJPVklERUQgVU5ERVIKLVRIRSBURVJNUyBPRiBUSElTIEVDTElQU0UgUFVCTElDIExJQ0VOU0UgKCZxdW90O0FHUkVFTUVOVCZxdW90OykuIEFOWSBVU0UsCi1SRVBST0RVQ1RJT04gT1IgRElTVFJJQlVUSU9OIE9GIFRIRSBQUk9HUkFNIENPTlNUSVRVVEVTIFJFQ0lQSUVOVCdTIEFDQ0VQVEFOQ0UKLU9GIFRISVMgQUdSRUVNRU5ULjwvc3Bhbj4gPC9wPgotCi08cD48Yj48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+MS4gREVGSU5JVElPTlM8L3NwYW4+PC9iPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4mcXVvdDtDb250cmlidXRpb24mcXVvdDsgbWVhbnM6PC9zcGFuPiA8L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmEpCi1pbiB0aGUgY2FzZSBvZiB0aGUgaW5pdGlhbCBDb250cmlidXRvciwgdGhlIGluaXRpYWwgY29kZSBhbmQgZG9jdW1lbnRhdGlvbgotZGlzdHJpYnV0ZWQgdW5kZXIgdGhpcyBBZ3JlZW1lbnQsIGFuZDxiciBjbGVhcj1sZWZ0PgotYikgaW4gdGhlIGNhc2Ugb2YgZWFjaCBzdWJzZXF1ZW50IENvbnRyaWJ1dG9yOjwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmkpCi1jaGFuZ2VzIHRvIHRoZSBQcm9ncmFtLCBhbmQ8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5paSkKLWFkZGl0aW9ucyB0byB0aGUgUHJvZ3JhbTs8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz53aGVyZQotc3VjaCBjaGFuZ2VzIGFuZC9vciBhZGRpdGlvbnMgdG8gdGhlIFByb2dyYW0gb3JpZ2luYXRlIGZyb20gYW5kIGFyZSBkaXN0cmlidXRlZAotYnkgdGhhdCBwYXJ0aWN1bGFyIENvbnRyaWJ1dG9yLiBBIENvbnRyaWJ1dGlvbiAnb3JpZ2luYXRlcycgZnJvbSBhIENvbnRyaWJ1dG9yCi1pZiBpdCB3YXMgYWRkZWQgdG8gdGhlIFByb2dyYW0gYnkgc3VjaCBDb250cmlidXRvciBpdHNlbGYgb3IgYW55b25lIGFjdGluZyBvbgotc3VjaCBDb250cmlidXRvcidzIGJlaGFsZi4gQ29udHJpYnV0aW9ucyBkbyBub3QgaW5jbHVkZSBhZGRpdGlvbnMgdG8gdGhlCi1Qcm9ncmFtIHdoaWNoOiAoaSkgYXJlIHNlcGFyYXRlIG1vZHVsZXMgb2Ygc29mdHdhcmUgZGlzdHJpYnV0ZWQgaW4gY29uanVuY3Rpb24KLXdpdGggdGhlIFByb2dyYW0gdW5kZXIgdGhlaXIgb3duIGxpY2Vuc2UgYWdyZWVtZW50LCBhbmQgKGlpKSBhcmUgbm90IGRlcml2YXRpdmUKLXdvcmtzIG9mIHRoZSBQcm9ncmFtLiA8L3NwYW4+PC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+JnF1b3Q7Q29udHJpYnV0b3ImcXVvdDsgbWVhbnMgYW55IHBlcnNvbiBvcgotZW50aXR5IHRoYXQgZGlzdHJpYnV0ZXMgdGhlIFByb2dyYW0uPC9zcGFuPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4mcXVvdDtMaWNlbnNlZCBQYXRlbnRzICZxdW90OyBtZWFuIHBhdGVudAotY2xhaW1zIGxpY2Vuc2FibGUgYnkgYSBDb250cmlidXRvciB3aGljaCBhcmUgbmVjZXNzYXJpbHkgaW5mcmluZ2VkIGJ5IHRoZSB1c2UKLW9yIHNhbGUgb2YgaXRzIENvbnRyaWJ1dGlvbiBhbG9uZSBvciB3aGVuIGNvbWJpbmVkIHdpdGggdGhlIFByb2dyYW0uIDwvc3Bhbj48L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4mcXVvdDtQcm9ncmFtJnF1b3Q7IG1lYW5zIHRoZSBDb250cmlidXRpb25zCi1kaXN0cmlidXRlZCBpbiBhY2NvcmRhbmNlIHdpdGggdGhpcyBBZ3JlZW1lbnQuPC9zcGFuPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4mcXVvdDtSZWNpcGllbnQmcXVvdDsgbWVhbnMgYW55b25lIHdobwotcmVjZWl2ZXMgdGhlIFByb2dyYW0gdW5kZXIgdGhpcyBBZ3JlZW1lbnQsIGluY2x1ZGluZyBhbGwgQ29udHJpYnV0b3JzLjwvc3Bhbj4gPC9wPgotCi08cD48Yj48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Mi4gR1JBTlQgT0YgUklHSFRTPC9zcGFuPjwvYj4gPC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5hKQotU3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhpcyBBZ3JlZW1lbnQsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyBSZWNpcGllbnQKLWEgbm9uLWV4Y2x1c2l2ZSwgd29ybGR3aWRlLCByb3lhbHR5LWZyZWUgY29weXJpZ2h0IGxpY2Vuc2UgdG88c3Bhbgotc3R5bGU9J2NvbG9yOnJlZCc+IDwvc3Bhbj5yZXByb2R1Y2UsIHByZXBhcmUgZGVyaXZhdGl2ZSB3b3JrcyBvZiwgcHVibGljbHkKLWRpc3BsYXksIHB1YmxpY2x5IHBlcmZvcm0sIGRpc3RyaWJ1dGUgYW5kIHN1YmxpY2Vuc2UgdGhlIENvbnRyaWJ1dGlvbiBvZiBzdWNoCi1Db250cmlidXRvciwgaWYgYW55LCBhbmQgc3VjaCBkZXJpdmF0aXZlIHdvcmtzLCBpbiBzb3VyY2UgY29kZSBhbmQgb2JqZWN0IGNvZGUKLWZvcm0uPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+YikKLVN1YmplY3QgdG8gdGhlIHRlcm1zIG9mIHRoaXMgQWdyZWVtZW50LCBlYWNoIENvbnRyaWJ1dG9yIGhlcmVieSBncmFudHMKLVJlY2lwaWVudCBhIG5vbi1leGNsdXNpdmUsIHdvcmxkd2lkZSw8c3BhbiBzdHlsZT0nY29sb3I6Z3JlZW4nPiA8L3NwYW4+cm95YWx0eS1mcmVlCi1wYXRlbnQgbGljZW5zZSB1bmRlciBMaWNlbnNlZCBQYXRlbnRzIHRvIG1ha2UsIHVzZSwgc2VsbCwgb2ZmZXIgdG8gc2VsbCwgaW1wb3J0Ci1hbmQgb3RoZXJ3aXNlIHRyYW5zZmVyIHRoZSBDb250cmlidXRpb24gb2Ygc3VjaCBDb250cmlidXRvciwgaWYgYW55LCBpbiBzb3VyY2UKLWNvZGUgYW5kIG9iamVjdCBjb2RlIGZvcm0uIFRoaXMgcGF0ZW50IGxpY2Vuc2Ugc2hhbGwgYXBwbHkgdG8gdGhlIGNvbWJpbmF0aW9uCi1vZiB0aGUgQ29udHJpYnV0aW9uIGFuZCB0aGUgUHJvZ3JhbSBpZiwgYXQgdGhlIHRpbWUgdGhlIENvbnRyaWJ1dGlvbiBpcyBhZGRlZAotYnkgdGhlIENvbnRyaWJ1dG9yLCBzdWNoIGFkZGl0aW9uIG9mIHRoZSBDb250cmlidXRpb24gY2F1c2VzIHN1Y2ggY29tYmluYXRpb24KLXRvIGJlIGNvdmVyZWQgYnkgdGhlIExpY2Vuc2VkIFBhdGVudHMuIFRoZSBwYXRlbnQgbGljZW5zZSBzaGFsbCBub3QgYXBwbHkgdG8KLWFueSBvdGhlciBjb21iaW5hdGlvbnMgd2hpY2ggaW5jbHVkZSB0aGUgQ29udHJpYnV0aW9uLiBObyBoYXJkd2FyZSBwZXIgc2UgaXMKLWxpY2Vuc2VkIGhlcmV1bmRlci4gPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+YykKLVJlY2lwaWVudCB1bmRlcnN0YW5kcyB0aGF0IGFsdGhvdWdoIGVhY2ggQ29udHJpYnV0b3IgZ3JhbnRzIHRoZSBsaWNlbnNlcyB0byBpdHMKLUNvbnRyaWJ1dGlvbnMgc2V0IGZvcnRoIGhlcmVpbiwgbm8gYXNzdXJhbmNlcyBhcmUgcHJvdmlkZWQgYnkgYW55IENvbnRyaWJ1dG9yCi10aGF0IHRoZSBQcm9ncmFtIGRvZXMgbm90IGluZnJpbmdlIHRoZSBwYXRlbnQgb3Igb3RoZXIgaW50ZWxsZWN0dWFsIHByb3BlcnR5Ci1yaWdodHMgb2YgYW55IG90aGVyIGVudGl0eS4gRWFjaCBDb250cmlidXRvciBkaXNjbGFpbXMgYW55IGxpYWJpbGl0eSB0byBSZWNpcGllbnQKLWZvciBjbGFpbXMgYnJvdWdodCBieSBhbnkgb3RoZXIgZW50aXR5IGJhc2VkIG9uIGluZnJpbmdlbWVudCBvZiBpbnRlbGxlY3R1YWwKLXByb3BlcnR5IHJpZ2h0cyBvciBvdGhlcndpc2UuIEFzIGEgY29uZGl0aW9uIHRvIGV4ZXJjaXNpbmcgdGhlIHJpZ2h0cyBhbmQKLWxpY2Vuc2VzIGdyYW50ZWQgaGVyZXVuZGVyLCBlYWNoIFJlY2lwaWVudCBoZXJlYnkgYXNzdW1lcyBzb2xlIHJlc3BvbnNpYmlsaXR5Ci10byBzZWN1cmUgYW55IG90aGVyIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgbmVlZGVkLCBpZiBhbnkuIEZvciBleGFtcGxlLAotaWYgYSB0aGlyZCBwYXJ0eSBwYXRlbnQgbGljZW5zZSBpcyByZXF1aXJlZCB0byBhbGxvdyBSZWNpcGllbnQgdG8gZGlzdHJpYnV0ZQotdGhlIFByb2dyYW0sIGl0IGlzIFJlY2lwaWVudCdzIHJlc3BvbnNpYmlsaXR5IHRvIGFjcXVpcmUgdGhhdCBsaWNlbnNlIGJlZm9yZQotZGlzdHJpYnV0aW5nIHRoZSBQcm9ncmFtLjwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmQpCi1FYWNoIENvbnRyaWJ1dG9yIHJlcHJlc2VudHMgdGhhdCB0byBpdHMga25vd2xlZGdlIGl0IGhhcyBzdWZmaWNpZW50IGNvcHlyaWdodAotcmlnaHRzIGluIGl0cyBDb250cmlidXRpb24sIGlmIGFueSwgdG8gZ3JhbnQgdGhlIGNvcHlyaWdodCBsaWNlbnNlIHNldCBmb3J0aCBpbgotdGhpcyBBZ3JlZW1lbnQuIDwvc3Bhbj48L3A+Ci0KLTxwPjxiPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4zLiBSRVFVSVJFTUVOVFM8L3NwYW4+PC9iPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5BIENvbnRyaWJ1dG9yIG1heSBjaG9vc2UgdG8gZGlzdHJpYnV0ZSB0aGUKLVByb2dyYW0gaW4gb2JqZWN0IGNvZGUgZm9ybSB1bmRlciBpdHMgb3duIGxpY2Vuc2UgYWdyZWVtZW50LCBwcm92aWRlZCB0aGF0Ojwvc3Bhbj4KLTwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+YSkKLWl0IGNvbXBsaWVzIHdpdGggdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoaXMgQWdyZWVtZW50OyBhbmQ8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5iKQotaXRzIGxpY2Vuc2UgYWdyZWVtZW50Ojwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmkpCi1lZmZlY3RpdmVseSBkaXNjbGFpbXMgb24gYmVoYWxmIG9mIGFsbCBDb250cmlidXRvcnMgYWxsIHdhcnJhbnRpZXMgYW5kCi1jb25kaXRpb25zLCBleHByZXNzIGFuZCBpbXBsaWVkLCBpbmNsdWRpbmcgd2FycmFudGllcyBvciBjb25kaXRpb25zIG9mIHRpdGxlCi1hbmQgbm9uLWluZnJpbmdlbWVudCwgYW5kIGltcGxpZWQgd2FycmFudGllcyBvciBjb25kaXRpb25zIG9mIG1lcmNoYW50YWJpbGl0eQotYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlOyA8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5paSkKLWVmZmVjdGl2ZWx5IGV4Y2x1ZGVzIG9uIGJlaGFsZiBvZiBhbGwgQ29udHJpYnV0b3JzIGFsbCBsaWFiaWxpdHkgZm9yIGRhbWFnZXMsCi1pbmNsdWRpbmcgZGlyZWN0LCBpbmRpcmVjdCwgc3BlY2lhbCwgaW5jaWRlbnRhbCBhbmQgY29uc2VxdWVudGlhbCBkYW1hZ2VzLCBzdWNoCi1hcyBsb3N0IHByb2ZpdHM7IDwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmlpaSkKLXN0YXRlcyB0aGF0IGFueSBwcm92aXNpb25zIHdoaWNoIGRpZmZlciBmcm9tIHRoaXMgQWdyZWVtZW50IGFyZSBvZmZlcmVkIGJ5IHRoYXQKLUNvbnRyaWJ1dG9yIGFsb25lIGFuZCBub3QgYnkgYW55IG90aGVyIHBhcnR5OyBhbmQ8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5pdikKLXN0YXRlcyB0aGF0IHNvdXJjZSBjb2RlIGZvciB0aGUgUHJvZ3JhbSBpcyBhdmFpbGFibGUgZnJvbSBzdWNoIENvbnRyaWJ1dG9yLCBhbmQKLWluZm9ybXMgbGljZW5zZWVzIGhvdyB0byBvYnRhaW4gaXQgaW4gYSByZWFzb25hYmxlIG1hbm5lciBvbiBvciB0aHJvdWdoIGEKLW1lZGl1bSBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBleGNoYW5nZS48c3BhbiBzdHlsZT0nY29sb3I6Ymx1ZSc+IDwvc3Bhbj48L3NwYW4+PC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+V2hlbiB0aGUgUHJvZ3JhbSBpcyBtYWRlIGF2YWlsYWJsZSBpbiBzb3VyY2UKLWNvZGUgZm9ybTo8L3NwYW4+IDwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+YSkKLWl0IG11c3QgYmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhpcyBBZ3JlZW1lbnQ7IGFuZCA8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5iKSBhCi1jb3B5IG9mIHRoaXMgQWdyZWVtZW50IG11c3QgYmUgaW5jbHVkZWQgd2l0aCBlYWNoIGNvcHkgb2YgdGhlIFByb2dyYW0uIDwvc3Bhbj48L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5Db250cmlidXRvcnMgbWF5IG5vdCByZW1vdmUgb3IgYWx0ZXIgYW55Ci1jb3B5cmlnaHQgbm90aWNlcyBjb250YWluZWQgd2l0aGluIHRoZSBQcm9ncmFtLiA8L3NwYW4+PC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+RWFjaCBDb250cmlidXRvciBtdXN0IGlkZW50aWZ5IGl0c2VsZiBhcyB0aGUKLW9yaWdpbmF0b3Igb2YgaXRzIENvbnRyaWJ1dGlvbiwgaWYgYW55LCBpbiBhIG1hbm5lciB0aGF0IHJlYXNvbmFibHkgYWxsb3dzCi1zdWJzZXF1ZW50IFJlY2lwaWVudHMgdG8gaWRlbnRpZnkgdGhlIG9yaWdpbmF0b3Igb2YgdGhlIENvbnRyaWJ1dGlvbi4gPC9zcGFuPjwvcD4KLQotPHA+PGI+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPjQuIENPTU1FUkNJQUwgRElTVFJJQlVUSU9OPC9zcGFuPjwvYj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Q29tbWVyY2lhbCBkaXN0cmlidXRvcnMgb2Ygc29mdHdhcmUgbWF5Ci1hY2NlcHQgY2VydGFpbiByZXNwb25zaWJpbGl0aWVzIHdpdGggcmVzcGVjdCB0byBlbmQgdXNlcnMsIGJ1c2luZXNzIHBhcnRuZXJzCi1hbmQgdGhlIGxpa2UuIFdoaWxlIHRoaXMgbGljZW5zZSBpcyBpbnRlbmRlZCB0byBmYWNpbGl0YXRlIHRoZSBjb21tZXJjaWFsIHVzZQotb2YgdGhlIFByb2dyYW0sIHRoZSBDb250cmlidXRvciB3aG8gaW5jbHVkZXMgdGhlIFByb2dyYW0gaW4gYSBjb21tZXJjaWFsCi1wcm9kdWN0IG9mZmVyaW5nIHNob3VsZCBkbyBzbyBpbiBhIG1hbm5lciB3aGljaCBkb2VzIG5vdCBjcmVhdGUgcG90ZW50aWFsCi1saWFiaWxpdHkgZm9yIG90aGVyIENvbnRyaWJ1dG9ycy4gVGhlcmVmb3JlLCBpZiBhIENvbnRyaWJ1dG9yIGluY2x1ZGVzIHRoZQotUHJvZ3JhbSBpbiBhIGNvbW1lcmNpYWwgcHJvZHVjdCBvZmZlcmluZywgc3VjaCBDb250cmlidXRvciAoJnF1b3Q7Q29tbWVyY2lhbAotQ29udHJpYnV0b3ImcXVvdDspIGhlcmVieSBhZ3JlZXMgdG8gZGVmZW5kIGFuZCBpbmRlbW5pZnkgZXZlcnkgb3RoZXIKLUNvbnRyaWJ1dG9yICgmcXVvdDtJbmRlbW5pZmllZCBDb250cmlidXRvciZxdW90OykgYWdhaW5zdCBhbnkgbG9zc2VzLCBkYW1hZ2VzIGFuZAotY29zdHMgKGNvbGxlY3RpdmVseSAmcXVvdDtMb3NzZXMmcXVvdDspIGFyaXNpbmcgZnJvbSBjbGFpbXMsIGxhd3N1aXRzIGFuZCBvdGhlcgotbGVnYWwgYWN0aW9ucyBicm91Z2h0IGJ5IGEgdGhpcmQgcGFydHkgYWdhaW5zdCB0aGUgSW5kZW1uaWZpZWQgQ29udHJpYnV0b3IgdG8KLXRoZSBleHRlbnQgY2F1c2VkIGJ5IHRoZSBhY3RzIG9yIG9taXNzaW9ucyBvZiBzdWNoIENvbW1lcmNpYWwgQ29udHJpYnV0b3IgaW4KLWNvbm5lY3Rpb24gd2l0aCBpdHMgZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9ncmFtIGluIGEgY29tbWVyY2lhbCBwcm9kdWN0Ci1vZmZlcmluZy4gVGhlIG9ibGlnYXRpb25zIGluIHRoaXMgc2VjdGlvbiBkbyBub3QgYXBwbHkgdG8gYW55IGNsYWltcyBvciBMb3NzZXMKLXJlbGF0aW5nIHRvIGFueSBhY3R1YWwgb3IgYWxsZWdlZCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgaW5mcmluZ2VtZW50LiBJbiBvcmRlcgotdG8gcXVhbGlmeSwgYW4gSW5kZW1uaWZpZWQgQ29udHJpYnV0b3IgbXVzdDogYSkgcHJvbXB0bHkgbm90aWZ5IHRoZSBDb21tZXJjaWFsCi1Db250cmlidXRvciBpbiB3cml0aW5nIG9mIHN1Y2ggY2xhaW0sIGFuZCBiKSBhbGxvdyB0aGUgQ29tbWVyY2lhbCBDb250cmlidXRvcgotdG8gY29udHJvbCwgYW5kIGNvb3BlcmF0ZSB3aXRoIHRoZSBDb21tZXJjaWFsIENvbnRyaWJ1dG9yIGluLCB0aGUgZGVmZW5zZSBhbmQKLWFueSByZWxhdGVkIHNldHRsZW1lbnQgbmVnb3RpYXRpb25zLiBUaGUgSW5kZW1uaWZpZWQgQ29udHJpYnV0b3IgbWF5IHBhcnRpY2lwYXRlCi1pbiBhbnkgc3VjaCBjbGFpbSBhdCBpdHMgb3duIGV4cGVuc2UuPC9zcGFuPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5Gb3IgZXhhbXBsZSwgYSBDb250cmlidXRvciBtaWdodCBpbmNsdWRlIHRoZQotUHJvZ3JhbSBpbiBhIGNvbW1lcmNpYWwgcHJvZHVjdCBvZmZlcmluZywgUHJvZHVjdCBYLiBUaGF0IENvbnRyaWJ1dG9yIGlzIHRoZW4gYQotQ29tbWVyY2lhbCBDb250cmlidXRvci4gSWYgdGhhdCBDb21tZXJjaWFsIENvbnRyaWJ1dG9yIHRoZW4gbWFrZXMgcGVyZm9ybWFuY2UKLWNsYWltcywgb3Igb2ZmZXJzIHdhcnJhbnRpZXMgcmVsYXRlZCB0byBQcm9kdWN0IFgsIHRob3NlIHBlcmZvcm1hbmNlIGNsYWltcyBhbmQKLXdhcnJhbnRpZXMgYXJlIHN1Y2ggQ29tbWVyY2lhbCBDb250cmlidXRvcidzIHJlc3BvbnNpYmlsaXR5IGFsb25lLiBVbmRlciB0aGlzCi1zZWN0aW9uLCB0aGUgQ29tbWVyY2lhbCBDb250cmlidXRvciB3b3VsZCBoYXZlIHRvIGRlZmVuZCBjbGFpbXMgYWdhaW5zdCB0aGUKLW90aGVyIENvbnRyaWJ1dG9ycyByZWxhdGVkIHRvIHRob3NlIHBlcmZvcm1hbmNlIGNsYWltcyBhbmQgd2FycmFudGllcywgYW5kIGlmIGEKLWNvdXJ0IHJlcXVpcmVzIGFueSBvdGhlciBDb250cmlidXRvciB0byBwYXkgYW55IGRhbWFnZXMgYXMgYSByZXN1bHQsIHRoZQotQ29tbWVyY2lhbCBDb250cmlidXRvciBtdXN0IHBheSB0aG9zZSBkYW1hZ2VzLjwvc3Bhbj4gPC9wPgotCi08cD48Yj48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+NS4gTk8gV0FSUkFOVFk8L3NwYW4+PC9iPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5FWENFUFQgQVMgRVhQUkVTU0xZIFNFVCBGT1JUSCBJTiBUSElTCi1BR1JFRU1FTlQsIFRIRSBQUk9HUkFNIElTIFBST1ZJREVEIE9OIEFOICZxdW90O0FTIElTJnF1b3Q7IEJBU0lTLCBXSVRIT1VUCi1XQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQgSU5DTFVESU5HLAotV0lUSE9VVCBMSU1JVEFUSU9OLCBBTlkgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIFRJVExFLCBOT04tSU5GUklOR0VNRU5ULAotTUVSQ0hBTlRBQklMSVRZIE9SIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBFYWNoIFJlY2lwaWVudCBpcyBzb2xlbHkKLXJlc3BvbnNpYmxlIGZvciBkZXRlcm1pbmluZyB0aGUgYXBwcm9wcmlhdGVuZXNzIG9mIHVzaW5nIGFuZCBkaXN0cmlidXRpbmcgdGhlCi1Qcm9ncmFtIGFuZCBhc3N1bWVzIGFsbCByaXNrcyBhc3NvY2lhdGVkIHdpdGggaXRzIGV4ZXJjaXNlIG9mIHJpZ2h0cyB1bmRlciB0aGlzCi1BZ3JlZW1lbnQgLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIHRoZSByaXNrcyBhbmQgY29zdHMgb2YgcHJvZ3JhbSBlcnJvcnMsCi1jb21wbGlhbmNlIHdpdGggYXBwbGljYWJsZSBsYXdzLCBkYW1hZ2UgdG8gb3IgbG9zcyBvZiBkYXRhLCBwcm9ncmFtcyBvcgotZXF1aXBtZW50LCBhbmQgdW5hdmFpbGFiaWxpdHkgb3IgaW50ZXJydXB0aW9uIG9mIG9wZXJhdGlvbnMuIDwvc3Bhbj48L3A+Ci0KLTxwPjxiPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz42LiBESVNDTEFJTUVSIE9GIExJQUJJTElUWTwvc3Bhbj48L2I+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkVYQ0VQVCBBUyBFWFBSRVNTTFkgU0VUIEZPUlRIIElOIFRISVMKLUFHUkVFTUVOVCwgTkVJVEhFUiBSRUNJUElFTlQgTk9SIEFOWSBDT05UUklCVVRPUlMgU0hBTEwgSEFWRSBBTlkgTElBQklMSVRZIEZPUgotQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0oSU5DTFVESU5HIFdJVEhPVVQgTElNSVRBVElPTiBMT1NUIFBST0ZJVFMpLCBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKLU5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT1IgRElTVFJJQlVUSU9OIE9GCi1USEUgUFJPR1JBTSBPUiBUSEUgRVhFUkNJU0UgT0YgQU5ZIFJJR0hUUyBHUkFOVEVEIEhFUkVVTkRFUiwgRVZFTiBJRiBBRFZJU0VEIE9GCi1USEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLjwvc3Bhbj4gPC9wPgotCi08cD48Yj48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Ny4gR0VORVJBTDwvc3Bhbj48L2I+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPklmIGFueSBwcm92aXNpb24gb2YgdGhpcyBBZ3JlZW1lbnQgaXMgaW52YWxpZAotb3IgdW5lbmZvcmNlYWJsZSB1bmRlciBhcHBsaWNhYmxlIGxhdywgaXQgc2hhbGwgbm90IGFmZmVjdCB0aGUgdmFsaWRpdHkgb3IKLWVuZm9yY2VhYmlsaXR5IG9mIHRoZSByZW1haW5kZXIgb2YgdGhlIHRlcm1zIG9mIHRoaXMgQWdyZWVtZW50LCBhbmQgd2l0aG91dAotZnVydGhlciBhY3Rpb24gYnkgdGhlIHBhcnRpZXMgaGVyZXRvLCBzdWNoIHByb3Zpc2lvbiBzaGFsbCBiZSByZWZvcm1lZCB0byB0aGUKLW1pbmltdW0gZXh0ZW50IG5lY2Vzc2FyeSB0byBtYWtlIHN1Y2ggcHJvdmlzaW9uIHZhbGlkIGFuZCBlbmZvcmNlYWJsZS48L3NwYW4+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPklmIFJlY2lwaWVudCBpbnN0aXR1dGVzIHBhdGVudCBsaXRpZ2F0aW9uCi1hZ2FpbnN0IGFueSBlbnRpdHkgKGluY2x1ZGluZyBhIGNyb3NzLWNsYWltIG9yIGNvdW50ZXJjbGFpbSBpbiBhIGxhd3N1aXQpCi1hbGxlZ2luZyB0aGF0IHRoZSBQcm9ncmFtIGl0c2VsZiAoZXhjbHVkaW5nIGNvbWJpbmF0aW9ucyBvZiB0aGUgUHJvZ3JhbSB3aXRoCi1vdGhlciBzb2Z0d2FyZSBvciBoYXJkd2FyZSkgaW5mcmluZ2VzIHN1Y2ggUmVjaXBpZW50J3MgcGF0ZW50KHMpLCB0aGVuIHN1Y2gKLVJlY2lwaWVudCdzIHJpZ2h0cyBncmFudGVkIHVuZGVyIFNlY3Rpb24gMihiKSBzaGFsbCB0ZXJtaW5hdGUgYXMgb2YgdGhlIGRhdGUKLXN1Y2ggbGl0aWdhdGlvbiBpcyBmaWxlZC4gPC9zcGFuPjwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkFsbCBSZWNpcGllbnQncyByaWdodHMgdW5kZXIgdGhpcyBBZ3JlZW1lbnQKLXNoYWxsIHRlcm1pbmF0ZSBpZiBpdCBmYWlscyB0byBjb21wbHkgd2l0aCBhbnkgb2YgdGhlIG1hdGVyaWFsIHRlcm1zIG9yCi1jb25kaXRpb25zIG9mIHRoaXMgQWdyZWVtZW50IGFuZCBkb2VzIG5vdCBjdXJlIHN1Y2ggZmFpbHVyZSBpbiBhIHJlYXNvbmFibGUKLXBlcmlvZCBvZiB0aW1lIGFmdGVyIGJlY29taW5nIGF3YXJlIG9mIHN1Y2ggbm9uY29tcGxpYW5jZS4gSWYgYWxsIFJlY2lwaWVudCdzCi1yaWdodHMgdW5kZXIgdGhpcyBBZ3JlZW1lbnQgdGVybWluYXRlLCBSZWNpcGllbnQgYWdyZWVzIHRvIGNlYXNlIHVzZSBhbmQKLWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZ3JhbSBhcyBzb29uIGFzIHJlYXNvbmFibHkgcHJhY3RpY2FibGUuIEhvd2V2ZXIsCi1SZWNpcGllbnQncyBvYmxpZ2F0aW9ucyB1bmRlciB0aGlzIEFncmVlbWVudCBhbmQgYW55IGxpY2Vuc2VzIGdyYW50ZWQgYnkKLVJlY2lwaWVudCByZWxhdGluZyB0byB0aGUgUHJvZ3JhbSBzaGFsbCBjb250aW51ZSBhbmQgc3Vydml2ZS4gPC9zcGFuPjwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkV2ZXJ5b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlCi1jb3BpZXMgb2YgdGhpcyBBZ3JlZW1lbnQsIGJ1dCBpbiBvcmRlciB0byBhdm9pZCBpbmNvbnNpc3RlbmN5IHRoZSBBZ3JlZW1lbnQgaXMKLWNvcHlyaWdodGVkIGFuZCBtYXkgb25seSBiZSBtb2RpZmllZCBpbiB0aGUgZm9sbG93aW5nIG1hbm5lci4gVGhlIEFncmVlbWVudAotU3Rld2FyZCByZXNlcnZlcyB0aGUgcmlnaHQgdG8gcHVibGlzaCBuZXcgdmVyc2lvbnMgKGluY2x1ZGluZyByZXZpc2lvbnMpIG9mCi10aGlzIEFncmVlbWVudCBmcm9tIHRpbWUgdG8gdGltZS4gTm8gb25lIG90aGVyIHRoYW4gdGhlIEFncmVlbWVudCBTdGV3YXJkIGhhcwotdGhlIHJpZ2h0IHRvIG1vZGlmeSB0aGlzIEFncmVlbWVudC4gVGhlIEVjbGlwc2UgRm91bmRhdGlvbiBpcyB0aGUgaW5pdGlhbAotQWdyZWVtZW50IFN0ZXdhcmQuIFRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWF5IGFzc2lnbiB0aGUgcmVzcG9uc2liaWxpdHkgdG8KLXNlcnZlIGFzIHRoZSBBZ3JlZW1lbnQgU3Rld2FyZCB0byBhIHN1aXRhYmxlIHNlcGFyYXRlIGVudGl0eS4gRWFjaCBuZXcgdmVyc2lvbgotb2YgdGhlIEFncmVlbWVudCB3aWxsIGJlIGdpdmVuIGEgZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBudW1iZXIuIFRoZSBQcm9ncmFtCi0oaW5jbHVkaW5nIENvbnRyaWJ1dGlvbnMpIG1heSBhbHdheXMgYmUgZGlzdHJpYnV0ZWQgc3ViamVjdCB0byB0aGUgdmVyc2lvbiBvZgotdGhlIEFncmVlbWVudCB1bmRlciB3aGljaCBpdCB3YXMgcmVjZWl2ZWQuIEluIGFkZGl0aW9uLCBhZnRlciBhIG5ldyB2ZXJzaW9uIG9mCi10aGUgQWdyZWVtZW50IGlzIHB1Ymxpc2hlZCwgQ29udHJpYnV0b3IgbWF5IGVsZWN0IHRvIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0KLShpbmNsdWRpbmcgaXRzIENvbnRyaWJ1dGlvbnMpIHVuZGVyIHRoZSBuZXcgdmVyc2lvbi4gRXhjZXB0IGFzIGV4cHJlc3NseSBzdGF0ZWQKLWluIFNlY3Rpb25zIDIoYSkgYW5kIDIoYikgYWJvdmUsIFJlY2lwaWVudCByZWNlaXZlcyBubyByaWdodHMgb3IgbGljZW5zZXMgdG8KLXRoZSBpbnRlbGxlY3R1YWwgcHJvcGVydHkgb2YgYW55IENvbnRyaWJ1dG9yIHVuZGVyIHRoaXMgQWdyZWVtZW50LCB3aGV0aGVyCi1leHByZXNzbHksIGJ5IGltcGxpY2F0aW9uLCBlc3RvcHBlbCBvciBvdGhlcndpc2UuIEFsbCByaWdodHMgaW4gdGhlIFByb2dyYW0gbm90Ci1leHByZXNzbHkgZ3JhbnRlZCB1bmRlciB0aGlzIEFncmVlbWVudCBhcmUgcmVzZXJ2ZWQuPC9zcGFuPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5UaGlzIEFncmVlbWVudCBpcyBnb3Zlcm5lZCBieSB0aGUgbGF3cyBvZiB0aGUKLVN0YXRlIG9mIE5ldyBZb3JrIGFuZCB0aGUgaW50ZWxsZWN0dWFsIHByb3BlcnR5IGxhd3Mgb2YgdGhlIFVuaXRlZCBTdGF0ZXMgb2YKLUFtZXJpY2EuIE5vIHBhcnR5IHRvIHRoaXMgQWdyZWVtZW50IHdpbGwgYnJpbmcgYSBsZWdhbCBhY3Rpb24gdW5kZXIgdGhpcwotQWdyZWVtZW50IG1vcmUgdGhhbiBvbmUgeWVhciBhZnRlciB0aGUgY2F1c2Ugb2YgYWN0aW9uIGFyb3NlLiBFYWNoIHBhcnR5IHdhaXZlcwotaXRzIHJpZ2h0cyB0byBhIGp1cnkgdHJpYWwgaW4gYW55IHJlc3VsdGluZyBsaXRpZ2F0aW9uLjwvc3Bhbj4gPC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWw+PCFbaWYgIXN1cHBvcnRFbXB0eVBhcmFzXT4mbmJzcDs8IVtlbmRpZl0+PG86cD48L286cD48L3A+Ci0KLTwvZGl2PgotCi08L2JvZHk+Ci0KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLmlibS5ibHVlZ2VuZS1mZWF0dXJlL2ZlYXR1cmUucHJvcGVydGllcyBiL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0uaWJtLmJsdWVnZW5lLWZlYXR1cmUvZmVhdHVyZS5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NWIwOTkzLi4wMDAwMDAwCi0tLSBhL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0uaWJtLmJsdWVnZW5lLWZlYXR1cmUvZmVhdHVyZS5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMTQ4ICswLDAgQEAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDIwMDUgVGhlIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4gCi0jIFRoaXMgbWF0ZXJpYWwgd2FzIHByb2R1Y2VkIHVuZGVyIFUuUy4gR292ZXJubWVudCBjb250cmFjdCBXLTc0MDUtRU5HLTM2IAotIyBmb3IgTG9zIEFsYW1vcyBOYXRpb25hbCBMYWJvcmF0b3J5LCB3aGljaCBpcyBvcGVyYXRlZCBieSB0aGUgVW5pdmVyc2l0eSAKLSMgb2YgQ2FsaWZvcm5pYSBmb3IgdGhlIFUuUy4gRGVwYXJ0bWVudCBvZiBFbmVyZ3kuIFRoZSBVLlMuIEdvdmVybm1lbnQgaGFzIAotIyByaWdodHMgdG8gdXNlLCByZXByb2R1Y2UsIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUuIE5FSVRIRVIgVEhFIAotIyBHT1ZFUk5NRU5UIE5PUiBUSEUgVU5JVkVSU0lUWSBNQUtFUyBBTlkgV0FSUkFOVFksIEVYUFJFU1MgT1IgSU1QTElFRCwgT1IgCi0jIEFTU1VNRVMgQU5ZIExJQUJJTElUWSBGT1IgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLiBJZiBzb2Z0d2FyZSBpcyBtb2RpZmllZCAKLSMgdG8gcHJvZHVjZSBkZXJpdmF0aXZlIHdvcmtzLCBzdWNoIG1vZGlmaWVkIHNvZnR3YXJlIHNob3VsZCBiZSBjbGVhcmx5IG1hcmtlZCwgCi0jIHNvIGFzIG5vdCB0byBjb25mdXNlIGl0IHdpdGggdGhlIHZlcnNpb24gYXZhaWxhYmxlIGZyb20gTEFOTC4KLSMgCi0jIEFkZGl0aW9uYWxseSwgdGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAKLSMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0jIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jIAotIyBMQS1DQyAwNC0xMTUKLSMKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0KLSMgImZlYXR1cmVOYW1lIiBwcm9wZXJ0eSAtIG5hbWUgb2YgdGhlIGZlYXR1cmUKLWZlYXR1cmVOYW1lPVBUUCBTdXBwb3J0IEZvciBCbHVlIEdlbmUKLQotIyAicHJvdmlkZXJOYW1lIiBwcm9wZXJ0eSAtIG5hbWUgb2YgdGhlIGNvbXBhbnkgdGhhdCBwcm92aWRlcyB0aGUgZmVhdHVyZQotcHJvdmlkZXJOYW1lPUVjbGlwc2Uub3JnCi0KLSMgInVwZGF0ZVNpdGVOYW1lIiBwcm9wZXJ0eSAtIGxhYmVsIGZvciB0aGUgdXBkYXRlIHNpdGUKLXVwZGF0ZVNpdGVOYW1lPUVjbGlwc2UgUFRQIFVwZGF0ZSBTaXRlCi0KLSMgImRlc2NyaXB0aW9uIiBwcm9wZXJ0eSAtIGRlc2NyaXB0aW9uIG9mIHRoZSBmZWF0dXJlCi1kZXNjcmlwdGlvbj1BZGRzIHN1cHBvcnQgZm9yIHRoZSBCbHVlIEdlbmUgc3lzdGVtCi0KLSMgY29weXJpZ2h0Ci1jb3B5cmlnaHQ9XAotQ29weXJpZ2h0IChjKSAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLlxuXAotQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFsc1xuXAotYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wXG5cCi13aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdFxuXAotaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWxcblwKLVxuXAotQ29udHJpYnV0b3JzOlxuXAotSUJNIENvcnBvcmF0aW9uIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uXG4KLQotIyAibGljZW5zZVVSTCIgcHJvcGVydHkgLSBVUkwgb2YgdGhlICJGZWF0dXJlIExpY2Vuc2UiCi0jIGRvIG5vdCB0cmFuc2xhdGUgdmFsdWUgLSBqdXN0IGNoYW5nZSB0byBwb2ludCB0byBhIGxvY2FsZS1zcGVjaWZpYyBIVE1MIHBhZ2UKLWxpY2Vuc2VVUkw9bGljZW5zZS5odG1sCi0KLSMgImxpY2Vuc2UiIHByb3BlcnR5IC0gdGV4dCBvZiB0aGUgIkZlYXR1cmUgVXBkYXRlIExpY2Vuc2UiCi0jIHNob3VsZCBiZSBwbGFpbiB0ZXh0IHZlcnNpb24gb2YgbGljZW5zZSBhZ3JlZW1lbnQgcG9pbnRlZCB0byBiZSAibGljZW5zZVVSTCIKLWxpY2Vuc2U9XAotRUNMSVBTRSBGT1VOREFUSU9OIFNPRlRXQVJFIFVTRVIgQUdSRUVNRU5UXG5cCi1NYXJjaCAxNywgMjAwNVxuXAotXG5cCi1Vc2FnZSBPZiBDb250ZW50XG5cCi1cblwKLVRIRSBFQ0xJUFNFIEZPVU5EQVRJT04gTUFLRVMgQVZBSUxBQkxFIFNPRlRXQVJFLCBET0NVTUVOVEFUSU9OLCBJTkZPUk1BVElPTiBBTkQvT1JcblwKLU9USEVSIE1BVEVSSUFMUyBGT1IgT1BFTiBTT1VSQ0UgUFJPSkVDVFMgKENPTExFQ1RJVkVMWSAiQ09OVEVOVCIpLlxuXAotVVNFIE9GIFRIRSBDT05URU5UIElTIEdPVkVSTkVEIEJZIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBUSElTXG5cCi1BR1JFRU1FTlQgQU5EL09SIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBMSUNFTlNFIEFHUkVFTUVOVFMgT1JcblwKLU5PVElDRVMgSU5ESUNBVEVEIE9SIFJFRkVSRU5DRUQgQkVMT1cuIEJZIFVTSU5HIFRIRSBDT05URU5ULCBZT1VcblwKLUFHUkVFIFRIQVQgWU9VUiBVU0UgT0YgVEhFIENPTlRFTlQgSVMgR09WRVJORUQgQlkgVEhJUyBBR1JFRU1FTlRcblwKLUFORC9PUiBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgQU5ZIEFQUExJQ0FCTEUgTElDRU5TRSBBR1JFRU1FTlRTXG5cCi1PUiBOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEIEJFTE9XLiBJRiBZT1UgRE8gTk9UIEFHUkVFIFRPIFRIRVxuXAotVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgVEhJUyBBR1JFRU1FTlQgQU5EIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OU1xuXAotT0YgQU5ZIEFQUExJQ0FCTEUgTElDRU5TRSBBR1JFRU1FTlRTIE9SIE5PVElDRVMgSU5ESUNBVEVEIE9SIFJFRkVSRU5DRURcblwKLUJFTE9XLCBUSEVOIFlPVSBNQVkgTk9UIFVTRSBUSEUgQ09OVEVOVC5cblwKLVxuXAotQXBwbGljYWJsZSBMaWNlbnNlc1xuXAotXG5cCi1Vbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCwgYWxsIENvbnRlbnQgbWFkZSBhdmFpbGFibGUgYnkgdGhlIEVjbGlwc2UgRm91bmRhdGlvblxuXAotaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZSBQdWJsaWNcblwKLUxpY2Vuc2UgVmVyc2lvbiAxLjAgKCJFUEwiKS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMgcHJvdmlkZWQgd2l0aCB0aGlzXG5cCi1Db250ZW50IGFuZCBpcyBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbC5cblwKLUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAiUHJvZ3JhbSIgd2lsbCBtZWFuIHRoZSBDb250ZW50LlxuXAotXG5cCi1Db250ZW50IGluY2x1ZGVzLCBidXQgaXMgbm90IGxpbWl0ZWQgdG8sIHNvdXJjZSBjb2RlLCBvYmplY3QgY29kZSxcblwKLWRvY3VtZW50YXRpb24gYW5kIG90aGVyIGZpbGVzIG1haW50YWluZWQgaW4gdGhlIEVjbGlwc2Uub3JnIENWU1xuXAotcmVwb3NpdG9yeSAoIlJlcG9zaXRvcnkiKSBpbiBDVlMgbW9kdWxlcyAoIk1vZHVsZXMiKSBhbmQgbWFkZSBhdmFpbGFibGVcblwKLWFzIGRvd25sb2FkYWJsZSBhcmNoaXZlcyAoIkRvd25sb2FkcyIpLlxuXAotXG5cCi0gICAtIENvbnRlbnQgbWF5IGJlIHN0cnVjdHVyZWQgYW5kIHBhY2thZ2VkIGludG8gbW9kdWxlcyB0byBmYWNpbGl0YXRlIGRlbGl2ZXJpbmcsXG5cCi0gICAgIGV4dGVuZGluZywgYW5kIHVwZ3JhZGluZyB0aGUgQ29udGVudC4gVHlwaWNhbCBtb2R1bGVzIG1heSBpbmNsdWRlIHBsdWctaW5zICgiUGx1Zy1pbnMiKSxcblwKLSAgICAgcGx1Zy1pbiBmcmFnbWVudHMgKCJGcmFnbWVudHMiKSwgYW5kIGZlYXR1cmVzICgiRmVhdHVyZXMiKS5cblwKLSAgIC0gRWFjaCBQbHVnLWluIG9yIEZyYWdtZW50IG1heSBiZSBwYWNrYWdlZCBhcyBhIHN1Yi1kaXJlY3Rvcnkgb3IgSkFSIChKYXZhPyBBUmNoaXZlKVxuXAotICAgICBpbiBhIGRpcmVjdG9yeSBuYW1lZCAicGx1Z2lucyIuXG5cCi0gICAtIEEgRmVhdHVyZSBpcyBhIGJ1bmRsZSBvZiBvbmUgb3IgbW9yZSBQbHVnLWlucyBhbmQvb3IgRnJhZ21lbnRzIGFuZCBhc3NvY2lhdGVkIG1hdGVyaWFsLlxuXAotICAgICBFYWNoIEZlYXR1cmUgbWF5IGJlIHBhY2thZ2VkIGFzIGEgc3ViLWRpcmVjdG9yeSBpbiBhIGRpcmVjdG9yeSBuYW1lZCAiZmVhdHVyZXMiLlxuXAotICAgICBXaXRoaW4gYSBGZWF0dXJlLCBmaWxlcyBuYW1lZCAiZmVhdHVyZS54bWwiIG1heSBjb250YWluIGEgbGlzdCBvZiB0aGUgbmFtZXMgYW5kIHZlcnNpb25cblwKLSAgICAgbnVtYmVycyBvZiB0aGUgUGx1Zy1pbnMgYW5kL29yIEZyYWdtZW50cyBhc3NvY2lhdGVkIHdpdGggdGhhdCBGZWF0dXJlLlxuXAotICAgLSBGZWF0dXJlcyBtYXkgYWxzbyBpbmNsdWRlIG90aGVyIEZlYXR1cmVzICgiSW5jbHVkZWQgRmVhdHVyZXMiKS4gV2l0aGluIGEgRmVhdHVyZSwgZmlsZXNcblwKLSAgICAgbmFtZWQgImZlYXR1cmUueG1sIiBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uIG51bWJlcnMgb2YgSW5jbHVkZWQgRmVhdHVyZXMuXG5cCi1cblwKLUZlYXR1cmVzIG1heSBhbHNvIGluY2x1ZGUgb3RoZXIgRmVhdHVyZXMgKCJJbmNsdWRlZCBGZWF0dXJlcyIpLiBGaWxlcyBuYW1lZFxuXAotImZlYXR1cmUueG1sIiBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uIG51bWJlcnMgb2ZcblwKLUluY2x1ZGVkIEZlYXR1cmVzLlxuXAotXG5cCi1UaGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZ292ZXJuaW5nIFBsdWctaW5zIGFuZCBGcmFnbWVudHMgc2hvdWxkIGJlXG5cCi1jb250YWluZWQgaW4gZmlsZXMgbmFtZWQgImFib3V0Lmh0bWwiICgiQWJvdXRzIikuIFRoZSB0ZXJtcyBhbmRcblwKLWNvbmRpdGlvbnMgZ292ZXJuaW5nIEZlYXR1cmVzIGFuZCBJbmNsdWRlZCBGZWF0dXJlcyBzaG91bGQgYmUgY29udGFpbmVkXG5cCi1pbiBmaWxlcyBuYW1lZCAibGljZW5zZS5odG1sIiAoIkZlYXR1cmUgTGljZW5zZXMiKS4gQWJvdXRzIGFuZCBGZWF0dXJlXG5cCi1MaWNlbnNlcyBtYXkgYmUgbG9jYXRlZCBpbiBhbnkgZGlyZWN0b3J5IG9mIGEgRG93bmxvYWQgb3IgTW9kdWxlXG5cCi1pbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0byB0aGUgZm9sbG93aW5nIGxvY2F0aW9uczpcblwKLVxuXAotICAgLSBUaGUgdG9wLWxldmVsIChyb290KSBkaXJlY3RvcnlcblwKLSAgIC0gUGx1Zy1pbiBhbmQgRnJhZ21lbnQgZGlyZWN0b3JpZXNcblwKLSAgIC0gSW5zaWRlIFBsdWctaW5zIGFuZCBGcmFnbWVudHMgcGFja2FnZWQgYXMgSkFSc1xuXAotICAgLSBTdWItZGlyZWN0b3JpZXMgb2YgdGhlIGRpcmVjdG9yeSBuYW1lZCAic3JjIiBvZiBjZXJ0YWluIFBsdWctaW5zXG5cCi0gICAtIEZlYXR1cmUgZGlyZWN0b3JpZXNcblwKLVxuXAotTm90ZTogaWYgYSBGZWF0dXJlIG1hZGUgYXZhaWxhYmxlIGJ5IHRoZSBFY2xpcHNlIEZvdW5kYXRpb24gaXMgaW5zdGFsbGVkIHVzaW5nIHRoZVxuXAotRWNsaXBzZSBVcGRhdGUgTWFuYWdlciwgeW91IG11c3QgYWdyZWUgdG8gYSBsaWNlbnNlICgiRmVhdHVyZSBVcGRhdGVcblwKLUxpY2Vuc2UiKSBkdXJpbmcgdGhlIGluc3RhbGxhdGlvbiBwcm9jZXNzLiBJZiB0aGUgRmVhdHVyZSBjb250YWluc1xuXAotSW5jbHVkZWQgRmVhdHVyZXMsIHRoZSBGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlIHNob3VsZCBlaXRoZXIgcHJvdmlkZSB5b3VcblwKLXdpdGggdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybmluZyB0aGUgSW5jbHVkZWQgRmVhdHVyZXMgb3IgaW5mb3JtXG5cCi15b3Ugd2hlcmUgeW91IGNhbiBsb2NhdGUgdGhlbS4gRmVhdHVyZSBVcGRhdGUgTGljZW5zZXMgbWF5IGJlIGZvdW5kIGluXG5cCi10aGUgImxpY2Vuc2UiIHByb3BlcnR5IG9mIGZpbGVzIG5hbWVkICJmZWF0dXJlLnByb3BlcnRpZXMiLiBTdWNoIEFib3V0cyxcblwKLUZlYXR1cmUgTGljZW5zZXMgYW5kIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VzIGNvbnRhaW4gdGhlIHRlcm1zIGFuZFxuXAotY29uZGl0aW9ucyAob3IgcmVmZXJlbmNlcyB0byBzdWNoIHRlcm1zIGFuZCBjb25kaXRpb25zKSB0aGF0IGdvdmVybiB5b3VyXG5cCi11c2Ugb2YgdGhlIGFzc29jaWF0ZWQgQ29udGVudCBpbiB0aGF0IGRpcmVjdG9yeS5cblwKLVxuXAotVEhFIEFCT1VUUywgRkVBVFVSRSBMSUNFTlNFUyBBTkQgRkVBVFVSRSBVUERBVEUgTElDRU5TRVMgTUFZIFJFRkVSXG5cCi1UTyBUSEUgRVBMIE9SIE9USEVSIExJQ0VOU0UgQUdSRUVNRU5UUywgTk9USUNFUyBPUiBURVJNUyBBTkQgQ09ORElUSU9OUy5cblwKLVNPTUUgT0YgVEhFU0UgT1RIRVIgTElDRU5TRSBBR1JFRU1FTlRTIE1BWSBJTkNMVURFIChCVVQgQVJFIE5PVCBMSU1JVEVEIFRPKTpcblwKLVxuXAotICAgIC0gQ29tbW9uIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wIChhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9jcGwtdjEwLmh0bWwpXG5cCi0gICAgLSBBcGFjaGUgU29mdHdhcmUgTGljZW5zZSAxLjEgKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRSlcblwKLSAgICAtIEFwYWNoZSBTb2Z0d2FyZSBMaWNlbnNlIDIuMCAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMClcblwKLSAgICAtIElCTSBQdWJsaWMgTGljZW5zZSAxLjAgKGF2YWlsYWJsZSBhdCBodHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vZGV2ZWxvcGVyd29ya3Mvb3BlbnNvdXJjZS9saWNlbnNlMTAuaHRtbClcblwKLSAgICAtIE1ldHJvIExpbmsgUHVibGljIExpY2Vuc2UgMS4wMCAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vcGVubW90aWYvc3VwcG9ydGVycy9tZXRyb2xpbmsvbGljZW5zZS5odG1sKVxuXAotICAgIC0gTW96aWxsYSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMSAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cubW96aWxsYS5vcmcvTVBML01QTC0xLjEuaHRtbClcblwKLVxuXAotSVQgSVMgWU9VUiBPQkxJR0FUSU9OIFRPIFJFQUQgQU5EIEFDQ0VQVCBBTEwgU1VDSCBURVJNUyBBTkQgQ09ORElUSU9OUyBQUklPUlxuXAotVE8gVVNFIE9GIFRIRSBDT05URU5ULiBJZiBubyBBYm91dCwgRmVhdHVyZSBMaWNlbnNlIG9yIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VcblwKLWlzIHByb3ZpZGVkLCBwbGVhc2UgY29udGFjdCB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIHRvIGRldGVybWluZSB3aGF0IHRlcm1zIGFuZCBjb25kaXRpb25zXG5cCi1nb3Zlcm4gdGhhdCBwYXJ0aWN1bGFyIENvbnRlbnQuXG5cCi1cblwKLUNyeXB0b2dyYXBoeVxuXAotXG5cCi1Db250ZW50IG1heSBjb250YWluIGVuY3J5cHRpb24gc29mdHdhcmUuIFRoZSBjb3VudHJ5IGluIHdoaWNoIHlvdSBhcmVcblwKLWN1cnJlbnRseSBtYXkgaGF2ZSByZXN0cmljdGlvbnMgb24gdGhlIGltcG9ydCwgcG9zc2Vzc2lvbiwgYW5kIHVzZSxcblwKLWFuZC9vciByZS1leHBvcnQgdG8gYW5vdGhlciBjb3VudHJ5LCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLiBCRUZPUkVcblwKLXVzaW5nIGFueSBlbmNyeXB0aW9uIHNvZnR3YXJlLCBwbGVhc2UgY2hlY2sgdGhlIGNvdW50cnkncyBsYXdzLFxuXAotcmVndWxhdGlvbnMgYW5kIHBvbGljaWVzIGNvbmNlcm5pbmcgdGhlIGltcG9ydCwgcG9zc2Vzc2lvbiwgb3IgdXNlLFxuXAotYW5kIHJlLWV4cG9ydCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLCB0byBzZWUgaWYgdGhpcyBpcyBwZXJtaXR0ZWQuXG5cCi1cblwKLUphdmEgYW5kIGFsbCBKYXZhLWJhc2VkIHRyYWRlbWFya3MgYXJlIHRyYWRlbWFya3Mgb2YgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBpbiB0aGUgVW5pdGVkIFN0YXRlcywgb3RoZXIgY291bnRyaWVzLCBvciBib3RoLlxuCi0jIyMjIyMjIyMjIyBlbmQgb2YgbGljZW5zZSBwcm9wZXJ0eSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKZGlmZiAtLWdpdCBhL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0uaWJtLmJsdWVnZW5lLWZlYXR1cmUvZmVhdHVyZS54bWwgYi9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLmlibS5ibHVlZ2VuZS1mZWF0dXJlL2ZlYXR1cmUueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ODA2OTU5Li4wMDAwMDAwCi0tLSBhL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0uaWJtLmJsdWVnZW5lLWZlYXR1cmUvZmVhdHVyZS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPGZlYXR1cmUKLSAgICAgIGlkPSJvcmcuZWNsaXBzZS5wdHAucm0uaWJtLmJsdWVnZW5lIgotICAgICAgbGFiZWw9IiVmZWF0dXJlTmFtZSIKLSAgICAgIHZlcnNpb249IjIuMC4wLnF1YWxpZmllciIKLSAgICAgIHByb3ZpZGVyLW5hbWU9IiVwcm92aWRlck5hbWUiCi0gICAgICBpbWFnZT0iZWNsaXBzZV91cGRhdGVfMTIwLmpwZyI+Ci0KLSAgIDxkZXNjcmlwdGlvbiB1cmw9Imh0dHA6Ly9lY2xpcHNlLm9yZy9wdHAiPgotICAgICAgJWRlc2NyaXB0aW9uCi0gICA8L2Rlc2NyaXB0aW9uPgotCi0gICA8Y29weXJpZ2h0PgotICAgICAgJWNvcHlyaWdodAotICAgPC9jb3B5cmlnaHQ+Ci0KLSAgIDxsaWNlbnNlIHVybD0iJWxpY2Vuc2VVUkwiPgotICAgICAgJWxpY2Vuc2UKLSAgIDwvbGljZW5zZT4KLQotICAgPHJlcXVpcmVzPgotICAgICAgPGltcG9ydCBwbHVnaW49Im9yZy5lY2xpcHNlLmNvcmUucnVudGltZSIvPgotICAgICAgPGltcG9ydCBwbHVnaW49Im9yZy5lY2xpcHNlLnNlYXJjaCIvPgotICAgICAgPGltcG9ydCBwbHVnaW49Im9yZy5lY2xpcHNlLnVpIi8+Ci0gICAgICA8aW1wb3J0IHBsdWdpbj0ib3JnLmVjbGlwc2UuZGVidWcuY29yZSIvPgotICAgICAgPGltcG9ydCBwbHVnaW49Im9yZy5lY2xpcHNlLnB0cC5wcm94eS5wcm90b2NvbCIvPgotICAgICAgPGltcG9ydCBwbHVnaW49Im9yZy5lY2xpcHNlLnB0cC5jb3JlIi8+Ci0gICAgICA8aW1wb3J0IHBsdWdpbj0ib3JnLmVjbGlwc2UucHRwLnJlbW90ZSIvPgotICAgICAgPGltcG9ydCBwbHVnaW49Im9yZy5lY2xpcHNlLnB0cC51aSIvPgotICAgICAgPGltcG9ydCBwbHVnaW49Im9yZy5lY2xpcHNlLnB0cC5sYXVuY2giLz4KLSAgIDwvcmVxdWlyZXM+Ci0KLSAgIDxwbHVnaW4KLSAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wdHAucm0uaWJtLmJsdWVnZW5lLmNvcmUiCi0gICAgICAgICBkb3dubG9hZC1zaXplPSIwIgotICAgICAgICAgaW5zdGFsbC1zaXplPSIwIgotICAgICAgICAgdmVyc2lvbj0iMC4wLjAiCi0gICAgICAgICB1bnBhY2s9ImZhbHNlIi8+Ci0KLSAgIDxwbHVnaW4KLSAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wdHAucm0uaWJtLmJsdWVnZW5lLnByb3h5IgotICAgICAgICAgZG93bmxvYWQtc2l6ZT0iMCIKLSAgICAgICAgIGluc3RhbGwtc2l6ZT0iMCIKLSAgICAgICAgIHZlcnNpb249IjAuMC4wIgotICAgICAgICAgdW5wYWNrPSJmYWxzZSIvPgotCi0gICA8cGx1Z2luCi0gICAgICAgICBpZD0ib3JnLmVjbGlwc2UucHRwLnJtLmlibS5ibHVlZ2VuZS51aSIKLSAgICAgICAgIGRvd25sb2FkLXNpemU9IjAiCi0gICAgICAgICBpbnN0YWxsLXNpemU9IjAiCi0gICAgICAgICB2ZXJzaW9uPSIwLjAuMCIKLSAgICAgICAgIHVucGFjaz0iZmFsc2UiLz4KLQotPC9mZWF0dXJlPgpkaWZmIC0tZ2l0IGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5ybS5pYm0uYmx1ZWdlbmUtZmVhdHVyZS9saWNlbnNlLmh0bWwgYi9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLmlibS5ibHVlZ2VuZS1mZWF0dXJlL2xpY2Vuc2UuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzZhZjk2Ni4uMDAwMDAwMAotLS0gYS9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLmlibS5ibHVlZ2VuZS1mZWF0dXJlL2xpY2Vuc2UuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAvL0VOIj4KLTxodG1sPgotPGhlYWQ+Ci08bWV0YSBodHRwLWVxdWl2PUNvbnRlbnQtVHlwZSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Ci08dGl0bGU+RWNsaXBzZS5vcmcgU29mdHdhcmUgVXNlciBBZ3JlZW1lbnQ8L3RpdGxlPgotPC9oZWFkPgotCi08Ym9keSBsYW5nPSJFTi1VUyIgbGluaz1ibHVlIHZsaW5rPXB1cnBsZT4KLTxoMj5FY2xpcHNlIEZvdW5kYXRpb24gU29mdHdhcmUgVXNlciBBZ3JlZW1lbnQ8L2gyPgotPHA+TWFyY2ggMTcsIDIwMDU8L3A+Ci0KLTxoMz5Vc2FnZSBPZiBDb250ZW50PC9oMz4KLQotPHA+VEhFIEVDTElQU0UgRk9VTkRBVElPTiBNQUtFUyBBVkFJTEFCTEUgU09GVFdBUkUsIERPQ1VNRU5UQVRJT04sIElORk9STUFUSU9OIEFORC9PUiBPVEhFUiBNQVRFUklBTFMgRk9SIE9QRU4gU09VUkNFIFBST0pFQ1RTCi0gICAoQ09MTEVDVElWRUxZICZxdW90O0NPTlRFTlQmcXVvdDspLiAgVVNFIE9GIFRIRSBDT05URU5UIElTIEdPVkVSTkVEIEJZIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBUSElTIEFHUkVFTUVOVCBBTkQvT1IgVEhFIFRFUk1TIEFORAotICAgQ09ORElUSU9OUyBPRiBMSUNFTlNFIEFHUkVFTUVOVFMgT1IgTk9USUNFUyBJTkRJQ0FURUQgT1IgUkVGRVJFTkNFRCBCRUxPVy4gIEJZIFVTSU5HIFRIRSBDT05URU5ULCBZT1UgQUdSRUUgVEhBVCBZT1VSIFVTRQotICAgT0YgVEhFIENPTlRFTlQgSVMgR09WRVJORUQgQlkgVEhJUyBBR1JFRU1FTlQgQU5EL09SIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBBTlkgQVBQTElDQUJMRSBMSUNFTlNFIEFHUkVFTUVOVFMgT1IKLSAgIE5PVElDRVMgSU5ESUNBVEVEIE9SIFJFRkVSRU5DRUQgQkVMT1cuICBJRiBZT1UgRE8gTk9UIEFHUkVFIFRPIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBUSElTIEFHUkVFTUVOVCBBTkQgVEhFIFRFUk1TIEFORAotICAgQ09ORElUSU9OUyBPRiBBTlkgQVBQTElDQUJMRSBMSUNFTlNFIEFHUkVFTUVOVFMgT1IgTk9USUNFUyBJTkRJQ0FURUQgT1IgUkVGRVJFTkNFRCBCRUxPVywgVEhFTiBZT1UgTUFZIE5PVCBVU0UgVEhFIENPTlRFTlQuPC9wPgotICAgCi08aDM+QXBwbGljYWJsZSBMaWNlbnNlczwvaDM+ICAgCi0gICAKLTxwPlVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkLCBhbGwgQ29udGVudCBtYWRlIGF2YWlsYWJsZSBieSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIGlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAKLSAgICgmcXVvdDtFUEwmcXVvdDspLiAgQSBjb3B5IG9mIHRoZSBFUEwgaXMgcHJvdmlkZWQgd2l0aCB0aGlzIENvbnRlbnQgYW5kIGlzIGFsc28gYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbDwvYT4uCi0gICBGb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgJnF1b3Q7UHJvZ3JhbSZxdW90OyB3aWxsIG1lYW4gdGhlIENvbnRlbnQuPC9wPgotCi08cD5Db250ZW50IGluY2x1ZGVzLCBidXQgaXMgbm90IGxpbWl0ZWQgdG8sIHNvdXJjZSBjb2RlLCBvYmplY3QgY29kZSwgZG9jdW1lbnRhdGlvbiBhbmQgb3RoZXIgZmlsZXMgbWFpbnRhaW5lZCBpbiB0aGUgRWNsaXBzZS5vcmcgQ1ZTIHJlcG9zaXRvcnkgKCZxdW90O1JlcG9zaXRvcnkmcXVvdDspIGluIENWUwotICAgbW9kdWxlcyAoJnF1b3Q7TW9kdWxlcyZxdW90OykgYW5kIG1hZGUgYXZhaWxhYmxlIGFzIGRvd25sb2FkYWJsZSBhcmNoaXZlcyAoJnF1b3Q7RG93bmxvYWRzJnF1b3Q7KS48L3A+Ci0gICAKLTx1bD4KLQk8bGk+Q29udGVudCBtYXkgYmUgc3RydWN0dXJlZCBhbmQgcGFja2FnZWQgaW50byBtb2R1bGVzIHRvIGZhY2lsaXRhdGUgZGVsaXZlcmluZywgZXh0ZW5kaW5nLCBhbmQgdXBncmFkaW5nIHRoZSBDb250ZW50LiAgVHlwaWNhbCBtb2R1bGVzIG1heSBpbmNsdWRlIHBsdWctaW5zICgmcXVvdDtQbHVnLWlucyZxdW90OyksIHBsdWctaW4gZnJhZ21lbnRzICgmcXVvdDtGcmFnbWVudHMmcXVvdDspLCBhbmQgZmVhdHVyZXMgKCZxdW90O0ZlYXR1cmVzJnF1b3Q7KS48L2xpPgotCTxsaT5FYWNoIFBsdWctaW4gb3IgRnJhZ21lbnQgbWF5IGJlIHBhY2thZ2VkIGFzIGEgc3ViLWRpcmVjdG9yeSBvciBKQVIgKEphdmEmdHJhZGU7IEFSY2hpdmUpIGluIGEgZGlyZWN0b3J5IG5hbWVkICZxdW90O3BsdWdpbnMmcXVvdDsuPC9saT4KLQk8bGk+QSBGZWF0dXJlIGlzIGEgYnVuZGxlIG9mIG9uZSBvciBtb3JlIFBsdWctaW5zIGFuZC9vciBGcmFnbWVudHMgYW5kIGFzc29jaWF0ZWQgbWF0ZXJpYWwuICBFYWNoIEZlYXR1cmUgbWF5IGJlIHBhY2thZ2VkIGFzIGEgc3ViLWRpcmVjdG9yeSBpbiBhIGRpcmVjdG9yeSBuYW1lZCAmcXVvdDtmZWF0dXJlcyZxdW90Oy4gIFdpdGhpbiBhIEZlYXR1cmUsIGZpbGVzIG5hbWVkICZxdW90O2ZlYXR1cmUueG1sJnF1b3Q7IG1heSBjb250YWluIGEgbGlzdCBvZiB0aGUgbmFtZXMgYW5kIHZlcnNpb24gbnVtYmVycyBvZiB0aGUgUGx1Zy1pbnMKLSAgICAgIGFuZC9vciBGcmFnbWVudHMgYXNzb2NpYXRlZCB3aXRoIHRoYXQgRmVhdHVyZS48L2xpPgotCTxsaT5GZWF0dXJlcyBtYXkgYWxzbyBpbmNsdWRlIG90aGVyIEZlYXR1cmVzICgmcXVvdDtJbmNsdWRlZCBGZWF0dXJlcyZxdW90OykuIFdpdGhpbiBhIEZlYXR1cmUsIGZpbGVzIG5hbWVkICZxdW90O2ZlYXR1cmUueG1sJnF1b3Q7IG1heSBjb250YWluIGEgbGlzdCBvZiB0aGUgbmFtZXMgYW5kIHZlcnNpb24gbnVtYmVycyBvZiBJbmNsdWRlZCBGZWF0dXJlcy48L2xpPgotPC91bD4gICAKLSAKLTxwPlRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm5pbmcgUGx1Zy1pbnMgYW5kIEZyYWdtZW50cyBzaG91bGQgYmUgY29udGFpbmVkIGluIGZpbGVzIG5hbWVkICZxdW90O2Fib3V0Lmh0bWwmcXVvdDsgKCZxdW90O0Fib3V0cyZxdW90OykuIFRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm5pbmcgRmVhdHVyZXMgYW5kCi1JbmNsdWRlZCBGZWF0dXJlcyBzaG91bGQgYmUgY29udGFpbmVkIGluIGZpbGVzIG5hbWVkICZxdW90O2xpY2Vuc2UuaHRtbCZxdW90OyAoJnF1b3Q7RmVhdHVyZSBMaWNlbnNlcyZxdW90OykuICBBYm91dHMgYW5kIEZlYXR1cmUgTGljZW5zZXMgbWF5IGJlIGxvY2F0ZWQgaW4gYW55IGRpcmVjdG9yeSBvZiBhIERvd25sb2FkIG9yIE1vZHVsZQotaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG8gdGhlIGZvbGxvd2luZyBsb2NhdGlvbnM6PC9wPgotCi08dWw+Ci0JPGxpPlRoZSB0b3AtbGV2ZWwgKHJvb3QpIGRpcmVjdG9yeTwvbGk+Ci0JPGxpPlBsdWctaW4gYW5kIEZyYWdtZW50IGRpcmVjdG9yaWVzPC9saT4KLQk8bGk+SW5zaWRlIFBsdWctaW5zIGFuZCBGcmFnbWVudHMgcGFja2FnZWQgYXMgSkFSczwvbGk+Ci0JPGxpPlN1Yi1kaXJlY3RvcmllcyBvZiB0aGUgZGlyZWN0b3J5IG5hbWVkICZxdW90O3NyYyZxdW90OyBvZiBjZXJ0YWluIFBsdWctaW5zPC9saT4KLQk8bGk+RmVhdHVyZSBkaXJlY3RvcmllczwvbGk+Ci08L3VsPgotCQkKLTxwPk5vdGU6IGlmIGEgRmVhdHVyZSBtYWRlIGF2YWlsYWJsZSBieSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIGlzIGluc3RhbGxlZCB1c2luZyB0aGUgRWNsaXBzZSBVcGRhdGUgTWFuYWdlciwgeW91IG11c3QgYWdyZWUgdG8gYSBsaWNlbnNlICgmcXVvdDtGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlJnF1b3Q7KSBkdXJpbmcgdGhlCi1pbnN0YWxsYXRpb24gcHJvY2Vzcy4gIElmIHRoZSBGZWF0dXJlIGNvbnRhaW5zIEluY2x1ZGVkIEZlYXR1cmVzLCB0aGUgRmVhdHVyZSBVcGRhdGUgTGljZW5zZSBzaG91bGQgZWl0aGVyIHByb3ZpZGUgeW91IHdpdGggdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybmluZyB0aGUgSW5jbHVkZWQgRmVhdHVyZXMgb3IKLWluZm9ybSB5b3Ugd2hlcmUgeW91IGNhbiBsb2NhdGUgdGhlbS4gIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VzIG1heSBiZSBmb3VuZCBpbiB0aGUgJnF1b3Q7bGljZW5zZSZxdW90OyBwcm9wZXJ0eSBvZiBmaWxlcyBuYW1lZCAmcXVvdDtmZWF0dXJlLnByb3BlcnRpZXMmcXVvdDsgZm91bmQgd2l0aGluIGEgRmVhdHVyZS4KLVN1Y2ggQWJvdXRzLCBGZWF0dXJlIExpY2Vuc2VzLCBhbmQgRmVhdHVyZSBVcGRhdGUgTGljZW5zZXMgY29udGFpbiB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgKG9yIHJlZmVyZW5jZXMgdG8gc3VjaCB0ZXJtcyBhbmQgY29uZGl0aW9ucykgdGhhdCBnb3Zlcm4geW91ciB1c2Ugb2YgdGhlIGFzc29jaWF0ZWQgQ29udGVudCBpbgotdGhhdCBkaXJlY3RvcnkuPC9wPgotCi08cD5USEUgQUJPVVRTLCBGRUFUVVJFIExJQ0VOU0VTLCBBTkQgRkVBVFVSRSBVUERBVEUgTElDRU5TRVMgTUFZIFJFRkVSIFRPIFRIRSBFUEwgT1IgT1RIRVIgTElDRU5TRSBBR1JFRU1FTlRTLCBOT1RJQ0VTIE9SIFRFUk1TIEFORCBDT05ESVRJT05TLiAgU09NRSBPRiBUSEVTRQotT1RIRVIgTElDRU5TRSBBR1JFRU1FTlRTIE1BWSBJTkNMVURFIChCVVQgQVJFIE5PVCBMSU1JVEVEIFRPKTo8L3A+Ci0KLTx1bD4KLQk8bGk+Q29tbW9uIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wIChhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9jcGwtdjEwLmh0bWwiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sPC9hPik8L2xpPgotCTxsaT5BcGFjaGUgU29mdHdhcmUgTGljZW5zZSAxLjEgKGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRSI+aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0U8L2E+KTwvbGk+Ci0JPGxpPkFwYWNoZSBTb2Z0d2FyZSBMaWNlbnNlIDIuMCAoYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMCI+aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wPC9hPik8L2xpPgotCTxsaT5JQk0gUHVibGljIExpY2Vuc2UgMS4wIChhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2RldmVsb3BlcndvcmtzL29wZW5zb3VyY2UvbGljZW5zZTEwLmh0bWwiPmh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9kZXZlbG9wZXJ3b3Jrcy9vcGVuc291cmNlL2xpY2Vuc2UxMC5odG1sPC9hPik8L2xpPgkKLQk8bGk+TWV0cm8gTGluayBQdWJsaWMgTGljZW5zZSAxLjAwIChhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL29wZW5tb3RpZi9zdXBwb3J0ZXJzL21ldHJvbGluay9saWNlbnNlLmh0bWwiPmh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vcGVubW90aWYvc3VwcG9ydGVycy9tZXRyb2xpbmsvbGljZW5zZS5odG1sPC9hPik8L2xpPgotCTxsaT5Nb3ppbGxhIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4xIChhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9NUEwvTVBMLTEuMS5odG1sIj5odHRwOi8vd3d3Lm1vemlsbGEub3JnL01QTC9NUEwtMS4xLmh0bWw8L2E+KTwvbGk+Ci08L3VsPgotCi08cD5JVCBJUyBZT1VSIE9CTElHQVRJT04gVE8gUkVBRCBBTkQgQUNDRVBUIEFMTCBTVUNIIFRFUk1TIEFORCBDT05ESVRJT05TIFBSSU9SIFRPIFVTRSBPRiBUSEUgQ09OVEVOVC4gIElmIG5vIEFib3V0LCBGZWF0dXJlIExpY2Vuc2UsIG9yIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2UgaXMgcHJvdmlkZWQsIHBsZWFzZQotY29udGFjdCB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIHRvIGRldGVybWluZSB3aGF0IHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybiB0aGF0IHBhcnRpY3VsYXIgQ29udGVudC48L3A+Ci0KLTxoMz5DcnlwdG9ncmFwaHk8L2gzPgotCi08cD5Db250ZW50IG1heSBjb250YWluIGVuY3J5cHRpb24gc29mdHdhcmUuIFRoZSBjb3VudHJ5IGluIHdoaWNoIHlvdSBhcmUgY3VycmVudGx5IG1heSBoYXZlIHJlc3RyaWN0aW9ucyBvbiB0aGUgaW1wb3J0LCBwb3NzZXNzaW9uLCBhbmQgdXNlLCBhbmQvb3IgcmUtZXhwb3J0IHRvCi0gICBhbm90aGVyIGNvdW50cnksIG9mIGVuY3J5cHRpb24gc29mdHdhcmUuIEJFRk9SRSB1c2luZyBhbnkgZW5jcnlwdGlvbiBzb2Z0d2FyZSwgcGxlYXNlIGNoZWNrIHRoZSBjb3VudHJ5J3MgbGF3cywgcmVndWxhdGlvbnMgYW5kIHBvbGljaWVzIGNvbmNlcm5pbmcgdGhlIGltcG9ydCwKLSAgIHBvc3Nlc3Npb24sIG9yIHVzZSwgYW5kIHJlLWV4cG9ydCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLCB0byBzZWUgaWYgdGhpcyBpcyBwZXJtaXR0ZWQuPC9wPgotICAgCi08c21hbGw+SmF2YSBhbmQgYWxsIEphdmEtYmFzZWQgdHJhZGVtYXJrcyBhcmUgdHJhZGVtYXJrcyBvZiBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIGluIHRoZSBVbml0ZWQgU3RhdGVzLCBvdGhlciBjb3VudHJpZXMsIG9yIGJvdGguPC9zbWFsbD4gICAKLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0ubHNmLWZlYXR1cmUvLnByb2plY3QgYi9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLmxzZi1mZWF0dXJlLy5wcm9qZWN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZTU2ZGZmLi4wMDAwMDAwCi0tLSBhL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0ubHNmLWZlYXR1cmUvLnByb2plY3QKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHByb2plY3REZXNjcmlwdGlvbj4KLQk8bmFtZT5vcmcuZWNsaXBzZS5wdHAucm0ubHNmLWZlYXR1cmU8L25hbWU+Ci0JPGNvbW1lbnQ+PC9jb21tZW50PgotCTxwcm9qZWN0cz4KLQk8L3Byb2plY3RzPgotCTxidWlsZFNwZWM+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5wZGUuRmVhdHVyZUJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCTwvYnVpbGRTcGVjPgotCTxuYXR1cmVzPgotCQk8bmF0dXJlPm9yZy5lY2xpcHNlLnBkZS5GZWF0dXJlTmF0dXJlPC9uYXR1cmU+Ci0JPC9uYXR1cmVzPgotPC9wcm9qZWN0RGVzY3JpcHRpb24+CmRpZmYgLS1naXQgYS9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLmxzZi1mZWF0dXJlL2J1aWxkLnByb3BlcnRpZXMgYi9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLmxzZi1mZWF0dXJlL2J1aWxkLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3OWRmOGYuLjAwMDAwMDAKLS0tIGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5ybS5sc2YtZmVhdHVyZS9idWlsZC5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1iaW4uaW5jbHVkZXMgPSBmZWF0dXJlLnhtbCxcCi0gICAgICAgICAgICAgICBsaWNlbnNlLmh0bWwsXAotICAgICAgICAgICAgICAgZmVhdHVyZS5wcm9wZXJ0aWVzLFwKLSAgICAgICAgICAgICAgIGVwbC12MTAuaHRtbApkaWZmIC0tZ2l0IGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5ybS5sc2YtZmVhdHVyZS9lcGwtdjEwLmh0bWwgYi9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLmxzZi1mZWF0dXJlL2VwbC12MTAuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQ0YjE5Ni4uMDAwMDAwMAotLS0gYS9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLmxzZi1mZWF0dXJlL2VwbC12MTAuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDMyOCArMCwwIEBACi08aHRtbCB4bWxuczpvPSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTpvZmZpY2UiCi14bWxuczp3PSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTp3b3JkIgoteG1sbnM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy1odG1sNDAiPgotCi08aGVhZD4KLTxtZXRhIGh0dHAtZXF1aXY9Q29udGVudC1UeXBlIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD13aW5kb3dzLTEyNTIiPgotPG1ldGEgbmFtZT1Qcm9nSWQgY29udGVudD1Xb3JkLkRvY3VtZW50PgotPG1ldGEgbmFtZT1HZW5lcmF0b3IgY29udGVudD0iTWljcm9zb2Z0IFdvcmQgOSI+Ci08bWV0YSBuYW1lPU9yaWdpbmF0b3IgY29udGVudD0iTWljcm9zb2Z0IFdvcmQgOSI+Ci08bGluayByZWw9RmlsZS1MaXN0Ci1ocmVmPSIuL0VjbGlwc2UlMjBFUEwlMjAyMDAzXzExXzEwJTIwRmluYWxfZmlsZXMvZmlsZWxpc3QueG1sIj4KLTx0aXRsZT5FY2xpcHNlIFB1YmxpYyBMaWNlbnNlIC0gVmVyc2lvbiAxLjA8L3RpdGxlPgotPCEtLVtpZiBndGUgbXNvIDldPjx4bWw+Ci0gPG86RG9jdW1lbnRQcm9wZXJ0aWVzPgotICA8bzpSZXZpc2lvbj4yPC9vOlJldmlzaW9uPgotICA8bzpUb3RhbFRpbWU+MzwvbzpUb3RhbFRpbWU+Ci0gIDxvOkNyZWF0ZWQ+MjAwNC0wMy0wNVQyMzowMzowMFo8L286Q3JlYXRlZD4KLSAgPG86TGFzdFNhdmVkPjIwMDQtMDMtMDVUMjM6MDM6MDBaPC9vOkxhc3RTYXZlZD4KLSAgPG86UGFnZXM+NDwvbzpQYWdlcz4KLSAgPG86V29yZHM+MTYyNjwvbzpXb3Jkcz4KLSAgPG86Q2hhcmFjdGVycz45MjcwPC9vOkNoYXJhY3RlcnM+Ci0gICA8bzpMaW5lcz43NzwvbzpMaW5lcz4KLSAgPG86UGFyYWdyYXBocz4xODwvbzpQYXJhZ3JhcGhzPgotICA8bzpDaGFyYWN0ZXJzV2l0aFNwYWNlcz4xMTM4NDwvbzpDaGFyYWN0ZXJzV2l0aFNwYWNlcz4KLSAgPG86VmVyc2lvbj45LjQ0MDI8L286VmVyc2lvbj4KLSA8L286RG9jdW1lbnRQcm9wZXJ0aWVzPgotPC94bWw+PCFbZW5kaWZdLS0+PCEtLVtpZiBndGUgbXNvIDldPjx4bWw+Ci0gPHc6V29yZERvY3VtZW50PgotICA8dzpUcmFja1JldmlzaW9ucy8+Ci0gPC93OldvcmREb2N1bWVudD4KLTwveG1sPjwhW2VuZGlmXS0tPgotPHN0eWxlPgotPCEtLQotIC8qIEZvbnQgRGVmaW5pdGlvbnMgKi8KLUBmb250LWZhY2UKLQl7Zm9udC1mYW1pbHk6VGFob21hOwotCXBhbm9zZS0xOjIgMTEgNiA0IDMgNSA0IDQgMiA0OwotCW1zby1mb250LWNoYXJzZXQ6MDsKLQltc28tZ2VuZXJpYy1mb250LWZhbWlseTpzd2lzczsKLQltc28tZm9udC1waXRjaDp2YXJpYWJsZTsKLQltc28tZm9udC1zaWduYXR1cmU6NTUzNjc5NDk1IC0yMTQ3NDgzNjQ4IDggMCA2NjA0NyAwO30KLSAvKiBTdHlsZSBEZWZpbml0aW9ucyAqLwotcC5Nc29Ob3JtYWwsIGxpLk1zb05vcm1hbCwgZGl2Lk1zb05vcm1hbAotCXttc28tc3R5bGUtcGFyZW50OiIiOwotCW1hcmdpbjowaW47Ci0JbWFyZ2luLWJvdHRvbTouMDAwMXB0OwotCW1zby1wYWdpbmF0aW9uOndpZG93LW9ycGhhbjsKLQlmb250LXNpemU6MTIuMHB0OwotCWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iOwotCW1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iO30KLXAKLQl7bWFyZ2luLXJpZ2h0OjBpbjsKLQltc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzsKLQltc28tbWFyZ2luLWJvdHRvbS1hbHQ6YXV0bzsKLQltYXJnaW4tbGVmdDowaW47Ci0JbXNvLXBhZ2luYXRpb246d2lkb3ctb3JwaGFuOwotCWZvbnQtc2l6ZToxMi4wcHQ7Ci0JZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7Ci0JbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7fQotcC5CYWxsb29uVGV4dCwgbGkuQmFsbG9vblRleHQsIGRpdi5CYWxsb29uVGV4dAotCXttc28tc3R5bGUtbmFtZToiQmFsbG9vbiBUZXh0IjsKLQltYXJnaW46MGluOwotCW1hcmdpbi1ib3R0b206LjAwMDFwdDsKLQltc28tcGFnaW5hdGlvbjp3aWRvdy1vcnBoYW47Ci0JZm9udC1zaXplOjguMHB0OwotCWZvbnQtZmFtaWx5OlRhaG9tYTsKLQltc28tZmFyZWFzdC1mb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjt9Ci1AcGFnZSBTZWN0aW9uMQotCXtzaXplOjguNWluIDExLjBpbjsKLQltYXJnaW46MS4waW4gMS4yNWluIDEuMGluIDEuMjVpbjsKLQltc28taGVhZGVyLW1hcmdpbjouNWluOwotCW1zby1mb290ZXItbWFyZ2luOi41aW47Ci0JbXNvLXBhcGVyLXNvdXJjZTowO30KLWRpdi5TZWN0aW9uMQotCXtwYWdlOlNlY3Rpb24xO30KLS0tPgotPC9zdHlsZT4KLTwvaGVhZD4KLQotPGJvZHkgbGFuZz1FTi1VUyBzdHlsZT0ndGFiLWludGVydmFsOi41aW4nPgotCi08ZGl2IGNsYXNzPVNlY3Rpb24xPgotCi08cCBhbGlnbj1jZW50ZXIgc3R5bGU9J3RleHQtYWxpZ246Y2VudGVyJz48Yj5FY2xpcHNlIFB1YmxpYyBMaWNlbnNlIC0gdiAxLjA8L2I+Ci08L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5USEUgQUNDT01QQU5ZSU5HIFBST0dSQU0gSVMgUFJPVklERUQgVU5ERVIKLVRIRSBURVJNUyBPRiBUSElTIEVDTElQU0UgUFVCTElDIExJQ0VOU0UgKCZxdW90O0FHUkVFTUVOVCZxdW90OykuIEFOWSBVU0UsCi1SRVBST0RVQ1RJT04gT1IgRElTVFJJQlVUSU9OIE9GIFRIRSBQUk9HUkFNIENPTlNUSVRVVEVTIFJFQ0lQSUVOVCdTIEFDQ0VQVEFOQ0UKLU9GIFRISVMgQUdSRUVNRU5ULjwvc3Bhbj4gPC9wPgotCi08cD48Yj48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+MS4gREVGSU5JVElPTlM8L3NwYW4+PC9iPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4mcXVvdDtDb250cmlidXRpb24mcXVvdDsgbWVhbnM6PC9zcGFuPiA8L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmEpCi1pbiB0aGUgY2FzZSBvZiB0aGUgaW5pdGlhbCBDb250cmlidXRvciwgdGhlIGluaXRpYWwgY29kZSBhbmQgZG9jdW1lbnRhdGlvbgotZGlzdHJpYnV0ZWQgdW5kZXIgdGhpcyBBZ3JlZW1lbnQsIGFuZDxiciBjbGVhcj1sZWZ0PgotYikgaW4gdGhlIGNhc2Ugb2YgZWFjaCBzdWJzZXF1ZW50IENvbnRyaWJ1dG9yOjwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmkpCi1jaGFuZ2VzIHRvIHRoZSBQcm9ncmFtLCBhbmQ8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5paSkKLWFkZGl0aW9ucyB0byB0aGUgUHJvZ3JhbTs8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz53aGVyZQotc3VjaCBjaGFuZ2VzIGFuZC9vciBhZGRpdGlvbnMgdG8gdGhlIFByb2dyYW0gb3JpZ2luYXRlIGZyb20gYW5kIGFyZSBkaXN0cmlidXRlZAotYnkgdGhhdCBwYXJ0aWN1bGFyIENvbnRyaWJ1dG9yLiBBIENvbnRyaWJ1dGlvbiAnb3JpZ2luYXRlcycgZnJvbSBhIENvbnRyaWJ1dG9yCi1pZiBpdCB3YXMgYWRkZWQgdG8gdGhlIFByb2dyYW0gYnkgc3VjaCBDb250cmlidXRvciBpdHNlbGYgb3IgYW55b25lIGFjdGluZyBvbgotc3VjaCBDb250cmlidXRvcidzIGJlaGFsZi4gQ29udHJpYnV0aW9ucyBkbyBub3QgaW5jbHVkZSBhZGRpdGlvbnMgdG8gdGhlCi1Qcm9ncmFtIHdoaWNoOiAoaSkgYXJlIHNlcGFyYXRlIG1vZHVsZXMgb2Ygc29mdHdhcmUgZGlzdHJpYnV0ZWQgaW4gY29uanVuY3Rpb24KLXdpdGggdGhlIFByb2dyYW0gdW5kZXIgdGhlaXIgb3duIGxpY2Vuc2UgYWdyZWVtZW50LCBhbmQgKGlpKSBhcmUgbm90IGRlcml2YXRpdmUKLXdvcmtzIG9mIHRoZSBQcm9ncmFtLiA8L3NwYW4+PC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+JnF1b3Q7Q29udHJpYnV0b3ImcXVvdDsgbWVhbnMgYW55IHBlcnNvbiBvcgotZW50aXR5IHRoYXQgZGlzdHJpYnV0ZXMgdGhlIFByb2dyYW0uPC9zcGFuPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4mcXVvdDtMaWNlbnNlZCBQYXRlbnRzICZxdW90OyBtZWFuIHBhdGVudAotY2xhaW1zIGxpY2Vuc2FibGUgYnkgYSBDb250cmlidXRvciB3aGljaCBhcmUgbmVjZXNzYXJpbHkgaW5mcmluZ2VkIGJ5IHRoZSB1c2UKLW9yIHNhbGUgb2YgaXRzIENvbnRyaWJ1dGlvbiBhbG9uZSBvciB3aGVuIGNvbWJpbmVkIHdpdGggdGhlIFByb2dyYW0uIDwvc3Bhbj48L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4mcXVvdDtQcm9ncmFtJnF1b3Q7IG1lYW5zIHRoZSBDb250cmlidXRpb25zCi1kaXN0cmlidXRlZCBpbiBhY2NvcmRhbmNlIHdpdGggdGhpcyBBZ3JlZW1lbnQuPC9zcGFuPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4mcXVvdDtSZWNpcGllbnQmcXVvdDsgbWVhbnMgYW55b25lIHdobwotcmVjZWl2ZXMgdGhlIFByb2dyYW0gdW5kZXIgdGhpcyBBZ3JlZW1lbnQsIGluY2x1ZGluZyBhbGwgQ29udHJpYnV0b3JzLjwvc3Bhbj4gPC9wPgotCi08cD48Yj48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Mi4gR1JBTlQgT0YgUklHSFRTPC9zcGFuPjwvYj4gPC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5hKQotU3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhpcyBBZ3JlZW1lbnQsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyBSZWNpcGllbnQKLWEgbm9uLWV4Y2x1c2l2ZSwgd29ybGR3aWRlLCByb3lhbHR5LWZyZWUgY29weXJpZ2h0IGxpY2Vuc2UgdG88c3Bhbgotc3R5bGU9J2NvbG9yOnJlZCc+IDwvc3Bhbj5yZXByb2R1Y2UsIHByZXBhcmUgZGVyaXZhdGl2ZSB3b3JrcyBvZiwgcHVibGljbHkKLWRpc3BsYXksIHB1YmxpY2x5IHBlcmZvcm0sIGRpc3RyaWJ1dGUgYW5kIHN1YmxpY2Vuc2UgdGhlIENvbnRyaWJ1dGlvbiBvZiBzdWNoCi1Db250cmlidXRvciwgaWYgYW55LCBhbmQgc3VjaCBkZXJpdmF0aXZlIHdvcmtzLCBpbiBzb3VyY2UgY29kZSBhbmQgb2JqZWN0IGNvZGUKLWZvcm0uPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+YikKLVN1YmplY3QgdG8gdGhlIHRlcm1zIG9mIHRoaXMgQWdyZWVtZW50LCBlYWNoIENvbnRyaWJ1dG9yIGhlcmVieSBncmFudHMKLVJlY2lwaWVudCBhIG5vbi1leGNsdXNpdmUsIHdvcmxkd2lkZSw8c3BhbiBzdHlsZT0nY29sb3I6Z3JlZW4nPiA8L3NwYW4+cm95YWx0eS1mcmVlCi1wYXRlbnQgbGljZW5zZSB1bmRlciBMaWNlbnNlZCBQYXRlbnRzIHRvIG1ha2UsIHVzZSwgc2VsbCwgb2ZmZXIgdG8gc2VsbCwgaW1wb3J0Ci1hbmQgb3RoZXJ3aXNlIHRyYW5zZmVyIHRoZSBDb250cmlidXRpb24gb2Ygc3VjaCBDb250cmlidXRvciwgaWYgYW55LCBpbiBzb3VyY2UKLWNvZGUgYW5kIG9iamVjdCBjb2RlIGZvcm0uIFRoaXMgcGF0ZW50IGxpY2Vuc2Ugc2hhbGwgYXBwbHkgdG8gdGhlIGNvbWJpbmF0aW9uCi1vZiB0aGUgQ29udHJpYnV0aW9uIGFuZCB0aGUgUHJvZ3JhbSBpZiwgYXQgdGhlIHRpbWUgdGhlIENvbnRyaWJ1dGlvbiBpcyBhZGRlZAotYnkgdGhlIENvbnRyaWJ1dG9yLCBzdWNoIGFkZGl0aW9uIG9mIHRoZSBDb250cmlidXRpb24gY2F1c2VzIHN1Y2ggY29tYmluYXRpb24KLXRvIGJlIGNvdmVyZWQgYnkgdGhlIExpY2Vuc2VkIFBhdGVudHMuIFRoZSBwYXRlbnQgbGljZW5zZSBzaGFsbCBub3QgYXBwbHkgdG8KLWFueSBvdGhlciBjb21iaW5hdGlvbnMgd2hpY2ggaW5jbHVkZSB0aGUgQ29udHJpYnV0aW9uLiBObyBoYXJkd2FyZSBwZXIgc2UgaXMKLWxpY2Vuc2VkIGhlcmV1bmRlci4gPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+YykKLVJlY2lwaWVudCB1bmRlcnN0YW5kcyB0aGF0IGFsdGhvdWdoIGVhY2ggQ29udHJpYnV0b3IgZ3JhbnRzIHRoZSBsaWNlbnNlcyB0byBpdHMKLUNvbnRyaWJ1dGlvbnMgc2V0IGZvcnRoIGhlcmVpbiwgbm8gYXNzdXJhbmNlcyBhcmUgcHJvdmlkZWQgYnkgYW55IENvbnRyaWJ1dG9yCi10aGF0IHRoZSBQcm9ncmFtIGRvZXMgbm90IGluZnJpbmdlIHRoZSBwYXRlbnQgb3Igb3RoZXIgaW50ZWxsZWN0dWFsIHByb3BlcnR5Ci1yaWdodHMgb2YgYW55IG90aGVyIGVudGl0eS4gRWFjaCBDb250cmlidXRvciBkaXNjbGFpbXMgYW55IGxpYWJpbGl0eSB0byBSZWNpcGllbnQKLWZvciBjbGFpbXMgYnJvdWdodCBieSBhbnkgb3RoZXIgZW50aXR5IGJhc2VkIG9uIGluZnJpbmdlbWVudCBvZiBpbnRlbGxlY3R1YWwKLXByb3BlcnR5IHJpZ2h0cyBvciBvdGhlcndpc2UuIEFzIGEgY29uZGl0aW9uIHRvIGV4ZXJjaXNpbmcgdGhlIHJpZ2h0cyBhbmQKLWxpY2Vuc2VzIGdyYW50ZWQgaGVyZXVuZGVyLCBlYWNoIFJlY2lwaWVudCBoZXJlYnkgYXNzdW1lcyBzb2xlIHJlc3BvbnNpYmlsaXR5Ci10byBzZWN1cmUgYW55IG90aGVyIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgbmVlZGVkLCBpZiBhbnkuIEZvciBleGFtcGxlLAotaWYgYSB0aGlyZCBwYXJ0eSBwYXRlbnQgbGljZW5zZSBpcyByZXF1aXJlZCB0byBhbGxvdyBSZWNpcGllbnQgdG8gZGlzdHJpYnV0ZQotdGhlIFByb2dyYW0sIGl0IGlzIFJlY2lwaWVudCdzIHJlc3BvbnNpYmlsaXR5IHRvIGFjcXVpcmUgdGhhdCBsaWNlbnNlIGJlZm9yZQotZGlzdHJpYnV0aW5nIHRoZSBQcm9ncmFtLjwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmQpCi1FYWNoIENvbnRyaWJ1dG9yIHJlcHJlc2VudHMgdGhhdCB0byBpdHMga25vd2xlZGdlIGl0IGhhcyBzdWZmaWNpZW50IGNvcHlyaWdodAotcmlnaHRzIGluIGl0cyBDb250cmlidXRpb24sIGlmIGFueSwgdG8gZ3JhbnQgdGhlIGNvcHlyaWdodCBsaWNlbnNlIHNldCBmb3J0aCBpbgotdGhpcyBBZ3JlZW1lbnQuIDwvc3Bhbj48L3A+Ci0KLTxwPjxiPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4zLiBSRVFVSVJFTUVOVFM8L3NwYW4+PC9iPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5BIENvbnRyaWJ1dG9yIG1heSBjaG9vc2UgdG8gZGlzdHJpYnV0ZSB0aGUKLVByb2dyYW0gaW4gb2JqZWN0IGNvZGUgZm9ybSB1bmRlciBpdHMgb3duIGxpY2Vuc2UgYWdyZWVtZW50LCBwcm92aWRlZCB0aGF0Ojwvc3Bhbj4KLTwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+YSkKLWl0IGNvbXBsaWVzIHdpdGggdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoaXMgQWdyZWVtZW50OyBhbmQ8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5iKQotaXRzIGxpY2Vuc2UgYWdyZWVtZW50Ojwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmkpCi1lZmZlY3RpdmVseSBkaXNjbGFpbXMgb24gYmVoYWxmIG9mIGFsbCBDb250cmlidXRvcnMgYWxsIHdhcnJhbnRpZXMgYW5kCi1jb25kaXRpb25zLCBleHByZXNzIGFuZCBpbXBsaWVkLCBpbmNsdWRpbmcgd2FycmFudGllcyBvciBjb25kaXRpb25zIG9mIHRpdGxlCi1hbmQgbm9uLWluZnJpbmdlbWVudCwgYW5kIGltcGxpZWQgd2FycmFudGllcyBvciBjb25kaXRpb25zIG9mIG1lcmNoYW50YWJpbGl0eQotYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlOyA8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5paSkKLWVmZmVjdGl2ZWx5IGV4Y2x1ZGVzIG9uIGJlaGFsZiBvZiBhbGwgQ29udHJpYnV0b3JzIGFsbCBsaWFiaWxpdHkgZm9yIGRhbWFnZXMsCi1pbmNsdWRpbmcgZGlyZWN0LCBpbmRpcmVjdCwgc3BlY2lhbCwgaW5jaWRlbnRhbCBhbmQgY29uc2VxdWVudGlhbCBkYW1hZ2VzLCBzdWNoCi1hcyBsb3N0IHByb2ZpdHM7IDwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmlpaSkKLXN0YXRlcyB0aGF0IGFueSBwcm92aXNpb25zIHdoaWNoIGRpZmZlciBmcm9tIHRoaXMgQWdyZWVtZW50IGFyZSBvZmZlcmVkIGJ5IHRoYXQKLUNvbnRyaWJ1dG9yIGFsb25lIGFuZCBub3QgYnkgYW55IG90aGVyIHBhcnR5OyBhbmQ8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5pdikKLXN0YXRlcyB0aGF0IHNvdXJjZSBjb2RlIGZvciB0aGUgUHJvZ3JhbSBpcyBhdmFpbGFibGUgZnJvbSBzdWNoIENvbnRyaWJ1dG9yLCBhbmQKLWluZm9ybXMgbGljZW5zZWVzIGhvdyB0byBvYnRhaW4gaXQgaW4gYSByZWFzb25hYmxlIG1hbm5lciBvbiBvciB0aHJvdWdoIGEKLW1lZGl1bSBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBleGNoYW5nZS48c3BhbiBzdHlsZT0nY29sb3I6Ymx1ZSc+IDwvc3Bhbj48L3NwYW4+PC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+V2hlbiB0aGUgUHJvZ3JhbSBpcyBtYWRlIGF2YWlsYWJsZSBpbiBzb3VyY2UKLWNvZGUgZm9ybTo8L3NwYW4+IDwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+YSkKLWl0IG11c3QgYmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhpcyBBZ3JlZW1lbnQ7IGFuZCA8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5iKSBhCi1jb3B5IG9mIHRoaXMgQWdyZWVtZW50IG11c3QgYmUgaW5jbHVkZWQgd2l0aCBlYWNoIGNvcHkgb2YgdGhlIFByb2dyYW0uIDwvc3Bhbj48L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5Db250cmlidXRvcnMgbWF5IG5vdCByZW1vdmUgb3IgYWx0ZXIgYW55Ci1jb3B5cmlnaHQgbm90aWNlcyBjb250YWluZWQgd2l0aGluIHRoZSBQcm9ncmFtLiA8L3NwYW4+PC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+RWFjaCBDb250cmlidXRvciBtdXN0IGlkZW50aWZ5IGl0c2VsZiBhcyB0aGUKLW9yaWdpbmF0b3Igb2YgaXRzIENvbnRyaWJ1dGlvbiwgaWYgYW55LCBpbiBhIG1hbm5lciB0aGF0IHJlYXNvbmFibHkgYWxsb3dzCi1zdWJzZXF1ZW50IFJlY2lwaWVudHMgdG8gaWRlbnRpZnkgdGhlIG9yaWdpbmF0b3Igb2YgdGhlIENvbnRyaWJ1dGlvbi4gPC9zcGFuPjwvcD4KLQotPHA+PGI+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPjQuIENPTU1FUkNJQUwgRElTVFJJQlVUSU9OPC9zcGFuPjwvYj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Q29tbWVyY2lhbCBkaXN0cmlidXRvcnMgb2Ygc29mdHdhcmUgbWF5Ci1hY2NlcHQgY2VydGFpbiByZXNwb25zaWJpbGl0aWVzIHdpdGggcmVzcGVjdCB0byBlbmQgdXNlcnMsIGJ1c2luZXNzIHBhcnRuZXJzCi1hbmQgdGhlIGxpa2UuIFdoaWxlIHRoaXMgbGljZW5zZSBpcyBpbnRlbmRlZCB0byBmYWNpbGl0YXRlIHRoZSBjb21tZXJjaWFsIHVzZQotb2YgdGhlIFByb2dyYW0sIHRoZSBDb250cmlidXRvciB3aG8gaW5jbHVkZXMgdGhlIFByb2dyYW0gaW4gYSBjb21tZXJjaWFsCi1wcm9kdWN0IG9mZmVyaW5nIHNob3VsZCBkbyBzbyBpbiBhIG1hbm5lciB3aGljaCBkb2VzIG5vdCBjcmVhdGUgcG90ZW50aWFsCi1saWFiaWxpdHkgZm9yIG90aGVyIENvbnRyaWJ1dG9ycy4gVGhlcmVmb3JlLCBpZiBhIENvbnRyaWJ1dG9yIGluY2x1ZGVzIHRoZQotUHJvZ3JhbSBpbiBhIGNvbW1lcmNpYWwgcHJvZHVjdCBvZmZlcmluZywgc3VjaCBDb250cmlidXRvciAoJnF1b3Q7Q29tbWVyY2lhbAotQ29udHJpYnV0b3ImcXVvdDspIGhlcmVieSBhZ3JlZXMgdG8gZGVmZW5kIGFuZCBpbmRlbW5pZnkgZXZlcnkgb3RoZXIKLUNvbnRyaWJ1dG9yICgmcXVvdDtJbmRlbW5pZmllZCBDb250cmlidXRvciZxdW90OykgYWdhaW5zdCBhbnkgbG9zc2VzLCBkYW1hZ2VzIGFuZAotY29zdHMgKGNvbGxlY3RpdmVseSAmcXVvdDtMb3NzZXMmcXVvdDspIGFyaXNpbmcgZnJvbSBjbGFpbXMsIGxhd3N1aXRzIGFuZCBvdGhlcgotbGVnYWwgYWN0aW9ucyBicm91Z2h0IGJ5IGEgdGhpcmQgcGFydHkgYWdhaW5zdCB0aGUgSW5kZW1uaWZpZWQgQ29udHJpYnV0b3IgdG8KLXRoZSBleHRlbnQgY2F1c2VkIGJ5IHRoZSBhY3RzIG9yIG9taXNzaW9ucyBvZiBzdWNoIENvbW1lcmNpYWwgQ29udHJpYnV0b3IgaW4KLWNvbm5lY3Rpb24gd2l0aCBpdHMgZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9ncmFtIGluIGEgY29tbWVyY2lhbCBwcm9kdWN0Ci1vZmZlcmluZy4gVGhlIG9ibGlnYXRpb25zIGluIHRoaXMgc2VjdGlvbiBkbyBub3QgYXBwbHkgdG8gYW55IGNsYWltcyBvciBMb3NzZXMKLXJlbGF0aW5nIHRvIGFueSBhY3R1YWwgb3IgYWxsZWdlZCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgaW5mcmluZ2VtZW50LiBJbiBvcmRlcgotdG8gcXVhbGlmeSwgYW4gSW5kZW1uaWZpZWQgQ29udHJpYnV0b3IgbXVzdDogYSkgcHJvbXB0bHkgbm90aWZ5IHRoZSBDb21tZXJjaWFsCi1Db250cmlidXRvciBpbiB3cml0aW5nIG9mIHN1Y2ggY2xhaW0sIGFuZCBiKSBhbGxvdyB0aGUgQ29tbWVyY2lhbCBDb250cmlidXRvcgotdG8gY29udHJvbCwgYW5kIGNvb3BlcmF0ZSB3aXRoIHRoZSBDb21tZXJjaWFsIENvbnRyaWJ1dG9yIGluLCB0aGUgZGVmZW5zZSBhbmQKLWFueSByZWxhdGVkIHNldHRsZW1lbnQgbmVnb3RpYXRpb25zLiBUaGUgSW5kZW1uaWZpZWQgQ29udHJpYnV0b3IgbWF5IHBhcnRpY2lwYXRlCi1pbiBhbnkgc3VjaCBjbGFpbSBhdCBpdHMgb3duIGV4cGVuc2UuPC9zcGFuPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5Gb3IgZXhhbXBsZSwgYSBDb250cmlidXRvciBtaWdodCBpbmNsdWRlIHRoZQotUHJvZ3JhbSBpbiBhIGNvbW1lcmNpYWwgcHJvZHVjdCBvZmZlcmluZywgUHJvZHVjdCBYLiBUaGF0IENvbnRyaWJ1dG9yIGlzIHRoZW4gYQotQ29tbWVyY2lhbCBDb250cmlidXRvci4gSWYgdGhhdCBDb21tZXJjaWFsIENvbnRyaWJ1dG9yIHRoZW4gbWFrZXMgcGVyZm9ybWFuY2UKLWNsYWltcywgb3Igb2ZmZXJzIHdhcnJhbnRpZXMgcmVsYXRlZCB0byBQcm9kdWN0IFgsIHRob3NlIHBlcmZvcm1hbmNlIGNsYWltcyBhbmQKLXdhcnJhbnRpZXMgYXJlIHN1Y2ggQ29tbWVyY2lhbCBDb250cmlidXRvcidzIHJlc3BvbnNpYmlsaXR5IGFsb25lLiBVbmRlciB0aGlzCi1zZWN0aW9uLCB0aGUgQ29tbWVyY2lhbCBDb250cmlidXRvciB3b3VsZCBoYXZlIHRvIGRlZmVuZCBjbGFpbXMgYWdhaW5zdCB0aGUKLW90aGVyIENvbnRyaWJ1dG9ycyByZWxhdGVkIHRvIHRob3NlIHBlcmZvcm1hbmNlIGNsYWltcyBhbmQgd2FycmFudGllcywgYW5kIGlmIGEKLWNvdXJ0IHJlcXVpcmVzIGFueSBvdGhlciBDb250cmlidXRvciB0byBwYXkgYW55IGRhbWFnZXMgYXMgYSByZXN1bHQsIHRoZQotQ29tbWVyY2lhbCBDb250cmlidXRvciBtdXN0IHBheSB0aG9zZSBkYW1hZ2VzLjwvc3Bhbj4gPC9wPgotCi08cD48Yj48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+NS4gTk8gV0FSUkFOVFk8L3NwYW4+PC9iPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5FWENFUFQgQVMgRVhQUkVTU0xZIFNFVCBGT1JUSCBJTiBUSElTCi1BR1JFRU1FTlQsIFRIRSBQUk9HUkFNIElTIFBST1ZJREVEIE9OIEFOICZxdW90O0FTIElTJnF1b3Q7IEJBU0lTLCBXSVRIT1VUCi1XQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQgSU5DTFVESU5HLAotV0lUSE9VVCBMSU1JVEFUSU9OLCBBTlkgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIFRJVExFLCBOT04tSU5GUklOR0VNRU5ULAotTUVSQ0hBTlRBQklMSVRZIE9SIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBFYWNoIFJlY2lwaWVudCBpcyBzb2xlbHkKLXJlc3BvbnNpYmxlIGZvciBkZXRlcm1pbmluZyB0aGUgYXBwcm9wcmlhdGVuZXNzIG9mIHVzaW5nIGFuZCBkaXN0cmlidXRpbmcgdGhlCi1Qcm9ncmFtIGFuZCBhc3N1bWVzIGFsbCByaXNrcyBhc3NvY2lhdGVkIHdpdGggaXRzIGV4ZXJjaXNlIG9mIHJpZ2h0cyB1bmRlciB0aGlzCi1BZ3JlZW1lbnQgLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIHRoZSByaXNrcyBhbmQgY29zdHMgb2YgcHJvZ3JhbSBlcnJvcnMsCi1jb21wbGlhbmNlIHdpdGggYXBwbGljYWJsZSBsYXdzLCBkYW1hZ2UgdG8gb3IgbG9zcyBvZiBkYXRhLCBwcm9ncmFtcyBvcgotZXF1aXBtZW50LCBhbmQgdW5hdmFpbGFiaWxpdHkgb3IgaW50ZXJydXB0aW9uIG9mIG9wZXJhdGlvbnMuIDwvc3Bhbj48L3A+Ci0KLTxwPjxiPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz42LiBESVNDTEFJTUVSIE9GIExJQUJJTElUWTwvc3Bhbj48L2I+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkVYQ0VQVCBBUyBFWFBSRVNTTFkgU0VUIEZPUlRIIElOIFRISVMKLUFHUkVFTUVOVCwgTkVJVEhFUiBSRUNJUElFTlQgTk9SIEFOWSBDT05UUklCVVRPUlMgU0hBTEwgSEFWRSBBTlkgTElBQklMSVRZIEZPUgotQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0oSU5DTFVESU5HIFdJVEhPVVQgTElNSVRBVElPTiBMT1NUIFBST0ZJVFMpLCBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKLU5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT1IgRElTVFJJQlVUSU9OIE9GCi1USEUgUFJPR1JBTSBPUiBUSEUgRVhFUkNJU0UgT0YgQU5ZIFJJR0hUUyBHUkFOVEVEIEhFUkVVTkRFUiwgRVZFTiBJRiBBRFZJU0VEIE9GCi1USEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLjwvc3Bhbj4gPC9wPgotCi08cD48Yj48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Ny4gR0VORVJBTDwvc3Bhbj48L2I+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPklmIGFueSBwcm92aXNpb24gb2YgdGhpcyBBZ3JlZW1lbnQgaXMgaW52YWxpZAotb3IgdW5lbmZvcmNlYWJsZSB1bmRlciBhcHBsaWNhYmxlIGxhdywgaXQgc2hhbGwgbm90IGFmZmVjdCB0aGUgdmFsaWRpdHkgb3IKLWVuZm9yY2VhYmlsaXR5IG9mIHRoZSByZW1haW5kZXIgb2YgdGhlIHRlcm1zIG9mIHRoaXMgQWdyZWVtZW50LCBhbmQgd2l0aG91dAotZnVydGhlciBhY3Rpb24gYnkgdGhlIHBhcnRpZXMgaGVyZXRvLCBzdWNoIHByb3Zpc2lvbiBzaGFsbCBiZSByZWZvcm1lZCB0byB0aGUKLW1pbmltdW0gZXh0ZW50IG5lY2Vzc2FyeSB0byBtYWtlIHN1Y2ggcHJvdmlzaW9uIHZhbGlkIGFuZCBlbmZvcmNlYWJsZS48L3NwYW4+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPklmIFJlY2lwaWVudCBpbnN0aXR1dGVzIHBhdGVudCBsaXRpZ2F0aW9uCi1hZ2FpbnN0IGFueSBlbnRpdHkgKGluY2x1ZGluZyBhIGNyb3NzLWNsYWltIG9yIGNvdW50ZXJjbGFpbSBpbiBhIGxhd3N1aXQpCi1hbGxlZ2luZyB0aGF0IHRoZSBQcm9ncmFtIGl0c2VsZiAoZXhjbHVkaW5nIGNvbWJpbmF0aW9ucyBvZiB0aGUgUHJvZ3JhbSB3aXRoCi1vdGhlciBzb2Z0d2FyZSBvciBoYXJkd2FyZSkgaW5mcmluZ2VzIHN1Y2ggUmVjaXBpZW50J3MgcGF0ZW50KHMpLCB0aGVuIHN1Y2gKLVJlY2lwaWVudCdzIHJpZ2h0cyBncmFudGVkIHVuZGVyIFNlY3Rpb24gMihiKSBzaGFsbCB0ZXJtaW5hdGUgYXMgb2YgdGhlIGRhdGUKLXN1Y2ggbGl0aWdhdGlvbiBpcyBmaWxlZC4gPC9zcGFuPjwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkFsbCBSZWNpcGllbnQncyByaWdodHMgdW5kZXIgdGhpcyBBZ3JlZW1lbnQKLXNoYWxsIHRlcm1pbmF0ZSBpZiBpdCBmYWlscyB0byBjb21wbHkgd2l0aCBhbnkgb2YgdGhlIG1hdGVyaWFsIHRlcm1zIG9yCi1jb25kaXRpb25zIG9mIHRoaXMgQWdyZWVtZW50IGFuZCBkb2VzIG5vdCBjdXJlIHN1Y2ggZmFpbHVyZSBpbiBhIHJlYXNvbmFibGUKLXBlcmlvZCBvZiB0aW1lIGFmdGVyIGJlY29taW5nIGF3YXJlIG9mIHN1Y2ggbm9uY29tcGxpYW5jZS4gSWYgYWxsIFJlY2lwaWVudCdzCi1yaWdodHMgdW5kZXIgdGhpcyBBZ3JlZW1lbnQgdGVybWluYXRlLCBSZWNpcGllbnQgYWdyZWVzIHRvIGNlYXNlIHVzZSBhbmQKLWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZ3JhbSBhcyBzb29uIGFzIHJlYXNvbmFibHkgcHJhY3RpY2FibGUuIEhvd2V2ZXIsCi1SZWNpcGllbnQncyBvYmxpZ2F0aW9ucyB1bmRlciB0aGlzIEFncmVlbWVudCBhbmQgYW55IGxpY2Vuc2VzIGdyYW50ZWQgYnkKLVJlY2lwaWVudCByZWxhdGluZyB0byB0aGUgUHJvZ3JhbSBzaGFsbCBjb250aW51ZSBhbmQgc3Vydml2ZS4gPC9zcGFuPjwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkV2ZXJ5b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlCi1jb3BpZXMgb2YgdGhpcyBBZ3JlZW1lbnQsIGJ1dCBpbiBvcmRlciB0byBhdm9pZCBpbmNvbnNpc3RlbmN5IHRoZSBBZ3JlZW1lbnQgaXMKLWNvcHlyaWdodGVkIGFuZCBtYXkgb25seSBiZSBtb2RpZmllZCBpbiB0aGUgZm9sbG93aW5nIG1hbm5lci4gVGhlIEFncmVlbWVudAotU3Rld2FyZCByZXNlcnZlcyB0aGUgcmlnaHQgdG8gcHVibGlzaCBuZXcgdmVyc2lvbnMgKGluY2x1ZGluZyByZXZpc2lvbnMpIG9mCi10aGlzIEFncmVlbWVudCBmcm9tIHRpbWUgdG8gdGltZS4gTm8gb25lIG90aGVyIHRoYW4gdGhlIEFncmVlbWVudCBTdGV3YXJkIGhhcwotdGhlIHJpZ2h0IHRvIG1vZGlmeSB0aGlzIEFncmVlbWVudC4gVGhlIEVjbGlwc2UgRm91bmRhdGlvbiBpcyB0aGUgaW5pdGlhbAotQWdyZWVtZW50IFN0ZXdhcmQuIFRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWF5IGFzc2lnbiB0aGUgcmVzcG9uc2liaWxpdHkgdG8KLXNlcnZlIGFzIHRoZSBBZ3JlZW1lbnQgU3Rld2FyZCB0byBhIHN1aXRhYmxlIHNlcGFyYXRlIGVudGl0eS4gRWFjaCBuZXcgdmVyc2lvbgotb2YgdGhlIEFncmVlbWVudCB3aWxsIGJlIGdpdmVuIGEgZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBudW1iZXIuIFRoZSBQcm9ncmFtCi0oaW5jbHVkaW5nIENvbnRyaWJ1dGlvbnMpIG1heSBhbHdheXMgYmUgZGlzdHJpYnV0ZWQgc3ViamVjdCB0byB0aGUgdmVyc2lvbiBvZgotdGhlIEFncmVlbWVudCB1bmRlciB3aGljaCBpdCB3YXMgcmVjZWl2ZWQuIEluIGFkZGl0aW9uLCBhZnRlciBhIG5ldyB2ZXJzaW9uIG9mCi10aGUgQWdyZWVtZW50IGlzIHB1Ymxpc2hlZCwgQ29udHJpYnV0b3IgbWF5IGVsZWN0IHRvIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0KLShpbmNsdWRpbmcgaXRzIENvbnRyaWJ1dGlvbnMpIHVuZGVyIHRoZSBuZXcgdmVyc2lvbi4gRXhjZXB0IGFzIGV4cHJlc3NseSBzdGF0ZWQKLWluIFNlY3Rpb25zIDIoYSkgYW5kIDIoYikgYWJvdmUsIFJlY2lwaWVudCByZWNlaXZlcyBubyByaWdodHMgb3IgbGljZW5zZXMgdG8KLXRoZSBpbnRlbGxlY3R1YWwgcHJvcGVydHkgb2YgYW55IENvbnRyaWJ1dG9yIHVuZGVyIHRoaXMgQWdyZWVtZW50LCB3aGV0aGVyCi1leHByZXNzbHksIGJ5IGltcGxpY2F0aW9uLCBlc3RvcHBlbCBvciBvdGhlcndpc2UuIEFsbCByaWdodHMgaW4gdGhlIFByb2dyYW0gbm90Ci1leHByZXNzbHkgZ3JhbnRlZCB1bmRlciB0aGlzIEFncmVlbWVudCBhcmUgcmVzZXJ2ZWQuPC9zcGFuPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5UaGlzIEFncmVlbWVudCBpcyBnb3Zlcm5lZCBieSB0aGUgbGF3cyBvZiB0aGUKLVN0YXRlIG9mIE5ldyBZb3JrIGFuZCB0aGUgaW50ZWxsZWN0dWFsIHByb3BlcnR5IGxhd3Mgb2YgdGhlIFVuaXRlZCBTdGF0ZXMgb2YKLUFtZXJpY2EuIE5vIHBhcnR5IHRvIHRoaXMgQWdyZWVtZW50IHdpbGwgYnJpbmcgYSBsZWdhbCBhY3Rpb24gdW5kZXIgdGhpcwotQWdyZWVtZW50IG1vcmUgdGhhbiBvbmUgeWVhciBhZnRlciB0aGUgY2F1c2Ugb2YgYWN0aW9uIGFyb3NlLiBFYWNoIHBhcnR5IHdhaXZlcwotaXRzIHJpZ2h0cyB0byBhIGp1cnkgdHJpYWwgaW4gYW55IHJlc3VsdGluZyBsaXRpZ2F0aW9uLjwvc3Bhbj4gPC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWw+PCFbaWYgIXN1cHBvcnRFbXB0eVBhcmFzXT4mbmJzcDs8IVtlbmRpZl0+PG86cD48L286cD48L3A+Ci0KLTwvZGl2PgotCi08L2JvZHk+Ci0KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLmxzZi1mZWF0dXJlL2ZlYXR1cmUucHJvcGVydGllcyBiL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0ubHNmLWZlYXR1cmUvZmVhdHVyZS5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNWI2MjY3Li4wMDAwMDAwCi0tLSBhL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0ubHNmLWZlYXR1cmUvZmVhdHVyZS5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMTU2ICswLDAgQEAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDIwMDUgVGhlIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4gCi0jIFRoaXMgbWF0ZXJpYWwgd2FzIHByb2R1Y2VkIHVuZGVyIFUuUy4gR292ZXJubWVudCBjb250cmFjdCBXLTc0MDUtRU5HLTM2IAotIyBmb3IgTG9zIEFsYW1vcyBOYXRpb25hbCBMYWJvcmF0b3J5LCB3aGljaCBpcyBvcGVyYXRlZCBieSB0aGUgVW5pdmVyc2l0eSAKLSMgb2YgQ2FsaWZvcm5pYSBmb3IgdGhlIFUuUy4gRGVwYXJ0bWVudCBvZiBFbmVyZ3kuIFRoZSBVLlMuIEdvdmVybm1lbnQgaGFzIAotIyByaWdodHMgdG8gdXNlLCByZXByb2R1Y2UsIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUuIE5FSVRIRVIgVEhFIAotIyBHT1ZFUk5NRU5UIE5PUiBUSEUgVU5JVkVSU0lUWSBNQUtFUyBBTlkgV0FSUkFOVFksIEVYUFJFU1MgT1IgSU1QTElFRCwgT1IgCi0jIEFTU1VNRVMgQU5ZIExJQUJJTElUWSBGT1IgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLiBJZiBzb2Z0d2FyZSBpcyBtb2RpZmllZCAKLSMgdG8gcHJvZHVjZSBkZXJpdmF0aXZlIHdvcmtzLCBzdWNoIG1vZGlmaWVkIHNvZnR3YXJlIHNob3VsZCBiZSBjbGVhcmx5IG1hcmtlZCwgCi0jIHNvIGFzIG5vdCB0byBjb25mdXNlIGl0IHdpdGggdGhlIHZlcnNpb24gYXZhaWxhYmxlIGZyb20gTEFOTC4KLSMgCi0jIEFkZGl0aW9uYWxseSwgdGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAKLSMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0jIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jIAotIyBMQS1DQyAwNC0xMTUKLSMKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0KLSMgImZlYXR1cmVOYW1lIiBwcm9wZXJ0eSAtIG5hbWUgb2YgdGhlIGZlYXR1cmUKLWZlYXR1cmVOYW1lPVBUUCBTdXBwb3J0IEZvciBMU0YKLQotIyAicHJvdmlkZXJOYW1lIiBwcm9wZXJ0eSAtIG5hbWUgb2YgdGhlIGNvbXBhbnkgdGhhdCBwcm92aWRlcyB0aGUgZmVhdHVyZQotcHJvdmlkZXJOYW1lPUVjbGlwc2Uub3JnCi0KLSMgInVwZGF0ZVNpdGVOYW1lIiBwcm9wZXJ0eSAtIGxhYmVsIGZvciB0aGUgdXBkYXRlIHNpdGUKLXVwZGF0ZVNpdGVOYW1lPUVjbGlwc2UgUFRQIFVwZGF0ZSBTaXRlCi0KLSMgImRlc2NyaXB0aW9uIiBwcm9wZXJ0eSAtIGRlc2NyaXB0aW9uIG9mIHRoZSBmZWF0dXJlCi1kZXNjcmlwdGlvbj1BZGRzIHN1cHBvcnQgZm9yIHRoZSBMU0Ygam9iIHNjaGVkdWxlcgotCi0jIGNvcHlyaWdodAotY29weXJpZ2h0PVwKLUNvcHlyaWdodCAoYykgMjAwNSBUaGUgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLlxuXAotVGhpcyBtYXRlcmlhbCB3YXMgcHJvZHVjZWQgdW5kZXIgVS5TLiBHb3Zlcm5tZW50IGNvbnRyYWN0IFctNzQwNS1FTkctMzZcblwKLWZvciBMb3MgQWxhbW9zIE5hdGlvbmFsIExhYm9yYXRvcnksIHdoaWNoIGlzIG9wZXJhdGVkIGJ5IHRoZSBVbml2ZXJzaXR5XG5cCi1vZiBDYWxpZm9ybmlhIGZvciB0aGUgVS5TLiBEZXBhcnRtZW50IG9mIEVuZXJneS4gVGhlIFUuUy4gR292ZXJubWVudCBoYXNcblwKLXJpZ2h0cyB0byB1c2UsIHJlcHJvZHVjZSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZS4gTkVJVEhFUiBUSEVcblwKLUdPVkVSTk1FTlQgTk9SIFRIRSBVTklWRVJTSVRZIE1BS0VTIEFOWSBXQVJSQU5UWSwgRVhQUkVTUyBPUiBJTVBMSUVELCBPUlxuXAotQVNTVU1FUyBBTlkgTElBQklMSVRZIEZPUiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUuIElmIHNvZnR3YXJlIGlzIG1vZGlmaWVkXG5cCi10byBwcm9kdWNlIGRlcml2YXRpdmUgd29ya3MsIHN1Y2ggbW9kaWZpZWQgc29mdHdhcmUgc2hvdWxkIGJlIGNsZWFybHkgbWFya2VkLFxuXAotc28gYXMgbm90IHRvIGNvbmZ1c2UgaXQgd2l0aCB0aGUgdmVyc2lvbiBhdmFpbGFibGUgZnJvbSBMQU5MLlxuXAotXG5cCi1BZGRpdGlvbmFsbHksIHRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHNcblwKLWFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMFxuXAotd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXRcblwKLWh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sXG5cCi1cblwKLUxBLUNDIDA0LTExNVxuCi0KLSMgImxpY2Vuc2VVUkwiIHByb3BlcnR5IC0gVVJMIG9mIHRoZSAiRmVhdHVyZSBMaWNlbnNlIgotIyBkbyBub3QgdHJhbnNsYXRlIHZhbHVlIC0ganVzdCBjaGFuZ2UgdG8gcG9pbnQgdG8gYSBsb2NhbGUtc3BlY2lmaWMgSFRNTCBwYWdlCi1saWNlbnNlVVJMPWxpY2Vuc2UuaHRtbAotCi0jICJsaWNlbnNlIiBwcm9wZXJ0eSAtIHRleHQgb2YgdGhlICJGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlIgotIyBzaG91bGQgYmUgcGxhaW4gdGV4dCB2ZXJzaW9uIG9mIGxpY2Vuc2UgYWdyZWVtZW50IHBvaW50ZWQgdG8gYmUgImxpY2Vuc2VVUkwiCi1saWNlbnNlPVwKLUVDTElQU0UgRk9VTkRBVElPTiBTT0ZUV0FSRSBVU0VSIEFHUkVFTUVOVFxuXAotTWFyY2ggMTcsIDIwMDVcblwKLVxuXAotVXNhZ2UgT2YgQ29udGVudFxuXAotXG5cCi1USEUgRUNMSVBTRSBGT1VOREFUSU9OIE1BS0VTIEFWQUlMQUJMRSBTT0ZUV0FSRSwgRE9DVU1FTlRBVElPTiwgSU5GT1JNQVRJT04gQU5EL09SXG5cCi1PVEhFUiBNQVRFUklBTFMgRk9SIE9QRU4gU09VUkNFIFBST0pFQ1RTIChDT0xMRUNUSVZFTFkgIkNPTlRFTlQiKS5cblwKLVVTRSBPRiBUSEUgQ09OVEVOVCBJUyBHT1ZFUk5FRCBCWSBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgVEhJU1xuXAotQUdSRUVNRU5UIEFORC9PUiBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgTElDRU5TRSBBR1JFRU1FTlRTIE9SXG5cCi1OT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEIEJFTE9XLiBCWSBVU0lORyBUSEUgQ09OVEVOVCwgWU9VXG5cCi1BR1JFRSBUSEFUIFlPVVIgVVNFIE9GIFRIRSBDT05URU5UIElTIEdPVkVSTkVEIEJZIFRISVMgQUdSRUVNRU5UXG5cCi1BTkQvT1IgVEhFIFRFUk1TIEFORCBDT05ESVRJT05TIE9GIEFOWSBBUFBMSUNBQkxFIExJQ0VOU0UgQUdSRUVNRU5UU1xuXAotT1IgTk9USUNFUyBJTkRJQ0FURUQgT1IgUkVGRVJFTkNFRCBCRUxPVy4gSUYgWU9VIERPIE5PVCBBR1JFRSBUTyBUSEVcblwKLVRFUk1TIEFORCBDT05ESVRJT05TIE9GIFRISVMgQUdSRUVNRU5UIEFORCBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlNcblwKLU9GIEFOWSBBUFBMSUNBQkxFIExJQ0VOU0UgQUdSRUVNRU5UUyBPUiBOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEXG5cCi1CRUxPVywgVEhFTiBZT1UgTUFZIE5PVCBVU0UgVEhFIENPTlRFTlQuXG5cCi1cblwKLUFwcGxpY2FibGUgTGljZW5zZXNcblwKLVxuXAotVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQsIGFsbCBDb250ZW50IG1hZGUgYXZhaWxhYmxlIGJ5IHRoZSBFY2xpcHNlIEZvdW5kYXRpb25cblwKLWlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UgUHVibGljXG5cCi1MaWNlbnNlIFZlcnNpb24gMS4wICgiRVBMIikuIEEgY29weSBvZiB0aGUgRVBMIGlzIHByb3ZpZGVkIHdpdGggdGhpc1xuXAotQ29udGVudCBhbmQgaXMgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwuXG5cCi1Gb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgIlByb2dyYW0iIHdpbGwgbWVhbiB0aGUgQ29udGVudC5cblwKLVxuXAotQ29udGVudCBpbmNsdWRlcywgYnV0IGlzIG5vdCBsaW1pdGVkIHRvLCBzb3VyY2UgY29kZSwgb2JqZWN0IGNvZGUsXG5cCi1kb2N1bWVudGF0aW9uIGFuZCBvdGhlciBmaWxlcyBtYWludGFpbmVkIGluIHRoZSBFY2xpcHNlLm9yZyBDVlNcblwKLXJlcG9zaXRvcnkgKCJSZXBvc2l0b3J5IikgaW4gQ1ZTIG1vZHVsZXMgKCJNb2R1bGVzIikgYW5kIG1hZGUgYXZhaWxhYmxlXG5cCi1hcyBkb3dubG9hZGFibGUgYXJjaGl2ZXMgKCJEb3dubG9hZHMiKS5cblwKLVxuXAotICAgLSBDb250ZW50IG1heSBiZSBzdHJ1Y3R1cmVkIGFuZCBwYWNrYWdlZCBpbnRvIG1vZHVsZXMgdG8gZmFjaWxpdGF0ZSBkZWxpdmVyaW5nLFxuXAotICAgICBleHRlbmRpbmcsIGFuZCB1cGdyYWRpbmcgdGhlIENvbnRlbnQuIFR5cGljYWwgbW9kdWxlcyBtYXkgaW5jbHVkZSBwbHVnLWlucyAoIlBsdWctaW5zIiksXG5cCi0gICAgIHBsdWctaW4gZnJhZ21lbnRzICgiRnJhZ21lbnRzIiksIGFuZCBmZWF0dXJlcyAoIkZlYXR1cmVzIikuXG5cCi0gICAtIEVhY2ggUGx1Zy1pbiBvciBGcmFnbWVudCBtYXkgYmUgcGFja2FnZWQgYXMgYSBzdWItZGlyZWN0b3J5IG9yIEpBUiAoSmF2YT8gQVJjaGl2ZSlcblwKLSAgICAgaW4gYSBkaXJlY3RvcnkgbmFtZWQgInBsdWdpbnMiLlxuXAotICAgLSBBIEZlYXR1cmUgaXMgYSBidW5kbGUgb2Ygb25lIG9yIG1vcmUgUGx1Zy1pbnMgYW5kL29yIEZyYWdtZW50cyBhbmQgYXNzb2NpYXRlZCBtYXRlcmlhbC5cblwKLSAgICAgRWFjaCBGZWF0dXJlIG1heSBiZSBwYWNrYWdlZCBhcyBhIHN1Yi1kaXJlY3RvcnkgaW4gYSBkaXJlY3RvcnkgbmFtZWQgImZlYXR1cmVzIi5cblwKLSAgICAgV2l0aGluIGEgRmVhdHVyZSwgZmlsZXMgbmFtZWQgImZlYXR1cmUueG1sIiBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uXG5cCi0gICAgIG51bWJlcnMgb2YgdGhlIFBsdWctaW5zIGFuZC9vciBGcmFnbWVudHMgYXNzb2NpYXRlZCB3aXRoIHRoYXQgRmVhdHVyZS5cblwKLSAgIC0gRmVhdHVyZXMgbWF5IGFsc28gaW5jbHVkZSBvdGhlciBGZWF0dXJlcyAoIkluY2x1ZGVkIEZlYXR1cmVzIikuIFdpdGhpbiBhIEZlYXR1cmUsIGZpbGVzXG5cCi0gICAgIG5hbWVkICJmZWF0dXJlLnhtbCIgbWF5IGNvbnRhaW4gYSBsaXN0IG9mIHRoZSBuYW1lcyBhbmQgdmVyc2lvbiBudW1iZXJzIG9mIEluY2x1ZGVkIEZlYXR1cmVzLlxuXAotXG5cCi1GZWF0dXJlcyBtYXkgYWxzbyBpbmNsdWRlIG90aGVyIEZlYXR1cmVzICgiSW5jbHVkZWQgRmVhdHVyZXMiKS4gRmlsZXMgbmFtZWRcblwKLSJmZWF0dXJlLnhtbCIgbWF5IGNvbnRhaW4gYSBsaXN0IG9mIHRoZSBuYW1lcyBhbmQgdmVyc2lvbiBudW1iZXJzIG9mXG5cCi1JbmNsdWRlZCBGZWF0dXJlcy5cblwKLVxuXAotVGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybmluZyBQbHVnLWlucyBhbmQgRnJhZ21lbnRzIHNob3VsZCBiZVxuXAotY29udGFpbmVkIGluIGZpbGVzIG5hbWVkICJhYm91dC5odG1sIiAoIkFib3V0cyIpLiBUaGUgdGVybXMgYW5kXG5cCi1jb25kaXRpb25zIGdvdmVybmluZyBGZWF0dXJlcyBhbmQgSW5jbHVkZWQgRmVhdHVyZXMgc2hvdWxkIGJlIGNvbnRhaW5lZFxuXAotaW4gZmlsZXMgbmFtZWQgImxpY2Vuc2UuaHRtbCIgKCJGZWF0dXJlIExpY2Vuc2VzIikuIEFib3V0cyBhbmQgRmVhdHVyZVxuXAotTGljZW5zZXMgbWF5IGJlIGxvY2F0ZWQgaW4gYW55IGRpcmVjdG9yeSBvZiBhIERvd25sb2FkIG9yIE1vZHVsZVxuXAotaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG8gdGhlIGZvbGxvd2luZyBsb2NhdGlvbnM6XG5cCi1cblwKLSAgIC0gVGhlIHRvcC1sZXZlbCAocm9vdCkgZGlyZWN0b3J5XG5cCi0gICAtIFBsdWctaW4gYW5kIEZyYWdtZW50IGRpcmVjdG9yaWVzXG5cCi0gICAtIEluc2lkZSBQbHVnLWlucyBhbmQgRnJhZ21lbnRzIHBhY2thZ2VkIGFzIEpBUnNcblwKLSAgIC0gU3ViLWRpcmVjdG9yaWVzIG9mIHRoZSBkaXJlY3RvcnkgbmFtZWQgInNyYyIgb2YgY2VydGFpbiBQbHVnLWluc1xuXAotICAgLSBGZWF0dXJlIGRpcmVjdG9yaWVzXG5cCi1cblwKLU5vdGU6IGlmIGEgRmVhdHVyZSBtYWRlIGF2YWlsYWJsZSBieSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIGlzIGluc3RhbGxlZCB1c2luZyB0aGVcblwKLUVjbGlwc2UgVXBkYXRlIE1hbmFnZXIsIHlvdSBtdXN0IGFncmVlIHRvIGEgbGljZW5zZSAoIkZlYXR1cmUgVXBkYXRlXG5cCi1MaWNlbnNlIikgZHVyaW5nIHRoZSBpbnN0YWxsYXRpb24gcHJvY2Vzcy4gSWYgdGhlIEZlYXR1cmUgY29udGFpbnNcblwKLUluY2x1ZGVkIEZlYXR1cmVzLCB0aGUgRmVhdHVyZSBVcGRhdGUgTGljZW5zZSBzaG91bGQgZWl0aGVyIHByb3ZpZGUgeW91XG5cCi13aXRoIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm5pbmcgdGhlIEluY2x1ZGVkIEZlYXR1cmVzIG9yIGluZm9ybVxuXAoteW91IHdoZXJlIHlvdSBjYW4gbG9jYXRlIHRoZW0uIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VzIG1heSBiZSBmb3VuZCBpblxuXAotdGhlICJsaWNlbnNlIiBwcm9wZXJ0eSBvZiBmaWxlcyBuYW1lZCAiZmVhdHVyZS5wcm9wZXJ0aWVzIi4gU3VjaCBBYm91dHMsXG5cCi1GZWF0dXJlIExpY2Vuc2VzIGFuZCBGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlcyBjb250YWluIHRoZSB0ZXJtcyBhbmRcblwKLWNvbmRpdGlvbnMgKG9yIHJlZmVyZW5jZXMgdG8gc3VjaCB0ZXJtcyBhbmQgY29uZGl0aW9ucykgdGhhdCBnb3Zlcm4geW91clxuXAotdXNlIG9mIHRoZSBhc3NvY2lhdGVkIENvbnRlbnQgaW4gdGhhdCBkaXJlY3RvcnkuXG5cCi1cblwKLVRIRSBBQk9VVFMsIEZFQVRVUkUgTElDRU5TRVMgQU5EIEZFQVRVUkUgVVBEQVRFIExJQ0VOU0VTIE1BWSBSRUZFUlxuXAotVE8gVEhFIEVQTCBPUiBPVEhFUiBMSUNFTlNFIEFHUkVFTUVOVFMsIE5PVElDRVMgT1IgVEVSTVMgQU5EIENPTkRJVElPTlMuXG5cCi1TT01FIE9GIFRIRVNFIE9USEVSIExJQ0VOU0UgQUdSRUVNRU5UUyBNQVkgSU5DTFVERSAoQlVUIEFSRSBOT1QgTElNSVRFRCBUTyk6XG5cCi1cblwKLSAgICAtIENvbW1vbiBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sKVxuXAotICAgIC0gQXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UgMS4xIChhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UpXG5cCi0gICAgLSBBcGFjaGUgU29mdHdhcmUgTGljZW5zZSAyLjAgKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjApXG5cCi0gICAgLSBJQk0gUHVibGljIExpY2Vuc2UgMS4wIChhdmFpbGFibGUgYXQgaHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2RldmVsb3BlcndvcmtzL29wZW5zb3VyY2UvbGljZW5zZTEwLmh0bWwpXG5cCi0gICAgLSBNZXRybyBMaW5rIFB1YmxpYyBMaWNlbnNlIDEuMDAgKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb3Blbm1vdGlmL3N1cHBvcnRlcnMvbWV0cm9saW5rL2xpY2Vuc2UuaHRtbClcblwKLSAgICAtIE1vemlsbGEgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjEgKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3Lm1vemlsbGEub3JnL01QTC9NUEwtMS4xLmh0bWwpXG5cCi1cblwKLUlUIElTIFlPVVIgT0JMSUdBVElPTiBUTyBSRUFEIEFORCBBQ0NFUFQgQUxMIFNVQ0ggVEVSTVMgQU5EIENPTkRJVElPTlMgUFJJT1JcblwKLVRPIFVTRSBPRiBUSEUgQ09OVEVOVC4gSWYgbm8gQWJvdXQsIEZlYXR1cmUgTGljZW5zZSBvciBGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlXG5cCi1pcyBwcm92aWRlZCwgcGxlYXNlIGNvbnRhY3QgdGhlIEVjbGlwc2UgRm91bmRhdGlvbiB0byBkZXRlcm1pbmUgd2hhdCB0ZXJtcyBhbmQgY29uZGl0aW9uc1xuXAotZ292ZXJuIHRoYXQgcGFydGljdWxhciBDb250ZW50LlxuXAotXG5cCi1DcnlwdG9ncmFwaHlcblwKLVxuXAotQ29udGVudCBtYXkgY29udGFpbiBlbmNyeXB0aW9uIHNvZnR3YXJlLiBUaGUgY291bnRyeSBpbiB3aGljaCB5b3UgYXJlXG5cCi1jdXJyZW50bHkgbWF5IGhhdmUgcmVzdHJpY3Rpb25zIG9uIHRoZSBpbXBvcnQsIHBvc3Nlc3Npb24sIGFuZCB1c2UsXG5cCi1hbmQvb3IgcmUtZXhwb3J0IHRvIGFub3RoZXIgY291bnRyeSwgb2YgZW5jcnlwdGlvbiBzb2Z0d2FyZS4gQkVGT1JFXG5cCi11c2luZyBhbnkgZW5jcnlwdGlvbiBzb2Z0d2FyZSwgcGxlYXNlIGNoZWNrIHRoZSBjb3VudHJ5J3MgbGF3cyxcblwKLXJlZ3VsYXRpb25zIGFuZCBwb2xpY2llcyBjb25jZXJuaW5nIHRoZSBpbXBvcnQsIHBvc3Nlc3Npb24sIG9yIHVzZSxcblwKLWFuZCByZS1leHBvcnQgb2YgZW5jcnlwdGlvbiBzb2Z0d2FyZSwgdG8gc2VlIGlmIHRoaXMgaXMgcGVybWl0dGVkLlxuXAotXG5cCi1KYXZhIGFuZCBhbGwgSmF2YS1iYXNlZCB0cmFkZW1hcmtzIGFyZSB0cmFkZW1hcmtzIG9mIFN1biBNaWNyb3N5c3RlbXMsIEluYy4gaW4gdGhlIFVuaXRlZCBTdGF0ZXMsIG90aGVyIGNvdW50cmllcywgb3IgYm90aC5cbgotIyMjIyMjIyMjIyMgZW5kIG9mIGxpY2Vuc2UgcHJvcGVydHkgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRpZmYgLS1naXQgYS9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLmxzZi1mZWF0dXJlL2ZlYXR1cmUueG1sIGIvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5ybS5sc2YtZmVhdHVyZS9mZWF0dXJlLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGI4NTUxZi4uMDAwMDAwMAotLS0gYS9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLmxzZi1mZWF0dXJlL2ZlYXR1cmUueG1sCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxmZWF0dXJlCi0gICAgICBpZD0ib3JnLmVjbGlwc2UucHRwLnJtLmxzZiIKLSAgICAgIGxhYmVsPSIlZmVhdHVyZU5hbWUiCi0gICAgICB2ZXJzaW9uPSIyLjAuMC5xdWFsaWZpZXIiCi0gICAgICBwcm92aWRlci1uYW1lPSIlcHJvdmlkZXJOYW1lIgotICAgICAgaW1hZ2U9ImVjbGlwc2VfdXBkYXRlXzEyMC5qcGciPgotCi0gICA8ZGVzY3JpcHRpb24gdXJsPSJodHRwOi8vZWNsaXBzZS5vcmcvcHRwIj4KLSAgICAgICVkZXNjcmlwdGlvbgotICAgPC9kZXNjcmlwdGlvbj4KLQotICAgPGNvcHlyaWdodD4KLSAgICAgICVjb3B5cmlnaHQKLSAgIDwvY29weXJpZ2h0PgotCi0gICA8bGljZW5zZSB1cmw9IiVsaWNlbnNlVVJMIj4KLSAgICAgICVsaWNlbnNlCi0gICA8L2xpY2Vuc2U+Ci0KLSAgIDxyZXF1aXJlcz4KLSAgICAgIDxpbXBvcnQgcGx1Z2luPSJvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUiLz4KLSAgICAgIDxpbXBvcnQgcGx1Z2luPSJvcmcuZWNsaXBzZS5wdHAuY29yZSIvPgotICAgICAgPGltcG9ydCBwbHVnaW49Im9yZy5lY2xpcHNlLnVpIi8+Ci0gICAgICA8aW1wb3J0IHBsdWdpbj0ib3JnLmVjbGlwc2Uuc2VhcmNoIi8+Ci0gICAgICA8aW1wb3J0IHBsdWdpbj0ib3JnLmVjbGlwc2UuZGVidWcuY29yZSIvPgotICAgICAgPGltcG9ydCBwbHVnaW49Im9yZy5lY2xpcHNlLnB0cC5yZW1vdGUiLz4KLSAgICAgIDxpbXBvcnQgcGx1Z2luPSJvcmcuZWNsaXBzZS5wdHAucHJveHkucHJvdG9jb2wiLz4KLSAgICAgIDxpbXBvcnQgcGx1Z2luPSJvcmcuZWNsaXBzZS5kZWJ1Zy51aSIvPgotICAgICAgPGltcG9ydCBwbHVnaW49Im9yZy5lY2xpcHNlLnB0cC51aSIvPgotICAgICAgPGltcG9ydCBwbHVnaW49Im9yZy5lY2xpcHNlLnB0cC5sYXVuY2giLz4KLSAgIDwvcmVxdWlyZXM+Ci0KLSAgIDxwbHVnaW4KLSAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wdHAucm0ubHNmLmNvcmUiCi0gICAgICAgICBkb3dubG9hZC1zaXplPSIwIgotICAgICAgICAgaW5zdGFsbC1zaXplPSIwIgotICAgICAgICAgdmVyc2lvbj0iMC4wLjAiCi0gICAgICAgICB1bnBhY2s9ImZhbHNlIi8+Ci0KLSAgIDxwbHVnaW4KLSAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wdHAucm0ubHNmLnByb3h5IgotICAgICAgICAgZG93bmxvYWQtc2l6ZT0iMCIKLSAgICAgICAgIGluc3RhbGwtc2l6ZT0iMCIKLSAgICAgICAgIHZlcnNpb249IjAuMC4wIi8+Ci0KLSAgIDxwbHVnaW4KLSAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wdHAucm0ubHNmLnVpIgotICAgICAgICAgZG93bmxvYWQtc2l6ZT0iMCIKLSAgICAgICAgIGluc3RhbGwtc2l6ZT0iMCIKLSAgICAgICAgIHZlcnNpb249IjAuMC4wIgotICAgICAgICAgdW5wYWNrPSJmYWxzZSIvPgotCi08L2ZlYXR1cmU+CmRpZmYgLS1naXQgYS9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLmxzZi1mZWF0dXJlL2xpY2Vuc2UuaHRtbCBiL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0ubHNmLWZlYXR1cmUvbGljZW5zZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNmFmOTY2Li4wMDAwMDAwCi0tLSBhL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0ubHNmLWZlYXR1cmUvbGljZW5zZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNzkgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMC8vRU4iPgotPGh0bWw+Ci08aGVhZD4KLTxtZXRhIGh0dHAtZXF1aXY9Q29udGVudC1UeXBlIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KLTx0aXRsZT5FY2xpcHNlLm9yZyBTb2Z0d2FyZSBVc2VyIEFncmVlbWVudDwvdGl0bGU+Ci08L2hlYWQ+Ci0KLTxib2R5IGxhbmc9IkVOLVVTIiBsaW5rPWJsdWUgdmxpbms9cHVycGxlPgotPGgyPkVjbGlwc2UgRm91bmRhdGlvbiBTb2Z0d2FyZSBVc2VyIEFncmVlbWVudDwvaDI+Ci08cD5NYXJjaCAxNywgMjAwNTwvcD4KLQotPGgzPlVzYWdlIE9mIENvbnRlbnQ8L2gzPgotCi08cD5USEUgRUNMSVBTRSBGT1VOREFUSU9OIE1BS0VTIEFWQUlMQUJMRSBTT0ZUV0FSRSwgRE9DVU1FTlRBVElPTiwgSU5GT1JNQVRJT04gQU5EL09SIE9USEVSIE1BVEVSSUFMUyBGT1IgT1BFTiBTT1VSQ0UgUFJPSkVDVFMKLSAgIChDT0xMRUNUSVZFTFkgJnF1b3Q7Q09OVEVOVCZxdW90OykuICBVU0UgT0YgVEhFIENPTlRFTlQgSVMgR09WRVJORUQgQlkgVEhFIFRFUk1TIEFORCBDT05ESVRJT05TIE9GIFRISVMgQUdSRUVNRU5UIEFORC9PUiBUSEUgVEVSTVMgQU5ECi0gICBDT05ESVRJT05TIE9GIExJQ0VOU0UgQUdSRUVNRU5UUyBPUiBOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEIEJFTE9XLiAgQlkgVVNJTkcgVEhFIENPTlRFTlQsIFlPVSBBR1JFRSBUSEFUIFlPVVIgVVNFCi0gICBPRiBUSEUgQ09OVEVOVCBJUyBHT1ZFUk5FRCBCWSBUSElTIEFHUkVFTUVOVCBBTkQvT1IgVEhFIFRFUk1TIEFORCBDT05ESVRJT05TIE9GIEFOWSBBUFBMSUNBQkxFIExJQ0VOU0UgQUdSRUVNRU5UUyBPUgotICAgTk9USUNFUyBJTkRJQ0FURUQgT1IgUkVGRVJFTkNFRCBCRUxPVy4gIElGIFlPVSBETyBOT1QgQUdSRUUgVE8gVEhFIFRFUk1TIEFORCBDT05ESVRJT05TIE9GIFRISVMgQUdSRUVNRU5UIEFORCBUSEUgVEVSTVMgQU5ECi0gICBDT05ESVRJT05TIE9GIEFOWSBBUFBMSUNBQkxFIExJQ0VOU0UgQUdSRUVNRU5UUyBPUiBOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEIEJFTE9XLCBUSEVOIFlPVSBNQVkgTk9UIFVTRSBUSEUgQ09OVEVOVC48L3A+Ci0gICAKLTxoMz5BcHBsaWNhYmxlIExpY2Vuc2VzPC9oMz4gICAKLSAgIAotPHA+VW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQsIGFsbCBDb250ZW50IG1hZGUgYXZhaWxhYmxlIGJ5IHRoZSBFY2xpcHNlIEZvdW5kYXRpb24gaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMAotICAgKCZxdW90O0VQTCZxdW90OykuICBBIGNvcHkgb2YgdGhlIEVQTCBpcyBwcm92aWRlZCB3aXRoIHRoaXMgQ29udGVudCBhbmQgaXMgYWxzbyBhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sPC9hPi4KLSAgIEZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAmcXVvdDtQcm9ncmFtJnF1b3Q7IHdpbGwgbWVhbiB0aGUgQ29udGVudC48L3A+Ci0KLTxwPkNvbnRlbnQgaW5jbHVkZXMsIGJ1dCBpcyBub3QgbGltaXRlZCB0bywgc291cmNlIGNvZGUsIG9iamVjdCBjb2RlLCBkb2N1bWVudGF0aW9uIGFuZCBvdGhlciBmaWxlcyBtYWludGFpbmVkIGluIHRoZSBFY2xpcHNlLm9yZyBDVlMgcmVwb3NpdG9yeSAoJnF1b3Q7UmVwb3NpdG9yeSZxdW90OykgaW4gQ1ZTCi0gICBtb2R1bGVzICgmcXVvdDtNb2R1bGVzJnF1b3Q7KSBhbmQgbWFkZSBhdmFpbGFibGUgYXMgZG93bmxvYWRhYmxlIGFyY2hpdmVzICgmcXVvdDtEb3dubG9hZHMmcXVvdDspLjwvcD4KLSAgIAotPHVsPgotCTxsaT5Db250ZW50IG1heSBiZSBzdHJ1Y3R1cmVkIGFuZCBwYWNrYWdlZCBpbnRvIG1vZHVsZXMgdG8gZmFjaWxpdGF0ZSBkZWxpdmVyaW5nLCBleHRlbmRpbmcsIGFuZCB1cGdyYWRpbmcgdGhlIENvbnRlbnQuICBUeXBpY2FsIG1vZHVsZXMgbWF5IGluY2x1ZGUgcGx1Zy1pbnMgKCZxdW90O1BsdWctaW5zJnF1b3Q7KSwgcGx1Zy1pbiBmcmFnbWVudHMgKCZxdW90O0ZyYWdtZW50cyZxdW90OyksIGFuZCBmZWF0dXJlcyAoJnF1b3Q7RmVhdHVyZXMmcXVvdDspLjwvbGk+Ci0JPGxpPkVhY2ggUGx1Zy1pbiBvciBGcmFnbWVudCBtYXkgYmUgcGFja2FnZWQgYXMgYSBzdWItZGlyZWN0b3J5IG9yIEpBUiAoSmF2YSZ0cmFkZTsgQVJjaGl2ZSkgaW4gYSBkaXJlY3RvcnkgbmFtZWQgJnF1b3Q7cGx1Z2lucyZxdW90Oy48L2xpPgotCTxsaT5BIEZlYXR1cmUgaXMgYSBidW5kbGUgb2Ygb25lIG9yIG1vcmUgUGx1Zy1pbnMgYW5kL29yIEZyYWdtZW50cyBhbmQgYXNzb2NpYXRlZCBtYXRlcmlhbC4gIEVhY2ggRmVhdHVyZSBtYXkgYmUgcGFja2FnZWQgYXMgYSBzdWItZGlyZWN0b3J5IGluIGEgZGlyZWN0b3J5IG5hbWVkICZxdW90O2ZlYXR1cmVzJnF1b3Q7LiAgV2l0aGluIGEgRmVhdHVyZSwgZmlsZXMgbmFtZWQgJnF1b3Q7ZmVhdHVyZS54bWwmcXVvdDsgbWF5IGNvbnRhaW4gYSBsaXN0IG9mIHRoZSBuYW1lcyBhbmQgdmVyc2lvbiBudW1iZXJzIG9mIHRoZSBQbHVnLWlucwotICAgICAgYW5kL29yIEZyYWdtZW50cyBhc3NvY2lhdGVkIHdpdGggdGhhdCBGZWF0dXJlLjwvbGk+Ci0JPGxpPkZlYXR1cmVzIG1heSBhbHNvIGluY2x1ZGUgb3RoZXIgRmVhdHVyZXMgKCZxdW90O0luY2x1ZGVkIEZlYXR1cmVzJnF1b3Q7KS4gV2l0aGluIGEgRmVhdHVyZSwgZmlsZXMgbmFtZWQgJnF1b3Q7ZmVhdHVyZS54bWwmcXVvdDsgbWF5IGNvbnRhaW4gYSBsaXN0IG9mIHRoZSBuYW1lcyBhbmQgdmVyc2lvbiBudW1iZXJzIG9mIEluY2x1ZGVkIEZlYXR1cmVzLjwvbGk+Ci08L3VsPiAgIAotIAotPHA+VGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybmluZyBQbHVnLWlucyBhbmQgRnJhZ21lbnRzIHNob3VsZCBiZSBjb250YWluZWQgaW4gZmlsZXMgbmFtZWQgJnF1b3Q7YWJvdXQuaHRtbCZxdW90OyAoJnF1b3Q7QWJvdXRzJnF1b3Q7KS4gVGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybmluZyBGZWF0dXJlcyBhbmQKLUluY2x1ZGVkIEZlYXR1cmVzIHNob3VsZCBiZSBjb250YWluZWQgaW4gZmlsZXMgbmFtZWQgJnF1b3Q7bGljZW5zZS5odG1sJnF1b3Q7ICgmcXVvdDtGZWF0dXJlIExpY2Vuc2VzJnF1b3Q7KS4gIEFib3V0cyBhbmQgRmVhdHVyZSBMaWNlbnNlcyBtYXkgYmUgbG9jYXRlZCBpbiBhbnkgZGlyZWN0b3J5IG9mIGEgRG93bmxvYWQgb3IgTW9kdWxlCi1pbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0byB0aGUgZm9sbG93aW5nIGxvY2F0aW9uczo8L3A+Ci0KLTx1bD4KLQk8bGk+VGhlIHRvcC1sZXZlbCAocm9vdCkgZGlyZWN0b3J5PC9saT4KLQk8bGk+UGx1Zy1pbiBhbmQgRnJhZ21lbnQgZGlyZWN0b3JpZXM8L2xpPgotCTxsaT5JbnNpZGUgUGx1Zy1pbnMgYW5kIEZyYWdtZW50cyBwYWNrYWdlZCBhcyBKQVJzPC9saT4KLQk8bGk+U3ViLWRpcmVjdG9yaWVzIG9mIHRoZSBkaXJlY3RvcnkgbmFtZWQgJnF1b3Q7c3JjJnF1b3Q7IG9mIGNlcnRhaW4gUGx1Zy1pbnM8L2xpPgotCTxsaT5GZWF0dXJlIGRpcmVjdG9yaWVzPC9saT4KLTwvdWw+Ci0JCQotPHA+Tm90ZTogaWYgYSBGZWF0dXJlIG1hZGUgYXZhaWxhYmxlIGJ5IHRoZSBFY2xpcHNlIEZvdW5kYXRpb24gaXMgaW5zdGFsbGVkIHVzaW5nIHRoZSBFY2xpcHNlIFVwZGF0ZSBNYW5hZ2VyLCB5b3UgbXVzdCBhZ3JlZSB0byBhIGxpY2Vuc2UgKCZxdW90O0ZlYXR1cmUgVXBkYXRlIExpY2Vuc2UmcXVvdDspIGR1cmluZyB0aGUKLWluc3RhbGxhdGlvbiBwcm9jZXNzLiAgSWYgdGhlIEZlYXR1cmUgY29udGFpbnMgSW5jbHVkZWQgRmVhdHVyZXMsIHRoZSBGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlIHNob3VsZCBlaXRoZXIgcHJvdmlkZSB5b3Ugd2l0aCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZ292ZXJuaW5nIHRoZSBJbmNsdWRlZCBGZWF0dXJlcyBvcgotaW5mb3JtIHlvdSB3aGVyZSB5b3UgY2FuIGxvY2F0ZSB0aGVtLiAgRmVhdHVyZSBVcGRhdGUgTGljZW5zZXMgbWF5IGJlIGZvdW5kIGluIHRoZSAmcXVvdDtsaWNlbnNlJnF1b3Q7IHByb3BlcnR5IG9mIGZpbGVzIG5hbWVkICZxdW90O2ZlYXR1cmUucHJvcGVydGllcyZxdW90OyBmb3VuZCB3aXRoaW4gYSBGZWF0dXJlLgotU3VjaCBBYm91dHMsIEZlYXR1cmUgTGljZW5zZXMsIGFuZCBGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlcyBjb250YWluIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyAob3IgcmVmZXJlbmNlcyB0byBzdWNoIHRlcm1zIGFuZCBjb25kaXRpb25zKSB0aGF0IGdvdmVybiB5b3VyIHVzZSBvZiB0aGUgYXNzb2NpYXRlZCBDb250ZW50IGluCi10aGF0IGRpcmVjdG9yeS48L3A+Ci0KLTxwPlRIRSBBQk9VVFMsIEZFQVRVUkUgTElDRU5TRVMsIEFORCBGRUFUVVJFIFVQREFURSBMSUNFTlNFUyBNQVkgUkVGRVIgVE8gVEhFIEVQTCBPUiBPVEhFUiBMSUNFTlNFIEFHUkVFTUVOVFMsIE5PVElDRVMgT1IgVEVSTVMgQU5EIENPTkRJVElPTlMuICBTT01FIE9GIFRIRVNFCi1PVEhFUiBMSUNFTlNFIEFHUkVFTUVOVFMgTUFZIElOQ0xVREUgKEJVVCBBUkUgTk9UIExJTUlURUQgVE8pOjwvcD4KLQotPHVsPgotCTxsaT5Db21tb24gUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgKGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2NwbC12MTAuaHRtbCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9jcGwtdjEwLmh0bWw8L2E+KTwvbGk+Ci0JPGxpPkFwYWNoZSBTb2Z0d2FyZSBMaWNlbnNlIDEuMSAoYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFIj5odHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRTwvYT4pPC9saT4KLQk8bGk+QXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UgMi4wIChhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIj5odHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjA8L2E+KTwvbGk+Ci0JPGxpPklCTSBQdWJsaWMgTGljZW5zZSAxLjAgKGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vZGV2ZWxvcGVyd29ya3Mvb3BlbnNvdXJjZS9saWNlbnNlMTAuaHRtbCI+aHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2RldmVsb3BlcndvcmtzL29wZW5zb3VyY2UvbGljZW5zZTEwLmh0bWw8L2E+KTwvbGk+CQotCTxsaT5NZXRybyBMaW5rIFB1YmxpYyBMaWNlbnNlIDEuMDAgKGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb3Blbm1vdGlmL3N1cHBvcnRlcnMvbWV0cm9saW5rL2xpY2Vuc2UuaHRtbCI+aHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL29wZW5tb3RpZi9zdXBwb3J0ZXJzL21ldHJvbGluay9saWNlbnNlLmh0bWw8L2E+KTwvbGk+Ci0JPGxpPk1vemlsbGEgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjEgKGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3Lm1vemlsbGEub3JnL01QTC9NUEwtMS4xLmh0bWwiPmh0dHA6Ly93d3cubW96aWxsYS5vcmcvTVBML01QTC0xLjEuaHRtbDwvYT4pPC9saT4KLTwvdWw+Ci0KLTxwPklUIElTIFlPVVIgT0JMSUdBVElPTiBUTyBSRUFEIEFORCBBQ0NFUFQgQUxMIFNVQ0ggVEVSTVMgQU5EIENPTkRJVElPTlMgUFJJT1IgVE8gVVNFIE9GIFRIRSBDT05URU5ULiAgSWYgbm8gQWJvdXQsIEZlYXR1cmUgTGljZW5zZSwgb3IgRmVhdHVyZSBVcGRhdGUgTGljZW5zZSBpcyBwcm92aWRlZCwgcGxlYXNlCi1jb250YWN0IHRoZSBFY2xpcHNlIEZvdW5kYXRpb24gdG8gZGV0ZXJtaW5lIHdoYXQgdGVybXMgYW5kIGNvbmRpdGlvbnMgZ292ZXJuIHRoYXQgcGFydGljdWxhciBDb250ZW50LjwvcD4KLQotPGgzPkNyeXB0b2dyYXBoeTwvaDM+Ci0KLTxwPkNvbnRlbnQgbWF5IGNvbnRhaW4gZW5jcnlwdGlvbiBzb2Z0d2FyZS4gVGhlIGNvdW50cnkgaW4gd2hpY2ggeW91IGFyZSBjdXJyZW50bHkgbWF5IGhhdmUgcmVzdHJpY3Rpb25zIG9uIHRoZSBpbXBvcnQsIHBvc3Nlc3Npb24sIGFuZCB1c2UsIGFuZC9vciByZS1leHBvcnQgdG8KLSAgIGFub3RoZXIgY291bnRyeSwgb2YgZW5jcnlwdGlvbiBzb2Z0d2FyZS4gQkVGT1JFIHVzaW5nIGFueSBlbmNyeXB0aW9uIHNvZnR3YXJlLCBwbGVhc2UgY2hlY2sgdGhlIGNvdW50cnkncyBsYXdzLCByZWd1bGF0aW9ucyBhbmQgcG9saWNpZXMgY29uY2VybmluZyB0aGUgaW1wb3J0LAotICAgcG9zc2Vzc2lvbiwgb3IgdXNlLCBhbmQgcmUtZXhwb3J0IG9mIGVuY3J5cHRpb24gc29mdHdhcmUsIHRvIHNlZSBpZiB0aGlzIGlzIHBlcm1pdHRlZC48L3A+Ci0gICAKLTxzbWFsbD5KYXZhIGFuZCBhbGwgSmF2YS1iYXNlZCB0cmFkZW1hcmtzIGFyZSB0cmFkZW1hcmtzIG9mIFN1biBNaWNyb3N5c3RlbXMsIEluYy4gaW4gdGhlIFVuaXRlZCBTdGF0ZXMsIG90aGVyIGNvdW50cmllcywgb3IgYm90aC48L3NtYWxsPiAgIAotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5ybS5tcGljaDItZmVhdHVyZS8ucHJvamVjdCBiL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0ubXBpY2gyLWZlYXR1cmUvLnByb2plY3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyZjQ3NmYuLjAwMDAwMDAKLS0tIGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5ybS5tcGljaDItZmVhdHVyZS8ucHJvamVjdAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08cHJvamVjdERlc2NyaXB0aW9uPgotCTxuYW1lPm9yZy5lY2xpcHNlLnB0cC5ybS5tcGljaDItZmVhdHVyZTwvbmFtZT4KLQk8Y29tbWVudD48L2NvbW1lbnQ+Ci0JPHByb2plY3RzPgotCTwvcHJvamVjdHM+Ci0JPGJ1aWxkU3BlYz4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5GZWF0dXJlQnVpbGRlcjwvbmFtZT4KLQkJCTxhcmd1bWVudHM+Ci0JCQk8L2FyZ3VtZW50cz4KLQkJPC9idWlsZENvbW1hbmQ+Ci0JPC9idWlsZFNwZWM+Ci0JPG5hdHVyZXM+Ci0JCTxuYXR1cmU+b3JnLmVjbGlwc2UucGRlLkZlYXR1cmVOYXR1cmU8L25hdHVyZT4KLQk8L25hdHVyZXM+Ci08L3Byb2plY3REZXNjcmlwdGlvbj4KZGlmZiAtLWdpdCBhL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0ubXBpY2gyLWZlYXR1cmUvYnVpbGQucHJvcGVydGllcyBiL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0ubXBpY2gyLWZlYXR1cmUvYnVpbGQucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjc5ZGY4Zi4uMDAwMDAwMAotLS0gYS9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLm1waWNoMi1mZWF0dXJlL2J1aWxkLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLWJpbi5pbmNsdWRlcyA9IGZlYXR1cmUueG1sLFwKLSAgICAgICAgICAgICAgIGxpY2Vuc2UuaHRtbCxcCi0gICAgICAgICAgICAgICBmZWF0dXJlLnByb3BlcnRpZXMsXAotICAgICAgICAgICAgICAgZXBsLXYxMC5odG1sCmRpZmYgLS1naXQgYS9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLm1waWNoMi1mZWF0dXJlL2VwbC12MTAuaHRtbCBiL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0ubXBpY2gyLWZlYXR1cmUvZXBsLXYxMC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDRiMTk2Li4wMDAwMDAwCi0tLSBhL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0ubXBpY2gyLWZlYXR1cmUvZXBsLXYxMC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzI4ICswLDAgQEAKLTxodG1sIHhtbG5zOm89InVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZSIKLXhtbG5zOnc9InVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOndvcmQiCi14bWxucz0iaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLWh0bWw0MCI+Ci0KLTxoZWFkPgotPG1ldGEgaHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXdpbmRvd3MtMTI1MiI+Ci08bWV0YSBuYW1lPVByb2dJZCBjb250ZW50PVdvcmQuRG9jdW1lbnQ+Ci08bWV0YSBuYW1lPUdlbmVyYXRvciBjb250ZW50PSJNaWNyb3NvZnQgV29yZCA5Ij4KLTxtZXRhIG5hbWU9T3JpZ2luYXRvciBjb250ZW50PSJNaWNyb3NvZnQgV29yZCA5Ij4KLTxsaW5rIHJlbD1GaWxlLUxpc3QKLWhyZWY9Ii4vRWNsaXBzZSUyMEVQTCUyMDIwMDNfMTFfMTAlMjBGaW5hbF9maWxlcy9maWxlbGlzdC54bWwiPgotPHRpdGxlPkVjbGlwc2UgUHVibGljIExpY2Vuc2UgLSBWZXJzaW9uIDEuMDwvdGl0bGU+Ci08IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4KLSA8bzpEb2N1bWVudFByb3BlcnRpZXM+Ci0gIDxvOlJldmlzaW9uPjI8L286UmV2aXNpb24+Ci0gIDxvOlRvdGFsVGltZT4zPC9vOlRvdGFsVGltZT4KLSAgPG86Q3JlYXRlZD4yMDA0LTAzLTA1VDIzOjAzOjAwWjwvbzpDcmVhdGVkPgotICA8bzpMYXN0U2F2ZWQ+MjAwNC0wMy0wNVQyMzowMzowMFo8L286TGFzdFNhdmVkPgotICA8bzpQYWdlcz40PC9vOlBhZ2VzPgotICA8bzpXb3Jkcz4xNjI2PC9vOldvcmRzPgotICA8bzpDaGFyYWN0ZXJzPjkyNzA8L286Q2hhcmFjdGVycz4KLSAgIDxvOkxpbmVzPjc3PC9vOkxpbmVzPgotICA8bzpQYXJhZ3JhcGhzPjE4PC9vOlBhcmFncmFwaHM+Ci0gIDxvOkNoYXJhY3RlcnNXaXRoU3BhY2VzPjExMzg0PC9vOkNoYXJhY3RlcnNXaXRoU3BhY2VzPgotICA8bzpWZXJzaW9uPjkuNDQwMjwvbzpWZXJzaW9uPgotIDwvbzpEb2N1bWVudFByb3BlcnRpZXM+Ci08L3htbD48IVtlbmRpZl0tLT48IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4KLSA8dzpXb3JkRG9jdW1lbnQ+Ci0gIDx3OlRyYWNrUmV2aXNpb25zLz4KLSA8L3c6V29yZERvY3VtZW50PgotPC94bWw+PCFbZW5kaWZdLS0+Ci08c3R5bGU+Ci08IS0tCi0gLyogRm9udCBEZWZpbml0aW9ucyAqLwotQGZvbnQtZmFjZQotCXtmb250LWZhbWlseTpUYWhvbWE7Ci0JcGFub3NlLTE6MiAxMSA2IDQgMyA1IDQgNCAyIDQ7Ci0JbXNvLWZvbnQtY2hhcnNldDowOwotCW1zby1nZW5lcmljLWZvbnQtZmFtaWx5OnN3aXNzOwotCW1zby1mb250LXBpdGNoOnZhcmlhYmxlOwotCW1zby1mb250LXNpZ25hdHVyZTo1NTM2Nzk0OTUgLTIxNDc0ODM2NDggOCAwIDY2MDQ3IDA7fQotIC8qIFN0eWxlIERlZmluaXRpb25zICovCi1wLk1zb05vcm1hbCwgbGkuTXNvTm9ybWFsLCBkaXYuTXNvTm9ybWFsCi0Je21zby1zdHlsZS1wYXJlbnQ6IiI7Ci0JbWFyZ2luOjBpbjsKLQltYXJnaW4tYm90dG9tOi4wMDAxcHQ7Ci0JbXNvLXBhZ2luYXRpb246d2lkb3ctb3JwaGFuOwotCWZvbnQtc2l6ZToxMi4wcHQ7Ci0JZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7Ci0JbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7fQotcAotCXttYXJnaW4tcmlnaHQ6MGluOwotCW1zby1tYXJnaW4tdG9wLWFsdDphdXRvOwotCW1zby1tYXJnaW4tYm90dG9tLWFsdDphdXRvOwotCW1hcmdpbi1sZWZ0OjBpbjsKLQltc28tcGFnaW5hdGlvbjp3aWRvdy1vcnBoYW47Ci0JZm9udC1zaXplOjEyLjBwdDsKLQlmb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjsKLQltc28tZmFyZWFzdC1mb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjt9Ci1wLkJhbGxvb25UZXh0LCBsaS5CYWxsb29uVGV4dCwgZGl2LkJhbGxvb25UZXh0Ci0Je21zby1zdHlsZS1uYW1lOiJCYWxsb29uIFRleHQiOwotCW1hcmdpbjowaW47Ci0JbWFyZ2luLWJvdHRvbTouMDAwMXB0OwotCW1zby1wYWdpbmF0aW9uOndpZG93LW9ycGhhbjsKLQlmb250LXNpemU6OC4wcHQ7Ci0JZm9udC1mYW1pbHk6VGFob21hOwotCW1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iO30KLUBwYWdlIFNlY3Rpb24xCi0Je3NpemU6OC41aW4gMTEuMGluOwotCW1hcmdpbjoxLjBpbiAxLjI1aW4gMS4waW4gMS4yNWluOwotCW1zby1oZWFkZXItbWFyZ2luOi41aW47Ci0JbXNvLWZvb3Rlci1tYXJnaW46LjVpbjsKLQltc28tcGFwZXItc291cmNlOjA7fQotZGl2LlNlY3Rpb24xCi0Je3BhZ2U6U2VjdGlvbjE7fQotLS0+Ci08L3N0eWxlPgotPC9oZWFkPgotCi08Ym9keSBsYW5nPUVOLVVTIHN0eWxlPSd0YWItaW50ZXJ2YWw6LjVpbic+Ci0KLTxkaXYgY2xhc3M9U2VjdGlvbjE+Ci0KLTxwIGFsaWduPWNlbnRlciBzdHlsZT0ndGV4dC1hbGlnbjpjZW50ZXInPjxiPkVjbGlwc2UgUHVibGljIExpY2Vuc2UgLSB2IDEuMDwvYj4KLTwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPlRIRSBBQ0NPTVBBTllJTkcgUFJPR1JBTSBJUyBQUk9WSURFRCBVTkRFUgotVEhFIFRFUk1TIE9GIFRISVMgRUNMSVBTRSBQVUJMSUMgTElDRU5TRSAoJnF1b3Q7QUdSRUVNRU5UJnF1b3Q7KS4gQU5ZIFVTRSwKLVJFUFJPRFVDVElPTiBPUiBESVNUUklCVVRJT04gT0YgVEhFIFBST0dSQU0gQ09OU1RJVFVURVMgUkVDSVBJRU5UJ1MgQUNDRVBUQU5DRQotT0YgVEhJUyBBR1JFRU1FTlQuPC9zcGFuPiA8L3A+Ci0KLTxwPjxiPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4xLiBERUZJTklUSU9OUzwvc3Bhbj48L2I+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPiZxdW90O0NvbnRyaWJ1dGlvbiZxdW90OyBtZWFuczo8L3NwYW4+IDwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+YSkKLWluIHRoZSBjYXNlIG9mIHRoZSBpbml0aWFsIENvbnRyaWJ1dG9yLCB0aGUgaW5pdGlhbCBjb2RlIGFuZCBkb2N1bWVudGF0aW9uCi1kaXN0cmlidXRlZCB1bmRlciB0aGlzIEFncmVlbWVudCwgYW5kPGJyIGNsZWFyPWxlZnQ+Ci1iKSBpbiB0aGUgY2FzZSBvZiBlYWNoIHN1YnNlcXVlbnQgQ29udHJpYnV0b3I6PC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+aSkKLWNoYW5nZXMgdG8gdGhlIFByb2dyYW0sIGFuZDwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmlpKQotYWRkaXRpb25zIHRvIHRoZSBQcm9ncmFtOzwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPndoZXJlCi1zdWNoIGNoYW5nZXMgYW5kL29yIGFkZGl0aW9ucyB0byB0aGUgUHJvZ3JhbSBvcmlnaW5hdGUgZnJvbSBhbmQgYXJlIGRpc3RyaWJ1dGVkCi1ieSB0aGF0IHBhcnRpY3VsYXIgQ29udHJpYnV0b3IuIEEgQ29udHJpYnV0aW9uICdvcmlnaW5hdGVzJyBmcm9tIGEgQ29udHJpYnV0b3IKLWlmIGl0IHdhcyBhZGRlZCB0byB0aGUgUHJvZ3JhbSBieSBzdWNoIENvbnRyaWJ1dG9yIGl0c2VsZiBvciBhbnlvbmUgYWN0aW5nIG9uCi1zdWNoIENvbnRyaWJ1dG9yJ3MgYmVoYWxmLiBDb250cmlidXRpb25zIGRvIG5vdCBpbmNsdWRlIGFkZGl0aW9ucyB0byB0aGUKLVByb2dyYW0gd2hpY2g6IChpKSBhcmUgc2VwYXJhdGUgbW9kdWxlcyBvZiBzb2Z0d2FyZSBkaXN0cmlidXRlZCBpbiBjb25qdW5jdGlvbgotd2l0aCB0aGUgUHJvZ3JhbSB1bmRlciB0aGVpciBvd24gbGljZW5zZSBhZ3JlZW1lbnQsIGFuZCAoaWkpIGFyZSBub3QgZGVyaXZhdGl2ZQotd29ya3Mgb2YgdGhlIFByb2dyYW0uIDwvc3Bhbj48L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4mcXVvdDtDb250cmlidXRvciZxdW90OyBtZWFucyBhbnkgcGVyc29uIG9yCi1lbnRpdHkgdGhhdCBkaXN0cmlidXRlcyB0aGUgUHJvZ3JhbS48L3NwYW4+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPiZxdW90O0xpY2Vuc2VkIFBhdGVudHMgJnF1b3Q7IG1lYW4gcGF0ZW50Ci1jbGFpbXMgbGljZW5zYWJsZSBieSBhIENvbnRyaWJ1dG9yIHdoaWNoIGFyZSBuZWNlc3NhcmlseSBpbmZyaW5nZWQgYnkgdGhlIHVzZQotb3Igc2FsZSBvZiBpdHMgQ29udHJpYnV0aW9uIGFsb25lIG9yIHdoZW4gY29tYmluZWQgd2l0aCB0aGUgUHJvZ3JhbS4gPC9zcGFuPjwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPiZxdW90O1Byb2dyYW0mcXVvdDsgbWVhbnMgdGhlIENvbnRyaWJ1dGlvbnMKLWRpc3RyaWJ1dGVkIGluIGFjY29yZGFuY2Ugd2l0aCB0aGlzIEFncmVlbWVudC48L3NwYW4+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPiZxdW90O1JlY2lwaWVudCZxdW90OyBtZWFucyBhbnlvbmUgd2hvCi1yZWNlaXZlcyB0aGUgUHJvZ3JhbSB1bmRlciB0aGlzIEFncmVlbWVudCwgaW5jbHVkaW5nIGFsbCBDb250cmlidXRvcnMuPC9zcGFuPiA8L3A+Ci0KLTxwPjxiPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4yLiBHUkFOVCBPRiBSSUdIVFM8L3NwYW4+PC9iPiA8L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmEpCi1TdWJqZWN0IHRvIHRoZSB0ZXJtcyBvZiB0aGlzIEFncmVlbWVudCwgZWFjaCBDb250cmlidXRvciBoZXJlYnkgZ3JhbnRzIFJlY2lwaWVudAotYSBub24tZXhjbHVzaXZlLCB3b3JsZHdpZGUsIHJveWFsdHktZnJlZSBjb3B5cmlnaHQgbGljZW5zZSB0bzxzcGFuCi1zdHlsZT0nY29sb3I6cmVkJz4gPC9zcGFuPnJlcHJvZHVjZSwgcHJlcGFyZSBkZXJpdmF0aXZlIHdvcmtzIG9mLCBwdWJsaWNseQotZGlzcGxheSwgcHVibGljbHkgcGVyZm9ybSwgZGlzdHJpYnV0ZSBhbmQgc3VibGljZW5zZSB0aGUgQ29udHJpYnV0aW9uIG9mIHN1Y2gKLUNvbnRyaWJ1dG9yLCBpZiBhbnksIGFuZCBzdWNoIGRlcml2YXRpdmUgd29ya3MsIGluIHNvdXJjZSBjb2RlIGFuZCBvYmplY3QgY29kZQotZm9ybS48L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5iKQotU3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhpcyBBZ3JlZW1lbnQsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cwotUmVjaXBpZW50IGEgbm9uLWV4Y2x1c2l2ZSwgd29ybGR3aWRlLDxzcGFuIHN0eWxlPSdjb2xvcjpncmVlbic+IDwvc3Bhbj5yb3lhbHR5LWZyZWUKLXBhdGVudCBsaWNlbnNlIHVuZGVyIExpY2Vuc2VkIFBhdGVudHMgdG8gbWFrZSwgdXNlLCBzZWxsLCBvZmZlciB0byBzZWxsLCBpbXBvcnQKLWFuZCBvdGhlcndpc2UgdHJhbnNmZXIgdGhlIENvbnRyaWJ1dGlvbiBvZiBzdWNoIENvbnRyaWJ1dG9yLCBpZiBhbnksIGluIHNvdXJjZQotY29kZSBhbmQgb2JqZWN0IGNvZGUgZm9ybS4gVGhpcyBwYXRlbnQgbGljZW5zZSBzaGFsbCBhcHBseSB0byB0aGUgY29tYmluYXRpb24KLW9mIHRoZSBDb250cmlidXRpb24gYW5kIHRoZSBQcm9ncmFtIGlmLCBhdCB0aGUgdGltZSB0aGUgQ29udHJpYnV0aW9uIGlzIGFkZGVkCi1ieSB0aGUgQ29udHJpYnV0b3IsIHN1Y2ggYWRkaXRpb24gb2YgdGhlIENvbnRyaWJ1dGlvbiBjYXVzZXMgc3VjaCBjb21iaW5hdGlvbgotdG8gYmUgY292ZXJlZCBieSB0aGUgTGljZW5zZWQgUGF0ZW50cy4gVGhlIHBhdGVudCBsaWNlbnNlIHNoYWxsIG5vdCBhcHBseSB0bwotYW55IG90aGVyIGNvbWJpbmF0aW9ucyB3aGljaCBpbmNsdWRlIHRoZSBDb250cmlidXRpb24uIE5vIGhhcmR3YXJlIHBlciBzZSBpcwotbGljZW5zZWQgaGVyZXVuZGVyLiA8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5jKQotUmVjaXBpZW50IHVuZGVyc3RhbmRzIHRoYXQgYWx0aG91Z2ggZWFjaCBDb250cmlidXRvciBncmFudHMgdGhlIGxpY2Vuc2VzIHRvIGl0cwotQ29udHJpYnV0aW9ucyBzZXQgZm9ydGggaGVyZWluLCBubyBhc3N1cmFuY2VzIGFyZSBwcm92aWRlZCBieSBhbnkgQ29udHJpYnV0b3IKLXRoYXQgdGhlIFByb2dyYW0gZG9lcyBub3QgaW5mcmluZ2UgdGhlIHBhdGVudCBvciBvdGhlciBpbnRlbGxlY3R1YWwgcHJvcGVydHkKLXJpZ2h0cyBvZiBhbnkgb3RoZXIgZW50aXR5LiBFYWNoIENvbnRyaWJ1dG9yIGRpc2NsYWltcyBhbnkgbGlhYmlsaXR5IHRvIFJlY2lwaWVudAotZm9yIGNsYWltcyBicm91Z2h0IGJ5IGFueSBvdGhlciBlbnRpdHkgYmFzZWQgb24gaW5mcmluZ2VtZW50IG9mIGludGVsbGVjdHVhbAotcHJvcGVydHkgcmlnaHRzIG9yIG90aGVyd2lzZS4gQXMgYSBjb25kaXRpb24gdG8gZXhlcmNpc2luZyB0aGUgcmlnaHRzIGFuZAotbGljZW5zZXMgZ3JhbnRlZCBoZXJldW5kZXIsIGVhY2ggUmVjaXBpZW50IGhlcmVieSBhc3N1bWVzIHNvbGUgcmVzcG9uc2liaWxpdHkKLXRvIHNlY3VyZSBhbnkgb3RoZXIgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBuZWVkZWQsIGlmIGFueS4gRm9yIGV4YW1wbGUsCi1pZiBhIHRoaXJkIHBhcnR5IHBhdGVudCBsaWNlbnNlIGlzIHJlcXVpcmVkIHRvIGFsbG93IFJlY2lwaWVudCB0byBkaXN0cmlidXRlCi10aGUgUHJvZ3JhbSwgaXQgaXMgUmVjaXBpZW50J3MgcmVzcG9uc2liaWxpdHkgdG8gYWNxdWlyZSB0aGF0IGxpY2Vuc2UgYmVmb3JlCi1kaXN0cmlidXRpbmcgdGhlIFByb2dyYW0uPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+ZCkKLUVhY2ggQ29udHJpYnV0b3IgcmVwcmVzZW50cyB0aGF0IHRvIGl0cyBrbm93bGVkZ2UgaXQgaGFzIHN1ZmZpY2llbnQgY29weXJpZ2h0Ci1yaWdodHMgaW4gaXRzIENvbnRyaWJ1dGlvbiwgaWYgYW55LCB0byBncmFudCB0aGUgY29weXJpZ2h0IGxpY2Vuc2Ugc2V0IGZvcnRoIGluCi10aGlzIEFncmVlbWVudC4gPC9zcGFuPjwvcD4KLQotPHA+PGI+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPjMuIFJFUVVJUkVNRU5UUzwvc3Bhbj48L2I+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkEgQ29udHJpYnV0b3IgbWF5IGNob29zZSB0byBkaXN0cmlidXRlIHRoZQotUHJvZ3JhbSBpbiBvYmplY3QgY29kZSBmb3JtIHVuZGVyIGl0cyBvd24gbGljZW5zZSBhZ3JlZW1lbnQsIHByb3ZpZGVkIHRoYXQ6PC9zcGFuPgotPC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5hKQotaXQgY29tcGxpZXMgd2l0aCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhpcyBBZ3JlZW1lbnQ7IGFuZDwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmIpCi1pdHMgbGljZW5zZSBhZ3JlZW1lbnQ6PC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+aSkKLWVmZmVjdGl2ZWx5IGRpc2NsYWltcyBvbiBiZWhhbGYgb2YgYWxsIENvbnRyaWJ1dG9ycyBhbGwgd2FycmFudGllcyBhbmQKLWNvbmRpdGlvbnMsIGV4cHJlc3MgYW5kIGltcGxpZWQsIGluY2x1ZGluZyB3YXJyYW50aWVzIG9yIGNvbmRpdGlvbnMgb2YgdGl0bGUKLWFuZCBub24taW5mcmluZ2VtZW50LCBhbmQgaW1wbGllZCB3YXJyYW50aWVzIG9yIGNvbmRpdGlvbnMgb2YgbWVyY2hhbnRhYmlsaXR5Ci1hbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2U7IDwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmlpKQotZWZmZWN0aXZlbHkgZXhjbHVkZXMgb24gYmVoYWxmIG9mIGFsbCBDb250cmlidXRvcnMgYWxsIGxpYWJpbGl0eSBmb3IgZGFtYWdlcywKLWluY2x1ZGluZyBkaXJlY3QsIGluZGlyZWN0LCBzcGVjaWFsLCBpbmNpZGVudGFsIGFuZCBjb25zZXF1ZW50aWFsIGRhbWFnZXMsIHN1Y2gKLWFzIGxvc3QgcHJvZml0czsgPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+aWlpKQotc3RhdGVzIHRoYXQgYW55IHByb3Zpc2lvbnMgd2hpY2ggZGlmZmVyIGZyb20gdGhpcyBBZ3JlZW1lbnQgYXJlIG9mZmVyZWQgYnkgdGhhdAotQ29udHJpYnV0b3IgYWxvbmUgYW5kIG5vdCBieSBhbnkgb3RoZXIgcGFydHk7IGFuZDwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPml2KQotc3RhdGVzIHRoYXQgc291cmNlIGNvZGUgZm9yIHRoZSBQcm9ncmFtIGlzIGF2YWlsYWJsZSBmcm9tIHN1Y2ggQ29udHJpYnV0b3IsIGFuZAotaW5mb3JtcyBsaWNlbnNlZXMgaG93IHRvIG9idGFpbiBpdCBpbiBhIHJlYXNvbmFibGUgbWFubmVyIG9uIG9yIHRocm91Z2ggYQotbWVkaXVtIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGV4Y2hhbmdlLjxzcGFuIHN0eWxlPSdjb2xvcjpibHVlJz4gPC9zcGFuPjwvc3Bhbj48L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5XaGVuIHRoZSBQcm9ncmFtIGlzIG1hZGUgYXZhaWxhYmxlIGluIHNvdXJjZQotY29kZSBmb3JtOjwvc3Bhbj4gPC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5hKQotaXQgbXVzdCBiZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGlzIEFncmVlbWVudDsgYW5kIDwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmIpIGEKLWNvcHkgb2YgdGhpcyBBZ3JlZW1lbnQgbXVzdCBiZSBpbmNsdWRlZCB3aXRoIGVhY2ggY29weSBvZiB0aGUgUHJvZ3JhbS4gPC9zcGFuPjwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkNvbnRyaWJ1dG9ycyBtYXkgbm90IHJlbW92ZSBvciBhbHRlciBhbnkKLWNvcHlyaWdodCBub3RpY2VzIGNvbnRhaW5lZCB3aXRoaW4gdGhlIFByb2dyYW0uIDwvc3Bhbj48L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5FYWNoIENvbnRyaWJ1dG9yIG11c3QgaWRlbnRpZnkgaXRzZWxmIGFzIHRoZQotb3JpZ2luYXRvciBvZiBpdHMgQ29udHJpYnV0aW9uLCBpZiBhbnksIGluIGEgbWFubmVyIHRoYXQgcmVhc29uYWJseSBhbGxvd3MKLXN1YnNlcXVlbnQgUmVjaXBpZW50cyB0byBpZGVudGlmeSB0aGUgb3JpZ2luYXRvciBvZiB0aGUgQ29udHJpYnV0aW9uLiA8L3NwYW4+PC9wPgotCi08cD48Yj48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+NC4gQ09NTUVSQ0lBTCBESVNUUklCVVRJT048L3NwYW4+PC9iPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5Db21tZXJjaWFsIGRpc3RyaWJ1dG9ycyBvZiBzb2Z0d2FyZSBtYXkKLWFjY2VwdCBjZXJ0YWluIHJlc3BvbnNpYmlsaXRpZXMgd2l0aCByZXNwZWN0IHRvIGVuZCB1c2VycywgYnVzaW5lc3MgcGFydG5lcnMKLWFuZCB0aGUgbGlrZS4gV2hpbGUgdGhpcyBsaWNlbnNlIGlzIGludGVuZGVkIHRvIGZhY2lsaXRhdGUgdGhlIGNvbW1lcmNpYWwgdXNlCi1vZiB0aGUgUHJvZ3JhbSwgdGhlIENvbnRyaWJ1dG9yIHdobyBpbmNsdWRlcyB0aGUgUHJvZ3JhbSBpbiBhIGNvbW1lcmNpYWwKLXByb2R1Y3Qgb2ZmZXJpbmcgc2hvdWxkIGRvIHNvIGluIGEgbWFubmVyIHdoaWNoIGRvZXMgbm90IGNyZWF0ZSBwb3RlbnRpYWwKLWxpYWJpbGl0eSBmb3Igb3RoZXIgQ29udHJpYnV0b3JzLiBUaGVyZWZvcmUsIGlmIGEgQ29udHJpYnV0b3IgaW5jbHVkZXMgdGhlCi1Qcm9ncmFtIGluIGEgY29tbWVyY2lhbCBwcm9kdWN0IG9mZmVyaW5nLCBzdWNoIENvbnRyaWJ1dG9yICgmcXVvdDtDb21tZXJjaWFsCi1Db250cmlidXRvciZxdW90OykgaGVyZWJ5IGFncmVlcyB0byBkZWZlbmQgYW5kIGluZGVtbmlmeSBldmVyeSBvdGhlcgotQ29udHJpYnV0b3IgKCZxdW90O0luZGVtbmlmaWVkIENvbnRyaWJ1dG9yJnF1b3Q7KSBhZ2FpbnN0IGFueSBsb3NzZXMsIGRhbWFnZXMgYW5kCi1jb3N0cyAoY29sbGVjdGl2ZWx5ICZxdW90O0xvc3NlcyZxdW90OykgYXJpc2luZyBmcm9tIGNsYWltcywgbGF3c3VpdHMgYW5kIG90aGVyCi1sZWdhbCBhY3Rpb25zIGJyb3VnaHQgYnkgYSB0aGlyZCBwYXJ0eSBhZ2FpbnN0IHRoZSBJbmRlbW5pZmllZCBDb250cmlidXRvciB0bwotdGhlIGV4dGVudCBjYXVzZWQgYnkgdGhlIGFjdHMgb3Igb21pc3Npb25zIG9mIHN1Y2ggQ29tbWVyY2lhbCBDb250cmlidXRvciBpbgotY29ubmVjdGlvbiB3aXRoIGl0cyBkaXN0cmlidXRpb24gb2YgdGhlIFByb2dyYW0gaW4gYSBjb21tZXJjaWFsIHByb2R1Y3QKLW9mZmVyaW5nLiBUaGUgb2JsaWdhdGlvbnMgaW4gdGhpcyBzZWN0aW9uIGRvIG5vdCBhcHBseSB0byBhbnkgY2xhaW1zIG9yIExvc3NlcwotcmVsYXRpbmcgdG8gYW55IGFjdHVhbCBvciBhbGxlZ2VkIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBpbmZyaW5nZW1lbnQuIEluIG9yZGVyCi10byBxdWFsaWZ5LCBhbiBJbmRlbW5pZmllZCBDb250cmlidXRvciBtdXN0OiBhKSBwcm9tcHRseSBub3RpZnkgdGhlIENvbW1lcmNpYWwKLUNvbnRyaWJ1dG9yIGluIHdyaXRpbmcgb2Ygc3VjaCBjbGFpbSwgYW5kIGIpIGFsbG93IHRoZSBDb21tZXJjaWFsIENvbnRyaWJ1dG9yCi10byBjb250cm9sLCBhbmQgY29vcGVyYXRlIHdpdGggdGhlIENvbW1lcmNpYWwgQ29udHJpYnV0b3IgaW4sIHRoZSBkZWZlbnNlIGFuZAotYW55IHJlbGF0ZWQgc2V0dGxlbWVudCBuZWdvdGlhdGlvbnMuIFRoZSBJbmRlbW5pZmllZCBDb250cmlidXRvciBtYXkgcGFydGljaXBhdGUKLWluIGFueSBzdWNoIGNsYWltIGF0IGl0cyBvd24gZXhwZW5zZS48L3NwYW4+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkZvciBleGFtcGxlLCBhIENvbnRyaWJ1dG9yIG1pZ2h0IGluY2x1ZGUgdGhlCi1Qcm9ncmFtIGluIGEgY29tbWVyY2lhbCBwcm9kdWN0IG9mZmVyaW5nLCBQcm9kdWN0IFguIFRoYXQgQ29udHJpYnV0b3IgaXMgdGhlbiBhCi1Db21tZXJjaWFsIENvbnRyaWJ1dG9yLiBJZiB0aGF0IENvbW1lcmNpYWwgQ29udHJpYnV0b3IgdGhlbiBtYWtlcyBwZXJmb3JtYW5jZQotY2xhaW1zLCBvciBvZmZlcnMgd2FycmFudGllcyByZWxhdGVkIHRvIFByb2R1Y3QgWCwgdGhvc2UgcGVyZm9ybWFuY2UgY2xhaW1zIGFuZAotd2FycmFudGllcyBhcmUgc3VjaCBDb21tZXJjaWFsIENvbnRyaWJ1dG9yJ3MgcmVzcG9uc2liaWxpdHkgYWxvbmUuIFVuZGVyIHRoaXMKLXNlY3Rpb24sIHRoZSBDb21tZXJjaWFsIENvbnRyaWJ1dG9yIHdvdWxkIGhhdmUgdG8gZGVmZW5kIGNsYWltcyBhZ2FpbnN0IHRoZQotb3RoZXIgQ29udHJpYnV0b3JzIHJlbGF0ZWQgdG8gdGhvc2UgcGVyZm9ybWFuY2UgY2xhaW1zIGFuZCB3YXJyYW50aWVzLCBhbmQgaWYgYQotY291cnQgcmVxdWlyZXMgYW55IG90aGVyIENvbnRyaWJ1dG9yIHRvIHBheSBhbnkgZGFtYWdlcyBhcyBhIHJlc3VsdCwgdGhlCi1Db21tZXJjaWFsIENvbnRyaWJ1dG9yIG11c3QgcGF5IHRob3NlIGRhbWFnZXMuPC9zcGFuPiA8L3A+Ci0KLTxwPjxiPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz41LiBOTyBXQVJSQU5UWTwvc3Bhbj48L2I+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkVYQ0VQVCBBUyBFWFBSRVNTTFkgU0VUIEZPUlRIIElOIFRISVMKLUFHUkVFTUVOVCwgVEhFIFBST0dSQU0gSVMgUFJPVklERUQgT04gQU4gJnF1b3Q7QVMgSVMmcXVvdDsgQkFTSVMsIFdJVEhPVVQKLVdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRCBJTkNMVURJTkcsCi1XSVRIT1VUIExJTUlUQVRJT04sIEFOWSBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgVElUTEUsIE5PTi1JTkZSSU5HRU1FTlQsCi1NRVJDSEFOVEFCSUxJVFkgT1IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIEVhY2ggUmVjaXBpZW50IGlzIHNvbGVseQotcmVzcG9uc2libGUgZm9yIGRldGVybWluaW5nIHRoZSBhcHByb3ByaWF0ZW5lc3Mgb2YgdXNpbmcgYW5kIGRpc3RyaWJ1dGluZyB0aGUKLVByb2dyYW0gYW5kIGFzc3VtZXMgYWxsIHJpc2tzIGFzc29jaWF0ZWQgd2l0aCBpdHMgZXhlcmNpc2Ugb2YgcmlnaHRzIHVuZGVyIHRoaXMKLUFncmVlbWVudCAsIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gdGhlIHJpc2tzIGFuZCBjb3N0cyBvZiBwcm9ncmFtIGVycm9ycywKLWNvbXBsaWFuY2Ugd2l0aCBhcHBsaWNhYmxlIGxhd3MsIGRhbWFnZSB0byBvciBsb3NzIG9mIGRhdGEsIHByb2dyYW1zIG9yCi1lcXVpcG1lbnQsIGFuZCB1bmF2YWlsYWJpbGl0eSBvciBpbnRlcnJ1cHRpb24gb2Ygb3BlcmF0aW9ucy4gPC9zcGFuPjwvcD4KLQotPHA+PGI+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPjYuIERJU0NMQUlNRVIgT0YgTElBQklMSVRZPC9zcGFuPjwvYj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+RVhDRVBUIEFTIEVYUFJFU1NMWSBTRVQgRk9SVEggSU4gVEhJUwotQUdSRUVNRU5ULCBORUlUSEVSIFJFQ0lQSUVOVCBOT1IgQU5ZIENPTlRSSUJVVE9SUyBTSEFMTCBIQVZFIEFOWSBMSUFCSUxJVFkgRk9SCi1BTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLShJTkNMVURJTkcgV0lUSE9VVCBMSU1JVEFUSU9OIExPU1QgUFJPRklUUyksIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi1PRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORwotTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPUiBESVNUUklCVVRJT04gT0YKLVRIRSBQUk9HUkFNIE9SIFRIRSBFWEVSQ0lTRSBPRiBBTlkgUklHSFRTIEdSQU5URUQgSEVSRVVOREVSLCBFVkVOIElGIEFEVklTRUQgT0YKLVRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuPC9zcGFuPiA8L3A+Ci0KLTxwPjxiPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz43LiBHRU5FUkFMPC9zcGFuPjwvYj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+SWYgYW55IHByb3Zpc2lvbiBvZiB0aGlzIEFncmVlbWVudCBpcyBpbnZhbGlkCi1vciB1bmVuZm9yY2VhYmxlIHVuZGVyIGFwcGxpY2FibGUgbGF3LCBpdCBzaGFsbCBub3QgYWZmZWN0IHRoZSB2YWxpZGl0eSBvcgotZW5mb3JjZWFiaWxpdHkgb2YgdGhlIHJlbWFpbmRlciBvZiB0aGUgdGVybXMgb2YgdGhpcyBBZ3JlZW1lbnQsIGFuZCB3aXRob3V0Ci1mdXJ0aGVyIGFjdGlvbiBieSB0aGUgcGFydGllcyBoZXJldG8sIHN1Y2ggcHJvdmlzaW9uIHNoYWxsIGJlIHJlZm9ybWVkIHRvIHRoZQotbWluaW11bSBleHRlbnQgbmVjZXNzYXJ5IHRvIG1ha2Ugc3VjaCBwcm92aXNpb24gdmFsaWQgYW5kIGVuZm9yY2VhYmxlLjwvc3Bhbj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+SWYgUmVjaXBpZW50IGluc3RpdHV0ZXMgcGF0ZW50IGxpdGlnYXRpb24KLWFnYWluc3QgYW55IGVudGl0eSAoaW5jbHVkaW5nIGEgY3Jvc3MtY2xhaW0gb3IgY291bnRlcmNsYWltIGluIGEgbGF3c3VpdCkKLWFsbGVnaW5nIHRoYXQgdGhlIFByb2dyYW0gaXRzZWxmIChleGNsdWRpbmcgY29tYmluYXRpb25zIG9mIHRoZSBQcm9ncmFtIHdpdGgKLW90aGVyIHNvZnR3YXJlIG9yIGhhcmR3YXJlKSBpbmZyaW5nZXMgc3VjaCBSZWNpcGllbnQncyBwYXRlbnQocyksIHRoZW4gc3VjaAotUmVjaXBpZW50J3MgcmlnaHRzIGdyYW50ZWQgdW5kZXIgU2VjdGlvbiAyKGIpIHNoYWxsIHRlcm1pbmF0ZSBhcyBvZiB0aGUgZGF0ZQotc3VjaCBsaXRpZ2F0aW9uIGlzIGZpbGVkLiA8L3NwYW4+PC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+QWxsIFJlY2lwaWVudCdzIHJpZ2h0cyB1bmRlciB0aGlzIEFncmVlbWVudAotc2hhbGwgdGVybWluYXRlIGlmIGl0IGZhaWxzIHRvIGNvbXBseSB3aXRoIGFueSBvZiB0aGUgbWF0ZXJpYWwgdGVybXMgb3IKLWNvbmRpdGlvbnMgb2YgdGhpcyBBZ3JlZW1lbnQgYW5kIGRvZXMgbm90IGN1cmUgc3VjaCBmYWlsdXJlIGluIGEgcmVhc29uYWJsZQotcGVyaW9kIG9mIHRpbWUgYWZ0ZXIgYmVjb21pbmcgYXdhcmUgb2Ygc3VjaCBub25jb21wbGlhbmNlLiBJZiBhbGwgUmVjaXBpZW50J3MKLXJpZ2h0cyB1bmRlciB0aGlzIEFncmVlbWVudCB0ZXJtaW5hdGUsIFJlY2lwaWVudCBhZ3JlZXMgdG8gY2Vhc2UgdXNlIGFuZAotZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9ncmFtIGFzIHNvb24gYXMgcmVhc29uYWJseSBwcmFjdGljYWJsZS4gSG93ZXZlciwKLVJlY2lwaWVudCdzIG9ibGlnYXRpb25zIHVuZGVyIHRoaXMgQWdyZWVtZW50IGFuZCBhbnkgbGljZW5zZXMgZ3JhbnRlZCBieQotUmVjaXBpZW50IHJlbGF0aW5nIHRvIHRoZSBQcm9ncmFtIHNoYWxsIGNvbnRpbnVlIGFuZCBzdXJ2aXZlLiA8L3NwYW4+PC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+RXZlcnlvbmUgaXMgcGVybWl0dGVkIHRvIGNvcHkgYW5kIGRpc3RyaWJ1dGUKLWNvcGllcyBvZiB0aGlzIEFncmVlbWVudCwgYnV0IGluIG9yZGVyIHRvIGF2b2lkIGluY29uc2lzdGVuY3kgdGhlIEFncmVlbWVudCBpcwotY29weXJpZ2h0ZWQgYW5kIG1heSBvbmx5IGJlIG1vZGlmaWVkIGluIHRoZSBmb2xsb3dpbmcgbWFubmVyLiBUaGUgQWdyZWVtZW50Ci1TdGV3YXJkIHJlc2VydmVzIHRoZSByaWdodCB0byBwdWJsaXNoIG5ldyB2ZXJzaW9ucyAoaW5jbHVkaW5nIHJldmlzaW9ucykgb2YKLXRoaXMgQWdyZWVtZW50IGZyb20gdGltZSB0byB0aW1lLiBObyBvbmUgb3RoZXIgdGhhbiB0aGUgQWdyZWVtZW50IFN0ZXdhcmQgaGFzCi10aGUgcmlnaHQgdG8gbW9kaWZ5IHRoaXMgQWdyZWVtZW50LiBUaGUgRWNsaXBzZSBGb3VuZGF0aW9uIGlzIHRoZSBpbml0aWFsCi1BZ3JlZW1lbnQgU3Rld2FyZC4gVGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYXkgYXNzaWduIHRoZSByZXNwb25zaWJpbGl0eSB0bwotc2VydmUgYXMgdGhlIEFncmVlbWVudCBTdGV3YXJkIHRvIGEgc3VpdGFibGUgc2VwYXJhdGUgZW50aXR5LiBFYWNoIG5ldyB2ZXJzaW9uCi1vZiB0aGUgQWdyZWVtZW50IHdpbGwgYmUgZ2l2ZW4gYSBkaXN0aW5ndWlzaGluZyB2ZXJzaW9uIG51bWJlci4gVGhlIFByb2dyYW0KLShpbmNsdWRpbmcgQ29udHJpYnV0aW9ucykgbWF5IGFsd2F5cyBiZSBkaXN0cmlidXRlZCBzdWJqZWN0IHRvIHRoZSB2ZXJzaW9uIG9mCi10aGUgQWdyZWVtZW50IHVuZGVyIHdoaWNoIGl0IHdhcyByZWNlaXZlZC4gSW4gYWRkaXRpb24sIGFmdGVyIGEgbmV3IHZlcnNpb24gb2YKLXRoZSBBZ3JlZW1lbnQgaXMgcHVibGlzaGVkLCBDb250cmlidXRvciBtYXkgZWxlY3QgdG8gZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbQotKGluY2x1ZGluZyBpdHMgQ29udHJpYnV0aW9ucykgdW5kZXIgdGhlIG5ldyB2ZXJzaW9uLiBFeGNlcHQgYXMgZXhwcmVzc2x5IHN0YXRlZAotaW4gU2VjdGlvbnMgMihhKSBhbmQgMihiKSBhYm92ZSwgUmVjaXBpZW50IHJlY2VpdmVzIG5vIHJpZ2h0cyBvciBsaWNlbnNlcyB0bwotdGhlIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBvZiBhbnkgQ29udHJpYnV0b3IgdW5kZXIgdGhpcyBBZ3JlZW1lbnQsIHdoZXRoZXIKLWV4cHJlc3NseSwgYnkgaW1wbGljYXRpb24sIGVzdG9wcGVsIG9yIG90aGVyd2lzZS4gQWxsIHJpZ2h0cyBpbiB0aGUgUHJvZ3JhbSBub3QKLWV4cHJlc3NseSBncmFudGVkIHVuZGVyIHRoaXMgQWdyZWVtZW50IGFyZSByZXNlcnZlZC48L3NwYW4+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPlRoaXMgQWdyZWVtZW50IGlzIGdvdmVybmVkIGJ5IHRoZSBsYXdzIG9mIHRoZQotU3RhdGUgb2YgTmV3IFlvcmsgYW5kIHRoZSBpbnRlbGxlY3R1YWwgcHJvcGVydHkgbGF3cyBvZiB0aGUgVW5pdGVkIFN0YXRlcyBvZgotQW1lcmljYS4gTm8gcGFydHkgdG8gdGhpcyBBZ3JlZW1lbnQgd2lsbCBicmluZyBhIGxlZ2FsIGFjdGlvbiB1bmRlciB0aGlzCi1BZ3JlZW1lbnQgbW9yZSB0aGFuIG9uZSB5ZWFyIGFmdGVyIHRoZSBjYXVzZSBvZiBhY3Rpb24gYXJvc2UuIEVhY2ggcGFydHkgd2FpdmVzCi1pdHMgcmlnaHRzIHRvIGEganVyeSB0cmlhbCBpbiBhbnkgcmVzdWx0aW5nIGxpdGlnYXRpb24uPC9zcGFuPiA8L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbD48IVtpZiAhc3VwcG9ydEVtcHR5UGFyYXNdPiZuYnNwOzwhW2VuZGlmXT48bzpwPjwvbzpwPjwvcD4KLQotPC9kaXY+Ci0KLTwvYm9keT4KLQotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0ubXBpY2gyLWZlYXR1cmUvZmVhdHVyZS5wcm9wZXJ0aWVzIGIvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5ybS5tcGljaDItZmVhdHVyZS9mZWF0dXJlLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzNWNkNWIuLjAwMDAwMDAKLS0tIGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5ybS5tcGljaDItZmVhdHVyZS9mZWF0dXJlLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSwxNTYgKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwNSBUaGUgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLiAKLSMgVGhpcyBtYXRlcmlhbCB3YXMgcHJvZHVjZWQgdW5kZXIgVS5TLiBHb3Zlcm5tZW50IGNvbnRyYWN0IFctNzQwNS1FTkctMzYgCi0jIGZvciBMb3MgQWxhbW9zIE5hdGlvbmFsIExhYm9yYXRvcnksIHdoaWNoIGlzIG9wZXJhdGVkIGJ5IHRoZSBVbml2ZXJzaXR5IAotIyBvZiBDYWxpZm9ybmlhIGZvciB0aGUgVS5TLiBEZXBhcnRtZW50IG9mIEVuZXJneS4gVGhlIFUuUy4gR292ZXJubWVudCBoYXMgCi0jIHJpZ2h0cyB0byB1c2UsIHJlcHJvZHVjZSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZS4gTkVJVEhFUiBUSEUgCi0jIEdPVkVSTk1FTlQgTk9SIFRIRSBVTklWRVJTSVRZIE1BS0VTIEFOWSBXQVJSQU5UWSwgRVhQUkVTUyBPUiBJTVBMSUVELCBPUiAKLSMgQVNTVU1FUyBBTlkgTElBQklMSVRZIEZPUiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUuIElmIHNvZnR3YXJlIGlzIG1vZGlmaWVkIAotIyB0byBwcm9kdWNlIGRlcml2YXRpdmUgd29ya3MsIHN1Y2ggbW9kaWZpZWQgc29mdHdhcmUgc2hvdWxkIGJlIGNsZWFybHkgbWFya2VkLCAKLSMgc28gYXMgbm90IHRvIGNvbmZ1c2UgaXQgd2l0aCB0aGUgdmVyc2lvbiBhdmFpbGFibGUgZnJvbSBMQU5MLgotIyAKLSMgQWRkaXRpb25hbGx5LCB0aGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIAotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMgCi0jIExBLUNDIDA0LTExNQotIwotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLQotIyAiZmVhdHVyZU5hbWUiIHByb3BlcnR5IC0gbmFtZSBvZiB0aGUgZmVhdHVyZQotZmVhdHVyZU5hbWU9UFRQIFN1cHBvcnQgRm9yIE1QSUNIMgotCi0jICJwcm92aWRlck5hbWUiIHByb3BlcnR5IC0gbmFtZSBvZiB0aGUgY29tcGFueSB0aGF0IHByb3ZpZGVzIHRoZSBmZWF0dXJlCi1wcm92aWRlck5hbWU9RWNsaXBzZS5vcmcKLQotIyAidXBkYXRlU2l0ZU5hbWUiIHByb3BlcnR5IC0gbGFiZWwgZm9yIHRoZSB1cGRhdGUgc2l0ZQotdXBkYXRlU2l0ZU5hbWU9RWNsaXBzZSBQVFAgVXBkYXRlIFNpdGUKLQotIyAiZGVzY3JpcHRpb24iIHByb3BlcnR5IC0gZGVzY3JpcHRpb24gb2YgdGhlIGZlYXR1cmUKLWRlc2NyaXB0aW9uPUFkZHMgc3VwcG9ydCBmb3IgTVBJQ0gyCi0KLSMgY29weXJpZ2h0Ci1jb3B5cmlnaHQ9XAotQ29weXJpZ2h0IChjKSAyMDA1IFRoZSBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuXG5cCi1UaGlzIG1hdGVyaWFsIHdhcyBwcm9kdWNlZCB1bmRlciBVLlMuIEdvdmVybm1lbnQgY29udHJhY3QgVy03NDA1LUVORy0zNlxuXAotZm9yIExvcyBBbGFtb3MgTmF0aW9uYWwgTGFib3JhdG9yeSwgd2hpY2ggaXMgb3BlcmF0ZWQgYnkgdGhlIFVuaXZlcnNpdHlcblwKLW9mIENhbGlmb3JuaWEgZm9yIHRoZSBVLlMuIERlcGFydG1lbnQgb2YgRW5lcmd5LiBUaGUgVS5TLiBHb3Zlcm5tZW50IGhhc1xuXAotcmlnaHRzIHRvIHVzZSwgcmVwcm9kdWNlLCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlLiBORUlUSEVSIFRIRVxuXAotR09WRVJOTUVOVCBOT1IgVEhFIFVOSVZFUlNJVFkgTUFLRVMgQU5ZIFdBUlJBTlRZLCBFWFBSRVNTIE9SIElNUExJRUQsIE9SXG5cCi1BU1NVTUVTIEFOWSBMSUFCSUxJVFkgRk9SIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRS4gSWYgc29mdHdhcmUgaXMgbW9kaWZpZWRcblwKLXRvIHByb2R1Y2UgZGVyaXZhdGl2ZSB3b3Jrcywgc3VjaCBtb2RpZmllZCBzb2Z0d2FyZSBzaG91bGQgYmUgY2xlYXJseSBtYXJrZWQsXG5cCi1zbyBhcyBub3QgdG8gY29uZnVzZSBpdCB3aXRoIHRoZSB2ZXJzaW9uIGF2YWlsYWJsZSBmcm9tIExBTkwuXG5cCi1cblwKLUFkZGl0aW9uYWxseSwgdGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFsc1xuXAotYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wXG5cCi13aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdFxuXAotaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWxcblwKLVxuXAotTEEtQ0MgMDQtMTE1XG4KLQotIyAibGljZW5zZVVSTCIgcHJvcGVydHkgLSBVUkwgb2YgdGhlICJGZWF0dXJlIExpY2Vuc2UiCi0jIGRvIG5vdCB0cmFuc2xhdGUgdmFsdWUgLSBqdXN0IGNoYW5nZSB0byBwb2ludCB0byBhIGxvY2FsZS1zcGVjaWZpYyBIVE1MIHBhZ2UKLWxpY2Vuc2VVUkw9bGljZW5zZS5odG1sCi0KLSMgImxpY2Vuc2UiIHByb3BlcnR5IC0gdGV4dCBvZiB0aGUgIkZlYXR1cmUgVXBkYXRlIExpY2Vuc2UiCi0jIHNob3VsZCBiZSBwbGFpbiB0ZXh0IHZlcnNpb24gb2YgbGljZW5zZSBhZ3JlZW1lbnQgcG9pbnRlZCB0byBiZSAibGljZW5zZVVSTCIKLWxpY2Vuc2U9XAotRUNMSVBTRSBGT1VOREFUSU9OIFNPRlRXQVJFIFVTRVIgQUdSRUVNRU5UXG5cCi1NYXJjaCAxNywgMjAwNVxuXAotXG5cCi1Vc2FnZSBPZiBDb250ZW50XG5cCi1cblwKLVRIRSBFQ0xJUFNFIEZPVU5EQVRJT04gTUFLRVMgQVZBSUxBQkxFIFNPRlRXQVJFLCBET0NVTUVOVEFUSU9OLCBJTkZPUk1BVElPTiBBTkQvT1JcblwKLU9USEVSIE1BVEVSSUFMUyBGT1IgT1BFTiBTT1VSQ0UgUFJPSkVDVFMgKENPTExFQ1RJVkVMWSAiQ09OVEVOVCIpLlxuXAotVVNFIE9GIFRIRSBDT05URU5UIElTIEdPVkVSTkVEIEJZIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBUSElTXG5cCi1BR1JFRU1FTlQgQU5EL09SIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBMSUNFTlNFIEFHUkVFTUVOVFMgT1JcblwKLU5PVElDRVMgSU5ESUNBVEVEIE9SIFJFRkVSRU5DRUQgQkVMT1cuIEJZIFVTSU5HIFRIRSBDT05URU5ULCBZT1VcblwKLUFHUkVFIFRIQVQgWU9VUiBVU0UgT0YgVEhFIENPTlRFTlQgSVMgR09WRVJORUQgQlkgVEhJUyBBR1JFRU1FTlRcblwKLUFORC9PUiBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgQU5ZIEFQUExJQ0FCTEUgTElDRU5TRSBBR1JFRU1FTlRTXG5cCi1PUiBOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEIEJFTE9XLiBJRiBZT1UgRE8gTk9UIEFHUkVFIFRPIFRIRVxuXAotVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgVEhJUyBBR1JFRU1FTlQgQU5EIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OU1xuXAotT0YgQU5ZIEFQUExJQ0FCTEUgTElDRU5TRSBBR1JFRU1FTlRTIE9SIE5PVElDRVMgSU5ESUNBVEVEIE9SIFJFRkVSRU5DRURcblwKLUJFTE9XLCBUSEVOIFlPVSBNQVkgTk9UIFVTRSBUSEUgQ09OVEVOVC5cblwKLVxuXAotQXBwbGljYWJsZSBMaWNlbnNlc1xuXAotXG5cCi1Vbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCwgYWxsIENvbnRlbnQgbWFkZSBhdmFpbGFibGUgYnkgdGhlIEVjbGlwc2UgRm91bmRhdGlvblxuXAotaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZSBQdWJsaWNcblwKLUxpY2Vuc2UgVmVyc2lvbiAxLjAgKCJFUEwiKS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMgcHJvdmlkZWQgd2l0aCB0aGlzXG5cCi1Db250ZW50IGFuZCBpcyBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbC5cblwKLUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAiUHJvZ3JhbSIgd2lsbCBtZWFuIHRoZSBDb250ZW50LlxuXAotXG5cCi1Db250ZW50IGluY2x1ZGVzLCBidXQgaXMgbm90IGxpbWl0ZWQgdG8sIHNvdXJjZSBjb2RlLCBvYmplY3QgY29kZSxcblwKLWRvY3VtZW50YXRpb24gYW5kIG90aGVyIGZpbGVzIG1haW50YWluZWQgaW4gdGhlIEVjbGlwc2Uub3JnIENWU1xuXAotcmVwb3NpdG9yeSAoIlJlcG9zaXRvcnkiKSBpbiBDVlMgbW9kdWxlcyAoIk1vZHVsZXMiKSBhbmQgbWFkZSBhdmFpbGFibGVcblwKLWFzIGRvd25sb2FkYWJsZSBhcmNoaXZlcyAoIkRvd25sb2FkcyIpLlxuXAotXG5cCi0gICAtIENvbnRlbnQgbWF5IGJlIHN0cnVjdHVyZWQgYW5kIHBhY2thZ2VkIGludG8gbW9kdWxlcyB0byBmYWNpbGl0YXRlIGRlbGl2ZXJpbmcsXG5cCi0gICAgIGV4dGVuZGluZywgYW5kIHVwZ3JhZGluZyB0aGUgQ29udGVudC4gVHlwaWNhbCBtb2R1bGVzIG1heSBpbmNsdWRlIHBsdWctaW5zICgiUGx1Zy1pbnMiKSxcblwKLSAgICAgcGx1Zy1pbiBmcmFnbWVudHMgKCJGcmFnbWVudHMiKSwgYW5kIGZlYXR1cmVzICgiRmVhdHVyZXMiKS5cblwKLSAgIC0gRWFjaCBQbHVnLWluIG9yIEZyYWdtZW50IG1heSBiZSBwYWNrYWdlZCBhcyBhIHN1Yi1kaXJlY3Rvcnkgb3IgSkFSIChKYXZhPyBBUmNoaXZlKVxuXAotICAgICBpbiBhIGRpcmVjdG9yeSBuYW1lZCAicGx1Z2lucyIuXG5cCi0gICAtIEEgRmVhdHVyZSBpcyBhIGJ1bmRsZSBvZiBvbmUgb3IgbW9yZSBQbHVnLWlucyBhbmQvb3IgRnJhZ21lbnRzIGFuZCBhc3NvY2lhdGVkIG1hdGVyaWFsLlxuXAotICAgICBFYWNoIEZlYXR1cmUgbWF5IGJlIHBhY2thZ2VkIGFzIGEgc3ViLWRpcmVjdG9yeSBpbiBhIGRpcmVjdG9yeSBuYW1lZCAiZmVhdHVyZXMiLlxuXAotICAgICBXaXRoaW4gYSBGZWF0dXJlLCBmaWxlcyBuYW1lZCAiZmVhdHVyZS54bWwiIG1heSBjb250YWluIGEgbGlzdCBvZiB0aGUgbmFtZXMgYW5kIHZlcnNpb25cblwKLSAgICAgbnVtYmVycyBvZiB0aGUgUGx1Zy1pbnMgYW5kL29yIEZyYWdtZW50cyBhc3NvY2lhdGVkIHdpdGggdGhhdCBGZWF0dXJlLlxuXAotICAgLSBGZWF0dXJlcyBtYXkgYWxzbyBpbmNsdWRlIG90aGVyIEZlYXR1cmVzICgiSW5jbHVkZWQgRmVhdHVyZXMiKS4gV2l0aGluIGEgRmVhdHVyZSwgZmlsZXNcblwKLSAgICAgbmFtZWQgImZlYXR1cmUueG1sIiBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uIG51bWJlcnMgb2YgSW5jbHVkZWQgRmVhdHVyZXMuXG5cCi1cblwKLUZlYXR1cmVzIG1heSBhbHNvIGluY2x1ZGUgb3RoZXIgRmVhdHVyZXMgKCJJbmNsdWRlZCBGZWF0dXJlcyIpLiBGaWxlcyBuYW1lZFxuXAotImZlYXR1cmUueG1sIiBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uIG51bWJlcnMgb2ZcblwKLUluY2x1ZGVkIEZlYXR1cmVzLlxuXAotXG5cCi1UaGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZ292ZXJuaW5nIFBsdWctaW5zIGFuZCBGcmFnbWVudHMgc2hvdWxkIGJlXG5cCi1jb250YWluZWQgaW4gZmlsZXMgbmFtZWQgImFib3V0Lmh0bWwiICgiQWJvdXRzIikuIFRoZSB0ZXJtcyBhbmRcblwKLWNvbmRpdGlvbnMgZ292ZXJuaW5nIEZlYXR1cmVzIGFuZCBJbmNsdWRlZCBGZWF0dXJlcyBzaG91bGQgYmUgY29udGFpbmVkXG5cCi1pbiBmaWxlcyBuYW1lZCAibGljZW5zZS5odG1sIiAoIkZlYXR1cmUgTGljZW5zZXMiKS4gQWJvdXRzIGFuZCBGZWF0dXJlXG5cCi1MaWNlbnNlcyBtYXkgYmUgbG9jYXRlZCBpbiBhbnkgZGlyZWN0b3J5IG9mIGEgRG93bmxvYWQgb3IgTW9kdWxlXG5cCi1pbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0byB0aGUgZm9sbG93aW5nIGxvY2F0aW9uczpcblwKLVxuXAotICAgLSBUaGUgdG9wLWxldmVsIChyb290KSBkaXJlY3RvcnlcblwKLSAgIC0gUGx1Zy1pbiBhbmQgRnJhZ21lbnQgZGlyZWN0b3JpZXNcblwKLSAgIC0gSW5zaWRlIFBsdWctaW5zIGFuZCBGcmFnbWVudHMgcGFja2FnZWQgYXMgSkFSc1xuXAotICAgLSBTdWItZGlyZWN0b3JpZXMgb2YgdGhlIGRpcmVjdG9yeSBuYW1lZCAic3JjIiBvZiBjZXJ0YWluIFBsdWctaW5zXG5cCi0gICAtIEZlYXR1cmUgZGlyZWN0b3JpZXNcblwKLVxuXAotTm90ZTogaWYgYSBGZWF0dXJlIG1hZGUgYXZhaWxhYmxlIGJ5IHRoZSBFY2xpcHNlIEZvdW5kYXRpb24gaXMgaW5zdGFsbGVkIHVzaW5nIHRoZVxuXAotRWNsaXBzZSBVcGRhdGUgTWFuYWdlciwgeW91IG11c3QgYWdyZWUgdG8gYSBsaWNlbnNlICgiRmVhdHVyZSBVcGRhdGVcblwKLUxpY2Vuc2UiKSBkdXJpbmcgdGhlIGluc3RhbGxhdGlvbiBwcm9jZXNzLiBJZiB0aGUgRmVhdHVyZSBjb250YWluc1xuXAotSW5jbHVkZWQgRmVhdHVyZXMsIHRoZSBGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlIHNob3VsZCBlaXRoZXIgcHJvdmlkZSB5b3VcblwKLXdpdGggdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybmluZyB0aGUgSW5jbHVkZWQgRmVhdHVyZXMgb3IgaW5mb3JtXG5cCi15b3Ugd2hlcmUgeW91IGNhbiBsb2NhdGUgdGhlbS4gRmVhdHVyZSBVcGRhdGUgTGljZW5zZXMgbWF5IGJlIGZvdW5kIGluXG5cCi10aGUgImxpY2Vuc2UiIHByb3BlcnR5IG9mIGZpbGVzIG5hbWVkICJmZWF0dXJlLnByb3BlcnRpZXMiLiBTdWNoIEFib3V0cyxcblwKLUZlYXR1cmUgTGljZW5zZXMgYW5kIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VzIGNvbnRhaW4gdGhlIHRlcm1zIGFuZFxuXAotY29uZGl0aW9ucyAob3IgcmVmZXJlbmNlcyB0byBzdWNoIHRlcm1zIGFuZCBjb25kaXRpb25zKSB0aGF0IGdvdmVybiB5b3VyXG5cCi11c2Ugb2YgdGhlIGFzc29jaWF0ZWQgQ29udGVudCBpbiB0aGF0IGRpcmVjdG9yeS5cblwKLVxuXAotVEhFIEFCT1VUUywgRkVBVFVSRSBMSUNFTlNFUyBBTkQgRkVBVFVSRSBVUERBVEUgTElDRU5TRVMgTUFZIFJFRkVSXG5cCi1UTyBUSEUgRVBMIE9SIE9USEVSIExJQ0VOU0UgQUdSRUVNRU5UUywgTk9USUNFUyBPUiBURVJNUyBBTkQgQ09ORElUSU9OUy5cblwKLVNPTUUgT0YgVEhFU0UgT1RIRVIgTElDRU5TRSBBR1JFRU1FTlRTIE1BWSBJTkNMVURFIChCVVQgQVJFIE5PVCBMSU1JVEVEIFRPKTpcblwKLVxuXAotICAgIC0gQ29tbW9uIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wIChhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9jcGwtdjEwLmh0bWwpXG5cCi0gICAgLSBBcGFjaGUgU29mdHdhcmUgTGljZW5zZSAxLjEgKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRSlcblwKLSAgICAtIEFwYWNoZSBTb2Z0d2FyZSBMaWNlbnNlIDIuMCAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMClcblwKLSAgICAtIElCTSBQdWJsaWMgTGljZW5zZSAxLjAgKGF2YWlsYWJsZSBhdCBodHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vZGV2ZWxvcGVyd29ya3Mvb3BlbnNvdXJjZS9saWNlbnNlMTAuaHRtbClcblwKLSAgICAtIE1ldHJvIExpbmsgUHVibGljIExpY2Vuc2UgMS4wMCAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vcGVubW90aWYvc3VwcG9ydGVycy9tZXRyb2xpbmsvbGljZW5zZS5odG1sKVxuXAotICAgIC0gTW96aWxsYSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMSAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cubW96aWxsYS5vcmcvTVBML01QTC0xLjEuaHRtbClcblwKLVxuXAotSVQgSVMgWU9VUiBPQkxJR0FUSU9OIFRPIFJFQUQgQU5EIEFDQ0VQVCBBTEwgU1VDSCBURVJNUyBBTkQgQ09ORElUSU9OUyBQUklPUlxuXAotVE8gVVNFIE9GIFRIRSBDT05URU5ULiBJZiBubyBBYm91dCwgRmVhdHVyZSBMaWNlbnNlIG9yIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VcblwKLWlzIHByb3ZpZGVkLCBwbGVhc2UgY29udGFjdCB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIHRvIGRldGVybWluZSB3aGF0IHRlcm1zIGFuZCBjb25kaXRpb25zXG5cCi1nb3Zlcm4gdGhhdCBwYXJ0aWN1bGFyIENvbnRlbnQuXG5cCi1cblwKLUNyeXB0b2dyYXBoeVxuXAotXG5cCi1Db250ZW50IG1heSBjb250YWluIGVuY3J5cHRpb24gc29mdHdhcmUuIFRoZSBjb3VudHJ5IGluIHdoaWNoIHlvdSBhcmVcblwKLWN1cnJlbnRseSBtYXkgaGF2ZSByZXN0cmljdGlvbnMgb24gdGhlIGltcG9ydCwgcG9zc2Vzc2lvbiwgYW5kIHVzZSxcblwKLWFuZC9vciByZS1leHBvcnQgdG8gYW5vdGhlciBjb3VudHJ5LCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLiBCRUZPUkVcblwKLXVzaW5nIGFueSBlbmNyeXB0aW9uIHNvZnR3YXJlLCBwbGVhc2UgY2hlY2sgdGhlIGNvdW50cnkncyBsYXdzLFxuXAotcmVndWxhdGlvbnMgYW5kIHBvbGljaWVzIGNvbmNlcm5pbmcgdGhlIGltcG9ydCwgcG9zc2Vzc2lvbiwgb3IgdXNlLFxuXAotYW5kIHJlLWV4cG9ydCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLCB0byBzZWUgaWYgdGhpcyBpcyBwZXJtaXR0ZWQuXG5cCi1cblwKLUphdmEgYW5kIGFsbCBKYXZhLWJhc2VkIHRyYWRlbWFya3MgYXJlIHRyYWRlbWFya3Mgb2YgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBpbiB0aGUgVW5pdGVkIFN0YXRlcywgb3RoZXIgY291bnRyaWVzLCBvciBib3RoLlxuCi0jIyMjIyMjIyMjIyBlbmQgb2YgbGljZW5zZSBwcm9wZXJ0eSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKZGlmZiAtLWdpdCBhL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0ubXBpY2gyLWZlYXR1cmUvZmVhdHVyZS54bWwgYi9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLm1waWNoMi1mZWF0dXJlL2ZlYXR1cmUueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwY2M5OTI4Li4wMDAwMDAwCi0tLSBhL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0ubXBpY2gyLWZlYXR1cmUvZmVhdHVyZS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPGZlYXR1cmUKLSAgICAgIGlkPSJvcmcuZWNsaXBzZS5wdHAucm0ubXBpY2gyIgotICAgICAgbGFiZWw9IiVmZWF0dXJlTmFtZSIKLSAgICAgIHZlcnNpb249IjIuMS4wLnF1YWxpZmllciIKLSAgICAgIHByb3ZpZGVyLW5hbWU9IiVwcm92aWRlck5hbWUiCi0gICAgICBwbHVnaW49Im9yZy5lY2xpcHNlLnB0cC5ybS5tcGljaDIuY29yZSIKLSAgICAgIGltYWdlPSJlY2xpcHNlX3VwZGF0ZV8xMjAuanBnIj4KLQotICAgPGRlc2NyaXB0aW9uIHVybD0iaHR0cDovL2VjbGlwc2Uub3JnL3B0cCI+Ci0gICAgICAlZGVzY3JpcHRpb24KLSAgIDwvZGVzY3JpcHRpb24+Ci0KLSAgIDxjb3B5cmlnaHQ+Ci0gICAgICAlY29weXJpZ2h0Ci0gICA8L2NvcHlyaWdodD4KLQotICAgPGxpY2Vuc2UgdXJsPSIlbGljZW5zZVVSTCI+Ci0gICAgICAlbGljZW5zZQotICAgPC9saWNlbnNlPgotCi0gICA8dXJsPgotICAgICAgPHVwZGF0ZSBsYWJlbD0iJXVwZGF0ZVNpdGVOYW1lIiB1cmw9Imh0dHA6Ly9kb3dubG9hZC5lY2xpcHNlLm9yZy90b29scy9wdHAvcmVsZWFzZXMvMi4xIi8+Ci0gICA8L3VybD4KLQotICAgPHJlcXVpcmVzPgotICAgICAgPGltcG9ydCBwbHVnaW49Im9yZy5lY2xpcHNlLmNvcmUucnVudGltZSIvPgotICAgICAgPGltcG9ydCBwbHVnaW49Im9yZy5lY2xpcHNlLnNlYXJjaCIvPgotICAgICAgPGltcG9ydCBwbHVnaW49Im9yZy5lY2xpcHNlLnVpIi8+Ci0gICAgICA8aW1wb3J0IHBsdWdpbj0ib3JnLmVjbGlwc2UuZGVidWcuY29yZSIvPgotICAgICAgPGltcG9ydCBwbHVnaW49Im9yZy5lY2xpcHNlLnB0cC5wcm94eS5wcm90b2NvbCIvPgotICAgICAgPGltcG9ydCBwbHVnaW49Im9yZy5lY2xpcHNlLnB0cC5jb3JlIi8+Ci0gICAgICA8aW1wb3J0IHBsdWdpbj0ib3JnLmVjbGlwc2UucHRwLnJlbW90ZSIvPgotICAgICAgPGltcG9ydCBwbHVnaW49Im9yZy5lY2xpcHNlLmRlYnVnLnVpIi8+Ci0gICAgICA8aW1wb3J0IHBsdWdpbj0ib3JnLmVjbGlwc2UucHRwLnVpIi8+Ci0gICA8L3JlcXVpcmVzPgotCi0gICA8cGx1Z2luCi0gICAgICAgICBpZD0ib3JnLmVjbGlwc2UucHRwLnJtLm1waWNoMi5jb3JlIgotICAgICAgICAgZG93bmxvYWQtc2l6ZT0iMCIKLSAgICAgICAgIGluc3RhbGwtc2l6ZT0iMCIKLSAgICAgICAgIHZlcnNpb249IjAuMC4wIgotICAgICAgICAgdW5wYWNrPSJmYWxzZSIvPgotCi0gICA8cGx1Z2luCi0gICAgICAgICBpZD0ib3JnLmVjbGlwc2UucHRwLnJtLm1waWNoMi5wcm94eSIKLSAgICAgICAgIGRvd25sb2FkLXNpemU9IjAiCi0gICAgICAgICBpbnN0YWxsLXNpemU9IjAiCi0gICAgICAgICB2ZXJzaW9uPSIwLjAuMCIvPgotCi0gICA8cGx1Z2luCi0gICAgICAgICBpZD0ib3JnLmVjbGlwc2UucHRwLnJtLm1waWNoMi51aSIKLSAgICAgICAgIGRvd25sb2FkLXNpemU9IjAiCi0gICAgICAgICBpbnN0YWxsLXNpemU9IjAiCi0gICAgICAgICB2ZXJzaW9uPSIwLjAuMCIKLSAgICAgICAgIHVucGFjaz0iZmFsc2UiLz4KLQotPC9mZWF0dXJlPgpkaWZmIC0tZ2l0IGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5ybS5tcGljaDItZmVhdHVyZS9saWNlbnNlLmh0bWwgYi9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLm1waWNoMi1mZWF0dXJlL2xpY2Vuc2UuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzZhZjk2Ni4uMDAwMDAwMAotLS0gYS9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLm1waWNoMi1mZWF0dXJlL2xpY2Vuc2UuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAvL0VOIj4KLTxodG1sPgotPGhlYWQ+Ci08bWV0YSBodHRwLWVxdWl2PUNvbnRlbnQtVHlwZSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Ci08dGl0bGU+RWNsaXBzZS5vcmcgU29mdHdhcmUgVXNlciBBZ3JlZW1lbnQ8L3RpdGxlPgotPC9oZWFkPgotCi08Ym9keSBsYW5nPSJFTi1VUyIgbGluaz1ibHVlIHZsaW5rPXB1cnBsZT4KLTxoMj5FY2xpcHNlIEZvdW5kYXRpb24gU29mdHdhcmUgVXNlciBBZ3JlZW1lbnQ8L2gyPgotPHA+TWFyY2ggMTcsIDIwMDU8L3A+Ci0KLTxoMz5Vc2FnZSBPZiBDb250ZW50PC9oMz4KLQotPHA+VEhFIEVDTElQU0UgRk9VTkRBVElPTiBNQUtFUyBBVkFJTEFCTEUgU09GVFdBUkUsIERPQ1VNRU5UQVRJT04sIElORk9STUFUSU9OIEFORC9PUiBPVEhFUiBNQVRFUklBTFMgRk9SIE9QRU4gU09VUkNFIFBST0pFQ1RTCi0gICAoQ09MTEVDVElWRUxZICZxdW90O0NPTlRFTlQmcXVvdDspLiAgVVNFIE9GIFRIRSBDT05URU5UIElTIEdPVkVSTkVEIEJZIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBUSElTIEFHUkVFTUVOVCBBTkQvT1IgVEhFIFRFUk1TIEFORAotICAgQ09ORElUSU9OUyBPRiBMSUNFTlNFIEFHUkVFTUVOVFMgT1IgTk9USUNFUyBJTkRJQ0FURUQgT1IgUkVGRVJFTkNFRCBCRUxPVy4gIEJZIFVTSU5HIFRIRSBDT05URU5ULCBZT1UgQUdSRUUgVEhBVCBZT1VSIFVTRQotICAgT0YgVEhFIENPTlRFTlQgSVMgR09WRVJORUQgQlkgVEhJUyBBR1JFRU1FTlQgQU5EL09SIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBBTlkgQVBQTElDQUJMRSBMSUNFTlNFIEFHUkVFTUVOVFMgT1IKLSAgIE5PVElDRVMgSU5ESUNBVEVEIE9SIFJFRkVSRU5DRUQgQkVMT1cuICBJRiBZT1UgRE8gTk9UIEFHUkVFIFRPIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBUSElTIEFHUkVFTUVOVCBBTkQgVEhFIFRFUk1TIEFORAotICAgQ09ORElUSU9OUyBPRiBBTlkgQVBQTElDQUJMRSBMSUNFTlNFIEFHUkVFTUVOVFMgT1IgTk9USUNFUyBJTkRJQ0FURUQgT1IgUkVGRVJFTkNFRCBCRUxPVywgVEhFTiBZT1UgTUFZIE5PVCBVU0UgVEhFIENPTlRFTlQuPC9wPgotICAgCi08aDM+QXBwbGljYWJsZSBMaWNlbnNlczwvaDM+ICAgCi0gICAKLTxwPlVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkLCBhbGwgQ29udGVudCBtYWRlIGF2YWlsYWJsZSBieSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIGlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAKLSAgICgmcXVvdDtFUEwmcXVvdDspLiAgQSBjb3B5IG9mIHRoZSBFUEwgaXMgcHJvdmlkZWQgd2l0aCB0aGlzIENvbnRlbnQgYW5kIGlzIGFsc28gYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbDwvYT4uCi0gICBGb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgJnF1b3Q7UHJvZ3JhbSZxdW90OyB3aWxsIG1lYW4gdGhlIENvbnRlbnQuPC9wPgotCi08cD5Db250ZW50IGluY2x1ZGVzLCBidXQgaXMgbm90IGxpbWl0ZWQgdG8sIHNvdXJjZSBjb2RlLCBvYmplY3QgY29kZSwgZG9jdW1lbnRhdGlvbiBhbmQgb3RoZXIgZmlsZXMgbWFpbnRhaW5lZCBpbiB0aGUgRWNsaXBzZS5vcmcgQ1ZTIHJlcG9zaXRvcnkgKCZxdW90O1JlcG9zaXRvcnkmcXVvdDspIGluIENWUwotICAgbW9kdWxlcyAoJnF1b3Q7TW9kdWxlcyZxdW90OykgYW5kIG1hZGUgYXZhaWxhYmxlIGFzIGRvd25sb2FkYWJsZSBhcmNoaXZlcyAoJnF1b3Q7RG93bmxvYWRzJnF1b3Q7KS48L3A+Ci0gICAKLTx1bD4KLQk8bGk+Q29udGVudCBtYXkgYmUgc3RydWN0dXJlZCBhbmQgcGFja2FnZWQgaW50byBtb2R1bGVzIHRvIGZhY2lsaXRhdGUgZGVsaXZlcmluZywgZXh0ZW5kaW5nLCBhbmQgdXBncmFkaW5nIHRoZSBDb250ZW50LiAgVHlwaWNhbCBtb2R1bGVzIG1heSBpbmNsdWRlIHBsdWctaW5zICgmcXVvdDtQbHVnLWlucyZxdW90OyksIHBsdWctaW4gZnJhZ21lbnRzICgmcXVvdDtGcmFnbWVudHMmcXVvdDspLCBhbmQgZmVhdHVyZXMgKCZxdW90O0ZlYXR1cmVzJnF1b3Q7KS48L2xpPgotCTxsaT5FYWNoIFBsdWctaW4gb3IgRnJhZ21lbnQgbWF5IGJlIHBhY2thZ2VkIGFzIGEgc3ViLWRpcmVjdG9yeSBvciBKQVIgKEphdmEmdHJhZGU7IEFSY2hpdmUpIGluIGEgZGlyZWN0b3J5IG5hbWVkICZxdW90O3BsdWdpbnMmcXVvdDsuPC9saT4KLQk8bGk+QSBGZWF0dXJlIGlzIGEgYnVuZGxlIG9mIG9uZSBvciBtb3JlIFBsdWctaW5zIGFuZC9vciBGcmFnbWVudHMgYW5kIGFzc29jaWF0ZWQgbWF0ZXJpYWwuICBFYWNoIEZlYXR1cmUgbWF5IGJlIHBhY2thZ2VkIGFzIGEgc3ViLWRpcmVjdG9yeSBpbiBhIGRpcmVjdG9yeSBuYW1lZCAmcXVvdDtmZWF0dXJlcyZxdW90Oy4gIFdpdGhpbiBhIEZlYXR1cmUsIGZpbGVzIG5hbWVkICZxdW90O2ZlYXR1cmUueG1sJnF1b3Q7IG1heSBjb250YWluIGEgbGlzdCBvZiB0aGUgbmFtZXMgYW5kIHZlcnNpb24gbnVtYmVycyBvZiB0aGUgUGx1Zy1pbnMKLSAgICAgIGFuZC9vciBGcmFnbWVudHMgYXNzb2NpYXRlZCB3aXRoIHRoYXQgRmVhdHVyZS48L2xpPgotCTxsaT5GZWF0dXJlcyBtYXkgYWxzbyBpbmNsdWRlIG90aGVyIEZlYXR1cmVzICgmcXVvdDtJbmNsdWRlZCBGZWF0dXJlcyZxdW90OykuIFdpdGhpbiBhIEZlYXR1cmUsIGZpbGVzIG5hbWVkICZxdW90O2ZlYXR1cmUueG1sJnF1b3Q7IG1heSBjb250YWluIGEgbGlzdCBvZiB0aGUgbmFtZXMgYW5kIHZlcnNpb24gbnVtYmVycyBvZiBJbmNsdWRlZCBGZWF0dXJlcy48L2xpPgotPC91bD4gICAKLSAKLTxwPlRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm5pbmcgUGx1Zy1pbnMgYW5kIEZyYWdtZW50cyBzaG91bGQgYmUgY29udGFpbmVkIGluIGZpbGVzIG5hbWVkICZxdW90O2Fib3V0Lmh0bWwmcXVvdDsgKCZxdW90O0Fib3V0cyZxdW90OykuIFRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm5pbmcgRmVhdHVyZXMgYW5kCi1JbmNsdWRlZCBGZWF0dXJlcyBzaG91bGQgYmUgY29udGFpbmVkIGluIGZpbGVzIG5hbWVkICZxdW90O2xpY2Vuc2UuaHRtbCZxdW90OyAoJnF1b3Q7RmVhdHVyZSBMaWNlbnNlcyZxdW90OykuICBBYm91dHMgYW5kIEZlYXR1cmUgTGljZW5zZXMgbWF5IGJlIGxvY2F0ZWQgaW4gYW55IGRpcmVjdG9yeSBvZiBhIERvd25sb2FkIG9yIE1vZHVsZQotaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG8gdGhlIGZvbGxvd2luZyBsb2NhdGlvbnM6PC9wPgotCi08dWw+Ci0JPGxpPlRoZSB0b3AtbGV2ZWwgKHJvb3QpIGRpcmVjdG9yeTwvbGk+Ci0JPGxpPlBsdWctaW4gYW5kIEZyYWdtZW50IGRpcmVjdG9yaWVzPC9saT4KLQk8bGk+SW5zaWRlIFBsdWctaW5zIGFuZCBGcmFnbWVudHMgcGFja2FnZWQgYXMgSkFSczwvbGk+Ci0JPGxpPlN1Yi1kaXJlY3RvcmllcyBvZiB0aGUgZGlyZWN0b3J5IG5hbWVkICZxdW90O3NyYyZxdW90OyBvZiBjZXJ0YWluIFBsdWctaW5zPC9saT4KLQk8bGk+RmVhdHVyZSBkaXJlY3RvcmllczwvbGk+Ci08L3VsPgotCQkKLTxwPk5vdGU6IGlmIGEgRmVhdHVyZSBtYWRlIGF2YWlsYWJsZSBieSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIGlzIGluc3RhbGxlZCB1c2luZyB0aGUgRWNsaXBzZSBVcGRhdGUgTWFuYWdlciwgeW91IG11c3QgYWdyZWUgdG8gYSBsaWNlbnNlICgmcXVvdDtGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlJnF1b3Q7KSBkdXJpbmcgdGhlCi1pbnN0YWxsYXRpb24gcHJvY2Vzcy4gIElmIHRoZSBGZWF0dXJlIGNvbnRhaW5zIEluY2x1ZGVkIEZlYXR1cmVzLCB0aGUgRmVhdHVyZSBVcGRhdGUgTGljZW5zZSBzaG91bGQgZWl0aGVyIHByb3ZpZGUgeW91IHdpdGggdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybmluZyB0aGUgSW5jbHVkZWQgRmVhdHVyZXMgb3IKLWluZm9ybSB5b3Ugd2hlcmUgeW91IGNhbiBsb2NhdGUgdGhlbS4gIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VzIG1heSBiZSBmb3VuZCBpbiB0aGUgJnF1b3Q7bGljZW5zZSZxdW90OyBwcm9wZXJ0eSBvZiBmaWxlcyBuYW1lZCAmcXVvdDtmZWF0dXJlLnByb3BlcnRpZXMmcXVvdDsgZm91bmQgd2l0aGluIGEgRmVhdHVyZS4KLVN1Y2ggQWJvdXRzLCBGZWF0dXJlIExpY2Vuc2VzLCBhbmQgRmVhdHVyZSBVcGRhdGUgTGljZW5zZXMgY29udGFpbiB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgKG9yIHJlZmVyZW5jZXMgdG8gc3VjaCB0ZXJtcyBhbmQgY29uZGl0aW9ucykgdGhhdCBnb3Zlcm4geW91ciB1c2Ugb2YgdGhlIGFzc29jaWF0ZWQgQ29udGVudCBpbgotdGhhdCBkaXJlY3RvcnkuPC9wPgotCi08cD5USEUgQUJPVVRTLCBGRUFUVVJFIExJQ0VOU0VTLCBBTkQgRkVBVFVSRSBVUERBVEUgTElDRU5TRVMgTUFZIFJFRkVSIFRPIFRIRSBFUEwgT1IgT1RIRVIgTElDRU5TRSBBR1JFRU1FTlRTLCBOT1RJQ0VTIE9SIFRFUk1TIEFORCBDT05ESVRJT05TLiAgU09NRSBPRiBUSEVTRQotT1RIRVIgTElDRU5TRSBBR1JFRU1FTlRTIE1BWSBJTkNMVURFIChCVVQgQVJFIE5PVCBMSU1JVEVEIFRPKTo8L3A+Ci0KLTx1bD4KLQk8bGk+Q29tbW9uIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wIChhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9jcGwtdjEwLmh0bWwiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sPC9hPik8L2xpPgotCTxsaT5BcGFjaGUgU29mdHdhcmUgTGljZW5zZSAxLjEgKGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRSI+aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0U8L2E+KTwvbGk+Ci0JPGxpPkFwYWNoZSBTb2Z0d2FyZSBMaWNlbnNlIDIuMCAoYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMCI+aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wPC9hPik8L2xpPgotCTxsaT5JQk0gUHVibGljIExpY2Vuc2UgMS4wIChhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2RldmVsb3BlcndvcmtzL29wZW5zb3VyY2UvbGljZW5zZTEwLmh0bWwiPmh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9kZXZlbG9wZXJ3b3Jrcy9vcGVuc291cmNlL2xpY2Vuc2UxMC5odG1sPC9hPik8L2xpPgkKLQk8bGk+TWV0cm8gTGluayBQdWJsaWMgTGljZW5zZSAxLjAwIChhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL29wZW5tb3RpZi9zdXBwb3J0ZXJzL21ldHJvbGluay9saWNlbnNlLmh0bWwiPmh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vcGVubW90aWYvc3VwcG9ydGVycy9tZXRyb2xpbmsvbGljZW5zZS5odG1sPC9hPik8L2xpPgotCTxsaT5Nb3ppbGxhIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4xIChhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9NUEwvTVBMLTEuMS5odG1sIj5odHRwOi8vd3d3Lm1vemlsbGEub3JnL01QTC9NUEwtMS4xLmh0bWw8L2E+KTwvbGk+Ci08L3VsPgotCi08cD5JVCBJUyBZT1VSIE9CTElHQVRJT04gVE8gUkVBRCBBTkQgQUNDRVBUIEFMTCBTVUNIIFRFUk1TIEFORCBDT05ESVRJT05TIFBSSU9SIFRPIFVTRSBPRiBUSEUgQ09OVEVOVC4gIElmIG5vIEFib3V0LCBGZWF0dXJlIExpY2Vuc2UsIG9yIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2UgaXMgcHJvdmlkZWQsIHBsZWFzZQotY29udGFjdCB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIHRvIGRldGVybWluZSB3aGF0IHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybiB0aGF0IHBhcnRpY3VsYXIgQ29udGVudC48L3A+Ci0KLTxoMz5DcnlwdG9ncmFwaHk8L2gzPgotCi08cD5Db250ZW50IG1heSBjb250YWluIGVuY3J5cHRpb24gc29mdHdhcmUuIFRoZSBjb3VudHJ5IGluIHdoaWNoIHlvdSBhcmUgY3VycmVudGx5IG1heSBoYXZlIHJlc3RyaWN0aW9ucyBvbiB0aGUgaW1wb3J0LCBwb3NzZXNzaW9uLCBhbmQgdXNlLCBhbmQvb3IgcmUtZXhwb3J0IHRvCi0gICBhbm90aGVyIGNvdW50cnksIG9mIGVuY3J5cHRpb24gc29mdHdhcmUuIEJFRk9SRSB1c2luZyBhbnkgZW5jcnlwdGlvbiBzb2Z0d2FyZSwgcGxlYXNlIGNoZWNrIHRoZSBjb3VudHJ5J3MgbGF3cywgcmVndWxhdGlvbnMgYW5kIHBvbGljaWVzIGNvbmNlcm5pbmcgdGhlIGltcG9ydCwKLSAgIHBvc3Nlc3Npb24sIG9yIHVzZSwgYW5kIHJlLWV4cG9ydCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLCB0byBzZWUgaWYgdGhpcyBpcyBwZXJtaXR0ZWQuPC9wPgotICAgCi08c21hbGw+SmF2YSBhbmQgYWxsIEphdmEtYmFzZWQgdHJhZGVtYXJrcyBhcmUgdHJhZGVtYXJrcyBvZiBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIGluIHRoZSBVbml0ZWQgU3RhdGVzLCBvdGhlciBjb3VudHJpZXMsIG9yIGJvdGguPC9zbWFsbD4gICAKLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0ub3J0ZS1mZWF0dXJlLy5wcm9qZWN0IGIvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5ybS5vcnRlLWZlYXR1cmUvLnByb2plY3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4ODRkZWQuLjAwMDAwMDAKLS0tIGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5ybS5vcnRlLWZlYXR1cmUvLnByb2plY3QKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHByb2plY3REZXNjcmlwdGlvbj4KLQk8bmFtZT5vcmcuZWNsaXBzZS5wdHAucm0ub3J0ZS1mZWF0dXJlPC9uYW1lPgotCTxjb21tZW50PjwvY29tbWVudD4KLQk8cHJvamVjdHM+Ci0JPC9wcm9qZWN0cz4KLQk8YnVpbGRTcGVjPgotCQk8YnVpbGRDb21tYW5kPgotCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLkZlYXR1cmVCdWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQk8L2J1aWxkU3BlYz4KLQk8bmF0dXJlcz4KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5wZGUuRmVhdHVyZU5hdHVyZTwvbmF0dXJlPgotCTwvbmF0dXJlcz4KLTwvcHJvamVjdERlc2NyaXB0aW9uPgpkaWZmIC0tZ2l0IGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5ybS5vcnRlLWZlYXR1cmUvYnVpbGQucHJvcGVydGllcyBiL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0ub3J0ZS1mZWF0dXJlL2J1aWxkLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3OWRmOGYuLjAwMDAwMDAKLS0tIGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5ybS5vcnRlLWZlYXR1cmUvYnVpbGQucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotYmluLmluY2x1ZGVzID0gZmVhdHVyZS54bWwsXAotICAgICAgICAgICAgICAgbGljZW5zZS5odG1sLFwKLSAgICAgICAgICAgICAgIGZlYXR1cmUucHJvcGVydGllcyxcCi0gICAgICAgICAgICAgICBlcGwtdjEwLmh0bWwKZGlmZiAtLWdpdCBhL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0ub3J0ZS1mZWF0dXJlL2VwbC12MTAuaHRtbCBiL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0ub3J0ZS1mZWF0dXJlL2VwbC12MTAuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQ0YjE5Ni4uMDAwMDAwMAotLS0gYS9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLm9ydGUtZmVhdHVyZS9lcGwtdjEwLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzMjggKzAsMCBAQAotPGh0bWwgeG1sbnM6bz0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6b2ZmaWNlIgoteG1sbnM6dz0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6d29yZCIKLXhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwIj4KLQotPGhlYWQ+Ci08bWV0YSBodHRwLWVxdWl2PUNvbnRlbnQtVHlwZSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9d2luZG93cy0xMjUyIj4KLTxtZXRhIG5hbWU9UHJvZ0lkIGNvbnRlbnQ9V29yZC5Eb2N1bWVudD4KLTxtZXRhIG5hbWU9R2VuZXJhdG9yIGNvbnRlbnQ9Ik1pY3Jvc29mdCBXb3JkIDkiPgotPG1ldGEgbmFtZT1PcmlnaW5hdG9yIGNvbnRlbnQ9Ik1pY3Jvc29mdCBXb3JkIDkiPgotPGxpbmsgcmVsPUZpbGUtTGlzdAotaHJlZj0iLi9FY2xpcHNlJTIwRVBMJTIwMjAwM18xMV8xMCUyMEZpbmFsX2ZpbGVzL2ZpbGVsaXN0LnhtbCI+Ci08dGl0bGU+RWNsaXBzZSBQdWJsaWMgTGljZW5zZSAtIFZlcnNpb24gMS4wPC90aXRsZT4KLTwhLS1baWYgZ3RlIG1zbyA5XT48eG1sPgotIDxvOkRvY3VtZW50UHJvcGVydGllcz4KLSAgPG86UmV2aXNpb24+MjwvbzpSZXZpc2lvbj4KLSAgPG86VG90YWxUaW1lPjM8L286VG90YWxUaW1lPgotICA8bzpDcmVhdGVkPjIwMDQtMDMtMDVUMjM6MDM6MDBaPC9vOkNyZWF0ZWQ+Ci0gIDxvOkxhc3RTYXZlZD4yMDA0LTAzLTA1VDIzOjAzOjAwWjwvbzpMYXN0U2F2ZWQ+Ci0gIDxvOlBhZ2VzPjQ8L286UGFnZXM+Ci0gIDxvOldvcmRzPjE2MjY8L286V29yZHM+Ci0gIDxvOkNoYXJhY3RlcnM+OTI3MDwvbzpDaGFyYWN0ZXJzPgotICAgPG86TGluZXM+Nzc8L286TGluZXM+Ci0gIDxvOlBhcmFncmFwaHM+MTg8L286UGFyYWdyYXBocz4KLSAgPG86Q2hhcmFjdGVyc1dpdGhTcGFjZXM+MTEzODQ8L286Q2hhcmFjdGVyc1dpdGhTcGFjZXM+Ci0gIDxvOlZlcnNpb24+OS40NDAyPC9vOlZlcnNpb24+Ci0gPC9vOkRvY3VtZW50UHJvcGVydGllcz4KLTwveG1sPjwhW2VuZGlmXS0tPjwhLS1baWYgZ3RlIG1zbyA5XT48eG1sPgotIDx3OldvcmREb2N1bWVudD4KLSAgPHc6VHJhY2tSZXZpc2lvbnMvPgotIDwvdzpXb3JkRG9jdW1lbnQ+Ci08L3htbD48IVtlbmRpZl0tLT4KLTxzdHlsZT4KLTwhLS0KLSAvKiBGb250IERlZmluaXRpb25zICovCi1AZm9udC1mYWNlCi0Je2ZvbnQtZmFtaWx5OlRhaG9tYTsKLQlwYW5vc2UtMToyIDExIDYgNCAzIDUgNCA0IDIgNDsKLQltc28tZm9udC1jaGFyc2V0OjA7Ci0JbXNvLWdlbmVyaWMtZm9udC1mYW1pbHk6c3dpc3M7Ci0JbXNvLWZvbnQtcGl0Y2g6dmFyaWFibGU7Ci0JbXNvLWZvbnQtc2lnbmF0dXJlOjU1MzY3OTQ5NSAtMjE0NzQ4MzY0OCA4IDAgNjYwNDcgMDt9Ci0gLyogU3R5bGUgRGVmaW5pdGlvbnMgKi8KLXAuTXNvTm9ybWFsLCBsaS5Nc29Ob3JtYWwsIGRpdi5Nc29Ob3JtYWwKLQl7bXNvLXN0eWxlLXBhcmVudDoiIjsKLQltYXJnaW46MGluOwotCW1hcmdpbi1ib3R0b206LjAwMDFwdDsKLQltc28tcGFnaW5hdGlvbjp3aWRvdy1vcnBoYW47Ci0JZm9udC1zaXplOjEyLjBwdDsKLQlmb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjsKLQltc28tZmFyZWFzdC1mb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjt9Ci1wCi0Je21hcmdpbi1yaWdodDowaW47Ci0JbXNvLW1hcmdpbi10b3AtYWx0OmF1dG87Ci0JbXNvLW1hcmdpbi1ib3R0b20tYWx0OmF1dG87Ci0JbWFyZ2luLWxlZnQ6MGluOwotCW1zby1wYWdpbmF0aW9uOndpZG93LW9ycGhhbjsKLQlmb250LXNpemU6MTIuMHB0OwotCWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iOwotCW1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iO30KLXAuQmFsbG9vblRleHQsIGxpLkJhbGxvb25UZXh0LCBkaXYuQmFsbG9vblRleHQKLQl7bXNvLXN0eWxlLW5hbWU6IkJhbGxvb24gVGV4dCI7Ci0JbWFyZ2luOjBpbjsKLQltYXJnaW4tYm90dG9tOi4wMDAxcHQ7Ci0JbXNvLXBhZ2luYXRpb246d2lkb3ctb3JwaGFuOwotCWZvbnQtc2l6ZTo4LjBwdDsKLQlmb250LWZhbWlseTpUYWhvbWE7Ci0JbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7fQotQHBhZ2UgU2VjdGlvbjEKLQl7c2l6ZTo4LjVpbiAxMS4waW47Ci0JbWFyZ2luOjEuMGluIDEuMjVpbiAxLjBpbiAxLjI1aW47Ci0JbXNvLWhlYWRlci1tYXJnaW46LjVpbjsKLQltc28tZm9vdGVyLW1hcmdpbjouNWluOwotCW1zby1wYXBlci1zb3VyY2U6MDt9Ci1kaXYuU2VjdGlvbjEKLQl7cGFnZTpTZWN0aW9uMTt9Ci0tLT4KLTwvc3R5bGU+Ci08L2hlYWQ+Ci0KLTxib2R5IGxhbmc9RU4tVVMgc3R5bGU9J3RhYi1pbnRlcnZhbDouNWluJz4KLQotPGRpdiBjbGFzcz1TZWN0aW9uMT4KLQotPHAgYWxpZ249Y2VudGVyIHN0eWxlPSd0ZXh0LWFsaWduOmNlbnRlcic+PGI+RWNsaXBzZSBQdWJsaWMgTGljZW5zZSAtIHYgMS4wPC9iPgotPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+VEhFIEFDQ09NUEFOWUlORyBQUk9HUkFNIElTIFBST1ZJREVEIFVOREVSCi1USEUgVEVSTVMgT0YgVEhJUyBFQ0xJUFNFIFBVQkxJQyBMSUNFTlNFICgmcXVvdDtBR1JFRU1FTlQmcXVvdDspLiBBTlkgVVNFLAotUkVQUk9EVUNUSU9OIE9SIERJU1RSSUJVVElPTiBPRiBUSEUgUFJPR1JBTSBDT05TVElUVVRFUyBSRUNJUElFTlQnUyBBQ0NFUFRBTkNFCi1PRiBUSElTIEFHUkVFTUVOVC48L3NwYW4+IDwvcD4KLQotPHA+PGI+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPjEuIERFRklOSVRJT05TPC9zcGFuPjwvYj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+JnF1b3Q7Q29udHJpYnV0aW9uJnF1b3Q7IG1lYW5zOjwvc3Bhbj4gPC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5hKQotaW4gdGhlIGNhc2Ugb2YgdGhlIGluaXRpYWwgQ29udHJpYnV0b3IsIHRoZSBpbml0aWFsIGNvZGUgYW5kIGRvY3VtZW50YXRpb24KLWRpc3RyaWJ1dGVkIHVuZGVyIHRoaXMgQWdyZWVtZW50LCBhbmQ8YnIgY2xlYXI9bGVmdD4KLWIpIGluIHRoZSBjYXNlIG9mIGVhY2ggc3Vic2VxdWVudCBDb250cmlidXRvcjo8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5pKQotY2hhbmdlcyB0byB0aGUgUHJvZ3JhbSwgYW5kPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+aWkpCi1hZGRpdGlvbnMgdG8gdGhlIFByb2dyYW07PC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+d2hlcmUKLXN1Y2ggY2hhbmdlcyBhbmQvb3IgYWRkaXRpb25zIHRvIHRoZSBQcm9ncmFtIG9yaWdpbmF0ZSBmcm9tIGFuZCBhcmUgZGlzdHJpYnV0ZWQKLWJ5IHRoYXQgcGFydGljdWxhciBDb250cmlidXRvci4gQSBDb250cmlidXRpb24gJ29yaWdpbmF0ZXMnIGZyb20gYSBDb250cmlidXRvcgotaWYgaXQgd2FzIGFkZGVkIHRvIHRoZSBQcm9ncmFtIGJ5IHN1Y2ggQ29udHJpYnV0b3IgaXRzZWxmIG9yIGFueW9uZSBhY3Rpbmcgb24KLXN1Y2ggQ29udHJpYnV0b3IncyBiZWhhbGYuIENvbnRyaWJ1dGlvbnMgZG8gbm90IGluY2x1ZGUgYWRkaXRpb25zIHRvIHRoZQotUHJvZ3JhbSB3aGljaDogKGkpIGFyZSBzZXBhcmF0ZSBtb2R1bGVzIG9mIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIGluIGNvbmp1bmN0aW9uCi13aXRoIHRoZSBQcm9ncmFtIHVuZGVyIHRoZWlyIG93biBsaWNlbnNlIGFncmVlbWVudCwgYW5kIChpaSkgYXJlIG5vdCBkZXJpdmF0aXZlCi13b3JrcyBvZiB0aGUgUHJvZ3JhbS4gPC9zcGFuPjwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPiZxdW90O0NvbnRyaWJ1dG9yJnF1b3Q7IG1lYW5zIGFueSBwZXJzb24gb3IKLWVudGl0eSB0aGF0IGRpc3RyaWJ1dGVzIHRoZSBQcm9ncmFtLjwvc3Bhbj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+JnF1b3Q7TGljZW5zZWQgUGF0ZW50cyAmcXVvdDsgbWVhbiBwYXRlbnQKLWNsYWltcyBsaWNlbnNhYmxlIGJ5IGEgQ29udHJpYnV0b3Igd2hpY2ggYXJlIG5lY2Vzc2FyaWx5IGluZnJpbmdlZCBieSB0aGUgdXNlCi1vciBzYWxlIG9mIGl0cyBDb250cmlidXRpb24gYWxvbmUgb3Igd2hlbiBjb21iaW5lZCB3aXRoIHRoZSBQcm9ncmFtLiA8L3NwYW4+PC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+JnF1b3Q7UHJvZ3JhbSZxdW90OyBtZWFucyB0aGUgQ29udHJpYnV0aW9ucwotZGlzdHJpYnV0ZWQgaW4gYWNjb3JkYW5jZSB3aXRoIHRoaXMgQWdyZWVtZW50Ljwvc3Bhbj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+JnF1b3Q7UmVjaXBpZW50JnF1b3Q7IG1lYW5zIGFueW9uZSB3aG8KLXJlY2VpdmVzIHRoZSBQcm9ncmFtIHVuZGVyIHRoaXMgQWdyZWVtZW50LCBpbmNsdWRpbmcgYWxsIENvbnRyaWJ1dG9ycy48L3NwYW4+IDwvcD4KLQotPHA+PGI+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPjIuIEdSQU5UIE9GIFJJR0hUUzwvc3Bhbj48L2I+IDwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+YSkKLVN1YmplY3QgdG8gdGhlIHRlcm1zIG9mIHRoaXMgQWdyZWVtZW50LCBlYWNoIENvbnRyaWJ1dG9yIGhlcmVieSBncmFudHMgUmVjaXBpZW50Ci1hIG5vbi1leGNsdXNpdmUsIHdvcmxkd2lkZSwgcm95YWx0eS1mcmVlIGNvcHlyaWdodCBsaWNlbnNlIHRvPHNwYW4KLXN0eWxlPSdjb2xvcjpyZWQnPiA8L3NwYW4+cmVwcm9kdWNlLCBwcmVwYXJlIGRlcml2YXRpdmUgd29ya3Mgb2YsIHB1YmxpY2x5Ci1kaXNwbGF5LCBwdWJsaWNseSBwZXJmb3JtLCBkaXN0cmlidXRlIGFuZCBzdWJsaWNlbnNlIHRoZSBDb250cmlidXRpb24gb2Ygc3VjaAotQ29udHJpYnV0b3IsIGlmIGFueSwgYW5kIHN1Y2ggZGVyaXZhdGl2ZSB3b3JrcywgaW4gc291cmNlIGNvZGUgYW5kIG9iamVjdCBjb2RlCi1mb3JtLjwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmIpCi1TdWJqZWN0IHRvIHRoZSB0ZXJtcyBvZiB0aGlzIEFncmVlbWVudCwgZWFjaCBDb250cmlidXRvciBoZXJlYnkgZ3JhbnRzCi1SZWNpcGllbnQgYSBub24tZXhjbHVzaXZlLCB3b3JsZHdpZGUsPHNwYW4gc3R5bGU9J2NvbG9yOmdyZWVuJz4gPC9zcGFuPnJveWFsdHktZnJlZQotcGF0ZW50IGxpY2Vuc2UgdW5kZXIgTGljZW5zZWQgUGF0ZW50cyB0byBtYWtlLCB1c2UsIHNlbGwsIG9mZmVyIHRvIHNlbGwsIGltcG9ydAotYW5kIG90aGVyd2lzZSB0cmFuc2ZlciB0aGUgQ29udHJpYnV0aW9uIG9mIHN1Y2ggQ29udHJpYnV0b3IsIGlmIGFueSwgaW4gc291cmNlCi1jb2RlIGFuZCBvYmplY3QgY29kZSBmb3JtLiBUaGlzIHBhdGVudCBsaWNlbnNlIHNoYWxsIGFwcGx5IHRvIHRoZSBjb21iaW5hdGlvbgotb2YgdGhlIENvbnRyaWJ1dGlvbiBhbmQgdGhlIFByb2dyYW0gaWYsIGF0IHRoZSB0aW1lIHRoZSBDb250cmlidXRpb24gaXMgYWRkZWQKLWJ5IHRoZSBDb250cmlidXRvciwgc3VjaCBhZGRpdGlvbiBvZiB0aGUgQ29udHJpYnV0aW9uIGNhdXNlcyBzdWNoIGNvbWJpbmF0aW9uCi10byBiZSBjb3ZlcmVkIGJ5IHRoZSBMaWNlbnNlZCBQYXRlbnRzLiBUaGUgcGF0ZW50IGxpY2Vuc2Ugc2hhbGwgbm90IGFwcGx5IHRvCi1hbnkgb3RoZXIgY29tYmluYXRpb25zIHdoaWNoIGluY2x1ZGUgdGhlIENvbnRyaWJ1dGlvbi4gTm8gaGFyZHdhcmUgcGVyIHNlIGlzCi1saWNlbnNlZCBoZXJldW5kZXIuIDwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmMpCi1SZWNpcGllbnQgdW5kZXJzdGFuZHMgdGhhdCBhbHRob3VnaCBlYWNoIENvbnRyaWJ1dG9yIGdyYW50cyB0aGUgbGljZW5zZXMgdG8gaXRzCi1Db250cmlidXRpb25zIHNldCBmb3J0aCBoZXJlaW4sIG5vIGFzc3VyYW5jZXMgYXJlIHByb3ZpZGVkIGJ5IGFueSBDb250cmlidXRvcgotdGhhdCB0aGUgUHJvZ3JhbSBkb2VzIG5vdCBpbmZyaW5nZSB0aGUgcGF0ZW50IG9yIG90aGVyIGludGVsbGVjdHVhbCBwcm9wZXJ0eQotcmlnaHRzIG9mIGFueSBvdGhlciBlbnRpdHkuIEVhY2ggQ29udHJpYnV0b3IgZGlzY2xhaW1zIGFueSBsaWFiaWxpdHkgdG8gUmVjaXBpZW50Ci1mb3IgY2xhaW1zIGJyb3VnaHQgYnkgYW55IG90aGVyIGVudGl0eSBiYXNlZCBvbiBpbmZyaW5nZW1lbnQgb2YgaW50ZWxsZWN0dWFsCi1wcm9wZXJ0eSByaWdodHMgb3Igb3RoZXJ3aXNlLiBBcyBhIGNvbmRpdGlvbiB0byBleGVyY2lzaW5nIHRoZSByaWdodHMgYW5kCi1saWNlbnNlcyBncmFudGVkIGhlcmV1bmRlciwgZWFjaCBSZWNpcGllbnQgaGVyZWJ5IGFzc3VtZXMgc29sZSByZXNwb25zaWJpbGl0eQotdG8gc2VjdXJlIGFueSBvdGhlciBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIG5lZWRlZCwgaWYgYW55LiBGb3IgZXhhbXBsZSwKLWlmIGEgdGhpcmQgcGFydHkgcGF0ZW50IGxpY2Vuc2UgaXMgcmVxdWlyZWQgdG8gYWxsb3cgUmVjaXBpZW50IHRvIGRpc3RyaWJ1dGUKLXRoZSBQcm9ncmFtLCBpdCBpcyBSZWNpcGllbnQncyByZXNwb25zaWJpbGl0eSB0byBhY3F1aXJlIHRoYXQgbGljZW5zZSBiZWZvcmUKLWRpc3RyaWJ1dGluZyB0aGUgUHJvZ3JhbS48L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5kKQotRWFjaCBDb250cmlidXRvciByZXByZXNlbnRzIHRoYXQgdG8gaXRzIGtub3dsZWRnZSBpdCBoYXMgc3VmZmljaWVudCBjb3B5cmlnaHQKLXJpZ2h0cyBpbiBpdHMgQ29udHJpYnV0aW9uLCBpZiBhbnksIHRvIGdyYW50IHRoZSBjb3B5cmlnaHQgbGljZW5zZSBzZXQgZm9ydGggaW4KLXRoaXMgQWdyZWVtZW50LiA8L3NwYW4+PC9wPgotCi08cD48Yj48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+My4gUkVRVUlSRU1FTlRTPC9zcGFuPjwvYj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+QSBDb250cmlidXRvciBtYXkgY2hvb3NlIHRvIGRpc3RyaWJ1dGUgdGhlCi1Qcm9ncmFtIGluIG9iamVjdCBjb2RlIGZvcm0gdW5kZXIgaXRzIG93biBsaWNlbnNlIGFncmVlbWVudCwgcHJvdmlkZWQgdGhhdDo8L3NwYW4+Ci08L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmEpCi1pdCBjb21wbGllcyB3aXRoIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGlzIEFncmVlbWVudDsgYW5kPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+YikKLWl0cyBsaWNlbnNlIGFncmVlbWVudDo8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5pKQotZWZmZWN0aXZlbHkgZGlzY2xhaW1zIG9uIGJlaGFsZiBvZiBhbGwgQ29udHJpYnV0b3JzIGFsbCB3YXJyYW50aWVzIGFuZAotY29uZGl0aW9ucywgZXhwcmVzcyBhbmQgaW1wbGllZCwgaW5jbHVkaW5nIHdhcnJhbnRpZXMgb3IgY29uZGl0aW9ucyBvZiB0aXRsZQotYW5kIG5vbi1pbmZyaW5nZW1lbnQsIGFuZCBpbXBsaWVkIHdhcnJhbnRpZXMgb3IgY29uZGl0aW9ucyBvZiBtZXJjaGFudGFiaWxpdHkKLWFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZTsgPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+aWkpCi1lZmZlY3RpdmVseSBleGNsdWRlcyBvbiBiZWhhbGYgb2YgYWxsIENvbnRyaWJ1dG9ycyBhbGwgbGlhYmlsaXR5IGZvciBkYW1hZ2VzLAotaW5jbHVkaW5nIGRpcmVjdCwgaW5kaXJlY3QsIHNwZWNpYWwsIGluY2lkZW50YWwgYW5kIGNvbnNlcXVlbnRpYWwgZGFtYWdlcywgc3VjaAotYXMgbG9zdCBwcm9maXRzOyA8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5paWkpCi1zdGF0ZXMgdGhhdCBhbnkgcHJvdmlzaW9ucyB3aGljaCBkaWZmZXIgZnJvbSB0aGlzIEFncmVlbWVudCBhcmUgb2ZmZXJlZCBieSB0aGF0Ci1Db250cmlidXRvciBhbG9uZSBhbmQgbm90IGJ5IGFueSBvdGhlciBwYXJ0eTsgYW5kPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+aXYpCi1zdGF0ZXMgdGhhdCBzb3VyY2UgY29kZSBmb3IgdGhlIFByb2dyYW0gaXMgYXZhaWxhYmxlIGZyb20gc3VjaCBDb250cmlidXRvciwgYW5kCi1pbmZvcm1zIGxpY2Vuc2VlcyBob3cgdG8gb2J0YWluIGl0IGluIGEgcmVhc29uYWJsZSBtYW5uZXIgb24gb3IgdGhyb3VnaCBhCi1tZWRpdW0gY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgZXhjaGFuZ2UuPHNwYW4gc3R5bGU9J2NvbG9yOmJsdWUnPiA8L3NwYW4+PC9zcGFuPjwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPldoZW4gdGhlIFByb2dyYW0gaXMgbWFkZSBhdmFpbGFibGUgaW4gc291cmNlCi1jb2RlIGZvcm06PC9zcGFuPiA8L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmEpCi1pdCBtdXN0IGJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoaXMgQWdyZWVtZW50OyBhbmQgPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+YikgYQotY29weSBvZiB0aGlzIEFncmVlbWVudCBtdXN0IGJlIGluY2x1ZGVkIHdpdGggZWFjaCBjb3B5IG9mIHRoZSBQcm9ncmFtLiA8L3NwYW4+PC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Q29udHJpYnV0b3JzIG1heSBub3QgcmVtb3ZlIG9yIGFsdGVyIGFueQotY29weXJpZ2h0IG5vdGljZXMgY29udGFpbmVkIHdpdGhpbiB0aGUgUHJvZ3JhbS4gPC9zcGFuPjwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkVhY2ggQ29udHJpYnV0b3IgbXVzdCBpZGVudGlmeSBpdHNlbGYgYXMgdGhlCi1vcmlnaW5hdG9yIG9mIGl0cyBDb250cmlidXRpb24sIGlmIGFueSwgaW4gYSBtYW5uZXIgdGhhdCByZWFzb25hYmx5IGFsbG93cwotc3Vic2VxdWVudCBSZWNpcGllbnRzIHRvIGlkZW50aWZ5IHRoZSBvcmlnaW5hdG9yIG9mIHRoZSBDb250cmlidXRpb24uIDwvc3Bhbj48L3A+Ci0KLTxwPjxiPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz40LiBDT01NRVJDSUFMIERJU1RSSUJVVElPTjwvc3Bhbj48L2I+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkNvbW1lcmNpYWwgZGlzdHJpYnV0b3JzIG9mIHNvZnR3YXJlIG1heQotYWNjZXB0IGNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyB3aXRoIHJlc3BlY3QgdG8gZW5kIHVzZXJzLCBidXNpbmVzcyBwYXJ0bmVycwotYW5kIHRoZSBsaWtlLiBXaGlsZSB0aGlzIGxpY2Vuc2UgaXMgaW50ZW5kZWQgdG8gZmFjaWxpdGF0ZSB0aGUgY29tbWVyY2lhbCB1c2UKLW9mIHRoZSBQcm9ncmFtLCB0aGUgQ29udHJpYnV0b3Igd2hvIGluY2x1ZGVzIHRoZSBQcm9ncmFtIGluIGEgY29tbWVyY2lhbAotcHJvZHVjdCBvZmZlcmluZyBzaG91bGQgZG8gc28gaW4gYSBtYW5uZXIgd2hpY2ggZG9lcyBub3QgY3JlYXRlIHBvdGVudGlhbAotbGlhYmlsaXR5IGZvciBvdGhlciBDb250cmlidXRvcnMuIFRoZXJlZm9yZSwgaWYgYSBDb250cmlidXRvciBpbmNsdWRlcyB0aGUKLVByb2dyYW0gaW4gYSBjb21tZXJjaWFsIHByb2R1Y3Qgb2ZmZXJpbmcsIHN1Y2ggQ29udHJpYnV0b3IgKCZxdW90O0NvbW1lcmNpYWwKLUNvbnRyaWJ1dG9yJnF1b3Q7KSBoZXJlYnkgYWdyZWVzIHRvIGRlZmVuZCBhbmQgaW5kZW1uaWZ5IGV2ZXJ5IG90aGVyCi1Db250cmlidXRvciAoJnF1b3Q7SW5kZW1uaWZpZWQgQ29udHJpYnV0b3ImcXVvdDspIGFnYWluc3QgYW55IGxvc3NlcywgZGFtYWdlcyBhbmQKLWNvc3RzIChjb2xsZWN0aXZlbHkgJnF1b3Q7TG9zc2VzJnF1b3Q7KSBhcmlzaW5nIGZyb20gY2xhaW1zLCBsYXdzdWl0cyBhbmQgb3RoZXIKLWxlZ2FsIGFjdGlvbnMgYnJvdWdodCBieSBhIHRoaXJkIHBhcnR5IGFnYWluc3QgdGhlIEluZGVtbmlmaWVkIENvbnRyaWJ1dG9yIHRvCi10aGUgZXh0ZW50IGNhdXNlZCBieSB0aGUgYWN0cyBvciBvbWlzc2lvbnMgb2Ygc3VjaCBDb21tZXJjaWFsIENvbnRyaWJ1dG9yIGluCi1jb25uZWN0aW9uIHdpdGggaXRzIGRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZ3JhbSBpbiBhIGNvbW1lcmNpYWwgcHJvZHVjdAotb2ZmZXJpbmcuIFRoZSBvYmxpZ2F0aW9ucyBpbiB0aGlzIHNlY3Rpb24gZG8gbm90IGFwcGx5IHRvIGFueSBjbGFpbXMgb3IgTG9zc2VzCi1yZWxhdGluZyB0byBhbnkgYWN0dWFsIG9yIGFsbGVnZWQgaW50ZWxsZWN0dWFsIHByb3BlcnR5IGluZnJpbmdlbWVudC4gSW4gb3JkZXIKLXRvIHF1YWxpZnksIGFuIEluZGVtbmlmaWVkIENvbnRyaWJ1dG9yIG11c3Q6IGEpIHByb21wdGx5IG5vdGlmeSB0aGUgQ29tbWVyY2lhbAotQ29udHJpYnV0b3IgaW4gd3JpdGluZyBvZiBzdWNoIGNsYWltLCBhbmQgYikgYWxsb3cgdGhlIENvbW1lcmNpYWwgQ29udHJpYnV0b3IKLXRvIGNvbnRyb2wsIGFuZCBjb29wZXJhdGUgd2l0aCB0aGUgQ29tbWVyY2lhbCBDb250cmlidXRvciBpbiwgdGhlIGRlZmVuc2UgYW5kCi1hbnkgcmVsYXRlZCBzZXR0bGVtZW50IG5lZ290aWF0aW9ucy4gVGhlIEluZGVtbmlmaWVkIENvbnRyaWJ1dG9yIG1heSBwYXJ0aWNpcGF0ZQotaW4gYW55IHN1Y2ggY2xhaW0gYXQgaXRzIG93biBleHBlbnNlLjwvc3Bhbj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Rm9yIGV4YW1wbGUsIGEgQ29udHJpYnV0b3IgbWlnaHQgaW5jbHVkZSB0aGUKLVByb2dyYW0gaW4gYSBjb21tZXJjaWFsIHByb2R1Y3Qgb2ZmZXJpbmcsIFByb2R1Y3QgWC4gVGhhdCBDb250cmlidXRvciBpcyB0aGVuIGEKLUNvbW1lcmNpYWwgQ29udHJpYnV0b3IuIElmIHRoYXQgQ29tbWVyY2lhbCBDb250cmlidXRvciB0aGVuIG1ha2VzIHBlcmZvcm1hbmNlCi1jbGFpbXMsIG9yIG9mZmVycyB3YXJyYW50aWVzIHJlbGF0ZWQgdG8gUHJvZHVjdCBYLCB0aG9zZSBwZXJmb3JtYW5jZSBjbGFpbXMgYW5kCi13YXJyYW50aWVzIGFyZSBzdWNoIENvbW1lcmNpYWwgQ29udHJpYnV0b3IncyByZXNwb25zaWJpbGl0eSBhbG9uZS4gVW5kZXIgdGhpcwotc2VjdGlvbiwgdGhlIENvbW1lcmNpYWwgQ29udHJpYnV0b3Igd291bGQgaGF2ZSB0byBkZWZlbmQgY2xhaW1zIGFnYWluc3QgdGhlCi1vdGhlciBDb250cmlidXRvcnMgcmVsYXRlZCB0byB0aG9zZSBwZXJmb3JtYW5jZSBjbGFpbXMgYW5kIHdhcnJhbnRpZXMsIGFuZCBpZiBhCi1jb3VydCByZXF1aXJlcyBhbnkgb3RoZXIgQ29udHJpYnV0b3IgdG8gcGF5IGFueSBkYW1hZ2VzIGFzIGEgcmVzdWx0LCB0aGUKLUNvbW1lcmNpYWwgQ29udHJpYnV0b3IgbXVzdCBwYXkgdGhvc2UgZGFtYWdlcy48L3NwYW4+IDwvcD4KLQotPHA+PGI+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPjUuIE5PIFdBUlJBTlRZPC9zcGFuPjwvYj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+RVhDRVBUIEFTIEVYUFJFU1NMWSBTRVQgRk9SVEggSU4gVEhJUwotQUdSRUVNRU5ULCBUSEUgUFJPR1JBTSBJUyBQUk9WSURFRCBPTiBBTiAmcXVvdDtBUyBJUyZxdW90OyBCQVNJUywgV0lUSE9VVAotV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVEIElOQ0xVRElORywKLVdJVEhPVVQgTElNSVRBVElPTiwgQU5ZIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBUSVRMRSwgTk9OLUlORlJJTkdFTUVOVCwKLU1FUkNIQU5UQUJJTElUWSBPUiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gRWFjaCBSZWNpcGllbnQgaXMgc29sZWx5Ci1yZXNwb25zaWJsZSBmb3IgZGV0ZXJtaW5pbmcgdGhlIGFwcHJvcHJpYXRlbmVzcyBvZiB1c2luZyBhbmQgZGlzdHJpYnV0aW5nIHRoZQotUHJvZ3JhbSBhbmQgYXNzdW1lcyBhbGwgcmlza3MgYXNzb2NpYXRlZCB3aXRoIGl0cyBleGVyY2lzZSBvZiByaWdodHMgdW5kZXIgdGhpcwotQWdyZWVtZW50ICwgaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byB0aGUgcmlza3MgYW5kIGNvc3RzIG9mIHByb2dyYW0gZXJyb3JzLAotY29tcGxpYW5jZSB3aXRoIGFwcGxpY2FibGUgbGF3cywgZGFtYWdlIHRvIG9yIGxvc3Mgb2YgZGF0YSwgcHJvZ3JhbXMgb3IKLWVxdWlwbWVudCwgYW5kIHVuYXZhaWxhYmlsaXR5IG9yIGludGVycnVwdGlvbiBvZiBvcGVyYXRpb25zLiA8L3NwYW4+PC9wPgotCi08cD48Yj48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Ni4gRElTQ0xBSU1FUiBPRiBMSUFCSUxJVFk8L3NwYW4+PC9iPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5FWENFUFQgQVMgRVhQUkVTU0xZIFNFVCBGT1JUSCBJTiBUSElTCi1BR1JFRU1FTlQsIE5FSVRIRVIgUkVDSVBJRU5UIE5PUiBBTlkgQ09OVFJJQlVUT1JTIFNIQUxMIEhBVkUgQU5ZIExJQUJJTElUWSBGT1IKLUFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotKElOQ0xVRElORyBXSVRIT1VUIExJTUlUQVRJT04gTE9TVCBQUk9GSVRTKSwgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLU9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCi1ORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9SIERJU1RSSUJVVElPTiBPRgotVEhFIFBST0dSQU0gT1IgVEhFIEVYRVJDSVNFIE9GIEFOWSBSSUdIVFMgR1JBTlRFRCBIRVJFVU5ERVIsIEVWRU4gSUYgQURWSVNFRCBPRgotVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy48L3NwYW4+IDwvcD4KLQotPHA+PGI+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPjcuIEdFTkVSQUw8L3NwYW4+PC9iPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5JZiBhbnkgcHJvdmlzaW9uIG9mIHRoaXMgQWdyZWVtZW50IGlzIGludmFsaWQKLW9yIHVuZW5mb3JjZWFibGUgdW5kZXIgYXBwbGljYWJsZSBsYXcsIGl0IHNoYWxsIG5vdCBhZmZlY3QgdGhlIHZhbGlkaXR5IG9yCi1lbmZvcmNlYWJpbGl0eSBvZiB0aGUgcmVtYWluZGVyIG9mIHRoZSB0ZXJtcyBvZiB0aGlzIEFncmVlbWVudCwgYW5kIHdpdGhvdXQKLWZ1cnRoZXIgYWN0aW9uIGJ5IHRoZSBwYXJ0aWVzIGhlcmV0bywgc3VjaCBwcm92aXNpb24gc2hhbGwgYmUgcmVmb3JtZWQgdG8gdGhlCi1taW5pbXVtIGV4dGVudCBuZWNlc3NhcnkgdG8gbWFrZSBzdWNoIHByb3Zpc2lvbiB2YWxpZCBhbmQgZW5mb3JjZWFibGUuPC9zcGFuPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5JZiBSZWNpcGllbnQgaW5zdGl0dXRlcyBwYXRlbnQgbGl0aWdhdGlvbgotYWdhaW5zdCBhbnkgZW50aXR5IChpbmNsdWRpbmcgYSBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KQotYWxsZWdpbmcgdGhhdCB0aGUgUHJvZ3JhbSBpdHNlbGYgKGV4Y2x1ZGluZyBjb21iaW5hdGlvbnMgb2YgdGhlIFByb2dyYW0gd2l0aAotb3RoZXIgc29mdHdhcmUgb3IgaGFyZHdhcmUpIGluZnJpbmdlcyBzdWNoIFJlY2lwaWVudCdzIHBhdGVudChzKSwgdGhlbiBzdWNoCi1SZWNpcGllbnQncyByaWdodHMgZ3JhbnRlZCB1bmRlciBTZWN0aW9uIDIoYikgc2hhbGwgdGVybWluYXRlIGFzIG9mIHRoZSBkYXRlCi1zdWNoIGxpdGlnYXRpb24gaXMgZmlsZWQuIDwvc3Bhbj48L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5BbGwgUmVjaXBpZW50J3MgcmlnaHRzIHVuZGVyIHRoaXMgQWdyZWVtZW50Ci1zaGFsbCB0ZXJtaW5hdGUgaWYgaXQgZmFpbHMgdG8gY29tcGx5IHdpdGggYW55IG9mIHRoZSBtYXRlcmlhbCB0ZXJtcyBvcgotY29uZGl0aW9ucyBvZiB0aGlzIEFncmVlbWVudCBhbmQgZG9lcyBub3QgY3VyZSBzdWNoIGZhaWx1cmUgaW4gYSByZWFzb25hYmxlCi1wZXJpb2Qgb2YgdGltZSBhZnRlciBiZWNvbWluZyBhd2FyZSBvZiBzdWNoIG5vbmNvbXBsaWFuY2UuIElmIGFsbCBSZWNpcGllbnQncwotcmlnaHRzIHVuZGVyIHRoaXMgQWdyZWVtZW50IHRlcm1pbmF0ZSwgUmVjaXBpZW50IGFncmVlcyB0byBjZWFzZSB1c2UgYW5kCi1kaXN0cmlidXRpb24gb2YgdGhlIFByb2dyYW0gYXMgc29vbiBhcyByZWFzb25hYmx5IHByYWN0aWNhYmxlLiBIb3dldmVyLAotUmVjaXBpZW50J3Mgb2JsaWdhdGlvbnMgdW5kZXIgdGhpcyBBZ3JlZW1lbnQgYW5kIGFueSBsaWNlbnNlcyBncmFudGVkIGJ5Ci1SZWNpcGllbnQgcmVsYXRpbmcgdG8gdGhlIFByb2dyYW0gc2hhbGwgY29udGludWUgYW5kIHN1cnZpdmUuIDwvc3Bhbj48L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5FdmVyeW9uZSBpcyBwZXJtaXR0ZWQgdG8gY29weSBhbmQgZGlzdHJpYnV0ZQotY29waWVzIG9mIHRoaXMgQWdyZWVtZW50LCBidXQgaW4gb3JkZXIgdG8gYXZvaWQgaW5jb25zaXN0ZW5jeSB0aGUgQWdyZWVtZW50IGlzCi1jb3B5cmlnaHRlZCBhbmQgbWF5IG9ubHkgYmUgbW9kaWZpZWQgaW4gdGhlIGZvbGxvd2luZyBtYW5uZXIuIFRoZSBBZ3JlZW1lbnQKLVN0ZXdhcmQgcmVzZXJ2ZXMgdGhlIHJpZ2h0IHRvIHB1Ymxpc2ggbmV3IHZlcnNpb25zIChpbmNsdWRpbmcgcmV2aXNpb25zKSBvZgotdGhpcyBBZ3JlZW1lbnQgZnJvbSB0aW1lIHRvIHRpbWUuIE5vIG9uZSBvdGhlciB0aGFuIHRoZSBBZ3JlZW1lbnQgU3Rld2FyZCBoYXMKLXRoZSByaWdodCB0byBtb2RpZnkgdGhpcyBBZ3JlZW1lbnQuIFRoZSBFY2xpcHNlIEZvdW5kYXRpb24gaXMgdGhlIGluaXRpYWwKLUFncmVlbWVudCBTdGV3YXJkLiBUaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1heSBhc3NpZ24gdGhlIHJlc3BvbnNpYmlsaXR5IHRvCi1zZXJ2ZSBhcyB0aGUgQWdyZWVtZW50IFN0ZXdhcmQgdG8gYSBzdWl0YWJsZSBzZXBhcmF0ZSBlbnRpdHkuIEVhY2ggbmV3IHZlcnNpb24KLW9mIHRoZSBBZ3JlZW1lbnQgd2lsbCBiZSBnaXZlbiBhIGRpc3Rpbmd1aXNoaW5nIHZlcnNpb24gbnVtYmVyLiBUaGUgUHJvZ3JhbQotKGluY2x1ZGluZyBDb250cmlidXRpb25zKSBtYXkgYWx3YXlzIGJlIGRpc3RyaWJ1dGVkIHN1YmplY3QgdG8gdGhlIHZlcnNpb24gb2YKLXRoZSBBZ3JlZW1lbnQgdW5kZXIgd2hpY2ggaXQgd2FzIHJlY2VpdmVkLiBJbiBhZGRpdGlvbiwgYWZ0ZXIgYSBuZXcgdmVyc2lvbiBvZgotdGhlIEFncmVlbWVudCBpcyBwdWJsaXNoZWQsIENvbnRyaWJ1dG9yIG1heSBlbGVjdCB0byBkaXN0cmlidXRlIHRoZSBQcm9ncmFtCi0oaW5jbHVkaW5nIGl0cyBDb250cmlidXRpb25zKSB1bmRlciB0aGUgbmV3IHZlcnNpb24uIEV4Y2VwdCBhcyBleHByZXNzbHkgc3RhdGVkCi1pbiBTZWN0aW9ucyAyKGEpIGFuZCAyKGIpIGFib3ZlLCBSZWNpcGllbnQgcmVjZWl2ZXMgbm8gcmlnaHRzIG9yIGxpY2Vuc2VzIHRvCi10aGUgaW50ZWxsZWN0dWFsIHByb3BlcnR5IG9mIGFueSBDb250cmlidXRvciB1bmRlciB0aGlzIEFncmVlbWVudCwgd2hldGhlcgotZXhwcmVzc2x5LCBieSBpbXBsaWNhdGlvbiwgZXN0b3BwZWwgb3Igb3RoZXJ3aXNlLiBBbGwgcmlnaHRzIGluIHRoZSBQcm9ncmFtIG5vdAotZXhwcmVzc2x5IGdyYW50ZWQgdW5kZXIgdGhpcyBBZ3JlZW1lbnQgYXJlIHJlc2VydmVkLjwvc3Bhbj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+VGhpcyBBZ3JlZW1lbnQgaXMgZ292ZXJuZWQgYnkgdGhlIGxhd3Mgb2YgdGhlCi1TdGF0ZSBvZiBOZXcgWW9yayBhbmQgdGhlIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBsYXdzIG9mIHRoZSBVbml0ZWQgU3RhdGVzIG9mCi1BbWVyaWNhLiBObyBwYXJ0eSB0byB0aGlzIEFncmVlbWVudCB3aWxsIGJyaW5nIGEgbGVnYWwgYWN0aW9uIHVuZGVyIHRoaXMKLUFncmVlbWVudCBtb3JlIHRoYW4gb25lIHllYXIgYWZ0ZXIgdGhlIGNhdXNlIG9mIGFjdGlvbiBhcm9zZS4gRWFjaCBwYXJ0eSB3YWl2ZXMKLWl0cyByaWdodHMgdG8gYSBqdXJ5IHRyaWFsIGluIGFueSByZXN1bHRpbmcgbGl0aWdhdGlvbi48L3NwYW4+IDwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsPjwhW2lmICFzdXBwb3J0RW1wdHlQYXJhc10+Jm5ic3A7PCFbZW5kaWZdPjxvOnA+PC9vOnA+PC9wPgotCi08L2Rpdj4KLQotPC9ib2R5PgotCi08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5ybS5vcnRlLWZlYXR1cmUvZmVhdHVyZS5wcm9wZXJ0aWVzIGIvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5ybS5vcnRlLWZlYXR1cmUvZmVhdHVyZS5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OGM4ODdmLi4wMDAwMDAwCi0tLSBhL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0ub3J0ZS1mZWF0dXJlL2ZlYXR1cmUucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDE1NiArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAyMDA1IFRoZSBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuIAotIyBUaGlzIG1hdGVyaWFsIHdhcyBwcm9kdWNlZCB1bmRlciBVLlMuIEdvdmVybm1lbnQgY29udHJhY3QgVy03NDA1LUVORy0zNiAKLSMgZm9yIExvcyBBbGFtb3MgTmF0aW9uYWwgTGFib3JhdG9yeSwgd2hpY2ggaXMgb3BlcmF0ZWQgYnkgdGhlIFVuaXZlcnNpdHkgCi0jIG9mIENhbGlmb3JuaWEgZm9yIHRoZSBVLlMuIERlcGFydG1lbnQgb2YgRW5lcmd5LiBUaGUgVS5TLiBHb3Zlcm5tZW50IGhhcyAKLSMgcmlnaHRzIHRvIHVzZSwgcmVwcm9kdWNlLCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlLiBORUlUSEVSIFRIRSAKLSMgR09WRVJOTUVOVCBOT1IgVEhFIFVOSVZFUlNJVFkgTUFLRVMgQU5ZIFdBUlJBTlRZLCBFWFBSRVNTIE9SIElNUExJRUQsIE9SIAotIyBBU1NVTUVTIEFOWSBMSUFCSUxJVFkgRk9SIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRS4gSWYgc29mdHdhcmUgaXMgbW9kaWZpZWQgCi0jIHRvIHByb2R1Y2UgZGVyaXZhdGl2ZSB3b3Jrcywgc3VjaCBtb2RpZmllZCBzb2Z0d2FyZSBzaG91bGQgYmUgY2xlYXJseSBtYXJrZWQsIAotIyBzbyBhcyBub3QgdG8gY29uZnVzZSBpdCB3aXRoIHRoZSB2ZXJzaW9uIGF2YWlsYWJsZSBmcm9tIExBTkwuCi0jIAotIyBBZGRpdGlvbmFsbHksIHRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgCi0jIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotIyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotIyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIyAKLSMgTEEtQ0MgMDQtMTE1Ci0jCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotCi0jICJmZWF0dXJlTmFtZSIgcHJvcGVydHkgLSBuYW1lIG9mIHRoZSBmZWF0dXJlCi1mZWF0dXJlTmFtZT1QVFAgU3VwcG9ydCBGb3IgT3BlbiBNUEkKLQotIyAicHJvdmlkZXJOYW1lIiBwcm9wZXJ0eSAtIG5hbWUgb2YgdGhlIGNvbXBhbnkgdGhhdCBwcm92aWRlcyB0aGUgZmVhdHVyZQotcHJvdmlkZXJOYW1lPUVjbGlwc2Uub3JnCi0KLSMgInVwZGF0ZVNpdGVOYW1lIiBwcm9wZXJ0eSAtIGxhYmVsIGZvciB0aGUgdXBkYXRlIHNpdGUKLXVwZGF0ZVNpdGVOYW1lPUVjbGlwc2UgUFRQIFVwZGF0ZSBTaXRlCi0KLSMgImRlc2NyaXB0aW9uIiBwcm9wZXJ0eSAtIGRlc2NyaXB0aW9uIG9mIHRoZSBmZWF0dXJlCi1kZXNjcmlwdGlvbj1BZGRzIHN1cHBvcnQgZm9yIE9wZW4gTVBJCi0KLSMgY29weXJpZ2h0Ci1jb3B5cmlnaHQ9XAotQ29weXJpZ2h0IChjKSAyMDA1IFRoZSBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuXG5cCi1UaGlzIG1hdGVyaWFsIHdhcyBwcm9kdWNlZCB1bmRlciBVLlMuIEdvdmVybm1lbnQgY29udHJhY3QgVy03NDA1LUVORy0zNlxuXAotZm9yIExvcyBBbGFtb3MgTmF0aW9uYWwgTGFib3JhdG9yeSwgd2hpY2ggaXMgb3BlcmF0ZWQgYnkgdGhlIFVuaXZlcnNpdHlcblwKLW9mIENhbGlmb3JuaWEgZm9yIHRoZSBVLlMuIERlcGFydG1lbnQgb2YgRW5lcmd5LiBUaGUgVS5TLiBHb3Zlcm5tZW50IGhhc1xuXAotcmlnaHRzIHRvIHVzZSwgcmVwcm9kdWNlLCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlLiBORUlUSEVSIFRIRVxuXAotR09WRVJOTUVOVCBOT1IgVEhFIFVOSVZFUlNJVFkgTUFLRVMgQU5ZIFdBUlJBTlRZLCBFWFBSRVNTIE9SIElNUExJRUQsIE9SXG5cCi1BU1NVTUVTIEFOWSBMSUFCSUxJVFkgRk9SIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRS4gSWYgc29mdHdhcmUgaXMgbW9kaWZpZWRcblwKLXRvIHByb2R1Y2UgZGVyaXZhdGl2ZSB3b3Jrcywgc3VjaCBtb2RpZmllZCBzb2Z0d2FyZSBzaG91bGQgYmUgY2xlYXJseSBtYXJrZWQsXG5cCi1zbyBhcyBub3QgdG8gY29uZnVzZSBpdCB3aXRoIHRoZSB2ZXJzaW9uIGF2YWlsYWJsZSBmcm9tIExBTkwuXG5cCi1cblwKLUFkZGl0aW9uYWxseSwgdGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFsc1xuXAotYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wXG5cCi13aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdFxuXAotaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWxcblwKLVxuXAotTEEtQ0MgMDQtMTE1XG4KLQotIyAibGljZW5zZVVSTCIgcHJvcGVydHkgLSBVUkwgb2YgdGhlICJGZWF0dXJlIExpY2Vuc2UiCi0jIGRvIG5vdCB0cmFuc2xhdGUgdmFsdWUgLSBqdXN0IGNoYW5nZSB0byBwb2ludCB0byBhIGxvY2FsZS1zcGVjaWZpYyBIVE1MIHBhZ2UKLWxpY2Vuc2VVUkw9bGljZW5zZS5odG1sCi0KLSMgImxpY2Vuc2UiIHByb3BlcnR5IC0gdGV4dCBvZiB0aGUgIkZlYXR1cmUgVXBkYXRlIExpY2Vuc2UiCi0jIHNob3VsZCBiZSBwbGFpbiB0ZXh0IHZlcnNpb24gb2YgbGljZW5zZSBhZ3JlZW1lbnQgcG9pbnRlZCB0byBiZSAibGljZW5zZVVSTCIKLWxpY2Vuc2U9XAotRUNMSVBTRSBGT1VOREFUSU9OIFNPRlRXQVJFIFVTRVIgQUdSRUVNRU5UXG5cCi1NYXJjaCAxNywgMjAwNVxuXAotXG5cCi1Vc2FnZSBPZiBDb250ZW50XG5cCi1cblwKLVRIRSBFQ0xJUFNFIEZPVU5EQVRJT04gTUFLRVMgQVZBSUxBQkxFIFNPRlRXQVJFLCBET0NVTUVOVEFUSU9OLCBJTkZPUk1BVElPTiBBTkQvT1JcblwKLU9USEVSIE1BVEVSSUFMUyBGT1IgT1BFTiBTT1VSQ0UgUFJPSkVDVFMgKENPTExFQ1RJVkVMWSAiQ09OVEVOVCIpLlxuXAotVVNFIE9GIFRIRSBDT05URU5UIElTIEdPVkVSTkVEIEJZIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBUSElTXG5cCi1BR1JFRU1FTlQgQU5EL09SIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBMSUNFTlNFIEFHUkVFTUVOVFMgT1JcblwKLU5PVElDRVMgSU5ESUNBVEVEIE9SIFJFRkVSRU5DRUQgQkVMT1cuIEJZIFVTSU5HIFRIRSBDT05URU5ULCBZT1VcblwKLUFHUkVFIFRIQVQgWU9VUiBVU0UgT0YgVEhFIENPTlRFTlQgSVMgR09WRVJORUQgQlkgVEhJUyBBR1JFRU1FTlRcblwKLUFORC9PUiBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgQU5ZIEFQUExJQ0FCTEUgTElDRU5TRSBBR1JFRU1FTlRTXG5cCi1PUiBOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEIEJFTE9XLiBJRiBZT1UgRE8gTk9UIEFHUkVFIFRPIFRIRVxuXAotVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgVEhJUyBBR1JFRU1FTlQgQU5EIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OU1xuXAotT0YgQU5ZIEFQUExJQ0FCTEUgTElDRU5TRSBBR1JFRU1FTlRTIE9SIE5PVElDRVMgSU5ESUNBVEVEIE9SIFJFRkVSRU5DRURcblwKLUJFTE9XLCBUSEVOIFlPVSBNQVkgTk9UIFVTRSBUSEUgQ09OVEVOVC5cblwKLVxuXAotQXBwbGljYWJsZSBMaWNlbnNlc1xuXAotXG5cCi1Vbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCwgYWxsIENvbnRlbnQgbWFkZSBhdmFpbGFibGUgYnkgdGhlIEVjbGlwc2UgRm91bmRhdGlvblxuXAotaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZSBQdWJsaWNcblwKLUxpY2Vuc2UgVmVyc2lvbiAxLjAgKCJFUEwiKS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMgcHJvdmlkZWQgd2l0aCB0aGlzXG5cCi1Db250ZW50IGFuZCBpcyBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbC5cblwKLUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAiUHJvZ3JhbSIgd2lsbCBtZWFuIHRoZSBDb250ZW50LlxuXAotXG5cCi1Db250ZW50IGluY2x1ZGVzLCBidXQgaXMgbm90IGxpbWl0ZWQgdG8sIHNvdXJjZSBjb2RlLCBvYmplY3QgY29kZSxcblwKLWRvY3VtZW50YXRpb24gYW5kIG90aGVyIGZpbGVzIG1haW50YWluZWQgaW4gdGhlIEVjbGlwc2Uub3JnIENWU1xuXAotcmVwb3NpdG9yeSAoIlJlcG9zaXRvcnkiKSBpbiBDVlMgbW9kdWxlcyAoIk1vZHVsZXMiKSBhbmQgbWFkZSBhdmFpbGFibGVcblwKLWFzIGRvd25sb2FkYWJsZSBhcmNoaXZlcyAoIkRvd25sb2FkcyIpLlxuXAotXG5cCi0gICAtIENvbnRlbnQgbWF5IGJlIHN0cnVjdHVyZWQgYW5kIHBhY2thZ2VkIGludG8gbW9kdWxlcyB0byBmYWNpbGl0YXRlIGRlbGl2ZXJpbmcsXG5cCi0gICAgIGV4dGVuZGluZywgYW5kIHVwZ3JhZGluZyB0aGUgQ29udGVudC4gVHlwaWNhbCBtb2R1bGVzIG1heSBpbmNsdWRlIHBsdWctaW5zICgiUGx1Zy1pbnMiKSxcblwKLSAgICAgcGx1Zy1pbiBmcmFnbWVudHMgKCJGcmFnbWVudHMiKSwgYW5kIGZlYXR1cmVzICgiRmVhdHVyZXMiKS5cblwKLSAgIC0gRWFjaCBQbHVnLWluIG9yIEZyYWdtZW50IG1heSBiZSBwYWNrYWdlZCBhcyBhIHN1Yi1kaXJlY3Rvcnkgb3IgSkFSIChKYXZhPyBBUmNoaXZlKVxuXAotICAgICBpbiBhIGRpcmVjdG9yeSBuYW1lZCAicGx1Z2lucyIuXG5cCi0gICAtIEEgRmVhdHVyZSBpcyBhIGJ1bmRsZSBvZiBvbmUgb3IgbW9yZSBQbHVnLWlucyBhbmQvb3IgRnJhZ21lbnRzIGFuZCBhc3NvY2lhdGVkIG1hdGVyaWFsLlxuXAotICAgICBFYWNoIEZlYXR1cmUgbWF5IGJlIHBhY2thZ2VkIGFzIGEgc3ViLWRpcmVjdG9yeSBpbiBhIGRpcmVjdG9yeSBuYW1lZCAiZmVhdHVyZXMiLlxuXAotICAgICBXaXRoaW4gYSBGZWF0dXJlLCBmaWxlcyBuYW1lZCAiZmVhdHVyZS54bWwiIG1heSBjb250YWluIGEgbGlzdCBvZiB0aGUgbmFtZXMgYW5kIHZlcnNpb25cblwKLSAgICAgbnVtYmVycyBvZiB0aGUgUGx1Zy1pbnMgYW5kL29yIEZyYWdtZW50cyBhc3NvY2lhdGVkIHdpdGggdGhhdCBGZWF0dXJlLlxuXAotICAgLSBGZWF0dXJlcyBtYXkgYWxzbyBpbmNsdWRlIG90aGVyIEZlYXR1cmVzICgiSW5jbHVkZWQgRmVhdHVyZXMiKS4gV2l0aGluIGEgRmVhdHVyZSwgZmlsZXNcblwKLSAgICAgbmFtZWQgImZlYXR1cmUueG1sIiBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uIG51bWJlcnMgb2YgSW5jbHVkZWQgRmVhdHVyZXMuXG5cCi1cblwKLUZlYXR1cmVzIG1heSBhbHNvIGluY2x1ZGUgb3RoZXIgRmVhdHVyZXMgKCJJbmNsdWRlZCBGZWF0dXJlcyIpLiBGaWxlcyBuYW1lZFxuXAotImZlYXR1cmUueG1sIiBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uIG51bWJlcnMgb2ZcblwKLUluY2x1ZGVkIEZlYXR1cmVzLlxuXAotXG5cCi1UaGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZ292ZXJuaW5nIFBsdWctaW5zIGFuZCBGcmFnbWVudHMgc2hvdWxkIGJlXG5cCi1jb250YWluZWQgaW4gZmlsZXMgbmFtZWQgImFib3V0Lmh0bWwiICgiQWJvdXRzIikuIFRoZSB0ZXJtcyBhbmRcblwKLWNvbmRpdGlvbnMgZ292ZXJuaW5nIEZlYXR1cmVzIGFuZCBJbmNsdWRlZCBGZWF0dXJlcyBzaG91bGQgYmUgY29udGFpbmVkXG5cCi1pbiBmaWxlcyBuYW1lZCAibGljZW5zZS5odG1sIiAoIkZlYXR1cmUgTGljZW5zZXMiKS4gQWJvdXRzIGFuZCBGZWF0dXJlXG5cCi1MaWNlbnNlcyBtYXkgYmUgbG9jYXRlZCBpbiBhbnkgZGlyZWN0b3J5IG9mIGEgRG93bmxvYWQgb3IgTW9kdWxlXG5cCi1pbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0byB0aGUgZm9sbG93aW5nIGxvY2F0aW9uczpcblwKLVxuXAotICAgLSBUaGUgdG9wLWxldmVsIChyb290KSBkaXJlY3RvcnlcblwKLSAgIC0gUGx1Zy1pbiBhbmQgRnJhZ21lbnQgZGlyZWN0b3JpZXNcblwKLSAgIC0gSW5zaWRlIFBsdWctaW5zIGFuZCBGcmFnbWVudHMgcGFja2FnZWQgYXMgSkFSc1xuXAotICAgLSBTdWItZGlyZWN0b3JpZXMgb2YgdGhlIGRpcmVjdG9yeSBuYW1lZCAic3JjIiBvZiBjZXJ0YWluIFBsdWctaW5zXG5cCi0gICAtIEZlYXR1cmUgZGlyZWN0b3JpZXNcblwKLVxuXAotTm90ZTogaWYgYSBGZWF0dXJlIG1hZGUgYXZhaWxhYmxlIGJ5IHRoZSBFY2xpcHNlIEZvdW5kYXRpb24gaXMgaW5zdGFsbGVkIHVzaW5nIHRoZVxuXAotRWNsaXBzZSBVcGRhdGUgTWFuYWdlciwgeW91IG11c3QgYWdyZWUgdG8gYSBsaWNlbnNlICgiRmVhdHVyZSBVcGRhdGVcblwKLUxpY2Vuc2UiKSBkdXJpbmcgdGhlIGluc3RhbGxhdGlvbiBwcm9jZXNzLiBJZiB0aGUgRmVhdHVyZSBjb250YWluc1xuXAotSW5jbHVkZWQgRmVhdHVyZXMsIHRoZSBGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlIHNob3VsZCBlaXRoZXIgcHJvdmlkZSB5b3VcblwKLXdpdGggdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybmluZyB0aGUgSW5jbHVkZWQgRmVhdHVyZXMgb3IgaW5mb3JtXG5cCi15b3Ugd2hlcmUgeW91IGNhbiBsb2NhdGUgdGhlbS4gRmVhdHVyZSBVcGRhdGUgTGljZW5zZXMgbWF5IGJlIGZvdW5kIGluXG5cCi10aGUgImxpY2Vuc2UiIHByb3BlcnR5IG9mIGZpbGVzIG5hbWVkICJmZWF0dXJlLnByb3BlcnRpZXMiLiBTdWNoIEFib3V0cyxcblwKLUZlYXR1cmUgTGljZW5zZXMgYW5kIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VzIGNvbnRhaW4gdGhlIHRlcm1zIGFuZFxuXAotY29uZGl0aW9ucyAob3IgcmVmZXJlbmNlcyB0byBzdWNoIHRlcm1zIGFuZCBjb25kaXRpb25zKSB0aGF0IGdvdmVybiB5b3VyXG5cCi11c2Ugb2YgdGhlIGFzc29jaWF0ZWQgQ29udGVudCBpbiB0aGF0IGRpcmVjdG9yeS5cblwKLVxuXAotVEhFIEFCT1VUUywgRkVBVFVSRSBMSUNFTlNFUyBBTkQgRkVBVFVSRSBVUERBVEUgTElDRU5TRVMgTUFZIFJFRkVSXG5cCi1UTyBUSEUgRVBMIE9SIE9USEVSIExJQ0VOU0UgQUdSRUVNRU5UUywgTk9USUNFUyBPUiBURVJNUyBBTkQgQ09ORElUSU9OUy5cblwKLVNPTUUgT0YgVEhFU0UgT1RIRVIgTElDRU5TRSBBR1JFRU1FTlRTIE1BWSBJTkNMVURFIChCVVQgQVJFIE5PVCBMSU1JVEVEIFRPKTpcblwKLVxuXAotICAgIC0gQ29tbW9uIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wIChhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9jcGwtdjEwLmh0bWwpXG5cCi0gICAgLSBBcGFjaGUgU29mdHdhcmUgTGljZW5zZSAxLjEgKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRSlcblwKLSAgICAtIEFwYWNoZSBTb2Z0d2FyZSBMaWNlbnNlIDIuMCAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMClcblwKLSAgICAtIElCTSBQdWJsaWMgTGljZW5zZSAxLjAgKGF2YWlsYWJsZSBhdCBodHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vZGV2ZWxvcGVyd29ya3Mvb3BlbnNvdXJjZS9saWNlbnNlMTAuaHRtbClcblwKLSAgICAtIE1ldHJvIExpbmsgUHVibGljIExpY2Vuc2UgMS4wMCAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vcGVubW90aWYvc3VwcG9ydGVycy9tZXRyb2xpbmsvbGljZW5zZS5odG1sKVxuXAotICAgIC0gTW96aWxsYSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMSAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cubW96aWxsYS5vcmcvTVBML01QTC0xLjEuaHRtbClcblwKLVxuXAotSVQgSVMgWU9VUiBPQkxJR0FUSU9OIFRPIFJFQUQgQU5EIEFDQ0VQVCBBTEwgU1VDSCBURVJNUyBBTkQgQ09ORElUSU9OUyBQUklPUlxuXAotVE8gVVNFIE9GIFRIRSBDT05URU5ULiBJZiBubyBBYm91dCwgRmVhdHVyZSBMaWNlbnNlIG9yIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VcblwKLWlzIHByb3ZpZGVkLCBwbGVhc2UgY29udGFjdCB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIHRvIGRldGVybWluZSB3aGF0IHRlcm1zIGFuZCBjb25kaXRpb25zXG5cCi1nb3Zlcm4gdGhhdCBwYXJ0aWN1bGFyIENvbnRlbnQuXG5cCi1cblwKLUNyeXB0b2dyYXBoeVxuXAotXG5cCi1Db250ZW50IG1heSBjb250YWluIGVuY3J5cHRpb24gc29mdHdhcmUuIFRoZSBjb3VudHJ5IGluIHdoaWNoIHlvdSBhcmVcblwKLWN1cnJlbnRseSBtYXkgaGF2ZSByZXN0cmljdGlvbnMgb24gdGhlIGltcG9ydCwgcG9zc2Vzc2lvbiwgYW5kIHVzZSxcblwKLWFuZC9vciByZS1leHBvcnQgdG8gYW5vdGhlciBjb3VudHJ5LCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLiBCRUZPUkVcblwKLXVzaW5nIGFueSBlbmNyeXB0aW9uIHNvZnR3YXJlLCBwbGVhc2UgY2hlY2sgdGhlIGNvdW50cnkncyBsYXdzLFxuXAotcmVndWxhdGlvbnMgYW5kIHBvbGljaWVzIGNvbmNlcm5pbmcgdGhlIGltcG9ydCwgcG9zc2Vzc2lvbiwgb3IgdXNlLFxuXAotYW5kIHJlLWV4cG9ydCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLCB0byBzZWUgaWYgdGhpcyBpcyBwZXJtaXR0ZWQuXG5cCi1cblwKLUphdmEgYW5kIGFsbCBKYXZhLWJhc2VkIHRyYWRlbWFya3MgYXJlIHRyYWRlbWFya3Mgb2YgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBpbiB0aGUgVW5pdGVkIFN0YXRlcywgb3RoZXIgY291bnRyaWVzLCBvciBib3RoLlxuCi0jIyMjIyMjIyMjIyBlbmQgb2YgbGljZW5zZSBwcm9wZXJ0eSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKZGlmZiAtLWdpdCBhL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0ub3J0ZS1mZWF0dXJlL2ZlYXR1cmUueG1sIGIvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5ybS5vcnRlLWZlYXR1cmUvZmVhdHVyZS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5YjI1MzIuLjAwMDAwMDAKLS0tIGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5ybS5vcnRlLWZlYXR1cmUvZmVhdHVyZS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPGZlYXR1cmUKLSAgICAgIGlkPSJvcmcuZWNsaXBzZS5wdHAucm0ub3J0ZSIKLSAgICAgIGxhYmVsPSIlZmVhdHVyZU5hbWUiCi0gICAgICB2ZXJzaW9uPSIyLjAuMS5xdWFsaWZpZXIiCi0gICAgICBwcm92aWRlci1uYW1lPSIlcHJvdmlkZXJOYW1lIgotICAgICAgaW1hZ2U9ImVjbGlwc2VfdXBkYXRlXzEyMC5qcGciPgotCi0gICA8ZGVzY3JpcHRpb24gdXJsPSJodHRwOi8vZWNsaXBzZS5vcmcvcHRwIj4KLSAgICAgICVkZXNjcmlwdGlvbgotICAgPC9kZXNjcmlwdGlvbj4KLQotICAgPGNvcHlyaWdodD4KLSAgICAgICVjb3B5cmlnaHQKLSAgIDwvY29weXJpZ2h0PgotCi0gICA8bGljZW5zZSB1cmw9IiVsaWNlbnNlVVJMIj4KLSAgICAgICVsaWNlbnNlCi0gICA8L2xpY2Vuc2U+Ci0KLSAgIDxyZXF1aXJlcz4KLSAgICAgIDxpbXBvcnQgcGx1Z2luPSJvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUiLz4KLSAgICAgIDxpbXBvcnQgcGx1Z2luPSJvcmcuZWNsaXBzZS5zZWFyY2giLz4KLSAgICAgIDxpbXBvcnQgcGx1Z2luPSJvcmcuZWNsaXBzZS51aSIvPgotICAgICAgPGltcG9ydCBwbHVnaW49Im9yZy5lY2xpcHNlLmRlYnVnLmNvcmUiLz4KLSAgICAgIDxpbXBvcnQgcGx1Z2luPSJvcmcuZWNsaXBzZS5wdHAucHJveHkucHJvdG9jb2wiLz4KLSAgICAgIDxpbXBvcnQgcGx1Z2luPSJvcmcuZWNsaXBzZS5wdHAuY29yZSIvPgotICAgICAgPGltcG9ydCBwbHVnaW49Im9yZy5lY2xpcHNlLnB0cC5ybS5yZW1vdGUiLz4KLSAgICAgIDxpbXBvcnQgcGx1Z2luPSJvcmcuZWNsaXBzZS5wdHAudXRpbHMiLz4KLSAgICAgIDxpbXBvcnQgcGx1Z2luPSJvcmcuZWNsaXBzZS5wdHAucHJveHkiLz4KLSAgICAgIDxpbXBvcnQgcGx1Z2luPSJvcmcuZWNsaXBzZS5wdHAudWkiLz4KLSAgICAgIDxpbXBvcnQgcGx1Z2luPSJvcmcuZWNsaXBzZS5wdHAubGF1bmNoIi8+Ci0gICAgICA8aW1wb3J0IHBsdWdpbj0ib3JnLmVjbGlwc2UucHRwLnJlbW90ZS5jb3JlIi8+Ci0gICAgICA8aW1wb3J0IHBsdWdpbj0ib3JnLmVjbGlwc2UucHRwLnJlbW90ZS51aSIvPgotICAgICAgPGltcG9ydCBwbHVnaW49Im9yZy5lY2xpcHNlLnB0cC51dGlscy51aSIvPgotICAgPC9yZXF1aXJlcz4KLQotICAgPHBsdWdpbgotICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnB0cC5ybS5vcnRlLmNvcmUiCi0gICAgICAgICBkb3dubG9hZC1zaXplPSIwIgotICAgICAgICAgaW5zdGFsbC1zaXplPSIwIgotICAgICAgICAgdmVyc2lvbj0iMC4wLjAiCi0gICAgICAgICB1bnBhY2s9ImZhbHNlIi8+Ci0KLSAgIDxwbHVnaW4KLSAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wdHAucm0ub3J0ZS5wcm94eSIKLSAgICAgICAgIGRvd25sb2FkLXNpemU9IjAiCi0gICAgICAgICBpbnN0YWxsLXNpemU9IjAiCi0gICAgICAgICB2ZXJzaW9uPSIwLjAuMCIvPgotCi0gICA8cGx1Z2luCi0gICAgICAgICBpZD0ib3JnLmVjbGlwc2UucHRwLnJtLm9ydGUudWkiCi0gICAgICAgICBkb3dubG9hZC1zaXplPSIwIgotICAgICAgICAgaW5zdGFsbC1zaXplPSIwIgotICAgICAgICAgdmVyc2lvbj0iMC4wLjAiCi0gICAgICAgICB1bnBhY2s9ImZhbHNlIi8+Ci0KLTwvZmVhdHVyZT4KZGlmZiAtLWdpdCBhL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0ub3J0ZS1mZWF0dXJlL2xpY2Vuc2UuaHRtbCBiL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0ub3J0ZS1mZWF0dXJlL2xpY2Vuc2UuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzZhZjk2Ni4uMDAwMDAwMAotLS0gYS9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLm9ydGUtZmVhdHVyZS9saWNlbnNlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wLy9FTiI+Ci08aHRtbD4KLTxoZWFkPgotPG1ldGEgaHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgotPHRpdGxlPkVjbGlwc2Uub3JnIFNvZnR3YXJlIFVzZXIgQWdyZWVtZW50PC90aXRsZT4KLTwvaGVhZD4KLQotPGJvZHkgbGFuZz0iRU4tVVMiIGxpbms9Ymx1ZSB2bGluaz1wdXJwbGU+Ci08aDI+RWNsaXBzZSBGb3VuZGF0aW9uIFNvZnR3YXJlIFVzZXIgQWdyZWVtZW50PC9oMj4KLTxwPk1hcmNoIDE3LCAyMDA1PC9wPgotCi08aDM+VXNhZ2UgT2YgQ29udGVudDwvaDM+Ci0KLTxwPlRIRSBFQ0xJUFNFIEZPVU5EQVRJT04gTUFLRVMgQVZBSUxBQkxFIFNPRlRXQVJFLCBET0NVTUVOVEFUSU9OLCBJTkZPUk1BVElPTiBBTkQvT1IgT1RIRVIgTUFURVJJQUxTIEZPUiBPUEVOIFNPVVJDRSBQUk9KRUNUUwotICAgKENPTExFQ1RJVkVMWSAmcXVvdDtDT05URU5UJnF1b3Q7KS4gIFVTRSBPRiBUSEUgQ09OVEVOVCBJUyBHT1ZFUk5FRCBCWSBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgVEhJUyBBR1JFRU1FTlQgQU5EL09SIFRIRSBURVJNUyBBTkQKLSAgIENPTkRJVElPTlMgT0YgTElDRU5TRSBBR1JFRU1FTlRTIE9SIE5PVElDRVMgSU5ESUNBVEVEIE9SIFJFRkVSRU5DRUQgQkVMT1cuICBCWSBVU0lORyBUSEUgQ09OVEVOVCwgWU9VIEFHUkVFIFRIQVQgWU9VUiBVU0UKLSAgIE9GIFRIRSBDT05URU5UIElTIEdPVkVSTkVEIEJZIFRISVMgQUdSRUVNRU5UIEFORC9PUiBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgQU5ZIEFQUExJQ0FCTEUgTElDRU5TRSBBR1JFRU1FTlRTIE9SCi0gICBOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEIEJFTE9XLiAgSUYgWU9VIERPIE5PVCBBR1JFRSBUTyBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgVEhJUyBBR1JFRU1FTlQgQU5EIFRIRSBURVJNUyBBTkQKLSAgIENPTkRJVElPTlMgT0YgQU5ZIEFQUExJQ0FCTEUgTElDRU5TRSBBR1JFRU1FTlRTIE9SIE5PVElDRVMgSU5ESUNBVEVEIE9SIFJFRkVSRU5DRUQgQkVMT1csIFRIRU4gWU9VIE1BWSBOT1QgVVNFIFRIRSBDT05URU5ULjwvcD4KLSAgIAotPGgzPkFwcGxpY2FibGUgTGljZW5zZXM8L2gzPiAgIAotICAgCi08cD5Vbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCwgYWxsIENvbnRlbnQgbWFkZSBhdmFpbGFibGUgYnkgdGhlIEVjbGlwc2UgRm91bmRhdGlvbiBpcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wCi0gICAoJnF1b3Q7RVBMJnF1b3Q7KS4gIEEgY29weSBvZiB0aGUgRVBMIGlzIHByb3ZpZGVkIHdpdGggdGhpcyBDb250ZW50IGFuZCBpcyBhbHNvIGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWw8L2E+LgotICAgRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICZxdW90O1Byb2dyYW0mcXVvdDsgd2lsbCBtZWFuIHRoZSBDb250ZW50LjwvcD4KLQotPHA+Q29udGVudCBpbmNsdWRlcywgYnV0IGlzIG5vdCBsaW1pdGVkIHRvLCBzb3VyY2UgY29kZSwgb2JqZWN0IGNvZGUsIGRvY3VtZW50YXRpb24gYW5kIG90aGVyIGZpbGVzIG1haW50YWluZWQgaW4gdGhlIEVjbGlwc2Uub3JnIENWUyByZXBvc2l0b3J5ICgmcXVvdDtSZXBvc2l0b3J5JnF1b3Q7KSBpbiBDVlMKLSAgIG1vZHVsZXMgKCZxdW90O01vZHVsZXMmcXVvdDspIGFuZCBtYWRlIGF2YWlsYWJsZSBhcyBkb3dubG9hZGFibGUgYXJjaGl2ZXMgKCZxdW90O0Rvd25sb2FkcyZxdW90OykuPC9wPgotICAgCi08dWw+Ci0JPGxpPkNvbnRlbnQgbWF5IGJlIHN0cnVjdHVyZWQgYW5kIHBhY2thZ2VkIGludG8gbW9kdWxlcyB0byBmYWNpbGl0YXRlIGRlbGl2ZXJpbmcsIGV4dGVuZGluZywgYW5kIHVwZ3JhZGluZyB0aGUgQ29udGVudC4gIFR5cGljYWwgbW9kdWxlcyBtYXkgaW5jbHVkZSBwbHVnLWlucyAoJnF1b3Q7UGx1Zy1pbnMmcXVvdDspLCBwbHVnLWluIGZyYWdtZW50cyAoJnF1b3Q7RnJhZ21lbnRzJnF1b3Q7KSwgYW5kIGZlYXR1cmVzICgmcXVvdDtGZWF0dXJlcyZxdW90OykuPC9saT4KLQk8bGk+RWFjaCBQbHVnLWluIG9yIEZyYWdtZW50IG1heSBiZSBwYWNrYWdlZCBhcyBhIHN1Yi1kaXJlY3Rvcnkgb3IgSkFSIChKYXZhJnRyYWRlOyBBUmNoaXZlKSBpbiBhIGRpcmVjdG9yeSBuYW1lZCAmcXVvdDtwbHVnaW5zJnF1b3Q7LjwvbGk+Ci0JPGxpPkEgRmVhdHVyZSBpcyBhIGJ1bmRsZSBvZiBvbmUgb3IgbW9yZSBQbHVnLWlucyBhbmQvb3IgRnJhZ21lbnRzIGFuZCBhc3NvY2lhdGVkIG1hdGVyaWFsLiAgRWFjaCBGZWF0dXJlIG1heSBiZSBwYWNrYWdlZCBhcyBhIHN1Yi1kaXJlY3RvcnkgaW4gYSBkaXJlY3RvcnkgbmFtZWQgJnF1b3Q7ZmVhdHVyZXMmcXVvdDsuICBXaXRoaW4gYSBGZWF0dXJlLCBmaWxlcyBuYW1lZCAmcXVvdDtmZWF0dXJlLnhtbCZxdW90OyBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uIG51bWJlcnMgb2YgdGhlIFBsdWctaW5zCi0gICAgICBhbmQvb3IgRnJhZ21lbnRzIGFzc29jaWF0ZWQgd2l0aCB0aGF0IEZlYXR1cmUuPC9saT4KLQk8bGk+RmVhdHVyZXMgbWF5IGFsc28gaW5jbHVkZSBvdGhlciBGZWF0dXJlcyAoJnF1b3Q7SW5jbHVkZWQgRmVhdHVyZXMmcXVvdDspLiBXaXRoaW4gYSBGZWF0dXJlLCBmaWxlcyBuYW1lZCAmcXVvdDtmZWF0dXJlLnhtbCZxdW90OyBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uIG51bWJlcnMgb2YgSW5jbHVkZWQgRmVhdHVyZXMuPC9saT4KLTwvdWw+ICAgCi0gCi08cD5UaGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZ292ZXJuaW5nIFBsdWctaW5zIGFuZCBGcmFnbWVudHMgc2hvdWxkIGJlIGNvbnRhaW5lZCBpbiBmaWxlcyBuYW1lZCAmcXVvdDthYm91dC5odG1sJnF1b3Q7ICgmcXVvdDtBYm91dHMmcXVvdDspLiBUaGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZ292ZXJuaW5nIEZlYXR1cmVzIGFuZAotSW5jbHVkZWQgRmVhdHVyZXMgc2hvdWxkIGJlIGNvbnRhaW5lZCBpbiBmaWxlcyBuYW1lZCAmcXVvdDtsaWNlbnNlLmh0bWwmcXVvdDsgKCZxdW90O0ZlYXR1cmUgTGljZW5zZXMmcXVvdDspLiAgQWJvdXRzIGFuZCBGZWF0dXJlIExpY2Vuc2VzIG1heSBiZSBsb2NhdGVkIGluIGFueSBkaXJlY3Rvcnkgb2YgYSBEb3dubG9hZCBvciBNb2R1bGUKLWluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvIHRoZSBmb2xsb3dpbmcgbG9jYXRpb25zOjwvcD4KLQotPHVsPgotCTxsaT5UaGUgdG9wLWxldmVsIChyb290KSBkaXJlY3Rvcnk8L2xpPgotCTxsaT5QbHVnLWluIGFuZCBGcmFnbWVudCBkaXJlY3RvcmllczwvbGk+Ci0JPGxpPkluc2lkZSBQbHVnLWlucyBhbmQgRnJhZ21lbnRzIHBhY2thZ2VkIGFzIEpBUnM8L2xpPgotCTxsaT5TdWItZGlyZWN0b3JpZXMgb2YgdGhlIGRpcmVjdG9yeSBuYW1lZCAmcXVvdDtzcmMmcXVvdDsgb2YgY2VydGFpbiBQbHVnLWluczwvbGk+Ci0JPGxpPkZlYXR1cmUgZGlyZWN0b3JpZXM8L2xpPgotPC91bD4KLQkJCi08cD5Ob3RlOiBpZiBhIEZlYXR1cmUgbWFkZSBhdmFpbGFibGUgYnkgdGhlIEVjbGlwc2UgRm91bmRhdGlvbiBpcyBpbnN0YWxsZWQgdXNpbmcgdGhlIEVjbGlwc2UgVXBkYXRlIE1hbmFnZXIsIHlvdSBtdXN0IGFncmVlIHRvIGEgbGljZW5zZSAoJnF1b3Q7RmVhdHVyZSBVcGRhdGUgTGljZW5zZSZxdW90OykgZHVyaW5nIHRoZQotaW5zdGFsbGF0aW9uIHByb2Nlc3MuICBJZiB0aGUgRmVhdHVyZSBjb250YWlucyBJbmNsdWRlZCBGZWF0dXJlcywgdGhlIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2Ugc2hvdWxkIGVpdGhlciBwcm92aWRlIHlvdSB3aXRoIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm5pbmcgdGhlIEluY2x1ZGVkIEZlYXR1cmVzIG9yCi1pbmZvcm0geW91IHdoZXJlIHlvdSBjYW4gbG9jYXRlIHRoZW0uICBGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlcyBtYXkgYmUgZm91bmQgaW4gdGhlICZxdW90O2xpY2Vuc2UmcXVvdDsgcHJvcGVydHkgb2YgZmlsZXMgbmFtZWQgJnF1b3Q7ZmVhdHVyZS5wcm9wZXJ0aWVzJnF1b3Q7IGZvdW5kIHdpdGhpbiBhIEZlYXR1cmUuCi1TdWNoIEFib3V0cywgRmVhdHVyZSBMaWNlbnNlcywgYW5kIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VzIGNvbnRhaW4gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIChvciByZWZlcmVuY2VzIHRvIHN1Y2ggdGVybXMgYW5kIGNvbmRpdGlvbnMpIHRoYXQgZ292ZXJuIHlvdXIgdXNlIG9mIHRoZSBhc3NvY2lhdGVkIENvbnRlbnQgaW4KLXRoYXQgZGlyZWN0b3J5LjwvcD4KLQotPHA+VEhFIEFCT1VUUywgRkVBVFVSRSBMSUNFTlNFUywgQU5EIEZFQVRVUkUgVVBEQVRFIExJQ0VOU0VTIE1BWSBSRUZFUiBUTyBUSEUgRVBMIE9SIE9USEVSIExJQ0VOU0UgQUdSRUVNRU5UUywgTk9USUNFUyBPUiBURVJNUyBBTkQgQ09ORElUSU9OUy4gIFNPTUUgT0YgVEhFU0UKLU9USEVSIExJQ0VOU0UgQUdSRUVNRU5UUyBNQVkgSU5DTFVERSAoQlVUIEFSRSBOT1QgTElNSVRFRCBUTyk6PC9wPgotCi08dWw+Ci0JPGxpPkNvbW1vbiBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAoYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2NwbC12MTAuaHRtbDwvYT4pPC9saT4KLQk8bGk+QXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UgMS4xIChhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UiPmh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFPC9hPik8L2xpPgotCTxsaT5BcGFjaGUgU29mdHdhcmUgTGljZW5zZSAyLjAgKGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAiPmh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMDwvYT4pPC9saT4KLQk8bGk+SUJNIFB1YmxpYyBMaWNlbnNlIDEuMCAoYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9kZXZlbG9wZXJ3b3Jrcy9vcGVuc291cmNlL2xpY2Vuc2UxMC5odG1sIj5odHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vZGV2ZWxvcGVyd29ya3Mvb3BlbnNvdXJjZS9saWNlbnNlMTAuaHRtbDwvYT4pPC9saT4JCi0JPGxpPk1ldHJvIExpbmsgUHVibGljIExpY2Vuc2UgMS4wMCAoYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vcGVubW90aWYvc3VwcG9ydGVycy9tZXRyb2xpbmsvbGljZW5zZS5odG1sIj5odHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb3Blbm1vdGlmL3N1cHBvcnRlcnMvbWV0cm9saW5rL2xpY2Vuc2UuaHRtbDwvYT4pPC9saT4KLQk8bGk+TW96aWxsYSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMSAoYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cubW96aWxsYS5vcmcvTVBML01QTC0xLjEuaHRtbCI+aHR0cDovL3d3dy5tb3ppbGxhLm9yZy9NUEwvTVBMLTEuMS5odG1sPC9hPik8L2xpPgotPC91bD4KLQotPHA+SVQgSVMgWU9VUiBPQkxJR0FUSU9OIFRPIFJFQUQgQU5EIEFDQ0VQVCBBTEwgU1VDSCBURVJNUyBBTkQgQ09ORElUSU9OUyBQUklPUiBUTyBVU0UgT0YgVEhFIENPTlRFTlQuICBJZiBubyBBYm91dCwgRmVhdHVyZSBMaWNlbnNlLCBvciBGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlIGlzIHByb3ZpZGVkLCBwbGVhc2UKLWNvbnRhY3QgdGhlIEVjbGlwc2UgRm91bmRhdGlvbiB0byBkZXRlcm1pbmUgd2hhdCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm4gdGhhdCBwYXJ0aWN1bGFyIENvbnRlbnQuPC9wPgotCi08aDM+Q3J5cHRvZ3JhcGh5PC9oMz4KLQotPHA+Q29udGVudCBtYXkgY29udGFpbiBlbmNyeXB0aW9uIHNvZnR3YXJlLiBUaGUgY291bnRyeSBpbiB3aGljaCB5b3UgYXJlIGN1cnJlbnRseSBtYXkgaGF2ZSByZXN0cmljdGlvbnMgb24gdGhlIGltcG9ydCwgcG9zc2Vzc2lvbiwgYW5kIHVzZSwgYW5kL29yIHJlLWV4cG9ydCB0bwotICAgYW5vdGhlciBjb3VudHJ5LCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLiBCRUZPUkUgdXNpbmcgYW55IGVuY3J5cHRpb24gc29mdHdhcmUsIHBsZWFzZSBjaGVjayB0aGUgY291bnRyeSdzIGxhd3MsIHJlZ3VsYXRpb25zIGFuZCBwb2xpY2llcyBjb25jZXJuaW5nIHRoZSBpbXBvcnQsCi0gICBwb3NzZXNzaW9uLCBvciB1c2UsIGFuZCByZS1leHBvcnQgb2YgZW5jcnlwdGlvbiBzb2Z0d2FyZSwgdG8gc2VlIGlmIHRoaXMgaXMgcGVybWl0dGVkLjwvcD4KLSAgIAotPHNtYWxsPkphdmEgYW5kIGFsbCBKYXZhLWJhc2VkIHRyYWRlbWFya3MgYXJlIHRyYWRlbWFya3Mgb2YgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBpbiB0aGUgVW5pdGVkIFN0YXRlcywgb3RoZXIgY291bnRyaWVzLCBvciBib3RoLjwvc21hbGw+ICAgCi08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyLy5jbGFzc3BhdGggYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyLy5jbGFzc3BhdGgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2NWFjMDYuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci8uY2xhc3NwYXRoCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPGNsYXNzcGF0aD4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0ic3JjIiBwYXRoPSJzcmMiLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0iY29uIiBwYXRoPSJvcmcuZWNsaXBzZS5wZGUuY29yZS5yZXF1aXJlZFBsdWdpbnMiLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0iY29uIiBwYXRoPSJvcmcuZWNsaXBzZS5qZHQubGF1bmNoaW5nLkpSRV9DT05UQUlORVIiLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0ib3V0cHV0IiBwYXRoPSJiaW4iLz4KLTwvY2xhc3NwYXRoPgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci8uY3ZzaWdub3JlIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci8uY3ZzaWdub3JlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Y2M4MTNmLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvLmN2c2lnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotYmluCi1AZG90Ci1qYXZhQ29tcGlsZXIuLi5hcmdzCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyLy5wcm9qZWN0IGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci8ucHJvamVjdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTAxMTRjMy4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyLy5wcm9qZWN0CisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxwcm9qZWN0RGVzY3JpcHRpb24+Ci0JPG5hbWU+b3JnLmVjbGlwc2UucHRwLnBsZHQuaGVscDwvbmFtZT4KLQk8Y29tbWVudD48L2NvbW1lbnQ+Ci0JPHByb2plY3RzPgotCTwvcHJvamVjdHM+Ci0JPGJ1aWxkU3BlYz4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLmpkdC5jb3JlLmphdmFidWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5NYW5pZmVzdEJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCQk8YnVpbGRDb21tYW5kPgotCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLlNjaGVtYUJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCTwvYnVpbGRTcGVjPgotCTxuYXR1cmVzPgotCQk8bmF0dXJlPm9yZy5lY2xpcHNlLnBkZS5QbHVnaW5OYXR1cmU8L25hdHVyZT4KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5qZHQuY29yZS5qYXZhbmF0dXJlPC9uYXR1cmU+Ci0JPC9uYXR1cmVzPgotPC9wcm9qZWN0RGVzY3JpcHRpb24+CmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL01FVEEtSU5GL01BTklGRVNULk1GIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9NRVRBLUlORi9NQU5JRkVTVC5NRgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2E4MzI1NC4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL01FVEEtSU5GL01BTklGRVNULk1GCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotTWFuaWZlc3QtVmVyc2lvbjogMS4wCi1CdW5kbGUtTWFuaWZlc3RWZXJzaW9uOiAyCi1CdW5kbGUtTmFtZTogJXBsdWdpbk5hbWUKLUJ1bmRsZS1TeW1ib2xpY05hbWU6IG9yZy5lY2xpcHNlLnB0cC5wbGR0LmhlbHA7IHNpbmdsZXRvbjo9dHJ1ZQotQnVuZGxlLVZlcnNpb246IDIuMS4wLnF1YWxpZmllcgotQnVuZGxlLUNsYXNzUGF0aDogLgotQnVuZGxlLUFjdGl2YXRvcjogb3JnLmVjbGlwc2UucHRwLnBsZHQuaGVscC5IZWxwUGx1Z2luCi1CdW5kbGUtVmVuZG9yOiAlcGx1Z2luUHJvdmlkZXIKLUJ1bmRsZS1Mb2NhbGl6YXRpb246IHBsdWdpbgotRXhwb3J0LVBhY2thZ2U6IG9yZy5lY2xpcHNlLnB0cC5wbGR0LmhlbHAKLVJlcXVpcmUtQnVuZGxlOiBvcmcuZWNsaXBzZS51aSwKLSBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUsCi0gb3JnLmVjbGlwc2UuaGVscAotRWNsaXBzZS1BdXRvU3RhcnQ6IHRydWUKZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvYWJvdXQuaHRtbCBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvYWJvdXQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Y4MTA5My4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2Fib3V0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wLy9FTiI+Ci08aHRtbD4KLTxoZWFkPgotPHRpdGxlPkFib3V0PC90aXRsZT4KLTxtZXRhIGh0dHAtZXF1aXY9Q29udGVudC1UeXBlIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIj4KLTwvaGVhZD4KLTxib2R5IGxhbmc9IkVOLVVTIj4KLTxoMj5BYm91dCBUaGlzIENvbnRlbnQ8L2gyPgotIAotPHA+TWF5IDIsIDIwMDY8L3A+CQotPGgzPkxpY2Vuc2U8L2gzPgotCi08cD5UaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4gKCZxdW90O0NvbnRlbnQmcXVvdDspLiAgVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50IGlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlCi1FY2xpcHNlIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wICgmcXVvdDtFUEwmcXVvdDspLiAgQSBjb3B5IG9mIHRoZSBFUEwgaXMgYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbDwvYT4uCi1Gb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgJnF1b3Q7UHJvZ3JhbSZxdW90OyB3aWxsIG1lYW4gdGhlIENvbnRlbnQuPC9wPgotCi08cD5JZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24sIHRoZSBDb250ZW50IGlzIGJlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eSAoJnF1b3Q7UmVkaXN0cmlidXRvciZxdW90OykgYW5kIGRpZmZlcmVudCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkKLWFwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gIENoZWNrIHRoZSBSZWRpc3RyaWJ1dG9yJ3MgbGljZW5zZSB0aGF0IHdhcyBwcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiAgSWYgbm8gc3VjaCBsaWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gIFVubGVzcyBvdGhlcndpc2UKLWluZGljYXRlZCBiZWxvdywgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZSBjb2RlIGluIHRoZSBDb250ZW50IGFuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnLjwvcD4KLQotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvYnVpbGQucHJvcGVydGllcyBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvYnVpbGQucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTMzMDJmNC4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2J1aWxkLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1iaW4uaW5jbHVkZXMgPSBwbHVnaW4ueG1sLFwKLSAgICAgICAgICAgICAgIGh0bWwvLFwKLSAgICAgICAgICAgICAgIHRvYy54bWwsXAotICAgICAgICAgICAgICAgLixcCi0gICAgICAgICAgICAgICBNRVRBLUlORi8sXAotICAgICAgICAgICAgICAgaW50cm8vLFwKLSAgICAgICAgICAgICAgIHBsdWdpbi5wcm9wZXJ0aWVzLFwKLSAgICAgICAgICAgICAgIGFib3V0Lmh0bWwKLXNyYy5pbmNsdWRlcyA9IGh0bWwvLFwKLSAgICAgICAgICAgICAgIHBsdWdpbi54bWwsXAotICAgICAgICAgICAgICAgdG9jLnhtbAotamFycy5jb21waWxlLm9yZGVyID0gLgotc291cmNlLi4gPSBzcmMvCi1vdXRwdXQuLiA9IGJpbi8KLWJpbi5leGNsdWRlcyA9IGh0bWwvaW1hZ2VzT2xkLwpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sLy5jdnNpZ25vcmUgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvLmN2c2lnbm9yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTRiOGRiNS4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvLmN2c2lnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW1hZ2VzT2xkCi1pbWFnZXNPbGQyCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvYmFycmllci5odG1sIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2JhcnJpZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjE5ZjJjMS4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvYmFycmllci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjM4ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAgVHJhbnNpdGlvbmFsLy9FTiI+Ci0KLTxodG1sPgotPGhlYWQ+Ci0JPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Ci0JPHRpdGxlPk1QSSBCYXJyaWVyIEFuYWx5c2lzPC90aXRsZT4KLQk8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJoZWxwLmNzcyI+Ci0JPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0idGh1bWIuanMiPiA8L3NjcmlwdD4KLTwvaGVhZD4KLQotPGJvZHk+Ci08aDE+PGltZyBzcmM9ImltYWdlcy9iYXJyaWVyLmdpZiI+IEJhcnJpZXIgQW5hbHlzaXM6IEEgU2hvcnQgSW50cm9kdWN0aW9uPC9oMT4KLTxwPkEgY29tbW9uIHNvdXJjZSBvZiBlcnJvcnMgaW4gU1BNRCAoU2luZ2xlIFByb2dyYW0gTXVsdGlwbGUgRGF0YSkgcHJvZ3JhbW1pbmcgY2F1c2VzIGRlYWRsb2NrcyB3aGVuIGJhcnJpZXIKLXN0YXRlbWVudHMsIGluIHdoaWNoIGFsbCB0YXNrcyBtdXN0IHN5bmNocm9uaXplLCBhcmUgbm90IG1hdGNoZWQgcHJvcGVybHkuCi1JZiBvbmUgTVBJIHRhc2sgaW4gYSBjb21tdW5pY2F0b3IgZG9lcyBub3QgcGFzcyB0aHJvdWdoIHRoZSBzYW1lIG51bWJlciBvZiBNUElfQmFycmllciBzdGF0ZW1lbnRzIGFzIHRoZQotb3RoZXIgdGFza3MgaW4gdGhlIHNhbWUgY29tbXVuaWNhdG9yLAotdGhlIG90aGVyIHRhc2tzIHdpbGwgZGVhZGxvY2sgd2hpbGUgd2FpdGluZy4KLQotPHA+Ci1UaGUgUExEVCBNUEkgQmFycmllciBhbmFseXNpcyBjaGVja3MgYW4gU1BNRCBwcm9ncmFtIGFuZCBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlcmUgYXJlIGRlYWRsb2NrcwotZHVlIHRvIHRoZSBtaXNwbGFjZW1lbnQgb2YgYmFycmllcnMuIFdlIHdpbGwgcmVwb3J0IGVycm9ycyBpZiBhbnksIGFuZCBzaG93ICJtYXRjaGluZyBzZXRzIiAKLWZvciBlYWNoIGJhcnJpZXIgaWYgZXJyb3ItZnJlZS4gVGhlIG1hdGNoaW5nIHNldCBvZiBhIGJhcnJpZXIgY29udGFpbnMgYWxsIGJhcnJpZXJzIHRoYXQKLXN5bmNocm9uaXplIHdpdGggaXQgYXQgcnVuIHRpbWUuIAotCi08cD5Gb3IgZXhhbXBsZSwgY29uc2lkZXIgdGhlIHNlY29uZCBpZi1icmFuY2ggaW4gCi08YSBocmVmPSJzYW1wbGVzL3Rlc3RNUEliYXJyaWVyLmMiPnRlc3RNUEliYXJyaWVyLmM8L2E+LiAKLTxwcmU+Ci0JaWYobXlfcmFuayA9PSAwKXsKLQkJcHJpbnRmKCJ0ZXN0IGVycm9yc1xuIik7Ci0JCU1QSV9CYXJyaWVyKE1QSV9DT01NX1dPUkxEKTsKLQl9Ci0KLTwvcHJlPgotVGhlIHByb2dyYW0gd2lsbCBiZWNvbWUgZGVhZGxvY2tlZCBvbiB0aGUgYWJvdmUgYnJhbmNoIGJlY2F1c2Ugc29tZSBwcm9jZXNzb3JzCi13aWxsIGV4ZWN1dGUgdGhlIGdsb2JhbCBiYXJyaWVyIGluIHRoZSBicmFuY2ggd2hpbGUgdGhlIG90aGVycyB3aWxsIHNraXAgaXQuIAotSG93ZXZlciwKLWl0IGlzIGRpZmZpY3VsdCB0byB2aXN1YWxseSBkZXRlY3QgYW4gZXJyb3IgaWYgYmFycmllcnMgYXJlIG5vdCAidGV4dHVhbGx5IiBhbGlnbmVkLiAKLTxwPgotTm93LCBjb25zaWRlciB0aGUKLXRoaXJkIGlmLWJyYW5jaCBpbiA8YSBocmVmPSJzYW1wbGVzL3Rlc3RNUEliYXJyaWVyLmMiPnRlc3RNUEliYXJyaWVyLmM8L2E+LiAKLTxwcmU+Ci0JaWYoeCA8IDMpewotCQlwcmludGYoIkl0IGlzIG5vdCBhbiBlcnJvclxuIik7Ci0JCU1QSV9CYXJyaWVyKE1QSV9DT01NX1dPUkxEKTsKLQl9Ci0KLTwvcHJlPgotRXZlbiBpZiB3ZSBvbmx5IGhhdmUgYSBiYXJyaWVyIGluIHRoZSB0aGVuIGNsYXVzZSBidXQKLW5vdCBpbiB0aGUgZWxzZSBjbGF1c2UsIHRoZXJlIGlzIG5vIGVycm9yIHNpbmNlIGFsbCBwcm9jZXNzb3JzIGFncmVlIG9uIHRoZSBicmFuY2gKLXByZWRpY2F0ZSwgYW5kIHRoZXkgd2lsbCBjaG9vc2UgdGhlIHNhbWUgd2F5IHRvIGdvLgotPGgyPlJ1bm5pbmcgQmFycmllciBBbmFseXNpczwvaDI+Ci08cD5UbyBydW4gdGhlIGJhcnJpZXIgYW5hbHlzaXMsIHNlbGVjdCBhIHByb2plY3QsIGNvbnRhaW5lciwgb3Igc291cmNlIGZpbGUgaW4gdGhlIFByb2plY3QgRXhwbG9yZXIgdmlldywgCi1hbmQgY2xpY2sgdGhlICBNUEkgYmFycmllciBhbmFseXNpcyBhY3Rpb24gaW4gdGhlIFBMRFQgaWNvbiBtZW51LiAKLU5vdGUgdGhhdCB0aGlzIHNpbXBsZSBleGFtcGxlIGhhcyBhbGwgY29kZSBpbiBhIHNpbmdsZSBmaWxlLCBidXQgYnkgcnVubmluZyB0aGUgYW5hbHlzaXMgb24gYSAKLWNvbnRhaW5lciAoZm9sZGVyKSBvciB0aGUgZW50aXJlIHByb2plY3QsIGludGVyLXByb2NlZHVyYWwgYmFycmllcnMgZnJvbSBvdGhlciBpbmNsdWRlZCBmaWxlcyBhcmUgYWxzbyBjb25zaWRlcmVkLgotPGJyPjxzY3JpcHQ+IHRodW1iKCJpbWFnZXMvYmFycmllckFjdGlvbkFubi5naWYiLDMwMCk8L3NjcmlwdD4KLTxwPlRoZSBiYXJyaWVyIGFuYWx5c2lzIHByb2R1Y2VzIHRocmVlIHZpZXdzIG9mIGluZm9ybWF0aW9uOgotPHVsPgotPGxpPjxhIGhyZWY9IiNiYXJWaWV3Ij5NUEkgQmFycmllcnMgVmlldzwvYT48L2xpPgotPGxpPjxhIGhyZWY9IiNiYXJNYXRjaCI+QmFycmllciBNYXRjaGVzIFZpZXc8L2E+PC9saT4KLTxsaT48YSBocmVmPSIjYmFyRXJyb3IiPkJhcnJpZXIgRXJyb3JzIFZpZXc8L2E+PC9saT4KLTwvdWw+Ci08cD5UaGUgdGhyZWUgdmlld3Mgc2hvdWxkIHNob3cgYXV0b21hdGljYWxseSBhZnRlciBwZXJmb3JtaW5nIGJhcnJpZXIgYW5hbHlzaXMsCi1idXQgdG8gYnJpbmcgdGhlbSB1cCBvdGhlcndpc2UsIHNlbGVjdCBXaW5kb3cgPiBTaG93IFZpZXcgPiBPdGhlci4uLiBhbmQgdW5kZXIKLTxiPlBUUCBNUEkgVmlld3M8L2I+LCBzZWxlY3QgdGhlIHZpZXcgeW91IHdhbnQgdG8gc2hvdy4KLQotPGgyIGlkPSJiYXJWaWV3Ij5NUEkgQmFycmllcnMgVmlldyA8L2gyPgotPHA+VGhlIDxiPk1QSSBCYXJyaWVyczwvYj4gdmlldyBsaXN0cyBhbGwgYmFycmllcnMgaW4gdGhlIHByb2dyYW0ocyksIHRoZWlyCi1lbmNsb3NpbmcgZnVuY3Rpb24gbmFtZXMsIGZpbGVuYW1lcywgbGluZSBudW1iZXJzLCBhbmQgaW5kZXggbnVtYmVycyAKLShiZWdpbm5pbmcgZnJvbSAxKS4gSW4gdGhlIG90aGVyIHR3byB2aWV3cywgYmFycmllcnMgYXJlIHJlZmVycmVkIHRvIGFjY29yZGluZyB0bwotdGhlaXIgaW5kZXggbnVtYmVycyAoZS5nLiwgdGhlIGJhcnJpZXIgd2l0aCBpbmRleCBudW1iZXIgMSBpcyBjYWxsZWQgCi0iYmFycmllciAxIikuCi08cD5UbyBmaW5kIHRoZSBzb3VyY2UgY29kZSBsaW5lIGZvciBhIGJhcnJpZXIgaW4gdGhlIHZpZXcsIGRvdWJsZS1jbGljayBvbiB0aGUgbGluZQotaW4gdGhlIHZpZXcsIGFuZCB0aGUgZWRpdG9yIHdpbGwgb3BlbiBvbiB0aGF0IHNvdXJjZSBmaWxlIChpZiBub3QgYWxyZWFkeSBvcGVuZWQpIGFuZAotaXQgd2lsbCBzY3JvbGwgdG8gdGhlIGxpbmUgY29udGFpbmluZyB0aGUgYmFycmllci48L3A+Ci08cD4gCi08aW1nIHNyYz0iaW1hZ2VzL0JhcnJpZXJWaWV3LmdpZiI+Ci08YnI+Ci08aDIgaWQ9ImJhck1hdGNoIj5CYXJyaWVyIE1hdGNoZXMgVmlldyA8L2gyPgotPHA+QnkgcnVubmluZyB0aGUgYW5hbHlzaXMsIHdlIHdpbGwgc2hvdyB0d28ga2luZHMKLW9mIHJlc3VsdHM6IAotCi08b2w+Ci08bGk+Ci1Gb3IgZWFjaCBiYXJyaWVyIGIsIGFsbCBiYXJyaWVycyB0aGF0IG1hdGNoIHRvIGIgYXJlIHNob3duLiA8L2xpPgotPGxpPgotQmFycmllciBzeW5jaHJvbml6YXRpb24gZXJyb3JzIGFyZSBzaG93biwgaWYgYW55LiA8L2xpPgotPC9vbD4KLTxwPlRoZSBtYXRjaGluZyBzZXRzIGFyZSBzaG93biBpbiB0aGUgPGI+QmFycmllciBNYXRjaGVzPC9iPiB2aWV3LiAKLVRoZXkgYXJlIGdyb3VwZWQgaW4gdGhpcyB2aWV3IGFzIGEgdHJlZSB2aWV3IHdpdGggInBhcmVudCIgbm9kZXMgYW5kICJjaGlsZCIgbm9kZXMuCi1UaGUgbWF0Y2hpbmcgc2V0IG9mIGEgYmFycmllciBjb250YWlucyBhbGwgYmFycmllcnMgdGhhdAotc3luY2hyb25pemUgd2l0aCBpdCBhdCBydW4gdGltZS4gVGhhdCBpcywgYWxsIHByb2Nlc3NlcyBpbiB0aGUgTVBJIHByb2dyYW0gbXVzdCBhcnJpdmUKLWF0IG9uZSBvZiB0aGUgYmFycmllciBzdGF0ZW1lbnRzIGluIGEgbWF0Y2hpbmcgc2V0LCBiZWZvcmUgYW55IG9mIHRoZSBwcm9jZXNzZXMgY2FuIHByb2NlZWQuCi1Gb3IgZWFjaCBiYXJyaWVyIHN0YXRlbWVudCBpbiB0aGUgcHJvZ3JhbSBzb3VyY2UgZmlsZXMgdGhhdCBhcmUgYW5hbHl6ZWQsIGEgbWF0Y2hpbmcgc2V0IGlzIGNhbGN1bGF0ZWQgYW5kIHNob3duLiAgCi1TbyBmb3IgYSBtYXRjaGluZyBzZXQKLXdpdGggdHdvIG1lbWJlcnMsIHRoaXMgdmlldyB3aWxsIHNob3cgYm90aCBhIG1hdGNoaW5nIHNldCB3aXRoIHRoZSBmaXJzdCBiYXJyaWVyIGFzIHRoZSBwYXJlbnQsCi1hbmQgYW5vdGhlciBtYXRjaGluZyBzZXQgd2l0aCB0aGUgc2Vjb25kIGJhcnJpZXIgYXMgdGhlIHBhcmVudC4KLVRoZSBwYXJlbnQgYmFycmllciBub2RlIGluIHRoZSB2aWV3IHNob3dzIHRoZSBzaXplIG9mIGl0cyBtYXRjaGluZyBzZXQgaW4gcGFyZW50aGVzZXMuCi08cD4KLU5vdGUgdGhhdCBpZiBhIG1hdGNoaW5nIGVycm9yIG9jY3VycyBpbiBhIHN0YXRlbWVudCwgIAotdGhlbiBiYXJyaWVycyB1c2VkIGluIHRoaXMgc3RhdGVtZW50IDxpPm1pZ2h0PC9pPiBoYXZlIGFuIGVtcHR5IG1hdGNoaW5nIHNldCAodGhleSA8aT5taWdodDwvaT4KLXN0aWxsIGhhdmUgYSBub24tZW1wdHkgbWF0Y2hpbmcgc2V0IGlmIHRoZXkgYXJlIGFsc28gdXNlZCBpbiBvdGhlciBwb3J0aW9ucyBvZiB0aGUKLXByb2dyYW0pLiBUaGlzIGlzIG9uZSBvZiB0aGUgYWR2YW50YWdlcyBvZiBvdXIgYW5hbHlzaXM6IGlmIGFuIGVycm9yIG9jY3Vycywgb3VyCi1hbmFseXNpcyBjYW4gInJlY292ZXIiIGZyb20gc3VjaCBhbiBlcnJvciBieSBjb250aW51aW5nIHRvIGFuYWx5emUgb3RoZXIgcG9ydGlvbnMgb2YgCi10aGUgcHJvZ3JhbSB0aGF0IGFyZSBub3QgYWZmZWN0ZWQgYnkgc3VjaCBlcnJvci4KLTwvcD4KLTxwPkluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSwgdGhlIG1hdGNoaW5nIHNldCBmb3IgIkJhcnJpZXIgMSIgCi0odGhlIGJhcnJpZXIgc2V0IGhpZ2hsaWdodCBpbiBibHVlIGJlbG93KSBjb250YWlucyB0d28gKDIpIGJhcnJpZXJzLgotVGhlIGZpcnN0IGlzIGluIHRoZSA8Y29kZT5iYXJyaWVyKCk8L2NvZGU+IGZ1bmN0aW9uIGFuZCB0aGUgc2Vjb25kIGlzIGluIHRoZSAKLTxjb2RlPm1haW4oKTwvY29kZT4gZnVuY3Rpb24uCi08L3A+Ci08cD5MaWtlIHRoZSBvdGhlciB2aWV3cywgdG8gZmluZCBhIGJhcnJpZXIgc291cmNlIGNvZGUgbGluZSBmcm9tIHRoZSB2aWV3LCBkb3VibGUtY2xpY2sgb24gdGhlCi1saW5lIGluIHRoZSB2aWV3LiAgQmFycmllciBtYXJrZXJzIGFyZSBzaG93biBpbiB0aGUgbWFya2VyIGJhciBvZiB0aGUgZWRpdG9yIHRvIHBpbnBvaW50IHRoZQotYmFycmllciBzdGF0ZW1lbnRzIGZvdW5kLgotCi08cD4KLTxpbWcgc3JjPSJpbWFnZXMvQmFycmllck1hdGNoaW5nU2V0Vmlldy5naWYiPgotCi08aDIgaWQ9ImJhckVycm9yIj5CYXJyaWVyIEVycm9ycyBWaWV3IDwvaDI+Ci08cD5XaGVuIGEgYmFycmllciBlcnJvciBpcyBkZXRlY3RlZCwgaXQgaXMgaGlnaGxpZ2h0ZWQgaW4KLXRoZSBlZGl0b3IgaW4gcmVkLiBJbiBhZGRpdGlvbiwgdGhlIEJhcnJpZXIgRXJyb3JzIHZpZXcgc2hvd3MgYSBjb3VudGVyIGV4YW1wbGUgd2hpY2ggY29udGFpbnMgCi10d28gc2VxdWVuY2VzIG9mIGJhcnJpZXJzIHdoaWNoIGhhdmUgZGlmZmVyZW50IHNpemVzIGFsb25nIHR3bwotcGF0aHMgc3RhcnRpbmcgZnJvbSB0aGUgaGlnaGxpZ2h0ZWQgZXJyb3IgcG9zaXRpb24uIFRoaXMgY291bnRlciBleGFtcGxlCi1zaW11bGF0ZXMgYW4gZXhlY3V0aW9uIGFuZCBpbGx1c3RyYXRlcyB0aGUgcmVhc29uIGZvciB0aGUgCi1zeW5jaHJvbml6YXRpb24gZXJyb3IuIE5vdGUgdGhhdCBhIHN5bmNocm9uaXphdGlvbiBlcnJvciBvY2N1cnMgaWYgZGlmZmVyZW50IAotTVBJIHRhc2tzIG1lZXQgYSBkaWZmZXJlbnQgbnVtYmVyIG9mIGJhcnJpZXJzLiAgSWYgYSBiYXJyaWVyIGIgaXMgaW4gYSBsb29wLCBhbmQKLWFsbCB0YXNrcyBleGVjdXRlIHRoZSBzYW1lIG51bWJlciBvZiBpdGVyYXRpb25zLCB0aGVuIGJhcnJpZXIgYiBpcyBtYXJrZWQgYnkgCi0iKiIsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIHN0YXRpYyBiYXJyaWVyIGluIHRoZSBjb3VudGVyIGV4YW1wbGUgcmVwcmVzZW50cyBhIAotZHluYW1pYyBudW1iZXIgb2YgYmFycmllcnMgYXQgcnVudGltZS4gSWYgYSBzeW5jaHJvbml6YXRpb24gZXJyb3Igb2NjdXJzIAotb24gYSBsb29wIChpLmUuLCBkaWZmZXJlbnQgdGFza3Mgd2lsbCBleGVjdXRlIGEgZGlmZmVyZW50IG51bWJlciBvZiBpdGVyYXRpb25zIAotb2Ygc3VjaCBsb29wKSwgdGhlbiB3ZSBzaG93IHRoZSBjb3VudGVyIGV4YW1wbGUgYXMgdGhlIHNlcXVlbmNlIG9mIGJhcnJpZXJzCi1pbiB0aGUgbG9vcCBib2R5LiAKLTxicj48c2NyaXB0PiB0aHVtYigiaW1hZ2VzL2JhcnJpZXJFcnJvclZpZXcuZ2lmIiwzMDApPC9zY3JpcHQ+Ci08cD5JZiBhIGZpbGVuYW1lIGFuZCBMaW5lTm8gYXJlIHNob3duLCBkb3VibGUtY2xpY2sgb24gdGhhdCBsaW5lIGluCi10aGUgQmFycmllciBFcnJvcnMgdmlldyB0byBsb2NhdGUgdGhhdCBCYXJyaWVyIG9yIGVycm9yLgotVGhlIGluaXRpYWwgRXJyb3IgbGluZSBpbiB0aGUgdmlldyBzaG91bGQgcG9pbnQgdG8gdGhlIHBvaW50IGluIHRoZSBwYXRoIG9mCi1leGVjdXRpb24gdGhhdCBmb3JrcyAoc3VjaCBhcyBhbiBpZiBzdGF0ZW1lbnQpIHN1Y2ggdGhhdCBvbmUgcGF0aCBlbmNvdW50ZXJzIAotYSBiYXJyaWVyIHRoYXQgdGhlIG90aGVyIHBhdGggZG9lcyBub3QuCi08cD4KLVRvIHNob3cgdGhlIHBhdGggb2YgYSBjb3VudGVyZXhhbXBsZSAoZS5nLiBhIHBhdGggd2l0aG91dCBiYXJyaWVycyksCi1kb3VibGUtY2xpY2sgb24gdGhlIFBhdGggbGluZSBpbiB0aGUgdmlldywgYXMgc2hvd24gYmVsb3cuIElmIHRoZXJlCi1pcyBhIHBhdGggYXZhaWxhYmxlIGl0IHNob3VsZCBiZSBzaG93bi4KLTxicj48c2NyaXB0PiB0aHVtYigiaW1hZ2VzL2JhcnJpZXJQYXRoU2VsZWN0aW9uLnBuZyIsMzUwKTwvc2NyaXB0PgotCi0KLTxoMz5TYW1wbGUgcHJvZ3JhbSB0ZXN0TVBJYmFycmllci5jIDwvaDM+Ci08cD4gV2UgdXNlIHRoaXMgc2ltcGxlIHByb2dyYW0gPGEgaHJlZj0ic2FtcGxlcy90ZXN0TVBJYmFycmllci5jIj50ZXN0TVBJYmFycmllci5jPC9hPiAKLXRvIGlsbHVzdHJhdGUgdGhlIGJhc2ljIGZ1bmN0aW9uYWxpdHkgb2YgdGhlCi1hbmFseXNpcyBhbmQgdGhyZWUgdmlld3MuIAotVGhlIGNvZGUgaXMgY29uZGVuc2VkIGhlcmU6Ci08cHJlPgotICAgIGlmIChteV9yYW5rICE9MCl7Ci0JCS4uLgotCQlNUElfU2VuZCguLi4pOwotCQlNUElfQmFycmllcihNUElfQ09NTV9XT1JMRCk7Ci0JfQotCWVsc2V7Ci0JCWZvciAoc291cmNlID0gMTsgc291cmNlIDwgcDsgc291cmNlKyspIHsKLQkJCU1QSV9SZWN2KC4uLik7Ci0JCX0KLQkJYmFycmllcigpOwotCX0KLQlpZihteV9yYW5rID09IDApewotCQlNUElfQmFycmllcihNUElfQ09NTV9XT1JMRCk7Ci0JfQotCWVsc2V7Ci0JICAgIHByaW50ZigidGhpcyBwYXRoIGRvZXMgbm90IGNvbnRhaW4gYSBiYXJyaWVyXG4iKTsKLQl9Ci0JCi0JaWYoeCA8IDMpewotCQkuLi4KLQkJTVBJX0JhcnJpZXIoTVBJX0NPTU1fV09STEQpOwotCX0KLQkKLQl3aGlsZSh4IDwgbXlfcmFuayl7Ci0JCU1QSV9CYXJyaWVyKE1QSV9DT01NX1dPUkxEKTsKLQkJeCArKzsKLQl9Ci08L3ByZT4KLVRoZXJlIGFyZSB0aHJlZSBicmFuY2hlcyBhbmQgb25lIGxvb3AgaW4gdGhlIHByb2dyYW0uCi1UaGUgZmlyc3QgYnJhbmNoICggdGhlIDxjb2RlPmlmKCBteV9yYW5rIT0wKTwvY29kZT4gc3RhdGVtZW50ICkgaXMgZnJlZSBvZiBzeW5jaHJvbml6YXRpb24gCi1lcnJvcnM7IHR3byBiYXJyaWVycyAob25lIGVuY29kZWQgZGlyZWN0bHkgaW4gCi10aGUgbG9vcCwgCi1hbmQgdGhlIG90aGVyIGluIHRoZSBiYXJyaWVyKCkgZnVuY3Rpb24gY2FsbGVkIGluIHRoZSBlbHNlIGNsYXVzZSkgbWF0Y2ggdG8gZWFjaCBvdGhlci4gCi1UaGUgc2Vjb25kIGJyYW5jaCAoPGNvZGU+aWYobXlfcmFuayA9PSAwKTwvY29kZT4pCi1jb250YWlucyBhbiBlcnJvciBiZWNhdXNlIHNvbWUgdGFza3Mgd291bGQgZXhlY3V0ZSB0aGUgYmFycmllciBpbiBpdCwgd2hpbGUgdGhlCi1vdGhlciB0YXNrcyB3b3VsZCBza2lwIGl0LiBUaGUgZWxzZSBjbGF1c2UgaGVyZSBpcyBhZGRlZCBmb3IgZW1waGFzaXMuCi1UaGUgbmV4dCBicmFuY2ggKDxjb2RlPmlmKHg8Myk8L2NvZGU+KSBkb2VzIG5vdCBtYWtlIGEgZGVjaXNpb24gYmFzZWQgb24gcHJvY2Vzc29yCi1yYW5rICh4IGRvZXMgbm90IGRlcGVuZCBvbiByYW5rKSBzbyBwcm9jZXNzZXMgc2hvdWxkIHByb2NlZWQgc2ltaWxhciB0byBlYWNoIG90aGVyLgotVGhlIGxvb3AgKDxjb2RlPndoaWxlKHggPCBteV9yYW5rKTwvY29kZT4pCi1jb250YWlucyBhbiBlcnJvciBhbHNvLCBzaW5jZSBkaWZmZXJlbnQgCi10YXNrcyBtYXkgZXhlY3V0ZSBhIGRpZmZlcmVudCBudW1iZXIgb2YgaXRlcmF0aW9ucywgYW5kIHRodXMgZW5jb3VudGVyIGEgZGlmZmVyZW50IG51bWJlciBvZgotYmFycmllcnMuCi0gPCEtLSBzaW5jZSB0aGlzIGNvZGUgaXNuJ3QgaW5jbHVkZWQsIGRvbid0IHJlZmVyIHRvIGl0IGhlcmUgIAotPGgzPiBNUEIgPC9oMz4KLTxwPk1QQiBpcyBhIHNjaWVudGlmaWMgYXBwbGljYXRpb24gd2hpY2ggY29tcHV0ZXMgdGhlIGVsZWN0cm9tYWduZXRpYyBtb2RlbCB1c2luZwotbWF4d2VsbCBlcXVhdGlvbnMuIFdlIHVzZSB0aGlzIGV4YW1wbGUgdG8gc2hvdyB0aGUgZm9sbG93aW5nIHBvaW50czoKLTxwPigxKSBPdXIgYW5hbHlzaXMgaGFzIGludGVyLXByb2NlZHVyYWwgYW5hbHlzaXMuIFRoaXMgbWFrZXMgb3VyIGFuYWx5c2lzIHRvb2wgCi1vdXRwZXJmb3JtIHByZXZpb3VzIGludHJhLXByb2NlZHVyYWwgYW5hbHlzaXMgYWxnb3JpdGhtcy4KLTxwPigyKSBUcnkgdGhpcyB0byBzaG93IHRoZSBuZWNlc3NpdHkgYW5kIGVmZmVjdGl2ZW5lc3Mgb2YgdGhlIGludGVyLXByb2NlZHVyYWwgCi1hbmFseXNpcy4gSW4gdGhlIG9yaWdpbmFsIGNvZGUsIHRoZXJlIGFyZSB0aHJlZSBiYXJyaWVyczogdHdvIGluIGZ1bmN0aW9uIAotbWF0cml4aW9fY3JlYXRlX3N1YigpLCBhbmQgb25lIGluIG1hdHJpeGlvX2NyZWF0ZV9kYXRhc2V0KCkuIE9idmlvdXNseSB0d28gYmFycmllcnMKLWluIG1hdHJpeGlvX2NyZWF0ZV9zdWIoKSBtYXRjaCB0byBlYWNoIG90aGVyLiBOb3cgY29tbWVudCBvdXQgImJhcnJpZXIgMSIgKHRoZSBvbmUgCi1pbiB0aGUgdGhlbiBjbGF1c2Ugb2YgdGhlIGlmLWJyYW5jaCBpbiBtYXRyaXhpb19jcmVhdGVfc3ViKCkpLCBhZGQgYSBiYXJyaWVyIGluIGZ1bmN0aW9uCi1tcGlfaXNfbWFzdGVyKCksIHJpZ2h0IGFmdGVyIHRoZSBNUElfQ29tbV9yYW5rIGNhbGwsIHRoZW4gcnVuIHRoZSBhbmFseXNpcy4KLU9uZSBtYXkgZXhwZWN0IGEgc3luY2hyb25pemF0aW9uIGVycm9yIGluIHRoaXMgYnJhbmNoLCBob3dldmVyIGl0IGlzIHN0aWxsIGVycm9yIGZyZWUsIAotc2luY2UgdGhlIGZ1bmN0aW9uIG1hdHJpeGlvX3dyaXRlX3N0cmluZ19hdHRyKCkgd2lsbCBjYWxsIG1waV9pc19tYXN0ZXIoKSBzb21ld2hlcmUuCi0obWF0cml4aW9fd3JpdGVfc3RyaW5nX2F0dHIgY2FsbHMgIHdyaXRlX2F0dHIgd2hpY2ggY2FsbHMgbXBpX2lzX21hc3RlcikKLQotPGgzPiBUY2dtc2cgPC9oMz4KLQotVGNnbXNnIGlzIGFuIE1QSSB0b29sa2l0LiBBcyB3aXRoIHRoZSBNUEIgYXBwbGljYXRpb24sIHdlIHVzZSBpdCB0byBkZW1vbnN0cmF0ZSB0aGUgaW50ZXItcHJvY2VkdXJhbAotYW5hbHlzaXMuIFRoZXJlIGFyZSBzb21lIGludGVyZXN0aW5nIHBvaW50cyBpbiB0aGUgZnVuY3Rpb24gdGVzdF9tYWluKCk6Ci0KLSgxKSBBdCB0aGUgYmVnaW5uaW5nIG9mIHRlc3RfbWFpbigpLCB0aGUgbWFzdGVyIHRocmVhZCByZWFkcyBhIHBhcmFtZXRlciAib3B0IgotZnJvbSBzdGRvdXQgKHRoZSBmaXJzdCB3aGlsZSBsb29wKSwgYW5kIGJyb2FkY2FzdHMgaXQgdG8gb3RoZXIgdGhyZWFkcyAKLShieSBCUkRDU1RfKSBzbyB0aGF0IHRoZXkgb2J0YWluIHRoZSBzYW1lICJvcHQiLiBBbGwgdGhyZWFkcyB0aGVuIGNob29zZSAKLXNvbWUgam9iIHRvIGRvIGFjY29yZGluZyB0byB0aGUgdmFsdWUgb2YgIm9wdCIuIE5vIHN5bmNocm9uaXphdGlvbiBvY2N1cnMgaW4gdGhlIG9yaWdpbmFsCi1jb2RlLiBJZiB0aGUgbWFzdGVyIHRocmVhZCBkb2Vzbid0IGJyb2FkY2FzdCB0aGUgIm9wdCIgdmFsdWUsIHRoZW4gZGlmZmVyZW50IHByb2Nlc3NvcnMKLXdpbGwgY2hvb3NlIGRpZmZlcmVudCBqb2JzLCBhbmQgYW4gZXJyb3Igb2NjdXJzIChubyBiYXJyaWVyIGFyZSB1c2VkIGluIGNhc3QgMC00LCB3aGlsZQotc29tZSBiYXJyaWVycyBhcmUgdXNlZCBpbiBjYXNlIDUpLgotCi0oMikgVGhpcyBwcm9ncmFtIGFsc28gaWxsdXN0cmF0ZXMgaG93IGVycm9ycyAoYW5kIGNvdW50ZXIgZXhhbXBsZXMpIGFyZSByZXBvcnRlZCBmb3IKLXRoZSAic3dpdGNoIiBzdGF0ZW1lbnQuIEJyaWVmbHksIHdlIHdpbGwgb25seSBzaG93IHRoZSAiZmlyc3QiIGVycm9yLCBpLmUuLCBpZgotdGhlIHN3aXRjaCBzdGF0ZW1lbnQgY29udGFpbnMgbiBjYXNlcywgd2Ugd2lsbCBhbHdheXMgYmVnaW4gZnJvbSB0aGUgZmlyc3QgdHdvIGNhc2VzLCAKLWFuZCBtb3ZlIHRvIHRoZSBuZXh0IGNhc2UgT05MWSBJRiB0aGUgZmlyc3QgdHdvIGNhc2VzIGFyZSBlcnJvci1mcmVlLiBUbyB0ZXN0IGl0LCBpZgotd2UgYWRkIGEgYmFycmllciBpbiBjYXNlIDAgY2xhdXNlLCB0aGVuIGFuIGVycm9yIHdpbGwgYmUgcmVwb3J0ZWQsIGFuZCBvbmUgcGF0aAotaW4gdGhlIGNvdW50ZXIgZXhhbXBsZSBjb250YWlucyAxIGJhcnJpZXIgKHRoZSBiYXJyaWVyIHdlJ3ZlIGp1c3QgYWRkZWQgaW4pLCBhbmQgdGhlCi1vdGhlciBwYXRoIGNvbnRhaW5zIG5vIGJhcnJpZXIgKGNhc2UgMSBjbGF1c2UpLgotLS0+Ci0KLTxwPiZuYnNwOwotPHA+Jm5ic3A7Ci08cD4mbmJzcDsKLTxwPiZuYnNwOwotPHA+Jm5ic3A7Ci08L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2hlbHAuY3NzIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2hlbHAuY3NzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZjA5ZjkwLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9oZWxwLmNzcworKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLS8qIGZvbGxvd2luZyBmb250IGZhY2UgZGVjbGFyYXRpb25zIG5lZWQgdG8gYmUgcmVtb3ZlZCBmb3IgREJDUyAqLw0KLQ0KLQ0KLWJvZHksIGgxLCBoMiwgaDMsIGg0LCBwLCB0YWJsZSwgdGQsIGNhcHRpb24sIHRoLCB1bCwgb2wsIGRsLCBsaSwgZGQsIGR0IHtmb250LWZhbWlseTogQXJpYWwsIHNhbnMtc2VyaWY7IGNvbG9yOiAjMDAwMDAwfQ0KLXByZQkJCQl7IGZvbnQtZmFtaWx5OiBDb3VyaWVyLCBtb25vc3BhY2V9DQotDQotLyogZW5kIGZvbnQgZmFjZSBkZWNsYXJhdGlvbnMgKi8NCi0NCi0vKiBmb2xsb3dpbmcgZm9udCBzaXplIGRlY2xhcmF0aW9ucyBzaG91bGQgYmUgT0sgZm9yIERCQ1MgKi8NCi1ib2R5LCBoMSwgaDIsIGgzLCBoNCwgcCwgdGFibGUsIHRkLCBjYXB0aW9uLCB0aCwgdWwsIG9sLCBkbCwgbGksIGRkLCBkdCB7Zm9udC1zaXplOiAxMHB0OyB9DQotcHJlCQkJCXsgZm9udC1zaXplOiAxMHB0fQ0KLQ0KLS8qIGVuZCBmb250IHNpemUgZGVjbGFyYXRpb25zICovDQotDQotYm9keQkgICAgIHsgYmFja2dyb3VuZDogI0ZGRkZGRn0NCi1oMSAgICAgICAgICAgeyBmb250LXNpemU6IDE4cHQ7IG1hcmdpbi10b3A6IDU7IG1hcmdpbi1ib3R0b206IDEgfQkNCi1oMiAgICAgICAgICAgeyBmb250LXNpemU6IDE0cHQ7IG1hcmdpbi10b3A6IDI1OyBtYXJnaW4tYm90dG9tOiAzIH0NCi1oMyAgICAgICAgICAgeyBmb250LXNpemU6IDExcHQ7IG1hcmdpbi10b3A6IDIwOyBtYXJnaW4tYm90dG9tOiAzIH0NCi1oNCAgICAgICAgICAgeyBmb250LXNpemU6IDEwcHQ7IG1hcmdpbi10b3A6IDIwOyBtYXJnaW4tYm90dG9tOiAzOyBmb250LXN0eWxlOiBpdGFsaWMgfQ0KLXAgCSAgICAgeyBmb250LXNpemU6IDEwcHQ7IH0NCi1wcmUJICAgICB7IG1hcmdpbi1sZWZ0OiA2OyBmb250LXNpemU6IDlwdCB9DQotDQotYTpsaW5rIHsgY29sb3I6ICMwMDY2OTkgfQ0KLWE6dmlzaXRlZCB7IGNvbG9yOiAjOTk2Njk5IH0NCi1hOmhvdmVyICB7IGNvbG9yOiAjMDA2Njk5IH0NCi0NCi11bAkgICAgIHsgbWFyZ2luLXRvcDogMDsgbWFyZ2luLWJvdHRvbTogMTAgfQ0KLWxpCSAgICAgeyBtYXJnaW4tdG9wOiAwOyBtYXJnaW4tYm90dG9tOiAwIH0gDQotbGkgcAkgICAgIHsgbWFyZ2luLXRvcDogMDsgbWFyZ2luLWJvdHRvbTogMCB9IA0KLW9sCSAgICAgeyBtYXJnaW4tdG9wOiAwOyBtYXJnaW4tYm90dG9tOiAxMCB9DQotZGwJICAgICB7IG1hcmdpbi10b3A6IDA7IG1hcmdpbi1ib3R0b206IDEwIH0NCi1kdAkgICAgIHsgbWFyZ2luLXRvcDogMDsgbWFyZ2luLWJvdHRvbTogMDsgZm9udC13ZWlnaHQ6IGJvbGQgfQ0KLWRkCSAgICAgeyBtYXJnaW4tdG9wOiAwOyBtYXJnaW4tYm90dG9tOiAwIH0NCi1zdHJvbmcJICAgICB7IGZvbnQtd2VpZ2h0OiBib2xkfQ0KLWVtCSAgICAgeyBmb250LXN0eWxlOiBpdGFsaWN9DQotdmFyCSAgICAgeyBmb250LXN0eWxlOiBpdGFsaWN9DQotZGl2LnJldmlzaW9uIHsgYm9yZGVyLWxlZnQtc3R5bGU6IHNvbGlkOyBib3JkZXItbGVmdC13aWR0aDogdGhpbjsgDQotCQkJCSAgIGJvcmRlci1sZWZ0LWNvbG9yOiAjN0I2OEVFOyBwYWRkaW5nLWxlZnQ6NSB9DQotdGgJICAgICB7IGZvbnQtd2VpZ2h0OiBib2xkIH0NCi0NCi0vKiBNaWtlIEJlaG0ncyBhZGRpdGlvbiB0byB0aGUgc3R5bGUgc2hlZXQgKi8NCi0udXNlcmlucHV0IHsgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsgfQ0KLS5ndWl0YWIsIC5pbXBvcnRhbnQsIC5ndWlidXR0b24sIC5zZWxlY3RibHVlLCAuZ3VpbWVudSwgLmd1aWxhYmVsLCANCi0ubm90ZXRpdGxlICB7DQotICAgICBjb2xvcjogIzAwMDAwMDsNCi0gICAgIGZvbnQtZmFtaWx5OiBoZWx2ZXRpY2EsIGFyaWFsLCBzYW5zLXNlcmlmOw0KLSAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7DQotICAgICB9DQotZGl2LmxpbnV4ICB7ZGlzcGxheTpub25lO30NCi0uZmlyc3Rlcm0ge2ZvbnQtc3R5bGU6aXRhbGljO30NCi0NCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL0JhcnJpZXJNYXRjaGluZ1NldFZpZXcuZ2lmIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9CYXJyaWVyTWF0Y2hpbmdTZXRWaWV3LmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTJjZDkzNi4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL0JhcnJpZXJNYXRjaGluZ1NldFZpZXcuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9CYXJyaWVyVmlldy5naWYgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL0JhcnJpZXJWaWV3LmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWViMjQwYy4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL0JhcnJpZXJWaWV3LmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvYW5hbHl6ZS5naWYgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL2FuYWx5emUuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjQ1NDJhLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvYW5hbHl6ZS5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL2JhcnJpZXIuZ2lmIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9iYXJyaWVyLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzVhOTc2MC4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL2JhcnJpZXIuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9iYXJyaWVyQWN0aW9uQW5uLmdpZiBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvYmFycmllckFjdGlvbkFubi5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0NTMyMDEuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9iYXJyaWVyQWN0aW9uQW5uLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvYmFycmllckVycm9yVmlldy5naWYgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL2JhcnJpZXJFcnJvclZpZXcuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTdiOGYwLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvYmFycmllckVycm9yVmlldy5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL2JhcnJpZXJFcnJvcnMuZ2lmIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9iYXJyaWVyRXJyb3JzLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTg0OWMwYy4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL2JhcnJpZXJFcnJvcnMuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9iYXJyaWVyTWF0Y2hlcy5naWYgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL2JhcnJpZXJNYXRjaGVzLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjlkZTQ2Yy4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL2JhcnJpZXJNYXRjaGVzLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvYmFycmllclBhdGhTZWxlY3Rpb24ucG5nIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9iYXJyaWVyUGF0aFNlbGVjdGlvbi5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwNmQzYzkuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9iYXJyaWVyUGF0aFNlbGVjdGlvbi5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL2NsZWFyTWFya2Vycy5naWYgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL2NsZWFyTWFya2Vycy5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2NDZjMDkuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9jbGVhck1hcmtlcnMuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9jb250ZW50QXNzaXN0LmdpZiBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvY29udGVudEFzc2lzdC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwOWQzZmUuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9jb250ZW50QXNzaXN0LmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvaGVscENvbnRTZW5zLmdpZiBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvaGVscENvbnRTZW5zLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDEwNWI0OC4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL2hlbHBDb250U2Vucy5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL2hlbHBDb250U2Vuc0hpdEYxLmdpZiBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvaGVscENvbnRTZW5zSGl0RjEuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOWNhOWFiLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvaGVscENvbnRTZW5zSGl0RjEuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9oZWxwQ29udFNlbnNIaXRGMWNsaWNrLmdpZiBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvaGVscENvbnRTZW5zSGl0RjFjbGljay5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiYzc4ZmUuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9oZWxwQ29udFNlbnNIaXRGMWNsaWNrLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvaG92ZXIuZ2lmIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9ob3Zlci5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlZGUzYzYuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9ob3Zlci5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL2luY2x1ZGUuZ2lmIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9pbmNsdWRlLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjI5YzNmOS4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL2luY2x1ZGUuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9saWIuZ2lmIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9saWIuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YWYyZmYyLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvbGliLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvbWVudVNob3dPcGVuTVBhcnRpZmFjdHMuZ2lmIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9tZW51U2hvd09wZW5NUGFydGlmYWN0cy5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5YmEwM2IuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9tZW51U2hvd09wZW5NUGFydGlmYWN0cy5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL21waUJ1aWxkQ29tbWFuZC5naWYgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL21waUJ1aWxkQ29tbWFuZC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlMzMzNDEuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9tcGlCdWlsZENvbW1hbmQuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9tcGlCdXR0b25zLmdpZiBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvbXBpQnV0dG9ucy5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1YWEwZTUuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9tcGlCdXR0b25zLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvbXBpTWVudS5naWYgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL21waU1lbnUuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZDFjYTIxLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvbXBpTWVudS5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL21waU5ld1Byb2plY3RXb3JrYmVuY2guZ2lmIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9tcGlOZXdQcm9qZWN0V29ya2JlbmNoLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTNmZWZlOS4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL21waU5ld1Byb2plY3RXb3JrYmVuY2guZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9tcGlQcm9qZWN0U2V0dGluZ3MuZ2lmIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9tcGlQcm9qZWN0U2V0dGluZ3MuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjYyNzBiLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvbXBpUHJvamVjdFNldHRpbmdzLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvbXBpVmlld0Fubi5naWYgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL21waVZpZXdBbm4uZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzM2VlOWQ0Li4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvbXBpVmlld0Fubi5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL21waVdpemFyZC5naWYgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL21waVdpemFyZC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2MjQwM2QuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9tcGlXaXphcmQuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9tcGlXaXphcmQyLmdpZiBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvbXBpV2l6YXJkMi5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4MjM2ZGUuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9tcGlXaXphcmQyLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvbXBpV2l6YXJkMy5naWYgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL21waVdpemFyZDMuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OWVlZjA4Li4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvbXBpV2l6YXJkMy5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL25ld1Byb2pPcGVuTVAuZ2lmIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9uZXdQcm9qT3Blbk1QLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTg3MGZhYy4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL25ld1Byb2pPcGVuTVAuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9uZXdQcm9qT3Blbk1Qc2V0dGluZ3MuZ2lmIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9uZXdQcm9qT3Blbk1Qc2V0dGluZ3MuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YjI2MGI3Li4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvbmV3UHJvak9wZW5NUHNldHRpbmdzLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvbmV3UHJvamVjdFdpemFyZC5naWYgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL25ld1Byb2plY3RXaXphcmQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MmUxZjE0Li4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvbmV3UHJvamVjdFdpemFyZC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL29wZW5tcEFydGlmYWN0c2ZvdW5kLmdpZiBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvb3Blbm1wQXJ0aWZhY3RzZm91bmQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhM2FlMzg0Li4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvb3Blbm1wQXJ0aWZhY3RzZm91bmQuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9vcGVubXBQcmVmcy5naWYgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL29wZW5tcFByZWZzLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjE5OTliNi4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL29wZW5tcFByZWZzLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvcGxkdC1tZW51LmdpZiBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvcGxkdC1tZW51LmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2RkNzdiOS4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL3BsZHQtbWVudS5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL3BsZHQtcHJlZnMxLnBuZyBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvcGxkdC1wcmVmczEucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YzhhODI3Li4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvcGxkdC1wcmVmczEucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9wbGR0SWNvbk1pc3BsYWNlZC5naWYgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL3BsZHRJY29uTWlzcGxhY2VkLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTlhNjU1Yi4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL3BsZHRJY29uTWlzcGxhY2VkLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvcHRwLW9wZW5NUHByYWdtYUFubi5naWYgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL3B0cC1vcGVuTVBwcmFnbWFBbm4uZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNWRkMDU3Li4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvcHRwLW9wZW5NUHByYWdtYUFubi5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL3B0cC1vcGVuTVBwcm9ibGVtcy5naWYgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL3B0cC1vcGVuTVBwcm9ibGVtcy5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4MTdjYWEuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9wdHAtb3Blbk1QcHJvYmxlbXMuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9wdHAtb3Blbk1Qc2hvd0NvbmN1cnJlbmN5LmdpZiBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvcHRwLW9wZW5NUHNob3dDb25jdXJyZW5jeS5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxYzAxMzMuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9wdHAtb3Blbk1Qc2hvd0NvbmN1cnJlbmN5LmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvcHRwLW9wZW5NUHNob3dDb25jdXJyZW5jeW1lbnUuZ2lmIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9wdHAtb3Blbk1Qc2hvd0NvbmN1cnJlbmN5bWVudS5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlMTZjODAuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9wdHAtb3Blbk1Qc2hvd0NvbmN1cnJlbmN5bWVudS5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL3JlbW92ZU1hcmtlcnMuZ2lmIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9yZW1vdmVNYXJrZXJzLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzYzNTcwMy4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL3JlbW92ZU1hcmtlcnMuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy93ZWxjb21lQy1wbGR0LmdpZiBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvd2VsY29tZUMtcGxkdC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkMjdkY2QuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy93ZWxjb21lQy1wbGR0LmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvd2VsY29tZU92ZXJ2aWV3LmdpZiBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvd2VsY29tZU92ZXJ2aWV3LmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmJmNzMwOS4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL3dlbGNvbWVPdmVydmlldy5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvb3Blbk1QZXh0cmEuaHRtbCBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9vcGVuTVBleHRyYS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YmUyNDRkLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9vcGVuTVBleHRyYS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTx0aXRsZT4KLVJ1bm5pbmcgUFRQIE9wZW5NUCBUb29scyBQbHVnLWluCi08L3RpdGxlPgotCTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImhlbHAuY3NzIj4KLQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJ0aHVtYi5qcyI+IDwvc2NyaXB0PgotCTwvaGVhZD4KLTxib2R5PgotPGgxPiBSdW5uaW5nIFBUUCBPcGVuTVAgVG9vbHMgPC9oMT4KLTxwPkZvciB0aGUgbW9zdCBwYXJ0LCB0aGUgT3Blbk1QIHRvb2xzIGFyZSBzaW1pbGFyIHRvIHRoZSBNUEkKLXRvb2xzLiAgU2VlIHRoZSA8YSBocmVmPSJzZXR1cC5odG1sIj5zZXR1cDwvYT4gYW5kIDxhIGhyZWY9InJ1bi5odG1sIj5ydW48L2E+IGluc3RydWN0aW9ucyBmb3IgdGhlIE1QSSB0b29scyB0bwotc2VlIGhvdyB0byBjb25maWd1cmUgQ0RUIHRvIGZpbmQgdGhlIGhlYWRlciBmaWxlcywgYW5kIGNvbXBpbGUKLWFuZCBydW4uCi08cD5Zb3UgY2FuIGZpbmQgT3Blbk1QIGFydGlmYWN0cywgc29ydCB0aGUgYXJ0aWZhY3RzIGluIHRoZQotT3Blbk1QIGFydGlmYWN0IHZpZXcsIG5hdmlnYXRlIHRvIHNvdXJjZSBjb2RlIGxpbmVzLAotdXNlIGhvdmVyIGhlbHAsIGNvbnRlbnQgYXNzaXN0LCBhbmQgYnJpbmcgdXAgYSBoZWxwIHZpZXcKLW9uIHRoZSBBUElzIGFzIHdlbGwuCi0KLTxwPlRoZSBQVFAgUGFyYWxsZWwgTGFuZ3VhZ2UgRGV2ZWxvcG1lbnQgVG9vbHMgZG8gYWRkIGEgZmV3Ci1zcGVjaWZpYyBmdW5jdGlvbnMgdW5pcXVlbHkgZm9yIE9wZW5NUCBkZXZlbG9wbWVudDoKLTx1bD4KLTxsaT48YSBocmVmPSIjcHJhZ21hIj5TaG93ICNwcmFnbWEgcmVnaW9uczwvYT48L2xpPgotPGxpPjxhIGhyZWY9IiNjb25jdXIiPlNob3cgY29uY3VycmVuY3k8L2E+PC9saT4KLTxsaT48YSBocmVmPSIjcHJvYiI+U2hvdyBDb21tb24gT3Blbk1QIHByb2JsZW1zPC9hPjwvbGk+Ci08L3VsPgotCi0KLQotPGgyIGlkPSJwcmFnbWEiPlNob3cgI3ByYWdtYSByZWdpb25zPC9oMj4KLTxwPjxzY3JpcHQ+IHRodW1iKCJpbWFnZXMvcHRwLW9wZW5NUHByYWdtYUFubi5naWYiLDMwMCk8L3NjcmlwdD4KLTwvcD4KLTxwPkluIHRoZSBleGFtcGxlIHNjcmVlbnNob3QgYWJvdmUsIE9wZW5NUCBhbmFseXNpcyBoYXMgYmVlbiBydW4KLW9uIHRoZSBzb3VyY2UgZmlsZSBhbmQgdHdvIGFydGlmYWN0cyB3ZXJlIGZvdW5kLCBvbmUgQVBJIGFuZAotb25lICNwcmFnbWEuICAKLVRoZXkgYXJlIHNob3duIGluIHRoZSAiT3Blbk1QIEFydGlmYWN0IFZpZXciIG5lYXIgdGhlIGJvdHRvbSBvZiB0aGUgc2NyZWVuLgotSW4gdGhlIE9wZW5NUCBhcnRpZmFjdCB2aWV3LCB1c2UgdGhlIGNvbnRleHQgbWVudSBvbiB0aGUgI3ByYWdtYSBpdGVtCi1hbmQgc2VsZWN0ICJTaG93IHByYWdtYSByZWdpb24iIGFuZCB0aGUgcmVnaW9uIHRoYXQgdGhlICNwcmFnbWEKLWVuY29tcGFzc2VzIGlzIHNlbGVjdGVkIGFuZCBzaG93biBpbiBncmV5IGluIHRoZSBlZGl0b3IuCi0KLQotCi08aDIgaWQ9ImNvbmN1ciI+U2hvdyBjb25jdXJyZW5jeTwvaDI+Ci08cD48aW1nIHNyYz0iaW1hZ2VzL3B0cC1vcGVuTVBzaG93Q29uY3VycmVuY3ltZW51LmdpZiI+IAotPGJyPlNlbGVjdCBhIHN0YXRlbWVudCwgZS5nLiB0aGUgc3RhdGVtZW50IGhpZ2hsaWdodGVkIGluIGdyZXkgYWJvdmUuCi1TZWxlY3QgdGhlIGNvbnRleHQgbWVudSBvbiB0aGUgaGlnaGxpZ2h0ZWQgc3RhdGVtZW50LCBhbmQgY2xpY2sgIlNob3cgQ29uY3VycmVuY3kiCi1hcyBpbmRpY2F0ZWQgYWJvdmUuICBUaGUgcmVzdWx0cyBhcmUgc2hvd24gYmVsb3c6Ci08cD48aW1nIHNyYz0iaW1hZ2VzL3B0cC1vcGVuTVBzaG93Q29uY3VycmVuY3kuZ2lmIj4gCi08cD5BYm92ZSBhcmUgdGhlIHNjcmVlbi1zaG90IHJlc3VsdHMgb2YgYW4gYW5hbHlzaXMsIHBlcmhhcHMgb24gYSBub3Qgc28gcmVhbCwgCi1idXQgYXQgbGVhc3QgaW50ZXJlc3RpbmcgZXhhbXBsZS4gIAotQWZ0ZXIgaW5kaWNhdGluZyB2aWEgdGhlIGNvbnRleHQgbWVudSB0aGUgc3RhdGVtZW50IHVwb24gd2hpY2gKLXRoZSAiU2hvdyBDb25jdXJyZW5jeSIgYWN0aW9uIGlzIHRvIGJlIGV4ZWN1dGVkLAotb3RoZXIgc3RhdGVtZW50cyB3aWxsIGJlIGhpZ2hsaWdodGVkIGluIHllbGxvdy4KLVRoZSBtZWFuaW5nIGlzIHRoZSBmb2xsb3dpbmc6Ci1UaGUgZ3JheSBzZWxlY3RlZCBzdGF0ZW1lbnQgaXMgYW5hbHlzZWQgZm9yIHRoZSBmb2xsb3dpbmc6IHdoaWNoIAotc3RhdGVtZW50cyBjYW4gZXhlY3V0ZSBjb25jdXJyZW50bHkgdG8gaXQuICAKLVRoZSByZXN1bHQgaW5jbHVkZXMgYWxsIGhpZ2hsaWdodGVkIHN0YXRlbWVudHMgYmV0d2VlbiB0aGUgdHdvIGJhcnJpZXJzLiAgQnV0IGJlY2F1c2Ugb2YgdGhlIGNvbmRpdGlvbmFsIGp1bXAgYXJvdW5kIHRoZSBsb3dlciBiYXJyaWVyLCBleGVjdXRpb24gY291bGQgYWxzbyByZWFjaCB0aGUgdG9wIG9mIHRoZSBsb29wIC0gaGl0dGluZyB0aGUgY29uZGl0aW9uIGFuZCB0aGUgbG9vcCBpbmNyZW1lbnQsIGFzIHdlbGwgYXMgdGhlIGZpcnN0IHN0YXRlbWVudCBpbiB0aGUgbG9vcCBib2R5LiAgQWxsIG9mIHRob3NlIHN0YXRlbWVudHMgYXJlIGhpZ2hsaWdodGVkIGFzIHdlbGwuIElmIGNvcnJlY3QsIHRoaXMgZXhhbXBsZSB3b3VsZCB1c2VmdWxseSBwb2ludCBvdXQgYSBidWcgIC0gYmVpbmcgdGhhdCB0aGUgc2Vjb25kIGJhcnJpZXIgc2hvdWxkIGJlIG91dHNpZGUgdGhhdCBpZiBzdGF0ZW1lbnQhCi0KLQotPGgyIGlkPSJwcm9iIj5TaG93IENvbW1vbiBPcGVuTVAgUHJvYmxlbXM8L2gyPgotPHA+PHNjcmlwdD4gdGh1bWIoImltYWdlcy9wdHAtb3Blbk1QcHJvYmxlbXMuZ2lmIiwzMDApPC9zY3JpcHQ+Ci08cD5BbG9uZyB3aXRoIHRoZSBhbmFseXNpcyBmb3IgZmluZGluZyBPcGVuTVAgYXJ0aWZhY3RzLAotY29tbW9uIHByb2JsZW1zIGFyZSBhbHNvIGxvY2F0ZWQsIGFuZCBzaG93biBpbiB0aGUgT3Blbk1QIFByb2JsZW1zIHZpZXcuCi08cD5UeXBlcyBvZiBwcm9ibGVtcyByZWNvZ25pemVkIGluY2x1ZGU6Ci08IS0tICBwcm9ibGVtcyBpZGVudGlmaWVkIGluIFBBU1RTZW1hbnRpY0NoZWNrLmphdmEgLS0+Ci08dWw+Ci08bGk+UGFyYWxsZWwgZGlyZWN0aXZlIGR5bmFtaWNhbGx5IGluc2lkZSBhbm90aGVyIHBhcmFsbGVsLCBlc3RhYmxpc2hlcyBzaW5nbGUgdGhyZWFkIGNvbnRleHQ8L2xpPgotPGxpPkZvciBkaXJlY3RpdmUgZW1iZWRkZWQgd2l0aGluIGNyaXRpY2FsLCBvcmRlcmVkLCBvciBtYXN0ZXIgZXh0ZW50czwvbGk+Ci08bGk+Rm9yIGRpcmVjdGl2ZSBlbWJlZGRlZCB3aXRoaW4gYW5vdGhlciBwYXJhbGxlbCBmb3Igb3IgcGFyYWxsZWwgc2VjdGlvbnM8L2xpPgotPGxpPlBhcmFsbGVsIGRpcmVjdGl2ZSBkeW5hbWljYWxseSBpbnNpZGUgYW5vdGhlciBwYXJhbGxlbCwgZXN0YWJsaXNoZXMgc2luZ2xlIHRocmVhZCBjb250ZXh0PC9saT4KLTxsaT5Gb3IgZGlyZWN0aXZlIGVtYmVkZGVkIHdpdGhpbiBhbm90aGVyIGZvciwgc2VjdGlvbnMsIG9yIHNpbmdsZSBkaXJlY3RpdmU8L2xpPgotPGxpPkJhcnJpZXIgZGlyZWN0aXZlIG5vdCBwZXJtaXR0ZWQgaW4gcmVnaW9uIGV4dGVudCBvZiBmb3IsIG9yZGVyZWQsIHNlY3Rpb25zLCBzaW5nbGUsIG1hc3RlciwgYW5kIGNyaXRpY2FsPC9saT4KLTxsaT5NYXN0ZXIgZGlyZWN0aXZlIG5vdCBwZXJtaXR0ZWQgaW4gZHluYW1pYyBleHRlbnQgb2YgZm9yLCBzZWN0aW9ucywgb3Igc2luZ2xlIGRpcmVjdGl2ZXM8L2xpPgotPGxpPk9yZGVyZWQgZGlyZWN0aXZlIG5vdCBwZXJtaXR0ZWQgaW4gZHluYW1pYyBleHRlbnQgb2YgY3JpdGljYWwgcmVnaW9uPC9saT4KLTwvdWw+Ci08cD4mbmJzcDs8cD4mbmJzcDs8cD4mbmJzcDsKLTxwPjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8gVG9wPC9hPiB8IDxhIGhyZWY9InRvYy5odG1sIj5CYWNrIHRvIFRhYmxlIG9mIENvbnRlbnRzPC9hPgotCi08L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL3J1bi5odG1sIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL3J1bi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZWQ0YTkzLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9ydW4uaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExOSArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHRpdGxlPgotUnVubmluZyB0aGUgTVBJIFRvb2xzIHdpdGhpbiB0aGUgUGFyYWxsZWwgTGFuZ3VhZ2UgRGV2ZWxvcG1lbnQgVG9vbHMKLTwvdGl0bGU+Ci0JPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iaGVscC5jc3MiPgotCTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImhlbHAuY3NzIj4KLQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJ0aHVtYi5qcyI+IDwvc2NyaXB0PgotCTwvaGVhZD4KLTxib2R5PgotPGgxPiBSdW5uaW5nIHRoZSBNUEkgVG9vbHMgd2l0aGluIHRoZSBQYXJhbGxlbCBMYW5ndWFnZSBEZXZlbG9wbWVudCBUb29sczwvaDE+Ci08cD5UbyBydW4gdGhlIFBUUCBQTERUIE1QSSBUb29scywgCi1jcmVhdGUgYSBwcm9qZWN0IChlLmcgYSBNYW5hZ2VkIE1ha2UgQyBwcm9qZWN0KSwgYW5kCi1zZXQgdGhlIHByZWZlcmVuY2VzIGFuZCBpbmNsdWRlIHBhdGhzIGFzIGRlc2NyaWJlZCBpbgotPGEgaHJlZj0ic2V0dXAuaHRtbCI+U2V0dXAgZm9yIFBUUCBNUEkgVG9vbHM8L2E+LgotCi08cD5UaGUgUGFyYWxsZWwgTGFuZ3VhZ2UgRGV2ZWxvcG1lbnQgVG9vbHMgaG91bGQgd29yayBvbiBTdGFuZGFyZCBNYWtlIEMgcHJvamVjdHMgYXMgd2VsbCwgYW5kCi1vbiBDKysgcHJvamVjdHMgKFN0YW5kYXJkIE1ha2UgYW5kIE1hbmFnZWQgTWFrZSkuICBUaGUgZGVzY3JpcHRpb24gaGVyZSBpcyBmb3IKLWEgTWFuYWdlZCBNYWtlIEMgUHJvamVjdC4KLQotPHA+Tm90ZTogdGhlIHRlcm1zICJNYW5hZ2VkIE1ha2UiIGFuZCAiU3RhbmRhcmQgTWFrZSIgcHJvamVjdHMgd2VyZSBtb3JlIHZpc2libHkgdXNlZCBpbiBDRFQgMy4xLgotVGhleSBhcmUgc3RpbGwgdGhlcmUgaW4gQ0RUIDQuMCBidXQgdGhlIG5hbWVzIGFyZSB1c3VhbGx5IGhpZGRlbi4gIEJ5IGRlZmF1bHQgYSBwcm9qZWN0ICJOZXcgQyBwcm9qZWN0Igotd2lsbCBjcmVhdGUgYSBtYWtlZmlsZSBmb3IgeW91LCBhbmQgdGh1cyBpcyBhICJNYW5hZ2VkIE1ha2UiIHByb2plY3Q7IGlmIHlvdSBjcmVhdGUgYSAiTWFrZWZpbGUgcHJvamVjdCIKLXRoZW4gdGhhdCBpcyB3aGF0IHdhcyBmb3JtZXJseSBjYWxsZWQgYSAiU3RhbmRhcmQgTWFrZSIgcHJvamVjdC4gIENvbmZ1c2VkIGVub3VnaD8gR29vZC4KLQotCi08b2w+Ci08bGk+V2l0aGluIHRoZSBwcm9qZWN0LCBjcmVhdGUgYSBDIGZpbGUgdGhhdCBpbmNsdWRlcyBNUEkgY29kZS4gQSBzYW1wbGUgaXMgPGEgaHJlZj0ic2FtcGxlcy90ZXN0TVBJLmMiPnRlc3RNUEkuYzwvYT4gCi1JZiB5b3UgdXNlZCB0aGUgUExEVCBuZXcgcHJvamVjdCB3aXphcmQgdG8gY3JlYXRlIGFuIE1QSSBwcm9qZWN0LCB0aGVuIHlvdSBwcm9iYWJseSBhbHJlYWR5IGhhdmUgb25lLgotCi08cD5Ob3RlOiBBIHNhbXBsZSBDKysgZmlsZSB3aXRoIE1QSSBjYWxscyAKLWlzIDxhIGhyZWY9InNhbXBsZXMvdGVzdE1QSWNwcC5jcHAiPnRlc3RNUEljcHAuY3BwPC9hPi4KLTxicj5BIHNhbXBsZSBDKysgZmlsZSB3aXRoIE1QSSBjYWxscyBpbiBvcmRpbmFyeSBDIHN0eWxlIAotaXMgPGEgaHJlZj0ic2FtcGxlcy9oZWxsb01QSV9jX3N0eWxlLmNwcCI+aGVsbG9NUElfY19zdHlsZS5jcHA8L2E+LgotCi0KLTwvdWw+Ci08cD4mbmJzcDsKLQotCi08bGk+U2VsZWN0IHRoZSBzb3VyY2UgZmlsZSB0byBhbmFseXNlLCB0byBmaW5kIHRoZSBNUEkgYXJ0aWZhY3RzLgotQ2xpY2sgb24gdGhlIHNvdXJjZSBmaWxlIGluIHRoZSBQcm9qZWN0IEV4cGxvcmVyIG9uIHRoZSBsZWZ0IHRvIGhpZ2hsaWdodCBpdC4KLTxwPkNsaWNrIHRoZSAiU2hvdyBNUEkgQXJ0aWZhY3RzIiBtZW51IGl0ZW0gaW4gdGhlIFBMRFQgaWNvbiBtZW51ICBpbiB0aGUgdG9vbCBiYXIuCi08YnI+PGltZyBzcmM9ImltYWdlcy9wbGR0LW1lbnUuZ2lmIj4KLTxicj4oTm90ZTogaWYgaXQgY29tcGxhaW5zIHRoYXQgYSBzb3VyY2UgZmlsZSBpcyBub3Qgc2VsZWN0ZWQgdGhlIGZpcnN0IHRpbWUsIHNlbGVjdCBpdCBhZ2FpbiBhbmQgcmV0cnkuKQotPHA+VGhlIHdvcmtiZW5jaCB3aXRoIHRoZSBzZWxlY3Rpb24gYW5kIG1lbnUgaXRlbSBpcyBzaG93biBiZWxvdzoKLQotPHA+PHNjcmlwdD4gdGh1bWIoImltYWdlcy9tcGlCdXR0b25zLmdpZiIsMzAwKTwvc2NyaXB0PgotPGxpPlRoZSBNUEkgQXJ0aWZhY3QgVmlldyBpcyBvcGVuZWQsIGlmIGl0IHdhcyBub3QgcHJlc2VudC4KLUl0IGlzIHBvcHVsYXRlZCB3aXRoIE1QSSBhcnRpZmFjdHMgZm91bmQuCi08cD48c2NyaXB0PiB0aHVtYigiaW1hZ2VzL21waVZpZXdBbm4uZ2lmIiwzMDApPC9zY3JpcHQ+Ci0KLQotPHA+SWYgbm8gYXJ0aWZhY3RzIGFyZSBmb3VuZCwgY2hlY2sgdGhhdDoKLTxvbD4KLTxsaT5UaGUgTVBJIHByZWZlcmVuY2VzIHBhZ2UgbGlzdHMgdGhlIGluY2x1ZGUgZmlsZSBmb3IgdGhlIE1QSSBpbnN0YWxsYXRpb24KLXRoYXQgeW91ciBzb3VyY2UgY29kZSB1c2VzLiAgVGhpcyBsaXN0IGlzIGhvdyB0aGUgYW5hbHlzaXMgZGV0ZXJtaW5lcyB3aGF0IGlzCi1hbiAiTVBJIGFydGlmYWN0LiIgIAotPGxpPllvdXIgcHJvamVjdCBwcm9wZXJ0aWVzIGhhdmUgdGhlIGluY2x1ZGUgcGF0aCAodGhlIHNhbWUgb25lIGxpc3RlZAotaW4gdGhlIE1QSSBwcmVmZXJlbmNlcyBwYWdlKSBsaXN0ZWQuCi1Ob3RlIHRoYXQgdGhlIE1QSSBhbmFseXNpcyBtYXkgcmVxdWlyZSB0aGlzIGV2ZW4gaWYgCi10aGUgYnVpbGQgcHJvY2VkdXJlIC0gc3VjaCBhcyAgYSBidWlsZCBjb21tYW5kIGxpa2UgJ21waWNjJyAtIAotaW1wbGljaXRseSBkb2VzIHRoaXMgaW5jbHVkZSBmb3IgeW91IGR1cmluZyBidWlsZC4KLTwvb2w+Ci08cD4mbmJzcDsKLTxsaT5Eb3VibGUgY2xpY2sgb24gYW55IGxpbmUgaW4gdGhlIE1QSSBBcnRpZmFjdCBWaWV3Ci10byBuYXZpZ2F0ZSB0aGUgZWRpdG9yIHRvIHRoYXQgbGluZSBpbiB0aGUgc291cmNlIGZpbGUuCi08cD4mbmJzcDsKLTxsaT5Ib3ZlciBvdmVyIHRoZSBNUEkgQXJ0aWZhY3QgaWRlbnRpZmllZCBpbiB0aGUgc291cmNlIGZpbGUKLShieSBibHVlIHNxdWlnZ2xlcykgdG8gc2VlIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhhdAotZnVuY3Rpb24gY2FsbCwgZm9yIGV4YW1wbGUuIAotPGJyPjxpbWcgc3JjPSJpbWFnZXMvaG92ZXIuZ2lmIiBib3JkZXI9MT4KLTxsaT5Sb3dzIGluIHRoZSBNUEkgQXJ0aWZhY3QgVmlldyBjYW4gYmUgc29ydGVkIGJ5IGFueSBvZiB0aGUgY29sdW1ucy4KLUNsaWNrIG9uIHRoZSBjb2x1bW4gaGVhZGluZyB0byBzb3J0LgotPGxpPkNsaWNrIHRoZSAiQ2xlYXIgTVBJIEFydGlmYWN0cyBNYXJrZXJzIiBidXR0b24gKHJlZCBYKQotaW4gdGhlIHRvb2wgYmFyIDxpPm9mIHRoZSBNUEkgQXJ0aWZhY3QgVmlldzwvaT4gdG8gcmVtb3ZlIGFsbAotdGhlIE1QSSBhcnRpZmFjdHMuCi08YnI+PGltZyBzcmM9ImltYWdlcy9jbGVhck1hcmtlcnMuZ2lmIiBib3JkZXI9MT4gCi08bGk+WW91IGNhbiBydW4gdGhlIGFuYWx5c2lzIG9uIGFub3RoZXIgZmlsZSBhbmQgaXRzIG1hcmtlcnMKLXdpbGwgYmUgYWRkZWQgdG8gdGhlIHZpZXcuCi08bGk+WW91IGNhbiBydW4gdGhlIGFuYWx5c2lzIG9uIG1vcmUgdGhhbiBvbmUgZmlsZSAobXVsdGlwbGUgc2VsZWN0aW9uKQotb3IgYSBjb250YWluZXIgKGZvbGRlciBvciBwcm9qZWN0KSwgdG8gYW5hbHlzZSBtb3JlIHRoYW4gb25lIGZpbGUgYXQgYSB0aW1lLgotQ2xpY2sgb24gYSBwcm9qZWN0IG9yIGEgZm9sZGVyLCB0aGVuIHNlbGVjdCB0aGUKLSJTaG93IE1QSSBBcnRpZmFjdHMiIGFjdGlvbgotIHRvIHJ1biBpdCBvbiBhbGwgQyBzb3VyY2UgZmlsZXMgaW4gdGhhdCBmb2xkZXIuCi08YnI+IDxpbWcgc3JjPSJpbWFnZXMvbXBpTWVudS5naWYiPgotPHA+Ci08bGk+PGI+Q29udGVudCBBc3Npc3Q8L2I+PGJyPgotVHlwZSBhbiBpbmNvbXBsZXRlIE1QSSBmdW5jdGlvbiBuYW1lIGUuZy4gIk1QSV9JbmkiCi1hbmQgaGl0IEN0cmwtU3BhY2UuIFRoZSBpbmZvcm1hdGlvbiB0aGF0IGlzIHNob3duCi1pcyBwb3B1bGF0ZWQgd2l0aCBDRFQgY29tcGxldGlvbnMgaW5jbHVkaW5nIGFyZ3VtZW50Ci10eXBlcywgYnV0IGluIGFkZGl0aW9uLCB0aGUgUFRQLU1QSSB0b29scyBhbHNvIHByb3ZpZGUKLXNwZWNpZmljIGluZm9ybWF0aW9uIGFib3V0IGFjdHVhbCBNUEkgY29uc3RhbnQgdmFsdWVzLCBldGMuCi13aGVyZSBhcHByb3ByaWF0ZSwgYW5kIGEgeWVsbG93IHBvcHVwIHdpdGggYWRkaXRpb25hbCAKLXRleHR1YWwgZGVzY3JpcHRpdmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZ1bmN0aW9uLgotPGJyPjxpbWcgc3JjPSJpbWFnZXMvY29udGVudEFzc2lzdC5naWYiIGJvcmRlcj0xPgotPHA+Ci08bGk+PGI+Q29udGVudCBzZW5zaXRpdmUgaGVscDwvYj48YnI+Ci1BbHNvLCBpZiBGMSBpcyBwcmVzc2VkIHdoZW4gdGhlIGN1cnNvciBpcyB3aXRoaW4KLWEgZnVuY3Rpb24gbmFtZSwgYSBoZWxwIHZpZXcgYXBwZWFycyB3aGljaCBzaG93cyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLgotKEluIExpbnV4IHByZXNzIEN0cmwtRjE7IGluIE1hYyBVc2UgSGVscCBidXR0b24gb3IgdXNlIG1lbnUgSGVscCA+IER5bmFtaWMgSGVscCkKLQotPGJyPjxpbWcgc3JjPSJpbWFnZXMvaGVscENvbnRTZW5zSGl0RjEuZ2lmIiBib3JkZXI9MT4KLTxwPkhlbHAgVmlldyBhcHBlYXJzOgotPGJyPjxpbWcgc3JjPSJpbWFnZXMvaGVscENvbnRTZW5zLmdpZiIgYm9yZGVyPTE+Ci08cD5DbGljayBvbiB0aGUgZnVuY3Rpb24gbmFtZSB0byBzZWUgbW9yZSBpbmZvcm1hdGlvbjoKLTxicj48aW1nIHNyYz0iaW1hZ2VzL2hlbHBDb250U2Vuc0hpdEYxY2xpY2suZ2lmIiBib3JkZXI9MT4KLQotPC9vbD4KLTxwPiZuYnNwOwotPHA+U2VlIGFsc28gdGhlIAotPGEgaHJlZj0iYmFycmllci5odG1sIj5NUEkgQmFycmllciBBbmFseXNpczwvYT4gZXhwbGFuYXRpb24uCi08cD5TZWUgYWxzbyB0aGUgPGEgaHJlZj0ic2V0dXBPTVAuaHRtbCI+T3Blbk1QIHNldHVwIGluZm9ybWF0aW9uPC9hPgotb3IgdGhlIDxhIGhyZWY9InJ1bk9NUC5odG1sIj5PcGVuTVAgcnVuIGluZm9ybWF0aW9uPC9hPi4KLTxwPiZuYnNwOzxwPiZuYnNwOzxwPiZuYnNwOwotPHA+PGEgaHJlZj0iI3RvcCI+QmFjayB0byBUb3A8L2E+IHwgPGEgaHJlZj0idG9jLmh0bWwiPkJhY2sgdG8gVGFibGUgb2YgQ29udGVudHM8L2E+Ci0KLTwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvcnVuT01QLmh0bWwgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvcnVuT01QLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3MDU3M2UuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL3J1bk9NUC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTx0aXRsZT4KLVJ1bm5pbmcgUFRQIE9wZW5NUCBUb29scyAKLTwvdGl0bGU+Ci0JPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iaGVscC5jc3MiPgotCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InRodW1iLmpzIj4gPC9zY3JpcHQ+Ci0JPC9oZWFkPgotPGJvZHk+Ci08aDE+IFJ1bm5pbmcgUFRQIE9wZW5NUCBUb29scyBQbHVnLWluPC9oMT4KLQotPHA+VGhlIGJhc2ljIGluc3RydWN0aW9ucyBmb3IgcnVubmluZyB0aGUgT3Blbk1QIHRvb2xzIAotKGZpbmRpbmcgT3Blbk1QIGFydGlmYWN0cywgbmF2aWdhdGluZyB0byBzb3VyY2UgY29kZSwgdXNpbmcgSGVscCkKLWFyZSB0aGUgc2FtZQotYXMgZm9yIDxhIGhyZWY9InJ1bi5odG1sIj5ydW5uaW5nIHRoZSBNUEkgdG9vbHMuPC9hPi4KLTxwPkZpbmRpbmcgT3Blbk1QIGFydGlmYWN0czoKLTxicj48aW1nIHNyYz0iaW1hZ2VzL21lbnVTaG93T3Blbk1QYXJ0aWZhY3RzLmdpZiI+Ci08cD5PcGVuTVAgYXJ0aWZhY3RzIGZvdW5kIGFuZCBzaG93biBpbiB0aGUgT3Blbk1QIEFydGlmYWN0IFZpZXc6Ci08cD48c2NyaXB0PiB0aHVtYigiaW1hZ2VzL29wZW5tcEFydGlmYWN0c2ZvdW5kLmdpZiIsMzAwKTwvc2NyaXB0PgotPHA+Ci1UaGVyZSBhcmUgYSBmZXcgPGEgaHJlZj0ib3Blbk1QZXh0cmEuaHRtbCI+ZXh0cmEgT3Blbk1QIGFuYWx5c2lzIGZ1bmN0aW9uczwvYT4gYmV5b25kIHRob3NlIGF2YWlsYWJsZSBmb3IgTVBJLCB0b28uCi0KLQotPHA+Jm5ic3A7PHA+Jm5ic3A7PHA+Jm5ic3A7Ci08cD48YSBocmVmPSIjdG9wIj5CYWNrIHRvIFRvcDwvYT4gfCA8YSBocmVmPSJ0b2MuaHRtbCI+QmFjayB0byBUYWJsZSBvZiBDb250ZW50czwvYT4KLQotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9zYW1wbGVzL2hlbGxvTVBJX2Nfc3R5bGUuY3BwIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL3NhbXBsZXMvaGVsbG9NUElfY19zdHlsZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjNTY5ZGQuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL3NhbXBsZXMvaGVsbG9NUElfY19zdHlsZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0jaW5jbHVkZSAibXBpLmgiCi0jaW5jbHVkZSA8aW9zdHJlYW0+Ci11c2luZyBuYW1lc3BhY2Ugc3RkOwotCi0vLyBmcm9tIGV3cy9ncmlkbXBpL21waUV4YW1wbGUyL3NyYy9oZWxsb01QSS5jCi0KLWNsYXNzIEhlbGxvV29ybGQgewotCXB1YmxpYzoKLQkJaW50IHNheUhlbGxvKGludCBhcmdjLCBjaGFyKiBhcmd2W10pOwotfTsKLQotaW50IEhlbGxvV29ybGQ6OnNheUhlbGxvKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKLQlpbnQgIG15X3Jhbms7IC8qIHJhbmsgb2YgcHJvY2VzcyAqLwotCWludCAgcDsgICAgICAgLyogbnVtYmVyIG9mIHByb2Nlc3NlcyAqLwotCWludCBzb3VyY2U7ICAgLyogcmFuayBvZiBzZW5kZXIgKi8KLQlpbnQgZGVzdDsgICAgIC8qIHJhbmsgb2YgcmVjZWl2ZXIgKi8KLQlpbnQgdGFnPTA7ICAgIC8qIHRhZyBmb3IgbWVzc2FnZXMgKi8KLQljaGFyIG1lc3NhZ2VbMTAwXTsgICAgICAgIC8qIHN0b3JhZ2UgZm9yIG1lc3NhZ2UgKi8KLQlNUElfU3RhdHVzIHN0YXR1cyA7ICAgLyogcmV0dXJuIHN0YXR1cyBmb3IgcmVjZWl2ZSAqLwotCQotCWNvdXQgPDwgIkhlbGxvIE1QSSBXb3JsZCB0aGUgb3JpZ2luYWwuIiA8PCBlbmRsOwotCQotCS8qIHN0YXJ0IHVwIE1QSSAqLwotCU1QSV9Jbml0KCZhcmdjLCAoY2hhcioqKikoJmFyZ3YpKTsKLQkKLQkvKiBmaW5kIG91dCBwcm9jZXNzIHJhbmsgKi8KLQlNUElfQ29tbV9yYW5rKE1QSV9DT01NX1dPUkxELCAmbXlfcmFuayk7IAotCQotCS8qIGZpbmQgb3V0IG51bWJlciBvZiBwcm9jZXNzZXMgKi8KLQlNUElfQ29tbV9zaXplKE1QSV9DT01NX1dPUkxELCAmcCk7IAotCQotCQotCWlmIChteV9yYW5rICE9MCl7Ci0JCS8qIGNyZWF0ZSBtZXNzYWdlICovCi0JCXNwcmludGYobWVzc2FnZSwgIkdyZWV0aW5ncyBmcm9tIHByb2Nlc3MgJWQhIiwgbXlfcmFuayk7Ci0JCWRlc3QgPSAwOwotCQkvKiB1c2Ugc3RybGVuKzEgc28gdGhhdCAnXDAnIGdldCB0cmFuc21pdHRlZCAqLwotCQlNUElfU2VuZChtZXNzYWdlLCBzdHJsZW4obWVzc2FnZSkrMSwgTVBJX0NIQVIsCi0JCSAgIGRlc3QsIHRhZywgTVBJX0NPTU1fV09STEQpOwotCX0KLQllbHNlewotCQlwcmludGYoIkZyb20gcHJvY2VzcyAwOiBOdW0gcHJvY2Vzc2VzOiAlZFxuIixwKTsKLQkJZm9yIChzb3VyY2UgPSAxOyBzb3VyY2UgPCBwOyBzb3VyY2UrKykgewotCQkJTVBJX1JlY3YobWVzc2FnZSwgMTAwLCBNUElfSU5URUdFUiwgc291cmNlLCB0YWcsCi0JCQkgICAgICBNUElfQ09NTV9XT1JMRCwgJnN0YXR1cyk7Ci0JCQljb3V0IDw8IG1lc3NhZ2UgPDwgZW5kbDsKLQkJfQotCX0KLQkvKiBzaHV0IGRvd24gTVBJICovCi0JTVBJX0ZpbmFsaXplKCk7IAotCQotCXJldHVybiAwOwotfQotCi1pbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewotICBIZWxsb1dvcmxkIGhlbGxvOwotICBoZWxsby5zYXlIZWxsbyhhcmdjLCBhcmd2KTsKLSAgcmV0dXJuIDA7Ci19CmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvc2FtcGxlcy9waS5jcHAgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvc2FtcGxlcy9waS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3MTZhMjQuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL3NhbXBsZXMvcGkuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotI2luY2x1ZGUgPG1hdGguaD4gCi0jaW5jbHVkZSAibXBpLmgiIAotI2luY2x1ZGUgPGlvc3RyZWFtPgotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAKLSAvKiAKLSAgKiBDYWxjdWxhdGlvbiBvZiBQSSBpbiBNUEkgdmlhIEMrKwotICovCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKSAKLXsgCi0gICAgaW50IG4sIHJhbmssIHNpemUsIGk7IAotICAgIGRvdWJsZSBQSTI1RFQgPSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2MjY0MzsgCi0gICAgZG91YmxlIG15cGksIHBpLCBoLCBzdW0sIHg7IAotIAotICAgIE1QSTo6SW5pdChhcmdjLCBhcmd2KTsgCi0gICAgc2l6ZSA9IE1QSTo6Q09NTV9XT1JMRC5HZXRfc2l6ZSgpOyAKLSAgICByYW5rID0gTVBJOjpDT01NX1dPUkxELkdldF9yYW5rKCk7IAotIAotICAgIHdoaWxlICgxKSB7IAotCWlmIChyYW5rID09IDApIHsgCi0JICAgIGNvdXQgPDwgIkVudGVyIHRoZSBudW1iZXIgb2YgaW50ZXJ2YWxzOiAoMCBxdWl0cykiIAotCQkgPDwgZW5kbDsgCi0JICAgIGNpbiA+PiBuOyAKLQl9IAotIAotCU1QSTo6Q09NTV9XT1JMRC5CY2FzdCgmbiwgMSwgTVBJOjpJTlQsIDApOyAKLQlpZiAobj09MCkgCi0JICAgIGJyZWFrOyAKLQllbHNlIHsgCi0JICAgIGggPSAxLjAgLyAoZG91YmxlKSBuOyAKLQkgICAgc3VtID0gMC4wOyAKLQkgICAgZm9yIChpID0gcmFuayArIDE7IGkgPD0gbjsgaSArPSBzaXplKSB7IAotCQl4ID0gaCAqICgoZG91YmxlKWkgLSAwLjUpOyAKLQkJc3VtICs9ICg0LjAgLyAoMS4wICsgeCp4KSk7IAotCSAgICB9IAotCSAgICBteXBpID0gaCAqIHN1bTsgCi0gCi0JICAgIE1QSTo6Q09NTV9XT1JMRC5SZWR1Y2UoJm15cGksICZwaSwgMSwgTVBJOjpET1VCTEUsIAotCQkJCSAgIE1QSTo6U1VNLCAwKTsgCi0JICAgIGlmIChyYW5rID09IDApIAotCQljb3V0IDw8ICJwaSBpcyBhcHByb3hpbWF0ZWx5ICIgPDwgcGkgCi0JCSAgICAgPDwgIiwgRXJyb3IgaXMgIiA8PCBmYWJzKHBpIC0gUEkyNURUKSAKLQkJICAgICA8PCBlbmRsOyAKLQl9IAotICAgIH0gCi0gICAgTVBJOjpGaW5hbGl6ZSgpOyAKLSAgICByZXR1cm4gMDsgCi19IAotCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvc2FtcGxlcy90ZXN0TVBJLmMgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvc2FtcGxlcy90ZXN0TVBJLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhYmRjZDMuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL3NhbXBsZXMvdGVzdE1QSS5jCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSAibXBpLmgiCi0vLyBTYW1wbGUgTVBJIHByb2dyYW0KLWludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pewotCXByaW50ZigiSGVsbG8gTVBJIFdvcmxkIHRoZSBvcmlnaW5hbC5cbiIpOwkKLQlpbnQgIG15X3Jhbms7IC8qIHJhbmsgb2YgcHJvY2VzcyAqLwotCWludCAgcDsgICAgICAgLyogbnVtYmVyIG9mIHByb2Nlc3NlcyAqLwotCWludCBzb3VyY2U7ICAgLyogcmFuayBvZiBzZW5kZXIgKi8KLQlpbnQgZGVzdDsgICAgIC8qIHJhbmsgb2YgcmVjZWl2ZXIgKi8KLQlpbnQgdGFnPTA7ICAgIC8qIHRhZyBmb3IgbWVzc2FnZXMgKi8KLQljaGFyIG1lc3NhZ2VbMTAwXTsgICAgICAgIC8qIHN0b3JhZ2UgZm9yIG1lc3NhZ2UgKi8KLQlNUElfU3RhdHVzIHN0YXR1cyA7ICAgLyogcmV0dXJuIHN0YXR1cyBmb3IgcmVjZWl2ZSAqLwotCQotCS8qIHN0YXJ0IHVwIE1QSSAqLwotCQotCU1QSV9Jbml0KCZhcmdjLCAmYXJndik7Ci0JCi0JLyogZmluZCBvdXQgcHJvY2VzcyByYW5rICovCi0JTVBJX0NvbW1fcmFuayhNUElfQ09NTV9XT1JMRCwgJm15X3JhbmspOyAKLQkKLQkvKiBmaW5kIG91dCBudW1iZXIgb2YgcHJvY2Vzc2VzICovCi0JTVBJX0NvbW1fc2l6ZShNUElfQ09NTV9XT1JMRCwgJnApOyAKLQkKLQkKLQlpZiAobXlfcmFuayAhPTApewotCQkvKiBjcmVhdGUgbWVzc2FnZSAqLwotCQlzcHJpbnRmKG1lc3NhZ2UsICJHcmVldGluZ3MgZnJvbSBwcm9jZXNzICVkISIsIG15X3JhbmspOwotCQlkZXN0ID0gMDsKLQkJLyogdXNlIHN0cmxlbisxIHNvIHRoYXQgJ1wwJyBnZXQgdHJhbnNtaXR0ZWQgKi8KLQkJTVBJX1NlbmQobWVzc2FnZSwgc3RybGVuKG1lc3NhZ2UpKzEsIE1QSV9DSEFSLAotCQkgICBkZXN0LCB0YWcsIE1QSV9DT01NX1dPUkxEKTsKLQl9Ci0JZWxzZXsKLQkJcHJpbnRmKCJGcm9tIHByb2Nlc3MgMDogTnVtIHByb2Nlc3NlczogJWRcbiIscCk7Ci0JCWZvciAoc291cmNlID0gMTsgc291cmNlIDwgcDsgc291cmNlKyspIHsKLQkJCU1QSV9SZWN2KG1lc3NhZ2UsIDEwMCwgTVBJX0NIQVIsIHNvdXJjZSwgdGFnLAotCQkJICAgICAgTVBJX0NPTU1fV09STEQsICZzdGF0dXMpOwotCQkJcHJpbnRmKCIlc1xuIixtZXNzYWdlKTsKLQkJfQotCX0KLQkvKiBzaHV0IGRvd24gTVBJICovCi0JTVBJX0ZpbmFsaXplKCk7IAotCQotCQotCXJldHVybiAwOwotfQpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL3NhbXBsZXMvdGVzdE1QSWJhcnJpZXIuYyBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9zYW1wbGVzL3Rlc3RNUEliYXJyaWVyLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiYWI3ZjIuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL3NhbXBsZXMvdGVzdE1QSWJhcnJpZXIuYworKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgIm1waS5oIgotLy8gU2FtcGxlIE1QSSBwcm9ncmFtCi0KLQotdm9pZCBiYXJyaWVyKCl7Ci0JTVBJX0JhcnJpZXIoTVBJX0NPTU1fV09STEQpOwotfQotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKXsJCi0JaW50ICBteV9yYW5rOyAvKiByYW5rIG9mIHByb2Nlc3MgKi8KLQlpbnQgIHA7ICAgICAgIC8qIG51bWJlciBvZiBwcm9jZXNzZXMgKi8KLQlpbnQgc291cmNlOyAgIC8qIHJhbmsgb2Ygc2VuZGVyICovCi0JaW50IGRlc3Q7ICAgICAvKiByYW5rIG9mIHJlY2VpdmVyICovCi0JaW50IHRhZz0wLCB4ID0gMzsgICAgLyogdGFnIGZvciBtZXNzYWdlcyAqLwotCWNoYXIgbWVzc2FnZVsxMDBdOyAgICAgICAgLyogc3RvcmFnZSBmb3IgbWVzc2FnZSAqLwotCU1QSV9TdGF0dXMgc3RhdHVzIDsgICAvKiByZXR1cm4gc3RhdHVzIGZvciByZWNlaXZlICovCi0JIAotCS8qIHN0YXJ0IHVwIE1QSSAqLwotCQotCU1QSV9Jbml0KCZhcmdjLCAmYXJndik7Ci0JCi0JLyogZmluZCBvdXQgcHJvY2VzcyByYW5rICovCi0JTVBJX0NvbW1fcmFuayhNUElfQ09NTV9XT1JMRCwgJm15X3JhbmspOyAKLQkKLQkvKiBmaW5kIG91dCBudW1iZXIgb2YgcHJvY2Vzc2VzICovCi0JTVBJX0NvbW1fc2l6ZShNUElfQ09NTV9XT1JMRCwgJnApOyAKLQkKLQlNUElfQmFycmllcihNUElfQ09NTV9XT1JMRCk7Ci0JCi0JCi0JaWYgKG15X3JhbmsgIT0wKXsKLQkJLyogY3JlYXRlIG1lc3NhZ2UgKi8KLQkJc3ByaW50ZihtZXNzYWdlLCAiR3JlZXRpbmdzIGZyb20gcHJvY2VzcyAlZCEiLCBteV9yYW5rKTsKLQkJZGVzdCA9IDA7Ci0JCS8qIHVzZSBzdHJsZW4rMSBzbyB0aGF0ICdcMCcgZ2V0IHRyYW5zbWl0dGVkICovCi0JCU1QSV9TZW5kKG1lc3NhZ2UsIHN0cmxlbihtZXNzYWdlKSsxLCBNUElfQ0hBUiwKLQkJICAgZGVzdCwgdGFnLCBNUElfQ09NTV9XT1JMRCk7Ci0JCU1QSV9CYXJyaWVyKE1QSV9DT01NX1dPUkxEKTsKLQl9Ci0JZWxzZXsKLQkJcHJpbnRmKCJGcm9tIHByb2Nlc3MgMDogTnVtIHByb2Nlc3NlczogJWRcbiIscCk7Ci0JCWZvciAoc291cmNlID0gMTsgc291cmNlIDwgcDsgc291cmNlKyspIHsKLQkJCU1QSV9SZWN2KG1lc3NhZ2UsIDEwMCwgTVBJX0NIQVIsIHNvdXJjZSwgdGFnLAotCQkJICAgICAgTVBJX0NPTU1fV09STEQsICZzdGF0dXMpOwotCQkJcHJpbnRmKCIlc1xuIixtZXNzYWdlKTsKLQkJfQotCQkvL01QSV9CYXJyaWVyKE1QSV9DT01NX1dPUkxEKTsKLQkJYmFycmllcigpOwotCX0KLQotCi0JaWYobXlfcmFuayA9PSAwKXsKLQkJcHJpbnRmKCJ0ZXN0IGVycm9yc1xuIik7Ci0JCU1QSV9CYXJyaWVyKE1QSV9DT01NX1dPUkxEKTsKLQl9Ci0JZWxzZXsKLQkJcHJpbnRmKCJ0aGlzIHBhdGggZG9lcyBub3QgY29udGFpbiBhIGJhcnJpZXIiKTsKLQl9Ci0JCi0JaWYoeCA8IDMpewotCQlwcmludGYoIkl0IGlzIG5vdCBhbiBlcnJvclxuIik7Ci0JCU1QSV9CYXJyaWVyKE1QSV9DT01NX1dPUkxEKTsKLQl9Ci0JCi0Jd2hpbGUoeCA8IG15X3JhbmspewotCQlNUElfQmFycmllcihNUElfQ09NTV9XT1JMRCk7Ci0JCXggKys7Ci0JfQotCQotCS8qIHNodXQgZG93biBNUEkgKi8KLQlNUElfRmluYWxpemUoKTsgCi0KLQlyZXR1cm4gMDsKLX0KLQpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL3NhbXBsZXMvdGVzdE1QSWNwcC5jcHAgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvc2FtcGxlcy90ZXN0TVBJY3BwLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGVmMThjNC4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvc2FtcGxlcy90ZXN0TVBJY3BwLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLSNpbmNsdWRlIDxtYXRoLmg+IAotI2luY2x1ZGUgIm1waS5oIiAKLSNpbmNsdWRlIDxpb3N0cmVhbT4KLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKSAKLXsgCi0gICAgaW50IG4sIHJhbmssIHNpemUsIGk7IAotICAgIGRvdWJsZSBQSTI1RFQgPSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2MjY0MzsgCi0gICAgZG91YmxlIG15cGksIHBpLCBoLCBzdW0sIHg7IAotIAotICAgIE1QSTo6SW5pdChhcmdjLCBhcmd2KTsgCi0gICAgc2l6ZSA9IE1QSTo6Q09NTV9XT1JMRC5HZXRfc2l6ZSgpOyAKLSAgICByYW5rID0gTVBJOjpDT01NX1dPUkxELkdldF9yYW5rKCk7IAotIAotICAgIHdoaWxlICgxKSB7IAotCWlmIChyYW5rID09IDApIHsgCi0JICAgIGNvdXQgPDwgIkVudGVyIHRoZSBudW1iZXIgb2YgaW50ZXJ2YWxzOiAoMCBxdWl0cykiIAotCQkgPDwgZW5kbDsgCi0JICAgIGNpbiA+PiBuOyAKLQl9IAotIAotCU1QSTo6Q09NTV9XT1JMRC5CY2FzdCgmbiwgMSwgTVBJOjpJTlQsIDApOyAKLQlpZiAobj09MCkgCi0JICAgIGJyZWFrOyAKLQllbHNlIHsgCi0JICAgIGggPSAxLjAgLyAoZG91YmxlKSBuOyAKLQkgICAgc3VtID0gMC4wOyAKLQkgICAgZm9yIChpID0gcmFuayArIDE7IGkgPD0gbjsgaSArPSBzaXplKSB7IAotCQl4ID0gaCAqICgoZG91YmxlKWkgLSAwLjUpOyAKLQkJc3VtICs9ICg0LjAgLyAoMS4wICsgeCp4KSk7IAotCSAgICB9IAotCSAgICBteXBpID0gaCAqIHN1bTsgCi0gCi0JICAgIE1QSTo6Q09NTV9XT1JMRC5SZWR1Y2UoJm15cGksICZwaSwgMSwgTVBJOjpET1VCTEUsIAotCQkJCSAgIE1QSTo6U1VNLCAwKTsgCi0JICAgIGlmIChyYW5rID09IDApIAotCQljb3V0IDw8ICJwaSBpcyBhcHByb3hpbWF0ZWx5ICIgPDwgcGkgCi0JCSAgICAgPDwgIiwgRXJyb3IgaXMgIiA8PCBmYWJzKHBpIC0gUEkyNURUKSAKLQkJICAgICA8PCBlbmRsOyAKLQl9IAotICAgIH0gCi0gICAgTVBJOjpGaW5hbGl6ZSgpOyAKLSAgICByZXR1cm4gMDsgCi19IAotCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvc2V0dXAuaHRtbCBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9zZXR1cC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTE1MjQ2Li4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9zZXR1cC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08dGl0bGU+Ci1TZXR1cCBmb3IgTVBJIFRvb2xzIHdpdGhpbiB0aGUgUGFyYWxsZWwgTGFuZ3VhZ2UgRGV2ZWxvcG1lbnQgVG9vbHMKLTwvdGl0bGU+Ci0JPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iaGVscC5jc3MiPgotCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InRodW1iLmpzIj4gPC9zY3JpcHQ+Ci08Ym9keT4KLTxoMT5TZXR1cCBmb3IgTVBJIFRvb2xzIHdpdGhpbiB0aGUgUGFyYWxsZWwgTGFuZ3VhZ2UgRGV2ZWxvcG1lbnQgVG9vbHM8L2gxPgotCi08cD5UbyB1c2UgIHRoZSBQVFAgUGFyYWxsZWwgTGFuZ3VhZ2UgRGV2ZWxvcG1lbnQKLVRvb2xzIGZlYXR1cmUgZm9yIE1QSSBkZXZlbG9wbWVudCwgeW91IG5lZWQgdG8gCi08b2w+Ci08bGk+PGEgaHJlZj0iI3ByZWZzIj5TcGVjaWZ5IHRoZSBNUEkgaW5jbHVkZSBwYXRoIGluIHByZWZlcmVuY2VzPC9hPiwgYW5kPC9saT4KLTxsaT48YSBocmVmPSIjcHJvamVjdCI+QWRkIHRoZSBNUEkgaW5jbHVkZSBmaWxlcyBldGMuICB0byB0aGUgYnVpbGQgaW5mb3JtYXRpb24gZm9yIGVhY2ggIHByb2plY3QuPC9hPgotPC9vbD4KLQotPGgyIGlkPSJwcmVmcyI+U3BlY2lmeWluZyB0aGUgTVBJIEluY2x1ZGUgcGF0aCBpbiBQcmVmZXJlbmNlczwvaDI+Ci08cD5UbyBzcGVjaWZ5IHRoZSBNUEkgaW5jbHVkZSBwYXRoLCB1c2UgV2luZG93ID4gUHJlZmVyZW5jZXMuIChGb3IgTWFjLCB1c2UgRWNsaXBzZSA+IFByZWZlcmVuY2VzKQotVW5kZXIgUFRQLCBQYXJhbGxlbCBMYW5ndWFnZSBEZXZlbG9wbWVudCBUb29scywgTVBJLi4uCi0oTm90ZTogSWYgeW91IGRvIG5vdCBoYXZlIGNvcmUgUFRQIGluc3RhbGxlZCwgdGhlICJQYXJhbGxlbCBMYW5ndWFnZSAKLURldmVsb3BtZW50IFRvb2xzIiBzZWN0aW9uIGluIHRoZSBwcmVmZXJlbmNlcyB3aWxsIGJlIGluY2x1ZGVkIHdpdGhvdXQgaXQuKQotCi08cD5BZGQgdGhlIHBhdGggdG8gTVBJIGluY2x1ZGUgcGF0aHMgIC0gdGhpcyB0ZWxscyBQTERUIHdoYXQgc3ltYm9scyB0byBsb29rCi1mb3IgaW4gdGhlIE1QSSBBcnRpZmFjdCB2aWV3LiAgWW91IGNhbiBhbHNvIHNwZWNpZnkgdGhlIGRlZmF1bHQgTVBJIGJ1aWxkIGNvbW1hbmQuCi1UaGVzZSB2YWx1ZXMgd2lsbCBtYWtlIHRoZSBNUEkgTmV3IFByb2plY3QgV2l6YXJkIHBhZ2UgbWFrZSBtb3JlCi1hY2N1cmF0ZSBwcmVkaWN0aW9ucyBvZiBzZXR0aW5ncyBmb3IgbmV3IHByb2plY3RzLgotPGJyPjxpbWcgc3JjPSJpbWFnZXMvcGxkdC1wcmVmczEucG5nIj4KLQotCi0KLTxoMiBpZD0icHJvamVjdCI+QWRkIE1QSSBJbmNsdWRlIHBhdGhzIHRvIGVhY2ggcHJvamVjdDwvaDI+Ci08cD5UaGUgTVBJIGluY2x1ZGUgcGF0aHMgbXVzdCBhbHNvIGJlIGFkZGVkIHRvIGVhY2ggcHJvamVjdC4KLVRoZXJlIGFyZSB0d28gd2F5cyB0byBkbyB0aGlzLgotPG9sPgotPGxpPjxhIGhyZWY9IiN3aXphcmQiPlVzZSB0aGUgUExEVCBuZXcgcHJvamVjdCB3aXphcmRzPC9hPiwgb3IKLTwvbGk+Ci08bGk+PGEgaHJlZj0iI21hbnVhbCI+QWRkIHRoZSBidWlsZCBpbmZvcm1hdGlvbiBtYW51YWxseTwvYT4uCi08L29sPgotPGgyIGlkPSJ3aXphcmQiPlVzZSB0aGUgUExEVCBuZXcgcHJvamVjdCB3aXphcmRzPC9oMj4KLTxwPkNyZWF0ZSBhIG5ldyAiQyBwcm9qZWN0IgotPGJyPkZpbGUtPk5ldy0+QyBwcm9qZWN0IChpZiB5b3UgYXJlIGFscmVhZHkgaW4gdGhlIEMvQysrIHBlcnNwZWN0aXZlIHRoaXMgbWF5IGJlIHRoZSBzaW1wbGVzdCkKLTxicj5pcyBvbmUgd2F5OyB0aGVyZSBhcmUgc2V2ZXJhbCB3YXlzIHRvIGdldCB0byB0aGlzIHdpemFyZAotRW50ZXIgYSBwcm9qZWN0IG5hbWU7IHVuZGVyIFByb2plY3QgdHlwZXMsIGV4cGFuZCAnZXhlY3V0YWJsZScgYW5kIHNlbGVjdCwgZS5nLiAiTVBJIEhlbGxvIFdvcmxkIEMgcHJvamVjdCIKLTxicj4KLTxpbWcgc3JjPSJpbWFnZXMvbXBpV2l6YXJkLmdpZiI+Ci08YnI+U2VsZWN0IE5leHQuCi08YnI+T24gdGhlIG5leHQgcGFnZSwgZmlsbCBpbiBhbnkgcHJvamVjdCB0ZW1wbGF0ZSB2YWx1ZXMsIGUuZy4geW91ciBuYW1lLgotPGJyPlRoZW4gc2VsZWN0IE5leHQuCi08YnI+PGltZyBzcmM9ImltYWdlcy9tcGlXaXphcmQyLmdpZiI+Ci08cD5PbiB0aGUgbmV4dCBwYWdlLCAiTVBJIFByb2plY3QgU2V0dGluZ3MiIHBhZ2UsICBtYWtlIHN1cmUgdGhlICJBZGQgTVBJIHByb2plY3Qgc2V0dGluZ3MgdG8gdGhpcyBwcm9qZWN0IgotaXMgY2hlY2tlZC4gIElmIHlvdSB3YW50IHRvIGNoYW5nZSBhbnkgb2YgdGhlIGRlZmF1bHQgdmFsdWVzIGZvciB0aGlzIHByb2plY3QsIHlvdSBjYW4gZG8gc28KLWhlcmUgYnkgdW5jaGVja2luZyB0aGUgIlVzZSBkZWZhdWx0IGluZm9ybWF0aW9uIiBhbmQgYWx0ZXJpbmcgdGhlIHZhbHVlcy4KLQotPGJyPjxpbWcgc3JjPSJpbWFnZXMvbXBpV2l6YXJkMy5naWYiPgotPHA+U2VsZWN0IEZpbmlzaC4KLTxwPlRoZSBwcm9qZWN0IGlzIGNyZWF0ZWQgYW5kIHNob3VsZCBidWlsZCBhdXRvbWF0aWNhbGx5LgotVGhlIEVjbGlwc2Ugd29ya2JlbmNoIGlzIHNob3duIGJlbG93IGFmdGVyIGNyZWF0aW5nIHRoZSBuZXcgIk1QSSBoZWxsbyB3b3JsZCIgcHJvamVjdC4KLVRoZSBwcm9qZWN0IGV4cGxvcmVyIHZpZXcgb24gdGhlIGxlZnQgc2hvd3MgdGhlIHByb2plY3QgY29udGVudHMuCi1UaGUgc291cmNlIGZpbGUgaXMgdW5kZXIgdGhlICdzcmMnIGRpcmVjdG9yeTsgZXhwYW5kIHRoaXMgdG8gc2VlIGl0LgotRG91YmxlLWNsaWNrIG9uIHRoZSBzb3VyY2UgZmlsZSBuYW1lIHRvIGVkaXQgdGhlIHNvdXJjZSBmaWxlLiAgVGhlIG91dGxpbmUgdmlldyBvbiB0aGUKLXJpZ2h0IHNob3dzIHRoZSBvdXRsaW5lIG9mIHRoZSBmaWxlIGN1cnJlbnRseSBzaG93biBpbiB0aGUgZWRpdG9yLgotVGhlIENvbnNvbGUgdmlldyBhdCB0aGUgYm90dG9tIHNob3dzIHRoZSByZXN1bHRzIG9mIHRoZSBwcm9qZWN0IGJ1aWxkLgotCi08YnI+PGltZyBzcmM9ImltYWdlcy9tcGlOZXdQcm9qZWN0V29ya2JlbmNoLmdpZiI+Ci08cD4KLTxwPjxwPk5vdyBjb250aW51ZSB0byBzZXQgdXAgdG8gPGEgaHJlZj0icnVuLmh0bWwiPnJ1biB0aGUgTVBJIHRvb2xzPC9hPgotPHA+Ci08aDIgaWQ9Im1hbnVhbCI+QWRkIHRoZSBCdWlsZCBJbmZvcm1hdGlvbiBNYW51YWxseTwvaDI+Ci08cD5JZiB0aGUgbmV3IHByb2plY3Qgd2l6YXJkIGlzbid0IHVzZWQgYXMgZGVzY3JpYmVkIAotYWJvdmUgdG8gc2V0IHRoZSBNUEkgaW5mb3JtYXRpb24gZm9yIGEgcHJvamVjdCwKLXRoZSBNUEkgaW5mb3JtYXRpb24gY2FuIGJlIGFkZGVkIHRvIHRoZSBwcm9qZWN0IG1hbnVhbGx5IGFzIGZvbGxvd3MuCi08b2w+Ci08bGk+Q3JlYXRlIGEgQ0RUIHByb2plY3QgKGUuZy4gTWFuYWdlZCBNYWtlIEMgUHJvamVjdCkKLQotPGxpPlNldCB1cCB0aGUgaW5jbHVkZSBwYXRocyBldGM6Ci08YnI+UHJvamVjdCBQcm9wZXJ0aWVzLCBDL0MrKyBCdWlsZCwgQ29uZmlndXJhdGlvbiBTZXR0aW5ncywKLVRvb2wgU2V0dGluZ3MgdGFiLCBEaXJlY3RvcmllcwotPGJyPi0tPiBBZGQgaW5jbHVkZSBwYXRoIGZvciBtcGkgaGVhZGVyIGZpbGVzIGV0Yy4gLSBwYXRoIHRvIHRoZSAnaW5jbHVkZScgZGlyCi08YnI+PGltZyBzcmM9ImltYWdlcy9pbmNsdWRlLmdpZiI+Ci08cD4KLVByb2plY3QgUHJvcGVydGllcywgQy9DKysgQnVpbGQsIENvbmZpZ3VyYXRpb24gU2V0dGluZ3MsCi1Ub29sIFNldHRpbmdzIHRhYiwgR0NDIEMgTGlua2VyLCBMaWJyYXJpZXMKLTxvbD4KLTxsaT5VbmRlciAiTGlicmFyaWVzICgtbCkiICBhZGQgdGhlIHN5bWJvbCAibXBpIiAgCi08bGk+IFVuZGVyICJMaWJyYXJ5IHNlYXJjaCBwYXRoICgtTCkiIGFkZCB0aGUgcGF0aCB0byB0aGUgJ2xpYicgZGlyIGluIE1QSSBkaXIuCi08YnI+PGltZyBzcmM9ImltYWdlcy9saWIuZ2lmIj4KLTxsaT48Yj5NUEkgQnVpbGQgQ29tbWFuZDo8L2I+IE5vdGU6IElmIHlvdSBoYXZlIGFuIE1QSSBpbnN0YWxsZWQgdGhhdCByZXF1aXJlcyBhIGRpZmZlcmVudAotYnVpbGQgY29tbWFuZCwgc3VjaCBhcyAnbXBpY2MnIGluc3RlYWQgb2YgJ2djYycsIHNwZWNpZnkgaXQgaGVyZSBhcyB3ZWxsLgotU2VsZWN0IHRoZSBjb21waWxlciB0b29sIG9uIHRoZSBsZWZ0IGFuZCBtb2RpZnkgdGhlICdDb21tYW5kOicgdmFsdWUuCi1Zb3UgcHJvYmFibHkgYWxzbyBuZWVkIHRvIGRvIHRoZSBzYW1lIGZvciB0aGUgbGlua2VyIHRvb2wuCi08YnI+PGltZyBzcmM9ImltYWdlcy9tcGlCdWlsZENvbW1hbmQuZ2lmIj4KLTwvb2w+Ci08cD4KLQotPC9vbD4KLQotPHA+Tm93IGNvbnRpbnVlIHRvIHNldCB1cCB0byA8YSBocmVmPSJydW4uaHRtbCI+cnVuIHRoZSBNUEkgdG9vbHM8L2E+Ci0KLTxwPiZuYnNwOwotPHA+Jm5ic3A7PHA+Jm5ic3A7PHA+Jm5ic3A7Ci08cD48YSBocmVmPSIjdG9wIj5CYWNrIHRvIFRvcDwvYT4gfCA8YSBocmVmPSJ0b2MuaHRtbCI+QmFjayB0byBUYWJsZSBvZiBDb250ZW50czwvYT4KLQotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9zZXR1cE9NUC5odG1sIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL3NldHVwT01QLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhNTNmNGUuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL3NldHVwT01QLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHRpdGxlPgotU2V0dXAgZm9yIFBUUCBQTERUIE9wZW5NUCBUb29scwotPC90aXRsZT4KLTwvaGVhZD4KLQk8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJoZWxwLmNzcyI+Ci0JPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0idGh1bWIuanMiPiA8L3NjcmlwdD4KLTxib2R5PgotCi08aDE+IFNldHVwIGZvciBQVFAgT3Blbk1QIFRvb2xzIDwvaDE+Ci0KLTxwPlRoZSBiYXNpYyBzZXR1cCBmb3IgdGhlIE9wZW5NUCB0b29scyBpcyB0aGUgc2FtZQotYXMgZm9yIHRoZSA8YSBocmVmPSJzZXR1cC5odG1sIj5NUEkgdG9vbHMgc2V0dXA8L2E+LgotRXNzZW50aWFsbHksIHBvaW50IENEVCBhdCB0aGUgaGVhZGVyIGZpbGVzIGFuZCBhdCB0aGUgY29tbWFuZAotdG8gY2FsbCB5b3VyIGNvbXBpbGVyIHdpdGggdGhlIE9wZW5NUCBpbmZvcm1hdGlvbi4KLTxwPlRoZSBPcGVuTVAgcHJlZmVyZW5jZXMgc2hvdWxkIGJlIHNldCB0byBwb2ludCB0byB5b3VyIE9wZW5NUCBoZWFkZXIgZmlsZQotPGJyPjxpbWcgc3JjPSJpbWFnZXMvb3Blbm1wUHJlZnMuZ2lmIj4KLTxwPlRoZSBQTERUIG5ldyBwcm9qZWN0IHdpemFyZHMgbm93IGNvbnRhaW4gd2l6YXJkcyBmb3IgY3JlYXRpbmcgT3Blbk1QIHByb2plY3RzIGFzIHdlbGwuCi08YnI+PGltZyBzcmM9ImltYWdlcy9uZXdQcm9qT3Blbk1QLmdpZiI+Ci08cD5CZSBzdXJlIG9uIHRoZSBwcm9qZWN0IHNldHRpbmdzIHBhZ2UgdGhhdCBldmVyeXRoaW5nIGlzIGZpbGxlZCBpbiwgaW5jbHVkaW5nIHRoZSBidWlsZCBjb21tYW5kLgotPGJyPjxpbWcgc3JjPSJpbWFnZXMvbmV3UHJvak9wZW5NUHNldHRpbmdzLmdpZiI+Ci0KLQotCi08YnI+WW91IG1heSBuZWVkIHRvIG1hbnVhbGx5IGFsdGVyIHRoZSBwcm9qZWN0IGJ1aWxkIHByb3BlcnRpZXMgKGluIHRoZSBwcm9qZWN0IHByb3BlcnRpZXMpIHRvIGFkZCBjb21waWxlciBmbGFncwotc3BlY2lmaWMgdG8gT3Blbk1QIHRvIHlvdXIgcHJvamVjdC4KLTxwPk5vdGUgdGhlIGhlYWRlciBmaWxlIG5hbWUgaW4geW91ciBzeXN0ZW0sIGUuZy4gPGNvZGU+b3Blbm1wLmg8L2NvZGU+IHZzIDxjb2RlPm9tcC5oPC9jb2RlPjsgeW91IG1heSBuZWVkIHRvIGFkanVzdCB0aGUgaW5jbHVkZSBmaWxlCi1saW5lIGluIHRoZSBzYW1wbGUgc291cmNlIGZpbGUgdG8gbWF0Y2ggeW91ciBzeXN0ZW0uCi08cD5Ob3cgc2V0IHVwIHRvIDxhIGhyZWY9InJ1bk9NUC5odG1sIj5ydW4gdGhlIE9wZW5NUCBmZWF0dXJlczwvYT4uCi08cD4mbmJzcDsKLTxwPiZuYnNwOzxwPiZuYnNwOzxwPiZuYnNwOwotPHA+PGEgaHJlZj0iI3RvcCI+QmFjayB0byBUb3A8L2E+IHwgPGEgaHJlZj0idG9jLmh0bWwiPkJhY2sgdG8gVGFibGUgb2YgQ29udGVudHM8L2E+Ci0KLTwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvdGh1bWIuanMgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvdGh1bWIuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5YzI3ZWMuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL3RodW1iLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotCi0vLyBKYXZhc2NyaXB0IHRvIHByb3ZpZGUgYSBjb252ZW5pZW50IHdheSB0byBzaG93IGEgdGh1bWJuYWlsIG9mIGFuIGltYWdlLCB3aXRoIGEgbGluayB0byB0aGUgZnVsbC1zaXplIGltYWdlCi0vLyBEZWZhdWx0IGhlaWdodCBpcyAxMjAgaWYgdGhlIHNlY29uZCBhcmcgaXMgb21pdHRlZAotLy9Ob3RlIHRoYXQgSUUgdXNlcyB0aGUgYWx0IHRhZyBmb3IgaG92ZXIgYnV0IEZpcmVmb3ggbW9yZSBjb3JyZWN0bHkgdXNlcyB0aGUgdGl0bGUgdGFnIGZvciBob3ZlciB0ZXh0LgotLy9Vc2FnZTogPHNjcmlwdD4gdGh1bWIoImltYWdlcy9mb28uZ2lmIik8L3NjcmlwdD4KLWZ1bmN0aW9uIHRodW1iKHVybCxoZWlnaHQpewotICAgaWYgKCFoZWlnaHQpIHtoZWlnaHQ9MTIwO30KLSAgIGRvY3VtZW50LndyaXRlICgiPGEgaHJlZj0nIit1cmwrIic+PGltZyBzcmM9JyIrdXJsKyInIGhlaWdodD0iK2hlaWdodCsiIHRpdGxlPSdDbGljayBmb3IgYSBmdWxsLXNpemUgaW1hZ2UnIGFsdD0nQ2xpY2sgZm9yIGEgZnVsbC1zaXplIGltYWdlJz48L2E+Iik7Ci19Ci0vLyBzaW1wbGUgaW1iZWRkaW5nIG9mIGltYWdlLCBpbiBkZWZhdWx0IGZ1bGwgc2l6ZSwgd2l0aCBicmVhayBwcmVjZWVkaW5nCi0vLyAoZWFzeSB0byByZXBsYWNlIHRoZSBhYm92ZSB3aXRoIHRoaXMgb25lKQotLy9Vc2FnZTogPHNjcmlwdD4gZnVsbCgiaW1hZ2VzL2Zvby5naWYiKTwvc2NyaXB0PgotZnVuY3Rpb24gZnVsbCh1cmwpewotICAgZG9jdW1lbnQud3JpdGUgKCI8aW1nIHNyYz0nIit1cmwrIic+Iik7Ci19Ci0KZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC90b2MuaHRtbCBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC90b2MuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWVkODE2OS4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvdG9jLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTx0aXRsZT4KLVBUUCBQYXJhbGxlbCBMYW5ndWFnZSBEZXZlbG9wbWVudCBUb29scyAKLTwvdGl0bGU+Ci0JPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iaGVscC5jc3MiPgotCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InRodW1iLmpzIj4gPC9zY3JpcHQ+Ci0JPC9oZWFkPgotPGJvZHk+Ci08aDEgaWQ9InRvcCI+IDxpbWcgc3JjPSJpbWFnZXMvYW5hbHl6ZS5naWYiPiBQVFAgUGFyYWxsZWwgTGFuZ3VhZ2UgRGV2ZWxvcG1lbnQgVG9vbHMgPC9oMT4KLTxwPlJlbGVhc2UgMi4wCi08cD5UaGUgUFRQIFBhcmFsbGVsIExhbmd1YWdlIERldmVsb3BtZW50IFRvb2xzIChQTERUKSBwcm92aWRlCi10b29scyB0byBhaWQgaW4gTVBJIFByb2dyYW1taW5nIGFuZCBvdGhlciBwYXJhbGxlbCBsYW5ndWFnZXMgYW5kIHRvb2xzLgotPGJyPkZlYXR1cmVzIG9mIHRoZSBQTERUIGluY2x1ZGU6Ci08dWw+Ci08bGk+QW5hbHlzaXMgb2YgQyBhbmQgQysrIGNvZGUgdG8gZGV0ZXJtaW5lIHRoZSBsb2NhdGlvbiBvZiBNUEkgYW5kIE9wZW5NUCBBcnRpZmFjdHMKLTxsaT4iQXJ0aWZhY3QgVmlldyIgaW5kaWNhdGVzIGxvY2F0aW9ucyBvZiBBcnRpZmFjdHMgZm91bmQKLWluIHNvdXJjZSBjb2RlCi08bGk+TmF2aWdhdGlvbiB0byBzb3VyY2UgY29kZSBsb2NhdGlvbiBvZiBhcnRpZmFjdHMKLTxsaT5Db250ZW50IGFzc2lzdCB2aWEgQ250bC1TcGFjZSBjb21wbGV0ZXMgQVBJIG5hbWVzCi13aGlsZSB0eXBpbmcsIGFuZCBmaWxscyBpbiBhcmd1bWVudHMgdG9vLgotPGxpPkhvdmVyIGhlbHAgc2hvd3MgQVBJIG5hbWVzLCBhcmd1bWVudHMsIGFuZCBkZXNjcmlwdGlvbnMuCi08bGk+UmVmZXJlbmNlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBNUEkgYW5kIE9wZW5NUCBjYWxscyB2aWEgRjEgKENudGwtRjEgb24gTGludXg7IEhlbHAga2V5IG9uIE1hYykKLQotPGxpPk9wZW5NUCBwcm9ibGVtcyB2aWV3IG9mIGNvbW1vbiBlcnJvcnMsIE9wZW5NUCAic2hvdyAjcHJhZ21hIHJlZ2lvbiIgYWN0aW9uLAotT3Blbk1QICJTaG93IENvbmN1cnJlbmN5IiBhY3Rpb24uCi08bGk+Q0RUICJOZXcgQyBQcm9qZWN0IiB3aXphcmQgaW5jbHVkZXMgYSAgd2l6YXJkIHBhZ2UgdGhhdCBjYW4gCi1hdXRvbWF0aWNhbGx5IGFkZCBpbiB0aGUgaW5jbHVkZSBwYXRocyBldGMuIGZvciBNUEkgcHJvamVjdHMuCi0KLTxwPlRoZSBuZXdlc3QgZmVhdHVyZXMgKDIuMCkgaW5jbHVkZToKLTxsaT5NUEkgQmFycmllciBBbmFseXNpcyBkZXRlY3RzIHBvdGVudGlhbCBkZWFkbG9ja3MgaW4gTVBJIGFwcGxpY2F0aW9ucywKLWFuZCBzaG93cyBiYXJyaWVyIG1hdGNoZXMsIGJhcnJpZXIgZXJyb3JzLCBhbmQgcGF0aHMgb2YgYWxsIGJhcnJpZXIKLW1hdGNoaW5nIHNldHMuICBJbmNsdWRlcyBkZXRlY3Rpb25zIGFjcm9zcyBtdWx0aXBsZSBmdW5jdGlvbnMgYW5kIHNvdXJjZSBmaWxlcy4KLTxsaT5OZXcgcHJvamVjdCB3aXphcmQgY2FuIGluY2x1ZGUgc2FtcGxlIE1QSSBhbmQgT3Blbk1QIHNvdXJjZSBmaWxlcyAKLWFuZCBzZXQgdXAgdGhlIHByb2plY3RzIHRvIHNhdmUgdGltZS4KLTxsaT5OZXcgd2VsY29tZSBwYWdlcyBpbnRyb2R1Y2UgbmV3IEVjbGlwc2UgdXNlcnMgdG8gUExEVC4KLTxsaT5OZXcgc2luZ2xlLW1lbnUgVUkgZm9yIFBMRFQgYW5hbHlzaXMgZmVhdHVyZXMgc2ltcGxpZmllcyB0aGUgZWRpdG9yIHRvb2xiYXIuCi08YnI+PGltZyBzcmM9ImltYWdlcy9wbGR0LW1lbnUuZ2lmIj4KLTwvdWw+Ci1Gb3IgbW9yZSBkZXRhaWxzLCBzZWUgPGEgaHJlZj0id2hhdHNuZXcuaHRtbCI+V2hhdCdzIG5ldzwvYT4KLTxoMj4KLVByZS1yZXF1aXNpdGVzOgotPC9oMj4KLTxwPlBMRFQgMi4wIHJlcXVpcmVzIHRoZSBiYXNlIEVjbGlwc2UgcGxhdGZvcm0sIHRoZSBDRFQsIGFuZCBNUEkgYW5kL29yIE9wZW5NUC4KLTx1bD4KLTxsaT48Yj5FY2xpcHNlPC9iPiBwbGF0Zm9ybTogVmVyc2lvbiAgMy4zIG9yIGxhdGVyCi08bGk+PGI+Q0RUOjwvYj4KLVZlcnNpb24gNC4wLjIgb3IgbGF0ZXIgZm9yIEMvQysrIGZpbGVzLiAgKFdoZXJldmVyIENEVCBpcyBtZW50aW9uZWQsIFBob3RyYW4gcHJvamVjdHMgYW5kIGZpbGVzLAotZm9yIEMvQysrLCBpZiBiYXNlZCBvbiBFY2xpcHNlIDMuMy9DRFQgNC4wLngsIHNob3VsZCBhbHNvIHdvcmssIGJ1dCBub3QgbXVjaCB0ZXN0aW5nIGhhcyB5ZXQgYmVlbiBkb25lLikKLQotPGxpPjxiPk1QSTo8L2I+Ci1HZXQgTVBJIGFuZCBpdHMgaGVhZGVyIGZpbGUsIGEgdmVyc2lvbiB0aGF0IHJ1bnMgb24KLXlvdXIgc3lzdGVtIChlLmcuIE9wZW5NUEkgZm9yIExpbnV4L01hYzsgTVBJQ0gyIGZvciB3aW4zMikKLTx1bD4KLTxsaT5NYWtlIHN1cmUgaXQncyBpbiB5b3VyIHBhdGggCi08bGk+WW91IG1heSBuZWVkIHRvIGluc3RhbGwgaXQgaW4gYSBkaXJlY3Rvcnkgc3VjaCB0aGF0IHRoZXJlIGFyZSBubyBzcGFjZXMgaW4gdGhlIHBhdGgKLSh0aGF0IGlzLCBub3QgaW4gJ1Byb2dyYW0gRmlsZXMnIGV0Yy4pCi08L3VsPgotPGxpPjxiPk9wZW5NUDo8L2I+Ci1UaGUgUFRQIFBMRFQgT3Blbk1QIHRvb2xzIGFsc28gIG5lZWQgdGhlIE9wZW5NUCBoZWFkZXIgZmlsZSwgc2ltaWxhciB0byB0aGUgTVBJCi1wcmUtcmVxdWlzaXRlcyBhYm92ZS4KLQotPC91bD4KLTxwPk5vdGUgdGhhdCA8aT5ydW5uaW5nPC9pPiBNUEkgb3IgT3Blbk1QIGlzIG5vdCByZWFsbHkgcmVxdWlyZWQgZm9yIHRoZSBQTERUCi10byBmdW5jdGlvbiBhbmQgcHJvdmlkZSBhbmFseXNpcyBhbmQgaGVscCB3aXRoIE1QSSBhbmQgT3Blbk1QIGRldmVsb3BtZW50LgotSnVzdCB0aGUgaGVhZGVyIGZpbGVzIGFyZSByZXF1aXJlZCBpbiBvcmRlciB0byBrbm93IHdoaWNoICJhcnRpZmFjdHMiIHNob3VsZAotYmUgbG9jYXRlZC4KLTxwPlRvIHJ1biB0aGUgY29yZSBwYXJ0IG9mIFBUUCAoUGFyYWxsZWwgVG9vbHMgUGxhdGZvcm0sIDxhIGhyZWY9Imh0dHA6Ly9lY2xpcHNlLm9yZy9wdHAiPmh0dHA6Ly9lY2xpcHNlLm9yZy9wdHA8L2E+LAotdG8gcnVuIGFuZCBkZWJ1ZyBwYXJhbGxlbCBwcm9ncmFtcyBvbiB0aGUgbG9jYWwgbWFjaGluZSksIHlvdSBuZWVkIHdoYXRldmVyIHJ1bnRpbWUgaXQgcmVxdWlyZXMuICBDdXJyZW50bHkgCi0oMi4wLCBKYW51YXJ5IDIwMDgpIHRoaXMgaXMgT3Blbk1QSSwgd2hpY2ggaXMgYXZhaWxhYmxlIGZvciBMaW51eCBhbmQgTWFjIE9ubHkuICAKLUJ1dCBmb3IgUExEVCwgdGhpcyBpcyBub3QgcmVxdWlyZWQsIGFuZCBQTERUIHdpbGwgd29yawotb24gV2luZG93cyBhcyB3ZWxsLgotCi0KLTxoMj5IZWxwIFRvcGljczwvaDI+Ci08cD48YSBocmVmPSJodHRwOi8vd2lraS5lY2xpcHNlLm9yZy9QVFAvcmVsZWFzZV9ub3Rlcy8yLjAiPkJhc2ljIGluc3RydWN0aW9ucyBvbiBpbnN0YWxsaW5nIEVjbGlwc2UsIENEVCwgUFRQLCBhbmQgUExEVDwvYT4KLWZyb20gdGhlIEVjbGlwc2UgUFRQIHdlYiBzaXRlLgotPHA+VGhlIGZvbGxvd2luZyBpbnN0cnVjdGlvbnMgZGVzY3JpYmUgc2V0dXAgYW5kIHJ1biBpbmZvcm1hdGlvbi4KLTxoMz5NUEk8L2gzPgotPHVsPjxsaT4KLTxhIGhyZWY9InNldHVwLmh0bWwiPlNldHVwIGZvciBidWlsZGluZyBhbmQgcnVubmluZyBQVFAgTVBJIFRvb2xzPC9hPgotPC9saT4KLTxsaT4KLTxhIGhyZWY9InJ1bi5odG1sIj5SdW5uaW5nIFBUUCBNUEkgVG9vbHM8L2E+PC9saT4KLTxsaT4KLTxhIGhyZWY9ImJhcnJpZXIuaHRtbCI+TVBJIEJhcnJpZXIgQW5hbHlzaXM8L2E+PC9saT4KLTwvdWw+Ci08cD4KLTxoMz5PcGVuTVA8L2gzPgotPHVsPjxsaT4KLTxhIGhyZWY9InNldHVwT01QLmh0bWwiPlNldHVwIGZvciBidWlsZGluZyBhbmQgcnVubmluZyBQVFAgT3Blbk1QIFRvb2xzPC9hPgotPC9saT4KLTxsaT4KLTxhIGhyZWY9InJ1bk9NUC5odG1sIj5SdW5uaW5nIFBUUCBPcGVuTVAgVG9vbHM8L2E+PC9saT4KLTxsaT4KLTxhIGhyZWY9Im9wZW5NUGV4dHJhLmh0bWwiPkFkZGl0aW9uYWwgT3Blbk1QIFRvb2xzIDwvYT4KLTwvbGk+Ci08L3VsPgotPGEgaHJlZj0id2hhdHNuZXcuaHRtbCI+TmV3IGFuZCBOb3Rld29ydGh5IDwvYT48L2xpPiAtIHdoYXQncyBuZXcgaW4gUExEVCAyLjAKLTxoMz5NaXNwbGFjZWQgaWNvbj88L2gzPgotPHA+Tm90ZTogaWYsIGFmdGVyIGluc3RhbGxpbmcgUExEVCwgdGhlIFBMRFQgbWVudSBpY29uIGlzIG1pc3BsYWNlZCBvdmVyIG9uIHRoZSBsZWZ0IHNpZGUKLW9mIHRoZSBFY2xpcHNlIHRvb2xiYXI6Ci08YnI+PGltZyBzcmM9ImltYWdlcy9wbGR0SWNvbk1pc3BsYWNlZC5naWYiPgotPGJyPllvdSBjYW4gcHV0IGl0IGluIGl0cyBwcm9wZXIgcGxhY2UgYnkgc2VsZWN0aW5nIFdpbmRvdyA+IFJlc2V0IFBlcnNwZWN0aXZlLgotPHA+Jm5ic3A7Ci08cD4mbmJzcDsKLTxwPjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8gVG9wPC9hPiB8IDxhIGhyZWY9InRvYy5odG1sIj5CYWNrIHRvIFRhYmxlIG9mIENvbnRlbnRzPC9hPgotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC90cmFjaW5nLmh0bWwgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvdHJhY2luZy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjg2MWQ4Li4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC90cmFjaW5nLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHRpdGxlPgotUFRQIFBhcmFsbGVsIExhbmd1YWdlIERldmVsb3BtZW50IFRvb2xzIC0gVHJhY2luZwotPC90aXRsZT4KLQk8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJoZWxwLmNzcyI+Ci0JPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0idGh1bWIuanMiPiA8L3NjcmlwdD4KLQk8L2hlYWQ+Ci08Ym9keT4KLTxoMT4gPGltZyBzcmM9ImltYWdlcy9hbmFseXplLmdpZiI+IFBMRFQgVHJhY2luZzwvaDE+Ci0KLTxsaT5UcmFjaW5nIGlzIGVuYWJsZWQgaW4gUExEVC4gIFRvIHVzZSB0aGlzOgotPHA+Ci1DcmVhdGUgYSBmaWxlICIub3B0aW9ucyIgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IGFzIHlvdXIgZWNsaXBzZSBleGVjdXRhYmxlLgotUHV0IHRoaXMgaW4gdGhlIGZpbGU6Ci08cHJlPgotICAgb3JnLmVjbGlwc2UucHRwLnBsZHQuY29tbW9uL2RlYnVnID0gdHJ1ZQotICAgb3JnLmVjbGlwc2UucHRwLnBsZHQuY29tbW9uL2RlYnVnL3BsZHRUcmFjZSA9IHRydWUKLTwvcHJlPgotVGhlbiBsYXVuY2ggZWNsaXBzZSBpbiBkZWJ1ZyBtb2RlIHVzaW5nIHRoZSAtZGVidWcgb3B0aW9uLCBhbmQgbWlycm9yIHRoZQotQ29uc29sZSB2aWV3IG91dHB1dAotdG8gdGhlIGNvbW1hbmQgbGluZSBjb25zb2xlIHVzaW5nIHRoZSAtY29uc29sZUxvZyBvcHRpb24uICAoTWF5YmUgTGludXggYWxyZWFkeQotc3BpdHMgb3V0IHRoZSBjb25zb2xlLCBub3Qgc3VyZS4pCi08cHJlPgotICAgZWNsaXBzZSAtZGVidWcgLWNvbnNvbGVMb2cKLTwvcHJlPgotV2hlbiB5b3UgcnVuIHdpdGggdGhpcyB0cmFjaW5nIGVuYWJsZWQsICBpdCB3aWxsIHByaW50IG91dCBhIGJ1bmNoIG9mCi10cmFjZSBpbmZvcm1hdGlvbiB0byB0aGUgY29uc29sZS4gIEF0IGxlYXN0IE1QSSBhcnRpZmFjdCBhbmFseXNpcwotaGFzIGJlZW4gZW5hYmxlZCBmb3IgdXNlci1kaXJlY3RlZCB0cmFjaW5nLgotCi0gCi08cD5CYWNrIHRvIDxhIGhyZWY9IndoYXRzbmV3Lmh0bWwiPldoYXQncyBOZXc8L2E+IHBhZ2UuCi08L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL3doYXRzbmV3Lmh0bWwgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvd2hhdHNuZXcuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTFhNTI1YS4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvd2hhdHNuZXcuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08dGl0bGU+Ci1QVFAgUGFyYWxsZWwgTGFuZ3VhZ2UgRGV2ZWxvcG1lbnQgVG9vbHMgCi08L3RpdGxlPgotCTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImhlbHAuY3NzIj4KLQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJ0aHVtYi5qcyI+IDwvc2NyaXB0PgotCTwvaGVhZD4KLTxib2R5PgotPGgxPiA8aW1nIHNyYz0iaW1hZ2VzL2FuYWx5emUuZ2lmIj4gUExEVCAtIE5ldyBhbmQgTm90ZXdvcnRoeSA8L2gxPgotPHA+V2hhdCdzIG5ldyBpbiAyLjEKLTx1bD4KLTxsaT5NUEkgQ29kZSBUZW1wbGF0ZXMKLTxsaT5VUEMgYXNzaXN0YW5jZSB0b29scwotPGxpPkR5bmFtaWMgdG9vbCBleGFtcGxlIG9mIFBlcmZvcm1hbmNlIFRvb2xzIGZyYW1ld29yayBbdGJkXS4uLgotPC91bD4KLQotPHA+V2hhdCdzIG5ldyBpbiAyLjAKLTx1bD4KLTxsaT5OZXcgc2luZ2xlLW1lbnUgVUkgZm9yIFBMRFQgYW5hbHlzaXMgZmVhdHVyZXMgc2ltcGxpZmllcyB0aGUgZWRpdG9yIHRvb2xiYXIuCi08YnI+PHNjcmlwdD4gZnVsbCgiaW1hZ2VzL3BsZHQtbWVudS5naWYiKTwvc2NyaXB0PgotPGJyPiZuYnNwOwotPGxpPk1QSSBCYXJyaWVyIEFuYWx5c2lzIGRldGVjdHMgcG90ZW50aWFsIGRlYWRsb2NrcyBpbiBNUEkgYXBwbGljYXRpb25zLAotYW5kIHNob3dzIGJhcnJpZXIgbWF0Y2hlcywgYmFycmllciBlcnJvcnMsIGFuZCBwYXRocyBvZiBhbGwgYmFycmllcgotbWF0Y2hpbmcgc2V0cy4gIEluY2x1ZGVzIGRldGVjdGlvbnMgYWNyb3NzIG11bHRpcGxlIGZ1bmN0aW9ucyBhbmQgc291cmNlIGZpbGVzLgotPGJyPjxpbWcgc3JjPSJpbWFnZXMvYmFycmllck1hdGNoZXMuZ2lmIj4KLTxicj4mbmJzcDsKLTxicj48aW1nIHNyYz0iaW1hZ2VzL2JhcnJpZXJFcnJvcnMuZ2lmIj4KLTxicj4mbmJzcDsKLTxicj5Gb3IgZGV0YWlscywgc2VlIDxhIGhyZWY9ImJhcnJpZXIuaHRtbCI+TVBJIEJhcnJpZXIgQW5hbHlzaXM8L2E+LgotPGJyPiZuYnNwOwotPGxpPk5ldyBwcm9qZWN0IHRlbXBsYXRlcyBhbGxvdyBlYXN5IGNyZWF0aW9uIG9mIE1QSSA8aT5hbmQgT3Blbk1QPC9pPiBwcm9qZWN0cy4KLVNhbXBsZSBzb3VyY2UgZmlsZXMgY2FuIGJlIGFkZGVkIGR1cmluZyBwcm9qZWN0IGNyZWF0aW9uIGFzIHdlbGwuCi08YnI+PGltZyBzcmM9ImltYWdlcy9uZXdQcm9qZWN0V2l6YXJkLmdpZiI+Ci08YnI+Jm5ic3A7Ci08bGk+TVBJIHByb2plY3Qgc2V0dGluZ3MgcGFnZSBjYW4gYWRkIGluY2x1ZGUgZmlsZXMsIGJ1aWxkIGNvbW1hbmQsIGV0Yy4gdG8gbmV3IE1QSSBwcm9qZWN0cwotPGJyPjxpbWcgc3JjPSJpbWFnZXMvbXBpUHJvamVjdFNldHRpbmdzLmdpZiI+Ci08YnI+Jm5ic3A7Ci08bGk+SWYgQ0RUIHZlcnNpb24gaXMgaW5jb3JyZWN0ICghPSA0LngpIGFuIGVycm9yIGRpYWxvZyBjb21wbGFpbnMuCi08bGk+V2VsY29tZSBwYWdlIGluY2x1ZGVzIHBvaW50ZXJzIHRvIGluZm9ybWF0aW9uIGZvciBQTERULgotPGJyPjxpbWcgc3JjPSJpbWFnZXMvd2VsY29tZU92ZXJ2aWV3LmdpZiI+Ci08YnI+PGltZyBzcmM9ImltYWdlcy93ZWxjb21lQy1wbGR0LmdpZiI+Ci08YnI+Jm5ic3A7Ci08bGk+QXJ0aWZhY3QgbWFya2VycyBjYW4gYmUgcmVtb3ZlZCBkaXJlY3RseSBmcm9tIHRoZSBhcnRpZmFjdHMgdmlldy4KLTxicj48aW1nIHNyYz0iaW1hZ2VzL3JlbW92ZU1hcmtlcnMuZ2lmIj4KLTxicj4mbmJzcDsKLTxsaT5UcmFjaW5nIGlzIGVuYWJsZWQuICA8YSBocmVmPSJ0cmFjaW5nLmh0bWwiPlNlZSB0cmFjaW5nIGluc3RydWN0aW9ucyBmb3IgaG93IHRvIHR1cm4gdGhpcyBvbi48L2E+Ci0KLQotCi08L3VsPgotPHA+Jm5ic3A7Ci08cD48YSBocmVmPSJ0b2MuaHRtbCI+QmFjayB0byBUYWJsZSBvZiBDb250ZW50czwvYT4KLTwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2ludHJvL2Nzcy9ncmFwaGljcy8uY3ZzaWdub3JlIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9pbnRyby9jc3MvZ3JhcGhpY3MvLmN2c2lnbm9yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDg1ZThiYS4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2ludHJvL2Nzcy9ncmFwaGljcy8uY3ZzaWdub3JlCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotVGh1bWJzLmRiCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2ludHJvL2Nzcy9ncmFwaGljcy9jZHRfaWNvbl9jcmVhdGVfY3Byb2plY3QucG5nIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9pbnRyby9jc3MvZ3JhcGhpY3MvY2R0X2ljb25fY3JlYXRlX2Nwcm9qZWN0LnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWM1MTJkNy4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2ludHJvL2Nzcy9ncmFwaGljcy9jZHRfaWNvbl9jcmVhdGVfY3Byb2plY3QucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9pbnRyby9jc3MvZ3JhcGhpY3Mvc2FtcGxlLmdpZiBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaW50cm8vY3NzL2dyYXBoaWNzL3NhbXBsZS5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmZjFmZmMuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9pbnRyby9jc3MvZ3JhcGhpY3Mvc2FtcGxlLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaW50cm8vY3NzL2dyYXBoaWNzL3NhbXBsZV9ob3YuZ2lmIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9pbnRyby9jc3MvZ3JhcGhpY3Mvc2FtcGxlX2hvdi5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4NzQxNjQuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9pbnRyby9jc3MvZ3JhcGhpY3Mvc2FtcGxlX2hvdi5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2ludHJvL2Nzcy9zYW1wbGUuY3NzIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9pbnRyby9jc3Mvc2FtcGxlLmNzcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2EyYTg0My4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2ludHJvL2Nzcy9zYW1wbGUuY3NzCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0KLWEjb3JnZWNsaXBzZXB0cHBsZHR3ZWxjb21lLWludHJvTGluayBpbWcgeyBiYWNrZ3JvdW5kLWltYWdlIDogdXJsKGdyYXBoaWNzL3NhbXBsZS5naWYpOyB9Ci1hI29yZ2VjbGlwc2VwdHBwbGR0d2VsY29tZS1pbnRyb0xpbms6aG92ZXIgaW1nIHsgYmFja2dyb3VuZC1pbWFnZSA6IHVybChncmFwaGljcy9zYW1wbGVfaG92LmdpZik7IH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2ludHJvL3BsZHRPdmVydmlldy54bWwgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2ludHJvL3BsZHRPdmVydmlldy54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViNmNmOWMuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9pbnRyby9wbGR0T3ZlcnZpZXcueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+Ci08aW50cm9Db250ZW50PgotICAJPGV4dGVuc2lvbkNvbnRlbnQgaWQ9Im9yZ2VjbGlwc2VwdHBwbGR0d2VsY29tZS1pbnRyb0V4dGVuc2lvbiIgc3R5bGU9ImNzcy9zYW1wbGUuY3NzIiAKLSAgCW5hbWU9IlBMRFQgV2VsY29tZSBFeHRlbnNpb24iIHBhdGg9Im92ZXJ2aWV3L0AiPgotCQk8Z3JvdXAgc3R5bGUtaWQ9ImNvbnRlbnQtZ3JvdXAiIGlkPSJvcmdlY2xpcHNlcHRwcGxkdHdlbGNvbWUtaW50cm9MaW5rLWdyb3VwIj4KLQkJCTxsaW5rIGxhYmVsPSJQYXJhbGxlbCBMYW5ndWFnZSBEZXZlbG9wbWVudCBUb29scyIgaWQ9Im9yZ2VjbGlwc2VwdHBwbGR0d2VsY29tZS1pbnRyb0xpbmsiIHN0eWxlLWlkPSJjb250ZW50LWxpbmsiCi0gICAgICAgCQkgICB1cmw9Imh0dHA6Ly9vcmcuZWNsaXBzZS51aS5pbnRyby9zaG93SGVscFRvcGljP2lkPS9vcmcuZWNsaXBzZS5wdHAucGxkdC5oZWxwL2h0bWwvdG9jLmh0bWwiID4KLSAgICAgICAJCTx0ZXh0PkxlYXJuIG1vcmUgYWJvdXQgUExEVCwgdG8gaGVscCBpbiBkZXZlbG9waW5nIE1QSSBhbmQgT3Blbk1QIHByb2dyYW1zLjwvdGV4dD4KLSAgICAgICAgICAJPC9saW5rPgotICAgICAgIAk8L2dyb3VwPgotICAJPC9leHRlbnNpb25Db250ZW50PgotPC9pbnRyb0NvbnRlbnQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9pbnRyby9wbGR0VHV0b3JpYWwueG1sIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9pbnRyby9wbGR0VHV0b3JpYWwueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MDBjNjQzLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaW50cm8vcGxkdFR1dG9yaWFsLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/PgotPGludHJvQ29udGVudD4KLSAgCTxleHRlbnNpb25Db250ZW50IGlkPSJvcmdlY2xpcHNlcHRwcGxkdHdlbGNvbWUtaW50cm9FeHRlbnNpb24iIHN0eWxlPSJjc3Mvc2FtcGxlLmNzcyIgbmFtZT0iU2FtcGxlIEV4dGVuc2lvbiIgcGF0aD0idHV0b3JpYWxzL0AiPgotCQk8Z3JvdXAgc3R5bGUtaWQ9ImNvbnRlbnQtZ3JvdXAiIGlkPSJvcmdlY2xpcHNlcHRwcGxkdHdlbGNvbWUtaW50cm9MaW5rLWdyb3VwIj4KLSAgICAgICAJCTxsaW5rIGxhYmVsPSJQYXJhbGxlbCBMYW5ndWFnZSBEZXZlbG9wbWVudCBUb29scyIgCi0gICAgICAgCQl1cmw9Imh0dHA6Ly9vcmcuZWNsaXBzZS51aS5pbnRyby9zaG93SGVscFRvcGljP2lkPS9vcmcuZWNsaXBzZS5wdHAucGxkdC5oZWxwL2h0bWwvc2V0dXAuaHRtbCIgCi0gICAgICAgCQlpZD0ib3JnZWNsaXBzZXB0cHBsZHR3ZWxjb21lLWludHJvTGluayIgc3R5bGUtaWQ9ImNvbnRlbnQtbGluayI+Ci0gICAgICAgICAgCQk8dGV4dD5MZWFybiBob3cgdG8gdXNlIHRoZSBkZXZlbG9wbWVudCB0b29scyBmb3IgcGFyYWxsZWwgcHJvZ3JhbW1pbmcgaW4gUExEVC48L3RleHQ+Ci0gICAgICAgCQk8L2xpbms+Ci0gICAgICAgCTwvZ3JvdXA+Ci0gIAk8L2V4dGVuc2lvbkNvbnRlbnQ+Ci08L2ludHJvQ29udGVudD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2ludHJvL3BsZHRXaGF0c25ldy54bWwgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2ludHJvL3BsZHRXaGF0c25ldy54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkODk0ZWYuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9pbnRyby9wbGR0V2hhdHNuZXcueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+Ci08aW50cm9Db250ZW50PgotICAJPGV4dGVuc2lvbkNvbnRlbnQgaWQ9Im9yZ2VjbGlwc2VwdHBwbGR0d2VsY29tZS1pbnRyb0V4dGVuc2lvbiIgc3R5bGU9ImNzcy9zYW1wbGUuY3NzIiAKLSAgCW5hbWU9IlBMRFQgd2hhdHMgbmV3IEV4dGVuc2lvbiIgcGF0aD0id2hhdHNuZXcvQCI+Ci0JCTxncm91cCBzdHlsZS1pZD0iY29udGVudC1ncm91cCIgaWQ9Im9yZ2VjbGlwc2VwdHBwbGR0d2VsY29tZS1pbnRyb0xpbmstZ3JvdXAiPgotICAgICAgIAkJPGxpbmsgbGFiZWw9IlBhcmFsbGVsIExhbmd1YWdlIERldmVsb3BtZW50IFRvb2xzIiAKLSAgICAgICAJCXVybD0iaHR0cDovL29yZy5lY2xpcHNlLnVpLmludHJvL3Nob3dIZWxwVG9waWM/aWQ9L29yZy5lY2xpcHNlLnB0cC5wbGR0LmhlbHAvaHRtbC93aGF0c25ldy5odG1sIiAKLSAgICAgICAJCWlkPSJvcmdlY2xpcHNlcHRwcGxkdHdlbGNvbWUtaW50cm9MaW5rIiBzdHlsZS1pZD0iY29udGVudC1saW5rIj4KLSAgICAgICAgICAJCTx0ZXh0PkZpbmQgb3V0IHRoZSBuZXcgZmVhdHVyZXMgaW4gUExEVCAyLjAuPC90ZXh0PgotICAgICAgIAkJPC9saW5rPgotICAgICAgIAk8L2dyb3VwPgotICAJPC9leHRlbnNpb25Db250ZW50PgotPC9pbnRyb0NvbnRlbnQ+Ci0KZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvcGx1Z2luLnByb3BlcnRpZXMgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL3BsdWdpbi5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NGVkZGJmLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvcGx1Z2luLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwOCBJQk0gQ29ycG9yYXRpb24uCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0jIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLXBsdWdpbk5hbWU9UFRQIFBhcmFsbGVsIExhbmd1YWdlIERldmVsb3BtZW50IFRvb2xzIFVzZXIgR3VpZGUKLXBsdWdpblByb3ZpZGVyPUVjbGlwc2Uub3JnCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL3BsdWdpbi54bWwgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL3BsdWdpbi54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRiYmQ0MTUuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9wbHVnaW4ueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTw/ZWNsaXBzZSB2ZXJzaW9uPSIzLjAiPz4KLQotCi0KLTxwbHVnaW4+Ci0KLSAgICAgPGV4dGVuc2lvbgotICAgICAgICAgcG9pbnQ9Im9yZy5lY2xpcHNlLmhlbHAudG9jIj4KLSAgICAgIDx0b2MKLSAgICAgICAgICAgIGZpbGU9InRvYy54bWwiCi0gICAgICAgICAgICBwcmltYXJ5PSJ0cnVlIi8+Ci0gICAgICA8aW5kZXggcGF0aD0ib3JnLmVjbGlwc2UucHRwLnBsZHQuaGVscC5pbmRleDEiLz4KLSAgIDwvZXh0ZW5zaW9uPgotCi0gIDxleHRlbnNpb24KLSAgICAgICAgIHBvaW50PSJvcmcuZWNsaXBzZS51aS5pbnRyby5jb25maWdFeHRlbnNpb24iPgotICAgICAgPGNvbmZpZ0V4dGVuc2lvbgotICAgICAgICAgICAgY29udGVudD0iaW50cm8vcGxkdE92ZXJ2aWV3LnhtbCIKLSAgICAgICAgICAgIGNvbmZpZ0lkPSJvcmcuZWNsaXBzZS51aS5pbnRyby51bml2ZXJzYWxDb25maWciPgotICAgICAgPC9jb25maWdFeHRlbnNpb24+Ci0gICAKLSAgICAgIDxjb25maWdFeHRlbnNpb24KLSAgICAgICAgICAgIGNvbmZpZ0lkPSJvcmcuZWNsaXBzZS51aS5pbnRyby51bml2ZXJzYWxDb25maWciCi0gICAgICAgICAgICBjb250ZW50PSJpbnRyby9wbGR0V2hhdHNuZXcueG1sIj4KLSAgICAgIDwvY29uZmlnRXh0ZW5zaW9uPgotICAKLSAgICAgIDxjb25maWdFeHRlbnNpb24KLSAgICAgICAgICAgIGNvbmZpZ0lkPSJvcmcuZWNsaXBzZS51aS5pbnRyby51bml2ZXJzYWxDb25maWciCi0gICAgICAgICAgICBjb250ZW50PSJpbnRyby9wbGR0VHV0b3JpYWwueG1sIj4KLSAgICAgIDwvY29uZmlnRXh0ZW5zaW9uPgotICAgPC9leHRlbnNpb24+Ci08L3BsdWdpbj4KZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvc3JjL29yZy9lY2xpcHNlL3B0cC9wbGR0L2hlbHAvSGVscFBsdWdpbi5qYXZhIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9zcmMvb3JnL2VjbGlwc2UvcHRwL3BsZHQvaGVscC9IZWxwUGx1Z2luLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzZGQxMDQuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9zcmMvb3JnL2VjbGlwc2UvcHRwL3BsZHQvaGVscC9IZWxwUGx1Z2luLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwNSBJQk0gQ29ycG9yYXRpb24uCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLnB0cC5wbGR0LmhlbHA7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS51aS5wbHVnaW4uKjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5yZXNvdXJjZS5JbWFnZURlc2NyaXB0b3I7Ci1pbXBvcnQgb3JnLm9zZ2kuZnJhbWV3b3JrLkJ1bmRsZUNvbnRleHQ7Ci1pbXBvcnQgamF2YS51dGlsLio7Ci0KLS8qKgotICogVGhlIG1haW4gcGx1Z2luIGNsYXNzIHRvIGJlIHVzZWQgaW4gdGhlIGRlc2t0b3AuCi0gKi8KLXB1YmxpYyBjbGFzcyBIZWxwUGx1Z2luIGV4dGVuZHMgQWJzdHJhY3RVSVBsdWdpbgotewotICAgIC8qKiBUaGUgc2hhcmVkIGluc3RhbmNlLiAqLwotICAgIHByaXZhdGUgc3RhdGljIEhlbHBQbHVnaW4gcGx1Z2luOwotICAgIC8qKiBSZXNvdXJjZSBidW5kbGUgKi8KLSAgICBwcml2YXRlIFJlc291cmNlQnVuZGxlICAgIHJlc291cmNlQnVuZGxlOwotICAgIC8qKiB0aGUgcGx1Zy1pbiBJRCAqLwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBMVUdJTl9JRD0ib3JnLmVjbGlwc2UucHRwLnBsZHQuaGVscCI7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgY29uc3RydWN0b3IuCi0gICAgICovCi0gICAgcHVibGljIEhlbHBQbHVnaW4oKQotICAgIHsKLSAgICAgICAgc3VwZXIoKTsKLSAgICAgICAgcGx1Z2luID0gdGhpczsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgdXBvbiBwbHVnLWluIGFjdGl2YXRpb24KLSAgICAgKi8KLSAgICBwdWJsaWMgdm9pZCBzdGFydChCdW5kbGVDb250ZXh0IGNvbnRleHQpIHRocm93cyBFeGNlcHRpb24KLSAgICB7Ci0gICAgICAgIHN1cGVyLnN0YXJ0KGNvbnRleHQpOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIHRoZSBwbHVnLWluIGlzIHN0b3BwZWQKLSAgICAgKi8KLSAgICBwdWJsaWMgdm9pZCBzdG9wKEJ1bmRsZUNvbnRleHQgY29udGV4dCkgdGhyb3dzIEV4Y2VwdGlvbgotICAgIHsKLSAgICAgICAgc3VwZXIuc3RvcChjb250ZXh0KTsKLSAgICAgICAgcGx1Z2luID0gbnVsbDsKLSAgICAgICAgcmVzb3VyY2VCdW5kbGUgPSBudWxsOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIFJldHVybnMgdGhlIHNoYXJlZCBpbnN0YW5jZS4KLSAgICAgKi8KLSAgICBwdWJsaWMgc3RhdGljIEhlbHBQbHVnaW4gZ2V0RGVmYXVsdCgpCi0gICAgewotICAgICAgICByZXR1cm4gcGx1Z2luOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIFJldHVybnMgdGhlIHN0cmluZyBmcm9tIHRoZSBwbHVnaW4ncyByZXNvdXJjZSBidW5kbGUsIG9yICdrZXknIGlmIG5vdCBmb3VuZC4KLSAgICAgKi8KLSAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRSZXNvdXJjZVN0cmluZyhTdHJpbmcga2V5KQotICAgIHsKLSAgICAgICAgUmVzb3VyY2VCdW5kbGUgYnVuZGxlID0gSGVscFBsdWdpbi5nZXREZWZhdWx0KCkuZ2V0UmVzb3VyY2VCdW5kbGUoKTsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHJldHVybiAoYnVuZGxlICE9IG51bGwpID8gYnVuZGxlLmdldFN0cmluZyhrZXkpIDoga2V5OwotICAgICAgICB9IGNhdGNoIChNaXNzaW5nUmVzb3VyY2VFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgcmV0dXJuIGtleTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8qKgotICAgICAqIFJldHVybnMgdGhlIHBsdWdpbidzIHJlc291cmNlIGJ1bmRsZSwKLSAgICAgKi8KLSAgICBwdWJsaWMgUmVzb3VyY2VCdW5kbGUgZ2V0UmVzb3VyY2VCdW5kbGUoKQotICAgIHsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGlmIChyZXNvdXJjZUJ1bmRsZSA9PSBudWxsKQotICAgICAgICAgICAgICAgIHJlc291cmNlQnVuZGxlID0gUmVzb3VyY2VCdW5kbGUuZ2V0QnVuZGxlKCJvcmcuZWNsaXBzZS5wdHAucGxkdC5oZWxwLkhlbHBQbHVnaW5SZXNvdXJjZXMiKTsKLSAgICAgICAgfSBjYXRjaCAoTWlzc2luZ1Jlc291cmNlRXhjZXB0aW9uIHgpIHsKLSAgICAgICAgICAgIHJlc291cmNlQnVuZGxlID0gbnVsbDsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcmVzb3VyY2VCdW5kbGU7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogUmV0dXJucyBhbiBpbWFnZSBkZXNjcmlwdG9yIGZvciB0aGUgaW1hZ2UgZmlsZSBhdCB0aGUgZ2l2ZW4gcGx1Zy1pbiByZWxhdGl2ZSBwYXRoLgotICAgICAqIAotICAgICAqIEBwYXJhbSBwYXRoIHRoZSBwYXRoCi0gICAgICogQHJldHVybiB0aGUgaW1hZ2UgZGVzY3JpcHRvcgotICAgICAqLwotICAgIHB1YmxpYyBzdGF0aWMgSW1hZ2VEZXNjcmlwdG9yIGdldEltYWdlRGVzY3JpcHRvcihTdHJpbmcgcGF0aCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBBYnN0cmFjdFVJUGx1Z2luLmltYWdlRGVzY3JpcHRvckZyb21QbHVnaW4oUExVR0lOX0lELCBwYXRoKTsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL3RvYy54bWwgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL3RvYy54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5M2ZjYmQuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci90b2MueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTw/TkxTIFRZUEU9Im9yZy5lY2xpcHNlLmhlbHAudG9jIj8+Ci0KLTx0b2MgbGFiZWw9IlBUUCBQYXJhbGxlbCBMYW5ndWFnZSBEZXZlbG9wbWVudCBUb29scyIgdG9waWM9Imh0bWwvdG9jLmh0bWwiPgotCi0gICAgICA8dG9waWMgbGFiZWw9IlNldHVwIGZvciBQVFAgTVBJIHRvb2xzIiAgaHJlZj0iaHRtbC9zZXR1cC5odG1sIi8+IAotICAgICAgPHRvcGljIGxhYmVsPSJSdW5uaW5nIFBUUCBNUEkgdG9vbHMiICBocmVmPSJodG1sL3J1bi5odG1sIi8+IAotICAgICAgICAgICA8dG9waWMgbGFiZWw9IlNldHVwIGZvciBQVFAgT3Blbk1QIHRvb2xzIiAgaHJlZj0iaHRtbC9zZXR1cE9NUC5odG1sIi8+IAotICAgICAgPHRvcGljIGxhYmVsPSJSdW5uaW5nIFBUUCBPcGVuTVAgdG9vbHMiICBocmVmPSJodG1sL3J1bk9NUC5odG1sIi8+IAotICAgPHRvcGljIGxhYmVsPSJNUEkgQmFycmllciBBbmFseXNpcyIgIGhyZWY9Imh0bWwvYmFycmllci5odG1sIi8+IAotICAgPHRvcGljIGxhYmVsPSJOZXcgYW5kIE5vdGV3b3J0aHkiICBocmVmPSJodG1sL3doYXRzbmV3Lmh0bWwiLz4KLTwvdG9jPgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvLmNsYXNzcGF0aCBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjLy5jbGFzc3BhdGgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1MWM4ZjIuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvLmNsYXNzcGF0aAorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxjbGFzc3BhdGg+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9InNyYyIgcGF0aD0ic3JjIi8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImNvbiIgcGF0aD0ib3JnLmVjbGlwc2UuamR0LmxhdW5jaGluZy5KUkVfQ09OVEFJTkVSIi8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImNvbiIgcGF0aD0ib3JnLmVjbGlwc2UucGRlLmNvcmUucmVxdWlyZWRQbHVnaW5zIi8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9Im91dHB1dCIgcGF0aD0iYmluIi8+Ci08L2NsYXNzcGF0aD4KZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjLy5jdnNpZ25vcmUgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy8uY3ZzaWdub3JlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyY2M4ZGQxLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjLy5jdnNpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWJpbgotaWNvbnMtb2xkCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy8ucHJvamVjdCBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjLy5wcm9qZWN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MzQ5MzY3Li4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjLy5wcm9qZWN0CisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxwcm9qZWN0RGVzY3JpcHRpb24+Ci0JPG5hbWU+b3JnLmVjbGlwc2UucHRwLnBsZHQudXBjPC9uYW1lPgotCTxjb21tZW50PjwvY29tbWVudD4KLQk8cHJvamVjdHM+Ci0JPC9wcm9qZWN0cz4KLQk8YnVpbGRTcGVjPgotCQk8YnVpbGRDb21tYW5kPgotCQkJPG5hbWU+b3JnLmVjbGlwc2UuamR0LmNvcmUuamF2YWJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCQk8YnVpbGRDb21tYW5kPgotCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLk1hbmlmZXN0QnVpbGRlcjwvbmFtZT4KLQkJCTxhcmd1bWVudHM+Ci0JCQk8L2FyZ3VtZW50cz4KLQkJPC9idWlsZENvbW1hbmQ+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5wZGUuU2NoZW1hQnVpbGRlcjwvbmFtZT4KLQkJCTxhcmd1bWVudHM+Ci0JCQk8L2FyZ3VtZW50cz4KLQkJPC9idWlsZENvbW1hbmQ+Ci0JPC9idWlsZFNwZWM+Ci0JPG5hdHVyZXM+Ci0JCTxuYXR1cmU+b3JnLmVjbGlwc2UucGRlLlBsdWdpbk5hdHVyZTwvbmF0dXJlPgotCQk8bmF0dXJlPm9yZy5lY2xpcHNlLmpkdC5jb3JlLmphdmFuYXR1cmU8L25hdHVyZT4KLQk8L25hdHVyZXM+Ci08L3Byb2plY3REZXNjcmlwdGlvbj4KZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL01FVEEtSU5GL01BTklGRVNULk1GIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvTUVUQS1JTkYvTUFOSUZFU1QuTUYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjNDRhMDkuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvTUVUQS1JTkYvTUFOSUZFU1QuTUYKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1NYW5pZmVzdC1WZXJzaW9uOiAxLjAKLUJ1bmRsZS1NYW5pZmVzdFZlcnNpb246IDIKLUJ1bmRsZS1OYW1lOiBVUEMgc3VwcG9ydCBmb3IgUExEVAotQnVuZGxlLVN5bWJvbGljTmFtZTogb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjO3NpbmdsZXRvbjo9dHJ1ZQotQnVuZGxlLVZlcnNpb246IDIuMS4wLnF1YWxpZmllcgotQnVuZGxlLUFjdGl2YXRvcjogb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjLlVQQ1BsdWdpbgotQnVuZGxlLVZlbmRvcjogSUJNIFJlc2VhcmNoCi1CdW5kbGUtTG9jYWxpemF0aW9uOiBwbHVnaW4KLVJlcXVpcmUtQnVuZGxlOiBvcmcuZWNsaXBzZS51aSwKLSBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUsCi0gb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMsCi0gb3JnLmVjbGlwc2UuY2R0LmNvcmUsCi0gb3JnLmVjbGlwc2UuY2R0LnVpLAotIG9yZy5lY2xpcHNlLnB0cC5wbGR0LmNvbW1vbiwKLSBvcmcuZWNsaXBzZS5oZWxwLAotIG9yZy5lY2xpcHNlLmNkdC5kb2MudXNlciwKLSBvcmcuZWNsaXBzZS5jZHQuY29yZS5wYXJzZXIudXBjO2J1bmRsZS12ZXJzaW9uPSI1LjAuMCIKLUVjbGlwc2UtQXV0b1N0YXJ0OiB0cnVlCi1CdW5kbGUtQ2xhc3NQYXRoOiAuCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9idWlsZC5wcm9wZXJ0aWVzIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvYnVpbGQucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzNjMmM2NS4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9idWlsZC5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1zb3VyY2UuLiA9IHNyYy8KLW91dHB1dC4uID0gYmluLwotYmluLmluY2x1ZGVzID0gTUVUQS1JTkYvLFwKLSAgICAgICAgICAgICAgIC4sXAotICAgICAgICAgICAgICAgcGx1Z2luLnhtbCxcCi0gICAgICAgICAgICAgICBpY29ucy8sXAotICAgICAgICAgICAgICAgaHRtbC8sXAotICAgICAgICAgICAgICAgcGx1Z2luLnByb3BlcnRpZXMKZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvaWRfTVlUSFJFQUQuaHRtbCBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvaWRfTVlUSFJFQUQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzY3MjIxYy4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL2lkX01ZVEhSRUFELmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi08aDI+PGNvZGU+TVlUSFJFQUQ8L2NvZGU+IGtleXdvcmQ8L2gyPgotCi0KLTxoND5EZXNjcmlwdGlvbjwvaDQ+Ci08cD4KLTxjb2RlPk1ZVEhSRUFEPC9jb2RlPiAgaXMgYW4gZXhwcmVzc2lvbiB3aXRoIGEgdmFsdWUgb2YgdHlwZSBpbnQ7IGl0IHNwZWNpZmllcyB0aGUgdW5pcXVlCi10aHJlYWQgaW5kZXguIAotPGJyPlRoZSByYW5nZSBvZiBwb3NzaWJsZSB2YWx1ZXMgaXMgPGNvZGU+MC4uVEhSRUFEUy0xNjwvY29kZT4uCi08aDQ+RXhhbXBsZTwvaDQ+Ci08cD5UaGUgZm9sbG93aW5nIHByb2dyYW0gcHJpbnRzIHRoZSBudW1iZXJzIDAKLXRocm91Z2ggPGNvZGU+VEhSRUFEUy0xPC9jb2RlPiwgaW4gc29tZSBvcmRlci4KLTxwcmU+Ci0gICAgI2luY2x1ZGUgJmx0O3VwYy5oJmd0OwotICAgIG1haW4oKXsgCi0gICAgICBwcmludGYoIiVkICIsTVlUSFJFQUQpOyAKLSAgICB9Ci08L3ByZT4KLTxwPlNlZSBhbHNvIDxhIGhyZWY9ImlkX1RIUkVBRFMuaHRtbCI+PGNvZGU+VEhSRUFEUzwvY29kZT48L2E+LAotCi08cD4mbmJzcAotPHA+Jm5ic3AKLTxwPjxhIGhyZWY9InRlcm1zLmh0bWwiPlRlcm1zLCBkZWZpbml0aW9ucywgYW5kIHN5bWJvbHM8L2E+PGJyPgotPHA+PGEgaHJlZj0iaW5kZXguaHRtbCI+QmFjayB0byBpbmRleCBvZiBhbGwgVVBDIGZ1bmN0aW9uczwvYT4KZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvaWRfVEhSRUFEUy5odG1sIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC9pZF9USFJFQURTLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhMDAzODMuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC9pZF9USFJFQURTLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi08aDI+PGNvZGU+PGNvZGU+VEhSRUFEUzwvY29kZT48L2NvZGU+IGtleXdvcmQ8L2gyPgotCi0KLTxoND5EZXNjcmlwdGlvbjwvaDQ+Ci08cD4KLTxjb2RlPlRIUkVBRFM8L2NvZGU+IGlzIGFuIGV4cHJlc3Npb24gd2l0aCBhIHZhbHVlIG9mIHR5cGUgPGNvZGU+aW50PC9jb2RlPjsgaXQgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YKLXRocmVhZHMgYW5kIGhhcyB0aGUgc2FtZSB2YWx1ZSBvbiBldmVyeSB0aHJlYWQuIFVuZGVyIHRoZSBzdGF0aWMgPGNvZGU+VEhSRUFEUzwvY29kZT4KLXRyYW5zbGF0aW9uIGVudmlyb25tZW50LCA8Y29kZT5USFJFQURTPC9jb2RlPiBpcyBhbiA8Y29kZT5pbnQ8L2NvZGU+ZWdlciBjb25zdGFudCBzdWl0YWJsZSBmb3IgdXNlIGluCi0jaWYgcHJlcHJvY2Vzc2luZyBkaXJlY3RpdmVzLgotCi0KLTxwPiZuYnNwCi08cD4mbmJzcAotPHA+PGEgaHJlZj0idGVybXMuaHRtbCI+VGVybXMsIGRlZmluaXRpb25zLCBhbmQgc3ltYm9sczwvYT48YnI+Ci08cD48YSBocmVmPSJpbmRleC5odG1sIj5CYWNrIHRvIGluZGV4IG9mIGFsbCBVUEMgZnVuY3Rpb25zPC9hPgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC9pZF9VUENfTUFYX0JMT0NLX1NJWkUuaHRtbCBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvaWRfVVBDX01BWF9CTE9DS19TSVpFLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1MWY1OWMuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC9pZF9VUENfTUFYX0JMT0NLX1NJWkUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLTxoMj48Y29kZT5VUENfTUFYX0JMT0NLX1NJWkU8L2NvZGU+IGlkZW50aWZpZXI8L2gyPgotCi0KLTxoND5EZXNjcmlwdGlvbjwvaDQ+Ci08cD4KLTxjb2RlPlVQQ19NQVhfQkxPQ0tfU0laRTwvY29kZT4gIGlzIGEgcHJlZGVmaW5lZCBpbnRlZ2VyIGNvbnN0YW50IHZhbHVlLiBJdCBpbmRpY2F0ZXMgdGhlCi1tYXhpbXVtIHZhbHVlIGFsbG93ZWQgaW4gYSBsYXlvdXQgcXVhbGlmaWVyIGZvciBzaGFyZWQgZGF0YS4gSXQgc2hhbGwgYmUKLXN1aXRhYmxlIGZvciB1c2UgaW4gPGNvZGU+I2lmPC9jb2RlPiBwcmVwcm9jZXNzaW5nIGRpcmVjdGl2ZXMuCi0KLTxwPiZuYnNwCi08cD4mbmJzcAotPHA+PGEgaHJlZj0idGVybXMuaHRtbCI+VGVybXMsIGRlZmluaXRpb25zLCBhbmQgc3ltYm9sczwvYT48YnI+Ci08cD48YSBocmVmPSJpbmRleC5odG1sIj5CYWNrIHRvIGluZGV4IG9mIGFsbCBVUEMgZnVuY3Rpb25zPC9hPgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC9pbmRleC5odG1sIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC9pbmRleC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMWJiNDc2Li4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvaW5kZXguaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLTxoMiBpZD0idG9wIj5VUEMgU3RhdGVtZW50czwvaDI+Ci08dWw+Ci08bGk+PGEgaHJlZj0ia2V5d29yZHMuaHRtbCI+S2V5d29yZHMvSWRlbnRpZmllcnM8L2E+Ci08bGk+PGEgaHJlZj0ia2V5d29yZHMuaHRtbCI+S2V5d29yZHM8L2E+Ci0KLTwvdWw+Ci08aDIgaWQ9InRvcCI+VVBDIGZ1bmN0aW9uczwvaDI+Ci08cD5UZXJtaW5hdGlvbiBvZiBhbGwgdGhyZWFkcwotPHVsPgotPGxpPjxhIGhyZWY9InVwY19nbG9iYWxfZXhpdC5odG1sIj4gPGNvZGU+dXBjX2dsb2JhbF9leGl0PC9jb2RlPiA8L2E+Ci08L3VsPgotPHA+U2hhcmVkIG1lbW9yeSBhbGxvY2F0aW9uIGZ1bmN0aW9ucwotPHVsPgotPGxpPjxhIGhyZWY9InVwY19nbG9iYWxfYWxsb2MuaHRtbCI+IDxjb2RlPnVwY19nbG9iYWxfYWxsb2M8L2NvZGU+IDwvYT4KLTxsaT48YSBocmVmPSJ1cGNfYWxsX2FsbG9jLmh0bWwiPiA8Y29kZT51cGNfYWxsX2FsbG9jPC9jb2RlPiA8L2E+Ci08bGk+PGEgaHJlZj0idXBjX2FsbG9jLmh0bWwiPiA8Y29kZT51cGNfYWxsb2M8L2NvZGU+IDwvYT4KLTxsaT48YSBocmVmPSJ1cGNfbG9jYWxfYWxsb2MuaHRtbCI+IDxjb2RlPnVwY19sb2NhbF9hbGxvYzwvY29kZT4gPC9hPiAgPGk+ZGVwcmVjYXRlZDwvaT4KLTxsaT48YSBocmVmPSJ1cGNfZnJlZS5odG1sIj4gPGNvZGU+dXBjX2ZyZWU8L2NvZGU+IDwvYT4KLTwvdWw+Ci0KLTxwPlBvaW50ZXItdG8tc2hhcmVkIG1hbmlwdWxhdGlvbiBmdW5jdGlvbnMKLTx1bD4KLTxsaT48YSBocmVmPSJ1cGNfdGhyZWFkb2YuaHRtbCI+IDxjb2RlPnVwY190aHJlYWRvZjwvY29kZT4gPC9hPgotPGxpPjxhIGhyZWY9InVwY19waGFzZW9mLmh0bWwiPiA8Y29kZT51cGNfcGhhc2VvZjwvY29kZT4gPC9hPgotPGxpPjxhIGhyZWY9InVwY19yZXNldHBoYXNlLmh0bWwiPiA8Y29kZT51cGNfcmVzZXRwaGFzZTwvY29kZT4gPC9hPgotPGxpPjxhIGhyZWY9InVwY19hZGRyZmllbGQuaHRtbCI+IDxjb2RlPnVwY19hZGRyZmllbGQ8L2NvZGU+IDwvYT4KLTxsaT48YSBocmVmPSJ1cGNfYWZmaW5pdHlzaXplLmh0bWwiPiA8Y29kZT51cGNfYWZmaW5pdHlzaXplPC9jb2RlPiA8L2E+Ci08L3VsPgotCi08cD5Mb2NrIGZ1bmN0aW9ucwotPHVsPgotPGxpPjxhIGhyZWY9InVwY19sb2NrX3QuaHRtbCI+IDxjb2RlPnVwY19sb2NrX3Q8L2NvZGU+IDwvYT4gJm5ic3A7IHR5cGUgCi08bGk+PGEgaHJlZj0idXBjX2dsb2JhbF9sb2NrX2FsbG9jLmh0bWwiPiA8Y29kZT51cGNfZ2xvYmFsX2xvY2tfYWxsb2M8L2NvZGU+ICA8L2E+Ci08bGk+PGEgaHJlZj0idXBjX2FsbF9sb2NrX2FsbG9jLmh0bWwiPiA8Y29kZT51cGNfYWxsX2xvY2tfYWxsb2M8L2NvZGU+ICA8L2E+Ci08bGk+PGEgaHJlZj0idXBjX2xvY2tfZnJlZS5odG1sIj4gPGNvZGU+dXBjX2xvY2tfZnJlZTwvY29kZT4gIDwvYT4KLTxsaT48YSBocmVmPSJ1cGNfbG9jay5odG1sIj4gPGNvZGU+dXBjX2xvY2s8L2NvZGU+ICA8L2E+Ci08bGk+PGEgaHJlZj0idXBjX2xvY2tfYXR0ZW1wdC5odG1sIj4gPGNvZGU+dXBjX2xvY2tfYXR0ZW1wdDwvY29kZT4gIDwvYT4KLTxsaT48YSBocmVmPSJ1cGNfdW5sb2NrLmh0bWwiPiA8Y29kZT51cGNfdW5sb2NrPC9jb2RlPiAgPC9hPgotPC91bD4KLQotPHA+U2hhcmVkIHN0cmluZyBoYW5kbGluZyBmdW5jdGlvbnMKLTx1bD4KLTxsaT48YSBocmVmPSJ1cGNfbWVtY3B5Lmh0bWwiPiA8Y29kZT51cGNfbWVtY3B5PC9jb2RlPiA8L2E+Ci08bGk+PGEgaHJlZj0idXBjX21lbWdldC5odG1sIj4gPGNvZGU+dXBjX21lbWdldDwvY29kZT4gPC9hPgotPGxpPjxhIGhyZWY9InVwY19tZW1jcHkuaHRtbCI+IDxjb2RlPnVwY19tZW1jcHk8L2NvZGU+IDwvYT4KLTxsaT48YSBocmVmPSJ1cGNfbWVtc2V0Lmh0bWwiPiA8Y29kZT51cGNfbWVtc2V0PC9jb2RlPiA8L2E+Ci08L3VsPgotCi08cD5Db2xsZWN0aXZlIFV0aWxpdGllcwotPHVsPgotPGxpPjxhIGhyZWY9InVwY19hbGxfYnJvYWRjYXN0Lmh0bWwiPiA8Y29kZT51cGNfYWxsX2Jyb2FkY2FzdDwvY29kZT4gPC9hPgotPGxpPjxhIGhyZWY9InVwY19hbGxfc2NhdHRlci5odG1sIj4gPGNvZGU+dXBjX2FsbF9zY2F0dGVyPC9jb2RlPiA8L2E+Ci08bGk+PGEgaHJlZj0idXBjX2FsbF9nYXRoZXIuaHRtbCI+IDxjb2RlPnVwY19hbGxfZ2F0aGVyPC9jb2RlPiA8L2E+Ci08bGk+PGEgaHJlZj0idXBjX2FsbF9nYXRoZXJfYWxsLmh0bWwiPiA8Y29kZT51cGNfYWxsX2dhdGhlcl9hbGw8L2NvZGU+IDwvYT4KLTxsaT48YSBocmVmPSJ1cGNfYWxsX2V4Y2hhbmdlLmh0bWwiPiA8Y29kZT51cGNfYWxsX2V4Y2hhbmdlPC9jb2RlPiA8L2E+Ci08bGk+PGEgaHJlZj0idXBjX2FsbF9wZXJtdXRlLmh0bWwiPiA8Y29kZT51cGNfYWxsX3Blcm11dGU8L2NvZGU+IDwvYT4KLQotPC91bD4KLTxwPgotU2VlIGFsc28gPGEgaHJlZj0idGVybXMuaHRtbCI+VGVybXMsIGRlZmluaXRpb25zLCBhbmQgc3ltYm9sczwvYT4KLTxwPgotPGEgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC9rZXl3b3Jkcy5odG1sIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC9rZXl3b3Jkcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTIxYWMzLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwva2V5d29yZHMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLTxoMj5VUEMgS2V5d29yZHMvSWRlbnRpZmllcnM8L2gyPgotPGNvZGU+Ci08dWw+ICAgIAotPGxpPjxhIGhyZWY9ImlkX01ZVEhSRUFELmh0bWwiPk1ZVEhSRUFEICAgPC9hPgotPGxpPjxhIGhyZWY9ImlkX3JlbGF4ZWQuaHRtbCI+cmVsYXhlZCAgICAgICA8L2E+Ci08bGk+PGEgaHJlZj0iaWRfc2hhcmVkLmh0bWwiPnNoYXJlZCAgICAgICAgPC9hPgotPGxpPjxhIGhyZWY9ImlkX3N0cmljdC5odG1sIj5zdHJpY3QgICAgICAgPC9hPgotPGxpPjxhIGhyZWY9ImlkX1RIUkVBRFMuaHRtbCI+VEhSRUFEUyAgICAgIDwvYT4KLTxsaT48YSBocmVmPSJpZF91cGNfYmFycmllci5odG1sIj51cGNfYmFycmllciAgICAgICAgIDwvYT4KLTxsaT48YSBocmVmPSJpZF91cGNfYmxvY2tzaXplb2YuaHRtbCI+dXBjX2Jsb2Nrc2l6ZW9mICAgICAgPC9hPgotPGxpPjxhIGhyZWY9ImlkX3VwY19lbGVtc2l6ZW9mLmh0bWwiPnVwY19lbGVtc2l6ZW9mICAgICAgPC9hPgotPGxpPjxhIGhyZWY9ImlkX3VwY19mZW5jZS5odG1sIj51cGNfZmVuY2UgICAgICAgICAgIDwvYT4KLTxsaT48YSBocmVmPSJpZF91cGNfbG9jYWxzaXplb2YuaHRtbCI+dXBjX2xvY2Fsc2l6ZW9mICAgPC9hPgotPGxpPjxhIGhyZWY9ImlkX1VQQ19NQVhfQkxPQ0tTSVpFLmh0bWwiPlVQQ19NQVhfQkxPQ0tTSVpFICAgPC9hPgotPGxpPjxhIGhyZWY9ImlkX3VwY19ub3RpZnkuaHRtbCI+dXBjX25vdGlmeSAgIDwvYT4KLTxsaT48YSBocmVmPSJpZF91cGNfd2FpdC5odG1sIj51cGNfd2FpdCAgIDwvYT4KLTxsaT48YSBocmVmPSJpZF91cGNfZm9yYWxsLmh0bWwiPnVwY19mb3JhbGwgICAgICAgIDwvYT4gICAgIAotPC91bD4KLTwvY29kZT4KLQotCi08cD4mbmJzcAotPHA+Jm5ic3AKLTxwPjxhIGhyZWY9InRlcm1zLmh0bWwiPlRlcm1zLCBkZWZpbml0aW9ucywgYW5kIHN5bWJvbHM8L2E+PGJyPgotPHA+PGEgaHJlZj0iaW5kZXguaHRtbCI+QmFjayB0byBpbmRleCBvZiBhbGwgVVBDIGZ1bmN0aW9uczwvYT4KZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvc2hhcmVkLmh0bWwgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3NoYXJlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNWZlMzhkLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvc2hhcmVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi08aDI+PGNvZGU+PGNvZGU+c2hhcmVkPC9jb2RlPjwvY29kZT4ga2V5d29yZDwvaDI+Ci0KLQotPGg0PkRlc2NyaXB0aW9uPC9oND4KLTxwPgotPGNvZGU+c2hhcmVkPC9jb2RlPiBpbmRpY2F0ZXMgYSB2YXJpYWJsZSBpcyBzaGFyZWQgYmV0d2VlbiB0aHJlYWRzLgotPHA+Ci08cHJlPgotc2hhcmVkIGludCBpOwotc2hhcmVkIFsyXSBpbnQgYVsyMDBdOwotc3RyaWN0IHNoYXJlZCBpbnQgaTsKLTwvcHJlPgotCi0KLTxwPiZuYnNwCi08cD4mbmJzcAotPHA+PGEgaHJlZj0idGVybXMuaHRtbCI+VGVybXMsIGRlZmluaXRpb25zLCBhbmQgc3ltYm9sczwvYT48YnI+Ci08cD48YSBocmVmPSJpbmRleC5odG1sIj5CYWNrIHRvIGluZGV4IG9mIGFsbCBVUEMgZnVuY3Rpb25zPC9hPgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC90ZXJtcy5odG1sIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC90ZXJtcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYmZhMjUwLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdGVybXMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAKLTxoNCBpZD0idG9wIj5VUEMgVGVybXMsIGRlZmluaXRpb25zIGFuZCBzeW1ib2xzPC9oND4KLTxwPgotRm9yIHRoZSBwdXJwb3NlIG9mIHRoZXNlIHNwZWNpZmljYXRpb25zIHRoZSBmb2xsb3dpbmcgZGVmaW5pdGlvbnMgYXBwbHkuCi0KLTxkbD4KLTxkdD48c3Ryb25nPjxzdHJvbmc+dGhyZWFkPC9zdHJvbmc+PC9zdHJvbmc+PC9kdD4KLTxkZD4KLWFuIGluc3RhbmNlIG9mIGV4ZWN1dGlvbiBpbml0aWF0ZWQgYnkgdGhlIGV4ZWN1dGlvbiBlbnZpcm9ubWVudCBhdCBwcm9ncmFtCi1zdGFydHVwLjwvZGQ+Ci0KLTxkdD48c3Ryb25nPiA8L3N0cm9uZz48L2R0PgotPGRkPiA8L2RkPgotCi08ZHQ+PHN0cm9uZz5vYmplY3Q8L3N0cm9uZz48L2R0PgotPGRkPgotcmVnaW9uIG9mIGRhdGEgc3RvcmFnZSBpbiB0aGUgZXhlY3V0aW9uIGVudmlyb25tZW50IHdoaWNoIGNhbiByZXByZXNlbnQKLXZhbHVlcy48L2RkPgotCi08ZHQ+PHN0cm9uZz5zaGFyZWQgb2JqZWN0IDwvc3Ryb25nPjwvZHQ+Ci08ZGQ+Ci1hbiBvYmplY3QgYWxsb2NhdGVkIHVzaW5nIGEgc2hhcmVkLXF1YWxpZmllZCBkZWNsYXJhdG9yIG9yIGJ5IGEgbGlicmFyeSBmdW5jdGlvbgotZGVmaW5lZCB0byBjcmVhdGUgc2hhcmVkIG9iamVjdHMuIAotPHA+Tm90ZTogCi1BbGwgdGhyZWFkcyBtYXkgYWNjZXNzIHNoYXJlZCBvYmplY3RzLjwvZGQ+Ci0KLTxkdD48c3Ryb25nPnByaXZhdGUgb2JqZWN0PC9zdHJvbmc+PC9kdD4KLTxkZD4KLWFueSBvYmplY3Qgd2hpY2ggaXMgbm90IGEgc2hhcmVkIG9iamVjdC4KLTxwPk5vdGU6IEVhY2ggdGhyZWFkIGRlY2xhcmVzIGFuZCBjcmVhdGVzIGl0cyBvd24gcHJpdmF0ZSBvYmplY3RzIHdoaWNoIG5vCi1vdGhlciB0aHJlYWQgY2FuIGFjY2Vzcy48L2RkPgotPGR0PjxzdHJvbmc+IHNoYXJlZCBhcnJheTwvc3Ryb25nPjwvZHQ+Ci08ZGQ+Ci1hbiBhcnJheSB3aXRoIGVsZW1lbnRzIHRoYXQgaGF2ZSBzaGFyZWQgcXVhbGlmaWVkIHR5cGUuCi08L2RkPgotPGR0PjxzdHJvbmc+YWZmaW5pdHk8L3N0cm9uZz48L2R0PgotPGRkPgotbG9naWNhbCBhc3NvY2lhdGlvbiBiZXR3ZWVuIHNoYXJlZCBvYmplY3RzIGFuZCB0aHJlYWRzLiBFYWNoIGVsZW1lbnQgb2YgZGF0YQotc3RvcmFnZSB0aGF0IGNvbnRhaW5zIHNoYXJlZCBvYmplY3RzIGhhcyBhZmZpbml0eSB0byBleGFjdGx5IG9uZSB0aHJlYWQuCi08L2RkPgotPGR0PjxzdHJvbmc+cG9pbnRlci10by1zaGFyZWQ8L3N0cm9uZz48L2R0PgotPGRkPgotYSBwb2ludGVyIHdob3NlIHJlZmVyZW5jZWQgdHlwZSBpcyBzaGFyZWQtcXVhbGlmaWVkLgotPC9kZD4KLTxkdD48c3Ryb25nPiBwb2ludGVyLXRvLWxvY2FsPC9zdHJvbmc+PC9kdD4KLTxkZD4KLWEgcG9pbnRlciB3aG9zZSByZWZlcmVuY2VkIHR5cGUgaXMgbm90IHNoYXJlZC1xdWFsaWZpZWQuCi08L2RkPgotPGR0PjxzdHJvbmc+YWNjZXNzPC9zdHJvbmc+PC9kdD4KLTxkZD4KLSZsdDtleGVjdXRpb24tdGltZSBhY3Rpb24mZ3Q7IHRvIHJlYWQgb3IgbW9kaWZ5IHRoZSB2YWx1ZSBvZiBhbiBvYmplY3QgYnkgYSB0aHJlYWQuCi08cD5UaGUgZmlsZSBzY29wZSBkZWNsYXJhdGlvbiBpbnQgeTsgY3JlYXRlcyBhIHNlcGFyYXRlIG9iamVjdCBmb3IgZWFjaCB0aHJlYWQgdG8gYWNjZXNzLgotPC9kZD4KLTxkdD48c3Ryb25nPnNoYXJlZCBhY2Nlc3M8L3N0cm9uZz48L2R0PgotPGRkPgotYW4gYWNjZXNzIHVzaW5nIGFuIGV4cHJlc3Npb24gd2hvc2UgdHlwZSBpcyBzaGFyZWQtcXVhbGlmaWVkLjwvZGQ+Ci08ZHQ+PHN0cm9uZz4gc3RyaWN0IHNoYXJlZCByZWFkPC9zdHJvbmc+PC9kdD4KLTxkZD4KLWEgc2hhcmVkIHJlYWQgYWNjZXNzIHdoaWNoIGlzIGRldGVybWluZWQgdG8gYmUgc3RyaWN0LjwvZGQ+Ci08ZHQ+PHN0cm9uZz5zdHJpY3Qgc2hhcmVkIHdyaXRlPC9zdHJvbmc+PC9kdD4KLTxkZD4KLWEgc2hhcmVkIG1vZGlmeSBhY2Nlc3Mgd2hpY2ggaXMgZGV0ZXJtaW5lZCB0byBiZSBzdHJpY3QgPC9kZD4KLTxkdD48c3Ryb25nPnJlbGF4ZWQgc2hhcmVkIHJlYWQ8L3N0cm9uZz48L2R0PgotPGRkPgotYSBzaGFyZWQgcmVhZCBhY2Nlc3Mgd2hpY2ggaXMgZGV0ZXJtaW5lZCB0byBiZSByZWxheGVkPC9kZD4KLTxkdD48c3Ryb25nPnJlbGF4ZWQgc2hhcmVkIHdyaXRlPC9zdHJvbmc+PC9kdD4KLTxkZD4KLWEgc2hhcmVkIG1vZGlmeSBhY2Nlc3Mgd2hpY2ggaXMgZGV0ZXJtaW5lZCB0byBiZSByZWxheGVkIDwvZGQ+Ci08ZHQ+PHN0cm9uZz5sb2NhbCBhY2Nlc3M8L3N0cm9uZz48L2R0PgotPGRkPgotYW4gYWNjZXNzIHVzaW5nIGFuIGV4cHJlc3Npb24gd2hvc2UgdHlwZSBpcyBub3Qgc2hhcmVkLXF1YWxpZmllZC4KLTwvZGQ+Ci08ZHQ+PHN0cm9uZz5jb2xsZWN0aXZlPC9zdHJvbmc+PC9kdD4KLTxkZD4KLWEgY29uc3RyYWludCBwbGFjZWQgb24gc29tZSBsYW5ndWFnZSBvcGVyYXRpb25zIHdoaWNoIHJlcXVpcmVzIGV2YWx1YXRpb24KLW9mIHN1Y2ggb3BlcmF0aW9ucyB0byBiZSBtYXRjaGVkIGFjcm9zcyBhbGwgdGhyZWFkcy4gVGhlIGJlaGF2aW9yIG9mIGNvbGxlY3RpdmUKLW9wZXJhdGlvbnMgaXMgdW5kZWZpbmVkIHVubGVzcyBhbGwgdGhyZWFkcyBleGVjdXRlIHRoZSBzYW1lIHNlcXVlbmNlIG9mCi1jb2xsZWN0aXZlIG9wZXJhdGlvbnMuPC9kZD4KLTxkdD48c3Ryb25nPnNpbmdsZS12YWx1ZWQ8L3N0cm9uZz48L2R0PgotPGRkPgotYW4gb3BlcmFuZCB0byBhIGNvbGxlY3RpdmUgb3BlcmF0aW9uLCB3aGljaCBoYXMgdGhlIHNhbWUgdmFsdWUgb24gZXZlcnkKLXRocmVhZC4gVGhlIGJlaGF2aW9yIG9mIHRoZSBvcGVyYXRpb24gaXMgb3RoZXJ3aXNlIHVuZGVmaW5lZC48L2RkPgotPGR0PjxzdHJvbmc+cGhhc2U8L3N0cm9uZz48L2R0PgotPGRkPgotYW4gdW5zaWduZWQgaW50ZWdlciB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggYSBwb2ludGVyLXRvLXNoYXJlZCB3aGljaCBpbmRpY2F0ZXMKLXRoZSBlbGVtZW50LW9mZnNldCB3aXRoaW4gYW4gYWZmaW5pdHkgYmxvY2s7IHVzZWQgaW4gcG9pbnRlci10by1zaGFyZWQKLWFyaXRobWV0aWMgdG8gZGV0ZXJtaW5lIGFmZmluaXR5IGJvdW5kYXJpZXM8L2RkPgotPC9kbD4KLTxwPiZuYnNwCi08cD4mbmJzcAotPHA+PGEgaHJlZj0iI3RvcCI+QmFjayB0byAgdG9wPC9hPgotPHA+PGEgaHJlZj0iaW5kZXguaHRtbCI+QmFjayB0byBpbmRleCBvZiBhbGwgVVBDIGZ1bmN0aW9uczwvYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19hZGRyZmllbGQuaHRtbCBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX2FkZHJmaWVsZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNDEzM2U2OC4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19hZGRyZmllbGQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLTxoMj5UaGUgPGNvZGU+dXBjX2FkZHJmaWVsZDwvY29kZT4gZnVuY3Rpb248L2gyPgotCi08aDQ+U3lub3BzaXM8L2g0PgotPHByZT4gICAgCi0gICAgI2luY2x1ZGUgJmx0O3VwYy5oJmd0OwotICAgIHNpemVfdCB1cGNfYWRkcmZpZWxkKHNoYXJlZCB2b2lkICpwdHIpOyAgICAgICAgICAgICAgICAgCi08L3ByZT4KLTxwPgotPGg0PkRlc2NyaXB0aW9uPC9oND4KLTxwPgotVGhlIDxjb2RlPnVwY19hZGRyZmllbGQgPC9jb2RlPiAgZnVuY3Rpb24gcmV0dXJucyBhbiBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkIHZhbHVlIHJlZmxlY3RpbmcKLXRoZSA8cT5sb2NhbCBhZGRyZXNzPC9xPm9mIHRoZSBvYmplY3QgcG9pbnRlZCB0byBieSB0aGUgcG9pbnRlci10by1zaGFyZWQKLWFyZ3VtZW50LgotCi0KLTxwPiZuYnNwCi08cD4mbmJzcAotPHA+PGEgaHJlZj0idGVybXMuaHRtbCI+VGVybXMsIGRlZmluaXRpb25zLCBhbmQgc3ltYm9sczwvYT48YnI+Ci08cD48YSBocmVmPSJpbmRleC5odG1sIj5CYWNrIHRvIGluZGV4IG9mIGFsbCBVUEMgZnVuY3Rpb25zPC9hPgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfYWZmaW5pdHlzaXplLmh0bWwgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19hZmZpbml0eXNpemUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGU2YjgxZi4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19hZmZpbml0eXNpemUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLTxoMj5UaGUgPGNvZGU+dXBjX2FmZmluaXR5c2l6ZTwvY29kZT4gZnVuY3Rpb248L2gyPgotCi08aDQ+U3lub3BzaXM8L2g0PgotPHByZT4gICAgCi0gICAgI2luY2x1ZGUgJmx0O3VwYy5oJmd0OwotICAgIHNpemVfdCB1cGNfYWZmaW5pdHlzaXplKHNpemVfdCB0b3RhbHNpemUsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBuYnl0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHRocmVhZGlkKTsgICAgICAgICAgICAgICAgCi08L3ByZT4KLTxwPgotPGg0PkRlc2NyaXB0aW9uPC9oND4KLTxwPgotVGhlIDxjb2RlPnVwY19hZmZpbml0eXNpemUgPC9jb2RlPiAgZnVuY3Rpb24gaXMgYSBjb252ZW5pZW5jZSBmdW5jdGlvbiB3aGljaCBjYWxjdWxhdGVzIHRoZSBleGFjdCBzaXplCi1vZiB0aGUgbG9jYWwgcG9ydGlvbiBvZiB0aGUgZGF0YSBpbiBhIHNoYXJlZCBvYmplY3Qgd2l0aCBhZmZpbml0eSB0byA8Y29kZT50aHJlYWRpZDwvY29kZT4uCi08cD5JbiB0aGUgY2FzZSBvZiBhIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBzaGFyZWQgb2JqZWN0LCB0aGUgPGNvZGU+dG90YWxzaXplPC9jb2RlPiBhcmd1bWVudAotc2hhbGwgYmUgPGNvZGU+bmJ5dGVzKm5ibG9ja3M8L2NvZGU+IGFuZCB0aGUgPGNvZGU+bmJ5dGVzPC9jb2RlPiBhcmd1bWVudCBzaGFsbCBiZSA8Y29kZT5uYnl0ZXM8L2NvZGU+LAotd2hlcmUgPGNvZGU+bmJsb2NrczwvY29kZT4gYW5kIDxjb2RlPm5ieXRlczwvY29kZT4gYXJlIGV4YWN0bHkgYXMgcGFzc2VkIHRvIDxjb2RlPnVwY19nbG9iYWxfYWxsb2M8L2NvZGU+IG9yCi08Y29kZT51cGNfYWxsX2FsbG9jPC9jb2RlPiB3aGVuIHRoZSBvYmplY3Qgd2FzIGFsbG9jYXRlZC4KLTxwPkluIHRoZSBjYXNlIG9mIGEgc3RhdGljYWxseSBhbGxvY2F0ZWQgc2hhcmVkIG9iamVjdCB3aXRoIGRlY2xhcmF0aW9uOgotPHByZT4KLSAgIHNoYXJlZCBbYl0gdCBkW3NdOwotICAgPC9wcmU+Ci10aGUgPGNvZGU+dG90YWxzaXplPC9jb2RlPiBhcmd1bWVudCBzaGFsbCBiZSA8Y29kZT5zICogc2l6ZW9mKHQpPC9jb2RlPiBhbmQgdGhlIDxjb2RlPm5ieXRlczwvY29kZT4gYXJndW1lbnQKLXNoYWxsIGJlIDxjb2RlPmIgKiBzaXplb2YodCk8L2NvZGU+LiBJZiB0aGUgYmxvY2sgc2l6ZSBpcyBpbmRlZmluaXRlLCA8Y29kZT5uYnl0ZXM8L2NvZGU+IHNoYWxsIGJlIDAuCi08cD48Y29kZT50aHJlYWRpZDwvY29kZT4gc2hhbGwgYmUgYSB2YWx1ZSBpbiA8Y29kZT4wLi4oVEhSRUFEUy0xKTwvY29kZT4uCi0KLQotPHA+Jm5ic3AKLTxwPiZuYnNwCi08cD48YSBocmVmPSJ0ZXJtcy5odG1sIj5UZXJtcywgZGVmaW5pdGlvbnMsIGFuZCBzeW1ib2xzPC9hPjxicj4KLTxwPjxhIGhyZWY9ImluZGV4Lmh0bWwiPkJhY2sgdG8gaW5kZXggb2YgYWxsIFVQQyBmdW5jdGlvbnM8L2E+CmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19hbGxfYWxsb2MuaHRtbCBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX2FsbF9hbGxvYy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0Y2IwOTQzLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX2FsbF9hbGxvYy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotPGgyID5UaGUgPGNvZGU+dXBjX2FsbF9hbGxvYzwvY29kZT4gICAgIDwvaDI+Ci0KLTxoND5TeW5vcHNpczwvaDQ+Ci08cHJlPiAKLSAgICAjaW5jbHVkZSAmbHQ7dXBjLmgmZ3Q7Ci0gICAgc2hhcmVkIHZvaWQgKnVwY19hbGxfYWxsb2Moc2l6ZV90IG5ibG9ja3MsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBuYnl0ZXMpOyAgIAotPC9wcmU+Ci08cD4KLTxoND5EZXNjcmlwdGlvbjwvaDQ+Ci0KLTxwPgotVGhlIDxjb2RlPnVwY19hbGxfYWxsb2MgICA8L2NvZGU+IGZ1bmN0aW9uIGFsbG9jYXRlcyBzaGFyZWQgc3BhY2UgY29tcGF0aWJsZSB3aXRoIHRoZSBmb2xsb3dpbmcKLWRlY2xhcmF0aW9uOgotPHA+PGNvZGU+Ci1zaGFyZWQgW25ieXRlc10gY2hhcltuYmxvY2tzICogbmJ5dGVzXS4KLTwvY29kZT48L3A+Ci08cD4KLVRoZSA8Y29kZT51cGNfYWxsX2FsbG9jICAgPC9jb2RlPiBmdW5jdGlvbiByZXR1cm5zIHRoZSBzYW1lIHBvaW50ZXIgdmFsdWUgb24gYWxsIHRocmVhZHMuCi1JZiBuYmxvY2tzKm5ieXRlcyBpcyB6ZXJvLCB0aGUgcmVzdWx0IGlzIGEgbnVsbCBwb2ludGVyLXRvLXNoYXJlZC4KLTxwPlRoZSBkeW5hbWljIGxpZmV0aW1lIG9mIGFuIGFsbG9jYXRlZCBvYmplY3QgZXh0ZW5kcyBmcm9tIHRoZSB0aW1lIGFueSB0aHJlYWQKLWNvbXBsZXRlcyB0aGUgY2FsbCB0byA8Y29kZT51cGNfYWxsX2FsbG9jICAgPC9jb2RlPiB1bnRpbCBhbnkgdGhyZWFkIGhhcyBkZWFsbG9jYXRlZCB0aGUKLW9iamVjdC4KLQotPHA+Jm5ic3AKLTxwPiZuYnNwCi08cD48YSBocmVmPSJ0ZXJtcy5odG1sIj5UZXJtcywgZGVmaW5pdGlvbnMsIGFuZCBzeW1ib2xzPC9hPjxicj4KLTxwPjxhIGhyZWY9ImluZGV4Lmh0bWwiPkJhY2sgdG8gaW5kZXggb2YgYWxsIFVQQyBmdW5jdGlvbnM8L2E+CmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19hbGxfYnJvYWRjYXN0Lmh0bWwgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19hbGxfYnJvYWRjYXN0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzNDkwM2MuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfYWxsX2Jyb2FkY2FzdC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotPGgyPlRoZSA8Y29kZT51cGNfYWxsX2Jyb2FkY2FzdDwvY29kZT4gZnVuY3Rpb248L2gyPgotPGg0PlB1cnBvc2U8L2g0PgotPHA+Q29waWVzIGEgYmxvY2sgb2YgbWVtb3J5Ci08aDQ+U3lub3BzaXM8L2g0PgotPHByZT4gICAgCi0gICAgI2luY2x1ZGUgJmx0O3VwYy5oJmd0OwotICAgICNpbmNsdWRlICZsdDt1cGNfY29sbGVjdGl2ZS5oJmd0OwotICAgIHZvaWQgdXBjX2FsbF9icm9hZGNhc3Qoc2hhcmVkIHZvaWQgKiByZXN0cmljdCBkc3QsIHNoYXJlZCBjb25zdCB2b2lkICogcmVzdHJpY3Qgc3JjLCBzaXplX3QgbmJ5dGVzLCB1cGNfZmxhZ190IGZsYWdzKTsgICAgICAgICAgICAgCi08L3ByZT4KLTxwPgotPGg0PkRlc2NyaXB0aW9uPC9oND4KLTxwPgotVGhlIDxjb2RlPnVwY19hbGxfYnJvYWRjYXN0IDwvY29kZT4gIGZ1bmN0aW9uICAKLWNvcGllcyBhIGJsb2NrIG9mIG1lbW9yeSB3aXRoIGFmZmluaXR5IHRvCi1hIHNpbmdsZSB0aHJlYWQgdG8gYSBibG9jayBvZiBzaGFyZWQgbWVtb3J5IG9uIGVhY2ggdGhyZWFkLiBUaGUgbnVtYmVyIG9mCi1ieXRlcyBpbiBlYWNoIGJsb2NrIGlzIDxjb2RlPm5ieXRlczwvY29kZT4uCi08cD48Y29kZT5uYnl0ZXM8L2NvZGU+IG11c3QgYmUgc3RyaWN0bHkgZ3JlYXRlciB0aGFuIDAuCi08cD48Y29kZT51cGNfYWxsX2Jyb2FkY2FzdCA8L2NvZGU+IGZ1bmN0aW9uIHRyZWF0cyB0aGUgPGNvZGU+c3JjPC9jb2RlPiBwb2ludGVyIGFzIGlmIGl0IHBvaW50ZWQgdG8gYQotc2hhcmVkIG1lbW9yeSBhcmVhIHdpdGggdGhlIHR5cGU6Ci08cHJlPgotICAgIHNoYXJlZCBbXSBjaGFyW25ieXRlc10KLSAgICA8L3ByZT4KLTxwPlRoZSBlZmZlY3QgaXMgZXF1aXZhbGVudCB0byBjb3B5aW5nIHRoZSBlbnRpcmUgYXJyYXkgcG9pbnRlZCB0byBieSA8Y29kZT5zcmM8L2NvZGU+IHRvIGVhY2gKLWJsb2NrIG9mIDxjb2RlPm5ieXRlczwvY29kZT4gYnl0ZXMgb2YgYSBzaGFyZWQgYXJyYXkgPGNvZGU+ZHN0PC9jb2RlPiB3aXRoIHRoZSB0eXBlOgotPHByZT4KLSAgICBzaGFyZWQgW25ieXRlc10gY2hhcltuYnl0ZXMgKiBUSFJFQURTXQotPC9wcmU+Ci08cD5UaGUgdGFyZ2V0IG9mIHRoZSA8Y29kZT5kc3Q8L2NvZGU+IHBvaW50ZXIgbXVzdCBoYXZlIGFmZmluaXR5IHRvIHRocmVhZCAwLgotPHA+VGhlIDxjb2RlPmRzdDwvY29kZT4gcG9pbnRlciBpcyB0cmVhdGVkIGFzIGlmIGl0IGhhcyBwaGFzZSAwLgotCi08dWw+Ci08bGk+RVhBTVBMRSAxIHNob3dzIHVwY19hbGxfYnJvYWRjYXN0Ci0KLTxwcmU+Ci0jaW5jbHVkZSAmbHQ7dXBjLmgmZ3Q7Ci0jaW5jbHVkZSAmbHQ7dXBjX2NvbGxlY3RpdmUuaCZndDsKLXNoYXJlZCBpbnQgQVtUSFJFQURTXTsKLXNoYXJlZCBpbnQgQltUSFJFQURTXTsKLS8vIEluaXRpYWxpemUgQS4KLXVwY19iYXJyaWVyOwotdXBjX2FsbF9icm9hZGNhc3QoIEIsICZBWzFdLCBzaXplb2YoaW50KSwKLSAgICAgICAgICAgICAgICAgICBVUENfSU5fTk9TWU5DIHwgVVBDX09VVF9OT1NZTkMgKTsKLXVwY19iYXJyaWVyOwotPC9wcmU+Ci0KLTxsaT5FWEFNUExFIDI6Ci0KLTxwcmU+Ci0jaW5jbHVkZSAmbHQ7dXBjLmgmZ3Q7Ci0jaW5jbHVkZSAmbHQ7dXBjX2NvbGxlY3RpdmUuaCZndDsKLSNkZWZpbmUgTkVMRU1TIDEwCi1zaGFyZWQgW10gaW50IEFbTkVMRU1TXTsKLXNoYXJlZCBbTkVMRU1TXSBpbnQgQltORUxFTVMqVEhSRUFEU107Ci0vLyBJbml0aWFsaXplIEEuCi11cGNfYWxsX2Jyb2FkY2FzdCggQiwgQSwgc2l6ZW9mKGludCkqTkVMRU1TLAotICAgICAgICAgICAgICAgICAgIFVQQ19JTl9BTExTWU5DIHwgVVBDX09VVF9BTExTWU5DICk7Ci08L3ByZT4KLTxsaT5FWEFNUExFIDMgc2hvd3MgPGNvZGU+KEFbM10sQVs0XSk8L2NvZGU+IGlzIGJyb2FkY2FzdCB0byA8Y29kZT4oQlswXSxCWzFdKSwgKEJbMTBdLEJbMTFdKSwKLShCWzIwXSxCWzIxXSksIC4uLiwgKEJbTkVMRU1TKihUSFJFQURTLTEpXSxCW05FTEVNUyooVEhSRUFEUy0xKSsxXSkuPC9jb2RlPgotCi08cHJlPgotI2luY2x1ZGUgJmx0O3VwYy5oJmd0OwotI2luY2x1ZGUgJmx0O3VwY19jb2xsZWN0aXZlLmgmZ3Q7Ci0jZGVmaW5lIE5FTEVNUyAxMAotc2hhcmVkIFtORUxFTVNdIGludCBBW05FTEVNUypUSFJFQURTXTsKLXNoYXJlZCBbTkVMRU1TXSBpbnQgQltORUxFTVMqVEhSRUFEU107Ci0vLyBJbml0aWFsaXplIEEuCi11cGNfYmFycmllcjsKLXVwY19hbGxfYnJvYWRjYXN0KCBCLCAmQVszXSwgc2l6ZW9mKGludCkqMiwKLSAgICAgICAgICAgICAgICAgICBVUENfSU5fTk9TWU5DIHwgVVBDX09VVF9OT1NZTkMgKTsKLXVwY19iYXJyaWVyOwotPC9wcmU+Ci08L3VsPgotPHA+Jm5ic3AKLTxwPiZuYnNwCi08cD48YSBocmVmPSJ0ZXJtcy5odG1sIj5UZXJtcywgZGVmaW5pdGlvbnMsIGFuZCBzeW1ib2xzPC9hPjxicj4KLTxwPjxhIGhyZWY9ImluZGV4Lmh0bWwiPkJhY2sgdG8gaW5kZXggb2YgYWxsIFVQQyBmdW5jdGlvbnM8L2E+CmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19hbGxfZXhjaGFuZ2UuaHRtbCBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX2FsbF9leGNoYW5nZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYzUwMzM4Li4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX2FsbF9leGNoYW5nZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotPGgyPlRoZSA8Y29kZT51cGNfYWxsX2V4Y2hhbmdlPC9jb2RlPiBmdW5jdGlvbiAgICAgPC9oMj4KLQotPGg0PlN5bm9wc2lzPC9oND4KLTxwcmU+IAotICAgICNpbmNsdWRlICZsdDt1cGMuaCZndDsKLSAgICAjaW5jbHVkZSAmbHQ7dXBjX2NvbGxlY3RpdmUuaCZndDsKLSAgICB2b2lkIHVwY19hbGxfZXhjaGFuZ2Uoc2hhcmVkIHZvaWQgKiByZXN0cmljdCBkc3QsIAotICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZWQgY29uc3Qgdm9pZCAqIHJlc3RyaWN0IHNyYywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBuYnl0ZXMsIHVwY19mbGFnX3QgZmxhZ3MpOyAgCi0gICAgPC9wcmU+Ci08cD4KLTxoND5EZXNjcmlwdGlvbjwvaDQ+Ci0KLTxwPgotVGhlIDxjb2RlPnVwY19hbGxfZXhjaGFuZ2UgICA8L2NvZGU+IGZ1bmN0aW9uICAgY29waWVzIHRoZSBpdGggYmxvY2sgb2YgbWVtb3J5IGZyb20gYSBzaGFyZWQKLW1lbW9yeSBhcmVhIHRoYXQgaGFzIGFmZmluaXR5IHRvIHRocmVhZCBqIHRvIHRoZSBqdGggYmxvY2sgb2YgYSBzaGFyZWQgbWVtb3J5Ci1hcmVhIHRoYXQgaGFzIGFmZmluaXR5IHRvIHRocmVhZCBpLiBUaGUgbnVtYmVyIG9mIGJ5dGVzIGluIGVhY2ggYmxvY2sgaXMKLTxjb2RlPm5ieXRlczwvY29kZT4uCi08cD48Y29kZT5uYnl0ZXM8L2NvZGU+IG11c3QgYmUgc3RyaWN0bHkgZ3JlYXRlciB0aGFuIDAuCi08cD4KLTxwPlRoZSA8Y29kZT51cGNfYWxsX2V4Y2hhbmdlICAgPC9jb2RlPiBmdW5jdGlvbiB0cmVhdHMgdGhlIDxjb2RlPnNyYzwvY29kZT4gcG9pbnRlciBhbmQgdGhlIDxjb2RlPmRzdDwvY29kZT4gcG9pbnRlcgotYXMgaWYgZWFjaCBwb2ludGVkIHRvIGEgc2hhcmVkIG1lbW9yeSBhcmVhIG9mIDxjb2RlPm5ieXRlcyAqIFRIUkVBRFM8L2NvZGU+AyBieXRlcyBvbiBlYWNoCi10aHJlYWQgYW5kIHRoZXJlZm9yZSBoYWQgdHlwZToKLTxwcmU+Ci0gICAgc2hhcmVkIFtuYnl0ZXMgKiBUSFJFQURTXSBjaGFyW25ieXRlcyAqIFRIUkVBRFMgKiBUSFJFQURTXQotPC9wcmU+Ci08cD5UaGUgdGFyZ2V0cyBvZiB0aGUgPGNvZGU+c3JjPC9jb2RlPiBhbmQgPGNvZGU+ZHN0PC9jb2RlPiBwb2ludGVycyBtdXN0IGhhdmUgYWZmaW5pdHkgdG8gdGhyZWFkIDAuCi08cD5UaGUgPGNvZGU+c3JjPC9jb2RlPiBhbmQgPGNvZGU+ZHN0PC9jb2RlPiBwb2ludGVycyBhcmUgdHJlYXRlZCBhcyBpZiB0aGV5IGhhdmUgcGhhc2UgMC4KLTxwPkZvciBlYWNoIHBhaXIgb2YgdGhyZWFkcyBpIGFuZCBqLCB0aGUgZWZmZWN0IGlzIGVxdWl2YWxlbnQgdG8gY29weWluZyB0aGUgaXRoCi1ibG9jayBvZiA8Y29kZT5uYnl0ZXM8L2NvZGU+IGJ5dGVzIHRoYXQgaGFzIGFmZmluaXR5IHRvIHRocmVhZCBqIHBvaW50ZWQgdG8gYnkgPGNvZGU+c3JjPC9jb2RlPiB0byB0aGUKLWp0aCBibG9jayBvZiA8Y29kZT5uYnl0ZXM8L2NvZGU+IGJ5dGVzIHRoYXQgaGFzIGFmZmluaXR5IHRvIHRocmVhZCBpIHBvaW50ZWQgdG8gYnkgPGNvZGU+ZHN0PC9jb2RlPi4KLTx1bD4KLTxsaT5FWEFNUExFIDEgPGNvZGU+dXBjX2FsbF9leGNoYW5nZSAgIDwvY29kZT4gZm9yIHRoZSBzdGF0aWMgVEhSRUFEUyB0cmFuc2xhdGlvbiBlbnZpcm9ubWVudC4KLTxwcmU+Ci0jaW5jbHVkZSAmbHQ7dXBjLmgmZ3Q7Ci0jaW5jbHVkZSAmbHQ7dXBjX2NvbGxlY3RpdmUuaCZndDsKLSNkZWZpbmUgTkVMRU1TIDEwCi1zaGFyZWQgW05FTEVNUypUSFJFQURTXSBpbnQgQVtUSFJFQURTXVtORUxFTVMqVEhSRUFEU107Ci1zaGFyZWQgW05FTEVNUypUSFJFQURTXSBpbnQgQltUSFJFQURTXVtORUxFTVMqVEhSRUFEU107Ci0vLyBJbml0aWFsaXplIEEuCi11cGNfYmFycmllcjsKLXVwY19hbGxfZXhjaGFuZ2UoIEIsIEEsIE5FTEVNUypzaXplb2YoaW50KSwKLVVQQ19JTl9OT1NZTkMgfCBVUENfT1VUX05PU1lOQyApOwotdXBjX2JhcnJpZXI7Ci08L3ByZT4KLQotPGxpPkVYQU1QTEUgMiA8Y29kZT51cGNfYWxsX2V4Y2hhbmdlICAgPC9jb2RlPiBmb3IgdGhlIGR5bmFtaWMgVEhSRUFEUyB0cmFuc2xhdGlvbiBlbnZpcm9ubWVudC4KLTxwcmU+Ci0jaW5jbHVkZSAmbHQ7dXBjLmgmZ3Q7Ci0jaW5jbHVkZSAmbHQ7dXBjX2NvbGxlY3RpdmUuaCZndDsKLSNkZWZpbmUgTkVMRU1TIDEwCi1zaGFyZWQgaW50ICpBZGF0YSwgKkJkYXRhOwotc2hhcmVkIFtdIGludCAqbXlBLCAqbXlCOwotaW50IGk7Ci0KLUFkYXRhID0gdXBjX2FsbF9hbGxvYyhUSFJFQURTKlRIUkVBRFMsIE5FTEVNUypzaXplb2YoaW50KSk7Ci1teUEgPSAoc2hhcmVkIFtdIGludCAqKSZBZGF0YVtNWVRIUkVBRF07Ci1CZGF0YSA9IHVwY19hbGxfYWxsb2MoVEhSRUFEUypUSFJFQURTLCBORUxFTVMqc2l6ZW9mKGludCkpOwotbXlCID0gKHNoYXJlZCBbXSBpbnQgKikmQmRhdGFbTVlUSFJFQURdOwotLy8gQWRhdGEgYW5kIEJkYXRhIGNvbnRhaW4gVEhSRUFEUypUSFJFQURTKk5FTEVNUyBlbGVtZW50cy4KLS8vIG15QSBhbmQgbXlCIGFyZSBNWVRIUkVBRCdzIHJvd3Mgb2YgQWRhdGEgYW5kIEJkYXRhLCByZXNwLgotLy8gSW5pdGlhbGl6ZSBNWVRIUkVBRCdzIHJvdyBvZiBBLiBGb3IgZXhhbXBsZSwKLWZvciAoaT0wOyBpJmx0O05FTEVNUypUSFJFQURTOyBpKyspCi1teUFbaV0gPSBNWVRIUkVBRCoxMCArIGk7Ci11cGNfYWxsX2V4Y2hhbmdlKCBCZGF0YSwgQWRhdGEsIE5FTEVNUypzaXplb2YoaW50KSwKLSAgICAgICAgICAgICAgICAgIFVQQ19JTl9BTExTWU5DIHwgVVBDX09VVF9BTExTWU5DICk7Ci08L3ByZT4KLTwvdWw+Ci08cD4mbmJzcAotPHA+Jm5ic3AKLTxwPjxhIGhyZWY9InRlcm1zLmh0bWwiPlRlcm1zLCBkZWZpbml0aW9ucywgYW5kIHN5bWJvbHM8L2E+PGJyPgotPHA+PGEgaHJlZj0iaW5kZXguaHRtbCI+QmFjayB0byBpbmRleCBvZiBhbGwgVVBDIGZ1bmN0aW9uczwvYT4KZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX2FsbF9nYXRoZXIuaHRtbCBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX2FsbF9nYXRoZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTVlNTVjYS4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19hbGxfZ2F0aGVyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi08aDI+VGhlIDxjb2RlPnVwY19hbGxfZ2F0aGVyPC9jb2RlPiBmdW5jdGlvbjwvaDI+Ci0KLTxoND5TeW5vcHNpczwvaDQ+Ci08cHJlPiAgICAKLSAgICAjaW5jbHVkZSAmbHQ7dXBjLmgmZ3Q7Ci0gICAgI2luY2x1ZGUgJmx0O3VwY19jb2xsZWN0aXZlLmgmZ3Q7Ci0gICAgdm9pZCB1cGNfYWxsX2dhdGhlcihzaGFyZWQgdm9pZCAqIHJlc3RyaWN0IGRzdCwgCi0gICAgICAgICAgICAgICAgICAgICAgICBzaGFyZWQgY29uc3Qgdm9pZCAqIHJlc3RyaWN0IHNyYywgCi0gICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbmJ5dGVzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIHVwY19mbGFnX3QgZmxhZ3MpOyAKLTwvcHJlPgotPHA+Ci08aDQ+RGVzY3JpcHRpb248L2g0PgotPHA+Ci1UaGUgPGNvZGU+dXBjX2FsbF9nYXRoZXIgPC9jb2RlPiAgZnVuY3Rpb24gCi1jb3BpZXMgYSBibG9jayBvZiBzaGFyZWQgbWVtb3J5IHRoYXQgaGFzCi1hZmZpbml0eSB0byB0aGUgaXRoIHRocmVhZCB0byB0aGUgaXRoIGJsb2NrIG9mIGEgc2hhcmVkIG1lbW9yeSBhcmVhIHRoYXQgaGFzCi1hZmZpbml0eSB0byBhIHNpbmdsZSB0aHJlYWQuIFRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gZWFjaCBibG9jayBpcyA8Y29kZT5uYnl0ZXM8L2NvZGU+LgotPHA+PGNvZGU+bmJ5dGVzPC9jb2RlPiBtdXN0IGJlIHN0cmljdGx5IGdyZWF0ZXIgdGhhbiAwLgotPHA+VGhlIHVwYyBhbGwgZ2F0aGVyIGZ1bmN0aW9uIHRyZWF0cyB0aGUgPGNvZGU+c3JjPC9jb2RlPiBwb2ludGVyIGFzIGlmIGl0IHBvaW50ZWQgdG8gYQotc2hhcmVkIG1lbW9yeSBhcmVhIG9mIDxjb2RlPm5ieXRlczwvY29kZT4gYnl0ZXMgb24gZWFjaCB0aHJlYWQgYW5kIHRoZXJlZm9yZSBoYWQgdHlwZToKLTxwcmU+Ci0gICAgc2hhcmVkIFtuYnl0ZXNdIGNoYXJbbmJ5dGVzICogVEhSRUFEU10KLTwvcHJlPgotPHA+YW5kIGl0IHRyZWF0cyB0aGUgPGNvZGU+ZHN0PC9jb2RlPiBwb2ludGVyIGFzIGlmIGl0IHBvaW50ZWQgdG8gYSBzaGFyZWQgbWVtb3J5IGFyZWEgd2l0aAotdGhlIHR5cGU6Ci08cHJlPgotICAgIHNoYXJlZCBbXSBjaGFyW25ieXRlcyAqIFRIUkVBRFNdCi0gICAgPC9wcmU+Ci08cD5UaGUgdGFyZ2V0IG9mIHRoZSA8Y29kZT5zcmM8L2NvZGU+IHBvaW50ZXIgbXVzdCBoYXZlIGFmZmluaXR5IHRvIHRocmVhZCAwLgotPHA+VGhlIDxjb2RlPnNyYzwvY29kZT4gcG9pbnRlciBpcyB0cmVhdGVkIGFzIGlmIGl0IGhhcyBwaGFzZSAwLgotPHA+Rm9yIGVhY2ggdGhyZWFkIGksIHRoZSBlZmZlY3QgaXMgZXF1aXZhbGVudCB0byBjb3B5aW5nIHRoZSBibG9jayBvZiA8Y29kZT5uYnl0ZXM8L2NvZGU+IGJ5dGVzCi1wb2ludGVkIHRvIGJ5IDxjb2RlPnNyYzwvY29kZT4gdGhhdCBoYXMgYWZmaW5pdHkgdG8gdGhyZWFkIGkgdG8gdGhlIGl0aCBibG9jayBvZiA8Y29kZT5uYnl0ZXM8L2NvZGU+Ci1ieXRlcyBwb2ludGVkIHRvIGJ5IDxjb2RlPmRzdDwvY29kZT4uCi08cD4KLTx1bD4KLTxsaT5FWEFNUExFIDEgPGNvZGU+dXBjX2FsbF9nYXRoZXIgPC9jb2RlPiBmb3IgdGhlIHN0YXRpYyBUSFJFQURTIHRyYW5zbGF0aW9uIGVudmlyb25tZW50LgotPHByZT4KLSNpbmNsdWRlICZsdDt1cGMuaCZndDsKLSNpbmNsdWRlICZsdDt1cGNfY29sbGVjdGl2ZS5oJmd0OwotI2RlZmluZSBORUxFTVMgMTAKLXNoYXJlZCBbTkVMRU1TXSBpbnQgQVtORUxFTVMqVEhSRUFEU107Ci1zaGFyZWQgW10gaW50IEJbTkVMRU1TKlRIUkVBRFNdOwotLy8gSW5pdGlhbGl6ZSBBLgotdXBjX2FsbF9nYXRoZXIoIEIsIEEsIHNpemVvZihpbnQpKk5FTEVNUywKLVVQQ19JTl9BTExTWU5DIHwgVVBDX09VVF9BTExTWU5DICk7Ci08L3ByZT4KLTxsaT5FWEFNUExFIDIgPGNvZGU+dXBjX2FsbF9nYXRoZXIgPC9jb2RlPiBmb3IgdGhlIGR5bmFtaWMgVEhSRUFEUyB0cmFuc2xhdGlvbiBlbnZpcm9ubWVudC4KLTxwcmU+Ci0jaW5jbHVkZSAmbHQ7dXBjLmgmZ3Q7Ci0jaW5jbHVkZSAmbHQ7dXBjX2NvbGxlY3RpdmUuaCZndDsKLSNkZWZpbmUgTkVMRU1TIDEwCi1zaGFyZWQgW05FTEVNU10gaW50IEFbTkVMRU1TKlRIUkVBRFNdOwotc2hhcmVkIFtdIGludCAqQjsKLUIgPSAoc2hhcmVkIFtdIGludCAqKSB1cGNfYWxsX2FsbG9jKDEsTkVMRU1TKlRIUkVBRFMqc2l6ZW9mKGludCkpOwotLy8gSW5pdGlhbGl6ZSBBLgotdXBjX2JhcnJpZXI7Ci11cGNfYWxsX2dhdGhlciggQiwgQSwgc2l6ZW9mKGludCkqTkVMRU1TLAotVVBDX0lOX05PU1lOQyB8IFVQQ19PVVRfTk9TWU5DICk7Ci11cGNfYmFycmllcjsKLTwvcHJlPgotPGxpPgotPGxpPgotPC91bD4KLTxwPiZuYnNwCi08cD4mbmJzcAotPHA+PGEgaHJlZj0idGVybXMuaHRtbCI+VGVybXMsIGRlZmluaXRpb25zLCBhbmQgc3ltYm9sczwvYT48YnI+PHA+PGEgaHJlZj0iaW5kZXguaHRtbCI+QmFjayB0byBpbmRleCBvZiBhbGwgVVBDIGZ1bmN0aW9uczwvYT4KZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX2FsbF9nYXRoZXJfYWxsLmh0bWwgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19hbGxfZ2F0aGVyX2FsbC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZTMxOTllLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX2FsbF9nYXRoZXJfYWxsLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi08aDI+VGhlIDxjb2RlPnVwY19hbGxfZ2F0aGVyX2FsbDwvY29kZT4gZnVuY3Rpb248L2gyPgotCi08aDQ+U3lub3BzaXM8L2g0PgotPHByZT4gICAgCi0gICAgI2luY2x1ZGUgJmx0O3VwYy5oJmd0OwotICAgICNpbmNsdWRlICZsdDt1cGNfY29sbGVjdGl2ZS5oJmd0OwotICAgIHZvaWQgdXBjX2FsbF9nYXRoZXJfYWxsKHNoYXJlZCB2b2lkICogcmVzdHJpY3QgZHN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlZCBjb25zdCB2b2lkICogcmVzdHJpY3Qgc3JjLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbmJ5dGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwY19mbGFnX3QgZmxhZ3MpOwotPC9wcmU+Ci08cD4KLTxoND5EZXNjcmlwdGlvbjwvaDQ+Ci08cD4KLVRoZSA8Y29kZT51cGNfYWxsX2dhdGhlcl9hbGwgPC9jb2RlPiAgZnVuY3Rpb24gCi1jb3BpZXMgYSBibG9jayBvZiBtZW1vcnkgZnJvbSBvbmUgc2hhcmVkCi1tZW1vcnkgYXJlYSB3aXRoIGFmZmluaXR5IHRvIHRoZSBpdGggdGhyZWFkIHRvIHRoZSBpdGggYmxvY2sgb2YgYSBzaGFyZWQKLW1lbW9yeSBhcmVhIG9uIGVhY2ggdGhyZWFkLiBUaGUgbnVtYmVyIG9mIGJ5dGVzIGluIGVhY2ggYmxvY2sgaXMgPGNvZGU+bmJ5dGVzPC9jb2RlPi4KLTxwPjxjb2RlPm5ieXRlczwvY29kZT4gbXVzdCBiZSBzdHJpY3RseSBncmVhdGVyIHRoYW4gMC4KLTxwPlRoZSB1cGNfYWxsX2dhdGhlcl9hbGwgZnVuY3Rpb24gdHJlYXRzIHRoZSA8Y29kZT5zcmM8L2NvZGU+IHBvaW50ZXIgYXMgaWYgaXQgcG9pbnRlZCB0byBhCi1zaGFyZWQgbWVtb3J5IGFyZWEgb2YgPGNvZGU+bmJ5dGVzPC9jb2RlPiBieXRlcyBvbiBlYWNoIHRocmVhZCBhbmQgdGhlcmVmb3JlIGhhZCB0eXBlOgotPHByZT4KLXNoYXJlZCBbbmJ5dGVzXSBjaGFyW25ieXRlcyAqIFRIUkVBRFNdCi08L3ByZT4KLTxwPmFuZCBpdCB0cmVhdHMgdGhlIDxjb2RlPmRzdDwvY29kZT4gIHBvaW50ZXIgYXMgaWYgaXQgcG9pbnRlZCB0byBhIHNoYXJlZCBtZW1vcnkgYXJlYSB3aXRoCi10aGUgdHlwZToKLXNoYXJlZCBbbmJ5dGVzICogVEhSRUFEU10gY2hhcltuYnl0ZXMgKiBUSFJFQURTICogVEhSRUFEU10KLTxwPlRoZSB0YXJnZXRzIG9mIHRoZSA8Y29kZT5zcmM8L2NvZGU+IGFuZCA8Y29kZT5kc3Q8L2NvZGU+IHBvaW50ZXJzIG11c3QgaGF2ZSBhZmZpbml0eSB0byB0aHJlYWQgMC4KLTxwPlRoZSA8Y29kZT5zcmM8L2NvZGU+IGFuZCA8Y29kZT5kc3Q8L2NvZGU+ICBwb2ludGVycyBhcmUgdHJlYXRlZCBhcyBpZiB0aGV5IGhhdmUgcGhhc2UgMC4KLTxwPlRoZSBlZmZlY3QgaXMgZXF1aXZhbGVudCB0byBjb3B5aW5nIHRoZSBpdGggYmxvY2sgb2YgPGNvZGU+bmJ5dGVzPC9jb2RlPiBieXRlcyBwb2ludGVkIHRvCi1ieSA8Y29kZT5zcmM8L2NvZGU+IHRvIHRoZSBpdGggYmxvY2sgb2YgPGNvZGU+bmJ5dGVzPC9jb2RlPiBieXRlcyBwb2ludGVkIHRvIGJ5IDxjb2RlPmRzdDwvY29kZT4gdGhhdCBoYXMgYWZmaW5pdHkKLXRvIGVhY2ggdGhyZWFkLgotCi0KLQotPHA+Ci08dWw+Ci08bGk+IEVYQU1QTEUgMSA8Y29kZT51cGNfYWxsX2dhdGhlcl9hbGwgPC9jb2RlPiBmb3IgdGhlIHN0YXRpYyBUSFJFQURTIHRyYW5zbGF0aW9uIGVudmlyb25tZW50LgotPHByZT4KLSNpbmNsdWRlICZsdDt1cGMuaCZndDsKLSNpbmNsdWRlICZsdDt1cGNfY29sbGVjdGl2ZS5oJmd0OwotI2RlZmluZSBORUxFTVMgMTAKLXNoYXJlZCBbTkVMRU1TXSBpbnQgQVtORUxFTVMqVEhSRUFEU107Ci1zaGFyZWQgW05FTEVNUypUSFJFQURTXSBpbnQgQltUSFJFQURTXVtORUxFTVMqVEhSRUFEU107Ci0vLyBJbml0aWFsaXplIEEuCi11cGNfYmFycmllcjsKLXVwY19hbGxfZ2F0aGVyX2FsbCggQiwgQSwgc2l6ZW9mKGludCkqTkVMRU1TLAotVVBDX0lOX05PU1lOQyB8IFVQQ19PVVRfTk9TWU5DICk7Ci11cGNfYmFycmllcjsKLTwvcHJlPgotPGxpPkVYQU1QTEUgMiA8Y29kZT51cGNfYWxsX2dhdGhlcl9hbGwgPC9jb2RlPiBhbGwgZm9yIHRoZSBkeW5hbWljIFRIUkVBRFMgdHJhbnNsYXRpb24KLWVudmlyb25tZW50LgotPHByZT4KLSNpbmNsdWRlICZsdDt1cGMuaCZndDsKLSNpbmNsdWRlICZsdDt1cGNfY29sbGVjdGl2ZS5oJmd0OwotI2RlZmluZSBORUxFTVMgMTAKLXNoYXJlZCBbTkVMRU1TXSBpbnQgQVtORUxFTVMqVEhSRUFEU107Ci1zaGFyZWQgaW50ICpCZGF0YTsKLXNoYXJlZCBbXSBpbnQgKm15QjsKLUJkYXRhID0gdXBjX2FsbF9hbGxvYyhUSFJFQURTKlRIUkVBRFMsIE5FTEVNUypzaXplb2YoaW50KSk7Ci1teUIgPSAoc2hhcmVkIFtdIGludCAqKSZCZGF0YVtNWVRIUkVBRF07Ci0vLyBCZGF0YSBjb250YWlucyBUSFJFQURTKlRIUkVBRFMqTkVMRU1TIGVsZW1lbnRzLgotLy8gbXlCIGlzIE1ZVEhSRUFE1XMgcm93IG9mIEJkYXRhLgotLy8gSW5pdGlhbGl6ZSBBLgotdXBjX2FsbF9nYXRoZXJfYWxsKCBCZGF0YSwgQSwgTkVMRU1TKnNpemVvZihpbnQpLAotVVBDX0lOX0FMTFNZTkMgfCBVUENfT1VUX0FMTFNZTkMgKTsKLTwvcHJlPgotPGxpPgotPGxpPgotPC91bD4KLTxwPiZuYnNwCi08cD4mbmJzcAotPHA+PGEgaHJlZj0idGVybXMuaHRtbCI+VGVybXMsIGRlZmluaXRpb25zLCBhbmQgc3ltYm9sczwvYT48YnI+Ci08cD48YSBocmVmPSJpbmRleC5odG1sIj5CYWNrIHRvIGluZGV4IG9mIGFsbCBVUEMgZnVuY3Rpb25zPC9hPgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfYWxsX2xvY2tfYWxsb2MuaHRtbCBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX2FsbF9sb2NrX2FsbG9jLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyNjI5MTMuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfYWxsX2xvY2tfYWxsb2MuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLTxoMiA+VGhlIDxjb2RlPnVwY19hbGxfbG9ja19hbGxvYzwvY29kZT4gZnVuY3Rpb24gICA8L2gyPgotCi08aDQ+U3lub3BzaXM8L2g0PgotPHByZT4gCi0gICAgI2luY2x1ZGUgJmx0O3VwYy5oJmd0OwotICAgIHVwY19sb2NrX3QgKnVwY19hbGxfbG9ja19hbGxvYyh2b2lkKTsgICAgICAgICAgICAgICAgICAgICAKLTwvcHJlPgotCi08cD4KLTxoND5EZXNjcmlwdGlvbjwvaDQ+Ci0KLTxwPgotVGhlIDxjb2RlPnVwY19hbGxfbG9ja19hbGxvYzwvY29kZT4gICAgZnVuY3Rpb24gZHluYW1pY2FsbHkgYWxsb2NhdGVzIGEgbG9jayBhbmQgcmV0dXJucwotYSBwb2ludGVyIHRvIGl0LiBUaGUgbG9jayBpcyBjcmVhdGVkIGluIGFuIHVubG9ja2VkIHN0YXRlLgotPHA+VGhlIDxjb2RlPnVwY19hbGxfbG9ja19hbGxvYzwvY29kZT4gIGZ1bmN0aW9uIGlzICBhIDxpPmNvbGxlY3RpdmU8L2k+IGZ1bmN0aW9uLiAKLVRoZSByZXR1cm4gdmFsdWUgb24gZXZlcnkKLXRocmVhZCBwb2ludHMgdG8gdGhlIHNhbWUgbG9jayBvYmplY3QuCi08cD4mbmJzcAotPHA+Jm5ic3AKLTxwPjxhIGhyZWY9InRlcm1zLmh0bWwiPlRlcm1zLCBkZWZpbml0aW9ucywgYW5kIHN5bWJvbHM8L2E+PGJyPgotPHA+PGEgaHJlZj0iaW5kZXguaHRtbCI+QmFjayB0byBpbmRleCBvZiBhbGwgVVBDIGZ1bmN0aW9uczwvYT4KZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX2FsbF9wZXJtdXRlLmh0bWwgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19hbGxfcGVybXV0ZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NmI5M2I0Li4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX2FsbF9wZXJtdXRlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi08aDI+VGhlIDxjb2RlPnVwY19hbGxfcGVybXV0ZTwvY29kZT4gZnVuY3Rpb248L2gyPgotCi08aDQ+U3lub3BzaXM8L2g0PgotPHByZT4gICAgCi0gICAgI2luY2x1ZGUgJmx0O3VwYy5oJmd0OwotICAgICNpbmNsdWRlICZsdDt1cGNfY29sbGVjdGl2ZS5oJmd0OwotICAgIHZvaWQgdXBjX2FsbF9wZXJtdXRlKHNoYXJlZCB2b2lkICogcmVzdHJpY3QgZHN0LAotICAgICAgICBzaGFyZWQgY29uc3Qgdm9pZCAqIHJlc3RyaWN0IHNyYywKLSAgICAgICAgc2hhcmVkIGNvbnN0IGludCAqIHJlc3RyaWN0IHBlcm0sCi0gICAgICAgIHNpemVfdCBuYnl0ZXMsIHVwY19mbGFnX3QgZmxhZ3MpOwotPC9wcmU+Ci08cD4KLTxoND5EZXNjcmlwdGlvbjwvaDQ+Ci08cD4KLVRoZSA8Y29kZT51cGNfYWxsX3Blcm11dGUgPC9jb2RlPiAgZnVuY3Rpb24gCi1jb3BpZXMgYSBibG9jayBvZiBtZW1vcnkgZnJvbSBhIHNoYXJlZCBtZW1vcnkKLWFyZWEgdGhhdCBoYXMgYWZmaW5pdHkgdG8gdGhlIGl0aCB0aHJlYWQgdG8gYSBibG9jayBvZiBhIHNoYXJlZCBtZW1vcnkKLXRoYXQgaGFzIGFmZmluaXR5IHRvIHRocmVhZCBwZXJtW2ldLiBUaGUgbnVtYmVyIG9mIGJ5dGVzIGluIGVhY2ggYmxvY2sgaXMKLTxjb2RlPm5ieXRlczwvY29kZT4uCi08cD48Y29kZT5uYnl0ZXM8L2NvZGU+IG11c3QgYmUgc3RyaWN0bHkgZ3JlYXRlciB0aGFuIDAuCi08cD48Y29kZT5wZXJtWzAuLlRIUkVBRFMtMV08L2NvZGU+IG11c3QgY29udGFpbiA8Y29kZT5USFJFQURTPC9jb2RlPgotZGlzdGluY3QgdmFsdWVzOiAKLTxjb2RlPjAsIDEsIC4uLiwgVEhSRUFEUy0xLjwvY29kZT4KLTxwPlRoZSA8Y29kZT51cGNfYWxsX3Blcm11dGUgPC9jb2RlPiBmdW5jdGlvbiB0cmVhdHMgdGhlIDxjb2RlPnNyYzwvY29kZT4gcG9pbnRlciBhbmQgdGhlIDxjb2RlPmRzdDwvY29kZT4gcG9pbnRlcgotYXMgaWYgZWFjaCBwb2ludGVkIHRvIGEgc2hhcmVkIG1lbW9yeSBhcmVhIG9mIDxjb2RlPm5ieXRlczwvY29kZT4gYnl0ZXMgb24gZWFjaCB0aHJlYWQKLWFuZCB0aGVyZWZvcmUgaGFkIHR5cGU6Ci08cHJlPgotICAgIHNoYXJlZCBbPGNvZGU+bmJ5dGVzPC9jb2RlPl0gY2hhcls8Y29kZT5uYnl0ZXM8L2NvZGU+ICogVEhSRUFEU10KLSAgICA8L3ByZT4KLTxwPlRoZSB0YXJnZXRzIG9mIHRoZSA8Y29kZT5zcmM8L2NvZGU+LCBwZXJtLCBhbmQgPGNvZGU+ZHN0PC9jb2RlPiBwb2ludGVycyBtdXN0IGhhdmUgYWZmaW5pdHkgdG8gdGhyZWFkIDAuCi08cD5UaGUgPGNvZGU+c3JjPC9jb2RlPiBhbmQgPGNvZGU+ZHN0PC9jb2RlPiBwb2ludGVycyBhcmUgdHJlYXRlZCBhcyBpZiB0aGV5IGhhdmUgcGhhc2UgMC4KLTxwPlRoZSBlZmZlY3QgaXMgZXF1aXZhbGVudCB0byBjb3B5aW5nIHRoZSBibG9jayBvZiA8Y29kZT5uYnl0ZXM8L2NvZGU+IGJ5dGVzIHRoYXQgaGFzIGFmZmluaXR5Ci10byB0aHJlYWQgaSBwb2ludGVkIHRvIGJ5IDxjb2RlPnNyYzwvY29kZT4gdG8gdGhlIGJsb2NrIG9mIDxjb2RlPm5ieXRlczwvY29kZT4gYnl0ZXMgdGhhdCBoYXMgYWZmaW5pdHkKLXRvIHRocmVhZCBwZXJtW2ldIHBvaW50ZWQgdG8gYnkgPGNvZGU+ZHN0PC9jb2RlPi4KLTx1bD4KLTxsaT5FWEFNUExFIDE6IDxjb2RlPnVwY19hbGxfcGVybXV0ZTwvY29kZT4KLTxwcmU+Ci0jaW5jbHVkZSAmbHQ7dXBjLmgmZ3Q7Ci0jaW5jbHVkZSAmbHQ7dXBjX2NvbGxlY3RpdmUuaCZndDsKLSNkZWZpbmUgTkVMRU1TIDEwCi1zaGFyZWQgW05FTEVNU10gaW50IEFbTkVMRU1TKlRIUkVBRFNdLCBCW05FTEVNUypUSFJFQURTXTsKLXNoYXJlZCBpbnQgUFtUSFJFQURTXTsKLS8vIEluaXRpYWxpemUgQSBhbmQgUC4KLXVwY19iYXJyaWVyOwotdXBjX2FsbF9wZXJtdXRlKCBCLCBBLCBQLCBzaXplb2YoaW50KSpORUxFTVMsCi1VUENfSU5fTk9TWU5DIHwgVVBDX09VVF9OT1NZTkMgKTsKLXVwY19iYXJyaWVyOwotPC9wcmU+Ci0KLTwvdWw+Ci0KLSAKLTwvdWw+Ci08cD4mbmJzcAotPHA+Jm5ic3AKLTxwPjxhIGhyZWY9InRlcm1zLmh0bWwiPlRlcm1zLCBkZWZpbml0aW9ucywgYW5kIHN5bWJvbHM8L2E+PGJyPgotPHA+PGEgaHJlZj0iaW5kZXguaHRtbCI+QmFjayB0byBpbmRleCBvZiBhbGwgVVBDIGZ1bmN0aW9uczwvYT4KZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX2FsbF9zY2F0dGVyLmh0bWwgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19hbGxfc2NhdHRlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YjIxZTkyLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX2FsbF9zY2F0dGVyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi08aDI+VGhlIDxjb2RlPnVwY19hbGxfc2NhdHRlcjwvY29kZT4gZnVuY3Rpb248L2gyPgotCi08aDQ+U3lub3BzaXM8L2g0PgotPHByZT4gICAgCi0gICAgI2luY2x1ZGUgJmx0O3VwYy5oJmd0OwotICAgICNpbmNsdWRlICZsdDt1cGNfY29sbGVjdGl2ZS5oJmd0OwotICAgIHZvaWQgdXBjX2FsbF9zY2F0dGVyKHNoYXJlZCB2b2lkICogcmVzdHJpY3QgZHN0LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZWQgY29uc3Qgdm9pZCAqIHJlc3RyaWN0IHNyYywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG5ieXRlcywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgdXBjX2ZsYWdfdCBmbGFncyk7Ci0gICAgICAgICAgICAgICAKLTwvcHJlPgotPHA+Ci08aDQ+RGVzY3JpcHRpb248L2g0PgotPHA+Ci1UaGUgPGNvZGU+dXBjX2FsbF9zY2F0dGVyIDwvY29kZT4gIGZ1bmN0aW9uIAotY29waWVzIHRoZSBpdGggYmxvY2sgb2YgYW4gYXJlYSBvZiBzaGFyZWQKLW1lbW9yeSB3aXRoIGFmZmluaXR5IHRvIGEgc2luZ2xlIHRocmVhZCB0byBhIGJsb2NrIG9mIHNoYXJlZCBtZW1vcnkgd2l0aAotYWZmaW5pdHkgdG8gdGhlIGl0aCB0aHJlYWQuIFRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gZWFjaCBibG9jayBpcyA8Y29kZT5uYnl0ZXM8L2NvZGU+LgotPHA+PGNvZGU+bmJ5dGVzPC9jb2RlPiBtdXN0IGJlIHN0cmljdGx5IGdyZWF0ZXIgdGhhbiAwLgotPHA+VGhlIDxjb2RlPnVwY19hbGxfc2NhdHRlciA8L2NvZGU+ICBmdW5jdGlvbiB0cmVhdHMgdGhlIDxjb2RlPnNyYzwvY29kZT4gcG9pbnRlciBhcyBpZiBpdCBwb2ludGVkIHRvIGEKLXNoYXJlZCBtZW1vcnkgYXJlYSB3aXRoIHRoZSB0eXBlOgotPHByZT4KLSAgICBzaGFyZWQgW10gY2hhcltuYnl0ZXMgKiBUSFJFQURTXQotIDwvcHJlPgotPHA+YW5kIGl0IHRyZWF0cyB0aGUgPGNvZGU+ZHN0PC9jb2RlPiBwb2ludGVyIGFzIGlmIGl0IHBvaW50ZWQgdG8gYSBzaGFyZWQgbWVtb3J5IGFyZWEgd2l0aAotdGhlIHR5cGU6Ci08cHJlPgotICAgIHNoYXJlZCBbbmJ5dGVzXSBjaGFyW25ieXRlcyAqIFRIUkVBRFNdCi08L3ByZT4KLTxwPlRoZSB0YXJnZXQgb2YgdGhlIDxjb2RlPmRzdDwvY29kZT4gcG9pbnRlciBtdXN0IGhhdmUgYWZmaW5pdHkgdG8gdGhyZWFkIDAuCi08cD5UaGUgPGNvZGU+ZHN0PC9jb2RlPiBwb2ludGVyIGlzIHRyZWF0ZWQgYXMgaWYgaXQgaGFzIHBoYXNlIDAuCi08cD5Gb3IgZWFjaCB0aHJlYWQgaSwgdGhlIGVmZmVjdCBpcyBlcXVpdmFsZW50IHRvIGNvcHlpbmcgdGhlIGl0aCBibG9jayBvZiA8Y29kZT5uYnl0ZXM8L2NvZGU+Ci1ieXRlcyBwb2ludGVkIHRvIGJ5IDxjb2RlPnNyYzwvY29kZT4gdG8gdGhlIGJsb2NrIG9mIDxjb2RlPm5ieXRlczwvY29kZT4gYnl0ZXMgcG9pbnRlZCB0byBieSAKLTxjb2RlPmRzdDwvY29kZT4gdGhhdAotaGFzIGFmZmluaXR5IHRvIHRocmVhZCBpLgotPHVsPgotPGxpPkVYQU1QTEUgMTogPGNvZGU+dXBjX2FsbF9zY2F0dGVyPC9jb2RlPiBmb3IgdGhlIGR5bmFtaWMgVEhSRUFEUyB0cmFuc2xhdGlvbiBlbnZpcm9ubWVudC4KLTxwcmU+Ci0jaW5jbHVkZSAmbHQ7dXBjLmgmZ3Q7Ci0jaW5jbHVkZSAmbHQ7dXBjX2NvbGxlY3RpdmUuaCZndDsKLSNkZWZpbmUgTlVNRUxFTVMgMTAKLSNkZWZpbmUgU1JDX1RIUkVBRCAxCi1zaGFyZWQgaW50ICpBOwotc2hhcmVkIFtdIGludCAqbXlBLCAqc3JjQTsKLXNoYXJlZCBbTlVNRUxFTVNdIGludCBCW05VTUVMRU1TKlRIUkVBRFNdOwotLy8gYWxsb2NhdGUgYW5kIGluaXRpYWxpemUgYW4gYXJyYXkgZGlzdHJpYnV0ZWQgYWNyb3NzIGFsbCB0aHJlYWRzCi1BID0gdXBjX2FsbF9hbGxvYyhUSFJFQURTLCBUSFJFQURTKk5VTUVMRU1TKnNpemVvZihpbnQpKTsKLW15QSA9IChzaGFyZWQgW10gaW50ICopICZBW01ZVEhSRUFEXTsKLWZvciAoaT0wOyBpPE5VTUVMRU1TKlRIUkVBRFM7IGkrKykKLW15QVtpXSA9IGkgKyBOVU1FTEVNUypUSFJFQURTKk1ZVEhSRUFEOyAvLyAoZm9yIGV4YW1wbGUpCi0vLyBzY2F0dGVyIHRoZSBTUkNfVEhSRUFE1XMgcm93IG9mIHRoZSBhcnJheQotc3JjQSA9IChzaGFyZWQgW10gaW50ICopICZBW1NSQ19USFJFQURdOwotdXBjX2JhcnJpZXI7Ci11cGNfYWxsX3NjYXR0ZXIoIEIsIHNyY0EsIHNpemVvZihpbnQpKk5VTUVMRU1TLAotVVBDX0lOX05PU1lOQyB8IFVQQ19PVVRfTk9TWU5DKTsKLXVwY19iYXJyaWVyOwotPC9wcmU+Ci08bGk+RVhBTVBMRSAyOiA8Y29kZT51cGNfYWxsX3NjYXR0ZXI8L2NvZGU+ICBmb3IgdGhlIHN0YXRpYyBUSFJFQURTIHRyYW5zbGF0aW9uIGVudmlyb25tZW50LgotPHByZT4KLSNpbmNsdWRlICZsdDt1cGMuaCZndDsKLSNpbmNsdWRlICZsdDt1cGNfY29sbGVjdGl2ZS5oJmd0OwotI2RlZmluZSBORUxFTVMgMTAKLXNoYXJlZCBbXSBpbnQgQVtORUxFTVMqVEhSRUFEU107Ci1zaGFyZWQgW05FTEVNU10gaW50IEJbTkVMRU1TKlRIUkVBRFNdOwotIAotLy8gSW5pdGlhbGl6ZSBBLgotdXBjX2FsbF9zY2F0dGVyKCBCLCBBLCBzaXplb2YoaW50KSpORUxFTVMsCi1VUENfSU5fQUxMU1lOQyB8IFVQQ19PVVRfQUxMU1lOQyApOwotPC9wcmU+Ci0gCi08L3VsPgotPHA+Jm5ic3AKLTxwPiZuYnNwCi08cD48YSBocmVmPSJ0ZXJtcy5odG1sIj5UZXJtcywgZGVmaW5pdGlvbnMsIGFuZCBzeW1ib2xzPC9hPjxicj4KLTxwPjxhIGhyZWY9ImluZGV4Lmh0bWwiPkJhY2sgdG8gaW5kZXggb2YgYWxsIFVQQyBmdW5jdGlvbnM8L2E+CmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19hbGxvYy5odG1sIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfYWxsb2MuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWY5NGJiMC4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19hbGxvYy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotPGgyID5UaGUgPGNvZGU+dXBjX2FsbG9jPC9jb2RlPiBmdW5jdGlvbiAgICA8L2gyPgotCi08aDQ+U3lub3BzaXM8L2g0PgotPHByZT4gCi0gICAgI2luY2x1ZGUgJmx0O3VwYy5oJmd0OwotICAgIHNoYXJlZCB2b2lkICp1cGNfYWxsb2Moc2l6ZV90IG5ieXRlcyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAKLTwvcHJlPgotPHA+Ci08aDQ+RGVzY3JpcHRpb248L2g0PgotCi08cD4KLVRoZSA8Y29kZT51cGNfYWxsb2MgIDwvY29kZT4gYWxsb2NhdGVzIHNoYXJlZCBzcGFjZSBvZiBhdCBsZWFzdCA8Y29kZT5uYnl0ZXM8L2NvZGU+IGJ5dGVzIHdpdGgKLWFmZmluaXR5IHRvIHRoZSBjYWxsaW5nIHRocmVhZC4KLTxwPgotPGNvZGU+dXBjX2FsbG9jPC9jb2RlPiBpcyBzaW1pbGFyIHRvIG1hbGxvYygpIGV4Y2VwdCB0aGF0IGl0IHJldHVybnMgYSBwb2ludGVyLXRvLXNoYXJlZAotdmFsdWUuIEl0IGlzIG5vdCBhIDxpPmNvbGxlY3RpdmU8L2k+IGZ1bmN0aW9uLiBJZiA8Y29kZT5uYnl0ZXM8L2NvZGU+IGlzIHplcm8sIHRoZSByZXN1bHQgaXMgYSBudWxsCi1wb2ludGVyLXRvLXNoYXJlZC4KLQotPHA+Jm5ic3AKLTxwPiZuYnNwCi08cD48YSBocmVmPSJ0ZXJtcy5odG1sIj5UZXJtcywgZGVmaW5pdGlvbnMsIGFuZCBzeW1ib2xzPC9hPjxicj4KLTxwPjxhIGhyZWY9ImluZGV4Lmh0bWwiPkJhY2sgdG8gaW5kZXggb2YgYWxsIFVQQyBmdW5jdGlvbnM8L2E+CmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19mcmVlLmh0bWwgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19mcmVlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkYmY2NzkuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfZnJlZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotPGgyID5UaGUgPGNvZGU+dXBjX2ZyZWU8L2NvZGU+IGZ1bmN0aW9uICAgPC9oMj4KLTxoND5TeW5vcHNpczwvaDQ+Ci08cHJlPiAKLSAgICAjaW5jbHVkZSAmbHQ7dXBjLmgmZ3Q7Ci0gICAgdm9pZCB1cGNfZnJlZShzaGFyZWQgdm9pZCAqcHRyKTsgICAgICAgICAgICAgICAgICAgICAgICAgCi08L3ByZT4KLTxwPgotPGg0PkRlc2NyaXB0aW9uPC9oND4KLQotPHA+Ci1UaGUgPGNvZGU+dXBjX2ZyZWUgPC9jb2RlPiAgIGZ1bmN0aW9uIGZyZWVzIHRoZSBkeW5hbWljYWxseSBhbGxvY2F0ZWQgc2hhcmVkIHN0b3JhZ2UgcG9pbnRlZAotdG8gYnkgPGNvZGU+cHRyPC9jb2RlPi4gSWYgPGNvZGU+cHRyPC9jb2RlPiBpcyBhIG51bGwgcG9pbnRlciwgbm8gYWN0aW9uIG9jY3Vycy4gT3RoZXJ3aXNlLCBpZiB0aGUKLWFyZ3VtZW50IGRvZXMgbm90IG1hdGNoIGEgcG9pbnRlciBlYXJsaWVyIHJldHVybmVkIGJ5IHRoZSAKLTxhIGhyZWY9InVwY19hbGxvYy5odG1sIj48Y29kZT51cGNfYWxsb2M8L2NvZGU+PC9hPiwKLTxhIGhyZWY9InVwY19nbG9iYWxfYWxsb2MuaHRtbCI+PGNvZGU+dXBjX2dsb2JhbF9hbGxvYzwvY29kZT48L2E+LAotPGEgaHJlZj0idXBjX2FsbF9hbGxvYy5odG1sIj48Y29kZT51cGNfYWxsX2FsbG9jPC9jb2RlPjwvYT4sIG9yIAotPGEgaHJlZj0idXBjX2xvY2FsX2FsbG9jLmh0bWwiPjxjb2RlPnVwY19sb2NhbF9hbGxvYzwvY29kZT48L2E+Ci1mdW5jdGlvbiwgb3IgaWYgdGhlCi1zcGFjZSBoYXMgYmVlbiBkZWFsbG9jYXRlZCBieSBhIHByZXZpb3VzIGNhbGwsIGJ5IGFueSB0aHJlYWQgCi0oaS5lLiwgb25seSBvbmUgdGhyZWFkIG1heSBjYWxsIDxjb2RlPnVwY19mcmVlIDwvY29kZT4gZm9yIGVhY2ggYWxsb2NhdGlvbiksCi10byA8Y29kZT51cGNfZnJlZTwvY29kZT4sCi10aGUgYmVoYXZpb3IgaXMgdW5kZWZpbmVkLgotCi08cD4mbmJzcAotPHA+Jm5ic3AKLTxwPjxhIGhyZWY9InRlcm1zLmh0bWwiPlRlcm1zLCBkZWZpbml0aW9ucywgYW5kIHN5bWJvbHM8L2E+PGJyPgotPHA+PGEgaHJlZj0iaW5kZXguaHRtbCI+QmFjayB0byBpbmRleCBvZiBhbGwgVVBDIGZ1bmN0aW9uczwvYT4KZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX2dsb2JhbF9hbGxvYy5odG1sIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfZ2xvYmFsX2FsbG9jLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzNzM1MjUuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfZ2xvYmFsX2FsbG9jLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi08aDIgPnVwY19nbG9iYWxfYWxsb2M8L2gyPgotCi08aDQ+U3lub3BzaXM8L2g0PgotPHA+Ci08cHJlPgotICAgICNpbmNsdWRlICZsdDt1cGMuaCZndDsKLSAgICBzaGFyZWQgdm9pZCAqdXBjX2dsb2JhbF9hbGxvYyhzaXplX3QgbmJsb2NrcywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG5ieXRlcyk7Ci08L3ByZT4KLTxwPgotPGg0PkRlc2NyaXB0aW9uPC9oND4KLQotPHA+Ci1UaGUgPGNvZGU+dXBjX2dsb2JhbF9hbGxvYzwvY29kZT4gYWxsb2NhdGVzIHNoYXJlZCBzcGFjZSBjb21wYXRpYmxlIHdpdGggdGhlIGRlY2xhcmF0aW9uOgotPHA+Ci08Y29kZT4KLXNoYXJlZCBbbmJ5dGVzXSBjaGFyW25ibG9ja3MgKiBuYnl0ZXNdPC9jb2RlPgotPHA+Ci08Y29kZT51cGNfZ2xvYmFsX2FsbG9jPC9jb2RlPiBmdW5jdGlvbiBpcyBub3QgYSBjb2xsZWN0aXZlIGZ1bmN0aW9uLiBJZiBjYWxsZWQgYnkKLW11bHRpcGxlIHRocmVhZHMsIGFsbCB0aHJlYWRzIHdoaWNoIG1ha2UgdGhlIGNhbGwgZ2V0IGRpZmZlcmVudCBhbGxvY2F0aW9ucy4gSWYKLTxjb2RlPm5ibG9ja3MqbmJ5dGVzPC9jb2RlPiBpcyB6ZXJvLCB0aGUgcmVzdWx0IGlzIGEgbnVsbCBwb2ludGVyLXRvLXNoYXJlZC4KLQotPHA+Jm5ic3AKLTxwPiZuYnNwCi08cD48YSBocmVmPSJ0ZXJtcy5odG1sIj5UZXJtcywgZGVmaW5pdGlvbnMsIGFuZCBzeW1ib2xzPC9hPjxicj4KLTxwPjxhIGhyZWY9ImluZGV4Lmh0bWwiPkJhY2sgdG8gaW5kZXggb2YgYWxsIFVQQyBmdW5jdGlvbnM8L2E+CmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19nbG9iYWxfZXhpdC5odG1sIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfZ2xvYmFsX2V4aXQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGIyZjk5OC4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19nbG9iYWxfZXhpdC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotPGgyID5UaGUgPGNvZGU+dXBjX2dsb2JhbF9leGl0PC9jb2RlPiBmdW5jdGlvbiA8L2gyPgotPGg0PlN5bm9wc2lzPC9oND4KLTxwcmU+Ci0gICAgI2luY2x1ZGUgJmx0O3VwYy5oJmd0OwotICAgIHZvaWQgdXBjX2dsb2JhbF9leGl0KGludCBzdGF0dXMpOwotPC9wcmU+Ci08cD4KLTxoND5EZXNjcmlwdGlvbjwvaDQ+Ci08cD4KLTxjb2RlPnVwY19nbG9iYWxfZXhpdCgpIDwvY29kZT4KLWZsdXNoZXMgYWxsIEkvTywgcmVsZWFzZXMgYWxsIHN0b3JhZ2UsIGFuZCB0ZXJtaW5hdGVzIHRoZQotZXhlY3V0aW9uIGZvciBhbGwgYWN0aXZlIHRocmVhZHMuCi0KLTxwPiZuYnNwCi08cD4mbmJzcAotPHA+PGEgaHJlZj0idGVybXMuaHRtbCI+VGVybXMsIGRlZmluaXRpb25zLCBhbmQgc3ltYm9sczwvYT48YnI+Ci08cD48YSBocmVmPSJpbmRleC5odG1sIj5CYWNrIHRvIGluZGV4IG9mIGFsbCBVUEMgZnVuY3Rpb25zPC9hPgotCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19nbG9iYWxfbG9ja19hbGxvYy5odG1sIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfZ2xvYmFsX2xvY2tfYWxsb2MuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTRlMzVmZi4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19nbG9iYWxfbG9ja19hbGxvYy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotPGgyID5UaGUgPGNvZGU+dXBjX2dsb2JhbF9sb2NrX2FsbG9jPC9jb2RlPiBmdW5jdGlvbiAgIDwvaDI+Ci08aDQ+U3lub3BzaXM8L2g0PgotPHA+Ci0KLTxwcmU+IAotICAgICNpbmNsdWRlICZsdDt1cGMuaCZndDsKLSAgICB1cGNfbG9ja190ICp1cGNfZ2xvYmFsX2xvY2tfYWxsb2Modm9pZCk7ICAgICAgICAgICAgICAgICAgICAgIAotPC9wcmU+Ci0KLTxwPgotPGg0PkRlc2NyaXB0aW9uPC9oND4KLQotPHA+Ci1UaGUgPGNvZGU+dXBjX2dsb2JhbF9sb2NrX2FsbG9jIDwvY29kZT4gICBmdW5jdGlvbiBkeW5hbWljYWxseSBhbGxvY2F0ZXMgYSBsb2NrIGFuZCByZXR1cm5zCi1hIHBvaW50ZXIgdG8gaXQuIFRoZSBsb2NrIGlzIGNyZWF0ZWQgaW4gYW4gdW5sb2NrZWQgc3RhdGUuCi08cD5UaGUgPGNvZGU+dXBjX2dsb2JhbF9sb2NrX2FsbG9jIDwvY29kZT4gZnVuY3Rpb24gaXMgbm90IGEgPGk+Y29sbGVjdGl2ZTwvaT4gZnVuY3Rpb24uICBJZiBjYWxsZWQKLWJ5IG11bHRpcGxlIHRocmVhZHMsIGFsbCB0aHJlYWRzIHdoaWNoIG1ha2UgdGhlIGNhbGwgZ2V0IGRpZmZlcmVudCBhbGxvY2F0aW9ucy4KLQotPHA+Jm5ic3AKLTxwPiZuYnNwCi08cD48YSBocmVmPSJ0ZXJtcy5odG1sIj5UZXJtcywgZGVmaW5pdGlvbnMsIGFuZCBzeW1ib2xzPC9hPjxicj4KLTxwPjxhIGhyZWY9ImluZGV4Lmh0bWwiPkJhY2sgdG8gaW5kZXggb2YgYWxsIFVQQyBmdW5jdGlvbnM8L2E+CmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19sb2NhbF9hbGxvYy5odG1sIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfbG9jYWxfYWxsb2MuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTI0N2ExYS4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19sb2NhbF9hbGxvYy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotPGgyID5UaGUgPGNvZGU+dXBjX2xvY2FsX2FsbG9jPC9jb2RlPiBmdW5jdGlvbiAmbmJzcDsmbmJzcDsgPGk+ZGVwcmVjYXRlZDwvaT4gPC9oMj4KLQotPGg0PlN5bm9wc2lzPC9oND4KLTxwPgotPHByZT4gCi0gICAgI2luY2x1ZGUgJmx0O3VwYy5oJmd0OwotICAgIHNoYXJlZCB2b2lkICp1cGNfbG9jYWxfYWxsb2Moc2l6ZV90IG5ibG9ja3MsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG5ieXRlcyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAKLTwvcHJlPgotPHA+Ci08aDQ+RGVzY3JpcHRpb248L2g0PgotCi08cD4KLVRoZSA8Y29kZT51cGNfbG9jYWxfYWxsb2MgPC9jb2RlPiBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIGFuZCBzaG91bGQgbm90IGJlIHVzZWQuIFVQQwotcHJvZ3JhbXMgc2hvdWxkIHVzZSB0aGUgPGNvZGU+dXBjX2FsbG9jIDwvY29kZT4gZnVuY3Rpb24gaW5zdGVhZC4gU3VwcG9ydCBtYXkgYmUgcmVtb3ZlZAotaW4gZnV0dXJlIHZlcnNpb25zIG9mIHRoaXMgc3BlY2lmaWNhdGlvbi4KLTxwPgotVGhlIDxjb2RlPnVwY19sb2NhbF9hbGxvYyA8L2NvZGU+IGZ1bmN0aW9uIGFsbG9jYXRlcyBzaGFyZWQgc3BhY2Ugb2YgYXQgbGVhc3QgCi08Y29kZT5uYmxvY2tzICogbmJ5dGVzIDwvY29kZT4gYnl0ZXMgd2l0aCBhZmZpbml0eSB0byB0aGUgY2FsbGluZyB0aHJlYWQuIElmIAotPGNvZGU+bmJsb2NrcyAqIG5ieXRlcyA8L2NvZGU+ICBpcyB6ZXJvLAotdGhlIHJlc3VsdCBpcyBhIG51bGwgcG9pbnRlci10by1zaGFyZWQuCi08cD4KLTxjb2RlPnVwY19sb2NhbF9hbGxvYyA8L2NvZGU+IGlzIHNpbWlsYXIgdG8gbWFsbG9jKCkgZXhjZXB0IHRoYXQgaXQgcmV0dXJucyBhIHBvaW50ZXItdG8tc2hhcmVkCi12YWx1ZS4gSXQgaXMgbm90IGEgPGk+Y29sbGVjdGl2ZTwvaT4gZnVuY3Rpb24uCi0KLTxwPiZuYnNwCi08cD4mbmJzcAotPHA+PGEgaHJlZj0idGVybXMuaHRtbCI+VGVybXMsIGRlZmluaXRpb25zLCBhbmQgc3ltYm9sczwvYT48YnI+Ci08cD48YSBocmVmPSJpbmRleC5odG1sIj5CYWNrIHRvIGluZGV4IG9mIGFsbCBVUEMgZnVuY3Rpb25zPC9hPgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfbG9jay5odG1sIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfbG9jay5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTA5MTllLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX2xvY2suaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLTxoMiA+VGhlIDxjb2RlPnVwY19sb2NrPC9jb2RlPiBmdW5jdGlvbiAgIDwvaDI+Ci0KLTxoND5TeW5vcHNpczwvaDQ+Ci08cD4KLQotPHByZT4gCi0gICAgI2luY2x1ZGUgJmx0O3VwYy5oJmd0OwotICAgIHZvaWQgdXBjX2xvY2sodXBjX2xvY2tfdCAqcHRyKTsgICAgICAgICAgICAgICAgICAKLTwvcHJlPgotCi08cD4KLTxoND5EZXNjcmlwdGlvbjwvaDQ+Ci0KLTxwPgotVGhlIDxjb2RlPnVwY19sb2NrPC9jb2RlPiAgICBmdW5jdGlvbiAgc2V0cyB0aGUgc3RhdGUgb2YgdGhlIGxvY2sgcG9pbnRlZCB0byBieSA8Y29kZT5wdHI8L2NvZGU+IHRvIGxvY2tlZC4KLTxwPklmIHRoZSBsb2NrIGlzIGFscmVhZHkgaW4gbG9ja2VkIHN0YXRlIGR1ZSB0byB0aGUgY2FsbGluZyB0aHJlYWQgc2V0dGluZyBpdCB0bwotbG9ja2VkIHN0YXRlLCB0aGUgcmVzdWx0IGlzIHVuZGVmaW5lZC4KLTxwPklmIHRoZSBsb2NrIGlzIGFscmVhZHkgaW4gbG9ja2VkIHN0YXRlLCB0aGVuIHRoZSBjYWxsaW5nIHRocmVhZCB3YWl0cyBmb3Igc29tZQotb3RoZXIgdGhyZWFkIHRvIHNldCB0aGUgc3RhdGUgdG8gdW5sb2NrZWQuIAotPHA+T25jZSB0aGUgbG9jayBpcyBpbiBzdGF0ZSB1bmxvY2tlZCwgYSBzaW5nbGUgY2FsbGluZyB0aHJlYWQgc2V0cyB0aGUgc3RhdGUgdG8KLWxvY2tlZCBhbmQgdGhlIGZ1bmN0aW9uIHJldHVybnMuCi08cD5BIG51bGwgc3RyaWN0IGFjY2VzcyBpcyBpbXBsaWVkIGFmdGVyIGEgY2FsbCB0byB1cGNfbG9jaygpLgotCi08cD4mbmJzcAotPHA+Jm5ic3AKLTxwPjxhIGhyZWY9InRlcm1zLmh0bWwiPlRlcm1zLCBkZWZpbml0aW9ucywgYW5kIHN5bWJvbHM8L2E+PGJyPgotPHA+PGEgaHJlZj0iaW5kZXguaHRtbCI+QmFjayB0byBpbmRleCBvZiBhbGwgVVBDIGZ1bmN0aW9uczwvYT4KZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX2xvY2tfYXR0ZW1wdC5odG1sIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfbG9ja19hdHRlbXB0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmOTJhOWIuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfbG9ja19hdHRlbXB0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi08aDIgPlRoZSA8Y29kZT51cGNfbG9ja19hdHRlbXB0PC9jb2RlPiBmdW5jdGlvbiAgIDwvaDI+Ci0KLTxoND5TeW5vcHNpczwvaDQ+Ci08cD4KLQotPHByZT4gCi0gICAgI2luY2x1ZGUgJmx0O3VwYy5oJmd0OwotICAgIGludCB1cGNfbG9ja19hdHRlbXB0KHVwY19sb2NrX3QgKnB0cik7ICAgICAgICAgICAgICAgCi08L3ByZT4KLQotPHA+Ci08aDQ+RGVzY3JpcHRpb248L2g0PgotCi08cD4KLVRoZSA8Y29kZT51cGNfbG9ja19hdHRlbXB0PC9jb2RlPiAgICBmdW5jdGlvbiAgYXR0ZW1wdHMgdG8gc2V0IHRoZSBzdGF0ZSBvZiB0aGUgbG9jayBwb2ludGVkCi10byBieSA8Y29kZT5wdHI8L2NvZGU+IHRvIGxvY2tlZC4KLTxwPklmIHRoZSBsb2NrIGlzIGFscmVhZHkgaW4gbG9ja2VkIHN0YXRlIGR1ZSB0byB0aGUgY2FsbGluZyB0aHJlYWQgc2V0dGluZyBpdCB0bwotbG9ja2VkIHN0YXRlLCB0aGUgcmVzdWx0IGlzIHVuZGVmaW5lZC4KLTxwPklmIHRoZSBsb2NrIGlzIGFscmVhZHkgaW4gbG9ja2VkIHN0YXRlIHRoZSBmdW5jdGlvbiByZXR1cm5zIDAuCi08cD5JZiB0aGUgbG9jayBpcyBpbiBzdGF0ZSB1bmxvY2tlZCwgYSBzaW5nbGUgY2FsbGluZyB0aHJlYWQgc2V0cyB0aGUgc3RhdGUgdG8gbG9ja2VkCi1hbmQgdGhlIGZ1bmN0aW9uIHJldHVybnMgMS4KLTxwPkEgbnVsbCBzdHJpY3QgYWNjZXNzIGlzIGltcGxpZWQgYWZ0ZXIgYSBjYWxsIHRvIHVwY19sb2NrX2F0dGVtcHQoKSB0aGF0IHJldHVybnMKLTEuCi0KLTxwPiZuYnNwCi08cD4mbmJzcAotPHA+PGEgaHJlZj0idGVybXMuaHRtbCI+VGVybXMsIGRlZmluaXRpb25zLCBhbmQgc3ltYm9sczwvYT48YnI+Ci08cD48YSBocmVmPSJpbmRleC5odG1sIj5CYWNrIHRvIGluZGV4IG9mIGFsbCBVUEMgZnVuY3Rpb25zPC9hPgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfbG9ja19mcmVlLmh0bWwgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19sb2NrX2ZyZWUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzU2ZDNmMy4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19sb2NrX2ZyZWUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLTxoMiA+VGhlIDxjb2RlPnVwY19sb2NrX2ZyZWU8L2NvZGU+IGZ1bmN0aW9uICAgPC9oMj4KLQotPGg0PlN5bm9wc2lzPC9oND4KLTxwPgotCi08cHJlPiAKLSAgICAjaW5jbHVkZSAmbHQ7dXBjLmgmZ3Q7Ci0gICAgdXBjX2xvY2tfdCAqdXBjX2xvY2tfZnJlZSh1cGNfbG9ja190ICpwdHIpOyAgICAgICAgICAgICAgICAgICAgIAotPC9wcmU+Ci0KLTxwPgotPGg0PkRlc2NyaXB0aW9uPC9oND4KLQotPHA+Ci1UaGUgPGNvZGU+dXBjX2xvY2tfZnJlZTwvY29kZT4gICAgZnVuY3Rpb24gIGZyZWVzIGFsbCByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBkeW5hbWljYWxseQotYWxsb2NhdGVkIDxjb2RlPnVwY19sb2NrX3Q8L2NvZGU+IHBvaW50ZWQgdG8gYnkgPGNvZGU+cHRyPC9jb2RlPi4gCi1JZiA8Y29kZT5wdHI8L2NvZGU+IGlzIGEgbnVsbCBwb2ludGVyLCBubwotYWN0aW9uIG9jY3Vycy4gCi1PdGhlcndpc2UsIGlmIHRoZSBhcmd1bWVudCBkb2VzIG5vdCBtYXRjaCBhIHBvaW50ZXIgZWFybGllcgotcmV0dXJuZWQgYnkgdGhlIDxjb2RlPnVwY19nbG9iYWxfbG9ja19hbGxvYzwvY29kZT4gb3IgCi08Y29kZT51cGNfYWxsX2xvY2tfYWxsb2M8L2NvZGU+IGZ1bmN0aW9uLAotb3IgaWYgdGhlIGxvY2sgaGFzIGJlZW4gZGVhbGxvY2F0ZWQgYnkgYSBwcmV2aW91cyBjYWxsIHRvIDxjb2RlPnVwY19sb2NrX2ZyZWU8L2NvZGU+LAotdGhlIGJlaGF2aW9yIGlzIHVuZGVmaW5lZC4KLTxwPgotPGNvZGU+dXBjX2xvY2tfZnJlZTwvY29kZT4gc3VjY2VlZHMgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZSByZWZlcmVuY2VkIGxvY2sgaXMgY3VycmVudGx5Ci11bmxvY2tlZCBvciBjdXJyZW50bHkgbG9ja2VkIChieSBhbnkgdGhyZWFkKS4KLTxwPkFueSBzdWJzZXF1ZW50IGNhbGxzIHRvIGxvY2tpbmcgZnVuY3Rpb25zIGZyb20gYW55IHRocmVhZCB1c2luZyA8Y29kZT5wdHI8L2NvZGU+IGhhdmUKLXVuZGVmaW5lZCBlZmZlY3RzLiBUaGlzIGFsc28gYXBwbGllcyB0byBhbnkgdGhyZWFkIGN1cnJlbnRseSBjYWxsaW5nIDxjb2RlPnVwY19sb2NrPC9jb2RlPi4KLTxwPiZuYnNwCi08cD4mbmJzcAotPHA+PGEgaHJlZj0idGVybXMuaHRtbCI+VGVybXMsIGRlZmluaXRpb25zLCBhbmQgc3ltYm9sczwvYT48YnI+Ci08cD48YSBocmVmPSJpbmRleC5odG1sIj5CYWNrIHRvIGluZGV4IG9mIGFsbCBVUEMgZnVuY3Rpb25zPC9hPgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfbG9ja190Lmh0bWwgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19sb2NrX3QuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDJhYTU5Ni4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19sb2NrX3QuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLTxoMj5UaGUgPGNvZGU+dXBjX2xvY2tfdDwvY29kZT4gdHlwZTwvaDI+Ci0KLTxoND5TeW5vcHNpczwvaDQ+Ci08cD5UaGUgdHlwZSBkZWNsYXJlZCBpcwotPHByZT4gICAKLSAgICB1cGNfbG9ja190ICAgICAgICAgICAgICAgCi08L3ByZT4KLTxwPgotPGg0PkRlc2NyaXB0aW9uPC9oND4KLTxwPgotVGhlIHR5cGUgPGNvZGU+dXBjX2xvY2tfdCA8L2NvZGU+ICBpcyBhbiBvcGFxdWUgVVBDIHR5cGUuIDxjb2RlPnVwY19sb2NrX3QgPC9jb2RlPiBpcyBhIHNoYXJlZAotZGF0YXR5cGUgd2l0aCBpbmNvbXBsZXRlIHR5cGUgKGFzIGRlZmluZWQgaW4gW0lTTy9JRUMwMCBTZWMgNi4yLjVdKS4gCi1PYmplY3RzCi1vZiB0eXBlIDxjb2RlPnVwY19sb2NrX3QgPC9jb2RlPiBtYXkgdGhlcmVmb3JlIG9ubHkgYmUgbWFuaXB1bGF0ZWQgdGhyb3VnaCBwb2ludGVycy4KLVN1Y2ggb2JqZWN0cyBoYXZlIHR3byBzdGF0ZXMgY2FsbGVkIGxvY2tlZCBhbmQgdW5sb2NrZWQuCi08cD5Ud28gcG9pbnRlcnMgdG8gdGhhdCByZWZlcmVuY2UgdGhlIHNhbWUgbG9jayBvYmplY3Qgd2lsbCBjb21wYXJlIGFzIGVxdWFsLgotVGhlIHJlc3VsdHMgb2YgYXBwbHlpbmcgdXBjX3BoYXNlb2YoKSwgdXBjX3RocmVhZG9mKCksIGFuZCB1cGNfYWRkcmZpZWxkKCkKLXRvIHN1Y2ggcG9pbnRlcnMgYXJlIHVuZGVmaW5lZC4KLQotCi08cD4mbmJzcAotPHA+Jm5ic3AKLTxwPjxhIGhyZWY9InRlcm1zLmh0bWwiPlRlcm1zLCBkZWZpbml0aW9ucywgYW5kIHN5bWJvbHM8L2E+PGJyPgotPHA+PGEgaHJlZj0iaW5kZXguaHRtbCI+QmFjayB0byBpbmRleCBvZiBhbGwgVVBDIGZ1bmN0aW9uczwvYT4KZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX21lbWNweS5odG1sIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfbWVtY3B5Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1ZTRhZjYuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfbWVtY3B5Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi08aDIgPlRoZSA8Y29kZT51cGNfbWVtY3B5PC9jb2RlPiBmdW5jdGlvbiAgIDwvaDI+Ci0KLTxoND5TeW5vcHNpczwvaDQ+Ci08cD4KLQotPHByZT4gCi0gICAgI2luY2x1ZGUgJmx0O3VwYy5oJmd0OwotICAgIHZvaWQgdXBjX21lbWNweShzaGFyZWQgdm9pZCAqIHJlc3RyaWN0IGRzdCwgCi0gICAgICAgICAgICAgICAgICAgIHNoYXJlZCBjb25zdCB2b2lkICogcmVzdHJpY3Qgc3JjLCAKLSAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG4pOwotICAgICAgICAgICAgICAgICAgICAKLTwvcHJlPgotCi08cD4KLTxoND5EZXNjcmlwdGlvbjwvaDQ+Ci0KLTxwPgotVGhlIDxjb2RlPnVwY19tZW1jcHk8L2NvZGU+ICAgIGZ1bmN0aW9uICBjb3BpZXMgbiBjaGFyYWN0ZXJzIGZyb20gYSBzaGFyZWQgb2JqZWN0IGhhdmluZwotYWZmaW5pdHkgd2l0aCBvbmUgdGhyZWFkIHRvIGEgc2hhcmVkIG9iamVjdCBoYXZpbmcgYWZmaW5pdHkgd2l0aCB0aGUgc2FtZSBvcgotYW5vdGhlciB0aHJlYWQuCi08cD5UaGUgPGNvZGU+dXBjX21lbWNweTwvY29kZT4gZnVuY3Rpb24gdHJlYXRzIHRoZSA8Y29kZT5kc3Q8L2NvZGU+IGFuZCA8Y29kZT5zcmM8L2NvZGU+IHBvaW50ZXJzIGFzIGlmIAotdGhleSBoYWQgdHlwZToKLTxwcmU+Ci0gICAgc2hhcmVkIFtdIGNoYXJbbl0KLTwvcHJlPgotVGhlIGVmZmVjdCBpcyBlcXVpdmFsZW50IHRvIGNvcHlpbmcgdGhlIGVudGlyZSBjb250ZW50cyBmcm9tIG9uZSBzaGFyZWQgYXJyYXkKLW9iamVjdCB3aXRoIHRoaXMgdHlwZSAodGhlIDxjb2RlPnNyYzwvY29kZT4gYXJyYXkpIHRvIGFub3RoZXIgc2hhcmVkIGFycmF5IG9iamVjdCB3aXRoCi10aGlzIHR5cGUgKHRoZSA8Y29kZT5kc3Q8L2NvZGU+IGFycmF5KS4KLQotPHA+Jm5ic3AKLTxwPiZuYnNwCi08cD48YSBocmVmPSJ0ZXJtcy5odG1sIj5UZXJtcywgZGVmaW5pdGlvbnMsIGFuZCBzeW1ib2xzPC9hPjxicj4KLTxwPjxhIGhyZWY9ImluZGV4Lmh0bWwiPkJhY2sgdG8gaW5kZXggb2YgYWxsIFVQQyBmdW5jdGlvbnM8L2E+CmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19tZW1nZXQuaHRtbCBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX21lbWdldC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Y2JjNDQ0Li4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX21lbWdldC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotPGgyID5UaGUgPGNvZGU+dXBjX21lbWdldDwvY29kZT4gZnVuY3Rpb24gICA8L2gyPgotCi08aDQ+U3lub3BzaXM8L2g0PgotPHA+Ci0KLTxwcmU+IAotICAgICNpbmNsdWRlICZsdDt1cGMuaCZndDsKLSAgICB2b2lkIHVwY19tZW1nZXQodm9pZCAqIHJlc3RyaWN0IGRzdCwgCi0gICAgICAgICAgICAgICAgICAgIHNoYXJlZCBjb25zdCB2b2lkICogcmVzdHJpY3Qgc3JjLCAKLSAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG4pOwotICAgICAgICAgICAgICAgICAgICAKLTwvcHJlPgotCi08cD4KLTxoND5EZXNjcmlwdGlvbjwvaDQ+Ci0KLTxwPgotVGhlIDxjb2RlPnVwY19tZW1nZXQ8L2NvZGU+ICAgIGZ1bmN0aW9uICBjb3BpZXMgbiBjaGFyYWN0ZXJzIGZyb20gYSBzaGFyZWQgb2JqZWN0IHdpdGggYWZmaW5pdHkKLXRvIGFueSBzaW5nbGUgdGhyZWFkIHRvIGFuIG9iamVjdCBvbiB0aGUgY2FsbGluZyB0aHJlYWQuCi08cD5UaGUgPGNvZGU+dXBjX21lbWdldDwvY29kZT4gZnVuY3Rpb24gdHJlYXRzIHRoZSA8Y29kZT5zcmM8L2NvZGU+IHBvaW50ZXIgYXMgaWYgaXQgaGFkIHR5cGU6Ci08cHJlPgotICAgIHNoYXJlZCBbXSBjaGFyW25dCi0gICAgPC9wcmU+Ci1UaGUgZWZmZWN0IGlzIGVxdWl2YWxlbnQgdG8gY29weWluZyB0aGUgZW50aXJlIGNvbnRlbnRzIGZyb20gb25lIHNoYXJlZCBhcnJheQotb2JqZWN0IHdpdGggdGhpcyB0eXBlICh0aGUgPGNvZGU+c3JjPC9jb2RlPiBhcnJheSkgdG8gYW4gYXJyYXkgb2JqZWN0ICh0aGUgPGNvZGU+ZHN0PC9jb2RlPiBhcnJheSkKLWRlY2xhcmVkIHdpdGggdGhlIHR5cGUKLTxwcmU+Ci0gICAgY2hhcltuXQotPC9wcmU+Ci0KLQotPHA+Jm5ic3AKLTxwPiZuYnNwCi08cD48YSBocmVmPSJ0ZXJtcy5odG1sIj5UZXJtcywgZGVmaW5pdGlvbnMsIGFuZCBzeW1ib2xzPC9hPjxicj4KLTxwPjxhIGhyZWY9ImluZGV4Lmh0bWwiPkJhY2sgdG8gaW5kZXggb2YgYWxsIFVQQyBmdW5jdGlvbnM8L2E+CmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19tZW1zZXQuaHRtbCBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX21lbXNldC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxODRkODIwLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX21lbXNldC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotPGgyID5UaGUgPGNvZGU+dXBjX21lbXNldDwvY29kZT4gZnVuY3Rpb24gICA8L2gyPgotCi08aDQ+U3lub3BzaXM8L2g0PgotPHA+Ci0KLTxwcmU+IAotICAgICNpbmNsdWRlICZsdDt1cGMuaCZndDsKLSAgICB2b2lkIHVwY19tZW1zZXQoc2hhcmVkIHZvaWQgKmRzdCwgCi0gICAgICAgICAgICAgICAgICAgIGludCBjLCAKLSAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG4pOwotICAgICAgICAgICAgICAgICAgICAKLTwvcHJlPgotCi08cD4KLTxoND5EZXNjcmlwdGlvbjwvaDQ+Ci0KLTxwPgotVGhlIDxjb2RlPnVwY19tZW1zZXQ8L2NvZGU+ICAgIGZ1bmN0aW9uICBjb3BpZXMgdGhlIHZhbHVlIG9mIGMsIGNvbnZlcnRlZCB0byBhbiB1bnNpZ25lZAotY2hhciwgdG8gYSBzaGFyZWQgb2JqZWN0IHdpdGggYWZmaW5pdHkgdG8gYW55IHNpbmdsZSB0aHJlYWQuIFRoZSBudW1iZXIgb2YKLWJ5dGVzIHNldCBpcyBuLgotPHA+VGhlIDxjb2RlPnVwY19tZW1zZXQ8L2NvZGU+ICBmdW5jdGlvbiB0cmVhdHMgdGhlIDxjb2RlPmRzdDwvY29kZT4gcG9pbnRlciBhcyBpZiBoYWQgdHlwZToKLTxwcmU+Ci0gICAgc2hhcmVkIFtdIGNoYXJbbl0KLTwvcHJlPgotICAgIAotVGhlIGVmZmVjdCBpcyBlcXVpdmFsZW50IHRvIHNldHRpbmcgdGhlIGVudGlyZSBjb250ZW50cyBvZiBhIHNoYXJlZCBhcnJheSBvYmplY3QKLXdpdGggdGhpcyB0eXBlICh0aGUgPGNvZGU+ZHN0PC9jb2RlPiBhcnJheSkgdG8gdGhlIHZhbHVlIGMuCi0KLTxwPiZuYnNwCi08cD4mbmJzcAotPHA+PGEgaHJlZj0idGVybXMuaHRtbCI+VGVybXMsIGRlZmluaXRpb25zLCBhbmQgc3ltYm9sczwvYT48YnI+Ci08cD48YSBocmVmPSJpbmRleC5odG1sIj5CYWNrIHRvIGluZGV4IG9mIGFsbCBVUEMgZnVuY3Rpb25zPC9hPgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfcGhhc2VvZi5odG1sIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfcGhhc2VvZi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZWU0YmZhLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX3BoYXNlb2YuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLTxoMj5UaGUgPGNvZGU+dXBjX3BoYXNlb2Y8L2NvZGU+IGZ1bmN0aW9uPC9oMj4KLQotPGg0PlN5bm9wc2lzPC9oND4KLTxwcmU+ICAgICNpbmNsdWRlICZsdDt1cGMuaCZndDsKLSAgICBzaXplX3QgdXBjX3BoYXNlb2Yoc2hhcmVkIHZvaWQgKnB0cik7ICAgICAgICAgICAgICAgICAgICAgICAgICAKLTwvcHJlPgotPHA+Ci08aDQ+RGVzY3JpcHRpb248L2g0PgotCi08cD4KLVRoZSA8Y29kZT51cGNfcGhhc2VvZiA8L2NvZGU+IGZ1bmN0aW9uICByZXR1cm5zIHRoZSBwaGFzZSBjb21wb25lbnQgb2YgdGhlIHBvaW50ZXItdG8tc2hhcmVkCi1hcmd1bWVudC4KLTxwPklmIDxjb2RlPnB0cjwvY29kZT4gaXMgYSBudWxsIHBvaW50ZXItdG8tc2hhcmVkLCB0aGUgZnVuY3Rpb24gcmV0dXJucyAwLgotCi0KLTxwPiZuYnNwCi08cD4mbmJzcAotPHA+PGEgaHJlZj0idGVybXMuaHRtbCI+VGVybXMsIGRlZmluaXRpb25zLCBhbmQgc3ltYm9sczwvYT48YnI+Ci08cD48YSBocmVmPSJpbmRleC5odG1sIj5CYWNrIHRvIGluZGV4IG9mIGFsbCBVUEMgZnVuY3Rpb25zPC9hPgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfcmVzZXRwaGFzZS5odG1sIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfcmVzZXRwaGFzZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MzI3ODAyLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX3Jlc2V0cGhhc2UuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLTxoMj5UaGUgPGNvZGU+dXBjX3Jlc2V0cGhhc2U8L2NvZGU+IGZ1bmN0aW9uPC9oMj4KLQotPGg0PlN5bm9wc2lzPC9oND4KLTxwcmU+ICAgIAotICAgICNpbmNsdWRlICZsdDt1cGMuaCZndDsKLSAgICBzaGFyZWQgdm9pZCAqdXBjX3Jlc2V0cGhhc2Uoc2hhcmVkIHZvaWQgKnB0cik7ICAgICAgICAgICAgICAgICAgICAgCi08L3ByZT4KLTxwPgotPGg0PkRlc2NyaXB0aW9uPC9oND4KLQotPHA+Ci1UaGUgPGNvZGU+dXBjX3Jlc2V0cGhhc2UgPC9jb2RlPiBmdW5jdGlvbiAgIHJldHVybnMgYSBwb2ludGVyLXRvLXNoYXJlZCB3aGljaCBpcyBpZGVudGljYWwKLXRvIGl0cyBpbnB1dCBleGNlcHQgdGhhdCBpdCBoYXMgemVybyBwaGFzZS4KLQotCi08cD4mbmJzcAotPHA+Jm5ic3AKLTxwPjxhIGhyZWY9InRlcm1zLmh0bWwiPlRlcm1zLCBkZWZpbml0aW9ucywgYW5kIHN5bWJvbHM8L2E+PGJyPgotPHA+PGEgaHJlZj0iaW5kZXguaHRtbCI+QmFjayB0byBpbmRleCBvZiBhbGwgVVBDIGZ1bmN0aW9uczwvYT4KZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX3RocmVhZG9mLmh0bWwgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY190aHJlYWRvZi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMGI0MTBiLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX3RocmVhZG9mLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi08aDIgPlRoZSA8Y29kZT51cGNfdGhyZWFkb2Y8L2NvZGU+IGZ1bmN0aW9uICZuYnNwOyZuYnNwOyA8L2gyPgotCi08aDQ+U3lub3BzaXM8L2g0PgotPHA+Ci08cHJlPiAKLSAgICAjaW5jbHVkZSAmbHQ7dXBjLmgmZ3Q7Ci0gICAgc2l6ZV90IHVwY190aHJlYWRvZihzaGFyZWQgdm9pZCAqcHRyKTsgICAgICAgICAgICAgICAgICAgICAgICAKLTwvcHJlPgotPHA+Ci08aDQ+RGVzY3JpcHRpb248L2g0PgotPHA+Ci1UaGUgPGNvZGU+dXBjX3RocmVhZG9mIDwvY29kZT5mdW5jdGlvbiByZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgdGhyZWFkIHRoYXQgaGFzIGFmZmluaXR5Ci10byB0aGUgc2hhcmVkIG9iamVjdCBwb2ludGVkIHRvIGJ5IDxjb2RlPnB0cjwvY29kZT4uCi08cD4KLUlmIDxjb2RlPnB0cjwvY29kZT4gaXMgYSBudWxsIHBvaW50ZXItdG8tc2hhcmVkLCB0aGUgZnVuY3Rpb24gcmV0dXJucyAwLgotCi08cD4mbmJzcAotPHA+Jm5ic3AKLTxwPjxhIGhyZWY9InRlcm1zLmh0bWwiPlRlcm1zLCBkZWZpbml0aW9ucywgYW5kIHN5bWJvbHM8L2E+PGJyPgotPHA+PGEgaHJlZj0iaW5kZXguaHRtbCI+QmFjayB0byBpbmRleCBvZiBhbGwgVVBDIGZ1bmN0aW9uczwvYT4KZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX3VubG9jay5odG1sIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfdW5sb2NrLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExMmQwYWIuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfdW5sb2NrLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi08aDIgPlRoZSA8Y29kZT51cGNfdW5sb2NrPC9jb2RlPiBmdW5jdGlvbiAgIDwvaDI+Ci0KLTxoND5TeW5vcHNpczwvaDQ+Ci08cD4KLQotPHByZT4gCi0gICAgI2luY2x1ZGUgJmx0O3VwYy5oJmd0OwotICAgIHZvaWQgdXBjX3VubG9jayh1cGNfbG9ja190ICpwdHIpOyAgICAgICAgICAgICAgCi08L3ByZT4KLQotPHA+Ci08aDQ+RGVzY3JpcHRpb248L2g0PgotCi08cD4KLVRoZSA8Y29kZT51cGNfdW5sb2NrPC9jb2RlPiAgICBmdW5jdGlvbiAgc2V0cyB0aGUgc3RhdGUgb2YgdGhlIGxvY2sgcG9pbnRlZCB0byBieSA8Y29kZT5wdHI8L2NvZGU+IHRvCi11bmxvY2tlZC4KLTxwPlVubGVzcyB0aGUgbG9jayBpcyBpbiBsb2NrZWQgc3RhdGUgYW5kIHRoZSBjYWxsaW5nIHRocmVhZCBpcyB0aGUgbG9ja2luZyB0aHJlYWQsCi10aGUgcmVzdWx0IGlzIHVuZGVmaW5lZC4KLTxwPkEgbnVsbCBzdHJpY3QgYWNjZXNzIGlzIGltcGxpZWQgYmVmb3JlIGEgY2FsbCB0byB1cGMgdW5sb2NrKCkuCi0KLTxwPiZuYnNwCi08cD4mbmJzcAotPHA+PGEgaHJlZj0idGVybXMuaHRtbCI+VGVybXMsIGRlZmluaXRpb25zLCBhbmQgc3ltYm9sczwvYT48YnI+Ci08cD48YSBocmVmPSJpbmRleC5odG1sIj5CYWNrIHRvIGluZGV4IG9mIGFsbCBVUEMgZnVuY3Rpb25zPC9hPgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaWNvbnMvLmN2c2lnbm9yZSBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2ljb25zLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyZjJlYjguLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaWNvbnMvLmN2c2lnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLXBzcGJyd3NlLmpiZgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaWNvbnMvdXBjLmdpZiBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2ljb25zL3VwYy5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhYTg3MzMuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaWNvbnMvdXBjLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL3BsdWdpbi5wcm9wZXJ0aWVzIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvcGx1Z2luLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyZGZmYjcuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvcGx1Z2luLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi0jICAgIHRlc3QgcGx1Z2luLnByb3BlcnRpZXMKLSMgVGhlc2UgbmFtZXMgd2lsbCBiZSB1c2VkIGluIHBsdWdpbi54bWwgCi0jCi0KLXZpZXcubmFtZT1VUEMgQXJ0aWZhY3QgVmlldwotdmlld2NhdC5uYW1lPVBUUCBVUEMgVmlld3MKLXJ1bi5sYWJlbD1SdW4gVVBDIEFuYWx5c2lzCi1ydW4udG9vbHRpcD1SdW4gVVBDIEFuYWx5c2lzIG9uIHNlbGVjdGVkIGZpbGUsIGZvbGRlciwgb3IgcHJvamVjdCB0byBmaW5kIFVQQyBBcnRpZmFjdHMKLQotI25lZWQgdG8gYWRkIG1vcmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9wbHVnaW4ueG1sIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvcGx1Z2luLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjZmZjQ0NC4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9wbHVnaW4ueG1sCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTw/ZWNsaXBzZSB2ZXJzaW9uPSIzLjAiPz4KLTxwbHVnaW4+Ci0gICAKLSAgIDxleHRlbnNpb24KLSAgICAgICAgIHBvaW50PSJvcmcuZWNsaXBzZS51aS5wcmVmZXJlbmNlUGFnZXMiPgotICAgICAgICAgPHBhZ2UKLSAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS5wdHAucGxkdC51cGMucHJlZnMuVVBDUHJlZmVyZW5jZVBhZ2UiCi0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UucHRwLnBsZHQudXBjLnByZWZwYWdlIgotICAgICAgICAgICAgY2F0ZWdvcnk9Im9yZy5lY2xpcHNlLnB0cC5wbGR0LmNvbW1vbi5wcmVmcy5QTERUUHJlZmVyZW5jZVBhZ2UiCi0gICAgICAgICAgICBuYW1lPSJVUEMiLz4KLSAgICAgICAgIAotICAgPC9leHRlbnNpb24+Ci0KLSAgIDwhLS0gIFVQQyBtYXJrZXJzIC0tPgotICAgPGV4dGVuc2lvbiBwb2ludD0ib3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMubWFya2VycyIKLQkJaWQ9InVwY01hcmtlciIKLSAgICAgICAgbmFtZT0idXBjIEFydGlmYWN0IE1hcmtlciI+Ci0gICAgICA8c3VwZXIgdHlwZT0ib3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMudGV4dG1hcmtlciIvPgotICAgPC9leHRlbnNpb24+Ci0gICA8IS0tIHRoaXMgY2hhbmdlcyB0aGUgbWFya2VyIGltYWdlIGluIHRoZSBlZGl0b3IgbWFya2VyIGJhciAgLS0+Ci0gICA8ZXh0ZW5zaW9uCi0gICAgICAgICBwb2ludD0ib3JnLmVjbGlwc2UudWkuZWRpdG9ycy5hbm5vdGF0aW9uVHlwZXMiPgotICAgICAgPHR5cGUKLSAgICAgICAgICAgIG1hcmtlclR5cGU9Im9yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy51cGNNYXJrZXIiCi0gICAgICAgICAgICBuYW1lPSJvcmcuZWNsaXBzZS5wdHAucGxkdC51cGMudXBjTWFya2VyQW5ub3RhdGlvbiI+Ci0gICAgICA8L3R5cGU+Ci0gICA8L2V4dGVuc2lvbj4KLSAgIDxleHRlbnNpb24KLSAgICAgICAgIHBvaW50PSJvcmcuZWNsaXBzZS51aS5lZGl0b3JzLm1hcmtlckFubm90YXRpb25TcGVjaWZpY2F0aW9uIj4KLSAgICAgIDxzcGVjaWZpY2F0aW9uCi0gICAgICAgICAgICBhbm5vdGF0aW9uVHlwZT0ib3JnLmVjbGlwc2UucHRwLnBsZHQudXBjLnVwY01hcmtlckFubm90YXRpb24iCi0gICAgICAgICAgICBpY29uPSJpY29ucy91cGMuZ2lmIiAKLSAgICAgICAgICAgIAotICAgICAgICAgICAgcHJlc2VudGF0aW9uTGF5ZXI9IjMiCi0gICAgICAgICAgICBsYWJlbD0idXBjIEFubm90YXRpb24gTWFya2VyIgotICAgICAgICAgICAgCi0gICAgICAgICAgICB0ZXh0UHJlZmVyZW5jZUtleT0idXBjSW5kaWNhdGlvbiIKLSAgICAgICAgICAgIHRleHRQcmVmZXJlbmNlVmFsdWU9InRydWUiCi0gICAgICAgICAgICBoaWdobGlnaHRQcmVmZXJlbmNlS2V5PSJhcnRpZmFjdEhpZ2hsaWdodGluZyIKLSAgICAgICAgICAgIGhpZ2hsaWdodFByZWZlcmVuY2VWYWx1ZT0iZmFsc2UiCi0gICAgICAgICAgICBjb2xvclByZWZlcmVuY2VLZXk9ImFydGlmYWN0SW5kaWNhdGlvbkNvbG9yIgotICAgICAgICAgICAgY29sb3JQcmVmZXJlbmNlVmFsdWU9IjEyOCwxMjgsMTkyIgotICAgICAgICAgICAgdmVydGljYWxSdWxlclByZWZlcmVuY2VLZXk9ImFydGlmYWN0SW5kaWNhdGlvbkluVmVydGljYWxSdWxlciIKLSAgICAgICAgICAgIHZlcnRpY2FsUnVsZXJQcmVmZXJlbmNlVmFsdWU9InRydWUiCi0JCQlzaG93SW5OZXh0UHJldkRyb3Bkb3duVG9vbGJhckFjdGlvbktleT0ic2hvd1BvcnRpbmdJbk5leHRQcmV2RHJvcGRvd25Ub29sYmFyQWN0aW9uIgotICAgICAgICAgICAgc2hvd0luTmV4dFByZXZEcm9wZG93blRvb2xiYXJBY3Rpb249ImZhbHNlIgotICAgICAgICAgICAgb3ZlcnZpZXdSdWxlclByZWZlcmVuY2VLZXk9ImFydGlmYWN0SW5kaWNhdGlvbkluT3ZlcnZpZXdSdWxlciIKLSAgICAgICAgICAgIG92ZXJ2aWV3UnVsZXJQcmVmZXJlbmNlVmFsdWU9InRydWUiCi0gICAgICAgICAgICAKLSAgICAgICAgICAgIGluY2x1ZGVPblByZWZlcmVuY2VQYWdlPSJ0cnVlIgotICAgICAgICAgICAgaXNHb1RvUHJldmlvdXNOYXZpZ2F0aW9uVGFyZ2V0S2V5PSJpc1BvcnRpbmdHb1RvUHJldmlvdXNOYXZpZ2F0aW9uVGFyZ2V0IgotCi0gICAgICAgICAgICBpc0dvVG9OZXh0TmF2aWdhdGlvblRhcmdldEtleT0iaXNQb3J0aW5nUmVjb3JkR29Ub05leHROYXZpZ2F0aW9uVGFyZ2V0IgotICAgICAgICAgICAgPgotICAgICAgPC9zcGVjaWZpY2F0aW9uPiAgCi0gICA8L2V4dGVuc2lvbj4KLSAgIDxleHRlbnNpb24KLSAgICAgICAgIHBvaW50PSJvcmcuZWNsaXBzZS51aS52aWV3cyI+Ci0gICAgICA8Y2F0ZWdvcnkKLSAgICAgICAgICAgIG5hbWU9IiV2aWV3Y2F0Lm5hbWUiCi0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UucHRwLnBsZHQudXBjIj4KLSAgICAgIDwvY2F0ZWdvcnk+Ci0gICAgICA8dmlldwotICAgICAgICAgICAgbmFtZT0iJXZpZXcubmFtZSIKLSAgICAgICAgICAgIGljb249Imljb25zL3VwYy5naWYiCi0gICAgICAgICAgICBjYXRlZ29yeT0ib3JnLmVjbGlwc2UucHRwLnBsZHQudXBjIgotICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy52aWV3cy5VUENBcnRpZmFjdFZpZXciCi0gICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UucHRwLnBsZHQudXBjLnZpZXdzLnVwY0FydGlmYWN0VmlldyI+Ci0gICAgICA8L3ZpZXc+Ci0gICA8L2V4dGVuc2lvbj4KLSAgIDxleHRlbnNpb24KLSAgICAgICAgIHBvaW50PSJvcmcuZWNsaXBzZS5jZHQudWkuQ0hlbHBQcm92aWRlciI+Ci0gICAgICA8cHJvdmlkZXIKLSAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS5wdHAucGxkdC51cGMuZWRpdG9ySGVscC5VUENDSGVscEluZm9Qcm92aWRlciIKLSAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wdHAucGxkdC51cGMuZWRpdG9ySGVscC5VUENDSGVscEluZm9Qcm92aWRlciIvPgotICAgPC9leHRlbnNpb24+Ci0KLSAgIDxleHRlbnNpb24KLSAgICAgICAgIHBvaW50PSJvcmcuZWNsaXBzZS51aS5jb21tYW5kcyI+Ci0gICAgICA8Y29tbWFuZAotICAgICAgICAgICAgZGVmYXVsdEhhbmRsZXI9Im9yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy5hY3Rpb25zLlJ1bkFuYWx5c2VVUENjb21tYW5kSGFuZGxlciIKLSAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wdHAucGxkdC51cGMuY29tbWFuZDIiCi0gICAgICAgICAgICBuYW1lPSJmaW5kIHVwYyBhcnRpZmFjdHMiPgotICAgICAgPC9jb21tYW5kPgotICAgPC9leHRlbnNpb24+Ci0gICAgICA8ZXh0ZW5zaW9uCi0gICAgICAgICBwb2ludD0ib3JnLmVjbGlwc2UudWkubWVudXMiPgotICAgICAgPG1lbnVDb250cmlidXRpb24KLSAgICAgICAgICAgIGxvY2F0aW9uVVJJPSJtZW51Om9yZy5lY2xpcHNlLnB0cC5wbGR0LmNvbW1vbi50b29sYmFyLmNvbW1hbmQxICI+Ci0gICAgICAgICA8Y29tbWFuZAotICAgICAgICAgICAgICAgY29tbWFuZElkPSJvcmcuZWNsaXBzZS5wdHAucGxkdC51cGMuY29tbWFuZDIiCi0gICAgICAgICAgICAgICBpY29uPSJpY29ucy91cGMuZ2lmIgotICAgICAgICAgICAgICAgbGFiZWw9IlNob3cgVVBDIEFydGlmYWN0cyI+Ci0gICAgICAgICA8L2NvbW1hbmQ+Ci0gICAgICA8L21lbnVDb250cmlidXRpb24+Ci0gICA8L2V4dGVuc2lvbj4KLTwvcGx1Z2luPgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvc3JjL29yZy9lY2xpcHNlL3B0cC9wbGR0L3VwYy9VUENBcnRpZmFjdE1hcmtpbmdWaXNpdG9yLmphdmEgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9zcmMvb3JnL2VjbGlwc2UvcHRwL3BsZHQvdXBjL1VQQ0FydGlmYWN0TWFya2luZ1Zpc2l0b3IuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTNkZjUwNS4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9zcmMvb3JnL2VjbGlwc2UvcHRwL3BsZHQvdXBjL1VQQ0FydGlmYWN0TWFya2luZ1Zpc2l0b3IuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDggSUJNIENvcnBvcmF0aW9uLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UucHRwLnBsZHQuY29tbW9uLkFydGlmYWN0TWFya2luZ1Zpc2l0b3I7Ci0KLXB1YmxpYyBjbGFzcyBVUENBcnRpZmFjdE1hcmtpbmdWaXNpdG9yIGV4dGVuZHMgQXJ0aWZhY3RNYXJraW5nVmlzaXRvcgotewotICAgIHB1YmxpYyBVUENBcnRpZmFjdE1hcmtpbmdWaXNpdG9yKFN0cmluZyBtYXJrZXJJZCkKLSAgICB7Ci0gICAgICAgIHN1cGVyKG1hcmtlcklkKTsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9zcmMvb3JnL2VjbGlwc2UvcHRwL3BsZHQvdXBjL1VQQ0lEcy5qYXZhIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvc3JjL29yZy9lY2xpcHNlL3B0cC9wbGR0L3VwYy9VUENJRHMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2RjNGVlNy4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9zcmMvb3JnL2VjbGlwc2UvcHRwL3BsZHQvdXBjL1VQQ0lEcy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwOCBJQk0gQ29ycG9yYXRpb24uCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5wdHAucGxkdC51cGM7Ci0KLS8qKgotICogVVBDIFBsdWdpbiBjb25zdGFudHMKLSAqIAotICogQGF1dGhvciBCZXRoIFRpYmJpdHRzCi0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgVVBDSURzCi17Ci0gICAgLy8gcHJlZmVyZW5jZSBwYWdlIG5hbWUgZm9yIFVQQwotICAgIFN0cmluZyBVUENfSU5DTFVERVMgICAgPSAiVVBDIEluY2x1ZGVzIjsKLSAgICAKLSAgICBTdHJpbmcgTUFSS0VSX0lEICAgICAgID0gIm9yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy51cGNNYXJrZXIiOwotICAgIFN0cmluZyBNQVJLRVJfRVJST1JfSUQgPSAib3JnLmVjbGlwc2UucHRwLnBsZHQudXBjLnVwY0Vycm9yTWFya2VyIjsKLSAgICAKLSAgICAvLyBhcnRpZmFjdCB2aWV3IGlkCi0gICAgU3RyaW5nIFVQQ19WSUVXX0lEID0gIm9yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy52aWV3cy51cGNBcnRpZmFjdFZpZXciOwotfQpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvc3JjL29yZy9lY2xpcHNlL3B0cC9wbGR0L3VwYy9VUENQbHVnaW4uamF2YSBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL3NyYy9vcmcvZWNsaXBzZS9wdHAvcGxkdC91cGMvVVBDUGx1Z2luLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiNjdmMDcuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvc3JjL29yZy9lY2xpcHNlL3B0cC9wbGR0L3VwYy9VUENQbHVnaW4uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDggSUJNIENvcnBvcmF0aW9uLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjOwotCi1pbXBvcnQgamF2YS5pby5GaWxlOwotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLlN0cmluZ1Rva2VuaXplcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnJlc291cmNlLkltYWdlRGVzY3JpcHRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5wbHVnaW4uQWJzdHJhY3RVSVBsdWdpbjsKLWltcG9ydCBvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlQ29udGV4dDsKLQotLyoqCi0gKiBUaGUgbWFpbiBwbHVnaW4gY2xhc3MgdG8gYmUgdXNlZCBpbiB0aGUgZGVza3RvcC4KLSAqLwotcHVibGljIGNsYXNzIFVQQ1BsdWdpbiBleHRlbmRzIEFic3RyYWN0VUlQbHVnaW4gewotCi0JLyoqIFRoZSBzaGFyZWQgaW5zdGFuY2UuICovCi0JcHJpdmF0ZSBzdGF0aWMgVVBDUGx1Z2luIHBsdWdpbjsKLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQTFVHSU5fSUQgPSAib3JnLmVjbGlwc2UucHRwLnBsZHQudXBjIjsKLQkKLQkvKioKLQkgKiBUaGUgY29uc3RydWN0b3IuCi0JICovCi0JcHVibGljIFVQQ1BsdWdpbigpIHsKLQkJcGx1Z2luID0gdGhpczsKLQl9Ci0KLQkvKioKLQkgKiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgdXBvbiBwbHVnLWluIGFjdGl2YXRpb24KLQkgKi8KLQlwdWJsaWMgdm9pZCBzdGFydChCdW5kbGVDb250ZXh0IGNvbnRleHQpIHRocm93cyBFeGNlcHRpb24gewotCQlzdXBlci5zdGFydChjb250ZXh0KTsKLQl9Ci0KLQkvKioKLQkgKiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiB0aGUgcGx1Zy1pbiBpcyBzdG9wcGVkCi0JICovCi0JcHVibGljIHZvaWQgc3RvcChCdW5kbGVDb250ZXh0IGNvbnRleHQpIHRocm93cyBFeGNlcHRpb24gewotCQlzdXBlci5zdG9wKGNvbnRleHQpOwotCQlwbHVnaW4gPSBudWxsOwotCX0KLQotCS8qKgotCSAqIFJldHVybnMgdGhlIHNoYXJlZCBpbnN0YW5jZS4KLQkgKi8KLQlwdWJsaWMgc3RhdGljIFVQQ1BsdWdpbiBnZXREZWZhdWx0KCkgewotCQlyZXR1cm4gcGx1Z2luOwotCX0KLQotCS8qKgotCSAqIFJldHVybnMgYW4gaW1hZ2UgZGVzY3JpcHRvciBmb3IgdGhlIGltYWdlIGZpbGUgYXQgdGhlIGdpdmVuCi0JICogcGx1Zy1pbiByZWxhdGl2ZSBwYXRoLgotCSAqCi0JICogQHBhcmFtIHBhdGggdGhlIHBhdGgKLQkgKiBAcmV0dXJuIHRoZSBpbWFnZSBkZXNjcmlwdG9yCi0JICovCi0JcHVibGljIHN0YXRpYyBJbWFnZURlc2NyaXB0b3IgZ2V0SW1hZ2VEZXNjcmlwdG9yKFN0cmluZyBwYXRoKSB7Ci0JCXJldHVybiBBYnN0cmFjdFVJUGx1Z2luLmltYWdlRGVzY3JpcHRvckZyb21QbHVnaW4oIm9yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYyIsIHBhdGgpOwotCX0KLSAgICAKLSAgICAvKioKLSAgICAgKiBSZXR1cm5zIHRoZSBwcmVmZXJlbmNlIHNldHRpbmcgZm9yIFVQQyBpbmNsdWRlIHBhdGhzCi0gICAgICogCi0gICAgICogQHJldHVybgotICAgICAqLwotICAgIHB1YmxpYyBMaXN0PFN0cmluZz4gZ2V0VVBDSW5jbHVkZURpcnMoKQotICAgIHsKLSAgICAgICAgU3RyaW5nIHN0cmluZ0xpc3QgPSBnZXRQbHVnaW5QcmVmZXJlbmNlcygpLmdldFN0cmluZyhVUENJRHMuVVBDX0lOQ0xVREVTKTsKLSAgICAgICAgU3RyaW5nVG9rZW5pemVyIHN0ID0gbmV3IFN0cmluZ1Rva2VuaXplcihzdHJpbmdMaXN0LCBGaWxlLnBhdGhTZXBhcmF0b3IgKyAiXG5cciIpOy8vJE5PTi1OTFMtMSQKLSAgICAgICAgTGlzdDxTdHJpbmc+IGRpcnMgPSBuZXcgQXJyYXlMaXN0PFN0cmluZz4oKTsKLSAgICAgICAgd2hpbGUgKHN0Lmhhc01vcmVFbGVtZW50cygpKSB7Ci0gICAgICAgICAgICBkaXJzLmFkZChzdC5uZXh0VG9rZW4oKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGRpcnM7Ci0gICAgfQotICAgIAotICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldFBsdWdpbklkKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBQTFVHSU5fSUQ7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvc3JjL29yZy9lY2xpcHNlL3B0cC9wbGR0L3VwYy9hY3Rpb25zL1J1bkFuYWx5c2VVUENjb21tYW5kSGFuZGxlci5qYXZhIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvc3JjL29yZy9lY2xpcHNlL3B0cC9wbGR0L3VwYy9hY3Rpb25zL1J1bkFuYWx5c2VVUENjb21tYW5kSGFuZGxlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5M2M5MzU2Li4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL3NyYy9vcmcvZWNsaXBzZS9wdHAvcGxkdC91cGMvYWN0aW9ucy9SdW5BbmFseXNlVVBDY29tbWFuZEhhbmRsZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEwMyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA4IElCTSBDb3Jwb3JhdGlvbi4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy5hY3Rpb25zOwotCi1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jZHQuY29yZS5kb20uYXN0LklBU1RUcmFuc2xhdGlvblVuaXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY2R0LmNvcmUuZG9tLnVwYy5VUENMYW5ndWFnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jZHQuY29yZS5tb2RlbC5JTGFuZ3VhZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY2R0LmNvcmUubW9kZWwuSVRyYW5zbGF0aW9uVW5pdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuQ29yZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5wdHAucGxkdC5jb21tb24uU2NhblJldHVybjsKLWltcG9ydCBvcmcuZWNsaXBzZS5wdHAucGxkdC5jb21tb24uYWN0aW9ucy5SdW5BbmFseXNlSGFuZGxlckJhc2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UucHRwLnBsZHQuY29tbW9uLnV0aWwuVmlld0FjdGl2YXRlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5wdHAucGxkdC51cGMuVVBDQXJ0aWZhY3RNYXJraW5nVmlzaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5wdHAucGxkdC51cGMuVVBDSURzOwotaW1wb3J0IG9yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy5VUENQbHVnaW47Ci1pbXBvcnQgb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjLmFuYWx5c2lzLlVQQ0NBU1RWaXNpdG9yOwotCi0vKioKLSAqIFRoZSAiRmluZCBVUEMgQXJ0aWZhY3RzIiBhY3Rpb24vY29tbWFuZAotICogQGF1dGhvciBCZXRoIFRpYmJpdHRzCi0gKgotICovCi1wdWJsaWMgY2xhc3MgUnVuQW5hbHlzZVVQQ2NvbW1hbmRIYW5kbGVyIGV4dGVuZHMgUnVuQW5hbHlzZUhhbmRsZXJCYXNlCi17Ci0JLyoqCi0JICogQ29uc3RydWN0b3IgZm9yIHRoZSAiUnVuIEFuYWx5c2lzIiBhY3Rpb24KLQkgKi8KLQlwdWJsaWMgUnVuQW5hbHlzZVVQQ2NvbW1hbmRIYW5kbGVyKCkgewotCQlzdXBlcigiVVBDIiwgbmV3IFVQQ0FydGlmYWN0TWFya2luZ1Zpc2l0b3IoVVBDSURzLk1BUktFUl9JRCksIFVQQ0lEcy5NQVJLRVJfSUQpOyAvLyROT04tTkxTLTEkCi0JfQotCi0JLyoqCi0JICogUmV0dXJucyBVUEMgYW5hbHlzaXMgYXJ0aWZhY3RzIGZvciBmaWxlCi0JICogCi0JICogQHBhcmFtIGZpbGUKLQkgKiBAcGFyYW0gaW5jbHVkZXMKLQkgKiAgICAgICAgICAgIFVQQyBpbmNsdWRlIHBhdGhzCi0JICogQHJldHVybgotCSAqLwotCUBPdmVycmlkZQotCXB1YmxpYyBTY2FuUmV0dXJuIGRvQXJ0aWZhY3RBbmFseXNpcyhmaW5hbCBJVHJhbnNsYXRpb25Vbml0IHR1LAlmaW5hbCBMaXN0PFN0cmluZz4gaW5jbHVkZXMpIHsKLQkJZmluYWwgU2NhblJldHVybiBtc3IgPSBuZXcgU2NhblJldHVybigpOwotCQlmaW5hbCBTdHJpbmcgZmlsZU5hbWUgPSB0dS5nZXRFbGVtZW50TmFtZSgpOwotCQlJTGFuZ3VhZ2UgbGFuZzsKLQkJdHJ5IHsKLQkJCWxhbmcgPSB0dS5nZXRMYW5ndWFnZSgpOwotICAgICAgICAgICAgCi0JCQlJQVNUVHJhbnNsYXRpb25Vbml0IGF0dSA9IHR1LmdldEFTVCgpOwotCQkJaWYgKGxhbmcuZ2V0SWQoKS5lcXVhbHMoVVBDTGFuZ3VhZ2UuSUQpKSB7Ly8gY2R0NDAKLQkJCQlhdHUuYWNjZXB0KG5ldyBVUENDQVNUVmlzaXRvcihpbmNsdWRlcywgZmlsZU5hbWUsIG1zcikpOwotCQkJfSAKLQotCQl9IGNhdGNoIChDb3JlRXhjZXB0aW9uIGUpIHsKLQkJCS8vIFRPRE8gQXV0by1nZW5lcmF0ZWQgY2F0Y2ggYmxvY2sKLQkJCWUucHJpbnRTdGFja1RyYWNlKCk7Ci0JCX0KLQkJcmV0dXJuIG1zcjsKLQl9Ci0KLQkvKioKLQkgKiBEZXRlcm1pbmF0aW9uIG9mIHdoZXRoZXIgb3Igbm90IGEgZ2l2ZW4gZmlsZW5hbWUgaXMgdmFsaWQgZm9yIFVQQyBhcnRpZmFjdCBhbmFseXNpcwotCSAqIDxicj5UT0RPICBDb25zaWRlciB1c2luZyBsYW5ndWFnZSBvciBjb250ZW50LXR5cGUgaW5zdGVhZCBvZiBmaWxlIGV4dGVuc2lvbj8KLQkgKiBSZS12aXNpdCBhZnRlciBodHRwczovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MzMxIGlzIHJlc29sdmVkIChVUEMgIGNvbnRlbnQtdHlwZSBub3QgcmVjb2duaXplZCkKLQkgKiAKLQkgKiBAcGFyYW0gZmlsZW5hbWUKLQkgKiBAcGFyYW0gaXNDUFAgIGlzIHRoZSBwcm9qZWN0IGEgQysrIHByb2plY3Qgb3Igbm90Ci0JICogQHJldHVybgotCSAqIAotCSAqLwotCUBPdmVycmlkZQotCXByb3RlY3RlZCBib29sZWFuIHZhbGlkRm9yQW5hbHlzaXMoU3RyaW5nIGZpbGVuYW1lLCBib29sZWFuIGlzQ1BQKSB7Ci0JCWludCBsb2MgPSBmaWxlbmFtZS5sYXN0SW5kZXhPZigiLiIpOwotCQlpZiAobG9jIDw9IDApIC8vIGlmIG5vIGRvdCwgb3IgZmlsZW5hbWUgaXMgIi5mb28iLCBub3QgdmFsaWQgZm9yCi0JCQkJCQkvLyBhbmFseXNpcy4KLQkJCXJldHVybiBmYWxzZTsKLQkJU3RyaW5nIGV4dCA9IGZpbGVuYW1lLnN1YnN0cmluZyhsb2MgKyAxKTsKLQkJZXh0ID0gZXh0LnRvTG93ZXJDYXNlKCk7Ci0JCWJvb2xlYW4gcmVzdWx0ID0gdHJ1ZTsKLQkJaWYgKGV4dC5lcXVhbHMoInVwYyIpKSAKLQkJCXJlc3VsdCA9IHRydWU7Ci0JCWVsc2UKLQkJCXJlc3VsdCA9IGZhbHNlOwotCQlyZXR1cm4gcmVzdWx0OwotCX0KLQlAT3ZlcnJpZGUKLQlwcm90ZWN0ZWQgTGlzdDxTdHJpbmc+IGdldEluY2x1ZGVQYXRoKCkgewotCQlyZXR1cm4gVVBDUGx1Z2luLmdldERlZmF1bHQoKS5nZXRVUENJbmNsdWRlRGlycygpOwotCX0KLQlAT3ZlcnJpZGUKLQlwcm90ZWN0ZWQgdm9pZCBhY3RpdmF0ZUFydGlmYWN0VmlldygpIHsKLQkJVmlld0FjdGl2YXRlci5hY3RpdmF0ZVZpZXcoVVBDSURzLlVQQ19WSUVXX0lEKTsKLQl9Ci19CmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9zcmMvb3JnL2VjbGlwc2UvcHRwL3BsZHQvdXBjL2FuYWx5c2lzL1VQQ0NBU1RWaXNpdG9yLmphdmEgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9zcmMvb3JnL2VjbGlwc2UvcHRwL3BsZHQvdXBjL2FuYWx5c2lzL1VQQ0NBU1RWaXNpdG9yLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxZTcyYjkuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvc3JjL29yZy9lY2xpcHNlL3B0cC9wbGR0L3VwYy9hbmFseXNpcy9VUENDQVNUVmlzaXRvci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwOCBJQk0gQ29ycG9yYXRpb24uCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5wdHAucGxkdC51cGMuYW5hbHlzaXM7Ci0KLQotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY2R0LmNvcmUuZG9tLmFzdC5JQVNURXhwcmVzc2lvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jZHQuY29yZS5kb20uYXN0LklBU1RGdW5jdGlvbkNhbGxFeHByZXNzaW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNkdC5jb3JlLmRvbS5hc3QuSUFTVElkRXhwcmVzc2lvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jZHQuY29yZS5kb20uYXN0LklBU1RMaXRlcmFsRXhwcmVzc2lvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jZHQuY29yZS5kb20uYXN0LklBU1ROYW1lOwotaW1wb3J0IG9yZy5lY2xpcHNlLnB0cC5wbGR0LmNvbW1vbi5TY2FuUmV0dXJuOwotaW1wb3J0IG9yZy5lY2xpcHNlLnB0cC5wbGR0LmNvbW1vbi5hbmFseXNpcy5QbGR0QXN0VmlzaXRvcjsKLQotLyoqCi0gKiBUaGlzIGRvbS13YWxrZXIgY29sbGVjdHMgImFydGlmYWN0cyIgcmVsYXRlZCB0byB0aGUgc3BlY2lmaWMgZG9tYWluIDxicj4KLSAqIChlLmcuIFVQQykuIEN1cnJlbnRseSB0aGVzZSBhcnRpZmFjdHMgaW5jbHVkZSBmdW5jdGlvbiBjYWxscwotICogYW5kIGNvbnN0YW50cy4gSXQgYWRkIG1hcmtlcnMgdG8gdGhlIHNvdXJjZSBmaWxlIGZvciBDIGNvZGUsIG1hcmtpbmcgdGhlCi0gKiBwb3NpdGlvbiBvZiB0aGUgYXJ0aWZhY3RzIGZvdW5kLgotICogCi0gKiBUaGlzIHZlcnNpb24gZXh0ZW5kcyBQbGR0QXN0VmlzaXRvciBpbnN0ZWFkIG9mIGRlbGVnYXRpbmcgdG88YnI+Ci0gKiBNcGlHZW5lcmFsQVNUVmlzaXRvckJlaGF2aW9yLgotICoKLSAqIEBhdXRob3IgdGliYml0dHMKLSAqIAotICovCi1wdWJsaWMgY2xhc3MgVVBDQ0FTVFZpc2l0b3IgZXh0ZW5kcyBQbGR0QXN0VmlzaXRvciAKLXsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgUFJFRklYPSJ1cGNfIjsKLQotICAgIHsKLSAgICAgICAgdGhpcy5zaG91bGRWaXNpdEV4cHJlc3Npb25zID0gdHJ1ZTsKLSAgICAgICAgdGhpcy5zaG91bGRWaXNpdFN0YXRlbWVudHMgPSB0cnVlOwotICAgICAgICB0aGlzLnNob3VsZFZpc2l0RGVjbGFyYXRpb25zID0gdHJ1ZTsKLSAgICAgICAgdGhpcy5zaG91bGRWaXNpdFRyYW5zbGF0aW9uVW5pdCA9IHRydWU7Ci0gICAgfQotCi0gICAgcHVibGljIFVQQ0NBU1RWaXNpdG9yKExpc3QgdXBjSW5jbHVkZXMsIFN0cmluZyBmaWxlTmFtZSwgU2NhblJldHVybiBtc3IpCi0gICAgewotICAgICAgICBzdXBlcih1cGNJbmNsdWRlcywgZmlsZU5hbWUsIG1zcik7Ci0JCUFSVElGQUNUX0NBTEwgPSAiVVBDIENhbGwiOwotCQlBUlRJRkFDVF9DT05TVEFOVD0iVVBDIENvbnN0YW50IjsKLSAgICB9Ci0KLQotCi0gICAgLyoKLSAgICAgKiAobm9uLUphdmFkb2MpCi0gICAgICogCi0gICAgICogQHNlZSBvcmcuZWNsaXBzZS5jZHQuY29yZS5kb20uYXN0LkFTVFZpc2l0b3IjdmlzaXQob3JnLmVjbGlwc2UuY2R0LmNvcmUuZG9tLmFzdC5JQVNURXhwcmVzc2lvbikKLSAgICAgKi8KLSAgICBwdWJsaWMgaW50IHZpc2l0KElBU1RFeHByZXNzaW9uIGV4cHJlc3Npb24pCi0gICAgewotICAgICAgICBpZiAoZXhwcmVzc2lvbiBpbnN0YW5jZW9mIElBU1RGdW5jdGlvbkNhbGxFeHByZXNzaW9uKSB7Ci0gICAgICAgICAgICBJQVNURXhwcmVzc2lvbiBhc3RFeHByID0gKChJQVNURnVuY3Rpb25DYWxsRXhwcmVzc2lvbikgZXhwcmVzc2lvbikuZ2V0RnVuY3Rpb25OYW1lRXhwcmVzc2lvbigpOwotICAgICAgICAgICAgU3RyaW5nIHNpZ25hdHVyZSA9IGFzdEV4cHIuZ2V0UmF3U2lnbmF0dXJlKCk7Ci0gICAgICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigiZnVuYyBzaWduYXR1cmU9IiArIHNpZ25hdHVyZSk7Ci0gICAgICAgICAgICBpZiAoc2lnbmF0dXJlLnN0YXJ0c1dpdGgoUFJFRklYKSkgewotICAgICAgICAgICAgICAgIGlmIChhc3RFeHByIGluc3RhbmNlb2YgSUFTVElkRXhwcmVzc2lvbikgewotICAgICAgICAgICAgICAgICAgICBJQVNUTmFtZSBmdW5jTmFtZSA9ICgoSUFTVElkRXhwcmVzc2lvbikgYXN0RXhwcikuZ2V0TmFtZSgpOwotICAgICAgICAgICAgICAgICAgICBwcm9jZXNzRnVuY05hbWUoZnVuY05hbWUsIGFzdEV4cHIpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChleHByZXNzaW9uIGluc3RhbmNlb2YgSUFTVExpdGVyYWxFeHByZXNzaW9uKSB7Ci0gICAgICAgICAgICBwcm9jZXNzTWFjcm9MaXRlcmFsKChJQVNUTGl0ZXJhbEV4cHJlc3Npb24pIGV4cHJlc3Npb24pOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBQUk9DRVNTX0NPTlRJTlVFOwotICAgIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9zcmMvb3JnL2VjbGlwc2UvcHRwL3BsZHQvdXBjL2VkaXRvckhlbHAvVVBDQ0hlbHBCb29rLmphdmEgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9zcmMvb3JnL2VjbGlwc2UvcHRwL3BsZHQvdXBjL2VkaXRvckhlbHAvVVBDQ0hlbHBCb29rLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiYmE5MzcuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvc3JjL29yZy9lY2xpcHNlL3B0cC9wbGR0L3VwYy9lZGl0b3JIZWxwL1VQQ0NIZWxwQm9vay5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTUwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDggSUJNIENvcnBvcmF0aW9uLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjLmVkaXRvckhlbHA7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKLWltcG9ydCBqYXZhLnV0aWwuTWFwOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY2R0LnVpLklGdW5jdGlvblN1bW1hcnk7Ci1pbXBvcnQgb3JnLmVjbGlwc2UucHRwLnBsZHQuY29tbW9uLmVkaXRvckhlbHAuQ0hlbHBCb29rSW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5wdHAucGxkdC5jb21tb24uZWRpdG9ySGVscC5GdW5jdGlvblByb3RvdHlwZVN1bW1hcnlJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLnB0cC5wbGR0LmNvbW1vbi5lZGl0b3JIZWxwLkZ1bmN0aW9uU3VtbWFyeUltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjLlVQQ1BsdWdpbjsKLQotLyoqCi0gKiBVUEMgaGVscCBib29rIC0gdGhpcyBpcyB0aGUgaW5mb3JtYXRpb24gdGhhdCBpcyB1c2VkIGZvciB0aGUgaG92ZXIgaGVscAotICogPHA+Ci0gKiA8Yj5Ob3RlOjwvYj4gVGhpcyAoYW5kIEYxL2R5bmFtaWMgaGVscCBhcyB3ZWxsKSByZXF1aXJlcyBhIGZpeCB0byBDRFQgcG9zdC01LjAuMCByZWxlYXNlCi0gKiB0byBvcmcuZWNsaXBzZS5jZHQuaW50ZXJuYWwuY29yZS5tb2RlbC5UcmFuc2xhdGlvblVuaXQgIC0gdG8gcmVjb2duaXplIGNvbnRlbnQtdHlwZSBvZiBVUEMgdG8gYmUgYSBkZXJpdmlhdGl2ZSAoImtpbmRPZiIpIHRoZSBDIGNvbnRlbnQgdHlwZS4KLSAqIDxwPlNlZSBodHRwczovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MzMxICAKLSAqIEBhdXRob3IgQmV0aCBUaWJiaXR0cwotICoKLSAqLwotcHVibGljIGNsYXNzIFVQQ0NIZWxwQm9vayBleHRlbmRzIENIZWxwQm9va0ltcGwgewotCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUSVRMRSA9ICJVUEMgQyBIZWxwIEJvb2siOwotCXByaXZhdGUgTWFwPFN0cmluZyxTdHJpbmc+IGRlc2M9bmV3IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+KCk7Ci0KLQkKLQlwdWJsaWMgVVBDQ0hlbHBCb29rKCkgewotICAgICAgICBzdXBlcihVUENQbHVnaW4uZ2V0UGx1Z2luSWQoKSk7Ci0gICAgICAgIC8vIHBvcHVsYXRlIGRlc2NyaXB0aW9uIG1hcCAtIHRoaXMganVzdCBtYWtlcyB0aGUgZnVuY05hbWUyRnVuY0luZm8gaW5pdCBsaW5lcyBhIGJpdCBtb3JlIHRlcnNlCi0gICAgICAKLSAgICAgICAgZGVzYy5wdXQoInVwY19hZGRyZmllbGQiLCAiUmV0dXJucyBhbiBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkIHZhbHVlIHJlZmxlY3RpbmcgdGhlIDxxPmxvY2FsIGFkZHJlc3M8L3E+b2YgdGhlIG9iamVjdCBwb2ludGVkIHRvIGJ5IHRoZSBwb2ludGVyLXRvLXNoYXJlZCBhcmd1bWVudC4iKTsKLSAgICAgICAgZGVzYy5wdXQoInVwY19hZmZpbml0eXNpemUiLCAiQSBjb252ZW5pZW5jZSBmdW5jdGlvbiB3aGljaCBjYWxjdWxhdGVzIHRoZSBleGFjdCBzaXplIG9mIHRoZSBsb2NhbCBwb3J0aW9uIG9mIHRoZSBkYXRhIGluIGEgc2hhcmVkIG9iamVjdCB3aXRoIGFmZmluaXR5IHRvIDxjb2RlPnRocmVhZGlkPC9jb2RlPi4iKTsKLSAgICAgICAgZGVzYy5wdXQoInVwY19hbGxfYWxsb2MiLCAiQWxsb2NhdGVzIHNoYXJlZCBzcGFjZSIpOwotICAgICAgICBkZXNjLnB1dCgidXBjX2FsbF9icm9hZGNhc3QiLCAiQ29waWVzIGEgYmxvY2sgb2YgbWVtb3J5IHdpdGggYWZmaW5pdHkgdG8gYSBzaW5nbGUgdGhyZWFkIHRvIGEgYmxvY2sgb2Ygc2hhcmVkIG1lbW9yeSBvbiBlYWNoIHRocmVhZC4iKTsKLSAgICAgICAgZGVzYy5wdXQoInVwY19hbGxfbG9ja19hbGxvYyIsICJEeW5hbWljYWxseSBhbGxvY2F0ZXMgYSBsb2NrIGFuZCByZXR1cm5zIGEgcG9pbnRlciB0byBpdC4gVGhlIGxvY2sgaXMgY3JlYXRlZCBpbiBhbiB1bmxvY2tlZCBzdGF0ZS4iKTsKLSAgICAgICAgZGVzYy5wdXQoInVwY19hbGxfZXhjaGFuZ2UiLCAiQ29waWVzIHRoZSBpdGggYmxvY2sgb2YgbWVtb3J5IGZyb20gYSBzaGFyZWQgbWVtb3J5IGFyZWEgdGhhdCBoYXMgYWZmaW5pdHkgdG8gdGhyZWFkIGogdG8gdGhlIGp0aCBibG9jayBvZiBhIHNoYXJlZCBtZW1vcnkgYXJlYSB0aGF0IGhhcyBhZmZpbml0eSB0byB0aHJlYWQgaSIpOwotICAgICAgICBkZXNjLnB1dCgidXBjX2FsbF9nYXRoZXIiLCAgICAgIkNvcGllcyBhIGJsb2NrIG9mIHNoYXJlZCBtZW1vcnkgdGhhdCBoYXMgYWZmaW5pdHkgdG8gdGhlIGl0aCB0aHJlYWQgdG8gdGhlIGl0aCBibG9jayBvZiBhIHNoYXJlZCBtZW1vcnkgYXJlYSB0aGF0IGhhcyBhZmZpbml0eSB0byBhIHNpbmdsZSB0aHJlYWQuIik7Ci0gICAgICAgIGRlc2MucHV0KCJ1cGNfYWxsX2dhdGhlcl9hbGwiLCAiQ29waWVzIGEgYmxvY2sgb2YgbWVtb3J5IGZyb20gb25lIHNoYXJlZCBtZW1vcnkgYXJlYSB3aXRoIGFmZmluaXR5IHRvIHRoZSBpdGggdGhyZWFkIHRvIHRoZSBpdGggYmxvY2sgb2YgYSBzaGFyZWQgbWVtb3J5IGFyZWEgb24gZWFjaCB0aHJlYWQuIik7Ci0gICAgICAgIGRlc2MucHV0KCJ1cGNfYWxsX2xvY2tfYWxsb2MiLCAiRHluYW1pY2FsbHkgYWxsb2NhdGVzIGEgbG9jayBhbmQgcmV0dXJucyBhIHBvaW50ZXIgdG8gaXQuIFRoZSBsb2NrIGlzIGNyZWF0ZWQgaW4gYW4gdW5sb2NrZWQgc3RhdGUuIik7Ci0gICAgICAgIGRlc2MucHV0KCJ1cGNfYWxsX3Blcm11dGUiLCAiQ29waWVzIGEgYmxvY2sgb2YgbWVtb3J5IGZyb20gYSBzaGFyZWQgbWVtb3J5IGFyZWEgdGhhdCBoYXMgYWZmaW5pdHkgdG8gdGhlIGl0aCB0aHJlYWQgdG8gYSBibG9jayBvZiBhIHNoYXJlZCBtZW1vcnkgdGhhdCBoYXMgYWZmaW5pdHkgdG8gdGhyZWFkIHBlcm1baV0uIik7Ci0gICAgICAgIGRlc2MucHV0KCJ1cGNfYWxsX3NjYXR0ZXIiLCAiQ29waWVzIHRoZSBpdGggYmxvY2sgb2YgYW4gYXJlYSBvZiBzaGFyZWQgbWVtb3J5IHdpdGggYWZmaW5pdHkgdG8gYSBzaW5nbGUgdGhyZWFkIHRvIGEgYmxvY2sgb2Ygc2hhcmVkIG1lbW9yeSB3aXRoIGFmZmluaXR5IHRvIHRoZSBpdGggdGhyZWFkLiIpOwotICAgICAgICBkZXNjLnB1dCgidXBjX2FsbG9jIiwgIkFsbG9jYXRlcyBzaGFyZWQgc3BhY2Ugb2YgYXQgbGVhc3QgbmJ5dGVzIHdpdGggYWZmaW5pdHkgdG8gdGhlIGNhbGxpbmcgdGhyZWFkLiIpOyAgICAgIAotICAgICAgICBkZXNjLnB1dCgidXBjX2ZyZWUiLCAiRnJlZXMgZHluYW1pY2FsbHkgYWxsb2NhdGVkIHNoYXJlZCBzdG9yYWdlIik7Ci0gICAgICAgIGRlc2MucHV0KCJ1cGNfZ2xvYmFsX2FsbG9jIiwiQWxsb2NhdGVzIHNoYXJlZCBzcGFjZSIpOwotICAgICAgICBkZXNjLnB1dCgidXBjX2dsb2JhbF9leGl0IiwiRmx1c2hlcyBhbGwgSS9PLCByZWxlYXNlcyBhbGwgc3RvcmFnZSwgYW5kIHRlcm1pbmF0ZXMgdGhlIGV4ZWN1dGlvbiBmb3IgYWxsIGFjdGl2ZSB0aHJlYWRzLiIpOwotICAgICAgICBkZXNjLnB1dCgidXBjX2dsb2JhbF9sb2NrX2FsbG9jIiwgIkR5bmFtaWNhbGx5IGFsbG9jYXRlcyBhIGxvY2sgYW5kIHJldHVybnMgYSBwb2ludGVyIHRvIGl0LiBUaGUgbG9jayBpcyBjcmVhdGVkIGluIGFuIHVubG9ja2VkIHN0YXRlLiIpOwotICAgICAgICBkZXNjLnB1dCgidXBjX2xvY2FsX2FsbG9jIiwiRGVwcmVjYXRlZC4gVXNlIHVwY19hbGxvYyBpbnN0ZWFkLlxuQWxsb2NhdGVzIHNoYXJlZCBzcGFjZS4iKTsgICAgICAKLSAgICAgICAgZGVzYy5wdXQoInVwY19sb2NrX2F0dGVtcHQiLCAiQXR0ZW1wdHMgdG8gc2V0IHRoZSBzdGF0ZSBvZiBhIGxvY2sgdG8gbG9ja2VkLiBSZXR1cm4gY29kZSBpbmRpY2F0ZXMgcHJldmlvdXMgc3RhdGUuIik7Ci0gICAgICAgIGRlc2MucHV0KCJ1cGNfbG9ja19mcmVlIiwgIkZyZWVzIGFsbCByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIGEgbG9jay4iKTsKLSAgICAgICAgZGVzYy5wdXQoInVwY19sb2NrX3QiLCAiVVBDIHR5cGUgZm9yIGEgbG9jayIpOwotICAgICAgICBkZXNjLnB1dCgidXBjX2xvY2siLCAiU2V0cyB0aGUgc3RhdGUgb2YgYSBsb2NrIHRvIGxvY2tlZC4iKTsKLSAgICAgICAgZGVzYy5wdXQoInVwY19tZW1jcHkiLCAiQ29waWVzIG4gY2hhcmFjdGVycyBmcm9tIGEgc2hhcmVkIG9iamVjdCBoYXZpbmcgYWZmaW5pdHkgd2l0aCBvbmUgdGhyZWFkIHRvIGEgc2hhcmVkIG9iamVjdCBoYXZpbmcgYWZmaW5pdHkgd2l0aCB0aGUgc2FtZSBvciBhbm90aGVyIHRocmVhZC4iKTsKLSAgICAgICAgZGVzYy5wdXQoInVwY19tZW1nZXQiLCAiQ29waWVzIG4gY2hhcmFjdGVycyBmcm9tIGEgc2hhcmVkIG9iamVjdCB3aXRoIGFmZmluaXR5IHRvIGFueSBzaW5nbGUgdGhyZWFkIHRvIGFuIG9iamVjdCBvbiB0aGUgY2FsbGluZyB0aHJlYWQuIik7Ci0gICAgICAgIGRlc2MucHV0KCJ1cGNfbWVtc2V0IiwgIkNvcGllcyBhIHZhbHVlLCBjb252ZXJ0ZWQgdG8gYW4gdW5zaWduZWQgY2hhciwgdG8gYSBzaGFyZWQgb2JqZWN0IHdpdGggYWZmaW5pdHkgdG8gYW55IHNpbmdsZSB0aHJlYWQuIik7Ci0gICAgICAgIGRlc2MucHV0KCJ1cGNfcGhhc2VvZiIsICJSZXR1cm5zIHRoZSBwaGFzZSBjb21wb25lbnQgb2YgdGhlIHBvaW50ZXItdG8tc2hhcmVkIGFyZ3VtZW50LiIpOwotICAgICAgICBkZXNjLnB1dCgidXBjX3Jlc2V0cGhhc2UiLCAiUmV0dXJucyBhIHBvaW50ZXItdG8tc2hhcmVkIHdoaWNoIGlzIGlkZW50aWNhbCB0byBpdHMgaW5wdXQgZXhjZXB0IHRoYXQgaXQgaGFzIHplcm8gcGhhc2UiKTsKLSAgICAgICAgZGVzYy5wdXQoInVwY190aHJlYWRvZiIsICJSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgdGhyZWFkIHRoYXQgaGFzIGFmZmluaXR5IHRvIHRoZSBzaGFyZWQgb2JqZWN0IHBvaW50ZWQgdG8gYnkgdGhlIGFyZ3VtZW50LiIpOwotICAgICAgICBkZXNjLnB1dCgidXBjX3VubG9jayIsICJTZXRzIHRoZSBzdGF0ZSBvZiBhIGxvY2sgdG8gdW5sb2NrZWQuIik7IAotICAgICAgICBkZXNjLnB1dCgic2hhcmVkIiwgInRoaXMgaXMgYSBzaGFyZWQgVVBDIGtleXdvcmQiKTsKLSAgICAgICAgCi0gICAgICAgIAotCQkvLyBwb3B1bGF0ZSBmdW5jIG1hcAotICAgICAgICAvL2Z1bmNOYW1lMkZ1bmNJbmZvLnB1dCgidXBjX2ZyZWUiLCBuZXcgRnVuY3Rpb25TdW1tYXJ5SW1wbCgidXBjX2ZyZWUiLCAiIiwgInVwY19mcmVlIHRlc3QgZGVzY3JpcHRpb24iLAotICAgICAgICAvLyAgICAgICAgbmV3IEZ1bmN0aW9uUHJvdG90eXBlU3VtbWFyeUltcGwoInVwY19mcmVlIiwgInZvaWQiLCAic2hhcmVkIHZvaWQgKnB0ciIpLCBudWxsKSk7Ci0gICAgICAgIFN0cmluZyBkZXNjID0gIiI7IC8vIHdpbGwgZG8gbWFwIGxvb2t1cCBmb3IgZGVzY3JpcHRpb24gaW4gZnBzIG1ldGhvZC4KLSAgICAgICAgZnVuY05hbWUyRnVuY0luZm8ucHV0KCJ1cGNfYWRkcmZpZWxkIiwgZnBzKCJ1cGNfYWRkcmZpZWxkIiwgIiIsIGRlc2MsICJzaXplX3QiLCAic2hhcmVkIHZvaWQgKnB0ciIpKTsKLSAgICAgICAgZnVuY05hbWUyRnVuY0luZm8ucHV0KCJ1cGNfYWZmaW5pdHlzaXplIiwgZnBzKCJ1cGNfYWZmaW5pdHlzaXplIiwgIiIsIGRlc2MsICJzaXplX3QiLCAic2l6ZV90IHRvdGFsc2l6ZSwgc2l6ZV90IG5ieXRlcywgc2l6ZV90IHRocmVhZGlkIikpOwotICAgICAgICBmdW5jTmFtZTJGdW5jSW5mby5wdXQoInVwY19hbGxfYWxsb2MiLCBmcHMoInVwY19hbGxfYWxsb2MiLCAiIiwgZGVzYywgInZvaWQiLCAic2l6ZV90IG5ibG9ja3MsIHNpemVfdCBuYnl0ZXMiKSk7Ci0gICAgICAgIGZ1bmNOYW1lMkZ1bmNJbmZvLnB1dCgidXBjX2FsbF9icm9hZGNhc3QiLCBmcHMoInVwY19hbGxfYnJvYWRjYXN0IiwgIiIsIGRlc2MsICJ2b2lkIiwgInNoYXJlZCB2b2lkICogcmVzdHJpY3QgZHN0LCBzaGFyZWQgY29uc3Qgdm9pZCAqIHJlc3RyaWN0IHNyYywgc2l6ZV90IG5ieXRlcywgdXBjX2ZsYWdfdCBmbGFncyIpKTsKLSAgICAgICAgZnVuY05hbWUyRnVuY0luZm8ucHV0KCJ1cGNfYWxsX2V4Y2hhbmdlIiwgZnBzKCJ1cGNfYWxsX2V4Y2hhbmdlIiwgIiIsIGRlc2MsICJ2b2lkIiwgInNoYXJlZCB2b2lkICogcmVzdHJpY3QgZHN0LCBzaGFyZWQgY29uc3Qgdm9pZCAqIHJlc3RyaWN0IHNyYywgc2l6ZV90IG5ieXRlcywgdXBjX2ZsYWdfdCBmbGFncyIpKTsKLSAgICAgICAgZnVuY05hbWUyRnVuY0luZm8ucHV0KCJ1cGNfYWxsX2dhdGhlcl9hbGwiLCBmcHMoInVwY19hbGxfZ2F0aGVyX2FsbCIsICIiLCBkZXNjLCAidm9pZCIsICJzaGFyZWQgdm9pZCAqIHJlc3RyaWN0IGRzdCwgc2hhcmVkIGNvbnN0IHZvaWQgKiByZXN0cmljdCBzcmMsIHNpemVfdCBuYnl0ZXMsIHVwY19mbGFnX3QgZmxhZ3MiKSk7Ci0gICAgICAgIGZ1bmNOYW1lMkZ1bmNJbmZvLnB1dCgidXBjX2FsbF9nYXRoZXIiLCBmcHMoInVwY19hbGxfZ2F0aGVyIiwgIiIsIGRlc2MsICJ2b2lkIiwgInNoYXJlZCB2b2lkICogcmVzdHJpY3QgZHN0LCBzaGFyZWQgY29uc3Qgdm9pZCAqIHJlc3RyaWN0IHNyYywgc2l6ZV90IG5ieXRlcywgdXBjX2ZsYWdfdCBmbGFncyIpKTsgICAgICAJCQotICAgICAgICBmdW5jTmFtZTJGdW5jSW5mby5wdXQoInVwY19hbGxfbG9ja19hbGxvYyIsIGZwcygidXBjX2FsbF9sb2NrX2FsbG9jIiwgIiIsIGRlc2MsICJ1cGNfbG9ja190IiwgInZvaWQiKSk7Ci0gICAgICAgIGZ1bmNOYW1lMkZ1bmNJbmZvLnB1dCgidXBjX2FsbF9wZXJtdXRlIiwgZnBzKCJ1cGNfYWxsX3Blcm11dGUiLCAiIiwgZGVzYywgInZvaWQiLCAic2hhcmVkIHZvaWQgKiByZXN0cmljdCBkc3QsIHNoYXJlZCBjb25zdCB2b2lkICogcmVzdHJpY3Qgc3JjLCBzaGFyZWQgY29uc3QgaW50ICogcmVzdHJpY3QgcGVybSwgc2l6ZV90IG5ieXRlcywgdXBjX2ZsYWdfdCBmbGFncyIpKTsKLSAgICAgICAgZnVuY05hbWUyRnVuY0luZm8ucHV0KCJ1cGNfYWxsX3NjYXR0ZXIiLCBmcHMoInVwY19hbGxfc2NhdHRlciIsICIiLCBkZXNjLCAidm9pZCIsICJzaGFyZWQgdm9pZCAqIHJlc3RyaWN0IGRzdCwgc2hhcmVkIGNvbnN0IHZvaWQgKiByZXN0cmljdCBzcmMsIHNpemVfdCBuYnl0ZXMsIHVwY19mbGFnX3QgZmxhZ3MiKSk7Ci0gICAgICAgIGZ1bmNOYW1lMkZ1bmNJbmZvLnB1dCgidXBjX2FsbG9jIiwgZnBzKCJ1cGNfYWxsb2MiLCAiIiwgZGVzYywgInZvaWQiLCAic2l6ZV90IG5ieXRlcyIpKTsgICAgICAKLSAgICAgICAgZnVuY05hbWUyRnVuY0luZm8ucHV0KCJ1cGNfZnJlZSIsIGZwcygidXBjX2ZyZWUiLCAiIiwgZGVzYywgInZvaWQiLCAic2hhcmVkIHZvaWQgKnB0ciIpKTsKLSAgICAgICAgZnVuY05hbWUyRnVuY0luZm8ucHV0KCJ1cGNfZ2xvYmFsX2FsbG9jIiwgZnBzKCJ1cGNfZ2xvYmFsX2FsbG9jIiwgIiIsIGRlc2MsICJ2b2lkIiwgImludCBzdGF0dXMiKSk7Ci0gICAgICAgIGZ1bmNOYW1lMkZ1bmNJbmZvLnB1dCgidXBjX2dsb2JhbF9leGl0IiwgZnBzKCJ1cGNfZ2xvYmFsX2V4aXQiLCAiIiwgZGVzYywgInZvaWQiLCAiaW50IHN0YXR1cyIpKTsKLSAgICAgICAgZnVuY05hbWUyRnVuY0luZm8ucHV0KCJ1cGNfZ2xvYmFsX2xvY2tfYWxsb2MiLCBmcHMoInVwY19nbG9iYWxfbG9ja19hbGxvYyIsICIiLCBkZXNjLCAidXBjX2xvY2tfdCIsICJ2b2lkIikpOwotICAgICAgICBmdW5jTmFtZTJGdW5jSW5mby5wdXQoInVwY19sb2NhbF9hbGxvYyIsIGZwcygidXBjX2xvY2FsX2FsbG9jIiwgIiIsIGRlc2MsICJ2b2lkIiwgInNpemVfdCBuYmxvY2tzLCBzaXplX3QgbmJ5dGVzIikpOyAgICAKLSAgICAgICAgZnVuY05hbWUyRnVuY0luZm8ucHV0KCJ1cGNfbG9ja19hdHRlbXB0IiwgZnBzKCJ1cGNfbG9ja19hdHRlbXB0IiwgIiIsIGRlc2MsICJpbnQiLCAidXBjX2xvY2tfdCAqcHRyIikpOwotICAgICAgICBmdW5jTmFtZTJGdW5jSW5mby5wdXQoInVwY19sb2NrX2ZyZWUiLCBmcHMoInVwY19sb2NrX2ZyZWUiLCAiIiwgZGVzYywgInVwY19sb2NrX3QiLCAidm9pZCIpKTsKLSAgICAgICAgZnVuY05hbWUyRnVuY0luZm8ucHV0KCJ1cGNfbG9jayIsIGZwcygidXBjX2xvY2siLCAiIiwgZGVzYywgInZvaWQiLCAidXBjX2xvY2tfdCAqcHRyIikpOwotICAgICAgICBmdW5jTmFtZTJGdW5jSW5mby5wdXQoInVwY19tZW1jcHkiLCBmcHMoInVwY19tZW1jcHkiLCAiIiwgZGVzYywgInZvaWQiLCAic2hhcmVkIHZvaWQgKiByZXN0cmljdCBkc3QsIHNoYXJlZCBjb25zdCB2b2lkICogcmVzdHJpY3Qgc3JjLCBzaXplX3QgbiIpKTsgICAgICAKLSAgICAgICAgZnVuY05hbWUyRnVuY0luZm8ucHV0KCJ1cGNfbWVtZ2V0IiwgZnBzKCJ1cGNfbWVtZ2V0IiwgIiIsIGRlc2MsICJ2b2lkIiwgInZvaWQgKiByZXN0cmljdCBkc3QsIHNoYXJlZCBjb25zdCB2b2lkICogcmVzdHJpY3Qgc3JjLCBzaXplX3QgbiIpKTsKLSAgICAgICAgZnVuY05hbWUyRnVuY0luZm8ucHV0KCJ1cGNfbWVtc2V0IiwgZnBzKCJ1cGNfbWVtc2V0IiwgIiIsIGRlc2MsICJ2b2lkIiwgInNoYXJlZCB2b2lkICpkc3QsIGludCBjLCBzaXplX3QgbiIpKTsKLSAgICAgICAgZnVuY05hbWUyRnVuY0luZm8ucHV0KCJ1cGNfcGhhc2VvZiIsIGZwcygidXBjX21lbXNldCIsICIiLCBkZXNjLCAic2l6ZV90IiwgInNoYXJlZCB2b2lkICpwdHIiKSk7ICAgICAKLSAgICAgICAgZnVuY05hbWUyRnVuY0luZm8ucHV0KCJ1cGNfcmVzZXRwaGFzZSIsIGZwcygidXBjX3Jlc2V0cGhhc2UiLCAiIiwgZGVzYywgInZvaWQiLCAic2hhcmVkIHZvaWQgKnB0ciIpKTsKLSAgICAgICAgZnVuY05hbWUyRnVuY0luZm8ucHV0KCJ1cGNfdGhyZWFkb2YiLCBmcHMoInVwY190aHJlYWRvZiIsICIiLCBkZXNjLCAic2l6ZV90IiwgInNoYXJlZCB2b2lkICpwdHIiKSk7Ci0gICAgICAgIGZ1bmNOYW1lMkZ1bmNJbmZvLnB1dCgidXBjX3VubG9jayIsIGZwcygidXBjX3VubG9jayIsICIiLCBkZXNjLCAidm9pZCIsICJ1cGNfbG9ja190ICpwdHIiKSk7Ci0gICAgICAgIGZ1bmNOYW1lMkZ1bmNJbmZvLnB1dCgic2hhcmVkIiwgZnBzKCJzaGFyZWQiLCAiIiwgZGVzYywgIiIsICIiKSk7Ci0gICAgICAgIAotICAgICAgICAvLyBzZXQgdGl0bGUKLSAgICAgICAgc2V0VGl0bGUoVElUTEUpOwotCX0KLQkKLQkvKioKLQkgKiBDb252ZW5pZW5jZSBmdW5jdGlvbiBmb3IgaW5wdXR0aW5nIHRoZXNlIEZ1bmN0aW9uUHJvdG90eXBlU3VtbWFyeSBhbmQgRnVuY3Rpb25TdW1tYXJ5IGFyZ3VtZW50cy4KLQkgKiBAcGFyYW0gbmFtZQotCSAqIEBwYXJhbSBuYW1lc3BhY2UKLQkgKiBAcGFyYW0gZGVzY3JpcHRpb24gaWYgZW1wdHkgd2lsbCBkbyBsb29rdXAgaW4gTWFwCi0JICogQHBhcmFtIHJldHVyblR5cGUKLQkgKiBAcGFyYW0gYXJncwotCSAqIEByZXR1cm4KLQkgKi8KLQlwcm90ZWN0ZWQgSUZ1bmN0aW9uU3VtbWFyeSBmcHMoU3RyaW5nIG5hbWUsIFN0cmluZyBuYW1lc3BhY2UsIFN0cmluZyBkZXNjcmlwdGlvbiwgU3RyaW5nIHJldHVyblR5cGUsIFN0cmluZyBhcmdzKXsKLQkJaWYoZGVzY3JpcHRpb249PW51bGwgfHwgZGVzY3JpcHRpb24ubGVuZ3RoKCk9PTApIHsKLQkJCWRlc2NyaXB0aW9uPWdldERlc2MobmFtZSk7Ci0JCX0KLQkJSUZ1bmN0aW9uU3VtbWFyeSBmcHMgPSBuZXcgRnVuY3Rpb25TdW1tYXJ5SW1wbChuYW1lLCBuYW1lc3BhY2UsIGRlc2NyaXB0aW9uLAotICAgICAgICAgICAgICAgIG5ldyBGdW5jdGlvblByb3RvdHlwZVN1bW1hcnlJbXBsKG5hbWUsIHJldHVyblR5cGUsIGFyZ3MpLCBudWxsKTsKLQkJcmV0dXJuIGZwczsKLQl9Ci0JcHJvdGVjdGVkIFN0cmluZyBnZXREZXNjKFN0cmluZyBrZXkpIHsKLQkJU3RyaW5nIGRlc2NyaXB0aW9uID0gKFN0cmluZylkZXNjLmdldChrZXkpOwotCQlpZihkZXNjcmlwdGlvbj09bnVsbCkKLQkJCWRlc2NyaXB0aW9uPWtleSsiIGRlc2NyaXB0aW9uIjsKLQkJcmV0dXJuIGRlc2NyaXB0aW9uOwotCX0KLQkKLQkvKioKLQkgKiBXb3JrYXJvdW5kIGZvciBodHRwczovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MzMxCi0JICogKCJDSGVscFByb3ZpZGVyIG5vdCBjYWxsZWQgZm9yIFVQQyIpCi0JICogc28gdGhhdCBVUEMgaGVscCB3aWxsIGdldCBjYWxsZWQuCi0JICogQ0RUIGJ1ZyBmaXggcmVxdWlyZWQgZm9yIHRoaXMgdG8gd29yayBvdGhlcndpc2UuCi0JICogRm9yIGV4YW1wbGUsIGluIFRyYW5zbGF0aW9uVW5pdCB0byBtYWtlIHRoZSBVUEMgdHlwZSAnaW5oZXJpdCcgZnJvbSB0aGUgQyB0eXBlLgotCSAqIDxwPgotCSAqIFRoaXMgcmV0dXJucyBhbiBpbnZhbGlkIG51bWJlciBhcyBhIHdvcmthcm91bmQuCi0JICogVGhpcyB3aWxsIGNhdXNlIHRoZSBkZWZhdWx0IHBhcnQgb2YgdGhlIHN3aXRjaCBpbiBDSGVscEJvb2tEZXNjcmlwdG9yLm1hdGNoZXMoKQotCSAqIHRvIGV4ZWN1dGUgYW5kIHRoZSBVUEMgaGVscCB3aWxsCi0JICogbWF0Y2ggZm9yIGFsbCBmaWxlcy4gTm90IHByZXR0eSBidXQgaXQgd2lsbCB3b3JrIGZvciBub3cuCi0JICogQHNlZSBvcmcuZWNsaXBzZS5jZHQuaW50ZXJuYWwuY29yZS5tb2RlbC5UcmFuc2xhdGlvblVuaXQKLQkgKiAKLQkgKi8KLQlAU3VwcHJlc3NXYXJuaW5ncygicmVzdHJpY3Rpb24iKS8vIGp1c3QgZm9yIHRoZSBqYXZhZG9jIGNvbW1lbnQgdG8gbm90IGdldCB3YXJuaW5nIDopCi0JQE92ZXJyaWRlCi0JcHVibGljIGludCBnZXRDSGVscFR5cGUoKSB7Ci0JCXJldHVybiAtMTsKLQl9Ci19CmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9zcmMvb3JnL2VjbGlwc2UvcHRwL3BsZHQvdXBjL2VkaXRvckhlbHAvVVBDQ0hlbHBJbmZvUHJvdmlkZXIuamF2YSBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL3NyYy9vcmcvZWNsaXBzZS9wdHAvcGxkdC91cGMvZWRpdG9ySGVscC9VUENDSGVscEluZm9Qcm92aWRlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjY4YjM2Li4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL3NyYy9vcmcvZWNsaXBzZS9wdHAvcGxkdC91cGMvZWRpdG9ySGVscC9VUENDSGVscEluZm9Qcm92aWRlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwOCBJQk0gQ29ycG9yYXRpb24uCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5wdHAucGxkdC51cGMuZWRpdG9ySGVscDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLnB0cC5wbGR0LmNvbW1vbi5lZGl0b3JIZWxwLkNIZWxwUHJvdmlkZXJJbXBsOwotCi0vKioKLSAqIAotICogVGhpcyBjbGFzcyBpbXBsZW1lbnRzIElDSGVscFByb3ZpZGVyIGFuZCBwcm92aWRlcyBVUEMgaW5mb3JtYXRpb24gPGJyPgotICogKEYxLCBob3ZlciwgY29udGVudCBhc3Npc3QsIGV0Yy4pCi0gICogPHA+Ci0gKiA8Yj5Ob3RlOjwvYj4gVGhpcyAgcmVxdWlyZXMgYSBmaXggdG8gQ0RUIHBvc3QtNS4wLjAgcmVsZWFzZQotICogdG8gb3JnLmVjbGlwc2UuY2R0LmludGVybmFsLmNvcmUubW9kZWwuVHJhbnNsYXRpb25Vbml0ICAtIHRvIHJlY29nbml6ZSBjb250ZW50LXR5cGUgb2YgVVBDIHRvIGJlIGEgZGVyaXZpYXRpdmUgKCJraW5kT2YiKSB0aGUgQyBjb250ZW50IHR5cGUuCi0gKiA8cD5TZWUgaHR0cHM6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTIzNzMzMSAgCi0gKiA8cD5GdXJ0aGVyIG5vdGU6IGEgd29ya2Fyb3VuZCBoYXMgYmVlbiBhcHBsaWVkIGluIFVDQ0NIZWxwQm9vayB0byBub3QgcmVxdWlyZSB0aGUgQ0RUIHBhdGNoCi0gKiAKLSAqIAotICogQGF1dGhvciBCZXRoIFRpYmJpdHRzCi0gKgotICovCi1wdWJsaWMgY2xhc3MgVVBDQ0hlbHBJbmZvUHJvdmlkZXIgZXh0ZW5kcyBDSGVscFByb3ZpZGVySW1wbCB7Ci0KLQlwdWJsaWMgVVBDQ0hlbHBJbmZvUHJvdmlkZXIoKSB7Ci0JCS8vU3lzdGVtLm91dC5wcmludGxuKCJVUENDSGVscEluZm9Qcm92aWRlciBjdG9yKCkuLi4iKTsvL2RlYnVnIG9ubHkgLCB0byBzZWUgd2hlbiBjYWxsZWQKLQl9Ci0KLQlwdWJsaWMgdm9pZCBpbml0aWFsaXplKCkgewotCQloZWxwQm9vayA9IG5ldyBVUENDSGVscEJvb2soKTsKLQkJLy9TeXN0ZW0ub3V0LnByaW50bG4oIlVQQ0NIZWxwSW5mb1Byb3ZpZGVyIGluaXRpYWxpemUoKS4uLiIpOwotCX0KLX0KZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL3NyYy9vcmcvZWNsaXBzZS9wdHAvcGxkdC91cGMvcHJlZnMvVVBDUHJlZmVyZW5jZVBhZ2UuamF2YSBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL3NyYy9vcmcvZWNsaXBzZS9wdHAvcGxkdC91cGMvcHJlZnMvVVBDUHJlZmVyZW5jZVBhZ2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTFkNDliOC4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9zcmMvb3JnL2VjbGlwc2UvcHRwL3BsZHQvdXBjL3ByZWZzL1VQQ1ByZWZlcmVuY2VQYWdlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMTAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwOCBJQk0gQ29ycG9yYXRpb24uCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5wdHAucGxkdC51cGMucHJlZnM7Ci0KLQotCi1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2UucHJlZmVyZW5jZS5GaWVsZEVkaXRvclByZWZlcmVuY2VQYWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnByZWZlcmVuY2UuSVByZWZlcmVuY2VTdG9yZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5wcmVmZXJlbmNlLlBhdGhFZGl0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2UucmVzb3VyY2UuSW1hZ2VEZXNjcmlwdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy5VUENJRHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjLlVQQ1BsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5JV29ya2JlbmNoOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLklXb3JrYmVuY2hQcmVmZXJlbmNlUGFnZTsKLQotCi0vKioKLSAqIFByZWZlcmVuY2UgcGFnZSBiYXNlZCBvbiBGaWVsZEVkaXRvclByZWZlcmVuY2VQYWdlCi0gKiAKLSAqIEBhdXRob3IgeHVlCi0gKi8KLQotcHVibGljIGNsYXNzIFVQQ1ByZWZlcmVuY2VQYWdlIGV4dGVuZHMgRmllbGRFZGl0b3JQcmVmZXJlbmNlUGFnZSBpbXBsZW1lbnRzIElXb3JrYmVuY2hQcmVmZXJlbmNlUGFnZQotewotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBJTkNMVURFU19QUkVGRVJFTkNFX0xBQkVMICA9ICJVUEMgaW5jbHVkZSBwYXRoczoiOwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBJTkNMVURFU19QUkVGRVJFTkNFX0JST1dTRSA9ICJQbGVhc2UgY2hvb3NlIGEgZGlyZWN0b3J5OiI7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFVQQ19IRUxQPSJMb2NhdGlvbiBvZiBVUEMgaGVscCBmaWxlczoiOwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBVUENfSEVMUF9ERUZBVUxUPSJVc2UgZGVmYXVsdCI7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFVQQ19IRUxQX0RFRkFVTFRfSUQ9InVwY0hlbHBVc2VEZWZhdWx0IjsKLSAgICAvL3ByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBVUENfSEVMUF9MSU5VWD0iVXNlIExpbnV4IGxvY2F0aW9uOiAiOwotICAgIC8vcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFVQQ19IRUxQX0FJWD0iVXNlIEFJWCBsb2NhdGlvbjogIjsKLSAgICAvL3ByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBVUENfSEVMUF9PVEhFUj0iT3RoZXI6IjsKLSAgICAvL3ByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBVUENfSEVMUF9PVEhFUl9JRD0idXBjSGVscE90aGVyIjsKLSAgICAKLSAgICAvL3ByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBVUENfTE9DQVRJT05fQUlYPSIvb3B0L3JzY3QvbGFwaS9lY2xpcHNlL2hlbHAiOwotICAgIC8vcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFVQQ19MT0NBVElPTl9MSU5VWD0ib3B0L2libWhwYy9sYXBpL2VjbGlwc2UvaGVscCI7Ci0gICAgCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFVQQ19XSElDSF9IRUxQX0lEPSJkZWZhdWx0IjsgIC8vIGFsdGVybmF0aXZlcyBhcmU6IGRlZmF1bHQsIGFpeCwgbGludXgsIG90aGVyCi0KLSAgICBwdWJsaWMgVVBDUHJlZmVyZW5jZVBhZ2UoKQotICAgIHsKLSAgICAgICAgc3VwZXIoRkxBVCk7Ci0gICAgICAgIGluaXRQcmVmZXJlbmNlU3RvcmUoKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgVVBDUHJlZmVyZW5jZVBhZ2UoaW50IHN0eWxlKQotICAgIHsKLSAgICAgICAgc3VwZXIoc3R5bGUpOwotICAgICAgICBpbml0UHJlZmVyZW5jZVN0b3JlKCk7Ci0gICAgfQotCi0gICAgcHVibGljIFVQQ1ByZWZlcmVuY2VQYWdlKFN0cmluZyB0aXRsZSwgSW1hZ2VEZXNjcmlwdG9yIGltYWdlLCBpbnQgc3R5bGUpCi0gICAgewotICAgICAgICBzdXBlcih0aXRsZSwgaW1hZ2UsIHN0eWxlKTsKLSAgICAgICAgaW5pdFByZWZlcmVuY2VTdG9yZSgpOwotICAgIH0KLQotICAgIHB1YmxpYyBVUENQcmVmZXJlbmNlUGFnZShTdHJpbmcgdGl0bGUsIGludCBzdHlsZSkKLSAgICB7Ci0gICAgICAgIHN1cGVyKHRpdGxlLCBzdHlsZSk7Ci0gICAgICAgIGluaXRQcmVmZXJlbmNlU3RvcmUoKTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBJbml0IHByZWZlcmVuY2Ugc3RvcmUgYW5kIHNldCB0aGUgcHJlZmVyZW5jZSBzdG9yZSBmb3IgdGhlIHByZWZlcmVuY2UgcGFnZQotICAgICAqLwotICAgIHByaXZhdGUgdm9pZCBpbml0UHJlZmVyZW5jZVN0b3JlKCkKLSAgICB7Ci0gICAgICAgIElQcmVmZXJlbmNlU3RvcmUgc3RvcmUgPSBVUENQbHVnaW4uZ2V0RGVmYXVsdCgpLmdldFByZWZlcmVuY2VTdG9yZSgpOwotICAgICAgICBzZXRQcmVmZXJlbmNlU3RvcmUoc3RvcmUpOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIGluaXQoSVdvcmtiZW5jaCB3b3JrYmVuY2gpCi0gICAgewotICAgIH0KLQotICAgIHByb3RlY3RlZCB2b2lkIGNyZWF0ZUZpZWxkRWRpdG9ycygpCi0gICAgewotICAgICAgICBQYXRoRWRpdG9yIHBhdGhFZGl0b3IgPSBuZXcgUGF0aEVkaXRvcihVUENJRHMuVVBDX0lOQ0xVREVTLCBJTkNMVURFU19QUkVGRVJFTkNFX0xBQkVMLAotICAgICAgICAgICAgICAgIElOQ0xVREVTX1BSRUZFUkVOQ0VfQlJPV1NFLCBnZXRGaWVsZEVkaXRvclBhcmVudCgpKTsKLSAgICAgICAgYWRkRmllbGQocGF0aEVkaXRvcik7Ci0KLSAgICAgICAgLy8iVXNlIGRlZmF1bHQ/IgotLy8gICAgICAgIEJvb2xlYW5GaWVsZEVkaXRvciBiZWQgPSBuZXcgQm9vbGVhbkZpZWxkRWRpdG9yKFVQQ19IRUxQX0RFRkFVTFRfSUQsVVBDX0hFTFBfREVGQVVMVCxnZXRGaWVsZEVkaXRvclBhcmVudCgpKTsKLS8vICAgICAgICBhZGRGaWVsZChiZWQpOwotICAvKiAgICAgIAotICAgICAgICBpbnQgbnVtQ29sPTE7Ci0gICAgCVJhZGlvR3JvdXBGaWVsZEVkaXRvciBjaG9pY2VGRSA9IG5ldyBSYWRpb0dyb3VwRmllbGRFZGl0b3IoVVBDX1dISUNIX0hFTFBfSUQsIFVQQ19IRUxQLCBudW1Db2wsIG5ldyBTdHJpbmdbXVtdIHsKLQkJCQl7IFVQQ19IRUxQX0RFRkFVTFQsICJjaG9pY2UxIiB9LCAKLQkJCQl7IFVQQ19IRUxQX0FJWCtVUENfTE9DQVRJT05fQUlYLCAiY2hvaWNlMiIgfSwgCi0JCQkJeyBVUENfSEVMUF9MSU5VWCtVUENfTE9DQVRJT05fTElOVVgsICJDaG9pY2UzIiB9LAotCQkJCXsgVVBDX0hFTFBfT1RIRVIsICJDaG9pY2U0IiB9fSwKLQkJCQlnZXRGaWVsZEVkaXRvclBhcmVudCgpKTsKLSAgICAJYWRkRmllbGQoY2hvaWNlRkUpOwotICAgIAkKLSAgICAJU3RyaW5nRmllbGRFZGl0b3Igb3RoZXJMb2M9bmV3IFN0cmluZ0ZpZWxkRWRpdG9yKFVQQ19IRUxQX09USEVSX0lELCBVUENfSEVMUF9PVEhFUixnZXRGaWVsZEVkaXRvclBhcmVudCgpKTsKLSAgICAJYWRkRmllbGQob3RoZXJMb2MpOwotICAgIAkqLwotICAgIAkKLSAgICB9Ci0gICAgCi19CmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9zcmMvb3JnL2VjbGlwc2UvcHRwL3BsZHQvdXBjL3ZpZXdzL1VQQ0FydGlmYWN0Vmlldy5qYXZhIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvc3JjL29yZy9lY2xpcHNlL3B0cC9wbGR0L3VwYy92aWV3cy9VUENBcnRpZmFjdFZpZXcuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Q3MjhkNS4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9zcmMvb3JnL2VjbGlwc2UvcHRwL3BsZHQvdXBjL3ZpZXdzL1VQQ0FydGlmYWN0Vmlldy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwOCBJQk0gQ29ycG9yYXRpb24uCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5wdHAucGxkdC51cGMudmlld3M7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5wdHAucGxkdC5jb21tb24udmlld3MuU2ltcGxlVGFibGVNYXJrZXJWaWV3OwotaW1wb3J0IG9yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy5VUENJRHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjLlVQQ1BsdWdpbjsKLQotCi0KLS8qKgotICogQSBVUEMgYXJ0aWZhY3QgdmlldyBiYXNlZCBvbiBTaW1wbGVUYWJsZVZpZXcgPGJyPgotICogTm90ZSB0aGF0IHRoZSBJRCBtdXN0IGJlIHVuaXF1ZS4KLSAqIAotICovCi1wdWJsaWMgY2xhc3MgVVBDQXJ0aWZhY3RWaWV3IGV4dGVuZHMgU2ltcGxlVGFibGVNYXJrZXJWaWV3Ci17Ci0gICAgcHVibGljIFVQQ0FydGlmYWN0VmlldygpCi0gICAgewotICAgICAgICAvLyBpZiB5b3UgbmVlZCB0byByZWFkIGljb24gaW1hZ2VzLCBldGMuIGZyb20gdGhlIHBsdWctaW4sIGJlIHN1cmUgdG8gcGFzcwotICAgICAgICAvLyBpbiBhbiBhY3R1YWwgUGx1Z2luIGNsYXNzIGluc3RhbmNlIGZvciBmaXJzdCBhcmcKLSAgICAgICAgc3VwZXIoVVBDUGx1Z2luLmdldERlZmF1bHQoKSwgIlVQQyBBcnRpZmFjdCIsICJVUEMgQXJ0aWZhY3RzIiwgIkNvbnN0cnVjdCIsIFVQQ0lEcy5NQVJLRVJfSUQpOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL3Rvb2xzL3NhbXBsZXMvb3JnLmVjbGlwc2UucHRwLnBsZHQuc2FtcGxlQ0RUc3RhdGljQW5hbHlzaXMvLmNsYXNzcGF0aCBiL3Rvb2xzL3NhbXBsZXMvb3JnLmVjbGlwc2UucHRwLnBsZHQuc2FtcGxlQ0RUc3RhdGljQW5hbHlzaXMvLmNsYXNzcGF0aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzUxYzhmMi4uMDAwMDAwMAotLS0gYS90b29scy9zYW1wbGVzL29yZy5lY2xpcHNlLnB0cC5wbGR0LnNhbXBsZUNEVHN0YXRpY0FuYWx5c2lzLy5jbGFzc3BhdGgKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08Y2xhc3NwYXRoPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJzcmMiIHBhdGg9InNyYyIvPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJjb24iIHBhdGg9Im9yZy5lY2xpcHNlLmpkdC5sYXVuY2hpbmcuSlJFX0NPTlRBSU5FUiIvPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJjb24iIHBhdGg9Im9yZy5lY2xpcHNlLnBkZS5jb3JlLnJlcXVpcmVkUGx1Z2lucyIvPgotCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJvdXRwdXQiIHBhdGg9ImJpbiIvPgotPC9jbGFzc3BhdGg+CmRpZmYgLS1naXQgYS90b29scy9zYW1wbGVzL29yZy5lY2xpcHNlLnB0cC5wbGR0LnNhbXBsZUNEVHN0YXRpY0FuYWx5c2lzLy5wcm9qZWN0IGIvdG9vbHMvc2FtcGxlcy9vcmcuZWNsaXBzZS5wdHAucGxkdC5zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy8ucHJvamVjdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWI2ZjY3My4uMDAwMDAwMAotLS0gYS90b29scy9zYW1wbGVzL29yZy5lY2xpcHNlLnB0cC5wbGR0LnNhbXBsZUNEVHN0YXRpY0FuYWx5c2lzLy5wcm9qZWN0CisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxwcm9qZWN0RGVzY3JpcHRpb24+Ci0JPG5hbWU+b3JnLmVjbGlwc2UucHRwLnBsZHQuc2FtcGxlQ0RUc3RhdGljQW5hbHlzaXM8L25hbWU+Ci0JPGNvbW1lbnQ+PC9jb21tZW50PgotCTxwcm9qZWN0cz4KLQk8L3Byb2plY3RzPgotCTxidWlsZFNwZWM+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5qZHQuY29yZS5qYXZhYnVpbGRlcjwvbmFtZT4KLQkJCTxhcmd1bWVudHM+Ci0JCQk8L2FyZ3VtZW50cz4KLQkJPC9idWlsZENvbW1hbmQ+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5wZGUuTWFuaWZlc3RCdWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5TY2hlbWFCdWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQk8L2J1aWxkU3BlYz4KLQk8bmF0dXJlcz4KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5wZGUuUGx1Z2luTmF0dXJlPC9uYXR1cmU+Ci0JCTxuYXR1cmU+b3JnLmVjbGlwc2UuamR0LmNvcmUuamF2YW5hdHVyZTwvbmF0dXJlPgotCTwvbmF0dXJlcz4KLTwvcHJvamVjdERlc2NyaXB0aW9uPgpkaWZmIC0tZ2l0IGEvdG9vbHMvc2FtcGxlcy9vcmcuZWNsaXBzZS5wdHAucGxkdC5zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy9NRVRBLUlORi9NQU5JRkVTVC5NRiBiL3Rvb2xzL3NhbXBsZXMvb3JnLmVjbGlwc2UucHRwLnBsZHQuc2FtcGxlQ0RUc3RhdGljQW5hbHlzaXMvTUVUQS1JTkYvTUFOSUZFU1QuTUYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5ODRhYjcuLjAwMDAwMDAKLS0tIGEvdG9vbHMvc2FtcGxlcy9vcmcuZWNsaXBzZS5wdHAucGxkdC5zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy9NRVRBLUlORi9NQU5JRkVTVC5NRgorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLU1hbmlmZXN0LVZlcnNpb246IDEuMAotQnVuZGxlLU1hbmlmZXN0VmVyc2lvbjogMgotQnVuZGxlLU5hbWU6IFNhbXBsZSBDRFQgU3RhdGljIEFuYWx5c2lzCi1CdW5kbGUtU3ltYm9saWNOYW1lOiBvcmcuZWNsaXBzZS5wdHAucGxkdC5zYW1wbGVDRFRzdGF0aWNBbmFseXNpcztzaW5nbGV0b246PXRydWUKLUJ1bmRsZS1WZXJzaW9uOiAxLjAuMAotQnVuZGxlLUFjdGl2YXRvcjogb3JnLmVjbGlwc2UucHRwLnBsZHQuc2FtcGxlQ0RUc3RhdGljQW5hbHlzaXMuQWN0aXZhdG9yCi1SZXF1aXJlLUJ1bmRsZTogb3JnLmVjbGlwc2UudWksCi0gb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLAotIG9yZy5lY2xpcHNlLmNkdC5jb3JlLAotIG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLAotIG9yZy5lY2xpcHNlLnB0cC5wbGR0LmNvbW1vbiwKLSBvcmcuZWNsaXBzZS5wdHAucGxkdC5tcGkuYW5hbHlzaXMsCi0gb3JnLmVjbGlwc2UucHRwLnBsZHQubXBpLmFuYWx5c2lzLmNkdAotRWNsaXBzZS1MYXp5U3RhcnQ6IHRydWUKLUJ1bmRsZS1WZW5kb3I6IElCTSBSZXNlYXJjaApkaWZmIC0tZ2l0IGEvdG9vbHMvc2FtcGxlcy9vcmcuZWNsaXBzZS5wdHAucGxkdC5zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy9idWlsZC5wcm9wZXJ0aWVzIGIvdG9vbHMvc2FtcGxlcy9vcmcuZWNsaXBzZS5wdHAucGxkdC5zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy9idWlsZC5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZDNkM2E3Li4wMDAwMDAwCi0tLSBhL3Rvb2xzL3NhbXBsZXMvb3JnLmVjbGlwc2UucHRwLnBsZHQuc2FtcGxlQ0RUc3RhdGljQW5hbHlzaXMvYnVpbGQucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotc291cmNlLi4gPSBzcmMvCi1vdXRwdXQuLiA9IGJpbi8KLWJpbi5pbmNsdWRlcyA9IHBsdWdpbi54bWwsXAotICAgICAgICAgICAgICAgTUVUQS1JTkYvLFwKLSAgICAgICAgICAgICAgIC4sXAotICAgICAgICAgICAgICAgaWNvbnMvCmRpZmYgLS1naXQgYS90b29scy9zYW1wbGVzL29yZy5lY2xpcHNlLnB0cC5wbGR0LnNhbXBsZUNEVHN0YXRpY0FuYWx5c2lzL2ljb25zL2NhbGxzLmdpZiBiL3Rvb2xzL3NhbXBsZXMvb3JnLmVjbGlwc2UucHRwLnBsZHQuc2FtcGxlQ0RUc3RhdGljQW5hbHlzaXMvaWNvbnMvY2FsbHMuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OTVlNWE1Li4wMDAwMDAwCi0tLSBhL3Rvb2xzL3NhbXBsZXMvb3JnLmVjbGlwc2UucHRwLnBsZHQuc2FtcGxlQ0RUc3RhdGljQW5hbHlzaXMvaWNvbnMvY2FsbHMuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdG9vbHMvc2FtcGxlcy9vcmcuZWNsaXBzZS5wdHAucGxkdC5zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy9pY29ucy9jYWxsc0MuZ2lmIGIvdG9vbHMvc2FtcGxlcy9vcmcuZWNsaXBzZS5wdHAucGxkdC5zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy9pY29ucy9jYWxsc0MuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NjlmYTI1Li4wMDAwMDAwCi0tLSBhL3Rvb2xzL3NhbXBsZXMvb3JnLmVjbGlwc2UucHRwLnBsZHQuc2FtcGxlQ0RUc3RhdGljQW5hbHlzaXMvaWNvbnMvY2FsbHNDLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rvb2xzL3NhbXBsZXMvb3JnLmVjbGlwc2UucHRwLnBsZHQuc2FtcGxlQ0RUc3RhdGljQW5hbHlzaXMvaWNvbnMvY2FsbHNDRi5naWYgYi90b29scy9zYW1wbGVzL29yZy5lY2xpcHNlLnB0cC5wbGR0LnNhbXBsZUNEVHN0YXRpY0FuYWx5c2lzL2ljb25zL2NhbGxzQ0YuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDMzYjE5Li4wMDAwMDAwCi0tLSBhL3Rvb2xzL3NhbXBsZXMvb3JnLmVjbGlwc2UucHRwLnBsZHQuc2FtcGxlQ0RUc3RhdGljQW5hbHlzaXMvaWNvbnMvY2FsbHNDRi5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90b29scy9zYW1wbGVzL29yZy5lY2xpcHNlLnB0cC5wbGR0LnNhbXBsZUNEVHN0YXRpY0FuYWx5c2lzL2ljb25zL2NsYXNzX2hpLmdpZiBiL3Rvb2xzL3NhbXBsZXMvb3JnLmVjbGlwc2UucHRwLnBsZHQuc2FtcGxlQ0RUc3RhdGljQW5hbHlzaXMvaWNvbnMvY2xhc3NfaGkuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxN2Y5MjdlLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3NhbXBsZXMvb3JnLmVjbGlwc2UucHRwLnBsZHQuc2FtcGxlQ0RUc3RhdGljQW5hbHlzaXMvaWNvbnMvY2xhc3NfaGkuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdG9vbHMvc2FtcGxlcy9vcmcuZWNsaXBzZS5wdHAucGxkdC5zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy9pY29ucy9ncmFwaEMuZ2lmIGIvdG9vbHMvc2FtcGxlcy9vcmcuZWNsaXBzZS5wdHAucGxkdC5zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy9pY29ucy9ncmFwaEMuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MDVjMzM4Li4wMDAwMDAwCi0tLSBhL3Rvb2xzL3NhbXBsZXMvb3JnLmVjbGlwc2UucHRwLnBsZHQuc2FtcGxlQ0RUc3RhdGljQW5hbHlzaXMvaWNvbnMvZ3JhcGhDLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rvb2xzL3NhbXBsZXMvb3JnLmVjbGlwc2UucHRwLnBsZHQuc2FtcGxlQ0RUc3RhdGljQW5hbHlzaXMvaWNvbnMvZ3JhcGhXLmdpZiBiL3Rvb2xzL3NhbXBsZXMvb3JnLmVjbGlwc2UucHRwLnBsZHQuc2FtcGxlQ0RUc3RhdGljQW5hbHlzaXMvaWNvbnMvZ3JhcGhXLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjNiMjk0Yi4uMDAwMDAwMAotLS0gYS90b29scy9zYW1wbGVzL29yZy5lY2xpcHNlLnB0cC5wbGR0LnNhbXBsZUNEVHN0YXRpY0FuYWx5c2lzL2ljb25zL2dyYXBoVy5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90b29scy9zYW1wbGVzL29yZy5lY2xpcHNlLnB0cC5wbGR0LnNhbXBsZUNEVHN0YXRpY0FuYWx5c2lzL2ljb25zL3NhbXBsZS5naWYgYi90b29scy9zYW1wbGVzL29yZy5lY2xpcHNlLnB0cC5wbGR0LnNhbXBsZUNEVHN0YXRpY0FuYWx5c2lzL2ljb25zL3NhbXBsZS5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0ZmIzYzkuLjAwMDAwMDAKLS0tIGEvdG9vbHMvc2FtcGxlcy9vcmcuZWNsaXBzZS5wdHAucGxkdC5zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy9pY29ucy9zYW1wbGUuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdG9vbHMvc2FtcGxlcy9vcmcuZWNsaXBzZS5wdHAucGxkdC5zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy9wbHVnaW4ueG1sIGIvdG9vbHMvc2FtcGxlcy9vcmcuZWNsaXBzZS5wdHAucGxkdC5zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy9wbHVnaW4ueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YmE2ZTc1Li4wMDAwMDAwCi0tLSBhL3Rvb2xzL3NhbXBsZXMvb3JnLmVjbGlwc2UucHRwLnBsZHQuc2FtcGxlQ0RUc3RhdGljQW5hbHlzaXMvcGx1Z2luLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08P2VjbGlwc2UgdmVyc2lvbj0iMy4yIj8+Ci08cGx1Z2luPgotCi0gICA8ZXh0ZW5zaW9uCi0gICAgICAgICBwb2ludD0ib3JnLmVjbGlwc2UudWkuY29tbWFuZHMiPgotICAgICAgPGNhdGVnb3J5Ci0gICAgICAgICAgICBuYW1lPSJTYW1wbGUgQ2F0ZWdvcnkiCi0gICAgICAgICAgICBpZD0iY2R0QVNUMi5jb21tYW5kcy5jYXRlZ29yeSI+Ci0gICAgICA8L2NhdGVnb3J5PgotICAgICAgPGNvbW1hbmQKLSAgICAgICAgICAgIG5hbWU9IkNhbGxHcmFwaCBDb21tYW5kIgotICAgICAgICAgICAgY2F0ZWdvcnlJZD0iY2R0QVNUMi5jb21tYW5kcy5jYXRlZ29yeSIKLSAgICAgICAgICAgIGlkPSJjZHRBU1QyLmNvbW1hbmRzLmNnQ29tbWFuZCI+Ci0gICAgICA8L2NvbW1hbmQ+Ci0gICAgICAgPGNvbW1hbmQKLSAgICAgICAgICAgIG5hbWU9IkNGRyBDb21tYW5kIgotICAgICAgICAgICAgY2F0ZWdvcnlJZD0iY2R0QVNUMi5jb21tYW5kcy5jYXRlZ29yeSIKLSAgICAgICAgICAgIGlkPSJjZHRBU1QyLmNvbW1hbmRzLmNmZ0NvbW1hbmQiPgotICAgICAgPC9jb21tYW5kPgotICAgPC9leHRlbnNpb24+Ci0gICA8ZXh0ZW5zaW9uCi0gICAgICAgICBwb2ludD0ib3JnLmVjbGlwc2UudWkuaGFuZGxlcnMiPgotICAgICAgPGhhbmRsZXIKLSAgICAgICAgICAgIGNvbW1hbmRJZD0iY2R0QVNUMi5jb21tYW5kcy5jZ0NvbW1hbmQiCi0gICAgICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2UucHRwLnBsZHQuc2FtcGxlQ0RUc3RhdGljQW5hbHlzaXMuaGFuZGxlcnMuQnVpbGRDYWxsR3JhcGhIYW5kbGVyIj4KLSAgICAgIDwvaGFuZGxlcj4KLSAgICAgIDxoYW5kbGVyCi0gICAgICAgICAgICBjb21tYW5kSWQ9ImNkdEFTVDIuY29tbWFuZHMuY2ZnQ29tbWFuZCIKLSAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS5wdHAucGxkdC5zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy5oYW5kbGVycy5CdWlsZENGR3JhcGhIYW5kbGVyIj4KLSAgICAgIDwvaGFuZGxlcj4KLSAgIDwvZXh0ZW5zaW9uPgotICAgPGV4dGVuc2lvbgotICAgICAgICAgcG9pbnQ9Im9yZy5lY2xpcHNlLnVpLmJpbmRpbmdzIj4KLSAgICAgIDxrZXkKLSAgICAgICAgICAgIGNvbW1hbmRJZD0iY2R0QVNUMi5jb21tYW5kcy5jZ0NvbW1hbmQiCi0gICAgICAgICAgICBjb250ZXh0SWQ9Im9yZy5lY2xpcHNlLnVpLmNvbnRleHRzLndpbmRvdyIKLSAgICAgICAgICAgIHNlcXVlbmNlPSJNMSs2IgotICAgICAgICAgICAgc2NoZW1lSWQ9Im9yZy5lY2xpcHNlLnVpLmRlZmF1bHRBY2NlbGVyYXRvckNvbmZpZ3VyYXRpb24iPgotICAgICAgPC9rZXk+Ci0gICA8L2V4dGVuc2lvbj4KLSAgIDxleHRlbnNpb24KLSAgICAgICAgIHBvaW50PSJvcmcuZWNsaXBzZS51aS5tZW51cyI+Ci0gICAgICA8bWVudUNvbnRyaWJ1dGlvbgotICAgICAgICAgICAgbG9jYXRpb25VUkk9Im1lbnU6b3JnLmVjbGlwc2UudWkubWFpbi5tZW51P2FmdGVyPWFkZGl0aW9ucyI+Ci0gICAgICAgICA8bWVudQotICAgICAgICAgICAgICAgbGFiZWw9IlNhbXBsZSBNZW51IgotICAgICAgICAgICAgICAgbW5lbW9uaWM9Ik0iCi0gICAgICAgICAgICAgICBpZD0iY2R0QVNUMi5tZW51cy5zYW1wbGVNZW51Ij4KLSAgICAgICAgICAgIDxjb21tYW5kCi0gICAgICAgICAgICAgICAgICBjb21tYW5kSWQ9ImNkdEFTVDIuY29tbWFuZHMuY2dDb21tYW5kIgotICAgICAgICAgICAgICAgICAgaWNvbj0iaWNvbnMvZ3JhcGhXLmdpZiIKLSAgICAgICAgICAgICAgICAgIGlkPSJjZHRBU1QyLm1lbnVzLmNnQ29tbWFuZCIKLSAgICAgICAgICAgICAgICAgIGxhYmVsPSJXYWxrIEFTVCB0cmVlIgotICAgICAgICAgICAgICAgICAgbW5lbW9uaWM9IlMiCi0gICAgICAgICAgICAgICAgICB0b29sdGlwPSJXYWxrIEFTVCBUcmVlIHRvb2x0aXAiPgotICAgICAgICAgICAgPC9jb21tYW5kPgotICAgICAgICAgPC9tZW51PgotICAgICAgPC9tZW51Q29udHJpYnV0aW9uPgotICAgICAgPG1lbnVDb250cmlidXRpb24KLSAgICAgICAgICAgIGxvY2F0aW9uVVJJPSJ0b29sYmFyOm9yZy5lY2xpcHNlLnVpLm1haW4udG9vbGJhcj9hZnRlcj1hZGRpdGlvbnMiPgotICAgICAgICAgPHRvb2xiYXIKLSAgICAgICAgICAgICAgIGlkPSJjZHRBU1QyLnRvb2xiYXJzLnNhbXBsZVRvb2xiYXIiPgotICAgICAgICAgICAgPGNvbW1hbmQKLSAgICAgICAgICAgICAgICAgIGNvbW1hbmRJZD0iY2R0QVNUMi5jb21tYW5kcy5jZ0NvbW1hbmQiCi0gICAgICAgICAgICAgICAgICBpY29uPSJpY29ucy9jYWxsc0MuZ2lmIgotICAgICAgICAgICAgICAgICAgaWQ9ImNkdEFTVDIudG9vbGJhcnMuYnVpbGRDYWxsR3JhcGhDb21tYW5kIgotICAgICAgICAgICAgICAgICAgbGFiZWw9IkJ1aWxkIENhbGwgR3JhcGgiCi0gICAgICAgICAgICAgICAgICB0b29sdGlwPSJCdWlsZCBDYWxsIEdyYXBoIj4KLSAgICAgICAgICAgIDwvY29tbWFuZD4KLSAgICAgICAgICAgICA8Y29tbWFuZAotICAgICAgICAgICAgICAgICAgY29tbWFuZElkPSJjZHRBU1QyLmNvbW1hbmRzLmNmZ0NvbW1hbmQiCi0gICAgICAgICAgICAgICAgICBpY29uPSJpY29ucy9jYWxsc0NGLmdpZiIKLSAgICAgICAgICAgICAgICAgIGlkPSJjZHRBU1QyLnRvb2xiYXJzLmJ1aWxkQ2FsbEdyYXBoQ29tbWFuZCIKLSAgICAgICAgICAgICAgICAgIGxhYmVsPSJCdWlsZCBDRkdyYXBoIgotICAgICAgICAgICAgICAgICAgdG9vbHRpcD0iQnVpbGQgQ29udHJvbCBGbG93IEdyYXBoIj4KLSAgICAgICAgICAgIDwvY29tbWFuZD4KLSAgICAgICAgIDwvdG9vbGJhcj4KLSAgICAgIDwvbWVudUNvbnRyaWJ1dGlvbj4KLSAgIDwvZXh0ZW5zaW9uPgotICAgPGV4dGVuc2lvbgotICAgICAgICAgcG9pbnQ9Im9yZy5lY2xpcHNlLnVpLmFjdGlvblNldHMiPgotICAgICAgPGFjdGlvblNldAotICAgICAgICAgICAgbGFiZWw9IlNhbXBsZSBBY3Rpb24gU2V0IgotICAgICAgICAgICAgdmlzaWJsZT0idHJ1ZSIKLSAgICAgICAgICAgIGlkPSJjZHRBU1QyLmFjdGlvblNldCI+Ci0gICAgICAgICA8YWN0aW9uCi0gICAgICAgICAgICAgICBsYWJlbD0iV2FsayBBU1QiCi0gICAgICAgICAgICAgICBpY29uPSJpY29ucy9ncmFwaFcuZ2lmIgotICAgICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLnB0cC5wbGR0LnNhbXBsZUNEVHN0YXRpY0FuYWx5c2lzLmFjdGlvbnMuQVNUV2Fsa2VyQWN0aW9uIgotICAgICAgICAgICAgICAgdG9vbHRpcD0iV2FsayBBU1QgdG9vbHRpcCIKLSAgICAgICAgICAgICAgIG1lbnViYXJQYXRoPSJzYW1wbGVNZW51L3NhbXBsZUdyb3VwIgotICAgICAgICAgICAgICAgdG9vbGJhclBhdGg9InNhbXBsZUdyb3VwIgotICAgICAgICAgICAgICAgaWQ9ImNkdGFzdDIuYWN0aW9ucy5TYW1wbGVBY3Rpb24iPgotICAgICAgICAgPC9hY3Rpb24+Ci0gICAgICA8L2FjdGlvblNldD4KLSAgIDwvZXh0ZW5zaW9uPgotCi08L3BsdWdpbj4KZGlmZiAtLWdpdCBhL3Rvb2xzL3NhbXBsZXMvb3JnLmVjbGlwc2UucHRwLnBsZHQuc2FtcGxlQ0RUc3RhdGljQW5hbHlzaXMvc3JjL29yZy9lY2xpcHNlL3B0cC9wbGR0L3NhbXBsZUNEVHN0YXRpY0FuYWx5c2lzL0FjdGl2YXRvci5qYXZhIGIvdG9vbHMvc2FtcGxlcy9vcmcuZWNsaXBzZS5wdHAucGxkdC5zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy9zcmMvb3JnL2VjbGlwc2UvcHRwL3BsZHQvc2FtcGxlQ0RUc3RhdGljQW5hbHlzaXMvQWN0aXZhdG9yLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViMjYwY2EuLjAwMDAwMDAKLS0tIGEvdG9vbHMvc2FtcGxlcy9vcmcuZWNsaXBzZS5wdHAucGxkdC5zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy9zcmMvb3JnL2VjbGlwc2UvcHRwL3BsZHQvc2FtcGxlQ0RUc3RhdGljQW5hbHlzaXMvQWN0aXZhdG9yLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi1wYWNrYWdlIG9yZy5lY2xpcHNlLnB0cC5wbGR0LnNhbXBsZUNEVHN0YXRpY0FuYWx5c2lzOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2UucmVzb3VyY2UuSW1hZ2VEZXNjcmlwdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLnBsdWdpbi5BYnN0cmFjdFVJUGx1Z2luOwotaW1wb3J0IG9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGVDb250ZXh0OwotCi0vKioKLSAqIFRoZSBhY3RpdmF0b3IgY2xhc3MgY29udHJvbHMgdGhlIHBsdWctaW4gbGlmZSBjeWNsZQotICovCi1wdWJsaWMgY2xhc3MgQWN0aXZhdG9yIGV4dGVuZHMgQWJzdHJhY3RVSVBsdWdpbiB7Ci0KLQkvLyBUaGUgcGx1Zy1pbiBJRAotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBMVUdJTl9JRCA9ICJjZHRBU1QyIjsKLQotCS8vIFRoZSBzaGFyZWQgaW5zdGFuY2UKLQlwcml2YXRlIHN0YXRpYyBBY3RpdmF0b3IgcGx1Z2luOwotCQotCS8qKgotCSAqIFRoZSBjb25zdHJ1Y3RvcgotCSAqLwotCXB1YmxpYyBBY3RpdmF0b3IoKSB7Ci0JfQotCi0JLyoKLQkgKiAobm9uLUphdmFkb2MpCi0JICogQHNlZSBvcmcuZWNsaXBzZS51aS5wbHVnaW4uQWJzdHJhY3RVSVBsdWdpbiNzdGFydChvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlQ29udGV4dCkKLQkgKi8KLQlwdWJsaWMgdm9pZCBzdGFydChCdW5kbGVDb250ZXh0IGNvbnRleHQpIHRocm93cyBFeGNlcHRpb24gewotCQlzdXBlci5zdGFydChjb250ZXh0KTsKLQkJcGx1Z2luID0gdGhpczsKLQl9Ci0KLQkvKgotCSAqIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLnVpLnBsdWdpbi5BYnN0cmFjdFVJUGx1Z2luI3N0b3Aob3JnLm9zZ2kuZnJhbWV3b3JrLkJ1bmRsZUNvbnRleHQpCi0JICovCi0JcHVibGljIHZvaWQgc3RvcChCdW5kbGVDb250ZXh0IGNvbnRleHQpIHRocm93cyBFeGNlcHRpb24gewotCQlwbHVnaW4gPSBudWxsOwotCQlzdXBlci5zdG9wKGNvbnRleHQpOwotCX0KLQotCS8qKgotCSAqIFJldHVybnMgdGhlIHNoYXJlZCBpbnN0YW5jZQotCSAqCi0JICogQHJldHVybiB0aGUgc2hhcmVkIGluc3RhbmNlCi0JICovCi0JcHVibGljIHN0YXRpYyBBY3RpdmF0b3IgZ2V0RGVmYXVsdCgpIHsKLQkJcmV0dXJuIHBsdWdpbjsKLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIGFuIGltYWdlIGRlc2NyaXB0b3IgZm9yIHRoZSBpbWFnZSBmaWxlIGF0IHRoZSBnaXZlbgotCSAqIHBsdWctaW4gcmVsYXRpdmUgcGF0aAotCSAqCi0JICogQHBhcmFtIHBhdGggdGhlIHBhdGgKLQkgKiBAcmV0dXJuIHRoZSBpbWFnZSBkZXNjcmlwdG9yCi0JICovCi0JcHVibGljIHN0YXRpYyBJbWFnZURlc2NyaXB0b3IgZ2V0SW1hZ2VEZXNjcmlwdG9yKFN0cmluZyBwYXRoKSB7Ci0JCXJldHVybiBpbWFnZURlc2NyaXB0b3JGcm9tUGx1Z2luKFBMVUdJTl9JRCwgcGF0aCk7Ci0JfQotfQpkaWZmIC0tZ2l0IGEvdG9vbHMvc2FtcGxlcy9vcmcuZWNsaXBzZS5wdHAucGxkdC5zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy9zcmMvb3JnL2VjbGlwc2UvcHRwL3BsZHQvc2FtcGxlQ0RUc3RhdGljQW5hbHlzaXMvYWN0aW9ucy9BU1RXYWxrZXJBY3Rpb24uamF2YSBiL3Rvb2xzL3NhbXBsZXMvb3JnLmVjbGlwc2UucHRwLnBsZHQuc2FtcGxlQ0RUc3RhdGljQW5hbHlzaXMvc3JjL29yZy9lY2xpcHNlL3B0cC9wbGR0L3NhbXBsZUNEVHN0YXRpY0FuYWx5c2lzL2FjdGlvbnMvQVNUV2Fsa2VyQWN0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2MzIzYmMuLjAwMDAwMDAKLS0tIGEvdG9vbHMvc2FtcGxlcy9vcmcuZWNsaXBzZS5wdHAucGxkdC5zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy9zcmMvb3JnL2VjbGlwc2UvcHRwL3BsZHQvc2FtcGxlQ0RUc3RhdGljQW5hbHlzaXMvYWN0aW9ucy9BU1RXYWxrZXJBY3Rpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDQwMiArMCwwIEBACi1wYWNrYWdlIG9yZy5lY2xpcHNlLnB0cC5wbGR0LnNhbXBsZUNEVHN0YXRpY0FuYWx5c2lzLmFjdGlvbnM7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jZHQuY29yZS5kb20uYXN0LkFTVFZpc2l0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY2R0LmNvcmUuZG9tLmFzdC5JQVNUQmluYXJ5RXhwcmVzc2lvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jZHQuY29yZS5kb20uYXN0LklBU1RDb21tZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNkdC5jb3JlLmRvbS5hc3QuSUFTVENvbXBvdW5kU3RhdGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNkdC5jb3JlLmRvbS5hc3QuSUFTVERlY2xhcmF0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNkdC5jb3JlLmRvbS5hc3QuSUFTVEV4cHJlc3Npb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY2R0LmNvcmUuZG9tLmFzdC5JQVNUTmFtZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jZHQuY29yZS5kb20uYXN0LklBU1RQcmVwcm9jZXNzb3JJbmNsdWRlU3RhdGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNkdC5jb3JlLmRvbS5hc3QuSUFTVFByZXByb2Nlc3NvclN0YXRlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jZHQuY29yZS5kb20uYXN0LklBU1RTdGF0ZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY2R0LmNvcmUuZG9tLmFzdC5JQVNUVHJhbnNsYXRpb25Vbml0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNkdC5jb3JlLmRvbS5hc3QuSVR5cGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY2R0LmNvcmUuZG9tLmFzdC5JQVNUVHJhbnNsYXRpb25Vbml0LklEZXBlbmRlbmN5VHJlZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jZHQuY29yZS5kb20uYXN0LklBU1RUcmFuc2xhdGlvblVuaXQuSURlcGVuZGVuY3lUcmVlLklBU1RJbmNsdXNpb25Ob2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNkdC5jb3JlLm1vZGVsLklDRWxlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jZHQuY29yZS5tb2RlbC5JQ0VsZW1lbnRWaXNpdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNkdC5jb3JlLm1vZGVsLklUcmFuc2xhdGlvblVuaXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY2R0LmludGVybmFsLmNvcmUuZG9tLnBhcnNlci5jLkNBU1RFeHByZXNzaW9uU3RhdGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklSZXNvdXJjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuQ29yZUV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5hY3Rpb24uSUFjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5kaWFsb2dzLk1lc3NhZ2VEaWFsb2c7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVN0cnVjdHVyZWRTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuSVdvcmtiZW5jaFdpbmRvdzsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5JV29ya2JlbmNoV2luZG93QWN0aW9uRGVsZWdhdGU7Ci0KLS8qKgotICogVGhpcyB3YXMgaW5pdGlhbGx5IGJ1aWx0IGZyb20gdGhlICJTYW1wbGUgQWN0aW9uIiBwbHVnaW4gZXhhbXBsZS4KLSAqIAotICogVGhpcyBzYW1wbGUgYWN0aW9uIHdhbGtzIGFuIEFTVCB0cmVlIGZvciBhIHNlbGVjdGVkIEMgc291cmNlIGZpbGUuCi0gKiBTZWxlY3QgYSBDIHNvdXJjZSBmaWxlIGluIHRoZSBQcm9qZWN0cyB2aWV3IGFuZCBjbGljayB0aGUgaWNvbiBpbiB0aGUgdG9vbGJhcgotICogdG8gcHJpbnQgQVNUIHdhbGtpbmcgaW5mb3JtYXRpb24uCi0gKiAKLSAqIEBzZWUgSVdvcmtiZW5jaFdpbmRvd0FjdGlvbkRlbGVnYXRlCi0gKiAKLSAqIEBhdXRob3IgQmV0aCBUaWJiaXR0cyB0aWJiaXR0c0B1cy5pYm0uY29tCi0gKi8KLXB1YmxpYyBjbGFzcyBBU1RXYWxrZXJBY3Rpb24gaW1wbGVtZW50cyBJV29ya2JlbmNoV2luZG93QWN0aW9uRGVsZWdhdGUgewotCXByaXZhdGUgSVdvcmtiZW5jaFdpbmRvdyB3aW5kb3c7Ci0JcHJpdmF0ZSBJU3RydWN0dXJlZFNlbGVjdGlvbiBzZWxlY3Rpb247Ci0KLQkvKioKLQkgKiBUaGUgY29uc3RydWN0b3IuCi0JICovCi0JcHVibGljIEFTVFdhbGtlckFjdGlvbigpIHsKLQl9Ci0KLQkvKioKLQkgKiBUaGUgYWN0aW9uIGhhcyBiZWVuIGFjdGl2YXRlZC4gVGhlIGFyZ3VtZW50IG9mIHRoZSBtZXRob2QgcmVwcmVzZW50cyB0aGUKLQkgKiAncmVhbCcgYWN0aW9uIHNpdHRpbmcgaW4gdGhlIHdvcmtiZW5jaCBVSS4KLQkgKiAKLQkgKiBAc2VlIElXb3JrYmVuY2hXaW5kb3dBY3Rpb25EZWxlZ2F0ZSNydW4KLQkgKi8KLQlwdWJsaWMgdm9pZCBydW4oSUFjdGlvbiBhY3Rpb24pIHsKLQkJTWVzc2FnZURpYWxvZy5vcGVuSW5mb3JtYXRpb24od2luZG93LmdldFNoZWxsKCksICJDZHRBU1QyIFBsdWctaW4iLAotCQkJCSJTZWUgQ29uc29sZSBmb3IgQVNUIHdhbGtpbmcgcmVzdWx0cyIpOwotCQl0cnkgewotCQkJcnVuU2VsZWN0aW9uRXhhbXBsZShzZWxlY3Rpb24pOwotCQl9IGNhdGNoIChDb3JlRXhjZXB0aW9uIGUpIHsKLQkJCS8vIFRPRE8gQXV0by1nZW5lcmF0ZWQgY2F0Y2ggYmxvY2sKLQkJCWUucHJpbnRTdGFja1RyYWNlKCk7Ci0JCX0KLQl9Ci0KLQkvKioKLQkgKiBTZWxlY3Rpb24gaW4gdGhlIHdvcmtiZW5jaCBoYXMgYmVlbiBjaGFuZ2VkLiBXZSBjYW4gY2hhbmdlIHRoZSBzdGF0ZSBvZgotCSAqIHRoZSAncmVhbCcgYWN0aW9uIGhlcmUgaWYgd2Ugd2FudCwgYnV0IHRoaXMgY2FuIG9ubHkgaGFwcGVuIGFmdGVyIHRoZQotCSAqIGRlbGVnYXRlIGhhcyBiZWVuIGNyZWF0ZWQuCi0JICogCi0JICogQHNlZSBJV29ya2JlbmNoV2luZG93QWN0aW9uRGVsZWdhdGUjc2VsZWN0aW9uQ2hhbmdlZAotCSAqLwotCXB1YmxpYyB2b2lkIHNlbGVjdGlvbkNoYW5nZWQoSUFjdGlvbiBhY3Rpb24sIElTZWxlY3Rpb24gc2VsZWN0aW9uKSB7Ci0JCWlmIChzZWxlY3Rpb24gaW5zdGFuY2VvZiBJU3RydWN0dXJlZFNlbGVjdGlvbikgewotCQkJdGhpcy5zZWxlY3Rpb24gPSAoSVN0cnVjdHVyZWRTZWxlY3Rpb24pIHNlbGVjdGlvbjsKLQkJfQotCi0JfQotCi0JcHVibGljIHZvaWQgcnVuU2VsZWN0aW9uKElTZWxlY3Rpb24gc2VsZWN0aW9uKSB7Ci0JCVN5c3RlbS5vdXQucHJpbnRsbigic2VsZWN0aW9uPSIgKyBzZWxlY3Rpb24pOwotCQlpZiAoc2VsZWN0aW9uIGluc3RhbmNlb2YgSVRyYW5zbGF0aW9uVW5pdCkgewotCQkJU3lzdGVtLm91dC5wcmludGxuKCIgICBJVHJhbnNsYXRpb25Vbml0Iik7Ci0JCX0KLQkJaWYgKHNlbGVjdGlvbiBpbnN0YW5jZW9mIElDRWxlbWVudCkgewotCQkJU3lzdGVtLm91dC5wcmludGxuKCJJQ0VsZW1lbnQiKTsKLQkJCXdhbGtJQ0VsZW1lbnQoKElDRWxlbWVudCkgc2VsZWN0aW9uKTsKLQotCQl9Ci0JCWlmIChzZWxlY3Rpb24gaW5zdGFuY2VvZiBJU3RydWN0dXJlZFNlbGVjdGlvbikgewotCQkJSVN0cnVjdHVyZWRTZWxlY3Rpb24gc3MgPSAoSVN0cnVjdHVyZWRTZWxlY3Rpb24pIHNlbGVjdGlvbjsKLQkJCS8vIFN5c3RlbS5vdXQucHJpbnRsbigiIElTdHJ1Y3R1cmVkU2VsZWN0aW9uLCBjb250ZW50czoiKTsKLQotCQkJZm9yIChJdGVyYXRvciBpdGVyID0gc3MuaXRlcmF0b3IoKTsgaXRlci5oYXNOZXh0KCk7KSB7Ci0JCQkJT2JqZWN0IG9iaiA9IChPYmplY3QpIGl0ZXIubmV4dCgpOwotCQkJCS8vIEl0IGNhbiBiZSBhIFByb2plY3QsIEZvbGRlciwgRmlsZSwgZXRjLi4uCi0JCQkJaWYgKG9iaiBpbnN0YW5jZW9mIElBZGFwdGFibGUpIHsKLQkJCQkJSUFkYXB0YWJsZSBpYWQgPSAoSUFkYXB0YWJsZSkgb2JqOwotCQkJCQlmaW5hbCBJUmVzb3VyY2UgcmVzID0gKElSZXNvdXJjZSkgaWFkCi0JCQkJCQkJLmdldEFkYXB0ZXIoSVJlc291cmNlLmNsYXNzKTsKLQkJCQkJU3lzdGVtLm91dC5wcmludGxuKCIgICAgIGdvdCByZXNvdXJjZTogIiArIHJlcyk7Ci0KLQkJCQkJLy8gSUNFbGVtZW50IGNvdmVycyBmb2xkZXJzIGFuZCB0cmFuc2xhdGlvbnVuaXRzCi0JCQkJCWZpbmFsIElDRWxlbWVudCBjZSA9IChJQ0VsZW1lbnQpIGlhZAotCQkJCQkJCS5nZXRBZGFwdGVyKElDRWxlbWVudC5jbGFzcyk7Ly8gY2R0NDAKLQkJCQkJU3lzdGVtLm91dC5wcmludGxuKCIgICAgIGdvdCBJQ0VsZW1lbnQ6ICIgKyBjZSk7Ci0KLQkJCQkJSVRyYW5zbGF0aW9uVW5pdCB0dSA9IChJVHJhbnNsYXRpb25Vbml0KSBpYWQKLQkJCQkJCQkuZ2V0QWRhcHRlcihJVHJhbnNsYXRpb25Vbml0LmNsYXNzKTsKLQkJCQkJU3lzdGVtLm91dC5wcmludGxuKCIgICAgIGdvdCBJVHJhbnNsYXRpb25Vbml0OiAiICsgdHUpOwotCQkJCQl0cnkgewotCQkJCQkJbGlzdEZsYXRJbmZvKHR1KTsKLQkJCQkJCXdhbGtJVFUodHUpOwotCQkJCQl9IGNhdGNoIChDb3JlRXhjZXB0aW9uIGUpIHsKLQkJCQkJCS8vIFRPRE8gQXV0by1nZW5lcmF0ZWQgY2F0Y2ggYmxvY2sKLQkJCQkJCWUucHJpbnRTdGFja1RyYWNlKCk7Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9Ly8gZW5kIGZvcgotCQl9Ci0JfQotCi0JcHVibGljIHZvaWQgcnVuU2VsZWN0aW9uRXhhbXBsZShJU2VsZWN0aW9uIHNlbGVjdGlvbikgdGhyb3dzIENvcmVFeGNlcHRpb24gewotCQlpZiAoc2VsZWN0aW9uIGluc3RhbmNlb2YgSVN0cnVjdHVyZWRTZWxlY3Rpb24pIHsKLQkJCUlTdHJ1Y3R1cmVkU2VsZWN0aW9uIHNzID0gKElTdHJ1Y3R1cmVkU2VsZWN0aW9uKSBzZWxlY3Rpb247Ci0JCQlmb3IgKEl0ZXJhdG9yIGl0ZXIgPSBzcy5pdGVyYXRvcigpOyBpdGVyLmhhc05leHQoKTspIHsKLQkJCQlPYmplY3Qgb2JqID0gKE9iamVjdCkgaXRlci5uZXh0KCk7Ci0JCQkJLy8gSXQgY2FuIGJlIGEgUHJvamVjdCwgRm9sZGVyLCBGaWxlLCBldGMuLi4KLQkJCQlpZiAob2JqIGluc3RhbmNlb2YgSUFkYXB0YWJsZSkgewotCQkJCQlJQWRhcHRhYmxlIGlhZCA9IChJQWRhcHRhYmxlKSBvYmo7Ci0JCQkJCWZpbmFsIElSZXNvdXJjZSByZXMgPSAoSVJlc291cmNlKSBpYWQKLQkJCQkJCQkuZ2V0QWRhcHRlcihJUmVzb3VyY2UuY2xhc3MpOwotCQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIiAgICAgZ290IHJlc291cmNlOiAiICsgcmVzKTsKLQotCQkJCQkvLyBJQ0VsZW1lbnQgY292ZXJzIGZvbGRlcnMgYW5kIHRyYW5zbGF0aW9uIHVuaXRzCi0JCQkJCWZpbmFsIElDRWxlbWVudCBjZSA9IChJQ0VsZW1lbnQpIGlhZAotCQkJCQkJCS5nZXRBZGFwdGVyKElDRWxlbWVudC5jbGFzcyk7Ly8gY2R0NDAKLQkJCQkJU3lzdGVtLm91dC5wcmludGxuKCIgICAgIGdvdCBJQ0VsZW1lbnQ6ICIgKyBjZSk7Ci0KLQkJCQkJSVRyYW5zbGF0aW9uVW5pdCB0dSA9IChJVHJhbnNsYXRpb25Vbml0KSBpYWQKLQkJCQkJCQkuZ2V0QWRhcHRlcihJVHJhbnNsYXRpb25Vbml0LmNsYXNzKTsKLQkJCQkJU3lzdGVtLm91dC5wcmludGxuKCIgICAgIGdvdCBJVHJhbnNsYXRpb25Vbml0OiAiICsgdHUpOwotCQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIlxuPT09PT09PT09PWxpc3RGbGF0SW5mbygpOiIpOwotCQkJCQlsaXN0RmxhdEluZm8odHUpOwotCQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIlxuPT09PT09PT09PXdhbGtJVFUoKToiKTsKLQkJCQkJd2Fsa0lUVSh0dSk7Ci0JCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiXG49PT09PT09PT09d2Fsa0lUVV9BU1QoKToiKTsKLQkJCQkJd2Fsa0lUVV9BU1QodHUpOwotCi0JCQkJfQotCQkJfQotCQl9Ci0JfQotCi0JLyoqCi0JICogV2UgY2FuIHVzZSB0aGlzIG1ldGhvZCB0byBkaXNwb3NlIG9mIGFueSBzeXN0ZW0gcmVzb3VyY2VzIHdlIHByZXZpb3VzbHkKLQkgKiBhbGxvY2F0ZWQuCi0JICogCi0JICogQHNlZSBJV29ya2JlbmNoV2luZG93QWN0aW9uRGVsZWdhdGUjZGlzcG9zZQotCSAqLwotCXB1YmxpYyB2b2lkIGRpc3Bvc2UoKSB7Ci0JfQotCi0JLyoqCi0JICogV2Ugd2lsbCBjYWNoZSB3aW5kb3cgb2JqZWN0IGluIG9yZGVyIHRvIGJlIGFibGUgdG8gcHJvdmlkZSBwYXJlbnQgc2hlbGwKLQkgKiBmb3IgdGhlIG1lc3NhZ2UgZGlhbG9nLgotCSAqIAotCSAqIEBzZWUgSVdvcmtiZW5jaFdpbmRvd0FjdGlvbkRlbGVnYXRlI2luaXQKLQkgKi8KLQlwdWJsaWMgdm9pZCBpbml0KElXb3JrYmVuY2hXaW5kb3cgd2luZG93KSB7Ci0JCXRoaXMud2luZG93ID0gd2luZG93OwotCX0KLQotCXB1YmxpYyB2b2lkIHdhbGtJQ0VsZW1lbnQoSUNFbGVtZW50IGljZSkgewotCQkvLyBJQ0VsZW1lbnQgaWNlID0gKElDRWxlbWVudClzZWxlY3Rpb247Ci0JCVN0cmluZyBlTmFtZSA9IGljZS5nZXRFbGVtZW50TmFtZSgpOwotCQlTeXN0ZW0ub3V0LnByaW50bG4oIklDRWxlbWVudCBuYW1lOiAiICsgZU5hbWUpOwotCi0JfQotCi0JLyoqCi0JICogV2FsayB0aGUgSVRyYW5zbGF0aW9uVW5pdCB3aXRoIGEgdmlzaXRvciwgd2hpY2ggKG9ubHkpIHZpc2l0cyBJQ0VsZW1lbnRzCi0JICogCi0JICogQHBhcmFtIHR1Ci0JICogQHRocm93cyBDb3JlRXhjZXB0aW9uCi0JICovCi0JcHJpdmF0ZSB2b2lkIHdhbGtJVFUoSVRyYW5zbGF0aW9uVW5pdCB0dSkgdGhyb3dzIENvcmVFeGNlcHRpb24gewotCQlTdHJpbmcgdHVOYW1lID0gdHUuZ2V0RWxlbWVudE5hbWUoKTsKLQkJU3lzdGVtLm91dC5wcmludGxuKCJJVHJhbnNsYXRpb25Vbml0IG5hbWU6ICIgKyB0dU5hbWUpOwotCQl0dS5hY2NlcHQobmV3IElDRWxlbWVudFZpc2l0b3IoKSB7Ci0JCQlwdWJsaWMgYm9vbGVhbiB2aXNpdChJQ0VsZW1lbnQgZWxlbWVudCkgdGhyb3dzIENvcmVFeGNlcHRpb24gewotCQkJCWJvb2xlYW4gdmlzaXRDaGlsZHJlbiA9IHRydWU7Ci0JCQkJU3lzdGVtLm91dC5wcmludGxuKCJWaXNpdGluZzogIiArIGVsZW1lbnQuZ2V0RWxlbWVudE5hbWUoKSk7Ci0JCQkJcmV0dXJuIHZpc2l0Q2hpbGRyZW47Ci0JCQl9Ci0JCX0pOwotCQlTeXN0ZW0ub3V0LnByaW50bG4oIkFTVCB2aXNpdG9yIGZvciAiICsgdHVOYW1lKTsKLQkJSUFTVFRyYW5zbGF0aW9uVW5pdCBhc3QgPSB0dS5nZXRBU1QoKTsKLQkJYXN0LmFjY2VwdChuZXcgTXlBU1RWaXNpdG9yKCkpOwotCX0KLQotCS8qKgotCSAqIFdhbGsgdGhlIElBU1RUcmFuc2xhdGlvblVuaXQncyBBU1QgdHJlZSwgd2hpY2ggY2FuIHZpc2l0IG1hbnkgdHlwZXMgb2YKLQkgKiBub2RlcwotCSAqIAotCSAqIEBwYXJhbSB0dQotCSAqIEB0aHJvd3MgQ29yZUV4Y2VwdGlvbgotCSAqLwotCXByaXZhdGUgdm9pZCB3YWxrSVRVX0FTVChJVHJhbnNsYXRpb25Vbml0IHR1KSB0aHJvd3MgQ29yZUV4Y2VwdGlvbiB7Ci0JCVN5c3RlbS5vdXQucHJpbnRsbigiQVNUIHZpc2l0b3IgZm9yICIgKyB0dS5nZXRFbGVtZW50TmFtZSgpKTsKLQkJSUFTVFRyYW5zbGF0aW9uVW5pdCBhc3QgPSB0dS5nZXRBU1QoKTsKLQkJU3lzdGVtLm91dAotCQkJCS5wcmludGxuKCJcbj09PT09PT09PT09PT09PT09TXlBU1RWaXNpdG9yMiBhbHNvIGltcGxlbWVudHMgbGVhdmUoKSBcbiIpOwotCQlhc3QuYWNjZXB0KG5ldyBNeUFTVFZpc2l0b3IyKCkpOwotCX0KLQotCWNsYXNzIE15QVNUVmlzaXRvciBleHRlbmRzIEFTVFZpc2l0b3IgewotCi0JCU15QVNUVmlzaXRvcigpIHsKLQkJCXRoaXMuc2hvdWxkVmlzaXRTdGF0ZW1lbnRzID0gdHJ1ZTsgLy8gbG90cyBtb3JlCi0JCQl0aGlzLnNob3VsZFZpc2l0RGVjbGFyYXRpb25zID0gdHJ1ZTsKLQkJfQotCi0JCXB1YmxpYyBpbnQgdmlzaXQoSUFTVFN0YXRlbWVudCBzdG10KSB7IC8vIGxvdHMgbW9yZQotCQkJU3RyaW5nIHNpZyA9IHN0bXQuZ2V0UmF3U2lnbmF0dXJlKCk7Ci0JCQlpZiAoc2lnLmxlbmd0aCgpID4gMCkKLQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIlZpc2l0aW5nIHN0bXQ6ICIgKyBzdG10LmdldFJhd1NpZ25hdHVyZSgpKTsKLQkJCWVsc2UgaWYgKHN0bXQgaW5zdGFuY2VvZiBJQVNUQ29tcG91bmRTdGF0ZW1lbnQpIHsKLQkJCQlJQVNUQ29tcG91bmRTdGF0ZW1lbnQgY3N0bXQgPSAoSUFTVENvbXBvdW5kU3RhdGVtZW50KSBzdG10OwotCQkJCUlBU1RTdGF0ZW1lbnRbXSBzdG10cyA9IGNzdG10LmdldFN0YXRlbWVudHMoKTsKLQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIlZpc2l0aW5nIGNvbXBvdW5kIHN0bXQgd2l0aCBzdG10czogIgotCQkJCQkJKyBzdG10cy5sZW5ndGgpOwotCQkJCWZvciAoSUFTVFN0YXRlbWVudCBzdCA6IHN0bXRzKSB7Ci0JCQkJCVN0cmluZyByYXdTaWcgPSBzdC5nZXRSYXdTaWduYXR1cmUoKTsKLQotCQkJCQlpZiAocmF3U2lnLmxlbmd0aCgpID09IDApIHsKLQkJCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiICAgLT4iICsgc3QpOwotCQkJCQkJaWYgKHN0IGluc3RhbmNlb2YgQ0FTVEV4cHJlc3Npb25TdGF0ZW1lbnQpIHsKLQkJCQkJCQlDQVNURXhwcmVzc2lvblN0YXRlbWVudCBlcyA9IChDQVNURXhwcmVzc2lvblN0YXRlbWVudCkgc3Q7Ci0JCQkJCQkJSUFTVEV4cHJlc3Npb24gZXhwID0gZXMuZ2V0RXhwcmVzc2lvbigpOwotCQkJCQkJCWlmIChleHAgaW5zdGFuY2VvZiBJQVNUQmluYXJ5RXhwcmVzc2lvbikgewotCQkJCQkJCQlJQVNUQmluYXJ5RXhwcmVzc2lvbiBiZXhwID0gKElBU1RCaW5hcnlFeHByZXNzaW9uKSBleHA7Ci0KLQkJCQkJCQkJU3lzdGVtLm91dC5wcmludGxuKCIgICAgYmluYXJ5IGV4cDogIgotCQkJCQkJCQkJCSsgYmV4cC5nZXRPcGVyYW5kMSgpICsgIiAiCi0JCQkJCQkJCQkJKyBiZXhwLmdldE9wZXJhdG9yKCkgKyAiICIKLQkJCQkJCQkJCQkrIGJleHAuZ2V0T3BlcmFuZDIoKSk7Ci0JCQkJCQkJfQotCQkJCQkJCVN0cmluZyBleHBTdHIgPSBleHAuZ2V0UmF3U2lnbmF0dXJlKCk7Ci0JCQkJCQkJSVR5cGUgdHlwZSA9IGV4cC5nZXRFeHByZXNzaW9uVHlwZSgpOwotCQkJCQkJfQotCQkJCQl9IGVsc2UgewotCQkJCQkJU3lzdGVtLm91dC5wcmludGxuKCIgICAtPiIgKyByYXdTaWcpOwotCQkJCQl9Ci0JCQkJfQotCQkJfQotCQkJcmV0dXJuIFBST0NFU1NfQ09OVElOVUU7Ci0JCX0KLQotCQlwdWJsaWMgaW50IHZpc2l0KElBU1REZWNsYXJhdGlvbiBkZWNsKSB7Ci0JCQlTeXN0ZW0ub3V0LnByaW50bG4oIlZpc2l0aW5nIGRlY2w6ICIgKyBkZWNsLmdldFJhd1NpZ25hdHVyZSgpKTsKLQkJCXJldHVybiBQUk9DRVNTX0NPTlRJTlVFOwotCQl9Ci0KLQl9Ci0KLQotCS8qKiBWaXNpdG9yIHRoYXQgdXNlcyBsZWF2ZSgpIHRvIHNob3cgbmVzdGluZyAqLwotCWNsYXNzIE15QVNUVmlzaXRvcjIgZXh0ZW5kcyBBU1RWaXNpdG9yIHsKLQotCQlNeUFTVFZpc2l0b3IyKCkgewotCQkJdGhpcy5zaG91bGRWaXNpdFN0YXRlbWVudHMgPSB0cnVlOwotCQkJdGhpcy5zaG91bGRWaXNpdERlY2xhcmF0aW9ucyA9IHRydWU7Ci0JCQl0aGlzLnNob3VsZFZpc2l0TmFtZXMgPSB0cnVlOwotCQl9Ci0KLQkJLyoqCi0JCSAqIFByaW50IHN0YXRlbWVudCBpbmZvOiBpZiBhbHRlcmVkIGJ5IHByZXByb2Nlc3NvciwgdGhlbgotCQkgKiBnZXRSYXdTaWduYXR1cmUoKSBpcyBlbXB0eTsgdXNlIGFsdGVybmF0ZSByZXByZXNlbnRhdGlvbgotCQkgKi8KLQkJcHVibGljIGludCB2aXNpdChJQVNUU3RhdGVtZW50IHN0bXQpIHsKLQkJCVN0cmluZyBzaWcgPSBzdG10LmdldFJhd1NpZ25hdHVyZSgpOwotCQkJaWYgKHNpZy5sZW5ndGgoKSA+IDApCi0JCQkJU3lzdGVtLm91dC5wcmludGxuKCJWaXNpdGluZyBzdG10OiAiICsgc3RtdC5nZXRSYXdTaWduYXR1cmUoKSk7Ci0JCQllbHNlCi0JCQkJU3lzdGVtLm91dC5wcmludGxuKCJWaXNpdGluZyBzdG10OiAiICsgc3RtdC50b1N0cmluZygpKTsKLQkJCXJldHVybiBQUk9DRVNTX0NPTlRJTlVFOwotCQl9Ci0KLQkJcHVibGljIGludCB2aXNpdChJQVNURGVjbGFyYXRpb24gZGVjbCkgewotCQkJU3lzdGVtLm91dC5wcmludGxuKCJWaXNpdGluZyBkZWNsOiAiICsgZGVjbC5nZXRSYXdTaWduYXR1cmUoKSk7Ci0JCQlyZXR1cm4gUFJPQ0VTU19DT05USU5VRTsKLQkJfQotCi0JCXB1YmxpYyBpbnQgdmlzaXQoSUFTVE5hbWUgbmFtZSkgewotCQkJU3RyaW5nIHBydE5hbWUgPSBuYW1lLnRvU3RyaW5nKCk7Ci0JCQlpZiAocHJ0TmFtZS5sZW5ndGgoKSA9PSAwKQotCQkJCXBydE5hbWUgPSBuYW1lLmdldFJhd1NpZ25hdHVyZSgpOyAvLyB1c2UgcHJlIHByZS1wcm9jZXNzb3IKLQkJCS8vIHZhbHVlCi0JCQlTeXN0ZW0ub3V0LnByaW50bG4oIlZpc2l0aW5nIG5hbWU6ICIgKyBwcnROYW1lKTsKLQkJCXJldHVybiBQUk9DRVNTX0NPTlRJTlVFOwotCQl9Ci0KLQkJcHVibGljIGludCBsZWF2ZShJQVNUU3RhdGVtZW50IHN0bXQpIHsKLQkJCVN5c3RlbS5vdXQucHJpbnRsbigiIExlYXZpbmcgc3RtdDogIiArIHN0bXQuZ2V0UmF3U2lnbmF0dXJlKCkpOwotCQkJcmV0dXJuIFBST0NFU1NfQ09OVElOVUU7Ci0JCX0KLQotCQlwdWJsaWMgaW50IGxlYXZlKElBU1REZWNsYXJhdGlvbiBkZWNsKSB7Ci0JCQlTeXN0ZW0ub3V0LnByaW50bG4oIiBMZWF2aW5nIGRlY2w6ICIgKyBkZWNsLmdldFJhd1NpZ25hdHVyZSgpKTsKLQkJCXJldHVybiBQUk9DRVNTX0NPTlRJTlVFOwotCQl9Ci0KLQkJcHVibGljIGludCBsZWF2ZShJQVNUTmFtZSBuYW1lKSB7Ci0JCQlTeXN0ZW0ub3V0LnByaW50bG4oIiBMZWF2aW5nIG5hbWU6ICIgKyBuYW1lKTsvLyBwb3NzaWJseSBlbXB0eQotCQkJcmV0dXJuIFBST0NFU1NfQ09OVElOVUU7Ci0JCX0KLQl9Ci0KLQkvKioKLQkgKiBMaXN0ICJmbGF0IGluZm8iIHR5cGUgcXVlcmllcyB0aGF0IHJldHVybiBsaXN0cyBvZiB0aGluZ3Mgb24gdGhlIGFzdAotCSAqIAotCSAqIEBwYXJhbSB0dQotCSAqIEB0aHJvd3MgQ29yZUV4Y2VwdGlvbgotCSAqLwotCXZvaWQgbGlzdEZsYXRJbmZvKElUcmFuc2xhdGlvblVuaXQgdHUpIHRocm93cyBDb3JlRXhjZXB0aW9uIHsKLQkJSUFTVFRyYW5zbGF0aW9uVW5pdCBhc3QgPSB0dS5nZXRBU1QoKTsKLQotCQlTeXN0ZW0ub3V0LnByaW50bG4oIkFTVCBmb3I6ICIgKyBhc3QuZ2V0Q29udGFpbmluZ0ZpbGVuYW1lKCkpOwotCi0JCUlBU1RQcmVwcm9jZXNzb3JTdGF0ZW1lbnRbXSBwcHNzID0gYXN0LmdldEFsbFByZXByb2Nlc3NvclN0YXRlbWVudHMoKTsKLQkJU3lzdGVtLm91dC5wcmludGxuKCJQcmVwcm9jZXNzb3JTdG10czogKG9taXQgL3Vzci8uLi4pIik7Ci0JCWZvciAoaW50IGkgPSAwOyBpIDwgcHBzcy5sZW5ndGg7IGkrKykgewotCQkJSUFTVFByZXByb2Nlc3NvclN0YXRlbWVudCBwcHMgPSBwcHNzW2ldOwotCQkJU3RyaW5nIGZuID0gcHBzLmdldENvbnRhaW5pbmdGaWxlbmFtZSgpOwotCQkJaWYgKCFmbi5zdGFydHNXaXRoKCIvdXNyIikpIHsKLQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oaSArICIgIFByZXByb2Nlc3NvclN0bXQ6ICIgKyBsYXN0cGFydChmbikKLQkJCQkJCSsgIiAiICsgcHBzLmdldFJhd1NpZ25hdHVyZSgpKTsKLQkJCX0KLQkJfQotCQlJQVNURGVjbGFyYXRpb25bXSBkZWNscyA9IGFzdC5nZXREZWNsYXJhdGlvbnMoKTsKLQkJU3lzdGVtLm91dC5wcmludGxuKCJEZWNsYXJhdGlvbnM6IChvbWl0IC91c3IvLi4uKSIpOwotCQlmb3IgKGludCBpID0gMDsgaSA8IGRlY2xzLmxlbmd0aDsgaSsrKSB7Ci0JCQlJQVNURGVjbGFyYXRpb24gZGVjbCA9IGRlY2xzW2ldOwotCQkJU3RyaW5nIGZuID0gZGVjbC5nZXRDb250YWluaW5nRmlsZW5hbWUoKTsKLQkJCWlmICghZm4uc3RhcnRzV2l0aCgiL3VzciIpKSB7Ci0JCQkJU3lzdGVtLm91dC5wcmludGxuKGkgKyAiICBEZWNsYXJhdGlvbjogIiArIGxhc3RwYXJ0KGZuKSArICIgIgotCQkJCQkJKyBkZWNsLmdldFJhd1NpZ25hdHVyZSgpKTsKLQkJCX0KLQkJfQotCQlJQVNUUHJlcHJvY2Vzc29yU3RhdGVtZW50W10gaWRpcnMgPSBhc3QuZ2V0SW5jbHVkZURpcmVjdGl2ZXMoKTsKLQkJLy8gcmVjdXJzZXMgdGhydSBpbmNsdWRlcyBpbmNsdWRlZCBieSBvdGhlciBpbmNsdWRlcy4uLgotCQlTeXN0ZW0ub3V0LnByaW50bG4oIkluY2x1ZGUgZGlyZWN0aXZlczogIik7Ci0JCWZvciAoaW50IGkgPSAwOyBpIDwgaWRpcnMubGVuZ3RoOyBpKyspIHsKLQkJCUlBU1RQcmVwcm9jZXNzb3JTdGF0ZW1lbnQgaWRpciA9IGlkaXJzW2ldOwotCQkJU3lzdGVtLm91dC5wcmludGxuKGkgKyAiIGluY2x1ZGUgZGlyZWN0aXZlOiAiICsgaWRpcik7Ci0KLQkJfQotCi0JCUlEZXBlbmRlbmN5VHJlZSBkdCA9IGFzdC5nZXREZXBlbmRlbmN5VHJlZSgpOwotCQlJQVNUSW5jbHVzaW9uTm9kZVtdIGlucyA9IGR0LmdldEluY2x1c2lvbnMoKTsKLQkJLy8gdGhpcyBsaXN0cyBvbmx5IHRoZSBpbmNsdWRlcyBpbW1lZGlhdGVseSBpbmNsdWRlZCBieSB0aGlzIHNyYyBmaWxlCi0JCVN5c3RlbS5vdXQucHJpbnRsbigiRGVwZW5kZW5jeSB0cmVlL0luY2x1ZGUgc3RhdGVtZW50czoiKTsKLQkJZm9yIChpbnQgaSA9IDA7IGkgPCBpbnMubGVuZ3RoOyBpKyspIHsKLQkJCUlBU1RJbmNsdXNpb25Ob2RlIGluID0gaW5zW2ldOwotCQkJSUFTVFByZXByb2Nlc3NvckluY2x1ZGVTdGF0ZW1lbnQgaXMgPSBpbi5nZXRJbmNsdWRlRGlyZWN0aXZlKCk7Ci0JCQlTeXN0ZW0ub3V0LnByaW50bG4oaSArICIgIGluY2x1ZGUgc3RtdDogIiArIGlzKTsKLQkJfQotCQkvLyBub3RlOiBjb21tZW50cyBhcmUgbm90IGF2YWlsYWJsZSBhcyBBU1QgTm9kZXMgYnV0IGFyZSBhdmFpbGFibGUgaGVyZS4KLQkJLy8gKEluIHNwaXRlIG9mIHRoZSBleGlzdGVuY2Ugb2YgSUFTVENvbW1lbnQgY2xhc3MgYW5kIHZpc2l0KElBU1RDb21tZW50KSBtZXRob2QuKQotCQkvLyBUaGVzZSBhcmUgZGVwcmVjYXRlZCBpbiBDRFQgNS4wCi0JCWFzdCA9IHR1LmdldEFTVChudWxsLElUcmFuc2xhdGlvblVuaXQuQVNUX0NSRUFURV9DT01NRU5UX05PREVTKTsKLQkJSUFTVENvbW1lbnRbXSBjbXRzID0gYXN0LmdldENvbW1lbnRzKCk7Ci0JCVN5c3RlbS5vdXQucHJpbnRsbigiQ29tbWVudHMgZm91bmQ6ICIrY210cy5sZW5ndGgpOwotCQlmb3IgKGludCBpID0gMDsgaSA8IGNtdHMubGVuZ3RoOyBpKyspIHsKLQkJCUlBU1RDb21tZW50IGNvbW1lbnQgPSBjbXRzW2ldOwotCQkJY2hhcltdIGNtdENoYXI9Y29tbWVudC5nZXRDb21tZW50KCk7Ci0JCQlTdHJpbmcgY210U3RyPVN0cmluZy52YWx1ZU9mKGNtdENoYXIpOwotCQkJCi0JCQlTeXN0ZW0ub3V0LnByaW50bG4oaSArICIgQ29tbWVudDogWyIgKyBjbXRTdHIgKyAiXSByYXdTaWc6IFsiK2NvbW1lbnQuZ2V0UmF3U2lnbmF0dXJlKCkrIl0gbGluZSAiCi0JCQkJCSsgY29tbWVudC5nZXRGaWxlTG9jYXRpb24oKSk7Ci0KLQkJfQotCi0JfQotCi0JLyoqCi0JICogUmV0dXJuIGxhc3QgcGFydCBvZiBzdHJpbmcgcGF0aG5hbWU6IGUuZy4gYS9iL2MvZm9vLmMgcmV0dXJucyBmb28uYwotCSAqIAotCSAqIEBwYXJhbSBwYXRobmFtZQotCSAqIEByZXR1cm4KLQkgKi8KLQlTdHJpbmcgbGFzdHBhcnQoU3RyaW5nIHBhdGhuYW1lKSB7Ci0JCWludCBsb2MgPSBwYXRobmFtZS5sYXN0SW5kZXhPZignLycpOwotCQlyZXR1cm4gcGF0aG5hbWUuc3Vic3RyaW5nKGxvYyArIDEpOwotCX0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90b29scy9zYW1wbGVzL29yZy5lY2xpcHNlLnB0cC5wbGR0LnNhbXBsZUNEVHN0YXRpY0FuYWx5c2lzL3NyYy9vcmcvZWNsaXBzZS9wdHAvcGxkdC9zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy9oYW5kbGVycy9CdWlsZENGR3JhcGhIYW5kbGVyLmphdmEgYi90b29scy9zYW1wbGVzL29yZy5lY2xpcHNlLnB0cC5wbGR0LnNhbXBsZUNEVHN0YXRpY0FuYWx5c2lzL3NyYy9vcmcvZWNsaXBzZS9wdHAvcGxkdC9zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy9oYW5kbGVycy9CdWlsZENGR3JhcGhIYW5kbGVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyNGFkOGUuLjAwMDAwMDAKLS0tIGEvdG9vbHMvc2FtcGxlcy9vcmcuZWNsaXBzZS5wdHAucGxkdC5zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy9zcmMvb3JnL2VjbGlwc2UvcHRwL3BsZHQvc2FtcGxlQ0RUc3RhdGljQW5hbHlzaXMvaGFuZGxlcnMvQnVpbGRDRkdyYXBoSGFuZGxlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTM1ICswLDAgQEAKLXBhY2thZ2Ugb3JnLmVjbGlwc2UucHRwLnBsZHQuc2FtcGxlQ0RUc3RhdGljQW5hbHlzaXMuaGFuZGxlcnM7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jZHQuY29yZS5kb20uYXN0LklBU1RTdGF0ZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5jb21tYW5kcy5BYnN0cmFjdEhhbmRsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5jb21tYW5kcy5FeGVjdXRpb25FdmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLmNvbW1hbmRzLkV4ZWN1dGlvbkV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2UuZGlhbG9ncy5NZXNzYWdlRGlhbG9nOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVNlbGVjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTdHJ1Y3R1cmVkU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnB0cC5wbGR0Lm1waS5hbmFseXNpcy5jZHQuZ3JhcGhzLkdyYXBoQ3JlYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5wdHAucGxkdC5tcGkuYW5hbHlzaXMuY2R0LmdyYXBocy5JQmxvY2s7Ci1pbXBvcnQgb3JnLmVjbGlwc2UucHRwLnBsZHQubXBpLmFuYWx5c2lzLmNkdC5ncmFwaHMuSUNhbGxHcmFwaDsKLWltcG9ydCBvcmcuZWNsaXBzZS5wdHAucGxkdC5tcGkuYW5hbHlzaXMuY2R0LmdyYXBocy5JQ2FsbEdyYXBoTm9kZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5wdHAucGxkdC5tcGkuYW5hbHlzaXMuY2R0LmdyYXBocy5JQ29udHJvbEZsb3dHcmFwaDsKLWltcG9ydCBvcmcuZWNsaXBzZS5wdHAucGxkdC5tcGkuYW5hbHlzaXMuY2R0LmdyYXBocy5pbXBsLkNvbnRyb2xGbG93R3JhcGg7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuSVNlbGVjdGlvbkxpc3RlbmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLklXb3JrYmVuY2hQYXJ0OwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLklXb3JrYmVuY2hXaW5kb3c7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuaGFuZGxlcnMuSGFuZGxlclV0aWw7Ci0KLS8qKgotICogQnVpbGQgQ29udHJvbCBGbG93IEdyYXBoCi0gKiAKLSAqIEBhdXRob3IgQmV0aCBUaWJiaXR0cyAgdGliYml0dHNAdXMuaWJtLmNvbQotICogIAotICogQHNlZSBvcmcuZWNsaXBzZS5jb3JlLmNvbW1hbmRzLklIYW5kbGVyCi0gKiBAc2VlIG9yZy5lY2xpcHNlLmNvcmUuY29tbWFuZHMuQWJzdHJhY3RIYW5kbGVyCi0gKiBAc2VlIG9yZy5lY2xpcHNlLnB0cC5wbGR0Lm1waS5hbmFseXNpcy5jZHQuZ3JhcGhzLkdyYXBoQ3JlYXRvcgotICovCi1wdWJsaWMgY2xhc3MgQnVpbGRDRkdyYXBoSGFuZGxlciBleHRlbmRzIEFic3RyYWN0SGFuZGxlciBpbXBsZW1lbnRzCi0JCUlTZWxlY3Rpb25MaXN0ZW5lciB7Ci0JcHJpdmF0ZSBJU3RydWN0dXJlZFNlbGVjdGlvbiBzZWxlY3Rpb247Ci0JcHJvdGVjdGVkIElDYWxsR3JhcGggY2FsbEdyYXBoOwotCXByb3RlY3RlZCBHcmFwaENyZWF0b3IgZ3JhcGhDcmVhdG9yOwotCXByb3RlY3RlZCBJV29ya2JlbmNoV2luZG93IHdpbmRvdzsKLQotCS8qKgotCSAqIFRoZSBjb25zdHJ1Y3Rvci4KLQkgKi8KLQlwdWJsaWMgQnVpbGRDRkdyYXBoSGFuZGxlcigpIHsKLQkJZ3JhcGhDcmVhdG9yID0gbmV3IEdyYXBoQ3JlYXRvcigpOwotCi0JfQotCi0JLyoqCi0JICogRXhlY3V0ZSB0aGUgY29tbWFuZDogZXh0cmFjdCBleHRyYWN0IHRoZSBuZWVkZWQgaW5mb3JtYXRpb24gZnJvbSB0aGUKLQkgKiBhcHBsaWNhdGlvbiBjb250ZXh0LiA8YnI+Ci0JICogQSBuZXcgY2FsbCBncmFwaCBpcyBjb25zdHJ1Y3RlZCBmb3IgdGhlIHNlbGVjdGVkIHJlc291cmNlcy4KLQkgKiAKLQkgKiBAcGFyYW0gZXZlbnQKLQkgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIGV4ZWN1dGlvbi4gUmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UgYnkgSUhhbmRsZXIKLQkgKiAgICAgICAgIGludGVyZmFjZSwgbXVzdCBiZSA8Y29kZT5udWxsPC9jb2RlPi4KLQkgKi8KLQlwdWJsaWMgT2JqZWN0IGV4ZWN1dGUoRXhlY3V0aW9uRXZlbnQgZXZlbnQpIHRocm93cyBFeGVjdXRpb25FeGNlcHRpb24gewotCQl3aW5kb3cgPSBIYW5kbGVyVXRpbC5nZXRBY3RpdmVXb3JrYmVuY2hXaW5kb3dDaGVja2VkKGV2ZW50KTsKLQkJU3lzdGVtLm91dC5wcmludGxuKCJCdWlsZENGR3JhcGhIYW5kbGVyLmV4ZWN1dGUoKSIpOwotCQkvLyBjcmVhdGUgYW4gZW1wdHkgY2FsbCBncmFwaCB0byBiZWdpbiB3aXRoCi0JCWNhbGxHcmFwaCA9IGdyYXBoQ3JlYXRvci5pbml0Q2FsbEdyYXBoKCk7Ci0JCS8vIEdldCB0aGUgY3VycmVudCBzZWxlY3Rpb24KLQkJaWYgKHNlbGVjdGlvbiA9PSBudWxsKSB7Ci0JCQlJU2VsZWN0aW9uIHNlbCA9IEhhbmRsZXJVdGlsLmdldEN1cnJlbnRTZWxlY3Rpb24oZXZlbnQpOwotCQkJaWYgKHNlbCBpbnN0YW5jZW9mIElTdHJ1Y3R1cmVkU2VsZWN0aW9uKSB7Ci0JCQkJc2VsZWN0aW9uID0gKElTdHJ1Y3R1cmVkU2VsZWN0aW9uKSBzZWw7Ci0JCQl9Ci0JCQlpZiAoc2VsZWN0aW9uID09IG51bGwpIHsKLQkJCQltZXNzYWdlKCJObyBzZWxlY3Rpb24gZGV0ZWN0ZWQuIFBsZWFzZSBzZWxlY3QgYSBmaWxlLCBmb2xkZXIsIG9yIHByb2plY3QgaW4gdGhlIFByb2plY3RzIFZpZXcuIik7Ci0JCQkJc2VsZWN0aW9uPW51bGw7Ci0JCQkJcmV0dXJuIG51bGw7Ci0JCQl9Ci0JCX0KLQotCQkvLyBXZSBpdGVyYXRlIGhlcmUgb25seSB0byBoYW5kbGUgdGhlIHBvc3NpYmlsaXR5IG9mIG11bHRpcGxlLXNlbGVjdGlvbi4KLQkJLy8gZ3JhcGhDcmVhdG9yIHdpbGwgZGVzY2VuZCBpbnRvIGNoaWxkIG5vZGVzLgotCQkvKmZpbmFsKi8gSVJlc291cmNlIHJlcz1udWxsOwotCQlmb3IgKEl0ZXJhdG9yIGl0ZXIgPSBzZWxlY3Rpb24uaXRlcmF0b3IoKTsgaXRlci5oYXNOZXh0KCk7KSB7Ci0JCQlPYmplY3Qgb2JqID0gKE9iamVjdCkgaXRlci5uZXh0KCk7Ci0JCQkvLyBJdCBjYW4gYmUgYSBQcm9qZWN0LCBGb2xkZXIsIEZpbGUsIGV0Yy4uLgotCQkJaWYgKG9iaiBpbnN0YW5jZW9mIElBZGFwdGFibGUpIHsKLQkJCQlJQWRhcHRhYmxlIGlhZCA9IChJQWRhcHRhYmxlKSBvYmo7Ci0JCQkJcmVzID0gKElSZXNvdXJjZSkgaWFkLmdldEFkYXB0ZXIoSVJlc291cmNlLmNsYXNzKTsKLQkJCQkvLyBOb3RlOiBwdXQgdGhpcyBpbiBhIEpvYiBvciBXb3Jrc3BhY2VNb2RpZnlPcGVyYXRpb24gaWYgcmVzb3VyY2VzCi0JCQkJLy8gd2lsbCBiZSBjaGFuZ2VkLgotCQkJCWlmIChyZXMgIT0gbnVsbCkgewotCQkJCQljYWxsR3JhcGggPSBncmFwaENyZWF0b3IuaW5pdENhbGxHcmFwaChyZXMpOwotCQkJCX0gZWxzZSB7Ci0JCQkJCW1lc3NhZ2UoIlBsZWFzZSBzZWxlY3QgYSBmaWxlLCBmb2xkZXIsIG9yIHByb2plY3QgaW4gdGhlIFByb2plY3RzIHZpZXciKTsKLQkJCQkJc2VsZWN0aW9uPW51bGw7Ci0JCQkJCXJldHVybiBudWxsOwotCQkJCX0KLQkJCX0KLQkJfQotCi0JCWdyYXBoQ3JlYXRvci5jb21wdXRlQ2FsbEdyYXBoKGNhbGxHcmFwaCk7Ci0JCS8vIGdldCB0aGUgZmlyc3Qgbm9kZQotCQlJQ2FsbEdyYXBoTm9kZSB0b3BOb2RlID0gY2FsbEdyYXBoLnRvcEVudHJ5KCk7Ci0JCVN0cmluZyB0b3BOYW1lPXRvcE5vZGUuZ2V0RnVuY05hbWUoKTsKLQkJCi0JCUlDYWxsR3JhcGhOb2RlIGZpcnN0Tm9kZT1jYWxsR3JhcGguZ2V0QWxsTm9kZXMoKS5nZXQoMCk7Ci0JCVN0cmluZyBmaXJzdE5hbWU9Zmlyc3ROb2RlLmdldEZ1bmNOYW1lKCk7Ci0JCS8vIGdldCBhIG5vZGUgYnkgZnVuY3Rpb24gbmFtZQotCQlJQ2FsbEdyYXBoTm9kZSBuYW1lZE5vZGUgPSBjYWxsR3JhcGguZ2V0Tm9kZShyZXMuZ2V0TmFtZSgpLCAiZm9vIik7Ci0JCVN0cmluZyBuYW1lZE5hbWU9IiI7Ci0JCWlmKG5hbWVkTm9kZSE9bnVsbCkgewotCQkJbmFtZWROYW1lPW5hbWVkTm9kZS5nZXRGdW5jTmFtZSgpOwotCQl9Ci0JCQotCQlJQ2FsbEdyYXBoTm9kZSBub2RlID0gdG9wTm9kZTsKLQkJSUFTVFN0YXRlbWVudCBmdW5jQm9keT1ub2RlLmdldEZ1bmNEZWYoKS5nZXRCb2R5KCk7Ci0JCUlDb250cm9sRmxvd0dyYXBoIGNmZyA9IG5ldyBDb250cm9sRmxvd0dyYXBoKGZ1bmNCb2R5KTsKLQkJY2ZnLmJ1aWxkQ0ZHKCk7Ci0JCQotCQlJQmxvY2sgZW50cnlCbG9jayA9IGNmZy5nZXRFbnRyeSgpOwotCQlmb3IgKElCbG9jayBibG9jaz0gY2ZnLmdldEVudHJ5KCk7IGJsb2NrIT1udWxsOyBibG9jayA9IGJsb2NrLmdldFRvcE5leHQoKSkgewotCQkJYmxvY2sucHJpbnQoKTsKLQkJfQotCQlyZXR1cm4gbnVsbDsKLQl9Ci0KLQlwdWJsaWMgdm9pZCBzZWxlY3Rpb25DaGFuZ2VkKElXb3JrYmVuY2hQYXJ0IHBhcnQsIElTZWxlY3Rpb24gc2VsZWN0aW9uKSB7Ci0JCWlmIChzZWxlY3Rpb24gaW5zdGFuY2VvZiBJU3RydWN0dXJlZFNlbGVjdGlvbikgewotCQkJdGhpcy5zZWxlY3Rpb24gPSAoSVN0cnVjdHVyZWRTZWxlY3Rpb24pIHNlbGVjdGlvbjsKLQkJCVN5c3RlbS5vdXQucHJpbnRsbigiQnVpbGRDYWxsR3JhcGhIYW5kbGVyIGdvdCBzZWxlY3Rpb24iKTsKLQkJfQotCi0JfQotCi0JcHVibGljIHZvaWQgbWVzc2FnZShTdHJpbmcgbXNnKSB7Ci0JCU1lc3NhZ2VEaWFsb2cub3BlbkluZm9ybWF0aW9uKHdpbmRvdy5nZXRTaGVsbCgpLAotCQkJCSJIb3VzdG9uLCB3ZSBoYXZlIGEgcHJvYmxlbSIsIG1zZyk7Ci0JfQotfQpkaWZmIC0tZ2l0IGEvdG9vbHMvc2FtcGxlcy9vcmcuZWNsaXBzZS5wdHAucGxkdC5zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy9zcmMvb3JnL2VjbGlwc2UvcHRwL3BsZHQvc2FtcGxlQ0RUc3RhdGljQW5hbHlzaXMvaGFuZGxlcnMvQnVpbGRDYWxsR3JhcGhIYW5kbGVyLmphdmEgYi90b29scy9zYW1wbGVzL29yZy5lY2xpcHNlLnB0cC5wbGR0LnNhbXBsZUNEVHN0YXRpY0FuYWx5c2lzL3NyYy9vcmcvZWNsaXBzZS9wdHAvcGxkdC9zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy9oYW5kbGVycy9CdWlsZENhbGxHcmFwaEhhbmRsZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDVjNjg2MS4uMDAwMDAwMAotLS0gYS90b29scy9zYW1wbGVzL29yZy5lY2xpcHNlLnB0cC5wbGR0LnNhbXBsZUNEVHN0YXRpY0FuYWx5c2lzL3NyYy9vcmcvZWNsaXBzZS9wdHAvcGxkdC9zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy9oYW5kbGVycy9CdWlsZENhbGxHcmFwaEhhbmRsZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDExNiArMCwwIEBACi1wYWNrYWdlIG9yZy5lY2xpcHNlLnB0cC5wbGR0LnNhbXBsZUNEVHN0YXRpY0FuYWx5c2lzLmhhbmRsZXJzOwotCi1pbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5jb21tYW5kcy5BYnN0cmFjdEhhbmRsZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5jb21tYW5kcy5FeGVjdXRpb25FdmVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLmNvbW1hbmRzLkV4ZWN1dGlvbkV4Y2VwdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5JUmVzb3VyY2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2UuZGlhbG9ncy5NZXNzYWdlRGlhbG9nOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVNlbGVjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTdHJ1Y3R1cmVkU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnB0cC5wbGR0Lm1waS5hbmFseXNpcy5jZHQuZ3JhcGhzLkdyYXBoQ3JlYXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5wdHAucGxkdC5tcGkuYW5hbHlzaXMuY2R0LmdyYXBocy5JQ2FsbEdyYXBoOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLklTZWxlY3Rpb25MaXN0ZW5lcjsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5JV29ya2JlbmNoUGFydDsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5JV29ya2JlbmNoV2luZG93OwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLmhhbmRsZXJzLkhhbmRsZXJVdGlsOwotCi0vKioKLSAqIFRoaXMgaGFuZGxlciBleHRlbmRzIEFic3RyYWN0SGFuZGxlciwgYW4gSUhhbmRsZXIgYmFzZSBjbGFzcy4gVGhpcyBoYW5kbGVyCi0gKiBidWlsZHMgYSBjYWxsIGdyYXBoIGZvciB0aGUgc2VsZWN0ZWQgcmVzb3VyY2UocykgaW4gdGhlIFByb2plY3QgRXhwbG9yZXIgdmlldy4gPGJyPgotICogCi0gKiBUd28gc3RlcHMgdG8gYnVpbGRpbmcgY2FsbCBncmFwaDogPGJyPgotICogMS4gY29sbGVjdCBhbGwgZnVuY3Rpb24gZGVmaW5pdGlvbnMgaW4gdGhlIGNhbGwgZ3JhcGggPGJyPgotICogMi4gY29uc3RydWN0IHRoZSBjYWxsZXIgYW5kIGNhbGxlZSByZWxhdGlvbnNoaXAgYW1vbmcgdGhlIENhbGxHcmFwaE5vZGVzCi0gKiA8YnI+TW9zdCBvZiB0aGUgd29yayBpcyBkb25lIGJ5IEdyYXBoQ3JlYXRvcgotICogCi0gKiBAYXV0aG9yIEJldGggVGliYml0dHMgdGliYml0dHNAdXMuaWJtLmNvbQotICogCi0gKiBAc2VlIG9yZy5lY2xpcHNlLmNvcmUuY29tbWFuZHMuSUhhbmRsZXIKLSAqIEBzZWUgb3JnLmVjbGlwc2UuY29yZS5jb21tYW5kcy5BYnN0cmFjdEhhbmRsZXIKLSAqIEBzZWUgb3JnLmVjbGlwc2UucHRwLnBsZHQubXBpLmFuYWx5c2lzLmNkdC5ncmFwaHMuR3JhcGhDcmVhdG9yCi0gKi8KLXB1YmxpYyBjbGFzcyBCdWlsZENhbGxHcmFwaEhhbmRsZXIgZXh0ZW5kcyBBYnN0cmFjdEhhbmRsZXIgaW1wbGVtZW50cwotCQlJU2VsZWN0aW9uTGlzdGVuZXIgewotCXByaXZhdGUgSVN0cnVjdHVyZWRTZWxlY3Rpb24gc2VsZWN0aW9uOwotCXByb3RlY3RlZCBJQ2FsbEdyYXBoIGNhbGxHcmFwaDsKLQlwcm90ZWN0ZWQgR3JhcGhDcmVhdG9yIGdyYXBoQ3JlYXRvcjsKLQlwcm90ZWN0ZWQgSVdvcmtiZW5jaFdpbmRvdyB3aW5kb3c7Ci0KLQkvKioKLQkgKiBUaGUgY29uc3RydWN0b3IuCi0JICovCi0JcHVibGljIEJ1aWxkQ2FsbEdyYXBoSGFuZGxlcigpIHsKLQkJZ3JhcGhDcmVhdG9yID0gbmV3IEdyYXBoQ3JlYXRvcigpOwotCi0JfQotCi0JLyoqCi0JICogRXhlY3V0ZSB0aGUgY29tbWFuZDogZXh0cmFjdCBleHRyYWN0IHRoZSBuZWVkZWQgaW5mb3JtYXRpb24gZnJvbSB0aGUKLQkgKiBhcHBsaWNhdGlvbiBjb250ZXh0LiA8YnI+Ci0JICogQSBuZXcgY2FsbCBncmFwaCBpcyBjb25zdHJ1Y3RlZCBmb3IgdGhlIHNlbGVjdGVkIHJlc291cmNlcy4KLQkgKiAKLQkgKiBAcGFyYW0gZXZlbnQKLQkgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIGV4ZWN1dGlvbi4gUmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UgYnkgSUhhbmRsZXIKLQkgKiAgICAgICAgIGludGVyZmFjZSwgbXVzdCBiZSA8Y29kZT5udWxsPC9jb2RlPi4KLQkgKi8KLQlwdWJsaWMgT2JqZWN0IGV4ZWN1dGUoRXhlY3V0aW9uRXZlbnQgZXZlbnQpIHRocm93cyBFeGVjdXRpb25FeGNlcHRpb24gewotCQl3aW5kb3cgPSBIYW5kbGVyVXRpbC5nZXRBY3RpdmVXb3JrYmVuY2hXaW5kb3dDaGVja2VkKGV2ZW50KTsKLQkJU3lzdGVtLm91dC5wcmludGxuKCJCdWlsZENhbGxHcmFwaEhhbmRsZXIuZXhlY3V0ZSgpIik7Ci0JCS8vIGNyZWF0ZSBhbiBlbXB0eSBjYWxsIGdyYXBoIHRvIGJlZ2luIHdpdGgKLQkJY2FsbEdyYXBoID0gZ3JhcGhDcmVhdG9yLmluaXRDYWxsR3JhcGgoKTsKLQkJLy8gR2V0IHRoZSBjdXJyZW50IHNlbGVjdGlvbgotCQlpZiAoc2VsZWN0aW9uID09IG51bGwpIHsKLQkJCUlTZWxlY3Rpb24gc2VsID0gSGFuZGxlclV0aWwuZ2V0Q3VycmVudFNlbGVjdGlvbihldmVudCk7Ci0JCQlpZiAoc2VsIGluc3RhbmNlb2YgSVN0cnVjdHVyZWRTZWxlY3Rpb24pIHsKLQkJCQlzZWxlY3Rpb24gPSAoSVN0cnVjdHVyZWRTZWxlY3Rpb24pIHNlbDsKLQkJCX0KLQkJCWlmIChzZWxlY3Rpb24gPT0gbnVsbCkgewotCQkJCW1lc3NhZ2UoIk5vIHNlbGVjdGlvbiBkZXRlY3RlZC4gUGxlYXNlIHNlbGVjdCBhIGZpbGUsIGZvbGRlciwgb3IgcHJvamVjdCBpbiB0aGUgUHJvamVjdHMgVmlldy4iKTsKLQkJCQlzZWxlY3Rpb249bnVsbDsKLQkJCQlyZXR1cm4gbnVsbDsKLQkJCX0KLQkJfQotCi0JCS8vIFdlIGl0ZXJhdGUgaGVyZSBvbmx5IHRvIGhhbmRsZSB0aGUgcG9zc2liaWxpdHkgb2YgbXVsdGlwbGUtc2VsZWN0aW9uLgotCQkvLyBncmFwaENyZWF0b3Igd2lsbCBkZXNjZW5kIGludG8gY2hpbGQgbm9kZXMuCi0JCWZvciAoSXRlcmF0b3IgaXRlciA9IHNlbGVjdGlvbi5pdGVyYXRvcigpOyBpdGVyLmhhc05leHQoKTspIHsKLQkJCU9iamVjdCBvYmogPSAoT2JqZWN0KSBpdGVyLm5leHQoKTsKLQkJCS8vIEl0IGNhbiBiZSBhIFByb2plY3QsIEZvbGRlciwgRmlsZSwgZXRjLi4uCi0JCQlpZiAob2JqIGluc3RhbmNlb2YgSUFkYXB0YWJsZSkgewotCQkJCUlBZGFwdGFibGUgaWFkID0gKElBZGFwdGFibGUpIG9iajsKLQkJCQlmaW5hbCBJUmVzb3VyY2UgcmVzID0gKElSZXNvdXJjZSkgaWFkLmdldEFkYXB0ZXIoSVJlc291cmNlLmNsYXNzKTsKLQkJCQkvLyBOb3RlOiBwdXQgdGhpcyBpbiBhIEpvYiBvciBXb3Jrc3BhY2VNb2RpZnlPcGVyYXRpb24gaWYgcmVzb3VyY2VzCi0JCQkJLy8gd2lsbCBiZSBjaGFuZ2VkLgotCQkJCWlmIChyZXMgIT0gbnVsbCkgewotCQkJCQljYWxsR3JhcGggPSBncmFwaENyZWF0b3IuaW5pdENhbGxHcmFwaChyZXMpOwotCQkJCX0gZWxzZSB7Ci0JCQkJCW1lc3NhZ2UoIlBsZWFzZSBzZWxlY3QgYSBmaWxlLCBmb2xkZXIsIG9yIHByb2plY3QgaW4gdGhlIFByb2plY3RzIHZpZXciKTsKLQkJCQkJc2VsZWN0aW9uPW51bGw7Ci0JCQkJCXJldHVybiBudWxsOwotCQkJCX0KLQkJCX0KLQkJfQotCQlTeXN0ZW0ub3V0LnByaW50bG4oInJlc291cmNlcyBzY2FubmVkLiBOb3cgc2VhcmNoIGZvciBjYWxsZXJzL2NhbGxlZXMiKTsKLQkJZ3JhcGhDcmVhdG9yLmNvbXB1dGVDYWxsR3JhcGgoY2FsbEdyYXBoKTsKLQkJU3lzdGVtLm91dC5wcmludGxuKCJzaG93Q2FsbEdyYXBoLi4uIik7Ci0JCWdyYXBoQ3JlYXRvci5zaG93Q2FsbEdyYXBoKGNhbGxHcmFwaCk7Ci0JCVN5c3RlbS5vdXQucHJpbnRsbigic2hvd0NhbGxHcmFwaCBjb21wbGV0ZS4iKTsKLQkJcmV0dXJuIG51bGw7Ci0JfQotCi0JcHVibGljIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZChJV29ya2JlbmNoUGFydCBwYXJ0LCBJU2VsZWN0aW9uIHNlbGVjdGlvbikgewotCQlpZiAoc2VsZWN0aW9uIGluc3RhbmNlb2YgSVN0cnVjdHVyZWRTZWxlY3Rpb24pIHsKLQkJCXRoaXMuc2VsZWN0aW9uID0gKElTdHJ1Y3R1cmVkU2VsZWN0aW9uKSBzZWxlY3Rpb247Ci0JCQlTeXN0ZW0ub3V0LnByaW50bG4oIkJ1aWxkQ2FsbEdyYXBoSGFuZGxlciBnb3Qgc2VsZWN0aW9uIik7Ci0JCX0KLQotCX0KLQotCXB1YmxpYyB2b2lkIG1lc3NhZ2UoU3RyaW5nIG1zZykgewotCQlNZXNzYWdlRGlhbG9nLm9wZW5JbmZvcm1hdGlvbih3aW5kb3cuZ2V0U2hlbGwoKSwKLQkJCQkiSG91c3Rvbiwgd2UgaGF2ZSBhIHByb2JsZW0iLCBtc2cpOwotCX0KLX0K