PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IURPQ1RZUEUgYm9vayBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBWNC4xLjIvL0VOIgoJCSAgICAgICJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMS4yL2RvY2Jvb2t4LmR0ZCIgWwo8IUVOVElUWSBhcHAtZmRsIFNZU1RFTSAiZmRsLnhtbCI+Cl0+CjwhLS0gImZpbGU6L3Vzci9zaGFyZS9zZ21sL2RvY2Jvb2svZHRkL3htbC80LjEuMi9kb2Nib29reC5kdGQiIFsgLS0+Cgo8IS0tIFRoaXMgaXMgdGhlIGRldmVsb3BlcnMgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIHRlcm0gcHJvY2Vzc29yIEtpbXdpdHUrKyAtLT4KCjxib29rIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPgo8Ym9va2luZm8+CiAgPHRpdGxlPktpbXdpdHUrKyBkZXZlbG9wZXJzIHJlZmVyZW5jZTwvdGl0bGU+CiAgPGF1dGhvcj4KICAgIDxmaXJzdG5hbWU+TWljaGFlbDwvZmlyc3RuYW1lPgogICAgPHN1cm5hbWU+UGllZmVsPC9zdXJuYW1lPgogICAgPGFmZmlsaWF0aW9uPgogICAgICA8b3JnbmFtZT5IdW1ib2xkdC1Vbml2ZXJzaXR5IEJlcmxpbjwvb3JnbmFtZT4KICAgICAgPG9yZ2Rpdj5JbnN0aXR1dGUgZm9yIEluZm9ybWF0aWNzPC9vcmdkaXY+CiAgICA8L2FmZmlsaWF0aW9uPgogIDwvYXV0aG9yPgogIDxlZGl0aW9uPlRoaXMgZG9jdW1lbnQgaXMgJElkJC48L2VkaXRpb24+CjwvYm9va2luZm8+Cgo8dG9jLz4KCjwhLS0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gIFNtYXJ0IFBvaW50ZXJzIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0tPgo8Y2hhcHRlcj48dGl0bGU+U21hcnQgUG9pbnRlcnM8L3RpdGxlPgogIDxwYXJhPlNtYXJ0IHBvaW50ZXJzIHdlcmUgaW1wbGVtZW50ZWQgYnkgR2VyZCBLdXJ6YmFjaC4gVGhlaXIgdXNhZ2UgaXMgbm90CiAgICBzdHJhaWdodGZvcndhcmQsIGJlY2F1c2UgdGhhdCBpcyBtYWRlIGltcG9zc2libGUgYnkgYSBmZXcgY2hhbGxlbmdlcy48L3BhcmE+CiAgPHNlY3QxPjx0aXRsZT5Vc2FnZTwvdGl0bGU+CiAgICA8cWFuZGFzZXQ+CiAgICAgIDxxYW5kYWVudHJ5PgoJPHF1ZXN0aW9uPgoJICA8cGFyYT4KCSAgICBXaGF0IGFyZSB0aGUgcG9pbnRlciB0eXBlcyBjYWxsZWQ/CgkgIDwvcGFyYT4KCTwvcXVlc3Rpb24+Cgk8YW5zd2VyPgoJICA8cGFyYT4KCSAgICBGb3IgYSBwaHlsdW0gY2FsbGVkIDxyZXBsYWNlYWJsZT5waHlsdW08L3JlcGxhY2VhYmxlPiB0aGVyZSdsbCBiZSB0aGUgZm9sbG93aW5nCgkgICAgcG9pbnRlciB0eXBlczo8aXRlbWl6ZWRsaXN0PgoJICAgICAgPGxpc3RpdGVtPjxwYXJhPjxyZXBsYWNlYWJsZT5waHlsdW08L3JlcGxhY2VhYmxlPiwgYSBzaW1wbGUgQwoJCSAgcG9pbnRlciw8L3BhcmE+PC9saXN0aXRlbT4KCSAgICAgIDxsaXN0aXRlbT48cGFyYT5jXzxyZXBsYWNlYWJsZT5waHlsdW08L3JlcGxhY2VhYmxlPiwgYSBzaW1wbGUgY29uc3RhbnQgQwoJCSAgcG9pbnRlciw8L3BhcmE+PC9saXN0aXRlbT4KCSAgICAgIDxsaXN0aXRlbT48cGFyYT48cmVwbGFjZWFibGU+cGh5bHVtPC9yZXBsYWNlYWJsZT5fcHRyLCB0aGUgbm9ybWFsIHNtYXJ0CgkJICBwb2ludGVyLDwvcGFyYT48L2xpc3RpdGVtPgoJICAgICAgPGxpc3RpdGVtPjxwYXJhPndlYWtfPHJlcGxhY2VhYmxlPnBoeWx1bTwvcmVwbGFjZWFibGU+X3B0ciwgdGhlIHdlYWsgc21hcnQKCQkgIHBvaW50ZXIgKGRvZXMgaW5jcmVtZW50IHJlZmVyZW5jZSBjb3VudCksPC9wYXJhPjwvbGlzdGl0ZW0+CgkgICAgPC9pdGVtaXplZGxpc3Q+CgkgIDwvcGFyYT4KCTwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAgICA8L3FhbmRhc2V0PgogIDwvc2VjdDE+CiAgPHNlY3QxPjx0aXRsZT5JbXBsZW1lbnRhdGlvbjwvdGl0bGU+CiAgICA8cGFyYT5UT0RPPC9wYXJhPgogIDwvc2VjdDE+CjwvY2hhcHRlcj4KCjwhLS0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAgS2ltd2l0dSsrIFNvdXJjZSBNYW5hZ2VtZW50IC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0tPgo8Y2hhcHRlcj48dGl0bGU+S2ltd2l0dSsrIFNvdXJjZSBNYW5hZ2VtZW50PC90aXRsZT4KICA8c2VjdDE+PHRpdGxlPkZvcm1hdHRpbmcgdGhlIEtpbXdpdHUrKyBzb3VyY2UgY29kZTwvdGl0bGU+CiAgICA8c2VjdDI+PHRpdGxlPlRoZSBpbnB1dCAoPGFiYnJldj5pZS48L2FiYnJldj4gS2ltd2l0dSsrIHRleHQpPC90aXRsZT4KICAgICAgPHBhcmE+VGFicyBoYXZlIGEgd2lkdGggb2YgOCwgaW4gd29yZHMgZWlnaHQsIHdoaWNoIG1lYW5zIHRoZXkgYXJlIGV4YWN0bHkgOCBjaGFyYWN0ZXJzCgl3aWRlLCBub3QgdHdvICgyKSwgbm90IDQgKGZvdXIpLCBidXQgMjxzdXBlcnNjcmlwdD4zPC9zdXBlcnNjcmlwdD4gY2hhcmFjdGVycy48L3BhcmE+CiAgICAgIDxwYXJhPlRoZSBpbmRlbnRhdGlvbiBob3dldmVyIHNob3VsZCBiZSBmb3VyIGNoYXJhY3RlcnMsIDxhYmJyZXY+aWUuPC9hYmJyZXY+CgkyPHN1cGVyc2NyaXB0PjI8L3N1cGVyc2NyaXB0Pi48L3BhcmE+CiAgICAgIDxwYXJhPklmIHlvdSBkb24ndCB3YW50IHRvIHVzZSB0YWJzLCBidXQgZXhwYW5kIHRoZW0gdG8gc3BhY2VzLCBmaW5lLiBIb3dldmVyLCByZWNhbGwgaXQncwoJc2hvcnRlci4gSW4gYSBwcm9wZXIgZWRpdG9yLCBpdCBzaG91bGQgYmUgZWFzeSB0byBnZXQgdGhlIGRlc2lyZWQgYmVoYXZpb3VyLAoJPGFiYnJldj5lZy48L2FiYnJldj4gaW4gVmltIHlvdSBjYW4gc2V0IDx1c2VyaW5wdXQ+c2V0IHRhYnN0b3A9OCBzb2Z0dGFic3RvcD00CgkgIHNoaWZ0d2lkdGg9NDwvdXNlcmlucHV0Pi48L3BhcmE+CiAgICA8L3NlY3QyPgogICAgPHNlY3QyPjx0aXRsZT5UaGUgb3V0cHV0ICg8YWJicmV2PmllLjwvYWJicmV2PiBnZW5lcmF0ZWQgdGV4dCk8L3RpdGxlPgogICAgICA8cGFyYT5JbiBnZW5lcmFsIGNhcmUgc2hvdWxkIGJlIHRha2VuIHRvIG1ha2UgdGhlIGdlbmVyYXRlZCBzb3VyY2UgY29kZSBodW1hbiByZWFkYWJsZS4KCUl0IHNob3VsZCBhbHdheXMgbG9vayBhY2NvcmRpbmcgdG8gdGhlIGd1aWRlbGluZXMgYWJvdmUuPC9wYXJhPgogICAgICA8cGFyYT5LaW13aXR1KysgZmVhdHVyZXMgYSBzbWFydCBwcmludGVyLiBUaGlzIG1lYW5zIHlvdSBkb24ndCBoYXZlIHRvIHdvcnJ5IGFib3V0CglzcGFjZXMsIHRhYnMgYW5kIGFsaWdubWVudCwgdGhlIHByaW50ZXIgd2lsbCBkbyBpdCBhdXRvbWF0aWNhbGx5LiBJdCB3aWxsIGV2ZW4gaWdub3JlCgl5b3VyIHNwYWNlcyBhbmQgdGFicywgc28gZG9uJ3QgYm90aGVyIGV4Y2VwdCBmb3IgbWFraW5nIHRoZSBpbnB1dCBtb3JlIHJlYWRhYmxlLgoJT2NjYXNpb25hbGx5IHRoZSBwcmludGVyIHdpbGwgZmFpbCAoaXQncyBzaW1wbGUsIGFuZCBub3QgYSBjb21wbGV0ZSBwYXJzZXIgbGlrZQoJZW50aXR5KSwgc28geW91IGhhdmUgdG8gdXNlIHRoZSBmb2xsb3dpbmcgaGludHMgaW4gdGhlIG91dHB1dCBzdHJpbmdzOgoJPHZhcmlhYmxlbGlzdD4KCSAgPHZhcmxpc3RlbnRyeT48dGVybT48dXNlcmlucHV0PlxiPC91c2VyaW5wdXQ+PC90ZXJtPgoJICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgcHJpbnRlciBsaWtlcyB0byBlbGlkZSBzdXBlcmZsdW91cyBzcGFjZXMuIFNvbWV0aW1lcyBzcGFjZXMKCQlhcmUgaW1wb3J0YW50IChtb3N0IG5vdGFibHkgdG8gYXZvaWQgbmVzdGVkIHRlbXBsYXRlIHNwZWNpZmljYXRpb25zIHdpdGgKCQk8dXNlcmlucHV0PiZndDsgJmd0OzwvdXNlcmlucHV0PiBiZWluZyBpbnRlcnByZXRlZCBhcyB0aGUKCQk8dXNlcmlucHV0PiZndDsmZ3Q7PC91c2VyaW5wdXQ+IG9wZXJhdG9yLiBUaGUgc3BhY2UgZm9sbG93aW5nCgkJPHVzZXJpbnB1dD5cYjwvdXNlcmlucHV0PiB3aWxsIDxlbXBoYXNpcz5ub3Q8L2VtcGhhc2lzPiBiZSBpZ25vcmVkLgoJICAgIDwvcGFyYT48L2xpc3RpdGVtPgoJICA8L3Zhcmxpc3RlbnRyeT4KCSAgPHZhcmxpc3RlbnRyeT48dGVybT48dXNlcmlucHV0Plx2PC91c2VyaW5wdXQ+PC90ZXJtPgoJICAgIDxsaXN0aXRlbT48cGFyYT5UaGlzIGNhdXNlcyB0aGUgZm9sbG93aW5nIHRleHQgdG8gYmUgaW5kZW50ZWQgb25lIGFkZGl0aW9uYWwgbGV2ZWwuCgkJTW5lbW9uaWMgZm9yIDx3b3JkYXN3b3JkIGxhbmc9ImRlIj52b3J35HJ0czwvd29yZGFzd29yZD4sIHdoaWNoIGlzIEdlcm1hbiBmb3IKCQk8d29yZGFzd29yZD5mb3J3YXJkPC93b3JkYXN3b3JkPi4KCSAgICA8L3BhcmE+PC9saXN0aXRlbT4KCSAgPC92YXJsaXN0ZW50cnk+CgkgIDx2YXJsaXN0ZW50cnk+PHRlcm0+PHVzZXJpbnB1dD5ccjwvdXNlcmlucHV0PjwvdGVybT4KCSAgICA8bGlzdGl0ZW0+PHBhcmE+VGhpcyBjYXVzZXMgdGhlIGZvbGxvd2luZyB0ZXh0IHRvIG9uZSBsZXZlbCBvZiBpbmRlbnRpbmcgbGVzcy4KCQlNbmVtb25pYyBmb3IgPHdvcmRhc3dvcmQgbGFuZz0iZGUiPnL8Y2t35HJ0czwvd29yZGFzd29yZD4sIHdoaWNoIGlzIEdlcm1hbiBmb3IKCQk8d29yZGFzd29yZD5iYWNrd2FyZDwvd29yZGFzd29yZD4uCgkgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CgkgIDwvdmFybGlzdGVudHJ5PgoJPC92YXJpYWJsZWxpc3Q+CiAgICAgIDwvcGFyYT4KICAgIDwvc2VjdDI+CiAgPC9zZWN0MT4KICA8c2VjdDE+PHRpdGxlPkNWUzwvdGl0bGU+CiAgICA8cGFyYT5BbGwgY2hhbmdlcyB3aGljaCBoYXZlIGFuIGluZmx1ZW5jZSBvbiB0aGUgdXNlciBzaG91bGQgYmUgbWFya2VkIHdpdGggYQogICAgICA8bGl0ZXJhbD5VU0VSOjwvbGl0ZXJhbD4gcHJlZml4IGluIHRoZSBDU1YgY2hhbmdlIGxvZyBtZXNzYWdlLiBUaGlzIGFsbG93cyB0byBjb2xsZWN0CiAgICAgIGFsbCB1c2VyIHZpc2libGUgY2hhbmdlcyBpbiB0aGUgPGZpbGVuYW1lPkNIQU5HRUxPRzwvZmlsZW5hbWU+IGZpbGUgb24gcmVsZWFzZS48L3BhcmE+CiAgPC9zZWN0MT4KPC9jaGFwdGVyPgoKPCEtLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtICBVbmlxIFBoeWxhIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0tPgo8Y2hhcHRlcj48dGl0bGU+VW5pcSBQaHlsYTwvdGl0bGU+CiAgPHNlY3QxPjx0aXRsZT5IYXNoIFNldHM8L3RpdGxlPgogICAgPHFhbmRhc2V0PgogICAgICA8cWFuZGFlbnRyeT48cXVlc3Rpb24+CgkgIDxwYXJhPldoeSBhcmUgaGFzaCBzZXRzIHVzZWQ/PC9wYXJhPgoJICA8L3F1ZXN0aW9uPjxhbnN3ZXI+CgkgIDxwYXJhPlBlcmZvcm1hbmNlLiBSZWQtQmxhY2sgdHJlZXMgYXJlIGtub3duIHRvIGJlIGFsd2F5cyBnb29kLCBoYXNoIHRhYmxlcyBjYW4gaGF2ZQoJICAgIHBvb3IgcGVyZm9ybWFuY2UuIEJ1dCB1c3VhbGx5IHRoZXkgYXJlIGZhc3QuIEFzIHZlcnkgbWFueSBjYXNlc3RyaW5ncyBhcmUgY3JlYXRlZAoJICAgIGluIGNvbW1vbiBwcm9ncmFtcywgd2Ugb3B0aW1pemUgZm9yIHRoaXMuPC9wYXJhPgogICAgICA8L2Fuc3dlcj48L3FhbmRhZW50cnk+CiAgICAgIDxxYW5kYWVudHJ5PjxxdWVzdGlvbj4KCSAgPHBhcmE+V2h5IGFub3RoZXIgbGV2ZWwgb2YgaW5kaXJlY3Rpb24/PC9wYXJhPgoJICA8L3F1ZXN0aW9uPjxhbnN3ZXI+CgkgIDxwYXJhPlBlcmZvcm1hbmNlIChjb21wdXRlIGhhc2ggb25seSBvbmNlKS48L3BhcmE+CiAgICAgIDwvYW5zd2VyPjwvcWFuZGFlbnRyeT4KICAgICAgPHFhbmRhZW50cnk+PHF1ZXN0aW9uPgoJICA8cGFyYT5XaGF0IGFyZSB0aGUgcHJlcHJvY2Vzc29yIGRlY2lzaW9ucyBmb3I/PC9wYXJhPgoJICA8L3F1ZXN0aW9uPjxhbnN3ZXI+CgkgIDxwYXJhPkhhc2ggc2V0cyBhcmUgbm90IHN0YW5kYXJkaXplZCB5ZXQuPC9wYXJhPgoJICA8cGFyYT5UaGVyZSBhcmUgZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucy4gVGhlIHRocmVlIGNvbXBpbGVycyBJIGxvb2tlZCBhdCAoZ2NjIGFuZAoJICAgIEludGVsJ3MgY29tcGlsZXIpIHVzZSB0aHJlZSBkaWZmZXJlbnQgd2F5cyB0byBpbXBsZW1lbnQgaXQuIChUaGUgdHdvIGdjY3Mgb25seQoJICAgIGRpZmZlciBpbiB0aGUgbG9jYXRpb24gb2YgdGhlIGhlYWRlciBmaWxlLik8L3BhcmE+CgkgIDxwYXJhPlRoZSBHTlUgY29tcGlsZXIgZXhwZWN0cyB0d28gZnVuY3RvcnM6IE9uZSBkb2luZyBhIGhhc2gsIG9uZSBkb2luZyBhIHRlc3QgZm9yCgkgICAgZXF1YWxpdHkuIFByZWRlZmluZWQgdGVzdHMgYXJlIG5vdCBzdWl0YWJsZSwgb2YgY291cnNlLjwvcGFyYT4KCSAgPHBhcmE+VGhlIEludGVsIGNvbXBpbGVyIGV4cGVjdHMgYSBzaW5nbGUgZnVuY3RvciBib3RoIHVuYXJ5IGFuZCBiaW5hcnk6IEEgdW5hcnkKCSAgICBmdW5jdGlvbiBkb2luZyBhIGhhc2gsIGEgYmluYXJ5IGZ1bmN0aW9uIGRvaW5nIGEgdGVzdCBmb3IgbGVzc25lc3MuIFByZWRlZmluZWQKCSAgICB0ZXN0cyBhcmUgbm90IHN1aXRhYmxlLCBvZiBjb3Vyc2UuPC9wYXJhPgoJICA8cGFyYT5UaGVyZSBpcyBubyBrbm93aW5nIGhvdyBvdGhlciBjb21waWxlcnMgbWlnaHQgaW1wbGVtZW50IHRoaXMuIElmIGEga25vd24KCSAgICBjb21waWxlciBpcyB1c2VkLCBoYXNoIHNldHMgYXJlIGVtcGxveWVkIGJ5IGRlZmF1bHQsIGJ1dCBjYW4gYmUgZGVhY3RpdmF0ZWQgYnkKCSAgICBkZWZpbmluZyBET05UX1VTRV9IQVNIU0VULiBJZiBhbiB1bmtub3duIGNvbXBpbGVyIGlzIHVzZWQsIGhhc2ggc2V0cyBhcmUgbm90CgkgICAgZW1wbG95ZWQgYnkgZGVmYXVsdCwgYnV0IGNhbiBiZSBhY3RpdmF0ZWQgYnkgZGVmaW5pbmcgVVNFX0hBU0hTRVQgKGJ1dCB0aGVuIGtlZXAKCSAgICBmaW5nZXJzIGNyb3NzZWQgd2UgZ3Vlc3MgdGhlIHJpZ2h0IHdheSB0byB1c2UgdGhlbSkuPC9wYXJhPgogICAgICA8L2Fuc3dlcj48L3FhbmRhZW50cnk+CiAgICA8L3FhbmRhc2V0PgogIDwvc2VjdDE+CjwvY2hhcHRlcj4KCjwhLS0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAgUGF0dGVybnMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLS0+CjxjaGFwdGVyPjx0aXRsZT5QYXR0ZXJuczwvdGl0bGU+CiAgPHNlY3QxPjx0aXRsZT5BbGxvd2VkIHBhdHRlcm5zPC90aXRsZT4KICAgIDxwYXJhPlBhdHRlcm5zIG92ZXIgcGh5bGEgYXJlIG5vdCBhbGxvd2VkLiBQYXR0ZXJucyBvdmVyIHByZWRlZmluZWQgb3BlcmF0b3JzIChlLiBnLiBfU3RyKQogICAgICBhcmUgbm90IGFsbG93ZWQuPC9wYXJhPgogICAgPHNlY3QyPjx0aXRsZT5QYXR0ZXJucyBvdmVyIHByZWRlZmluZWQgb3BlcmF0b3JzPC90aXRsZT4KICAgICAgPHBhcmE+SXQgaXMgbm90IGRlc2lyYWJsZSB0byBkZWZpbmUgbmV3IHVucGFyc2UgYW5kIHJld3JpdGUgcnVsZXMgZm9yIHRoZSBwcmVkZWZpbmVkIHBoeWxhLgoJUHJlZGVmaW5lZCBwaHlsYSBhcmUgcHJpbWl0aXZlLCByZXdyaXRpbmcgc2hvdWxkIG5vdCBuZWVkIHRvIGNoYW5nZSB0aGVtLgoJRGlmZmVyZW50IHVucGFyc2UgYmVoYXZpb3VyIGNhbiBlYXNpbHkgYmUgaW1wbGVtZW50ZWQgaW4gdGhlIHVucGFyc2UgZnVuY3Rpb24sIHNob3VsZAoJaXQgcmVhbGx5IGJlIG5lZWRlZC48L3BhcmE+CiAgICAgIDxwYXJhPkEgcGF0dGVybiBvdmVyIGEgcHJlZGVmaW5lZCBvcGVyYXRvciBtaWdodCBiZSB1c2VmdWwgaW4gYSB3aXRoLXN0YXRlbWVudC4KCUhvd2V2ZXIsIHRoaXMgaXMgbm90IG5lY2Vzc2FyeSBvciBwb3NzaWJsZTogQWxsIG9wZXJhdG9ycyBpbiBhIHdpdGgtc3RhdGVtZW50IG11c3QKCWJlIG9mIHRoZSBzYW1lIHBoeWx1bSwgYXMgcGF0dGVybnMgb3ZlciBwaHlsYSBhcmUgKG5vdCB5ZXQpIGFsbG93ZWQuPC9wYXJhPgogICAgICA8cGFyYT5QcmltaXRpdmUgcGh5bGEgb25seSBoYXZlIG9uZSBvcGVyYXRvciwgc28gYSB3aXRoLXN0YXRlbWVudCB3b3VsZCBoYXZlIG9ubHkgb25lCglhbHRlcm5hdGl2ZSBhbmQgaXMgc3VwZXJmbHVvdXMuPC9wYXJhPgogICAgPC9zZWN0Mj4KICAgIDxzZWN0Mj48dGl0bGU+UGF0dGVybnMgb3ZlciBwaHlsYTwvdGl0bGU+CiAgICAgIDxwYXJhPlBhdHRlcm5zIG92ZXIgcGh5bGEgYXJlIG5vdCBhbGxvd2VkLiBUaGlzIHNob3VsZCBiZSBjaGFuZ2VkLCBjb25zaWRlcmluZyB0aGUKCWZvbGxvd2luZy48L3BhcmE+CiAgICAgIDxwYXJhPkluIGEgcGF0dGVybiBvdmVyIGEgcGh5bHVtLCB0aGVyZSBjYW5ub3QgYmUgYW55IHJlZmVyZW5jZXMgdG8gc3VicGh5bGEuCglUaGVyZWZvcmUsIHRoZXkgYXJlIGEgYml0IGxpbWl0ZWQuIE9uZSBwb3NzaWJsZSBleGNlcHRpb24gY291bGQgYmUgbGlzdHMgYW5kCglhYnN0cmFjdF9saXN0LCBhcyB0aGV5IGFsd2F5cyBoYXZlIHR3byBjaGlsZHJlbi48L3BhcmE+CiAgICAgIDxwYXJhPlBhdHRlcm5zIG92ZXIgcGh5bGEgYXJlIHVzZWxlc3MgaW4gd2l0aC1zdGF0ZW1lbnRzLiBUaGV5IGNhbiBlcXVhbGx5IHdlbGwgYmUKCWltcGxlbWVudGVkIHdpdGggYSBzd2l0Y2gtc3RhdGVtZW50IG92ZXIgcHJvZF9zZWwoKS48L3BhcmE+CiAgICA8L3NlY3QyPgogIDwvc2VjdDE+CiAgPHNlY3QxPjx0aXRsZT5QYXR0ZXJuIHNvcnRpbmc8L3RpdGxlPgogICAgPHBhcmE+VGhlIHNvcnRpbmcgb2YgcGF0dGVybnMgaXMgYSBkaWZmaWN1bHQgYXJlYS4gVGhlcmUgYXJlIHNvbWUgb2J2aW91cyBjYXNlcywgYW5kCiAgICAgIHNvbWUgd2hpY2ggYXJlIG1vcmUgdHdpc3RlZC48L3BhcmE+CiAgICA8cGFyYT5JZiwgYXQgYSBjZXJ0YWluIHBvaW50LCB0d28gcGF0dGVybnMgbWF5IG1hdGNoIHRoZSBjdXJyZW50IHBoeWx1bSwgd2hpY2ggb25lIHdpbGwKICAgICAgYmUgY2hvc2VuPyBMZXQgdXMgY29uc2lkZXIgdGhlIGZvbGxvd2luZyBjYXNlczo8L3BhcmE+CiAgICA8aXRlbWl6ZWRsaXN0PgogICAgICA8bGlzdGl0ZW0+PHBhcmE+QSBwYXR0ZXJuIHRoYXQgaXMgdHJ1bHkgbW9yZSBzcGVjaWZpYyB0aGFuIGFub3RoZXIsIGkuIGUuIGFsbAoJICB0ZXJtcyB0aGF0IG1hdGNoIGl0IHdvdWxkIGFsc28gbWF0Y2ggdGhlIG90aGVyLCBidXQgbm90IHZpY2UgdmVyc2EsIHNob3VsZCBiZQoJICB0ZXN0ZWQgZm9yIGJlZm9yZSB0aGUgb3RoZXIuPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgIDxsaXN0aXRlbT48cGFyYT5Gb3IgdHdvIHBhdHRlcm5zIHRoYXQgYXJlIGRpc2p1bmN0LCBpLiBlLiB0aGVyZSBjYW5ub3QgZXhpc3QgYW55CgkgIHRlcm1zIHRoYXQgbWF0Y2ggYm90aCwgb3JkZXJpbmcgZG9lcyBub3QgbWF0dGVyLjwvcGFyYT48L2xpc3RpdGVtPgogICAgICA8bGlzdGl0ZW0+PHBhcmE+VHdvIHBhdHRlcm5zIHdoaWNoIGNvdmVyIHRoZSBzYW1lIHRlcm1zIHNob3VsZCBiZSBjb25zaWRlcmVkIGFuCgkgIGVycm9yLiBPdGhlcndpc2Ugb25lIHdvdWxkIGFsd2F5cyBiZSBwcmVmZXJyZWQgb3ZlciB0aGUgb3RoZXIsIHByb2JhYmx5IG5vdAoJICB3aGF0IHRoZSB1c2VyIGludGVuZGVkLiBUaGlzIGlzIG5vdCBzbyB3aGVuIHRoZXJlIGlzIGEgZ3VhcmQgY29uZGl0aW9uIG9uIHRoZQoJICBwYXR0ZXJuICg8dXNlcmlucHV0PnByb3ZpZGVkPC91c2VyaW5wdXQ+KTsgaXQgaXMgZGlmZmljdWx0IHRvIGRlY2lkZSBmb3IgdXMgd2hhdAoJICB0aGUgc2VtYW50aWNzIG9mIHRoZXNlIGFyZSAoZXhjZXB0IHdoZW4gdGhlcmUgYXJlIHR3byBpZGVudGljYWwgY29uZGl0aW9ucywKCSAgdmVyYmF0aW0pLjwvcGFyYT48L2xpc3RpdGVtPgogICAgICA8bGlzdGl0ZW0+PHBhcmE+Rm9yIG92ZXJsYXBwaW5nIHBhdHRlcm5zLCB0aGUgc2l0dWF0aW9uIGlzIGNvbXBsZXguIFRoZXJlIG11c3QKCSAgZXhpc3QgYSBwYXR0ZXJuIChvciBtdWx0aXBsZSBwYXR0ZXJucykgdGhhdCBjb3ZlcnMgZXhhY3RseSB0aGUgaW50ZXJzZWN0aW9uLgoJICBJbiBnZW5lcmFsLCBmb3IgZWFjaCB0ZXJtLCB0aGVyZSBtdXN0IGFsd2F5cyBiZSBhIG1vc3Qgc3BlY2lmaWMKCSAgcGF0dGVybi48L3BhcmE+Cgk8cGFyYT5UaGlzIGNvbmRpdGlvbiBpcyBkaWZmaWN1bHQgdG8gaW1wbGVtZW50LCBhbmQgaXQgaXMgaG9wZWQgdG8gYmUgcmFyZS4gV2UKCSAgbWlnaHQgZm9jdXMgb24gZWFzeSBzcGVjaWFsIGNhc2VzIChhcyA8ZW1waGFzaXM+b25lPC9lbXBoYXNpcz4gcGF0dGVybgoJICBjb3ZlcmluZyB0aGUgaW50ZXJzZWN0aW9uIG9mIDxlbXBoYXNpcz50d288L2VtcGhhc2lzPiBvdGhlcnMpIGFuZCBnaXZlCgkgIHdhcm5pbmdzIHdoZW5ldmVyIHdlIGFyZSBub3Qgc3VyZS48L3BhcmE+PC9saXN0aXRlbT4KICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgPHBhcmE+SW4gYWxsIG90aGVyIGNhc2VzLCB0aGUgcGF0dGVybnMgaGF2ZSB0byBiZSBzb3J0ZWQsIGFuZCBhIHdhcm5pbmcgbWlnaHQgYmUgaXNzdWVkCiAgICAgIHRvIHRoZSB1c2VyIGlmIHRoYXQgb3JkZXJpbmcgaXMgbm90IG9idmlvdXMuIEN1cnJlbnRseSwgcGF0dGVybiBzb3J0aW5nIGluIEtpbXdpdHUgaXMKICAgICAgdGhyb3VnaCBhbiBhbGdvcml0aG0gdGhhdCBpcyB1bmludHVpdGl2ZS4gSXQgZnJlcXVlbnRseSBsZWFkcyB0byBhbiB1bmV4cGVjdGVkIG9yZGVyLgogICAgICBBIHBhdHRlcm4gaXMgY29uc2lkZXJlZCBtb3JlIHNwZWNpZmljIGlmIGl0IGlzIG1vcmUgc3BlY2lmaWMgZnVydGhlciB0byB0aGUgbGVmdDsgd2hlbgogICAgICBpbiBkb3VidCwgdGhlIG9yZGVyIG9mIGFwcGVhcmFuY2UgaW4gdGhlIGlucHV0IGlzIHRha2VuLjwvcGFyYT4KICAgIDxwYXJhPlRvIHRoaXMgZW5kLCBHZXJkIHByb3Bvc2VkIHR3byBkaWZmZXJlbnQgYWxnb3JpdGhtcywgYm90aCBpbnR1aXRpdmUgYnV0IGFscmVhZHkKICAgICAgZmFpcmx5IGNvbXBsZXgsIHdoaWNoIGJvdGggcmVzdWx0ZWQgaW4gZGlmZmVyZW50IG9yZGVyaW5ncy4gSSBiZWxpZXZlIHRoaXMgcHJvYmxlbQogICAgICBjYW5ub3QgYmUgc29sdmVkLjwvcGFyYT4KICAgIDxwYXJhPlVuZm9ydHVuYXRlbHksIGZvciBzb21lIHByb2plY3RzLCBLaW13aXR1KysgaXNzdWVzIG1hbnkgd2FybmluZ3MsIHdoZW4gb3JkZXIKICAgICAgZG9lc24ndCBtYXR0ZXIgb3IgaXMgaW5kZWVkIG9idmlvdXMuIEEgd2F5IHRvIHNpbGVuY2UgdGhpcyB3YXJuaW5ncyBzZWxlY3RpdmVseSBpcyBvbgogICAgICB0aGUgd2lzaGxpc3Q8L3BhcmE+CiAgPC9zZWN0MT4KPC9jaGFwdGVyPgoKPC9ib29rPgo8IS0tIHZpbTpzZXQgc3c9MiB0cz04OiAtLT4K