PCEtLSAqKiogV2luZSBGQVEgKioqIC0tPgogIDx0aXRsZT5XaW5lIEZBUTwvdGl0bGU+CgogIDxxYW5kYXNldD4KICAgIDxxYW5kYWRpdiBpZD0iQWJvdXQtdGhpcy1GQVEiPjx0aXRsZT5BYm91dCB0aGlzIEZBUTwvdGl0bGU+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ildoby1tYWludGFpbnMtdGhpcy1GQVEiPgogICAgICAgIDxwYXJhPldobyBtYWludGFpbnMgdGhpcyBGQVEgPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT5EYXZlIEdhcmRuZXIgbWFpbnRhaW5lZCBpdCBmcm9tIDE5OTUtMTk5OC48L3BhcmE+CiAgICAgICAgPHBhcmE+RG91Z2xhcyBSaWRnd2F5IChyaWRnd2F5QHdpbmVocS5jb20pIHRvb2sgaXQgb3ZlciBpbiAxOTk5LjwvcGFyYT4KICAgICAgICA8cGFyYT5BbmRyZWFzIE1vaHIgKGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbSkgY29udmVydGVkIGl0IHRvIEZBUS1PLU1hdGljIGluIDIwMDAuPC9wYXJhPgogICAgICAgIDxwYXJhPkRpbWl0cmllIE8uIFBhdW4sIEtlaXRoIE1hdHRoZXdzIGFuZCBUaG9tYXMgV2lja2xpbmUgcmVvcmdhbmlzZWQgaXQgaW4gMjAwMi48L3BhcmE+CiAgICAgICAgPHBhcmE+Rm9yIHN1Z2dlc3Rpb25zL2FkZGl0aW9ucy9jb21wbGFpbnRzIHJlZ2FyZGluZyB0aGlzIEZBUSwgcGxlYXNlIHNlbmQgYW4gZW1haWwgdG8KICAgICAgICA8dWxpbmsgdXJsPSJtYWlsdG86d2luZS1mYXFAd2luZWhxLm9yZyI+d2luZS1mYXFAd2luZWhxLm9yZzwvdWxpbms+PC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGF0LWlzLXRoZS1jb3B5cmlnaHQtb24tdGhlLUZBUS1BbmQiPgogICAgICAgIDxwYXJhPldoYXQgaXMgdGhlIGNvcHlyaWdodCBvbiB0aGUgRkFRPyBBbmQgaG93IG1heSBJIHVzZSBpdD88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+VGhlIG9yaWdpbmFsIFdpbmUgRkFRLCB3aGljaCB0aGlzIEZBUSB3YXMgYmFzZWQgb24sIHdhcyBjb3B5cmlnaHQgJmNvcHk7IDE5OTUtMTk5OCBEYXZpZCBHYXJkbmVyLjwvcGFyYT4KICAgICAgICA8cGFyYT5JdCBtYXkgYmUgcmVwcm9kdWNlZCBhbmQgbW9kaWZpZWQgdW5kZXIgdGhlIHNhbWUgdGVybXMgYXMgV2luZSBpdHNlbGYuPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgPC9xYW5kYWRpdj4KICAgIDxxYW5kYWRpdiBpZD0iR2VuZXJhbC1RdWVzdGlvbnMtYWJvdXQtV2luZSI+CiAgICAgIDx0aXRsZT5HZW5lcmFsIFF1ZXN0aW9ucyBhYm91dCBXaW5lPC90aXRsZT4KICAgICAgPHFhbmRhZW50cnk+CgogICAgICA8cXVlc3Rpb24gaWQ9IldoYXQtaXMtV2luZS1hbmQtd2hhdC1pcy1pdC1zdXBwb3NlZC10byI+CiAgICAgICAgPHBhcmE+V2hhdCBpcyBXaW5lIGFuZCB3aGF0IGlzIGl0IHN1cHBvc2VkIHRvIGRvPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgaXMgYSBwcm9ncmFtIHdoaWNoIGFsbG93cyB0aGUgb3BlcmF0aW9uIG9mIERPUyBhbmQgTVMKICAgICAgICAgIFdpbmRvd3MgcHJvZ3JhbXMgKFdpbmRvd3MgMy54IGFuZCBXaW4zMiBleGVjdXRhYmxlcykgb24gVU5JWCBvcGVyYXRpbmcgc3lzdGVtcyBzdWNoIGFzIExpbnV4LiAKICAgICAgICAgIEl0IGNvbnNpc3RzIG9mIGEgcHJvZ3JhbSBsb2FkZXIsIHdoaWNoIGxvYWRzIGFuZCBleGVjdXRlcyBhIFdpbmRvd3MKICAgICAgICAgIGJpbmFyeSwgYW5kIGEgc2V0IG9mIGxpYnJhcmllcyB0aGF0IGltcGxlbWVudHMgV2luZG93cyBBUEkgY2FsbHMKICAgICAgICAgIHVzaW5nIHRoZWlyIFVOSVggb3IgWDExIGVxdWl2YWxlbnRzLiBUaGUgbGlicmFyaWVzIG1heSBhbHNvIGJlIHVzZWQKICAgICAgICAgIGZvciBwb3J0aW5nIFdpbjMyIGNvZGUgaW50byBuYXRpdmUgVU5JWCBleGVjdXRhYmxlcywgb2Z0ZW4KICAgICAgICAgIHdpdGhvdXQgbWFueSBjaGFuZ2VzIGluIHRoZSBzb3VyY2UuIFdpbmUgaXMgZnJlZSBzb2Z0d2FyZSwgCiAgICAgICAgICBhbmQgaXRzIGxpY2Vuc2UgKGNvbnRhaW5lZCBpbiB0aGUgZmlsZSBMSUNFTlNFCiAgICAgICAgICBpbiBlYWNoIGRpc3RyaWJ1dGlvbikgaXMgdGhlIExHUEwuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJcy1XaW5lLWFuLWVtdWxhdG9yIj4KICAgICAgICA8cGFyYT5Eb2VzIFdpbmUgZW11bGF0ZSBhIGZ1bGwgY29tcHV0ZXI/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgTm8sIGFzIHRoZSBuYW1lIHNheXMsIFdpbmUgSXMgTm90IGEgKENQVSkgRW11bGF0b3IuIFdpbmUganVzdAogICAgICAgICAgcHJvdmlkZXMgdGhlIFdpbmRvd3MgQVBJLiBUaGlzIG1lYW5zIHRoYXQgeW91IHdpbGwgbmVlZCBhbgogICAgICAgICAgeDg2LWNvbXBhdGlibGUgcHJvY2Vzc29yIHRvIHJ1biBhbiB4ODYgV2luZG93cyBhcHBsaWNhdGlvbiwgZm9yIGluc3RhbmNlIGZyb20gSW50ZWwgb3IgQU1ELiBUaGUKICAgICAgICAgIGFkdmFudGFnZSBpcyB0aGF0LCB1bmxpa2Ugc29sdXRpb25zIHRoYXQgcmVseSBvbiBDUFUgZW11bGF0aW9uLCBXaW5lCiAgICAgICAgICBydW5zIGFwcGxpY2F0aW9ucyBhdCBmdWxsIHNwZWVkLiBTb21ldGltZXMgYSBwcm9ncmFtIHJ1biB1bmRlcgoJICBXaW5lIHdpbGwgYmUgc2xvd2VyIHRoYW4gd2hlbiBydW4gb24gYSBjb3B5IG9mIE1pY3Jvc29mdCBXaW5kb3dzLCBidXQKCSAgdGhpcyBpcyBtb3JlIGR1ZSB0byB0aGUgZmFjdCB0aGF0IE1pY3Jvc29mdCBoYXZlIGhlYXZpbHkgb3B0aW1pemVkIHBhcnRzIG9mIHRoZWlyCgkgIGNvZGUsIHdoZXJlYXMgbW9zdGx5IFdpbmUgaXMgbm90IHdlbGwgb3B0aW1pemVkICh5ZXQpLiBPY2Nhc2lvbmFsbHksIGFuIGFwcAoJICBtYXkgcnVuIGZhc3RlciB1bmRlciBXaW5lIHRoYW4gb24gV2luZG93cy4gTW9zdCBhcHBzIHJ1biBhdCByb3VnaGx5IHRoZSBzYW1lIHNwZWVkLgogICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iQXJlLWhlcmUtYW55LWFsdGVybmF0aXZlcy10by1XaW5lIj4KICAgICAgICA8cGFyYT5BcmUgdGhlcmUgYW55IGFsdGVybmF0aXZlcyB0byBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFllcywgdGhlcmUgYXJlLiBZb3UgY2FuIHVzZSA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LnZtd2FyZS5jb20iPlZNV2FyZTwvdWxpbms+IHRvIHJ1biBhIFdpbmRvd3MgaW5zdGFsbGF0aW9uIGluc2lkZSBhIHZpcnR1YWwgbWFjaGluZSwKCSAgb3IgdXNlIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luNGxpbi5jb20iPldpbjRMaW48L3VsaW5rPgoJICB0byBydW4gYSBzcGVjaWFsbHkgYWRhcHRlZCBXaW5kb3dzIHZlcnNpb24gb24gTGludXguCgkgIEJvdGggc29sdXRpb25zIGNvc3QgbW9uZXkgZm9yIGJvdGggdGhlIHNvZnR3YXJlIGl0c2VsZgoJICBhbmQgYSBXaW5kb3dzIGxpY2Vuc2UuCiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KICAgICAgICAgTm90ZSB0aGF0LCBsaWtlIFdpbmUsIHRoZXkgY2FuIG9ubHkgdXNlIHRoZSBoYXJkd2FyZSBwbGF0Zm9ybSB0aGF0CiAgICAgICAgIHRoZSB0YXJnZXQgcHJvZ3JhbXMgd2VyZSBvcmlnaW5hbGx5IGNvbXBpbGVkIGZvciAoc2VlIGJlbG93KS4KICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KICAgICAgIAogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJEaWZmZXJlbmNlLWJldHdlZW4tV2luZS1hbmQtZW11bGF0b3JzIj4KICAgICAgICA8cGFyYT5XaGF0IGlzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gV2luZSBhbmQgeDg2IGhhcmR3YXJlIGVtdWxhdG9ycz88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGVyZSBhcmUgdHdvIGZyZWUgeDg2IGhhcmR3YXJlIGVtdWxhdG9yczoKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly9ib2Nocy5zb3VyY2Vmb3JnZS5uZXQiPkJvY2hzPC91bGluaz4sIGFuZAogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3NhdmFubmFoLm5vbmdudS5vcmcvcHJvamVjdHMvcGxleDg2Ij5QbGV4ODY8L3VsaW5rPi4KICAgICAgIDwvcGFyYT4KCiAgICAgICA8cGFyYT4KICAgICAgICAgIFBsZXg4NiBpcyB0aGUgb3Blbi1zb3VyY2UgZnJlZS1zb2Z0d2FyZSBhbHRlcm5hdGl2ZSBmb3IgVk1XYXJlLAoJICBWaXJ0dWFsUEMsIGFuZCBvdGhlciBJQS0zMiBvbiBJQS0zMiAiVmlydHVhbCBQQyBwcm9kdWN0cy4iIEl0CiAgICAgICAgICBjYW4gb25seSBydW4gb24gdGhlIElBLTMyIGFyY2hpdGVjdHVyZS4KICAgICAgIDwvcGFyYT4KCiAgICAgICA8cGFyYT4KICAgICAgICAgIEJvY2hzIGlzIGEgaGlnaGx5IHBvcnRhYmxlIG9wZW4gc291cmNlIElBLTMyICh4ODYpIFBDIGVtdWxhdG9yIAogICAgICAgICAgd3JpdHRlbiBpbiBDKyssIHRoYXQgcnVucyBvbiBtb3N0IHBvcHVsYXIgcGxhdGZvcm1zLiBJdCBpbmNsdWRlcyBlbXVsYXRpb24KICAgICAgICAgIG9mIHRoZSBJbnRlbCB4ODYgQ1BVLCBjb21tb24gSS9PIGRldmljZXMsIGFuZCBhIGN1c3RvbSBCSU9TLiBDdXJyZW50bHksIAogICAgICAgICAgQm9jaHMgY2FuIGJlIGNvbXBpbGVkIHRvIGVtdWxhdGUgYSAzODYsIDQ4NiBvciBQZW50aXVtIENQVS4gQm9jaHMgaXMgY2FwYWJsZQogICAgICAgICAgb2YgcnVubmluZyBtb3N0IE9wZXJhdGluZyBTeXN0ZW1zIGluc2lkZSB0aGUgZW11bGF0aW9uIGluY2x1ZGluZyBMaW51eCwgCiAgICAgICAgICBXaW5kb3dzriA5NSwgRE9TLCBhbmQgcmVjZW50bHkgV2luZG93c64gTlQgNC4KICAgICAgIDwvcGFyYT4KCiAgICAgICA8cGFyYT4KICAgICAgICAgIEJvdGggYXJlIGxpY2Vuc2VkIHVuZGVyIHRoZSBHUEwuIEJvY2hzIGlzIG9sZGVyIHRoYW4gUGxleDg2LCBzZWVtcyB0byBiZQogICAgICAgICAgZWFzaWVyIHRvIGluc3RhbGwsIGJ1dCBQbGV4ODYgd2lsbCBydW4gZmFzdGVyIGJlY2F1c2UgUGxleDg2IHVzZXMgYSBqdXN0IGluCiAgICAgICAgICB0aW1lIGJpbmFyeSBjb21waWxlci4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIGRyYXdiYWNrIG9mIGFsbCBlbXVsYXRvcnMgaXMgdGhhdCB5b3UgbmVlZCBhIHZlcnNpb24KICAgICAgICAgIG9mIFdpbmRvd3MgaW4gb3JkZXIgdG8gcnVuIFdpbmRvd3MsIGFuZCB0aGF0IHRoZXkgYWxsIGhhdmUgYW4KICAgICAgICAgIGltcGFjdCBvbiBwZXJmb3JtYW5jZS4gV2luZSBhbHNvIGdpdmVzIG11Y2ggYmV0dGVyIGRlc2t0b3AgaW50ZWdyYXRpb24gLSBmb3IKCSAgaW5zdGFuY2UsIHByb2dyYW1zIHVzZSB5b3VyIHN0YW5kYXJkIHdpbmRvdyBtYW5hZ2VyLCBzeXN0ZW0gdHJheSBpY29ucyB3aWxsCgkgIGFwcGVhciBpbiB5b3VyIHRyYXkgYXJlYSAoaWYgeW91IGhhdmUgb25lKSwgYW5kIHlvdSBjYW4gcnVuIHByb2dyYW1zIGRpcmVjdCBmcm9tIHRoZQoJICBjb21tYW5kIGxpbmUgYW5kIHRoZSBtZW51cy4gVGhlIGNsaXBib2FyZCBhbHNvIHdvcmtzIHNlYW1sZXNzbHkuCiAgICAgICA8L3BhcmE+CgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSW50ZWdyYXRlLWFuLXg4Ni1lbXVsYXRvciI+CiAgICAgICAgPHBhcmE+V2hlbiB3aWxsIFdpbmUgaW50ZWdyYXRlIGFuIHg4NiBDUFUgZW11bGF0b3Igc28gd2UgY2FuCiAgICAgICAgICBydW4gV2luZG93cyBhcHBsaWNhdGlvbnMgb24gbm9uLXg4NiBtYWNoaW5lcz88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGUgc2hvcnQgYW5zd2VyIGlzICdwcm9iYWJseSBuZXZlcicuIFJlbWVtYmVyLCBXaW5lIElzIE5vdCBhCiAgICAgICAgICAoQ1BVKSBFbXVsYXRvci4gVGhlIGxvbmcgYW5zd2VyIGlzIHRoYXQgd2UgcHJvYmFibHkgZG9uJ3Qgd2FudCBvcgogICAgICAgICAgbmVlZCB0byBpbnRlZ3JhdGUgb25lIGluIHRoZSB0cmFkaXRpb25hbCBzZW5zZS4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJbnRlZ3JhdGluZyBhIENQVSBlbXVsYXRvciBpbiBXaW5lIHdvdWxkIGJlIGV4dHJlbWVseSBoYXJkLAogICAgICAgICAgZHVlIHRvIHRoZSBsYXJnZSBudW1iZXIgb2YgV2luZG93cyBBUElzIGFuZCB0aGUgY29tcGxleAogICAgICAgICAgZGF0YXR5cGVzIHRoZXkgZXhjaGFuZ2UuIEl0IGlzIG5vdCB1bmNvbW1vbiBmb3IgYSBXaW5kb3dzIEFQSSB0bwogICAgICAgICAgdGFrZSB0aHJlZSBvciBtb3JlIHBvaW50ZXJzIHRvIHN0cnVjdHVyZXMgY29tcG9zZWQgb2YgbWFueSBmaWVsZHMsCiAgICAgICAgICBpbmNsdWRpbmcgcG9pbnRlcnMgdG8gb3RoZXIgY29tcGxleCBzdHJ1Y3R1cmVzLiBGb3IgZWFjaCBvZiB0aGVzZQogICAgICAgICAgd2Ugd291bGQgbmVlZCBhIGNvbnZlcnNpb24gcm91dGluZSB0byBkZWFsIHdpdGggdGhlIGJ5dGUgb3JkZXIgYW5kCiAgICAgICAgICBhbGlnbm1lbnQgaXNzdWVzLiBGdXJ0aGVybW9yZSwgV2luZG93cyBhbHNvIGNvbnRhaW5zIG1hbnkgY2FsbGJhY2sKICAgICAgICAgIG1lY2hhbmlzbXMgdGhhdCBjb25zdGl0dXRlIGFzIG1hbnkgZXh0cmEgcGxhY2VzIHdoZXJlIHdlIHdvdWxkIGhhdmUKICAgICAgICAgIHRvIGhhbmRsZSB0aGVzZSBjb252ZXJzaW9uIGlzc3Vlcy4gV2luZSBhbHJlYWR5IGhhcyB0byBkZWFsIHdpdGgKICAgICAgICAgIDE2IHZzLiAzMiBiaXQgQVBJcyBhbmQgQW5zaSB2cy4gVW5pY29kZSBBUElzIHdoaWNoIGJvdGgKICAgICAgICAgIGludHJvZHVjZSBzaWduaWZpY2FudCBjb21wbGV4aXR5LiBBZGRpbmcgc3VwcG9ydCBmb3IgYSBDUFUgZW11bGF0b3IKICAgICAgICAgIGluc2lkZSBXaW5lIHdvdWxkIGludHJvZHVjZSBhdCBsZWFzdCBkb3VibGUgdGhhdCBjb21wbGV4aXR5IGFuZAogICAgICAgICAgb25seSBzZXJ2ZSB0byBzbG93IGRvd24gdGhlIGRldmVsb3BtZW50IG9mIFdpbmUuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgRm9ydHVuYXRlbHkgYW5vdGhlciBzb2x1dGlvbiBleGlzdHMgdG8gcnVuIFdpbmRvd3MgYXBwbGljYXRpb25zCiAgICAgICAgICBvbiBub24teDg2IHBsYXRmb3JtczogcnVuIGJvdGggV2luZSBhbmQgdGhlIGFwcGxpY2F0aW9uIGluc2lkZSB0aGUKICAgICAgICAgIENQVSBlbXVsYXRvci4gQXMgbG9uZyBhcyB0aGUgZW11bGF0b3IgcHJvdmlkZXMgYSBzdGFuZGFyZCBVbml4CiAgICAgICAgICBlbnZpcm9ubWVudCwgV2luZSBzaG91bGQgb25seSBuZWVkIG1pbmltYWwgbW9kaWZpY2F0aW9ucy4gV2hhdAogICAgICAgICAgcGVyZm9ybWFuY2UgeW91IGxvb3NlIGR1ZSB0byBXaW5lIHJ1bm5pbmcgaW5zaWRlIHRoZSBlbXVsYXRvcgogICAgICAgICAgcmF0aGVyIHRoYW4gbmF0aXZlbHksIHlvdSBnYWluIGluIGNvbXBsZXhpdHkgaW5zaWRlIG9mIFdpbmUuCiAgICAgICAgICBGdXJ0aGVybW9yZSwgaWYgdGhlIGVtdWxhdG9yIGlzIGZhc3QgZW5vdWdoIHRvIHJ1biBXaW5kb3dzCiAgICAgICAgICBhcHBsaWNhdGlvbnMsIFBob3Rvc2hvcCBmb3IgaW5zdGFuY2UsIHRoZW4gaXQgc2hvdWxkIGJlIGZhc3QgZW5vdWdoCiAgICAgICAgICB0byBydW4gdGhhdCBzYW1lIFdpbmRvd3MgYXBwbGljYXRpb24gcGx1cyBXaW5lLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFR3byBwcm9qZWN0cyBoYXZlIHN0YXJ0ZWQgYWxvbmcgdGhvc2UgbGluZXM6IDx1bGluawogICAgICAgICAgdXJsPSJodHRwOi8vZmFicmljZS5iZWxsYXJkLmZyZWUuZnIvcWVtdS8iPlFFTVU8Lz4sIGFuCiAgICAgICAgICBvcGVuLXNvdXJjZSBwcm9qZWN0LCBhbmQgPHVsaW5rCiAgICAgICAgICB1cmw9Imh0dHA6Ly93d3cudHJhbnNpdGl2ZXMuY29tL3RlY2hfb3ZlcnZpZXcuaHRtIj5EeW5hbWl0ZTwvPiwKICAgICAgICAgIGEgY29tbWVyY2lhbCBDUFUgZW11bGF0b3IgZW52aXJvbm1lbnQgZnJvbQogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy50cmFuc2l0aXZlcy5jb20vIj5UcmFuc2l0aXZlcyBUZWNobm9sb2dpZXM8Lz4KICAgICAgICAgIHdoaWNoIGhhcyBiZWVuIDx1bGluawogICAgICAgICAgdXJsPSJodHRwOi8vd3d3LnRyYW5zZ2FtaW5nLmNvbS9uZXdzLnBocD9uZXdzaWQ9MzciPnBhaXJlZAogICAgICAgICAgd2l0aCBXaW5lPC8+LgogICAgICAgIDwvcGFyYT4KCiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaHktd291bGQtYW55b25lLXdhbnQtV2luZS1XaW5kb3dzLXN1Y2siPgogICAgICAgIDxwYXJhPldoeSB3b3VsZCBhbnlvbmUgd2FudCBXaW5lPyBEb2Vzbid0IFdpbmRvd3Mgc3Vjaz88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBGaXJzdCBXaW5lIGlzIG5vdCBhYm91dCBydW5uaW5nIFdpbmRvd3MgYnV0IGFib3V0IHJ1bm5pbmcgV2luZG93cyAKICAgICAgICAgIGFwcGxpY2F0aW9ucy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBTbyBpZiBhbGwgeW91ciBjb21wdXRpbmcgbmVlZHMgYXJlIGZ1bGZpbGxlZCBieSBuYXRpdmUgVW5peCAKICAgICAgICAgIGFwcGxpY2F0aW9ucywgdGhlbiB5b3UgZG8gbm90IG5lZWQgV2luZSBhbmQgc2hvdWxkIG5vdCBiZSB1c2luZwogICAgICAgICAgaXQuIEhvd2V2ZXIsIGlmIHlvdSBkZXBlbmQgb24gb25lIG9yIG1vcmUgb2YgdGhlIHRlbnMgb2YgCiAgICAgICAgICB0aG91c2FuZHMgb2YgV2luZG93cyBhcHBsaWNhdGlvbnMsIHRoZW4gV2luZSBpcyB0aGUgYmVzdCB3YXkgdG8KICAgICAgICAgIHVzZSBpdCB3aXRob3V0IGdpdmluZyB1cCBvbiBVbml4LiBMZXQncyBsb29rIGF0IHRoZSBhbHRlcm5hdGl2ZXMKICAgICAgICAgIHRvIHNlZSB3aHk6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIG1vc3Qgb2J2aW91cyBhbHRlcm5hdGl2ZSBpcyB0byBkdWFsLWJvb3QuIFRoaXMgaXMgdGhlIHNvbHV0aW9uCiAgICAgICAgICB0aGF0IHByb3ZpZGVzIHRoZSBiZXN0IGNvbXBhdGliaWxpdHkuIEhvd2V2ZXIgaXQgcmVxdWlyZXMgdGhhdCB5b3UKICAgICAgICAgIGFjcXVpcmUgYSBXaW5kb3dzIGxpY2Vuc2UgYW5kIHRoZW4gZGVkaWNhdGUgYSBnb29kIGNodW5rIG9mIHlvdXIgCiAgICAgICAgICBoYXJkLWRyaXZlIHRvIFdpbmRvd3MuIEJ1dCB0aGUgd29yc3QgaXMgeWV0IHRvIGNvbWUuIEVhY2ggdGltZSB5b3UKICAgICAgICAgIHdpbGwgd2FudCB0byB1c2UgdGhhdCBhcHBsaWNhdGlvbiB5b3Ugd2lsbCBoYXZlIHRvIHJlYm9vdCB0byAKICAgICAgICAgIFdpbmRvd3MuIFRoaXMgaXMgZXNwZWNpYWxseSBzaWduaWZpY2FudCBpZiBleHRlcm5hbCBmYWN0b3JzIGRpY3RhdGUKICAgICAgICAgIHdoZW4geW91IG11c3QgdXNlIHRoaXMgYXBwbGljYXRpb24gKGUuZy4gY3JlZGl0IGNhcmQgdG8gcHJvY2VzcywgCiAgICAgICAgICBlbWFpbCB0byByZXRyaWV2ZSBmcm9tIGEgTG90dXMgTm90ZXMgc2VydmVyKS4gVGhlbiB5b3Ugd2lsbCBmaW5kCiAgICAgICAgICB5b3Vyc2VsZiBmb3JjZWQgdG8gY2xvc2UgYWxsIHlvdXIgTGludXggYXBwbGljYXRpb25zIGp1c3QgdG8gcnVuCiAgICAgICAgICB0aGF0IG9uZSBXaW5kb3dzIGFwcGxpY2F0aW9uLiBZb3UgbWF5IHF1aWNrbHkgZ2V0IHRpcmVkIG9mIHRoaXMsIG9yCiAgICAgICAgICB3aWxsIGZpbmQgdGhhdCBzdWNoIGEgc2l0dWF0aW9uIGlzIGltcG9zc2libGUgdG8ganVzdGlmeSBpbiBhIAogICAgICAgICAgYnVzaW5lc3MgZW52aXJvbm1lbnQuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIG5leHQgc29sdXRpb24gaXMgdG8gaW5zdGFsbCB2aXJ0dWFsIG1hY2hpbmUgZW11bGF0aW9uIHNvZnR3YXJlCiAgICAgICAgICBzdWNoIGFzIFZNV2FyZSwgV2luNExpbiBvciBQbGV4ODYuIFRoZW4geW91IGNhbiB1c2Ugd2luZG93cyAKICAgICAgICAgIGFwcGxpY2F0aW9ucyB3aXRob3V0IHN1ZmZlcmluZyBzdWNoIGEgYmlnIGRpc3J1cHRpb24uIEJ1dCBpdCBzdGlsbAogICAgICAgICAgcmVxdWlyZXMgdGhhdCB5b3UgYWNxdWlyZSBhIFdpbmRvd3MgbGljZW5zZSBhbmQgZGVkaWNhdGUgYXMgbXVjaCAKICAgICAgICAgIGRpc2sgc3BhY2UgdG8gV2luZG93cy4gRnVydGhlcm1vcmUgeW91IHdpbGwgcGF5IGZvciB0aGUgYWRkZWQgCiAgICAgICAgICBjb252ZW5pZW5jZTogaWYgdXNpbmcgVk1XYXJlIG9yIFdpbjRMaW4geW91IGhhdmUgdG8gYnV5IGFub3RoZXIgCiAgICAgICAgICBsaWNlbnNlLCBhbmQgbW9yZSBpbXBvcnRhbnRseSB5b3Ugbm93IGhhdmUgdG8gZGVkaWNhdGUgYSBnb29kIGNodW5rCiAgICAgICAgICBvZiB5b3VyIGNvbXB1dGVyJ3MgbWVtb3J5IHRvIHRoZSB2aXJ0dWFsIG1hY2hpbmUuIFBlcmZvcm1hbmNlIHdpbGwKICAgICAgICAgIHRha2UgYSBzaWduaWZpY2FudCBoaXQgdG9vLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFVzaW5nIFdpbmUgbGV0cyB5b3UgYXZvaWQgYWxsIG9mIHRoYXQgb3ZlcmhlYWQ6IFdpbmRvd3MgbGljZW5zZSwKICAgICAgICAgIGhhcmQtZHJpdmUgc3BhY2UgcmVxdWlyZWQgYnkgV2luZG93cywgbWVtb3J5IGFuZCBwZXJmb3JtYW5jZSBoaXQgCiAgICAgICAgICB0YWtlbiBieSBlbXVsYXRlZCB2aXJ0dWFsIG1hY2hpbmVzLiBOb3cgeW91IGNhbiBzdGFydCB5b3VyIFdpbmRvd3MKICAgICAgICAgIGFwcGxpY2F0aW9uIHN0cmFpZ2h0IGZyb20geW91ciByZWd1bGFyIGRlc2t0b3AgZW52aXJvbm1lbnQsIHBsYWNlCiAgICAgICAgICB0aGF0IGFwcGxpY2F0aW9uJ3Mgd2luZG93IHNpZGUgYnkgc2lkZSB3aXRoIG5hdGl2ZSBhcHBsaWNhdGlvbnMsCiAgICAgICAgICBjb3B5L3Bhc3RlIGZyb20gb25lIHRvIHRoZSBvdGhlciwgYW5kIHJ1biBpdCBhbGwgYXQgZnVsbCBzcGVlZC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJdCBpcyBhbHNvIGEgcHJldHR5IHZpdGFsIHBhcnQgb2YgbWlncmF0aW5nIGEgbGFyZ2Ugb3JnYW5pc2F0aW9uLAogICAgICAgICAgeW91IGNhbid0IGNoYW5nZSBhIDUwMDAgZGVza3RvcCBzZXR1cCBvdmVybmlnaHQgd2l0aG91dCBhIGxvdCBvZiByaXNrLgogICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iVXNlLVdpbmRvd3MtZHJpdmVyLXdpdGgtV2luZSI+CiAgICAgICAgPHBhcmE+Q2FuIEkgdXNlIFdpbmUgdG8gbWFrZSB0aGUgV2luZG93cyBkcml2ZXIgZm9yIG15IG5ldHdvcmsgY2FyZCAvCiAgICAgICAgICBncmFwaGljcyBjYXJkIC8gc2Nhbm5lciAvIGV0Yy4gd29yayBvbiBVbml4PzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSBnb2FsIG9mIFdpbmUgaXMgdG8gbWFrZSBpdCBwb3NzaWJsZSB0byBydW4gV2luZG93cyBhcHBsaWNhdGlvbnMKICAgICAgICAgIG9uIFVuaXgsIG5vdCBXaW5kb3dzIGRyaXZlcnMgb3IgVnhEcy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBEcml2ZXJzIGFuZCBXaW5kb3dzIGFwcGxpY2F0aW9ucyBiZWxvbmcgdG8gZGlmZmVyZW50IHdvcmxkcy4KICAgICAgICAgIEFwcGxpY2F0aW9ucyBydW4gaW4gdXNlciBtb2RlIGFuZCB1c2UgdGhlIEFQSXMgcHJvdmlkZWQgYnkKICAgICAgICAgIHRoZSBrZXJuZWwgYW5kIHRoZSBvdGhlciB1c2VyIG1vZGUgZGxscy4gSW4gY29udHJhc3QsIGRyaXZlcnMKICAgICAgICAgIGFyZSBsb2FkZWQgaW4gdGhlIFdpbmRvd3Mga2VybmVsLCBpLmUuIGluIHJpbmcgMCBpbnN0ZWFkIG9mIHJpbmcKICAgICAgICAgIDMsIGhhdmUgdG8gZGVhbCB3aXRoIHNwZWNpZmljIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3VlcywgYW5kIHVzZQogICAgICAgICAgaW5zdHJ1Y3Rpb25zIG5vdCBhdmFpbGFibGUgdG8gcmVndWxhciBhcHBsaWNhdGlvbnMuIFRoaXMgbWVhbnMKICAgICAgICAgIHRoZXkgd291bGQgbm90IGJlIGFibGUgdG8gcnVuIGluIFdpbmUgc2luY2UgV2luZSBydW5zIGVudGlyZWx5CiAgICAgICAgICBpbiB1c2VyIG1vZGUuIFJhdGhlciB5b3Ugd291bGQgaGF2ZSB0byBtb2RpZnkgdGhlIExpbnV4IGtlcm5lbC4KICAgICAgICAgIEJ1dCBpbiBhZGRpdGlvbiwgZHJpdmVycyB1c2UgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBBUEkgZnJvbQogICAgICAgICAgcmVndWxhciBXaW5kb3dzIGFwcGxpY2F0aW9ucy4gU28gdGhlIHdvcmsgcGVyZm9ybWVkIG9uIFdpbmUgd291bGQKICAgICAgICAgIG5vdCBldmVuIGJlIG9mIGFueSB1c2UgZm9yIHN1Y2ggYSBwcm9qZWN0LiBJbiBvdGhlciB3b3JkcywgbWFraW5nCiAgICAgICAgICBpdCBwb3NzaWJsZSB0byB1c2UgV2luZG93cyBkcml2ZXJzIG9yIFZ4RHMgb24gVW5peCB3b3VsZCBiZSBhCiAgICAgICAgICBjb21wbGV0ZWx5IHNlcGFyYXRlIHByb2plY3QuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSG93ZXZlciwgaWYgeW91IHdhbnQgdG8gcmV1c2UgV2luZG93cyBkcml2ZXJzIG9uIGEgbm9uLU1pY3Jvc29mdAogICAgICAgICAgb3BlcmF0aW5nIHN5c3RlbSB3ZSByZWNvbW1lbmQgdGhhdCB5b3UgaGF2ZSBhIGxvb2sgYXQKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cucmVhY3Rvcy5jb20vIj5SZWFjdE9TPC8+LgogICAgICAgIDwvcGFyYT4KCiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGljaC1vbmUtb2YtdGhlLWRpZmZlcmVudC1XaW5lLXBhY2thZ2VzIj4KICAgICAgICA8cGFyYT5XaGljaCBvbmUgb2YgdGhlIGRpZmZlcmVudCBXaW5lIHBhY2thZ2VzIG91dCB0aGVyZSBpcyBnb29kIGZvciBtZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBDdXJyZW50bHkgdGhlcmUgaXMgYSBicm9hZCBzZWxlY3Rpb24gb2YgZGlmZmVyZW50IFdpbmUgcGFja2FnZXMvdmVyc2lvbnM6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDx2YXJpYWJsZWxpc3Q+CgoJICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgIDx0ZXJtPjx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLmNvbSI+V2luZTwvdWxpbms+PC90ZXJtPgogICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBUaGlzIGlzIHRoZSAic3RhbmRhcmQiIHNvdXJjZSBkaXN0cmlidXRpb24gb2YgV2luZS4gSXRzIGxpY2Vuc2UgaXMgCiAgICAgICAgICAgICAgdGhlIExHUEwsIGl0IGNhbiBiZSBkb3dubG9hZGVkIGZvciBmcmVlLgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogCgkgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dGVybT48dWxpbmsgdXJsPSJodHRwOi8vcmV3aW5kLnNvdXJjZWZvcmdlLm5ldCI+UmVXaW5kPC91bGluaz48L3Rlcm0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIFRoaXMgaXMgYSBmb3JrZWQgV2luZSB0cmVlIHRoYXQgZ290IGNyZWF0ZWQgd2hlbiBXaW5lIGNoYW5nZWQgaXRzCiAgICAgICAgICAgICAgbGljZW5zZSBmcm9tIFgxMSB0byB0aGUgbW9yZSByZXN0cmljdGl2ZSBMR1BMLCBpbiBvcmRlciB0byBsZXQgCiAgICAgICAgICAgICAgcGVvcGxlIGNvbnRpbnVlIHRvIG1haW50YWluIGFuIFgxMSBsaWNlbnNlZCBXaW5lIHZlcnNpb24uIEl0cyAKICAgICAgICAgICAgICBsaWNlbnNlIGlzIFgxMSwgaXQgY2FuIGJlIGRvd25sb2FkZWQgZm9yIGZyZWUuIAogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAKCSAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgIDx0ZXJtPjx1bGluayB1cmw9Imh0dHA6Ly93d3cudHJhbnNnYW1pbmcuY29tIj5UcmFuc2dhbWluZydzIFdpbmVYPC91bGluaz48L3Rlcm0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIFRoaXMgaXMgVHJhbnNHYW1pbmcncyBXaW5lIHZlcnNpb24gc3BlY2lhbGx5IHN1aXRlZCBmb3IKICAgICAgICAgICAgICBnYW1lcy4gIEl0IGluY2x1ZGVzIG1vcmUgbWF0dXJlIERpcmVjdDNEIHN1cHBvcnQgdGhhbgogICAgICAgICAgICAgIFdpbmVIUSwgYWx0aG91Z2ggdGhlc2UgZGF5cyBXaW5lSFEgaGFzIHF1aXRlIGFkdmFuY2VkCiAgICAgICAgICAgICAgRDNEIHN1cHBvcnQgYXMgd2VsbC4gTW9zdCBvZiB0aGUgY29kZSBpcyB1bmRlciB0aGUgQUZQTAogICAgICAgICAgICAgIGFuZCBjYW4gYmUgZG93bmxvYWRlZCBmb3IgZnJlZS4KICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBIb3dldmVyIFRyYW5zZ2FtaW5nIGFsc28gZGlzdHJpYnV0ZXMgYmluYXJpZXMgdGhhdCBjb250YWluCiAgICAgICAgICAgICAgaW1wcm92ZWQgY29weSBwcm90ZWN0aW9uIHN1cHBvcnQgKG5lZWRlZCBmb3IgbWFueQogICAgICAgICAgICAgIGdhbWVzKSwgc3VwcG9ydCwgYW5kIG90aGVyIGVuaGFuY2VtZW50cy4gVGhlc2UgcGFja2FnZXMgYXJlCiAgICAgICAgICAgICAgb25seSBhdmFpbGFibGUgaW4gYmluYXJ5IGZvcm0gdG8gc3Vic2NyaWJlZCBjdXN0b21lcnMKICAgICAgICAgICAgICAoJDUvbW9udGgpLgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KIAoJICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgPHRlcm0+PHVsaW5rIHVybD0iaHR0cDovL3dpbmUuY29kZXdlYXZlcnMuY29tIj5Db2RlV2VhdmVycycgV2luZSBwcmV2aWV3PC91bGluaz48L3Rlcm0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIFRoaXMgaXMgYSBzcGVjaWFsIHBhY2thZ2VkIHZlcnNpb24gb2YgdGhlIHN0YW5kYXJkIFdpbmUgdHJlZQogICAgICAgICAgICAgIHdoaWNoIGhhcyBhIG5pY2Ugc2V0dXAgZm9yIGVhc3kgaW5zdGFsbGF0aW9uLiBMaWNlbnNlIExHUEwsIGZyZWUKICAgICAgICAgICAgICBkb3dubG9hZC4gSXQncyBwcmV0dHkgb2xkIG5vdywgYW5kIG5vdCByZWNvbW1lbmRlZCBmb3IgZ2VuZXJhbCB1c2UuCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogCgkgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dGVybT48dWxpbmsgdXJsPSJodHRwOi8vd3d3LmNvZGV3ZWF2ZXJzLmNvbS9wcm9kdWN0cy9jcm9zc292ZXIvIj5Db2RlV2VhdmVycycgQ3Jvc3NvdmVyIFBsdWdpbjwvdWxpbms+PC90ZXJtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBTcGVjaWFsIFdpbmUgaW5zdGFsbGF0aW9uIHRvIGJlIHVzZWQgZm9yIHJ1bm5pbmcgV2luZG93cwogICAgICAgICAgICAgIE5ldHNjYXBlIGJyb3dzZXIgcGx1Z2lucyBzdWNoIGFzIGUuZy4gUXVpY2tUaW1lIGluIExpbnV4CiAgICAgICAgICAgICAgYnJvd3NlcnMuIENvc3RzICQyNC45NS4KICAgICAgICAgICAgICBXZWxsIHdvcnRoIGl0ICh2ZXJ5IHN0YWJsZSBhbmQgdXNlZnVsIHBhY2thZ2luZykuIAogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CgoJICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgPHRlcm0+PHVsaW5rIHVybD0iaHR0cDovL3d3dy5jb2Rld2VhdmVycy5jb20vcHJvZHVjdHMvb2ZmaWNlLyI+Q29kZVdlYXZlcnMnIENyb3Nzb3ZlciBPZmZpY2U8L3VsaW5rPjwvdGVybT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgV2luZSB2ZXJzaW9uIHdpdGggc3BlY2lhbCBwYWNrYWdpbmcgdG8gbWFrZSBzdXJlIGFsbW9zdCBhbGwgCiAgICAgICAgICAgICAgaW1wb3J0YW50IE9mZmljZSB0eXBlIHByb2dyYW1zIHdvcmsgcHJldHR5IHdlbGwuIENvc3RzICQ1NC45NS4gCiAgICAgICAgICAgICAgU2VlbXMgdG8gYmUgd2VsbCB3b3J0aCBpdCBzbyBmYXIgYWNjb3JkaW5nIHRvIHNvbWUgY29tbWVudHMuIAogICAgICAgICAgICAgIChub3RlOiB5b3UncmUgc3VwcG9ydGluZyBhIGNvbXBhbnkgYWN0aXZlbHkgY29udHJpYnV0aW5nIHRvIFdpbmUKICAgICAgICAgICAgICBpZiB5b3UgZGVjaWRlIHRvIGJ1eSBlaXRoZXIgUGx1Z2luIG9yIE9mZmljZS4pCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KIAoJICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgPHRlcm0+PHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL2Rvd25sb2FkLyI+T3RoZXIgcGFja2FnZWQgdmVyc2lvbnMgb2YgV2luZTwvdWxpbms+PC90ZXJtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBWYXJpb3VzIFdpbmUgcGFja2FnZXMgY2FuIGJlIGRvd25sb2FkZWQgZm9yIGZyZWUgZnJvbQogICAgICAgICAgICAgIFdpbmUgSFEuIFRoZXkgYXJlIG5vdCBvZmZpY2lhbGx5IHBhY2thZ2VkIGJ5IFdpbmUgSFEsIGFuZCBhcwogICAgICAgICAgICAgIHN1Y2ggbWF5IGhhdmUgc29tZSBjb25maWd1cmF0aW9uIGluY29uc2lzdGVuY2llcy4KICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgIDwvdmFyaWFibGVsaXN0PgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2hhdHMtdGhlLWhpc3Rvcnktb2YtV2luZSI+CiAgICAgICAgPHBhcmE+V2hhdCdzIHRoZSBoaXN0b3J5IG9mIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIFdpbmUgcHJvamVjdCBzdGFydGVkIGluIDE5OTMgYXMgYSB3YXkgdG8gc3VwcG9ydCBydW5uaW5nIFdpbmRvd3MgMy4xCiAgICAgICAgICBwcm9ncmFtcyBvbiBMaW51eC4gQm9iIEFtc3RhZHQgd2FzIHRoZSBvcmlnaW5hbCBjb29yZGluYXRvciwgYnV0IHR1cm5lZAogICAgICAgICAgaXQgb3ZlciBmYWlybHkgZWFybHkgb24gdG8gQWxleGFuZHJlIEp1bGxpYXJkLCB3aG8gaGFzIHJ1biBpdCBldmVyIAogICAgICAgICAgc2luY2UuIEEgPHVsaW5rIHVybD0ibmV3czpjb21wLmVtdWxhdG9ycy5tcy13aW5kb3dzLndpbmUiPm5ld3Nncm91cDwvdWxpbms+CiAgICAgICAgICB3YXMgY3JlYXRlZCBpbiBKdWx5IDE5OTQuIE92ZXIgdGhlIHllYXJzLCBwb3J0cyBmb3IKICAgICAgICAgIG90aGVyIFVuaXhlcyBoYXZlIGJlZW4gYWRkZWQsIGFsb25nIHdpdGggc3VwcG9ydCBmb3IgV2luMzIgYXMgV2luMzIgCiAgICAgICAgICBhcHBsaWNhdGlvbnMgYmVjYW1lIHBvcHVsYXIuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5jb20vYWJvdXQuc2h0bWwiPgogICAgICAgICAgaHR0cDovL3d3dy53aW5laHEuY29tL2Fib3V0LnNodG1sPC91bGluaz4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGF0LWlzLXRoZS1jdXJyZW50LXZlcnNpb24tb2YtV2luZSI+CiAgICAgICAgPHBhcmE+V2hhdCBpcyB0aGUgY3VycmVudCB2ZXJzaW9uIG9mIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQSBuZXcgdmVyc2lvbiBvZiBXaW5lIGlzIGRpc3RyaWJ1dGVkIGFib3V0IGV2ZXJ5IG1vbnRoLiBZb3Ugd2lsbCBiZSAKICAgICAgICAgIGFibGUgdG8ga2VlcCB1cCBvbiBhbGwgdGhlIGxhdGVzdCByZWxlYXNlcyBieSByZWFkaW5nIHRoZSBuZXdzZ3JvdXAKICAgICAgICAgIDx1bGluayB1cmw9Im5ld3M6Y29tcC5lbXVsYXRvcnMubXMtd2luZG93cy53aW5lIj4KICAgICAgICAgIGNvbXAuZW11bGF0b3JzLm1zLXdpbmRvd3Mud2luZTwvdWxpbms+LCBvciBieSB2aXNpdGluZyB0aGUKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLmNvbSI+V2luZSBIUSBob21lcGFnZTwvdWxpbms+LiBXaGVuCiAgICAgICAgICBkb3dubG9hZGluZyBXaW5lIGZyb20geW91ciBGVFAgc2l0ZSBvZiBjaG9pY2UgKHNlZQogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEuY29tL2Rvd25sb2FkLnNodG1sIj50aGUgRG93bmxvYWQgcGFnZTwvdWxpbms+CiAgICAgICAgICBmb3Igc29tZSBvZiB0aGVzZSBjaG9pY2VzKSwgeW91IGNhbiBtYWtlIHN1cmUgdGhhdCB5b3UgYXJlIGdldHRpbmcgCiAgICAgICAgICB0aGUgbGF0ZXN0IHZlcnNpb24gYnkgd2F0Y2hpbmcgdGhlIHZlcnNpb24gbnVtYmVycyBpbiB0aGUgZGlzdHJpYnV0aW9uCiAgICAgICAgICBmaWxlbmFtZS4gRm9yIGluc3RhbmNlLCB0aGUgZGlzdHJpYnV0aW9uIHJlbGVhc2VkIG9uIE9jdG9iZXIgMzEsIDIwMDIKICAgICAgICAgIHdhcyBjYWxsZWQgV2luZS0yMDAyMTAzMS50YXIuZ3ouIFBhdGNoIGZpbGVzIGFyZSBhbHNvIGF2YWlsYWJsZS4gSWYKICAgICAgICAgIHlvdSBhcmUgY3VycmVudCB0byB0aGUgcHJldmlvdXMgdmVyc2lvbiwgeW91IGNhbiBkb3dubG9hZCBhbmQgYXBwbHkgCiAgICAgICAgICBqdXN0IHRoZSBjdXJyZW50IHBhdGNoIGZpbGUgcmF0aGVyIHRoYW4gdGhlIGVudGlyZSBuZXcgZGlzdHJpYnV0aW9uLgogICAgICAgICAgVGhlIHBhdGNoIGZpbGVuYW1lcyBmb2xsb3cgdGhlIHNhbWUgY29udmVudGlvbnMgYXMgdGhlIG1vbnRobHkgCiAgICAgICAgICBkaXN0cmlidXRpb24uIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLmNvbS9kZXYuc2h0bWwiPgogICAgICAgICAgUmVhZC1vbmx5IENWUzwvdWxpbms+IGFjY2VzcyBpcyBhbHNvIGF2YWlsYWJsZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGF0LWlzLXRoZS1jdXJyZW50LVN0YXR1cy1vZi1XaW5lIj4KICAgICAgICA8cGFyYT5XaGF0IGlzIHRoZSBjdXJyZW50IFN0YXR1cyBvZiBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEFzIG9mIG1pZCAyMDAzLCBXaW5lIGNvbnNpc3RzIG9mIGFib3V0IDEuNCBtaWxsaW9uIGxpbmVzIG9mIGNvZGUsCiAgICAgICAgICB3cml0dGVuIGJ5IG1vcmUgdGhhbiA1NTAgZGV2ZWxvcGVycyBmcm9tIGRvemVucyBvZiBjb3VudHJpZXMgYXJvdW5kCiAgICAgICAgICB0aGUgd29ybGQuIFdpbmUgaXMgaW4gYWN0aXZlIHVzZSBieSBhbiBlc3RpbWF0ZWQgMTAwSyBwZW9wbGUuIFdpbmUKICAgICAgICAgIGltcGxlbWVudHMgbW9yZSB0aGFuIDkwJSBvZiB0aGUgY2FsbHMgaW4gcG9wdWxhciBXaW5kb3dzIAogICAgICAgICAgc3BlY2lmaWNhdGlvbnMgc3VjaCBhcyBFQ01BLTIzNCBhbmQgT3BlbjMyLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFlvdSBtYXkgYWxzbyB3YW50IHRvIGxvb2sgYXQgdGhlCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5jb20vYWJvdXQvaW5kZXgucGhwP3N0YXR1cyI+CiAgICAgICAgICBTdGF0dXMgcGFnZTwvdWxpbms+IGZvciBhIGdsb2JhbCB2aWV3IG9uIFdpbmUncyBpbXBsZW1lbnRhdGlvbiBwcm9ncmVzcy4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGVuLXdpbGwtV2luZS1iZS1maW5pc2hlZCI+CiAgICAgICAgPHBhcmE+V2hlbiB3aWxsIFdpbmUgYmUgZmluaXNoZWQ/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgTGFyZ2Ugc29mdHdhcmUgcHJvamVjdHMgYXJlIG5ldmVyIGZpbmlzaGVkLCBvbmx5IHJlbGVhc2VkLiBJbiBhbnkKICAgICAgICAgIGNhc2UgV2luZSBpcyBjaGFzaW5nIGEgbW92aW5nIHRhcmdldCBzaW5jZSBldmVyeSBuZXcgcmVsZWFzZSBvZiAKICAgICAgICAgIFdpbmRvd3MgY29udGFpbnMgbmV3IEFQSSBjYWxscyBvciB2YXJpYXRpb25zIG9uIHRoZSBleGlzdGluZyBvbmVzLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEJlY2F1c2UgV2luZSBpcyBiZWluZyBkZXZlbG9wZWQgYnkgdm9sdW50ZWVycywgaXQgaXMgZGlmZmljdWx0IHRvCiAgICAgICAgICBwcmVkaWN0IHdoZW4gaXQgd2lsbCBiZSByZWFkeSBmb3IgZ2VuZXJhbCByZWxlYXNlLiBCdXQgZHVlIHRvIHRoZQogICAgICAgICAgbXVjaCBpbmNyZWFzZWQgaW50ZXJlc3QgYnkgY29tcGFuaWVzIGluIHBvcnRpbmcgYXBwcyB2aWEgV2luZSwgV2luZQogICAgICAgICAgZGV2ZWxvcG1lbnQgaXMgY29uc3RhbnRseSBnZXR0aW5nIG1vcmUgYW5kIG1vcmUgYWN0aXZlLiBSaWdodCBub3cKICAgICAgICAgIHdlIGFyZSB3b3JraW5nIG9uIHJlbGVhc2luZyBXaW5lIDAuOSBpbiAyMDAzLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ildoby1pcy1yZXNwb25zaWJsZS1mb3ItV2luZSI+CiAgICAgICAgPHBhcmE+V2hvIGlzIHJlc3BvbnNpYmxlIGZvciBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgaXMgYXZhaWxhYmxlIHRoYW5rcyB0byB0aGUgd29yayBvZiBtYW55IHBlb3BsZS4gUGxlYXNlIHNlZSB0aGUKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLmNvbS9zb3VyY2UvQVVUSE9SUyI+QVVUSE9SUzwvdWxpbms+CiAgICAgICAgICBmaWxlIGluIHRoZSBkaXN0cmlidXRpb24gZm9yIHRoZSBjb21wbGV0ZSBsaXN0LiBTb21lIGNvbXBhbmllcyB0aGF0CiAgICAgICAgICBhcmUgb3IgaGF2ZSBiZWVuIGludm9sdmVkIHdpdGggV2luZSBkZXZlbG9wbWVudCBhcmUgQ29kZVdlYXZlcnMsCiAgICAgICAgICBUcmFuc0dhbWluZywgQ29yZWwsIGFuZCBNYWNhZGFtaWFuLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9ImZvbGtzLXdoby1jb250cmlidXRlZC1tb25leS1vci1lcXVpcG1lbnQiPgogICAgICAgIDxwYXJhPldobyBhcmUgdGhlIGZvbGtzIGFuZCBvcmdhbml6YXRpb25zIHdobyBoYXZlIGNvbnRyaWJ1dGVkIG1vbmV5IG9yIGVxdWlwbWVudCB0byB0aGUgV2luZSBwcm9qZWN0PzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFBlb3BsZSBhbmQgb3JnYW5pemF0aW9ucyB3aG8gaGF2ZSBnaXZlbiBnZW5lcm91cyBjb250cmlidXRpb25zIG9mCiAgICAgICAgICBtb25leSwgZXF1aXBtZW50LCBvciBsaWNlbnNlcywgaW5jbHVkZToKICAgICAgICA8L3BhcmE+CiAgICAgICAgPGl0ZW1pemVkbGlzdCBzcGFjaW5nPSJjb21wYWN0Ij4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+RGF2aWQgTC4gSGFycGVyPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+Qm9iIEhlcHBsZTwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPk1hcmsgQS4gSG9ydG9uPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+S2V2aW4gUC4gTGF3dG9uPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+VGhlIFN5bnRyb3B5IEluc3RpdHV0ZTwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPkphbWVzIFdvdWxmZTwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgVk1XYXJlIEluYy4gKDx1bGluayB1cmw9Imh0dHA6Ly93d3cudm13YXJlLmNvbSI+CiAgICAgICAgICAgICBodHRwOi8vd3d3LnZtd2FyZS5jb208L3VsaW5rPikKICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBDb3JlbCAoPHVsaW5rIHVybD0iaHR0cDovL3d3dy5jb3JlbC5jb20iPgogICAgICAgICAgICAgaHR0cDovL3d3dy5jb3JlbC5jb208L3VsaW5rPikKICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBDb2RlV2VhdmVycwogICAgICAgICAgICAgKDx1bGluayB1cmw9Imh0dHA6Ly93d3cuY29kZXdlYXZlcnMuY29tLyI+aHR0cDovL3d3dy5jb2Rld2VhdmVycy5jb208Lz4pCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGF0LXVuZG9jdW1lbnRlZC1BUElzLWFyZS1ub3QtdW5kZXJzdG9vZCI+CiAgICAgICAgPHBhcmE+V2hhdCB1bmRvY3VtZW50ZWQgQVBJcyAvIGludGVyZmFjZXMgYXJlIG5vdCB1bmRlcnN0b29kPyBXb3VsZAogICAgICAgICAgICAgIHNlZWluZyBNaWNyb3NvZnQgc291cmNlIGhlbHA/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIGJlc3Qgd291bGQgYmUgaWYgdGhlIFdpbmRvd3MgQVBJIHdhcyBmdWxseSBkb2N1bWVudGVkLCBzbyBXaW5lCiAgICAgICAgICBjb3VsZCBiZSBhIHBlcmZlY3QgImNsZWFuLXJvb20iIGltcGxlbWVudGF0aW9uLiBTZWVpbmcgdGhlIHNvdXJjZQogICAgICAgICAgY29kZSBtaWdodCBtYWtlIGl0IGhhcmRlciB0byBwcm92ZSB0aGF0IG5vIGNvcHlyaWdodCB2aW9sYXRpb25zIGhhdmUKICAgICAgICAgIHRha2VuIHBsYWNlLiBUaGF0IHNhaWQsIHRoZSBkb2N1bWVudGF0aW9uIGlzIG9mdGVuIGJhZCwgbm9uZXhpc3RlbnQsCiAgICAgICAgICBhbmQgZXZlbiBtaXNsZWFkaW5nIHdoZXJlIGl0IGV4aXN0cywgc28gYSBmYWlyIGFtb3VudCBvZiByZXZlcnNlCiAgICAgICAgICBlbmdpbmVlcmluZyBoYXMgYmVlbiBuZWNlc3NhcnksIHBhcnRpY3VsYXJseSBpbiB0aGUgc2hlbGwgKEV4cGxvcmVyKQogICAgICAgICAgaW50ZXJmYWNlLiBUaGUgYmlnZ2VzdCBwcm9ibGVtIGZhY2luZyBXaW5lIHRob3VnaCBpcyBzaW1wbHkgbGFjayBvZgoJICBtYW5wb3dlci4gQXQgb25lIHBvaW50LCBvdmVyIDUwMDAgcGVvcGxlIHdlcmUgd29ya2luZyBvbiBXaW5kb3dzIDIwMDAuCgkgIFdoaWxlIFdpbmUgZG9lc24ndCBuZWVkIHRvIHJlcGxpY2F0ZSBhbGwgb2YgV2luZG93cyAod2Ugb25seSBjb3ZlciB0aGUKCSAgcGFydHMgbmVlZGVkIHRvIG1ha2UgV2luZG93cyBwcm9ncmFtcyB3b3JrKSwgdGhhdCdzIHN0aWxsIG5lYXJseSAxMCB0aW1lcwoJICBtb3JlIHBlb3BsZSB3b3JraW5nIHNpbXBseSBvbiBvbmUgcmVsZWFzZSB0aGFuIGhhdmUgPGVtcGhhc2lzPmV2ZXI8L2VtcGhhc2lzPgoJICB3b3JrZWQgb24gV2luZSwgaW4gdGhlIGhpc3Rvcnkgb2YgdGhlIHByb2plY3QuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJcy1UcmFuc0dhbWluZ3MtbGFzdC1wYXRjaC1pbmNsdWRlZC1pbi1XaW5lIj4KICAgICAgICA8cGFyYT5JcyBUcmFuc0dhbWluZydzIGxhdGVzdCBwYXRjaCBpbmNsdWRlZCBpbiB0aGUgc3RhbmRhcmQgV2luZSByZWxlYXNlPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIE5vLCBpdCdzIG5vdC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUcmFuc0dhbWluZyBtYWtlcyBtb25leSB2aWEgYSBzdWJzY3JpcHRpb24gc2VydmljZSBhbmQgdGhlIGxpY2Vuc2UKICAgICAgICAgIG9mIHRoZWlyIFdpbmVYIHRyZWUgaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlIFdpbmUgbGljZW5zZS4gVGh1cwogICAgICAgICAgV2luZVggcGF0Y2hlcyBjYW5ub3QgYmUgaW50ZWdyYXRlZCBpbnRvIHRoZSBXaW5lIHRyZWUgd2l0aG91dAogICAgICAgICAgZXhwcmVzcyBwZXJtaXNzaW9uIGJ5IFRyYW5zR2FtaW5nLiBUaGV5IGhhdmUgc3VibWl0dGVkIHNvbWUKICAgICAgICAgIG9mIHRoZWlyIHdvcmsgZm9yIGludGVncmF0aW9uIGludG8gV2luZSwgbW9zdCBub3RhYmx5IERpcmVjdERyYXcKICAgICAgICAgIGFuZCBzb21lIERpcmVjdFNvdW5kIHdvcmssIGFuZCBzdWNoIHdvcmsgaGFzIGJlZW4gaW50ZWdyYXRlZCBpbnRvCiAgICAgICAgICB0aGUgV2luZSB0cmVlLiBIb3dldmVyIGl0IHNlZW1zIHVubGlrZWx5IHRoZXkgd2lsbCBzdWJtaXQgdGhlaXIKICAgICAgICAgIERpcmVjdDNEIHdvcmsuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2lsbC10aGVyZS1iZS1hLVdpbmRvd3MtdmVyc2lvbi1vZi1XaW5lIj4KICAgICAgICA8cGFyYT5XaWxsIHRoZXJlIGJlIGEgV2luZG93cyB2ZXJzaW9uIG9mIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgU29tZSBwZW9wbGUgYXJlIHdvcmtpbmcgb24gZ2V0dGluZyBXaW5lIGNvZGUgdG8gY29tcGlsZSBvbiBXaW5kb3dzCiAgICAgICAgICB1c2luZyBvbmUgb2YgdGhlIGZvbGxvd2luZyBwcm9qZWN0cyBhcyBhIGJhc2lzOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8aXRlbWl6ZWRsaXN0IHNwYWNpbmc9ImNvbXBhY3QiPgogICAgICAgICAgPGxpc3RpdGVtPiAKICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgQ3lnd2luCiAgICAgICAgICAgICAgKDx1bGluayB1cmw9Imh0dHA6L3d3dy5jeWd3aW4uY29tLyI+aHR0cDovL3d3dy5jeWd3aW4uY29tPC8+KQogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBNaW5HVwogICAgICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi93d3cubWluZ3cub3JnLyI+aHR0cDovL3d3dy5taW5ndy5vcmc8Lz4pCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIFJlYWN0T1MKICAgICAgICAgICAgICAoPHVsaW5rIHVybD0iaHR0cDovL3d3dy5yZWFjdG9zLmNvbS8iPmh0dHA6Ly93d3cucmVhY3Rvcy5jb208Lz4pCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGVyZSdzIHNvbWUgcHJvZ3Jlc3MsIHNvIGEgV2luZSB2ZXJzaW9uIHRoYXQncyB1c2FibGUgb24gV2luZG93cwogICAgICAgICAgbWlnaHQgYmUgYXZhaWxhYmxlIGF0IHNvbWUgdGltZS4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBQYXJ0IG9mIHRoZSByYXRpb25hbGUgZm9yIHRoZXNlIHByb2plY3RzIGlzIHRvIGZpbmQgb3V0IGFyZWFzIHdoZXJlCiAgICAgICAgICBXaW5lIHBvcnRhYmlsaXR5IGlzIGxhY2tpbmcuIFRoaXMgaXMgZXNwZWNpYWxseSB0cnVlIG9mIHRoZQogICAgICAgICAgUmVhY3RPUyBwcm9qZWN0IHdoaWNoIGlzIGEgcmVpbXBsZW1lbnRhdGlvbiBvZiB0aGUgV2luZG93cyBrZXJuZWwKICAgICAgICAgIGFuZCBzaG91bGQgdGh1cyBiZSBhYmxlIHRvIHJldXNlIG1vc3Qgb2YgV2luZSBkbGxzLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEFub3RoZXIgcmVhc29uIGZvciBwdXJzdWluZyB0aGVzZSBwcm9qZWN0cyBpcyB0byBiZSBhYmxlIHRvCiAgICAgICAgICByZXBsYWNlIGEgc2luZ2xlIFdpbmRvd3MgZGxsIHdpdGggaXRzIFdpbmUgY291bnRlcnBhcnQuIEJlc2lkZXMKICAgICAgICAgIGJlaW5nIGEgZ29vZCB0ZXN0IGZvciB0aGUgV2luZSBkbGwsIHRoaXMgbGV0cyB1cyBkZXRlY3QgY2FzZXMgd2hlcmUKICAgICAgICAgIHdlIG1hZGUgaW5jb3JyZWN0IGFzc3VtcHRpb25zIGFib3V0IGhvdyB0aGUgZGxscyBpbnRlcmFjdC4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgPC9xYW5kYWRpdj4KICAgIDxxYW5kYWRpdiBpZD0iV2hhdC1kby1JLW5lZWQtaW4tb3JkZXItdG8tdXNlLVdpbmUiPgogICAgICA8dGl0bGU+V2hhdCBkbyBJIG5lZWQgaW4gb3JkZXIgdG8gdXNlIFdpbmU/PC90aXRsZT4KICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iVW5kZXItd2hhdC1wbGF0Zm9ybXMtd2lsbC1XaW5lLXJ1biI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBVbmRlciB3aGF0IGhhcmR3YXJlIHBsYXRmb3JtKHMpIGFuZCBvcGVyYXRpbmcgc3lzdGVtKHMpIHdpbGwKICAgICAgICAgIFdpbmUoTGliKSBydW4/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSBpcyBiZWluZyBkZXZlbG9wZWQgc3BlY2lmaWNhbGx5IHRvIHJ1biBvbiB0aGUgPGVtcGhhc2lzPkludGVsIHg4NjwvZW1waGFzaXM+IGNsYXNzIG9mIENQVXMgdW5kZXIgY2VydGFpbiBVTklYZXMgdGhhdCBydW4gb24gdGhlIHg4NiBwbGF0Zm9ybS4KCSAgV2luZWxpYiBob3dldmVyIGlzIGNhcGFibGUgb2YgcG9ydGluZyBXaW5kb3dzIHByb2dyYW0gPGVtcGhhc2lzPnNvdXJjZSBjb2RlPC9lbXBoYXNpcz4gdG8gb3RoZXIgcGxhdGZvcm1zIGFsc28sIG5vdCBvbmx5IHg4Ni4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaHVzIHJ1bm5pbmcgV2luZG93cyBwcm9ncmFtcyB2aWEgV2luZSBvbiBvdGhlciBwbGF0Zm9ybXMgKGUuZy4gTWFjT1MgWCkgaXMgPGVtcGhhc2lzPm5vdDwvZW1waGFzaXM+IHBvc3NpYmxlOyB0aGUgb25seSB3YXkgdG8gcnVuIFdpbmRvd3MgY29kZQoJICBvbiBNYWNPUyBYIHdvdWxkIGJlIHRvIHRha2UgV2luZG93cyBwcm9ncmFtIHNvdXJjZSBjb2RlIGFuZCByZWNvbXBpbGUgaXQgZm9yIGUuZy4gTWFjT1MgWCB1c2luZyBXaW5lbGliLgoJPC9wYXJhPgoJPHBhcmE+CgkgIFRoZSBmb2xsb3dpbmcgd2lsbCBsaXN0IHRoZSB4ODYgb3BlcmF0aW5nIHN5c3RlbXMgc3VwcG9ydGVkIGJ5CgkgIFdpbmU7IFdpbmVsaWIgc3VwcG9ydCBmb3Igb3RoZXIgcGxhdGZvcm1zIGtlZXBzIGV2b2x2aW5nLAoJICBzbyBpdCdzIG5vdCBzcGVjaWZpY2FsbHkgbGlzdGVkIGhlcmUuCgk8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBOZXRCU0QsIE9wZW5CU0QsIFVuaXh3YXJlLCBhbmQgU0NPIE9wZW5TZXJ2ZXIgNSB3b3JrZWQgYXQgb25lIHRpbWUsCiAgICAgICAgICBidXQgV2luZSBub3cgcmVxdWlyZXMga2VybmVsLWxldmVsIHRocmVhZHMgd2hpY2ggYXJlIG5vdCBjdXJyZW50bHkgCiAgICAgICAgICBhdmFpbGFibGUgKG9yIHVuZGVyc3Rvb2QgYnkgdGhlIFdpbmUgdGVhbSkgb24gdGhvc2UgcGxhdGZvcm1zLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSBXaW5lIGRldmVsb3BtZW50IHRlYW0gaG9wZXMgdG8gYXR0cmFjdCB0aGUgaW50ZXJlc3Qgb2Ygb3RoZXIKICAgICAgICAgIGNvbW1lcmNpYWwgVU5JWCBhbmQgVU5JWCBjbG9uZSB2ZW5kb3JzIGFzIHdlbGwuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQmVPUzogcG9ydGluZyBlZmZvcnRzIHVzZWQgdG8gYmUgcHJldHR5IHN0cm9uZywgYnV0IEJlT1MgaGFzIHNldmVyZQogICAgICAgICAgbGltaXRhdGlvbnMgaW4gVW5peCBjYWxsIHN1cHBvcnQsIHNvIGEgcG9ydCB3aWxsIHByb2JhYmx5IG5ldmVyCiAgICAgICAgICBoYXBwZW4uCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgRnJlZUJTRDogU2hvdWxkIHdvcmssIHdpdGggbGltaXRhdGlvbnMgaW4gc3BlY2lmaWMgYXJlYXMgKG1haW5seSAKICAgICAgICAgIG1pc3NpbmcgZGV2aWNlL2hhcmR3YXJlIHN1cHBvcnQpLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIExpbnV4L3g4NjogV29ya3MsIGFuZCBhcyB0aGUgbW9zdCBwb3B1bGFyIHBsYXRmb3JtIGZvciBib3RoCiAgICAgICAgICBkZXZlbG9wZXJzIGFuZCB1c2VycywgaXQgaXMgdGhlIGJlc3Qgc3VwcG9ydGVkIHBsYXRmb3JtIG9mIGFsbC4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGF0LW1pbmltdW0tQ1BVLW11c3QtSS1oYXZlIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdoYXQgbWluaW11bSBDUFUgbXVzdCBJIGhhdmUgaW4gbXkgY29tcHV0ZXIgdG8gYmUgYWJsZSB0byBydW4gV2luZSAKICAgICAgICAgIGFuZCBNUyBXaW5kb3dzIGFwcGxpY2F0aW9ucyBzbW9vdGhseT8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXZSBuZWVkIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiBXaW5lIGFuZCBXaW5lbGliIGhlcmUuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSB3b24ndCBydW4gb24gYW55IHg4NiBDUFUgbGVzcyB0aGFuIGFuIDgwMzg2IGR1ZSB0byBhZGRyZXNzCiAgICAgICAgICBtYW5hZ2VtZW50IGxpbWl0YXRpb25zLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEl0IGlzIGtub3duIHRvIGFsc28gd29yayBpbiB0aGUgODA0ODYgYW5kIHVwd2FyZHMgY29tcGF0aWJsZSBDUFVzLgogICAgICAgICAgVGhlIGJhc2ljIHRlc3QgaXMsIGlmIHlvdSBjYW4gcnVuIFgxMSBub3csIHlvdSBzaG91bGQgYmUgYWJsZSB0byBydW4KICAgICAgICAgIFdpbmUgYW5kIE1TIFdpbmRvd3MgYXBwbGljYXRpb25zIHVuZGVyIGl0LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEFzIGFsd2F5cywgdGhlIGZhc3RlciB5b3VyIENQVSwgdGhlIGJldHRlci4gSGF2aW5nIGEgbWF0aCBjb3Byb2Nlc3NvcgogICAgICAgICAgaXMgdW5pbXBvcnRhbnQuIEhvd2V2ZXIsIGhhdmluZyBhIGdyYXBoaWNzIGFjY2VsZXJhdGVkIHZpZGVvIGNhcmQKICAgICAgICAgIHN1cHBvcnRlZCBieSBYIHdpbGwgaGVscCBncmVhdGx5LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIERlcGVuZGluZyBvbiB5b3VyIGFwcGxpY2F0aW9uIHlvdSBtYXkgZmluZCB0aGF0IGZhc3RlciBzcGVlZHMgYXJlCiAgICAgICAgICByZXF1aXJlZCBmb3Igc2Vuc2libGUgdXNlLiBXZSBjYW4ndCBnaXZlIHNwZWNpZmljIGFkdmljZSBvbiB0aGF0IGR1ZQogICAgICAgICAgdG8gdGhlIHZhc3QgcmFuZ2Ugb2YgYXBwbGljYXRpb25zIG91dCB0aGVyZS4gSG93ZXZlciB0aGUgcnVsZSBvZgogICAgICAgICAgdGh1bWIgaXMgdGhhdCBpZiB5b3VyIGFwcGxpY2F0aW9uIHJ1bnMgZmluZSBvbiBXaW5kb3dzLCBpdCBzaG91bGQKICAgICAgICAgIHJ1biBmaW5lIG9uIHRoZSBzYW1lIHBsYXRmb3JtIGluIFdpbmUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LW11Y2gtZGlzay1zcGFjZS13aWxsLVdpbmUtdGFrZSI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgIEhvdyBtdWNoIGRpc2sgc3BhY2Ugd2lsbCB0aGUgV2luZSBzb3VyY2UgY29kZSBhbmQgYmluYXJpZXMgdGFrZSBvbiBteQogICAgICAgICBoYXJkIGRyaXZlPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFlvdSBuZWVkIGFwcHJveGltYXRlbHkgMjUwIG1lZ2FieXRlcyBvZiBmcmVlIGhhcmQgZHJpdmUgc3BhY2UgdG8KICAgICAgICAgIHN0b3JlIGFuZCBjb21waWxlIHRoZSBzb3VyY2UgY29kZS4gV2luZSBhbHNvIG5lZWRzIGFib3V0IDE4IG1lZ3MgaW4KICAgICAgICAgIHlvdXIgL3RtcCBkaXJlY3RvcnkuIEFuZCBhYm91dCA1MCBNQiBhcmUgbmVlZGVkIHRvIGRvIGEgbWFrZSBpbnN0YWxsLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEJpbmFyeSBwYWNrYWdlcywgZXNwZWNpYWxseSB0aG9zZSBub3QgY29udGFpbmluZyBkZWJ1ZyBpbmZvcm1hdGlvbiwKICAgICAgICAgIGhhdmUgbXVjaCBsb3dlciBkaXNrIHNwYWNlIHJlcXVpcmVtZW50cywgdXN1YWxseSBpbiB0aGUgMjBNQiByYW5nZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGF0LW90aGVyLXNvZnR3YXJlLWRvLUktbmVlZC10by1jb21waWxlIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdoYXQgb3RoZXIgc29mdHdhcmUgZG8gSSBuZWVkIHRvIGluc3RhbGwsIGNvbXBpbGUgYW5kIHJ1bgogICAgICAgICAgV2luZT8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBNYW55IGRldmVsb3BtZW50IHRvb2xzIGFyZSBuZWVkZWQgaW4gb3JkZXIgdG8gY29tcGlsZSBXaW5lLgogICAgICAgICAgQSBsaXN0IG9mIHJlcXVpcmVkIHBhY2thZ2VzIGZvciBzZXZlcmFsIGRpc3RyaWJ1dGlvbnMgaXMgaW5jbHVkZWQgaW4KICAgICAgICAgIHRoZSBSRUFETUUgKDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLmNvbS9zb3VyY2UvUkVBRE1FIj4KICAgICAgICAgIGh0dHA6Ly93d3cud2luZWhxLmNvbS9zb3VyY2UvUkVBRE1FPC91bGluaz4pLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRvIHJ1biBXaW5lLCB5b3Ugd2lsbCBuZWVkIHRoZSBmb2xsb3dpbmc6CiAgICAgICAgPC9wYXJhPgoKICAgICAgICA8aXRlbWl6ZWRsaXN0IHNwYWNpbmc9ImNvbXBhY3QiPgogICAgICAgICAgPGxpc3RpdGVtPiAKICAgICAgICAgICAgPHBhcmE+VGhlIGNvbXBpbGVkIFdpbmUgYmluYXJ5PC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+QSBwcm9wZXJseSBjb25maWd1cmVkIHdpbmUuY29uZiBmaWxlIChvciB+Ly53aW5lcmMgZmlsZSk8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT5BbiBpbnN0YWxsZWQgYW5kIHdvcmtpbmcgWCBXaW5kb3cgc3lzdGVtPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+U29tZSBXaW5kb3dzIHByb2dyYW1zIHRvIHRlc3Q8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LW11Y2gtUkFNLWRvLUktbmVlZCI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBIb3cgbXVjaCBSQU0gZG8gSSBuZWVkIHRvIGhhdmUgb24gbXkgVU5JWCBzeXN0ZW0gdG8gYmUgYWJsZSB0byBydW4gCiAgICAgICAgICBXaW5lIGFuZCBNUyBXaW5kb3dzIGFwcGxpY2F0aW9ucyBzbW9vdGhseT8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB5b3UgY2FuIHJ1biBYIHNtb290aGx5IG9uIHlvdXIgVU5JWCBzeXN0ZW0gbm93LCB5b3Ugc2hvdWxkIGJlIAogICAgICAgICAgYWJsZSB0byBydW4gV2luZSBhbmQgTVMgV2luZG93cyBhcHBsaWNhdGlvbnMganVzdCBmaW5lIHRvbywgZGVwZW5kaW5nCiAgICAgICAgICBvbiBob3cgbWVtb3J5IGh1bmdyeSB0aGUgYXBwbGljYXRpb24gaXMuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQSBXaW5lIHdvcmtzdGF0aW9uIHdpbGwgd29yayB3aXRoIDE2IG1lZ2FieXRlcyBvZiBSQU0gYW5kIGEgMTYgCiAgICAgICAgICBtZWdhYnl0ZSBzd2FwIHBhcnRpdGlvbiBhcyBsb25nIGFzIHlvdSBoYXZlIGEgcmVhc29uYWJsZSBncmFwaGljcyAKICAgICAgICAgIGNhcmQuIE1vc3QgYXBwbGljYXRpb25zIHdpbGwgcnVuIHJlYXNvbmFibHkgd2l0aCA2NC82NCBNYiwgCiAgICAgICAgICBpbnRlcmFjdGl2ZSBnYW1lcyBhcmUgbGlrZWx5IHRvIG5lZWQgbW9yZS4gWW91IGNhbiBydW4gV2luZSB3aXRoIDgvOCwKICAgICAgICAgIGJ1dCBpdCBpcyBnb2luZyB0byBiZSB1bnVzYWJseSBzbG93IGFuZCB2ZXJ5IGNvbnN0cmFpbmluZyBvbiB0aGUgCiAgICAgICAgICBhcHBsaWNhdGlvbnMgeW91IGNhbiBydW4uIElmIHlvdSB3aXNoIHRvIGJlIHBhcnQgb2YgdGhlIGRldmVsb3BtZW50CiAgICAgICAgICB0ZWFtIGFuZCBwcm9ncmFtIFdpbmUgaXRzZWxmLCBiZSBhd2FyZSB0aGF0IHRoZSBkZWJ1Z2dlciBpcyByYXRoZXIgCiAgICAgICAgICBtZW1vcnkgaW50ZW5zaXZlLiBTb21lIGhhdmUgc3VnZ2VzdGVkIHRoYXQgNjQgbWVnYWJ5dGVzIGlzIHRoZQogICAgICAgICAgbWluaW11bSBSQU0gbmVlZGVkIGZvciBXaW5lIGRldmVsb3BtZW50LCBhbHRob3VnaCBzb21lIGFyZSBhYmxlIHRvIAogICAgICAgICAgd29yayAoYWxiZWl0IHNsb3dseSkgd2l0aCAyNCBtZWdhYnl0ZXMgb2YgcGh5c2ljYWwgUkFNIGFuZCBsb3RzIG9mCiAgICAgICAgICBzd2FwIHNwYWNlLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikhvdy1sb25nLWRvZXMtV2luZS10YWtlLXRvLWJ1aWxkIj4KICAgICAgICA8cGFyYT5Ib3cgbG9uZyBkb2VzIFdpbmUgdGFrZSB0byBidWlsZDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgaXMgZ2V0dGluZyB0byBiZSBxdWl0ZSBsYXJnZSwgYW5kIGJ1aWxkaW5nIGZyb20gc2NyYXRjaCB0YWtlcyBhCiAgICAgICAgICBsb3Qgb2YgcHJvY2Vzc2luZy4gQXMgb2YgU2VwdGVtYmVyIDIwMDIsIGNvbXBpbGUgdGltZXMgd2VyZSBhcm91bmQgMjAKICAgICAgICAgIG1pbnV0ZXMgb24gYW4gQXRobG9uIDEyMDAgd2l0aCA2NDAgTWIgYW5kIDQ1LTUwIG1pbnV0ZXMgb24gYSBDeXJpeCAKICAgICAgICAgIDMwMCB3aXRoIDY0IE1iLiBJZiB5b3UgaGF2ZSBhIENWUyBjb3B5LCB5b3UgbWF5IG5vdCBuZWVkIHRvIHJlYnVpbGQKICAgICAgICAgIHRoZSB3aG9sZSB0aGluZyBldmVyeSB0aW1lIHlvdSB1cGRhdGUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJLWhhdmUtYS1Ecml2ZXNwYWNlZC1wYXJ0aXRpb24iPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSSBoYXZlIGEgRHJpdmVzcGFjZWQsIERvdWJsZXNwYWNlZCBvciBTdGFja2VyZWQgRE9TIHBhcnRpdGlvbi4gQ2FuIAogICAgICAgICAgV2luZSBydW4gTVMgV2luZG93cyBiaW5hcmllcyBsb2NhdGVkIGluIHN1Y2ggYSBwYXJ0aXRpb24/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWWVzLCBidXQgb25seSBpZiB0aGUgb3BlcmF0aW5nIHN5c3RlbSBzdXBwb3J0cyBtb3VudGluZyB0aG9zZSB0eXBlcwogICAgICAgICAgb2YgZHJpdmVzLiBUaGVyZSBpcyBhIExpbnV4IGZpbGUgc3lzdGVtIGRyaXZlciBjYWxsZWQgZG1zZG9zIHRoYXQKICAgICAgICAgIHdpbGwgYWxsb3cgcmVhZC93cml0ZSBhY2Nlc3MgdG8gRG91Ymxlc3BhY2VkIGFuZCBEcml2ZXNwYWNlIDEuMAogICAgICAgICAgZHJpdmVzLiBNb3JlIHNwZWNpZmljYWxseSwgaXQgc3VwcG9ydHMgbW91bnRpbmcgRE9TIDYuMCBhbmQgNi4yIAogICAgICAgICAgRG91Ymxlc3BhY2VkLCBET1MgNi4yMiBEcml2ZXNwYWNlZCwgYW5kIFdpbmRvd3MgOTUgRG91Ymxlc3BhY2VkIAogICAgICAgICAgY29tcHJlc3NlZCBwYXJ0aXRpb25zIChyZWFkIGFuZCB3cml0ZSBhY2Nlc3Mgd29ya3MgZmluZSwgYnV0IHdyaXRlIAogICAgICAgICAgYWNjZXNzIGlzIHNsb3cpLiBJdCBjYW4gYmUgZm91bmQgYXQgCiAgICAgICAgICA8dWxpbmsgdXJsPSJmdHA6Ly9tZXRhbGFiLnVuYy5lZHUvcHViL0xpbnV4L3N5c3RlbS9maWxlc3lzdGVtcy9kb3Nmcy8iPgogICAgICAgICAgZnRwOi8vbWV0YWxhYi51bmMuZWR1L3B1Yi9MaW51eC9zeXN0ZW0vZmlsZSBzeXN0ZW1zL2Rvc2ZzLzwvdWxpbms+CiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iRG8tSS1uZWVkLXRvLWhhdmUtYS1ET1MtcGFydGl0aW9uIj4KICAgICAgICA8cGFyYT5EbyBJIG5lZWQgdG8gaGF2ZSBhIERPUyBwYXJ0aXRpb24gb24gbXkgc3lzdGVtIHRvIHVzZSBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFlvdSBkbyBub3QgbmVlZCBhIGxpY2Vuc2VkIGFuZCBpbnN0YWxsZWQgY29weSBvZiBET1Mgb3IgTVMgV2luZG93cyB0bwogICAgICAgICAgaW5zdGFsbCwgY29uZmlndXJlIGFuZCBydW4gV2luZS4gSG93ZXZlciwgV2luZSBoYXMgdG8gYmUgYWJsZSB0byAKICAgICAgICAgICdzZWUnIGFuIE1TIFdpbmRvd3MgYmluYXJ5IChpLmUuIGFwcGxpY2F0aW9uKSBpZiBpdCBpcyB0byBydW4gaXQuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IkRvZXMtTVMtV2luZG93cy1uZWVkLXRvLWJlLWluc3RhbGxlZCI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBEb2VzIE1TIFdpbmRvd3MgbmVlZCB0byBiZSBsb2FkZWQgaW50byB0aGF0IHBhcnRpdGlvbiBpbiBvcmRlciB0bwogICAgICAgICAgcnVuIE1TIFdpbmRvd3MgcHJvZ3JhbXMgdW5kZXIgV2luZT8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBNYW55IGZvbGtzIGhhdmUgc3VjY2Vzc2Z1bGx5IGluc3RhbGxlZCBhbmQgcnVuIHByb2dyYW1zCiAgICAgICAgICBpbiB0aGVpciBVTklYIGZpbGVzeXN0ZW0gd2l0aG91dCBoYXZpbmcgYSBET1MgcGFydGl0aW9uIG9yIE1TIAogICAgICAgICAgV2luZG93cy4gSG93ZXZlciwgaW4gbWFueSBjYXNlcyB5b3UgbmVlZCBhIGRpcmVjdG9yeSBhbmQgZmlsZSAKICAgICAgICAgIGluZnJhc3RydWN0dXJlIHRoYXQgaXMgc2ltaWxhciB0byBhbiBleGlzdGluZyBXaW5kb3dzIGluc3RhbGxhdGlvbi4KICAgICAgICAgIFNvbWUgYXBwbGljYXRpb25zJyBpbnN0YWxsYXRpb24gcHJvZ3JhbXMgd2FudCB0byBkaXN0cmlidXRlIHNvbWUgb2YKICAgICAgICAgIHRoZSBwYWNrYWdlJ3MgZmlsZXMgaW50byB0aGUgL3dpbmRvd3MgYW5kIC93aW5kb3dzL3N5c3RlbSAKICAgICAgICAgIGRpcmVjdG9yaWVzIGluIG9yZGVyIHRvIHJ1biwgYW5kIHVubGVzcyB0aGVzZSBleGlzdCBvbiB5b3VyIFVOSVggCiAgICAgICAgICBmaWxlIHN5c3RlbSwgdGhvc2UgcHJvZ3JhbXMgd2lsbCBub3QgaW5zdGFsbCBjb3JyZWN0bHkgYW5kIHByb2JhYmx5CiAgICAgICAgICB3aWxsIG5vdCBydW4gd2VsbCwgaWYgYXQgYWxsLiBNb3N0IHBhY2thZ2VzIHdpbGwgc2V0IHRoYXQgdXAgZm9yIHlvdQoJICBhcyBwYXJ0IG9mIHRoZSBpbnN0YWxsIHByb2Nlc3MuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgeW91IGhhdmUgYSBET1MgcGFydGl0aW9uIHdpdGggTVMgV2luZG93cyBpbnN0YWxsZWQgaW4gaXQsIG1ha2UKICAgICAgICAgIHN1cmUgdGhhdCB5b3VyIFVOSVggc3lzdGVtIGNhbiAnc2VlJyB0aGlzIHBhcnRpdGlvbiAoY2hlY2sgeW91ciAKICAgICAgICAgIC9ldGMvZnN0YWIgZmlsZSBvciBtb3VudCB0aGUgcGFydGl0aW9uIG1hbnVhbGx5KSBzbyB0aGF0IFdpbmUgY2FuCiAgICAgICAgICBydW4gdGhlIE1TIFdpbmRvd3MgYmluYXJpZXMgbG9jYXRlZCBpbiB0aGUgRE9TIHBhcnRpdGlvbi4gVG8gcnVuCiAgICAgICAgICB3aXRob3V0IGEgRE9TIHBhcnRpdGlvbiwgeW91IG5lZWQgdG8gc2V0IGEgVU5JWCBwYXRoIHRvIGJlIHlvdXIgCiAgICAgICAgICBkcml2ZSBDLCBhbmQgbWFrZSBzdXJlIHRoYXQgdGhlIC93aW5kb3dzIGFuZCAvd2luZG93cy9zeXN0ZW0gCiAgICAgICAgICBkaXJlY3RvcmllcyBwb2ludCB0byBzb21lIHBsYWNlIHRoYXQgYWN0dWFsbHkgZXhpc3QuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSGVyZSdzIGFuIGV4YW1wbGUsIGNvcGllZCBmcm9tIGEgbWFjaGluZSB3aGljaCBoYXMgbm8gRE9TIHBhcnRpdGlvbgogICAgICAgICAgYnV0IHN1Y2Nlc3NmdWxseSBydW5zIFdpbmU6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxzY3JlZW4+CiAgICBbRHJpdmUgQ10gICAgICAKICAgICAgICAgIFBhdGg9L3Zhci9saWIvd2luZQogICAgICAgICAgVHlwZT1oZAogICAgICAgICAgTGFiZWw9TVMtRE9TCiAgICAgICAgICBGaWxlc3lzdGVtPXdpbjk1CiAgICBbd2luZV0KICAgICAgICAgIFdpbmRvd3M9Yzpcd2luZG93cwogICAgICAgICAgU3lzdGVtPWM6XHdpbmRvd3Ncc3lzdGVtCiAgICAgICAgICBUZW1wPWU6XAogICAgICAgICAgUGF0aD1jOlx3aW5kb3dzO2M6XHdpbmRvd3Ncc3lzdGVtO2M6CiAgICAgICAgPC9zY3JlZW4+CiAgICAgICAgPHBhcmE+CiAgICAgICAgIEluIDxmaWxlbmFtZT4vdmFyL2xpYi93aW5lL3dpbmRvd3M8L2ZpbGVuYW1lPiwgeW91IHdpbGwgbmVlZCB0bwogICAgICAgICBpbnN0YWxsIGEgPGZpbGVuYW1lPndpbi5pbmk8L2ZpbGVuYW1lPiBjb25maWcgZmlsZSB0aGF0IHlvdSBtaWdodAogICAgICAgICBmaW5kIG9uIGEgdHlwaWNhbCBNUyBXaW5kb3dzIDMuMSBtYWNoaW5lLiBUaGUgZGlyZWN0b3J5CiAgICAgICAgIDxmaWxlbmFtZT4vdmFyL2xpYi93aW5lL3dpbmRvd3Mvc3lzdGVtPC9maWxlbmFtZT4gc2hvdWxkIGV4aXN0LCBidXQKICAgICAgICAgZG9lc24ndCBuZWVkIHRvIGNvbnRhaW4gYW55dGhpbmcuIEhvd2V2ZXIsIHRvIHVzZSBNUyBETExzLCB5b3UgY2FuCiAgICAgICAgIGNvcHkgdGhlbSBpbnRvIHRoYXQgZGlyZWN0b3J5LiBOb3RlIHRoYXQgdGhpcyBpcyBhIGNvbnRyYXZlbnRpb24gb2YKICAgICAgICAgdGhlIFdpbmRvd3MgbGljZW5jZSB1bmxlc3MgV2luZG93cyBpcyBwcm9wZXJseSBpbnN0YWxsZWQgb24gdGhlCiAgICAgICAgIG1hY2hpbmUuIElmIHlvdSBoYXZlIERPUy9NUyBXaW5kb3dzIGluc3RhbGxlZCBvbiB5b3VyIHN5c3RlbSwgeW91IGNhbgogICAgICAgICBtb3VudCB0aGF0IHBhcnRpdGlvbiBhdCBib290dXAgYnkgbW9kaWZ5aW5nIHRoZSBmaWxlIAogICAgICAgICA8ZmlsZW5hbWU+L2V0Yy9mc3RhYjwvZmlsZW5hbWU+IGluIHlvdXIgVU5JWCBwYXJ0aXRpb24gKGFzc3VtaW5nIHRoYXQKICAgICAgICAgdGhlIFVOSVgga2VybmVsIHN1cHBvcnRzIHRoZSBET1MvTVMgV2luZG93cyBmaWxlc3lzdGVtIHR5cGUpLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIHlvdSBlZGl0IHRoaXMgZmlsZSBieSBoYW5kLCBpdCBzaG91bGQgY29udGFpbiBzb21ldGhpbmcgc2ltaWxhcgogICAgICAgICAgdG8gdGhlIGZvbGxvd2luZzoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNjcmVlbj4KL2Rldi9oZGExIC9kb3NjIG1zZG9zIHVpZD0wLGdpZD0xMDAsdW1hc2s9MDA3IDAgMAogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhpcyB3aWxsIGFsbG93IHlvdSB0byByZWFkIGFuZCB3cml0ZSB0byB0aGUgRE9TIHBhcnRpdGlvbiB3aXRob3V0CiAgICAgICAgICBiZWluZyByb290LgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KIAogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJZi1XaW5lLWNvbXBsZXRlbHktcmVwbGFjZXMtTVMtV2luZG93cyI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiBXaW5lIGNvbXBsZXRlbHkgcmVwbGFjZXMgTVMgV2luZG93cywgd2lsbCBpdCBkdXBsaWNhdGUgYWxsIG9mIHRoZQogICAgICAgICAgZnVuY3Rpb25zIG9mIE1TIFdpbmRvd3M/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSdzIGdvYWwgaXMgdG8gbWFrZSBpdCBwb3NzaWJsZSB0byBydW4gV2luZG93cyBhcHBsaWNhdGlvbnMgb24KICAgICAgICAgIFVuaXguIFRvIHRoaXMgZW5kIGl0IHdpbGwgcHJvdmlkZSByZXBsYWNlbWVudHMgZm9yIGp1c3QgdGhvc2UKICAgICAgICAgIERMTHMgYW5kIEFQSXMgdGhhdCBhcmUgbmVlZGVkIGJ5IHRoZXNlIFdpbmRvd3MgYXBwbGljYXRpb25zLgogICAgICAgICAgVGhpcyBtZWFucyB0aGF0IFdpbmUgd2lsbCBub3QgcHJvdmlkZSByZXBsYWNlbWVudHMgZm9yIERMTHMgdGhhdAogICAgICAgICAgYXJlIG5vdCBzaGlwcGVkIHdpdGggV2luZG93cyBvciBhcmUgYWx3YXlzIHNoaXBwZWQgd2l0aCBXaW5kb3dzCiAgICAgICAgICBhcHBsaWNhdGlvbiAoZS5nLiB0aGUgVmlzdWFsIEJhc2ljIHJ1bnRpbWUpLiBUaGlzIGFsc28KICAgICAgICAgIG1lYW5zIHRoYXQgaW1wbGVtZW50aW5nIGFuIEFQSSB0aGF0IG5vIGFwcGxpY2F0aW9uIGV2ZXIgdXNlcyBpcyBub3QKICAgICAgICAgIGEgcHJpb3JpdHkuIFNpbWlsYXJseSwgdW50aWwgdGhlcmUgYXJlIGFwcGxpY2F0aW9ucyBvdXQgdGhlcmUgdGhhdAogICAgICAgICAgdXNlIHRoZSBXaW42NCBBUEksIGl0IHdpbGwgbm90IGJlIGEgcHJpb3JpdHkuIFRoYXQgYmVpbmcgc2FpZCwKICAgICAgICAgIHdlIHdpbGwgY2VydGFpbmx5IHRyeSB0byBrZWVwIG91ciBvcHRpb25zIG9wZW4gYW5kIHRvIGltcHJvdmUgb3VyIEFQSQogICAgICAgICAgY292ZXJhZ2UgYXMgd2UgY2FuLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEFsc28gV2luZSBpcyBub3QgYW4gb3BlcmF0aW5nIHN5c3RlbSwgc28gdGhhdCB3cml0aW5nIGRldmljZQogICAgICAgICAgZHJpdmVycyBpcyBub3QgcGFydCBvZiBXaW5lJ3MgZ29hbHMuIEhvd2V2ZXIgaWYgeW91IGFyZSBpbnRlcmVzdGVkCiAgICAgICAgICBpbiBkZXZpY2UgZHJpdmVycywgdGhlIDx1bGluayB1cmw9Imh0dHA6Ly93d3cua2VybmVsLm9yZy8iPkxpbnV4PC8+LAogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy5mcmVlYnNkLm9yZy8iPkZyZWVCU0Q8Lz4gYW5kCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LnJlYWN0b3MuY29tLyI+UmVhY3RPUzwvPiBrZXJuZWwgZGV2ZWxvcHBlcnMKICAgICAgICAgIHdvdWxkIGNlcnRhaW5seSBhcHByZWNpYXRlIHlvdXIgY29udHJpYnV0aW9uLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFNpbWlsYXJseSBXaW5lIGRvZXMgbm90IHRyeSB0byBiZSBhIGRlc2t0b3AgZW52aXJvbm1lbnQgc28KICAgICAgICAgIHByb3ZpZGluZyBhcHBsZXRzIHN1Y2ggYXMgYSBjYWxjdWxhdG9yLCBhIGZpbGUgbWFuYWdlciBvciBldmVuCiAgICAgICAgICB3aW5kb3cgbWFuYWdlciB0aGF0IGxvb2sgbGlrZSBXaW5kb3dzLCBhcmUgbG93IHByaW9yaXR5IG9yIHdvdWxkCiAgICAgICAgICBldmVuIGJlc3QgYmUgZG9uZSBhcyBhIHNlcGFyYXRlIHByb2plY3QuIFN1Y2ggcHJvamVjdHMgd291bGQgYWxzbwogICAgICAgICAgdG8gYSBsYXJnZSBleHRhbnQgYmUgcmVkdW5kYW50IHdpdGggb3RoZXIgb3Blbi1zb3VyY2UgcHJvamVjdHMuCiAgICAgICAgICBBZ2FpbiwgdGhlcmUgYXJlIHByb2plY3RzIHRoYXQgd291bGQgY2VydGFpbmx5IGFwcHJlY2lhdGUgeW91cgogICAgICAgICAgY29udHJpYnV0aW9ucyBpbiB0aGlzIGFyZWFzLCBzdWNoIGFzIHRoZQogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy5nbm9tZS5vcmcvIj5Hbm9tZTwvPiBvcgogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy5rZGUub3JnLyI+S0RFPC8+IGRlc2t0b3AgZW52aXJvbm1lbnRzLiBZb3UKICAgICAgICAgIHdpbGwgZ2V0IHRoZSBhZGRlZCBiZW5lZml0IHRoYXQgeW91ciBjb250cmlidXRpb24gd2lsbCB0aGVuIGJlCiAgICAgICAgICB1c2FibGUgYnkgZXZlcnlvbmUsIG5vdCBqdXN0IGJ5IFdpbmUgdXNlcnMuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2lsbC1JLWluc3RhbGwtb24tYW55LVVOSVgtZmlsZS1zeXN0ZW0iPgogICAgICAgIDxwYXJhPiAKICAgICAgICAgIFdpbGwgSSBiZSBhYmxlIHRvIGluc3RhbGwgTVMgV2luZG93cyBhcHBsaWNhdGlvbnMgaW4gYW55IGZsYXZvciBvZiBhCiAgICAgICAgICBVTklYIGZpbGUgc3lzdGVtPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgaXMgd3JpdHRlbiB0byBiZSBmaWxlIHN5c3RlbSBpbmRlcGVuZGVudCwgc28gTVMgV2luZG93cyAKICAgICAgICAgIGFwcGxpY2F0aW9ucyB3aWxsIGluc3RhbGwgYW5kIHJ1biB1bmRlciB2aXJ0dWFsbHkgYW55IGZpbGUgc3lzdGVtCiAgICAgICAgICBzdXBwb3J0ZWQgYnkgeW91ciBicmFuZCBvZiBVTklYLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KIAogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaWxsLVdpbmUtcnVuLW9ubHktdW5kZXItWCI+CiAgICAgICAgPHBhcmE+V2lsbCBXaW5lIHJ1biBvbmx5IHVuZGVyIFgsIG9yIGNhbiBpdCBydW4gaW4gY2hhcmFjdGVyIG1vZGU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgTW9zdCBvZiBXaW5lJ3MgZGV2ZWxvcG1lbnQgZWZmb3J0IGlzIGdlYXJlZCB0b3dhcmRzIE1TIFdpbmRvd3MnIEdVSSwKICAgICAgICAgIGJ1dCBzb21lIGxpbWl0ZWQgc3VwcG9ydCBmb3IgY2hhcmFjdGVyIG1vZGUgaGFzIGFwcGVhcmVkLCBieSBzZXR0aW5nCiAgICAgICAgICA8cGFyYW1ldGVyPkdyYXBoaWNzRHJpdmVyPXR0eWRydjwvcGFyYW1ldGVyPiBpbiB3aW5lLmNvbmYncwogICAgICAgICAgPHBhcmFtZXRlcj5bd2luZV08L3BhcmFtZXRlcj4gc2VjdGlvbi4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lJ3MgaW5mcmFzdHJ1Y3R1cmUgaXMgYWxyZWFkeSBzb21ld2hhdCBwcmVwYXJlZCBmb3Igc3VwcG9ydGluZwogICAgICAgICAgb3RoZXIgZ3JhcGhpY3MgZHJpdmVycyB0aGFuIHgxMWRydiwgYnV0IG5vIHJlYWwgImFsdGVybmF0aXZlIiAKICAgICAgICAgIGdyYXBoaWNzIGRyaXZlciBoYXMgYmVlbiBkZXZlbG9wZWQgeWV0LgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KIAogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaWxsLVdpbmUtcnVuLXVuZGVyLWFueS1YLXdpbmRvdy1tYW5hZ2VyIj4KICAgICAgICA8cGFyYT5XaWxsIFdpbmUgcnVuIHVuZGVyIGFueSBYIHdpbmRvdyBtYW5hZ2VyPyBEb2VzIGl0IHJlcXVpcmUgYSB3aW5kb3cgbWFuYWdlciBhdCBhbGw/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSBpcyB3aW5kb3cgbWFuYWdlciBpbmRlcGVuZGVudCwgc28gdGhlIFggd2luZG93IG1hbmFnZXIgeW91CiAgICAgICAgICBjaG9vc2UgdG8gcnVuIGhhcyAoYWxtb3N0KSBubyBiZWFyaW5nIG9uIHlvdXIgYWJpbGl0eSB0byBydW4gTVMKICAgICAgICAgIFdpbmRvd3MgcHJvZ3JhbXMgdW5kZXIgV2luZS4gV2luZSB1c2VzIHN0YW5kYXJkIFggbGlicmFyaWVzLCBzbyBubwogICAgICAgICAgYWRkaXRpb25hbCBvbmVzIGFyZSBuZWVkZWQuIFdpbmUgaGFzIGl0cyBvd24gd2luZG93IG1hbmFnZW1lbnQsCiAgICAgICAgICB3aGljaCBhY3RzIGxpa2UgTVMgV2luZG93cy4gSXQgY2FuIGJlIHR1cm5lZCBvZmYgdG8gdXNlIHRoZSBuYXRpdmUKICAgICAgICAgIHdpbmRvdyBtYW5hZ2VyIGJ5IG1vZGlmeWluZyBNYW5hZ2VkIG9yIERlc2t0b3Agc2V0dGluZ3MgYXMgZGVzY3JpYmVkCiAgICAgICAgICBpbiA8Y29tbWFuZD5tYW4gd2luZS5jb25mPC9jb21tYW5kPi4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaWxsLTMyLWJpdC1hcHBsaWNhdGlvbnMtcnVuLXVuZGVyLVdpbmUiPgogICAgICAgIDxwYXJhPldpbGwgMzItYml0IFdpbmRvd3MgOTUvOTggYXBwbGljYXRpb25zIHJ1biB1bmRlciBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFllcywgMzItYml0IHByb2dyYW1zIGFyZSBub3cgYWJvdXQgYXMgd2VsbCBzdXBwb3J0ZWQgYXMgMTYtYml0IAogICAgICAgICAgIHByb2dyYW1zLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KICAgICAgCiAgICA8L3FhbmRhZGl2PgogICAgPHFhbmRhZGl2IGlkPSJGQVEtR2V0dGluZy1XaW5lIj4KICAgICAgPHRpdGxlPkdldHRpbmcgV2luZTwvdGl0bGU+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldoZXJlLWNhbi1JLWdldC1XaW5lIj4KICAgICAgICA8cGFyYT5XaGVyZSBjYW4gSSBnZXQgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBCZWNhdXNlIG9mIGxhZ3MgY3JlYXRlZCBieSB1c2luZyBtaXJyb3IsIHdvcmQgb2YgdGhpcyBuZXdlc3QgcmVsZWFzZQogICAgICAgICAgbWF5IHJlYWNoIHlvdSBiZWZvcmUgdGhlIHJlbGVhc2UgaXMgYWN0dWFsbHkgYXZhaWxhYmxlIGF0IHRoZSBmdHAKICAgICAgICAgIHNpdGVzIGxpc3RlZCBoZXJlLiBUaGUgc291cmNlcyBhcmUgYXZhaWxhYmxlIGZyb20gdGhlIGZvbGxvd2luZwogICAgICAgICAgbG9jYXRpb25zOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LmliaWJsaW8ub3JnL3B1Yi9MaW51eC9BTFBIQS93aW5lL2RldmVsb3BtZW50LyI+CiAgICAgICAgICAgICAgIGh0dHA6Ly93d3cuaWJpYmxpby5vcmcvcHViL0xpbnV4L0FMUEhBL3dpbmUvZGV2ZWxvcG1lbnQvCiAgICAgICAgICAgICAgPC91bGluaz4KICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgPHVsaW5rIHVybD0iZnRwOi8vZnRwLmluZm9tYWdpYy5jb20vcHViL21pcnJvcnMvbGludXgvc3Vuc2l0ZS9BTFBIQS93aW5lL2RldmVsb3BtZW50LyI+CiAgICAgICAgICAgICAgZnRwOi8vZnRwLmluZm9tYWdpYy5jb20vcHViL21pcnJvcnMvbGludXgvc3Vuc2l0ZS9BTFBIQS93aW5lL2RldmVsb3BtZW50LyAKICAgICAgICAgICAgICA8L3VsaW5rPgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgoKICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgPHVsaW5rIHVybD0iZnRwOi8vZnRwLmZ1LWJlcmxpbi5kZS91bml4L2xpbnV4L21pcnJvcnMvc3Vuc2l0ZS51bmMuZWR1L0FMUEhBL3dpbmUvZGV2ZWxvcG1lbnQvIj4KICAgICAgICAgICAgICBmdHA6Ly9mdHAuZnUtYmVybGluLmRlL3VuaXgvbGludXgvbWlycm9ycy9zdW5zaXRlLnVuYy5lZHUvQUxQSEEvd2luZS9kZXZlbG9wbWVudC8gCiAgICAgICAgICAgICAgPC91bGluaz4KICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KCiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIDx1bGluayB1cmw9ImZ0cDovL29yY3VzLnByb2dzb2MudXRzLmVkdS5hdS9wdWIvV2luZS9kZXZlbG9wbWVudC8iPgogICAgICAgICAgICAgIGZ0cDovL29yY3VzLnByb2dzb2MudXRzLmVkdS5hdS9wdWIvV2luZS9kZXZlbG9wbWVudC8gCiAgICAgICAgICAgICAgPC91bGluaz4KICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KCiAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJdCBzaG91bGQgYWxzbyBiZSBhdmFpbGFibGUgZnJvbSBhbnkgb3RoZXIgc2l0ZSB0aGF0IG1pcnJvcnMgCiAgICAgICAgICBpYmlibGlvLm9yZy4gRm9yIG1vcmUgZG93bmxvYWQgbG9jYXRpb25zLCBzZWUgCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vZnRwIHNlYXJjaC5seWNvcy5jb20uIj5seWNvczwvdWxpbms+IFNvbWUgb2YKICAgICAgICAgIHRoZXNlIGZ0cCBzaXRlcyBtYXkgYXJjaGl2ZSBwcmV2aW91cyB2ZXJzaW9ucyBvZiBXaW5lIGFzIHdlbGwgYXMgdGhlCiAgICAgICAgICBjdXJyZW50IG9uZS4gVG8gZGV0ZXJtaW5lIHdoaWNoIGlzIHRoZSBsYXRlc3Qgb25lLCBsb29rIGF0IHRoZSAKICAgICAgICAgIGRpc3RyaWJ1dGlvbiBmaWxlIG5hbWUsIHdoaWNoIHdpbGwgdGFrZSB0aGUgZm9ybSAKICAgICAgICAgIFdpbmUtWVlZWU1NREQudGFyLmd6LiBTaW1wbHkgcmVwbGFjZSBZWVlZTU1ERCBpbiB0aGUgZGlzdHJpYnV0aW9uCiAgICAgICAgICBmaWxlIG5hbWUgd2l0aCB0aGUgbnVtYmVycyBmb3IgeWVhciwgbW9udGggYW5kIGRhdGUsIHJlc3BlY3RpdmVseS4KICAgICAgICAgIFRoZSBsYXRlc3Qgb25lIGlzIHRoZSBvbmUgdG8gZ2V0LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgYmluYXJ5IHBhY2thZ2VzIGFyZSBhdmFpbGFibGUgZm9yIHNldmVyYWwgT1MnZXMgYW5kIAogICAgICAgICAgZGlzdHJpYnV0aW9ucy4gU2VlIAogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEuY29tL2Rvd25sb2FkLnNodG1sIj4KICAgICAgICAgIHRoZSBkb3dubG9hZCBwYWdlPC91bGluaz4gZm9yIHRoZSBtb3N0IHJlY2VudCBsaXN0LgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IklzLXRoZXJlLWEtQ1ZTLXRyZWUiPgogICAgICAgIDxwYXJhPklzIHRoZXJlIGEgQ1ZTIHRyZWU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQ3VycmVudCBXaW5lIHNvdXJjZXMgYXJlIGFsc28gYXZhaWxhYmxlIHZpYSBhbm9ueW1vdXMgY2xpZW50L3NlcnZlcgogICAgICAgICAgQ1ZTLiBZb3Ugd2lsbCBuZWVkIENWUyAxLjkgb3IgYWJvdmUuIElmIHlvdSBhcmUgY29taW5nIGZyb20gYmVoaW5kIGEKICAgICAgICAgIGZpcmV3YWxsLCB5b3Ugd2lsbCBlaXRoZXIgbmVlZCBhIGhvbGUgaW4gdGhlIGZpcmV3YWxsIGZvciB0aGUgQ1ZTCiAgICAgICAgICBwb3J0ICgyNDAxKSBvciB1c2UgU09DS1MuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVG8gbG9naW4gdG8gdGhlIENWUyB0cmVlLCBkbwogICAgICAgIDwvcGFyYT4KICAgICAgICA8c2NyZWVuPgpleHBvcnQgQ1ZTUk9PVD06cHNlcnZlcjpjdnNAY3ZzLndpbmVocS5jb20vaG9tZS93aW5lCmN2cyBsb2dpbgogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVXNlICJjdnMiIGFzIHRoZSBwYXNzd29yZCAod2l0aG91dCB0aGUgcXVvdGVzKS4gTm90ZSB0aGF0IAogICAgICAgICAgPGZpbGVuYW1lPi9ob21lL3dpbmU8L2ZpbGVuYW1lPiBpcyBhIHBhdGggb24gdGhlIHNlcnZlciwgbm90IG9uIHlvdXIKICAgICAgICAgIG1hY2hpbmUuIFRvIGNoZWNrIG91dCB0aGUgZW50aXJlIFdpbmUgc291cmNlIHRyZWUgKHdoaWNoIG1heSBiZSAKICAgICAgICAgIHNsb3cpLCB1c2UKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNjcmVlbj4KY3ZzIC16IDMgY2hlY2tvdXQgd2luZSAKICAgICAgICA8L3NjcmVlbj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIG9yIGlmIHlvdSBqdXN0IHdhbnQgYSBzdWJ0cmVlLCBvciBpbmRpdmlkdWFsIGZpbGUsIHlvdSBjYW4gZG8gdGhhdCAKICAgICAgICAgIHRvbyB3aXRoCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxzY3JlZW4+CmN2cyAteiAzIGNoZWNrb3V0IHdpbmUvQU5OT1VOQ0UgCiAgICAgICAgPC9zY3JlZW4+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBCZSBhd2FyZSwgdGhvdWdoLCB0aGF0IGdldHRpbmcgdGhlIGVudGlyZSBXaW5lIHNvdXJjZSB0cmVlIHZpYSBDVlMKICAgICAgICAgIGlzIHByZXR0eSBzbG93LCBlc3BlY2lhbGx5IGNvbXBhcmVkIHRvIGdldHRpbmcgV2luZSBmcm9tIGFuIEZUUCAKICAgICAgICAgIG1pcnJvciBuZWFyIHlvdS4gRm9yIGEgQ1ZTIG1pcnJvciBsaXN0LCBzZWUgCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5jb20vZGV2LnNodG1sIj4KICAgICAgICAgIGh0dHA6Ly93d3cud2luZWhxLmNvbS9kZXYuc2h0bWw8L3VsaW5rPgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFBhdGNoIGZpbGVzIGFyZSBhbHNvIGF2YWlsYWJsZSwgc28gdGhhdCB5b3UgZG9uJ3QgaGF2ZSB0byBkb3dubG9hZCwKICAgICAgICAgIGluc3RhbGwsIGFuZCBjb25maWd1cmUgdGhlIGVudGlyZSBkaXN0cmlidXRpb24gZWFjaCB3ZWVrIGlmIHlvdSBhcmUKICAgICAgICAgIGN1cnJlbnQgdG8gdGhlIHByZXZpb3VzIHJlbGVhc2UuIFBhdGNoIGZpbGUgcmVsZWFzZSBuYW1lcyBmb2xsb3cgdGhlCiAgICAgICAgICBzYW1lIG51bWJlcmluZyBjb252ZW50aW9uIGFzIGRvIHRoZSBnZW5lcmFsIHJlbGVhc2VzLCBhbmQgdGFrZSB0aGUgCiAgICAgICAgICBmb3JtCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZS1ZWVlZTU1ERC5kaWZmLmd6ICAKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBQYXRjaCBmaWxlcyBhcmUgYXZhaWxhYmxlIGZyb20gdGhlIHNhbWUgc2l0ZXMgdGhhdCBkaXN0cmlidXRlIHRoZQogICAgICAgICAgZnVsbCByZWxlYXNlLiBUbyB1cGdyYWRlIHRvIGEgbmV3IHJlbGVhc2UgYnkgdXNpbmcgYSBwYXRjaCBmaWxlLAogICAgICAgICAgZmlyc3QgY2QgdG8gdGhlIHRvcC1sZXZlbCBkaXJlY3Rvcnkgb2YgdGhlIHJlbGVhc2UgKHRoZSBvbmUKICAgICAgICAgIGNvbnRhaW5pbmcgdGhlIFJFQURNRSBmaWxlKSwgdGhlbiBkbyBhICJtYWtlIGNsZWFuIiwgYW5kIHBhdGNoIHRoZQogICAgICAgICAgcmVsZWFzZSB3aXRoCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxzY3JlZW4+Cmd1bnppcCAtYyBwYXRjaC1maWxlIHwgcGF0Y2ggLXAxIAogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDxwYXJhPgogICAgICAgICAgd2hlcmUgcGF0Y2gtZmlsZSBpcyB0aGUgbmFtZSBvZiB0aGUgcGF0Y2ggZmlsZSBzb21ldGhpbmcgbGlrZQogICAgICAgICAgV2luZS1ZWVlZTU1ERC5kaWZmLmd6LiBZb3UgY2FuIHRoZW4gcmUtcnVuIC4vY29uZmlndXJlLCBhbmQgdGhlbiBydW4KICAgICAgICAgIG1ha2UgZGVwZW5kICYmIG1ha2UKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB5b3UgYXJlIG1pcnJvcmluZyB0aGUgV2luZSBkaXN0cmlidXRpb24gZnJvbSB0aGUgdHN4LTExIHNpdGUgYW5kCiAgICAgICAgICB3aXNoIHRvIGJlIGxpc3RlZCBoZXJlIGluIHRoaXMgRkFRLCBwbGVhc2UgYWRkIGl0IHRvIHRoZSAKICAgICAgICAgICJ0aGluZ3MgdG8gZ28gaW50byB0aGUgZG9jdW1lbnRhdGlvbiIgYXJlYS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJDYW4tSS1nZXQtV2luZS11c2luZy1jdnN1cCI+CiAgICAgICAgPHBhcmE+Q2FuIEkgZ2V0IFdpbmUgdXNpbmcgY3ZzdXA/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIENWUyBtaXJyb3JzIGRvbid0IG9mZmVyIGN2c3VwIHN1cHBvcnQgeWV0LCBidXQgdGhlIG1haW4gc2VydmVyCiAgICAgICAgICBkb2VzLiBVc2UgYSA8ZmlsZW5hbWU+d2luZS5zdXA8L2ZpbGVuYW1lPiBmaWxlIG9mOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8c2NyZWVuPgoqZGVmYXVsdCBob3N0PWN2cy53aW5laHEuY29tCipkZWZhdWx0IGJhc2U9L2N2cwoqZGVmYXVsdCBwcmVmaXg9L2N2cy93aW5lCipkZWZhdWx0IHJlbGVhc2U9d2luZQoqZGVmYXVsdCBkZWxldGUgCgojIElmIHlvdXIgbmV0d29yayBsaW5rIGlzIGEgVDEgb3IgZmFzdGVyLCBjb21tZW50IG91dCB0aGUgZm9sbG93aW5nIGxpbmUuCiMqZGVmYXVsdCBjb21wcmVzcyAKCipkZWZhdWx0IHVzZS1yZWwtc3VmZml4IAp3aW5lIAogICAgICAgIDwvc2NyZWVuPgogICAgIDwvYW5zd2VyPgogICAgIDwvcWFuZGFlbnRyeT4KICAgIDwvcWFuZGFkaXY+CgogICAgPHFhbmRhZGl2IGlkPSJJbnN0YWxsaW5nLUFuZC1Db25maWd1cmluZy1XaW5lIj4KICAgICAgPHRpdGxlPkluc3RhbGxpbmcgYW5kIENvbmZpZ3VyaW5nIFdpbmU8L3RpdGxlPgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctZG8tSS1jb21waWxlLXRoZS1XaW5lLXNvdXJjZS1jb2RlIj4KICAgICAgICA8cGFyYT5Ib3cgZG8gSSBjb21waWxlIHRoZSBXaW5lIGRpc3RyaWJ1dGlvbiBzb3VyY2UgY29kZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBTZWUgdGhlIFJFQURNRSAoPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEuY29tL3NvdXJjZS9SRUFETUUiPmh0dHA6Ly93d3cud2luZWhxLmNvbS9zb3VyY2UvUkVBRE1FPC91bGluaz4pIGZvciBpbnN0cnVjdGlvbnMuCiAgICAgICAgICBBZGRpdGlvbmFsbHksIHlvdSBtYXkgd2FudCB0byBzZXQgdGhlIDxwYXJhbWV0ZXI+VE1QRElSPC9wYXJhbWV0ZXI+CiAgICAgICAgICBlbnZpcm9ubWVudCB2YXJpYWJsZSA8Y29tbWFuZD5UTVBESVI9fi90bXA8L2NvbW1hbmQ+IG9yCiAgICAgICAgICA8Y29tbWFuZD5UTVBESVI9L3RtcDwvY29tbWFuZD4gKGlmIHlvdSBhcmUgcm9vdCkuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWRvLUktaW5zdGFsbC1XaW5kb3dzLWluLVdpbmUiPgogICAgICAgIDxwYXJhPkhvdyBkbyBJIGluc3RhbGwgV2luZG93cyBpbiBXaW5lIHVuZGVyIExpbnV4PzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFNpbXBsZSBhbnN3ZXI6IHlvdSBDQU4nVC4gV2luZG93cyBkZW1hbmRzIGRpcmVjdCBhY2Nlc3MgdG8gdGhlCiAgICAgICAgICBoYXJkd2FyZSBhbmQgY2Fubm90IGdldCBpdCB3aXRoIFdpbmUgYW5kIFVOSVggaW4gdGhlIHdheQogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgaXMgc3VwcG9zZWQgdG8gYmUgcHJpbWFyaWx5IHVzZWQgV0lUSE9VVCBXaW5kb3dzLiBJZiB5b3Ugd2FudAogICAgICAgICAgdG8gdXNlIGEgV2luZG93cyBpbnN0YWxsYXRpb24sIHRoZW4gdXNlIGFuIGV4aXN0aW5nIGluc3RhbGxhdGlvbiAKICAgICAgICAgIGFsb25nc2lkZSB0aGUgVU5JWCBpbnN0YWxsYXRpb24gKHNlZSB0aGUgZHVhbC1ib290IEhPV1RPIGZvciB5b3VyIE9TCiAgICAgICAgICBmb3IgbW9yZSBkZXRhaWxzKS4gT3IgYWx0ZXJuYXRpdmVseSB1c2UgdGhlIGNhYmV4dHJhY3QgdXRpbGl0eSB0bwogICAgICAgICAgZXh0cmFjdCBXaW5kb3dzIGluc3RhbGwgYXJjaGl2ZXMgdG8gYSBkaXJlY3RvcnkgdGhhdCB5b3Ugd2FudCB0byB1c2UKICAgICAgICAgIGFzIFdpbmUncyBXaW5kb3dzIHRyZWUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWRvLUktY29uZmlndXJlLVdpbmUtdG8tcnVuLW9uLW15LXN5c3RlbSI+CiAgICAgICAgPHBhcmE+SG93IGRvIEkgY29uZmlndXJlIFdpbmUgdG8gcnVuIG9uIG15IHN5c3RlbT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIHJlcXVpcmVzIHRoYXQgeW91IGhhdmUgYSBjb25maWcgZmlsZSBhcyAKICAgICAgICAgIDxmaWxlbmFtZT5+Ly53aW5lL2NvbmZpZzwvZmlsZW5hbWU+LiBUaGUgZm9ybWF0IG9mIHRoaXMgZmlsZSBpcwogICAgICAgICAgZXhwbGFpbmVkIGluIHRoZSA8ZmlsZW5hbWU+d2luZS5jb25mPC9maWxlbmFtZT4gbWFuIHBhZ2UuIFRoZSBmaWxlCiAgICAgICAgICA8ZmlsZW5hbWU+ZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzwvZmlsZW5hbWU+CiAgICAgICAgICAoPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEuY29tL3NvdXJjZS9kb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnIj4KICAgICAgICAgIGh0dHA6Ly93d3cud2luZWhxLmNvbS9zb3VyY2UvZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzwvdWxpbms+KSAKICAgICAgICAgIGNvbnRhaW5zIGEgY29uZmlnIGZpbGUgZXhhbXBsZS4gTW9yZSBleHBsaWNpdCBkaXJlY3Rpb25zIGNhbiBiZSAKICAgICAgICAgIGZvdW5kIGluIHRoZSA8ZmlsZW5hbWU+UkVBRE1FPC9maWxlbmFtZT4gZmlsZQogICAgICAgICAgKDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLmNvbS9zb3VyY2UvUkVBRE1FIj4KICAgICAgICAgIGh0dHA6Ly93d3cud2luZWhxLmNvbS9zb3VyY2UvUkVBRE1FPC91bGluaz4pIHRoYXQgd2lsbCBiZSBsb2NhdGVkIGluCiAgICAgICAgICB0aGUgYmFzZSBXaW5lIGRpcmVjdG9yeSBhZnRlciB5b3UgZ3VuemlwIGFuZCB1bnRhciB0aGUgZGlzdHJpYnV0aW9uCiAgICAgICAgICBmaWxlLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikhvdy1kby1JLXVwZ3JhZGUtY29uZmlndXJhdGlvbiI+CiAgICAgICAgPHBhcmE+SG93IGRvIEkgdXBncmFkZSBXaW5lIHdpdGhvdXQgbG9zaW5nIG15IHdvcmtpbmcgY29uZmlndXJhdGlvbj88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBVcGdyYWRpbmcgdGhlIHdpbmUgaW5zdGFsbGF0aW9uIGRvZXMgbm90IGFmZmVjdCB0aGUgZXhpc3Rpbmcgd2luZQogICAgICAgICAgY29uZmlndXJhdGlvbi4gU28gYWZ0ZXIgdXBncmFkaW5nIHdpbmUgeW91IHN0aWxsIGhhdmUgdGhlIG9sZCAod29ya2luZyApCiAgICAgICAgICB3aW5lIGNvbmZpZ3VyYXRpb24uCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSWYtSS11c2UtV2luZG93cy13aGljaC12ZXJzaW9ucy1PSyI+CiAgICAgICAgPHBhcmE+SWYgSSB3YW50IHRvIHVzZSBhIFdpbmRvd3MgaW5zdGFsbCwgd2hpY2ggdmVyc2lvbnMgYXJlIE9LPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEVpdGhlciB1c2UgYSBjbGFzc2ljIG5vLXdpbmRvd3MgaW5zdGFsbCAoV2luZSBpcyBnZXR0aW5nIGJldHRlciBhbGwKICAgICAgICAgIHRoZSB0aW1lKSBvciB1c2UgYSBXaW45eCBpbnN0YWxsIChXaW45NSwgOTgsIDk4U0UsIE1FKS4gRE9OJ1QgCiAgICAgICAgICBjb25maWd1cmUgV2luZSB0byB1c2UgYW4gTlQtYmFzZWQgV2luZG93cyBpbnN0YWxsIChOVCwgV2luMkssIFdpblhQKS4KICAgICAgICA8L3BhcmE+Cgk8cGFyYT4KCSAgSW4gZ2VuZXJhbCwgbW9zdCBXaW5kb3dzIGluc3RhbGxhdGlvbnMgY29udGFpbiB2YXN0IHF1YW50aXRpZXMgb2YgZ2FyYmFnZQoJICB0aGF0IGNhbiBjb25mdXNlIFdpbmUgYW5kIG1ha2UgaXQgbGVzcyByZWxpYWJsZS4gSWYgeW91IGNhbiwgaXQncyBiZXN0IHRvCgkgIGluc3RhbGwgdGhlIHByb2dyYW1zIHlvdSB3YW50IGludG8gV2luZXMgZmFrZSB3aW5kb3dzIGRyaXZlLgoJPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSWYtSS11c2UtV2luZG93cy13aGljaC1vbmUtd29ya3MtYmVzdCI+CiAgICAgICAgPHBhcmE+SWYgSSB1c2UgYSBXaW5kb3dzIGluc3RhbGwgd2l0aCBXaW5lLCB3aGljaCBvbmUgd29ya3MgYmVzdD88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBBcyBvZiAwMi8yMDAyOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEknZCBzYXkgV2luOThTRSBpcyB0aGUgYmVzdCB2ZXJzaW9uIHRvIHVzZSB3aXRoIFdpbmUsIGFzIGl0J3MgZmFpcmx5CiAgICAgICAgICB3aWRlc3ByZWFkIGFtb25nc3QgZGV2ZWxvcGVycyBhbmQgcmVsYXRpdmVseSBvbGQuIFVzaW5nIFdpbjJLIGZpbGVzCiAgICAgICAgICBpcyA8ZW1waGFzaXM+ZGVmaW5pdGVseTwvZW1waGFzaXM+IHdvcnNlIHRoYW4gYSBwbGFpbiBuby13aW5kb3dzIAogICAgICAgICAgV2luZSBpbnN0YWxsLCBhbmQgV2luIE1FIGlzIHNhaWQgdG8gYmUgcHJvYmxlbWF0aWMsIHRvbyAoYXMgcHJvYmFibHkKICAgICAgICAgIG5vIGRldmVsb3BlciB1c2VzIGl0KS4gSW4gc2hvcnQ6IGFsbCBXaW45eCAmbHQ7PSBXOThTRSBhcmUgZ29vZC4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJbnN0YWxsaW5nLVZpc3VhbC1CYXNpYy1hcHBzLXdvbnQtcnVuIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEluc3RhbGxpbmcgYXBwbGljYXRpb25zIGdlbmVyYXRlZCBieSBWaXN1YWwgQmFzaWMgd29uJ3QgcnVuLiBXaGF0CiAgICAgICAgICBzaG91bGQgSSBkbz8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBNYWtlIHN1cmUgeW91IGhhdmUgYWxsIHRoZSBWQiBydW50aW1lIGxpYnJhcmllcyBpbnN0YWxsZWQuIFlvdSBtYXkKICAgICAgICAgIG5lZWQgdG8gdXNlIHRoZSBuYXRpdmUgRExMIHZicnVuNjAuZGxsLiBZb3UgY2FuIGdldCBzb21lIGZyb20gZGxsLWZpbGVzLmNvbS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGVuLUktY2xpY2stb24tZXhlLWZpbGUtbm90aGluZy1oYXBwZW5zIj4KICAgICAgICA8cGFyYT5XaGVuIEkgY2xpY2sgb24gKi5leGUgZmlsZSBpbiBteSBmaWxlIE1hbmFnZXIsIG5vdGhpbmcgaGFwcGVucy48L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGUgbm9ybWFsIFdpbmUgcmVsZWFzZXMgZG9uJ3QgaGF2ZSAuZXhlIGV4dGVuc2lvbnMgcmVnaXN0ZXJlZCBmb3IKICAgICAgICAgIFdpbmUgaW4gS0RFL0dub21lIHlldC4gWW91IGhhdmUgdG8gb3BlbiBhIHRlcm1pbmFsIHdpbmRvdyBpbnN0ZWFkCiAgICAgICAgICAob2Z0ZW4gYW4gaWNvbiBzaG93aW5nIGEgImJsYWNrIHNjcmVlbiIpIGFuZCB0eXBlIHNvbWV0aGluZyBsaWtlOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8c2NyZWVuPgpjZCAvbXkvd2luZG93cy9wcm9ncmFtL2RpcmVjdG9yeQp3aW5lIG15cHJvZ3JhbS5leGUKICAgICAgICA8L3NjcmVlbj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIE9yIGFsdGVybmF0aXZlbHkgeW91IGNvdWxkIGRvd25sb2FkIHRoZSBDb2RlV2VhdmVycyBXaW5lIHByZXZpZXcgCiAgICAgICAgICB3aGljaCBpbmNsdWRlcyAuZXhlIGV4dGVuc2lvbiByZWdpc3RyYXRpb24gZm9yIEtERS9Hbm9tZSBhbmQgYSBuaWNlCiAgICAgICAgICBzZXR1cCBwcm9ncmFtLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9ImJhc2gtd2luZS1Db21tYW5kLW5vdC1mb3VuZC1XaGF0LWNhbi1JLWRvIj4KICAgICAgICA8cGFyYT5iYXNoICJ3aW5lOiBDb21tYW5kIG5vdCBmb3VuZCIgV2hhdCBjYW4gSSBkbz88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUcnkgdG8gcmVsb2dpbiBpbnRvIGJhc2guIFRoYXQgbWlnaHQgZml4IGl0LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIGl0IGRvZXNuJ3QsIHRoZW4gbWFrZSBzdXJlIHRoZSB3aW5lIGJpbmFyeSBpcyBpbiB5b3VyIAogICAgICAgICAgPHBhcmFtZXRlcj5QQVRIPC9wYXJhbWV0ZXI+LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFJ1biBhcyByb290OgogICAgICAgIDwvUGFyYT4KICAgICAgICA8c2NyZWVuPgpmaW5kIC8gLW5hbWUgIndpbmUiIC10eXBlIGYgLXBlcm0gKzExMQogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDxwYXJhPgogICAgICAgICAgdG8gZmluZCB0aGUgcGF0aCB3aGVyZSB0aGUgd2luZSBiaW5hcnkgaXMgaW4uIFRoZW4gY2hlY2sgd2hldGhlcgogICAgICAgIDxwYXJhbWV0ZXI+UEFUSDwvcGFyYW1ldGVyPiBpbmNsdWRlcyBpdDoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNjcmVlbj4KZWNobyAkUEFUSCAKICAgICAgICA8L3NjcmVlbj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIG5vdCwgYWRkIHRoYXQgZS5nLiB0byA8ZmlsZW5hbWU+L2V0Yy9wcm9maWxlPC9maWxlbmFtZT4gYnkgZG9pbmc6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxzY3JlZW4+CmV4cG9ydCBQQVRIPSRQQVRIOi9wYXRoL3RvL3dpbmUvYmluYXJ5IAogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhhdCBzaG91bGQgaGVscC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICAgSWYgeW91IHVzZWQgYSBwYWNrYWdlIG1hbmFnZXIgKDxjb21tYW5kPnJwbTwvY29tbWFuZD4gb3IgCiAgICAgICAgICAgPGNvbW1hbmQ+YXB0PC9jb21tYW5kPikgLSBWZXJpZnkgeW91ciBwYWNrYWdlcy4gVGhlIHBhY2thZ2UgCiAgICAgICAgICAgPGZpbGVuYW1lPndpbmVzZXR1cHRrLnJwbTwvZmlsZW5hbWU+IGlzIG9ubHkgYSBmcm9udC1lbmQgZm9yIAogICAgICAgICAgIG1ha2luZyBhIG1lYW5pbmdmdWwgY29uZmlnIGZpbGUsIGl0IERPRVMgTk9UIGluc3RhbGwgdGhlIHdpbmUKICAgICAgICAgICBwYWNrYWdlLi4uCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgIEZvciBjb21wbGV0ZSBwYWNrYWdlcywgdXNlIDx1bGluayB1cmw9Imh0dHA6Ly93d3cucnBtZmluZC5uZXQvIj4KICAgICAgICAgICB3d3cucnBtZmluZC5uZXQ8L3VsaW5rPiBvciB0aGUgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL2Rvd25sb2FkLyI+CiAgICAgICAgICAgRG93bmxvYWQ8L3VsaW5rPiBzZWN0aW9uLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikhvdy1kby1JLXJlbW92ZS1XaW5lLWZyb20tbXktQ29tcHV0ZXIiPgogICAgICAgIDxwYXJhPkhvdyBkbyBJIHJlbW92ZSBXaW5lIGZyb20gbXkgQ29tcHV0ZXI/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQWxsIHlvdSBoYXZlIHRvIGRvIGlzIHRvIHR5cGU6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxzY3JlZW4+CnJtIC1mUiBcWy9wYXRoL1xdV2luZSoKICAgICAgICA8L3NjcmVlbj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIE1ha2Ugc3VyZSB0aGF0IHlvdSBzcGVjaWZ5IHRoZSBleGFjdCBwYXRoIHdoZW4gdXNpbmcgdGhlIHBvd2VyZnVsCiAgICAgICAgICA8Y29tbWFuZD5ybSAtZlI8L2NvbW1hbmQ+IGNvbW1hbmQuIElmIHlvdSBhcmUgYWZyYWlkIHRoYXQgeW91IG1pZ2h0CiAgICAgICAgICBkZWxldGUgc29tZXRoaW5nIGltcG9ydGFudCwgb3IgbWlnaHQgb3RoZXJ3aXNlIGRlbGV0ZSBvdGhlciBmaWxlcyAKICAgICAgICAgIHdpdGhpbiB5b3VyIGZpbGVzeXN0ZW0sIDxjb21tYW5kPmNkPC9jb21tYW5kPiBpbnRvIGVhY2ggV2luZSAKICAgICAgICAgIHN1YmRpcmVjdG9yeSBzaW5nbHkgYW5kIGRlbGV0ZSB0aGUgZmlsZXMgZm91bmQgdGhlcmUgbWFudWFsbHksIAogICAgICAgICAgb25lIGZpbGUgb3IgZGlyZWN0b3J5IGF0IGEgdGltZS4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgTmVpdGhlciB0aGUgV2luZSBkZXZlbG9wZXJzIGFuZCBwcm9ncmFtbWVycywgbm9yIHRoZSBXaW5lIEZBUSAKICAgICAgICBhdXRob3IvbWFpbnRhaW5lciwgY2FuIGJlIGhlbGQgcmVzcG9uc2libGUgZm9yIHlvdXIgZGVsZXRpbmcgYW55CiAgICAgICAgZmlsZXMgaW4geW91ciBvd24gZmlsZXN5c3RlbS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAgICA8L3FhbmRhZGl2PgoKICAgIDxxYW5kYWRpdiBpZD0iQWJvdXQtcnVubmluZy1XaW5lIj4KICAgICAgPHRpdGxlPkFib3V0IHJ1bm5pbmcgV2luZTwvdGl0bGU+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikhvdy1kby1JLXJ1bi1hbi1NUy1XaW5kb3dzLXByb2dyYW0iPgogICAgICAgIDxwYXJhPkhvdyBkbyBJIHJ1biBhbiBNUyBXaW5kb3dzIHByb2dyYW0gdW5kZXIgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaGVuIGludm9raW5nIFdpbmUsIHlvdSBtdXN0IHNwZWNpZnkgdGhlIGVudGlyZSBwYXRoIHRvIHRoZQogICAgICAgICAgZXhlY3V0YWJsZSwgb3IgYnkgZmlsZW5hbWUgb25seS4gRm9yIGV4YW1wbGUgdG8gcnVuIFdpbmRvd3MnCiAgICAgICAgICBzb2xpdGFpcmUsIHR5cGUgYW55IG9mIHRoZSBmb2xsb3dpbmc6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPGNvbW1hbmQ+d2luZSBzb2w8L2NvbW1hbmQ+IG9yIDxjb21tYW5kPndpbmUgc29sLmV4ZTwvY29tbWFuZD4KICAgICAgICAgICAodXNpbmcgdGhlIHNlYXJjaCBwYXRoIHRvIGxvY2F0ZSB0aGUgZmlsZSkuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxjb21tYW5kPndpbmUgYzpcXHdpbmRvd3NcXHNvbC5leGU8L2NvbW1hbmQ+IAogICAgICAgICAgICh1c2luZyBhIERPUyBmaWxlbmFtZSkuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxjb21tYW5kPndpbmUgL3Vzci93aW5kb3dzL3NvbC5leGU8L2NvbW1hbmQ+CiAgICAgICAgICAgKHVzaW5nIGEgVU5JWCBmaWxlbmFtZSkuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxjb21tYW5kPndpbmUgImM6XHdpbmRvd3Ncc29sLmV4ZSI8L2NvbW1hbmQ+CiAgICAgICAgICAgICh1c2luZyBxdW90ZWQgRE9TIGZpbGVuYW1lKS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGUgcGF0aCBvZiB0aGUgZmlsZSB3aWxsIGFsc28gYmUgYWRkZWQgdG8gdGhlIHBhdGggd2hlbiBhIGZ1bGwgbmFtZQogICAgICAgICAgaXMgc3VwcGxpZWQgb24gdGhlIGNvbW1hbmQgbGluZS4KCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2luZS1jYW5ub3QtZmluZC1NUy1XaW5kb3dzLW9uLW15LWRyaXZlIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEkgaGF2ZSBpbnN0YWxsZWQgYW5kIGNvbmZpZ3VyZWQgV2luZSwgYnV0IFdpbmUgY2Fubm90IGZpbmQgTVMgCiAgICAgICAgICBXaW5kb3dzIG9uIG15IGRyaXZlLiBXaGVyZSBkaWQgSSBnbyB3cm9uZz8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB5b3UgaGF2ZSBhIERPUyBwYXJ0aXRpb24sIGZpcnN0IG1ha2Ugc3VyZSB0aGF0IHlvdSBoYXZlIG1vdW50ZWQKICAgICAgICAgIGl0LCBlaXRoZXIgYnkgcHV0dGluZyB0aGUgZW50cnkgaW50byA8ZmlsZW5hbWU+L2V0Yy9mc3RhYjwvZmlsZW5hbWU+LAogICAgICAgICAgb3IgYnkgbWFudWFsbHkgbW91bnRpbmcgaXQuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgUmVtZW1iZXIgdG9vIHRoYXQgdW5sZXNzIHlvdXIgdmVyc2lvbiBvZiBVTklYIGNhbiBzZWUgdGhyb3VnaCBpdCwgb3IKICAgICAgICAgIHlvdSBhcmUgcnVubmluZyBhIHV0aWxpdHkgdGhhdCBjYW4gc2VlIHRocm91Z2ggaXQsIHlvdXIgRE9TCiAgICAgICAgICBwYXJ0aXRpb24gbXVzdCBub3QgYmUgbG9jYXRlZCBvbiBhIERyaXZlc3BhY2VkLCBEb3VibGVzcGFjZWQgb3IKICAgICAgICAgIFN0YWNrZXJlZCBwYXJ0aXRpb24sIGFzIG5laXRoZXIgTGludXgsIEZyZWVCU0QsIE5ldEJTRCBvciBXaW5lIGNhbgogICAgICAgICAgbmF0aXZlbHkgJ3NlZScgZmlsZXMgbG9jYXRlZCBpbiB0aGVzZSBjb21wcmVzc2VkIERPUyBwYXJ0aXRpb25zLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIENoZWNrIHlvdXIgcGF0aCBzdGF0ZW1lbnRzIGluIHRoZSA8ZmlsZW5hbWU+d2luZS5jb25mPC9maWxlbmFtZT4gCiAgICAgICAgICBmaWxlLiBObyBjYXBpdGFsIGxldHRlcnMgbWF5IGJlIHVzZWQgaW4gcGF0aHMsIGFzIHRoZXkgYXJlIAogICAgICAgICAgYXV0b21hdGljYWxseSBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IlBhcnRzLW9mLW15LWFwcC1kby1ub3Qtd29yay1XaGF0LWlzLXdyb25nIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEkgd2FzIGFibGUgdG8gZ2V0IHZhcmlvdXMgTVMgV2luZG93cyBwcm9ncmFtcyB0byBydW4sIGJ1dCBwYXJ0cyBvZgogICAgICAgICAgdGhlbSBkbyBub3Qgd29yay4gV2hhdCBpcyB3cm9uZz8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIGlzIG5vdCBjb21wbGV0ZSBhdCB0aGlzIHRpbWUsIHNvIHNvbWUgb2YgZWFjaCBwcm9ncmFtcycgCiAgICAgICAgICBmZWF0dXJlcyBtYXkgbm90IHdvcmsuIFRoZXkgd2lsbCBpbiB0aW1lIGFzIG1vcmUgb2YgdGhlIE1TIAogICAgICAgICAgV2luZG93cyBBUEkgY2FsbHMgYXJlIGluY2x1ZGVkIGluIFdpbmUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iTWVudXMtZG8tbm90LXdvcmstaG93LWNhbi1JLWV4aXQiPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSSBoYXZlIHJ1biB2YXJpb3VzIE1TIFdpbmRvd3MgcHJvZ3JhbXMsIGJ1dCBzaW5jZSB0aGUgcHJvZ3JhbSBtZW51cwogICAgICAgICAgZG8gbm90IHdvcmssIGhvdyBjYW4gSSBleGl0IHRoZXNlIHByb2dyYW1zPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEtpbGwgdGhlIHh0ZXJtIHNoZWxsIHdpbmRvdyB0aGF0IHlvdSBjYWxsZWQgdXAgdG8gcnVuIHlvdXIgTVMgCiAgICAgICAgICBXaW5kb3dzIHByb2dyYW0sIGFuZCB0aGUgWCB3aW5kb3cgdGhhdCBhcHBlYXJlZCB3aXRoIHRoZSBwcm9ncmFtIAogICAgICAgICAgd2lsbCBiZSBraWxsZWQgdG9vLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgoJPHF1ZXN0aW9uIGlkPSJNeS1hcHAtZG9lc250LXdvcmstd2hhdC1jYW4taS1kbyI+CgkgIDxwYXJhPgoJICAgIE15IHByb2dyYW0gZG9lc24ndCB3b3JrLCB3aGF0IGNhbiBJIGRvPwoJICA8L3BhcmE+Cgk8L3F1ZXN0aW9uPgoJPGFuc3dlcj4KCSAgPHBhcmE+CgkgICAgSWYgeW91IGFyZSBhIHByb2dyYW1tZXIgYW5kIGtub3cgQywgdGhlbiBzdGFydCBkZWJ1Z2dpbmcKCSAgICBXaW5lIGFuZCBoZWxwIHVzIG1ha2UgaXQgYmV0dGVyISBJZiB5b3UgY2FuJ3QsIHRoZW4geW91IHdpbGwKCSAgICBoYXZlIHRvIGVpdGhlciBjb252aW5jZSBhIFdpbmUgZGV2ZWxvcGVyIHRvIHRyeSBhbmQgbWFrZSB5b3VyCgkgICAgcHJvZ3JhbSB3b3JrICh0aGVyZSBtdXN0IGJlIGEgZG93bmxvYWRhYmxlIHZlcnNpb24gb3IgZGVtbyBmb3IKCSAgICB0aGF0KSwgb3IgaGlyZSBzb21lYm9keSB0byBkbyBpdCBmb3IgeW91LiBJZiB0aGlzIGFwcGxpY2F0aW9uCgkgICAgaXMgYW4gaW50ZXJuYWwgY29ycG9yYXRlIGFwcGxpY2F0aW9uLCB5b3UgbWF5IGJlIGFibGUgdG8gaGlyZSBhCgkgICAgV2luZSBkZXZlbG9wZXIgdG8gZG8gY29uc3VsdGluZyB3b3JrIGZvciB5b3Ugb24gdGhlIG1hdHRlci4KCSAgPC9wYXJhPgoJICA8cGFyYT4KCSAgICBBbHRlcm5hdGl2ZWx5LCB5b3UgbWF5IGJlIGFibGUgdG8gZ2V0IHRoZSBhcHAgd29ya2luZyBieQoJICAgIHRha2luZyBuYXRpdmUgRExMcyBmcm9tIGEgTWljcm9zb2Z0IFdpbmRvd3MgaW5zdGFsbCwgYW5kIHVzaW5nCgkgICAgdGhlbSAoc2V0IHRoZSBkbGxzIHRvIG5hdGl2ZSBpbiB0aGUgY29uZmlnIGZpbGUpLiBOb3QgYWxsIERMTHMKCSAgICBjYW4gYmUgcmVwbGFjZWQgdGhhdCB3YXkgLSBpbiBwYXJ0aWN1bGFyIERpcmVjdFggY2Fubm90IGJlLCBub3IKCSAgICBjYW4gc29tZSBjb3JlIHN5c3RlbSBETExzIGxpa2UgdXNlciwgbnRkbGwsIGtlcm5lbDMyIGV0YwoJICA8L3BhcmE+Cgk8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgICAKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iQ2FuLUktdXNlLVdpbmUtd2l0aC1vdGhlci1MaW51eC1EaXN0cm9zIj4KICAgICAgICA8cGFyYT5DYW4gSSB1c2UgV2luZSB3aXRoIFN1U0UsIFBlYW51dCBvciBvdGhlciBMaW51eCBEaXN0cm8ncz88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBZb3UgY2FuIHVzZSBXaW5lIG9uIGFueSBzdWZmaWNpZW50bHkgcmVjZW50IExpbnV4IGluc3RhbGxhdGlvbi4gVGhlCiAgICAgICAgICBhbW91bnQgb2Ygd29yayBnZXR0aW5nIFdpbmUgdXAgYW5kIHJ1bm5pbmcgZGVwZW5kcyBvbiB3aGV0aGVyIHRoZXJlCiAgICAgICAgICBhcmUgcHJvcGVyIHBhY2thZ2VzIGF2YWlsYWJsZSBvciBhIHNvdXJjZSBjb21waWxlIGhhcyB0byBiZSBkb25lLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IkRvZXMtV2luZS13b3JrLXdpdGgtQU1ELVByb2Nlc3NvcnMiPgogICAgICAgIDxwYXJhPkRvZXMgV2luZSB3b3JrIHdpdGggQU1EIFByb2Nlc3NvcnM/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWWVzLCBpdCBkb2VzLiBXaW5lIHNob3VsZCB3b3JrIG9uIGFueSBwcm9jZXNzb3IgY29tcGF0aWJsZSB3aXRoCiAgICAgICAgICB0aGUgUGVudGl1bSBvciBncmVhdGVyLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJDYW4tSS1sYXVuY2gtVW5peC1hcHAtZnJvbS1XaW5kb3dzLWFwcCI+CiAgICAgICAgPHBhcmE+IENhbiBJIGxhdW5jaCBhIFVuaXggcHJvZ3JhbSBmcm9tIGEgV2luZG93cyBwcm9ncmFtPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFN1cmUsIFdpbmUgc3VwcG9ydHMgdGhhdC4gSnVzdCBlbnRlciB0aGUgdW5peCBwcm9ncmFtIG5hbWUgd2hlcmV2ZXIKICAgICAgICAgIGEgcHJvZ3JhbSBoYXMgc29tZXRoaW5nIHRoYXQgaXQncyBzdXBwb3NlZCB0byBleGVjdXRlLCBhbmQgaXQKICAgICAgICAgIHNob3VsZCBqdXN0IHdvcmsuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJFcnJvci13aXRoLWluc3RhbGxzaGllbGQtNiI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJIGdldCA8cXVvdGU+RXJyb3IgaW5zdGFsbGluZyBpS2VybmVsLmV4ZTogKDB4MTQwMCk8L3F1b3RlPgogICAgICAgICAgd2hlbiBydW5uaW5nIGFuIEluc3RhbGxzaGllbGQgNiBpbnN0YWxsZXIuCiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgeW91IGdldCB0aGUgZXJyb3IgIkVycm9yIGluc3RhbGxpbmcgaUtlcm5lbC5leGU6ICgweDE0MDApIiBhdCBhbnkKICAgICAgICAgIHBvaW50LCBpdCdzIHByb2JhYmx5IGJlY2F1c2UgdGhlcmUgYXJlIGxlZnRvdmVyIHByb2Nlc3NlcyBmcm9tIGEKICAgICAgICAgIHByZXZpb3VzIHRyeS4gWW91IGNhbiB2ZXJpZnkgdGhpcyB3aXRoIHRoZSBjb21tYW5kCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPjxwcm9tcHQ+JCA8Lz48Y29tbWFuZD5wcyBhdWd4dyB8IGdyZXAgd2luZTwvY29tbWFuZD48L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB0aGF0IGNvbW1hbmQgc2hvd3Mgb2xkIGNvcGllcyBvZiB3aW5lIHJ1bm5pbmcgeW91ciBzZXR1cCwKICAgICAgICAgIHlvdSBuZWVkIHRvIGtpbGwgdGhlbSBiZWZvcmUgeW91IGNhbiBydW4gdGhlIHNldHVwIHByb2dyYW0uCiAgICAgICAgICBJZiB0aGVyZSBhcmUgbm8gb3RoZXIgV2luZSBwcm9ncmFtcyBydW5uaW5nLCB5b3UgY2FuIGtpbGwgdGhlbQogICAgICAgICAgYWxsIHdpdGggdGhlIGNvbW1hbmQKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+PHByb21wdD4kIDwvPjxjb21tYW5kPmtpbGxhbGwgd2luZTwvY29tbWFuZD48L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB5b3UncmUgYWxzbyBydW5uaW5nIFdpbmUgcHJvZ3JhbXMgeW91IGNhcmUgYWJvdXQsIHlvdSdsbAogICAgICAgICAgaGF2ZSB0byBraWxsIG9mZiB0aGUgb2xkIFNldHVwIGluc3RhbmNlcyBvbmUgYnkgb25lIHVzaW5nCiAgICAgICAgICBraWxsIGFuZCB0aGUgaW5kaXZpZHVhbCBQSURzIChvciBwZXJoYXBzIFdpbmUncyBzcGlmZnkgVGFzayBNYW5hZ2VyLAogICAgICAgICAgd2hpY2ggZG9lc24ndCBleGlzdCB5ZXQpLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFlvdSBzaG91bGQgcmVwZWF0IHRoZSA8Y29tbWFuZD5wczwvY29tbWFuZD4gdG8gbWFrZSBzdXJlIHRoZSBvbGQgCiAgICAgICAgICBXaW5lIHByb2Nlc3NlcyBhcmUgZ29uZS4KICAgICAgICA8L3BhcmE+CiAgICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgPC9xYW5kYWRpdj4KICAgICAKICAgIDxxYW5kYWRpdiBpZD0iR2V0dGluZy1oZWxwIj4KICAgICAgPHRpdGxlPkdldHRpbmcgaGVscDwvdGl0bGU+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IklzLXRoZXJlLWFueS1kb2N1bWVudGF0aW9uLWZvci1XaW5lIj4KICAgICAgICA8cGFyYT5JcyB0aGVyZSBhbnkgZG9jdW1lbnRhdGlvbiBmb3IgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBZZXMsIHNlZSA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmcvc3VwcG9ydC5zaHRtbCI+CiAgICAgICAgICBodHRwOi8vd3d3LndpbmVocS5jb20vc3VwcG9ydC5zaHRtbC48L3VsaW5rPgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IkktaGF2ZS13cml0dGVuLXNvbWUtZG9jdW1lbnRlbnRhdGlvbiI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJIGNvdWxkbid0IGZpbmQgdGhlIGFuc3dlciB0byBteSBxdWVzdGlvbiBpbiB0aGUgZG9jdW1lbnRhdGlvbiwgYnV0CiAgICAgICAgICBJJ3ZlIHdyaXR0ZW4gYSBkb2N1bWVudCBleHBsYWluaW5nIGhvdyB0byBzb2x2ZSBpdC4gV2hhdCBzaG91bGQgSSBkbz8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBVcGRhdGVzIGFuZCBhZGRpdGlvbnMgdG8gdGhlIFdpbmUgZG9jdW1lbnRhdGlvbiBkaXJlY3Rvcnkgc2hvdWxkIGJlCiAgICAgICAgICBzZW50IHRvIHRoZSB3aW5lLXBhdGNoZXMgbWFpbGluZyBsaXN0IGF0IAogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEuY29tL2Rldi5zaHRtbCNtbCI+CiAgICAgICAgICBodHRwOi8vd3d3LndpbmVocS5jb20vZGV2LnNodG1sI21sPC91bGluaz4uIFdlYnNpdGUgYW5kIEZBUSAKICAgICAgICAgIGFkZGl0aW9ucyBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGFwcHJvcHJpYXRlIFdpbmUgS25vd2xlZGdlYmFzZQogICAgICAgICAgZGlyZWN0b3J5LgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IklzLXRoZXJlLWEtVXNlbmV0LW5ld3Nncm91cC1mb3ItV2luZSI+CiAgICAgICAgPHBhcmE+SXMgdGhlcmUgYSBVc2VuZXQgbmV3c2dyb3VwIGZvciBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFllcywgYW5kIGl0J3MgY2FsbGVkIAogICAgICAgICAgPHVsaW5rIHVybD0ibmV3czpjb21wLmVtdWxhdG9ycy5tcy13aW5kb3dzLndpbmUiPgogICAgICAgICAgY29tcC5lbXVsYXRvcnMubXMtd2luZG93cy53aW5lPC91bGluaz4uIFRoZSBuZXdzZ3JvdXAgc2VydmVzIGFzIGEKICAgICAgICAgIHBsYWNlIGZvciB1c2VycyBhbmQgZGV2ZWxvcGVycyB0byBkaXNjdXNzIFdpbmUsIGFuZCBmb3IgbWlub3IgCiAgICAgICAgICBhbm5vdW5jZW1lbnRzIGZvciB0aGUgZ2VuZXJhbCBwdWJsaWMuIE1ham9yIGFubm91bmNlbWVudHMgd2lsbCBiZQogICAgICAgICAgY3Jvc3Nwb3N0ZWQgdG8gb3RoZXIgYXBwcm9wcmlhdGUgbmV3c2dyb3Vwcywgc3VjaCBhcyB0aGUgZm9sbG93aW5nOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDx1bGluayB1cmw9Im5ld3M6Y29tcC5vcy5saW51eC5hbm5vdW5jZSI+CiAgICAgICAgICAgIGNvbXAub3MubGludXguYW5ub3VuY2U8L3VsaW5rPgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8dWxpbmsgdXJsPSJuZXdzOmNjb21wLndpbmRvd3MueC5hbm5vdW5jZSI+CiAgICAgICAgICAgIGNvbXAud2luZG93cy54LmFubm91bmNlPC91bGluaz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHVsaW5rIHVybD0ibmV3czpjY29tcC5lbXVsYXRvcnMuYW5ub3VuY2UiPgogICAgICAgICAgICBjb21wLmVtdWxhdG9ycy5hbm5vdW5jZTwvdWxpbms+CiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgeW91ciBVc2VuZXQgc2l0ZSBkb2VzIG5vdCBjYXJyeSB0aGVzZSBuZXdzZ3JvdXBzLCBwbGVhc2UgdXJnZSAKICAgICAgICAgIHlvdXIgSVNQJ3Mgc3lzYWRtaW4gdG8gYWRkIGFuZC9vciB1cGxpbmsgdGhlbS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJcy10aGVyZS1hLVdvcmxkLVdpZGUtV2ViLXNpdGUtZm9yLVdpbmUiPgogICAgICAgIDxwYXJhPklzIHRoZXJlIGEgV29ybGQgV2lkZSBXZWIgc2l0ZSBmb3IgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIEhRICg8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5jb20iPmh0dHA6Ly93d3cud2luZWhxLmNvbTwvdWxpbms+KSBpcyB0aGUgb2ZmaWNpYWwgc2l0ZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJcy10aGVyZS1hbi1JUkMtY2hhbm5lbC1mb3ItV2luZSI+CiAgICAgICAgPHBhcmE+SXMgdGhlcmUgYW4gSVJDIGNoYW5uZWwgZm9yIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgU3VyZS4gSXQncyBjaGFubmVsIDxmaWxlbmFtZT4jV2luZUhRPC9maWxlbmFtZT4gb24gCiAgICAgICAgICA8ZmlsZW5hbWU+aXJjLmZyZWVub2RlLm5ldDwvZmlsZW5hbWU+IHNlZSAKICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi8vZnJlZW5vZGUubmV0Ij5odHRwOi8vZnJlZW5vZGUubmV0PC91bGluaz4pLgogICAgICAgICAgVXN1YWxseSBzZXZlcmFsIFdpbmUgZGV2ZWxvcGVycyBoYW5nIG91dCB0aGVyZSBqdXN0IHRvIGhlbHAgWU9VIDstKQogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IkktdGhpbmstSS1mb3VuZC1hLWJ1Zy1Ib3ctZG8tSS1yZXBvcnQtaXQiPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSSB0aGluayBJJ3ZlIGZvdW5kIGEgYnVnLiBIb3cgZG8gSSByZXBvcnQgdGhpcyBidWcgdG8gdGhlIFdpbmUKICAgICAgICAgIHByb2dyYW1taW5nIHRlYW0/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQnVnIHJlcG9ydHMgc2hvdWxkIGJlIHN1Ym1pdHRlZCB0byBvdXIgb25saW5lIEJ1Z3ppbGxhIHN5c3RlbSAKICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi8vYnVncy53aW5laHEuY29tIj5odHRwOi8vYnVncy53aW5laHEuY29tLzwvdWxpbms+KS4KICAgICAgICAgIFlvdSBzaG91bGQgaW5jbHVkZSBhdCBsZWFzdCB0aGUgZm9sbG93aW5nOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFRoZSBXaW5lIHZlcnNpb24gdGVzdGVkCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFRoZSBXaW5kb3dzIGFwcGxpY2F0aW9uIG5hbWUsIGluY2x1ZGluZyB0aGUgdmVyc2lvbiwgYW5kLCBpZgogICAgICAgICAgICBhcHBsaWNhYmxlLCBhIFVSTCB0aGUgYXBwbGljYXRpb24gY2FuIGJlIGRvd25sb2FkZWQgZnJvbQogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBBIGJyaWVmIGRlc2NyaXB0aW9uIG9mIHRoZSBidWcKICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgVGhlIHJlbGV2YW50IHBhcnQocykgb2YgdGhlIG91dHB1dCBvZiB0aGUgV2luZSBkZWJ1Z2dlcgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBBIHNjcmVlbnNob3Qgb2YgdGhlIHZpc3VhbCBwcm9ibGVtLCBpZiBhcHBsaWNhYmxlCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgIDxwYXJhPgogICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCByZXBvcnRpbmcgYnVncyBwbGVhc2Ugc2VlIHRoZSAKICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL0RvY3Mvd2luZS11c2VyL2J1Zy1yZXBvcnRpbmcuc2h0bWwiPgogICAgICAgICBIb3cgdG8gcmVwb3J0IGEgYnVnPC91bGluaz4gc2VjdGlvbiBvZiB0aGUgV2luZSBVc2VycyBHdWlkZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAgICA8L3FhbmRhZGl2PgogCiAgICA8cWFuZGFkaXYgaWQ9IkhlbHBpbmctV2luZS1vci1iZWNvbWluZy1hLVdpbmUtZGV2ZWxvcGVyIj4KICAgICAgPHRpdGxlPkhlbHBpbmcgV2luZSBvciBiZWNvbWluZyBhIFdpbmUgZGV2ZWxvcGVyPC90aXRsZT4KICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWRvLUktYmVjb21lLWEtV2luZS1kZXZlbG9wZXIiPgogICAgICAgIDxwYXJhPkhvdyBkbyBJIGJlY29tZSBhIFdpbmUgZGV2ZWxvcGVyPyBXaGF0IGRvIEkgbmVlZCB0byBrbm93PzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIHlvdSBjYW4gcHJvZ3JhbSBDLCB0aGF0J3MgYSBnb29kIHN0YXJ0LiBEb3dubG9hZCB0aGUgc291cmNlcyB2aWEKICAgICAgICAgIENWUywgc3Vic2NyaWJlIHRvIHRoZSBtYWlsaW5nIGxpc3RzLCBsb29rIGFyb3VuZCB0aGUgc291cmNlLCBhbmQgcGF5CiAgICAgICAgICBhdHRlbnRpb24gdG8gdGhlIGNvbXAuZW11bGF0b3JzLm1zLXdpbmRvd3Mud2luZSBuZXdzZ3JvdXAgYW5kIHRoZSAKICAgICAgICAgIG1haWxpbmcgbGlzdHMgKDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLmNvbS9kZXYuc2h0bWwjbWwiPmh0dHA6Ly93d3cud2luZWhxLmNvbS9kZXYuc2h0bWwjbWw8L3VsaW5rPikuIFNlZSBpZiB0aGVyZSdzIGFueXRoaW5nCiAgICAgICAgICB0aGF0IHlvdSB0aGluayB5b3UgY2FuIGZpeCBvciB3b3JrIG9uLiBZb3Ugd29uJ3QgaGF2ZSBtdWNoIHRyb3VibGUKICAgICAgICAgIGZpbmRpbmcgYXJlYXMgdGhhdCBuZWVkIHdvcmsgaW4gV2luZSAoZ3JlcCBmb3IgRklYTUVzIGluIHRoZSBzb3VyY2UpLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikhvdy1jYW4tSS1jb250cmlidXRlLXRvLXRoZS1XaW5lLXByb2plY3QiPgogICAgICAgIDxwYXJhPkhvdyBjYW4gSSBoZWxwIGNvbnRyaWJ1dGUgdG8gdGhlIFdpbmUgcHJvamVjdCwgYW5kIGluIHdoYXQgd2F5KHMpPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFlvdSBjYW4gY29udHJpYnV0ZSBwcm9ncmFtbWluZyBvciBkb2N1bWVudGF0aW9uIHNraWxscywgb3IgbW9uZXRhcnkKICAgICAgICAgIG9yIGVxdWlwbWVudCBkb25hdGlvbnMsIHRvIGFpZCB0aGUgV2luZSBkZXZlbG9wZXJzIGluIHJlYWNoaW5nIHRoZWlyIAogICAgICAgICAgZ29hbHMuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgRm9yIGEgbGlzdCBvZiBpZGVhcyBvZiBob3cgeW91IGNhbiBoZWxwLCBwbGVhc2UgY29uc3VsdCB0aGUgCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5jb20vYWJvdXQvaW5kZXgucGhwP2NvbnRyaWIiPgogICAgICAgICAgV2luZSBjb250cmliIHBhZ2U8L3VsaW5rPi4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJLXdhbnQtdG8taGVscC1iZXRhLXRlc3QtV2luZSI+CiAgICAgICAgPHBhcmE+SSB3YW50IHRvIGhlbHAgYmV0YSB0ZXN0IFdpbmUuIEhvdyBjYW4gSSBkbyB0aGlzPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgc3RpbGwgY29uc2lzdHMgb2Ygc29tZSBBbHBoYSBjb2RlIGF0IHRoaXMgdGltZS4gSG93ZXZlciwgYW55b25lCiAgICAgICAgICBpcyB3ZWxjb21lIHRvIGRvd25sb2FkIHRoZSBsYXRlc3QgdmVyc2lvbiwgYW5kIHRyeSBpdCBvdXQgYXQgYW55CiAgICAgICAgICB0aW1lLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikktd3JvdGUtc29tZS1jb2RlLUktd291bGQtbGlrZS10by1zdWJtaXQiPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSSBoYXZlIHdyaXR0ZW4gc29tZSBjb2RlIHRoYXQgSSB3b3VsZCBsaWtlIHRvIHN1Ym1pdCB0byB0aGUgV2luZQogICAgICAgICAgcHJvamVjdC4gSG93IGRvIEkgZ28gYWJvdXQgZG9pbmcgdGhpcz8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBTdWJtaXR0aW5nIGEgcGF0Y2ggZm9yIGluY2x1c2lvbiBpbiBXaW5lIGlzIHByZXR0eSBzaW1wbGUuCiAgICAgICAgICBCYXNpY2FsbHkgYWxsIHlvdSBoYXZlIHRvIGRvIGlzIHNlbmQgdGhlIHBhdGNoIHRvIHRoZQogICAgICAgICAgd2luZS1wYXRjaGVzIG1haWxpbmcgbGlzdCAKICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5jb20vZGV2LnNodG1sI21sIj5odHRwOi8vd3d3LndpbmVocS5jb20vZGV2LnNodG1sI21sPC8+KS4KICAgICAgICAgIFN0aWxsIHRoZXJlIGFyZSBhIGNvdXBsZSBvZiByZWNvbW1lbmRhdGlvbnMgYWJvdXQgdGhlIHBhdGNoIGZvcm1hdAogICAgICAgICAgYW5kIGFsbCBzbyBpdCdzIGJlc3QgdG8gcmVhZCBvdXIgcGFnZSBkZXNjcmliaW5nIDx1bGluawogICAgICAgICAgdXJsPSJodHRwOi8vd3d3LndpbmVocS5jb20vc2l0ZS9zZW5kaW5nX3BhdGNoZXMiPmhvdyB0byBzdWJtaXQKICAgICAgICAgIHBhdGNoZXM8Lz4uIFRoaXMgd2lsbCBhbHNvIGdpdmUgeW91IG1vcmUgZGV0YWlscyBhYm91dCB0aGUgd2hvbGUKICAgICAgICAgIHByb2Nlc3MgYW5kIGluIHBhcnRpY3VsYXIgdG8gd2hhdCB3aWxsIGhhcHBlbiB0byB5b3VyIHBhdGNoIG9uY2UKICAgICAgICAgIHN1Ym1pdHRlZC4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAgICA8L3FhbmRhZGl2PgogCiAgICA8cWFuZGFkaXYgaWQ9IkRldmVsb3BpbmctcHJvZ3JhbXMtdXNpbmctV2luZS1XaW5lTGliIj4KICAgICAgPHRpdGxlPkRldmVsb3BpbmcgcHJvZ3JhbXMgdXNpbmcgV2luZS9XaW5lTGliPC90aXRsZT4KICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iQ2FuLUktdXNlLVdpbmUtdG8tcG9ydC1XaW4zMi1zb3VyY2VzLXRvLVVuaXgiPgogICAgICAgIDxwYXJhPkNhbiBJIHVzZSBXaW5lIHRvIHBvcnQgbXkgV2luMzIgc291cmNlcyB0byBVbml4PzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoYXQgaXMgdGhlIGlkZWEgb2YgV2luZWxpYi4gUmlnaHQgbm93IHlvdSBtYXkgc3RpbGwgaGF2ZSBzb21lIAogICAgICAgICAgZGlmZmljdWx0aWVzLCBidXQgdGhpcyBpcyBjaGFuZ2luZyBhbGwgdGhlIHRpbWUuIFJlYWQgdGhlIAogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL0RvY3Mvd2luZWxpYi11c2VyLyI+V2luZWxpYiBVc2VyJ3MgR3VpZGU8L3VsaW5rPiBmb3IgaW5mby4KCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaWxsLU1GQy13b3JrLXdpdGgtV2luZS1XaGF0LWRvLUktbmVlZC10by1kbyI+CiAgICAgICAgPHBhcmE+V2lsbCBNRkMgd29yayB3aXRoIFdpbmU/IFdoYXQgZG8gSSBuZWVkIHRvIGRvPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgaXMgbm90IGltcGxlbWVudGluZyBhbiBNRkMgcmVwbGFjZW1lbnQgbm9yIGRvZXMgaXQgaW50ZW5kIHRvLgogICAgICAgICAgSG93ZXZlciBpdCBpcyBwb3NzaWJsZSAod2l0aCBhIGxvdCBvZiB3b3JrKSB0byBjb21waWxlIHRoZSBNRkMgZnJvbQogICAgICAgICAgc291cmNlIGFuZCB0aHVzIHByb2R1Y2UgYW4gPGZpbGVuYW1lPm1mYzQyLmRsbC5zbzwvZmlsZW5hbWU+IGxpYnJhcnkuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgUGxlYXNlIHJlZmVyIHRvIHRoZSAKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLm9yZy9Eb2NzL3dpbmVsaWItdXNlci8iPldpbmVsaWIgVXNlcidzIEd1aWRlPC91bGluaz4gZm9yIGhvdyB0byBkbyB0aGlzLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IkFyZS10aGVyZS1jb21tZXJjaWFsLWFwcHMtcG9ydGVkLXVzaW5nLVdpbmUiPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQXJlIHRoZXJlIGFueSBjb21tZXJjaWFsIGFwcGxpY2F0aW9ucyB3aGljaCBoYXZlIGJlZW4gcG9ydGVkCiAgICAgICAgICB1c2luZyBXaW5lPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEhlcmUgYXJlIGZldyBleGFtcGxlcyBvZiBhcHBsaWNhdGlvbnMgcG9ydGVkIHVzaW5nIFdpbmUgb3IgV2luZWxpYjoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBDb3JlbCdzIFdvcmRQZXJmZWN0IE9mZmljZSBTdWl0ZSAyMDAwIHdhcyBwb3J0ZWQgdG8gTGludXggdXNpbmcKICAgICAgICAgICAgV2luZS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgS3lsaXgsIHRoZSBMaW51eCB2ZXJzaW9uIG9mIERlbHBoaSwgd2FzIHBvcnRlZCB0byBMaW51eCB1c2luZwogICAgICAgICAgICBXaW5lbGliLiBUaGUgSURFIGFjdHVhbGx5IHVzZXMgYSBjb21iaW5hdGlvbiBvZiBRVCBhbmQgV2luZWxpYgogICAgICAgICAgICB3aGljaCB3b3VsZCBub3QgaGF2ZSBiZWVuIHBvc3NpYmxlIHRvIGFjaGlldmUgdXNpbmcgb25seSBXaW5lLgogICAgICAgICAgICBUaGUgZ2VuZXJhdGVkIGFwcGxpY2F0aW9ucyBob3dldmVyIGRvIG5vdCBkZXBlbmQgb24gV2luZSBpbgogICAgICAgICAgICBhbnkgd2F5LgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBNdXNpY01hdGNoIEp1a2VCb3ggNSBoYXMgYWxzbyBiZWVuCiAgICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cuaXR3b3JsZC5jb20vbmwvbG54X2Rlc2t0b3AvMDEwNDIwMDEvIj5wb3J0ZWQ8Lz4KICAgICAgICAgICAgdG8gTGludXggdXNpbmcgV2luZWxpYi4gSG93ZXZlciBtb3JlIHJlY2VudCB2ZXJzaW9ucyBoYXZlIG5vdCwgYW5kCiAgICAgICAgICAgIHZlcnNpb24gNSBpcyBubyBsb25nZXIgYXZhaWxhYmxlLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBBYmlsaXR5IE9mZmljZQogICAgICAgICAgICAoPHVsaW5rIHVybD0iaHR0cDovL3d3dy5hYmlsaXR5LmNvbS9saW51eC9hYmlsaXR5bGludXgucGhwIj5odHRwOi8vd3d3LmFiaWxpdHkuY29tL2xpbnV4L2FiaWxpdHlsaW51eC5waHA8L3VsaW5rPikKICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgSUJNJ3MgV2Vic3BoZXJlCiAgICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi8vd3d3N2IuYm91bGRlci5pYm0uY29tL2RsL3N3d3Mvc3d3c2dkZGItcCI+aHR0cDovL3d3dzdiLmJvdWxkZXIuaWJtLmNvbS9kbC9zd3dzL3N3d3NnZGRiLXA8L3VsaW5rPikKICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBNYW55IG90aGVyIGltcG9ydGFudCBhcHBsaWNhdGlvbnMgaGF2ZSBhbHJlYWR5IGJlZW4gcG9ydGVkLiAod2UgYXJlCiAgICAgICAgICBzcGVha2luZyBvZiBzZXZlcmFsIHRvcCA1MDAgYXBwbGljYXRpb25zIGhlcmUpCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWNhbi1JLWRldGVjdC1XaW5lIj4KICAgICAgICA8cGFyYT5Ib3cgY2FuIEkgZGV0ZWN0IFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWW91IHJlYWxseSBzaG91bGRuJ3Qgd2FudCB0byBkbyB0aGlzLiBJZiB0aGVyZSdzIGEgcXVpcmsgaW4gV2luZSAKICAgICAgICAgIHlvdSBuZWVkIHRvIHdvcmsgYXJvdW5kLCBpdCdzIG11Y2ggYmV0dGVyIHRvIGZpeCBpdCBpbiBXaW5lIChhZnRlcgogICAgICAgICAgYWxsIHlvdSdyZSBhIGRldmVsb3Blciwgc28geW91IHNob3VsZCBiZSBhYmxlIHRvIGdhdGhlciBlbm91Z2ggaGVscAogICAgICAgICAgYW5kIGtub3dsZWRnZSB0byBmaXggaXQgZm9yIHJlYWwpLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgCiAgICA8L3FhbmRhZGl2PgoKICAgIDxxYW5kYWRpdiBpZD0iV2luZS1IUS1pc3N1ZXMiPgogICAgICA8dGl0bGU+V2luZSBIUSBpc3N1ZXM8L3RpdGxlPgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaHktYXJlLXRoZS1tYWlsbGlzdHMtc2V0LXRvLXJlcGx5LXRvLWF1dGhvciI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaHkgYXJlIHRoZSBtYWlsbGlzdHMgc2V0IHRvIHJlcGx5IHRvIGF1dGhvciwgbm90IHRvIG1haWxpbmcgbGlzdD8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGVyZSBhcmUgdmVyeSB2YWxpZCByZWFzb25zIGZvciBkb2luZyBzby4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctdG8tdW5zdWJzY3JpYmUtZnJvbS10aGUtbWFpbGluZy1saXN0cyI+CiAgICAgICAgPHBhcmE+SG93IHRvIHVuc3Vic2NyaWJlIGZyb20gdGhlIG1haWxpbmcgbGlzdHM/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgUGxlYXNlIHNlZTogPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL2RldmVsb3BtZW50LyNtbCI+aHR0cDovL3d3dy53aW5laHEub3JnL2RldmVsb3BtZW50LyNtbDwvdWxpbms+CiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgIDwvcWFuZGFkaXY+CiAKICA8L3FhbmRhc2V0PgoKPCEtLSBLZWVwIHRoaXMgY29tbWVudCBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlCkxvY2FsIHZhcmlhYmxlczoKbW9kZTogc2dtbApzZ21sLXBhcmVudC1kb2N1bWVudDooIndpbmUtZGV2ZWwuc2dtbCIgImJvb2siICJwYXJ0IiAiY2hhcHRlciIgIiIpCkVuZDoKLS0+Cg==