PCEtLSAqKiogV2luZSBGQVEgKioqIC0tPgogIDx0aXRsZT5XaW5lIEZBUTwvdGl0bGU+CgogIDxxYW5kYXNldD4KICAgIDxxYW5kYWRpdiBpZD0iQWJvdXQtdGhpcy1GQVEiPjx0aXRsZT5BYm91dCB0aGlzIEZBUTwvdGl0bGU+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ildoby1tYWludGFpbnMtdGhpcy1GQVEiPgogICAgICAgIDxwYXJhPldobyBtYWludGFpbnMgdGhpcyBGQVEgPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT5EYXZlIEdhcmRuZXIgbWFpbnRhaW5lZCBpdCBmcm9tIDE5OTUtMTk5OC48L3BhcmE+CiAgICAgICAgPHBhcmE+RG91Z2xhcyBSaWRnd2F5IChyaWRnd2F5QHdpbmVocS5vcmcpIHRvb2sgaXQgb3ZlciBpbiAxOTk5LjwvcGFyYT4KICAgICAgICA8cGFyYT5BbmRyZWFzIE1vaHIgKGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbSkgY29udmVydGVkIGl0IHRvIEZBUS1PLU1hdGljIGluIDIwMDAuPC9wYXJhPgogICAgICAgIDxwYXJhPkRpbWl0cmllIE8uIFBhdW4sIEtlaXRoIE1hdHRoZXdzIGFuZCBUb20gV2lja2xpbmUgKGluIGFscGhhYmV0aWNhbCBvcmRlcikgcmVvcmdhbml6ZWQgaXQgaW4gMjAwMi48L3BhcmE+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+CiAgICAgICAgICBJbnRlZ3JhdGluZyBhIENQVSBlbXVsYXRvciBpbiBXaW5lIHdvdWxkIGJlIGV4dHJlbWVseSBoYXJkLAogICAgICAgICAgZHVlIHRvIHRoZSBsYXJnZSBudW1iZXIgb2YgV2luZG93cyBBUElzIGFuZCB0aGUgY29tcGxleAogICAgICAgICAgZGF0YSB0eXBlcyB0aGV5IGV4Y2hhbmdlLiBJdCBpcyBub3QgdW5jb21tb24gZm9yIGEgV2luZG93cyBBUEkgdG8KICAgICAgICAgIHRha2UgdGhyZWUgb3IgbW9yZSBwb2ludGVycyB0byBzdHJ1Y3R1cmVzIGNvbXBvc2VkIG9mIG1hbnkgZmllbGRzLAogICAgICAgICAgaW5jbHVkaW5nIHBvaW50ZXJzIHRvIG90aGVyIGNvbXBsZXggc3RydWN0dXJlcy4gRm9yIGVhY2ggb2YgdGhlc2UKICAgICAgICAgIHdlIHdvdWxkIG5lZWQgYSBjb252ZXJzaW9uIHJvdXRpbmUgdG8gZGVhbCB3aXRoIHRoZSBieXRlIG9yZGVyIGFuZAogICAgICAgICAgYWxpZ25tZW50IGlzc3Vlcy4gRnVydGhlcm1vcmUsIFdpbmRvd3MgYWxzbyBjb250YWlucyBtYW55IGNhbGxiYWNrCiAgICAgICAgICBtZWNoYW5pc21zIHRoYXQgY29uc3RpdHV0ZSBhcyBtYW55IGV4dHJhIHBsYWNlcyB3aGVyZSB3ZSB3b3VsZCBoYXZlCiAgICAgICAgICB0byBoYW5kbGUgdGhlc2UgY29udmVyc2lvbiBpc3N1ZXMuIFdpbmUgYWxyZWFkeSBoYXMgdG8gZGVhbCB3aXRoCiAgICAgICAgICAxNiB2cy4gMzIgYml0IEFQSXMgYW5kIEFuc2kgdnMuIFVuaWNvZGUgQVBJcyB3aGljaCBib3RoCiAgICAgICAgICBpbnRyb2R1Y2Ugc2lnbmlmaWNhbnQgY29tcGxleGl0eS4gQWRkaW5nIHN1cHBvcnQgZm9yIGEgQ1BVIGVtdWxhdG9yCiAgICAgICAgICBpbnNpZGUgV2luZSB3b3VsZCBpbnRyb2R1Y2UgYXQgbGVhc3QgZG91YmxlIHRoYXQgY29tcGxleGl0eSBhbmQKICAgICAgICAgIG9ubHkgc2VydmUgdG8gc2xvdyBkb3duIHRoZSBkZXZlbG9wbWVudCBvZiBXaW5lLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEZvcnR1bmF0ZWx5IGFub3RoZXIgc29sdXRpb24gZXhpc3RzIHRvIHJ1biBXaW5kb3dzIGFwcGxpY2F0aW9ucwogICAgICAgICAgb24gbm9uLXg4NiBwbGF0Zm9ybXM6IHJ1biBib3RoIFdpbmUgYW5kIHRoZSBhcHBsaWNhdGlvbiBpbnNpZGUgdGhlCiAgICAgICAgICBDUFUgZW11bGF0b3IuIEFzIGxvbmcgYXMgdGhlIGVtdWxhdG9yIHByb3ZpZGVzIGEgc3RhbmRhcmQgVW5peAogICAgICAgICAgZW52aXJvbm1lbnQsIFdpbmUgc2hvdWxkIG9ubHkgbmVlZCBtaW5pbWFsIG1vZGlmaWNhdGlvbnMuIFdoYXQKICAgICAgICAgIHBlcmZvcm1hbmNlIHlvdSBsb3NlIGR1ZSB0byBXaW5lIHJ1bm5pbmcgaW5zaWRlIHRoZSBlbXVsYXRvcgogICAgICAgICAgcmF0aGVyIHRoYW4gbmF0aXZlbHksIHlvdSBnYWluIGluIGNvbXBsZXhpdHkgaW5zaWRlIG9mIFdpbmUuCiAgICAgICAgICBGdXJ0aGVybW9yZSwgaWYgdGhlIGVtdWxhdG9yIGlzIGZhc3QgZW5vdWdoIHRvIHJ1biBXaW5kb3dzCiAgICAgICAgICBhcHBsaWNhdGlvbnMsIFBob3Rvc2hvcCBmb3IgaW5zdGFuY2UsIHRoZW4gaXQgc2hvdWxkIGJlIGZhc3QgZW5vdWdoCiAgICAgICAgICB0byBydW4gdGhhdCBzYW1lIFdpbmRvd3MgYXBwbGljYXRpb24gcGx1cyBXaW5lLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFR3byBwcm9qZWN0cyBoYXZlIHN0YXJ0ZWQgYWxvbmcgdGhvc2UgbGluZXM6IDx1bGluawogICAgICAgICAgdXJsPSJodHRwOi8vZmFicmljZS5iZWxsYXJkLmZyZWUuZnIvcWVtdS8iPlFFTVU8Lz4sIGFuCiAgICAgICAgICBvcGVuLXNvdXJjZSBwcm9qZWN0LCBhbmQgPHVsaW5rCiAgICAgICAgICB1cmw9Imh0dHA6Ly93d3cudHJhbnNpdGl2ZXMuY29tL3RlY2hfb3ZlcnZpZXcuaHRtIj5EeW5hbWl0ZTwvPiwKICAgICAgICAgIGEgY29tbWVyY2lhbCBDUFUgZW11bGF0b3IgZW52aXJvbm1lbnQgZnJvbQogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy50cmFuc2l0aXZlcy5jb20vIj5UcmFuc2l0aXZlcyBUZWNobm9sb2dpZXM8Lz4KICAgICAgICAgIHdoaWNoIGhhcyBiZWVuIDx1bGluawogICAgICAgICAgdXJsPSJodHRwOi8vd3d3LnRyYW5zZ2FtaW5nLmNvbS9uZXdzLnBocD9uZXdzaWQ9MzciPnBhaXJlZAogICAgICAgICAgd2l0aCBXaW5lPC8+LgogICAgICAgIDwvcGFyYT4KCiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaHktd291bGQtYW55b25lLXdhbnQtV2luZS1XaW5kb3dzLXN1Y2siPgogICAgICAgIDxwYXJhPldoeSB3b3VsZCBhbnlvbmUgd2FudCBXaW5lPyBEb2Vzbid0IFdpbmRvd3Mgc3Vjaz88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBGaXJzdCBXaW5lIGlzIG5vdCBhYm91dCBydW5uaW5nIFdpbmRvd3MgYnV0IGFib3V0IHJ1bm5pbmcgV2luZG93cyAKICAgICAgICAgIGFwcGxpY2F0aW9ucy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBTbyBpZiBhbGwgeW91ciBjb21wdXRpbmcgbmVlZHMgYXJlIGZ1bGZpbGxlZCBieSBuYXRpdmUgVW5peCAKICAgICAgICAgIGFwcGxpY2F0aW9ucywgdGhlbiB5b3UgZG8gbm90IG5lZWQgV2luZSBhbmQgc2hvdWxkIG5vdCBiZSB1c2luZwogICAgICAgICAgaXQuIEhvd2V2ZXIsIGlmIHlvdSBkZXBlbmQgb24gb25lIG9yIG1vcmUgb2YgdGhlIHRlbnMgb2YgCiAgICAgICAgICB0aG91c2FuZHMgb2YgV2luZG93cyBhcHBsaWNhdGlvbnMsIHRoZW4gV2luZSBpcyB0aGUgYmVzdCB3YXkgdG8KICAgICAgICAgIHVzZSBpdCB3aXRob3V0IGdpdmluZyB1cCBvbiBVbml4LiBMZXQncyBsb29rIGF0IHRoZSBhbHRlcm5hdGl2ZXMKICAgICAgICAgIHRvIHNlZSB3aHk6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIG1vc3Qgb2J2aW91cyBhbHRlcm5hdGl2ZSBpcyB0byBkdWFsLWJvb3QuIFRoaXMgaXMgdGhlIHNvbHV0aW9uCiAgICAgICAgICB0aGF0IHByb3ZpZGVzIHRoZSBiZXN0IGNvbXBhdGliaWxpdHkuIEhvd2V2ZXIgaXQgcmVxdWlyZXMgdGhhdCB5b3UKICAgICAgICAgIGFjcXVpcmUgYSBXaW5kb3dzIGxpY2Vuc2UgYW5kIHRoZW4gZGVkaWNhdGUgYSBnb29kIGNodW5rIG9mIHlvdXIgCiAgICAgICAgICBoYXJkLWRyaXZlIHRvIFdpbmRvd3MuIEJ1dCB0aGUgd29yc3QgaXMgeWV0IHRvIGNvbWUuIEVhY2ggdGltZSB5b3UKICAgICAgICAgIHdpbGwgd2FudCB0byB1c2UgdGhhdCBhcHBsaWNhdGlvbiB5b3Ugd2lsbCBoYXZlIHRvIHJlYm9vdCB0byAKICAgICAgICAgIFdpbmRvd3MuIFRoaXMgaXMgZXNwZWNpYWxseSBzaWduaWZpY2FudCBpZiBleHRlcm5hbCBmYWN0b3JzIGRpY3RhdGUKICAgICAgICAgIHdoZW4geW91IG11c3QgdXNlIHRoaXMgYXBwbGljYXRpb24gKGUuZy4gY3JlZGl0IGNhcmQgdG8gcHJvY2VzcywgCiAgICAgICAgICBlbWFpbCB0byByZXRyaWV2ZSBmcm9tIGEgTG90dXMgTm90ZXMgc2VydmVyKS4gVGhlbiB5b3Ugd2lsbCBmaW5kCiAgICAgICAgICB5b3Vyc2VsZiBmb3JjZWQgdG8gY2xvc2UgYWxsIHlvdXIgTGludXggYXBwbGljYXRpb25zIGp1c3QgdG8gcnVuCiAgICAgICAgICB0aGF0IG9uZSBXaW5kb3dzIGFwcGxpY2F0aW9uLiBZb3UgbWF5IHF1aWNrbHkgZ2V0IHRpcmVkIG9mIHRoaXMsIG9yCiAgICAgICAgICB3aWxsIGZpbmQgdGhhdCBzdWNoIGEgc2l0dWF0aW9uIGlzIGltcG9zc2libGUgdG8ganVzdGlmeSBpbiBhIAogICAgICAgICAgYnVzaW5lc3MgZW52aXJvbm1lbnQuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIG5leHQgc29sdXRpb24gaXMgdG8gaW5zdGFsbCB2aXJ0dWFsIG1hY2hpbmUgZW11bGF0aW9uIHNvZnR3YXJlCiAgICAgICAgICBzdWNoIGFzIFZNV2FyZSwgV2luNExpbiBvciBQbGV4ODYuIFRoZW4geW91IGNhbiB1c2Ugd2luZG93cyAKICAgICAgICAgIGFwcGxpY2F0aW9ucyB3aXRob3V0IHN1ZmZlcmluZyBzdWNoIGEgYmlnIGRpc3J1cHRpb24uIEJ1dCBpdCBzdGlsbAogICAgICAgICAgcmVxdWlyZXMgdGhhdCB5b3UgYWNxdWlyZSBhIFdpbmRvd3MgbGljZW5zZSBhbmQgZGVkaWNhdGUgYXMgbXVjaCAKICAgICAgICAgIGRpc2sgc3BhY2UgdG8gV2luZG93cy4gRnVydGhlcm1vcmUgeW91IHdpbGwgcGF5IGZvciB0aGUgYWRkZWQgCiAgICAgICAgICBjb252ZW5pZW5jZTogaWYgdXNpbmcgVk1XYXJlIG9yIFdpbjRMaW4geW91IGhhdmUgdG8gYnV5IGFub3RoZXIgCiAgICAgICAgICBsaWNlbnNlLCBhbmQgbW9yZSBpbXBvcnRhbnRseSB5b3Ugbm93IGhhdmUgdG8gZGVkaWNhdGUgYSBnb29kIGNodW5rCiAgICAgICAgICBvZiB5b3VyIGNvbXB1dGVyJ3MgbWVtb3J5IHRvIHRoZSB2aXJ0dWFsIG1hY2hpbmUuIFBlcmZvcm1hbmNlIHdpbGwKICAgICAgICAgIHRha2UgYSBzaWduaWZpY2FudCBoaXQgdG9vLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFVzaW5nIFdpbmUgbGV0cyB5b3UgYXZvaWQgYWxsIG9mIHRoYXQgb3ZlcmhlYWQ6IFdpbmRvd3MgbGljZW5zZSwKICAgICAgICAgIGhhcmQtZHJpdmUgc3BhY2UgcmVxdWlyZWQgYnkgV2luZG93cywgbWVtb3J5IGFuZCBwZXJmb3JtYW5jZSBoaXQgCiAgICAgICAgICB0YWtlbiBieSBlbXVsYXRlZCB2aXJ0dWFsIG1hY2hpbmVzLiBOb3cgeW91IGNhbiBzdGFydCB5b3VyIFdpbmRvd3MKICAgICAgICAgIGFwcGxpY2F0aW9uIHN0cmFpZ2h0IGZyb20geW91ciByZWd1bGFyIGRlc2t0b3AgZW52aXJvbm1lbnQsIHBsYWNlCiAgICAgICAgICB0aGF0IGFwcGxpY2F0aW9uJ3Mgd2luZG93IHNpZGUgYnkgc2lkZSB3aXRoIG5hdGl2ZSBhcHBsaWNhdGlvbnMsCiAgICAgICAgICBjb3B5L3Bhc3RlIGZyb20gb25lIHRvIHRoZSBvdGhlciwgYW5kIHJ1biBpdCBhbGwgYXQgZnVsbCBzcGVlZC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJdCBpcyBhbHNvIGEgcHJldHR5IHZpdGFsIHBhcnQgb2YgbWlncmF0aW5nIGEgbGFyZ2Ugb3JnYW5pemF0aW9uLAogICAgICAgICAgeW91IGNhbid0IGNoYW5nZSBhIDUwMDAgZGVza3RvcCBzZXR1cCBvdmVybmlnaHQgd2l0aG91dCBhIGxvdCBvZiByaXNrLgogICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iVXNlLVdpbmRvd3MtZHJpdmVyLXdpdGgtV2luZSI+CiAgICAgICAgPHBhcmE+Q2FuIEkgdXNlIFdpbmUgdG8gbWFrZSB0aGUgV2luZG93cyBkcml2ZXIgZm9yIG15IG5ldHdvcmsgY2FyZCAvCiAgICAgICAgICBncmFwaGljcyBjYXJkIC8gc2Nhbm5lciAvIGV0Yy4gd29yayBvbiBVbml4PzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSBnb2FsIG9mIFdpbmUgaXMgdG8gbWFrZSBpdCBwb3NzaWJsZSB0byBydW4gV2luZG93cyBhcHBsaWNhdGlvbnMKICAgICAgICAgIG9uIFVuaXgsIG5vdCBXaW5kb3dzIGRyaXZlcnMgb3IgVnhEcy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBEcml2ZXJzIGFuZCBXaW5kb3dzIGFwcGxpY2F0aW9ucyBiZWxvbmcgdG8gZGlmZmVyZW50IHdvcmxkcy4KICAgICAgICAgIEFwcGxpY2F0aW9ucyBydW4gaW4gdXNlciBtb2RlIGFuZCB1c2UgdGhlIEFQSXMgcHJvdmlkZWQgYnkKICAgICAgICAgIHRoZSBrZXJuZWwgYW5kIHRoZSBvdGhlciB1c2VyIG1vZGUgZGxscy4gSW4gY29udHJhc3QsIGRyaXZlcnMKICAgICAgICAgIGFyZSBsb2FkZWQgaW4gdGhlIFdpbmRvd3Mga2VybmVsLCBpLmUuIGluIHJpbmcgMCBpbnN0ZWFkIG9mIHJpbmcKICAgICAgICAgIDMsIGhhdmUgdG8gZGVhbCB3aXRoIHNwZWNpZmljIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3VlcywgYW5kIHVzZQogICAgICAgICAgaW5zdHJ1Y3Rpb25zIG5vdCBhdmFpbGFibGUgdG8gcmVndWxhciBhcHBsaWNhdGlvbnMuIFRoaXMgbWVhbnMKICAgICAgICAgIHRoZXkgd291bGQgbm90IGJlIGFibGUgdG8gcnVuIGluIFdpbmUgc2luY2UgV2luZSBydW5zIGVudGlyZWx5CiAgICAgICAgICBpbiB1c2VyIG1vZGUuIFJhdGhlciB5b3Ugd291bGQgaGF2ZSB0byBtb2RpZnkgdGhlIExpbnV4IGtlcm5lbC4KICAgICAgICAgIEJ1dCBpbiBhZGRpdGlvbiwgZHJpdmVycyB1c2UgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBBUEkgZnJvbQogICAgICAgICAgcmVndWxhciBXaW5kb3dzIGFwcGxpY2F0aW9ucy4gU28gdGhlIHdvcmsgcGVyZm9ybWVkIG9uIFdpbmUgd291bGQKICAgICAgICAgIG5vdCBldmVuIGJlIG9mIGFueSB1c2UgZm9yIHN1Y2ggYSBwcm9qZWN0LiBJbiBvdGhlciB3b3JkcywgbWFraW5nCiAgICAgICAgICBpdCBwb3NzaWJsZSB0byB1c2UgV2luZG93cyBkcml2ZXJzIG9yIFZ4RHMgb24gVW5peCB3b3VsZCBiZSBhCiAgICAgICAgICBjb21wbGV0ZWx5IHNlcGFyYXRlIHByb2plY3QuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSG93ZXZlciwgaWYgeW91IHdhbnQgdG8gcmV1c2UgV2luZG93cyBkcml2ZXJzIG9uIGEgbm9uLU1pY3Jvc29mdAogICAgICAgICAgb3BlcmF0aW5nIHN5c3RlbSB3ZSByZWNvbW1lbmQgdGhhdCB5b3UgaGF2ZSBhIGxvb2sgYXQKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cucmVhY3Rvcy5jb20vIj5SZWFjdE9TPC8+LgogICAgICAgIDwvcGFyYT4KCiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGljaC1vbmUtb2YtdGhlLWRpZmZlcmVudC1XaW5lLXBhY2thZ2VzIj4KICAgICAgICA8cGFyYT5XaGljaCBvbmUgb2YgdGhlIGRpZmZlcmVudCBXaW5lIHBhY2thZ2VzIG91dCB0aGVyZSBpcyBnb29kIGZvciBtZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBDdXJyZW50bHkgdGhlcmUgaXMgYSBicm9hZCBzZWxlY3Rpb24gb2YgZGlmZmVyZW50IFdpbmUgcGFja2FnZXMvdmVyc2lvbnM6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDx2YXJpYWJsZWxpc3Q+CgoJICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgIDx0ZXJtPjx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLm9yZyI+V2luZTwvdWxpbms+PC90ZXJtPgogICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBUaGlzIGlzIHRoZSAic3RhbmRhcmQiIGRpc3RyaWJ1dGlvbiBvZiBXaW5lLiBJdHMgbGljZW5zZSBpcwogICAgICAgICAgICAgIHRoZSBMR1BMLCBpdCBjYW4gYmUgZG93bmxvYWRlZCBmb3IgZnJlZS4gQm90aCBzb3VyY2UgY29kZSBhbmQgYmluYXJpZXMKICAgICAgICAgICAgICBhcmUgYXZhaWxhYmxlIGluIHRoZSBkb3dubG9hZCBzZWN0aW9uIG9mIHRoZSBzaXRlLgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogCgkgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dGVybT48dWxpbmsgdXJsPSJodHRwOi8vcmV3aW5kLnNvdXJjZWZvcmdlLm5ldCI+UmVXaW5kPC91bGluaz48L3Rlcm0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIFRoaXMgaXMgYSBmb3JrZWQgV2luZSB0cmVlIHRoYXQgZ290IGNyZWF0ZWQgd2hlbiBXaW5lIGNoYW5nZWQgaXRzCiAgICAgICAgICAgICAgbGljZW5zZSBmcm9tIFgxMSB0byB0aGUgbW9yZSByZXN0cmljdGl2ZSBMR1BMLCBpbiBvcmRlciB0byBsZXQgCiAgICAgICAgICAgICAgcGVvcGxlIGNvbnRpbnVlIHRvIG1haW50YWluIGFuIFgxMSBsaWNlbnNlZCBXaW5lIHZlcnNpb24uIEl0cyAKICAgICAgICAgICAgICBsaWNlbnNlIGlzIFgxMSwgaXQgY2FuIGJlIGRvd25sb2FkZWQgZm9yIGZyZWUuIAogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAKCSAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgIDx0ZXJtPjx1bGluayB1cmw9Imh0dHA6Ly93d3cudHJhbnNnYW1pbmcuY29tIj5UcmFuc0dhbWluZydzIFdpbmVYPC91bGluaz48L3Rlcm0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIFRoaXMgaXMgVHJhbnNHYW1pbmcncyBXaW5lIHZlcnNpb24gc3BlY2lhbGx5IHN1aXRlZCBmb3IKICAgICAgICAgICAgICBnYW1lcy4gIEl0IGluY2x1ZGVzIG1vcmUgbWF0dXJlIERpcmVjdDNEIHN1cHBvcnQgdGhhbgogICAgICAgICAgICAgIFdpbmVIUSwgYWx0aG91Z2ggdGhlc2UgZGF5cyBXaW5lSFEgaGFzIHF1aXRlIGFkdmFuY2VkCiAgICAgICAgICAgICAgRDNEIHN1cHBvcnQgYXMgd2VsbC4gTW9zdCBvZiB0aGUgY29kZSBpcyB1bmRlciB0aGUgQUZQTAogICAgICAgICAgICAgIGFuZCBjYW4gYmUgZG93bmxvYWRlZCBmb3IgZnJlZS4KICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBIb3dldmVyIFRyYW5zR2FtaW5nIGFsc28gZGlzdHJpYnV0ZXMgYmluYXJpZXMgdGhhdCBjb250YWluCiAgICAgICAgICAgICAgaW1wcm92ZWQgY29weSBwcm90ZWN0aW9uIHN1cHBvcnQgKG5lZWRlZCBmb3IgbWFueQogICAgICAgICAgICAgIGdhbWVzKSwgc3VwcG9ydCwgYW5kIG90aGVyIGVuaGFuY2VtZW50cy4gVGhlc2UgcGFja2FnZXMgYXJlCiAgICAgICAgICAgICAgb25seSBhdmFpbGFibGUgaW4gYmluYXJ5IGZvcm0gdG8gc3Vic2NyaWJlZCBjdXN0b21lcnMKICAgICAgICAgICAgICAoJDUvbW9udGgsIG1pbmltdW0gdGhyZWUgbW9udGhzKS4KICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAKCSAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgIDx0ZXJtPjx1bGluayB1cmw9Imh0dHA6Ly93aW5lLmNvZGV3ZWF2ZXJzLmNvbSI+Q29kZVdlYXZlcnMnIFdpbmUgcHJldmlldzwvdWxpbms+PC90ZXJtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBUaGlzIGlzIGEgc3BlY2lhbCBwYWNrYWdlZCB2ZXJzaW9uIG9mIHRoZSBzdGFuZGFyZCBXaW5lIHRyZWUKICAgICAgICAgICAgICB3aGljaCBoYXMgYSBuaWNlIHNldHVwIGZvciBlYXN5IGluc3RhbGxhdGlvbi4gTGljZW5zZSBMR1BMLCBmcmVlCiAgICAgICAgICAgICAgZG93bmxvYWQuIEl0J3MgcHJldHR5IG9sZCBub3csIGFuZCBub3QgcmVjb21tZW5kZWQgZm9yIGdlbmVyYWwgdXNlLgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KIAoJICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgPHRlcm0+PHVsaW5rIHVybD0iaHR0cDovL3d3dy5jb2Rld2VhdmVycy5jb20vcHJvZHVjdHMvY3Jvc3NvdmVyLyI+Q29kZVdlYXZlcnMnIENyb3NzT3ZlciBQbHVnaW48L3VsaW5rPjwvdGVybT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgU3BlY2lhbCBXaW5lIGluc3RhbGxhdGlvbiB0byBiZSB1c2VkIGZvciBydW5uaW5nIFdpbmRvd3MKICAgICAgICAgICAgICBOZXRzY2FwZSBicm93c2VyIHBsdWdpbnMgc3VjaCBhcyBlLmcuIFF1aWNrVGltZSBpbiBMaW51eAogICAgICAgICAgICAgIGJyb3dzZXJzLiBDb3N0cyAkMzQuOTUuCiAgICAgICAgICAgICAgV2VsbCB3b3J0aCBpdCAodmVyeSBzdGFibGUgYW5kIHVzZWZ1bCBwYWNrYWdpbmcpLiAKICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgoKCSAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgIDx0ZXJtPjx1bGluayB1cmw9Imh0dHA6Ly93d3cuY29kZXdlYXZlcnMuY29tL3Byb2R1Y3RzL29mZmljZS8iPkNvZGVXZWF2ZXJzJyBDcm9zc092ZXIgT2ZmaWNlPC91bGluaz48L3Rlcm0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIFdpbmUgdmVyc2lvbiB3aXRoIHNwZWNpYWwgcGFja2FnaW5nIHRvIG1ha2Ugc3VyZSBhbG1vc3QgYWxsIAogICAgICAgICAgICAgIGltcG9ydGFudCBPZmZpY2UgdHlwZSBwcm9ncmFtcyB3b3JrIHByZXR0eSB3ZWxsLiBDb3N0cyAkNTQuOTUuIAogICAgICAgICAgICAgIFNlZW1zIHRvIGJlIHdlbGwgd29ydGggaXQgc28gZmFyIGFjY29yZGluZyB0byBzb21lIGNvbW1lbnRzLiAKICAgICAgICAgICAgICAobm90ZTogeW91J3JlIHN1cHBvcnRpbmcgYSBjb21wYW55IGFjdGl2ZWx5IGNvbnRyaWJ1dGluZyB0byBXaW5lCiAgICAgICAgICAgICAgaWYgeW91IGRlY2lkZSB0byBidXkgZWl0aGVyIFBsdWdpbiBvciBPZmZpY2UuKQogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAKICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dGVybT48dWxpbmsgdXJsPSJodHRwOi8vd3d3LmNvZGV3ZWF2ZXJzLmNvbS9wcm9kdWN0cy9jeG9mZmljZXNlcnZlci8iPkNvZGVXZWF2ZXJzJyBDcm9zc092ZXIgT2ZmaWNlIFNlcnZlciBFZGl0aW9uPC91bGluaz48L3Rlcm0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgQWxsb3dzIHlvdSB0byBydW4geW91ciBmYXZvcml0ZSBXaW5kb3dzIHByb2R1Y3Rpdml0eSBhcHBsaWNhdGlvbnMgaW4gCiAgICAgICAgICAgICBhIGRpc3RyaWJ1dGVkIHRoaW4tY2xpZW50IGVudmlyb25tZW50IHVuZGVyIExpbnV4LiBTZXJ2ZXIgRWRpdGlvbiBpcyAKICAgICAgICAgICAgIGFsc28gYSBncmVhdCBhZGRpdGlvbiB0byBTb2xhcmlzIGVudmlyb25tZW50cywgc2luY2UgdGhlcmUgYnVpbHQtaW4gCiAgICAgICAgICAgICBzdXBwb3J0IGZvciBTb2xhcmlzIGRlc2t0b3BzIG1ha2VzIHJ1bm5pbmcgV2luZG93cyBhcHBsaWNhdGlvbnMgYSAKICAgICAgICAgICAgIHBvc3NpYmlsaXR5IG9uIFN1biB3b3Jrc3RhdGlvbnMgYXMgd2VsbC4gRm9yIHByaWNpbmcganVzdCBmb2xsb3cgdGhpcyBsaW5rOiAKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cuY29kZXdlYXZlcnMuY29tL3Byb2R1Y3RzL3ByaWNpbmcucGhwIj5Dcm9zc092ZXIgT2ZmaWNlIFNlcnZlciBFZGl0aW9uIFByaWNpbmc8L3VsaW5rPgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+ICAgICAgICAgIAoKICAgICAgICA8L3ZhcmlhYmxlbGlzdD4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldoYXRzLXRoZS1oaXN0b3J5LW9mLVdpbmUiPgogICAgICAgIDxwYXJhPldoYXQncyB0aGUgaGlzdG9yeSBvZiBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSBXaW5lIHByb2plY3Qgc3RhcnRlZCBpbiAxOTkzIGFzIGEgd2F5IHRvIHN1cHBvcnQgcnVubmluZyBXaW5kb3dzIDMuMQogICAgICAgICAgcHJvZ3JhbXMgb24gTGludXguIEJvYiBBbXN0YWR0IHdhcyB0aGUgb3JpZ2luYWwgY29vcmRpbmF0b3IsIGJ1dCB0dXJuZWQKICAgICAgICAgIGl0IG92ZXIgZmFpcmx5IGVhcmx5IG9uIHRvIEFsZXhhbmRyZSBKdWxsaWFyZCwgd2hvIGhhcyBydW4gaXQgZXZlciAKICAgICAgICAgIHNpbmNlLiBBIDx1bGluayB1cmw9Im5ld3M6Y29tcC5lbXVsYXRvcnMubXMtd2luZG93cy53aW5lIj5uZXdzZ3JvdXA8L3VsaW5rPgogICAgICAgICAgd2FzIGNyZWF0ZWQgaW4gSnVseSAxOTk0LiBPdmVyIHRoZSB5ZWFycywgcG9ydHMgZm9yCiAgICAgICAgICBvdGhlciBVbml4ZXMgaGF2ZSBiZWVuIGFkZGVkLCBhbG9uZyB3aXRoIHN1cHBvcnQgZm9yIFdpbjMyIGFzIFdpbjMyIAogICAgICAgICAgYXBwbGljYXRpb25zIGJlY2FtZSBwb3B1bGFyLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL3NpdGUvYWJvdXQiPgogICAgICAgICAgaHR0cDovL3d3dy53aW5laHEub3JnL3NpdGUvYWJvdXQ8L3VsaW5rPgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldoYXQtaXMtdGhlLWN1cnJlbnQtdmVyc2lvbi1vZi1XaW5lIj4KICAgICAgICA8cGFyYT5XaGF0IGlzIHRoZSBjdXJyZW50IHZlcnNpb24gb2YgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBBIG5ldyB2ZXJzaW9uIG9mIFdpbmUgaXMgZGlzdHJpYnV0ZWQgYWJvdXQgZXZlcnkgbW9udGguIFlvdSB3aWxsIGJlIAogICAgICAgICAgYWJsZSB0byBrZWVwIHVwIG9uIGFsbCB0aGUgbGF0ZXN0IHJlbGVhc2VzIGJ5IHJlYWRpbmcgdGhlIG5ld3Nncm91cAogICAgICAgICAgPHVsaW5rIHVybD0ibmV3czpjb21wLmVtdWxhdG9ycy5tcy13aW5kb3dzLndpbmUiPgogICAgICAgICAgY29tcC5lbXVsYXRvcnMubXMtd2luZG93cy53aW5lPC91bGluaz4sIG9yIGJ5IHZpc2l0aW5nIHRoZQogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnIj5XaW5lIEhRIGhvbWVwYWdlPC91bGluaz4uIFdoZW4KICAgICAgICAgIGRvd25sb2FkaW5nIFdpbmUgZnJvbSB5b3VyIEZUUCBzaXRlIG9mIGNob2ljZSAoc2VlCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmcvZG93bmxvYWQuc2h0bWwiPnRoZSBEb3dubG9hZCBwYWdlPC91bGluaz4KICAgICAgICAgIGZvciBzb21lIG9mIHRoZXNlIGNob2ljZXMpLCB5b3UgY2FuIG1ha2Ugc3VyZSB0aGF0IHlvdSBhcmUgZ2V0dGluZyAKICAgICAgICAgIHRoZSBsYXRlc3QgdmVyc2lvbiBieSB3YXRjaGluZyB0aGUgdmVyc2lvbiBudW1iZXJzIGluIHRoZSBkaXN0cmlidXRpb24KICAgICAgICAgIGZpbGUgbmFtZS4gRm9yIGluc3RhbmNlLCB0aGUgZGlzdHJpYnV0aW9uIHJlbGVhc2VkIG9uIEF1Z3VzdCAxMywgMjAwMwogICAgICAgICAgd2FzIGNhbGxlZCBXaW5lLTIwMDMwODEzLnRhci5nei4gUGF0Y2ggZmlsZXMgYXJlIGFsc28gYXZhaWxhYmxlLiBJZgogICAgICAgICAgeW91IGFyZSBjdXJyZW50IHRvIHRoZSBwcmV2aW91cyB2ZXJzaW9uLCB5b3UgY2FuIGRvd25sb2FkIGFuZCBhcHBseSAKICAgICAgICAgIGp1c3QgdGhlIGN1cnJlbnQgcGF0Y2ggZmlsZSByYXRoZXIgdGhhbiB0aGUgZW50aXJlIG5ldyBkaXN0cmlidXRpb24uCiAgICAgICAgICBUaGUgcGF0Y2ggZmlsZSBuYW1lcyBmb2xsb3cgdGhlIHNhbWUgY29udmVudGlvbnMgYXMgdGhlIG1vbnRobHkgCiAgICAgICAgICBkaXN0cmlidXRpb24uIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLm9yZy9zaXRlL2N2cyI+CiAgICAgICAgICBSZWFkLW9ubHkgQ1ZTPC91bGluaz4gYWNjZXNzIGlzIGFsc28gYXZhaWxhYmxlLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldoYXQtaXMtdGhlLWN1cnJlbnQtU3RhdHVzLW9mLVdpbmUiPgogICAgICAgIDxwYXJhPldoYXQgaXMgdGhlIGN1cnJlbnQgU3RhdHVzIG9mIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQXMgb2YgbWlkIDIwMDMsIFdpbmUgY29uc2lzdHMgb2YgYWJvdXQgMS40IG1pbGxpb24gbGluZXMgb2YgY29kZSwKICAgICAgICAgIHdyaXR0ZW4gYnkgbW9yZSB0aGFuIDU1MCBkZXZlbG9wZXJzIGZyb20gZG96ZW5zIG9mIGNvdW50cmllcyBhcm91bmQKICAgICAgICAgIHRoZSB3b3JsZC4gV2luZSBpcyBpbiBhY3RpdmUgdXNlIGJ5IGFuIGVzdGltYXRlZCAxMDBLIHBlb3BsZS4gV2luZQogICAgICAgICAgaW1wbGVtZW50cyBtb3JlIHRoYW4gOTAlIG9mIHRoZSBjYWxscyBpbiBwb3B1bGFyIFdpbmRvd3MgCiAgICAgICAgICBzcGVjaWZpY2F0aW9ucyBzdWNoIGFzIEVDTUEtMjM0IGFuZCBPcGVuMzIuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWW91IG1heSBhbHNvIHdhbnQgdG8gbG9vayBhdCB0aGUKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLm9yZy9zaXRlL3N0YXR1cyI+CiAgICAgICAgICBTdGF0dXMgcGFnZTwvdWxpbms+IGZvciBhIGdsb2JhbCB2aWV3IG9uIFdpbmUncyBpbXBsZW1lbnRhdGlvbiBwcm9ncmVzcy4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGVuLXdpbGwtV2luZS1iZS1maW5pc2hlZCI+CiAgICAgICAgPHBhcmE+V2hlbiB3aWxsIFdpbmUgYmUgZmluaXNoZWQ/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgTGFyZ2Ugc29mdHdhcmUgcHJvamVjdHMgYXJlIG5ldmVyIGZpbmlzaGVkLCBvbmx5IHJlbGVhc2VkLiBJbiBhbnkKICAgICAgICAgIGNhc2UgV2luZSBpcyBjaGFzaW5nIGEgbW92aW5nIHRhcmdldCBzaW5jZSBldmVyeSBuZXcgcmVsZWFzZSBvZiAKICAgICAgICAgIFdpbmRvd3MgY29udGFpbnMgbmV3IEFQSSBjYWxscyBvciB2YXJpYXRpb25zIG9uIHRoZSBleGlzdGluZyBvbmVzLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEJlY2F1c2UgV2luZSBpcyBiZWluZyBkZXZlbG9wZWQgYnkgdm9sdW50ZWVycywgaXQgaXMgZGlmZmljdWx0IHRvCiAgICAgICAgICBwcmVkaWN0IHdoZW4gaXQgd2lsbCBiZSByZWFkeSBmb3IgZ2VuZXJhbCByZWxlYXNlLiBCdXQgZHVlIHRvIHRoZQogICAgICAgICAgbXVjaCBpbmNyZWFzZWQgaW50ZXJlc3QgYnkgY29tcGFuaWVzIGluIHBvcnRpbmcgYXBwcyB2aWEgV2luZSwgV2luZQogICAgICAgICAgZGV2ZWxvcG1lbnQgaXMgY29uc3RhbnRseSBnZXR0aW5nIG1vcmUgYW5kIG1vcmUgYWN0aXZlLiBSaWdodCBub3cKICAgICAgICAgIHdlIGFyZSB3b3JraW5nIG9uIHJlbGVhc2luZyBXaW5lIDAuOSBSZWFsIFNvb24gTm93KHRtKS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaG8taXMtcmVzcG9uc2libGUtZm9yLVdpbmUiPgogICAgICAgIDxwYXJhPldobyBpcyByZXNwb25zaWJsZSBmb3IgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIGlzIGF2YWlsYWJsZSB0aGFua3MgdG8gdGhlIHdvcmsgb2YgbWFueSBwZW9wbGUuIFBsZWFzZSBzZWUgdGhlCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vc291cmNlLndpbmVocS5vcmcvc291cmNlL0FVVEhPUlMiPkFVVEhPUlM8L3VsaW5rPgogICAgICAgICAgZmlsZSBpbiB0aGUgZGlzdHJpYnV0aW9uIGZvciB0aGUgY29tcGxldGUgbGlzdC4gU29tZSBjb21wYW5pZXMgdGhhdAogICAgICAgICAgYXJlIG9yIGhhdmUgYmVlbiBpbnZvbHZlZCB3aXRoIFdpbmUgZGV2ZWxvcG1lbnQgYXJlIENvZGVXZWF2ZXJzLAogICAgICAgICAgVHJhbnNHYW1pbmcsIENvcmVsLCBhbmQgTWFjYWRhbWlhbi4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJmb2xrcy13aG8tY29udHJpYnV0ZWQtbW9uZXktb3ItZXF1aXBtZW50Ij4KICAgICAgICA8cGFyYT5XaG8gYXJlIHRoZSBmb2xrcyBhbmQgb3JnYW5pemF0aW9ucyB3aG8gaGF2ZSBjb250cmlidXRlZCBtb25leSBvciBlcXVpcG1lbnQgdG8gdGhlIFdpbmUgcHJvamVjdD88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBQZW9wbGUgYW5kIG9yZ2FuaXphdGlvbnMgd2hvIGhhdmUgZ2l2ZW4gZ2VuZXJvdXMgY29udHJpYnV0aW9ucyBvZgogICAgICAgICAgbW9uZXksIGVxdWlwbWVudCwgb3IgbGljZW5zZXMsIGluY2x1ZGU6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxpdGVtaXplZGxpc3Qgc3BhY2luZz0iY29tcGFjdCI+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPkRhdmlkIEwuIEhhcnBlcjwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPkJvYiBIZXBwbGU8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT5NYXJrIEEuIEhvcnRvbjwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPktldmluIFAuIExhd3RvbjwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPlRoZSBTeW50cm9weSBJbnN0aXR1dGU8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT5KYW1lcyBXb3VsZmU8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFZNV2FyZSBJbmMuICg8dWxpbmsgdXJsPSJodHRwOi8vd3d3LnZtd2FyZS5jb20iPgogICAgICAgICAgICAgaHR0cDovL3d3dy52bXdhcmUuY29tPC91bGluaz4pCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgQ29yZWwgKDx1bGluayB1cmw9Imh0dHA6Ly93d3cuY29yZWwuY29tIj4KICAgICAgICAgICAgIGh0dHA6Ly93d3cuY29yZWwuY29tPC91bGluaz4pCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgQ29kZVdlYXZlcnMKICAgICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi8vd3d3LmNvZGV3ZWF2ZXJzLmNvbS8iPmh0dHA6Ly93d3cuY29kZXdlYXZlcnMuY29tPC91bGluaz4pCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGF0LXVuZG9jdW1lbnRlZC1BUElzLWFyZS1ub3QtdW5kZXJzdG9vZCI+CiAgICAgICAgPHBhcmE+V2hhdCB1bmRvY3VtZW50ZWQgQVBJcyAvIGludGVyZmFjZXMgYXJlIG5vdCB1bmRlcnN0b29kPyBXb3VsZAogICAgICAgICAgICAgIHNlZWluZyBNaWNyb3NvZnQgc291cmNlIGhlbHA/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIGJlc3Qgd291bGQgYmUgaWYgdGhlIFdpbmRvd3MgQVBJIHdhcyBmdWxseSBkb2N1bWVudGVkLCBzbyBXaW5lCiAgICAgICAgICBjb3VsZCBiZSBhIHBlcmZlY3QgImNsZWFuLXJvb20iIGltcGxlbWVudGF0aW9uLiBTZWVpbmcgdGhlIHNvdXJjZQogICAgICAgICAgY29kZSBtaWdodCBtYWtlIGl0IGhhcmRlciB0byBwcm92ZSB0aGF0IG5vIGNvcHlyaWdodCB2aW9sYXRpb25zIGhhdmUKICAgICAgICAgIHRha2VuIHBsYWNlLiBUaGF0IHNhaWQsIHRoZSBkb2N1bWVudGF0aW9uIGlzIG9mdGVuIGJhZCwgbm9uZXhpc3RlbnQsCiAgICAgICAgICBhbmQgZXZlbiBtaXNsZWFkaW5nIHdoZXJlIGl0IGV4aXN0cywgc28gYSBmYWlyIGFtb3VudCBvZiByZXZlcnNlCiAgICAgICAgICBlbmdpbmVlcmluZyBoYXMgYmVlbiBuZWNlc3NhcnksIHBhcnRpY3VsYXJseSBpbiB0aGUgc2hlbGwgKEV4cGxvcmVyKQogICAgICAgICAgaW50ZXJmYWNlLiBUaGUgYmlnZ2VzdCBwcm9ibGVtIGZhY2luZyBXaW5lIHRob3VnaCBpcyBzaW1wbHkgbGFjayBvZgoJICBtYW5wb3dlci4gQXQgb25lIHBvaW50LCBvdmVyIDUwMDAgcGVvcGxlIHdlcmUgd29ya2luZyBvbiBXaW5kb3dzIDIwMDAuCgkgIFdoaWxlIFdpbmUgZG9lc24ndCBuZWVkIHRvIHJlcGxpY2F0ZSBhbGwgb2YgV2luZG93cyAod2Ugb25seSBjb3ZlciB0aGUKCSAgcGFydHMgbmVlZGVkIHRvIG1ha2UgV2luZG93cyBwcm9ncmFtcyB3b3JrKSwgdGhhdCdzIHN0aWxsIG5lYXJseSAxMCB0aW1lcwoJICBtb3JlIHBlb3BsZSB3b3JraW5nIHNpbXBseSBvbiBvbmUgcmVsZWFzZSB0aGFuIGhhdmUgPGVtcGhhc2lzPmV2ZXI8L2VtcGhhc2lzPgoJICB3b3JrZWQgb24gV2luZSwgaW4gdGhlIGhpc3Rvcnkgb2YgdGhlIHByb2plY3QuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJcy1UcmFuc0dhbWluZ3MtbGFzdC1wYXRjaC1pbmNsdWRlZC1pbi1XaW5lIj4KICAgICAgICA8cGFyYT5JcyBUcmFuc0dhbWluZydzIGxhdGVzdCBwYXRjaCBpbmNsdWRlZCBpbiB0aGUgc3RhbmRhcmQgV2luZSByZWxlYXNlPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIE5vLCBpdCdzIG5vdC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUcmFuc0dhbWluZyBtYWtlcyBtb25leSB2aWEgYSBzdWJzY3JpcHRpb24gc2VydmljZSBhbmQgdGhlIGxpY2Vuc2UKICAgICAgICAgIG9mIHRoZWlyIFdpbmVYIHRyZWUgaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlIFdpbmUgbGljZW5zZS4gVGh1cwogICAgICAgICAgV2luZVggcGF0Y2hlcyBjYW5ub3QgYmUgaW50ZWdyYXRlZCBpbnRvIHRoZSBXaW5lIHRyZWUgd2l0aG91dAogICAgICAgICAgZXhwcmVzcyBwZXJtaXNzaW9uIGJ5IFRyYW5zR2FtaW5nLiBUaGV5IGhhdmUgc3VibWl0dGVkIHNvbWUKICAgICAgICAgIG9mIHRoZWlyIHdvcmsgZm9yIGludGVncmF0aW9uIGludG8gV2luZSwgbW9zdCBub3RhYmx5IERpcmVjdERyYXcKICAgICAgICAgIGFuZCBzb21lIERpcmVjdFNvdW5kIHdvcmssIGFuZCBzdWNoIHdvcmsgaGFzIGJlZW4gaW50ZWdyYXRlZCBpbnRvCiAgICAgICAgICB0aGUgV2luZSB0cmVlLiBIb3dldmVyIGl0IHNlZW1zIHVubGlrZWx5IHRoZXkgd2lsbCBzdWJtaXQgdGhlaXIKICAgICAgICAgIERpcmVjdDNEIHdvcmsuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2lsbC10aGVyZS1iZS1hLVdpbmRvd3MtdmVyc2lvbi1vZi1XaW5lIj4KICAgICAgICA8cGFyYT5XaWxsIHRoZXJlIGJlIGEgV2luZG93cyB2ZXJzaW9uIG9mIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgU29tZSBwZW9wbGUgYXJlIHdvcmtpbmcgb24gZ2V0dGluZyBXaW5lIGNvZGUgdG8gY29tcGlsZSBvbiBXaW5kb3dzCiAgICAgICAgICB1c2luZyBvbmUgb2YgdGhlIGZvbGxvd2luZyBwcm9qZWN0cyBhcyBhIGJhc2lzOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8aXRlbWl6ZWRsaXN0IHNwYWNpbmc9ImNvbXBhY3QiPgogICAgICAgICAgPGxpc3RpdGVtPiAKICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgQ3lnd2luCiAgICAgICAgICAgICAgKDx1bGluayB1cmw9Imh0dHA6L3d3dy5jeWd3aW4uY29tLyI+aHR0cDovL3d3dy5jeWd3aW4uY29tPC91bGluaz4pCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIE1pbkdXCiAgICAgICAgICAgICAgKDx1bGluayB1cmw9Imh0dHA6L3d3dy5taW5ndy5vcmcvIj5odHRwOi8vd3d3Lm1pbmd3Lm9yZzwvdWxpbms+KQogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBSZWFjdE9TCiAgICAgICAgICAgICAgKDx1bGluayB1cmw9Imh0dHA6Ly93d3cucmVhY3Rvcy5jb20vIj5odHRwOi8vd3d3LnJlYWN0b3MuY29tPC91bGluaz4pCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGVyZSdzIHNvbWUgcHJvZ3Jlc3MsIHNvIGEgV2luZSB2ZXJzaW9uIHRoYXQncyB1c2FibGUgb24gV2luZG93cwogICAgICAgICAgbWlnaHQgYmUgYXZhaWxhYmxlIGF0IHNvbWUgdGltZS4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBQYXJ0IG9mIHRoZSByYXRpb25hbGUgZm9yIHRoZXNlIHByb2plY3RzIGlzIHRvIGZpbmQgb3V0IGFyZWFzIHdoZXJlCiAgICAgICAgICBXaW5lIHBvcnRhYmlsaXR5IGlzIGxhY2tpbmcuIFRoaXMgaXMgZXNwZWNpYWxseSB0cnVlIG9mIHRoZQogICAgICAgICAgUmVhY3RPUyBwcm9qZWN0IHdoaWNoIGlzIGEgcmVpbXBsZW1lbnRhdGlvbiBvZiB0aGUgV2luZG93cyBrZXJuZWwKICAgICAgICAgIGFuZCBzaG91bGQgdGh1cyBiZSBhYmxlIHRvIHJldXNlIG1vc3Qgb2YgV2luZSBkbGxzLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEFub3RoZXIgcmVhc29uIGZvciBwdXJzdWluZyB0aGVzZSBwcm9qZWN0cyBpcyB0byBiZSBhYmxlIHRvCiAgICAgICAgICByZXBsYWNlIGEgc2luZ2xlIFdpbmRvd3MgZGxsIHdpdGggaXRzIFdpbmUgY291bnRlcnBhcnQuIEJlc2lkZXMKICAgICAgICAgIGJlaW5nIGEgZ29vZCB0ZXN0IGZvciB0aGUgV2luZSBkbGwsIHRoaXMgbGV0cyB1cyBkZXRlY3QgY2FzZXMgd2hlcmUKICAgICAgICAgIHdlIG1hZGUgaW5jb3JyZWN0IGFzc3VtcHRpb25zIGFib3V0IGhvdyB0aGUgZGxscyBpbnRlcmFjdC4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgPC9xYW5kYWRpdj4KICAgIDxxYW5kYWRpdiBpZD0iV2hhdC1kby1JLW5lZWQtaW4tb3JkZXItdG8tdXNlLVdpbmUiPgogICAgICA8dGl0bGU+V2hhdCBkbyBJIG5lZWQgaW4gb3JkZXIgdG8gdXNlIFdpbmU/PC90aXRsZT4KICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iVW5kZXItd2hhdC1wbGF0Zm9ybXMtd2lsbC1XaW5lLXJ1biI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBVbmRlciB3aGF0IGhhcmR3YXJlIHBsYXRmb3JtKHMpIGFuZCBvcGVyYXRpbmcgc3lzdGVtKHMpIHdpbGwKICAgICAgICAgIFdpbmUoTGliKSBydW4/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSBpcyBiZWluZyBkZXZlbG9wZWQgc3BlY2lmaWNhbGx5IHRvIHJ1biBvbiB0aGUgPGVtcGhhc2lzPkludGVsCiAgICAgICAgICB4ODY8L2VtcGhhc2lzPiBjbGFzcyBvZiBDUFVzIHVuZGVyIGNlcnRhaW4gVU5JWGVzIHRoYXQgcnVuIG9uIHRoaXMKICAgICAgICAgIHBsYXRmb3JtLiBXaW5lbGliIGhvd2V2ZXIgaXMgY2FwYWJsZSBvZiBwb3J0aW5nIHRoZSBXaW5kb3dzCiAgICAgICAgICBhcHBsaWNhdGlvbnMgPGVtcGhhc2lzPnNvdXJjZSBjb2RlPC9lbXBoYXNpcz4gdG8gb3RoZXIgcGxhdGZvcm1zCiAgICAgICAgICBhbHNvLCBub3Qgb25seSB4ODYuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGh1cyBydW5uaW5nIFdpbmRvd3MgYmluYXJpZXMgb24gb3RoZXIgcGxhdGZvcm1zIChlLmcuIE1hYyBPUyBYIG9uCiAgICAgICAgICBQb3dlclBDKSB1c2luZyBqdXN0IFdpbmUgaXMgPGVtcGhhc2lzPm5vdDwvZW1waGFzaXM+IHBvc3NpYmxlLiBZb3UKICAgICAgICAgIHdvdWxkIGhhdmUgdG8gZWl0aGVyIHJ1biBXaW5lIGluIGFuIGVtdWxhdGVkIHg4NiBlbnZpcm9ubWVudCBvcgogICAgICAgICAgdGFrZSB0aGUgV2luZG93cyBhcHBsaWNhdGlvbiBzb3VyY2UgY29kZSBhbmQgcmVjb21waWxlIGl0IHVzaW5nCiAgICAgICAgICBXaW5lbGliLgoJPC9wYXJhPgoJPHBhcmE+CgkgIFRoZXNlIGFyZSB0aGUgcGxhdGZvcm1zIHN1cHBvcnRlZCBieSBXaW5lLgoJICBXaW5lbGliIHN1cHBvcnQgZm9yIG90aGVyIHBsYXRmb3JtcyBrZWVwcyBldm9sdmluZywKCSAgc28gaXQncyBub3Qgc3BlY2lmaWNhbGx5IGxpc3RlZCBoZXJlLgoJPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgTmV0QlNELCBPcGVuQlNELCBVbml4V2FyZSwgYW5kIFNDTyBPcGVuU2VydmVyIDUgd29ya2VkIGF0IG9uZSB0aW1lLAogICAgICAgICAgYnV0IFdpbmUgbm93IHJlcXVpcmVzIGtlcm5lbC1sZXZlbCB0aHJlYWRzIHdoaWNoIGFyZSBub3QgY3VycmVudGx5IAogICAgICAgICAgYXZhaWxhYmxlIChvciB1bmRlcnN0b29kIGJ5IHRoZSBXaW5lIHRlYW0pIG9uIHRob3NlIHBsYXRmb3Jtcy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGUgV2luZSBkZXZlbG9wbWVudCB0ZWFtIGhvcGVzIHRvIGF0dHJhY3QgdGhlIGludGVyZXN0IG9mIG90aGVyCiAgICAgICAgICBjb21tZXJjaWFsIFVOSVggYW5kIFVOSVggY2xvbmUgdmVuZG9ycyBhcyB3ZWxsLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEJlT1M6IHBvcnRpbmcgZWZmb3J0cyAoQmVXaW5lKSB1c2VkIHRvIGJlIHByZXR0eSBzdHJvbmcsIGJ1dCBCZU9TCiAgICAgICAgICBoYXMgc2V2ZXJlIGxpbWl0YXRpb25zIGluIFVuaXggY2FsbCBzdXBwb3J0LiBUaGUgZGVtaXNlIG9mIEJlCiAgICAgICAgICBmdXJ0aGVyIGhhbXBlcmVkIHRoZSBwcm9qZWN0IHRob3VnaCBpdCBtaWdodCBjb21lIGJhY2sgb25lIGRheSBvbgogICAgICAgICAgb25lIG9mIHRoZSBvcGVuIEJlT1MgcHJvamVjdHMuIEluIGFueSBjYXNlIGEgZnVuY3Rpb25hbCBwb3J0IHNlZW1zCiAgICAgICAgICB1bmxpa2VseSB0byBldmVyIGhhcHBlbiBhdCB0aGlzIHN0YWdlLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIE1hYyBPUyBYIC8gRGFyd2luOiBUaGUgPHVsaW5rCiAgICAgICAgICB1cmw9Imh0dHA6Ly9kYXJ3aW5lLnNvdXJjZWZvcmdlLm5ldC9wcm9qZWN0Lmh0bWwiPkRhcndpbmU8Lz4gaXMKICAgICAgICAgIGN1cnJlbnRseSB3b3JraW5nIG9uIHBvcnRpbmcgV2luZSB0byB0aGUgRGFyd2luL3g4NiBwbGF0Zm9ybS4gVGhlaXIKICAgICAgICAgIGdvYWwgaXMgdG8gZXZlbnR1YWxseSBtYWtlIGl0IHBvc3NpYmxlIHRvIHJ1biB4ODYgV2luZG93cwogICAgICAgICAgYXBwbGljYXRpb25zIG9uIERhcndpbi9QUEMgYW5kIHRoZW4gTWFjIE9TIFggYnkgdXNpbmcgQm9jaHMuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgRnJlZUJTRDogVGhpcyBwb3J0IGlzIHdlbGwgbWFpbnRhaW5lZCBhbmQgc2hvdWxkIHdvcmsgd2l0aAogICAgICAgICAgbGltaXRhdGlvbnMgaW4gc3BlY2lmaWMgYXJlYXMgKG1haW5seSBtaXNzaW5nIGRldmljZS9oYXJkd2FyZQogICAgICAgICAgc3VwcG9ydCkuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgTGludXgveDg2OiBXb3JrcywgYW5kIGFzIHRoZSBtb3N0IHBvcHVsYXIgcGxhdGZvcm0gZm9yIGJvdGgKICAgICAgICAgIGRldmVsb3BlcnMgYW5kIHVzZXJzLCBpdCBpcyB0aGUgYmVzdCBzdXBwb3J0ZWQgcGxhdGZvcm0gb2YgYWxsLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldoYXQtbWluaW11bS1DUFUtbXVzdC1JLWhhdmUiPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2hhdCBtaW5pbXVtIENQVSBtdXN0IEkgaGF2ZSBpbiBteSBjb21wdXRlciB0byBiZSBhYmxlIHRvIHJ1biBXaW5lIAogICAgICAgICAgYW5kIE1TIFdpbmRvd3MgYXBwbGljYXRpb25zIHNtb290aGx5PwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdlIG5lZWQgdG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIFdpbmUgYW5kIFdpbmVsaWIgaGVyZS4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIHdvbid0IHJ1biBvbiBhbnkgeDg2IENQVSBsZXNzIHRoYW4gYW4gODAzODYgZHVlIHRvIGFkZHJlc3MKICAgICAgICAgIG1hbmFnZW1lbnQgbGltaXRhdGlvbnMuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSXQgaXMga25vd24gdG8gYWxzbyB3b3JrIGluIHRoZSA4MDQ4NiBhbmQgdXB3YXJkcyBjb21wYXRpYmxlIENQVXMuCiAgICAgICAgICBUaGUgYmFzaWMgdGVzdCBpcywgaWYgeW91IGNhbiBydW4gWDExIG5vdywgeW91IHNob3VsZCBiZSBhYmxlIHRvIHJ1bgogICAgICAgICAgV2luZSBhbmQgTVMgV2luZG93cyBhcHBsaWNhdGlvbnMgdW5kZXIgaXQuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQXMgYWx3YXlzLCB0aGUgZmFzdGVyIHlvdXIgQ1BVLCB0aGUgYmV0dGVyLiBIYXZpbmcgYSBtYXRoIGNvcHJvY2Vzc29yCiAgICAgICAgICBpcyB1bmltcG9ydGFudC4gSG93ZXZlciwgaGF2aW5nIGEgZ3JhcGhpY3MgYWNjZWxlcmF0ZWQgdmlkZW8gY2FyZAogICAgICAgICAgc3VwcG9ydGVkIGJ5IFggd2lsbCBoZWxwIGdyZWF0bHkuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgRGVwZW5kaW5nIG9uIHlvdXIgYXBwbGljYXRpb24geW91IG1heSBmaW5kIHRoYXQgZmFzdGVyIHNwZWVkcyBhcmUKICAgICAgICAgIHJlcXVpcmVkIGZvciBzZW5zaWJsZSB1c2UuIFdlIGNhbid0IGdpdmUgc3BlY2lmaWMgYWR2aWNlIG9uIHRoYXQgZHVlCiAgICAgICAgICB0byB0aGUgdmFzdCByYW5nZSBvZiBhcHBsaWNhdGlvbnMgb3V0IHRoZXJlLiBIb3dldmVyIHRoZSBydWxlIG9mCiAgICAgICAgICB0aHVtYiBpcyB0aGF0IGlmIHlvdXIgYXBwbGljYXRpb24gcnVucyBmaW5lIG9uIFdpbmRvd3MsIGl0IHNob3VsZAogICAgICAgICAgcnVuIGZpbmUgb24gdGhlIHNhbWUgcGxhdGZvcm0gaW4gV2luZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctbXVjaC1kaXNrLXNwYWNlLXdpbGwtV2luZS10YWtlIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgSG93IG11Y2ggZGlzayBzcGFjZSB3aWxsIHRoZSBXaW5lIHNvdXJjZSBjb2RlIGFuZCBiaW5hcmllcyB0YWtlIG9uIG15CiAgICAgICAgIGhhcmQgZHJpdmU/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWW91IG5lZWQgYXBwcm94aW1hdGVseSAyNTAgbWVnYWJ5dGVzIG9mIGZyZWUgaGFyZCBkcml2ZSBzcGFjZSB0bwogICAgICAgICAgc3RvcmUgYW5kIGNvbXBpbGUgdGhlIHNvdXJjZSBjb2RlLiBXaW5lIGFsc28gbmVlZHMgYWJvdXQgMTggbWVncyBpbgogICAgICAgICAgeW91ciAvdG1wIGRpcmVjdG9yeS4gQW5kIGFib3V0IDUwIE1CIGFyZSBuZWVkZWQgdG8gZG8gYSBtYWtlIGluc3RhbGwuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQmluYXJ5IHBhY2thZ2VzLCBlc3BlY2lhbGx5IHRob3NlIG5vdCBjb250YWluaW5nIGRlYnVnIGluZm9ybWF0aW9uLAogICAgICAgICAgaGF2ZSBtdWNoIGxvd2VyIGRpc2sgc3BhY2UgcmVxdWlyZW1lbnRzLCB1c3VhbGx5IGluIHRoZSAyME1CIHJhbmdlLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldoYXQtb3RoZXItc29mdHdhcmUtZG8tSS1uZWVkLXRvLWNvbXBpbGUiPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2hhdCBvdGhlciBzb2Z0d2FyZSBkbyBJIG5lZWQgdG8gaW5zdGFsbCwgY29tcGlsZSBhbmQgcnVuCiAgICAgICAgICBXaW5lPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIE1hbnkgZGV2ZWxvcG1lbnQgdG9vbHMgYXJlIG5lZWRlZCBpbiBvcmRlciB0byBjb21waWxlIFdpbmUuCiAgICAgICAgICBBIGxpc3Qgb2YgcmVxdWlyZWQgcGFja2FnZXMgZm9yIHNldmVyYWwgZGlzdHJpYnV0aW9ucyBpcyBpbmNsdWRlZCBpbgogICAgICAgICAgdGhlIFJFQURNRSAoPHVsaW5rIHVybD0iaHR0cDovL3NvdXJjZS53aW5laHEub3JnL3NvdXJjZS9SRUFETUUiPgogICAgICAgICAgaHR0cDovL3NvdXJjZS53aW5laHEub3JnL3NvdXJjZS9SRUFETUU8L3VsaW5rPikuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVG8gcnVuIFdpbmUsIHlvdSB3aWxsIG5lZWQgdGhlIGZvbGxvd2luZzoKICAgICAgICA8L3BhcmE+CgogICAgICAgIDxpdGVtaXplZGxpc3Qgc3BhY2luZz0iY29tcGFjdCI+CiAgICAgICAgICA8bGlzdGl0ZW0+IAogICAgICAgICAgICA8cGFyYT5UaGUgY29tcGlsZWQgV2luZSBiaW5hcnk8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT5BIHByb3Blcmx5IGNvbmZpZ3VyZWQgd2luZS5jb25mIGZpbGUgKG9yIH4vLndpbmVyYyBmaWxlKTwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPkFuIGluc3RhbGxlZCBhbmQgd29ya2luZyBYIFdpbmRvdyBzeXN0ZW08L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT5Tb21lIFdpbmRvd3MgcHJvZ3JhbXMgdG8gdGVzdDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAgICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctbXVjaC1SQU0tZG8tSS1uZWVkIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEhvdyBtdWNoIFJBTSBkbyBJIG5lZWQgdG8gaGF2ZSBvbiBteSBVTklYIHN5c3RlbSB0byBiZSBhYmxlIHRvIHJ1biAKICAgICAgICAgIFdpbmUgYW5kIE1TIFdpbmRvd3MgYXBwbGljYXRpb25zIHNtb290aGx5PwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIHlvdSBjYW4gcnVuIFggc21vb3RobHkgb24geW91ciBVTklYIHN5c3RlbSBub3csIHlvdSBzaG91bGQgYmUgCiAgICAgICAgICBhYmxlIHRvIHJ1biBXaW5lIGFuZCBNUyBXaW5kb3dzIGFwcGxpY2F0aW9ucyBqdXN0IGZpbmUgdG9vLCBkZXBlbmRpbmcKICAgICAgICAgIG9uIGhvdyBtZW1vcnkgaHVuZ3J5IHRoZSBhcHBsaWNhdGlvbiBpcy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBBIFdpbmUgd29ya3N0YXRpb24gd2lsbCB3b3JrIHdpdGggMTYgbWVnYWJ5dGVzIG9mIFJBTSBhbmQgYSAxNiAKICAgICAgICAgIG1lZ2FieXRlIHN3YXAgcGFydGl0aW9uIGFzIGxvbmcgYXMgeW91IGhhdmUgYSByZWFzb25hYmxlIGdyYXBoaWNzIAogICAgICAgICAgY2FyZC4gTW9zdCBhcHBsaWNhdGlvbnMgd2lsbCBydW4gcmVhc29uYWJseSB3aXRoIDY0LzY0IE1iLCAKICAgICAgICAgIGludGVyYWN0aXZlIGdhbWVzIGFyZSBsaWtlbHkgdG8gbmVlZCBtb3JlLiBZb3UgY2FuIHJ1biBXaW5lIHdpdGggOC84LAogICAgICAgICAgYnV0IGl0IGlzIGdvaW5nIHRvIGJlIHVudXNhYmx5IHNsb3cgYW5kIHZlcnkgY29uc3RyYWluaW5nIG9uIHRoZSAKICAgICAgICAgIGFwcGxpY2F0aW9ucyB5b3UgY2FuIHJ1bi4gSWYgeW91IHdpc2ggdG8gYmUgcGFydCBvZiB0aGUgZGV2ZWxvcG1lbnQKICAgICAgICAgIHRlYW0gYW5kIHByb2dyYW0gV2luZSBpdHNlbGYsIGJlIGF3YXJlIHRoYXQgdGhlIGRlYnVnZ2VyIGlzIHJhdGhlciAKICAgICAgICAgIG1lbW9yeSBpbnRlbnNpdmUuIFNvbWUgaGF2ZSBzdWdnZXN0ZWQgdGhhdCA2NCBtZWdhYnl0ZXMgaXMgdGhlCiAgICAgICAgICBtaW5pbXVtIFJBTSBuZWVkZWQgZm9yIFdpbmUgZGV2ZWxvcG1lbnQsIGFsdGhvdWdoIHNvbWUgYXJlIGFibGUgdG8gCiAgICAgICAgICB3b3JrIChhbGJlaXQgc2xvd2x5KSB3aXRoIDI0IG1lZ2FieXRlcyBvZiBwaHlzaWNhbCBSQU0gYW5kIGxvdHMgb2YKICAgICAgICAgIHN3YXAgc3BhY2UuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWxvbmctZG9lcy1XaW5lLXRha2UtdG8tYnVpbGQiPgogICAgICAgIDxwYXJhPkhvdyBsb25nIGRvZXMgV2luZSB0YWtlIHRvIGJ1aWxkPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSBpcyBnZXR0aW5nIHRvIGJlIHF1aXRlIGxhcmdlLCBhbmQgYnVpbGRpbmcgZnJvbSBzY3JhdGNoIHRha2VzIGEKICAgICAgICAgIGxvdCBvZiBwcm9jZXNzaW5nLiBBcyBvZiBTZXB0ZW1iZXIgMjAwMiwgY29tcGlsZSB0aW1lcyB3ZXJlIGFyb3VuZCAyMAogICAgICAgICAgbWludXRlcyBvbiBhbiBBdGhsb24gMTIwMCB3aXRoIDY0MCBNYiBhbmQgNDUtNTAgbWludXRlcyBvbiBhIEN5cml4IAogICAgICAgICAgMzAwIHdpdGggNjQgTWIuIElmIHlvdSBoYXZlIGEgQ1ZTIGNvcHksIHlvdSBtYXkgbm90IG5lZWQgdG8gcmVidWlsZAogICAgICAgICAgdGhlIHdob2xlIHRoaW5nIGV2ZXJ5IHRpbWUgeW91IHVwZGF0ZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IkktaGF2ZS1hLURyaXZlc3BhY2VkLXBhcnRpdGlvbiI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJIGhhdmUgYSBEcml2ZXNwYWNlZCwgRG91Ymxlc3BhY2VkIG9yIFN0YWNrZXJlZCBET1MgcGFydGl0aW9uLiBDYW4gCiAgICAgICAgICBXaW5lIHJ1biBNUyBXaW5kb3dzIGJpbmFyaWVzIGxvY2F0ZWQgaW4gc3VjaCBhIHBhcnRpdGlvbj8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBZZXMsIGJ1dCBvbmx5IGlmIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHN1cHBvcnRzIG1vdW50aW5nIHRob3NlIHR5cGVzCiAgICAgICAgICBvZiBkcml2ZXMuIFRoZXJlIGlzIGEgTGludXggZmlsZSBzeXN0ZW0gZHJpdmVyIGNhbGxlZCBkbXNkb3MgdGhhdAogICAgICAgICAgd2lsbCBhbGxvdyByZWFkL3dyaXRlIGFjY2VzcyB0byBEb3VibGVzcGFjZWQgYW5kIERyaXZlc3BhY2UgMS4wCiAgICAgICAgICBkcml2ZXMuIE1vcmUgc3BlY2lmaWNhbGx5LCBpdCBzdXBwb3J0cyBtb3VudGluZyBET1MgNi4wIGFuZCA2LjIgCiAgICAgICAgICBEb3VibGVzcGFjZWQsIERPUyA2LjIyIERyaXZlc3BhY2VkLCBhbmQgV2luZG93cyA5NSBEb3VibGVzcGFjZWQgCiAgICAgICAgICBjb21wcmVzc2VkIHBhcnRpdGlvbnMgKHJlYWQgYW5kIHdyaXRlIGFjY2VzcyB3b3JrcyBmaW5lLCBidXQgd3JpdGUgCiAgICAgICAgICBhY2Nlc3MgaXMgc2xvdykuIEl0IGNhbiBiZSBmb3VuZCBhdCAKICAgICAgICAgIDx1bGluayB1cmw9ImZ0cDovL21ldGFsYWIudW5jLmVkdS9wdWIvTGludXgvc3lzdGVtL2ZpbGVzeXN0ZW1zL2Rvc2ZzLyI+CiAgICAgICAgICBmdHA6Ly9tZXRhbGFiLnVuYy5lZHUvcHViL0xpbnV4L3N5c3RlbS9maWxlc3lzdGVtcy9kb3Nmcy88L3VsaW5rPgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IkRvLUktbmVlZC10by1oYXZlLWEtRE9TLXBhcnRpdGlvbiI+CiAgICAgICAgPHBhcmE+RG8gSSBuZWVkIHRvIGhhdmUgYSBET1MgcGFydGl0aW9uIG9uIG15IHN5c3RlbSB0byB1c2UgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBZb3UgZG8gbm90IG5lZWQgYSBsaWNlbnNlZCBhbmQgaW5zdGFsbGVkIGNvcHkgb2YgRE9TIG9yIE1TIFdpbmRvd3MgdG8KICAgICAgICAgIGluc3RhbGwsIGNvbmZpZ3VyZSBhbmQgcnVuIFdpbmUuIEhvd2V2ZXIsIFdpbmUgaGFzIHRvIGJlIGFibGUgdG8gCiAgICAgICAgICAnc2VlJyBhbiBNUyBXaW5kb3dzIGJpbmFyeSAoaS5lLiBhcHBsaWNhdGlvbikgaWYgaXQgaXMgdG8gcnVuIGl0LgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KIAogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJEb2VzLU1TLVdpbmRvd3MtbmVlZC10by1iZS1pbnN0YWxsZWQiPgogICAgICAgIDxwYXJhPgogICAgICAgICAgRG9lcyBNUyBXaW5kb3dzIG5lZWQgdG8gYmUgbG9hZGVkIGludG8gdGhhdCBwYXJ0aXRpb24gaW4gb3JkZXIgdG8KICAgICAgICAgIHJ1biBNUyBXaW5kb3dzIHByb2dyYW1zIHVuZGVyIFdpbmU/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgTWFueSBmb2xrcyBoYXZlIHN1Y2Nlc3NmdWxseSBpbnN0YWxsZWQgYW5kIHJ1biBwcm9ncmFtcwogICAgICAgICAgaW4gdGhlaXIgVU5JWCBmaWxlIHN5c3RlbSB3aXRob3V0IGhhdmluZyBhIERPUyBwYXJ0aXRpb24gb3IgTVMgCiAgICAgICAgICBXaW5kb3dzLiBIb3dldmVyLCBpbiBtYW55IGNhc2VzIHlvdSBuZWVkIGEgZGlyZWN0b3J5IGFuZCBmaWxlIAogICAgICAgICAgaW5mcmFzdHJ1Y3R1cmUgdGhhdCBpcyBzaW1pbGFyIHRvIGFuIGV4aXN0aW5nIFdpbmRvd3MgaW5zdGFsbGF0aW9uLgogICAgICAgICAgU29tZSBhcHBsaWNhdGlvbnMnIGluc3RhbGxhdGlvbiBwcm9ncmFtcyB3YW50IHRvIGRpc3RyaWJ1dGUgc29tZSBvZgogICAgICAgICAgdGhlIHBhY2thZ2UncyBmaWxlcyBpbnRvIHRoZSAvd2luZG93cyBhbmQgL3dpbmRvd3Mvc3lzdGVtIAogICAgICAgICAgZGlyZWN0b3JpZXMgaW4gb3JkZXIgdG8gcnVuLCBhbmQgdW5sZXNzIHRoZXNlIGV4aXN0IG9uIHlvdXIgVU5JWCAKICAgICAgICAgIGZpbGUgc3lzdGVtLCB0aG9zZSBwcm9ncmFtcyB3aWxsIG5vdCBpbnN0YWxsIGNvcnJlY3RseSBhbmQgcHJvYmFibHkKICAgICAgICAgIHdpbGwgbm90IHJ1biB3ZWxsLCBpZiBhdCBhbGwuIE1vc3QgcGFja2FnZXMgd2lsbCBzZXQgdGhhdCB1cCBmb3IgeW91CgkgIGFzIHBhcnQgb2YgdGhlIGluc3RhbGwgcHJvY2Vzcy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB5b3UgaGF2ZSBhIERPUyBwYXJ0aXRpb24gd2l0aCBNUyBXaW5kb3dzIGluc3RhbGxlZCBpbiBpdCwgbWFrZQogICAgICAgICAgc3VyZSB0aGF0IHlvdXIgVU5JWCBzeXN0ZW0gY2FuICdzZWUnIHRoaXMgcGFydGl0aW9uIChjaGVjayB5b3VyIAogICAgICAgICAgL2V0Yy9mc3RhYiBmaWxlIG9yIG1vdW50IHRoZSBwYXJ0aXRpb24gbWFudWFsbHkpIHNvIHRoYXQgV2luZSBjYW4KICAgICAgICAgIHJ1biB0aGUgTVMgV2luZG93cyBiaW5hcmllcyBsb2NhdGVkIGluIHRoZSBET1MgcGFydGl0aW9uLiBUbyBydW4KICAgICAgICAgIHdpdGhvdXQgYSBET1MgcGFydGl0aW9uLCB5b3UgbmVlZCB0byBzZXQgYSBVTklYIHBhdGggdG8gYmUgeW91ciAKICAgICAgICAgIGRyaXZlIEMsIGFuZCBtYWtlIHN1cmUgdGhhdCB0aGUgL3dpbmRvd3MgYW5kIC93aW5kb3dzL3N5c3RlbSAKICAgICAgICAgIGRpcmVjdG9yaWVzIHBvaW50IHRvIHNvbWUgcGxhY2UgdGhhdCBhY3R1YWxseSBleGlzdC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBIZXJlJ3MgYW4gZXhhbXBsZSwgY29waWVkIGZyb20gYSBtYWNoaW5lIHdoaWNoIGhhcyBubyBET1MgcGFydGl0aW9uCiAgICAgICAgICBidXQgc3VjY2Vzc2Z1bGx5IHJ1bnMgV2luZToKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNjcmVlbj4KICAgIFtEcml2ZSBDXSAgICAgIAogICAgICAgICAgUGF0aD0vdmFyL2xpYi93aW5lCiAgICAgICAgICBUeXBlPWhkCiAgICBbd2luZV0KICAgICAgICAgIFdpbmRvd3M9Yzpcd2luZG93cwogICAgICAgICAgU3lzdGVtPWM6XHdpbmRvd3Ncc3lzdGVtCiAgICAgICAgICBUZW1wPWU6XAogICAgICAgICAgUGF0aD1jOlx3aW5kb3dzO2M6XHdpbmRvd3Ncc3lzdGVtO2M6CiAgICAgICAgPC9zY3JlZW4+CiAgICAgICAgPHBhcmE+CiAgICAgICAgIEluIDxmaWxlbmFtZT4vdmFyL2xpYi93aW5lL3dpbmRvd3M8L2ZpbGVuYW1lPiwgeW91IHdpbGwgbmVlZCB0bwogICAgICAgICBpbnN0YWxsIGEgPGZpbGVuYW1lPndpbi5pbmk8L2ZpbGVuYW1lPiBjb25maWcgZmlsZSB0aGF0IHlvdSBtaWdodAogICAgICAgICBmaW5kIG9uIGEgdHlwaWNhbCBNUyBXaW5kb3dzIDMuMSBtYWNoaW5lLiBUaGUgZGlyZWN0b3J5CiAgICAgICAgIDxmaWxlbmFtZT4vdmFyL2xpYi93aW5lL3dpbmRvd3Mvc3lzdGVtPC9maWxlbmFtZT4gc2hvdWxkIGV4aXN0LCBidXQKICAgICAgICAgZG9lc24ndCBuZWVkIHRvIGNvbnRhaW4gYW55dGhpbmcuIEhvd2V2ZXIsIHRvIHVzZSBNUyBETExzLCB5b3UgY2FuCiAgICAgICAgIGNvcHkgdGhlbSBpbnRvIHRoYXQgZGlyZWN0b3J5LiBOb3RlIHRoYXQgdGhpcyBpcyBhIGNvbnRyYXZlbnRpb24gb2YKICAgICAgICAgdGhlIFdpbmRvd3MgbGljZW5jZSB1bmxlc3MgV2luZG93cyBpcyBwcm9wZXJseSBpbnN0YWxsZWQgb24gdGhlCiAgICAgICAgIG1hY2hpbmUuIElmIHlvdSBoYXZlIERPUy9NUyBXaW5kb3dzIGluc3RhbGxlZCBvbiB5b3VyIHN5c3RlbSwgeW91IGNhbgogICAgICAgICBtb3VudCB0aGF0IHBhcnRpdGlvbiBhdCBib290dXAgYnkgbW9kaWZ5aW5nIHRoZSBmaWxlIAogICAgICAgICA8ZmlsZW5hbWU+L2V0Yy9mc3RhYjwvZmlsZW5hbWU+IGluIHlvdXIgVU5JWCBwYXJ0aXRpb24gKGFzc3VtaW5nIHRoYXQKICAgICAgICAgdGhlIFVOSVgga2VybmVsIHN1cHBvcnRzIHRoZSBET1MvTVMgV2luZG93cyBmaWxlIHN5c3RlbSB0eXBlKS4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB5b3UgZWRpdCB0aGlzIGZpbGUgYnkgaGFuZCwgaXQgc2hvdWxkIGNvbnRhaW4gc29tZXRoaW5nIHNpbWlsYXIKICAgICAgICAgIHRvIHRoZSBmb2xsb3dpbmc6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxzY3JlZW4+Ci9kZXYvaGRhMSAvZG9zYyBtc2RvcyB1aWQ9MCxnaWQ9MTAwLHVtYXNrPTAwNyAwIDAKICAgICAgICA8L3NjcmVlbj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoaXMgd2lsbCBhbGxvdyB5b3UgdG8gcmVhZCBhbmQgd3JpdGUgdG8gdGhlIERPUyBwYXJ0aXRpb24gd2l0aG91dAogICAgICAgICAgYmVpbmcgcm9vdC4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSWYtV2luZS1jb21wbGV0ZWx5LXJlcGxhY2VzLU1TLVdpbmRvd3MiPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgV2luZSBjb21wbGV0ZWx5IHJlcGxhY2VzIE1TIFdpbmRvd3MsIHdpbGwgaXQgZHVwbGljYXRlIGFsbCBvZiB0aGUKICAgICAgICAgIGZ1bmN0aW9ucyBvZiBNUyBXaW5kb3dzPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUncyBnb2FsIGlzIHRvIG1ha2UgaXQgcG9zc2libGUgdG8gcnVuIFdpbmRvd3MgYXBwbGljYXRpb25zIG9uCiAgICAgICAgICBVbml4LiBUbyB0aGlzIGVuZCBpdCB3aWxsIHByb3ZpZGUgcmVwbGFjZW1lbnRzIGZvciBqdXN0IHRob3NlCiAgICAgICAgICBETExzIGFuZCBBUElzIHRoYXQgYXJlIG5lZWRlZCBieSB0aGVzZSBXaW5kb3dzIGFwcGxpY2F0aW9ucy4KICAgICAgICAgIFRoaXMgbWVhbnMgdGhhdCBXaW5lIHdpbGwgbm90IHByb3ZpZGUgcmVwbGFjZW1lbnRzIGZvciBETExzIHRoYXQKICAgICAgICAgIGFyZSBub3Qgc2hpcHBlZCB3aXRoIFdpbmRvd3Mgb3IgYXJlIGFsd2F5cyBzaGlwcGVkIHdpdGggV2luZG93cwogICAgICAgICAgYXBwbGljYXRpb24gKGUuZy4gdGhlIFZpc3VhbCBCYXNpYyBydW4gdGltZSkuIFRoaXMgYWxzbwogICAgICAgICAgbWVhbnMgdGhhdCBpbXBsZW1lbnRpbmcgYW4gQVBJIHRoYXQgbm8gYXBwbGljYXRpb24gZXZlciB1c2VzIGlzIG5vdAogICAgICAgICAgYSBwcmlvcml0eS4gU2ltaWxhcmx5LCB1bnRpbCB0aGVyZSBhcmUgYXBwbGljYXRpb25zIG91dCB0aGVyZSB0aGF0CiAgICAgICAgICB1c2UgdGhlIFdpbjY0IEFQSSwgaXQgd2lsbCBub3QgYmUgYSBwcmlvcml0eS4gVGhhdCBiZWluZyBzYWlkLAogICAgICAgICAgd2Ugd2lsbCBjZXJ0YWlubHkgdHJ5IHRvIGtlZXAgb3VyIG9wdGlvbnMgb3BlbiBhbmQgdG8gaW1wcm92ZSBvdXIgQVBJCiAgICAgICAgICBjb3ZlcmFnZSBhcyB3ZSBjYW4uCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQWxzbyBXaW5lIGlzIG5vdCBhbiBvcGVyYXRpbmcgc3lzdGVtLCBzbyB0aGF0IHdyaXRpbmcgZGV2aWNlCiAgICAgICAgICBkcml2ZXJzIGlzIG5vdCBwYXJ0IG9mIFdpbmUncyBnb2Fscy4gSG93ZXZlciBpZiB5b3UgYXJlIGludGVyZXN0ZWQKICAgICAgICAgIGluIGRldmljZSBkcml2ZXJzLCB0aGUgPHVsaW5rIHVybD0iaHR0cDovL3d3dy5rZXJuZWwub3JnLyI+TGludXg8L3VsaW5rPiwKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cuZnJlZWJzZC5vcmcvIj5GcmVlQlNEPC91bGluaz4gYW5kCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LnJlYWN0b3MuY29tLyI+UmVhY3RPUzwvdWxpbms+IGtlcm5lbCBkZXZlbG9wZXJzCiAgICAgICAgICB3b3VsZCBjZXJ0YWlubHkgYXBwcmVjaWF0ZSB5b3VyIGNvbnRyaWJ1dGlvbi4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBTaW1pbGFybHkgV2luZSBkb2VzIG5vdCB0cnkgdG8gYmUgYSBkZXNrdG9wIGVudmlyb25tZW50IHNvCiAgICAgICAgICBwcm92aWRpbmcgYXBwbGV0cyBzdWNoIGFzIGEgY2FsY3VsYXRvciwgYSBmaWxlIG1hbmFnZXIgb3IgZXZlbgogICAgICAgICAgd2luZG93IG1hbmFnZXIgdGhhdCBsb29rIGxpa2UgV2luZG93cywgYXJlIGxvdyBwcmlvcml0eSBvciB3b3VsZAogICAgICAgICAgZXZlbiBiZXN0IGJlIGRvbmUgYXMgYSBzZXBhcmF0ZSBwcm9qZWN0LiBTdWNoIHByb2plY3RzIHdvdWxkIGFsc28KICAgICAgICAgIHRvIGEgbGFyZ2UgZXh0YW50IGJlIHJlZHVuZGFudCB3aXRoIG90aGVyIG9wZW4tc291cmNlIHByb2plY3RzLgogICAgICAgICAgQWdhaW4sIHRoZXJlIGFyZSBwcm9qZWN0cyB0aGF0IHdvdWxkIGNlcnRhaW5seSBhcHByZWNpYXRlIHlvdXIKICAgICAgICAgIGNvbnRyaWJ1dGlvbnMgaW4gdGhpcyBhcmVhcywgc3VjaCBhcyB0aGUKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cuZ25vbWUub3JnLyI+R25vbWU8L3VsaW5rPiBvcgogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy5rZGUub3JnLyI+S0RFPC91bGluaz4gZGVza3RvcCBlbnZpcm9ubWVudHMuIFlvdQogICAgICAgICAgd2lsbCBnZXQgdGhlIGFkZGVkIGJlbmVmaXQgdGhhdCB5b3VyIGNvbnRyaWJ1dGlvbiB3aWxsIHRoZW4gYmUKICAgICAgICAgIHVzYWJsZSBieSBldmVyeW9uZSwgbm90IGp1c3QgYnkgV2luZSB1c2Vycy4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaWxsLUktaW5zdGFsbC1vbi1hbnktVU5JWC1maWxlLXN5c3RlbSI+CiAgICAgICAgPHBhcmE+IAogICAgICAgICAgV2lsbCBJIGJlIGFibGUgdG8gaW5zdGFsbCBNUyBXaW5kb3dzIGFwcGxpY2F0aW9ucyBpbiBhbnkgZmxhdm9yIG9mIGEKICAgICAgICAgIFVOSVggZmlsZSBzeXN0ZW0/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSBpcyB3cml0dGVuIHRvIGJlIGZpbGUgc3lzdGVtIGluZGVwZW5kZW50LCBzbyBNUyBXaW5kb3dzIAogICAgICAgICAgYXBwbGljYXRpb25zIHdpbGwgaW5zdGFsbCBhbmQgcnVuIHVuZGVyIHZpcnR1YWxseSBhbnkgZmlsZSBzeXN0ZW0KICAgICAgICAgIHN1cHBvcnRlZCBieSB5b3VyIGJyYW5kIG9mIFVOSVguCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldpbGwtV2luZS1ydW4tb25seS11bmRlci1YIj4KICAgICAgICA8cGFyYT5XaWxsIFdpbmUgcnVuIG9ubHkgdW5kZXIgWCwgb3IgY2FuIGl0IHJ1biBpbiBjaGFyYWN0ZXIgbW9kZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBNb3N0IG9mIFdpbmUncyBkZXZlbG9wbWVudCBlZmZvcnQgaXMgZ2VhcmVkIHRvd2FyZHMgTVMgV2luZG93cycgR1VJLAogICAgICAgICAgYnV0IHNvbWUgbGltaXRlZCBzdXBwb3J0IGZvciBjaGFyYWN0ZXIgbW9kZSBoYXMgYXBwZWFyZWQsIGJ5IHNldHRpbmcKICAgICAgICAgIDxwYXJhbWV0ZXI+R3JhcGhpY3NEcml2ZXI9dHR5ZHJ2PC9wYXJhbWV0ZXI+IGluIHdpbmUuY29uZidzCiAgICAgICAgICA8cGFyYW1ldGVyPlt3aW5lXTwvcGFyYW1ldGVyPiBzZWN0aW9uLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUncyBpbmZyYXN0cnVjdHVyZSBpcyBhbHJlYWR5IHNvbWV3aGF0IHByZXBhcmVkIGZvciBzdXBwb3J0aW5nCiAgICAgICAgICBvdGhlciBncmFwaGljcyBkcml2ZXJzIHRoYW4geDExZHJ2LCBidXQgbm8gcmVhbCAiYWx0ZXJuYXRpdmUiIAogICAgICAgICAgZ3JhcGhpY3MgZHJpdmVyIGhhcyBiZWVuIGRldmVsb3BlZCB5ZXQuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldpbGwtV2luZS1ydW4tdW5kZXItYW55LVgtd2luZG93LW1hbmFnZXIiPgogICAgICAgIDxwYXJhPldpbGwgV2luZSBydW4gdW5kZXIgYW55IFggd2luZG93IG1hbmFnZXI/IERvZXMgaXQgcmVxdWlyZSBhIHdpbmRvdyBtYW5hZ2VyIGF0IGFsbD88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIGlzIHdpbmRvdyBtYW5hZ2VyIGluZGVwZW5kZW50LCBzbyB0aGUgWCB3aW5kb3cgbWFuYWdlciB5b3UKICAgICAgICAgIGNob29zZSB0byBydW4gaGFzIChhbG1vc3QpIG5vIGJlYXJpbmcgb24geW91ciBhYmlsaXR5IHRvIHJ1biBNUwogICAgICAgICAgV2luZG93cyBwcm9ncmFtcyB1bmRlciBXaW5lLiBXaW5lIHVzZXMgc3RhbmRhcmQgWCBsaWJyYXJpZXMsIHNvIG5vCiAgICAgICAgICBhZGRpdGlvbmFsIG9uZXMgYXJlIG5lZWRlZC4gV2luZSBoYXMgaXRzIG93biB3aW5kb3cgbWFuYWdlbWVudCwKICAgICAgICAgIHdoaWNoIGFjdHMgbGlrZSBNUyBXaW5kb3dzLiBJdCBjYW4gYmUgdHVybmVkIG9mZiB0byB1c2UgdGhlIG5hdGl2ZQogICAgICAgICAgd2luZG93IG1hbmFnZXIgYnkgbW9kaWZ5aW5nIE1hbmFnZWQgb3IgRGVza3RvcCBzZXR0aW5ncyBhcyBkZXNjcmliZWQKICAgICAgICAgIGluIDxjb21tYW5kPm1hbiB3aW5lLmNvbmY8L2NvbW1hbmQ+LgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldpbGwtMzItYml0LWFwcGxpY2F0aW9ucy1ydW4tdW5kZXItV2luZSI+CiAgICAgICAgPHBhcmE+V2lsbCAzMi1iaXQgV2luZG93cyA5NS85OCBhcHBsaWNhdGlvbnMgcnVuIHVuZGVyIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWWVzLCAzMi1iaXQgcHJvZ3JhbXMgYXJlIG5vdyBhYm91dCBhcyB3ZWxsIHN1cHBvcnRlZCBhcyAxNi1iaXQgCiAgICAgICAgICAgcHJvZ3JhbXMuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgICAKICAgIDwvcWFuZGFkaXY+CiAgICA8cWFuZGFkaXYgaWQ9IkZBUS1HZXR0aW5nLVdpbmUiPgogICAgICA8dGl0bGU+R2V0dGluZyBXaW5lPC90aXRsZT4KICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2hlcmUtY2FuLUktZ2V0LVdpbmUiPgogICAgICAgIDxwYXJhPldoZXJlIGNhbiBJIGdldCBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEJlY2F1c2Ugb2YgbGFncyBjcmVhdGVkIGJ5IHVzaW5nIG1pcnJvciwgd29yZCBvZiB0aGUgbGF0ZXN0IHJlbGVhc2UKICAgICAgICAgIG1heSByZWFjaCB5b3UgYmVmb3JlIHRoZSByZWxlYXNlIGlzIGFjdHVhbGx5IGF2YWlsYWJsZSBhdCB0aGUgZnRwCiAgICAgICAgICBzaXRlcyBsaXN0ZWQgaGVyZS4gVGhlIHNvdXJjZXMgYXJlIGF2YWlsYWJsZSBmcm9tIHRoZSBmb2xsb3dpbmcKICAgICAgICAgIGxvY2F0aW9uczoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0L3Nob3dmaWxlcy5waHA/Z3JvdXBfaWQ9NjI0MSZhbXA7cGFja2FnZV9pZD03NzQ0OSI+CiAgICAgICAgICAgICAgIGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdC9zaG93ZmlsZXMucGhwP2dyb3VwX2lkPTYyNDEmYW1wO3BhY2thZ2VfaWQ9Nzc0NDkKICAgICAgICAgICAgICA8L3VsaW5rPgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LmliaWJsaW8ub3JnL3B1Yi9MaW51eC9BTFBIQS93aW5lL2RldmVsb3BtZW50LyI+CiAgICAgICAgICAgICAgIGh0dHA6Ly93d3cuaWJpYmxpby5vcmcvcHViL0xpbnV4L0FMUEhBL3dpbmUvZGV2ZWxvcG1lbnQvCiAgICAgICAgICAgICAgPC91bGluaz4KICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgPHVsaW5rIHVybD0iZnRwOi8vZnRwLmluZm9tYWdpYy5jb20vcHViL21pcnJvcnMvbGludXgvc3Vuc2l0ZS9BTFBIQS93aW5lL2RldmVsb3BtZW50LyI+CiAgICAgICAgICAgICAgZnRwOi8vZnRwLmluZm9tYWdpYy5jb20vcHViL21pcnJvcnMvbGludXgvc3Vuc2l0ZS9BTFBIQS93aW5lL2RldmVsb3BtZW50LyAKICAgICAgICAgICAgICA8L3VsaW5rPgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgoKICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgPHVsaW5rIHVybD0iZnRwOi8vZnRwLmZ1LWJlcmxpbi5kZS91bml4L2xpbnV4L21pcnJvcnMvc3Vuc2l0ZS51bmMuZWR1L0FMUEhBL3dpbmUvZGV2ZWxvcG1lbnQvIj4KICAgICAgICAgICAgICBmdHA6Ly9mdHAuZnUtYmVybGluLmRlL3VuaXgvbGludXgvbWlycm9ycy9zdW5zaXRlLnVuYy5lZHUvQUxQSEEvd2luZS9kZXZlbG9wbWVudC8gCiAgICAgICAgICAgICAgPC91bGluaz4KICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KCiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIDx1bGluayB1cmw9ImZ0cDovL29yY3VzLnByb2dzb2MudXRzLmVkdS5hdS9wdWIvV2luZS9kZXZlbG9wbWVudC8iPgogICAgICAgICAgICAgIGZ0cDovL29yY3VzLnByb2dzb2MudXRzLmVkdS5hdS9wdWIvV2luZS9kZXZlbG9wbWVudC8gCiAgICAgICAgICAgICAgPC91bGluaz4KICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KCiAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJdCBzaG91bGQgYWxzbyBiZSBhdmFpbGFibGUgZnJvbSBhbnkgb3RoZXIgc2l0ZSB0aGF0IG1pcnJvcnMgCiAgICAgICAgICBpYmlibGlvLm9yZywgc2VlIDx1bGluayB1cmw9Imh0dHA6Ly93d3cuaWJpYmxpby5vcmcvcHViL0xpbnV4L01JUlJPUlMuaHRtbCI+aHR0cDovL3d3dy5pYmlibGlvLm9yZy9wdWIvTGludXgvTUlSUk9SUy5odG1sPC8+LiBTb21lIG9mCiAgICAgICAgICB0aGVzZSBzaXRlcyBtYXkgYXJjaGl2ZSBwcmV2aW91cyB2ZXJzaW9ucyBvZiBXaW5lIGFzIHdlbGwgYXMgdGhlCiAgICAgICAgICBjdXJyZW50IG9uZS4gVG8gZGV0ZXJtaW5lIHdoaWNoIGlzIHRoZSBsYXRlc3Qgb25lLCBsb29rIGF0IHRoZSAKICAgICAgICAgIGRpc3RyaWJ1dGlvbiBmaWxlIG5hbWUsIHdoaWNoIHdpbGwgdGFrZSB0aGUgZm9ybSAKICAgICAgICAgIFdpbmUtWVlZWU1NREQudGFyLmd6LiBTaW1wbHkgcmVwbGFjZSBZWVlZTU1ERCBpbiB0aGUgZGlzdHJpYnV0aW9uCiAgICAgICAgICBmaWxlIG5hbWUgd2l0aCB0aGUgbnVtYmVycyBmb3IgeWVhciwgbW9udGggYW5kIGRhdGUsIHJlc3BlY3RpdmVseS4KICAgICAgICAgIFRoZSBsYXRlc3Qgb25lIGlzIHRoZSBvbmUgdG8gZ2V0LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgYmluYXJ5IHBhY2thZ2VzIGFyZSBhdmFpbGFibGUgZm9yIHNldmVyYWwgT1MnZXMgYW5kIAogICAgICAgICAgZGlzdHJpYnV0aW9ucy4gU2VlIAogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL3NpdGUvZG93bmxvYWQiPgogICAgICAgICAgdGhlIGRvd25sb2FkIHBhZ2U8L3VsaW5rPiBmb3IgdGhlIG1vc3QgcmVjZW50IGxpc3QuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSXMtdGhlcmUtYS1DVlMtdHJlZSI+CiAgICAgICAgPHBhcmE+SXMgdGhlcmUgYSBDVlMgdHJlZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBDdXJyZW50IFdpbmUgc291cmNlcyBhcmUgYWxzbyBhdmFpbGFibGUgdmlhIGFub255bW91cyBjbGllbnQvc2VydmVyCiAgICAgICAgICBDVlMuIFlvdSB3aWxsIG5lZWQgQ1ZTIDEuOSBvciBhYm92ZS4gSWYgeW91IGFyZSBjb21pbmcgZnJvbSBiZWhpbmQgYQogICAgICAgICAgZmlyZXdhbGwsIHlvdSB3aWxsIGVpdGhlciBuZWVkIGEgaG9sZSBpbiB0aGUgZmlyZXdhbGwgZm9yIHRoZSBDVlMKICAgICAgICAgIHBvcnQgKDI0MDEpIG9yIHVzZSBTT0NLUy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUbyBsb2dpbiB0byB0aGUgQ1ZTIHRyZWUsIGRvCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxzY3JlZW4+CmV4cG9ydCBDVlNST09UPTpwc2VydmVyOmN2c0BjdnMud2luZWhxLm9yZy9ob21lL3dpbmUKY3ZzIGxvZ2luCiAgICAgICAgPC9zY3JlZW4+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBVc2UgImN2cyIgYXMgdGhlIHBhc3N3b3JkICh3aXRob3V0IHRoZSBxdW90ZXMpLiBOb3RlIHRoYXQgCiAgICAgICAgICA8ZmlsZW5hbWU+L2hvbWUvd2luZTwvZmlsZW5hbWU+IGlzIGEgcGF0aCBvbiB0aGUgc2VydmVyLCBub3Qgb24geW91cgogICAgICAgICAgbWFjaGluZS4gVG8gY2hlY2sgb3V0IHRoZSBlbnRpcmUgV2luZSBzb3VyY2UgdHJlZSAod2hpY2ggbWF5IGJlIAogICAgICAgICAgc2xvdyksIHVzZQogICAgICAgIDwvcGFyYT4KICAgICAgICA8c2NyZWVuPgpjdnMgLXogMyBjaGVja291dCB3aW5lIAogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDxwYXJhPgogICAgICAgICAgb3IgaWYgeW91IGp1c3Qgd2FudCBhIHN1YnRyZWUsIG9yIGluZGl2aWR1YWwgZmlsZSwgeW91IGNhbiBkbyB0aGF0IAogICAgICAgICAgdG9vIHdpdGgKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNjcmVlbj4KY3ZzIC16IDMgY2hlY2tvdXQgd2luZS9BTk5PVU5DRSAKICAgICAgICA8L3NjcmVlbj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEJlIGF3YXJlLCB0aG91Z2gsIHRoYXQgZ2V0dGluZyB0aGUgZW50aXJlIFdpbmUgc291cmNlIHRyZWUgdmlhIENWUwogICAgICAgICAgaXMgcHJldHR5IHNsb3csIGVzcGVjaWFsbHkgY29tcGFyZWQgdG8gZ2V0dGluZyBXaW5lIGZyb20gYW4gRlRQIAogICAgICAgICAgbWlycm9yIG5lYXIgeW91LiBGb3IgYSBDVlMgbWlycm9yIGxpc3QsIHNlZSAKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLm9yZy9zaXRlL2N2cyNjdnNzZXJ2ZXJzIj4KICAgICAgICAgIGh0dHA6Ly93d3cud2luZWhxLm9yZy9zaXRlL2N2cyNjdnNzZXJ2ZXJzPC91bGluaz4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBQYXRjaCBmaWxlcyBhcmUgYWxzbyBhdmFpbGFibGUsIHNvIHRoYXQgeW91IGRvbid0IGhhdmUgdG8gZG93bmxvYWQsCiAgICAgICAgICBpbnN0YWxsLCBhbmQgY29uZmlndXJlIHRoZSBlbnRpcmUgZGlzdHJpYnV0aW9uIGVhY2ggd2VlayBpZiB5b3UgYXJlCiAgICAgICAgICBjdXJyZW50IHRvIHRoZSBwcmV2aW91cyByZWxlYXNlLiBQYXRjaCBmaWxlIHJlbGVhc2UgbmFtZXMgZm9sbG93IHRoZQogICAgICAgICAgc2FtZSBudW1iZXJpbmcgY29udmVudGlvbiBhcyBkbyB0aGUgZ2VuZXJhbCByZWxlYXNlcywgYW5kIHRha2UgdGhlIAogICAgICAgICAgZm9ybQogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUtWVlZWU1NREQuZGlmZi5neiAgCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgUGF0Y2ggZmlsZXMgYXJlIGF2YWlsYWJsZSBmcm9tIHRoZSBzYW1lIHNpdGVzIHRoYXQgZGlzdHJpYnV0ZSB0aGUKICAgICAgICAgIGZ1bGwgcmVsZWFzZS4gVG8gdXBncmFkZSB0byBhIG5ldyByZWxlYXNlIGJ5IHVzaW5nIGEgcGF0Y2ggZmlsZSwKICAgICAgICAgIGZpcnN0IGNkIHRvIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5IG9mIHRoZSByZWxlYXNlICh0aGUgb25lCiAgICAgICAgICBjb250YWluaW5nIHRoZSBSRUFETUUgZmlsZSksIHRoZW4gZG8gYSAibWFrZSBjbGVhbiIsIGFuZCBwYXRjaCB0aGUKICAgICAgICAgIHJlbGVhc2Ugd2l0aAogICAgICAgIDwvcGFyYT4KICAgICAgICA8c2NyZWVuPgpndW56aXAgLWMgcGF0Y2gtZmlsZSB8IHBhdGNoIC1wMSAKICAgICAgICA8L3NjcmVlbj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIHdoZXJlIHBhdGNoLWZpbGUgaXMgdGhlIG5hbWUgb2YgdGhlIHBhdGNoIGZpbGUgc29tZXRoaW5nIGxpa2UKICAgICAgICAgIFdpbmUtWVlZWU1NREQuZGlmZi5nei4gWW91IGNhbiB0aGVuIHJlLXJ1biAuL2NvbmZpZ3VyZSwgYW5kIHRoZW4gcnVuCiAgICAgICAgICBtYWtlIGRlcGVuZCAmJiBtYWtlCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgeW91IGFyZSBtaXJyb3JpbmcgdGhlIFdpbmUgZGlzdHJpYnV0aW9uIGZyb20gdGhlIHRzeC0xMSBzaXRlIGFuZAogICAgICAgICAgd2lzaCB0byBiZSBsaXN0ZWQgaGVyZSBpbiB0aGlzIEZBUSwgcGxlYXNlIGFkZCBpdCB0byB0aGUgCiAgICAgICAgICAidGhpbmdzIHRvIGdvIGludG8gdGhlIGRvY3VtZW50YXRpb24iIGFyZWEuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iQ2FuLUktZ2V0LVdpbmUtdXNpbmctY3ZzdXAiPgogICAgICAgIDxwYXJhPkNhbiBJIGdldCBXaW5lIHVzaW5nIGN2c3VwPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSBDVlMgbWlycm9ycyBkb24ndCBvZmZlciBjdnN1cCBzdXBwb3J0IHlldCwgYnV0IHRoZSBtYWluIHNlcnZlcgogICAgICAgICAgZG9lcy4gVXNlIGEgPGZpbGVuYW1lPndpbmUuc3VwPC9maWxlbmFtZT4gZmlsZSBvZjoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNjcmVlbj4KKmRlZmF1bHQgaG9zdD1jdnMud2luZWhxLm9yZwoqZGVmYXVsdCBiYXNlPS9jdnMKKmRlZmF1bHQgcHJlZml4PS9jdnMvd2luZQoqZGVmYXVsdCByZWxlYXNlPXdpbmUKKmRlZmF1bHQgZGVsZXRlIAoKIyBJZiB5b3VyIG5ldHdvcmsgbGluayBpcyBhIFQxIG9yIGZhc3RlciwgY29tbWVudCBvdXQgdGhlIGZvbGxvd2luZyBsaW5lLgojKmRlZmF1bHQgY29tcHJlc3MgCgoqZGVmYXVsdCB1c2UtcmVsLXN1ZmZpeCAKd2luZSAKICAgICAgICA8L3NjcmVlbj4KICAgICA8L2Fuc3dlcj4KICAgICA8L3FhbmRhZW50cnk+CiAgICA8L3FhbmRhZGl2PgoKICAgIDxxYW5kYWRpdiBpZD0iSW5zdGFsbGluZy1BbmQtQ29uZmlndXJpbmctV2luZSI+CiAgICAgIDx0aXRsZT5JbnN0YWxsaW5nIGFuZCBDb25maWd1cmluZyBXaW5lPC90aXRsZT4KICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWRvLUktY29tcGlsZS10aGUtV2luZS1zb3VyY2UtY29kZSI+CiAgICAgICAgPHBhcmE+SG93IGRvIEkgY29tcGlsZSB0aGUgV2luZSBkaXN0cmlidXRpb24gc291cmNlIGNvZGU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgU2VlIHRoZSBSRUFETUUgKDx1bGluayB1cmw9Imh0dHA6Ly9zb3VyY2Uud2luZWhxLm9yZy9zb3VyY2UvUkVBRE1FIj5odHRwOi8vc291cmNlLndpbmVocS5vcmcvc291cmNlL1JFQURNRTwvdWxpbms+KSBmb3IgaW5zdHJ1Y3Rpb25zLgogICAgICAgICAgQWRkaXRpb25hbGx5LCB5b3UgbWF5IHdhbnQgdG8gc2V0IHRoZSA8cGFyYW1ldGVyPlRNUERJUjwvcGFyYW1ldGVyPgogICAgICAgICAgZW52aXJvbm1lbnQgdmFyaWFibGUgPGNvbW1hbmQ+VE1QRElSPX4vdG1wPC9jb21tYW5kPiBvcgogICAgICAgICAgPGNvbW1hbmQ+VE1QRElSPS90bXA8L2NvbW1hbmQ+IChpZiB5b3UgYXJlIHJvb3QpLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikhvdy1kby1JLWluc3RhbGwtV2luZG93cy1pbi1XaW5lIj4KICAgICAgICA8cGFyYT5Ib3cgZG8gSSBpbnN0YWxsIFdpbmRvd3MgaW4gV2luZSB1bmRlciBMaW51eD88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBTaW1wbGUgYW5zd2VyOiB5b3UgQ0FOJ1QuIFdpbmRvd3MgZGVtYW5kcyBkaXJlY3QgYWNjZXNzIHRvIHRoZQogICAgICAgICAgaGFyZHdhcmUgYW5kIGNhbm5vdCBnZXQgaXQgd2l0aCBXaW5lIGFuZCBVTklYIGluIHRoZSB3YXkKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIGlzIHN1cHBvc2VkIHRvIGJlIHByaW1hcmlseSB1c2VkIFdJVEhPVVQgV2luZG93cy4gSWYgeW91IHdhbnQKICAgICAgICAgIHRvIHVzZSBhIFdpbmRvd3MgaW5zdGFsbGF0aW9uLCB0aGVuIHVzZSBhbiBleGlzdGluZyBpbnN0YWxsYXRpb24gCiAgICAgICAgICBhbG9uZ3NpZGUgdGhlIFVOSVggaW5zdGFsbGF0aW9uIChzZWUgdGhlIGR1YWwtYm9vdCBIT1dUTyBmb3IgeW91ciBPUwogICAgICAgICAgZm9yIG1vcmUgZGV0YWlscykuIE9yIGFsdGVybmF0aXZlbHkgdXNlIHRoZSBjYWJleHRyYWN0IHV0aWxpdHkgdG8KICAgICAgICAgIGV4dHJhY3QgV2luZG93cyBpbnN0YWxsIGFyY2hpdmVzIHRvIGEgZGlyZWN0b3J5IHRoYXQgeW91IHdhbnQgdG8gdXNlCiAgICAgICAgICBhcyBXaW5lJ3MgV2luZG93cyB0cmVlLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikhvdy1kby1JLWNvbmZpZ3VyZS1XaW5lLXRvLXJ1bi1vbi1teS1zeXN0ZW0iPgogICAgICAgIDxwYXJhPkhvdyBkbyBJIGNvbmZpZ3VyZSBXaW5lIHRvIHJ1biBvbiBteSBzeXN0ZW0/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSByZXF1aXJlcyB0aGF0IHlvdSBoYXZlIGEgY29uZmlnIGZpbGUgYXMgCiAgICAgICAgICA8ZmlsZW5hbWU+fi8ud2luZS9jb25maWc8L2ZpbGVuYW1lPi4gVGhlIGZvcm1hdCBvZiB0aGlzIGZpbGUgaXMKICAgICAgICAgIGV4cGxhaW5lZCBpbiB0aGUgPGZpbGVuYW1lPndpbmUuY29uZjwvZmlsZW5hbWU+IG1hbiBwYWdlLiBUaGUgZmlsZQogICAgICAgICAgPGZpbGVuYW1lPmRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWc8L2ZpbGVuYW1lPgogICAgICAgICAgKDx1bGluayB1cmw9Imh0dHA6Ly9zb3VyY2Uud2luZWhxLm9yZy9zb3VyY2UvZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZyI+CiAgICAgICAgICBodHRwOi8vc291cmNlLndpbmVocS5vcmcvc291cmNlL2RvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWc8L3VsaW5rPikgCiAgICAgICAgICBjb250YWlucyBhIGNvbmZpZyBmaWxlIGV4YW1wbGUuIE1vcmUgZXhwbGljaXQgZGlyZWN0aW9ucyBjYW4gYmUgCiAgICAgICAgICBmb3VuZCBpbiB0aGUgPGZpbGVuYW1lPlJFQURNRTwvZmlsZW5hbWU+IGZpbGUKICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi8vc291cmNlLndpbmVocS5vcmcvc291cmNlL1JFQURNRSI+CiAgICAgICAgICBodHRwOi8vc291cmNlLndpbmVocS5vcmcvc291cmNlL1JFQURNRTwvdWxpbms+KSB0aGF0IHdpbGwgYmUgbG9jYXRlZCBpbgogICAgICAgICAgdGhlIGJhc2UgV2luZSBkaXJlY3RvcnkgYWZ0ZXIgeW91IGd1bnppcCBhbmQgdW50YXIgdGhlIGRpc3RyaWJ1dGlvbgogICAgICAgICAgZmlsZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctZG8tSS11cGdyYWRlLWNvbmZpZ3VyYXRpb24iPgogICAgICAgIDxwYXJhPkhvdyBkbyBJIHVwZ3JhZGUgV2luZSB3aXRob3V0IGxvc2luZyBteSB3b3JraW5nIGNvbmZpZ3VyYXRpb24/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVXBncmFkaW5nIHRoZSB3aW5lIGluc3RhbGxhdGlvbiBkb2VzIG5vdCBhZmZlY3QgdGhlIGV4aXN0aW5nIHdpbmUKICAgICAgICAgIGNvbmZpZ3VyYXRpb24uIFNvIGFmdGVyIHVwZ3JhZGluZyB3aW5lIHlvdSBzdGlsbCBoYXZlIHRoZSBvbGQgKHdvcmtpbmcgKQogICAgICAgICAgd2luZSBjb25maWd1cmF0aW9uLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IklmLUktdXNlLVdpbmRvd3Mtd2hpY2gtdmVyc2lvbnMtT0siPgogICAgICAgIDxwYXJhPklmIEkgd2FudCB0byB1c2UgYSBXaW5kb3dzIGluc3RhbGwsIHdoaWNoIHZlcnNpb25zIGFyZSBPSz88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBFaXRoZXIgdXNlIGEgY2xhc3NpYyBuby13aW5kb3dzIGluc3RhbGwgKFdpbmUgaXMgZ2V0dGluZyBiZXR0ZXIgYWxsCiAgICAgICAgICB0aGUgdGltZSkgb3IgdXNlIGEgV2luOXggaW5zdGFsbCAoV2luOTUsIDk4LCA5OFNFLCBNRSkuIERPTidUIAogICAgICAgICAgY29uZmlndXJlIFdpbmUgdG8gdXNlIGFuIE5ULWJhc2VkIFdpbmRvd3MgaW5zdGFsbCAoTlQsIFdpbjJLLCBXaW5YUCwgV2luMkszKS4KICAgICAgICA8L3BhcmE+Cgk8cGFyYT4KCSAgSW4gZ2VuZXJhbCwgbW9zdCBXaW5kb3dzIGluc3RhbGxhdGlvbnMgY29udGFpbiB2YXN0IHF1YW50aXRpZXMgb2YgZ2FyYmFnZQoJICB0aGF0IGNhbiBjb25mdXNlIFdpbmUgYW5kIG1ha2UgaXQgbGVzcyByZWxpYWJsZS4gSWYgeW91IGNhbiwgaXQncyBiZXN0IHRvCgkgIGluc3RhbGwgdGhlIHByb2dyYW1zIHlvdSB3YW50IGludG8gV2luZSdzIGZha2Ugd2luZG93cyBkcml2ZS4KCTwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IklmLUktdXNlLVdpbmRvd3Mtd2hpY2gtb25lLXdvcmtzLWJlc3QiPgogICAgICAgIDxwYXJhPklmIEkgdXNlIGEgV2luZG93cyBpbnN0YWxsIHdpdGggV2luZSwgd2hpY2ggb25lIHdvcmtzIGJlc3Q/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQXMgb2YgMDIvMjAwMjoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJJ2Qgc2F5IFdpbjk4U0UgaXMgdGhlIGJlc3QgdmVyc2lvbiB0byB1c2Ugd2l0aCBXaW5lLCBhcyBpdCdzIGZhaXJseQogICAgICAgICAgd2lkZXNwcmVhZCBhbW9uZ3N0IGRldmVsb3BlcnMgYW5kIHJlbGF0aXZlbHkgb2xkLiBVc2luZyBXaW4ySyBmaWxlcwogICAgICAgICAgaXMgPGVtcGhhc2lzPmRlZmluaXRlbHk8L2VtcGhhc2lzPiB3b3JzZSB0aGFuIGEgcGxhaW4gbm8td2luZG93cyAKICAgICAgICAgIFdpbmUgaW5zdGFsbCwgYW5kIFdpbiBNRSBpcyBzYWlkIHRvIGJlIHByb2JsZW1hdGljLCB0b28gKGFzIHByb2JhYmx5CiAgICAgICAgICBubyBkZXZlbG9wZXIgdXNlcyBpdCkuIEluIHNob3J0OiBhbGwgV2luOXggJmx0Oz0gVzk4U0UgYXJlIGdvb2QuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSW5zdGFsbGluZy1WaXN1YWwtQmFzaWMtYXBwcy13b250LXJ1biI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJbnN0YWxsaW5nIGFwcGxpY2F0aW9ucyBnZW5lcmF0ZWQgYnkgVmlzdWFsIEJhc2ljIHdvbid0IHJ1bi4gV2hhdAogICAgICAgICAgc2hvdWxkIEkgZG8/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgTWFrZSBzdXJlIHlvdSBoYXZlIGFsbCB0aGUgVkIgcnVuIHRpbWUgbGlicmFyaWVzIGluc3RhbGxlZC4gWW91IGNhbgogICAgICAgICAgZ2V0IHRoZSBsYXRlc3QgdmVyc2lvbiBmcm9tIHRoZSBNaWNyb3NvZnQgd2ViIHNpdGUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2hlbi1JLWNsaWNrLW9uLWV4ZS1maWxlLW5vdGhpbmctaGFwcGVucyI+CiAgICAgICAgPHBhcmE+V2hlbiBJIGNsaWNrIG9uICouZXhlIGZpbGUgaW4gbXkgZmlsZSBNYW5hZ2VyLCBub3RoaW5nIGhhcHBlbnMuPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIG5vcm1hbCBXaW5lIHJlbGVhc2VzIGRvbid0IGhhdmUgLmV4ZSBleHRlbnNpb25zIHJlZ2lzdGVyZWQgZm9yCiAgICAgICAgICBXaW5lIGluIEtERS9Hbm9tZSB5ZXQuIFlvdSBoYXZlIHRvIG9wZW4gYSB0ZXJtaW5hbCB3aW5kb3cgaW5zdGVhZAogICAgICAgICAgKG9mdGVuIGFuIGljb24gc2hvd2luZyBhICJibGFjayBzY3JlZW4iKSBhbmQgdHlwZSBzb21ldGhpbmcgbGlrZToKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNjcmVlbj4KY2QgL215L3dpbmRvd3MvcHJvZ3JhbS9kaXJlY3RvcnkKd2luZSBteXByb2dyYW0uZXhlCiAgICAgICAgPC9zY3JlZW4+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBPciBhbHRlcm5hdGl2ZWx5IHlvdSBjb3VsZCBkb3dubG9hZCB0aGUgQ29kZVdlYXZlcnMgV2luZSBwcmV2aWV3IAogICAgICAgICAgd2hpY2ggaW5jbHVkZXMgLmV4ZSBleHRlbnNpb24gcmVnaXN0cmF0aW9uIGZvciBLREUvR25vbWUgYW5kIGEgbmljZQogICAgICAgICAgc2V0dXAgcHJvZ3JhbS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJiYXNoLXdpbmUtQ29tbWFuZC1ub3QtZm91bmQtV2hhdC1jYW4tSS1kbyI+CiAgICAgICAgPHBhcmE+YmFzaCBzYXlzICJ3aW5lOiBDb21tYW5kIG5vdCBmb3VuZCIgV2hhdCBjYW4gSSBkbz88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUcnkgdG8gbG9nb3V0IGFuZCBsb2dpbiBhZ2FpbiBpbnRvIGJhc2guIFRoYXQgbWlnaHQgZml4IGl0LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIGl0IGRvZXNuJ3QsIHRoZW4gbWFrZSBzdXJlIHRoZSB3aW5lIGJpbmFyeSBpcyBpbiB5b3VyIAogICAgICAgICAgPHBhcmFtZXRlcj5QQVRIPC9wYXJhbWV0ZXI+LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFJ1biBhcyByb290OgogICAgICAgIDwvUGFyYT4KICAgICAgICA8c2NyZWVuPgpmaW5kIC8gLW5hbWUgIndpbmUiIC10eXBlIGYgLXBlcm0gKzExMQogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDxwYXJhPgogICAgICAgICAgdG8gZmluZCB0aGUgcGF0aCB3aGVyZSB0aGUgd2luZSBiaW5hcnkgaXMgaW4uIFRoZW4gY2hlY2sgd2hldGhlcgogICAgICAgIDxwYXJhbWV0ZXI+UEFUSDwvcGFyYW1ldGVyPiBpbmNsdWRlcyBpdDoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNjcmVlbj4KZWNobyAkUEFUSCAKICAgICAgICA8L3NjcmVlbj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIG5vdCwgYWRkIHRoYXQgZS5nLiB0byA8ZmlsZW5hbWU+L2V0Yy9wcm9maWxlPC9maWxlbmFtZT4gYnkgZG9pbmc6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxzY3JlZW4+CmV4cG9ydCBQQVRIPSRQQVRIOi9wYXRoL3RvL3dpbmUvYmluYXJ5IAogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhhdCBzaG91bGQgaGVscC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICAgSWYgeW91IHVzZWQgYSBwYWNrYWdlIG1hbmFnZXIgKDxjb21tYW5kPnJwbTwvY29tbWFuZD4gb3IgCiAgICAgICAgICAgPGNvbW1hbmQ+YXB0PC9jb21tYW5kPikgLSBWZXJpZnkgeW91ciBwYWNrYWdlcy4gVGhlIHBhY2thZ2UgCiAgICAgICAgICAgPGZpbGVuYW1lPndpbmVzZXR1cHRrLnJwbTwvZmlsZW5hbWU+IGlzIG9ubHkgYSBmcm9udC1lbmQgZm9yIAogICAgICAgICAgIG1ha2luZyBhIG1lYW5pbmdmdWwgY29uZmlnIGZpbGUsIGl0IERPRVMgTk9UIGluc3RhbGwgdGhlIHdpbmUKICAgICAgICAgICBwYWNrYWdlLi4uCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgIEZvciBjb21wbGV0ZSBwYWNrYWdlcywgdXNlIDx1bGluayB1cmw9Imh0dHA6Ly9ycG1zZWVrLmNvbS9ycG0tcGwvd2luZS5odG1sP2hsPWNvbSZhbXA7Y3g9MDo6Ij4KICAgICAgICAgICBodHRwOi8vcnBtc2Vlay5jb20vPC91bGluaz4gb3IgdGhlIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLm9yZy9zaXRlL2Rvd25sb2FkIj4KICAgICAgICAgICBEb3dubG9hZDwvdWxpbms+IHNlY3Rpb24uCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWRvLUktcmVtb3ZlLVdpbmUtZnJvbS1teS1Db21wdXRlciI+CiAgICAgICAgPHBhcmE+SG93IGRvIEkgcmVtb3ZlIFdpbmUgZnJvbSBteSBDb21wdXRlcj88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJdCBkZXBlbmRzIG9uIGhvdyB5b3UgaW5zdGFsbGVkLiBJZiB5b3UgdXNlZCBhbiBSUE0sIHRoZSByaWdodCBjb21tYW5kIGlzIHRoaXM6CiAgICAgICAgIDxjb21tYW5kPnJwbSAtZSB3aW5lIChhcyByb290KTwvY29tbWFuZD4KICAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KICAgICAgICAgSWYgeW91IGluc3RhbGxlZCBmcm9tIHNvdXJjZSAodGhlIC50YXIuZ3ogZmlsZSksIHRoZSByaWdodAogICAgICAgICB3YXkgdG8gZG8gaXQgaXMgdG8gY2hhbmdlIHRvIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZSAodGhlIGRpcmVjdG9yeSB3aXRoIHRoZSBjb25maWd1cmUgc2NyaXB0LAogICAgICAgICByZWFkbWUgZXRjKSB0aGVuIHJ1biBhcyByb290OgogICAgICAgICA8Y29tbWFuZD5tYWtlIHVuaW5zdGFsbDwvY29tbWFuZD4KICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KICAgIDwvcWFuZGFkaXY+CgogICAgPHFhbmRhZGl2IGlkPSJBYm91dC1ydW5uaW5nLVdpbmUiPgogICAgICA8dGl0bGU+QWJvdXQgcnVubmluZyBXaW5lPC90aXRsZT4KICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWRvLUktcnVuLWFuLU1TLVdpbmRvd3MtcHJvZ3JhbSI+CiAgICAgICAgPHBhcmE+SG93IGRvIEkgcnVuIGFuIE1TIFdpbmRvd3MgcHJvZ3JhbSB1bmRlciBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdoZW4gaW52b2tpbmcgV2luZSwgeW91IG11c3Qgc3BlY2lmeSB0aGUgZW50aXJlIHBhdGggdG8gdGhlCiAgICAgICAgICBleGVjdXRhYmxlLCBvciBieSBmaWxlIG5hbWUgb25seS4gRm9yIGV4YW1wbGUgdG8gcnVuIFdpbmRvd3MnCiAgICAgICAgICBzb2xpdGFpcmUsIHR5cGUgYW55IG9mIHRoZSBmb2xsb3dpbmc6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPGNvbW1hbmQ+d2luZSBzb2w8L2NvbW1hbmQ+IG9yIDxjb21tYW5kPndpbmUgc29sLmV4ZTwvY29tbWFuZD4KICAgICAgICAgICAodXNpbmcgdGhlIHNlYXJjaCBwYXRoIHRvIGxvY2F0ZSB0aGUgZmlsZSkuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxjb21tYW5kPndpbmUgYzpcXHdpbmRvd3NcXHNvbC5leGU8L2NvbW1hbmQ+IAogICAgICAgICAgICh1c2luZyBhIERPUyBmaWxlIG5hbWUpLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8Y29tbWFuZD53aW5lIC91c3Ivd2luZG93cy9zb2wuZXhlPC9jb21tYW5kPgogICAgICAgICAgICh1c2luZyBhIFVOSVggZmlsZSBuYW1lKS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPGNvbW1hbmQ+d2luZSAiYzpcd2luZG93c1xzb2wuZXhlIjwvY29tbWFuZD4KICAgICAgICAgICAgKHVzaW5nIHF1b3RlZCBET1MgZmlsZSBuYW1lKS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGUgcGF0aCBvZiB0aGUgZmlsZSB3aWxsIGFsc28gYmUgYWRkZWQgdG8gdGhlIHBhdGggd2hlbiBhIGZ1bGwgbmFtZQogICAgICAgICAgaXMgc3VwcGxpZWQgb24gdGhlIGNvbW1hbmQgbGluZS4KCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2luZS1jYW5ub3QtZmluZC1NUy1XaW5kb3dzLW9uLW15LWRyaXZlIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEkgaGF2ZSBpbnN0YWxsZWQgYW5kIGNvbmZpZ3VyZWQgV2luZSwgYnV0IFdpbmUgY2Fubm90IGZpbmQgTVMgCiAgICAgICAgICBXaW5kb3dzIG9uIG15IGRyaXZlLiBXaGVyZSBkaWQgSSBnbyB3cm9uZz8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB5b3UgaGF2ZSBhIERPUyBwYXJ0aXRpb24sIGZpcnN0IG1ha2Ugc3VyZSB0aGF0IHlvdSBoYXZlIG1vdW50ZWQKICAgICAgICAgIGl0LCBlaXRoZXIgYnkgcHV0dGluZyB0aGUgZW50cnkgaW50byA8ZmlsZW5hbWU+L2V0Yy9mc3RhYjwvZmlsZW5hbWU+LAogICAgICAgICAgb3IgYnkgbWFudWFsbHkgbW91bnRpbmcgaXQuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgUmVtZW1iZXIgdG9vIHRoYXQgdW5sZXNzIHlvdXIgdmVyc2lvbiBvZiBVTklYIGNhbiBzZWUgdGhyb3VnaCBpdCwgb3IKICAgICAgICAgIHlvdSBhcmUgcnVubmluZyBhIHV0aWxpdHkgdGhhdCBjYW4gc2VlIHRocm91Z2ggaXQsIHlvdXIgRE9TCiAgICAgICAgICBwYXJ0aXRpb24gbXVzdCBub3QgYmUgbG9jYXRlZCBvbiBhIERyaXZlc3BhY2VkLCBEb3VibGVzcGFjZWQgb3IKICAgICAgICAgIFN0YWNrZXJlZCBwYXJ0aXRpb24sIGFzIG5laXRoZXIgTGludXgsIEZyZWVCU0QsIE5ldEJTRCBvciBXaW5lIGNhbgogICAgICAgICAgbmF0aXZlbHkgJ3NlZScgZmlsZXMgbG9jYXRlZCBpbiB0aGVzZSBjb21wcmVzc2VkIERPUyBwYXJ0aXRpb25zLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIENoZWNrIHlvdXIgcGF0aCBzdGF0ZW1lbnRzIGluIHRoZSA8ZmlsZW5hbWU+d2luZS5jb25mPC9maWxlbmFtZT4gCiAgICAgICAgICBmaWxlLiBObyBjYXBpdGFsIGxldHRlcnMgbWF5IGJlIHVzZWQgaW4gcGF0aHMsIGFzIHRoZXkgYXJlIAogICAgICAgICAgYXV0b21hdGljYWxseSBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IlBhcnRzLW9mLW15LWFwcC1kby1ub3Qtd29yay1XaGF0LWlzLXdyb25nIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEkgd2FzIGFibGUgdG8gZ2V0IHZhcmlvdXMgTVMgV2luZG93cyBwcm9ncmFtcyB0byBydW4sIGJ1dCBwYXJ0cyBvZgogICAgICAgICAgdGhlbSBkbyBub3Qgd29yay4gV2hhdCBpcyB3cm9uZz8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIGlzIG5vdCBjb21wbGV0ZSBhdCB0aGlzIHRpbWUsIHNvIHNvbWUgb2YgZWFjaCBwcm9ncmFtcycgCiAgICAgICAgICBmZWF0dXJlcyBtYXkgbm90IHdvcmsuIFRoZXkgd2lsbCBpbiB0aW1lIGFzIG1vcmUgb2YgdGhlIE1TIAogICAgICAgICAgV2luZG93cyBBUEkgY2FsbHMgYXJlIGluY2x1ZGVkIGluIFdpbmUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iTWVudXMtZG8tbm90LXdvcmstaG93LWNhbi1JLWV4aXQiPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSSBoYXZlIHJ1biB2YXJpb3VzIE1TIFdpbmRvd3MgcHJvZ3JhbXMsIGJ1dCBzaW5jZSB0aGUgcHJvZ3JhbSBtZW51cwogICAgICAgICAgZG8gbm90IHdvcmssIGhvdyBjYW4gSSBleGl0IHRoZXNlIHByb2dyYW1zPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEtpbGwgdGhlIHh0ZXJtIHNoZWxsIHdpbmRvdyB0aGF0IHlvdSBjYWxsZWQgdXAgdG8gcnVuIHlvdXIgTVMgCiAgICAgICAgICBXaW5kb3dzIHByb2dyYW0sIGFuZCB0aGUgWCB3aW5kb3cgdGhhdCBhcHBlYXJlZCB3aXRoIHRoZSBwcm9ncmFtIAogICAgICAgICAgd2lsbCBiZSBraWxsZWQgdG9vLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgoJPHF1ZXN0aW9uIGlkPSJNeS1hcHAtZG9lc250LXdvcmstd2hhdC1jYW4taS1kbyI+CgkgIDxwYXJhPgoJICAgIE15IHByb2dyYW0gZG9lc24ndCB3b3JrLCB3aGF0IGNhbiBJIGRvPwoJICA8L3BhcmE+Cgk8L3F1ZXN0aW9uPgoJPGFuc3dlcj4KCSAgPHBhcmE+CgkgICAgSWYgeW91IGFyZSBhIHByb2dyYW1tZXIgYW5kIGtub3cgQywgdGhlbiBzdGFydCBkZWJ1Z2dpbmcKCSAgICBXaW5lIGFuZCBoZWxwIHVzIG1ha2UgaXQgYmV0dGVyISBJZiB5b3UgY2FuJ3QsIHRoZW4geW91IHdpbGwKCSAgICBoYXZlIHRvIGVpdGhlciBjb252aW5jZSBhIFdpbmUgZGV2ZWxvcGVyIHRvIHRyeSBhbmQgbWFrZSB5b3VyCgkgICAgcHJvZ3JhbSB3b3JrICh0aGVyZSBtdXN0IGJlIGEgZG93bmxvYWRhYmxlIHZlcnNpb24gb3IgZGVtbyBmb3IKCSAgICB0aGF0KSwgb3IgaGlyZSBzb21lYm9keSB0byBkbyBpdCBmb3IgeW91LiBJZiB0aGlzIGFwcGxpY2F0aW9uCgkgICAgaXMgYW4gaW50ZXJuYWwgY29ycG9yYXRlIGFwcGxpY2F0aW9uLCB5b3UgbWF5IGJlIGFibGUgdG8gaGlyZSBhCgkgICAgV2luZSBkZXZlbG9wZXIgdG8gZG8gY29uc3VsdGluZyB3b3JrIGZvciB5b3Ugb24gdGhlIG1hdHRlci4KCSAgPC9wYXJhPgoJICA8cGFyYT4KCSAgICBBbHRlcm5hdGl2ZWx5LCB5b3UgbWF5IGJlIGFibGUgdG8gZ2V0IHRoZSBhcHAgd29ya2luZyBieQoJICAgIHRha2luZyBuYXRpdmUgRExMcyBmcm9tIGEgTWljcm9zb2Z0IFdpbmRvd3MgaW5zdGFsbCwgYW5kIHVzaW5nCgkgICAgdGhlbSAoc2V0IHRoZSBkbGxzIHRvIG5hdGl2ZSBpbiB0aGUgY29uZmlnIGZpbGUpLiBOb3QgYWxsIERMTHMKCSAgICBjYW4gYmUgcmVwbGFjZWQgdGhhdCB3YXkgLSBpbiBwYXJ0aWN1bGFyIERpcmVjdFggY2Fubm90IGJlLCBub3IKCSAgICBjYW4gc29tZSBjb3JlIHN5c3RlbSBETExzIGxpa2UgdXNlciwgbnRkbGwsIGtlcm5lbDMyIGV0YwoJICA8L3BhcmE+Cgk8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgICAKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iQ2FuLUktdXNlLVdpbmUtd2l0aC1vdGhlci1MaW51eC1EaXN0cm9zIj4KICAgICAgICA8cGFyYT5DYW4gSSB1c2UgV2luZSB3aXRoIFNVU0UsIFBlYW51dCBvciBvdGhlciBMaW51eCBEaXN0cm8ncz88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBZb3UgY2FuIHVzZSBXaW5lIG9uIGFueSBzdWZmaWNpZW50bHkgcmVjZW50IExpbnV4IGluc3RhbGxhdGlvbi4gVGhlCiAgICAgICAgICBhbW91bnQgb2Ygd29yayBnZXR0aW5nIFdpbmUgdXAgYW5kIHJ1bm5pbmcgZGVwZW5kcyBvbiB3aGV0aGVyIHRoZXJlCiAgICAgICAgICBhcmUgcHJvcGVyIHBhY2thZ2VzIGF2YWlsYWJsZSBvciBhIHNvdXJjZSBjb21waWxlIGhhcyB0byBiZSBkb25lLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IkRvZXMtV2luZS13b3JrLXdpdGgtQU1ELVByb2Nlc3NvcnMiPgogICAgICAgIDxwYXJhPkRvZXMgV2luZSB3b3JrIHdpdGggQU1EIFByb2Nlc3NvcnM/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWWVzLCBpdCBkb2VzLiBXaW5lIHNob3VsZCB3b3JrIG9uIGFueSBwcm9jZXNzb3IgY29tcGF0aWJsZSB3aXRoCiAgICAgICAgICB0aGUgUGVudGl1bSBvciBncmVhdGVyLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJDYW4tSS1sYXVuY2gtVW5peC1hcHAtZnJvbS1XaW5kb3dzLWFwcCI+CiAgICAgICAgPHBhcmE+IENhbiBJIGxhdW5jaCBhIFVuaXggcHJvZ3JhbSBmcm9tIGEgV2luZG93cyBwcm9ncmFtPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFN1cmUsIFdpbmUgc3VwcG9ydHMgdGhhdC4gSnVzdCBlbnRlciB0aGUgdW5peCBwcm9ncmFtIG5hbWUgd2hlcmV2ZXIKICAgICAgICAgIGEgcHJvZ3JhbSBoYXMgc29tZXRoaW5nIHRoYXQgaXQncyBzdXBwb3NlZCB0byBleGVjdXRlLCBhbmQgaXQKICAgICAgICAgIHNob3VsZCBqdXN0IHdvcmsuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJFcnJvci13aXRoLWluc3RhbGxzaGllbGQtNiI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJIGdldCA8cXVvdGU+RXJyb3IgaW5zdGFsbGluZyBpS2VybmVsLmV4ZTogKDB4MTQwMCk8L3F1b3RlPgogICAgICAgICAgd2hlbiBydW5uaW5nIGFuIEluc3RhbGxTaGllbGQgNiBpbnN0YWxsZXIuCiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgeW91IGdldCB0aGUgZXJyb3IgIkVycm9yIGluc3RhbGxpbmcgaUtlcm5lbC5leGU6ICgweDE0MDApIiBhdCBhbnkKICAgICAgICAgIHBvaW50LCBpdCdzIHByb2JhYmx5IGJlY2F1c2UgdGhlcmUgYXJlIGxlZnRvdmVyIHByb2Nlc3NlcyBmcm9tIGEKICAgICAgICAgIHByZXZpb3VzIHRyeS4gWW91IGNhbiB2ZXJpZnkgdGhpcyB3aXRoIHRoZSBjb21tYW5kCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPjxwcm9tcHQ+JCA8Lz48Y29tbWFuZD5wcyBhdWd4dyB8IGdyZXAgd2luZTwvY29tbWFuZD48L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB0aGF0IGNvbW1hbmQgc2hvd3Mgb2xkIGNvcGllcyBvZiB3aW5lIHJ1bm5pbmcgeW91ciBzZXR1cCwKICAgICAgICAgIHlvdSBuZWVkIHRvIGtpbGwgdGhlbSBiZWZvcmUgeW91IGNhbiBydW4gdGhlIHNldHVwIHByb2dyYW0uCiAgICAgICAgICBJZiB0aGVyZSBhcmUgbm8gb3RoZXIgV2luZSBwcm9ncmFtcyBydW5uaW5nLCB5b3UgY2FuIGtpbGwgdGhlbQogICAgICAgICAgYWxsIHdpdGggdGhlIGNvbW1hbmQKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+PHByb21wdD4kIDwvPjxjb21tYW5kPmtpbGxhbGwgd2luZTwvY29tbWFuZD48L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB5b3UncmUgYWxzbyBydW5uaW5nIFdpbmUgcHJvZ3JhbXMgeW91IGNhcmUgYWJvdXQsIHlvdSdsbAogICAgICAgICAgaGF2ZSB0byBraWxsIG9mZiB0aGUgb2xkIFNldHVwIGluc3RhbmNlcyBvbmUgYnkgb25lIHVzaW5nCiAgICAgICAgICBraWxsIGFuZCB0aGUgaW5kaXZpZHVhbCBQSURzIChvciBwZXJoYXBzIFdpbmUncyBzcGlmZnkgVGFzayBNYW5hZ2VyLAogICAgICAgICAgd2hpY2ggZG9lc24ndCBleGlzdCB5ZXQpLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFlvdSBzaG91bGQgcmVwZWF0IHRoZSA8Y29tbWFuZD5wczwvY29tbWFuZD4gdG8gbWFrZSBzdXJlIHRoZSBvbGQgCiAgICAgICAgICBXaW5lIHByb2Nlc3NlcyBhcmUgZ29uZS4KICAgICAgICA8L3BhcmE+CiAgICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgPC9xYW5kYWRpdj4KICAgICAKICAgIDxxYW5kYWRpdiBpZD0iR2V0dGluZy1oZWxwIj4KICAgICAgPHRpdGxlPkdldHRpbmcgaGVscDwvdGl0bGU+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IklzLXRoZXJlLWFueS1kb2N1bWVudGF0aW9uLWZvci1XaW5lIj4KICAgICAgICA8cGFyYT5JcyB0aGVyZSBhbnkgZG9jdW1lbnRhdGlvbiBmb3IgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBZZXMsIHNlZSA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmcvc2l0ZS9kb2N1bWVudGF0aW9uIj4KICAgICAgICAgIGh0dHA6Ly93d3cud2luZWhxLm9yZy9zaXRlL2RvY3VtZW50YXRpb24uPC91bGluaz4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJLWhhdmUtd3JpdHRlbi1zb21lLWRvY3VtZW50ZW50YXRpb24iPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSSBjb3VsZG4ndCBmaW5kIHRoZSBhbnN3ZXIgdG8gbXkgcXVlc3Rpb24gaW4gdGhlIGRvY3VtZW50YXRpb24sIGJ1dAogICAgICAgICAgSSd2ZSB3cml0dGVuIGEgZG9jdW1lbnQgZXhwbGFpbmluZyBob3cgdG8gc29sdmUgaXQuIFdoYXQgc2hvdWxkIEkgZG8/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVXBkYXRlcyBhbmQgYWRkaXRpb25zIHRvIHRoZSBXaW5lIGRvY3VtZW50YXRpb24gZGlyZWN0b3J5IHNob3VsZCBiZQogICAgICAgICAgc2VudCB0byB0aGUgd2luZS1wYXRjaGVzIG1haWxpbmcgbGlzdCBhdCAKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLm9yZy9zaXRlL2ZvcnVtcyI+CiAgICAgICAgICBodHRwOi8vd3d3LndpbmVocS5vcmcvc2l0ZS9mb3J1bXM8L3VsaW5rPi4gV2Vic2l0ZSBhbmQgRkFRIAogICAgICAgICAgYWRkaXRpb25zIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgYXBwcm9wcmlhdGUgV2luZSBLbm93bGVkZ2UgYmFzZSBkaXJlY3RvcnkuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSXMtdGhlcmUtYS1Vc2VuZXQtbmV3c2dyb3VwLWZvci1XaW5lIj4KICAgICAgICA8cGFyYT5JcyB0aGVyZSBhIFVzZW5ldCBuZXdzZ3JvdXAgZm9yIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWWVzLCBhbmQgaXQncyBjYWxsZWQgCiAgICAgICAgICA8dWxpbmsgdXJsPSJuZXdzOmNvbXAuZW11bGF0b3JzLm1zLXdpbmRvd3Mud2luZSI+CiAgICAgICAgICBjb21wLmVtdWxhdG9ycy5tcy13aW5kb3dzLndpbmU8L3VsaW5rPi4gVGhlIG5ld3Nncm91cCBzZXJ2ZXMgYXMgYQogICAgICAgICAgcGxhY2UgZm9yIHVzZXJzIGFuZCBkZXZlbG9wZXJzIHRvIGRpc2N1c3MgV2luZSwgYW5kIGZvciBtaW5vciAKICAgICAgICAgIGFubm91bmNlbWVudHMgZm9yIHRoZSBnZW5lcmFsIHB1YmxpYy4gTWFqb3IgYW5ub3VuY2VtZW50cyB3aWxsIGJlCiAgICAgICAgICBjcm9zcyBwb3N0ZWQgdG8gb3RoZXIgYXBwcm9wcmlhdGUgbmV3c2dyb3Vwcywgc3VjaCBhcyB0aGUgZm9sbG93aW5nOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDx1bGluayB1cmw9Im5ld3M6Y29tcC5vcy5saW51eC5hbm5vdW5jZSI+CiAgICAgICAgICAgIGNvbXAub3MubGludXguYW5ub3VuY2U8L3VsaW5rPgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8dWxpbmsgdXJsPSJuZXdzOmNjb21wLndpbmRvd3MueC5hbm5vdW5jZSI+CiAgICAgICAgICAgIGNvbXAud2luZG93cy54LmFubm91bmNlPC91bGluaz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHVsaW5rIHVybD0ibmV3czpjY29tcC5lbXVsYXRvcnMuYW5ub3VuY2UiPgogICAgICAgICAgICBjb21wLmVtdWxhdG9ycy5hbm5vdW5jZTwvdWxpbms+CiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgeW91ciBVc2VuZXQgc2l0ZSBkb2VzIG5vdCBjYXJyeSB0aGVzZSBuZXdzZ3JvdXBzLCBwbGVhc2UgdXJnZSAKICAgICAgICAgIHlvdXIgSVNQJ3Mgc3lzYWRtaW4gdG8gYWRkIGFuZC9vciB1cGxpbmsgdGhlbS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJcy10aGVyZS1hLVdvcmxkLVdpZGUtV2ViLXNpdGUtZm9yLVdpbmUiPgogICAgICAgIDxwYXJhPklzIHRoZXJlIGEgV29ybGQgV2lkZSBXZWIgc2l0ZSBmb3IgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIEhRICg8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmciPmh0dHA6Ly93d3cud2luZWhxLm9yZzwvdWxpbms+KSBpcyB0aGUgb2ZmaWNpYWwgc2l0ZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJcy10aGVyZS1hbi1JUkMtY2hhbm5lbC1mb3ItV2luZSI+CiAgICAgICAgPHBhcmE+SXMgdGhlcmUgYW4gSVJDIGNoYW5uZWwgZm9yIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgU3VyZS4gSXQncyBjaGFubmVsIDxmaWxlbmFtZT4jV2luZUhRPC9maWxlbmFtZT4gb24gCiAgICAgICAgICA8ZmlsZW5hbWU+aXJjLmZyZWVub2RlLm5ldDwvZmlsZW5hbWU+IHNlZSAKICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi8vZnJlZW5vZGUubmV0Ij5odHRwOi8vZnJlZW5vZGUubmV0PC91bGluaz4pLgogICAgICAgICAgVXN1YWxseSBzZXZlcmFsIFdpbmUgZGV2ZWxvcGVycyBoYW5nIG91dCB0aGVyZSBqdXN0IHRvIGhlbHAgWU9VIDstKQogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IkktdGhpbmstSS1mb3VuZC1hLWJ1Zy1Ib3ctZG8tSS1yZXBvcnQtaXQiPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSSB0aGluayBJJ3ZlIGZvdW5kIGEgYnVnLiBIb3cgZG8gSSByZXBvcnQgdGhpcyBidWcgdG8gdGhlIFdpbmUKICAgICAgICAgIHByb2dyYW1taW5nIHRlYW0/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQnVnIHJlcG9ydHMgc2hvdWxkIGJlIHN1Ym1pdHRlZCB0byBvdXIgb25saW5lIEJ1Z3ppbGxhIHN5c3RlbSAKICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi8vYnVncy53aW5laHEub3JnLyI+aHR0cDovL2J1Z3Mud2luZWhxLm9yZy88L3VsaW5rPikuCiAgICAgICAgICBZb3Ugc2hvdWxkIGluY2x1ZGUgYXQgbGVhc3QgdGhlIGZvbGxvd2luZzoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBUaGUgV2luZSB2ZXJzaW9uIHRlc3RlZAogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBUaGUgV2luZG93cyBhcHBsaWNhdGlvbiBuYW1lLCBpbmNsdWRpbmcgdGhlIHZlcnNpb24sIGFuZCwgaWYKICAgICAgICAgICAgYXBwbGljYWJsZSwgYSBVUkwgdGhlIGFwcGxpY2F0aW9uIGNhbiBiZSBkb3dubG9hZGVkIGZyb20KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgQSBicmllZiBkZXNjcmlwdGlvbiBvZiB0aGUgYnVnCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFRoZSByZWxldmFudCBwYXJ0KHMpIG9mIHRoZSBvdXRwdXQgb2YgdGhlIFdpbmUgZGVidWdnZXIKICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgQSBzY3JlZW5zaG90IG9mIHRoZSB2aXN1YWwgcHJvYmxlbSwgaWYgYXBwbGljYWJsZQogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICA8cGFyYT4KICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgcmVwb3J0aW5nIGJ1Z3MgcGxlYXNlIHNlZSB0aGUgCiAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLm9yZy9Eb2NzL3dpbmUtdXNlci9idWctcmVwb3J0aW5nLnNodG1sIj4KICAgICAgICAgSG93IHRvIHJlcG9ydCBhIGJ1ZzwvdWxpbms+IHNlY3Rpb24gb2YgdGhlIFdpbmUgVXNlcnMgR3VpZGUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgPC9xYW5kYWRpdj4KIAogICAgPHFhbmRhZGl2IGlkPSJIZWxwaW5nLVdpbmUtb3ItYmVjb21pbmctYS1XaW5lLWRldmVsb3BlciI+CiAgICAgIDx0aXRsZT5IZWxwaW5nIFdpbmUgb3IgYmVjb21pbmcgYSBXaW5lIGRldmVsb3BlcjwvdGl0bGU+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikhvdy1kby1JLWJlY29tZS1hLVdpbmUtZGV2ZWxvcGVyIj4KICAgICAgICA8cGFyYT5Ib3cgZG8gSSBiZWNvbWUgYSBXaW5lIGRldmVsb3Blcj8gV2hhdCBkbyBJIG5lZWQgdG8ga25vdz88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB5b3UgY2FuIHByb2dyYW0gQywgdGhhdCdzIGEgZ29vZCBzdGFydC4gRG93bmxvYWQgdGhlIHNvdXJjZXMgdmlhCiAgICAgICAgICAoPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL3NpdGUvY3ZzIj5DVlMsPC91bGluaz4pCiAgICAgICAgICBzdWJzY3JpYmUgdG8gdGhlIG1haWxpbmcgbGlzdHMsIGxvb2sgYXJvdW5kIHRoZSBzb3VyY2UsIGFuZAogICAgICAgICAgcGF5IGF0dGVudGlvbiB0byB0aGUgY29tcC5lbXVsYXRvcnMubXMtd2luZG93cy53aW5lIG5ld3Nncm91cAogICAgICAgICAgYW5kIHRoZSBtYWlsaW5nIGxpc3RzICg8dWxpbmsKICAgICAgICAgIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL3NpdGUvZm9ydW1zIj5odHRwOi8vd3d3LndpbmVocS5vcmcvc2l0ZS9mb3J1bXM8L3VsaW5rPikuCiAgICAgICAgICBTZWUgaWYgdGhlcmUncyBhbnl0aGluZyB0aGF0IHlvdSB0aGluayB5b3UgY2FuIGZpeCBvciB3b3JrCiAgICAgICAgICBvbi4gWW91IHdvbid0IGhhdmUgbXVjaCB0cm91YmxlIGZpbmRpbmcgYXJlYXMgdGhhdCBuZWVkIHdvcmsKICAgICAgICAgIGluIFdpbmUgKGdyZXAgZm9yIEZJWE1FcyBpbiB0aGUgc291cmNlKS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctY2FuLUktY29udHJpYnV0ZS10by10aGUtV2luZS1wcm9qZWN0Ij4KICAgICAgICA8cGFyYT5Ib3cgY2FuIEkgaGVscCBjb250cmlidXRlIHRvIHRoZSBXaW5lIHByb2plY3QsIGFuZCBpbiB3aGF0IHdheShzKT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBZb3UgY2FuIGNvbnRyaWJ1dGUgcHJvZ3JhbW1pbmcgb3IgZG9jdW1lbnRhdGlvbiBza2lsbHMsIG9yIG1vbmV0YXJ5CiAgICAgICAgICBvciBlcXVpcG1lbnQgZG9uYXRpb25zLCB0byBhaWQgdGhlIFdpbmUgZGV2ZWxvcGVycyBpbiByZWFjaGluZyB0aGVpciAKICAgICAgICAgIGdvYWxzLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEZvciBhIGxpc3Qgb2YgaWRlYXMgb2YgaG93IHlvdSBjYW4gaGVscCwgcGxlYXNlIGNvbnN1bHQgdGhlIAogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL3NpdGUvY29udHJpYnV0aW5nIj4KICAgICAgICAgIFdpbmUgY29udHJpYiBwYWdlPC91bGluaz4uCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSS13YW50LXRvLWhlbHAtYmV0YS10ZXN0LVdpbmUiPgogICAgICAgIDxwYXJhPkkgd2FudCB0byBoZWxwIGJldGEgdGVzdCBXaW5lLiBIb3cgY2FuIEkgZG8gdGhpcz88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIHN0aWxsIGNvbnNpc3RzIG9mIHNvbWUgQWxwaGEgY29kZSBhdCB0aGlzIHRpbWUuIEhvd2V2ZXIsIGFueW9uZQogICAgICAgICAgaXMgd2VsY29tZSB0byBkb3dubG9hZCB0aGUgbGF0ZXN0IHZlcnNpb24sIGFuZCB0cnkgaXQgb3V0IGF0IGFueQogICAgICAgICAgdGltZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJLXdyb3RlLXNvbWUtY29kZS1JLXdvdWxkLWxpa2UtdG8tc3VibWl0Ij4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEkgaGF2ZSB3cml0dGVuIHNvbWUgY29kZSB0aGF0IEkgd291bGQgbGlrZSB0byBzdWJtaXQgdG8gdGhlIFdpbmUKICAgICAgICAgIHByb2plY3QuIEhvdyBkbyBJIGdvIGFib3V0IGRvaW5nIHRoaXM/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgU3VibWl0dGluZyBhIHBhdGNoIGZvciBpbmNsdXNpb24gaW4gV2luZSBpcyBwcmV0dHkgc2ltcGxlLgogICAgICAgICAgQmFzaWNhbGx5IGFsbCB5b3UgaGF2ZSB0byBkbyBpcyBzZW5kIHRoZSBwYXRjaCB0byB0aGUKICAgICAgICAgIHdpbmUtcGF0Y2hlcyBtYWlsaW5nIGxpc3QgCiAgICAgICAgICAoPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL21haWxtYW4vbGlzdGluZm8vd2luZS1wYXRjaGVzIj5odHRwOi8vd3d3LndpbmVocS5vcmcvbWFpbG1hbi9saXN0aW5mby93aW5lLXBhdGNoZXM8Lz4pLgogICAgICAgICAgU3RpbGwgdGhlcmUgYXJlIGEgY291cGxlIG9mIHJlY29tbWVuZGF0aW9ucyBhYm91dCB0aGUgcGF0Y2ggZm9ybWF0CiAgICAgICAgICBhbmQgYWxsIHNvIGl0J3MgYmVzdCB0byByZWFkIG91ciBwYWdlIGRlc2NyaWJpbmcgPHVsaW5rCiAgICAgICAgICB1cmw9Imh0dHA6Ly93d3cud2luZWhxLm9yZy9zaXRlL3NlbmRpbmdfcGF0Y2hlcyI+aG93IHRvIHN1Ym1pdAogICAgICAgICAgcGF0Y2hlczwvPi4gVGhpcyB3aWxsIGFsc28gZ2l2ZSB5b3UgbW9yZSBkZXRhaWxzIGFib3V0IHRoZSB3aG9sZQogICAgICAgICAgcHJvY2VzcyBhbmQgaW4gcGFydGljdWxhciB0byB3aGF0IHdpbGwgaGFwcGVuIHRvIHlvdXIgcGF0Y2ggb25jZQogICAgICAgICAgc3VibWl0dGVkLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KICAgIDwvcWFuZGFkaXY+CiAKICAgIDxxYW5kYWRpdiBpZD0iRGV2ZWxvcGluZy1wcm9ncmFtcy11c2luZy1XaW5lLVdpbmVMaWIiPgogICAgICA8dGl0bGU+RGV2ZWxvcGluZyBwcm9ncmFtcyB1c2luZyBXaW5lL1dpbmVMaWI8L3RpdGxlPgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJDYW4tSS11c2UtV2luZS10by1wb3J0LVdpbjMyLXNvdXJjZXMtdG8tVW5peCI+CiAgICAgICAgPHBhcmE+Q2FuIEkgdXNlIFdpbmUgdG8gcG9ydCBteSBXaW4zMiBzb3VyY2VzIHRvIFVuaXg/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhhdCBpcyB0aGUgaWRlYSBvZiBXaW5lbGliLiBSaWdodCBub3cgeW91IG1heSBzdGlsbCBoYXZlIHNvbWUgCiAgICAgICAgICBkaWZmaWN1bHRpZXMsIGJ1dCB0aGlzIGlzIGNoYW5naW5nIGFsbCB0aGUgdGltZS4gUmVhZCB0aGUgCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmcvRG9jcy93aW5lbGliLXVzZXIvIj5XaW5lbGliIFVzZXIncyBHdWlkZTwvdWxpbms+IGZvciBpbmZvLgoKICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldpbGwtTUZDLXdvcmstd2l0aC1XaW5lLVdoYXQtZG8tSS1uZWVkLXRvLWRvIj4KICAgICAgICA8cGFyYT5XaWxsIE1GQyB3b3JrIHdpdGggV2luZT8gV2hhdCBkbyBJIG5lZWQgdG8gZG8/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSBpcyBub3QgaW1wbGVtZW50aW5nIGFuIE1GQyByZXBsYWNlbWVudCBub3IgZG9lcyBpdCBpbnRlbmQgdG8uCiAgICAgICAgICBIb3dldmVyIGl0IGlzIHBvc3NpYmxlICh3aXRoIGEgbG90IG9mIHdvcmspIHRvIGNvbXBpbGUgdGhlIE1GQyBmcm9tCiAgICAgICAgICBzb3VyY2UgYW5kIHRodXMgcHJvZHVjZSBhbiA8ZmlsZW5hbWU+bWZjNDIuZGxsLnNvPC9maWxlbmFtZT4gbGlicmFyeS4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBQbGVhc2UgcmVmZXIgdG8gdGhlIAogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL0RvY3Mvd2luZWxpYi11c2VyLyI+V2luZWxpYiBVc2VyJ3MgR3VpZGU8L3VsaW5rPiBmb3IgaG93IHRvIGRvIHRoaXMuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iQXJlLXRoZXJlLWNvbW1lcmNpYWwtYXBwcy1wb3J0ZWQtdXNpbmctV2luZSI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBBcmUgdGhlcmUgYW55IGNvbW1lcmNpYWwgYXBwbGljYXRpb25zIHdoaWNoIGhhdmUgYmVlbiBwb3J0ZWQKICAgICAgICAgIHVzaW5nIFdpbmU/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSGVyZSBhcmUgZmV3IGV4YW1wbGVzIG9mIGFwcGxpY2F0aW9ucyBwb3J0ZWQgdXNpbmcgV2luZSBvciBXaW5lbGliOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIENvcmVsJ3MgV29yZFBlcmZlY3QgT2ZmaWNlIFN1aXRlIDIwMDAgd2FzIHBvcnRlZCB0byBMaW51eCB1c2luZwogICAgICAgICAgICBXaW5lLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBLeWxpeCwgdGhlIExpbnV4IHZlcnNpb24gb2YgRGVscGhpLCB3YXMgcG9ydGVkIHRvIExpbnV4IHVzaW5nCiAgICAgICAgICAgIFdpbmVsaWIuIFRoZSBJREUgYWN0dWFsbHkgdXNlcyBhIGNvbWJpbmF0aW9uIG9mIFFUIGFuZCBXaW5lbGliCiAgICAgICAgICAgIHdoaWNoIHdvdWxkIG5vdCBoYXZlIGJlZW4gcG9zc2libGUgdG8gYWNoaWV2ZSB1c2luZyBvbmx5IFdpbmUuCiAgICAgICAgICAgIFRoZSBnZW5lcmF0ZWQgYXBwbGljYXRpb25zIGhvd2V2ZXIgZG8gbm90IGRlcGVuZCBvbiBXaW5lIGluCiAgICAgICAgICAgIGFueSB3YXkuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIE11c2ljTWF0Y2ggSnVrZWJveCA1IGhhcyBhbHNvIGJlZW4KICAgICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy5pdHdvcmxkLmNvbS9ubC9sbnhfZGVza3RvcC8wMTA0MjAwMS8iPnBvcnRlZDwvPgogICAgICAgICAgICB0byBMaW51eCB1c2luZyBXaW5lbGliLiBIb3dldmVyIG1vcmUgcmVjZW50IHZlcnNpb25zIGhhdmUgbm90LCBhbmQKICAgICAgICAgICAgdmVyc2lvbiA1IGlzIG5vIGxvbmdlciBhdmFpbGFibGUuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIEFiaWxpdHkgT2ZmaWNlCiAgICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi8vd3d3LmFiaWxpdHkuY29tL2xpbnV4L2FiaWxpdHlsaW51eC5waHAiPmh0dHA6Ly93d3cuYWJpbGl0eS5jb20vbGludXgvYWJpbGl0eWxpbnV4LnBocDwvdWxpbms+KQogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBJQk0ncyBXZWJzcGhlcmUKICAgICAgICAgICAgKDx1bGluayB1cmw9Imh0dHA6Ly93d3c3Yi5ib3VsZGVyLmlibS5jb20vZGwvc3d3cy9zd3dzZ2RkYi1wIj5odHRwOi8vd3d3N2IuYm91bGRlci5pYm0uY29tL2RsL3N3d3Mvc3d3c2dkZGItcDwvdWxpbms+KQogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICA8cGFyYT4KICAgICAgICAgIE1hbnkgb3RoZXIgaW1wb3J0YW50IGFwcGxpY2F0aW9ucyBoYXZlIGFscmVhZHkgYmVlbiBwb3J0ZWQuICh3ZSBhcmUKICAgICAgICAgIHNwZWFraW5nIG9mIHNldmVyYWwgdG9wIDUwMCBhcHBsaWNhdGlvbnMgaGVyZSkKICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctY2FuLUktZGV0ZWN0LVdpbmUiPgogICAgICAgIDxwYXJhPkhvdyBjYW4gSSBkZXRlY3QgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBZb3UgcmVhbGx5IHNob3VsZG4ndCB3YW50IHRvIGRvIHRoaXMuIElmIHRoZXJlJ3MgYSBxdWlyayBpbiBXaW5lIAogICAgICAgICAgeW91IG5lZWQgdG8gd29yayBhcm91bmQsIGl0J3MgbXVjaCBiZXR0ZXIgdG8gZml4IGl0IGluIFdpbmUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAKICAgIDwvcWFuZGFkaXY+CgogICAgPHFhbmRhZGl2IGlkPSJXaW5lLUhRLWlzc3VlcyI+CiAgICAgIDx0aXRsZT5XaW5lIEhRIGlzc3VlczwvdGl0bGU+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldoeS1hcmUtdGhlLW1haWxsaXN0cy1zZXQtdG8tcmVwbHktdG8tYXV0aG9yIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdoeSBhcmUgdGhlIG1haWxpbmcgbGlzdHMgc2V0IHRvIHJlcGx5IHRvIGF1dGhvciwgbm90IHRvIG1haWxpbmcgbGlzdD8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGVyZSBhcmUgdmVyeSB2YWxpZCByZWFzb25zIGZvciBkb2luZyBzby4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctdG8tdW5zdWJzY3JpYmUtZnJvbS10aGUtbWFpbGluZy1saXN0cyI+CiAgICAgICAgPHBhcmE+SG93IHRvIHVuc3Vic2NyaWJlIGZyb20gdGhlIG1haWxpbmcgbGlzdHM/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgUGxlYXNlIHNlZTogPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL3NpdGUvZm9ydW1zIj5odHRwOi8vd3d3LndpbmVocS5vcmcvc2l0ZS9mb3J1bXM8L3VsaW5rPgogICAgICAgICAgQW5kIHNlbGVjdCBbKFVuLSlTdWJzY3JpYmVdCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgIDwvcWFuZGFkaXY+CiAKICA8L3FhbmRhc2V0PgoKPCEtLSBLZWVwIHRoaXMgY29tbWVudCBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlCkxvY2FsIHZhcmlhYmxlczoKbW9kZTogc2dtbApzZ21sLXBhcmVudC1kb2N1bWVudDooIndpbmUtZGV2ZWwuc2dtbCIgImJvb2siICJwYXJ0IiAiY2hhcHRlciIgIiIpCkVuZDoKLS0+Cg==