PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBGcmFtZXNldC8vRU4iImh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy1odG1sNDAvZnJhbWVzZXQuZHRkIj4KPCEtLU5ld1BhZ2UtLT4KPEhUTUw+CjxIRUFEPgo8IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIG9uIFdlZCBBcHIgMTQgMDg6MjY6MzUgRURUIDIwMDQgLS0+CjxUSVRMRT4KVmVsb2NpdHkgMS40IEFQSTogQ2xhc3MgIFViZXJzcGVjdEltcGwuVmVsTWV0aG9kSW1wbAo8L1RJVExFPgo8TElOSyBSRUwgPSJzdHlsZXNoZWV0IiBUWVBFPSJ0ZXh0L2NzcyIgSFJFRj0iLi4vLi4vLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIFRJVExFPSJTdHlsZSI+CjwvSEVBRD4KPEJPRFkgQkdDT0xPUj0id2hpdGUiPgoKPCEtLSA9PT09PT09PT09IFNUQVJUIE9GIE5BVkJBUiA9PT09PT09PT09IC0tPgo8QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCI+CjxUUj4KPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgo8QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIj4KICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL1ViZXJzcGVjdEltcGwuVmVsTWV0aG9kSW1wbC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+CiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXgtYWxsLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgogIDwvVFI+CjwvVEFCTEU+CjwvVEQ+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgo8L0VNPgo8L1REPgo8L1RSPgoKPFRSPgo8VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgombmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9VYmVyc3BlY3RJbXBsLlZlbEdldHRlckltcGwuaHRtbCI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7CiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL1ViZXJzcGVjdEltcGwuVmVsU2V0dGVySW1wbC5odG1sIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sIiBUQVJHRVQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKJm5ic3A7PEEgSFJFRj0iVWJlcnNwZWN0SW1wbC5WZWxNZXRob2RJbXBsLmh0bWwiIFRBUkdFVD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT48L0ZPTlQ+PC9URD4KPC9UUj4KPFRSPgo8VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgogIFNVTU1BUlk6ICZuYnNwO0lOTkVSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNmaWVsZF9zdW1tYXJ5Ij5GSUVMRDwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2NvbnN0cnVjdG9yX3N1bW1hcnkiPkNPTlNUUjwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+CjxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+CkRFVEFJTDogJm5ic3A7PEEgSFJFRj0iI2ZpZWxkX2RldGFpbCI+RklFTEQ8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNjb25zdHJ1Y3Rvcl9kZXRhaWwiPkNPTlNUUjwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KPC9UUj4KPC9UQUJMRT4KPCEtLSA9PT09PT09PT09PSBFTkQgT0YgTkFWQkFSID09PT09PT09PT09IC0tPgoKPEhSPgo8IS0tID09PT09PT09IFNUQVJUIE9GIENMQVNTIERBVEEgPT09PT09PT0gLS0+CjxIMj4KPEZPTlQgU0laRT0iLTEiPgpvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbjwvRk9OVD4KPEJSPgpDbGFzcyAgVWJlcnNwZWN0SW1wbC5WZWxNZXRob2RJbXBsPC9IMj4KPFBSRT4KamF2YS5sYW5nLk9iamVjdAogIHwKICArLS08Qj5vcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi5VYmVyc3BlY3RJbXBsLlZlbE1ldGhvZEltcGw8L0I+CjwvUFJFPgo8REw+CjxEVD48Qj5BbGwgSW1wbGVtZW50ZWQgSW50ZXJmYWNlczo8L0I+IDxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9WZWxNZXRob2QuaHRtbCI+VmVsTWV0aG9kPC9BPjwvREQ+CjwvREw+CjxETD4KPERUPjxCPkVuY2xvc2luZyBjbGFzczogPC9CPjxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9VYmVyc3BlY3RJbXBsLmh0bWwiPlViZXJzcGVjdEltcGw8L0E+PC9ERD4KPC9ETD4KPEhSPgo8REw+CjxEVD5wdWJsaWMgY2xhc3MgPEI+VWJlcnNwZWN0SW1wbC5WZWxNZXRob2RJbXBsPC9CPjxEVD5leHRlbmRzIGphdmEubGFuZy5PYmplY3Q8RFQ+aW1wbGVtZW50cyA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9WZWxNZXRob2QuaHRtbCI+VmVsTWV0aG9kPC9BPjwvREw+Cgo8UD4KSW1wbGVtZW50YXRpb24gb2YgVmVsTWV0aG9kCjxQPgo8SFI+Cgo8UD4KPCEtLSA9PT09PT09PSBJTk5FUiBDTEFTUyBTVU1NQVJZID09PT09PT09IC0tPgoKCjwhLS0gPT09PT09PT09PT0gRklFTEQgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KCjxBIE5BTUU9ImZpZWxkX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIxIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFdJRFRIPSIxMDAlIj4KPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+CjxURCBDT0xTUEFOPTI+PEZPTlQgU0laRT0iKzIiPgo8Qj5GaWVsZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT4ocGFja2FnZSBwcml2YXRlKSAmbmJzcDtqYXZhLmxhbmcucmVmbGVjdC5NZXRob2Q8L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9VYmVyc3BlY3RJbXBsLlZlbE1ldGhvZEltcGwuaHRtbCNtZXRob2QiPm1ldGhvZDwvQT48L0I+PC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L1REPgo8L1RSPgo8L1RBQkxFPgombmJzcDsKPCEtLSA9PT09PT09PSBDT05TVFJVQ1RPUiBTVU1NQVJZID09PT09PT09IC0tPgoKPEEgTkFNRT0iY29uc3RydWN0b3Jfc3VtbWFyeSI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjEiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgV0lEVEg9IjEwMCUiPgo8VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KPFREIENPTFNQQU49Mj48Rk9OVCBTSVpFPSIrMiI+CjxCPkNvbnN0cnVjdG9yIFN1bW1hcnk8L0I+PC9GT05UPjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPnByaXZhdGUgPC9DT0RFPjwvRk9OVD48L1REPgo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vVWJlcnNwZWN0SW1wbC5WZWxNZXRob2RJbXBsLmh0bWwjVWJlcnNwZWN0SW1wbC5WZWxNZXRob2RJbXBsKG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLlViZXJzcGVjdEltcGwpIj5VYmVyc3BlY3RJbXBsLlZlbE1ldGhvZEltcGw8L0E+PC9CPigpPC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT4mbmJzcDs8L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9VYmVyc3BlY3RJbXBsLlZlbE1ldGhvZEltcGwuaHRtbCNVYmVyc3BlY3RJbXBsLlZlbE1ldGhvZEltcGwob3JnLmFwYWNoZS52ZWxvY2l0eS51dGlsLmludHJvc3BlY3Rpb24uVWJlcnNwZWN0SW1wbCwgamF2YS5sYW5nLnJlZmxlY3QuTWV0aG9kKSI+VWJlcnNwZWN0SW1wbC5WZWxNZXRob2RJbXBsPC9BPjwvQj4oamF2YS5sYW5nLnJlZmxlY3QuTWV0aG9kJm5ic3A7bSk8L0NPREU+Cgo8QlI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvVEQ+CjwvVFI+CjwvVEFCTEU+CiZuYnNwOwo8IS0tID09PT09PT09PT0gTUVUSE9EIFNVTU1BUlkgPT09PT09PT09PT0gLS0+Cgo8QSBOQU1FPSJtZXRob2Rfc3VtbWFyeSI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjEiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgV0lEVEg9IjEwMCUiPgo8VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KPFREIENPTFNQQU49Mj48Rk9OVCBTSVpFPSIrMiI+CjxCPk1ldGhvZCBTdW1tYXJ5PC9CPjwvRk9OVD48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT4mbmJzcDtqYXZhLmxhbmcuU3RyaW5nPC9DT0RFPjwvRk9OVD48L1REPgo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vVWJlcnNwZWN0SW1wbC5WZWxNZXRob2RJbXBsLmh0bWwjZ2V0TWV0aG9kTmFtZSgpIj5nZXRNZXRob2ROYW1lPC9BPjwvQj4oKTwvQ09ERT4KCjxCUj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7cmV0dXJucyB0aGUgbWV0aG9kIG5hbWUgdXNlZDwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPiZuYnNwO2phdmEubGFuZy5DbGFzczwvQ09ERT48L0ZPTlQ+PC9URD4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL1ViZXJzcGVjdEltcGwuVmVsTWV0aG9kSW1wbC5odG1sI2dldFJldHVyblR5cGUoKSI+Z2V0UmV0dXJuVHlwZTwvQT48L0I+KCk8L0NPREU+Cgo8QlI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO3JldHVybnMgdGhlIHJldHVybiB0eXBlIG9mIHRoZSBtZXRob2QgaW52b2tlZDwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPiZuYnNwO2phdmEubGFuZy5PYmplY3Q8L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9VYmVyc3BlY3RJbXBsLlZlbE1ldGhvZEltcGwuaHRtbCNpbnZva2UoamF2YS5sYW5nLk9iamVjdCwgamF2YS5sYW5nLk9iamVjdFtdKSI+aW52b2tlPC9BPjwvQj4oamF2YS5sYW5nLk9iamVjdCZuYnNwO28sCiAgICAgICBqYXZhLmxhbmcuT2JqZWN0W10mbmJzcDtwYXJhbXMpPC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtpbnZvY2F0aW9uIG1ldGhvZCAtIGNhbGxlZCB3aGVuIHRoZSBtZXRob2QgaW52b2NhdGlvbnNob3VsZCBiZQogIHByZWZvcm1lZCBhbmQgYSB2YWx1ZSByZXR1cm5lZDwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPiZuYnNwO2Jvb2xlYW48L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9VYmVyc3BlY3RJbXBsLlZlbE1ldGhvZEltcGwuaHRtbCNpc0NhY2hlYWJsZSgpIj5pc0NhY2hlYWJsZTwvQT48L0I+KCk8L0NPREU+Cgo8QlI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO3NwZWNpZmllcyBpZiB0aGlzIFZlbE1ldGhvZCBpcyBjYWNoZWFibGUgYW5kIGFibGUgdG8gYmUKICByZXVzZWQgZm9yIHRoaXMgY2xhc3Mgb2Ygb2JqZWN0IGl0IHdhcyByZXR1cm5lZCBmb3I8L1REPgo8L1RSPgo8L1RBQkxFPgombmJzcDs8QSBOQU1FPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmEubGFuZy5PYmplY3QiPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIxIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFdJRFRIPSIxMDAlIj4KPFRSIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJUYWJsZVN1YkhlYWRpbmdDb2xvciI+CjxURD48Qj5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGNsYXNzIGphdmEubGFuZy5PYmplY3Q8L0I+PC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURD48Q09ERT48Y2xpbml0PiwgY2xvbmUsIGVxdWFscywgZmluYWxpemUsIGdldENsYXNzLCBoYXNoQ29kZSwgbm90aWZ5LCBub3RpZnlBbGwsIHJlZ2lzdGVyTmF0aXZlcywgdG9TdHJpbmcsIHdhaXQsIHdhaXQsIHdhaXQ8L0NPREU+PC9URD4KPC9UUj4KPC9UQUJMRT4KJm5ic3A7CjxQPgoKPCEtLSA9PT09PT09PT09PT0gRklFTEQgREVUQUlMID09PT09PT09PT09IC0tPgoKPEEgTkFNRT0iZmllbGRfZGV0YWlsIj48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMSIgQ0VMTFBBRERJTkc9IjMiIENFTExTUEFDSU5HPSIwIiBXSURUSD0iMTAwJSI+CjxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPgo8VEQgQ09MU1BBTj0xPjxGT05UIFNJWkU9IisyIj4KPEI+RmllbGQgRGV0YWlsPC9CPjwvRk9OVD48L1REPgo8L1RSPgo8L1RBQkxFPgoKPEEgTkFNRT0ibWV0aG9kIj48IS0tIC0tPjwvQT48SDM+Cm1ldGhvZDwvSDM+CjxQUkU+CmphdmEubGFuZy5yZWZsZWN0Lk1ldGhvZCA8Qj5tZXRob2Q8L0I+PC9QUkU+CjxETD4KPC9ETD4KCjwhLS0gPT09PT09PT09IENPTlNUUlVDVE9SIERFVEFJTCA9PT09PT09PSAtLT4KCjxBIE5BTUU9ImNvbnN0cnVjdG9yX2RldGFpbCI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjEiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgV0lEVEg9IjEwMCUiPgo8VFIgQkdDT0xPUj0iI0NDQ0NGRiIgQ0xBU1M9IlRhYmxlSGVhZGluZ0NvbG9yIj4KPFREIENPTFNQQU49MT48Rk9OVCBTSVpFPSIrMiI+CjxCPkNvbnN0cnVjdG9yIERldGFpbDwvQj48L0ZPTlQ+PC9URD4KPC9UUj4KPC9UQUJMRT4KCjxBIE5BTUU9IlViZXJzcGVjdEltcGwuVmVsTWV0aG9kSW1wbChvcmcuYXBhY2hlLnZlbG9jaXR5LnV0aWwuaW50cm9zcGVjdGlvbi5VYmVyc3BlY3RJbXBsLCBqYXZhLmxhbmcucmVmbGVjdC5NZXRob2QpIj48IS0tIC0tPjwvQT48SDM+ClViZXJzcGVjdEltcGwuVmVsTWV0aG9kSW1wbDwvSDM+CjxQUkU+CnB1YmxpYyA8Qj5VYmVyc3BlY3RJbXBsLlZlbE1ldGhvZEltcGw8L0I+KGphdmEubGFuZy5yZWZsZWN0Lk1ldGhvZCZuYnNwO20pPC9QUkU+CjxETD4KPC9ETD4KPEhSPgoKPEEgTkFNRT0iVWJlcnNwZWN0SW1wbC5WZWxNZXRob2RJbXBsKG9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLlViZXJzcGVjdEltcGwpIj48IS0tIC0tPjwvQT48SDM+ClViZXJzcGVjdEltcGwuVmVsTWV0aG9kSW1wbDwvSDM+CjxQUkU+CnByaXZhdGUgPEI+VWJlcnNwZWN0SW1wbC5WZWxNZXRob2RJbXBsPC9CPigpPC9QUkU+CjxETD4KPC9ETD4KCjwhLS0gPT09PT09PT09PT09IE1FVEhPRCBERVRBSUwgPT09PT09PT09PSAtLT4KCjxBIE5BTUU9Im1ldGhvZF9kZXRhaWwiPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIxIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFdJRFRIPSIxMDAlIj4KPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+CjxURCBDT0xTUEFOPTE+PEZPTlQgU0laRT0iKzIiPgo8Qj5NZXRob2QgRGV0YWlsPC9CPjwvRk9OVD48L1REPgo8L1RSPgo8L1RBQkxFPgoKPEEgTkFNRT0iaW52b2tlKGphdmEubGFuZy5PYmplY3QsIGphdmEubGFuZy5PYmplY3RbXSkiPjwhLS0gLS0+PC9BPjxIMz4KaW52b2tlPC9IMz4KPFBSRT4KcHVibGljIGphdmEubGFuZy5PYmplY3QgPEI+aW52b2tlPC9CPihqYXZhLmxhbmcuT2JqZWN0Jm5ic3A7bywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphdmEubGFuZy5PYmplY3RbXSZuYnNwO3BhcmFtcykKICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb248L1BSRT4KPERMPgo8REQ+PEI+RGVzY3JpcHRpb24gY29waWVkIGZyb20gaW50ZXJmYWNlOiA8Q09ERT48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9WZWxNZXRob2QuaHRtbCI+VmVsTWV0aG9kPC9BPjwvQ09ERT48L0I+PC9ERD4KPEREPmludm9jYXRpb24gbWV0aG9kIC0gY2FsbGVkIHdoZW4gdGhlIG1ldGhvZCBpbnZvY2F0aW9uc2hvdWxkIGJlCiAgcHJlZm9ybWVkIGFuZCBhIHZhbHVlIHJldHVybmVkPEREPjxETD4KPERUPjxCPlNwZWNpZmllZCBieTogPC9CPjxERD48Q09ERT48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9WZWxNZXRob2QuaHRtbCNpbnZva2UoamF2YS5sYW5nLk9iamVjdCwgamF2YS5sYW5nLk9iamVjdFtdKSI+aW52b2tlPC9BPjwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL1ZlbE1ldGhvZC5odG1sIj5WZWxNZXRob2Q8L0E+PC9DT0RFPjwvREw+CjwvREQ+CjwvREw+CjxIUj4KCjxBIE5BTUU9ImlzQ2FjaGVhYmxlKCkiPjwhLS0gLS0+PC9BPjxIMz4KaXNDYWNoZWFibGU8L0gzPgo8UFJFPgpwdWJsaWMgYm9vbGVhbiA8Qj5pc0NhY2hlYWJsZTwvQj4oKTwvUFJFPgo8REw+CjxERD48Qj5EZXNjcmlwdGlvbiBjb3BpZWQgZnJvbSBpbnRlcmZhY2U6IDxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL1ZlbE1ldGhvZC5odG1sIj5WZWxNZXRob2Q8L0E+PC9DT0RFPjwvQj48L0REPgo8REQ+c3BlY2lmaWVzIGlmIHRoaXMgVmVsTWV0aG9kIGlzIGNhY2hlYWJsZSBhbmQgYWJsZSB0byBiZQogIHJldXNlZCBmb3IgdGhpcyBjbGFzcyBvZiBvYmplY3QgaXQgd2FzIHJldHVybmVkIGZvcjxERD48REw+CjxEVD48Qj5TcGVjaWZpZWQgYnk6IDwvQj48REQ+PENPREU+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vVmVsTWV0aG9kLmh0bWwjaXNDYWNoZWFibGUoKSI+aXNDYWNoZWFibGU8L0E+PC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vVmVsTWV0aG9kLmh0bWwiPlZlbE1ldGhvZDwvQT48L0NPREU+PC9ETD4KPC9ERD4KPEREPkZvbGxvd2luZyBjb3BpZWQgZnJvbSBpbnRlcmZhY2U6IDxDT0RFPm9yZy5hcGFjaGUudmVsb2NpdHkudXRpbC5pbnRyb3NwZWN0aW9uLlZlbE1ldGhvZDwvQ09ERT48L0REPgo8REQ+PERMPgo8RFQ+PEI+UmV0dXJuczo8L0I+PEREPnRydWUgaWYgY2FuIGJlIHJldXNlZCBmb3IgdGhpcyBjbGFzcywgZmFsc2UgaWYgbm90PC9ETD4KPC9ERD4KPC9ETD4KPEhSPgoKPEEgTkFNRT0iZ2V0TWV0aG9kTmFtZSgpIj48IS0tIC0tPjwvQT48SDM+CmdldE1ldGhvZE5hbWU8L0gzPgo8UFJFPgpwdWJsaWMgamF2YS5sYW5nLlN0cmluZyA8Qj5nZXRNZXRob2ROYW1lPC9CPigpPC9QUkU+CjxETD4KPEREPjxCPkRlc2NyaXB0aW9uIGNvcGllZCBmcm9tIGludGVyZmFjZTogPENPREU+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vVmVsTWV0aG9kLmh0bWwiPlZlbE1ldGhvZDwvQT48L0NPREU+PC9CPjwvREQ+CjxERD5yZXR1cm5zIHRoZSBtZXRob2QgbmFtZSB1c2VkPEREPjxETD4KPERUPjxCPlNwZWNpZmllZCBieTogPC9CPjxERD48Q09ERT48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9WZWxNZXRob2QuaHRtbCNnZXRNZXRob2ROYW1lKCkiPmdldE1ldGhvZE5hbWU8L0E+PC9DT0RFPiBpbiBpbnRlcmZhY2UgPENPREU+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vVmVsTWV0aG9kLmh0bWwiPlZlbE1ldGhvZDwvQT48L0NPREU+PC9ETD4KPC9ERD4KPC9ETD4KPEhSPgoKPEEgTkFNRT0iZ2V0UmV0dXJuVHlwZSgpIj48IS0tIC0tPjwvQT48SDM+CmdldFJldHVyblR5cGU8L0gzPgo8UFJFPgpwdWJsaWMgamF2YS5sYW5nLkNsYXNzIDxCPmdldFJldHVyblR5cGU8L0I+KCk8L1BSRT4KPERMPgo8REQ+PEI+RGVzY3JpcHRpb24gY29waWVkIGZyb20gaW50ZXJmYWNlOiA8Q09ERT48QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9WZWxNZXRob2QuaHRtbCI+VmVsTWV0aG9kPC9BPjwvQ09ERT48L0I+PC9ERD4KPEREPnJldHVybnMgdGhlIHJldHVybiB0eXBlIG9mIHRoZSBtZXRob2QgaW52b2tlZDxERD48REw+CjxEVD48Qj5TcGVjaWZpZWQgYnk6IDwvQj48REQ+PENPREU+PEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS92ZWxvY2l0eS91dGlsL2ludHJvc3BlY3Rpb24vVmVsTWV0aG9kLmh0bWwjZ2V0UmV0dXJuVHlwZSgpIj5nZXRSZXR1cm5UeXBlPC9BPjwvQ09ERT4gaW4gaW50ZXJmYWNlIDxDT0RFPjxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL1ZlbE1ldGhvZC5odG1sIj5WZWxNZXRob2Q8L0E+PC9DT0RFPjwvREw+CjwvREQ+CjwvREw+CjwhLS0gPT09PT09PT09IEVORCBPRiBDTEFTUyBEQVRBID09PT09PT09PSAtLT4KPEhSPgoKPCEtLSA9PT09PT09PT09IFNUQVJUIE9GIE5BVkJBUiA9PT09PT09PT09IC0tPgo8QSBOQU1FPSJuYXZiYXJfYm90dG9tIj48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCI+CjxUUj4KPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPgo8QSBOQU1FPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIj4KICA8VFIgQUxJR049ImNlbnRlciIgVkFMSUdOPSJ0b3AiPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0ZGRkZGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxUmV2Ij4gJm5ic3A7PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxUmV2Ij48Qj5DbGFzczwvQj48L0ZPTlQ+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL1ViZXJzcGVjdEltcGwuVmVsTWV0aG9kSW1wbC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlVzZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+CiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vLi4vaW5kZXgtYWxsLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SW5kZXg8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgogIDwvVFI+CjwvVEFCTEU+CjwvVEQ+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPgo8L0VNPgo8L1REPgo8L1RSPgoKPFRSPgo8VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPgombmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3ZlbG9jaXR5L3V0aWwvaW50cm9zcGVjdGlvbi9VYmVyc3BlY3RJbXBsLlZlbEdldHRlckltcGwuaHRtbCI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7CiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uLy4uL29yZy9hcGFjaGUvdmVsb2NpdHkvdXRpbC9pbnRyb3NwZWN0aW9uL1ViZXJzcGVjdEltcGwuVmVsU2V0dGVySW1wbC5odG1sIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4KPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KICA8QSBIUkVGPSIuLi8uLi8uLi8uLi8uLi9pbmRleC5odG1sIiBUQVJHRVQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKJm5ic3A7PEEgSFJFRj0iVWJlcnNwZWN0SW1wbC5WZWxNZXRob2RJbXBsLmh0bWwiIFRBUkdFVD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT48L0ZPTlQ+PC9URD4KPC9UUj4KPFRSPgo8VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPgogIFNVTU1BUlk6ICZuYnNwO0lOTkVSJm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNmaWVsZF9zdW1tYXJ5Ij5GSUVMRDwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI2NvbnN0cnVjdG9yX3N1bW1hcnkiPkNPTlNUUjwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+CjxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+CkRFVEFJTDogJm5ic3A7PEEgSFJFRj0iI2ZpZWxkX2RldGFpbCI+RklFTEQ8L0E+Jm5ic3A7fCZuYnNwOzxBIEhSRUY9IiNjb25zdHJ1Y3Rvcl9kZXRhaWwiPkNPTlNUUjwvQT4mbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KPC9UUj4KPC9UQUJMRT4KPCEtLSA9PT09PT09PT09PSBFTkQgT0YgTkFWQkFSID09PT09PT09PT09IC0tPgoKPEhSPgpDb3B5cmlnaHQgqSAyMDAyIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLiBBbGwgUmlnaHRzIFJlc2VydmVkLgo8L0JPRFk+CjwvSFRNTD4K