Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wAmBT-000Jdg-1r for pgsql-hackers@arkaria.postgresql.org; Thu, 09 Apr 2026 10:00:24 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wAmBR-0052iQ-24 for pgsql-hackers@arkaria.postgresql.org; Thu, 09 Apr 2026 10:00:22 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wAmBR-0052iI-0L for pgsql-hackers@lists.postgresql.org; Thu, 09 Apr 2026 10:00:22 +0000 Received: from forward502b.mail.yandex.net ([2a02:6b8:c02:900:1:45:d181:d502]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1wAmBN-000000009u6-05Iy for pgsql-hackers@postgresql.org; Thu, 09 Apr 2026 10:00:21 +0000 Received: from mail-nwsmtp-smtp-production-main-57.sas.yp-c.yandex.net (mail-nwsmtp-smtp-production-main-57.sas.yp-c.yandex.net [IPv6:2a02:6b8:c1e:478a:0:640:bc50:0]) by forward502b.mail.yandex.net (Yandex) with ESMTPS id 1D74A82318 for ; Thu, 09 Apr 2026 13:00:15 +0300 (MSK) Received: by mail-nwsmtp-smtp-production-main-57.sas.yp-c.yandex.net (smtp/Yandex) with ESMTPSA id B0D54JBSVGk0-R6hCZHvT; Thu, 09 Apr 2026 13:00:13 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tantorlabs.com; s=mail; t=1775728814; bh=AJafAJOobzqsWx1oM/ua9+5IzZpfeYAcAKIsUE3hyS0=; h=In-Reply-To:References:To:Subject:Message-ID:Date:From; b=jcb4AoXRqjL3L3o5kUIg7ISFeZ1J/wKMX6CwV2mLhXq8dyIljFGkMLD52wX0b2GxK Z2U1/fQJa+HZv98dbh8Xzzy1Z97c7uAP/YGjDlrmysYLII30kF6ZOXPAQpc/mllU6y jgs3Rnq10N6mZFmR6bHFHy4G5HswKkHCPBaiJTo8= Authentication-Results: mail-nwsmtp-smtp-production-main-57.sas.yp-c.yandex.net; dkim=pass header.i=@tantorlabs.com Content-Type: multipart/mixed; boundary="------------GiBLAZOtrrdCnvpdzHYTcSF3" Message-ID: Date: Thu, 9 Apr 2026 18:00:10 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Compress prune/freeze records with Delta Frame of Reference algorithm From: Evgeny Voropaev To: PostgreSQL Hackers References: <5a2f3df2-a736-4ada-8aa3-aa6e20b2e067@vondra.me> <3fc9f40b-2c4f-49c7-bf1c-570c5b9e6e9e@tantorlabs.com> Content-Language: en-US In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------GiBLAZOtrrdCnvpdzHYTcSF3 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit The problem with GCC dependencies appearing in Debian Trixie in test/dfor has been replayed locally and fixed. P.S. Rebased onto 11d6042337f. --------------GiBLAZOtrrdCnvpdzHYTcSF3 Content-Type: text/x-patch; charset=UTF-8; name="v10-0001-Implement-vect-and-uniqsortvect-containers-and-b.patch" Content-Disposition: attachment; filename*0="v10-0001-Implement-vect-and-uniqsortvect-containers-and-b.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBjZjUwMzM2ZDJlZWRlMDMxNmFkZjdiNWNkZGEyYTJhZTY1ZGJkOTM0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFdmdlbnkgVm9yb3BhZXYgPGV2b3JvcEBnbWFpbC5j b20+CkRhdGU6IEZyaSwgMjAgTWFyIDIwMjYgMTc6MzA6MjIgKzA4MDAKU3ViamVjdDogW1BB VENIIHYxMCAxLzNdIEltcGxlbWVudCB2ZWN0IGFuZCB1bmlxc29ydHZlY3QgY29udGFpbmVy cyBhbmQKIGJpdHBhY2sgYWxnb3JpdGhtcy4KClRoZSB2ZWN0IGNvbnRhaW5lciBzdG9yZXMg YXJyYXlzIG9mIGludGVnZXJzIGFuZCBwcm92aWRlcyBhIHNldCBvZgphbGdvcml0aG1zIGlt cGxlbWVudGluZyBlc3NlbnRpYWwgb3BlcmF0aW9ucyBvbiB0aGUgY29udGFpbmVkIGFycmF5 LApzdWNoIGFzIGluaXRpYWxpemF0aW9uLCBhcHBlbmRpbmcsIGluc2VydGluZywgYW5kIGNs ZWFyaW5nLgoKVGhlIHVuaXFzb3J0dmVjdCBjb250YWluZXIgaXMgYmFzZWQgb24gdGhlIHZl Y3QgdHlwZSBidXQgYXNzdW1lcyB0aGF0Cml0cyBlbGVtZW50cyBhcmUgc29ydGVkIGFuZCB1 bmlxdWUuIEluIGFkZGl0aW9uIHRvIHRoZSBhbGdvcml0aG1zCnByb3ZpZGVkIGJ5IHZlY3Qs IHVuaXFzb3J0dmVjdCBpbXBsZW1lbnRzIGJpbmFyeSBzZWFyY2ggYW5kIHRoZQpzcGVjaWFs aXplZCBpbnNlcnRpb24gcm91dGluZS4KClRoZSBjb250YWluZXJzIHN1cHBvcnQgYm90aCBl eHRlcm5hbCBtZW1vcnkgcHJvdmlkZWQgYnkgYSBjYWxsZXIgYW5kCmF1dG9tYXRpY2FsbHkg bWFuYWdlZCBtZW1vcnkgdXNpbmcgbWFsbG9jLCBQb3N0Z3JlcydzIHBhbGxvYywgb3Igc2lt aWxhcgphbGxvY2F0aW9uIGZ1bmN0aW9ucy4gQSBjb250YWluZXIncyBzdHJhdGVneSByZWdh cmRpbmcgbWVtb3J5IG1hbmFnZW1lbnQKbXVzdCBiZSBzZXQgYXQgY29udGFpbmVyIGluaXRp YWxpemF0aW9uLCBhbmQgYWxsIHN1YnNlcXVlbnQgb3BlcmF0aW9ucwpob25vciB0aGlzIGNv bmZpZ3VyYXRpb24uIEZvciBleGFtcGxlLCBhIGNhbGxlciBjYW4gcGxhY2UgYSBidWZmZXIg b24KdGhlIHN0YWNrIHRvIGF2b2lkIGhlYXAgYWxsb2NhdGlvbiBhbmQgcGFzcyB0aGUgYnVm ZmVyIHRvIGEgdmVjdG9yCmluc3RhbmNlLCB3aGljaCByZXN1bHRzIGluIHRoZSB2ZWN0b3Ig cGVyZm9ybXMgbm8gZHluYW1pYyBhbGxvY2F0aW9uLgoKVGhpcyBjb21taXQgYWxzbyBpbnRy b2R1Y2VzIHRoZSBiaXRwYWNrIHVuaXQsIHdoaWNoIHByb3ZpZGVzIGFsZ29yaXRobXMKZm9y IGRlbnNlIGJpdC1sZXZlbCBwYWNraW5nIGFuZCB1bnBhY2tpbmcuIFRoZSBiaXRwYWNrIHVu aXQgZG9lcyBub3QKdXNlIGR5bmFtaWMgbWVtb3J5LgoKRWFjaCB1bml0ICh2ZWN0LCBiaXRw YWNrKSBpcyBpbXBsZW1lbnRlZCBhcyBhIHNldCBvZiB0ZW1wbGF0ZXMgdGhhdAphbGxvdyBk ZXZlbG9wZXJzIHRvIGdlbmVyYXRlIHNwZWNpYWxpemVkIHNvbHV0aW9ucyBmb3IgYW55IGlu dGVnZXIgdHlwZQoodWludDgsIGludDgsIHVpbnQxNiwgaW50MTYsIGFuZCBzbyBvbikuIFRo ZSB1bml0cyBiaXRwYWNrX3UxNiBhbmQKdmVjdF91MTYgc3VwcG9ydGluZyB0aGUgdWludDE2 X3QgdHlwZSBhcmUgYWxzbyBwcm92aWRlZCBieSB0aGlzIGNvbW1pdC4KClVuaXQgdGVzdHMg Zm9yIHRoZSBwcm92aWRlZCBpbXBsZW1lbnRhdGlvbnMgYXJlIGluY2x1ZGVkLiBVbml0IHRl c3RzIGFyZQppbXBsZW1lbnRlZCBhcyBiaW5hcnkgYXBwbGljYXRpb25zIHdyaXR0ZW4gaW4g QyBsYW5ndWFnZQooRUxGIGV4ZWN1dGFibGVzKSB0aGF0IHN1cHBvcnQgdGhlIFRBUCBwcm90 b2NvbCBhbmQgYXJlIHJ1biB1c2luZyB0aGUKUHJvdmUgdXRpbGl0eS4KClRoZSBuZXcgTWFr ZWZpbGUgdGFyZ2V0LCBjaGVjay11bml0LCBpcyBpbnRlZ3JhdGVkIGludG8gdGhlIFBvc3Rn cmVTUUwKYnVpbGQgc3lzdGVtIGFuZCBhbGxvd3MgcnVubmluZyB0aGUgdW5pdCB0ZXN0cyB1 c2luZyB0aGUgY29tbWFuZCAnbWFrZQpjaGVjay11bml0Jy4KCkF1dGhvcjogRXZnZW55IFZv cm9wYWV2IDxldmdlbnkudm9yb3BhZXZAdGFudG9ybGFicy5jb20+IDxldm9yb3BAZ21haWwu Y29tPgpSZXZpZXdlZCBieTogQW5kcmV5IEJvcm9kaW4gPHg0bW1tQHlhbmRleC10ZWFtLnJ1 PgotLS0KIEdOVW1ha2VmaWxlLmluICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsK IHNyYy9NYWtlZmlsZS5nbG9iYWwuaW4gICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMv YmFja2VuZC9saWIvTWFrZWZpbGUgICAgICAgICAgICAgICB8ICAgNSArCiBzcmMvYmFja2Vu ZC9saWIvTWFrZWZpbGUuZGZvciAgICAgICAgICB8ICAgNSArCiBzcmMvYmFja2VuZC9saWIv Yml0cGFja190ZW1wbC5jICAgICAgICB8IDE1NiArKysrKysrKysKIHNyYy9iYWNrZW5kL2xp Yi9iaXRwYWNrX3UxNi5jICAgICAgICAgIHwgICA4ICsKIHNyYy9iYWNrZW5kL2xpYi9tZXNv bi5idWlsZCAgICAgICAgICAgIHwgICA3ICsKIHNyYy9iYWNrZW5kL2xpYi92ZWN0X3RlbXBs LmMgICAgICAgICAgIHwgMzAxICsrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvbGli L3ZlY3RfdTE2LmMgICAgICAgICAgICAgfCAgIDggKwogc3JjL2luY2x1ZGUvYy5oICAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDQgKwogc3JjL2luY2x1ZGUvbGliL2JpdHBhY2tfc3Rh cGxlX3RlbXBsLmggfCAgNTcgKysrKwogc3JjL2luY2x1ZGUvbGliL2JpdHBhY2tfdGVtcGwu aCAgICAgICAgfCAgMTQgKwogc3JjL2luY2x1ZGUvbGliL2JpdHBhY2tfdGVtcGxfdW5kZWYu aCAgfCAgIDUgKwogc3JjL2luY2x1ZGUvbGliL2JpdHBhY2tfdTE2LmggICAgICAgICAgfCAg MTIgKwogc3JjL2luY2x1ZGUvbGliL2JpdHBhY2tfdTE2X2NvbmZpZy5oICAgfCAgIDYgKwog c3JjL2luY2x1ZGUvbGliL3ZlY3RfdGVtcGwuaCAgICAgICAgICAgfCAgMjcgKysKIHNyYy9p bmNsdWRlL2xpYi92ZWN0X3RlbXBsX3N0YXBsZS5oICAgIHwgMTQwICsrKysrKysrCiBzcmMv aW5jbHVkZS9saWIvdmVjdF90ZW1wbF91bmRlZi5oICAgICB8ICAyNSArKwogc3JjL2luY2x1 ZGUvbGliL3ZlY3RfdTE2LmggICAgICAgICAgICAgfCAgMzQgKysKIHNyYy9pbmNsdWRlL2xp Yi92ZWN0X3UxNl9jb25maWcuaCAgICAgIHwgIDEwICsKIHNyYy90ZXN0L01ha2VmaWxlICAg ICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0L2Rmb3IvLmdpdGlnbm9yZSAg ICAgICAgICAgICAgIHwgICAzICsKIHNyYy90ZXN0L2Rmb3IvTWFrZWZpbGUgICAgICAgICAg ICAgICAgIHwgIDU0ICsrKysKIHNyYy90ZXN0L2Rmb3IvbWVzb24uYnVpbGQgICAgICAgICAg ICAgIHwgIDYyICsrKysKIHNyYy90ZXN0L2Rmb3IvdGVzdC5oICAgICAgICAgICAgICAgICAg IHwgIDMxICsrCiBzcmMvdGVzdC9kZm9yL3Rlc3RfYml0cGFja191MTYuYyAgICAgICB8IDM1 NyArKysrKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L2Rmb3IvdGVzdF91bmlxc29ydHZl Y3RfdTE2LmMgIHwgMjYzICsrKysrKysrKysrKysrKwogc3JjL3Rlc3QvZGZvci90ZXN0X3Zl Y3RfdTE2LmMgICAgICAgICAgfCAxNjggKysrKysrKysrKwogc3JjL3Rlc3QvbGlidGFwLy5n aXRpZ25vcmUgICAgICAgICAgICAgfCAgMTMgKwogc3JjL3Rlc3QvbGlidGFwLy50cmF2aXMu eW1sICAgICAgICAgICAgfCAgMTMgKwogc3JjL3Rlc3QvbGlidGFwL0NPUFlJTkcgICAgICAg ICAgICAgICAgfCAxNjUgKysrKysrKysrKwogc3JjL3Rlc3QvbGlidGFwL0lOU1RBTEwgICAg ICAgICAgICAgICAgfCAgNDEgKysrCiBzcmMvdGVzdC9saWJ0YXAvTWFrZWZpbGUgICAgICAg ICAgICAgICB8ICA3MyArKysrKwogc3JjL3Rlc3QvbGlidGFwL01ha2VmaWxlLndpbiAgICAg ICAgICAgfCAgMzcgKysrCiBzcmMvdGVzdC9saWJ0YXAvUkVBRE1FLm1kICAgICAgICAgICAg ICB8IDI2OCArKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9saWJ0YXAvdGFwLmMgICAgICAg ICAgICAgICAgICB8IDQyMSArKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9s aWJ0YXAvdGFwLmggICAgICAgICAgICAgICAgICB8IDExNSArKysrKysrCiBzcmMvdGVzdC9t ZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgICB8ICAgMSArCiAzOCBmaWxlcyBjaGFuZ2Vk LCAyOTEyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmMvYmFja2VuZC9saWIvTWFrZWZpbGUuZGZvcgogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy9iYWNrZW5kL2xpYi9iaXRwYWNrX3RlbXBsLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv YmFja2VuZC9saWIvYml0cGFja191MTYuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNr ZW5kL2xpYi92ZWN0X3RlbXBsLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9s aWIvdmVjdF91MTYuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL2xpYi9iaXRw YWNrX3N0YXBsZV90ZW1wbC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUvbGli L2JpdHBhY2tfdGVtcGwuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL2xpYi9i aXRwYWNrX3RlbXBsX3VuZGVmLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVkZS9s aWIvYml0cGFja191MTYuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL2xpYi9i aXRwYWNrX3UxNl9jb25maWcuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL2xp Yi92ZWN0X3RlbXBsLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVkZS9saWIvdmVj dF90ZW1wbF9zdGFwbGUuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL2xpYi92 ZWN0X3RlbXBsX3VuZGVmLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVkZS9saWIv dmVjdF91MTYuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL2xpYi92ZWN0X3Ux Nl9jb25maWcuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2Rmb3IvLmdpdGlnbm9y ZQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2Rmb3IvTWFrZWZpbGUKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvdGVzdC9kZm9yL21lc29uLmJ1aWxkCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjL3Rlc3QvZGZvci90ZXN0LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9k Zm9yL3Rlc3RfYml0cGFja191MTYuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2Rm b3IvdGVzdF91bmlxc29ydHZlY3RfdTE2LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVz dC9kZm9yL3Rlc3RfdmVjdF91MTYuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2xp YnRhcC8uZ2l0aWdub3JlCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbGlidGFwLy50 cmF2aXMueW1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbGlidGFwL0NPUFlJTkcK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9saWJ0YXAvSU5TVEFMTAogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyYy90ZXN0L2xpYnRhcC9NYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy90ZXN0L2xpYnRhcC9NYWtlZmlsZS53aW4KIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv dGVzdC9saWJ0YXAvUkVBRE1FLm1kCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbGli dGFwL3RhcC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbGlidGFwL3RhcC5oCgpk aWZmIC0tZ2l0IGEvR05VbWFrZWZpbGUuaW4gYi9HTlVtYWtlZmlsZS5pbgppbmRleCBjZjZl NzU5NDg2ZS4uM2Q5YTQyZDZhZDQgMTAwNjQ0Ci0tLSBhL0dOVW1ha2VmaWxlLmluCisrKyBi L0dOVW1ha2VmaWxlLmluCkBAIC02OSw2ICs2OSw3IEBAIGNoZWNrIGNoZWNrLXRlc3RzIGlu c3RhbGxjaGVjayBpbnN0YWxsY2hlY2stcGFyYWxsZWwgaW5zdGFsbGNoZWNrLXRlc3RzOiBz dWJtYWtlCiAJJChNQUtFKSAtQyBzcmMvdGVzdC9yZWdyZXNzICRACiAKICQoY2FsbCByZWN1 cnNlLGNoZWNrLXdvcmxkLHNyYy90ZXN0IHNyYy9wbCBzcmMvaW50ZXJmYWNlcyBjb250cmli IHNyYy9iaW4gc3JjL3Rvb2xzL3BnX2JzZF9pbmRlbnQsY2hlY2spCiskKGNhbGwgcmVjdXJz ZSxjaGVjay11bml0LHNyYy90ZXN0LGNoZWNrLXVuaXQpCiAkKGNhbGwgcmVjdXJzZSxjaGVj a3ByZXAsICBzcmMvdGVzdCBzcmMvcGwgc3JjL2ludGVyZmFjZXMgY29udHJpYiBzcmMvYmlu KQogCiAkKGNhbGwgcmVjdXJzZSxpbnN0YWxsY2hlY2std29ybGQsc3JjL3Rlc3Qgc3JjL3Bs IHNyYy9pbnRlcmZhY2VzIGNvbnRyaWIgc3JjL2JpbixpbnN0YWxsY2hlY2spCmRpZmYgLS1n aXQgYS9zcmMvTWFrZWZpbGUuZ2xvYmFsLmluIGIvc3JjL01ha2VmaWxlLmdsb2JhbC5pbgpp bmRleCBhNzY5OWIwMjZiYi4uYTM3MTQyZjgxNjAgMTAwNjQ0Ci0tLSBhL3NyYy9NYWtlZmls ZS5nbG9iYWwuaW4KKysrIGIvc3JjL01ha2VmaWxlLmdsb2JhbC5pbgpAQCAtMTksNyArMTks NyBAQAogIwogIyBNZXRhIGNvbmZpZ3VyYXRpb24KIAotc3RhbmRhcmRfdGFyZ2V0cyA9IGFs bCBpbnN0YWxsIGluc3RhbGxkaXJzIHVuaW5zdGFsbCBjbGVhbiBkaXN0Y2xlYW4gY292ZXJh Z2UgY2hlY2sgY2hlY2twcmVwIGluc3RhbGxjaGVjayBpbml0LXBvIHVwZGF0ZS1wbworc3Rh bmRhcmRfdGFyZ2V0cyA9IGFsbCBpbnN0YWxsIGluc3RhbGxkaXJzIHVuaW5zdGFsbCBjbGVh biBkaXN0Y2xlYW4gY292ZXJhZ2UgY2hlY2sgY2hlY2twcmVwIGluc3RhbGxjaGVjayBjaGVj ay11bml0IGluaXQtcG8gdXBkYXRlLXBvCiAjIHRoZXNlIHRhcmdldHMgc2hvdWxkIHJlY3Vy c2UgZXZlbiBpbnRvIHN1YmRpcmVjdG9yaWVzIG5vdCBiZWluZyBidWlsdDoKIHN0YW5kYXJk X2Fsd2F5c190YXJnZXRzID0gY2xlYW4gZGlzdGNsZWFuCiAKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2xpYi9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL2xpYi9NYWtlZmlsZQppbmRleCBi NmNlZmQ5Y2NhMC4uNzQxNjdiYzllNGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2xpYi9N YWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC9saWIvTWFrZWZpbGUKQEAgLTEyLDYgKzEyLDgg QEAgc3ViZGlyID0gc3JjL2JhY2tlbmQvbGliCiB0b3BfYnVpbGRkaXIgPSAuLi8uLi8uLgog aW5jbHVkZSAkKHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmdsb2JhbAogCitpbmNsdWRl IE1ha2VmaWxlLmRmb3IKKwogT0JKUyA9IFwKIAliaXBhcnRpdGVfbWF0Y2gubyBcCiAJYmxv b21maWx0ZXIubyBcCkBAIC0yMiw1ICsyNCw4IEBAIE9CSlMgPSBcCiAJa25hcHNhY2subyBc CiAJcGFpcmluZ2hlYXAubyBcCiAJcmJ0cmVlLm8gXAorCSQoT0JKU19ERk9SKSBcCisKK0NQ UEZMQUdTIDo9IC1JJCh0b3Bfc3JjZGlyKS9zcmMvYmFja2VuZC9saWIgJChDUFBGTEFHUykK IAogaW5jbHVkZSAkKHRvcF9zcmNkaXIpL3NyYy9iYWNrZW5kL2NvbW1vbi5tawpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvbGliL01ha2VmaWxlLmRmb3IgYi9zcmMvYmFja2VuZC9saWIv TWFrZWZpbGUuZGZvcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u YjkzYzZlNzg2NDQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9saWIvTWFrZWZp bGUuZGZvcgpAQCAtMCwwICsxLDUgQEAKKyMgTWFrZWZpbGUuZGZvcgorCitPQkpTX0RGT1Ig Oj0gXAorCWJpdHBhY2tfdTE2Lm8gXAorCXZlY3RfdTE2Lm8KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2xpYi9iaXRwYWNrX3RlbXBsLmMgYi9zcmMvYmFja2VuZC9saWIvYml0cGFja190 ZW1wbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41ZjcyMWVh MWViYwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL2xpYi9iaXRwYWNrX3RlbXBs LmMKQEAgLTAsMCArMSwxNTYgQEAKKy8qCisgKiBiaXRwYWNrX3RlbXBsLmMKKyAqCisgKiBU aGUgQklUUEFDSyB1bml0IGltcGxlbWVudHMgcm91dGluZXMgcGVydGFpbmluZyB0byBiaXQt cGFja2luZy4gVGhlIGJpdHBhY2sKKyAqIHVuaXQgYWxsb3cgaGlnaGVyLWxldmVsIGZ1bmN0 aW9ucyB0byBjcmVhdGUgaGlnaC1kZW5zaXR5IGFycmF5cyBwYWNrZWQKKyAqIGJpdC1ieS1i aXQuIEluIGdlbmVyYWwsIHdpZHRoIG9mIGVhY2ggaXRlbSBpbiBhIGJpdHBhY2tlZCBhcnJh eSBjYW4gdmFyeSBhbmQKKyAqIGhhdmUgbm90IHRvIGJlIG9mIGZpeGVkIHNpemUsIGl0ZW1z IGNhbiBoYXZlIGRpZmZlcmVudCBsZW5ndGguCisgKi8KKworI2luY2x1ZGUgImxpYi9iaXRw YWNrX3N0YXBsZV90ZW1wbC5oIgorCitpdGVtX3Qgd2lkdGhfZnJvbV92YWwoaXRlbV90IHZh bCk7CitpdGVtX3Qgd2lkdGhfdG9fbWFzayhzaXplX3Qgd2lkdGgpOworc2l6ZV90IGJpdHBh Y2tfcGFjayh1aW50OF90ICpwYWNrLCBzaXplX3QgY2FyZXQsIGl0ZW1fdCBpdGVtLAorCQkJ CQlzaXplX3Qgc3pJdGVtV2lkdGgpOworaXRlbV90IGJpdHBhY2tfdW5wYWNrKGNvbnN0IHVp bnQ4X3QgKnBhY2ssIHNpemVfdCAqY2FyZXQsIHNpemVfdCBzekl0ZW1XaWR0aCk7CisKKy8q CisgKiBTaW5jZSB3aWR0aCBvZiBpdGVtX3QgY2Fubm90IGJlIG1vcmUgdGhhbiBsZW5ndGgg b2YgaXRlbV90CisgKiBsZyhNQVgoaXRlbV90KSkrMSwgd2UgdXNlIHRoZSBpdGVtX3QgdHlw ZSBmb3IgcmV0dXJuZWQgdmFsdWUKKyAqLworaXRlbV90Cit3aWR0aF9mcm9tX3ZhbChpdGVt X3QgdmFsKQoreworCWl0ZW1fdCB3aWR0aCA9IDA7CisKKwl3aGlsZSAodmFsKSB7CisJCXdp ZHRoKys7CisJCXZhbCA9IHZhbCA+PiAxOworCX0KKworCXJldHVybiB3aWR0aCA9PSAwID8g MSA6IHdpZHRoOworfQorCitpdGVtX3QKK3dpZHRoX3RvX21hc2soc2l6ZV90IHdpZHRoKQor eworCXNpemVfdCBtYXNrID0gMDsKKworCUFzc2VydCh3aWR0aCAhPSAwKTsKKwlBc3NlcnQo d2lkdGggPD0gc2l6ZW9mKGl0ZW1fdCkgKiA4KTsKKworCWlmIChsaWtlbHkod2lkdGggPCBz aXplb2Yoc2l6ZV90KSkpCisJCW1hc2sgPSAoMSA8PCB3aWR0aCkgLSAxOworCWVsc2UKKwkJ d2hpbGUgKHdpZHRoLS0pCisJCQltYXNrID0gKG1hc2sgPDwgMSkgfCAxOworCisJcmV0dXJu IChpdGVtX3QpbWFzazsKK30KKworc2l6ZV90CitiaXRwYWNrX3BhY2sodWludDhfdCAqcGFj aywgc2l6ZV90IGNhcmV0LCBpdGVtX3QgaXRlbSwgc2l6ZV90IHN6SXRlbVdpZHRoKQorewor CXNpemVfdCBzekl0ZW1XaWR0aFRvR28gPSBzekl0ZW1XaWR0aDsKKwlpdGVtX3QgaXRtTWFz a1RvR28gPSB3aWR0aF90b19tYXNrKHN6SXRlbVdpZHRoKTsKKworCXdoaWxlIChzekl0ZW1X aWR0aFRvR28gPiAwKSB7CisJCXNpemVfdCBjbnRTYXZlZEJpdHM7CisJCXNpemVfdCBieXRl ID0gY2FyZXQgLyA4OworCQlzaXplX3Qgb2ZmID0gY2FyZXQgJSA4OworCQl1aW50OF90IHVi Q2h1bmsgPSAodWludDhfdClpdGVtIDw8IG9mZjsKKwkJaXRlbV90IGl0bUNodW5rTWFzayA9 IGl0bU1hc2tUb0dvIDw8IG9mZjsKKwkJLyoKKwkJICogQXBwbHlpbmcgY2h1bmsgdXNpbmcg dGhlIG1hc2suIFNldHRpbmcgYml0cyB0byBvbmUgYW5kIHJlc2V0dGluZyBiaXRzCisJCSAq IHRvIHplcm8gaXMgb25seSBpbiBzY29wZXMgZGVmaW5lZCBieSB0aGUgbWFzay4gWmVyb2lu ZyBvZiBiaXRzCisJCSAqIGFjY29yZGluZyB0byBhIG1hc2ssIHdlIGNhbiB1c2UgZXZlbiBh IHBhY2sgbm90IGJlZW4gbnVsbGVkIGluCisJCSAqIGFkdmFuY2UuCisJCSAqLworCQlwYWNr W2J5dGVdIHw9ICh1YkNodW5rICYgaXRtQ2h1bmtNYXNrKTsKKwkJcGFja1tieXRlXSAmPSAo dWJDaHVuayB8IH5pdG1DaHVua01hc2spOworCQljbnRTYXZlZEJpdHMgPSAoOCAtIG9mZiA+ IHN6SXRlbVdpZHRoVG9HbykgPworCQkJc3pJdGVtV2lkdGhUb0dvIDoKKwkJCTggLSBvZmY7 IC8vIG51bWJlciBvZiBzYXZlZCBiaXRzCisJCXN6SXRlbVdpZHRoVG9HbyAtPSBjbnRTYXZl ZEJpdHM7CisJCWNhcmV0ICs9IGNudFNhdmVkQml0czsKKwkJaXRlbSA9IGl0ZW0gPj4gY250 U2F2ZWRCaXRzOworCQlpdG1NYXNrVG9HbyA9IGl0bU1hc2tUb0dvID4+IGNudFNhdmVkQml0 czsKKwl9CisJcmV0dXJuIGNhcmV0OworfQorCitpdGVtX3QKK2JpdHBhY2tfdW5wYWNrKGNv bnN0IHVpbnQ4X3QgKnBhY2ssIHNpemVfdCAqY2FyZXQsIHNpemVfdCB3aWRJdGVtKQorewor CXNpemVfdCBzekl0ZW1DYXJldDsKKwlzaXplX3Qgc3pJdGVtV2lkdGhUb0dvOworCXVpbnQ4 X3QgaXRlbVtzaXplb2YoaXRlbV90KV07IC8qIHNpemUgb2YgaXRlbSBhcnJheSAqLworCisJ c2l6ZV90IHN6UGFja0J5dGU7CisJc2l6ZV90IHN6UGFja09mZjsKKwlzaXplX3Qgc3pJdGVt Qnl0ZTsKKwlzaXplX3Qgc3pJdGVtT2ZmOworCXVpbnQ4X3QgdWJDaHVuazsKKworCXN6SXRl bUNhcmV0ID0gMDsKKwlzekl0ZW1XaWR0aFRvR28gPSB3aWRJdGVtOworCW1lbXNldChpdGVt LCAwLCBzaXplb2YoaXRlbV90KSk7CisKKwl3aGlsZSAoc3pJdGVtV2lkdGhUb0dvID4gMCkg eworCQlzaXplX3Qgc3pDaHVua1NpemU7CisJCXNpemVfdCBzekNodW5rTG93U2l6ZSwgc3pD aHVua0hpZ2hTaXplOworCisJCXN6UGFja0J5dGUgPSAqY2FyZXQgLyA4OworCQlzelBhY2tP ZmYgPSAqY2FyZXQgJSA4OworCQlzekl0ZW1CeXRlID0gc3pJdGVtQ2FyZXQgLyA4OworCQlz ekl0ZW1PZmYgPSBzekl0ZW1DYXJldCAlIDg7CisKKwkJdWJDaHVuayA9IHBhY2tbc3pQYWNr Qnl0ZV0gPj4gc3pQYWNrT2ZmOworCisJCXN6Q2h1bmtTaXplID0gOCAtIHN6UGFja09mZjsK KwkJaWYgKHN6SXRlbVdpZHRoVG9HbyA8IHN6Q2h1bmtTaXplKSB7CisJCQlzekNodW5rU2l6 ZSA9IHN6SXRlbVdpZHRoVG9HbzsKKwkJCXViQ2h1bmsgPSB1YkNodW5rICYgKHVpbnQ4X3Qp d2lkdGhfdG9fbWFzayhzekl0ZW1XaWR0aFRvR28pOworCQl9CisKKwkJaWYgKHN6Q2h1bmtT aXplID4gKDggLSBzekl0ZW1PZmYpKSAvKiBGcmVlIHNwYWNlIG9mIGl0ZW1bc3pJdGVtQnl0 ZV0gKi8KKwkJeworCQkJc3pDaHVua0xvd1NpemUgPSA4IC0gc3pJdGVtT2ZmOworCQkJc3pD aHVua0hpZ2hTaXplID0gc3pDaHVua1NpemUgLSBzekNodW5rTG93U2l6ZTsKKwkJfSBlbHNl IHsKKwkJCXN6Q2h1bmtMb3dTaXplID0gc3pDaHVua1NpemU7CisJCQlzekNodW5rSGlnaFNp emUgPSAwOworCQl9CisKKwkJaXRlbVtzekl0ZW1CeXRlXSB8PSB1YkNodW5rIDw8IHN6SXRl bU9mZjsgLyogY2h1bmtfbG93ICovCisKKwkJaWYgKHN6Q2h1bmtIaWdoU2l6ZSAhPSAwKSB7 CisJCQlBc3NlcnQoKHN6SXRlbUJ5dGUgKyAxKSA8IHNpemVvZihpdGVtX3QpKTsgLyogc2l6 ZSBvZiBpdGVtIGFycmF5ICovCisJCQlpdGVtW3N6SXRlbUJ5dGUgKyAxXSB8PSB1YkNodW5r ID4+IHN6Q2h1bmtMb3dTaXplOyAvKiBjaHVua19oaWdoICovCisJCX0KKworCQkqY2FyZXQg Kz0gc3pDaHVua1NpemU7CisJCXN6SXRlbUNhcmV0ICs9IHN6Q2h1bmtTaXplOworCQlzekl0 ZW1XaWR0aFRvR28gLT0gc3pDaHVua1NpemU7CisJfQorCisJLyoKKwkgKiBSZW9yZGVyaW5n IGJ5dGVzIGluIGFjY29yZGFuY2Ugd2l0aCBlbmRpYW5uZXNzIG9mIHRoZSBzeXN0ZW0uCisJ ICoKKwkgKiBIZXJlIGZvciBhIExpdHRsZS1lbmRpYW4gc3lzdGVtIHdlIGNhbiBhdm9pZCBy ZW9yZGVyaW5nLCBidXQgaW4gc3VjaCBhCisJICogY2FzZSB3ZSBuZWVkIHRvIGtlZXAgdGhl IGl0ZW0gYXJyYXkgYWxpZ25lZCB3aXRoIGl0ZW1fdCB0eXBlLCBidXQgd2UgZG8KKwkgKiBu b3Qga2VlcC4KKwkgKi8KKwl7CisJCXNpemVfdCBqID0gMTsKKwkJaXRlbV90IHZhbCA9IGl0 ZW1bc2l6ZW9mKGl0ZW1fdCkgLSBqXTsKKwkJd2hpbGUgKCsraiA8PSBzaXplb2YoaXRlbV90 KSkgeworCQkJdmFsID0gdmFsIDw8IDg7CisJCQl2YWwgfD0gaXRlbVtzaXplb2YoaXRlbV90 KSAtIGpdOworCQl9CisJCXJldHVybiB2YWw7CisJfQorfQorCisjaW5jbHVkZSAibGliL2Jp dHBhY2tfdGVtcGxfdW5kZWYuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2xpYi9iaXRw YWNrX3UxNi5jIGIvc3JjL2JhY2tlbmQvbGliL2JpdHBhY2tfdTE2LmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmFlMmVlNmQ2YmIyCi0tLSAvZGV2L251bGwK KysrIGIvc3JjL2JhY2tlbmQvbGliL2JpdHBhY2tfdTE2LmMKQEAgLTAsMCArMSw4IEBACisv KgorICogRmlsZTogYml0cGFja191MTYuYworICovCisKKy8qIGNsYW5nLWZvcm1hdCBvZmYg Ki8KKyNpbmNsdWRlICJsaWIvYml0cGFja191MTZfY29uZmlnLmgiCisjaW5jbHVkZSAiYml0 cGFja190ZW1wbC5jIgorLyogY2xhbmctZm9ybWF0IG9uICovCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9saWIvbWVzb24uYnVpbGQgYi9zcmMvYmFja2VuZC9saWIvbWVzb24uYnVpbGQK aW5kZXggOGUzOGZiMjBmMTcuLjA5ODRiZDBlM2Y2IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9saWIvbWVzb24uYnVpbGQKKysrIGIvc3JjL2JhY2tlbmQvbGliL21lc29uLmJ1aWxkCkBA IC0xLDUgKzEsMTAgQEAKICMgQ29weXJpZ2h0IChjKSAyMDIyLTIwMjYsIFBvc3RncmVTUUwg R2xvYmFsIERldmVsb3BtZW50IEdyb3VwCiAKK2Rmb3Jfc291cmNlcyA9IGZpbGVzKAorICAn Yml0cGFja191MTYuYycsCisgICd2ZWN0X3UxNi5jJworKQorCiBiYWNrZW5kX3NvdXJjZXMg Kz0gZmlsZXMoCiAgICdiaXBhcnRpdGVfbWF0Y2guYycsCiAgICdibG9vbWZpbHRlci5jJywK QEAgLTExLDMgKzE2LDUgQEAgYmFja2VuZF9zb3VyY2VzICs9IGZpbGVzKAogICAncGFpcmlu Z2hlYXAuYycsCiAgICdyYnRyZWUuYycsCiApCisKK2JhY2tlbmRfc291cmNlcyArPSBkZm9y X3NvdXJjZXMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2xpYi92ZWN0X3RlbXBsLmMgYi9z cmMvYmFja2VuZC9saWIvdmVjdF90ZW1wbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi41MjcxM2MzOWQzYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNr ZW5kL2xpYi92ZWN0X3RlbXBsLmMKQEAgLTAsMCArMSwzMDEgQEAKKy8qCisgKiBGaWxlOiB2 ZWN0X3RlbXBsLmMKKyAqLworCisjaW5jbHVkZSAibGliL3ZlY3RfdGVtcGxfc3RhcGxlLmgi CisKKy8qCisgKiBWZWN0b3IncyBmdW5jdGlvbnMKKyAqIEtlZXAgdGhpcyBzZWN0aW9uIGVx dWFsIHRvIHRoZSBzYW1lIHNlY3Rpb24gaW4gdmVjdF90ZW1wbC5oCisgKi8KKy8qCisgKiBD YWxsZXIgaGFzIHRvIGNvbnRyb2wgd2hldGhlciB2ZWN0b3IgdXNlIG91dGVyIG1lbW9yeSBw cm92aWRlZCBieSBjYWxsZXIgb3IKKyAqIG1hbmFnZSBtZW1vcnkgYWxsb2NhdGlvbiBhdXRv bWF0aWNhbGx5LCB3aGljaCBkZWZpbmVzIHdoZXRoZXIgdmVjdF9pbnNlcnQsCisgKiB2ZWN0 X2FwcGVuZCBhbmQgb3RoZXIgZnVuY3Rpb25zIG9mIHRoZSB2ZWN0b3IgY29udGFpbmVyIGF1 dG9tYXRpY2FsbHkgbWFuZ2UKKyAqIGR5bmFtaWMgbWVtb3J5IGFsbG9jYXRpb24gb3Igbm90 LgorICovCisKK2ludCB2ZWN0X2luaXQodmVjdF90ICp2LCBzaXplX3QgY2FwLCBpdGVtX3Qg b3V0ZXJfbWVtW10pOworaW50IHZlY3RfZmlsbCh2ZWN0X3QgKnYsIHNpemVfdCBjbnQsIGNv bnN0IGl0ZW1fdCBpbltdKTsKK2ludCB2ZWN0X3Jlc2VydmUodmVjdF90ICp2LCBzaXplX3Qg c3pOZXdDYXApOworaW50IHZlY3RfYXBwZW5kKHZlY3RfdCAqdmVjdCwgaXRlbV90IHZhbCk7 Cit2b2lkIHZlY3RfcHJpbnQoY29uc3QgdmVjdF90ICphKTsKK2ludCB2ZWN0X2NvbXBhcmUo Y29uc3QgdmVjdF90ICphLCBjb25zdCB2ZWN0X3QgKmIpOworaW50IHZlY3RfaW5zZXJ0KHZl Y3RfdCAqdiwgc2l6ZV90IHBvcywgaXRlbV90IHZhbCk7Cit2b2lkIHZlY3RfY2xlYXIodmVj dF90ICp2KTsKKworLyoKKyAqIFVuaXF1ZSBzb3J0ZWQgdmVjdG9yJ3MgZnVuY3Rpb25zCisg KiBLZWVwIHRoaXMgc2VjdGlvbiBlcXVhbCB0byB0aGUgc2FtZSBzZWN0aW9uIGluIHZlY3Rf dGVtcGwuaAorICovCit1c3ZfaW5zX3Jlc190IHVzdl9pbnNlcnQodW5pcXNvcnR2ZWN0X3Qg KmEsIGl0ZW1fdCB2YWwpOwordXN2X3NyY2hfcmVzX3QgdXN2X3NlYXJjaChjb25zdCB1bmlx c29ydHZlY3RfdCAqdXN2LCBpdGVtX3QgdmFsKTsKKworaW50Cit2ZWN0X2luaXQodmVjdF90 ICp2LCBzaXplX3QgY2FwLCBpdGVtX3Qgb3V0ZXJfbWVtW10pCit7CisJaWYgKHYgPT0gTlVM TCkKKwkJZ290byB2ZWN0X2luaXRfZXJyb3I7CisKKwl2LT5jYXAgPSBjYXA7CisJdi0+Y250 ID0gMDsKKworCWlmIChvdXRlcl9tZW0gIT0gTlVMTCkKKwl7CisJCXYtPm1lbV9pc19vdXRl ciA9IHRydWU7CisJCXYtPm0gPSBvdXRlcl9tZW07CisJfQorCWVsc2UKKwl7CisJCXYtPm1l bV9pc19vdXRlciA9IGZhbHNlOworCQlpZiAoY2FwID09IDApCisJCQl2LT5tID0gTlVMTDsK KwkJZWxzZQorCQl7CisJCQl2LT5tID0gKGl0ZW1fdCAqKVZFQ1RfTUFMTE9DKGNhcCAqIHNp emVvZihpdGVtX3QpKTsKKwkJCWlmICh2LT5tID09IE5VTEwpCisJCQkJZ290byB2ZWN0X2lu aXRfZXJyb3I7CisJCX0KKwl9CisKKwkvKiB2ZWN0X2luaXRfb2s6ICovCisJcmV0dXJuIDA7 Cit2ZWN0X2luaXRfZXJyb3I6CisJbWVtc2V0KHYsIDAsIHNpemVvZih2ZWN0X3QpKTsKKwly ZXR1cm4gLTE7Cit9CisKK2ludAordmVjdF9maWxsKHZlY3RfdCAqdiwgc2l6ZV90IGNudCwg Y29uc3QgaXRlbV90IGluW10pCit7CisJaWYgKHYgPT0gTlVMTCkKKwkJcmV0dXJuIC0xOwor CisJaWYgKGNudCA9PSAwKQorCXsKKwkJdmVjdF9jbGVhcih2KTsKKwkJcmV0dXJuIDA7CisJ fQorCisJZm9yIChzaXplX3QgaiA9IDA7IGogPCBjbnQ7IGorKykKKwl7CisJCWlmICh2ZWN0 X2FwcGVuZCh2LCBpbltqXSkgIT0gMCkKKwkJeworCQkJdmVjdF9jbGVhcih2KTsKKwkJCXJl dHVybiAtMTsKKwkJfQorCX0KKwlyZXR1cm4gMDsKK30KKworaW50Cit2ZWN0X3Jlc2VydmUo dmVjdF90ICp2LCBzaXplX3Qgc3pOZXdDYXApCit7CisJaXRlbV90ICptTmV3OworCisJaWYg KHYgPT0gTlVMTCkKKwkJcmV0dXJuIC0xOworCisJaWYgKHYtPm1lbV9pc19vdXRlcikKKwkJ cmV0dXJuIC0xOworCisJaWYgKHN6TmV3Q2FwIDw9IHYtPmNhcCkKKwkJcmV0dXJuIDA7CisK KwltTmV3ID0gKGl0ZW1fdCAqKSBWRUNUX01BTExPQyhzaXplb2YoaXRlbV90KSAqIHN6TmV3 Q2FwKTsKKworCWlmIChtTmV3ID09IE5VTEwpCisJCXJldHVybiAtMTsKKworCWlmKHYtPm0g PT0gTlVMTCAmJiB2LT5jbnQgIT0gMCkKKwkJcmV0dXJuIC0xOworCisJaWYodi0+bSAhPSBO VUxMICYmIHYtPmNudCAhPSAwKQorCQltZW1jcHkobU5ldywgdi0+bSwgdi0+Y250ICogc2l6 ZW9mKGl0ZW1fdCkpOworCisJVkVDVF9GUkVFKHYtPm0pOworCXYtPm0gPSBtTmV3OworCXYt PmNhcCA9IHN6TmV3Q2FwOworCXJldHVybiAwOworfQorCitpbnQKK3ZlY3RfYXBwZW5kKHZl Y3RfdCAqdmVjdCwgaXRlbV90IHZhbCkKK3sKKwlpZiAodmVjdCA9PSBOVUxMKQorCQlyZXR1 cm4gLTE7CisKKwlpZiAodmVjdC0+Y250ICsgMSA+IHZlY3QtPmNhcCkKKwl7CisJCWlmICh2 ZWN0LT5tZW1faXNfb3V0ZXIpCisJCQlyZXR1cm4gLTE7CisJCWVsc2UKKwkJCXZlY3RfcmVz ZXJ2ZSh2ZWN0LCB2ZWN0LT5jYXAgKyBWRUNUX01FTUFMTE9DU1RFUCk7CisJfQorCisJdmVj dC0+bVt2ZWN0LT5jbnRdID0gdmFsOworCXZlY3QtPmNudCsrOworCXJldHVybiAwOworfQor Cit2b2lkCit2ZWN0X3ByaW50KGNvbnN0IHZlY3RfdCAqYSkKK3sKKwlmb3IgKHNpemVfdCBq ID0gMDsgaiA8IGEtPmNudDsgaisrKQorCQlwcmludGYoIiUiIFZFQ1RfSVRFTV9GT1JNQVRf U1BFQ0lGSUVSICIgIiwgYS0+bVtqXSk7CisKKwlwcmludGYoIlxuIik7Cit9CisKK2ludAor dmVjdF9jb21wYXJlKGNvbnN0IHZlY3RfdCAqYSwgY29uc3QgdmVjdF90ICpiKQoreworCWlm IChhID09IE5VTEwgfHwgYiA9PSBOVUxMKQorCQlyZXR1cm4gLTE7CisKKwlpZiAoYS0+Y250 ICE9IGItPmNudCkKKwkJcmV0dXJuIC0xOworCisJZm9yIChzaXplX3QgaiA9IDA7IGogPCBh LT5jbnQ7IGorKykKKwkJaWYgKGEtPm1bal0gIT0gYi0+bVtqXSkKKwkJCXJldHVybiAtMTsK KworCXJldHVybiAwOworfQorCitpbnQKK3ZlY3RfaW5zZXJ0KHZlY3RfdCAqdiwgc2l6ZV90 IHBvcywgaXRlbV90IHZhbCkKK3sKKwlpZiAodi0+Y2FwIDwgdi0+Y250ICsgMSAmJgorCQko di0+bWVtX2lzX291dGVyIHx8IHZlY3RfcmVzZXJ2ZSh2LCB2LT5jYXAgKyBWRUNUX01FTUFM TE9DU1RFUCkgIT0gMCkpCisJCXJldHVybiAtMTsKKworCS8qCisJICogSWYgbmVlZCwgbW92 ZSByaWdodCBmcm9tIHBvcyBpbmNsdWRpbmcgcG9zLiBCZWNhdXNlCisJICogbmVpdGhlciBz dGRsaWIncyBub3IgUE9TSVgncyBkb2N1bWVudGF0aW9uIGRlZmluZXMgdGhlCisJICogYmVo YXZpb3VyIG9mIG1lbW1vdmUgaW4gY2FzZSBvZiBjb3VudD0wLCB3ZSBjaGVjayBpdCBieQor CSAqIG91cnNlbHZlcy4KKwkgKi8KKwlpZiAodi0+Y250IC0gcG9zID4gMCkKKwkJbWVtbW92 ZSgmdi0+bVtwb3MgKyAxXSwgJnYtPm1bcG9zXSwgKHYtPmNudCAtIHBvcykgKiBzaXplb2Yo aXRlbV90KSk7CisKKwl2LT5tW3Bvc10gPSB2YWw7CisJdi0+Y250Kys7CisJcmV0dXJuIDA7 Cit9CisKK3ZvaWQKK3ZlY3RfY2xlYXIodmVjdF90ICp2KQoreworCWlmICh2ID09IE5VTEwp CisJCXJldHVybjsKKworCWlmICghdi0+bWVtX2lzX291dGVyKQorCQlWRUNUX0ZSRUUodi0+ bSk7CisKKwltZW1zZXQodiwgMCwgc2l6ZW9mKHZlY3RfdCkpOworfQorCit1c3Zfc3JjaF9y ZXNfdAordXN2X3NlYXJjaChjb25zdCB1bmlxc29ydHZlY3RfdCAqdXN2LCBpdGVtX3QgdmFs KQoreworCXNpemVfdCBpLCBsLCBnOworCXVzdl9zcmNoX3Jlc190IHJlczsKKworCWlmICh1 c3YgPT0gTlVMTCB8fCAodXN2LT5tID09IE5VTEwgJiYgKCh1c3YtPmNudCAhPSAwKSB8fCB1 c3YtPmNhcCAhPSAwKSkpIHsKKwkJcmVzLnN0ID0gVVNWX1NSQ0hfRVJST1I7CisJCXJldHVy biByZXM7CisJfQorCisJaWYgKHVzdi0+Y250ID09IDApIHsKKwkJcmVzLnBvcyA9IDA7CisJ CXJlcy5zdCA9IFVTVl9TUkNIX0VNUFRZOworCQlyZXR1cm4gcmVzOworCX0KKworCWlmICh2 YWwgPCB1c3YtPm1bMF0pIHsKKwkJcmVzLnBvcyA9IDA7CisJCXJlcy5zdCA9IFVTVl9TUkNI X05PVF9GT1VORF9TTUFMTEVTVDsKKwkJcmV0dXJuIHJlczsKKwl9CisKKwlpZiAodmFsID4g dXN2LT5tW3Vzdi0+Y250IC0gMV0pIHsKKwkJcmVzLnBvcyA9IHVzdi0+Y250IC0gMTsKKwkJ cmVzLnN0ID0gVVNWX1NSQ0hfTk9UX0ZPVU5EX0xBUkdFU1Q7CisJCXJldHVybiByZXM7CisJ fQorCisJbCA9IDA7CisJZyA9IHVzdi0+Y250IC0gMTsKKworCXdoaWxlIChnIC0gbCA+IDEp IHsKKwkJaSA9IGwgKyAoZyAtIGwpIC8gMjsKKwkJaWYgKHZhbCA9PSB1c3YtPm1baV0pIHsK KwkJCXJlcy5wb3MgPSBpOworCQkJcmVzLnN0ID0gVVNWX1NSQ0hfRk9VTkQ7CisJCQlyZXR1 cm4gcmVzOworCQl9IGVsc2UgaWYgKHZhbCA+IHVzdi0+bVtpXSkgeworCQkJbCA9IGk7CisJ CX0gZWxzZSAvLyB2YWwgPD0gdXN2LT5tW2ldCisJCXsKKwkJCWcgPSBpOworCQl9CisJfQor CS8qCisJICogV2hlbiBzY29wZXMgbCBhbmQgZyBhcmUgbmVpZ2hib3VycyAoICBnLWwgPSAx KQorCSAqLworCWlmICh2YWwgPT0gdXN2LT5tW2ddKSB7CisJCXJlcy5wb3MgPSBnOworCQly ZXMuc3QgPSBVU1ZfU1JDSF9GT1VORDsKKwkJcmV0dXJuIHJlczsKKwl9IGVsc2UgaWYgKHZh bCA9PSB1c3YtPm1bbF0pIHsKKwkJcmVzLnBvcyA9IGw7CisJCXJlcy5zdCA9IFVTVl9TUkNI X0ZPVU5EOworCQlyZXR1cm4gcmVzOworCX0KKworCXJlcy5wb3MgPSBnOworCXJlcy5zdCA9 IFVTVl9TUkNIX05PVF9GT1VORDsKKwlyZXR1cm4gcmVzOworfQorCisvKgorICogSU5TRVJU CisgKiByZWNlaXZlcyBhIHZhbHVlLCBjaGVja3Mgd2hldGhlciBhbiB1bmlxdWUgc29ydGVk IHZhbHVlcyB2ZWN0b3IgY29udGFpbnMKKyAqIHRoaXMgdmFsdWUuIElmIG5vdCwgaW5zZXJ0 cyBuZXcgdmFsdWUsIHJldGFpbmluZyBzb3J0ZWQgb3JkZXIuCisgKi8KK3Vzdl9pbnNfcmVz X3QKK3Vzdl9pbnNlcnQodW5pcXNvcnR2ZWN0X3QgKmEsIGl0ZW1fdCB2YWwpCit7CisJdXN2 X3NyY2hfcmVzX3Qgc2VhcmNoOworCXVzdl9pbnNfcmVzX3QgaW5zZXJ0OworCisJQXNzZXJ0 KGEgIT0gTlVMTCk7CisKKwlzZWFyY2ggPSB1c3Zfc2VhcmNoKGEsIHZhbCk7CisJaWYgKHNl YXJjaC5zdCA9PSBVU1ZfU1JDSF9GT1VORCkgeworCQlpbnNlcnQuc3QgPSBVU1ZfSU5TX0VY SVNUUzsKKwkJaW5zZXJ0LnBvcyA9IHNlYXJjaC5wb3M7CisJCXJldHVybiBpbnNlcnQ7CisJ fSBlbHNlIGlmIChzZWFyY2guc3QgPT0gVVNWX1NSQ0hfTk9UX0ZPVU5EX1NNQUxMRVNUIHx8 CisJCQkgICBzZWFyY2guc3QgPT0gVVNWX1NSQ0hfTk9UX0ZPVU5EKSB7CisJCWluc2VydC5w b3MgPSBzZWFyY2gucG9zOworCX0gZWxzZSBpZiAoc2VhcmNoLnN0ID09IFVTVl9TUkNIX0VN UFRZIHx8CisJCQkgICBzZWFyY2guc3QgPT0gVVNWX1NSQ0hfTk9UX0ZPVU5EX0xBUkdFU1Qp IHsKKwkJLyogSW4gY2FzZSB3aGVuIHZhbHVlIGlzIG1vcmUgdGhhbiBsYXJnZXN0OiBwb3Mg PSBhLT5jbnQgPSBzZWFyY2guZyArIDEuCisJCSAqLworCQkvKiBJbiBjYXNlIG9mIGVtcHR5 IHZlY3RvcjogcG9zID0gYS0+Y250ID0gMC4gKi8KKwkJaW5zZXJ0LnBvcyA9IGEtPmNudDsK Kwl9IGVsc2UgLyogVVNWX1NSQ0hfRVJST1Igb3IgdW5rbm93biByZXN1bHQgKi8KKwl7CisJ CWluc2VydC5zdCA9IFVTVl9JTlNfRVJST1I7CisJCXJldHVybiBpbnNlcnQ7CisJfQorCisJ aW5zZXJ0LnN0ID0gdmVjdF9pbnNlcnQoYSwgaW5zZXJ0LnBvcywgdmFsKQorCT09IDAgPyBV U1ZfSU5TX05FVyA6IFVTVl9JTlNfRVJST1I7CisKKwlyZXR1cm4gaW5zZXJ0OworfQorCisj aW5jbHVkZSAibGliL3ZlY3RfdGVtcGxfdW5kZWYuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2xpYi92ZWN0X3UxNi5jIGIvc3JjL2JhY2tlbmQvbGliL3ZlY3RfdTE2LmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjBhYjhlMjI0YzdhCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjL2JhY2tlbmQvbGliL3ZlY3RfdTE2LmMKQEAgLTAsMCArMSw4IEBA CisvKgorICogRmlsZTogdmVjdF91MTYuYworICovCisKKy8qIGNsYW5nLWZvcm1hdCBvZmYg Ki8KKyNpbmNsdWRlICJsaWIvdmVjdF91MTZfY29uZmlnLmgiCisjaW5jbHVkZSAidmVjdF90 ZW1wbC5jIgorLyogY2xhbmctZm9ybWF0IG9uICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9jLmggYi9zcmMvaW5jbHVkZS9jLmgKaW5kZXggODhkMTNlYzk5OTMuLjFlNDhhNTJhZTkw IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jLmgKKysrIGIvc3JjL2luY2x1ZGUvYy5oCkBA IC01MDUsNiArNTA1LDEwIEBAIGV4dGVybiAiQysrIgogI2RlZmluZSBDcHBBc1N0cmluZyhp ZGVudGlmaWVyKSAjaWRlbnRpZmllcgogI2RlZmluZSBDcHBBc1N0cmluZzIoeCkJCQlDcHBB c1N0cmluZyh4KQogI2RlZmluZSBDcHBDb25jYXQoeCwgeSkJCQl4IyN5CisjZGVmaW5lIENw cENvbmNhdDIoeCwgeSkJCUNwcENvbmNhdCh4LCB5KQorCisjZGVmaW5lIENwcENvbmNhdFRy aXBsZSh4LCB5LCB6KQl4IyN5IyN6CisjZGVmaW5lIENwcENvbmNhdFRyaXBsZTIoYSwgYiwg YykJQ3BwQ29uY2F0VHJpcGxlKGEsIGIsIGMpCiAKIC8qCiAgKiBWQV9BUkdTX05BUkdTCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9saWIvYml0cGFja19zdGFwbGVfdGVtcGwuaCBiL3Ny Yy9pbmNsdWRlL2xpYi9iaXRwYWNrX3N0YXBsZV90ZW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41Yzk5NzJlMDhjYgotLS0gL2Rldi9udWxsCisrKyBi L3NyYy9pbmNsdWRlL2xpYi9iaXRwYWNrX3N0YXBsZV90ZW1wbC5oCkBAIC0wLDAgKzEsNTcg QEAKKy8qCisgKiBGaWxlOiBiaXRwYWNrX3N0YXBsZV90ZW1wbC5oLmgKKyAqLworCisjaW5j bHVkZSAiYy5oIgorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBOT05SRVVTQUJM RSBDT0RFLCBhbGxvd2VkIHRvIGJlIGluY2x1ZGVkIG9ubHkgb25jZQorICoKKyAqIFRoaXMg Y29kZSBzaG91bGQgYXBwZWFyIG9ubHkgb25jZSBpbiBhIGZpbGUgKG9yIGluIGEgY2hhaW4g b2YgZmlsZXMpCisgKiBpbmNsdWRpbmcgdGhpcyBoZWFkZXIgd2l0aCAjaW5jbHVkZS4gU28s IHdlIHByb3RlY3QgaXQgZnJvbSBkdXBsaWNhdGVzIGJ5CisgKiBtZWFucyBvZiBtYWNybwor ICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyNpZm5kZWYgX0JJVFBBQ0tfU1RBUExF X1RFTVBMX0hfVU5JUVVFX0NPREVfCisjZGVmaW5lIF9CSVRQQUNLX1NUQVBMRV9URU1QTF9I X1VOSVFVRV9DT0RFXworCisvKiBObyBjb2RlIGhlcmUgeWV0ICovCisKKyNlbmRpZiAvKiBf QklUUEFDS19TVEFQTEVfVEVNUExfSF9VTklRVUVfQ09ERV8gKi8KKworLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgorICogRW5kIG9mIENvZGUsIGFsbG93ZWQgdG8gYmUgaW5jbHVkZWQg b25seSBvbmNlCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKKyAqIFJFVVNBQkxFIENPREUKKyAqCisgKiBUaGlzIGNvZGUgY2FuIGJl IHJldXNlZCB3aXRoICNpbmNsdWRlIGRpcmVjdGl2ZSBpbiBhIGZpbGUgaWYgQklUUEFDS19N QVJLRVIKKyAqIHJlZGVmaW5lZC4gVGhpcyBhbGxvdyBjcmVhdGlvbiBvZiBzZXZlcmFsIHR5 cGVzIG9mIHZlY3RvcnMgd2l0aCBkaWZmZXJlbnQKKyAqIHR5cGVzIG9mIG1lbWJlcnMuCisg KgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIEJJVFBBQ0tfSVRFTV9U WVBFCisjZXJyb3IgIkJJVFBBQ0tfSVRFTV9UWVBFIG1hY3JvIGlzIGluZGVmaW5lZC4iCisj ZW5kaWYKKyNpZm5kZWYgQklUUEFDS19NQVJLRVIKKyNlcnJvciAiQklUUEFDS19NQVJLRVIg bWFjcm8gaXMgaW5kZWZpbmVkLiIKKyNlbmRpZgorCisjZGVmaW5lIGl0ZW1fdAkJICAgQklU UEFDS19JVEVNX1RZUEUKKyNkZWZpbmUgd2lkdGhfZnJvbV92YWwgQ3BwQ29uY2F0VHJpcGxl Mih3aWR0aF8sIEJJVFBBQ0tfTUFSS0VSLCBfZnJvbV92YWwpCisjZGVmaW5lIHdpZHRoX3Rv X21hc2sgIENwcENvbmNhdFRyaXBsZTIod2lkdGhfLCBCSVRQQUNLX01BUktFUiwgX3RvX21h c2spCisjZGVmaW5lIGJpdHBhY2tfcGFjayAgIENwcENvbmNhdFRyaXBsZTIoYml0cGFja18s IEJJVFBBQ0tfTUFSS0VSLCBfcGFjaykKKyNkZWZpbmUgYml0cGFja191bnBhY2sgQ3BwQ29u Y2F0VHJpcGxlMihiaXRwYWNrXywgQklUUEFDS19NQVJLRVIsIF91bnBhY2spCisKKy8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKKyAqIEVuZCBvZiBSZXVzYWJsZSBDb2RlCisgKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCisKKy8qCisgKiBEb24ndCBmb3JnZXQgdG8gaW5jbHVkZSB0 aGlzIGNvZGUgaW4geW91ciBmaWxlIHRoYXQgdXNlcyB0aGlzIGhlYWRlcgorICoKKyAqICNp bmNsdWRlICJsaWIvYml0cGFja190ZW1wbF91bmRlZi5oIgorICoKKyAqLwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvbGliL2JpdHBhY2tfdGVtcGwuaCBiL3NyYy9pbmNsdWRlL2xpYi9i aXRwYWNrX3RlbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu LmIzYTZlMDZjMzI4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvbGliL2JpdHBh Y2tfdGVtcGwuaApAQCAtMCwwICsxLDE0IEBACisvKgorICogYml0cGFja190ZW1wbC5oCisg KgorICovCisKKyNpbmNsdWRlICJiaXRwYWNrX3N0YXBsZV90ZW1wbC5oIgorCitleHRlcm4g aXRlbV90IHdpZHRoX2Zyb21fdmFsKGl0ZW1fdCB2YWwpOworZXh0ZXJuIGl0ZW1fdCB3aWR0 aF90b19tYXNrKHNpemVfdCB3aWR0aCk7CitleHRlcm4gc2l6ZV90IGJpdHBhY2tfcGFjayh1 aW50OF90ICpwYWNrLCBzaXplX3QgY2FyZXQsIGl0ZW1fdCBpdGVtLAorCQkJCQkJICAgc2l6 ZV90IHN6SXRlbVdpZHRoKTsKK2V4dGVybiBpdGVtX3QgYml0cGFja191bnBhY2soY29uc3Qg dWludDhfdCAqcGFjaywgc2l6ZV90ICpjYXJldCwgc2l6ZV90IHN6SXRlbVdpZHRoKTsKKwor I2luY2x1ZGUgImJpdHBhY2tfdGVtcGxfdW5kZWYuaCIKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2xpYi9iaXRwYWNrX3RlbXBsX3VuZGVmLmggYi9zcmMvaW5jbHVkZS9saWIvYml0cGFj a190ZW1wbF91bmRlZi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li41YmY4NjRmZmExNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL2xpYi9iaXRw YWNrX3RlbXBsX3VuZGVmLmgKQEAgLTAsMCArMSw1IEBACisjdW5kZWYgaXRlbV90CisjdW5k ZWYgd2lkdGhfZnJvbV92YWwKKyN1bmRlZiB3aWR0aF90b19tYXNrCisjdW5kZWYgYml0cGFj a19wYWNrCisjdW5kZWYgYml0cGFja191bnBhY2sKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2xpYi9iaXRwYWNrX3UxNi5oIGIvc3JjL2luY2x1ZGUvbGliL2JpdHBhY2tfdTE2LmgKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjQ1ZmI2YzRiMTdiCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvbGliL2JpdHBhY2tfdTE2LmgKQEAgLTAsMCAr MSwxMiBAQAorLyoKKyAqIGJpdHBhY2suaAorICovCisjaWZuZGVmIF9CSVRQQUNLX1UxNl9I XworI2RlZmluZSBfQklUUEFDS19VMTZfSF8KKworLyogY2xhbmctZm9ybWF0IG9mZiAqLwor I2luY2x1ZGUgImJpdHBhY2tfdTE2X2NvbmZpZy5oIgorI2luY2x1ZGUgImJpdHBhY2tfdGVt cGwuaCIKKy8qIGNsYW5nLWZvcm1hdCBvbiAqLworCisjZW5kaWYgLyogX0JJVFBBQ0tfVTE2 X0hfICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9saWIvYml0cGFja191MTZfY29uZmln LmggYi9zcmMvaW5jbHVkZS9saWIvYml0cGFja191MTZfY29uZmlnLmgKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjllNmM2NGQ0ZmVlCi0tLSAvZGV2L251bGwK KysrIGIvc3JjL2luY2x1ZGUvbGliL2JpdHBhY2tfdTE2X2NvbmZpZy5oCkBAIC0wLDAgKzEs NiBAQAorLyoKKyAqIEZpbGU6IHZlY3RfdTE2X2NvbmZpZy5oCisgKi8KKworI2RlZmluZSBC SVRQQUNLX0lURU1fVFlQRSB1aW50MTZfdAorI2RlZmluZSBCSVRQQUNLX01BUktFUgkgIHUx NgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbGliL3ZlY3RfdGVtcGwuaCBiL3NyYy9pbmNs dWRlL2xpYi92ZWN0X3RlbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLjhlZWM2ZjA2NGIzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvbGli L3ZlY3RfdGVtcGwuaApAQCAtMCwwICsxLDI3IEBACisvKgorICogRmlsZTogdmVjdF90ZW1w bC5oCisgKi8KKworI2luY2x1ZGUgInZlY3RfdGVtcGxfc3RhcGxlLmgiCisKKy8qCisgKiBW ZWN0b3IncyBmdW5jdGlvbnMKKyAqIEtlZXAgdGhpcyBzZWN0aW9uIGVxdWFsIHRvIHRoZSBz YW1lIHNlY3Rpb24gaW4gdmVjdF90ZW1wbC5jCisgKi8KK2V4dGVybiBpbnQgdmVjdF9pbml0 KHZlY3RfdCAqdiwgc2l6ZV90IGNhcCwgaXRlbV90IGV4dGVybmFsX21lbW9yeVtdKTsKK2V4 dGVybiBpbnQgdmVjdF9maWxsKHZlY3RfdCAqdiwgc2l6ZV90IGNudCwgY29uc3QgaXRlbV90 ICppbik7CitleHRlcm4gaW50IHZlY3RfcmVzZXJ2ZSh2ZWN0X3QgKnYsIHNpemVfdCBzek5l d0NhcCk7CitleHRlcm4gaW50IHZlY3RfYXBwZW5kKHZlY3RfdCAqdmVjdCwgaXRlbV90IHZh bCk7CitleHRlcm4gdm9pZCB2ZWN0X3ByaW50KGNvbnN0IHZlY3RfdCAqYSk7CitleHRlcm4g aW50IHZlY3RfY29tcGFyZShjb25zdCB2ZWN0X3QgKmEsIGNvbnN0IHZlY3RfdCAqYik7Citl eHRlcm4gaW50IHZlY3RfaW5zZXJ0KHZlY3RfdCAqdiwgc2l6ZV90IHBvcywgaXRlbV90IHZh bCk7CitleHRlcm4gdm9pZCB2ZWN0X2NsZWFyKHZlY3RfdCAqdik7CisKKy8qCisgKiBVbmlx dWUgc29ydGVkIHZlY3RvcidzIGZ1bmN0aW9ucworICogS2VlcCB0aGlzIHNlY3Rpb24gZXF1 YWwgdG8gdGhlIHNhbWUgc2VjdGlvbiBpbiB2ZWN0X3RlbXBsLmMKKyAqLworZXh0ZXJuIHVz dl9pbnNfcmVzX3QgdXN2X2luc2VydCh1bmlxc29ydHZlY3RfdCAqYSwgaXRlbV90IHZhbCk7 CitleHRlcm4gdXN2X3NyY2hfcmVzX3QgdXN2X3NlYXJjaChjb25zdCB1bmlxc29ydHZlY3Rf dCAqdXN2LCBpdGVtX3QgdmFsKTsKKworI2luY2x1ZGUgInZlY3RfdGVtcGxfdW5kZWYuaCIK XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9s aWIvdmVjdF90ZW1wbF9zdGFwbGUuaCBiL3NyYy9pbmNsdWRlL2xpYi92ZWN0X3RlbXBsX3N0 YXBsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iMTkyYzZk ODJhMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL2xpYi92ZWN0X3RlbXBsX3N0 YXBsZS5oCkBAIC0wLDAgKzEsMTQwIEBACisvKgorICogRmlsZTogdmVjdF9zdGFwbGVfdGVt cGwuaAorICovCisKKyNpbmNsdWRlICJjLmgiCisKKy8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioKKyAqIE5PTlJFVVNBQkxFIENPREUsIGFsbG93ZWQgdG8gYmUgaW5jbHVkZWQgb25seSBv bmNlCisgKgorICogVGhpcyBjb2RlIHNob3VsZCBhcHBlYXIgb25seSBvbmNlIGluIGEgZmls ZSAob3IgaW4gYSBjaGFpbiBvZiBmaWxlcykKKyAqIGluY2x1ZGluZyB0aGlzIGhlYWRlciB3 aXRoICNpbmNsdWRlLiBTbywgd2UgcHJvdGVjdCBpdCBmcm9tIGR1cGxpY2F0ZXMgYnkKKyAq IG1lYW5zIG9mIG1hY3JvCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworI2lmbmRl ZiBfVkVDVF9TVEFQTEVfVEVNUExfSF9VTklRVUVfQ09ERV8KKyNkZWZpbmUgX1ZFQ1RfU1RB UExFX1RFTVBMX0hfVU5JUVVFX0NPREVfCisKKy8qCisgKiBTRUFSQ0ggaW4gVmVjdG9yIG9m IFVuaXF1ZSBTb3J0ZWQgbWVtYmVycworICovCit0eXBlZGVmIGVudW0KK3sKKwlVU1ZfU1JD SF9FUlJPUiA9IC0xLAorCVVTVl9TUkNIX0ZPVU5EID0gMCwKKwlVU1ZfU1JDSF9FTVBUWSwK KwlVU1ZfU1JDSF9OT1RfRk9VTkQsCisJVVNWX1NSQ0hfTk9UX0ZPVU5EX1NNQUxMRVNULAor CVVTVl9TUkNIX05PVF9GT1VORF9MQVJHRVNUCit9IHVzdl9zcmNoX3N0YXRfdDsKKwordHlw ZWRlZiBzdHJ1Y3QKK3sKKwl1c3Zfc3JjaF9zdGF0X3Qgc3Q7CisJc2l6ZV90IHBvczsgLyog cG9zaXRpb24gKGluZGV4KSBvZiBhIG1lbWJlciB0aGF0IGlzIGVxdWFsIHRvIHNlYXJjaGVk IHZhbHVlCisJCQkJICogb3IgdGhhdCBpcyBuZWFyZXN0IGdyZWF0ZXIgbWVtYmVyICovCit9 IHVzdl9zcmNoX3Jlc190OworCisvKgorICogSU5TRVJUICBpbiBWZWN0b3Igb2YgVW5pcXVl IFNvcnRlZCBtZW1iZXJzCisgKi8KK3R5cGVkZWYgZW51bQoreworCVVTVl9JTlNfRVJST1Ig PSAtMSwKKwlVU1ZfSU5TX0VYSVNUUyA9IDAsCisJVVNWX0lOU19ORVcKK30gdXN2X2luc19z dGF0X3Q7CisKK3R5cGVkZWYgc3RydWN0Cit7CisJdXN2X2luc19zdGF0X3Qgc3Q7CisJc2l6 ZV90IHBvczsgLyogcG9zaXRpb24gKGluZGV4KSBvZiBhIG1lbWJlciB0aGF0IHdhcyBpbnNl cnRlZCBvciB0aGF0IHByb3ZlZAorCQkJCSAqIHRvIGJlIGVxdWFsIHRvIGluc2VydGVkIHZh bHVlCisJCQkJICovCit9IHVzdl9pbnNfcmVzX3Q7CisKKyNlbmRpZiAvKiBfVkVDVF9TVEFQ TEVfVEVNUExfSF9VTklRVUVfQ09ERV8gKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgorICogRW5kIG9mIENvZGUsIGFsbG93ZWQgdG8gYmUgaW5jbHVkZWQgb25seSBvbmNlCisg KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK KyAqIFJFVVNBQkxFIENPREUKKyAqCisgKiBUaGlzIGNvZGUgY2FuIGJlIHJldXNlZCB3aXRo ICNpbmNsdWRlIGRpcmVjdGl2ZSBpbiBhIGZpbGUgaWYgVkVDVF9NQVJLRVIKKyAqIHJlZGVm aW5lZC4gVGhpcyBhbGxvdyBjcmVhdGlvbiBvZiBzZXZlcmFsIHR5cGVzIG9mIHZlY3RvcnMg d2l0aCBkaWZmZXJlbnQKKyAqIHR5cGVzIG9mIG1lbWJlcnMuCisgKgorICoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLworCisjaWZuZGVmIFZFQ1RfSVRFTV9UWVBFCisjZXJyb3IgIlZFQ1Rf SVRFTV9UWVBFIG1hY3JvIGlzIGluZGVmaW5lZC4iCisjZW5kaWYKKworI2lmbmRlZiBWRUNU X0lURU1fRk9STUFUX1NQRUNJRklFUgorI2Vycm9yICJWRUNUX0lURU1fRk9STUFUX1NQRUNJ RklFUiBtYWNybyBpcyBpbmRlZmluZWQuIgorI2VuZGlmCisKKyNpZm5kZWYgVkVDVF9NQVJL RVIKKyNlcnJvciAiVkVDVF9NQVJLRVIgbWFjcm8gaXMgaW5kZWZpbmVkLiIKKyNlbmRpZgor CisjaWZuZGVmIFZFQ1RfTUVNQUxMT0NTVEVQCisjZXJyb3IgIlZFQ1RfTUVNQUxMT0NTVEVQ IG1hY3JvIGlzIGluZGVmaW5lZC4iCisjZW5kaWYKKworI2lmbmRlZiBWRUNUX01BTExPQwor I2Vycm9yICJWRUNUX01BTExPQyBtYWNybyBpcyBpbmRlZmluZWQuIgorI2VuZGlmCisKKyNp Zm5kZWYgVkVDVF9GUkVFCisjZXJyb3IgIlZFQ1RfRlJFRSBtYWNybyBpcyBpbmRlZmluZWQu IgorI2VuZGlmCisKKy8qCisgKiBUaGUgVmVjdG9yIHR5cGUgaXRzZWxmLAorICogVGhlIFZl Y3RvciBvZiBVbmlxdWUgU29ydGVkIEl0ZW1zIHR5cGUKKyAqIGFuZCB0aGUgSXRlbSB0eXBl CisgKgorICogSW4gZmFjdCwgdmVjdG9ycydzIG5hbWVzIGxvb2tzIGxpa2UgdmVjdF91MTZf dCB3aGVyZToKKyAqICAgICB2ZWN0XyAtIGNvbW1vbiBwcmVmaXgsCisgKiAgICAgdTE2IC0g bWFya2VyLAorICogICAgIF90IC0gc3VmZml4CisgKi8KKyNkZWZpbmUgdmVjdF90CQkgICBD cHBDb25jYXRUcmlwbGUyKHZlY3RfLCBWRUNUX01BUktFUiwgX3QpCisjZGVmaW5lIHVuaXFz b3J0dmVjdF90IENwcENvbmNhdFRyaXBsZTIodW5pcXNvcnR2ZWN0XywgVkVDVF9NQVJLRVIs IF90KQorI2RlZmluZSBpdGVtX3QJCSAgIFZFQ1RfSVRFTV9UWVBFCisKK3R5cGVkZWYgc3Ry dWN0Cit7CisJc2l6ZV90IGNudDsJCSAgIC8qIG51bWJlciBvZiBpdGVtcyAqLworCXNpemVf dCBjYXA7CQkgICAvKiBjYXBhY2l0eSAqLworCWJvb2wgbWVtX2lzX291dGVyOyAvKiBmbGFn IGFib3V0IGFuIGV4dGVybmFsIG1lbW9yeSBpcyB1c2VkICovCisJaXRlbV90ICptOwkJICAg LyogaXRlbXMgKG1lbWJlcnMpICovCit9IHZlY3RfdDsKKwordHlwZWRlZiB2ZWN0X3QgdW5p cXNvcnR2ZWN0X3Q7CisKKyNkZWZpbmUgdmVjdF9pbml0CQkgICBDcHBDb25jYXRUcmlwbGUy KHZlY3RfLCBWRUNUX01BUktFUiwgX2luaXQpCisjZGVmaW5lIHZlY3RfZmlsbAkJICAgQ3Bw Q29uY2F0VHJpcGxlMih2ZWN0XywgVkVDVF9NQVJLRVIsIF9maWxsKQorI2RlZmluZSB2ZWN0 X3Jlc2VydmUJICAgQ3BwQ29uY2F0VHJpcGxlMih2ZWN0XywgVkVDVF9NQVJLRVIsIF9yZXNl cnZlKQorI2RlZmluZSB2ZWN0X2FwcGVuZAkJICAgQ3BwQ29uY2F0VHJpcGxlMih2ZWN0Xywg VkVDVF9NQVJLRVIsIF9hcHBlbmQpCisjZGVmaW5lIHZlY3RfcHJpbnQJCSAgIENwcENvbmNh dFRyaXBsZTIodmVjdF8sIFZFQ1RfTUFSS0VSLCBfcHJpbnQpCisjZGVmaW5lIHZlY3RfY29t cGFyZQkgICBDcHBDb25jYXRUcmlwbGUyKHZlY3RfLCBWRUNUX01BUktFUiwgX2NvbXBhcmUp CisjZGVmaW5lIHZlY3RfaW5zZXJ0CQkgICBDcHBDb25jYXRUcmlwbGUyKHZlY3RfLCBWRUNU X01BUktFUiwgX2luc2VydCkKKyNkZWZpbmUgdmVjdF9jbGVhcgkJICAgQ3BwQ29uY2F0VHJp cGxlMih2ZWN0XywgVkVDVF9NQVJLRVIsIF9jbGVhcikKKworI2RlZmluZSB1c3ZfaW5zZXJ0 IENwcENvbmNhdFRyaXBsZTIodXN2XywgVkVDVF9NQVJLRVIsIF9pbnNlcnQpCisjZGVmaW5l IHVzdl9zZWFyY2ggQ3BwQ29uY2F0VHJpcGxlMih1c3ZfLCBWRUNUX01BUktFUiwgX3NlYXJj aCkKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogRW5kIG9mIFJldXNhYmxlIENv ZGUKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAqIERvbid0IGZvcmdldCB0 byBpbmNsdWRlCisgKiAJCSNpbmNsdWRlICJ2ZWN0X3RlbXBsX3VuZGVmLmgiCisgKiBpbiB5 b3VyIGZpbGUgdGhhdCB1c2VzIHRoaXMgaGVhZGVyCisgKgorICovCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9saWIvdmVjdF90ZW1wbF91bmRlZi5oIGIvc3JjL2luY2x1ZGUvbGliL3Zl Y3RfdGVtcGxfdW5kZWYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uNTliNjlmMThiOTkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9saWIvdmVj dF90ZW1wbF91bmRlZi5oCkBAIC0wLDAgKzEsMjUgQEAKKy8qCisgKiBGaWxlOiB2ZWN0X3Vu ZGVmLmgKKyAqLworCisjdW5kZWYgdmVjdF90CisjdW5kZWYgdW5pcXNvcnR2ZWN0X3QKKyN1 bmRlZiBpdGVtX3QKKworI3VuZGVmIFZFQ1RfSVRFTV9UWVBFCisjdW5kZWYgVkVDVF9NQVJL RVIKKyN1bmRlZiBWRUNUX0NwcENvbmNhdFRyaXBsZTIKKworI3VuZGVmIHZlY3RfaW5pdAor I3VuZGVmIHZlY3RfZmlsbAorI3VuZGVmIHZlY3RfcmVzZXJ2ZQorI3VuZGVmIHZlY3RfYXBw ZW5kCisjdW5kZWYgdmVjdF9wcmludAorI3VuZGVmIHZlY3RfY29tcGFyZQorI3VuZGVmIHZl Y3RfaW5zZXJ0CisjdW5kZWYgdmVjdF9jbGVhcgorCisjdW5kZWYgdXN2X2luc2VydAorI3Vu ZGVmIHVzdl9zZWFyY2gKKworI3VuZGVmIFZFQ1RfUFJJX0ZPUk1BVF9TUEVDSUZJRVIKXCBO byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9saWIv dmVjdF91MTYuaCBiL3NyYy9pbmNsdWRlL2xpYi92ZWN0X3UxNi5oCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lZGY4MWE0MTdmNAotLS0gL2Rldi9udWxsCisr KyBiL3NyYy9pbmNsdWRlL2xpYi92ZWN0X3UxNi5oCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisg KiBGaWxlOiB2ZWN0X3UxNi5oCisgKi8KKworI2lmbmRlZiBfVkVDVF9VMTZfSF8KKyNkZWZp bmUgX1ZFQ1RfVTE2X0hfCisKKy8qIGNsYW5nLWZvcm1hdCBvZmYgKi8KKyNpbmNsdWRlICJ2 ZWN0X3UxNl9jb25maWcuaCIKKyNpbmNsdWRlICJ2ZWN0X3RlbXBsLmgiCisvKiBjbGFuZy1m b3JtYXQgb24gKi8KKworLyoKKyAqIFR5cGVzIGFyZSBzdXBwb3NlZCB0byBiZSBjcmVhdGVk IGNyZWF0ZWQgYnkgdGhpcyBmaWxlCisgKiAgICAgdmVjdF91MTZfdAorICogICAgIGl0ZW1f dTE2X3QKKyAqICAgICB1bmlxc29ydHZlY3RfdTE2X3QKKyAqLworLyoKKyAqIEZ1bmN0aW9u cyBhcmUgc3VwcG9zZWQgdG8gYmUgY3JlYXRlZCBieSB0aGlzIGZpbGUKKyAqICAgICB2ZWN0 X3UxNl9jcmVhdGUKKyAqICAgICB2ZWN0X3UxNl9jcmVhdGVfZmlsbGVkCisgKiAgICAgdmVj dF91MTZfcmVzZXJ2ZQorICogICAgIHZlY3RfdTE2X2FwcGVuZAorICogICAgIHZlY3RfdTE2 X2Rlc3Ryb3kKKyAqICAgICB2ZWN0X3UxNl9wcmludAorICogICAgIHZlY3RfdTE2X2NvbXBh cmUKKyAqICAgICB2ZWN0X3UxNl9pbnNlcnQKKyAqICAgICB2ZWN0X3UxNl9jbGVhcgorICog ICAgIHVzdl91MTZfaW5zZXJ0CisgKiAgICAgdXN2X3UxNl9zZWFyY2gKKyAqLworCisjZW5k aWYgLy9fVkVDVF9VMTZfSF8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2xpYi92ZWN0X3Ux Nl9jb25maWcuaCBiL3NyYy9pbmNsdWRlL2xpYi92ZWN0X3UxNl9jb25maWcuaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMTNhOTMyODRlOGYKLS0tIC9kZXYv bnVsbAorKysgYi9zcmMvaW5jbHVkZS9saWIvdmVjdF91MTZfY29uZmlnLmgKQEAgLTAsMCAr MSwxMCBAQAorLyoKKyAqIEZpbGU6IHZlY3RfdTE2X2NvbmZpZy5oCisgKi8KKworI2RlZmlu ZSBWRUNUX0lURU1fVFlQRQkJCSAgIHVpbnQxNl90CisjZGVmaW5lIFZFQ1RfSVRFTV9GT1JN QVRfU1BFQ0lGSUVSIFBSSXUxNgorI2RlZmluZSBWRUNUX01BUktFUgkJCQkgICB1MTYKKyNk ZWZpbmUgVkVDVF9NRU1BTExPQ1NURVAJCSAgIDUKKyNkZWZpbmUgVkVDVF9NQUxMT0MJCQkJ ICAgbWFsbG9jCisjZGVmaW5lIFZFQ1RfRlJFRQkJCQkgICBmcmVlCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9NYWtlZmlsZSBiL3NyYy90ZXN0L01ha2VmaWxlCmluZGV4IDNlYjBhMDZhYmI0 Li5hYmE4ZGIxZjQ4MyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvTWFrZWZpbGUKKysrIGIvc3Jj L3Rlc3QvTWFrZWZpbGUKQEAgLTE0LDYgKzE0LDcgQEAgaW5jbHVkZSAkKHRvcF9idWlsZGRp cikvc3JjL01ha2VmaWxlLmdsb2JhbAogCiBTVUJESVJTID0gXAogCWF1dGhlbnRpY2F0aW9u IFwKKwlkZm9yIFwKIAlpc29sYXRpb24gXAogCW1vZHVsZXMgXAogCXBlcmwgXApkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvZGZvci8uZ2l0aWdub3JlIGIvc3JjL3Rlc3QvZGZvci8uZ2l0aWdu b3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wZDc3YTUxMjE2 YgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2Rmb3IvLmdpdGlnbm9yZQpAQCAtMCww ICsxLDMgQEAKK3Rlc3RfYml0cGFja191MTYKK3Rlc3RfdW5pcXNvcnR2ZWN0X3UxNgordGVz dF92ZWN0X3UxNgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvZGZvci9NYWtlZmlsZSBiL3NyYy90 ZXN0L2Rmb3IvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjRmYzlmNGJjMWJhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvZGZvci9NYWtl ZmlsZQpAQCAtMCwwICsxLDU0IEBACisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBGaWxlOiBz cmMvdGVzdC9kZm9yL01ha2VmaWxlCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdWJkaXIg PSBzcmMvdGVzdC9kZm9yCit0b3BfYnVpbGRkaXIgPSAuLi8uLi8uLgorZGZvcl9kaXIgOj0g JCh0b3BfYnVpbGRkaXIpL3NyYy9iYWNrZW5kL2xpYgorCitpbmNsdWRlICQoZGZvcl9kaXIp L01ha2VmaWxlLmRmb3IKKworIyBFbnN1cmUgZGVwZW5kZW5jeSB0cmFja2luZyB3b3Jrcwor T0JKUyArPSAkKE9CSlNfREZPUikKKworaW5jbHVkZSAkKHRvcF9idWlsZGRpcikvc3JjL01h a2VmaWxlLmdsb2JhbAorCisjIFRoaXMgZml4ZXMgYSBwcm9ibGVtIGluIHNvbWUgQ0kgam9i cworREVQRElSID89ICIuZGVwcyIKKworIyBPYmplY3QgZmlsZXMgb2YgdmVjdCwgYml0cGFj ayBhbmQgZGZvciB1c2VkIGJ5IHRoZXNlIHVuaXQtdGVzdHMgYXJlIGluIHRoZSBzYW1lCisj IGRpcmVjdG9yeSBhcyB0aGlzIE1ha2VmaWxlLiBUZXN0cyBkb24ndCB1c2Ugb25lcyBmcm9t IHNyYy9iYWNrZW5kL2xpYiBhbmQgY29tcGlsZQorIyBkaWZmZXJlbnQgb25lcyBmb3IgdGhl bXNlbHZlcy4KKyQoaW5mbyBVc2UgT0JKU19ERk9SPSQoT0JKU19ERk9SKSBmcm9tIGN1cnJl bnQgZGlyZWN0b3J5ICQoc3ViZGlyKS4gXAorICAgICAgIFRoZXkgYXJlIGJ1aWx0IG9uIHNv dXJjZXMgZnJvbSAkKGRmb3JfZGlyKSkKKworJChPQkpTX0RGT1IpOiAlLm86ICQoZGZvcl9k aXIpLyUuYworCUBpZiB0ZXN0ICEgLWQgJChERVBESVIpOyB0aGVuIG1rZGlyIC1wICQoREVQ RElSKTsgZmkKKwkkKENDKSAkKENGTEFHUykgJChDUFBGTEFHUykgLURGUk9OVEVORCBcCisJ CS1jICQ8IFwKKwkJLU1NRCAtTVAgLU1GICQoREVQRElSKS8kKG5vdGRpciAkPDouYz0uUG8p IFwKKwkJLW8gJEAKKworTElCVEFQX09CSlMgPSAkKHRvcF9idWlsZGRpcikvc3JjL3Rlc3Qv bGlidGFwL3RhcC5vCisKK1RFU1RTPSB0ZXN0X3ZlY3RfdTE2IFwKKyAgICAgICB0ZXN0X3Vu aXFzb3J0dmVjdF91MTYgXAorICAgICAgIHRlc3RfYml0cGFja191MTYKKworJChURVNUUzol PSUubyk6IENQUEZMQUdTICs9IC1JJCh0b3BfYnVpbGRkaXIpL3NyYy90ZXN0IC1ERlJPTlRF TkQKKworYWxsOiAkKFRFU1RTKQorCiskKFRFU1RTKTogJTogJS5vICQoTElCVEFQX09CSlMp ICQoT0JKU19ERk9SKQorCSQoQ0MpICQoQ0ZMQUdTKSAkKENQUEZMQUdTKSAkXiAkKExERkxB R1MpICQoTElCUykgLW8gJEAkKFgpCisKK2NoZWNrLXVuaXQ6ICQoVEVTVFMpCisJZWNobyAi IyArKysgVW5pdCB0ZXN0cyBpbiAkKHN1YmRpcikgKysrIiAmJiBcCisJY2QgJCh0b3BfYnVp bGRkaXIpLyQoc3ViZGlyKSAmJiBcCisJICAgJChQUk9WRSkgJChQUk9WRV9GTEFHUykgXAor CSAgICAtdiAkKGFkZHByZWZpeCAuLywkKGlmICQoUFJPVkVfVEVTVFMpLCAkKFBST1ZFX1RF U1RTKSwgJChURVNUUykpKQorCitjaGVjazogY2hlY2stdW5pdAorCitjbGVhbiBkaXN0Y2xl YW46CisJcm0gLXJmICQoVEVTVFMpICoubwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvZGZvci9t ZXNvbi5idWlsZCBiL3NyYy90ZXN0L2Rmb3IvbWVzb24uYnVpbGQKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmNlNzYyYzUyNDMwCi0tLSAvZGV2L251bGwKKysr IGIvc3JjL3Rlc3QvZGZvci9tZXNvbi5idWlsZApAQCAtMCwwICsxLDYyIEBACitkZm9yX2Rp ciA9IGpvaW5fcGF0aHMobWVzb24ucHJvamVjdF9zb3VyY2Vfcm9vdCgpLCAnc3JjL2JhY2tl bmQvbGliJykKKworIyBPYmplY3QgZmlsZXMgb2YgdmVjdCwgYml0cGFjayBhbmQgZGZvciB1 c2VkIGJ5IHRoZXNlIHVuaXQtdGVzdHMgYXJlIGluIHRoZSBzYW1lCisjIGRpcmVjdG9yeSBh cyB0aGlzIG1lc29uLmJ1aWxkLiBUZXN0cyBkb24ndCB1c2Ugb25lcyBmcm9tIHNyYy9iYWNr ZW5kL2xpYiBhbmQKKyMgY29tcGlsZSBkaWZmZXJlbnQgb25lcyBmb3IgdGhlbXNlbHZlcy4g SW4gTWVzb24vTmluamEgYnVpbGQgc3lzdGVtIHdlIHVuaXRlCisjIHRoZW0gaW50byBhIHN0 YXRpYyBsaWJyYXJ5LgorCitkZm9yX3NvdXJjZXMgPSBmaWxlcygKKyAgam9pbl9wYXRocyhk Zm9yX2RpciwgJ3ZlY3RfdTE2LmMnKSwKKyAgam9pbl9wYXRocyhkZm9yX2RpciwgJ2JpdHBh Y2tfdTE2LmMnKSwKKykKKworZGZvcl90ZXN0X2xpYiA9IHN0YXRpY19saWJyYXJ5KAorICAn ZGZvcl90ZXN0X2xpYicsCisgIGRmb3Jfc291cmNlcywKKyAgaW5jbHVkZV9kaXJlY3Rvcmll czogWworICAgIGluY2x1ZGVfZGlyZWN0b3JpZXMoJy4uLy4uLy4uJyksICMgdG9wX2J1aWxk ZGlyCisgICAgaW5jbHVkZV9kaXJlY3RvcmllcygnLi4vJyksICAgICAgIyBzcmMvdGVzdAor ICAgIHBvc3RncmVzX2luYywgICAgICAgICAgICAgICAgICAgICMgc3JjL2luY2x1ZGUgaGVy ZQorICBdLAorICBjX2FyZ3M6IFsnLURGUk9OVEVORCddLAorKQorCisjIFdlIGFsc28gYnVp bGQgbGlidGFwIGFzIGEgc3RhdGljIGxpYnJhcnkKKworbGlidGFwID0gc3RhdGljX2xpYnJh cnkoCisgICd0YXAnLAorICAnLi4vLi4vdGVzdC9saWJ0YXAvdGFwLmMnLAorICBpbmNsdWRl X2RpcmVjdG9yaWVzOgorICAgIGluY2x1ZGVfZGlyZWN0b3JpZXMoJy4uLy4uLy4uJyksICMg dG9wX2J1aWxkZGlyCispCisKKyMgRWFjaCB0ZXN0IGlzIGFuIEVMRiBleGVjdXRhYmxlCisK K3Rlc3RfbmFtZXMgPSBbCisgICd0ZXN0X3ZlY3RfdTE2JywKKyAgJ3Rlc3RfdW5pcXNvcnR2 ZWN0X3UxNicsCisgICd0ZXN0X2JpdHBhY2tfdTE2JywKK10KKworZm9yZWFjaCB0IDogdGVz dF9uYW1lcworICBleGUgPSBleGVjdXRhYmxlKAorICAgIHQsCisgICAgdCArICcuYycsCisg ICAgbGlua193aXRoOiBbCisgICAgICBkZm9yX3Rlc3RfbGliLAorICAgICAgbGlidGFwLAor ICAgICAgY29tbW9uX3N0YXRpYywgIyBQcm92aWRlcyBwZ19wcmludGYgYW5kIG90aGVyIGNv bW1vbiB1dGlsaXRpZXMKKyAgICAgIHBncG9ydF9zdGF0aWMsICAgICMgUHJvdmlkZXMgT1Mt cG9ydGFiaWxpdHkgZnVuY3Rpb25zCisgICAgXSwKKwlkZXBlbmRlbmNpZXM6IFtvc19kZXBz LCBsaWJpbnRsXSwKKyAgICBpbmNsdWRlX2RpcmVjdG9yaWVzOiBbCisgICAgICBpbmNsdWRl X2RpcmVjdG9yaWVzKCcuLi8uLi8uLicpLCAjIHRvcF9idWlsZGRpcgorICAgICAgaW5jbHVk ZV9kaXJlY3RvcmllcygnLi4vJyksICAgICAgIyBzcmMvdGVzdAorICAgICAgcG9zdGdyZXNf aW5jLCAgICAgICAgICAgICAgICAgICAgIyBzcmMvaW5jbHVkZSBoZXJlCisgICAgXSwKKyAg ICAjIEJhY2tlbmQgY29kZSBvZnRlbiByZXF1aXJlcyB0aGVzZSBhcmd1bWVudHMgdG8gaWRl bnRpZnkgYXMgYmFja2VuZAorICAgIGNfYXJnczogWyctREZST05URU5EJ10sCisgICkKKwor ICB0ZXN0KHQsIGV4ZSwgc3VpdGU6ICdkZm9yJykKK2VuZGZvcmVhY2gKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L2Rmb3IvdGVzdC5oIGIvc3JjL3Rlc3QvZGZvci90ZXN0LmgKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmY2YzU0YWFkOTVmCi0tLSAvZGV2L251 bGwKKysrIGIvc3JjL3Rlc3QvZGZvci90ZXN0LmgKQEAgLTAsMCArMSwzMSBAQAorCisvKgor ICogdGVzdC5oCisgKi8KKyNpZm5kZWYgX1RFU1RfSF8KKyNkZWZpbmUgX1RFU1RfSF8KKwor I2luY2x1ZGUgPGludHR5cGVzLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKworc3RhdGljIGlu bGluZSB2b2lkCit0ZXN0X3ByaW50X3U4X2FycmF5KHNpemVfdCBjbnQsIHVpbnQ4X3QgYXJy W10sIGNvbnN0IGNoYXIgKm5hbWUpCit7CisJcHJpbnRmKCIlcyhoZXgpOiB7ICIsIG5hbWUp OworCWZvciAoc2l6ZV90IGogPSAwOyBqIDwgY250IC0gMTsgaisrKQorCQlwcmludGYoIiUw MiIgUFJJeDggIiwgIiwgYXJyW2pdKTsKKworCXByaW50ZigiJTAyIiBQUkl4OCAiIH1cbiIs IGFycltjbnQgLSAxXSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAordGVzdF9wcmludF91 MTZfYXJyYXkoc2l6ZV90IGNudCwgdWludDE2X3QgYXJyW10sIGNvbnN0IGNoYXIgKm5hbWUp Cit7CisJcHJpbnRmKCIlcyhoZXgpOiB7ICIsIG5hbWUpOworCWZvciAoc2l6ZV90IGogPSAw OyBqIDwgY250IC0gMTsgaisrKQorCQlwcmludGYoIiUwNCIgUFJJeDE2ICIsICIsIGFycltq XSk7CisKKwlwcmludGYoIiUwNCIgUFJJeDE2ICJ9XG4iLCBhcnJbY250IC0gMV0pOworfQor CisjZW5kaWYgLyogX1RFU1RfSF8gKi8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9kZm9yL3Rlc3RfYml0cGFja191MTYuYyBiL3NyYy90ZXN0 L2Rmb3IvdGVzdF9iaXRwYWNrX3UxNi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi5kYTg0YmIyZjIyZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2Rm b3IvdGVzdF9iaXRwYWNrX3UxNi5jCkBAIC0wLDAgKzEsMzU3IEBACisvKgorICogdGVzdF9i aXRwYWNrLmMKKyAqLworCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcu aD4KKworI2luY2x1ZGUgImxpYi9iaXRwYWNrX3UxNi5oIgorI2luY2x1ZGUgImxpYi92ZWN0 X3UxNi5oIgorI2luY2x1ZGUgImxpYnRhcC90YXAuaCIKKworaW50CittYWluKHZvaWQpCit7 CisJcGxhbigxOTUpOworCXByaW50ZigiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PVxuIik7CisJcHJpbnRmKCJUZXN0IE1BU0sgQU5EIFdJRFRIIENBTENVTEFU SU9OXG4iKTsKKwl7CisJCWNtcF9vaygxLCAiPT0iLCAodWludDE2X3Qpd2lkdGhfdTE2X2Zy b21fdmFsKDB4MDApLAorCQkJICAgIldpZHRoIG9mIDAwIGlzIGVxdWFsIHRvIDEgYml0LiIp OworCQljbXBfb2soMiwgIj09IiwgKHVpbnQxNl90KXdpZHRoX3UxNl9mcm9tX3ZhbCgweDAy KSwKKwkJCSAgICJXaWR0aCBvZiAwMiBpcyBlcXVhbCB0byAyIGJpdHMuIik7CisJCWNtcF9v aygyLCAiPT0iLCAodWludDE2X3Qpd2lkdGhfdTE2X2Zyb21fdmFsKDB4MDIpLAorCQkJICAg IldpZHRoIG9mIDAyIGlzIGVxdWFsIHRvIDIgYml0cy4iKTsKKwkJY21wX29rKDIsICI9PSIs ICh1aW50MTZfdCl3aWR0aF91MTZfZnJvbV92YWwoMHgwMyksCisJCQkgICAiV2lkdGggb2Yg MDMgaXMgZXF1YWwgdG8gMiBiaXRzLiIpOworCQljbXBfb2soMywgIj09IiwgKHVpbnQxNl90 KXdpZHRoX3UxNl9mcm9tX3ZhbCgweDA0KSwKKwkJCSAgICJXaWR0aCBvZiAwNCBpcyBlcXVh bCB0byAzIGJpdHMuIik7CisJCWNtcF9vaygzLCAiPT0iLCAodWludDE2X3Qpd2lkdGhfdTE2 X2Zyb21fdmFsKDB4MDUpLAorCQkJICAgIldpZHRoIG9mIDA1IGlzIGVxdWFsIHRvIDMgYml0 cy4iKTsKKwkJY21wX29rKDQsICI9PSIsICh1aW50MTZfdCl3aWR0aF91MTZfZnJvbV92YWwo MHgwOCksCisJCQkgICAiV2lkdGggb2YgMDggaXMgZXF1YWwgdG8gNCBiaXRzLiIpOworCQlj bXBfb2soNCwgIj09IiwgKHVpbnQxNl90KXdpZHRoX3UxNl9mcm9tX3ZhbCgweDBBKSwKKwkJ CSAgICJXaWR0aCBvZiAxMCBpcyBlcXVhbCB0byA0IGJpdHMuIik7CisJCWNtcF9vayg0LCAi PT0iLCAodWludDE2X3Qpd2lkdGhfdTE2X2Zyb21fdmFsKDB4MEYpLAorCQkJICAgIldpZHRo IG9mIDE1IGlzIGVxdWFsIHRvIDQgYml0cy4iKTsKKwkJY21wX29rKDUsICI9PSIsICh1aW50 MTZfdCl3aWR0aF91MTZfZnJvbV92YWwoMHgxMCksCisJCQkgICAiV2lkdGggb2YgMTYgaXMg ZXF1YWwgdG8gNSBiaXRzLiIpOworCQljbXBfb2soNSwgIj09IiwgKHVpbnQxNl90KXdpZHRo X3UxNl9mcm9tX3ZhbCgweDFGKSwKKwkJCSAgICJXaWR0aCBvZiAzMSBpcyBlcXVhbCB0byA1 IGJpdHMuIik7CisJCWNtcF9vayg2LCAiPT0iLCAodWludDE2X3Qpd2lkdGhfdTE2X2Zyb21f dmFsKDB4MjApLAorCQkJICAgIldpZHRoIG9mIDMyIGlzIGVxdWFsIHRvIDYgYml0cy4iKTsK KwkJY21wX29rKDcsICI9PSIsICh1aW50MTZfdCl3aWR0aF91MTZfZnJvbV92YWwoMHg0MCks CisJCQkgICAiV2lkdGggb2YgNjQgaXMgZXF1YWwgdG8gNyBiaXRzLiIpOworCQljbXBfb2so OCwgIj09IiwgKHVpbnQxNl90KXdpZHRoX3UxNl9mcm9tX3ZhbCgweDgwKSwKKwkJCSAgICJX aWR0aCBvZiAxMjggaXMgZXF1YWwgdG8gOCBiaXRzLiIpOworCQljbXBfb2soMTMsICI9PSIs ICh1aW50MTZfdCl3aWR0aF91MTZfZnJvbV92YWwoMHgxMDAwKSwKKwkJCSAgICJXaWR0aCBv ZiAweDAxMDAwIGlzIGVxdWFsIHRvIDEzIGJpdHMuIik7CisJCWNtcF9vaygxNiwgIj09Iiwg KHVpbnQxNl90KXdpZHRoX3UxNl9mcm9tX3ZhbCgweDhBQkMpLAorCQkJICAgIldpZHRoIG9m IDB4MDhBQkMgaXMgZXF1YWwgdG8gMTUgYml0cy4iKTsKKworCQljbXBfb2soMHgxLCAiPT0i LCAodWludDE2X3Qpd2lkdGhfdTE2X3RvX21hc2soMSksCisJCQkgICAiTWFzayBmcm9tIHdp ZHRoIDEgaXMgMDAwMDAwMDEoYmluKS4iKTsKKwkJY21wX29rKDB4MywgIj09IiwgKHVpbnQx Nl90KXdpZHRoX3UxNl90b19tYXNrKDIpLAorCQkJICAgIk1hc2sgZnJvbSB3aWR0aCAyIGlz IDAwMDAwMDExKGJpbikuIik7CisJCWNtcF9vaygweDcsICI9PSIsICh1aW50MTZfdCl3aWR0 aF91MTZfdG9fbWFzaygzKSwKKwkJCSAgICJNYXNrIGZyb20gd2lkdGggMyBpcyAwMDAwMDEx MShiaW4pLiIpOworCQljbXBfb2soMHgzRkYsICI9PSIsICh1aW50MTZfdCl3aWR0aF91MTZf dG9fbWFzaygxMCksCisJCQkgICAiTWFzayBmcm9tIHdpZHRoIDEwIGlzIDB4M0ZGKGJpbiku Iik7CisJCWNtcF9vaygweDdGRkYsICI9PSIsICh1aW50MTZfdCl3aWR0aF91MTZfdG9fbWFz aygxNSksCisJCQkgICAiTWFzayBmcm9tIHdpZHRoIDE1IGlzIDB4N0ZGRihiaW4pLiIpOwor CQljbXBfb2soMHhGRkZGLCAiPT0iLCAodWludDE2X3Qpd2lkdGhfdTE2X3RvX21hc2soMTYp LAorCQkJICAgIk1hc2sgZnJvbSB3aWR0aCAxNiBpcyAweEZGRkYoYmluKS4iKTsKKwl9CisJ cHJpbnRmKCJUZXN0IE1BU0sgQU5EIFdJRFRIIENBTENVTEFUSU9OIFBBU1NFRFxuIik7CisJ cHJpbnRmKCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiIp OworCisJcHJpbnRmKCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 XG4iKTsKKwlwcmludGYoIlRlc3QgQklUUEFDSyBQQUNLSU5HXG4iKTsKKwl7CisjZGVmaW5l IFNJWkVPRlBBQ0sgNjBVCisJCXVpbnQ4X3QgcGFja1tTSVpFT0ZQQUNLXTsKKwkJc2l6ZV90 IGNhcmV0ID0gMDsKKwkJbWVtc2V0KHBhY2ssIDAsIFNJWkVPRlBBQ0spOworCQkvKgorCQkg KiBTaW5jZSB3ZSBpbXBsZW1lbnRlZCB0aGUgbnVsaWZ5aW5nIG9mIGJpdHMgYWNjb3JkaW5n IHRvIGEgbWFzayAoc2VlCisJCSAqIHRoZSBiaXRwYWNrIGZ1bmN0aW9uKSwgd2UgY2FuIHVz ZSBldmVuIGEgcGFjayBub3QgcHJlcGFyZWQgaW4gYWR2YW5jZQorCQkgKiBhbmQgY29tcHJp c2luZyBnYXJiYWdlLiBCdXQgd2Ugd2FudCB0byBjaGVjayB2YWx1ZSBvZiBlYWNoIGJ5dGUg b2YKKwkJICogdGhlIHBhY2sgaW4gdGhpcyB0ZXN0IGFuZCB3ZSBzaW1wbGlmeSB0aGlzIHRh c2sgYnkgdXNpbmcgYSB6ZXJvZWQKKwkJICogcGFjay4KKwkJICovCisKKwkJZm9yIChpbnQg aiA9IDA7IGogPCA4OyBqKyspIHsKKwkJCWNhcmV0ID0gYml0cGFja191MTZfcGFjayhwYWNr LCBjYXJldCwgMSwgMSk7CisJCQljYXJldCA9IGJpdHBhY2tfdTE2X3BhY2socGFjaywgY2Fy ZXQsIDAsIDEpOworCQl9CisJCWNtcF9vaygxNiwgIj09IiwgY2FyZXQsICJDYXJldCA9IDE2 LiIpOworCQljbXBfb2soMHg1NSwgIj09IiwgcGFja1swXSwgIlNhdmVkIGJpdC1ieS1iaXQ6 IGZpcnN0IGJ5dGUgaXMgMHg1NS4iKTsKKwkJY21wX29rKDB4NTUsICI9PSIsIHBhY2tbMV0s ICJTYXZlZCBiaXQtYnktYml0OiBzZWNvbmQgYnl0ZSBpcyAweDU1LiIpOworCisJCWZvciAo aW50IGogPSAwOyBqIDwgODsgaisrKSB7CisJCQljYXJldCA9IGJpdHBhY2tfdTE2X3BhY2so cGFjaywgY2FyZXQsIDB4MDIgLyogMTAoYmluKSAqLywgMik7CisJCX0KKworCQljbXBfb2so MzIsICI9PSIsIGNhcmV0LCAiQ2FyZXQgPSAzMi4iKTsKKwkJY21wX29rKDB4QUEsICI9PSIs IHBhY2tbMl0sCisJCQkgICAiU2F2ZWQgd2l0aCB0d28tYml0IHdpZHRoOiBmaXJzdCBieXRl IGlzIDB4QUEuIik7CisJCWNtcF9vaygweEFBLCAiPT0iLCBwYWNrWzNdLAorCQkJICAgIlNh dmVkIHdpdGggdHdvLWJpdCB3aWR0aDogc2Vjb25kIGJ5dGUgaXMgMHhBQS4iKTsKKworCQlm b3IgKGludCBqID0gMDsgaiA8IDg7IGorKykgeworCQkJY2FyZXQgPSBiaXRwYWNrX3UxNl9w YWNrKHBhY2ssIGNhcmV0LCAweDA1IC8qIDEwMShiaW4pICovLCAzKTsKKwkJCWNhcmV0ID0g Yml0cGFja191MTZfcGFjayhwYWNrLCBjYXJldCwgMHgwMiAvKiAwMTAoYmluKSAqLywgMyk7 CisJCX0KKworCQljbXBfb2soODAsICI9PSIsIGNhcmV0LCAiQ2FyZXQgPSA4MC4iKTsKKwkJ Y21wX29rKDB4NTUsICI9PSIsIHBhY2tbNF0sCisJCQkgICAiU2F2ZWQgd2l0aCB0aHJlZS1i aXQgd2lkdGg6IGZpcnN0IGJ5dGUgaXMgMHg1NS4iKTsKKwkJY21wX29rKDB4NTUsICI9PSIs IHBhY2tbNV0sCisJCQkgICAiU2F2ZWQgd2l0aCB0aHJlZS1iaXQgd2lkdGg6IHNlY29uZCBi eXRlIGlzIDB4NTUuIik7CisJCWNtcF9vaygweDU1LCAiPT0iLCBwYWNrWzZdLAorCQkJICAg IlNhdmVkIHdpdGggdGhyZWUtYml0IHdpZHRoOiBzZWNvbmQgYnl0ZSBpcyAweDU1LiIpOwor CQljbXBfb2soMHg1NSwgIj09IiwgcGFja1s3XSwKKwkJCSAgICJTYXZlZCB3aXRoIHRocmVl LWJpdCB3aWR0aDogZmlyc3QgYnl0ZSBpcyAweDU1LiIpOworCQljbXBfb2soMHg1NSwgIj09 IiwgcGFja1s4XSwKKwkJCSAgICJTYXZlZCB3aXRoIHRocmVlLWJpdCB3aWR0aDogc2Vjb25k IGJ5dGUgaXMgMHg1NS4iKTsKKwkJY21wX29rKDB4NTUsICI9PSIsIHBhY2tbOV0sCisJCQkg ICAiU2F2ZWQgd2l0aCB0aHJlZS1iaXQgd2lkdGg6IHNlY29uZCBieXRlIGlzIDB4NTUuIik7 CisKKwkJY2FyZXQgPSBiaXRwYWNrX3UxNl9wYWNrKHBhY2ssIGNhcmV0LCAweDBCLCA0KTsK KwkJY2FyZXQgPSBiaXRwYWNrX3UxNl9wYWNrKHBhY2ssIGNhcmV0LCAweDBDLCA0KTsKKwkJ Y2FyZXQgPSBiaXRwYWNrX3UxNl9wYWNrKHBhY2ssIGNhcmV0LCAweDBELCA0KTsKKwkJY2Fy ZXQgPSBiaXRwYWNrX3UxNl9wYWNrKHBhY2ssIGNhcmV0LCAweDBFLCA0KTsKKworCQljbXBf b2soOTYsICI9PSIsIGNhcmV0LCAiQ2FyZXQgPSA5Ni4iKTsKKwkJY21wX29rKDB4Q0IsICI9 PSIsIHBhY2tbMTBdLAorCQkJICAgIlNhdmVkIHdpdGggZm91ci1iaXQgd2lkdGg6IGZpcnN0 IGJ5dGUgaXMgMHhDQi4iKTsKKwkJY21wX29rKDB4RUQsICI9PSIsIHBhY2tbMTFdLAorCQkJ ICAgIlNhdmVkIHdpdGggZm91ci1iaXQgd2lkdGg6IHNlY29uZCBieXRlIGlzIDB4RUQuIik7 CisKKwkJZm9yIChpbnQgaiA9IDA7IGogPCA4OyBqKyspIHsKKwkJCWNhcmV0ID0gYml0cGFj a191MTZfcGFjayhwYWNrLCBjYXJldCwgMHgwNyAvKiAwMDExMWIgKi8sIDUpOworCQl9CisK KwkJY21wX29rKDEzNiwgIj09IiwgY2FyZXQsICJDYXJldCA9IDEzNi4iKTsKKwkJY21wX29r KDB4RTcsICI9PSIsIHBhY2tbMTJdLAorCQkJICAgIlNhdmVkIHdpdGggZml2ZS1iaXQgd2lk dGg6IGZpcnN0IGJ5dGUgaXMgMHhFNy4iKTsKKwkJY21wX29rKDB4OUMsICI9PSIsIHBhY2tb MTNdLAorCQkJICAgIlNhdmVkIHdpdGggZml2ZS1iaXQgd2lkdGg6IHNlY29uZCBieXRlIGlz IDB4OUMuIik7CisJCWNtcF9vaygweDczLCAiPT0iLCBwYWNrWzE0XSwKKwkJCSAgICJTYXZl ZCB3aXRoIGZpdmUtYml0IHdpZHRoOiB0aGlyZCBieXRlIGlzIDB4NzMuIik7CisJCWNtcF9v aygweENFLCAiPT0iLCBwYWNrWzE1XSwKKwkJCSAgICJTYXZlZCB3aXRoIGZpdmUtYml0IHdp ZHRoOiBmb3VydGggYnl0ZSBpcyAweENFLiIpOworCQljbXBfb2soMHgzOSwgIj09IiwgcGFj a1sxNl0sCisJCQkgICAiU2F2ZWQgd2l0aCBmaXZlLWJpdCB3aWR0aDogZmlmdGggYnl0ZSBp cyAweDM5LiIpOworCisJCWZvciAoaW50IGogPSAwOyBqIDwgNDsgaisrKQorCQkJY2FyZXQg PSBiaXRwYWNrX3UxNl9wYWNrKHBhY2ssIGNhcmV0LCAweDA3IC8qIDAwMDExMWIgKi8sIDYp OworCisJCWNtcF9vaygxNjAsICI9PSIsIGNhcmV0LCAiQ2FyZXQgPSAxNjAuIik7CisJCWNt cF9vaygweEM3LCAiPT0iLCBwYWNrWzE3XSwKKwkJCSAgICJTYXZlZCB3aXRoIHNpeC1iaXQg d2lkdGg6IGZpcnN0IGJ5dGUgaXMgMHhDNy4iKTsKKwkJY21wX29rKDB4NzEsICI9PSIsIHBh Y2tbMThdLAorCQkJICAgIlNhdmVkIHdpdGggc2l4LWJpdCB3aWR0aDogc2Vjb25kIGJ5dGUg aXMgMHg3MS4iKTsKKwkJY21wX29rKDB4MUMsICI9PSIsIHBhY2tbMTldLAorCQkJICAgIlNh dmVkIHdpdGggc2l4LWJpdCB3aWR0aDogdGhpcmQgYnl0ZSBpcyAweDFDLiIpOworCisJCWZv ciAoaW50IGogPSAwOyBqIDwgODsgaisrKQorCQkJY2FyZXQgPSBiaXRwYWNrX3UxNl9wYWNr KHBhY2ssIGNhcmV0LCAweDU3IC8qIDEwMTAxMTFiICovLCA3KTsKKworCQljbXBfb2soMjE2 LCAiPT0iLCBjYXJldCwgIkNhcmV0ID0gMjE2LiIpOworCQljbXBfb2soMHhENywgIj09Iiwg cGFja1syMF0sCisJCQkgICAiU2F2ZWQgd2l0aCBzZXZlbi1iaXQgd2lkdGg6IGJ5dGUxIGlz IDB4RDcuIik7CisJCWNtcF9vaygweEVCLCAiPT0iLCBwYWNrWzIxXSwKKwkJCSAgICJTYXZl ZCB3aXRoIHNldmVuLWJpdCB3aWR0aDogYnl0ZTIgaXMgMHhFQi4iKTsKKwkJY21wX29rKDB4 RjUsICI9PSIsIHBhY2tbMjJdLAorCQkJICAgIlNhdmVkIHdpdGggc2V2ZW4tYml0IHdpZHRo OiBieXRlMyBpcyAweEY1LiIpOworCQljbXBfb2soMHg3QSwgIj09IiwgcGFja1syM10sCisJ CQkgICAiU2F2ZWQgd2l0aCBzZXZlbi1iaXQgd2lkdGg6IGJ5dGU0IGlzIDB4N0EuIik7CisJ CWNtcF9vaygweEJELCAiPT0iLCBwYWNrWzI0XSwKKwkJCSAgICJTYXZlZCB3aXRoIHNldmVu LWJpdCB3aWR0aDogYnl0ZTUgaXMgMHhCRC4iKTsKKwkJY21wX29rKDB4NUUsICI9PSIsIHBh Y2tbMjVdLAorCQkJICAgIlNhdmVkIHdpdGggc2V2ZW4tYml0IHdpZHRoOiBieXRlNiBpcyAw eDVFLiIpOworCQljbXBfb2soMHhBRiwgIj09IiwgcGFja1syNl0sCisJCQkgICAiU2F2ZWQg d2l0aCBzZXZlbi1iaXQgd2lkdGg6IGJ5dGU3IGlzIDB4QUYuIik7CisKKwkJY2FyZXQgPSBi aXRwYWNrX3UxNl9wYWNrKHBhY2ssIGNhcmV0LCAweEJBLCA4KTsKKwkJY2FyZXQgPSBiaXRw YWNrX3UxNl9wYWNrKHBhY2ssIGNhcmV0LCAweERDLCA4KTsKKwkJY2FyZXQgPSBiaXRwYWNr X3UxNl9wYWNrKHBhY2ssIGNhcmV0LCAweEZFLCA4KTsKKworCQljbXBfb2soMjQwLCAiPT0i LCBjYXJldCwgIkNhcmV0ID0gMjQwLiIpOworCQljbXBfb2soMHhCQSwgIj09IiwgcGFja1sy N10sCisJCQkgICAiU2F2ZWQgd2l0aCBlaWdodC1iaXQgd2lkdGg6IGJ5dGUxIGlzIDB4QkEu Iik7CisJCWNtcF9vaygweERDLCAiPT0iLCBwYWNrWzI4XSwKKwkJCSAgICJTYXZlZCB3aXRo IGVpZ2h0LWJpdCB3aWR0aDogYnl0ZTIgaXMgMHhEQy4iKTsKKwkJY21wX29rKDB4RkUsICI9 PSIsIHBhY2tbMjldLAorCQkJICAgIlNhdmVkIHdpdGggZWlnaHQtYml0IHdpZHRoOiBieXRl MyBpcyAweEZFLiIpOworCisJCWNhcmV0ID0gYml0cGFja191MTZfcGFjaygKKwkJCXBhY2ss IGNhcmV0LCAweDAwLAorCQkJNCk7IC8qIG1vdmUgdG8gNCBiaXQgZm9yIGZ1biBhbmQgYWdh aW4gY29udGludWUgd2l0aCA4LWJpdCB3aWR0aCAqLworCQljYXJldCA9IGJpdHBhY2tfdTE2 X3BhY2socGFjaywgY2FyZXQsIDB4MzIsIDgpOworCQljYXJldCA9IGJpdHBhY2tfdTE2X3Bh Y2socGFjaywgY2FyZXQsIDB4NTQsIDgpOworCQljYXJldCA9IGJpdHBhY2tfdTE2X3BhY2so cGFjaywgY2FyZXQsIDB4NzYsIDgpOworCQljYXJldCA9IGJpdHBhY2tfdTE2X3BhY2socGFj aywgY2FyZXQsIDB4OTgsIDgpOworCisJCWNtcF9vaygyNzYsICI9PSIsIGNhcmV0LCAiQ2Fy ZXQgPSAyNzYuIik7CisJCWNtcF9vaygweDIwLCAiPT0iLCBwYWNrWzMwXSwKKwkJCSAgICJT YXZlZCB3aXRoIGVpZ2h0LWJpdCB3aWR0aCBidXQgc2hpZnRlZCBieSA0OiBpcyAweDIwLiIp OworCQljbXBfb2soMHg0MywgIj09IiwgcGFja1szMV0sCisJCQkgICAiU2F2ZWQgd2l0aCBl aWdodC1iaXQgd2lkdGggYnV0IHNoaWZ0ZWQgYnkgNDogaXMgMHg0My4iKTsKKwkJY21wX29r KDB4NjUsICI9PSIsIHBhY2tbMzJdLAorCQkJICAgIlNhdmVkIHdpdGggZWlnaHQtYml0IHdp ZHRoIGJ1dCBzaGlmdGVkIGJ5IDQ6IGlzIDB4NjUuIik7CisJCWNtcF9vaygweDg3LCAiPT0i LCBwYWNrWzMzXSwKKwkJCSAgICJTYXZlZCB3aXRoIGVpZ2h0LWJpdCB3aWR0aCBidXQgc2hp ZnRlZCBieSA0OiBpcyAweDg3LiIpOworCQljbXBfb2soMHgwOSwgIj09IiwgcGFja1szNF0s CisJCQkgICAiU2F2ZWQgd2l0aCBlaWdodC1iaXQgd2lkdGggYnV0IHNoaWZ0ZWQgYnkgNDog aXMgMHgwOS4iKTsKKworCQljYXJldCA9IGJpdHBhY2tfdTE2X3BhY2soCisJCQlwYWNrLCBj YXJldCwgMHgwMCwKKwkJCTQpOyAvKiBtb3ZlIHRvIDQgYml0IGZvciBmdW4gYW5kIGFnYWlu IGNvbnRpbnVlIHdpdGggOC1iaXQgd2lkdGggKi8KKwkJY21wX29rKDI4MCwgIj09IiwgY2Fy ZXQsICJDYXJldCA9IDI4MC4iKTsKKwkJY21wX29rKDB4MDksICI9PSIsIHBhY2tbMzRdLAor CQkJICAgIkFkZGVkIHBhZGRpbmcgMHgwLCB3aWR0aD00LiBCeXRlIGluIHBhY2sgaXMgc3Rp bGwgMHgwOS4iKTsKKworCQlmb3IgKGludCBqID0gMDsgaiA8IDM7IGorKykKKwkJCWNhcmV0 ID0gYml0cGFja191MTZfcGFjayhwYWNrLCBjYXJldCwgMHgxNjcxIC8qIDEwMTEwMDExMTAw MDFiICovLAorCQkJCQkJCQkJIDEzKTsKKworCQljbXBfb2soMzE5LCAiPT0iLCBjYXJldCwg IkNhcmV0ID0gMzE5LiIpOworCQljbXBfb2soMHg3MSwgIj09IiwgcGFja1szNV0sICJTYXZl ZCB3aXRoIHRoaXJ0ZWVuLWJpdCB3aWR0aDogaXMgMHg3MS4iKTsKKwkJY21wX29rKDB4MzYs ICI9PSIsIHBhY2tbMzZdLCAiU2F2ZWQgd2l0aCB0aGlydGVlbi1iaXQgd2lkdGg6IGlzIDB4 MzYuIik7CisJCWNtcF9vaygweENFLCAiPT0iLCBwYWNrWzM3XSwgIlNhdmVkIHdpdGggdGhp cnRlZW4tYml0IHdpZHRoOiBpcyAweENFLiIpOworCQljbXBfb2soMHhDNiwgIj09IiwgcGFj a1szOF0sICJTYXZlZCB3aXRoIHRoaXJ0ZWVuLWJpdCB3aWR0aDogaXMgMHhDNi4iKTsKKwkJ Y21wX29rKDB4NTksICI9PSIsIHBhY2tbMzldLCAiU2F2ZWQgd2l0aCB0aGlydGVlbi1iaXQg d2lkdGg6IGlzIDB4NTkuIik7CisKKwkJY2FyZXQgPSBiaXRwYWNrX3UxNl9wYWNrKHBhY2ss IGNhcmV0LCAweDEgLyogUEFERElORyAqLywgMSk7CisJCWNtcF9vaygzMjAsICI9PSIsIGNh cmV0LCAiQ2FyZXQgPSAzMjAuIik7CisJCWNtcF9vaygweEQ5LCAiPT0iLCBwYWNrWzM5XSwK KwkJCSAgICJBZnRlciBwYWRkaW5nIHdpdGggMHgwMSwgdz0xOiAweDU5IC0+IDB4RDkuIik7 CisKKwkJZm9yIChpbnQgaiA9IDA7IGogPCA1OyBqKyspCisJCQljYXJldCA9IGJpdHBhY2tf dTE2X3BhY2socGFjaywgY2FyZXQsIDB4Q0RFRiwgMTYpOworCisJCWNtcF9vayg0MDAsICI9 PSIsIGNhcmV0LCAiQ2FyZXQgPSA0MDAuIik7CisJCWZvciAoaW50IGkgPSA0MDsgaSA8IDUw OykgeworCQkJY21wX29rKDB4RUYsICI9PSIsIHBhY2tbaSsrXSwgIlBhY2tlZCB3aXRoIHdp ZHRoPTE2LiAweEVGLiIpOworCQkJY21wX29rKDB4Q0QsICI9PSIsIHBhY2tbaSsrXSwgIlBh Y2tlZCB3aXRoIHdpZHRoPTE2LiAweEMuIik7CisJCX0KKworCQljYXJldCA9IGJpdHBhY2tf dTE2X3BhY2socGFjaywgY2FyZXQsCisJCQkJCQkJCSAweDAgLyogUEFERElORyBpbiBvcmRl ciB0byBzaGlmdCBieSAxIGJpdCovLAorCQkJCQkJCQkgMSk7CisJCWNtcF9vayg0MDEsICI9 PSIsIGNhcmV0LCAiQ2FyZXQgPSA0MDEuIik7CisKKwkJZm9yIChpbnQgaiA9IDA7IGogPCAz OyBqKyspCisJCQljYXJldCA9IGJpdHBhY2tfdTE2X3BhY2socGFjaywgY2FyZXQsIDB4NTU1 NSwgMTYpOworCisJCWNtcF9vayg0NDksICI9PSIsIGNhcmV0LCAiQ2FyZXQgPSA0MDEuIik7 CisJCWZvciAoaW50IGkgPSA1MDsgaSA8IDU2OykKKwkJCWNtcF9vaygweEFBLCAiPT0iLCBw YWNrW2krK10sCisJCQkJICAgIjE2LWJpdCB2YWx1ZSBzYXZlZCB3aXRoIHNoaWZ0IGJ5IDEg Yml0IDB4NTUtPjB4QUEuIik7CisKKwkJY21wX29rKDB4MCwgIj09IiwgcGFja1s1Nl0sICIx IGhpZ2hlciBiaXQgaXMgYWxvbmUgLiIpOworCisJCXByaW50ZigiVGVzdCBCSVRQQUNLIFBB Q0tJTkcgUEFTU0VEXG4iKTsKKwkJcHJpbnRmKCI9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09XG5cbiIpOworCisJCXByaW50ZigiPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PVxuIik7CisJCXByaW50ZigiVGVzdCBCSVRQQUNLIFVO UEFDS0lOR1xuIik7CisKKwkJY2FyZXQgPSAwOworCisJCWZvciAoaW50IGogPSAwOyBqIDwg ODsgaisrKSB7CisJCQljbXBfb2soMHgwMSwgIj09IiwgYml0cGFja191MTZfdW5wYWNrKHBh Y2ssICZjYXJldCwgMSkpOworCQkJY21wX29rKDB4MDAsICI9PSIsIGJpdHBhY2tfdTE2X3Vu cGFjayhwYWNrLCAmY2FyZXQsIDEpKTsKKwkJfQorCQljbXBfb2soY2FyZXQsICI9PSIsIDE2 KTsKKworCQlmb3IgKGludCBqID0gMDsgaiA8IDg7IGorKykKKwkJCWNtcF9vaygweDAyLCAi PT0iLCBiaXRwYWNrX3UxNl91bnBhY2socGFjaywgJmNhcmV0LCAyKSk7CisKKwkJY21wX29r KDMyLCAiPT0iLCBjYXJldCwgIkNhcmV0ID0gMzIuIik7CisKKwkJZm9yIChpbnQgaiA9IDA7 IGogPCA4OyBqKyspIHsKKwkJCWNtcF9vaygweDA1LCAiPT0iLCBiaXRwYWNrX3UxNl91bnBh Y2socGFjaywgJmNhcmV0LCAzKSk7CisJCQljbXBfb2soMHgwMiwgIj09IiwgYml0cGFja191 MTZfdW5wYWNrKHBhY2ssICZjYXJldCwgMykpOworCQl9CisJCWNtcF9vayg4MCwgIj09Iiwg Y2FyZXQsICJDYXJldCA9IDgwLiIpOworCisJCWNtcF9vaygweDBCLCAiPT0iLCBiaXRwYWNr X3UxNl91bnBhY2socGFjaywgJmNhcmV0LCA0KSk7CisJCWNtcF9vaygweDBDLCAiPT0iLCBi aXRwYWNrX3UxNl91bnBhY2socGFjaywgJmNhcmV0LCA0KSk7CisJCWNtcF9vaygweDBELCAi PT0iLCBiaXRwYWNrX3UxNl91bnBhY2socGFjaywgJmNhcmV0LCA0KSk7CisJCWNtcF9vaygw eDBFLCAiPT0iLCBiaXRwYWNrX3UxNl91bnBhY2socGFjaywgJmNhcmV0LCA0KSk7CisKKwkJ Y21wX29rKDk2LCAiPT0iLCBjYXJldCwgIkNhcmV0ID0gOTYuIik7CisKKwkJZm9yIChpbnQg aiA9IDA7IGogPCA4OyBqKyspCisJCQljbXBfb2soMHgwNywgIj09IiwgYml0cGFja191MTZf dW5wYWNrKHBhY2ssICZjYXJldCwgNSksCisJCQkJICAgIndpZHRoPTUsIHZhbD0wMDExMWIi KTsKKworCQljbXBfb2soMTM2LCAiPT0iLCBjYXJldCwgIkNhcmV0ID0gMTM2LiIpOworCisJ CWZvciAoaW50IGogPSAwOyBqIDwgNDsgaisrKQorCQkJY21wX29rKDB4MDcsICI9PSIsIGJp dHBhY2tfdTE2X3VucGFjayhwYWNrLCAmY2FyZXQsIDYpLAorCQkJCSAgICJ3aWR0aD02LCB2 YWw9MDAwMTExYiIpOworCisJCWNtcF9vaygxNjAsICI9PSIsIGNhcmV0LCAiQ2FyZXQgPSAx NjAuIik7CisKKwkJZm9yIChpbnQgaiA9IDA7IGogPCA4OyBqKyspCisJCQljbXBfb2soMHg1 NywgIj09IiwgYml0cGFja191MTZfdW5wYWNrKHBhY2ssICZjYXJldCwgNyksCisJCQkJICAg IndpZHRoPTcsIHZhbD0xMDEwMTExYiAoMHg1NykiKTsKKworCQljbXBfb2soMjE2LCAiPT0i LCBjYXJldCwgIkNhcmV0ID0gMjE2LiIpOworCisJCWNtcF9vaygweEJBLCAiPT0iLCBiaXRw YWNrX3UxNl91bnBhY2socGFjaywgJmNhcmV0LCA4KSwKKwkJCSAgICJ3aWR0aD04LCB2YWw9 MHhCQSIpOworCQljbXBfb2soMHhEQywgIj09IiwgYml0cGFja191MTZfdW5wYWNrKHBhY2ss ICZjYXJldCwgOCksCisJCQkgICAid2lkdGg9OCwgdmFsPTB4REMiKTsKKwkJY21wX29rKDB4 RkUsICI9PSIsIGJpdHBhY2tfdTE2X3VucGFjayhwYWNrLCAmY2FyZXQsIDgpLAorCQkJICAg IndpZHRoPTgsIHZhbD0weEZFIik7CisKKwkJY21wX29rKDI0MCwgIj09IiwgY2FyZXQsICJD YXJldCA9IDI0MC4iKTsKKworCQljbXBfb2soMHgwLCAiPT0iLCBiaXRwYWNrX3UxNl91bnBh Y2socGFjaywgJmNhcmV0LCA0KSwKKwkJCSAgICJ3aWR0aD00LCB2YWw9MHgwLCBmb3IgZnVu Iik7CisKKwkJY21wX29rKDB4MzIsICI9PSIsIGJpdHBhY2tfdTE2X3VucGFjayhwYWNrLCAm Y2FyZXQsIDgpLAorCQkJICAgIndpZHRoPTgsIHZhbD0weDMyIik7CisJCWNtcF9vaygweDU0 LCAiPT0iLCBiaXRwYWNrX3UxNl91bnBhY2socGFjaywgJmNhcmV0LCA4KSwKKwkJCSAgICJ3 aWR0aD04LCB2YWw9MHg1NCIpOworCQljbXBfb2soMHg3NiwgIj09IiwgYml0cGFja191MTZf dW5wYWNrKHBhY2ssICZjYXJldCwgOCksCisJCQkgICAid2lkdGg9OCwgdmFsPTB4NzYiKTsK KwkJY21wX29rKDB4OTgsICI9PSIsIGJpdHBhY2tfdTE2X3VucGFjayhwYWNrLCAmY2FyZXQs IDgpLAorCQkJICAgIndpZHRoPTgsIHZhbD0weDk4Iik7CisKKwkJY21wX29rKDB4MCwgIj09 IiwgYml0cGFja191MTZfdW5wYWNrKHBhY2ssICZjYXJldCwgNCksCisJCQkgICAid2lkdGg9 NCwgdmFsPTB4MCwgZm9yIGZ1biBwYWRkaW5nIGFnYWluIik7CisKKwkJZm9yIChpbnQgaiA9 IDA7IGogPCAzOyBqKyspCisJCQljbXBfb2soMHgxNjcxLCAiPT0iLCBiaXRwYWNrX3UxNl91 bnBhY2socGFjaywgJmNhcmV0LCAxMyksCisJCQkJICAgIndpZHRoPTEzLCB2YWw9MHgxNjcx ICgxMDExMDAxMTEwMDAxYikiKTsKKworCQljbXBfb2soMzE5LCAiPT0iLCBjYXJldCwgIkNh cmV0ID0gMzE5LiIpOworCisJCWNtcF9vaygweDEsICI9PSIsIGJpdHBhY2tfdTE2X3VucGFj ayhwYWNrLCAmY2FyZXQsIDEpLAorCQkJICAgIndpZHRoPTEsIHZhbD0weDEiKTsKKwkJY21w X29rKDMyMCwgIj09IiwgY2FyZXQsICJDYXJldCA9IDMyMC4iKTsKKworCQlmb3IgKGludCBq ID0gMDsgaiA8IDU7IGorKykKKwkJCWNtcF9vaygweENERUYsICI9PSIsIGJpdHBhY2tfdTE2 X3VucGFjayhwYWNrLCAmY2FyZXQsIDE2KSwKKwkJCQkgICAiMTgtYml0IHZhbHVlIGFsbGln bmVkIHdpdGggYnl0ZXMgaW4gcGFjay4iKTsKKworCQljbXBfb2soNDAwLCAiPT0iLCBjYXJl dCwgIkNhcmV0ID0gNDAwLiIpOworCQljbXBfb2soMHgwLCAiPT0iLCBiaXRwYWNrX3UxNl91 bnBhY2socGFjaywgJmNhcmV0LCAxKSwKKwkJCSAgICIxLWJpdCB3aWR0aCB2YWx1ZSAocGFk ZGluZyBmb3Igc2hpZnQpLiIpOworCQljbXBfb2soNDAxLCAiPT0iLCBjYXJldCwgIkNhcmV0 ID0gNDAxLiIpOworCisJCWZvciAoaW50IGogPSAwOyBqIDwgMzsgaisrKQorCQkJY21wX29r KDB4NTU1NSwgIj09IiwgYml0cGFja191MTZfdW5wYWNrKHBhY2ssICZjYXJldCwgMTYpLAor CQkJCSAgICIxNi1iaXQgd2lkdGggdmFsdWUgc2hpZnRlZCBieSAxIGJpdC4iKTsKKworCQlj bXBfb2soNDQ5LCAiPT0iLCBjYXJldCwgIkNhcmV0ID0gNDQ5LiIpOworCX0KKworCWRvbmVf dGVzdGluZygpOworfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvZGZvci90ZXN0X3VuaXFzb3J0 dmVjdF91MTYuYyBiL3NyYy90ZXN0L2Rmb3IvdGVzdF91bmlxc29ydHZlY3RfdTE2LmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjRkZGNlOGIwYjNkCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvZGZvci90ZXN0X3VuaXFzb3J0dmVjdF91MTYuYwpA QCAtMCwwICsxLDI2MyBAQAorLyoKKyAqIHRlc3RfdW5pcXNvcnR2ZWN0LmMKKyAqLworCisj aW5jbHVkZSAibGliL3ZlY3RfdTE2LmgiCisjaW5jbHVkZSAibGlidGFwL3RhcC5oIgorCitp bnQgdGVzdF91c3Yoc2l6ZV90IHNyY19jbnQsIHVpbnQxNl90ICpzcmNfaW4sIHNpemVfdCBl eHBlY3RlZF9jbnQsCisJCQkgdWludDE2X3QgKmV4cGVjdGVkX2luKTsKKworaW50Cit0ZXN0 X3VzdihzaXplX3Qgc3JjX2NudCwgdWludDE2X3QgKnNyY19pbiwgc2l6ZV90IGV4cGVjdGVk X2NudCwKKwkJIHVpbnQxNl90ICpleHBlY3RlZF9pbikKK3sKKwlpbnQgcmVzdWx0ID0gLTE7 CisJdmVjdF91MTZfdCBzcmM7CisJdmVjdF91MTZfdCBleHBlY3RlZDsKKwl1bmlxc29ydHZl Y3RfdTE2X3QgeDsKKworCXZlY3RfdTE2X2luaXQoJnNyYywgc3JjX2NudCwgTlVMTCk7CisJ dmVjdF91MTZfZmlsbCgmc3JjLCBzcmNfY250LCBzcmNfaW4pOworCisJdmVjdF91MTZfaW5p dCgmZXhwZWN0ZWQsIDAsIE5VTEwpOworCXZlY3RfdTE2X2ZpbGwoJmV4cGVjdGVkLCBleHBl Y3RlZF9jbnQsIGV4cGVjdGVkX2luKTsKKworCXZlY3RfdTE2X2luaXQoJngsIDAsIE5VTEwp OworCisJZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzcmNfY250OyBpKyspCisJCXVzdl91MTZf aW5zZXJ0KCZ4LCBzcmMubVtpXSk7CisKKwlyZXN1bHQgPSB2ZWN0X3UxNl9jb21wYXJlKCZ4 LCAmZXhwZWN0ZWQpOworCisJdmVjdF91MTZfY2xlYXIoJngpOworCXZlY3RfdTE2X2NsZWFy KCZleHBlY3RlZCk7CisJdmVjdF91MTZfY2xlYXIoJnNyYyk7CisJcmV0dXJuIHJlc3VsdDsK K30KKworaW50CittYWluKHZvaWQpCit7CisJcGxhbig1Nik7CisKKwlwcmludGYoIj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIpOworCXByaW50ZigiVGVz dCBDUkVBVEUgQU5EIERFU1RST1kgU09SVEVEIFVOSVFVRSBWRUNUT1IgKEVNUFRZKVxuIik7 CisJeworCQl1bmlxc29ydHZlY3RfdTE2X3QgdXN2OworCQlzaXplX3QgY2FwYWNpdHkgPSAx MDsKKwkJdmVjdF91MTZfaW5pdCgmdXN2LCBjYXBhY2l0eSwgTlVMTCk7CisJCWNtcF9vayh1 c3YuY2FwLCAiPT0iLCBjYXBhY2l0eSwKKwkJCSAgICJWZWN0b3JzIGNhcGFjaXR5IGlzIGVx dWFsIHRvIHJlcXVlc3RlZCBvbmUiKTsKKwkJY21wX29rKHVzdi5jbnQsICI9PSIsIDAsICJO byBtZW1iZXJzIGluIHZlY3RvciIpOworCQlvayh1c3YubSAhPSBOVUxMLCAiQXJyYXkgZm9y IG1lbWJlcnMgaXMgcmVzZXJ2ZWQiKTsKKworCQl2ZWN0X3UxNl9jbGVhcigmdXN2KTsKKwl9 CisJcHJpbnRmKCJUZXN0IENSRUFURSBBTkQgREVTVFJPWSBTT1JURUQgVU5JUVVFIFZFQ1RP UiAoRU1QVFkpIFBBU1NFRFxuIik7CisJcHJpbnRmKCI9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09XG5cbiIpOworCisJcHJpbnRmKCI9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09XG4iKTsKKwlwcmludGYoIlRlc3QgU0VBUkNIIElO IFVOSVFVRSBTT1JUIFZFQ1RcbiIpOworCXsKKwkJdW5pcXNvcnR2ZWN0X3UxNl90IHVzdjsK KwkJdXN2X3NyY2hfcmVzX3Qgc3JjaDsKKwkJdWludDE2X3QgaW5wdXRbNF0gPSB7IDUsIDEw LCAyMCwgMzAgfTsKKworCQl2ZWN0X3UxNl9pbml0KCZ1c3YsIDAsIE5VTEwpOworCisJCWZv ciAoc2l6ZV90IGkgPSAwOyBpIDwgNDsgaSsrKQorCQkJdXN2X3UxNl9pbnNlcnQoJnVzdiwg aW5wdXRbaV0pOworCisJCXNyY2ggPSB1c3ZfdTE2X3NlYXJjaCgmdXN2LCAwKTsKKwkJY21w X29rKHNyY2guc3QsICI9PSIsIFVTVl9TUkNIX05PVF9GT1VORF9TTUFMTEVTVCwKKwkJCSAg ICJOb3QgZm91bmQsIHNtYWxsZXN0Iik7CisJCWNtcF9vayhzcmNoLnBvcywgIj09IiwgMCwg IlBvcyA9MCIpOworCisJCXNyY2ggPSB1c3ZfdTE2X3NlYXJjaCgmdXN2LCAxKTsKKwkJY21w X29rKHNyY2guc3QsICI9PSIsIFVTVl9TUkNIX05PVF9GT1VORF9TTUFMTEVTVCwKKwkJCSAg ICJOb3QgZm91bmQsIHNtYWxsZXN0Iik7CisJCWNtcF9vayhzcmNoLnBvcywgIj09IiwgMCwg IlBvcyA9MCIpOworCisJCXNyY2ggPSB1c3ZfdTE2X3NlYXJjaCgmdXN2LCA1KTsKKwkJY21w X29rKHNyY2guc3QsICI9PSIsIFVTVl9TUkNIX0ZPVU5ELCAiRm91bmQiKTsKKwkJY21wX29r KHNyY2gucG9zLCAiPT0iLCAwLCAiUG9zID0wIik7CisKKwkJc3JjaCA9IHVzdl91MTZfc2Vh cmNoKCZ1c3YsIDYpOworCQljbXBfb2soc3JjaC5zdCwgIj09IiwgVVNWX1NSQ0hfTk9UX0ZP VU5ELCAiTm90IGZvdW5kIik7CisJCWNtcF9vayhzcmNoLnBvcywgIj09IiwgMSwgIlBvcyA9 MSIpOworCisJCXNyY2ggPSB1c3ZfdTE2X3NlYXJjaCgmdXN2LCAxMCk7CisJCWNtcF9vayhz cmNoLnN0LCAiPT0iLCBVU1ZfU1JDSF9GT1VORCwgIkZvdW5kIik7CisJCWNtcF9vayhzcmNo LnBvcywgIj09IiwgMSwgIlBvcyA9MSIpOworCisJCXNyY2ggPSB1c3ZfdTE2X3NlYXJjaCgm dXN2LCAxNSk7CisJCWNtcF9vayhzcmNoLnN0LCAiPT0iLCBVU1ZfU1JDSF9OT1RfRk9VTkQs ICJOb3QgZm91bmQiKTsKKwkJY21wX29rKHNyY2gucG9zLCAiPT0iLCAyLCAiUG9zID0yIik7 CisKKwkJc3JjaCA9IHVzdl91MTZfc2VhcmNoKCZ1c3YsIDIwKTsKKwkJY21wX29rKHNyY2gu c3QsICI9PSIsIFVTVl9TUkNIX0ZPVU5ELCAiRm91bmQiKTsKKwkJY21wX29rKHNyY2gucG9z LCAiPT0iLCAyLCAiUG9zID0yIik7CisKKwkJc3JjaCA9IHVzdl91MTZfc2VhcmNoKCZ1c3Ys IDI1KTsKKwkJY21wX29rKHNyY2guc3QsICI9PSIsIFVTVl9TUkNIX05PVF9GT1VORCwgIk5v dCBmb3VuZCIpOworCQljbXBfb2soc3JjaC5wb3MsICI9PSIsIDMsICJQb3MgPTMiKTsKKwor CQlzcmNoID0gdXN2X3UxNl9zZWFyY2goJnVzdiwgMzApOworCQljbXBfb2soc3JjaC5zdCwg Ij09IiwgVVNWX1NSQ0hfRk9VTkQsICJGb3VuZCIpOworCQljbXBfb2soc3JjaC5wb3MsICI9 PSIsIDMsICJQb3MgPTIiKTsKKworCQlzcmNoID0gdXN2X3UxNl9zZWFyY2goJnVzdiwgNDUp OworCQljbXBfb2soc3JjaC5zdCwgIj09IiwgVVNWX1NSQ0hfTk9UX0ZPVU5EX0xBUkdFU1Qs ICJOb3QgZm91bmQsIGxhcmdlc3QiKTsKKwkJY21wX29rKHNyY2gucG9zLCAiPT0iLCAzLCAi UG9zID0zIik7CisKKwkJdmVjdF91MTZfY2xlYXIoJnVzdik7CisJfQorCXsKKwkJdW5pcXNv cnR2ZWN0X3UxNl90IHVzdjsKKwkJdXN2X3NyY2hfcmVzX3Qgc3JjaDsKKwkJdWludDE2X3Qg aW5wdXRbM10gPSB7IDUsIDEwLCAyMCB9OworCQl1aW50MTZfdCBidWZbM107IC8qIG92ZXJp bmR1bGdlIGluIHRlc3RpbmcgdGhlIG91dGVyIG1lbW9yeSB2ZWN0b3IgKi8KKworCQl2ZWN0 X3UxNl9pbml0KCZ1c3YsIDMsIGJ1Zik7CisKKwkJZm9yIChzaXplX3QgaSA9IDA7IGkgPCAz OyBpKyspCisJCQl1c3ZfdTE2X2luc2VydCgmdXN2LCBpbnB1dFtpXSk7CisKKwkJc3JjaCA9 IHVzdl91MTZfc2VhcmNoKCZ1c3YsIDApOworCQljbXBfb2soc3JjaC5zdCwgIj09IiwgVVNW X1NSQ0hfTk9UX0ZPVU5EX1NNQUxMRVNULAorCQkJICAgIk5vdCBmb3VuZCwgc21hbGxlc3Qi KTsKKwkJY21wX29rKHNyY2gucG9zLCAiPT0iLCAwLCAiUG9zID0wIik7CisKKwkJc3JjaCA9 IHVzdl91MTZfc2VhcmNoKCZ1c3YsIDUpOworCQljbXBfb2soc3JjaC5zdCwgIj09IiwgVVNW X1NSQ0hfRk9VTkQsICJGb3VuZCIpOworCQljbXBfb2soc3JjaC5wb3MsICI9PSIsIDAsICJQ b3MgPTAiKTsKKworCQlzcmNoID0gdXN2X3UxNl9zZWFyY2goJnVzdiwgNik7CisJCWNtcF9v ayhzcmNoLnN0LCAiPT0iLCBVU1ZfU1JDSF9OT1RfRk9VTkQsICJOb3QgZm91bmQiKTsKKwkJ Y21wX29rKHNyY2gucG9zLCAiPT0iLCAxLCAiUG9zID0xIik7CisKKwkJc3JjaCA9IHVzdl91 MTZfc2VhcmNoKCZ1c3YsIDEwKTsKKwkJY21wX29rKHNyY2guc3QsICI9PSIsIFVTVl9TUkNI X0ZPVU5ELCAiRm91bmQiKTsKKwkJY21wX29rKHNyY2gucG9zLCAiPT0iLCAxLCAiUG9zID0x Iik7CisKKwkJc3JjaCA9IHVzdl91MTZfc2VhcmNoKCZ1c3YsIDE1KTsKKwkJY21wX29rKHNy Y2guc3QsICI9PSIsIFVTVl9TUkNIX05PVF9GT1VORCwgIk5vdCBmb3VuZCIpOworCQljbXBf b2soc3JjaC5wb3MsICI9PSIsIDIsICJQb3MgPTIiKTsKKworCQkvKgorCQkgKiBXaGVuIHNj b3BlcyBsIGFuZCBnIGFyZSBuZWlnaGJvdXJzIChnLWw9MSkgYnV0CisJCSAqIHZhbD09bVtn XSBpbnN0ZWFkIG9mIHZhbD09bVtsXS4KKwkJICovCisJCXNyY2ggPSB1c3ZfdTE2X3NlYXJj aCgmdXN2LCAyMCk7CisJCWNtcF9vayhzcmNoLnN0LCAiPT0iLCBVU1ZfU1JDSF9GT1VORCwg IkZvdW5kIik7CisJCWNtcF9vayhzcmNoLnBvcywgIj09IiwgMiwgIlBvcyA9MiIpOworCisJ CXNyY2ggPSB1c3ZfdTE2X3NlYXJjaCgmdXN2LCAyMSk7CisJCWNtcF9vayhzcmNoLnN0LCAi PT0iLCBVU1ZfU1JDSF9OT1RfRk9VTkRfTEFSR0VTVCwgIk5vdCBmb3VuZCwgbGFyZ2VzdCIp OworCQljbXBfb2soc3JjaC5wb3MsICI9PSIsIDIsICJQb3MgPTIiKTsKKworCQl2ZWN0X3Ux Nl9jbGVhcigmdXN2KTsKKwl9CisJeyAvKiBzaW5nbGUgbWVtYmVyKi8KKworCQl1bmlxc29y dHZlY3RfdTE2X3QgdXN2OworCQl1c3Zfc3JjaF9yZXNfdCBzcmNoOworCisJCXZlY3RfdTE2 X2luaXQoJnVzdiwgMywgTlVMTCk7CisKKwkJdXN2X3UxNl9pbnNlcnQoJnVzdiwgNSk7IC8q IFRoZSBvbmx5IGl0ZW0gaW4gbGlzdCBpcyA1ICovCisKKwkJc3JjaCA9IHVzdl91MTZfc2Vh cmNoKCZ1c3YsIDApOworCQljbXBfb2soc3JjaC5zdCwgIj09IiwgVVNWX1NSQ0hfTk9UX0ZP VU5EX1NNQUxMRVNULAorCQkJICAgIk5vdCBmb3VuZCwgc21hbGxlc3QiKTsKKwkJY21wX29r KHNyY2gucG9zLCAiPT0iLCAwLCAiUG9zID0wIik7CisKKwkJc3JjaCA9IHVzdl91MTZfc2Vh cmNoKCZ1c3YsIDUpOworCQljbXBfb2soc3JjaC5zdCwgIj09IiwgVVNWX1NSQ0hfRk9VTkQs ICJGb3VuZCIpOworCQljbXBfb2soc3JjaC5wb3MsICI9PSIsIDAsICJQb3MgPTAiKTsKKwor CQlzcmNoID0gdXN2X3UxNl9zZWFyY2goJnVzdiwgNik7CisJCWNtcF9vayhzcmNoLnN0LCAi PT0iLCBVU1ZfU1JDSF9OT1RfRk9VTkRfTEFSR0VTVCwgIk5vdCBmb3VuZCwgbGFyZ2VzdCIp OworCQljbXBfb2soc3JjaC5wb3MsICI9PSIsIDAsICJQb3MgPTIiKTsKKworCQl2ZWN0X3Ux Nl9jbGVhcigmdXN2KTsKKwl9CisJeyAvKiBlbXB0eSB2ZWN0b3IqLworCisJCXVuaXFzb3J0 dmVjdF91MTZfdCB1c3Y7CisJCXVzdl9zcmNoX3Jlc190IHNyY2g7CisKKwkJdmVjdF91MTZf aW5pdCgmdXN2LCAxLCBOVUxMKTsKKworCQlzcmNoID0gdXN2X3UxNl9zZWFyY2goJnVzdiwg MCk7CisJCWNtcF9vayhzcmNoLnN0LCAiPT0iLCBVU1ZfU1JDSF9FTVBUWSwgIlZlY3RvciBp cyBlbXB0eS4iKTsKKwkJY21wX29rKHNyY2gucG9zLCAiPT0iLCAwLCAiUG9zID0wIik7CisK KwkJc3JjaCA9IHVzdl91MTZfc2VhcmNoKCZ1c3YsIDQpOworCQljbXBfb2soc3JjaC5zdCwg Ij09IiwgVVNWX1NSQ0hfRU1QVFksICJWZWN0b3IgaXMgZW1wdHkuIik7CisJCWNtcF9vayhz cmNoLnBvcywgIj09IiwgMCwgIlBvcyA9MCIpOworCisJCXNyY2ggPSB1c3ZfdTE2X3NlYXJj aCgmdXN2LCA1KTsKKwkJY21wX29rKHNyY2guc3QsICI9PSIsIFVTVl9TUkNIX0VNUFRZLCAi VmVjdG9yIGlzIGVtcHR5LiIpOworCQljbXBfb2soc3JjaC5wb3MsICI9PSIsIDAsICJQb3Mg PTAiKTsKKworCQlzcmNoID0gdXN2X3UxNl9zZWFyY2goJnVzdiwgNik7CisJCWNtcF9vayhz cmNoLnN0LCAiPT0iLCBVU1ZfU1JDSF9FTVBUWSwgIlZlY3RvciBpcyBlbXB0eS4iKTsKKwkJ Y21wX29rKHNyY2gucG9zLCAiPT0iLCAwLCAiUG9zID0wIik7CisKKwkJdmVjdF91MTZfY2xl YXIoJnVzdik7CisJfQorCXByaW50ZigiVGVzdCBTRUFSQ0ggSU4gVU5JUVVFIFNPUlQgVkVD VCBQQVNTRUQuXG4iKTsKKwlwcmludGYoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT1cblxuIik7CisKKwlwcmludGYoIj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT1cbiIpOworCXByaW50ZigiVGVzdCBFUlJPUiBPTiBOTyBWRUNU T1IgRk9SIFNFQVJDSElOR1xuIik7CisJeworCQl1c3Zfc3JjaF9yZXNfdCBzcmNoOworCQlz cmNoID0gdXN2X3UxNl9zZWFyY2goTlVMTCwgMCk7CisJCWNtcF9vayhzcmNoLnN0LCAiPT0i LCBVU1ZfU1JDSF9FUlJPUiwKKwkJCSAgICJFcnJvcjogbm8gdmVjdG9yIChlbXB0eSBwb2lu dGVyIG9uIHZlY3Ryb3IpLiIpOworCX0KKwl7CisJCXVuaXFzb3J0dmVjdF91MTZfdCB1c3Y7 CisJCXVzdl9zcmNoX3Jlc190IHNyY2g7CisJCXZlY3RfdTE2X2luaXQoJnVzdiwgMCwgTlVM TCk7CisKKwkJc3JjaCA9IHVzdl91MTZfc2VhcmNoKCZ1c3YsIDApOworCQljbXBfb2soc3Jj aC5zdCwgIj09IiwgVVNWX1NSQ0hfRU1QVFksCisJCQkgICAiU2VhcmNoIGluIGVtcHR5IHZl Y3RvciBpcyBub3QgYW4gZXJyb3IuIik7CisKKwkJdmVjdF91MTZfY2xlYXIoJnVzdik7CisJ fQorCXByaW50ZigiVGVzdCBFUlJPUiBPTiBOTyBWRUNUT1IgRk9SIFNFQVJDSElORyBQQVNT RURcbiIpOworCXByaW50ZigiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PVxuXG4iKTsKKworCXByaW50ZigiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PVxuIik7CisJcHJpbnRmKCJUZXN0IENSRUFURUQgVkVDVE9SUyBBUkUgU09S VEVEIEFORCBVTklRVUVcbiIpOworCXsKKwkJY21wX29rKAorCQkJMCwgIj09IiwKKwkJCXRl c3RfdXN2KDEwLCAodWludDE2X3RbXSkgeyAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5 IH0sIC8vIHNyYworCQkJCQkgMTAsCisJCQkJCSAodWludDE2X3RbXSkgeyAwLCAxLCAyLCAz LCA0LCA1LCA2LCA3LCA4LCA5IH0pLCAvLyBleHBlY3RlZAorCQkJIlVuaXF1ZSBzb3J0ZWQg dmVjdG9yIHJlbWFpbnMgdGhlIHNhbWUuIik7CisKKwkJY21wX29rKDAsICI9PSIsCisJCQkg ICB0ZXN0X3VzdigxMCwKKwkJCQkJCSh1aW50MTZfdFtdKSB7IDAsIDEsIDIsIDMsIDQsIDUs IDMsIDcsIDUsIDkgfSwgLy8gc3JjCisJCQkJCQk4LCAodWludDE2X3RbXSkgeyAwLCAxLCAy LCAzLCA0LCA1LCA3LCA5IH0pLCAvLyBleHBlY3RlZAorCQkJICAgIkR1cGxpY2F0ZXMgYXJl IHJlbW92ZWQuIik7CisKKwkJY21wX29rKAorCQkJMCwgIj09IiwKKwkJCXRlc3RfdXN2KDEw LCAodWludDE2X3RbXSkgeyA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwIH0sIC8vIHNy YworCQkJCQkgMTAsCisJCQkJCSAodWludDE2X3RbXSkgeyAwLCAxLCAyLCAzLCA0LCA1LCA2 LCA3LCA4LCA5IH0pLCAvLyBleHBlY3RlZAorCQkJIlVuc29ydGVkIGJlY2FtZSBzb3J0ZWQu Iik7CisJfQorCXByaW50ZigiVGVzdCBDUkVBVEVEIFZFQ1RPUlMgQVJFIFNPUlRFRCBBTkQg VU5JUVVFIFBBU1NFRFxuIik7CisJcHJpbnRmKCI9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09XG5cbiIpOworCisJZG9uZV90ZXN0aW5nKCk7Cit9CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9kZm9yL3Rlc3RfdmVjdF91MTYuYyBiL3NyYy90ZXN0L2Rmb3IvdGVz dF92ZWN0X3UxNi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4w MGVmZTdkY2NiZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2Rmb3IvdGVzdF92ZWN0 X3UxNi5jCkBAIC0wLDAgKzEsMTY4IEBACisvKgorICogdGVzdF92ZWN0X3UxNi5jCisgKi8K KworI2luY2x1ZGUgImxpYnRhcC90YXAuaCIKKyNpbmNsdWRlICJsaWIvdmVjdF91MTYuaCIK KworaW50CittYWluKHZvaWQpCit7CisJcGxhbigzNSk7CisKKwlwcmludGYoIj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIpOworCXByaW50ZigiVGVzdCBJ TklUIEFORCBDTEVBUiBWRUNUT1JcbiIpOworCXsKKwkJdmVjdF91MTZfdCB2OworCQlzaXpl X3QgY2FwYWNpdHkgPSAxMDsKKwkJY21wX29rKDAsICI9PSIsIHZlY3RfdTE2X2luaXQoJnYs IGNhcGFjaXR5LCBOVUxMKSwKKwkJCSAgICJSZXN1bHQgb2YgdmVjdF9pbml0IGlzIDAiKTsK KworCQljbXBfb2sodi5jYXAsICI9PSIsIGNhcGFjaXR5LAorCQkJICAgIlZlY3RvcnMgY2Fw YWNpdHkgaXMgZXF1YWwgdG8gcmVxdWVzdGVkIG9uZSIpOworCQljbXBfb2sodi5jbnQsICI9 PSIsIDAsICJObyBtZW1iZXJzIGluIHZlY3RvciIpOworCQlvayh2Lm0gIT0gTlVMTCwgIkFy cmF5IGZvciBtZW1iZXJzIGlzIHJlc2VydmVkIik7CisJCWNtcF9vayh2Lm1lbV9pc19vdXRl ciwgIj09IiwgZmFsc2UsICJWZWN0b3IgZG9lcyBub3QgdXNlIG91dGVyIG1lbW9yeSIpOwor CisJCXZlY3RfdTE2X2NsZWFyKCZ2KTsKKworCQljbXBfb2sodi5jYXAsICI9PSIsIDAsICJW ZWN0b3JzIGNhcGFjaXR5IGlzIDAgYWZ0ZXIgY2xlYW51cCIpOworCQljbXBfb2sodi5jbnQs ICI9PSIsIDAsICJObyBtZW1iZXJzIGluIHZlY3RvciBhZnRlciBjbGVhbnVwIik7CisJCW9r KHYubSA9PSBOVUxMLCAiQXJyYXkgZm9yIG1lbWJlcnMgaXMgYWJzZW50Iik7CisJCWNtcF9v ayh2Lm1lbV9pc19vdXRlciwgIj09IiwgZmFsc2UsICJWZWN0b3IgZG9lcyBub3QgdXNlIG91 dGVyIG1lbW9yeSIpOworCX0KKwlwcmludGYoIlRlc3QgSU5JVCBBTkQgQ0xFQVIgVkVDVE9S IFBBU1NFRFxuIik7CisJcHJpbnRmKCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09XG5cbiIpOworCisJcHJpbnRmKCI9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09XG4iKTsKKwlwcmludGYoIlRlc3QgSU5JVCBBTkQgRklMTCBWRUNU T1JcbiIpOworCXsKKwkJdmVjdF91MTZfdCB2OworCQlzaXplX3QgY2FwYWNpdHkgPSAxMDsK KwkJY29uc3QgdWludDE2X3QgdmFsc1tdID0geyAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4 LCA5IH07CisKKwkJY21wX29rKDAsICI9PSIsIHZlY3RfdTE2X2luaXQoJnYsIGNhcGFjaXR5 LCBOVUxMKSwKKwkJCSAgICJSZXN1bHQgb2YgdmVjdF9pbml0IGlzIDAiKTsKKwkJY21wX29r KDAsICI9PSIsIHZlY3RfdTE2X2ZpbGwoJnYsIGNhcGFjaXR5LCB2YWxzKSwKKwkJCSAgICJS ZXN1bHQgb2YgdmVjdF9maWxsIGlzIDAiKTsKKworCQljbXBfb2sodi5jYXAsICI9PSIsIGNh cGFjaXR5LAorCQkJICAgIlZlY3RvcnMgY2FwYWNpdHkgaXMgZXF1YWwgdG8gcmVxdWVzdGVk IG9uZSIpOworCQlvayh2Lm0gIT0gTlVMTCwgIkFycmF5IGZvciBtZW1iZXJzIGlzIHJlc2Vy dmVkIik7CisJCWNtcF9vayh2LmNudCwgIj09IiwgY2FwYWNpdHksICJNZW1iZXJzIGFyZSBp biB2ZWN0b3IuIik7CisJCXsKKwkJCWludCBlcXVhbCA9IDA7CisJCQlmb3IgKHNpemVfdCBp ID0gMDsgaSA8IGNhcGFjaXR5OyBpKyspIHsKKwkJCQlpZiAodi5tW2ldID09IGkpCisJCQkJ CWVxdWFsID0gZXF1YWwgKyAxOworCQkJCWVsc2UKKwkJCQkJYnJlYWs7CisJCQl9CisJCQlj bXBfb2soZXF1YWwsICI9PSIsIDEwLCAiTWVtYmVycyBhcmUgY29ycmVjdCIpOworCQl9CisJ CXZlY3RfdTE2X2NsZWFyKCZ2KTsKKwl9CisJcHJpbnRmKCJUZXN0IElOSVQgQU5EIEZJTEwg VkVDVE9SIFBBU1NFRFxuIik7CisJcHJpbnRmKCI9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09XG5cbiIpOworCisJcHJpbnRmKCI9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09XG4iKTsKKwlwcmludGYoIlRlc3QgSU5JVCBBTkQgRklM TCBWRUNUT1Igd2l0aCB6ZXJvIGNhcGNhaXR5XG4iKTsKKwl7CisJCXZlY3RfdTE2X3QgdjsK KwkJc2l6ZV90IGNhcGFjaXR5ID0gMDsKKworCQljbXBfb2soMCwgIj09IiwgdmVjdF91MTZf aW5pdCgmdiwgY2FwYWNpdHksIE5VTEwpLAorCQkJICAgIlJlc3VsdCBvZiB2ZWN0X2luaXQg aXMgMCIpOworCQljbXBfb2soMCwgIj09IiwgdmVjdF91MTZfZmlsbCgmdiwgY2FwYWNpdHks IE5VTEwpLAorCQkJICAgIlJlc3VsdCBvZiB2ZWN0X2ZpbGwgaXMgMCIpOworCisJCWNtcF9v ayh2LmNhcCwgIj09IiwgMCwgIlZlY3RvcidzIGNhcGFjaXR5IGlzIHplcm8iKTsKKwkJb2so di5tID09IE5VTEwsCisJCSAgICJQb2ludGVyIHRvIG1lbWJlcnMgaXMgTlVMTCAoYXJyYXkg Zm9yIG1lbWJlcnMgaXMgbm90IHJlc2VydmVkKSIpOworCQlvayh2LmNudCA9PSAwLCAiQ291 bnRlciBvZiBtZW1iZXJzIGlzIHplcm8uIik7CisJCXZlY3RfdTE2X2NsZWFyKCZ2KTsKKwl9 CisJeworCQl2ZWN0X3UxNl90IHY7CisJCXNpemVfdCBjYXBhY2l0eSA9IDEwOworCQljb25z dCB1aW50MTZfdCB2YWxzW10gPSB7IDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDkgfTsK KworCQljbXBfb2soMCwgIj09IiwgdmVjdF91MTZfaW5pdCgmdiwgMCwgTlVMTCksICJSZXN1 bHQgb2YgdmVjdF9pbml0IGlzIDAiKTsKKwkJY21wX29rKDAsICI9PSIsIHZlY3RfdTE2X2Zp bGwoJnYsIGNhcGFjaXR5LCB2YWxzKSwKKwkJCSAgICJSZXN1bHQgb2YgdmVjdF9maWxsIGlz IDAiKTsKKworCQljbXBfb2sodi5jYXAsICI9PSIsIGNhcGFjaXR5LAorCQkJICAgIlZlY3Rv cidzIGNhcGFjaXR5IGlzIG5vdCB6ZXJvIGFmdGVyIGZpbGxpbmciKTsKKwkJb2sodi5tICE9 IE5VTEwsCisJCSAgICJQb2ludGVyIHRvIG1lbWJlcnMgaXMgbm90IE5VTEwgZmF0ZXIgZmls bGluZyAoYXJyYXkgZm9yIG1lbWJlcnMgaGFzIGJlZW4gcmVzZXJ2ZWQpIik7CisJCW9rKHYu Y250ID09IGNhcGFjaXR5LCAiQ291bnRlciBvZiBtZW1iZXJzIGlzIG5vdCB6ZXJvIGFmdGVy IGZpbGxpbmcuIik7CisJCXZlY3RfdTE2X2NsZWFyKCZ2KTsKKwl9CisJcHJpbnRmKCJUZXN0 IElOSVQgQU5EIEZJTEwgVkVDVE9SIHdpdGggemVybyBjYXBjYWl0eSBpcyBmaW5pc2hlZFxu Iik7CisJcHJpbnRmKCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 XG5cbiIpOworCisJcHJpbnRmKCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09XG4iKTsKKwlwcmludGYoIlRlc3QgQ09NUEFSRSBWRUNUT1JTXG4iKTsKKwl7CisJ CXZlY3RfdTE2X3QgYSwgYiwgYywgZDsKKworCQl1aW50MTZfdCBhdmFsc1tdID0geyAwLCAx LCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5IH07CisJCXVpbnQxNl90IGJ2YWxzW10gPSB7IDAs IDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDkgfTsKKwkJdWludDE2X3QgY3ZhbHNbXSA9IHsg MSwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSB9OworCQl1aW50MTZfdCBkdmFsc1tdID0g eyAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4IH07CisKKwkJdmVjdF91MTZfaW5pdCgmYSwg MCwgTlVMTCk7CisJCXZlY3RfdTE2X2luaXQoJmIsIDAsIE5VTEwpOworCQl2ZWN0X3UxNl9p bml0KCZjLCAwLCBOVUxMKTsKKwkJdmVjdF91MTZfaW5pdCgmZCwgMCwgTlVMTCk7CisKKwkJ dmVjdF91MTZfZmlsbCgmYSwgMTAsIGF2YWxzKTsKKwkJdmVjdF91MTZfZmlsbCgmYiwgMTAs IGJ2YWxzKTsKKwkJdmVjdF91MTZfZmlsbCgmYywgMTAsIGN2YWxzKTsKKwkJdmVjdF91MTZf ZmlsbCgmZCwgOSwgZHZhbHMpOworCisJCWNtcF9vaygwLCAiPT0iLCB2ZWN0X3UxNl9jb21w YXJlKCZhLCAmYiksICJWZWN0b3JzIGFyZSBlcXVhbCIpOworCQljbXBfb2soLTEsICI9PSIs IHZlY3RfdTE2X2NvbXBhcmUoJmEsICZjKSwKKwkJCSAgICJWZWN0b3JzIGFyZSBub3QgZXF1 YWwgYmVjYXVzZSBvZiB2YWx1ZSBvZiBtZW1iZXJzIik7CisJCWNtcF9vaygtMSwgIj09Iiwg dmVjdF91MTZfY29tcGFyZSgmYSwgJmQpLAorCQkJICAgIlZlY3RvcnMgYXJlIG5vdCBlcXVh bCBiZWNhdXNlIG9mIG51bWJlciBvZiBtZW1iZXJzIik7CisJfQorCXByaW50ZigiVGVzdCBD T01QQVJFIFZFQ1RPUlMgaXMgZmluaXNoZWQuIFxuIik7CisJcHJpbnRmKCI9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiIpOworCisJcHJpbnRmKCI9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iKTsKKwlwcmludGYoIlRl c3QgVkVDVE9SIFdJVEggT1VURVIgTUVNT1JZXG4iKTsKKwl7CisjZGVmaW5lIFZFQ1RfQ0FQ IDEwMAorCQl2ZWN0X3UxNl90IHZlY3Q7CisJCXVpbnQxNl90IGJ1ZltWRUNUX0NBUF07IC8q IHVpbnQxNl90IGlzIHRoZSBpdGVtJ3MgdHlwZSAqLworCQl2ZWN0X3UxNl9pbml0KCZ2ZWN0 LCBWRUNUX0NBUCwgYnVmKTsKKwkJY21wX29rKAorCQkJdmVjdC5jYXAsICI9PSIsIFZFQ1Rf Q0FQLAorCQkJIkluaXRpYWxpc2F0aW9uIG9mIHZlY3RvciBoYXZpbmcgZXh0ZXJuYWwgbWVt b3J5IHJlc3VsdGVkIGluIHByb3BlciBjYXBhY2l0eS4iKTsKKwkJY21wX29rKAorCQkJdmVj dC5jbnQsICI9PSIsIDAsCisJCQkiSW5pdGlhbGlzYXRpb24gb2YgdmVjdG9yIGhhdmluZyBl eHRlcm5hbCBtZW1vcnkgcmVzdWx0ZWQgaW4gcHJvcGVyIG51bWJlciBvZiBpdGVtcy4iKTsK KwkJb2soKCh2b2lkICopdmVjdC5tID09ICh2b2lkICopYnVmKSwKKwkJICAgIkluaXRpYWxp c2F0aW9uIG9mIHZlY3RvciBoYXZpbmcgZXh0ZXJuYWwgbWVtb3J5IHNldCBidWYgdG8gdmVj dC0+bS4iKTsKKwkJb2sodmVjdC5tZW1faXNfb3V0ZXIsCisJCSAgICJJbml0aWFsaXNhdGlv biBvZiB2ZWN0b3IgaGF2aW5nIGV4dGVybmFsIG1lbW9yeSBzZXQgbWVtX2lzX291dGVyIGZs YWcuIik7CisKKwkJZm9yIChzaXplX3QgaSA9IDA7IGkgPCBWRUNUX0NBUDsgaSsrKQorCQl7 CisJCQlpZiAodmVjdF91MTZfYXBwZW5kKCZ2ZWN0LCBpKSAhPSAwKQorCQkJCWZhaWwoCisJ CQkJCSJFUlJPUjogTmV3IHZhbHVlIGNhbid0IGJlIGFwcGVuZGVkIGludG8gdmVjdG9yIGhh dmluZyBleHRlcm5hbCBtZW1vcnkuIik7CisJCX0KKwkJcGFzcygKKwkJCSJBbGwgdmFsdWVz IGhhdmUgYmVlbiBhcHBlbmRlZCBpbnRvIHZlY3RvciBoYXZpbmcgZXh0ZXJuYWwgbWVtb3J5 LiIpOworCisJCWNtcF9vayh2ZWN0LmNudCwgIj09IiwgVkVDVF9DQVAsICJWZWN0b3IgaXMg ZnVsbC4iKTsKKwkJY21wX29rKHZlY3RfdTE2X2FwcGVuZCgmdmVjdCwgVkVDVF9DQVApLCAi PT0iLCAtMSwKKwkJCSAgICJPbmNlIHZlY3RvciBpcyBmdWxsLCBleHRyYSBpdGVtIGNhbid0 IGJlIGFwcGVuZGVkLiIpOworCX0KKwlwcmludGYoIlRlc3QgVkVDVE9SIFdJVEggT1VURVIg TUVNT1JZIGlzIGZpbmlzaGVkXG4iKTsKKwlwcmludGYoIj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT1cbiIpOworCisJZG9uZV90ZXN0aW5nKCk7Cit9CmRpZmYg LS1naXQgYS9zcmMvdGVzdC9saWJ0YXAvLmdpdGlnbm9yZSBiL3NyYy90ZXN0L2xpYnRhcC8u Z2l0aWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yYzk1 ZDA0NmM3ZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2xpYnRhcC8uZ2l0aWdub3Jl CkBAIC0wLDAgKzEsMTMgQEAKKy90LyoKKyEvdC8qLioKKy90LyouZXhlCisvdC8qLmdvdAor Ki5hCisqLmxvCisqLm8KKyouc28KKyoucGMKK3Vzci8KKyouc3c/CisvLmRlcHMKKy8uZGly c3RhbXAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2xpYnRhcC8udHJhdmlzLnltbCBiL3NyYy90 ZXN0L2xpYnRhcC8udHJhdmlzLnltbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMC4uNmY5ODA5ZTFiOTkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9saWJ0 YXAvLnRyYXZpcy55bWwKQEAgLTAsMCArMSwxMyBAQAorbGFuZ3VhZ2U6IGMKKworY29tcGls ZXI6CisgIC0gZ2NjCisgIC0gY2xhbmcKKworYmVmb3JlX2luc3RhbGw6IHN1ZG8gYXB0LWdl dCBpbnN0YWxsIC15IGxpYnRlc3QtZGlmZmVyZW5jZXMtcGVybAorCitpbnN0YWxsOiBtYWtl IENDPSRDQyBpbnN0YWxsCisKK3NjcmlwdDogbWFrZSBDQz0kQ0MgdGVzdAorCithZnRlcl9z Y3JpcHQ6IG1ha2UgdW5pbnN0YWxsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9saWJ0YXAvQ09Q WUlORyBiL3NyYy90ZXN0L2xpYnRhcC9DT1BZSU5HCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi42NWM1Y2E4OGE2NwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90 ZXN0L2xpYnRhcC9DT1BZSU5HCkBAIC0wLDAgKzEsMTY1IEBACisgICAgICAgICAgICAgICAg ICAgR05VIExFU1NFUiBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFCisgICAgICAgICAgICAgICAg ICAgICAgIFZlcnNpb24gMywgMjkgSnVuZSAyMDA3CisKKyBDb3B5cmlnaHQgKEMpIDIwMDcg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuIDxodHRwOi8vZnNmLm9yZy8+CisgRXZl cnlvbmUgaXMgcGVybWl0dGVkIHRvIGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29w aWVzCisgb2YgdGhpcyBsaWNlbnNlIGRvY3VtZW50LCBidXQgY2hhbmdpbmcgaXQgaXMgbm90 IGFsbG93ZWQuCisKKworICBUaGlzIHZlcnNpb24gb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBpbmNvcnBvcmF0ZXMKK3RoZSB0ZXJtcyBhbmQgY29uZGl0aW9u cyBvZiB2ZXJzaW9uIDMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworTGljZW5zZSwgc3Vw cGxlbWVudGVkIGJ5IHRoZSBhZGRpdGlvbmFsIHBlcm1pc3Npb25zIGxpc3RlZCBiZWxvdy4K KworICAwLiBBZGRpdGlvbmFsIERlZmluaXRpb25zLgorCisgIEFzIHVzZWQgaGVyZWluLCAi dGhpcyBMaWNlbnNlIiByZWZlcnMgdG8gdmVyc2lvbiAzIG9mIHRoZSBHTlUgTGVzc2VyCitH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBhbmQgdGhlICJHTlUgR1BMIiByZWZlcnMgdG8gdmVy c2lvbiAzIG9mIHRoZSBHTlUKK0dlbmVyYWwgUHVibGljIExpY2Vuc2UuCisKKyAgIlRoZSBM aWJyYXJ5IiByZWZlcnMgdG8gYSBjb3ZlcmVkIHdvcmsgZ292ZXJuZWQgYnkgdGhpcyBMaWNl bnNlLAorb3RoZXIgdGhhbiBhbiBBcHBsaWNhdGlvbiBvciBhIENvbWJpbmVkIFdvcmsgYXMg ZGVmaW5lZCBiZWxvdy4KKworICBBbiAiQXBwbGljYXRpb24iIGlzIGFueSB3b3JrIHRoYXQg bWFrZXMgdXNlIG9mIGFuIGludGVyZmFjZSBwcm92aWRlZAorYnkgdGhlIExpYnJhcnksIGJ1 dCB3aGljaCBpcyBub3Qgb3RoZXJ3aXNlIGJhc2VkIG9uIHRoZSBMaWJyYXJ5LgorRGVmaW5p bmcgYSBzdWJjbGFzcyBvZiBhIGNsYXNzIGRlZmluZWQgYnkgdGhlIExpYnJhcnkgaXMgZGVl bWVkIGEgbW9kZQorb2YgdXNpbmcgYW4gaW50ZXJmYWNlIHByb3ZpZGVkIGJ5IHRoZSBMaWJy YXJ5LgorCisgIEEgIkNvbWJpbmVkIFdvcmsiIGlzIGEgd29yayBwcm9kdWNlZCBieSBjb21i aW5pbmcgb3IgbGlua2luZyBhbgorQXBwbGljYXRpb24gd2l0aCB0aGUgTGlicmFyeS4gIFRo ZSBwYXJ0aWN1bGFyIHZlcnNpb24gb2YgdGhlIExpYnJhcnkKK3dpdGggd2hpY2ggdGhlIENv bWJpbmVkIFdvcmsgd2FzIG1hZGUgaXMgYWxzbyBjYWxsZWQgdGhlICJMaW5rZWQKK1ZlcnNp b24iLgorCisgIFRoZSAiTWluaW1hbCBDb3JyZXNwb25kaW5nIFNvdXJjZSIgZm9yIGEgQ29t YmluZWQgV29yayBtZWFucyB0aGUKK0NvcnJlc3BvbmRpbmcgU291cmNlIGZvciB0aGUgQ29t YmluZWQgV29yaywgZXhjbHVkaW5nIGFueSBzb3VyY2UgY29kZQorZm9yIHBvcnRpb25zIG9m IHRoZSBDb21iaW5lZCBXb3JrIHRoYXQsIGNvbnNpZGVyZWQgaW4gaXNvbGF0aW9uLCBhcmUK K2Jhc2VkIG9uIHRoZSBBcHBsaWNhdGlvbiwgYW5kIG5vdCBvbiB0aGUgTGlua2VkIFZlcnNp b24uCisKKyAgVGhlICJDb3JyZXNwb25kaW5nIEFwcGxpY2F0aW9uIENvZGUiIGZvciBhIENv bWJpbmVkIFdvcmsgbWVhbnMgdGhlCitvYmplY3QgY29kZSBhbmQvb3Igc291cmNlIGNvZGUg Zm9yIHRoZSBBcHBsaWNhdGlvbiwgaW5jbHVkaW5nIGFueSBkYXRhCithbmQgdXRpbGl0eSBw cm9ncmFtcyBuZWVkZWQgZm9yIHJlcHJvZHVjaW5nIHRoZSBDb21iaW5lZCBXb3JrIGZyb20g dGhlCitBcHBsaWNhdGlvbiwgYnV0IGV4Y2x1ZGluZyB0aGUgU3lzdGVtIExpYnJhcmllcyBv ZiB0aGUgQ29tYmluZWQgV29yay4KKworICAxLiBFeGNlcHRpb24gdG8gU2VjdGlvbiAzIG9m IHRoZSBHTlUgR1BMLgorCisgIFlvdSBtYXkgY29udmV5IGEgY292ZXJlZCB3b3JrIHVuZGVy IHNlY3Rpb25zIDMgYW5kIDQgb2YgdGhpcyBMaWNlbnNlCit3aXRob3V0IGJlaW5nIGJvdW5k IGJ5IHNlY3Rpb24gMyBvZiB0aGUgR05VIEdQTC4KKworICAyLiBDb252ZXlpbmcgTW9kaWZp ZWQgVmVyc2lvbnMuCisKKyAgSWYgeW91IG1vZGlmeSBhIGNvcHkgb2YgdGhlIExpYnJhcnks IGFuZCwgaW4geW91ciBtb2RpZmljYXRpb25zLCBhCitmYWNpbGl0eSByZWZlcnMgdG8gYSBm dW5jdGlvbiBvciBkYXRhIHRvIGJlIHN1cHBsaWVkIGJ5IGFuIEFwcGxpY2F0aW9uCit0aGF0 IHVzZXMgdGhlIGZhY2lsaXR5IChvdGhlciB0aGFuIGFzIGFuIGFyZ3VtZW50IHBhc3NlZCB3 aGVuIHRoZQorZmFjaWxpdHkgaXMgaW52b2tlZCksIHRoZW4geW91IG1heSBjb252ZXkgYSBj b3B5IG9mIHRoZSBtb2RpZmllZAordmVyc2lvbjoKKworICAgYSkgdW5kZXIgdGhpcyBMaWNl bnNlLCBwcm92aWRlZCB0aGF0IHlvdSBtYWtlIGEgZ29vZCBmYWl0aCBlZmZvcnQgdG8KKyAg IGVuc3VyZSB0aGF0LCBpbiB0aGUgZXZlbnQgYW4gQXBwbGljYXRpb24gZG9lcyBub3Qgc3Vw cGx5IHRoZQorICAgZnVuY3Rpb24gb3IgZGF0YSwgdGhlIGZhY2lsaXR5IHN0aWxsIG9wZXJh dGVzLCBhbmQgcGVyZm9ybXMKKyAgIHdoYXRldmVyIHBhcnQgb2YgaXRzIHB1cnBvc2UgcmVt YWlucyBtZWFuaW5nZnVsLCBvcgorCisgICBiKSB1bmRlciB0aGUgR05VIEdQTCwgd2l0aCBu b25lIG9mIHRoZSBhZGRpdGlvbmFsIHBlcm1pc3Npb25zIG9mCisgICB0aGlzIExpY2Vuc2Ug YXBwbGljYWJsZSB0byB0aGF0IGNvcHkuCisKKyAgMy4gT2JqZWN0IENvZGUgSW5jb3Jwb3Jh dGluZyBNYXRlcmlhbCBmcm9tIExpYnJhcnkgSGVhZGVyIEZpbGVzLgorCisgIFRoZSBvYmpl Y3QgY29kZSBmb3JtIG9mIGFuIEFwcGxpY2F0aW9uIG1heSBpbmNvcnBvcmF0ZSBtYXRlcmlh bCBmcm9tCithIGhlYWRlciBmaWxlIHRoYXQgaXMgcGFydCBvZiB0aGUgTGlicmFyeS4gIFlv dSBtYXkgY29udmV5IHN1Y2ggb2JqZWN0Citjb2RlIHVuZGVyIHRlcm1zIG9mIHlvdXIgY2hv aWNlLCBwcm92aWRlZCB0aGF0LCBpZiB0aGUgaW5jb3Jwb3JhdGVkCittYXRlcmlhbCBpcyBu b3QgbGltaXRlZCB0byBudW1lcmljYWwgcGFyYW1ldGVycywgZGF0YSBzdHJ1Y3R1cmUKK2xh eW91dHMgYW5kIGFjY2Vzc29ycywgb3Igc21hbGwgbWFjcm9zLCBpbmxpbmUgZnVuY3Rpb25z IGFuZCB0ZW1wbGF0ZXMKKyh0ZW4gb3IgZmV3ZXIgbGluZXMgaW4gbGVuZ3RoKSwgeW91IGRv IGJvdGggb2YgdGhlIGZvbGxvd2luZzoKKworICAgYSkgR2l2ZSBwcm9taW5lbnQgbm90aWNl IHdpdGggZWFjaCBjb3B5IG9mIHRoZSBvYmplY3QgY29kZSB0aGF0IHRoZQorICAgTGlicmFy eSBpcyB1c2VkIGluIGl0IGFuZCB0aGF0IHRoZSBMaWJyYXJ5IGFuZCBpdHMgdXNlIGFyZQor ICAgY292ZXJlZCBieSB0aGlzIExpY2Vuc2UuCisKKyAgIGIpIEFjY29tcGFueSB0aGUgb2Jq ZWN0IGNvZGUgd2l0aCBhIGNvcHkgb2YgdGhlIEdOVSBHUEwgYW5kIHRoaXMgbGljZW5zZQor ICAgZG9jdW1lbnQuCisKKyAgNC4gQ29tYmluZWQgV29ya3MuCisKKyAgWW91IG1heSBjb252 ZXkgYSBDb21iaW5lZCBXb3JrIHVuZGVyIHRlcm1zIG9mIHlvdXIgY2hvaWNlIHRoYXQsCit0 YWtlbiB0b2dldGhlciwgZWZmZWN0aXZlbHkgZG8gbm90IHJlc3RyaWN0IG1vZGlmaWNhdGlv biBvZiB0aGUKK3BvcnRpb25zIG9mIHRoZSBMaWJyYXJ5IGNvbnRhaW5lZCBpbiB0aGUgQ29t YmluZWQgV29yayBhbmQgcmV2ZXJzZQorZW5naW5lZXJpbmcgZm9yIGRlYnVnZ2luZyBzdWNo IG1vZGlmaWNhdGlvbnMsIGlmIHlvdSBhbHNvIGRvIGVhY2ggb2YKK3RoZSBmb2xsb3dpbmc6 CisKKyAgIGEpIEdpdmUgcHJvbWluZW50IG5vdGljZSB3aXRoIGVhY2ggY29weSBvZiB0aGUg Q29tYmluZWQgV29yayB0aGF0CisgICB0aGUgTGlicmFyeSBpcyB1c2VkIGluIGl0IGFuZCB0 aGF0IHRoZSBMaWJyYXJ5IGFuZCBpdHMgdXNlIGFyZQorICAgY292ZXJlZCBieSB0aGlzIExp Y2Vuc2UuCisKKyAgIGIpIEFjY29tcGFueSB0aGUgQ29tYmluZWQgV29yayB3aXRoIGEgY29w eSBvZiB0aGUgR05VIEdQTCBhbmQgdGhpcyBsaWNlbnNlCisgICBkb2N1bWVudC4KKworICAg YykgRm9yIGEgQ29tYmluZWQgV29yayB0aGF0IGRpc3BsYXlzIGNvcHlyaWdodCBub3RpY2Vz IGR1cmluZworICAgZXhlY3V0aW9uLCBpbmNsdWRlIHRoZSBjb3B5cmlnaHQgbm90aWNlIGZv ciB0aGUgTGlicmFyeSBhbW9uZworICAgdGhlc2Ugbm90aWNlcywgYXMgd2VsbCBhcyBhIHJl ZmVyZW5jZSBkaXJlY3RpbmcgdGhlIHVzZXIgdG8gdGhlCisgICBjb3BpZXMgb2YgdGhlIEdO VSBHUEwgYW5kIHRoaXMgbGljZW5zZSBkb2N1bWVudC4KKworICAgZCkgRG8gb25lIG9mIHRo ZSBmb2xsb3dpbmc6CisKKyAgICAgICAwKSBDb252ZXkgdGhlIE1pbmltYWwgQ29ycmVzcG9u ZGluZyBTb3VyY2UgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMKKyAgICAgICBMaWNlbnNlLCBh bmQgdGhlIENvcnJlc3BvbmRpbmcgQXBwbGljYXRpb24gQ29kZSBpbiBhIGZvcm0KKyAgICAg ICBzdWl0YWJsZSBmb3IsIGFuZCB1bmRlciB0ZXJtcyB0aGF0IHBlcm1pdCwgdGhlIHVzZXIg dG8KKyAgICAgICByZWNvbWJpbmUgb3IgcmVsaW5rIHRoZSBBcHBsaWNhdGlvbiB3aXRoIGEg bW9kaWZpZWQgdmVyc2lvbiBvZgorICAgICAgIHRoZSBMaW5rZWQgVmVyc2lvbiB0byBwcm9k dWNlIGEgbW9kaWZpZWQgQ29tYmluZWQgV29yaywgaW4gdGhlCisgICAgICAgbWFubmVyIHNw ZWNpZmllZCBieSBzZWN0aW9uIDYgb2YgdGhlIEdOVSBHUEwgZm9yIGNvbnZleWluZworICAg ICAgIENvcnJlc3BvbmRpbmcgU291cmNlLgorCisgICAgICAgMSkgVXNlIGEgc3VpdGFibGUg c2hhcmVkIGxpYnJhcnkgbWVjaGFuaXNtIGZvciBsaW5raW5nIHdpdGggdGhlCisgICAgICAg TGlicmFyeS4gIEEgc3VpdGFibGUgbWVjaGFuaXNtIGlzIG9uZSB0aGF0IChhKSB1c2VzIGF0 IHJ1biB0aW1lCisgICAgICAgYSBjb3B5IG9mIHRoZSBMaWJyYXJ5IGFscmVhZHkgcHJlc2Vu dCBvbiB0aGUgdXNlcidzIGNvbXB1dGVyCisgICAgICAgc3lzdGVtLCBhbmQgKGIpIHdpbGwg b3BlcmF0ZSBwcm9wZXJseSB3aXRoIGEgbW9kaWZpZWQgdmVyc2lvbgorICAgICAgIG9mIHRo ZSBMaWJyYXJ5IHRoYXQgaXMgaW50ZXJmYWNlLWNvbXBhdGlibGUgd2l0aCB0aGUgTGlua2Vk CisgICAgICAgVmVyc2lvbi4KKworICAgZSkgUHJvdmlkZSBJbnN0YWxsYXRpb24gSW5mb3Jt YXRpb24sIGJ1dCBvbmx5IGlmIHlvdSB3b3VsZCBvdGhlcndpc2UKKyAgIGJlIHJlcXVpcmVk IHRvIHByb3ZpZGUgc3VjaCBpbmZvcm1hdGlvbiB1bmRlciBzZWN0aW9uIDYgb2YgdGhlCisg ICBHTlUgR1BMLCBhbmQgb25seSB0byB0aGUgZXh0ZW50IHRoYXQgc3VjaCBpbmZvcm1hdGlv biBpcworICAgbmVjZXNzYXJ5IHRvIGluc3RhbGwgYW5kIGV4ZWN1dGUgYSBtb2RpZmllZCB2 ZXJzaW9uIG9mIHRoZQorICAgQ29tYmluZWQgV29yayBwcm9kdWNlZCBieSByZWNvbWJpbmlu ZyBvciByZWxpbmtpbmcgdGhlCisgICBBcHBsaWNhdGlvbiB3aXRoIGEgbW9kaWZpZWQgdmVy c2lvbiBvZiB0aGUgTGlua2VkIFZlcnNpb24uIChJZgorICAgeW91IHVzZSBvcHRpb24gNGQw LCB0aGUgSW5zdGFsbGF0aW9uIEluZm9ybWF0aW9uIG11c3QgYWNjb21wYW55CisgICB0aGUg TWluaW1hbCBDb3JyZXNwb25kaW5nIFNvdXJjZSBhbmQgQ29ycmVzcG9uZGluZyBBcHBsaWNh dGlvbgorICAgQ29kZS4gSWYgeW91IHVzZSBvcHRpb24gNGQxLCB5b3UgbXVzdCBwcm92aWRl IHRoZSBJbnN0YWxsYXRpb24KKyAgIEluZm9ybWF0aW9uIGluIHRoZSBtYW5uZXIgc3BlY2lm aWVkIGJ5IHNlY3Rpb24gNiBvZiB0aGUgR05VIEdQTAorICAgZm9yIGNvbnZleWluZyBDb3Jy ZXNwb25kaW5nIFNvdXJjZS4pCisKKyAgNS4gQ29tYmluZWQgTGlicmFyaWVzLgorCisgIFlv dSBtYXkgcGxhY2UgbGlicmFyeSBmYWNpbGl0aWVzIHRoYXQgYXJlIGEgd29yayBiYXNlZCBv biB0aGUKK0xpYnJhcnkgc2lkZSBieSBzaWRlIGluIGEgc2luZ2xlIGxpYnJhcnkgdG9nZXRo ZXIgd2l0aCBvdGhlciBsaWJyYXJ5CitmYWNpbGl0aWVzIHRoYXQgYXJlIG5vdCBBcHBsaWNh dGlvbnMgYW5kIGFyZSBub3QgY292ZXJlZCBieSB0aGlzCitMaWNlbnNlLCBhbmQgY29udmV5 IHN1Y2ggYSBjb21iaW5lZCBsaWJyYXJ5IHVuZGVyIHRlcm1zIG9mIHlvdXIKK2Nob2ljZSwg aWYgeW91IGRvIGJvdGggb2YgdGhlIGZvbGxvd2luZzoKKworICAgYSkgQWNjb21wYW55IHRo ZSBjb21iaW5lZCBsaWJyYXJ5IHdpdGggYSBjb3B5IG9mIHRoZSBzYW1lIHdvcmsgYmFzZWQK KyAgIG9uIHRoZSBMaWJyYXJ5LCB1bmNvbWJpbmVkIHdpdGggYW55IG90aGVyIGxpYnJhcnkg ZmFjaWxpdGllcywKKyAgIGNvbnZleWVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vu c2UuCisKKyAgIGIpIEdpdmUgcHJvbWluZW50IG5vdGljZSB3aXRoIHRoZSBjb21iaW5lZCBs aWJyYXJ5IHRoYXQgcGFydCBvZiBpdAorICAgaXMgYSB3b3JrIGJhc2VkIG9uIHRoZSBMaWJy YXJ5LCBhbmQgZXhwbGFpbmluZyB3aGVyZSB0byBmaW5kIHRoZQorICAgYWNjb21wYW55aW5n IHVuY29tYmluZWQgZm9ybSBvZiB0aGUgc2FtZSB3b3JrLgorCisgIDYuIFJldmlzZWQgVmVy c2lvbnMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KKworICBU aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29y IG5ldyB2ZXJzaW9ucworb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmcm9tIHRpbWUgdG8gdGltZS4gU3VjaCBuZXcKK3ZlcnNpb25zIHdpbGwgYmUgc2ltaWxh ciBpbiBzcGlyaXQgdG8gdGhlIHByZXNlbnQgdmVyc2lvbiwgYnV0IG1heQorZGlmZmVyIGlu IGRldGFpbCB0byBhZGRyZXNzIG5ldyBwcm9ibGVtcyBvciBjb25jZXJucy4KKworICBFYWNo IHZlcnNpb24gaXMgZ2l2ZW4gYSBkaXN0aW5ndWlzaGluZyB2ZXJzaW9uIG51bWJlci4gSWYg dGhlCitMaWJyYXJ5IGFzIHlvdSByZWNlaXZlZCBpdCBzcGVjaWZpZXMgdGhhdCBhIGNlcnRh aW4gbnVtYmVyZWQgdmVyc2lvbgorb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSAib3IgYW55IGxhdGVyIHZlcnNpb24iCithcHBsaWVzIHRvIGl0LCB5b3UgaGF2 ZSB0aGUgb3B0aW9uIG9mIGZvbGxvd2luZyB0aGUgdGVybXMgYW5kCitjb25kaXRpb25zIGVp dGhlciBvZiB0aGF0IHB1Ymxpc2hlZCB2ZXJzaW9uIG9yIG9mIGFueSBsYXRlciB2ZXJzaW9u CitwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4gSWYgdGhlIExp YnJhcnkgYXMgeW91CityZWNlaXZlZCBpdCBkb2VzIG5vdCBzcGVjaWZ5IGEgdmVyc2lvbiBu dW1iZXIgb2YgdGhlIEdOVSBMZXNzZXIKK0dlbmVyYWwgUHVibGljIExpY2Vuc2UsIHlvdSBt YXkgY2hvb3NlIGFueSB2ZXJzaW9uIG9mIHRoZSBHTlUgTGVzc2VyCitHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGV2ZXIgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24uCisKKyAgSWYgdGhlIExpYnJhcnkgYXMgeW91IHJlY2VpdmVkIGl0IHNwZWNpZmllcyB0 aGF0IGEgcHJveHkgY2FuIGRlY2lkZQord2hldGhlciBmdXR1cmUgdmVyc2lvbnMgb2YgdGhl IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBzaGFsbAorYXBwbHksIHRoYXQg cHJveHkncyBwdWJsaWMgc3RhdGVtZW50IG9mIGFjY2VwdGFuY2Ugb2YgYW55IHZlcnNpb24g aXMKK3Blcm1hbmVudCBhdXRob3JpemF0aW9uIGZvciB5b3UgdG8gY2hvb3NlIHRoYXQgdmVy c2lvbiBmb3IgdGhlCitMaWJyYXJ5LgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbGlidGFwL0lO U1RBTEwgYi9zcmMvdGVzdC9saWJ0YXAvSU5TVEFMTApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uNWIyYzc2ZGYzZDcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv dGVzdC9saWJ0YXAvSU5TVEFMTApAQCAtMCwwICsxLDQxIEBACitUbyBpbnN0YWxsIGxpYnRh cCBvbiBhIFVuaXgtbGlrZSBzeXN0ZW06CisKKyAgICAkIG1ha2UKKyAgICAkIG1ha2UgY2hl Y2sKKyAgICAkIG1ha2UgaW5zdGFsbAorCitUbyBjb21waWxlIHdpdGggZ2NjIC1hbnNpLCBy dW46CisKKyAgICAkIEFOU0k9MSBtYWtlCisKK1RvIGluc3RhbGwgdG8gYSBkaWZmZXJlbnQg ZGlyZWN0b3J5IHRoYW4gL3Vzci9sb2NhbCwgc3VwcGx5IHRoZQorUFJFRklYIHZhcmlhYmxl IHRvIG1ha2U6CisKKyAgICAkIFBSRUZJWD0vdXNyIG1ha2UgaW5zdGFsbAorCitPbiBXaW5k b3dzLCB0aGUgbGlicmFyeSBjYW4gYmUgY3JlYXRlZCBieSBmaXJzdCBzZXR0aW5nIHVwIHRo ZQorY29ycmVjdCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCB2YXJpYWJsZXMuIFVzdWFsbHkg dGhpcyBpcyBkb25lIGJ5CitydW5uaW5nIHZjdmFyczMyLmJhdCBpbmNsdWRlZCBpbiB0aGUg VmlzdWFsIFN0dWRpbyBkaXN0cmlidXRpb24uCitZb3Ugc2hvdWxkIGFsc28gaW5zdGFsbCBn bnUgbWFrZSB3aGljaCBjYW4gYmUgZm91bmQgYXQKK2h0dHA6Ly9nbnV3aW4zMi5zb3VyY2Vm b3JnZS5uZXQvcGFja2FnZXMvbWFrZS5odG0uIE9uY2UgdGhpcyBpcworZG9uZSwgeW91IHNo b3VsZCBiZSBhYmxlIHRvIHJ1biB0aGUgZm9sbG93aW5nOgorCisgICAgPiBtYWtlIC1mIE1h a2VmaWxlLndpbgorCitJZiB5b3Ugd2FudCB0byB1c2UgaXQgZGlyZWN0bHkgaW4gYW5vdGhl ciBwcm9qZWN0LCB5b3UgY2FuIGNvcHkgdGFwLmMKK2FuZCB0YXAuaCB0aGVyZSBhbmQgaXQg c2hvdWxkbid0IGhhdmUgYSBwcm9ibGVtIGNvbXBpbGluZy4KKworICAgICQgbHMKKyAgICB0 YXAuYyB0YXAuaCB0ZXN0LmMKKyAgICAkIGNhdCB0ZXN0LmMKKyAgICAjaW5jbHVkZSAidGFw LmgiCisgICAgaW50IG1haW4gKCkgeworICAgICAgICBwbGFuKDEpOworICAgICAgICBvayg1 MCArIDUsICJmb28gJXMiLCAiYmFyIik7CisgICAgICAgIGRvbmVfdGVzdGluZygpOworICAg IH0KKyAgICAkIGdjYyB0ZXN0LmMgdGFwLmMKKyAgICAkIGEub3V0CisgICAgMS4uMQorICAg IG9rIDEgLSBmb28gYmFyCisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2xpYnRhcC9NYWtlZmls ZSBiL3NyYy90ZXN0L2xpYnRhcC9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uZjAyMGMyODM5YTgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVz dC9saWJ0YXAvTWFrZWZpbGUKQEAgLTAsMCArMSw3MyBAQAorQ0MgPz0gZ2NjCitDRkxBR1Mg Kz0gLVdhbGwgLUkuIC1mUElDCitQUkVGSVggPz0gJChERVNURElSKS91c3IvbG9jYWwKK1RF U1RTID0gJChwYXRzdWJzdCAlLmMsICUsICQod2lsZGNhcmQgdC8qLmMpKQorCitpZmRlZiBB TlNJCisJIyAtRF9CU0RfU09VUkNFIGZvciBNQVBfQU5PTllNT1VTCisJQ0ZMQUdTICs9IC1h bnNpIC1EX0JTRF9TT1VSQ0UKKwlMRExJQlMgKz0gLWxic2QtY29tcGF0CitlbmRpZgorCisl OgorCSQoQ0MpICQoTERGTEFHUykgJChUQVJHRVRfQVJDSCkgJChmaWx0ZXIgJS5vICUuYSAl LnNvLCAkXikgJChMRExJQlMpIC1vICRACisKKyUubzoKKwkkKENDKSAkKENGTEFHUykgJChD UFBGTEFHUykgJChUQVJHRVRfQVJDSCkgLWMgJChmaWx0ZXIgJS5jLCAkXikgJChMRExJQlMp IC1vICRACisKKyUuYToKKwkkKEFSKSByY3MgJEAgJChmaWx0ZXIgJS5vLCAkXikKKworJS5z bzoKKwkkKENDKSAtc2hhcmVkICQoTERGTEFHUykgJChUQVJHRVRfQVJDSCkgJChmaWx0ZXIg JS5vLCAkXikgJChMRExJQlMpIC1vICRACisKK2FsbDogbGlidGFwLmEgbGlidGFwLnNvIHRh cC5wYyB0ZXN0cworCit0YXAucGM6CisJQGVjaG8gZ2VuZXJhdGluZyB0YXAucGMKKwlAZWNo byAncHJlZml4PSckKFBSRUZJWCkgPiB0YXAucGMKKwlAZWNobyAnZXhlY19wcmVmaXg9JCR7 cHJlZml4fScgPj4gdGFwLnBjCisJQGVjaG8gJ2xpYmRpcj0kJHtwcmVmaXh9L2xpYicgPj4g dGFwLnBjCisJQGVjaG8gJ2luY2x1ZGVkaXI9JCR7cHJlZml4fS9pbmNsdWRlJyA+PiB0YXAu cGMKKwlAZWNobyAnJyA+PiB0YXAucGMKKwlAZWNobyAnTmFtZTogbGlidGFwJyA+PiB0YXAu cGMKKwlAZWNobyAnRGVzY3JpcHRpb246IFdyaXRlIHRlc3RzIGluIEMnID4+IHRhcC5wYwor CUBlY2hvICdWZXJzaW9uOiAwLjEuMCcgPj4gdGFwLnBjCisJQGVjaG8gJ1VSTDogaHR0cHM6 Ly9naXRodWIuY29tL3pvcmduYXgvbGlidGFwJyA+PiB0YXAucGMKKwlAZWNobyAnTGliczog LUwkJHtsaWJkaXJ9IC1sdGFwJyA+PiB0YXAucGMKKwlAZWNobyAnQ2ZsYWdzOiAtSSQke2lu Y2x1ZGVkaXJ9JyA+PiB0YXAucGMKKworbGlidGFwLmE6IHRhcC5vCisKK2xpYnRhcC5zbzog dGFwLm8KKwordGFwLm86IHRhcC5jIHRhcC5oCisKK3Rlc3RzOiAkKFRFU1RTKQorCiskKFRF U1RTKTogJTogJS5vIGxpYnRhcC5hCisKKyQocGF0c3Vic3QgJSwgJS5vLCAkKFRFU1RTKSk6 ICUubzogJS5jIHRhcC5oCisJJChDQykgJChDRkxBR1MpIC1PMCAkKENQUEZMQUdTKSAkKFRB UkdFVF9BUkNIKSAtYyAkKGZpbHRlciAlLmMsICReKSAkKExETElCUykgLW8gJEAKKworY2xl YW46CisJcm0gLXJmICoubyB0LyoubyB0YXAucGMgbGlidGFwLmEgbGlidGFwLnNvICQoVEVT VFMpCisKK2luc3RhbGw6IGxpYnRhcC5hIHRhcC5oIGxpYnRhcC5zbyB0YXAucGMKKwlta2Rp ciAtcCAkKFBSRUZJWCkvbGliICQoUFJFRklYKS9pbmNsdWRlICQoUFJFRklYKS9saWIvcGtn Y29uZmlnCisJaW5zdGFsbCAtYyBsaWJ0YXAuYSAkKFBSRUZJWCkvbGliCisJaW5zdGFsbCAt YyBsaWJ0YXAuc28gJChQUkVGSVgpL2xpYgorCWluc3RhbGwgLWMgdGFwLnBjICQoUFJFRklY KS9saWIvcGtnY29uZmlnCisJaW5zdGFsbCAtYyB0YXAuaCAkKFBSRUZJWCkvaW5jbHVkZQor Cit1bmluc3RhbGw6CisJcm0gJChQUkVGSVgpL2xpYi9saWJ0YXAuYSAkKFBSRUZJWCkvbGli L2xpYnRhcC5zbyAkKFBSRUZJWCkvaW5jbHVkZS90YXAuaAorCitkaXN0OgorCXJtIGxpYnRh cC56aXAKKwl6aXAgLXIgbGlidGFwICoKKworY2hlY2sgdGVzdDogYWxsCisJLi90L3Rlc3QK KworLlBIT05ZOiBhbGwgY2xlYW4gaW5zdGFsbCB1bmluc3RhbGwgZGlzdCBjaGVjayB0ZXN0 IHRlc3RzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9saWJ0YXAvTWFrZWZpbGUud2luIGIvc3Jj L3Rlc3QvbGlidGFwL01ha2VmaWxlLndpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uNjk0ZDY3OWExYjEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9s aWJ0YXAvTWFrZWZpbGUud2luCkBAIC0wLDAgKzEsMzcgQEAKK0NGTEFHUyA9IC9aaSAvV2Fs bCAvd2Q0MjU1IC93ZDQ5OTYgL3dkNDEyNyAvd2Q0ODIwIC93ZDQxMDAgL3dkNDYxOSBcCisJ CSAvd2Q0NTE0IC93ZDQ2NjggL0kuCitDQyA9IGNsIC9ub2xvZ28KK1RFU1RTID0gJChwYXRz dWJzdCAlLmMsICUuZXhlLCAkKHdpbGRjYXJkIHQvKi5jKSkKKworJS5leGU6CisJJChDQykg JChMREZMQUdTKSAkKGZpbHRlciAlLm9iaiAlLmxpYiAlLmRsbCwgJF4pICQoTERMSUJTKSAv RmUgJEAKKworJS5vOgorCSQoQ0MpICQoQ0ZMQUdTKSAkKENQUEZMQUdTKSAvYyAkKGZpbHRl ciAlLmMsICReKSAkKExETElCUykgL0ZvICRACisKKyUubGliOgorCWxpYiAvbm9sb2dvIC9v dXQ6JEAgJChmaWx0ZXIgJS5vYmosICReKQorCislLmRsbDoKKwlsaWIgL25vbG9nbyAvb3V0 OiRAICQoZmlsdGVyICUub2JqLCAkXikKKworYWxsOiB0YXAubGliIHRlc3RzCisKK3RhcC5s aWI6IHRhcC5vYmoKKwordGFwLm9iajogdGFwLmMgdGFwLmgKKwordGVzdHM6ICQoVEVTVFMp CisKKyQoVEVTVFMpOiAlLmV4ZTogJS5vYmogdGFwLmxpYgorCiskKHBhdHN1YnN0ICUuZXhl LCAlLm9iaiwgJChURVNUUykpOiAlLm9iajogJS5jIHRhcC5oCisKK2NsZWFuOgorCXJtIC1y ZiAqLm9iaiB0Lyoub2JqIHRhcC5saWIgJChURVNUUykKKworY2hlY2sgdGVzdDogYWxsCisJ cHJvdmUKKworLlBIT05ZOiBhbGwgY2xlYW4gY2hlY2sgdGVzdCB0ZXN0cworCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9saWJ0YXAvUkVBRE1FLm1kIGIvc3JjL3Rlc3QvbGlidGFwL1JFQURN RS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTMzMmQ1MjZj MDgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9saWJ0YXAvUkVBRE1FLm1kCkBAIC0w LDAgKzEsMjY4IEBACitOQU1FCis9PT09CisKK2xpYnRhcCAtIFdyaXRlIHRlc3RzIGluIEMK KworU1lOT1BTSVMKKz09PT09PT09CisKKyAgICAjaW5jbHVkZSA8dGFwLmg+CisKKyAgICBp bnQgbWFpbiAoKSB7CisgICAgICAgIHBsYW4oNSk7CisgICAgICAgIGludCBicm9uemUgPSAx LCBzaWx2ZXIgPSAyLCBnb2xkID0gMzsKKyAgICAgICAgb2soYnJvbnplIDwgc2lsdmVyLCAi YnJvbnplIGlzIGxlc3MgdGhhbiBzaWx2ZXIiKTsKKyAgICAgICAgb2soYnJvbnplID4gc2ls dmVyLCAibm90IHF1aXRlIik7CisgICAgICAgIGlzKCJnb2xkIiwgImdvbGQiLCAiZ29sZCBp cyBnb2xkIik7CisgICAgICAgIGNtcF9vayhzaWx2ZXIsICI8IiwgZ29sZCwgIiVkIDw9ICVk Iiwgc2lsdmVyLCBnb2xkKTsKKyAgICAgICAgbGlrZSgicGxhdGludW0iLCAiLippbnVtIiwg InBsYXRpbnVtIG1hdGNoZXMgLippbnVtIik7CisgICAgICAgIGRvbmVfdGVzdGluZygpOwor ICAgIH0KKworcmVzdWx0cyBpbjoKKworICAgIDEuLjUKKyAgICBvayAxIC0gYnJvbnplIGlz IGxlc3MgdGhhbiBzaWx2ZXIKKyAgICBub3Qgb2sgMiAtIG5vdCBxdWl0ZQorICAgICMgICBG YWlsZWQgdGVzdCAnbm90IHF1aXRlJworICAgICMgICBhdCB0L3N5bm9wc2lzLmMgbGluZSA3 LgorICAgIG9rIDMgLSBnb2xkIGlzIGdvbGQKKyAgICBvayA0IC0gMiA8PSAzCisgICAgb2sg NSAtIHBsYXRpbnVtIG1hdGNoZXMgLippbnVtCisgICAgIyBMb29rcyBsaWtlIHlvdSBmYWls ZWQgMSB0ZXN0IG9mIDUgcnVuLgorCitERVNDUklQVElPTgorPT09PT09PT09PT0KKwordGFw IGlzIGFuIGVhc3kgdG8gcmVhZCBhbmQgZWFzeSB0byB3cml0ZSB3YXkgb2YgY3JlYXRpbmcg dGVzdHMgZm9yCit5b3VyIHNvZnR3YXJlLiBUaGlzIGxpYnJhcnkgY3JlYXRlcyBmdW5jdGlv bnMgdGhhdCBjYW4gYmUgdXNlZCB0bworZ2VuZXJhdGUgaXQgZm9yIHlvdXIgQyBwcm9ncmFt cy4gSXQgaXMgaW1wbGVtZW50ZWQgdXNpbmcgbWFjcm9zCit0aGF0IGluY2x1ZGUgZmlsZSBh bmQgbGluZSBpbmZvIGF1dG9tYXRpY2FsbHksIGFuZCBtYWtlcyBpdCBzbyB0aGF0Cit0aGUg Zm9ybWF0IG1lc3NhZ2Ugb2YgZWFjaCB0ZXN0IGlzIG9wdGlvbmFsLiBJdCBpcyBtb3N0bHkg YmFzZWQgb24KK3RoZSBUZXN0OjpNb3JlIFBlcmwgbW9kdWxlLgorCitJTlNUQUxMCis9PT09 PT09CisKK09uICoqVW5peCoqIHN5c3RlbXM6CisKKyAgICAkIG1ha2UKKyAgICAkIG1ha2Ug aW5zdGFsbAorCitGb3IgbW9yZSBkZXRhaWxlZCBpbnN0YWxsYXRpb24gaW5zdHJ1Y3Rpb25z IChlZywgZm9yICoqV2luZG93cyoqKSwgc2VlIGBJTlNUQUxMYC4KKworRlVOQ1RJT05TCis9 PT09PT09PT0KKworLSAgIHBsYW4odGVzdHMpCistICAgcGxhbihOT19QTEFOKQorLSAgIHBs YW4oU0tJUF9BTEwpOworLSAgIHBsYW4oU0tJUF9BTEwsIGZtdCwgLi4uKQorCisgICAgVXNl IHRoaXMgdG8gc3RhcnQgYSBzZXJpZXMgb2YgdGVzdHMuIFdoZW4geW91IGtub3cgaG93IG1h bnkgdGVzdHMgdGhlcmUKKyAgICB3aWxsIGJlLCB5b3UgY2FuIHB1dCBhIG51bWJlciBhcyBh IG51bWJlciBvZiB0ZXN0cyB5b3UgZXhwZWN0IHRvIHJ1bi4gSWYKKyAgICB5b3UgZG8gbm90 IGtub3cgaG93IG1hbnkgdGVzdHMgdGhlcmUgd2lsbCBiZSwgeW91IGNhbiB1c2UgcGxhbihO T19QTEFOKQorICAgIG9yIG5vdCBjYWxsIHRoaXMgZnVuY3Rpb24uIFdoZW4geW91IHBhc3Mg aXQgYSBudW1iZXIgb2YgdGVzdHMgdG8gcnVuLCBhCisgICAgbWVzc2FnZSBzaW1pbGFyIHRv IHRoZSBmb2xsb3dpbmcgd2lsbCBhcHBlYXIgaW4gdGhlIG91dHB1dDoKKworICAgICAgICAx Li41CisKKyAgICBJZiB5b3UgcGFzcyBpdCBTS0lQX0FMTCwgdGhlIHdob2xlIHRlc3Qgd2ls bCBiZSBza2lwcGVkLgorCistICAgb2sodGVzdCkKKy0gICBvayh0ZXN0LCBmbXQsIC4uLikK KworICAgIFNwZWNpZnkgYSB0ZXN0LiB0aGUgdGVzdCBjYW4gYmUgYW55IHN0YXRlbWVudCBy ZXR1cm5pbmcgYSB0cnVlIG9yIGZhbHNlCisgICAgdmFsdWUuIFlvdSBtYXkgb3B0aW9uYWxs eSBwYXNzIGEgZm9ybWF0IHN0cmluZyBkZXNjcmliaW5nIHRoZSB0ZXN0LgorCisgICAgICAg IG9rKHIgPSByZWFkZXJfbmV3KCJPZiBNaWNlIGFuZCBNZW4iKSwgImNyZWF0ZSBhIG5ldyBy ZWFkZXIiKTsKKyAgICAgICAgb2socmVhZGVyX2dvX3RvX3BhZ2UociwgNTUpLCAiY2FuIHR1 cm4gdGhlIHBhZ2UiKTsKKyAgICAgICAgb2soci0+cGFnZSA9PSA1NSwgInBhZ2UgdHVybmVk IHRvIHRoZSByaWdodCBvbmUiKTsKKworICAgIFNob3VsZCBwcmludCBvdXQ6CisKKyAgICAg ICAgb2sgMSAtIGNyZWF0ZSBhIG5ldyByZWFkZXIKKyAgICAgICAgb2sgMiAtIGNhbiB0dXJu IHRoZSBwYWdlCisgICAgICAgIG9rIDMgLSBwYWdlIHR1cm5lZCB0byB0aGUgcmlnaHQgb25l CisKKyAgICBPbiBmYWlsdXJlLCBhIGRpYWdub3N0aWMgbWVzc2FnZSB3aWxsIGJlIHByaW50 ZWQgb3V0LgorCisgICAgICAgIG5vdCBvayAzIC0gcGFnZSB0dXJuZWQgdG8gdGhlIHJpZ2h0 IG9uZQorICAgICAgICAjICAgRmFpbGVkIHRlc3QgJ3BhZ2UgdHVybmVkIHRvIHRoZSByaWdo dCBvbmUnCisgICAgICAgICMgICBhdCByZWFkZXIuYyBsaW5lIDEzLgorCistICAgaXMoZ290 LCBleHBlY3RlZCkKKy0gICBpcyhnb3QsIGV4cGVjdGVkLCBmbXQsIC4uLikKKy0gICBpc250 KGdvdCwgdW5leHBlY3RlZCkKKy0gICBpc250KGdvdCwgdW5leHBlY3RlZCwgZm10LCAuLi4p CisKKyAgICBUZXN0cyB0aGF0IHRoZSBzdHJpbmcgeW91IGdvdCBpcyB3aGF0IHlvdSBleHBl Y3RlZC4gd2l0aCBpc250LCBpdCBpcyB0aGUKKyAgICByZXZlcnNlLgorCisgICAgICAgIGlz KCJ0aGlzIiwgInRoYXQiLCAidGhpcyBpcyB0aGF0Iik7CisKKyAgICBwcmludHM6CisKKyAg ICAgICAgbm90IG9rIDEgLSB0aGlzIGlzIHRoYXQKKyAgICAgICAgIyAgIEZhaWxlZCB0ZXN0 ICd0aGlzIGlzIHRoYXQnCisgICAgICAgICMgICBhdCBpcy5jIGxpbmUgNi4KKyAgICAgICAg IyAgICAgICAgICBnb3Q6ICd0aGlzJworICAgICAgICAjICAgICBleHBlY3RlZDogJ3RoYXQn CisKKy0gICBjbXBfb2soYSwgb3AsIGIpCistICAgY21wX29rKGEsIG9wLCBiLCBmbXQsIC4u LikKKworICAgIENvbXBhcmVzIHR3byBpbnRzIHdpdGggYW55IGJpbmFyeSBvcGVyYXRvciB0 aGF0IGRvZXNuJ3QgcmVxdWlyZSBhbiBsdmFsdWUuCisgICAgVGhpcyBpcyBuaWNlIHRvIHVz ZSBzaW5jZSBpdCBwcm92aWRlcyBhIGJldHRlciBlcnJvciBtZXNzYWdlIHRoYW4gYW4KKyAg ICBlcXVpdmFsZW50IG9rLgorCisgICAgICAgIGNtcF9vayg0MjAsICI+IiwgNjY2KTsKKwor ICAgIHByaW50czoKKworICAgICAgICBub3Qgb2sgMQorICAgICAgICAjICAgRmFpbGVkIHRl c3QgYXQgY21wb2suYyBsaW5lIDUuCisgICAgICAgICMgICAgIDQyMAorICAgICAgICAjICAg ICAgICAgPgorICAgICAgICAjICAgICA2NjYKKworLSAgIGNtcF9tZW0oZ290LCBleHBlY3Rl ZCwgbikKKy0gICBjbXBfbWVtKGdvdCwgZXhwZWN0ZWQsIG4sIGZtdCwgLi4uKQorCisgICAg VGVzdHMgdGhhdCB0aGUgZmlyc3QgbiBieXRlcyBvZiB0aGUgbWVtb3J5IHlvdSBnb3QgaXMg d2hhdCB5b3UgZXhwZWN0ZWQuCisgICAgTlVMTCBwb2ludGVycyBmb3IgZ290IGFuZCBleHBl Y3RlZCBhcmUgaGFuZGxlZCAoaWYgZWl0aGVyIGlzIE5VTEwsCisgICAgdGhlIHRlc3QgZmFp bHMpLCBidXQgeW91IG5lZWQgdG8gZW5zdXJlIG4gaXMgbm90IHRvbyBsYXJnZS4KKworICAg ICAgICBjaGFyICphID0gImZvbyI7CisgICAgICAgIGNoYXIgKmIgPSAiYmFyIjsKKyAgICAg ICAgY21wX21lbShhLCBiLCAzKQorCisgICAgcHJpbnRzCisKKyAgICAgICAgbm90IG9rIDEK KyAgICAgICAgIyAgIEZhaWxlZCB0ZXN0IGF0IHQvY21wX21lbS5jIGxpbmUgOS4KKyAgICAg ICAgIyAgICAgRGlmZmVyZW5jZSBzdGFydHMgYXQgb2Zmc2V0IDAKKyAgICAgICAgIyAgICAg ICAgICBnb3Q6IDB4NjYKKyAgICAgICAgIyAgICAgZXhwZWN0ZWQ6IDB4NjIKKworLSAgIGxp a2UoZ290LCBleHBlY3RlZCkKKy0gICBsaWtlKGdvdCwgZXhwZWN0ZWQsIGZtdCwgLi4uKQor LSAgIHVubGlrZShnb3QsIHVuZXhwZWN0ZWQpCistICAgdW5saWtlKGdvdCwgdW5leHBlY3Rl ZCwgZm10LCAuLi4pCisKKyAgICBUZXN0cyB0aGF0IHRoZSBzdHJpbmcgeW91IGdvdCBtYXRj aGVzIHRoZSBleHBlY3RlZCBleHRlbmRlZCBQT1NJWCByZWdleC4KKyAgICB1bmxpa2UgaXMg dGhlIHJldmVyc2UuIFRoZXNlIG1hY3JvcyBhcmUgdGhlIGVxdWl2YWxlbnQgb2YgYSBza2lw IG9uCisgICAgV2luZG93cy4KKworICAgICAgICBsaWtlKCJzdHJhbmdlciIsICJecy4ociku KlxcMSQiLCAibWF0Y2hlcyB0aGUgcmVnZXgiKTsKKworICAgIHByaW50czoKKworICAgICAg ICBvayAxIC0gbWF0Y2hlcyB0aGUgcmVnZXgKKworLSAgIHBhc3MoKQorLSAgIHBhc3MoZm10 LCAuLi4pCistICAgZmFpbCgpCistICAgZmFpbChmbXQsIC4uLikKKworICAgIFNwZWNpeSB0 aGF0IGEgdGVzdCBzdWNjZWVkZWQgb3IgZmFpbGVkLiBVc2UgdGhlc2Ugd2hlbiB0aGUgc3Rh dGVtZW50IGlzCisgICAgbG9uZ2VyIHRoYW4geW91IGNhbiBmaXQgaW50byB0aGUgYXJndW1l bnQgZ2l2ZW4gdG8gYW4gb2soKSB0ZXN0LgorCistICAgZGllc19vayhjb2RlKQorLSAgIGRp ZXNfb2soY29kZSwgZm10LCAuLi4pCistICAgbGl2ZXNfb2soY29kZSkKKy0gICBsaXZlc19v ayhjb2RlLCBmbXQsIC4uLikKKworICAgIFRlc3RzIHdoZXRoZXIgdGhlIGdpdmVuIGNvZGUg Y2F1c2VzIHlvdXIgcHJvZ3JhbSB0byBleGl0LiBUaGUgY29kZSBnZXRzCisgICAgcGFzc2Vk IHRvIGEgbWFjcm8gdGhhdCB3aWxsIHRlc3QgaXQgaW4gYSBmb3JrZWQgcHJvY2Vzcy4gSWYg dGhlIGNvZGUKKyAgICBzdWNjZWVkcyBpdCB3aWxsIGJlIGV4ZWN1dGVkIGluIHRoZSBwYXJl bnQgcHJvY2Vzcy4gWW91IGNhbiB0ZXN0IHRoaW5ncworICAgIGxpa2UgcGFzc2luZyBhIGZ1 bmN0aW9uIGEgbnVsbCBwb2ludGVyIGFuZCBtYWtlIHN1cmUgaXQgZG9lc250CisgICAgZGVy ZWZlcmVuY2UgaXQgYW5kIGNyYXNoLgorCisgICAgICAgIGRpZXNfb2soe2Fib3J0KCk7fSwg ImFib3J0IGRvZXMgY2xvc2UgeW91ciBwcm9ncmFtIik7CisgICAgICAgIGRpZXNfb2soe2lu dCB4ID0gMC8wO30sICJkaXZpZGUgYnkgemVybyBjcmFzaCIpOworICAgICAgICBsaXZlc19v ayh7cG93KDMuMCwgNS4wKTt9LCAibm90aGluZyB3cm9uZyB3aXRoIHRha2luZyAzKio1Iik7 CisKKyAgICBPbiBXaW5kb3dzLCB0aGVzZSBtYWNyb3MgYXJlIHRoZSBlcXVpdmFsZW50IG9m IGEgc2tpcC4KKworLSAgIGRvbmVfdGVzdGluZygpCisKKyAgICBTdW1tYXJpemVzIHRoZSB0 ZXN0cyB0aGF0IG9jY3VycmVkIGFuZCBleGl0cyB0aGUgbWFpbiBmdW5jdGlvbi4gSWYKKyAg ICB0aGVyZSB3YXMgbm8gcGxhbiwgaXQgd2lsbCBwcmludCBvdXQgdGhlIG51bWJlciBvZiB0 ZXN0cyBhcy4KKworICAgICAgICAxLi41CisKKyAgICBJdCB3aWxsIGFsc28gcHJpbnQgYSBk aWFnbm9zdGljIG1lc3NhZ2UgYWJvdXQgaG93IG1hbnkKKyAgICBmYWlsdXJlcyB0aGVyZSB3 ZXJlLgorCisgICAgICAgICMgTG9va3MgbGlrZSB5b3UgZmFpbGVkIDIgdGVzdHMgb2YgMyBy dW4uCisKKyAgICBJZiBhbGwgcGxhbm5lZCB0ZXN0cyB3ZXJlIHN1Y2Nlc3NmdWwsIGl0IHdp bGwgcmV0dXJuIDAuIElmIGFueQorICAgIHRlc3QgZmFpbHMsIGl0IHdpbGwgcmV0dXJuIDEu IElmIHRoZXkgYWxsIHBhc3NlZCwgYnV0IHRoZXJlCisgICAgd2VyZSBtaXNzaW5nIHRlc3Rz LCBpdCB3aWxsIHJldHVybiAyLgorCistICAgZGlhZyhmbXQsIC4uLikKKworICAgIHByaW50 IG91dCBhIG1lc3NhZ2UgdG8gdGhlIHRhcCBvdXRwdXQgb24gc3Rkb3V0LiBFYWNoIGxpbmUg aXMKKyAgICBwcmVjZWVkZWQgYnkgYSAiIyAiIHNvIHRoYXQgeW91IGtub3cgaXRzIGEgZGlh Z25vc3RpYyBtZXNzYWdlLgorCisgICAgICAgIGRpYWcoIlRoaXMgaXNcbmEgZGlhZ1xudG8g ZGVzY3JpYmVcbnNvbWV0aGluZy4iKTsKKworICAgIHByaW50czoKKworICAgICAgICAjIFRo aXMgaXMKKyAgICAgICAgIyBhIGRpYWcKKyAgICAgICAgIyB0byBkZXNjcmliZQorICAgICAg ICAjIHNvbWV0aGluZworCisgICAgb2soKSBhbmQgdGhpcyBmdW5jdGlvbiByZXR1cm4gYW4g aW50IHNvIHlvdSBjYW4gdXNlIGl0IGxpa2U6CisKKyAgICAgICAgb2soMCkgfHwgZGlhZygi ZG9oISIpOworCistICAgc2tpcCh0ZXN0LCBuKQorLSAgIHNraXAodGVzdCwgbiwgZm10LCAu Li4pCistICAgZW5kX3NraXAKKworICAgIFNraXAgYSBzZXJpZXMgb2YgbiB0ZXN0cyBpZiB0 ZXN0IGlzIHRydWUuIFlvdSBtYXkgZ2l2ZSBhIHJlYXNvbiB3aHkgeW91IGFyZQorICAgIHNr aXBwaW5nIHRoZW0gb3Igbm90LiBUaGUgKHBvc3NpYmx5KSBza2lwcGVkIHRlc3RzIG11c3Qg b2NjdXIgYmV0d2VlbiB0aGUKKyAgICBza2lwIGFuZCBlbmRfc2tpcCBtYWNyb3MuCisKKyAg ICAgICAgc2tpcChUUlVFLCAyKTsKKyAgICAgICAgb2soMSk7CisgICAgICAgIG9rKDApOwor ICAgICAgICBlbmRfc2tpcDsKKworICAgIHByaW50czoKKworICAgICAgICBvayAxICMgc2tp cAorICAgICAgICBvayAyICMgc2tpcAorCistICAgdG9kbygpCistICAgdG9kbyhmbXQsIC4u LikKKy0gICBlbmRfdG9kbworCisgICAgU3BlY2lmaWVzIGEgc2VyaWVzIG9mIHRlc3RzIHRo YXQgeW91IGV4cGVjdCB0byBmYWlsIGJlY2F1c2UgdGhleSBhcmUgbm90CisgICAgeWV0IGlt cGxlbWVudGVkLgorCisgICAgICAgIHRvZG8oKQorICAgICAgICBvaygwKTsKKyAgICAgICAg ZW5kX3RvZG87CisKKyAgICBwcmludHM6CisKKyAgICAgICAgbm90IG9rIDEgIyBUT0RPCisg ICAgICAgICMgICBGYWlsZWQgKFRPRE8pIHRlc3QgYXQgdG9kby5jIGxpbmUgNworCistICAg QkFJTF9PVVQoKQorLSAgIEJBSUxfT1VUKGZtdCwgLi4uKQorCisgICAgSW1tZWRpYXRlbHkg c3RvcHMgYWxsIHRlc3RpbmcuCisKKyAgICAgICAgQkFJTF9PVVQoIkNhbid0IGdvIG5vIGZ1 cnRoZXIiKTsKKworICAgIHByaW50cworCisgICAgICAgIEJhaWwgb3V0ISAgQ2FuJ3QgZ28g bm8gZnVydGhlcgorCisgICAgYW5kIGV4aXRzIHdpdGggMjU1LgorCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9saWJ0YXAvdGFwLmMgYi9zcmMvdGVzdC9saWJ0YXAvdGFwLmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjUwNmU0MDAwMTU2Ci0tLSAvZGV2L251 bGwKKysrIGIvc3JjL3Rlc3QvbGlidGFwL3RhcC5jCkBAIC0wLDAgKzEsNDIxIEBACisvKgor bGlidGFwIC0gV3JpdGUgdGVzdHMgaW4gQworQ29weXJpZ2h0IDIwMTIgSmFrZSBHZWxibWFu IDxnZWxibWFuQGdtYWlsLmNvbT4KK1RoaXMgZmlsZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg TEdQTAorKi8KKworI2RlZmluZSBfREVGQVVMVF9TT1VSQ0UgMQorCisjaW5jbHVkZSA8c3Rk YXJnLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNs dWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgInRhcC5oIgorCisjaWZuZGVmIF9XSU4zMgor I2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2luY2x1 ZGUgPHN5cy9tbWFuLmg+CisKKyNpbmNsdWRlIDxyZWdleC5oPgorCisjaWZuZGVmIE1BUF9B Tk9OWU1PVVMKKyNpZmRlZiBNQVBfQU5PTgorI2RlZmluZSBNQVBfQU5PTllNT1VTIE1BUF9B Tk9OCisjZWxzZQorI2Vycm9yICJTeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBtYXBwaW5nIGFu b255bW91cyBwYWdlcyIKKyNlbmRpZgorI2VuZGlmCisjZW5kaWYKKworI2lmIGRlZmluZWQo X19HTlVDX18pIHx8IGRlZmluZWQoX19jbGFuZ19fKQorI2RlZmluZSBQUklOVEZfQVRUUihm bXRhcmcsIGZpcnN0dmFyYXJnKSBfX2F0dHJpYnV0ZV9fKChmb3JtYXQocHJpbnRmLCBmbXRh cmcsIGZpcnN0dmFyYXJnKSkpCisjZWxzZQorI2RlZmluZSBQUklOVEZfQVRUUihmbXRhcmcs IGZpcnN0dmFyYXJnKQorI2VuZGlmCisKK3N0YXRpYyBpbnQgZXhwZWN0ZWRfdGVzdHMgPSBO T19QTEFOOworc3RhdGljIGludCBmYWlsZWRfdGVzdHM7CitzdGF0aWMgaW50IGN1cnJlbnRf dGVzdDsKK3N0YXRpYyBjaGFyICp0b2RvX21lc2c7CisKK3N0YXRpYyBjaGFyICp2c3RyZHVw Zihjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgYXJncykgUFJJTlRGX0FUVFIoMSwwKTsKKwor dm9pZCB0YXBfcGxhbihpbnQgdGVzdHMsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKSBQUklOVEZf QVRUUigyLCAzKTsKKworaW50IHZva19hdF9sb2MoY29uc3QgY2hhciAqZmlsZSwgaW50IGxp bmUsIGludCB0ZXN0LCBjb25zdCBjaGFyICpmbXQsCisJCQkgICB2YV9saXN0IGFyZ3MpIFBS SU5URl9BVFRSKDQsMCk7CisKK2ludCBva19hdF9sb2MoY29uc3QgY2hhciAqZmlsZSwgaW50 IGxpbmUsIGludCB0ZXN0LCBjb25zdCBjaGFyICpmbXQsIC4uLikKKwlQUklOVEZfQVRUUig0 LCA1KTsKKworaW50IGlzX2F0X2xvYyhjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29u c3QgY2hhciAqZ290LCBjb25zdCBjaGFyICpleHBlY3RlZCwKKwkJCSAgY29uc3QgY2hhciAq Zm10LCAuLi4pIFBSSU5URl9BVFRSKDUsIDYpOworCitpbnQgaXNudF9hdF9sb2MoY29uc3Qg Y2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKmdvdCwKKwkJCQljb25zdCBjaGFy ICpleHBlY3RlZCwgY29uc3QgY2hhciAqZm10LCAuLi4pCisJUFJJTlRGX0FUVFIoNSwgNik7 CisKK2ludCBjbXBfb2tfYXRfbG9jKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBpbnQg YSwgY29uc3QgY2hhciAqb3AsIGludCBiLAorCQkJCSAgY29uc3QgY2hhciAqZm10LCAuLi4p CisJUFJJTlRGX0FUVFIoNiwgNyk7CisKK2ludCBjbXBfbWVtX2F0X2xvYyhjb25zdCBjaGFy ICpmaWxlLCBpbnQgbGluZSwgY29uc3Qgdm9pZCAqZ290LAorCQkJCSAgIGNvbnN0IHZvaWQg KmV4cGVjdGVkLCBzaXplX3QgbiwgY29uc3QgY2hhciAqZm10LCAuLi4pCisJUFJJTlRGX0FU VFIoNiwgNyk7CisKK2ludCBkaWFnKGNvbnN0IGNoYXIgKmZtdCwgLi4uKSBQUklOVEZfQVRU UigxLCAyKTsKKworaW50IGJhaWxfb3V0KGludCBpZ25vcmUsIGNvbnN0IGNoYXIgKmZtdCwg Li4uKQorCVBSSU5URl9BVFRSKDIsIDMpOworCit2b2lkIHRhcF9za2lwKGludCBuLCBjb25z dCBjaGFyICpmbXQsIC4uLikKKwlQUklOVEZfQVRUUigyLCAzKTsKKwordm9pZCB0YXBfdG9k byhpbnQgaWdub3JlLCBjb25zdCBjaGFyICpmbXQsIC4uLikKKwlQUklOVEZfQVRUUigyLCAz KTsKKworaW50IGxpa2VfYXRfbG9jKGludCBmb3JfbWF0Y2gsIGNvbnN0IGNoYXIgKmZpbGUs IGludCBsaW5lLCBjb25zdCBjaGFyICpnb3QsCisJCQkJY29uc3QgY2hhciAqZXhwZWN0ZWQs IGNvbnN0IGNoYXIgKmZtdCwgLi4uKQorCVBSSU5URl9BVFRSKDYsIDcpOworCitzdGF0aWMg Y2hhciAqCit2c3RyZHVwZihjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgYXJncykKK3sKKwlj aGFyICpzdHI7CisJaW50IHNpemU7CisJdmFfbGlzdCBhcmdzMjsKKwl2YV9jb3B5KGFyZ3My LCBhcmdzKTsKKwlpZiAoIWZtdCkKKwkJZm10ID0gIiI7CisJc2l6ZSA9IHZzbnByaW50ZihO VUxMLCAwLCBmbXQsIGFyZ3MyKSArIDI7CisJc3RyID0gbWFsbG9jKHNpemUpOworCWlmICgh c3RyKSB7CisJCXBlcnJvcigibWFsbG9jIGVycm9yIik7CisJCWV4aXQoMSk7CisJfQorCXZz cHJpbnRmKHN0ciwgZm10LCBhcmdzKTsKKwl2YV9lbmQoYXJnczIpOworCXJldHVybiBzdHI7 Cit9CisKK3ZvaWQKK3RhcF9wbGFuKGludCB0ZXN0cywgY29uc3QgY2hhciAqZm10LCAuLi4p Cit7CisJZXhwZWN0ZWRfdGVzdHMgPSB0ZXN0czsKKwlpZiAodGVzdHMgPT0gU0tJUF9BTEwp IHsKKwkJY2hhciAqd2h5OworCQl2YV9saXN0IGFyZ3M7CisJCXZhX3N0YXJ0KGFyZ3MsIGZt dCk7CisJCXdoeSA9IHZzdHJkdXBmKGZtdCwgYXJncyk7CisJCXZhX2VuZChhcmdzKTsKKwkJ cHJpbnRmKCIxLi4wICIpOworCQlkaWFnKCJTS0lQICVzXG4iLCB3aHkpOworCQlleGl0KDAp OworCX0KKwlpZiAodGVzdHMgIT0gTk9fUExBTikgeworCQlwcmludGYoIjEuLiVkXG4iLCB0 ZXN0cyk7CisJfQorfQorCitpbnQKK3Zva19hdF9sb2MoY29uc3QgY2hhciAqZmlsZSwgaW50 IGxpbmUsIGludCB0ZXN0LCBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgYXJncykKK3sKKwlj aGFyICpuYW1lID0gdnN0cmR1cGYoZm10LCBhcmdzKTsKKwlpZiAoIXRlc3QpIHsKKwkJcHJp bnRmKCJub3QgIik7CisJfQorCXByaW50Zigib2sgJWQiLCArK2N1cnJlbnRfdGVzdCk7CisJ aWYgKCpuYW1lKQorCQlwcmludGYoIiAtICVzIiwgbmFtZSk7CisJaWYgKHRvZG9fbWVzZykg eworCQlwcmludGYoIiAjIFRPRE8iKTsKKwkJaWYgKCp0b2RvX21lc2cpCisJCQlwcmludGYo IiAlcyIsIHRvZG9fbWVzZyk7CisJfQorCXByaW50ZigiXG4iKTsKKwlpZiAoIXRlc3QpIHsK KwkJcHJpbnRmKCIjICAgRmFpbGVkICIpOworCQlpZiAodG9kb19tZXNnKQorCQkJcHJpbnRm KCIoVE9ETykgIik7CisJCXByaW50ZigidGVzdCAiKTsKKwkJaWYgKCpuYW1lKQorCQkJcHJp bnRmKCInJXMnXG4jICAgIiwgbmFtZSk7CisJCXByaW50ZigiYXQgJXMgbGluZSAlZC5cbiIs IGZpbGUsIGxpbmUpOworCQlpZiAoIXRvZG9fbWVzZykKKwkJCWZhaWxlZF90ZXN0cysrOwor CX0KKwlmcmVlKG5hbWUpOworCXJldHVybiB0ZXN0OworfQorCitpbnQKK29rX2F0X2xvYyhj b25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgaW50IHRlc3QsIGNvbnN0IGNoYXIgKmZtdCwg Li4uKQoreworCXZhX2xpc3QgYXJnczsKKwl2YV9zdGFydChhcmdzLCBmbXQpOworCXZva19h dF9sb2MoZmlsZSwgbGluZSwgdGVzdCwgZm10LCBhcmdzKTsKKwl2YV9lbmQoYXJncyk7CisJ cmV0dXJuIHRlc3Q7Cit9CisKK3N0YXRpYyBpbnQKK215c3RyY21wKGNvbnN0IGNoYXIgKmEs IGNvbnN0IGNoYXIgKmIpCit7CisJcmV0dXJuIGEgPT0gYiA/IDAgOiAhYSA/IC0xIDogIWIg PyAxIDogc3RyY21wKGEsIGIpOworfQorCisjZGVmaW5lIGVxKGEsIGIpICghbXlzdHJjbXAo YSwgYikpCisjZGVmaW5lIG5lKGEsIGIpIChteXN0cmNtcChhLCBiKSkKKworaW50Citpc19h dF9sb2MoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKmdvdCwgY29u c3QgY2hhciAqZXhwZWN0ZWQsCisJCSAgY29uc3QgY2hhciAqZm10LCAuLi4pCit7CisJaW50 IHRlc3QgPSBlcShnb3QsIGV4cGVjdGVkKTsKKwl2YV9saXN0IGFyZ3M7CisJdmFfc3RhcnQo YXJncywgZm10KTsKKwl2b2tfYXRfbG9jKGZpbGUsIGxpbmUsIHRlc3QsIGZtdCwgYXJncyk7 CisJdmFfZW5kKGFyZ3MpOworCWlmICghdGVzdCkgeworCQlkaWFnKCIgICAgICAgICBnb3Q6 ICclcyciLCBnb3QpOworCQlkaWFnKCIgICAgZXhwZWN0ZWQ6ICclcyciLCBleHBlY3RlZCk7 CisJfQorCXJldHVybiB0ZXN0OworfQorCitpbnQKK2lzbnRfYXRfbG9jKGNvbnN0IGNoYXIg KmZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyICpnb3QsIGNvbnN0IGNoYXIgKmV4cGVjdGVk LAorCQkJY29uc3QgY2hhciAqZm10LCAuLi4pCit7CisJaW50IHRlc3QgPSBuZShnb3QsIGV4 cGVjdGVkKTsKKwl2YV9saXN0IGFyZ3M7CisJdmFfc3RhcnQoYXJncywgZm10KTsKKwl2b2tf YXRfbG9jKGZpbGUsIGxpbmUsIHRlc3QsIGZtdCwgYXJncyk7CisJdmFfZW5kKGFyZ3MpOwor CWlmICghdGVzdCkgeworCQlkaWFnKCIgICAgICAgICBnb3Q6ICclcyciLCBnb3QpOworCQlk aWFnKCIgICAgZXhwZWN0ZWQ6IGFueXRoaW5nIGVsc2UiKTsKKwl9CisJcmV0dXJuIHRlc3Q7 Cit9CisKK2ludAorY21wX29rX2F0X2xvYyhjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwg aW50IGEsIGNvbnN0IGNoYXIgKm9wLCBpbnQgYiwKKwkJCSAgY29uc3QgY2hhciAqZm10LCAu Li4pCit7CisJaW50IHRlc3QgPSBlcShvcCwgInx8IikgPyBhIHx8IGIgOgorCQllcShvcCwg IiYmIikJCT8gYSAmJiBiIDoKKwkJZXEob3AsICJ8IikJCQk/IGEgfCBiIDoKKwkJZXEob3As ICJeIikJCQk/IGEgXiBiIDoKKwkJZXEob3AsICImIikJCQk/IGEgJiBiIDoKKwkJZXEob3As ICI9PSIpCQk/IGEgPT0gYiA6CisJCWVxKG9wLCAiIT0iKQkJPyBhICE9IGIgOgorCQllcShv cCwgIjwiKQkJCT8gYSA8IGIgOgorCQllcShvcCwgIj4iKQkJCT8gYSA+IGIgOgorCQllcShv cCwgIjw9IikJCT8gYSA8PSBiIDoKKwkJZXEob3AsICI+PSIpCQk/IGEgPj0gYiA6CisJCWVx KG9wLCAiPDwiKQkJPyBhIDw8IGIgOgorCQllcShvcCwgIj4+IikJCT8gYSA+PiBiIDoKKwkJ ZXEob3AsICIrIikJCQk/IGEgKyBiIDoKKwkJZXEob3AsICItIikJCQk/IGEgLSBiIDoKKwkJ ZXEob3AsICIqIikJCQk/IGEgKiBiIDoKKwkJZXEob3AsICIvIikJCQk/IGEgLyBiIDoKKwkJ ZXEob3AsICIlIikJCQk/IGEgJSBiIDoKKwkJCQkJCQkgIGRpYWcoInVucmVjb2duaXplZCBv cGVyYXRvciAnJXMnIiwgb3ApOworCXZhX2xpc3QgYXJnczsKKwl2YV9zdGFydChhcmdzLCBm bXQpOworCXZva19hdF9sb2MoZmlsZSwgbGluZSwgdGVzdCwgZm10LCBhcmdzKTsKKwl2YV9l bmQoYXJncyk7CisJaWYgKCF0ZXN0KSB7CisJCWRpYWcoIiAgICAlZCIsIGEpOworCQlkaWFn KCIgICAgICAgICVzIiwgb3ApOworCQlkaWFnKCIgICAgJWQiLCBiKTsKKwl9CisJcmV0dXJu IHRlc3Q7Cit9CisKK3N0YXRpYyBpbnQKK2ZpbmRfbWVtX2RpZmYoY29uc3QgY2hhciAqYSwg Y29uc3QgY2hhciAqYiwgc2l6ZV90IG4sIHNpemVfdCAqb2Zmc2V0KQoreworCXNpemVfdCBp OworCWlmIChhID09IGIpCisJCXJldHVybiAwOworCWlmICghYSB8fCAhYikKKwkJcmV0dXJu IDI7CisJZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworCQlpZiAoYVtpXSAhPSBiW2ldKSB7 CisJCQkqb2Zmc2V0ID0gaTsKKwkJCXJldHVybiAxOworCQl9CisJfQorCXJldHVybiAwOwor fQorCitpbnQKK2NtcF9tZW1fYXRfbG9jKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBj b25zdCB2b2lkICpnb3QsCisJCQkgICBjb25zdCB2b2lkICpleHBlY3RlZCwgc2l6ZV90IG4s IGNvbnN0IGNoYXIgKmZtdCwgLi4uKQoreworCXNpemVfdCBvZmZzZXQ7CisJaW50IGRpZmYg PSBmaW5kX21lbV9kaWZmKGdvdCwgZXhwZWN0ZWQsIG4sICZvZmZzZXQpOworCXZhX2xpc3Qg YXJnczsKKwl2YV9zdGFydChhcmdzLCBmbXQpOworCXZva19hdF9sb2MoZmlsZSwgbGluZSwg IWRpZmYsIGZtdCwgYXJncyk7CisJdmFfZW5kKGFyZ3MpOworCWlmIChkaWZmID09IDEpIHsK KwkJZGlhZygiICAgIERpZmZlcmVuY2Ugc3RhcnRzIGF0IG9mZnNldCAlbHUiLCBvZmZzZXQp OworCQlkaWFnKCIgICAgICAgICBnb3Q6IDB4JTAyeCIsICgoY29uc3QgdW5zaWduZWQgY2hh ciAqKWdvdClbb2Zmc2V0XSk7CisJCWRpYWcoIiAgICBleHBlY3RlZDogMHglMDJ4IiwgKChj b25zdCB1bnNpZ25lZCBjaGFyICopZXhwZWN0ZWQpW29mZnNldF0pOworCX0gZWxzZSBpZiAo ZGlmZiA9PSAyKSB7CisJCWRpYWcoIiAgICAgICAgIGdvdDogJXMiLCBnb3QgPyAibm90IE5V TEwiIDogIk5VTEwiKTsKKwkJZGlhZygiICAgIGV4cGVjdGVkOiAlcyIsIGV4cGVjdGVkID8g Im5vdCBOVUxMIiA6ICJOVUxMIik7CisJfQorCXJldHVybiAhZGlmZjsKK30KKworaW50Citk aWFnKGNvbnN0IGNoYXIgKmZtdCwgLi4uKQoreworCXZhX2xpc3QgYXJnczsKKwljaGFyICpt ZXNnLCAqbGluZTsKKwlpbnQgaTsKKwl2YV9zdGFydChhcmdzLCBmbXQpOworCWlmICghZm10 KSB7CisJCXZhX2VuZChhcmdzKTsKKwkJcmV0dXJuIDA7CisJfQorCW1lc2cgPSB2c3RyZHVw ZihmbXQsIGFyZ3MpOworCWxpbmUgPSBtZXNnOworCWZvciAoaSA9IDA7ICpsaW5lOyBpKysp IHsKKwkJY2hhciBjID0gbWVzZ1tpXTsKKwkJaWYgKCFjIHx8IGMgPT0gJ1xuJykgeworCQkJ bWVzZ1tpXSA9ICdcMCc7CisJCQlwcmludGYoIiMgJXNcbiIsIGxpbmUpOworCQkJaWYgKCFj KQorCQkJCWJyZWFrOworCQkJbWVzZ1tpXSA9IGM7CisJCQlsaW5lID0gbWVzZyArIGkgKyAx OworCQl9CisJfQorCWZyZWUobWVzZyk7CisJdmFfZW5kKGFyZ3MpOworCXJldHVybiAwOwor fQorCitpbnQKK2V4aXRfc3RhdHVzKHZvaWQpCit7CisJaW50IHJldHZhbCA9IDA7CisJaWYg KGV4cGVjdGVkX3Rlc3RzID09IE5PX1BMQU4pIHsKKwkJcHJpbnRmKCIxLi4lZFxuIiwgY3Vy cmVudF90ZXN0KTsKKwl9IGVsc2UgaWYgKGN1cnJlbnRfdGVzdCAhPSBleHBlY3RlZF90ZXN0 cykgeworCQlkaWFnKCJMb29rcyBsaWtlIHlvdSBwbGFubmVkICVkIHRlc3QlcyBidXQgcmFu ICVkLiIsIGV4cGVjdGVkX3Rlc3RzLAorCQkJIGV4cGVjdGVkX3Rlc3RzID4gMSA/ICJzIiA6 ICIiLCBjdXJyZW50X3Rlc3QpOworCQlyZXR2YWwgPSAyOworCX0KKwlpZiAoZmFpbGVkX3Rl c3RzKSB7CisJCWRpYWcoIkxvb2tzIGxpa2UgeW91IGZhaWxlZCAlZCB0ZXN0JXMgb2YgJWQg cnVuLiIsIGZhaWxlZF90ZXN0cywKKwkJCSBmYWlsZWRfdGVzdHMgPiAxID8gInMiIDogIiIs IGN1cnJlbnRfdGVzdCk7CisJCXJldHZhbCA9IDE7CisJfQorCXJldHVybiByZXR2YWw7Cit9 CisKK2ludAorYmFpbF9vdXQoaW50IGlnbm9yZSwgY29uc3QgY2hhciAqZm10LCAuLi4pCit7 CisJdmFfbGlzdCBhcmdzOworCSh2b2lkKWlnbm9yZTsKKwl2YV9zdGFydChhcmdzLCBmbXQp OworCXByaW50ZigiQmFpbCBvdXQhICAiKTsKKwl2cHJpbnRmKGZtdCwgYXJncyk7CisJcHJp bnRmKCJcbiIpOworCXZhX2VuZChhcmdzKTsKKwlleGl0KDI1NSk7CisJcmV0dXJuIDA7Cit9 CisKK3ZvaWQKK3RhcF9za2lwKGludCBuLCBjb25zdCBjaGFyICpmbXQsIC4uLikKK3sKKwlj aGFyICp3aHk7CisJdmFfbGlzdCBhcmdzOworCXZhX3N0YXJ0KGFyZ3MsIGZtdCk7CisJd2h5 ID0gdnN0cmR1cGYoZm10LCBhcmdzKTsKKwl2YV9lbmQoYXJncyk7CisJd2hpbGUgKG4tLSA+ IDApIHsKKwkJcHJpbnRmKCJvayAlZCAiLCArK2N1cnJlbnRfdGVzdCk7CisJCWRpYWcoInNr aXAgJXNcbiIsIHdoeSk7CisJfQorCWZyZWUod2h5KTsKK30KKwordm9pZAordGFwX3RvZG8o aW50IGlnbm9yZSwgY29uc3QgY2hhciAqZm10LCAuLi4pCit7CisJdmFfbGlzdCBhcmdzOwor CSh2b2lkKWlnbm9yZTsKKwl2YV9zdGFydChhcmdzLCBmbXQpOworCXRvZG9fbWVzZyA9IHZz dHJkdXBmKGZtdCwgYXJncyk7CisJdmFfZW5kKGFyZ3MpOworfQorCit2b2lkCit0YXBfZW5k X3RvZG8odm9pZCkKK3sKKwlmcmVlKHRvZG9fbWVzZyk7CisJdG9kb19tZXNnID0gTlVMTDsK K30KKworI2lmbmRlZiBfV0lOMzIKKy8qIENyZWF0ZSBhIHNoYXJlZCBtZW1vcnkgaW50IHRv IGtlZXAgdHJhY2sgb2Ygd2hldGhlciBhIHBpZWNlIG9mIGNvZGUgZXhlY3V0ZWQKK2RpZXMu IHRvIGJlIHVzZWQgaW4gdGhlIGRpZXNfb2sgYW5kIGxpdmVzX29rIG1hY3Jvcy4gICovCitp bnQKK3RhcF90ZXN0X2RpZWQoaW50IHN0YXR1cykKK3sKKwlzdGF0aWMgaW50ICp0ZXN0X2Rp ZWQgPSBOVUxMOworCWludCBwcmV2OworCWlmICghdGVzdF9kaWVkKSB7CisJCXRlc3RfZGll ZCA9IG1tYXAoMCwgc2l6ZW9mKGludCksIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsCisJCQkJ CQkgTUFQX1NIQVJFRCB8IE1BUF9BTk9OWU1PVVMsIC0xLCAwKTsKKwkJKnRlc3RfZGllZCA9 IDA7CisJfQorCXByZXYgPSAqdGVzdF9kaWVkOworCSp0ZXN0X2RpZWQgPSBzdGF0dXM7CisJ cmV0dXJuIHByZXY7Cit9CisKK2ludAorbGlrZV9hdF9sb2MoaW50IGZvcl9tYXRjaCwgY29u c3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKmdvdCwKKwkJCWNvbnN0IGNo YXIgKmV4cGVjdGVkLCBjb25zdCBjaGFyICpmbXQsIC4uLikKK3sKKwlpbnQgdGVzdDsKKwly ZWdleF90IHJlOworCXZhX2xpc3QgYXJnczsKKwlpbnQgZXJyID0gcmVnY29tcCgmcmUsIGV4 cGVjdGVkLCBSRUdfRVhURU5ERUQpOworCWlmIChlcnIpIHsKKwkJY2hhciBlcnJidWZbMjU2 XTsKKwkJcmVnZXJyb3IoZXJyLCAmcmUsIGVycmJ1Ziwgc2l6ZW9mIGVycmJ1Zik7CisJCWZw cmludGYoc3RkZXJyLCAiVW5hYmxlIHRvIGNvbXBpbGUgcmVnZXggJyVzJzogJXMgYXQgJXMg bGluZSAlZFxuIiwKKwkJCQlleHBlY3RlZCwgZXJyYnVmLCBmaWxlLCBsaW5lKTsKKwkJZXhp dCgyNTUpOworCX0KKwllcnIgPSByZWdleGVjKCZyZSwgZ290LCAwLCBOVUxMLCAwKTsKKwly ZWdmcmVlKCZyZSk7CisJdGVzdCA9IGZvcl9tYXRjaCA/ICFlcnIgOiBlcnI7CisJdmFfc3Rh cnQoYXJncywgZm10KTsKKwl2b2tfYXRfbG9jKGZpbGUsIGxpbmUsIHRlc3QsIGZtdCwgYXJn cyk7CisJdmFfZW5kKGFyZ3MpOworCWlmICghdGVzdCkgeworCQlpZiAoZm9yX21hdGNoKSB7 CisJCQlkaWFnKCIgICAgICAgICAgICAgICAgICAgJyVzJyIsIGdvdCk7CisJCQlkaWFnKCIg ICAgZG9lc24ndCBtYXRjaDogJyVzJyIsIGV4cGVjdGVkKTsKKwkJfSBlbHNlIHsKKwkJCWRp YWcoIiAgICAgICAgICAgICAgICAgICAnJXMnIiwgZ290KTsKKwkJCWRpYWcoIiAgICAgICAg ICBtYXRjaGVzOiAnJXMnIiwgZXhwZWN0ZWQpOworCQl9CisJfQorCXJldHVybiB0ZXN0Owor fQorI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9saWJ0YXAvdGFwLmggYi9zcmMvdGVz dC9saWJ0YXAvdGFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu LmUzNjZhNmFmZmRjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbGlidGFwL3RhcC5o CkBAIC0wLDAgKzEsMTE1IEBACisvKgorbGlidGFwIC0gV3JpdGUgdGVzdHMgaW4gQworQ29w eXJpZ2h0IDIwMTIgSmFrZSBHZWxibWFuIDxnZWxibWFuQGdtYWlsLmNvbT4KK1RoaXMgZmls ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTEdQTAorKi8KKworI2lmbmRlZiBfX1RBUF9IX18K KyNkZWZpbmUgX19UQVBfSF9fCisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7 CisjZW5kaWYKKworI2lmbmRlZiB2YV9jb3B5CisjaWZkZWYgX192YV9jb3B5CisjZGVmaW5l IHZhX2NvcHkgX192YV9jb3B5CisjZWxzZQorI2RlZmluZSB2YV9jb3B5KGQsIHMpICgoZCkg PSAocykpCisjZW5kaWYKKyNlbmRpZgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRl IDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRhcmcuaD4KKworaW50ICAgICB2b2tfYXRfbG9j ICAgICAgKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBpbnQgdGVzdCwgY29uc3QgY2hh ciAqZm10LAorICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2xpc3QgYXJncyk7CitpbnQg ICAgIG9rX2F0X2xvYyAgICAgICAoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGludCB0 ZXN0LCBjb25zdCBjaGFyICpmbXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKTsK K2ludCAgICAgaXNfYXRfbG9jICAgICAgIChjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwg Y29uc3QgY2hhciAqZ290LAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg KmV4cGVjdGVkLCBjb25zdCBjaGFyICpmbXQsIC4uLik7CitpbnQgICAgIGlzbnRfYXRfbG9j ICAgICAoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKmdvdCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpleHBlY3RlZCwgY29uc3QgY2hh ciAqZm10LCAuLi4pOworaW50ICAgICBjbXBfb2tfYXRfbG9jICAgKGNvbnN0IGNoYXIgKmZp bGUsIGludCBsaW5lLCBpbnQgYSwgY29uc3QgY2hhciAqb3AsCisgICAgICAgICAgICAgICAg ICAgICAgICAgaW50IGIsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKK2ludCAgICAgY21wX21l bV9hdF9sb2MgIChjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3Qgdm9pZCAqZ290 LAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmV4cGVjdGVkLCBzaXpl X3QgbiwgY29uc3QgY2hhciAqZm10LCAuLi4pOworaW50ICAgICBiYWlsX291dCAgICAgICAg KGludCBpZ25vcmUsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKK3ZvaWQgICAgdGFwX3BsYW4g ICAgICAgIChpbnQgdGVzdHMsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKK2ludCAgICAgZGlh ZyAgICAgICAgICAgIChjb25zdCBjaGFyICpmbXQsIC4uLik7CitpbnQgICAgIGV4aXRfc3Rh dHVzICAgICAodm9pZCk7Cit2b2lkICAgIHRhcF9za2lwICAgICAgICAoaW50IG4sIGNvbnN0 IGNoYXIgKmZtdCwgLi4uKTsKK3ZvaWQgICAgdGFwX3RvZG8gICAgICAgIChpbnQgaWdub3Jl LCBjb25zdCBjaGFyICpmbXQsIC4uLik7Cit2b2lkICAgIHRhcF9lbmRfdG9kbyAgICAodm9p ZCk7CisKKyNkZWZpbmUgTk9fUExBTiAgICAgICAgICAtMQorI2RlZmluZSBTS0lQX0FMTCAg ICAgICAgIC0yCisjZGVmaW5lIG9rKC4uLikgICAgICAgICAgb2tfYXRfbG9jKF9fRklMRV9f LCBfX0xJTkVfXywgX19WQV9BUkdTX18sIE5VTEwpCisjZGVmaW5lIGlzKC4uLikgICAgICAg ICAgaXNfYXRfbG9jKF9fRklMRV9fLCBfX0xJTkVfXywgX19WQV9BUkdTX18sIE5VTEwpCisj ZGVmaW5lIGlzbnQoLi4uKSAgICAgICAgaXNudF9hdF9sb2MoX19GSUxFX18sIF9fTElORV9f LCBfX1ZBX0FSR1NfXywgTlVMTCkKKyNkZWZpbmUgY21wX29rKC4uLikgICAgICBjbXBfb2tf YXRfbG9jKF9fRklMRV9fLCBfX0xJTkVfXywgX19WQV9BUkdTX18sIE5VTEwpCisjZGVmaW5l IGNtcF9tZW0oLi4uKSAgICAgY21wX21lbV9hdF9sb2MoX19GSUxFX18sIF9fTElORV9fLCBf X1ZBX0FSR1NfXywgTlVMTCkKKyNkZWZpbmUgcGxhbiguLi4pICAgICAgICB0YXBfcGxhbihf X1ZBX0FSR1NfXywgTlVMTCkKKyNkZWZpbmUgZG9uZV90ZXN0aW5nKCkgICByZXR1cm4gZXhp dF9zdGF0dXMoKQorI2RlZmluZSBCQUlMX09VVCguLi4pICAgIGJhaWxfb3V0KDAsICIiIF9f VkFfQVJHU19fLCBOVUxMKQorI2RlZmluZSBwYXNzKC4uLikgICAgICAgIG9rKDEsICIiIF9f VkFfQVJHU19fKQorI2RlZmluZSBmYWlsKC4uLikgICAgICAgIG9rKDAsICIiIF9fVkFfQVJH U19fKQorCisjZGVmaW5lIHNraXAodGVzdCwgLi4uKSAgZG8ge2lmICh0ZXN0KSB7dGFwX3Nr aXAoX19WQV9BUkdTX18sIE5VTEwpOyBicmVhazt9CisjZGVmaW5lIGVuZF9za2lwICAgICAg ICAgfSB3aGlsZSAoMCkKKworI2RlZmluZSB0b2RvKC4uLikgICAgICAgIHRhcF90b2RvKDAs ICIiIF9fVkFfQVJHU19fLCBOVUxMKQorI2RlZmluZSBlbmRfdG9kbyAgICAgICAgIHRhcF9l bmRfdG9kbygpCisKKyNkZWZpbmUgZGllc19vayguLi4pICAgICBkaWVzX29rX2NvbW1vbigx LCBfX1ZBX0FSR1NfXykKKyNkZWZpbmUgbGl2ZXNfb2soLi4uKSAgICBkaWVzX29rX2NvbW1v bigwLCBfX1ZBX0FSR1NfXykKKworI2lmZGVmIF9XSU4zMgorI2RlZmluZSBsaWtlKC4uLikg ICAgICAgIHRhcF9za2lwKDEsICJsaWtlIGlzIG5vdCBpbXBsZW1lbnRlZCBvbiBXaW5kb3dz IikKKyNkZWZpbmUgdW5saWtlKC4uLikgICAgICB0YXBfc2tpcCgxLCAidW5saWtlIGlzIG5v dCBpbXBsZW1lbnRlZCBvbiBXaW5kb3dzIikKKyNkZWZpbmUgZGllc19va19jb21tb24oLi4u KSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgdGFwX3NraXAoMSwgIkRlYXRoIGRldGVj dGlvbiBpcyBub3Qgc3VwcG9ydGVkIG9uIFdpbmRvd3MiKQorI2Vsc2UKKyNkZWZpbmUgbGlr ZSguLi4pICAgICAgICBsaWtlX2F0X2xvYygxLCBfX0ZJTEVfXywgX19MSU5FX18sIF9fVkFf QVJHU19fLCBOVUxMKQorI2RlZmluZSB1bmxpa2UoLi4uKSAgICAgIGxpa2VfYXRfbG9jKDAs IF9fRklMRV9fLCBfX0xJTkVfXywgX19WQV9BUkdTX18sIE5VTEwpCitpbnQgICAgIGxpa2Vf YXRfbG9jICAgICAoaW50IGZvcl9tYXRjaCwgY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUs CisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZ290LCBjb25zdCBjaGFy ICpleHBlY3RlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmbXQs IC4uLik7CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Cisj aW5jbHVkZSA8c3lzL3dhaXQuaD4KK2ludCB0YXBfdGVzdF9kaWVkIChpbnQgc3RhdHVzKTsK KyNkZWZpbmUgZGllc19va19jb21tb24oZm9yX2RlYXRoLCBjb2RlLCAuLi4pICAgICAgICAg ICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaW50IGNwaWQ7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaW50IGl0X2RpZWQ7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdGFwX3Rlc3Rf ZGllZCgxKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg Y3BpZCA9IGZvcmsoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK KyAgICAgICAgc3dpdGNoIChjcGlkKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKKyAgICAgICAgY2FzZSAtMTogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHBlcnJvcigiZm9yayBlcnJvciIpOyAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGV4aXQoMSk7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgY2FzZSAwOiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg ICAgIGNsb3NlKDEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK KyAgICAgICAgICAgIGNsb3NlKDIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKKyAgICAgICAgICAgIGNvZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHRhcF90ZXN0X2RpZWQoMCk7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGV4aXQoMCk7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg aWYgKHdhaXRwaWQoY3BpZCwgTlVMTCwgMCkgPCAwKSB7ICAgICAgICAgICAgICAgICAgIFwK KyAgICAgICAgICAgIHBlcnJvcigid2FpdHBpZCBlcnJvciIpOyAgICAgICAgICAgICAgICAg ICAgICAgIFwKKyAgICAgICAgICAgIGV4aXQoMSk7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaXRfZGllZCA9IHRhcF90ZXN0 X2RpZWQoMCk7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKCFpdF9k aWVkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg ICAgIHtjb2RlfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK KyAgICAgICAgb2soZm9yX2RlYXRoID8gaXRfZGllZCA6ICFpdF9kaWVkLCAiIiBfX1ZBX0FS R1NfXyk7IFwKKyAgICB9IHdoaWxlICgwKQorI2VuZGlmCisKKyNpZmRlZiBfX2NwbHVzcGx1 cworfQorI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbWVzb24uYnVp bGQgYi9zcmMvdGVzdC9tZXNvbi5idWlsZAppbmRleCBjZDQ1Y2JmNTdmYi4uNjRmYTc1MWE1 YTUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L21l c29uLmJ1aWxkCkBAIC04LDYgKzgsNyBAQCBzdWJkaXIoJ3Bvc3RtYXN0ZXInKQogc3ViZGly KCdyZWNvdmVyeScpCiBzdWJkaXIoJ3N1YnNjcmlwdGlvbicpCiBzdWJkaXIoJ21vZHVsZXMn KQorc3ViZGlyKCdkZm9yJykKIAogaWYgc3NsLmZvdW5kKCkKICAgc3ViZGlyKCdzc2wnKQot LSAKMi41My4wCgo= --------------GiBLAZOtrrdCnvpdzHYTcSF3 Content-Type: text/x-patch; charset=UTF-8; name="v10-0002-Implement-Delta-Frame-of-Reference-compression.patch" Content-Disposition: attachment; filename*0="v10-0002-Implement-Delta-Frame-of-Reference-compression.patc"; filename*1="h" Content-Transfer-Encoding: base64 RnJvbSBmNGVjYmQwOTdmOWZmNWEyZWM0ZDc0ZjdkNmIwMjZhNjliMmE3Njc0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFdmdlbnkgVm9yb3BhZXYgPGV2b3JvcEBnbWFpbC5j b20+CkRhdGU6IEZyaSwgMjAgTWFyIDIwMjYgMTc6MzA6MjIgKzA4MDAKU3ViamVjdDogW1BB VENIIHYxMCAyLzNdIEltcGxlbWVudCBEZWx0YSBGcmFtZSBvZiBSZWZlcmVuY2UgY29tcHJl c3Npb24uCgpJbXBsZW1lbnQgdGhlIGNvbXByZXNzaW9uIGFsZ29yaXRobSBiYXNlZCBvbiB0 aGUgRGVsdGEgRnJhbWUgb2YKUmVmZXJlbmNlIHRlY2huaXF1ZSAoREZPUikuCgpERm9SIHN1 cHBvcnRzIGJvdGggZXh0ZXJuYWwgbWVtb3J5IChvdXRlciBtZW1vcnkpIHByb3ZpZGVkIGJ5 IGEgY2FsbGVyCmFuZCBhdXRvbWF0aWNhbGx5IG1hbmFnZWQgbWVtb3J5LCBhbGxvY2F0ZWQg YnkgbWVhbnMgb2YgbWFsbG9jLCBwYWxsb2MKb3Igc2ltaWxhciBmdW5jdGlvbnMuIE1lbW9y eSBtYW5hZ2VtZW50IGNvbmZpZ3VyYXRpb24gbXVzdCBiZSBkZWZpbmVkCmR1cmluZyBpbml0 aWFsaXphdGlvbi4gQWxsIHN1YnNlcXVlbnQgb3BlcmF0aW9ucyBmb2xsb3cgdGhpcwpjb25m aWd1cmF0aW9uLiBGb3IgZXhhbXBsZSwgYSBjYWxsZXIgY2FuIHBsYWNlIGEgYnVmZmVyIG9u IHRoZSBzdGFjayB0bwphdm9pZCBoZWFwIGFsbG9jYXRpb24gYW5kIHBhc3MgdGhlIGJ1ZmZl ciB0byBhIERGb1IgdW5pdC4gQXMgYSByZXN1bHQsCnRoZSBwYWNraW5nIGFuZCB1bnBhY2tp bmcgcHJvY2Vzc2VzIGV4Y2x1ZGUgZHluYW1pYyBhbGxvY2F0aW9uLgoKVGhlIERGb1IgdW5p dCBpcyBpbXBsZW1lbnRlZCBhcyBhIHNldCBvZiB0ZW1wbGF0ZXMuIERldmVsb3BlcnMgY2Fu CmdlbmVyYXRlIERGb1IgaW1wbGVtZW50YXRpb25zIGZvciBhbnkgdW5zaWduZWQgaW50ZWdl ciB0eXBlICh1aW50OF90LAp1aW50MTZfdCwgdWludDMyX3QsIHVpbnQ2NF90KS4gVGhlIGRm b3JfdTE2IHVuaXQgaXMgaW1wbGVtZW50ZWQuCgpUaGUgdW5pdCB0ZXN0IGlzIGltcGxlbWVu dGVkIGFzIGEgQyBwcm9ncmFtIChFTEYgZXhlY3V0YWJsZSkuIFRoZSB0ZXN0CmNhbiBiZSBy dW4gd2l0aCB0aGUgJ21ha2UgY2hlY2stdW5pdCcuIFRlc3RzIHN1cHBvcnQgdGhlIFRBUCBw cm90b2NvbAphbmQgYXJlIGV4ZWN1dGVkIHVzaW5nIHRoZSBQcm92ZSB1dGlsaXR5LgoKQXV0 aG9yOiBFdmdlbnkgVm9yb3BhZXYgPGV2Z2VueS52b3JvcGFldkB0YW50b3JsYWJzLmNvbT4g PGV2b3JvcEBnbWFpbC5jb20+ClJldmlld2VkIGJ5OiBBbmRyZXkgQm9yb2RpbiA8eDRtbW1A eWFuZGV4LXRlYW0ucnU+Ci0tLQogc3JjL2JhY2tlbmQvbGliL01ha2VmaWxlLmRmb3IgICAg ICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvbGliL2Rmb3JfdGVtcGwuYyAgICAgICAgfCA2MTgg KysrKysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvbGliL2Rmb3JfdTE2 LmMgICAgICAgICAgfCAgIDggKwogc3JjL2JhY2tlbmQvbGliL21lc29uLmJ1aWxkICAgICAg ICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvbGliL2Rmb3JfdGVtcGwuaCAgICAgICAgfCAgMjcg KysKIHNyYy9pbmNsdWRlL2xpYi9kZm9yX3RlbXBsX3N0YXBsZS5oIHwgMTI1ICsrKysrKwog c3JjL2luY2x1ZGUvbGliL2Rmb3JfdGVtcGxfdW5kZWYuaCAgfCAgMjkgKysKIHNyYy9pbmNs dWRlL2xpYi9kZm9yX3UxNi5oICAgICAgICAgIHwgIDEzICsKIHNyYy9pbmNsdWRlL2xpYi9k Zm9yX3UxNl9jb25maWcuaCAgIHwgICA0ICsKIHNyYy90ZXN0L2Rmb3IvLmdpdGlnbm9yZSAg ICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0L2Rmb3IvTWFrZWZpbGUgICAgICAgICAgICAg IHwgICAzICstCiBzcmMvdGVzdC9kZm9yL21lc29uLmJ1aWxkICAgICAgICAgICB8ICAgMiAr CiBzcmMvdGVzdC9kZm9yL3Rlc3RfZGZvcl91MTYuYyAgICAgICB8IDM3MSArKysrKysrKysr KysrKysrKwogMTMgZmlsZXMgY2hhbmdlZCwgMTIwMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0 aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvbGliL2Rmb3JfdGVtcGwu YwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2xpYi9kZm9yX3UxNi5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUvbGliL2Rmb3JfdGVtcGwuaAogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL2xpYi9kZm9yX3RlbXBsX3N0YXBsZS5oCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUvbGliL2Rmb3JfdGVtcGxfdW5kZWYuaAogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL2xpYi9kZm9yX3UxNi5oCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjL2luY2x1ZGUvbGliL2Rmb3JfdTE2X2NvbmZpZy5oCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjL3Rlc3QvZGZvci90ZXN0X2Rmb3JfdTE2LmMKCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9saWIvTWFrZWZpbGUuZGZvciBiL3NyYy9iYWNrZW5kL2xpYi9NYWtlZmlsZS5k Zm9yCmluZGV4IGI5M2M2ZTc4NjQ0Li5iZWI3MDM1ZjE1NSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvbGliL01ha2VmaWxlLmRmb3IKKysrIGIvc3JjL2JhY2tlbmQvbGliL01ha2VmaWxl LmRmb3IKQEAgLTIsNCArMiw1IEBACiAKIE9CSlNfREZPUiA6PSBcCiAJYml0cGFja191MTYu byBcCisJZGZvcl91MTYubyBcCiAJdmVjdF91MTYubwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvbGliL2Rmb3JfdGVtcGwuYyBiL3NyYy9iYWNrZW5kL2xpYi9kZm9yX3RlbXBsLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmRhZTc5YWRmYjY2Ci0tLSAv ZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvbGliL2Rmb3JfdGVtcGwuYwpAQCAtMCwwICsx LDYxOCBAQAorLyoKKyAqIGRmb3IuYworICoKKyAqIERGT1JfVEVNUEwgaW1wbGVtZW50cyB0 aGUgdmFyaWFudCBvZiB0aGUgRnJhbWUgb2YgUmVmZXJlbmNlIHdpdGggRGVsdGEKKyAqIGNv bnRhaW5lciBhbmQgY29ycmVzcG9uZGluZyBhbGdvcml0aG1zLgorICoKKyAqIFRoZSB0eXBl IG9mIG9yaWdpbmFsIGl0ZW1zIGlzIGRlZmluZWQgd2l0aCB0aGUgaXRlbV90IG1hY3JvLiBp dGVtX3QgbXVzdCBiZQorICogYW4gdW5zaWduZWQgaW50ZWdlciAodWludDhfdCwgdWludDE2 X3QsIC4uLiB1aW50NjRfdCkKKyAqCisgKiBFYWNoIGJpdCB2ZWN0b3IsIGhhdmluZyBiZWVu IHNlcmlhbGlzZWQsIHJlcHJlc2VudHMgbmV4dCBzdHJ1Y3R1cmU6CisgKgorICogfCBkZWx0 YXMgfCBleGNlcHRpb25zIHwgZXhjZXB0aW9ucyBwb3NpdGlvbnMgfAorICoKKyAqIFRoZSBk ZWx0YSBpcyBhIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgY3VycmVudCBpdGVtIGFuZCB0aGUg cHJldmlvdXMgb25lLgorICogVGhlIGRlbHRhIG9mIHRoZSBmaXJzdCBpdGVtICh0aGUgbWVt YmVyIGhhdmluZyB0aGUgemVybyBpbmRleCkgaXMgaXRzIGFjdHVhbAorICogdmFsdWU6IGRl bHRhWzBdID0gbVswXS0wID0gbVswXS4gQSBoYXZpbmcgc2VyaWFsaXNlZCBkZWx0YSBpcyBh IHNlcXVlbmNlIG9mCisgKiBiaXRzLiBFYWNoIHNlcmlhbGlzZWQgZGVsdGEgaW4gJ2RlbHRh cycgaGFzIGEgZml4ZWQgYml0IHdpZHRoLiBJZiB0aGUgZGVsdGEncworICogd2lkdGggZXhj ZWVkcyB0aGUgYWxsb3dlZCBzaXplIG9mIGEgZGVsdGEgaW4gJ2RlbHRhcycsIHRoZSBoaWdo ZXIgYml0cyBvZiB0aGlzCisgKiBkZWx0YSBpcyBwdXQgaW50byBleGNlcHRpb25zLgorICov CisKKyNpbmNsdWRlICJsaWIvZGZvcl90ZW1wbF9zdGFwbGUuaCIKKworaW50IGRmb3JfY2Fs Y19kZWx0YXMoc2l6ZV90IGNudCwgY29uc3QgaXRlbV90IGFycltdLCB2ZWN0X3QgKnZEZWx0 YXMsCisJCQkJCSB1bmlxc29ydHZlY3RfdCAqdXN2RGVsdGFXaWR0aHMsCisJCQkJCSB2ZWN0 X3QgKnZXaWR0aENvdW50ZXJzKTsKKworaW50IGRmb3JfY2FsY193aWR0aChzaXplX3QgY250 RGVsdGEsCisJCQkJCWNvbnN0IHVuaXFzb3J0dmVjdF90ICp1c3ZEZWx0YVdpZHRocywKKwkJ CQkJY29uc3QgdmVjdF90ICp2V2lkdGhDb3VudGVycywgc2l6ZV90ICp3aWR0aCwKKwkJCQkJ c2l6ZV90ICpjbnRFeGNlcHRpb25zKTsKKworaW50IGRmb3JfYW5hbHl6ZShzaXplX3QgY250 LCBjb25zdCBpdGVtX3QgYXJyW10sCisJCQkgZGZvcl9tZXRhX3QgKmRmb3IsIHZlY3RfdCAq dkRlbHRhcywKKwkJCSB1bmlxc29ydHZlY3RfdCAqdXN2RXhjUG9zKTsKKworaW50IGRmb3Jf cGFjayhzaXplX3QgY250LCBjb25zdCBpdGVtX3QgYXJyW10sIGV4Y2FsZ190IGlzRXhjVXNh Z2UsCisJCQkgIGRmb3JfbWV0YV90ICpkZm9yLCBzaXplX3QgYnVmU2l6ZSwgdWludDhfdCBi dWZbXSk7CisKK2ludCBkZm9yX3VucGFjayhjb25zdCBkZm9yX21ldGFfdCAqZGZvciwgdW5p cXNvcnR2ZWN0X3QgKnZWYWxzLCBzaXplX3QgYnVmU2l6ZSwKKwkJCQl1aW50OF90IGJ1Zltd KTsKKwordm9pZCBkZm9yX2NsZWFyX21ldGEoZGZvcl9tZXRhX3QgKmRmb3IpOworCitkZm9y X3N0YXRzX3QgZGZvcl9jYWxjX3N0YXRzKGRmb3JfbWV0YV90IGRmb3IpOworCitzaXplX3Qg ZGZvcl9jYWxjX25ieXRlcyhkZm9yX21ldGFfdCBkZm9yKTsKKworLyoKKyAqIENhbGN1bGF0 ZSBkZWx0YXMKKyAqCisgKiB2V2lkdGhDb3VudGVycyBiZWluZyBlcXVhbCB0byBOVUxMIG1l YW5zICdEb24ndCBjYWxjdWxhdGUgY291bnRzIG9mIHdpZHRocycuCisgKiBJbiB0aGlzIGNh c2UgdXN2RGVsdGFXaWR0aCBjb21wcmlzZSBvbmx5IG9uZSBtZW1iZXIgbVswXSB3aGljaCBz YXZlcyBtYXgKKyAqIHdpZHRoIG9mIGRlbHRhLCB3aGljaCBjYW4gYmUgdXNlZCBieSBjYWxs ZXIuCisgKgorICovCitpbnQKK2Rmb3JfY2FsY19kZWx0YXMoc2l6ZV90IGNudCwgY29uc3Qg aXRlbV90IGFycltdLCB2ZWN0X3QgKnZEZWx0YXMsCisJCQkJIHVuaXFzb3J0dmVjdF90ICp1 c3ZEZWx0YVdpZHRocywgdmVjdF90ICp2V2lkdGhDb3VudGVycykKK3sKKwlpdGVtX3QgZGVs dGE7CisJaXRlbV90IHByZXY7IC8qIHZhbHVlIG9mIHByZXZpb3VzIG51bWJlciovCisJc2l6 ZV90IHdpZHRoOworCXVzdl9pbnNfcmVzX3QgaW5zV2lkdGhJbnNlcnQ7CisKKwlpZiAodkRl bHRhcyA9PSBOVUxMKQorCQlyZXR1cm4gLTE7CisKKwlpZiAodldpZHRoQ291bnRlcnMgPT0g TlVMTCkKKwkJdXN2X2luc2VydCh1c3ZEZWx0YVdpZHRocywgMCk7CisKKwlwcmV2ID0gMDsK Kwlmb3IgKHNpemVfdCBqID0gMDsgaiA8IGNudDsgaisrKSB7CisJCWRlbHRhID0gYXJyW2pd IC0gcHJldjsKKwkJdmVjdF9hcHBlbmQodkRlbHRhcywgZGVsdGEpOworCQlwcmV2ID0gYXJy W2pdOworCQl3aWR0aCA9IHdpZHRoX2Zyb21fdmFsKGRlbHRhKTsKKworCQlpZiAodldpZHRo Q291bnRlcnMgPT0gTlVMTCkgeworCQkJaWYgKHVzdkRlbHRhV2lkdGhzLT5tWzBdIDwgd2lk dGgpCisJCQkJdXN2RGVsdGFXaWR0aHMtPm1bMF0gPSB3aWR0aDsKKwkJfSBlbHNlIHsKKwkJ CWluc1dpZHRoSW5zZXJ0ID0gdXN2X2luc2VydCh1c3ZEZWx0YVdpZHRocywgd2lkdGhfZnJv bV92YWwoZGVsdGEpKTsKKworCQkJaWYgKGluc1dpZHRoSW5zZXJ0LnN0ID09IFVTVl9JTlNf TkVXKQorCQkJCXZlY3RfaW5zZXJ0KHZXaWR0aENvdW50ZXJzLCBpbnNXaWR0aEluc2VydC5w b3MsIChpdGVtX3QpMSk7CisJCQllbHNlIGlmIChpbnNXaWR0aEluc2VydC5zdCA9PSBVU1Zf SU5TX0VYSVNUUykKKwkJCQl2V2lkdGhDb3VudGVycy0+bVtpbnNXaWR0aEluc2VydC5wb3Nd Kys7CisJCQllbHNlCisJCQkJcmV0dXJuIC0xOworCQl9CisJfQorCXJldHVybiAwOworfQor CisvKgorICogQ2FsY3VsYXRlIHdpZHRoIG9mIHNob3J0IGRlbHRhcywgd2lkdGggb2YgZXhj ZXB0aW9ucywgYW5kIG51bWJlciBvZgorICogZXhjZXB0aW9ucworICovCitpbnQKK2Rmb3Jf Y2FsY193aWR0aChzaXplX3QgY250RGVsdGEsIGNvbnN0IHVuaXFzb3J0dmVjdF90ICp1c3ZE ZWx0YVdpZHRocywKKwkJCQljb25zdCB2ZWN0X3QgKnZXaWR0aENvdW50ZXJzLCBzaXplX3Qg KndpZHRoLAorCQkJCXNpemVfdCAqY250RXhjZXB0aW9ucykKK3sKKyNkZWZpbmUgTUlOX0RF TFRBU19RVUFOVElUWV9BTExPV0lOR19FWENFUFRJT05TIDQKKworCXNpemVfdCBjbnRTaG9y dERlbHRhczsgLyogbnVtYmVyIG9mIGRlbHRhcyBwcmVzZW50ZWQgd2l0aG91dCBleGNlcHRp b25zICovCisJc2l6ZV90IGluZHhXaWR0aDsJLyogdGhlIHdpZHRoIG9mIHNob3J0IGRlbHRh cyAoaW5kZXggZnJvbSB2V2lkdGhDb3VudGVycworCQkJCQkJICogKGFuZCBmcm9tIHZEZWx0 YVdpZHRoIGFjY29yZGluZ2x5KQorCQkJCQkJICovCisJaWYgKHVzdkRlbHRhV2lkdGhzID09 IE5VTEwgfHwgdldpZHRoQ291bnRlcnMgPT0gTlVMTCB8fCB3aWR0aCA9PSBOVUxMIHx8CisJ CWNudEV4Y2VwdGlvbnMgPT0gTlVMTCkKKwkJcmV0dXJuIC0xOworCisJY250U2hvcnREZWx0 YXMgPSBjbnREZWx0YTsKKwlpbmR4V2lkdGggPSB1c3ZEZWx0YVdpZHRocy0+Y250IC0gMTsg LyogY291bnRlciBpbnRvIGluZGV4ICovCisJKmNudEV4Y2VwdGlvbnMgPSAwOworCisJLyoK KwkgKiBIZXJlIHdlIHRyeSB0byBkZWNyZWFzZSB0aGUgd2lkdGggb2Ygc2hvcnQgZGVsdGFz IGluIG9yZGVyIHRvIGNvbXByZXNzCisJICogdGhlIGFycmF5IG9mIGRlbHRhcyBpbiB0aGUg bWVhbnRpbWUgd2UgYXJlIGVhZ2VyIHRvIGNvdmVyIG5vIGxlc3MgdGhhbgorCSAqIDkwJSBv ZiBkZWx0YXMgd2UgaGF2ZS4gSXQgaXMgYW4gaGV1cmlzdGljIGFuYWx5c2lzIGJhc2VkIG9u IHRoZQorCSAqIHN1Z2dlc3Rpb24gIm5vIGxlc3MgdGhhbiA5MCUgb2YgZGVsdGFzIHdlIGhh dmUiLgorCSAqCisJICogVE9ETzogYW5hbHl6aW5nIHdlIG1pZ2h0IHdhbnQgY2FsdWxhdGUg dGhlIGZ1bGwgc2l6ZSBvZiB0aGUgcGFjayBmb3IgZWFjaAorCSAqIHZhcmlhbnQgb2YgdGhl IHdpZHRoLgorCSAqLworCWlmIChjbnREZWx0YSA+PSBNSU5fREVMVEFTX1FVQU5USVRZX0FM TE9XSU5HX0VYQ0VQVElPTlMpIHsKKwkJc2l6ZV90IHN6TWluQ292ZXJhZ2U7IC8qIHRocmVz aG9sZCAqLworCQlzaXplX3QgajsKKworCQlpZiAoY250RGVsdGEgPj0gMTApCisJCQlzek1p bkNvdmVyYWdlID0gY250RGVsdGEgLSBjbnREZWx0YSAvIDEwOworCQllbHNlCisJCQlzek1p bkNvdmVyYWdlID0gY250RGVsdGEgLSAxOworCisJCWogPSBpbmR4V2lkdGg7CisKKwkJd2hp bGUgKGogPiAwKSB7CisJCQlpZiAoY250U2hvcnREZWx0YXMgLSB2V2lkdGhDb3VudGVycy0+ bVtqXSA8IHN6TWluQ292ZXJhZ2UpCisJCQkJYnJlYWs7CisKKwkJCWNudFNob3J0RGVsdGFz IC09IHZXaWR0aENvdW50ZXJzLT5tW2pdOworCQkJai0tOworCQkJaW5keFdpZHRoID0gajsK KwkJfQorCQkqY250RXhjZXB0aW9ucyA9IGNudERlbHRhIC0gY250U2hvcnREZWx0YXM7CisJ fQorCisJKndpZHRoID0gdXN2RGVsdGFXaWR0aHMtPm1baW5keFdpZHRoXTsKKwlyZXR1cm4g MDsKK30KKworLyoKKyAqIGRmb3JfYW5hbHl6ZQorICogQW5hbHl6ZSBpbnB1dCBhcnJheSwg Y2FsY3VsYXRlIGRlbHRhcyBhbmQgdGhlaXIgd2lkdGgsIGRlZmluZSBleGNlcHRpb25zIGFu ZAorICogdGhlaXIgcG9zaXRpb25zLiBSZXR1cm5zIHRoZW0gdGhyb3VnaCB0aGUgZGZvciwg dkRlbHRhcywgdXN2RXhjUG9zLiBJZgorICogdXN2RXhjUG9zID09IE5VTEwgLSBkb24ndCBj YWxjdWxhdGUgZXhjZXB0aW9ucy4KKyAqCisgKiBkZm9yX2FuYWx5emUgZnVuY3Rpb24gZG9l cyBub3QgdXNlIGR5bmFtaWMgbWVtb3J5IGFsbG9jYXRpb24gZm9yIGl0cworICogbG9jYWwg Y29udGFpbmVycy4KKyAqCisgKiBBIGNhbGxlciBoYXMgdG8gY29udHJvbCB3aGV0aGVyIHZE ZWx0YXMgYW5kIHVzdkV4Y1BvcyB1c2Ugb3V0ZXIgbWVtb3J5CisgKiBwcm92aWRlZCBieSBj YWxsZXIgb3IgbWFuYWdlIG1lbW9yeSBhbGxvY2F0aW9uIGF1dG9tYXRpY2FsbHksIHdoaWNo IGRlZmluZXMKKyAqIHdoZXRoZXIgdmVjdF9pbnNlcnQgYW5kIHZlY3RfYXBwZW5kIGZ1bmN0 aW9ucywgaW52b2tlZCBmcm9tIGhlcmUsIHVzZSBkeW5hbWljCisgKiBtZW1vcnkgb3Igbm90 LgorICoKKyAqIEEgY2FsbGVyIHNob3VsZCB0YWtlIGludG8gYWNjb3VudCB0aGF0IGRmb3Jf bWV0YV90IGRmb3IgYXJlIGdvaW5nIHRvIGJlCisgKiBudWxsaWZpZWQgaW4gdGhpcyBmdW5j dGlvbiwgc28gaXQgc2hvdWxkIG5vdCBoYXZlIGFueSBtZWFuaW5nZnVsbCBkYXRhIGJ5Cisg KiBzdGFydCBvZiBkZm9yX2FuYWx5emUsIGVzcGVjaWFsbHkgaXRzIHBhY2sgZmllbGQgc2hv dWxkIG5vdCBiZSB1c2VkIGFzIGEKKyAqIHBvaW50ZXIgb24gZHluYW1pYyBtZW1vcnksIG90 aGVyd2lzZSBtZW1vcnkgbGVha2FnZSBpcyBwb3NzaWJsZS4KKyAqCisgKi8KK2ludAorZGZv cl9hbmFseXplKHNpemVfdCBjbnQsIGNvbnN0IGl0ZW1fdCBhcnJbXSwgLyogaW5wdXQgKi8K KwkJCSBkZm9yX21ldGFfdCAqZGZvciwgdmVjdF90ICp2RGVsdGFzLAorCQkJIHVuaXFzb3J0 dmVjdF90ICp1c3ZFeGNQb3MpIC8qIG91dHB1dCAqLworeworI2RlZmluZSBERUxUQV9XSURU SF9NQVhfTlVNQkVSIChzaXplb2YoaXRlbV90KSAqIDgpCisJdW5pcXNvcnR2ZWN0X3QgdXN2 RGVsdGFXaWR0aHM7CisJaXRlbV90IGJ1ZkRlbHRhV2lkdGhbREVMVEFfV0lEVEhfTUFYX05V TUJFUl07CisJdmVjdF90IHZXaWR0aENvdW50ZXJzOworCWl0ZW1fdCBidWZXaWR0aENvdW50 ZXJzW0RFTFRBX1dJRFRIX01BWF9OVU1CRVJdOworCWl0ZW1fdCBtYXNrOworCWludCByZXMg PSAtMTsKKworCWV4Y2FsZ190IGlzRXhjVXNhZ2UgPSAodXN2RXhjUG9zID09IE5VTEwpID8g REZPUl9FWENfRE9OVF9VU0UgOgorCQkJCQkJCQkJCQkJREZPUl9FWENfVVNFOworCisJaWYg KGRmb3IgPT0gTlVMTCkKKwkJZ290byBkZm9yX2FuYWx5emVfZXJyb3I7CisKKwltZW1zZXQo ZGZvciwgMCwgc2l6ZW9mKGRmb3JfbWV0YV90KSk7CisKKwlpZiAoY250ID09IDApCisJCS8q IGRmb3ItPml0ZW1fY250ID0gMDsgKi8gLyogaXQncyBiZWVuIGFscmVhZHkgZG9uZSB3aXRo IG1lbXNldCAqLworCQlnb3RvIGRmb3JfYW5hbHl6ZV9yZXQ7CisJZWxzZSBpZiAoYXJyID09 IE5VTEwpCisJCWdvdG8gZGZvcl9hbmFseXplX2Vycm9yOworCisJaWYgKDAgIT0gdmVjdF9p bml0KCZ1c3ZEZWx0YVdpZHRocywgREVMVEFfV0lEVEhfTUFYX05VTUJFUiwgYnVmRGVsdGFX aWR0aCkpCisJCWdvdG8gZGZvcl9hbmFseXplX2Vycm9yOworCisJaWYgKGlzRXhjVXNhZ2Ug PT0gREZPUl9FWENfVVNFKQorCXsKKwkJaWYgKDAgIT0KKwkJCXZlY3RfaW5pdCgmdldpZHRo Q291bnRlcnMsIERFTFRBX1dJRFRIX01BWF9OVU1CRVIsCisJCQkJCSAgYnVmV2lkdGhDb3Vu dGVycykpCisJCQlnb3RvIGRmb3JfYW5hbHl6ZV9lcnJvcjsKKwl9CisKKwlkZm9yLT5pdGVt X2NudCA9IGNudDsKKworCWlmICgwICE9CisJCWRmb3JfY2FsY19kZWx0YXMoZGZvci0+aXRl bV9jbnQsIGFyciwgdkRlbHRhcywgJnVzdkRlbHRhV2lkdGhzLAorCQkJCQkJIChpc0V4Y1Vz YWdlID09IERGT1JfRVhDX1VTRSkgPyAmdldpZHRoQ291bnRlcnMgOiBOVUxMKSkKKwkJZ290 byBkZm9yX2FuYWx5emVfZXJyb3I7CisKKwlBc3NlcnQoY250ID09IHZEZWx0YXMtPmNudCk7 CisJQXNzZXJ0KHVzdkRlbHRhV2lkdGhzLmNudCA+IDApOworCisJaWYgKGlzRXhjVXNhZ2Ug PT0gREZPUl9FWENfVVNFKQorCXsKKwkJaWYgKDAgIT0KKwkJCWRmb3JfY2FsY193aWR0aCh2 RGVsdGFzLT5jbnQsICZ1c3ZEZWx0YVdpZHRocywgJnZXaWR0aENvdW50ZXJzLAorCQkJCQkJ CSZkZm9yLT5kZWx0YV93aWQsICZkZm9yLT5leGNfY250KSkKKwkJCWdvdG8gZGZvcl9hbmFs eXplX2Vycm9yOworCX0KKwllbHNlCisJeworCQlkZm9yLT5kZWx0YV93aWQgPQorCQkJdXN2 RGVsdGFXaWR0aHMubVt1c3ZEZWx0YVdpZHRocy5jbnQgLSAxXTsgLyogbWF4IHdpZHRoICov CisJCWRmb3ItPmV4Y19jbnQgPSAwOworCX0KKworCWRmb3ItPmV4Y193aWQgPSB1c3ZEZWx0 YVdpZHRocy5tW3VzdkRlbHRhV2lkdGhzLmNudCAtIDFdIC0gZGZvci0+ZGVsdGFfd2lkOwor CisJLyogQSBtYXNrIGxvb2tzIGxpa2UgMDAwMTExMS4gSXQgaXMgYWxzbyB0aGUgbWF4IHZh bHVlIG9mIGEgc2hvcnQgZGVsdGEgKi8KKwltYXNrID0gd2lkdGhfdG9fbWFzayhkZm9yLT5k ZWx0YV93aWQpOworCisJZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2RGVsdGFzLT5jbnQ7IGkr KykKKwl7CisJCWlmICh2RGVsdGFzLT5tW2ldID4gbWFzaykKKwkJeworCQkJQXNzZXJ0KGlz RXhjVXNhZ2UgPT0gREZPUl9FWENfVVNFKTsKKwkJCWlmICgwICE9IHZlY3RfYXBwZW5kKHVz dkV4Y1BvcywgKGl0ZW1fdClpKSkKKwkJCQlnb3RvIGRmb3JfYW5hbHl6ZV9lcnJvcjsKKwkJ fQorCX0KKwlBc3NlcnQoZGZvci0+ZGVsdGFfd2lkICsgZGZvci0+ZXhjX3dpZCA8PSBzaXpl b2YoaXRlbV90KSAqIDgpOworCXJlcyA9IDA7CitkZm9yX2FuYWx5emVfcmV0OgorCXJldHVy biByZXM7CitkZm9yX2FuYWx5emVfZXJyb3I6CisJLyogZGZvcl9hbmFseXplIGRvZXNuJ3Qg YWZmZWN0IHRoZSBwYWNrIGZpZWxkIChkb2Vzbid0IGFsbG9jYXRlLCBkZWxldGUgb3IKKwkg KiBvdGhlcndpc2UpLCBzbyB3ZSBjYW4gbnVsbGlmeSB0aGUgd2hvbGUgZGZvciBhbmQgaXQK KwkgKiBpcyBzYWZlLCBubyBsZWFrYWdlICovCisJbWVtc2V0KGRmb3IsIDAsIHNpemVvZihk Zm9yX21ldGFfdCkpOworCXJlcyA9IC0xOworCWdvdG8gZGZvcl9hbmFseXplX3JldDsKK30K KworLyoKKyAqIGRmb3JfcGFjaworICoKKyAqIFRoZSBpbnB1dCBhcnJheSBhcnIgaGFzIHRv IGJlIHNvcnRlZC4KKyAqCisgKiBJZiBhIGNhbGxlciBuZWVkcyB0byBhdm9pZCB1c2luZyBk eW5hbWljIG1lbW9yeSBhbGxvY2F0aW9uLCB0aGV5IGhhdmUgdG8KKyAqIHByb3ZpZGUgdGhl IGV4dGVybmFsIG1lbW9yeSBidWZmZXIuIFRoZSBzaXplIG9mIHRoaXMgYnVmZmVyIHNob3Vs ZCBiZSBub3QKKyAqIGxlc3MgdGhhbiA0ICogY250ICogc2l6ZW9mKGl0ZW1fdCkuIEl0IHdp bGwgYmUgdXNlZCBmb3IgYXJyYXlzIHBvaW50ZWQgYnkKKyAqICooZGZvci0+cGFjayksICoo dkRlbHRhcy0+bSksICoodkV4Y1Bvc0RlbHRhcy0+bSksICoodXN2RXhjUG9zLT5tKS4KKyAq CisgKiBJZiBkeW5hbWljIGFsbG9jYXRpb24gaGFzIGJlZW4gdXNlZCBieSB0aGUgZGZvcl9w YWNrLCBhIGNhbGxlciBoYXMgdG8gZnJlZQorICogdGhlIHBpZWNlIG9mIG1lbW9yeSBwb2lu dGVkIGJ5IGRmb3ItPnBhY2ssIHNpbmNlIGl0IGlzIGFsb2NhdGVkIGJ5IHRoZQorICogZGZv cl9wYWNrIHdpdGggREZPUl9NQUxMT0MuIEZyZWVpbmcgaGFzIHRvIGJlIHBlcmZvcm1lZCBi eSBmdW5jdGlvbgorICogY29uZm9ybWluZyB0byBERk9SX01BTExPQyAocGFpcmVkIHdpdGgg aXQpLiBGb3IgaW5zdGFuY2UsIGlmIERGT1JfTUFMTE9DIGlzCisgKiBtYWxsb2MsIHRoYW4g bWVtb3J5IHNob3VsZCBiZSBmcmVlZCBieSBmcmVlLgorICovCitpbnQKK2Rmb3JfcGFjayhz aXplX3QgY250LCBjb25zdCBpdGVtX3QgYXJyW10sIGV4Y2FsZ190IGlzRXhjVXNhZ2UsCisJ CSAgZGZvcl9tZXRhX3QgKmRmb3IsIHNpemVfdCBidWZTaXplLCB1aW50OF90IGJ1ZltdKQor eworCWludCByZXM7CisJdmVjdF90IHZEZWx0YXMgPSB7IDAgfTsKKwl2ZWN0X3QgdkV4Y1Bv c0RlbHRhcyA9IHsgMCB9OworCXVuaXFzb3J0dmVjdF90IHVzdkV4Y1BvcyA9IHsgMCB9Owor CisJaWYgKGRmb3IgPT0gTlVMTCB8fAorCQkoYnVmU2l6ZSAhPSAwICYmIGJ1ZlNpemUgPCA0 ICogY250ICogc2l6ZW9mKGl0ZW1fdCkpKQorCXsKKwkJZ290byBkZm9yX3BhY2tfZXJyb3I7 CisJfQorCisJLyoKKwkgKiBXZSBkb24ndCBuZWVkIGl0IGhlcmU6CisJICogCQkJbWVtc2V0 KGRmb3IsIDAsIHNpemVvZihkZm9yX21ldGFfdCkpLgorCSAqIEl0IGlzIGdvaW5nIHRvIGJl IGRvbmUgaW4gZGZvcl9hbmFseXplLgorCSAqLworCisJeworCQlpdGVtX3QgKmRlbHRhQnVm ID0gTlVMTDsKKwkJaXRlbV90ICpleGNQb3NEZWx0YXNCdWYgPSBOVUxMOworCQlpdGVtX3Qg KmV4Y1Bvc0J1ZiA9IE5VTEw7CisKKwkJaW50IHJlczEgPSAwOworCQlpbnQgcmVzMiA9IDA7 CisJCWludCByZXMzID0gMDsKKworCQlpZiAoYnVmU2l6ZSAhPSAwKQorCQl7CisJCQkvKiBT dGVwIG92ZXIgdGhlIG1heGltYWwgYWxsb3dlZCBERm9SIHBhY2sgc2l6ZSAqLworCQkJZGVs dGFCdWYgICAgICAgID0gKGl0ZW1fdCopKGJ1ZiArIGNudCAqIHNpemVvZihpdGVtX3QpKTsK KwkJCWV4Y1Bvc0RlbHRhc0J1ZiA9IChpdGVtX3QqKShidWYgKyBjbnQgKiBzaXplb2YoaXRl bV90KSAqIDIpOworCQkJZXhjUG9zQnVmICAgICAgID0gKGl0ZW1fdCopKGJ1ZiArIGNudCAq IHNpemVvZihpdGVtX3QpICogMyk7CisJCX0KKworCQkvKiBTZXR1cCBjb250YWluZXJzIHdp dGggb3V0ZXIgbWVtb3J5ICovCisJCXJlczEgPSB2ZWN0X2luaXQoJnZEZWx0YXMsIGNudCwg ZGVsdGFCdWYpOworCisJCWlmIChpc0V4Y1VzYWdlKQorCQl7CisJCQlyZXMyID0gdmVjdF9p bml0KCZ2RXhjUG9zRGVsdGFzLCBjbnQsIGV4Y1Bvc0RlbHRhc0J1Zik7CisJCQlyZXMzID0g dmVjdF9pbml0KCZ1c3ZFeGNQb3MsIGNudCwgZXhjUG9zQnVmKTsKKwkJfQorCisJCWlmIChy ZXMxICE9IDAgfHwgcmVzMiAhPSAwIHx8IHJlczMgIT0gMCkKKwkJCWdvdG8gZGZvcl9wYWNr X2Vycm9yOworCX0KKworCWlmICgwICE9CisJCWRmb3JfYW5hbHl6ZShjbnQsIGFyciwgZGZv ciwgJnZEZWx0YXMsCisJCQkJCSAoaXNFeGNVc2FnZSA9PSBERk9SX0VYQ19VU0UpID8gJnVz dkV4Y1BvcyA6IE5VTEwpKQorCQlnb3RvIGRmb3JfcGFja19lcnJvcjsKKworCWlmIChkZm9y LT5leGNfY250ICE9IDApCisJeworCQkvKiBXZSB0cmVhdCBleGNlcHRpb24gcG9zaXRpb25z IGFzIGEgc29ydGVkIHNlcXVlbmNlLCBhcHBseSB0aGUKKwkJICogREZvUiBhbGdvcml0aG0g dG8gaXQsIGFuZCBzYXZlIG5vdCB0aGVpciBhYnNvbHV0ZSB2YWx1ZXMgYnV0IHRoZWlyCisJ CSAqIGRlbHRhcy4gKi8KKwkJZGZvcl9tZXRhX3QgZGZvckV4Y1BvczsKKwkJQXNzZXJ0KGRm b3ItPmV4Y19jbnQgPT0gdXN2RXhjUG9zLmNudCk7CisJCWlmICgwICE9CisJCQlkZm9yX2Fu YWx5emUodXN2RXhjUG9zLmNudCwgdXN2RXhjUG9zLm0sICZkZm9yRXhjUG9zLAorCQkJCQkJ ICZ2RXhjUG9zRGVsdGFzLCBOVUxMKSkKKwkJCWdvdG8gZGZvcl9wYWNrX2Vycm9yOworCisJ CUFzc2VydChkZm9yLT5leGNfY250ID09IHZFeGNQb3NEZWx0YXMuY250KTsKKwkJQXNzZXJ0 KGRmb3ItPmV4Y19jbnQgPT0gZGZvckV4Y1Bvcy5pdGVtX2NudCk7CisKKwkJZGZvci0+ZXhj X3Bvc193aWQgPSBkZm9yRXhjUG9zLmRlbHRhX3dpZDsKKwl9CisJZWxzZQorCXsKKwkJQXNz ZXJ0KHVzdkV4Y1Bvcy5jbnQgPT0gMCk7IC8qIHVzdkV4Y1BvcyBoYXMgdG8gcmVtYWluIHpl cm9lZC4gKi8KKwkJQXNzZXJ0KGRmb3ItPmV4Y193aWQgPT0gMCk7IC8qIE5vIGV4Y2VwdGlv bnMsIG5vIGV4Y2VwdGlvbnMnIHdpZHRoLiAqLworCQlBc3NlcnQoZGZvci0+ZXhjX3Bvc193 aWQgPT0gMCk7IC8qIE5vIGV4Y2VwdGlvbnMnIHBvc2l0aW9ucyB3aWR0aCB0b28uICovCisJ fQorCisJLyogZGZvcl9wYWNrIHNlcmlhbGlzYXRpb24gcGFja2luZyAqLworCXsKKwkJLyog aW5kZXggb2YgdGhlIG5leHQgZnJlZSBiaXQgdG8gYmUgdXNlZDogKi8KKwkJc2l6ZV90IGQ7 IC8qIC0gYnkgYSBkZWx0YSAqLworCQlzaXplX3QgZTsgLyogLSBieSBhbiBleGNlcHRpb24g Ki8KKwkJc2l6ZV90IHA7IC8qIC0gYnkgYW4gZXhjZXB0aW9uIHBvc2l0aW9uICovCisJCWl0 ZW1fdCBtYXNrOworCQlkZm9yX3N0YXRzX3Qgc3RhdHM7CisJCXNpemVfdCBqOworCisJCXN0 YXRzID0gZGZvcl9jYWxjX3N0YXRzKCpkZm9yKTsKKwkJZGZvci0+bmJ5dGVzID0gZGZvcl9j YWxjX25ieXRlcygqZGZvcik7CisKKwkJaWYgKGJ1ZlNpemUgIT0gMCkKKwkJeworCQkJLyog TWF4IHNpemUgb2YgdGhlIGRmb3ItPnBhY2sgaXMgY250ICogc2l6ZW9mKHNpemVfdCkgKi8K KwkJCWRmb3ItPnBhY2sgPSBidWY7CisJCQlkZm9yLT5vdXRlcl9tZW0gPSB0cnVlOworCQkJ aWYgKGRmb3ItPm5ieXRlcyA+IGNudCAqIHNpemVvZihzaXplX3QpKQorCQkJCWdvdG8gZGZv cl9wYWNrX2Vycm9yOworCQl9CisJCWVsc2UKKwkJeworCQkJLyogSWYgYSBidWZmZXIgd2Fz IG5vdCBwcm92aWRlZCBieSBjYWxsZXIgd2UgYWxsb2NhdGUgaXQgYnkKKwkJCSAqIG91cnNl bHZlcworCQkJICovCisJCQlkZm9yLT5wYWNrID0gKHVpbnQ4X3QgKilERk9SX01BTExPQygo ZGZvci0+bmJ5dGVzKSk7CisKKwkJCWRmb3ItPm91dGVyX21lbSA9IGZhbHNlOworCQl9CisK KwkJaWYgKGRmb3ItPnBhY2sgPT0gTlVMTCkKKwkJCWdvdG8gZGZvcl9wYWNrX2Vycm9yOwor CisJCW1lbXNldChkZm9yLT5wYWNrLCAwLCBkZm9yLT5uYnl0ZXMpOworCisJCS8qIGluZGV4 IG9mIHRoZSBuZXh0IGZyZWUgYml0IHRvIGJlIHVzZWQ6ICovCisJCWQgPSAwOwkJCSAgIC8q IC0gYnkgYSBkZWx0YSAqLworCQllID0gc3RhdHMuZGVsdGFfcGFja19uYml0czsgICAvKiAt IGJ5IGFuIGV4Y2VwdGlvbiAqLworCQlwID0gZSArIHN0YXRzLmV4Y19wYWNrX25iaXRzOyAv KiAtIGJ5IGFuIGV4Y2VwdGlvbiBwb3NpdGlvbiBpbmRleCAqLworCQkvKiBBIG1hc2sgbG9v a3MgbGlrZSAwMDAxMTExLiBJdCBpcyBhbHNvIHRoZQorCQkgKiBtYXggdmFsdWUgb2YgYSBz aG9ydCBkZWx0YSAqLworCQltYXNrID0gd2lkdGhfdG9fbWFzayhkZm9yLT5kZWx0YV93aWQp OworCisJCWogPSAwOworCQlmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZEZWx0YXMuY250OyBp KyspCisJCXsKKwkJCWQgPSBiaXRwYWNrX3BhY2soZGZvci0+cGFjaywgZCwgdkRlbHRhcy5t W2ldICYgbWFzaywKKwkJCQkJCQkgZGZvci0+ZGVsdGFfd2lkKTsKKworCQkJaWYgKHZEZWx0 YXMubVtpXSA+IG1hc2spCisJCQl7CisJCQkJQXNzZXJ0KGlzRXhjVXNhZ2UgPT0gREZPUl9F WENfVVNFKTsKKwkJCQlBc3NlcnQodXN2RXhjUG9zLm1bal0gPT0gaSk7CisJCQkJQXNzZXJ0 KGogPCB1c3ZFeGNQb3MuY250KTsKKwkJCQlBc3NlcnQoaiA8IHZFeGNQb3NEZWx0YXMuY250 KTsKKwkJCQlBc3NlcnQoZGZvci0+ZXhjX3dpZCAhPSAwKTsKKwkJCQlBc3NlcnQoZGZvci0+ ZXhjX3Bvc193aWQgIT0gMCk7CisKKwkJCQllID0gYml0cGFja19wYWNrKGRmb3ItPnBhY2ss IGUsIHZEZWx0YXMubVtpXSA+PiBkZm9yLT5kZWx0YV93aWQsCisJCQkJCQkJCSBkZm9yLT5l eGNfd2lkKTsKKwkJCQlwID0gYml0cGFja19wYWNrKGRmb3ItPnBhY2ssIHAsIHZFeGNQb3NE ZWx0YXMubVtqXSwgZGZvci0+ZXhjX3Bvc193aWQpOworCQkJCWorKzsKKwkJCX0KKwkJfQor CisJCWlmIChpc0V4Y1VzYWdlID09IERGT1JfRVhDX1VTRSkKKwkJCUFzc2VydChqID09IHVz dkV4Y1Bvcy5jbnQpOworCQllbHNlCisJCQlBc3NlcnQoaiA9PSAwKTsKKworCQlBc3NlcnQo ZCA9PSBzdGF0cy5kZWx0YV9wYWNrX25iaXRzKTsKKwkJQXNzZXJ0KGUgPT0gc3RhdHMuZGVs dGFfcGFja19uYml0cyArIHN0YXRzLmV4Y19wYWNrX25iaXRzKTsKKwkJQXNzZXJ0KHAgPT0K KwkJCSAgIHN0YXRzLmRlbHRhX3BhY2tfbmJpdHMgKyBzdGF0cy5leGNfcGFja19uYml0cyAr CisJCQkJICAgc3RhdHMuZXhjX3Bvc19wYWNrX25iaXRzKTsKKwkJcmVzID0gMDsKKwl9Citk Zm9yX3BhY2tfcmV0OgorCXZlY3RfY2xlYXIoJnVzdkV4Y1Bvcyk7CisJdmVjdF9jbGVhcigm dkV4Y1Bvc0RlbHRhcyk7CisJdmVjdF9jbGVhcigmdkRlbHRhcyk7CisJcmV0dXJuIHJlczsK K2Rmb3JfcGFja19lcnJvcjoKKwlpZiAoZGZvciAhPSBOVUxMKQorCQlkZm9yX2NsZWFyX21l dGEoZGZvcik7CisJcmVzID0gLTE7CisJZ290byBkZm9yX3BhY2tfcmV0OworfQorCisvKgor ICogZGZvcl91bnBhY2sKKyAqCisgKiBJZiBhIGNhbGxlciBuZWVkcyB0byBhdm9pZCB1c2lu ZyBkeW5hbWljIG1lbW9yeSBhbGxvY2F0aW9uLCB0aGV5IGhhdmUgdG86CisgKiAxKSBwcm92 aWRlIHRoZSBleHRlcm5hbCBtZW1vcnkgYnVmZmVyLiBUaGUgc2l6ZSBvZiB0aGlzIGJ1ZmZl ciBzaG91bGQgYmUgbm90CisgKiAgICBsZXNzIHRoYW46CisgKiAgICAgICAgCTIgKiBkZm9y Lml0ZW1fY250ICogc2l6ZW9mKGl0ZW1fdCkgKyAyICogZGZvci5leGNfY250ICogc2l6ZW9m KGl0ZW1fdCkKKyAqCisgKiAyKSB0aGUgdlZhbHMgdmVjdG9yIGhhcyB0byBiZSBjcmVhdGVk IGJ1dCBtdXN0IG5vdCBiZSBpbml0aWFsaXNlZC4gVGhlCisgKiAgICBkZm9yX3VucGFjayBz ZXRzIHZWYWxzIGluIHRoZSAnb3V0ZXIgbWVtb3J5JyByZWdpbWVuIGFuZCB3aWxsIHNldCB2 VmFsLT5tCisgKiAgICB0byBidWYuCisgKgorICogUHJvdmlkZWQgZHluYW1pYyBhbGxvY2F0 aW9uIGlzIHVzZWQgYnkgdGhlIGRmb3JfdW5wYWNrLCBhIGNhbGxlciB3aWxsIGhhdmUgdG8K KyAqIGZyZWUgdGhlIHBpZWNlIG9mIG1lbW9yeSBwb2ludGVkIGJ5IHZWYWxzLT5tLCB1c2lu ZyB2ZWN0X2NsZWFyKCZ2VmFscykuCisgKgorICogQXJlIHRoZSBvdXRlciBtZW1vcnkgaXMg dXNlZAorICovCitpbnQKK2Rmb3JfdW5wYWNrKGNvbnN0IGRmb3JfbWV0YV90ICpkZm9yLCB1 bmlxc29ydHZlY3RfdCAqdlZhbHMsIHNpemVfdCBidWZTaXplLAorCQkJdWludDhfdCBidWZb XSkKK3sKKwlpbnQgcmVzID0gLTE7CisJc2l6ZV90IHN6RGVsdGFQYWNrOworCXZlY3RfdCB2 RXhjcyA9IHsgMCB9OworCXZlY3RfdCB2RXhjUG9zcyA9IHsgMCB9OworCWV4Y2FsZ190IGlz RXhjVXNhZ2UgPSAoZGZvci0+ZXhjX2NudCA9PSAwKSA/IERGT1JfRVhDX0RPTlRfVVNFIDoK KwkJCQkJCQkJCQkJCSBERk9SX0VYQ19VU0U7CisKKwlpZiAodlZhbHMgPT0gTlVMTCkKKwkJ Z290byBkZm9yX3VucGFja19lcnJvcjsKKworCWlmIChidWZTaXplICE9IDAgJiYKKwkJYnVm U2l6ZSA8ICgyICogZGZvci0+aXRlbV9jbnQgKiBzaXplb2YoaXRlbV90KSArCisJCQkJICAg MiAqIGRmb3ItPmV4Y19jbnQgKiBzaXplb2YoaXRlbV90KSkpCisJCWdvdG8gZGZvcl91bnBh Y2tfZXJyb3I7CisKKwlzekRlbHRhUGFjayA9IGRmb3ItPmRlbHRhX3dpZCAqIGRmb3ItPml0 ZW1fY250OworCisJeworCQl1aW50OF90ICp2YWxzQnVmID0gTlVMTDsKKwkJaWYgKGJ1ZlNp emUgIT0gMCkKKwkJCXZhbHNCdWYgPSBidWY7CisKKwkJaWYgKHZlY3RfaW5pdCh2VmFscywg ZGZvci0+aXRlbV9jbnQsIChpdGVtX3QgKil2YWxzQnVmKSAhPSAwKQorCQkJZ290byBkZm9y X3VucGFja19lcnJvcjsKKwl9CisKKwkvKiBDYWxjdWxhdGUgZXhjZXB0aW9ucyAqLworCWlm IChpc0V4Y1VzYWdlID09IERGT1JfRVhDX1VTRSkKKwl7CisJCXNpemVfdCBzekV4Y1BhY2s7 CisJCXNpemVfdCBjckV4YzsgLyogY2FyZXQgKGN1cnNvcikgKi8KKwkJc2l6ZV90IGNyUG9z OyAvKiBjYXJldCAoY3Vyc29yKSAqLworCisJCXVpbnQ4X3QgKmV4Y0J1ZiA9IE5VTEw7CisJ CXVpbnQ4X3QgKmV4Y1Bvc3NCdWYgPSBOVUxMOworCisJCWludCByZXMxID0gMDsKKwkJaW50 IHJlczIgPSAwOworCisJCXN6RXhjUGFjayA9IGRmb3ItPmV4Y19jbnQgKiBkZm9yLT5leGNf d2lkOworCQljckV4YyA9IHN6RGVsdGFQYWNrOworCQljclBvcyA9IGNyRXhjICsgc3pFeGNQ YWNrOworCisJCWlmIChidWZTaXplICE9IDApCisJCXsKKwkJCS8qIHN0ZXAgb3ZlciB0aGUg bWVtb3J5IG9jY3VwaWVkIGJ5IHZWYWxzICovCisJCQlleGNCdWYgPSBidWYgKyBkZm9yLT5p dGVtX2NudCAqIHNpemVvZihpdGVtX3QpOworCQkJZXhjUG9zc0J1ZiA9IGV4Y0J1ZiArIGRm b3ItPmV4Y19jbnQgKiBzaXplb2YoaXRlbV90KTsKKwkJfQorCisJCXJlczEgPSB2ZWN0X2lu aXQoJnZFeGNzLCBkZm9yLT5leGNfY250LCAoaXRlbV90ICopZXhjQnVmKTsKKwkJcmVzMiA9 IHZlY3RfaW5pdCgmdkV4Y1Bvc3MsIGRmb3ItPmV4Y19jbnQsIChpdGVtX3QgKilleGNQb3Nz QnVmKTsKKworCQlpZiAocmVzMSAhPSAwIHx8IHJlczIgIT0gMCkKKwkJCWdvdG8gZGZvcl91 bnBhY2tfZXJyb3I7CisKKworCQlmb3IgKHNpemVfdCBwb3NFeGMgPSAwLCBqID0gMDsgaiA8 IGRmb3ItPmV4Y19jbnQ7IGorKykKKwkJeworCQkJaXRlbV90IGRlbHRhUG9zOworCQkJcmVz MSA9IHZlY3RfYXBwZW5kKCZ2RXhjcywKKwkJCQkJCQkgICBiaXRwYWNrX3VucGFjayhkZm9y LT5wYWNrLCAmY3JFeGMsCisJCQkJCQkJCQkJCSAgZGZvci0+ZXhjX3dpZCkpOworCQkJLyog Q2FsY3VsYXRlIHRoZSBwb3NpdGlvbiBvZiB0aGUgZXhjZXB0aW9uIGZyb20gdGhlIGRlbHRh IG9mIHRoZQorCQkJICogcG9zaXRpb24gb2YgdGhlIGV4Y2VwdGlvbiAqLworCQkJZGVsdGFQ b3MgPSBiaXRwYWNrX3VucGFjayhkZm9yLT5wYWNrLCAmY3JQb3MsIGRmb3ItPmV4Y19wb3Nf d2lkKTsKKwkJCXBvc0V4YyArPSBkZWx0YVBvczsKKwkJCXJlczIgPSB2ZWN0X2FwcGVuZCgm dkV4Y1Bvc3MsIHBvc0V4Yyk7CisJCQlpZiAocmVzMSAhPSAwIHx8IHJlczIgIT0gMCkKKwkJ CQlnb3RvIGRmb3JfdW5wYWNrX2Vycm9yOworCQl9CisJCUFzc2VydChjckV4YyA9PSBzekRl bHRhUGFjayArIHN6RXhjUGFjayk7CisJCUFzc2VydChjclBvcyA9PQorCQkJICAgc3pEZWx0 YVBhY2sgKyBzekV4Y1BhY2sgKyBkZm9yLT5leGNfcG9zX3dpZCAqIGRmb3ItPmV4Y19jbnQp OworCX0KKworCXsgLyogVW5wYWNrIGRlbHRhcyBhbmQgY2FsY3VsYXRlIHRhcmdldCB2YWx1 ZXMgKi8KKwkJaXRlbV90IG1EZWx0YTsKKwkJaXRlbV90IG1TdW0gPSAwOworCQlzaXplX3Qg aiA9IDA7IC8qIGluZGV4IG9mIGFuIGV4Y2VwdGlvbiBhbmQgaXRzIHBvc2l0aW9uIGluIHZl Y3RvcnMgKi8KKwkJc2l6ZV90IGNyRGVsdGEgPSAwOworCQlmb3IgKHNpemVfdCBpID0gMDsg aSA8IGRmb3ItPml0ZW1fY250OyBpKyspCisJCXsKKwkJCW1EZWx0YSA9IGJpdHBhY2tfdW5w YWNrKGRmb3ItPnBhY2ssICZjckRlbHRhLCBkZm9yLT5kZWx0YV93aWQpOworCisJCQlpZiAo aXNFeGNVc2FnZSA9PSBERk9SX0VYQ19VU0UgJiYKKwkJCQlqIDwgdkV4Y3MuY250ICYmCisJ CQkJaSA9PSB2RXhjUG9zcy5tW2pdKQorCQkJeworCQkJCUFzc2VydChqIDwgZGZvci0+ZXhj X2NudCk7CisJCQkJbURlbHRhIHw9IHZFeGNzLm1bal0gPDwgZGZvci0+ZGVsdGFfd2lkOwor CQkJCWorKzsKKwkJCX0KKwkJCW1TdW0gKz0gbURlbHRhOworCQkJdmVjdF9hcHBlbmQodlZh bHMsIG1TdW0pOworCQl9CisJCUFzc2VydChjckRlbHRhID09IHN6RGVsdGFQYWNrKTsKKwkJ cmVzID0gMDsKKwl9CisKK2Rmb3JfdW5wYWNrX3JldDoKKwl2ZWN0X2NsZWFyKCZ2RXhjUG9z cyk7CisJdmVjdF9jbGVhcigmdkV4Y3MpOworCXJldHVybiByZXM7CitkZm9yX3VucGFja19l cnJvcjoKKwl2ZWN0X2NsZWFyKHZWYWxzKTsKKwlyZXMgPSAtMTsKKwlnb3RvIGRmb3JfdW5w YWNrX3JldDsKK30KKwordm9pZAorZGZvcl9jbGVhcl9tZXRhKGRmb3JfbWV0YV90ICptZXRh KQoreworCWlmIChtZXRhID09IE5VTEwpCisJCXJldHVybjsKKworCWlmIChtZXRhLT5wYWNr ICE9IE5VTEwgJiYgIW1ldGEtPm91dGVyX21lbSkKKwkJREZPUl9GUkVFKG1ldGEtPnBhY2sp OworCisJbWVtc2V0KG1ldGEsIDAsIHNpemVvZihkZm9yX21ldGFfdCkpOworfQorCitkZm9y X3N0YXRzX3QKK2Rmb3JfY2FsY19zdGF0cyhkZm9yX21ldGFfdCBkZm9yKQoreworCWRmb3Jf c3RhdHNfdCBzdGF0OworCXNpemVfdCBuYnl0ZXM7CisJc3RhdC5kZWx0YV9wYWNrX25iaXRz ID0gZGZvci5kZWx0YV93aWQgKiBkZm9yLml0ZW1fY250OworCXN0YXQuZXhjX3BhY2tfbmJp dHMgPSBkZm9yLmV4Y193aWQgKiBkZm9yLmV4Y19jbnQ7CisJc3RhdC5leGNfcG9zX3BhY2tf bmJpdHMgPSBkZm9yLmV4Y19wb3Nfd2lkICogZGZvci5leGNfY250OworCisJc3RhdC5uYml0 cyA9IHN0YXQuZGVsdGFfcGFja19uYml0cyArIHN0YXQuZXhjX3BhY2tfbmJpdHMgKyBzdGF0 LmV4Y19wb3NfcGFja19uYml0czsKKworCS8qIElmIHRoZSBkaXZpc2lvbiByZXN1bHRzIGlu IHRoZSByZW1haW5kZXIsIHdlIHVzZSBhbiBhZGRpdGlvbmFsCisJICogYnl0ZSAqLworCW5i eXRlcyA9IChzdGF0Lm5iaXRzICsgNykgLyA4OworCXN0YXQucmF0aW8gPSAoZmxvYXQpKHNp emVvZihpdGVtX3QpICogZGZvci5pdGVtX2NudCkgLyAoZmxvYXQpbmJ5dGVzOworCisJcmV0 dXJuIHN0YXQ7Cit9CisKK3NpemVfdCBkZm9yX2NhbGNfbmJ5dGVzKGRmb3JfbWV0YV90IGRm b3IpCit7CisJZGZvcl9zdGF0c190IHN0YXQ7CisJc3RhdCA9IGRmb3JfY2FsY19zdGF0cyhk Zm9yKTsKKwlyZXR1cm4gKHN0YXQubmJpdHMgKyA3KSAvIDg7Cit9CisKKyNpbmNsdWRlICJs aWIvZGZvcl90ZW1wbF91bmRlZi5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbGliL2Rm b3JfdTE2LmMgYi9zcmMvYmFja2VuZC9saWIvZGZvcl91MTYuYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZjcwNTFmNTU5MjUKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvYmFja2VuZC9saWIvZGZvcl91MTYuYwpAQCAtMCwwICsxLDggQEAKKy8qCisgKiBG aWxlOiBkZm9yX3UxNi5jCisgKi8KKworLyogY2xhbmctZm9ybWF0IG9mZiAqLworI2luY2x1 ZGUgImxpYi9kZm9yX3UxNl9jb25maWcuaCIKKyNpbmNsdWRlICJkZm9yX3RlbXBsLmMiCisv KiBjbGFuZy1mb3JtYXQgb24gKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2xpYi9tZXNv bi5idWlsZCBiL3NyYy9iYWNrZW5kL2xpYi9tZXNvbi5idWlsZAppbmRleCAwOTg0YmQwZTNm Ni4uN2Y2NzMwZWZiYTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2xpYi9tZXNvbi5idWls ZAorKysgYi9zcmMvYmFja2VuZC9saWIvbWVzb24uYnVpbGQKQEAgLTIsNiArMiw3IEBACiAK IGRmb3Jfc291cmNlcyA9IGZpbGVzKAogICAnYml0cGFja191MTYuYycsCisgICdkZm9yX3Ux Ni5jJywKICAgJ3ZlY3RfdTE2LmMnCiApCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2xp Yi9kZm9yX3RlbXBsLmggYi9zcmMvaW5jbHVkZS9saWIvZGZvcl90ZW1wbC5oCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iNGMxZDQxYzFkMwotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy9pbmNsdWRlL2xpYi9kZm9yX3RlbXBsLmgKQEAgLTAsMCArMSwyNyBA QAorLyoKKyAqIEZpbGU6IGRmb3JfdGVtcGwuaAorICovCisjaW5jbHVkZSAiZGZvcl90ZW1w bF9zdGFwbGUuaCIKKworZXh0ZXJuIGludCBkZm9yX2NhbGNfZGVsdGFzKHNpemVfdCBjbnQs IGNvbnN0IGl0ZW1fdCBhcnJbXSwgdmVjdF90ICp2RGVsdGFzLAorCQkJCQkJCXVuaXFzb3J0 dmVjdF90ICp1c3ZEZWx0YVdpZHRocywKKwkJCQkJCQl2ZWN0X3QgKnZXaWR0aENvdW50ZXJz KTsKKworZXh0ZXJuIGludCBkZm9yX2NhbGNfd2lkdGgoc2l6ZV90IGNudERlbHRhLAorCQkJ CQkJICAgY29uc3QgdW5pcXNvcnR2ZWN0X3QgKnVzdkRlbHRhV2lkdGhzLAorCQkJCQkJICAg Y29uc3QgdmVjdF90ICp2V2lkdGhDb3VudGVycywgc2l6ZV90ICp3aWR0aCwKKwkJCQkJCSAg IHNpemVfdCAqY250RXhjZXB0aW9ucyk7CisKK2V4dGVybiBpbnQgZGZvcl9wYWNrKHNpemVf dCBjbnQsIGNvbnN0IGl0ZW1fdCBhcnJbXSwgZXhjYWxnX3QgaXNFeGNVc2FnZSwKKwkJCQkJ IGRmb3JfbWV0YV90ICpkZm9yLCBzaXplX3QgYnVmU2l6ZSwgdWludDhfdCBidWZbXSk7CisK K2V4dGVybiBpbnQgZGZvcl91bnBhY2soY29uc3QgZGZvcl9tZXRhX3QgKmRmb3IsIHVuaXFz b3J0dmVjdF90ICp2VmFscywKKwkJCQkJICAgc2l6ZV90IGJ1ZlNpemUsIHVpbnQ4X3QgYnVm W10pOworCitleHRlcm4gdm9pZCBkZm9yX2NsZWFyX21ldGEoZGZvcl9tZXRhX3QgKmRmb3Ip OworCitleHRlcm4gZGZvcl9zdGF0c190IGRmb3JfY2FsY19zdGF0cyhkZm9yX21ldGFfdCBk Zm9yKTsKKworZXh0ZXJuIHNpemVfdCBkZm9yX2NhbGNfbmJ5dGVzKGRmb3JfbWV0YV90IGRm b3IpOworCisjaW5jbHVkZSAiZGZvcl90ZW1wbF91bmRlZi5oIgpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvbGliL2Rmb3JfdGVtcGxfc3RhcGxlLmggYi9zcmMvaW5jbHVkZS9saWIvZGZv cl90ZW1wbF9zdGFwbGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uZTkzYzQwYWMwMzQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9saWIvZGZv cl90ZW1wbF9zdGFwbGUuaApAQCAtMCwwICsxLDEyNSBAQAorLyoKKyAqIEZpbGU6IGRmb3Jf c3RhcGxlX3RlbXBsLmgKKyAqLworCisjaW5jbHVkZSAiYy5oIgorCisvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqCisgKiBOT05SRVVTQUJMRSBDT0RFLCBhbGxvd2VkIHRvIGJlIGluY2x1 ZGVkIG9ubHkgb25jZQorICoKKyAqIFRoaXMgY29kZSBzaG91bGQgYXBwZWFyIG9ubHkgb25j ZSBpbiBhIGZpbGUgKG9yIGluIGEgY2hhaW4gb2YgZmlsZXMpCisgKiBpbmNsdWRpbmcgdGhp cyBoZWFkZXIgd2l0aCAjaW5jbHVkZS4gU28sIHdlIHByb3RlY3QgaXQgZnJvbSBkdXBsaWNh dGVzIGJ5CisgKiBtZWFucyBvZiBtYWNybworICoKKyAqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8KKyNpZm5kZWYgX0RGT1JfU1RBUExFX1RFTVBMX0hfVU5JUVVFX0NPREVfCisjZGVmaW5l IF9ERk9SX1NUQVBMRV9URU1QTF9IX1VOSVFVRV9DT0RFXworCit0eXBlZGVmIHN0cnVjdCB7 CisJc2l6ZV90IGl0ZW1fY250OworCXNpemVfdCBkZWx0YV93aWQ7CisJc2l6ZV90IGV4Y19j bnQ7CisJc2l6ZV90IGV4Y193aWQ7CisJc2l6ZV90IGV4Y19wb3Nfd2lkOworCXNpemVfdCBu Ynl0ZXM7IC8qIHNpemUgb2YgcGFjayBpbiBieXRlcyAqLworCXVpbnQ4X3QgKnBhY2s7CisJ Ym9vbCBvdXRlcl9tZW07Cit9IGRmb3JfbWV0YV90OworCit0eXBlZGVmIHN0cnVjdCB7CisJ c2l6ZV90IG5iaXRzOyAgLyogc2l6ZSBvZiBwYWNrIGluIGJpdHMgdXNlZCBpbiBmYWN0ICov CisJc2l6ZV90IGRlbHRhX3BhY2tfbmJpdHM7IC8qIGluIGJpdHMgKi8KKwlzaXplX3QgZXhj X3BhY2tfbmJpdHM7IC8qIGluIGJpdHMgKi8KKwlzaXplX3QgZXhjX3Bvc19wYWNrX25iaXRz OyAvKiBpbiBiaXRzICovCisJZmxvYXQgcmF0aW87ICAvKiBjb21wcmVzc2lvbiByYXRpbyAq LworfSBkZm9yX3N0YXRzX3Q7CisKK3R5cGVkZWYgZW51bSB7CisJREZPUl9FWENfRE9OVF9V U0UgPSAwLAorCURGT1JfRVhDX1VTRSA9IDEKK30gZXhjYWxnX3Q7CisKKyNlbmRpZiAvKiBf REZPUl9TVEFQTEVfVEVNUExfSF9VTklRVUVfQ09ERV8gKi8KKworLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKgorICogRW5kIG9mIENvZGUsIGFsbG93ZWQgdG8gYmUgaW5jbHVkZWQgb25s eSBvbmNlCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKKyAqIFJFVVNBQkxFIENPREUKKyAqCisgKiBUaGlzIGNvZGUgY2FuIGJlIHJl dXNlZCB3aXRoICNpbmNsdWRlIGRpcmVjdGl2ZSBpbiBhIGZpbGUgaWYgREZPUl9NQVJLRVIg aXMKKyAqIHJlZGVmaW5lZC4gVGhpcyBhbGxvd3MgY3JlYXRpb24gb2Ygc2V2ZXJhbCB0eXBl cyBvZiB2ZWN0b3JzIHdpdGggZGlmZmVyZW50CisgKiB0eXBlcyBvZiBtZW1iZXJzLgorICoK KyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBERk9SX0lURU1fVFlQRQor I2Vycm9yICJERk9SX0lURU1fVFlQRSBtYWNybyBpcyBpbmRlZmluZWQuIgorI2VuZGlmCisK KyNpZm5kZWYgREZPUl9NQVJLRVIKKyNlcnJvciAiREZPUl9NQVJLRVIgbWFjcm8gaXMgaW5k ZWZpbmVkLiIKKyNlbmRpZgorCisjaWZuZGVmIERGT1JfTUFMTE9DCisjZXJyb3IgIkRGT1Jf TUFMTE9DIG1hY3JvIGlzIGluZGVmaW5lZC4iCisjZW5kaWYKKworI2lmbmRlZiBERk9SX0ZS RUUKKyNlcnJvciAiREZPUl9GUkVFIG1hY3JvIGlzIGluZGVmaW5lZC4iCisjZW5kaWYKKwor I2RlZmluZSBNQUtFX0hFQURFUl9OQU1FKHYsIG0pIENwcEFzU3RyaW5nMihDcHBDb25jYXQy KHYsIG0pLmgpCisKKy8qCisgKiBIZWFkZXJzIGZyb20gdmVjdCBhbmQgYml0cGFjayB1bml0 cworICoKKyAqIEV4YW1wbGU6IGRmb3JfdTE2LmMgYW5kIGRmb3JfdTE2LmggbmVlZCB2ZWN0 X3UxNi5oIGFuZCBiaXRwYWNrX3UxNi5oCisgKi8KKyNpbmNsdWRlIE1BS0VfSEVBREVSX05B TUUobGliL3ZlY3RfLCBERk9SX01BUktFUikKKyNpbmNsdWRlIE1BS0VfSEVBREVSX05BTUUo bGliL2JpdHBhY2tfLCBERk9SX01BUktFUikKKworLyogVHlwZXMgKi8KKyNkZWZpbmUgaXRl bV90CQkgICBERk9SX0lURU1fVFlQRQorI2RlZmluZSB2ZWN0X3QJCSAgIENwcENvbmNhdFRy aXBsZTIodmVjdF8sIERGT1JfTUFSS0VSLCBfdCkKKyNkZWZpbmUgdW5pcXNvcnR2ZWN0X3Qg Q3BwQ29uY2F0VHJpcGxlMih1bmlxc29ydHZlY3RfLCBERk9SX01BUktFUiwgX3QpCisKKy8q IEZ1bmN0aW9ucyAqLworI2RlZmluZSBkZm9yX2NhbGNfZGVsdGFzIENwcENvbmNhdFRyaXBs ZTIoZGZvcl8sIERGT1JfTUFSS0VSLCBfY2FsY19kZWx0YXMpCisjZGVmaW5lIGRmb3JfY2Fs Y193aWR0aAkgQ3BwQ29uY2F0VHJpcGxlMihkZm9yXywgREZPUl9NQVJLRVIsIF9jYWxjX3dp ZHRoKQorI2RlZmluZSBkZm9yX3BhY2sJCSBDcHBDb25jYXRUcmlwbGUyKGRmb3JfLCBERk9S X01BUktFUiwgX3BhY2spCisjZGVmaW5lIGRmb3JfdW5wYWNrCQkgQ3BwQ29uY2F0VHJpcGxl MihkZm9yXywgREZPUl9NQVJLRVIsIF91bnBhY2spCisjZGVmaW5lIGRmb3JfYW5hbHl6ZQkg Q3BwQ29uY2F0VHJpcGxlMihkZm9yXywgREZPUl9NQVJLRVIsIF9hbmFseXplKQorI2RlZmlu ZSBkZm9yX2NsZWFyX21ldGEJIENwcENvbmNhdFRyaXBsZTIoZGZvcl8sIERGT1JfTUFSS0VS LCBfY2xlYXJfbWV0YSkKKyNkZWZpbmUgZGZvcl9jYWxjX3N0YXRzCSBDcHBDb25jYXRUcmlw bGUyKGRmb3JfLCBERk9SX01BUktFUiwgX2NhbGNfc3RhdHMpCisjZGVmaW5lIGRmb3JfY2Fs Y19uYnl0ZXMgQ3BwQ29uY2F0VHJpcGxlMihkZm9yXywgREZPUl9NQVJLRVIsIF9jYWxjX25i eXRlcykKKworLyogRnVuY3Rpb25zIG9mIHRoZSB2ZWN0IHVuaXQgKi8KKyNkZWZpbmUgdmVj dF9pbml0CQkgICBDcHBDb25jYXRUcmlwbGUyKHZlY3RfLCBERk9SX01BUktFUiwgX2luaXQp CisjZGVmaW5lIHZlY3RfZmlsbAkJICAgQ3BwQ29uY2F0VHJpcGxlMih2ZWN0XywgREZPUl9N QVJLRVIsIF9maWxsKQorI2RlZmluZSB2ZWN0X3Jlc2VydmUJICAgQ3BwQ29uY2F0VHJpcGxl Mih2ZWN0XywgREZPUl9NQVJLRVIsIF9yZXNlcnZlKQorI2RlZmluZSB2ZWN0X2FwcGVuZAkJ ICAgQ3BwQ29uY2F0VHJpcGxlMih2ZWN0XywgREZPUl9NQVJLRVIsIF9hcHBlbmQpCisjZGVm aW5lIHZlY3RfcHJpbnQJCSAgIENwcENvbmNhdFRyaXBsZTIodmVjdF8sIERGT1JfTUFSS0VS LCBfcHJpbnQpCisjZGVmaW5lIHZlY3RfY29tcGFyZQkgICBDcHBDb25jYXRUcmlwbGUyKHZl Y3RfLCBERk9SX01BUktFUiwgX2NvbXBhcmUpCisjZGVmaW5lIHZlY3RfaW5zZXJ0CQkgICBD cHBDb25jYXRUcmlwbGUyKHZlY3RfLCBERk9SX01BUktFUiwgX2luc2VydCkKKyNkZWZpbmUg dmVjdF9jbGVhcgkJICAgQ3BwQ29uY2F0VHJpcGxlMih2ZWN0XywgREZPUl9NQVJLRVIsIF9j bGVhcikKKworI2RlZmluZSB1c3ZfaW5zZXJ0CQkgICBDcHBDb25jYXRUcmlwbGUyKHVzdl8s IERGT1JfTUFSS0VSLCBfaW5zZXJ0KQorI2RlZmluZSB1c3Zfc2VhcmNoCQkgICBDcHBDb25j YXRUcmlwbGUyKHVzdl8sIERGT1JfTUFSS0VSLCBfc2VhcmNoKQorCisvKiBGdW5jdGlvbnMg b2YgdGhlIGJpdHBhY2sgdW5pdCAqLworI2RlZmluZSB3aWR0aF9mcm9tX3ZhbCBDcHBDb25j YXRUcmlwbGUyKHdpZHRoXywgREZPUl9NQVJLRVIsIF9mcm9tX3ZhbCkKKyNkZWZpbmUgd2lk dGhfdG9fbWFzayAgQ3BwQ29uY2F0VHJpcGxlMih3aWR0aF8sIERGT1JfTUFSS0VSLCBfdG9f bWFzaykKKyNkZWZpbmUgYml0cGFja19wYWNrICAgQ3BwQ29uY2F0VHJpcGxlMihiaXRwYWNr XywgREZPUl9NQVJLRVIsIF9wYWNrKQorI2RlZmluZSBiaXRwYWNrX3VucGFjayBDcHBDb25j YXRUcmlwbGUyKGJpdHBhY2tfLCBERk9SX01BUktFUiwgX3VucGFjaykKKworLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKgorICogRW5kIG9mIFJldXNhYmxlIENvZGUKKyAqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8KKworLyoKKyAqIERvbid0IGZvcmdldCB0byBpbmNsdWRlIHRoaXMg Y29kZSBpbiB5b3VyIGZpbGUgdGhhdCB1c2VzIHRoaXMgaGVhZGVyCisgKiAgICAgI2luY2x1 ZGUgImRmb3JfdGVtcGxfdW5kZWYuaCIKKyAqCisgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2xpYi9kZm9yX3RlbXBsX3VuZGVmLmggYi9zcmMvaW5jbHVkZS9saWIvZGZvcl90ZW1w bF91bmRlZi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kNjBk MzYxOTMwOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL2xpYi9kZm9yX3RlbXBs X3VuZGVmLmgKQEAgLTAsMCArMSwyOSBAQAorI3VuZGVmIGl0ZW1fdAorI3VuZGVmIHZlY3Rf dAorI3VuZGVmIHVuaXFzb3J0dmVjdF90CisKKyN1bmRlZiBkZm9yX2NhbGNfZGVsdGFzCisj dW5kZWYgZGZvcl9jYWxjX3dpZHRoCisjdW5kZWYgZGZvcl9wYWNrCisjdW5kZWYgZGZvcl91 bnBhY2sKKyN1bmRlZiBkZm9yX2FuYWx5emUKKyN1bmRlZiBkZm9yX2NhbGNfc3RhdHMKKyN1 bmRlZiBkZm9yX2NhbGNfbmJ5dGVzCisKKyN1bmRlZiB2ZWN0X2NyZWF0ZQorI3VuZGVmIHZl Y3RfY3JlYXRlX2ZpbGxlZAorI3VuZGVmIHZlY3RfcmVzZXJ2ZQorI3VuZGVmIHZlY3RfYXBw ZW5kCisjdW5kZWYgdmVjdF9kZXN0cm95CisjdW5kZWYgdmVjdF9wcmludAorI3VuZGVmIHZl Y3RfY29tcGFyZQorI3VuZGVmIHZlY3RfaW5zZXJ0CisjdW5kZWYgdmVjdF9jbGVhcgorCisj dW5kZWYgdXN2X2luc2VydAorI3VuZGVmIHVzdl9zZWFyY2gKKworI3VuZGVmIHdpZHRoX2Zy b21fdmFsCisjdW5kZWYgd2lkdGhfdG9fbWFzaworI3VuZGVmIGJpdHBhY2tfcGFjaworI3Vu ZGVmIGJpdHBhY2tfdW5wYWNrCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9saWIvZGZvcl91 MTYuaCBiL3NyYy9pbmNsdWRlL2xpYi9kZm9yX3UxNi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi43MTZjOTlkYmM1NQotLS0gL2Rldi9udWxsCisrKyBiL3Ny Yy9pbmNsdWRlL2xpYi9kZm9yX3UxNi5oCkBAIC0wLDAgKzEsMTMgQEAKKy8qCisgKiBGaWxl OiBkZm9yX3UxNi5oCisgKi8KKworI2lmbmRlZiBfREZPUl9VMTZfSF8KKyNkZWZpbmUgX0RG T1JfVTE2X0hfCisKKy8qIGNsYW5nLWZvcm1hdCBvZmYgKi8KKyNpbmNsdWRlICJkZm9yX3Ux Nl9jb25maWcuaCIKKyNpbmNsdWRlICJkZm9yX3RlbXBsLmgiCisvKiBjbGFuZy1mb3JtYXQg b24gKi8KKworI2VuZGlmIC8qIF9ERk9SX1UxNl9IXyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvbGliL2Rmb3JfdTE2X2NvbmZpZy5oIGIvc3JjL2luY2x1ZGUvbGliL2Rmb3JfdTE2 X2NvbmZpZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43NTE5 MzdhYzUxMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL2xpYi9kZm9yX3UxNl9j b25maWcuaApAQCAtMCwwICsxLDQgQEAKKyNkZWZpbmUgREZPUl9JVEVNX1RZUEUgdWludDE2 X3QKKyNkZWZpbmUgREZPUl9NQVJLRVIJICAgdTE2CisjZGVmaW5lIERGT1JfTUFMTE9DCSAg IG1hbGxvYworI2RlZmluZSBERk9SX0ZSRUUJICAgZnJlZQpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvZGZvci8uZ2l0aWdub3JlIGIvc3JjL3Rlc3QvZGZvci8uZ2l0aWdub3JlCmluZGV4IDBk NzdhNTEyMTZiLi40NDdlOTVjMGMwOSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvZGZvci8uZ2l0 aWdub3JlCisrKyBiL3NyYy90ZXN0L2Rmb3IvLmdpdGlnbm9yZQpAQCAtMSwzICsxLDQgQEAK IHRlc3RfYml0cGFja191MTYKK3Rlc3RfZGZvcl91MTYKIHRlc3RfdW5pcXNvcnR2ZWN0X3Ux NgogdGVzdF92ZWN0X3UxNgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvZGZvci9NYWtlZmlsZSBi L3NyYy90ZXN0L2Rmb3IvTWFrZWZpbGUKaW5kZXggNGZjOWY0YmMxYmEuLjJjYTk4Zjc2YTBm IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9kZm9yL01ha2VmaWxlCisrKyBiL3NyYy90ZXN0L2Rm b3IvTWFrZWZpbGUKQEAgLTMzLDcgKzMzLDggQEAgTElCVEFQX09CSlMgPSAkKHRvcF9idWls ZGRpcikvc3JjL3Rlc3QvbGlidGFwL3RhcC5vCiAKIFRFU1RTPSB0ZXN0X3ZlY3RfdTE2IFwK ICAgICAgICB0ZXN0X3VuaXFzb3J0dmVjdF91MTYgXAotICAgICAgIHRlc3RfYml0cGFja191 MTYKKyAgICAgICB0ZXN0X2JpdHBhY2tfdTE2IFwKKyAgICAgICB0ZXN0X2Rmb3JfdTE2CiAK ICQoVEVTVFM6JT0lLm8pOiBDUFBGTEFHUyArPSAtSSQodG9wX2J1aWxkZGlyKS9zcmMvdGVz dCAtREZST05URU5ECiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2Rmb3IvbWVzb24uYnVpbGQg Yi9zcmMvdGVzdC9kZm9yL21lc29uLmJ1aWxkCmluZGV4IGNlNzYyYzUyNDMwLi40YTc2MGFi NjhmYSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvZGZvci9tZXNvbi5idWlsZAorKysgYi9zcmMv dGVzdC9kZm9yL21lc29uLmJ1aWxkCkBAIC04LDYgKzgsNyBAQCBkZm9yX2RpciA9IGpvaW5f cGF0aHMobWVzb24ucHJvamVjdF9zb3VyY2Vfcm9vdCgpLCAnc3JjL2JhY2tlbmQvbGliJykK IGRmb3Jfc291cmNlcyA9IGZpbGVzKAogICBqb2luX3BhdGhzKGRmb3JfZGlyLCAndmVjdF91 MTYuYycpLAogICBqb2luX3BhdGhzKGRmb3JfZGlyLCAnYml0cGFja191MTYuYycpLAorICBq b2luX3BhdGhzKGRmb3JfZGlyLCAnZGZvcl91MTYuYycpLAogKQogCiBkZm9yX3Rlc3RfbGli ID0gc3RhdGljX2xpYnJhcnkoCkBAIC0zNiw2ICszNyw3IEBAIHRlc3RfbmFtZXMgPSBbCiAg ICd0ZXN0X3ZlY3RfdTE2JywKICAgJ3Rlc3RfdW5pcXNvcnR2ZWN0X3UxNicsCiAgICd0ZXN0 X2JpdHBhY2tfdTE2JywKKyAgJ3Rlc3RfZGZvcl91MTYnLAogXQogCiBmb3JlYWNoIHQgOiB0 ZXN0X25hbWVzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9kZm9yL3Rlc3RfZGZvcl91MTYuYyBi L3NyYy90ZXN0L2Rmb3IvdGVzdF9kZm9yX3UxNi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi4zMjJiNzE0YmEzOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90 ZXN0L2Rmb3IvdGVzdF9kZm9yX3UxNi5jCkBAIC0wLDAgKzEsMzcxIEBACisvKgorICogdGVz dF9kZm9yLmMKKyAqLworCisjaW5jbHVkZSAibGliL2JpdHBhY2tfdTE2LmgiCisjaW5jbHVk ZSAibGliL2Rmb3JfdTE2LmgiCisjaW5jbHVkZSAibGliL3ZlY3RfdTE2LmgiCisjaW5jbHVk ZSAibGlidGFwL3RhcC5oIgorI2luY2x1ZGUgInRlc3QuaCIKKwordm9pZCB0ZXN0X2RlbHRh X2NhbGN1bGF0aW9uKHNpemVfdCBjbnQsIHVpbnQxNl90IGluQXJyW10sIHNpemVfdCBjbnRE ZWx0YSwKKwkJCQkJCQl1aW50MTZfdCBtYXJEZWx0YXNFeHBlY3RlZFtdLCBzaXplX3QgY250 V2lkdGgsCisJCQkJCQkJdWludDE2X3QgbWFyV2lkdGhzRXhwZWN0ZWRbXSwgc2l6ZV90IGNu dFN0YXQsCisJCQkJCQkJdWludDE2X3QgbWFyV2lkdGhzU3RhdEV4cGVjdGVkW10pOworCit2 b2lkIHRlc3RfY2FsY19leGNlcHRpb25zKHNpemVfdCBudW1EZWx0YXMsIHNpemVfdCBudW1X aWR0aHMsCisJCQkJCQkgIHVpbnQxNl90IG1hcldpZHRoc1tdLCBzaXplX3QgbnVtQ291bnRz LAorCQkJCQkJICB1aW50MTZfdCBtYXJDb3VudHNbXSwgc2l6ZV90IHN6QXdhaXRlZFdpZHRo LAorCQkJCQkJICBzaXplX3QgY250QXdhaXRlZEV4Y0NvdW50KTsKKwordm9pZCB0ZXN0X2Rm b3Ioc2l6ZV90IGNudCwgdWludDE2X3QgYXJyW10sIGV4Y2FsZ190IGlzRXhjVXNhZ2UsCisJ CQkgICBzaXplX3Qgd2lkRGVsdGFBd2FpdGVkLCBzaXplX3QgY250RXhjQ250QXdhaXRlZCwK KwkJCSAgIHNpemVfdCB3aWRFeGNXaWRBd2FpdGVkLCBzaXplX3Qgd2lkRXhjUG9zV2lkQXdh aXRlZCwKKwkJCSAgIHNpemVfdCBjbnRCaXRzQ291bnRBd2FpdGVkLCBzaXplX3QgY250Qnl0 ZUNvdW50QXdhaXRlZCwKKwkJCSAgIGZsb2F0IGZsTWluUmF0aW9Bd2FpdGVkLCB1aW50OF90 IHU4YXJQYWNrQXdhaXRlZFtdKTsKKwordm9pZAordGVzdF9kZWx0YV9jYWxjdWxhdGlvbihz aXplX3QgY250LCB1aW50MTZfdCBpbkFycltdLCBzaXplX3QgY250RGVsdGEsCisJCQkJCSAg IHVpbnQxNl90IG1hckRlbHRhc0V4cGVjdGVkW10sIHNpemVfdCBjbnRXaWR0aCwKKwkJCQkJ ICAgdWludDE2X3QgbWFyV2lkdGhzRXhwZWN0ZWRbXSwgc2l6ZV90IGNudFN0YXQsCisJCQkJ CSAgIHVpbnQxNl90IG1hcldpZHRoc1N0YXRFeHBlY3RlZFtdKQoreworCXZlY3RfdTE2X3Qg dkRlbHRhczsKKwl2ZWN0X3UxNl90IHZXaWR0aENvdW50ZXJzOworCXVuaXFzb3J0dmVjdF91 MTZfdCB1c3ZEZWx0YVdpZHRoczsKKwl2ZWN0X3UxNl90IGF3YWl0ZWQ7CisJaW50IHJlczsK KworCXByaW50ZigiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tXG4iKTsKKwlwcmludGYoIlRlc3RcbiIpOworCXByaW50ZigiLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKKworCXByaW50Zigi ICBpbkFycjoiKTsKKwlmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNudDsgaSsrKQorCQlwcmlu dGYoIiAldSIsICh1aW50MzJfdClpbkFycltpXSk7CisJcHJpbnRmKCJcbiIpOworCisJdmVj dF91MTZfaW5pdCgmdkRlbHRhcywgMCwgTlVMTCk7CisJdmVjdF91MTZfaW5pdCgmdXN2RGVs dGFXaWR0aHMsIDAsIE5VTEwpOworCXZlY3RfdTE2X2luaXQoJnZXaWR0aENvdW50ZXJzLCAw LCBOVUxMKTsKKworCS8qIFRlc3RlZCBmdW5jdGlvbiAqLworCXJlcyA9IGRmb3JfdTE2X2Nh bGNfZGVsdGFzKGNudCwgaW5BcnIsICZ2RGVsdGFzLCAmdXN2RGVsdGFXaWR0aHMsCisJCQkJ CQkJICAgJnZXaWR0aENvdW50ZXJzKTsKKwljbXBfb2socmVzLCAiPT0iLCAwKTsKKworCXBy aW50ZigiICBEZWx0YSBleHBlY3RlZDoiKTsKKwlmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNu dERlbHRhOyBpKyspCisJCXByaW50ZigiICV1IiwgKHVpbnQzMl90KW1hckRlbHRhc0V4cGVj dGVkW2ldKTsKKwlwcmludGYoIlxuIik7CisKKwlwcmludGYoIiAgRGVsdGEgZmFjdDogICAg Iik7CisJdmVjdF91MTZfcHJpbnQoJnZEZWx0YXMpOworCisJY21wX29rKHZEZWx0YXMuY250 LCAiPT0iLCBjbnQsICJUaGUgRGVsdGEgY291bnQgaXMgT0suIik7CisJdmVjdF91MTZfaW5p dCgmYXdhaXRlZCwgMCwgTlVMTCk7CisJdmVjdF91MTZfZmlsbCgmYXdhaXRlZCwgY250LCBt YXJEZWx0YXNFeHBlY3RlZCk7CisJY21wX29rKHZlY3RfdTE2X2NvbXBhcmUoJnZEZWx0YXMs ICZhd2FpdGVkKSwgIj09IiwgMCwKKwkJICAgIkFsbCBkZWx0YXMgYXJlIGNhbGN1bGF0ZWQg cHJvcGVybHkiKTsKKwl2ZWN0X3UxNl9jbGVhcigmYXdhaXRlZCk7CisKKwlwcmludGYoIiAg V2lkdGggZXhwZWN0ZWQ6Iik7CisJZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjbnRXaWR0aDsg aSsrKQorCQlwcmludGYoIiAldSIsICh1aW50MzJfdCltYXJXaWR0aHNFeHBlY3RlZFtpXSk7 CisJcHJpbnRmKCJcbiIpOworCisJcHJpbnRmKCIgIFdpZHRoIGZhY3Q6ICAgICIpOworCXZl Y3RfdTE2X3ByaW50KCZ1c3ZEZWx0YVdpZHRocyk7CisKKwljbXBfb2sodXN2RGVsdGFXaWR0 aHMuY250LCAiPT0iLCBjbnRXaWR0aCwgIlRoZSBXaWR0aCBjb3VudCBpcyBPSy4iKTsKKwor CS8qIGRvbid0IHJlYWxseSBuZWVkIGluaXRpYWxpc2F0aW9uIGFmdGVyIHZlY3RfY2xlYW4g aGF2aW5nIGJlZW4gZG9uZQorCSAqIGFib3ZlKi8KKwkvKiB2ZWN0X3UxNl9pbml0KCZhd2Fp dGVkLCAwLCBOVUxMKTsgKi8KKworCXZlY3RfdTE2X2ZpbGwoJmF3YWl0ZWQsIGNudFdpZHRo LCBtYXJXaWR0aHNFeHBlY3RlZCk7CisJY21wX29rKHZlY3RfdTE2X2NvbXBhcmUoJnVzdkRl bHRhV2lkdGhzLCAmYXdhaXRlZCksICI9PSIsIDAsCisJCSAgICJBbGwgZGVsdGEgd2lkdGhz IGlzIE9LLiIpOworCXZlY3RfdTE2X2NsZWFyKCZhd2FpdGVkKTsKKworCXByaW50ZigiICBT dGF0aXN0aWNzIGV4cGVjdGVkOiIpOworCWZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY250U3Rh dDsgaSsrKQorCQlwcmludGYoIiAldSIsICh1aW50MzJfdCltYXJXaWR0aHNTdGF0RXhwZWN0 ZWRbaV0pOworCXByaW50ZigiXG4iKTsKKworCXByaW50ZigiICBTdGF0aXN0aWNzIGZhY3Q6 ICAgICIpOworCXZlY3RfdTE2X3ByaW50KCZ2V2lkdGhDb3VudGVycyk7CisKKwljbXBfb2so CisJCXVzdkRlbHRhV2lkdGhzLmNudCwgIj09IiwgdldpZHRoQ291bnRlcnMuY250LAorCQki VGhlIGNvdW50IG9mIHN0YXRpc3RpY3Mgb2Ygd2lkdGhzIGlzIGVxdWFsIHRvIHRoZSBjb3Vu dCBvZiB3aWR0aHMuIik7CisKKwkvKiBkb24ndCByZWFsbHkgbmVlZCBpbml0aWFsaXNhdGlv biBhZnRlciB2ZWN0X2NsZWFuIGhhdmluZyBiZWVuIGRvbmUKKwkgKiBhYm92ZSovCisJdmVj dF91MTZfZmlsbCgmYXdhaXRlZCwgY250U3RhdCwgbWFyV2lkdGhzU3RhdEV4cGVjdGVkKTsK KwljbXBfb2sodmVjdF91MTZfY29tcGFyZSgmdldpZHRoQ291bnRlcnMsICZhd2FpdGVkKSwg Ij09IiwgMCwKKwkJICAgIldpZHRoIHN0YXRpc3RpY3MgaXMgT0suIik7CisJdmVjdF91MTZf Y2xlYXIoJmF3YWl0ZWQpOworCisJdmVjdF91MTZfY2xlYXIoJnZEZWx0YXMpOworCXZlY3Rf dTE2X2NsZWFyKCZ1c3ZEZWx0YVdpZHRocyk7CisJdmVjdF91MTZfY2xlYXIoJnZXaWR0aENv dW50ZXJzKTsKK30KKwordm9pZAordGVzdF9jYWxjX2V4Y2VwdGlvbnMoc2l6ZV90IG51bURl bHRhcywgc2l6ZV90IG51bVdpZHRocywgdWludDE2X3QgbWFyV2lkdGhzW10sCisJCQkJCSBz aXplX3QgbnVtQ291bnRzLCB1aW50MTZfdCBtYXJDb3VudHNbXSwKKwkJCQkJIHNpemVfdCBz ekF3YWl0ZWRXaWR0aCwgc2l6ZV90IGNudEF3YWl0ZWRFeGNDb3VudCkKK3sKKwlpbnQgcmVz OworCXZlY3RfdTE2X3QgdldpZHRoQ291bnRlcnM7CisJdW5pcXNvcnR2ZWN0X3UxNl90IHVz dkRlbHRhV2lkdGhzOworCXNpemVfdCB3aWR0aCwgY250RXhjZXB0aW9uczsKKworCXZlY3Rf dTE2X2luaXQoJnVzdkRlbHRhV2lkdGhzLCAwLCBOVUxMKTsKKwl2ZWN0X3UxNl9maWxsKCZ1 c3ZEZWx0YVdpZHRocywgbnVtV2lkdGhzLCBtYXJXaWR0aHMpOworCisJdmVjdF91MTZfaW5p dCgmdldpZHRoQ291bnRlcnMsIDAsIE5VTEwpOworCXZlY3RfdTE2X2ZpbGwoJnZXaWR0aENv dW50ZXJzLCBudW1Db3VudHMsIG1hckNvdW50cyk7CisKKwlyZXMgPSBkZm9yX3UxNl9jYWxj X3dpZHRoKG51bURlbHRhcywgJnVzdkRlbHRhV2lkdGhzLCAmdldpZHRoQ291bnRlcnMsCisJ CQkJCQkJICAmd2lkdGgsICZjbnRFeGNlcHRpb25zKTsKKwljbXBfb2socmVzLCAiPT0iLCAw KTsKKwljbXBfb2sod2lkdGgsICI9PSIsIHN6QXdhaXRlZFdpZHRoLCAiV2lkdGggaXMgT0su Iik7CisJY21wX29rKGNudEV4Y2VwdGlvbnMsICI9PSIsIGNudEF3YWl0ZWRFeGNDb3VudCwg IkV4Y2VwdGlvbnMgbnVtIGlzIE9LIik7CisKKwl2ZWN0X3UxNl9jbGVhcigmdXN2RGVsdGFX aWR0aHMpOworCXZlY3RfdTE2X2NsZWFyKCZ2V2lkdGhDb3VudGVycyk7Cit9CisKK3ZvaWQK K3Rlc3RfZGZvcihzaXplX3QgY250LCB1aW50MTZfdCBhcnJbXSwgZXhjYWxnX3QgaXNFeGNV c2FnZSwKKwkJICBzaXplX3Qgd2lkRGVsdGFXaWR0aEF3YWl0ZWQsIHNpemVfdCBjbnRFeGND bnRBd2FpdGVkLAorCQkgIHNpemVfdCB3aWRFeGNXaWRBd2FpdGVkLCBzaXplX3Qgd2lkRXhj UG9zV2lkQXdhaXRlZCwKKwkJICBzaXplX3QgY250Qml0c0NvdW50QXdhaXRlZCwgc2l6ZV90 IGNudEJ5dGVDb3VudEF3YWl0ZWQsCisJCSAgZmxvYXQgZmxNaW5SYXRpb0F3YWl0ZWQsIHVp bnQ4X3QgdThhclBhY2tBd2FpdGVkW10pCit7CisJaW50IHJlczsKKwlkZm9yX21ldGFfdCBk Zm9yOworCWRmb3Jfc3RhdHNfdCBzdGF0czsKKwl1bmlxc29ydHZlY3RfdTE2X3QgZXh0cmFj dGVkOworCisJcmVzID0gZGZvcl91MTZfcGFjayhjbnQsIGFyciwgaXNFeGNVc2FnZSwgJmRm b3IsIDAsIE5VTEwpOworCWNtcF9vayhyZXMsICI9PSIsIDAsICJkZm9yX3BhY2sgZnVuYyBo YXMgcHJvY2Vzc2VkIE9LLiIpOworCWNtcF9vayhkZm9yLml0ZW1fY250LCAiPT0iLCBjbnQs ICJDb3VudCBvZiBkZWx0YXMgaXMgT0suIik7CisJY21wX29rKGRmb3IuZGVsdGFfd2lkLCAi PT0iLCB3aWREZWx0YVdpZHRoQXdhaXRlZCwgIkRlbHRhIHdpZHRoIGlzIE9LLiIpOworCWNt cF9vayhkZm9yLmV4Y19jbnQsICI9PSIsIGNudEV4Y0NudEF3YWl0ZWQsICJFeGNlcHRpb24g Y291bnQgaXMgT0suIik7CisJY21wX29rKGRmb3IuZXhjX3dpZCwgIj09Iiwgd2lkRXhjV2lk QXdhaXRlZCwgIkV4Y2VwdGlvbiB3aWR0aCBpcyBPSy4iKTsKKwljbXBfb2soZGZvci5leGNf cG9zX3dpZCwgIj09Iiwgd2lkRXhjUG9zV2lkQXdhaXRlZCwKKwkJICAgIkV4Y2VwdGlvbiBw b3NpdGlvbiB3aWR0aCBpcyBPSy4iKTsKKwlvayhkZm9yLnBhY2sgIT0gTlVMTCwgIlBhY2sg aXMgY3JlYXRlZCAobm90IE5VTEwpLiIpOworCisJc3RhdHMgPSBkZm9yX3UxNl9jYWxjX3N0 YXRzKGRmb3IpOworCWNtcF9vayhzdGF0cy5uYml0cywgIj09IiwgY250Qml0c0NvdW50QXdh aXRlZCwgIkJpdHMgY291bnQgaXMgT0suIik7CisJY21wX29rKGRmb3IubmJ5dGVzLCAiPT0i LCBjbnRCeXRlQ291bnRBd2FpdGVkLCAiQnl0ZXMgY291bnQgaXMgT0suIik7CisJb2soc3Rh dHMucmF0aW8gPiBmbE1pblJhdGlvQXdhaXRlZCwgIkNvbXByZXNzaW9uIHJhdGlvIGlzIE9L LiIpOworCisJaWYgKHU4YXJQYWNrQXdhaXRlZCAhPSBOVUxMKQorCQlvaygwID09IG1lbWNt cChkZm9yLnBhY2ssIHU4YXJQYWNrQXdhaXRlZCwgY250Qnl0ZUNvdW50QXdhaXRlZCksCisJ CSAgICJQYWNrIGNvbnRlbnQgaXMgT0suIik7CisJZWxzZQorCQlvaygwID09IDAsICJQYWNr IGNvbnRlbnQgY2hlY2sgaXMgc2tpcHBlZC4iKTsKKworCXRlc3RfcHJpbnRfdTE2X2FycmF5 KGNudCwgKHVpbnQxNl90ICopYXJyLCAiXG5cbk9yaWdpbmFsIGludGVnZXIgYXJyYXkiKTsK Kwl0ZXN0X3ByaW50X3U4X2FycmF5KGRmb3IubmJ5dGVzLCBkZm9yLnBhY2ssICJDb21wcmVz c2VkIGludGVnZXIgYXJyYXkiKTsKKwlwcmludGYoIkNvbXByZXNzaW9uIHJhdGlvOiVmXG5c biIsIHN0YXRzLnJhdGlvKTsKKworCXZlY3RfdTE2X2luaXQoJmV4dHJhY3RlZCwgMCwgTlVM TCk7CisKKwlkZm9yX3UxNl91bnBhY2soJmRmb3IsICZleHRyYWN0ZWQsIDAsIE5VTEwpOwor CWNtcF9vayhleHRyYWN0ZWQuY250LCAiPT0iLCBjbnQsICJFeHRyYWN0ZWQgY291bnQgaXMg T0siKTsKKwljbXBfb2soMCwgIj09IiwgbWVtY21wKGFyciwgZXh0cmFjdGVkLm0sIGNudCks CisJCSAgICJFeHRyYWN0ZWQgYXJyYXkgaXMgZXF1YWwgdG8gb3JpZ2luYWwiKTsKKworCWZy ZWUoZGZvci5wYWNrKTsKKwl2ZWN0X3UxNl9jbGVhcigmZXh0cmFjdGVkKTsKK30KKworaW50 CittYWluKHZvaWQpCit7CisJcGxhbigxMzApOworCXByaW50ZigiPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PVxuIik7CisJcHJpbnRmKCJUZXN0IERFTFRBIENB TENVTEFUSU9OXG4iKTsKKwl7CisJCXRlc3RfZGVsdGFfY2FsY3VsYXRpb24oCisJCQkxMCwg KHVpbnQxNl90W10pIHsgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSB9LCAvKiBpbkFy ciAqLworCQkJMTAsCisJCQkodWludDE2X3RbXSkgeyAwLCAxLCAxLCAxLCAxLCAxLCAxLCAx LCAxLAorCQkJCQkJICAgMSB9LAkgICAvKiBtYXJEZWx0YXNFeHBlY3RlZCovCisJCQkxLCAo dWludDE2X3RbXSkgeyAxIH0sIC8qIG1hcldpZHRoc0V4cGVjdGVkICovCisJCQkxLCAodWlu dDE2X3RbXSkgeyAxMCB9IC8qIG1hcldpZHRoc1N0YXRFeHBlY3RlZCAqLyk7CisKKwkJdGVz dF9kZWx0YV9jYWxjdWxhdGlvbigKKwkJCTEwLCAodWludDE2X3RbXSkgeyAxLCAzLCA1LCA3 LCA5LCAxMSwgMTMsIDE1LCAxNywgMTkgfSwgLyogaW5BcnIgKi8KKwkJCTEwLAorCQkJKHVp bnQxNl90W10pIHsgMSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwKKwkJCQkJCSAgIDIgfSwJ CSAgLyogbWFyRGVsdGFzRXhwZWN0ZWQqLworCQkJMiwgKHVpbnQxNl90W10pIHsgMSwgMiB9 LCAvKiBtYXJXaWR0aHNFeHBlY3RlZCAqLworCQkJMiwgKHVpbnQxNl90W10pIHsgMSwgOSB9 IC8qIG1hcldpZHRoc1N0YXRFeHBlY3RlZCAqLyk7CisKKwkJdGVzdF9kZWx0YV9jYWxjdWxh dGlvbigKKwkJCTE0LAorCQkJKHVpbnQxNl90W10pIHsgMTAwLCAyMDAsIDMwMCwgNDAwLCA0 MDEsIDQwMiwgNDAzLCA0MDQsIDQwNiwgNDA4LAorCQkJCQkJICAgNDEwLCA0MTIsIDQxNCwg NDE2IH0sIC8qIGluQXJyICovCisJCQkxNCwKKwkJCSh1aW50MTZfdFtdKSB7IDEwMCwgMTAw LCAxMDAsIDEwMCwgMSwgMSwgMSwgMSwgMiwgMiwgMiwgMiwgMiwKKwkJCQkJCSAgIDIgfSwJ CQkgLyogbWFyRGVsdGFzRXhwZWN0ZWQqLworCQkJMywgKHVpbnQxNl90W10pIHsgMSwgMiwg NyB9LCAvKiBtYXJXaWR0aHNFeHBlY3RlZCAqLworCQkJMywgKHVpbnQxNl90W10pIHsgNCwg NiwgNCB9IC8qIG1hcldpZHRoc1N0YXRFeHBlY3RlZCAqLyk7CisKKwkJdGVzdF9kZWx0YV9j YWxjdWxhdGlvbigxLCAodWludDE2X3RbXSkgeyAxMjMgfSwgLyogaW5BcnIgKi8KKwkJCQkJ CQkgICAxLCAodWludDE2X3RbXSkgeyAxMjMgfSwgLyogbWFyRGVsdGFzRXhwZWN0ZWQqLwor CQkJCQkJCSAgIDEsICh1aW50MTZfdFtdKSB7IDcgfSwJLyogbWFyV2lkdGhzRXhwZWN0ZWQg Ki8KKwkJCQkJCQkgICAxLAorCQkJCQkJCSAgICh1aW50MTZfdFtdKSB7IDEgfSAvKiBtYXJX aWR0aHNTdGF0RXhwZWN0ZWQgKi8pOworCisJCXRlc3RfZGVsdGFfY2FsY3VsYXRpb24oMCwg TlVMTCwgLyogaW5BcnIgKi8KKwkJCQkJCQkgICAwLCBOVUxMLCAvKiBtYXJEZWx0YXNFeHBl Y3RlZCovCisJCQkJCQkJICAgMCwgTlVMTCwgLyogbWFyV2lkdGhzRXhwZWN0ZWQgKi8KKwkJ CQkJCQkgICAwLCBOVUxMIC8qIG1hcldpZHRoc1N0YXRFeHBlY3RlZCAqLyk7CisJfQorCXBy aW50ZigiVGVzdCBERUxUQSBDQUxDVUxBVElPTiBQQVNTRURcbiIpOworCXByaW50ZigiPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4iKTsKKworCXByaW50 ZigiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIik7CisJcHJp bnRmKCJUZXN0IEVYQ0VQVElPTlMgQ0FMQ1VMQVRJT05cbiIpOworCXsKKwkJaW50IHJlczsK KwkJdmVjdF91MTZfdCB2V2lkdGhDb3VudGVyczsKKwkJdW5pcXNvcnR2ZWN0X3UxNl90IHVz dkRlbHRhV2lkdGhzOworCQlzaXplX3Qgd2lkdGgsIGNudEV4Y2VwdGlvbnM7CisKKwkJdmVj dF91MTZfaW5pdCgmdXN2RGVsdGFXaWR0aHMsIDAsIE5VTEwpOworCQl2ZWN0X3UxNl9maWxs KCZ1c3ZEZWx0YVdpZHRocywgMywgKHVpbnQxNl90W10pIHsgMSwgMiwgNyB9KTsKKworCQl2 ZWN0X3UxNl9pbml0KCZ2V2lkdGhDb3VudGVycywgMCwgTlVMTCk7CisJCXZlY3RfdTE2X2Zp bGwoJnZXaWR0aENvdW50ZXJzLCAzLCAodWludDE2X3RbXSkgeyA0LCA2LCA0IH0pOyAvLyA0 KzYrND0xNAorCisJCXJlcyA9IGRmb3JfdTE2X2NhbGNfd2lkdGgoMTQsICZ1c3ZEZWx0YVdp ZHRocywgJnZXaWR0aENvdW50ZXJzLCAmd2lkdGgsCisJCQkJCQkJCSAgJmNudEV4Y2VwdGlv bnMpOworCQljbXBfb2socmVzLCAiPT0iLCAwKTsKKwkJY21wX29rKHdpZHRoLCAiPT0iLCA3 LCAiV2lkdGhzPXsxLDIsN30sIENvdW50ZXJzPXs0LDYsNH0gPT4gd2lkdGg9NyIpOworCQlj bXBfb2soY250RXhjZXB0aW9ucywgIj09IiwgMCwKKwkJCSAgICJXaWR0aHM9ezEsMiw3fSwg Q291bnRlcnM9ezQsNiw0fSA9PiBleGNwdGlvbnNfbnVtPTAiKTsKKwl9CisKKwl0ZXN0X2Nh bGNfZXhjZXB0aW9ucygxNCwgMywgKHVpbnQxNl90W10pIHsgMSwgMiwgNyB9LCAvKiB3aWR0 aHMgb2YgZGVsdGFzKi8KKwkJCQkJCSAzLCAodWludDE2X3RbXSkgeyA0LCA2LCA0IH0sCSAg Lyogc3RhdGlzdGljcyAqLworCQkJCQkJIDcsCSAvKiB3aWR0aCBvZiBzaG9ydCBkZWx0YXMg Ki8KKwkJCQkJCSAwKTsgLyogbnVtYmVyIG9mIGV4Y2VwdGlvbnMqLworCisJdGVzdF9jYWxj X2V4Y2VwdGlvbnMoMTQsIDMsICh1aW50MTZfdFtdKSB7IDEsIDIsIDcgfSwgLyogd2lkdGhz ICovCisJCQkJCQkgMywgKHVpbnQxNl90W10pIHsgNiwgNywgMSB9LAkgIC8qIHN0YXQgKi8K KwkJCQkJCSAyLCAxKTsgLyogc2hvcnQgZGVsdGFzIHdpZHRoLCBleGNlcHRpb25zIGNvdW50 Ki8KKworCXRlc3RfY2FsY19leGNlcHRpb25zKDQwLCAzLCAodWludDE2X3RbXSkgeyA1LCA2 LCAxMiB9LCAvKiB3aWR0aHMgKi8KKwkJCQkJCSAzLCAodWludDE2X3RbXSkgeyAzNiwgMiwg MiB9LAkgICAvKiBzdGF0ICovCisJCQkJCQkgNSwgNCk7IC8qIHNob3J0IGRlbHRhcyB3aWR0 aCwgZXhjZXB0aW9ucyBjb3VudCovCisKKwl0ZXN0X2NhbGNfZXhjZXB0aW9ucyg0MCwgNCwg KHVpbnQxNl90W10pIHsgNSwgNiwgNywgMTIgfSwgNCwKKwkJCQkJCSAodWludDE2X3RbXSkg eyAzNiwgMSwgMSwgMiB9LCA1LCA0KTsKKworCXRlc3RfY2FsY19leGNlcHRpb25zKDQwLCA0 LCAodWludDE2X3RbXSkgeyA1LCA2LCA3LCAxMiB9LCA0LAorCQkJCQkJICh1aW50MTZfdFtd KSB7IDM1LCAxLCAyLCAyIH0sIDYsIDQpOworCisJdGVzdF9jYWxjX2V4Y2VwdGlvbnMoNDAs IDQsICh1aW50MTZfdFtdKSB7IDUsIDYsIDcsIDEyIH0sIDQsCisJCQkJCQkgKHVpbnQxNl90 W10pIHsgMzQsIDEsIDIsIDMgfSwgNywgMyk7CisKKwl0ZXN0X2NhbGNfZXhjZXB0aW9ucyg0 MCwgNCwgKHVpbnQxNl90W10pIHsgNSwgNiwgNywgMTIgfSwgNCwKKwkJCQkJCSAodWludDE2 X3RbXSkgeyAxLCAzNCwgMiwgMyB9LCA3LCAzKTsKKworCXRlc3RfY2FsY19leGNlcHRpb25z KDQwLCA0LCAodWludDE2X3RbXSkgeyA1LCA2LCA3LCAxMiB9LCA0LAorCQkJCQkJICh1aW50 MTZfdFtdKSB7IDEsIDMzLCAyLCA0IH0sIDcsIDQpOworCisJdGVzdF9jYWxjX2V4Y2VwdGlv bnMoNDAsIDQsICh1aW50MTZfdFtdKSB7IDUsIDYsIDcsIDEyIH0sIDQsCisJCQkJCQkgKHVp bnQxNl90W10pIHsgMSwgMzIsIDIsIDUgfSwgMTIsIDApOworCisJcHJpbnRmKCJUZXN0IEVY Q0VQVElPTlMgQ0FMQ1VMQVRJT04gUEFTU0VEXG4iKTsKKwlwcmludGYoIj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuIik7CisKKwlwcmludGYoIj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIpOworCXByaW50ZigiVGVz dCBERUxUQSBGUkFNRSBPRiBSRUZFUkVOQ0VTIFBBQ0tJTkdcbiIpOworCisJdGVzdF9kZm9y KDE2LAorCQkJICAodWludDE2X3RbXSkgeyAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5 LCAxMCwgMTEsIDEyLCAxMywgMTQsCisJCQkJCQkJIDE1IH0sIC8qIGNudCwgYXJyYXkgKi8K KwkJCSAgREZPUl9FWENfRE9OVF9VU0UsICAgLyogZmxhZyBvbiB1c2Ugb2YgZXhjZXB0aW9u cyAqLworCQkJICAxLAkJCQkgICAvKiBhd2FpdGVkIHdpZHRoIG9mIHNob3J0IGRlbHRhcyAq LworCQkJICAwLAkJCQkgICAvKiBhd2FpdGVkIGNvdW50IG9mIGV4Y2VwdGlvbnMgKi8KKwkJ CSAgMCwJCQkJICAgLyogYXdhaXRlZCBleGNlcHRpb24gd2lkdGgqLworCQkJICAwLAkJCQkg ICAvKiBhd2FpdGVkIGV4Y2VwdGlvbiBwb3NpdGlvbiB3aWR0aCovCisJCQkgIDE2LAkJCQkg ICAvKiBhd2FpdGVkIGJpdHMgY291bnQgKi8KKwkJCSAgMiwJCQkJICAgLyogY250Qnl0ZUNv dW50QXdhaXRlZCAqLworCQkJICAxNS45OSwgLyogYXdhaXRlZCByYXRpbyBtaW4gdmFsdWUg KHJhdGlvID49IDE1Ljk5KSAqLworCQkJICAodWludDhfdFtdKSB7IDB4RkUsIDB4RkYgfSk7 CisKKwl0ZXN0X2Rmb3IoMTYsCisJCQkgICh1aW50MTZfdFtdKSB7IDAsIDEsIDIsIDMsIDQs IDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwKKwkJCQkJCQkgMTUgfSwgLyog Y250LCBhcnJheSAqLworCQkJICBERk9SX0VYQ19VU0UsIC8qIGZsYWcgb24gdXNlIG9mIGV4 Y2VwdGlvbnMgKi8KKwkJCSAgMSwJCQkvKiBhd2FpdGVkIHdpZHRoIG9mIHNob3J0IGRlbHRh cyAqLworCQkJICAwLAkJCS8qIGF3YWl0ZWQgY291bnQgb2YgZXhjZXB0aW9ucyAqLworCQkJ ICAwLAkJCS8qIGF3YWl0ZWQgZXhjZXB0aW9uIHdpZHRoKi8KKwkJCSAgMCwJCQkvKiBhd2Fp dGVkIGV4Y2VwdGlvbiBwb3NpdGlvbiB3aWR0aCovCisJCQkgIDE2LAkJCS8qIGF3YWl0ZWQg Yml0cyBjb3VudCAqLworCQkJICAyLAkJCS8qIGNudEJ5dGVDb3VudEF3YWl0ZWQgKi8KKwkJ CSAgMTUuOTksCQkvKiBhd2FpdGVkIHJhdGlvIG1pbiB2YWx1ZSAocmF0aW8gPj0gMTUuOTkp ICovCisJCQkgICh1aW50OF90W10pIHsgMHhGRSwgMHhGRiB9KTsKKworCXRlc3RfZGZvcigx NiwKKwkJCSAgKHVpbnQxNl90W10pIHsgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwg MTAsIDExLCAxMiwgMTMsIDE0LAorCQkJCQkJCSAxMDIzIH0sIC8qIGNudCwgYXJyYXkgKi8K KwkJCSAgREZPUl9FWENfRE9OVF9VU0UsCSAvKiBmbGFnIG9uIHVzZSBvZiBleGNlcHRpb25z ICovCisJCQkgIDEwLAkJCQkJIC8qIGF3YWl0ZWQgd2lkdGggb2Ygc2hvcnQgZGVsdGFzICov CisJCQkgIDAsCQkJCQkgLyogYXdhaXRlZCBjb3VudCBvZiBleGNlcHRpb25zICovCisJCQkg IDAsCQkJCQkgLyogYXdhaXRlZCBleGNlcHRpb24gd2lkdGgqLworCQkJICAwLAkJCQkJIC8q IGF3YWl0ZWQgZXhjZXB0aW9uIHBvc2l0aW9uIHdpZHRoKi8KKwkJCSAgMTAgKiAxNiwJCQkJ IC8qIGF3YWl0ZWQgYml0cyBjb3VudCAqLworCQkJICAyMCwJCQkJCSAvKiBhd2FpdGVkIGJ5 dGVzIGNvdW50ICovCisJCQkgIDEuNSwJCQkJCSAvKiBhd2FpdGVkIHJhdGlvIG1pbiB2YWx1 ZSAqLworCQkJICAodWludDhfdFtdKSB7IDB4MDAsIDB4MDQsIDB4MTAsIDB4NDAsIDB4MDAs IDB4MDEsIDB4MDQsCisJCQkJCQkJMHgxMCwgMHg0MCwgMHgwMCwgMHgwMSwgMHgwNCwgMHgx MCwgMHg0MCwKKwkJCQkJCQkweDAwLCAweDAxLCAweDA0LCAweDEwLCAweDQwLCAweEZDIH0p OworCisJdGVzdF9kZm9yKDE2LAorCQkJICAodWludDE2X3RbXSkgeyAwLCAxLCAyLCAzLCA0 LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsCisJCQkJCQkJIDEwMjMgfSwg LyogY250LCBhcnJheSAqLworCQkJICBERk9SX0VYQ19VU0UsCQkJIC8qIGZsYWcgb24gdXNl IG9mIGV4Y2VwdGlvbnMgKi8KKwkJCSAgMSwJCQkJCSAvKiBhd2FpdGVkIHdpZHRoIG9mIHNo b3J0IGRlbHRhcyAqLworCQkJICAxLAkJCQkJIC8qIGF3YWl0ZWQgY291bnQgb2YgZXhjZXB0 aW9ucyAqLworCQkJICA5LAkJCQkJIC8qIGF3YWl0ZWQgZXhjZXB0aW9uIHdpZHRoKi8KKwkJ CSAgNCwJCQkJCSAvKiBhd2FpdGVkIGV4Y2VwdGlvbiBwb3NpdGlvbiB3aWR0aCovCisJCQkg IDE2ICogMSArIDkgKyA0LAkJIC8qIGF3YWl0ZWQgYml0cyBjb3VudCAqLworCQkJICA0LAkJ CQkJIC8qIGF3YWl0ZWQgYnl0ZXMgY291bnQgKi8KKwkJCSAgNy45OSwJCQkJCSAvKiBhd2Fp dGVkIHJhdGlvIG1pbiB2YWx1ZSAqLworCQkJICAodWludDhfdFtdKSB7IDB4RkUsIDB4RkYs IDB4RjgsIDB4MUYgfSk7CisKKwl0ZXN0X2Rmb3IoMzAsIC8qIGNudCAqLworCQkJCQkgICh1 aW50MTZfdFtdKSB7IDAsIDEsIDIsIDMsIDQsCisJCQkJCQkJCQkgNSwgNiwgNywgOCwgOSwK KyAgLyogZGVsdGE9MiwgcG9zPTEwLCBkZWx0YXBvcz0xMCAqLyAxMSwgMTIsIDEzLCAxNCwg MTUsCisJCQkJCQkJCQkgMTYsIDE3LCAxOCwgMTksIDIwLAorCQkJCQkJCQkJIDIxLCAyMiwg MjMsIDI0LCAyNSwKKyAgLyogZGVsdGE9MywgcG9zPTI1LCBkZWx0YXBvcz0xNSAqLyAyOCwg MjksIDMwLCAzMSwKKyAgLyogZGVsdGE9MywgcG9zPTI5LCBkZWx0YXBvcz00ICovCSAzNCB9 LCAgCQkJCS8qIGFycmF5ICovCisJCQkgIERGT1JfRVhDX1VTRSwJCQkgIC8qIGZsYWcgb24g dXNlIG9mIGV4Y2VwdGlvbnMgKi8KKwkJCSAgMSwJCQkJCSAgLyogYXdhaXRlZCB3aWR0aCBv ZiBzaG9ydCBkZWx0YXMgKi8KKwkJCSAgMywJCQkJCSAgLyogYXdhaXRlZCBjb3VudCBvZiBl eGNlcHRpb25zICovCisJCQkgIDEsCQkJCQkgIC8qIGF3YWl0ZWQgZXhjZXB0aW9uIHdpZHRo Ki8KKwkJCSAgNCwJCQkJCSAgLyogYXdhaXRlZCBleGNlcHRpb24gcG9zaXRpb24gd2lkdGgq LworCQkJICAzMCAqIDEgKyAzICogMSArIDMgKiA0LCAvKiBhd2FpdGVkIGJpdHMgY291bnQg Ki8KKwkJCSAgNiwJCQkJCSAgLyogYXdhaXRlZCBieXRlcyBjb3VudCAqLworCQkJICA5Ljk5 LAkJCQkJICAvKiBhd2FpdGVkIHJhdGlvIG1pbiB2YWx1ZSAqLworCQkJICAodWludDhfdFtd KSB7IDB4RkUsIDB4RkIsIDB4RkYsIDB4RkYsIDB4RjUsIDB4MDkgfSk7CisKKwlwcmludGYo IlRlc3QgREVMVEEgRlJBTUUgT0YgUkVGRVJFTkNFUyBQQUNLSU5HIFBBU1NFRFxuIik7CisJ cHJpbnRmKCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiIp OworCisJZG9uZV90ZXN0aW5nKCk7Cit9Ci0tIAoyLjUzLjAKCg== --------------GiBLAZOtrrdCnvpdzHYTcSF3 Content-Type: text/x-patch; charset=UTF-8; name="v10-0003-Use-Delta-Frame-of-Reference-DFoR-to-compress-pr.patch" Content-Disposition: attachment; filename*0="v10-0003-Use-Delta-Frame-of-Reference-DFoR-to-compress-pr.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA4N2FmODcxYzRhNGMxYjZmN2E4YjQyODU5MjUwNjRkMDM4YTY1NGVhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFdmdlbnkgVm9yb3BhZXYgPGV2b3JvcEBnbWFpbC5j b20+CkRhdGU6IEZyaSwgMjAgTWFyIDIwMjYgMTc6MzA6MjIgKzA4MDAKU3ViamVjdDogW1BB VENIIHYxMCAzLzNdIFVzZSBEZWx0YSBGcmFtZSBvZiBSZWZlcmVuY2UgKERGb1IpIHRvIGNv bXByZXNzCiBwcnVuZS9mcmVlemUgcmVjb3Jkcy4KCkEgcHJ1bmUvZnJlZXplIHJlY29yZCBj b250YWlucyBmb3VyIHNlcXVlbmNlcyBvZiBpbnRlZ2VycyByZXByZXNlbnRpbmcKZnJvemVu LCByZWRpcmVjdGVkLCB1bnVzZWQsIGFuZCBkZWFkIHR1cGxlcy4gVXNpbmcgREZvUiBhbGdv cml0aG1zLCB0aGUKYHVudXNlZGAgYW5kIGBkZWFkYCBzZXF1ZW5jZXMgYXJlIG5vdyBjb21w cmVzc2VkLiBUaGUgYGZyb3plbmAKYW5kIGByZWRpcmVjdGVkYCBzZXF1ZW5jZXMgY2Fubm90 IGJlIGNvbXByZXNzZWQgYmVjYXVzZSB0aGUgb3JkZXIgb2YKdGhlaXIgZWxlbWVudHMgaXMg c2lnbmlmaWNhbnQsIGFuZCBERm9SIGRvZXMgbm90IHN1cHBvcnQgdW5zb3J0ZWQKc2VxdWVu Y2VzIHlldC4gVGhlIHRoZW9yZXRpY2FsIGNvbXByZXNzaW9uIHJhdGlvIGZvciBkZm9yX3Ux NiBjYW4gcmVhY2gKdXAgdG8gMTYuCgpUaGUgbmV3IEdVQyB3YWxfcHJ1bmVfZGZvcl9jb21w cmVzc2lvbiBjb250cm9scyAoZW5hYmxlcyBvcgpkaXNhYmxlcykgY29tcHJlc3Npb24gZm9y IHBydW5lL2ZyZWV6ZSByZWNvcmRzLgoKQW4gaW50ZWdyYWwgVEFQIHRlc3QsIDA1Ml9wcnVu ZV9kZm9yX2NvbXByZXNzaW9uLnBsLCBoYXMgYmVlbgppbXBsZW1lbnRlZC4gSXQgZGVtb25z dHJhdGVzIGFuIGF2ZXJhZ2UgY29tcHJlc3Npb24gcmF0aW8gb2YgYXQgbGVhc3QgNQp3aGVu IGFuYWx5emluZyBwcnVuZS9mcmVlemUgcmVjb3JkcyBpbiBwcmFjdGljZS4KCkF1dGhvcjog RXZnZW55IFZvcm9wYWV2IDxldmdlbnkudm9yb3BhZXZAdGFudG9ybGFicy5jb20+IDxldm9y b3BAZ21haWwuY29tPgpSZXZpZXdlZCBieTogQW5kcmV5IEJvcm9kaW4gPHg0bW1tQHlhbmRl eC10ZWFtLnJ1PgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMg ICAgICAgICB8ICAxMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMg ICAgICAgICAgIHwgMTQxICsrKysrKysrLQogc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNj L01ha2VmaWxlICAgICAgICAgIHwgICAxICsKIC4uLi9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGFt X3hsb2dfZGZvci5jICAgICAgICB8IDEwOSArKysrKysrCiBzcmMvYmFja2VuZC9hY2Nlc3Mv cm1ncmRlc2MvaGVhcGRlc2MuYyAgICAgICAgfCAgNDkgKystCiBzcmMvYmFja2VuZC9hY2Nl c3Mvcm1ncmRlc2MvbWVzb24uYnVpbGQgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvdXRp bHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQgICAgIHwgICA3ICsKIHNyYy9iYWNrZW5kL3V0 aWxzL21pc2MvZ3VjX3RhYmxlcy5jICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC91 dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgfCAgIDIgKwogc3JjL2Jpbi9wZ193 YWxkdW1wLy5naXRpZ25vcmUgICAgICAgICAgICAgICAgIHwgICA5ICsKIHNyYy9iaW4vcGdf d2FsZHVtcC9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICB8ICAyNiArLQogc3JjL2Jpbi9w Z193YWxkdW1wL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNs dWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oICAgICAgICAgICAgICB8ICAgOCArLQogc3JjL2lu Y2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nX2Rmb3IuaCAgICAgICAgIHwgMTM3ICsrKysrKysr Kwogc3JjL3Rlc3QvZGZvci9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgIHwgICAy ICsKIC4uLi9yZWNvdmVyeS90LzA1Ml9wcnVuZV9kZm9yX2NvbXByZXNzaW9uLnBsICB8IDI4 MyArKysrKysrKysrKysrKysrKysKIDE2IGZpbGVzIGNoYW5nZWQsIDc1NSBpbnNlcnRpb25z KCspLCAzNCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9h Y2Nlc3Mvcm1ncmRlc2MvaGVhcGFtX3hsb2dfZGZvci5jCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nX2Rmb3IuaAogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyYy90ZXN0L3JlY292ZXJ5L3QvMDUyX3BydW5lX2Rmb3JfY29tcHJlc3Npb24ucGwK CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwppbmRleCBmM2Y0MTlkM2Rj MS4uMmVjYmQyNzdjMDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hl YXBhbV94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cu YwpAQCAtMTYsNiArMTYsNyBAQAogCiAjaW5jbHVkZSAiYWNjZXNzL2J1Zm1hc2suaCIKICNp bmNsdWRlICJhY2Nlc3MvaGVhcGFtLmgiCisjaW5jbHVkZSAiYWNjZXNzL2hlYXBhbV94bG9n X2Rmb3IuaCIKICNpbmNsdWRlICJhY2Nlc3MvdmlzaWJpbGl0eW1hcC5oIgogI2luY2x1ZGUg ImFjY2Vzcy94bG9nLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2d1dGlscy5oIgpAQCAtMTA1 LDExICsxMDYsMjAgQEAgaGVhcF94bG9nX3BydW5lX2ZyZWV6ZShYTG9nUmVhZGVyU3RhdGUg KnJlY29yZCkKIAkJY2hhcgkgICAqZGF0YXB0ciA9IFhMb2dSZWNHZXRCbG9ja0RhdGEocmVj b3JkLCAwLCAmZGF0YWxlbik7CiAJCWJvb2wJCWRvX3BydW5lOwogCisJCS8qCisJCSAqIERG b1IgdW5wYWNraW5nIG5lZWRzIG91dGVyIGJ1ZmZlcnMgZm9yIHNhdmluZyByZXN1bHRzIGFu ZCBmb3IKKwkJICogYWxsb2NhdGluZyBjb250YWluZXJzIHVzZWQgZHVyaW5nIGRlY29tcHJl c3Npb24uIDIgYnVmZmVyIHBhcnRzIGFyZQorCQkgKiBpbnRlbmRlZCBmb3Igc2F2aW5nIHNl cXVlbmNlcyBvZiBvZmZzZXRzIG9mIGRlYWQgYW5kIHVudXNlZCB0dXBsZXMuCisJCSAqIEFk ZGl0aW9uYWwgdGhyZWUgY2h1bmtzIGFyZSBuZWVkZWQgZm9yIGludGVybmFsIG5lZWRzIG9m IHRoZQorCQkgKiBkZm9yX3VucGFjayBmdW5jdGlvbi4KKwkJICovCisJCXVpbnQ4IGRmb3Jf YnVmWzUgKiBERk9SX0JVRl9QQVJUX1NJWkVdOworCiAJCWhlYXBfeGxvZ19kZXNlcmlhbGl6 ZV9wcnVuZV9hbmRfZnJlZXplKGRhdGFwdHIsIHhscmVjLmZsYWdzLAogCQkJCQkJCQkJCQkg ICAmbnBsYW5zLCAmcGxhbnMsICZmcnpfb2Zmc2V0cywKIAkJCQkJCQkJCQkJICAgJm5yZWRp cmVjdGVkLCAmcmVkaXJlY3RlZCwKIAkJCQkJCQkJCQkJICAgJm5kZWFkLCAmbm93ZGVhZCwK LQkJCQkJCQkJCQkJICAgJm51bnVzZWQsICZub3d1bnVzZWQpOworCQkJCQkJCQkJCQkgICAm bnVudXNlZCwgJm5vd3VudXNlZCwgZGZvcl9idWYpOwogCiAJCWRvX3BydW5lID0gbnJlZGly ZWN0ZWQgPiAwIHx8IG5kZWFkID4gMCB8fCBudW51c2VkID4gMDsKIApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCA3NGMzNTViZTIxOS4uYTdkZTllYTdiMDUgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC0xNiw2ICsxNiw3IEBACiAK ICNpbmNsdWRlICJhY2Nlc3MvaGVhcGFtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL2hlYXBhbV94 bG9nLmgiCisjaW5jbHVkZSAiYWNjZXNzL2hlYXBhbV94bG9nX2Rmb3IuaCIKICNpbmNsdWRl ICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCiAjaW5jbHVkZSAiYWNjZXNzL211bHRpeGFjdC5o IgogI2luY2x1ZGUgImFjY2Vzcy90cmFuc2FtLmgiCkBAIC0yMzgsNyArMjM5LDYgQEAgc3Rh dGljIGJvb2wgaGVhcF9wYWdlX3dpbGxfZnJlZXplKGJvb2wgZGlkX3R1cGxlX2hpbnRfZnBp LCBib29sIGRvX3BydW5lLCBib29sIGQKIHN0YXRpYyBib29sIGhlYXBfcGFnZV93aWxsX3Nl dF92bShQcnVuZVN0YXRlICpwcnN0YXRlLCBQcnVuZVJlYXNvbiByZWFzb24sCiAJCQkJCQkJ CSAgYm9vbCBkb19wcnVuZSwgYm9vbCBkb19mcmVlemUpOwogCi0KIC8qCiAgKiBPcHRpb25h bGx5IHBydW5lIGFuZCByZXBhaXIgZnJhZ21lbnRhdGlvbiBpbiB0aGUgc3BlY2lmaWVkIHBh Z2UuCiAgKgpAQCAtMjUyOSw2ICsyNTI5LDI0IEBAIGhlYXBfbG9nX2ZyZWV6ZV9wbGFuKEhl YXBUdXBsZUZyZWV6ZSAqdHVwbGVzLCBpbnQgbnR1cGxlcywKIAlyZXR1cm4gbnBsYW5zOwog fQogCisvKgorICogQ29tcGFyYXRvciBmb3Igb2Zmc2V0cy4KKyAqLworc3RhdGljIGludAor b2Zmc2V0X2NtcChjb25zdCB2b2lkICphcmcxLCBjb25zdCB2b2lkICphcmcyKQoreworCWNv bnN0IE9mZnNldE51bWJlciAqb2Zmc2V0MSA9IGFyZzE7CisJY29uc3QgT2Zmc2V0TnVtYmVy ICpvZmZzZXQyID0gYXJnMjsKKwlyZXR1cm4gKCpvZmZzZXQxID4gKm9mZnNldDIpIC0gKCpv ZmZzZXQxIDwgKm9mZnNldDIpOworfQorCisjZGVmaW5lIFNUX1NPUlQgc29ydF9vZmZzZXRz CisjZGVmaW5lIFNUX0VMRU1FTlRfVFlQRV9WT0lECisjZGVmaW5lIFNUX0NPTVBBUkUoYSwg Yikgb2Zmc2V0X2NtcChhLCBiKQorI2RlZmluZSBTVF9TQ09QRSBzdGF0aWMKKyNkZWZpbmUg U1RfREVGSU5FCisjaW5jbHVkZSAibGliL3NvcnRfdGVtcGxhdGUuaCIKKwogLyoKICAqIFdy aXRlIGFuIFhMT0dfSEVBUDJfUFJVTkUqIFdBTCByZWNvcmQKICAqCkBAIC0yNTg2LDExICsy NjA0LDM0IEBAIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24s IEJ1ZmZlciBidWZmZXIsCiAJYm9vbAkJZG9fc2V0X3ZtID0gdm1mbGFncyAmIFZJU0lCSUxJ VFlNQVBfVkFMSURfQklUUzsKIAlib29sCQloZWFwX2ZwaV9hbGxvd2VkID0gdHJ1ZTsKIAor CWRmb3JfbWV0YV90IGRlYWRfbWV0YSA9IHsgMCB9OworCWRmb3JfbWV0YV90IHVudXNlZF9t ZXRhID0geyAwIH07CisKKwl1aW50OCBkZWFkX21ldGFfcGFja1tNQVhfUEFDS0VEX01FVEFf U0laRV07CisJdWludDggdW51c2VkX21ldGFfcGFja1tNQVhfUEFDS0VEX01FVEFfU0laRV07 CisKKwkvKgorCSAqIFNpbmNlIHRoaXMgY29kZSBpcyBydW4gaW4gYSBjcml0aWNhbCBzZWN0 aW9uIHdlIGNhbid0IHVzZSBkeW5hbWljCisJICogYWxsb2NhdGlvbiBkdXJpbmcgREZvUiBw YWNraW5nLCBidXQgd2UgY2FuIHVzZSBidWZmZXJzIGFsbG9jYXRlZCBpbiB0aGUKKwkgKiBz dGFjay4gV2UgbmVlZCBhdCBtYXhpbXVtOgorCSAqIDEpIDIgKiBERk9SX0JVRl9QQVJUX1NJ WkUKKwkgKiAgICAgICAgLSBmb3IgMiBwYWNrZWQgc2VxdWVuY2VzOiBkZWFkLCB1bnVzZWQK KwkgKiAyKSAzICogREZPUl9CVUZfUEFSVF9TSVpFCisJICogCQkgIC0gZm9yIGludGVybmFs IG5lZWRzIG9mIHRoZSBkZm9yX3BhY2sgZnVuY3Rpb24uCisJICoKKwkgKiBPdmVyYWxsLCA1 ICogREZPUl9CVUZfUEFSVF9TSVpFCisJICovCisJdWludDggZGZvcl9idWZbNSAqIERGT1Jf QlVGX1BBUlRfU0laRV07CisKIAlBc3NlcnQoKHZtZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZB TElEX0JJVFMpID09IHZtZmxhZ3MpOwogCiAJeGxyZWMuZmxhZ3MgPSAwOwogCXJlZ2J1Zl9m bGFnc19oZWFwID0gUkVHQlVGX1NUQU5EQVJEOwogCisJLyogSGV1cmlzdGljYWxseSBlc3Rp bWF0ZWQgdGhyZXNob2xkIGZvciB0dXJuaW5nIG9uIERGb1IgY29tcHJlc3Npb24gKi8KKwlp ZiAod2FsX3BydW5lX2Rmb3JfY29tcHJlc3Npb24gJiYgKG5kZWFkID4gOSB8fCBudW51c2Vk ID4gOSkpCisJCXhscmVjLmZsYWdzIHw9IFhMSFBfREZPUl9DT01QUkVTU0VEOworCiAJLyoK IAkgKiBXZSBjYW4gYXZvaWQgYW4gRlBJIG9mIHRoZSBoZWFwIHBhZ2UgaWYgdGhlIG9ubHkg bW9kaWZpY2F0aW9uIHdlIGFyZQogCSAqIG1ha2luZyB0byBpdCBpcyB0byBzZXQgUERfQUxM X1ZJU0lCTEUgYW5kIGNoZWNrc3Vtcy93YWxfbG9nX2hpbnRzIGFyZQpAQCAtMjYyMiw2ICsy NjYzLDEwIEBAIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24s IEJ1ZmZlciBidWZmZXIsCiAJaWYgKGRvX3NldF92bSkKIAkJWExvZ1JlZ2lzdGVyQnVmZmVy KDEsIHZtYnVmZmVyLCAwKTsKIAorCS8qCisJICogeGxocF9mcmVlemVfcGxhbnMgaXMgYXJy YXkgb2Ygc3RydWN0dXJlcyBhbmQgaXMgbm90IGEgc2VxdWVuY2UKKwkgKiBvZiBpbnRlZ2Vy cywgdGhhdCBpcyB3aHkgd2UgY2Fubm90IHVzZSBERm9SIGNvbXByZXNzaW9uIGhlcmUuCisJ ICovCiAJaWYgKG5mcm96ZW4gPiAwKQogCXsKIAkJaW50CQkJbnBsYW5zOwpAQCAtMjY1MCwy NiArMjY5NSw5MiBAQCBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0 aW9uLCBCdWZmZXIgYnVmZmVyLAogCQlYTG9nUmVnaXN0ZXJCdWZEYXRhKDAsIHJlZGlyZWN0 ZWQsCiAJCQkJCQkJc2l6ZW9mKE9mZnNldE51bWJlclsyXSkgKiBucmVkaXJlY3RlZCk7CiAJ fQotCWlmIChuZGVhZCA+IDApCisJaWYgKCh4bHJlYy5mbGFncyAmIFhMSFBfREZPUl9DT01Q UkVTU0VEKSAhPSAwKQogCXsKLQkJeGxyZWMuZmxhZ3MgfD0gWExIUF9IQVNfREVBRF9JVEVN UzsKKwkJaW50IGRlYWRfcGFja19yZXMgPSAwOworCQlpbnQgdW51c2VkX3BhY2tfcmVzID0g MDsKIAotCQlkZWFkX2l0ZW1zLm50YXJnZXRzID0gbmRlYWQ7Ci0JCVhMb2dSZWdpc3RlckJ1 ZkRhdGEoMCwgJmRlYWRfaXRlbXMsCi0JCQkJCQkJb2Zmc2V0b2YoeGxocF9wcnVuZV9pdGVt cywgZGF0YSkpOwotCQlYTG9nUmVnaXN0ZXJCdWZEYXRhKDAsIGRlYWQsCi0JCQkJCQkJc2l6 ZW9mKE9mZnNldE51bWJlcikgKiBuZGVhZCk7CisJCS8qCisJCSAqIERlYWQgdHVwbGUgb2Zm c2V0cyBhcmUgc3ViamVjdCB0byBiZSBwYWNrZWQgd2l0aCBERm9SLgorCQkgKiBBZnRlciB0 aGF0IHdlIGhhdmU6CisJCSAqIAkJZGVhZF9tZXRhLnBhY2sgPSBkZm9yX2J1ZiArIERGT1Jf QlVGX1BBUlRfU0laRTsKKwkJICovCisJCWlmIChuZGVhZCA+IDApCisJCXsKKwkJCXNvcnRf b2Zmc2V0cyhkZWFkLCBuZGVhZCwgc2l6ZW9mKE9mZnNldE51bWJlcikpOworCQkJZGVhZF9w YWNrX3JlcyA9IGRmb3JfdTE2X3BhY2sobmRlYWQsIGRlYWQsIERGT1JfRVhDX1VTRSwgJmRl YWRfbWV0YSwKKwkJCQkJCQkJCQkgIDQgKiBERk9SX0JVRl9QQVJUX1NJWkUsIGRmb3JfYnVm KTsKKwkJfQorCisJCS8qCisJCSAqIFVudXNlZCB0dXBsZSBvZmZzZXRzIGFyZSBzdWJqZWN0 IHRvIGJlIHBhY2tlZCB3aXRoIERGb1IuCisJCSAqIEFmdGVyIHRoYXQgd2UgaGF2ZToKKwkJ ICogCQl1bnVzZWRfbWV0YS5wYWNrID0gZGZvcl9idWYgKyAyICogREZPUl9CVUZfUEFSVF9T SVpFOworCQkgKi8KKwkJaWYgKG51bnVzZWQgPiAwKQorCQl7CisJCQlzb3J0X29mZnNldHMo dW51c2VkLCBudW51c2VkLCBzaXplb2YoT2Zmc2V0TnVtYmVyKSk7CisJCQl1bnVzZWRfcGFj a19yZXMgPSBkZm9yX3UxNl9wYWNrKG51bnVzZWQsIHVudXNlZCwgREZPUl9FWENfVVNFLAor CQkJCQkJCQkJCQkmdW51c2VkX21ldGEsCisJCQkJCQkJCQkJCTQgKiBERk9SX0JVRl9QQVJU X1NJWkUsCisJCQkJCQkJCQkJCWRmb3JfYnVmICsgREZPUl9CVUZfUEFSVF9TSVpFKTsKKwkJ fQorCisJCWlmIChkZWFkX3BhY2tfcmVzID09IDAgJiYgdW51c2VkX3BhY2tfcmVzID09IDAp CisJCXsKKwkJCS8qIEFsbCBzdGFnZXMgb2YgcGFja2luZyBoYXZlIHN1Y2NlZWRlZC4gV2Ug Y2FuIHNhdmUgREZvUiBwYWNrZXRzCisJCQkgKiBpbnRvIGxvZyAqLworCQkJc2l6ZV90IG1l dGFfcGFja19zejsKKwkJCWlmIChuZGVhZCA+IDApCisJCQl7CisJCQkJeGxyZWMuZmxhZ3Mg fD0gWExIUF9IQVNfREVBRF9JVEVNUzsKKworCQkJCW1ldGFfcGFja19zeiA9IGxvZ19oZWFw X3BydW5lX2FuZF9mcmVlemVfcGFja19tZXRhKAorCQkJCQkmZGVhZF9tZXRhLCBkZWFkX21l dGFfcGFjayk7CisKKwkJCQlYTG9nUmVnaXN0ZXJCdWZEYXRhKDAsICZkZWFkX21ldGFfcGFj aywgbWV0YV9wYWNrX3N6KTsKKwkJCQlYTG9nUmVnaXN0ZXJCdWZEYXRhKDAsIGRlYWRfbWV0 YS5wYWNrLCBkZWFkX21ldGEubmJ5dGVzKTsKKwkJCX0KKwkJCWlmIChudW51c2VkID4gMCkK KwkJCXsKKwkJCQl4bHJlYy5mbGFncyB8PSBYTEhQX0hBU19OT1dfVU5VU0VEX0lURU1TOwor CisJCQkJbWV0YV9wYWNrX3N6ID0gbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZV9wYWNrX21l dGEoCisJCQkJCSZ1bnVzZWRfbWV0YSwgdW51c2VkX21ldGFfcGFjayk7CisKKwkJCQlYTG9n UmVnaXN0ZXJCdWZEYXRhKDAsICZ1bnVzZWRfbWV0YV9wYWNrLCBtZXRhX3BhY2tfc3opOwor CQkJCVhMb2dSZWdpc3RlckJ1ZkRhdGEoMCwgdW51c2VkX21ldGEucGFjaywgdW51c2VkX21l dGEubmJ5dGVzKTsKKwkJCX0KKwkJfQorCQllbHNlCisJCXsKKwkJCS8qIE90aGVyd2lzZSwg d2UgY2FuJ3QgdXNlIERGb1IgY29tcHJlc3Npb24gKi8KKwkJCXhscmVjLmZsYWdzICY9IH5Y TEhQX0RGT1JfQ09NUFJFU1NFRDsKKwkJfQogCX0KLQlpZiAobnVudXNlZCA+IDApCisKKwlp ZiAoKHhscmVjLmZsYWdzICYgWExIUF9ERk9SX0NPTVBSRVNTRUQpID09IDApCiAJewotCQl4 bHJlYy5mbGFncyB8PSBYTEhQX0hBU19OT1dfVU5VU0VEX0lURU1TOworCQlpZiAobmRlYWQg PiAwKQorCQl7CisJCQl4bHJlYy5mbGFncyB8PSBYTEhQX0hBU19ERUFEX0lURU1TOwogCi0J CXVudXNlZF9pdGVtcy5udGFyZ2V0cyA9IG51bnVzZWQ7Ci0JCVhMb2dSZWdpc3RlckJ1ZkRh dGEoMCwgJnVudXNlZF9pdGVtcywKLQkJCQkJCQlvZmZzZXRvZih4bGhwX3BydW5lX2l0ZW1z LCBkYXRhKSk7Ci0JCVhMb2dSZWdpc3RlckJ1ZkRhdGEoMCwgdW51c2VkLAotCQkJCQkJCXNp emVvZihPZmZzZXROdW1iZXIpICogbnVudXNlZCk7CisJCQlkZWFkX2l0ZW1zLm50YXJnZXRz ID0gbmRlYWQ7CisJCQlYTG9nUmVnaXN0ZXJCdWZEYXRhKDAsICZkZWFkX2l0ZW1zLAorCQkJ CQkJCQlvZmZzZXRvZih4bGhwX3BydW5lX2l0ZW1zLCBkYXRhKSk7CisJCQlYTG9nUmVnaXN0 ZXJCdWZEYXRhKDAsIGRlYWQsIHNpemVvZihPZmZzZXROdW1iZXIpICogbmRlYWQpOworCQl9 CisJCWlmIChudW51c2VkID4gMCkKKwkJeworCQkJeGxyZWMuZmxhZ3MgfD0gWExIUF9IQVNf Tk9XX1VOVVNFRF9JVEVNUzsKKworCQkJdW51c2VkX2l0ZW1zLm50YXJnZXRzID0gbnVudXNl ZDsKKwkJCVhMb2dSZWdpc3RlckJ1ZkRhdGEoMCwgJnVudXNlZF9pdGVtcywKKwkJCQkJCQkJ b2Zmc2V0b2YoeGxocF9wcnVuZV9pdGVtcywgZGF0YSkpOworCQkJWExvZ1JlZ2lzdGVyQnVm RGF0YSgwLCB1bnVzZWQsIHNpemVvZihPZmZzZXROdW1iZXIpICogbnVudXNlZCk7CisJCX0K IAl9CisKIAlpZiAobmZyb3plbiA+IDApCiAJCVhMb2dSZWdpc3RlckJ1ZkRhdGEoMCwgZnJ6 X29mZnNldHMsCiAJCQkJCQkJc2l6ZW9mKE9mZnNldE51bWJlcikgKiBuZnJvemVuKTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9NYWtlZmlsZSBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9NYWtlZmlsZQppbmRleCBjZDk1ZWVjMzdmMS4uNDll OWM0NjE0NWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9NYWtl ZmlsZQorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvTWFrZWZpbGUKQEAgLTE3 LDYgKzE3LDcgQEAgT0JKUyA9IFwKIAlnaW5kZXNjLm8gXAogCWdpc3RkZXNjLm8gXAogCWhh c2hkZXNjLm8gXAorCWhlYXBhbV94bG9nX2Rmb3IubyBcCiAJaGVhcGRlc2MubyBcCiAJbG9n aWNhbG1zZ2Rlc2MubyBcCiAJbXhhY3RkZXNjLm8gXApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBhbV94bG9nX2Rmb3IuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9ybWdyZGVzYy9oZWFwYW1feGxvZ19kZm9yLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLjQ3ZmEwMDBlMzY3Ci0tLSAvZGV2L251bGwKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBhbV94bG9nX2Rmb3IuYwpAQCAtMCwwICsx LDEwOSBAQAorI2luY2x1ZGUgImxpYi9iaXRwYWNrX3UxNi5oIgorI2luY2x1ZGUgImFjY2Vz cy9oZWFwYW1feGxvZ19kZm9yLmgiCisKK2Jvb2wgd2FsX3BydW5lX2Rmb3JfY29tcHJlc3Np b24gPSB0cnVlOworCitzaXplX3QKK2xvZ19oZWFwX3BydW5lX2FuZF9mcmVlemVfcGFja19t ZXRhKGNvbnN0IGRmb3JfbWV0YV90ICptZXRhLCB1aW50OCBidWZbXSkKK3sKKwlzaXplX3Qg Y2FyZXQgPSAwOworCWNhcmV0ID0gYml0cGFja191MTZfcGFjayhidWYsIGNhcmV0LCBtZXRh LT5pdGVtX2NudCwKKwkJCQkJCQkgWExIUEZfTUVUQV9JVEVNX0NPVU5UX1NaKTsKKwljYXJl dCA9IGJpdHBhY2tfdTE2X3BhY2soYnVmLCBjYXJldCwgbWV0YS0+ZGVsdGFfd2lkLAorCQkJ CQkJCSBYTEhQRl9NRVRBX0RFTFRBX1dJRFRIX1NaKTsKKwljYXJldCA9IGJpdHBhY2tfdTE2 X3BhY2soYnVmLCBjYXJldCwgKG1ldGEtPmV4Y19jbnQgPT0gMCkgPyAwIDogMSwKKwkJCQkJ CQkgWExIUEZfTUVUQV9FWENFUFRJT05fRkxBR19TWik7CisJaWYgKG1ldGEtPmV4Y19jbnQg IT0gMCkKKwl7CisJCWNhcmV0ID0gYml0cGFja191MTZfcGFjayhidWYsIGNhcmV0LCBtZXRh LT5leGNfY250LAorCQkJCQkJCQkgWExIUEZfTUVUQV9FWENFUFRJT05fQ09VTlRfU1opOwor CQljYXJldCA9IGJpdHBhY2tfdTE2X3BhY2soYnVmLCBjYXJldCwgbWV0YS0+ZXhjX3dpZCwK KwkJCQkJCQkJIFhMSFBGX01FVEFfRVhDRVBUSU9OX1dJRFRIX1NaKTsKKwkJY2FyZXQgPSBi aXRwYWNrX3UxNl9wYWNrKGJ1ZiwgY2FyZXQsIG1ldGEtPmV4Y19wb3Nfd2lkLAorCQkJCQkJ CQkgWExIUEZfTUVUQV9FWENFUFRJT05fUE9TSVRJT05fV0lEVEhfU1opOworCX0KKwlBc3Nl cnQobWV0YS0+aXRlbV9jbnQgIT0gMCk7CisJQXNzZXJ0KG1ldGEtPmRlbHRhX3dpZCAhPSAw KTsKKwlBc3NlcnQobWV0YS0+bmJ5dGVzICE9IDApOworCisjaWZkZWYgVVNFX0FTU0VSVF9D SEVDS0lORworCXsKKwkJZGZvcl9tZXRhX3QgY2hlY2tlcjsKKwkJbG9nX2hlYXBfcHJ1bmVf YW5kX2ZyZWV6ZV91bnBhY2tfbWV0YSgmY2hlY2tlciwgYnVmKTsKKwkJQXNzZXJ0KG1ldGEt Pml0ZW1fY250ID09IGNoZWNrZXIuaXRlbV9jbnQpOworCQlBc3NlcnQobWV0YS0+ZGVsdGFf d2lkID09IGNoZWNrZXIuZGVsdGFfd2lkKTsKKwkJQXNzZXJ0KG1ldGEtPmV4Y19jbnQgPT0g Y2hlY2tlci5leGNfY250KTsKKwkJQXNzZXJ0KG1ldGEtPmV4Y193aWQgPT0gY2hlY2tlci5l eGNfd2lkKTsKKwkJQXNzZXJ0KG1ldGEtPmV4Y19wb3Nfd2lkID09IGNoZWNrZXIuZXhjX3Bv c193aWQpOworCX0KKyNlbmRpZgorCXJldHVybiAoY2FyZXQgKyA3KSAvIDg7IC8qIHRoZSBs ZW5ndGggb2YgcGFja2VkIGRmb3JfbWV0YSwgaW4gYnl0ZXMqLworfQorCitzaXplX3QKK2xv Z19oZWFwX3BydW5lX2FuZF9mcmVlemVfdW5wYWNrX21ldGEoZGZvcl9tZXRhX3QgKm1ldGEs CisJCQkJCQkJCQkgIGNvbnN0IHVpbnQ4IHBhY2tlZF9tZXRhW10pCit7CisJc2l6ZV90IGNh cmV0ID0gMDsKKwlib29sIGV4YzsKKworCW1ldGEtPml0ZW1fY250ID0gYml0cGFja191MTZf dW5wYWNrKHBhY2tlZF9tZXRhLCAmY2FyZXQsCisJCQkJCQkJCQkJWExIUEZfTUVUQV9JVEVN X0NPVU5UX1NaKTsKKwltZXRhLT5kZWx0YV93aWQgPSBiaXRwYWNrX3UxNl91bnBhY2socGFj a2VkX21ldGEsICZjYXJldCwKKwkJCQkJCQkJCQkgWExIUEZfTUVUQV9ERUxUQV9XSURUSF9T Wik7CisJZXhjID0gYml0cGFja191MTZfdW5wYWNrKHBhY2tlZF9tZXRhLCAmY2FyZXQsIFhM SFBGX01FVEFfRVhDRVBUSU9OX0ZMQUdfU1opOworCisJaWYgKGV4YykKKwl7CisJCW1ldGEt PmV4Y19jbnQgPSBiaXRwYWNrX3UxNl91bnBhY2socGFja2VkX21ldGEsICZjYXJldCwKKwkJ CQkJCQkJCQkgWExIUEZfTUVUQV9FWENFUFRJT05fQ09VTlRfU1opOworCQltZXRhLT5leGNf d2lkID0gYml0cGFja191MTZfdW5wYWNrKHBhY2tlZF9tZXRhLCAmY2FyZXQsCisJCQkJCQkJ CQkJIFhMSFBGX01FVEFfRVhDRVBUSU9OX1dJRFRIX1NaKTsKKwkJbWV0YS0+ZXhjX3Bvc193 aWQgPQorCQkJYml0cGFja191MTZfdW5wYWNrKHBhY2tlZF9tZXRhLCAmY2FyZXQsCisJCQkJ CQkJICAgWExIUEZfTUVUQV9FWENFUFRJT05fUE9TSVRJT05fV0lEVEhfU1opOworCX0KKwll bHNlCisJeworCQltZXRhLT5leGNfY250ID0gMDsKKwkJbWV0YS0+ZXhjX3dpZCA9IDA7CisJ CW1ldGEtPmV4Y19wb3Nfd2lkID0gMDsKKwl9CisJbWV0YS0+bmJ5dGVzID0gZGZvcl91MTZf Y2FsY19uYnl0ZXMoKm1ldGEpOworCisJQXNzZXJ0KG1ldGEtPml0ZW1fY250ICE9IDApOwor CUFzc2VydChtZXRhLT5kZWx0YV93aWQgIT0gMCk7CisJQXNzZXJ0KG1ldGEtPm5ieXRlcyAh PSAwKTsKKworCXJldHVybiAoY2FyZXQgKyA3KSAvIDg7Cit9CisKK3ZvaWQKK2hlYXBfeGxv Z19kZXNlcmlhbGl6ZV9kZm9yKGNoYXIgKipjdXJzb3IsIGludCAqbml0ZW1zLAorCQkJCQkJ ICAgT2Zmc2V0TnVtYmVyICoqaXRlbXMsCisJCQkJCQkgICB1aW50OCBkZm9yX2J1ZltdKQor eworCWRmb3JfbWV0YV90IGRmb3IgPSB7MH07CisJc2l6ZV90IHBhY2tlZF9tZXRhX25ieXRl czsKKwl1bmlxc29ydHZlY3RfdTE2X3QgdmVjdDsKKworCXBhY2tlZF9tZXRhX25ieXRlcyA9 CisJCWxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemVfdW5wYWNrX21ldGEoJmRmb3IsICh1aW50 OCopICpjdXJzb3IpOworCisJKmN1cnNvciArPSBwYWNrZWRfbWV0YV9uYnl0ZXM7CisKKwlk Zm9yLnBhY2sgPSAodWludDggKikqY3Vyc29yOworCWRmb3JfdTE2X3VucGFjaygmZGZvciwg JnZlY3QsIDQgKiBERk9SX0JVRl9QQVJUX1NJWkUsCisJCQkJCWRmb3JfYnVmKTsKKworCSpj dXJzb3IgKz0gZGZvci5uYnl0ZXM7CisKKwlBc3NlcnQoZGZvci5uYnl0ZXMgIT0gMCk7CisK KwlBc3NlcnQodmVjdC5jbnQgIT0gMCk7CisJQXNzZXJ0KHZlY3QubWVtX2lzX291dGVyID09 IHRydWUpOworCUFzc2VydCgodm9pZCopdmVjdC5tID09ICh2b2lkKilkZm9yX2J1Zik7CisK Kwkqbml0ZW1zID0gdmVjdC5jbnQ7CisJKml0ZW1zID0gdmVjdC5tOworfQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYwppbmRleCA3NWFlNmY5ZDM3NS4uMjQ0NmYx NTg3MjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVz Yy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jCkBAIC0x NSw2ICsxNSw3IEBACiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAogI2luY2x1ZGUgImFjY2Vz cy9oZWFwYW1feGxvZy5oIgorI2luY2x1ZGUgImFjY2Vzcy9oZWFwYW1feGxvZ19kZm9yLmgi CiAjaW5jbHVkZSAiYWNjZXNzL3JtZ3JkZXNjX3V0aWxzLmgiCiAjaW5jbHVkZSAiYWNjZXNz L3Zpc2liaWxpdHltYXBkZWZzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zdGFuZGJ5ZGVmcy5o IgpAQCAtMTA4LDcgKzEwOSw4IEBAIGhlYXBfeGxvZ19kZXNlcmlhbGl6ZV9wcnVuZV9hbmRf ZnJlZXplKGNoYXIgKmN1cnNvciwgdWludDE2IGZsYWdzLAogCQkJCQkJCQkJICAgT2Zmc2V0 TnVtYmVyICoqZnJ6X29mZnNldHMsCiAJCQkJCQkJCQkgICBpbnQgKm5yZWRpcmVjdGVkLCBP ZmZzZXROdW1iZXIgKipyZWRpcmVjdGVkLAogCQkJCQkJCQkJICAgaW50ICpuZGVhZCwgT2Zm c2V0TnVtYmVyICoqbm93ZGVhZCwKLQkJCQkJCQkJCSAgIGludCAqbnVudXNlZCwgT2Zmc2V0 TnVtYmVyICoqbm93dW51c2VkKQorCQkJCQkJCQkJICAgaW50ICpudW51c2VkLCBPZmZzZXRO dW1iZXIgKipub3d1bnVzZWQsCisJCQkJCQkJCQkgICB1aW50OCBkZm9yX2J1ZltdKQogewog CWlmIChmbGFncyAmIFhMSFBfSEFTX0ZSRUVaRV9QTEFOUykKIAl7CkBAIC0xNDYsMTQgKzE0 OCwyMiBAQCBoZWFwX3hsb2dfZGVzZXJpYWxpemVfcHJ1bmVfYW5kX2ZyZWV6ZShjaGFyICpj dXJzb3IsIHVpbnQxNiBmbGFncywKIAogCWlmIChmbGFncyAmIFhMSFBfSEFTX0RFQURfSVRF TVMpCiAJewotCQl4bGhwX3BydW5lX2l0ZW1zICpzdWJyZWNvcmQgPSAoeGxocF9wcnVuZV9p dGVtcyAqKSBjdXJzb3I7CisJCWlmKCEoZmxhZ3MgJiBYTEhQX0RGT1JfQ09NUFJFU1NFRCkp CisJCXsKKwkJCXhsaHBfcHJ1bmVfaXRlbXMgKnN1YnJlY29yZCA9ICh4bGhwX3BydW5lX2l0 ZW1zICopIGN1cnNvcjsKIAotCQkqbmRlYWQgPSBzdWJyZWNvcmQtPm50YXJnZXRzOwotCQlB c3NlcnQoKm5kZWFkID4gMCk7Ci0JCSpub3dkZWFkID0gc3VicmVjb3JkLT5kYXRhOworCQkJ Km5kZWFkID0gc3VicmVjb3JkLT5udGFyZ2V0czsKKwkJCUFzc2VydCgqbmRlYWQgPiAwKTsK KwkJCSpub3dkZWFkID0gc3VicmVjb3JkLT5kYXRhOwogCi0JCWN1cnNvciArPSBvZmZzZXRv Zih4bGhwX3BydW5lX2l0ZW1zLCBkYXRhKTsKLQkJY3Vyc29yICs9IHNpemVvZihPZmZzZXRO dW1iZXIpICogKm5kZWFkOworCQkJY3Vyc29yICs9IG9mZnNldG9mKHhsaHBfcHJ1bmVfaXRl bXMsIGRhdGEpOworCQkJY3Vyc29yICs9IHNpemVvZihPZmZzZXROdW1iZXIpICogKm5kZWFk OworCQl9CisJCWVsc2UKKwkJeworCQkJaGVhcF94bG9nX2Rlc2VyaWFsaXplX2Rmb3IoJmN1 cnNvciwgbmRlYWQsIG5vd2RlYWQsCisJCQkJCQkJCQkgICBkZm9yX2J1Zik7CisJCX0KIAl9 CiAJZWxzZQogCXsKQEAgLTE2MywxNCArMTczLDIyIEBAIGhlYXBfeGxvZ19kZXNlcmlhbGl6 ZV9wcnVuZV9hbmRfZnJlZXplKGNoYXIgKmN1cnNvciwgdWludDE2IGZsYWdzLAogCiAJaWYg KGZsYWdzICYgWExIUF9IQVNfTk9XX1VOVVNFRF9JVEVNUykKIAl7Ci0JCXhsaHBfcHJ1bmVf aXRlbXMgKnN1YnJlY29yZCA9ICh4bGhwX3BydW5lX2l0ZW1zICopIGN1cnNvcjsKKwkJaWYo IShmbGFncyAmIFhMSFBfREZPUl9DT01QUkVTU0VEKSkKKwkJeworCQkJeGxocF9wcnVuZV9p dGVtcyAqc3VicmVjb3JkID0gKHhsaHBfcHJ1bmVfaXRlbXMgKikgY3Vyc29yOwogCi0JCSpu dW51c2VkID0gc3VicmVjb3JkLT5udGFyZ2V0czsKLQkJQXNzZXJ0KCpudW51c2VkID4gMCk7 Ci0JCSpub3d1bnVzZWQgPSBzdWJyZWNvcmQtPmRhdGE7CisJCQkqbnVudXNlZCA9IHN1YnJl Y29yZC0+bnRhcmdldHM7CisJCQlBc3NlcnQoKm51bnVzZWQgPiAwKTsKKwkJCSpub3d1bnVz ZWQgPSBzdWJyZWNvcmQtPmRhdGE7CiAKLQkJY3Vyc29yICs9IG9mZnNldG9mKHhsaHBfcHJ1 bmVfaXRlbXMsIGRhdGEpOwotCQljdXJzb3IgKz0gc2l6ZW9mKE9mZnNldE51bWJlcikgKiAq bnVudXNlZDsKKwkJCWN1cnNvciArPSBvZmZzZXRvZih4bGhwX3BydW5lX2l0ZW1zLCBkYXRh KTsKKwkJCWN1cnNvciArPSBzaXplb2YoT2Zmc2V0TnVtYmVyKSAqICpudW51c2VkOworCQl9 CisJCWVsc2UKKwkJeworCQkJaGVhcF94bG9nX2Rlc2VyaWFsaXplX2Rmb3IoJmN1cnNvciwg bnVudXNlZCwgbm93dW51c2VkLAorCQkJCQkJCQkJICAgZGZvcl9idWYgKyBERk9SX0JVRl9Q QVJUX1NJWkUpOworCQl9CiAJfQogCWVsc2UKIAl7CkBAIC0zMDksMTMgKzMyNywxNiBAQCBo ZWFwMl9kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJ CXhsaHBfZnJlZXplX3BsYW4gKnBsYW5zOwogCQkJT2Zmc2V0TnVtYmVyICpmcnpfb2Zmc2V0 czsKIAorCQkJdWludDggZGZvcl9idWZbNSAqIERGT1JfQlVGX1BBUlRfU0laRV07CisKIAkJ CWNoYXIJICAgKmN1cnNvciA9IFhMb2dSZWNHZXRCbG9ja0RhdGEocmVjb3JkLCAwLCAmZGF0 YWxlbik7CiAKIAkJCWhlYXBfeGxvZ19kZXNlcmlhbGl6ZV9wcnVuZV9hbmRfZnJlZXplKGN1 cnNvciwgeGxyZWMtPmZsYWdzLAogCQkJCQkJCQkJCQkJICAgJm5wbGFucywgJnBsYW5zLCAm ZnJ6X29mZnNldHMsCiAJCQkJCQkJCQkJCQkgICAmbnJlZGlyZWN0ZWQsICZyZWRpcmVjdGVk LAogCQkJCQkJCQkJCQkJICAgJm5kZWFkLCAmbm93ZGVhZCwKLQkJCQkJCQkJCQkJCSAgICZu dW51c2VkLCAmbm93dW51c2VkKTsKKwkJCQkJCQkJCQkJCSAgICZudW51c2VkLCAmbm93dW51 c2VkLAorCQkJCQkJCQkJCQkJICAgZGZvcl9idWYpOwogCiAJCQlhcHBlbmRTdHJpbmdJbmZv KGJ1ZiwgIiwgbnBsYW5zOiAldSwgbnJlZGlyZWN0ZWQ6ICV1LCBuZGVhZDogJXUsIG51bnVz ZWQ6ICV1IiwKIAkJCQkJCQkgbnBsYW5zLCBucmVkaXJlY3RlZCwgbmRlYWQsIG51bnVzZWQp OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL21lc29uLmJ1aWxk IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL21lc29uLmJ1aWxkCmluZGV4IGQ5MDAw Y2NkOWZkLi42Y2VlYTQ1MTRlYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3Jt Z3JkZXNjL21lc29uLmJ1aWxkCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9t ZXNvbi5idWlsZApAQCAtMTEsNiArMTEsNyBAQCBybWdyX2Rlc2Nfc291cmNlcyA9IGZpbGVz KAogICAnZ2lzdGRlc2MuYycsCiAgICdoYXNoZGVzYy5jJywKICAgJ2hlYXBkZXNjLmMnLAor ICAnaGVhcGFtX3hsb2dfZGZvci5jJywKICAgJ2xvZ2ljYWxtc2dkZXNjLmMnLAogICAnbXhh Y3RkZXNjLmMnLAogICAnbmJ0ZGVzYy5jJywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0IGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9n dWNfcGFyYW1ldGVycy5kYXQKaW5kZXggODNhZjU5NGQ0YWYuLmM1M2UyOTIxYzAxIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdAorKysg Yi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdApAQCAtMzUwNyw2 ICszNTA3LDEzIEBACiAgIGJvb3RfdmFsID0+ICdmYWxzZScsCiB9LAogCit7IG5hbWUgPT4g J3dhbF9wcnVuZV9kZm9yX2NvbXByZXNzaW9uJywgdHlwZSA9PiAnYm9vbCcsIGNvbnRleHQg PT4gJ1BHQ19TVVNFVCcsIGdyb3VwID0+ICdXQUxfU0VUVElOR1MnLAorICBzaG9ydF9kZXNj ID0+ICdDb21wcmVzcyBkZWFkIGFuZCB1bnVzZWQgb2Zmc2V0IGFycmF5cyBhdCBQUlVORS9G UkVFWkUgV0FMIHJlY29yZHMgdXNpbmcgREZPUi4nLAorICBsb25nX2Rlc2MgPT4gJ0VuYWJs ZXMgY29tcHJlc3Npb24gb2YgZGVhZCBhbmQgdW51c2VkIE9mZnNldE51bWJlciBhcnJheXMg c3RvcmVkIGluIGhlYXAgUFJVTkUvRlJFRVpFIFdBTCByZWNvcmRzIHVzaW5nIGN1c3RvbWlz ZWQgZGVsdGEgZnJhbWUtb2YtcmVmZXJlbmNlIGVuY29kaW5nLicsCisgIHZhcmlhYmxlID0+ ICd3YWxfcHJ1bmVfZGZvcl9jb21wcmVzc2lvbicsCisgIGJvb3RfdmFsID0+ICd0cnVlJwor fSwKKwogeyBuYW1lID0+ICd3YWxfcmVjZWl2ZXJfY3JlYXRlX3RlbXBfc2xvdCcsIHR5cGUg PT4gJ2Jvb2wnLCBjb250ZXh0ID0+ICdQR0NfU0lHSFVQJywgZ3JvdXAgPT4gJ1JFUExJQ0FU SU9OX1NUQU5EQlknLAogICBzaG9ydF9kZXNjID0+ICdTZXRzIHdoZXRoZXIgYSBXQUwgcmVj ZWl2ZXIgc2hvdWxkIGNyZWF0ZSBhIHRlbXBvcmFyeSByZXBsaWNhdGlvbiBzbG90IGlmIG5v IHBlcm1hbmVudCBzbG90IGlzIGNvbmZpZ3VyZWQuJywKICAgdmFyaWFibGUgPT4gJ3dhbF9y ZWNlaXZlcl9jcmVhdGVfdGVtcF9zbG90JywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL21pc2MvZ3VjX3RhYmxlcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFi bGVzLmMKaW5kZXggMjkwY2NiYzU0M2UuLmJlZTYwYjJlYmNkIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9taXNjL2d1Y190YWJsZXMuYwpAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiYWNj ZXNzL2NvbW1pdF90cy5oIgogI2luY2x1ZGUgImFjY2Vzcy9naW4uaCIKKyNpbmNsdWRlICJh Y2Nlc3MvaGVhcGFtX3hsb2dfZGZvci5oIgogI2luY2x1ZGUgImFjY2Vzcy9zbHJ1LmgiCiAj aW5jbHVkZSAiYWNjZXNzL3RvYXN0X2NvbXByZXNzaW9uLmgiCiAjaW5jbHVkZSAiYWNjZXNz L3R3b3BoYXNlLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3Rn cmVzcWwuY29uZi5zYW1wbGUgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwu Y29uZi5zYW1wbGUKaW5kZXggYWMzOGNkZGFhZjkuLjQxNTJlNzg5ZWUxIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCkBAIC0yNjMs NiArMjYzLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj IChjaGFuZ2UgcmVxdWlyZXMgcmVzdGFydCkKICN3YWxfY29tcHJlc3Npb24gPSBvZmYgICAg ICAgICAgICAgICAgICAjIGVuYWJsZXMgY29tcHJlc3Npb24gb2YgZnVsbC1wYWdlIHdyaXRl czsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9mZiwgcGds eiwgbHo0LCB6c3RkLCBvciBvbgorI3dhbF9wcnVuZV9kZm9yX2NvbXByZXNzaW9uID0gdHJ1 ZSAgICAgICMgQ29tcHJlc3MgZGVhZCBhbmQgdW51c2VkIG9mZnNldCBhcnJheXMKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGF0IFBSVU5FL0ZSRUVaRSBX QUwgcmVjb3JkcyB1c2luZyBERk9SLgogI3dhbF9pbml0X3plcm8gPSBvbiAgICAgICAgICAg ICAgICAgICAgICMgemVyby1maWxsIG5ldyBXQUwgZmlsZXMKICN3YWxfcmVjeWNsZSA9IG9u ICAgICAgICAgICAgICAgICAgICAgICAjIHJlY3ljbGUgV0FMIGZpbGVzCiAjd2FsX2J1ZmZl cnMgPSAtMSAgICAgICAgICAgICAgICAgICAgICAgIyBtaW4gMzJrQiwgLTEgc2V0cyBiYXNl ZCBvbiBzaGFyZWRfYnVmZmVycwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ193YWxkdW1wLy5n aXRpZ25vcmUgYi9zcmMvYmluL3BnX3dhbGR1bXAvLmdpdGlnbm9yZQppbmRleCBlYzUxZjQx Yzc2Ny4uYTNjMDI0NDZiOWQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfd2FsZHVtcC8uZ2l0 aWdub3JlCisrKyBiL3NyYy9iaW4vcGdfd2FsZHVtcC8uZ2l0aWdub3JlCkBAIC0xMCw2ICsx MCw3IEBACiAvZ2lzdGRlc2MuYwogL2hhc2hkZXNjLmMKIC9oZWFwZGVzYy5jCisvaGVhcGFt X3hsb2dfZGZvci5jCiAvbG9naWNhbG1zZ2Rlc2MuYwogL214YWN0ZGVzYy5jCiAvbmJ0ZGVz Yy5jCkBAIC0yOCw1ICsyOSwxMyBAQAogL3hsb2dyZWFkZXIuYwogL3hsb2dzdGF0cy5jCiAK KyMgU291cmNlIGZpbGVzIGNvcGllZCBmcm9tIHNyYy9iYWNrZW5kL2xpYgorL2JpdHBhY2tf dGVtcGwuYworL2JpdHBhY2tfdTE2LmMKKy9kZm9yX3RlbXBsLmMKKy9kZm9yX3UxNi5jCisv dmVjdF90ZW1wbC5jCisvdmVjdF91MTYuYworCiAjIEdlbmVyYXRlZCBieSB0ZXN0IHN1aXRl CiAvdG1wX2NoZWNrLwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ193YWxkdW1wL01ha2VmaWxl IGIvc3JjL2Jpbi9wZ193YWxkdW1wL01ha2VmaWxlCmluZGV4IGFhYmI4NzU2NmEyLi41ZTUy MWMxZTgyMiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ193YWxkdW1wL01ha2VmaWxlCisrKyBi L3NyYy9iaW4vcGdfd2FsZHVtcC9NYWtlZmlsZQpAQCAtOCw4ICs4LDkgQEAgZXhwb3J0IFRB UgogCiBzdWJkaXIgPSBzcmMvYmluL3BnX3dhbGR1bXAKIHRvcF9idWlsZGRpciA9IC4uLy4u Ly4uCi1pbmNsdWRlICQodG9wX2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUuZ2xvYmFsCitkZm9y X2RpciA6PSAkKHRvcF9idWlsZGRpcikvc3JjL2JhY2tlbmQvbGliCiAKK2luY2x1ZGUgJCh0 b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwKIE9CSlMgPSBcCiAJJChSTUdSREVT Q09CSlMpIFwKIAkkKFdJTjMyUkVTKSBcCkBAIC0yMCwxMCArMjEsMTMgQEAgT0JKUyA9IFwK IAl4bG9ncmVhZGVyLm8gXAogCXhsb2dzdGF0cy5vCiAKK2luY2x1ZGUgJChkZm9yX2Rpcikv TWFrZWZpbGUuZGZvcgorT0JKUyArPSAkKE9CSlNfREZPUikKKwogb3ZlcnJpZGUgQ1BQRkxB R1MgOj0gLURGUk9OVEVORCAtSSQobGlicHFfc3JjZGlyKSAkKENQUEZMQUdTKQogTERGTEFH U19JTlRFUk5BTCArPSAtTCQodG9wX2J1aWxkZGlyKS9zcmMvZmVfdXRpbHMgLWxwZ2ZldXRp bHMKIAotUk1HUkRFU0NTT1VSQ0VTID0gJChzb3J0ICQobm90ZGlyICQod2lsZGNhcmQgJCh0 b3Bfc3JjZGlyKS9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvKmRlc2MqLmMpKSkKK1JN R1JERVNDU09VUkNFUyA9ICQoc29ydCAkKG5vdGRpciAkKHdpbGRjYXJkICQodG9wX3NyY2Rp cikvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjLypkZXNjKi5jKSkpIGhlYXBhbV94bG9n X2Rmb3IuYwogUk1HUkRFU0NPQkpTID0gJChwYXRzdWJzdCAlLmMsJS5vLCQoUk1HUkRFU0NT T1VSQ0VTKSkKIAogCkBAIC0zMiw2ICszNiwyNCBAQCBhbGw6IHBnX3dhbGR1bXAKIHBnX3dh bGR1bXA6ICQoT0JKUykgfCBzdWJtYWtlLWxpYnBncG9ydAogCSQoQ0MpICQoQ0ZMQUdTKSAk XiAkKExERkxBR1MpICQoTERGTEFHU19FWCkgJChMSUJTKSAtbyAkQCQoWCkKIAorYml0cGFj a190ZW1wbC5jOiAlIDogJCh0b3Bfc3JjZGlyKS9zcmMvYmFja2VuZC9saWIvJQorCXJtIC1m ICRAICYmICQoTE5fUykgJDwgLgorCitiaXRwYWNrX3UxNi5jOiAlIDogJCh0b3Bfc3JjZGly KS9zcmMvYmFja2VuZC9saWIvJSBiaXRwYWNrX3RlbXBsLmMKKwlybSAtZiAkQCAmJiAkKExO X1MpICQ8IC4KKworZGZvcl90ZW1wbC5jOiAlIDogJCh0b3Bfc3JjZGlyKS9zcmMvYmFja2Vu ZC9saWIvJQorCXJtIC1mICRAICYmICQoTE5fUykgJDwgLgorCitkZm9yX3UxNi5jOiAlIDog JCh0b3Bfc3JjZGlyKS9zcmMvYmFja2VuZC9saWIvJSBkZm9yX3RlbXBsLmMKKwlybSAtZiAk QCAmJiAkKExOX1MpICQ8IC4KKwordmVjdF90ZW1wbC5jOiAlIDogJCh0b3Bfc3JjZGlyKS9z cmMvYmFja2VuZC9saWIvJQorCXJtIC1mICRAICYmICQoTE5fUykgJDwgLgorCit2ZWN0X3Ux Ni5jOiAlIDogJCh0b3Bfc3JjZGlyKS9zcmMvYmFja2VuZC9saWIvJSB2ZWN0X3RlbXBsLmMK KwlybSAtZiAkQCAmJiAkKExOX1MpICQ8IC4KKwogeGxvZ3JlYWRlci5jOiAlIDogJCh0b3Bf c3JjZGlyKS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS8lCiAJcm0gLWYgJEAgJiYgJChM Tl9TKSAkPCAuCiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfd2FsZHVtcC9tZXNvbi5idWls ZCBiL3NyYy9iaW4vcGdfd2FsZHVtcC9tZXNvbi5idWlsZAppbmRleCA1Mjk2ZjIxYjgyYy4u YzMzYmU4ODcxMmMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfd2FsZHVtcC9tZXNvbi5idWls ZAorKysgYi9zcmMvYmluL3BnX3dhbGR1bXAvbWVzb24uYnVpbGQKQEAgLTEwLDYgKzEwLDcg QEAgcGdfd2FsZHVtcF9zb3VyY2VzID0gZmlsZXMoCiBwZ193YWxkdW1wX3NvdXJjZXMgKz0g cm1ncl9kZXNjX3NvdXJjZXMKIHBnX3dhbGR1bXBfc291cmNlcyArPSB4bG9ncmVhZGVyX3Nv dXJjZXMKIHBnX3dhbGR1bXBfc291cmNlcyArPSBmaWxlcygnLi4vLi4vYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS94bG9nc3RhdHMuYycpCitwZ193YWxkdW1wX3NvdXJjZXMgKz0gZGZvcl9z b3VyY2VzCiAKIGlmIGhvc3Rfc3lzdGVtID09ICd3aW5kb3dzJwogICBwZ193YWxkdW1wX3Nv dXJjZXMgKz0gcmNfYmluX2dlbi5wcm9jZXNzKHdpbjMydmVyX3JjLCBleHRyYV9hcmdzOiBb CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaCBiL3NyYy9p bmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oCmluZGV4IGZkY2E3ZDgyMWM4Li41Y2U4ODVl NjMyNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKKysr IGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKQEAgLTE1LDYgKzE1LDcgQEAK ICNkZWZpbmUgSEVBUEFNX1hMT0dfSAogCiAjaW5jbHVkZSAiYWNjZXNzL2h0dXAuaCIKKyNp bmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dy ZWFkZXIuaCIKICNpbmNsdWRlICJsaWIvc3RyaW5naW5mby5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvYnVmLmgiCkBAIC0zNDEsNiArMzQyLDggQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9w cnVuZQogI2RlZmluZQkJWExIUF9WTV9BTExfVklTSUJMRQkJCSgxIDw8IDgpCiAjZGVmaW5l CQlYTEhQX1ZNX0FMTF9GUk9aRU4JCQkoMSA8PCA5KQogCisjZGVmaW5lCQlYTEhQX0RGT1Jf Q09NUFJFU1NFRAkJKDEgPDwgMTApCisKIC8qCiAgKiB4bGhwX2ZyZWV6ZV9wbGFuIGRlc2Ny aWJlcyBob3cgdG8gZnJlZXplIGEgZ3JvdXAgb2Ygb25lIG9yIG1vcmUgaGVhcCB0dXBsZXMK ICAqIChhcHBlYXJzIGluIHhsX2hlYXBfcHJ1bmUncyB4bGhwX2ZyZWV6ZV9wbGFucyBzdWIt cmVjb3JkKQpAQCAtNDk0LDYgKzQ5Nyw3IEBAIGV4dGVybiB2b2lkIGhlYXBfeGxvZ19kZXNl cmlhbGl6ZV9wcnVuZV9hbmRfZnJlZXplKGNoYXIgKmN1cnNvciwgdWludDE2IGZsYWdzLAog CQkJCQkJCQkJCQkJICAgT2Zmc2V0TnVtYmVyICoqZnJ6X29mZnNldHMsCiAJCQkJCQkJCQkJ CQkgICBpbnQgKm5yZWRpcmVjdGVkLCBPZmZzZXROdW1iZXIgKipyZWRpcmVjdGVkLAogCQkJ CQkJCQkJCQkJICAgaW50ICpuZGVhZCwgT2Zmc2V0TnVtYmVyICoqbm93ZGVhZCwKLQkJCQkJ CQkJCQkJCSAgIGludCAqbnVudXNlZCwgT2Zmc2V0TnVtYmVyICoqbm93dW51c2VkKTsKKwkJ CQkJCQkJCQkJCSAgIGludCAqbnVudXNlZCwgT2Zmc2V0TnVtYmVyICoqbm93dW51c2VkLAor CQkJCQkJCQkJCQkJICAgdWludDggZGZvcl9idWZbXSk7CiAKLSNlbmRpZgkJCQkJCQkvKiBI RUFQQU1fWExPR19IICovCisjZW5kaWYJCQkJCQkJLyogSEVBUEFNX1hMT0dfSCAqLwpcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vz cy9oZWFwYW1feGxvZ19kZm9yLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2df ZGZvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yNzRiMTRl ODkxZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxv Z19kZm9yLmgKQEAgLTAsMCArMSwxMzcgQEAKKyNpZm5kZWYgSEVBUEFNX1hMT0dfREZPUl9I CisjZGVmaW5lIEhFQVBBTV9YTE9HX0RGT1JfSAorCisjaW5jbHVkZSAicG9zdGdyZXMuaCIK KworI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKKyNpbmNsdWRlICJsaWIvZGZv cl91MTYuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2J1ZnBhZ2UuaCIKKworLyoKKyAqIERGb1In cyBtZXRhIGJsb2NrIGZvciBQUlVORS9GUkVFWkUgcmVjb3JkCisgKgorICogQSBtZXRhIGJs b2NrIGNvbnRhaW5zIHBhcmFtZXRlcnMgcmVxdWlyZWQgZm9yIGRlY29tcHJlc3Npb24gb2Yg dGhlIGZvbGxvd2luZworICogREZvUiBwYWNrLiBJdCBpcyBkZW5zZWx5IGJpdC1wYWNrZWQu IElmIHRoZSBleGNlcHRpb24gZmxhZyBpcyB6ZXJvLCBmaWVsZHMKKyAqIHBlcnRhaW5pbmcg dG8gZXhjZXB0aW9ucyBpcyBhYnNlbnQsIHdoaWNoIG1lYW5zIHRoYXQgREZvUiBwYWNrIGRv ZXMgbm90CisgKiBjb250YWluIGV4Y2VwdGlvbnMuIENhbGN1bGF0aW9uIG9mIGZpZWxkIHdp ZHRocyB0YWtlcyBpbnRvIGFjY291bnQKKyAqIG5leHQgY29uc2lkZXJhdGlvbnM6CisgKgor ICogTWF4IEl0ZW0gQ291bnQgc2hvdWxkIGJlIG1vcmUgb3IgZXF1YWwgdG8gTWF4SGVhcFR1 cGxlc1BlclBhZ2UuIFNpbmNlIHdlCisgY2FuJ3QgY2FsY3VsYXRlCisgKiBNYXhIZWFwVHVw bGVzUGVyUGFnZSBvbiBwcmVwcm9jZXNzb3Igc3RhZ2UsIHdlIGludGVudGlvbmFsbHkgb3Zl cmVzdGltYXRlIGl0CisgKiBhczoKKyAqICAgICAgIE1heCBJdGVtIENvdW50ID4gQkxDS1Na IC8gTWluIFR1cGxlIFNpemUgPSBCTENLU1ogLyAyNAorICogdG8gcHJvdmlkZSBhIG1hcmdp bi4gSW4gZ2VuZXJhbCwgZGVwZW5kaW5nIG9uIEJMQ0tTWiwgaXQgc2hvdWxkIG5vdCByZXN1 bHQgaW4KKyAqIERGb1IgbWV0YSBibG9jayBvdmVyaGVhZC4KKyAqIEZvciBpbnN0YW5jZSwg Zm9yIGEgYmxvY2sgc2l6ZSBvZiAzMjc2OCwgd2UgaGF2ZSBNYXggSXRlbSBDb3VudCA9IDEz NjYsIGFuZAorICogaXQgbmVlZHMgMTEgYml0cyB3aWR0aCBmaWVsZC4KKyAqCisgKiBTaXpl IG9mIGZpZWxkIEl0ZW0gQ291bnQ6CisgKiAgICAgICBJVEVNX0NPVU5UX1NaID0gbG9nMihN YXhJdGVtQ291bnQpLgorICoKKyAqIE1heGltdW0gRGVsdGEgV2lkdGggaXMgZXF1YWwgdG8g SVRFTV9DT1VOVF9TWi4gU28gREVMVEFfV0lEVEhfU1ogaW4gYSBERm9SCisgKiBtZXRhIGJs b2NrIGNhbiBiZSBjYWxjdWxhdGVkIGFzOgorICogICAgICBERUxUQV9XSURUSF9TWiA+PSBs b2cyKE1heCBEZWx0YSBXaWR0aCkgPSBsb2cyKElURU1fQ09VTlRfU1opCisgKgorICogTWF4 IEV4Y2VwdGlvbiBDb3VudCA9IDAuMSAqIE1heEl0ZW1Db3VudCwgYWNjb3JkaW5nIHRvIERG b1IgYWxnb3JpdGhtIHdoaWNoCisgKiBndWFyYW50ZWVzIHRoYXQgbm90IGxlc3MgdGhhbiA5 MCUgb2YgaXRlbXMgd2lsbCBiZSBjb3ZlcmVkIHdpdGhvdXQgdXNpbmcKKyAqIGV4Y2VwdGlv bnMuIFNvOgorICogICAgICBFWENFUFRJT05fQ09VTlRfU1ogPj0gbG9nMigwLjEgKiBNYXhJ dGVtQ291bnQpLgorICoKKyAqIEFuIGV4Y2VwdGlvbiBpcyBwYXJ0IG9mIGEgZGVsdGEsIGV4 Y2VlZGluZyBjaG9vc2VuIGRlbHRhIHdpZHRoLiBFeGNlcHRpb24gaXMKKyAqIHNhdmVkIGlu IHNlcGFyYXRlZCBwYXJ0IG9mIERGb1IgcGFjayBhbmQsIHNpbmNlIGRlbHRhIHdpZHRoIGlz IG5vdCBsZXNzCisgKiB0aGFuIDE6CisgKiAgICBFWENFUFRJT05fV0lEVEhfU1ogPj0gbG9n MihNYXggRGVsdGEgV2lkdGggLSAxKSA9IGxvZzIoSVRFTV9DT1VOVF9TWiAtIDEpLgorICoK KyAqIEFuIGV4Y2VwdGlvbidzIHBvc2l0aW9uIHNob3dzIHRoZSBwb3NpdGlvbiBvZiBvZiBh IGRlbHRhIHRvIHdpY2ggdGhlCisgKiBleGNlcHRpb24gaGFzIHRvIGJlIGFwcGxpZWQuIFZh bHVlcyBvZiBhbiBleGNlcHRpb24gcG9zaXRpb24gbXVzdCBjb3ZlciB0aGUKKyAqIHNhbWUg dmFsdWUgcmFuZ2UgYXMgYW4gSXRlbSBDb3VudCwgc28gdGhlIE1heCBXaWR0aCBvZiBhbiBF eGNlcHRpb24gUG9zaXRpb24KKyAqIGlzIGVxdWFsIHRvIHdpZHRoIG9mIERlbHRhLiBDb25z ZXF1ZW50bHksIHRoZSBzaXplIG9mIEV4Y2VwdGlvbiBQb3NpdGlvbgorICogV2lkdGggY2Fs Y3VsYXRlZCBhczoKKyAqICAgICBFWENFUFRJT05fUE9TSVRJT05fV0lEVEhfU0laRSA9IGxv ZzIoTWF4IERlbHRhIFdpZHRoKSA9IERFTFRBX1dJRFRIX1NaCisgKgorICogRm9yIGV4YW1w bGUsIE1ldGEgZm9yIEJMQ0tTWiBlcXVhbCB0byAzMjc2OCBoYXMgbmV4dCBzaXplcyBvZiBm aWVsZAorICogfCBzZWN0LiB8IGJ5dGUgfCBiaXRzICAgICAgfCAgIHBhcmFtICAgICAgICAg ICB8ICBzaXplICB8IHJhbmdlIG9mIHZhbHVlcyB8CisgKiB8LS0tLS0tLXwtLS0tLS18LS0t LS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0t LXwKKyAqIHwgIG1haW4gfCAwLCAxIHwgMC0xMCAgICAgIHwgaXRlbSBjb3VudCAgICAgICAg fCAxMSBiaXQgfCAxLi4uMTM2NSAgICAgICAgfAorICogfCAgbWFpbiB8ICAgIDEgfCAxMS0x NCAgICAgfCBkZWx0YSB3aWR0aCAgICAgICB8ICA0IGJpdCB8IDEuLi4xMSAgICAgICAgICB8 CisgKiB8ICBtYWluIHwgICAgMSB8IDE1ICAgICAgICB8IGV4dHJhIHNlY3QuIGZsYWcgIHwg IDEgYml0IHwgMC4uLjEgICAgICAgICAgIHwKKyAqIHwgZXh0cmEgfCAgICAyIHwgMTYtMjMg ICAgIHwgZXhjZXB0aW9uIGNvdW50ICAgfCAgOCBiaXQgfCAwLi4uMTM3ICAgICAgICAgfAor ICogfCBleHRyYSB8ICAgIDMgfCAyNC0yNyAgICAgfCBleGNlcHRpb24gd2lkdGggICB8ICA0 IGJpdCB8IDAuLi4xMCAgICAgICAgICB8CisgKiB8IGV4dHJhIHwgMywgNCB8IDI4LTM1ICAg ICB8IGV4Y2VwdCBwb3MuIHdpZHRoIHwgIDQgYml0IHwgMS4uLjExICAgICAgICAgIHwKKyAq LworCisvKgorICogVGhlIHNpemVzIG9mIGZpZWxkcyBpbiB0aGUgY29tcHJlc3NlZCBERm9S IE1ldGEgc3RydWN0dXJlIG9mIGFuCisgKiBYTE9HX0hFQVAyX1BSVU5FKiByZWNvcmQuCisg Ki8KKyNpZiBCTENLU1ogPT0gMzI3NjgKKyNkZWZpbmUgWExIUEZfTUVUQV9JVEVNX0NPVU5U X1NaICAxMQorI2RlZmluZSBYTEhQRl9NRVRBX0RFTFRBX1dJRFRIX1NaIDQKKyNlbGlmIEJM Q0tTWiA9PSAxNjM4NAorI2RlZmluZSBYTEhQRl9NRVRBX0lURU1fQ09VTlRfU1ogIDEwCisj ZGVmaW5lIFhMSFBGX01FVEFfREVMVEFfV0lEVEhfU1ogNAorI2VsaWYgQkxDS1NaID09IDgx OTIKKyNkZWZpbmUgWExIUEZfTUVUQV9JVEVNX0NPVU5UX1NaICA5CisjZGVmaW5lIFhMSFBG X01FVEFfREVMVEFfV0lEVEhfU1ogNAorI2VsaWYgQkxDS1NaID09IDQwOTYKKyNkZWZpbmUg WExIUEZfTUVUQV9JVEVNX0NPVU5UX1NaICA4CisjZGVmaW5lIFhMSFBGX01FVEFfREVMVEFf V0lEVEhfU1ogNAorI2VsaWYgQkxDS1NaID09IDIwNDgKKyNkZWZpbmUgWExIUEZfTUVUQV9J VEVNX0NPVU5UX1NaICA3CisjZGVmaW5lIFhMSFBGX01FVEFfREVMVEFfV0lEVEhfU1ogMwor I2VsaWYgQkxDS1NaID09IDEwMjQKKyNkZWZpbmUgWExIUEZfTUVUQV9JVEVNX0NPVU5UX1Na ICA2CisjZGVmaW5lIFhMSFBGX01FVEFfREVMVEFfV0lEVEhfU1ogMworI2VsaWYgQkxDS1Na ID09IDUxMgorI2RlZmluZSBYTEhQRl9NRVRBX0lURU1fQ09VTlRfU1ogIDUKKyNkZWZpbmUg WExIUEZfTUVUQV9ERUxUQV9XSURUSF9TWiAzCisjZWxpZiBCTENLU1ogPT0gMjU2CisjZGVm aW5lIFhMSFBGX01FVEFfSVRFTV9DT1VOVF9TWiAgNAorI2RlZmluZSBYTEhQRl9NRVRBX0RF TFRBX1dJRFRIX1NaIDMKKyNlbGlmIEJMQ0tTWiA9PSAxMjgKKyNkZWZpbmUgWExIUEZfTUVU QV9JVEVNX0NPVU5UX1NaICAzCisjZGVmaW5lIFhMSFBGX01FVEFfREVMVEFfV0lEVEhfU1og MgorI2VsaWYgQkxDS1NaID09IDY0CisjZGVmaW5lIFhMSFBGX01FVEFfSVRFTV9DT1VOVF9T WiAgMgorI2RlZmluZSBYTEhQRl9NRVRBX0RFTFRBX1dJRFRIX1NaIDIKKyNlbHNlCisjZXJy b3IgIlVuc3VwcG9ydGVkIEJMQ0tTWiBpbiBYTG9nIEhlYXAgQW5kIFBydW5lLiIKKyNlbmRp ZgorCisjZGVmaW5lIFhMSFBGX01FVEFfRVhDRVBUSU9OX0ZMQUdfU1ogMSAvKiBGbGFnIGFi b3V0IEV4dHJhIFNlY3Rpb24gcHJlc2VuY2UgKi8KKworLyogU2l6ZSBvZiBFeGNlcHRpb24g Q291bnQgZmllbGQgKi8KKyNpZiBYTEhQRl9NRVRBX0lURU1fQ09VTlRfU1ogPiA2CisjZGVm aW5lIFhMSFBGX01FVEFfRVhDRVBUSU9OX0NPVU5UX1NaIFhMSFBGX01FVEFfSVRFTV9DT1VO VF9TWiAtIDMKKyNlbHNlCisjZGVmaW5lIFhMSFBGX01FVEFfRVhDRVBUSU9OX0NPVU5UX1Na IFhMSFBGX01FVEFfSVRFTV9DT1VOVF9TWiAzCisjZW5kaWYKKworI2RlZmluZSBYTEhQRl9N RVRBX0VYQ0VQVElPTl9XSURUSF9TWiBcCisJWExIUEZfTUVUQV9ERUxUQV9XSURUSF9TWiAv KiBTaXplIG9mIEV4Y2VwdGlvbiBXaWR0aCBmaWVsZCAqLworCisjZGVmaW5lIFhMSFBGX01F VEFfRVhDRVBUSU9OX1BPU0lUSU9OX1dJRFRIX1NaIFwKKwlYTEhQRl9NRVRBX0RFTFRBX1dJ RFRIX1NaIC8qIFNpemUgb2YgRXhjZXB0aW9uIFBvc2l0aW9uIHdpZHRoIGZpZWxkICovCisK Ky8qIE1heGltYWwgc2l6ZSBvZiBwYWNrZWQgbWV0YSAqLworI2RlZmluZSBNQVhfUEFDS0VE X01FVEFfU0laRSBcCisJKFhMSFBGX01FVEFfSVRFTV9DT1VOVF9TWiArIFhMSFBGX01FVEFf REVMVEFfV0lEVEhfU1ogKyAgICAgICAgICAgICAgICAgIFwKKwkgWExIUEZfTUVUQV9FWENF UFRJT05fRkxBR19TWiArIFhMSFBGX01FVEFfRVhDRVBUSU9OX1BPU0lUSU9OX1dJRFRIX1Na ICsgXAorCSBYTEhQRl9NRVRBX0VYQ0VQVElPTl9XSURUSF9TWiArIFhMSFBGX01FVEFfRVhD RVBUSU9OX0NPVU5UX1NaICsgNykgLyA4CisKKy8qIFRoZSBzaXplIG9mIGEgdHlwaWNhbCBj aHVuayBvZiBtZW1vcnkgdXNlZCBieSBkZm9yX3BhY2sgKi8KKyNkZWZpbmUgREZPUl9CVUZf UEFSVF9TSVpFIE1heEhlYXBUdXBsZXNQZXJQYWdlICogc2l6ZW9mKHVpbnQxNikKKworZXh0 ZXJuIGJvb2wgd2FsX3BydW5lX2Rmb3JfY29tcHJlc3Npb247IC8qIEdVQyAqLworCitleHRl cm4gc2l6ZV90IGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemVfcGFja19tZXRhKGNvbnN0IGRm b3JfbWV0YV90ICptZXRhLAorCQkJCQkJCQkJCQkJICB1aW50OCBidWZbXSk7CisKK2V4dGVy biBzaXplX3QgbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZV91bnBhY2tfbWV0YShkZm9yX21l dGFfdCAqbWV0YSwKKwkJCQkJCQkJCQkJCQljb25zdCB1aW50OCBwYWNrZWRfbWV0YVtdKTsK KworZXh0ZXJuIHZvaWQgaGVhcF94bG9nX2Rlc2VyaWFsaXplX2Rmb3IoY2hhciAqKmN1cnNv ciwgaW50ICpuaXRlbXMsCisJCQkJCQkJCQkgICBPZmZzZXROdW1iZXIgKippdGVtcywgdWlu dDggZGZvcl9idWZbXSk7CisKKyNlbmRpZgkJCQkJCQkvKiBIRUFQQU1fWExPR19ERk9SX0gg Ki8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9k Zm9yL01ha2VmaWxlIGIvc3JjL3Rlc3QvZGZvci9NYWtlZmlsZQppbmRleCAyY2E5OGY3NmEw Zi4uZjdhMjg3YTFkM2IgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L2Rmb3IvTWFrZWZpbGUKKysr IGIvc3JjL3Rlc3QvZGZvci9NYWtlZmlsZQpAQCAtNDgsNiArNDgsOCBAQCBjaGVjay11bml0 OiAkKFRFU1RTKQogCWNkICQodG9wX2J1aWxkZGlyKS8kKHN1YmRpcikgJiYgXAogCSAgICQo UFJPVkUpICQoUFJPVkVfRkxBR1MpIFwKIAkgICAgLXYgJChhZGRwcmVmaXggLi8sJChpZiAk KFBST1ZFX1RFU1RTKSwgJChQUk9WRV9URVNUUyksICQoVEVTVFMpKSkKKyMgVGhlIGV4YW1w bGUgb2YgdXNpbmcgdGhlIGNoZWNrLXVuaXQgcnVsZToKKyMJCW1ha2UgY2hlY2stdW5pdCBQ Uk9WRV9URVNUUz0ndGVzdF9kZm9yX3UxNicgUFJPVkVfRkxBR1M9Jy0tdmVyYm9zZScKIAog Y2hlY2s6IGNoZWNrLXVuaXQKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8w NTJfcHJ1bmVfZGZvcl9jb21wcmVzc2lvbi5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDUy X3BydW5lX2Rmb3JfY29tcHJlc3Npb24ucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAuLjk1MTQ3OGZiYmQzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qv cmVjb3ZlcnkvdC8wNTJfcHJ1bmVfZGZvcl9jb21wcmVzc2lvbi5wbApAQCAtMCwwICsxLDI4 MyBAQAordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0 OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1v cmU7CisKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisjIFdvcmtsb2FkIGdlbmVyYXRpbmcgZGVhZCB0dXBsZXMgYW5k IFBSVU5FIFdBTAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KK3N1YiBnZW5lcmF0ZV9wcnVuZV93b3JrbG9hZAorewor CW15ICgkbm9kZSwgJHdvcmtsb2FkKSA9IEBfOworCisKKwlteSAkc3RhcnRfbHNuOworCW15 ICRlbmRfbHNuOworCisJaWYgKCR3b3JrbG9hZCBlcSAidmFjdXVtX3dpdGhfaW5kZXgiCisJ CXx8ICR3b3JrbG9hZCBlcSAidmFjdXVtX25vX2luZGV4IikKKwl7CisJCSRub2RlLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgcXsKKwkJCUNSRUFURSBUQUJMRSB0X3BydW5lICgKKwkJCQlp ZCBpbnQsCisJCQkJdmFsIHRleHQKKwkJCSkgV0lUSCAoZmlsbGZhY3RvciA9IDEwMCwgYXV0 b3ZhY3V1bV9lbmFibGVkID0gZmFsc2UpOworCQl9KTsKKworCQkkbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsIHF7CisJCQlTRVQgdmFjdXVtX2ZyZWV6ZV9taW5fYWdlID0gMDsKKwkJ CVNFVCB2YWN1dW1fZnJlZXplX3RhYmxlX2FnZSA9IDA7CisJCX0pOworCisJCSMgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorCQkjIFBoYXNlIDE6IElOU0VSVAorCQkjIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKwkJJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxewor CQkJSU5TRVJUIElOVE8gdF9wcnVuZQorCQkJU0VMRUNUIGcsICd4JworCQkJRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwzMDAwMDAwKSBnOworCQl9KTsKKworCQkjIE9wdGlvbmFsIGluZGV4 CisJCWlmICgkd29ya2xvYWQgZXEgInZhY3V1bV93aXRoX2luZGV4IikKKwkJeworCQkJJG5v ZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxeworCQkJCUNSRUFURSBJTkRFWCBPTiB0X3By dW5lKGlkKTsKKwkJCX0pOworCQl9CisJCSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor CQkjIFBoYXNlIDI6IERFTEVURSArIFZBQ1VVTQorCQkjIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKwkJJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxeworCQkJREVMRVRFIEZS T00gdF9wcnVuZQorCQkJV0hFUkUgaWQgJSA1MDAgPD4gMDsKKwkJfSk7CisKKwkJIyBGb3Jj ZSBXQUwgZmx1c2ggYW5kIGNhcHR1cmUgTFNOCisJCSRzdGFydF9sc24gPSAkbm9kZS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsIHF7CisJCQlTRUxFQ1QgcGdfY3VycmVudF93YWxfZmx1c2hf bHNuKCk7CisJCX0pOworCisJCSMgVkFDVVVNIGN5Y2xlcyB0byB0cmlnZ2VyIFBSVU5FCisJ CWZvciBteSAkaSAoMS4uMykKKwkJeworCQkJJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMn LCBxeyBWQUNVVU0gRlJFRVpFIHRfcHJ1bmU7IH0pOworCQl9CisKKwkJJGVuZF9sc24gPSAk bm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7CisJCQlTRUxFQ1QgcGdfY3VycmVudF93 YWxfZmx1c2hfbHNuKCk7CisJCX0pOworCX0KKwllbHNlCisJeworCQlkaWUgIldvcmtsb2Fk IGlzIG5vdCBkZWZpbmVkOiB3b3JrbG9hZD0kd29ya2xvYWQiOworCX0KKworCWNob21wKCRz dGFydF9sc24pOworCXByaW50ICJDYXB0dXJlZCBzdGFydCBMU046ICRzdGFydF9sc25cbiI7 CisJY2hvbXAoJGVuZF9sc24pOworCXByaW50ICJDYXB0dXJlZCBlbmQgTFNOOiAkZW5kX2xz blxuIjsKKworCXJldHVybiAoJHN0YXJ0X2xzbiwgJGVuZF9sc24pOworfQorCisjIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIyBXQUwgYW5hbHl6ZXIKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitzdWIgY29sbGVjdF93YWxfc3RhdHMKK3sK KwlteSAoJG5vZGUsICRzdGFydF9sc24sICRlbmRfbHNuKSA9IEBfOworCisJbXkgJHdhbF9k aXIgPSAkbm9kZS0+ZGF0YV9kaXIgLiAiL3BnX3dhbCI7CisKKwlwcmludCAid2FsX2Rpcj0i IC4gJHdhbF9kaXIgLiAiXG4iOworCXByaW50ICJjb2xsZWN0X3dhbF9zdGF0czogc3RhcnRf bHNuPSRzdGFydF9sc25cbiI7CisJcHJpbnQgImNvbGxlY3Rfd2FsX3N0YXRzOiBlbmRfbHNu PSRlbmRfbHNuXG4iOworCisJbXkgJGNtZDsKKworCWlmIChkZWZpbmVkICRlbmRfbHNuICYm ICRlbmRfbHNuIG5lICcnKQorCXsKKwkJJGNtZCA9ICJwZ193YWxkdW1wIC1wICR3YWxfZGly IC1zICRzdGFydF9sc24gLWUgJGVuZF9sc24gMj4vZGV2L251bGwiOworCX0KKwllbHNlCisJ eworCQkkY21kID0gInBnX3dhbGR1bXAgLXAgJHdhbF9kaXIgLXMgJHN0YXJ0X2xzbiAyPi9k ZXYvbnVsbCI7CisJfQorCisJbXkgQGxpbmVzID0gYCRjbWRgOworCisJIyAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisJIyBDb3VudGVycworCSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorCW15ICR0b3RhbF9yZWNvcmRzID0gMDsKKwlteSAkdG90YWxfYnl0ZXMgICA9IDA7 CisKKwlteSAkcHJ1bmVfcmVjb3JkcyA9IDA7CisJbXkgJHBydW5lX2J5dGVzICAgPSAwOwor CisJZm9yZWFjaCBteSAkbGluZSAoQGxpbmVzKQorCXsKKwkJIyBFeHRyYWN0IHRvdGFsIHJl Y29yZCBzaXplCisJCWlmICgkbGluZSA9fiAvbGVuIFwocmVjXC90b3RcKTpccypcZCtcL1xz KihcZCspLykKKwkJeworCQkJbXkgJHNpemUgPSAkMTsKKworCQkJJHRvdGFsX3JlY29yZHMr KzsKKwkJCSR0b3RhbF9ieXRlcyArPSAkc2l6ZTsKKworCQkJIyBQUlVORS1zcGVjaWZpYyB0 cmFja2luZworCQkJaWYgKCRsaW5lID1+IC9QUlVORV9WQUNVVU1fU0NBTi8pCisJCQl7CisJ CQkJJHBydW5lX3JlY29yZHMrKzsKKwkJCQkkcHJ1bmVfYnl0ZXMgKz0gJHNpemU7CisJCQl9 CisJCX0KKwl9CisKKwlpZiAoJHRvdGFsX3JlY29yZHMgPT0gMCkKKwl7CisJCWRpZSAiTm8g V0FMIHJlY29yZHMgZm91bmQgaW4gcmFuZ2UgJHN0YXJ0X2xzbiDihpIgJGVuZF9sc24iOwor CX0KKworCXByaW50ICJUT1RBTDogcmVjb3Jkcz0kdG90YWxfcmVjb3JkczsgYnl0ZXM9JHRv dGFsX2J5dGVzXG4iOworCXByaW50ICJQUlVORTogcmVjb3Jkcz0kcHJ1bmVfcmVjb3Jkczsg Ynl0ZXM9JHBydW5lX2J5dGVzXG4iOworCisJcmV0dXJuIHsKKwkJdG90YWxfcmVjb3JkcyA9 PiAkdG90YWxfcmVjb3JkcywKKwkJdG90YWxfYnl0ZXMgICA9PiAkdG90YWxfYnl0ZXMsCisJ CXBydW5lX3JlY29yZHMgPT4gJHBydW5lX3JlY29yZHMsCisJCXBydW5lX2J5dGVzICAgPT4g JHBydW5lX2J5dGVzLAorCX07Cit9CisKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFJ1biB0ZXN0IG9uIGEgZnJl c2ggY2x1c3RlcgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KK3N1YiBydW5fY2x1c3Rlcl90ZXN0Cit7CisJbXkgKCRu YW1lLCAkY29tcHJlc3Npb24sICR3b3JrbG9hZCkgPSBAXzsKKworCW15ICRub2RlID0gUG9z dGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCRuYW1lKTsKKworCSRub2RlLT5pbml0Owor CisJJG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCBxcXsKKwkJd2FsX2xl dmVsID0gcmVwbGljYQorCQlhdXRvdmFjdXVtID0gb2ZmCisJCXdhbF9wcnVuZV9kZm9yX2Nv bXByZXNzaW9uID0gJGNvbXByZXNzaW9uCisgCQl3YWxfa2VlcF9zaXplID0gJzFHQicKKwkJ bWF4X3dhbF9zaXplID0gJzIwR0InCisJfSk7CisKKwkkbm9kZS0+c3RhcnQ7CisKKwlteSAo JHN0YXJ0X2xzbiwgJGVuZF9sc24pID0gZ2VuZXJhdGVfcHJ1bmVfd29ya2xvYWQoJG5vZGUs ICR3b3JrbG9hZCk7CisKKwkkbm9kZS0+c3RvcDsKKworCXJldHVybiBjb2xsZWN0X3dhbF9z dGF0cygkbm9kZSwgJHN0YXJ0X2xzbiwgJGVuZF9sc24pOworfQorCisjIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBG b3JtYXR0aW5nIGhlbHBlcnMKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3N1YiBfcGN0X3JlZHVjdGlvbgorewor CW15ICgkYmVmb3JlLCAkYWZ0ZXIpID0gQF87CisJcmV0dXJuICJOL0EiIGlmICRiZWZvcmUg PT0gMDsKKworCW15ICRwY3QgPSAxMDAgKiAoJGJlZm9yZSAtICRhZnRlcikgLyAkYmVmb3Jl OworCXJldHVybiBzcHJpbnRmKCIlZCUlIiwgaW50KCRwY3QgKyAwLjUpKTsKK30KKworc3Vi IF9yYXRpbworeworCW15ICgkYmVmb3JlLCAkYWZ0ZXIpID0gQF87CisJcmV0dXJuICJOL0Ei IGlmICRhZnRlciA9PSAwOworCisJbXkgJHIgPSAkYmVmb3JlIC8gJGFmdGVyOworCXJldHVy biBzcHJpbnRmKCIlLjFmeCIsICRyKTsKK30KKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUmVwb3J0OiB0b3Rh bCBXQUwgc3RhdHMKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCitzdWIgcmVwb3J0X3dhbF9kaWZmCit7CisJbXkgKCRv ZmYsICRvbikgPSBAXzsKKworCW15ICRiX2J5dGVzID0gJG9mZi0+e3RvdGFsX2J5dGVzfTsK KwlteSAkYV9ieXRlcyA9ICRvbi0+e3RvdGFsX2J5dGVzfTsKKworCXByaW50ZiAiJS0yMHMg JTE3cyAlMTdzICUxMXNcbiIsCisJCSItIiB4IDIwLCAiLSIgeCAxNywgIi0iIHggMTcsICIt IiB4IDExOworCisJcHJpbnRmICIlLTIwcyAlMTdzICUxN3MgJTExc1xuIiwKKwkJIiIsICJE Rk9SIG9mZiwgYnl0ZXMiLCAiREZPUiBvbiwgYnl0ZXMiLCAiUmVkdWN0aW9uIjsKKworCXBy aW50ZiAiJS0yMHMgJTE3cyAlMTdzICUxMXNcbiIsCisJCSItIiB4IDIwLCAiLSIgeCAxNywg Ii0iIHggMTcsICItIiB4IDExOworCisJcHJpbnRmICIlLTIwcyAlMTdkICUxN2QgJTExc1xu IiwKKwkJIldBTCB0b3RhbCBzaXplIiwKKwkJJG9mZi0+e3RvdGFsX2J5dGVzfSwKKwkJJG9u LT57dG90YWxfYnl0ZXN9LAorCQlfcGN0X3JlZHVjdGlvbigkb2ZmLT57dG90YWxfYnl0ZXN9 LCAkb24tPnt0b3RhbF9ieXRlc30pOworCisJcHJpbnRmICIlLTIwcyAlMTdkICUxN2QgJTEx c1xuXG4iLAorCQkiUHJ1bmUgcmVjb3JkcyBzaXplIiwKKwkJJG9mZi0+e3BydW5lX2J5dGVz fSwKKwkJJG9uLT57cHJ1bmVfYnl0ZXN9LAorCQlfcmF0aW8oJG9mZi0+e3BydW5lX2J5dGVz fSwgJG9uLT57cHJ1bmVfYnl0ZXN9KTsKK30KKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgU2NlbmFyaW8gMTog VkFDVVVNIHdpdGhvdXQgaW5kZXgKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitteSAkb2ZmX25vaWR4ID0gcnVuX2Ns dXN0ZXJfdGVzdCgicHJ1bmVfb2ZmX25vaWR4IiwgIm9mZiIsICJ2YWN1dW1fbm9faW5kZXgi KTsKK215ICRvbl9ub2lkeCAgPSBydW5fY2x1c3Rlcl90ZXN0KCJwcnVuZV9vbl9ub2lkeCIs ICAib24iLCAgInZhY3V1bV9ub19pbmRleCIpOworCitjbXBfb2soCisJJG9mZl9ub2lkeC0+ e3BydW5lX2J5dGVzfSwKKwknPicsCisJJG9uX25vaWR4LT57cHJ1bmVfYnl0ZXN9LAorCSdE Rk9SIHJlZHVjZXMgdGhlIFBSVU5FIFdBTCBzaXplIG9uIHZhY3V1bWluZyBhIHRhYmxlIGhh dmluZyBubyBpbmRleC4nCispOworCitjbXBfb2soCisJJG9mZl9ub2lkeC0+e3RvdGFsX2J5 dGVzfSwKKwknPicsCisJJG9uX25vaWR4LT57dG90YWxfYnl0ZXN9LAorCSdERk9SIHJlZHVj ZXMgdGhlIHRvdGFsIFdBTCBzaXplIG9uIHZhY3V1bWluZyBhIHRhYmxlIGhhdmluZyBubyBp bmRleC4nCispOworCitwcmludCAiXG5cbj09PSBWQUNVVU0gKHRhYmxlIHdpdGggbm8gaW5k ZXgpID09PVxuIjsKK3JlcG9ydF93YWxfZGlmZigkb2ZmX25vaWR4LCAkb25fbm9pZHgpOwor CisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIyBTY2VuYXJpbyAyOiBWQUNVVU0gd2l0aCBpbmRleAorIyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K K215ICRvZmZfaWR4ID0gcnVuX2NsdXN0ZXJfdGVzdCgicHJ1bmVfb2ZmX2lkeCIsICJvZmYi LCAidmFjdXVtX3dpdGhfaW5kZXgiKTsKK215ICRvbl9pZHggID0gcnVuX2NsdXN0ZXJfdGVz dCgicHJ1bmVfb25faWR4IiwgICJvbiIsICAidmFjdXVtX3dpdGhfaW5kZXgiKTsKKworY21w X29rKAorCSRvZmZfaWR4LT57cHJ1bmVfYnl0ZXN9LAorCSc+JywKKwkkb25faWR4LT57cHJ1 bmVfYnl0ZXN9LAorCSdERk9SIHJlZHVjZXMgdGhlIFBSVU5FIFdBTCBzaXplIG9uIHZhY3V1 bWluZyBhIHRhYmxlIGhhdmluZyBhbiBpbmRleC4nCispOworCitjbXBfb2soCisJJG9mZl9p ZHgtPnt0b3RhbF9ieXRlc30sCisJJz49JywKKwkkb25faWR4LT57dG90YWxfYnl0ZXN9LAor CSdERk9SIHJlZHVjZXMgdGhlIHRvdGFsIFdBTCBzaXplIG9uIHZhY3V1bWluZyBhIHRhYmxl IGhhdmluZyBhbiBpbmRleC4nCispOworCitwcmludCAiXG5cbj09PSBWQUNVVU0gKHRhYmxl IHdpdGggaW5kZXgpID09PVxuIjsKK3JlcG9ydF93YWxfZGlmZigkb2ZmX2lkeCwgJG9uX2lk eCk7CisKK2RvbmVfdGVzdGluZygpOwotLSAKMi41My4wCgo= --------------GiBLAZOtrrdCnvpdzHYTcSF3--