ICA8Y2hhcHRlciBpZD0iY29uZmlndXJpbmciPgogICAgPHRpdGxlPkNvbmZpZ3VyaW5nIFdpbmU8L3RpdGxlPgogICAgPHBhcmE+U2V0dGluZyB1cCBjb25maWcgZmlsZXMsIGV0Yy48L3BhcmE+CgogICAgPHNlY3QxIGlkPSJjb25maWciPgogICAgICA8dGl0bGU+R2VuZXJhbCBDb25maWd1cmF0aW9uPC90aXRsZT4KICAgICAgPHBhcmE+CiAgICAgICAgQ29weXJpZ2h0IDE5OTkgJm5hbWUtYWRhbS1zYWNhcm55OyA8ZW1haWw+JmVtYWlsLWFkYW0tc2FjYXJueTs8L2VtYWlsPgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgogICAgICAgIChFeHRyYWN0ZWQgZnJvbSA8ZmlsZW5hbWU+d2luZS9kb2N1bWVudGF0aW9uL2NvbmZpZzwvZmlsZW5hbWU+KQogICAgICA8L3BhcmE+CgogICAgICA8c2VjdDI+CiAgICAgICAgPHRpdGxlPlRoZSBXaW5lIENvbmZpZyBGaWxlPC90aXRsZT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSBXaW5lIGNvbmZpZyBmaWxlIHN0b3JlcyB2YXJpb3VzIHNldHRpbmdzIGZvciBXaW5lLiBUaGVzZSBpbmNsdWRlOgogICAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgRHJpdmVzIGFuZCBJbmZvcm1hdGlvbiBhYm91dCB0aGVtCiAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICBEaXJlY3RvcnkgU2V0dGluZ3MKICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIFBvcnQgU2V0dGluZ3MKICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIFRoZSBXaW5lIGxvb2sgYW5kIGZlZWwKICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIFdpbmUncyBETEwgVXNhZ2UKICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvc2VjdDI+CgogICAgICA8c2VjdDI+CiAgICAgICAgPHRpdGxlPkhvdyBEbyBJIE1ha2UgT25lPzwvdGl0bGU+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGlzIHNlY3Rpb24gd2lsbCBndWlkZSB5b3UgdGhyb3VnaCB0aGUgcHJvY2VzcyBvZiBtYWtpbmcgYQogICAgICAgICAgY29uZmlnIGZpbGUuIFRha2UgYSBsb29rIGF0IHRoZSBmaWxlIDxmaWxlbmFtZT4mbHQ7ZGlycyB0bwogICAgICAgICAgd2luZT4vZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzwvZmlsZW5hbWU+LiBJdCBpcyBvcmdhbml6ZWQgYnkgc2VjdGlvbi4KICAgICAgICA8L3BhcmE+CgogICAgICAgIDxpbmZvcm1hbHRhYmxlIGZyYW1lPSJhbGwiPgogICAgICAgICAgPHRncm91cCBjb2xzPSIzIj4KICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICA8ZW50cnk+U2VjdGlvbiBOYW1lPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5OZWVkZWQ/PC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5XaGF0IGl0IERvZXM8L2VudHJ5PgogICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgICAgPHJvdz4KICAgICAgICAgICAgICAgIDxlbnRyeT5bRHJpdmUgWF08L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PnllczwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+U2V0cyB1cCBkcml2ZXMgcmVjb2duaXplZCBieSB3aW5lPC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5Plt3aW5lXTwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+eWVzPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5TZXR0aW5ncyBmb3Igd2luZSBkaXJlY3RvcmllczwvZW50cnk+CiAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgICAgPHJvdz4KICAgICAgICAgICAgICAgIDxlbnRyeT5bRGxsRGVmYXVsdHNdPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5yZWNtZDwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+RGVmYXVsdHMgZm9yIGxvYWRpbmcgRExMJ3M8L2VudHJ5PgogICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICA8ZW50cnk+W0RsbFBhaXJzXTwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+cmVjbWQ8L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PlNhbml0eSBjaGVja2VycyBmb3IgRExMJ3M8L2VudHJ5PgogICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICA8ZW50cnk+W0RsbE92ZXJyaWRlc108L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PnJlY21kPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5PdmVyaWRlcyBkZWZhdWx0cyBmb3IgRExMIGxvYWRpbmc8L2VudHJ5PgogICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICA8ZW50cnk+W29wdGlvbnNdPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5ubzwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+Tm8gb25lIHNlZW1zIHRvIGtub3c8L2VudHJ5PgogICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICA8ZW50cnk+W2ZvbnRzXTwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+eWVzPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5Gb250IGFwcGVhcmFuY2UgYW5kIHJlY29nbml0aW9uPC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5PltzZXJpYWxwb3J0c108L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5Pm5vPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5DT00gcG9ydHMgc2VlbiBieSB3aW5lPC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5PltwYXJhbGxlbHBvcnRzXTwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+bm88L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PkxQVCBwb3J0cyBzZWVuIGJ5IHdpbmU8L2VudHJ5PgogICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICA8ZW50cnk+W3Nwb29sZXJdPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5ubzwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+UHJpbnQgc3Bvb2xpbmc8L2VudHJ5PgogICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICA8ZW50cnk+W3BvcnRzXTwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+bm88L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PkRpcmVjdCBwb3J0IGFjY2VzczwvZW50cnk+CiAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgICAgPHJvdz4KICAgICAgICAgICAgICAgIDxlbnRyeT5bc3B5XTwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+bm88L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PldoYXQgdG8gZG8gd2l0aCBjZXJ0YWluIGRlYnVnIG1lc3NhZ2VzPC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5PltSZWdpc3RyeV08L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5Pm5vPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5TcGVjaWZpZXMgbG9jYXRpb25zIG9mIHdpbmRvd3MgcmVnaXN0cnkgZmlsZXM8L2VudHJ5PgogICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICA8ZW50cnk+W3R3ZWFrLmxheW91dF08L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PnJlY21kPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5BcHBlYXJhbmNlIG9mIHdpbmU8L2VudHJ5PgogICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICA8ZW50cnk+W3Byb2dyYW1zXTwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+bm88L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PlByb2dyYW1zIHRvIGJlIHJ1biBhdXRvbWF0aWNhbGx5PC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5PltDb25zb2xlXTwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+bm88L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PkNvbnNvbGUgc2V0dGluZ3M8L2VudHJ5PgogICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgPC90Z3JvdXA+CiAgICAgICAgPC9pbmZvcm1hbHRhYmxlPgoKICAgICAgICA8c2VjdDM+CiAgICAgICAgICA8dGl0bGU+VGhlIFtEcml2ZSBYXSBTZWN0aW9uPC90aXRsZT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBJdCBzaG91bGQgYmUgcHJldHR5IHNlbGYgZXhwbGFuYXRvcnksIGJ1dCBoZXJlIGlzIGFuCiAgICAgICAgICAgIGluLWRlcHRoIHR1dG9yaWFsIGFib3V0IHRoZW0uIFRoZXJlIGFyZSB1cCB0byA2IGxpbmVzIGZvcgogICAgICAgICAgICBlYWNoIGRyaXZlIGluIFdpbmUuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPltEcml2ZSBYXTwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICAgIFRoZSBhYm92ZSBsaW5lIGJlZ2lucyB0aGUgc2VjdGlvbiBmb3IgYSBkcml2ZSB3aG9zZSBsZXR0ZXIgaXMgWC4gCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPlBhdGg9L2Rpci90by9wYXRoPC9wcm9ncmFtbGlzdGluZz4gVGhpcwogICAgICAgICAgICBwYXRoIGlzIHdoZXJlIHRoZSBkcml2ZSB3aWxsIGJlZ2luLiBXaGVuIFdpbmUgaXMgYnJvd3NpbmcKICAgICAgICAgICAgaW4gZHJpdmUgWCwgaXQgd2lsbCBzZWUgdGhlIGZpbGVzIHRoYXQgYXJlIGluIHRoZQogICAgICAgICAgICBkaXJlY3RvcnkgPGZpbGVuYW1lPi9kaXIvdG8vcGF0aDwvZmlsZW5hbWU+LiBEb24ndCBmb3JnZXQKICAgICAgICAgICAgdG8gbGVhdmUgb2ZmIHRoZSB0cmFpbGluZyBzbGFzaCEKICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+CiJUeXBlIiA9ICJmbG9wcHl8aGR8Y2Ryb218bmV0d29yayIgJmx0Oy0tLSB0aGUgfCdzIG1lYW4gIlR5cGUgPSAiJmx0O29uZSBvZiB0aGUgb3B0aW9ucz4iCiAgICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgU2V0cyB1cCB0aGUgdHlwZSBvZiBkcml2ZSBXaW5lIHdpbGwgc2VlIGl0IGFzLiBUeXBlIG11c3QKICAgICAgICAgICAgZXF1YWwgb25lIG9mIHRoZSBmb3VyIDxsaXRlcmFsPmZsb3BweTwvbGl0ZXJhbD4sCiAgICAgICAgICAgIDxsaXRlcmFsPmhkPC9saXRlcmFsPiwgPGxpdGVyYWw+Y2Ryb208L2xpdGVyYWw+LCBvcgogICAgICAgICAgICA8bGl0ZXJhbD5uZXR3b3JrPC9saXRlcmFsPi4gVGhleSBhcmUgc2VsZi1leHBsYW5hdG9yeS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+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+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgVGhlIFt3aW5lXSBzZWN0aW9uIG9mIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgY29udGFpbnMKICAgICAgICAgICAgaW5mb3JtYXRpb24gd2luZSB1c2VzIGZvciBkaXJlY3Rvcmllcy4gV2hlbiBzcGVjaWZ5aW5nIHRoZQogICAgICAgICAgICBkaXJlY3RvcmllcyBmb3IgdGhlIHNldHRpbmdzLCBtYWtlIHRoZW0gYXMgdGhleSB3b3VsZAogICAgICAgICAgICBhcHBlYXIgaW4gd2luZS4gSWYgeW91ciBkcml2ZSA8bWVkaWFsYWJlbD5DPC9tZWRpYWxhYmVsPgogICAgICAgICAgICBoYXMgYSBwYXRoIG9mIDxmaWxlbmFtZT4vZG9zPC9maWxlbmFtZT4sIGFuZCB5b3VyCiAgICAgICAgICAgIDxmaWxlbmFtZT53aW5kb3dzPC9maWxlbmFtZT4gZGlyZWN0b3J5IGlzIGxvY2F0ZWQgaW4KICAgICAgICAgICAgPGZpbGVuYW1lPi9kb3Mvd2luZG93czwvZmlsZW5hbWU+LCB0aGVuIHVzZToKICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJXaW5kb3dzIiA9ICJjOlxcd2luZG93cyI8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFRoaXMgc2V0cyB1cCB0aGUgPGZpbGVuYW1lPndpbmRvd3M8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCiAgICAgICAgICAgIE1ha2Ugb25lIGlmIHlvdSBkb24ndCBhbHJlYWR5IGhhdmUgb25lLiBOTyBUUkFJTElORyBTTEFTSAogICAgICAgICAgICAoTk9UIDxmaWxlbmFtZT5DOlxcd2luZG93c1w8L2ZpbGVuYW1lPikhCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJTeXN0ZW0iID0gImM6XFx3aW5kb3dzXFxzeXN0ZW0iPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgICAgVGhpcyBzZXRzIHVwIHdoZXJlIHRoZSB3aW5kb3dzIHN5c3RlbSBmaWxlcyBhcmUuIFNob3VsZAogICAgICAgICAgICByZXNpZGUgaW4gdGhlIGRpcmVjdG9yeSB1c2VkIGZvciB0aGUKICAgICAgICAgICAgPGxpdGVyYWw+V2luZG93czwvbGl0ZXJhbD4gc2V0dGluZy4gSWYgeW91IGRvbid0IGhhdmUKICAgICAgICAgICAgPGZpbGVuYW1lPndpbmRvd3M8L2ZpbGVuYW1lPiB0aGVuIHRoaXMgaXMgd2hlcmUgdGhlIHN5c3RlbQogICAgICAgICAgICBmaWxlcyB3aWxsIGdvLiBBZ2FpbiwgTk8gVFJBSUxJTkcgU0xBU0ghCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJUZW1wIiA9ICJjOlxcdGVtcCI8L3Byb2dyYW1saXN0aW5nPiBUaGlzIHNob3VsZAogICAgICAgICAgICBiZSB0aGUgZGlyZWN0b3J5IHlvdSB3YW50IHlvdXIgdGVtcCBmaWxlcyBzdG9yZWQgaW4uIFlPVQogICAgICAgICAgICBNVVNUIEhBVkUgV1JJVEUgQUNDRVNTIFRPIElULgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KIlBhdGgiID0gImM6XFx3aW5kb3dzO2M6XFx3aW5kb3dzXFxzeXN0ZW07YzpcXGJsYW5jbyIKICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBCZWhhdmVzIGxpa2UgdGhlIDxlbnZhcj5QQVRIPC9lbnZhcj4gc2V0dGluZyBvbiBVTklYCiAgICAgICAgICAgIGJveGVzLiBXaGVuIHdpbmUgaXMgcnVuIGxpa2UgPHVzZXJpbnB1dD53aW5lCiAgICAgICAgICAgICAgc29sLmV4ZTwvdXNlcmlucHV0PiwgaWYgPGZpbGVuYW1lPnNvbC5leGU8L2ZpbGVuYW1lPgogICAgICAgICAgICByZXNpZGVzIGluIGEgZGlyZWN0b3J5IHNwZWNpZmllZCBpbiB0aGUKICAgICAgICAgICAgPGxpdGVyYWw+UGF0aDwvbGl0ZXJhbD4gc2V0dGluZywgd2luZSB3aWxsIHJ1biBpdCAoT2YKICAgICAgICAgICAgY291cnNlLCBpZiA8ZmlsZW5hbWU+c29sLmV4ZTwvZmlsZW5hbWU+IHJlc2lkZXMgaW4gdGhlCiAgICAgICAgICAgIGN1cnJlbnQgZGlyZWN0b3J5LCB3aW5lIHdpbGwgcnVuIHRoYXQgb25lKS4gTWFrZSBzdXJlIGl0CiAgICAgICAgICAgIGFsd2F5cyBoYXMgeW91ciA8ZmlsZW5hbWU+d2luZG93czwvZmlsZW5hbWU+IGRpcmVjdG9yeSBhbmQKICAgICAgICAgICAgc3lzdGVtIGRpcmVjdG9yeSAoRm9yIHRoaXMgc2V0dXAsIGl0IG11c3QgaGF2ZQogICAgICAgICAgICA8ZmlsZW5hbWU+ImM6XFx3aW5kb3dzO2M6XFx3aW5kb3dzXFxzeXN0ZW0iPC9maWxlbmFtZT4pLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4iU3ltYm9sVGFibGVGaWxlIiA9ICJ3aW5lLnN5bSI8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgICBTZXRzIHVwIHRoZSBzeW1ib2wgdGFibGUgZmlsZSBmb3IgdGhlIHdpbmUgZGVidWdnZXIuIFlvdQogICAgICAgICAgICBwcm9iYWJseSBkb24ndCBuZWVkIHRvIGZpZGRsZSB3aXRoIHRoaXMuIE1heSBiZSB1c2VmdWwgaWYKICAgICAgICAgICAgeW91ciB3aW5lIGlzIHN0cmlwcGVkLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4icHJpbnRlciIgPSAib2ZmfG9uIjwvcHJvZ3JhbWxpc3Rpbmc+IFRlbGxzIHdpbmUKICAgICAgICAgICAgd2hldGhlciB0byBhbGxvdyBwcmludGVyIGRyaXZlcnMgYW5kIHByaW50aW5nIHRvIHdvcmsuCiAgICAgICAgICAgIFVzaW5nIHRoZXNlIHRoaW5ncyBhcmUgcHJldHR5IGFscGhhLCBzbyB5b3UgbWlnaHQgd2FudCB0bwogICAgICAgICAgICB3YXRjaCBvdXQuIFNvbWUgcGVvcGxlIG1pZ2h0IGZpbmQgaXQgdXNlZnVsLCBob3dldmVyLiBJZgogICAgICAgICAgICB5b3UncmUgbm90IHBsYW5uaW5nIG9uIHdvcmtpbmcgb24gcHJpbnRpbmcsIGRvbid0IGV2ZW4gYWRkCiAgICAgICAgICAgIHRoaXMgdG8geW91ciA8ZmlsZW5hbWU+fi8ud2luZS9jb25maWc8L2ZpbGVuYW1lPiAoSXQgcHJvYmFibHkKICAgICAgICAgICAgaXNuJ3QgYWxyZWFkeSBpbiBpdCkuIENoZWNrIG91dCB0aGUgW3Nwb29sZXJdIGFuZAogICAgICAgICAgICBbcGFyYWxsZWxwb3J0c10gc2VjdGlvbnMgdG9vLgogICAgICAgICAgPC9wYXJhPgogICAgICAgIDwvc2VjdDM+CgogICAgICAgIDxzZWN0Mz4KICAgICAgICAgIDx0aXRsZT5JbnRyb2R1Y3Rpb24gVG8gRExMIFNlY3Rpb25zPC90aXRsZT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBUaGVyZSBhcmUgYSBmZXcgdGhpbmdzIHlvdSB3aWxsIG5lZWQgdG8ga25vdyBiZWZvcmUKICAgICAgICAgICAgY29uZmlndXJpbmcgdGhlIERMTCBzZWN0aW9ucyBpbiB5b3VyIHdpbmUgY29uZmlndXJhdGlvbgogICAgICAgICAgICBmaWxlLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHNlY3Q0PgogICAgICAgICAgICA8dGl0bGU+V2luZG93cyBETEwgUGFpcnM8L3RpdGxlPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBNb3N0IHdpbmRvd3MgRExMJ3MgaGF2ZSBhIHdpbjE2IChXaW5kb3dzIDMueCkgYW5kIHdpbjMyCiAgICAgICAgICAgICAgKFdpbmRvd3MgOXgvTlQpIGZvcm0uICBUaGUgY29tYmluYXRpb24gb2YgdGhlIHdpbjE2IGFuZAogICAgICAgICAgICAgIHdpbjMyIERMTCB2ZXJzaW9ucyBhcmUgY2FsbGVkIHRoZSAiRExMIHBhaXIiLiBUaGlzIGlzIGEKICAgICAgICAgICAgICBsaXN0IG9mIHRoZSBtb3N0IGNvbW1vbiBwYWlyczoKICAgICAgICAgICAgPC9wYXJhPgoKICAgICAgICAgICAgPGluZm9ybWFsdGFibGU+CiAgICAgICAgICAgICAgPHRncm91cCBjb2xzPSIzIj4KICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgPHJvdz4KICAgICAgICAgICAgICAgICAgICA8ZW50cnk+V2luMTY8L2VudHJ5PgogICAgICAgICAgICAgICAgICAgIDxlbnRyeT5XaW4zMjwvZW50cnk+CiAgICAgICAgICAgICAgICAgICAgPGVudHJ5PgogICAgICAgICAgICAgICAgICAgICAgTmF0aXZlCiAgICAgICAgICAgICAgICAgICAgICA8Zm9vdG5vdGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgIElzIGl0IHBvc3NpYmxlIHRvIHVzZSBuYXRpdmUgZGxsIHdpdGggd2luZT8KICAgICAgICAgICAgICAgICAgICAgICAgICAoU2VlIG5leHQgc2VjdGlvbikKICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgICAgICAgICAgPC9mb290bm90ZT4KICAgICAgICAgICAgICAgICAgICA8L2VudHJ5PgogICAgICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICAgICAgPGVudHJ5PktFUk5FTDwvZW50cnk+CiAgICAgICAgICAgICAgICAgICAgPGVudHJ5PktFUk5FTDMyPC9lbnRyeT4KICAgICAgICAgICAgICAgICAgICA8ZW50cnk+Tm8hPC9lbnRyeT4KICAgICAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICAgICAgPGVudHJ5PlVTRVI8L2VudHJ5PgogICAgICAgICAgICAgICAgICAgIDxlbnRyeT5VU0VSMzI8L2VudHJ5PgogICAgICAgICAgICAgICAgICAgIDxlbnRyeT5ObyE8L2VudHJ5PgogICAgICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgICAgICAgPHJvdz4KICAgICAgICAgICAgICAgICAgICA8ZW50cnk+U0hFTEw8L2VudHJ5PgogICAgICAgICAgICAgICAgICAgIDxlbnRyeT5TSEVMTDMyPC9lbnRyeT4KICAgICAgICAgICAgICAgICAgICA8ZW50cnk+WWVzPC9lbnRyeT4KICAgICAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICAgICAgPGVudHJ5PkdESTwvZW50cnk+CiAgICAgICAgICAgICAgICAgICAgPGVudHJ5PkdESTMyPC9lbnRyeT4KICAgICAgICAgICAgICAgICAgICA8ZW50cnk+Tm8hPC9lbnRyeT4KICAgICAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICAgICAgPGVudHJ5PkNPTU1ETEc8L2VudHJ5PgogICAgICAgICAgICAgICAgICAgIDxlbnRyeT5DT01ETEczMjwvZW50cnk+CiAgICAgICAgICAgICAgICAgICAgPGVudHJ5PlllczwvZW50cnk+CiAgICAgICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgICAgIDxlbnRyeT5WRVI8L2VudHJ5PgogICAgICAgICAgICAgICAgICAgIDxlbnRyeT5WRVJTSU9OPC9lbnRyeT4KICAgICAgICAgICAgICAgICAgICA8ZW50cnk+WWVzPC9lbnRyeT4KICAgICAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgIDwvdGdyb3VwPgogICAgICAgICAgICA8L2luZm9ybWFsdGFibGU+CiAgICAgICAgICA8L3NlY3Q0PgoKICAgICAgICAgIDxzZWN0ND4KICAgICAgICAgICAgPHRpdGxlPkRpZmZlcmVudCBGb3JtcyBPZiBETEwnczwvdGl0bGU+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIFRoZXJlIGFyZSBhIGZldyBkaWZmZXJlbnQgZm9ybXMgb2YgRExMJ3Mgd2luZSBjYW4gbG9hZDoKICAgICAgICAgICAgICA8dmFyaWFibGVsaXN0PgogICAgICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICAgICAgPHRlcm0+bmF0aXZlPC90ZXJtPgogICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICBUaGUgRExMJ3MgdGhhdCBhcmUgaW5jbHVkZWQgd2l0aCB3aW5kb3dzLiBNYW55CiAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dzIERMTCdzIGNhbiBiZSBsb2FkZWQgaW4gdGhlaXIgbmF0aXZlCiAgICAgICAgICAgICAgICAgICAgICBmb3JtLiBNYW55IHRpbWVzIHRoZXNlIG5hdGl2ZSB2ZXJzaW9ucyB3b3JrCiAgICAgICAgICAgICAgICAgICAgICBiZXR0ZXIgdGhhbiB0aGVpciBub24tTWljcm9zb2Z0IGVxdWl2YWxlbnQgLS0KICAgICAgICAgICAgICAgICAgICAgIG90aGVyIHRpbWVzIHRoZXkgZG9uJ3QuCiAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgICAgIDx0ZXJtPmVsZmRsbDwvdGVybT4KICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgRUxGIGVuY2Fwc3VsYXRlZCB3aW5kb3dzIERMTCdzLiBUaGlzIGlzIGN1cnJlbnRseQogICAgICAgICAgICAgICAgICAgICAgZXhwZXJpbWVudGFsIChOb3Qgd29ya2luZyB5ZXQpLgogICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgICAgICA8dGVybT5zbzwvdGVybT4KICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgTmF0aXZlIEVMRiBsaWJyYXJpZXMuIFdpbGwgbm90IHdvcmsgeWV0LgogICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgICAgICA8dGVybT5idWlsdGluPC90ZXJtPgogICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICBUaGUgbW9zdCBjb21tb24gZm9ybSBvZiBETEwgbG9hZGluZy4gVGhpcyBpcwogICAgICAgICAgICAgICAgICAgICAgd2hhdCB5b3Ugd2lsbCB1c2UgaWYgdGhlIERMTCBpcyBlcnJvci1wcm9uZSBpbgogICAgICAgICAgICAgICAgICAgICAgbmF0aXZlIGZvcm0gKEtFUk5FTCBmb3IgZXhhbXBsZSksIHlvdSBkb24ndCBoYXZlCiAgICAgICAgICAgICAgICAgICAgICB0aGUgbmF0aXZlIERMTCwgb3IgeW91IGp1c3Qgd2FudCB0byBiZQogICAgICAgICAgICAgICAgICAgICAgTWljcm9zb2Z0LWZyZWUuCiAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8L3ZhcmlhYmxlbGlzdD4KICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9zZWN0ND4KICAgICAgICA8L3NlY3QzPgoKICAgICAgICA8c2VjdDM+CiAgICAgICAgICA8dGl0bGU+VGhlIFtEbGxEZWZhdWx0c10gU2VjdGlvbjwvdGl0bGU+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgVGhlc2Ugc2V0dGluZ3MgcHJvdmlkZSB3aW5lJ3MgZGVmYXVsdCBoYW5kbGluZyBvZiBETEwgbG9hZGluZy4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IkRlZmF1bHRMb2FkT3JkZXIiID0iIG5hdGl2ZSwgc28sIGJ1aWx0aW4iPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBUaGlzIHNldHRpbmcgaXMgYSBjb21tYS1kZWxpbWl0ZWQgbGlzdCBvZiB3aGljaCBvcmRlciB0bwogICAgICAgICAgICBhdHRlbXB0IGxvYWRpbmcgRExMJ3MuIElmIHRoZSBmaXJzdCBvcHRpb24gZmFpbHMsIGl0IHdpbGwKICAgICAgICAgICAgdHJ5IHRoZSBzZWNvbmQsIGFuZCBzbyBvbi4gVGhlIG9yZGVyIHNwZWNpZmllZCBhYm92ZSBpcwogICAgICAgICAgICBwcm9iYWJseSB0aGUgYmVzdCBpbiBtb3N0IGNvbmRpdGlvbnMuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgPC9zZWN0Mz4KCiAgICAgICAgPHNlY3QzPgogICAgICAgICAgPHRpdGxlPlRoZSBbRGxsUGFpcnNdIFNlY3Rpb248L3RpdGxlPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICBBdCBvbmUgdGltZSwgdGhlcmUgd2FzIGEgc2VjdGlvbiBjYWxsZWQgW0RsbFBhaXJzXSBpbiB0aGUgCiAgICAgICAgICBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gZmlsZSwgYnV0IHRoaXMgaGFzIGJlZW4gb2Jzb2xldGVkCiAgICAgICAgICBiZWNhdXNlIHRoZSBwYWlyaW5nIGluZm9ybWF0aW9uIGhhcyBub3cgYmVlbiBlbWJlZGRlZCBpbnRvCiAgICAgICAgICBXaW5lIGl0c2VsZi4gKFRoZSBwdXJwb3NlIG9mIHRoaXMgc2VjdGlvbiB3YXMgbWVyZWx5IHRvIGJlCiAgICAgICAgICBhYmxlIHRvIGlzc3VlIHdhcm5pbmdzIGlmIHRoZSB1c2VyIGF0dGVtcHRlZCB0byBwYWlyCiAgICAgICAgICBjb2RlcGVuZGVudCAxNi1iaXQvMzItYml0IERMTHMgb2YgZGlmZmVyZW50IHR5cGVzLikgSWYgeW91CiAgICAgICAgICBzdGlsbCBoYXZlIHRoaXMgaW4geW91ciA8ZmlsZW5hbWU+d2luZS5jb25mPC9maWxlbmFtZT4gb3IKICAgICAgICAgIDxmaWxlbmFtZT5+Ly53aW5lL2NvbmZpZzwvZmlsZW5hbWU+LCB5b3UgbWF5IHNhZmVseSBkZWxldGUgaXQuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNlY3QzPgogICAgICAgICAgPHRpdGxlPlRoZSBbRGxsT3ZlcnJpZGVzXSBTZWN0aW9uPC90aXRsZT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBUaGUgZm9ybWF0IGZvciB0aGlzIHNlY3Rpb24gaXMgdGhlIHNhbWUgZm9yIGVhY2ggbGluZToKICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgombHQ7RExMPnssJmx0O0RMTD4sJmx0O0RMTD4uLi59ID0gJmx0O0ZPUk0+eywmbHQ7Rk9STT4sJmx0O0ZPUk0+Li4ufQogICAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIEZvciBleGFtcGxlLCB0byBsb2FkIGJ1aWx0aW4gS0VSTkVMIHBhaXIgKGNhc2UgZG9lc24ndAogICAgICAgICAgICBtYXR0ZXIgaGVyZSk6CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KImtlcm5lbCxrZXJuZWwzMiIgPSAiYnVpbHRpbiIKICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBUbyBsb2FkIHRoZSBuYXRpdmUgQ09NTURMRyBwYWlyLCBidXQgaWYgdGhhdCBkb2Vzbid0IHdvcmsKICAgICAgICAgICAgdHJ5IGJ1aWx0aW46CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KImNvbW1kbGcsY29tZGxnMzIiID0gIm5hdGl2ZSxidWlsdGluIgogICAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFRvIGxvYWQgdGhlIG5hdGl2ZSBDT01DVEwzMjoKICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgoiY29tY3RsMzIiID0gIm5hdGl2ZSIKICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBIZXJlIGlzIGEgZ29vZCBnZW5lcmljIHNldHVwIChBcyBpdCBpcyBkZWZpbmVkIGluIGNvbmZpZwogICAgICAgICAgICB0aGF0IHdhcyBpbmNsdWRlZCB3aXRoIHlvdXIgd2luZSBwYWNrYWdlKToKICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgpbRGxsT3ZlcnJpZGVzXQoiY29tbWRsZyIgICAgICA9ICJidWlsdGluLCBuYXRpdmUiCiJjb21kbGczMiIgICAgID0gImJ1aWx0aW4sIG5hdGl2ZSIKInZlciIgICAgICAgICAgPSAiYnVpbHRpbiwgbmF0aXZlIgoidmVyc2lvbiIgICAgICA9ICJidWlsdGluLCBuYXRpdmUiCiJzaGVsbCIgICAgICAgID0gImJ1aWx0aW4sIG5hdGl2ZSIKInNoZWxsMzIiICAgICAgPSAiYnVpbHRpbiwgbmF0aXZlIgoibHpleHBhbmQiICAgICA9ICJidWlsdGluLCBuYXRpdmUiCiJsejMyIiAgICAgICAgID0gImJ1aWx0aW4sIG5hdGl2ZSIKImNvbWN0bDMyIiAgICAgPSAiYnVpbHRpbiwgbmF0aXZlIgoiY29tbWN0cmwiICAgICA9ICJidWlsdGluLCBuYXRpdmUiCiJ3c29jazMyIiAgICAgID0gImJ1aWx0aW4iCiJ3aW5zb2NrIiAgICAgID0gImJ1aWx0aW4iCiJhZHZhcGkzMiIgICAgID0gImJ1aWx0aW4sIG5hdGl2ZSIKImNydGRsbCIgICAgICAgPSAiYnVpbHRpbiwgbmF0aXZlIgoibXByIiAgICAgICAgICA9ICJidWlsdGluLCBuYXRpdmUiCiJ3aW5zcG9vbC5kcnYiID0gImJ1aWx0aW4sIG5hdGl2ZSIKImRkcmF3IiAgICAgICAgPSAiYnVpbHRpbiwgbmF0aXZlIgoiZGlucHV0IiAgICAgICA9ICJidWlsdGluLCBuYXRpdmUiCiJkc291bmQiICAgICAgID0gImJ1aWx0aW4sIG5hdGl2ZSIKIm1tc3lzdGVtIiAgICAgPSAiYnVpbHRpbiIKIndpbm1tIiAgICAgICAgPSAiYnVpbHRpbiIKIm1zdmNydCIgICAgICAgPSAibmF0aXZlLCBidWlsdGluIgoibXN2aWRlbyIgICAgICA9ICJidWlsdGluLCBuYXRpdmUiCiJtc3ZmdzMyIiAgICAgID0gImJ1aWx0aW4sIG5hdGl2ZSIKIm1jaWNkYS5kcnYiICAgPSAiYnVpbHRpbiwgbmF0aXZlIgoibWNpc2VxLmRydiIgICA9ICJidWlsdGluLCBuYXRpdmUiCiJtY2l3YXZlLmRydiIgID0gImJ1aWx0aW4sIG5hdGl2ZSIKIm1jaWF2aS5kcnYiICAgPSAibmF0aXZlLCBidWlsdGluIgoibWNpYW5pbS5kcnYiICA9ICJuYXRpdmUsIGJ1aWx0aW4iCiJtc2FjbS5kcnYiICAgID0gImJ1aWx0aW4sIG5hdGl2ZSIKIm1zYWNtIiAgICAgICAgPSAiYnVpbHRpbiwgbmF0aXZlIgoibXNhY20zMiIgICAgICA9ICJidWlsdGluLCBuYXRpdmUiCiJtaWRpbWFwLmRydiIgID0gImJ1aWx0aW4sIG5hdGl2ZSIKInduYXNwaTMyIiAgICAgPSAiYnVpbHRpbiIKImljbXAiICAgICAgICAgPSAiYnVpbHRpbiIKICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxub3RlPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBZb3Ugc2VlIHRoYXQgZWxmZGxsIG9yIHNvIGlzIHRoZSBmaXJzdCBvcHRpb24gZm9yIGEgZmV3CiAgICAgICAgICAgICAgb2YgdGhlc2UgZGxsJ3MuIFRoaXMgd2lsbCBmYWlsIGZvciB5b3UsIGJ1dCB5b3Ugd29uJ3QKICAgICAgICAgICAgICBub3RpY2UgaXQgYXMgd2luZSB3aWxsIGp1c3QgdXNlIHRoZSBzZWNvbmQgb3IgdGhpcmQKICAgICAgICAgICAgICBvcHRpb24uCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbm90ZT4KICAgICAgICA8L3NlY3QzPgoKICAgICAgICA8c2VjdDM+CiAgICAgICAgICA8dGl0bGU+VGhlIFtvcHRpb25zXSBTZWN0aW9uPC90aXRsZT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBObyBvbmUgc2VlbXMgdG8ga25vdyB3aGF0IHRoaXMgc2VjdGlvbiBpcy4uLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KIkFsbG9jU3lzdGVtQ29sb3JzIiA9ICIxMDAiCiAgICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICAgIFN5c3RlbSBjb2xvcnMgdG8gYWxsb2NhdGU/IEp1c3QgbGVhdmUgaXQgYXQgMTAwLgogICAgICAgICAgPC9wYXJhPgogICAgICAgIDwvc2VjdDM+CgogICAgICAgIDxzZWN0Mz4KICAgICAgICAgIDx0aXRsZT5UaGUgW2ZvbnRzXSBTZWN0aW9uPC90aXRsZT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBUaGlzIHNlY3Rpb24gc2V0cyB1cCB3aW5lJ3MgZm9udCBoYW5kbGluZy4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IlJlc29sdXRpb24iID0gIjk2IjwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgU2luY2UgdGhlIHdheSBYIGhhbmRsZXMgZm9udHMgaXMgZGlmZmVyZW50IGZyb20gdGhlIHdheQogICAgICAgICAgICBXaW5kb3dzIGRvZXMsIHdpbmUgdXNlcyBhIHNwZWNpYWwgbWVjaGFuaXNtIHRvIGRlYWwgd2l0aAogICAgICAgICAgICB0aGVtLiBJdCBtdXN0IHNjYWxlIHRoZW0gdXNpbmcgdGhlIG51bWJlciBkZWZpbmVkIGluIHRoZQogICAgICAgICAgICAiUmVzb2x1dGlvbiIgc2V0dGluZy4gNjAtMTIwIGFyZSByZWFzb25hYmxlIHZhbHVlcywgOTYgaXMKICAgICAgICAgICAgYSBuaWNlIGluIHRoZSBtaWRkbGUgb25lLiBJZiB5b3UgaGF2ZSB0aGUgcmVhbCB3aW5kb3dzCiAgICAgICAgICAgIGZvbnRzIGF2YWlsYWJsZSAoPGZpbGVuYW1lPiZsdDtkaXJzIHRvCiAgICAgICAgICAgICAgd2luZT4vZG9jdW1lbnRhdGlvbi90dGZzZXJ2ZXI8L2ZpbGVuYW1lPiBhbmQKICAgICAgICAgICAgPGZpbGVuYW1lPmZvbnRzPC9maWxlbmFtZT4pLCB0aGlzIHBhcmFtZXRlciB3aWxsIG5vdCBiZSBhcwogICAgICAgICAgICBpbXBvcnRhbnQuIE9mIGNvdXJzZSwgaXQncyBhbHdheXMgZ29vZCB0byBnZXQgeW91ciBYIGZvbnRzCiAgICAgICAgICAgIHdvcmtpbmcgYWNjZXB0YWJseSBpbiB3aW5lLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4iRGVmYXVsdCIgPSAiLWFkb2JlLXRpbWVzLSI8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgICBUaGUgZGVmYXVsdCBmb250IHdpbmUgdXNlcy4gRm9vbCBhcm91bmQgd2l0aCBpdCBpZiB5b3UnZCBsaWtlLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+Ck9QVElPTkFMOiAKICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBUaGUgPGxpdGVyYWw+QWxpYXM8L2xpdGVyYWw+IHNldHRpbmcgYWxsb3dzIHlvdSB0byBtYXAgYW4gWCBmb250IHRvIGEgZm9udAogICAgICAgICAgICB1c2VkIGluIHdpbmUuIFRoaXMgaXMgZ29vZCBmb3IgYXBwcyB0aGF0IG5lZWQgYSBzcGVjaWFsIGZvbnQgeW91IGRvbid0IGhhdmUsCiAgICAgICAgICAgIGJ1dCBhIGdvb2QgcmVwbGFjZW1lbnQgZXhpc3RzLiBUaGUgc3ludGF4IGlzIGxpa2Ugc286CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KIkFsaWFzWCIgPSAiW0Zha2Ugd2luZG93cyBuYW1lXSxbUmVhbCBYIG5hbWVdIiZsdDssb3B0aW9uYWwgIm1hc2tpbmciIHNlY3Rpb24+CiAgICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgUHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gUmVwbGFjZSAiQWxpYXNYIiB3aXRoICJBbGlhczAiLAogICAgICAgICAgICB0aGVuICJBbGlhczEiIGFuZCBzbyBvbi4gVGhlIGZha2Ugd2luZG93cyBuYW1lIGlzIHRoZSBuYW1lCiAgICAgICAgICAgIHRoYXQgdGhlIGZvbnQgd2lsbCBiZSB1bmRlciBhIHdpbmRvd3MgYXBwIGluIHdpbmUuIFRoZQogICAgICAgICAgICByZWFsIFggbmFtZSBpcyB0aGUgZm9udCBuYW1lIGFzIHNlZW4gYnkgWCAoUnVuCiAgICAgICAgICAgICJ4Zm9udHNlbCIpLiBUaGUgb3B0aW9uYWwgIm1hc2tpbmciIHNlY3Rpb24gYWxsb3dzIHlvdSB0bwogICAgICAgICAgICB1dGlsaXplIHRoZSBmYWtlIHdpbmRvd3MgbmFtZSB5b3UgZGVmaW5lLiBJZiBpdCBpcyBub3QKICAgICAgICAgICAgdXNlZCwgdGhlbiB3aW5lIHdpbGwganVzdCB0cnkgdG8gZXh0cmFjdCB0aGUgZmFrZSB3aW5kb3dzCiAgICAgICAgICAgIG5hbWUgaXRzZWxmIGFuZCBub3QgdXNlIHRoZSB2YWx1ZSB5b3UgZW50ZXIuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIG9mIGFuIGFsaWFzIHdpdGhvdXQgbWFza2luZy4gVGhlIGZvbnQgd2lsbCBzaG93IHVwIGluIHdpbmRvd3MKICAgICAgICAgICAgYXBwcyBhcyAiR29vZ2xlIi4gV2hlbiBkZWZpbmluZyBhbiBhbGlhcyBpbiBhIGNvbmZpZyBmaWxlLCBmb3JnZXQgYWJvdXQgbXkKICAgICAgICAgICAgY29tbWVudCB0ZXh0IChUaGUgIiZsdDstLSBibGFoIiBzdHVmZikKICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgoiQWxpYXMwIiA9ICJGb28sLS1nb29nbGUtIiAgICAgICZsdDsKICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgd2l0aCBtYXNraW5nIGVuYWJsZWQuIFRoZSBmb250IHdpbGwgc2hvdyB1cCBhcyAiRm9vIiBpbgogICAgICAgICAgICB3aW5kb3dzIGFwcHMuCiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KIkFsaWFzMSIgPSAiRm9vLC0tZ29vZ2xlLSxzdWJzdCIKICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBGb3IgbW9yZSBpbmZvIGNoZWNrIG91dCA8ZmlsZW5hbWU+Jmx0O2RpcnMgdG8gd2luZT4vZG9jdW1lbnRhdGlvbi9mb250czwvZmlsZW5hbWU+CiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgPC9zZWN0Mz4KCiAgICAgICAgPHNlY3QzPgogICAgICAgICAgPHRpdGxlPlRoZSBbc2VyaWFscG9ydHNdLCBbcGFyYWxsZWxwb3J0c10sIFtzcG9vbGVyXSwgYW5kIFtwb3J0c10gU2VjdGlvbnM8L3RpdGxlPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIEV2ZW4gdGhvdWdoIGl0IHNvdW5kcyBsaWtlIGEgbG90IG9mIHNlY3Rpb25zLCB0aGVzZSBhcmUKICAgICAgICAgICAgYWxsIGNsb3NlbHkgcmVsYXRlZC4gVGhleSBhcmUgYWxsIGZvciBjb21tdW5pY2F0aW9ucyBhbmQKICAgICAgICAgICAgcGFyYWxsZWwgcG9ydHMuIAogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFRoZSBbc2VyaWFscG9ydHNdIHNlY3Rpb24gdGVsbHMgd2luZSB3aGF0IHNlcmlhbCBwb3J0cyBpdAogICAgICAgICAgICBpcyBhbGxvd2VkIHRvIHVzZS4KICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJDb21YIiA9ICIvZGV2L2N1YVkiPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBSZXBsYWNlIDxsaXRlcmFsPlg8L2xpdGVyYWw+IHdpdGggdGhlIG51bWJlciBvZiB0aGUgQ09NCiAgICAgICAgICAgIHBvcnQgaW4gV2luZG93cyAoMS04KSBhbmQgPGxpdGVyYWw+WTwvbGl0ZXJhbD4gd2l0aCB0aGUKICAgICAgICAgICAgbnVtYmVyIG9mIGl0IGluIDxsaXRlcmFsPlg8L2xpdGVyYWw+IChVc3VhbGx5IHRoZSBudW1iZXIKICAgICAgICAgICAgb2YgdGhlIHBvcnQgaW4gV2luZG93cyBtaW51cyAxKS4gPGxpdGVyYWw+Q29tWDwvbGl0ZXJhbD4KICAgICAgICAgICAgY2FuIGFjdHVhbGx5IGVxdWFsIGFueSBkZXZpY2UKICAgICAgICAgICAgKDxtZWRpYWxhYmVsPi9kZXYvbW9kZW08L21lZGlhbGFiZWw+IGlzIGFjY2VwdGFibGUpLiBJdCBpcwogICAgICAgICAgICBub3QgYWx3YXlzIG5lY2Vzc2FyeSB0byBkZWZpbmUgYW55IENPTSBwb3J0cyAoQW4gb3B0aW9uYWwKICAgICAgICAgICAgc2V0dGluZykuIEhlcmUgaXMgYW4gZXhhbXBsZToKICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJDb20xIiA9ICIvZGV2L2N1YTAiPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBVc2UgYXMgbWFueSBvZiB0aGVzZSBhcyB5b3UgbGlrZSBpbiB0aGUgc2VjdGlvbiB0byBkZWZpbmUKICAgICAgICAgICAgYWxsIG9mIHRoZSBDT00gcG9ydHMgeW91IG5lZWQuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgVGhlIFtwYXJhbGxlbHBvcnRzXSBzZWN0aW9uIHNldHMgdXAgYW55IHBhcmFsbGVsIHBvcnRzCiAgICAgICAgICAgIHRoYXQgd2lsbCBiZSBhbGxvd2VkIGFjY2VzcyB1bmRlciB3aW5lLgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IkxwdFgiID0gIi9kZXYvbHBZIjwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgU291bmRzIGZhbWlsaWFyPyBTeW50YXggaXMganVzdCBsaWtlIHRoZSBDT00gcG9ydCBzZXR0aW5nLgogICAgICAgICAgICBSZXBsYWNlIDxsaXRlcmFsPlg8L2xpdGVyYWw+IHdpdGggYSB2YWx1ZSBmcm9tIDEtNCBhcyBpdAogICAgICAgICAgICBpcyBpbiBXaW5kb3dzIGFuZCA8bGl0ZXJhbD5ZPC9saXRlcmFsPiB3aXRoIGEgdmFsdWUgZnJvbQogICAgICAgICAgICAwLTMgKDxsaXRlcmFsPlk8L2xpdGVyYWw+IGlzIHVzdWFsbHkgdGhlIHZhbHVlIGluIHdpbmRvd3MKICAgICAgICAgICAgbWludXMgMSwganVzdCBsaWtlIGZvciBDT00gcG9ydHMpLiBZb3UgZG9uJ3QgYWx3YXlzIG5lZWQKICAgICAgICAgICAgdG8gZGVmaW5lIGEgcGFyYWxsZWwgcG9ydCAoQUtBLCBpdCdzIG9wdGlvbmFsKS4gQXMgd2l0aAogICAgICAgICAgICB0aGUgb3RoZXIgc2VjdGlvbiwgTHB0WCBjYW4gZXF1YWwgIGFueSBkZXZpY2UgKE1heWJlCiAgICAgICAgICAgIDxtZWRpYWxhYmVsPi9kZXYvcHJpbnRlcjwvbWVkaWFsYWJlbD4pLiBIZXJlIGlzIGFuCiAgICAgICAgICAgIGV4YW1wbGU6ICA8cHJvZ3JhbWxpc3Rpbmc+IkxwdDEiID0gIi9kZXYvbHAwIjwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgVGhlIFtzcG9vbGVyXSBzZWN0aW9uIHdpbGwgaW5mb3JtIHdpbmUgd2hlcmUgdG8gc3Bvb2wKICAgICAgICAgICAgcHJpbnQgam9icy4gVXNlIHRoaXMgaWYgeW91IHdhbnQgdG8gdHJ5IHByaW50aW5nLiBXaW5lCiAgICAgICAgICAgIGRvY3MgY2xhaW0gdGhhdCBzcG9vbGluZyBpcyAicmF0aGVyIHByaW1pdGl2ZSIgYXQgdGhpcwogICAgICAgICAgICB0aW1lLCBzbyBpdCB3b24ndCB3b3JrIHBlcmZlY3RseS4gSVQgSVMgT1BUSU9OQUwuIFRoZSBvbmx5CiAgICAgICAgICAgIHNldHRpbmcgeW91IHVzZSBpbiB0aGlzIHNlY3Rpb24gd29ya3MgdG8gbWFwIGEgcG9ydCAoTFBUMSwKICAgICAgICAgICAgZm9yIGV4YW1wbGUpIHRvIGEgZmlsZSBvciBhIGNvbW1hbmQuIEhlcmUgaXMgYW4gZXhhbXBsZSwKICAgICAgICAgICAgbWFwcGluZyBMUFQxIHRvIHRoZSBmaWxlIDxmaWxlbmFtZT5vdXQucHM8L2ZpbGVuYW1lPjogCiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4iTFBUMToiID0gIm91dC5wcyI8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY29tbWFuZCBtYXBzIHByaW50aW5nIGpvYnMgdG8gTFBUMSB0byB0aGUKICAgICAgICAgICAgY29tbWFuZCA8Y29tbWFuZD5scHI8L2NvbW1hbmQ+LiBOb3RpY2UgIHRoZSB8OiAKICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJMUFQxOiIgPSAifGxwciI8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFRoZSBbcG9ydHNdIHNlY3Rpb24gaXMgdXN1YWxseSB1c2VmdWwgb25seSBmb3IgcGVvcGxlIHdobwogICAgICAgICAgICBuZWVkIGRpcmVjdCBwb3J0IGFjY2VzcyBmb3IgcHJvZ3JhbXMgcmVxdWlyaW5nIGRvbmdsZXMgb3IKICAgICAgICAgICAgc2Nhbm5lcnMuIElGIFlPVSBET04nVCBORUVEIElULCBET04nVCBVU0UgSVQhIAogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4icmVhZCIgPSAiMHg3NzksMHgzNzksMHgyODAtMHgyYTAiPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgICAgR2l2ZXMgZGlyZWN0IHJlYWQgYWNjZXNzIHRvIHRob3NlIElPJ3MuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJ3cml0ZSIgPSAiMHg3NzksMHgzNzksMHgyODAtMHgyYTAiPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgICAgR2l2ZXMgZGlyZWN0IHdyaXRlIGFjY2VzcyB0byB0aG9zZSBJTydzLiBJdCdzIHByb2JhYmx5IGEKICAgICAgICAgICAgZ29vZCBpZGVhIHRvIGtlZXAgdGhlIHZhbHVlcyBvZiB0aGUKICAgICAgICAgICAgPGxpdGVyYWw+cmVhZDwvbGl0ZXJhbD4gYW5kIDxsaXRlcmFsPndyaXRlPC9saXRlcmFsPgogICAgICAgICAgICBzZXR0aW5ncyB0aGUgc2FtZS4gVGhpcyBzdHVmZiB3aWxsIG9ubHkgd29yayB3aGVuIHlvdSdyZQogICAgICAgICAgICByb290LgogICAgICAgICAgPC9wYXJhPgogICAgICAgIDwvc2VjdDM+CgogICAgICAgIDxzZWN0Mz4KICAgICAgICAgIDx0aXRsZT5UaGUgW3NweV0sIFtSZWdpc3RyeV0sIFt0d2Vhay5sYXlvdXRdLCBhbmQgW3Byb2dyYW1zXSBTZWN0aW9uczwvdGl0bGU+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgW3NweV0gaXMgdXNlZCB0byBpbmNsdWRlIG9yIGV4Y2x1ZGUgZGVidWcgbWVzc2FnZXMsIGFuZCB0bwogICAgICAgICAgICBvdXRwdXQgdGhlbSB0byBhIGZpbGUuIFRoZSBsYXR0ZXIgaXMgcmFyZWx5IHVzZWQuIFRIRVNFCiAgICAgICAgICAgIEFSRSBBTEwgT1BUSU9OQUwgQU5EIFlPVSBQUk9CQUJMWSBET04nVCBORUVEIFRPIEFERCBPUgogICAgICAgICAgICBSRU1PVkUgQU5ZVEhJTkcgSU4gVEhJUyBTRUNUSU9OIFRPIFlPVVIgQ09ORklHLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4iRmlsZSIgPSAiL2JsYW5jbyI8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgICBTZXRzIHRoZSBsb2dmaWxlIGZvciB3aW5lLiBTZXQgdG8gQ09OIHRvIGxvZyB0byBzdGFuZGFyZCBvdXQuCiAgICAgICAgICAgIFRISVMgSVMgUkFSRUxZIFVTRUQuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJFeGNsdWRlIiA9ICJXTV9TSVpFO1dNX1RJTUVSOyI8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgICBFeGNsdWRlcyBkZWJ1ZyBtZXNzYWdlcyBhYm91dCA8Y29uc3RhbnQ+V01fU0laRTwvY29uc3RhbnQ+CiAgICAgICAgICAgIGFuZCA8Y29uc3RhbnQ+V01fVElNRVI8L2NvbnN0YW50PiBpbiB0aGUgbG9nZmlsZS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IkluY2x1ZGUiID0gIldNX1NJWkU7V01fVElNRVI7IjwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICAgIEluY2x1ZGVzIGRlYnVnIG1lc3NhZ2VzIGFib3V0IDxjb25zdGFudD5XTV9TSVpFPC9jb25zdGFudD4KICAgICAgICAgICAgYW5kIDxjb25zdGFudD5XTV9USU1FUjwvY29uc3RhbnQ+IGluIHRoZSBsb2dmaWxlLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFtSZWdpc3RyeV0gY2FuIGJlIHVzZWQgdG8gdGVsbCB3aW5lIHdoZXJlIHlvdXIgb2xkIHdpbmRvd3MKICAgICAgICAgICAgcmVnaXN0cnkgZmlsZXMgZXhpc3QuIFRoaXMgc2VjdGlvbiBpcyBjb21wbGV0ZWx5IG9wdGlvbmFsCiAgICAgICAgICAgIGFuZCB1c2VsZXNzIHRvIHBlb3BsZSB1c2luZyB3aW5lIHdpdGhvdXQgYW4gZXhpc3RpbmcKICAgICAgICAgICAgd2luZG93cyBpbnN0YWxsYXRpb24uCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJVc2VyRmlsZU5hbWUiID0gIi9kaXJzL3RvL3VzZXIucmVnIjwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICAgIFRoZSBsb2NhdGlvbiBvZiB5b3VyIG9sZCA8ZmlsZW5hbWU+dXNlci5yZWc8L2ZpbGVuYW1lPiBmaWxlLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFt0d2Vhay5sYXlvdXRdIGlzIGRldm90ZWQgdG8gd2luZSdzIGxvb2suIFRoZXJlIGlzIG9ubHkKICAgICAgICAgICAgb25lIHNldHRpbmcgZm9yIGl0LgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4iV2luZUxvb2siID0gIndpbjMxfHdpbjk1fHdpbjk4IjwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICAgIFdpbGwgY2hhbmdlIHRoZSBsb29rIG9mIHdpbmUgZnJvbSBXaW5kb3dzIDMuMSB0byBXaW5kb3dzIDk1LgogICAgICAgICAgICBUaGUgPGxpdGVyYWw+d2luOTg8L2xpdGVyYWw+IHNldHRpbmcgYmVoYXZlcwogICAgICAgICAgICBqdXN0IGxpa2UgPGxpdGVyYWw+d2luOTU8L2xpdGVyYWw+IG1vc3Qgb2YgdGhlIHRpbWUuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgW3Byb2dyYW1zXSBjYW4gYmUgdXNlZCB0byBzYXkgd2hhdCBwcm9ncmFtcyBydW4gdW5kZXIKICAgICAgICAgICAgc3BlY2lhbCBjb25kaXRpb25zLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4iRGVmYXVsdCIgPSAiL3Byb2dyYW0vdG8vZXhlY3V0ZS5leGUiPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgICAgU2V0cyB0aGUgcHJvZ3JhbSB0byBiZSBydW4gaWYgd2luZSBpcyBzdGFydGVkIHdpdGhvdXQgc3BlY2lmeWluZyBhIHByb2dyYW0uCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJTdGFydHVwIiA9ICIvcHJvZ3JhbS90by9leGVjdXRlLmV4ZSI8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgICBTZXRzIHRoZSBwcm9ncmFtIHRvIGF1dG9tYXRpY2FsbHkgYmUgcnVuIGF0IHN0YXJ0dXAgZXZlcnkgdGltZS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICA8L3NlY3QzPgogICAgICA8L3NlY3QyPgoKICAgICAgPHNlY3QyPgogICAgICAgIDx0aXRsZT5XaGVyZSBEbyBJIFB1dCBJdD88L3RpdGxlPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIHdpbmUgY29uZmlnIGZpbGUgY2FuIGdvIGluIHR3byBwbGFjZXMuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDx2YXJpYWJsZWxpc3Q+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+CiAgICAgICAgTW9zdCBXaW5lIHVzZXJzIHJ1biBXaW5lIHVuZGVyIHRoZSB3aW5kb3dpbmcgc3lzdGVtIGtub3duIGFzCiAgICAgICAgWDExLiBEdXJpbmcgbW9zdCBvZiBXaW5lJ3MgaGlzdG9yeSwgdGhpcyB3YXMgdGhlIG9ubHkgZGlzcGxheQogICAgICAgIGRyaXZlciBhdmFpbGFibGUsIGJ1dCBpbiByZWNlbnQgeWVhcnMsIHBhcnRzIG9mIFdpbmUgaGFzIGJlZW4KICAgICAgICByZW9yZ2FuaXplZCB0byBhbGxvdyBmb3Igb3RoZXIgZGlzcGxheSBkcml2ZXJzIChhbHRob3VnaCB0aGUKICAgICAgICBvbmx5IGFsdGVybmF0aXZlIGN1cnJlbnRseSBhdmFpbGFibGUgaXMgUGF0cmlrIFN0cmlkdmFsbCdzCiAgICAgICAgbmN1cnNlcy1iYXNlZCB0dHlkcnYsIHdoaWNoIGhlIGNsYWltcyB3b3JrcyBmb3IgZGlzcGxheWluZwogICAgICAgIGNhbGMuZXhlKS4gVGhlIGRpc3BsYXkgZHJpdmVyIGlzIGNob3NlbiB3aXRoIHRoZQogICAgICAgIDxsaXRlcmFsPkdyYXBoaWNzRHJpdmVyPC9saXRlcmFsPiBvcHRpb24gaW4gdGhlIFt3aW5lXSBzZWN0aW9uCiAgICAgICAgb2YgPGZpbGVuYW1lPn4vLndpbmUvY29uZmlnPC9maWxlbmFtZT4sIGJ1dCBJIHdpbGwgb25seSBjb3ZlciB0aGUKICAgICAgICB4MTFkcnYgZHJpdmVyIGluIHRoaXMgYXJ0aWNsZS4KICAgICAgPC9wYXJhPgoKICAgICAgPHNlY3QyPgogICAgICAgIDx0aXRsZT54MTFkcnYgbW9kZXMgb2Ygb3BlcmF0aW9uPC90aXRsZT4KICAKICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSB4MTFkcnYgZHJpdmVyIGNvbnNpc3RzIG9mIHR3byBjb25jZXB0dWFsbHkgZGlzdGluY3QKICAgICAgICAgIHBpZWNlcywgdGhlIGdyYXBoaWNzIGRyaXZlciAoR0RJIHBhcnQpLCBhbmQgdGhlIHdpbmRvd2luZwogICAgICAgICAgZHJpdmVyIChVU0VSIHBhcnQpLiBCb3RoIG9mIHRoZXNlIGFyZSBsaW5rZWQgaW50byB0aGUKICAgICAgICAgIDxmaWxlbmFtZT5saWJ4MTFkcnYuc288L2ZpbGVuYW1lPiBtb2R1bGUsIHRob3VnaCAod2hpY2ggeW91CiAgICAgICAgICBsb2FkIHdpdGggdGhlIDxsaXRlcmFsPkdyYXBoaWNzRHJpdmVyPC9saXRlcmFsPiBvcHRpb24pLiBJbgogICAgICAgICAgV2luZSwgcnVubmluZyBvbiBYMTEsIHRoZSBncmFwaGljcyBkcml2ZXIgbXVzdCBkcmF3IG9uCiAgICAgICAgICBkcmF3YWJsZXMgKHdpbmRvdyBpbnRlcmlvcnMpIHByb3ZpZGVkIGJ5IHRoZSB3aW5kb3dpbmcKICAgICAgICAgIGRyaXZlci4gVGhpcyBkaWZmZXJzIGEgYml0IGZyb20gdGhlIFdpbmRvd3MgbW9kZWwsIHdoZXJlIHRoZQogICAgICAgICAgd2luZG93aW5nIHN5c3RlbSBjcmVhdGVzIGFuZCBjb25maWd1cmVzIGRldmljZSBjb250ZXh0cwogICAgICAgICAgY29udHJvbGxlZCBieSB0aGUgZ3JhcGhpY3MgZHJpdmVyLCBhbmQgYXBwbGljYXRpb25zIGFyZQogICAgICAgICAgYWxsb3dlZCB0byBob29rIGludG8gdGhpcyByZWxhdGlvbnNoaXAgYW55d2hlcmUgdGhleSBsaWtlLgogICAgICAgICAgVGh1cywgdG8gcHJvdmlkZSBhbnkgcmVhc29uYWJsZSB0cmFkZW9mZiBiZXR3ZWVuCiAgICAgICAgICBjb21wYXRpYmlsaXR5IGFuZCB1c2FiaWxpdHksIHRoZSB4MTFkcnYgaGFzIHRocmVlIGRpZmZlcmVudAogICAgICAgICAgbW9kZXMgb2Ygb3BlcmF0aW9uLgogICAgICAgIDwvcGFyYT4KCiAgICAgICAgPHZhcmlhYmxlbGlzdD4KICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPlVubWFuYWdlZC9Ob3JtYWw8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0LiBXaW5kb3ctbWFuYWdlci1pbmRlcGVuZGVudCAoYW55IHJ1bm5pbmcKICAgICAgICAgICAgICAgIHdpbmRvdyBtYW5hZ2VyIGlzIGlnbm9yZWQgY29tcGxldGVseSkuIFdpbmRvdwogICAgICAgICAgICAgICAgZGVjb3JhdGlvbnMgKHRpdGxlIGJhcnMsIGJvcmRlcnMsIGV0YykgYXJlIGRyYXduIGJ5CiAgICAgICAgICAgICAgICBXaW5lIHRvIGxvb2sgYW5kIGZlZWwgbGlrZSB0aGUgcmVhbCBXaW5kb3dzLiBUaGlzIGlzCiAgICAgICAgICAgICAgICBjb21wYXRpYmxlIHdpdGggYXBwbGljYXRpb25zIHRoYXQgZGVwZW5kIG9uIGJlaW5nIGFibGUKICAgICAgICAgICAgICAgIHRvIGNvbXB1dGUgdGhlIGV4YWN0IHNpemVzIG9mIGFueSBzdWNoIGRlY29yYXRpb25zLCBvcgogICAgICAgICAgICAgICAgdGhhdCB3YW50IHRvIGRyYXcgdGhlaXIgb3duLgogICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PiAgICAgICAgICAKICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPk1hbmFnZWQ8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIFNwZWNpZmllZCBieSB1c2luZyB0aGUKICAgICAgICAgICAgICAgIDxwYXJhbWV0ZXI+LS1tYW5hZ2VkPC9wYXJhbWV0ZXI+IGNvbW1hbmQtbGluZSBvcHRpb24KICAgICAgICAgICAgICAgIG9yIHRoZSA8bGl0ZXJhbD5NYW5hZ2VkPC9saXRlcmFsPgogICAgICAgICAgICAgICAgPGZpbGVuYW1lPndpbmUuY29uZjwvZmlsZW5hbWU+IG9wdGlvbiAoc2VlIGJlbG93KS4KICAgICAgICAgICAgICAgIE9yZGluYXJ5IHRvcC1sZXZlbCBmcmFtZSB3aW5kb3dzIHdpdGggdGhpY2sgYm9yZGVycywKICAgICAgICAgICAgICAgIHRpdGxlIGJhcnMsIGFuZCBzeXN0ZW0gbWVudXMgd2lsbCBiZSBtYW5hZ2VkIGJ5IHlvdXIKICAgICAgICAgICAgICAgIHdpbmRvdyBtYW5hZ2VyLiBUaGlzIGxldHMgdGhlc2UgYXBwbGljYXRpb25zIGludGVncmF0ZQogICAgICAgICAgICAgICAgYmV0dGVyIHdpdGggdGhlIHJlc3Qgb2YgeW91ciBkZXNrdG9wLCBidXQgbWF5IG5vdAogICAgICAgICAgICAgICAgYWx3YXlzIHdvcmsgcGVyZmVjdGx5LiAoQSByZXdyaXRlIG9mIHRoaXMgbW9kZSBvZgogICAgICAgICAgICAgICAgb3BlcmF0aW9uLCB0byBtYWtlIGl0IG1vcmUgcm9idXN0IGFuZCBsZXNzIHBhdGNoeSwgaXMKICAgICAgICAgICAgICAgIGhpZ2hseSBkZXNpcmFibGUsIHRob3VnaCwgYW5kIGlzIHBsYW5uZWQgdG8gYmUgZG9uZQogICAgICAgICAgICAgICAgYmVmb3JlIHRoZSBXaW5lIDEuMCByZWxlYXNlLikKICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPkRlc2t0b3AtaW4tYS1Cb3g8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIFNwZWNpZmllZCBieSB1c2luZyB0aGUKICAgICAgICAgICAgICAgIDxwYXJhbWV0ZXI+LS1kZXNrdG9wPC9wYXJhbWV0ZXI+IGNvbW1hbmQtbGluZSBvcHRpb24KICAgICAgICAgICAgICAgICh3aXRoIGEgZ2VvbWV0cnksIGUuZy4gPHBhcmFtZXRlcj4tLWRlc2t0b3AKICAgICAgICAgICAgICAgICAgODAweDYwMDwvcGFyYW1ldGVyPiBmb3IgYSBzdWNoLXNpemVkIGRlc2t0b3AsIG9yCiAgICAgICAgICAgICAgICBldmVuIDxwYXJhbWV0ZXI+LS1kZXNrdG9wIDgwMHg2MDArMCswPC9wYXJhbWV0ZXI+IHRvCiAgICAgICAgICAgICAgICBhdXRvbWF0aWNhbGx5IHBvc2l0aW9uIHRoZSBkZXNrdG9wIGF0IHRoZSB1cHBlci1sZWZ0CiAgICAgICAgICAgICAgICBjb3JuZXIgb2YgdGhlIGRpc3BsYXkpLiBUaGlzIGlzIHRoZSBtb2RlIG1vc3QKICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgd2l0aCB0aGUgV2luZG93cyBtb2RlbC4gQWxsIGFwcGxpY2F0aW9uCiAgICAgICAgICAgICAgICB3aW5kb3dzIHdpbGwganVzdCBiZSBXaW5lLWRyYXduIHdpbmRvd3MgaW5zaWRlIHRoZQogICAgICAgICAgICAgICAgV2luZS1wcm92aWRlZCBkZXNrdG9wIHdpbmRvdyAod2hpY2ggd2lsbCBpdHNlbGYgYmUKICAgICAgICAgICAgICAgIG1hbmFnZWQgYnkgeW91ciB3aW5kb3cgbWFuYWdlciksIGFuZCBXaW5kb3dzCiAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbnMgY2FuIHJvYW0gZnJlZWx5IHdpdGhpbiB0aGlzIHZpcnR1YWwKICAgICAgICAgICAgICAgIHdvcmtzcGFjZSBhbmQgdGhpbmsgdGhleSBvd24gaXQgYWxsLCB3aXRob3V0CiAgICAgICAgICAgICAgICBkaXN0dXJiaW5nIHlvdXIgb3RoZXIgWCBhcHBzLgogICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgIDwvdmFyaWFibGVsaXN0PgogICAgICA8L3NlY3QyPgoKICAgICAgPHNlY3QyPgogICAgICAgIDx0aXRsZT5UaGUgW3gxMWRydl0gc2VjdGlvbjwvdGl0bGU+CgogICAgICAgIDx2YXJpYWJsZWxpc3Q+CiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT5BbGxvY1N5c3RlbUNvbG9yczwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgQXBwbGllcyBvbmx5IGlmIHlvdSBoYXZlIGEgcGFsZXR0ZS1iYXNlZCBkaXNwbGF5LCBpLmUuCiAgICAgICAgICAgICAgICBpZiB5b3VyIFggc2VydmVyIGlzIHNldCB0byBhIGRlcHRoIG9mIDhicHAsIGFuZCBpZiB5b3UKICAgICAgICAgICAgICAgIGhhdmVuJ3QgcmVxdWVzdGVkIGEgcHJpdmF0ZSBjb2xvciBtYXAuIEl0IHNwZWNpZmllcwogICAgICAgICAgICAgICAgdGhlIG1heGltdW0gbnVtYmVyIG9mIHNoYXJlZCBjb2xvcm1hcCBjZWxscyAocGFsZXR0ZQogICAgICAgICAgICAgICAgZW50cmllcykgV2luZSBzaG91bGQgb2NjdXB5LiBUaGUgaGlnaGVyIHRoaXMgdmFsdWUsCiAgICAgICAgICAgICAgICB0aGUgbGVzcyBjb2xvcnMgd2lsbCBiZSBhdmFpbGFibGUgdG8gb3RoZXIKICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9ucy4KICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4gICAgICAgICAgCiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT5Qcml2YXRlQ29sb3JNYXA8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIEFwcGxpZXMgb25seSBpZiB5b3UgaGF2ZSBhIHBhbGV0dGUtYmFzZWQgZGlzcGxheSwgaS5lLgogICAgICAgICAgICAgICAgaWYgeW91ciBYIHNlcnZlciBpcyBzZXQgdG8gYSBkZXB0aCBvZiA4YnBwLiBJdAogICAgICAgICAgICAgICAgc3BlY2lmaWVzIHRoYXQgeW91IGRvbid0IHdhbnQgdG8gdXNlIHRoZSBzaGFyZWQgY29sb3IKICAgICAgICAgICAgICAgIG1hcCwgYnV0IGEgcHJpdmF0ZSBjb2xvciBtYXAsIHdoZXJlIGFsbCAyNTYgY29sb3JzIGFyZQogICAgICAgICAgICAgICAgYXZhaWxhYmxlLiBUaGUgZGlzYWR2YW50YWdlIGlzIHRoYXQgV2luZSdzIHByaXZhdGUKICAgICAgICAgICAgICAgIGNvbG9yIG1hcCBpcyBvbmx5IHNlZW4gd2hpbGUgdGhlIG1vdXNlIHBvaW50ZXIgaXMKICAgICAgICAgICAgICAgIGluc2lkZSBhIFdpbmUgd2luZG93LCBzbyBwc3ljaGVkZWxpYyBmbGFzaGluZyBhbmQKICAgICAgICAgICAgICAgIGZ1bmt5IGNvbG9ycyB3aWxsIGJlY29tZSByb3V0aW5lIGlmIHlvdSB1c2UgdGhlIG1vdXNlCiAgICAgICAgICAgICAgICBhIGxvdC4KICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4gICAgICAgICAgCiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT5QZXJmZWN0R3JhcGhpY3M8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIFRoaXMgb3B0aW9uIG9ubHkgZGV0ZXJtaW5lcyB3aGV0aGVyIGZhc3QgWDExIHJvdXRpbmVzCiAgICAgICAgICAgICAgICBvciBleGFjdCBXaW5lIHJvdXRpbmVzIHdpbGwgYmUgdXNlZCBmb3IgY2VydGFpbiBST1AKICAgICAgICAgICAgICAgIGNvZGVzIGluIGJsaXQgb3BlcmF0aW9ucy4gTW9zdCB1c2VycyB3b24ndCBub3RpY2UgYW55CiAgICAgICAgICAgICAgICBkaWZmZXJlbmNlLgogICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PiAgICAgICAgICAKICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPlNjcmVlbkRlcHRoPC90ZXJtPgogICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICBBcHBsaWVzIG9ubHkgdG8gbXVsdGktZGVwdGggZGlzcGxheXMuIEl0IHNwZWNpZmllcwogICAgICAgICAgICAgICAgd2hpY2ggb2YgdGhlIGF2YWlsYWJsZSBkZXB0aHMgV2luZSBzaG91bGQgdXNlIChhbmQKICAgICAgICAgICAgICAgIHRlbGwgV2luZG93cyBhcHBzIGFib3V0KS4KICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4gICAgICAgICAgCiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT5EaXNwbGF5PC90ZXJtPgogICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICBUaGlzIHNwZWNpZmllcyB3aGljaCBYMTEgZGlzcGxheSB0byB1c2UsIGFuZCBpZgogICAgICAgICAgICAgICAgc3BlY2lmaWVkLCB3aWxsIG92ZXJyaWRlIGJvdGggdGhlCiAgICAgICAgICAgICAgICA8ZW52YXI+RElTUExBWTwvZW52YXI+IGVudmlyb25tZW50IHZhcmlhYmxlIGFuZCB0aGUKICAgICAgICAgICAgICAgIDxwYXJhbWV0ZXI+LS1kaXNwbGF5PC9wYXJhbWV0ZXI+IGNvbW1hbmQtbGluZSBvcHRpb24uCiAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+ICAgICAgICAgIAogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+TWFuYWdlZDwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgV2luZSBjYW4gbGV0IGZyYW1lIHdpbmRvd3MgYmUgbWFuYWdlZCBieSB5b3VyIHdpbmRvdwogICAgICAgICAgICAgICAgbWFuYWdlci4gVGhpcyBvcHRpb24gc3BlY2lmaWVzIHdoZXRoZXIgeW91IHdhbnQgdGhhdAogICAgICAgICAgICAgICAgYnkgZGVmYXVsdC4KICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4gICAgICAgICAgCiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT5Vc2VER0E8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIFRoaXMgc3BlY2lmaWVzIHdoZXRoZXIgeW91IHdhbnQgRGlyZWN0RHJhdyB0byB1c2UKICAgICAgICAgICAgICAgIFhGcmVlODYncyA8Zmlyc3R0ZXJtPkRpcmVjdCBHcmFwaGljcwogICAgICAgICAgICAgICAgICBBcmNoaXRlY3R1cmU8L2ZpcnN0dGVybT4gKERHQSksIHdoaWNoIGlzIGFibGUgdG8KICAgICAgICAgICAgICAgIHRha2Ugb3ZlciB0aGUgZW50aXJlIGRpc3BsYXkgYW5kIHJ1biB0aGUgZ2FtZQogICAgICAgICAgICAgICAgZnVsbC1zY3JlZW4gYXQgbWF4aW11bSBzcGVlZC4gKFdpdGggREdBMSAoWEZyZWU4NgogICAgICAgICAgICAgICAgMy54KSwgeW91IHN0aWxsIGhhdmUgdG8gY29uZmlndXJlIHRoZSBYIHNlcnZlciB0byB0aGUKICAgICAgICAgICAgICAgIGdhbWUncyByZXF1ZXN0ZWQgYnBwIGZpcnN0LCBidXQgd2l0aCBER0EyIChYRnJlZTg2CiAgICAgICAgICAgICAgICA0LngpLCBydW50aW1lIGRlcHRoLXN3aXRjaGluZyBtYXkgYmUgcG9zc2libGUsCiAgICAgICAgICAgICAgICBkZXBlbmRpbmcgb24geW91ciBkcml2ZXIncyBjYXBhYmlsaXRpZXMuKSBCdXQgYmUgYXdhcmUKICAgICAgICAgICAgICAgIHRoYXQgaWYgV2luZSBjcmFzaGVzIHdoaWxlIGluIERHQSBtb2RlLCBpdCBtYXkgbm90IGJlCiAgICAgICAgICAgICAgICBwb3NzaWJsZSB0byByZWdhaW4gY29udHJvbCBvdmVyIHlvdXIgY29tcHV0ZXIgd2l0aG91dAogICAgICAgICAgICAgICAgcmVib290aW5nLiBER0Egbm9ybWFsbHkgcmVxdWlyZXMgZWl0aGVyIHJvb3QKICAgICAgICAgICAgICAgIHByaXZpbGVnZXMgb3IgcmVhZC93cml0ZSBhY2Nlc3MgdG8KICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vZGV2L21lbTwvZmlsZW5hbWU+LgogICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PiAgICAgICAgICAKICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPlVzZVhTaG08L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIElmIHlvdSBkb24ndCB3YW50IERpcmVjdFggdG8gdXNlIERHQSwgeW91IGNhbiBhdCBsZWFzdAogICAgICAgICAgICAgICAgdXNlIFggU2hhcmVkIE1lbW9yeSBleHRlbnNpb25zIChYU2htKS4gSXQgaXMgbXVjaAogICAgICAgICAgICAgICAgc2xvd2VyIHRoYW4gREdBLCBzaW5jZSB0aGUgYXBwIGRvZXNuJ3QgaGF2ZSBkaXJlY3QKICAgICAgICAgICAgICAgIGFjY2VzcyB0byB0aGUgcGh5c2ljYWwgZnJhbWUgYnVmZmVyLCBidXQgdXNpbmcgc2hhcmVkCiAgICAgICAgICAgICAgICBtZW1vcnkgdG8gZHJhdyB0aGUgZnJhbWUgaXMgYXQgbGVhc3QgZmFzdGVyIHRoYW4KICAgICAgICAgICAgICAgIHNlbmRpbmcgdGhlIGRhdGEgdGhyb3VnaCB0aGUgc3RhbmRhcmQgWDExIHNvY2tldCwgZXZlbgogICAgICAgICAgICAgICAgdGhvdWdoIFdpbmUncyBYU2htIHN1cHBvcnQgaXMgc3RpbGwga25vd24gdG8gY3Jhc2gKICAgICAgICAgICAgICAgIHNvbWV0aW1lcy4KICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4gICAgICAgICAgCiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT5EWEdyYWI8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIElmIHlvdSBkb24ndCB1c2UgREdBLCB5b3UgbWF5IHdhbnQgYW4gYWx0ZXJuYXRpdmUKICAgICAgICAgICAgICAgIG1lYW5zIHRvIGNvbnZpbmNlIHRoZSBtb3VzZSBjdXJzb3IgdG8gc3RheSB3aXRoaW4gdGhlCiAgICAgICAgICAgICAgICBnYW1lIHdpbmRvdy4gVGhpcyBvcHRpb24gZG9lcyB0aGF0LiBPZiBjb3Vyc2UsIGFzIHdpdGgKICAgICAgICAgICAgICAgIERHQSwgaWYgV2luZSBjcmFzaGVzLCB5b3UncmUgaW4gdHJvdWJsZSAoYWx0aG91Z2ggbm90CiAgICAgICAgICAgICAgICBhcyBiYWRseSBhcyBpbiB0aGUgREdBIGNhc2UsIHNpbmNlIHlvdSBjYW4gc3RpbGwgdXNlCiAgICAgICAgICAgICAgICB0aGUga2V5Ym9hcmQgdG8gZ2V0IG91dCBvZiBYKS4KICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4gICAgICAgICAgCiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT5EZXNrdG9wRG91YmxlQnVmZmVyZWQ8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIEFwcGxpZXMgb25seSBpZiB5b3UgdXNlIHRoZQogICAgICAgICAgICAgICAgPHBhcmFtZXRlcj4tLWRlc2t0b3A8L3BhcmFtZXRlcj4gY29tbWFuZC1saW5lIG9wdGlvbgogICAgICAgICAgICAgICAgdG8gcnVuIGluIGEgZGVza3RvcCB3aW5kb3cuIFNwZWNpZmllcyB3aGV0aGVyIHRvCiAgICAgICAgICAgICAgICBjcmVhdGUgdGhlIGRlc2t0b3Agd2luZG93IHdpdGggYSBkb3VibGUtYnVmZmVyZWQKICAgICAgICAgICAgICAgIHZpc3VhbCwgc29tZXRoaW5nIG1vc3QgT3BlbkdMIGdhbWVzIG5lZWQgdG8gcnVuCiAgICAgICAgICAgICAgICBjb3JyZWN0bHkuCiAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgPC92YXJpYWJsZWxpc3Q+CiAgICAgIDwvc2VjdDI+ICAgICAgICAgIAogICAgPC9zZWN0MT4KCiAgICAmcmVnaXN0cnk7CgogICAgPHNlY3QxIGlkPSJjZHJvbS1sYWJlbHMiPgogICAgICA8c2VjdDFpbmZvPgogICAgICAgIDxhdXRob3Jncm91cD4KICAgICAgICAgIDxhdXRob3I+CiAgICAgICAgICAgIDxmaXJzdG5hbWU+UGV0cjwvZmlyc3RuYW1lPgogICAgICAgICAgICA8c3VybmFtZT5Ub21hc2VrPC9zdXJuYW1lPgogICAgICAgICAgICA8YWZmaWxpYXRpb24+CiAgICAgICAgICAgICAgPGFkZHJlc3M+PGVtYWlsPiZlbWFpbC1wZXRyLXRvbWFzZWs7PC9lbWFpbD48L2FkZHJlc3M+CiAgICAgICAgICAgIDwvYWZmaWxpYXRpb24+CiAgICAgICAgICAgIDxjb250cmliPk5vdiAxNCAxOTk5PC9jb250cmliPgogICAgICAgICAgPC9hdXRob3I+CiAgICAgICAgICA8YXV0aG9yPgogICAgICAgICAgICA8Zmlyc3RuYW1lPkFuZHJlYXM8L2ZpcnN0bmFtZT4KICAgICAgICAgICAgPHN1cm5hbWU+TW9ocjwvc3VybmFtZT4KICAgICAgICAgICAgPGFmZmlsaWF0aW9uPgogICAgICAgICAgICAgIDxhZGRyZXNzPjxlbWFpbD4mZW1haWwtYW5kcmVhcy1tb2hyOzwvZW1haWw+PC9hZGRyZXNzPgogICAgICAgICAgICA8L2FmZmlsaWF0aW9uPgogICAgICAgICAgICA8Y29udHJpYj5KYW4gMjUgMjAwMDwvY29udHJpYj4KICAgICAgICAgIDwvYXV0aG9yPgogICAgICAgIDwvYXV0aG9yZ3JvdXA+CiAgICAgIDwvc2VjdDFpbmZvPgoKICAgICAgPHRpdGxlPkRyaXZlIGxhYmVscyBhbmQgc2VyaWFsIG51bWJlcnMgd2l0aCB3aW5lPC90aXRsZT4KICAgICAgPHBhcmE+CiAgICAgICAgV3JpdHRlbiBieSAmbmFtZS1wZXRyLXRvbWFzZWs7IDxlbWFpbD4mZW1haWwtcGV0ci10b21hc2VrOzwvZW1haWw+CiAgICAgICAgTm92IDE0IDE5OTkKICAgICAgPC9wYXJhPgogICAgICA8cGFyYT4KICAgICAgICBDaGFuZ2VzIGJ5ICZuYW1lLWFuZHJlYXMtbW9ocjsgPGVtYWlsPiZlbWFpbC1hbmRyZWFzLW1vaHI7PC9lbWFpbD4KICAgICAgICBKYW4gMjUgMjAwMAogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgogICAgICAgIChFeHRyYWN0ZWQgZnJvbSA8ZmlsZW5hbWU+d2luZS9kb2N1bWVudGF0aW9uL2Nkcm9tLWxhYmVsczwvZmlsZW5hbWU+KQogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgogICAgICAgIFVudGlsIG5vdywgeW91ciBvbmx5IHBvc3NpYmlsaXR5IG9mIHNwZWNpZnlpbmcgZHJpdmUgdm9sdW1lCiAgICAgICAgbGFiZWxzIGFuZCBzZXJpYWwgbnVtYmVycyB3YXMgdG8gc2V0IHRoZW0gbWFudWFsbHkgaW4gdGhlIHdpbmUKICAgICAgICBjb25maWcgZmlsZS4gQnkgbm93LCB3aW5lIGNhbiByZWFkIHRoZW0gZGlyZWN0bHkgZnJvbSB0aGUKICAgICAgICBkZXZpY2UgYXMgd2VsbC4gVGhpcyBtYXkgYmUgdXNlZnVsIGZvciBtYW55IFdpbiA5eCBnYW1lcyBvcgogICAgICAgIGZvciBzZXR1cCBwcm9ncmFtcyBkaXN0cmlidXRlZCBvbiBDRC1ST01zIHRoYXQgY2hlY2sgZm9yCiAgICAgICAgdm9sdW1lIGxhYmVsLgogICAgICA8L3BhcmE+CgogICAgICA8c2VjdDI+CiAgICAgICAgPHRpdGxlPldoYXQncyBTdXBwb3J0ZWQ/PC90aXRsZT4KCiAgICAgICAgPGluZm9ybWFsdGFibGUgZnJhbWU9ImFsbCI+CiAgICAgICAgICA8dGdyb3VwIGNvbHM9IjMiPgogICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgPHJvdz4KICAgICAgICAgICAgICAgIDxlbnRyeT5GaWxlIFN5c3RlbTwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+VHlwZXM8L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PkNvbW1lbnQ8L2VudHJ5PgogICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgICAgPHJvdz4KICAgICAgICAgICAgICAgIDxlbnRyeT5GQVQgc3lzdGVtczwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+aGQsIGZsb3BweTwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+cmVhZHMgbGFiZWxzIGFuZCBzZXJpYWwgbnVtYmVyczwvZW50cnk+CiAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgICAgPHJvdz4KICAgICAgICAgICAgICAgIDxlbnRyeT5JU085NjYwPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5jZHJvbTwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+cmVhZHMgbGFiZWxzIG9ubHk8L2VudHJ5PgogICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgPC90Z3JvdXA+CiAgICAgICAgPC9pbmZvcm1hbHRhYmxlPgoKICAgICAgPC9zZWN0Mj4KCiAgICAgIDxzZWN0Mj4KICAgICAgICA8dGl0bGU+SG93IFRvIFNldCBVcD88L3RpdGxlPgogICAgICAgIDxwYXJhPgogICAgICAgICAgUmVhZGluZyBsYWJlbHMgYW5kIHNlcmlhbCBudW1iZXJzIGp1c3Qgd29ya3MgYXV0b21hZ2ljYWxseQogICAgICAgICAgaWYgeW91IHNwZWNpZnkgYSA8bGl0ZXJhbD5EZXZpY2U9PC9saXRlcmFsPiBsaW5lIGluIHRoZQogICAgICAgICAgW0RyaXZlIFhdIHNlY3Rpb24gaW4geW91ciA8ZmlsZW5hbWU+fi8ud2luZS9jb25maWc8L2ZpbGVuYW1lPi4KICAgICAgICAgIE5vdGUgdGhhdCB0aGUgZGV2aWNlIGhhcyB0byBleGlzdCBhbmQgbXVzdCBiZSBhY2Nlc3NpYmxlIGlmCiAgICAgICAgICB5b3UgZG8gdGhpcywgdGhvdWdoLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIHlvdSBkb24ndCBkbyB0aGF0LCB0aGVuIHlvdSBzaG91bGQgZ2l2ZSBmaXhlZAogICAgICAgICAgPGxpdGVyYWw+IkxhYmVsIiA9PC9saXRlcmFsPiBvciA8bGl0ZXJhbD4iU2VyaWFsIiA9PC9saXRlcmFsPgogICAgICAgICAgZW50cmllcyBpbiA8ZmlsZW5hbWU+fi4vd2luZS9jb25maWc8L2ZpbGVuYW1lPiwgYXMgV2luZSByZXR1cm5zCiAgICAgICAgICB0aGVzZSBlbnRyaWVzIGluc3RlYWQgaWYgbm8gZGV2aWNlIGlzIGdpdmVuLiBJZiB0aGV5IGRvbid0CiAgICAgICAgICBleGlzdCwgdGhlbiBXaW5lIHdpbGwgcmV0dXJuIGRlZmF1bHQgdmFsdWVzIChsYWJlbAogICAgICAgICAgPGxpdGVyYWw+RHJpdmUgWDwvbGl0ZXJhbD4gYW5kIHNlcmlhbAogICAgICAgICAgPGxpdGVyYWw+MTIzNDU2Nzg8L2xpdGVyYWw+KS4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB5b3Ugd2FudCB0byBnaXZlIGEgPGxpdGVyYWw+IkRldmljZSIgPTwvbGl0ZXJhbD4gZW50cnkKICAgICAgICAgIDxlbXBoYXNpcz5vbmx5PC9lbXBoYXNpcz4gZm9yIGRyaXZlIHJhdyBzZWN0b3IgYWNjZXNzZXMsCgkgIGJ1dCBub3QgZm9yIHJlYWRpbmcgdGhlIHZvbHVtZSBpbmZvIGZyb20gdGhlIGRldmljZSAoaS5lLiB5b3Ugd2FudAoJICBhIDxlbXBoYXNpcz5maXhlZDwvZW1waGFzaXM+LCBwcmVjb25maWd1cmVkIGxhYmVsKSwgeW91IG5lZWQKICAgICAgICAgIHRvIHNwZWNpZnkgPGxpdGVyYWw+IlJlYWRWb2xJbmZvIiA9ICIwIjwvbGl0ZXJhbD4gdG8gdGVsbCBXaW5lCiAgICAgICAgICB0byBza2lwIHRoZSB2b2x1bWUgcmVhZGluZy4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvc2VjdDI+CgogICAgICA8c2VjdDI+CiAgICAgICAgPHRpdGxlPkVYQU1QTEVTPC90aXRsZT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEhlcmUncyBhIHNpbXBsZSBleGFtcGxlIG9mIGNkcm9tIGFuZCBmbG9wcHk7IGxhYmVscyB3aWxsIGJlCiAgICAgICAgICByZWFkIGZyb20gdGhlIGRldmljZSBvbiBib3RoIGNkcm9tIGFuZCBmbG9wcHk7IHNlcmlhbAogICAgICAgICAgbnVtYmVycyBvbiBmbG9wcHkgb25seToKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNjcmVlbj4KW0RyaXZlIEFdCiJQYXRoIiA9ICIvbW50L2Zsb3BweSIKIlR5cGUiID0gImZsb3BweSIKIkRldmljZSIgPSAiL2Rldi9mZDAiCiJGaWxlc3lzdGVtIiA9ICJtc2RvcyIKCltEcml2ZSBSXQoiUGF0aCIgPSAiL21udC9jZHJvbSIKIlR5cGUiID0gImNkcm9tIgoiRGV2aWNlIiA9ICIvZGV2L2hkYTEiCiJGaWxlc3lzdGVtIiA9ICJ3aW45NSIKICAgICAgICA8L3NjcmVlbj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEhlcmUncyBhbiBleGFtcGxlIG9mIG92ZXJyaWRpbmcgdGhlIENELVJPTSBsYWJlbDoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNjcmVlbj4KW0RyaXZlIEpdCiJQYXRoIiA9ICIvbW50L2Nkcm9tIgoiVHlwZSIgPSAiY2Ryb20iCiJMYWJlbCIgPSAiWDIzNEdDRFNFIgo7IG5vdGUgdGhhdCB0aGUgZGV2aWNlIGlzbid0IHJlYWxseSBuZWVkZWQgaGVyZSBhcyB3ZSBoYXZlIGEgZml4ZWQgbGFiZWwKIkRldmljZSIgPSAiL2Rldi9jZHJvbSIKIkZpbGVzeXN0ZW0iID0gIm1zZG9zIgogICAgICAgIDwvc2NyZWVuPgogICAgICA8L3NlY3QyPgoKICAgICAgPHNlY3QyPgogICAgICAgIDx0aXRsZT5Ub2RvIC8gT3BlbiBJc3N1ZXM8L3RpdGxlPgogICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgIFRoZSBjZHJvbSBsYWJlbCBjYW4gYmUgcmVhZCBvbmx5IGlmIHRoZSBkYXRhIHRyYWNrIG9mCiAgICAgICAgICAgICAgdGhlIGRpc2sgcmVzaWRlcyBpbiB0aGUgZmlyc3QgdHJhY2sgYW5kIHRoZSBjZHJvbSBpcwogICAgICAgICAgICAgIGlzbzk2NjAuCiAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgQmV0dGVyIGNoZWNraW5nIGZvciBGQVQgc3VwZXJibG9jayAoaXQgbm93IGNoZWNrcyBvbmx5CiAgICAgICAgICAgICAgb25lIGJ5dGUpLiA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICBTdXBwb3J0IGZvciBsYWJlbHMvc2VyaWFsIG51bXMgV1JJVElORy4KICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICBDYW4gdGhlIGxhYmVsIGJlIGxvbmdlciB0aGFuIDExIGNoYXJzPyAoaXNvOTY2MCBoYXMgMzIKICAgICAgICAgICAgICBjaGFycykuCiAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgV2hhdCBhYm91dCByZWFkaW5nIGV4dDIgdm9sdW1lIGxhYmVsPyAuLi4uCiAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgPC9zZWN0Mj4KICAgIDwvc2VjdDE+CgogICAgPHNlY3QxIGlkPSJkbGwtb3ZlcnJpZGVzIj4KICAgICAgPHRpdGxlPkRsbCBPdmVycmlkZXM8L3RpdGxlPgoKICAgICAgPHBhcmE+CiAgICAgICAgV3JpdHRlbiBieSAmbmFtZS1vdmUta2FhdmVuOyA8ZW1haWw+JmVtYWlsLW92ZS1rYWF2ZW47PC9lbWFpbD4KICAgICAgPC9wYXJhPgogICAgICA8cGFyYT4KICAgICAgICAoRXh0cmFjdGVkIGZyb20gPGZpbGVuYW1lPndpbmUvZG9jdW1lbnRhdGlvbi9kbGwtb3ZlcnJpZGVzPC9maWxlbmFtZT4pCiAgICAgIDwvcGFyYT4KCiAgICAgIDxwYXJhPgogICAgICAgIFRoZSA8ZmlsZW5hbWU+d2luZS5jb25mPC9maWxlbmFtZT4gZGlyZWN0aXZlcyBbRGxsRGVmYXVsdHNdCiAgICAgICAgYW5kIFtEbGxPdmVycmlkZXNdIGFyZSB0aGUgc3ViamVjdCBvZiBzb21lIGNvbmZ1c2lvbi4gVGhlCiAgICAgICAgb3ZlcmFsbCBwdXJwb3NlIG9mIG1vc3Qgb2YgdGhlc2UgZGlyZWN0aXZlcyBhcmUgY2xlYXIgZW5vdWdoLAogICAgICAgIHRob3VnaCAtIGdpdmVuIGEgY2hvaWNlLCBzaG91bGQgV2luZSB1c2UgaXRzIG93biBidWlsdC1pbgogICAgICAgIERMTHMsIG9yIHNob3VsZCBpdCB1c2UgPGZpbGVuYW1lPi5ETEw8L2ZpbGVuYW1lPiBmaWxlcyBmb3VuZAogICAgICAgIGluIGFuIGV4aXN0aW5nIFdpbmRvd3MgaW5zdGFsbGF0aW9uPyBUaGlzIGRvY3VtZW50IGV4cGxhaW5zCiAgICAgICAgaG93IHRoaXMgZmVhdHVyZSB3b3Jrcy4KICAgICAgPC9wYXJhPgoKICAgICAgPHNlY3QyPgogICAgICAgIDx0aXRsZT5ETEwgdHlwZXM8L3RpdGxlPgogICAgICAgIDx2YXJpYWJsZWxpc3Q+CiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT5uYXRpdmU8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICBBICJuYXRpdmUiIERMTCBpcyBhIDxmaWxlbmFtZT4uRExMPC9maWxlbmFtZT4gZmlsZQogICAgICAgICAgICAgICAgd3JpdHRlbiBmb3IgdGhlIHJlYWwgTWljcm9zb2Z0IFdpbmRvd3MuCiAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT5idWlsdGluPC90ZXJtPgogICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgQSAiYnVpbHRpbiIgRExMIGlzIGEgV2luZSBETEwuIFRoZXNlIGNhbiBlaXRoZXIgYmUgYQogICAgICAgICAgICAgICAgcGFydCBvZiA8ZmlsZW5hbWU+bGlid2luZS5zbzwvZmlsZW5hbWU+LCBvciBtb3JlCiAgICAgICAgICAgICAgICByZWNlbnRseSwgaW4gYSBzcGVjaWFsIDxmaWxlbmFtZT4uc288L2ZpbGVuYW1lPiBmaWxlCiAgICAgICAgICAgICAgICB0aGF0IFdpbmUgaXMgYWJsZSB0byBsb2FkIG9uIGRlbWFuZC4KICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPmVsZmRsbDwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgIEFuICJlbGZkbGwiIGlzIGEgV2luZSA8ZmlsZW5hbWU+LnNvPC9maWxlbmFtZT4gZmlsZQogICAgICAgICAgICAgICAgd2l0aCBhIHNwZWNpYWwgV2luZG93cy1saWtlIGZpbGUgc3RydWN0dXJlIHRoYXQgaXMgYXMKICAgICAgICAgICAgICAgIGNsb3NlIHRvIFdpbmRvd3MgYXMgcG9zc2libGUsIGFuZCB0aGF0IGNhbiBhbHNvCiAgICAgICAgICAgICAgICBzZWFtbGVzc2x5IGxpbmsgZHluYW1pY2FsbHkgd2l0aCAibmF0aXZlIiBETExzLCBieQogICAgICAgICAgICAgICAgdXNpbmcgc3BlY2lhbCBFTEYgbG9hZGVyIGFuZCBsaW5rZXIgdHJpY2tzLiBCZXJ0aG8KICAgICAgICAgICAgICAgIFN0dWx0aWVucyBkaWQgc29tZSB3b3JrIG9uIHRoaXMsIGJ1dCB0aGlzIGZlYXR1cmUgaGFzCiAgICAgICAgICAgICAgICBub3QgeWV0IGJlZW4gbWVyZ2VkIGJhY2sgaW50byBXaW5lIChiZWNhdXNlIG9mCiAgICAgICAgICAgICAgICBwb2xpdGljYWwgcmVhc29ucyBhbmQgbGFjayBvZiB0aW1lKSwgc28gdGhpcyBETEwgdHlwZQogICAgICAgICAgICAgICAgZG9lcyBub3QgZXhpc3QgaW4gdGhlIG9mZmljaWFsIFdpbmUgYXQgdGhpcyB0aW1lLiBJbgogICAgICAgICAgICAgICAgdGhlIG1lYW50aW1lLCB0aGUgImJ1aWx0aW4iIERMTCB0eXBlIGdhaW5lZCBzb21lIG9mCiAgICAgICAgICAgICAgICB0aGUgZmVhdHVyZXMgb2YgZWxmZGxscyAoc3VjaCBhcyBkeW5hbWljIGxvYWRpbmcpLCBzbwogICAgICAgICAgICAgICAgaXQncyBwb3NzaWJsZSB0aGF0ICJlbGZkbGwiIGZ1bmN0aW9uYWxpdHkgd2lsbCBiZQogICAgICAgICAgICAgICAgZm9sZGVkIGludG8gImJ1aWx0aW4iIGF0IHNvbWUgcG9pbnQuCiAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT5zbzwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgIEEgbmF0aXZlIFVuaXggPGZpbGVuYW1lPi5zbzwvZmlsZW5hbWU+IGZpbGUsIHdpdGgKICAgICAgICAgICAgICAgIGNhbGxpbmcgY29udmVudGlvbiBjb252ZXJzaW9uIHRodW5rcyBnZW5lcmF0ZWQgb24gdGhlCiAgICAgICAgICAgICAgICBmbHkgYXMgdGhlIGxpYnJhcnkgaXMgbG9hZGVkLiBUaGlzIGlzIG1vc3RseSB1c2VmdWwKICAgICAgICAgICAgICAgIGZvciBsaWJyYXJpZXMgc3VjaCBhcyAiZ2xpZGUiIHRoYXQgaGF2ZSBleGFjdGx5IHRoZQogICAgICAgICAgICAgICAgc2FtZSBBUEkgb24gYm90aCBXaW5kb3dzIGFuZCBVbml4LgogICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgIDwvdmFyaWFibGVsaXN0PiAgICAgICAgICAKICAgICAgPC9zZWN0Mj4KCiAgICAgIDxzZWN0Mj4KICAgICAgICA8dGl0bGU+VGhlIFtEbGxEZWZhdWx0c10gc2VjdGlvbjwvdGl0bGU+CiAgICAgICAgPHZhcmlhYmxlbGlzdD4KICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPkRlZmF1bHRMb2FkT3JkZXI8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICBUaGlzIHNwZWNpZmllcyBpbiB3aGF0IG9yZGVyIFdpbmUgc2hvdWxkIHNlYXJjaCBmb3IKICAgICAgICAgICAgICAgIGF2YWlsYWJsZSBETEwgdHlwZXMsIGlmIHRoZSBETEwgaW4gcXVlc3Rpb24gd2FzIG5vdAogICAgICAgICAgICAgICAgZm91bmQgaW4gdGhlIFtEbGxPdmVycmlkZXNdIHNlY3Rpb24uCiAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgPC92YXJpYWJsZWxpc3Q+CiAgICAgIDwvc2VjdDI+CgogICAgICA8c2VjdDI+CiAgICAgICAgPHRpdGxlPlRoZSBbRGxsUGFpcnNdIHNlY3Rpb248L3RpdGxlPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQXQgb25lIHRpbWUsIHRoZXJlIHdhcyBhIHNlY3Rpb24gY2FsbGVkIFtEbGxQYWlyc10gaW4gdGhlCiAgICAgICAgICBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gZmlsZSwgYnV0IHRoaXMgaGFzIGJlZW4gb2Jzb2xldGVkCiAgICAgICAgICBiZWNhdXNlIHRoZSBwYWlyaW5nIGluZm9ybWF0aW9uIGhhcyBub3cgYmVlbiBlbWJlZGRlZCBpbnRvCiAgICAgICAgICBXaW5lIGl0c2VsZi4gKFRoZSBwdXJwb3NlIG9mIHRoaXMgc2VjdGlvbiB3YXMgbWVyZWx5IHRvIGJlCiAgICAgICAgICBhYmxlIHRvIGlzc3VlIHdhcm5pbmdzIGlmIHRoZSB1c2VyIGF0dGVtcHRlZCB0byBwYWlyCiAgICAgICAgICBjb2RlcGVuZGVudCAxNi1iaXQvMzItYml0IERMTHMgb2YgZGlmZmVyZW50IHR5cGVzLikgSWYgeW91CiAgICAgICAgICBzdGlsbCBoYXZlIHRoaXMgaW4geW91ciA8ZmlsZW5hbWU+d2luZS5jb25mPC9maWxlbmFtZT4gb3IKICAgICAgICAgIDxmaWxlbmFtZT5+Ly53aW5lL2NvbmZpZzwvZmlsZW5hbWU+LCB5b3UgbWF5IHNhZmVseSBkZWxldGUgaXQuCiAgICAgICAgPC9wYXJhPgogICAgICA8L3NlY3QyPgoKICAgICAgPHNlY3QyPgogICAgICAgIDx0aXRsZT5UaGUgW0RsbE92ZXJyaWRlc10gc2VjdGlvbjwvdGl0bGU+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGlzIHNlY3Rpb24gc3BlY2lmaWVzIGhvdyB5b3Ugd2FudCBzcGVjaWZpYyBETExzIHRvIGJlCiAgICAgICAgICBoYW5kbGVkLCBpbiBwYXJ0aWN1bGFyIHdoZXRoZXIgeW91IHdhbnQgdG8gdXNlICJuYXRpdmUiIERMTHMKICAgICAgICAgIG9yIG5vdCwgaWYgeW91IGhhdmUgc29tZSBmcm9tIGEgcmVhbCBXaW5kb3dzIGNvbmZpZ3VyYXRpb24uCiAgICAgICAgICBCZWNhdXNlIGJ1aWx0aW5zIGRvIG5vdCBtaXggc2VhbWxlc3NseSB3aXRoIG5hdGl2ZSBETExzIHlldCwKICAgICAgICAgIGNlcnRhaW4gRExMIGRlcGVuZGVuY2llcyBtYXkgYmUgcHJvYmxlbWF0aWMsIGJ1dCB3b3JrYXJvdW5kcwogICAgICAgICAgZXhpc3QgaW4gV2luZSBmb3IgbWFueSBwb3B1bGFyIERMTCBjb25maWd1cmF0aW9ucy4gQWxzbyBzZWUKICAgICAgICAgIFdXTidzIFsxNl1TdGF0dXMgUGFnZSB0byBmaWd1cmUgb3V0IGhvdyB3ZWxsIHlvdXIgZmF2b3JpdGUKICAgICAgICAgIERMTCBpcyBpbXBsZW1lbnRlZCBpbiBXaW5lLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEl0IGlzIG9mIGNvdXJzZSBhbHNvIHBvc3NpYmxlIHRvIG92ZXJyaWRlIHRoZXNlIHNldHRpbmdzIGJ5CiAgICAgICAgICBleHBsaWN0bHkgdXNpbmcgV2luZSdzIDxwYXJhbWV0ZXI+LS1kbGw8L3BhcmFtZXRlcj4KICAgICAgICAgIGNvbW1hbmQtbGluZSBvcHRpb24gKHNlZSB0aGUgbWFuIHBhZ2UgZm9yIGRldGFpbHMpLiAgU29tZQogICAgICAgICAgaGludHMgZm9yIGNob29zaW5nIHlvdXIgb3B0aW1hbCBjb25maWd1cmF0aW9uIChsaXN0ZWQgYnkKICAgICAgICAgIDE2LzMyLWJpdCBETEwgcGFpcik6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDx2YXJpYWJsZWxpc3Q+CiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT5rcm5sMzg2LCBrZXJuZWwzMjwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgIE5hdGl2ZSB2ZXJzaW9ucyBvZiB0aGVzZSB3aWxsIG5ldmVyIHdvcmssIHNvIGRvbid0IHRyeS4gTGVhdmUKICAgICAgICAgICAgICAgIGF0IDxsaXRlcmFsPmJ1aWx0aW48L2xpdGVyYWw+LgogICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+Z2RpLCBnZGkzMjwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgIEdyYXBoaWNzIERldmljZSBJbnRlcmZhY2UuIE5vIGVmZm9ydCBoYXMgYmVlbiBtYWRlIGF0IHRyeWluZyB0bwogICAgICAgICAgICAgICAgcnVuIG5hdGl2ZSBHREkuIExlYXZlIGF0IDxsaXRlcmFsPmJ1aWx0aW48L2xpdGVyYWw+LgogICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PiAgICAgICAgICAKICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPnVzZXIsIHVzZXIzMjwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgIFdpbmRvdyBtYW5hZ2VtZW50IGFuZCBzdGFuZGFyZCBjb250cm9scy4gSXQgd2FzCiAgICAgICAgICAgICAgICBwb3NzaWJsZSB0byB1c2UgV2luOTUncyA8bGl0ZXJhbD5uYXRpdmU8L2xpdGVyYWw+CiAgICAgICAgICAgICAgICB2ZXJzaW9ucyBhdCBzb21lIHBvaW50IChpZiBhbGwgb3RoZXIgRExMcyB0aGF0IGRlcGVuZAogICAgICAgICAgICAgICAgb24gaXQsIHN1Y2ggYXMgY29tY3RsMzIgYW5kIGNvbWRsZzMyLCB3ZXJlIGFsc28gcnVuCiAgICAgICAgICAgICAgICA8bGl0ZXJhbD5uYXRpdmU8L2xpdGVyYWw+KS4gSG93ZXZlciwgdGhpcyBpcyBubyBsb25nZXIKICAgICAgICAgICAgICAgIHBvc3NpYmxlIGFmdGVyIHRoZSBBZGRyZXNzIFNwYWNlIFNlcGFyYXRpb24sIHNvIGxlYXZlCiAgICAgICAgICAgICAgICBhdCA8bGl0ZXJhbD5idWlsdGluPC9saXRlcmFsPi4KICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPm50ZGxsPC90ZXJtPgogICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgTlQga2VybmVsIEFQSS4gQWx0aG91Z2ggYmFkbHkgZG9jdW1lbnRlZCwgdGhlCiAgICAgICAgICAgICAgICA8bGl0ZXJhbD5uYXRpdmU8L2xpdGVyYWw+IHZlcnNpb24gb2YgdGhpcyB3aWxsIG5ldmVyCiAgICAgICAgICAgICAgICB3b3JrLiBMZWF2ZSBhdCA8bGl0ZXJhbD5idWlsdGluPC9saXRlcmFsPi4KICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPnczMnNrcm5sPC90ZXJtPgogICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgV2luMzJzIChmb3IgV2luMy54KS4gVGhlIDxsaXRlcmFsPm5hdGl2ZTwvbGl0ZXJhbD4KICAgICAgICAgICAgICAgIHZlcnNpb24gd2lsbCBwcm9iYWJseSBuZXZlciB3b3JrLiBMZWF2ZSBhdAogICAgICAgICAgICAgICAgPGxpdGVyYWw+YnVpbHRpbjwvbGl0ZXJhbD4uCiAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT53b3czMjwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgIFdpbjE2IHN1cHBvcnQgbGlicmFyeSBmb3IgTlQuIFRoZQogICAgICAgICAgICAgICAgPGxpdGVyYWw+bmF0aXZlPC9saXRlcmFsPiB2ZXJzaW9uIHdpbGwgcHJvYmFibHkgbmV2ZXIKICAgICAgICAgICAgICAgIHdvcmsuIExlYXZlIGF0IDxsaXRlcmFsPmJ1aWx0aW48L2xpdGVyYWw+LgogICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+c3lzdGVtPC90ZXJtPgogICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgV2luMTYga2VybmVsIHN0dWZmLiBXaWxsIG5ldmVyIHdvcmsKICAgICAgICAgICAgICAgIDxsaXRlcmFsPm5hdGl2ZTwvbGl0ZXJhbD4uIExlYXZlIGF0CiAgICAgICAgICAgICAgICA8bGl0ZXJhbD5idWlsdGluPC9saXRlcmFsPi4KICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4gICAgICAgICAgCiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT5kaXNwbGF5PC90ZXJtPgogICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgRGlzcGxheSBkcml2ZXIuIERlZmluaXRlbHkgbGVhdmUgYXQgPGxpdGVyYWw+YnVpbHRpbjwvbGl0ZXJhbD4uCiAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT50b29saGVscDwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgIFRvb2wgaGVscGVyIHJvdXRpbmVzLiBUaGlzIGlzIHJhcmVseSBhIHNvdXJjZSBvZiBwcm9ibGVtcy4KICAgICAgICAgICAgICAgIExlYXZlIGF0IDxsaXRlcmFsPmJ1aWx0aW48L2xpdGVyYWw+LgogICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+dmVyLCB2ZXJzaW9uPC90ZXJtPgogICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgVmVyc2lvbmluZy4gU2VsZG9tIHVzZWZ1bCB0byBtZXNzIHdpdGguCiAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT5hZHZhcGkzMjwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgIFJlZ2lzdHJ5IGFuZCBzZWN1cml0eSBmZWF0dXJlcy4gVHJ5aW5nIHRoZQogICAgICAgICAgICAgICAgPGxpdGVyYWw+bmF0aXZlPC9saXRlcmFsPiB2ZXJzaW9uIG9mIHRoaXMgbWF5IG9yIG1heQogICAgICAgICAgICAgICAgbm90IHdvcmsuCiAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT5jb21tZGxnLCBjb21kbGczMjwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgIENvbW1vbiBEaWFsb2dzLCBzdWNoIGFzIGNvbG9yIHBpY2tlciwgZm9udCBkaWFsb2csCiAgICAgICAgICAgICAgICBwcmludCBkaWFsb2csIG9wZW4vc2F2ZSBkaWFsb2csIGV0Yy4gSXQgaXMgc2FmZSB0byB0cnkKICAgICAgICAgICAgICAgIDxsaXRlcmFsPm5hdGl2ZTwvbGl0ZXJhbD4uCiAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT5jb21tY3RybCwgY29tY3RsMzI8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICBDb21tb24gQ29udHJvbHMuIFRoaXMgaXMgdG9vbGJhcnMsIHN0YXR1cyBiYXJzLCBsaXN0IGNvbnRyb2xzLAogICAgICAgICAgICAgICAgdGhlIHdvcmtzLiBJdCBpcyBzYWZlIHRvIHRyeSA8bGl0ZXJhbD5uYXRpdmU8L2xpdGVyYWw+LgogICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+c2hlbGwsIHNoZWxsMzI8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICBTaGVsbCBpbnRlcmZhY2UgKGRlc2t0b3AsIGZpbGVzeXN0ZW0sIGV0YykuIEJlaW5nIG9uZSBvZiB0aGUKICAgICAgICAgICAgICAgIG1vc3QgdW5kb2N1bWVudGVkIHBpZWNlcyBvZiBXaW5kb3dzLCB5b3UgbWF5IGhhdmUgbHVjayB3aXRoIHRoZQogICAgICAgICAgICAgICAgPGxpdGVyYWw+bmF0aXZlPC9saXRlcmFsPiB2ZXJzaW9uLCBzaG91bGQgeW91IG5lZWQgaXQuCiAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+ICAgICAgICAgIAogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+d2luc29jaywgd3NvY2szMjwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgIFdpbmRvd3MgU29ja2V0cy4gVGhlIDxsaXRlcmFsPm5hdGl2ZTwvbGl0ZXJhbD4gdmVyc2lvbgogICAgICAgICAgICAgICAgd2lsbCBub3Qgd29yayB1bmRlciBXaW5lLCBzbyBsZWF2ZSBhdAogICAgICAgICAgICAgICAgPGxpdGVyYWw+YnVpbHRpbjwvbGl0ZXJhbD4uCiAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT5pY21wPC90ZXJtPgogICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgSUNNUCByb3V0aW5lcyBmb3Igd3NvY2szMi4gQXMgd2l0aCB3c29jazMyLCBsZWF2ZSBhdAogICAgICAgICAgICAgICAgPGxpdGVyYWw+YnVpbHRpbjwvbGl0ZXJhbD4uCiAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT5tcHI8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICBUaGUgPGxpdGVyYWw+bmF0aXZlPC9saXRlcmFsPiB2ZXJzaW9uIG1heSBub3Qgd29yayBkdWUKICAgICAgICAgICAgICAgIHRvIHRodW5raW5nIGlzc3Vlcy4gTGVhdmUgYXQKICAgICAgICAgICAgICAgIDxsaXRlcmFsPmJ1aWx0aW48L2xpdGVyYWw+LgogICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+bHpleHBhbmQsIGx6MzI8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICBMZW1wZWwtWml2IGRlY29tcHJlc3Npb24uIFdpbmUncwogICAgICAgICAgICAgICAgPGxpdGVyYWw+YnVpbHRpbjwvbGl0ZXJhbD4gdmVyc2lvbiBvdWdodCB0byB3b3JrIGZpbmUuCiAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT53aW5hc3BpLCB3bmFzcGkzMjwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgIEFkdmFuY2VkIFNDU0kgUGVyaXBoZXJhbCBJbnRlcmZhY2UuIFRoZQogICAgICAgICAgICAgICAgPGxpdGVyYWw+bmF0aXZlPC9saXRlcmFsPiB2ZXJzaW9uIHdpbGwgcHJvYmFibHkgbmV2ZXIKICAgICAgICAgICAgICAgIHdvcmsuIExlYXZlIGF0IDxsaXRlcmFsPmJ1aWx0aW48L2xpdGVyYWw+LgogICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+Y3J0ZGxsPC90ZXJtPgogICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgQyBSdW50aW1lIGxpYnJhcnkuIFRoZSA8bGl0ZXJhbD5uYXRpdmU8L2xpdGVyYWw+CiAgICAgICAgICAgICAgICB2ZXJzaW9uIHdpbGwgZWFzaWx5IHdvcmsgYmV0dGVyIHRoYW4gV2luZSdzIG9uIHRoaXMKICAgICAgICAgICAgICAgIG9uZS4KICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPndpbnNwb29sLmRydjwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgIFByaW50ZXIgc3Bvb2xlci4gWW91IGFyZSBub3QgbGlrZWx5IHRvIGhhdmUgbW9yZSBsdWNrCiAgICAgICAgICAgICAgICB3aXRoIHRoZSA8bGl0ZXJhbD5uYXRpdmU8L2xpdGVyYWw+IHZlcnNpb24uCiAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT5kZHJhdzwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgIERpcmVjdERyYXcvRGlyZWN0M0QuIFNpbmNlIFdpbmUgZG9lcyBub3QgaW1wbGVtZW50IHRoZQogICAgICAgICAgICAgICAgRGlyZWN0WCBIQUwsIHRoZSA8bGl0ZXJhbD5uYXRpdmU8L2xpdGVyYWw+IHZlcnNpb24KICAgICAgICAgICAgICAgIHdpbGwgbm90IHdvcmsgYXQgdGhpcyB0aW1lLgogICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+ZGlucHV0PC90ZXJtPgogICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgRGlyZWN0SW5wdXQuIFJ1bm5pbmcgdGhpcyA8bGl0ZXJhbD5uYXRpdmU8L2xpdGVyYWw+CiAgICAgICAgICAgICAgICBtYXkgb3IgbWF5IG5vdCB3b3JrLgogICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PiAgICAgICAgICAKICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPmRzb3VuZDwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgIERpcmVjdFNvdW5kLiBJdCBtYXkgYmUgcG9zc2libGUgdG8gcnVuIHRoaXMKICAgICAgICAgICAgICAgIDxsaXRlcmFsPm5hdGl2ZTwvbGl0ZXJhbD4sIGJ1dCBkb24ndCBjb3VudCBvbiBpdC4KICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPmRwbGF5L2RwbGF5eDwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgIERpcmVjdFBsYXkuIFRoZSA8bGl0ZXJhbD5uYXRpdmU8L2xpdGVyYWw+IHZlcnNpb24KICAgICAgICAgICAgICAgIG91Z2h0IHRvIHdvcmsgYmVzdCBvbiB0aGlzLCBpZiBhdCBhbGwuCiAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT5tbXN5c3RlbSwgd2lubW08L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICBNdWx0aW1lZGlhIHN5c3RlbS4gVGhlIDxsaXRlcmFsPm5hdGl2ZTwvbGl0ZXJhbD4KICAgICAgICAgICAgICAgIHZlcnNpb24gaXMgbm90IGxpa2VseSB0byB3b3JrLiBMZWF2ZSBhdAogICAgICAgICAgICAgICAgPGxpdGVyYWw+YnVpbHRpbjwvbGl0ZXJhbD4uCiAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT5tc2FjbSwgbXNhY20zMjwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgIEF1ZGlvIENvbXByZXNzaW9uIE1hbmFnZXIuIFRoZQogICAgICAgICAgICAgICAgPGxpdGVyYWw+YnVpbHRpbjwvbGl0ZXJhbD4gdmVyc2lvbiB3b3JrcyBiZXN0LCBpZiB5b3UKICAgICAgICAgICAgICAgIHNldCBtc2FjbS5kcnYgdG8gdGhlIHNhbWUuCiAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT5tc3ZpZGVvLCBtc3ZmdzMyPC90ZXJtPgogICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgVmlkZW8gZm9yIFdpbmRvd3MuIEl0IGlzIHNhZmUgKGFuZCByZWNvbW1lbmRlZCkgdG8gdHJ5CiAgICAgICAgICAgICAgICA8bGl0ZXJhbD5uYXRpdmU8L2xpdGVyYWw+LgogICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+bWNpY2RhLmRydjwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgIENEIEF1ZGlvIE1DSSBkcml2ZXIuCiAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT5tY2lzZXEuZHJ2PC90ZXJtPgogICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgTUlESSBTZXF1ZW5jZXIgTUNJIGRyaXZlciAoPGZpbGVuYW1lPi5NSUQ8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgcGxheWJhY2spLgogICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+bWNpd2F2ZS5kcnY8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICBXYXZlIGF1ZGlvIE1DSSBkcml2ZXIgKDxmaWxlbmFtZT4uV0FWPC9maWxlbmFtZT4gcGxheWJhY2spLgogICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+bWNpYXZpLmRydjwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgIEFWSSBNQ0kgZHJpdmVyICg8ZmlsZW5hbWU+LkFWSTwvZmlsZW5hbWU+IHZpZGVvCiAgICAgICAgICAgICAgICBwbGF5YmFjaykuIEJlc3QgdG8gdXNlIDxsaXRlcmFsPm5hdGl2ZTwvbGl0ZXJhbD4uCiAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT5tY2lhbmltLmRydjwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgIEFuaW1hdGlvbiBNQ0kgZHJpdmVyLgogICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+bXNhY20uZHJ2PC90ZXJtPgogICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgQXVkaW8gQ29tcHJlc3Npb24gTWFuYWdlci4gU2V0IHRvIHNhbWUgYXMgbXNhY20zMi4KICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPm1pZGltYXAuZHJ2PC90ZXJtPgogICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgTUlESSBNYXBwZXIuCiAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT53cHJvY3M8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICBUaGlzIGlzIGEgcHNldWRvLURMTCB1c2VkIGJ5IFdpbmUgZm9yIHRodW5raW5nCiAgICAgICAgICAgICAgICBwdXJwb3Nlcy4gQSA8bGl0ZXJhbD5uYXRpdmU8L2xpdGVyYWw+IHZlcnNpb24gb2YgdGhpcwogICAgICAgICAgICAgICAgZG9lc24ndCBleGlzdC4KICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICA8L3ZhcmlhYmxlbGlzdD4gICAgICAgICAgCiAgICAgIDwvc2VjdDI+CiAgICA8L3NlY3QxPgoKICAgIDxzZWN0MSBpZD0ia2V5Ym9hcmQiPgogICAgICA8dGl0bGU+S2V5Ym9hcmQ8L3RpdGxlPgoKICAgICAgPHBhcmE+CiAgICAgICAgV3JpdHRlbiBieSAmbmFtZS1vdmUta2FhdmVuOyA8ZW1haWw+JmVtYWlsLW92ZS1rYWF2ZW47PC9lbWFpbD4KICAgICAgPC9wYXJhPgogICAgICA8cGFyYT4KICAgICAgICAoRXh0cmFjdGVkIGZyb20gPGZpbGVuYW1lPndpbmUvZG9jdW1lbnRhdGlvbi9rZXlib2FyZDwvZmlsZW5hbWU+KQogICAgICA8L3BhcmE+CgogICAgICA8cGFyYT4KICAgICAgICBXaW5lIG5vdyBuZWVkcyB0byBrbm93IGFib3V0IHlvdXIga2V5Ym9hcmQgbGF5b3V0LiBUaGlzCiAgICAgICAgcmVxdWlyZW1lbnQgY29tZXMgZnJvbSBhIG5lZWQgZnJvbSBtYW55IGFwcHMgdG8gaGF2ZSB0aGUKICAgICAgICBjb3JyZWN0IHNjYW5jb2RlcyBhdmFpbGFibGUsIHNpbmNlIHRoZXkgcmVhZCB0aGVzZSBkaXJlY3RseSwKICAgICAgICBpbnN0ZWFkIG9mIGp1c3QgdGFraW5nIHRoZSBjaGFyYWN0ZXJzIHJldHVybmVkIGJ5IHRoZSBYCiAgICAgICAgc2VydmVyLiBUaGlzIG1lYW5zIHRoYXQgV2luZSBub3cgbmVlZHMgdG8gaGF2ZSBhIG1hcHBpbmcgZnJvbQogICAgICAgIFgga2V5cyB0byB0aGUgc2NhbmNvZGVzIHRoZXNlIGFwcGxpY2F0aW9ucyBleHBlY3QuCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgT24gc3RhcnR1cCwgV2luZSB3aWxsIHRyeSB0byByZWNvZ25pemUgdGhlIGFjdGl2ZSBYIGxheW91dCBieQogICAgICAgIHNlZWluZyBpZiBpdCBtYXRjaGVzIGFueSBvZiB0aGUgZGVmaW5lZCB0YWJsZXMuIElmIGl0IGRvZXMsCiAgICAgICAgZXZlcnl0aGluZyBpcyBhbHJpZ2h0LiBJZiBub3QsIHlvdSBuZWVkIHRvIGRlZmluZSBpdC4KICAgICAgPC9wYXJhPgogICAgICA8cGFyYT4KICAgICAgICBUbyBkbyB0aGlzLCBvcGVuIHRoZSBmaWxlCiAgICAgICAgPGZpbGVuYW1lPndpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM8L2ZpbGVuYW1lPiBhbmQgdGFrZSBhIGxvb2sKICAgICAgICBhdCB0aGUgZXhpc3RpbmcgdGFibGVzLiBNYWtlIGEgYmFja3VwIGNvcHkgb2YgaXQsIGVzcGVjaWFsbHkKICAgICAgICBpZiB5b3UgZG9uJ3QgdXNlIENWUy4KICAgICAgPC9wYXJhPgogICAgICA8cGFyYT4KICAgICAgICBXaGF0IHlvdSByZWFsbHkgd291bGQgbmVlZCB0byBkbywgaXMgZmluZCBvdXQgd2hpY2ggc2NhbmNvZGUKICAgICAgICBlYWNoIGtleSBuZWVkcyB0byBnZW5lcmF0ZS4gIEZpbmQgaXQgaW4gdGhlCiAgICAgICAgPGZ1bmN0aW9uPm1haW5fa2V5X3NjYW48L2Z1bmN0aW9uPiB0YWJsZSwgd2hpY2ggbG9va3MgbGlrZQogICAgICAgIHRoaXM6CiAgICAgIDwvcGFyYT4KICAgICAgPHByb2dyYW1saXN0aW5nPgpzdGF0aWMgY29uc3QgaW50IG1haW5fa2V5X3NjYW5bTUFJTl9MRU5dID0KewovKiB0aGlzIGlzIG15ICgxMDIta2V5KSBrZXlib2FyZCBsYXlvdXQsIHNvcnJ5IGlmIGl0IGRvZXNuJ3QgcXVpdGUgbWF0Y2ggeW91cnMgKi8KICAgMHgyOSwweDAyLDB4MDMsMHgwNCwweDA1LDB4MDYsMHgwNywweDA4LDB4MDksMHgwQSwweDBCLDB4MEMsMHgwRCwKICAgMHgxMCwweDExLDB4MTIsMHgxMywweDE0LDB4MTUsMHgxNiwweDE3LDB4MTgsMHgxOSwweDFBLDB4MUIsCiAgIDB4MUUsMHgxRiwweDIwLDB4MjEsMHgyMiwweDIzLDB4MjQsMHgyNSwweDI2LDB4MjcsMHgyOCwweDJCLAogICAweDJDLDB4MkQsMHgyRSwweDJGLDB4MzAsMHgzMSwweDMyLDB4MzMsMHgzNCwweDM1LAogICAweDU2IC8qIHRoZSAxMDJuZCBrZXkgKGFjdHVhbGx5IHRvIHRoZSByaWdodCBvZiBsLXNoaWZ0KSAqLwp9OwogICAgICA8L3Byb2dyYW1saXN0aW5nPgogICAgICA8cGFyYT4KICAgICAgICBOZXh0LCBhc3NpZ24gZWFjaCBzY2FuY29kZSB0aGUgY2hhcmFjdGVycyBpbXByaW50ZWQgb24gdGhlCiAgICAgICAga2V5Y2Fwcy4gVGhpcyB3YXMgZG9uZSAoc29ydCBvZikgZm9yIHRoZSBVUyAxMDEta2V5IGtleWJvYXJkLAogICAgICAgIHdoaWNoIHlvdSBjYW4gZmluZCBuZWFyIHRoZSB0b3AgaW4KICAgICAgICA8ZmlsZW5hbWU+a2V5Ym9hcmQuYzwvZmlsZW5hbWU+LiBJdCBhbHNvIHNob3dzIHRoYXQgaWYgdGhlcmUKICAgICAgICBpcyBubyAxMDJuZCBrZXksIHlvdSBjYW4gc2tpcCB0aGF0LgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgogICAgICAgIEhvd2V2ZXIsIGZvciBtb3N0IGludGVybmF0aW9uYWwgMTAyLWtleSBrZXlib2FyZHMsIHdlIGhhdmUKICAgICAgICBkb25lIGl0IGVhc3kgZm9yIHlvdS4gVGhlIHNjYW5jb2RlIGxheW91dCBmb3IgdGhlc2UgYWxyZWFkeQogICAgICAgIHByZXR0eSBtdWNoIG1hdGNoZXMgdGhlIHBoeXNpY2FsIGxheW91dCBpbiB0aGUKICAgICAgICA8ZnVuY3Rpb24+bWFpbl9rZXlfc2NhbjwvZnVuY3Rpb24+LCBzbyBhbGwgeW91IG5lZWQgdG8gZG8gaXMKICAgICAgICB0byBnbyB0aHJvdWdoIGFsbCB0aGUga2V5cyB0aGF0IGdlbmVyYXRlIGNoYXJhY3RlcnMgb24geW91cgogICAgICAgIG1haW4ga2V5Ym9hcmQgKGV4Y2VwdCBzcGFjZWJhciksIGFuZCBzdHVmZiB0aG9zZSBpbnRvIGFuCiAgICAgICAgYXBwcm9wcmlhdGUgdGFibGUuIFRoZSBvbmx5IGV4Y2VwdGlvbiBpcyB0aGF0IHRoZSAxMDJuZCBrZXksCiAgICAgICAgd2hpY2ggaXMgdXN1YWxseSB0byB0aGUgbGVmdCBvZiB0aGUgZmlyc3Qga2V5IG9mIHRoZSBsYXN0IGxpbmUKICAgICAgICAodXN1YWxseSA8a2V5Y2FwPlo8L2tleWNhcD4pLCBtdXN0IGJlIHBsYWNlZCBvbiBhIHNlcGFyYXRlCiAgICAgICAgbGluZSBhZnRlciB0aGUgbGFzdCBsaW5lLgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgogICAgICAgIEZvciBleGFtcGxlLCBteSBOb3J3ZWdpYW4ga2V5Ym9hcmQgbG9va3MgbGlrZSB0aGlzCiAgICAgIDwvcGFyYT4KICAgICAgPHNjcmVlbj4KpyAgISAgIiAgIyAgpCAgJSAgJiAgLyAgKCAgKSAgPSAgPyAgYCAgQmFjay0KfCAgMSAgMkAgM6MgNCQgNSAgNiAgN3sgOFsgOV0gMH0gKyAgXLQgc3BhY2UKClRhYiBRICBXICBFICBSICBUICBZICBVICBJICBPICBQICDFICBeCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICCofgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW50ZXIKQ2FwcyBBICBTICBEICBGICBHICBIICBKICBLICBMICDYICDGICAqCkxvY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJwoKU2gtID4gWiAgWCAgQyAgViAgQiAgTiAgTSAgOyAgOiAgXyAgU2hpZnQKaWZ0ICZsdDsgICAgICAgICAgICAgICAgICAgICAgLCAgLiAgLQoKQ3RybCAgQWx0ICAgICAgIFNwYWNlYmFyICAgICAgIEFsdEdyICBDdHJsCiAgICAgIDwvc2NyZWVuPgogICAgICA8cGFyYT4KICAgICAgICBOb3RlIHRoZSAxMDJuZCBrZXksIHdoaWNoIGlzIHRoZSA8a2V5Y2FwPiZsdDs+PC9rZXljYXA+IGtleSwgdG8KICAgICAgICB0aGUgbGVmdCBvZiA8a2V5Y2FwPlo8L2tleWNhcD4uIFRoZSBjaGFyYWN0ZXIgdG8gdGhlIHJpZ2h0IG9mCiAgICAgICAgdGhlIG1haW4gY2hhcmFjdGVyIGlzIHRoZSBjaGFyYWN0ZXIgZ2VuZXJhdGVkIGJ5CiAgICAgICAgPGtleWNhcD5BbHRHcjwva2V5Y2FwPi4KICAgICAgPC9wYXJhPgogICAgICA8cGFyYT4KICAgICAgICBUaGlzIGtleWJvYXJkIGlzIGRlZmluZWQgYXMgZm9sbG93czoKICAgICAgPC9wYXJhPgogICAgICA8cHJvZ3JhbWxpc3Rpbmc+CnN0YXRpYyBjb25zdCBjaGFyIG1haW5fa2V5X05PW01BSU5fTEVOXVs0XSA9CnsKICJ8pyIsIjEhIiwiMlwiQCIsIjMjoyIsIjSkJCIsIjUlIiwiNiYiLCI3L3siLCI4KFsiLCI5KV0iLCIwPX0iLCIrPyIsIlxctCIsCiAicVEiLCJ3VyIsImVFIiwiclIiLCJ0VCIsInlZIiwidVUiLCJpSSIsIm9PIiwicFAiLCLlxSIsIqhefiIsCiAiYUEiLCJzUyIsImREIiwiZkYiLCJnRyIsImhIIiwiakoiLCJrSyIsImxMIiwi+NgiLCLmxiIsIicqIiwKICJ6WiIsInhYIiwiY0MiLCJ2ViIsImJCIiwibk4iLCJtTSIsIiw7IiwiLjoiLCItXyIsCiAiJmx0Oz4iCn07ICAgCiAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgIDxwYXJhPgogICAgICAgIEV4Y2VwdCB0aGF0ICIgYW5kIFwgbmVlZHMgdG8gYmUgcXVvdGVkIHdpdGggYSBiYWNrc2xhc2gsIGFuZAogICAgICAgIHRoYXQgdGhlIDEwMm5kIGtleSBpcyBvbiBhIHNlcGFyYXRlIGxpbmUsIGl0J3MgcHJldHR5CiAgICAgICAgc3RyYWlnaHRmb3J3YXJkLgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgogICAgICAgIEFmdGVyIHlvdSBoYXZlIHdyaXR0ZW4gc3VjaCBhIHRhYmxlLCB5b3UgbmVlZCB0byBhZGQgaXQgdG8gdGhlCiAgICAgICAgPGZ1bmN0aW9uPm1haW5fa2V5X3RhYltdPC9mdW5jdGlvbj4gbGF5b3V0IGluZGV4IHRhYmxlLiBUaGlzCiAgICAgICAgd2lsbCBsb29rIGxpa2UgdGhpczoKICAgICAgPC9wYXJhPgogICAgICA8cHJvZ3JhbWxpc3Rpbmc+CnN0YXRpYyBzdHJ1Y3QgewogV09SRCBsYW5nLCBhbnNpX2NvZGVwYWdlLCBvZW1fY29kZXBhZ2U7CiBjb25zdCBjaGFyICgqa2V5KVtNQUlOX0xFTl1bNF07Cn0gbWFpbl9rZXlfdGFiW109ewouLi4KLi4uCiB7TUFLRUxBTkdJRChMQU5HX05PUldFR0lBTixTVUJMQU5HX0RFRkFVTFQpLCAgMTI1MiwgODY1LCAmYW1wO21haW5fa2V5X05PfSwgIAouLi4KICAgICAgPC9wcm9ncmFtbGlzdGluZz4KICAgICAgPHBhcmE+CiAgICAgICAgQWZ0ZXIgeW91IGhhdmUgYWRkZWQgeW91ciB0YWJsZSwgcmVjb21waWxlIFdpbmUgYW5kIHRlc3QgdGhhdAogICAgICAgIGl0IHdvcmtzLiBJZiBpdCBmYWlscyB0byBkZXRlY3QgeW91ciB0YWJsZSwgdHJ5IHJ1bm5pbmcKICAgICAgPC9wYXJhPgogICAgICA8c2NyZWVuPgp3aW5lIC0tZGVidWdtc2cgK2tleSwra2V5Ym9hcmQgPiYga2V5LmxvZwogICAgICA8L3NjcmVlbj4KICAgICAgPHBhcmE+CiAgICAgICAgYW5kIGxvb2sgaW4gdGhlIHJlc3VsdGluZyA8ZmlsZW5hbWU+a2V5LmxvZzwvZmlsZW5hbWU+IGZpbGUgdG8KICAgICAgICBmaW5kIHRoZSBlcnJvciBtZXNzYWdlcyBpdCBnaXZlcyBmb3IgeW91ciBsYXlvdXQuCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgTm90ZSB0aGF0IHRoZSA8Y29uc3RhbnQ+TEFOR18qPC9jb25zdGFudD4gYW5kCiAgICAgICAgPGNvbnN0YW50PlNVQkxBTkdfKjwvY29uc3RhbnQ+IGRlZmluaXRpb25zIGFyZSBpbgogICAgICAgIDxmaWxlbmFtZT5pbmNsdWRlL3dpbm5scy5oPC9maWxlbmFtZT4sIHdoaWNoIHlvdSBtaWdodCBuZWVkIHRvCiAgICAgICAga25vdyB0byBmaW5kIG91dCB3aGljaCBudW1iZXJzIHlvdXIgbGFuZ3VhZ2UgaXMgYXNzaWduZWQsIGFuZAogICAgICAgIGZpbmQgaXQgaW4gdGhlIGRlYnVnbXNnIG91dHB1dC4gVGhlIG51bWJlcnMgd2lsbCBiZQogICAgICAgIDxsaXRlcmFsPihTVUJMQU5HICogMHg0MDAgKyBMQU5HKTwvbGl0ZXJhbD4sIHNvLCBmb3IgZXhhbXBsZQogICAgICAgIHRoZSBjb21iaW5hdGlvbiA8bGl0ZXJhbD5MQU5HX05PUldFR0lBTiAoMHgxNCk8L2xpdGVyYWw+IGFuZAogICAgICAgIDxsaXRlcmFsPlNVQkxBTkdfREVGQVVMVCAoMHgxKTwvbGl0ZXJhbD4gd2lsbCBiZSAoaW4gaGV4KQogICAgICAgIDxsaXRlcmFsPjE0ICsgMSo0MDAgPSA0MTQ8L2xpdGVyYWw+LCBzbyBzaW5jZSBJJ20gTm9yd2VnaWFuLCBJCiAgICAgICAgY291bGQgbG9vayBmb3IgPGxpdGVyYWw+MDQxNDwvbGl0ZXJhbD4gaW4gdGhlIGRlYnVnbXNnIG91dHB1dAogICAgICAgIHRvIGZpbmQgb3V0IHdoeSBteSBrZXlib2FyZCB3b24ndCBkZXRlY3QuCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgT25jZSBpdCB3b3Jrcywgc3VibWl0IGl0IHRvIHRoZSBXaW5lIHByb2plY3QuIElmIHlvdSB1c2UgQ1ZTLAogICAgICAgIHlvdSB3aWxsIGp1c3QgaGF2ZSB0byBkbwogICAgICA8L3BhcmE+CiAgICAgIDxzY3JlZW4+CmN2cyAtejMgZGlmZiAtdSB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jID4gbGF5b3V0LmRpZmYKICAgICAgPC9zY3JlZW4+CiAgICAgIDxwYXJhPgogICAgICAgIGZyb20geW91ciBtYWluIFdpbmUgZGlyZWN0b3J5LCB0aGVuIHN1Ym1pdAogICAgICAgIDxmaWxlbmFtZT5sYXlvdXQuZGlmZjwvZmlsZW5hbWU+IHRvCiAgICAgICAgPGVtYWlsPndpbmUtcGF0Y2hlc0B3aW5laHEuY29tPC9lbWFpbD4gYWxvbmcgd2l0aCBhIGJyaWVmIG5vdGUKICAgICAgICBvZiB3aGF0IGl0IGlzLgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgogICAgICAgIElmIHlvdSBkb24ndCB1c2UgQ1ZTLCB5b3UgbmVlZCB0byBkbwogICAgICA8L3BhcmE+CiAgICAgIDxzY3JlZW4+CmRpZmYgLXUgdGhlX2JhY2t1cF9maWxlX3lvdV9tYWRlIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMgPiBsYXlvdXQuZGlmZgogICAgICA8L3NjcmVlbj4KICAgICAgPHBhcmE+CiAgICAgICAgYW5kIHN1Ym1pdCBpdCBhcyBleHBsYWluZWQgYWJvdmUuCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgSWYgeW91IGRpZCBpdCByaWdodCwgaXQgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgbmV4dCBXaW5lCiAgICAgICAgcmVsZWFzZSwgYW5kIGFsbCB0aGUgdHJvdWJsZXNvbWUgYXBwbGljYXRpb25zIChlc3BlY2lhbGx5CiAgICAgICAgcmVtb3RlLWNvbnRyb2wgYXBwbGljYXRpb25zKSBhbmQgZ2FtZXMgdGhhdCB1c2Ugc2NhbmNvZGVzIHdpbGwKICAgICAgICBiZSBoYXBwaWx5IHVzaW5nIHlvdXIga2V5Ym9hcmQgbGF5b3V0LCBhbmQgeW91IHdvbid0IGdldCB0aG9zZQogICAgICAgIGFubm95aW5nIGZpeG1lIG1lc3NhZ2VzIGVpdGhlci4KICAgICAgPC9wYXJhPgogICAgICA8cGFyYT4KICAgICAgICBHb29kIGx1Y2suCiAgICAgIDwvcGFyYT4KICAgIDwvc2VjdDE+CiAgPC9jaGFwdGVyPgoKPCEtLSBLZWVwIHRoaXMgY29tbWVudCBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlCkxvY2FsIHZhcmlhYmxlczoKbW9kZTogc2dtbApzZ21sLXBhcmVudC1kb2N1bWVudDooIndpbmUtZG9jLnNnbWwiICJzZXQiICJib29rIiAiY2hhcHRlciIgIiIpCkVuZDoKLS0+Cg==