PGh0bWw+PGhlYWQ+DQo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2RlZmF1bHRfc3R5bGUuY3NzIj4NCjx0aXRsZT5FY2xpcHNlLm9yZyBjb25zb3J0aXVtPC90aXRsZT48L2hlYWQ+DQo8Ym9keSB0ZXh0PSIjMDAwMDAwIiBiZ2NvbG9yPSIjZmZmZmZmIiBsaW5rPSIjMDAwMGVlIiB2bGluaz0iIzU1MWE4YiIgYWxpbms9IiNmZjAwMDAiPg0KPHRhYmxlIGJvcmRlcj0wIGNlbGxzcGFjaW5nPTUgY2VsbHBhZGRpbmc9MiB3aWR0aD0iMTAwJSIgPg0KICA8dHI+IA0KICAgIDx0ZCBhbGlnbj1sZWZ0IHdpZHRoPSI3MiUiPiA8Zm9udCBjbGFzcz1pbmRleHRvcD4gbmV3IG1lbWJlcnMsIG5ldyBwcm9qZWN0czwvZm9udD48YnI+DQogICAgICA8Zm9udCBjbGFzcz1pbmRleHN1Yj4gPC9mb250PjwvdGQ+DQogICAgPHRkIHdpZHRoPSIyOCUiPjxpbWcgc3JjPSIuLi8uLi9pbWFnZXMvSWRlYS5qcGciIGhlaWdodD04NiB3aWR0aD0xMjA+PC90ZD4NCiAgPC90cj4NCjwvdGFibGU+DQo8dGFibGUgYm9yZGVyPTAgY2VsbHNwYWNpbmc9NSBjZWxscGFkZGluZz0yIHdpZHRoPSIxMDAlIiA+DQogIDx0cj4gDQogICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmdjb2xvcj0iIzAwODBDMCI+PGI+PGZvbnQgY29sb3I9IiNGRkZGRkYiIGZhY2U9IkFyaWFsLEhlbHZldGljYSI+UHJlc3MgcmVsZWFzZTwvZm9udD48L2I+PC90ZD4NCiAgPC90cj4NCiAgPHRyPiANCiAgICA8dGQ+IDxicj4NCiAgICAgIDxoMSBBTElHTj0iQ0VOVEVSIj48Yj48c3BhbiBzdHlsZT0nZm9udC1zaXplOjE2LjBwdDtmb250LWZhbWlseTpBcmlhbDsiVGltZXMgTmV3IFJvbWFuIic+PGI+IA0KICAgICAgICBNb21lbnR1bSBCdWlsZHMgYXMgRWNsaXBzZSBFY28tU3lzdGVtIEdyb3dzPC9iPjwvc3Bhbj48L2I+PC9oMT4NCiAgICAgIDxVTD4NCiAgICAgICAgPExJPkNvbnNvcnRpdW0gR3Jvd3MgdG8gMzAgTWVtYmVycyBpbiBGaXJzdCBZZWFyPC9MST4NCiAgICAgICAgPExJPlRocmVlIE5ldyBPcGVuIFNvdXJjZSBQcm9qZWN0cyBGb3JtPC9MST4NCiAgICAgICAgPExJPkRvd25sb2FkIFJlcXVlc3RzIFRvcCAzLjEgbWlsbGlvbjwvTEk+DQogICAgICA8L1VMPg0KICAgICAgPFA+RGVjZW1iZXIgMTYsIDIwMDIgLSBUb2RheSwgdGhlIEVjbGlwc2UgQ29uc29ydGl1bSBhbm5vdW5jZWQgdGhhdCBpdCBoYXMgDQogICAgICAgIHdlbGNvbWVkIHRoaXJ0ZWVuIG5ldyBzdXBwb3J0aW5nIG1lbWJlciBjb21wYW5pZXMgYW5kIG9yZ2FuaXphdGlvbnMgYW5kIA0KICAgICAgICB0aGF0IGl0IGlzIGxhdW5jaGluZyBmb3VyIG5ldyBvcGVuLXNvdXJjZSBwcm9qZWN0cyBmb3IgdG9vbHMgYW5kIHRlY2hub2xvZ3kgDQogICAgICAgIGltcGxlbWVudGF0aW9uOiBDT0JPTCwgUHJvamVjdCBIeWFkZXMgZm9yIEF1dG9tYXRlZCBTb2Z0d2FyZSBRdWFsaXR5LCANCiAgICAgICAgdGhlIEVjbGlwc2UgTW9kZWxpbmcgRnJhbWV3b3JrIGFuZCB0aGUgS29pIFByb2plY3QuIFRoaXMgYWRkcyB0byB0aGUgbW9tZW50dW0gDQogICAgICAgIHRoYXQgRWNsaXBzZSBoYXMgc2VlbiB3aXRoIG92ZXIgMy4xIG1pbGxpb24gZG93bmxvYWQgcmVxdWVzdHMgbG9nZ2VkIGZyb20gDQogICAgICAgIG92ZXIgMTI1IGNvdW50cmllcyBpbiBpdHMgZmlyc3QgeWVhci4gQSB3b3JsZHdpZGUgImVjby1zeXN0ZW0iIG9mIHRvb2xzIA0KICAgICAgICBwcm92aWRlcnMgYW5kIGNvbnN1bWVycyBpcyBmb3JtaW5nIGFyb3VuZCB0aGUgRWNsaXBzZSBQbGF0Zm9ybSwgYW4gb3BlbiANCiAgICAgICAgdW5pdmVyc2FsIHRvb2xzIGludGVncmF0aW9uIHBsYXRmb3JtIGZvciBtdWx0aS1sYW5ndWFnZSwgbXVsdGktcGxhdGZvcm0gDQogICAgICAgIGFuZCBtdWx0aS12ZW5kb3IgY2hvaWNlLiBFY2xpcHNlIG1ha2VzIGl0IGVhc2llciBmb3IgdGVjaG5vbG9neSBwcm9kdWNlcnMgDQogICAgICAgIGFuZCBjb25zdW1lcnMgdG8gY3JlYXRlLCBpbnRlZ3JhdGUgYW5kIHVzZSBpbnRlZ3JhdGVkIHNvZnR3YXJlIHRvb2xzLCANCiAgICAgICAgc2F2aW5nIGRldmVsb3BlcnMgdGltZSBhbmQgbW9uZXkuIDwvcD4NCiAgICAgIDxwPkVjbGlwc2UgaXMgbm93IHN1cHBvcnRlZCBieSBwcm92aWRlcnMgb2YgYSBicm9hZCByYW5nZSBvZiBkZXZlbG9wbWVudCANCiAgICAgICAgdGVjaG5vbG9naWVzIGluY2x1ZGluZyBzcGVjaWFsaXN0cyBpbiBtb2RlbGluZywgY29kZSBnZW5lcmF0aW9uLCBtZXRhZGF0YSANCiAgICAgICAgbWFuYWdlbWVudCwgdGVzdGluZywgZW1iZWRkZWQgY29tcHV0aW5nLCBlbnRlcnByaXNlIG1pZGRsZXdhcmUsIGNvbGxhYm9yYXRpb24sIA0KICAgICAgICBzZXJ2aWNlcywgcmVzZWFyY2ggYW5kIGFwcGxpY2F0aW9uIHN5c3RlbXMgdmVuZG9ycy4gVGhlIHRoaXJ0ZWVuIG5ldyBtZW1iZXIgDQogICAgICAgIGNvbXBhbmllcyBhbmQgb3JnYW5pemF0aW9uIHRoYXQgaGF2ZSBqb2luZWQgdGhlIEVjbGlwc2UgQ29uc29ydGl1bSBzaW5jZSANCiAgICAgICAgU2VwdGVtYmVyIGluY2x1ZGU6IEFsdG9XZWIsIENhdGFseXN0IFN5c3RlbXMsIEZsYXNobGluZSwgSGV3bGV0dCBQYWNrYXJkLCANCiAgICAgICAgRVRSSSAodGhlIEtvcmVhbiBpbmZvcm1hdGlvbiB0ZWNobm9sb2d5IHJlc2VhcmNoIGluc3RpdHV0ZSksIE1LUyBTb2Z0d2FyZSwgDQogICAgICAgIE9yYWNsZSwgUGFyYXNvZnQsIFNBUCwgU2xpY2tFZGl0LCBUZWFtc3R1ZGlvLCBUaW1lc3lzIGFuZCBPTUcsIHRoZSBPYmplY3QgDQogICAgICAgIE1hbmFnZW1lbnQgR3JvdXAuIFRoZXkgam9pbiBtZW1iZXJzOiBGdWppdHN1LCBIaXRhY2hpLCBMdGQuLCBJbnN0YW50aWF0aW9ucywgDQogICAgICAgIEluYy4sIE1vbnRhVmlzdGEgU29mdHdhcmUsIFNjYXBhIFRlY2hub2xvZ2llcyBMaW1pdGVkLCBTZXJlbmEgU29mdHdhcmUsIA0KICAgICAgICBTeWJhc2UsIFRlbGVsb2dpYywgVHJhbnMtRW50ZXJwcmlzZSBJbnRlZ3JhdGlvbiBDb3JwLiBhbmQgZm91bmRpbmcgbWVtYmVycyANCiAgICAgICAgQm9ybGFuZCwgSUJNLCBNRVJBTlQsIFFOWCBTb2Z0d2FyZSBTeXN0ZW1zLCBSYXRpb25hbCBTb2Z0d2FyZSwgUmVkSGF0LCANCiAgICAgICAgU3VTRSwgYW5kIFRvZ2V0aGVyU29mdCBpbiBwcm92aWRpbmcgb25nb2luZyBzdXBwb3J0IGZvciBFY2xpcHNlIG9wZW4tc291cmNlIA0KICAgICAgICBwcm9qZWN0cy48L3A+DQogICAgICA8cD5FY2xpcHNlIGlzIHN0cnVjdHVyZWQgaW4gb3Blbi1zb3VyY2UgcHJvamVjdHMgc3VwcG9ydGVkIGJ5IG1lbWJlciBjb21wYW5pZXMgDQogICAgICAgIGFuZCBpbmRpdmlkdWFscyB0aGF0IGZyZWVseSBjb250cmlidXRlIHN1cHBvcnQsIHRlY2hub2xvZ3kgYW5kIHNraWxsLiANCiAgICAgICAgVGhlIGZvdXIgbmV3IG9wZW4tc291cmNlIHByb2plY3RzIGFyZSBmb3JtaW5nIHRvIGV4dGVuZCB0aGUgY29yZSBFY2xpcHNlIA0KICAgICAgICBQbGF0Zm9ybSB3aXRoIHRvb2xzLCBmcmFtZXdvcmtzIGFuZCByZXVzYWJsZSB0ZWNobm9sb2d5IGZvciBrZXkgZGV2ZWxvcG1lbnQgDQogICAgICAgIGFyZWFzLiBUaGVzZSBwcm9qZWN0cyBpbmNsdWRlOjwvcD4NCiAgICAgIDx1bD4NCiAgICAgICAgPGxpPlRvb2xzIGZvciBkZXZlbG9waW5nIGluIHRoZSBDT0JPTCBMYW5ndWFnZSwgYmFzZWQgdXBvbiBhIGRvbmF0aW9uIA0KICAgICAgICAgIGZyb20gRnVqaXRzdTwvbGk+DQoJCSAgPGxpPlRoZSBFY2xpcHNlIE1vZGVsaW5nIEZyYW1ld29yayAtIGEgbW9kZWwgZHJpdmVuIG1ldGFkYXRhIA0KICAgICAgICAgIG1hbmFnZW1lbnQgZnJhbWV3b3JrIGJhc2VkIHVwb24gT01HJ3MgTW9kZWwgRHJpdmVuIEFyY2hpdGVjdHVyZSwgd2l0aCANCiAgICAgICAgICBwYXJ0aWNpcGF0aW9uIGZyb20gSUJNLCBSYXRpb25hbCwgYW5kIFRvZ2V0aGVyc29mdDwvbGk+DQoJCSAgPGxpPlByb2plY3QgSHlhZGVzLCANCiAgICAgICAgICBhIG5ldyBmcmFtZXdvcmsgYW5kIHJldXNhYmxlIHRlY2hub2xvZ3kgc3VwcG9ydGluZyBkZXBsb3ltZW50IG9mIEF1dG9tYXRlZCANCiAgICAgICAgICBTb2Z0d2FyZSBRdWFsaXR5ICh0ZXN0IGFuZCB0cmFjZSkgdG9vbHMgbGVkIGJ5IElCTSwgU2NhcGEgVGVjaG5vbG9naWVzLCANCiAgICAgICAgICBUZWxlbG9naWMgYW5kIFBhcmFzb2Z0PC9saT4NCgkJICA8bGk+S29pIFByb2plY3QgLSBhIG5ldyBpbmZyYXN0cnVjdHVyZSBzdXBwb3J0aW5nIA0KICAgICAgICAgIGNvbGxhYm9yYXRpdmUgZGV2ZWxvcG1lbnQgYWN0aXZpdGllcyBiZXR3ZWVuIHRlYW0gbWVtYmVycyBsZWQgYnkgSW5zdGFudGlhdGlvbnMsIA0KICAgICAgICAgIEluYy4gPC9saT4NCiAgICAgIDwvdWw+DQogICAgICA8cD5BIGdyb3dpbmcgbnVtYmVyIG9mIG9mZmVyaW5ncyAiUG93ZXJlZCBieSBFY2xpcHNlIFRlY2hub2xvZ3kiIGFyZSBub3cNCmF2YWlsYWJsZSBmcm9tIG1lbWJlciBjb21wYW5pZXMgbGlrZSBDYXRhbHlzdCAoT3Blbk1ha2UpLCBGbGFzaGxpbmUgKENNRUUpLA0KSUJNIChXZWJTcGhlcmUgU3R1ZGlvKSwgSW5zdGFudGlhdGlvbnMgKENvZGVQcm8gU3R1ZGlvKSwgTUVSQU5UIChQVkNTKSwNClBhcmFTb2Z0IChKdGVzdCksIFFOWCBTb2Z0d2FyZSBTeXN0ZW1zIChNb21lbnRpY3MpLCBSQVRJT05BTCAoWERFOw0KQ2xlYXJDYXNlKSwgVGVhbXN0dWRpbyAoQW5hbHl6ZXIgZm9yIEphdmEpLCBUZWxlbG9naWMgKFN5bmVyZ3kpIGFuZCBvdGhlcnMuDQpFbWJhcmNhZGVybywgR2VudWl0ZWMsIEludGVyd292ZW4sIEp1bml0LCBNYWNyb01lZGlhLCBNS1MsIFBhcmFzb2Z0LA0KU2l0cmFrYSwgU3RhckJhc2UsIFZlcnNhbnQsIGFuZCBWZXJzYXRhIGhhdmUgaW50cm9kdWNlZCBjb21tZXJjaWFsbHkNCmF2YWlsYWJsZSBFY2xpcHNlIGJhc2VkIG9mZmVyaW5ncy4gPC9wPg0KICAgICAgPHA+RnVsbCBkZXRhaWxzIG9mIHRoZSBFY2xpcHNlIENvbnNvcnRpdW0sIG9wZW4tc291cmNlIGNvbW11bml0eSwgVGhlIEVjbGlwc2UNClBsYXRmb3JtIGFuZCByb3lhbHR5LWZyZWUgZG93bmxvYWRzIGFyZSBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZzwvcD4NCiAgICA8L3RkPg0KICA8L3RyPg0KICA8L3RhYmxlPg0KJm5ic3A7DQoNCgkJPHRhYmxlIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0wIGNlbGxwYWRkaW5nPTMgYWxpZ249Y2VudGVyPg0KCQk8dHIgYmdjb2xvcj0iIzk5OTk5OSI+DQoJCQ0KICAgIDx0ZCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiMwMDgwQzAiPjxiPjxmb250IGNvbG9yPSIjRkZGRkZGIiBmYWNlPSJBcmlhbCxIZWx2ZXRpY2EiPkFib3V0IA0KICAgICAgRWNsaXBzZTwvZm9udD48L2I+PC90ZD4NCgkJPC9UUj4NCgkJPFRSPg0KCQk8dGQgYWxpZ249bGVmdD4NCgkJPFRBQkxFICB3aWR0aD0iMTAwJSIgQ0VMTFNQQUNJTkc9MCBDRUxMUEFERElORz0zPg0KCQk8dHI+DQoJCSAgPHRkPiBFY2xpcHNlIGlzIGFuIG9wZW4gc291cmNlIGVjby1zeXN0ZW0gb2Ygcm95YWx0eS1mcmVlIHRlY2hub2xvZ3kgYW5kIGENCnVuaXZlcnNhbCBwbGF0Zm9ybSBmb3IgdG9vbHMgaW50ZWdyYXRpb24uIEVjbGlwc2UgYmFzZWQgdG9vbHMgZ2l2ZQ0KZGV2ZWxvcGVycyBmcmVlZG9tIG9mIGNob2ljZSBpbiBhIG11bHRpLWxhbmd1YWdlLCBtdWx0aS1wbGF0Zm9ybSwNCm11bHRpLXZlbmRvciBzdXBwb3J0ZWQgZW52aXJvbm1lbnQuIEVjbGlwc2UgZGVsaXZlcnMgYSBwbHVnLWluIGJhc2VkDQpmcmFtZXdvcmsgdGhhdCBtYWtlcyBpdCBlYXNpZXIgdG8gY3JlYXRlLCBpbnRlZ3JhdGUgYW5kIHVzZSBzb2Z0d2FyZSB0b29scywNCnNhdmluZyB0aW1lIGFuZCBtb25leS4gQnkgY29sbGFib3JhdGluZyBhbmQgc2hhcmluZyBjb3JlIGludGVncmF0aW9uDQp0ZWNobm9sb2d5LCB0b29sIHByb2R1Y2VycyBjYW4gY29uY2VudHJhdGUgb24gdGhlaXIgYXJlYXMgb2YgZXhwZXJ0aXNlIGFuZA0KdGhlIGNyZWF0aW9uIG9mIG5ldyBkZXZlbG9wbWVudCB0ZWNobm9sb2d5LiAgVGhlIEVjbGlwc2UgUGxhdGZvcm0gaXMNCndyaXR0ZW4NCmluIHRoZSBKYXZhKHRtKSBsYW5ndWFnZSwgYW5kIGNvbWVzIHdpdGggZXh0ZW5zaXZlIHBsdWctaW4gY29uc3RydWN0aW9uDQp0b29sa2l0cyBhbmQgZXhhbXBsZXMuICBJdCBoYXMgYWxyZWFkeSBiZWVuIGRlcGxveWVkIG9uIGEgcmFuZ2Ugb2YNCmRldmVsb3BtZW50IHdvcmtzdGF0aW9ucyBpbmNsdWRpbmcgTGludXiuLCBRTliuIGFuZCBXaW5kb3dzriBiYXNlZCBzeXN0ZW1zLg0KRnVsbCBkZXRhaWxzIG9mIHRoZSBFY2xpcHNlIGNvbW11bml0eSBhbmQgd2hpdGUgcGFwZXJzIGRvY3VtZW50aW5nIHRoZQ0KZGVzaWduIG9mIHRoZSBFY2xpcHNlIFBsYXRmb3JtIGFyZSBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy48L3RkPg0KCQk8L3RyPg0KICAgICAgICA8L3RhYmxlPjwvdGFibGU+Jm5ic3A7DQoNCgkJPHRhYmxlIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0wIGNlbGxwYWRkaW5nPTMgYWxpZ249Y2VudGVyPg0KCQk8dHIgYmdjb2xvcj0iIzk5OTk5OSI+DQoJCTx0ZCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiMwMDgwQzAiPjxiPjxmb250IGNvbG9yPSIjRkZGRkZGIiBmYWNlPSJBcmlhbCxIZWx2ZXRpY2EiPk1lZGlhIGNvbnRhY3RzIDwvZm9udD48L2I+PC90ZD4NCgkJPC9UUj4NCgkJPFRSPg0KCQk8dGQgYWxpZ249bGVmdD4NCgkJPFRBQkxFICB3aWR0aD0iMTAwJSIgQ0VMTFNQQUNJTkc9MCBDRUxMUEFERElORz0zPg0KCQk8dHI+DQoJCSAgPHRkPiANCiAgICAgICAgICAgIDxkaXYgYWxpZ249ImNlbnRlciI+QmFyYmFyYSBTdGV3YXJ0PGJyPg0KICAgICAgICAgICAgICBQYXR0ZXJzb24gYW5kIEFzc29jaWF0ZXM8YnI+DQogICAgICAgICAgICAgIDQ4MC00ODgtNjkwOTxicj4NCiAgICAgICAgICAgICAgYmFyYmFyYUBwYXR0ZXJzb24uY29tIDwvZGl2Pg0KICAgICAgICAgICAgPGhyIHdpZHRoPSI4NSUiPg0KICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgPFA+PFNVUD4oMSkgPC9zdXA+U29tZSBjb21wb25lbnRzIG9mIEVjbGlwc2UgbWF5IGJlIGdvdmVybmVkIGJ5IGxpY2Vuc2UgdGVybXMgb3RoZXIgdGhhbiB0aGUgQ1BMLiA8L1A+DQo8UD4mIzk7QnJhbmQgb3IgcHJvZHVjdCBuYW1lcyBhcmUgcmVnaXN0ZXJlZCB0cmFkZW1hcmtzIG9yIHRyYWRlbWFya3Mgb2YgdGhlaXIgcmVzcGVjdGl2ZSBob2xkZXJzLiBJQk0sIFdlYlNwaGVyZS4gREIyLCBNUVNlcmllcywgYW5kIFZpc3VhbEFnZSBhcmUgdHJhZGVtYXJrcyBvZiBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGluIHRoZSBVbml0ZWQgU3RhdGVzLCBvdGhlciBjb3VudHJpZXMsIG9yIGJvdGguIEphdmEgYW5kIGFsbCBKYXZhLWJhc2VkIHRyYWRlbWFya3MgYXJlIHRyYWRlbWFya3Mgb3IgcmVnaXN0ZXJlZCB0cmFkZW1hcmtzIG9mIFN1biBNaWNyb3N5c3RlbXMsIEluYy4gaW4gdGhlIFVuaXRlZCBTdGF0ZXMgYW5kIG90aGVyIGNvdW50cmllcy4gTWljcm9zb2Z0LCBXaW5kb3dzLCBXaW5kb3dzIE5UIGFuZCB0aGUgV2luZG93cyBsb2dvIGFyZSB0cmFkZW1hcmtzIG9mIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbiBpbiB0aGUgVW5pdGVkIFN0YXRlcywgb3RoZXIgY291bnRyaWVzLCBvciBib3RoLiA8L1A+DQo8aHIgd2lkdGg9Ijg1JSI+DQogICAgICAgICAgICA8cD48YSBocmVmPSIuLi9tYWluLmh0bWwiPlJldHVybiB0byB0aGUgZWNsaXBzZS5vcmcgY29uc29ydGl1bSBtYWluIHBhZ2U8L2E+PC9wPg0KICAgICAgICA8L3RkPg0KCQk8L3RyPg0KICAgICAgICA8L3RhYmxlPjwvdGFibGU+Jm5ic3A7ICAgICAgICANCiZuYnNwOw0KPC9ib2R5PjwvaHRtbD4NCg==