ClNpUyA5MDAvNzAxNiBGYXN0IEV0aGVybmV0IERldmljZSBEcml2ZXIKCk9sbGllIExobwoKTGVpIENodW4gQ2hhbmcKCiAgIENvcHlyaWdodCCpIDE5OTkgYnkgU2lsaWNvbiBJbnRlZ3JhdGVkIFN5c3RlbSBDb3JwLgogICAKICAgVGhpcyBkb2N1bWVudCBnaXZlcyBzb21lIGluZm9ybWF0aW9uIG9uIGluc3RhbGxhdGlvbiBhbmQgdXNhZ2Ugb2YgU2lTCiAgIDkwMC83MDE2IGRldmljZSBkcml2ZXIgdW5kZXIgTGludXguCiAgIAogICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQKICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogICAKICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAogICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUKICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogICAKICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNwogICBVU0EKICAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwogICAKICAgVGFibGUgb2YgQ29udGVudHMKICAgMS4gSW50cm9kdWN0aW9uCiAgIDIuIENoYW5nZXMKICAgMy4gVGVzdGVkIEVudmlyb25tZW50CiAgIDQuIEZpbGVzIGluIFRoaXMgUGFja2FnZQogICA1LiBJbnN0YWxsYXRpb24KICAgICAgICAgIAogICAgICAgIEJ1aWxkaW5nIHRoZSBkcml2ZXIgYXMgbG9hZGFibGUgbW9kdWxlCiAgICAgICAgQnVpbGRpbmcgdGhlIGRyaXZlciBpbnRvIGtlcm5lbAogICAgICAgICAgICAgICAgCiAgIDYuIEtub3duIFByb2JsZW1zIGFuZCBCdWdzCiAgIDcuIFJldmlzaW9uIEhpc3RvcnkKICAgOC4gQWNrbm93bGVkZ2VtZW50cwogICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCiAgIApDaGFwdGVyIDEuIEludHJvZHVjdGlvbgoKICAgVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgdGhlIHJldmlzaW9uIDEuMDYgYW5kIDEuMDcgb2YgU2lTIDkwMC83MDE2CiAgIEZhc3QgRXRoZXJuZXQgZGV2aWNlIGRyaXZlciB1bmRlciBMaW51eC4gVGhlIGRyaXZlciBpcyBkZXZlbG9wZWQgYnkKICAgU2lsaWNvbiBJbnRlZ3JhdGVkIFN5c3RlbSBDb3JwLiBhbmQgZGlzdHJpYnV0ZWQgZnJlZWx5IHVuZGVyIHRoZSBHTlUKICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKS4gVGhlIGRyaXZlciBjYW4gYmUgY29tcGlsZWQgYXMgYSBsb2FkYWJsZQogICBtb2R1bGUgYW5kIHVzZWQgdW5kZXIgTGludXgga2VybmVsIHZlcnNpb24gMi4yLnguIChyZXYuIDEuMDYpIFdpdGgKICAgbWluaW1hbCBjaGFuZ2VzLCB0aGUgZHJpdmVyIGNhbiBhbHNvIGJlIHVzZWQgdW5kZXIgMi4zLnggYW5kIDIuNC54CiAgIGtlcm5lbCAocmV2LiAxLjA3KSwgcGxlYXNlIHNlZSBDaGFwdGVyIDUuIElmIHlvdSBhcmUgaW50ZW5kZWQgdG8gdXNlCiAgIHRoZSBkcml2ZXIgZm9yIGVhcmxpZXIga2VybmVscywgeW91IGFyZSBvbiB5b3VyIG93bi4KICAgCiAgIFRoZSBkcml2ZXIgaXMgdGVzdGVkIHdpdGggdXN1YWwgVENQL0lQIGFwcGxpY2F0aW9ucyBpbmNsdWRpbmcgRlRQLAogICBUZWxuZXQsIE5ldHNjYXBlIGV0Yy4gYW5kIGlzIHVzZWQgY29uc3RhbnRseSBieSB0aGUgZGV2ZWxvcGVycy4KICAgCiAgIFBsZWFzZSBzZW5kIGFsbCBjb21tZW50cy9maXhlcy9xdWVzdGlvbnMgdG8gTGVpLUNodW4gQ2hhbmcuCiAgICAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KICAgCkNoYXB0ZXIgMi4gQ2hhbmdlcwoKICAgQ2hhbmdlcyBtYWRlIGluIFJldmlzaW9uIDEuMDcKICAgCiAgICAxLiBTZXBhcmF0aW9uIG9mIHNpczkwMC5jIGFuZCBzaXM5MDAuaCBpbiBvcmRlciB0byBtb3ZlIG1vc3QgY29uc3RhbnQKICAgICAgIGRlZmluaXRpb24gdG8gc2lzOTAwLmggKG1hbnkgb2YgdGhvc2UgY29uc3RhbnRzIHdlcmUgY29ycmVjdGVkKQogICAgMi4gQ2xlYW4gdXAgUENJIGRldGVjdGlvbiwgdGhlIHBjaS1zY2FuIGZyb20gRG9uYWxkIEJlY2tlciB3ZXJlIG5vdAogICAgICAgdXNlZCwganVzdCBzaW1wbGUgcGNpX2ZpbmRfKi4KICAgIDMuIE1JSSBkZXRlY3Rpb24gaXMgbW9kaWZpZWQgdG8gc3VwcG9ydCBtdWx0aXBsZSBtaWkgdHJhbnNjZWl2ZXIuCiAgICA0LiBCdWdzIGluIHJlYWRfZWVwcm9tLCBtZGlvXyogd2VyZSByZW1vdmVkLgogICAgNS4gTG90IG9mIHNpczkwMCBpcnJlbGV2YW50IGNvbW1lbnRzIHdlcmUgcmVtb3ZlZC9jaGFuZ2VkIGFuZCBtb3JlCiAgICAgICBjb21tZW50cyB3ZXJlIGFkZGVkIHRvIHJlZmxlY3QgdGhlIHJlYWwgc2l0dWF0aW9uLgogICAgNi4gQ2xlYW4gdXAgb2YgcGh5c2ljYWwvdmlydHVhbCBhZGRyZXNzIHNwYWNlIG1lc3MgaW4gYnVmZmVyCiAgICAgICBkZXNjcmlwdG9ycy4KICAgIDcuIEJldHRlciB0cmFuc21pdC9yZWNlaXZlIGVycm9yIGhhbmRsaW5nLgogICAgOC4gVGhlIGRyaXZlciBub3cgdXNlcyB6ZXJvLWNvcHkgc2luZ2xlIGJ1ZmZlciBtYW5hZ2VtZW50IHNjaGVtZSB0bwogICAgICAgaW1wcm92ZSBwZXJmb3JtYW5jZS4KICAgIDkuIE5hbWVzIG9mIHZhcmlhYmxlcyB3ZXJlIGNoYW5nZWQgdG8gYmUgbW9yZSBjb25zaXN0ZW50LgogICAxMC4gQ2xlYW4gdXAgb2YgYXVvLW5lZ290aWF0aW9uIGFuZCB0aW1lciBjb2RlLgogICAxMS4gQXV0b21hdGljIGRldGVjdGlvbiBhbmQgY2hhbmdlIG9mIFBIWSBvbiB0aGUgZmx5LgogICAxMi4gQnVnIGluIG1hYyBwcm9iaW5nIGZpeGVkLgogICAxMy4gRml4IDYzMEUgZXF1YWxpZXIgcHJvYmxlbSBieSBtb2RpZnlpbmcgdGhlIGVxdWFsaXplciB3b3JrYXJvdW5kCiAgICAgICBydWxlLgogICAxNC4gU3VwcG9ydCBmb3IgSUNTMTg5MyAxMC8xMDAgSW50ZXJhdGVkIFBIWWNlaXZlci4KICAgMTUuIFN1cHBvcnQgZm9yIG1lZGlhIHNlbGVjdCBieSBpZmNvbmZpZy4KICAgMTYuIEFkZGVkIGtlcm5lbC1kb2MgZXh0cmF0YWJsZSBkb2N1bWVudGF0aW9uLgogICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCiAgIApDaGFwdGVyIDMuIFRlc3RlZCBFbnZpcm9ubWVudAoKICAgVGhpcyBkcml2ZXIgaXMgZGV2ZWxvcGVkIG9uIHRoZSBmb2xsb3dpbmcgaGFyZHdhcmUKICAgCiAgICAgKiBJbnRlbCBDZWxlcm9uIDUwMCB3aXRoIFNpUyA2MzAgKHJldiAwMikgY2hpcHNldAogICAgICogU2lTIDkwMCAocmV2IDAxKSBhbmQgU2lTIDcwMTYvNzAxNCBGYXN0IEV0aGVybmV0IENhcmQKICAgICAgIAogICBhbmQgdGVzdGVkIHdpdGggdGhlc2Ugc29mdHdhcmUgZW52aXJvbm1lbnRzCiAgIAogICAgICogUmVkIEhhdCBMaW51eCB2ZXJzaW9uIDYuMgogICAgICogTGludXgga2VybmVsIHZlcnNpb24gMi40LjAKICAgICAqIE5ldHNjYXBlIHZlcnNpb24gNC42CiAgICAgKiBOY0ZUUCAzLjAuMCBiZXRhIDE4CiAgICAgKiBTYW1iYSB2ZXJzaW9uIDIuMC4zCiAgICAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KICAgCkNoYXB0ZXIgNC4gRmlsZXMgaW4gVGhpcyBQYWNrYWdlCgogICBJbiB0aGUgcGFja2FnZSB5b3UgY2FuIGZpbmQgdGhlc2UgZmlsZXM6CiAgIAogICBzaXM5MDAuYwogICAgICAgICAgRHJpdmVyIHNvdXJjZSBmaWxlIGluIEMKICAgICAgICAgIAogICBzaXM5MDAuaAogICAgICAgICAgSGVhZGVyIGZpbGUgZm9yIHNpczkwMC5jCiAgICAgICAgICAKICAgc2lzOTAwLnNnbWwKICAgICAgICAgIERvY0Jvb2sgU0dNTCBzb3VyY2Ugb2YgdGhlIGRvY3VtZW50CiAgICAgICAgICAKICAgc2lzOTAwLnR4dAogICAgICAgICAgRHJpdmVyIGRvY3VtZW50IGluIHBsYWluIHRleHQKICAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwogICAKQ2hhcHRlciA1LiBJbnN0YWxsYXRpb24KCiAgIFNpbGljb24gSW50ZWdyYXRlZCBTeXN0ZW0gQ29ycC4gaXMgY29vcGVyYXRpbmcgY2xvc2VseSB3aXRoIGNvcmUgTGludXgKICAgS2VybmVsIGRldmVsb3BlcnMuIFRoZSByZXZpc2lvbnMgb2YgU2lTIDkwMCBkcml2ZXIgYXJlIGRpc3RyaWJ1dGVkIGJ5CiAgIHRoZSB1c3VhbGwgY2hhbm5lbHMgZm9yIGtlcm5lbCB0YXIgZmlsZXMgYW5kIHBhdGNoZXMuIFRob3NlIGtlcm5lbCB0YXIKICAgZmlsZXMgZm9yIG9mZmljaWFsIGtlcm5lbCBhbmQgcGF0Y2hlcyBmb3Iga2VybmVsIHByZS1yZWxlYXNlIGNhbiBiZQogICBkb3dubG9hZCBhdCBvZmZpY2lhbCBrZXJuZWwgZnRwIHNpdGUgYW5kIGl0cyBtaXJyb3JzLiBUaGUgMS4wNgogICByZXZpc2lvbiBjYW4gYmUgZm91bmQgaW4ga2VybmVsIHZlcnNpb24gbGF0ZXIgdGhhbiAyLjMuMTUgYW5kCiAgIHByZS0yLjIuMTQsIGFuZCAxLjA3IHJldmlzaW9uIGNhbiBiZSBmb3VuZCBpbiBrZXJuZWwgdmVyc2lvbiAyLjQuMC4gSWYKICAgeW91IGhhdmUgbm8gcHJpb3IgZXhwZXJpZW5jZSBpbiBuZXR3b3JraW5nIHVuZGVyIExpbnV4LCBwbGVhc2UgcmVhZAogICBFdGhlcm5ldCBIT1dUTyBhbmQgTmV0d29ya2luZyBIT1dUTyBhdmFpbGFibGUgZnJvbSBMaW51eCBEb2N1bWVudGF0aW9uCiAgIFByb2plY3QgKExEUCkuCiAgIAogICBUaGUgZHJpdmVyIGlzIGJ1bmRsZWQgaW4gcmVsZWFzZSBsYXRlciB0aGFuIDIuMi4xMSBhbmQgMi4zLjE1IHNvIHRoaXMKICAgaXMgdGhlIG1vc3QgZWFzeSBjYXNlLiBCZSBzdXJlIHlvdSBoYXZlIHRoZSBhcHByb3ByaWF0ZSBwYWNrYWdlcyBmb3IKICAgY29tcGlsaW5nIGtlcm5lbCBzb3VyY2UuIFRob3NlIHBhY2thZ2VzIGFyZSBsaXN0ZWQgaW4gRG9jdW1lbnQvQ2hhbmdlcwogICBpbiBrZXJuZWwgc291cmNlIGRpc3RyaWJ1dGlvbi4gSWYgeW91IGhhdmUgdG8gaW5zdGFsbCB0aGUgZHJpdmVyIG90aGVyCiAgIHRoYW4gdGhvc2UgYnVuZGxlZCBpbiBrZXJuZWwgcmVsZWFzZSwgeW91IHNob3VsZCBoYXZlIHlvdXIgZHJpdmVyIGZpbGUKICAgc2lzOTAwLmMgYW5kIHNpczkwMC5oIGNvcGllZCBpbnRvIC91c3Ivc3JjL2xpbnV4L2RyaXZlcnMvbmV0LyBmaXJzdC4KICAgVGhlcmUgYXJlIHR3byBhbHRlcm5hdGl2ZSB3YXlzIHRvIGluc3RhbGwgdGhlIGRyaXZlcgogICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCiAgIApCdWlsZGluZyB0aGUgZHJpdmVyIGFzIGxvYWRhYmxlIG1vZHVsZQoKICAgVG8gYnVpbGQgdGhlIGRyaXZlciBhcyBhIGxvYWRhYmxlIGtlcm5lbCBtb2R1bGUgeW91IGhhdmUgdG8KICAgcmVjb25maWd1cmUgdGhlIGtlcm5lbCB0byBhY3RpdmF0ZSBuZXR3b3JrIHN1cHBvcnQgYnkKICAgCm1ha2UgbWVudWNvbmZpZwoKICAgQ2hvb3NlICJMb2FkYWJsZSBtb2R1bGUgc3VwcG9ydCAtLS0+IiwgdGhlbiBzZWxlY3QgIkVuYWJsZSBsb2FkYWJsZQogICBtb2R1bGUgc3VwcG9ydCIuCiAgIAogICBDaG9vc2UgIk5ldHdvcmsgRGV2aWNlIFN1cHBvcnQgLS0tPiIsIHNlbGVjdCAiRXRoZXJuZXQgKDEwIG9yCiAgIDEwME1iaXQpIi4gVGhlbiBzZWxlY3QgIkVJU0EsIFZMQiwgUENJIGFuZCBvbiBib2FyZCBjb250cm9sbGVycyIsIGFuZAogICBjaG9vc2UgIlNpUyA5MDAvNzAxNiBQQ0kgRmFzdCBFdGhlcm5ldCBBZGFwdGVyIHN1cHBvcnQiIHRvICJNIi4KICAgCiAgIEFmdGVyIHJlY29uZmlndXJpbmcgdGhlIGtlcm5lbCwgeW91IGNhbiBtYWtlIHRoZSBkcml2ZXIgbW9kdWxlIGJ5CiAgIAptYWtlIG1vZHVsZXMKCiAgIFRoZSBkcml2ZXIgc2hvdWxkIGJlIGNvbXBpbGVkIHdpdGggbm8gZXJyb3JzLiBBZnRlciBjb21waWxpbmcgdGhlCiAgIGRyaXZlciwgdGhlIGRyaXZlciBjYW4gYmUgaW5zdGFsbGVkIHRvIHByb3BlciBwbGFjZSBieQogICAKbWFrZSBtb2R1bGVzX2luc3RhbGwKCiAgIExvYWQgdGhlIGRyaXZlciBpbnRvIGtlcm5lbCBieQogICAKaW5zbW9kIHNpczkwMAoKICAgV2hlbiBsb2FkaW5nIHRoZSBkcml2ZXIgaW50byBtZW1vcnksIHNvbWUgaW5mb3JtYXRpb24gbWVzc2FnZSBjYW4gYmUKICAgdmlldyBieQogICAKZG1lc2cKCiAgIG9yCmNhdCAvdmFyL2xvZy9tZXNzYWdlCgogICBJZiB0aGUgZHJpdmVyIGlzIGxvYWRlZCBwcm9wZXJseSB5b3Ugd2lsbCBoYXZlIG1lc3NhZ2VzIHNpbWlsYXIgdG8KICAgdGhpczoKICAgCnNpczkwMC5jOiB2MS4wNy4wNiAgMTEvMDcvMjAwMApldGgwOiBTaVMgOTAwIFBDSSBGYXN0IEV0aGVybmV0IGF0IDB4ZDAwMCwgSVJRIDEwLCAwMDowMDplODo4Mzo3ZjphNC4KZXRoMDogU2lTIDkwMCBJbnRlcm5hbCBNSUkgUEhZIHRyYW5zY2VpdmVyIGZvdW5kIGF0IGFkZHJlc3MgMS4KZXRoMDogVXNpbmcgU2lTIDkwMCBJbnRlcm5hbCBNSUkgUEhZIGFzIGRlZmF1bHQKCiAgIHNob3dpbmcgdGhlIHZlcnNpb24gb2YgdGhlIGRyaXZlciBhbmQgdGhlIHJlc3VsdHMgb2YgcHJvYmluZyByb3V0aW5lLgogICAKICAgT25jZSB0aGUgZHJpdmVyIGlzIGxvYWRlZCwgbmV0d29yayBjYW4gYmUgYnJvdWdodCB1cCBieQogICAKL3NiaW4vaWZjb25maWcgZXRoMCBJUEFERFIgYnJvYWRjYXN0IEJST0FEQ0FTVCBuZXRtYXNrIE5FVE1BU0sgbWVkaWEgVFlQRQoKICAgd2hlcmUgSVBBRERSLCBCUk9BRENBU1QsIE5FVE1BU0sgYXJlIHlvdXIgSVAgYWRkcmVzcywgYnJvYWRjYXN0CiAgIGFkZHJlc3MgYW5kIG5ldG1hc2sgcmVzcGVjdGl2ZWx5LiBUWVBFIGlzIHVzZWQgdG8gc2V0IG1lZGl1bSB0eXBlIHVzZWQKICAgYnkgdGhlIGRldmljZS4gVHlwaWNhbCB2YWx1ZXMgYXJlICIxMGJhc2VUIih0d2lzdGVkLXBhaXIgMTBNYnBzCiAgIEV0aGVybmV0KSBvciAiMTAwYmFzZVQiICh0d2lzdGVkLXBhaXIgMTAwTWJwcyBFdGhlcm5ldCkuIEZvciBtb3JlCiAgIGluZm9ybWF0aW9uIG9uIGhvdyB0byBjb25maWd1cmUgbmV0d29yayBpbnRlcmZhY2UsIHBsZWFzZSByZWZlciB0bwogICBOZXR3b3JraW5nIEhPV1RPLgogICAKICAgVGhlIGxpbmsgc3RhdHVzIGlzIGFsc28gc2hvd24gYnkga2VybmVsIG1lc3NhZ2VzLiBGb3IgZXhhbXBsZSwgYWZ0ZXIKICAgdGhlIG5ldHdvcmsgaW50ZXJmYWNlIGlzIGFjdGl2YXRlZCwgeW91IG1heSBoYXZlIHRoZSBtZXNzYWdlOgogICAKZXRoMDogTWVkaWEgTGluayBPbiAxMDBtYnBzIGZ1bGwtZHVwbGV4CgogICBJZiB5b3UgdHJ5IHRvIHVucGx1ZyB0aGUgdHdpc3QgcGFpciAoVFApIGNhYmxlIHlvdSB3aWxsIGdldAogICAKZXRoMDogTWVkaWEgTGluayBPZmYKCiAgIGluZGljYXRpbmcgdGhhdCB0aGUgbGluayBpcyBmYWlsZWQuCiAgICAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KICAgCkJ1aWxkaW5nIHRoZSBkcml2ZXIgaW50byBrZXJuZWwKCiAgIElmIHlvdSB3YW50IHRvIG1ha2UgdGhlIGRyaXZlciBpbnRvIGtlcm5lbCwgY2hvb3NlICJZIiByYXRoZXIgdGhhbiAiTSIKICAgb24gIlNpUyA5MDAvNzAxNiBQQ0kgRmFzdCBFdGhlcm5ldCBBZGFwdGVyIHN1cHBvcnQiIHdoZW4gY29uZmlndXJpbmcKICAgdGhlIGtlcm5lbC4gQnVpbGQgdGhlIGtlcm5lbCBpbWFnZSBpbiB0aGUgdXN1YWwgd2F5CiAgIAptYWtlIGNsZWFuCgptYWtlIGJ6bGlsbwoKICAgTmV4dCB0aW1lIHRoZSBzeXN0ZW0gcmVib290LCB5b3UgaGF2ZSB0aGUgZHJpdmVyIGluIG1lbW9yeS4KICAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwogICAKQ2hhcHRlciA2LiBLbm93biBQcm9ibGVtcyBhbmQgQnVncwoKICAgVGhlcmUgYXJlIHNvbWUga25vd24gcHJvYmxlbXMgYW5kIGJ1Z3MuIElmIHlvdSBmaW5kIGFueSBvdGhlciBidWdzCiAgIHBsZWFzZSBtYWlsIHRvIGxjY2hhbmdAc2lzLmNvbS50dwogICAKICAgIDEuIEFNNzlDOTAxIEhvbWVQTkEgUEhZIGlzIG5vdCB0aG9yb3VnaGx5IHRlc3RlZCwgdGhlcmUgbWF5IGJlIHNvbWUKICAgICAgIGJ1Z3MgaW4gdGhlICJvbiB0aGUgZmx5IiBjaGFuZ2Ugb2YgdHJhbnNjZWl2ZXIuCiAgICAyLiBBIGJ1ZyBpcyBoaWRkZW4gc29tZXdoZXJlIGluIHRoZSByZWNlaXZlIGJ1ZmZlciBtYW5hZ2VtZW50IGNvZGUsCiAgICAgICB0aGUgYnVnIGNhdXNlcyBOVUxMIHBvaW50ZXIgcmVmZXJlbmNlIGluIHRoZSBrZXJuZWwuIFRoaXMgZmF1bHQgaXMKICAgICAgIGNhdWdodCBiZWZvcmUgYmFkIHRoaW5ncyBoYXBwZW4gYW5kIHJlcG9ydGVkIHdpdGggdGhlIG1lc3NhZ2U6CiAgICAgICBldGgwOiBOVUxMIHBvaW50ZXIgZW5jb3VudGVyZWQgaW4gUnggcmluZywgc2tpcHBpbmcgd2hpY2ggY2FuIGJlCiAgICAgICB2aWV3ZWQgd2l0aCBkbWVzZyBvciBjYXQgL3Zhci9sb2cvbWVzc2FnZS4KICAgIDMuIFRoZSBtZWRpYSB0eXBlIGNoYW5nZSBmcm9tIDEwTWJwcyB0byAxMDBNYnBzIHR3aXN0ZWQtcGFpciBldGhlcm5ldAogICAgICAgYnkgaWZjb25maWcgY2F1c2VzIHRoZSBtZWRpYSBsaW5rIGRvd24uCiAgICAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KICAgCkNoYXB0ZXIgNy4gUmV2aXNpb24gSGlzdG9yeQoKICAgICAqIE5vdmVtYmVyIDEzLCAyMDAwLCBSZXZpc2lvbiAxLjA3LCBzZXZlbnRoIHJlbGVhc2UsIDYzMEUgcHJvYmxlbQogICAgICAgZml4ZWQgYW5kIGZ1cnRoZXIgY2xlYW4gdXAuCiAgICAgKiBOb3ZlbWJlciA0LCAxOTk5LCBSZXZpc2lvbiAxLjA2LCBTZWNvbmQgcmVsZWFzZSwgbG90cyBvZiBjbGVhbiB1cAogICAgICAgYW5kIG9wdGltaXphdGlvbi4KICAgICAqIEF1Z3VzdCA4LCAxOTk5LCBSZXZpc2lvbiAxLjA1LCBJbml0aWFsIFB1YmxpYyBSZWxlYXNlCiAgICAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KICAgCkNoYXB0ZXIgOC4gQWNrbm93bGVkZ2VtZW50cwoKICAgVGhpcyBkcml2ZXIgd2FzIG9yaWdpbmFsbHkgZGVyaXZlZCBmb3JtIERvbmFsZCBCZWNrZXIncyBwY2ktc2tlbGV0b24KICAgYW5kIHJ0bDgxMzkgZHJpdmVycy4gRG9uYWxkIGFsc28gcHJvdmlkZWQgdmFyaW91cyBzdWdnZXN0aW9uIHJlZ2FyZGVkCiAgIHdpdGggaW1wcm92ZW1lbnRzIG1hZGUgaW4gcmV2aXNpb24gMS4wNi4KICAgCiAgIFRoZSAxLjA1IHJldmlzaW9uIHdhcyBjcmVhdGVkIGJ5IEppbSBIdWFuZywgQU1EIDc5YzkwMSBzdXBwb3J0IHdhcwogICBhZGRlZCBieSBDaGluLVNoYW4gTGkuCg==