From mariusz at info.nl Wed Sep 28 07:35:42 2016 Content-Type: multipart/mixed; boundary="===============7507392642102592474==" MIME-Version: 1.0 From: Mariusz Chruscielewski - Info.nl To: keycloak-user at lists.jboss.org Subject: [keycloak-user] Custom rest endpoint Date: Wed, 28 Sep 2016 11:35:40 +0000 Message-ID: --===============7507392642102592474== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable I can't make REST endpoint work, I'm using exactly code supplied in example= , I tried also to check how standard endpoints in keycloak code are created= , all looks similar: /** * @author ">Stian Thorgersen */ public class HelloResourceProvider implements RealmResourceProvider { private KeycloakSession session; public HelloResourceProvider(KeycloakSession session) { this.session =3D session; } @GET @Produces(MediaType.TEXT_HTML) @Path("/{action}") public String get(@PathParam("action") String action) { //String requestUri =3D session.getContext().getUri().getRequestUri= ().toString(); String title =3D "APP_REQUEST"; if (action.equals("auth")) { title =3D "AUTH_RESPONSE"; } else if (action.equals("logout")) { title =3D "LOGOUT_REQUEST"; } StringBuilder sb =3D new StringBuilder(); sb.append("" + title + ""); UriBuilder base =3D UriBuilder.fromUri("http://localhost:8180/auth"= ); sb.append("account"); sb.append(""); return sb.toString(); } @Override public Object getResource() { return this; } @Override public void close() { } } But I'm still getting: RESTEASY003815: Subresource for target class has no jax-rs annotations.: nl= .vi.keycloak.providers.rest.HelloResourceProvider Can you please help me? Thanks Kind Regards, Mariusz Chruscielewski Software Engineer | mariusz(a)info.nl +31 (0)20 530 91 13 | +48 695 555 292 info.nl making platforms work Sint Antoniesbreestraat 16 | 1011 HB Amsterdam | +31 (0)20 530 91 11 Facebook | Twitter | LinkedIn | Google+ --===============7507392642102592474== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" PGh0bWwgeG1sbnM6dj0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWwiIHhtbG5zOm89InVy bjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZSIgeG1sbnM6dz0idXJuOnNjaGVt YXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6d29yZCIgeG1sbnM6bT0iaHR0cDovL3NjaGVtYXMubWlj cm9zb2Z0LmNvbS9vZmZpY2UvMjAwNC8xMi9vbW1sIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv VFIvUkVDLWh0bWw0MCI+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNv bnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+CjxtZXRhIG5hbWU9IkdlbmVyYXRv ciIgY29udGVudD0iTWljcm9zb2Z0IFdvcmQgMTUgKGZpbHRlcmVkIG1lZGl1bSkiPgo8c3R5bGU+ PCEtLQovKiBGb250IERlZmluaXRpb25zICovCkBmb250LWZhY2UKCXtmb250LWZhbWlseToiQ2Ft YnJpYSBNYXRoIjsKCXBhbm9zZS0xOjIgNCA1IDMgNSA0IDYgMyAyIDQ7fQpAZm9udC1mYWNlCgl7 Zm9udC1mYW1pbHk6Q2FsaWJyaTsKCXBhbm9zZS0xOjIgMTUgNSAyIDIgMiA0IDMgMiA0O30KQGZv bnQtZmFjZQoJe2ZvbnQtZmFtaWx5OkNvbnNvbGFzOwoJcGFub3NlLTE6MiAxMSA2IDkgMiAyIDQg MyAyIDQ7fQpAZm9udC1mYWNlCgl7Zm9udC1mYW1pbHk6R2VvcmdpYTsKCXBhbm9zZS0xOjIgNCA1 IDIgNSA0IDUgMiAzIDM7fQovKiBTdHlsZSBEZWZpbml0aW9ucyAqLwpwLk1zb05vcm1hbCwgbGku TXNvTm9ybWFsLCBkaXYuTXNvTm9ybWFsCgl7bWFyZ2luOjBjbTsKCW1hcmdpbi1ib3R0b206LjAw MDFwdDsKCWZvbnQtc2l6ZToxMS4wcHQ7Cglmb250LWZhbWlseToiQ2FsaWJyaSIsc2Fucy1zZXJp ZjsKCW1zby1mYXJlYXN0LWxhbmd1YWdlOkVOLVVTO30KYTpsaW5rLCBzcGFuLk1zb0h5cGVybGlu awoJe21zby1zdHlsZS1wcmlvcml0eTo5OTsKCWNvbG9yOiMwNTYzQzE7Cgl0ZXh0LWRlY29yYXRp b246dW5kZXJsaW5lO30KYTp2aXNpdGVkLCBzcGFuLk1zb0h5cGVybGlua0ZvbGxvd2VkCgl7bXNv LXN0eWxlLXByaW9yaXR5Ojk5OwoJY29sb3I6Izk1NEY3MjsKCXRleHQtZGVjb3JhdGlvbjp1bmRl cmxpbmU7fQpjb2RlCgl7bXNvLXN0eWxlLXByaW9yaXR5Ojk5OwoJZm9udC1mYW1pbHk6IkNvdXJp ZXIgTmV3Ijt9CnByZQoJe21zby1zdHlsZS1wcmlvcml0eTo5OTsKCW1zby1zdHlsZS1saW5rOiJI VE1MIFByZWZvcm1hdHRlZCBDaGFyIjsKCW1hcmdpbjowY207CgltYXJnaW4tYm90dG9tOi4wMDAx cHQ7Cglmb250LXNpemU6MTAuMHB0OwoJZm9udC1mYW1pbHk6IkNvdXJpZXIgTmV3Ijt9CnNwYW4u RW1haWxTdHlsZTE3Cgl7bXNvLXN0eWxlLXR5cGU6cGVyc29uYWwtY29tcG9zZTsKCWZvbnQtZmFt aWx5OiJDYWxpYnJpIixzYW5zLXNlcmlmOwoJY29sb3I6d2luZG93dGV4dDt9CnNwYW4uSFRNTFBy ZWZvcm1hdHRlZENoYXIKCXttc28tc3R5bGUtbmFtZToiSFRNTCBQcmVmb3JtYXR0ZWQgQ2hhciI7 Cgltc28tc3R5bGUtcHJpb3JpdHk6OTk7Cgltc28tc3R5bGUtbGluazoiSFRNTCBQcmVmb3JtYXR0 ZWQiOwoJZm9udC1mYW1pbHk6IkNvdXJpZXIgTmV3IjsKCW1zby1mYXJlYXN0LWxhbmd1YWdlOk5M O30KLk1zb0NocERlZmF1bHQKCXttc28tc3R5bGUtdHlwZTpleHBvcnQtb25seTsKCWZvbnQtZmFt aWx5OiJDYWxpYnJpIixzYW5zLXNlcmlmOwoJbXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RU4tVVM7fQpA cGFnZSBXb3JkU2VjdGlvbjEKCXtzaXplOjYxMi4wcHQgNzkyLjBwdDsKCW1hcmdpbjo3MC44NXB0 IDcwLjg1cHQgNzAuODVwdCA3MC44NXB0O30KZGl2LldvcmRTZWN0aW9uMQoJe3BhZ2U6V29yZFNl Y3Rpb24xO30KLS0+PC9zdHlsZT48IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4KPG86c2hhcGVkZWZh dWx0cyB2OmV4dD0iZWRpdCIgc3BpZG1heD0iMTAyNiIgLz4KPC94bWw+PCFbZW5kaWZdLS0+PCEt LVtpZiBndGUgbXNvIDldPjx4bWw+CjxvOnNoYXBlbGF5b3V0IHY6ZXh0PSJlZGl0Ij4KPG86aWRt YXAgdjpleHQ9ImVkaXQiIGRhdGE9IjEiIC8+CjwvbzpzaGFwZWxheW91dD48L3htbD48IVtlbmRp Zl0tLT4KPC9oZWFkPgo8Ym9keSBsYW5nPSJOTCIgbGluaz0iIzA1NjNDMSIgdmxpbms9IiM5NTRG NzIiPgo8ZGl2IGNsYXNzPSJXb3JkU2VjdGlvbjEiPgo8cHJlIHN0eWxlPSJiYWNrZ3JvdW5kOiMy QjJCMkIiPjxzcGFuIGxhbmc9IkVOLVVTIj5JIGNhbiYjODIxNzt0IG1ha2UgUkVTVCBlbmRwb2lu dCB3b3JrLCBJJiM4MjE3O20gdXNpbmcgZXhhY3RseSBjb2RlIHN1cHBsaWVkIGluIGV4YW1wbGUs IEkgdHJpZWQgYWxzbyB0byBjaGVjayBob3cgc3RhbmRhcmQgZW5kcG9pbnRzIGluIGtleWNsb2Fr IGNvZGUgYXJlIGNyZWF0ZWQsIGFsbCBsb29rcyBzaW1pbGFyOjxicj48YnI+PHNwYW4gc3R5bGU9 ImNvbG9yOiNBOUI3QzYiPjxicj48L3NwYW4+PGk+PHNwYW4gc3R5bGU9ImNvbG9yOiM2Mjk3NTUi Pi8qKjxicj4gKiA8Yj5AYXV0aG9yIDwvYj48L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiM3N0I3 NjciPiZsdDthIGhyZWY9JnF1b3Q7bWFpbHRvOjxhIGhyZWY9Im1haWx0bzpzdGhvcmdlckByZWRo YXQuY29tIiB0YXJnZXQ9Il9ibGFuayI+c3Rob3JnZXJAcmVkaGF0LmNvbTwvYT4mcXVvdDsmZ3Q7 PC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjojNjI5NzU1Ij5TdGlhbiBUaG9yZ2Vyc2VuPC9zcGFu PjxzcGFuIHN0eWxlPSJjb2xvcjojNzdCNzY3Ij4mbHQ7L2EmZ3Q7PGJyPiA8L3NwYW4+PHNwYW4g c3R5bGU9ImNvbG9yOiM2Mjk3NTUiPiovPGJyPjwvc3Bhbj48L2k+PHNwYW4gc3R5bGU9ImNvbG9y OiNDQzc4MzIiPnB1YmxpYyBjbGFzcyA8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiNBOUI3QzYi PkhlbGxvUmVzb3VyY2VQcm92aWRlciA8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiNDQzc4MzIi PmltcGxlbWVudHMgPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjojQTlCN0M2Ij5SZWFsbVJlc291 cmNlUHJvdmlkZXIgezxicj48YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7IDwvc3Bhbj48c3BhbiBzdHls ZT0iY29sb3I6I0NDNzgzMiI+cHJpdmF0ZSA8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiNBOUI3 QzYiPktleWNsb2FrU2Vzc2lvbiA8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiM5ODc2QUEiPnNl c3Npb248L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiNDQzc4MzIiPjs8YnI+PGJyPiZuYnNwOyZu YnNwOyZuYnNwOyBwdWJsaWMgPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjojRkZDNjZEIj5IZWxs b1Jlc291cmNlUHJvdmlkZXI8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiNBOUI3QzYiPihLZXlj bG9ha1Nlc3Npb24gc2Vzc2lvbikgezxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsgPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjojQ0M3ODMyIj50aGlzPC9zcGFu PjxzcGFuIHN0eWxlPSJjb2xvcjojQTlCN0M2Ij4uPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjoj OTg3NkFBIj5zZXNzaW9uIDwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6I0E5QjdDNiI+PSBzZXNz aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjojQ0M3ODMyIj47PGJyPiZuYnNwOyZuYnNwOyZu YnNwOyA8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiNBOUI3QzYiPn08YnI+PGJyPiZuYnNwOyZu YnNwOyZuYnNwOyA8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiNCQkI1MjkiPkBHRVQ8YnI+Jm5i c3A7Jm5ic3A7Jm5ic3A7IEBQcm9kdWNlczwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6I0E5QjdD NiI+KE1lZGlhVHlwZS48L3NwYW4+PGk+PHNwYW4gc3R5bGU9ImNvbG9yOiM5ODc2QUEiPlRFWFRf SFRNTDwvc3Bhbj48L2k+PHNwYW4gc3R5bGU9ImNvbG9yOiNBOUI3QzYiPik8YnI+Jm5ic3A7Jm5i c3A7Jm5ic3A7IDwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6I0JCQjUyOSI+QFBhdGg8L3NwYW4+ PHNwYW4gc3R5bGU9ImNvbG9yOiNBOUI3QzYiPig8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiM2 QTg3NTkiPiZxdW90Oy97YWN0aW9ufSZxdW90Ozwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6I0E5 QjdDNiI+KTxicj4mbmJzcDsmbmJzcDsmbmJzcDsgPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjoj Q0M3ODMyIj5wdWJsaWMgPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjojQTlCN0M2Ij5TdHJpbmcg PC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjojRkZDNjZEIj5nZXQ8L3NwYW4+PHNwYW4gc3R5bGU9 ImNvbG9yOiNBOUI3QzYiPig8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiNCQkI1MjkiPkBQYXRo UGFyYW08L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiNBOUI3QzYiPig8L3NwYW4+PHNwYW4gc3R5 bGU9ImNvbG9yOiM2QTg3NTkiPiZxdW90O2FjdGlvbiZxdW90Ozwvc3Bhbj48c3BhbiBzdHlsZT0i Y29sb3I6I0E5QjdDNiI+KSBTdHJpbmcgYWN0aW9uKSB7PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyA8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOmdyYXkiPi8v U3RyaW5nIHJlcXVlc3RVcmkgPSBzZXNzaW9uLmdldENvbnRleHQoKS5nZXRVcmkoKS5nZXRSZXF1 ZXN0VXJpKCkudG9TdHJpbmcoKTs8YnI+PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyA8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiNBOUI3QzYiPlN0cmluZyB0 aXRsZSA9IDwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6IzZBODc1OSI+JnF1b3Q7QVBQX1JFUVVF U1QmcXVvdDs8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiNDQzc4MzIiPjs8YnI+Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGlmIDwvc3Bhbj48c3BhbiBzdHlsZT0i Y29sb3I6I0E5QjdDNiI+KGFjdGlvbi5lcXVhbHMoPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjoj NkE4NzU5Ij4mcXVvdDthdXRoJnF1b3Q7PC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjojQTlCN0M2 Ij4pKSB7PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyB0aXRsZSA9IDwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6IzZB ODc1OSI+JnF1b3Q7QVVUSF9SRVNQT05TRSZxdW90Ozwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6 I0NDNzgzMiI+Ozxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsg PC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjojQTlCN0M2Ij59IDwvc3Bhbj48c3BhbiBzdHlsZT0i Y29sb3I6I0NDNzgzMiI+ZWxzZSBpZiA8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiNBOUI3QzYi PihhY3Rpb24uZXF1YWxzKDwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6IzZBODc1OSI+JnF1b3Q7 bG9nb3V0JnF1b3Q7PC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjojQTlCN0M2Ij4pKSB7PGJyPiZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyB0aXRsZSA9IDwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6IzZBODc1OSI+JnF1b3Q7 TE9HT1VUX1JFUVVFU1QmcXVvdDs8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiNDQzc4MzIiPjs8 YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IDwvc3Bhbj48c3Bh biBzdHlsZT0iY29sb3I6I0E5QjdDNiI+fTxicj48YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7IFN0cmluZ0J1aWxkZXIgc2IgPSA8L3NwYW4+PHNwYW4gc3R5bGU9 ImNvbG9yOiNDQzc4MzIiPm5ldyA8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiNBOUI3QzYiPlN0 cmluZ0J1aWxkZXIoKTwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6I0NDNzgzMiI+Ozxicj4mbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgPC9zcGFuPjxzcGFuIHN0eWxl PSJjb2xvcjojQTlCN0M2Ij5zYi5hcHBlbmQoPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjojNkE4 NzU5Ij4mcXVvdDsmbHQ7aHRtbCZndDsmbHQ7aGVhZCZndDsmbHQ7dGl0bGUmZ3Q7JnF1b3Q7IDwv c3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6I0E5QjdDNiI+JiM0MzsgdGl0bGUgJiM0MzsgPC9zcGFu PjxzcGFuIHN0eWxlPSJjb2xvcjojNkE4NzU5Ij4mcXVvdDsmbHQ7L3RpdGxlJmd0OyZsdDsvaGVh ZCZndDsmbHQ7Ym9keSZndDsmcXVvdDs8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiNBOUI3QzYi Pik8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiNDQzc4MzIiPjs8YnI+Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IDwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6I0E5 QjdDNiI+VXJpQnVpbGRlciBiYXNlID0gVXJpQnVpbGRlci48aT5mcm9tVXJpPC9pPig8L3NwYW4+ PHNwYW4gc3R5bGU9ImNvbG9yOiM2QTg3NTkiPiZxdW90OzxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhv c3Q6ODE4MC9hdXRoIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL2xvY2FsaG9zdDo4MTgwL2F1dGg8 L2E+JnF1b3Q7PC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjojQTlCN0M2Ij4pPC9zcGFuPjxzcGFu IHN0eWxlPSJjb2xvcjojQ0M3ODMyIj47PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyA8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiNBOUI3QzYiPnNiLmFwcGVu ZCg8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiM2QTg3NTkiPiZxdW90OyZsdDthIGhyZWY9PC9z cGFuPjxzcGFuIHN0eWxlPSJjb2xvcjojQ0M3ODMyIj5cJnF1b3Q7PC9zcGFuPjxzcGFuIHN0eWxl PSJjb2xvcjojNkE4NzU5Ij4mcXVvdDsgPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjojQTlCN0M2 Ij4mIzQzOyBSZWFsbXNSZXNvdXJjZS48aT5hY2NvdW50VXJsPC9pPihiYXNlKS5idWlsZCg8L3Nw YW4+PHNwYW4gc3R5bGU9ImNvbG9yOiM2QTg3NTkiPiZxdW90O3Rlc3QmcXVvdDs8L3NwYW4+PHNw YW4gc3R5bGU9ImNvbG9yOiNBOUI3QzYiPikudG9TdHJpbmcoKSAmIzQzOyA8L3NwYW4+PHNwYW4g c3R5bGU9ImNvbG9yOiM2QTg3NTkiPiZxdW90Ozwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6I0ND NzgzMiI+XCZxdW90Ozwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6IzZBODc1OSI+IGlkPTwvc3Bh bj48c3BhbiBzdHlsZT0iY29sb3I6I0NDNzgzMiI+XCZxdW90Ozwvc3Bhbj48c3BhbiBzdHlsZT0i Y29sb3I6IzZBODc1OSI+YWNjb3VudDwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6I0NDNzgzMiI+ XCZxdW90Ozwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6IzZBODc1OSI+Jmd0O2FjY291bnQmbHQ7 L2EmZ3Q7JnF1b3Q7PC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjojQTlCN0M2Ij4pPC9zcGFuPjxz cGFuIHN0eWxlPSJjb2xvcjojQ0M3ODMyIj47PGJyPjxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsgPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjojQTlCN0M2Ij5z Yi5hcHBlbmQoPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjojNkE4NzU5Ij4mcXVvdDsmbHQ7L2Jv ZHkmZ3Q7Jmx0Oy9odG1sJmd0OyZxdW90Ozwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6I0E5QjdD NiI+KTwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6I0NDNzgzMiI+Ozxicj4mbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgcmV0dXJuIDwvc3Bhbj48c3BhbiBzdHlsZT0i Y29sb3I6I0E5QjdDNiI+c2IudG9TdHJpbmcoKTwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6I0ND NzgzMiI+Ozxicj4mbmJzcDsmbmJzcDsmbmJzcDsgPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjoj QTlCN0M2Ij59PGJyPjxicj4mbmJzcDsmbmJzcDsmbmJzcDsgPC9zcGFuPjxzcGFuIHN0eWxlPSJj b2xvcjojQkJCNTI5Ij5AT3ZlcnJpZGU8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7IDwvc3Bhbj48c3Bh biBzdHlsZT0iY29sb3I6I0NDNzgzMiI+cHVibGljIDwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6 I0E5QjdDNiI+T2JqZWN0IDwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6I0ZGQzY2RCI+Z2V0UmVz b3VyY2U8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiNBOUI3QzYiPigpIHs8YnI+Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IDwvc3Bhbj48c3BhbiBzdHlsZT0iY29s b3I6I0NDNzgzMiI+cmV0dXJuIHRoaXM7PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyA8L3NwYW4+PHNw YW4gc3R5bGU9ImNvbG9yOiNBOUI3QzYiPn08YnI+PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyA8L3Nw YW4+PHNwYW4gc3R5bGU9ImNvbG9yOiNCQkI1MjkiPkBPdmVycmlkZTxicj4mbmJzcDsmbmJzcDsm bmJzcDsgPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjojQ0M3ODMyIj5wdWJsaWMgdm9pZCA8L3Nw YW4+PHNwYW4gc3R5bGU9ImNvbG9yOiNGRkM2NkQiPmNsb3NlPC9zcGFuPjxzcGFuIHN0eWxlPSJj b2xvcjojQTlCN0M2Ij4oKSB7PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyB9PGJyPjxicj59PC9zcGFu PjxvOnA+PC9vOnA+PC9zcGFuPjwvcHJlPgo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibXNv LW1hcmdpbi10b3AtYWx0OmF1dG87bXNvLW1hcmdpbi1ib3R0b20tYWx0OmF1dG8iPjxzcGFuIGxh bmc9IkVOLVVTIj4mbmJzcDs8bzpwPjwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPSJNc29Ob3Jt YWwiIHN0eWxlPSJtc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzttc28tbWFyZ2luLWJvdHRvbS1hbHQ6 YXV0byI+PHNwYW4gbGFuZz0iRU4tVVMiPiZuYnNwOzxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KPHBy ZSBzdHlsZT0ibWFyZ2luOjYuMHB0Ij48c3BhbiBsYW5nPSJFTi1VUyI+QnV0IEkmIzgyMTc7bSBz dGlsbCBnZXR0aW5nOjxvOnA+PC9vOnA+PC9zcGFuPjwvcHJlPgo8cHJlIHN0eWxlPSJtc28tbWFy Z2luLXRvcC1hbHQ6MGNtO21hcmdpbi1yaWdodDo2LjBwdDttYXJnaW4tYm90dG9tOjYuMHB0O21h cmdpbi1sZWZ0OjBjbSI+PHNwYW4gbGFuZz0iRU4tVVMiPiZuYnNwOzxvOnA+PC9vOnA+PC9zcGFu PjwvcHJlPgo8cHJlIHN0eWxlPSJtYXJnaW46Ni4wcHQiPjxjb2RlPjxzcGFuIGxhbmc9IkVOLVVT IiBzdHlsZT0iZm9udC1mYW1pbHk6Q29uc29sYXM7Y29sb3I6YmxhY2siPlJFU1RFQVNZMDAzODE1 OiBTdWJyZXNvdXJjZSBmb3IgdGFyZ2V0IGNsYXNzIGhhcyBubyBqYXgtcnMgYW5ub3RhdGlvbnMu OiBubC52aS5rZXljbG9hay5wcm92aWRlcnMucmVzdC5IZWxsb1Jlc291cmNlUHJvdmlkZXI8L3Nw YW4+PC9jb2RlPjxzcGFuIGxhbmc9IkVOLVVTIj48bzpwPjwvbzpwPjwvc3Bhbj48L3ByZT4KPHBy ZSBzdHlsZT0ibWFyZ2luOjYuMHB0Ij48Y29kZT48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZv bnQtZmFtaWx5OkNvbnNvbGFzO2NvbG9yOmJsYWNrIj4mbmJzcDs8L3NwYW4+PC9jb2RlPjxzcGFu IGxhbmc9IkVOLVVTIj48bzpwPjwvbzpwPjwvc3Bhbj48L3ByZT4KPHByZSBzdHlsZT0ibWFyZ2lu OjYuMHB0Ij48Y29kZT48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtZmFtaWx5OkNvbnNv bGFzO2NvbG9yOmJsYWNrIj5DYW4geW91IHBsZWFzZSBoZWxwIG1lPyBUaGFua3M8L3NwYW4+PC9j b2RlPjxvOnA+PC9vOnA+PC9wcmU+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxvOnA+Jm5ic3A7PC9v OnA+PC9wPgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4KPHRhYmxl IGNsYXNzPSJNc29Ob3JtYWxUYWJsZSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9 IjQ2MSIgc3R5bGU9IndpZHRoOjM0NS42NXB0O21hcmdpbi1sZWZ0Oi0zLjBwdCI+Cjx0Ym9keT4K PHRyIHN0eWxlPSJoZWlnaHQ6MTEuMTVwdCI+Cjx0ZCBzdHlsZT0icGFkZGluZzowY20gMGNtIDBj bSAwY207aGVpZ2h0OjExLjE1cHQiPgo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibGluZS1o ZWlnaHQ6MTIuMHB0Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTom cXVvdDtHZW9yZ2lhJnF1b3Q7LHNlcmlmO2NvbG9yOmJsYWNrO21zby1mYXJlYXN0LWxhbmd1YWdl Ok5MIj5LaW5kIFJlZ2FyZHMsPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2Zv bnQtZmFtaWx5OiZxdW90O0dlb3JnaWEmcXVvdDssc2VyaWY7Y29sb3I6YmxhY2siPjxvOnA+PC9v OnA+PC9zcGFuPjwvcD4KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImxpbmUtaGVpZ2h0OjEy LjBwdCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7R2Vv cmdpYSZxdW90OyxzZXJpZjtjb2xvcjpibGFjazttc28tZmFyZWFzdC1sYW5ndWFnZTpOTCI+PG86 cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPgo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibGlu ZS1oZWlnaHQ6MTIuMHB0Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWls eTomcXVvdDtHZW9yZ2lhJnF1b3Q7LHNlcmlmO2NvbG9yOmJsYWNrO21zby1mYXJlYXN0LWxhbmd1 YWdlOk5MIj5NYXJpdXN6IENocnVzY2llbGV3c2tpPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNp emU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0dlb3JnaWEmcXVvdDssc2VyaWY7Y29sb3I6Ymxh Y2siPjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KPC90ZD4KPC90cj4KPHRyIHN0eWxlPSJoZWlnaHQ6 MTEuMTVwdCI+Cjx0ZCBzdHlsZT0icGFkZGluZzowY20gMGNtIDE1LjBwdCAwY207aGVpZ2h0OjEx LjE1cHQiPgo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibGluZS1oZWlnaHQ6MTIuMHB0Ij48 c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1 b3Q7R2VvcmdpYSZxdW90OyxzZXJpZjtjb2xvcjpibGFjazttc28tZmFyZWFzdC1sYW5ndWFnZTpO TCI+U29mdHdhcmUgRW5naW5lZXIgJm5ic3A7fCZuYnNwOyZuYnNwOzxhIGhyZWY9Im1haWx0bzpt YXJpdXN6QGluZm8ubmwiPjxzcGFuIHN0eWxlPSJjb2xvcjpibHVlIj5tYXJpdXN6QGluZm8ubmw8 L3NwYW4+PC9hPiZuYnNwOzxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KPHAgY2xhc3M9Ik1zb05vcm1h bCIgc3R5bGU9ImxpbmUtaGVpZ2h0OjEyLjBwdCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJm b250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0dlb3JnaWEmcXVvdDssc2VyaWY7Y29s b3I6YmxhY2s7bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6TkwiPiYjNDM7MzEgKDApMjAgNTMwIDkxIDEz IHwgJiM0Mzs0OCA2OTUgNTU1IDI5Mgo8L3NwYW4+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJm b250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0dlb3JnaWEmcXVvdDssc2VyaWY7Y29s b3I6YmxhY2siPjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KPC90ZD4KPC90cj4KPHRyIHN0eWxlPSJo ZWlnaHQ6MTUuM3B0Ij4KPHRkIHN0eWxlPSJwYWRkaW5nOjBjbSAwY20gMy4wcHQgMGNtO2hlaWdo dDoxNS4zcHQiPgo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibGluZS1oZWlnaHQ6MTYuMHB0 Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtHZW9yZ2lh JnF1b3Q7LHNlcmlmO2NvbG9yOmJsYWNrO21zby1mYXJlYXN0LWxhbmd1YWdlOk5MIj48YSBocmVm PSJodHRwOi8vd3d3LmluZm8ubmwvIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6 ZToxNC4wcHQ7Y29sb3I6d2hpdGU7YmFja2dyb3VuZDpibGFjayI+aW5mby5ubDwvc3Bhbj48c3Bh biBsYW5nPSJFTi1VUyIgc3R5bGU9ImNvbG9yOmJsdWUiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw Ozwvc3Bhbj48L2E+PGEgaHJlZj0iaHR0cDovL3d3dy5pbmZvLm5sL25sP3V0bV9zb3VyY2U9ZS1t YWlsX3NpZyZhbXA7dXRtX21lZGl1bT1lLW1haWwmYW1wO3V0bV90ZXJtPWNvbm5lY3RpbmdfdGhl X2RvdHMmYW1wO3V0bV9jYW1wYWlnbj1pbmZvX3NpZyI+PGk+PHNwYW4gbGFuZz0iRU4tVVMiIHN0 eWxlPSJjb2xvcjpibGFjayI+bWFraW5nCiBwbGF0Zm9ybXMgd29yazwvc3Bhbj48L2k+PC9hPjwv c3Bhbj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1p bHk6JnF1b3Q7R2VvcmdpYSZxdW90OyxzZXJpZjtjb2xvcjpibGFjayI+PG86cD48L286cD48L3Nw YW4+PC9wPgo8L3RkPgo8L3RyPgo8dHIgc3R5bGU9ImhlaWdodDoxMS4xNXB0Ij4KPHRkIHN0eWxl PSJwYWRkaW5nOjBjbSAwY20gMTUuMHB0IDBjbTtoZWlnaHQ6MTEuMTVwdCI+CjxwIGNsYXNzPSJN c29Ob3JtYWwiIHN0eWxlPSJsaW5lLWhlaWdodDoxMi4wcHQiPjxzcGFuIHN0eWxlPSJmb250LXNp emU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0dlb3JnaWEmcXVvdDssc2VyaWY7Y29sb3I6Ymxh Y2s7bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6TkwiPlNpbnQgQW50b25pZXNicmVlc3RyYWF0IDE2ICZu YnNwO3wgJm5ic3A7MTAxMSBIQiBBbXN0ZXJkYW0gJm5ic3A7fCAmbmJzcDsmIzQzOzMxICgwKTIw IDUzMCA5MSAxMTwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWls eTomcXVvdDtHZW9yZ2lhJnF1b3Q7LHNlcmlmO2NvbG9yOmJsYWNrO21zby1mYXJlYXN0LWxhbmd1 YWdlOk5MIj48bzpwPjwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxl PSJsaW5lLWhlaWdodDoxMi4wcHQiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQt ZmFtaWx5OiZxdW90O0dlb3JnaWEmcXVvdDssc2VyaWY7bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6Tkwi PjxhIGhyZWY9Imh0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS9pbmZvbmwiPjxzcGFuIHN0eWxlPSJj b2xvcjpibHVlIj5GYWNlYm9vazwvc3Bhbj48L2E+IHwKPGEgaHJlZj0iaHR0cHM6Ly90d2l0dGVy LmNvbS9pbmZvbmwiPjxzcGFuIHN0eWxlPSJjb2xvcjpibHVlIj5Ud2l0dGVyPC9zcGFuPjwvYT4g fAo8YSBocmVmPSJodHRwczovL3d3dy5saW5rZWRpbi5jb20vY29tcGFueS9pbmZvLW5sIj48c3Bh biBzdHlsZT0iY29sb3I6Ymx1ZSI+TGlua2VkSW48L3NwYW4+PC9hPiB8CjxhIGhyZWY9Imh0dHBz Oi8vcGx1cy5nb29nbGUuY29tLyYjNDM7aW5mb25sLyI+PHNwYW4gc3R5bGU9ImNvbG9yOmJsdWUi Pkdvb2dsZSYjNDM7PC9zcGFuPjwvYT48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4w cHQ7Zm9udC1mYW1pbHk6JnF1b3Q7R2VvcmdpYSZxdW90OyxzZXJpZiI+PG86cD48L286cD48L3Nw YW4+PC9wPgo8L3RkPgo8L3RyPgo8L3Rib2R5Pgo8L3RhYmxlPgo8cCBjbGFzcz0iTXNvTm9ybWFs Ij48c3BhbiBzdHlsZT0ibXNvLWZhcmVhc3QtbGFuZ3VhZ2U6TkwiPjxvOnA+Jm5ic3A7PC9vOnA+ PC9zcGFuPjwvcD4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PG86cD4mbmJzcDs8L286cD48L3A+Cjwv ZGl2Pgo8L2JvZHk+CjwvaHRtbD4K --===============7507392642102592474==--