PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMC8vRU4iPg0KPCEtLU5ld1BhZ2UtLT4NCjxIVE1MPg0KPEhFQUQ+DQo8IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIG9uIFRodSBOb3YgMjIgMTc6MTI6NTkgRVNUIDIwMDcgLS0+DQo8VElUTEU+DQpYYWxhbi1KYXZhIDIuNy4xOiBJbnRlcmZhY2UgIEV2ZW50VGFyZ2V0DQo8L1RJVExFPg0KPExJTksgUkVMID0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii4uLy4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiBUSVRMRT0iU3R5bGUiPg0KPC9IRUFEPg0KPEJPRFkgQkdDT0xPUj0id2hpdGUiPg0KDQo8IS0tID09PT09PT09PT0gU1RBUlQgT0YgTkFWQkFSID09PT09PT09PT0gLS0+DQo8QSBOQU1FPSJuYXZiYXJfdG9wIj48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMCIgV0lEVEg9IjEwMCUiIENFTExQQURESU5HPSIxIiBDRUxMU1BBQ0lORz0iMCI+DQo8VFI+DQo8VEQgQ09MU1BBTj0yIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+DQo8QSBOQU1FPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij48IS0tIC0tPjwvQT4KPFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjAiIENFTExTUEFDSU5HPSIzIj4NCiAgPFRSIEFMSUdOPSJjZW50ZXIiIFZBTElHTj0idG9wIj4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL292ZXJ2aWV3LXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5PdmVydmlldzwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5QYWNrYWdlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNGRkZGRkYiIENMQVNTPSJOYXZCYXJDZWxsMVJldiI+ICZuYnNwOzxGT05UIENMQVNTPSJOYXZCYXJGb250MVJldiI+PEI+Q2xhc3M8L0I+PC9GT05UPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSJjbGFzcy11c2UvRXZlbnRUYXJnZXQuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5Vc2U8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS10cmVlLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VHJlZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5EZXByZWNhdGVkPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4LWFsbC5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkluZGV4PC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+SGVscDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDwvVFI+DQo8L1RBQkxFPg0KPC9URD4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBST1dTUEFOPTM+PEVNPg0KPC9FTT4NCjwvVEQ+DQo8L1RSPg0KDQo8VFI+DQo8VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPg0KJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL3czYy9kb20vZXZlbnRzL0V2ZW50TGlzdGVuZXIuaHRtbCI+PEI+UFJFViBDTEFTUzwvQj48L0E+Jm5ic3A7DQombmJzcDs8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvdzNjL2RvbS9ldmVudHMvTW91c2VFdmVudC5odG1sIj48Qj5ORVhUIENMQVNTPC9CPjwvQT48L0ZPTlQ+PC9URD4NCjxURCBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9Ik5hdkJhckNlbGwyIj48Rk9OVCBTSVpFPSItMiI+DQogIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL2luZGV4Lmh0bWwiIFRBUkdFVD0iX3RvcCI+PEI+RlJBTUVTPC9CPjwvQT4gICZuYnNwOw0KJm5ic3A7PEEgSFJFRj0iRXZlbnRUYXJnZXQuaHRtbCIgVEFSR0VUPSJfdG9wIj48Qj5OTyBGUkFNRVM8L0I+PC9BPjwvRk9OVD48L1REPg0KPC9UUj4NCjxUUj4NCjxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+DQogIFNVTU1BUlk6ICZuYnNwO0lOTkVSJm5ic3A7fCZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX3N1bW1hcnkiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4NCjxURCBWQUxJR049InRvcCIgQ0xBU1M9Ik5hdkJhckNlbGwzIj48Rk9OVCBTSVpFPSItMiI+DQpERVRBSUw6ICZuYnNwO0ZJRUxEJm5ic3A7fCZuYnNwO0NPTlNUUiZuYnNwO3wmbmJzcDs8QSBIUkVGPSIjbWV0aG9kX2RldGFpbCI+TUVUSE9EPC9BPjwvRk9OVD48L1REPg0KPC9UUj4NCjwvVEFCTEU+DQo8IS0tID09PT09PT09PT09IEVORCBPRiBOQVZCQVIgPT09PT09PT09PT0gLS0+DQoNCjxIUj4NCjwhLS0gPT09PT09PT0gU1RBUlQgT0YgQ0xBU1MgREFUQSA9PT09PT09PSAtLT4NCjxIMj4NCjxGT05UIFNJWkU9Ii0xIj4NCm9yZy53M2MuZG9tLmV2ZW50czwvRk9OVD4NCjxCUj4NCkludGVyZmFjZSAgRXZlbnRUYXJnZXQ8L0gyPg0KPEhSPg0KPERMPg0KPERUPnB1YmxpYyBpbnRlcmZhY2UgPEI+RXZlbnRUYXJnZXQ8L0I+PC9ETD4NCg0KPFA+DQpUaGUgPGNvZGU+RXZlbnRUYXJnZXQ8L2NvZGU+IGludGVyZmFjZSBpcyBpbXBsZW1lbnRlZCBieSBhbGwgCiA8Y29kZT5Ob2RlczwvY29kZT4gaW4gYW4gaW1wbGVtZW50YXRpb24gd2hpY2ggc3VwcG9ydHMgdGhlIERPTSBFdmVudCAKIE1vZGVsLiBUaGVyZWZvcmUsIHRoaXMgaW50ZXJmYWNlIGNhbiBiZSBvYnRhaW5lZCBieSB1c2luZyAKIGJpbmRpbmctc3BlY2lmaWMgY2FzdGluZyBtZXRob2RzIG9uIGFuIGluc3RhbmNlIG9mIHRoZSA8Y29kZT5Ob2RlPC9jb2RlPiAKIGludGVyZmFjZS4gVGhlIGludGVyZmFjZSBhbGxvd3MgcmVnaXN0cmF0aW9uIGFuZCByZW1vdmFsIG9mIAogPGNvZGU+RXZlbnRMaXN0ZW5lcnM8L2NvZGU+IG9uIGFuIDxjb2RlPkV2ZW50VGFyZ2V0PC9jb2RlPiBhbmQgZGlzcGF0Y2ggCiBvZiBldmVudHMgdG8gdGhhdCA8Y29kZT5FdmVudFRhcmdldDwvY29kZT4uCiA8cD5TZWUgYWxzbyB0aGUgPGEgaHJlZj0naHR0cDovL3d3dy53My5vcmcvVFIvMjAwMC9SRUMtRE9NLUxldmVsLTItRXZlbnRzLTIwMDAxMTEzJz5Eb2N1bWVudCBPYmplY3QgTW9kZWwgKERPTSkgTGV2ZWwgMiBFdmVudHMgU3BlY2lmaWNhdGlvbjwvYT4uDQo8UD4NCjxETD4NCjxEVD48Qj5TaW5jZTogPC9CPjxERD5ET00gTGV2ZWwgMjwvREQ+DQo8L0RMPg0KPEhSPg0KDQo8UD4NCjwhLS0gPT09PT09PT0gSU5ORVIgQ0xBU1MgU1VNTUFSWSA9PT09PT09PSAtLT4NCg0KDQo8IS0tID09PT09PT09PT09IEZJRUxEIFNVTU1BUlkgPT09PT09PT09PT0gLS0+DQoNCg0KPCEtLSA9PT09PT09PSBDT05TVFJVQ1RPUiBTVU1NQVJZID09PT09PT09IC0tPg0KDQoNCjwhLS0gPT09PT09PT09PSBNRVRIT0QgU1VNTUFSWSA9PT09PT09PT09PSAtLT4NCg0KPEEgTkFNRT0ibWV0aG9kX3N1bW1hcnkiPjwhLS0gLS0+PC9BPgo8VEFCTEUgQk9SREVSPSIxIiBDRUxMUEFERElORz0iMyIgQ0VMTFNQQUNJTkc9IjAiIFdJRFRIPSIxMDAlIj4NCjxUUiBCR0NPTE9SPSIjQ0NDQ0ZGIiBDTEFTUz0iVGFibGVIZWFkaW5nQ29sb3IiPg0KPFREIENPTFNQQU49Mj48Rk9OVCBTSVpFPSIrMiI+DQo8Qj5NZXRob2QgU3VtbWFyeTwvQj48L0ZPTlQ+PC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL3czYy9kb20vZXZlbnRzL0V2ZW50VGFyZ2V0Lmh0bWwjYWRkRXZlbnRMaXN0ZW5lcihqYXZhLmxhbmcuU3RyaW5nLCBvcmcudzNjLmRvbS5ldmVudHMuRXZlbnRMaXN0ZW5lciwgYm9vbGVhbikiPmFkZEV2ZW50TGlzdGVuZXI8L0E+PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7dHlwZSwKICAgICAgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvdzNjL2RvbS9ldmVudHMvRXZlbnRMaXN0ZW5lci5odG1sIj5FdmVudExpc3RlbmVyPC9BPiZuYnNwO2xpc3RlbmVyLAogICAgICAgICAgICAgICAgIGJvb2xlYW4mbmJzcDt1c2VDYXB0dXJlKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhpcyBtZXRob2QgYWxsb3dzIHRoZSByZWdpc3RyYXRpb24gb2YgZXZlbnQgbGlzdGVuZXJzIG9uIHRoZSBldmVudCAKIHRhcmdldC48L1REPg0KPC9UUj4NCjxUUiBCR0NPTE9SPSJ3aGl0ZSIgQ0xBU1M9IlRhYmxlUm93Q29sb3IiPg0KPFREIEFMSUdOPSJyaWdodCIgVkFMSUdOPSJ0b3AiIFdJRFRIPSIxJSI+PEZPTlQgU0laRT0iLTEiPg0KPENPREU+Jm5ic3A7Ym9vbGVhbjwvQ09ERT48L0ZPTlQ+PC9URD4NCjxURD48Q09ERT48Qj48QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvdzNjL2RvbS9ldmVudHMvRXZlbnRUYXJnZXQuaHRtbCNkaXNwYXRjaEV2ZW50KG9yZy53M2MuZG9tLmV2ZW50cy5FdmVudCkiPmRpc3BhdGNoRXZlbnQ8L0E+PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvdzNjL2RvbS9ldmVudHMvRXZlbnQuaHRtbCI+RXZlbnQ8L0E+Jm5ic3A7ZXZ0KTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhpcyBtZXRob2QgYWxsb3dzIHRoZSBkaXNwYXRjaCBvZiBldmVudHMgaW50byB0aGUgaW1wbGVtZW50YXRpb25zIAogZXZlbnQgbW9kZWwuPC9URD4NCjwvVFI+DQo8VFIgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJUYWJsZVJvd0NvbG9yIj4NCjxURCBBTElHTj0icmlnaHQiIFZBTElHTj0idG9wIiBXSURUSD0iMSUiPjxGT05UIFNJWkU9Ii0xIj4NCjxDT0RFPiZuYnNwO3ZvaWQ8L0NPREU+PC9GT05UPjwvVEQ+DQo8VEQ+PENPREU+PEI+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL3czYy9kb20vZXZlbnRzL0V2ZW50VGFyZ2V0Lmh0bWwjcmVtb3ZlRXZlbnRMaXN0ZW5lcihqYXZhLmxhbmcuU3RyaW5nLCBvcmcudzNjLmRvbS5ldmVudHMuRXZlbnRMaXN0ZW5lciwgYm9vbGVhbikiPnJlbW92ZUV2ZW50TGlzdGVuZXI8L0E+PC9CPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7dHlwZSwKICAgICAgICAgICAgICAgICAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvdzNjL2RvbS9ldmVudHMvRXZlbnRMaXN0ZW5lci5odG1sIj5FdmVudExpc3RlbmVyPC9BPiZuYnNwO2xpc3RlbmVyLAogICAgICAgICAgICAgICAgICAgIGJvb2xlYW4mbmJzcDt1c2VDYXB0dXJlKTwvQ09ERT4NCg0KPEJSPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhpcyBtZXRob2QgYWxsb3dzIHRoZSByZW1vdmFsIG9mIGV2ZW50IGxpc3RlbmVycyBmcm9tIHRoZSBldmVudCAKIHRhcmdldC48L1REPg0KPC9UUj4NCjwvVEFCTEU+DQombmJzcDsNCjxQPg0KDQo8IS0tID09PT09PT09PT09PSBGSUVMRCBERVRBSUwgPT09PT09PT09PT0gLS0+DQoNCg0KPCEtLSA9PT09PT09PT0gQ09OU1RSVUNUT1IgREVUQUlMID09PT09PT09IC0tPg0KDQoNCjwhLS0gPT09PT09PT09PT09IE1FVEhPRCBERVRBSUwgPT09PT09PT09PSAtLT4NCg0KPEEgTkFNRT0ibWV0aG9kX2RldGFpbCI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjEiIENFTExQQURESU5HPSIzIiBDRUxMU1BBQ0lORz0iMCIgV0lEVEg9IjEwMCUiPg0KPFRSIEJHQ09MT1I9IiNDQ0NDRkYiIENMQVNTPSJUYWJsZUhlYWRpbmdDb2xvciI+DQo8VEQgQ09MU1BBTj0xPjxGT05UIFNJWkU9IisyIj4NCjxCPk1ldGhvZCBEZXRhaWw8L0I+PC9GT05UPjwvVEQ+DQo8L1RSPg0KPC9UQUJMRT4NCg0KPEEgTkFNRT0iYWRkRXZlbnRMaXN0ZW5lcihqYXZhLmxhbmcuU3RyaW5nLCBvcmcudzNjLmRvbS5ldmVudHMuRXZlbnRMaXN0ZW5lciwgYm9vbGVhbikiPjwhLS0gLS0+PC9BPjxIMz4NCmFkZEV2ZW50TGlzdGVuZXI8L0gzPg0KPFBSRT4NCnB1YmxpYyB2b2lkIDxCPmFkZEV2ZW50TGlzdGVuZXI8L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDt0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy93M2MvZG9tL2V2ZW50cy9FdmVudExpc3RlbmVyLmh0bWwiPkV2ZW50TGlzdGVuZXI8L0E+Jm5ic3A7bGlzdGVuZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiZuYnNwO3VzZUNhcHR1cmUpPC9QUkU+DQo8REw+DQo8REQ+VGhpcyBtZXRob2QgYWxsb3dzIHRoZSByZWdpc3RyYXRpb24gb2YgZXZlbnQgbGlzdGVuZXJzIG9uIHRoZSBldmVudCAKIHRhcmdldC4gSWYgYW4gPGNvZGU+RXZlbnRMaXN0ZW5lcjwvY29kZT4gaXMgYWRkZWQgdG8gYW4gCiA8Y29kZT5FdmVudFRhcmdldDwvY29kZT4gd2hpbGUgaXQgaXMgcHJvY2Vzc2luZyBhbiBldmVudCwgaXQgd2lsbCBub3QgCiBiZSB0cmlnZ2VyZWQgYnkgdGhlIGN1cnJlbnQgYWN0aW9ucyBidXQgbWF5IGJlIHRyaWdnZXJlZCBkdXJpbmcgYSAKIGxhdGVyIHN0YWdlIG9mIGV2ZW50IGZsb3csIHN1Y2ggYXMgdGhlIGJ1YmJsaW5nIHBoYXNlLiAKIDxicj4gSWYgbXVsdGlwbGUgaWRlbnRpY2FsIDxjb2RlPkV2ZW50TGlzdGVuZXI8L2NvZGU+cyBhcmUgcmVnaXN0ZXJlZCAKIG9uIHRoZSBzYW1lIDxjb2RlPkV2ZW50VGFyZ2V0PC9jb2RlPiB3aXRoIHRoZSBzYW1lIHBhcmFtZXRlcnMgdGhlIAogZHVwbGljYXRlIGluc3RhbmNlcyBhcmUgZGlzY2FyZGVkLiBUaGV5IGRvIG5vdCBjYXVzZSB0aGUgCiA8Y29kZT5FdmVudExpc3RlbmVyPC9jb2RlPiB0byBiZSBjYWxsZWQgdHdpY2UgYW5kIHNpbmNlIHRoZXkgYXJlIAogZGlzY2FyZGVkIHRoZXkgZG8gbm90IG5lZWQgdG8gYmUgcmVtb3ZlZCB3aXRoIHRoZSAKIDxjb2RlPnJlbW92ZUV2ZW50TGlzdGVuZXI8L2NvZGU+IG1ldGhvZC48REQ+PERMPg0KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT50eXBlPC9DT0RFPiAtIFRoZSBldmVudCB0eXBlIGZvciB3aGljaCB0aGUgdXNlciBpcyByZWdpc3RlcmluZzxERD48Q09ERT5saXN0ZW5lcjwvQ09ERT4gLSBUaGUgPGNvZGU+bGlzdGVuZXI8L2NvZGU+IHBhcmFtZXRlciB0YWtlcyBhbiBpbnRlcmZhY2UgCiAgIGltcGxlbWVudGVkIGJ5IHRoZSB1c2VyIHdoaWNoIGNvbnRhaW5zIHRoZSBtZXRob2RzIHRvIGJlIGNhbGxlZCAKICAgd2hlbiB0aGUgZXZlbnQgb2NjdXJzLjxERD48Q09ERT51c2VDYXB0dXJlPC9DT0RFPiAtIElmIHRydWUsIDxjb2RlPnVzZUNhcHR1cmU8L2NvZGU+IGluZGljYXRlcyB0aGF0IHRoZSAKICAgdXNlciB3aXNoZXMgdG8gaW5pdGlhdGUgY2FwdHVyZS4gQWZ0ZXIgaW5pdGlhdGluZyBjYXB0dXJlLCBhbGwgCiAgIGV2ZW50cyBvZiB0aGUgc3BlY2lmaWVkIHR5cGUgd2lsbCBiZSBkaXNwYXRjaGVkIHRvIHRoZSByZWdpc3RlcmVkIAogICA8Y29kZT5FdmVudExpc3RlbmVyPC9jb2RlPiBiZWZvcmUgYmVpbmcgZGlzcGF0Y2hlZCB0byBhbnkgCiAgIDxjb2RlPkV2ZW50VGFyZ2V0czwvY29kZT4gYmVuZWF0aCB0aGVtIGluIHRoZSB0cmVlLiBFdmVudHMgd2hpY2ggCiAgIGFyZSBidWJibGluZyB1cHdhcmQgdGhyb3VnaCB0aGUgdHJlZSB3aWxsIG5vdCB0cmlnZ2VyIGFuIAogICA8Y29kZT5FdmVudExpc3RlbmVyPC9jb2RlPiBkZXNpZ25hdGVkIHRvIHVzZSBjYXB0dXJlLjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0icmVtb3ZlRXZlbnRMaXN0ZW5lcihqYXZhLmxhbmcuU3RyaW5nLCBvcmcudzNjLmRvbS5ldmVudHMuRXZlbnRMaXN0ZW5lciwgYm9vbGVhbikiPjwhLS0gLS0+PC9BPjxIMz4NCnJlbW92ZUV2ZW50TGlzdGVuZXI8L0gzPg0KPFBSRT4NCnB1YmxpYyB2b2lkIDxCPnJlbW92ZUV2ZW50TGlzdGVuZXI8L0I+KGphdmEubGFuZy5TdHJpbmcmbmJzcDt0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy93M2MvZG9tL2V2ZW50cy9FdmVudExpc3RlbmVyLmh0bWwiPkV2ZW50TGlzdGVuZXI8L0E+Jm5ic3A7bGlzdGVuZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiZuYnNwO3VzZUNhcHR1cmUpPC9QUkU+DQo8REw+DQo8REQ+VGhpcyBtZXRob2QgYWxsb3dzIHRoZSByZW1vdmFsIG9mIGV2ZW50IGxpc3RlbmVycyBmcm9tIHRoZSBldmVudCAKIHRhcmdldC4gSWYgYW4gPGNvZGU+RXZlbnRMaXN0ZW5lcjwvY29kZT4gaXMgcmVtb3ZlZCBmcm9tIGFuIAogPGNvZGU+RXZlbnRUYXJnZXQ8L2NvZGU+IHdoaWxlIGl0IGlzIHByb2Nlc3NpbmcgYW4gZXZlbnQsIGl0IHdpbGwgbm90IAogYmUgdHJpZ2dlcmVkIGJ5IHRoZSBjdXJyZW50IGFjdGlvbnMuIDxjb2RlPkV2ZW50TGlzdGVuZXI8L2NvZGU+cyBjYW4gCiBuZXZlciBiZSBpbnZva2VkIGFmdGVyIGJlaW5nIHJlbW92ZWQuCiA8YnI+Q2FsbGluZyA8Y29kZT5yZW1vdmVFdmVudExpc3RlbmVyPC9jb2RlPiB3aXRoIGFyZ3VtZW50cyB3aGljaCBkbyAKIG5vdCBpZGVudGlmeSBhbnkgY3VycmVudGx5IHJlZ2lzdGVyZWQgPGNvZGU+RXZlbnRMaXN0ZW5lcjwvY29kZT4gb24gCiB0aGUgPGNvZGU+RXZlbnRUYXJnZXQ8L2NvZGU+IGhhcyBubyBlZmZlY3QuPEREPjxETD4NCjxEVD48Qj5QYXJhbWV0ZXJzOjwvQj48REQ+PENPREU+dHlwZTwvQ09ERT4gLSBTcGVjaWZpZXMgdGhlIGV2ZW50IHR5cGUgb2YgdGhlIDxjb2RlPkV2ZW50TGlzdGVuZXI8L2NvZGU+IAogICBiZWluZyByZW1vdmVkLjxERD48Q09ERT5saXN0ZW5lcjwvQ09ERT4gLSBUaGUgPGNvZGU+RXZlbnRMaXN0ZW5lcjwvY29kZT4gcGFyYW1ldGVyIGluZGljYXRlcyB0aGUgCiAgIDxjb2RlPkV2ZW50TGlzdGVuZXIgPC9jb2RlPiB0byBiZSByZW1vdmVkLjxERD48Q09ERT51c2VDYXB0dXJlPC9DT0RFPiAtIFNwZWNpZmllcyB3aGV0aGVyIHRoZSA8Y29kZT5FdmVudExpc3RlbmVyPC9jb2RlPiAKICAgYmVpbmcgcmVtb3ZlZCB3YXMgcmVnaXN0ZXJlZCBhcyBhIGNhcHR1cmluZyBsaXN0ZW5lciBvciBub3QuIElmIGEgCiAgIGxpc3RlbmVyIHdhcyByZWdpc3RlcmVkIHR3aWNlLCBvbmUgd2l0aCBjYXB0dXJlIGFuZCBvbmUgd2l0aG91dCwgCiAgIGVhY2ggbXVzdCBiZSByZW1vdmVkIHNlcGFyYXRlbHkuIFJlbW92YWwgb2YgYSBjYXB0dXJpbmcgbGlzdGVuZXIgCiAgIGRvZXMgbm90IGFmZmVjdCBhIG5vbi1jYXB0dXJpbmcgdmVyc2lvbiBvZiB0aGUgc2FtZSBsaXN0ZW5lciwgYW5kIAogICB2aWNlIHZlcnNhLjwvREw+DQo8L0REPg0KPC9ETD4NCjxIUj4NCg0KPEEgTkFNRT0iZGlzcGF0Y2hFdmVudChvcmcudzNjLmRvbS5ldmVudHMuRXZlbnQpIj48IS0tIC0tPjwvQT48SDM+DQpkaXNwYXRjaEV2ZW50PC9IMz4NCjxQUkU+DQpwdWJsaWMgYm9vbGVhbiA8Qj5kaXNwYXRjaEV2ZW50PC9CPig8QSBIUkVGPSIuLi8uLi8uLi8uLi9vcmcvdzNjL2RvbS9ldmVudHMvRXZlbnQuaHRtbCI+RXZlbnQ8L0E+Jm5ic3A7ZXZ0KQogICAgICAgICAgICAgICAgICAgICAgdGhyb3dzIDxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy93M2MvZG9tL2V2ZW50cy9FdmVudEV4Y2VwdGlvbi5odG1sIj5FdmVudEV4Y2VwdGlvbjwvQT48L1BSRT4NCjxETD4NCjxERD5UaGlzIG1ldGhvZCBhbGxvd3MgdGhlIGRpc3BhdGNoIG9mIGV2ZW50cyBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbnMgCiBldmVudCBtb2RlbC4gRXZlbnRzIGRpc3BhdGNoZWQgaW4gdGhpcyBtYW5uZXIgd2lsbCBoYXZlIHRoZSBzYW1lIAogY2FwdHVyaW5nIGFuZCBidWJibGluZyBiZWhhdmlvciBhcyBldmVudHMgZGlzcGF0Y2hlZCBkaXJlY3RseSBieSB0aGUgCiBpbXBsZW1lbnRhdGlvbi4gVGhlIHRhcmdldCBvZiB0aGUgZXZlbnQgaXMgdGhlIAogPGNvZGU+IEV2ZW50VGFyZ2V0PC9jb2RlPiBvbiB3aGljaCA8Y29kZT5kaXNwYXRjaEV2ZW50PC9jb2RlPiBpcyAKIGNhbGxlZC48REQ+PERMPg0KPERUPjxCPlBhcmFtZXRlcnM6PC9CPjxERD48Q09ERT5ldnQ8L0NPREU+IC0gU3BlY2lmaWVzIHRoZSBldmVudCB0eXBlLCBiZWhhdmlvciwgYW5kIGNvbnRleHR1YWwgCiAgIGluZm9ybWF0aW9uIHRvIGJlIHVzZWQgaW4gcHJvY2Vzc2luZyB0aGUgZXZlbnQuPERUPjxCPlJldHVybnM6PC9CPjxERD5UaGUgcmV0dXJuIHZhbHVlIG9mIDxjb2RlPmRpc3BhdGNoRXZlbnQ8L2NvZGU+IGluZGljYXRlcyAKICAgd2hldGhlciBhbnkgb2YgdGhlIGxpc3RlbmVycyB3aGljaCBoYW5kbGVkIHRoZSBldmVudCBjYWxsZWQgCiAgIDxjb2RlPnByZXZlbnREZWZhdWx0PC9jb2RlPi4gSWYgPGNvZGU+cHJldmVudERlZmF1bHQ8L2NvZGU+IHdhcyAKICAgY2FsbGVkIHRoZSB2YWx1ZSBpcyBmYWxzZSwgZWxzZSB0aGUgdmFsdWUgaXMgdHJ1ZS48RFQ+PEI+VGhyb3dzOjwvQj48REQ+PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL3czYy9kb20vZXZlbnRzL0V2ZW50RXhjZXB0aW9uLmh0bWwiPkV2ZW50RXhjZXB0aW9uPC9BPiAtIFVOU1BFQ0lGSUVEX0VWRU5UX1RZUEVfRVJSOiBSYWlzZWQgaWYgdGhlIDxjb2RlPkV2ZW50PC9jb2RlPidzIHR5cGUgCiAgIHdhcyBub3Qgc3BlY2lmaWVkIGJ5IGluaXRpYWxpemluZyB0aGUgZXZlbnQgYmVmb3JlIAogICA8Y29kZT5kaXNwYXRjaEV2ZW50PC9jb2RlPiB3YXMgY2FsbGVkLiBTcGVjaWZpY2F0aW9uIG9mIHRoZSAKICAgPGNvZGU+RXZlbnQ8L2NvZGU+J3MgdHlwZSBhcyA8Y29kZT5udWxsPC9jb2RlPiBvciBhbiBlbXB0eSBzdHJpbmcgCiAgIHdpbGwgYWxzbyB0cmlnZ2VyIHRoaXMgZXhjZXB0aW9uLjwvREw+DQo8L0REPg0KPC9ETD4NCjwhLS0gPT09PT09PT09IEVORCBPRiBDTEFTUyBEQVRBID09PT09PT09PSAtLT4NCjxIUj4NCg0KPCEtLSA9PT09PT09PT09IFNUQVJUIE9GIE5BVkJBUiA9PT09PT09PT09IC0tPg0KPEEgTkFNRT0ibmF2YmFyX2JvdHRvbSI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjAiIFdJRFRIPSIxMDAlIiBDRUxMUEFERElORz0iMSIgQ0VMTFNQQUNJTkc9IjAiPg0KPFRSPg0KPFREIENPTFNQQU49MiBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPg0KPEEgTkFNRT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+PCEtLSAtLT48L0E+CjxUQUJMRSBCT1JERVI9IjAiIENFTExQQURESU5HPSIwIiBDRUxMU1BBQ0lORz0iMyI+DQogIDxUUiBBTElHTj0iY2VudGVyIiBWQUxJR049InRvcCI+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9vdmVydmlldy1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+T3ZlcnZpZXc8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+UGFja2FnZTwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRkZGRkZGIiBDTEFTUz0iTmF2QmFyQ2VsbDFSZXYiPiAmbmJzcDs8Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDFSZXYiPjxCPkNsYXNzPC9CPjwvRk9OVD4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iY2xhc3MtdXNlL0V2ZW50VGFyZ2V0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+VXNlPC9CPjwvRk9OVD48L0E+Jm5ic3A7PC9URD4NCiAgPFREIEJHQ09MT1I9IiNFRUVFRkYiIENMQVNTPSJOYXZCYXJDZWxsMSI+ICAgIDxBIEhSRUY9InBhY2thZ2UtdHJlZS5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPlRyZWU8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8VEQgQkdDT0xPUj0iI0VFRUVGRiIgQ0xBU1M9Ik5hdkJhckNlbGwxIj4gICAgPEEgSFJFRj0iLi4vLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPjxGT05UIENMQVNTPSJOYXZCYXJGb250MSI+PEI+RGVwcmVjYXRlZDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC1hbGwuaHRtbCI+PEZPTlQgQ0xBU1M9Ik5hdkJhckZvbnQxIj48Qj5JbmRleDwvQj48L0ZPTlQ+PC9BPiZuYnNwOzwvVEQ+DQogIDxURCBCR0NPTE9SPSIjRUVFRUZGIiBDTEFTUz0iTmF2QmFyQ2VsbDEiPiAgICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9oZWxwLWRvYy5odG1sIj48Rk9OVCBDTEFTUz0iTmF2QmFyRm9udDEiPjxCPkhlbHA8L0I+PC9GT05UPjwvQT4mbmJzcDs8L1REPg0KICA8L1RSPg0KPC9UQUJMRT4NCjwvVEQ+DQo8VEQgQUxJR049InJpZ2h0IiBWQUxJR049InRvcCIgUk9XU1BBTj0zPjxFTT4NCjwvRU0+DQo8L1REPg0KPC9UUj4NCg0KPFRSPg0KPFREIEJHQ09MT1I9IndoaXRlIiBDTEFTUz0iTmF2QmFyQ2VsbDIiPjxGT05UIFNJWkU9Ii0yIj4NCiZuYnNwOzxBIEhSRUY9Ii4uLy4uLy4uLy4uL29yZy93M2MvZG9tL2V2ZW50cy9FdmVudExpc3RlbmVyLmh0bWwiPjxCPlBSRVYgQ0xBU1M8L0I+PC9BPiZuYnNwOw0KJm5ic3A7PEEgSFJFRj0iLi4vLi4vLi4vLi4vb3JnL3czYy9kb20vZXZlbnRzL01vdXNlRXZlbnQuaHRtbCI+PEI+TkVYVCBDTEFTUzwvQj48L0E+PC9GT05UPjwvVEQ+DQo8VEQgQkdDT0xPUj0id2hpdGUiIENMQVNTPSJOYXZCYXJDZWxsMiI+PEZPTlQgU0laRT0iLTIiPg0KICA8QSBIUkVGPSIuLi8uLi8uLi8uLi9pbmRleC5odG1sIiBUQVJHRVQ9Il90b3AiPjxCPkZSQU1FUzwvQj48L0E+ICAmbmJzcDsNCiZuYnNwOzxBIEhSRUY9IkV2ZW50VGFyZ2V0Lmh0bWwiIFRBUkdFVD0iX3RvcCI+PEI+Tk8gRlJBTUVTPC9CPjwvQT48L0ZPTlQ+PC9URD4NCjwvVFI+DQo8VFI+DQo8VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPg0KICBTVU1NQVJZOiAmbmJzcDtJTk5FUiZuYnNwO3wmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9zdW1tYXJ5Ij5NRVRIT0Q8L0E+PC9GT05UPjwvVEQ+DQo8VEQgVkFMSUdOPSJ0b3AiIENMQVNTPSJOYXZCYXJDZWxsMyI+PEZPTlQgU0laRT0iLTIiPg0KREVUQUlMOiAmbmJzcDtGSUVMRCZuYnNwO3wmbmJzcDtDT05TVFImbmJzcDt8Jm5ic3A7PEEgSFJFRj0iI21ldGhvZF9kZXRhaWwiPk1FVEhPRDwvQT48L0ZPTlQ+PC9URD4NCjwvVFI+DQo8L1RBQkxFPg0KPCEtLSA9PT09PT09PT09PSBFTkQgT0YgTkFWQkFSID09PT09PT09PT09IC0tPg0KDQo8SFI+DQpDb3B5cmlnaHQgqSAyMDA2IEFwYWNoZSBYTUwgUHJvamVjdC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCjwvQk9EWT4NCjwvSFRNTD4NCg==