ICA8Y2hhcHRlciBpZD0iY29uZmlndXJpbmciPgogICAgPHRpdGxlPkNvbmZpZ3VyaW5nIFdpbmU8L3RpdGxlPgogICAgPHBhcmE+U2V0dGluZyB1cCBjb25maWcgZmlsZXMsIGV0Yy48L3BhcmE+CgogICAgPHNlY3QxIGlkPSJjb25maWciPgogICAgICA8dGl0bGU+R2VuZXJhbCBDb25maWd1cmF0aW9uPC90aXRsZT4KICAgICAgPHBhcmE+CiAgICAgICAgQ29weXJpZ2h0IDE5OTkgJm5hbWUtYWRhbS1zYWNhcm55OyA8ZW1haWw+JmVtYWlsLWFkYW0tc2FjYXJueTs8L2VtYWlsPgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgogICAgICAgIChFeHRyYWN0ZWQgZnJvbSA8ZmlsZW5hbWU+d2luZS9kb2N1bWVudGF0aW9uL2NvbmZpZzwvZmlsZW5hbWU+KQogICAgICA8L3BhcmE+CgogICAgICA8c2VjdDI+CiAgICAgICAgPHRpdGxlPlRoZSBXaW5lIENvbmZpZyBGaWxlPC90aXRsZT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSBXaW5lIGNvbmZpZyBmaWxlIHN0b3JlcyB2YXJpb3VzIHNldHRpbmdzIGZvciBXaW5lLiBUaGVzZSBpbmNsdWRlOgogICAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgRHJpdmVzIGFuZCBJbmZvcm1hdGlvbiBhYm91dCB0aGVtCiAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICBEaXJlY3RvcnkgU2V0dGluZ3MKICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIFBvcnQgU2V0dGluZ3MKICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIFRoZSBXaW5lIGxvb2sgYW5kIGZlZWwKICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIFdpbmUncyBETEwgVXNhZ2UKICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIFdpbmUncyBNdWx0aW1lZGlhIGRyaXZlcnMgYW5kIERMTCBjb25maWd1cmF0aW9uCiAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgPC9wYXJhPgogICAgICA8L3NlY3QyPgoKICAgICAgPHNlY3QyPgogICAgICAgIDx0aXRsZT5Ib3cgRG8gSSBNYWtlIE9uZT88L3RpdGxlPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhpcyBzZWN0aW9uIHdpbGwgZ3VpZGUgeW91IHRocm91Z2ggdGhlIHByb2Nlc3Mgb2YgbWFraW5nIGEKICAgICAgICAgIGNvbmZpZyBmaWxlLiBUYWtlIGEgbG9vayBhdCB0aGUgZmlsZSA8ZmlsZW5hbWU+Jmx0O2RpcnMgdG8KICAgICAgICAgIHdpbmU+L2RvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWc8L2ZpbGVuYW1lPi4gSXQgaXMgb3JnYW5pemVkIGJ5IHNlY3Rpb24uCiAgICAgICAgPC9wYXJhPgoKICAgICAgICA8aW5mb3JtYWx0YWJsZSBmcmFtZT0iYWxsIj4KICAgICAgICAgIDx0Z3JvdXAgY29scz0iMyI+CiAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5PlNlY3Rpb24gTmFtZTwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+TmVlZGVkPzwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+V2hhdCBpdCBEb2VzPC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICA8ZW50cnk+W0RyaXZlIFhdPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT55ZXM8L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PlNldHMgdXAgZHJpdmVzIHJlY29nbml6ZWQgYnkgd2luZTwvZW50cnk+CiAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgICAgPHJvdz4KICAgICAgICAgICAgICAgIDxlbnRyeT5bd2luZV08L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PnllczwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+U2V0dGluZ3MgZm9yIHdpbmUgZGlyZWN0b3JpZXM8L2VudHJ5PgogICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICA8ZW50cnk+W0RsbERlZmF1bHRzXTwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+cmVjbWQ8L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PkRlZmF1bHRzIGZvciBsb2FkaW5nIERMTCdzPC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5PltEbGxQYWlyc108L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PnJlY21kPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5TYW5pdHkgY2hlY2tlcnMgZm9yIERMTCdzPC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5PltEbGxPdmVycmlkZXNdPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5yZWNtZDwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+T3ZlcmlkZXMgZGVmYXVsdHMgZm9yIERMTCBsb2FkaW5nPC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5Pltmb250c108L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PnllczwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+Rm9udCBhcHBlYXJhbmNlIGFuZCByZWNvZ25pdGlvbjwvZW50cnk+CiAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgICAgPHJvdz4KICAgICAgICAgICAgICAgIDxlbnRyeT5bc2VyaWFscG9ydHNdPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5ubzwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+Q09NIHBvcnRzIHNlZW4gYnkgd2luZTwvZW50cnk+CiAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgICAgPHJvdz4KICAgICAgICAgICAgICAgIDxlbnRyeT5bcGFyYWxsZWxwb3J0c108L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5Pm5vPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5MUFQgcG9ydHMgc2VlbiBieSB3aW5lPC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5PltzcG9vbGVyXTwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+bm88L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PlByaW50IHNwb29saW5nPC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5Pltwb3J0c108L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5Pm5vPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5EaXJlY3QgcG9ydCBhY2Nlc3M8L2VudHJ5PgogICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICA8ZW50cnk+W3NweV08L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5Pm5vPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5XaGF0IHRvIGRvIHdpdGggY2VydGFpbiBkZWJ1ZyBtZXNzYWdlczwvZW50cnk+CiAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgICAgPHJvdz4KICAgICAgICAgICAgICAgIDxlbnRyeT5bUmVnaXN0cnldPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5ubzwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+U3BlY2lmaWVzIGxvY2F0aW9ucyBvZiB3aW5kb3dzIHJlZ2lzdHJ5IGZpbGVzPC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5Plt0d2Vhay5sYXlvdXRdPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5yZWNtZDwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+QXBwZWFyYW5jZSBvZiB3aW5lPC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5Pltwcm9ncmFtc108L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5Pm5vPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5Qcm9ncmFtcyB0byBiZSBydW4gYXV0b21hdGljYWxseTwvZW50cnk+CiAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgICAgPHJvdz4KICAgICAgICAgICAgICAgIDxlbnRyeT5bQ29uc29sZV08L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5Pm5vPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5Db25zb2xlIHNldHRpbmdzPC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5PltXaW5NTV08L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PnllczwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+TXVsdGltZWRpYSBzZXR0aW5nczwvZW50cnk+CiAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICA8L3Rncm91cD4KICAgICAgICA8L2luZm9ybWFsdGFibGU+CgogICAgICAgIDxzZWN0Mz4KICAgICAgICAgIDx0aXRsZT5UaGUgW0RyaXZlIFhdIFNlY3Rpb248L3RpdGxlPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIEl0IHNob3VsZCBiZSBwcmV0dHkgc2VsZiBleHBsYW5hdG9yeSwgYnV0IGhlcmUgaXMgYW4KICAgICAgICAgICAgaW4tZGVwdGggdHV0b3JpYWwgYWJvdXQgdGhlbS4gVGhlcmUgYXJlIHVwIHRvIDYgbGluZXMgZm9yCiAgICAgICAgICAgIGVhY2ggZHJpdmUgaW4gV2luZS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+W0RyaXZlIFhdPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgICAgVGhlIGFib3ZlIGxpbmUgYmVnaW5zIHRoZSBzZWN0aW9uIGZvciBhIGRyaXZlIHdob3NlIGxldHRlciBpcyBYLiAKICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+UGF0aD0vZGlyL3RvL3BhdGg8L3Byb2dyYW1saXN0aW5nPiBUaGlzCiAgICAgICAgICAgIHBhdGggaXMgd2hlcmUgdGhlIGRyaXZlIHdpbGwgYmVnaW4uIFdoZW4gV2luZSBpcyBicm93c2luZwogICAgICAgICAgICBpbiBkcml2ZSBYLCBpdCB3aWxsIHNlZSB0aGUgZmlsZXMgdGhhdCBhcmUgaW4gdGhlCiAgICAgICAgICAgIGRpcmVjdG9yeSA8ZmlsZW5hbWU+L2Rpci90by9wYXRoPC9maWxlbmFtZT4uIERvbid0IGZvcmdldAogICAgICAgICAgICB0byBsZWF2ZSBvZmYgdGhlIHRyYWlsaW5nIHNsYXNoIQogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4iVHlwZSIgPSAiZmxvcHB5fGhkfGNkcm9tfG5ldHdvcmsiPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgICAgU2V0cyB1cCB0aGUgdHlwZSBvZiBkcml2ZSBXaW5lIHdpbGwgc2VlIGl0IGFzLiBUeXBlIG11c3QKICAgICAgICAgICAgZXF1YWwgb25lIG9mIHRoZSBmb3VyIDxsaXRlcmFsPmZsb3BweTwvbGl0ZXJhbD4sCiAgICAgICAgICAgIDxsaXRlcmFsPmhkPC9saXRlcmFsPiwgPGxpdGVyYWw+Y2Ryb208L2xpdGVyYWw+LCBvcgogICAgICAgICAgICA8bGl0ZXJhbD5uZXR3b3JrPC9saXRlcmFsPi4gVGhleSBhcmUgc2VsZi1leHBsYW5hdG9yeS4KICAgICAgICAgICAgKFRoZSB8J3MgbWVhbiAiVHlwZSA9ICcmbHQ7b25lIG9mIHRoZSBvcHRpb25zJmd0OyciLikKICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IkxhYmVsIiA9ICJibGFoIjwvcHJvZ3JhbWxpc3Rpbmc+IERlZmluZXMgdGhlCiAgICAgICAgICAgIGRyaXZlIGxhYmVsLiBHZW5lcmFsbHkgb25seSBuZWVkZWQgZm9yIHByb2dyYW1zIHRoYXQgbG9vawogICAgICAgICAgICBmb3IgYSBzcGVjaWFsIENELVJPTS4gSW5mbyBvbiBmaW5kaW5nIHRoZSBsYWJsZSBpcyBpbgogICAgICAgICAgICA8bGl0ZXJhbD4mbHQ7ZGlycyB0byB3aW5lPi9kb2N1bWVudGF0aW9uL2Nkcm9tLWxhYmVsczwvbGl0ZXJhbD4uCiAgICAgICAgICAgIFRoZSBsYWJlbCBtYXkgYmUgdXAgdG8gMTEgY2hhcmFjdGVycy4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IlNlcmlhbCIgPSAiZGVhZGJlZWYiPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgICAgVGVsbHMgV2luZSB0aGUgc2VyaWFsIG51bWJlciBvZiB0aGUgZHJpdmUuIEEgZmV3IHByb2dyYW1zIHdpdGgKICAgICAgICAgICAgaW50ZW5zZSBwcm90ZWN0aW9uIGZvciBwaXJhdGluZyBtaWdodCBuZWVkIHRoaXMsIGJ1dCBvdGhlcndpc2UKICAgICAgICAgICAgZG9uJ3QgdXNlIGl0LiBVcCB0byA4IGNoYXJhY3RlcnMgYW5kIGhleGFkZWNpbWFsLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4iRmlsZXN5c3RlbSIgPSAibXNkb3N8d2luOTV8dW5peCI8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgICBTZXRzIHVwIHRoZSB3YXkgV2luZSBsb29rcyBhdCBmaWxlcyBvbiB0aGUgZHJpdmUuCiAgICAgICAgICA8L3BhcmE+CgogICAgICAgICAgPHZhcmlhYmxlbGlzdD4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT48bGl0ZXJhbD5tc2RvczwvbGl0ZXJhbD48L3Rlcm0+CiAgICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgIENhc2UgaW5zZW5zaXRpdmUgZmlsZXN5c3RlbS4gQWxpa2UgdG8gRE9TIGFuZAogICAgICAgICAgICAgICAgICBXaW5kb3dzIDMueC4gPGxpdGVyYWw+OC4zPC9saXRlcmFsPiBpcyB0aGUgbWF4aW11bQogICAgICAgICAgICAgICAgICBsZW5ndGggb2YgZmlsZXMgKGVpZ2h0ZG90LjEyMykgLSBsb25nZXIgb25lcyB3aWxsIGJlCiAgICAgICAgICAgICAgICAgIHRydW5jYXRlZC4gKE5PVEU6IHRoaXMgaXMgYSB2ZXJ5IGJhZCBjaG9pY2UgaWYgeW91CiAgICAgICAgICAgICAgICAgIHBsYW4gb24gcnVubmluZyBhcHBzIHRoYXQgdXNlIGxvbmcgZmlsZW5hbWVzLiB3aW45NQogICAgICAgICAgICAgICAgICBzaG91bGQgd29yayBmaW5lIHdpdGggYXBwcyB0aGF0IHdlcmUgZGVzaWduZWQgdG8gcnVuCiAgICAgICAgICAgICAgICAgIHVuZGVyIHRoZSBtc2RvcyBzeXN0ZW0uIEluIG90aGVyIHdvcmRzLCB5b3UgbWlnaHQKICAgICAgICAgICAgICAgICAgbm90IHdhbnQgdG8gdXNlIHRoaXMuKQogICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgIDx0ZXJtPjxsaXRlcmFsPndpbjk1PC9saXRlcmFsPjwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgQ2FzZSBpbnNlbnNpdGl2ZS4gQWxpa2UgdG8gV2luZG93cyA5eC9OVCA0LiBUaGlzIGlzCiAgICAgICAgICAgICAgICAgIHRoZSBsb25nIGZpbGVuYW1lIGZpbGVzeXN0ZW0geW91IGFyZSBwcm9iYWJseSB1c2VkCiAgICAgICAgICAgICAgICAgIHRvIHdvcmtpbmcgd2l0aC4gVGhlIGZpbGVzeXN0ZW0gb2YgY2hvaWNlIGZvciBtb3N0CiAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9ucyB0byBiZSBydW4gdW5kZXIgd2luZS4gIFBST0JBQkxZIFRIRSBPTkUKICAgICAgICAgICAgICAgICAgWU9VIFdBTlQhCiAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+PGxpdGVyYWw+dW5peDwvbGl0ZXJhbD48L3Rlcm0+CiAgICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgIENhc2Ugc2Vuc2l0aXZlLiBUaGlzIGZpbGVzeXN0ZW0gaGFzIGFsbW9zdCBubyB1c2UKICAgICAgICAgICAgICAgICAgKFdpbmRvd3MgYXBwcyBleHBlY3QgY2FzZSBpbnNlbnNpdGl2ZSBmaWxlbmFtZXMpLgogICAgICAgICAgICAgICAgICBUcnkgaXQgaWYgeW91IGRhcmUsIGJ1dCB3aW45NSBpcyBhICBtdWNoIGJldHRlcgogICAgICAgICAgICAgICAgICBjaG9pY2UuCiAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICA8L3ZhcmlhYmxlbGlzdD4KCiAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IkRldmljZSIgPSAiL2Rldi94eCI8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFVzZSB0aGlzIE9OTFkgZm9yIGZsb3BweSBhbmQgY2Ryb20gZGV2aWNlcy4gVXNpbmcgaXQgb24KICAgICAgICAgICAgRXh0ZW5kZWQyIHBhcnRpdGlvbnMgY2FuIGhhdmUgZGlyZSByZXN1bHRzICh3aGVuIGEgd2luZG93cwogICAgICAgICAgICBhcHAgdHJpZXMgdG8gZG8gYSBsb3dsZXZlbCB3cml0ZSwgdGhleSBkbyBpdCBpbiBhIEZBVCB3YXkKICAgICAgICAgICAgLS0gRkFUIGRvZXMgbm90IG1peCB3aXRoIEV4dGVuZGVkMikuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8bm90ZT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgVGhpcyBzZXR0aW5nIGlzIG5vdCByZWFsbHkgaW1wb3J0YW50OyBhbG1vc3QgYWxsIGFwcHMKICAgICAgICAgICAgICB3aWxsIGhhdmUgbm8gcHJvYmxlbSBpZiBpdCByZW1haW5zIHVuc3BlY2lmaWVkLiBGb3IKICAgICAgICAgICAgICBDRC1ST01zIHlvdSBtaWdodCB3YW50IHRvIGFkZCBpdCB0byBnZXQgYXV0b21hdGljIGxhYmVsCiAgICAgICAgICAgICAgZGV0ZWN0aW9uLCB0aG91Z2guIElmIHlvdSBhcmUgdW5zdXJlIGFib3V0IHNwZWNpZnlpbmcKICAgICAgICAgICAgICBkZXZpY2UgbmFtZXMsIGp1c3QgbGVhdmUgb3V0IHRoaXMgc2V0dGluZyBmb3IgeW91cgogICAgICAgICAgICAgIGRyaXZlcy4KICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9ub3RlPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIEhlcmUgaXMgYSBzZXR1cCBmb3IgRHJpdmUgWCwgYSBnZW5lcmljIGhhcmQgZHJpdmU6CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KW0RyaXZlIFhdCiJQYXRoIiA9ICIvZG9zLWEiCiJUeXBlIiA9ICJoZCIKIkxhYmVsIiA9ICJIYXJkIERyaXZlIgoiRmlsZXN5c3RlbSIgPSAid2luOTUiClRoaXMgaXMgYSBzZXR1cCBmb3IgRHJpdmUgWCwgYSBnZW5lcmljIENELVJPTSBkcml2ZToKW0RyaXZlIFhdCiJQYXRoIiA9ICIvZG9zLWQiCiJUeXBlIiA9ICJjZHJvbSIKIkxhYmVsIiA9ICJUb3RhbCBBbm5paGlsYXRpb24iCiJGaWxlc3lzdGVtIiA9ICJ3aW45NSIKIkRldmljZSIgPSAiL2Rldi9oZGMiCkFuZCBoZXJlIGlzIGEgc2V0dXAgZm9yIERyaXZlIFgsIGEgZ2VuZXJpYyBmbG9wcHkgZHJpdmU6CltEcml2ZSBYXQoiVHlwZSIgPSAiZmxvcHB5IgoiUGF0aCIgPSAiL21udC9mbG9wcHkiCiJMYWJlbCIgPSAiRmxvcHB5IERyaXZlIgoiU2VyaWFsIiA9ICI4NzY1NDMyMSIKIkZpbGVzeXN0ZW0iID0gIndpbjk1IgoiRGV2aWNlIiA9ICIvZGV2L2ZkMCIKICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICA8L3NlY3QzPgoKICAgICAgICA8c2VjdDM+CiAgICAgICAgICA8dGl0bGU+VGhlIFt3aW5lXSBTZWN0aW9uIDwvdGl0bGU+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgVGhlIFt3aW5lXSBzZWN0aW9uIG9mIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgY29udGFpbnMgYWxsIGtpbmRzCiAgICAgICAgICAgIG9mIGdlbmVyYWwgc2V0dGluZ3MgZm9yIFdpbmUuIFdoZW4gc3BlY2lmeWluZyB0aGUgZGlyZWN0b3JpZXMKICAgICAgICAgICAgZm9yIHRoZSBkaXJlY3RvcnkgcmVsYXRlZCBzZXR0aW5ncywgbWFrZSB0aGVtIGFzIHRoZXkgd291bGQKICAgICAgICAgICAgYXBwZWFyIGluIHdpbmUuIElmIHlvdXIgZHJpdmUgPG1lZGlhbGFiZWw+QzwvbWVkaWFsYWJlbD4KICAgICAgICAgICAgaGFzIGEgcGF0aCBvZiA8ZmlsZW5hbWU+L2RvczwvZmlsZW5hbWU+LCBhbmQgeW91cgogICAgICAgICAgICA8ZmlsZW5hbWU+d2luZG93czwvZmlsZW5hbWU+IGRpcmVjdG9yeSBpcyBsb2NhdGVkIGluCiAgICAgICAgICAgIDxmaWxlbmFtZT4vZG9zL3dpbmRvd3M8L2ZpbGVuYW1lPiwgdGhlbiB1c2U6CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4iV2luZG93cyIgPSAiYzpcXHdpbmRvd3MiPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBUaGlzIHNldHMgdXAgdGhlIDxmaWxlbmFtZT53aW5kb3dzPC9maWxlbmFtZT4gZGlyZWN0b3J5LgogICAgICAgICAgICBNYWtlIG9uZSBpZiB5b3UgZG9uJ3QgYWxyZWFkeSBoYXZlIG9uZS4gTk8gVFJBSUxJTkcgU0xBU0gKICAgICAgICAgICAgKE5PVCA8ZmlsZW5hbWU+QzpcXHdpbmRvd3NcPC9maWxlbmFtZT4pIQogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4iU3lzdGVtIiA9ICJjOlxcd2luZG93c1xcc3lzdGVtIjwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICAgIFRoaXMgc2V0cyB1cCB3aGVyZSB0aGUgd2luZG93cyBzeXN0ZW0gZmlsZXMgYXJlLiBTaG91bGQKICAgICAgICAgICAgcmVzaWRlIGluIHRoZSBkaXJlY3RvcnkgdXNlZCBmb3IgdGhlCiAgICAgICAgICAgIDxsaXRlcmFsPldpbmRvd3M8L2xpdGVyYWw+IHNldHRpbmcuIElmIHlvdSBkb24ndCBoYXZlCiAgICAgICAgICAgIDxmaWxlbmFtZT53aW5kb3dzPC9maWxlbmFtZT4gdGhlbiB0aGlzIGlzIHdoZXJlIHRoZSBzeXN0ZW0KICAgICAgICAgICAgZmlsZXMgd2lsbCBnby4gQWdhaW4sIE5PIFRSQUlMSU5HIFNMQVNIIQogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4iVGVtcCIgPSAiYzpcXHRlbXAiPC9wcm9ncmFtbGlzdGluZz4gVGhpcyBzaG91bGQKICAgICAgICAgICAgYmUgdGhlIGRpcmVjdG9yeSB5b3Ugd2FudCB5b3VyIHRlbXAgZmlsZXMgc3RvcmVkIGluLiBZT1UKICAgICAgICAgICAgTVVTVCBIQVZFIFdSSVRFIEFDQ0VTUyBUTyBJVC4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+CiJQYXRoIiA9ICJjOlxcd2luZG93cztjOlxcd2luZG93c1xcc3lzdGVtO2M6XFxibGFuY28iCiAgICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgQmVoYXZlcyBsaWtlIHRoZSA8ZW52YXI+UEFUSDwvZW52YXI+IHNldHRpbmcgb24gVU5JWAogICAgICAgICAgICBib3hlcy4gV2hlbiB3aW5lIGlzIHJ1biBsaWtlIDx1c2VyaW5wdXQ+d2luZQogICAgICAgICAgICAgIHNvbC5leGU8L3VzZXJpbnB1dD4sIGlmIDxmaWxlbmFtZT5zb2wuZXhlPC9maWxlbmFtZT4KICAgICAgICAgICAgcmVzaWRlcyBpbiBhIGRpcmVjdG9yeSBzcGVjaWZpZWQgaW4gdGhlCiAgICAgICAgICAgIDxsaXRlcmFsPlBhdGg8L2xpdGVyYWw+IHNldHRpbmcsIHdpbmUgd2lsbCBydW4gaXQgKE9mCiAgICAgICAgICAgIGNvdXJzZSwgaWYgPGZpbGVuYW1lPnNvbC5leGU8L2ZpbGVuYW1lPiByZXNpZGVzIGluIHRoZQogICAgICAgICAgICBjdXJyZW50IGRpcmVjdG9yeSwgd2luZSB3aWxsIHJ1biB0aGF0IG9uZSkuIE1ha2Ugc3VyZSBpdAogICAgICAgICAgICBhbHdheXMgaGFzIHlvdXIgPGZpbGVuYW1lPndpbmRvd3M8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgYW5kCiAgICAgICAgICAgIHN5c3RlbSBkaXJlY3RvcnkgKEZvciB0aGlzIHNldHVwLCBpdCBtdXN0IGhhdmUKICAgICAgICAgICAgPGZpbGVuYW1lPiJjOlxcd2luZG93cztjOlxcd2luZG93c1xcc3lzdGVtIjwvZmlsZW5hbWU+KS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IkdyYXBoaWNzRHJpdmVyIiA9ICJ4MTFkcnZ8dHR5ZHJ2IjwvcHJvZ3JhbWxpc3Rpbmc+CgkgICAgU2V0cyB0aGUgZ3JhcGhpY3MgZHJpdmVyIHRvIHVzZSBmb3IgV2luZSBvdXRwdXQuCgkgICAgeDExZHJ2IGlzIGZvciBYMTEgb3V0cHV0LCB0dHlkcnYgaXMgZm9yIHRleHQgY29uc29sZSBvdXRwdXQuCgkgICAgV0FSTklORzogaWYgeW91IHVzZSB0dHlkcnYgaGVyZSwgdGhlbiB5b3Ugd29uJ3QgYmUgYWJsZSB0byBydW4KCSAgICBhbnkgV2luZG93cyBHVUkgcHJvZ3JhbXMuIFRodXMgdGhpcyBvcHRpb24gaXMgbWFpbmx5IGludGVyZXN0aW5nCgkgICAgZm9yIGUuZy4gZW1iZWRkZWQgdXNlIG9mIFdpbmUgaW4gd2ViIHNlcnZlciBzY3JpcHRzLgoJICA8L3BhcmE+CgkgIDxwYXJhPgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IlByaW50ZXIiID0gIm9mZnxvbiI8L3Byb2dyYW1saXN0aW5nPiBUZWxscyB3aW5lCiAgICAgICAgICAgIHdoZXRoZXIgdG8gYWxsb3cgcHJpbnRpbmcgdmlhIHByaW50ZXIgZHJpdmVycyB0byB3b3JrLgoJICAgIFRoaXMgb3B0aW9uIGlzbid0IG5lZWRlZCBmb3Igb3VyIGJ1aWx0aW4gcHNkcnYgcHJpbnRlciBkcml2ZXIKCSAgICBhdCBhbGwuCiAgICAgICAgICAgIFVzaW5nIHRoZXNlIHRoaW5ncyBhcmUgcHJldHR5IGFscGhhLCBzbyB5b3UgbWlnaHQgd2FudCB0bwogICAgICAgICAgICB3YXRjaCBvdXQuIFNvbWUgcGVvcGxlIG1pZ2h0IGZpbmQgaXQgdXNlZnVsLCBob3dldmVyLiBJZgogICAgICAgICAgICB5b3UncmUgbm90IHBsYW5uaW5nIG9uIHdvcmtpbmcgb24gcHJpbnRpbmcgdmlhIHdpbmRvd3MgcHJpbnRlcgoJICAgIGRyaXZlcnMsIGRvbid0IGV2ZW4gYWRkIHRoaXMgdG8geW91ciB3aW5lIGNvbmZpZyBmaWxlCgkgICAgKEl0IHByb2JhYmx5IGlzbid0IGFscmVhZHkgaW4gaXQpLgoJICAgIENoZWNrIG91dCB0aGUgW3Nwb29sZXJdIGFuZCBbcGFyYWxsZWxwb3J0c10gc2VjdGlvbnMgdG9vLgogICAgICAgICAgPC9wYXJhPgoJICA8cGFyYT4KCSAgICA8cHJvZ3JhbWxpc3Rpbmc+IlNoZWxsTGlua2VyIiA9ICJ3aW5lc2hlbGxsaW5rIjwvcHJvZ3JhbWxpc3Rpbmc+CgkgICAgVGhpcyBzZXR0aW5nIHNwZWNpZmllcyB0aGUgc2hlbGwgbGlua2VyIHNjcmlwdCB0byB1c2UgZm9yIHNldHRpbmcKCSAgICB1cCBXaW5kb3dzIGljb25zIGluIGUuZy4gS0RFIG9yIEdub21lIHRoYXQgYXJlIGdpdmVuIGJ5IHByb2dyYW1zCgkgICAgbWFraW5nIHVzZSBvZiBhcHByb3ByaWF0ZSBzaGVsbDMyLmRsbCBmdW5jdGlvbmFsaXR5IHRvIGNyZWF0ZQoJICAgIGljb25zIG9uIHRoZSBkZXNrdG9wL3N0YXJ0IG1lbnUgZHVyaW5nIGluc3RhbGxhdGlvbi4KCSAgPC9wYXJhPgoJICA8cGFyYT4KCSAgICA8cHJvZ3JhbWxpc3Rpbmc+IlNob3dEaXJTeW1saW5rcyIgPSAiMSI8L3Byb2dyYW1saXN0aW5nPgoJICAgIFdpbmUgZG9lc24ndCBwYXNzIGRpcmVjdG9yeSBzeW1saW5rcyB0byBXaW5kb3dzIHByb2dyYW1zIGJ5CgkgICAgZGVmYXVsdCwgYXMgZG9pbmcgc28gbWF5IGNyYXNoIHNvbWUgcHJvZ3JhbXMgdGhhdCBkbwoJICAgIHJlY3Vyc2l2ZSBsb29rdXBzIG9mIHdob2xlIHN1YmRpcmVjdG9yeSB0cmVlcwoJICAgIHdoZW5ldmVyIGEgZGlyZWN0b3J5IHN5bWxpbmsgcG9pbnRzIGJhY2sgdG8gaXRzZWxmIG9yIG9uZSBvZiBpdHMKCSAgICBwYXJlbnQgZGlyZWN0b3JpZXMuCgkgICAgVGhhdCdzIHdoeSB3ZSBkaXNhbGxvd2VkIHRoZSB1c2Ugb2YgZGlyZWN0b3J5IHN5bWxpbmtzCgkgICAgYW5kIGFkZGVkIHRoaXMgc2V0dGluZyB0byByZWVuYWJsZSAoIjEiKSB0aGlzIGZ1bmN0aW9uYWxpdHkuCgkgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IlN5bWJvbFRhYmxlRmlsZSIgPSAid2luZS5zeW0iPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgICAgU2V0cyB1cCB0aGUgc3ltYm9sIHRhYmxlIGZpbGUgZm9yIHRoZSB3aW5lIGRlYnVnZ2VyLiBZb3UKICAgICAgICAgICAgcHJvYmFibHkgZG9uJ3QgbmVlZCB0byBmaWRkbGUgd2l0aCB0aGlzLiBNYXkgYmUgdXNlZnVsIGlmCiAgICAgICAgICAgIHlvdXIgd2luZSBpcyBzdHJpcHBlZC4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICA8L3NlY3QzPgoKICAgICAgICA8c2VjdDM+CiAgICAgICAgICA8dGl0bGU+SW50cm9kdWN0aW9uIFRvIERMTCBTZWN0aW9uczwvdGl0bGU+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgVGhlcmUgYXJlIGEgZmV3IHRoaW5ncyB5b3Ugd2lsbCBuZWVkIHRvIGtub3cgYmVmb3JlCiAgICAgICAgICAgIGNvbmZpZ3VyaW5nIHRoZSBETEwgc2VjdGlvbnMgaW4geW91ciB3aW5lIGNvbmZpZ3VyYXRpb24KICAgICAgICAgICAgZmlsZS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxzZWN0ND4KICAgICAgICAgICAgPHRpdGxlPldpbmRvd3MgRExMIFBhaXJzPC90aXRsZT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgTW9zdCB3aW5kb3dzIERMTCdzIGhhdmUgYSB3aW4xNiAoV2luZG93cyAzLngpIGFuZCB3aW4zMgogICAgICAgICAgICAgIChXaW5kb3dzIDl4L05UKSBmb3JtLiAgVGhlIGNvbWJpbmF0aW9uIG9mIHRoZSB3aW4xNiBhbmQKICAgICAgICAgICAgICB3aW4zMiBETEwgdmVyc2lvbnMgYXJlIGNhbGxlZCB0aGUgIkRMTCBwYWlyIi4gVGhpcyBpcyBhCiAgICAgICAgICAgICAgbGlzdCBvZiB0aGUgbW9zdCBjb21tb24gcGFpcnM6CiAgICAgICAgICAgIDwvcGFyYT4KCiAgICAgICAgICAgIDxpbmZvcm1hbHRhYmxlPgogICAgICAgICAgICAgIDx0Z3JvdXAgY29scz0iMyI+CiAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICAgICAgPGVudHJ5PldpbjE2PC9lbnRyeT4KICAgICAgICAgICAgICAgICAgICA8ZW50cnk+V2luMzI8L2VudHJ5PgogICAgICAgICAgICAgICAgICAgIDxlbnRyeT4KICAgICAgICAgICAgICAgICAgICAgIE5hdGl2ZQogICAgICAgICAgICAgICAgICAgICAgPGZvb3Rub3RlPgogICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICBJcyBpdCBwb3NzaWJsZSB0byB1c2UgbmF0aXZlIGRsbCB3aXRoIHdpbmU/CiAgICAgICAgICAgICAgICAgICAgICAgICAgKFNlZSBuZXh0IHNlY3Rpb24pCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgICAgICAgICAgIDwvZm9vdG5vdGU+CiAgICAgICAgICAgICAgICAgICAgPC9lbnRyeT4KICAgICAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgICAgIDxlbnRyeT5LRVJORUw8L2VudHJ5PgogICAgICAgICAgICAgICAgICAgIDxlbnRyeT5LRVJORUwzMjwvZW50cnk+CiAgICAgICAgICAgICAgICAgICAgPGVudHJ5Pk5vITwvZW50cnk+CiAgICAgICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgICAgIDxlbnRyeT5VU0VSPC9lbnRyeT4KICAgICAgICAgICAgICAgICAgICA8ZW50cnk+VVNFUjMyPC9lbnRyeT4KICAgICAgICAgICAgICAgICAgICA8ZW50cnk+Tm8hPC9lbnRyeT4KICAgICAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICAgICAgPGVudHJ5PlNIRUxMPC9lbnRyeT4KICAgICAgICAgICAgICAgICAgICA8ZW50cnk+U0hFTEwzMjwvZW50cnk+CiAgICAgICAgICAgICAgICAgICAgPGVudHJ5PlllczwvZW50cnk+CiAgICAgICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgICAgIDxlbnRyeT5HREk8L2VudHJ5PgogICAgICAgICAgICAgICAgICAgIDxlbnRyeT5HREkzMjwvZW50cnk+CiAgICAgICAgICAgICAgICAgICAgPGVudHJ5Pk5vITwvZW50cnk+CiAgICAgICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgICAgIDxlbnRyeT5DT01NRExHPC9lbnRyeT4KICAgICAgICAgICAgICAgICAgICA8ZW50cnk+Q09NRExHMzI8L2VudHJ5PgogICAgICAgICAgICAgICAgICAgIDxlbnRyeT5ZZXM8L2VudHJ5PgogICAgICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgICAgICAgPHJvdz4KICAgICAgICAgICAgICAgICAgICA8ZW50cnk+VkVSPC9lbnRyeT4KICAgICAgICAgICAgICAgICAgICA8ZW50cnk+VkVSU0lPTjwvZW50cnk+CiAgICAgICAgICAgICAgICAgICAgPGVudHJ5PlllczwvZW50cnk+CiAgICAgICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICA8L3Rncm91cD4KICAgICAgICAgICAgPC9pbmZvcm1hbHRhYmxlPgogICAgICAgICAgPC9zZWN0ND4KCiAgICAgICAgICA8c2VjdDQ+CiAgICAgICAgICAgIDx0aXRsZT5EaWZmZXJlbnQgRm9ybXMgT2YgRExMJ3M8L3RpdGxlPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBUaGVyZSBhcmUgYSBmZXcgZGlmZmVyZW50IGZvcm1zIG9mIERMTCdzIHdpbmUgY2FuIGxvYWQ6CiAgICAgICAgICAgICAgPHZhcmlhYmxlbGlzdD4KICAgICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgICAgIDx0ZXJtPm5hdGl2ZTwvdGVybT4KICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgVGhlIERMTCdzIHRoYXQgYXJlIGluY2x1ZGVkIHdpdGggd2luZG93cy4gTWFueQogICAgICAgICAgICAgICAgICAgICAgd2luZG93cyBETEwncyBjYW4gYmUgbG9hZGVkIGluIHRoZWlyIG5hdGl2ZQogICAgICAgICAgICAgICAgICAgICAgZm9ybS4gTWFueSB0aW1lcyB0aGVzZSBuYXRpdmUgdmVyc2lvbnMgd29yawogICAgICAgICAgICAgICAgICAgICAgYmV0dGVyIHRoYW4gdGhlaXIgbm9uLU1pY3Jvc29mdCBlcXVpdmFsZW50IC0tCiAgICAgICAgICAgICAgICAgICAgICBvdGhlciB0aW1lcyB0aGV5IGRvbid0LgogICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgICAgICA8dGVybT5lbGZkbGw8L3Rlcm0+CiAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgIEVMRiBlbmNhcHN1bGF0ZWQgd2luZG93cyBETEwncy4gVGhpcyBpcyBjdXJyZW50bHkKICAgICAgICAgICAgICAgICAgICAgIGV4cGVyaW1lbnRhbCAoTm90IHdvcmtpbmcgeWV0KS4KICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICAgICAgPHRlcm0+c288L3Rlcm0+CiAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgIE5hdGl2ZSBFTEYgbGlicmFyaWVzLiBXaWxsIG5vdCB3b3JrIHlldC4KICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICAgICAgPHRlcm0+YnVpbHRpbjwvdGVybT4KICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgVGhlIG1vc3QgY29tbW9uIGZvcm0gb2YgRExMIGxvYWRpbmcuIFRoaXMgaXMKICAgICAgICAgICAgICAgICAgICAgIHdoYXQgeW91IHdpbGwgdXNlIGlmIHRoZSBETEwgaXMgZXJyb3ItcHJvbmUgaW4KICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZSBmb3JtIChLRVJORUwgZm9yIGV4YW1wbGUpLCB5b3UgZG9uJ3QgaGF2ZQogICAgICAgICAgICAgICAgICAgICAgdGhlIG5hdGl2ZSBETEwsIG9yIHlvdSBqdXN0IHdhbnQgdG8gYmUKICAgICAgICAgICAgICAgICAgICAgIE1pY3Jvc29mdC1mcmVlLgogICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPC92YXJpYWJsZWxpc3Q+CiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvc2VjdDQ+CiAgICAgICAgPC9zZWN0Mz4KCiAgICAgICAgPHNlY3QzPgogICAgICAgICAgPHRpdGxlPlRoZSBbRGxsRGVmYXVsdHNdIFNlY3Rpb248L3RpdGxlPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFRoZXNlIHNldHRpbmdzIHByb3ZpZGUgd2luZSdzIGRlZmF1bHQgaGFuZGxpbmcgb2YgRExMIGxvYWRpbmcuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJEZWZhdWx0TG9hZE9yZGVyIiA9IiBuYXRpdmUsIHNvLCBidWlsdGluIjwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgVGhpcyBzZXR0aW5nIGlzIGEgY29tbWEtZGVsaW1pdGVkIGxpc3Qgb2YgdGhlIG9yZGVyIGluCiAgICAgICAgICAgIHdoaWNoIHRvIGF0dGVtcHQgbG9hZGluZyBETExzLiBJZiB0aGUgZmlyc3Qgb3B0aW9uIGZhaWxzLAogICAgICAgICAgICBpdCB3aWxsIHRyeSB0aGUgc2Vjb25kLCBhbmQgc28gb24uIFRoZSBvcmRlciBzcGVjaWZpZWQKICAgICAgICAgICAgYWJvdmUgaXMgcHJvYmFibHkgdGhlIGJlc3QgaW4gbW9zdCBjb25kaXRpb25zLgogICAgICAgICAgPC9wYXJhPgogICAgICAgIDwvc2VjdDM+CgogICAgICAgIDxzZWN0Mz4KICAgICAgICAgIDx0aXRsZT5UaGUgW0RsbFBhaXJzXSBTZWN0aW9uPC90aXRsZT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgQXQgb25lIHRpbWUsIHRoZXJlIHdhcyBhIHNlY3Rpb24gY2FsbGVkIFtEbGxQYWlyc10gaW4gdGhlIAogICAgICAgICAgZGVmYXVsdCBjb25maWd1cmF0aW9uIGZpbGUsIGJ1dCB0aGlzIGhhcyBiZWVuIG9ic29sZXRlZAogICAgICAgICAgYmVjYXVzZSB0aGUgcGFpcmluZyBpbmZvcm1hdGlvbiBoYXMgbm93IGJlZW4gZW1iZWRkZWQgaW50bwogICAgICAgICAgV2luZSBpdHNlbGYuIChUaGUgcHVycG9zZSBvZiB0aGlzIHNlY3Rpb24gd2FzIG1lcmVseSB0byBiZQogICAgICAgICAgYWJsZSB0byBpc3N1ZSB3YXJuaW5ncyBpZiB0aGUgdXNlciBhdHRlbXB0ZWQgdG8gcGFpcgogICAgICAgICAgY29kZXBlbmRlbnQgMTYtYml0LzMyLWJpdCBETExzIG9mIGRpZmZlcmVudCB0eXBlcy4pIElmIHlvdQogICAgICAgICAgc3RpbGwgaGF2ZSB0aGlzIGluIHlvdXIgPGZpbGVuYW1lPndpbmUuY29uZjwvZmlsZW5hbWU+IG9yCiAgICAgICAgICA8ZmlsZW5hbWU+fi8ud2luZS9jb25maWc8L2ZpbGVuYW1lPiwgeW91IG1heSBzYWZlbHkgZGVsZXRlIGl0LgogICAgICAgICAgPC9wYXJhPgoJPC9zZWN0Mz4KCiAgICAgICAgPHNlY3QzPgogICAgICAgICAgPHRpdGxlPlRoZSBbRGxsT3ZlcnJpZGVzXSBTZWN0aW9uPC90aXRsZT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBUaGUgZm9ybWF0IGZvciB0aGlzIHNlY3Rpb24gaXMgdGhlIHNhbWUgZm9yIGVhY2ggbGluZToKICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgombHQ7RExMPnssJmx0O0RMTD4sJmx0O0RMTD4uLi59ID0gJmx0O0ZPUk0+eywmbHQ7Rk9STT4sJmx0O0ZPUk0+Li4ufQogICAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIEZvciBleGFtcGxlLCB0byBsb2FkIGJ1aWx0aW4gS0VSTkVMIHBhaXIgKGNhc2UgZG9lc24ndAogICAgICAgICAgICBtYXR0ZXIgaGVyZSk6CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KImtlcm5lbCxrZXJuZWwzMiIgPSAiYnVpbHRpbiIKICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBUbyBsb2FkIHRoZSBuYXRpdmUgQ09NTURMRyBwYWlyLCBidXQgaWYgdGhhdCBkb2Vzbid0IHdvcmsKICAgICAgICAgICAgdHJ5IGJ1aWx0aW46CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KImNvbW1kbGcsY29tZGxnMzIiID0gIm5hdGl2ZSxidWlsdGluIgogICAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFRvIGxvYWQgdGhlIG5hdGl2ZSBDT01DVEwzMjoKICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgoiY29tY3RsMzIiID0gIm5hdGl2ZSIKICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBIZXJlIGlzIGEgZ29vZCBnZW5lcmljIHNldHVwIChBcyBpdCBpcyBkZWZpbmVkIGluIGNvbmZpZwogICAgICAgICAgICB0aGF0IHdhcyBpbmNsdWRlZCB3aXRoIHlvdXIgd2luZSBwYWNrYWdlKToKICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgpbRGxsT3ZlcnJpZGVzXQoiY29tbWRsZyIgICAgICA9ICJidWlsdGluLCBuYXRpdmUiCiJjb21kbGczMiIgICAgID0gImJ1aWx0aW4sIG5hdGl2ZSIKInZlciIgICAgICAgICAgPSAiYnVpbHRpbiwgbmF0aXZlIgoidmVyc2lvbiIgICAgICA9ICJidWlsdGluLCBuYXRpdmUiCiJzaGVsbCIgICAgICAgID0gImJ1aWx0aW4sIG5hdGl2ZSIKInNoZWxsMzIiICAgICAgPSAiYnVpbHRpbiwgbmF0aXZlIgoibHpleHBhbmQiICAgICA9ICJidWlsdGluLCBuYXRpdmUiCiJsejMyIiAgICAgICAgID0gImJ1aWx0aW4sIG5hdGl2ZSIKImNvbWN0bDMyIiAgICAgPSAiYnVpbHRpbiwgbmF0aXZlIgoiY29tbWN0cmwiICAgICA9ICJidWlsdGluLCBuYXRpdmUiCiJ3c29jazMyIiAgICAgID0gImJ1aWx0aW4iCiJ3aW5zb2NrIiAgICAgID0gImJ1aWx0aW4iCiJhZHZhcGkzMiIgICAgID0gImJ1aWx0aW4sIG5hdGl2ZSIKImNydGRsbCIgICAgICAgPSAiYnVpbHRpbiwgbmF0aXZlIgoibXByIiAgICAgICAgICA9ICJidWlsdGluLCBuYXRpdmUiCiJ3aW5zcG9vbC5kcnYiID0gImJ1aWx0aW4sIG5hdGl2ZSIKImRkcmF3IiAgICAgICAgPSAiYnVpbHRpbiwgbmF0aXZlIgoiZGlucHV0IiAgICAgICA9ICJidWlsdGluLCBuYXRpdmUiCiJkc291bmQiICAgICAgID0gImJ1aWx0aW4sIG5hdGl2ZSIKIm1tc3lzdGVtIiAgICAgPSAiYnVpbHRpbiIKIndpbm1tIiAgICAgICAgPSAiYnVpbHRpbiIKIm1zdmNydCIgICAgICAgPSAibmF0aXZlLCBidWlsdGluIgoibXN2aWRlbyIgICAgICA9ICJidWlsdGluLCBuYXRpdmUiCiJtc3ZmdzMyIiAgICAgID0gImJ1aWx0aW4sIG5hdGl2ZSIKIm1jaWNkYS5kcnYiICAgPSAiYnVpbHRpbiwgbmF0aXZlIgoibWNpc2VxLmRydiIgICA9ICJidWlsdGluLCBuYXRpdmUiCiJtY2l3YXZlLmRydiIgID0gImJ1aWx0aW4sIG5hdGl2ZSIKIm1jaWF2aS5kcnYiICAgPSAibmF0aXZlLCBidWlsdGluIgoibWNpYW5pbS5kcnYiICA9ICJuYXRpdmUsIGJ1aWx0aW4iCiJtc2FjbS5kcnYiICAgID0gImJ1aWx0aW4sIG5hdGl2ZSIKIm1zYWNtIiAgICAgICAgPSAiYnVpbHRpbiwgbmF0aXZlIgoibXNhY20zMiIgICAgICA9ICJidWlsdGluLCBuYXRpdmUiCiJtaWRpbWFwLmRydiIgID0gImJ1aWx0aW4sIG5hdGl2ZSIKInduYXNwaTMyIiAgICAgPSAiYnVpbHRpbiIKImljbXAiICAgICAgICAgPSAiYnVpbHRpbiIKICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxub3RlPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBZb3Ugc2VlIHRoYXQgZWxmZGxsIG9yIHNvIGlzIHRoZSBmaXJzdCBvcHRpb24gZm9yIGEgZmV3CiAgICAgICAgICAgICAgb2YgdGhlc2UgZGxsJ3MuIFRoaXMgd2lsbCBmYWlsIGZvciB5b3UsIGJ1dCB5b3Ugd29uJ3QKICAgICAgICAgICAgICBub3RpY2UgaXQgYXMgd2luZSB3aWxsIGp1c3QgdXNlIHRoZSBzZWNvbmQgb3IgdGhpcmQKICAgICAgICAgICAgICBvcHRpb24uCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbm90ZT4KICAgICAgICA8L3NlY3QzPgoKICAgICAgICA8c2VjdDM+CiAgICAgICAgICA8dGl0bGU+VGhlIFtmb250c10gU2VjdGlvbjwvdGl0bGU+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHNldHMgdXAgd2luZSdzIGZvbnQgaGFuZGxpbmcuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJSZXNvbHV0aW9uIiA9ICI5NiI8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFNpbmNlIHRoZSB3YXkgWCBoYW5kbGVzIGZvbnRzIGlzIGRpZmZlcmVudCBmcm9tIHRoZSB3YXkKICAgICAgICAgICAgV2luZG93cyBkb2VzLCB3aW5lIHVzZXMgYSBzcGVjaWFsIG1lY2hhbmlzbSB0byBkZWFsIHdpdGgKICAgICAgICAgICAgdGhlbS4gSXQgbXVzdCBzY2FsZSB0aGVtIHVzaW5nIHRoZSBudW1iZXIgZGVmaW5lZCBpbiB0aGUKICAgICAgICAgICAgIlJlc29sdXRpb24iIHNldHRpbmcuIDYwLTEyMCBhcmUgcmVhc29uYWJsZSB2YWx1ZXMsIDk2IGlzCiAgICAgICAgICAgIGEgbmljZSBpbiB0aGUgbWlkZGxlIG9uZS4gSWYgeW91IGhhdmUgdGhlIHJlYWwgd2luZG93cwogICAgICAgICAgICBmb250cyBhdmFpbGFibGUgKDxmaWxlbmFtZT4mbHQ7ZGlycyB0bwogICAgICAgICAgICAgIHdpbmU+L2RvY3VtZW50YXRpb24vdHRmc2VydmVyPC9maWxlbmFtZT4gYW5kCiAgICAgICAgICAgIDxmaWxlbmFtZT5mb250czwvZmlsZW5hbWU+KSwgdGhpcyBwYXJhbWV0ZXIgd2lsbCBub3QgYmUgYXMKICAgICAgICAgICAgaW1wb3J0YW50LiBPZiBjb3Vyc2UsIGl0J3MgYWx3YXlzIGdvb2QgdG8gZ2V0IHlvdXIgWCBmb250cwogICAgICAgICAgICB3b3JraW5nIGFjY2VwdGFibHkgaW4gd2luZS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IkRlZmF1bHQiID0gIi1hZG9iZS10aW1lcy0iPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgICAgVGhlIGRlZmF1bHQgZm9udCB3aW5lIHVzZXMuIEZvb2wgYXJvdW5kIHdpdGggaXQgaWYgeW91J2QgbGlrZS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgpPUFRJT05BTDogCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgVGhlIDxsaXRlcmFsPkFsaWFzPC9saXRlcmFsPiBzZXR0aW5nIGFsbG93cyB5b3UgdG8gbWFwIGFuIFggZm9udCB0byBhIGZvbnQKICAgICAgICAgICAgdXNlZCBpbiB3aW5lLiBUaGlzIGlzIGdvb2QgZm9yIGFwcHMgdGhhdCBuZWVkIGEgc3BlY2lhbCBmb250IHlvdSBkb24ndCBoYXZlLAogICAgICAgICAgICBidXQgYSBnb29kIHJlcGxhY2VtZW50IGV4aXN0cy4gVGhlIHN5bnRheCBpcyBsaWtlIHNvOgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+CiJBbGlhc1giID0gIltGYWtlIHdpbmRvd3MgbmFtZV0sW1JlYWwgWCBuYW1lXSImbHQ7LG9wdGlvbmFsICJtYXNraW5nIiBzZWN0aW9uPgogICAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFByZXR0eSBzdHJhaWdodGZvcndhcmQuIFJlcGxhY2UgIkFsaWFzWCIgd2l0aCAiQWxpYXMwIiwKICAgICAgICAgICAgdGhlbiAiQWxpYXMxIiBhbmQgc28gb24uIFRoZSBmYWtlIHdpbmRvd3MgbmFtZSBpcyB0aGUgbmFtZQogICAgICAgICAgICB0aGF0IHRoZSBmb250IHdpbGwgYmUgdW5kZXIgYSB3aW5kb3dzIGFwcCBpbiB3aW5lLiBUaGUKICAgICAgICAgICAgcmVhbCBYIG5hbWUgaXMgdGhlIGZvbnQgbmFtZSBhcyBzZWVuIGJ5IFggKFJ1bgogICAgICAgICAgICAieGZvbnRzZWwiKS4gVGhlIG9wdGlvbmFsICJtYXNraW5nIiBzZWN0aW9uIGFsbG93cyB5b3UgdG8KICAgICAgICAgICAgdXRpbGl6ZSB0aGUgZmFrZSB3aW5kb3dzIG5hbWUgeW91IGRlZmluZS4gSWYgaXQgaXMgbm90CiAgICAgICAgICAgIHVzZWQsIHRoZW4gd2luZSB3aWxsIGp1c3QgdHJ5IHRvIGV4dHJhY3QgdGhlIGZha2Ugd2luZG93cwogICAgICAgICAgICBuYW1lIGl0c2VsZiBhbmQgbm90IHVzZSB0aGUgdmFsdWUgeW91IGVudGVyLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSBvZiBhbiBhbGlhcyB3aXRob3V0IG1hc2tpbmcuIFRoZSBmb250IHdpbGwgc2hvdyB1cCBpbiB3aW5kb3dzCiAgICAgICAgICAgIGFwcHMgYXMgIkdvb2dsZSIuIFdoZW4gZGVmaW5pbmcgYW4gYWxpYXMgaW4gYSBjb25maWcgZmlsZSwgZm9yZ2V0IGFib3V0IG15CiAgICAgICAgICAgIGNvbW1lbnQgdGV4dCAoVGhlICImbHQ7LS0gYmxhaCIgc3R1ZmYpCiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KIkFsaWFzMCIgPSAiRm9vLC0tZ29vZ2xlLSIgICAgICAmbHQ7CiAgICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIHdpdGggbWFza2luZyBlbmFibGVkLiBUaGUgZm9udCB3aWxsIHNob3cgdXAgYXMgIkZvbyIgaW4KICAgICAgICAgICAgd2luZG93cyBhcHBzLgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+CiJBbGlhczEiID0gIkZvbywtLWdvb2dsZS0sc3Vic3QiCiAgICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgRm9yIG1vcmUgaW5mbyBjaGVjayBvdXQgPGZpbGVuYW1lPiZsdDtkaXJzIHRvIHdpbmU+L2RvY3VtZW50YXRpb24vZm9udHM8L2ZpbGVuYW1lPgogICAgICAgICAgPC9wYXJhPgogICAgICAgIDwvc2VjdDM+CgogICAgICAgIDxzZWN0Mz4KICAgICAgICAgIDx0aXRsZT5UaGUgW3NlcmlhbHBvcnRzXSwgW3BhcmFsbGVscG9ydHNdLCBbc3Bvb2xlcl0sIGFuZCBbcG9ydHNdIFNlY3Rpb25zPC90aXRsZT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBFdmVuIHRob3VnaCBpdCBzb3VuZHMgbGlrZSBhIGxvdCBvZiBzZWN0aW9ucywgdGhlc2UgYXJlCiAgICAgICAgICAgIGFsbCBjbG9zZWx5IHJlbGF0ZWQuIFRoZXkgYXJlIGFsbCBmb3IgY29tbXVuaWNhdGlvbnMgYW5kCiAgICAgICAgICAgIHBhcmFsbGVsIHBvcnRzLiAKICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBUaGUgW3NlcmlhbHBvcnRzXSBzZWN0aW9uIHRlbGxzIHdpbmUgd2hhdCBzZXJpYWwgcG9ydHMgaXQKICAgICAgICAgICAgaXMgYWxsb3dlZCB0byB1c2UuCiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4iQ29tWCIgPSAiL2Rldi9jdWFZIjwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgUmVwbGFjZSA8bGl0ZXJhbD5YPC9saXRlcmFsPiB3aXRoIHRoZSBudW1iZXIgb2YgdGhlIENPTQogICAgICAgICAgICBwb3J0IGluIFdpbmRvd3MgKDEtOCkgYW5kIDxsaXRlcmFsPlk8L2xpdGVyYWw+IHdpdGggdGhlCiAgICAgICAgICAgIG51bWJlciBvZiBpdCBpbiA8bGl0ZXJhbD5YPC9saXRlcmFsPiAoVXN1YWxseSB0aGUgbnVtYmVyCiAgICAgICAgICAgIG9mIHRoZSBwb3J0IGluIFdpbmRvd3MgbWludXMgMSkuIDxsaXRlcmFsPkNvbVg8L2xpdGVyYWw+CiAgICAgICAgICAgIGNhbiBhY3R1YWxseSBlcXVhbCBhbnkgZGV2aWNlCiAgICAgICAgICAgICg8bWVkaWFsYWJlbD4vZGV2L21vZGVtPC9tZWRpYWxhYmVsPiBpcyBhY2NlcHRhYmxlKS4gSXQgaXMKICAgICAgICAgICAgbm90IGFsd2F5cyBuZWNlc3NhcnkgdG8gZGVmaW5lIGFueSBDT00gcG9ydHMgKEFuIG9wdGlvbmFsCiAgICAgICAgICAgIHNldHRpbmcpLiBIZXJlIGlzIGFuIGV4YW1wbGU6CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4iQ29tMSIgPSAiL2Rldi9jdWEwIjwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgVXNlIGFzIG1hbnkgb2YgdGhlc2UgYXMgeW91IGxpa2UgaW4gdGhlIHNlY3Rpb24gdG8gZGVmaW5lCiAgICAgICAgICAgIGFsbCBvZiB0aGUgQ09NIHBvcnRzIHlvdSBuZWVkLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFRoZSBbcGFyYWxsZWxwb3J0c10gc2VjdGlvbiBzZXRzIHVwIGFueSBwYXJhbGxlbCBwb3J0cwogICAgICAgICAgICB0aGF0IHdpbGwgYmUgYWxsb3dlZCBhY2Nlc3MgdW5kZXIgd2luZS4KICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJMcHRYIiA9ICIvZGV2L2xwWSI8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFNvdW5kcyBmYW1pbGlhcj8gU3ludGF4IGlzIGp1c3QgbGlrZSB0aGUgQ09NIHBvcnQgc2V0dGluZy4KICAgICAgICAgICAgUmVwbGFjZSA8bGl0ZXJhbD5YPC9saXRlcmFsPiB3aXRoIGEgdmFsdWUgZnJvbSAxLTQgYXMgaXQKICAgICAgICAgICAgaXMgaW4gV2luZG93cyBhbmQgPGxpdGVyYWw+WTwvbGl0ZXJhbD4gd2l0aCBhIHZhbHVlIGZyb20KICAgICAgICAgICAgMC0zICg8bGl0ZXJhbD5ZPC9saXRlcmFsPiBpcyB1c3VhbGx5IHRoZSB2YWx1ZSBpbiB3aW5kb3dzCiAgICAgICAgICAgIG1pbnVzIDEsIGp1c3QgbGlrZSBmb3IgQ09NIHBvcnRzKS4gWW91IGRvbid0IGFsd2F5cyBuZWVkCiAgICAgICAgICAgIHRvIGRlZmluZSBhIHBhcmFsbGVsIHBvcnQgKEFLQSwgaXQncyBvcHRpb25hbCkuIEFzIHdpdGgKICAgICAgICAgICAgdGhlIG90aGVyIHNlY3Rpb24sIExwdFggY2FuIGVxdWFsICBhbnkgZGV2aWNlIChNYXliZQogICAgICAgICAgICA8bWVkaWFsYWJlbD4vZGV2L3ByaW50ZXI8L21lZGlhbGFiZWw+KS4gSGVyZSBpcyBhbgogICAgICAgICAgICBleGFtcGxlOiAgPHByb2dyYW1saXN0aW5nPiJMcHQxIiA9ICIvZGV2L2xwMCI8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFRoZSBbc3Bvb2xlcl0gc2VjdGlvbiB3aWxsIGluZm9ybSB3aW5lIHdoZXJlIHRvIHNwb29sCiAgICAgICAgICAgIHByaW50IGpvYnMuIFVzZSB0aGlzIGlmIHlvdSB3YW50IHRvIHRyeSBwcmludGluZy4gV2luZQogICAgICAgICAgICBkb2NzIGNsYWltIHRoYXQgc3Bvb2xpbmcgaXMgInJhdGhlciBwcmltaXRpdmUiIGF0IHRoaXMKICAgICAgICAgICAgdGltZSwgc28gaXQgd29uJ3Qgd29yayBwZXJmZWN0bHkuIElUIElTIE9QVElPTkFMLiBUaGUgb25seQogICAgICAgICAgICBzZXR0aW5nIHlvdSB1c2UgaW4gdGhpcyBzZWN0aW9uIHdvcmtzIHRvIG1hcCBhIHBvcnQgKExQVDEsCiAgICAgICAgICAgIGZvciBleGFtcGxlKSB0byBhIGZpbGUgb3IgYSBjb21tYW5kLiBIZXJlIGlzIGFuIGV4YW1wbGUsCiAgICAgICAgICAgIG1hcHBpbmcgTFBUMSB0byB0aGUgZmlsZSA8ZmlsZW5hbWU+b3V0LnBzPC9maWxlbmFtZT46IAogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IkxQVDE6IiA9ICJvdXQucHMiPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNvbW1hbmQgbWFwcyBwcmludGluZyBqb2JzIHRvIExQVDEgdG8gdGhlCiAgICAgICAgICAgIGNvbW1hbmQgPGNvbW1hbmQ+bHByPC9jb21tYW5kPi4gTm90aWNlICB0aGUgfDogCiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4iTFBUMToiID0gInxscHIiPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBUaGUgW3BvcnRzXSBzZWN0aW9uIGlzIHVzdWFsbHkgdXNlZnVsIG9ubHkgZm9yIHBlb3BsZSB3aG8KICAgICAgICAgICAgbmVlZCBkaXJlY3QgcG9ydCBhY2Nlc3MgZm9yIHByb2dyYW1zIHJlcXVpcmluZyBkb25nbGVzIG9yCiAgICAgICAgICAgIHNjYW5uZXJzLiBJRiBZT1UgRE9OJ1QgTkVFRCBJVCwgRE9OJ1QgVVNFIElUISAKICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+InJlYWQiID0gIjB4Nzc5LDB4Mzc5LDB4MjgwLTB4MmEwIjwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICAgIEdpdmVzIGRpcmVjdCByZWFkIGFjY2VzcyB0byB0aG9zZSBJTydzLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4id3JpdGUiID0gIjB4Nzc5LDB4Mzc5LDB4MjgwLTB4MmEwIjwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICAgIEdpdmVzIGRpcmVjdCB3cml0ZSBhY2Nlc3MgdG8gdGhvc2UgSU8ncy4gSXQncyBwcm9iYWJseSBhCiAgICAgICAgICAgIGdvb2QgaWRlYSB0byBrZWVwIHRoZSB2YWx1ZXMgb2YgdGhlCiAgICAgICAgICAgIDxsaXRlcmFsPnJlYWQ8L2xpdGVyYWw+IGFuZCA8bGl0ZXJhbD53cml0ZTwvbGl0ZXJhbD4KICAgICAgICAgICAgc2V0dGluZ3MgdGhlIHNhbWUuIFRoaXMgc3R1ZmYgd2lsbCBvbmx5IHdvcmsgd2hlbiB5b3UncmUKICAgICAgICAgICAgcm9vdC4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICA8L3NlY3QzPgoKICAgICAgICA8c2VjdDM+CiAgICAgICAgICA8dGl0bGU+VGhlIFtzcHldLCBbUmVnaXN0cnldLCBbdHdlYWsubGF5b3V0XSwgYW5kIFtwcm9ncmFtc10gU2VjdGlvbnM8L3RpdGxlPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFtzcHldIGlzIHVzZWQgdG8gaW5jbHVkZSBvciBleGNsdWRlIGRlYnVnIG1lc3NhZ2VzLCBhbmQgdG8KICAgICAgICAgICAgb3V0cHV0IHRoZW0gdG8gYSBmaWxlLiBUaGUgbGF0dGVyIGlzIHJhcmVseSB1c2VkLiBUSEVTRQogICAgICAgICAgICBBUkUgQUxMIE9QVElPTkFMIEFORCBZT1UgUFJPQkFCTFkgRE9OJ1QgTkVFRCBUTyBBREQgT1IKICAgICAgICAgICAgUkVNT1ZFIEFOWVRISU5HIElOIFRISVMgU0VDVElPTiBUTyBZT1VSIENPTkZJRy4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IkZpbGUiID0gIi9ibGFuY28iPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgICAgU2V0cyB0aGUgbG9nZmlsZSBmb3Igd2luZS4gU2V0IHRvIENPTiB0byBsb2cgdG8gc3RhbmRhcmQgb3V0LgogICAgICAgICAgICBUSElTIElTIFJBUkVMWSBVU0VELgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4iRXhjbHVkZSIgPSAiV01fU0laRTtXTV9USU1FUjsiPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgICAgRXhjbHVkZXMgZGVidWcgbWVzc2FnZXMgYWJvdXQgPGNvbnN0YW50PldNX1NJWkU8L2NvbnN0YW50PgogICAgICAgICAgICBhbmQgPGNvbnN0YW50PldNX1RJTUVSPC9jb25zdGFudD4gaW4gdGhlIGxvZ2ZpbGUuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJJbmNsdWRlIiA9ICJXTV9TSVpFO1dNX1RJTUVSOyI8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgICBJbmNsdWRlcyBkZWJ1ZyBtZXNzYWdlcyBhYm91dCA8Y29uc3RhbnQ+V01fU0laRTwvY29uc3RhbnQ+CiAgICAgICAgICAgIGFuZCA8Y29uc3RhbnQ+V01fVElNRVI8L2NvbnN0YW50PiBpbiB0aGUgbG9nZmlsZS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBbUmVnaXN0cnldIGNhbiBiZSB1c2VkIHRvIHRlbGwgd2luZSB3aGVyZSB5b3VyIG9sZCB3aW5kb3dzCiAgICAgICAgICAgIHJlZ2lzdHJ5IGZpbGVzIGV4aXN0LiBUaGlzIHNlY3Rpb24gaXMgY29tcGxldGVseSBvcHRpb25hbAogICAgICAgICAgICBhbmQgdXNlbGVzcyB0byBwZW9wbGUgdXNpbmcgd2luZSB3aXRob3V0IGFuIGV4aXN0aW5nCiAgICAgICAgICAgIHdpbmRvd3MgaW5zdGFsbGF0aW9uLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4iVXNlckZpbGVOYW1lIiA9ICIvZGlycy90by91c2VyLnJlZyI8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgICBUaGUgbG9jYXRpb24gb2YgeW91ciBvbGQgPGZpbGVuYW1lPnVzZXIucmVnPC9maWxlbmFtZT4gZmlsZS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBbdHdlYWsubGF5b3V0XSBpcyBkZXZvdGVkIHRvIHdpbmUncyBsb29rLiBUaGVyZSBpcyBvbmx5CiAgICAgICAgICAgIG9uZSBzZXR0aW5nIGZvciBpdC4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IldpbmVMb29rIiA9ICJ3aW4zMXx3aW45NXx3aW45OCI8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgICBXaWxsIGNoYW5nZSB0aGUgbG9vayBvZiB3aW5lIGZyb20gV2luZG93cyAzLjEgdG8gV2luZG93cyA5NS4KICAgICAgICAgICAgVGhlIDxsaXRlcmFsPndpbjk4PC9saXRlcmFsPiBzZXR0aW5nIGJlaGF2ZXMKICAgICAgICAgICAganVzdCBsaWtlIDxsaXRlcmFsPndpbjk1PC9saXRlcmFsPiBtb3N0IG9mIHRoZSB0aW1lLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFtwcm9ncmFtc10gY2FuIGJlIHVzZWQgdG8gc2F5IHdoYXQgcHJvZ3JhbXMgcnVuIHVuZGVyCiAgICAgICAgICAgIHNwZWNpYWwgY29uZGl0aW9ucy4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IkRlZmF1bHQiID0gIi9wcm9ncmFtL3RvL2V4ZWN1dGUuZXhlIjwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICAgIFNldHMgdGhlIHByb2dyYW0gdG8gYmUgcnVuIGlmIHdpbmUgaXMgc3RhcnRlZCB3aXRob3V0IHNwZWNpZnlpbmcgYSBwcm9ncmFtLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4iU3RhcnR1cCIgPSAiL3Byb2dyYW0vdG8vZXhlY3V0ZS5leGUiPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgICAgU2V0cyB0aGUgcHJvZ3JhbSB0byBhdXRvbWF0aWNhbGx5IGJlIHJ1biBhdCBzdGFydHVwIGV2ZXJ5IHRpbWUuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgPC9zZWN0Mz4KCiAgICAgICAgPHNlY3QzPgogICAgICAgICAgPHRpdGxlPlRoZSBbV2luTU1dIFNlY3Rpb248L3RpdGxlPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFtXaW5NTV0gaXMgdXNlZCB0byBkZWZpbmUgd2hpY2ggbXVsdGltZWRpYSBkcml2ZXJzIGhhdmUgdG8gYmUgbG9hZGVkLiBTaW5jZQoJICAgIHRob3NlIGRyaXZlcnMgbWF5IGRlcGVuZCBvbiB0aGUgbXVsdGltZWRpYSBpbnRlcmZhY2VzIGF2YWlsYWJsZSBvbiB5b3VyIHN1c3RlbQoJICAgIChPU1MsIEFsc2EuLi4gdG8gbmFtZSBhIGZldyksIGl0J3MgbmVlZGVkIHRvIGJlIGFibGUgdG8gY29uZmlndXJlIHdoaWNoIGRyaXZlcgoJICAgIGhhcyB0byBiZSBsb2FkZWQuCiAgICAgICAgICA8L3BhcmE+CgogICAgICAgICAgPHBhcmE+CgkgICAgVGhlIGNvbnRlbnQgb2YgdGhlIHNlY3Rpb24gbG9va3MgbGlrZToKCSAgICA8cHJvZ3JhbWxpc3Rpbmc+IApbV2luTU1dCiJEcml2ZXJzIiA9ICJ3aW5lb3NzLmRydiIKIldhdmVNYXBwZXIiID0gIm1zYWNtLmRydiIKIk1pZGlNYXBwZXIiID0gIm1pZGltYXAuZHJ2IgoJICAgIDwvcHJvZ3JhbWxpc3Rpbmc+IAoJICAgIEFsbCB0aGUga2V5cyBtdXN0IGJlIGRlZmluZWQ6CgkgICAgPGl0ZW1pemVkbGlzdD4KCSAgICAgIDxsaXN0aXRlbT4KCSAgICAgICAgPHBhcmE+CgkJICBUaGUgIkRyaXZlcnMiIGtleSBpcyBhICc7JyBzZXBhcmF0ZWQgbGlzdCBvZiBtb2R1bGVzIG5hbWUsIGVhY2ggb2YgCgkJICB0aGVtIGNvbnRhaW5pbmcgYSBsb3cgbGV2ZWwgZHJpdmVyLiBBbGwgdGhvc2UgZHJpdmVycyB3aWxsIGJlIGxvYWRlZCAKCQkgIHdoZW4gTU1TWVNURU0vV0lOTU0gaXMgc3RhcnRlZCBhbmQgd2lsbCBwcm92aWRlIHRoZWlyIGlubmVyIGZlYXR1cmVzLgoJICAgICAgICA8L3BhcmE+CgkgICAgICA8L2xpc3RpdGVtPgoJICAgICAgPGxpc3RpdGVtPgoJICAgICAgICA8cGFyYT4KCQkgIFRoZSAiV2F2ZU1hcHBlciIgcmVwcmVzZW50cyB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIGNvbnRhaW5pbmcgdGhlIFdhdmUKCQkgIE1hcHBlciBkcml2ZXIuIE9ubHkgb25lIHdhdmUgbWFwcGVyIGNhbiBiZSBkZWZpbmVkIGluIHRoZSBzeXN0ZW0uCgkgICAgICAgIDwvcGFyYT4KCSAgICAgIDwvbGlzdGl0ZW0+CgkgICAgICA8bGlzdGl0ZW0+CgkgICAgICAgIDxwYXJhPgoJCSAgVGhlICJNaWRpTWFwcGVyIiByZXByZXNlbnRzIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgY29udGFpbmluZyB0aGUgTWlkaSAKCQkgIE1hcHBlciBkcml2ZXIuIE9ubHkgb25lIE1pZGkgbWFwcGVyIGNhbiBiZSBkZWZpbmVkIGluIHRoZSBzeXN0ZW0uCgkgICAgICAgIDwvcGFyYT4KCSAgICAgIDwvbGlzdGl0ZW0+CgkgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICA8L3BhcmE+Cgk8L3NlY3QzPgogICAgICA8L3NlY3QyPgoKICAgICAgPHNlY3QyPgogICAgICAgIDx0aXRsZT5XaGVyZSBEbyBJIFB1dCBJdD88L3RpdGxlPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIHdpbmUgY29uZmlnIGZpbGUgY2FuIGdvIGluIHR3byBwbGFjZXMuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDx2YXJpYWJsZWxpc3Q+CiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT48ZmlsZW5hbWU+L3Vzci9sb2NhbC9ldGMvd2luZS5jb25mPC9maWxlbmFtZT48L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgIEEgc3lzdGVtd2lkZSBjb25maWcgZmlsZSwgdXNlZCBmb3IgYW55b25lIHdobyBkb2Vzbid0CiAgICAgICAgICAgICAgICBoYXZlIHRoZWlyIG93bi4gTk9URTogdGhpcyBmaWxlIGlzIGN1cnJlbnRseSB1bnVzZWQgYXMgYQogICAgICAgICAgICAgICAgbmV3IGdsb2JhbCBjb25maWd1cmF0aW9uIG1lY2hhbmlzbSBpcyBub3QgaW4gcGxhY2UgYXQgdGhpcwogICAgICAgICAgICAgICAgdGltZQogICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+PGZpbGVuYW1lPiRIT01FLy53aW5lL2NvbmZpZzwvZmlsZW5hbWU+PC90ZXJtPgogICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICBZb3VyIG93biBjb25maWcgZmlsZSwgdGhhdCBvbmx5IGlzIHVzZWQgZm9yIHlvdXIgdXNlci4gCiAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgPC92YXJpYWJsZWxpc3Q+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBTbyBjb3B5IHlvdXIgdmVyc2lvbiBvZiB0aGUgPGZpbGVuYW1lPndpbmUuY29uZjwvZmlsZW5hbWU+IGZpbGUgdG8KICAgICAgICAgIDxmaWxlbmFtZT4vdXNyL2xvY2FsL2V0Yy93aW5lLmNvbmY8L2ZpbGVuYW1lPiBvcgogICAgICAgICAgPGZpbGVuYW1lPiRIT01FLy53aW5lL2NvbmZpZzwvZmlsZW5hbWU+IGZvciB3aW5lIHRvIHJlY29nbml6ZQoJICBpdC4gCiAgICAgICAgPC9wYXJhPgogICAgICA8L3NlY3QyPgoKICAgICAgPHNlY3QyPgogICAgICAgIDx0aXRsZT5XaGF0IElmIEl0IERvZXNuJ3QgV29yaz88L3RpdGxlPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlcmUgaXMgYWx3YXlzIGEgY2hhbmNlIHRoYXQgdGhpbmdzIHdpbGwgZ28gd3JvbmcuIElmIHRoZQogICAgICAgICAgdW50aGlua2FibGUgaGFwcGVucywgIHRyeSB0aGUgbmV3c2dyb3VwLAogICAgICAgICAgPHN5c3RlbWl0ZW0+Y29tcC5lbXVsYXRvcnMubXMtd2luZG93cy53aW5lPC9zeXN0ZW1pdGVtPiwKCSAgb3IgdGhlIElSQ25ldCBjaGFubmVsIDxzeXN0ZW1pdGVtPiNXaW5lSFE8L3N5c3RlbWl0ZW0+IGZvdW5kIG9uCiAgICAgICAgICBpcmMuc3RlYWx0aC5uZXQ6NjY2OCwJIG9yIGNvbm5lY3RlZCBzZXJ2ZXJzLgoJICBNYWtlIHN1cmUgdGhhdCB5b3UgaGF2ZSBsb29rZWQgb3ZlciB0aGlzIGRvY3VtZW50IHRob3JvdWdobHksCgkgIGFuZCBoYXZlIGFsc28gcmVhZDoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+PGZpbGVuYW1lPlJFQURNRTwvZmlsZW5hbWU+PC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgPGZpbGVuYW1lPmh0dHA6Ly93d3cubGEtc29yY2llcmUuZGUvd2luZS9pbmRleC5odG1sPC9maWxlbmFtZT4KICAgICAgICAgICAgICAob3B0aW9uYWwgYnV0IHJlY29tbWVuZGVkKQogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgaW5kZWVkIGl0IGxvb2tzIGxpa2UgeW91J3ZlIGRvbmUgeW91ciByZXNlYXJjaCwgYmUKICAgICAgICAgIHByZXBhcmVkIGZvciBoZWxwZnVsIHN1Z2dlc3Rpb25zLiBJZiB5b3UgaGF2ZW4ndCwgYnJhY2UKICAgICAgICAgIHlvdXJzZWxmIGZvciBoZWF2aW5nIGZsYW1pbmcuCiAgICAgICAgPC9wYXJhPgogICAgICA8L3NlY3QyPgogICAgPC9zZWN0MT4KCiAgICA8c2VjdDEgaWQ9Indpbjk1bG9vayI+CiAgICAgIDx0aXRsZT5XaW45NS85OCBMb29rPC90aXRsZT4KICAgICAgPHBhcmE+CiAgICAgICAgV3JpdHRlbiBieSAmbmFtZS1kYXZpZC1jdXRoYmVydDsgPGVtYWlsPiZlbWFpbC1kYXZpZC1jdXRoYmVydDs8L2VtYWlsPgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgogICAgICAgIChFeHRyYWN0ZWQgZnJvbSA8ZmlsZW5hbWU+d2luZS9kb2N1bWVudGF0aW9uL3dpbjk1bG9vazwvZmlsZW5hbWU+KQogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgogICAgICAgIFdpbjk1L1dpbjk4IGludGVyZmFjZSBjb2RlIGlzIGJlaW5nIGludHJvZHVjZWQuCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgSW5zdGVhZCBvZiBjb21waWxpbmcgV2luZSBmb3IgV2luMy4xIHZzLiBXaW45NSB1c2luZwogICAgICAgIDxjb25zdGFudD4jZGVmaW5lPC9jb25zdGFudD4gc3dpdGNoZXMsIHRoZSBjb2RlIG5vdyBsb29rcyBpbiBhCiAgICAgICAgc3BlY2lhbCBbVHdlYWsuTGF5b3V0XSBzZWN0aW9uIG9mCiAgICAgICAgPGZpbGVuYW1lPn4vLndpbmUvY29uZmlnPC9maWxlbmFtZT4gZm9yIGEKICAgICAgICA8bGl0ZXJhbD4iV2luZUxvb2siID0gIldpbjk1IjwvbGl0ZXJhbD4gb3IKICAgICAgICA8bGl0ZXJhbD4iV2luZUxvb2siID0gIldpbjk4IjwvbGl0ZXJhbD4gZW50cnkuCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgQSBmZXcgbmV3IHNlY3Rpb25zIGFuZCBhIG51bWJlciBvZiBlbnRyaWVzIGhhdmUgYmVlbiBhZGRlZCB0bwogICAgICAgIHRoZSA8ZmlsZW5hbWU+fi8ud2luZS9jb25maWc8L2ZpbGVuYW1lPiBmaWxlIC0tIHRoZXNlIGFyZSBmb3IKICAgICAgICBkZWJ1Z2dpbmcgdGhlIFdpbjk1IHR3ZWFrcyBvbmx5IGFuZCBtYXkgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZQogICAgICAgIHJlbGVhc2UhICBUaGVzZSBlbnRyaWVzL3NlY3Rpb25zIGFyZToKICAgICAgPC9wYXJhPgogICAgICA8cHJvZ3JhbWxpc3Rpbmc+CltUd2Vhay5Gb250c10KIlN5c3RlbS5IZWlnaHQiID0gIiZsdDtwb2ludCBzaXplPiIgICAgIyBTZXRzIHRoZSBoZWlnaHQgb2YgdGhlIHN5c3RlbSB0eXBlZmFjZQoiU3lzdGVtLkJvbGQiID0gIlt0cnVlfGZhbHNlXSIgICAgICAjIFdoZXRoZXIgdGhlIHN5c3RlbSBmb250IHNob3VsZCBiZSBib2xkZmFjZWQKIlN5c3RlbS5JdGFsaWMiID0gIlt0cnVlfGZhbHNlXSIgICAgIyBXaGV0aGVyIHRoZSBzeXN0ZW0gZm9udCBzaG91bGQgYmUgaXRhbGljaXplZAoiU3lzdGVtLlVuZGVybGluZSIgPSAiW3RydWV8ZmFsc2VdIiAjIFdoZXRoZXIgdGhlIHN5c3RlbSBmb250IHNob3VsZCBiZSB1bmRlcmxpbmVkCiJTeXN0ZW0uU3RyaWtlT3V0IiA9ICJbdHJ1ZXxmYWxzZV0iICMgV2hldGhlciB0aGUgc3lzdGVtIGZvbnQgc2hvdWxkIGJlIHN0cnVjayBvdXQKIk9FTUZpeGVkLnh4eCIgICAgICAgICAgICAgICAgICAjIFNhbWUgcGFyYW1ldGVycyBmb3IgdGhlIE9FTSBmaXhlZCB0eXBlZmFjZQoiQW5zaUZpeGVkLnh4eCIgICAgICAgICAgICAgICAgICMgU2FtZSBwYXJhbWV0ZXJzIGZvciB0aGUgQW5zaSBmaXhlZCB0eXBlZmFjZQoiQW5zaVZhci54eHgiICAgICAgICAgICAgICAgICAgICMgU2FtZSBwYXJhbWV0ZXJzIGZvciB0aGUgQW5zaSB2YXJpYWJsZSB0eXBlZmFjZQoiU3lzdGVtRml4ZWQueHh4IiAgICAgICAgICAgICAgICMgU2FtZSBwYXJhbWV0ZXJzIGZvciB0aGUgU3lzdGVtIGZpeGVkIHR5cGVmYWNlCgpbVHdlYWsuTGF5b3V0XQoiV2luZUxvb2siID0gIltXaW4zMXxXaW45NXxXaW45OF0iICAjIENoYW5nZXMgV2luZSdzIGxvb2sgYW5kIGZlZWwKICAgICAgPC9wcm9ncmFtbGlzdGluZz4KICAgIDwvc2VjdDE+CgogICAgPHNlY3QxIGlkPSJ4MTFkcnYiPgogICAgICA8dGl0bGU+Q29uZmlndXJpbmcgdGhlIHgxMWRydiBEcml2ZXI8L3RpdGxlPgoKICAgICAgPHBhcmE+CiAgICAgICAgV3JpdHRlbiBieSAmbmFtZS1vdmUta2FhdmVuOyA8ZW1haWw+JmVtYWlsLW92ZS1rYWF2ZW47PC9lbWFpbD4KICAgICAgPC9wYXJhPgogICAgICA8cGFyYT4KICAgICAgICAoRXh0cmFjdGVkIGZyb20gPGZpbGVuYW1lPndpbmUvZG9jdW1lbnRhdGlvbi9jZHJvbS1sYWJlbHM8L2ZpbGVuYW1lPikKICAgICAgPC9wYXJhPgoKICAgICAgPHBhcmE+CiAgICAgICAgTW9zdCBXaW5lIHVzZXJzIHJ1biBXaW5lIHVuZGVyIHRoZSB3aW5kb3dpbmcgc3lzdGVtIGtub3duIGFzCiAgICAgICAgWDExLiBEdXJpbmcgbW9zdCBvZiBXaW5lJ3MgaGlzdG9yeSwgdGhpcyB3YXMgdGhlIG9ubHkgZGlzcGxheQogICAgICAgIGRyaXZlciBhdmFpbGFibGUsIGJ1dCBpbiByZWNlbnQgeWVhcnMsIHBhcnRzIG9mIFdpbmUgaGFzIGJlZW4KICAgICAgICByZW9yZ2FuaXplZCB0byBhbGxvdyBmb3Igb3RoZXIgZGlzcGxheSBkcml2ZXJzIChhbHRob3VnaCB0aGUKICAgICAgICBvbmx5IGFsdGVybmF0aXZlIGN1cnJlbnRseSBhdmFpbGFibGUgaXMgUGF0cmlrIFN0cmlkdmFsbCdzCiAgICAgICAgbmN1cnNlcy1iYXNlZCB0dHlkcnYsIHdoaWNoIGhlIGNsYWltcyB3b3JrcyBmb3IgZGlzcGxheWluZwogICAgICAgIGNhbGMuZXhlKS4gVGhlIGRpc3BsYXkgZHJpdmVyIGlzIGNob3NlbiB3aXRoIHRoZQogICAgICAgIDxsaXRlcmFsPkdyYXBoaWNzRHJpdmVyPC9saXRlcmFsPiBvcHRpb24gaW4gdGhlIFt3aW5lXSBzZWN0aW9uCiAgICAgICAgb2YgPGZpbGVuYW1lPn4vLndpbmUvY29uZmlnPC9maWxlbmFtZT4sIGJ1dCBJIHdpbGwgb25seSBjb3ZlciB0aGUKICAgICAgICB4MTFkcnYgZHJpdmVyIGluIHRoaXMgYXJ0aWNsZS4KICAgICAgPC9wYXJhPgoKICAgICAgPHNlY3QyPgogICAgICAgIDx0aXRsZT54MTFkcnYgbW9kZXMgb2Ygb3BlcmF0aW9uPC90aXRsZT4KCiAgICAgICAgPHBhcmE+CiAgICAgICAgICA8IS0tIEZJWE1FOiBUaGlzIGlzIG91dGRhdGVkIC0tPgogICAgICAgICAgTm90ZTogVGhpcyBpcyBub3cgYWxsIGRvbmUgaW4gdGhlIGNvbmZpZyBmaWxlLiBOZWVkcyBhbiB1cGRhdGUuLi4KICAgICAgICA8L3BhcmE+CgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIHgxMWRydiBkcml2ZXIgY29uc2lzdHMgb2YgdHdvIGNvbmNlcHR1YWxseSBkaXN0aW5jdAogICAgICAgICAgcGllY2VzLCB0aGUgZ3JhcGhpY3MgZHJpdmVyIChHREkgcGFydCksIGFuZCB0aGUgd2luZG93aW5nCiAgICAgICAgICBkcml2ZXIgKFVTRVIgcGFydCkuIEJvdGggb2YgdGhlc2UgYXJlIGxpbmtlZCBpbnRvIHRoZQogICAgICAgICAgPGZpbGVuYW1lPmxpYngxMWRydi5zbzwvZmlsZW5hbWU+IG1vZHVsZSwgdGhvdWdoICh3aGljaCB5b3UKICAgICAgICAgIGxvYWQgd2l0aCB0aGUgPGxpdGVyYWw+R3JhcGhpY3NEcml2ZXI8L2xpdGVyYWw+IG9wdGlvbikuIEluCiAgICAgICAgICBXaW5lLCBydW5uaW5nIG9uIFgxMSwgdGhlIGdyYXBoaWNzIGRyaXZlciBtdXN0IGRyYXcgb24KICAgICAgICAgIGRyYXdhYmxlcyAod2luZG93IGludGVyaW9ycykgcHJvdmlkZWQgYnkgdGhlIHdpbmRvd2luZwogICAgICAgICAgZHJpdmVyLiBUaGlzIGRpZmZlcnMgYSBiaXQgZnJvbSB0aGUgV2luZG93cyBtb2RlbCwgd2hlcmUgdGhlCiAgICAgICAgICB3aW5kb3dpbmcgc3lzdGVtIGNyZWF0ZXMgYW5kIGNvbmZpZ3VyZXMgZGV2aWNlIGNvbnRleHRzCiAgICAgICAgICBjb250cm9sbGVkIGJ5IHRoZSBncmFwaGljcyBkcml2ZXIsIGFuZCBhcHBsaWNhdGlvbnMgYXJlCiAgICAgICAgICBhbGxvd2VkIHRvIGhvb2sgaW50byB0aGlzIHJlbGF0aW9uc2hpcCBhbnl3aGVyZSB0aGV5IGxpa2UuCiAgICAgICAgICBUaHVzLCB0byBwcm92aWRlIGFueSByZWFzb25hYmxlIHRyYWRlb2ZmIGJldHdlZW4KICAgICAgICAgIGNvbXBhdGliaWxpdHkgYW5kIHVzYWJpbGl0eSwgdGhlIHgxMWRydiBoYXMgdGhyZWUgZGlmZmVyZW50CiAgICAgICAgICBtb2RlcyBvZiBvcGVyYXRpb24uCiAgICAgICAgPC9wYXJhPgoKICAgICAgICA8dmFyaWFibGVsaXN0PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+VW5tYW5hZ2VkL05vcm1hbDwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQuIFdpbmRvdy1tYW5hZ2VyLWluZGVwZW5kZW50IChhbnkgcnVubmluZwogICAgICAgICAgICAgICAgd2luZG93IG1hbmFnZXIgaXMgaWdub3JlZCBjb21wbGV0ZWx5KS4gV2luZG93CiAgICAgICAgICAgICAgICBkZWNvcmF0aW9ucyAodGl0bGUgYmFycywgYm9yZGVycywgZXRjKSBhcmUgZHJhd24gYnkKICAgICAgICAgICAgICAgIFdpbmUgdG8gbG9vayBhbmQgZmVlbCBsaWtlIHRoZSByZWFsIFdpbmRvd3MuIFRoaXMgaXMKICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgd2l0aCBhcHBsaWNhdGlvbnMgdGhhdCBkZXBlbmQgb24gYmVpbmcgYWJsZQogICAgICAgICAgICAgICAgdG8gY29tcHV0ZSB0aGUgZXhhY3Qgc2l6ZXMgb2YgYW55IHN1Y2ggZGVjb3JhdGlvbnMsIG9yCiAgICAgICAgICAgICAgICB0aGF0IHdhbnQgdG8gZHJhdyB0aGVpciBvd24uCiAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+ICAgICAgICAgIAogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+TWFuYWdlZDwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgU3BlY2lmaWVkIGJ5IHVzaW5nIHRoZQogICAgICAgICAgICAgICAgPHBhcmFtZXRlcj4tLW1hbmFnZWQ8L3BhcmFtZXRlcj4gY29tbWFuZC1saW5lIG9wdGlvbgogICAgICAgICAgICAgICAgb3IgdGhlIDxsaXRlcmFsPk1hbmFnZWQ8L2xpdGVyYWw+CiAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+d2luZS5jb25mPC9maWxlbmFtZT4gb3B0aW9uIChzZWUgYmVsb3cpLgogICAgICAgICAgICAgICAgT3JkaW5hcnkgdG9wLWxldmVsIGZyYW1lIHdpbmRvd3Mgd2l0aCB0aGljayBib3JkZXJzLAogICAgICAgICAgICAgICAgdGl0bGUgYmFycywgYW5kIHN5c3RlbSBtZW51cyB3aWxsIGJlIG1hbmFnZWQgYnkgeW91cgogICAgICAgICAgICAgICAgd2luZG93IG1hbmFnZXIuIFRoaXMgbGV0cyB0aGVzZSBhcHBsaWNhdGlvbnMgaW50ZWdyYXRlCiAgICAgICAgICAgICAgICBiZXR0ZXIgd2l0aCB0aGUgcmVzdCBvZiB5b3VyIGRlc2t0b3AsIGJ1dCBtYXkgbm90CiAgICAgICAgICAgICAgICBhbHdheXMgd29yayBwZXJmZWN0bHkuIChBIHJld3JpdGUgb2YgdGhpcyBtb2RlIG9mCiAgICAgICAgICAgICAgICBvcGVyYXRpb24sIHRvIG1ha2UgaXQgbW9yZSByb2J1c3QgYW5kIGxlc3MgcGF0Y2h5LCBpcwogICAgICAgICAgICAgICAgaGlnaGx5IGRlc2lyYWJsZSwgdGhvdWdoLCBhbmQgaXMgcGxhbm5lZCB0byBiZSBkb25lCiAgICAgICAgICAgICAgICBiZWZvcmUgdGhlIFdpbmUgMS4wIHJlbGVhc2UuKQogICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+RGVza3RvcC1pbi1hLUJveDwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgU3BlY2lmaWVkIGJ5IHVzaW5nIHRoZQogICAgICAgICAgICAgICAgPHBhcmFtZXRlcj4tLWRlc2t0b3A8L3BhcmFtZXRlcj4gY29tbWFuZC1saW5lIG9wdGlvbgogICAgICAgICAgICAgICAgKHdpdGggYSBnZW9tZXRyeSwgZS5nLiA8cGFyYW1ldGVyPi0tZGVza3RvcAogICAgICAgICAgICAgICAgICA4MDB4NjAwPC9wYXJhbWV0ZXI+IGZvciBhIHN1Y2gtc2l6ZWQgZGVza3RvcCwgb3IKICAgICAgICAgICAgICAgIGV2ZW4gPHBhcmFtZXRlcj4tLWRlc2t0b3AgODAweDYwMCswKzA8L3BhcmFtZXRlcj4gdG8KICAgICAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkgcG9zaXRpb24gdGhlIGRlc2t0b3AgYXQgdGhlIHVwcGVyLWxlZnQKICAgICAgICAgICAgICAgIGNvcm5lciBvZiB0aGUgZGlzcGxheSkuIFRoaXMgaXMgdGhlIG1vZGUgbW9zdAogICAgICAgICAgICAgICAgY29tcGF0aWJsZSB3aXRoIHRoZSBXaW5kb3dzIG1vZGVsLiBBbGwgYXBwbGljYXRpb24KICAgICAgICAgICAgICAgIHdpbmRvd3Mgd2lsbCBqdXN0IGJlIFdpbmUtZHJhd24gd2luZG93cyBpbnNpZGUgdGhlCiAgICAgICAgICAgICAgICBXaW5lLXByb3ZpZGVkIGRlc2t0b3Agd2luZG93ICh3aGljaCB3aWxsIGl0c2VsZiBiZQogICAgICAgICAgICAgICAgbWFuYWdlZCBieSB5b3VyIHdpbmRvdyBtYW5hZ2VyKSwgYW5kIFdpbmRvd3MKICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9ucyBjYW4gcm9hbSBmcmVlbHkgd2l0aGluIHRoaXMgdmlydHVhbAogICAgICAgICAgICAgICAgd29ya3NwYWNlIGFuZCB0aGluayB0aGV5IG93biBpdCBhbGwsIHdpdGhvdXQKICAgICAgICAgICAgICAgIGRpc3R1cmJpbmcgeW91ciBvdGhlciBYIGFwcHMuCiAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgPC92YXJpYWJsZWxpc3Q+CiAgICAgIDwvc2VjdDI+CgogICAgICA8c2VjdDI+CiAgICAgICAgPHRpdGxlPlRoZSBbeDExZHJ2XSBzZWN0aW9uPC90aXRsZT4KCiAgICAgICAgPHZhcmlhYmxlbGlzdD4KICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPkFsbG9jU3lzdGVtQ29sb3JzPC90ZXJtPgogICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICBBcHBsaWVzIG9ubHkgaWYgeW91IGhhdmUgYSBwYWxldHRlLWJhc2VkIGRpc3BsYXksIGkuZS4KICAgICAgICAgICAgICAgIGlmIHlvdXIgWCBzZXJ2ZXIgaXMgc2V0IHRvIGEgZGVwdGggb2YgOGJwcCwgYW5kIGlmIHlvdQogICAgICAgICAgICAgICAgaGF2ZW4ndCByZXF1ZXN0ZWQgYSBwcml2YXRlIGNvbG9yIG1hcC4gSXQgc3BlY2lmaWVzCiAgICAgICAgICAgICAgICB0aGUgbWF4aW11bSBudW1iZXIgb2Ygc2hhcmVkIGNvbG9ybWFwIGNlbGxzIChwYWxldHRlCiAgICAgICAgICAgICAgICBlbnRyaWVzKSBXaW5lIHNob3VsZCBvY2N1cHkuIFRoZSBoaWdoZXIgdGhpcyB2YWx1ZSwKICAgICAgICAgICAgICAgIHRoZSBsZXNzIGNvbG9ycyB3aWxsIGJlIGF2YWlsYWJsZSB0byBvdGhlcgogICAgICAgICAgICAgICAgYXBwbGljYXRpb25zLgogICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PiAgICAgICAgICAKICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPlByaXZhdGVDb2xvck1hcDwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgQXBwbGllcyBvbmx5IGlmIHlvdSBoYXZlIGEgcGFsZXR0ZS1iYXNlZCBkaXNwbGF5LCBpLmUuCiAgICAgICAgICAgICAgICBpZiB5b3VyIFggc2VydmVyIGlzIHNldCB0byBhIGRlcHRoIG9mIDhicHAuIEl0CiAgICAgICAgICAgICAgICBzcGVjaWZpZXMgdGhhdCB5b3UgZG9uJ3Qgd2FudCB0byB1c2UgdGhlIHNoYXJlZCBjb2xvcgogICAgICAgICAgICAgICAgbWFwLCBidXQgYSBwcml2YXRlIGNvbG9yIG1hcCwgd2hlcmUgYWxsIDI1NiBjb2xvcnMgYXJlCiAgICAgICAgICAgICAgICBhdmFpbGFibGUuIFRoZSBkaXNhZHZhbnRhZ2UgaXMgdGhhdCBXaW5lJ3MgcHJpdmF0ZQogICAgICAgICAgICAgICAgY29sb3IgbWFwIGlzIG9ubHkgc2VlbiB3aGlsZSB0aGUgbW91c2UgcG9pbnRlciBpcwogICAgICAgICAgICAgICAgaW5zaWRlIGEgV2luZSB3aW5kb3csIHNvIHBzeWNoZWRlbGljIGZsYXNoaW5nIGFuZAogICAgICAgICAgICAgICAgZnVua3kgY29sb3JzIHdpbGwgYmVjb21lIHJvdXRpbmUgaWYgeW91IHVzZSB0aGUgbW91c2UKICAgICAgICAgICAgICAgIGEgbG90LgogICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PiAgICAgICAgICAKICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPlBlcmZlY3RHcmFwaGljczwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgVGhpcyBvcHRpb24gb25seSBkZXRlcm1pbmVzIHdoZXRoZXIgZmFzdCBYMTEgcm91dGluZXMKICAgICAgICAgICAgICAgIG9yIGV4YWN0IFdpbmUgcm91dGluZXMgd2lsbCBiZSB1c2VkIGZvciBjZXJ0YWluIFJPUAogICAgICAgICAgICAgICAgY29kZXMgaW4gYmxpdCBvcGVyYXRpb25zLiBNb3N0IHVzZXJzIHdvbid0IG5vdGljZSBhbnkKICAgICAgICAgICAgICAgIGRpZmZlcmVuY2UuCiAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+ICAgICAgICAgIAogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+U2NyZWVuRGVwdGg8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIEFwcGxpZXMgb25seSB0byBtdWx0aS1kZXB0aCBkaXNwbGF5cy4gSXQgc3BlY2lmaWVzCiAgICAgICAgICAgICAgICB3aGljaCBvZiB0aGUgYXZhaWxhYmxlIGRlcHRocyBXaW5lIHNob3VsZCB1c2UgKGFuZAogICAgICAgICAgICAgICAgdGVsbCBXaW5kb3dzIGFwcHMgYWJvdXQpLgogICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PiAgICAgICAgICAKICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPkRpc3BsYXk8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIFRoaXMgc3BlY2lmaWVzIHdoaWNoIFgxMSBkaXNwbGF5IHRvIHVzZSwgYW5kIGlmCiAgICAgICAgICAgICAgICBzcGVjaWZpZWQsIHdpbGwgb3ZlcnJpZGUgYm90aCB0aGUKICAgICAgICAgICAgICAgIDxlbnZhcj5ESVNQTEFZPC9lbnZhcj4gZW52aXJvbm1lbnQgdmFyaWFibGUgYW5kIHRoZQogICAgICAgICAgICAgICAgPHBhcmFtZXRlcj4tLWRpc3BsYXk8L3BhcmFtZXRlcj4gY29tbWFuZC1saW5lIG9wdGlvbi4KICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4gICAgICAgICAgCiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT5NYW5hZ2VkPC90ZXJtPgogICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICBXaW5lIGNhbiBsZXQgZnJhbWUgd2luZG93cyBiZSBtYW5hZ2VkIGJ5IHlvdXIgd2luZG93CiAgICAgICAgICAgICAgICBtYW5hZ2VyLiBUaGlzIG9wdGlvbiBzcGVjaWZpZXMgd2hldGhlciB5b3Ugd2FudCB0aGF0CiAgICAgICAgICAgICAgICBieSBkZWZhdWx0LgogICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PiAgICAgICAgICAKICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPlVzZURHQTwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgVGhpcyBzcGVjaWZpZXMgd2hldGhlciB5b3Ugd2FudCBEaXJlY3REcmF3IHRvIHVzZQogICAgICAgICAgICAgICAgWEZyZWU4NidzIDxmaXJzdHRlcm0+RGlyZWN0IEdyYXBoaWNzCiAgICAgICAgICAgICAgICAgIEFyY2hpdGVjdHVyZTwvZmlyc3R0ZXJtPiAoREdBKSwgd2hpY2ggaXMgYWJsZSB0bwogICAgICAgICAgICAgICAgdGFrZSBvdmVyIHRoZSBlbnRpcmUgZGlzcGxheSBhbmQgcnVuIHRoZSBnYW1lCiAgICAgICAgICAgICAgICBmdWxsLXNjcmVlbiBhdCBtYXhpbXVtIHNwZWVkLiAoV2l0aCBER0ExIChYRnJlZTg2CiAgICAgICAgICAgICAgICAzLngpLCB5b3Ugc3RpbGwgaGF2ZSB0byBjb25maWd1cmUgdGhlIFggc2VydmVyIHRvIHRoZQogICAgICAgICAgICAgICAgZ2FtZSdzIHJlcXVlc3RlZCBicHAgZmlyc3QsIGJ1dCB3aXRoIERHQTIgKFhGcmVlODYKICAgICAgICAgICAgICAgIDQueCksIHJ1bnRpbWUgZGVwdGgtc3dpdGNoaW5nIG1heSBiZSBwb3NzaWJsZSwKICAgICAgICAgICAgICAgIGRlcGVuZGluZyBvbiB5b3VyIGRyaXZlcidzIGNhcGFiaWxpdGllcy4pIEJ1dCBiZSBhd2FyZQogICAgICAgICAgICAgICAgdGhhdCBpZiBXaW5lIGNyYXNoZXMgd2hpbGUgaW4gREdBIG1vZGUsIGl0IG1heSBub3QgYmUKICAgICAgICAgICAgICAgIHBvc3NpYmxlIHRvIHJlZ2FpbiBjb250cm9sIG92ZXIgeW91ciBjb21wdXRlciB3aXRob3V0CiAgICAgICAgICAgICAgICByZWJvb3RpbmcuIERHQSBub3JtYWxseSByZXF1aXJlcyBlaXRoZXIgcm9vdAogICAgICAgICAgICAgICAgcHJpdmlsZWdlcyBvciByZWFkL3dyaXRlIGFjY2VzcyB0bwogICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9kZXYvbWVtPC9maWxlbmFtZT4uCiAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+ICAgICAgICAgIAogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+VXNlWFNobTwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgSWYgeW91IGRvbid0IHdhbnQgRGlyZWN0WCB0byB1c2UgREdBLCB5b3UgY2FuIGF0IGxlYXN0CiAgICAgICAgICAgICAgICB1c2UgWCBTaGFyZWQgTWVtb3J5IGV4dGVuc2lvbnMgKFhTaG0pLiBJdCBpcyBtdWNoCiAgICAgICAgICAgICAgICBzbG93ZXIgdGhhbiBER0EsIHNpbmNlIHRoZSBhcHAgZG9lc24ndCBoYXZlIGRpcmVjdAogICAgICAgICAgICAgICAgYWNjZXNzIHRvIHRoZSBwaHlzaWNhbCBmcmFtZSBidWZmZXIsIGJ1dCB1c2luZyBzaGFyZWQKICAgICAgICAgICAgICAgIG1lbW9yeSB0byBkcmF3IHRoZSBmcmFtZSBpcyBhdCBsZWFzdCBmYXN0ZXIgdGhhbgogICAgICAgICAgICAgICAgc2VuZGluZyB0aGUgZGF0YSB0aHJvdWdoIHRoZSBzdGFuZGFyZCBYMTEgc29ja2V0LCBldmVuCiAgICAgICAgICAgICAgICB0aG91Z2ggV2luZSdzIFhTaG0gc3VwcG9ydCBpcyBzdGlsbCBrbm93biB0byBjcmFzaAogICAgICAgICAgICAgICAgc29tZXRpbWVzLgogICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PiAgICAgICAgICAKICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPkRYR3JhYjwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgSWYgeW91IGRvbid0IHVzZSBER0EsIHlvdSBtYXkgd2FudCBhbiBhbHRlcm5hdGl2ZQogICAgICAgICAgICAgICAgbWVhbnMgdG8gY29udmluY2UgdGhlIG1vdXNlIGN1cnNvciB0byBzdGF5IHdpdGhpbiB0aGUKICAgICAgICAgICAgICAgIGdhbWUgd2luZG93LiBUaGlzIG9wdGlvbiBkb2VzIHRoYXQuIE9mIGNvdXJzZSwgYXMgd2l0aAogICAgICAgICAgICAgICAgREdBLCBpZiBXaW5lIGNyYXNoZXMsIHlvdSdyZSBpbiB0cm91YmxlIChhbHRob3VnaCBub3QKICAgICAgICAgICAgICAgIGFzIGJhZGx5IGFzIGluIHRoZSBER0EgY2FzZSwgc2luY2UgeW91IGNhbiBzdGlsbCB1c2UKICAgICAgICAgICAgICAgIHRoZSBrZXlib2FyZCB0byBnZXQgb3V0IG9mIFgpLgogICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PiAgICAgICAgICAKICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPkRlc2t0b3BEb3VibGVCdWZmZXJlZDwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgQXBwbGllcyBvbmx5IGlmIHlvdSB1c2UgdGhlCiAgICAgICAgICAgICAgICA8cGFyYW1ldGVyPi0tZGVza3RvcDwvcGFyYW1ldGVyPiBjb21tYW5kLWxpbmUgb3B0aW9uCiAgICAgICAgICAgICAgICB0byBydW4gaW4gYSBkZXNrdG9wIHdpbmRvdy4gU3BlY2lmaWVzIHdoZXRoZXIgdG8KICAgICAgICAgICAgICAgIGNyZWF0ZSB0aGUgZGVza3RvcCB3aW5kb3cgd2l0aCBhIGRvdWJsZS1idWZmZXJlZAogICAgICAgICAgICAgICAgdmlzdWFsLCBzb21ldGhpbmcgbW9zdCBPcGVuR0wgZ2FtZXMgbmVlZCB0byBydW4KICAgICAgICAgICAgICAgIGNvcnJlY3RseS4KICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPlRleHRDUDwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgPCEtLSBGSVhNRTogVG8gYmUgZG9jdW1lbnRlZCAtLT4KICAgICAgICAgICAgICAgIFRvIGJlIGRvY3VtZW50ZWQuLi4KICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPlhWaWRlb1BvcnQ8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIDwhLS0gRklYTUU6IFRvIGJlIGRvY3VtZW50ZWQgLS0+CiAgICAgICAgICAgICAgICBUbyBiZSBkb2N1bWVudGVkLi4uCiAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT5TeW5jaHJvbm91czwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgPCEtLSBGSVhNRTogVG8gYmUgZG9jdW1lbnRlZCAtLT4KICAgICAgICAgICAgICAgIFRvIGJlIGRvY3VtZW50ZWQuLi4KICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICA8L3ZhcmlhYmxlbGlzdD4KICAgICAgPC9zZWN0Mj4gICAgICAgICAgCiAgICA8L3NlY3QxPgoKICAgICZyZWdpc3RyeTsKCiAgICA8c2VjdDEgaWQ9ImNkcm9tLWxhYmVscyI+CiAgICAgIDxzZWN0MWluZm8+CiAgICAgICAgPGF1dGhvcmdyb3VwPgogICAgICAgICAgPGF1dGhvcj4KICAgICAgICAgICAgPGZpcnN0bmFtZT5QZXRyPC9maXJzdG5hbWU+CiAgICAgICAgICAgIDxzdXJuYW1lPlRvbWFzZWs8L3N1cm5hbWU+CiAgICAgICAgICAgIDxhZmZpbGlhdGlvbj4KICAgICAgICAgICAgICA8YWRkcmVzcz48ZW1haWw+JmVtYWlsLXBldHItdG9tYXNlazs8L2VtYWlsPjwvYWRkcmVzcz4KICAgICAgICAgICAgPC9hZmZpbGlhdGlvbj4KICAgICAgICAgICAgPGNvbnRyaWI+Tm92IDE0IDE5OTk8L2NvbnRyaWI+CiAgICAgICAgICA8L2F1dGhvcj4KICAgICAgICAgIDxhdXRob3I+CiAgICAgICAgICAgIDxmaXJzdG5hbWU+QW5kcmVhczwvZmlyc3RuYW1lPgogICAgICAgICAgICA8c3VybmFtZT5Nb2hyPC9zdXJuYW1lPgogICAgICAgICAgICA8YWZmaWxpYXRpb24+CiAgICAgICAgICAgICAgPGFkZHJlc3M+PGVtYWlsPiZlbWFpbC1hbmRyZWFzLW1vaHI7PC9lbWFpbD48L2FkZHJlc3M+CiAgICAgICAgICAgIDwvYWZmaWxpYXRpb24+CiAgICAgICAgICAgIDxjb250cmliPkphbiAyNSAyMDAwPC9jb250cmliPgogICAgICAgICAgPC9hdXRob3I+CiAgICAgICAgPC9hdXRob3Jncm91cD4KICAgICAgPC9zZWN0MWluZm8+CgogICAgICA8dGl0bGU+RHJpdmUgbGFiZWxzIGFuZCBzZXJpYWwgbnVtYmVycyB3aXRoIHdpbmU8L3RpdGxlPgogICAgICA8cGFyYT4KICAgICAgICBXcml0dGVuIGJ5ICZuYW1lLXBldHItdG9tYXNlazsgPGVtYWlsPiZlbWFpbC1wZXRyLXRvbWFzZWs7PC9lbWFpbD4KICAgICAgICBOb3YgMTQgMTk5OQogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgogICAgICAgIENoYW5nZXMgYnkgJm5hbWUtYW5kcmVhcy1tb2hyOyA8ZW1haWw+JmVtYWlsLWFuZHJlYXMtbW9ocjs8L2VtYWlsPgogICAgICAgIEphbiAyNSAyMDAwCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgKEV4dHJhY3RlZCBmcm9tIDxmaWxlbmFtZT53aW5lL2RvY3VtZW50YXRpb24vY2Ryb20tbGFiZWxzPC9maWxlbmFtZT4pCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgVW50aWwgbm93LCB5b3VyIG9ubHkgcG9zc2liaWxpdHkgb2Ygc3BlY2lmeWluZyBkcml2ZSB2b2x1bWUKICAgICAgICBsYWJlbHMgYW5kIHNlcmlhbCBudW1iZXJzIHdhcyB0byBzZXQgdGhlbSBtYW51YWxseSBpbiB0aGUgd2luZQogICAgICAgIGNvbmZpZyBmaWxlLiBCeSBub3csIHdpbmUgY2FuIHJlYWQgdGhlbSBkaXJlY3RseSBmcm9tIHRoZQogICAgICAgIGRldmljZSBhcyB3ZWxsLiBUaGlzIG1heSBiZSB1c2VmdWwgZm9yIG1hbnkgV2luIDl4IGdhbWVzIG9yCiAgICAgICAgZm9yIHNldHVwIHByb2dyYW1zIGRpc3RyaWJ1dGVkIG9uIENELVJPTXMgdGhhdCBjaGVjayBmb3IKICAgICAgICB2b2x1bWUgbGFiZWwuCiAgICAgIDwvcGFyYT4KCiAgICAgIDxzZWN0Mj4KICAgICAgICA8dGl0bGU+V2hhdCdzIFN1cHBvcnRlZD88L3RpdGxlPgoKICAgICAgICA8aW5mb3JtYWx0YWJsZSBmcmFtZT0iYWxsIj4KICAgICAgICAgIDx0Z3JvdXAgY29scz0iMyI+CiAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5PkZpbGUgU3lzdGVtPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5UeXBlczwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+Q29tbWVudDwvZW50cnk+CiAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgIDx0Ym9keT4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5PkZBVCBzeXN0ZW1zPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5oZCwgZmxvcHB5PC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5yZWFkcyBsYWJlbHMgYW5kIHNlcmlhbCBudW1iZXJzPC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5PklTTzk2NjA8L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PmNkcm9tPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5yZWFkcyBsYWJlbHMgYW5kIHNlcmlhbCBudW1iZXJzIChub3QgbWl4ZWQtbW9kZSBDRHMgeWV0ICEpPC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgIDwvdGdyb3VwPgogICAgICAgIDwvaW5mb3JtYWx0YWJsZT4KCiAgICAgIDwvc2VjdDI+CgogICAgICA8c2VjdDI+CiAgICAgICAgPHRpdGxlPkhvdyBUbyBTZXQgVXA/PC90aXRsZT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFJlYWRpbmcgbGFiZWxzIGFuZCBzZXJpYWwgbnVtYmVycyBqdXN0IHdvcmtzIGF1dG9tYWdpY2FsbHkKICAgICAgICAgIGlmIHlvdSBzcGVjaWZ5IGEgPGxpdGVyYWw+RGV2aWNlPTwvbGl0ZXJhbD4gbGluZSBpbiB0aGUKICAgICAgICAgIFtEcml2ZSBYXSBzZWN0aW9uIGluIHlvdXIgPGZpbGVuYW1lPn4vLndpbmUvY29uZmlnPC9maWxlbmFtZT4uCiAgICAgICAgICBOb3RlIHRoYXQgdGhlIGRldmljZSBoYXMgdG8gZXhpc3QgYW5kIG11c3QgYmUgYWNjZXNzaWJsZSBpZgogICAgICAgICAgeW91IGRvIHRoaXMsIHRob3VnaC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB5b3UgZG9uJ3QgZG8gdGhhdCwgdGhlbiB5b3Ugc2hvdWxkIGdpdmUgZml4ZWQKICAgICAgICAgIDxsaXRlcmFsPiJMYWJlbCIgPTwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+IlNlcmlhbCIgPTwvbGl0ZXJhbD4KICAgICAgICAgIGVudHJpZXMgaW4gPGZpbGVuYW1lPn4uL3dpbmUvY29uZmlnPC9maWxlbmFtZT4sIGFzIFdpbmUgcmV0dXJucwogICAgICAgICAgdGhlc2UgZW50cmllcyBpbnN0ZWFkIGlmIG5vIGRldmljZSBpcyBnaXZlbi4gSWYgdGhleSBkb24ndAogICAgICAgICAgZXhpc3QsIHRoZW4gV2luZSB3aWxsIHJldHVybiBkZWZhdWx0IHZhbHVlcyAobGFiZWwKICAgICAgICAgIDxsaXRlcmFsPkRyaXZlIFg8L2xpdGVyYWw+IGFuZCBzZXJpYWwKICAgICAgICAgIDxsaXRlcmFsPjEyMzQ1Njc4PC9saXRlcmFsPikuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgeW91IHdhbnQgdG8gZ2l2ZSBhIDxsaXRlcmFsPiJEZXZpY2UiID08L2xpdGVyYWw+IGVudHJ5CiAgICAgICAgICA8ZW1waGFzaXM+b25seTwvZW1waGFzaXM+IGZvciBkcml2ZSByYXcgc2VjdG9yIGFjY2Vzc2VzLAoJICBidXQgbm90IGZvciByZWFkaW5nIHRoZSB2b2x1bWUgaW5mbyBmcm9tIHRoZSBkZXZpY2UgKGkuZS4geW91IHdhbnQKCSAgYSA8ZW1waGFzaXM+Zml4ZWQ8L2VtcGhhc2lzPiwgcHJlY29uZmlndXJlZCBsYWJlbCksIHlvdSBuZWVkCiAgICAgICAgICB0byBzcGVjaWZ5IDxsaXRlcmFsPiJSZWFkVm9sSW5mbyIgPSAiMCI8L2xpdGVyYWw+IHRvIHRlbGwgV2luZQogICAgICAgICAgdG8gc2tpcCB0aGUgdm9sdW1lIHJlYWRpbmcuCiAgICAgICAgPC9wYXJhPgogICAgICA8L3NlY3QyPgoKICAgICAgPHNlY3QyPgogICAgICAgIDx0aXRsZT5FWEFNUExFUzwvdGl0bGU+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBIZXJlJ3MgYSBzaW1wbGUgZXhhbXBsZSBvZiBjZHJvbSBhbmQgZmxvcHB5OyBsYWJlbHMgd2lsbCBiZQogICAgICAgICAgcmVhZCBmcm9tIHRoZSBkZXZpY2Ugb24gYm90aCBjZHJvbSBhbmQgZmxvcHB5OyBzZXJpYWwKICAgICAgICAgIG51bWJlcnMgb24gZmxvcHB5IG9ubHk6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxzY3JlZW4+CltEcml2ZSBBXQoiUGF0aCIgPSAiL21udC9mbG9wcHkiCiJUeXBlIiA9ICJmbG9wcHkiCiJEZXZpY2UiID0gIi9kZXYvZmQwIgoiRmlsZXN5c3RlbSIgPSAibXNkb3MiCgpbRHJpdmUgUl0KIlBhdGgiID0gIi9tbnQvY2Ryb20iCiJUeXBlIiA9ICJjZHJvbSIKIkRldmljZSIgPSAiL2Rldi9oZGExIgoiRmlsZXN5c3RlbSIgPSAid2luOTUiCiAgICAgICAgPC9zY3JlZW4+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBIZXJlJ3MgYW4gZXhhbXBsZSBvZiBvdmVycmlkaW5nIHRoZSBDRC1ST00gbGFiZWw6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxzY3JlZW4+CltEcml2ZSBKXQoiUGF0aCIgPSAiL21udC9jZHJvbSIKIlR5cGUiID0gImNkcm9tIgoiTGFiZWwiID0gIlgyMzRHQ0RTRSIKOyBub3RlIHRoYXQgdGhlIGRldmljZSBpc24ndCByZWFsbHkgbmVlZGVkIGhlcmUgYXMgd2UgaGF2ZSBhIGZpeGVkIGxhYmVsCiJEZXZpY2UiID0gIi9kZXYvY2Ryb20iCiJGaWxlc3lzdGVtIiA9ICJtc2RvcyIKICAgICAgICA8L3NjcmVlbj4KICAgICAgPC9zZWN0Mj4KCiAgICAgIDxzZWN0Mj4KICAgICAgICA8dGl0bGU+VG9kbyAvIE9wZW4gSXNzdWVzPC90aXRsZT4KICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICBUaGUgY2Ryb20gbGFiZWwgY2FuIGJlIHJlYWQgb25seSBpZiB0aGUgZGF0YSB0cmFjayBvZgogICAgICAgICAgICAgIHRoZSBkaXNrIHJlc2lkZXMgaW4gdGhlIGZpcnN0IHRyYWNrIGFuZCB0aGUgY2Ryb20gaXMKICAgICAgICAgICAgICBpc285NjYwLgogICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgIEJldHRlciBjaGVja2luZyBmb3IgRkFUIHN1cGVyYmxvY2sgKGl0IG5vdyBjaGVja3Mgb25seQogICAgICAgICAgICAgIG9uZSBieXRlKS4gPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgU3VwcG9ydCBmb3IgbGFiZWxzL3NlcmlhbCBudW1zIFdSSVRJTkcuCiAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgQ2FuIHRoZSBsYWJlbCBiZSBsb25nZXIgdGhhbiAxMSBjaGFycz8gKGlzbzk2NjAgaGFzIDMyCiAgICAgICAgICAgICAgY2hhcnMpLgogICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgIFdoYXQgYWJvdXQgcmVhZGluZyBleHQyIHZvbHVtZSBsYWJlbD8gLi4uLgogICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgIDwvc2VjdDI+CiAgICA8L3NlY3QxPgoKICAgIDxzZWN0MSBpZD0iZGxsLW92ZXJyaWRlcyI+CiAgICAgIDx0aXRsZT5EbGwgT3ZlcnJpZGVzPC90aXRsZT4KCiAgICAgIDxwYXJhPgogICAgICAgIFdyaXR0ZW4gYnkgJm5hbWUtb3ZlLWthYXZlbjsgPGVtYWlsPiZlbWFpbC1vdmUta2FhdmVuOzwvZW1haWw+CiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgKEV4dHJhY3RlZCBmcm9tIDxmaWxlbmFtZT53aW5lL2RvY3VtZW50YXRpb24vZGxsLW92ZXJyaWRlczwvZmlsZW5hbWU+KQogICAgICA8L3BhcmE+CgogICAgICA8cGFyYT4KICAgICAgICBUaGUgPGZpbGVuYW1lPndpbmUuY29uZjwvZmlsZW5hbWU+IGRpcmVjdGl2ZXMgW0RsbERlZmF1bHRzXQogICAgICAgIGFuZCBbRGxsT3ZlcnJpZGVzXSBhcmUgdGhlIHN1YmplY3Qgb2Ygc29tZSBjb25mdXNpb24uIFRoZQogICAgICAgIG92ZXJhbGwgcHVycG9zZSBvZiBtb3N0IG9mIHRoZXNlIGRpcmVjdGl2ZXMgYXJlIGNsZWFyIGVub3VnaCwKICAgICAgICB0aG91Z2ggLSBnaXZlbiBhIGNob2ljZSwgc2hvdWxkIFdpbmUgdXNlIGl0cyBvd24gYnVpbHQtaW4KICAgICAgICBETExzLCBvciBzaG91bGQgaXQgdXNlIDxmaWxlbmFtZT4uRExMPC9maWxlbmFtZT4gZmlsZXMgZm91bmQKICAgICAgICBpbiBhbiBleGlzdGluZyBXaW5kb3dzIGluc3RhbGxhdGlvbj8gVGhpcyBkb2N1bWVudCBleHBsYWlucwogICAgICAgIGhvdyB0aGlzIGZlYXR1cmUgd29ya3MuCiAgICAgIDwvcGFyYT4KCiAgICAgIDxzZWN0Mj4KICAgICAgICA8dGl0bGU+RExMIHR5cGVzPC90aXRsZT4KICAgICAgICA8dmFyaWFibGVsaXN0PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+bmF0aXZlPC90ZXJtPgogICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgQSAibmF0aXZlIiBETEwgaXMgYSA8ZmlsZW5hbWU+LkRMTDwvZmlsZW5hbWU+IGZpbGUKICAgICAgICAgICAgICAgIHdyaXR0ZW4gZm9yIHRoZSByZWFsIE1pY3Jvc29mdCBXaW5kb3dzLgogICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+YnVpbHRpbjwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgIEEgImJ1aWx0aW4iIERMTCBpcyBhIFdpbmUgRExMLiBUaGVzZSBjYW4gZWl0aGVyIGJlIGEKICAgICAgICAgICAgICAgIHBhcnQgb2YgPGZpbGVuYW1lPmxpYndpbmUuc288L2ZpbGVuYW1lPiwgb3IgbW9yZQogICAgICAgICAgICAgICAgcmVjZW50bHksIGluIGEgc3BlY2lhbCA8ZmlsZW5hbWU+LnNvPC9maWxlbmFtZT4gZmlsZQogICAgICAgICAgICAgICAgdGhhdCBXaW5lIGlzIGFibGUgdG8gbG9hZCBvbiBkZW1hbmQuCiAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT5lbGZkbGw8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICBBbiAiZWxmZGxsIiBpcyBhIFdpbmUgPGZpbGVuYW1lPi5zbzwvZmlsZW5hbWU+IGZpbGUKICAgICAgICAgICAgICAgIHdpdGggYSBzcGVjaWFsIFdpbmRvd3MtbGlrZSBmaWxlIHN0cnVjdHVyZSB0aGF0IGlzIGFzCiAgICAgICAgICAgICAgICBjbG9zZSB0byBXaW5kb3dzIGFzIHBvc3NpYmxlLCBhbmQgdGhhdCBjYW4gYWxzbwogICAgICAgICAgICAgICAgc2VhbWxlc3NseSBsaW5rIGR5bmFtaWNhbGx5IHdpdGggIm5hdGl2ZSIgRExMcywgYnkKICAgICAgICAgICAgICAgIHVzaW5nIHNwZWNpYWwgRUxGIGxvYWRlciBhbmQgbGlua2VyIHRyaWNrcy4gQmVydGhvCiAgICAgICAgICAgICAgICBTdHVsdGllbnMgZGlkIHNvbWUgd29yayBvbiB0aGlzLCBidXQgdGhpcyBmZWF0dXJlIGhhcwogICAgICAgICAgICAgICAgbm90IHlldCBiZWVuIG1lcmdlZCBiYWNrIGludG8gV2luZSAoYmVjYXVzZSBvZgogICAgICAgICAgICAgICAgcG9saXRpY2FsIHJlYXNvbnMgYW5kIGxhY2sgb2YgdGltZSksIHNvIHRoaXMgRExMIHR5cGUKICAgICAgICAgICAgICAgIGRvZXMgbm90IGV4aXN0IGluIHRoZSBvZmZpY2lhbCBXaW5lIGF0IHRoaXMgdGltZS4gSW4KICAgICAgICAgICAgICAgIHRoZSBtZWFudGltZSwgdGhlICJidWlsdGluIiBETEwgdHlwZSBnYWluZWQgc29tZSBvZgogICAgICAgICAgICAgICAgdGhlIGZlYXR1cmVzIG9mIGVsZmRsbHMgKHN1Y2ggYXMgZHluYW1pYyBsb2FkaW5nKSwgc28KICAgICAgICAgICAgICAgIGl0J3MgcG9zc2libGUgdGhhdCAiZWxmZGxsIiBmdW5jdGlvbmFsaXR5IHdpbGwgYmUKICAgICAgICAgICAgICAgIGZvbGRlZCBpbnRvICJidWlsdGluIiBhdCBzb21lIHBvaW50LgogICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+c288L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICBBIG5hdGl2ZSBVbml4IDxmaWxlbmFtZT4uc288L2ZpbGVuYW1lPiBmaWxlLCB3aXRoCiAgICAgICAgICAgICAgICBjYWxsaW5nIGNvbnZlbnRpb24gY29udmVyc2lvbiB0aHVua3MgZ2VuZXJhdGVkIG9uIHRoZQogICAgICAgICAgICAgICAgZmx5IGFzIHRoZSBsaWJyYXJ5IGlzIGxvYWRlZC4gVGhpcyBpcyBtb3N0bHkgdXNlZnVsCiAgICAgICAgICAgICAgICBmb3IgbGlicmFyaWVzIHN1Y2ggYXMgImdsaWRlIiB0aGF0IGhhdmUgZXhhY3RseSB0aGUKICAgICAgICAgICAgICAgIHNhbWUgQVBJIG9uIGJvdGggV2luZG93cyBhbmQgVW5peC4KICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICA8L3ZhcmlhYmxlbGlzdD4gICAgICAgICAgCiAgICAgIDwvc2VjdDI+CgogICAgICA8c2VjdDI+CiAgICAgICAgPHRpdGxlPlRoZSBbRGxsRGVmYXVsdHNdIHNlY3Rpb248L3RpdGxlPgogICAgICAgIDx2YXJpYWJsZWxpc3Q+CiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT5EZWZhdWx0TG9hZE9yZGVyPC90ZXJtPgogICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgVGhpcyBzcGVjaWZpZXMgaW4gd2hhdCBvcmRlciBXaW5lIHNob3VsZCBzZWFyY2ggZm9yCiAgICAgICAgICAgICAgICBhdmFpbGFibGUgRExMIHR5cGVzLCBpZiB0aGUgRExMIGluIHF1ZXN0aW9uIHdhcyBub3QKICAgICAgICAgICAgICAgIGZvdW5kIGluIHRoZSBbRGxsT3ZlcnJpZGVzXSBzZWN0aW9uLgogICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgIDwvdmFyaWFibGVsaXN0PgogICAgICA8L3NlY3QyPgoKICAgICAgPHNlY3QyPgogICAgICAgIDx0aXRsZT5UaGUgW0RsbFBhaXJzXSBzZWN0aW9uPC90aXRsZT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEF0IG9uZSB0aW1lLCB0aGVyZSB3YXMgYSBzZWN0aW9uIGNhbGxlZCBbRGxsUGFpcnNdIGluIHRoZQogICAgICAgICAgZGVmYXVsdCBjb25maWd1cmF0aW9uIGZpbGUsIGJ1dCB0aGlzIGhhcyBiZWVuIG9ic29sZXRlZAogICAgICAgICAgYmVjYXVzZSB0aGUgcGFpcmluZyBpbmZvcm1hdGlvbiBoYXMgbm93IGJlZW4gZW1iZWRkZWQgaW50bwogICAgICAgICAgV2luZSBpdHNlbGYuIChUaGUgcHVycG9zZSBvZiB0aGlzIHNlY3Rpb24gd2FzIG1lcmVseSB0byBiZQogICAgICAgICAgYWJsZSB0byBpc3N1ZSB3YXJuaW5ncyBpZiB0aGUgdXNlciBhdHRlbXB0ZWQgdG8gcGFpcgogICAgICAgICAgY29kZXBlbmRlbnQgMTYtYml0LzMyLWJpdCBETExzIG9mIGRpZmZlcmVudCB0eXBlcy4pIElmIHlvdQogICAgICAgICAgc3RpbGwgaGF2ZSB0aGlzIGluIHlvdXIgPGZpbGVuYW1lPndpbmUuY29uZjwvZmlsZW5hbWU+IG9yCiAgICAgICAgICA8ZmlsZW5hbWU+fi8ud2luZS9jb25maWc8L2ZpbGVuYW1lPiwgeW91IG1heSBzYWZlbHkgZGVsZXRlIGl0LgogICAgICAgIDwvcGFyYT4KICAgICAgPC9zZWN0Mj4KCiAgICAgIDxzZWN0Mj4KICAgICAgICA8dGl0bGU+VGhlIFtEbGxPdmVycmlkZXNdIHNlY3Rpb248L3RpdGxlPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhpcyBzZWN0aW9uIHNwZWNpZmllcyBob3cgeW91IHdhbnQgc3BlY2lmaWMgRExMcyB0byBiZQogICAgICAgICAgaGFuZGxlZCwgaW4gcGFydGljdWxhciB3aGV0aGVyIHlvdSB3YW50IHRvIHVzZSAibmF0aXZlIiBETExzCiAgICAgICAgICBvciBub3QsIGlmIHlvdSBoYXZlIHNvbWUgZnJvbSBhIHJlYWwgV2luZG93cyBjb25maWd1cmF0aW9uLgogICAgICAgICAgQmVjYXVzZSBidWlsdGlucyBkbyBub3QgbWl4IHNlYW1sZXNzbHkgd2l0aCBuYXRpdmUgRExMcyB5ZXQsCiAgICAgICAgICBjZXJ0YWluIERMTCBkZXBlbmRlbmNpZXMgbWF5IGJlIHByb2JsZW1hdGljLCBidXQgd29ya2Fyb3VuZHMKICAgICAgICAgIGV4aXN0IGluIFdpbmUgZm9yIG1hbnkgcG9wdWxhciBETEwgY29uZmlndXJhdGlvbnMuIEFsc28gc2VlCiAgICAgICAgICBXV04ncyBbMTZdU3RhdHVzIFBhZ2UgdG8gZmlndXJlIG91dCBob3cgd2VsbCB5b3VyIGZhdm9yaXRlCiAgICAgICAgICBETEwgaXMgaW1wbGVtZW50ZWQgaW4gV2luZS4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJdCBpcyBvZiBjb3Vyc2UgYWxzbyBwb3NzaWJsZSB0byBvdmVycmlkZSB0aGVzZSBzZXR0aW5ncyBieQogICAgICAgICAgZXhwbGljdGx5IHVzaW5nIFdpbmUncyA8cGFyYW1ldGVyPi0tZGxsPC9wYXJhbWV0ZXI+CiAgICAgICAgICBjb21tYW5kLWxpbmUgb3B0aW9uIChzZWUgdGhlIG1hbiBwYWdlIGZvciBkZXRhaWxzKS4gIFNvbWUKICAgICAgICAgIGhpbnRzIGZvciBjaG9vc2luZyB5b3VyIG9wdGltYWwgY29uZmlndXJhdGlvbiAobGlzdGVkIGJ5CiAgICAgICAgICAxNi8zMi1iaXQgRExMIHBhaXIpOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8dmFyaWFibGVsaXN0PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+a3JubDM4Niwga2VybmVsMzI8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICBOYXRpdmUgdmVyc2lvbnMgb2YgdGhlc2Ugd2lsbCBuZXZlciB3b3JrLCBzbyBkb24ndCB0cnkuIExlYXZlCiAgICAgICAgICAgICAgICBhdCA8bGl0ZXJhbD5idWlsdGluPC9saXRlcmFsPi4KICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPmdkaSwgZ2RpMzI8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICBHcmFwaGljcyBEZXZpY2UgSW50ZXJmYWNlLiBObyBlZmZvcnQgaGFzIGJlZW4gbWFkZSBhdCB0cnlpbmcgdG8KICAgICAgICAgICAgICAgIHJ1biBuYXRpdmUgR0RJLiBMZWF2ZSBhdCA8bGl0ZXJhbD5idWlsdGluPC9saXRlcmFsPi4KICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4gICAgICAgICAgCiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT51c2VyLCB1c2VyMzI8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICBXaW5kb3cgbWFuYWdlbWVudCBhbmQgc3RhbmRhcmQgY29udHJvbHMuIEl0IHdhcwogICAgICAgICAgICAgICAgcG9zc2libGUgdG8gdXNlIFdpbjk1J3MgPGxpdGVyYWw+bmF0aXZlPC9saXRlcmFsPgogICAgICAgICAgICAgICAgdmVyc2lvbnMgYXQgc29tZSBwb2ludCAoaWYgYWxsIG90aGVyIERMTHMgdGhhdCBkZXBlbmQKICAgICAgICAgICAgICAgIG9uIGl0LCBzdWNoIGFzIGNvbWN0bDMyIGFuZCBjb21kbGczMiwgd2VyZSBhbHNvIHJ1bgogICAgICAgICAgICAgICAgPGxpdGVyYWw+bmF0aXZlPC9saXRlcmFsPikuIEhvd2V2ZXIsIHRoaXMgaXMgbm8gbG9uZ2VyCiAgICAgICAgICAgICAgICBwb3NzaWJsZSBhZnRlciB0aGUgQWRkcmVzcyBTcGFjZSBTZXBhcmF0aW9uLCBzbyBsZWF2ZQogICAgICAgICAgICAgICAgYXQgPGxpdGVyYWw+YnVpbHRpbjwvbGl0ZXJhbD4uCiAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT5udGRsbDwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgIE5UIGtlcm5lbCBBUEkuIEFsdGhvdWdoIGJhZGx5IGRvY3VtZW50ZWQsIHRoZQogICAgICAgICAgICAgICAgPGxpdGVyYWw+bmF0aXZlPC9saXRlcmFsPiB2ZXJzaW9uIG9mIHRoaXMgd2lsbCBuZXZlcgogICAgICAgICAgICAgICAgd29yay4gTGVhdmUgYXQgPGxpdGVyYWw+YnVpbHRpbjwvbGl0ZXJhbD4uCiAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT53MzJza3JubDwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgIFdpbjMycyAoZm9yIFdpbjMueCkuIFRoZSA8bGl0ZXJhbD5uYXRpdmU8L2xpdGVyYWw+CiAgICAgICAgICAgICAgICB2ZXJzaW9uIHdpbGwgcHJvYmFibHkgbmV2ZXIgd29yay4gTGVhdmUgYXQKICAgICAgICAgICAgICAgIDxsaXRlcmFsPmJ1aWx0aW48L2xpdGVyYWw+LgogICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+d293MzI8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICBXaW4xNiBzdXBwb3J0IGxpYnJhcnkgZm9yIE5ULiBUaGUKICAgICAgICAgICAgICAgIDxsaXRlcmFsPm5hdGl2ZTwvbGl0ZXJhbD4gdmVyc2lvbiB3aWxsIHByb2JhYmx5IG5ldmVyCiAgICAgICAgICAgICAgICB3b3JrLiBMZWF2ZSBhdCA8bGl0ZXJhbD5idWlsdGluPC9saXRlcmFsPi4KICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPnN5c3RlbTwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgIFdpbjE2IGtlcm5lbCBzdHVmZi4gV2lsbCBuZXZlciB3b3JrCiAgICAgICAgICAgICAgICA8bGl0ZXJhbD5uYXRpdmU8L2xpdGVyYWw+LiBMZWF2ZSBhdAogICAgICAgICAgICAgICAgPGxpdGVyYWw+YnVpbHRpbjwvbGl0ZXJhbD4uCiAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+ICAgICAgICAgIAogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+ZGlzcGxheTwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgIERpc3BsYXkgZHJpdmVyLiBEZWZpbml0ZWx5IGxlYXZlIGF0IDxsaXRlcmFsPmJ1aWx0aW48L2xpdGVyYWw+LgogICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+dG9vbGhlbHA8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICBUb29sIGhlbHBlciByb3V0aW5lcy4gVGhpcyBpcyByYXJlbHkgYSBzb3VyY2Ugb2YgcHJvYmxlbXMuCiAgICAgICAgICAgICAgICBMZWF2ZSBhdCA8bGl0ZXJhbD5idWlsdGluPC9saXRlcmFsPi4KICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPnZlciwgdmVyc2lvbjwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgIFZlcnNpb25pbmcuIFNlbGRvbSB1c2VmdWwgdG8gbWVzcyB3aXRoLgogICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+YWR2YXBpMzI8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICBSZWdpc3RyeSBhbmQgc2VjdXJpdHkgZmVhdHVyZXMuIFRyeWluZyB0aGUKICAgICAgICAgICAgICAgIDxsaXRlcmFsPm5hdGl2ZTwvbGl0ZXJhbD4gdmVyc2lvbiBvZiB0aGlzIG1heSBvciBtYXkKICAgICAgICAgICAgICAgIG5vdCB3b3JrLgogICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+Y29tbWRsZywgY29tZGxnMzI8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICBDb21tb24gRGlhbG9ncywgc3VjaCBhcyBjb2xvciBwaWNrZXIsIGZvbnQgZGlhbG9nLAogICAgICAgICAgICAgICAgcHJpbnQgZGlhbG9nLCBvcGVuL3NhdmUgZGlhbG9nLCBldGMuIEl0IGlzIHNhZmUgdG8gdHJ5CiAgICAgICAgICAgICAgICA8bGl0ZXJhbD5uYXRpdmU8L2xpdGVyYWw+LgogICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+Y29tbWN0cmwsIGNvbWN0bDMyPC90ZXJtPgogICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgQ29tbW9uIENvbnRyb2xzLiBUaGlzIGlzIHRvb2xiYXJzLCBzdGF0dXMgYmFycywgbGlzdCBjb250cm9scywKICAgICAgICAgICAgICAgIHRoZSB3b3Jrcy4gSXQgaXMgc2FmZSB0byB0cnkgPGxpdGVyYWw+bmF0aXZlPC9saXRlcmFsPi4KICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPnNoZWxsLCBzaGVsbDMyPC90ZXJtPgogICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgU2hlbGwgaW50ZXJmYWNlIChkZXNrdG9wLCBmaWxlc3lzdGVtLCBldGMpLiBCZWluZyBvbmUgb2YgdGhlCiAgICAgICAgICAgICAgICBtb3N0IHVuZG9jdW1lbnRlZCBwaWVjZXMgb2YgV2luZG93cywgeW91IG1heSBoYXZlIGx1Y2sgd2l0aCB0aGUKICAgICAgICAgICAgICAgIDxsaXRlcmFsPm5hdGl2ZTwvbGl0ZXJhbD4gdmVyc2lvbiwgc2hvdWxkIHlvdSBuZWVkIGl0LgogICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PiAgICAgICAgICAKICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPndpbnNvY2ssIHdzb2NrMzI8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICBXaW5kb3dzIFNvY2tldHMuIFRoZSA8bGl0ZXJhbD5uYXRpdmU8L2xpdGVyYWw+IHZlcnNpb24KICAgICAgICAgICAgICAgIHdpbGwgbm90IHdvcmsgdW5kZXIgV2luZSwgc28gbGVhdmUgYXQKICAgICAgICAgICAgICAgIDxsaXRlcmFsPmJ1aWx0aW48L2xpdGVyYWw+LgogICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+aWNtcDwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgIElDTVAgcm91dGluZXMgZm9yIHdzb2NrMzIuIEFzIHdpdGggd3NvY2szMiwgbGVhdmUgYXQKICAgICAgICAgICAgICAgIDxsaXRlcmFsPmJ1aWx0aW48L2xpdGVyYWw+LgogICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+bXByPC90ZXJtPgogICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgVGhlIDxsaXRlcmFsPm5hdGl2ZTwvbGl0ZXJhbD4gdmVyc2lvbiBtYXkgbm90IHdvcmsgZHVlCiAgICAgICAgICAgICAgICB0byB0aHVua2luZyBpc3N1ZXMuIExlYXZlIGF0CiAgICAgICAgICAgICAgICA8bGl0ZXJhbD5idWlsdGluPC9saXRlcmFsPi4KICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPmx6ZXhwYW5kLCBsejMyPC90ZXJtPgogICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgTGVtcGVsLVppdiBkZWNvbXByZXNzaW9uLiBXaW5lJ3MKICAgICAgICAgICAgICAgIDxsaXRlcmFsPmJ1aWx0aW48L2xpdGVyYWw+IHZlcnNpb24gb3VnaHQgdG8gd29yayBmaW5lLgogICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+d2luYXNwaSwgd25hc3BpMzI8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICBBZHZhbmNlZCBTQ1NJIFBlcmlwaGVyYWwgSW50ZXJmYWNlLiBUaGUKICAgICAgICAgICAgICAgIDxsaXRlcmFsPm5hdGl2ZTwvbGl0ZXJhbD4gdmVyc2lvbiB3aWxsIHByb2JhYmx5IG5ldmVyCiAgICAgICAgICAgICAgICB3b3JrLiBMZWF2ZSBhdCA8bGl0ZXJhbD5idWlsdGluPC9saXRlcmFsPi4KICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPmNydGRsbDwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgIEMgUnVudGltZSBsaWJyYXJ5LiBUaGUgPGxpdGVyYWw+bmF0aXZlPC9saXRlcmFsPgogICAgICAgICAgICAgICAgdmVyc2lvbiB3aWxsIGVhc2lseSB3b3JrIGJldHRlciB0aGFuIFdpbmUncyBvbiB0aGlzCiAgICAgICAgICAgICAgICBvbmUuCiAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT53aW5zcG9vbC5kcnY8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICBQcmludGVyIHNwb29sZXIuIFlvdSBhcmUgbm90IGxpa2VseSB0byBoYXZlIG1vcmUgbHVjawogICAgICAgICAgICAgICAgd2l0aCB0aGUgPGxpdGVyYWw+bmF0aXZlPC9saXRlcmFsPiB2ZXJzaW9uLgogICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+ZGRyYXc8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICBEaXJlY3REcmF3L0RpcmVjdDNELiBTaW5jZSBXaW5lIGRvZXMgbm90IGltcGxlbWVudCB0aGUKICAgICAgICAgICAgICAgIERpcmVjdFggSEFMLCB0aGUgPGxpdGVyYWw+bmF0aXZlPC9saXRlcmFsPiB2ZXJzaW9uCiAgICAgICAgICAgICAgICB3aWxsIG5vdCB3b3JrIGF0IHRoaXMgdGltZS4KICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPmRpbnB1dDwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgIERpcmVjdElucHV0LiBSdW5uaW5nIHRoaXMgPGxpdGVyYWw+bmF0aXZlPC9saXRlcmFsPgogICAgICAgICAgICAgICAgbWF5IG9yIG1heSBub3Qgd29yay4KICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4gICAgICAgICAgCiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT5kc291bmQ8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICBEaXJlY3RTb3VuZC4gSXQgbWF5IGJlIHBvc3NpYmxlIHRvIHJ1biB0aGlzCiAgICAgICAgICAgICAgICA8bGl0ZXJhbD5uYXRpdmU8L2xpdGVyYWw+LCBidXQgZG9uJ3QgY291bnQgb24gaXQuCiAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT5kcGxheS9kcGxheXg8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICBEaXJlY3RQbGF5LiBUaGUgPGxpdGVyYWw+bmF0aXZlPC9saXRlcmFsPiB2ZXJzaW9uCiAgICAgICAgICAgICAgICBvdWdodCB0byB3b3JrIGJlc3Qgb24gdGhpcywgaWYgYXQgYWxsLgogICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+bW1zeXN0ZW0sIHdpbm1tPC90ZXJtPgogICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgTXVsdGltZWRpYSBzeXN0ZW0uIFRoZSA8bGl0ZXJhbD5uYXRpdmU8L2xpdGVyYWw+CiAgICAgICAgICAgICAgICB2ZXJzaW9uIGlzIG5vdCBsaWtlbHkgdG8gd29yay4gTGVhdmUgYXQKICAgICAgICAgICAgICAgIDxsaXRlcmFsPmJ1aWx0aW48L2xpdGVyYWw+LgogICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+bXNhY20sIG1zYWNtMzI8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICBBdWRpbyBDb21wcmVzc2lvbiBNYW5hZ2VyLiBUaGUKICAgICAgICAgICAgICAgIDxsaXRlcmFsPmJ1aWx0aW48L2xpdGVyYWw+IHZlcnNpb24gd29ya3MgYmVzdCwgaWYgeW91CiAgICAgICAgICAgICAgICBzZXQgbXNhY20uZHJ2IHRvIHRoZSBzYW1lLgogICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+bXN2aWRlbywgbXN2ZnczMjwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgIFZpZGVvIGZvciBXaW5kb3dzLiBJdCBpcyBzYWZlIChhbmQgcmVjb21tZW5kZWQpIHRvIHRyeQogICAgICAgICAgICAgICAgPGxpdGVyYWw+bmF0aXZlPC9saXRlcmFsPi4KICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPm1jaWNkYS5kcnY8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICBDRCBBdWRpbyBNQ0kgZHJpdmVyLgogICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+bWNpc2VxLmRydjwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgIE1JREkgU2VxdWVuY2VyIE1DSSBkcml2ZXIgKDxmaWxlbmFtZT4uTUlEPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgIHBsYXliYWNrKS4KICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPm1jaXdhdmUuZHJ2PC90ZXJtPgogICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgV2F2ZSBhdWRpbyBNQ0kgZHJpdmVyICg8ZmlsZW5hbWU+LldBVjwvZmlsZW5hbWU+IHBsYXliYWNrKS4KICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPm1jaWF2aS5kcnY8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICBBVkkgTUNJIGRyaXZlciAoPGZpbGVuYW1lPi5BVkk8L2ZpbGVuYW1lPiB2aWRlbwogICAgICAgICAgICAgICAgcGxheWJhY2spLiBCZXN0IHRvIHVzZSA8bGl0ZXJhbD5uYXRpdmU8L2xpdGVyYWw+LgogICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+bWNpYW5pbS5kcnY8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICBBbmltYXRpb24gTUNJIGRyaXZlci4KICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPm1zYWNtLmRydjwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgIEF1ZGlvIENvbXByZXNzaW9uIE1hbmFnZXIuIFNldCB0byBzYW1lIGFzIG1zYWNtMzIuCiAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT5taWRpbWFwLmRydjwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgIE1JREkgTWFwcGVyLgogICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+d3Byb2NzPC90ZXJtPgogICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgVGhpcyBpcyBhIHBzZXVkby1ETEwgdXNlZCBieSBXaW5lIGZvciB0aHVua2luZwogICAgICAgICAgICAgICAgcHVycG9zZXMuIEEgPGxpdGVyYWw+bmF0aXZlPC9saXRlcmFsPiB2ZXJzaW9uIG9mIHRoaXMKICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXhpc3QuCiAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgPC92YXJpYWJsZWxpc3Q+ICAgICAgICAgIAogICAgICA8L3NlY3QyPgogICAgPC9zZWN0MT4KCiAgICA8c2VjdDEgaWQ9ImtleWJvYXJkIj4KICAgICAgPHRpdGxlPktleWJvYXJkPC90aXRsZT4KCiAgICAgIDxwYXJhPgogICAgICAgIFdyaXR0ZW4gYnkgJm5hbWUtb3ZlLWthYXZlbjsgPGVtYWlsPiZlbWFpbC1vdmUta2FhdmVuOzwvZW1haWw+CiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgKEV4dHJhY3RlZCBmcm9tIDxmaWxlbmFtZT53aW5lL2RvY3VtZW50YXRpb24va2V5Ym9hcmQ8L2ZpbGVuYW1lPikKICAgICAgPC9wYXJhPgoKICAgICAgPHBhcmE+CiAgICAgICAgV2luZSBub3cgbmVlZHMgdG8ga25vdyBhYm91dCB5b3VyIGtleWJvYXJkIGxheW91dC4gVGhpcwogICAgICAgIHJlcXVpcmVtZW50IGNvbWVzIGZyb20gYSBuZWVkIGZyb20gbWFueSBhcHBzIHRvIGhhdmUgdGhlCiAgICAgICAgY29ycmVjdCBzY2FuY29kZXMgYXZhaWxhYmxlLCBzaW5jZSB0aGV5IHJlYWQgdGhlc2UgZGlyZWN0bHksCiAgICAgICAgaW5zdGVhZCBvZiBqdXN0IHRha2luZyB0aGUgY2hhcmFjdGVycyByZXR1cm5lZCBieSB0aGUgWAogICAgICAgIHNlcnZlci4gVGhpcyBtZWFucyB0aGF0IFdpbmUgbm93IG5lZWRzIHRvIGhhdmUgYSBtYXBwaW5nIGZyb20KICAgICAgICBYIGtleXMgdG8gdGhlIHNjYW5jb2RlcyB0aGVzZSBhcHBsaWNhdGlvbnMgZXhwZWN0LgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgogICAgICAgIE9uIHN0YXJ0dXAsIFdpbmUgd2lsbCB0cnkgdG8gcmVjb2duaXplIHRoZSBhY3RpdmUgWCBsYXlvdXQgYnkKICAgICAgICBzZWVpbmcgaWYgaXQgbWF0Y2hlcyBhbnkgb2YgdGhlIGRlZmluZWQgdGFibGVzLiBJZiBpdCBkb2VzLAogICAgICAgIGV2ZXJ5dGhpbmcgaXMgYWxyaWdodC4gSWYgbm90LCB5b3UgbmVlZCB0byBkZWZpbmUgaXQuCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgVG8gZG8gdGhpcywgb3BlbiB0aGUgZmlsZQogICAgICAgIDxmaWxlbmFtZT53aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jPC9maWxlbmFtZT4gYW5kIHRha2UgYSBsb29rCiAgICAgICAgYXQgdGhlIGV4aXN0aW5nIHRhYmxlcy4gTWFrZSBhIGJhY2t1cCBjb3B5IG9mIGl0LCBlc3BlY2lhbGx5CiAgICAgICAgaWYgeW91IGRvbid0IHVzZSBDVlMuCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgV2hhdCB5b3UgcmVhbGx5IHdvdWxkIG5lZWQgdG8gZG8sIGlzIGZpbmQgb3V0IHdoaWNoIHNjYW5jb2RlCiAgICAgICAgZWFjaCBrZXkgbmVlZHMgdG8gZ2VuZXJhdGUuICBGaW5kIGl0IGluIHRoZQogICAgICAgIDxmdW5jdGlvbj5tYWluX2tleV9zY2FuPC9mdW5jdGlvbj4gdGFibGUsIHdoaWNoIGxvb2tzIGxpa2UKICAgICAgICB0aGlzOgogICAgICA8L3BhcmE+CiAgICAgIDxwcm9ncmFtbGlzdGluZz4Kc3RhdGljIGNvbnN0IGludCBtYWluX2tleV9zY2FuW01BSU5fTEVOXSA9CnsKLyogdGhpcyBpcyBteSAoMTAyLWtleSkga2V5Ym9hcmQgbGF5b3V0LCBzb3JyeSBpZiBpdCBkb2Vzbid0IHF1aXRlIG1hdGNoIHlvdXJzICovCiAgIDB4MjksMHgwMiwweDAzLDB4MDQsMHgwNSwweDA2LDB4MDcsMHgwOCwweDA5LDB4MEEsMHgwQiwweDBDLDB4MEQsCiAgIDB4MTAsMHgxMSwweDEyLDB4MTMsMHgxNCwweDE1LDB4MTYsMHgxNywweDE4LDB4MTksMHgxQSwweDFCLAogICAweDFFLDB4MUYsMHgyMCwweDIxLDB4MjIsMHgyMywweDI0LDB4MjUsMHgyNiwweDI3LDB4MjgsMHgyQiwKICAgMHgyQywweDJELDB4MkUsMHgyRiwweDMwLDB4MzEsMHgzMiwweDMzLDB4MzQsMHgzNSwKICAgMHg1NiAvKiB0aGUgMTAybmQga2V5IChhY3R1YWxseSB0byB0aGUgcmlnaHQgb2YgbC1zaGlmdCkgKi8KfTsKICAgICAgPC9wcm9ncmFtbGlzdGluZz4KICAgICAgPHBhcmE+CiAgICAgICAgTmV4dCwgYXNzaWduIGVhY2ggc2NhbmNvZGUgdGhlIGNoYXJhY3RlcnMgaW1wcmludGVkIG9uIHRoZQogICAgICAgIGtleWNhcHMuIFRoaXMgd2FzIGRvbmUgKHNvcnQgb2YpIGZvciB0aGUgVVMgMTAxLWtleSBrZXlib2FyZCwKICAgICAgICB3aGljaCB5b3UgY2FuIGZpbmQgbmVhciB0aGUgdG9wIGluCiAgICAgICAgPGZpbGVuYW1lPmtleWJvYXJkLmM8L2ZpbGVuYW1lPi4gSXQgYWxzbyBzaG93cyB0aGF0IGlmIHRoZXJlCiAgICAgICAgaXMgbm8gMTAybmQga2V5LCB5b3UgY2FuIHNraXAgdGhhdC4KICAgICAgPC9wYXJhPgogICAgICA8cGFyYT4KICAgICAgICBIb3dldmVyLCBmb3IgbW9zdCBpbnRlcm5hdGlvbmFsIDEwMi1rZXkga2V5Ym9hcmRzLCB3ZSBoYXZlCiAgICAgICAgZG9uZSBpdCBlYXN5IGZvciB5b3UuIFRoZSBzY2FuY29kZSBsYXlvdXQgZm9yIHRoZXNlIGFscmVhZHkKICAgICAgICBwcmV0dHkgbXVjaCBtYXRjaGVzIHRoZSBwaHlzaWNhbCBsYXlvdXQgaW4gdGhlCiAgICAgICAgPGZ1bmN0aW9uPm1haW5fa2V5X3NjYW48L2Z1bmN0aW9uPiwgc28gYWxsIHlvdSBuZWVkIHRvIGRvIGlzCiAgICAgICAgdG8gZ28gdGhyb3VnaCBhbGwgdGhlIGtleXMgdGhhdCBnZW5lcmF0ZSBjaGFyYWN0ZXJzIG9uIHlvdXIKICAgICAgICBtYWluIGtleWJvYXJkIChleGNlcHQgc3BhY2ViYXIpLCBhbmQgc3R1ZmYgdGhvc2UgaW50byBhbgogICAgICAgIGFwcHJvcHJpYXRlIHRhYmxlLiBUaGUgb25seSBleGNlcHRpb24gaXMgdGhhdCB0aGUgMTAybmQga2V5LAogICAgICAgIHdoaWNoIGlzIHVzdWFsbHkgdG8gdGhlIGxlZnQgb2YgdGhlIGZpcnN0IGtleSBvZiB0aGUgbGFzdCBsaW5lCiAgICAgICAgKHVzdWFsbHkgPGtleWNhcD5aPC9rZXljYXA+KSwgbXVzdCBiZSBwbGFjZWQgb24gYSBzZXBhcmF0ZQogICAgICAgIGxpbmUgYWZ0ZXIgdGhlIGxhc3QgbGluZS4KICAgICAgPC9wYXJhPgogICAgICA8cGFyYT4KICAgICAgICBGb3IgZXhhbXBsZSwgbXkgTm9yd2VnaWFuIGtleWJvYXJkIGxvb2tzIGxpa2UgdGhpcwogICAgICA8L3BhcmE+CiAgICAgIDxzY3JlZW4+CqcgICEgICIgICMgIKQgICUgICYgIC8gICggICkgID0gID8gIGAgIEJhY2stCnwgIDEgIDJAIDOjIDQkIDUgIDYgIDd7IDhbIDldIDB9ICsgIFy0IHNwYWNlCgpUYWIgUSAgVyAgRSAgUiAgVCAgWSAgVSAgSSAgTyAgUCAgxSAgXgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgqH4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudGVyCkNhcHMgQSAgUyAgRCAgRiAgRyAgSCAgSiAgSyAgTCAg2CAgxiAgKgpMb2NrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcKClNoLSA+IFogIFggIEMgIFYgIEIgIE4gIE0gIDsgIDogIF8gIFNoaWZ0CmlmdCAmbHQ7ICAgICAgICAgICAgICAgICAgICAgICwgIC4gIC0KCkN0cmwgIEFsdCAgICAgICBTcGFjZWJhciAgICAgICBBbHRHciAgQ3RybAogICAgICA8L3NjcmVlbj4KICAgICAgPHBhcmE+CiAgICAgICAgTm90ZSB0aGUgMTAybmQga2V5LCB3aGljaCBpcyB0aGUgPGtleWNhcD4mbHQ7Pjwva2V5Y2FwPiBrZXksIHRvCiAgICAgICAgdGhlIGxlZnQgb2YgPGtleWNhcD5aPC9rZXljYXA+LiBUaGUgY2hhcmFjdGVyIHRvIHRoZSByaWdodCBvZgogICAgICAgIHRoZSBtYWluIGNoYXJhY3RlciBpcyB0aGUgY2hhcmFjdGVyIGdlbmVyYXRlZCBieQogICAgICAgIDxrZXljYXA+QWx0R3I8L2tleWNhcD4uCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgVGhpcyBrZXlib2FyZCBpcyBkZWZpbmVkIGFzIGZvbGxvd3M6CiAgICAgIDwvcGFyYT4KICAgICAgPHByb2dyYW1saXN0aW5nPgpzdGF0aWMgY29uc3QgY2hhciBtYWluX2tleV9OT1tNQUlOX0xFTl1bNF0gPQp7CiAifKciLCIxISIsIjJcIkAiLCIzI6MiLCI0pCQiLCI1JSIsIjYmIiwiNy97IiwiOChbIiwiOSldIiwiMD19IiwiKz8iLCJcXLQiLAogInFRIiwid1ciLCJlRSIsInJSIiwidFQiLCJ5WSIsInVVIiwiaUkiLCJvTyIsInBQIiwi5cUiLCKoXn4iLAogImFBIiwic1MiLCJkRCIsImZGIiwiZ0ciLCJoSCIsImpKIiwia0siLCJsTCIsIvjYIiwi5sYiLCInKiIsCiAieloiLCJ4WCIsImNDIiwidlYiLCJiQiIsIm5OIiwibU0iLCIsOyIsIi46IiwiLV8iLAogIiZsdDs+Igp9OyAgIAogICAgICA8L3Byb2dyYW1saXN0aW5nPgogICAgICA8cGFyYT4KICAgICAgICBFeGNlcHQgdGhhdCAiIGFuZCBcIG5lZWRzIHRvIGJlIHF1b3RlZCB3aXRoIGEgYmFja3NsYXNoLCBhbmQKICAgICAgICB0aGF0IHRoZSAxMDJuZCBrZXkgaXMgb24gYSBzZXBhcmF0ZSBsaW5lLCBpdCdzIHByZXR0eQogICAgICAgIHN0cmFpZ2h0Zm9yd2FyZC4KICAgICAgPC9wYXJhPgogICAgICA8cGFyYT4KICAgICAgICBBZnRlciB5b3UgaGF2ZSB3cml0dGVuIHN1Y2ggYSB0YWJsZSwgeW91IG5lZWQgdG8gYWRkIGl0IHRvIHRoZQogICAgICAgIDxmdW5jdGlvbj5tYWluX2tleV90YWJbXTwvZnVuY3Rpb24+IGxheW91dCBpbmRleCB0YWJsZS4gVGhpcwogICAgICAgIHdpbGwgbG9vayBsaWtlIHRoaXM6CiAgICAgIDwvcGFyYT4KICAgICAgPHByb2dyYW1saXN0aW5nPgpzdGF0aWMgc3RydWN0IHsKIFdPUkQgbGFuZywgYW5zaV9jb2RlcGFnZSwgb2VtX2NvZGVwYWdlOwogY29uc3QgY2hhciAoKmtleSlbTUFJTl9MRU5dWzRdOwp9IG1haW5fa2V5X3RhYltdPXsKLi4uCi4uLgoge01BS0VMQU5HSUQoTEFOR19OT1JXRUdJQU4sU1VCTEFOR19ERUZBVUxUKSwgIDEyNTIsIDg2NSwgJmFtcDttYWluX2tleV9OT30sICAKLi4uCiAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgIDxwYXJhPgogICAgICAgIEFmdGVyIHlvdSBoYXZlIGFkZGVkIHlvdXIgdGFibGUsIHJlY29tcGlsZSBXaW5lIGFuZCB0ZXN0IHRoYXQKICAgICAgICBpdCB3b3Jrcy4gSWYgaXQgZmFpbHMgdG8gZGV0ZWN0IHlvdXIgdGFibGUsIHRyeSBydW5uaW5nCiAgICAgIDwvcGFyYT4KICAgICAgPHNjcmVlbj4Kd2luZSAtLWRlYnVnbXNnICtrZXksK2tleWJvYXJkID4mIGtleS5sb2cKICAgICAgPC9zY3JlZW4+CiAgICAgIDxwYXJhPgogICAgICAgIGFuZCBsb29rIGluIHRoZSByZXN1bHRpbmcgPGZpbGVuYW1lPmtleS5sb2c8L2ZpbGVuYW1lPiBmaWxlIHRvCiAgICAgICAgZmluZCB0aGUgZXJyb3IgbWVzc2FnZXMgaXQgZ2l2ZXMgZm9yIHlvdXIgbGF5b3V0LgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgogICAgICAgIE5vdGUgdGhhdCB0aGUgPGNvbnN0YW50PkxBTkdfKjwvY29uc3RhbnQ+IGFuZAogICAgICAgIDxjb25zdGFudD5TVUJMQU5HXyo8L2NvbnN0YW50PiBkZWZpbml0aW9ucyBhcmUgaW4KICAgICAgICA8ZmlsZW5hbWU+aW5jbHVkZS93aW5ubHMuaDwvZmlsZW5hbWU+LCB3aGljaCB5b3UgbWlnaHQgbmVlZCB0bwogICAgICAgIGtub3cgdG8gZmluZCBvdXQgd2hpY2ggbnVtYmVycyB5b3VyIGxhbmd1YWdlIGlzIGFzc2lnbmVkLCBhbmQKICAgICAgICBmaW5kIGl0IGluIHRoZSBkZWJ1Z21zZyBvdXRwdXQuIFRoZSBudW1iZXJzIHdpbGwgYmUKICAgICAgICA8bGl0ZXJhbD4oU1VCTEFORyAqIDB4NDAwICsgTEFORyk8L2xpdGVyYWw+LCBzbywgZm9yIGV4YW1wbGUKICAgICAgICB0aGUgY29tYmluYXRpb24gPGxpdGVyYWw+TEFOR19OT1JXRUdJQU4gKDB4MTQpPC9saXRlcmFsPiBhbmQKICAgICAgICA8bGl0ZXJhbD5TVUJMQU5HX0RFRkFVTFQgKDB4MSk8L2xpdGVyYWw+IHdpbGwgYmUgKGluIGhleCkKICAgICAgICA8bGl0ZXJhbD4xNCArIDEqNDAwID0gNDE0PC9saXRlcmFsPiwgc28gc2luY2UgSSdtIE5vcndlZ2lhbiwgSQogICAgICAgIGNvdWxkIGxvb2sgZm9yIDxsaXRlcmFsPjA0MTQ8L2xpdGVyYWw+IGluIHRoZSBkZWJ1Z21zZyBvdXRwdXQKICAgICAgICB0byBmaW5kIG91dCB3aHkgbXkga2V5Ym9hcmQgd29uJ3QgZGV0ZWN0LgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgogICAgICAgIE9uY2UgaXQgd29ya3MsIHN1Ym1pdCBpdCB0byB0aGUgV2luZSBwcm9qZWN0LiBJZiB5b3UgdXNlIENWUywKICAgICAgICB5b3Ugd2lsbCBqdXN0IGhhdmUgdG8gZG8KICAgICAgPC9wYXJhPgogICAgICA8c2NyZWVuPgpjdnMgLXozIGRpZmYgLXUgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYyA+IGxheW91dC5kaWZmCiAgICAgIDwvc2NyZWVuPgogICAgICA8cGFyYT4KICAgICAgICBmcm9tIHlvdXIgbWFpbiBXaW5lIGRpcmVjdG9yeSwgdGhlbiBzdWJtaXQKICAgICAgICA8ZmlsZW5hbWU+bGF5b3V0LmRpZmY8L2ZpbGVuYW1lPiB0bwogICAgICAgIDxlbWFpbD53aW5lLXBhdGNoZXNAd2luZWhxLmNvbTwvZW1haWw+IGFsb25nIHdpdGggYSBicmllZiBub3RlCiAgICAgICAgb2Ygd2hhdCBpdCBpcy4KICAgICAgPC9wYXJhPgogICAgICA8cGFyYT4KICAgICAgICBJZiB5b3UgZG9uJ3QgdXNlIENWUywgeW91IG5lZWQgdG8gZG8KICAgICAgPC9wYXJhPgogICAgICA8c2NyZWVuPgpkaWZmIC11IHRoZV9iYWNrdXBfZmlsZV95b3VfbWFkZSB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jID4gbGF5b3V0LmRpZmYKICAgICAgPC9zY3JlZW4+CiAgICAgIDxwYXJhPgogICAgICAgIGFuZCBzdWJtaXQgaXQgYXMgZXhwbGFpbmVkIGFib3ZlLgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgogICAgICAgIElmIHlvdSBkaWQgaXQgcmlnaHQsIGl0IHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIG5leHQgV2luZQogICAgICAgIHJlbGVhc2UsIGFuZCBhbGwgdGhlIHRyb3VibGVzb21lIGFwcGxpY2F0aW9ucyAoZXNwZWNpYWxseQogICAgICAgIHJlbW90ZS1jb250cm9sIGFwcGxpY2F0aW9ucykgYW5kIGdhbWVzIHRoYXQgdXNlIHNjYW5jb2RlcyB3aWxsCiAgICAgICAgYmUgaGFwcGlseSB1c2luZyB5b3VyIGtleWJvYXJkIGxheW91dCwgYW5kIHlvdSB3b24ndCBnZXQgdGhvc2UKICAgICAgICBhbm5veWluZyBmaXhtZSBtZXNzYWdlcyBlaXRoZXIuCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgR29vZCBsdWNrLgogICAgICA8L3BhcmE+CiAgICA8L3NlY3QxPgoKICAgICZmb250czsKICAgICZwcmludGluZzsKCiAgPC9jaGFwdGVyPgoKPCEtLSBLZWVwIHRoaXMgY29tbWVudCBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlCkxvY2FsIHZhcmlhYmxlczoKbW9kZTogc2dtbApzZ21sLXBhcmVudC1kb2N1bWVudDooIndpbmUtZG9jLnNnbWwiICJzZXQiICJib29rIiAiY2hhcHRlciIgIiIpCkVuZDoKLS0+Cg==