From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sumit Semwal Subject: [PATCH v2 1/2] Documentation: move dma-buf documentation to rst Date: Mon, 22 Aug 2016 20:41:44 +0530 Message-ID: <1471878705-3963-2-git-send-email-sumit.semwal@linaro.org> References: <1471878705-3963-1-git-send-email-sumit.semwal@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pf0-x234.google.com (mail-pf0-x234.google.com [IPv6:2607:f8b0:400e:c00::234]) by gabe.freedesktop.org (Postfix) with ESMTPS id 29C896E50E for ; Mon, 22 Aug 2016 15:13:41 +0000 (UTC) Received: by mail-pf0-x234.google.com with SMTP id x72so33355318pfd.2 for ; Mon, 22 Aug 2016 08:13:41 -0700 (PDT) In-Reply-To: <1471878705-3963-1-git-send-email-sumit.semwal@linaro.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org, linux-doc@vger.kernel.org Cc: markus.heiser@darmarit.de, linux-kernel@vger.kernel.org, corbet@lwn.net List-Id: dri-devel@lists.freedesktop.org QnJhbmNoIG91dCBkbWEtYnVmIHJlbGF0ZWQgZG9jdW1lbnRhdGlvbiBpbnRvIGl0cyBvd24gcnN0 IGZpbGUgdG8gYWxsb3cKYWRkaW5nIGl0IHRvIHRoZSBzcGhpbnggZG9jdW1lbnRhdGlvbiBnZW5l cmF0ZWQuCgpXaGlsZSBhdCBpdCwgbW92ZSBkbWEtYnVmLXNoYXJpbmcudHh0IGludG8gcnN0IGFz IHRoZSBkbWEtYnVmIGd1aWRlIHRvbzsKYWRqdXN0IE1BSU5UQUlORVJTIGFjY29yZGluZ2x5LgoK djI6Ci0gUmVtb3ZlZCBhdXRob3JzaGlwIGFzIHN1Z2dlc3RlZCBieSBKYW5pLAotIEFkZHJlc3Mg cmV2aWV3IGNvbW1lbnRzIGZyb20gSm9uYXRoYW4gQ29yYmV0IGFuZCBNYXJrdXMgSGVpc2VyLgoK U2lnbmVkLW9mZi1ieTogU3VtaXQgU2Vtd2FsIDxzdW1pdC5zZW13YWxAbGluYXJvLm9yZz4KLS0t CiBEb2N1bWVudGF0aW9uL0RvY0Jvb2svZGV2aWNlLWRyaXZlcnMudG1wbCB8ICA0MSAtLS0KIERv Y3VtZW50YXRpb24vZG1hLWJ1Zi1zaGFyaW5nLnR4dCAgICAgICAgIHwgNDgyIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KIERvY3VtZW50YXRpb24vZG1hLWJ1Zi9ndWlkZS5yc3QgICAgICAg ICAgIHwgNTA3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogRG9jdW1lbnRhdGlvbi9k bWEtYnVmL2ludHJvLnJzdCAgICAgICAgICAgfCAgODIgKysrKysKIE1BSU5UQUlORVJTICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCiA1IGZpbGVzIGNoYW5nZWQsIDU5MCBp bnNlcnRpb25zKCspLCA1MjQgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQgRG9jdW1l bnRhdGlvbi9kbWEtYnVmLXNoYXJpbmcudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRh dGlvbi9kbWEtYnVmL2d1aWRlLnJzdAogY3JlYXRlIG1vZGUgMTAwNjQ0IERvY3VtZW50YXRpb24v ZG1hLWJ1Zi9pbnRyby5yc3QKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svZGV2 aWNlLWRyaXZlcnMudG1wbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9kZXZpY2UtZHJpdmVycy50 bXBsCmluZGV4IDljMTAwMzBlYjJiZS4uYTkzZmJmZmE5NzQyIDEwMDY0NAotLS0gYS9Eb2N1bWVu dGF0aW9uL0RvY0Jvb2svZGV2aWNlLWRyaXZlcnMudG1wbAorKysgYi9Eb2N1bWVudGF0aW9uL0Rv Y0Jvb2svZGV2aWNlLWRyaXZlcnMudG1wbApAQCAtMTI4LDQ3ICsxMjgsNiBAQCBYIUVkcml2ZXJz L2Jhc2UvaW50ZXJmYWNlLmMKICFFZHJpdmVycy9iYXNlL3BsYXRmb3JtLmMKICFFZHJpdmVycy9i YXNlL2J1cy5jCiAgICAgIDwvc2VjdDE+Ci0gICAgIDxzZWN0MT4KLSAgICAgICA8dGl0bGU+QnVm ZmVyIFNoYXJpbmcgYW5kIFN5bmNocm9uaXphdGlvbjwvdGl0bGU+Ci0gICAgICAgPHBhcmE+Ci0g ICAgICAgICBUaGUgZG1hLWJ1ZiBzdWJzeXN0ZW0gcHJvdmlkZXMgdGhlIGZyYW1ld29yayBmb3Ig c2hhcmluZyBidWZmZXJzCi0gICAgICAgICBmb3IgaGFyZHdhcmUgKERNQSkgYWNjZXNzIGFjcm9z cyBtdWx0aXBsZSBkZXZpY2UgZHJpdmVycyBhbmQKLSAgICAgICAgIHN1YnN5c3RlbXMsIGFuZCBm b3Igc3luY2hyb25pemluZyBhc3luY2hyb25vdXMgaGFyZHdhcmUgYWNjZXNzLgotICAgICAgIDwv cGFyYT4KLSAgICAgICA8cGFyYT4KLSAgICAgICAgIFRoaXMgaXMgdXNlZCwgZm9yIGV4YW1wbGUs IGJ5IGRybSAicHJpbWUiIG11bHRpLUdQVSBzdXBwb3J0LCBidXQKLSAgICAgICAgIGlzIG9mIGNv dXJzZSBub3QgbGltaXRlZCB0byBHUFUgdXNlIGNhc2VzLgotICAgICAgIDwvcGFyYT4KLSAgICAg ICA8cGFyYT4KLSAgICAgICAgIFRoZSB0aHJlZSBtYWluIGNvbXBvbmVudHMgb2YgdGhpcyBhcmU6 ICgxKSBkbWEtYnVmLCByZXByZXNlbnRpbmcKLSAgICAgICAgIGEgc2dfdGFibGUgYW5kIGV4cG9z ZWQgdG8gdXNlcnNwYWNlIGFzIGEgZmlsZSBkZXNjcmlwdG9yIHRvIGFsbG93Ci0gICAgICAgICBw YXNzaW5nIGJldHdlZW4gZGV2aWNlcywgKDIpIGZlbmNlLCB3aGljaCBwcm92aWRlcyBhIG1lY2hh bmlzbQotICAgICAgICAgdG8gc2lnbmFsIHdoZW4gb25lIGRldmljZSBhcyBmaW5pc2hlZCBhY2Nl c3MsIGFuZCAoMykgcmVzZXJ2YXRpb24sCi0gICAgICAgICB3aGljaCBtYW5hZ2VzIHRoZSBzaGFy ZWQgb3IgZXhjbHVzaXZlIGZlbmNlKHMpIGFzc29jaWF0ZWQgd2l0aAotICAgICAgICAgdGhlIGJ1 ZmZlci4KLSAgICAgICA8L3BhcmE+Ci0gICAgICAgPHNlY3QyPjx0aXRsZT5kbWEtYnVmPC90aXRs ZT4KLSFFZHJpdmVycy9kbWEtYnVmL2RtYS1idWYuYwotIUlpbmNsdWRlL2xpbnV4L2RtYS1idWYu aAotICAgICAgIDwvc2VjdDI+Ci0gICAgICAgPHNlY3QyPjx0aXRsZT5yZXNlcnZhdGlvbjwvdGl0 bGU+Ci0hUGRyaXZlcnMvZG1hLWJ1Zi9yZXNlcnZhdGlvbi5jIFJlc2VydmF0aW9uIE9iamVjdCBP dmVydmlldwotIUVkcml2ZXJzL2RtYS1idWYvcmVzZXJ2YXRpb24uYwotIUlpbmNsdWRlL2xpbnV4 L3Jlc2VydmF0aW9uLmgKLSAgICAgICA8L3NlY3QyPgotICAgICAgIDxzZWN0Mj48dGl0bGU+ZmVu Y2U8L3RpdGxlPgotIUVkcml2ZXJzL2RtYS1idWYvZmVuY2UuYwotIUlpbmNsdWRlL2xpbnV4L2Zl bmNlLmgKLSFFZHJpdmVycy9kbWEtYnVmL3NlcW5vLWZlbmNlLmMKLSFJaW5jbHVkZS9saW51eC9z ZXFuby1mZW5jZS5oCi0hRWRyaXZlcnMvZG1hLWJ1Zi9mZW5jZS1hcnJheS5jCi0hSWluY2x1ZGUv bGludXgvZmVuY2UtYXJyYXkuaAotIUVkcml2ZXJzL2RtYS1idWYvcmVzZXJ2YXRpb24uYwotIUlp bmNsdWRlL2xpbnV4L3Jlc2VydmF0aW9uLmgKLSFFZHJpdmVycy9kbWEtYnVmL3N5bmNfZmlsZS5j Ci0hSWluY2x1ZGUvbGludXgvc3luY19maWxlLmgKLSAgICAgICA8L3NlY3QyPgotICAgICA8L3Nl Y3QxPgogICAgICA8c2VjdDE+PHRpdGxlPkRldmljZSBEcml2ZXJzIERNQSBNYW5hZ2VtZW50PC90 aXRsZT4KICFFZHJpdmVycy9iYXNlL2RtYS1jb2hlcmVudC5jCiAhRWRyaXZlcnMvYmFzZS9kbWEt bWFwcGluZy5jCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RtYS1idWYtc2hhcmluZy50eHQg Yi9Eb2N1bWVudGF0aW9uL2RtYS1idWYtc2hhcmluZy50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IGNhNDRjNTgyMDU4NS4uMDAwMDAwMDAwMDAwCi0tLSBhL0RvY3VtZW50YXRpb24v ZG1hLWJ1Zi1zaGFyaW5nLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDQ4MiArMCwwIEBACi0gICAg ICAgICAgICAgICAgICAgIERNQSBCdWZmZXIgU2hhcmluZyBBUEkgR3VpZGUKLSAgICAgICAgICAg ICAgICAgICAgfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgotCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgU3VtaXQgU2Vtd2FsCi0gICAgICAgICAgICAgICAgPHN1bWl0IGRvdCBzZW13 YWwgYXQgbGluYXJvIGRvdCBvcmc+Ci0gICAgICAgICAgICAgICAgIDxzdW1pdCBkb3Qgc2Vtd2Fs IGF0IHRpIGRvdCBjb20+Ci0KLVRoaXMgZG9jdW1lbnQgc2VydmVzIGFzIGEgZ3VpZGUgdG8gZGV2 aWNlLWRyaXZlciB3cml0ZXJzIG9uIHdoYXQgaXMgdGhlIGRtYS1idWYKLWJ1ZmZlciBzaGFyaW5n IEFQSSwgaG93IHRvIHVzZSBpdCBmb3IgZXhwb3J0aW5nIGFuZCB1c2luZyBzaGFyZWQgYnVmZmVy cy4KLQotQW55IGRldmljZSBkcml2ZXIgd2hpY2ggd2lzaGVzIHRvIGJlIGEgcGFydCBvZiBETUEg YnVmZmVyIHNoYXJpbmcsIGNhbiBkbyBzbyBhcwotZWl0aGVyIHRoZSAnZXhwb3J0ZXInIG9mIGJ1 ZmZlcnMsIG9yIHRoZSAndXNlcicgb2YgYnVmZmVycy4KLQotU2F5IGEgZHJpdmVyIEEgd2FudHMg dG8gdXNlIGJ1ZmZlcnMgY3JlYXRlZCBieSBkcml2ZXIgQiwgdGhlbiB3ZSBjYWxsIEIgYXMgdGhl Ci1leHBvcnRlciwgYW5kIEEgYXMgYnVmZmVyLXVzZXIuCi0KLVRoZSBleHBvcnRlcgotLSBpbXBs ZW1lbnRzIGFuZCBtYW5hZ2VzIG9wZXJhdGlvbnNbMV0gZm9yIHRoZSBidWZmZXIKLS0gYWxsb3dz IG90aGVyIHVzZXJzIHRvIHNoYXJlIHRoZSBidWZmZXIgYnkgdXNpbmcgZG1hX2J1ZiBzaGFyaW5n IEFQSXMsCi0tIG1hbmFnZXMgdGhlIGRldGFpbHMgb2YgYnVmZmVyIGFsbG9jYXRpb24sCi0tIGRl Y2lkZXMgYWJvdXQgdGhlIGFjdHVhbCBiYWNraW5nIHN0b3JhZ2Ugd2hlcmUgdGhpcyBhbGxvY2F0 aW9uIGhhcHBlbnMsCi0tIHRha2VzIGNhcmUgb2YgYW55IG1pZ3JhdGlvbiBvZiBzY2F0dGVybGlz dCAtIGZvciBhbGwgKHNoYXJlZCkgdXNlcnMgb2YgdGhpcwotICAgYnVmZmVyLAotCi1UaGUgYnVm ZmVyLXVzZXIKLS0gaXMgb25lIG9mIChtYW55KSBzaGFyaW5nIHVzZXJzIG9mIHRoZSBidWZmZXIu Ci0tIGRvZXNuJ3QgbmVlZCB0byB3b3JyeSBhYm91dCBob3cgdGhlIGJ1ZmZlciBpcyBhbGxvY2F0 ZWQsIG9yIHdoZXJlLgotLSBuZWVkcyBhIG1lY2hhbmlzbSB0byBnZXQgYWNjZXNzIHRvIHRoZSBz Y2F0dGVybGlzdCB0aGF0IG1ha2VzIHVwIHRoaXMgYnVmZmVyCi0gICBpbiBtZW1vcnksIG1hcHBl ZCBpbnRvIGl0cyBvd24gYWRkcmVzcyBzcGFjZSwgc28gaXQgY2FuIGFjY2VzcyB0aGUgc2FtZSBh cmVhCi0gICBvZiBtZW1vcnkuCi0KLWRtYS1idWYgb3BlcmF0aW9ucyBmb3IgZGV2aWNlIGRtYSBv bmx5Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1UaGUgZG1hX2J1 ZiBidWZmZXIgc2hhcmluZyBBUEkgdXNhZ2UgY29udGFpbnMgdGhlIGZvbGxvd2luZyBzdGVwczoK LQotMS4gRXhwb3J0ZXIgYW5ub3VuY2VzIHRoYXQgaXQgd2lzaGVzIHRvIGV4cG9ydCBhIGJ1ZmZl cgotMi4gVXNlcnNwYWNlIGdldHMgdGhlIGZpbGUgZGVzY3JpcHRvciBhc3NvY2lhdGVkIHdpdGgg dGhlIGV4cG9ydGVkIGJ1ZmZlciwgYW5kCi0gICBwYXNzZXMgaXQgYXJvdW5kIHRvIHBvdGVudGlh bCBidWZmZXItdXNlcnMgYmFzZWQgb24gdXNlIGNhc2UKLTMuIEVhY2ggYnVmZmVyLXVzZXIgJ2Nv bm5lY3RzJyBpdHNlbGYgdG8gdGhlIGJ1ZmZlcgotNC4gV2hlbiBuZWVkZWQsIGJ1ZmZlci11c2Vy IHJlcXVlc3RzIGFjY2VzcyB0byB0aGUgYnVmZmVyIGZyb20gZXhwb3J0ZXIKLTUuIFdoZW4gZmlu aXNoZWQgd2l0aCBpdHMgdXNlLCB0aGUgYnVmZmVyLXVzZXIgbm90aWZpZXMgZW5kLW9mLURNQSB0 byBleHBvcnRlcgotNi4gd2hlbiBidWZmZXItdXNlciBpcyBkb25lIHVzaW5nIHRoaXMgYnVmZmVy IGNvbXBsZXRlbHksIGl0ICdkaXNjb25uZWN0cycKLSAgIGl0c2VsZiBmcm9tIHRoZSBidWZmZXIu Ci0KLQotMS4gRXhwb3J0ZXIncyBhbm5vdW5jZW1lbnQgb2YgYnVmZmVyIGV4cG9ydAotCi0gICBU aGUgYnVmZmVyIGV4cG9ydGVyIGFubm91bmNlcyBpdHMgd2lzaCB0byBleHBvcnQgYSBidWZmZXIu IEluIHRoaXMsIGl0Ci0gICBjb25uZWN0cyBpdHMgb3duIHByaXZhdGUgYnVmZmVyIGRhdGEsIHBy b3ZpZGVzIGltcGxlbWVudGF0aW9uIGZvciBvcGVyYXRpb25zCi0gICB0aGF0IGNhbiBiZSBwZXJm b3JtZWQgb24gdGhlIGV4cG9ydGVkIGRtYV9idWYsIGFuZCBmbGFncyBmb3IgdGhlIGZpbGUKLSAg IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGJ1ZmZlci4gQWxsIHRoZXNlIGZpZWxkcyBhcmUgZmlsbGVk IGluIHN0cnVjdAotICAgZG1hX2J1Zl9leHBvcnRfaW5mbywgZGVmaW5lZCB2aWEgdGhlIERFRklO RV9ETUFfQlVGX0VYUE9SVF9JTkZPIG1hY3JvLgotCi0gICBJbnRlcmZhY2U6Ci0gICAgICBERUZJ TkVfRE1BX0JVRl9FWFBPUlRfSU5GTyhleHBfaW5mbykKLSAgICAgIHN0cnVjdCBkbWFfYnVmICpk bWFfYnVmX2V4cG9ydChzdHJ1Y3QgZG1hX2J1Zl9leHBvcnRfaW5mbyAqZXhwX2luZm8pCi0KLSAg IElmIHRoaXMgc3VjY2VlZHMsIGRtYV9idWZfZXhwb3J0IGFsbG9jYXRlcyBhIGRtYV9idWYgc3Ry dWN0dXJlLCBhbmQKLSAgIHJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBzYW1lLiBJdCBhbHNvIGFz c29jaWF0ZXMgYW4gYW5vbnltb3VzIGZpbGUgd2l0aCB0aGlzCi0gICBidWZmZXIsIHNvIGl0IGNh biBiZSBleHBvcnRlZC4gT24gZmFpbHVyZSB0byBhbGxvY2F0ZSB0aGUgZG1hX2J1ZiBvYmplY3Qs Ci0gICBpdCByZXR1cm5zIE5VTEwuCi0KLSAgICdleHBfbmFtZScgaW4gc3RydWN0IGRtYV9idWZf ZXhwb3J0X2luZm8gaXMgdGhlIG5hbWUgb2YgZXhwb3J0ZXIgLSB0bwotICAgZmFjaWxpdGF0ZSBp bmZvcm1hdGlvbiB3aGlsZSBkZWJ1Z2dpbmcuIEl0IGlzIHNldCB0byBLQlVJTERfTU9ETkFNRSBi eQotICAgZGVmYXVsdCwgc28gZXhwb3J0ZXJzIGRvbid0IGhhdmUgdG8gcHJvdmlkZSBhIHNwZWNp ZmljIG5hbWUsIGlmIHRoZXkgZG9uJ3QKLSAgIHdpc2ggdG8uCi0KLSAgIERFRklORV9ETUFfQlVG X0VYUE9SVF9JTkZPIG1hY3JvIGRlZmluZXMgdGhlIHN0cnVjdCBkbWFfYnVmX2V4cG9ydF9pbmZv LAotICAgemVyb2VzIGl0IG91dCBhbmQgcHJlLXBvcHVsYXRlcyBleHBfbmFtZSBpbiBpdC4KLQot Ci0yLiBVc2Vyc3BhY2UgZ2V0cyBhIGhhbmRsZSB0byBwYXNzIGFyb3VuZCB0byBwb3RlbnRpYWwg YnVmZmVyLXVzZXJzCi0KLSAgIFVzZXJzcGFjZSBlbnRpdHkgcmVxdWVzdHMgZm9yIGEgZmlsZS1k ZXNjcmlwdG9yIChmZCkgd2hpY2ggaXMgYSBoYW5kbGUgdG8gdGhlCi0gICBhbm9ueW1vdXMgZmls ZSBhc3NvY2lhdGVkIHdpdGggdGhlIGJ1ZmZlci4gSXQgY2FuIHRoZW4gc2hhcmUgdGhlIGZkIHdp dGggb3RoZXIKLSAgIGRyaXZlcnMgYW5kL29yIHByb2Nlc3Nlcy4KLQotICAgSW50ZXJmYWNlOgot ICAgICAgaW50IGRtYV9idWZfZmQoc3RydWN0IGRtYV9idWYgKmRtYWJ1ZiwgaW50IGZsYWdzKQot Ci0gICBUaGlzIEFQSSBpbnN0YWxscyBhbiBmZCBmb3IgdGhlIGFub255bW91cyBmaWxlIGFzc29j aWF0ZWQgd2l0aCB0aGlzIGJ1ZmZlcjsKLSAgIHJldHVybnMgZWl0aGVyICdmZCcsIG9yIGVycm9y LgotCi0zLiBFYWNoIGJ1ZmZlci11c2VyICdjb25uZWN0cycgaXRzZWxmIHRvIHRoZSBidWZmZXIK LQotICAgRWFjaCBidWZmZXItdXNlciBub3cgZ2V0cyBhIHJlZmVyZW5jZSB0byB0aGUgYnVmZmVy LCB1c2luZyB0aGUgZmQgcGFzc2VkIHRvCi0gICBpdC4KLQotICAgSW50ZXJmYWNlOgotICAgICAg c3RydWN0IGRtYV9idWYgKmRtYV9idWZfZ2V0KGludCBmZCkKLQotICAgVGhpcyBBUEkgd2lsbCBy ZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhlIGRtYV9idWYsIGFuZCBpbmNyZW1lbnQgcmVmY291bnQg Zm9yCi0gICBpdC4KLQotICAgQWZ0ZXIgdGhpcywgdGhlIGJ1ZmZlci11c2VyIG5lZWRzIHRvIGF0 dGFjaCBpdHMgZGV2aWNlIHdpdGggdGhlIGJ1ZmZlciwgd2hpY2gKLSAgIGhlbHBzIHRoZSBleHBv cnRlciB0byBrbm93IG9mIGRldmljZSBidWZmZXIgY29uc3RyYWludHMuCi0KLSAgIEludGVyZmFj ZToKLSAgICAgIHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmRtYV9idWZfYXR0YWNoKHN0cnVj dCBkbWFfYnVmICpkbWFidWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgZGV2aWNlICpkZXYpCi0KLSAgIFRoaXMgQVBJIHJldHVybnMgcmVm ZXJlbmNlIHRvIGFuIGF0dGFjaG1lbnQgc3RydWN0dXJlLCB3aGljaCBpcyB0aGVuIHVzZWQKLSAg IGZvciBzY2F0dGVybGlzdCBvcGVyYXRpb25zLiBJdCB3aWxsIG9wdGlvbmFsbHkgY2FsbCB0aGUg J2F0dGFjaCcgZG1hX2J1ZgotICAgb3BlcmF0aW9uLCBpZiBwcm92aWRlZCBieSB0aGUgZXhwb3J0 ZXIuCi0KLSAgIFRoZSBkbWEtYnVmIHNoYXJpbmcgZnJhbWV3b3JrIGRvZXMgdGhlIGJvb2trZWVw aW5nIGJpdHMgcmVsYXRlZCB0byBtYW5hZ2luZwotICAgdGhlIGxpc3Qgb2YgYWxsIGF0dGFjaG1l bnRzIHRvIGEgYnVmZmVyLgotCi1VbnRpbCB0aGlzIHN0YWdlLCB0aGUgYnVmZmVyLWV4cG9ydGVy IGhhcyB0aGUgb3B0aW9uIHRvIGNob29zZSBub3QgdG8gYWN0dWFsbHkKLWFsbG9jYXRlIHRoZSBi YWNraW5nIHN0b3JhZ2UgZm9yIHRoaXMgYnVmZmVyLCBidXQgd2FpdCBmb3IgdGhlIGZpcnN0IGJ1 ZmZlci11c2VyCi10byByZXF1ZXN0IHVzZSBvZiBidWZmZXIgZm9yIGFsbG9jYXRpb24uCi0KLQot NC4gV2hlbiBuZWVkZWQsIGJ1ZmZlci11c2VyIHJlcXVlc3RzIGFjY2VzcyB0byB0aGUgYnVmZmVy Ci0KLSAgIFdoZW5ldmVyIGEgYnVmZmVyLXVzZXIgd2FudHMgdG8gdXNlIHRoZSBidWZmZXIgZm9y IGFueSBETUEsIGl0IGFza3MgZm9yCi0gICBhY2Nlc3MgdG8gdGhlIGJ1ZmZlciB1c2luZyBkbWFf YnVmX21hcF9hdHRhY2htZW50IEFQSS4gQXQgbGVhc3Qgb25lIGF0dGFjaCB0bwotICAgdGhlIGJ1 ZmZlciBtdXN0IGhhdmUgaGFwcGVuZWQgYmVmb3JlIG1hcF9kbWFfYnVmIGNhbiBiZSBjYWxsZWQu Ci0KLSAgIEludGVyZmFjZToKLSAgICAgIHN0cnVjdCBzZ190YWJsZSAqIGRtYV9idWZfbWFwX2F0 dGFjaG1lbnQoc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbik7Ci0KLSAgIFRo aXMgaXMgYSB3cmFwcGVyIHRvIGRtYV9idWYtPm9wcy0+bWFwX2RtYV9idWYgb3BlcmF0aW9uLCB3 aGljaCBoaWRlcyB0aGUKLSAgICJkbWFfYnVmLT5vcHMtPiIgaW5kaXJlY3Rpb24gZnJvbSB0aGUg dXNlcnMgb2YgdGhpcyBpbnRlcmZhY2UuCi0KLSAgIEluIHN0cnVjdCBkbWFfYnVmX29wcywgbWFw X2RtYV9idWYgaXMgZGVmaW5lZCBhcwotICAgICAgc3RydWN0IHNnX3RhYmxlICogKCptYXBfZG1h X2J1Zikoc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24pOwotCi0g ICBJdCBpcyBvbmUgb2YgdGhlIGJ1ZmZlciBvcGVyYXRpb25zIHRoYXQgbXVzdCBiZSBpbXBsZW1l bnRlZCBieSB0aGUgZXhwb3J0ZXIuCi0gICBJdCBzaG91bGQgcmV0dXJuIHRoZSBzZ190YWJsZSBj b250YWluaW5nIHNjYXR0ZXJsaXN0IGZvciB0aGlzIGJ1ZmZlciwgbWFwcGVkCi0gICBpbnRvIGNh bGxlcidzIGFkZHJlc3Mgc3BhY2UuCi0KLSAgIElmIHRoaXMgaXMgYmVpbmcgY2FsbGVkIGZvciB0 aGUgZmlyc3QgdGltZSwgdGhlIGV4cG9ydGVyIGNhbiBub3cgY2hvb3NlIHRvCi0gICBzY2FuIHRo cm91Z2ggdGhlIGxpc3Qgb2YgYXR0YWNobWVudHMgZm9yIHRoaXMgYnVmZmVyLCBjb2xsYXRlIHRo ZSByZXF1aXJlbWVudHMKLSAgIG9mIHRoZSBhdHRhY2hlZCBkZXZpY2VzLCBhbmQgY2hvb3NlIGFu IGFwcHJvcHJpYXRlIGJhY2tpbmcgc3RvcmFnZSBmb3IgdGhlCi0gICBidWZmZXIuCi0KLSAgIEJh c2VkIG9uIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uLCBpdCBtaWdodCBiZSBwb3NzaWJsZSB0byBo YXZlIG11bHRpcGxlIHVzZXJzCi0gICBhY2Nlc3NpbmcgYXQgdGhlIHNhbWUgdGltZSAoZm9yIHJl YWRpbmcsIG1heWJlKSwgb3IgYW55IG90aGVyIGtpbmQgb2Ygc2hhcmluZwotICAgdGhhdCB0aGUg ZXhwb3J0ZXIgbWlnaHQgd2lzaCB0byBtYWtlIGF2YWlsYWJsZSB0byBidWZmZXItdXNlcnMuCi0K LSAgIG1hcF9kbWFfYnVmKCkgb3BlcmF0aW9uIGNhbiByZXR1cm4gLUVJTlRSIGlmIGl0IGlzIGlu dGVycnVwdGVkIGJ5IGEgc2lnbmFsLgotCi0KLTUuIFdoZW4gZmluaXNoZWQsIHRoZSBidWZmZXIt dXNlciBub3RpZmllcyBlbmQtb2YtRE1BIHRvIGV4cG9ydGVyCi0KLSAgIE9uY2UgdGhlIERNQSBm b3IgdGhlIGN1cnJlbnQgYnVmZmVyLXVzZXIgaXMgb3ZlciwgaXQgc2lnbmFscyAnZW5kLW9mLURN QScgdG8KLSAgIHRoZSBleHBvcnRlciB1c2luZyB0aGUgZG1hX2J1Zl91bm1hcF9hdHRhY2htZW50 IEFQSS4KLQotICAgSW50ZXJmYWNlOgotICAgICAgdm9pZCBkbWFfYnVmX3VubWFwX2F0dGFjaG1l bnQoc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IHNnX3RhYmxlICopOwotCi0gICBUaGlzIGlzIGEgd3JhcHBlciB0 byBkbWFfYnVmLT5vcHMtPnVubWFwX2RtYV9idWYoKSBvcGVyYXRpb24sIHdoaWNoIGhpZGVzIHRo ZQotICAgImRtYV9idWYtPm9wcy0+IiBpbmRpcmVjdGlvbiBmcm9tIHRoZSB1c2VycyBvZiB0aGlz IGludGVyZmFjZS4KLQotICAgSW4gc3RydWN0IGRtYV9idWZfb3BzLCB1bm1hcF9kbWFfYnVmIGlz IGRlZmluZWQgYXMKLSAgICAgIHZvaWQgKCp1bm1hcF9kbWFfYnVmKShzdHJ1Y3QgZG1hX2J1Zl9h dHRhY2htZW50ICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNnX3RhYmxl ICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24p OwotCi0gICB1bm1hcF9kbWFfYnVmIHNpZ25pZmllcyB0aGUgZW5kLW9mLURNQSBmb3IgdGhlIGF0 dGFjaG1lbnQgcHJvdmlkZWQuIExpa2UKLSAgIG1hcF9kbWFfYnVmLCB0aGlzIEFQSSBhbHNvIG11 c3QgYmUgaW1wbGVtZW50ZWQgYnkgdGhlIGV4cG9ydGVyLgotCi0KLTYuIHdoZW4gYnVmZmVyLXVz ZXIgaXMgZG9uZSB1c2luZyB0aGlzIGJ1ZmZlciwgaXQgJ2Rpc2Nvbm5lY3RzJyBpdHNlbGYgZnJv bSB0aGUKLSAgIGJ1ZmZlci4KLQotICAgQWZ0ZXIgdGhlIGJ1ZmZlci11c2VyIGhhcyBubyBtb3Jl IGludGVyZXN0IGluIHVzaW5nIHRoaXMgYnVmZmVyLCBpdCBzaG91bGQKLSAgIGRpc2Nvbm5lY3Qg aXRzZWxmIGZyb20gdGhlIGJ1ZmZlcjoKLQotICAgLSBpdCBmaXJzdCBkZXRhY2hlcyBpdHNlbGYg ZnJvbSB0aGUgYnVmZmVyLgotCi0gICBJbnRlcmZhY2U6Ci0gICAgICB2b2lkIGRtYV9idWZfZGV0 YWNoKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmRtYWJ1Zl9hdHRhY2gpOwotCi0gICBUaGlzIEFQSSBy ZW1vdmVzIHRoZSBhdHRhY2htZW50IGZyb20gdGhlIGxpc3QgaW4gZG1hYnVmLCBhbmQgb3B0aW9u YWxseSBjYWxscwotICAgZG1hX2J1Zi0+b3BzLT5kZXRhY2goKSwgaWYgcHJvdmlkZWQgYnkgZXhw b3J0ZXIsIGZvciBhbnkgaG91c2VrZWVwaW5nIGJpdHMuCi0KLSAgIC0gVGhlbiwgdGhlIGJ1ZmZl ci11c2VyIHJldHVybnMgdGhlIGJ1ZmZlciByZWZlcmVuY2UgdG8gZXhwb3J0ZXIuCi0KLSAgIElu dGVyZmFjZToKLSAgICAgdm9pZCBkbWFfYnVmX3B1dChzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmKTsK LQotICAgVGhpcyBBUEkgdGhlbiByZWR1Y2VzIHRoZSByZWZjb3VudCBmb3IgdGhpcyBidWZmZXIu Ci0KLSAgIElmLCBhcyBhIHJlc3VsdCBvZiB0aGlzIGNhbGwsIHRoZSByZWZjb3VudCBiZWNvbWVz IDAsIHRoZSAncmVsZWFzZScgZmlsZQotICAgb3BlcmF0aW9uIHJlbGF0ZWQgdG8gdGhpcyBmZCBp cyBjYWxsZWQuIEl0IGNhbGxzIHRoZSBkbWFidWYtPm9wcy0+cmVsZWFzZSgpCi0gICBvcGVyYXRp b24gaW4gdHVybiwgYW5kIGZyZWVzIHRoZSBtZW1vcnkgYWxsb2NhdGVkIGZvciBkbWFidWYgd2hl biBleHBvcnRlZC4KLQotTk9URVM6Ci0tIEltcG9ydGFuY2Ugb2YgYXR0YWNoLWRldGFjaCBhbmQg e21hcCx1bm1hcH1fZG1hX2J1ZiBvcGVyYXRpb24gcGFpcnMKLSAgIFRoZSBhdHRhY2gtZGV0YWNo IGNhbGxzIGFsbG93IHRoZSBleHBvcnRlciB0byBmaWd1cmUgb3V0IGJhY2tpbmctc3RvcmFnZQot ICAgY29uc3RyYWludHMgZm9yIHRoZSBjdXJyZW50bHktaW50ZXJlc3RlZCBkZXZpY2VzLiBUaGlz IGFsbG93cyBwcmVmZXJlbnRpYWwKLSAgIGFsbG9jYXRpb24sIGFuZC9vciBtaWdyYXRpb24gb2Yg cGFnZXMgYWNyb3NzIGRpZmZlcmVudCB0eXBlcyBvZiBzdG9yYWdlCi0gICBhdmFpbGFibGUsIGlm IHBvc3NpYmxlLgotCi0gICBCcmFja2V0aW5nIG9mIERNQSBhY2Nlc3Mgd2l0aCB7bWFwLHVubWFw fV9kbWFfYnVmIG9wZXJhdGlvbnMgaXMgZXNzZW50aWFsCi0gICB0byBhbGxvdyBqdXN0LWluLXRp bWUgYmFja2luZyBvZiBzdG9yYWdlLCBhbmQgbWlncmF0aW9uIG1pZC13YXkgdGhyb3VnaCBhCi0g ICB1c2UtY2FzZS4KLQotLSBNaWdyYXRpb24gb2YgYmFja2luZyBzdG9yYWdlIGlmIG5lZWRlZAot ICAgSWYgYWZ0ZXIKLSAgIC0gYXQgbGVhc3Qgb25lIG1hcF9kbWFfYnVmIGhhcyBoYXBwZW5lZCwK LSAgIC0gYW5kIHRoZSBiYWNraW5nIHN0b3JhZ2UgaGFzIGJlZW4gYWxsb2NhdGVkIGZvciB0aGlz IGJ1ZmZlciwKLSAgIGFub3RoZXIgbmV3IGJ1ZmZlci11c2VyIGludGVuZHMgdG8gYXR0YWNoIGl0 c2VsZiB0byB0aGlzIGJ1ZmZlciwgaXQgbWlnaHQKLSAgIGJlIGFsbG93ZWQsIGlmIHBvc3NpYmxl IGZvciB0aGUgZXhwb3J0ZXIuCi0KLSAgIEluIGNhc2UgaXQgaXMgYWxsb3dlZCBieSB0aGUgZXhw b3J0ZXI6Ci0gICAgaWYgdGhlIG5ldyBidWZmZXItdXNlciBoYXMgc3RyaWN0ZXIgJ2JhY2tpbmct c3RvcmFnZSBjb25zdHJhaW50cycsIGFuZCB0aGUKLSAgICBleHBvcnRlciBjYW4gaGFuZGxlIHRo ZXNlIGNvbnN0cmFpbnRzLCB0aGUgZXhwb3J0ZXIgY2FuIGp1c3Qgc3RhbGwgb24gdGhlCi0gICAg bWFwX2RtYV9idWYgdW50aWwgYWxsIG91dHN0YW5kaW5nIGFjY2VzcyBpcyBjb21wbGV0ZWQgKGFz IHNpZ25hbGxlZCBieQotICAgIHVubWFwX2RtYV9idWYpLgotICAgIE9uY2UgYWxsIHVzZXJzIGhh dmUgZmluaXNoZWQgYWNjZXNzaW5nIGFuZCBoYXZlIHVubWFwcGVkIHRoaXMgYnVmZmVyLCB0aGUK LSAgICBleHBvcnRlciBjb3VsZCBwb3RlbnRpYWxseSBtb3ZlIHRoZSBidWZmZXIgdG8gdGhlIHN0 cmljdGVyIGJhY2tpbmctc3RvcmFnZSwKLSAgICBhbmQgdGhlbiBhbGxvdyBmdXJ0aGVyIHttYXAs dW5tYXB9X2RtYV9idWYgb3BlcmF0aW9ucyBmcm9tIGFueSBidWZmZXItdXNlcgotICAgIGZyb20g dGhlIG1pZ3JhdGVkIGJhY2tpbmctc3RvcmFnZS4KLQotICAgSWYgdGhlIGV4cG9ydGVyIGNhbm5v dCBmdWxmaWxsIHRoZSBiYWNraW5nLXN0b3JhZ2UgY29uc3RyYWludHMgb2YgdGhlIG5ldwotICAg YnVmZmVyLXVzZXIgZGV2aWNlIGFzIHJlcXVlc3RlZCwgZG1hX2J1Zl9hdHRhY2goKSB3b3VsZCBy ZXR1cm4gYW4gZXJyb3IgdG8KLSAgIGRlbm90ZSBub24tY29tcGF0aWJpbGl0eSBvZiB0aGUgbmV3 IGJ1ZmZlci1zaGFyaW5nIHJlcXVlc3Qgd2l0aCB0aGUgY3VycmVudAotICAgYnVmZmVyLgotCi0g ICBJZiB0aGUgZXhwb3J0ZXIgY2hvb3NlcyBub3QgdG8gYWxsb3cgYW4gYXR0YWNoKCkgb3BlcmF0 aW9uIG9uY2UgYQotICAgbWFwX2RtYV9idWYoKSBBUEkgaGFzIGJlZW4gY2FsbGVkLCBpdCBzaW1w bHkgcmV0dXJucyBhbiBlcnJvci4KLQotS2VybmVsIGNwdSBhY2Nlc3MgdG8gYSBkbWEtYnVmIGJ1 ZmZlciBvYmplY3QKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ci0KLVRoZSBtb3RpdmF0aW9uIHRvIGFsbG93IGNwdSBhY2Nlc3MgZnJvbSB0aGUga2VybmVsIHRv IGEgZG1hLWJ1ZiBvYmplY3QgZnJvbSB0aGUKLWltcG9ydGVycyBzaWRlIGFyZToKLS0gZmFsbGJh Y2sgb3BlcmF0aW9ucywgZS5nLiBpZiB0aGUgZGV2aWNlcyBpcyBjb25uZWN0ZWQgdG8gYSB1c2Ig YnVzIGFuZCB0aGUKLSAga2VybmVsIG5lZWRzIHRvIHNodWZmbGUgdGhlIGRhdGEgYXJvdW5kIGZp cnN0IGJlZm9yZSBzZW5kaW5nIGl0IGF3YXkuCi0tIGZ1bGwgdHJhbnNwYXJlbmN5IGZvciBleGlz dGluZyB1c2VycyBvbiB0aGUgaW1wb3J0ZXIgc2lkZSwgaS5lLiB1c2Vyc3BhY2UKLSAgc2hvdWxk IG5vdCBub3RpY2UgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBhIG5vcm1hbCBvYmplY3QgZnJvbSB0 aGF0IHN1YnN5c3RlbQotICBhbmQgYW4gaW1wb3J0ZWQgb25lIGJhY2tlZCBieSBhIGRtYS1idWYu IFRoaXMgaXMgcmVhbGx5IGltcG9ydGFudCBmb3IgZHJtCi0gIG9wZW5nbCBkcml2ZXJzIHRoYXQg ZXhwZWN0IHRvIHN0aWxsIHVzZSBhbGwgdGhlIGV4aXN0aW5nIHVwbG9hZC9kb3dubG9hZAotICBw YXRocy4KLQotQWNjZXNzIHRvIGEgZG1hX2J1ZiBmcm9tIHRoZSBrZXJuZWwgY29udGV4dCBpbnZv bHZlcyB0aHJlZSBzdGVwczoKLQotMS4gUHJlcGFyZSBhY2Nlc3MsIHdoaWNoIGludmFsaWRhdGUg YW55IG5lY2Vzc2FyeSBjYWNoZXMgYW5kIG1ha2UgdGhlIG9iamVjdAotICAgYXZhaWxhYmxlIGZv ciBjcHUgYWNjZXNzLgotMi4gQWNjZXNzIHRoZSBvYmplY3QgcGFnZS1ieS1wYWdlIHdpdGggdGhl IGRtYV9idWYgbWFwIGFwaXMKLTMuIEZpbmlzaCBhY2Nlc3MsIHdoaWNoIHdpbGwgZmx1c2ggYW55 IG5lY2Vzc2FyeSBjcHUgY2FjaGVzIGFuZCBmcmVlIHJlc2VydmVkCi0gICByZXNvdXJjZXMuCi0K LTEuIFByZXBhcmUgYWNjZXNzCi0KLSAgIEJlZm9yZSBhbiBpbXBvcnRlciBjYW4gYWNjZXNzIGEg ZG1hX2J1ZiBvYmplY3Qgd2l0aCB0aGUgY3B1IGZyb20gdGhlIGtlcm5lbAotICAgY29udGV4dCwg aXQgbmVlZHMgdG8gbm90aWZ5IHRoZSBleHBvcnRlciBvZiB0aGUgYWNjZXNzIHRoYXQgaXMgYWJv dXQgdG8KLSAgIGhhcHBlbi4KLQotICAgSW50ZXJmYWNlOgotICAgICAgaW50IGRtYV9idWZfYmVn aW5fY3B1X2FjY2VzcyhzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLAotCQkJCSAgIGVudW0gZG1hX2Rh dGFfZGlyZWN0aW9uIGRpcmVjdGlvbikKLQotICAgVGhpcyBhbGxvd3MgdGhlIGV4cG9ydGVyIHRv IGVuc3VyZSB0aGF0IHRoZSBtZW1vcnkgaXMgYWN0dWFsbHkgYXZhaWxhYmxlIGZvcgotICAgY3B1 IGFjY2VzcyAtIHRoZSBleHBvcnRlciBtaWdodCBuZWVkIHRvIGFsbG9jYXRlIG9yIHN3YXAtaW4g YW5kIHBpbiB0aGUKLSAgIGJhY2tpbmcgc3RvcmFnZS4gVGhlIGV4cG9ydGVyIGFsc28gbmVlZHMg dG8gZW5zdXJlIHRoYXQgY3B1IGFjY2VzcyBpcwotICAgY29oZXJlbnQgZm9yIHRoZSBhY2Nlc3Mg ZGlyZWN0aW9uLiBUaGUgZGlyZWN0aW9uIGNhbiBiZSB1c2VkIGJ5IHRoZSBleHBvcnRlcgotICAg dG8gb3B0aW1pemUgdGhlIGNhY2hlIGZsdXNoaW5nLCBpLmUuIGFjY2VzcyB3aXRoIGEgZGlmZmVy ZW50IGRpcmVjdGlvbiAocmVhZAotICAgaW5zdGVhZCBvZiB3cml0ZSkgbWlnaHQgcmV0dXJuIHN0 YWxlIG9yIGV2ZW4gYm9ndXMgZGF0YSAoZS5nLiB3aGVuIHRoZQotICAgZXhwb3J0ZXIgbmVlZHMg dG8gY29weSB0aGUgZGF0YSB0byB0ZW1wb3Jhcnkgc3RvcmFnZSkuCi0KLSAgIFRoaXMgc3RlcCBt aWdodCBmYWlsLCBlLmcuIGluIG9vbSBjb25kaXRpb25zLgotCi0yLiBBY2Nlc3NpbmcgdGhlIGJ1 ZmZlcgotCi0gICBUbyBzdXBwb3J0IGRtYV9idWYgb2JqZWN0cyByZXNpZGluZyBpbiBoaWdobWVt IGNwdSBhY2Nlc3MgaXMgcGFnZS1iYXNlZCB1c2luZwotICAgYW4gYXBpIHNpbWlsYXIgdG8ga21h cC4gQWNjZXNzaW5nIGEgZG1hX2J1ZiBpcyBkb25lIGluIGFsaWduZWQgY2h1bmtzIG9mCi0gICBQ QUdFX1NJWkUgc2l6ZS4gQmVmb3JlIGFjY2Vzc2luZyBhIGNodW5rIGl0IG5lZWRzIHRvIGJlIG1h cHBlZCwgd2hpY2ggcmV0dXJucwotICAgYSBwb2ludGVyIGluIGtlcm5lbCB2aXJ0dWFsIGFkZHJl c3Mgc3BhY2UuIEFmdGVyd2FyZHMgdGhlIGNodW5rIG5lZWRzIHRvIGJlCi0gICB1bm1hcHBlZCBh Z2Fpbi4gVGhlcmUgaXMgbm8gbGltaXQgb24gaG93IG9mdGVuIGEgZ2l2ZW4gY2h1bmsgY2FuIGJl IG1hcHBlZAotICAgYW5kIHVubWFwcGVkLCBpLmUuIHRoZSBpbXBvcnRlciBkb2VzIG5vdCBuZWVk IHRvIGNhbGwgYmVnaW5fY3B1X2FjY2VzcyBhZ2FpbgotICAgYmVmb3JlIG1hcHBpbmcgdGhlIHNh bWUgY2h1bmsgYWdhaW4uCi0KLSAgIEludGVyZmFjZXM6Ci0gICAgICB2b2lkICpkbWFfYnVmX2tt YXAoc3RydWN0IGRtYV9idWYgKiwgdW5zaWduZWQgbG9uZyk7Ci0gICAgICB2b2lkIGRtYV9idWZf a3VubWFwKHN0cnVjdCBkbWFfYnVmICosIHVuc2lnbmVkIGxvbmcsIHZvaWQgKik7Ci0KLSAgIFRo ZXJlIGFyZSBhbHNvIGF0b21pYyB2YXJpYW50cyBvZiB0aGVzZSBpbnRlcmZhY2VzLiBMaWtlIGZv ciBrbWFwIHRoZXkKLSAgIGZhY2lsaXRhdGUgbm9uLWJsb2NraW5nIGZhc3QtcGF0aHMuIE5laXRo ZXIgdGhlIGltcG9ydGVyIG5vciB0aGUgZXhwb3J0ZXIgKGluCi0gICB0aGUgY2FsbGJhY2spIGlz IGFsbG93ZWQgdG8gYmxvY2sgd2hlbiB1c2luZyB0aGVzZS4KLQotICAgSW50ZXJmYWNlczoKLSAg ICAgIHZvaWQgKmRtYV9idWZfa21hcF9hdG9taWMoc3RydWN0IGRtYV9idWYgKiwgdW5zaWduZWQg bG9uZyk7Ci0gICAgICB2b2lkIGRtYV9idWZfa3VubWFwX2F0b21pYyhzdHJ1Y3QgZG1hX2J1ZiAq LCB1bnNpZ25lZCBsb25nLCB2b2lkICopOwotCi0gICBGb3IgaW1wb3J0ZXJzIGFsbCB0aGUgcmVz dHJpY3Rpb25zIG9mIHVzaW5nIGttYXAgYXBwbHksIGxpa2UgdGhlIGxpbWl0ZWQKLSAgIHN1cHBs eSBvZiBrbWFwX2F0b21pYyBzbG90cy4gSGVuY2UgYW4gaW1wb3J0ZXIgc2hhbGwgb25seSBob2xk IG9udG8gYXQgbW9zdCAyCi0gICBhdG9taWMgZG1hX2J1ZiBrbWFwcyBhdCB0aGUgc2FtZSB0aW1l IChpbiBhbnkgZ2l2ZW4gcHJvY2VzcyBjb250ZXh0KS4KLQotICAgZG1hX2J1ZiBrbWFwIGNhbGxz IG91dHNpZGUgb2YgdGhlIHJhbmdlIHNwZWNpZmllZCBpbiBiZWdpbl9jcHVfYWNjZXNzIGFyZQot ICAgdW5kZWZpbmVkLiBJZiB0aGUgcmFuZ2UgaXMgbm90IFBBR0VfU0laRSBhbGlnbmVkLCBrbWFw IG5lZWRzIHRvIHN1Y2NlZWQgb24KLSAgIHRoZSBwYXJ0aWFsIGNodW5rcyBhdCB0aGUgYmVnaW5u aW5nIGFuZCBlbmQgYnV0IG1heSByZXR1cm4gc3RhbGUgb3IgYm9ndXMKLSAgIGRhdGEgb3V0c2lk ZSBvZiB0aGUgcmFuZ2UgKGluIHRoZXNlIHBhcnRpYWwgY2h1bmtzKS4KLQotICAgTm90ZSB0aGF0 IHRoZXNlIGNhbGxzIG5lZWQgdG8gYWx3YXlzIHN1Y2NlZWQuIFRoZSBleHBvcnRlciBuZWVkcyB0 byBjb21wbGV0ZQotICAgYW55IHByZXBhcmF0aW9ucyB0aGF0IG1pZ2h0IGZhaWwgaW4gYmVnaW5f Y3B1X2FjY2Vzcy4KLQotICAgRm9yIHNvbWUgY2FzZXMgdGhlIG92ZXJoZWFkIG9mIGttYXAgY2Fu IGJlIHRvbyBoaWdoLCBhIHZtYXAgaW50ZXJmYWNlCi0gICBpcyBpbnRyb2R1Y2VkLiBUaGlzIGlu dGVyZmFjZSBzaG91bGQgYmUgdXNlZCB2ZXJ5IGNhcmVmdWxseSwgYXMgdm1hbGxvYwotICAgc3Bh Y2UgaXMgYSBsaW1pdGVkIHJlc291cmNlcyBvbiBtYW55IGFyY2hpdGVjdHVyZXMuCi0KLSAgIElu dGVyZmFjZXM6Ci0gICAgICB2b2lkICpkbWFfYnVmX3ZtYXAoc3RydWN0IGRtYV9idWYgKmRtYWJ1 ZikKLSAgICAgIHZvaWQgZG1hX2J1Zl92dW5tYXAoc3RydWN0IGRtYV9idWYgKmRtYWJ1Ziwgdm9p ZCAqdmFkZHIpCi0KLSAgIFRoZSB2bWFwIGNhbGwgY2FuIGZhaWwgaWYgdGhlcmUgaXMgbm8gdm1h cCBzdXBwb3J0IGluIHRoZSBleHBvcnRlciwgb3IgaWYgaXQKLSAgIHJ1bnMgb3V0IG9mIHZtYWxs b2Mgc3BhY2UuIEZhbGxiYWNrIHRvIGttYXAgc2hvdWxkIGJlIGltcGxlbWVudGVkLiBOb3RlIHRo YXQKLSAgIHRoZSBkbWEtYnVmIGxheWVyIGtlZXBzIGEgcmVmZXJlbmNlIGNvdW50IGZvciBhbGwg dm1hcCBhY2Nlc3MgYW5kIGNhbGxzIGRvd24KLSAgIGludG8gdGhlIGV4cG9ydGVyJ3Mgdm1hcCBm dW5jdGlvbiBvbmx5IHdoZW4gbm8gdm1hcHBpbmcgZXhpc3RzLCBhbmQgb25seQotICAgdW5tYXBz IGl0IG9uY2UuIFByb3RlY3Rpb24gYWdhaW5zdCBjb25jdXJyZW50IHZtYXAvdnVubWFwIGNhbGxz IGlzIHByb3ZpZGVkCi0gICBieSB0YWtpbmcgdGhlIGRtYV9idWYtPmxvY2sgbXV0ZXguCi0KLTMu IEZpbmlzaCBhY2Nlc3MKLQotICAgV2hlbiB0aGUgaW1wb3J0ZXIgaXMgZG9uZSBhY2Nlc3Npbmcg dGhlIENQVSwgaXQgbmVlZHMgdG8gYW5ub3VuY2UgdGhpcyB0bwotICAgdGhlIGV4cG9ydGVyICh0 byBmYWNpbGl0YXRlIGNhY2hlIGZsdXNoaW5nIGFuZCB1bnBpbm5pbmcgb2YgYW55IHBpbm5lZAot ICAgcmVzb3VyY2VzKS4gVGhlIHJlc3VsdCBvZiBhbnkgZG1hX2J1ZiBrbWFwIGNhbGxzIGFmdGVy IGVuZF9jcHVfYWNjZXNzIGlzCi0gICB1bmRlZmluZWQuCi0KLSAgIEludGVyZmFjZToKLSAgICAg IHZvaWQgZG1hX2J1Zl9lbmRfY3B1X2FjY2VzcyhzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1ZiwKLQkJ CQkgIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcik7Ci0KLQotRGlyZWN0IFVzZXJzcGFjZSBB Y2Nlc3MvbW1hcCBTdXBwb3J0Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K LQotQmVpbmcgYWJsZSB0byBtbWFwIGFuIGV4cG9ydCBkbWEtYnVmIGJ1ZmZlciBvYmplY3QgaGFz IDIgbWFpbiB1c2UtY2FzZXM6Ci0tIENQVSBmYWxsYmFjayBwcm9jZXNzaW5nIGluIGEgcGlwZWxp bmUgYW5kCi0tIHN1cHBvcnRpbmcgZXhpc3RpbmcgbW1hcCBpbnRlcmZhY2VzIGluIGltcG9ydGVy cy4KLQotMS4gQ1BVIGZhbGxiYWNrIHByb2Nlc3NpbmcgaW4gYSBwaXBlbGluZQotCi0gICBJbiBt YW55IHByb2Nlc3NpbmcgcGlwZWxpbmVzIGl0IGlzIHNvbWV0aW1lcyByZXF1aXJlZCB0aGF0IHRo ZSBjcHUgY2FuIGFjY2VzcwotICAgdGhlIGRhdGEgaW4gYSBkbWEtYnVmIChlLmcuIGZvciB0aHVt Ym5haWwgY3JlYXRpb24sIHNuYXBzaG90cywgLi4uKS4gVG8gYXZvaWQKLSAgIHRoZSBuZWVkIHRv IGhhbmRsZSB0aGlzIHNwZWNpYWxseSBpbiB1c2Vyc3BhY2UgZnJhbWV3b3JrcyBmb3IgYnVmZmVy IHNoYXJpbmcKLSAgIGl0J3MgaWRlYWwgaWYgdGhlIGRtYV9idWYgZmQgaXRzZWxmIGNhbiBiZSB1 c2VkIHRvIGFjY2VzcyB0aGUgYmFja2luZyBzdG9yYWdlCi0gICBmcm9tIHVzZXJzcGFjZSB1c2lu ZyBtbWFwLgotCi0gICBGdXJ0aGVybW9yZSBBbmRyb2lkJ3MgSU9OIGZyYW1ld29yayBhbHJlYWR5 IHN1cHBvcnRzIHRoaXMgKGFuZCBpcyBvdGhlcndpc2UKLSAgIHJhdGhlciBzaW1pbGFyIHRvIGRt YS1idWYgZnJvbSBhIHVzZXJzcGFjZSBjb25zdW1lciBzaWRlIHdpdGggdXNpbmcgZmRzIGFzCi0g ICBoYW5kbGVzLCB0b28pLiBTbyBpdCdzIGJlbmVmaWNpYWwgdG8gc3VwcG9ydCB0aGlzIGluIGEg c2ltaWxhciBmYXNoaW9uIG9uCi0gICBkbWEtYnVmIHRvIGhhdmUgYSBnb29kIHRyYW5zaXRpb24g cGF0aCBmb3IgZXhpc3RpbmcgQW5kcm9pZCB1c2Vyc3BhY2UuCi0KLSAgIE5vIHNwZWNpYWwgaW50 ZXJmYWNlcywgdXNlcnNwYWNlIHNpbXBseSBjYWxscyBtbWFwIG9uIHRoZSBkbWEtYnVmIGZkLCBt YWtpbmcKLSAgIHN1cmUgdGhhdCB0aGUgY2FjaGUgc3luY2hyb25pemF0aW9uIGlvY3RsIChETUFf QlVGX0lPQ1RMX1NZTkMpIGlzICphbHdheXMqCi0gICB1c2VkIHdoZW4gdGhlIGFjY2VzcyBoYXBw ZW5zLiBOb3RlIHRoYXQgRE1BX0JVRl9JT0NUTF9TWU5DIGNhbiBmYWlsIHdpdGgKLSAgIC1FQUdB SU4gb3IgLUVJTlRSLCBpbiB3aGljaCBjYXNlIGl0IG11c3QgYmUgcmVzdGFydGVkLgotCi0gICBT b21lIHN5c3RlbXMgbWlnaHQgbmVlZCBzb21lIHNvcnQgb2YgY2FjaGUgY29oZXJlbmN5IG1hbmFn ZW1lbnQgZS5nLiB3aGVuCi0gICBDUFUgYW5kIEdQVSBkb21haW5zIGFyZSBiZWluZyBhY2Nlc3Nl ZCB0aHJvdWdoIGRtYS1idWYgYXQgdGhlIHNhbWUgdGltZS4gVG8KLSAgIGNpcmN1bXZlbnQgdGhp cyBwcm9ibGVtIHRoZXJlIGFyZSBiZWdpbi9lbmQgY29oZXJlbmN5IG1hcmtlcnMsIHRoYXQgZm9y d2FyZAotICAgZGlyZWN0bHkgdG8gZXhpc3RpbmcgZG1hLWJ1ZiBkZXZpY2UgZHJpdmVycyB2ZnVu YyBob29rcy4gVXNlcnNwYWNlIGNhbiBtYWtlCi0gICB1c2Ugb2YgdGhvc2UgbWFya2VycyB0aHJv dWdoIHRoZSBETUFfQlVGX0lPQ1RMX1NZTkMgaW9jdGwuIFRoZSBzZXF1ZW5jZQotICAgd291bGQg YmUgdXNlZCBsaWtlIGZvbGxvd2luZzoKLSAgICAgLSBtbWFwIGRtYS1idWYgZmQKLSAgICAgLSBm b3IgZWFjaCBkcmF3aW5nL3VwbG9hZCBjeWNsZSBpbiBDUFUgMS4gU1lOQ19TVEFSVCBpb2N0bCwg Mi4gcmVhZC93cml0ZQotICAgICAgIHRvIG1tYXAgYXJlYSAzLiBTWU5DX0VORCBpb2N0bC4gVGhp cyBjYW4gYmUgcmVwZWF0ZWQgYXMgb2Z0ZW4gYXMgeW91Ci0gICAgICAgd2FudCAod2l0aCB0aGUg bmV3IGRhdGEgYmVpbmcgY29uc3VtZWQgYnkgdGhlIEdQVSBvciBzYXkgc2Nhbm91dCBkZXZpY2Up Ci0gICAgIC0gbXVubWFwIG9uY2UgeW91IGRvbid0IG5lZWQgdGhlIGJ1ZmZlciBhbnkgbW9yZQot Ci0gICAgRm9yIGNvcnJlY3RuZXNzIGFuZCBvcHRpbWFsIHBlcmZvcm1hbmNlLCBpdCBpcyBhbHdh eXMgcmVxdWlyZWQgdG8gdXNlCi0gICAgU1lOQ19TVEFSVCBhbmQgU1lOQ19FTkQgYmVmb3JlIGFu ZCBhZnRlciwgcmVzcGVjdGl2ZWx5LCB3aGVuIGFjY2Vzc2luZyB0aGUKLSAgICBtYXBwZWQgYWRk cmVzcy4gVXNlcnNwYWNlIGNhbm5vdCByZWx5IG9uIGNvaGVyZW50IGFjY2VzcywgZXZlbiB3aGVu IHRoZXJlCi0gICAgYXJlIHN5c3RlbXMgd2hlcmUgaXQganVzdCB3b3JrcyB3aXRob3V0IGNhbGxp bmcgdGhlc2UgaW9jdGxzLgotCi0yLiBTdXBwb3J0aW5nIGV4aXN0aW5nIG1tYXAgaW50ZXJmYWNl cyBpbiBpbXBvcnRlcnMKLQotICAgU2ltaWxhciB0byB0aGUgbW90aXZhdGlvbiBmb3Iga2VybmVs IGNwdSBhY2Nlc3MgaXQgaXMgYWdhaW4gaW1wb3J0YW50IHRoYXQKLSAgIHRoZSB1c2Vyc3BhY2Ug Y29kZSBvZiBhIGdpdmVuIGltcG9ydGluZyBzdWJzeXN0ZW0gY2FuIHVzZSB0aGUgc2FtZSBpbnRl cmZhY2VzCi0gICB3aXRoIGEgaW1wb3J0ZWQgZG1hLWJ1ZiBidWZmZXIgb2JqZWN0IGFzIHdpdGgg YSBuYXRpdmUgYnVmZmVyIG9iamVjdC4gVGhpcyBpcwotICAgZXNwZWNpYWxseSBpbXBvcnRhbnQg Zm9yIGRybSB3aGVyZSB0aGUgdXNlcnNwYWNlIHBhcnQgb2YgY29udGVtcG9yYXJ5IE9wZW5HTCwK LSAgIFgsIGFuZCBvdGhlciBkcml2ZXJzIGlzIGh1Z2UsIGFuZCByZXdvcmtpbmcgdGhlbSB0byB1 c2UgYSBkaWZmZXJlbnQgd2F5IHRvCi0gICBtbWFwIGEgYnVmZmVyIHJhdGhlciBpbnZhc2l2ZS4K LQotICAgVGhlIGFzc3VtcHRpb24gaW4gdGhlIGN1cnJlbnQgZG1hLWJ1ZiBpbnRlcmZhY2VzIGlz IHRoYXQgcmVkaXJlY3RpbmcgdGhlCi0gICBpbml0aWFsIG1tYXAgaXMgYWxsIHRoYXQncyBuZWVk ZWQuIEEgc3VydmV5IG9mIHNvbWUgb2YgdGhlIGV4aXN0aW5nCi0gICBzdWJzeXN0ZW1zIHNob3dz IHRoYXQgbm8gZHJpdmVyIHNlZW1zIHRvIGRvIGFueSBuZWZhcmlvdXMgdGhpbmcgbGlrZSBzeW5j aW5nCi0gICB1cCB3aXRoIG91dHN0YW5kaW5nIGFzeW5jaHJvbm91cyBwcm9jZXNzaW5nIG9uIHRo ZSBkZXZpY2Ugb3IgYWxsb2NhdGluZwotICAgc3BlY2lhbCByZXNvdXJjZXMgYXQgZmF1bHQgdGlt ZS4gU28gaG9wZWZ1bGx5IHRoaXMgaXMgZ29vZCBlbm91Z2gsIHNpbmNlCi0gICBhZGRpbmcgaW50 ZXJmYWNlcyB0byBpbnRlcmNlcHQgcGFnZWZhdWx0cyBhbmQgYWxsb3cgcHRlIHNob290ZG93bnMg d291bGQKLSAgIGluY3JlYXNlIHRoZSBjb21wbGV4aXR5IHF1aXRlIGEgYml0LgotCi0gICBJbnRl cmZhY2U6Ci0gICAgICBpbnQgZG1hX2J1Zl9tbWFwKHN0cnVjdCBkbWFfYnVmICosIHN0cnVjdCB2 bV9hcmVhX3N0cnVjdCAqLAotCQkgICAgICAgdW5zaWduZWQgbG9uZyk7Ci0KLSAgIElmIHRoZSBp bXBvcnRpbmcgc3Vic3lzdGVtIHNpbXBseSBwcm92aWRlcyBhIHNwZWNpYWwtcHVycG9zZSBtbWFw IGNhbGwgdG8gc2V0Ci0gICB1cCBhIG1hcHBpbmcgaW4gdXNlcnNwYWNlLCBjYWxsaW5nIGRvX21t YXAgd2l0aCBkbWFfYnVmLT5maWxlIHdpbGwgZXF1YWxseQotICAgYWNoaWV2ZSB0aGF0IGZvciBh IGRtYS1idWYgb2JqZWN0LgotCi0zLiBJbXBsZW1lbnRhdGlvbiBub3RlcyBmb3IgZXhwb3J0ZXJz Ci0KLSAgIEJlY2F1c2UgZG1hLWJ1ZiBidWZmZXJzIGhhdmUgaW52YXJpYW50IHNpemUgb3ZlciB0 aGVpciBsaWZldGltZSwgdGhlIGRtYS1idWYKLSAgIGNvcmUgY2hlY2tzIHdoZXRoZXIgYSB2bWEg aXMgdG9vIGxhcmdlIGFuZCByZWplY3RzIHN1Y2ggbWFwcGluZ3MuIFRoZQotICAgZXhwb3J0ZXIg aGVuY2UgZG9lcyBub3QgbmVlZCB0byBkdXBsaWNhdGUgdGhpcyBjaGVjay4KLQotICAgQmVjYXVz ZSBleGlzdGluZyBpbXBvcnRpbmcgc3Vic3lzdGVtcyBtaWdodCBwcmVzdW1lIGNvaGVyZW50IG1h cHBpbmdzIGZvcgotICAgdXNlcnNwYWNlLCB0aGUgZXhwb3J0ZXIgbmVlZHMgdG8gc2V0IHVwIGEg Y29oZXJlbnQgbWFwcGluZy4gSWYgdGhhdCdzIG5vdAotICAgcG9zc2libGUsIGl0IG5lZWRzIHRv IGZha2UgY29oZXJlbmN5IGJ5IG1hbnVhbGx5IHNob290aW5nIGRvd24gcHRlcyB3aGVuCi0gICBs ZWF2aW5nIHRoZSBjcHUgZG9tYWluIGFuZCBmbHVzaGluZyBjYWNoZXMgYXQgZmF1bHQgdGltZS4g Tm90ZSB0aGF0IGFsbCB0aGUKLSAgIGRtYV9idWYgZmlsZXMgc2hhcmUgdGhlIHNhbWUgYW5vbiBp bm9kZSwgaGVuY2UgdGhlIGV4cG9ydGVyIG5lZWRzIHRvIHJlcGxhY2UKLSAgIHRoZSBkbWFfYnVm IGZpbGUgc3RvcmVkIGluIHZtYS0+dm1fZmlsZSB3aXRoIGl0J3Mgb3duIGlmIHB0ZSBzaG9vdGRv d24gaXMKLSAgIHJlcXVpcmVkLiBUaGlzIGlzIGJlY2F1c2UgdGhlIGtlcm5lbCB1c2VzIHRoZSB1 bmRlcmx5aW5nIGlub2RlJ3MgYWRkcmVzc19zcGFjZQotICAgZm9yIHZtYSB0cmFja2luZyAoYW5k IGhlbmNlIHB0ZSB0cmFja2luZyBhdCBzaG9vdGRvd24gdGltZSB3aXRoCi0gICB1bm1hcF9tYXBw aW5nX3JhbmdlKS4KLQotICAgSWYgdGhlIGFib3ZlIHNob290ZG93biBkYW5jZSB0dXJucyBvdXQg dG8gYmUgdG9vIGV4cGVuc2l2ZSBpbiBjZXJ0YWluCi0gICBzY2VuYXJpb3MsIHdlIGNhbiBleHRl bmQgZG1hLWJ1ZiB3aXRoIGEgbW9yZSBleHBsaWNpdCBjYWNoZSB0cmFja2luZyBzY2hlbWUKLSAg IGZvciB1c2Vyc3BhY2UgbWFwcGluZ3MuIEJ1dCB0aGUgY3VycmVudCBhc3N1bXB0aW9uIGlzIHRo YXQgdXNpbmcgbW1hcCBpcwotICAgYWx3YXlzIGEgc2xvd2VyIHBhdGgsIHNvIHNvbWUgaW5lZmZp Y2llbmNpZXMgc2hvdWxkIGJlIGFjY2VwdGFibGUuCi0KLSAgIEV4cG9ydGVycyB0aGF0IHNob290 IGRvd24gbWFwcGluZ3MgKGZvciBhbnkgcmVhc29ucykgc2hhbGwgbm90IGRvIGFueQotICAgc3lu Y2hyb25pemF0aW9uIGF0IGZhdWx0IHRpbWUgd2l0aCBvdXRzdGFuZGluZyBkZXZpY2Ugb3BlcmF0 aW9ucy4KLSAgIFN5bmNocm9uaXphdGlvbiBpcyBhbiBvcnRob2dvbmFsIGlzc3VlIHRvIHNoYXJp bmcgdGhlIGJhY2tpbmcgc3RvcmFnZSBvZiBhCi0gICBidWZmZXIgYW5kIGhlbmNlIHNob3VsZCBu b3QgYmUgaGFuZGxlZCBieSBkbWEtYnVmIGl0c2VsZi4gVGhpcyBpcyBleHBsaWNpdGx5Ci0gICBt ZW50aW9uZWQgaGVyZSBiZWNhdXNlIG1hbnkgcGVvcGxlIHNlZW0gdG8gd2FudCBzb21ldGhpbmcg bGlrZSB0aGlzLCBidXQgaWYKLSAgIGRpZmZlcmVudCBleHBvcnRlcnMgaGFuZGxlIHRoaXMgZGlm ZmVyZW50bHksIGJ1ZmZlciBzaGFyaW5nIGNhbiBmYWlsIGluCi0gICBpbnRlcmVzdGluZyB3YXlz IGRlcGVuZGluZyB1cG9uZyB0aGUgZXhwb3J0ZXIgKGlmIHVzZXJzcGFjZSBzdGFydHMgZGVwZW5k aW5nCi0gICB1cG9uIHRoaXMgaW1wbGljaXQgc3luY2hyb25pemF0aW9uKS4KLQotT3RoZXIgSW50 ZXJmYWNlcyBFeHBvc2VkIHRvIFVzZXJzcGFjZSBvbiB0aGUgZG1hLWJ1ZiBGRAotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gU2luY2Ug a2VybmVsIDMuMTIgdGhlIGRtYS1idWYgRkQgc3VwcG9ydHMgdGhlIGxsc2VlayBzeXN0ZW0gY2Fs bCwgYnV0IG9ubHkKLSAgd2l0aCBvZmZzZXQ9MCBhbmQgd2hlbmNlPVNFRUtfRU5EfFNFRUtfU0VU LiBTRUVLX1NFVCBpcyBzdXBwb3J0ZWQgdG8gYWxsb3cKLSAgdGhlIHVzdWFsIHNpemUgZGlzY292 ZXIgcGF0dGVybiBzaXplID0gU0VFS19FTkQoMCk7IFNFRUtfU0VUKDApLiBFdmVyeSBvdGhlcgot ICBsbHNlZWsgb3BlcmF0aW9uIHdpbGwgcmVwb3J0IC1FSU5WQUwuCi0KLSAgSWYgbGxzZWVrIG9u IGRtYS1idWYgRkRzIGlzbid0IHN1cHBvcnQgdGhlIGtlcm5lbCB3aWxsIHJlcG9ydCAtRVNQSVBF IGZvciBhbGwKLSAgY2FzZXMuIFVzZXJzcGFjZSBjYW4gdXNlIHRoaXMgdG8gZGV0ZWN0IHN1cHBv cnQgZm9yIGRpc2NvdmVyaW5nIHRoZSBkbWEtYnVmCi0gIHNpemUgdXNpbmcgbGxzZWVrLgotCi1N aXNjZWxsYW5lb3VzIG5vdGVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gQW55IGV4cG9ydGVy cyBvciB1c2VycyBvZiB0aGUgZG1hLWJ1ZiBidWZmZXIgc2hhcmluZyBmcmFtZXdvcmsgbXVzdCBo YXZlCi0gIGEgJ3NlbGVjdCBETUFfU0hBUkVEX0JVRkZFUicgaW4gdGhlaXIgcmVzcGVjdGl2ZSBL Y29uZmlncy4KLQotLSBJbiBvcmRlciB0byBhdm9pZCBmZCBsZWFrcyBvbiBleGVjLCB0aGUgRkRf Q0xPRVhFQyBmbGFnIG11c3QgYmUgc2V0Ci0gIG9uIHRoZSBmaWxlIGRlc2NyaXB0b3IuICBUaGlz IGlzIG5vdCBqdXN0IGEgcmVzb3VyY2UgbGVhaywgYnV0IGEKLSAgcG90ZW50aWFsIHNlY3VyaXR5 IGhvbGUuICBJdCBjb3VsZCBnaXZlIHRoZSBuZXdseSBleGVjJ2QgYXBwbGljYXRpb24KLSAgYWNj ZXNzIHRvIGJ1ZmZlcnMsIHZpYSB0aGUgbGVha2VkIGZkLCB0byB3aGljaCBpdCBzaG91bGQgb3Ro ZXJ3aXNlCi0gIG5vdCBiZSBwZXJtaXR0ZWQgYWNjZXNzLgotCi0gIFRoZSBwcm9ibGVtIHdpdGgg ZG9pbmcgdGhpcyB2aWEgYSBzZXBhcmF0ZSBmY250bCgpIGNhbGwsIHZlcnN1cyBkb2luZyBpdAot ICBhdG9taWNhbGx5IHdoZW4gdGhlIGZkIGlzIGNyZWF0ZWQsIGlzIHRoYXQgdGhpcyBpcyBpbmhl cmVudGx5IHJhY3kgaW4gYQotICBtdWx0aS10aHJlYWRlZCBhcHBbM10uICBUaGUgaXNzdWUgaXMg bWFkZSB3b3JzZSB3aGVuIGl0IGlzIGxpYnJhcnkgY29kZQotICBvcGVuaW5nL2NyZWF0aW5nIHRo ZSBmaWxlIGRlc2NyaXB0b3IsIGFzIHRoZSBhcHBsaWNhdGlvbiBtYXkgbm90IGV2ZW4gYmUKLSAg YXdhcmUgb2YgdGhlIGZkJ3MuCi0KLSAgVG8gYXZvaWQgdGhpcyBwcm9ibGVtLCB1c2Vyc3BhY2Ug bXVzdCBoYXZlIGEgd2F5IHRvIHJlcXVlc3QgT19DTE9FWEVDCi0gIGZsYWcgYmUgc2V0IHdoZW4g dGhlIGRtYS1idWYgZmQgaXMgY3JlYXRlZC4gIFNvIGFueSBBUEkgcHJvdmlkZWQgYnkKLSAgdGhl IGV4cG9ydGluZyBkcml2ZXIgdG8gY3JlYXRlIGEgZG1hYnVmIGZkIG11c3QgcHJvdmlkZSBhIHdh eSB0byBsZXQKLSAgdXNlcnNwYWNlIGNvbnRyb2wgc2V0dGluZyBvZiBPX0NMT0VYRUMgZmxhZyBw YXNzZWQgaW4gdG8gZG1hX2J1Zl9mZCgpLgotCi0tIElmIGFuIGV4cG9ydGVyIG5lZWRzIHRvIG1h bnVhbGx5IGZsdXNoIGNhY2hlcyBhbmQgaGVuY2UgbmVlZHMgdG8gZmFrZQotICBjb2hlcmVuY3kg Zm9yIG1tYXAgc3VwcG9ydCwgaXQgbmVlZHMgdG8gYmUgYWJsZSB0byB6YXAgYWxsIHRoZSBwdGVz IHBvaW50aW5nCi0gIGF0IHRoZSBiYWNraW5nIHN0b3JhZ2UuIE5vdyBsaW51eCBtbSBuZWVkcyBh IHN0cnVjdCBhZGRyZXNzX3NwYWNlIGFzc29jaWF0ZWQKLSAgd2l0aCB0aGUgc3RydWN0IGZpbGUg c3RvcmVkIGluIHZtYS0+dm1fZmlsZSB0byBkbyB0aGF0IHdpdGggdGhlIGZ1bmN0aW9uCi0gIHVu bWFwX21hcHBpbmdfcmFuZ2UuIEJ1dCB0aGUgZG1hX2J1ZiBmcmFtZXdvcmsgb25seSBiYWNrcyBl dmVyeSBkbWFfYnVmIGZkCi0gIHdpdGggdGhlIGFub25fZmlsZSBzdHJ1Y3QgZmlsZSwgaS5lLiBh bGwgZG1hX2J1ZnMgc2hhcmUgdGhlIHNhbWUgZmlsZS4KLQotICBIZW5jZSBleHBvcnRlcnMgbmVl ZCB0byBzZXR1cCB0aGVpciBvd24gZmlsZSAoYW5kIGFkZHJlc3Nfc3BhY2UpIGFzc29jaWF0aW9u Ci0gIGJ5IHNldHRpbmcgdm1hLT52bV9maWxlIGFuZCBhZGp1c3Rpbmcgdm1hLT52bV9wZ29mZiBp biB0aGUgZG1hX2J1ZiBtbWFwCi0gIGNhbGxiYWNrLiBJbiB0aGUgc3BlY2lmaWMgY2FzZSBvZiBh IGdlbSBkcml2ZXIgdGhlIGV4cG9ydGVyIGNvdWxkIHVzZSB0aGUKLSAgc2htZW0gZmlsZSBhbHJl YWR5IHByb3ZpZGVkIGJ5IGdlbSAoYW5kIHNldCB2bV9wZ29mZiA9IDApLiBFeHBvcnRlcnMgY2Fu IHRoZW4KLSAgemFwIHB0ZXMgYnkgdW5tYXBwaW5nIHRoZSBjb3JyZXNwb25kaW5nIHJhbmdlIG9m IHRoZSBzdHJ1Y3QgYWRkcmVzc19zcGFjZQotICBhc3NvY2lhdGVkIHdpdGggdGhlaXIgb3duIGZp bGUuCi0KLVJlZmVyZW5jZXM6Ci1bMV0gc3RydWN0IGRtYV9idWZfb3BzIGluIGluY2x1ZGUvbGlu dXgvZG1hLWJ1Zi5oCi1bMl0gQWxsIGludGVyZmFjZXMgbWVudGlvbmVkIGFib3ZlIGRlZmluZWQg aW4gaW5jbHVkZS9saW51eC9kbWEtYnVmLmgKLVszXSBodHRwczovL2x3bi5uZXQvQXJ0aWNsZXMv MjM2NDg2LwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kbWEtYnVmL2d1aWRlLnJzdCBiL0Rv Y3VtZW50YXRpb24vZG1hLWJ1Zi9ndWlkZS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwLi43NDA3ZDI1NWU5ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0 aW9uL2RtYS1idWYvZ3VpZGUucnN0CkBAIC0wLDAgKzEsNTA3IEBACisKKy4uIF9kbWEtYnVmLWd1 aWRlOgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09CitETUEgQnVmZmVyIFNoYXJpbmcg QVBJIEd1aWRlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoaXMgZG9jdW1lbnQg c2VydmVzIGFzIGEgZ3VpZGUgdG8gZGV2aWNlLWRyaXZlciB3cml0ZXJzIG9uIHdoYXQgaXMgdGhl IGRtYS1idWYKK2J1ZmZlciBzaGFyaW5nIEFQSSwgaG93IHRvIHVzZSBpdCBmb3IgZXhwb3J0aW5n IGFuZCB1c2luZyBzaGFyZWQgYnVmZmVycy4KKworQW55IGRldmljZSBkcml2ZXIgd2hpY2ggd2lz aGVzIHRvIGJlIGEgcGFydCBvZiBETUEgYnVmZmVyIHNoYXJpbmcsIGNhbiBkbyBzbyBhcworZWl0 aGVyIHRoZSAnZXhwb3J0ZXInIG9mIGJ1ZmZlcnMsIG9yIHRoZSAndXNlcicgb2YgYnVmZmVycy4K KworU2F5IGEgZHJpdmVyIEEgd2FudHMgdG8gdXNlIGJ1ZmZlcnMgY3JlYXRlZCBieSBkcml2ZXIg QiwgdGhlbiB3ZSBjYWxsIEIgYXMgdGhlCitleHBvcnRlciwgYW5kIEEgYXMgYnVmZmVyLXVzZXIu CisKK1RoZSBleHBvcnRlcgorCisqIGltcGxlbWVudHMgYW5kIG1hbmFnZXMgb3BlcmF0aW9ucyBm b3IgdGhlIGJ1ZmZlciB2aWEKKyAgOmM6dHlwZTpgc3RydWN0IGRtYV9idWZfb3BzIDxkbWFfYnVm X29wcz5gCisqIGFsbG93cyBvdGhlciB1c2VycyB0byBzaGFyZSB0aGUgYnVmZmVyIGJ5IHVzaW5n IGRtYV9idWYgc2hhcmluZyBBUElzLAorKiBtYW5hZ2VzIHRoZSBkZXRhaWxzIG9mIGJ1ZmZlciBh bGxvY2F0aW9uLAorKiBkZWNpZGVzIGFib3V0IHRoZSBhY3R1YWwgYmFja2luZyBzdG9yYWdlIHdo ZXJlIHRoaXMgYWxsb2NhdGlvbiBoYXBwZW5zLAorKiB0YWtlcyBjYXJlIG9mIGFueSBtaWdyYXRp b24gb2Ygc2NhdHRlcmxpc3QgLSBmb3IgYWxsIChzaGFyZWQpIHVzZXJzIG9mIHRoaXMKKyAgYnVm ZmVyLAorCitUaGUgYnVmZmVyLXVzZXIKKworKiBpcyBvbmUgb2YgKG1hbnkpIHNoYXJpbmcgdXNl cnMgb2YgdGhlIGJ1ZmZlci4KKyogZG9lc24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IGhvdyB0aGUg YnVmZmVyIGlzIGFsbG9jYXRlZCwgb3Igd2hlcmUuCisqIG5lZWRzIGEgbWVjaGFuaXNtIHRvIGdl dCBhY2Nlc3MgdG8gdGhlIHNjYXR0ZXJsaXN0IHRoYXQgbWFrZXMgdXAgdGhpcyBidWZmZXIKKyAg aW4gbWVtb3J5LCBtYXBwZWQgaW50byBpdHMgb3duIGFkZHJlc3Mgc3BhY2UsIHNvIGl0IGNhbiBh Y2Nlc3MgdGhlIHNhbWUgYXJlYQorICBvZiBtZW1vcnkuCisKK2RtYS1idWYgb3BlcmF0aW9ucyBm b3IgZGV2aWNlIGRtYSBvbmx5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorCitUaGUgZG1hX2J1ZiBidWZmZXIgc2hhcmluZyBBUEkgdXNhZ2UgY29udGFpbnMgdGhlIGZv bGxvd2luZyBzdGVwczoKKworMS4gRXhwb3J0ZXIgYW5ub3VuY2VzIHRoYXQgaXQgd2lzaGVzIHRv IGV4cG9ydCBhIGJ1ZmZlcgorMi4gVXNlcnNwYWNlIGdldHMgdGhlIGZpbGUgZGVzY3JpcHRvciBh c3NvY2lhdGVkIHdpdGggdGhlIGV4cG9ydGVkIGJ1ZmZlciwgYW5kCisgICBwYXNzZXMgaXQgYXJv dW5kIHRvIHBvdGVudGlhbCBidWZmZXItdXNlcnMgYmFzZWQgb24gdXNlIGNhc2UKKzMuIEVhY2gg YnVmZmVyLXVzZXIgJ2Nvbm5lY3RzJyBpdHNlbGYgdG8gdGhlIGJ1ZmZlcgorNC4gV2hlbiBuZWVk ZWQsIGJ1ZmZlci11c2VyIHJlcXVlc3RzIGFjY2VzcyB0byB0aGUgYnVmZmVyIGZyb20gZXhwb3J0 ZXIKKzUuIFdoZW4gZmluaXNoZWQgd2l0aCBpdHMgdXNlLCB0aGUgYnVmZmVyLXVzZXIgbm90aWZp ZXMgZW5kLW9mLURNQSB0byBleHBvcnRlcgorNi4gd2hlbiBidWZmZXItdXNlciBpcyBkb25lIHVz aW5nIHRoaXMgYnVmZmVyIGNvbXBsZXRlbHksIGl0ICdkaXNjb25uZWN0cycKKyAgIGl0c2VsZiBm cm9tIHRoZSBidWZmZXIuCisKKworRXhwb3J0ZXIncyBhbm5vdW5jZW1lbnQgb2YgYnVmZmVyIGV4 cG9ydAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgYnVm ZmVyIGV4cG9ydGVyIGFubm91bmNlcyBpdHMgd2lzaCB0byBleHBvcnQgYSBidWZmZXIuIEluIHRo aXMsIGl0Citjb25uZWN0cyBpdHMgb3duIHByaXZhdGUgYnVmZmVyIGRhdGEsIHByb3ZpZGVzIGlt cGxlbWVudGF0aW9uIGZvciBvcGVyYXRpb25zCit0aGF0IGNhbiBiZSBwZXJmb3JtZWQgb24gdGhl IGV4cG9ydGVkIDpjOnR5cGU6YGRtYV9idWZgLCBhbmQgZmxhZ3MgZm9yIHRoZSBmaWxlCithc3Nv Y2lhdGVkIHdpdGggdGhpcyBidWZmZXIuIEFsbCB0aGVzZSBmaWVsZHMgYXJlIGZpbGxlZCBpbiBz dHJ1Y3QKKzpjOnR5cGU6YGRtYV9idWZfZXhwb3J0X2luZm9gLCBkZWZpbmVkIHZpYSB0aGUgREVG SU5FX0RNQV9CVUZfRVhQT1JUX0lORk8gbWFjcm8uCisKK0ludGVyZmFjZToKKyAgIDpjOnR5cGU6 YERFRklORV9ETUFfQlVGX0VYUE9SVF9JTkZPKGV4cF9pbmZvKSA8REVGSU5FX0RNQV9CVUZfRVhQ T1JUX0lORk8+YAorCisgICA6YzpmdW5jOmBzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1Zl9leHBvcnQo c3RydWN0IGRtYV9idWZfZXhwb3J0X2luZm8gKmV4cF9pbmZvKTxkbWFfYnVmX2V4cG9ydD5gCisK K0lmIHRoaXMgc3VjY2VlZHMsIGRtYV9idWZfZXhwb3J0IGFsbG9jYXRlcyBhIGRtYV9idWYgc3Ry dWN0dXJlLCBhbmQKK3JldHVybnMgYSBwb2ludGVyIHRvIHRoZSBzYW1lLiBJdCBhbHNvIGFzc29j aWF0ZXMgYW4gYW5vbnltb3VzIGZpbGUgd2l0aCB0aGlzCitidWZmZXIsIHNvIGl0IGNhbiBiZSBl eHBvcnRlZC4gT24gZmFpbHVyZSB0byBhbGxvY2F0ZSB0aGUgZG1hX2J1ZiBvYmplY3QsCitpdCBy ZXR1cm5zIE5VTEwuCisKK2BgZXhwX25hbWVgYCBpbiBzdHJ1Y3QgZG1hX2J1Zl9leHBvcnRfaW5m byBpcyB0aGUgbmFtZSBvZiBleHBvcnRlciAtIHRvCitmYWNpbGl0YXRlIGluZm9ybWF0aW9uIHdo aWxlIGRlYnVnZ2luZy4gSXQgaXMgc2V0IHRvIGBgS0JVSUxEX01PRE5BTUVgYCBieQorZGVmYXVs dCwgc28gZXhwb3J0ZXJzIGRvbid0IGhhdmUgdG8gcHJvdmlkZSBhIHNwZWNpZmljIG5hbWUsIGlm IHRoZXkgZG9uJ3QKK3dpc2ggdG8uCisKK0RFRklORV9ETUFfQlVGX0VYUE9SVF9JTkZPIG1hY3Jv IGRlZmluZXMgdGhlIHN0cnVjdCBkbWFfYnVmX2V4cG9ydF9pbmZvLAoremVyb2VzIGl0IG91dCBh bmQgcHJlLXBvcHVsYXRlcyBleHBfbmFtZSBpbiBpdC4KKworVXNlcnNwYWNlIGdldHMgYSBoYW5k bGUgdG8gcGFzcyBhcm91bmQgdG8gcG90ZW50aWFsIGJ1ZmZlci11c2VycworLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitV c2Vyc3BhY2UgZW50aXR5IHJlcXVlc3RzIGZvciBhIGZpbGUtZGVzY3JpcHRvciAoZmQpIHdoaWNo IGlzIGEgaGFuZGxlIHRvIHRoZQorYW5vbnltb3VzIGZpbGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBi dWZmZXIuIEl0IGNhbiB0aGVuIHNoYXJlIHRoZSBmZCB3aXRoIG90aGVyCitkcml2ZXJzIGFuZC9v ciBwcm9jZXNzZXMuCisKK0ludGVyZmFjZToKKyAgIDpjOmZ1bmM6YGludCBkbWFfYnVmX2ZkKHN0 cnVjdCBkbWFfYnVmICpkbWFidWYsIGludCBmbGFncykgPGRtYV9idWZfZmQ+YAorCitUaGlzIEFQ SSBpbnN0YWxscyBhbiBmZCBmb3IgdGhlIGFub255bW91cyBmaWxlIGFzc29jaWF0ZWQgd2l0aCB0 aGlzIGJ1ZmZlcjsKK3JldHVybnMgZWl0aGVyIGBgZmRgYCwgb3IgZXJyb3IuCisKK0VhY2ggYnVm ZmVyLXVzZXIgJ2Nvbm5lY3RzJyBpdHNlbGYgdG8gdGhlIGJ1ZmZlcgorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0VhY2ggYnVmZmVyLXVzZXIgbm93 IGdldHMgYSByZWZlcmVuY2UgdG8gdGhlIGJ1ZmZlciwgdXNpbmcgdGhlIGZkIHBhc3NlZCB0byBp dC4KKworSW50ZXJmYWNlOgorICAgOmM6ZnVuYzpgc3RydWN0IGRtYV9idWYgKmRtYV9idWZfZ2V0 KGludCBmZCkgPGRtYV9idWZfZ2V0PmAKKworVGhpcyBBUEkgd2lsbCByZXR1cm4gYSByZWZlcmVu Y2UgdG8gdGhlIGRtYV9idWYsIGFuZCBpbmNyZW1lbnQgcmVmY291bnQgZm9yaXQuCisKK0FmdGVy IHRoaXMsIHRoZSBidWZmZXItdXNlciBuZWVkcyB0byBhdHRhY2ggaXRzIGRldmljZSB3aXRoIHRo ZSBidWZmZXIsIHdoaWNoCitoZWxwcyB0aGUgZXhwb3J0ZXIgdG8ga25vdyBvZiBkZXZpY2UgYnVm ZmVyIGNvbnN0cmFpbnRzLgorCitJbnRlcmZhY2U6CisgICA6YzpmdW5jOmBzdHJ1Y3QgZG1hX2J1 Zl9hdHRhY2htZW50ICpkbWFfYnVmX2F0dGFjaChzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLCBzdHJ1 Y3QgZGV2aWNlICpkZXYpIDxkbWFfYnVmX2F0dGFjaD5gCisKK1RoaXMgQVBJIHJldHVybnMgcmVm ZXJlbmNlIHRvIGFuIGF0dGFjaG1lbnQgc3RydWN0dXJlLCB3aGljaCBpcyB0aGVuIHVzZWQKK2Zv ciBzY2F0dGVybGlzdCBvcGVyYXRpb25zLiBJdCB3aWxsIG9wdGlvbmFsbHkgY2FsbCB0aGUgJ2F0 dGFjaCcgZG1hX2J1Zgorb3BlcmF0aW9uLCBpZiBwcm92aWRlZCBieSB0aGUgZXhwb3J0ZXIuCisK K1RoZSBkbWEtYnVmIHNoYXJpbmcgZnJhbWV3b3JrIGRvZXMgdGhlIGJvb2trZWVwaW5nIGJpdHMg cmVsYXRlZCB0byBtYW5hZ2luZwordGhlIGxpc3Qgb2YgYWxsIGF0dGFjaG1lbnRzIHRvIGEgYnVm ZmVyLgorCisuLiBub3RlOjoKKworIFVudGlsIHRoaXMgc3RhZ2UsIHRoZSBidWZmZXItZXhwb3J0 ZXIgaGFzIHRoZSBvcHRpb24gdG8gY2hvb3NlIG5vdCB0byBhY3R1YWxseQorIGFsbG9jYXRlIHRo ZSBiYWNraW5nIHN0b3JhZ2UgZm9yIHRoaXMgYnVmZmVyLCBidXQgd2FpdCBmb3IgdGhlIGZpcnN0 CisgYnVmZmVyLXVzZXIgdG8gcmVxdWVzdCB1c2Ugb2YgYnVmZmVyIGZvciBhbGxvY2F0aW9uLgor CitXaGVuIG5lZWRlZCwgYnVmZmVyLXVzZXIgcmVxdWVzdHMgYWNjZXNzIHRvIHRoZSBidWZmZXIK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor CitXaGVuZXZlciBhIGJ1ZmZlci11c2VyIHdhbnRzIHRvIHVzZSB0aGUgYnVmZmVyIGZvciBhbnkg RE1BLCBpdCBhc2tzIGZvcgorYWNjZXNzIHRvIHRoZSBidWZmZXIgdXNpbmcgZG1hX2J1Zl9tYXBf YXR0YWNobWVudCBBUEkuIEF0IGxlYXN0IG9uZSBhdHRhY2ggdG8KK3RoZSBidWZmZXIgbXVzdCBo YXZlIGhhcHBlbmVkIGJlZm9yZSBtYXBfZG1hX2J1ZiBjYW4gYmUgY2FsbGVkLgorCitJbnRlcmZh Y2U6CisgICA6YzpmdW5jOmBzdHJ1Y3Qgc2dfdGFibGUgKiBkbWFfYnVmX21hcF9hdHRhY2htZW50 KHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKiwgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24pIDxk bWFfYnVmX21hcF9hdHRhY2htZW50PmAKKworVGhpcyBpcyBhIHdyYXBwZXIgdG8gZG1hX2J1Zi0+ b3BzLT5tYXBfZG1hX2J1ZiBvcGVyYXRpb24sIHdoaWNoIGhpZGVzIHRoZQorYGBkbWFfYnVmLT5v cHMtPmBgIGluZGlyZWN0aW9uIGZyb20gdGhlIHVzZXJzIG9mIHRoaXMgaW50ZXJmYWNlLgorCitJ biBzdHJ1Y3QgOmM6dHlwZTpgZG1hX2J1Zl9vcHNgLCBgYG1hcF9kbWFfYnVmYGAgaXMgZGVmaW5l ZCBhcworICAgIGBgc3RydWN0IHNnX3RhYmxlICogKCptYXBfZG1hX2J1Zikoc3RydWN0IGRtYV9i dWZfYXR0YWNobWVudCAqLCBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbik7YGAKKworSXQgaXMgb25l IG9mIHRoZSBidWZmZXIgb3BlcmF0aW9ucyB0aGF0IG11c3QgYmUgaW1wbGVtZW50ZWQgYnkgdGhl IGV4cG9ydGVyLgorSXQgc2hvdWxkIHJldHVybiB0aGUgc2dfdGFibGUgY29udGFpbmluZyBzY2F0 dGVybGlzdCBmb3IgdGhpcyBidWZmZXIsIG1hcHBlZAoraW50byBjYWxsZXIncyBhZGRyZXNzIHNw YWNlLgorCitJZiB0aGlzIGlzIGJlaW5nIGNhbGxlZCBmb3IgdGhlIGZpcnN0IHRpbWUsIHRoZSBl eHBvcnRlciBjYW4gbm93IGNob29zZSB0bworc2NhbiB0aHJvdWdoIHRoZSBsaXN0IG9mIGF0dGFj aG1lbnRzIGZvciB0aGlzIGJ1ZmZlciwgY29sbGF0ZSB0aGUgcmVxdWlyZW1lbnRzCitvZiB0aGUg YXR0YWNoZWQgZGV2aWNlcywgYW5kIGNob29zZSBhbiBhcHByb3ByaWF0ZSBiYWNraW5nIHN0b3Jh Z2UgZm9yIHRoZQorYnVmZmVyLgorCitCYXNlZCBvbiBlbnVtIDpjOnR5cGU6YGRtYV9kYXRhX2Rp cmVjdGlvbmAsIGl0IG1pZ2h0IGJlIHBvc3NpYmxlIHRvIGhhdmUgbXVsdGlwbGUgdXNlcnMKK2Fj Y2Vzc2luZyBhdCB0aGUgc2FtZSB0aW1lIChmb3IgcmVhZGluZywgbWF5YmUpLCBvciBhbnkgb3Ro ZXIga2luZCBvZiBzaGFyaW5nCit0aGF0IHRoZSBleHBvcnRlciBtaWdodCB3aXNoIHRvIG1ha2Ug YXZhaWxhYmxlIHRvIGJ1ZmZlci11c2Vycy4KKworYGBtYXBfZG1hX2J1ZigpYGAgb3BlcmF0aW9u IGNhbiByZXR1cm4gLUVJTlRSIGlmIGl0IGlzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsLgorCisK K1doZW4gZmluaXNoZWQsIHRoZSBidWZmZXItdXNlciBub3RpZmllcyBlbmQtb2YtRE1BIHRvIGV4 cG9ydGVyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorCitPbmNlIHRoZSBETUEgZm9yIHRoZSBjdXJyZW50IGJ1ZmZlci11c2Vy IGlzIG92ZXIsIGl0IHNpZ25hbHMgJ2VuZC1vZi1ETUEnIHRvCit0aGUgZXhwb3J0ZXIgdXNpbmcg dGhlIGRtYV9idWZfdW5tYXBfYXR0YWNobWVudCBBUEkuCisKK0ludGVyZmFjZToKKyAgIDpjOmZ1 bmM6YHZvaWQgZG1hX2J1Zl91bm1hcF9hdHRhY2htZW50KHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1l bnQgKiwgc3RydWN0IHNnX3RhYmxlICopIDxkbWFfYnVmX3VubWFwX2F0dGFjaG1lbnQ+YAorCitU aGlzIGlzIGEgd3JhcHBlciB0byBkbWFfYnVmLT5vcHMtPnVubWFwX2RtYV9idWYoKSBvcGVyYXRp b24sIHdoaWNoIGhpZGVzIHRoZQorImRtYV9idWYtPm9wcy0+IiBpbmRpcmVjdGlvbiBmcm9tIHRo ZSB1c2VycyBvZiB0aGlzIGludGVyZmFjZS4KKworSW4gc3RydWN0IGRtYV9idWZfb3BzLCB1bm1h cF9kbWFfYnVmIGlzIGRlZmluZWQgYXMKKyAgIGBgdm9pZCAoKnVubWFwX2RtYV9idWYpKHN0cnVj dCBkbWFfYnVmX2F0dGFjaG1lbnQgKiwgc3RydWN0IHNnX3RhYmxlICosIGVudW0gZG1hX2RhdGFf ZGlyZWN0aW9uKWBgCisKK2BgdW5tYXBfZG1hX2J1ZigpYGAgc2lnbmlmaWVzIHRoZSBlbmQtb2Yt RE1BIGZvciB0aGUgYXR0YWNobWVudCBwcm92aWRlZC4gTGlrZQorYGBtYXBfZG1hX2J1ZmBgLCB0 aGlzIEFQSSBhbHNvIG11c3QgYmUgaW1wbGVtZW50ZWQgYnkgdGhlIGV4cG9ydGVyLgorCisKK3do ZW4gYnVmZmVyLXVzZXIgaXMgZG9uZSB1c2luZyB0aGlzIGJ1ZmZlciwgaXQgJ2Rpc2Nvbm5lY3Rz JyBpdHNlbGYgZnJvbSB0aGUgYnVmZmVyLgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK K0FmdGVyIHRoZSBidWZmZXItdXNlciBoYXMgbm8gbW9yZSBpbnRlcmVzdCBpbiB1c2luZyB0aGlz IGJ1ZmZlciwgaXQgc2hvdWxkCitkaXNjb25uZWN0IGl0c2VsZiBmcm9tIHRoZSBidWZmZXI6CisK KyAgICogaXQgZmlyc3QgZGV0YWNoZXMgaXRzZWxmIGZyb20gdGhlIGJ1ZmZlci4KKworICAgSW50 ZXJmYWNlOgorICAgICAgOmM6ZnVuYzpgdm9pZCBkbWFfYnVmX2RldGFjaChzdHJ1Y3QgZG1hX2J1 ZiAqZG1hYnVmLCBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICpkbWFidWZfYXR0YWNoKSA8ZG1h X2J1Zl9kZXRhY2g+YAorCisgICBUaGlzIEFQSSByZW1vdmVzIHRoZSBhdHRhY2htZW50IGZyb20g dGhlIGxpc3QgaW4gZG1hYnVmLCBhbmQgb3B0aW9uYWxseSBjYWxscworICAgYGBkbWFfYnVmLT5v cHMtPmRldGFjaCgpYGAsIGlmIHByb3ZpZGVkIGJ5IGV4cG9ydGVyLCBmb3IgYW55IGhvdXNla2Vl cGluZyBiaXRzLgorCisgICAqIFRoZW4sIHRoZSBidWZmZXItdXNlciByZXR1cm5zIHRoZSBidWZm ZXIgcmVmZXJlbmNlIHRvIGV4cG9ydGVyLgorCisgICBJbnRlcmZhY2U6CisgICAgIDpjOmZ1bmM6 YHZvaWQgZG1hX2J1Zl9wdXQoc3RydWN0IGRtYV9idWYgKmRtYWJ1ZikgPGRtYV9idWZfcHV0PmAK KworICAgVGhpcyBBUEkgdGhlbiByZWR1Y2VzIHRoZSByZWZjb3VudCBmb3IgdGhpcyBidWZmZXIu CisKKyAgIElmLCBhcyBhIHJlc3VsdCBvZiB0aGlzIGNhbGwsIHRoZSByZWZjb3VudCBiZWNvbWVz IDAsIHRoZSAncmVsZWFzZScgZmlsZQorICAgb3BlcmF0aW9uIHJlbGF0ZWQgdG8gdGhpcyBmZCBp cyBjYWxsZWQuIEl0IGNhbGxzIHRoZQorICAgYGBkbWFidWYtPm9wcy0+cmVsZWFzZSgpYGAgb3Bl cmF0aW9uIGluIHR1cm4sIGFuZCBmcmVlcyB0aGUgbWVtb3J5IGFsbG9jYXRlZAorICAgZm9yIGRt YWJ1ZiB3aGVuIGV4cG9ydGVkLgorCitOT1RFUworLS0tLS0KKworSW1wb3J0YW5jZSBvZiBhdHRh Y2gtZGV0YWNoIGFuZCB7bWFwLHVubWFwfV9kbWFfYnVmIG9wZXJhdGlvbiBwYWlycworXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e Xl5eXgorCisgIFRoZSBhdHRhY2gtZGV0YWNoIGNhbGxzIGFsbG93IHRoZSBleHBvcnRlciB0byBm aWd1cmUgb3V0IGJhY2tpbmctc3RvcmFnZQorICBjb25zdHJhaW50cyBmb3IgdGhlIGN1cnJlbnRs eS1pbnRlcmVzdGVkIGRldmljZXMuIFRoaXMgYWxsb3dzIHByZWZlcmVudGlhbAorICBhbGxvY2F0 aW9uLCBhbmQvb3IgbWlncmF0aW9uIG9mIHBhZ2VzIGFjcm9zcyBkaWZmZXJlbnQgdHlwZXMgb2Yg c3RvcmFnZQorICBhdmFpbGFibGUsIGlmIHBvc3NpYmxlLgorCisgIEJyYWNrZXRpbmcgb2YgRE1B IGFjY2VzcyB3aXRoIHttYXAsdW5tYXB9X2RtYV9idWYgb3BlcmF0aW9ucyBpcyBlc3NlbnRpYWwK KyAgdG8gYWxsb3cganVzdC1pbi10aW1lIGJhY2tpbmcgb2Ygc3RvcmFnZSwgYW5kIG1pZ3JhdGlv biBtaWQtd2F5IHRocm91Z2ggYQorICB1c2UtY2FzZS4KKworTWlncmF0aW9uIG9mIGJhY2tpbmcg c3RvcmFnZSBpZiBuZWVkZWQKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e CisKKyAgSWYgYWZ0ZXIKKworICAqIGF0IGxlYXN0IG9uZSBtYXBfZG1hX2J1ZiBoYXMgaGFwcGVu ZWQsCisgICogYW5kIHRoZSBiYWNraW5nIHN0b3JhZ2UgaGFzIGJlZW4gYWxsb2NhdGVkIGZvciB0 aGlzIGJ1ZmZlciwKKworICBhbm90aGVyIG5ldyBidWZmZXItdXNlciBpbnRlbmRzIHRvIGF0dGFj aCBpdHNlbGYgdG8gdGhpcyBidWZmZXIsIGl0IG1pZ2h0CisgIGJlIGFsbG93ZWQsIGlmIHBvc3Np YmxlIGZvciB0aGUgZXhwb3J0ZXIuCisKKyAgSW4gY2FzZSBpdCBpcyBhbGxvd2VkIGJ5IHRoZSBl eHBvcnRlcjoKKworICAqIGlmIHRoZSBuZXcgYnVmZmVyLXVzZXIgaGFzIHN0cmljdGVyICdiYWNr aW5nLXN0b3JhZ2UgY29uc3RyYWludHMnLCBhbmQgdGhlCisgICAgZXhwb3J0ZXIgY2FuIGhhbmRs ZSB0aGVzZSBjb25zdHJhaW50cywgdGhlIGV4cG9ydGVyIGNhbiBqdXN0IHN0YWxsIG9uIHRoZQor ICAgIG1hcF9kbWFfYnVmIHVudGlsIGFsbCBvdXRzdGFuZGluZyBhY2Nlc3MgaXMgY29tcGxldGVk IChhcyBzaWduYWxsZWQgYnkKKyAgICB1bm1hcF9kbWFfYnVmKS4KKworICAqIE9uY2UgYWxsIHVz ZXJzIGhhdmUgZmluaXNoZWQgYWNjZXNzaW5nIGFuZCBoYXZlIHVubWFwcGVkIHRoaXMgYnVmZmVy LCB0aGUKKyAgICBleHBvcnRlciBjb3VsZCBwb3RlbnRpYWxseSBtb3ZlIHRoZSBidWZmZXIgdG8g dGhlIHN0cmljdGVyIGJhY2tpbmctc3RvcmFnZSwKKyAgICBhbmQgdGhlbiBhbGxvdyBmdXJ0aGVy IHttYXAsdW5tYXB9X2RtYV9idWYgb3BlcmF0aW9ucyBmcm9tIGFueSBidWZmZXItdXNlcgorICAg IGZyb20gdGhlIG1pZ3JhdGVkIGJhY2tpbmctc3RvcmFnZS4KKworICAqIElmIHRoZSBleHBvcnRl ciBjYW5ub3QgZnVsZmlsbCB0aGUgYmFja2luZy1zdG9yYWdlIGNvbnN0cmFpbnRzIG9mIHRoZSBu ZXcKKyAgICBidWZmZXItdXNlciBkZXZpY2UgYXMgcmVxdWVzdGVkLCBkbWFfYnVmX2F0dGFjaCgp IHdvdWxkIHJldHVybiBhbiBlcnJvciB0bworICAgIGRlbm90ZSBub24tY29tcGF0aWJpbGl0eSBv ZiB0aGUgbmV3IGJ1ZmZlci1zaGFyaW5nIHJlcXVlc3Qgd2l0aCB0aGUgY3VycmVudAorICAgIGJ1 ZmZlci4KKworCisgIElmIHRoZSBleHBvcnRlciBjaG9vc2VzIG5vdCB0byBhbGxvdyBhbiBhdHRh Y2goKSBvcGVyYXRpb24gb25jZSBhCisgIG1hcF9kbWFfYnVmKCkgQVBJIGhhcyBiZWVuIGNhbGxl ZCwgaXQgc2ltcGx5IHJldHVybnMgYW4gZXJyb3IuCisKK0tlcm5lbCBjcHUgYWNjZXNzIHRvIGEg ZG1hLWJ1ZiBidWZmZXIgb2JqZWN0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorCitUaGUgbW90aXZhdGlvbiB0byBhbGxvdyBjcHUgYWNjZXNzIGZyb20gdGhl IGtlcm5lbCB0byBhIGRtYS1idWYgb2JqZWN0IGZyb20gdGhlCitpbXBvcnRlcnMgc2lkZSBhcmU6 CisKKyogZmFsbGJhY2sgb3BlcmF0aW9ucywgZS5nLiBpZiB0aGUgZGV2aWNlcyBpcyBjb25uZWN0 ZWQgdG8gYSB1c2IgYnVzIGFuZCB0aGUKKyAga2VybmVsIG5lZWRzIHRvIHNodWZmbGUgdGhlIGRh dGEgYXJvdW5kIGZpcnN0IGJlZm9yZSBzZW5kaW5nIGl0IGF3YXkuCisKKyogZnVsbCB0cmFuc3Bh cmVuY3kgZm9yIGV4aXN0aW5nIHVzZXJzIG9uIHRoZSBpbXBvcnRlciBzaWRlLCBpLmUuIHVzZXJz cGFjZQorICBzaG91bGQgbm90IG5vdGljZSB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGEgbm9ybWFs IG9iamVjdCBmcm9tIHRoYXQgc3Vic3lzdGVtCisgIGFuZCBhbiBpbXBvcnRlZCBvbmUgYmFja2Vk IGJ5IGEgZG1hLWJ1Zi4gVGhpcyBpcyByZWFsbHkgaW1wb3J0YW50IGZvciBkcm0KKyAgb3Blbmds IGRyaXZlcnMgdGhhdCBleHBlY3QgdG8gc3RpbGwgdXNlIGFsbCB0aGUgZXhpc3RpbmcgdXBsb2Fk L2Rvd25sb2FkCisgIHBhdGhzLgorCitBY2Nlc3MgdG8gYSBkbWFfYnVmIGZyb20gdGhlIGtlcm5l bCBjb250ZXh0IGludm9sdmVzIHRocmVlIHN0ZXBzOgorCisxLiBQcmVwYXJlIGFjY2Vzcywgd2hp Y2ggaW52YWxpZGF0ZSBhbnkgbmVjZXNzYXJ5IGNhY2hlcyBhbmQgbWFrZSB0aGUgb2JqZWN0Cisg ICBhdmFpbGFibGUgZm9yIGNwdSBhY2Nlc3MuCisKKzIuIEFjY2VzcyB0aGUgb2JqZWN0IHBhZ2Ut YnktcGFnZSB3aXRoIHRoZSBkbWFfYnVmIG1hcCBhcGlzCisKKzMuIEZpbmlzaCBhY2Nlc3MsIHdo aWNoIHdpbGwgZmx1c2ggYW55IG5lY2Vzc2FyeSBjcHUgY2FjaGVzIGFuZCBmcmVlIHJlc2VydmVk CisgICByZXNvdXJjZXMuCisKK1ByZXBhcmUgYWNjZXNzCistLS0tLS0tLS0tLS0tLQorCitCZWZv cmUgYW4gaW1wb3J0ZXIgY2FuIGFjY2VzcyBhIGRtYV9idWYgb2JqZWN0IHdpdGggdGhlIGNwdSBm cm9tIHRoZSBrZXJuZWwKK2NvbnRleHQsIGl0IG5lZWRzIHRvIG5vdGlmeSB0aGUgZXhwb3J0ZXIg b2YgdGhlIGFjY2VzcyB0aGF0IGlzIGFib3V0IHRvCitoYXBwZW4uCisKK0ludGVyZmFjZToKKyAg IDpjOmZ1bmM6YGludCBkbWFfYnVmX2JlZ2luX2NwdV9hY2Nlc3Moc3RydWN0IGRtYV9idWYgKmRt YWJ1ZiwgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyZWN0aW9uKSA8ZG1hX2J1Zl9iZWdpbl9j cHVfYWNjZXNzPmAKKworVGhpcyBhbGxvd3MgdGhlIGV4cG9ydGVyIHRvIGVuc3VyZSB0aGF0IHRo ZSBtZW1vcnkgaXMgYWN0dWFsbHkgYXZhaWxhYmxlIGZvcgorY3B1IGFjY2VzcyAtIHRoZSBleHBv cnRlciBtaWdodCBuZWVkIHRvIGFsbG9jYXRlIG9yIHN3YXAtaW4gYW5kIHBpbiB0aGUKK2JhY2tp bmcgc3RvcmFnZS4gVGhlIGV4cG9ydGVyIGFsc28gbmVlZHMgdG8gZW5zdXJlIHRoYXQgY3B1IGFj Y2VzcyBpcworY29oZXJlbnQgZm9yIHRoZSBhY2Nlc3MgZGlyZWN0aW9uLiBUaGUgZGlyZWN0aW9u IGNhbiBiZSB1c2VkIGJ5IHRoZSBleHBvcnRlcgordG8gb3B0aW1pemUgdGhlIGNhY2hlIGZsdXNo aW5nLCBpLmUuIGFjY2VzcyB3aXRoIGEgZGlmZmVyZW50IGRpcmVjdGlvbiAocmVhZAoraW5zdGVh ZCBvZiB3cml0ZSkgbWlnaHQgcmV0dXJuIHN0YWxlIG9yIGV2ZW4gYm9ndXMgZGF0YSAoZS5nLiB3 aGVuIHRoZQorZXhwb3J0ZXIgbmVlZHMgdG8gY29weSB0aGUgZGF0YSB0byB0ZW1wb3Jhcnkgc3Rv cmFnZSkuCisKK1RoaXMgc3RlcCBtaWdodCBmYWlsLCBlLmcuIGluIG9vbSBjb25kaXRpb25zLgor CitBY2Nlc3MgdGhlIGJ1ZmZlcgorLS0tLS0tLS0tLS0tLS0tLS0KKworVG8gc3VwcG9ydCBkbWFf YnVmIG9iamVjdHMgcmVzaWRpbmcgaW4gaGlnaG1lbSBjcHUgYWNjZXNzIGlzIHBhZ2UtYmFzZWQg dXNpbmcKK2FuIGFwaSBzaW1pbGFyIHRvIGttYXAuIEFjY2Vzc2luZyBhIGRtYV9idWYgaXMgZG9u ZSBpbiBhbGlnbmVkIGNodW5rcyBvZgorYGBQQUdFX1NJWkVgYCBzaXplLiBCZWZvcmUgYWNjZXNz aW5nIGEgY2h1bmsgaXQgbmVlZHMgdG8gYmUgbWFwcGVkLCB3aGljaCByZXR1cm5zCithIHBvaW50 ZXIgaW4ga2VybmVsIHZpcnR1YWwgYWRkcmVzcyBzcGFjZS4gQWZ0ZXJ3YXJkcyB0aGUgY2h1bmsg bmVlZHMgdG8gYmUKK3VubWFwcGVkIGFnYWluLiBUaGVyZSBpcyBubyBsaW1pdCBvbiBob3cgb2Z0 ZW4gYSBnaXZlbiBjaHVuayBjYW4gYmUgbWFwcGVkCithbmQgdW5tYXBwZWQsIGkuZS4gdGhlIGlt cG9ydGVyIGRvZXMgbm90IG5lZWQgdG8gY2FsbCBgYGJlZ2luX2NwdV9hY2Nlc3MoKWBgIGFnYWlu CitiZWZvcmUgbWFwcGluZyB0aGUgc2FtZSBjaHVuayBhZ2Fpbi4KKworSW50ZXJmYWNlczoKKyAg IDpjOmZ1bmM6YHZvaWQgKmRtYV9idWZfa21hcChzdHJ1Y3QgZG1hX2J1ZiAqLCB1bnNpZ25lZCBs b25nKSA8ZG1hX2J1Zl9rbWFwPmAKKworICAgOmM6ZnVuYzpgdm9pZCBkbWFfYnVmX2t1bm1hcChz dHJ1Y3QgZG1hX2J1ZiAqLCB1bnNpZ25lZCBsb25nLCB2b2lkICopIDxkbWFfYnVmX2t1bm1hcD5g CisKK1RoZXJlIGFyZSBhbHNvIGF0b21pYyB2YXJpYW50cyBvZiB0aGVzZSBpbnRlcmZhY2VzLiBM aWtlIGZvciBrbWFwIHRoZXkKK2ZhY2lsaXRhdGUgbm9uLWJsb2NraW5nIGZhc3QtcGF0aHMuIE5l aXRoZXIgdGhlIGltcG9ydGVyIG5vciB0aGUgZXhwb3J0ZXIgKGluCit0aGUgY2FsbGJhY2spIGlz IGFsbG93ZWQgdG8gYmxvY2sgd2hlbiB1c2luZyB0aGVzZS4KKworSW50ZXJmYWNlczoKKyAgIDpj OmZ1bmM6YHZvaWQgKmRtYV9idWZfa21hcF9hdG9taWMoc3RydWN0IGRtYV9idWYgKiwgdW5zaWdu ZWQgbG9uZykgPGRtYV9idWZfa21hcF9hdG9taWM+YAorCisgICA6YzpmdW5jOmB2b2lkIGRtYV9i dWZfa3VubWFwX2F0b21pYyhzdHJ1Y3QgZG1hX2J1ZiAqLCB1bnNpZ25lZCBsb25nLCB2b2lkICop IDxkbWFfYnVmX2t1bm1hcF9hdG9taWM+YAorCitGb3IgaW1wb3J0ZXJzIGFsbCB0aGUgcmVzdHJp Y3Rpb25zIG9mIHVzaW5nIGttYXAgYXBwbHksIGxpa2UgdGhlIGxpbWl0ZWQKK3N1cHBseSBvZiBr bWFwX2F0b21pYyBzbG90cy4gSGVuY2UgYW4gaW1wb3J0ZXIgc2hhbGwgb25seSBob2xkIG9udG8g YXQgbW9zdCAyCithdG9taWMgZG1hX2J1ZiBrbWFwcyBhdCB0aGUgc2FtZSB0aW1lIChpbiBhbnkg Z2l2ZW4gcHJvY2VzcyBjb250ZXh0KS4KKworYGBkbWFfYnVmIGttYXBgYCBjYWxscyBvdXRzaWRl IG9mIHRoZSByYW5nZSBzcGVjaWZpZWQgaW4gYGBiZWdpbl9jcHVfYWNjZXNzYGAgYXJlCit1bmRl ZmluZWQuIElmIHRoZSByYW5nZSBpcyBub3QgYGBQQUdFX1NJWkVgYCBhbGlnbmVkLCBrbWFwIG5l ZWRzIHRvIHN1Y2NlZWQgb24KK3RoZSBwYXJ0aWFsIGNodW5rcyBhdCB0aGUgYmVnaW5uaW5nIGFu ZCBlbmQgYnV0IG1heSByZXR1cm4gc3RhbGUgb3IgYm9ndXMKK2RhdGEgb3V0c2lkZSBvZiB0aGUg cmFuZ2UgKGluIHRoZXNlIHBhcnRpYWwgY2h1bmtzKS4KKworTm90ZSB0aGF0IHRoZXNlIGNhbGxz IG5lZWQgdG8gYWx3YXlzIHN1Y2NlZWQuIFRoZSBleHBvcnRlciBuZWVkcyB0byBjb21wbGV0ZQor YW55IHByZXBhcmF0aW9ucyB0aGF0IG1pZ2h0IGZhaWwgaW4gYGBiZWdpbl9jcHVfYWNjZXNzKClg YC4KKworRm9yIHNvbWUgY2FzZXMgdGhlIG92ZXJoZWFkIG9mIGttYXAgY2FuIGJlIHRvbyBoaWdo LCBhIHZtYXAgaW50ZXJmYWNlCitpcyBpbnRyb2R1Y2VkLiBUaGlzIGludGVyZmFjZSBzaG91bGQg YmUgdXNlZCB2ZXJ5IGNhcmVmdWxseSwgYXMgdm1hbGxvYworc3BhY2UgaXMgYSBsaW1pdGVkIHJl c291cmNlcyBvbiBtYW55IGFyY2hpdGVjdHVyZXMuCisKK0ludGVyZmFjZXM6CisgICA6YzpmdW5j OmB2b2lkICpkbWFfYnVmX3ZtYXAoc3RydWN0IGRtYV9idWYgKmRtYWJ1ZikgPGRtYV9idWZfdm1h cD5gCisKKyAgIDpjOmZ1bmM6YHZvaWQgZG1hX2J1Zl92dW5tYXAoc3RydWN0IGRtYV9idWYgKmRt YWJ1Ziwgdm9pZCAqdmFkZHIpIDxkbWFfYnVmX3Z1bm1hcD5gCisKK1RoZSB2bWFwIGNhbGwgY2Fu IGZhaWwgaWYgdGhlcmUgaXMgbm8gdm1hcCBzdXBwb3J0IGluIHRoZSBleHBvcnRlciwgb3IgaWYg aXQKK3J1bnMgb3V0IG9mIHZtYWxsb2Mgc3BhY2UuIEZhbGxiYWNrIHRvIGttYXAgc2hvdWxkIGJl IGltcGxlbWVudGVkLiBOb3RlIHRoYXQKK3RoZSBkbWEtYnVmIGxheWVyIGtlZXBzIGEgcmVmZXJl bmNlIGNvdW50IGZvciBhbGwgdm1hcCBhY2Nlc3MgYW5kIGNhbGxzIGRvd24KK2ludG8gdGhlIGV4 cG9ydGVyJ3Mgdm1hcCBmdW5jdGlvbiBvbmx5IHdoZW4gbm8gdm1hcHBpbmcgZXhpc3RzLCBhbmQg b25seQordW5tYXBzIGl0IG9uY2UuIFByb3RlY3Rpb24gYWdhaW5zdCBjb25jdXJyZW50IHZtYXAv dnVubWFwIGNhbGxzIGlzIHByb3ZpZGVkCitieSB0YWtpbmcgdGhlIGBgZG1hX2J1Zi0+bG9ja2Bg IG11dGV4LgorCitGaW5pc2ggYWNjZXNzCistLS0tLS0tLS0tLS0tCisKK1doZW4gdGhlIGltcG9y dGVyIGlzIGRvbmUgYWNjZXNzaW5nIHRoZSBDUFUsIGl0IG5lZWRzIHRvIGFubm91bmNlIHRoaXMg dG8KK3RoZSBleHBvcnRlciAodG8gZmFjaWxpdGF0ZSBjYWNoZSBmbHVzaGluZyBhbmQgdW5waW5u aW5nIG9mIGFueSBwaW5uZWQKK3Jlc291cmNlcykuIFRoZSByZXN1bHQgb2YgYW55IGRtYV9idWYg a21hcCBjYWxscyBhZnRlciBlbmRfY3B1X2FjY2VzcyBpcwordW5kZWZpbmVkLgorCitJbnRlcmZh Y2U6CisgICA6YzpmdW5jOmB2b2lkIGRtYV9idWZfZW5kX2NwdV9hY2Nlc3Moc3RydWN0IGRtYV9i dWYgKmRtYV9idWYsIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcikgPGRtYV9idWZfZW5kX2Nw dV9hY2Nlc3M+YAorCisKK0RpcmVjdCBVc2Vyc3BhY2UgQWNjZXNzL21tYXAgU3VwcG9ydAorPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0JlaW5nIGFibGUgdG8gbW1hcCBh biBleHBvcnQgZG1hLWJ1ZiBidWZmZXIgb2JqZWN0IGhhcyAyIG1haW4gdXNlLWNhc2VzOgorCisq IENQVSBmYWxsYmFjayBwcm9jZXNzaW5nIGluIGEgcGlwZWxpbmUgYW5kCisqIHN1cHBvcnRpbmcg ZXhpc3RpbmcgbW1hcCBpbnRlcmZhY2VzIGluIGltcG9ydGVycy4KKworQ1BVIGZhbGxiYWNrIHBy b2Nlc3NpbmcgaW4gYSBwaXBlbGluZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorCitJbiBtYW55IHByb2Nlc3NpbmcgcGlwZWxpbmVzIGl0IGlzIHNvbWV0aW1lcyByZXF1 aXJlZCB0aGF0IHRoZSBjcHUgY2FuIGFjY2VzcwordGhlIGRhdGEgaW4gYSBkbWEtYnVmIChlLmcu IGZvciB0aHVtYm5haWwgY3JlYXRpb24sIHNuYXBzaG90cywgLi4uKS4gVG8gYXZvaWQKK3RoZSBu ZWVkIHRvIGhhbmRsZSB0aGlzIHNwZWNpYWxseSBpbiB1c2Vyc3BhY2UgZnJhbWV3b3JrcyBmb3Ig YnVmZmVyIHNoYXJpbmcKK2l0J3MgaWRlYWwgaWYgdGhlIGRtYV9idWYgYGBmZGBgIGl0c2VsZiBj YW4gYmUgdXNlZCB0byBhY2Nlc3MgdGhlIGJhY2tpbmcgc3RvcmFnZQorZnJvbSB1c2Vyc3BhY2Ug dXNpbmcgbW1hcC4KKworRnVydGhlcm1vcmUgQW5kcm9pZCdzIElPTiBmcmFtZXdvcmsgYWxyZWFk eSBzdXBwb3J0cyB0aGlzIChhbmQgaXMgb3RoZXJ3aXNlCityYXRoZXIgc2ltaWxhciB0byBkbWEt YnVmIGZyb20gYSB1c2Vyc3BhY2UgY29uc3VtZXIgc2lkZSB3aXRoIHVzaW5nIGZkcyBhcworaGFu ZGxlcywgdG9vKS4gU28gaXQncyBiZW5lZmljaWFsIHRvIHN1cHBvcnQgdGhpcyBpbiBhIHNpbWls YXIgZmFzaGlvbiBvbgorZG1hLWJ1ZiB0byBoYXZlIGEgZ29vZCB0cmFuc2l0aW9uIHBhdGggZm9y IGV4aXN0aW5nIEFuZHJvaWQgdXNlcnNwYWNlLgorCitObyBzcGVjaWFsIGludGVyZmFjZXMsIHVz ZXJzcGFjZSBzaW1wbHkgY2FsbHMgbW1hcCBvbiB0aGUgZG1hLWJ1ZiBmZCwgbWFraW5nCitzdXJl IHRoYXQgdGhlIGNhY2hlIHN5bmNocm9uaXphdGlvbiBpb2N0bCAoYGBETUFfQlVGX0lPQ1RMX1NZ TkNgYCkgaXMgKmFsd2F5cyoKK3VzZWQgd2hlbiB0aGUgYWNjZXNzIGhhcHBlbnMuIE5vdGUgdGhh dCBgYERNQV9CVUZfSU9DVExfU1lOQ2BgIGNhbiBmYWlsIHdpdGgKKy1FQUdBSU4gb3IgLUVJTlRS LCBpbiB3aGljaCBjYXNlIGl0IG11c3QgYmUgcmVzdGFydGVkLgorCitTb21lIHN5c3RlbXMgbWln aHQgbmVlZCBzb21lIHNvcnQgb2YgY2FjaGUgY29oZXJlbmN5IG1hbmFnZW1lbnQgZS5nLiB3aGVu CitDUFUgYW5kIEdQVSBkb21haW5zIGFyZSBiZWluZyBhY2Nlc3NlZCB0aHJvdWdoIGRtYS1idWYg YXQgdGhlIHNhbWUgdGltZS4gVG8KK2NpcmN1bXZlbnQgdGhpcyBwcm9ibGVtIHRoZXJlIGFyZSBi ZWdpbi9lbmQgY29oZXJlbmN5IG1hcmtlcnMsIHRoYXQgZm9yd2FyZAorZGlyZWN0bHkgdG8gZXhp c3RpbmcgZG1hLWJ1ZiBkZXZpY2UgZHJpdmVycyB2ZnVuYyBob29rcy4gVXNlcnNwYWNlIGNhbiBt YWtlCit1c2Ugb2YgdGhvc2UgbWFya2VycyB0aHJvdWdoIHRoZSBgYERNQV9CVUZfSU9DVExfU1lO Q2BgIGlvY3RsLiBUaGUgc2VxdWVuY2UKK3dvdWxkIGJlIHVzZWQgbGlrZSBmb2xsb3dpbmc6CisK KyAgKiBtbWFwIGRtYS1idWYgZmQKKyAgKiBmb3IgZWFjaCBkcmF3aW5nL3VwbG9hZCBjeWNsZSBp biBDUFUKKworICAgIDEuIFNZTkNfU1RBUlQgaW9jdGwsCisgICAgMi4gcmVhZC93cml0ZSB0byBt bWFwIGFyZWEKKyAgICAzLiBTWU5DX0VORCBpb2N0bC4KKworICAgIFRoaXMgY2FuIGJlIHJlcGVh dGVkIGFzIG9mdGVuIGFzIHlvdSB3YW50ICh3aXRoIHRoZSBuZXcgZGF0YSBiZWluZworICAgIGNv bnN1bWVkIGJ5IHRoZSBHUFUgb3Igc2F5IHNjYW5vdXQgZGV2aWNlKQorCisgICogbXVubWFwIG9u Y2UgeW91IGRvbid0IG5lZWQgdGhlIGJ1ZmZlciBhbnkgbW9yZQorCitGb3IgY29ycmVjdG5lc3Mg YW5kIG9wdGltYWwgcGVyZm9ybWFuY2UsIGl0IGlzIGFsd2F5cyByZXF1aXJlZCB0byB1c2UKK2Bg U1lOQ19TVEFSVGBgIGFuZCBgYFNZTkNfRU5EYGAgYmVmb3JlIGFuZCBhZnRlciwgcmVzcGVjdGl2 ZWx5LCB3aGVuIGFjY2Vzc2luZyB0aGUKK21hcHBlZCBhZGRyZXNzLiBVc2Vyc3BhY2UgY2Fubm90 IHJlbHkgb24gY29oZXJlbnQgYWNjZXNzLCBldmVuIHdoZW4gdGhlcmUKK2FyZSBzeXN0ZW1zIHdo ZXJlIGl0IGp1c3Qgd29ya3Mgd2l0aG91dCBjYWxsaW5nIHRoZXNlIGlvY3Rscy4KKworU3VwcG9y dGluZyBleGlzdGluZyBtbWFwIGludGVyZmFjZXMgaW4gaW1wb3J0ZXJzCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworU2ltaWxhciB0byB0aGUgbW90 aXZhdGlvbiBmb3Iga2VybmVsIGNwdSBhY2Nlc3MgaXQgaXMgYWdhaW4gaW1wb3J0YW50IHRoYXQK K3RoZSB1c2Vyc3BhY2UgY29kZSBvZiBhIGdpdmVuIGltcG9ydGluZyBzdWJzeXN0ZW0gY2FuIHVz ZSB0aGUgc2FtZSBpbnRlcmZhY2VzCit3aXRoIGEgaW1wb3J0ZWQgZG1hLWJ1ZiBidWZmZXIgb2Jq ZWN0IGFzIHdpdGggYSBuYXRpdmUgYnVmZmVyIG9iamVjdC4gVGhpcyBpcworZXNwZWNpYWxseSBp bXBvcnRhbnQgZm9yIGRybSB3aGVyZSB0aGUgdXNlcnNwYWNlIHBhcnQgb2YgY29udGVtcG9yYXJ5 IE9wZW5HTCwKK1gsIGFuZCBvdGhlciBkcml2ZXJzIGlzIGh1Z2UsIGFuZCByZXdvcmtpbmcgdGhl bSB0byB1c2UgYSBkaWZmZXJlbnQgd2F5IHRvCittbWFwIGEgYnVmZmVyIHJhdGhlciBpbnZhc2l2 ZS4KKworVGhlIGFzc3VtcHRpb24gaW4gdGhlIGN1cnJlbnQgZG1hLWJ1ZiBpbnRlcmZhY2VzIGlz IHRoYXQgcmVkaXJlY3RpbmcgdGhlCitpbml0aWFsIG1tYXAgaXMgYWxsIHRoYXQncyBuZWVkZWQu IEEgc3VydmV5IG9mIHNvbWUgb2YgdGhlIGV4aXN0aW5nCitzdWJzeXN0ZW1zIHNob3dzIHRoYXQg bm8gZHJpdmVyIHNlZW1zIHRvIGRvIGFueSBuZWZhcmlvdXMgdGhpbmcgbGlrZSBzeW5jaW5nCit1 cCB3aXRoIG91dHN0YW5kaW5nIGFzeW5jaHJvbm91cyBwcm9jZXNzaW5nIG9uIHRoZSBkZXZpY2Ug b3IgYWxsb2NhdGluZworc3BlY2lhbCByZXNvdXJjZXMgYXQgZmF1bHQgdGltZS4gU28gaG9wZWZ1 bGx5IHRoaXMgaXMgZ29vZCBlbm91Z2gsIHNpbmNlCithZGRpbmcgaW50ZXJmYWNlcyB0byBpbnRl cmNlcHQgcGFnZWZhdWx0cyBhbmQgYWxsb3cgcHRlIHNob290ZG93bnMgd291bGQKK2luY3JlYXNl IHRoZSBjb21wbGV4aXR5IHF1aXRlIGEgYml0LgorCitJbnRlcmZhY2U6CisgICA6YzpmdW5jOmBp bnQgZG1hX2J1Zl9tbWFwKHN0cnVjdCBkbWFfYnVmICosIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAq LCB1bnNpZ25lZCBsb25nKSA8ZG1hX2J1Zl9tbWFwPmAKKworSWYgdGhlIGltcG9ydGluZyBzdWJz eXN0ZW0gc2ltcGx5IHByb3ZpZGVzIGEgc3BlY2lhbC1wdXJwb3NlIG1tYXAgY2FsbCB0byBzZXQK K3VwIGEgbWFwcGluZyBpbiB1c2Vyc3BhY2UsIGNhbGxpbmcgYGBkb19tbWFwYGAgd2l0aCBgYGRt YV9idWYtPmZpbGVgYCB3aWxsIGVxdWFsbHkKK2FjaGlldmUgdGhhdCBmb3IgYSBkbWEtYnVmIG9i amVjdC4KKworSW1wbGVtZW50YXRpb24gbm90ZXMgZm9yIGV4cG9ydGVycworLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitCZWNhdXNlIGRtYS1idWYgYnVmZmVycyBoYXZlIGlu dmFyaWFudCBzaXplIG92ZXIgdGhlaXIgbGlmZXRpbWUsIHRoZSBkbWEtYnVmCitjb3JlIGNoZWNr cyB3aGV0aGVyIGEgdm1hIGlzIHRvbyBsYXJnZSBhbmQgcmVqZWN0cyBzdWNoIG1hcHBpbmdzLiBU aGUKK2V4cG9ydGVyIGhlbmNlIGRvZXMgbm90IG5lZWQgdG8gZHVwbGljYXRlIHRoaXMgY2hlY2su CisKK0JlY2F1c2UgZXhpc3RpbmcgaW1wb3J0aW5nIHN1YnN5c3RlbXMgbWlnaHQgcHJlc3VtZSBj b2hlcmVudCBtYXBwaW5ncyBmb3IKK3VzZXJzcGFjZSwgdGhlIGV4cG9ydGVyIG5lZWRzIHRvIHNl dCB1cCBhIGNvaGVyZW50IG1hcHBpbmcuIElmIHRoYXQncyBub3QKK3Bvc3NpYmxlLCBpdCBuZWVk cyB0byBmYWtlIGNvaGVyZW5jeSBieSBtYW51YWxseSBzaG9vdGluZyBkb3duIHB0ZXMgd2hlbgor bGVhdmluZyB0aGUgY3B1IGRvbWFpbiBhbmQgZmx1c2hpbmcgY2FjaGVzIGF0IGZhdWx0IHRpbWUu IE5vdGUgdGhhdCBhbGwgdGhlCitgYGRtYV9idWZgYCBmaWxlcyBzaGFyZSB0aGUgc2FtZSBhbm9u IGlub2RlLCBoZW5jZSB0aGUgZXhwb3J0ZXIgbmVlZHMgdG8gcmVwbGFjZQordGhlIGBgZG1hX2J1 ZmBgIGZpbGUgc3RvcmVkIGluIGBgdm1hLT52bV9maWxlYGAgd2l0aCBpdCdzIG93biBpZiBwdGUg c2hvb3Rkb3duIGlzCityZXF1aXJlZC4gVGhpcyBpcyBiZWNhdXNlIHRoZSBrZXJuZWwgdXNlcyB0 aGUgdW5kZXJseWluZyBpbm9kZSdzIGFkZHJlc3Nfc3BhY2UKK2ZvciB2bWEgdHJhY2tpbmcgKGFu ZCBoZW5jZSBwdGUgdHJhY2tpbmcgYXQgc2hvb3Rkb3duIHRpbWUgd2l0aAorYGB1bm1hcF9tYXBw aW5nX3JhbmdlYGApLgorCitJZiB0aGUgYWJvdmUgc2hvb3Rkb3duIGRhbmNlIHR1cm5zIG91dCB0 byBiZSB0b28gZXhwZW5zaXZlIGluIGNlcnRhaW4KK3NjZW5hcmlvcywgd2UgY2FuIGV4dGVuZCBk bWEtYnVmIHdpdGggYSBtb3JlIGV4cGxpY2l0IGNhY2hlIHRyYWNraW5nIHNjaGVtZQorZm9yIHVz ZXJzcGFjZSBtYXBwaW5ncy4gQnV0IHRoZSBjdXJyZW50IGFzc3VtcHRpb24gaXMgdGhhdCB1c2lu ZyBtbWFwIGlzCithbHdheXMgYSBzbG93ZXIgcGF0aCwgc28gc29tZSBpbmVmZmljaWVuY2llcyBz aG91bGQgYmUgYWNjZXB0YWJsZS4KKworRXhwb3J0ZXJzIHRoYXQgc2hvb3QgZG93biBtYXBwaW5n cyAoZm9yIGFueSByZWFzb25zKSBzaGFsbCBub3QgZG8gYW55CitzeW5jaHJvbml6YXRpb24gYXQg ZmF1bHQgdGltZSB3aXRoIG91dHN0YW5kaW5nIGRldmljZSBvcGVyYXRpb25zLgorU3luY2hyb25p emF0aW9uIGlzIGFuIG9ydGhvZ29uYWwgaXNzdWUgdG8gc2hhcmluZyB0aGUgYmFja2luZyBzdG9y YWdlIG9mIGEKK2J1ZmZlciBhbmQgaGVuY2Ugc2hvdWxkIG5vdCBiZSBoYW5kbGVkIGJ5IGRtYS1i dWYgaXRzZWxmLiBUaGlzIGlzIGV4cGxpY2l0bHkKK21lbnRpb25lZCBoZXJlIGJlY2F1c2UgbWFu eSBwZW9wbGUgc2VlbSB0byB3YW50IHNvbWV0aGluZyBsaWtlIHRoaXMsIGJ1dCBpZgorZGlmZmVy ZW50IGV4cG9ydGVycyBoYW5kbGUgdGhpcyBkaWZmZXJlbnRseSwgYnVmZmVyIHNoYXJpbmcgY2Fu IGZhaWwgaW4KK2ludGVyZXN0aW5nIHdheXMgZGVwZW5kaW5nIHVwb25nIHRoZSBleHBvcnRlciAo aWYgdXNlcnNwYWNlIHN0YXJ0cyBkZXBlbmRpbmcKK3Vwb24gdGhpcyBpbXBsaWNpdCBzeW5jaHJv bml6YXRpb24pLgorCitPdGhlciBJbnRlcmZhY2VzIEV4cG9zZWQgdG8gVXNlcnNwYWNlIG9uIHRo ZSBkbWEtYnVmIEZECistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisKKyogU2luY2Uga2VybmVsIDMuMTIgdGhlIGRtYS1idWYgRkQgc3VwcG9y dHMgdGhlIGxsc2VlayBzeXN0ZW0gY2FsbCwgYnV0IG9ubHkKKyAgd2l0aCBvZmZzZXQ9MCBhbmQg d2hlbmNlPVNFRUtfRU5EfFNFRUtfU0VULiBTRUVLX1NFVCBpcyBzdXBwb3J0ZWQgdG8gYWxsb3cK KyAgdGhlIHVzdWFsIHNpemUgZGlzY292ZXIgcGF0dGVybiBzaXplID0gU0VFS19FTkQoMCk7IFNF RUtfU0VUKDApLiBFdmVyeSBvdGhlcgorICBsbHNlZWsgb3BlcmF0aW9uIHdpbGwgcmVwb3J0IC1F SU5WQUwuCisKKyAgSWYgbGxzZWVrIG9uIGRtYS1idWYgRkRzIGlzbid0IHN1cHBvcnQgdGhlIGtl cm5lbCB3aWxsIHJlcG9ydCAtRVNQSVBFIGZvciBhbGwKKyAgY2FzZXMuIFVzZXJzcGFjZSBjYW4g dXNlIHRoaXMgdG8gZGV0ZWN0IHN1cHBvcnQgZm9yIGRpc2NvdmVyaW5nIHRoZSBkbWEtYnVmCisg IHNpemUgdXNpbmcgbGxzZWVrLgorCitNaXNjZWxsYW5lb3VzIG5vdGVzCistLS0tLS0tLS0tLS0t LS0tLS0tCisKKyogQW55IGV4cG9ydGVycyBvciB1c2VycyBvZiB0aGUgZG1hLWJ1ZiBidWZmZXIg c2hhcmluZyBmcmFtZXdvcmsgbXVzdCBoYXZlCisgIGEgJ3NlbGVjdCBETUFfU0hBUkVEX0JVRkZF UicgaW4gdGhlaXIgcmVzcGVjdGl2ZSBLY29uZmlncy4KKworKiBJbiBvcmRlciB0byBhdm9pZCBm ZCBsZWFrcyBvbiBleGVjLCB0aGUgRkRfQ0xPRVhFQyBmbGFnIG11c3QgYmUgc2V0CisgIG9uIHRo ZSBmaWxlIGRlc2NyaXB0b3IuICBUaGlzIGlzIG5vdCBqdXN0IGEgcmVzb3VyY2UgbGVhaywgYnV0 IGEKKyAgcG90ZW50aWFsIHNlY3VyaXR5IGhvbGUuICBJdCBjb3VsZCBnaXZlIHRoZSBuZXdseSBl eGVjJ2QgYXBwbGljYXRpb24KKyAgYWNjZXNzIHRvIGJ1ZmZlcnMsIHZpYSB0aGUgbGVha2VkIGZk LCB0byB3aGljaCBpdCBzaG91bGQgb3RoZXJ3aXNlCisgIG5vdCBiZSBwZXJtaXR0ZWQgYWNjZXNz LgorCitUaGUgcHJvYmxlbSB3aXRoIGRvaW5nIHRoaXMgdmlhIGEgc2VwYXJhdGUgZmNudGwoKSBj YWxsLCB2ZXJzdXMgZG9pbmcgaXQKK2F0b21pY2FsbHkgd2hlbiB0aGUgZmQgaXMgY3JlYXRlZCwg aXMgdGhhdCB0aGlzIGlzIGluaGVyZW50bHkgcmFjeSBpbiBhCittdWx0aS10aHJlYWRlZCBhcHAg KFNlZSBgaGVyZSA8aHR0cHM6Ly9sd24ubmV0L0FydGljbGVzLzIzNjQ4Ni8+YF8pLiBUaGUgaXNz dWUKK2lzIG1hZGUgd29yc2Ugd2hlbiBpdCBpcyBsaWJyYXJ5IGNvZGUgb3BlbmluZy9jcmVhdGlu ZyB0aGUgZmlsZSBkZXNjcmlwdG9yLAorYXMgdGhlIGFwcGxpY2F0aW9uIG1heSBub3QgZXZlbiBi ZSBhd2FyZSBvZiB0aGUgZmQncy4KKworVG8gYXZvaWQgdGhpcyBwcm9ibGVtLCB1c2Vyc3BhY2Ug bXVzdCBoYXZlIGEgd2F5IHRvIHJlcXVlc3QgYGBPX0NMT0VYRUNgYAorZmxhZyBiZSBzZXQgd2hl biB0aGUgZG1hLWJ1ZiBmZCBpcyBjcmVhdGVkLiAgU28gYW55IEFQSSBwcm92aWRlZCBieQordGhl IGV4cG9ydGluZyBkcml2ZXIgdG8gY3JlYXRlIGEgZG1hYnVmIGZkIG11c3QgcHJvdmlkZSBhIHdh eSB0byBsZXQKK3VzZXJzcGFjZSBjb250cm9sIHNldHRpbmcgb2YgYGBPX0NMT0VYRUNgYCBmbGFn IHBhc3NlZCBpbiB0byBgYGRtYV9idWZfZmQoKWBgLgorCisqIElmIGFuIGV4cG9ydGVyIG5lZWRz IHRvIG1hbnVhbGx5IGZsdXNoIGNhY2hlcyBhbmQgaGVuY2UgbmVlZHMgdG8gZmFrZQorICBjb2hl cmVuY3kgZm9yIG1tYXAgc3VwcG9ydCwgaXQgbmVlZHMgdG8gYmUgYWJsZSB0byB6YXAgYWxsIHRo ZSBwdGVzIHBvaW50aW5nCisgIGF0IHRoZSBiYWNraW5nIHN0b3JhZ2UuIE5vdyBsaW51eCBtbSBu ZWVkcyBhIHN0cnVjdCBhZGRyZXNzX3NwYWNlIGFzc29jaWF0ZWQKKyAgd2l0aCB0aGUgc3RydWN0 IGZpbGUgc3RvcmVkIGluIGBgdm1hLT52bV9maWxlYGAgdG8gZG8gdGhhdCB3aXRoIHRoZSBmdW5j dGlvbgorICB1bm1hcF9tYXBwaW5nX3JhbmdlLiBCdXQgdGhlIGRtYV9idWYgZnJhbWV3b3JrIG9u bHkgYmFja3MgZXZlcnkgZG1hX2J1ZiBmZAorICB3aXRoIHRoZSBgYGFub25fZmlsZWBgIHN0cnVj dCBmaWxlLCBpLmUuIGFsbCBkbWFfYnVmcyBzaGFyZSB0aGUgc2FtZSBmaWxlLgorCitIZW5jZSBl eHBvcnRlcnMgbmVlZCB0byBzZXR1cCB0aGVpciBvd24gZmlsZSAoYW5kIGFkZHJlc3Nfc3BhY2Up IGFzc29jaWF0aW9uCitieSBzZXR0aW5nIGBgdm1hLT52bV9maWxlYGAgYW5kIGFkanVzdGluZyBg YHZtYS0+dm1fcGdvZmZgYCBpbiB0aGUgYGBkbWFfYnVmYGAgbW1hcAorY2FsbGJhY2suIEluIHRo ZSBzcGVjaWZpYyBjYXNlIG9mIGEgZ2VtIGRyaXZlciB0aGUgZXhwb3J0ZXIgY291bGQgdXNlIHRo ZQorc2htZW0gZmlsZSBhbHJlYWR5IHByb3ZpZGVkIGJ5IGdlbSAoYW5kIHNldCB2bV9wZ29mZiA9 IDApLiBFeHBvcnRlcnMgY2FuIHRoZW4KK3phcCBwdGVzIGJ5IHVubWFwcGluZyB0aGUgY29ycmVz cG9uZGluZyByYW5nZSBvZiB0aGUgc3RydWN0IGFkZHJlc3Nfc3BhY2UKK2Fzc29jaWF0ZWQgd2l0 aCB0aGVpciBvd24gZmlsZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZG1hLWJ1Zi9pbnRy by5yc3QgYi9Eb2N1bWVudGF0aW9uL2RtYS1idWYvaW50cm8ucnN0Cm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNGVjZGJlYTUwZTc1Ci0tLSAvZGV2L251bGwKKysrIGIv RG9jdW1lbnRhdGlvbi9kbWEtYnVmL2ludHJvLnJzdApAQCAtMCwwICsxLDgyIEBACis9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CitCdWZmZXIgU2hhcmluZyBhbmQgU3luY2hyb25p emF0aW9uCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKworSW50cm9kdWN0 aW9uCistLS0tLS0tLS0tLS0KKworVGhlIGRtYS1idWYgc3Vic3lzdGVtIHByb3ZpZGVzIHRoZSBm cmFtZXdvcmsgZm9yIHNoYXJpbmcgYnVmZmVycyBmb3IKK2hhcmR3YXJlIChETUEpIGFjY2VzcyBh Y3Jvc3MgbXVsdGlwbGUgZGV2aWNlIGRyaXZlcnMgYW5kIHN1YnN5c3RlbXMsIGFuZAorZm9yIHN5 bmNocm9uaXppbmcgYXN5bmNocm9ub3VzIGhhcmR3YXJlIGFjY2Vzcy4KKworVGhpcyBpcyB1c2Vk LCBmb3IgZXhhbXBsZSwgYnkgZHJtICJwcmltZSIgbXVsdGktR1BVIHN1cHBvcnQsIGJ1dCBpcyBv ZgorY291cnNlIG5vdCBsaW1pdGVkIHRvIEdQVSB1c2UgY2FzZXMuCisKK1RoZSB0aHJlZSBtYWlu IGNvbXBvbmVudHMgb2YgdGhpcyBhcmU6CisKKyogZG1hLWJ1Zl86IHJlcHJlc2VudHMgYW4gc2df dGFibGUsIGFuZCBpcyBleHBvc2VkIHRvIHVzZXJzcGFjZSBhcyBhIGZpbGUKKyAgZGVzY3JpcHRv ciB0byBhbGxvdyBwYXNzaW5nIGJldHdlZW4gZGV2aWNlcywKKworKiBmZW5jZV86IHdoaWNoIHBy b3ZpZGVzIGEgbWVjaGFuaXNtIHRvIHNpZ25hbCB3aGVuIG9uZSBkZXZpY2UgaGFzIGZpbmlzaGVk CisgIGFjY2VzcywgYW5kCisKKyogcmVzZXJ2YXRpb25fOiBtYW5hZ2VzIHRoZSBzaGFyZWQgb3Ig ZXhjbHVzaXZlIGZlbmNlKHMpIGFzc29jaWF0ZWQgd2l0aCB0aGUKKyAgYnVmZmVyLgorCitQbGVh c2UgcmVmZXIgdG8gOnJlZjpgZG1hLWJ1Zi1ndWlkZWAgZm9yIG1vcmUgZGV0YWlscy4KKworLi4g X2RtYS1idWY6CisKK2RtYS1idWYKK35+fn5+fn4KKworLi4ga2VybmVsLWRvYzo6IGRyaXZlcnMv ZG1hLWJ1Zi9kbWEtYnVmLmMKKyAgIDpleHBvcnQ6CisKKy4uIGtlcm5lbC1kb2M6OiBpbmNsdWRl L2xpbnV4L2RtYS1idWYuaAorICAgOmludGVybmFsOgorCisuLiBfZmVuY2U6CisKK2ZlbmNlCit+ fn5+fgorCisuLiBrZXJuZWwtZG9jOjogZHJpdmVycy9kbWEtYnVmL2ZlbmNlLmMKKyAgIDpleHBv cnQ6CisKKy4uIGtlcm5lbC1kb2M6OiBpbmNsdWRlL2xpbnV4L2ZlbmNlLmgKKyAgIDppbnRlcm5h bDoKKworLi4ga2VybmVsLWRvYzo6IGRyaXZlcnMvZG1hLWJ1Zi9mZW5jZS1hcnJheS5jCisgICA6 ZXhwb3J0OgorCisuLiBrZXJuZWwtZG9jOjogaW5jbHVkZS9saW51eC9mZW5jZS1hcnJheS5oCisg ICA6aW50ZXJuYWw6CisKKy4uIGtlcm5lbC1kb2M6OiBkcml2ZXJzL2RtYS1idWYvc2Vxbm8tZmVu Y2UuYworICAgOmV4cG9ydDoKKworLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUvbGludXgvc2Vxbm8t ZmVuY2UuaAorICAgOmludGVybmFsOgorCisuLiBrZXJuZWwtZG9jOjogZHJpdmVycy9kbWEtYnVm L3N5bmNfZmlsZS5jCisgICA6ZXhwb3J0OgorCisuLiBrZXJuZWwtZG9jOjogaW5jbHVkZS9saW51 eC9zeW5jX2ZpbGUuaAorICAgOmludGVybmFsOgorCisuLiBfcmVzZXJ2YXRpb246CisKK3Jlc2Vy dmF0aW9uCit+fn5+fn5+fn5+fgorCisuLiBrZXJuZWwtZG9jOjogZHJpdmVycy9kbWEtYnVmL3Jl c2VydmF0aW9uLmMKKyAgIDpkb2M6IFJlc2VydmF0aW9uIE9iamVjdCBPdmVydmlldworCisuLiBr ZXJuZWwtZG9jOjogZHJpdmVycy9kbWEtYnVmL3Jlc2VydmF0aW9uLmMKKyAgIDpleHBvcnQ6CisK Ky4uIGtlcm5lbC1kb2M6OiBpbmNsdWRlL2xpbnV4L3Jlc2VydmF0aW9uLmgKKyAgIDppbnRlcm5h bDoKKwpkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSUwppbmRleCAwYmJlNGIx MDVjMzQuLmRkNDIyYzZlNTRmZSAxMDA2NDQKLS0tIGEvTUFJTlRBSU5FUlMKKysrIGIvTUFJTlRB SU5FUlMKQEAgLTM4MzgsNyArMzgzOCw3IEBAIEY6CWRyaXZlcnMvZG1hLWJ1Zi8KIEY6CWluY2x1 ZGUvbGludXgvZG1hLWJ1ZioKIEY6CWluY2x1ZGUvbGludXgvcmVzZXJ2YXRpb24uaAogRjoJaW5j bHVkZS9saW51eC8qZmVuY2UuaAotRjoJRG9jdW1lbnRhdGlvbi9kbWEtYnVmLXNoYXJpbmcudHh0 CitGOglEb2N1bWVudGF0aW9uL2RtYS1idWYvCiBUOglnaXQgZ2l0Oi8vZ2l0LmxpbmFyby5vcmcv cGVvcGxlL3N1bWl0c2Vtd2FsL2xpbnV4LWRtYS1idWYuZ2l0CiAKIFNZTkMgRklMRSBGUkFNRVdP UksKLS0gCjIuNy40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2 ZWwK