PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMC8vRU4iPg0KPCEtLU5ld1BhZ2UtLT4NCjxIVE1MPg0KPEhFQUQ+DQo8IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIG9uIFRodSBOb3YgMjIgMTc6MTI6NTggRVNUIDIwMDcgLS0+DQo8VElUTEU+DQpYYWxhbi1KYXZhIDIuNy4xOiBDbGFzcyAgRXhwcmVzc2lvbg0KPC9USVRMRT4NCjxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4NCjwvSEVBRD4NCjxCT0RZIEJHQ09MT1I9IndoaXRlIj4NCg0KPCEtLSA9PT09PT09PT09IFNUQVJUIE9GIE5BVkJBUiA9PT09PT09PT09IC0tPg0KPEEgTkFNRT0ibmF2YmFyX3RvcCI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiPg0KPFRSPg0KPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPg0KPEEgTkFNRT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyI+DQogIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL0V4cHJlc3Npb24uaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uL2luZGV4LWFsbC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDwvVFI+DQo8L1RBQkxFPg0KPC9URD4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPg0KPC9FTT4NCjwvVEQ+DQo8L1RSPg0KDQo8VFI+DQo8VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPg0KJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9DYWNoZWRYUGF0aEFQSS5odG1sIj48Qj5QUkVWIENMQVNTPC9CPjwvQT4mbmJzcDsNCiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvTm9kZVNldC5odG1sIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4NCjxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+DQogIDxBIEhSRUY9Ii4uLy4uLy4uL2luZGV4Lmh0bWwiIFRBUkdFVD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOw0KJm5ic3A7PEEgSFJFRj0iRXhwcmVzc2lvbi5odG1sIiBUQVJHRVQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+PC9GT05UPjwvVEQ+DQo8L1RSPg0KPFRSPg0KPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4NCiAgU1VNTUFSWTogJm5ic3A7SU5ORVImbmJzcDt8Jm5ic3A7RklFTEQmbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2NvbnN0cnVjdG9yX3N1bW1hcnkiPkNPTlNUUjwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+DQo8VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPg0KREVUQUlMOiAmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjY29uc3RydWN0b3JfZGV0YWlsIj5DT05TVFI8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+DQo8L1RSPg0KPC9UQUJMRT4NCjwhLS0gPT09PT09PT09PT0gRU5EIE9GIE5BVkJBUiA9PT09PT09PT09PSAtLT4NCg0KPEhSPg0KPCEtLSA9PT09PT09PSBTVEFSVCBPRiBDTEFTUyBEQVRBID09PT09PT09IC0tPg0KPEgyPg0KPEZPTlQgU0laRT0iLTEiPg0Kb3JnLmFwYWNoZS54cGF0aDwvRk9OVD4NCjxCUj4NCkNsYXNzICBFeHByZXNzaW9uPC9IMj4NCjxQUkU+DQpqYXZhLmxhbmcuT2JqZWN0DQogIHwNCiAgKy0tPEI+b3JnLmFwYWNoZS54cGF0aC5FeHByZXNzaW9uPC9CPg0KPC9QUkU+DQo8REw+DQo8RFQ+PEI+RGlyZWN0IEtub3duIFN1YmNsYXNzZXM6PC9CPiA8REQ+PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9mdW5jdGlvbnMvRnVuY3Rpb24uaHRtbCI+RnVuY3Rpb248L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL3BhdHRlcm5zL05vZGVUZXN0Lmh0bWwiPk5vZGVUZXN0PC9BPiwgPEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vcGVyYXRpb25zL09wZXJhdGlvbi5odG1sIj5PcGVyYXRpb248L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29wZXJhdGlvbnMvVW5hcnlPcGVyYXRpb24uaHRtbCI+VW5hcnlPcGVyYXRpb248L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL3BhdHRlcm5zL1VuaW9uUGF0dGVybi5odG1sIj5VbmlvblBhdHRlcm48L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29wZXJhdGlvbnMvVmFyaWFibGUuaHRtbCI+VmFyaWFibGU8L0E+LCA8QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWE9iamVjdC5odG1sIj5YT2JqZWN0PC9BPjwvREQ+DQo8L0RMPg0KPEhSPg0KPERMPg0KPERUPnB1YmxpYyBhYnN0cmFjdCBjbGFzcyA8Qj5FeHByZXNzaW9uPC9CPjxEVD5leHRlbmRzIGphdmEubGFuZy5PYmplY3Q8RFQ+aW1wbGVtZW50cyBqYXZhLmlvLlNlcmlhbGl6YWJsZSwgPEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uTm9kZS5odG1sIj5FeHByZXNzaW9uTm9kZTwvQT4sIDxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvWFBhdGhWaXNpdGFibGUuaHRtbCI+WFBhdGhWaXNpdGFibGU8L0E+PC9ETD4NCg0KPFA+DQpUaGlzIGFic3RyYWN0IGNsYXNzIHNlcnZlcyBhcyB0aGUgYmFzZSBmb3IgYWxsIGV4cHJlc3Npb24gb2JqZWN0cy4gIEFuCiBFeHByZXNzaW9uIGNhbiBiZSBleGVjdXRlZCB0byByZXR1cm4gYSA8QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWE9iamVjdC5odG1sIj48Q09ERT5YT2JqZWN0PC9DT0RFPjwvQT4sCiBub3JtYWxseSBoYXMgYSBsb2NhdGlvbiB3aXRoaW4gYSBkb2N1bWVudCBvciBET00sIGNhbiBzZW5kIGVycm9yIGFuZCB3YXJuaW5nCiBldmVudHMsIGFuZCBub3JtYWxseSBkbyBub3QgaG9sZCBzdGF0ZSBhbmQgYXJlIG1lYW50IHRvIGJlIGltbXV0YWJsZSBvbmNlCiBjb25zdHJ1Y3Rpb24gaGFzIGNvbXBsZXRlZC4gIEFuIGV4Y2VwdGlvbiB0byB0aGUgaW1tdXRpYmlsaXR5IHJ1bGUgaXMgaXRlcmF0b3JzCiBhbmQgd2Fsa2Vycywgd2hpY2ggbXVzdCBiZSBjbG9uZWQgaW4gb3JkZXIgdG8gYmUgdXNlZCAtLSB0aGUgb3JpZ2luYWwgbXVzdAogc3RpbGwgYmUgaW1tdXRhYmxlLg0KPFA+DQo8REw+DQo8RFQ+PEI+U2VlIEFsc286IDwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vc2VyaWFsaXplZC1mb3JtLmh0bWwjb3JnLmFwYWNoZS54cGF0aC5FeHByZXNzaW9uIj5TZXJpYWxpemVkIEZvcm08L0E+PC9ETD4NCjxIUj4NCg0KPFA+DQo8IS0tID09PT09PT09IElOTkVSIENMQVNTIFNVTU1BUlkgPT09PT09PT0gLS0+DQoNCg0KPCEtLSA9PT09PT09PT09PSBGSUVMRCBTVU1NQVJZID09PT09PT09PT09IC0tPg0KDQoNCjwhLS0gPT09PT09PT0gQ09OU1RSVUNUT1IgU1VNTUFSWSA9PT09PT09PSAtLT4NCg0KPEEgTkFNRT0iY29uc3RydWN0b3Jfc3VtbWFyeSI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjEiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgV0lEVEg9IjEwMCUiPg0KPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+DQo8VEQgQ09MU1BBTj0yPjxGT05UIFNJWkU9IisyIj4NCjxCPkNvbnN0cnVjdG9yIFN1bW1hcnk8L0I+PC9GT05UPjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uLmh0bWwjRXhwcmVzc2lvbigpIj5FeHByZXNzaW9uPC9BPjwvQj4oKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9URD4NCjwvVFI+DQo8L1RBQkxFPg0KJm5ic3A7DQo8IS0tID09PT09PT09PT0gTUVUSE9EIFNVTU1BUlkgPT09PT09PT09PT0gLS0+DQoNCjxBIE5BTUU9Im1ldGhvZF9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBXSURUSD0iMTAwJSI+DQo8VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4NCjxURCBDT0xTUEFOPTI+PEZPTlQgU0laRT0iKzIiPg0KPEI+TWV0aG9kIFN1bW1hcnk8L0I+PC9GT05UPjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3htbC9kdG0vRFRNSXRlcmF0b3IuaHRtbCI+RFRNSXRlcmF0b3I8L0E+PC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvRXhwcmVzc2lvbi5odG1sI2FzSXRlcmF0b3Iob3JnLmFwYWNoZS54cGF0aC5YUGF0aENvbnRleHQsIGludCkiPmFzSXRlcmF0b3I8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL1hQYXRoQ29udGV4dC5odG1sIj5YUGF0aENvbnRleHQ8L0E+Jm5ic3A7eGN0eHQsCiAgICAgICAgICAgaW50Jm5ic3A7Y29udGV4dE5vZGUpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtHaXZlbiBhbiBzZWxlY3QgZXhwcmVzc2lvbiBhbmQgYSBjb250ZXh0LCBldmFsdWF0ZSB0aGUgWFBhdGgKIGFuZCByZXR1cm4gdGhlIHJlc3VsdGluZyBpdGVyYXRvci48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94bWwvZHRtL0RUTUl0ZXJhdG9yLmh0bWwiPkRUTUl0ZXJhdG9yPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb24uaHRtbCNhc0l0ZXJhdG9yUmF3KG9yZy5hcGFjaGUueHBhdGguWFBhdGhDb250ZXh0LCBpbnQpIj5hc0l0ZXJhdG9yUmF3PC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9YUGF0aENvbnRleHQuaHRtbCI+WFBhdGhDb250ZXh0PC9BPiZuYnNwO3hjdHh0LAogICAgICAgICAgICAgIGludCZuYnNwO2NvbnRleHROb2RlKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7R2l2ZW4gYW4gc2VsZWN0IGV4cHJlc3Npb24gYW5kIGEgY29udGV4dCwgZXZhbHVhdGUgdGhlIFhQYXRoCiBhbmQgcmV0dXJuIHRoZSByZXN1bHRpbmcgaXRlcmF0b3IsIGJ1dCBkbyBub3QgY2xvbmUuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb24uaHRtbCNhc05vZGUob3JnLmFwYWNoZS54cGF0aC5YUGF0aENvbnRleHQpIj5hc05vZGU8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL1hQYXRoQ29udGV4dC5odG1sIj5YUGF0aENvbnRleHQ8L0E+Jm5ic3A7eGN0eHQpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm4gdGhlIGZpcnN0IG5vZGUgb3V0IG9mIHRoZSBub2Rlc2V0LCBpZiB0aGlzIGV4cHJlc3Npb24gaXMKIGEgbm9kZXNldCBleHByZXNzaW9uLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvRXhwcmVzc2lvbi5odG1sI2Fzc2VydGlvbihib29sZWFuLCBqYXZhLmxhbmcuU3RyaW5nKSI+YXNzZXJ0aW9uPC9BPjwvQj4oYm9vbGVhbiZuYnNwO2IsCiAgICAgICAgICBqYXZhLmxhbmcuU3RyaW5nJm5ic3A7bXNnKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGVsbCB0aGUgdXNlciBvZiBhbiBhc3NlcnRpb24gZXJyb3IsIGFuZCBwcm9iYWJseSB0aHJvdyBhbgogZXhjZXB0aW9uLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDtib29sZWFuPC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvRXhwcmVzc2lvbi5odG1sI2Jvb2wob3JnLmFwYWNoZS54cGF0aC5YUGF0aENvbnRleHQpIj5ib29sPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9YUGF0aENvbnRleHQuaHRtbCI+WFBhdGhDb250ZXh0PC9BPiZuYnNwO3hjdHh0KTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7RXZhbHVhdGUgZXhwcmVzc2lvbiB0byBhIGJvb2xlYW4uPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO2Jvb2xlYW48L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uLmh0bWwjY2FuVHJhdmVyc2VPdXRzaWRlU3VidHJlZSgpIj5jYW5UcmF2ZXJzZU91dHNpZGVTdWJ0cmVlPC9BPjwvQj4oKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGVsbCBpZiB0aGlzIGV4cHJlc3Npb24gb3IgaXQncyBzdWJleHByZXNzaW9ucyBjYW4gdHJhdmVyc2Ugb3V0c2lkZQogdGhlIGN1cnJlbnQgc3VidHJlZS48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+YWJzdHJhY3QgJm5ic3A7Ym9vbGVhbjwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb24uaHRtbCNkZWVwRXF1YWxzKG9yZy5hcGFjaGUueHBhdGguRXhwcmVzc2lvbikiPmRlZXBFcXVhbHM8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb24uaHRtbCI+RXhwcmVzc2lvbjwvQT4mbmJzcDtleHByKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Q29tcGFyZSB0aGlzIG9iamVjdCB3aXRoIGFub3RoZXIgb2JqZWN0IGFuZCBzZWUgCiBpZiB0aGV5IGFyZSBlcXVhbCwgaW5jbHVkZSB0aGUgc3ViIGhlYXJhcmNoeS48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb24uaHRtbCNlcnJvcihvcmcuYXBhY2hlLnhwYXRoLlhQYXRoQ29udGV4dCwgamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLk9iamVjdFtdKSI+ZXJyb3I8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL1hQYXRoQ29udGV4dC5odG1sIj5YUGF0aENvbnRleHQ8L0E+Jm5ic3A7eGN0eHQsCiAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDttc2csCiAgICAgIGphdmEubGFuZy5PYmplY3RbXSZuYnNwO2FyZ3MpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUZWxsIHRoZSB1c2VyIG9mIGFuIGVycm9yLCBhbmQgcHJvYmFibHkgdGhyb3cgYW4KIGV4Y2VwdGlvbi48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+YWJzdHJhY3QgJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hPYmplY3QuaHRtbCI+WE9iamVjdDwvQT48L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uLmh0bWwjZXhlY3V0ZShvcmcuYXBhY2hlLnhwYXRoLlhQYXRoQ29udGV4dCkiPmV4ZWN1dGU8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL1hQYXRoQ29udGV4dC5odG1sIj5YUGF0aENvbnRleHQ8L0E+Jm5ic3A7eGN0eHQpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtFeGVjdXRlIGFuIGV4cHJlc3Npb24gaW4gdGhlIFhQYXRoIHJ1bnRpbWUgY29udGV4dCwgYW5kIHJldHVybiB0aGUKIHJlc3VsdCBvZiB0aGUgZXhwcmVzc2lvbi48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hPYmplY3QuaHRtbCI+WE9iamVjdDwvQT48L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uLmh0bWwjZXhlY3V0ZShvcmcuYXBhY2hlLnhwYXRoLlhQYXRoQ29udGV4dCwgYm9vbGVhbikiPmV4ZWN1dGU8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL1hQYXRoQ29udGV4dC5odG1sIj5YUGF0aENvbnRleHQ8L0E+Jm5ic3A7eGN0eHQsCiAgICAgICAgYm9vbGVhbiZuYnNwO2Rlc3RydWN0aXZlT0spPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtFeGVjdXRlIGFuIGV4cHJlc3Npb24gaW4gdGhlIFhQYXRoIHJ1bnRpbWUgY29udGV4dCwgYW5kIHJldHVybiB0aGUKIHJlc3VsdCBvZiB0aGUgZXhwcmVzc2lvbiwgYnV0IHRlbGwgdGhhdCBhICJzYWZlIiBvYmplY3QgZG9lc24ndCBoYXZlIAogdG8gYmUgcmV0dXJuZWQuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvb2JqZWN0cy9YT2JqZWN0Lmh0bWwiPlhPYmplY3Q8L0E+PC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvRXhwcmVzc2lvbi5odG1sI2V4ZWN1dGUob3JnLmFwYWNoZS54cGF0aC5YUGF0aENvbnRleHQsIGludCkiPmV4ZWN1dGU8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL1hQYXRoQ29udGV4dC5odG1sIj5YUGF0aENvbnRleHQ8L0E+Jm5ic3A7eGN0eHQsCiAgICAgICAgaW50Jm5ic3A7Y3VycmVudE5vZGUpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtFeGVjdXRlIGFuIGV4cHJlc3Npb24gaW4gdGhlIFhQYXRoIHJ1bnRpbWUgY29udGV4dCwgYW5kIHJldHVybiB0aGUKIHJlc3VsdCBvZiB0aGUgZXhwcmVzc2lvbi48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9vYmplY3RzL1hPYmplY3QuaHRtbCI+WE9iamVjdDwvQT48L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uLmh0bWwjZXhlY3V0ZShvcmcuYXBhY2hlLnhwYXRoLlhQYXRoQ29udGV4dCwgaW50LCBvcmcuYXBhY2hlLnhtbC5kdG0uRFRNLCBpbnQpIj5leGVjdXRlPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9YUGF0aENvbnRleHQuaHRtbCI+WFBhdGhDb250ZXh0PC9BPiZuYnNwO3hjdHh0LAogICAgICAgIGludCZuYnNwO2N1cnJlbnROb2RlLAogICAgICAgIDxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveG1sL2R0bS9EVE0uaHRtbCI+RFRNPC9BPiZuYnNwO2R0bSwKICAgICAgICBpbnQmbmJzcDtleHBUeXBlKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7RXhlY3V0ZSBhbiBleHByZXNzaW9uIGluIHRoZSBYUGF0aCBydW50aW1lIGNvbnRleHQsIGFuZCByZXR1cm4gdGhlCiByZXN1bHQgb2YgdGhlIGV4cHJlc3Npb24uPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uLmh0bWwjZXhlY3V0ZUNoYXJzVG9Db250ZW50SGFuZGxlcihvcmcuYXBhY2hlLnhwYXRoLlhQYXRoQ29udGV4dCwgb3JnLnhtbC5zYXguQ29udGVudEhhbmRsZXIpIj5leGVjdXRlQ2hhcnNUb0NvbnRlbnRIYW5kbGVyPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9YUGF0aENvbnRleHQuaHRtbCI+WFBhdGhDb250ZXh0PC9BPiZuYnNwO3hjdHh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Ii4uLy4uLy4uL29yZy94bWwvc2F4L0NvbnRlbnRIYW5kbGVyLmh0bWwiPkNvbnRlbnRIYW5kbGVyPC9BPiZuYnNwO2hhbmRsZXIpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtFeGVjdXRlIGFuIGV4cHJlc3Npb24gaW4gdGhlIFhQYXRoIHJ1bnRpbWUgY29udGV4dCwgYW5kIHJldHVybiB0aGUKIHJlc3VsdCBvZiB0aGUgZXhwcmVzc2lvbi48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb24uaHRtbCNleHByQWRkQ2hpbGQob3JnLmFwYWNoZS54cGF0aC5FeHByZXNzaW9uTm9kZSwgaW50KSI+ZXhwckFkZENoaWxkPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uTm9kZS5odG1sIj5FeHByZXNzaW9uTm9kZTwvQT4mbmJzcDtuLAogICAgICAgICAgICAgaW50Jm5ic3A7aSk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoaXMgbWV0aG9kIHRlbGxzIHRoZSBub2RlIHRvIGFkZCBpdHMgYXJndW1lbnQgdG8gdGhlIG5vZGUncwpsaXN0IG9mIGNoaWxkcmVuLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb25Ob2RlLmh0bWwiPkV4cHJlc3Npb25Ob2RlPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb24uaHRtbCNleHByR2V0Q2hpbGQoaW50KSI+ZXhwckdldENoaWxkPC9BPjwvQj4oaW50Jm5ic3A7aSk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoaXMgbWV0aG9kIHJldHVybnMgYSBjaGlsZCBub2RlLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDtpbnQ8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uLmh0bWwjZXhwckdldE51bUNoaWxkcmVuKCkiPmV4cHJHZXROdW1DaGlsZHJlbjwvQT48L0I+KCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybiB0aGUgbnVtYmVyIG9mIGNoaWxkcmVuIHRoZSBub2RlIGhhcy48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uTm9kZS5odG1sIj5FeHByZXNzaW9uTm9kZTwvQT48L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uLmh0bWwjZXhwckdldFBhcmVudCgpIj5leHByR2V0UGFyZW50PC9BPjwvQj4oKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uLmh0bWwjZXhwclNldFBhcmVudChvcmcuYXBhY2hlLnhwYXRoLkV4cHJlc3Npb25Ob2RlKSI+ZXhwclNldFBhcmVudDwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvRXhwcmVzc2lvbk5vZGUuaHRtbCI+RXhwcmVzc2lvbk5vZGU8L0E+Jm5ic3A7bik8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoaXMgcGFpciBvZiBtZXRob2RzIGFyZSB1c2VkIHRvIGluZm9ybSB0aGUgbm9kZSBvZiBpdHMKcGFyZW50LjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT5hYnN0cmFjdCAmbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvRXhwcmVzc2lvbi5odG1sI2ZpeHVwVmFyaWFibGVzKGphdmEudXRpbC5WZWN0b3IsIGludCkiPmZpeHVwVmFyaWFibGVzPC9BPjwvQj4oamF2YS51dGlsLlZlY3RvciZuYnNwO3ZhcnMsCiAgICAgICAgICAgICAgIGludCZuYnNwO2dsb2JhbHNTaXplKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGZpeHVwIHZhcmlhYmxlcyBmcm9tIFFOYW1lcyB0byBzdGFjayBmcmFtZQogaW5kZXhlcyBhdCBzdHlsZXNoZWV0IGJ1aWxkIHRpbWUuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO2ludDwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb24uaHRtbCNnZXRDb2x1bW5OdW1iZXIoKSI+Z2V0Q29sdW1uTnVtYmVyPC9BPjwvQj4oKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJuIHRoZSBjaGFyYWN0ZXIgcG9zaXRpb24gd2hlcmUgdGhlIGN1cnJlbnQgZG9jdW1lbnQgZXZlbnQgZW5kcy48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uTm9kZS5odG1sIj5FeHByZXNzaW9uTm9kZTwvQT48L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uLmh0bWwjZ2V0RXhwcmVzc2lvbk93bmVyKCkiPmdldEV4cHJlc3Npb25Pd25lcjwvQT48L0I+KCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0dldCB0aGUgZmlyc3Qgbm9uLUV4cHJlc3Npb24gcGFyZW50IG9mIHRoaXMgbm9kZS48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7aW50PC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvRXhwcmVzc2lvbi5odG1sI2dldExpbmVOdW1iZXIoKSI+Z2V0TGluZU51bWJlcjwvQT48L0I+KCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybiB0aGUgbGluZSBudW1iZXIgd2hlcmUgdGhlIGN1cnJlbnQgZG9jdW1lbnQgZXZlbnQgZW5kcy48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb24uaHRtbCNnZXRQdWJsaWNJZCgpIj5nZXRQdWJsaWNJZDwvQT48L0I+KCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybiB0aGUgcHVibGljIGlkZW50aWZpZXIgZm9yIHRoZSBjdXJyZW50IGRvY3VtZW50IGV2ZW50LjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPg0KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvRXhwcmVzc2lvbi5odG1sI2dldFN5c3RlbUlkKCkiPmdldFN5c3RlbUlkPC9BPjwvQj4oKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJuIHRoZSBzeXN0ZW0gaWRlbnRpZmllciBmb3IgdGhlIGN1cnJlbnQgZG9jdW1lbnQgZXZlbnQuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO2Jvb2xlYW48L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uLmh0bWwjaXNOb2Rlc2V0RXhwcigpIj5pc05vZGVzZXRFeHByPC9BPjwvQj4oKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGVsbCBpZiB0aGUgZXhwcmVzc2lvbiBpcyBhIG5vZGVzZXQgZXhwcmVzc2lvbi48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7Ym9vbGVhbjwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb24uaHRtbCNpc1N0YWJsZU51bWJlcigpIj5pc1N0YWJsZU51bWJlcjwvQT48L0I+KCk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RlbGwgaWYgdGhpcyBleHByZXNzaW9uIHJldHVybnMgYSBzdGFibGUgbnVtYmVyIHRoYXQgd2lsbCBub3QgY2hhbmdlIGR1cmluZyAKIGl0ZXJhdGlvbnMgd2l0aGluIHRoZSBleHByZXNzaW9uLjwvVEQ+DQo8L1RSPg0KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+DQo8Q09ERT4mbmJzcDtkb3VibGU8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uLmh0bWwjbnVtKG9yZy5hcGFjaGUueHBhdGguWFBhdGhDb250ZXh0KSI+bnVtPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9YUGF0aENvbnRleHQuaHRtbCI+WFBhdGhDb250ZXh0PC9BPiZuYnNwO3hjdHh0KTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7RXZhbHVhdGUgZXhwcmVzc2lvbiB0byBhIG51bWJlci48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb24uaHRtbCN3YXJuKG9yZy5hcGFjaGUueHBhdGguWFBhdGhDb250ZXh0LCBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuT2JqZWN0W10pIj53YXJuPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9YUGF0aENvbnRleHQuaHRtbCI+WFBhdGhDb250ZXh0PC9BPiZuYnNwO3hjdHh0LAogICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDttc2csCiAgICAgamF2YS5sYW5nLk9iamVjdFtdJm5ic3A7YXJncyk8L0NPREU+DQoNCjxCUj4NCiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1dhcm4gdGhlIHVzZXIgb2YgYW4gcHJvYmxlbS48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94bWwvdXRpbHMvWE1MU3RyaW5nLmh0bWwiPlhNTFN0cmluZzwvQT48L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uLmh0bWwjeHN0cihvcmcuYXBhY2hlLnhwYXRoLlhQYXRoQ29udGV4dCkiPnhzdHI8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL1hQYXRoQ29udGV4dC5odG1sIj5YUGF0aENvbnRleHQ8L0E+Jm5ic3A7eGN0eHQpPC9DT0RFPg0KDQo8QlI+DQombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtDYXN0IHJlc3VsdCBvYmplY3QgdG8gYSBzdHJpbmcuPC9URD4NCjwvVFI+DQo8L1RBQkxFPg0KJm5ic3A7PEEgTkFNRT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19qYXZhLmxhbmcuT2JqZWN0Ij48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBXSURUSD0iMTAwJSI+DQo8VFIgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9IlRhYmxlU3ViSGVhZGluZ0NvbG9yIj4NCjxURD48Qj5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGNsYXNzIGphdmEubGFuZy5PYmplY3Q8L0I+PC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURD48Q09ERT5lcXVhbHMsIA0KZ2V0Q2xhc3MsIA0KaGFzaENvZGUsIA0Kbm90aWZ5LCANCm5vdGlmeUFsbCwgDQp0b1N0cmluZywgDQp3YWl0LCANCndhaXQsIA0Kd2FpdDwvQ09ERT48L1REPg0KPC9UUj4NCjwvVEFCTEU+DQombmJzcDsNCjxQPg0KDQo8IS0tID09PT09PT09PT09PSBGSUVMRCBERVRBSUwgPT09PT09PT09PT0gLS0+DQoNCg0KPCEtLSA9PT09PT09PT0gQ09OU1RSVUNUT1IgREVUQUlMID09PT09PT09IC0tPg0KDQo8QSBOQU1FPSJjb25zdHJ1Y3Rvcl9kZXRhaWwiPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIxIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFdJRFRIPSIxMDAlIj4NCjxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPg0KPFREIENPTFNQQU49MT48Rk9OVCBTSVpFPSIrMiI+DQo8Qj5Db25zdHJ1Y3RvciBEZXRhaWw8L0I+PC9GT05UPjwvVEQ+DQo8L1RSPg0KPC9UQUJMRT4NCg0KPEEgTkFNRT0iRXhwcmVzc2lvbigpIj48IS0tIC0tPjwvQT48SDM+DQpFeHByZXNzaW9uPC9IMz4NCjxQUkU+DQpwdWJsaWMgPEI+RXhwcmVzc2lvbjwvQj4oKTwvUFJFPg0KPERMPg0KPC9ETD4NCg0KPCEtLSA9PT09PT09PT09PT0gTUVUSE9EIERFVEFJTCA9PT09PT09PT09IC0tPg0KDQo8QSBOQU1FPSJtZXRob2RfZGV0YWlsIj48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBXSURUSD0iMTAwJSI+DQo8VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4NCjxURCBDT0xTUEFOPTE+PEZPTlQgU0laRT0iKzIiPg0KPEI+TWV0aG9kIERldGFpbDwvQj48L0ZPTlQ+PC9URD4NCjwvVFI+DQo8L1RBQkxFPg0KDQo8QSBOQU1FPSJjYW5UcmF2ZXJzZU91dHNpZGVTdWJ0cmVlKCkiPjwhLS0gLS0+PC9BPjxIMz4NCmNhblRyYXZlcnNlT3V0c2lkZVN1YnRyZWU8L0gzPg0KPFBSRT4NCnB1YmxpYyBib29sZWFuIDxCPmNhblRyYXZlcnNlT3V0c2lkZVN1YnRyZWU8L0I+KCk8L1BSRT4NCjxETD4NCjxERD5UZWxsIGlmIHRoaXMgZXhwcmVzc2lvbiBvciBpdCdzIHN1YmV4cHJlc3Npb25zIGNhbiB0cmF2ZXJzZSBvdXRzaWRlCiB0aGUgY3VycmVudCBzdWJ0cmVlLjxERD48REw+DQo8RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRydWUgaWYgdHJhdmVyc2FsIG91dHNpZGUgdGhlIGNvbnRleHQgbm9kZSdzIHN1YnRyZWUgY2FuIG9jY3VyLjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iZXhlY3V0ZShvcmcuYXBhY2hlLnhwYXRoLlhQYXRoQ29udGV4dCwgaW50KSI+PCEtLSAtLT48L0E+PEgzPg0KZXhlY3V0ZTwvSDM+DQo8UFJFPg0KcHVibGljIDxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvb2JqZWN0cy9YT2JqZWN0Lmh0bWwiPlhPYmplY3Q8L0E+IDxCPmV4ZWN1dGU8L0I+KDxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvWFBhdGhDb250ZXh0Lmh0bWwiPlhQYXRoQ29udGV4dDwvQT4mbmJzcDt4Y3R4dCwKICAgICAgICAgICAgICAgICAgICAgICBpbnQmbmJzcDtjdXJyZW50Tm9kZSkKICAgICAgICAgICAgICAgIHRocm93cyA8QSBIUkVGPSIuLi8uLi8uLi9qYXZheC94bWwvdHJhbnNmb3JtL1RyYW5zZm9ybWVyRXhjZXB0aW9uLmh0bWwiPlRyYW5zZm9ybWVyRXhjZXB0aW9uPC9BPjwvUFJFPg0KPERMPg0KPEREPkV4ZWN1dGUgYW4gZXhwcmVzc2lvbiBpbiB0aGUgWFBhdGggcnVudGltZSBjb250ZXh0LCBhbmQgcmV0dXJuIHRoZQogcmVzdWx0IG9mIHRoZSBleHByZXNzaW9uLjxERD48REw+DQo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnhjdHh0PC9DT0RFPiAtIFRoZSBYUGF0aCBydW50aW1lIGNvbnRleHQuPEREPjxDT0RFPmN1cnJlbnROb2RlPC9DT0RFPiAtIFRoZSBjdXJyZW50Tm9kZS48RFQ+PEI+UmV0dXJuczo8L0I+PEREPlRoZSByZXN1bHQgb2YgdGhlIGV4cHJlc3Npb24gaW4gdGhlIGZvcm0gb2YgYSA8Y29kZT5YT2JqZWN0PC9jb2RlPi48RFQ+PEI+VGhyb3dzOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vamF2YXgveG1sL3RyYW5zZm9ybS9UcmFuc2Zvcm1lckV4Y2VwdGlvbi5odG1sIj5UcmFuc2Zvcm1lckV4Y2VwdGlvbjwvQT4gLSBpZiBhIHJ1bnRpbWUgZXhjZXB0aW9uCiAgICAgICAgIG9jY3Vycy48L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9ImV4ZWN1dGUob3JnLmFwYWNoZS54cGF0aC5YUGF0aENvbnRleHQsIGludCwgb3JnLmFwYWNoZS54bWwuZHRtLkRUTSwgaW50KSI+PCEtLSAtLT48L0E+PEgzPg0KZXhlY3V0ZTwvSDM+DQo8UFJFPg0KcHVibGljIDxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvb2JqZWN0cy9YT2JqZWN0Lmh0bWwiPlhPYmplY3Q8L0E+IDxCPmV4ZWN1dGU8L0I+KDxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvWFBhdGhDb250ZXh0Lmh0bWwiPlhQYXRoQ29udGV4dDwvQT4mbmJzcDt4Y3R4dCwKICAgICAgICAgICAgICAgICAgICAgICBpbnQmbmJzcDtjdXJyZW50Tm9kZSwKICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3htbC9kdG0vRFRNLmh0bWwiPkRUTTwvQT4mbmJzcDtkdG0sCiAgICAgICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7ZXhwVHlwZSkKICAgICAgICAgICAgICAgIHRocm93cyA8QSBIUkVGPSIuLi8uLi8uLi9qYXZheC94bWwvdHJhbnNmb3JtL1RyYW5zZm9ybWVyRXhjZXB0aW9uLmh0bWwiPlRyYW5zZm9ybWVyRXhjZXB0aW9uPC9BPjwvUFJFPg0KPERMPg0KPEREPkV4ZWN1dGUgYW4gZXhwcmVzc2lvbiBpbiB0aGUgWFBhdGggcnVudGltZSBjb250ZXh0LCBhbmQgcmV0dXJuIHRoZQogcmVzdWx0IG9mIHRoZSBleHByZXNzaW9uLjxERD48REw+DQo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnhjdHh0PC9DT0RFPiAtIFRoZSBYUGF0aCBydW50aW1lIGNvbnRleHQuPEREPjxDT0RFPmN1cnJlbnROb2RlPC9DT0RFPiAtIFRoZSBjdXJyZW50Tm9kZS48REQ+PENPREU+ZHRtPC9DT0RFPiAtIFRoZSBEVE0gb2YgdGhlIGN1cnJlbnQgbm9kZS48REQ+PENPREU+ZXhwVHlwZTwvQ09ERT4gLSBUaGUgZXhwYW5kZWQgdHlwZSBJRCBvZiB0aGUgY3VycmVudCBub2RlLjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+VGhlIHJlc3VsdCBvZiB0aGUgZXhwcmVzc2lvbiBpbiB0aGUgZm9ybSBvZiBhIDxjb2RlPlhPYmplY3Q8L2NvZGU+LjxEVD48Qj5UaHJvd3M6PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi9qYXZheC94bWwvdHJhbnNmb3JtL1RyYW5zZm9ybWVyRXhjZXB0aW9uLmh0bWwiPlRyYW5zZm9ybWVyRXhjZXB0aW9uPC9BPiAtIGlmIGEgcnVudGltZSBleGNlcHRpb24KICAgICAgICAgb2NjdXJzLjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iZXhlY3V0ZShvcmcuYXBhY2hlLnhwYXRoLlhQYXRoQ29udGV4dCkiPjwhLS0gLS0+PC9BPjxIMz4NCmV4ZWN1dGU8L0gzPg0KPFBSRT4NCnB1YmxpYyBhYnN0cmFjdCA8QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWE9iamVjdC5odG1sIj5YT2JqZWN0PC9BPiA8Qj5leGVjdXRlPC9CPig8QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL1hQYXRoQ29udGV4dC5odG1sIj5YUGF0aENvbnRleHQ8L0E+Jm5ic3A7eGN0eHQpCiAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd3MgPEEgSFJFRj0iLi4vLi4vLi4vamF2YXgveG1sL3RyYW5zZm9ybS9UcmFuc2Zvcm1lckV4Y2VwdGlvbi5odG1sIj5UcmFuc2Zvcm1lckV4Y2VwdGlvbjwvQT48L1BSRT4NCjxETD4NCjxERD5FeGVjdXRlIGFuIGV4cHJlc3Npb24gaW4gdGhlIFhQYXRoIHJ1bnRpbWUgY29udGV4dCwgYW5kIHJldHVybiB0aGUKIHJlc3VsdCBvZiB0aGUgZXhwcmVzc2lvbi48REQ+PERMPg0KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT54Y3R4dDwvQ09ERT4gLSBUaGUgWFBhdGggcnVudGltZSBjb250ZXh0LjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+VGhlIHJlc3VsdCBvZiB0aGUgZXhwcmVzc2lvbiBpbiB0aGUgZm9ybSBvZiBhIDxjb2RlPlhPYmplY3Q8L2NvZGU+LjxEVD48Qj5UaHJvd3M6PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi9qYXZheC94bWwvdHJhbnNmb3JtL1RyYW5zZm9ybWVyRXhjZXB0aW9uLmh0bWwiPlRyYW5zZm9ybWVyRXhjZXB0aW9uPC9BPiAtIGlmIGEgcnVudGltZSBleGNlcHRpb24KICAgICAgICAgb2NjdXJzLjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iZXhlY3V0ZShvcmcuYXBhY2hlLnhwYXRoLlhQYXRoQ29udGV4dCwgYm9vbGVhbikiPjwhLS0gLS0+PC9BPjxIMz4NCmV4ZWN1dGU8L0gzPg0KPFBSRT4NCnB1YmxpYyA8QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL29iamVjdHMvWE9iamVjdC5odG1sIj5YT2JqZWN0PC9BPiA8Qj5leGVjdXRlPC9CPig8QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL1hQYXRoQ29udGV4dC5odG1sIj5YUGF0aENvbnRleHQ8L0E+Jm5ic3A7eGN0eHQsCiAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiZuYnNwO2Rlc3RydWN0aXZlT0spCiAgICAgICAgICAgICAgICB0aHJvd3MgPEEgSFJFRj0iLi4vLi4vLi4vamF2YXgveG1sL3RyYW5zZm9ybS9UcmFuc2Zvcm1lckV4Y2VwdGlvbi5odG1sIj5UcmFuc2Zvcm1lckV4Y2VwdGlvbjwvQT48L1BSRT4NCjxETD4NCjxERD5FeGVjdXRlIGFuIGV4cHJlc3Npb24gaW4gdGhlIFhQYXRoIHJ1bnRpbWUgY29udGV4dCwgYW5kIHJldHVybiB0aGUKIHJlc3VsdCBvZiB0aGUgZXhwcmVzc2lvbiwgYnV0IHRlbGwgdGhhdCBhICJzYWZlIiBvYmplY3QgZG9lc24ndCBoYXZlIAogdG8gYmUgcmV0dXJuZWQuICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBqdXN0IGNhbGxzIGV4ZWN1dGUoeGN0eHQpLjxERD48REw+DQo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnhjdHh0PC9DT0RFPiAtIFRoZSBYUGF0aCBydW50aW1lIGNvbnRleHQuPEREPjxDT0RFPmRlc3RydWN0aXZlT0s8L0NPREU+IC0gdHJ1ZSBpZiBhICJzYWZlIiBvYmplY3QgZG9lc24ndCBuZWVkIHRvIGJlIHJldHVybmVkLjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+VGhlIHJlc3VsdCBvZiB0aGUgZXhwcmVzc2lvbiBpbiB0aGUgZm9ybSBvZiBhIDxjb2RlPlhPYmplY3Q8L2NvZGU+LjxEVD48Qj5UaHJvd3M6PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi9qYXZheC94bWwvdHJhbnNmb3JtL1RyYW5zZm9ybWVyRXhjZXB0aW9uLmh0bWwiPlRyYW5zZm9ybWVyRXhjZXB0aW9uPC9BPiAtIGlmIGEgcnVudGltZSBleGNlcHRpb24KICAgICAgICAgb2NjdXJzLjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0ibnVtKG9yZy5hcGFjaGUueHBhdGguWFBhdGhDb250ZXh0KSI+PCEtLSAtLT48L0E+PEgzPg0KbnVtPC9IMz4NCjxQUkU+DQpwdWJsaWMgZG91YmxlIDxCPm51bTwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9YUGF0aENvbnRleHQuaHRtbCI+WFBhdGhDb250ZXh0PC9BPiZuYnNwO3hjdHh0KQogICAgICAgICAgIHRocm93cyA8QSBIUkVGPSIuLi8uLi8uLi9qYXZheC94bWwvdHJhbnNmb3JtL1RyYW5zZm9ybWVyRXhjZXB0aW9uLmh0bWwiPlRyYW5zZm9ybWVyRXhjZXB0aW9uPC9BPjwvUFJFPg0KPERMPg0KPEREPkV2YWx1YXRlIGV4cHJlc3Npb24gdG8gYSBudW1iZXIuPEREPjxETD4NCjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+eGN0eHQ8L0NPREU+IC0gVGhlIFhQYXRoIHJ1bnRpbWUgY29udGV4dC48RFQ+PEI+UmV0dXJuczo8L0I+PEREPlRoZSBleHByZXNzaW9uIGV2YWx1YXRlZCBhcyBhIGRvdWJsZS48RFQ+PEI+VGhyb3dzOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vamF2YXgveG1sL3RyYW5zZm9ybS9UcmFuc2Zvcm1lckV4Y2VwdGlvbi5odG1sIj5UcmFuc2Zvcm1lckV4Y2VwdGlvbjwvQT4gLSAmbmJzcDs8L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9ImJvb2wob3JnLmFwYWNoZS54cGF0aC5YUGF0aENvbnRleHQpIj48IS0tIC0tPjwvQT48SDM+DQpib29sPC9IMz4NCjxQUkU+DQpwdWJsaWMgYm9vbGVhbiA8Qj5ib29sPC9CPig8QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL1hQYXRoQ29udGV4dC5odG1sIj5YUGF0aENvbnRleHQ8L0E+Jm5ic3A7eGN0eHQpCiAgICAgICAgICAgICB0aHJvd3MgPEEgSFJFRj0iLi4vLi4vLi4vamF2YXgveG1sL3RyYW5zZm9ybS9UcmFuc2Zvcm1lckV4Y2VwdGlvbi5odG1sIj5UcmFuc2Zvcm1lckV4Y2VwdGlvbjwvQT48L1BSRT4NCjxETD4NCjxERD5FdmFsdWF0ZSBleHByZXNzaW9uIHRvIGEgYm9vbGVhbi48REQ+PERMPg0KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT54Y3R4dDwvQ09ERT4gLSBUaGUgWFBhdGggcnVudGltZSBjb250ZXh0LjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+ZmFsc2U8RFQ+PEI+VGhyb3dzOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vamF2YXgveG1sL3RyYW5zZm9ybS9UcmFuc2Zvcm1lckV4Y2VwdGlvbi5odG1sIj5UcmFuc2Zvcm1lckV4Y2VwdGlvbjwvQT4gLSAmbmJzcDs8L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9InhzdHIob3JnLmFwYWNoZS54cGF0aC5YUGF0aENvbnRleHQpIj48IS0tIC0tPjwvQT48SDM+DQp4c3RyPC9IMz4NCjxQUkU+DQpwdWJsaWMgPEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94bWwvdXRpbHMvWE1MU3RyaW5nLmh0bWwiPlhNTFN0cmluZzwvQT4gPEI+eHN0cjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9YUGF0aENvbnRleHQuaHRtbCI+WFBhdGhDb250ZXh0PC9BPiZuYnNwO3hjdHh0KQogICAgICAgICAgICAgICB0aHJvd3MgPEEgSFJFRj0iLi4vLi4vLi4vamF2YXgveG1sL3RyYW5zZm9ybS9UcmFuc2Zvcm1lckV4Y2VwdGlvbi5odG1sIj5UcmFuc2Zvcm1lckV4Y2VwdGlvbjwvQT48L1BSRT4NCjxETD4NCjxERD5DYXN0IHJlc3VsdCBvYmplY3QgdG8gYSBzdHJpbmcuPEREPjxETD4NCjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+eGN0eHQ8L0NPREU+IC0gVGhlIFhQYXRoIHJ1bnRpbWUgY29udGV4dC48RFQ+PEI+UmV0dXJuczo8L0I+PEREPlRoZSBzdHJpbmcgdGhpcyB3cmFwcyBvciB0aGUgZW1wdHkgc3RyaW5nIGlmIG51bGw8RFQ+PEI+VGhyb3dzOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vamF2YXgveG1sL3RyYW5zZm9ybS9UcmFuc2Zvcm1lckV4Y2VwdGlvbi5odG1sIj5UcmFuc2Zvcm1lckV4Y2VwdGlvbjwvQT4gLSAmbmJzcDs8L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9ImlzTm9kZXNldEV4cHIoKSI+PCEtLSAtLT48L0E+PEgzPg0KaXNOb2Rlc2V0RXhwcjwvSDM+DQo8UFJFPg0KcHVibGljIGJvb2xlYW4gPEI+aXNOb2Rlc2V0RXhwcjwvQj4oKTwvUFJFPg0KPERMPg0KPEREPlRlbGwgaWYgdGhlIGV4cHJlc3Npb24gaXMgYSBub2Rlc2V0IGV4cHJlc3Npb24uICBJbiBvdGhlciB3b3JkcywgdGVsbAogaWYgeW91IGNhbiBleGVjdXRlIDxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvRXhwcmVzc2lvbi5odG1sI2FzTm9kZShvcmcuYXBhY2hlLnhwYXRoLlhQYXRoQ29udGV4dCkiPmFzTm9kZTwvQT4gd2l0aG91dCBhbiBleGNlcHRpb24uPEREPjxETD4NCjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+dHJ1ZSBpZiB0aGUgZXhwcmVzc2lvbiBjYW4gYmUgcmVwcmVzZW50ZWQgYXMgYSBub2Rlc2V0LjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iYXNOb2RlKG9yZy5hcGFjaGUueHBhdGguWFBhdGhDb250ZXh0KSI+PCEtLSAtLT48L0E+PEgzPg0KYXNOb2RlPC9IMz4NCjxQUkU+DQpwdWJsaWMgaW50IDxCPmFzTm9kZTwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9YUGF0aENvbnRleHQuaHRtbCI+WFBhdGhDb250ZXh0PC9BPiZuYnNwO3hjdHh0KQogICAgICAgICAgIHRocm93cyA8QSBIUkVGPSIuLi8uLi8uLi9qYXZheC94bWwvdHJhbnNmb3JtL1RyYW5zZm9ybWVyRXhjZXB0aW9uLmh0bWwiPlRyYW5zZm9ybWVyRXhjZXB0aW9uPC9BPjwvUFJFPg0KPERMPg0KPEREPlJldHVybiB0aGUgZmlyc3Qgbm9kZSBvdXQgb2YgdGhlIG5vZGVzZXQsIGlmIHRoaXMgZXhwcmVzc2lvbiBpcwogYSBub2Rlc2V0IGV4cHJlc3Npb24uPEREPjxETD4NCjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+eGN0eHQ8L0NPREU+IC0gVGhlIFhQYXRoIHJ1bnRpbWUgY29udGV4dC48RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRoZSBmaXJzdCBub2RlIG91dCBvZiB0aGUgbm9kZXNldCwgb3IgRFRNLk5VTEwuPERUPjxCPlRocm93czo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uL2phdmF4L3htbC90cmFuc2Zvcm0vVHJhbnNmb3JtZXJFeGNlcHRpb24uaHRtbCI+VHJhbnNmb3JtZXJFeGNlcHRpb248L0E+IC0gJm5ic3A7PC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJhc0l0ZXJhdG9yKG9yZy5hcGFjaGUueHBhdGguWFBhdGhDb250ZXh0LCBpbnQpIj48IS0tIC0tPjwvQT48SDM+DQphc0l0ZXJhdG9yPC9IMz4NCjxQUkU+DQpwdWJsaWMgPEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94bWwvZHRtL0RUTUl0ZXJhdG9yLmh0bWwiPkRUTUl0ZXJhdG9yPC9BPiA8Qj5hc0l0ZXJhdG9yPC9CPig8QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL1hQYXRoQ29udGV4dC5odG1sIj5YUGF0aENvbnRleHQ8L0E+Jm5ic3A7eGN0eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCZuYnNwO2NvbnRleHROb2RlKQogICAgICAgICAgICAgICAgICAgICAgIHRocm93cyA8QSBIUkVGPSIuLi8uLi8uLi9qYXZheC94bWwvdHJhbnNmb3JtL1RyYW5zZm9ybWVyRXhjZXB0aW9uLmh0bWwiPlRyYW5zZm9ybWVyRXhjZXB0aW9uPC9BPjwvUFJFPg0KPERMPg0KPEREPkdpdmVuIGFuIHNlbGVjdCBleHByZXNzaW9uIGFuZCBhIGNvbnRleHQsIGV2YWx1YXRlIHRoZSBYUGF0aAogYW5kIHJldHVybiB0aGUgcmVzdWx0aW5nIGl0ZXJhdG9yLjxERD48REw+DQo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnhjdHh0PC9DT0RFPiAtIFRoZSBleGVjdXRpb24gY29udGV4dC48REQ+PENPREU+Y29udGV4dE5vZGU8L0NPREU+IC0gVGhlIG5vZGUgdGhhdCAiLiIgZXhwcmVzc2VzLjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+QSB2YWxpZCBEVE1JdGVyYXRvci48RFQ+PEI+VGhyb3dzOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vamF2YXgveG1sL3RyYW5zZm9ybS9UcmFuc2Zvcm1lckV4Y2VwdGlvbi5odG1sIj5UcmFuc2Zvcm1lckV4Y2VwdGlvbjwvQT4gLSB0aHJvd24gaWYgdGhlIGFjdGl2ZSBQcm9ibGVtTGlzdGVuZXIgZGVjaWRlcwogdGhlIGVycm9yIGNvbmRpdGlvbiBpcyBzZXZlcmUgZW5vdWdoIHRvIGhhbHQgcHJvY2Vzc2luZy48REQ+PEEgSFJFRj0iLi4vLi4vLi4vamF2YXgveG1sL3RyYW5zZm9ybS9UcmFuc2Zvcm1lckV4Y2VwdGlvbi5odG1sIj5UcmFuc2Zvcm1lckV4Y2VwdGlvbjwvQT4gLSAmbmJzcDs8RFQ+PEI+VXNhZ2U6PC9CPjxERD48aT48Zm9udCBzaXplPSItMSIgY29sb3I9IiMwMDAwRkYiPiAqKkV4cGVyaW1lbnRhbCoqPC9mb250PjwvaT48L0REPgo8L0REPg0KPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJhc0l0ZXJhdG9yUmF3KG9yZy5hcGFjaGUueHBhdGguWFBhdGhDb250ZXh0LCBpbnQpIj48IS0tIC0tPjwvQT48SDM+DQphc0l0ZXJhdG9yUmF3PC9IMz4NCjxQUkU+DQpwdWJsaWMgPEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94bWwvZHRtL0RUTUl0ZXJhdG9yLmh0bWwiPkRUTUl0ZXJhdG9yPC9BPiA8Qj5hc0l0ZXJhdG9yUmF3PC9CPig8QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL1hQYXRoQ29udGV4dC5odG1sIj5YUGF0aENvbnRleHQ8L0E+Jm5ic3A7eGN0eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCZuYnNwO2NvbnRleHROb2RlKQogICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93cyA8QSBIUkVGPSIuLi8uLi8uLi9qYXZheC94bWwvdHJhbnNmb3JtL1RyYW5zZm9ybWVyRXhjZXB0aW9uLmh0bWwiPlRyYW5zZm9ybWVyRXhjZXB0aW9uPC9BPjwvUFJFPg0KPERMPg0KPEREPkdpdmVuIGFuIHNlbGVjdCBleHByZXNzaW9uIGFuZCBhIGNvbnRleHQsIGV2YWx1YXRlIHRoZSBYUGF0aAogYW5kIHJldHVybiB0aGUgcmVzdWx0aW5nIGl0ZXJhdG9yLCBidXQgZG8gbm90IGNsb25lLjxERD48REw+DQo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnhjdHh0PC9DT0RFPiAtIFRoZSBleGVjdXRpb24gY29udGV4dC48REQ+PENPREU+Y29udGV4dE5vZGU8L0NPREU+IC0gVGhlIG5vZGUgdGhhdCAiLiIgZXhwcmVzc2VzLjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+QSB2YWxpZCBEVE1JdGVyYXRvci48RFQ+PEI+VGhyb3dzOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vamF2YXgveG1sL3RyYW5zZm9ybS9UcmFuc2Zvcm1lckV4Y2VwdGlvbi5odG1sIj5UcmFuc2Zvcm1lckV4Y2VwdGlvbjwvQT4gLSB0aHJvd24gaWYgdGhlIGFjdGl2ZSBQcm9ibGVtTGlzdGVuZXIgZGVjaWRlcwogdGhlIGVycm9yIGNvbmRpdGlvbiBpcyBzZXZlcmUgZW5vdWdoIHRvIGhhbHQgcHJvY2Vzc2luZy48REQ+PEEgSFJFRj0iLi4vLi4vLi4vamF2YXgveG1sL3RyYW5zZm9ybS9UcmFuc2Zvcm1lckV4Y2VwdGlvbi5odG1sIj5UcmFuc2Zvcm1lckV4Y2VwdGlvbjwvQT4gLSAmbmJzcDs8RFQ+PEI+VXNhZ2U6PC9CPjxERD48aT48Zm9udCBzaXplPSItMSIgY29sb3I9IiMwMDAwRkYiPiAqKkV4cGVyaW1lbnRhbCoqPC9mb250PjwvaT48L0REPgo8L0REPg0KPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJleGVjdXRlQ2hhcnNUb0NvbnRlbnRIYW5kbGVyKG9yZy5hcGFjaGUueHBhdGguWFBhdGhDb250ZXh0LCBvcmcueG1sLnNheC5Db250ZW50SGFuZGxlcikiPjwhLS0gLS0+PC9BPjxIMz4NCmV4ZWN1dGVDaGFyc1RvQ29udGVudEhhbmRsZXI8L0gzPg0KPFBSRT4NCnB1YmxpYyB2b2lkIDxCPmV4ZWN1dGVDaGFyc1RvQ29udGVudEhhbmRsZXI8L0I+KDxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvWFBhdGhDb250ZXh0Lmh0bWwiPlhQYXRoQ29udGV4dDwvQT4mbmJzcDt4Y3R4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi8uLi9vcmcveG1sL3NheC9Db250ZW50SGFuZGxlci5odG1sIj5Db250ZW50SGFuZGxlcjwvQT4mbmJzcDtoYW5kbGVyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dzIDxBIEhSRUY9Ii4uLy4uLy4uL2phdmF4L3htbC90cmFuc2Zvcm0vVHJhbnNmb3JtZXJFeGNlcHRpb24uaHRtbCI+VHJhbnNmb3JtZXJFeGNlcHRpb248L0E+LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Ii4uLy4uLy4uL29yZy94bWwvc2F4L1NBWEV4Y2VwdGlvbi5odG1sIj5TQVhFeGNlcHRpb248L0E+PC9QUkU+DQo8REw+DQo8REQ+RXhlY3V0ZSBhbiBleHByZXNzaW9uIGluIHRoZSBYUGF0aCBydW50aW1lIGNvbnRleHQsIGFuZCByZXR1cm4gdGhlCiByZXN1bHQgb2YgdGhlIGV4cHJlc3Npb24uPEREPjxETD4NCjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+eGN0eHQ8L0NPREU+IC0gVGhlIFhQYXRoIHJ1bnRpbWUgY29udGV4dC4KIE5FRURTRE9DIEBwYXJhbSBoYW5kbGVyPERUPjxCPlJldHVybnM6PC9CPjxERD5UaGUgcmVzdWx0IG9mIHRoZSBleHByZXNzaW9uIGluIHRoZSBmb3JtIG9mIGEgPGNvZGU+WE9iamVjdDwvY29kZT4uPERUPjxCPlRocm93czo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uL2phdmF4L3htbC90cmFuc2Zvcm0vVHJhbnNmb3JtZXJFeGNlcHRpb24uaHRtbCI+VHJhbnNmb3JtZXJFeGNlcHRpb248L0E+IC0gaWYgYSBydW50aW1lIGV4Y2VwdGlvbgogICAgICAgICBvY2N1cnMuPEREPjxBIEhSRUY9Ii4uLy4uLy4uL29yZy94bWwvc2F4L1NBWEV4Y2VwdGlvbi5odG1sIj5TQVhFeGNlcHRpb248L0E+IC0gJm5ic3A7PC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJpc1N0YWJsZU51bWJlcigpIj48IS0tIC0tPjwvQT48SDM+DQppc1N0YWJsZU51bWJlcjwvSDM+DQo8UFJFPg0KcHVibGljIGJvb2xlYW4gPEI+aXNTdGFibGVOdW1iZXI8L0I+KCk8L1BSRT4NCjxETD4NCjxERD5UZWxsIGlmIHRoaXMgZXhwcmVzc2lvbiByZXR1cm5zIGEgc3RhYmxlIG51bWJlciB0aGF0IHdpbGwgbm90IGNoYW5nZSBkdXJpbmcgCiBpdGVyYXRpb25zIHdpdGhpbiB0aGUgZXhwcmVzc2lvbi4gIFRoaXMgaXMgdXNlZCB0byBkZXRlcm1pbmUgaWYgYSBwcm94aW1pdHkgCiBwb3NpdGlvbiBwcmVkaWNhdGUgY2FuIGluZGljYXRlIHRoYXQgbm8gbW9yZSBzZWFyY2hpbmcgaGFzIHRvIG9jY3VyLjxERD48REw+DQo8RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRydWUgaWYgdGhlIGV4cHJlc3Npb24gcmVwcmVzZW50cyBhIHN0YWJsZSBudW1iZXIuPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJmaXh1cFZhcmlhYmxlcyhqYXZhLnV0aWwuVmVjdG9yLCBpbnQpIj48IS0tIC0tPjwvQT48SDM+DQpmaXh1cFZhcmlhYmxlczwvSDM+DQo8UFJFPg0KcHVibGljIGFic3RyYWN0IHZvaWQgPEI+Zml4dXBWYXJpYWJsZXM8L0I+KGphdmEudXRpbC5WZWN0b3ImbmJzcDt2YXJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmbmJzcDtnbG9iYWxzU2l6ZSk8L1BSRT4NCjxETD4NCjxERD5UaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZml4dXAgdmFyaWFibGVzIGZyb20gUU5hbWVzIHRvIHN0YWNrIGZyYW1lCiBpbmRleGVzIGF0IHN0eWxlc2hlZXQgYnVpbGQgdGltZS48REQ+PERMPg0KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT52YXJzPC9DT0RFPiAtIExpc3Qgb2YgUU5hbWVzIHRoYXQgY29ycmVzcG9uZCB0byB2YXJpYWJsZXMuICBUaGlzIGxpc3QKIHNob3VsZCBiZSBzZWFyY2hlZCBiYWNrd2FyZHMgZm9yIHRoZSBmaXJzdCBxdWFsaWZpZWQgbmFtZSB0aGF0CiBjb3JyZXNwb25kcyB0byB0aGUgdmFyaWFibGUgcmVmZXJlbmNlIHFuYW1lLiAgVGhlIHBvc2l0aW9uIG9mIHRoZQogUU5hbWUgaW4gdGhlIHZlY3RvciBmcm9tIHRoZSBzdGFydCBvZiB0aGUgdmVjdG9yIHdpbGwgYmUgaXRzIHBvc2l0aW9uCiBpbiB0aGUgc3RhY2sgZnJhbWUgKGJ1dCB2YXJpYWJsZXMgYWJvdmUgdGhlIGdsb2JhbHNUb3AgdmFsdWUgd2lsbCBuZWVkCiB0byBiZSBvZmZzZXQgdG8gdGhlIGN1cnJlbnQgc3RhY2sgZnJhbWUpLgogTkVFRFNET0MgQHBhcmFtIGdsb2JhbHNTaXplPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJkZWVwRXF1YWxzKG9yZy5hcGFjaGUueHBhdGguRXhwcmVzc2lvbikiPjwhLS0gLS0+PC9BPjxIMz4NCmRlZXBFcXVhbHM8L0gzPg0KPFBSRT4NCnB1YmxpYyBhYnN0cmFjdCBib29sZWFuIDxCPmRlZXBFcXVhbHM8L0I+KDxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvRXhwcmVzc2lvbi5odG1sIj5FeHByZXNzaW9uPC9BPiZuYnNwO2V4cHIpPC9QUkU+DQo8REw+DQo8REQ+Q29tcGFyZSB0aGlzIG9iamVjdCB3aXRoIGFub3RoZXIgb2JqZWN0IGFuZCBzZWUgCiBpZiB0aGV5IGFyZSBlcXVhbCwgaW5jbHVkZSB0aGUgc3ViIGhlYXJhcmNoeS48REQ+PERMPg0KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5leHByPC9DT0RFPiAtIEFub3RoZXIgZXhwcmVzc2lvbiBvYmplY3QuPERUPjxCPlJldHVybnM6PC9CPjxERD50cnVlIGlmIHRoaXMgb2JqZWN0cyBjbGFzcyBhbmQgdGhlIGV4cHIKIG9iamVjdCdzIGNsYXNzIGFyZSB0aGUgc2FtZSwgYW5kIHRoZSBkYXRhIGNvbnRhaW5lZCAKIHdpdGhpbiBib3RoIG9iamVjdHMgYXJlIGNvbnNpZGVyZWQgZXF1YWwuPC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJ3YXJuKG9yZy5hcGFjaGUueHBhdGguWFBhdGhDb250ZXh0LCBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuT2JqZWN0W10pIj48IS0tIC0tPjwvQT48SDM+DQp3YXJuPC9IMz4NCjxQUkU+DQpwdWJsaWMgdm9pZCA8Qj53YXJuPC9CPig8QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL1hQYXRoQ29udGV4dC5odG1sIj5YUGF0aENvbnRleHQ8L0E+Jm5ic3A7eGN0eHQsCiAgICAgICAgICAgICAgICAgamF2YS5sYW5nLlN0cmluZyZuYnNwO21zZywKICAgICAgICAgICAgICAgICBqYXZhLmxhbmcuT2JqZWN0W10mbmJzcDthcmdzKQogICAgICAgICAgdGhyb3dzIDxBIEhSRUY9Ii4uLy4uLy4uL2phdmF4L3htbC90cmFuc2Zvcm0vVHJhbnNmb3JtZXJFeGNlcHRpb24uaHRtbCI+VHJhbnNmb3JtZXJFeGNlcHRpb248L0E+PC9QUkU+DQo8REw+DQo8REQ+V2FybiB0aGUgdXNlciBvZiBhbiBwcm9ibGVtLjxERD48REw+DQo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPnhjdHh0PC9DT0RFPiAtIFRoZSBYUGF0aCBydW50aW1lIGNvbnRleHQuPEREPjxDT0RFPm1zZzwvQ09ERT4gLSBBbiBlcnJvciBtc2drZXkgdGhhdCBjb3JyZXNwb25kcyB0byBvbmUgb2YgdGhlIGNvbnN0c3RhbnRzIGZvdW5kCiAgICAgICAgICAgIGluIDxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvcmVzL1hQQVRIRXJyb3JSZXNvdXJjZXMuaHRtbCI+PENPREU+WFBBVEhFcnJvclJlc291cmNlczwvQ09ERT48L0E+LCB3aGljaCBpcwogICAgICAgICAgICBhIGtleSBmb3IgYSBmb3JtYXQgc3RyaW5nLjxERD48Q09ERT5hcmdzPC9DT0RFPiAtIEFuIGFycmF5IG9mIGFyZ3VtZW50cyByZXByZXNlbnRlZCBpbiB0aGUgZm9ybWF0IHN0cmluZywgd2hpY2gKICAgICAgICAgICAgIG1heSBiZSBudWxsLjxEVD48Qj5UaHJvd3M6PC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi9qYXZheC94bWwvdHJhbnNmb3JtL1RyYW5zZm9ybWVyRXhjZXB0aW9uLmh0bWwiPlRyYW5zZm9ybWVyRXhjZXB0aW9uPC9BPiAtIGlmIHRoZSBjdXJyZW50IEVycm9yTGlzdG9uZXIgZGV0ZXJtaW5lcyB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBhbiBleGNlcHRpb24uPEREPjxBIEhSRUY9Ii4uLy4uLy4uL2phdmF4L3htbC90cmFuc2Zvcm0vVHJhbnNmb3JtZXJFeGNlcHRpb24uaHRtbCI+VHJhbnNmb3JtZXJFeGNlcHRpb248L0E+IC0gJm5ic3A7PC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJhc3NlcnRpb24oYm9vbGVhbiwgamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4NCmFzc2VydGlvbjwvSDM+DQo8UFJFPg0KcHVibGljIHZvaWQgPEI+YXNzZXJ0aW9uPC9CPihib29sZWFuJm5ic3A7YiwKICAgICAgICAgICAgICAgICAgICAgIGphdmEubGFuZy5TdHJpbmcmbmJzcDttc2cpPC9QUkU+DQo8REw+DQo8REQ+VGVsbCB0aGUgdXNlciBvZiBhbiBhc3NlcnRpb24gZXJyb3IsIGFuZCBwcm9iYWJseSB0aHJvdyBhbgogZXhjZXB0aW9uLjxERD48REw+DQo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmI8L0NPREU+IC0gSWYgZmFsc2UsIGEgcnVudGltZSBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24uPEREPjxDT0RFPm1zZzwvQ09ERT4gLSBUaGUgYXNzZXJ0aW9uIG1lc3NhZ2UsIHdoaWNoIHNob3VsZCBiZSBpbmZvcm1hdGl2ZS48RFQ+PEI+VGhyb3dzOjwvQj48REQ+amF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24gLSBpZiB0aGUgYiBhcmd1bWVudCBpcyBmYWxzZS48REQ+PEEgSFJFRj0iLi4vLi4vLi4vamF2YXgveG1sL3RyYW5zZm9ybS9UcmFuc2Zvcm1lckV4Y2VwdGlvbi5odG1sIj5UcmFuc2Zvcm1lckV4Y2VwdGlvbjwvQT4gLSAmbmJzcDs8L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9ImVycm9yKG9yZy5hcGFjaGUueHBhdGguWFBhdGhDb250ZXh0LCBqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuT2JqZWN0W10pIj48IS0tIC0tPjwvQT48SDM+DQplcnJvcjwvSDM+DQo8UFJFPg0KcHVibGljIHZvaWQgPEI+ZXJyb3I8L0I+KDxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvWFBhdGhDb250ZXh0Lmh0bWwiPlhQYXRoQ29udGV4dDwvQT4mbmJzcDt4Y3R4dCwKICAgICAgICAgICAgICAgICAgamF2YS5sYW5nLlN0cmluZyZuYnNwO21zZywKICAgICAgICAgICAgICAgICAgamF2YS5sYW5nLk9iamVjdFtdJm5ic3A7YXJncykKICAgICAgICAgICB0aHJvd3MgPEEgSFJFRj0iLi4vLi4vLi4vamF2YXgveG1sL3RyYW5zZm9ybS9UcmFuc2Zvcm1lckV4Y2VwdGlvbi5odG1sIj5UcmFuc2Zvcm1lckV4Y2VwdGlvbjwvQT48L1BSRT4NCjxETD4NCjxERD5UZWxsIHRoZSB1c2VyIG9mIGFuIGVycm9yLCBhbmQgcHJvYmFibHkgdGhyb3cgYW4KIGV4Y2VwdGlvbi48REQ+PERMPg0KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT54Y3R4dDwvQ09ERT4gLSBUaGUgWFBhdGggcnVudGltZSBjb250ZXh0LjxERD48Q09ERT5tc2c8L0NPREU+IC0gQW4gZXJyb3IgbXNna2V5IHRoYXQgY29ycmVzcG9uZHMgdG8gb25lIG9mIHRoZSBjb25zdGFudHMgZm91bmQKICAgICAgICAgICAgaW4gPEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9yZXMvWFBBVEhFcnJvclJlc291cmNlcy5odG1sIj48Q09ERT5YUEFUSEVycm9yUmVzb3VyY2VzPC9DT0RFPjwvQT4sIHdoaWNoIGlzCiAgICAgICAgICAgIGEga2V5IGZvciBhIGZvcm1hdCBzdHJpbmcuPEREPjxDT0RFPmFyZ3M8L0NPREU+IC0gQW4gYXJyYXkgb2YgYXJndW1lbnRzIHJlcHJlc2VudGVkIGluIHRoZSBmb3JtYXQgc3RyaW5nLCB3aGljaAogICAgICAgICAgICAgbWF5IGJlIG51bGwuPERUPjxCPlRocm93czo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uL2phdmF4L3htbC90cmFuc2Zvcm0vVHJhbnNmb3JtZXJFeGNlcHRpb24uaHRtbCI+VHJhbnNmb3JtZXJFeGNlcHRpb248L0E+IC0gaWYgdGhlIGN1cnJlbnQgRXJyb3JMaXN0b25lciBkZXRlcm1pbmVzIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IGFuIGV4Y2VwdGlvbi48REQ+PEEgSFJFRj0iLi4vLi4vLi4vamF2YXgveG1sL3RyYW5zZm9ybS9UcmFuc2Zvcm1lckV4Y2VwdGlvbi5odG1sIj5UcmFuc2Zvcm1lckV4Y2VwdGlvbjwvQT4gLSAmbmJzcDs8L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9ImdldEV4cHJlc3Npb25Pd25lcigpIj48IS0tIC0tPjwvQT48SDM+DQpnZXRFeHByZXNzaW9uT3duZXI8L0gzPg0KPFBSRT4NCnB1YmxpYyA8QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb25Ob2RlLmh0bWwiPkV4cHJlc3Npb25Ob2RlPC9BPiA8Qj5nZXRFeHByZXNzaW9uT3duZXI8L0I+KCk8L1BSRT4NCjxETD4NCjxERD5HZXQgdGhlIGZpcnN0IG5vbi1FeHByZXNzaW9uIHBhcmVudCBvZiB0aGlzIG5vZGUuPEREPjxETD4NCjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+bnVsbCBvciBmaXJzdCBhbmNlc3RvciB0aGF0IGlzIG5vdCBhbiBFeHByZXNzaW9uLjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iZXhwclNldFBhcmVudChvcmcuYXBhY2hlLnhwYXRoLkV4cHJlc3Npb25Ob2RlKSI+PCEtLSAtLT48L0E+PEgzPg0KZXhwclNldFBhcmVudDwvSDM+DQo8UFJFPg0KcHVibGljIHZvaWQgPEI+ZXhwclNldFBhcmVudDwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uTm9kZS5odG1sIj5FeHByZXNzaW9uTm9kZTwvQT4mbmJzcDtuKTwvUFJFPg0KPERMPg0KPEREPlRoaXMgcGFpciBvZiBtZXRob2RzIGFyZSB1c2VkIHRvIGluZm9ybSB0aGUgbm9kZSBvZiBpdHMKcGFyZW50LjxERD48REw+DQo8RFQ+PEI+U3BlY2lmaWVkIGJ5OiA8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvRXhwcmVzc2lvbk5vZGUuaHRtbCNleHByU2V0UGFyZW50KG9yZy5hcGFjaGUueHBhdGguRXhwcmVzc2lvbk5vZGUpIj5leHByU2V0UGFyZW50PC9BPiBpbiBpbnRlcmZhY2UgPEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uTm9kZS5odG1sIj5FeHByZXNzaW9uTm9kZTwvQT48L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9ImV4cHJHZXRQYXJlbnQoKSI+PCEtLSAtLT48L0E+PEgzPg0KZXhwckdldFBhcmVudDwvSDM+DQo8UFJFPg0KcHVibGljIDxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvRXhwcmVzc2lvbk5vZGUuaHRtbCI+RXhwcmVzc2lvbk5vZGU8L0E+IDxCPmV4cHJHZXRQYXJlbnQ8L0I+KCk8L1BSRT4NCjxETD4NCjxERD48REw+DQo8RFQ+PEI+U3BlY2lmaWVkIGJ5OiA8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvRXhwcmVzc2lvbk5vZGUuaHRtbCNleHByR2V0UGFyZW50KCkiPmV4cHJHZXRQYXJlbnQ8L0E+IGluIGludGVyZmFjZSA8QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb25Ob2RlLmh0bWwiPkV4cHJlc3Npb25Ob2RlPC9BPjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iZXhwckFkZENoaWxkKG9yZy5hcGFjaGUueHBhdGguRXhwcmVzc2lvbk5vZGUsIGludCkiPjwhLS0gLS0+PC9BPjxIMz4NCmV4cHJBZGRDaGlsZDwvSDM+DQo8UFJFPg0KcHVibGljIHZvaWQgPEI+ZXhwckFkZENoaWxkPC9CPig8QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb25Ob2RlLmh0bWwiPkV4cHJlc3Npb25Ob2RlPC9BPiZuYnNwO24sCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmbmJzcDtpKTwvUFJFPg0KPERMPg0KPEREPlRoaXMgbWV0aG9kIHRlbGxzIHRoZSBub2RlIHRvIGFkZCBpdHMgYXJndW1lbnQgdG8gdGhlIG5vZGUncwpsaXN0IG9mIGNoaWxkcmVuLjxERD48REw+DQo8RFQ+PEI+U3BlY2lmaWVkIGJ5OiA8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvRXhwcmVzc2lvbk5vZGUuaHRtbCNleHByQWRkQ2hpbGQob3JnLmFwYWNoZS54cGF0aC5FeHByZXNzaW9uTm9kZSwgaW50KSI+ZXhwckFkZENoaWxkPC9BPiBpbiBpbnRlcmZhY2UgPEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9FeHByZXNzaW9uTm9kZS5odG1sIj5FeHByZXNzaW9uTm9kZTwvQT48L0RMPg0KPC9ERD4NCjwvREw+DQo8SFI+DQoNCjxBIE5BTUU9ImV4cHJHZXRDaGlsZChpbnQpIj48IS0tIC0tPjwvQT48SDM+DQpleHByR2V0Q2hpbGQ8L0gzPg0KPFBSRT4NCnB1YmxpYyA8QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb25Ob2RlLmh0bWwiPkV4cHJlc3Npb25Ob2RlPC9BPiA8Qj5leHByR2V0Q2hpbGQ8L0I+KGludCZuYnNwO2kpPC9QUkU+DQo8REw+DQo8REQ+VGhpcyBtZXRob2QgcmV0dXJucyBhIGNoaWxkIG5vZGUuICBUaGUgY2hpbGRyZW4gYXJlIG51bWJlcmVkCmZyb20gemVybywgbGVmdCB0byByaWdodC48REQ+PERMPg0KPERUPjxCPlNwZWNpZmllZCBieTogPC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb25Ob2RlLmh0bWwjZXhwckdldENoaWxkKGludCkiPmV4cHJHZXRDaGlsZDwvQT4gaW4gaW50ZXJmYWNlIDxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvRXhwcmVzc2lvbk5vZGUuaHRtbCI+RXhwcmVzc2lvbk5vZGU8L0E+PC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJleHByR2V0TnVtQ2hpbGRyZW4oKSI+PCEtLSAtLT48L0E+PEgzPg0KZXhwckdldE51bUNoaWxkcmVuPC9IMz4NCjxQUkU+DQpwdWJsaWMgaW50IDxCPmV4cHJHZXROdW1DaGlsZHJlbjwvQj4oKTwvUFJFPg0KPERMPg0KPEREPlJldHVybiB0aGUgbnVtYmVyIG9mIGNoaWxkcmVuIHRoZSBub2RlIGhhcy48REQ+PERMPg0KPERUPjxCPlNwZWNpZmllZCBieTogPC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb25Ob2RlLmh0bWwjZXhwckdldE51bUNoaWxkcmVuKCkiPmV4cHJHZXROdW1DaGlsZHJlbjwvQT4gaW4gaW50ZXJmYWNlIDxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvRXhwcmVzc2lvbk5vZGUuaHRtbCI+RXhwcmVzc2lvbk5vZGU8L0E+PC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJnZXRQdWJsaWNJZCgpIj48IS0tIC0tPjwvQT48SDM+DQpnZXRQdWJsaWNJZDwvSDM+DQo8UFJFPg0KcHVibGljIGphdmEubGFuZy5TdHJpbmcgPEI+Z2V0UHVibGljSWQ8L0I+KCk8L1BSRT4NCjxETD4NCjxERD5SZXR1cm4gdGhlIHB1YmxpYyBpZGVudGlmaWVyIGZvciB0aGUgY3VycmVudCBkb2N1bWVudCBldmVudC4KCiA8cD5UaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBwdWJsaWMgaWRlbnRpZmllciBvZiB0aGUgZG9jdW1lbnQKIGVudGl0eSBvciBvZiB0aGUgZXh0ZXJuYWwgcGFyc2VkIGVudGl0eSBpbiB3aGljaCB0aGUgbWFya3VwIHRoYXQKIHRyaWdnZXJlZCB0aGUgZXZlbnQgYXBwZWFycy48L3A+PEREPjxETD4NCjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+QSBzdHJpbmcgY29udGFpbmluZyB0aGUgcHVibGljIGlkZW50aWZpZXIsIG9yCiAgICAgICAgIG51bGwgaWYgbm9uZSBpcyBhdmFpbGFibGUuPERUPjxCPlNlZSBBbHNvOiA8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvRXhwcmVzc2lvbi5odG1sI2dldFN5c3RlbUlkKCkiPjxDT0RFPmdldFN5c3RlbUlkKCk8L0NPREU+PC9BPjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iZ2V0U3lzdGVtSWQoKSI+PCEtLSAtLT48L0E+PEgzPg0KZ2V0U3lzdGVtSWQ8L0gzPg0KPFBSRT4NCnB1YmxpYyBqYXZhLmxhbmcuU3RyaW5nIDxCPmdldFN5c3RlbUlkPC9CPigpPC9QUkU+DQo8REw+DQo8REQ+UmV0dXJuIHRoZSBzeXN0ZW0gaWRlbnRpZmllciBmb3IgdGhlIGN1cnJlbnQgZG9jdW1lbnQgZXZlbnQuCgogPHA+VGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgc3lzdGVtIGlkZW50aWZpZXIgb2YgdGhlIGRvY3VtZW50CiBlbnRpdHkgb3Igb2YgdGhlIGV4dGVybmFsIHBhcnNlZCBlbnRpdHkgaW4gd2hpY2ggdGhlIG1hcmt1cCB0aGF0CiB0cmlnZ2VyZWQgdGhlIGV2ZW50IGFwcGVhcnMuPC9wPgoKIDxwPklmIHRoZSBzeXN0ZW0gaWRlbnRpZmllciBpcyBhIFVSTCwgdGhlIHBhcnNlciBtdXN0IHJlc29sdmUgaXQKIGZ1bGx5IGJlZm9yZSBwYXNzaW5nIGl0IHRvIHRoZSBhcHBsaWNhdGlvbi48L3A+PEREPjxETD4NCjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+QSBzdHJpbmcgY29udGFpbmluZyB0aGUgc3lzdGVtIGlkZW50aWZpZXIsIG9yIG51bGwKICAgICAgICAgaWYgbm9uZSBpcyBhdmFpbGFibGUuPERUPjxCPlNlZSBBbHNvOiA8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvRXhwcmVzc2lvbi5odG1sI2dldFB1YmxpY0lkKCkiPjxDT0RFPmdldFB1YmxpY0lkKCk8L0NPREU+PC9BPjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iZ2V0TGluZU51bWJlcigpIj48IS0tIC0tPjwvQT48SDM+DQpnZXRMaW5lTnVtYmVyPC9IMz4NCjxQUkU+DQpwdWJsaWMgaW50IDxCPmdldExpbmVOdW1iZXI8L0I+KCk8L1BSRT4NCjxETD4NCjxERD5SZXR1cm4gdGhlIGxpbmUgbnVtYmVyIHdoZXJlIHRoZSBjdXJyZW50IGRvY3VtZW50IGV2ZW50IGVuZHMuCgogPHA+PHN0cm9uZz5XYXJuaW5nOjwvc3Ryb25nPiBUaGUgcmV0dXJuIHZhbHVlIGZyb20gdGhlIG1ldGhvZAogaXMgaW50ZW5kZWQgb25seSBhcyBhbiBhcHByb3hpbWF0aW9uIGZvciB0aGUgc2FrZSBvZiBlcnJvcgogcmVwb3J0aW5nOyBpdCBpcyBub3QgaW50ZW5kZWQgdG8gcHJvdmlkZSBzdWZmaWNpZW50IGluZm9ybWF0aW9uCiB0byBlZGl0IHRoZSBjaGFyYWN0ZXIgY29udGVudCBvZiB0aGUgb3JpZ2luYWwgWE1MIGRvY3VtZW50LjwvcD4KCiA8cD5UaGUgcmV0dXJuIHZhbHVlIGlzIGFuIGFwcHJveGltYXRpb24gb2YgdGhlIGxpbmUgbnVtYmVyCiBpbiB0aGUgZG9jdW1lbnQgZW50aXR5IG9yIGV4dGVybmFsIHBhcnNlZCBlbnRpdHkgd2hlcmUgdGhlCiBtYXJrdXAgdGhhdCB0cmlnZ2VyZWQgdGhlIGV2ZW50IGFwcGVhcnMuPC9wPjxERD48REw+DQo8RFQ+PEI+UmV0dXJuczo8L0I+PEREPlRoZSBsaW5lIG51bWJlciwgb3IgLTEgaWYgbm9uZSBpcyBhdmFpbGFibGUuPERUPjxCPlNlZSBBbHNvOiA8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uL29yZy9hcGFjaGUveHBhdGgvRXhwcmVzc2lvbi5odG1sI2dldENvbHVtbk51bWJlcigpIj48Q09ERT5nZXRDb2x1bW5OdW1iZXIoKTwvQ09ERT48L0E+PC9ETD4NCjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8QSBOQU1FPSJnZXRDb2x1bW5OdW1iZXIoKSI+PCEtLSAtLT48L0E+PEgzPg0KZ2V0Q29sdW1uTnVtYmVyPC9IMz4NCjxQUkU+DQpwdWJsaWMgaW50IDxCPmdldENvbHVtbk51bWJlcjwvQj4oKTwvUFJFPg0KPERMPg0KPEREPlJldHVybiB0aGUgY2hhcmFjdGVyIHBvc2l0aW9uIHdoZXJlIHRoZSBjdXJyZW50IGRvY3VtZW50IGV2ZW50IGVuZHMuCgogPHA+PHN0cm9uZz5XYXJuaW5nOjwvc3Ryb25nPiBUaGUgcmV0dXJuIHZhbHVlIGZyb20gdGhlIG1ldGhvZAogaXMgaW50ZW5kZWQgb25seSBhcyBhbiBhcHByb3hpbWF0aW9uIGZvciB0aGUgc2FrZSBvZiBlcnJvcgogcmVwb3J0aW5nOyBpdCBpcyBub3QgaW50ZW5kZWQgdG8gcHJvdmlkZSBzdWZmaWNpZW50IGluZm9ybWF0aW9uCiB0byBlZGl0IHRoZSBjaGFyYWN0ZXIgY29udGVudCBvZiB0aGUgb3JpZ2luYWwgWE1MIGRvY3VtZW50LjwvcD4KCiA8cD5UaGUgcmV0dXJuIHZhbHVlIGlzIGFuIGFwcHJveGltYXRpb24gb2YgdGhlIGNvbHVtbiBudW1iZXIKIGluIHRoZSBkb2N1bWVudCBlbnRpdHkgb3IgZXh0ZXJuYWwgcGFyc2VkIGVudGl0eSB3aGVyZSB0aGUKIG1hcmt1cCB0aGF0IHRyaWdnZXJlZCB0aGUgZXZlbnQgYXBwZWFycy48L3A+PEREPjxETD4NCjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+VGhlIGNvbHVtbiBudW1iZXIsIG9yIC0xIGlmIG5vbmUgaXMgYXZhaWxhYmxlLjxEVD48Qj5TZWUgQWxzbzogPC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0V4cHJlc3Npb24uaHRtbCNnZXRMaW5lTnVtYmVyKCkiPjxDT0RFPmdldExpbmVOdW1iZXIoKTwvQ09ERT48L0E+PC9ETD4NCjwvREQ+DQo8L0RMPg0KPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPg0KPEhSPg0KDQo8IS0tID09PT09PT09PT0gU1RBUlQgT0YgTkFWQkFSID09PT09PT09PT0gLS0+DQo8QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCI+DQo8VFI+DQo8VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+DQo8QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIj4NCiAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvRXhwcmVzc2lvbi5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXRyZWUuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5UcmVlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vaW5kZXgtYWxsLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5IZWxwPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPC9UUj4NCjwvVEFCTEU+DQo8L1REPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+DQo8L0VNPg0KPC9URD4NCjwvVFI+DQoNCjxUUj4NCjxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+DQombmJzcDs8QSBIUkVGPSIuLi8uLi8uLi9vcmcvYXBhY2hlL3hwYXRoL0NhY2hlZFhQYXRoQVBJLmh0bWwiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOw0KJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vb3JnL2FwYWNoZS94cGF0aC9Ob2RlU2V0Lmh0bWwiPjxCPk5FWFQgQ0xBU1M8L0I+PC9BPjwvRk9OVD48L1REPg0KPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4NCiAgPEEgSFJFRj0iLi4vLi4vLi4vaW5kZXguaHRtbCIgVEFSR0VUPSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7DQombmJzcDs8QSBIUkVGPSJFeHByZXNzaW9uLmh0bWwiIFRBUkdFVD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT48L0ZPTlQ+PC9URD4NCjwvVFI+DQo8VFI+DQo8VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPg0KICBTVU1NQVJZOiAmbmJzcDtJTk5FUiZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjY29uc3RydWN0b3Jfc3VtbWFyeSI+Q09OU1RSPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4NCjxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+DQpERVRBSUw6ICZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNjb25zdHJ1Y3Rvcl9kZXRhaWwiPkNPTlNUUjwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4NCjwvVFI+DQo8L1RBQkxFPg0KPCEtLSA9PT09PT09PT09PSBFTkQgT0YgTkFWQkFSID09PT09PT09PT09IC0tPg0KDQo8SFI+DQpDb3B5cmlnaHQgqSAyMDA2IEFwYWNoZSBYTUwgUHJvamVjdC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCjwvQk9EWT4NCjwvSFRNTD4NCg==