PCFkb2N0eXBlIGh0bWwgcHVibGljICItLy93M2MvL2R0ZCBodG1sIDQuMCB0cmFuc2l0aW9uYWwvL2VuIj4KPGh0bWw+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KPHRpdGxlPkVjbGlwc2UgVHJ1c3QgRnJhbWV3b3JrIFByb2plY3Q8L3RpdGxlPgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2VjbGlwc2Utd2VidG9vbHMvdGVtcGxhdGVzL2VjbGlwc2UvZWNsaXBzZS5jc3MiPjwvaGVhZD4KPGJvZHkgdGV4dD0iIzAwMDAwMCIgYmdjb2xvcj0iI2ZmZmZmZiIgbGluaz0iIzAwMDBlZSIgdmxpbms9IiM1NTFhOGIiIGFsaW5rPSIjZmYwMDAwIj4KPHRhYmxlIHdpZHRoPSIxMDAlIiAgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iNSIgY2VsbHBhZGRpbmc9IjIiPgogIDx0cj4KICAgIDx0ZCB3aWR0aD0iNjAlIj48Zm9udCBjbGFzcz0iaW5kZXh0b3AiPmVjbGlwc2UgdHJ1c3QgZnJhbWV3b3JrPC9mb250Pjxicj4KICAgICAgICA8Zm9udCBjbGFzcz0iaW5kZXhzdWIiPlByb2plY3QgUHJvcG9zYWwgPC9mb250PjwvdGQ+CiAgICA8dGQgd2lkdGg9IjQwJSIgY2xhc3M9ImluZGV4c3ViIj48aW1nIFNSQz0iLi4vLi4vaW1hZ2VzL0lkZWEuanBnIiBIU1BBQ0U9NTAgaGVpZ2h0PTg2IHdpZHRoPTEyMCBhbGlnbj1DRU5URVI+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCBjb2xzcGFuPSIyIj5UaGlzIHByb3Bvc2FsIGlzIGluIHRoZSBQcm9qZWN0IFByb3Bvc2FsIFBoYXNlIChhcyBkZWZpbmVkIAogICAgICBpbiB0aGUgPGEgaHJlZj0iL3Byb2plY3RzL2Rldl9wcm9jZXNzLyI+RWNsaXBzZSAKICAgICAgRGV2ZWxvcG1lbnQgUHJvY2VzcyBkb2N1bWVudDwvYT4pIGFuZCBpcyB3cml0dGVuIHRvIGRlY2xhcmUgdGhlIGludGVudCBhbmQgCiAgICAgIHNjb3BlIG9mIGEgcHJvcG9zZWQgVGVjaG5vbG9neSBQTUMgUHJvamVjdCBjYWxsZWQgdGhlIEVjbGlwc2UgVHJ1c3QgRnJhbWV3b3JrIAogICAgICBQcm9qZWN0LCBvciBFVEYuIEluIGFkZGl0aW9uLCB0aGlzIHByb3Bvc2FsIGlzIHdyaXR0ZW4gdG8gc29saWNpdCBhZGRpdGlvbmFsIAogICAgICBwYXJ0aWNpcGF0aW9uIGFuZCBpbnB1dHMgZnJvbSB0aGUgRWNsaXBzZSBjb21tdW5pdHkuIFlvdSBhcmUgaW52aXRlZCB0byAKICAgICAgY29tbWVudCBvbiBhbmQvb3Igam9pbiB0aGUgcHJvamVjdC4gUGxlYXNlIHNlbmQgYWxsIGZlZWRiYWNrIHRvIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL25ld3Nwb3J0YWwvdGhyZWFkLnBocD9ncm91cD1lY2xpcHNlLnRlY2hub2xvZ3kuZXRmIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL25ld3Nwb3J0YWwvdGhyZWFkLnBocD9ncm91cD1lY2xpcHNlLnRlY2hub2xvZ3kuZXRmPC9hPiAKICAgICAgbmV3c2dyb3VwLiA8L3RkPgogIDwvdHI+CjwvdGFibGU+Cjx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iNSIgd2lkdGg9IjEwMCUiPgogIDx0ciBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiMwMDgwQzAiPgogICAgPHRkIGNvbHNwYW49IjIiIGNsYXNzPSJzdHlsZTIiPjxmb250IGNvbG9yPSIjRkZGRkZGIiBmYWNlPSJBcmlhbCxIZWx2ZXRpY2EiPjxiPkJhY2tncm91bmQ8L2I+PC9mb250PjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgY29sc3Bhbj0iMiI+IAogICAgICA8cD48c3BhbiBzdHlsZT0nY29sb3I6YmxhY2snPlRoZSA8L3NwYW4+RWNsaXBzZSBQcm9qZWN0IGhhcyBiZWNvbWUgb25lIG9mIAogICAgICAgIHRoZSBtb3N0IHN1Y2Nlc3NmdWwgb3Blbi1zb3VyY2UgcHJvamVjdHMgaW4gdGhlIHdvcmxkLCBlc3RhYmxpc2hpbmcgcHJlZW1pbmVuY2UgCiAgICAgICAgaW4gdGhlIHRvb2xpbmcvSURFIGFyZW5hLiBUaGUgbGF1bmNoIG9mIHRoZSBSaWNoIENsaWVudCBQbGF0Zm9ybSAoUkNQKSAKICAgICAgICBoYXMgZXh0ZW5kZWQgdGhlIGRvbWFpbiBvZiB0aGUgRWNsaXBzZSBwbGF0Zm9ybSBiZXlvbmQgdGhlIElERSBhcmVuYS48c3BhbgpzdHlsZT0nbXNvLXNwYWNlcnVuOnllcyc+oCA8L3NwYW4+UmVjZW50bHkgcHJvcG9zZWQgcHJvamVjdHMgYXJlIGZ1cnRoZXIgZXh0ZW5kaW5nIAogICAgICAgIHRoZSBSQ1AgdG8gc3VwcG9ydCBlbWJlZGRlZCBhcHBsaWNhdGlvbnMgYW5kIHByb3ZpZGUgbW9kdWxhciBjb21tdW5pY2F0aW9ucyAKICAgICAgICBjYXBhYmlsaXRpZXMgdmlhIGEgY29tbXVuaWNhdGlvbnMgZnJhbWV3b3JrLjwvcD4KICAgICAgPHA+VGhpcyBwcm9qZWN0IHByb3Bvc2FsIG91dGxpbmVzIHRoZSBzY29wZSBhbmQgb3JnYW5pemF0aW9uIG9mIHRoZSBFVEYgCiAgICAgICAgcHJvamVjdC48c3BhbiBzdHlsZT0nbXNvLXNwYWNlcnVuOnllcyc+oCA8L3NwYW4+VGhlIGdvYWwgb2YgdGhlIEVURiBQcm9qZWN0IAogICAgICAgIGlzIHRvIHByb3ZpZGUgYW4gb3BlbiBzb3VyY2UgZnJhbWV3b3JrIHRvIHN1cHBvcnQgdGhlIGNyZWF0aW9uIG9mIGFwcGxpY2F0aW9ucyAKICAgICAgICBvbiB0aGUgRWNsaXBzZSBwbGF0Zm9ybSB0aGF0IG1hbmFnZSBhIHBlcnNvbiYjMTQ2O3Mgb25saW5lIGNvbnRleHQgKHByb2ZpbGUpIAogICAgICAgIGFuZCBpZGVudGl0eSBmcm9tIHRoZSBwZXJzb24mIzE0NjtzIG9yIHRoZWlyIGFnZW50JiMxNDY7cyBwZXJzcGVjdGl2ZS4gCiAgICAgIDwvcD4KCjwvdGQ+CiAgPC90cj4KPC90YWJsZT4KPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSI1IiB3aWR0aD0iMTAwJSI+CiAgPHRyIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCIgYmdjb2xvcj0iIzAwODBDMCI+CiAgICA8dGQgY29sc3Bhbj0iMiIgY2xhc3M9InN0eWxlMiI+PGZvbnQgY29sb3I9IiNGRkZGRkYiIGZhY2U9IkFyaWFsLEhlbHZldGljYSI+PGI+RGVzY3JpcHRpb24gCiAgICAgIChzY29wZSBhbmQgZ29hbHMpPC9iPjwvZm9udD48L3RkPgogIDwvdHI+CiAgPHRyPiAKICAgIDx0ZCBjb2xzcGFuPSIyIj4gCiAgICAgIDxwPlRoZXJlIGlzIGEgZ3Jvd2luZyBuZWVkIGZvciBhcHBsaWNhdGlvbnMgYW5kIHdlYnNpdGVzIHRvIGxldmVyYWdlIHVzZXIgCiAgICAgICAgY29udGV4dCBkYXRhIGFuZCBtYW5hZ2UgaXQgd2l0aCBhcHByb3ByaWF0ZSBwcml2YWN5IGNvbnRyb2xzLiBVc2UgY2FzZXMgCiAgICAgICAgaW5jbHVkZSBlLWNvbW1lcmNlLCBzb2NpYWwgbmV0d29ya2luZywgc2VhcmNoLCBwYXRpZW50IGNlbnRlcmVkIGhlYWx0aGNhcmUgCiAgICAgICAgYW5kIG90aGVyIGFwcGxpY2F0aW9ucyB3aXRoIGlkZW50aXR5IGlzc3Vlcy4gPC9wPgogICAgICA8cD5UaGUgZ29hbCBvZiB0aGUgRVRGIHByb2plY3QgaXMgdG8gZGV2ZWxvcCBhIHJldXNhYmxlLCBvcGVuIHNvdXJjZSBzb2Z0d2FyZSAKICAgICAgICBmcmFtZXdvcmsgYmFzZWQgb24gdGhlIEVjbGlwc2UgUmljaCBDbGllbnQgUGxhdGZvcm0gdGhhdCBwcm92aWRlcyBjb3JlIAogICAgICAgIGFwcGxpY2F0aW9ucyBzZXJ2aWNlcyBpbmNsdWRpbmc6PC9wPgogICAgICA8dWw+CiAgICAgICAgPGxpPkF1dGhlbnRpY2F0aW9uIGFuZCBDb250ZXh0IEFjY2VzcyBDb250cm9sIJYgY29udHJvbHMgYWNjZXNzIHRvIGNvbnRleHQgCiAgICAgICAgICBkYXRhLCBkZWxlZ2F0aW5nIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiB2aWEgYW4gZXh0ZW5zaW9uIHBvaW50LjwvbGk+CiAgICAgICAgPGxpPkNvbnRleHQgRGF0YSBNb2RlbCCWIHByb3ZpZGVzIGEgZmxleGlibGUgbmV0d29yayBkYXRhIG1vZGVsIGZvciBjb250ZXh0IAogICAgICAgICAgZGF0YSCWIHdlIHBsYW4gdG8gaWRlbnRpZnkgYW5kIGZvbGxvdyByZWxldmFudCBYTUwgc3RhbmRhcmRzIHdoZXJlIGFwcGxpY2FibGUuPC9saT4KICAgICAgICA8bGk+Q29udGV4dCBFZGl0aW5nICYjMTUwOyBzdXBwb3J0cyBlbmQgdXNlciByZWFkIGFuZCB1cGRhdGUgb2YgY29udGV4dCAKICAgICAgICAgIGRhdGE8L2xpPgogICAgICAgIDxsaT5Db250ZXh0IE1hbmFnZW1lbnQgJiMxNTA7IHN1cHBvcnRzIGF1dGhvcml6ZWQgc3lzdGVtIHJlYWQgYW5kIHVwZGF0ZSAKICAgICAgICAgIG9mIGNvbnRleHQgZGF0YTwvbGk+CiAgICAgICAgPGxpPkRpc3RyaWJ1dGVkIENvbnRleHQgUmVwbGljYXRpb24gJmFtcDsgU3luY2hyb25pemF0aW9uIJYgc3VwcG9ydHMgY29tbXVuaWNhdGlvbiAKICAgICAgICAgIG9mIGNvbnRleHQgZGF0YSB0by9mcm9tIG90aGVyIHN5c3RlbXM8L2xpPgogICAgICAgIDxsaT5Db250ZXh0IFBlcnNpc3RlbmNlIJYgc3VwcG9ydHMgc3RvcmFnZSBvZiBjb250ZXh0IGRhdGE8L2xpPgogICAgICAgIDxsaT5VSS1yZWxhdGVkIFNlcnZpY2VzICYjMTUwOyBzdXBwb3J0cyB0ZXh0IGFuZCBncmFwaGljYWwgZGlzcGxheSBvZiAKICAgICAgICAgIGNvbnRleHQgZGF0YTwvbGk+CiAgICAgICAgPGxpPlNlYXJjaCCWIHN1cHBvcnRzIHJldHJpZXZhbCBvZiBjb250ZXh0IGRhdGEgYW5kIHVzZSBvZiBjb250ZXh0IGRhdGEgCiAgICAgICAgICBmb3Igc21hcnQgc2VhcmNoPC9saT4KICAgICAgICA8bGk+Q29udGVudCBUYWdnaW5nIJYgc3VwcG9ydHMgdXNlIG9mIGNvbnRlbnQgdGFnZ2luZyBhbmQgbWV0YSBkYXRhIGFuYWx5c2lzIAogICAgICAgICAgdGVjaG5pcXVlcyBvbiBjb250ZXh0IHJlbGF0ZWQgZGF0YS48L2xpPgogICAgICA8L3VsPgogICAgICA8cD5UaGUgRVRGIG1hbmFnZXMgeW91ciBpZGVudGl0eSBhbmQgcmVsYXRpb25zaGlwcyB3aXRoaW4gZWFjaCBvZiB5b3VyIG11bHRpcGxlIAogICAgICAgIDxpPmNvbnRleHRzPC9pPiAtPC9wPgogICAgICA8dWw+CiAgICAgICAgPGxpPkEgY29udGV4dCBjb250YWlucyBhIHNldCBvZiBlbnRpdGllcyAocGVvcGxlIGFuZCBzeXN0ZW1zIHN1Y2ggYXMgY29sbGVhZ3VlcywgCiAgICAgICAgICBmcmllbmRzLCBhc3NvY2lhdGlvbnMsIGN1c3RvbWVyIGdyb3VwcywgZGVwYXJ0bWVudHMsIHdlYnNpdGVzLCBzdXBwbGllcnMsIAogICAgICAgICAgZW50ZXJwcmlzZSBkaXJlY3RvcmllcyBhbmQgYXBwcykgY29ubmVjdGVkIGludG8gYSBuZXR3b3JrIHN0cnVjdHVyZS48L2xpPgogICAgICAgIDxsaT5UaGlzIG5ldHdvcmsgaW5jbHVkZXMgaW5mb3JtYXRpb24gYWJvdXQgeW91LCB0aGUgcGVvcGxlIHlvdSBpbnRlcmFjdCAKICAgICAgICAgIHdpdGgsIGFuZCB5b3VyIHJlbGF0aW9uc2hpcHMgd2l0aCB0aGVtIChlLmcuIG5hbWVzLCBhZGRyZXNzZXMsIHByZWZlcmVuY2VzLCAKICAgICAgICAgIGFjY291bnRzLCBpbnRlcmVzdHMsIHBhc3N3b3JkcywgY29udGFjdHMsIJN0eXBlZCBsaW5rcyyUIGFmZmlsaWF0aW9ucywgCiAgICAgICAgICByYXRpbmdzICZhbXA7IHJlcHV0YXRpb24sIHRyYW5zYWN0aW9uIGluZm9ybWF0aW9uLCBldGMuKSA8L2xpPgogICAgICAgIDxsaT5UaGUgZnJhbWV3b3JrIG1hbmFnZXMgc3RvcmFnZSBhbmQgZW5jcnlwdGlvbiBvZiB5b3VyIGNvbnRleHRzIGFuZCAKICAgICAgICAgIHByb3ZpZGVzIHRvb2xzIHRvIHZpc3VhbGl6ZSBhbmQgZWRpdCB0aGVtLjwvbGk+CiAgICAgICAgPGxpPkl0IHByb3ZpZGVzIGRldmVsb3BlcnMgd2l0aCB0aGUgYWJpbGl0eSB0byBkZWZpbmUgYW5kJm5ic3A7aW1wbGVtZW50IAogICAgICAgICAgYWxtb3N0IGFueSBraW5kIG9mIGNvbnRleHQgdGhyb3VnaCBwbHVnLWlucy48L2xpPgogICAgICAgIDxsaT5Db250ZXh0IHBsdWctaW5zIHRvIHRoZSBmcmFtZXdvcmsgY29udHJvbCBkaXNjbG9zdXJlIGFjY29yZGluZyB0byAKICAgICAgICAgIHRoZSBzb2NpYWwgcHJvdG9jb2wgKJN3aG8gY2FuIHNlZSB3aGF0IGFib3V0IHdob22UIHJ1bGVzKSBvZiB0aGUgY29udGV4dC4gCiAgICAgICAgPC9saT4KICAgICAgICA8bGk+Q29udGV4dCBwbHVnLWlucyBjYW4gYWxzbyBwcm92aWRlIGludGVncmF0aW9uIHdpdGggZXh0ZXJuYWwgc3lzdGVtcywgCiAgICAgICAgICBlbnRlcnByaXNlIGFwcGxpY2F0aW9ucywgY29sbGFib3JhdGlvbiBzeXN0ZW1zLCBzaGFyZWQgc3BhY2VzLCBjb21tdW5pY2F0aW9ucyAKICAgICAgICAgIHN5c3RlbXMsIGV0Yy48L2xpPgogICAgICA8L3VsPgogICAgICA8cD5Ub3BvbG9naWVzIGFuZCBJZGVudGl0eSBNYW5hZ2VtZW50IFN0YW5kYXJkcyB3aXRoaW4gdGhlIHNjb3BlIG9mIHRoZSAKICAgICAgICBwcm9qZWN0IGluY2x1ZGU6PC9wPgogICAgICA8dWw+CiAgICAgICAgPGxpPkNsaWVudCB0byBjbGllbnQgUDJQIGludGVyYWN0aW9ucy4gVG8gc3VwcG9ydCBjb250ZXh0LWJhc2VkIHRydXN0ZWQgCiAgICAgICAgICBwZXJzb25hbCBpbnRlcmFjdGlvbnM8L2xpPgogICAgICAgIDxsaT5DbGllbnQgdG8gc2VydmVyIGludGVyYWN0aW9ucy4gTWFueSBvZiB0aGUgcG90ZW50aWFsIHVzZSBjYXNlcyBmb3IgCiAgICAgICAgICBFVEYgaW52b2x2ZSBtdWx0aXBsZSBwbHVnLWlucyBpbnRlcmZhY2luZyB3aXRoIHNlcnZlci1iYXNlZCBzeXN0ZW1zLjwvbGk+CiAgICAgIDwvdWw+CiAgICAgIDxwPkluIG9yZGVyIHRvIGVmZmljaWVudGx5IG1hbmFnZSB0aGVzZSBpbnRlcmFjdGlvbnMgdGhlIGF1dGhlbnRpY2F0aW9uIAogICAgICAgIGFuZCBjb250ZXh0IGFjY2VzcyBjb250cm9sIHBvcnRpb24gb2YgdGhlIGZyYW1ld29yayB3aWxsIHN1cHBvcnQgZXhpc3RpbmcgCiAgICAgICAgc2VjdXJpdHkvdHJ1c3QgaW5mcmFzdHJ1Y3R1cmUgc3RhbmRhcmRzLqAgQXBwbGljYXRpb25zIHdpbGwgYXBwbHkgdmFyeWluZyAKICAgICAgICBkZWdyZWVzIG9mIHNlY3VyaXR5IGRlcGVuZGluZyBvbiB0aGUgY29udGV4dCB2aWEgZXh0ZXJuYWwgaWRlbnRpdHkgcHJvdmlkZXIvbWFuYWdlbWVudCAKICAgICAgICBzeXN0ZW0gcGx1Zy1pbnMuIFRoZSBFVEYgdGVhbSBpcyBjdXJyZW50bHkgZXZhbHVhdGluZyBzdXBwb3J0aW5nIHRoZSBMaWJlcnR5IAogICAgICAgIEFsbGlhbmNlIGFuZCBXU18qIHN0YW5kYXJkcyBhbmQgdXNlciBmb2N1c2VkIHN0YW5kYXJkcyBzdWNoIGFzIElkZW50aXR5Q29tbW9ucyAKICAgICAgICBhbmQgU3hpcCwgYnV0IHdlIGFsc28gYmVsaWV2ZSB0aGF0IGVudGVycHJpc2Ugc3RhbmRhcmRzIHdpbGwgYmUgYXQgbGVhc3QgCiAgICAgICAgYXMgaW1wb3J0YW50IHRvIHRoZSBjb21tdW5pdHkuoCA8L3A+CiAgICAgIDxwPk9uIHRvcCBvZiB0aGlzIGZyYW1ld29yayB3ZSBhcmUgYWxzbyBkZXZlbG9waW5nIGEgYmFzZSBhcHAuIFRoZSBiYXNlIAogICAgICAgIGFwcCBpcyBhIHNpbXBsZSwgaWxsdXN0cmF0aXZlIGlkZW50aXR5IG1hbmFnZW1lbnQgJmFtcDsgc29jaWFsIG5ldHdvcmtpbmcgCiAgICAgICAgYXBwIHRoYXQgaXM6PC9wPgogICAgICA8dWw+CiAgICAgICAgPGxpPkltcGxlbWVudGVkIGFzIGFuIFJDUCBhcHBsaWNhdGlvbiBhbmQgYSBzZXQgb2YgcGx1Zy1pbnMgdG8gdGhlIGZyYW1ld29yazwvbGk+CiAgICAgICAgPGxpPkluY2x1ZGVzIGEgVUkgZm9yIHZpZXdpbmcgYW5kIGVkaXRpbmcgeW91ciBkaWdpdGFsIGlkZW50aXRpZXMgKHByb2ZpbGVzIAogICAgICAgICAgb3IgY29udGV4dHMpPC9saT4KICAgICAgICA8bGk+SW5jbHVkZXMgYSBiYXNpYyByYXRpbmcvcmVwdXRhdGlvbiBVSTwvbGk+CiAgICAgICAgPGxpPkluY2x1ZGVzIGEgk0J1ZGR5IExpc3SUIHBsdWctaW4gdGhhdCBhbGxvd3MgeW91IHRvIHN5bmNocm9uaXplIHlvdXIgCiAgICAgICAgICBwcm9maWxlIHdpdGggb3RoZXJzPC9saT4KICAgICAgICA8bGk+U2NhbnMgZW1haWwgYW5kIGNvbnN0cnVjdHMgYSBncmFwaCBvZiByZWxhdGlvbnNoaXBzIHdpdGggcmVsYXRpb25zaGlwIAogICAgICAgICAgbWV0cmljcyBzdWNoIGFzIGNvbm5lY3RlZG5lc3MsIHJlY2lwcm9jaXR5LCBldGMuoCA8L2xpPgogICAgICAgIDxsaT5Qcm92aWRlcyBzb2NpYWwgbmV0d29yayB2aXN1YWxpemF0aW9uOyBhYmlsaXR5IHRvIG92ZXJsYXkgc2V2ZXJhbCAKICAgICAgICAgIG5ldHdvcmtzIHRvIGRldGVybWluZSBjb21tb24gcmVsYXRpb25zaGlwcyBhbmQgY2hhcmFjdGVyaXN0aWNzPC9saT4KICAgICAgPC91bD4KICAgICAgPHA+VGhlIGFkZGl0aW9uIG9mIEVURiBjYXBhYmlsaXRpZXMgdG8gdGhlIEVjbGlwc2UgZWNvc3lzdGVtIHdpbGwgZnVydGhlciAKICAgICAgICB0aGUgZXZvbHV0aW9uIG9mIEVjbGlwc2UgZnJvbSBhIHRyYWRpdGlvbmFsIElERSB0byBhIHBsYXRmb3JtIHRoYXQgcHJvdmlkZXMgCiAgICAgICAgZnJhbWV3b3JrcywgdG9vbHMgYW5kIG1vZHVsZXMgdG8gc3VwcG9ydCBhbiBpbmNyZWFzaW5nIG51bWJlciBvZiBiYXNpYyAKICAgICAgICBmdW5jdGlvbnMgZGVjbGFyYXRpdmVseS48L3A+CiAgICA8L3RkPgogIDwvdHI+CjwvdGFibGU+Cjx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iNSIgd2lkdGg9IjEwMCUiPgogIDx0ciBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiMwMDgwQzAiPgogICAgPHRkIGNvbHNwYW49IjIiIGNsYXNzPSJzdHlsZTIiPjxmb250IGNvbG9yPSIjRkZGRkZGIiBmYWNlPSJBcmlhbCxIZWx2ZXRpY2EiPjxiPk9yZ2FuaXphdGlvbjwvYj48L2ZvbnQ+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCBjb2xzcGFuPSIyIj4KICAgICAgPHA+V2UgcHJvcG9zZSB0aGlzIHByb2plY3Qgc2hvdWxkIGJlIHVuZGVydGFrZW4gYXMgYSBUZWNobm9sb2d5IHByb2plY3QgCiAgICAgICAgcmF0aGVyIHRoYW4gYXMgcGFydCBvZiB0aGUgRWNsaXBzZSBQbGF0Zm9ybS4gQmVpbmcgYSBUZWNobm9sb2d5IHByb2plY3QgCiAgICAgICAgZ2l2ZXMgaXQgcm9vbSB0byBleHBlcmltZW50IHdpdGhvdXQgZGlzcnVwdGlvbiB0byBvdGhlciBFY2xpcHNlIFBsYXRmb3JtIAogICAgICAgIGRldmVsb3BtZW50IHdvcmsuPC9wPgo8cD5UaGUgbGlmZSBjeWNsZSBvZiB0aGlzIHByb2plY3QgbWF5IGJlIHNpbWlsYXIgdG8gdGhlIEVxdWlub3ggcHJvamVjdC6gIFRoYXQgCiAgaXMsIG9uY2UgdGhpcyB3b3JrIG1hdHVyZXMsIGl0IG1heSBiZSBpbmNvcnBvcmF0ZWQgaW50byB0aGUgRWNsaXBzZSBQbGF0Zm9ybSAKICB0byBwcm92aWRlIGEgY29tbW9uIG9wZW4gc291cmNlIHN1YnN0cmF0ZSB0aGF0IGluZHVzdHJpYWwvY29tbWVyY2lhbCB1c2VycyBjb3VsZCAKICB1c2UgdG8gYnVpbGQgc29sdXRpb25zLiBBbHRlcm5hdGl2ZWx5LCBpdCBtYXkgY29udGludWUgYXMgYSB0ZWNobm9sb2d5IHN1YnByb2plY3QuIAo8L3A+CiAgICAgIDxwPjxmb250IHNpemU9IjMiPjxiPlN1Z2dlc3RlZCBQcm9qZWN0IExlYWQgYW5kIENvbW1pdHRlcnM8L2I+PC9mb250PjwvcD4KICAgICAgPHA+VGhpcyBzZWN0aW9uIGNhcHR1cmVzIHRoZSBsaXN0IG9mIG9yZ2FuaXphdGlvbnMgdGhhdCBoYXZlIGV4cHJlc3NlZCBpbnRlcmVzdCAKICBpbiB0aGUgcHJvamVjdCBhbmQvb3IgaXRzIGNvbXBvbmVudHMsIGFuZCBhcyBzdWNoIHdpbGwgYmUgdXBkYXRlZCBwZXJpb2RpY2FsbHkgCiAgdG8gcmVmbGVjdCB0aGUgZ3Jvd2luZyBpbnRlcmVzdCBpbiB0aGlzIHByb2plY3QuPGJyPgogIDxicj4KICBSYXRoZXIgdGhhbiBjYW52YXMgdGhlIEVjbGlwc2UgY29tbXVuaXR5IGF0IGxhcmdlLCB0aGUgc3VibWl0dGVycyBvZiB0aGlzIHByb3Bvc2FsIAogIHdlbGNvbWUgaW50ZXJlc3RlZCBwYXJ0aWVzIHRvIHBvc3QgdG8gdGhlIDxhCmhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbmV3c3BvcnRhbC90aHJlYWQucGhwP2dyb3VwPWVjbGlwc2UudGVjaG5vbG9neS5ldGYiPmVjbGlwc2UudGVjaG5vbG9neS5ldGYgbmV3c2dyb3VwPC9hPiAKICBhbmQgYXNrIHRvIGJlIGFkZGVkIHRvIHRoZSBsaXN0IGFzIGludGVyZXN0ZWQgcGFydGllcyBvciB0byBzdWdnZXN0IGNoYW5nZXMgCiAgdG8gdGhpcyBkb2N1bWVudC48L3A+CiAgICAgIDxmb250IHNpemU9IjMiPjxiPkluaXRpYWwgU2V0IG9mIENvbW1pdHRlcnMgPC9iPjwvZm9udD4gCiAgICAgIDxwPlBhdWwgVHJldml0aGljayAKICAoUHJvamVjdCBMZWFkKTxicj4KICBTb2NpYWxQaHlzaWNzLm9yZzsgcGF1bCBhdCBTb2NpYWxQaHlzaWNzLm9yZzwvcD4KICAgICAgPHA+Sm9obiBCZWF0dHk8L3A+CiAgICAgIDxwPlNjb3R0IExld2lzIDxicj4KICAgICAgICBDb21wb3NlbnQsIEluYy48L3A+CiAgICAgIDxwPlBldGVyIE5laHJlciA8YnI+CiAgUzEgQ29ycG9yYXRpb248L3A+CiAgICAgIDxwPk1hcnkgUnVkZHk8YnI+CiAgU29jaWFsUGh5c2ljcy5vcmc7IG1hcnkgYXQgU29jaWFsUGh5c2ljcy5vcmc8L3A+CiAgICAgIDxwPlBhdWwgV2VpdHo8L3A+CiAgICAgIDwvdGQ+CiAgPC90cj4KPC90YWJsZT4KPHRhYmxlIHdpZHRoPSIxMDAlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjUiPgogIDx0cj4KICAgIDx0ZCB3aWR0aD0iMzM5IiB2YWxpZ249InRvcCI+PHN0cm9uZz48Zm9udCBzaXplPSIzIj5JbnRlcmVzdGVkIFBhcnRpZXM8L2ZvbnQ+PC9zdHJvbmc+PC90ZD4KICAgIDx0ZCB3aWR0aD0iNDgzIiB2YWxpZ249InRvcCI+Jm5ic3A7PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCB2YWxpZ249InRvcCIgd2lkdGg9IjMzOSI+PC90ZD4KICAgIDx0ZCB2YWxpZ249InRvcCIgd2lkdGg9IjQ4MyI+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCB2YWxpZ249InRvcCIgd2lkdGg9IjMzOSI+U29jaWFsUGh5c2ljcy5vcmegIDwvdGQ+CiAgICA8dGQgdmFsaWduPSJ0b3AiIHdpZHRoPSI0ODMiPjxhIGhyZWY9Imh0dHA6Ly93d3cuc29jaWFscGh5c2ljcy5vcmcvIj5odHRwOi8vd3d3LnNvY2lhbHBoeXNpY3Mub3JnPC9hPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgdmFsaWduPSJ0b3AiIHdpZHRoPSIzMzkiPklucHJpdmEmbmJzcDs8L3RkPgogICAgPHRkIHZhbGlnbj0idG9wIiB3aWR0aD0iNDgzIj4gPGEgaHJlZj0iaHR0cDovL3d3dy5pbnByaXZhLmNvbS8iPmh0dHA6Ly93d3cuaW5wcml2YS5jb20vPC9hPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgdmFsaWduPSJ0b3AiIHdpZHRoPSIzMzkiPkJlcmttYW4gQ2VudGVyIGZvciBJbnRlcm5ldCAmYW1wOyBTb2NpZXR5IGF0IAogICAgICBIYXJ2YXJkIExhdzwvdGQ+CiAgICA8dGQgdmFsaWduPSJ0b3AiIHdpZHRoPSI0ODMiPiA8YSBocmVmPSJodHRwOi8vY3liZXIubGF3LmhhcnZhcmQuZWR1L2hvbWUvIj5odHRwOi8vY3liZXIubGF3LmhhcnZhcmQuZWR1L2hvbWUvPC9hPjwvdGQ+CiAgPC90cj4KPC90YWJsZT4KPC9ib2R5Pgo8L2h0bWw+Cg==