From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: [PATCH v2 1/1] cameraif: add ABI for para-virtual camera Date: Tue, 11 Sep 2018 11:29:52 +0300 Message-ID: <20180911082952.23322-2-andr2000@gmail.com> References: <20180911082952.23322-1-andr2000@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1fze3k-0007xn-8R for xen-devel@lists.xenproject.org; Tue, 11 Sep 2018 08:30:08 +0000 Received: by mail-wm0-x241.google.com with SMTP id t25-v6so419086wmi.3 for ; Tue, 11 Sep 2018 01:30:04 -0700 (PDT) In-Reply-To: <20180911082952.23322-1-andr2000@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org, konrad.wilk@oracle.com, jgross@suse.com, boris.ostrovsky@oracle.com, mchehab@kernel.org, linux-media@vger.kernel.org, sakari.ailus@linux.intel.com, koji.matsuoka.xm@renesas.com, hverkuil@xs4all.nl Cc: Oleksandr Andrushchenko List-Id: xen-devel@lists.xenproject.org RnJvbTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVw YW0uY29tPgoKVGhpcyBpcyB0aGUgQUJJIGZvciB0aGUgdHdvIGhhbHZlcyBvZiBhIHBhcmEtdmly dHVhbGl6ZWQKY2FtZXJhIGRyaXZlciB3aGljaCBleHRlbmRzIFhlbidzIHJlYWNoIG11bHRpbWVk aWEgY2FwYWJpbGl0aWVzIGV2ZW4KZmFydGhlciBlbmFibGluZyBpdCBmb3IgdmlkZW8gY29uZmVy ZW5jaW5nLCBJbi1WZWhpY2xlIEluZm90YWlubWVudCwKaGlnaCBkZWZpbml0aW9uIG1hcHMgZXRj LgoKVGhlIGluaXRpYWwgZ29hbCBpcyB0byBzdXBwb3J0IG1vc3QgbmVlZGVkIGZ1bmN0aW9uYWxp dHkgd2l0aCB0aGUKZmluYWwgaWRlYSB0byBtYWtlIGl0IHBvc3NpYmxlIHRvIGV4dGVuZCB0aGUg cHJvdG9jb2wgaWYgbmVlZCBiZToKCjEuIFByb3ZpZGUgbWVhbnMgZm9yIGJhc2UgdmlydHVhbCBk ZXZpY2UgY29uZmlndXJhdGlvbjoKIC0gcGl4ZWwgZm9ybWF0cwogLSByZXNvbHV0aW9ucwogLSBm cmFtZSByYXRlcwoyLiBTdXBwb3J0IGJhc2ljIGNhbWVyYSBjb250cm9sczoKIC0gY29udHJhc3QK IC0gYnJpZ2h0bmVzcwogLSBodWUKIC0gc2F0dXJhdGlvbgozLiBTdXBwb3J0IHN0cmVhbWluZyBj b250cm9sCjQuIFN1cHBvcnQgemVyby1jb3B5aW5nIHVzZS1jYXNlcwoKU2lnbmVkLW9mZi1ieTog T2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVwYW0uY29t PgotLS0KIHhlbi9pbmNsdWRlL3B1YmxpYy9pby9jYW1lcmFpZi5oIHwgMTI2MyArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAxMjYzIGluc2VydGlvbnMoKykK IGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vaW5jbHVkZS9wdWJsaWMvaW8vY2FtZXJhaWYuaAoKZGlm ZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9pby9jYW1lcmFpZi5oIGIveGVuL2luY2x1ZGUv cHVibGljL2lvL2NhbWVyYWlmLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwLi4zOGI5YjM3NDFlNzUKLS0tIC9kZXYvbnVsbAorKysgYi94ZW4vaW5jbHVkZS9wdWJsaWMv aW8vY2FtZXJhaWYuaApAQCAtMCwwICsxLDEyNjMgQEAKKy8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK KyAqIGNhbWVyYWlmLmgKKyAqCisgKiBVbmlmaWVkIGNhbWVyYSBkZXZpY2UgSS9PIGludGVyZmFj ZSBmb3IgWGVuIGd1ZXN0IE9TZXMuCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRl ZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorICogb2Yg dGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNv ZnR3YXJlIiksIHRvCisgKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9u LCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQorICogcmlnaHRzIHRvIHVzZSwgY29w eSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29y CisgKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0 byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRv IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5v dGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICog YWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgor ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0Yg QU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlU RUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hB TEwgVEhFCisgKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5Z IENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNU SU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VU IE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhF UgorICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqIENvcHlyaWdodCAoQykgMjAx OCBFUEFNIFN5c3RlbXMgSW5jLgorICoKKyAqIEF1dGhvcjogT2xla3NhbmRyIEFuZHJ1c2hjaGVu a28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVwYW0uY29tPgorICovCisKKyNpZm5kZWYgX19Y RU5fUFVCTElDX0lPX0NBTUVSQUlGX0hfXworI2RlZmluZSBfX1hFTl9QVUJMSUNfSU9fQ0FNRVJB SUZfSF9fCisKKyNpbmNsdWRlICJyaW5nLmgiCisjaW5jbHVkZSAiLi4vZ3JhbnRfdGFibGUuaCIK KworLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAg ICAgUHJvdG9jb2wgdmVyc2lvbgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisjZGVmaW5l IFhFTkNBTUVSQV9QUk9UT0NPTF9WRVJTSU9OICAgICAiMSIKKworLyoKKyAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgRmVhdHVyZSBhbmQgUGFyYW1ldGVyIE5lZ290 aWF0aW9uCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogRnJvbnQtPmJhY2sgbm90aWZp Y2F0aW9uczogd2hlbiBlbnF1ZXVpbmcgYSBuZXcgcmVxdWVzdCwgc2VuZGluZyBhCisgKiBub3Rp ZmljYXRpb24gY2FuIGJlIG1hZGUgY29uZGl0aW9uYWwgb24geGVuY2FtZXJhX3JlcSAoaS5lLiwg dGhlIGdlbmVyaWMKKyAqIGhvbGQtb2ZmIG1lY2hhbmlzbSBwcm92aWRlZCBieSB0aGUgcmluZyBt YWNyb3MpLiBCYWNrZW5kcyBtdXN0IHNldAorICogeGVuY2FtZXJhX3JlcSBhcHByb3ByaWF0ZWx5 IChlLmcuLCB1c2luZyBSSU5HX0ZJTkFMX0NIRUNLX0ZPUl9SRVFVRVNUUygpKS4KKyAqCisgKiBC YWNrLT5mcm9udCBub3RpZmljYXRpb25zOiB3aGVuIGVucXVldWluZyBhIG5ldyByZXNwb25zZSwg c2VuZGluZyBhCisgKiBub3RpZmljYXRpb24gY2FuIGJlIG1hZGUgY29uZGl0aW9uYWwgb24geGVu Y2FtZXJhX3Jlc3AgKGkuZS4sIHRoZSBnZW5lcmljCisgKiBob2xkLW9mZiBtZWNoYW5pc20gcHJv dmlkZWQgYnkgdGhlIHJpbmcgbWFjcm9zKS4gRnJvbnRlbmRzIG11c3Qgc2V0CisgKiB4ZW5jYW1l cmFfcmVzcCBhcHByb3ByaWF0ZWx5IChlLmcuLCB1c2luZyBSSU5HX0ZJTkFMX0NIRUNLX0ZPUl9S RVNQT05TRVMoKSkuCisgKgorICogVGhlIHR3byBoYWx2ZXMgb2YgYSBwYXJhLXZpcnR1YWwgY2Ft ZXJhIGRyaXZlciB1dGlsaXplIG5vZGVzIHdpdGhpbgorICogWGVuU3RvcmUgdG8gY29tbXVuaWNh dGUgY2FwYWJpbGl0aWVzIGFuZCB0byBuZWdvdGlhdGUgb3BlcmF0aW5nIHBhcmFtZXRlcnMuCisg KiBUaGlzIHNlY3Rpb24gZW51bWVyYXRlcyB0aGVzZSBub2RlcyB3aGljaCByZXNpZGUgaW4gdGhl IHJlc3BlY3RpdmUgZnJvbnQgYW5kCisgKiBiYWNrZW5kIHBvcnRpb25zIG9mIFhlblN0b3JlLCBm b2xsb3dpbmcgdGhlIFhlbkJ1cyBjb252ZW50aW9uLgorICoKKyAqIEFsbCBkYXRhIGluIFhlblN0 b3JlIGlzIHN0b3JlZCBhcyBzdHJpbmdzLiBOb2RlcyBzcGVjaWZ5aW5nIG51bWVyaWMKKyAqIHZh bHVlcyBhcmUgZW5jb2RlZCBpbiBkZWNpbWFsLiBJbnRlZ2VyIHZhbHVlIHJhbmdlcyBsaXN0ZWQg YmVsb3cgYXJlCisgKiBleHByZXNzZWQgYXMgZml4ZWQgc2l6ZWQgaW50ZWdlciB0eXBlcyBjYXBh YmxlIG9mIHN0b3JpbmcgdGhlIGNvbnZlcnNpb24KKyAqIG9mIGEgcHJvcGVybHkgZm9ybWF0dGVk IG5vZGUgc3RyaW5nLCB3aXRob3V0IGxvc3Mgb2YgaW5mb3JtYXRpb24uCisgKgorICoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAgICAgICAgICBFeGFtcGxlIGNvbmZpZ3Vy YXRpb24KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBUaGlzIGlzIGFuIGV4YW1wbGUg b2YgYmFja2VuZCBhbmQgZnJvbnRlbmQgY29uZmlndXJhdGlvbjoKKyAqCisgKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBCYWNrZW5kIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgKgorICogL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQvdmNhbWVyYS8xLzAvZnJv bnRlbmQtaWQgPSAiMSIKKyAqIC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZjYW1lcmEvMS8wL2Zy b250ZW5kID0gIi9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmNhbWVyYS8wIgorICogL2xvY2FsL2Rv bWFpbi8wL2JhY2tlbmQvdmNhbWVyYS8xLzAvc3RhdGUgPSAiNCIKKyAqIC9sb2NhbC9kb21haW4v MC9iYWNrZW5kL3ZjYW1lcmEvMS8wL3ZlcnNpb25zID0gIjEsMiIKKyAqCisgKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGcm9udGVuZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgKgorICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92Y2FtZXJhLzAvYmFja2Vu ZC1pZCA9ICIwIgorICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92Y2FtZXJhLzAvYmFja2VuZCA9 ICIvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92Y2FtZXJhLzEiCisgKiAvbG9jYWwvZG9tYWluLzEv ZGV2aWNlL3ZjYW1lcmEvMC9zdGF0ZSA9ICI0IgorICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92 Y2FtZXJhLzAvdmVyc2lvbiA9ICIxIgorICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92Y2FtZXJh LzAvYmUtYWxsb2MgPSAiMSIKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRGV2 aWNlIDAgY29uZmlndXJhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogL2xv Y2FsL2RvbWFpbi8xL2RldmljZS92Y2FtZXJhLzAvY29udHJvbHMgPSAiY29udHJhc3QsaHVlIgor ICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92Y2FtZXJhLzAvZm9ybWF0cy9ZVVlWLzY0MHg0ODAv ZnJhbWUtcmF0ZXMgPSAiMzAvMSwxNS8xIgorICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92Y2Ft ZXJhLzAvZm9ybWF0cy9ZVVlWLzE5MjB4MTA4MC9mcmFtZS1yYXRlcyA9ICIxNS8yIgorICogL2xv Y2FsL2RvbWFpbi8xL2RldmljZS92Y2FtZXJhLzAvZm9ybWF0cy9CR1JBLzY0MHg0ODAvZnJhbWUt cmF0ZXMgPSAiMTUvMSwxNS8yIgorICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92Y2FtZXJhLzAv Zm9ybWF0cy9CR1JBLzEyMDB4NzIwL2ZyYW1lLXJhdGVzID0gIjE1LzIiCisgKiAvbG9jYWwvZG9t YWluLzEvZGV2aWNlL3ZjYW1lcmEvMC91bmlxdWUtaWQgPSAiMCIKKyAqIC9sb2NhbC9kb21haW4v MS9kZXZpY2UvdmNhbWVyYS8wL3JlcS1yaW5nLXJlZiA9ICIyODMyIgorICogL2xvY2FsL2RvbWFp bi8xL2RldmljZS92Y2FtZXJhLzAvcmVxLWV2ZW50LWNoYW5uZWwgPSAiMTUiCisgKiAvbG9jYWwv ZG9tYWluLzEvZGV2aWNlL3ZjYW1lcmEvMC9ldnQtcmluZy1yZWYgPSAiMzg3IgorICogL2xvY2Fs L2RvbWFpbi8xL2RldmljZS92Y2FtZXJhLzAvZXZ0LWV2ZW50LWNoYW5uZWwgPSAiMTYiCisgKgor ICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIERldmljZSAxIGNvbmZpZ3VyYXRpb24gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmNh bWVyYS8xL2NvbnRyb2xzID0gImJyaWdodG5lc3Msc2F0dXJhdGlvbixodWUiCisgKiAvbG9jYWwv ZG9tYWluLzEvZGV2aWNlL3ZjYW1lcmEvMS9mb3JtYXRzL1lVWVYvNjQweDQ4MC9mcmFtZS1yYXRl cyA9ICIzMC8xLDE1LzIiCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZjYW1lcmEvMS9mb3Jt YXRzL1lVWVYvMTkyMHgxMDgwL2ZyYW1lLXJhdGVzID0gIjE1LzIiCisgKiAvbG9jYWwvZG9tYWlu LzEvZGV2aWNlL3ZjYW1lcmEvMS91bmlxdWUtaWQgPSAiMSIKKyAqIC9sb2NhbC9kb21haW4vMS9k ZXZpY2UvdmNhbWVyYS8xL3JlcS1yaW5nLXJlZiA9ICIyODMzIgorICogL2xvY2FsL2RvbWFpbi8x L2RldmljZS92Y2FtZXJhLzEvcmVxLWV2ZW50LWNoYW5uZWwgPSAiMTciCisgKiAvbG9jYWwvZG9t YWluLzEvZGV2aWNlL3ZjYW1lcmEvMS9ldnQtcmluZy1yZWYgPSAiMzg4IgorICogL2xvY2FsL2Rv bWFpbi8xL2RldmljZS92Y2FtZXJhLzEvZXZ0LWV2ZW50LWNoYW5uZWwgPSAiMTgiCisgKgorICoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFja2Vu ZCBYZW5CdXMgTm9kZXMKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tIFByb3RvY29sIHZlcnNpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgKgorICogdmVyc2lvbnMKKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDxzdHJp bmc+CisgKgorICogICAgICBMaXN0IG9mIFhFTkNBTUVSQV9MSVNUX1NFUEFSQVRPUiBzZXBhcmF0 ZWQgcHJvdG9jb2wgdmVyc2lvbnMgc3VwcG9ydGVkCisgKiAgICAgIGJ5IHRoZSBiYWNrZW5kLiBG b3IgZXhhbXBsZSAiMSwyLDMiLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEZyb250ZW5kIFhlbkJ1cyBOb2RlcworICoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKgorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQWRkcmVz c2luZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBkb20taWQKKyAq ICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50MTZfdD4KKyAqCisgKiAgICAgIERvbWFpbiBpZGVu dGlmaWVyLgorICoKKyAqIGRldi1pZAorICogICAgICBWYWx1ZXM6ICAgICAgICAgPHVpbnQxNl90 PgorICoKKyAqICAgICAgRGV2aWNlIGlkZW50aWZpZXIuCisgKgorICogICAgICAvbG9jYWwvZG9t YWluLzxkb20taWQ+L2RldmljZS92Y2FtZXJhLzxkZXYtaWQ+Ly4uLgorICoKKyAqLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJvdG9jb2wgdmVyc2lvbiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAqCisgKiB2ZXJzaW9uCisgKiAgICAgIFZhbHVlczogICAgICAgICA8c3Ry aW5nPgorICoKKyAqICAgICAgUHJvdG9jb2wgdmVyc2lvbiwgY2hvc2VuIGFtb25nIHRoZSBvbmVz IHN1cHBvcnRlZCBieSB0aGUgYmFja2VuZC4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0gQmFja2VuZCBidWZmZXIgYWxsb2NhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg KgorICogYmUtYWxsb2MKKyAqICAgICAgVmFsdWVzOiAgICAgICAgICIwIiwgIjEiCisgKgorICog ICAgICBJZiB2YWx1ZSBpcyBzZXQgdG8gIjEiLCB0aGVuIGJhY2tlbmQgd2lsbCBiZSB0aGUgYnVm ZmVyCisgKiAgICAgIHByb3ZpZGVyL2FsbG9jYXRvciBmb3IgdGhpcyBkb21haW4gZHVyaW5nIFhF TkNBTUVSQV9PUF9CVUZfQ1JFQVRFCisgKiAgICAgIG9wZXJhdGlvbi4KKyAqICAgICAgSWYgdmFs dWUgaXMgbm90ICIxIiBvciBvbWl0dGVkIGZyb250ZW5kIG11c3QgYWxsb2NhdGUgYnVmZmVycyBp dHNlbGYuCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENhbWVyYSBzZXR0 aW5ncyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHVuaXF1ZS1pZAorICog ICAgICBWYWx1ZXM6ICAgICAgICAgPHN0cmluZz4KKyAqCisgKiAgICAgIEFmdGVyIGRldmljZSBp bnN0YW5jZSBpbml0aWFsaXphdGlvbiBlYWNoIGNhbWVyYSBpcyBhc3NpZ25lZCBhCisgKiAgICAg IHVuaXF1ZSBJRCwgc28gaXQgY2FuIGJlIGlkZW50aWZpZWQgYnkgdGhlIGJhY2tlbmQgYnkgdGhp cyBJRC4KKyAqICAgICAgVGhpcyBjYW4gYmUgVVVJRCBvciBzdWNoLgorICoKKyAqIGNvbnRyb2xz CisgKiAgICAgIFZhbHVlczogICAgICAgICA8bGlzdCBvZiBzdHJpbmc+CisgKgorICogICAgICBM aXN0IG9mIHN1cHBvcnRlZCBjYW1lcmEgY29udHJvbHMgc2VwYXJhdGVkIGJ5IFhFTkNBTUVSQV9M SVNUX1NFUEFSQVRPUi4KKyAqICAgICAgQ2FtZXJhIGNvbnRyb2xzIGFyZSBleHByZXNzZWQgYXMg YSBsaXN0IG9mIHN0cmluZyB2YWx1ZXMgdy9vIGFueQorICogICAgICBvcmRlcmluZyByZXF1aXJl bWVudC4KKyAqCisgKiBmb3JtYXRzCisgKiAgICAgIFZhbHVlczogICAgICAgICA8Zm9ybWF0LCBj aGFyWzRdPgorICoKKyAqICAgICAgRm9ybWF0cyBhcmUgb3JnYW5pemVkIGFzIGEgc2V0IG9mIGRp cmVjdG9yaWVzIG9uZSBwZXIgZWFjaAorICogICAgICBzdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0LiBU aGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IGlzIHRoZQorICogICAgICBjb3JyZXNwb25kaW5nIEZP VVJDQyBzdHJpbmcgbGFiZWwuIFRoZSBuZXh0IGxldmVsIG9mCisgKiAgICAgIHRoZSBkaXJlY3Rv cnkgdW5kZXIgPGZvcm1hdHM+IHJlcHJlc2VudHMgc3VwcG9ydGVkIHJlc29sdXRpb25zLgorICoK KyAqIHJlc29sdXRpb24KKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx3aWR0aCwgdWludDMyX3Q+ eDxoZWlnaHQsIHVpbnQzMl90PgorICoKKyAqICAgICAgUmVzb2x1dGlvbnMgYXJlIG9yZ2FuaXpl ZCBhcyBhIHNldCBvZiBkaXJlY3RvcmllcyBvbmUgcGVyIGVhY2gKKyAqICAgICAgc3VwcG9ydGVk IHJlc29sdXRpb24gdW5kZXIgY29ycmVzcG9uZGluZyA8Zm9ybWF0cz4gZGlyZWN0b3J5LgorICog ICAgICBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IGlzIHRoZSBzdXBwb3J0ZWQgd2lkdGggYW5k IGhlaWdodAorICogICAgICBvZiB0aGUgY2FtZXJhIHJlc29sdXRpb24gaW4gcGl4ZWxzLgorICoK KyAqIGZyYW1lLXJhdGVzCisgKiAgICAgIFZhbHVlczogICAgICAgICA8bnVtZXJhdG9yLCB1aW50 MzJfdD4vPGRlbm9taW5hdG9yLCB1aW50MzJfdD4KKyAqCisgKiAgICAgIExpc3Qgb2YgWEVOQ0FN RVJBX0ZSQU1FX1JBVEVfU0VQQVJBVE9SIHNlcGFyYXRlZCBzdXBwb3J0ZWQgZnJhbWUgcmF0ZXMK KyAqICAgICAgb2YgdGhlIGNhbWVyYSBleHByZXNzZWQgYXMgbnVtZXJhdG9yIGFuZCBkZW5vbWlu YXRvciBvZiB0aGUKKyAqICAgICAgY29ycmVzcG9uZGluZyBmcmFtZSByYXRlLgorICoKKyAqLS0t LS0tLS0tLS0tLS0tLS0tLSBDYW1lcmEgUmVxdWVzdCBUcmFuc3BvcnQgUGFyYW1ldGVycyAtLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBUaGlzIGNvbW11bmljYXRpb24gcGF0aCBpcyB1c2Vk IHRvIGRlbGl2ZXIgcmVxdWVzdHMgZnJvbSBmcm9udGVuZCB0byBiYWNrZW5kCisgKiBhbmQgZ2V0 IHRoZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNlcyBmcm9tIGJhY2tlbmQgdG8gZnJvbnRlbmQsCisg KiBzZXQgdXAgcGVyIHZpcnR1YWwgY2FtZXJhIGRldmljZS4KKyAqCisgKiByZXEtZXZlbnQtY2hh bm5lbAorICogICAgICBWYWx1ZXM6ICAgICAgICAgPHVpbnQzMl90PgorICoKKyAqICAgICAgVGhl IGlkZW50aWZpZXIgb2YgdGhlIFhlbiBjYW1lcmEncyBjb250cm9sIGV2ZW50IGNoYW5uZWwKKyAq ICAgICAgdXNlZCB0byBzaWduYWwgYWN0aXZpdHkgaW4gdGhlIHJpbmcgYnVmZmVyLgorICoKKyAq IHJlcS1yaW5nLXJlZgorICogICAgICBWYWx1ZXM6ICAgICAgICAgPHVpbnQzMl90PgorICoKKyAq ICAgICAgVGhlIFhlbiBncmFudCByZWZlcmVuY2UgZ3JhbnRpbmcgcGVybWlzc2lvbiBmb3IgdGhl IGJhY2tlbmQgdG8gbWFwCisgKiAgICAgIGEgc29sZSBwYWdlIG9mIGNhbWVyYSdzIGNvbnRyb2wg cmluZyBidWZmZXIuCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLSBDYW1lcmEgRXZlbnQgVHJh bnNwb3J0IFBhcmFtZXRlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIFRoaXMgY29t bXVuaWNhdGlvbiBwYXRoIGlzIHVzZWQgdG8gZGVsaXZlciBhc3luY2hyb25vdXMgZXZlbnRzIGZy b20gYmFja2VuZAorICogdG8gZnJvbnRlbmQsIHNldCB1cCBwZXIgdmlydHVhbCBjYW1lcmEgZGV2 aWNlLgorICoKKyAqIGV2dC1ldmVudC1jaGFubmVsCisgKiAgICAgIFZhbHVlczogICAgICAgICA8 dWludDMyX3Q+CisgKgorICogICAgICBUaGUgaWRlbnRpZmllciBvZiB0aGUgWGVuIGNhbWVyYSdz IGV2ZW50IGNoYW5uZWwKKyAqICAgICAgdXNlZCB0byBzaWduYWwgYWN0aXZpdHkgaW4gdGhlIHJp bmcgYnVmZmVyLgorICoKKyAqIGV2dC1yaW5nLXJlZgorICogICAgICBWYWx1ZXM6ICAgICAgICAg PHVpbnQzMl90PgorICoKKyAqICAgICAgVGhlIFhlbiBncmFudCByZWZlcmVuY2UgZ3JhbnRpbmcg cGVybWlzc2lvbiBmb3IgdGhlIGJhY2tlbmQgdG8gbWFwCisgKiAgICAgIGEgc29sZSBwYWdlIG9m IGNhbWVyYSdzIGV2ZW50IHJpbmcgYnVmZmVyLgorICovCisKKy8qCisgKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVEFURSBESUFHUkFNUwor ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIFRvb2wgc3RhY2sgY3JlYXRlcyBmcm9udCBh bmQgYmFjayBzdGF0ZSBub2RlcyB3aXRoIGluaXRpYWwgc3RhdGUKKyAqIFhlbmJ1c1N0YXRlSW5p dGlhbGlzaW5nLgorICogVG9vbCBzdGFjayBjcmVhdGVzIGFuZCBzZXRzIHVwIGZyb250ZW5kIGNh bWVyYSBjb25maWd1cmF0aW9uCisgKiBub2RlcyBwZXIgZG9tYWluLgorICoKKyAqLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTm9ybWFsIGZsb3cgLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAqCisgKiBGcm9udCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg QmFjaworICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAgID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqIFhlbmJ1c1N0YXRlSW5pdGlhbGlzaW5nICAg ICAgICAgICAgICBYZW5idXNTdGF0ZUluaXRpYWxpc2luZworICogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBvIFF1ZXJ5IGJhY2tlbmQgZGV2aWNlIGlkZW50aWZpY2F0aW9u CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS4KKyAqICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyBPcGVuIGFuZCB2YWxpZGF0ZSBi YWNrZW5kIGRldmljZS4KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFYKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYZW5idXNTdGF0ZUlu aXRXYWl0CisgKgorICogbyBRdWVyeSBmcm9udGVuZCBjb25maWd1cmF0aW9uCisgKiBvIEFsbG9j YXRlIGFuZCBpbml0aWFsaXplCisgKiAgIGV2ZW50IGNoYW5uZWxzIHBlciBjb25maWd1cmVkCisg KiAgIGNhbWVyYS4KKyAqIG8gUHVibGlzaCB0cmFuc3BvcnQgcGFyYW1ldGVycworICogICB0aGF0 IHdpbGwgYmUgaW4gZWZmZWN0IGR1cmluZworICogICB0aGlzIGNvbm5lY3Rpb24uCisgKiAgICAg ICAgICAgICAgfAorICogICAgICAgICAgICAgIHwKKyAqICAgICAgICAgICAgICBWCisgKiBYZW5i dXNTdGF0ZUluaXRpYWxpc2VkCisgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBvIFF1ZXJ5IGZyb250ZW5kIHRyYW5zcG9ydCBwYXJhbWV0ZXJzLgorICogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvIENvbm5lY3QgdG8gdGhlIGV2ZW50IGNo YW5uZWxzLgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK KyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVgorICog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhlbmJ1c1N0YXRlQ29ubmVjdGVk CisgKgorICogIG8gQ3JlYXRlIGFuZCBpbml0aWFsaXplIE9TCisgKiAgICB2aXJ0dWFsIGNhbWVy YSBhcyBwZXIKKyAqICAgIGNvbmZpZ3VyYXRpb24uCisgKiAgICAgICAgICAgICAgfAorICogICAg ICAgICAgICAgIHwKKyAqICAgICAgICAgICAgICBWCisgKiBYZW5idXNTdGF0ZUNvbm5lY3RlZAor ICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYZW5idXNTdGF0ZVVu a25vd24KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYZW5idXNTdGF0 ZUNsb3NlZAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhlbmJ1c1N0 YXRlQ2xvc2luZworICogbyBSZW1vdmUgdmlydHVhbCBjYW1lcmEgZGV2aWNlCisgKiBvIFJlbW92 ZSBldmVudCBjaGFubmVscworICogICAgICAgICAgICAgIHwKKyAqICAgICAgICAgICAgICB8Cisg KiAgICAgICAgICAgICAgVgorICogWGVuYnVzU3RhdGVDbG9zZWQKKyAqCisgKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0gUmVjb3ZlcnkgZmxvdyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgKgorICogSW4gY2FzZSBvZiBmcm9udGVuZCB1bnJlY292ZXJhYmxlIGVycm9y cyBiYWNrZW5kIGhhbmRsZXMgdGhhdCBhcworICogaWYgZnJvbnRlbmQgZ29lcyBpbnRvIHRoZSBY ZW5idXNTdGF0ZUNsb3NlZCBzdGF0ZS4KKyAqCisgKiBJbiBjYXNlIG9mIGJhY2tlbmQgdW5yZWNv dmVyYWJsZSBlcnJvcnMgZnJvbnRlbmQgdHJpZXMgcmVtb3ZpbmcKKyAqIHRoZSB2aXJ0dWFsaXpl ZCBkZXZpY2UuIElmIHRoaXMgaXMgcG9zc2libGUgYXQgdGhlIG1vbWVudCBvZiBlcnJvciwKKyAq IHRoZW4gZnJvbnRlbmQgZ29lcyBpbnRvIHRoZSBYZW5idXNTdGF0ZUluaXRpYWxpc2luZyBzdGF0 ZSBhbmQgaXMgcmVhZHkgZm9yCisgKiBuZXcgY29ubmVjdGlvbiB3aXRoIGJhY2tlbmQuIElmIHRo ZSB2aXJ0dWFsaXplZCBkZXZpY2UgaXMgc3RpbGwgaW4gdXNlIGFuZAorICogY2Fubm90IGJlIHJl bW92ZWQsIHRoZW4gZnJvbnRlbmQgZ29lcyBpbnRvIHRoZSBYZW5idXNTdGF0ZVJlY29uZmlndXJp bmcgc3RhdGUKKyAqIHVudGlsIGVpdGhlciB0aGUgdmlydHVhbGl6ZWQgZGV2aWNlIGlzIHJlbW92 ZWQgb3IgYmFja2VuZCBpbml0aWF0ZXMgYSBuZXcKKyAqIGNvbm5lY3Rpb24uIE9uIHRoZSB2aXJ0 dWFsaXplZCBkZXZpY2UgcmVtb3ZhbCBmcm9udGVuZCBnb2VzIGludG8gdGhlCisgKiBYZW5idXNT dGF0ZUluaXRpYWxpc2luZyBzdGF0ZS4KKyAqCisgKiBOb3RlIG9uIFhlbmJ1c1N0YXRlUmVjb25m aWd1cmluZyBzdGF0ZSBvZiB0aGUgZnJvbnRlbmQ6IGlmIGJhY2tlbmQgaGFzCisgKiB1bnJlY292 ZXJhYmxlIGVycm9ycyB0aGVuIGZyb250ZW5kIGNhbm5vdCBzZW5kIHJlcXVlc3RzIHRvIHRoZSBi YWNrZW5kCisgKiBhbmQgdGh1cyBjYW5ub3QgcHJvdmlkZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSB2 aXJ0dWFsaXplZCBkZXZpY2UgYW55bW9yZS4KKyAqIEFmdGVyIGJhY2tlbmQgaXMgYmFjayB0byBu b3JtYWwgdGhlIHZpcnR1YWxpemVkIGRldmljZSBtYXkgc3RpbGwgaG9sZCBzb21lCisgKiBzdGF0 ZTogY29uZmlndXJhdGlvbiBpbiB1c2UsIGFsbG9jYXRlZCBidWZmZXJzLCBjbGllbnQgYXBwbGlj YXRpb24gc3RhdGUgZXRjLgorICogSW4gbW9zdCBjYXNlcywgdGhpcyB3aWxsIHJlcXVpcmUgZnJv bnRlbmQgdG8gaW1wbGVtZW50IGNvbXBsZXggcmVjb3ZlcnkKKyAqIHJlY29ubmVjdCBsb2dpYy4g SW5zdGVhZCwgYnkgZ29pbmcgaW50byBYZW5idXNTdGF0ZVJlY29uZmlndXJpbmcgc3RhdGUsCisg KiBmcm9udGVuZCB3aWxsIG1ha2Ugc3VyZSBubyBuZXcgY2xpZW50cyBvZiB0aGUgdmlydHVhbGl6 ZWQgZGV2aWNlIGFyZQorICogYWNjZXB0ZWQsIGFsbG93IGV4aXN0aW5nIGNsaWVudChzKSB0byBl eGl0IGdyYWNlZnVsbHkgYnkgc2lnbmFsaW5nIGVycm9yCisgKiBzdGF0ZSBldGMuCisgKiBPbmNl IGFsbCB0aGUgY2xpZW50cyBhcmUgZ29uZSBmcm9udGVuZCBjYW4gcmVpbml0aWFsaXplIHRoZSB2 aXJ0dWFsaXplZAorICogZGV2aWNlIGFuZCBnZXQgaW50byBYZW5idXNTdGF0ZUluaXRpYWxpc2lu ZyBzdGF0ZSBhZ2FpbiBzaWduYWxpbmcgdGhlCisgKiBiYWNrZW5kIHRoYXQgYSBuZXcgY29ubmVj dGlvbiBjYW4gYmUgbWFkZS4KKyAqCisgKiBUaGVyZSBhcmUgbXVsdGlwbGUgY29uZGl0aW9ucyBw b3NzaWJsZSB1bmRlciB3aGljaCBmcm9udGVuZCB3aWxsIGdvIGZyb20KKyAqIFhlbmJ1c1N0YXRl UmVjb25maWd1cmluZyBpbnRvIFhlbmJ1c1N0YXRlSW5pdGlhbGlzaW5nLCBzb21lIG9mIHRoZW0g YXJlIE9TCisgKiBzcGVjaWZpYy4gRm9yIGV4YW1wbGU6CisgKiAxLiBUaGUgdW5kZXJseWluZyBP UyBmcmFtZXdvcmsgbWF5IHByb3ZpZGUgY2FsbGJhY2tzIHRvIHNpZ25hbCB0aGF0IHRoZSBsYXN0 CisgKiAgICBjbGllbnQgb2YgdGhlIHZpcnR1YWxpemVkIGRldmljZSBoYXMgZ29uZSBhbmQgdGhl IGRldmljZSBjYW4gYmUgcmVtb3ZlZAorICogMi4gRnJvbnRlbmQgY2FuIHNjaGVkdWxlIGEgZGVm ZXJyZWQgd29yayAodGltZXIvdGFza2xldC93b3JrcXVldWUpCisgKiAgICB0byBwZXJpb2RpY2Fs bHkgY2hlY2sgaWYgdGhpcyBpcyB0aGUgcmlnaHQgdGltZSB0byByZS10cnkgcmVtb3ZhbCBvZgor ICogICAgdGhlIHZpcnR1YWxpemVkIGRldmljZS4KKyAqIDMuIEJ5IGFueSBvdGhlciBtZWFucy4K KyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUkVRVUVTVCBDT0RFUworICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisjZGVmaW5lIFhF TkNBTUVSQV9PUF9DT05GSUdfU0VUICAgICAgICAweDAwCisjZGVmaW5lIFhFTkNBTUVSQV9PUF9D T05GSUdfR0VUICAgICAgICAweDAxCisjZGVmaW5lIFhFTkNBTUVSQV9PUF9CVUZfUkVRVUVTVCAg ICAgICAweDAyCisjZGVmaW5lIFhFTkNBTUVSQV9PUF9CVUZfQ1JFQVRFICAgICAgICAweDAzCisj ZGVmaW5lIFhFTkNBTUVSQV9PUF9CVUZfREVTVFJPWSAgICAgICAweDA0CisjZGVmaW5lIFhFTkNB TUVSQV9PUF9CVUZfUVVFVUUgICAgICAgICAweDA1CisjZGVmaW5lIFhFTkNBTUVSQV9PUF9CVUZf REVRVUVVRSAgICAgICAweDA2CisjZGVmaW5lIFhFTkNBTUVSQV9PUF9DVFJMX0VOVU0gICAgICAg ICAweDA3CisjZGVmaW5lIFhFTkNBTUVSQV9PUF9DVFJMX1NFVCAgICAgICAgICAweDA4CisjZGVm aW5lIFhFTkNBTUVSQV9PUF9DVFJMX0dFVCAgICAgICAgICAweDA5CisjZGVmaW5lIFhFTkNBTUVS QV9PUF9TVFJFQU1fU1RBUlQgICAgICAweDBhCisjZGVmaW5lIFhFTkNBTUVSQV9PUF9TVFJFQU1f U1RPUCAgICAgICAweDBiCisKKyNkZWZpbmUgWEVOQ0FNRVJBX0NUUkxfQlJJR0hUTkVTUyAgICAg IDAKKyNkZWZpbmUgWEVOQ0FNRVJBX0NUUkxfQ09OVFJBU1QgICAgICAgIDEKKyNkZWZpbmUgWEVO Q0FNRVJBX0NUUkxfU0FUVVJBVElPTiAgICAgIDIKKyNkZWZpbmUgWEVOQ0FNRVJBX0NUUkxfSFVF ICAgICAgICAgICAgIDMKKworLyogTnVtYmVyIG9mIHN1cHBvcnRlZCBjb250cm9scy4gKi8KKyNk ZWZpbmUgWEVOQ0FNRVJBX01BWF9DVFJMICAgICAgICAgICAgIDQKKworLyogQ29udHJvbCBpcyBy ZWFkLW9ubHkuICovCisjZGVmaW5lIFhFTkNBTUVSQV9DVFJMX0ZMR19STyAgICAgICAgICAoMSA8 PCAwKQorLyogQ29udHJvbCBpcyB3cml0ZS1vbmx5LiAqLworI2RlZmluZSBYRU5DQU1FUkFfQ1RS TF9GTEdfV08gICAgICAgICAgKDEgPDwgMSkKKy8qIENvbnRyb2wncyB2YWx1ZSBpcyB2b2xhdGls ZS4gKi8KKyNkZWZpbmUgWEVOQ0FNRVJBX0NUUkxfRkxHX1ZPTEFUSUxFICAgICgxIDw8IDIpCisK Ky8qIFN1cHBvcnRlZCBjb2xvciBzcGFjZXMuICovCisjZGVmaW5lIFhFTkNBTUVSQV9DT0xPUlNQ QUNFX1NNUFRFMTcwTSAwCisjZGVmaW5lIFhFTkNBTUVSQV9DT0xPUlNQQUNFX1JFQzcwOSAgICAx CisjZGVmaW5lIFhFTkNBTUVSQV9DT0xPUlNQQUNFX1NSR0IgICAgICAyCisjZGVmaW5lIFhFTkNB TUVSQV9DT0xPUlNQQUNFX0FET0JFUkdCICAzCisjZGVmaW5lIFhFTkNBTUVSQV9DT0xPUlNQQUNF X0JUMjAyMCAgICA0CisjZGVmaW5lIFhFTkNBTUVSQV9DT0xPUlNQQUNFX0RDSV9QMyAgICA1Cisj ZGVmaW5lIFhFTkNBTUVSQV9DT0xPUlNQQUNFX1JBVyAgICAgICA2CisKKy8qIENvbG9yIHNwYWNl IHRyYW5zZmVyIGZ1bmN0aW9uLiAqLworI2RlZmluZSBYRU5DQU1FUkFfWEZFUl9GVU5DXzcwOSAg ICAgICAgMAorI2RlZmluZSBYRU5DQU1FUkFfWEZFUl9GVU5DX1NSR0IgICAgICAgMQorI2RlZmlu ZSBYRU5DQU1FUkFfWEZFUl9GVU5DX0FET0JFUkdCICAgMgorI2RlZmluZSBYRU5DQU1FUkFfWEZF Ul9GVU5DX05PTkUgICAgICAgMworI2RlZmluZSBYRU5DQU1FUkFfWEZFUl9GVU5DX0RDSV9QMyAg ICAgNAorI2RlZmluZSBYRU5DQU1FUkFfWEZFUl9GVU5DX1NNUFRFMjA4NCAgNQorCisvKiBDb2xv ciBzcGFjZSBZ4oCZQ2JDciBlbmNvZGluZy4gKi8KKyNkZWZpbmUgWEVOQ0FNRVJBX1lDQkNSX0VO Q182MDEgICAgICAgICAgICAgIDAKKyNkZWZpbmUgWEVOQ0FNRVJBX1lDQkNSX0VOQ183MDkgICAg ICAgICAgICAgIDEKKyNkZWZpbmUgWEVOQ0FNRVJBX1lDQkNSX0VOQ19YVjYwMSAgICAgICAgICAg IDIKKyNkZWZpbmUgWEVOQ0FNRVJBX1lDQkNSX0VOQ19YVjcwOSAgICAgICAgICAgIDMKKyNkZWZp bmUgWEVOQ0FNRVJBX1lDQkNSX0VOQ19CVDIwMjAgICAgICAgICAgIDQKKyNkZWZpbmUgWEVOQ0FN RVJBX1lDQkNSX0VOQ19CVDIwMjBfQ09OU1RfTFVNIDUKKworLyogUXVhbnRpemF0aW9uIHJhbmdl LiAqLworI2RlZmluZSBYRU5DQU1FUkFfUVVBTlRJWkFUSU9OX0ZVTExfUkFOR0UgICAgMAorI2Rl ZmluZSBYRU5DQU1FUkFfUVVBTlRJWkFUSU9OX0xJTV9SQU5HRSAgICAgMQorCisvKgorICoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFVkVO VCBDT0RFUworICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisjZGVmaW5lIFhFTkNBTUVSQV9F VlRfRlJBTUVfQVZBSUwgICAgICAweDAwCisjZGVmaW5lIFhFTkNBTUVSQV9FVlRfQ09ORklHX0NI QU5HRSAgICAweDAxCisjZGVmaW5lIFhFTkNBTUVSQV9FVlRfQ1RSTF9DSEFOR0UgICAgICAweDAy CisKKy8qIFJlc29sdXRpb24gaGFzIGNoYW5nZWQuICovCisjZGVmaW5lIFhFTkNBTUVSQV9FVlRf Q0ZHX0ZMR19SRVNPTCAgICAoMSA8PCAwKQorCisvKgorICoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgor ICogICAgICAgICAgICAgICBYRU5TVE9SRSBGSUVMRCBBTkQgUEFUSCBOQU1FIFNUUklOR1MsIEhF TFBFUlMKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworI2RlZmluZSBYRU5DQU1FUkFfRFJJ VkVSX05BTUUgICAgICAgICAgInZjYW1lcmEiCisKKyNkZWZpbmUgWEVOQ0FNRVJBX0xJU1RfU0VQ QVJBVE9SICAgICAgICIsIgorI2RlZmluZSBYRU5DQU1FUkFfUkVTT0xVVElPTl9TRVBBUkFUT1Ig IngiCisjZGVmaW5lIFhFTkNBTUVSQV9GUkFDVElPTl9TRVBBUkFUT1IgICAiLyIKKworI2RlZmlu ZSBYRU5DQU1FUkFfRklFTERfQkVfVkVSU0lPTlMgICAgInZlcnNpb25zIgorI2RlZmluZSBYRU5D QU1FUkFfRklFTERfRkVfVkVSU0lPTiAgICAgInZlcnNpb24iCisjZGVmaW5lIFhFTkNBTUVSQV9G SUVMRF9SRVFfUklOR19SRUYgICAicmVxLXJpbmctcmVmIgorI2RlZmluZSBYRU5DQU1FUkFfRklF TERfUkVRX0NIQU5ORUwgICAgInJlcS1ldmVudC1jaGFubmVsIgorI2RlZmluZSBYRU5DQU1FUkFf RklFTERfRVZUX1JJTkdfUkVGICAgImV2dC1yaW5nLXJlZiIKKyNkZWZpbmUgWEVOQ0FNRVJBX0ZJ RUxEX0VWVF9DSEFOTkVMICAgICJldnQtZXZlbnQtY2hhbm5lbCIKKyNkZWZpbmUgWEVOQ0FNRVJB X0ZJRUxEX0NPTlRST0xTICAgICAgICJjb250cm9scyIKKyNkZWZpbmUgWEVOQ0FNRVJBX0ZJRUxE X0ZPUk1BVFMgICAgICAgICJmb3JtYXRzIgorI2RlZmluZSBYRU5DQU1FUkFfRklFTERfRlJBTUVf UkFURVMgICAgImZyYW1lLXJhdGVzIgorI2RlZmluZSBYRU5DQU1FUkFfRklFTERfQkVfQUxMT0Mg ICAgICAgImJlLWFsbG9jIgorI2RlZmluZSBYRU5DQU1FUkFfRklFTERfVU5JUVVFX0lEICAgICAg InVuaXF1ZS1pZCIKKworI2RlZmluZSBYRU5DQU1FUkFfQ1RSTF9CUklHSFRORVNTX1NUUiAgImJy aWdodG5lc3MiCisjZGVmaW5lIFhFTkNBTUVSQV9DVFJMX0NPTlRSQVNUX1NUUiAgICAiY29udHJh c3QiCisjZGVmaW5lIFhFTkNBTUVSQV9DVFJMX1NBVFVSQVRJT05fU1RSICAic2F0dXJhdGlvbiIK KyNkZWZpbmUgWEVOQ0FNRVJBX0NUUkxfSFVFX1NUUiAgICAgICAgICJodWUiCisKKy8qIE1heGlt dW0gbnVtYmVyIG9mIGJ1ZmZlciBwbGFuZXMgc3VwcG9ydGVkLiAqLworI2RlZmluZSBYRU5DQU1F UkFfTUFYX1BMQU5FICAgICAgICAgICAgNAorCisvKgorICoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgor ICogICAgICAgICAgICAgICAgICAgICAgICAgIFNUQVRVUyBSRVRVUk4gQ09ERVMKKyAqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioKKyAqCisgKiBTdGF0dXMgcmV0dXJuIGNvZGUgaXMgemVybyBvbiBzdWNj ZXNzIGFuZCAtWEVOX0VYWCBvbiBmYWlsdXJlLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK KyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXNzdW1wdGlvbnMKKyAqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKKyAqCisgKiAtIHVzYWdlIG9mIGdyYW50IHJlZmVyZW5jZSAwIGFzIGludmFs aWQgZ3JhbnQgcmVmZXJlbmNlOgorICogICBncmFudCByZWZlcmVuY2UgMCBpcyB2YWxpZCwgYnV0 IG5ldmVyIGV4cG9zZWQgdG8gYSBQViBkcml2ZXIsCisgKiAgIGJlY2F1c2Ugb2YgdGhlIGZhY3Qg aXQgaXMgYWxyZWFkeSBpbiB1c2UvcmVzZXJ2ZWQgYnkgdGhlIFBWIGNvbnNvbGUuCisgKiAtIGFs bCByZWZlcmVuY2VzIGluIHRoaXMgZG9jdW1lbnQgdG8gcGFnZSBzaXplcyBtdXN0IGJlIHRyZWF0 ZWQKKyAqICAgYXMgcGFnZXMgb2Ygc2l6ZSBYRU5fUEFHRV9TSVpFIHVubGVzcyBvdGhlcndpc2Ug bm90ZWQuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgRGVzY3JpcHRpb24g b2YgdGhlIHByb3RvY29sIGJldHdlZW4gZnJvbnRlbmQgYW5kIGJhY2tlbmQgZHJpdmVyCisgKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCisgKgorICogVGhlIHR3byBoYWx2ZXMgb2YgYSBQYXJhLXZpcnR1 YWwgY2FtZXJhIGRyaXZlciBjb21tdW5pY2F0ZSB3aXRoCisgKiBlYWNoIG90aGVyIHVzaW5nIHNo YXJlZCBwYWdlcyBhbmQgZXZlbnQgY2hhbm5lbHMuCisgKiBTaGFyZWQgcGFnZSBjb250YWlucyBh IHJpbmcgd2l0aCByZXF1ZXN0L3Jlc3BvbnNlIHBhY2tldHMuCisgKgorICogQWxsIHJlc2VydmVk IGZpZWxkcyBpbiB0aGUgc3RydWN0dXJlcyBiZWxvdyBtdXN0IGJlIDAuCisgKgorICogRm9yIGFs bCByZXF1ZXN0L3Jlc3BvbnNlL2V2ZW50IHBhY2tldHM6CisgKiAgIC0gZnJhbWUgcmF0ZSBwYXJh bWV0ZXIgaXMgcmVwcmVzZW50ZWQgYXMgYSBwYWlyIG9mIDQgb2N0ZXQgbG9uZworICogICAgIG51 bWVyYXRvciBhbmQgZGVub21pbmF0b3I6CisgKiAgICAgICAtIGZyYW1lX3JhdGVfbnVtZXIgLSB1 aW50MzJfdCwgbnVtZXJhdG9yIG9mIHRoZSBmcmFtZSByYXRlCisgKiAgICAgICAtIGZyYW1lX3Jh dGVfZGVub20gLSB1aW50MzJfdCwgZGVub21pbmF0b3Igb2YgdGhlIGZyYW1lIHJhdGUKKyAqICAg ICBUaGUgY29ycmVzcG9uZGluZyBmcmFtZSByYXRlIChIeikgaXMgY2FsY3VsYXRlZCBhczoKKyAq ICAgICAgIGZyYW1lX3JhdGUgPSBmcmFtZV9yYXRlX251bWVyIC8gZnJhbWVfcmF0ZV9kZW5vbQor ICogICAtIGJ1ZmZlciBpbmRleCBpcyBhIHplcm8gYmFzZWQgaW5kZXggb2YgdGhlIGJ1ZmZlci4g TXVzdCBiZSBsZXNzIHRoYW4KKyAqICAgICB0aGUgdmFsdWUgb2YgWEVOQ0FNRVJBX09QX0NPTkZJ R19TRVQubnVtX2J1ZnMgcmVzcG9uc2U6CisgKiAgICAgICAtIGluZGV4IC0gdWludDhfdCwgaW5k ZXggb2YgdGhlIGJ1ZmZlci4KKyAqCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tIFJlcXVlc3RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAq IEFsbCByZXF1ZXN0IHBhY2tldHMgaGF2ZSB0aGUgc2FtZSBsZW5ndGggKDY0IG9jdGV0cykuCisg KiBBbGwgcmVxdWVzdCBwYWNrZXRzIGhhdmUgY29tbW9uIGhlYWRlcjoKKyAqICAgICAgICAgMCAg ICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgMyAgICAgICAg b2N0ZXQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgIGlkICAgICAgICAgICAg ICAgIHwgICAgb3BlcmF0aW9uICAgfCAgIHJlc2VydmVkICAgICB8IDQKKyAqICstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t KworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8IDgKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogICBpZCAtIHVpbnQxNl90 LCBwcml2YXRlIGd1ZXN0IHZhbHVlLCBlY2hvZWQgaW4gcmVzcG9uc2UuCisgKiAgIG9wZXJhdGlv biAtIHVpbnQ4X3QsIG9wZXJhdGlvbiBjb2RlLCBYRU5DQU1FUkFfT1BfWFhYLgorICoKKyAqCisg KiBSZXF1ZXN0IHRvIHNldCBjb25maWd1cmF0aW9uIC0gcmVxdWVzdCB0byBzZXQgdGhlIGNvbmZp Z3VyYXRpb24vbW9kZQorICogb2YgdGhlIGNhbWVyYToKKyAqICAgICAgICAgMCAgICAgICAgICAg ICAgICAxICAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKKyAq ICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgIGlkICAgICAgICAgICAgICAgIHwgX09Q X0NPTkZJR19TRVQgfCAgIHJlc2VydmVkICAgICB8IDQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8IDgKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwaXhlbCBmb3JtYXQgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEyCisgKiArLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAxNgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgMjAKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29sb3JzcGFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDI0CisgKiArLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhmZXJfZnVuYyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAyOAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB5Y2Jjcl9lbmMgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgMzIKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICBx dWFudGl6YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICB8IDM2CisgKiArLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsX2FzcF9yYXRpb19udW1lciAgICAg ICAgICAgICAgICAgICAgICAgfCA0MAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAg ICAgICAgICAgICBkaXNwbF9hc3BfcmF0aW9fZGVub20gICAgICAgICAgICAgICAgICAgICAgIHwg NDQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVf cmF0ZV9udW1lciAgICAgICAgICAgICAgICAgICAgICAgICB8IDQ4CisgKiArLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsK KyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lX3JhdGVfZGVub20gICAgICAgICAg ICAgICAgICAgICAgICAgfCA1MgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNTYK KyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKworICogfC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98CisgKiArLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCA2NAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKgorICogcGl4ZWxfZm9ybWF0IC0gdWlu dDMyX3QsIHBpeGVsIGZvcm1hdCB0byBiZSB1c2VkLCBGT1VSQ0MgY29kZS4KKyAqIHdpZHRoIC0g dWludDMyX3QsIHdpZHRoIGluIHBpeGVscy4KKyAqIGhlaWdodCAtIHVpbnQzMl90LCBoZWlnaHQg aW4gcGl4ZWxzLgorICogY29sb3JzcGFjZSAtIHVpbnQzMl90LCB0aGlzIHN1cHBsZW1lbnRzIHBp eGVsX2Zvcm1hdCBwYXJhbWV0ZXIsCisgKiAgIG9uZSBvZiB0aGUgWEVOQ0FNRVJBX0NPTE9SU1BB Q0VfWFhYLgorICogeGZlcl9mdW5jIC0gdWludDMyX3QsIHRoaXMgc3VwcGxlbWVudHMgY29sb3Jz cGFjZSBwYXJhbWV0ZXIsCisgKiAgIG9uZSBvZiB0aGUgWEVOQ0FNRVJBX1hGRVJfRlVOQ19YWFgu CisgKiB5Y2Jjcl9lbmMgLSB1aW50MzJfdCwgdGhpcyBzdXBwbGVtZW50cyBjb2xvcnNwYWNlIHBh cmFtZXRlciwKKyAqICAgb25lIG9mIHRoZSBYRU5DQU1FUkFfWUNCQ1JfRU5DX1hYWC4KKyAqIHF1 YW50aXphdGlvbiAtIHVpbnQzMl90LCB0aGlzIHN1cHBsZW1lbnRzIGNvbG9yc3BhY2UgcGFyYW1l dGVyLAorICogICBvbmUgb2YgdGhlIFhFTkNBTUVSQV9RVUFOVElaQVRJT05fWFhYLgorICogZGlz cGxfYXNwX3JhdGlvX251bWVyIC0gdWludDMyX3QsIG51bWVyYXRvciBvZiB0aGUgZGlzcGxheSBh c3BlY3QgcmF0aW8uCisgKiBkaXNwbF9hc3BfcmF0aW9fZGVub20gLSB1aW50MzJfdCwgZGVub21p bmF0b3Igb2YgdGhlIGRpc3BsYXkgYXNwZWN0IHJhdGlvLgorICogZnJhbWVfcmF0ZV9udW1lciAt IHVpbnQzMl90LCBudW1lcmF0b3Igb2YgdGhlIGZyYW1lIHJhdGUuCisgKiBmcmFtZV9yYXRlX2Rl bm9tIC0gdWludDMyX3QsIGRlbm9taW5hdG9yIG9mIHRoZSBmcmFtZSByYXRlLgorICoKKyAqIFNl ZSByZXNwb25zZSBmb3JtYXQgZm9yIHRoaXMgcmVxdWVzdC4KKyAqCisgKiBOb3RlczoKKyAqICAt IGZyb250ZW5kIG11c3QgY2hlY2sgdGhlIGNvcnJlc3BvbmRpbmcgcmVzcG9uc2UgaW4gb3JkZXIg dG8gc2VlCisgKiAgICBpZiB0aGUgdmFsdWVzIHJlcG9ydGVkIGJhY2sgYnkgdGhlIGJhY2tlbmQg ZG8gbWF0Y2ggdGhlIGRlc2lyZWQgb25lcworICogICAgYW5kIGNhbiBiZSBhY2NlcHRlZC4KKyAq ICAtIGZyb250ZW5kIG1heSBzZW5kIG11bHRpcGxlIFhFTkNBTUVSQV9PUF9DT05GSUdfU0VUIHJl cXVlc3RzIGJlZm9yZQorICogICAgc2VuZGluZyBYRU5DQU1FUkFfT1BfU1RSRUFNX1NUQVJUIHJl cXVlc3QgdG8gdXBkYXRlIG9yIHR1bmUgdGhlCisgKiAgICBjb25maWd1cmF0aW9uLgorICovCitz dHJ1Y3QgeGVuY2FtZXJhX2NvbmZpZyB7CisgICAgdWludDMyX3QgcGl4ZWxfZm9ybWF0OworICAg IHVpbnQzMl90IHdpZHRoOworICAgIHVpbnQzMl90IGhlaWdodDsKKyAgICB1aW50MzJfdCBjb2xv cnNwYWNlOworICAgIHVpbnQzMl90IHhmZXJfZnVuYzsKKyAgICB1aW50MzJfdCB5Y2Jjcl9lbmM7 CisgICAgdWludDMyX3QgcXVhbnRpemF0aW9uOworICAgIHVpbnQzMl90IGRpc3BsX2FzcF9yYXRp b19udW1lcjsKKyAgICB1aW50MzJfdCBkaXNwbF9hc3BfcmF0aW9fZGVub207CisgICAgdWludDMy X3QgZnJhbWVfcmF0ZV9udW1lcjsKKyAgICB1aW50MzJfdCBmcmFtZV9yYXRlX2Rlbm9tOworfTsK KworLyoKKyAqIFJlcXVlc3QgY3VycmVudCBjb25maWd1cmF0aW9uIG9mIHRoZSBjYW1lcmE6Cisg KiAgICAgICAgIDAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgMiAgICAgICAgICAg ICAgIDMgICAgICAgIG9jdGV0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICBp ZCAgICAgICAgICAgICAgICB8IF9PUF9DT05GSUdfR0VUIHwgICByZXNlcnZlZCAgICAgfCA0Cisg KiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVk ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA4CisgKiArLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvfAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNjQKKyAqICstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKworICoKKyAqIFNlZSByZXNwb25zZSBmb3JtYXQgZm9yIHRoaXMgcmVxdWVzdC4KKyAq CisgKgorICogUmVxdWVzdCBudW1iZXIgb2YgYnVmZmVycyB0byBiZSB1c2VkOgorICogICAgICAg ICAwICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAzICAg ICAgICBvY3RldAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgaWQgICAgICAg ICAgICAgICAgfCBfT1BfQlVGX1JFUVVFU1R8ICAgcmVzZXJ2ZWQgICAgIHwgNAorICogKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgOAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgIG51bV9i dWZzICAgIHwgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAg IHwgMTIKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE2CisgKiArLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSsKKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvfAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNjQK KyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKworICoKKyAqIG51bV9idWZzIC0gdWludDhfdCwgZGVzaXJlZCBudW1i ZXIgb2YgYnVmZmVycyB0byBiZSB1c2VkLgorICoKKyAqIFNlZSByZXNwb25zZSBmb3JtYXQgZm9y IHRoaXMgcmVxdWVzdC4KKyAqCisgKiBOb3RlczoKKyAqICAtIGZyb250ZW5kIG11c3QgY2hlY2sg dGhlIGNvcnJlc3BvbmRpbmcgcmVzcG9uc2UgaW4gb3JkZXIgdG8gc2VlCisgKiAgICBpZiB0aGUg dmFsdWVzIHJlcG9ydGVkIGJhY2sgYnkgdGhlIGJhY2tlbmQgZG8gbWF0Y2ggdGhlIGRlc2lyZWQg b25lcworICogICAgYW5kIGNhbiBiZSBhY2NlcHRlZC4KKyAqICAtIGZyb250ZW5kIG1heSBzZW5k IG11bHRpcGxlIFhFTkNBTUVSQV9PUF9CVUZfUkVRVUVTVCByZXF1ZXN0cyBiZWZvcmUKKyAqICAg IHNlbmRpbmcgWEVOQ0FNRVJBX09QX1NUUkVBTV9TVEFSVCByZXF1ZXN0IHRvIHVwZGF0ZSBvciB0 dW5lIHRoZQorICogICAgY29uZmlndXJhdGlvbi4KKyAqLworc3RydWN0IHhlbmNhbWVyYV9idWZf cmVxdWVzdCB7CisgICAgdWludDhfdCBudW1fYnVmczsKK307CisKKy8qCisgKiBSZXF1ZXN0IGNh bWVyYSBidWZmZXIgY3JlYXRpb246CisgKiAgICAgICAgIDAgICAgICAgICAgICAgICAgMSAgICAg ICAgICAgICAgICAgMiAgICAgICAgICAgICAgIDMgICAgICAgIG9jdGV0CisgKiArLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSsKKyAqIHwgICAgICAgICAgICAgICBpZCAgICAgICAgICAgICAgICB8IF9PUF9CVUZfQ1JFQVRF IHwgICByZXNlcnZlZCAgICAgfCA0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA4 CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICBpbmRleCAgICAgfCAgICAgICAgICAgICAgICAg ICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgfCAxMgorICogKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisg KiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JlZl9kaXJlY3RvcnkgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgMTYKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIwCisg KiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSsKKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgNjQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICoKKyAqIEFuIGF0dGVtcHQgdG8gY3JlYXRl IG11bHRpcGxlIGJ1ZmZlcnMgd2l0aCB0aGUgc2FtZSBpbmRleCBpcyBhbiBlcnJvci4KKyAqIGlu ZGV4IGNhbiBiZSByZS11c2VkIGFmdGVyIGRlc3Ryb3lpbmcgdGhlIGNvcnJlc3BvbmRpbmcgY2Ft ZXJhIGJ1ZmZlci4KKyAqCisgKiBpbmRleCAtIHVpbnQ4X3QsIGluZGV4IG9mIHRoZSBidWZmZXIg dG8gYmUgY3JlYXRlZC4KKyAqIGdyZWZfZGlyZWN0b3J5IC0gZ3JhbnRfcmVmX3QsIGEgcmVmZXJl bmNlIHRvIHRoZSBmaXJzdCBzaGFyZWQgcGFnZQorICogICBkZXNjcmliaW5nIHNoYXJlZCBidWZm ZXIgcmVmZXJlbmNlcy4gVGhlIHNpemUgb2YgdGhlIGJ1ZmZlciBpcyBlcXVhbCB0bworICogICBY RU5DQU1FUkFfT1BfR0VUX0JVRl9ERVRBSUxTLnNpemUgcmVzcG9uc2UuIEF0IGxlYXN0IG9uZSBw YWdlIGV4aXN0cy4gSWYKKyAqICAgc2hhcmVkIGJ1ZmZlciBzaXplIGV4Y2VlZHMgd2hhdCBjYW4g YmUgYWRkcmVzc2VkIGJ5IHRoaXMgc2luZ2xlIHBhZ2UsCisgKiAgIHRoZW4gcmVmZXJlbmNlIHRv IHRoZSBuZXh0IHNoYXJlZCBwYWdlIG11c3QgYmUgc3VwcGxpZWQgKHNlZQorICogICBncmVmX2Rp cl9uZXh0X3BhZ2UgYmVsb3cpLgorICoKKyAqIElmIFhFTkNBTUVSQV9GSUVMRF9CRV9BTExPQyBj b25maWd1cmF0aW9uIGVudHJ5IGlzIHNldCwgdGhlbiBiYWNrZW5kIHdpbGwKKyAqIGFsbG9jYXRl IHRoZSBidWZmZXIgd2l0aCB0aGUgcGFyYW1ldGVycyBwcm92aWRlZCBpbiB0aGlzIHJlcXVlc3Qg YW5kIHBhZ2UKKyAqIGRpcmVjdG9yeSBpcyBoYW5kbGVkIGFzIGZvbGxvd3M6CisgKiAgIEZyb250 ZW5kIG9uIHJlcXVlc3Q6CisgKiAgICAgLSBhbGxvY2F0ZXMgcGFnZXMgZm9yIHRoZSBkaXJlY3Rv cnkgKGdyZWZfZGlyZWN0b3J5LAorICogICAgICAgZ3JlZl9kaXJfbmV4dF9wYWdlKHMpCisgKiAg ICAgLSBncmFudHMgcGVybWlzc2lvbnMgZm9yIHRoZSBwYWdlcyBvZiB0aGUgZGlyZWN0b3J5IHRv IHRoZSBiYWNrZW5kCisgKiAgICAgLSBzZXRzIGdyZWZfZGlyX25leHRfcGFnZSBmaWVsZHMKKyAq ICAgQmFja2VuZCBvbiByZXNwb25zZToKKyAqICAgICAtIGdyYW50cyBwZXJtaXNzaW9ucyBmb3Ig dGhlIHBhZ2VzIG9mIHRoZSBidWZmZXIgYWxsb2NhdGVkIHRvCisgKiAgICAgICB0aGUgZnJvbnRl bmQKKyAqICAgICAtIGZpbGxzIGluIHBhZ2UgZGlyZWN0b3J5IHdpdGggZ3JhbnQgcmVmZXJlbmNl cworICogICAgICAgKGdyZWZbXSBpbiBzdHJ1Y3QgeGVuY2FtZXJhX3BhZ2VfZGlyZWN0b3J5KQor ICovCitzdHJ1Y3QgeGVuY2FtZXJhX2J1Zl9jcmVhdGVfcmVxIHsKKyAgICB1aW50OF90IGluZGV4 OworICAgIHVpbnQ4X3QgcmVzZXJ2ZWRbM107CisgICAgZ3JhbnRfcmVmX3QgZ3JlZl9kaXJlY3Rv cnk7Cit9OworCisvKgorICogU2hhcmVkIHBhZ2UgZm9yIFhFTkNBTUVSQV9PUF9CVUZfQ1JFQVRF IGJ1ZmZlciBkZXNjcmlwdG9yIChncmVmX2RpcmVjdG9yeSBpbgorICogdGhlIHJlcXVlc3QpIGVt cGxveXMgYSBsaXN0IG9mIHBhZ2VzLCBkZXNjcmliaW5nIGFsbCBwYWdlcyBvZiB0aGUgc2hhcmVk CisgKiBkYXRhIGJ1ZmZlcjoKKyAqICAgICAgICAgMCAgICAgICAgICAgICAgICAxICAgICAgICAg ICAgICAgICAyICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKKyAqICstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwor ICogfCAgICAgICAgICAgICAgICAgICAgICAgIGdyZWZfZGlyX25leHRfcGFnZSAgICAgICAgICAg ICAgICAgICAgICAgICB8IDQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGdyZWZbMF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDgKKyAq ICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKworICogfC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBncmVmW2ldICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCBpKjQrOAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKKyAqICstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JlZltOIC0gMV0gICAg ICAgICAgICAgICAgICAgICAgICAgICB8IE4qNCs4CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqCisgKiBn cmVmX2Rpcl9uZXh0X3BhZ2UgLSBncmFudF9yZWZfdCwgcmVmZXJlbmNlIHRvIHRoZSBuZXh0IHBh Z2UgZGVzY3JpYmluZworICogICBwYWdlIGRpcmVjdG9yeS4gTXVzdCBiZSAwIGlmIHRoZXJlIGFy ZSBubyBtb3JlIHBhZ2VzIGluIHRoZSBsaXN0LgorICogZ3JlZltpXSAtIGdyYW50X3JlZl90LCBy ZWZlcmVuY2UgdG8gYSBzaGFyZWQgcGFnZSBvZiB0aGUgYnVmZmVyCisgKiAgIGFsbG9jYXRlZCBh dCBYRU5DQU1FUkFfT1BfQlVGX0NSRUFURS4KKyAqCisgKiBOdW1iZXIgb2YgZ3JhbnRfcmVmX3Qg ZW50cmllcyBpbiB0aGUgd2hvbGUgcGFnZSBkaXJlY3RvcnkgaXMgbm90CisgKiBwYXNzZWQsIGJ1 dCBpbnN0ZWFkIGNhbiBiZSBjYWxjdWxhdGVkIGFzOgorICogICBudW1fZ3JlZnNfdG90YWwgPSAo WEVOQ0FNRVJBX09QX0JVRl9SRVFVRVNULnNpemUgKyBYRU5fUEFHRV9TSVpFIC0gMSkgLworICog ICAgICAgWEVOX1BBR0VfU0laRQorICovCitzdHJ1Y3QgeGVuY2FtZXJhX3BhZ2VfZGlyZWN0b3J5 IHsKKyAgICBncmFudF9yZWZfdCBncmVmX2Rpcl9uZXh0X3BhZ2U7CisgICAgZ3JhbnRfcmVmX3Qg Z3JlZlsxXTsgLyogVmFyaWFibGUgbGVuZ3RoICovCit9OworCisvKgorICogUmVxdWVzdCBidWZm ZXIgZGVzdHJ1Y3Rpb24gLSBkZXN0cm95IGEgcHJldmlvdXNseSBhbGxvY2F0ZWQgY2FtZXJhIGJ1 ZmZlcjoKKyAqICAgICAgICAgMCAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAyICAg ICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAg ICAgICAgIGlkICAgICAgICAgICAgICAgIHwgX09QX0JVRl9ERVNUUk9ZfCAgIHJlc2VydmVkICAg ICB8IDQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDgKKyAqICstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t KworICogfCAgICAgIGluZGV4ICAgICB8ICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAg ICAgICAgICAgICAgICAgICB8IDEyCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAx NgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rCisgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKKyAqICstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICog fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IDY0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqCisgKiBpbmRleCAtIHVpbnQ4X3Qs IGluZGV4IG9mIHRoZSBidWZmZXIgdG8gYmUgZGVzdHJveWVkLgorICoKKyAqCisgKiBSZXF1ZXN0 IHF1ZXVlaW5nIG9mIHRoZSBidWZmZXIgZm9yIGJhY2tlbmQgdXNlOgorICogICAgICAgICAwICAg ICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAzICAgICAgICBv Y3RldAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgaWQgICAgICAgICAgICAg ICAgfCBfT1BfQlVGX1FVRVVFICB8ICAgcmVzZXJ2ZWQgICAgIHwgNAorICogKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r CisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgOAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgaW5kZXggICAg IHwgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgIHwgMTIK KyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2 ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE2CisgKiArLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAq IHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvfAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNjQKKyAqICst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKworICoKKyAqIE5vdGVzOgorICogIC0gZnJvbnRlbmRzIG11c3Qgbm90IGFjY2Vz cyB0aGUgYnVmZmVyIGNvbnRlbnQgYWZ0ZXIgdGhpcyByZXF1ZXN0IHVudGlsCisgKiAgICByZXNw b25zZSB0byBYRU5DQU1FUkFfT1BfQlVGX0RFUVVFVUUgaGFzIGJlZW4gcmVjZWl2ZWQuCisgKiAg LSBidWZmZXJzIG11c3QgYmUgcXVldWVkIHRvIHRoZSBiYWNrZW5kIGJlZm9yZSBkZXN0cm95aW5n IHRoZW0gd2l0aAorICogICAgWEVOQ0FNRVJBX09QX0JVRl9ERVNUUk9ZLgorICoKKyAqIGluZGV4 IC0gdWludDhfdCwgaW5kZXggb2YgdGhlIGJ1ZmZlciB0byBiZSBxdWV1ZWQuCisgKgorICoKKyAq IFJlcXVlc3QgZGVxdWV1ZWluZyBvZiB0aGUgYnVmZmVyIGZvciBmcm9udGVuZCB1c2U6CisgKiAg ICAgICAgIDAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAg IDMgICAgICAgIG9jdGV0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICBpZCAg ICAgICAgICAgICAgICB8X09QX0JVRl9ERVFVRVVFIHwgICByZXNlcnZlZCAgICAgfCA0CisgKiAr LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA4CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAg ICBpbmRleCAgICAgfCAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAg ICAgICAgfCAxMgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTYKKyAqICstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKworICogfC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCA2NAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKgorICogTm90ZXM6CisgKiAgLSBmcm9udGVuZCBpcyBh bGxvd2VkIHRvIGFjY2VzcyB0aGUgYnVmZmVyIGNvbnRlbnQgYWZ0ZXIgdGhlIGNvcnJlc3BvbmRp bmcKKyAqICAgIHJlc3BvbnNlIHRvIHRoaXMgcmVxdWVzdC4KKyAqCisgKiBpbmRleCAtIHVpbnQ4 X3QsIGluZGV4IG9mIHRoZSBidWZmZXIgdG8gYmUgcXVldWVkLgorICoKKyAqCisgKiBSZXF1ZXN0 IGNhbWVyYSBjb250cm9sIGRldGFpbHM6CisgKiAgICAgICAgIDAgICAgICAgICAgICAgICAgMSAg ICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgIDMgICAgICAgIG9jdGV0CisgKiArLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSsKKyAqIHwgICAgICAgICAgICAgICBpZCAgICAgICAgICAgICAgICB8IF9PUF9DVFJMX0VO VU0gIHwgICByZXNlcnZlZCAgICAgfCA0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICBpbmRl eCAgICAgfCAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAg fCAxMgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTYKKyAqICstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t KworICogfC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC98CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA2NAor ICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rCisgKgorICogU2VlIHJlc3BvbnNlIGZvcm1hdCBmb3IgdGhpcyByZXF1 ZXN0LgorICoKKyAqIGluZGV4IC0gdWludDhfdCwgaW5kZXggb2YgdGhlIGNvbnRyb2wgdG8gYmUg cXVlcmllZC4KKyAqLworc3RydWN0IHhlbmNhbWVyYV9pbmRleCB7CisgICAgdWludDhfdCBpbmRl eDsKK307CisKKy8qCisgKiBSZXF1ZXN0IGNhbWVyYSBjb250cm9sIGNoYW5nZToKKyAqICAgICAg ICAgMCAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgMyAg ICAgICAgb2N0ZXQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgIGlkICAgICAg ICAgICAgICAgIHwgIF9PUF9TRVRfQ1RSTCAgfCAgIHJlc2VydmVkICAgICB8IDQKKyAqICstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKworICogfCAgICAgICB0eXBlICAgICB8ICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2 ZWQgICAgICAgICAgICAgICAgICAgICB8IDgKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IDEyCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNgorICogKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSBsb3cgMzItYml0ICAgICAg ICAgICAgICAgICAgICAgICAgIHwgMjAKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAg ICAgICAgICAgICAgICAgdmFsdWUgaGlnaCAzMi1iaXQgICAgICAgICAgICAgICAgICAgICAgICB8 IDI0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl c2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyOAorICogKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r CisgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL3wKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDY0Cisg KiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSsKKyAqCisgKiB0eXBlIC0gdWludDhfdCwgdHlwZSBvZiB0aGUgY29udHJv bCwgb25lIG9mIHRoZSBYRU5DQU1FUkFfQ1RSTF9YWFguCisgKiB2YWx1ZSAtIGludDY0X3QsIG5l dyB2YWx1ZSBvZiB0aGUgY29udHJvbC4KKyAqLworc3RydWN0IHhlbmNhbWVyYV9jdHJsX3ZhbHVl IHsKKyAgICB1aW50OF90IHR5cGU7CisgICAgdWludDhfdCByZXNlcnZlZFs3XTsKKyAgICBpbnQ2 NF90IHZhbHVlOworfTsKKworLyoKKyAqIFJlcXVlc3QgY2FtZXJhIGNvbnRyb2wgc3RhdGU6Cisg KiAgICAgICAgIDAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgMiAgICAgICAgICAg ICAgIDMgICAgICAgIG9jdGV0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICBp ZCAgICAgICAgICAgICAgICB8ICBfT1BfR0VUX0NUUkwgIHwgICByZXNlcnZlZCAgICAgfCA0Cisg KiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgdHlwZSAgICAgfCAgICAgICAgICAgICAgICAgICAg IHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgfCA4CisgKiArLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAxMgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKKyAqICstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IDY0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqCisgKiBTZWUg cmVzcG9uc2UgZm9ybWF0IGZvciB0aGlzIHJlcXVlc3QuCisgKgorICogdHlwZSAtIHVpbnQ4X3Qs IHR5cGUgb2YgdGhlIGNvbnRyb2wsIG9uZSBvZiB0aGUgWEVOQ0FNRVJBX0NUUkxfWFhYLgorICov CitzdHJ1Y3QgeGVuY2FtZXJhX2dldF9jdHJsX3JlcSB7CisgICAgdWludDhfdCB0eXBlOworfTsK KworLyoKKyAqIFJlcXVlc3QgY2FtZXJhIGNhcHR1cmUgc3RyZWFtIHN0YXJ0OgorICogICAgICAg ICAwICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAzICAg ICAgICBvY3RldAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgaWQgICAgICAg ICAgICAgICAgfF9PUF9TVFJFQU1fU1RBUlR8ICAgcmVzZXJ2ZWQgICAgIHwgNAorICogKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgOAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8L1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L3wKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz ZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDY0CisgKiArLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsK KyAqCisgKgorICogUmVxdWVzdCBjYW1lcmEgY2FwdHVyZSBzdHJlYW0gc3RvcDoKKyAqICAgICAg ICAgMCAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgMyAg ICAgICAgb2N0ZXQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgIGlkICAgICAg ICAgICAgICAgIHxfT1BfU1RSRUFNX1NUT1AgfCAgIHJlc2VydmVkICAgICB8IDQKKyAqICstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IDgKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC98CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl c2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA2NAorICogKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r CisgKgorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBSZXNwb25zZXMg LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBBbGwgcmVzcG9uc2UgcGFj a2V0cyBoYXZlIHRoZSBzYW1lIGxlbmd0aCAoNjQgb2N0ZXRzKS4KKyAqCisgKiBBbGwgcmVzcG9u c2UgcGFja2V0cyBoYXZlIGNvbW1vbiBoZWFkZXI6CisgKiAgICAgICAgIDAgICAgICAgICAgICAg ICAgMSAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgIDMgICAgICAgIG9jdGV0CisgKiAr LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICBpZCAgICAgICAgICAgICAgICB8ICAgIG9w ZXJhdGlvbiAgIHwgICAgcmVzZXJ2ZWQgICAgfCA0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCA4CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqCisgKiBpZCAtIHVpbnQxNl90LCBjb3BpZWQg ZnJvbSB0aGUgcmVxdWVzdC4KKyAqIG9wZXJhdGlvbiAtIHVpbnQ4X3QsIFhFTkNBTUVSQV9PUF8q IC0gY29waWVkIGZyb20gcmVxdWVzdC4KKyAqIHN0YXR1cyAtIGludDMyX3QsIHJlc3BvbnNlIHN0 YXR1cywgemVybyBvbiBzdWNjZXNzIGFuZCAtWEVOX0VYWCBvbiBmYWlsdXJlLgorICoKKyAqCisg KiBTZXQvZ2V0IGNvbmZpZ3VyYXRpb24gcmVzcG9uc2UgLSByZXNwb25zZSBmb3IgWEVOQ0FNRVJB X09QX0NPTkZJR19TRVQKKyAqIGFuZCBYRU5DQU1FUkFfT1BfQ09ORklHX0dFVAorICogICAgICAg ICAwICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAzICAg ICAgICBvY3RldAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgaWQgICAgICAg ICAgICAgICAgfCBfT1BfQ09ORklHXz9FVCB8ICAgIHJlc2VydmVkICAgIHwgNAorICogKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgOAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHBpeGVsIGZvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgMTIKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB3aWR0aCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE2CisgKiArLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAyMAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb2xvcnNwYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg MjQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGZl cl9mdW5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDI4CisgKiArLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsK KyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHljYmNyX2VuYyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAzMgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHF1YW50aXphdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMzYK KyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxfYXNwX3Jh dGlvX251bWVyICAgICAgICAgICAgICAgICAgICAgICB8IDQwCisgKiArLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAq IHwgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsX2FzcF9yYXRpb19kZW5vbSAgICAgICAgICAg ICAgICAgICAgICAgfCA0NAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAg ICAgICAgICBmcmFtZV9yYXRlX251bWVyICAgICAgICAgICAgICAgICAgICAgICAgIHwgNDgKKyAq ICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVfcmF0ZV9k ZW5vbSAgICAgICAgICAgICAgICAgICAgICAgICB8IDUyCisgKiArLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCA1NgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKKyAqICstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IDY0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqCisgKiBNZWFu aW5nIG9mIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlcyBpbiB0aGlzIHJlc3BvbnNlIGlzIHRoZSBz YW1lIGFzIGZvcgorICogWEVOQ0FNRVJBX09QX0NPTkZJR19TRVQgcmVxdWVzdC4KKyAqCisgKgor ICogUmVxdWVzdCBidWZmZXIgcmVzcG9uc2UgLSByZXNwb25zZSBmb3IgWEVOQ0FNRVJBX09QX0JV Rl9SRVFVRVNUCisgKiByZXF1ZXN0OgorICogICAgICAgICAwICAgICAgICAgICAgICAgIDEgICAg ICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAzICAgICAgICBvY3RldAorICogKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rCisgKiB8ICAgICAgICAgICAgICAgaWQgICAgICAgICAgICAgICAgfF9PUF9CVUZfUkVRVUVT VCB8ICAgIHJlc2VydmVkICAgIHwgNAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0YXR1cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg OAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgbnVtX2J1ZmZlcnMgIHwgICBudW1fcGxhbmVzICAg fCAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgIHwgMTIKKyAqICstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwor ICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IDE2CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAg ICAgICAgICAgIHBsYW5lX29mZnNldFswXSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyMAor ICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFuZV9vZmZz ZXRbMV0gICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjQKKyAqICstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICog fCAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhbmVfb2Zmc2V0WzJdICAgICAgICAgICAgICAg ICAgICAgICAgICB8IDI4CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAg ICAgICAgIHBsYW5lX29mZnNldFszXSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzMgorICog Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhbmVfc2l6ZVsw XSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMzYKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBsYW5lX3NpemVbMV0gICAgICAgICAgICAgICAgICAg ICAgICAgICB8IDQwCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAg ICAgICBwbGFuZV9zaXplWzJdICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0NAorICogKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhbmVfc2l6ZVszXSAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgNDgKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAg ICAgIHBsYW5lX3N0cmlkZVswXSAgICAgICAgIHwgICAgICAgICBwbGFuZV9zdHJpZGVbMV0gICAg ICAgICB8IDUyCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICBwbGFuZV9zdHJpZGVbMl0g ICAgICAgICB8ICAgICAgICAgcGxhbmVfc3RyaWRlWzNdICAgICAgICAgfCA1NgorICogKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgNjAKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IDY0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqCisgKiBudW1fYnVmZmVycyAtIHVpbnQ4X3QsIG51 bWJlciBvZiBidWZmZXJzIHRvIGJlIHVzZWQuCisgKiBudW1fcGxhbmVzIC0gdWludDhfdCwgbnVt YmVyIG9mIHBsYW5lcyBvZiB0aGUgYnVmZmVyLgorICogc2l6ZSAtIHVpbnQzMl90LCBvdmVyYWxs IHNpemUgb2YgdGhlIGJ1ZmZlciBpbmNsdWRpbmcgc2l6ZXMgb2YgdGhlCisgKiAgIGluZGl2aWR1 YWwgcGxhbmVzIGFuZCBwYWRkaW5nIGlmIGFwcGxpY2FibGUuCisgKiBwbGFuZV9vZmZzZXQgLSBh cnJheSBvZiB1aW50MzJfdCwgb2Zmc2V0IG9mIHRoZSBjb3JyZXNwb25kaW5nIHBsYW5lCisgKiAg IGluIG9jdGV0cyBmcm9tIHRoZSBidWZmZXIgc3RhcnQuCisgKiBwbGFuZV9zaXplIC0gYXJyYXkg b2YgdWludDMyX3QsIHNpemUgaW4gb2N0ZXRzIG9mIHRoZSBjb3JyZXNwb25kaW5nIHBsYW5lCisg KiAgIGluY2x1ZGluZyBwYWRkaW5nLgorICogcGxhbmVfc3RyaWRlIC0gYXJyYXkgb2YgdWludDMy X3QsIHNpemUgaW4gb2N0ZXRzIG9jY3VwaWVkIGJ5IHRoZQorICogICBjb3JyZXNwb25kaW5nIHNp bmdsZSBpbWFnZSBsaW5lIGluY2x1ZGluZyBwYWRkaW5nIGlmIGFwcGxpY2FibGUuCisgKi8KK3N0 cnVjdCB4ZW5jYW1lcmFfYnVmX3JlcXVlc3RfcmVzcCB7CisgICAgdWludDhfdCBudW1fYnVmZmVy czsKKyAgICB1aW50OF90IG51bV9wbGFuZXM7CisgICAgdWludDhfdCByZXNlcnZlZFsyXTsKKyAg ICB1aW50MzJfdCBzaXplOworICAgIHVpbnQzMl90IHBsYW5lX29mZnNldFtYRU5DQU1FUkFfTUFY X1BMQU5FXTsKKyAgICB1aW50MzJfdCBwbGFuZV9zaXplW1hFTkNBTUVSQV9NQVhfUExBTkVdOwor ICAgIHVpbnQxNl90IHBsYW5lX3N0cmlkZVtYRU5DQU1FUkFfTUFYX1BMQU5FXTsKK307CisKKy8q CisgKiBDb250cm9sIGVudW1lcmF0ZSByZXNwb25zZSAtIHJlc3BvbnNlIGZvciBYRU5DQU1FUkFf T1BfQ1RSTF9FTlVNOgorICogICAgICAgICAwICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAg ICAgIDIgICAgICAgICAgICAgICAzICAgICAgICBvY3RldAorICogKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8 ICAgICAgICAgICAgICAgaWQgICAgICAgICAgICAgICAgfCBfT1BfQ1RSTF9FTlVNICB8ICAgIHJl c2VydmVkICAgIHwgNAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0YXR1cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOAorICogKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rCisgKiB8ICAgICBpbmRleCAgICAgIHwgICAgICB0eXBlICAgICAgfCAgICAgICAg ICAgICAgZmxhZ3MgICAgICAgICAgICAgIHwgMTIKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IDE2CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAg IG1pbiBsb3cgMzItYml0cyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyMAorICogKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICBtaW4gaGlnaCAzMi1iaXRzICAg ICAgICAgICAgICAgICAgICAgICAgIHwgMjQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAg ICAgICAgICAgICAgICAgICAgbWF4IGxvdyAzMi1iaXRzICAgICAgICAgICAgICAgICAgICAgICAg ICB8IDI4CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgIG1h eCBoaWdoIDMyLWJpdHMgICAgICAgICAgICAgICAgICAgICAgICAgfCAzMgorICogKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXAgbG93IDMyLWJpdHMgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgMzYKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAg ICAgICAgICAgICAgICBzdGVwIGhpZ2ggMzItYml0cyAgICAgICAgICAgICAgICAgICAgICAgICB8 IDQwCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICBkZWZfdmFs IGxvdyAzMi1iaXRzICAgICAgICAgICAgICAgICAgICAgICAgfCA0NAorICogKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r CisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgZGVmX3ZhbCBoaWdoIDMyLWJpdHMgICAgICAg ICAgICAgICAgICAgICAgIHwgNDgKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDUy CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAorICogKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgNjQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICoKKyAqIGluZGV4IC0gdWludDhfdCwg aW5kZXggb2YgdGhlIGNhbWVyYSBjb250cm9sIGluIHJlc3BvbnNlLgorICogdHlwZSAtIHVpbnQ4 X3QsIHR5cGUgb2YgdGhlIGNvbnRyb2wsIG9uZSBvZiB0aGUgWEVOQ0FNRVJBX0NUUkxfWFhYLgor ICogZmxhZ3MgLSB1aW50MTZfdCwgZmxhZ3Mgb2YgdGhlIGNvbnRyb2wsIG9uZSBvZiB0aGUgWEVO Q0FNRVJBX0NUUkxfRkxHX1hYWC4KKyAqIG1pbiAtIGludDY0X3QsIG1pbmltdW0gdmFsdWUgb2Yg dGhlIGNvbnRyb2wuCisgKiBtYXggLSBpbnQ2NF90LCBtYXhpbXVtIHZhbHVlIG9mIHRoZSBjb250 cm9sLgorICogc3RlcCAtIGludDY0X3QsIG1pbmltdW0gc2l6ZSBpbiB3aGljaCBjb250cm9sIHZh bHVlIGNhbiBiZSBjaGFuZ2VkLgorICogZGVmX3ZhbCAtIGludDY0X3QsIGRlZmF1bHQgdmFsdWUg b2YgdGhlIGNvbnRyb2wuCisgKi8KK3N0cnVjdCB4ZW5jYW1lcmFfY3RybF9lbnVtX3Jlc3Agewor ICAgIHVpbnQ4X3QgaW5kZXg7CisgICAgdWludDhfdCB0eXBlOworICAgIHVpbnQxNl90IGZsYWdz OworICAgIHVpbnQ4X3QgcmVzZXJ2ZWRbNF07CisgICAgaW50NjRfdCBtaW47CisgICAgaW50NjRf dCBtYXg7CisgICAgaW50NjRfdCBzdGVwOworICAgIGludDY0X3QgZGVmX3ZhbDsKK307CisKKy8q CisgKiBHZXQgY29udHJvbCByZXNwb25zZSAtIHJlc3BvbnNlIGZvciBYRU5DQU1FUkFfT1BfQ1RS TF9HRVQ6CisgKiAgICAgICAgIDAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgMiAg ICAgICAgICAgICAgIDMgICAgICAgIG9jdGV0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAg ICAgICAgICBpZCAgICAgICAgICAgICAgICB8IF9PUF9DVFJMX0dFVCAgIHwgICAgcmVzZXJ2ZWQg ICAgfCA0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RhdHVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA4CisgKiArLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSsKKyAqIHwgICAgICAgdHlwZSAgICAgfCAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAg ICAgICAgICAgICAgICAgICAgfCA4CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAx MgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNl cnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTYKKyAqICstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwor ICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgbG93IDMyLWJpdCAgICAgICAgICAg ICAgICAgICAgICAgICB8IDIwCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAg ICAgICAgICAgIHZhbHVlIGhpZ2ggMzItYml0ICAgICAgICAgICAgICAgICAgICAgICAgfCAyNAor ICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZl ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjgKKyAqICstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICog fC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC98CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA2NAorICogKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rCisgKgorICogdHlwZSAtIHVpbnQ4X3QsIHR5cGUgb2YgdGhlIGNvbnRyb2wsIG9u ZSBvZiB0aGUgWEVOQ0FNRVJBX0NUUkxfWFhYLgorICogdmFsdWUgLSBpbnQ2NF90LCBuZXcgdmFs dWUgb2YgdGhlIGNvbnRyb2wuCisgKi8KKworLyoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0gRXZlbnRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAq CisgKiBFdmVudHMgYXJlIHNlbnQgdmlhIGEgc2hhcmVkIHBhZ2UgYWxsb2NhdGVkIGJ5IHRoZSBm cm9udCBhbmQgcHJvcGFnYXRlZCBieQorICogICBldnQtZXZlbnQtY2hhbm5lbC9ldnQtcmluZy1y ZWYgWGVuU3RvcmUgZW50cmllcy4KKyAqCisgKiBBbGwgZXZlbnQgcGFja2V0cyBoYXZlIHRoZSBz YW1lIGxlbmd0aCAoNjQgb2N0ZXRzKS4KKyAqIEFsbCBldmVudCBwYWNrZXRzIGhhdmUgY29tbW9u IGhlYWRlcjoKKyAqICAgICAgICAgMCAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAy ICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAg ICAgICAgICAgIGlkICAgICAgICAgICAgICAgIHwgICAgICB0eXBlICAgICAgfCAgIHJlc2VydmVk ICAgICB8IDQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDgKKyAqICstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKworICoKKyAqIGlkIC0gdWludDE2X3QsIGV2ZW50IGlkLCBtYXkgYmUgdXNlZCBieSBmcm9u dC4KKyAqIHR5cGUgLSB1aW50OF90LCB0eXBlIG9mIHRoZSBldmVudC4KKyAqCisgKgorICogRnJh bWUgY2FwdHVyZWQgZXZlbnQgLSBldmVudCBmcm9tIGJhY2sgdG8gZnJvbnQgd2hlbiBhIG5ldyBj YXB0dXJlZAorICogZnJhbWUgaXMgYXZhaWxhYmxlOgorICogICAgICAgICAwICAgICAgICAgICAg ICAgIDEgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAzICAgICAgICBvY3RldAorICog Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgaWQgICAgICAgICAgICAgICAgfF9FVlRf RlJBTUVfQVZBSUx8ICAgcmVzZXJ2ZWQgICAgIHwgNAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgOAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgaW5kZXggICAgIHwgICAgICAg ICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgIHwgMTIKKyAqICstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWRfc3ogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IDE2CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAyMAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgc2Vx X251bSBsb3cgMzItYml0cyAgICAgICAgICAgICAgICAgICAgICAgIHwgMjQKKyAqICstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgIHNlcV9udW0gaGlnaCAzMi1iaXRzICAg ICAgICAgICAgICAgICAgICAgICB8IDI4CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAyMAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKKyAqICstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwor ICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IDY0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqCisgKiBpbmRleCAtIHVpbnQ4 X3QsIGluZGV4IG9mIHRoZSBidWZmZXIgdGhhdCBjb250YWlucyBuZXcgY2FwdHVyZWQgZnJhbWUu CisgKiB1c2VkX3N6IC0gdWludDMyX3QsIG51bWJlciBvZiBvY3RldHMgdGhpcyBmcmFtZSBoYXMu IFRoaXMgY2FuIGJlIGxlc3MKKyAqIHRoYW4gdGhlIFhFTkNBTUVSQV9PUF9CVUZfUkVRVUVTVC5z aXplIChyZXNwb25zZSkgZm9yIGNvbXByZXNzZWQgZm9ybWF0cy4KKyAqIHNlcV9udW0gLSB1aW50 NjRfdCwgc2VxdWVudGlhbCBudW1iZXIgb2YgdGhlIGZyYW1lLgorICovCitzdHJ1Y3QgeGVuY2Ft ZXJhX2ZyYW1lX2F2YWlsX2V2dCB7CisgICAgdWludDhfdCBpbmRleDsKKyAgICB1aW50OF90IHJl c2VydmVkMFszXTsKKyAgICB1aW50MzJfdCB1c2VkX3N6OworICAgIHVpbnQ4X3QgcmVzZXJ2ZWQx WzRdOworICAgIHVpbnQ2NF90IHNlcV9udW07Cit9OworCisvKgorICogQ29uZmlndXJhdGlvbiBj aGFuZ2UgLSBldmVudCBmcm9tIGJhY2sgdG8gZnJvbnQgd2hlbiBjdXJyZW50CisgKiBjb25maWd1 cmF0aW9uIGhhcyBjaGFuZ2VkOgorICogICAgICAgICAwICAgICAgICAgICAgICAgIDEgICAgICAg ICAgICAgICAgIDIgICAgICAgICAgICAgICAzICAgICAgICBvY3RldAorICogKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r CisgKiB8ICAgICAgICAgICAgICAgaWQgICAgICAgICAgICAgICAgfCBfQ09ORklHX0NIQU5HRSB8 ICAgcmVzZXJ2ZWQgICAgIHwgNAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOAor ICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdz ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTIKKyAqICstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICog fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IDE2CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAorICogKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgNjQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICoKKyAqIGZs YWdzIC0gdWludDMyX3QsIHNldCBvZiB0aGUgWEVOQ0FNRVJBX0VWVF9DRkdfRkxHX1hYWCBmbGFn cy4KKyAqLworc3RydWN0IHhlbmNhbWVyYV9jZmdfY2hhbmdlX2V2dCB7CisgICAgdWludDMyX3Qg ZmxhZ3M7Cit9OworCisvKgorICogQ29udHJvbCBjaGFuZ2UgZXZlbnQtIGV2ZW50IGZyb20gYmFj ayB0byBmcm9udCB3aGVuIGNhbWVyYSBjb250cm9sCisgKiBoYXMgY2hhbmdlZDoKKyAqICAgICAg ICAgMCAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgMyAg ICAgICAgb2N0ZXQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgIGlkICAgICAg ICAgICAgICAgIHxfRVZUX0NUUkxfQ0hBTkdFfCAgIHJlc2VydmVkICAgICB8IDQKKyAqICstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKworICogfCAgICAgICB0eXBlICAgICB8ICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2 ZWQgICAgICAgICAgICAgICAgICAgICB8IDgKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IDEyCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNgorICogKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSBsb3cgMzItYml0ICAgICAg ICAgICAgICAgICAgICAgICAgIHwgMjAKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAg ICAgICAgICAgICAgICAgdmFsdWUgaGlnaCAzMi1iaXQgICAgICAgICAgICAgICAgICAgICAgICB8 IDI0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl c2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyOAorICogKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r CisgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL3wKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDY0Cisg KiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSsKKyAqCisgKiB0eXBlIC0gdWludDhfdCwgdHlwZSBvZiB0aGUgY29udHJv bCwgb25lIG9mIHRoZSBYRU5DQU1FUkFfQ1RSTF9YWFguCisgKiB2YWx1ZSAtIGludDY0X3QsIG5l dyB2YWx1ZSBvZiB0aGUgY29udHJvbC4KKyAqLworCisKK3N0cnVjdCB4ZW5jYW1lcmFfcmVxIHsK KyAgICB1aW50MTZfdCBpZDsKKyAgICB1aW50OF90IG9wZXJhdGlvbjsKKyAgICB1aW50OF90IHJl c2VydmVkWzVdOworICAgIHVuaW9uIHsKKyAgICAgICAgc3RydWN0IHhlbmNhbWVyYV9jb25maWcg Y29uZmlnOworICAgICAgICBzdHJ1Y3QgeGVuY2FtZXJhX2J1Zl9yZXF1ZXN0IGJ1Zl9yZXF1ZXN0 OworICAgICAgICBzdHJ1Y3QgeGVuY2FtZXJhX2J1Zl9jcmVhdGVfcmVxIGJ1Zl9jcmVhdGU7Cisg ICAgICAgIHN0cnVjdCB4ZW5jYW1lcmFfaW5kZXggaW5kZXg7CisgICAgICAgIHN0cnVjdCB4ZW5j YW1lcmFfY3RybF92YWx1ZSBjdHJsX3ZhbHVlOworICAgICAgICBzdHJ1Y3QgeGVuY2FtZXJhX2dl dF9jdHJsX3JlcSBnZXRfY3RybDsKKyAgICAgICAgdWludDhfdCByZXNlcnZlZFs1Nl07CisgICAg fSByZXE7Cit9OworCitzdHJ1Y3QgeGVuY2FtZXJhX3Jlc3AgeworICAgIHVpbnQxNl90IGlkOwor ICAgIHVpbnQ4X3Qgb3BlcmF0aW9uOworICAgIHVpbnQ4X3QgcmVzZXJ2ZWQ7CisgICAgaW50MzJf dCBzdGF0dXM7CisgICAgdW5pb24geworICAgICAgICBzdHJ1Y3QgeGVuY2FtZXJhX2NvbmZpZyBj b25maWc7CisgICAgICAgIHN0cnVjdCB4ZW5jYW1lcmFfYnVmX3JlcXVlc3RfcmVzcCBidWZfcmVx dWVzdDsKKyAgICAgICAgc3RydWN0IHhlbmNhbWVyYV9jdHJsX2VudW1fcmVzcCBjdHJsX2VudW07 CisgICAgICAgIHN0cnVjdCB4ZW5jYW1lcmFfY3RybF92YWx1ZSBjdHJsX3ZhbHVlOworICAgICAg ICB1aW50OF90IHJlc2VydmVkMVs1Nl07CisgICAgfSByZXNwOworfTsKKworc3RydWN0IHhlbmNh bWVyYV9ldnQgeworICAgIHVpbnQxNl90IGlkOworICAgIHVpbnQ4X3QgdHlwZTsKKyAgICB1aW50 OF90IHJlc2VydmVkWzVdOworICAgIHVuaW9uIHsKKyAgICAgICAgc3RydWN0IHhlbmNhbWVyYV9m cmFtZV9hdmFpbF9ldnQgZnJhbWVfYXZhaWw7CisgICAgICAgIHN0cnVjdCB4ZW5jYW1lcmFfY2Zn X2NoYW5nZV9ldnQgY2ZnX2NoYW5nZTsKKyAgICAgICAgc3RydWN0IHhlbmNhbWVyYV9jdHJsX3Zh bHVlIGN0cmxfdmFsdWU7CisgICAgICAgIHVpbnQ4X3QgcmVzZXJ2ZWRbNTZdOworICAgIH0gZXZ0 OworfTsKKworREVGSU5FX1JJTkdfVFlQRVMoeGVuX2NhbWVyYWlmLCBzdHJ1Y3QgeGVuY2FtZXJh X3JlcSwgc3RydWN0IHhlbmNhbWVyYV9yZXNwKTsKKworLyoKKyAqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgQmFjayB0byBmcm9udCBldmVudHMgZGVsaXZl cnkKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEluIG9yZGVyIHRvIGRlbGl2ZXIgYXN5bmNo cm9ub3VzIGV2ZW50cyBmcm9tIGJhY2sgdG8gZnJvbnQgYSBzaGFyZWQgcGFnZSBpcworICogYWxs b2NhdGVkIGJ5IGZyb250IGFuZCBpdHMgZ3JhbnRlZCByZWZlcmVuY2UgcHJvcGFnYXRlZCB0byBi YWNrIHZpYQorICogWGVuU3RvcmUgZW50cmllcyAoZXZ0LXJpbmctcmVmL2V2dC1ldmVudC1jaGFu bmVsKS4KKyAqIFRoaXMgcGFnZSBoYXMgYSBjb21tb24gaGVhZGVyIHVzZWQgYnkgYm90aCBmcm9u dCBhbmQgYmFjayB0byBzeW5jaHJvbml6ZQorICogYWNjZXNzIGFuZCBjb250cm9sIGV2ZW50J3Mg cmluZyBidWZmZXIsIHdoaWxlIGJhY2sgYmVpbmcgYSBwcm9kdWNlciBvZiB0aGUKKyAqIGV2ZW50 cyBhbmQgZnJvbnQgYmVpbmcgYSBjb25zdW1lci4gVGhlIHJlc3Qgb2YgdGhlIHBhZ2UgYWZ0ZXIg dGhlIGhlYWRlcgorICogaXMgdXNlZCBmb3IgZXZlbnQgcGFja2V0cy4KKyAqCisgKiBVcG9uIHJl Y2VwdGlvbiBvZiBhbiBldmVudChzKSBmcm9udCBtYXkgY29uZmlybSBpdHMgcmVjZXB0aW9uCisg KiBmb3IgZWl0aGVyIGVhY2ggZXZlbnQsIGdyb3VwIG9mIGV2ZW50cyBvciBub25lLgorICovCisK K3N0cnVjdCB4ZW5jYW1lcmFfZXZlbnRfcGFnZSB7CisgICAgdWludDMyX3QgaW5fY29uczsKKyAg ICB1aW50MzJfdCBpbl9wcm9kOworICAgIHVpbnQ4X3QgcmVzZXJ2ZWRbNTZdOworfTsKKworI2Rl ZmluZSBYRU5DQU1FUkFfRVZFTlRfUEFHRV9TSVpFIDQwOTYKKyNkZWZpbmUgWEVOQ0FNRVJBX0lO X1JJTkdfT0ZGUyAoc2l6ZW9mKHN0cnVjdCB4ZW5jYW1lcmFfZXZlbnRfcGFnZSkpCisjZGVmaW5l IFhFTkNBTUVSQV9JTl9SSU5HX1NJWkUgKFhFTkNBTUVSQV9FVkVOVF9QQUdFX1NJWkUgLSBYRU5D QU1FUkFfSU5fUklOR19PRkZTKQorI2RlZmluZSBYRU5DQU1FUkFfSU5fUklOR19MRU4gKFhFTkNB TUVSQV9JTl9SSU5HX1NJWkUgLyBzaXplb2Yoc3RydWN0IHhlbmNhbWVyYV9ldnQpKQorI2RlZmlu ZSBYRU5DQU1FUkFfSU5fUklORyhwYWdlKSBcCisgICAgKChzdHJ1Y3QgeGVuY2FtZXJhX2V2dCAq KSgoY2hhciAqKShwYWdlKSArIFhFTkNBTUVSQV9JTl9SSU5HX09GRlMpKQorI2RlZmluZSBYRU5D QU1FUkFfSU5fUklOR19SRUYocGFnZSwgaWR4KSBcCisgICAgKFhFTkNBTUVSQV9JTl9SSU5HKChw YWdlKSlbKGlkeCkgJSBYRU5DQU1FUkFfSU5fUklOR19MRU5dKQorCisjZW5kaWYgLyogX19YRU5f UFVCTElDX0lPX0NBTUVSQUlGX0hfXyAqLworCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICog bW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAq IHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KLS0g CjIuMTguMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Clhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0 dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=