PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwvL0VOIiJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwL2xvb3NlLmR0ZCI+CjwhLS1OZXdQYWdlLS0+CjxIVE1MPgo8SEVBRD4KPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyBvbiBGcmkgQXVnIDIyIDAzOjQzOjU4IEVEVCAyMDAzIC0tPgo8VElUTEU+ClN0cnV0c1ZhbGlkYXRvciAoQXBhY2hlIFN0cnV0cyBBUEkgRG9jdW1lbnRhdGlvbikKPC9USVRMRT4KPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Im9yZy5hcGFjaGUuc3RydXRzLnV0aWwuU3RydXRzVmFsaWRhdG9yLFN0cnV0c1ZhbGlkYXRvciBjbGFzcyI+CjxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KPC9IRUFEPgo8U0NSSVBUPgpmdW5jdGlvbiBhc2QoKQp7CnBhcmVudC5kb2N1bWVudC50aXRsZT0iU3RydXRzVmFsaWRhdG9yIChBcGFjaGUgU3RydXRzIEFQSSBEb2N1bWVudGF0aW9uKSI7Cn0KPC9TQ1JJUFQ+CjxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9ImFzZCgpOyI+Cgo8IS0tID09PT09PT09PT0gU1RBUlQgT0YgTkFWQkFSID09PT09PT09PT0gLS0+CjxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIj4KPFRSPgo8VEQgQ09MU1BBTj0zIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+CjxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiPgogIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+CiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+CiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvU3RydXRzVmFsaWRhdG9yLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+CiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC1hbGwuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+CiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+CiAgPC9UUj4KPC9UQUJMRT4KPC9URD4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+CjwvRU0+CjwvVEQ+CjwvVFI+Cgo8VFI+CjxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+CiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL3V0aWwvU2VydmxldENvbnRleHRXcml0ZXIuaHRtbCI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7CiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL3V0aWwvU3RydXRzVmFsaWRhdG9yVXRpbC5odG1sIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC5odG1sIiBUQVJHRVQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKJm5ic3A7PEEgSFJFRj0iU3RydXRzVmFsaWRhdG9yLmh0bWwiIFRBUkdFVD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwombmJzcDsKPFNDUklQVD4KICA8IS0tCiAgaWYod2luZG93PT10b3ApIHsKICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIiBUQVJHRVQ9IiI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwogIH0KICAvLy0tPgo8L1NDUklQVD4KPE5PU0NSSVBUPgo8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCIgVEFSR0VUPSIiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KPC9OT1NDUklQVD4KPC9GT05UPjwvVEQ+CjwvVFI+CjxUUj4KPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjZmllbGRfc3VtbWFyeSI+RklFTEQ8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNjb25zdHJ1Y3Rvcl9zdW1tYXJ5Ij5DT05TVFI8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2Rfc3VtbWFyeSI+TUVUSE9EPC9BPjwvRk9OVD48L1REPgo8VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgpERVRBSUw6Jm5ic3A7PEEgSFJFRj0iI2ZpZWxkX2RldGFpbCI+RklFTEQ8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNjb25zdHJ1Y3Rvcl9kZXRhaWwiPkNPTlNUUjwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KPC9UUj4KPC9UQUJMRT4KPCEtLSA9PT09PT09PT09PSBFTkQgT0YgTkFWQkFSID09PT09PT09PT09IC0tPgoKPEhSPgo8IS0tID09PT09PT09IFNUQVJUIE9GIENMQVNTIERBVEEgPT09PT09PT0gLS0+CjxIMj4KPEZPTlQgU0laRT0iLTEiPgpvcmcuYXBhY2hlLnN0cnV0cy51dGlsPC9GT05UPgo8QlI+CkNsYXNzIFN0cnV0c1ZhbGlkYXRvcjwvSDI+CjxQUkU+CmphdmEubGFuZy5PYmplY3QKICB8CiAgKy0tPEI+b3JnLmFwYWNoZS5zdHJ1dHMudXRpbC5TdHJ1dHNWYWxpZGF0b3I8L0I+CjwvUFJFPgo8REw+CjxEVD48Qj5BbGwgSW1wbGVtZW50ZWQgSW50ZXJmYWNlczo8L0I+IDxERD5qYXZhLmlvLlNlcmlhbGl6YWJsZTwvREQ+CjwvREw+CjxIUj4KPEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+QXMgb2YgU3RydXRzIDEuMSwgcmVwbGFjZWQgYnkgICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvdmFsaWRhdG9yL0ZpZWxkQ2hlY2tzLmh0bWwiPjxDT0RFPkZpZWxkQ2hlY2tzPC9DT0RFPjwvQT48L0k+CjxQPgo8REw+CjxEVD5wdWJsaWMgY2xhc3MgPEI+U3RydXRzVmFsaWRhdG9yPC9CPjxEVD5leHRlbmRzIGphdmEubGFuZy5PYmplY3Q8RFQ+aW1wbGVtZW50cyBqYXZhLmlvLlNlcmlhbGl6YWJsZTwvREw+Cgo8UD4KPHA+CgogIFRoaXMgY2xhc3MgY29udGFpbnMgdGhlIGRlZmF1bHQgdmFsaWRhdGlvbnMgdGhhdCBhcmUgdXNlZCBpbiB0aGUgdmFsaWRhdG9yLXJ1bGVzLnhtbAogIGZpbGUuPC9wPgoKIEluIGdlbmVyYWwgcGFzc2luIGluIGEgbnVsbCBvciBibGFuayB3aWxsIHJldHVybiBhIG51bGwgT2JqZWN0IG9yIGEgZmFsc2UKIGJvb2xlYW4uIEhvd2V2ZXIsIG51bGxzIGFuZCBibGFua3MgZG8gbm90IHJlc3VsdCBpbiBhbiBlcnJvciBiZWluZyBhZGRlZCB0byB0aGUKIGVycm9ycy4KPFA+Cgo8UD4KPERMPgo8RFQ+PEI+U2luY2U6PC9CPjwvRFQ+CiAgPEREPlN0cnV0cyAxLjE8L0REPgo8RFQ+PEI+QXV0aG9yOjwvQj48L0RUPgogIDxERD5EYXZpZCBXaW50ZXJmZWxkdCwgSmFtZXMgVHVybmVyPC9ERD4KPERUPjxCPlNlZSBBbHNvOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vc2VyaWFsaXplZC1mb3JtLmh0bWwiIFRBUkdFVD0ib3JnLmFwYWNoZS5zdHJ1dHMudXRpbC5TdHJ1dHNWYWxpZGF0b3IiPlNlcmlhbGl6ZWQgRm9ybTwvQT48L0RMPgo8SFI+Cgo8UD4KPCEtLSA9PT09PT09PSBORVNURUQgQ0xBU1MgU1VNTUFSWSA9PT09PT09PSAtLT4KCgo8IS0tID09PT09PT09PT09IEZJRUxEIFNVTU1BUlkgPT09PT09PT09PT0gLS0+Cgo8QSBOQU1FPSJmaWVsZF9zdW1tYXJ5Ij48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBXSURUSD0iMTAwJSI+CjxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgo8VEQgQ09MU1BBTj0yPjxGT05UIFNJWkU9IisyIj4KPEI+RmllbGQgU3VtbWFyeTwvQj48L0ZPTlQ+PC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KPENPREU+c3RhdGljJm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL3V0aWwvU3RydXRzVmFsaWRhdG9yLmh0bWwjRklFTERfVEVTVF9FUVVBTCI+RklFTERfVEVTVF9FUVVBTDwvQT48L0I+PC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDsmbmJzcDs8L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT5zdGF0aWMmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9TdHJ1dHNWYWxpZGF0b3IuaHRtbCNGSUVMRF9URVNUX05PVE5VTEwiPkZJRUxEX1RFU1RfTk9UTlVMTDwvQT48L0I+PC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDsmbmJzcDs8L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT5zdGF0aWMmbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9TdHJ1dHNWYWxpZGF0b3IuaHRtbCNGSUVMRF9URVNUX05VTEwiPkZJRUxEX1RFU1RfTlVMTDwvQT48L0I+PC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDtDb21tb25zIExvZ2dpbmcgaW5zdGFuY2UuPC9URD4KPC9UUj4KPC9UQUJMRT4KJm5ic3A7CjwhLS0gPT09PT09PT0gQ09OU1RSVUNUT1IgU1VNTUFSWSA9PT09PT09PSAtLT4KCjxBIE5BTUU9ImNvbnN0cnVjdG9yX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIxIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFdJRFRIPSIxMDAlIj4KPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+CjxURCBDT0xTUEFOPTI+PEZPTlQgU0laRT0iKzIiPgo8Qj5Db25zdHJ1Y3RvciBTdW1tYXJ5PC9CPjwvRk9OVD48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL3V0aWwvU3RydXRzVmFsaWRhdG9yLmh0bWwjU3RydXRzVmFsaWRhdG9yKCkiPlN0cnV0c1ZhbGlkYXRvcjwvQT48L0I+KCk8L0NPREU+Cgo8QlI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOyZuYnNwOzwvVEQ+CjwvVFI+CjwvVEFCTEU+CiZuYnNwOwo8IS0tID09PT09PT09PT0gTUVUSE9EIFNVTU1BUlkgPT09PT09PT09PT0gLS0+Cgo8QSBOQU1FPSJtZXRob2Rfc3VtbWFyeSI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjEiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgV0lEVEg9IjEwMCUiPgo8VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KPFREIENPTFNQQU49Mj48Rk9OVCBTSVpFPSIrMiI+CjxCPk1ldGhvZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT5zdGF0aWMmbmJzcDtqYXZhLmxhbmcuQnl0ZTwvQ09ERT48L0ZPTlQ+PC9URD4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL3V0aWwvU3RydXRzVmFsaWRhdG9yLmh0bWwjdmFsaWRhdGVCeXRlKGphdmEubGFuZy5PYmplY3QsIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuVmFsaWRhdG9yQWN0aW9uLCBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLkZpZWxkLCBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uRXJyb3JzLCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSI+dmFsaWRhdGVCeXRlPC9BPjwvQj4oamF2YS5sYW5nLk9iamVjdCZuYnNwO2JlYW4sCiAgICAgICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLlZhbGlkYXRvckFjdGlvbiZuYnNwO3ZhLAogICAgICAgICAgICAgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5GaWVsZCZuYnNwO2ZpZWxkLAogICAgICAgICAgICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkVycm9ycy5odG1sIj5BY3Rpb25FcnJvcnM8L0E+Jm5ic3A7ZXJyb3JzLAogICAgICAgICAgICAgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCZuYnNwO3JlcXVlc3QpPC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDs8ST5BcyBvZiBTdHJ1dHMgMS4xLCByZXBsYWNlZCBieSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy92YWxpZGF0b3IvRmllbGRDaGVja3MuaHRtbCN2YWxpZGF0ZUJ5dGUoamF2YS5sYW5nLk9iamVjdCwgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5WYWxpZGF0b3JBY3Rpb24sIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuRmllbGQsIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25FcnJvcnMsIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QpIj48Q09ERT5GaWVsZENoZWNrcy52YWxpZGF0ZUJ5dGUoT2JqZWN0LFZhbGlkYXRvckFjdGlvbixGaWVsZCxBY3Rpb25FcnJvcnMsSHR0cFNlcnZsZXRSZXF1ZXN0KTwvQ09ERT48L0E+PC9JPjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPnN0YXRpYyZuYnNwO2phdmEubGFuZy5Mb25nPC9DT0RFPjwvRk9OVD48L1REPgo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9TdHJ1dHNWYWxpZGF0b3IuaHRtbCN2YWxpZGF0ZUNyZWRpdENhcmQoamF2YS5sYW5nLk9iamVjdCwgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5WYWxpZGF0b3JBY3Rpb24sIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuRmllbGQsIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25FcnJvcnMsIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QpIj52YWxpZGF0ZUNyZWRpdENhcmQ8L0E+PC9CPihqYXZhLmxhbmcuT2JqZWN0Jm5ic3A7YmVhbiwKICAgICAgICAgICAgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuVmFsaWRhdG9yQWN0aW9uJm5ic3A7dmEsCiAgICAgICAgICAgICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLkZpZWxkJm5ic3A7ZmllbGQsCiAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRXJyb3JzLmh0bWwiPkFjdGlvbkVycm9yczwvQT4mbmJzcDtlcnJvcnMsCiAgICAgICAgICAgICAgICAgICBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0Jm5ic3A7cmVxdWVzdCk8L0NPREU+Cgo8QlI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOzxJPkFzIG9mIFN0cnV0cyAxLjEsIHJlcGxhY2VkIGJ5IDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL3ZhbGlkYXRvci9GaWVsZENoZWNrcy5odG1sI3ZhbGlkYXRlQ3JlZGl0Q2FyZChqYXZhLmxhbmcuT2JqZWN0LCBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLlZhbGlkYXRvckFjdGlvbiwgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5GaWVsZCwgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbkVycm9ycywgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCkiPjxDT0RFPkZpZWxkQ2hlY2tzLnZhbGlkYXRlQ3JlZGl0Q2FyZChPYmplY3QsVmFsaWRhdG9yQWN0aW9uLEZpZWxkLEFjdGlvbkVycm9ycyxIdHRwU2VydmxldFJlcXVlc3QpPC9DT0RFPjwvQT4KCiAgVHJhbnNsYXRlZCB0byBKYXZhIGJ5IFRlZCBIdXN0ZWQgKDxhIGhyZWY9Im1haWx0bzpodXN0ZWRAYXBhY2hlLm9yZyI+aHVzdGVkQGFwYWNoZS5vcmcKICA8L2E+KS48YnI+CiAgJm5ic3A7Jm5ic3A7Jm5ic3A7IFJlZmVyZW5jZSBTZWFuIE0uIEJ1cmtlJ3Mgc2NyaXB0IGF0IGh0dHA6Ly93d3cubGluZy5ud3UuZWR1L35zYnVya2UvcHViL2x1aG5fbGliLnBsCiAgPC9wPjwvST48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT5zdGF0aWMmbmJzcDtqYXZhLnV0aWwuRGF0ZTwvQ09ERT48L0ZPTlQ+PC9URD4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL3V0aWwvU3RydXRzVmFsaWRhdG9yLmh0bWwjdmFsaWRhdGVEYXRlKGphdmEubGFuZy5PYmplY3QsIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuVmFsaWRhdG9yQWN0aW9uLCBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLkZpZWxkLCBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uRXJyb3JzLCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSI+dmFsaWRhdGVEYXRlPC9BPjwvQj4oamF2YS5sYW5nLk9iamVjdCZuYnNwO2JlYW4sCiAgICAgICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLlZhbGlkYXRvckFjdGlvbiZuYnNwO3ZhLAogICAgICAgICAgICAgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5GaWVsZCZuYnNwO2ZpZWxkLAogICAgICAgICAgICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkVycm9ycy5odG1sIj5BY3Rpb25FcnJvcnM8L0E+Jm5ic3A7ZXJyb3JzLAogICAgICAgICAgICAgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCZuYnNwO3JlcXVlc3QpPC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDs8ST5BcyBvZiBTdHJ1dHMgMS4xLCByZXBsYWNlZCBieSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy92YWxpZGF0b3IvRmllbGRDaGVja3MuaHRtbCN2YWxpZGF0ZURhdGUoamF2YS5sYW5nLk9iamVjdCwgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5WYWxpZGF0b3JBY3Rpb24sIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuRmllbGQsIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25FcnJvcnMsIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QpIj48Q09ERT5GaWVsZENoZWNrcy52YWxpZGF0ZURhdGUoT2JqZWN0LFZhbGlkYXRvckFjdGlvbixGaWVsZCxBY3Rpb25FcnJvcnMsSHR0cFNlcnZsZXRSZXF1ZXN0KTwvQ09ERT48L0E+PC9JPjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPnN0YXRpYyZuYnNwO2phdmEubGFuZy5Eb3VibGU8L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy91dGlsL1N0cnV0c1ZhbGlkYXRvci5odG1sI3ZhbGlkYXRlRG91YmxlKGphdmEubGFuZy5PYmplY3QsIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuVmFsaWRhdG9yQWN0aW9uLCBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLkZpZWxkLCBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uRXJyb3JzLCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSI+dmFsaWRhdGVEb3VibGU8L0E+PC9CPihqYXZhLmxhbmcuT2JqZWN0Jm5ic3A7YmVhbiwKICAgICAgICAgICAgICAgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5WYWxpZGF0b3JBY3Rpb24mbmJzcDt2YSwKICAgICAgICAgICAgICAgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5GaWVsZCZuYnNwO2ZpZWxkLAogICAgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRXJyb3JzLmh0bWwiPkFjdGlvbkVycm9yczwvQT4mbmJzcDtlcnJvcnMsCiAgICAgICAgICAgICAgIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QmbmJzcDtyZXF1ZXN0KTwvQ09ERT4KCjxCUj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+QXMgb2YgU3RydXRzIDEuMSwgcmVwbGFjZWQgYnkgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvdmFsaWRhdG9yL0ZpZWxkQ2hlY2tzLmh0bWwjdmFsaWRhdGVEb3VibGUoamF2YS5sYW5nLk9iamVjdCwgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5WYWxpZGF0b3JBY3Rpb24sIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuRmllbGQsIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25FcnJvcnMsIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QpIj48Q09ERT5GaWVsZENoZWNrcy52YWxpZGF0ZURvdWJsZShPYmplY3QsVmFsaWRhdG9yQWN0aW9uLEZpZWxkLEFjdGlvbkVycm9ycyxIdHRwU2VydmxldFJlcXVlc3QpPC9DT0RFPjwvQT48L0k+PC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KPENPREU+c3RhdGljJm5ic3A7Ym9vbGVhbjwvQ09ERT48L0ZPTlQ+PC9URD4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL3V0aWwvU3RydXRzVmFsaWRhdG9yLmh0bWwjdmFsaWRhdGVFbWFpbChqYXZhLmxhbmcuT2JqZWN0LCBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLlZhbGlkYXRvckFjdGlvbiwgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5GaWVsZCwgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbkVycm9ycywgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCkiPnZhbGlkYXRlRW1haWw8L0E+PC9CPihqYXZhLmxhbmcuT2JqZWN0Jm5ic3A7YmVhbiwKICAgICAgICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLlZhbGlkYXRvckFjdGlvbiZuYnNwO3ZhLAogICAgICAgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuRmllbGQmbmJzcDtmaWVsZCwKICAgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRXJyb3JzLmh0bWwiPkFjdGlvbkVycm9yczwvQT4mbmJzcDtlcnJvcnMsCiAgICAgICAgICAgICAgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCZuYnNwO3JlcXVlc3QpPC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDs8ST5BcyBvZiBTdHJ1dHMgMS4xLCByZXBsYWNlZCBieSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy92YWxpZGF0b3IvRmllbGRDaGVja3MuaHRtbCN2YWxpZGF0ZUVtYWlsKGphdmEubGFuZy5PYmplY3QsIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuVmFsaWRhdG9yQWN0aW9uLCBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLkZpZWxkLCBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uRXJyb3JzLCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSI+PENPREU+RmllbGRDaGVja3MudmFsaWRhdGVFbWFpbChPYmplY3QsVmFsaWRhdG9yQWN0aW9uLEZpZWxkLEFjdGlvbkVycm9ycyxIdHRwU2VydmxldFJlcXVlc3QpPC9DT0RFPjwvQT4KCiAgQmFzZWQgb24gYSBzY3JpcHQgYnkgU2FuZGVlcCBWLiBUYW1oYW5rYXIgKHN0YW1oYW5rYXJAaG90bWFpbC5jb20pLCBodHRwOi8vamF2YXNjcmlwdC5pbnRlcm5ldC5jb20KICA8L3A+PC9JPjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPnN0YXRpYyZuYnNwO2phdmEubGFuZy5GbG9hdDwvQ09ERT48L0ZPTlQ+PC9URD4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL3V0aWwvU3RydXRzVmFsaWRhdG9yLmh0bWwjdmFsaWRhdGVGbG9hdChqYXZhLmxhbmcuT2JqZWN0LCBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLlZhbGlkYXRvckFjdGlvbiwgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5GaWVsZCwgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbkVycm9ycywgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCkiPnZhbGlkYXRlRmxvYXQ8L0E+PC9CPihqYXZhLmxhbmcuT2JqZWN0Jm5ic3A7YmVhbiwKICAgICAgICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLlZhbGlkYXRvckFjdGlvbiZuYnNwO3ZhLAogICAgICAgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuRmllbGQmbmJzcDtmaWVsZCwKICAgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRXJyb3JzLmh0bWwiPkFjdGlvbkVycm9yczwvQT4mbmJzcDtlcnJvcnMsCiAgICAgICAgICAgICAgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCZuYnNwO3JlcXVlc3QpPC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDs8ST5BcyBvZiBTdHJ1dHMgMS4xLCByZXBsYWNlZCBieSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy92YWxpZGF0b3IvRmllbGRDaGVja3MuaHRtbCN2YWxpZGF0ZUZsb2F0KGphdmEubGFuZy5PYmplY3QsIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuVmFsaWRhdG9yQWN0aW9uLCBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLkZpZWxkLCBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uRXJyb3JzLCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSI+PENPREU+RmllbGRDaGVja3MudmFsaWRhdGVGbG9hdChPYmplY3QsVmFsaWRhdG9yQWN0aW9uLEZpZWxkLEFjdGlvbkVycm9ycyxIdHRwU2VydmxldFJlcXVlc3QpPC9DT0RFPjwvQT48L0k+PC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KPENPREU+c3RhdGljJm5ic3A7amF2YS5sYW5nLkludGVnZXI8L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy91dGlsL1N0cnV0c1ZhbGlkYXRvci5odG1sI3ZhbGlkYXRlSW50ZWdlcihqYXZhLmxhbmcuT2JqZWN0LCBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLlZhbGlkYXRvckFjdGlvbiwgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5GaWVsZCwgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbkVycm9ycywgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCkiPnZhbGlkYXRlSW50ZWdlcjwvQT48L0I+KGphdmEubGFuZy5PYmplY3QmbmJzcDtiZWFuLAogICAgICAgICAgICAgICAgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5WYWxpZGF0b3JBY3Rpb24mbmJzcDt2YSwKICAgICAgICAgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuRmllbGQmbmJzcDtmaWVsZCwKICAgICAgICAgICAgICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25FcnJvcnMuaHRtbCI+QWN0aW9uRXJyb3JzPC9BPiZuYnNwO2Vycm9ycywKICAgICAgICAgICAgICAgIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QmbmJzcDtyZXF1ZXN0KTwvQ09ERT4KCjxCUj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+QXMgb2YgU3RydXRzIDEuMSwgcmVwbGFjZWQgYnkgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvdmFsaWRhdG9yL0ZpZWxkQ2hlY2tzLmh0bWwjdmFsaWRhdGVJbnRlZ2VyKGphdmEubGFuZy5PYmplY3QsIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuVmFsaWRhdG9yQWN0aW9uLCBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLkZpZWxkLCBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uRXJyb3JzLCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSI+PENPREU+RmllbGRDaGVja3MudmFsaWRhdGVJbnRlZ2VyKE9iamVjdCxWYWxpZGF0b3JBY3Rpb24sRmllbGQsQWN0aW9uRXJyb3JzLEh0dHBTZXJ2bGV0UmVxdWVzdCk8L0NPREU+PC9BPjwvST48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT5zdGF0aWMmbmJzcDtqYXZhLmxhbmcuTG9uZzwvQ09ERT48L0ZPTlQ+PC9URD4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL3V0aWwvU3RydXRzVmFsaWRhdG9yLmh0bWwjdmFsaWRhdGVMb25nKGphdmEubGFuZy5PYmplY3QsIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuVmFsaWRhdG9yQWN0aW9uLCBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLkZpZWxkLCBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uRXJyb3JzLCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSI+dmFsaWRhdGVMb25nPC9BPjwvQj4oamF2YS5sYW5nLk9iamVjdCZuYnNwO2JlYW4sCiAgICAgICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLlZhbGlkYXRvckFjdGlvbiZuYnNwO3ZhLAogICAgICAgICAgICAgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5GaWVsZCZuYnNwO2ZpZWxkLAogICAgICAgICAgICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkVycm9ycy5odG1sIj5BY3Rpb25FcnJvcnM8L0E+Jm5ic3A7ZXJyb3JzLAogICAgICAgICAgICAgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCZuYnNwO3JlcXVlc3QpPC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDs8ST5BcyBvZiBTdHJ1dHMgMS4xLCByZXBsYWNlZCBieSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy92YWxpZGF0b3IvRmllbGRDaGVja3MuaHRtbCN2YWxpZGF0ZUxvbmcoamF2YS5sYW5nLk9iamVjdCwgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5WYWxpZGF0b3JBY3Rpb24sIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuRmllbGQsIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25FcnJvcnMsIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QpIj48Q09ERT5GaWVsZENoZWNrcy52YWxpZGF0ZUxvbmcoT2JqZWN0LFZhbGlkYXRvckFjdGlvbixGaWVsZCxBY3Rpb25FcnJvcnMsSHR0cFNlcnZsZXRSZXF1ZXN0KTwvQ09ERT48L0E+PC9JPjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPnN0YXRpYyZuYnNwO2Jvb2xlYW48L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy91dGlsL1N0cnV0c1ZhbGlkYXRvci5odG1sI3ZhbGlkYXRlTWFzayhqYXZhLmxhbmcuT2JqZWN0LCBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLlZhbGlkYXRvckFjdGlvbiwgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5GaWVsZCwgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbkVycm9ycywgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCkiPnZhbGlkYXRlTWFzazwvQT48L0I+KGphdmEubGFuZy5PYmplY3QmbmJzcDtiZWFuLAogICAgICAgICAgICAgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5WYWxpZGF0b3JBY3Rpb24mbmJzcDt2YSwKICAgICAgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuRmllbGQmbmJzcDtmaWVsZCwKICAgICAgICAgICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25FcnJvcnMuaHRtbCI+QWN0aW9uRXJyb3JzPC9BPiZuYnNwO2Vycm9ycywKICAgICAgICAgICAgIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QmbmJzcDtyZXF1ZXN0KTwvQ09ERT4KCjxCUj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+QXMgb2YgU3RydXRzIDEuMSwgcmVwbGFjZWQgYnkgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvdmFsaWRhdG9yL0ZpZWxkQ2hlY2tzLmh0bWwjdmFsaWRhdGVNYXNrKGphdmEubGFuZy5PYmplY3QsIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuVmFsaWRhdG9yQWN0aW9uLCBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLkZpZWxkLCBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uRXJyb3JzLCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSI+PENPREU+RmllbGRDaGVja3MudmFsaWRhdGVNYXNrKE9iamVjdCxWYWxpZGF0b3JBY3Rpb24sRmllbGQsQWN0aW9uRXJyb3JzLEh0dHBTZXJ2bGV0UmVxdWVzdCk8L0NPREU+PC9BPjwvST48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT5zdGF0aWMmbmJzcDtib29sZWFuPC9DT0RFPjwvRk9OVD48L1REPgo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9TdHJ1dHNWYWxpZGF0b3IuaHRtbCN2YWxpZGF0ZU1heExlbmd0aChqYXZhLmxhbmcuT2JqZWN0LCBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLlZhbGlkYXRvckFjdGlvbiwgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5GaWVsZCwgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbkVycm9ycywgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCkiPnZhbGlkYXRlTWF4TGVuZ3RoPC9BPjwvQj4oamF2YS5sYW5nLk9iamVjdCZuYnNwO2JlYW4sCiAgICAgICAgICAgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuVmFsaWRhdG9yQWN0aW9uJm5ic3A7dmEsCiAgICAgICAgICAgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuRmllbGQmbmJzcDtmaWVsZCwKICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkVycm9ycy5odG1sIj5BY3Rpb25FcnJvcnM8L0E+Jm5ic3A7ZXJyb3JzLAogICAgICAgICAgICAgICAgICBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0Jm5ic3A7cmVxdWVzdCk8L0NPREU+Cgo8QlI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOzxJPkFzIG9mIFN0cnV0cyAxLjEsIHJlcGxhY2VkIGJ5IDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL3ZhbGlkYXRvci9GaWVsZENoZWNrcy5odG1sI3ZhbGlkYXRlTWF4TGVuZ3RoKGphdmEubGFuZy5PYmplY3QsIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuVmFsaWRhdG9yQWN0aW9uLCBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLkZpZWxkLCBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uRXJyb3JzLCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSI+PENPREU+RmllbGRDaGVja3MudmFsaWRhdGVNYXhMZW5ndGgoT2JqZWN0LFZhbGlkYXRvckFjdGlvbixGaWVsZCxBY3Rpb25FcnJvcnMsSHR0cFNlcnZsZXRSZXF1ZXN0KTwvQ09ERT48L0E+PC9JPjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPnN0YXRpYyZuYnNwO2Jvb2xlYW48L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy91dGlsL1N0cnV0c1ZhbGlkYXRvci5odG1sI3ZhbGlkYXRlTWluTGVuZ3RoKGphdmEubGFuZy5PYmplY3QsIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuVmFsaWRhdG9yQWN0aW9uLCBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLkZpZWxkLCBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uRXJyb3JzLCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSI+dmFsaWRhdGVNaW5MZW5ndGg8L0E+PC9CPihqYXZhLmxhbmcuT2JqZWN0Jm5ic3A7YmVhbiwKICAgICAgICAgICAgICAgICAgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5WYWxpZGF0b3JBY3Rpb24mbmJzcDt2YSwKICAgICAgICAgICAgICAgICAgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5GaWVsZCZuYnNwO2ZpZWxkLAogICAgICAgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRXJyb3JzLmh0bWwiPkFjdGlvbkVycm9yczwvQT4mbmJzcDtlcnJvcnMsCiAgICAgICAgICAgICAgICAgIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QmbmJzcDtyZXF1ZXN0KTwvQ09ERT4KCjxCUj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+QXMgb2YgU3RydXRzIDEuMSwgcmVwbGFjZWQgYnkgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvdmFsaWRhdG9yL0ZpZWxkQ2hlY2tzLmh0bWwjdmFsaWRhdGVNaW5MZW5ndGgoamF2YS5sYW5nLk9iamVjdCwgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5WYWxpZGF0b3JBY3Rpb24sIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuRmllbGQsIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25FcnJvcnMsIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QpIj48Q09ERT5GaWVsZENoZWNrcy52YWxpZGF0ZU1pbkxlbmd0aChPYmplY3QsVmFsaWRhdG9yQWN0aW9uLEZpZWxkLEFjdGlvbkVycm9ycyxIdHRwU2VydmxldFJlcXVlc3QpPC9DT0RFPjwvQT48L0k+PC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KPENPREU+c3RhdGljJm5ic3A7Ym9vbGVhbjwvQ09ERT48L0ZPTlQ+PC9URD4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL3V0aWwvU3RydXRzVmFsaWRhdG9yLmh0bWwjdmFsaWRhdGVSYW5nZShqYXZhLmxhbmcuT2JqZWN0LCBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLlZhbGlkYXRvckFjdGlvbiwgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5GaWVsZCwgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbkVycm9ycywgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCkiPnZhbGlkYXRlUmFuZ2U8L0E+PC9CPihqYXZhLmxhbmcuT2JqZWN0Jm5ic3A7YmVhbiwKICAgICAgICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLlZhbGlkYXRvckFjdGlvbiZuYnNwO3ZhLAogICAgICAgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuRmllbGQmbmJzcDtmaWVsZCwKICAgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRXJyb3JzLmh0bWwiPkFjdGlvbkVycm9yczwvQT4mbmJzcDtlcnJvcnMsCiAgICAgICAgICAgICAgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCZuYnNwO3JlcXVlc3QpPC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDs8ST5BcyBvZiBTdHJ1dHMgMS4xLCByZXBsYWNlZCBieSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy92YWxpZGF0b3IvRmllbGRDaGVja3MuaHRtbCN2YWxpZGF0ZUludFJhbmdlKGphdmEubGFuZy5PYmplY3QsIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuVmFsaWRhdG9yQWN0aW9uLCBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLkZpZWxkLCBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uRXJyb3JzLCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSI+PENPREU+RmllbGRDaGVja3MudmFsaWRhdGVJbnRSYW5nZShPYmplY3QsVmFsaWRhdG9yQWN0aW9uLEZpZWxkLEFjdGlvbkVycm9ycyxIdHRwU2VydmxldFJlcXVlc3QpPC9DT0RFPjwvQT48L0k+PC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KPENPREU+c3RhdGljJm5ic3A7Ym9vbGVhbjwvQ09ERT48L0ZPTlQ+PC9URD4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL3V0aWwvU3RydXRzVmFsaWRhdG9yLmh0bWwjdmFsaWRhdGVSZXF1aXJlZChqYXZhLmxhbmcuT2JqZWN0LCBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLlZhbGlkYXRvckFjdGlvbiwgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5GaWVsZCwgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbkVycm9ycywgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCkiPnZhbGlkYXRlUmVxdWlyZWQ8L0E+PC9CPihqYXZhLmxhbmcuT2JqZWN0Jm5ic3A7YmVhbiwKICAgICAgICAgICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLlZhbGlkYXRvckFjdGlvbiZuYnNwO3ZhLAogICAgICAgICAgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuRmllbGQmbmJzcDtmaWVsZCwKICAgICAgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRXJyb3JzLmh0bWwiPkFjdGlvbkVycm9yczwvQT4mbmJzcDtlcnJvcnMsCiAgICAgICAgICAgICAgICAgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCZuYnNwO3JlcXVlc3QpPC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDs8ST5BcyBvZiBTdHJ1dHMgMS4xLCByZXBsYWNlZCBieSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy92YWxpZGF0b3IvRmllbGRDaGVja3MuaHRtbCN2YWxpZGF0ZVJlcXVpcmVkKGphdmEubGFuZy5PYmplY3QsIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuVmFsaWRhdG9yQWN0aW9uLCBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLkZpZWxkLCBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uRXJyb3JzLCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSI+PENPREU+RmllbGRDaGVja3MudmFsaWRhdGVSZXF1aXJlZChPYmplY3QsVmFsaWRhdG9yQWN0aW9uLEZpZWxkLEFjdGlvbkVycm9ycyxIdHRwU2VydmxldFJlcXVlc3QpPC9DT0RFPjwvQT48L0k+PC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KPENPREU+c3RhdGljJm5ic3A7amF2YS5sYW5nLlNob3J0PC9DT0RFPjwvRk9OVD48L1REPgo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvdXRpbC9TdHJ1dHNWYWxpZGF0b3IuaHRtbCN2YWxpZGF0ZVNob3J0KGphdmEubGFuZy5PYmplY3QsIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuVmFsaWRhdG9yQWN0aW9uLCBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLkZpZWxkLCBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uRXJyb3JzLCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSI+dmFsaWRhdGVTaG9ydDwvQT48L0I+KGphdmEubGFuZy5PYmplY3QmbmJzcDtiZWFuLAogICAgICAgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuVmFsaWRhdG9yQWN0aW9uJm5ic3A7dmEsCiAgICAgICAgICAgICAgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5GaWVsZCZuYnNwO2ZpZWxkLAogICAgICAgICAgICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25FcnJvcnMuaHRtbCI+QWN0aW9uRXJyb3JzPC9BPiZuYnNwO2Vycm9ycywKICAgICAgICAgICAgICBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0Jm5ic3A7cmVxdWVzdCk8L0NPREU+Cgo8QlI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOzxJPkFzIG9mIFN0cnV0cyAxLjEsIHJlcGxhY2VkIGJ5IDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL3ZhbGlkYXRvci9GaWVsZENoZWNrcy5odG1sI3ZhbGlkYXRlU2hvcnQoamF2YS5sYW5nLk9iamVjdCwgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5WYWxpZGF0b3JBY3Rpb24sIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuRmllbGQsIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25FcnJvcnMsIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QpIj48Q09ERT5GaWVsZENoZWNrcy52YWxpZGF0ZVNob3J0KE9iamVjdCxWYWxpZGF0b3JBY3Rpb24sRmllbGQsQWN0aW9uRXJyb3JzLEh0dHBTZXJ2bGV0UmVxdWVzdCk8L0NPREU+PC9BPjwvST48L1REPgo8L1RSPgo8L1RBQkxFPgombmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmEubGFuZy5PYmplY3QiPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIxIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFdJRFRIPSIxMDAlIj4KPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+CjxURD48Qj5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGNsYXNzIGphdmEubGFuZy5PYmplY3Q8L0I+PC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURD48Q09ERT5jbG9uZSwgZXF1YWxzLCBmaW5hbGl6ZSwgZ2V0Q2xhc3MsIGhhc2hDb2RlLCBub3RpZnksIG5vdGlmeUFsbCwgdG9TdHJpbmcsIHdhaXQsIHdhaXQsIHdhaXQ8L0NPREU+PC9URD4KPC9UUj4KPC9UQUJMRT4KJm5ic3A7CjxQPgoKPCEtLSA9PT09PT09PT09PT0gRklFTEQgREVUQUlMID09PT09PT09PT09IC0tPgoKPEEgTkFNRT0iZmllbGRfZGV0YWlsIj48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBXSURUSD0iMTAwJSI+CjxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgo8VEQgQ09MU1BBTj0xPjxGT05UIFNJWkU9IisyIj4KPEI+RmllbGQgRGV0YWlsPC9CPjwvRk9OVD48L1REPgo8L1RSPgo8L1RBQkxFPgoKPEEgTkFNRT0iRklFTERfVEVTVF9OVUxMIj48IS0tIC0tPjwvQT48SDM+CkZJRUxEX1RFU1RfTlVMTDwvSDM+CjxQUkU+CnB1YmxpYyBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyA8Qj5GSUVMRF9URVNUX05VTEw8L0I+PC9QUkU+CjxETD4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOzxERD5Db21tb25zIExvZ2dpbmcgaW5zdGFuY2UuCjxQPgo8REw+CjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5hcGFjaGUuc3RydXRzLnV0aWwuU3RydXRzVmFsaWRhdG9yLkZJRUxEX1RFU1RfTlVMTCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+CjwvREw+CjxIUj4KCjxBIE5BTUU9IkZJRUxEX1RFU1RfTk9UTlVMTCI+PCEtLSAtLT48L0E+PEgzPgpGSUVMRF9URVNUX05PVE5VTEw8L0gzPgo8UFJFPgpwdWJsaWMgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgPEI+RklFTERfVEVTVF9OT1ROVUxMPC9CPjwvUFJFPgo8REw+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDs8REw+CjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5hcGFjaGUuc3RydXRzLnV0aWwuU3RydXRzVmFsaWRhdG9yLkZJRUxEX1RFU1RfTk9UTlVMTCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9BPjwvREw+CjwvREw+CjxIUj4KCjxBIE5BTUU9IkZJRUxEX1RFU1RfRVFVQUwiPjwhLS0gLS0+PC9BPjxIMz4KRklFTERfVEVTVF9FUVVBTDwvSDM+CjxQUkU+CnB1YmxpYyBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyA8Qj5GSUVMRF9URVNUX0VRVUFMPC9CPjwvUFJFPgo8REw+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDs8REw+CjxEVD48Qj5TZWUgQWxzbzo8L0I+PEREPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5hcGFjaGUuc3RydXRzLnV0aWwuU3RydXRzVmFsaWRhdG9yLkZJRUxEX1RFU1RfRVFVQUwiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvQT48L0RMPgo8L0RMPgoKPCEtLSA9PT09PT09PT0gQ09OU1RSVUNUT1IgREVUQUlMID09PT09PT09IC0tPgoKPEEgTkFNRT0iY29uc3RydWN0b3JfZGV0YWlsIj48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBXSURUSD0iMTAwJSI+CjxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgo8VEQgQ09MU1BBTj0xPjxGT05UIFNJWkU9IisyIj4KPEI+Q29uc3RydWN0b3IgRGV0YWlsPC9CPjwvRk9OVD48L1REPgo8L1RSPgo8L1RBQkxFPgoKPEEgTkFNRT0iU3RydXRzVmFsaWRhdG9yKCkiPjwhLS0gLS0+PC9BPjxIMz4KU3RydXRzVmFsaWRhdG9yPC9IMz4KPFBSRT4KcHVibGljIDxCPlN0cnV0c1ZhbGlkYXRvcjwvQj4oKTwvUFJFPgo8REw+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDs8L0RMPgoKPCEtLSA9PT09PT09PT09PT0gTUVUSE9EIERFVEFJTCA9PT09PT09PT09IC0tPgoKPEEgTkFNRT0ibWV0aG9kX2RldGFpbCI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjEiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgV0lEVEg9IjEwMCUiPgo8VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KPFREIENPTFNQQU49MT48Rk9OVCBTSVpFPSIrMiI+CjxCPk1ldGhvZCBEZXRhaWw8L0I+PC9GT05UPjwvVEQ+CjwvVFI+CjwvVEFCTEU+Cgo8QSBOQU1FPSJ2YWxpZGF0ZVJlcXVpcmVkKGphdmEubGFuZy5PYmplY3QsIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuVmFsaWRhdG9yQWN0aW9uLCBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLkZpZWxkLCBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uRXJyb3JzLCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSI+PCEtLSAtLT48L0E+PEgzPgp2YWxpZGF0ZVJlcXVpcmVkPC9IMz4KPFBSRT4KcHVibGljIHN0YXRpYyBib29sZWFuIDxCPnZhbGlkYXRlUmVxdWlyZWQ8L0I+KGphdmEubGFuZy5PYmplY3QmbmJzcDtiZWFuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLlZhbGlkYXRvckFjdGlvbiZuYnNwO3ZhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLkZpZWxkJm5ic3A7ZmllbGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25FcnJvcnMuaHRtbCI+QWN0aW9uRXJyb3JzPC9BPiZuYnNwO2Vycm9ycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCZuYnNwO3JlcXVlc3QpPC9QUkU+CjxETD4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOzxJPkFzIG9mIFN0cnV0cyAxLjEsIHJlcGxhY2VkIGJ5IDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL3ZhbGlkYXRvci9GaWVsZENoZWNrcy5odG1sI3ZhbGlkYXRlUmVxdWlyZWQoamF2YS5sYW5nLk9iamVjdCwgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5WYWxpZGF0b3JBY3Rpb24sIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuRmllbGQsIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25FcnJvcnMsIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QpIj48Q09ERT5GaWVsZENoZWNrcy52YWxpZGF0ZVJlcXVpcmVkKE9iamVjdCxWYWxpZGF0b3JBY3Rpb24sRmllbGQsQWN0aW9uRXJyb3JzLEh0dHBTZXJ2bGV0UmVxdWVzdCk8L0NPREU+PC9BPjwvST4KPFA+CjxERD48cD4KCiAgQ2hlY2tzIGlmIHRoZSBmaWVsZCBpc24ndCBudWxsIGFuZCBsZW5ndGggb2YgdGhlIGZpZWxkIGlzIGdyZWF0ZXIgdGhhbiB6ZXJvCiAgbm90IGluY2x1ZGluZyB3aGl0ZXNwYWNlLjwvcD4KPFA+CjxERD48REw+CjwvREw+CjwvREQ+CjxERD48REw+CjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+YmVhbjwvQ09ERT4gLSBUaGUgYmVhbiB2YWxpZGF0aW9uIGlzIGJlaW5nIHBlcmZvcm1lZCBvbi48REQ+PENPREU+dmE8L0NPREU+IC0gVGhlIDxjb2RlPlZhbGlkYXRvckFjdGlvbjwvY29kZT4gdGhhdCBpcyBjdXJyZW50bHkgYmVpbmcgcGVyZm9ybWVkLjxERD48Q09ERT5maWVsZDwvQ09ERT4gLSBUaGUgPGNvZGU+RmllbGQ8L2NvZGU+IG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbnQKICAgICAgZmllbGQgYmVpbmcgdmFsaWRhdGVkLjxERD48Q09ERT5lcnJvcnM8L0NPREU+IC0gVGhlIDxjb2RlPkFjdGlvbkVycm9yczwvY29kZT4gb2JqZWN0IHRvIGFkZCBlcnJvcnMgdG8gaWYgYW55CiAgICAgIHZhbGlkYXRpb24gZXJyb3JzIG9jY3VyLjxERD48Q09ERT5yZXF1ZXN0PC9DT0RFPiAtIEN1cnJlbnQgcmVxdWVzdCBvYmplY3QuCjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+VHJ1ZSBpZiBtZWV0cyBzdGF0ZWQgcmVxdWlyZW1lbnRzLCBGYWxzZSBvdGhlcndpc2U8L0RMPgo8L0REPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJ2YWxpZGF0ZU1hc2soamF2YS5sYW5nLk9iamVjdCwgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5WYWxpZGF0b3JBY3Rpb24sIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuRmllbGQsIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25FcnJvcnMsIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QpIj48IS0tIC0tPjwvQT48SDM+CnZhbGlkYXRlTWFzazwvSDM+CjxQUkU+CnB1YmxpYyBzdGF0aWMgYm9vbGVhbiA8Qj52YWxpZGF0ZU1hc2s8L0I+KGphdmEubGFuZy5PYmplY3QmbmJzcDtiZWFuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuVmFsaWRhdG9yQWN0aW9uJm5ic3A7dmEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5GaWVsZCZuYnNwO2ZpZWxkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25FcnJvcnMuaHRtbCI+QWN0aW9uRXJyb3JzPC9BPiZuYnNwO2Vycm9ycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0Jm5ic3A7cmVxdWVzdCk8L1BSRT4KPERMPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+QXMgb2YgU3RydXRzIDEuMSwgcmVwbGFjZWQgYnkgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvdmFsaWRhdG9yL0ZpZWxkQ2hlY2tzLmh0bWwjdmFsaWRhdGVNYXNrKGphdmEubGFuZy5PYmplY3QsIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuVmFsaWRhdG9yQWN0aW9uLCBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLkZpZWxkLCBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uRXJyb3JzLCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSI+PENPREU+RmllbGRDaGVja3MudmFsaWRhdGVNYXNrKE9iamVjdCxWYWxpZGF0b3JBY3Rpb24sRmllbGQsQWN0aW9uRXJyb3JzLEh0dHBTZXJ2bGV0UmVxdWVzdCk8L0NPREU+PC9BPjwvST4KPFA+CjxERD48cD4KCiAgQ2hlY2tzIGlmIHRoZSBmaWVsZCBtYXRjaGVzIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gaW4gdGhlIGZpZWxkJ3MgbWFzayBhdHRyaWJ1dGUuCiAgPC9wPgo8UD4KPEREPjxETD4KPC9ETD4KPC9ERD4KPEREPjxETD4KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5iZWFuPC9DT0RFPiAtIFRoZSBiZWFuIHZhbGlkYXRpb24gaXMgYmVpbmcgcGVyZm9ybWVkIG9uLjxERD48Q09ERT52YTwvQ09ERT4gLSBUaGUgPGNvZGU+VmFsaWRhdG9yQWN0aW9uPC9jb2RlPiB0aGF0IGlzIGN1cnJlbnRseSBiZWluZyBwZXJmb3JtZWQuPEREPjxDT0RFPmZpZWxkPC9DT0RFPiAtIFRoZSA8Y29kZT5GaWVsZDwvY29kZT4gb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudAogICAgICBmaWVsZCBiZWluZyB2YWxpZGF0ZWQuPEREPjxDT0RFPmVycm9yczwvQ09ERT4gLSBUaGUgPGNvZGU+QWN0aW9uRXJyb3JzPC9jb2RlPiBvYmplY3QgdG8gYWRkIGVycm9ycyB0byBpZiBhbnkKICAgICAgdmFsaWRhdGlvbiBlcnJvcnMgb2NjdXIuPEREPjxDT0RFPnJlcXVlc3Q8L0NPREU+IC0gQ3VycmVudCByZXF1ZXN0IG9iamVjdC4KPERUPjxCPlJldHVybnM6PC9CPjxERD5UcnVlIGlmIGZpZWxkIG1hdGNoZXMgbWFzaywgZmFsc2Ugb3RoZXJ3aXNlLjwvREw+CjwvREQ+CjwvREw+CjxIUj4KCjxBIE5BTUU9InZhbGlkYXRlQnl0ZShqYXZhLmxhbmcuT2JqZWN0LCBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLlZhbGlkYXRvckFjdGlvbiwgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5GaWVsZCwgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbkVycm9ycywgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCkiPjwhLS0gLS0+PC9BPjxIMz4KdmFsaWRhdGVCeXRlPC9IMz4KPFBSRT4KcHVibGljIHN0YXRpYyBqYXZhLmxhbmcuQnl0ZSA8Qj52YWxpZGF0ZUJ5dGU8L0I+KGphdmEubGFuZy5PYmplY3QmbmJzcDtiZWFuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLlZhbGlkYXRvckFjdGlvbiZuYnNwO3ZhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLkZpZWxkJm5ic3A7ZmllbGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25FcnJvcnMuaHRtbCI+QWN0aW9uRXJyb3JzPC9BPiZuYnNwO2Vycm9ycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCZuYnNwO3JlcXVlc3QpPC9QUkU+CjxETD4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOzxJPkFzIG9mIFN0cnV0cyAxLjEsIHJlcGxhY2VkIGJ5IDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL3ZhbGlkYXRvci9GaWVsZENoZWNrcy5odG1sI3ZhbGlkYXRlQnl0ZShqYXZhLmxhbmcuT2JqZWN0LCBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLlZhbGlkYXRvckFjdGlvbiwgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5GaWVsZCwgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbkVycm9ycywgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCkiPjxDT0RFPkZpZWxkQ2hlY2tzLnZhbGlkYXRlQnl0ZShPYmplY3QsVmFsaWRhdG9yQWN0aW9uLEZpZWxkLEFjdGlvbkVycm9ycyxIdHRwU2VydmxldFJlcXVlc3QpPC9DT0RFPjwvQT48L0k+CjxQPgo8REQ+PHA+CgogIENoZWNrcyBpZiB0aGUgZmllbGQgY2FuIHNhZmVseSBiZSBjb252ZXJ0ZWQgdG8gYSBieXRlIHByaW1pdGl2ZS48L3A+CjxQPgo8REQ+PERMPgo8L0RMPgo8L0REPgo8REQ+PERMPgo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmJlYW48L0NPREU+IC0gVGhlIGJlYW4gdmFsaWRhdGlvbiBpcyBiZWluZyBwZXJmb3JtZWQgb24uPEREPjxDT0RFPnZhPC9DT0RFPiAtIFRoZSA8Y29kZT5WYWxpZGF0b3JBY3Rpb248L2NvZGU+IHRoYXQgaXMgY3VycmVudGx5IGJlaW5nIHBlcmZvcm1lZC48REQ+PENPREU+ZmllbGQ8L0NPREU+IC0gVGhlIDxjb2RlPkZpZWxkPC9jb2RlPiBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXJyZW50CiAgICAgIGZpZWxkIGJlaW5nIHZhbGlkYXRlZC48REQ+PENPREU+ZXJyb3JzPC9DT0RFPiAtIFRoZSA8Y29kZT5BY3Rpb25FcnJvcnM8L2NvZGU+IG9iamVjdCB0byBhZGQgZXJyb3JzIHRvIGlmIGFueQogICAgICB2YWxpZGF0aW9uIGVycm9ycyBvY2N1ci48REQ+PENPREU+cmVxdWVzdDwvQ09ERT4gLSBDdXJyZW50IHJlcXVlc3Qgb2JqZWN0Lgo8RFQ+PEI+UmV0dXJuczo8L0I+PEREPkEgQnl0ZSBpZiB2YWxpZCwgYSBudWxsIG90aGVyd2lzZS48L0RMPgo8L0REPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJ2YWxpZGF0ZVNob3J0KGphdmEubGFuZy5PYmplY3QsIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuVmFsaWRhdG9yQWN0aW9uLCBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLkZpZWxkLCBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uRXJyb3JzLCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSI+PCEtLSAtLT48L0E+PEgzPgp2YWxpZGF0ZVNob3J0PC9IMz4KPFBSRT4KcHVibGljIHN0YXRpYyBqYXZhLmxhbmcuU2hvcnQgPEI+dmFsaWRhdGVTaG9ydDwvQj4oamF2YS5sYW5nLk9iamVjdCZuYnNwO2JlYW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5WYWxpZGF0b3JBY3Rpb24mbmJzcDt2YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLkZpZWxkJm5ic3A7ZmllbGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkVycm9ycy5odG1sIj5BY3Rpb25FcnJvcnM8L0E+Jm5ic3A7ZXJyb3JzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QmbmJzcDtyZXF1ZXN0KTwvUFJFPgo8REw+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDs8ST5BcyBvZiBTdHJ1dHMgMS4xLCByZXBsYWNlZCBieSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy92YWxpZGF0b3IvRmllbGRDaGVja3MuaHRtbCN2YWxpZGF0ZVNob3J0KGphdmEubGFuZy5PYmplY3QsIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuVmFsaWRhdG9yQWN0aW9uLCBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLkZpZWxkLCBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uRXJyb3JzLCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSI+PENPREU+RmllbGRDaGVja3MudmFsaWRhdGVTaG9ydChPYmplY3QsVmFsaWRhdG9yQWN0aW9uLEZpZWxkLEFjdGlvbkVycm9ycyxIdHRwU2VydmxldFJlcXVlc3QpPC9DT0RFPjwvQT48L0k+CjxQPgo8REQ+PHA+CgogIENoZWNrcyBpZiB0aGUgZmllbGQgY2FuIHNhZmVseSBiZSBjb252ZXJ0ZWQgdG8gYSBzaG9ydCBwcmltaXRpdmUuPC9wPgo8UD4KPEREPjxETD4KPC9ETD4KPC9ERD4KPEREPjxETD4KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5iZWFuPC9DT0RFPiAtIFRoZSBiZWFuIHZhbGlkYXRpb24gaXMgYmVpbmcgcGVyZm9ybWVkIG9uLjxERD48Q09ERT52YTwvQ09ERT4gLSBUaGUgPGNvZGU+VmFsaWRhdG9yQWN0aW9uPC9jb2RlPiB0aGF0IGlzIGN1cnJlbnRseSBiZWluZyBwZXJmb3JtZWQuPEREPjxDT0RFPmZpZWxkPC9DT0RFPiAtIFRoZSA8Y29kZT5GaWVsZDwvY29kZT4gb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudAogICAgICBmaWVsZCBiZWluZyB2YWxpZGF0ZWQuPEREPjxDT0RFPmVycm9yczwvQ09ERT4gLSBUaGUgPGNvZGU+QWN0aW9uRXJyb3JzPC9jb2RlPiBvYmplY3QgdG8gYWRkIGVycm9ycyB0byBpZiBhbnkKICAgICAgdmFsaWRhdGlvbiBlcnJvcnMgb2NjdXIuPEREPjxDT0RFPnJlcXVlc3Q8L0NPREU+IC0gQ3VycmVudCByZXF1ZXN0IG9iamVjdC4KPERUPjxCPlJldHVybnM6PC9CPjxERD5BIFNob3J0IGlmIHZhbGlkLCBvdGhlcndpc2UgYSBudWxsLjwvREw+CjwvREQ+CjwvREw+CjxIUj4KCjxBIE5BTUU9InZhbGlkYXRlSW50ZWdlcihqYXZhLmxhbmcuT2JqZWN0LCBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLlZhbGlkYXRvckFjdGlvbiwgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5GaWVsZCwgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbkVycm9ycywgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCkiPjwhLS0gLS0+PC9BPjxIMz4KdmFsaWRhdGVJbnRlZ2VyPC9IMz4KPFBSRT4KcHVibGljIHN0YXRpYyBqYXZhLmxhbmcuSW50ZWdlciA8Qj52YWxpZGF0ZUludGVnZXI8L0I+KGphdmEubGFuZy5PYmplY3QmbmJzcDtiZWFuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLlZhbGlkYXRvckFjdGlvbiZuYnNwO3ZhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLkZpZWxkJm5ic3A7ZmllbGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2FjdGlvbi9BY3Rpb25FcnJvcnMuaHRtbCI+QWN0aW9uRXJyb3JzPC9BPiZuYnNwO2Vycm9ycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCZuYnNwO3JlcXVlc3QpPC9QUkU+CjxETD4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOzxJPkFzIG9mIFN0cnV0cyAxLjEsIHJlcGxhY2VkIGJ5IDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL3ZhbGlkYXRvci9GaWVsZENoZWNrcy5odG1sI3ZhbGlkYXRlSW50ZWdlcihqYXZhLmxhbmcuT2JqZWN0LCBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLlZhbGlkYXRvckFjdGlvbiwgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5GaWVsZCwgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbkVycm9ycywgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCkiPjxDT0RFPkZpZWxkQ2hlY2tzLnZhbGlkYXRlSW50ZWdlcihPYmplY3QsVmFsaWRhdG9yQWN0aW9uLEZpZWxkLEFjdGlvbkVycm9ycyxIdHRwU2VydmxldFJlcXVlc3QpPC9DT0RFPjwvQT48L0k+CjxQPgo8REQ+PHA+CgogIENoZWNrcyBpZiB0aGUgZmllbGQgY2FuIHNhZmVseSBiZSBjb252ZXJ0ZWQgdG8gYW4gaW50IHByaW1pdGl2ZS48L3A+CjxQPgo8REQ+PERMPgo8L0RMPgo8L0REPgo8REQ+PERMPgo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmJlYW48L0NPREU+IC0gVGhlIGJlYW4gdmFsaWRhdGlvbiBpcyBiZWluZyBwZXJmb3JtZWQgb24uPEREPjxDT0RFPnZhPC9DT0RFPiAtIFRoZSA8Y29kZT5WYWxpZGF0b3JBY3Rpb248L2NvZGU+IHRoYXQgaXMgY3VycmVudGx5IGJlaW5nIHBlcmZvcm1lZC48REQ+PENPREU+ZmllbGQ8L0NPREU+IC0gVGhlIDxjb2RlPkZpZWxkPC9jb2RlPiBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXJyZW50CiAgICAgIGZpZWxkIGJlaW5nIHZhbGlkYXRlZC48REQ+PENPREU+ZXJyb3JzPC9DT0RFPiAtIFRoZSA8Y29kZT5BY3Rpb25FcnJvcnM8L2NvZGU+IG9iamVjdCB0byBhZGQgZXJyb3JzIHRvIGlmIGFueQogICAgICB2YWxpZGF0aW9uIGVycm9ycyBvY2N1ci48REQ+PENPREU+cmVxdWVzdDwvQ09ERT4gLSBDdXJyZW50IHJlcXVlc3Qgb2JqZWN0Lgo8RFQ+PEI+UmV0dXJuczo8L0I+PEREPkFuIEludGVnZXIgaWYgdmFsaWQsIGEgbnVsbCBvdGhlcndpc2UuPC9ETD4KPC9ERD4KPC9ETD4KPEhSPgoKPEEgTkFNRT0idmFsaWRhdGVMb25nKGphdmEubGFuZy5PYmplY3QsIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuVmFsaWRhdG9yQWN0aW9uLCBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLkZpZWxkLCBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uRXJyb3JzLCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSI+PCEtLSAtLT48L0E+PEgzPgp2YWxpZGF0ZUxvbmc8L0gzPgo8UFJFPgpwdWJsaWMgc3RhdGljIGphdmEubGFuZy5Mb25nIDxCPnZhbGlkYXRlTG9uZzwvQj4oamF2YS5sYW5nLk9iamVjdCZuYnNwO2JlYW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuVmFsaWRhdG9yQWN0aW9uJm5ic3A7dmEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuRmllbGQmbmJzcDtmaWVsZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkVycm9ycy5odG1sIj5BY3Rpb25FcnJvcnM8L0E+Jm5ic3A7ZXJyb3JzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0Jm5ic3A7cmVxdWVzdCk8L1BSRT4KPERMPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+QXMgb2YgU3RydXRzIDEuMSwgcmVwbGFjZWQgYnkgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvdmFsaWRhdG9yL0ZpZWxkQ2hlY2tzLmh0bWwjdmFsaWRhdGVMb25nKGphdmEubGFuZy5PYmplY3QsIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuVmFsaWRhdG9yQWN0aW9uLCBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLkZpZWxkLCBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uRXJyb3JzLCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSI+PENPREU+RmllbGRDaGVja3MudmFsaWRhdGVMb25nKE9iamVjdCxWYWxpZGF0b3JBY3Rpb24sRmllbGQsQWN0aW9uRXJyb3JzLEh0dHBTZXJ2bGV0UmVxdWVzdCk8L0NPREU+PC9BPjwvST4KPFA+CjxERD48cD4KCiAgQ2hlY2tzIGlmIHRoZSBmaWVsZCBjYW4gc2FmZWx5IGJlIGNvbnZlcnRlZCB0byBhIGxvbmcgcHJpbWl0aXZlLjwvcD4KPFA+CjxERD48REw+CjwvREw+CjwvREQ+CjxERD48REw+CjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+YmVhbjwvQ09ERT4gLSBUaGUgYmVhbiB2YWxpZGF0aW9uIGlzIGJlaW5nIHBlcmZvcm1lZCBvbi48REQ+PENPREU+dmE8L0NPREU+IC0gVGhlIDxjb2RlPlZhbGlkYXRvckFjdGlvbjwvY29kZT4gdGhhdCBpcyBjdXJyZW50bHkgYmVpbmcgcGVyZm9ybWVkLjxERD48Q09ERT5maWVsZDwvQ09ERT4gLSBUaGUgPGNvZGU+RmllbGQ8L2NvZGU+IG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbnQKICAgICAgZmllbGQgYmVpbmcgdmFsaWRhdGVkLjxERD48Q09ERT5lcnJvcnM8L0NPREU+IC0gVGhlIDxjb2RlPkFjdGlvbkVycm9yczwvY29kZT4gb2JqZWN0IHRvIGFkZCBlcnJvcnMgdG8gaWYgYW55CiAgICAgIHZhbGlkYXRpb24gZXJyb3JzIG9jY3VyLjxERD48Q09ERT5yZXF1ZXN0PC9DT0RFPiAtIEN1cnJlbnQgcmVxdWVzdCBvYmplY3QuCjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+QSBMb25nIGlmIHZhbGlkLCBhIG51bGwgb3RoZXJ3aXNlLjwvREw+CjwvREQ+CjwvREw+CjxIUj4KCjxBIE5BTUU9InZhbGlkYXRlRmxvYXQoamF2YS5sYW5nLk9iamVjdCwgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5WYWxpZGF0b3JBY3Rpb24sIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuRmllbGQsIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25FcnJvcnMsIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QpIj48IS0tIC0tPjwvQT48SDM+CnZhbGlkYXRlRmxvYXQ8L0gzPgo8UFJFPgpwdWJsaWMgc3RhdGljIGphdmEubGFuZy5GbG9hdCA8Qj52YWxpZGF0ZUZsb2F0PC9CPihqYXZhLmxhbmcuT2JqZWN0Jm5ic3A7YmVhbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLlZhbGlkYXRvckFjdGlvbiZuYnNwO3ZhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuRmllbGQmbmJzcDtmaWVsZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRXJyb3JzLmh0bWwiPkFjdGlvbkVycm9yczwvQT4mbmJzcDtlcnJvcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCZuYnNwO3JlcXVlc3QpPC9QUkU+CjxETD4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOzxJPkFzIG9mIFN0cnV0cyAxLjEsIHJlcGxhY2VkIGJ5IDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL3ZhbGlkYXRvci9GaWVsZENoZWNrcy5odG1sI3ZhbGlkYXRlRmxvYXQoamF2YS5sYW5nLk9iamVjdCwgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5WYWxpZGF0b3JBY3Rpb24sIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuRmllbGQsIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25FcnJvcnMsIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QpIj48Q09ERT5GaWVsZENoZWNrcy52YWxpZGF0ZUZsb2F0KE9iamVjdCxWYWxpZGF0b3JBY3Rpb24sRmllbGQsQWN0aW9uRXJyb3JzLEh0dHBTZXJ2bGV0UmVxdWVzdCk8L0NPREU+PC9BPjwvST4KPFA+CjxERD48cD4KCiAgQ2hlY2tzIGlmIHRoZSBmaWVsZCBjYW4gc2FmZWx5IGJlIGNvbnZlcnRlZCB0byBhIGZsb2F0IHByaW1pdGl2ZS48L3A+CjxQPgo8REQ+PERMPgo8L0RMPgo8L0REPgo8REQ+PERMPgo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmJlYW48L0NPREU+IC0gVGhlIGJlYW4gdmFsaWRhdGlvbiBpcyBiZWluZyBwZXJmb3JtZWQgb24uPEREPjxDT0RFPnZhPC9DT0RFPiAtIFRoZSA8Y29kZT5WYWxpZGF0b3JBY3Rpb248L2NvZGU+IHRoYXQgaXMgY3VycmVudGx5IGJlaW5nIHBlcmZvcm1lZC48REQ+PENPREU+ZmllbGQ8L0NPREU+IC0gVGhlIDxjb2RlPkZpZWxkPC9jb2RlPiBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXJyZW50CiAgICAgIGZpZWxkIGJlaW5nIHZhbGlkYXRlZC48REQ+PENPREU+ZXJyb3JzPC9DT0RFPiAtIFRoZSA8Y29kZT5BY3Rpb25FcnJvcnM8L2NvZGU+IG9iamVjdCB0byBhZGQgZXJyb3JzIHRvIGlmIGFueQogICAgICB2YWxpZGF0aW9uIGVycm9ycyBvY2N1ci48REQ+PENPREU+cmVxdWVzdDwvQ09ERT4gLSBDdXJyZW50IHJlcXVlc3Qgb2JqZWN0Lgo8RFQ+PEI+UmV0dXJuczo8L0I+PEREPkEgRmxvYXQgaWYgdmFsaWQsIGEgbnVsbCBvdGhlcndpc2UuPC9ETD4KPC9ERD4KPC9ETD4KPEhSPgoKPEEgTkFNRT0idmFsaWRhdGVEb3VibGUoamF2YS5sYW5nLk9iamVjdCwgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5WYWxpZGF0b3JBY3Rpb24sIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuRmllbGQsIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25FcnJvcnMsIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QpIj48IS0tIC0tPjwvQT48SDM+CnZhbGlkYXRlRG91YmxlPC9IMz4KPFBSRT4KcHVibGljIHN0YXRpYyBqYXZhLmxhbmcuRG91YmxlIDxCPnZhbGlkYXRlRG91YmxlPC9CPihqYXZhLmxhbmcuT2JqZWN0Jm5ic3A7YmVhbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuVmFsaWRhdG9yQWN0aW9uJm5ic3A7dmEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLkZpZWxkJm5ic3A7ZmllbGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRXJyb3JzLmh0bWwiPkFjdGlvbkVycm9yczwvQT4mbmJzcDtlcnJvcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0Jm5ic3A7cmVxdWVzdCk8L1BSRT4KPERMPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+QXMgb2YgU3RydXRzIDEuMSwgcmVwbGFjZWQgYnkgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvdmFsaWRhdG9yL0ZpZWxkQ2hlY2tzLmh0bWwjdmFsaWRhdGVEb3VibGUoamF2YS5sYW5nLk9iamVjdCwgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5WYWxpZGF0b3JBY3Rpb24sIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuRmllbGQsIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25FcnJvcnMsIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QpIj48Q09ERT5GaWVsZENoZWNrcy52YWxpZGF0ZURvdWJsZShPYmplY3QsVmFsaWRhdG9yQWN0aW9uLEZpZWxkLEFjdGlvbkVycm9ycyxIdHRwU2VydmxldFJlcXVlc3QpPC9DT0RFPjwvQT48L0k+CjxQPgo8REQ+PHA+CgogIENoZWNrcyBpZiB0aGUgZmllbGQgY2FuIHNhZmVseSBiZSBjb252ZXJ0ZWQgdG8gYSBkb3VibGUgcHJpbWl0aXZlLjwvcD4KPFA+CjxERD48REw+CjwvREw+CjwvREQ+CjxERD48REw+CjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+YmVhbjwvQ09ERT4gLSBUaGUgYmVhbiB2YWxpZGF0aW9uIGlzIGJlaW5nIHBlcmZvcm1lZCBvbi48REQ+PENPREU+dmE8L0NPREU+IC0gVGhlIDxjb2RlPlZhbGlkYXRvckFjdGlvbjwvY29kZT4gdGhhdCBpcyBjdXJyZW50bHkgYmVpbmcgcGVyZm9ybWVkLjxERD48Q09ERT5maWVsZDwvQ09ERT4gLSBUaGUgPGNvZGU+RmllbGQ8L2NvZGU+IG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbnQKICAgICAgZmllbGQgYmVpbmcgdmFsaWRhdGVkLjxERD48Q09ERT5lcnJvcnM8L0NPREU+IC0gVGhlIDxjb2RlPkFjdGlvbkVycm9yczwvY29kZT4gb2JqZWN0IHRvIGFkZCBlcnJvcnMgdG8gaWYgYW55CiAgICAgIHZhbGlkYXRpb24gZXJyb3JzIG9jY3VyLjxERD48Q09ERT5yZXF1ZXN0PC9DT0RFPiAtIEN1cnJlbnQgcmVxdWVzdCBvYmplY3QuCjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+QSBEb3VibGUgaWYgdmFsaWQsIGEgbnVsbCBvdGhlcndpc2UuPC9ETD4KPC9ERD4KPC9ETD4KPEhSPgoKPEEgTkFNRT0idmFsaWRhdGVEYXRlKGphdmEubGFuZy5PYmplY3QsIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuVmFsaWRhdG9yQWN0aW9uLCBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLkZpZWxkLCBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uRXJyb3JzLCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSI+PCEtLSAtLT48L0E+PEgzPgp2YWxpZGF0ZURhdGU8L0gzPgo8UFJFPgpwdWJsaWMgc3RhdGljIGphdmEudXRpbC5EYXRlIDxCPnZhbGlkYXRlRGF0ZTwvQj4oamF2YS5sYW5nLk9iamVjdCZuYnNwO2JlYW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuVmFsaWRhdG9yQWN0aW9uJm5ic3A7dmEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuRmllbGQmbmJzcDtmaWVsZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkVycm9ycy5odG1sIj5BY3Rpb25FcnJvcnM8L0E+Jm5ic3A7ZXJyb3JzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0Jm5ic3A7cmVxdWVzdCk8L1BSRT4KPERMPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+QXMgb2YgU3RydXRzIDEuMSwgcmVwbGFjZWQgYnkgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvdmFsaWRhdG9yL0ZpZWxkQ2hlY2tzLmh0bWwjdmFsaWRhdGVEYXRlKGphdmEubGFuZy5PYmplY3QsIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuVmFsaWRhdG9yQWN0aW9uLCBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLkZpZWxkLCBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uRXJyb3JzLCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSI+PENPREU+RmllbGRDaGVja3MudmFsaWRhdGVEYXRlKE9iamVjdCxWYWxpZGF0b3JBY3Rpb24sRmllbGQsQWN0aW9uRXJyb3JzLEh0dHBTZXJ2bGV0UmVxdWVzdCk8L0NPREU+PC9BPjwvST4KPFA+CjxERD48cD4KCiAgQ2hlY2tzIGlmIHRoZSBmaWVsZCBpcyBhIHZhbGlkIGRhdGUuIElmIHRoZSBmaWVsZCBoYXMgYSBkYXRlUGF0dGVybiB2YXJpYWJsZSwKICB0aGF0IHdpbGwgYmUgdXNlZCB0byBmb3JtYXQgPGNvZGU+amF2YS50ZXh0LlNpbXBsZURhdGVGb3JtYXQ8L2NvZGU+LiBJZiB0aGUKICBmaWVsZCBoYXMgYSBkYXRlUGF0dGVyblN0cmljdCB2YXJpYWJsZSwgdGhhdCB3aWxsIGJlIHVzZWQgdG8gZm9ybWF0IDxjb2RlPmphdmEudGV4dC5TaW1wbGVEYXRlRm9ybWF0PC9jb2RlPgogIGFuZCB0aGUgbGVuZ3RoIHdpbGwgYmUgY2hlY2tlZCBzbyAnMi8xMi8xOTk5JyB3aWxsIG5vdCBwYXNzIHZhbGlkYXRpb24gd2l0aAogIHRoZSBmb3JtYXQgJ01NL2RkL3l5eXknIGJlY2F1c2UgdGhlIG1vbnRoIGlzbid0IHR3byBkaWdpdHMuIElmIG5vIGRhdGVQYXR0ZXJuCiAgdmFyaWFibGUgaXMgc3BlY2lmaWVkLCB0aGVuIHRoZSBmaWVsZCBnZXRzIHRoZSBEYXRlRm9ybWF0LlNIT1JUIGZvcm1hdCBmb3IKICB0aGUgbG9jYWxlLiBUaGUgc2V0TGVuaWVudCBtZXRob2QgaXMgc2V0IHRvIDxjb2RlPmZhbHNlPC9jb2RlPiBmb3IgYWxsIHZhcmlhdGlvbnMuCiAgPC9wPgo8UD4KPEREPjxETD4KPC9ETD4KPC9ERD4KPEREPjxETD4KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5iZWFuPC9DT0RFPiAtIFRoZSBiZWFuIHZhbGlkYXRpb24gaXMgYmVpbmcgcGVyZm9ybWVkIG9uLjxERD48Q09ERT52YTwvQ09ERT4gLSBUaGUgPGNvZGU+VmFsaWRhdG9yQWN0aW9uPC9jb2RlPiB0aGF0IGlzIGN1cnJlbnRseSBiZWluZyBwZXJmb3JtZWQuPEREPjxDT0RFPmZpZWxkPC9DT0RFPiAtIFRoZSA8Y29kZT5GaWVsZDwvY29kZT4gb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudAogICAgICBmaWVsZCBiZWluZyB2YWxpZGF0ZWQuPEREPjxDT0RFPmVycm9yczwvQ09ERT4gLSBUaGUgPGNvZGU+QWN0aW9uRXJyb3JzPC9jb2RlPiBvYmplY3QgdG8gYWRkIGVycm9ycyB0byBpZiBhbnkKICAgICAgdmFsaWRhdGlvbiBlcnJvcnMgb2NjdXIuPEREPjxDT0RFPnJlcXVlc3Q8L0NPREU+IC0gQ3VycmVudCByZXF1ZXN0IG9iamVjdC4KPERUPjxCPlJldHVybnM6PC9CPjxERD5BIERhdGUgaWYgdmFsaWQsIGEgbnVsbCBpZiBibGFuayBvciBpbnZhbGlkLjwvREw+CjwvREQ+CjwvREw+CjxIUj4KCjxBIE5BTUU9InZhbGlkYXRlUmFuZ2UoamF2YS5sYW5nLk9iamVjdCwgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5WYWxpZGF0b3JBY3Rpb24sIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuRmllbGQsIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25FcnJvcnMsIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QpIj48IS0tIC0tPjwvQT48SDM+CnZhbGlkYXRlUmFuZ2U8L0gzPgo8UFJFPgpwdWJsaWMgc3RhdGljIGJvb2xlYW4gPEI+dmFsaWRhdGVSYW5nZTwvQj4oamF2YS5sYW5nLk9iamVjdCZuYnNwO2JlYW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuVmFsaWRhdG9yQWN0aW9uJm5ic3A7dmEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuRmllbGQmbmJzcDtmaWVsZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkVycm9ycy5odG1sIj5BY3Rpb25FcnJvcnM8L0E+Jm5ic3A7ZXJyb3JzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0Jm5ic3A7cmVxdWVzdCk8L1BSRT4KPERMPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+QXMgb2YgU3RydXRzIDEuMSwgcmVwbGFjZWQgYnkgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvdmFsaWRhdG9yL0ZpZWxkQ2hlY2tzLmh0bWwjdmFsaWRhdGVJbnRSYW5nZShqYXZhLmxhbmcuT2JqZWN0LCBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLlZhbGlkYXRvckFjdGlvbiwgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5GaWVsZCwgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbkVycm9ycywgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCkiPjxDT0RFPkZpZWxkQ2hlY2tzLnZhbGlkYXRlSW50UmFuZ2UoT2JqZWN0LFZhbGlkYXRvckFjdGlvbixGaWVsZCxBY3Rpb25FcnJvcnMsSHR0cFNlcnZsZXRSZXF1ZXN0KTwvQ09ERT48L0E+PC9JPgo8UD4KPEREPjxwPgoKICBDaGVja3MgaWYgYSBmaWVsZHMgdmFsdWUgaXMgd2l0aGluIGEgcmFuZ2UgKG1pbiAmYW1wOyBtYXggc3BlY2lmaWVkIGluIHRoZQogIHZhcnMgYXR0cmlidXRlKS48L3A+CjxQPgo8REQ+PERMPgo8L0RMPgo8L0REPgo8REQ+PERMPgo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmJlYW48L0NPREU+IC0gVGhlIGJlYW4gdmFsaWRhdGlvbiBpcyBiZWluZyBwZXJmb3JtZWQgb24uPEREPjxDT0RFPnZhPC9DT0RFPiAtIFRoZSA8Y29kZT5WYWxpZGF0b3JBY3Rpb248L2NvZGU+IHRoYXQgaXMgY3VycmVudGx5IGJlaW5nIHBlcmZvcm1lZC48REQ+PENPREU+ZmllbGQ8L0NPREU+IC0gVGhlIDxjb2RlPkZpZWxkPC9jb2RlPiBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXJyZW50CiAgICAgIGZpZWxkIGJlaW5nIHZhbGlkYXRlZC48REQ+PENPREU+ZXJyb3JzPC9DT0RFPiAtIFRoZSA8Y29kZT5BY3Rpb25FcnJvcnM8L2NvZGU+IG9iamVjdCB0byBhZGQgZXJyb3JzIHRvIGlmIGFueQogICAgICB2YWxpZGF0aW9uIGVycm9ycyBvY2N1ci48REQ+PENPREU+cmVxdWVzdDwvQ09ERT4gLSBDdXJyZW50IHJlcXVlc3Qgb2JqZWN0Lgo8RFQ+PEI+UmV0dXJuczo8L0I+PEREPlRydWUgaWYgaW4gcmFuZ2UsIGZhbHNlIG90aGVyd2lzZS48L0RMPgo8L0REPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJ2YWxpZGF0ZUNyZWRpdENhcmQoamF2YS5sYW5nLk9iamVjdCwgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5WYWxpZGF0b3JBY3Rpb24sIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuRmllbGQsIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25FcnJvcnMsIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QpIj48IS0tIC0tPjwvQT48SDM+CnZhbGlkYXRlQ3JlZGl0Q2FyZDwvSDM+CjxQUkU+CnB1YmxpYyBzdGF0aWMgamF2YS5sYW5nLkxvbmcgPEI+dmFsaWRhdGVDcmVkaXRDYXJkPC9CPihqYXZhLmxhbmcuT2JqZWN0Jm5ic3A7YmVhbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5WYWxpZGF0b3JBY3Rpb24mbmJzcDt2YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5GaWVsZCZuYnNwO2ZpZWxkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9hY3Rpb24vQWN0aW9uRXJyb3JzLmh0bWwiPkFjdGlvbkVycm9yczwvQT4mbmJzcDtlcnJvcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QmbmJzcDtyZXF1ZXN0KTwvUFJFPgo8REw+CjxERD48Qj5EZXByZWNhdGVkLjwvQj4mbmJzcDs8ST5BcyBvZiBTdHJ1dHMgMS4xLCByZXBsYWNlZCBieSA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy92YWxpZGF0b3IvRmllbGRDaGVja3MuaHRtbCN2YWxpZGF0ZUNyZWRpdENhcmQoamF2YS5sYW5nLk9iamVjdCwgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5WYWxpZGF0b3JBY3Rpb24sIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuRmllbGQsIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25FcnJvcnMsIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QpIj48Q09ERT5GaWVsZENoZWNrcy52YWxpZGF0ZUNyZWRpdENhcmQoT2JqZWN0LFZhbGlkYXRvckFjdGlvbixGaWVsZCxBY3Rpb25FcnJvcnMsSHR0cFNlcnZsZXRSZXF1ZXN0KTwvQ09ERT48L0E+CgogIFRyYW5zbGF0ZWQgdG8gSmF2YSBieSBUZWQgSHVzdGVkICg8YSBocmVmPSJtYWlsdG86aHVzdGVkQGFwYWNoZS5vcmciPmh1c3RlZEBhcGFjaGUub3JnCiAgPC9hPikuPGJyPgogICZuYnNwOyZuYnNwOyZuYnNwOyBSZWZlcmVuY2UgU2VhbiBNLiBCdXJrZSdzIHNjcmlwdCBhdCBodHRwOi8vd3d3Lmxpbmcubnd1LmVkdS9+c2J1cmtlL3B1Yi9sdWhuX2xpYi5wbAogIDwvcD48L0k+CjxQPgo8REQ+PHA+CgogIENoZWNrcyBpZiB0aGUgZmllbGQgaXMgYSB2YWxpZCBjcmVkaXQgY2FyZCBudW1iZXIuPC9wPiA8cD4KPFA+CjxERD48REw+CjwvREw+CjwvREQ+CjxERD48REw+CjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+YmVhbjwvQ09ERT4gLSBUaGUgYmVhbiB2YWxpZGF0aW9uIGlzIGJlaW5nIHBlcmZvcm1lZCBvbi48REQ+PENPREU+dmE8L0NPREU+IC0gVGhlIDxjb2RlPlZhbGlkYXRvckFjdGlvbjwvY29kZT4gdGhhdCBpcyBjdXJyZW50bHkgYmVpbmcgcGVyZm9ybWVkLjxERD48Q09ERT5maWVsZDwvQ09ERT4gLSBUaGUgPGNvZGU+RmllbGQ8L2NvZGU+IG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbnQKICAgICAgZmllbGQgYmVpbmcgdmFsaWRhdGVkLjxERD48Q09ERT5lcnJvcnM8L0NPREU+IC0gVGhlIDxjb2RlPkFjdGlvbkVycm9yczwvY29kZT4gb2JqZWN0IHRvIGFkZCBlcnJvcnMgdG8gaWYgYW55CiAgICAgIHZhbGlkYXRpb24gZXJyb3JzIG9jY3VyLjxERD48Q09ERT5yZXF1ZXN0PC9DT0RFPiAtIEN1cnJlbnQgcmVxdWVzdCBvYmplY3QuCjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+VGhlIGNyZWRpdCBjYXJkIGFzIGEgTG9uZywgYSBudWxsIGlmIGludmFsaWQsIGJsYW5rLCBvciBudWxsLjwvREw+CjwvREQ+CjwvREw+CjxIUj4KCjxBIE5BTUU9InZhbGlkYXRlRW1haWwoamF2YS5sYW5nLk9iamVjdCwgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5WYWxpZGF0b3JBY3Rpb24sIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuRmllbGQsIG9yZy5hcGFjaGUuc3RydXRzLmFjdGlvbi5BY3Rpb25FcnJvcnMsIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QpIj48IS0tIC0tPjwvQT48SDM+CnZhbGlkYXRlRW1haWw8L0gzPgo8UFJFPgpwdWJsaWMgc3RhdGljIGJvb2xlYW4gPEI+dmFsaWRhdGVFbWFpbDwvQj4oamF2YS5sYW5nLk9iamVjdCZuYnNwO2JlYW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuVmFsaWRhdG9yQWN0aW9uJm5ic3A7dmEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuRmllbGQmbmJzcDtmaWVsZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkVycm9ycy5odG1sIj5BY3Rpb25FcnJvcnM8L0E+Jm5ic3A7ZXJyb3JzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0Jm5ic3A7cmVxdWVzdCk8L1BSRT4KPERMPgo8REQ+PEI+RGVwcmVjYXRlZC48L0I+Jm5ic3A7PEk+QXMgb2YgU3RydXRzIDEuMSwgcmVwbGFjZWQgYnkgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvdmFsaWRhdG9yL0ZpZWxkQ2hlY2tzLmh0bWwjdmFsaWRhdGVFbWFpbChqYXZhLmxhbmcuT2JqZWN0LCBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLlZhbGlkYXRvckFjdGlvbiwgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5GaWVsZCwgb3JnLmFwYWNoZS5zdHJ1dHMuYWN0aW9uLkFjdGlvbkVycm9ycywgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCkiPjxDT0RFPkZpZWxkQ2hlY2tzLnZhbGlkYXRlRW1haWwoT2JqZWN0LFZhbGlkYXRvckFjdGlvbixGaWVsZCxBY3Rpb25FcnJvcnMsSHR0cFNlcnZsZXRSZXF1ZXN0KTwvQ09ERT48L0E+CgogIEJhc2VkIG9uIGEgc2NyaXB0IGJ5IFNhbmRlZXAgVi4gVGFtaGFua2FyIChzdGFtaGFua2FyQGhvdG1haWwuY29tKSwgaHR0cDovL2phdmFzY3JpcHQuaW50ZXJuZXQuY29tCiAgPC9wPjwvST4KPFA+CjxERD48cD4KCiAgQ2hlY2tzIGlmIGEgZmllbGQgaGFzIGEgdmFsaWQgZS1tYWlsIGFkZHJlc3MuPC9wPiA8cD4KPFA+CjxERD48REw+CjwvREw+CjwvREQ+CjxERD48REw+CjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+YmVhbjwvQ09ERT4gLSBUaGUgYmVhbiB2YWxpZGF0aW9uIGlzIGJlaW5nIHBlcmZvcm1lZCBvbi48REQ+PENPREU+dmE8L0NPREU+IC0gVGhlIDxjb2RlPlZhbGlkYXRvckFjdGlvbjwvY29kZT4gdGhhdCBpcyBjdXJyZW50bHkgYmVpbmcgcGVyZm9ybWVkLjxERD48Q09ERT5maWVsZDwvQ09ERT4gLSBUaGUgPGNvZGU+RmllbGQ8L2NvZGU+IG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbnQKICAgICAgZmllbGQgYmVpbmcgdmFsaWRhdGVkLjxERD48Q09ERT5lcnJvcnM8L0NPREU+IC0gVGhlIDxjb2RlPkFjdGlvbkVycm9yczwvY29kZT4gb2JqZWN0IHRvIGFkZCBlcnJvcnMgdG8gaWYgYW55CiAgICAgIHZhbGlkYXRpb24gZXJyb3JzIG9jY3VyLjxERD48Q09ERT5yZXF1ZXN0PC9DT0RFPiAtIEN1cnJlbnQgcmVxdWVzdCBvYmplY3QuCjxEVD48Qj5SZXR1cm5zOjwvQj48REQ+VHJ1ZSBpZiB2YWxpZCwgZmFsc2Ugb3RoZXJ3aXNlLjwvREw+CjwvREQ+CjwvREw+CjxIUj4KCjxBIE5BTUU9InZhbGlkYXRlTWF4TGVuZ3RoKGphdmEubGFuZy5PYmplY3QsIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuVmFsaWRhdG9yQWN0aW9uLCBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLkZpZWxkLCBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uRXJyb3JzLCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSI+PCEtLSAtLT48L0E+PEgzPgp2YWxpZGF0ZU1heExlbmd0aDwvSDM+CjxQUkU+CnB1YmxpYyBzdGF0aWMgYm9vbGVhbiA8Qj52YWxpZGF0ZU1heExlbmd0aDwvQj4oamF2YS5sYW5nLk9iamVjdCZuYnNwO2JlYW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLlZhbGlkYXRvckFjdGlvbiZuYnNwO3ZhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5GaWVsZCZuYnNwO2ZpZWxkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkVycm9ycy5odG1sIj5BY3Rpb25FcnJvcnM8L0E+Jm5ic3A7ZXJyb3JzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCZuYnNwO3JlcXVlc3QpPC9QUkU+CjxETD4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOzxJPkFzIG9mIFN0cnV0cyAxLjEsIHJlcGxhY2VkIGJ5IDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL3ZhbGlkYXRvci9GaWVsZENoZWNrcy5odG1sI3ZhbGlkYXRlTWF4TGVuZ3RoKGphdmEubGFuZy5PYmplY3QsIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuVmFsaWRhdG9yQWN0aW9uLCBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLkZpZWxkLCBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uRXJyb3JzLCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSI+PENPREU+RmllbGRDaGVja3MudmFsaWRhdGVNYXhMZW5ndGgoT2JqZWN0LFZhbGlkYXRvckFjdGlvbixGaWVsZCxBY3Rpb25FcnJvcnMsSHR0cFNlcnZsZXRSZXF1ZXN0KTwvQ09ERT48L0E+PC9JPgo8UD4KPEREPjxwPgoKICBDaGVja3MgaWYgdGhlIGZpZWxkJ3MgbGVuZ3RoIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgbWF4aW11bSB2YWx1ZS4KICBBIDxjb2RlPk51bGw8L2NvZGU+IHdpbGwgYmUgY29uc2lkZXJlZCBhbiBlcnJvci48L3A+CjxQPgo8REQ+PERMPgo8L0RMPgo8L0REPgo8REQ+PERMPgo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmJlYW48L0NPREU+IC0gVGhlIGJlYW4gdmFsaWRhdGlvbiBpcyBiZWluZyBwZXJmb3JtZWQgb24uPEREPjxDT0RFPnZhPC9DT0RFPiAtIFRoZSA8Y29kZT5WYWxpZGF0b3JBY3Rpb248L2NvZGU+IHRoYXQgaXMgY3VycmVudGx5IGJlaW5nIHBlcmZvcm1lZC48REQ+PENPREU+ZmllbGQ8L0NPREU+IC0gVGhlIDxjb2RlPkZpZWxkPC9jb2RlPiBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXJyZW50CiAgICAgIGZpZWxkIGJlaW5nIHZhbGlkYXRlZC48REQ+PENPREU+ZXJyb3JzPC9DT0RFPiAtIFRoZSA8Y29kZT5BY3Rpb25FcnJvcnM8L2NvZGU+IG9iamVjdCB0byBhZGQgZXJyb3JzIHRvIGlmIGFueQogICAgICB2YWxpZGF0aW9uIGVycm9ycyBvY2N1ci48REQ+PENPREU+cmVxdWVzdDwvQ09ERT4gLSBDdXJyZW50IHJlcXVlc3Qgb2JqZWN0Lgo8RFQ+PEI+UmV0dXJuczo8L0I+PEREPlRydWUgaWYgc3RhdGVkIGNvbmRpdGlvbnMgbWV0LjwvREw+CjwvREQ+CjwvREw+CjxIUj4KCjxBIE5BTUU9InZhbGlkYXRlTWluTGVuZ3RoKGphdmEubGFuZy5PYmplY3QsIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuVmFsaWRhdG9yQWN0aW9uLCBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLkZpZWxkLCBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uRXJyb3JzLCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSI+PCEtLSAtLT48L0E+PEgzPgp2YWxpZGF0ZU1pbkxlbmd0aDwvSDM+CjxQUkU+CnB1YmxpYyBzdGF0aWMgYm9vbGVhbiA8Qj52YWxpZGF0ZU1pbkxlbmd0aDwvQj4oamF2YS5sYW5nLk9iamVjdCZuYnNwO2JlYW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLlZhbGlkYXRvckFjdGlvbiZuYnNwO3ZhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLmFwYWNoZS5jb21tb25zLnZhbGlkYXRvci5GaWVsZCZuYnNwO2ZpZWxkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvYWN0aW9uL0FjdGlvbkVycm9ycy5odG1sIj5BY3Rpb25FcnJvcnM8L0E+Jm5ic3A7ZXJyb3JzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdCZuYnNwO3JlcXVlc3QpPC9QUkU+CjxETD4KPEREPjxCPkRlcHJlY2F0ZWQuPC9CPiZuYnNwOzxJPkFzIG9mIFN0cnV0cyAxLjEsIHJlcGxhY2VkIGJ5IDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL3ZhbGlkYXRvci9GaWVsZENoZWNrcy5odG1sI3ZhbGlkYXRlTWluTGVuZ3RoKGphdmEubGFuZy5PYmplY3QsIG9yZy5hcGFjaGUuY29tbW9ucy52YWxpZGF0b3IuVmFsaWRhdG9yQWN0aW9uLCBvcmcuYXBhY2hlLmNvbW1vbnMudmFsaWRhdG9yLkZpZWxkLCBvcmcuYXBhY2hlLnN0cnV0cy5hY3Rpb24uQWN0aW9uRXJyb3JzLCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0KSI+PENPREU+RmllbGRDaGVja3MudmFsaWRhdGVNaW5MZW5ndGgoT2JqZWN0LFZhbGlkYXRvckFjdGlvbixGaWVsZCxBY3Rpb25FcnJvcnMsSHR0cFNlcnZsZXRSZXF1ZXN0KTwvQ09ERT48L0E+PC9JPgo8UD4KPEREPjxwPgoKICBDaGVja3MgaWYgdGhlIGZpZWxkJ3MgbGVuZ3RoIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgbWluaW11bSB2YWx1ZS4KICBBIDxjb2RlPk51bGw8L2NvZGU+IHdpbGwgYmUgY29uc2lkZXJlZCBhbiBlcnJvci48L3A+CjxQPgo8REQ+PERMPgo8L0RMPgo8L0REPgo8REQ+PERMPgo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmJlYW48L0NPREU+IC0gVGhlIGJlYW4gdmFsaWRhdGlvbiBpcyBiZWluZyBwZXJmb3JtZWQgb24uPEREPjxDT0RFPnZhPC9DT0RFPiAtIFRoZSA8Y29kZT5WYWxpZGF0b3JBY3Rpb248L2NvZGU+IHRoYXQgaXMgY3VycmVudGx5IGJlaW5nIHBlcmZvcm1lZC48REQ+PENPREU+ZmllbGQ8L0NPREU+IC0gVGhlIDxjb2RlPkZpZWxkPC9jb2RlPiBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXJyZW50CiAgICAgIGZpZWxkIGJlaW5nIHZhbGlkYXRlZC48REQ+PENPREU+ZXJyb3JzPC9DT0RFPiAtIFRoZSA8Y29kZT5BY3Rpb25FcnJvcnM8L2NvZGU+IG9iamVjdCB0byBhZGQgZXJyb3JzIHRvIGlmIGFueQogICAgICB2YWxpZGF0aW9uIGVycm9ycyBvY2N1ci48REQ+PENPREU+cmVxdWVzdDwvQ09ERT4gLSBDdXJyZW50IHJlcXVlc3Qgb2JqZWN0Lgo8RFQ+PEI+UmV0dXJuczo8L0I+PEREPlRydWUgaWYgc3RhdGVkIGNvbmRpdGlvbnMgbWV0LjwvREw+CjwvREQ+CjwvREw+CjwhLS0gPT09PT09PT09IEVORCBPRiBDTEFTUyBEQVRBID09PT09PT09PSAtLT4KPEhSPgoKPCEtLSA9PT09PT09PT09IFNUQVJUIE9GIE5BVkJBUiA9PT09PT09PT09IC0tPgo8QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCI+CjxUUj4KPFREIENPTFNQQU49MyBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgo8QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIj4KICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL1N0cnV0c1ZhbGlkYXRvci5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+CiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXgtYWxsLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgogIDwvVFI+CjwvVEFCTEU+CjwvVEQ+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgo8L0VNPgo8L1REPgo8L1RSPgoKPFRSPgo8VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgombmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy91dGlsL1NlcnZsZXRDb250ZXh0V3JpdGVyLmh0bWwiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOwombmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy91dGlsL1N0cnV0c1ZhbGlkYXRvclV0aWwuaHRtbCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+CjxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+CiAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vaW5kZXguaHRtbCIgVEFSR0VUPSJfdG9wIj48Qj5GUkFNRVM8L0I+PC9BPiAgJm5ic3A7CiZuYnNwOzxBIEhSRUY9IlN0cnV0c1ZhbGlkYXRvci5odG1sIiBUQVJHRVQ9Il90b3AiPjxCPk5PIEZSQU1FUzwvQj48L0E+ICAmbmJzcDsKJm5ic3A7CjxTQ1JJUFQ+CiAgPCEtLQogIGlmKHdpbmRvdz09dG9wKSB7CiAgICBkb2N1bWVudC53cml0ZWxuKCc8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCIgVEFSR0VUPSIiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4nKTsKICB9CiAgLy8tLT4KPC9TQ1JJUFQ+CjxOT1NDUklQVD4KPEEgSFJFRj0iLi4vLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiIFRBUkdFVD0iIj48Qj5BbGwgQ2xhc3NlczwvQj48L0E+CjwvTk9TQ1JJUFQ+CjwvRk9OVD48L1REPgo8L1RSPgo8VFI+CjxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+CiAgU1VNTUFSWTombmJzcDtORVNURUQmbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2ZpZWxkX3N1bW1hcnkiPkZJRUxEPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjY29uc3RydWN0b3Jfc3VtbWFyeSI+Q09OU1RSPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KREVUQUlMOiZuYnNwOzxBIEhSRUY9IiNmaWVsZF9kZXRhaWwiPkZJRUxEPC9BPiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjY29uc3RydWN0b3JfZGV0YWlsIj5DT05TVFI8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNtZXRob2RfZGV0YWlsIj5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+CjwvVFI+CjwvVEFCTEU+CjwhLS0gPT09PT09PT09PT0gRU5EIE9GIE5BVkJBUiA9PT09PT09PT09PSAtLT4KCjxIUj4KQ29weXJpZ2h0IKkgMjAwMC0yMDAzIC0gQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KPC9CT0RZPgo8L0hUTUw+Cg==