SElTVE9SWSBvZiB0aGUgTFpNQSBTREsKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgNC41NwkJIDIwMDctMTItMTIKICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAtIFNwZWVkIG9wdGltaXphdGlvbnMgaW4g0SsrIExaTUEgRGVjb2Rlci4KICAgIC0gU21hbGwgY2hhbmdlcyBmb3IgbW9yZSBjb21wYXRpYmlsaXR5IHdpdGggc29tZSBDL0MrKyBjb21waWxlcnMuCgoKICA0LjQ5IGJldGEJIDIwMDctMDctMDUKICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAtIC43eiBBTlNJLUMgRGVjb2RlcjoKCSAtIG5vdyBpdCBzdXBwb3J0cyBCQ0ogYW5kIEJDSjIgZmlsdGVycwoJIC0gbm93IGl0IHN1cHBvcnRzIGZpbGVzIGxhcmdlciB0aGFuIDQgR0IuCgkgLSBub3cgaXQgc3VwcG9ydHMgIkxhc3QgV3JpdGUgVGltZSIgZmllbGQgZm9yIGZpbGVzLgogICAgLSBDKysgY29kZSBmb3IgLjd6IGFyY2hpdmVzIGNvbXByZXNzaW5nL2RlY29tcHJlc3NpbmcgZnJvbSA3LXppcAogICAgICB3YXMgaW5jbHVkZWQgdG8gTFpNQSBTREsuCgoKICA0LjQzCQkgMjAwNi0wNi0wNAogIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC0gU21hbGwgY2hhbmdlcyBmb3IgbW9yZSBjb21wYXRpYmlsaXR5IHdpdGggc29tZSBDL0MrKyBjb21waWxlcnMuCgoKICA0LjQyCQkgMjAwNi0wNS0xNQogIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC0gU21hbGwgY2hhbmdlcyBpbiAuaCBmaWxlcyBpbiBBTlNJLUMgdmVyc2lvbi4KCgogIDQuMzkgYmV0YQkgMjAwNi0wNC0xNAogIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC0gQnVnIGluIHZlcnNpb25zIDQuMzNiOjQuMzhiIHdhcyBmaXhlZDoKICAgICAgQysrIHZlcnNpb24gb2YgTFpNQSBlbmNvZGVyIGNvdWxkIG5vdCBjb3JyZWN0bHkgY29tcHJlc3MKICAgICAgZmlsZXMgbGFyZ2VyIHRoYW4gMiBHQiB3aXRoIEhDNCBtYXRjaCBmaW5kZXIgKC1tZmhjNCkuCgoKICA0LjM3IGJldGEJIDIwMDUtMDQtMDYKICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAtIEZpeGVzIGluIEMrKyBjb2RlOiBjb2RlIGNvdWxkIG5vIGJlIGNvbXBpbGVkIGlmIF9OT19FWENFUFRJT05TIHdhcyBkZWZpbmVkLgoKCiAgNC4zNSBiZXRhCSAyMDA1LTAzLTAyCiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgLSBCdWcgd2FzIGZpeGVkIGluIEMrKyB2ZXJzaW9uIG9mIExaTUEgRGVjb2RlcjoKICAgICAgIElmIGVuY29kZWQgc3RyZWFtIHdhcyBjb3JydXB0ZWQsIGRlY29kZXIgY291bGQgYWNjZXNzIG1lbW9yeQogICAgICAgb3V0c2lkZSBvZiBhbGxvY2F0ZWQgcmFuZ2UuCgoKICA0LjM0IGJldGEJIDIwMDYtMDItMjcKICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAtIENvbXByZXNzaW5nIHNwZWVkIGFuZCBtZW1vcnkgcmVxdWlyZW1lbnRzIGZvciBjb21wcmVzc2luZyB3ZXJlIGluY3JlYXNlZAogICAgLSBMWk1BIG5vdyBjYW4gdXNlIG9ubHkgdGhlc2UgbWF0Y2ggZmluZGVyczogSEM0LCBCVDIsIEJUMywgQlQ0CgoKICA0LjMyCQkgMjAwNS0xMi0wOQogIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC0gSmF2YSB2ZXJzaW9uIG9mIExaTUEgU0RLIHdhcyBpbmNsdWRlZAoKCiAgNC4zMAkJIDIwMDUtMTEtMjAKICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAtIENvbXByZXNzaW9uIHJhdGlvIHdhcyBpbXByb3ZlZCBpbiAtYTIgbW9kZQogICAgLSBTcGVlZCBvcHRpbWl6YXRpb25zIGZvciBjb21wcmVzc2luZyBpbiAtYTIgbW9kZQogICAgLSAtZmIgc3dpdGNoIG5vdyBzdXBwb3J0cyB2YWx1ZXMgdXAgdG8gMjczCiAgICAtIEJ1ZyBpbiA3el9DICg3ekluLmMpIHdhcyBmaXhlZDoKICAgICAgSXQgdXNlZCBBbGxvYy9GcmVlIGZ1bmN0aW9ucyBmcm9tIGRpZmZlcmVudCBtZW1vcnkgcG9vbHMuCiAgICAgIFNvIGlmIHByb2dyYW0gdXNlZCB0d28gbWVtb3J5IHBvb2xzLCBpdCB3b3JrZWQgaW5jb3JyZWN0bHkuCiAgICAtIDd6X0M6IC43eiBmb3JtYXQgc3VwcG9ydGluZyB3YXMgaW1wcm92ZWQKICAgIC0gTFpNQSMgU0RLIChDIy5ORVQgdmVyc2lvbikgd2FzIGluY2x1ZGVkCgoKICA0LjI3IChVcGRhdGVkKSAyMDA1LTA5LTIxCiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtIFNvbWUgR1VJRHMvaW50ZXJmYWNlcyBpbiBDKysgd2VyZSBjaGFuZ2VkLgogICAgIElTdHJlYW0uaDoKICAgICAgIElTZXF1ZW50aWFsSW5TdHJlYW06OlJlYWQgbm93IHdvcmtzIGFzIG9sZCBSZWFkUGFydAogICAgICAgSVNlcXVlbnRpYWxPdXRTdHJlYW06OldyaXRlIG5vdyB3b3JrcyBhcyBvbGQgV3JpdGVQYXJ0CgoKICA0LjI3CQkgMjAwNS0wOC0wNwogIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC0gQnVnIGluIEx6bWFEZWNvZGVTaXplLmMgd2FzIGZpeGVkOgogICAgICAgaWYgX0xaTUFfSU5fQ0IgYW5kIF9MWk1BX09VVF9SRUFEIHdlcmUgZGVmaW5lZCwKICAgICAgIGRlY29tcHJlc3Npbmcgd29ya2VkIGluY29ycmVjdGx5LgoKCiAgNC4yNgkJIDIwMDUtMDgtMDUKICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAtIEZpeGVzIGluIDd6X0MgY29kZSBhbmQgTHptYVRlc3QuYzoKICAgICAgcHJldmlvdXMgdmVyc2lvbnMgY291bGQgd29yayBpbmNvcnJlY3RseSwKICAgICAgaWYgbWFsbG9jKDApIHJldHVybnMgMAoKCiAgNC4yMwkJIDIwMDUtMDYtMjkKICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAtIFNtYWxsIGZpeGVzIGluIEMrKyBjb2RlCgoKICA0LjIyCQkgMjAwNS0wNi0xMAogIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC0gU21hbGwgZml4ZXMKCgogIDQuMjEJCSAyMDA1LTA2LTA4CiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgLSBJbnRlcmZhY2VzIGZvciBBTlNJLUMgTFpNQSBEZWNvZGVyIChMem1hRGVjb2RlLmMpIHdlcmUgY2hhbmdlZAogICAgLSBOZXcgYWRkaXRpb25hbCB2ZXJzaW9uIG9mIEFOU0ktQyBMWk1BIERlY29kZXIgd2l0aCB6bGliLWxpa2UgaW50ZXJmYWNlOgoJLSBMem1hU3RhdGVEZWNvZGUuaAoJLSBMem1hU3RhdGVEZWNvZGUuYwoJLSBMem1hU3RhdGVUZXN0LmMKICAgIC0gQU5TSS1DIExaTUEgRGVjb2RlciBub3cgY2FuIGRlY29tcHJlc3MgZmlsZXMgbGFyZ2VyIHRoYW4gNCBHQgoKCiAgNC4xNwkJIDIwMDUtMDQtMTgKICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAtIE5ldyBleGFtcGxlIGZvciBSQU0tPlJBTSBjb21wcmVzc2luZy9kZWNvbXByZXNzaW5nOgogICAgICBMWk1BICsgQkNKIChmaWx0ZXIgZm9yIHg4NiBjb2RlKToKCS0gTHptYVJhbS5oCgktIEx6bWFSYW0uY3BwCgktIEx6bWFSYW1EZWNvZGUuaAoJLSBMem1hUmFtRGVjb2RlLmMKCS0gLWY4NiBzd2l0Y2ggZm9yIGx6bWEuZXhlCgoKICA0LjE2CQkgMjAwNS0wMy0yOQogIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC0gQnVnIHdhcyBmaXhlZCBpbiBMem1hRGVjb2RlLmMgKEFOU0ktQyBMWk1BIERlY29kZXIpOgogICAgICAgSWYgX0xaTUFfT1VUX1JFQUQgd2FzIGRlZmluZWQsIGFuZCBpZiBlbmNvZGVkIHN0cmVhbSB3YXMgY29ycnVwdGVkLAogICAgICAgZGVjb2RlciBjb3VsZCBhY2Nlc3MgbWVtb3J5IG91dHNpZGUgb2YgYWxsb2NhdGVkIHJhbmdlLgogICAgLSBTcGVlZCBvcHRpbWl6YXRpb24gb2YgQU5TSS1DIExaTUEgRGVjb2RlciAobm93IGl0J3MgYWJvdXQgMjAlIGZhc3RlcikuCiAgICAgIE9sZCB2ZXJzaW9uIG9mIExaTUEgRGVjb2RlciBub3cgaXMgaW4gZmlsZSBMem1hRGVjb2RlU2l6ZS5jLgogICAgICBMem1hRGVjb2RlU2l6ZS5jIGNhbiBwcm92aWRlIHNsaWdodGx5IHNtYWxsZXIgY29kZSB0aGFuIEx6bWFEZWNvZGUuYwogICAgLSBTbWFsbCBzcGVlZCBvcHRpbWl6YXRpb24gaW4gTFpNQSBDKysgY29kZQogICAgLSBmaWx0ZXIgZm9yIFNQQVJDJ3MgY29kZSB3YXMgYWRkZWQKICAgIC0gU2ltcGxpZmllZCB2ZXJzaW9uIG9mIC43eiBBTlNJLUMgRGVjb2RlciB3YXMgaW5jbHVkZWQKCgogIDQuMDYJCSAyMDA0LTA5LTA1CiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgLSBCdWcgaW4gdjQuMDUgd2FzIGZpeGVkOgoJTFpNQS1FbmNvZGVyIGRpZG4ndCByZWxlYXNlIG91dHB1dCBzdHJlYW0gaW4gc29tZSBjYXNlcy4KCgogIDQuMDUJCSAyMDA0LTA4LTI1CiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgLSBTb3VyY2UgY29kZSBvZiBmaWx0ZXJzIGZvciB4ODYsIElBLTY0LCBBUk0sIEFSTS1UaHVtYgogICAgICBhbmQgUG93ZXJQQyBjb2RlIHdhcyBpbmNsdWRlZCB0byBTREsKICAgIC0gU29tZSBpbnRlcm5hbCBtaW5vciBjaGFuZ2VzCgoKICA0LjA0CQkgMjAwNC0wNy0yOAogIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC0gTW9yZSBjb21wYXRpYmlsaXR5IHdpdGggc29tZSBDKysgY29tcGlsZXJzCgoKICA0LjAzCQkgMjAwNC0wNi0xOAogIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC0gIkJlbmNobWFyayIgY29tbWFuZCB3YXMgYWRkZWQuIEl0IG1lYXN1cmVzIGNvbXByZXNzaW5nCiAgICAgIGFuZCBkZWNvbXByZXNzaW5nIHNwZWVkIGFuZCBzaG93cyByYXRpbmcgdmFsdWVzLgogICAgICBBbHNvIGl0IGNoZWNrcyBoYXJkd2FyZSBlcnJvcnMuCgoKICA0LjAyCQkgMjAwNC0wNi0xMAogIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC0gQysrIExaTUEgRW5jb2Rlci9EZWNvZGVyIGNvZGUgbm93IGlzIG1vcmUgcG9ydGFibGUKICAgICAgYW5kIGl0IGNhbiBiZSBjb21waWxlZCBieSBHQ0Mgb24gTGludXguCgoKICA0LjAxCQkgMjAwNC0wMi0xNQogIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC0gU29tZSBkZXRlY3Rpb24gb2YgZGF0YSBjb3JydXB0aW9uIHdhcyBlbmFibGVkLgoJTHptYURlY29kZS5jIC8gUmFuZ2VEZWNvZGVyUmVhZEJ5dGUKCS4uLi4uCgl7CgkgIHJkLT5FeHRyYUJ5dGVzID0gMTsKCSAgcmV0dXJuIDB4RkY7Cgl9CgoKICA0LjAwCQkgMjAwNC0wMi0xMwogIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIC0gT3JpZ2luYWwgdmVyc2lvbiBvZiBMWk1BIFNESwoKCgpISVNUT1JZIG9mIHRoZSBMWk1BCi0tLS0tLS0tLS0tLS0tLS0tLS0KICAyMDAxLTIwMDc6ICBJbXByb3ZlbWVudHMgdG8gTFpNQSBjb21wcmVzc2luZy9kZWNvbXByZXNzaW5nIGNvZGUsCgkgICAgICBrZWVwaW5nIGNvbXBhdGliaWxpdHkgd2l0aCBvcmlnaW5hbCBMWk1BIGZvcm1hdAogIDE5OTYtMjAwMTogIERldmVsb3BtZW50IG9mIExaTUEgY29tcHJlc3Npb24gZm9ybWF0CgogIFNvbWUgbWlsZXN0b25lczoKCiAgMjAwMS0wOC0zMDogTFpNQSBjb21wcmVzc2lvbiB3YXMgYWRkZWQgdG8gNy1aaXAKICAxOTk5LTAxLTAyOiBGaXJzdCB2ZXJzaW9uIG9mIDctWmlwIHdhcyByZWxlYXNlZAoKCkVuZCBvZiBkb2N1bWVudAo=