PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwvL0VOIiJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwL2xvb3NlLmR0ZCI+CjwhLS1OZXdQYWdlLS0+CjxIVE1MPgo8SEVBRD4KPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyBvbiBGcmkgQXVnIDIyIDAzOjQ0OjA4IEVEVCAyMDAzIC0tPgo8VElUTEU+Ck1vZHVsZUNvbmZpZyAoQXBhY2hlIFN0cnV0cyBBUEkgRG9jdW1lbnRhdGlvbikKPC9USVRMRT4KPE1FVEEgTkFNRT0ia2V5d29yZHMiIENPTlRFTlQ9Im9yZy5hcGFjaGUuc3RydXRzLmNvbmZpZy5Nb2R1bGVDb25maWcsTW9kdWxlQ29uZmlnIGludGVyZmFjZSI+CjxMSU5LIFJFTCA9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVGPSIuLi8uLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgVElUTEU9IlN0eWxlIj4KPC9IRUFEPgo8U0NSSVBUPgpmdW5jdGlvbiBhc2QoKQp7CnBhcmVudC5kb2N1bWVudC50aXRsZT0iTW9kdWxlQ29uZmlnIChBcGFjaGUgU3RydXRzIEFQSSBEb2N1bWVudGF0aW9uKSI7Cn0KPC9TQ1JJUFQ+CjxCT0RZIEJHQ09MT1I9IndoaXRlIiBvbmxvYWQ9ImFzZCgpOyI+Cgo8IS0tID09PT09PT09PT0gU1RBUlQgT0YgTkFWQkFSID09PT09PT09PT0gLS0+CjxBIE5BTUU9Im5hdmJhcl90b3AiPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIj4KPFRSPgo8VEQgQ09MU1BBTj0zIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+CjxBIE5BTUU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiPgogIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+CiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+CiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvTW9kdWxlQ29uZmlnLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+CiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC1hbGwuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+CiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+CiAgPC9UUj4KPC9UQUJMRT4KPC9URD4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+CjwvRU0+CjwvVEQ+CjwvVFI+Cgo8VFI+CjxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+CiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2NvbmZpZy9Db25maWdIZWxwZXJJbnRlcmZhY2UuaHRtbCI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7CiZuYnNwO05FWFQgQ0xBU1M8L0ZPTlQ+PC9URD4KPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC5odG1sIiBUQVJHRVQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKJm5ic3A7PEEgSFJFRj0iTW9kdWxlQ29uZmlnLmh0bWwiIFRBUkdFVD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwombmJzcDsKPFNDUklQVD4KICA8IS0tCiAgaWYod2luZG93PT10b3ApIHsKICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIiBUQVJHRVQ9IiI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwogIH0KICAvLy0tPgo8L1NDUklQVD4KPE5PU0NSSVBUPgo8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCIgVEFSR0VUPSIiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KPC9OT1NDUklQVD4KPC9GT05UPjwvVEQ+CjwvVFI+CjxUUj4KPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+CjxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+CkRFVEFJTDombmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KPC9UUj4KPC9UQUJMRT4KPCEtLSA9PT09PT09PT09PSBFTkQgT0YgTkFWQkFSID09PT09PT09PT09IC0tPgoKPEhSPgo8IS0tID09PT09PT09IFNUQVJUIE9GIENMQVNTIERBVEEgPT09PT09PT0gLS0+CjxIMj4KPEZPTlQgU0laRT0iLTEiPgpvcmcuYXBhY2hlLnN0cnV0cy5jb25maWc8L0ZPTlQ+CjxCUj4KSW50ZXJmYWNlIE1vZHVsZUNvbmZpZzwvSDI+CjxETD4KPERUPjxCPkFsbCBLbm93biBJbXBsZW1lbnRpbmcgQ2xhc3Nlczo8L0I+IDxERD48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9jb25maWcvaW1wbC9Nb2R1bGVDb25maWdJbXBsLmh0bWwiPk1vZHVsZUNvbmZpZ0ltcGw8L0E+PC9ERD4KPC9ETD4KPEhSPgo8REw+CjxEVD5wdWJsaWMgaW50ZXJmYWNlIDxCPk1vZHVsZUNvbmZpZzwvQj48L0RMPgoKPFA+CjxwPlRoZSBjb2xsZWN0aW9uIG9mIHN0YXRpYyBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIHRoYXQgZGVzY3JpYmVzIGEKIFN0cnV0cy1iYXNlZCBtb2R1bGUuICBNdWx0aXBsZSBtb2R1bGVzIGFyZSBpZGVudGlmaWVkIGJ5CiBhIDxlbT5wcmVmaXg8L2VtPiBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBjb250ZXh0CiByZWxhdGl2ZSBwb3J0aW9uIG9mIHRoZSByZXF1ZXN0IFVSSS4gIElmIG5vIG1vZHVsZSBwcmVmaXggY2FuIGJlCiBtYXRjaGVkLCB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uICh3aXRoIGEgcHJlZml4IGVxdWFsIHRvIGEgemVyby1sZW5ndGgKIHN0cmluZykgaXMgc2VsZWN0ZWQsIHdoaWNoIGlzIGVsZWdhbnRseSBiYWNrd2FyZHMgY29tcGF0aWJsZSB3aXRoIHRoZQogcHJldmlvdXMgU3RydXRzIGJlaGF2aW9yIHRoYXQgb25seSBzdXBwb3J0ZWQgb25lIG1vZHVsZS48L3A+CjxQPgoKPFA+CjxETD4KPERUPjxCPlNpbmNlOjwvQj48L0RUPgogIDxERD5TdHJ1dHMgMS4xPC9ERD4KPERUPjxCPlZlcnNpb246PC9CPjwvRFQ+CiAgPEREPiRSZXZpc2lvbjogMS4xICQgJERhdGUkPC9ERD4KPERUPjxCPkF1dGhvcjo8L0I+PC9EVD4KICA8REQ+Um9iIExlbGFuZDwvREQ+CjwvREw+CjxIUj4KCjxQPgo8IS0tID09PT09PT09IE5FU1RFRCBDTEFTUyBTVU1NQVJZID09PT09PT09IC0tPgoKCjwhLS0gPT09PT09PT09PT0gRklFTEQgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KCgo8IS0tID09PT09PT09IENPTlNUUlVDVE9SIFNVTU1BUlkgPT09PT09PT0gLS0+CgoKPCEtLSA9PT09PT09PT09IE1FVEhPRCBTVU1NQVJZID09PT09PT09PT09IC0tPgoKPEEgTkFNRT0ibWV0aG9kX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIxIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFdJRFRIPSIxMDAlIj4KPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+CjxURCBDT0xTUEFOPTI+PEZPTlQgU0laRT0iKzIiPgo8Qj5NZXRob2QgU3VtbWFyeTwvQj48L0ZPTlQ+PC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2NvbmZpZy9Nb2R1bGVDb25maWcuaHRtbCNhZGRBY3Rpb25Db25maWcob3JnLmFwYWNoZS5zdHJ1dHMuY29uZmlnLkFjdGlvbkNvbmZpZykiPmFkZEFjdGlvbkNvbmZpZzwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2NvbmZpZy9BY3Rpb25Db25maWcuaHRtbCI+QWN0aW9uQ29uZmlnPC9BPiZuYnNwO2NvbmZpZyk8L0NPREU+Cgo8QlI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0FkZCBhIG5ldyA8Y29kZT5BY3Rpb25Db25maWc8L2NvZGU+IGluc3RhbmNlIHRvIHRoZSBzZXQgYXNzb2NpYXRlZAogd2l0aCB0aGlzIG1vZHVsZS48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvY29uZmlnL01vZHVsZUNvbmZpZy5odG1sI2FkZERhdGFTb3VyY2VDb25maWcob3JnLmFwYWNoZS5zdHJ1dHMuY29uZmlnLkRhdGFTb3VyY2VDb25maWcpIj5hZGREYXRhU291cmNlQ29uZmlnPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvY29uZmlnL0RhdGFTb3VyY2VDb25maWcuaHRtbCI+RGF0YVNvdXJjZUNvbmZpZzwvQT4mbmJzcDtjb25maWcpPC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBZGQgYSBuZXcgPGNvZGU+RGF0YVNvdXJjZUNvbmZpZzwvY29kZT4gaW5zdGFuY2UgdG8gdGhlIHNldCBhc3NvY2lhdGVkCiB3aXRoIHRoaXMgbW9kdWxlLjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9jb25maWcvTW9kdWxlQ29uZmlnLmh0bWwjYWRkRXhjZXB0aW9uQ29uZmlnKG9yZy5hcGFjaGUuc3RydXRzLmNvbmZpZy5FeGNlcHRpb25Db25maWcpIj5hZGRFeGNlcHRpb25Db25maWc8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9jb25maWcvRXhjZXB0aW9uQ29uZmlnLmh0bWwiPkV4Y2VwdGlvbkNvbmZpZzwvQT4mbmJzcDtjb25maWcpPC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBZGQgYSBuZXcgPGNvZGU+RXhjZXB0aW9uQ29uZmlnPC9jb2RlPiBpbnN0YW5jZSB0byB0aGUgc2V0IGFzc29jaWF0ZWQKIHdpdGggdGhpcyBtb2R1bGUuPC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2NvbmZpZy9Nb2R1bGVDb25maWcuaHRtbCNhZGRGb3JtQmVhbkNvbmZpZyhvcmcuYXBhY2hlLnN0cnV0cy5jb25maWcuRm9ybUJlYW5Db25maWcpIj5hZGRGb3JtQmVhbkNvbmZpZzwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2NvbmZpZy9Gb3JtQmVhbkNvbmZpZy5odG1sIj5Gb3JtQmVhbkNvbmZpZzwvQT4mbmJzcDtjb25maWcpPC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBZGQgYSBuZXcgPGNvZGU+Rm9ybUJlYW5Db25maWc8L2NvZGU+IGluc3RhbmNlIHRvIHRoZSBzZXQgYXNzb2NpYXRlZAogd2l0aCB0aGlzIG1vZHVsZS48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvY29uZmlnL01vZHVsZUNvbmZpZy5odG1sI2FkZEZvcndhcmRDb25maWcob3JnLmFwYWNoZS5zdHJ1dHMuY29uZmlnLkZvcndhcmRDb25maWcpIj5hZGRGb3J3YXJkQ29uZmlnPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvY29uZmlnL0ZvcndhcmRDb25maWcuaHRtbCI+Rm9yd2FyZENvbmZpZzwvQT4mbmJzcDtjb25maWcpPC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBZGQgYSBuZXcgPGNvZGU+Rm9yd2FyZENvbmZpZzwvY29kZT4gaW5zdGFuY2UgdG8gdGhlIHNldCBvZiBnbG9iYWwKIGZvcndhcmRzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIG1vZHVsZS48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvY29uZmlnL01vZHVsZUNvbmZpZy5odG1sI2FkZE1lc3NhZ2VSZXNvdXJjZXNDb25maWcob3JnLmFwYWNoZS5zdHJ1dHMuY29uZmlnLk1lc3NhZ2VSZXNvdXJjZXNDb25maWcpIj5hZGRNZXNzYWdlUmVzb3VyY2VzQ29uZmlnPC9BPjwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvY29uZmlnL01lc3NhZ2VSZXNvdXJjZXNDb25maWcuaHRtbCI+TWVzc2FnZVJlc291cmNlc0NvbmZpZzwvQT4mbmJzcDtjb25maWcpPC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBZGQgYSBuZXcgPGNvZGU+TWVzc2FnZVJlc291cmNlc0NvbmZpZzwvY29kZT4gaW5zdGFuY2UgdG8gdGhlIHNldAogYXNzb2NpYXRlZCB3aXRoIHRoaXMgbW9kdWxlLjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9jb25maWcvTW9kdWxlQ29uZmlnLmh0bWwjYWRkUGx1Z0luQ29uZmlnKG9yZy5hcGFjaGUuc3RydXRzLmNvbmZpZy5QbHVnSW5Db25maWcpIj5hZGRQbHVnSW5Db25maWc8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9jb25maWcvUGx1Z0luQ29uZmlnLmh0bWwiPlBsdWdJbkNvbmZpZzwvQT4mbmJzcDtwbHVnSW5Db25maWcpPC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBZGQgYSBuZXdseSBjb25maWd1cmVkIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2NvbmZpZy9QbHVnSW5Db25maWcuaHRtbCI+PENPREU+UGx1Z0luQ29uZmlnPC9DT0RFPjwvQT4gaW5zdGFuY2UgdG8gdGhlIHNldCBvZgogcGx1Zy1pbiBBY3Rpb25zIGZvciB0aGlzIG1vZHVsZS48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9jb25maWcvQWN0aW9uQ29uZmlnLmh0bWwiPkFjdGlvbkNvbmZpZzwvQT48L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9jb25maWcvTW9kdWxlQ29uZmlnLmh0bWwjZmluZEFjdGlvbkNvbmZpZyhqYXZhLmxhbmcuU3RyaW5nKSI+ZmluZEFjdGlvbkNvbmZpZzwvQT48L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDtwYXRoKTwvQ09ERT4KCjxCUj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJuIHRoZSBhY3Rpb24gY29uZmlndXJhdGlvbiBmb3IgdGhlIHNwZWNpZmllZCBwYXRoLCBpZiBhbnk7CiBvdGhlcndpc2UgcmV0dXJuIDxjb2RlPm51bGw8L2NvZGU+LjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2NvbmZpZy9BY3Rpb25Db25maWcuaHRtbCI+QWN0aW9uQ29uZmlnPC9BPltdPC9DT0RFPjwvRk9OVD48L1REPgo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvY29uZmlnL01vZHVsZUNvbmZpZy5odG1sI2ZpbmRBY3Rpb25Db25maWdzKCkiPmZpbmRBY3Rpb25Db25maWdzPC9BPjwvQj4oKTwvQ09ERT4KCjxCUj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJuIHRoZSBhY3Rpb24gY29uZmlndXJhdGlvbnMgZm9yIHRoaXMgbW9kdWxlLjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2NvbmZpZy9EYXRhU291cmNlQ29uZmlnLmh0bWwiPkRhdGFTb3VyY2VDb25maWc8L0E+PC9DT0RFPjwvRk9OVD48L1REPgo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvY29uZmlnL01vZHVsZUNvbmZpZy5odG1sI2ZpbmREYXRhU291cmNlQ29uZmlnKGphdmEubGFuZy5TdHJpbmcpIj5maW5kRGF0YVNvdXJjZUNvbmZpZzwvQT48L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDtrZXkpPC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm4gdGhlIGRhdGEgc291cmNlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBzcGVjaWZpZWQga2V5LCBpZiBhbnk7CiBvdGhlcndpc2UgcmV0dXJuIDxjb2RlPm51bGw8L2NvZGU+LjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2NvbmZpZy9EYXRhU291cmNlQ29uZmlnLmh0bWwiPkRhdGFTb3VyY2VDb25maWc8L0E+W108L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9jb25maWcvTW9kdWxlQ29uZmlnLmh0bWwjZmluZERhdGFTb3VyY2VDb25maWdzKCkiPmZpbmREYXRhU291cmNlQ29uZmlnczwvQT48L0I+KCk8L0NPREU+Cgo8QlI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybiB0aGUgZGF0YSBzb3VyY2UgY29uZmlndXJhdGlvbnMgZm9yIHRoaXMgbW9kdWxlLjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2NvbmZpZy9FeGNlcHRpb25Db25maWcuaHRtbCI+RXhjZXB0aW9uQ29uZmlnPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2NvbmZpZy9Nb2R1bGVDb25maWcuaHRtbCNmaW5kRXhjZXB0aW9uQ29uZmlnKGphdmEubGFuZy5TdHJpbmcpIj5maW5kRXhjZXB0aW9uQ29uZmlnPC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3R5cGUpPC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm4gdGhlIGV4Y2VwdGlvbiBjb25maWd1cmF0aW9uIGZvciB0aGUgc3BlY2lmaWVkIHR5cGUsIGlmIGFueTsKIG90aGVyd2lzZSByZXR1cm4gPGNvZGU+bnVsbDwvY29kZT4uPC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvY29uZmlnL0V4Y2VwdGlvbkNvbmZpZy5odG1sIj5FeGNlcHRpb25Db25maWc8L0E+W108L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9jb25maWcvTW9kdWxlQ29uZmlnLmh0bWwjZmluZEV4Y2VwdGlvbkNvbmZpZ3MoKSI+ZmluZEV4Y2VwdGlvbkNvbmZpZ3M8L0E+PC9CPigpPC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm4gdGhlIGV4Y2VwdGlvbiBjb25maWd1cmF0aW9ucyBmb3IgdGhpcyBtb2R1bGUuPC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvY29uZmlnL0Zvcm1CZWFuQ29uZmlnLmh0bWwiPkZvcm1CZWFuQ29uZmlnPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2NvbmZpZy9Nb2R1bGVDb25maWcuaHRtbCNmaW5kRm9ybUJlYW5Db25maWcoamF2YS5sYW5nLlN0cmluZykiPmZpbmRGb3JtQmVhbkNvbmZpZzwvQT48L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDtuYW1lKTwvQ09ERT4KCjxCUj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJuIHRoZSBmb3JtIGJlYW4gY29uZmlndXJhdGlvbiBmb3IgdGhlIHNwZWNpZmllZCBrZXksIGlmIGFueTsKIG90aGVyd2lzZSByZXR1cm4gPGNvZGU+bnVsbDwvY29kZT4uPC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvY29uZmlnL0Zvcm1CZWFuQ29uZmlnLmh0bWwiPkZvcm1CZWFuQ29uZmlnPC9BPltdPC9DT0RFPjwvRk9OVD48L1REPgo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvY29uZmlnL01vZHVsZUNvbmZpZy5odG1sI2ZpbmRGb3JtQmVhbkNvbmZpZ3MoKSI+ZmluZEZvcm1CZWFuQ29uZmlnczwvQT48L0I+KCk8L0NPREU+Cgo8QlI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybiB0aGUgZm9ybSBiZWFuIGNvbmZpZ3VyYXRpb25zIGZvciB0aGlzIG1vZHVsZS48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9jb25maWcvRm9yd2FyZENvbmZpZy5odG1sIj5Gb3J3YXJkQ29uZmlnPC9BPjwvQ09ERT48L0ZPTlQ+PC9URD4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2NvbmZpZy9Nb2R1bGVDb25maWcuaHRtbCNmaW5kRm9yd2FyZENvbmZpZyhqYXZhLmxhbmcuU3RyaW5nKSI+ZmluZEZvcndhcmRDb25maWc8L0E+PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7bmFtZSk8L0NPREU+Cgo8QlI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybiB0aGUgZm9yd2FyZCBjb25maWd1cmF0aW9uIGZvciB0aGUgc3BlY2lmaWVkIGtleSwgaWYgYW55Owogb3RoZXJ3aXNlIHJldHVybiA8Y29kZT5udWxsPC9jb2RlPi48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT4mbmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9jb25maWcvRm9yd2FyZENvbmZpZy5odG1sIj5Gb3J3YXJkQ29uZmlnPC9BPltdPC9DT0RFPjwvRk9OVD48L1REPgo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvY29uZmlnL01vZHVsZUNvbmZpZy5odG1sI2ZpbmRGb3J3YXJkQ29uZmlncygpIj5maW5kRm9yd2FyZENvbmZpZ3M8L0E+PC9CPigpPC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm4gdGhlIGZvcm0gYmVhbiBjb25maWd1cmF0aW9ucyBmb3IgdGhpcyBtb2R1bGUuPC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvY29uZmlnL01lc3NhZ2VSZXNvdXJjZXNDb25maWcuaHRtbCI+TWVzc2FnZVJlc291cmNlc0NvbmZpZzwvQT48L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9jb25maWcvTW9kdWxlQ29uZmlnLmh0bWwjZmluZE1lc3NhZ2VSZXNvdXJjZXNDb25maWcoamF2YS5sYW5nLlN0cmluZykiPmZpbmRNZXNzYWdlUmVzb3VyY2VzQ29uZmlnPC9BPjwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO2tleSk8L0NPREU+Cgo8QlI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JldHVybiB0aGUgbWVzc2FnZSByZXNvdXJjZXMgY29uZmlndXJhdGlvbiBmb3IgdGhlIHNwZWNpZmllZCBrZXksCiBpZiBhbnk7IG90aGVyd2lzZSByZXR1cm4gPGNvZGU+bnVsbDwvY29kZT4uPC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvY29uZmlnL01lc3NhZ2VSZXNvdXJjZXNDb25maWcuaHRtbCI+TWVzc2FnZVJlc291cmNlc0NvbmZpZzwvQT5bXTwvQ09ERT48L0ZPTlQ+PC9URD4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2NvbmZpZy9Nb2R1bGVDb25maWcuaHRtbCNmaW5kTWVzc2FnZVJlc291cmNlc0NvbmZpZ3MoKSI+ZmluZE1lc3NhZ2VSZXNvdXJjZXNDb25maWdzPC9BPjwvQj4oKTwvQ09ERT4KCjxCUj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmV0dXJuIHRoZSBtZXNzYWdlIHJlc291cmNlcyBjb25maWd1cmF0aW9ucyBmb3IgdGhpcyBtb2R1bGUuPC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvY29uZmlnL1BsdWdJbkNvbmZpZy5odG1sIj5QbHVnSW5Db25maWc8L0E+W108L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9jb25maWcvTW9kdWxlQ29uZmlnLmh0bWwjZmluZFBsdWdJbkNvbmZpZ3MoKSI+ZmluZFBsdWdJbkNvbmZpZ3M8L0E+PC9CPigpPC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXR1cm4gdGhlIGNvbmZpZ3VyZWQgcGx1Zy1pbiBhY3Rpb25zIGZvciB0aGlzIG1vZHVsZS48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT4mbmJzcDt2b2lkPC9DT0RFPjwvRk9OVD48L1REPgo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvY29uZmlnL01vZHVsZUNvbmZpZy5odG1sI2ZyZWV6ZSgpIj5mcmVlemU8L0E+PC9CPigpPC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtGcmVlemUgdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhpcyBtb2R1bGUuPC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KPENPREU+Jm5ic3A7amF2YS5sYW5nLlN0cmluZzwvQ09ERT48L0ZPTlQ+PC9URD4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2NvbmZpZy9Nb2R1bGVDb25maWcuaHRtbCNnZXRBY3Rpb25NYXBwaW5nQ2xhc3MoKSI+Z2V0QWN0aW9uTWFwcGluZ0NsYXNzPC9BPjwvQj4oKTwvQ09ERT4KCjxCUj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGRlZmF1bHQgY2xhc3MgbmFtZSB0byBiZSB1c2VkIHdoZW4gY3JlYXRpbmcgYWN0aW9uIG1hcHBpbmcKIGluc3RhbmNlcy48L1REPgo8L1RSPgo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPgo8Q09ERT4mbmJzcDtib29sZWFuPC9DT0RFPjwvRk9OVD48L1REPgo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvY29uZmlnL01vZHVsZUNvbmZpZy5odG1sI2dldENvbmZpZ3VyZWQoKSI+Z2V0Q29uZmlndXJlZDwvQT48L0I+KCk8L0NPREU+Cgo8QlI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0hhcyB0aGlzIG1vZHVsZSBiZWVuIGNvbXBsZXRlbHkgY29uZmlndXJlZCB5ZXQuPC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KPENPREU+Jm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvY29uZmlnL0NvbnRyb2xsZXJDb25maWcuaHRtbCI+Q29udHJvbGxlckNvbmZpZzwvQT48L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9jb25maWcvTW9kdWxlQ29uZmlnLmh0bWwjZ2V0Q29udHJvbGxlckNvbmZpZygpIj5nZXRDb250cm9sbGVyQ29uZmlnPC9BPjwvQj4oKTwvQ09ERT4KCjxCUj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGNvbnRyb2xsZXIgY29uZmlndXJhdGlvbiBvYmplY3QgZm9yIHRoaXMgbW9kdWxlLjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPiZuYnNwO2phdmEubGFuZy5TdHJpbmc8L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9jb25maWcvTW9kdWxlQ29uZmlnLmh0bWwjZ2V0UHJlZml4KCkiPmdldFByZWZpeDwvQT48L0I+KCk8L0NPREU+Cgo8QlI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBwcmVmaXggb2YgdGhlIGNvbnRleHQtcmVsYXRpdmUgcG9ydGlvbiBvZiB0aGUgcmVxdWVzdCBVUkksIHVzZWQgdG8KIHNlbGVjdCB0aGlzIGNvbmZpZ3VyYXRpb24gdmVyc3VzIG90aGVycyBzdXBwb3J0ZWQgYnkgdGhlIGNvbnRyb2xsZXIKIHNlcnZsZXQuPC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2NvbmZpZy9Nb2R1bGVDb25maWcuaHRtbCNyZW1vdmVBY3Rpb25Db25maWcob3JnLmFwYWNoZS5zdHJ1dHMuY29uZmlnLkFjdGlvbkNvbmZpZykiPnJlbW92ZUFjdGlvbkNvbmZpZzwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2NvbmZpZy9BY3Rpb25Db25maWcuaHRtbCI+QWN0aW9uQ29uZmlnPC9BPiZuYnNwO2NvbmZpZyk8L0NPREU+Cgo8QlI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JlbW92ZSB0aGUgc3BlY2lmaWVkIGFjdGlvbiBjb25maWd1cmF0aW9uIGluc3RhbmNlLjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9jb25maWcvTW9kdWxlQ29uZmlnLmh0bWwjcmVtb3ZlRGF0YVNvdXJjZUNvbmZpZyhvcmcuYXBhY2hlLnN0cnV0cy5jb25maWcuRGF0YVNvdXJjZUNvbmZpZykiPnJlbW92ZURhdGFTb3VyY2VDb25maWc8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9jb25maWcvRGF0YVNvdXJjZUNvbmZpZy5odG1sIj5EYXRhU291cmNlQ29uZmlnPC9BPiZuYnNwO2NvbmZpZyk8L0NPREU+Cgo8QlI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JlbW92ZSB0aGUgc3BlY2lmaWVkIGRhdGEgc291cmNlIGNvbmZpZ3VyYXRpb24gaW5zdGFuY2UuPC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2NvbmZpZy9Nb2R1bGVDb25maWcuaHRtbCNyZW1vdmVFeGNlcHRpb25Db25maWcob3JnLmFwYWNoZS5zdHJ1dHMuY29uZmlnLkV4Y2VwdGlvbkNvbmZpZykiPnJlbW92ZUV4Y2VwdGlvbkNvbmZpZzwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2NvbmZpZy9FeGNlcHRpb25Db25maWcuaHRtbCI+RXhjZXB0aW9uQ29uZmlnPC9BPiZuYnNwO2NvbmZpZyk8L0NPREU+Cgo8QlI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JlbW92ZSB0aGUgc3BlY2lmaWVkIGV4Y2VwdGlvbiBjb25maWd1cmF0aW9uIGluc3RhbmNlLjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9jb25maWcvTW9kdWxlQ29uZmlnLmh0bWwjcmVtb3ZlRm9ybUJlYW5Db25maWcob3JnLmFwYWNoZS5zdHJ1dHMuY29uZmlnLkZvcm1CZWFuQ29uZmlnKSI+cmVtb3ZlRm9ybUJlYW5Db25maWc8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9jb25maWcvRm9ybUJlYW5Db25maWcuaHRtbCI+Rm9ybUJlYW5Db25maWc8L0E+Jm5ic3A7Y29uZmlnKTwvQ09ERT4KCjxCUj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmVtb3ZlIHRoZSBzcGVjaWZpZWQgZm9ybSBiZWFuIGNvbmZpZ3VyYXRpb24gaW5zdGFuY2UuPC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2NvbmZpZy9Nb2R1bGVDb25maWcuaHRtbCNyZW1vdmVGb3J3YXJkQ29uZmlnKG9yZy5hcGFjaGUuc3RydXRzLmNvbmZpZy5Gb3J3YXJkQ29uZmlnKSI+cmVtb3ZlRm9yd2FyZENvbmZpZzwvQT48L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2NvbmZpZy9Gb3J3YXJkQ29uZmlnLmh0bWwiPkZvcndhcmRDb25maWc8L0E+Jm5ic3A7Y29uZmlnKTwvQ09ERT4KCjxCUj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmVtb3ZlIHRoZSBzcGVjaWZpZWQgZm9yd2FyZCBjb25maWd1cmF0aW9uIGluc3RhbmNlLjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9jb25maWcvTW9kdWxlQ29uZmlnLmh0bWwjcmVtb3ZlTWVzc2FnZVJlc291cmNlc0NvbmZpZyhvcmcuYXBhY2hlLnN0cnV0cy5jb25maWcuTWVzc2FnZVJlc291cmNlc0NvbmZpZykiPnJlbW92ZU1lc3NhZ2VSZXNvdXJjZXNDb25maWc8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9jb25maWcvTWVzc2FnZVJlc291cmNlc0NvbmZpZy5odG1sIj5NZXNzYWdlUmVzb3VyY2VzQ29uZmlnPC9BPiZuYnNwO2NvbmZpZyk8L0NPREU+Cgo8QlI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JlbW92ZSB0aGUgc3BlY2lmaWVkIG1lc3NhZ2UgcmVzb3VyY2VzIGNvbmZpZ3VyYXRpb24gaW5zdGFuY2UuPC9URD4KPC9UUj4KPFRSIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iVGFibGVSb3dDb2xvciI+CjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4KPENPREU+Jm5ic3A7dm9pZDwvQ09ERT48L0ZPTlQ+PC9URD4KPFREPjxDT0RFPjxCPjxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2NvbmZpZy9Nb2R1bGVDb25maWcuaHRtbCNzZXRBY3Rpb25NYXBwaW5nQ2xhc3MoamF2YS5sYW5nLlN0cmluZykiPnNldEFjdGlvbk1hcHBpbmdDbGFzczwvQT48L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDthY3Rpb25NYXBwaW5nQ2xhc3MpPC9DT0RFPgoKPEJSPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgZGVmYXVsdCBjbGFzcyBuYW1lIHRvIGJlIHVzZWQgd2hlbiBjcmVhdGluZyBhY3Rpb24gbWFwcGluZwogaW5zdGFuY2VzLjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9jb25maWcvTW9kdWxlQ29uZmlnLmh0bWwjc2V0Q29udHJvbGxlckNvbmZpZyhvcmcuYXBhY2hlLnN0cnV0cy5jb25maWcuQ29udHJvbGxlckNvbmZpZykiPnNldENvbnRyb2xsZXJDb25maWc8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9jb25maWcvQ29udHJvbGxlckNvbmZpZy5odG1sIj5Db250cm9sbGVyQ29uZmlnPC9BPiZuYnNwO2NjKTwvQ09ERT4KCjxCUj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGNvbnRyb2xsZXIgY29uZmlndXJhdGlvbiBvYmplY3QgZm9yIHRoaXMgbW9kdWxlLjwvVEQ+CjwvVFI+CjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPgo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgV0lEVEg9IjElIj48Rk9OVCBTSVpFPSItMSI+CjxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+CjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9jb25maWcvTW9kdWxlQ29uZmlnLmh0bWwjc2V0UHJlZml4KGphdmEubGFuZy5TdHJpbmcpIj5zZXRQcmVmaXg8L0E+PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7cHJlZml4KTwvQ09ERT4KCjxCUj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIHByZWZpeCBvZiB0aGUgY29udGV4dC1yZWxhdGl2ZSBwb3J0aW9uIG9mIHRoZSByZXF1ZXN0IFVSSSwgdXNlZCB0bwogc2VsZWN0IHRoaXMgY29uZmlndXJhdGlvbiB2ZXJzdXMgb3RoZXJzIHN1cHBvcnRlZCBieSB0aGUgY29udHJvbGxlcgogc2VydmxldC48L1REPgo8L1RSPgo8L1RBQkxFPgombmJzcDsKPFA+Cgo8IS0tID09PT09PT09PT09PSBGSUVMRCBERVRBSUwgPT09PT09PT09PT0gLS0+CgoKPCEtLSA9PT09PT09PT0gQ09OU1RSVUNUT1IgREVUQUlMID09PT09PT09IC0tPgoKCjwhLS0gPT09PT09PT09PT09IE1FVEhPRCBERVRBSUwgPT09PT09PT09PSAtLT4KCjxBIE5BTUU9Im1ldGhvZF9kZXRhaWwiPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIxIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFdJRFRIPSIxMDAlIj4KPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+CjxURCBDT0xTUEFOPTE+PEZPTlQgU0laRT0iKzIiPgo8Qj5NZXRob2QgRGV0YWlsPC9CPjwvRk9OVD48L1REPgo8L1RSPgo8L1RBQkxFPgoKPEEgTkFNRT0iZ2V0Q29uZmlndXJlZCgpIj48IS0tIC0tPjwvQT48SDM+CmdldENvbmZpZ3VyZWQ8L0gzPgo8UFJFPgpwdWJsaWMgYm9vbGVhbiA8Qj5nZXRDb25maWd1cmVkPC9CPigpPC9QUkU+CjxETD4KPEREPkhhcyB0aGlzIG1vZHVsZSBiZWVuIGNvbXBsZXRlbHkgY29uZmlndXJlZCB5ZXQuICBPbmNlIHRoaXMgZmxhZwogaGFzIGJlZW4gc2V0LCBhbnkgYXR0ZW1wdCB0byBtb2RpZnkgdGhlIGNvbmZpZ3VyYXRpb24gd2lsbCByZXR1cm4gYW4KIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbi4KPFA+CjxERD48REw+CjwvREw+CjwvREQ+CjwvREw+CjxIUj4KCjxBIE5BTUU9ImdldENvbnRyb2xsZXJDb25maWcoKSI+PCEtLSAtLT48L0E+PEgzPgpnZXRDb250cm9sbGVyQ29uZmlnPC9IMz4KPFBSRT4KcHVibGljIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2NvbmZpZy9Db250cm9sbGVyQ29uZmlnLmh0bWwiPkNvbnRyb2xsZXJDb25maWc8L0E+IDxCPmdldENvbnRyb2xsZXJDb25maWc8L0I+KCk8L1BSRT4KPERMPgo8REQ+VGhlIGNvbnRyb2xsZXIgY29uZmlndXJhdGlvbiBvYmplY3QgZm9yIHRoaXMgbW9kdWxlLgo8UD4KPEREPjxETD4KPC9ETD4KPC9ERD4KPC9ETD4KPEhSPgoKPEEgTkFNRT0ic2V0Q29udHJvbGxlckNvbmZpZyhvcmcuYXBhY2hlLnN0cnV0cy5jb25maWcuQ29udHJvbGxlckNvbmZpZykiPjwhLS0gLS0+PC9BPjxIMz4Kc2V0Q29udHJvbGxlckNvbmZpZzwvSDM+CjxQUkU+CnB1YmxpYyB2b2lkIDxCPnNldENvbnRyb2xsZXJDb25maWc8L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2NvbmZpZy9Db250cm9sbGVyQ29uZmlnLmh0bWwiPkNvbnRyb2xsZXJDb25maWc8L0E+Jm5ic3A7Y2MpPC9QUkU+CjxETD4KPEREPlRoZSBjb250cm9sbGVyIGNvbmZpZ3VyYXRpb24gb2JqZWN0IGZvciB0aGlzIG1vZHVsZS4KPFA+CjxERD48REw+CjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+Y2M8L0NPREU+IC0gVGhlIGNvbnRyb2xsZXIgY29uZmlndXJhdGlvbiBvYmplY3QgZm9yIHRoaXMgbW9kdWxlLjwvREw+CjwvREQ+CjwvREw+CjxIUj4KCjxBIE5BTUU9ImdldFByZWZpeCgpIj48IS0tIC0tPjwvQT48SDM+CmdldFByZWZpeDwvSDM+CjxQUkU+CnB1YmxpYyBqYXZhLmxhbmcuU3RyaW5nIDxCPmdldFByZWZpeDwvQj4oKTwvUFJFPgo8REw+CjxERD5UaGUgcHJlZml4IG9mIHRoZSBjb250ZXh0LXJlbGF0aXZlIHBvcnRpb24gb2YgdGhlIHJlcXVlc3QgVVJJLCB1c2VkIHRvCiBzZWxlY3QgdGhpcyBjb25maWd1cmF0aW9uIHZlcnN1cyBvdGhlcnMgc3VwcG9ydGVkIGJ5IHRoZSBjb250cm9sbGVyCiBzZXJ2bGV0LiAgQSBjb25maWd1cmF0aW9uIHdpdGggYSBwcmVmaXggb2YgYSB6ZXJvLWxlbmd0aCBTdHJpbmcgaXMgdGhlCiBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gZm9yIHRoaXMgd2ViIG1vZHVsZS4KPFA+CjxERD48REw+CjwvREw+CjwvREQ+CjwvREw+CjxIUj4KCjxBIE5BTUU9InNldFByZWZpeChqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPgpzZXRQcmVmaXg8L0gzPgo8UFJFPgpwdWJsaWMgdm9pZCA8Qj5zZXRQcmVmaXg8L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDtwcmVmaXgpPC9QUkU+CjxETD4KPEREPlRoZSBwcmVmaXggb2YgdGhlIGNvbnRleHQtcmVsYXRpdmUgcG9ydGlvbiBvZiB0aGUgcmVxdWVzdCBVUkksIHVzZWQgdG8KIHNlbGVjdCB0aGlzIGNvbmZpZ3VyYXRpb24gdmVyc3VzIG90aGVycyBzdXBwb3J0ZWQgYnkgdGhlIGNvbnRyb2xsZXIKIHNlcnZsZXQuICBBIGNvbmZpZ3VyYXRpb24gd2l0aCBhIHByZWZpeCBvZiBhIHplcm8tbGVuZ3RoIFN0cmluZyBpcyB0aGUKIGRlZmF1bHQgY29uZmlndXJhdGlvbiBmb3IgdGhpcyB3ZWIgbW9kdWxlLgo8UD4KPEREPjxETD4KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5wcmVmaXg8L0NPREU+IC0gVGhlIHByZWZpeCBvZiB0aGUgY29udGV4dC1yZWxhdGl2ZSBwb3J0aW9uIG9mIHRoZSByZXF1ZXN0IFVSSS48L0RMPgo8L0REPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJnZXRBY3Rpb25NYXBwaW5nQ2xhc3MoKSI+PCEtLSAtLT48L0E+PEgzPgpnZXRBY3Rpb25NYXBwaW5nQ2xhc3M8L0gzPgo8UFJFPgpwdWJsaWMgamF2YS5sYW5nLlN0cmluZyA8Qj5nZXRBY3Rpb25NYXBwaW5nQ2xhc3M8L0I+KCk8L1BSRT4KPERMPgo8REQ+VGhlIGRlZmF1bHQgY2xhc3MgbmFtZSB0byBiZSB1c2VkIHdoZW4gY3JlYXRpbmcgYWN0aW9uIG1hcHBpbmcKIGluc3RhbmNlcy4KPFA+CjxERD48REw+CjwvREw+CjwvREQ+CjwvREw+CjxIUj4KCjxBIE5BTUU9InNldEFjdGlvbk1hcHBpbmdDbGFzcyhqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPgpzZXRBY3Rpb25NYXBwaW5nQ2xhc3M8L0gzPgo8UFJFPgpwdWJsaWMgdm9pZCA8Qj5zZXRBY3Rpb25NYXBwaW5nQ2xhc3M8L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDthY3Rpb25NYXBwaW5nQ2xhc3MpPC9QUkU+CjxETD4KPEREPlRoZSBkZWZhdWx0IGNsYXNzIG5hbWUgdG8gYmUgdXNlZCB3aGVuIGNyZWF0aW5nIGFjdGlvbiBtYXBwaW5nCiBpbnN0YW5jZXMuCjxQPgo8REQ+PERMPgo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmFjdGlvbk1hcHBpbmdDbGFzczwvQ09ERT4gLSBkZWZhdWx0IGNsYXNzIG5hbWUgdG8gYmUgdXNlZCB3aGVuIGNyZWF0aW5nIGFjdGlvbiBtYXBwaW5nCiBpbnN0YW5jZXMuPC9ETD4KPC9ERD4KPC9ETD4KPEhSPgoKPEEgTkFNRT0iYWRkQWN0aW9uQ29uZmlnKG9yZy5hcGFjaGUuc3RydXRzLmNvbmZpZy5BY3Rpb25Db25maWcpIj48IS0tIC0tPjwvQT48SDM+CmFkZEFjdGlvbkNvbmZpZzwvSDM+CjxQUkU+CnB1YmxpYyB2b2lkIDxCPmFkZEFjdGlvbkNvbmZpZzwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvY29uZmlnL0FjdGlvbkNvbmZpZy5odG1sIj5BY3Rpb25Db25maWc8L0E+Jm5ic3A7Y29uZmlnKTwvUFJFPgo8REw+CjxERD5BZGQgYSBuZXcgPGNvZGU+QWN0aW9uQ29uZmlnPC9jb2RlPiBpbnN0YW5jZSB0byB0aGUgc2V0IGFzc29jaWF0ZWQKIHdpdGggdGhpcyBtb2R1bGUuCjxQPgo8REQ+PERMPgo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmNvbmZpZzwvQ09ERT4gLSBUaGUgbmV3IGNvbmZpZ3VyYXRpb24gaW5zdGFuY2UgdG8gYmUgYWRkZWQKPERUPjxCPlRocm93czo8L0I+CjxERD48Q09ERT5qYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uPC9DT0RFPiAtIGlmIHRoaXMgbW9kdWxlIGNvbmZpZ3VyYXRpb24KICBoYXMgYmVlbiBmcm96ZW48L0RMPgo8L0REPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJhZGREYXRhU291cmNlQ29uZmlnKG9yZy5hcGFjaGUuc3RydXRzLmNvbmZpZy5EYXRhU291cmNlQ29uZmlnKSI+PCEtLSAtLT48L0E+PEgzPgphZGREYXRhU291cmNlQ29uZmlnPC9IMz4KPFBSRT4KcHVibGljIHZvaWQgPEI+YWRkRGF0YVNvdXJjZUNvbmZpZzwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvY29uZmlnL0RhdGFTb3VyY2VDb25maWcuaHRtbCI+RGF0YVNvdXJjZUNvbmZpZzwvQT4mbmJzcDtjb25maWcpPC9QUkU+CjxETD4KPEREPkFkZCBhIG5ldyA8Y29kZT5EYXRhU291cmNlQ29uZmlnPC9jb2RlPiBpbnN0YW5jZSB0byB0aGUgc2V0IGFzc29jaWF0ZWQKIHdpdGggdGhpcyBtb2R1bGUuCjxQPgo8REQ+PERMPgo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmNvbmZpZzwvQ09ERT4gLSBUaGUgbmV3IGNvbmZpZ3VyYXRpb24gaW5zdGFuY2UgdG8gYmUgYWRkZWQKPERUPjxCPlRocm93czo8L0I+CjxERD48Q09ERT5qYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uPC9DT0RFPiAtIGlmIHRoaXMgbW9kdWxlIGNvbmZpZ3VyYXRpb24KICBoYXMgYmVlbiBmcm96ZW48L0RMPgo8L0REPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJhZGRFeGNlcHRpb25Db25maWcob3JnLmFwYWNoZS5zdHJ1dHMuY29uZmlnLkV4Y2VwdGlvbkNvbmZpZykiPjwhLS0gLS0+PC9BPjxIMz4KYWRkRXhjZXB0aW9uQ29uZmlnPC9IMz4KPFBSRT4KcHVibGljIHZvaWQgPEI+YWRkRXhjZXB0aW9uQ29uZmlnPC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9jb25maWcvRXhjZXB0aW9uQ29uZmlnLmh0bWwiPkV4Y2VwdGlvbkNvbmZpZzwvQT4mbmJzcDtjb25maWcpPC9QUkU+CjxETD4KPEREPkFkZCBhIG5ldyA8Y29kZT5FeGNlcHRpb25Db25maWc8L2NvZGU+IGluc3RhbmNlIHRvIHRoZSBzZXQgYXNzb2NpYXRlZAogd2l0aCB0aGlzIG1vZHVsZS4KPFA+CjxERD48REw+CjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+Y29uZmlnPC9DT0RFPiAtIFRoZSBuZXcgY29uZmlndXJhdGlvbiBpbnN0YW5jZSB0byBiZSBhZGRlZAo8RFQ+PEI+VGhyb3dzOjwvQj4KPEREPjxDT0RFPmphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb248L0NPREU+IC0gaWYgdGhpcyBtb2R1bGUgY29uZmlndXJhdGlvbgogIGhhcyBiZWVuIGZyb3plbjwvREw+CjwvREQ+CjwvREw+CjxIUj4KCjxBIE5BTUU9ImFkZEZvcm1CZWFuQ29uZmlnKG9yZy5hcGFjaGUuc3RydXRzLmNvbmZpZy5Gb3JtQmVhbkNvbmZpZykiPjwhLS0gLS0+PC9BPjxIMz4KYWRkRm9ybUJlYW5Db25maWc8L0gzPgo8UFJFPgpwdWJsaWMgdm9pZCA8Qj5hZGRGb3JtQmVhbkNvbmZpZzwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvY29uZmlnL0Zvcm1CZWFuQ29uZmlnLmh0bWwiPkZvcm1CZWFuQ29uZmlnPC9BPiZuYnNwO2NvbmZpZyk8L1BSRT4KPERMPgo8REQ+QWRkIGEgbmV3IDxjb2RlPkZvcm1CZWFuQ29uZmlnPC9jb2RlPiBpbnN0YW5jZSB0byB0aGUgc2V0IGFzc29jaWF0ZWQKIHdpdGggdGhpcyBtb2R1bGUuCjxQPgo8REQ+PERMPgo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmNvbmZpZzwvQ09ERT4gLSBUaGUgbmV3IGNvbmZpZ3VyYXRpb24gaW5zdGFuY2UgdG8gYmUgYWRkZWQKPERUPjxCPlRocm93czo8L0I+CjxERD48Q09ERT5qYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uPC9DT0RFPiAtIGlmIHRoaXMgbW9kdWxlIGNvbmZpZ3VyYXRpb24KICBoYXMgYmVlbiBmcm96ZW48L0RMPgo8L0REPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJhZGRGb3J3YXJkQ29uZmlnKG9yZy5hcGFjaGUuc3RydXRzLmNvbmZpZy5Gb3J3YXJkQ29uZmlnKSI+PCEtLSAtLT48L0E+PEgzPgphZGRGb3J3YXJkQ29uZmlnPC9IMz4KPFBSRT4KcHVibGljIHZvaWQgPEI+YWRkRm9yd2FyZENvbmZpZzwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvY29uZmlnL0ZvcndhcmRDb25maWcuaHRtbCI+Rm9yd2FyZENvbmZpZzwvQT4mbmJzcDtjb25maWcpPC9QUkU+CjxETD4KPEREPkFkZCBhIG5ldyA8Y29kZT5Gb3J3YXJkQ29uZmlnPC9jb2RlPiBpbnN0YW5jZSB0byB0aGUgc2V0IG9mIGdsb2JhbAogZm9yd2FyZHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgbW9kdWxlLgo8UD4KPEREPjxETD4KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5jb25maWc8L0NPREU+IC0gVGhlIG5ldyBjb25maWd1cmF0aW9uIGluc3RhbmNlIHRvIGJlIGFkZGVkCjxEVD48Qj5UaHJvd3M6PC9CPgo8REQ+PENPREU+amF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbjwvQ09ERT4gLSBpZiB0aGlzIG1vZHVsZSBjb25maWd1cmF0aW9uCiAgaGFzIGJlZW4gZnJvemVuPC9ETD4KPC9ERD4KPC9ETD4KPEhSPgoKPEEgTkFNRT0iYWRkTWVzc2FnZVJlc291cmNlc0NvbmZpZyhvcmcuYXBhY2hlLnN0cnV0cy5jb25maWcuTWVzc2FnZVJlc291cmNlc0NvbmZpZykiPjwhLS0gLS0+PC9BPjxIMz4KYWRkTWVzc2FnZVJlc291cmNlc0NvbmZpZzwvSDM+CjxQUkU+CnB1YmxpYyB2b2lkIDxCPmFkZE1lc3NhZ2VSZXNvdXJjZXNDb25maWc8L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2NvbmZpZy9NZXNzYWdlUmVzb3VyY2VzQ29uZmlnLmh0bWwiPk1lc3NhZ2VSZXNvdXJjZXNDb25maWc8L0E+Jm5ic3A7Y29uZmlnKTwvUFJFPgo8REw+CjxERD5BZGQgYSBuZXcgPGNvZGU+TWVzc2FnZVJlc291cmNlc0NvbmZpZzwvY29kZT4gaW5zdGFuY2UgdG8gdGhlIHNldAogYXNzb2NpYXRlZCB3aXRoIHRoaXMgbW9kdWxlLgo8UD4KPEREPjxETD4KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5jb25maWc8L0NPREU+IC0gVGhlIG5ldyBjb25maWd1cmF0aW9uIGluc3RhbmNlIHRvIGJlIGFkZGVkCjxEVD48Qj5UaHJvd3M6PC9CPgo8REQ+PENPREU+amF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbjwvQ09ERT4gLSBpZiB0aGlzIG1vZHVsZSBjb25maWd1cmF0aW9uCiAgaGFzIGJlZW4gZnJvemVuPC9ETD4KPC9ERD4KPC9ETD4KPEhSPgoKPEEgTkFNRT0iYWRkUGx1Z0luQ29uZmlnKG9yZy5hcGFjaGUuc3RydXRzLmNvbmZpZy5QbHVnSW5Db25maWcpIj48IS0tIC0tPjwvQT48SDM+CmFkZFBsdWdJbkNvbmZpZzwvSDM+CjxQUkU+CnB1YmxpYyB2b2lkIDxCPmFkZFBsdWdJbkNvbmZpZzwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvY29uZmlnL1BsdWdJbkNvbmZpZy5odG1sIj5QbHVnSW5Db25maWc8L0E+Jm5ic3A7cGx1Z0luQ29uZmlnKTwvUFJFPgo8REw+CjxERD5BZGQgYSBuZXdseSBjb25maWd1cmVkIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2NvbmZpZy9QbHVnSW5Db25maWcuaHRtbCI+PENPREU+UGx1Z0luQ29uZmlnPC9DT0RFPjwvQT4gaW5zdGFuY2UgdG8gdGhlIHNldCBvZgogcGx1Zy1pbiBBY3Rpb25zIGZvciB0aGlzIG1vZHVsZS4KPFA+CjxERD48REw+CjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+cGx1Z0luQ29uZmlnPC9DT0RFPiAtIFRoZSBuZXcgY29uZmlndXJhdGlvbiBpbnN0YW5jZSB0byBiZSBhZGRlZDwvREw+CjwvREQ+CjwvREw+CjxIUj4KCjxBIE5BTUU9ImZpbmRBY3Rpb25Db25maWcoamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4KZmluZEFjdGlvbkNvbmZpZzwvSDM+CjxQUkU+CnB1YmxpYyA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9jb25maWcvQWN0aW9uQ29uZmlnLmh0bWwiPkFjdGlvbkNvbmZpZzwvQT4gPEI+ZmluZEFjdGlvbkNvbmZpZzwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3BhdGgpPC9QUkU+CjxETD4KPEREPlJldHVybiB0aGUgYWN0aW9uIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgcGF0aCwgaWYgYW55Owogb3RoZXJ3aXNlIHJldHVybiA8Y29kZT5udWxsPC9jb2RlPi4KPFA+CjxERD48REw+CjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+cGF0aDwvQ09ERT4gLSBQYXRoIG9mIHRoZSBhY3Rpb24gY29uZmlndXJhdGlvbiB0byByZXR1cm48L0RMPgo8L0REPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJmaW5kQWN0aW9uQ29uZmlncygpIj48IS0tIC0tPjwvQT48SDM+CmZpbmRBY3Rpb25Db25maWdzPC9IMz4KPFBSRT4KcHVibGljIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2NvbmZpZy9BY3Rpb25Db25maWcuaHRtbCI+QWN0aW9uQ29uZmlnPC9BPltdIDxCPmZpbmRBY3Rpb25Db25maWdzPC9CPigpPC9QUkU+CjxETD4KPEREPlJldHVybiB0aGUgYWN0aW9uIGNvbmZpZ3VyYXRpb25zIGZvciB0aGlzIG1vZHVsZS4gIElmIHRoZXJlIGFyZQogbm9uZSwgYSB6ZXJvLWxlbmd0aCBhcnJheSBpcyByZXR1cm5lZC4KPFA+CjxERD48REw+CjwvREw+CjwvREQ+CjwvREw+CjxIUj4KCjxBIE5BTUU9ImZpbmREYXRhU291cmNlQ29uZmlnKGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+CmZpbmREYXRhU291cmNlQ29uZmlnPC9IMz4KPFBSRT4KcHVibGljIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2NvbmZpZy9EYXRhU291cmNlQ29uZmlnLmh0bWwiPkRhdGFTb3VyY2VDb25maWc8L0E+IDxCPmZpbmREYXRhU291cmNlQ29uZmlnPC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7a2V5KTwvUFJFPgo8REw+CjxERD5SZXR1cm4gdGhlIGRhdGEgc291cmNlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBzcGVjaWZpZWQga2V5LCBpZiBhbnk7CiBvdGhlcndpc2UgcmV0dXJuIDxjb2RlPm51bGw8L2NvZGU+Lgo8UD4KPEREPjxETD4KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5rZXk8L0NPREU+IC0gS2V5IG9mIHRoZSBkYXRhIHNvdXJjZSBjb25maWd1cmF0aW9uIHRvIHJldHVybjwvREw+CjwvREQ+CjwvREw+CjxIUj4KCjxBIE5BTUU9ImZpbmREYXRhU291cmNlQ29uZmlncygpIj48IS0tIC0tPjwvQT48SDM+CmZpbmREYXRhU291cmNlQ29uZmlnczwvSDM+CjxQUkU+CnB1YmxpYyA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9jb25maWcvRGF0YVNvdXJjZUNvbmZpZy5odG1sIj5EYXRhU291cmNlQ29uZmlnPC9BPltdIDxCPmZpbmREYXRhU291cmNlQ29uZmlnczwvQj4oKTwvUFJFPgo8REw+CjxERD5SZXR1cm4gdGhlIGRhdGEgc291cmNlIGNvbmZpZ3VyYXRpb25zIGZvciB0aGlzIG1vZHVsZS4gIElmIHRoZXJlCiBhcmUgbm9uZSwgYSB6ZXJvLWxlbmd0aCBhcnJheSBpcyByZXR1cm5lZC4KPFA+CjxERD48REw+CjwvREw+CjwvREQ+CjwvREw+CjxIUj4KCjxBIE5BTUU9ImZpbmRFeGNlcHRpb25Db25maWcoamF2YS5sYW5nLlN0cmluZykiPjwhLS0gLS0+PC9BPjxIMz4KZmluZEV4Y2VwdGlvbkNvbmZpZzwvSDM+CjxQUkU+CnB1YmxpYyA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9jb25maWcvRXhjZXB0aW9uQ29uZmlnLmh0bWwiPkV4Y2VwdGlvbkNvbmZpZzwvQT4gPEI+ZmluZEV4Y2VwdGlvbkNvbmZpZzwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO3R5cGUpPC9QUkU+CjxETD4KPEREPlJldHVybiB0aGUgZXhjZXB0aW9uIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgdHlwZSwgaWYgYW55Owogb3RoZXJ3aXNlIHJldHVybiA8Y29kZT5udWxsPC9jb2RlPi4KPFA+CjxERD48REw+CjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+dHlwZTwvQ09ERT4gLSBFeGNlcHRpb24gY2xhc3MgbmFtZSB0byBmaW5kIGEgY29uZmlndXJhdGlvbiBmb3I8L0RMPgo8L0REPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJmaW5kRXhjZXB0aW9uQ29uZmlncygpIj48IS0tIC0tPjwvQT48SDM+CmZpbmRFeGNlcHRpb25Db25maWdzPC9IMz4KPFBSRT4KcHVibGljIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2NvbmZpZy9FeGNlcHRpb25Db25maWcuaHRtbCI+RXhjZXB0aW9uQ29uZmlnPC9BPltdIDxCPmZpbmRFeGNlcHRpb25Db25maWdzPC9CPigpPC9QUkU+CjxETD4KPEREPlJldHVybiB0aGUgZXhjZXB0aW9uIGNvbmZpZ3VyYXRpb25zIGZvciB0aGlzIG1vZHVsZS4gIElmIHRoZXJlCiBhcmUgbm9uZSwgYSB6ZXJvLWxlbmd0aCBhcnJheSBpcyByZXR1cm5lZC4KPFA+CjxERD48REw+CjwvREw+CjwvREQ+CjwvREw+CjxIUj4KCjxBIE5BTUU9ImZpbmRGb3JtQmVhbkNvbmZpZyhqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPgpmaW5kRm9ybUJlYW5Db25maWc8L0gzPgo8UFJFPgpwdWJsaWMgPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvY29uZmlnL0Zvcm1CZWFuQ29uZmlnLmh0bWwiPkZvcm1CZWFuQ29uZmlnPC9BPiA8Qj5maW5kRm9ybUJlYW5Db25maWc8L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDtuYW1lKTwvUFJFPgo8REw+CjxERD5SZXR1cm4gdGhlIGZvcm0gYmVhbiBjb25maWd1cmF0aW9uIGZvciB0aGUgc3BlY2lmaWVkIGtleSwgaWYgYW55Owogb3RoZXJ3aXNlIHJldHVybiA8Y29kZT5udWxsPC9jb2RlPi4KPFA+CjxERD48REw+CjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+bmFtZTwvQ09ERT4gLSBOYW1lIG9mIHRoZSBmb3JtIGJlYW4gY29uZmlndXJhdGlvbiB0byByZXR1cm48L0RMPgo8L0REPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJmaW5kRm9ybUJlYW5Db25maWdzKCkiPjwhLS0gLS0+PC9BPjxIMz4KZmluZEZvcm1CZWFuQ29uZmlnczwvSDM+CjxQUkU+CnB1YmxpYyA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9jb25maWcvRm9ybUJlYW5Db25maWcuaHRtbCI+Rm9ybUJlYW5Db25maWc8L0E+W10gPEI+ZmluZEZvcm1CZWFuQ29uZmlnczwvQj4oKTwvUFJFPgo8REw+CjxERD5SZXR1cm4gdGhlIGZvcm0gYmVhbiBjb25maWd1cmF0aW9ucyBmb3IgdGhpcyBtb2R1bGUuICBJZiB0aGVyZQogYXJlIG5vbmUsIGEgemVyby1sZW5ndGggYXJyYXkgaXMgcmV0dXJuZWQuCjxQPgo8REQ+PERMPgo8L0RMPgo8L0REPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJmaW5kRm9yd2FyZENvbmZpZyhqYXZhLmxhbmcuU3RyaW5nKSI+PCEtLSAtLT48L0E+PEgzPgpmaW5kRm9yd2FyZENvbmZpZzwvSDM+CjxQUkU+CnB1YmxpYyA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9jb25maWcvRm9yd2FyZENvbmZpZy5odG1sIj5Gb3J3YXJkQ29uZmlnPC9BPiA8Qj5maW5kRm9yd2FyZENvbmZpZzwvQj4oamF2YS5sYW5nLlN0cmluZyZuYnNwO25hbWUpPC9QUkU+CjxETD4KPEREPlJldHVybiB0aGUgZm9yd2FyZCBjb25maWd1cmF0aW9uIGZvciB0aGUgc3BlY2lmaWVkIGtleSwgaWYgYW55Owogb3RoZXJ3aXNlIHJldHVybiA8Y29kZT5udWxsPC9jb2RlPi4KPFA+CjxERD48REw+CjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+bmFtZTwvQ09ERT4gLSBOYW1lIG9mIHRoZSBmb3J3YXJkIGNvbmZpZ3VyYXRpb24gdG8gcmV0dXJuPC9ETD4KPC9ERD4KPC9ETD4KPEhSPgoKPEEgTkFNRT0iZmluZEZvcndhcmRDb25maWdzKCkiPjwhLS0gLS0+PC9BPjxIMz4KZmluZEZvcndhcmRDb25maWdzPC9IMz4KPFBSRT4KcHVibGljIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2NvbmZpZy9Gb3J3YXJkQ29uZmlnLmh0bWwiPkZvcndhcmRDb25maWc8L0E+W10gPEI+ZmluZEZvcndhcmRDb25maWdzPC9CPigpPC9QUkU+CjxETD4KPEREPlJldHVybiB0aGUgZm9ybSBiZWFuIGNvbmZpZ3VyYXRpb25zIGZvciB0aGlzIG1vZHVsZS4gIElmIHRoZXJlCiBhcmUgbm9uZSwgYSB6ZXJvLWxlbmd0aCBhcnJheSBpcyByZXR1cm5lZC4KPFA+CjxERD48REw+CjwvREw+CjwvREQ+CjwvREw+CjxIUj4KCjxBIE5BTUU9ImZpbmRNZXNzYWdlUmVzb3VyY2VzQ29uZmlnKGphdmEubGFuZy5TdHJpbmcpIj48IS0tIC0tPjwvQT48SDM+CmZpbmRNZXNzYWdlUmVzb3VyY2VzQ29uZmlnPC9IMz4KPFBSRT4KcHVibGljIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2NvbmZpZy9NZXNzYWdlUmVzb3VyY2VzQ29uZmlnLmh0bWwiPk1lc3NhZ2VSZXNvdXJjZXNDb25maWc8L0E+IDxCPmZpbmRNZXNzYWdlUmVzb3VyY2VzQ29uZmlnPC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7a2V5KTwvUFJFPgo8REw+CjxERD5SZXR1cm4gdGhlIG1lc3NhZ2UgcmVzb3VyY2VzIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBzcGVjaWZpZWQga2V5LAogaWYgYW55OyBvdGhlcndpc2UgcmV0dXJuIDxjb2RlPm51bGw8L2NvZGU+Lgo8UD4KPEREPjxETD4KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5rZXk8L0NPREU+IC0gS2V5IG9mIHRoZSBkYXRhIHNvdXJjZSBjb25maWd1cmF0aW9uIHRvIHJldHVybjwvREw+CjwvREQ+CjwvREw+CjxIUj4KCjxBIE5BTUU9ImZpbmRNZXNzYWdlUmVzb3VyY2VzQ29uZmlncygpIj48IS0tIC0tPjwvQT48SDM+CmZpbmRNZXNzYWdlUmVzb3VyY2VzQ29uZmlnczwvSDM+CjxQUkU+CnB1YmxpYyA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9jb25maWcvTWVzc2FnZVJlc291cmNlc0NvbmZpZy5odG1sIj5NZXNzYWdlUmVzb3VyY2VzQ29uZmlnPC9BPltdIDxCPmZpbmRNZXNzYWdlUmVzb3VyY2VzQ29uZmlnczwvQj4oKTwvUFJFPgo8REw+CjxERD5SZXR1cm4gdGhlIG1lc3NhZ2UgcmVzb3VyY2VzIGNvbmZpZ3VyYXRpb25zIGZvciB0aGlzIG1vZHVsZS4KIElmIHRoZXJlIGFyZSBub25lLCBhIHplcm8tbGVuZ3RoIGFycmF5IGlzIHJldHVybmVkLgo8UD4KPEREPjxETD4KPC9ETD4KPC9ERD4KPC9ETD4KPEhSPgoKPEEgTkFNRT0iZmluZFBsdWdJbkNvbmZpZ3MoKSI+PCEtLSAtLT48L0E+PEgzPgpmaW5kUGx1Z0luQ29uZmlnczwvSDM+CjxQUkU+CnB1YmxpYyA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9jb25maWcvUGx1Z0luQ29uZmlnLmh0bWwiPlBsdWdJbkNvbmZpZzwvQT5bXSA8Qj5maW5kUGx1Z0luQ29uZmlnczwvQj4oKTwvUFJFPgo8REw+CjxERD5SZXR1cm4gdGhlIGNvbmZpZ3VyZWQgcGx1Zy1pbiBhY3Rpb25zIGZvciB0aGlzIG1vZHVsZS4gIElmIHRoZXJlCiBhcmUgbm9uZSwgYSB6ZXJvLWxlbmd0aCBhcnJheSBpcyByZXR1cm5lZC4KPFA+CjxERD48REw+CjwvREw+CjwvREQ+CjwvREw+CjxIUj4KCjxBIE5BTUU9ImZyZWV6ZSgpIj48IS0tIC0tPjwvQT48SDM+CmZyZWV6ZTwvSDM+CjxQUkU+CnB1YmxpYyB2b2lkIDxCPmZyZWV6ZTwvQj4oKTwvUFJFPgo8REw+CjxERD5GcmVlemUgdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhpcyBtb2R1bGUuICBBZnRlciB0aGlzIG1ldGhvZAogcmV0dXJucywgYW55IGF0dGVtcHQgdG8gbW9kaWZ5IHRoZSBjb25maWd1cmF0aW9uIHdpbGwgcmV0dXJuCiBhbiBJbGxlZ2FsU3RhdGVFeGNlcHRpb24uCjxQPgo8REQ+PERMPgo8L0RMPgo8L0REPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJyZW1vdmVBY3Rpb25Db25maWcob3JnLmFwYWNoZS5zdHJ1dHMuY29uZmlnLkFjdGlvbkNvbmZpZykiPjwhLS0gLS0+PC9BPjxIMz4KcmVtb3ZlQWN0aW9uQ29uZmlnPC9IMz4KPFBSRT4KcHVibGljIHZvaWQgPEI+cmVtb3ZlQWN0aW9uQ29uZmlnPC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9jb25maWcvQWN0aW9uQ29uZmlnLmh0bWwiPkFjdGlvbkNvbmZpZzwvQT4mbmJzcDtjb25maWcpPC9QUkU+CjxETD4KPEREPlJlbW92ZSB0aGUgc3BlY2lmaWVkIGFjdGlvbiBjb25maWd1cmF0aW9uIGluc3RhbmNlLgo8UD4KPEREPjxETD4KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5jb25maWc8L0NPREU+IC0gQWN0aW9uQ29uZmlnIGluc3RhbmNlIHRvIGJlIHJlbW92ZWQKPERUPjxCPlRocm93czo8L0I+CjxERD48Q09ERT5qYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uPC9DT0RFPiAtIGlmIHRoaXMgbW9kdWxlIGNvbmZpZ3VyYXRpb24KICBoYXMgYmVlbiBmcm96ZW48L0RMPgo8L0REPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJyZW1vdmVFeGNlcHRpb25Db25maWcob3JnLmFwYWNoZS5zdHJ1dHMuY29uZmlnLkV4Y2VwdGlvbkNvbmZpZykiPjwhLS0gLS0+PC9BPjxIMz4KcmVtb3ZlRXhjZXB0aW9uQ29uZmlnPC9IMz4KPFBSRT4KcHVibGljIHZvaWQgPEI+cmVtb3ZlRXhjZXB0aW9uQ29uZmlnPC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9jb25maWcvRXhjZXB0aW9uQ29uZmlnLmh0bWwiPkV4Y2VwdGlvbkNvbmZpZzwvQT4mbmJzcDtjb25maWcpPC9QUkU+CjxETD4KPEREPlJlbW92ZSB0aGUgc3BlY2lmaWVkIGV4Y2VwdGlvbiBjb25maWd1cmF0aW9uIGluc3RhbmNlLgo8UD4KPEREPjxETD4KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5jb25maWc8L0NPREU+IC0gQWN0aW9uQ29uZmlnIGluc3RhbmNlIHRvIGJlIHJlbW92ZWQKPERUPjxCPlRocm93czo8L0I+CjxERD48Q09ERT5qYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uPC9DT0RFPiAtIGlmIHRoaXMgbW9kdWxlIGNvbmZpZ3VyYXRpb24KICBoYXMgYmVlbiBmcm96ZW48L0RMPgo8L0REPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJyZW1vdmVEYXRhU291cmNlQ29uZmlnKG9yZy5hcGFjaGUuc3RydXRzLmNvbmZpZy5EYXRhU291cmNlQ29uZmlnKSI+PCEtLSAtLT48L0E+PEgzPgpyZW1vdmVEYXRhU291cmNlQ29uZmlnPC9IMz4KPFBSRT4KcHVibGljIHZvaWQgPEI+cmVtb3ZlRGF0YVNvdXJjZUNvbmZpZzwvQj4oPEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL2FwYWNoZS9zdHJ1dHMvY29uZmlnL0RhdGFTb3VyY2VDb25maWcuaHRtbCI+RGF0YVNvdXJjZUNvbmZpZzwvQT4mbmJzcDtjb25maWcpPC9QUkU+CjxETD4KPEREPlJlbW92ZSB0aGUgc3BlY2lmaWVkIGRhdGEgc291cmNlIGNvbmZpZ3VyYXRpb24gaW5zdGFuY2UuCjxQPgo8REQ+PERMPgo8RFQ+PEI+UGFyYW1ldGVyczo8L0I+PEREPjxDT0RFPmNvbmZpZzwvQ09ERT4gLSBEYXRhU291cmNlQ29uZmlnIGluc3RhbmNlIHRvIGJlIHJlbW92ZWQKPERUPjxCPlRocm93czo8L0I+CjxERD48Q09ERT5qYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uPC9DT0RFPiAtIGlmIHRoaXMgbW9kdWxlIGNvbmZpZ3VyYXRpb24KICBoYXMgYmVlbiBmcm96ZW48L0RMPgo8L0REPgo8L0RMPgo8SFI+Cgo8QSBOQU1FPSJyZW1vdmVGb3JtQmVhbkNvbmZpZyhvcmcuYXBhY2hlLnN0cnV0cy5jb25maWcuRm9ybUJlYW5Db25maWcpIj48IS0tIC0tPjwvQT48SDM+CnJlbW92ZUZvcm1CZWFuQ29uZmlnPC9IMz4KPFBSRT4KcHVibGljIHZvaWQgPEI+cmVtb3ZlRm9ybUJlYW5Db25maWc8L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2NvbmZpZy9Gb3JtQmVhbkNvbmZpZy5odG1sIj5Gb3JtQmVhbkNvbmZpZzwvQT4mbmJzcDtjb25maWcpPC9QUkU+CjxETD4KPEREPlJlbW92ZSB0aGUgc3BlY2lmaWVkIGZvcm0gYmVhbiBjb25maWd1cmF0aW9uIGluc3RhbmNlLgo8UD4KPEREPjxETD4KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5jb25maWc8L0NPREU+IC0gRm9ybUJlYW5Db25maWcgaW5zdGFuY2UgdG8gYmUgcmVtb3ZlZAo8RFQ+PEI+VGhyb3dzOjwvQj4KPEREPjxDT0RFPmphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb248L0NPREU+IC0gaWYgdGhpcyBtb2R1bGUgY29uZmlndXJhdGlvbgogIGhhcyBiZWVuIGZyb3plbjwvREw+CjwvREQ+CjwvREw+CjxIUj4KCjxBIE5BTUU9InJlbW92ZUZvcndhcmRDb25maWcob3JnLmFwYWNoZS5zdHJ1dHMuY29uZmlnLkZvcndhcmRDb25maWcpIj48IS0tIC0tPjwvQT48SDM+CnJlbW92ZUZvcndhcmRDb25maWc8L0gzPgo8UFJFPgpwdWJsaWMgdm9pZCA8Qj5yZW1vdmVGb3J3YXJkQ29uZmlnPC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvYXBhY2hlL3N0cnV0cy9jb25maWcvRm9yd2FyZENvbmZpZy5odG1sIj5Gb3J3YXJkQ29uZmlnPC9BPiZuYnNwO2NvbmZpZyk8L1BSRT4KPERMPgo8REQ+UmVtb3ZlIHRoZSBzcGVjaWZpZWQgZm9yd2FyZCBjb25maWd1cmF0aW9uIGluc3RhbmNlLgo8UD4KPEREPjxETD4KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5jb25maWc8L0NPREU+IC0gRm9yd2FyZENvbmZpZyBpbnN0YW5jZSB0byBiZSByZW1vdmVkCjxEVD48Qj5UaHJvd3M6PC9CPgo8REQ+PENPREU+amF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbjwvQ09ERT4gLSBpZiB0aGlzIG1vZHVsZSBjb25maWd1cmF0aW9uCiAgaGFzIGJlZW4gZnJvemVuPC9ETD4KPC9ERD4KPC9ETD4KPEhSPgoKPEEgTkFNRT0icmVtb3ZlTWVzc2FnZVJlc291cmNlc0NvbmZpZyhvcmcuYXBhY2hlLnN0cnV0cy5jb25maWcuTWVzc2FnZVJlc291cmNlc0NvbmZpZykiPjwhLS0gLS0+PC9BPjxIMz4KcmVtb3ZlTWVzc2FnZVJlc291cmNlc0NvbmZpZzwvSDM+CjxQUkU+CnB1YmxpYyB2b2lkIDxCPnJlbW92ZU1lc3NhZ2VSZXNvdXJjZXNDb25maWc8L0I+KDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2NvbmZpZy9NZXNzYWdlUmVzb3VyY2VzQ29uZmlnLmh0bWwiPk1lc3NhZ2VSZXNvdXJjZXNDb25maWc8L0E+Jm5ic3A7Y29uZmlnKTwvUFJFPgo8REw+CjxERD5SZW1vdmUgdGhlIHNwZWNpZmllZCBtZXNzYWdlIHJlc291cmNlcyBjb25maWd1cmF0aW9uIGluc3RhbmNlLgo8UD4KPEREPjxETD4KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5jb25maWc8L0NPREU+IC0gTWVzc2FnZVJlc291cmNlc0NvbmZpZyBpbnN0YW5jZSB0byBiZSByZW1vdmVkCjxEVD48Qj5UaHJvd3M6PC9CPgo8REQ+PENPREU+amF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbjwvQ09ERT4gLSBpZiB0aGlzIG1vZHVsZSBjb25maWd1cmF0aW9uCiAgaGFzIGJlZW4gZnJvemVuPC9ETD4KPC9ERD4KPC9ETD4KPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPgo8SFI+Cgo8IS0tID09PT09PT09PT0gU1RBUlQgT0YgTkFWQkFSID09PT09PT09PT0gLS0+CjxBIE5BTUU9Im5hdmJhcl9ib3R0b20iPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIwIiBXSURUSD0iMTAwJSIgQ0VMTFBBRERJTkc9IjEiIENFTExTUEFDSU5HPSIwIj4KPFRSPgo8VEQgQ09MU1BBTj0zIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+CjxBIE5BTUU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMCIgQ0VMTFNQQUNJTkc9IjMiPgogIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+CiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+CiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2Utc3VtbWFyeS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlBhY2thZ2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvTW9kdWxlQ29uZmlnLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+CiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkRlcHJlY2F0ZWQ8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPgogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC1hbGwuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+CiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+CiAgPC9UUj4KPC9UQUJMRT4KPC9URD4KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFJPV1NQQU49Mz48RU0+CjwvRU0+CjwvVEQ+CjwvVFI+Cgo8VFI+CjxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+CiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy9hcGFjaGUvc3RydXRzL2NvbmZpZy9Db25maWdIZWxwZXJJbnRlcmZhY2UuaHRtbCI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7CiZuYnNwO05FWFQgQ0xBU1M8L0ZPTlQ+PC9URD4KPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4KICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC5odG1sIiBUQVJHRVQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsKJm5ic3A7PEEgSFJFRj0iTW9kdWxlQ29uZmlnLmh0bWwiIFRBUkdFVD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT4gICZuYnNwOwombmJzcDsKPFNDUklQVD4KICA8IS0tCiAgaWYod2luZG93PT10b3ApIHsKICAgIGRvY3VtZW50LndyaXRlbG4oJzxBIEhSRUY9Ii4uLy4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIiBUQVJHRVQ9IiI+PEI+QWxsIENsYXNzZXM8L0I+PC9BPicpOwogIH0KICAvLy0tPgo8L1NDUklQVD4KPE5PU0NSSVBUPgo8QSBIUkVGPSIuLi8uLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCIgVEFSR0VUPSIiPjxCPkFsbCBDbGFzc2VzPC9CPjwvQT4KPC9OT1NDUklQVD4KPC9GT05UPjwvVEQ+CjwvVFI+CjxUUj4KPFREIFZBTElHTj0idG9wIiBDTEFTUz0iTmF2QmFyQ2VsbDMiPjxGT05UIFNJWkU9Ii0yIj4KICBTVU1NQVJZOiZuYnNwO05FU1RFRCZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+CjxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+CkRFVEFJTDombmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4KPC9UUj4KPC9UQUJMRT4KPCEtLSA9PT09PT09PT09PSBFTkQgT0YgTkFWQkFSID09PT09PT09PT09IC0tPgoKPEhSPgpDb3B5cmlnaHQgqSAyMDAwLTIwMDMgLSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgo8L0JPRFk+CjwvSFRNTD4K