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 1wCXsy-0025qp-26 for pgsql-hackers@arkaria.postgresql.org; Tue, 14 Apr 2026 07:08:38 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wCXsw-00AOyH-2u for pgsql-hackers@arkaria.postgresql.org; Tue, 14 Apr 2026 07:08:35 +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 1wCXsw-00AOy8-0h for pgsql-hackers@lists.postgresql.org; Tue, 14 Apr 2026 07:08:35 +0000 Received: from forward500a.mail.yandex.net ([178.154.239.80]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1wCXsr-00000000yvK-1SYd for pgsql-hackers@postgresql.org; Tue, 14 Apr 2026 07:08:34 +0000 Received: from mail-nwsmtp-smtp-production-main-60.vla.yp-c.yandex.net (mail-nwsmtp-smtp-production-main-60.vla.yp-c.yandex.net [IPv6:2a02:6b8:c0f:4c18:0:640:5600:0]) by forward500a.mail.yandex.net (Yandex) with ESMTPS id 777C1C0FE8 for ; Tue, 14 Apr 2026 10:08:27 +0300 (MSK) Received: by mail-nwsmtp-smtp-production-main-60.vla.yp-c.yandex.net (smtp/Yandex) with ESMTPSA id P8FXKbES2mI0-4vAguaVy; Tue, 14 Apr 2026 10:08:26 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tantorlabs.com; s=mail; t=1776150506; bh=o9M48vD5Xc53tCnZg76OVSHhEbhYsmP3Ls8bb/elcoI=; h=In-Reply-To:References:To:Subject:Message-ID:Date:From; b=I1caAfyqYrwtch1u9rXQkZa/C4Xu31RBmVH/waDULOn5r+mH2QzUoawOV1GRReDUY FFecA7HZLJf2YF6dM/p1nHaT49g0CD/4+PnU0FTMLDkAfqbXbzQ/rq9MwqRcXYP22G 1WCuXnf3zzMwYYHRmhvJqZ/e+2E1H5QBdQQ0fq1g= Authentication-Results: mail-nwsmtp-smtp-production-main-60.vla.yp-c.yandex.net; dkim=pass header.i=@tantorlabs.com Content-Type: multipart/mixed; boundary="------------1IUaLyPVXDOy4S8HXjAMePOm" Message-ID: <6a4cad52-8c60-49b9-a68a-e94307556a43@tantorlabs.com> Date: Tue, 14 Apr 2026 15:08:24 +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> <9381130C-B961-4DAF-B950-E4ABFCE4CCA0@yandex-team.ru> 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. --------------1IUaLyPVXDOy4S8HXjAMePOm Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Continue fixing CI issues in this patch. Resolved frz_offsets misalignment caused by odd byte counts in dead or unused tuple packs. Patch set has been split, unit-tests have been moved into separated patch-files. It shows that the very essence of the patch has size of 90 KB only. P.S. Rebased onto fce3f7d2677. --------------1IUaLyPVXDOy4S8HXjAMePOm Content-Type: text/x-patch; charset=UTF-8; name="v11-0001-Implement-vect-and-uniqsortvect-containers-and-b.patch" Content-Disposition: attachment; filename*0="v11-0001-Implement-vect-and-uniqsortvect-containers-and-b.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAzYmZhMTY0ZTY5ZmQ1YTdkZmFkNmExZGQzMWIyZmZiOWQ2ZjU1NzVmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFdmdlbnkgVm9yb3BhZXYgPGV2b3JvcEBnbWFpbC5j b20+CkRhdGU6IE1vbiwgMTMgQXByIDIwMjYgMjA6MTI6NTUgKzA4MDAKU3ViamVjdDogW1BB VENIIHYxMSAxLzVdIEltcGxlbWVudCB2ZWN0IGFuZCB1bmlxc29ydHZlY3QgY29udGFpbmVy cyBhbmQKIGJpdHBhY2sgYWxnb3JpdGhtcy4KClRoZSB2ZWN0IGNvbnRhaW5lciBzdG9yZXMg YXJyYXlzIG9mIGludGVnZXJzIGFuZCBwcm92aWRlcyBhIHNldCBvZgphbGdvcml0aG1zIGlt cGxlbWVudGluZyBlc3NlbnRpYWwgb3BlcmF0aW9ucyBvbiB0aGUgY29udGFpbmVkIGFycmF5 LApzdWNoIGFzIGluaXRpYWxpemF0aW9uLCBhcHBlbmRpbmcsIGluc2VydGluZywgYW5kIGNs ZWFyaW5nLgoKVGhlIHVuaXFzb3J0dmVjdCBjb250YWluZXIgaXMgYmFzZWQgb24gdGhlIHZl Y3QgdHlwZSBidXQgYXNzdW1lcyB0aGF0Cml0cyBlbGVtZW50cyBhcmUgc29ydGVkIGFuZCB1 bmlxdWUuIEluIGFkZGl0aW9uIHRvIHRoZSBhbGdvcml0aG1zCnByb3ZpZGVkIGJ5IHZlY3Qs IHVuaXFzb3J0dmVjdCBpbXBsZW1lbnRzIGJpbmFyeSBzZWFyY2ggYW5kIHRoZQpzcGVjaWFs aXplZCBpbnNlcnRpb24gcm91dGluZS4KClRoZSBjb250YWluZXJzIHN1cHBvcnQgYm90aCBl eHRlcm5hbCBtZW1vcnkgcHJvdmlkZWQgYnkgYSBjYWxsZXIgYW5kCmF1dG9tYXRpY2FsbHkg bWFuYWdlZCBtZW1vcnkgdXNpbmcgbWFsbG9jLCBQb3N0Z3JlcydzIHBhbGxvYywgb3Igc2lt aWxhcgphbGxvY2F0aW9uIGZ1bmN0aW9ucy4gQSBjb250YWluZXIncyBzdHJhdGVneSByZWdh cmRpbmcgbWVtb3J5IG1hbmFnZW1lbnQKbXVzdCBiZSBzZXQgYXQgY29udGFpbmVyIGluaXRp YWxpemF0aW9uLCBhbmQgYWxsIHN1YnNlcXVlbnQgb3BlcmF0aW9ucwpob25vciB0aGlzIGNv bmZpZ3VyYXRpb24uIEZvciBleGFtcGxlLCBhIGNhbGxlciBjYW4gcGxhY2UgYSBidWZmZXIg b24KdGhlIHN0YWNrIHRvIGF2b2lkIGhlYXAgYWxsb2NhdGlvbiBhbmQgcGFzcyB0aGUgYnVm ZmVyIHRvIGEgdmVjdG9yCmluc3RhbmNlLCB3aGljaCByZXN1bHRzIGluIHRoZSB2ZWN0b3Ig cGVyZm9ybXMgbm8gZHluYW1pYyBhbGxvY2F0aW9uLgoKVGhpcyBjb21taXQgYWxzbyBpbnRy b2R1Y2VzIHRoZSBiaXRwYWNrIHVuaXQsIHdoaWNoIHByb3ZpZGVzIGFsZ29yaXRobXMKZm9y IGRlbnNlIGJpdC1sZXZlbCBwYWNraW5nIGFuZCB1bnBhY2tpbmcuIFRoZSBiaXRwYWNrIHVu aXQgZG9lcyBub3QKdXNlIGR5bmFtaWMgbWVtb3J5LgoKRWFjaCB1bml0ICh2ZWN0LCBiaXRw YWNrKSBpcyBpbXBsZW1lbnRlZCBhcyBhIHNldCBvZiB0ZW1wbGF0ZXMgdGhhdAphbGxvd3Mg ZGV2ZWxvcGVycyB0byBnZW5lcmF0ZSBzcGVjaWFsaXplZCBzb2x1dGlvbnMgZm9yIGFueSBp bnRlZ2VyIHR5cGUKKHVpbnQ4LCBpbnQ4LCB1aW50MTYsIGludDE2LCBhbmQgc28gb24pLiBU aGUgdW5pdHMgYml0cGFja191MTYgYW5kCnZlY3RfdTE2IHN1cHBvcnRpbmcgdGhlIHVpbnQx Nl90IHR5cGUgYXJlIGFsc28gcHJvdmlkZWQgYnkgdGhpcyBjb21taXQuCgpBdXRob3I6IEV2 Z2VueSBWb3JvcGFldiA8ZXZnZW55LnZvcm9wYWV2QHRhbnRvcmxhYnMuY29tPiA8ZXZvcm9w QGdtYWlsLmNvbT4KUmV2aWV3ZWQgYnk6IEFuZHJleSBCb3JvZGluIDx4NG1tbUB5YW5kZXgt dGVhbS5ydT4KLS0tCiBzcmMvYmFja2VuZC9saWIvTWFrZWZpbGUgICAgICAgICAgICAgICB8 ICAgNSArCiBzcmMvYmFja2VuZC9saWIvTWFrZWZpbGUuZGZvciAgICAgICAgICB8ICAgNSAr CiBzcmMvYmFja2VuZC9saWIvYml0cGFja190ZW1wbC5jICAgICAgICB8IDE1NiArKysrKysr KysrKysrCiBzcmMvYmFja2VuZC9saWIvYml0cGFja191MTYuYyAgICAgICAgICB8ICAgOCAr CiBzcmMvYmFja2VuZC9saWIvbWVzb24uYnVpbGQgICAgICAgICAgICB8ICAgNyArCiBzcmMv YmFja2VuZC9saWIvdmVjdF90ZW1wbC5jICAgICAgICAgICB8IDMwMSArKysrKysrKysrKysr KysrKysrKysrKysrCiBzcmMvYmFja2VuZC9saWIvdmVjdF91MTYuYyAgICAgICAgICAgICB8 ICAgOCArCiBzcmMvaW5jbHVkZS9jLmggICAgICAgICAgICAgICAgICAgICAgICB8ICAgNCAr CiBzcmMvaW5jbHVkZS9saWIvYml0cGFja19zdGFwbGVfdGVtcGwuaCB8ICA1NyArKysrKwog c3JjL2luY2x1ZGUvbGliL2JpdHBhY2tfdGVtcGwuaCAgICAgICAgfCAgMTQgKysKIHNyYy9p bmNsdWRlL2xpYi9iaXRwYWNrX3RlbXBsX3VuZGVmLmggIHwgICA1ICsKIHNyYy9pbmNsdWRl L2xpYi9iaXRwYWNrX3UxNi5oICAgICAgICAgIHwgIDEyICsKIHNyYy9pbmNsdWRlL2xpYi9i aXRwYWNrX3UxNl9jb25maWcuaCAgIHwgICA2ICsKIHNyYy9pbmNsdWRlL2xpYi92ZWN0X3Rl bXBsLmggICAgICAgICAgIHwgIDI3ICsrKwogc3JjL2luY2x1ZGUvbGliL3ZlY3RfdGVtcGxf c3RhcGxlLmggICAgfCAxNDAgKysrKysrKysrKysrCiBzcmMvaW5jbHVkZS9saWIvdmVjdF90 ZW1wbF91bmRlZi5oICAgICB8ICAyNSArKwogc3JjL2luY2x1ZGUvbGliL3ZlY3RfdTE2Lmgg ICAgICAgICAgICAgfCAgMzQgKysrCiBzcmMvaW5jbHVkZS9saWIvdmVjdF91MTZfY29uZmln LmggICAgICB8ICAxMCArCiAxOCBmaWxlcyBjaGFuZ2VkLCA4MjQgaW5zZXJ0aW9ucygrKQog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2xpYi9NYWtlZmlsZS5kZm9yCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvbGliL2JpdHBhY2tfdGVtcGwuYwogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2xpYi9iaXRwYWNrX3UxNi5jCiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjL2JhY2tlbmQvbGliL3ZlY3RfdGVtcGwuYwogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyYy9iYWNrZW5kL2xpYi92ZWN0X3UxNi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L2luY2x1ZGUvbGliL2JpdHBhY2tfc3RhcGxlX3RlbXBsLmgKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmMvaW5jbHVkZS9saWIvYml0cGFja190ZW1wbC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL2luY2x1ZGUvbGliL2JpdHBhY2tfdGVtcGxfdW5kZWYuaAogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyYy9pbmNsdWRlL2xpYi9iaXRwYWNrX3UxNi5oCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL2luY2x1ZGUvbGliL2JpdHBhY2tfdTE2X2NvbmZpZy5oCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjL2luY2x1ZGUvbGliL3ZlY3RfdGVtcGwuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy9pbmNsdWRlL2xpYi92ZWN0X3RlbXBsX3N0YXBsZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL2luY2x1ZGUvbGliL3ZlY3RfdGVtcGxfdW5kZWYuaAogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy9pbmNsdWRlL2xpYi92ZWN0X3UxNi5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2lu Y2x1ZGUvbGliL3ZlY3RfdTE2X2NvbmZpZy5oCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv bGliL01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvbGliL01ha2VmaWxlCmluZGV4IGI2Y2VmZDlj Y2EwLi43NDE2N2JjOWU0YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbGliL01ha2VmaWxl CisrKyBiL3NyYy9iYWNrZW5kL2xpYi9NYWtlZmlsZQpAQCAtMTIsNiArMTIsOCBAQCBzdWJk aXIgPSBzcmMvYmFja2VuZC9saWIKIHRvcF9idWlsZGRpciA9IC4uLy4uLy4uCiBpbmNsdWRl ICQodG9wX2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUuZ2xvYmFsCiAKK2luY2x1ZGUgTWFrZWZp bGUuZGZvcgorCiBPQkpTID0gXAogCWJpcGFydGl0ZV9tYXRjaC5vIFwKIAlibG9vbWZpbHRl ci5vIFwKQEAgLTIyLDUgKzI0LDggQEAgT0JKUyA9IFwKIAlrbmFwc2Fjay5vIFwKIAlwYWly aW5naGVhcC5vIFwKIAlyYnRyZWUubyBcCisJJChPQkpTX0RGT1IpIFwKKworQ1BQRkxBR1Mg Oj0gLUkkKHRvcF9zcmNkaXIpL3NyYy9iYWNrZW5kL2xpYiAkKENQUEZMQUdTKQogCiBpbmNs dWRlICQodG9wX3NyY2Rpcikvc3JjL2JhY2tlbmQvY29tbW9uLm1rCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9saWIvTWFrZWZpbGUuZGZvciBiL3NyYy9iYWNrZW5kL2xpYi9NYWtlZmls ZS5kZm9yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iOTNjNmU3 ODY0NAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL2xpYi9NYWtlZmlsZS5kZm9y CkBAIC0wLDAgKzEsNSBAQAorIyBNYWtlZmlsZS5kZm9yCisKK09CSlNfREZPUiA6PSBcCisJ Yml0cGFja191MTYubyBcCisJdmVjdF91MTYubwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv bGliL2JpdHBhY2tfdGVtcGwuYyBiL3NyYy9iYWNrZW5kL2xpYi9iaXRwYWNrX3RlbXBsLmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjVmNzIxZWExZWJjCi0t LSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvbGliL2JpdHBhY2tfdGVtcGwuYwpAQCAt MCwwICsxLDE1NiBAQAorLyoKKyAqIGJpdHBhY2tfdGVtcGwuYworICoKKyAqIFRoZSBCSVRQ QUNLIHVuaXQgaW1wbGVtZW50cyByb3V0aW5lcyBwZXJ0YWluaW5nIHRvIGJpdC1wYWNraW5n LiBUaGUgYml0cGFjaworICogdW5pdCBhbGxvdyBoaWdoZXItbGV2ZWwgZnVuY3Rpb25zIHRv IGNyZWF0ZSBoaWdoLWRlbnNpdHkgYXJyYXlzIHBhY2tlZAorICogYml0LWJ5LWJpdC4gSW4g Z2VuZXJhbCwgd2lkdGggb2YgZWFjaCBpdGVtIGluIGEgYml0cGFja2VkIGFycmF5IGNhbiB2 YXJ5IGFuZAorICogaGF2ZSBub3QgdG8gYmUgb2YgZml4ZWQgc2l6ZSwgaXRlbXMgY2FuIGhh dmUgZGlmZmVyZW50IGxlbmd0aC4KKyAqLworCisjaW5jbHVkZSAibGliL2JpdHBhY2tfc3Rh cGxlX3RlbXBsLmgiCisKK2l0ZW1fdCB3aWR0aF9mcm9tX3ZhbChpdGVtX3QgdmFsKTsKK2l0 ZW1fdCB3aWR0aF90b19tYXNrKHNpemVfdCB3aWR0aCk7CitzaXplX3QgYml0cGFja19wYWNr KHVpbnQ4X3QgKnBhY2ssIHNpemVfdCBjYXJldCwgaXRlbV90IGl0ZW0sCisJCQkJCXNpemVf dCBzekl0ZW1XaWR0aCk7CitpdGVtX3QgYml0cGFja191bnBhY2soY29uc3QgdWludDhfdCAq cGFjaywgc2l6ZV90ICpjYXJldCwgc2l6ZV90IHN6SXRlbVdpZHRoKTsKKworLyoKKyAqIFNp bmNlIHdpZHRoIG9mIGl0ZW1fdCBjYW5ub3QgYmUgbW9yZSB0aGFuIGxlbmd0aCBvZiBpdGVt X3QKKyAqIGxnKE1BWChpdGVtX3QpKSsxLCB3ZSB1c2UgdGhlIGl0ZW1fdCB0eXBlIGZvciBy ZXR1cm5lZCB2YWx1ZQorICovCitpdGVtX3QKK3dpZHRoX2Zyb21fdmFsKGl0ZW1fdCB2YWwp Cit7CisJaXRlbV90IHdpZHRoID0gMDsKKworCXdoaWxlICh2YWwpIHsKKwkJd2lkdGgrKzsK KwkJdmFsID0gdmFsID4+IDE7CisJfQorCisJcmV0dXJuIHdpZHRoID09IDAgPyAxIDogd2lk dGg7Cit9CisKK2l0ZW1fdAord2lkdGhfdG9fbWFzayhzaXplX3Qgd2lkdGgpCit7CisJc2l6 ZV90IG1hc2sgPSAwOworCisJQXNzZXJ0KHdpZHRoICE9IDApOworCUFzc2VydCh3aWR0aCA8 PSBzaXplb2YoaXRlbV90KSAqIDgpOworCisJaWYgKGxpa2VseSh3aWR0aCA8IHNpemVvZihz aXplX3QpKSkKKwkJbWFzayA9ICgxIDw8IHdpZHRoKSAtIDE7CisJZWxzZQorCQl3aGlsZSAo d2lkdGgtLSkKKwkJCW1hc2sgPSAobWFzayA8PCAxKSB8IDE7CisKKwlyZXR1cm4gKGl0ZW1f dCltYXNrOworfQorCitzaXplX3QKK2JpdHBhY2tfcGFjayh1aW50OF90ICpwYWNrLCBzaXpl X3QgY2FyZXQsIGl0ZW1fdCBpdGVtLCBzaXplX3Qgc3pJdGVtV2lkdGgpCit7CisJc2l6ZV90 IHN6SXRlbVdpZHRoVG9HbyA9IHN6SXRlbVdpZHRoOworCWl0ZW1fdCBpdG1NYXNrVG9HbyA9 IHdpZHRoX3RvX21hc2soc3pJdGVtV2lkdGgpOworCisJd2hpbGUgKHN6SXRlbVdpZHRoVG9H byA+IDApIHsKKwkJc2l6ZV90IGNudFNhdmVkQml0czsKKwkJc2l6ZV90IGJ5dGUgPSBjYXJl dCAvIDg7CisJCXNpemVfdCBvZmYgPSBjYXJldCAlIDg7CisJCXVpbnQ4X3QgdWJDaHVuayA9 ICh1aW50OF90KWl0ZW0gPDwgb2ZmOworCQlpdGVtX3QgaXRtQ2h1bmtNYXNrID0gaXRtTWFz a1RvR28gPDwgb2ZmOworCQkvKgorCQkgKiBBcHBseWluZyBjaHVuayB1c2luZyB0aGUgbWFz ay4gU2V0dGluZyBiaXRzIHRvIG9uZSBhbmQgcmVzZXR0aW5nIGJpdHMKKwkJICogdG8gemVy byBpcyBvbmx5IGluIHNjb3BlcyBkZWZpbmVkIGJ5IHRoZSBtYXNrLiBaZXJvaW5nIG9mIGJp dHMKKwkJICogYWNjb3JkaW5nIHRvIGEgbWFzaywgd2UgY2FuIHVzZSBldmVuIGEgcGFjayBu b3QgYmVlbiBudWxsZWQgaW4KKwkJICogYWR2YW5jZS4KKwkJICovCisJCXBhY2tbYnl0ZV0g fD0gKHViQ2h1bmsgJiBpdG1DaHVua01hc2spOworCQlwYWNrW2J5dGVdICY9ICh1YkNodW5r IHwgfml0bUNodW5rTWFzayk7CisJCWNudFNhdmVkQml0cyA9ICg4IC0gb2ZmID4gc3pJdGVt V2lkdGhUb0dvKSA/CisJCQlzekl0ZW1XaWR0aFRvR28gOgorCQkJOCAtIG9mZjsgLy8gbnVt YmVyIG9mIHNhdmVkIGJpdHMKKwkJc3pJdGVtV2lkdGhUb0dvIC09IGNudFNhdmVkQml0czsK KwkJY2FyZXQgKz0gY250U2F2ZWRCaXRzOworCQlpdGVtID0gaXRlbSA+PiBjbnRTYXZlZEJp dHM7CisJCWl0bU1hc2tUb0dvID0gaXRtTWFza1RvR28gPj4gY250U2F2ZWRCaXRzOworCX0K KwlyZXR1cm4gY2FyZXQ7Cit9CisKK2l0ZW1fdAorYml0cGFja191bnBhY2soY29uc3QgdWlu dDhfdCAqcGFjaywgc2l6ZV90ICpjYXJldCwgc2l6ZV90IHdpZEl0ZW0pCit7CisJc2l6ZV90 IHN6SXRlbUNhcmV0OworCXNpemVfdCBzekl0ZW1XaWR0aFRvR287CisJdWludDhfdCBpdGVt W3NpemVvZihpdGVtX3QpXTsgLyogc2l6ZSBvZiBpdGVtIGFycmF5ICovCisKKwlzaXplX3Qg c3pQYWNrQnl0ZTsKKwlzaXplX3Qgc3pQYWNrT2ZmOworCXNpemVfdCBzekl0ZW1CeXRlOwor CXNpemVfdCBzekl0ZW1PZmY7CisJdWludDhfdCB1YkNodW5rOworCisJc3pJdGVtQ2FyZXQg PSAwOworCXN6SXRlbVdpZHRoVG9HbyA9IHdpZEl0ZW07CisJbWVtc2V0KGl0ZW0sIDAsIHNp emVvZihpdGVtX3QpKTsKKworCXdoaWxlIChzekl0ZW1XaWR0aFRvR28gPiAwKSB7CisJCXNp emVfdCBzekNodW5rU2l6ZTsKKwkJc2l6ZV90IHN6Q2h1bmtMb3dTaXplLCBzekNodW5rSGln aFNpemU7CisKKwkJc3pQYWNrQnl0ZSA9ICpjYXJldCAvIDg7CisJCXN6UGFja09mZiA9ICpj YXJldCAlIDg7CisJCXN6SXRlbUJ5dGUgPSBzekl0ZW1DYXJldCAvIDg7CisJCXN6SXRlbU9m ZiA9IHN6SXRlbUNhcmV0ICUgODsKKworCQl1YkNodW5rID0gcGFja1tzelBhY2tCeXRlXSA+ PiBzelBhY2tPZmY7CisKKwkJc3pDaHVua1NpemUgPSA4IC0gc3pQYWNrT2ZmOworCQlpZiAo c3pJdGVtV2lkdGhUb0dvIDwgc3pDaHVua1NpemUpIHsKKwkJCXN6Q2h1bmtTaXplID0gc3pJ dGVtV2lkdGhUb0dvOworCQkJdWJDaHVuayA9IHViQ2h1bmsgJiAodWludDhfdCl3aWR0aF90 b19tYXNrKHN6SXRlbVdpZHRoVG9Hbyk7CisJCX0KKworCQlpZiAoc3pDaHVua1NpemUgPiAo OCAtIHN6SXRlbU9mZikpIC8qIEZyZWUgc3BhY2Ugb2YgaXRlbVtzekl0ZW1CeXRlXSAqLwor CQl7CisJCQlzekNodW5rTG93U2l6ZSA9IDggLSBzekl0ZW1PZmY7CisJCQlzekNodW5rSGln aFNpemUgPSBzekNodW5rU2l6ZSAtIHN6Q2h1bmtMb3dTaXplOworCQl9IGVsc2UgeworCQkJ c3pDaHVua0xvd1NpemUgPSBzekNodW5rU2l6ZTsKKwkJCXN6Q2h1bmtIaWdoU2l6ZSA9IDA7 CisJCX0KKworCQlpdGVtW3N6SXRlbUJ5dGVdIHw9IHViQ2h1bmsgPDwgc3pJdGVtT2ZmOyAv KiBjaHVua19sb3cgKi8KKworCQlpZiAoc3pDaHVua0hpZ2hTaXplICE9IDApIHsKKwkJCUFz c2VydCgoc3pJdGVtQnl0ZSArIDEpIDwgc2l6ZW9mKGl0ZW1fdCkpOyAvKiBzaXplIG9mIGl0 ZW0gYXJyYXkgKi8KKwkJCWl0ZW1bc3pJdGVtQnl0ZSArIDFdIHw9IHViQ2h1bmsgPj4gc3pD aHVua0xvd1NpemU7IC8qIGNodW5rX2hpZ2ggKi8KKwkJfQorCisJCSpjYXJldCArPSBzekNo dW5rU2l6ZTsKKwkJc3pJdGVtQ2FyZXQgKz0gc3pDaHVua1NpemU7CisJCXN6SXRlbVdpZHRo VG9HbyAtPSBzekNodW5rU2l6ZTsKKwl9CisKKwkvKgorCSAqIFJlb3JkZXJpbmcgYnl0ZXMg aW4gYWNjb3JkYW5jZSB3aXRoIGVuZGlhbm5lc3Mgb2YgdGhlIHN5c3RlbS4KKwkgKgorCSAq IEhlcmUgZm9yIGEgTGl0dGxlLWVuZGlhbiBzeXN0ZW0gd2UgY2FuIGF2b2lkIHJlb3JkZXJp bmcsIGJ1dCBpbiBzdWNoIGEKKwkgKiBjYXNlIHdlIG5lZWQgdG8ga2VlcCB0aGUgaXRlbSBh cnJheSBhbGlnbmVkIHdpdGggaXRlbV90IHR5cGUsIGJ1dCB3ZSBkbworCSAqIG5vdCBrZWVw LgorCSAqLworCXsKKwkJc2l6ZV90IGogPSAxOworCQlpdGVtX3QgdmFsID0gaXRlbVtzaXpl b2YoaXRlbV90KSAtIGpdOworCQl3aGlsZSAoKytqIDw9IHNpemVvZihpdGVtX3QpKSB7CisJ CQl2YWwgPSB2YWwgPDwgODsKKwkJCXZhbCB8PSBpdGVtW3NpemVvZihpdGVtX3QpIC0gal07 CisJCX0KKwkJcmV0dXJuIHZhbDsKKwl9Cit9CisKKyNpbmNsdWRlICJsaWIvYml0cGFja190 ZW1wbF91bmRlZi5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbGliL2JpdHBhY2tfdTE2 LmMgYi9zcmMvYmFja2VuZC9saWIvYml0cGFja191MTYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uYWUyZWU2ZDZiYjIKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvYmFja2VuZC9saWIvYml0cGFja191MTYuYwpAQCAtMCwwICsxLDggQEAKKy8qCisgKiBG aWxlOiBiaXRwYWNrX3UxNi5jCisgKi8KKworLyogY2xhbmctZm9ybWF0IG9mZiAqLworI2lu Y2x1ZGUgImxpYi9iaXRwYWNrX3UxNl9jb25maWcuaCIKKyNpbmNsdWRlICJiaXRwYWNrX3Rl bXBsLmMiCisvKiBjbGFuZy1mb3JtYXQgb24gKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2xpYi9tZXNvbi5idWlsZCBiL3NyYy9iYWNrZW5kL2xpYi9tZXNvbi5idWlsZAppbmRleCA4 ZTM4ZmIyMGYxNy4uMDk4NGJkMGUzZjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2xpYi9t ZXNvbi5idWlsZAorKysgYi9zcmMvYmFja2VuZC9saWIvbWVzb24uYnVpbGQKQEAgLTEsNSAr MSwxMCBAQAogIyBDb3B5cmlnaHQgKGMpIDIwMjItMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwg RGV2ZWxvcG1lbnQgR3JvdXAKIAorZGZvcl9zb3VyY2VzID0gZmlsZXMoCisgICdiaXRwYWNr X3UxNi5jJywKKyAgJ3ZlY3RfdTE2LmMnCispCisKIGJhY2tlbmRfc291cmNlcyArPSBmaWxl cygKICAgJ2JpcGFydGl0ZV9tYXRjaC5jJywKICAgJ2Jsb29tZmlsdGVyLmMnLApAQCAtMTEs MyArMTYsNSBAQCBiYWNrZW5kX3NvdXJjZXMgKz0gZmlsZXMoCiAgICdwYWlyaW5naGVhcC5j JywKICAgJ3JidHJlZS5jJywKICkKKworYmFja2VuZF9zb3VyY2VzICs9IGRmb3Jfc291cmNl cwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbGliL3ZlY3RfdGVtcGwuYyBiL3NyYy9iYWNr ZW5kL2xpYi92ZWN0X3RlbXBsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLjUyNzEzYzM5ZDNiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvbGli L3ZlY3RfdGVtcGwuYwpAQCAtMCwwICsxLDMwMSBAQAorLyoKKyAqIEZpbGU6IHZlY3RfdGVt cGwuYworICovCisKKyNpbmNsdWRlICJsaWIvdmVjdF90ZW1wbF9zdGFwbGUuaCIKKworLyoK KyAqIFZlY3RvcidzIGZ1bmN0aW9ucworICogS2VlcCB0aGlzIHNlY3Rpb24gZXF1YWwgdG8g dGhlIHNhbWUgc2VjdGlvbiBpbiB2ZWN0X3RlbXBsLmgKKyAqLworLyoKKyAqIENhbGxlciBo YXMgdG8gY29udHJvbCB3aGV0aGVyIHZlY3RvciB1c2Ugb3V0ZXIgbWVtb3J5IHByb3ZpZGVk IGJ5IGNhbGxlciBvcgorICogbWFuYWdlIG1lbW9yeSBhbGxvY2F0aW9uIGF1dG9tYXRpY2Fs bHksIHdoaWNoIGRlZmluZXMgd2hldGhlciB2ZWN0X2luc2VydCwKKyAqIHZlY3RfYXBwZW5k IGFuZCBvdGhlciBmdW5jdGlvbnMgb2YgdGhlIHZlY3RvciBjb250YWluZXIgYXV0b21hdGlj YWxseSBtYW5nZQorICogZHluYW1pYyBtZW1vcnkgYWxsb2NhdGlvbiBvciBub3QuCisgKi8K KworaW50IHZlY3RfaW5pdCh2ZWN0X3QgKnYsIHNpemVfdCBjYXAsIGl0ZW1fdCBvdXRlcl9t ZW1bXSk7CitpbnQgdmVjdF9maWxsKHZlY3RfdCAqdiwgc2l6ZV90IGNudCwgY29uc3QgaXRl bV90IGluW10pOworaW50IHZlY3RfcmVzZXJ2ZSh2ZWN0X3QgKnYsIHNpemVfdCBzek5ld0Nh cCk7CitpbnQgdmVjdF9hcHBlbmQodmVjdF90ICp2ZWN0LCBpdGVtX3QgdmFsKTsKK3ZvaWQg dmVjdF9wcmludChjb25zdCB2ZWN0X3QgKmEpOworaW50IHZlY3RfY29tcGFyZShjb25zdCB2 ZWN0X3QgKmEsIGNvbnN0IHZlY3RfdCAqYik7CitpbnQgdmVjdF9pbnNlcnQodmVjdF90ICp2 LCBzaXplX3QgcG9zLCBpdGVtX3QgdmFsKTsKK3ZvaWQgdmVjdF9jbGVhcih2ZWN0X3QgKnYp OworCisvKgorICogVW5pcXVlIHNvcnRlZCB2ZWN0b3IncyBmdW5jdGlvbnMKKyAqIEtlZXAg dGhpcyBzZWN0aW9uIGVxdWFsIHRvIHRoZSBzYW1lIHNlY3Rpb24gaW4gdmVjdF90ZW1wbC5o CisgKi8KK3Vzdl9pbnNfcmVzX3QgdXN2X2luc2VydCh1bmlxc29ydHZlY3RfdCAqYSwgaXRl bV90IHZhbCk7Cit1c3Zfc3JjaF9yZXNfdCB1c3Zfc2VhcmNoKGNvbnN0IHVuaXFzb3J0dmVj dF90ICp1c3YsIGl0ZW1fdCB2YWwpOworCitpbnQKK3ZlY3RfaW5pdCh2ZWN0X3QgKnYsIHNp emVfdCBjYXAsIGl0ZW1fdCBvdXRlcl9tZW1bXSkKK3sKKwlpZiAodiA9PSBOVUxMKQorCQln b3RvIHZlY3RfaW5pdF9lcnJvcjsKKworCXYtPmNhcCA9IGNhcDsKKwl2LT5jbnQgPSAwOwor CisJaWYgKG91dGVyX21lbSAhPSBOVUxMKQorCXsKKwkJdi0+bWVtX2lzX291dGVyID0gdHJ1 ZTsKKwkJdi0+bSA9IG91dGVyX21lbTsKKwl9CisJZWxzZQorCXsKKwkJdi0+bWVtX2lzX291 dGVyID0gZmFsc2U7CisJCWlmIChjYXAgPT0gMCkKKwkJCXYtPm0gPSBOVUxMOworCQllbHNl CisJCXsKKwkJCXYtPm0gPSAoaXRlbV90ICopVkVDVF9NQUxMT0MoY2FwICogc2l6ZW9mKGl0 ZW1fdCkpOworCQkJaWYgKHYtPm0gPT0gTlVMTCkKKwkJCQlnb3RvIHZlY3RfaW5pdF9lcnJv cjsKKwkJfQorCX0KKworCS8qIHZlY3RfaW5pdF9vazogKi8KKwlyZXR1cm4gMDsKK3ZlY3Rf aW5pdF9lcnJvcjoKKwltZW1zZXQodiwgMCwgc2l6ZW9mKHZlY3RfdCkpOworCXJldHVybiAt MTsKK30KKworaW50Cit2ZWN0X2ZpbGwodmVjdF90ICp2LCBzaXplX3QgY250LCBjb25zdCBp dGVtX3QgaW5bXSkKK3sKKwlpZiAodiA9PSBOVUxMKQorCQlyZXR1cm4gLTE7CisKKwlpZiAo Y250ID09IDApCisJeworCQl2ZWN0X2NsZWFyKHYpOworCQlyZXR1cm4gMDsKKwl9CisKKwlm b3IgKHNpemVfdCBqID0gMDsgaiA8IGNudDsgaisrKQorCXsKKwkJaWYgKHZlY3RfYXBwZW5k KHYsIGluW2pdKSAhPSAwKQorCQl7CisJCQl2ZWN0X2NsZWFyKHYpOworCQkJcmV0dXJuIC0x OworCQl9CisJfQorCXJldHVybiAwOworfQorCitpbnQKK3ZlY3RfcmVzZXJ2ZSh2ZWN0X3Qg KnYsIHNpemVfdCBzek5ld0NhcCkKK3sKKwlpdGVtX3QgKm1OZXc7CisKKwlpZiAodiA9PSBO VUxMKQorCQlyZXR1cm4gLTE7CisKKwlpZiAodi0+bWVtX2lzX291dGVyKQorCQlyZXR1cm4g LTE7CisKKwlpZiAoc3pOZXdDYXAgPD0gdi0+Y2FwKQorCQlyZXR1cm4gMDsKKworCW1OZXcg PSAoaXRlbV90ICopIFZFQ1RfTUFMTE9DKHNpemVvZihpdGVtX3QpICogc3pOZXdDYXApOwor CisJaWYgKG1OZXcgPT0gTlVMTCkKKwkJcmV0dXJuIC0xOworCisJaWYodi0+bSA9PSBOVUxM ICYmIHYtPmNudCAhPSAwKQorCQlyZXR1cm4gLTE7CisKKwlpZih2LT5tICE9IE5VTEwgJiYg di0+Y250ICE9IDApCisJCW1lbWNweShtTmV3LCB2LT5tLCB2LT5jbnQgKiBzaXplb2YoaXRl bV90KSk7CisKKwlWRUNUX0ZSRUUodi0+bSk7CisJdi0+bSA9IG1OZXc7CisJdi0+Y2FwID0g c3pOZXdDYXA7CisJcmV0dXJuIDA7Cit9CisKK2ludAordmVjdF9hcHBlbmQodmVjdF90ICp2 ZWN0LCBpdGVtX3QgdmFsKQoreworCWlmICh2ZWN0ID09IE5VTEwpCisJCXJldHVybiAtMTsK KworCWlmICh2ZWN0LT5jbnQgKyAxID4gdmVjdC0+Y2FwKQorCXsKKwkJaWYgKHZlY3QtPm1l bV9pc19vdXRlcikKKwkJCXJldHVybiAtMTsKKwkJZWxzZQorCQkJdmVjdF9yZXNlcnZlKHZl Y3QsIHZlY3QtPmNhcCArIFZFQ1RfTUVNQUxMT0NTVEVQKTsKKwl9CisKKwl2ZWN0LT5tW3Zl Y3QtPmNudF0gPSB2YWw7CisJdmVjdC0+Y250Kys7CisJcmV0dXJuIDA7Cit9CisKK3ZvaWQK K3ZlY3RfcHJpbnQoY29uc3QgdmVjdF90ICphKQoreworCWZvciAoc2l6ZV90IGogPSAwOyBq IDwgYS0+Y250OyBqKyspCisJCXByaW50ZigiJSIgVkVDVF9JVEVNX0ZPUk1BVF9TUEVDSUZJ RVIgIiAiLCBhLT5tW2pdKTsKKworCXByaW50ZigiXG4iKTsKK30KKworaW50Cit2ZWN0X2Nv bXBhcmUoY29uc3QgdmVjdF90ICphLCBjb25zdCB2ZWN0X3QgKmIpCit7CisJaWYgKGEgPT0g TlVMTCB8fCBiID09IE5VTEwpCisJCXJldHVybiAtMTsKKworCWlmIChhLT5jbnQgIT0gYi0+ Y250KQorCQlyZXR1cm4gLTE7CisKKwlmb3IgKHNpemVfdCBqID0gMDsgaiA8IGEtPmNudDsg aisrKQorCQlpZiAoYS0+bVtqXSAhPSBiLT5tW2pdKQorCQkJcmV0dXJuIC0xOworCisJcmV0 dXJuIDA7Cit9CisKK2ludAordmVjdF9pbnNlcnQodmVjdF90ICp2LCBzaXplX3QgcG9zLCBp dGVtX3QgdmFsKQoreworCWlmICh2LT5jYXAgPCB2LT5jbnQgKyAxICYmCisJCSh2LT5tZW1f aXNfb3V0ZXIgfHwgdmVjdF9yZXNlcnZlKHYsIHYtPmNhcCArIFZFQ1RfTUVNQUxMT0NTVEVQ KSAhPSAwKSkKKwkJcmV0dXJuIC0xOworCisJLyoKKwkgKiBJZiBuZWVkLCBtb3ZlIHJpZ2h0 IGZyb20gcG9zIGluY2x1ZGluZyBwb3MuIEJlY2F1c2UKKwkgKiBuZWl0aGVyIHN0ZGxpYidz IG5vciBQT1NJWCdzIGRvY3VtZW50YXRpb24gZGVmaW5lcyB0aGUKKwkgKiBiZWhhdmlvdXIg b2YgbWVtbW92ZSBpbiBjYXNlIG9mIGNvdW50PTAsIHdlIGNoZWNrIGl0IGJ5CisJICogb3Vy c2VsdmVzLgorCSAqLworCWlmICh2LT5jbnQgLSBwb3MgPiAwKQorCQltZW1tb3ZlKCZ2LT5t W3BvcyArIDFdLCAmdi0+bVtwb3NdLCAodi0+Y250IC0gcG9zKSAqIHNpemVvZihpdGVtX3Qp KTsKKworCXYtPm1bcG9zXSA9IHZhbDsKKwl2LT5jbnQrKzsKKwlyZXR1cm4gMDsKK30KKwor dm9pZAordmVjdF9jbGVhcih2ZWN0X3QgKnYpCit7CisJaWYgKHYgPT0gTlVMTCkKKwkJcmV0 dXJuOworCisJaWYgKCF2LT5tZW1faXNfb3V0ZXIpCisJCVZFQ1RfRlJFRSh2LT5tKTsKKwor CW1lbXNldCh2LCAwLCBzaXplb2YodmVjdF90KSk7Cit9CisKK3Vzdl9zcmNoX3Jlc190Cit1 c3Zfc2VhcmNoKGNvbnN0IHVuaXFzb3J0dmVjdF90ICp1c3YsIGl0ZW1fdCB2YWwpCit7CisJ c2l6ZV90IGksIGwsIGc7CisJdXN2X3NyY2hfcmVzX3QgcmVzOworCisJaWYgKHVzdiA9PSBO VUxMIHx8ICh1c3YtPm0gPT0gTlVMTCAmJiAoKHVzdi0+Y250ICE9IDApIHx8IHVzdi0+Y2Fw ICE9IDApKSkgeworCQlyZXMuc3QgPSBVU1ZfU1JDSF9FUlJPUjsKKwkJcmV0dXJuIHJlczsK Kwl9CisKKwlpZiAodXN2LT5jbnQgPT0gMCkgeworCQlyZXMucG9zID0gMDsKKwkJcmVzLnN0 ID0gVVNWX1NSQ0hfRU1QVFk7CisJCXJldHVybiByZXM7CisJfQorCisJaWYgKHZhbCA8IHVz di0+bVswXSkgeworCQlyZXMucG9zID0gMDsKKwkJcmVzLnN0ID0gVVNWX1NSQ0hfTk9UX0ZP VU5EX1NNQUxMRVNUOworCQlyZXR1cm4gcmVzOworCX0KKworCWlmICh2YWwgPiB1c3YtPm1b dXN2LT5jbnQgLSAxXSkgeworCQlyZXMucG9zID0gdXN2LT5jbnQgLSAxOworCQlyZXMuc3Qg PSBVU1ZfU1JDSF9OT1RfRk9VTkRfTEFSR0VTVDsKKwkJcmV0dXJuIHJlczsKKwl9CisKKwls ID0gMDsKKwlnID0gdXN2LT5jbnQgLSAxOworCisJd2hpbGUgKGcgLSBsID4gMSkgeworCQlp ID0gbCArIChnIC0gbCkgLyAyOworCQlpZiAodmFsID09IHVzdi0+bVtpXSkgeworCQkJcmVz LnBvcyA9IGk7CisJCQlyZXMuc3QgPSBVU1ZfU1JDSF9GT1VORDsKKwkJCXJldHVybiByZXM7 CisJCX0gZWxzZSBpZiAodmFsID4gdXN2LT5tW2ldKSB7CisJCQlsID0gaTsKKwkJfSBlbHNl IC8vIHZhbCA8PSB1c3YtPm1baV0KKwkJeworCQkJZyA9IGk7CisJCX0KKwl9CisJLyoKKwkg KiBXaGVuIHNjb3BlcyBsIGFuZCBnIGFyZSBuZWlnaGJvdXJzICggIGctbCA9IDEpCisJICov CisJaWYgKHZhbCA9PSB1c3YtPm1bZ10pIHsKKwkJcmVzLnBvcyA9IGc7CisJCXJlcy5zdCA9 IFVTVl9TUkNIX0ZPVU5EOworCQlyZXR1cm4gcmVzOworCX0gZWxzZSBpZiAodmFsID09IHVz di0+bVtsXSkgeworCQlyZXMucG9zID0gbDsKKwkJcmVzLnN0ID0gVVNWX1NSQ0hfRk9VTkQ7 CisJCXJldHVybiByZXM7CisJfQorCisJcmVzLnBvcyA9IGc7CisJcmVzLnN0ID0gVVNWX1NS Q0hfTk9UX0ZPVU5EOworCXJldHVybiByZXM7Cit9CisKKy8qCisgKiBJTlNFUlQKKyAqIHJl Y2VpdmVzIGEgdmFsdWUsIGNoZWNrcyB3aGV0aGVyIGFuIHVuaXF1ZSBzb3J0ZWQgdmFsdWVz IHZlY3RvciBjb250YWlucworICogdGhpcyB2YWx1ZS4gSWYgbm90LCBpbnNlcnRzIG5ldyB2 YWx1ZSwgcmV0YWluaW5nIHNvcnRlZCBvcmRlci4KKyAqLwordXN2X2luc19yZXNfdAordXN2 X2luc2VydCh1bmlxc29ydHZlY3RfdCAqYSwgaXRlbV90IHZhbCkKK3sKKwl1c3Zfc3JjaF9y ZXNfdCBzZWFyY2g7CisJdXN2X2luc19yZXNfdCBpbnNlcnQ7CisKKwlBc3NlcnQoYSAhPSBO VUxMKTsKKworCXNlYXJjaCA9IHVzdl9zZWFyY2goYSwgdmFsKTsKKwlpZiAoc2VhcmNoLnN0 ID09IFVTVl9TUkNIX0ZPVU5EKSB7CisJCWluc2VydC5zdCA9IFVTVl9JTlNfRVhJU1RTOwor CQlpbnNlcnQucG9zID0gc2VhcmNoLnBvczsKKwkJcmV0dXJuIGluc2VydDsKKwl9IGVsc2Ug aWYgKHNlYXJjaC5zdCA9PSBVU1ZfU1JDSF9OT1RfRk9VTkRfU01BTExFU1QgfHwKKwkJCSAg IHNlYXJjaC5zdCA9PSBVU1ZfU1JDSF9OT1RfRk9VTkQpIHsKKwkJaW5zZXJ0LnBvcyA9IHNl YXJjaC5wb3M7CisJfSBlbHNlIGlmIChzZWFyY2guc3QgPT0gVVNWX1NSQ0hfRU1QVFkgfHwK KwkJCSAgIHNlYXJjaC5zdCA9PSBVU1ZfU1JDSF9OT1RfRk9VTkRfTEFSR0VTVCkgeworCQkv KiBJbiBjYXNlIHdoZW4gdmFsdWUgaXMgbW9yZSB0aGFuIGxhcmdlc3Q6IHBvcyA9IGEtPmNu dCA9IHNlYXJjaC5nICsgMS4KKwkJICovCisJCS8qIEluIGNhc2Ugb2YgZW1wdHkgdmVjdG9y OiBwb3MgPSBhLT5jbnQgPSAwLiAqLworCQlpbnNlcnQucG9zID0gYS0+Y250OworCX0gZWxz ZSAvKiBVU1ZfU1JDSF9FUlJPUiBvciB1bmtub3duIHJlc3VsdCAqLworCXsKKwkJaW5zZXJ0 LnN0ID0gVVNWX0lOU19FUlJPUjsKKwkJcmV0dXJuIGluc2VydDsKKwl9CisKKwlpbnNlcnQu c3QgPSB2ZWN0X2luc2VydChhLCBpbnNlcnQucG9zLCB2YWwpCisJPT0gMCA/IFVTVl9JTlNf TkVXIDogVVNWX0lOU19FUlJPUjsKKworCXJldHVybiBpbnNlcnQ7Cit9CisKKyNpbmNsdWRl ICJsaWIvdmVjdF90ZW1wbF91bmRlZi5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbGli L3ZlY3RfdTE2LmMgYi9zcmMvYmFja2VuZC9saWIvdmVjdF91MTYuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMGFiOGUyMjRjN2EKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvYmFja2VuZC9saWIvdmVjdF91MTYuYwpAQCAtMCwwICsxLDggQEAKKy8qCisg KiBGaWxlOiB2ZWN0X3UxNi5jCisgKi8KKworLyogY2xhbmctZm9ybWF0IG9mZiAqLworI2lu Y2x1ZGUgImxpYi92ZWN0X3UxNl9jb25maWcuaCIKKyNpbmNsdWRlICJ2ZWN0X3RlbXBsLmMi CisvKiBjbGFuZy1mb3JtYXQgb24gKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2MuaCBi L3NyYy9pbmNsdWRlL2MuaAppbmRleCA4OGQxM2VjOTk5My4uMWU0OGE1MmFlOTAgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2MuaAorKysgYi9zcmMvaW5jbHVkZS9jLmgKQEAgLTUwNSw2 ICs1MDUsMTAgQEAgZXh0ZXJuICJDKysiCiAjZGVmaW5lIENwcEFzU3RyaW5nKGlkZW50aWZp ZXIpICNpZGVudGlmaWVyCiAjZGVmaW5lIENwcEFzU3RyaW5nMih4KQkJCUNwcEFzU3RyaW5n KHgpCiAjZGVmaW5lIENwcENvbmNhdCh4LCB5KQkJCXgjI3kKKyNkZWZpbmUgQ3BwQ29uY2F0 Mih4LCB5KQkJQ3BwQ29uY2F0KHgsIHkpCisKKyNkZWZpbmUgQ3BwQ29uY2F0VHJpcGxlKHgs IHksIHopCXgjI3kjI3oKKyNkZWZpbmUgQ3BwQ29uY2F0VHJpcGxlMihhLCBiLCBjKQlDcHBD b25jYXRUcmlwbGUoYSwgYiwgYykKIAogLyoKICAqIFZBX0FSR1NfTkFSR1MKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2xpYi9iaXRwYWNrX3N0YXBsZV90ZW1wbC5oIGIvc3JjL2luY2x1 ZGUvbGliL2JpdHBhY2tfc3RhcGxlX3RlbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLjVjOTk3MmUwOGNiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2lu Y2x1ZGUvbGliL2JpdHBhY2tfc3RhcGxlX3RlbXBsLmgKQEAgLTAsMCArMSw1NyBAQAorLyoK KyAqIEZpbGU6IGJpdHBhY2tfc3RhcGxlX3RlbXBsLmguaAorICovCisKKyNpbmNsdWRlICJj LmgiCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIE5PTlJFVVNBQkxFIENPREUs IGFsbG93ZWQgdG8gYmUgaW5jbHVkZWQgb25seSBvbmNlCisgKgorICogVGhpcyBjb2RlIHNo b3VsZCBhcHBlYXIgb25seSBvbmNlIGluIGEgZmlsZSAob3IgaW4gYSBjaGFpbiBvZiBmaWxl cykKKyAqIGluY2x1ZGluZyB0aGlzIGhlYWRlciB3aXRoICNpbmNsdWRlLiBTbywgd2UgcHJv dGVjdCBpdCBmcm9tIGR1cGxpY2F0ZXMgYnkKKyAqIG1lYW5zIG9mIG1hY3JvCisgKgorICoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLworI2lmbmRlZiBfQklUUEFDS19TVEFQTEVfVEVNUExf SF9VTklRVUVfQ09ERV8KKyNkZWZpbmUgX0JJVFBBQ0tfU1RBUExFX1RFTVBMX0hfVU5JUVVF X0NPREVfCisKKy8qIE5vIGNvZGUgaGVyZSB5ZXQgKi8KKworI2VuZGlmIC8qIF9CSVRQQUNL X1NUQVBMRV9URU1QTF9IX1VOSVFVRV9DT0RFXyAqLworCisvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCisgKiBFbmQgb2YgQ29kZSwgYWxsb3dlZCB0byBiZSBpbmNsdWRlZCBvbmx5IG9u Y2UKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgorICogUkVVU0FCTEUgQ09ERQorICoKKyAqIFRoaXMgY29kZSBjYW4gYmUgcmV1c2Vk IHdpdGggI2luY2x1ZGUgZGlyZWN0aXZlIGluIGEgZmlsZSBpZiBCSVRQQUNLX01BUktFUgor ICogcmVkZWZpbmVkLiBUaGlzIGFsbG93IGNyZWF0aW9uIG9mIHNldmVyYWwgdHlwZXMgb2Yg dmVjdG9ycyB3aXRoIGRpZmZlcmVudAorICogdHlwZXMgb2YgbWVtYmVycy4KKyAqCisgKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgQklUUEFDS19JVEVNX1RZUEUKKyNl cnJvciAiQklUUEFDS19JVEVNX1RZUEUgbWFjcm8gaXMgaW5kZWZpbmVkLiIKKyNlbmRpZgor I2lmbmRlZiBCSVRQQUNLX01BUktFUgorI2Vycm9yICJCSVRQQUNLX01BUktFUiBtYWNybyBp cyBpbmRlZmluZWQuIgorI2VuZGlmCisKKyNkZWZpbmUgaXRlbV90CQkgICBCSVRQQUNLX0lU RU1fVFlQRQorI2RlZmluZSB3aWR0aF9mcm9tX3ZhbCBDcHBDb25jYXRUcmlwbGUyKHdpZHRo XywgQklUUEFDS19NQVJLRVIsIF9mcm9tX3ZhbCkKKyNkZWZpbmUgd2lkdGhfdG9fbWFzayAg Q3BwQ29uY2F0VHJpcGxlMih3aWR0aF8sIEJJVFBBQ0tfTUFSS0VSLCBfdG9fbWFzaykKKyNk ZWZpbmUgYml0cGFja19wYWNrICAgQ3BwQ29uY2F0VHJpcGxlMihiaXRwYWNrXywgQklUUEFD S19NQVJLRVIsIF9wYWNrKQorI2RlZmluZSBiaXRwYWNrX3VucGFjayBDcHBDb25jYXRUcmlw bGUyKGJpdHBhY2tfLCBCSVRQQUNLX01BUktFUiwgX3VucGFjaykKKworLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgorICogRW5kIG9mIFJldXNhYmxlIENvZGUKKyAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8KKworLyoKKyAqIERvbid0IGZvcmdldCB0byBpbmNsdWRlIHRoaXMgY29k ZSBpbiB5b3VyIGZpbGUgdGhhdCB1c2VzIHRoaXMgaGVhZGVyCisgKgorICogI2luY2x1ZGUg ImxpYi9iaXRwYWNrX3RlbXBsX3VuZGVmLmgiCisgKgorICovCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9saWIvYml0cGFja190ZW1wbC5oIGIvc3JjL2luY2x1ZGUvbGliL2JpdHBhY2tf dGVtcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjNhNmUw NmMzMjgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9saWIvYml0cGFja190ZW1w bC5oCkBAIC0wLDAgKzEsMTQgQEAKKy8qCisgKiBiaXRwYWNrX3RlbXBsLmgKKyAqCisgKi8K KworI2luY2x1ZGUgImJpdHBhY2tfc3RhcGxlX3RlbXBsLmgiCisKK2V4dGVybiBpdGVtX3Qg d2lkdGhfZnJvbV92YWwoaXRlbV90IHZhbCk7CitleHRlcm4gaXRlbV90IHdpZHRoX3RvX21h c2soc2l6ZV90IHdpZHRoKTsKK2V4dGVybiBzaXplX3QgYml0cGFja19wYWNrKHVpbnQ4X3Qg KnBhY2ssIHNpemVfdCBjYXJldCwgaXRlbV90IGl0ZW0sCisJCQkJCQkgICBzaXplX3Qgc3pJ dGVtV2lkdGgpOworZXh0ZXJuIGl0ZW1fdCBiaXRwYWNrX3VucGFjayhjb25zdCB1aW50OF90 ICpwYWNrLCBzaXplX3QgKmNhcmV0LCBzaXplX3Qgc3pJdGVtV2lkdGgpOworCisjaW5jbHVk ZSAiYml0cGFja190ZW1wbF91bmRlZi5oIgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbGli L2JpdHBhY2tfdGVtcGxfdW5kZWYuaCBiL3NyYy9pbmNsdWRlL2xpYi9iaXRwYWNrX3RlbXBs X3VuZGVmLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjViZjg2 NGZmYTE1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvbGliL2JpdHBhY2tfdGVt cGxfdW5kZWYuaApAQCAtMCwwICsxLDUgQEAKKyN1bmRlZiBpdGVtX3QKKyN1bmRlZiB3aWR0 aF9mcm9tX3ZhbAorI3VuZGVmIHdpZHRoX3RvX21hc2sKKyN1bmRlZiBiaXRwYWNrX3BhY2sK KyN1bmRlZiBiaXRwYWNrX3VucGFjawpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbGliL2Jp dHBhY2tfdTE2LmggYi9zcmMvaW5jbHVkZS9saWIvYml0cGFja191MTYuaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNDVmYjZjNGIxN2IKLS0tIC9kZXYvbnVs bAorKysgYi9zcmMvaW5jbHVkZS9saWIvYml0cGFja191MTYuaApAQCAtMCwwICsxLDEyIEBA CisvKgorICogYml0cGFjay5oCisgKi8KKyNpZm5kZWYgX0JJVFBBQ0tfVTE2X0hfCisjZGVm aW5lIF9CSVRQQUNLX1UxNl9IXworCisvKiBjbGFuZy1mb3JtYXQgb2ZmICovCisjaW5jbHVk ZSAiYml0cGFja191MTZfY29uZmlnLmgiCisjaW5jbHVkZSAiYml0cGFja190ZW1wbC5oIgor LyogY2xhbmctZm9ybWF0IG9uICovCisKKyNlbmRpZiAvKiBfQklUUEFDS19VMTZfSF8gKi8K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2xpYi9iaXRwYWNrX3UxNl9jb25maWcuaCBiL3Ny Yy9pbmNsdWRlL2xpYi9iaXRwYWNrX3UxNl9jb25maWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uOWU2YzY0ZDRmZWUKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvaW5jbHVkZS9saWIvYml0cGFja191MTZfY29uZmlnLmgKQEAgLTAsMCArMSw2IEBACisv KgorICogRmlsZTogdmVjdF91MTZfY29uZmlnLmgKKyAqLworCisjZGVmaW5lIEJJVFBBQ0tf SVRFTV9UWVBFIHVpbnQxNl90CisjZGVmaW5lIEJJVFBBQ0tfTUFSS0VSCSAgdTE2CmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9saWIvdmVjdF90ZW1wbC5oIGIvc3JjL2luY2x1ZGUvbGli L3ZlY3RfdGVtcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u OGVlYzZmMDY0YjMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9saWIvdmVjdF90 ZW1wbC5oCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgKiBGaWxlOiB2ZWN0X3RlbXBsLmgKKyAq LworCisjaW5jbHVkZSAidmVjdF90ZW1wbF9zdGFwbGUuaCIKKworLyoKKyAqIFZlY3Rvcidz IGZ1bmN0aW9ucworICogS2VlcCB0aGlzIHNlY3Rpb24gZXF1YWwgdG8gdGhlIHNhbWUgc2Vj dGlvbiBpbiB2ZWN0X3RlbXBsLmMKKyAqLworZXh0ZXJuIGludCB2ZWN0X2luaXQodmVjdF90 ICp2LCBzaXplX3QgY2FwLCBpdGVtX3QgZXh0ZXJuYWxfbWVtb3J5W10pOworZXh0ZXJuIGlu dCB2ZWN0X2ZpbGwodmVjdF90ICp2LCBzaXplX3QgY250LCBjb25zdCBpdGVtX3QgKmluKTsK K2V4dGVybiBpbnQgdmVjdF9yZXNlcnZlKHZlY3RfdCAqdiwgc2l6ZV90IHN6TmV3Q2FwKTsK K2V4dGVybiBpbnQgdmVjdF9hcHBlbmQodmVjdF90ICp2ZWN0LCBpdGVtX3QgdmFsKTsKK2V4 dGVybiB2b2lkIHZlY3RfcHJpbnQoY29uc3QgdmVjdF90ICphKTsKK2V4dGVybiBpbnQgdmVj dF9jb21wYXJlKGNvbnN0IHZlY3RfdCAqYSwgY29uc3QgdmVjdF90ICpiKTsKK2V4dGVybiBp bnQgdmVjdF9pbnNlcnQodmVjdF90ICp2LCBzaXplX3QgcG9zLCBpdGVtX3QgdmFsKTsKK2V4 dGVybiB2b2lkIHZlY3RfY2xlYXIodmVjdF90ICp2KTsKKworLyoKKyAqIFVuaXF1ZSBzb3J0 ZWQgdmVjdG9yJ3MgZnVuY3Rpb25zCisgKiBLZWVwIHRoaXMgc2VjdGlvbiBlcXVhbCB0byB0 aGUgc2FtZSBzZWN0aW9uIGluIHZlY3RfdGVtcGwuYworICovCitleHRlcm4gdXN2X2luc19y ZXNfdCB1c3ZfaW5zZXJ0KHVuaXFzb3J0dmVjdF90ICphLCBpdGVtX3QgdmFsKTsKK2V4dGVy biB1c3Zfc3JjaF9yZXNfdCB1c3Zfc2VhcmNoKGNvbnN0IHVuaXFzb3J0dmVjdF90ICp1c3Ys IGl0ZW1fdCB2YWwpOworCisjaW5jbHVkZSAidmVjdF90ZW1wbF91bmRlZi5oIgpcIE5vIG5l d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2xpYi92ZWN0 X3RlbXBsX3N0YXBsZS5oIGIvc3JjL2luY2x1ZGUvbGliL3ZlY3RfdGVtcGxfc3RhcGxlLmgK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmIxOTJjNmQ4MmEzCi0t LSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvbGliL3ZlY3RfdGVtcGxfc3RhcGxlLmgK QEAgLTAsMCArMSwxNDAgQEAKKy8qCisgKiBGaWxlOiB2ZWN0X3N0YXBsZV90ZW1wbC5oCisg Ki8KKworI2luY2x1ZGUgImMuaCIKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICog Tk9OUkVVU0FCTEUgQ09ERSwgYWxsb3dlZCB0byBiZSBpbmNsdWRlZCBvbmx5IG9uY2UKKyAq CisgKiBUaGlzIGNvZGUgc2hvdWxkIGFwcGVhciBvbmx5IG9uY2UgaW4gYSBmaWxlIChvciBp biBhIGNoYWluIG9mIGZpbGVzKQorICogaW5jbHVkaW5nIHRoaXMgaGVhZGVyIHdpdGggI2lu Y2x1ZGUuIFNvLCB3ZSBwcm90ZWN0IGl0IGZyb20gZHVwbGljYXRlcyBieQorICogbWVhbnMg b2YgbWFjcm8KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisjaWZuZGVmIF9WRUNU X1NUQVBMRV9URU1QTF9IX1VOSVFVRV9DT0RFXworI2RlZmluZSBfVkVDVF9TVEFQTEVfVEVN UExfSF9VTklRVUVfQ09ERV8KKworLyoKKyAqIFNFQVJDSCBpbiBWZWN0b3Igb2YgVW5pcXVl IFNvcnRlZCBtZW1iZXJzCisgKi8KK3R5cGVkZWYgZW51bQoreworCVVTVl9TUkNIX0VSUk9S ID0gLTEsCisJVVNWX1NSQ0hfRk9VTkQgPSAwLAorCVVTVl9TUkNIX0VNUFRZLAorCVVTVl9T UkNIX05PVF9GT1VORCwKKwlVU1ZfU1JDSF9OT1RfRk9VTkRfU01BTExFU1QsCisJVVNWX1NS Q0hfTk9UX0ZPVU5EX0xBUkdFU1QKK30gdXN2X3NyY2hfc3RhdF90OworCit0eXBlZGVmIHN0 cnVjdAoreworCXVzdl9zcmNoX3N0YXRfdCBzdDsKKwlzaXplX3QgcG9zOyAvKiBwb3NpdGlv biAoaW5kZXgpIG9mIGEgbWVtYmVyIHRoYXQgaXMgZXF1YWwgdG8gc2VhcmNoZWQgdmFsdWUK KwkJCQkgKiBvciB0aGF0IGlzIG5lYXJlc3QgZ3JlYXRlciBtZW1iZXIgKi8KK30gdXN2X3Ny Y2hfcmVzX3Q7CisKKy8qCisgKiBJTlNFUlQgIGluIFZlY3RvciBvZiBVbmlxdWUgU29ydGVk IG1lbWJlcnMKKyAqLwordHlwZWRlZiBlbnVtCit7CisJVVNWX0lOU19FUlJPUiA9IC0xLAor CVVTVl9JTlNfRVhJU1RTID0gMCwKKwlVU1ZfSU5TX05FVworfSB1c3ZfaW5zX3N0YXRfdDsK KwordHlwZWRlZiBzdHJ1Y3QKK3sKKwl1c3ZfaW5zX3N0YXRfdCBzdDsKKwlzaXplX3QgcG9z OyAvKiBwb3NpdGlvbiAoaW5kZXgpIG9mIGEgbWVtYmVyIHRoYXQgd2FzIGluc2VydGVkIG9y IHRoYXQgcHJvdmVkCisJCQkJICogdG8gYmUgZXF1YWwgdG8gaW5zZXJ0ZWQgdmFsdWUKKwkJ CQkgKi8KK30gdXN2X2luc19yZXNfdDsKKworI2VuZGlmIC8qIF9WRUNUX1NUQVBMRV9URU1Q TF9IX1VOSVFVRV9DT0RFXyAqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBF bmQgb2YgQ29kZSwgYWxsb3dlZCB0byBiZSBpbmNsdWRlZCBvbmx5IG9uY2UKKyAqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogUkVV U0FCTEUgQ09ERQorICoKKyAqIFRoaXMgY29kZSBjYW4gYmUgcmV1c2VkIHdpdGggI2luY2x1 ZGUgZGlyZWN0aXZlIGluIGEgZmlsZSBpZiBWRUNUX01BUktFUgorICogcmVkZWZpbmVkLiBU aGlzIGFsbG93IGNyZWF0aW9uIG9mIHNldmVyYWwgdHlwZXMgb2YgdmVjdG9ycyB3aXRoIGRp ZmZlcmVudAorICogdHlwZXMgb2YgbWVtYmVycy4KKyAqCisgKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovCisKKyNpZm5kZWYgVkVDVF9JVEVNX1RZUEUKKyNlcnJvciAiVkVDVF9JVEVNX1RZ UEUgbWFjcm8gaXMgaW5kZWZpbmVkLiIKKyNlbmRpZgorCisjaWZuZGVmIFZFQ1RfSVRFTV9G T1JNQVRfU1BFQ0lGSUVSCisjZXJyb3IgIlZFQ1RfSVRFTV9GT1JNQVRfU1BFQ0lGSUVSIG1h Y3JvIGlzIGluZGVmaW5lZC4iCisjZW5kaWYKKworI2lmbmRlZiBWRUNUX01BUktFUgorI2Vy cm9yICJWRUNUX01BUktFUiBtYWNybyBpcyBpbmRlZmluZWQuIgorI2VuZGlmCisKKyNpZm5k ZWYgVkVDVF9NRU1BTExPQ1NURVAKKyNlcnJvciAiVkVDVF9NRU1BTExPQ1NURVAgbWFjcm8g aXMgaW5kZWZpbmVkLiIKKyNlbmRpZgorCisjaWZuZGVmIFZFQ1RfTUFMTE9DCisjZXJyb3Ig IlZFQ1RfTUFMTE9DIG1hY3JvIGlzIGluZGVmaW5lZC4iCisjZW5kaWYKKworI2lmbmRlZiBW RUNUX0ZSRUUKKyNlcnJvciAiVkVDVF9GUkVFIG1hY3JvIGlzIGluZGVmaW5lZC4iCisjZW5k aWYKKworLyoKKyAqIFRoZSBWZWN0b3IgdHlwZSBpdHNlbGYsCisgKiBUaGUgVmVjdG9yIG9m IFVuaXF1ZSBTb3J0ZWQgSXRlbXMgdHlwZQorICogYW5kIHRoZSBJdGVtIHR5cGUKKyAqCisg KiBJbiBmYWN0LCB2ZWN0b3JzJ3MgbmFtZXMgbG9va3MgbGlrZSB2ZWN0X3UxNl90IHdoZXJl OgorICogICAgIHZlY3RfIC0gY29tbW9uIHByZWZpeCwKKyAqICAgICB1MTYgLSBtYXJrZXIs CisgKiAgICAgX3QgLSBzdWZmaXgKKyAqLworI2RlZmluZSB2ZWN0X3QJCSAgIENwcENvbmNh dFRyaXBsZTIodmVjdF8sIFZFQ1RfTUFSS0VSLCBfdCkKKyNkZWZpbmUgdW5pcXNvcnR2ZWN0 X3QgQ3BwQ29uY2F0VHJpcGxlMih1bmlxc29ydHZlY3RfLCBWRUNUX01BUktFUiwgX3QpCisj ZGVmaW5lIGl0ZW1fdAkJICAgVkVDVF9JVEVNX1RZUEUKKwordHlwZWRlZiBzdHJ1Y3QKK3sK KwlzaXplX3QgY250OwkJICAgLyogbnVtYmVyIG9mIGl0ZW1zICovCisJc2l6ZV90IGNhcDsJ CSAgIC8qIGNhcGFjaXR5ICovCisJYm9vbCBtZW1faXNfb3V0ZXI7IC8qIGZsYWcgYWJvdXQg YW4gZXh0ZXJuYWwgbWVtb3J5IGlzIHVzZWQgKi8KKwlpdGVtX3QgKm07CQkgICAvKiBpdGVt cyAobWVtYmVycykgKi8KK30gdmVjdF90OworCit0eXBlZGVmIHZlY3RfdCB1bmlxc29ydHZl Y3RfdDsKKworI2RlZmluZSB2ZWN0X2luaXQJCSAgIENwcENvbmNhdFRyaXBsZTIodmVjdF8s IFZFQ1RfTUFSS0VSLCBfaW5pdCkKKyNkZWZpbmUgdmVjdF9maWxsCQkgICBDcHBDb25jYXRU cmlwbGUyKHZlY3RfLCBWRUNUX01BUktFUiwgX2ZpbGwpCisjZGVmaW5lIHZlY3RfcmVzZXJ2 ZQkgICBDcHBDb25jYXRUcmlwbGUyKHZlY3RfLCBWRUNUX01BUktFUiwgX3Jlc2VydmUpCisj ZGVmaW5lIHZlY3RfYXBwZW5kCQkgICBDcHBDb25jYXRUcmlwbGUyKHZlY3RfLCBWRUNUX01B UktFUiwgX2FwcGVuZCkKKyNkZWZpbmUgdmVjdF9wcmludAkJICAgQ3BwQ29uY2F0VHJpcGxl Mih2ZWN0XywgVkVDVF9NQVJLRVIsIF9wcmludCkKKyNkZWZpbmUgdmVjdF9jb21wYXJlCSAg IENwcENvbmNhdFRyaXBsZTIodmVjdF8sIFZFQ1RfTUFSS0VSLCBfY29tcGFyZSkKKyNkZWZp bmUgdmVjdF9pbnNlcnQJCSAgIENwcENvbmNhdFRyaXBsZTIodmVjdF8sIFZFQ1RfTUFSS0VS LCBfaW5zZXJ0KQorI2RlZmluZSB2ZWN0X2NsZWFyCQkgICBDcHBDb25jYXRUcmlwbGUyKHZl Y3RfLCBWRUNUX01BUktFUiwgX2NsZWFyKQorCisjZGVmaW5lIHVzdl9pbnNlcnQgQ3BwQ29u Y2F0VHJpcGxlMih1c3ZfLCBWRUNUX01BUktFUiwgX2luc2VydCkKKyNkZWZpbmUgdXN2X3Nl YXJjaCBDcHBDb25jYXRUcmlwbGUyKHVzdl8sIFZFQ1RfTUFSS0VSLCBfc2VhcmNoKQorCisv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqCisgKiBFbmQgb2YgUmV1c2FibGUgQ29kZQorICoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLworCisvKgorICogRG9uJ3QgZm9yZ2V0IHRvIGluY2x1 ZGUKKyAqIAkJI2luY2x1ZGUgInZlY3RfdGVtcGxfdW5kZWYuaCIKKyAqIGluIHlvdXIgZmls ZSB0aGF0IHVzZXMgdGhpcyBoZWFkZXIKKyAqCisgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2xpYi92ZWN0X3RlbXBsX3VuZGVmLmggYi9zcmMvaW5jbHVkZS9saWIvdmVjdF90ZW1w bF91bmRlZi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41OWI2 OWYxOGI5OQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL2xpYi92ZWN0X3RlbXBs X3VuZGVmLmgKQEAgLTAsMCArMSwyNSBAQAorLyoKKyAqIEZpbGU6IHZlY3RfdW5kZWYuaAor ICovCisKKyN1bmRlZiB2ZWN0X3QKKyN1bmRlZiB1bmlxc29ydHZlY3RfdAorI3VuZGVmIGl0 ZW1fdAorCisjdW5kZWYgVkVDVF9JVEVNX1RZUEUKKyN1bmRlZiBWRUNUX01BUktFUgorI3Vu ZGVmIFZFQ1RfQ3BwQ29uY2F0VHJpcGxlMgorCisjdW5kZWYgdmVjdF9pbml0CisjdW5kZWYg dmVjdF9maWxsCisjdW5kZWYgdmVjdF9yZXNlcnZlCisjdW5kZWYgdmVjdF9hcHBlbmQKKyN1 bmRlZiB2ZWN0X3ByaW50CisjdW5kZWYgdmVjdF9jb21wYXJlCisjdW5kZWYgdmVjdF9pbnNl cnQKKyN1bmRlZiB2ZWN0X2NsZWFyCisKKyN1bmRlZiB1c3ZfaW5zZXJ0CisjdW5kZWYgdXN2 X3NlYXJjaAorCisjdW5kZWYgVkVDVF9QUklfRk9STUFUX1NQRUNJRklFUgpcIE5vIG5ld2xp bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2xpYi92ZWN0X3Ux Ni5oIGIvc3JjL2luY2x1ZGUvbGliL3ZlY3RfdTE2LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLmVkZjgxYTQxN2Y0Ci0tLSAvZGV2L251bGwKKysrIGIvc3Jj L2luY2x1ZGUvbGliL3ZlY3RfdTE2LmgKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIEZpbGU6 IHZlY3RfdTE2LmgKKyAqLworCisjaWZuZGVmIF9WRUNUX1UxNl9IXworI2RlZmluZSBfVkVD VF9VMTZfSF8KKworLyogY2xhbmctZm9ybWF0IG9mZiAqLworI2luY2x1ZGUgInZlY3RfdTE2 X2NvbmZpZy5oIgorI2luY2x1ZGUgInZlY3RfdGVtcGwuaCIKKy8qIGNsYW5nLWZvcm1hdCBv biAqLworCisvKgorICogVHlwZXMgYXJlIHN1cHBvc2VkIHRvIGJlIGNyZWF0ZWQgY3JlYXRl ZCBieSB0aGlzIGZpbGUKKyAqICAgICB2ZWN0X3UxNl90CisgKiAgICAgaXRlbV91MTZfdAor ICogICAgIHVuaXFzb3J0dmVjdF91MTZfdAorICovCisvKgorICogRnVuY3Rpb25zIGFyZSBz dXBwb3NlZCB0byBiZSBjcmVhdGVkIGJ5IHRoaXMgZmlsZQorICogICAgIHZlY3RfdTE2X2Ny ZWF0ZQorICogICAgIHZlY3RfdTE2X2NyZWF0ZV9maWxsZWQKKyAqICAgICB2ZWN0X3UxNl9y ZXNlcnZlCisgKiAgICAgdmVjdF91MTZfYXBwZW5kCisgKiAgICAgdmVjdF91MTZfZGVzdHJv eQorICogICAgIHZlY3RfdTE2X3ByaW50CisgKiAgICAgdmVjdF91MTZfY29tcGFyZQorICog ICAgIHZlY3RfdTE2X2luc2VydAorICogICAgIHZlY3RfdTE2X2NsZWFyCisgKiAgICAgdXN2 X3UxNl9pbnNlcnQKKyAqICAgICB1c3ZfdTE2X3NlYXJjaAorICovCisKKyNlbmRpZiAvL19W RUNUX1UxNl9IXwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbGliL3ZlY3RfdTE2X2NvbmZp Zy5oIGIvc3JjL2luY2x1ZGUvbGliL3ZlY3RfdTE2X2NvbmZpZy5oCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xM2E5MzI4NGU4ZgotLS0gL2Rldi9udWxsCisr KyBiL3NyYy9pbmNsdWRlL2xpYi92ZWN0X3UxNl9jb25maWcuaApAQCAtMCwwICsxLDEwIEBA CisvKgorICogRmlsZTogdmVjdF91MTZfY29uZmlnLmgKKyAqLworCisjZGVmaW5lIFZFQ1Rf SVRFTV9UWVBFCQkJICAgdWludDE2X3QKKyNkZWZpbmUgVkVDVF9JVEVNX0ZPUk1BVF9TUEVD SUZJRVIgUFJJdTE2CisjZGVmaW5lIFZFQ1RfTUFSS0VSCQkJCSAgIHUxNgorI2RlZmluZSBW RUNUX01FTUFMTE9DU1RFUAkJICAgNQorI2RlZmluZSBWRUNUX01BTExPQwkJCQkgICBtYWxs b2MKKyNkZWZpbmUgVkVDVF9GUkVFCQkJCSAgIGZyZWUKLS0gCjIuNTMuMAoK --------------1IUaLyPVXDOy4S8HXjAMePOm Content-Type: text/x-patch; charset=UTF-8; name="v11-0002-Tests-of-vect-and-uniqsortvect-containers-and-of.patch" Content-Disposition: attachment; filename*0="v11-0002-Tests-of-vect-and-uniqsortvect-containers-and-of.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA3YzFlMmYxNmZjMzczMDJjZDI4MTZkYzhmODE0MmZmNmMzODU4M2Y5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFdmdlbnkgVm9yb3BhZXYgPGV2b3JvcEBnbWFpbC5j b20+CkRhdGU6IE1vbiwgMTMgQXByIDIwMjYgMjA6MTg6NDIgKzA4MDAKU3ViamVjdDogW1BB VENIIHYxMSAyLzVdIFRlc3RzIG9mIHZlY3QgYW5kIHVuaXFzb3J0dmVjdCBjb250YWluZXJz IGFuZCBvZgogYml0cGFjayBhbGdvcml0aG1zLgoKVW5pdCB0ZXN0cyBmb3IgdGhlIHZlY3Qg YW5kIHRoZSBiaXRwYWNrIHVuaXRzIGFyZSBpbWxlbWVudGVkLiBVbml0IHRlc3RzCmFyZSBp bXBsZW1lbnRlZCBhcyBiaW5hcnkgYXBwbGljYXRpb25zIHdyaXR0ZW4gaW4gQyBsYW5ndWFn ZSAoRUxGCmV4ZWN1dGFibGVzKSB0aGF0IHN1cHBvcnQgdGhlIFRBUCBwcm90b2NvbCBhbmQg YXJlIHJ1biB1c2luZyB0aGUgUHJvdmUKdXRpbGl0eS4KClRoZSBuZXcgTWFrZWZpbGUgdGFy Z2V0LCBjaGVjay11bml0LCBpcyBpbnRlZ3JhdGVkIGludG8gdGhlIFBvc3RncmVTUUwKYnVp bGQgc3lzdGVtIGFuZCBhbGxvd3MgcnVubmluZyB0aGUgdW5pdCB0ZXN0cyB1c2luZyB0aGUg Y29tbWFuZCAnbWFrZQpjaGVjay11bml0Jy4KCkF1dGhvcjogRXZnZW55IFZvcm9wYWV2IDxl dmdlbnkudm9yb3BhZXZAdGFudG9ybGFicy5jb20+IDxldm9yb3BAZ21haWwuY29tPgpSZXZp ZXdlZCBieTogQW5kcmV5IEJvcm9kaW4gPHg0bW1tQHlhbmRleC10ZWFtLnJ1PgotLS0KIEdO VW1ha2VmaWxlLmluICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL01ha2Vm aWxlLmdsb2JhbC5pbiAgICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL3Rlc3QvTWFrZWZp bGUgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9kZm9yLy5naXRpZ25v cmUgICAgICAgICAgICAgIHwgICAzICsKIHNyYy90ZXN0L2Rmb3IvTWFrZWZpbGUgICAgICAg ICAgICAgICAgfCAgNTQgKysrKwogc3JjL3Rlc3QvZGZvci9tZXNvbi5idWlsZCAgICAgICAg ICAgICB8ICA2MiArKysrCiBzcmMvdGVzdC9kZm9yL3Rlc3QuaCAgICAgICAgICAgICAgICAg IHwgIDMxICsrCiBzcmMvdGVzdC9kZm9yL3Rlc3RfYml0cGFja191MTYuYyAgICAgIHwgMzU3 ICsrKysrKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L2Rmb3IvdGVzdF91bmlxc29ydHZl Y3RfdTE2LmMgfCAyNjMgKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvZGZvci90ZXN0X3Zl Y3RfdTE2LmMgICAgICAgICB8IDE2OCArKysrKysrKysrCiBzcmMvdGVzdC9saWJ0YXAvLmdp dGlnbm9yZSAgICAgICAgICAgIHwgIDEzICsKIHNyYy90ZXN0L2xpYnRhcC8udHJhdmlzLnlt bCAgICAgICAgICAgfCAgMTMgKwogc3JjL3Rlc3QvbGlidGFwL0NPUFlJTkcgICAgICAgICAg ICAgICB8IDE2NSArKysrKysrKysrCiBzcmMvdGVzdC9saWJ0YXAvSU5TVEFMTCAgICAgICAg ICAgICAgIHwgIDQxICsrKwogc3JjL3Rlc3QvbGlidGFwL01ha2VmaWxlICAgICAgICAgICAg ICB8ICA3MyArKysrKwogc3JjL3Rlc3QvbGlidGFwL01ha2VmaWxlLndpbiAgICAgICAgICB8 ICAzNyArKysKIHNyYy90ZXN0L2xpYnRhcC9SRUFETUUubWQgICAgICAgICAgICAgfCAyNjgg KysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvbGlidGFwL3RhcC5jICAgICAgICAgICAgICAg ICB8IDQyMSArKysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvbGlidGFwL3Rh cC5oICAgICAgICAgICAgICAgICB8IDExNSArKysrKysrCiBzcmMvdGVzdC9tZXNvbi5idWls ZCAgICAgICAgICAgICAgICAgIHwgICAxICsKIDIwIGZpbGVzIGNoYW5nZWQsIDIwODggaW5z ZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0 L2Rmb3IvLmdpdGlnbm9yZQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2Rmb3IvTWFr ZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9kZm9yL21lc29uLmJ1aWxkCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvZGZvci90ZXN0LmgKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmMvdGVzdC9kZm9yL3Rlc3RfYml0cGFja191MTYuYwogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyYy90ZXN0L2Rmb3IvdGVzdF91bmlxc29ydHZlY3RfdTE2LmMKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmMvdGVzdC9kZm9yL3Rlc3RfdmVjdF91MTYuYwogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyYy90ZXN0L2xpYnRhcC8uZ2l0aWdub3JlCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L3Rlc3QvbGlidGFwLy50cmF2aXMueW1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3Qv bGlidGFwL0NPUFlJTkcKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9saWJ0YXAvSU5T VEFMTAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2xpYnRhcC9NYWtlZmlsZQogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2xpYnRhcC9NYWtlZmlsZS53aW4KIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvdGVzdC9saWJ0YXAvUkVBRE1FLm1kCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjL3Rlc3QvbGlidGFwL3RhcC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3Qv bGlidGFwL3RhcC5oCgpkaWZmIC0tZ2l0IGEvR05VbWFrZWZpbGUuaW4gYi9HTlVtYWtlZmls ZS5pbgppbmRleCBjZjZlNzU5NDg2ZS4uM2Q5YTQyZDZhZDQgMTAwNjQ0Ci0tLSBhL0dOVW1h a2VmaWxlLmluCisrKyBiL0dOVW1ha2VmaWxlLmluCkBAIC02OSw2ICs2OSw3IEBAIGNoZWNr IGNoZWNrLXRlc3RzIGluc3RhbGxjaGVjayBpbnN0YWxsY2hlY2stcGFyYWxsZWwgaW5zdGFs bGNoZWNrLXRlc3RzOiBzdWJtYWtlCiAJJChNQUtFKSAtQyBzcmMvdGVzdC9yZWdyZXNzICRA CiAKICQoY2FsbCByZWN1cnNlLGNoZWNrLXdvcmxkLHNyYy90ZXN0IHNyYy9wbCBzcmMvaW50 ZXJmYWNlcyBjb250cmliIHNyYy9iaW4gc3JjL3Rvb2xzL3BnX2JzZF9pbmRlbnQsY2hlY2sp CiskKGNhbGwgcmVjdXJzZSxjaGVjay11bml0LHNyYy90ZXN0LGNoZWNrLXVuaXQpCiAkKGNh bGwgcmVjdXJzZSxjaGVja3ByZXAsICBzcmMvdGVzdCBzcmMvcGwgc3JjL2ludGVyZmFjZXMg Y29udHJpYiBzcmMvYmluKQogCiAkKGNhbGwgcmVjdXJzZSxpbnN0YWxsY2hlY2std29ybGQs c3JjL3Rlc3Qgc3JjL3BsIHNyYy9pbnRlcmZhY2VzIGNvbnRyaWIgc3JjL2JpbixpbnN0YWxs Y2hlY2spCmRpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUuZ2xvYmFsLmluIGIvc3JjL01ha2Vm aWxlLmdsb2JhbC5pbgppbmRleCBjZWYxYWQ3Zjg3ZC4uMGI2YTIyYmUxOGIgMTAwNjQ0Ci0t LSBhL3NyYy9NYWtlZmlsZS5nbG9iYWwuaW4KKysrIGIvc3JjL01ha2VmaWxlLmdsb2JhbC5p bgpAQCAtMTksNyArMTksNyBAQAogIwogIyBNZXRhIGNvbmZpZ3VyYXRpb24KIAotc3RhbmRh cmRfdGFyZ2V0cyA9IGFsbCBpbnN0YWxsIGluc3RhbGxkaXJzIHVuaW5zdGFsbCBjbGVhbiBk aXN0Y2xlYW4gY292ZXJhZ2UgY2hlY2sgY2hlY2twcmVwIGluc3RhbGxjaGVjayBpbml0LXBv IHVwZGF0ZS1wbworc3RhbmRhcmRfdGFyZ2V0cyA9IGFsbCBpbnN0YWxsIGluc3RhbGxkaXJz IHVuaW5zdGFsbCBjbGVhbiBkaXN0Y2xlYW4gY292ZXJhZ2UgY2hlY2sgY2hlY2twcmVwIGlu c3RhbGxjaGVjayBjaGVjay11bml0IGluaXQtcG8gdXBkYXRlLXBvCiAjIHRoZXNlIHRhcmdl dHMgc2hvdWxkIHJlY3Vyc2UgZXZlbiBpbnRvIHN1YmRpcmVjdG9yaWVzIG5vdCBiZWluZyBi dWlsdDoKIHN0YW5kYXJkX2Fsd2F5c190YXJnZXRzID0gY2xlYW4gZGlzdGNsZWFuCiAKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L01ha2VmaWxlIGIvc3JjL3Rlc3QvTWFrZWZpbGUKaW5kZXgg M2ViMGEwNmFiYjQuLmFiYThkYjFmNDgzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9NYWtlZmls ZQorKysgYi9zcmMvdGVzdC9NYWtlZmlsZQpAQCAtMTQsNiArMTQsNyBAQCBpbmNsdWRlICQo dG9wX2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUuZ2xvYmFsCiAKIFNVQkRJUlMgPSBcCiAJYXV0 aGVudGljYXRpb24gXAorCWRmb3IgXAogCWlzb2xhdGlvbiBcCiAJbW9kdWxlcyBcCiAJcGVy bCBcCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9kZm9yLy5naXRpZ25vcmUgYi9zcmMvdGVzdC9k Zm9yLy5naXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu LjBkNzdhNTEyMTZiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvZGZvci8uZ2l0aWdu b3JlCkBAIC0wLDAgKzEsMyBAQAordGVzdF9iaXRwYWNrX3UxNgordGVzdF91bmlxc29ydHZl Y3RfdTE2Cit0ZXN0X3ZlY3RfdTE2CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9kZm9yL01ha2Vm aWxlIGIvc3JjL3Rlc3QvZGZvci9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uNGZjOWY0YmMxYmEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVz dC9kZm9yL01ha2VmaWxlCkBAIC0wLDAgKzEsNTQgQEAKKyMtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisjIEZpbGU6IHNyYy90ZXN0L2Rmb3IvTWFrZWZpbGUKKyMtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisKK3N1YmRpciA9IHNyYy90ZXN0L2Rmb3IKK3RvcF9idWlsZGRpciA9IC4uLy4uLy4uCitk Zm9yX2RpciA6PSAkKHRvcF9idWlsZGRpcikvc3JjL2JhY2tlbmQvbGliCisKK2luY2x1ZGUg JChkZm9yX2RpcikvTWFrZWZpbGUuZGZvcgorCisjIEVuc3VyZSBkZXBlbmRlbmN5IHRyYWNr aW5nIHdvcmtzCitPQkpTICs9ICQoT0JKU19ERk9SKQorCitpbmNsdWRlICQodG9wX2J1aWxk ZGlyKS9zcmMvTWFrZWZpbGUuZ2xvYmFsCisKKyMgVGhpcyBmaXhlcyBhIHByb2JsZW0gaW4g c29tZSBDSSBqb2JzCitERVBESVIgPz0gIi5kZXBzIgorCisjIE9iamVjdCBmaWxlcyBvZiB2 ZWN0LCBiaXRwYWNrIGFuZCBkZm9yIHVzZWQgYnkgdGhlc2UgdW5pdC10ZXN0cyBhcmUgaW4g dGhlIHNhbWUKKyMgZGlyZWN0b3J5IGFzIHRoaXMgTWFrZWZpbGUuIFRlc3RzIGRvbid0IHVz ZSBvbmVzIGZyb20gc3JjL2JhY2tlbmQvbGliIGFuZCBjb21waWxlCisjIGRpZmZlcmVudCBv bmVzIGZvciB0aGVtc2VsdmVzLgorJChpbmZvIFVzZSBPQkpTX0RGT1I9JChPQkpTX0RGT1Ip IGZyb20gY3VycmVudCBkaXJlY3RvcnkgJChzdWJkaXIpLiBcCisgICAgICAgVGhleSBhcmUg YnVpbHQgb24gc291cmNlcyBmcm9tICQoZGZvcl9kaXIpKQorCiskKE9CSlNfREZPUik6ICUu bzogJChkZm9yX2RpcikvJS5jCisJQGlmIHRlc3QgISAtZCAkKERFUERJUik7IHRoZW4gbWtk aXIgLXAgJChERVBESVIpOyBmaQorCSQoQ0MpICQoQ0ZMQUdTKSAkKENQUEZMQUdTKSAtREZS T05URU5EIFwKKwkJLWMgJDwgXAorCQktTU1EIC1NUCAtTUYgJChERVBESVIpLyQobm90ZGly ICQ8Oi5jPS5QbykgXAorCQktbyAkQAorCitMSUJUQVBfT0JKUyA9ICQodG9wX2J1aWxkZGly KS9zcmMvdGVzdC9saWJ0YXAvdGFwLm8KKworVEVTVFM9IHRlc3RfdmVjdF91MTYgXAorICAg ICAgIHRlc3RfdW5pcXNvcnR2ZWN0X3UxNiBcCisgICAgICAgdGVzdF9iaXRwYWNrX3UxNgor CiskKFRFU1RTOiU9JS5vKTogQ1BQRkxBR1MgKz0gLUkkKHRvcF9idWlsZGRpcikvc3JjL3Rl c3QgLURGUk9OVEVORAorCithbGw6ICQoVEVTVFMpCisKKyQoVEVTVFMpOiAlOiAlLm8gJChM SUJUQVBfT0JKUykgJChPQkpTX0RGT1IpCisJJChDQykgJChDRkxBR1MpICQoQ1BQRkxBR1Mp ICReICQoTERGTEFHUykgJChMSUJTKSAtbyAkQCQoWCkKKworY2hlY2stdW5pdDogJChURVNU UykKKwllY2hvICIjICsrKyBVbml0IHRlc3RzIGluICQoc3ViZGlyKSArKysiICYmIFwKKwlj ZCAkKHRvcF9idWlsZGRpcikvJChzdWJkaXIpICYmIFwKKwkgICAkKFBST1ZFKSAkKFBST1ZF X0ZMQUdTKSBcCisJICAgIC12ICQoYWRkcHJlZml4IC4vLCQoaWYgJChQUk9WRV9URVNUUyks ICQoUFJPVkVfVEVTVFMpLCAkKFRFU1RTKSkpCisKK2NoZWNrOiBjaGVjay11bml0CisKK2Ns ZWFuIGRpc3RjbGVhbjoKKwlybSAtcmYgJChURVNUUykgKi5vCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9kZm9yL21lc29uLmJ1aWxkIGIvc3JjL3Rlc3QvZGZvci9tZXNvbi5idWlsZApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uY2U3NjJjNTI0MzAKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvdGVzdC9kZm9yL21lc29uLmJ1aWxkCkBAIC0wLDAgKzEsNjIg QEAKK2Rmb3JfZGlyID0gam9pbl9wYXRocyhtZXNvbi5wcm9qZWN0X3NvdXJjZV9yb290KCks ICdzcmMvYmFja2VuZC9saWInKQorCisjIE9iamVjdCBmaWxlcyBvZiB2ZWN0LCBiaXRwYWNr IGFuZCBkZm9yIHVzZWQgYnkgdGhlc2UgdW5pdC10ZXN0cyBhcmUgaW4gdGhlIHNhbWUKKyMg ZGlyZWN0b3J5IGFzIHRoaXMgbWVzb24uYnVpbGQuIFRlc3RzIGRvbid0IHVzZSBvbmVzIGZy b20gc3JjL2JhY2tlbmQvbGliIGFuZAorIyBjb21waWxlIGRpZmZlcmVudCBvbmVzIGZvciB0 aGVtc2VsdmVzLiBJbiBNZXNvbi9OaW5qYSBidWlsZCBzeXN0ZW0gd2UgdW5pdGUKKyMgdGhl bSBpbnRvIGEgc3RhdGljIGxpYnJhcnkuCisKK2Rmb3Jfc291cmNlcyA9IGZpbGVzKAorICBq b2luX3BhdGhzKGRmb3JfZGlyLCAndmVjdF91MTYuYycpLAorICBqb2luX3BhdGhzKGRmb3Jf ZGlyLCAnYml0cGFja191MTYuYycpLAorKQorCitkZm9yX3Rlc3RfbGliID0gc3RhdGljX2xp YnJhcnkoCisgICdkZm9yX3Rlc3RfbGliJywKKyAgZGZvcl9zb3VyY2VzLAorICBpbmNsdWRl X2RpcmVjdG9yaWVzOiBbCisgICAgaW5jbHVkZV9kaXJlY3RvcmllcygnLi4vLi4vLi4nKSwg IyB0b3BfYnVpbGRkaXIKKyAgICBpbmNsdWRlX2RpcmVjdG9yaWVzKCcuLi8nKSwgICAgICAj IHNyYy90ZXN0CisgICAgcG9zdGdyZXNfaW5jLCAgICAgICAgICAgICAgICAgICAgIyBzcmMv aW5jbHVkZSBoZXJlCisgIF0sCisgIGNfYXJnczogWyctREZST05URU5EJ10sCispCisKKyMg V2UgYWxzbyBidWlsZCBsaWJ0YXAgYXMgYSBzdGF0aWMgbGlicmFyeQorCitsaWJ0YXAgPSBz dGF0aWNfbGlicmFyeSgKKyAgJ3RhcCcsCisgICcuLi8uLi90ZXN0L2xpYnRhcC90YXAuYycs CisgIGluY2x1ZGVfZGlyZWN0b3JpZXM6CisgICAgaW5jbHVkZV9kaXJlY3RvcmllcygnLi4v Li4vLi4nKSwgIyB0b3BfYnVpbGRkaXIKKykKKworIyBFYWNoIHRlc3QgaXMgYW4gRUxGIGV4 ZWN1dGFibGUKKwordGVzdF9uYW1lcyA9IFsKKyAgJ3Rlc3RfdmVjdF91MTYnLAorICAndGVz dF91bmlxc29ydHZlY3RfdTE2JywKKyAgJ3Rlc3RfYml0cGFja191MTYnLAorXQorCitmb3Jl YWNoIHQgOiB0ZXN0X25hbWVzCisgIGV4ZSA9IGV4ZWN1dGFibGUoCisgICAgdCwKKyAgICB0 ICsgJy5jJywKKyAgICBsaW5rX3dpdGg6IFsKKyAgICAgIGRmb3JfdGVzdF9saWIsCisgICAg ICBsaWJ0YXAsCisgICAgICBjb21tb25fc3RhdGljLCAjIFByb3ZpZGVzIHBnX3ByaW50ZiBh bmQgb3RoZXIgY29tbW9uIHV0aWxpdGllcworICAgICAgcGdwb3J0X3N0YXRpYywgICAgIyBQ cm92aWRlcyBPUy1wb3J0YWJpbGl0eSBmdW5jdGlvbnMKKyAgICBdLAorCWRlcGVuZGVuY2ll czogW29zX2RlcHMsIGxpYmludGxdLAorICAgIGluY2x1ZGVfZGlyZWN0b3JpZXM6IFsKKyAg ICAgIGluY2x1ZGVfZGlyZWN0b3JpZXMoJy4uLy4uLy4uJyksICMgdG9wX2J1aWxkZGlyCisg ICAgICBpbmNsdWRlX2RpcmVjdG9yaWVzKCcuLi8nKSwgICAgICAjIHNyYy90ZXN0CisgICAg ICBwb3N0Z3Jlc19pbmMsICAgICAgICAgICAgICAgICAgICAjIHNyYy9pbmNsdWRlIGhlcmUK KyAgICBdLAorICAgICMgQmFja2VuZCBjb2RlIG9mdGVuIHJlcXVpcmVzIHRoZXNlIGFyZ3Vt ZW50cyB0byBpZGVudGlmeSBhcyBiYWNrZW5kCisgICAgY19hcmdzOiBbJy1ERlJPTlRFTkQn XSwKKyAgKQorCisgIHRlc3QodCwgZXhlLCBzdWl0ZTogJ2Rmb3InKQorZW5kZm9yZWFjaApk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvZGZvci90ZXN0LmggYi9zcmMvdGVzdC9kZm9yL3Rlc3Qu aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZjZjNTRhYWQ5NWYK LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9kZm9yL3Rlc3QuaApAQCAtMCwwICsxLDMx IEBACisKKy8qCisgKiB0ZXN0LmgKKyAqLworI2lmbmRlZiBfVEVTVF9IXworI2RlZmluZSBf VEVTVF9IXworCisjaW5jbHVkZSA8aW50dHlwZXMuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgor CitzdGF0aWMgaW5saW5lIHZvaWQKK3Rlc3RfcHJpbnRfdThfYXJyYXkoc2l6ZV90IGNudCwg dWludDhfdCBhcnJbXSwgY29uc3QgY2hhciAqbmFtZSkKK3sKKwlwcmludGYoIiVzKGhleCk6 IHsgIiwgbmFtZSk7CisJZm9yIChzaXplX3QgaiA9IDA7IGogPCBjbnQgLSAxOyBqKyspCisJ CXByaW50ZigiJTAyIiBQUkl4OCAiLCAiLCBhcnJbal0pOworCisJcHJpbnRmKCIlMDIiIFBS SXg4ICIgfVxuIiwgYXJyW2NudCAtIDFdKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkCit0 ZXN0X3ByaW50X3UxNl9hcnJheShzaXplX3QgY250LCB1aW50MTZfdCBhcnJbXSwgY29uc3Qg Y2hhciAqbmFtZSkKK3sKKwlwcmludGYoIiVzKGhleCk6IHsgIiwgbmFtZSk7CisJZm9yIChz aXplX3QgaiA9IDA7IGogPCBjbnQgLSAxOyBqKyspCisJCXByaW50ZigiJTA0IiBQUkl4MTYg IiwgIiwgYXJyW2pdKTsKKworCXByaW50ZigiJTA0IiBQUkl4MTYgIn1cbiIsIGFycltjbnQg LSAxXSk7Cit9CisKKyNlbmRpZiAvKiBfVEVTVF9IXyAqLwpcIE5vIG5ld2xpbmUgYXQgZW5k IG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2Rmb3IvdGVzdF9iaXRwYWNrX3UxNi5j IGIvc3JjL3Rlc3QvZGZvci90ZXN0X2JpdHBhY2tfdTE2LmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAuLmRhODRiYjJmMjJlCi0tLSAvZGV2L251bGwKKysrIGIv c3JjL3Rlc3QvZGZvci90ZXN0X2JpdHBhY2tfdTE2LmMKQEAgLTAsMCArMSwzNTcgQEAKKy8q CisgKiB0ZXN0X2JpdHBhY2suYworICovCisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1 ZGUgPHN0cmluZy5oPgorCisjaW5jbHVkZSAibGliL2JpdHBhY2tfdTE2LmgiCisjaW5jbHVk ZSAibGliL3ZlY3RfdTE2LmgiCisjaW5jbHVkZSAibGlidGFwL3RhcC5oIgorCitpbnQKK21h aW4odm9pZCkKK3sKKwlwbGFuKDE5NSk7CisJcHJpbnRmKCI9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09XG4iKTsKKwlwcmludGYoIlRlc3QgTUFTSyBBTkQgV0lE VEggQ0FMQ1VMQVRJT05cbiIpOworCXsKKwkJY21wX29rKDEsICI9PSIsICh1aW50MTZfdCl3 aWR0aF91MTZfZnJvbV92YWwoMHgwMCksCisJCQkgICAiV2lkdGggb2YgMDAgaXMgZXF1YWwg dG8gMSBiaXQuIik7CisJCWNtcF9vaygyLCAiPT0iLCAodWludDE2X3Qpd2lkdGhfdTE2X2Zy b21fdmFsKDB4MDIpLAorCQkJICAgIldpZHRoIG9mIDAyIGlzIGVxdWFsIHRvIDIgYml0cy4i KTsKKwkJY21wX29rKDIsICI9PSIsICh1aW50MTZfdCl3aWR0aF91MTZfZnJvbV92YWwoMHgw MiksCisJCQkgICAiV2lkdGggb2YgMDIgaXMgZXF1YWwgdG8gMiBiaXRzLiIpOworCQljbXBf b2soMiwgIj09IiwgKHVpbnQxNl90KXdpZHRoX3UxNl9mcm9tX3ZhbCgweDAzKSwKKwkJCSAg ICJXaWR0aCBvZiAwMyBpcyBlcXVhbCB0byAyIGJpdHMuIik7CisJCWNtcF9vaygzLCAiPT0i LCAodWludDE2X3Qpd2lkdGhfdTE2X2Zyb21fdmFsKDB4MDQpLAorCQkJICAgIldpZHRoIG9m IDA0IGlzIGVxdWFsIHRvIDMgYml0cy4iKTsKKwkJY21wX29rKDMsICI9PSIsICh1aW50MTZf dCl3aWR0aF91MTZfZnJvbV92YWwoMHgwNSksCisJCQkgICAiV2lkdGggb2YgMDUgaXMgZXF1 YWwgdG8gMyBiaXRzLiIpOworCQljbXBfb2soNCwgIj09IiwgKHVpbnQxNl90KXdpZHRoX3Ux Nl9mcm9tX3ZhbCgweDA4KSwKKwkJCSAgICJXaWR0aCBvZiAwOCBpcyBlcXVhbCB0byA0IGJp dHMuIik7CisJCWNtcF9vayg0LCAiPT0iLCAodWludDE2X3Qpd2lkdGhfdTE2X2Zyb21fdmFs KDB4MEEpLAorCQkJICAgIldpZHRoIG9mIDEwIGlzIGVxdWFsIHRvIDQgYml0cy4iKTsKKwkJ Y21wX29rKDQsICI9PSIsICh1aW50MTZfdCl3aWR0aF91MTZfZnJvbV92YWwoMHgwRiksCisJ CQkgICAiV2lkdGggb2YgMTUgaXMgZXF1YWwgdG8gNCBiaXRzLiIpOworCQljbXBfb2soNSwg Ij09IiwgKHVpbnQxNl90KXdpZHRoX3UxNl9mcm9tX3ZhbCgweDEwKSwKKwkJCSAgICJXaWR0 aCBvZiAxNiBpcyBlcXVhbCB0byA1IGJpdHMuIik7CisJCWNtcF9vayg1LCAiPT0iLCAodWlu dDE2X3Qpd2lkdGhfdTE2X2Zyb21fdmFsKDB4MUYpLAorCQkJICAgIldpZHRoIG9mIDMxIGlz IGVxdWFsIHRvIDUgYml0cy4iKTsKKwkJY21wX29rKDYsICI9PSIsICh1aW50MTZfdCl3aWR0 aF91MTZfZnJvbV92YWwoMHgyMCksCisJCQkgICAiV2lkdGggb2YgMzIgaXMgZXF1YWwgdG8g NiBiaXRzLiIpOworCQljbXBfb2soNywgIj09IiwgKHVpbnQxNl90KXdpZHRoX3UxNl9mcm9t X3ZhbCgweDQwKSwKKwkJCSAgICJXaWR0aCBvZiA2NCBpcyBlcXVhbCB0byA3IGJpdHMuIik7 CisJCWNtcF9vayg4LCAiPT0iLCAodWludDE2X3Qpd2lkdGhfdTE2X2Zyb21fdmFsKDB4ODAp LAorCQkJICAgIldpZHRoIG9mIDEyOCBpcyBlcXVhbCB0byA4IGJpdHMuIik7CisJCWNtcF9v aygxMywgIj09IiwgKHVpbnQxNl90KXdpZHRoX3UxNl9mcm9tX3ZhbCgweDEwMDApLAorCQkJ ICAgIldpZHRoIG9mIDB4MDEwMDAgaXMgZXF1YWwgdG8gMTMgYml0cy4iKTsKKwkJY21wX29r KDE2LCAiPT0iLCAodWludDE2X3Qpd2lkdGhfdTE2X2Zyb21fdmFsKDB4OEFCQyksCisJCQkg ICAiV2lkdGggb2YgMHgwOEFCQyBpcyBlcXVhbCB0byAxNSBiaXRzLiIpOworCisJCWNtcF9v aygweDEsICI9PSIsICh1aW50MTZfdCl3aWR0aF91MTZfdG9fbWFzaygxKSwKKwkJCSAgICJN YXNrIGZyb20gd2lkdGggMSBpcyAwMDAwMDAwMShiaW4pLiIpOworCQljbXBfb2soMHgzLCAi PT0iLCAodWludDE2X3Qpd2lkdGhfdTE2X3RvX21hc2soMiksCisJCQkgICAiTWFzayBmcm9t IHdpZHRoIDIgaXMgMDAwMDAwMTEoYmluKS4iKTsKKwkJY21wX29rKDB4NywgIj09IiwgKHVp bnQxNl90KXdpZHRoX3UxNl90b19tYXNrKDMpLAorCQkJICAgIk1hc2sgZnJvbSB3aWR0aCAz IGlzIDAwMDAwMTExKGJpbikuIik7CisJCWNtcF9vaygweDNGRiwgIj09IiwgKHVpbnQxNl90 KXdpZHRoX3UxNl90b19tYXNrKDEwKSwKKwkJCSAgICJNYXNrIGZyb20gd2lkdGggMTAgaXMg MHgzRkYoYmluKS4iKTsKKwkJY21wX29rKDB4N0ZGRiwgIj09IiwgKHVpbnQxNl90KXdpZHRo X3UxNl90b19tYXNrKDE1KSwKKwkJCSAgICJNYXNrIGZyb20gd2lkdGggMTUgaXMgMHg3RkZG KGJpbikuIik7CisJCWNtcF9vaygweEZGRkYsICI9PSIsICh1aW50MTZfdCl3aWR0aF91MTZf dG9fbWFzaygxNiksCisJCQkgICAiTWFzayBmcm9tIHdpZHRoIDE2IGlzIDB4RkZGRihiaW4p LiIpOworCX0KKwlwcmludGYoIlRlc3QgTUFTSyBBTkQgV0lEVEggQ0FMQ1VMQVRJT04gUEFT U0VEXG4iKTsKKwlwcmludGYoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT1cblxuIik7CisKKwlwcmludGYoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT1cbiIpOworCXByaW50ZigiVGVzdCBCSVRQQUNLIFBBQ0tJTkdcbiIpOwor CXsKKyNkZWZpbmUgU0laRU9GUEFDSyA2MFUKKwkJdWludDhfdCBwYWNrW1NJWkVPRlBBQ0td OworCQlzaXplX3QgY2FyZXQgPSAwOworCQltZW1zZXQocGFjaywgMCwgU0laRU9GUEFDSyk7 CisJCS8qCisJCSAqIFNpbmNlIHdlIGltcGxlbWVudGVkIHRoZSBudWxpZnlpbmcgb2YgYml0 cyBhY2NvcmRpbmcgdG8gYSBtYXNrIChzZWUKKwkJICogdGhlIGJpdHBhY2sgZnVuY3Rpb24p LCB3ZSBjYW4gdXNlIGV2ZW4gYSBwYWNrIG5vdCBwcmVwYXJlZCBpbiBhZHZhbmNlCisJCSAq IGFuZCBjb21wcmlzaW5nIGdhcmJhZ2UuIEJ1dCB3ZSB3YW50IHRvIGNoZWNrIHZhbHVlIG9m IGVhY2ggYnl0ZSBvZgorCQkgKiB0aGUgcGFjayBpbiB0aGlzIHRlc3QgYW5kIHdlIHNpbXBs aWZ5IHRoaXMgdGFzayBieSB1c2luZyBhIHplcm9lZAorCQkgKiBwYWNrLgorCQkgKi8KKwor CQlmb3IgKGludCBqID0gMDsgaiA8IDg7IGorKykgeworCQkJY2FyZXQgPSBiaXRwYWNrX3Ux Nl9wYWNrKHBhY2ssIGNhcmV0LCAxLCAxKTsKKwkJCWNhcmV0ID0gYml0cGFja191MTZfcGFj ayhwYWNrLCBjYXJldCwgMCwgMSk7CisJCX0KKwkJY21wX29rKDE2LCAiPT0iLCBjYXJldCwg IkNhcmV0ID0gMTYuIik7CisJCWNtcF9vaygweDU1LCAiPT0iLCBwYWNrWzBdLCAiU2F2ZWQg Yml0LWJ5LWJpdDogZmlyc3QgYnl0ZSBpcyAweDU1LiIpOworCQljbXBfb2soMHg1NSwgIj09 IiwgcGFja1sxXSwgIlNhdmVkIGJpdC1ieS1iaXQ6IHNlY29uZCBieXRlIGlzIDB4NTUuIik7 CisKKwkJZm9yIChpbnQgaiA9IDA7IGogPCA4OyBqKyspIHsKKwkJCWNhcmV0ID0gYml0cGFj a191MTZfcGFjayhwYWNrLCBjYXJldCwgMHgwMiAvKiAxMChiaW4pICovLCAyKTsKKwkJfQor CisJCWNtcF9vaygzMiwgIj09IiwgY2FyZXQsICJDYXJldCA9IDMyLiIpOworCQljbXBfb2so MHhBQSwgIj09IiwgcGFja1syXSwKKwkJCSAgICJTYXZlZCB3aXRoIHR3by1iaXQgd2lkdGg6 IGZpcnN0IGJ5dGUgaXMgMHhBQS4iKTsKKwkJY21wX29rKDB4QUEsICI9PSIsIHBhY2tbM10s CisJCQkgICAiU2F2ZWQgd2l0aCB0d28tYml0IHdpZHRoOiBzZWNvbmQgYnl0ZSBpcyAweEFB LiIpOworCisJCWZvciAoaW50IGogPSAwOyBqIDwgODsgaisrKSB7CisJCQljYXJldCA9IGJp dHBhY2tfdTE2X3BhY2socGFjaywgY2FyZXQsIDB4MDUgLyogMTAxKGJpbikgKi8sIDMpOwor CQkJY2FyZXQgPSBiaXRwYWNrX3UxNl9wYWNrKHBhY2ssIGNhcmV0LCAweDAyIC8qIDAxMChi aW4pICovLCAzKTsKKwkJfQorCisJCWNtcF9vayg4MCwgIj09IiwgY2FyZXQsICJDYXJldCA9 IDgwLiIpOworCQljbXBfb2soMHg1NSwgIj09IiwgcGFja1s0XSwKKwkJCSAgICJTYXZlZCB3 aXRoIHRocmVlLWJpdCB3aWR0aDogZmlyc3QgYnl0ZSBpcyAweDU1LiIpOworCQljbXBfb2so MHg1NSwgIj09IiwgcGFja1s1XSwKKwkJCSAgICJTYXZlZCB3aXRoIHRocmVlLWJpdCB3aWR0 aDogc2Vjb25kIGJ5dGUgaXMgMHg1NS4iKTsKKwkJY21wX29rKDB4NTUsICI9PSIsIHBhY2tb Nl0sCisJCQkgICAiU2F2ZWQgd2l0aCB0aHJlZS1iaXQgd2lkdGg6IHNlY29uZCBieXRlIGlz IDB4NTUuIik7CisJCWNtcF9vaygweDU1LCAiPT0iLCBwYWNrWzddLAorCQkJICAgIlNhdmVk IHdpdGggdGhyZWUtYml0IHdpZHRoOiBmaXJzdCBieXRlIGlzIDB4NTUuIik7CisJCWNtcF9v aygweDU1LCAiPT0iLCBwYWNrWzhdLAorCQkJICAgIlNhdmVkIHdpdGggdGhyZWUtYml0IHdp ZHRoOiBzZWNvbmQgYnl0ZSBpcyAweDU1LiIpOworCQljbXBfb2soMHg1NSwgIj09IiwgcGFj a1s5XSwKKwkJCSAgICJTYXZlZCB3aXRoIHRocmVlLWJpdCB3aWR0aDogc2Vjb25kIGJ5dGUg aXMgMHg1NS4iKTsKKworCQljYXJldCA9IGJpdHBhY2tfdTE2X3BhY2socGFjaywgY2FyZXQs IDB4MEIsIDQpOworCQljYXJldCA9IGJpdHBhY2tfdTE2X3BhY2socGFjaywgY2FyZXQsIDB4 MEMsIDQpOworCQljYXJldCA9IGJpdHBhY2tfdTE2X3BhY2socGFjaywgY2FyZXQsIDB4MEQs IDQpOworCQljYXJldCA9IGJpdHBhY2tfdTE2X3BhY2socGFjaywgY2FyZXQsIDB4MEUsIDQp OworCisJCWNtcF9vayg5NiwgIj09IiwgY2FyZXQsICJDYXJldCA9IDk2LiIpOworCQljbXBf b2soMHhDQiwgIj09IiwgcGFja1sxMF0sCisJCQkgICAiU2F2ZWQgd2l0aCBmb3VyLWJpdCB3 aWR0aDogZmlyc3QgYnl0ZSBpcyAweENCLiIpOworCQljbXBfb2soMHhFRCwgIj09IiwgcGFj a1sxMV0sCisJCQkgICAiU2F2ZWQgd2l0aCBmb3VyLWJpdCB3aWR0aDogc2Vjb25kIGJ5dGUg aXMgMHhFRC4iKTsKKworCQlmb3IgKGludCBqID0gMDsgaiA8IDg7IGorKykgeworCQkJY2Fy ZXQgPSBiaXRwYWNrX3UxNl9wYWNrKHBhY2ssIGNhcmV0LCAweDA3IC8qIDAwMTExYiAqLywg NSk7CisJCX0KKworCQljbXBfb2soMTM2LCAiPT0iLCBjYXJldCwgIkNhcmV0ID0gMTM2LiIp OworCQljbXBfb2soMHhFNywgIj09IiwgcGFja1sxMl0sCisJCQkgICAiU2F2ZWQgd2l0aCBm aXZlLWJpdCB3aWR0aDogZmlyc3QgYnl0ZSBpcyAweEU3LiIpOworCQljbXBfb2soMHg5Qywg Ij09IiwgcGFja1sxM10sCisJCQkgICAiU2F2ZWQgd2l0aCBmaXZlLWJpdCB3aWR0aDogc2Vj b25kIGJ5dGUgaXMgMHg5Qy4iKTsKKwkJY21wX29rKDB4NzMsICI9PSIsIHBhY2tbMTRdLAor CQkJICAgIlNhdmVkIHdpdGggZml2ZS1iaXQgd2lkdGg6IHRoaXJkIGJ5dGUgaXMgMHg3My4i KTsKKwkJY21wX29rKDB4Q0UsICI9PSIsIHBhY2tbMTVdLAorCQkJICAgIlNhdmVkIHdpdGgg Zml2ZS1iaXQgd2lkdGg6IGZvdXJ0aCBieXRlIGlzIDB4Q0UuIik7CisJCWNtcF9vaygweDM5 LCAiPT0iLCBwYWNrWzE2XSwKKwkJCSAgICJTYXZlZCB3aXRoIGZpdmUtYml0IHdpZHRoOiBm aWZ0aCBieXRlIGlzIDB4MzkuIik7CisKKwkJZm9yIChpbnQgaiA9IDA7IGogPCA0OyBqKysp CisJCQljYXJldCA9IGJpdHBhY2tfdTE2X3BhY2socGFjaywgY2FyZXQsIDB4MDcgLyogMDAw MTExYiAqLywgNik7CisKKwkJY21wX29rKDE2MCwgIj09IiwgY2FyZXQsICJDYXJldCA9IDE2 MC4iKTsKKwkJY21wX29rKDB4QzcsICI9PSIsIHBhY2tbMTddLAorCQkJICAgIlNhdmVkIHdp dGggc2l4LWJpdCB3aWR0aDogZmlyc3QgYnl0ZSBpcyAweEM3LiIpOworCQljbXBfb2soMHg3 MSwgIj09IiwgcGFja1sxOF0sCisJCQkgICAiU2F2ZWQgd2l0aCBzaXgtYml0IHdpZHRoOiBz ZWNvbmQgYnl0ZSBpcyAweDcxLiIpOworCQljbXBfb2soMHgxQywgIj09IiwgcGFja1sxOV0s CisJCQkgICAiU2F2ZWQgd2l0aCBzaXgtYml0IHdpZHRoOiB0aGlyZCBieXRlIGlzIDB4MUMu Iik7CisKKwkJZm9yIChpbnQgaiA9IDA7IGogPCA4OyBqKyspCisJCQljYXJldCA9IGJpdHBh Y2tfdTE2X3BhY2socGFjaywgY2FyZXQsIDB4NTcgLyogMTAxMDExMWIgKi8sIDcpOworCisJ CWNtcF9vaygyMTYsICI9PSIsIGNhcmV0LCAiQ2FyZXQgPSAyMTYuIik7CisJCWNtcF9vaygw eEQ3LCAiPT0iLCBwYWNrWzIwXSwKKwkJCSAgICJTYXZlZCB3aXRoIHNldmVuLWJpdCB3aWR0 aDogYnl0ZTEgaXMgMHhENy4iKTsKKwkJY21wX29rKDB4RUIsICI9PSIsIHBhY2tbMjFdLAor CQkJICAgIlNhdmVkIHdpdGggc2V2ZW4tYml0IHdpZHRoOiBieXRlMiBpcyAweEVCLiIpOwor CQljbXBfb2soMHhGNSwgIj09IiwgcGFja1syMl0sCisJCQkgICAiU2F2ZWQgd2l0aCBzZXZl bi1iaXQgd2lkdGg6IGJ5dGUzIGlzIDB4RjUuIik7CisJCWNtcF9vaygweDdBLCAiPT0iLCBw YWNrWzIzXSwKKwkJCSAgICJTYXZlZCB3aXRoIHNldmVuLWJpdCB3aWR0aDogYnl0ZTQgaXMg MHg3QS4iKTsKKwkJY21wX29rKDB4QkQsICI9PSIsIHBhY2tbMjRdLAorCQkJICAgIlNhdmVk IHdpdGggc2V2ZW4tYml0IHdpZHRoOiBieXRlNSBpcyAweEJELiIpOworCQljbXBfb2soMHg1 RSwgIj09IiwgcGFja1syNV0sCisJCQkgICAiU2F2ZWQgd2l0aCBzZXZlbi1iaXQgd2lkdGg6 IGJ5dGU2IGlzIDB4NUUuIik7CisJCWNtcF9vaygweEFGLCAiPT0iLCBwYWNrWzI2XSwKKwkJ CSAgICJTYXZlZCB3aXRoIHNldmVuLWJpdCB3aWR0aDogYnl0ZTcgaXMgMHhBRi4iKTsKKwor CQljYXJldCA9IGJpdHBhY2tfdTE2X3BhY2socGFjaywgY2FyZXQsIDB4QkEsIDgpOworCQlj YXJldCA9IGJpdHBhY2tfdTE2X3BhY2socGFjaywgY2FyZXQsIDB4REMsIDgpOworCQljYXJl dCA9IGJpdHBhY2tfdTE2X3BhY2socGFjaywgY2FyZXQsIDB4RkUsIDgpOworCisJCWNtcF9v aygyNDAsICI9PSIsIGNhcmV0LCAiQ2FyZXQgPSAyNDAuIik7CisJCWNtcF9vaygweEJBLCAi PT0iLCBwYWNrWzI3XSwKKwkJCSAgICJTYXZlZCB3aXRoIGVpZ2h0LWJpdCB3aWR0aDogYnl0 ZTEgaXMgMHhCQS4iKTsKKwkJY21wX29rKDB4REMsICI9PSIsIHBhY2tbMjhdLAorCQkJICAg IlNhdmVkIHdpdGggZWlnaHQtYml0IHdpZHRoOiBieXRlMiBpcyAweERDLiIpOworCQljbXBf b2soMHhGRSwgIj09IiwgcGFja1syOV0sCisJCQkgICAiU2F2ZWQgd2l0aCBlaWdodC1iaXQg d2lkdGg6IGJ5dGUzIGlzIDB4RkUuIik7CisKKwkJY2FyZXQgPSBiaXRwYWNrX3UxNl9wYWNr KAorCQkJcGFjaywgY2FyZXQsIDB4MDAsCisJCQk0KTsgLyogbW92ZSB0byA0IGJpdCBmb3Ig ZnVuIGFuZCBhZ2FpbiBjb250aW51ZSB3aXRoIDgtYml0IHdpZHRoICovCisJCWNhcmV0ID0g Yml0cGFja191MTZfcGFjayhwYWNrLCBjYXJldCwgMHgzMiwgOCk7CisJCWNhcmV0ID0gYml0 cGFja191MTZfcGFjayhwYWNrLCBjYXJldCwgMHg1NCwgOCk7CisJCWNhcmV0ID0gYml0cGFj a191MTZfcGFjayhwYWNrLCBjYXJldCwgMHg3NiwgOCk7CisJCWNhcmV0ID0gYml0cGFja191 MTZfcGFjayhwYWNrLCBjYXJldCwgMHg5OCwgOCk7CisKKwkJY21wX29rKDI3NiwgIj09Iiwg Y2FyZXQsICJDYXJldCA9IDI3Ni4iKTsKKwkJY21wX29rKDB4MjAsICI9PSIsIHBhY2tbMzBd LAorCQkJICAgIlNhdmVkIHdpdGggZWlnaHQtYml0IHdpZHRoIGJ1dCBzaGlmdGVkIGJ5IDQ6 IGlzIDB4MjAuIik7CisJCWNtcF9vaygweDQzLCAiPT0iLCBwYWNrWzMxXSwKKwkJCSAgICJT YXZlZCB3aXRoIGVpZ2h0LWJpdCB3aWR0aCBidXQgc2hpZnRlZCBieSA0OiBpcyAweDQzLiIp OworCQljbXBfb2soMHg2NSwgIj09IiwgcGFja1szMl0sCisJCQkgICAiU2F2ZWQgd2l0aCBl aWdodC1iaXQgd2lkdGggYnV0IHNoaWZ0ZWQgYnkgNDogaXMgMHg2NS4iKTsKKwkJY21wX29r KDB4ODcsICI9PSIsIHBhY2tbMzNdLAorCQkJICAgIlNhdmVkIHdpdGggZWlnaHQtYml0IHdp ZHRoIGJ1dCBzaGlmdGVkIGJ5IDQ6IGlzIDB4ODcuIik7CisJCWNtcF9vaygweDA5LCAiPT0i LCBwYWNrWzM0XSwKKwkJCSAgICJTYXZlZCB3aXRoIGVpZ2h0LWJpdCB3aWR0aCBidXQgc2hp ZnRlZCBieSA0OiBpcyAweDA5LiIpOworCisJCWNhcmV0ID0gYml0cGFja191MTZfcGFjaygK KwkJCXBhY2ssIGNhcmV0LCAweDAwLAorCQkJNCk7IC8qIG1vdmUgdG8gNCBiaXQgZm9yIGZ1 biBhbmQgYWdhaW4gY29udGludWUgd2l0aCA4LWJpdCB3aWR0aCAqLworCQljbXBfb2soMjgw LCAiPT0iLCBjYXJldCwgIkNhcmV0ID0gMjgwLiIpOworCQljbXBfb2soMHgwOSwgIj09Iiwg cGFja1szNF0sCisJCQkgICAiQWRkZWQgcGFkZGluZyAweDAsIHdpZHRoPTQuIEJ5dGUgaW4g cGFjayBpcyBzdGlsbCAweDA5LiIpOworCisJCWZvciAoaW50IGogPSAwOyBqIDwgMzsgaisr KQorCQkJY2FyZXQgPSBiaXRwYWNrX3UxNl9wYWNrKHBhY2ssIGNhcmV0LCAweDE2NzEgLyog MTAxMTAwMTExMDAwMWIgKi8sCisJCQkJCQkJCQkgMTMpOworCisJCWNtcF9vaygzMTksICI9 PSIsIGNhcmV0LCAiQ2FyZXQgPSAzMTkuIik7CisJCWNtcF9vaygweDcxLCAiPT0iLCBwYWNr WzM1XSwgIlNhdmVkIHdpdGggdGhpcnRlZW4tYml0IHdpZHRoOiBpcyAweDcxLiIpOworCQlj bXBfb2soMHgzNiwgIj09IiwgcGFja1szNl0sICJTYXZlZCB3aXRoIHRoaXJ0ZWVuLWJpdCB3 aWR0aDogaXMgMHgzNi4iKTsKKwkJY21wX29rKDB4Q0UsICI9PSIsIHBhY2tbMzddLCAiU2F2 ZWQgd2l0aCB0aGlydGVlbi1iaXQgd2lkdGg6IGlzIDB4Q0UuIik7CisJCWNtcF9vaygweEM2 LCAiPT0iLCBwYWNrWzM4XSwgIlNhdmVkIHdpdGggdGhpcnRlZW4tYml0IHdpZHRoOiBpcyAw eEM2LiIpOworCQljbXBfb2soMHg1OSwgIj09IiwgcGFja1szOV0sICJTYXZlZCB3aXRoIHRo aXJ0ZWVuLWJpdCB3aWR0aDogaXMgMHg1OS4iKTsKKworCQljYXJldCA9IGJpdHBhY2tfdTE2 X3BhY2socGFjaywgY2FyZXQsIDB4MSAvKiBQQURESU5HICovLCAxKTsKKwkJY21wX29rKDMy MCwgIj09IiwgY2FyZXQsICJDYXJldCA9IDMyMC4iKTsKKwkJY21wX29rKDB4RDksICI9PSIs IHBhY2tbMzldLAorCQkJICAgIkFmdGVyIHBhZGRpbmcgd2l0aCAweDAxLCB3PTE6IDB4NTkg LT4gMHhEOS4iKTsKKworCQlmb3IgKGludCBqID0gMDsgaiA8IDU7IGorKykKKwkJCWNhcmV0 ID0gYml0cGFja191MTZfcGFjayhwYWNrLCBjYXJldCwgMHhDREVGLCAxNik7CisKKwkJY21w X29rKDQwMCwgIj09IiwgY2FyZXQsICJDYXJldCA9IDQwMC4iKTsKKwkJZm9yIChpbnQgaSA9 IDQwOyBpIDwgNTA7KSB7CisJCQljbXBfb2soMHhFRiwgIj09IiwgcGFja1tpKytdLCAiUGFj a2VkIHdpdGggd2lkdGg9MTYuIDB4RUYuIik7CisJCQljbXBfb2soMHhDRCwgIj09IiwgcGFj a1tpKytdLCAiUGFja2VkIHdpdGggd2lkdGg9MTYuIDB4Qy4iKTsKKwkJfQorCisJCWNhcmV0 ID0gYml0cGFja191MTZfcGFjayhwYWNrLCBjYXJldCwKKwkJCQkJCQkJIDB4MCAvKiBQQURE SU5HIGluIG9yZGVyIHRvIHNoaWZ0IGJ5IDEgYml0Ki8sCisJCQkJCQkJCSAxKTsKKwkJY21w X29rKDQwMSwgIj09IiwgY2FyZXQsICJDYXJldCA9IDQwMS4iKTsKKworCQlmb3IgKGludCBq ID0gMDsgaiA8IDM7IGorKykKKwkJCWNhcmV0ID0gYml0cGFja191MTZfcGFjayhwYWNrLCBj YXJldCwgMHg1NTU1LCAxNik7CisKKwkJY21wX29rKDQ0OSwgIj09IiwgY2FyZXQsICJDYXJl dCA9IDQwMS4iKTsKKwkJZm9yIChpbnQgaSA9IDUwOyBpIDwgNTY7KQorCQkJY21wX29rKDB4 QUEsICI9PSIsIHBhY2tbaSsrXSwKKwkJCQkgICAiMTYtYml0IHZhbHVlIHNhdmVkIHdpdGgg c2hpZnQgYnkgMSBiaXQgMHg1NS0+MHhBQS4iKTsKKworCQljbXBfb2soMHgwLCAiPT0iLCBw YWNrWzU2XSwgIjEgaGlnaGVyIGJpdCBpcyBhbG9uZSAuIik7CisKKwkJcHJpbnRmKCJUZXN0 IEJJVFBBQ0sgUEFDS0lORyBQQVNTRURcbiIpOworCQlwcmludGYoIj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuIik7CisKKwkJcHJpbnRmKCI9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iKTsKKwkJcHJpbnRmKCJUZXN0 IEJJVFBBQ0sgVU5QQUNLSU5HXG4iKTsKKworCQljYXJldCA9IDA7CisKKwkJZm9yIChpbnQg aiA9IDA7IGogPCA4OyBqKyspIHsKKwkJCWNtcF9vaygweDAxLCAiPT0iLCBiaXRwYWNrX3Ux Nl91bnBhY2socGFjaywgJmNhcmV0LCAxKSk7CisJCQljbXBfb2soMHgwMCwgIj09IiwgYml0 cGFja191MTZfdW5wYWNrKHBhY2ssICZjYXJldCwgMSkpOworCQl9CisJCWNtcF9vayhjYXJl dCwgIj09IiwgMTYpOworCisJCWZvciAoaW50IGogPSAwOyBqIDwgODsgaisrKQorCQkJY21w X29rKDB4MDIsICI9PSIsIGJpdHBhY2tfdTE2X3VucGFjayhwYWNrLCAmY2FyZXQsIDIpKTsK KworCQljbXBfb2soMzIsICI9PSIsIGNhcmV0LCAiQ2FyZXQgPSAzMi4iKTsKKworCQlmb3Ig KGludCBqID0gMDsgaiA8IDg7IGorKykgeworCQkJY21wX29rKDB4MDUsICI9PSIsIGJpdHBh Y2tfdTE2X3VucGFjayhwYWNrLCAmY2FyZXQsIDMpKTsKKwkJCWNtcF9vaygweDAyLCAiPT0i LCBiaXRwYWNrX3UxNl91bnBhY2socGFjaywgJmNhcmV0LCAzKSk7CisJCX0KKwkJY21wX29r KDgwLCAiPT0iLCBjYXJldCwgIkNhcmV0ID0gODAuIik7CisKKwkJY21wX29rKDB4MEIsICI9 PSIsIGJpdHBhY2tfdTE2X3VucGFjayhwYWNrLCAmY2FyZXQsIDQpKTsKKwkJY21wX29rKDB4 MEMsICI9PSIsIGJpdHBhY2tfdTE2X3VucGFjayhwYWNrLCAmY2FyZXQsIDQpKTsKKwkJY21w X29rKDB4MEQsICI9PSIsIGJpdHBhY2tfdTE2X3VucGFjayhwYWNrLCAmY2FyZXQsIDQpKTsK KwkJY21wX29rKDB4MEUsICI9PSIsIGJpdHBhY2tfdTE2X3VucGFjayhwYWNrLCAmY2FyZXQs IDQpKTsKKworCQljbXBfb2soOTYsICI9PSIsIGNhcmV0LCAiQ2FyZXQgPSA5Ni4iKTsKKwor CQlmb3IgKGludCBqID0gMDsgaiA8IDg7IGorKykKKwkJCWNtcF9vaygweDA3LCAiPT0iLCBi aXRwYWNrX3UxNl91bnBhY2socGFjaywgJmNhcmV0LCA1KSwKKwkJCQkgICAid2lkdGg9NSwg dmFsPTAwMTExYiIpOworCisJCWNtcF9vaygxMzYsICI9PSIsIGNhcmV0LCAiQ2FyZXQgPSAx MzYuIik7CisKKwkJZm9yIChpbnQgaiA9IDA7IGogPCA0OyBqKyspCisJCQljbXBfb2soMHgw NywgIj09IiwgYml0cGFja191MTZfdW5wYWNrKHBhY2ssICZjYXJldCwgNiksCisJCQkJICAg IndpZHRoPTYsIHZhbD0wMDAxMTFiIik7CisKKwkJY21wX29rKDE2MCwgIj09IiwgY2FyZXQs ICJDYXJldCA9IDE2MC4iKTsKKworCQlmb3IgKGludCBqID0gMDsgaiA8IDg7IGorKykKKwkJ CWNtcF9vaygweDU3LCAiPT0iLCBiaXRwYWNrX3UxNl91bnBhY2socGFjaywgJmNhcmV0LCA3 KSwKKwkJCQkgICAid2lkdGg9NywgdmFsPTEwMTAxMTFiICgweDU3KSIpOworCisJCWNtcF9v aygyMTYsICI9PSIsIGNhcmV0LCAiQ2FyZXQgPSAyMTYuIik7CisKKwkJY21wX29rKDB4QkEs ICI9PSIsIGJpdHBhY2tfdTE2X3VucGFjayhwYWNrLCAmY2FyZXQsIDgpLAorCQkJICAgIndp ZHRoPTgsIHZhbD0weEJBIik7CisJCWNtcF9vaygweERDLCAiPT0iLCBiaXRwYWNrX3UxNl91 bnBhY2socGFjaywgJmNhcmV0LCA4KSwKKwkJCSAgICJ3aWR0aD04LCB2YWw9MHhEQyIpOwor CQljbXBfb2soMHhGRSwgIj09IiwgYml0cGFja191MTZfdW5wYWNrKHBhY2ssICZjYXJldCwg OCksCisJCQkgICAid2lkdGg9OCwgdmFsPTB4RkUiKTsKKworCQljbXBfb2soMjQwLCAiPT0i LCBjYXJldCwgIkNhcmV0ID0gMjQwLiIpOworCisJCWNtcF9vaygweDAsICI9PSIsIGJpdHBh Y2tfdTE2X3VucGFjayhwYWNrLCAmY2FyZXQsIDQpLAorCQkJICAgIndpZHRoPTQsIHZhbD0w eDAsIGZvciBmdW4iKTsKKworCQljbXBfb2soMHgzMiwgIj09IiwgYml0cGFja191MTZfdW5w YWNrKHBhY2ssICZjYXJldCwgOCksCisJCQkgICAid2lkdGg9OCwgdmFsPTB4MzIiKTsKKwkJ Y21wX29rKDB4NTQsICI9PSIsIGJpdHBhY2tfdTE2X3VucGFjayhwYWNrLCAmY2FyZXQsIDgp LAorCQkJICAgIndpZHRoPTgsIHZhbD0weDU0Iik7CisJCWNtcF9vaygweDc2LCAiPT0iLCBi aXRwYWNrX3UxNl91bnBhY2socGFjaywgJmNhcmV0LCA4KSwKKwkJCSAgICJ3aWR0aD04LCB2 YWw9MHg3NiIpOworCQljbXBfb2soMHg5OCwgIj09IiwgYml0cGFja191MTZfdW5wYWNrKHBh Y2ssICZjYXJldCwgOCksCisJCQkgICAid2lkdGg9OCwgdmFsPTB4OTgiKTsKKworCQljbXBf b2soMHgwLCAiPT0iLCBiaXRwYWNrX3UxNl91bnBhY2socGFjaywgJmNhcmV0LCA0KSwKKwkJ CSAgICJ3aWR0aD00LCB2YWw9MHgwLCBmb3IgZnVuIHBhZGRpbmcgYWdhaW4iKTsKKworCQlm b3IgKGludCBqID0gMDsgaiA8IDM7IGorKykKKwkJCWNtcF9vaygweDE2NzEsICI9PSIsIGJp dHBhY2tfdTE2X3VucGFjayhwYWNrLCAmY2FyZXQsIDEzKSwKKwkJCQkgICAid2lkdGg9MTMs IHZhbD0weDE2NzEgKDEwMTEwMDExMTAwMDFiKSIpOworCisJCWNtcF9vaygzMTksICI9PSIs IGNhcmV0LCAiQ2FyZXQgPSAzMTkuIik7CisKKwkJY21wX29rKDB4MSwgIj09IiwgYml0cGFj a191MTZfdW5wYWNrKHBhY2ssICZjYXJldCwgMSksCisJCQkgICAid2lkdGg9MSwgdmFsPTB4 MSIpOworCQljbXBfb2soMzIwLCAiPT0iLCBjYXJldCwgIkNhcmV0ID0gMzIwLiIpOworCisJ CWZvciAoaW50IGogPSAwOyBqIDwgNTsgaisrKQorCQkJY21wX29rKDB4Q0RFRiwgIj09Iiwg Yml0cGFja191MTZfdW5wYWNrKHBhY2ssICZjYXJldCwgMTYpLAorCQkJCSAgICIxOC1iaXQg dmFsdWUgYWxsaWduZWQgd2l0aCBieXRlcyBpbiBwYWNrLiIpOworCisJCWNtcF9vayg0MDAs ICI9PSIsIGNhcmV0LCAiQ2FyZXQgPSA0MDAuIik7CisJCWNtcF9vaygweDAsICI9PSIsIGJp dHBhY2tfdTE2X3VucGFjayhwYWNrLCAmY2FyZXQsIDEpLAorCQkJICAgIjEtYml0IHdpZHRo IHZhbHVlIChwYWRkaW5nIGZvciBzaGlmdCkuIik7CisJCWNtcF9vayg0MDEsICI9PSIsIGNh cmV0LCAiQ2FyZXQgPSA0MDEuIik7CisKKwkJZm9yIChpbnQgaiA9IDA7IGogPCAzOyBqKysp CisJCQljbXBfb2soMHg1NTU1LCAiPT0iLCBiaXRwYWNrX3UxNl91bnBhY2socGFjaywgJmNh cmV0LCAxNiksCisJCQkJICAgIjE2LWJpdCB3aWR0aCB2YWx1ZSBzaGlmdGVkIGJ5IDEgYml0 LiIpOworCisJCWNtcF9vayg0NDksICI9PSIsIGNhcmV0LCAiQ2FyZXQgPSA0NDkuIik7CisJ fQorCisJZG9uZV90ZXN0aW5nKCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9kZm9yL3Rl c3RfdW5pcXNvcnR2ZWN0X3UxNi5jIGIvc3JjL3Rlc3QvZGZvci90ZXN0X3VuaXFzb3J0dmVj dF91MTYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNGRkY2U4 YjBiM2QKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9kZm9yL3Rlc3RfdW5pcXNvcnR2 ZWN0X3UxNi5jCkBAIC0wLDAgKzEsMjYzIEBACisvKgorICogdGVzdF91bmlxc29ydHZlY3Qu YworICovCisKKyNpbmNsdWRlICJsaWIvdmVjdF91MTYuaCIKKyNpbmNsdWRlICJsaWJ0YXAv dGFwLmgiCisKK2ludCB0ZXN0X3VzdihzaXplX3Qgc3JjX2NudCwgdWludDE2X3QgKnNyY19p biwgc2l6ZV90IGV4cGVjdGVkX2NudCwKKwkJCSB1aW50MTZfdCAqZXhwZWN0ZWRfaW4pOwor CitpbnQKK3Rlc3RfdXN2KHNpemVfdCBzcmNfY250LCB1aW50MTZfdCAqc3JjX2luLCBzaXpl X3QgZXhwZWN0ZWRfY250LAorCQkgdWludDE2X3QgKmV4cGVjdGVkX2luKQoreworCWludCBy ZXN1bHQgPSAtMTsKKwl2ZWN0X3UxNl90IHNyYzsKKwl2ZWN0X3UxNl90IGV4cGVjdGVkOwor CXVuaXFzb3J0dmVjdF91MTZfdCB4OworCisJdmVjdF91MTZfaW5pdCgmc3JjLCBzcmNfY250 LCBOVUxMKTsKKwl2ZWN0X3UxNl9maWxsKCZzcmMsIHNyY19jbnQsIHNyY19pbik7CisKKwl2 ZWN0X3UxNl9pbml0KCZleHBlY3RlZCwgMCwgTlVMTCk7CisJdmVjdF91MTZfZmlsbCgmZXhw ZWN0ZWQsIGV4cGVjdGVkX2NudCwgZXhwZWN0ZWRfaW4pOworCisJdmVjdF91MTZfaW5pdCgm eCwgMCwgTlVMTCk7CisKKwlmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNyY19jbnQ7IGkrKykK KwkJdXN2X3UxNl9pbnNlcnQoJngsIHNyYy5tW2ldKTsKKworCXJlc3VsdCA9IHZlY3RfdTE2 X2NvbXBhcmUoJngsICZleHBlY3RlZCk7CisKKwl2ZWN0X3UxNl9jbGVhcigmeCk7CisJdmVj dF91MTZfY2xlYXIoJmV4cGVjdGVkKTsKKwl2ZWN0X3UxNl9jbGVhcigmc3JjKTsKKwlyZXR1 cm4gcmVzdWx0OworfQorCitpbnQKK21haW4odm9pZCkKK3sKKwlwbGFuKDU2KTsKKworCXBy aW50ZigiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIik7CisJ cHJpbnRmKCJUZXN0IENSRUFURSBBTkQgREVTVFJPWSBTT1JURUQgVU5JUVVFIFZFQ1RPUiAo RU1QVFkpXG4iKTsKKwl7CisJCXVuaXFzb3J0dmVjdF91MTZfdCB1c3Y7CisJCXNpemVfdCBj YXBhY2l0eSA9IDEwOworCQl2ZWN0X3UxNl9pbml0KCZ1c3YsIGNhcGFjaXR5LCBOVUxMKTsK KwkJY21wX29rKHVzdi5jYXAsICI9PSIsIGNhcGFjaXR5LAorCQkJICAgIlZlY3RvcnMgY2Fw YWNpdHkgaXMgZXF1YWwgdG8gcmVxdWVzdGVkIG9uZSIpOworCQljbXBfb2sodXN2LmNudCwg Ij09IiwgMCwgIk5vIG1lbWJlcnMgaW4gdmVjdG9yIik7CisJCW9rKHVzdi5tICE9IE5VTEws ICJBcnJheSBmb3IgbWVtYmVycyBpcyByZXNlcnZlZCIpOworCisJCXZlY3RfdTE2X2NsZWFy KCZ1c3YpOworCX0KKwlwcmludGYoIlRlc3QgQ1JFQVRFIEFORCBERVNUUk9ZIFNPUlRFRCBV TklRVUUgVkVDVE9SIChFTVBUWSkgUEFTU0VEXG4iKTsKKwlwcmludGYoIj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuIik7CisKKwlwcmludGYoIj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIpOworCXByaW50ZigiVGVz dCBTRUFSQ0ggSU4gVU5JUVVFIFNPUlQgVkVDVFxuIik7CisJeworCQl1bmlxc29ydHZlY3Rf dTE2X3QgdXN2OworCQl1c3Zfc3JjaF9yZXNfdCBzcmNoOworCQl1aW50MTZfdCBpbnB1dFs0 XSA9IHsgNSwgMTAsIDIwLCAzMCB9OworCisJCXZlY3RfdTE2X2luaXQoJnVzdiwgMCwgTlVM TCk7CisKKwkJZm9yIChzaXplX3QgaSA9IDA7IGkgPCA0OyBpKyspCisJCQl1c3ZfdTE2X2lu c2VydCgmdXN2LCBpbnB1dFtpXSk7CisKKwkJc3JjaCA9IHVzdl91MTZfc2VhcmNoKCZ1c3Ys IDApOworCQljbXBfb2soc3JjaC5zdCwgIj09IiwgVVNWX1NSQ0hfTk9UX0ZPVU5EX1NNQUxM RVNULAorCQkJICAgIk5vdCBmb3VuZCwgc21hbGxlc3QiKTsKKwkJY21wX29rKHNyY2gucG9z LCAiPT0iLCAwLCAiUG9zID0wIik7CisKKwkJc3JjaCA9IHVzdl91MTZfc2VhcmNoKCZ1c3Ys IDEpOworCQljbXBfb2soc3JjaC5zdCwgIj09IiwgVVNWX1NSQ0hfTk9UX0ZPVU5EX1NNQUxM RVNULAorCQkJICAgIk5vdCBmb3VuZCwgc21hbGxlc3QiKTsKKwkJY21wX29rKHNyY2gucG9z LCAiPT0iLCAwLCAiUG9zID0wIik7CisKKwkJc3JjaCA9IHVzdl91MTZfc2VhcmNoKCZ1c3Ys IDUpOworCQljbXBfb2soc3JjaC5zdCwgIj09IiwgVVNWX1NSQ0hfRk9VTkQsICJGb3VuZCIp OworCQljbXBfb2soc3JjaC5wb3MsICI9PSIsIDAsICJQb3MgPTAiKTsKKworCQlzcmNoID0g dXN2X3UxNl9zZWFyY2goJnVzdiwgNik7CisJCWNtcF9vayhzcmNoLnN0LCAiPT0iLCBVU1Zf U1JDSF9OT1RfRk9VTkQsICJOb3QgZm91bmQiKTsKKwkJY21wX29rKHNyY2gucG9zLCAiPT0i LCAxLCAiUG9zID0xIik7CisKKwkJc3JjaCA9IHVzdl91MTZfc2VhcmNoKCZ1c3YsIDEwKTsK KwkJY21wX29rKHNyY2guc3QsICI9PSIsIFVTVl9TUkNIX0ZPVU5ELCAiRm91bmQiKTsKKwkJ Y21wX29rKHNyY2gucG9zLCAiPT0iLCAxLCAiUG9zID0xIik7CisKKwkJc3JjaCA9IHVzdl91 MTZfc2VhcmNoKCZ1c3YsIDE1KTsKKwkJY21wX29rKHNyY2guc3QsICI9PSIsIFVTVl9TUkNI X05PVF9GT1VORCwgIk5vdCBmb3VuZCIpOworCQljbXBfb2soc3JjaC5wb3MsICI9PSIsIDIs ICJQb3MgPTIiKTsKKworCQlzcmNoID0gdXN2X3UxNl9zZWFyY2goJnVzdiwgMjApOworCQlj bXBfb2soc3JjaC5zdCwgIj09IiwgVVNWX1NSQ0hfRk9VTkQsICJGb3VuZCIpOworCQljbXBf b2soc3JjaC5wb3MsICI9PSIsIDIsICJQb3MgPTIiKTsKKworCQlzcmNoID0gdXN2X3UxNl9z ZWFyY2goJnVzdiwgMjUpOworCQljbXBfb2soc3JjaC5zdCwgIj09IiwgVVNWX1NSQ0hfTk9U X0ZPVU5ELCAiTm90IGZvdW5kIik7CisJCWNtcF9vayhzcmNoLnBvcywgIj09IiwgMywgIlBv cyA9MyIpOworCisJCXNyY2ggPSB1c3ZfdTE2X3NlYXJjaCgmdXN2LCAzMCk7CisJCWNtcF9v ayhzcmNoLnN0LCAiPT0iLCBVU1ZfU1JDSF9GT1VORCwgIkZvdW5kIik7CisJCWNtcF9vayhz cmNoLnBvcywgIj09IiwgMywgIlBvcyA9MiIpOworCisJCXNyY2ggPSB1c3ZfdTE2X3NlYXJj aCgmdXN2LCA0NSk7CisJCWNtcF9vayhzcmNoLnN0LCAiPT0iLCBVU1ZfU1JDSF9OT1RfRk9V TkRfTEFSR0VTVCwgIk5vdCBmb3VuZCwgbGFyZ2VzdCIpOworCQljbXBfb2soc3JjaC5wb3Ms ICI9PSIsIDMsICJQb3MgPTMiKTsKKworCQl2ZWN0X3UxNl9jbGVhcigmdXN2KTsKKwl9CisJ eworCQl1bmlxc29ydHZlY3RfdTE2X3QgdXN2OworCQl1c3Zfc3JjaF9yZXNfdCBzcmNoOwor CQl1aW50MTZfdCBpbnB1dFszXSA9IHsgNSwgMTAsIDIwIH07CisJCXVpbnQxNl90IGJ1Zlsz XTsgLyogb3ZlcmluZHVsZ2UgaW4gdGVzdGluZyB0aGUgb3V0ZXIgbWVtb3J5IHZlY3RvciAq LworCisJCXZlY3RfdTE2X2luaXQoJnVzdiwgMywgYnVmKTsKKworCQlmb3IgKHNpemVfdCBp ID0gMDsgaSA8IDM7IGkrKykKKwkJCXVzdl91MTZfaW5zZXJ0KCZ1c3YsIGlucHV0W2ldKTsK KworCQlzcmNoID0gdXN2X3UxNl9zZWFyY2goJnVzdiwgMCk7CisJCWNtcF9vayhzcmNoLnN0 LCAiPT0iLCBVU1ZfU1JDSF9OT1RfRk9VTkRfU01BTExFU1QsCisJCQkgICAiTm90IGZvdW5k LCBzbWFsbGVzdCIpOworCQljbXBfb2soc3JjaC5wb3MsICI9PSIsIDAsICJQb3MgPTAiKTsK KworCQlzcmNoID0gdXN2X3UxNl9zZWFyY2goJnVzdiwgNSk7CisJCWNtcF9vayhzcmNoLnN0 LCAiPT0iLCBVU1ZfU1JDSF9GT1VORCwgIkZvdW5kIik7CisJCWNtcF9vayhzcmNoLnBvcywg Ij09IiwgMCwgIlBvcyA9MCIpOworCisJCXNyY2ggPSB1c3ZfdTE2X3NlYXJjaCgmdXN2LCA2 KTsKKwkJY21wX29rKHNyY2guc3QsICI9PSIsIFVTVl9TUkNIX05PVF9GT1VORCwgIk5vdCBm b3VuZCIpOworCQljbXBfb2soc3JjaC5wb3MsICI9PSIsIDEsICJQb3MgPTEiKTsKKworCQlz cmNoID0gdXN2X3UxNl9zZWFyY2goJnVzdiwgMTApOworCQljbXBfb2soc3JjaC5zdCwgIj09 IiwgVVNWX1NSQ0hfRk9VTkQsICJGb3VuZCIpOworCQljbXBfb2soc3JjaC5wb3MsICI9PSIs IDEsICJQb3MgPTEiKTsKKworCQlzcmNoID0gdXN2X3UxNl9zZWFyY2goJnVzdiwgMTUpOwor CQljbXBfb2soc3JjaC5zdCwgIj09IiwgVVNWX1NSQ0hfTk9UX0ZPVU5ELCAiTm90IGZvdW5k Iik7CisJCWNtcF9vayhzcmNoLnBvcywgIj09IiwgMiwgIlBvcyA9MiIpOworCisJCS8qCisJ CSAqIFdoZW4gc2NvcGVzIGwgYW5kIGcgYXJlIG5laWdoYm91cnMgKGctbD0xKSBidXQKKwkJ ICogdmFsPT1tW2ddIGluc3RlYWQgb2YgdmFsPT1tW2xdLgorCQkgKi8KKwkJc3JjaCA9IHVz dl91MTZfc2VhcmNoKCZ1c3YsIDIwKTsKKwkJY21wX29rKHNyY2guc3QsICI9PSIsIFVTVl9T UkNIX0ZPVU5ELCAiRm91bmQiKTsKKwkJY21wX29rKHNyY2gucG9zLCAiPT0iLCAyLCAiUG9z ID0yIik7CisKKwkJc3JjaCA9IHVzdl91MTZfc2VhcmNoKCZ1c3YsIDIxKTsKKwkJY21wX29r KHNyY2guc3QsICI9PSIsIFVTVl9TUkNIX05PVF9GT1VORF9MQVJHRVNULCAiTm90IGZvdW5k LCBsYXJnZXN0Iik7CisJCWNtcF9vayhzcmNoLnBvcywgIj09IiwgMiwgIlBvcyA9MiIpOwor CisJCXZlY3RfdTE2X2NsZWFyKCZ1c3YpOworCX0KKwl7IC8qIHNpbmdsZSBtZW1iZXIqLwor CisJCXVuaXFzb3J0dmVjdF91MTZfdCB1c3Y7CisJCXVzdl9zcmNoX3Jlc190IHNyY2g7CisK KwkJdmVjdF91MTZfaW5pdCgmdXN2LCAzLCBOVUxMKTsKKworCQl1c3ZfdTE2X2luc2VydCgm dXN2LCA1KTsgLyogVGhlIG9ubHkgaXRlbSBpbiBsaXN0IGlzIDUgKi8KKworCQlzcmNoID0g dXN2X3UxNl9zZWFyY2goJnVzdiwgMCk7CisJCWNtcF9vayhzcmNoLnN0LCAiPT0iLCBVU1Zf U1JDSF9OT1RfRk9VTkRfU01BTExFU1QsCisJCQkgICAiTm90IGZvdW5kLCBzbWFsbGVzdCIp OworCQljbXBfb2soc3JjaC5wb3MsICI9PSIsIDAsICJQb3MgPTAiKTsKKworCQlzcmNoID0g dXN2X3UxNl9zZWFyY2goJnVzdiwgNSk7CisJCWNtcF9vayhzcmNoLnN0LCAiPT0iLCBVU1Zf U1JDSF9GT1VORCwgIkZvdW5kIik7CisJCWNtcF9vayhzcmNoLnBvcywgIj09IiwgMCwgIlBv cyA9MCIpOworCisJCXNyY2ggPSB1c3ZfdTE2X3NlYXJjaCgmdXN2LCA2KTsKKwkJY21wX29r KHNyY2guc3QsICI9PSIsIFVTVl9TUkNIX05PVF9GT1VORF9MQVJHRVNULCAiTm90IGZvdW5k LCBsYXJnZXN0Iik7CisJCWNtcF9vayhzcmNoLnBvcywgIj09IiwgMCwgIlBvcyA9MiIpOwor CisJCXZlY3RfdTE2X2NsZWFyKCZ1c3YpOworCX0KKwl7IC8qIGVtcHR5IHZlY3RvciovCisK KwkJdW5pcXNvcnR2ZWN0X3UxNl90IHVzdjsKKwkJdXN2X3NyY2hfcmVzX3Qgc3JjaDsKKwor CQl2ZWN0X3UxNl9pbml0KCZ1c3YsIDEsIE5VTEwpOworCisJCXNyY2ggPSB1c3ZfdTE2X3Nl YXJjaCgmdXN2LCAwKTsKKwkJY21wX29rKHNyY2guc3QsICI9PSIsIFVTVl9TUkNIX0VNUFRZ LCAiVmVjdG9yIGlzIGVtcHR5LiIpOworCQljbXBfb2soc3JjaC5wb3MsICI9PSIsIDAsICJQ b3MgPTAiKTsKKworCQlzcmNoID0gdXN2X3UxNl9zZWFyY2goJnVzdiwgNCk7CisJCWNtcF9v ayhzcmNoLnN0LCAiPT0iLCBVU1ZfU1JDSF9FTVBUWSwgIlZlY3RvciBpcyBlbXB0eS4iKTsK KwkJY21wX29rKHNyY2gucG9zLCAiPT0iLCAwLCAiUG9zID0wIik7CisKKwkJc3JjaCA9IHVz dl91MTZfc2VhcmNoKCZ1c3YsIDUpOworCQljbXBfb2soc3JjaC5zdCwgIj09IiwgVVNWX1NS Q0hfRU1QVFksICJWZWN0b3IgaXMgZW1wdHkuIik7CisJCWNtcF9vayhzcmNoLnBvcywgIj09 IiwgMCwgIlBvcyA9MCIpOworCisJCXNyY2ggPSB1c3ZfdTE2X3NlYXJjaCgmdXN2LCA2KTsK KwkJY21wX29rKHNyY2guc3QsICI9PSIsIFVTVl9TUkNIX0VNUFRZLCAiVmVjdG9yIGlzIGVt cHR5LiIpOworCQljbXBfb2soc3JjaC5wb3MsICI9PSIsIDAsICJQb3MgPTAiKTsKKworCQl2 ZWN0X3UxNl9jbGVhcigmdXN2KTsKKwl9CisJcHJpbnRmKCJUZXN0IFNFQVJDSCBJTiBVTklR VUUgU09SVCBWRUNUIFBBU1NFRC5cbiIpOworCXByaW50ZigiPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PVxuXG4iKTsKKworCXByaW50ZigiPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIik7CisJcHJpbnRmKCJUZXN0IEVSUk9S IE9OIE5PIFZFQ1RPUiBGT1IgU0VBUkNISU5HXG4iKTsKKwl7CisJCXVzdl9zcmNoX3Jlc190 IHNyY2g7CisJCXNyY2ggPSB1c3ZfdTE2X3NlYXJjaChOVUxMLCAwKTsKKwkJY21wX29rKHNy Y2guc3QsICI9PSIsIFVTVl9TUkNIX0VSUk9SLAorCQkJICAgIkVycm9yOiBubyB2ZWN0b3Ig KGVtcHR5IHBvaW50ZXIgb24gdmVjdHJvcikuIik7CisJfQorCXsKKwkJdW5pcXNvcnR2ZWN0 X3UxNl90IHVzdjsKKwkJdXN2X3NyY2hfcmVzX3Qgc3JjaDsKKwkJdmVjdF91MTZfaW5pdCgm dXN2LCAwLCBOVUxMKTsKKworCQlzcmNoID0gdXN2X3UxNl9zZWFyY2goJnVzdiwgMCk7CisJ CWNtcF9vayhzcmNoLnN0LCAiPT0iLCBVU1ZfU1JDSF9FTVBUWSwKKwkJCSAgICJTZWFyY2gg aW4gZW1wdHkgdmVjdG9yIGlzIG5vdCBhbiBlcnJvci4iKTsKKworCQl2ZWN0X3UxNl9jbGVh cigmdXN2KTsKKwl9CisJcHJpbnRmKCJUZXN0IEVSUk9SIE9OIE5PIFZFQ1RPUiBGT1IgU0VB UkNISU5HIFBBU1NFRFxuIik7CisJcHJpbnRmKCI9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09XG5cbiIpOworCisJcHJpbnRmKCI9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09XG4iKTsKKwlwcmludGYoIlRlc3QgQ1JFQVRFRCBWRUNU T1JTIEFSRSBTT1JURUQgQU5EIFVOSVFVRVxuIik7CisJeworCQljbXBfb2soCisJCQkwLCAi PT0iLAorCQkJdGVzdF91c3YoMTAsICh1aW50MTZfdFtdKSB7IDAsIDEsIDIsIDMsIDQsIDUs IDYsIDcsIDgsIDkgfSwgLy8gc3JjCisJCQkJCSAxMCwKKwkJCQkJICh1aW50MTZfdFtdKSB7 IDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDkgfSksIC8vIGV4cGVjdGVkCisJCQkiVW5p cXVlIHNvcnRlZCB2ZWN0b3IgcmVtYWlucyB0aGUgc2FtZS4iKTsKKworCQljbXBfb2soMCwg Ij09IiwKKwkJCSAgIHRlc3RfdXN2KDEwLAorCQkJCQkJKHVpbnQxNl90W10pIHsgMCwgMSwg MiwgMywgNCwgNSwgMywgNywgNSwgOSB9LCAvLyBzcmMKKwkJCQkJCTgsICh1aW50MTZfdFtd KSB7IDAsIDEsIDIsIDMsIDQsIDUsIDcsIDkgfSksIC8vIGV4cGVjdGVkCisJCQkgICAiRHVw bGljYXRlcyBhcmUgcmVtb3ZlZC4iKTsKKworCQljbXBfb2soCisJCQkwLCAiPT0iLAorCQkJ dGVzdF91c3YoMTAsICh1aW50MTZfdFtdKSB7IDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEs IDAgfSwgLy8gc3JjCisJCQkJCSAxMCwKKwkJCQkJICh1aW50MTZfdFtdKSB7IDAsIDEsIDIs IDMsIDQsIDUsIDYsIDcsIDgsIDkgfSksIC8vIGV4cGVjdGVkCisJCQkiVW5zb3J0ZWQgYmVj YW1lIHNvcnRlZC4iKTsKKwl9CisJcHJpbnRmKCJUZXN0IENSRUFURUQgVkVDVE9SUyBBUkUg U09SVEVEIEFORCBVTklRVUUgUEFTU0VEXG4iKTsKKwlwcmludGYoIj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuIik7CisKKwlkb25lX3Rlc3RpbmcoKTsK K30KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2Rmb3IvdGVzdF92ZWN0X3UxNi5jIGIvc3JjL3Rl c3QvZGZvci90ZXN0X3ZlY3RfdTE2LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLjAwZWZlN2RjY2JlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvZGZv ci90ZXN0X3ZlY3RfdTE2LmMKQEAgLTAsMCArMSwxNjggQEAKKy8qCisgKiB0ZXN0X3ZlY3Rf dTE2LmMKKyAqLworCisjaW5jbHVkZSAibGlidGFwL3RhcC5oIgorI2luY2x1ZGUgImxpYi92 ZWN0X3UxNi5oIgorCitpbnQKK21haW4odm9pZCkKK3sKKwlwbGFuKDM1KTsKKworCXByaW50 ZigiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIik7CisJcHJp bnRmKCJUZXN0IElOSVQgQU5EIENMRUFSIFZFQ1RPUlxuIik7CisJeworCQl2ZWN0X3UxNl90 IHY7CisJCXNpemVfdCBjYXBhY2l0eSA9IDEwOworCQljbXBfb2soMCwgIj09IiwgdmVjdF91 MTZfaW5pdCgmdiwgY2FwYWNpdHksIE5VTEwpLAorCQkJICAgIlJlc3VsdCBvZiB2ZWN0X2lu aXQgaXMgMCIpOworCisJCWNtcF9vayh2LmNhcCwgIj09IiwgY2FwYWNpdHksCisJCQkgICAi VmVjdG9ycyBjYXBhY2l0eSBpcyBlcXVhbCB0byByZXF1ZXN0ZWQgb25lIik7CisJCWNtcF9v ayh2LmNudCwgIj09IiwgMCwgIk5vIG1lbWJlcnMgaW4gdmVjdG9yIik7CisJCW9rKHYubSAh PSBOVUxMLCAiQXJyYXkgZm9yIG1lbWJlcnMgaXMgcmVzZXJ2ZWQiKTsKKwkJY21wX29rKHYu bWVtX2lzX291dGVyLCAiPT0iLCBmYWxzZSwgIlZlY3RvciBkb2VzIG5vdCB1c2Ugb3V0ZXIg bWVtb3J5Iik7CisKKwkJdmVjdF91MTZfY2xlYXIoJnYpOworCisJCWNtcF9vayh2LmNhcCwg Ij09IiwgMCwgIlZlY3RvcnMgY2FwYWNpdHkgaXMgMCBhZnRlciBjbGVhbnVwIik7CisJCWNt cF9vayh2LmNudCwgIj09IiwgMCwgIk5vIG1lbWJlcnMgaW4gdmVjdG9yIGFmdGVyIGNsZWFu dXAiKTsKKwkJb2sodi5tID09IE5VTEwsICJBcnJheSBmb3IgbWVtYmVycyBpcyBhYnNlbnQi KTsKKwkJY21wX29rKHYubWVtX2lzX291dGVyLCAiPT0iLCBmYWxzZSwgIlZlY3RvciBkb2Vz IG5vdCB1c2Ugb3V0ZXIgbWVtb3J5Iik7CisJfQorCXByaW50ZigiVGVzdCBJTklUIEFORCBD TEVBUiBWRUNUT1IgUEFTU0VEXG4iKTsKKwlwcmludGYoIj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT1cblxuIik7CisKKwlwcmludGYoIj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIpOworCXByaW50ZigiVGVzdCBJTklUIEFO RCBGSUxMIFZFQ1RPUlxuIik7CisJeworCQl2ZWN0X3UxNl90IHY7CisJCXNpemVfdCBjYXBh Y2l0eSA9IDEwOworCQljb25zdCB1aW50MTZfdCB2YWxzW10gPSB7IDAsIDEsIDIsIDMsIDQs IDUsIDYsIDcsIDgsIDkgfTsKKworCQljbXBfb2soMCwgIj09IiwgdmVjdF91MTZfaW5pdCgm diwgY2FwYWNpdHksIE5VTEwpLAorCQkJICAgIlJlc3VsdCBvZiB2ZWN0X2luaXQgaXMgMCIp OworCQljbXBfb2soMCwgIj09IiwgdmVjdF91MTZfZmlsbCgmdiwgY2FwYWNpdHksIHZhbHMp LAorCQkJICAgIlJlc3VsdCBvZiB2ZWN0X2ZpbGwgaXMgMCIpOworCisJCWNtcF9vayh2LmNh cCwgIj09IiwgY2FwYWNpdHksCisJCQkgICAiVmVjdG9ycyBjYXBhY2l0eSBpcyBlcXVhbCB0 byByZXF1ZXN0ZWQgb25lIik7CisJCW9rKHYubSAhPSBOVUxMLCAiQXJyYXkgZm9yIG1lbWJl cnMgaXMgcmVzZXJ2ZWQiKTsKKwkJY21wX29rKHYuY250LCAiPT0iLCBjYXBhY2l0eSwgIk1l bWJlcnMgYXJlIGluIHZlY3Rvci4iKTsKKwkJeworCQkJaW50IGVxdWFsID0gMDsKKwkJCWZv ciAoc2l6ZV90IGkgPSAwOyBpIDwgY2FwYWNpdHk7IGkrKykgeworCQkJCWlmICh2Lm1baV0g PT0gaSkKKwkJCQkJZXF1YWwgPSBlcXVhbCArIDE7CisJCQkJZWxzZQorCQkJCQlicmVhazsK KwkJCX0KKwkJCWNtcF9vayhlcXVhbCwgIj09IiwgMTAsICJNZW1iZXJzIGFyZSBjb3JyZWN0 Iik7CisJCX0KKwkJdmVjdF91MTZfY2xlYXIoJnYpOworCX0KKwlwcmludGYoIlRlc3QgSU5J VCBBTkQgRklMTCBWRUNUT1IgUEFTU0VEXG4iKTsKKwlwcmludGYoIj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuIik7CisKKwlwcmludGYoIj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIpOworCXByaW50ZigiVGVzdCBJ TklUIEFORCBGSUxMIFZFQ1RPUiB3aXRoIHplcm8gY2FwY2FpdHlcbiIpOworCXsKKwkJdmVj dF91MTZfdCB2OworCQlzaXplX3QgY2FwYWNpdHkgPSAwOworCisJCWNtcF9vaygwLCAiPT0i LCB2ZWN0X3UxNl9pbml0KCZ2LCBjYXBhY2l0eSwgTlVMTCksCisJCQkgICAiUmVzdWx0IG9m IHZlY3RfaW5pdCBpcyAwIik7CisJCWNtcF9vaygwLCAiPT0iLCB2ZWN0X3UxNl9maWxsKCZ2 LCBjYXBhY2l0eSwgTlVMTCksCisJCQkgICAiUmVzdWx0IG9mIHZlY3RfZmlsbCBpcyAwIik7 CisKKwkJY21wX29rKHYuY2FwLCAiPT0iLCAwLCAiVmVjdG9yJ3MgY2FwYWNpdHkgaXMgemVy byIpOworCQlvayh2Lm0gPT0gTlVMTCwKKwkJICAgIlBvaW50ZXIgdG8gbWVtYmVycyBpcyBO VUxMIChhcnJheSBmb3IgbWVtYmVycyBpcyBub3QgcmVzZXJ2ZWQpIik7CisJCW9rKHYuY250 ID09IDAsICJDb3VudGVyIG9mIG1lbWJlcnMgaXMgemVyby4iKTsKKwkJdmVjdF91MTZfY2xl YXIoJnYpOworCX0KKwl7CisJCXZlY3RfdTE2X3QgdjsKKwkJc2l6ZV90IGNhcGFjaXR5ID0g MTA7CisJCWNvbnN0IHVpbnQxNl90IHZhbHNbXSA9IHsgMCwgMSwgMiwgMywgNCwgNSwgNiwg NywgOCwgOSB9OworCisJCWNtcF9vaygwLCAiPT0iLCB2ZWN0X3UxNl9pbml0KCZ2LCAwLCBO VUxMKSwgIlJlc3VsdCBvZiB2ZWN0X2luaXQgaXMgMCIpOworCQljbXBfb2soMCwgIj09Iiwg dmVjdF91MTZfZmlsbCgmdiwgY2FwYWNpdHksIHZhbHMpLAorCQkJICAgIlJlc3VsdCBvZiB2 ZWN0X2ZpbGwgaXMgMCIpOworCisJCWNtcF9vayh2LmNhcCwgIj09IiwgY2FwYWNpdHksCisJ CQkgICAiVmVjdG9yJ3MgY2FwYWNpdHkgaXMgbm90IHplcm8gYWZ0ZXIgZmlsbGluZyIpOwor CQlvayh2Lm0gIT0gTlVMTCwKKwkJICAgIlBvaW50ZXIgdG8gbWVtYmVycyBpcyBub3QgTlVM TCBmYXRlciBmaWxsaW5nIChhcnJheSBmb3IgbWVtYmVycyBoYXMgYmVlbiByZXNlcnZlZCki KTsKKwkJb2sodi5jbnQgPT0gY2FwYWNpdHksICJDb3VudGVyIG9mIG1lbWJlcnMgaXMgbm90 IHplcm8gYWZ0ZXIgZmlsbGluZy4iKTsKKwkJdmVjdF91MTZfY2xlYXIoJnYpOworCX0KKwlw cmludGYoIlRlc3QgSU5JVCBBTkQgRklMTCBWRUNUT1Igd2l0aCB6ZXJvIGNhcGNhaXR5IGlz IGZpbmlzaGVkXG4iKTsKKwlwcmludGYoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT1cblxuIik7CisKKwlwcmludGYoIj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT1cbiIpOworCXByaW50ZigiVGVzdCBDT01QQVJFIFZFQ1RPUlNc biIpOworCXsKKwkJdmVjdF91MTZfdCBhLCBiLCBjLCBkOworCisJCXVpbnQxNl90IGF2YWxz W10gPSB7IDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDkgfTsKKwkJdWludDE2X3QgYnZh bHNbXSA9IHsgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSB9OworCQl1aW50MTZfdCBj dmFsc1tdID0geyAxLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5IH07CisJCXVpbnQxNl90 IGR2YWxzW10gPSB7IDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDggfTsKKworCQl2ZWN0X3Ux Nl9pbml0KCZhLCAwLCBOVUxMKTsKKwkJdmVjdF91MTZfaW5pdCgmYiwgMCwgTlVMTCk7CisJ CXZlY3RfdTE2X2luaXQoJmMsIDAsIE5VTEwpOworCQl2ZWN0X3UxNl9pbml0KCZkLCAwLCBO VUxMKTsKKworCQl2ZWN0X3UxNl9maWxsKCZhLCAxMCwgYXZhbHMpOworCQl2ZWN0X3UxNl9m aWxsKCZiLCAxMCwgYnZhbHMpOworCQl2ZWN0X3UxNl9maWxsKCZjLCAxMCwgY3ZhbHMpOwor CQl2ZWN0X3UxNl9maWxsKCZkLCA5LCBkdmFscyk7CisKKwkJY21wX29rKDAsICI9PSIsIHZl Y3RfdTE2X2NvbXBhcmUoJmEsICZiKSwgIlZlY3RvcnMgYXJlIGVxdWFsIik7CisJCWNtcF9v aygtMSwgIj09IiwgdmVjdF91MTZfY29tcGFyZSgmYSwgJmMpLAorCQkJICAgIlZlY3RvcnMg YXJlIG5vdCBlcXVhbCBiZWNhdXNlIG9mIHZhbHVlIG9mIG1lbWJlcnMiKTsKKwkJY21wX29r KC0xLCAiPT0iLCB2ZWN0X3UxNl9jb21wYXJlKCZhLCAmZCksCisJCQkgICAiVmVjdG9ycyBh cmUgbm90IGVxdWFsIGJlY2F1c2Ugb2YgbnVtYmVyIG9mIG1lbWJlcnMiKTsKKwl9CisJcHJp bnRmKCJUZXN0IENPTVBBUkUgVkVDVE9SUyBpcyBmaW5pc2hlZC4gXG4iKTsKKwlwcmludGYo Ij09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuIik7CisKKwlw cmludGYoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIpOwor CXByaW50ZigiVGVzdCBWRUNUT1IgV0lUSCBPVVRFUiBNRU1PUllcbiIpOworCXsKKyNkZWZp bmUgVkVDVF9DQVAgMTAwCisJCXZlY3RfdTE2X3QgdmVjdDsKKwkJdWludDE2X3QgYnVmW1ZF Q1RfQ0FQXTsgLyogdWludDE2X3QgaXMgdGhlIGl0ZW0ncyB0eXBlICovCisJCXZlY3RfdTE2 X2luaXQoJnZlY3QsIFZFQ1RfQ0FQLCBidWYpOworCQljbXBfb2soCisJCQl2ZWN0LmNhcCwg Ij09IiwgVkVDVF9DQVAsCisJCQkiSW5pdGlhbGlzYXRpb24gb2YgdmVjdG9yIGhhdmluZyBl eHRlcm5hbCBtZW1vcnkgcmVzdWx0ZWQgaW4gcHJvcGVyIGNhcGFjaXR5LiIpOworCQljbXBf b2soCisJCQl2ZWN0LmNudCwgIj09IiwgMCwKKwkJCSJJbml0aWFsaXNhdGlvbiBvZiB2ZWN0 b3IgaGF2aW5nIGV4dGVybmFsIG1lbW9yeSByZXN1bHRlZCBpbiBwcm9wZXIgbnVtYmVyIG9m IGl0ZW1zLiIpOworCQlvaygoKHZvaWQgKil2ZWN0Lm0gPT0gKHZvaWQgKilidWYpLAorCQkg ICAiSW5pdGlhbGlzYXRpb24gb2YgdmVjdG9yIGhhdmluZyBleHRlcm5hbCBtZW1vcnkgc2V0 IGJ1ZiB0byB2ZWN0LT5tLiIpOworCQlvayh2ZWN0Lm1lbV9pc19vdXRlciwKKwkJICAgIklu aXRpYWxpc2F0aW9uIG9mIHZlY3RvciBoYXZpbmcgZXh0ZXJuYWwgbWVtb3J5IHNldCBtZW1f aXNfb3V0ZXIgZmxhZy4iKTsKKworCQlmb3IgKHNpemVfdCBpID0gMDsgaSA8IFZFQ1RfQ0FQ OyBpKyspCisJCXsKKwkJCWlmICh2ZWN0X3UxNl9hcHBlbmQoJnZlY3QsIGkpICE9IDApCisJ CQkJZmFpbCgKKwkJCQkJIkVSUk9SOiBOZXcgdmFsdWUgY2FuJ3QgYmUgYXBwZW5kZWQgaW50 byB2ZWN0b3IgaGF2aW5nIGV4dGVybmFsIG1lbW9yeS4iKTsKKwkJfQorCQlwYXNzKAorCQkJ IkFsbCB2YWx1ZXMgaGF2ZSBiZWVuIGFwcGVuZGVkIGludG8gdmVjdG9yIGhhdmluZyBleHRl cm5hbCBtZW1vcnkuIik7CisKKwkJY21wX29rKHZlY3QuY250LCAiPT0iLCBWRUNUX0NBUCwg IlZlY3RvciBpcyBmdWxsLiIpOworCQljbXBfb2sodmVjdF91MTZfYXBwZW5kKCZ2ZWN0LCBW RUNUX0NBUCksICI9PSIsIC0xLAorCQkJICAgIk9uY2UgdmVjdG9yIGlzIGZ1bGwsIGV4dHJh IGl0ZW0gY2FuJ3QgYmUgYXBwZW5kZWQuIik7CisJfQorCXByaW50ZigiVGVzdCBWRUNUT1Ig V0lUSCBPVVRFUiBNRU1PUlkgaXMgZmluaXNoZWRcbiIpOworCXByaW50ZigiPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIik7CisKKwlkb25lX3Rlc3Rpbmco KTsKK30KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2xpYnRhcC8uZ2l0aWdub3JlIGIvc3JjL3Rl c3QvbGlidGFwLy5naXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLjJjOTVkMDQ2YzdkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbGlidGFw Ly5naXRpZ25vcmUKQEAgLTAsMCArMSwxMyBAQAorL3QvKgorIS90LyouKgorL3QvKi5leGUK Ky90LyouZ290CisqLmEKKyoubG8KKyoubworKi5zbworKi5wYwordXNyLworKi5zdz8KKy8u ZGVwcworLy5kaXJzdGFtcApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbGlidGFwLy50cmF2aXMu eW1sIGIvc3JjL3Rlc3QvbGlidGFwLy50cmF2aXMueW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi42Zjk4MDllMWI5OQotLS0gL2Rldi9udWxsCisrKyBiL3Ny Yy90ZXN0L2xpYnRhcC8udHJhdmlzLnltbApAQCAtMCwwICsxLDEzIEBACitsYW5ndWFnZTog YworCitjb21waWxlcjoKKyAgLSBnY2MKKyAgLSBjbGFuZworCitiZWZvcmVfaW5zdGFsbDog c3VkbyBhcHQtZ2V0IGluc3RhbGwgLXkgbGlidGVzdC1kaWZmZXJlbmNlcy1wZXJsCisKK2lu c3RhbGw6IG1ha2UgQ0M9JENDIGluc3RhbGwKKworc2NyaXB0OiBtYWtlIENDPSRDQyB0ZXN0 CisKK2FmdGVyX3NjcmlwdDogbWFrZSB1bmluc3RhbGwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L2xpYnRhcC9DT1BZSU5HIGIvc3JjL3Rlc3QvbGlidGFwL0NPUFlJTkcKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjY1YzVjYTg4YTY3Ci0tLSAvZGV2L251bGwK KysrIGIvc3JjL3Rlc3QvbGlidGFwL0NPUFlJTkcKQEAgLTAsMCArMSwxNjUgQEAKKyAgICAg ICAgICAgICAgICAgICBHTlUgTEVTU0VSIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKKyAgICAg ICAgICAgICAgICAgICAgICAgVmVyc2lvbiAzLCAyOSBKdW5lIDIwMDcKKworIENvcHlyaWdo dCAoQykgMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gPGh0dHA6Ly9mc2Yu b3JnLz4KKyBFdmVyeW9uZSBpcyBwZXJtaXR0ZWQgdG8gY29weSBhbmQgZGlzdHJpYnV0ZSB2 ZXJiYXRpbSBjb3BpZXMKKyBvZiB0aGlzIGxpY2Vuc2UgZG9jdW1lbnQsIGJ1dCBjaGFuZ2lu ZyBpdCBpcyBub3QgYWxsb3dlZC4KKworCisgIFRoaXMgdmVyc2lvbiBvZiB0aGUgR05VIExl c3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGluY29ycG9yYXRlcwordGhlIHRlcm1zIGFu ZCBjb25kaXRpb25zIG9mIHZlcnNpb24gMyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCitM aWNlbnNlLCBzdXBwbGVtZW50ZWQgYnkgdGhlIGFkZGl0aW9uYWwgcGVybWlzc2lvbnMgbGlz dGVkIGJlbG93LgorCisgIDAuIEFkZGl0aW9uYWwgRGVmaW5pdGlvbnMuCisKKyAgQXMgdXNl ZCBoZXJlaW4sICJ0aGlzIExpY2Vuc2UiIHJlZmVycyB0byB2ZXJzaW9uIDMgb2YgdGhlIEdO VSBMZXNzZXIKK0dlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFuZCB0aGUgIkdOVSBHUEwiIHJl ZmVycyB0byB2ZXJzaW9uIDMgb2YgdGhlIEdOVQorR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4K KworICAiVGhlIExpYnJhcnkiIHJlZmVycyB0byBhIGNvdmVyZWQgd29yayBnb3Zlcm5lZCBi eSB0aGlzIExpY2Vuc2UsCitvdGhlciB0aGFuIGFuIEFwcGxpY2F0aW9uIG9yIGEgQ29tYmlu ZWQgV29yayBhcyBkZWZpbmVkIGJlbG93LgorCisgIEFuICJBcHBsaWNhdGlvbiIgaXMgYW55 IHdvcmsgdGhhdCBtYWtlcyB1c2Ugb2YgYW4gaW50ZXJmYWNlIHByb3ZpZGVkCitieSB0aGUg TGlicmFyeSwgYnV0IHdoaWNoIGlzIG5vdCBvdGhlcndpc2UgYmFzZWQgb24gdGhlIExpYnJh cnkuCitEZWZpbmluZyBhIHN1YmNsYXNzIG9mIGEgY2xhc3MgZGVmaW5lZCBieSB0aGUgTGli cmFyeSBpcyBkZWVtZWQgYSBtb2RlCitvZiB1c2luZyBhbiBpbnRlcmZhY2UgcHJvdmlkZWQg YnkgdGhlIExpYnJhcnkuCisKKyAgQSAiQ29tYmluZWQgV29yayIgaXMgYSB3b3JrIHByb2R1 Y2VkIGJ5IGNvbWJpbmluZyBvciBsaW5raW5nIGFuCitBcHBsaWNhdGlvbiB3aXRoIHRoZSBM aWJyYXJ5LiAgVGhlIHBhcnRpY3VsYXIgdmVyc2lvbiBvZiB0aGUgTGlicmFyeQord2l0aCB3 aGljaCB0aGUgQ29tYmluZWQgV29yayB3YXMgbWFkZSBpcyBhbHNvIGNhbGxlZCB0aGUgIkxp bmtlZAorVmVyc2lvbiIuCisKKyAgVGhlICJNaW5pbWFsIENvcnJlc3BvbmRpbmcgU291cmNl IiBmb3IgYSBDb21iaW5lZCBXb3JrIG1lYW5zIHRoZQorQ29ycmVzcG9uZGluZyBTb3VyY2Ug Zm9yIHRoZSBDb21iaW5lZCBXb3JrLCBleGNsdWRpbmcgYW55IHNvdXJjZSBjb2RlCitmb3Ig cG9ydGlvbnMgb2YgdGhlIENvbWJpbmVkIFdvcmsgdGhhdCwgY29uc2lkZXJlZCBpbiBpc29s YXRpb24sIGFyZQorYmFzZWQgb24gdGhlIEFwcGxpY2F0aW9uLCBhbmQgbm90IG9uIHRoZSBM aW5rZWQgVmVyc2lvbi4KKworICBUaGUgIkNvcnJlc3BvbmRpbmcgQXBwbGljYXRpb24gQ29k ZSIgZm9yIGEgQ29tYmluZWQgV29yayBtZWFucyB0aGUKK29iamVjdCBjb2RlIGFuZC9vciBz b3VyY2UgY29kZSBmb3IgdGhlIEFwcGxpY2F0aW9uLCBpbmNsdWRpbmcgYW55IGRhdGEKK2Fu ZCB1dGlsaXR5IHByb2dyYW1zIG5lZWRlZCBmb3IgcmVwcm9kdWNpbmcgdGhlIENvbWJpbmVk IFdvcmsgZnJvbSB0aGUKK0FwcGxpY2F0aW9uLCBidXQgZXhjbHVkaW5nIHRoZSBTeXN0ZW0g TGlicmFyaWVzIG9mIHRoZSBDb21iaW5lZCBXb3JrLgorCisgIDEuIEV4Y2VwdGlvbiB0byBT ZWN0aW9uIDMgb2YgdGhlIEdOVSBHUEwuCisKKyAgWW91IG1heSBjb252ZXkgYSBjb3ZlcmVk IHdvcmsgdW5kZXIgc2VjdGlvbnMgMyBhbmQgNCBvZiB0aGlzIExpY2Vuc2UKK3dpdGhvdXQg YmVpbmcgYm91bmQgYnkgc2VjdGlvbiAzIG9mIHRoZSBHTlUgR1BMLgorCisgIDIuIENvbnZl eWluZyBNb2RpZmllZCBWZXJzaW9ucy4KKworICBJZiB5b3UgbW9kaWZ5IGEgY29weSBvZiB0 aGUgTGlicmFyeSwgYW5kLCBpbiB5b3VyIG1vZGlmaWNhdGlvbnMsIGEKK2ZhY2lsaXR5IHJl ZmVycyB0byBhIGZ1bmN0aW9uIG9yIGRhdGEgdG8gYmUgc3VwcGxpZWQgYnkgYW4gQXBwbGlj YXRpb24KK3RoYXQgdXNlcyB0aGUgZmFjaWxpdHkgKG90aGVyIHRoYW4gYXMgYW4gYXJndW1l bnQgcGFzc2VkIHdoZW4gdGhlCitmYWNpbGl0eSBpcyBpbnZva2VkKSwgdGhlbiB5b3UgbWF5 IGNvbnZleSBhIGNvcHkgb2YgdGhlIG1vZGlmaWVkCit2ZXJzaW9uOgorCisgICBhKSB1bmRl ciB0aGlzIExpY2Vuc2UsIHByb3ZpZGVkIHRoYXQgeW91IG1ha2UgYSBnb29kIGZhaXRoIGVm Zm9ydCB0bworICAgZW5zdXJlIHRoYXQsIGluIHRoZSBldmVudCBhbiBBcHBsaWNhdGlvbiBk b2VzIG5vdCBzdXBwbHkgdGhlCisgICBmdW5jdGlvbiBvciBkYXRhLCB0aGUgZmFjaWxpdHkg c3RpbGwgb3BlcmF0ZXMsIGFuZCBwZXJmb3JtcworICAgd2hhdGV2ZXIgcGFydCBvZiBpdHMg cHVycG9zZSByZW1haW5zIG1lYW5pbmdmdWwsIG9yCisKKyAgIGIpIHVuZGVyIHRoZSBHTlUg R1BMLCB3aXRoIG5vbmUgb2YgdGhlIGFkZGl0aW9uYWwgcGVybWlzc2lvbnMgb2YKKyAgIHRo aXMgTGljZW5zZSBhcHBsaWNhYmxlIHRvIHRoYXQgY29weS4KKworICAzLiBPYmplY3QgQ29k ZSBJbmNvcnBvcmF0aW5nIE1hdGVyaWFsIGZyb20gTGlicmFyeSBIZWFkZXIgRmlsZXMuCisK KyAgVGhlIG9iamVjdCBjb2RlIGZvcm0gb2YgYW4gQXBwbGljYXRpb24gbWF5IGluY29ycG9y YXRlIG1hdGVyaWFsIGZyb20KK2EgaGVhZGVyIGZpbGUgdGhhdCBpcyBwYXJ0IG9mIHRoZSBM aWJyYXJ5LiAgWW91IG1heSBjb252ZXkgc3VjaCBvYmplY3QKK2NvZGUgdW5kZXIgdGVybXMg b2YgeW91ciBjaG9pY2UsIHByb3ZpZGVkIHRoYXQsIGlmIHRoZSBpbmNvcnBvcmF0ZWQKK21h dGVyaWFsIGlzIG5vdCBsaW1pdGVkIHRvIG51bWVyaWNhbCBwYXJhbWV0ZXJzLCBkYXRhIHN0 cnVjdHVyZQorbGF5b3V0cyBhbmQgYWNjZXNzb3JzLCBvciBzbWFsbCBtYWNyb3MsIGlubGlu ZSBmdW5jdGlvbnMgYW5kIHRlbXBsYXRlcworKHRlbiBvciBmZXdlciBsaW5lcyBpbiBsZW5n dGgpLCB5b3UgZG8gYm90aCBvZiB0aGUgZm9sbG93aW5nOgorCisgICBhKSBHaXZlIHByb21p bmVudCBub3RpY2Ugd2l0aCBlYWNoIGNvcHkgb2YgdGhlIG9iamVjdCBjb2RlIHRoYXQgdGhl CisgICBMaWJyYXJ5IGlzIHVzZWQgaW4gaXQgYW5kIHRoYXQgdGhlIExpYnJhcnkgYW5kIGl0 cyB1c2UgYXJlCisgICBjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZS4KKworICAgYikgQWNjb21w YW55IHRoZSBvYmplY3QgY29kZSB3aXRoIGEgY29weSBvZiB0aGUgR05VIEdQTCBhbmQgdGhp cyBsaWNlbnNlCisgICBkb2N1bWVudC4KKworICA0LiBDb21iaW5lZCBXb3Jrcy4KKworICBZ b3UgbWF5IGNvbnZleSBhIENvbWJpbmVkIFdvcmsgdW5kZXIgdGVybXMgb2YgeW91ciBjaG9p Y2UgdGhhdCwKK3Rha2VuIHRvZ2V0aGVyLCBlZmZlY3RpdmVseSBkbyBub3QgcmVzdHJpY3Qg bW9kaWZpY2F0aW9uIG9mIHRoZQorcG9ydGlvbnMgb2YgdGhlIExpYnJhcnkgY29udGFpbmVk IGluIHRoZSBDb21iaW5lZCBXb3JrIGFuZCByZXZlcnNlCitlbmdpbmVlcmluZyBmb3IgZGVi dWdnaW5nIHN1Y2ggbW9kaWZpY2F0aW9ucywgaWYgeW91IGFsc28gZG8gZWFjaCBvZgordGhl IGZvbGxvd2luZzoKKworICAgYSkgR2l2ZSBwcm9taW5lbnQgbm90aWNlIHdpdGggZWFjaCBj b3B5IG9mIHRoZSBDb21iaW5lZCBXb3JrIHRoYXQKKyAgIHRoZSBMaWJyYXJ5IGlzIHVzZWQg aW4gaXQgYW5kIHRoYXQgdGhlIExpYnJhcnkgYW5kIGl0cyB1c2UgYXJlCisgICBjb3ZlcmVk IGJ5IHRoaXMgTGljZW5zZS4KKworICAgYikgQWNjb21wYW55IHRoZSBDb21iaW5lZCBXb3Jr IHdpdGggYSBjb3B5IG9mIHRoZSBHTlUgR1BMIGFuZCB0aGlzIGxpY2Vuc2UKKyAgIGRvY3Vt ZW50LgorCisgICBjKSBGb3IgYSBDb21iaW5lZCBXb3JrIHRoYXQgZGlzcGxheXMgY29weXJp Z2h0IG5vdGljZXMgZHVyaW5nCisgICBleGVjdXRpb24sIGluY2x1ZGUgdGhlIGNvcHlyaWdo dCBub3RpY2UgZm9yIHRoZSBMaWJyYXJ5IGFtb25nCisgICB0aGVzZSBub3RpY2VzLCBhcyB3 ZWxsIGFzIGEgcmVmZXJlbmNlIGRpcmVjdGluZyB0aGUgdXNlciB0byB0aGUKKyAgIGNvcGll cyBvZiB0aGUgR05VIEdQTCBhbmQgdGhpcyBsaWNlbnNlIGRvY3VtZW50LgorCisgICBkKSBE byBvbmUgb2YgdGhlIGZvbGxvd2luZzoKKworICAgICAgIDApIENvbnZleSB0aGUgTWluaW1h bCBDb3JyZXNwb25kaW5nIFNvdXJjZSB1bmRlciB0aGUgdGVybXMgb2YgdGhpcworICAgICAg IExpY2Vuc2UsIGFuZCB0aGUgQ29ycmVzcG9uZGluZyBBcHBsaWNhdGlvbiBDb2RlIGluIGEg Zm9ybQorICAgICAgIHN1aXRhYmxlIGZvciwgYW5kIHVuZGVyIHRlcm1zIHRoYXQgcGVybWl0 LCB0aGUgdXNlciB0bworICAgICAgIHJlY29tYmluZSBvciByZWxpbmsgdGhlIEFwcGxpY2F0 aW9uIHdpdGggYSBtb2RpZmllZCB2ZXJzaW9uIG9mCisgICAgICAgdGhlIExpbmtlZCBWZXJz aW9uIHRvIHByb2R1Y2UgYSBtb2RpZmllZCBDb21iaW5lZCBXb3JrLCBpbiB0aGUKKyAgICAg ICBtYW5uZXIgc3BlY2lmaWVkIGJ5IHNlY3Rpb24gNiBvZiB0aGUgR05VIEdQTCBmb3IgY29u dmV5aW5nCisgICAgICAgQ29ycmVzcG9uZGluZyBTb3VyY2UuCisKKyAgICAgICAxKSBVc2Ug YSBzdWl0YWJsZSBzaGFyZWQgbGlicmFyeSBtZWNoYW5pc20gZm9yIGxpbmtpbmcgd2l0aCB0 aGUKKyAgICAgICBMaWJyYXJ5LiAgQSBzdWl0YWJsZSBtZWNoYW5pc20gaXMgb25lIHRoYXQg KGEpIHVzZXMgYXQgcnVuIHRpbWUKKyAgICAgICBhIGNvcHkgb2YgdGhlIExpYnJhcnkgYWxy ZWFkeSBwcmVzZW50IG9uIHRoZSB1c2VyJ3MgY29tcHV0ZXIKKyAgICAgICBzeXN0ZW0sIGFu ZCAoYikgd2lsbCBvcGVyYXRlIHByb3Blcmx5IHdpdGggYSBtb2RpZmllZCB2ZXJzaW9uCisg ICAgICAgb2YgdGhlIExpYnJhcnkgdGhhdCBpcyBpbnRlcmZhY2UtY29tcGF0aWJsZSB3aXRo IHRoZSBMaW5rZWQKKyAgICAgICBWZXJzaW9uLgorCisgICBlKSBQcm92aWRlIEluc3RhbGxh dGlvbiBJbmZvcm1hdGlvbiwgYnV0IG9ubHkgaWYgeW91IHdvdWxkIG90aGVyd2lzZQorICAg YmUgcmVxdWlyZWQgdG8gcHJvdmlkZSBzdWNoIGluZm9ybWF0aW9uIHVuZGVyIHNlY3Rpb24g NiBvZiB0aGUKKyAgIEdOVSBHUEwsIGFuZCBvbmx5IHRvIHRoZSBleHRlbnQgdGhhdCBzdWNo IGluZm9ybWF0aW9uIGlzCisgICBuZWNlc3NhcnkgdG8gaW5zdGFsbCBhbmQgZXhlY3V0ZSBh IG1vZGlmaWVkIHZlcnNpb24gb2YgdGhlCisgICBDb21iaW5lZCBXb3JrIHByb2R1Y2VkIGJ5 IHJlY29tYmluaW5nIG9yIHJlbGlua2luZyB0aGUKKyAgIEFwcGxpY2F0aW9uIHdpdGggYSBt b2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBMaW5rZWQgVmVyc2lvbi4gKElmCisgICB5b3UgdXNl IG9wdGlvbiA0ZDAsIHRoZSBJbnN0YWxsYXRpb24gSW5mb3JtYXRpb24gbXVzdCBhY2NvbXBh bnkKKyAgIHRoZSBNaW5pbWFsIENvcnJlc3BvbmRpbmcgU291cmNlIGFuZCBDb3JyZXNwb25k aW5nIEFwcGxpY2F0aW9uCisgICBDb2RlLiBJZiB5b3UgdXNlIG9wdGlvbiA0ZDEsIHlvdSBt dXN0IHByb3ZpZGUgdGhlIEluc3RhbGxhdGlvbgorICAgSW5mb3JtYXRpb24gaW4gdGhlIG1h bm5lciBzcGVjaWZpZWQgYnkgc2VjdGlvbiA2IG9mIHRoZSBHTlUgR1BMCisgICBmb3IgY29u dmV5aW5nIENvcnJlc3BvbmRpbmcgU291cmNlLikKKworICA1LiBDb21iaW5lZCBMaWJyYXJp ZXMuCisKKyAgWW91IG1heSBwbGFjZSBsaWJyYXJ5IGZhY2lsaXRpZXMgdGhhdCBhcmUgYSB3 b3JrIGJhc2VkIG9uIHRoZQorTGlicmFyeSBzaWRlIGJ5IHNpZGUgaW4gYSBzaW5nbGUgbGli cmFyeSB0b2dldGhlciB3aXRoIG90aGVyIGxpYnJhcnkKK2ZhY2lsaXRpZXMgdGhhdCBhcmUg bm90IEFwcGxpY2F0aW9ucyBhbmQgYXJlIG5vdCBjb3ZlcmVkIGJ5IHRoaXMKK0xpY2Vuc2Us IGFuZCBjb252ZXkgc3VjaCBhIGNvbWJpbmVkIGxpYnJhcnkgdW5kZXIgdGVybXMgb2YgeW91 cgorY2hvaWNlLCBpZiB5b3UgZG8gYm90aCBvZiB0aGUgZm9sbG93aW5nOgorCisgICBhKSBB Y2NvbXBhbnkgdGhlIGNvbWJpbmVkIGxpYnJhcnkgd2l0aCBhIGNvcHkgb2YgdGhlIHNhbWUg d29yayBiYXNlZAorICAgb24gdGhlIExpYnJhcnksIHVuY29tYmluZWQgd2l0aCBhbnkgb3Ro ZXIgbGlicmFyeSBmYWNpbGl0aWVzLAorICAgY29udmV5ZWQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoaXMgTGljZW5zZS4KKworICAgYikgR2l2ZSBwcm9taW5lbnQgbm90aWNlIHdpdGggdGhl IGNvbWJpbmVkIGxpYnJhcnkgdGhhdCBwYXJ0IG9mIGl0CisgICBpcyBhIHdvcmsgYmFzZWQg b24gdGhlIExpYnJhcnksIGFuZCBleHBsYWluaW5nIHdoZXJlIHRvIGZpbmQgdGhlCisgICBh Y2NvbXBhbnlpbmcgdW5jb21iaW5lZCBmb3JtIG9mIHRoZSBzYW1lIHdvcmsuCisKKyAgNi4g UmV2aXNlZCBWZXJzaW9ucyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlLgorCisgIFRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gbWF5IHB1Ymxpc2ggcmV2 aXNlZCBhbmQvb3IgbmV3IHZlcnNpb25zCitvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZyb20gdGltZSB0byB0aW1lLiBTdWNoIG5ldwordmVyc2lvbnMgd2ls bCBiZSBzaW1pbGFyIGluIHNwaXJpdCB0byB0aGUgcHJlc2VudCB2ZXJzaW9uLCBidXQgbWF5 CitkaWZmZXIgaW4gZGV0YWlsIHRvIGFkZHJlc3MgbmV3IHByb2JsZW1zIG9yIGNvbmNlcm5z LgorCisgIEVhY2ggdmVyc2lvbiBpcyBnaXZlbiBhIGRpc3Rpbmd1aXNoaW5nIHZlcnNpb24g bnVtYmVyLiBJZiB0aGUKK0xpYnJhcnkgYXMgeW91IHJlY2VpdmVkIGl0IHNwZWNpZmllcyB0 aGF0IGEgY2VydGFpbiBudW1iZXJlZCB2ZXJzaW9uCitvZiB0aGUgR05VIExlc3NlciBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlICJvciBhbnkgbGF0ZXIgdmVyc2lvbiIKK2FwcGxpZXMgdG8g aXQsIHlvdSBoYXZlIHRoZSBvcHRpb24gb2YgZm9sbG93aW5nIHRoZSB0ZXJtcyBhbmQKK2Nv bmRpdGlvbnMgZWl0aGVyIG9mIHRoYXQgcHVibGlzaGVkIHZlcnNpb24gb3Igb2YgYW55IGxh dGVyIHZlcnNpb24KK3B1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LiBJZiB0aGUgTGlicmFyeSBhcyB5b3UKK3JlY2VpdmVkIGl0IGRvZXMgbm90IHNwZWNpZnkg YSB2ZXJzaW9uIG51bWJlciBvZiB0aGUgR05VIExlc3NlcgorR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSwgeW91IG1heSBjaG9vc2UgYW55IHZlcnNpb24gb2YgdGhlIEdOVSBMZXNzZXIKK0dl bmVyYWwgUHVibGljIExpY2Vuc2UgZXZlciBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbi4KKworICBJZiB0aGUgTGlicmFyeSBhcyB5b3UgcmVjZWl2ZWQgaXQg c3BlY2lmaWVzIHRoYXQgYSBwcm94eSBjYW4gZGVjaWRlCit3aGV0aGVyIGZ1dHVyZSB2ZXJz aW9ucyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHNoYWxsCith cHBseSwgdGhhdCBwcm94eSdzIHB1YmxpYyBzdGF0ZW1lbnQgb2YgYWNjZXB0YW5jZSBvZiBh bnkgdmVyc2lvbiBpcworcGVybWFuZW50IGF1dGhvcml6YXRpb24gZm9yIHlvdSB0byBjaG9v c2UgdGhhdCB2ZXJzaW9uIGZvciB0aGUKK0xpYnJhcnkuCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9saWJ0YXAvSU5TVEFMTCBiL3NyYy90ZXN0L2xpYnRhcC9JTlNUQUxMCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41YjJjNzZkZjNkNwotLS0gL2Rldi9udWxs CisrKyBiL3NyYy90ZXN0L2xpYnRhcC9JTlNUQUxMCkBAIC0wLDAgKzEsNDEgQEAKK1RvIGlu c3RhbGwgbGlidGFwIG9uIGEgVW5peC1saWtlIHN5c3RlbToKKworICAgICQgbWFrZQorICAg ICQgbWFrZSBjaGVjaworICAgICQgbWFrZSBpbnN0YWxsCisKK1RvIGNvbXBpbGUgd2l0aCBn Y2MgLWFuc2ksIHJ1bjoKKworICAgICQgQU5TST0xIG1ha2UKKworVG8gaW5zdGFsbCB0byBh IGRpZmZlcmVudCBkaXJlY3RvcnkgdGhhbiAvdXNyL2xvY2FsLCBzdXBwbHkgdGhlCitQUkVG SVggdmFyaWFibGUgdG8gbWFrZToKKworICAgICQgUFJFRklYPS91c3IgbWFrZSBpbnN0YWxs CisKK09uIFdpbmRvd3MsIHRoZSBsaWJyYXJ5IGNhbiBiZSBjcmVhdGVkIGJ5IGZpcnN0IHNl dHRpbmcgdXAgdGhlCitjb3JyZWN0IGRldmVsb3BtZW50IGVudmlyb25tZW50IHZhcmlhYmxl cy4gVXN1YWxseSB0aGlzIGlzIGRvbmUgYnkKK3J1bm5pbmcgdmN2YXJzMzIuYmF0IGluY2x1 ZGVkIGluIHRoZSBWaXN1YWwgU3R1ZGlvIGRpc3RyaWJ1dGlvbi4KK1lvdSBzaG91bGQgYWxz byBpbnN0YWxsIGdudSBtYWtlIHdoaWNoIGNhbiBiZSBmb3VuZCBhdAoraHR0cDovL2dudXdp bjMyLnNvdXJjZWZvcmdlLm5ldC9wYWNrYWdlcy9tYWtlLmh0bS4gT25jZSB0aGlzIGlzCitk b25lLCB5b3Ugc2hvdWxkIGJlIGFibGUgdG8gcnVuIHRoZSBmb2xsb3dpbmc6CisKKyAgICA+ IG1ha2UgLWYgTWFrZWZpbGUud2luCisKK0lmIHlvdSB3YW50IHRvIHVzZSBpdCBkaXJlY3Rs eSBpbiBhbm90aGVyIHByb2plY3QsIHlvdSBjYW4gY29weSB0YXAuYworYW5kIHRhcC5oIHRo ZXJlIGFuZCBpdCBzaG91bGRuJ3QgaGF2ZSBhIHByb2JsZW0gY29tcGlsaW5nLgorCisgICAg JCBscworICAgIHRhcC5jIHRhcC5oIHRlc3QuYworICAgICQgY2F0IHRlc3QuYworICAgICNp bmNsdWRlICJ0YXAuaCIKKyAgICBpbnQgbWFpbiAoKSB7CisgICAgICAgIHBsYW4oMSk7Cisg ICAgICAgIG9rKDUwICsgNSwgImZvbyAlcyIsICJiYXIiKTsKKyAgICAgICAgZG9uZV90ZXN0 aW5nKCk7CisgICAgfQorICAgICQgZ2NjIHRlc3QuYyB0YXAuYworICAgICQgYS5vdXQKKyAg ICAxLi4xCisgICAgb2sgMSAtIGZvbyBiYXIKKwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbGli dGFwL01ha2VmaWxlIGIvc3JjL3Rlc3QvbGlidGFwL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mMDIwYzI4MzlhOAotLS0gL2Rldi9udWxsCisr KyBiL3NyYy90ZXN0L2xpYnRhcC9NYWtlZmlsZQpAQCAtMCwwICsxLDczIEBACitDQyA/PSBn Y2MKK0NGTEFHUyArPSAtV2FsbCAtSS4gLWZQSUMKK1BSRUZJWCA/PSAkKERFU1RESVIpL3Vz ci9sb2NhbAorVEVTVFMgPSAkKHBhdHN1YnN0ICUuYywgJSwgJCh3aWxkY2FyZCB0LyouYykp CisKK2lmZGVmIEFOU0kKKwkjIC1EX0JTRF9TT1VSQ0UgZm9yIE1BUF9BTk9OWU1PVVMKKwlD RkxBR1MgKz0gLWFuc2kgLURfQlNEX1NPVVJDRQorCUxETElCUyArPSAtbGJzZC1jb21wYXQK K2VuZGlmCisKKyU6CisJJChDQykgJChMREZMQUdTKSAkKFRBUkdFVF9BUkNIKSAkKGZpbHRl ciAlLm8gJS5hICUuc28sICReKSAkKExETElCUykgLW8gJEAKKworJS5vOgorCSQoQ0MpICQo Q0ZMQUdTKSAkKENQUEZMQUdTKSAkKFRBUkdFVF9BUkNIKSAtYyAkKGZpbHRlciAlLmMsICRe KSAkKExETElCUykgLW8gJEAKKworJS5hOgorCSQoQVIpIHJjcyAkQCAkKGZpbHRlciAlLm8s ICReKQorCislLnNvOgorCSQoQ0MpIC1zaGFyZWQgJChMREZMQUdTKSAkKFRBUkdFVF9BUkNI KSAkKGZpbHRlciAlLm8sICReKSAkKExETElCUykgLW8gJEAKKworYWxsOiBsaWJ0YXAuYSBs aWJ0YXAuc28gdGFwLnBjIHRlc3RzCisKK3RhcC5wYzoKKwlAZWNobyBnZW5lcmF0aW5nIHRh cC5wYworCUBlY2hvICdwcmVmaXg9JyQoUFJFRklYKSA+IHRhcC5wYworCUBlY2hvICdleGVj X3ByZWZpeD0kJHtwcmVmaXh9JyA+PiB0YXAucGMKKwlAZWNobyAnbGliZGlyPSQke3ByZWZp eH0vbGliJyA+PiB0YXAucGMKKwlAZWNobyAnaW5jbHVkZWRpcj0kJHtwcmVmaXh9L2luY2x1 ZGUnID4+IHRhcC5wYworCUBlY2hvICcnID4+IHRhcC5wYworCUBlY2hvICdOYW1lOiBsaWJ0 YXAnID4+IHRhcC5wYworCUBlY2hvICdEZXNjcmlwdGlvbjogV3JpdGUgdGVzdHMgaW4gQycg Pj4gdGFwLnBjCisJQGVjaG8gJ1ZlcnNpb246IDAuMS4wJyA+PiB0YXAucGMKKwlAZWNobyAn VVJMOiBodHRwczovL2dpdGh1Yi5jb20vem9yZ25heC9saWJ0YXAnID4+IHRhcC5wYworCUBl Y2hvICdMaWJzOiAtTCQke2xpYmRpcn0gLWx0YXAnID4+IHRhcC5wYworCUBlY2hvICdDZmxh Z3M6IC1JJCR7aW5jbHVkZWRpcn0nID4+IHRhcC5wYworCitsaWJ0YXAuYTogdGFwLm8KKwor bGlidGFwLnNvOiB0YXAubworCit0YXAubzogdGFwLmMgdGFwLmgKKwordGVzdHM6ICQoVEVT VFMpCisKKyQoVEVTVFMpOiAlOiAlLm8gbGlidGFwLmEKKworJChwYXRzdWJzdCAlLCAlLm8s ICQoVEVTVFMpKTogJS5vOiAlLmMgdGFwLmgKKwkkKENDKSAkKENGTEFHUykgLU8wICQoQ1BQ RkxBR1MpICQoVEFSR0VUX0FSQ0gpIC1jICQoZmlsdGVyICUuYywgJF4pICQoTERMSUJTKSAt byAkQAorCitjbGVhbjoKKwlybSAtcmYgKi5vIHQvKi5vIHRhcC5wYyBsaWJ0YXAuYSBsaWJ0 YXAuc28gJChURVNUUykKKworaW5zdGFsbDogbGlidGFwLmEgdGFwLmggbGlidGFwLnNvIHRh cC5wYworCW1rZGlyIC1wICQoUFJFRklYKS9saWIgJChQUkVGSVgpL2luY2x1ZGUgJChQUkVG SVgpL2xpYi9wa2djb25maWcKKwlpbnN0YWxsIC1jIGxpYnRhcC5hICQoUFJFRklYKS9saWIK KwlpbnN0YWxsIC1jIGxpYnRhcC5zbyAkKFBSRUZJWCkvbGliCisJaW5zdGFsbCAtYyB0YXAu cGMgJChQUkVGSVgpL2xpYi9wa2djb25maWcKKwlpbnN0YWxsIC1jIHRhcC5oICQoUFJFRklY KS9pbmNsdWRlCisKK3VuaW5zdGFsbDoKKwlybSAkKFBSRUZJWCkvbGliL2xpYnRhcC5hICQo UFJFRklYKS9saWIvbGlidGFwLnNvICQoUFJFRklYKS9pbmNsdWRlL3RhcC5oCisKK2Rpc3Q6 CisJcm0gbGlidGFwLnppcAorCXppcCAtciBsaWJ0YXAgKgorCitjaGVjayB0ZXN0OiBhbGwK KwkuL3QvdGVzdAorCisuUEhPTlk6IGFsbCBjbGVhbiBpbnN0YWxsIHVuaW5zdGFsbCBkaXN0 IGNoZWNrIHRlc3QgdGVzdHMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2xpYnRhcC9NYWtlZmls ZS53aW4gYi9zcmMvdGVzdC9saWJ0YXAvTWFrZWZpbGUud2luCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42OTRkNjc5YTFiMQotLS0gL2Rldi9udWxsCisrKyBi L3NyYy90ZXN0L2xpYnRhcC9NYWtlZmlsZS53aW4KQEAgLTAsMCArMSwzNyBAQAorQ0ZMQUdT ID0gL1ppIC9XYWxsIC93ZDQyNTUgL3dkNDk5NiAvd2Q0MTI3IC93ZDQ4MjAgL3dkNDEwMCAv d2Q0NjE5IFwKKwkJIC93ZDQ1MTQgL3dkNDY2OCAvSS4KK0NDID0gY2wgL25vbG9nbworVEVT VFMgPSAkKHBhdHN1YnN0ICUuYywgJS5leGUsICQod2lsZGNhcmQgdC8qLmMpKQorCislLmV4 ZToKKwkkKENDKSAkKExERkxBR1MpICQoZmlsdGVyICUub2JqICUubGliICUuZGxsLCAkXikg JChMRExJQlMpIC9GZSAkQAorCislLm86CisJJChDQykgJChDRkxBR1MpICQoQ1BQRkxBR1Mp IC9jICQoZmlsdGVyICUuYywgJF4pICQoTERMSUJTKSAvRm8gJEAKKworJS5saWI6CisJbGli IC9ub2xvZ28gL291dDokQCAkKGZpbHRlciAlLm9iaiwgJF4pCisKKyUuZGxsOgorCWxpYiAv bm9sb2dvIC9vdXQ6JEAgJChmaWx0ZXIgJS5vYmosICReKQorCithbGw6IHRhcC5saWIgdGVz dHMKKwordGFwLmxpYjogdGFwLm9iagorCit0YXAub2JqOiB0YXAuYyB0YXAuaAorCit0ZXN0 czogJChURVNUUykKKworJChURVNUUyk6ICUuZXhlOiAlLm9iaiB0YXAubGliCisKKyQocGF0 c3Vic3QgJS5leGUsICUub2JqLCAkKFRFU1RTKSk6ICUub2JqOiAlLmMgdGFwLmgKKworY2xl YW46CisJcm0gLXJmICoub2JqIHQvKi5vYmogdGFwLmxpYiAkKFRFU1RTKQorCitjaGVjayB0 ZXN0OiBhbGwKKwlwcm92ZQorCisuUEhPTlk6IGFsbCBjbGVhbiBjaGVjayB0ZXN0IHRlc3Rz CisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2xpYnRhcC9SRUFETUUubWQgYi9zcmMvdGVzdC9s aWJ0YXAvUkVBRE1FLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li41MzMyZDUyNmMwOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2xpYnRhcC9SRUFE TUUubWQKQEAgLTAsMCArMSwyNjggQEAKK05BTUUKKz09PT0KKworbGlidGFwIC0gV3JpdGUg dGVzdHMgaW4gQworCitTWU5PUFNJUworPT09PT09PT0KKworICAgICNpbmNsdWRlIDx0YXAu aD4KKworICAgIGludCBtYWluICgpIHsKKyAgICAgICAgcGxhbig1KTsKKyAgICAgICAgaW50 IGJyb256ZSA9IDEsIHNpbHZlciA9IDIsIGdvbGQgPSAzOworICAgICAgICBvayhicm9uemUg PCBzaWx2ZXIsICJicm9uemUgaXMgbGVzcyB0aGFuIHNpbHZlciIpOworICAgICAgICBvayhi cm9uemUgPiBzaWx2ZXIsICJub3QgcXVpdGUiKTsKKyAgICAgICAgaXMoImdvbGQiLCAiZ29s ZCIsICJnb2xkIGlzIGdvbGQiKTsKKyAgICAgICAgY21wX29rKHNpbHZlciwgIjwiLCBnb2xk LCAiJWQgPD0gJWQiLCBzaWx2ZXIsIGdvbGQpOworICAgICAgICBsaWtlKCJwbGF0aW51bSIs ICIuKmludW0iLCAicGxhdGludW0gbWF0Y2hlcyAuKmludW0iKTsKKyAgICAgICAgZG9uZV90 ZXN0aW5nKCk7CisgICAgfQorCityZXN1bHRzIGluOgorCisgICAgMS4uNQorICAgIG9rIDEg LSBicm9uemUgaXMgbGVzcyB0aGFuIHNpbHZlcgorICAgIG5vdCBvayAyIC0gbm90IHF1aXRl CisgICAgIyAgIEZhaWxlZCB0ZXN0ICdub3QgcXVpdGUnCisgICAgIyAgIGF0IHQvc3lub3Bz aXMuYyBsaW5lIDcuCisgICAgb2sgMyAtIGdvbGQgaXMgZ29sZAorICAgIG9rIDQgLSAyIDw9 IDMKKyAgICBvayA1IC0gcGxhdGludW0gbWF0Y2hlcyAuKmludW0KKyAgICAjIExvb2tzIGxp a2UgeW91IGZhaWxlZCAxIHRlc3Qgb2YgNSBydW4uCisKK0RFU0NSSVBUSU9OCis9PT09PT09 PT09PQorCit0YXAgaXMgYW4gZWFzeSB0byByZWFkIGFuZCBlYXN5IHRvIHdyaXRlIHdheSBv ZiBjcmVhdGluZyB0ZXN0cyBmb3IKK3lvdXIgc29mdHdhcmUuIFRoaXMgbGlicmFyeSBjcmVh dGVzIGZ1bmN0aW9ucyB0aGF0IGNhbiBiZSB1c2VkIHRvCitnZW5lcmF0ZSBpdCBmb3IgeW91 ciBDIHByb2dyYW1zLiBJdCBpcyBpbXBsZW1lbnRlZCB1c2luZyBtYWNyb3MKK3RoYXQgaW5j bHVkZSBmaWxlIGFuZCBsaW5lIGluZm8gYXV0b21hdGljYWxseSwgYW5kIG1ha2VzIGl0IHNv IHRoYXQKK3RoZSBmb3JtYXQgbWVzc2FnZSBvZiBlYWNoIHRlc3QgaXMgb3B0aW9uYWwuIEl0 IGlzIG1vc3RseSBiYXNlZCBvbgordGhlIFRlc3Q6Ok1vcmUgUGVybCBtb2R1bGUuCisKK0lO U1RBTEwKKz09PT09PT0KKworT24gKipVbml4Kiogc3lzdGVtczoKKworICAgICQgbWFrZQor ICAgICQgbWFrZSBpbnN0YWxsCisKK0ZvciBtb3JlIGRldGFpbGVkIGluc3RhbGxhdGlvbiBp bnN0cnVjdGlvbnMgKGVnLCBmb3IgKipXaW5kb3dzKiopLCBzZWUgYElOU1RBTExgLgorCitG VU5DVElPTlMKKz09PT09PT09PQorCistICAgcGxhbih0ZXN0cykKKy0gICBwbGFuKE5PX1BM QU4pCistICAgcGxhbihTS0lQX0FMTCk7CistICAgcGxhbihTS0lQX0FMTCwgZm10LCAuLi4p CisKKyAgICBVc2UgdGhpcyB0byBzdGFydCBhIHNlcmllcyBvZiB0ZXN0cy4gV2hlbiB5b3Ug a25vdyBob3cgbWFueSB0ZXN0cyB0aGVyZQorICAgIHdpbGwgYmUsIHlvdSBjYW4gcHV0IGEg bnVtYmVyIGFzIGEgbnVtYmVyIG9mIHRlc3RzIHlvdSBleHBlY3QgdG8gcnVuLiBJZgorICAg IHlvdSBkbyBub3Qga25vdyBob3cgbWFueSB0ZXN0cyB0aGVyZSB3aWxsIGJlLCB5b3UgY2Fu IHVzZSBwbGFuKE5PX1BMQU4pCisgICAgb3Igbm90IGNhbGwgdGhpcyBmdW5jdGlvbi4gV2hl biB5b3UgcGFzcyBpdCBhIG51bWJlciBvZiB0ZXN0cyB0byBydW4sIGEKKyAgICBtZXNzYWdl IHNpbWlsYXIgdG8gdGhlIGZvbGxvd2luZyB3aWxsIGFwcGVhciBpbiB0aGUgb3V0cHV0Ogor CisgICAgICAgIDEuLjUKKworICAgIElmIHlvdSBwYXNzIGl0IFNLSVBfQUxMLCB0aGUgd2hv bGUgdGVzdCB3aWxsIGJlIHNraXBwZWQuCisKKy0gICBvayh0ZXN0KQorLSAgIG9rKHRlc3Qs IGZtdCwgLi4uKQorCisgICAgU3BlY2lmeSBhIHRlc3QuIHRoZSB0ZXN0IGNhbiBiZSBhbnkg c3RhdGVtZW50IHJldHVybmluZyBhIHRydWUgb3IgZmFsc2UKKyAgICB2YWx1ZS4gWW91IG1h eSBvcHRpb25hbGx5IHBhc3MgYSBmb3JtYXQgc3RyaW5nIGRlc2NyaWJpbmcgdGhlIHRlc3Qu CisKKyAgICAgICAgb2sociA9IHJlYWRlcl9uZXcoIk9mIE1pY2UgYW5kIE1lbiIpLCAiY3Jl YXRlIGEgbmV3IHJlYWRlciIpOworICAgICAgICBvayhyZWFkZXJfZ29fdG9fcGFnZShyLCA1 NSksICJjYW4gdHVybiB0aGUgcGFnZSIpOworICAgICAgICBvayhyLT5wYWdlID09IDU1LCAi cGFnZSB0dXJuZWQgdG8gdGhlIHJpZ2h0IG9uZSIpOworCisgICAgU2hvdWxkIHByaW50IG91 dDoKKworICAgICAgICBvayAxIC0gY3JlYXRlIGEgbmV3IHJlYWRlcgorICAgICAgICBvayAy IC0gY2FuIHR1cm4gdGhlIHBhZ2UKKyAgICAgICAgb2sgMyAtIHBhZ2UgdHVybmVkIHRvIHRo ZSByaWdodCBvbmUKKworICAgIE9uIGZhaWx1cmUsIGEgZGlhZ25vc3RpYyBtZXNzYWdlIHdp bGwgYmUgcHJpbnRlZCBvdXQuCisKKyAgICAgICAgbm90IG9rIDMgLSBwYWdlIHR1cm5lZCB0 byB0aGUgcmlnaHQgb25lCisgICAgICAgICMgICBGYWlsZWQgdGVzdCAncGFnZSB0dXJuZWQg dG8gdGhlIHJpZ2h0IG9uZScKKyAgICAgICAgIyAgIGF0IHJlYWRlci5jIGxpbmUgMTMuCisK Ky0gICBpcyhnb3QsIGV4cGVjdGVkKQorLSAgIGlzKGdvdCwgZXhwZWN0ZWQsIGZtdCwgLi4u KQorLSAgIGlzbnQoZ290LCB1bmV4cGVjdGVkKQorLSAgIGlzbnQoZ290LCB1bmV4cGVjdGVk LCBmbXQsIC4uLikKKworICAgIFRlc3RzIHRoYXQgdGhlIHN0cmluZyB5b3UgZ290IGlzIHdo YXQgeW91IGV4cGVjdGVkLiB3aXRoIGlzbnQsIGl0IGlzIHRoZQorICAgIHJldmVyc2UuCisK KyAgICAgICAgaXMoInRoaXMiLCAidGhhdCIsICJ0aGlzIGlzIHRoYXQiKTsKKworICAgIHBy aW50czoKKworICAgICAgICBub3Qgb2sgMSAtIHRoaXMgaXMgdGhhdAorICAgICAgICAjICAg RmFpbGVkIHRlc3QgJ3RoaXMgaXMgdGhhdCcKKyAgICAgICAgIyAgIGF0IGlzLmMgbGluZSA2 LgorICAgICAgICAjICAgICAgICAgIGdvdDogJ3RoaXMnCisgICAgICAgICMgICAgIGV4cGVj dGVkOiAndGhhdCcKKworLSAgIGNtcF9vayhhLCBvcCwgYikKKy0gICBjbXBfb2soYSwgb3As IGIsIGZtdCwgLi4uKQorCisgICAgQ29tcGFyZXMgdHdvIGludHMgd2l0aCBhbnkgYmluYXJ5 IG9wZXJhdG9yIHRoYXQgZG9lc24ndCByZXF1aXJlIGFuIGx2YWx1ZS4KKyAgICBUaGlzIGlz IG5pY2UgdG8gdXNlIHNpbmNlIGl0IHByb3ZpZGVzIGEgYmV0dGVyIGVycm9yIG1lc3NhZ2Ug dGhhbiBhbgorICAgIGVxdWl2YWxlbnQgb2suCisKKyAgICAgICAgY21wX29rKDQyMCwgIj4i LCA2NjYpOworCisgICAgcHJpbnRzOgorCisgICAgICAgIG5vdCBvayAxCisgICAgICAgICMg ICBGYWlsZWQgdGVzdCBhdCBjbXBvay5jIGxpbmUgNS4KKyAgICAgICAgIyAgICAgNDIwCisg ICAgICAgICMgICAgICAgICA+CisgICAgICAgICMgICAgIDY2NgorCistICAgY21wX21lbShn b3QsIGV4cGVjdGVkLCBuKQorLSAgIGNtcF9tZW0oZ290LCBleHBlY3RlZCwgbiwgZm10LCAu Li4pCisKKyAgICBUZXN0cyB0aGF0IHRoZSBmaXJzdCBuIGJ5dGVzIG9mIHRoZSBtZW1vcnkg eW91IGdvdCBpcyB3aGF0IHlvdSBleHBlY3RlZC4KKyAgICBOVUxMIHBvaW50ZXJzIGZvciBn b3QgYW5kIGV4cGVjdGVkIGFyZSBoYW5kbGVkIChpZiBlaXRoZXIgaXMgTlVMTCwKKyAgICB0 aGUgdGVzdCBmYWlscyksIGJ1dCB5b3UgbmVlZCB0byBlbnN1cmUgbiBpcyBub3QgdG9vIGxh cmdlLgorCisgICAgICAgIGNoYXIgKmEgPSAiZm9vIjsKKyAgICAgICAgY2hhciAqYiA9ICJi YXIiOworICAgICAgICBjbXBfbWVtKGEsIGIsIDMpCisKKyAgICBwcmludHMKKworICAgICAg ICBub3Qgb2sgMQorICAgICAgICAjICAgRmFpbGVkIHRlc3QgYXQgdC9jbXBfbWVtLmMgbGlu ZSA5LgorICAgICAgICAjICAgICBEaWZmZXJlbmNlIHN0YXJ0cyBhdCBvZmZzZXQgMAorICAg ICAgICAjICAgICAgICAgIGdvdDogMHg2NgorICAgICAgICAjICAgICBleHBlY3RlZDogMHg2 MgorCistICAgbGlrZShnb3QsIGV4cGVjdGVkKQorLSAgIGxpa2UoZ290LCBleHBlY3RlZCwg Zm10LCAuLi4pCistICAgdW5saWtlKGdvdCwgdW5leHBlY3RlZCkKKy0gICB1bmxpa2UoZ290 LCB1bmV4cGVjdGVkLCBmbXQsIC4uLikKKworICAgIFRlc3RzIHRoYXQgdGhlIHN0cmluZyB5 b3UgZ290IG1hdGNoZXMgdGhlIGV4cGVjdGVkIGV4dGVuZGVkIFBPU0lYIHJlZ2V4LgorICAg IHVubGlrZSBpcyB0aGUgcmV2ZXJzZS4gVGhlc2UgbWFjcm9zIGFyZSB0aGUgZXF1aXZhbGVu dCBvZiBhIHNraXAgb24KKyAgICBXaW5kb3dzLgorCisgICAgICAgIGxpa2UoInN0cmFuZ2Vy IiwgIl5zLihyKS4qXFwxJCIsICJtYXRjaGVzIHRoZSByZWdleCIpOworCisgICAgcHJpbnRz OgorCisgICAgICAgIG9rIDEgLSBtYXRjaGVzIHRoZSByZWdleAorCistICAgcGFzcygpCist ICAgcGFzcyhmbXQsIC4uLikKKy0gICBmYWlsKCkKKy0gICBmYWlsKGZtdCwgLi4uKQorCisg ICAgU3BlY2l5IHRoYXQgYSB0ZXN0IHN1Y2NlZWRlZCBvciBmYWlsZWQuIFVzZSB0aGVzZSB3 aGVuIHRoZSBzdGF0ZW1lbnQgaXMKKyAgICBsb25nZXIgdGhhbiB5b3UgY2FuIGZpdCBpbnRv IHRoZSBhcmd1bWVudCBnaXZlbiB0byBhbiBvaygpIHRlc3QuCisKKy0gICBkaWVzX29rKGNv ZGUpCistICAgZGllc19vayhjb2RlLCBmbXQsIC4uLikKKy0gICBsaXZlc19vayhjb2RlKQor LSAgIGxpdmVzX29rKGNvZGUsIGZtdCwgLi4uKQorCisgICAgVGVzdHMgd2hldGhlciB0aGUg Z2l2ZW4gY29kZSBjYXVzZXMgeW91ciBwcm9ncmFtIHRvIGV4aXQuIFRoZSBjb2RlIGdldHMK KyAgICBwYXNzZWQgdG8gYSBtYWNybyB0aGF0IHdpbGwgdGVzdCBpdCBpbiBhIGZvcmtlZCBw cm9jZXNzLiBJZiB0aGUgY29kZQorICAgIHN1Y2NlZWRzIGl0IHdpbGwgYmUgZXhlY3V0ZWQg aW4gdGhlIHBhcmVudCBwcm9jZXNzLiBZb3UgY2FuIHRlc3QgdGhpbmdzCisgICAgbGlrZSBw YXNzaW5nIGEgZnVuY3Rpb24gYSBudWxsIHBvaW50ZXIgYW5kIG1ha2Ugc3VyZSBpdCBkb2Vz bnQKKyAgICBkZXJlZmVyZW5jZSBpdCBhbmQgY3Jhc2guCisKKyAgICAgICAgZGllc19vayh7 YWJvcnQoKTt9LCAiYWJvcnQgZG9lcyBjbG9zZSB5b3VyIHByb2dyYW0iKTsKKyAgICAgICAg ZGllc19vayh7aW50IHggPSAwLzA7fSwgImRpdmlkZSBieSB6ZXJvIGNyYXNoIik7CisgICAg ICAgIGxpdmVzX29rKHtwb3coMy4wLCA1LjApO30sICJub3RoaW5nIHdyb25nIHdpdGggdGFr aW5nIDMqKjUiKTsKKworICAgIE9uIFdpbmRvd3MsIHRoZXNlIG1hY3JvcyBhcmUgdGhlIGVx dWl2YWxlbnQgb2YgYSBza2lwLgorCistICAgZG9uZV90ZXN0aW5nKCkKKworICAgIFN1bW1h cml6ZXMgdGhlIHRlc3RzIHRoYXQgb2NjdXJyZWQgYW5kIGV4aXRzIHRoZSBtYWluIGZ1bmN0 aW9uLiBJZgorICAgIHRoZXJlIHdhcyBubyBwbGFuLCBpdCB3aWxsIHByaW50IG91dCB0aGUg bnVtYmVyIG9mIHRlc3RzIGFzLgorCisgICAgICAgIDEuLjUKKworICAgIEl0IHdpbGwgYWxz byBwcmludCBhIGRpYWdub3N0aWMgbWVzc2FnZSBhYm91dCBob3cgbWFueQorICAgIGZhaWx1 cmVzIHRoZXJlIHdlcmUuCisKKyAgICAgICAgIyBMb29rcyBsaWtlIHlvdSBmYWlsZWQgMiB0 ZXN0cyBvZiAzIHJ1bi4KKworICAgIElmIGFsbCBwbGFubmVkIHRlc3RzIHdlcmUgc3VjY2Vz c2Z1bCwgaXQgd2lsbCByZXR1cm4gMC4gSWYgYW55CisgICAgdGVzdCBmYWlscywgaXQgd2ls bCByZXR1cm4gMS4gSWYgdGhleSBhbGwgcGFzc2VkLCBidXQgdGhlcmUKKyAgICB3ZXJlIG1p c3NpbmcgdGVzdHMsIGl0IHdpbGwgcmV0dXJuIDIuCisKKy0gICBkaWFnKGZtdCwgLi4uKQor CisgICAgcHJpbnQgb3V0IGEgbWVzc2FnZSB0byB0aGUgdGFwIG91dHB1dCBvbiBzdGRvdXQu IEVhY2ggbGluZSBpcworICAgIHByZWNlZWRlZCBieSBhICIjICIgc28gdGhhdCB5b3Uga25v dyBpdHMgYSBkaWFnbm9zdGljIG1lc3NhZ2UuCisKKyAgICAgICAgZGlhZygiVGhpcyBpc1xu YSBkaWFnXG50byBkZXNjcmliZVxuc29tZXRoaW5nLiIpOworCisgICAgcHJpbnRzOgorCisg ICAgICAgICMgVGhpcyBpcworICAgICAgICAjIGEgZGlhZworICAgICAgICAjIHRvIGRlc2Ny aWJlCisgICAgICAgICMgc29tZXRoaW5nCisKKyAgICBvaygpIGFuZCB0aGlzIGZ1bmN0aW9u IHJldHVybiBhbiBpbnQgc28geW91IGNhbiB1c2UgaXQgbGlrZToKKworICAgICAgICBvaygw KSB8fCBkaWFnKCJkb2ghIik7CisKKy0gICBza2lwKHRlc3QsIG4pCistICAgc2tpcCh0ZXN0 LCBuLCBmbXQsIC4uLikKKy0gICBlbmRfc2tpcAorCisgICAgU2tpcCBhIHNlcmllcyBvZiBu IHRlc3RzIGlmIHRlc3QgaXMgdHJ1ZS4gWW91IG1heSBnaXZlIGEgcmVhc29uIHdoeSB5b3Ug YXJlCisgICAgc2tpcHBpbmcgdGhlbSBvciBub3QuIFRoZSAocG9zc2libHkpIHNraXBwZWQg dGVzdHMgbXVzdCBvY2N1ciBiZXR3ZWVuIHRoZQorICAgIHNraXAgYW5kIGVuZF9za2lwIG1h Y3Jvcy4KKworICAgICAgICBza2lwKFRSVUUsIDIpOworICAgICAgICBvaygxKTsKKyAgICAg ICAgb2soMCk7CisgICAgICAgIGVuZF9za2lwOworCisgICAgcHJpbnRzOgorCisgICAgICAg IG9rIDEgIyBza2lwCisgICAgICAgIG9rIDIgIyBza2lwCisKKy0gICB0b2RvKCkKKy0gICB0 b2RvKGZtdCwgLi4uKQorLSAgIGVuZF90b2RvCisKKyAgICBTcGVjaWZpZXMgYSBzZXJpZXMg b2YgdGVzdHMgdGhhdCB5b3UgZXhwZWN0IHRvIGZhaWwgYmVjYXVzZSB0aGV5IGFyZSBub3QK KyAgICB5ZXQgaW1wbGVtZW50ZWQuCisKKyAgICAgICAgdG9kbygpCisgICAgICAgIG9rKDAp OworICAgICAgICBlbmRfdG9kbzsKKworICAgIHByaW50czoKKworICAgICAgICBub3Qgb2sg MSAjIFRPRE8KKyAgICAgICAgIyAgIEZhaWxlZCAoVE9ETykgdGVzdCBhdCB0b2RvLmMgbGlu ZSA3CisKKy0gICBCQUlMX09VVCgpCistICAgQkFJTF9PVVQoZm10LCAuLi4pCisKKyAgICBJ bW1lZGlhdGVseSBzdG9wcyBhbGwgdGVzdGluZy4KKworICAgICAgICBCQUlMX09VVCgiQ2Fu J3QgZ28gbm8gZnVydGhlciIpOworCisgICAgcHJpbnRzCisKKyAgICAgICAgQmFpbCBvdXQh ICBDYW4ndCBnbyBubyBmdXJ0aGVyCisKKyAgICBhbmQgZXhpdHMgd2l0aCAyNTUuCisKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L2xpYnRhcC90YXAuYyBiL3NyYy90ZXN0L2xpYnRhcC90YXAu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTA2ZTQwMDAxNTYK LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9saWJ0YXAvdGFwLmMKQEAgLTAsMCArMSw0 MjEgQEAKKy8qCitsaWJ0YXAgLSBXcml0ZSB0ZXN0cyBpbiBDCitDb3B5cmlnaHQgMjAxMiBK YWtlIEdlbGJtYW4gPGdlbGJtYW5AZ21haWwuY29tPgorVGhpcyBmaWxlIGlzIGxpY2Vuc2Vk IHVuZGVyIHRoZSBMR1BMCisqLworCisjZGVmaW5lIF9ERUZBVUxUX1NPVVJDRSAxCisKKyNp bmNsdWRlIDxzdGRhcmcuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxp Yi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorCisjaW5jbHVkZSAidGFwLmgiCisKKyNpZm5k ZWYgX1dJTjMyCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3BhcmFt Lmg+CisjaW5jbHVkZSA8c3lzL21tYW4uaD4KKworI2luY2x1ZGUgPHJlZ2V4Lmg+CisKKyNp Zm5kZWYgTUFQX0FOT05ZTU9VUworI2lmZGVmIE1BUF9BTk9OCisjZGVmaW5lIE1BUF9BTk9O WU1PVVMgTUFQX0FOT04KKyNlbHNlCisjZXJyb3IgIlN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0 IG1hcHBpbmcgYW5vbnltb3VzIHBhZ2VzIgorI2VuZGlmCisjZW5kaWYKKyNlbmRpZgorCisj aWYgZGVmaW5lZChfX0dOVUNfXykgfHwgZGVmaW5lZChfX2NsYW5nX18pCisjZGVmaW5lIFBS SU5URl9BVFRSKGZtdGFyZywgZmlyc3R2YXJhcmcpIF9fYXR0cmlidXRlX18oKGZvcm1hdChw cmludGYsIGZtdGFyZywgZmlyc3R2YXJhcmcpKSkKKyNlbHNlCisjZGVmaW5lIFBSSU5URl9B VFRSKGZtdGFyZywgZmlyc3R2YXJhcmcpCisjZW5kaWYKKworc3RhdGljIGludCBleHBlY3Rl ZF90ZXN0cyA9IE5PX1BMQU47CitzdGF0aWMgaW50IGZhaWxlZF90ZXN0czsKK3N0YXRpYyBp bnQgY3VycmVudF90ZXN0Oworc3RhdGljIGNoYXIgKnRvZG9fbWVzZzsKKworc3RhdGljIGNo YXIgKnZzdHJkdXBmKGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCBhcmdzKSBQUklOVEZfQVRU UigxLDApOworCit2b2lkIHRhcF9wbGFuKGludCB0ZXN0cywgY29uc3QgY2hhciAqZm10LCAu Li4pIFBSSU5URl9BVFRSKDIsIDMpOworCitpbnQgdm9rX2F0X2xvYyhjb25zdCBjaGFyICpm aWxlLCBpbnQgbGluZSwgaW50IHRlc3QsIGNvbnN0IGNoYXIgKmZtdCwKKwkJCSAgIHZhX2xp c3QgYXJncykgUFJJTlRGX0FUVFIoNCwwKTsKKworaW50IG9rX2F0X2xvYyhjb25zdCBjaGFy ICpmaWxlLCBpbnQgbGluZSwgaW50IHRlc3QsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQorCVBS SU5URl9BVFRSKDQsIDUpOworCitpbnQgaXNfYXRfbG9jKGNvbnN0IGNoYXIgKmZpbGUsIGlu dCBsaW5lLCBjb25zdCBjaGFyICpnb3QsIGNvbnN0IGNoYXIgKmV4cGVjdGVkLAorCQkJICBj b25zdCBjaGFyICpmbXQsIC4uLikgUFJJTlRGX0FUVFIoNSwgNik7CisKK2ludCBpc250X2F0 X2xvYyhjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciAqZ290LAorCQkJ CWNvbnN0IGNoYXIgKmV4cGVjdGVkLCBjb25zdCBjaGFyICpmbXQsIC4uLikKKwlQUklOVEZf QVRUUig1LCA2KTsKKworaW50IGNtcF9va19hdF9sb2MoY29uc3QgY2hhciAqZmlsZSwgaW50 IGxpbmUsIGludCBhLCBjb25zdCBjaGFyICpvcCwgaW50IGIsCisJCQkJICBjb25zdCBjaGFy ICpmbXQsIC4uLikKKwlQUklOVEZfQVRUUig2LCA3KTsKKworaW50IGNtcF9tZW1fYXRfbG9j KGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBjb25zdCB2b2lkICpnb3QsCisJCQkJICAg Y29uc3Qgdm9pZCAqZXhwZWN0ZWQsIHNpemVfdCBuLCBjb25zdCBjaGFyICpmbXQsIC4uLikK KwlQUklOVEZfQVRUUig2LCA3KTsKKworaW50IGRpYWcoY29uc3QgY2hhciAqZm10LCAuLi4p IFBSSU5URl9BVFRSKDEsIDIpOworCitpbnQgYmFpbF9vdXQoaW50IGlnbm9yZSwgY29uc3Qg Y2hhciAqZm10LCAuLi4pCisJUFJJTlRGX0FUVFIoMiwgMyk7CisKK3ZvaWQgdGFwX3NraXAo aW50IG4sIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQorCVBSSU5URl9BVFRSKDIsIDMpOworCit2 b2lkIHRhcF90b2RvKGludCBpZ25vcmUsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQorCVBSSU5U Rl9BVFRSKDIsIDMpOworCitpbnQgbGlrZV9hdF9sb2MoaW50IGZvcl9tYXRjaCwgY29uc3Qg Y2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKmdvdCwKKwkJCQljb25zdCBjaGFy ICpleHBlY3RlZCwgY29uc3QgY2hhciAqZm10LCAuLi4pCisJUFJJTlRGX0FUVFIoNiwgNyk7 CisKK3N0YXRpYyBjaGFyICoKK3ZzdHJkdXBmKGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCBh cmdzKQoreworCWNoYXIgKnN0cjsKKwlpbnQgc2l6ZTsKKwl2YV9saXN0IGFyZ3MyOworCXZh X2NvcHkoYXJnczIsIGFyZ3MpOworCWlmICghZm10KQorCQlmbXQgPSAiIjsKKwlzaXplID0g dnNucHJpbnRmKE5VTEwsIDAsIGZtdCwgYXJnczIpICsgMjsKKwlzdHIgPSBtYWxsb2Moc2l6 ZSk7CisJaWYgKCFzdHIpIHsKKwkJcGVycm9yKCJtYWxsb2MgZXJyb3IiKTsKKwkJZXhpdCgx KTsKKwl9CisJdnNwcmludGYoc3RyLCBmbXQsIGFyZ3MpOworCXZhX2VuZChhcmdzMik7CisJ cmV0dXJuIHN0cjsKK30KKwordm9pZAordGFwX3BsYW4oaW50IHRlc3RzLCBjb25zdCBjaGFy ICpmbXQsIC4uLikKK3sKKwlleHBlY3RlZF90ZXN0cyA9IHRlc3RzOworCWlmICh0ZXN0cyA9 PSBTS0lQX0FMTCkgeworCQljaGFyICp3aHk7CisJCXZhX2xpc3QgYXJnczsKKwkJdmFfc3Rh cnQoYXJncywgZm10KTsKKwkJd2h5ID0gdnN0cmR1cGYoZm10LCBhcmdzKTsKKwkJdmFfZW5k KGFyZ3MpOworCQlwcmludGYoIjEuLjAgIik7CisJCWRpYWcoIlNLSVAgJXNcbiIsIHdoeSk7 CisJCWV4aXQoMCk7CisJfQorCWlmICh0ZXN0cyAhPSBOT19QTEFOKSB7CisJCXByaW50Zigi MS4uJWRcbiIsIHRlc3RzKTsKKwl9Cit9CisKK2ludAordm9rX2F0X2xvYyhjb25zdCBjaGFy ICpmaWxlLCBpbnQgbGluZSwgaW50IHRlc3QsIGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCBh cmdzKQoreworCWNoYXIgKm5hbWUgPSB2c3RyZHVwZihmbXQsIGFyZ3MpOworCWlmICghdGVz dCkgeworCQlwcmludGYoIm5vdCAiKTsKKwl9CisJcHJpbnRmKCJvayAlZCIsICsrY3VycmVu dF90ZXN0KTsKKwlpZiAoKm5hbWUpCisJCXByaW50ZigiIC0gJXMiLCBuYW1lKTsKKwlpZiAo dG9kb19tZXNnKSB7CisJCXByaW50ZigiICMgVE9ETyIpOworCQlpZiAoKnRvZG9fbWVzZykK KwkJCXByaW50ZigiICVzIiwgdG9kb19tZXNnKTsKKwl9CisJcHJpbnRmKCJcbiIpOworCWlm ICghdGVzdCkgeworCQlwcmludGYoIiMgICBGYWlsZWQgIik7CisJCWlmICh0b2RvX21lc2cp CisJCQlwcmludGYoIihUT0RPKSAiKTsKKwkJcHJpbnRmKCJ0ZXN0ICIpOworCQlpZiAoKm5h bWUpCisJCQlwcmludGYoIiclcydcbiMgICAiLCBuYW1lKTsKKwkJcHJpbnRmKCJhdCAlcyBs aW5lICVkLlxuIiwgZmlsZSwgbGluZSk7CisJCWlmICghdG9kb19tZXNnKQorCQkJZmFpbGVk X3Rlc3RzKys7CisJfQorCWZyZWUobmFtZSk7CisJcmV0dXJuIHRlc3Q7Cit9CisKK2ludAor b2tfYXRfbG9jKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBpbnQgdGVzdCwgY29uc3Qg Y2hhciAqZm10LCAuLi4pCit7CisJdmFfbGlzdCBhcmdzOworCXZhX3N0YXJ0KGFyZ3MsIGZt dCk7CisJdm9rX2F0X2xvYyhmaWxlLCBsaW5lLCB0ZXN0LCBmbXQsIGFyZ3MpOworCXZhX2Vu ZChhcmdzKTsKKwlyZXR1cm4gdGVzdDsKK30KKworc3RhdGljIGludAorbXlzdHJjbXAoY29u c3QgY2hhciAqYSwgY29uc3QgY2hhciAqYikKK3sKKwlyZXR1cm4gYSA9PSBiID8gMCA6ICFh ID8gLTEgOiAhYiA/IDEgOiBzdHJjbXAoYSwgYik7Cit9CisKKyNkZWZpbmUgZXEoYSwgYikg KCFteXN0cmNtcChhLCBiKSkKKyNkZWZpbmUgbmUoYSwgYikgKG15c3RyY21wKGEsIGIpKQor CitpbnQKK2lzX2F0X2xvYyhjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hh ciAqZ290LCBjb25zdCBjaGFyICpleHBlY3RlZCwKKwkJICBjb25zdCBjaGFyICpmbXQsIC4u LikKK3sKKwlpbnQgdGVzdCA9IGVxKGdvdCwgZXhwZWN0ZWQpOworCXZhX2xpc3QgYXJnczsK Kwl2YV9zdGFydChhcmdzLCBmbXQpOworCXZva19hdF9sb2MoZmlsZSwgbGluZSwgdGVzdCwg Zm10LCBhcmdzKTsKKwl2YV9lbmQoYXJncyk7CisJaWYgKCF0ZXN0KSB7CisJCWRpYWcoIiAg ICAgICAgIGdvdDogJyVzJyIsIGdvdCk7CisJCWRpYWcoIiAgICBleHBlY3RlZDogJyVzJyIs IGV4cGVjdGVkKTsKKwl9CisJcmV0dXJuIHRlc3Q7Cit9CisKK2ludAoraXNudF9hdF9sb2Mo Y29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKmdvdCwgY29uc3QgY2hh ciAqZXhwZWN0ZWQsCisJCQljb25zdCBjaGFyICpmbXQsIC4uLikKK3sKKwlpbnQgdGVzdCA9 IG5lKGdvdCwgZXhwZWN0ZWQpOworCXZhX2xpc3QgYXJnczsKKwl2YV9zdGFydChhcmdzLCBm bXQpOworCXZva19hdF9sb2MoZmlsZSwgbGluZSwgdGVzdCwgZm10LCBhcmdzKTsKKwl2YV9l bmQoYXJncyk7CisJaWYgKCF0ZXN0KSB7CisJCWRpYWcoIiAgICAgICAgIGdvdDogJyVzJyIs IGdvdCk7CisJCWRpYWcoIiAgICBleHBlY3RlZDogYW55dGhpbmcgZWxzZSIpOworCX0KKwly ZXR1cm4gdGVzdDsKK30KKworaW50CitjbXBfb2tfYXRfbG9jKGNvbnN0IGNoYXIgKmZpbGUs IGludCBsaW5lLCBpbnQgYSwgY29uc3QgY2hhciAqb3AsIGludCBiLAorCQkJICBjb25zdCBj aGFyICpmbXQsIC4uLikKK3sKKwlpbnQgdGVzdCA9IGVxKG9wLCAifHwiKSA/IGEgfHwgYiA6 CisJCWVxKG9wLCAiJiYiKQkJPyBhICYmIGIgOgorCQllcShvcCwgInwiKQkJCT8gYSB8IGIg OgorCQllcShvcCwgIl4iKQkJCT8gYSBeIGIgOgorCQllcShvcCwgIiYiKQkJCT8gYSAmIGIg OgorCQllcShvcCwgIj09IikJCT8gYSA9PSBiIDoKKwkJZXEob3AsICIhPSIpCQk/IGEgIT0g YiA6CisJCWVxKG9wLCAiPCIpCQkJPyBhIDwgYiA6CisJCWVxKG9wLCAiPiIpCQkJPyBhID4g YiA6CisJCWVxKG9wLCAiPD0iKQkJPyBhIDw9IGIgOgorCQllcShvcCwgIj49IikJCT8gYSA+ PSBiIDoKKwkJZXEob3AsICI8PCIpCQk/IGEgPDwgYiA6CisJCWVxKG9wLCAiPj4iKQkJPyBh ID4+IGIgOgorCQllcShvcCwgIisiKQkJCT8gYSArIGIgOgorCQllcShvcCwgIi0iKQkJCT8g YSAtIGIgOgorCQllcShvcCwgIioiKQkJCT8gYSAqIGIgOgorCQllcShvcCwgIi8iKQkJCT8g YSAvIGIgOgorCQllcShvcCwgIiUiKQkJCT8gYSAlIGIgOgorCQkJCQkJCSAgZGlhZygidW5y ZWNvZ25pemVkIG9wZXJhdG9yICclcyciLCBvcCk7CisJdmFfbGlzdCBhcmdzOworCXZhX3N0 YXJ0KGFyZ3MsIGZtdCk7CisJdm9rX2F0X2xvYyhmaWxlLCBsaW5lLCB0ZXN0LCBmbXQsIGFy Z3MpOworCXZhX2VuZChhcmdzKTsKKwlpZiAoIXRlc3QpIHsKKwkJZGlhZygiICAgICVkIiwg YSk7CisJCWRpYWcoIiAgICAgICAgJXMiLCBvcCk7CisJCWRpYWcoIiAgICAlZCIsIGIpOwor CX0KKwlyZXR1cm4gdGVzdDsKK30KKworc3RhdGljIGludAorZmluZF9tZW1fZGlmZihjb25z dCBjaGFyICphLCBjb25zdCBjaGFyICpiLCBzaXplX3Qgbiwgc2l6ZV90ICpvZmZzZXQpCit7 CisJc2l6ZV90IGk7CisJaWYgKGEgPT0gYikKKwkJcmV0dXJuIDA7CisJaWYgKCFhIHx8ICFi KQorCQlyZXR1cm4gMjsKKwlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisJCWlmIChhW2ld ICE9IGJbaV0pIHsKKwkJCSpvZmZzZXQgPSBpOworCQkJcmV0dXJuIDE7CisJCX0KKwl9CisJ cmV0dXJuIDA7Cit9CisKK2ludAorY21wX21lbV9hdF9sb2MoY29uc3QgY2hhciAqZmlsZSwg aW50IGxpbmUsIGNvbnN0IHZvaWQgKmdvdCwKKwkJCSAgIGNvbnN0IHZvaWQgKmV4cGVjdGVk LCBzaXplX3QgbiwgY29uc3QgY2hhciAqZm10LCAuLi4pCit7CisJc2l6ZV90IG9mZnNldDsK KwlpbnQgZGlmZiA9IGZpbmRfbWVtX2RpZmYoZ290LCBleHBlY3RlZCwgbiwgJm9mZnNldCk7 CisJdmFfbGlzdCBhcmdzOworCXZhX3N0YXJ0KGFyZ3MsIGZtdCk7CisJdm9rX2F0X2xvYyhm aWxlLCBsaW5lLCAhZGlmZiwgZm10LCBhcmdzKTsKKwl2YV9lbmQoYXJncyk7CisJaWYgKGRp ZmYgPT0gMSkgeworCQlkaWFnKCIgICAgRGlmZmVyZW5jZSBzdGFydHMgYXQgb2Zmc2V0ICVs dSIsIG9mZnNldCk7CisJCWRpYWcoIiAgICAgICAgIGdvdDogMHglMDJ4IiwgKChjb25zdCB1 bnNpZ25lZCBjaGFyICopZ290KVtvZmZzZXRdKTsKKwkJZGlhZygiICAgIGV4cGVjdGVkOiAw eCUwMngiLCAoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilleHBlY3RlZClbb2Zmc2V0XSk7CisJ fSBlbHNlIGlmIChkaWZmID09IDIpIHsKKwkJZGlhZygiICAgICAgICAgZ290OiAlcyIsIGdv dCA/ICJub3QgTlVMTCIgOiAiTlVMTCIpOworCQlkaWFnKCIgICAgZXhwZWN0ZWQ6ICVzIiwg ZXhwZWN0ZWQgPyAibm90IE5VTEwiIDogIk5VTEwiKTsKKwl9CisJcmV0dXJuICFkaWZmOwor fQorCitpbnQKK2RpYWcoY29uc3QgY2hhciAqZm10LCAuLi4pCit7CisJdmFfbGlzdCBhcmdz OworCWNoYXIgKm1lc2csICpsaW5lOworCWludCBpOworCXZhX3N0YXJ0KGFyZ3MsIGZtdCk7 CisJaWYgKCFmbXQpIHsKKwkJdmFfZW5kKGFyZ3MpOworCQlyZXR1cm4gMDsKKwl9CisJbWVz ZyA9IHZzdHJkdXBmKGZtdCwgYXJncyk7CisJbGluZSA9IG1lc2c7CisJZm9yIChpID0gMDsg KmxpbmU7IGkrKykgeworCQljaGFyIGMgPSBtZXNnW2ldOworCQlpZiAoIWMgfHwgYyA9PSAn XG4nKSB7CisJCQltZXNnW2ldID0gJ1wwJzsKKwkJCXByaW50ZigiIyAlc1xuIiwgbGluZSk7 CisJCQlpZiAoIWMpCisJCQkJYnJlYWs7CisJCQltZXNnW2ldID0gYzsKKwkJCWxpbmUgPSBt ZXNnICsgaSArIDE7CisJCX0KKwl9CisJZnJlZShtZXNnKTsKKwl2YV9lbmQoYXJncyk7CisJ cmV0dXJuIDA7Cit9CisKK2ludAorZXhpdF9zdGF0dXModm9pZCkKK3sKKwlpbnQgcmV0dmFs ID0gMDsKKwlpZiAoZXhwZWN0ZWRfdGVzdHMgPT0gTk9fUExBTikgeworCQlwcmludGYoIjEu LiVkXG4iLCBjdXJyZW50X3Rlc3QpOworCX0gZWxzZSBpZiAoY3VycmVudF90ZXN0ICE9IGV4 cGVjdGVkX3Rlc3RzKSB7CisJCWRpYWcoIkxvb2tzIGxpa2UgeW91IHBsYW5uZWQgJWQgdGVz dCVzIGJ1dCByYW4gJWQuIiwgZXhwZWN0ZWRfdGVzdHMsCisJCQkgZXhwZWN0ZWRfdGVzdHMg PiAxID8gInMiIDogIiIsIGN1cnJlbnRfdGVzdCk7CisJCXJldHZhbCA9IDI7CisJfQorCWlm IChmYWlsZWRfdGVzdHMpIHsKKwkJZGlhZygiTG9va3MgbGlrZSB5b3UgZmFpbGVkICVkIHRl c3QlcyBvZiAlZCBydW4uIiwgZmFpbGVkX3Rlc3RzLAorCQkJIGZhaWxlZF90ZXN0cyA+IDEg PyAicyIgOiAiIiwgY3VycmVudF90ZXN0KTsKKwkJcmV0dmFsID0gMTsKKwl9CisJcmV0dXJu IHJldHZhbDsKK30KKworaW50CitiYWlsX291dChpbnQgaWdub3JlLCBjb25zdCBjaGFyICpm bXQsIC4uLikKK3sKKwl2YV9saXN0IGFyZ3M7CisJKHZvaWQpaWdub3JlOworCXZhX3N0YXJ0 KGFyZ3MsIGZtdCk7CisJcHJpbnRmKCJCYWlsIG91dCEgICIpOworCXZwcmludGYoZm10LCBh cmdzKTsKKwlwcmludGYoIlxuIik7CisJdmFfZW5kKGFyZ3MpOworCWV4aXQoMjU1KTsKKwly ZXR1cm4gMDsKK30KKwordm9pZAordGFwX3NraXAoaW50IG4sIGNvbnN0IGNoYXIgKmZtdCwg Li4uKQoreworCWNoYXIgKndoeTsKKwl2YV9saXN0IGFyZ3M7CisJdmFfc3RhcnQoYXJncywg Zm10KTsKKwl3aHkgPSB2c3RyZHVwZihmbXQsIGFyZ3MpOworCXZhX2VuZChhcmdzKTsKKwl3 aGlsZSAobi0tID4gMCkgeworCQlwcmludGYoIm9rICVkICIsICsrY3VycmVudF90ZXN0KTsK KwkJZGlhZygic2tpcCAlc1xuIiwgd2h5KTsKKwl9CisJZnJlZSh3aHkpOworfQorCit2b2lk Cit0YXBfdG9kbyhpbnQgaWdub3JlLCBjb25zdCBjaGFyICpmbXQsIC4uLikKK3sKKwl2YV9s aXN0IGFyZ3M7CisJKHZvaWQpaWdub3JlOworCXZhX3N0YXJ0KGFyZ3MsIGZtdCk7CisJdG9k b19tZXNnID0gdnN0cmR1cGYoZm10LCBhcmdzKTsKKwl2YV9lbmQoYXJncyk7Cit9CisKK3Zv aWQKK3RhcF9lbmRfdG9kbyh2b2lkKQoreworCWZyZWUodG9kb19tZXNnKTsKKwl0b2RvX21l c2cgPSBOVUxMOworfQorCisjaWZuZGVmIF9XSU4zMgorLyogQ3JlYXRlIGEgc2hhcmVkIG1l bW9yeSBpbnQgdG8ga2VlcCB0cmFjayBvZiB3aGV0aGVyIGEgcGllY2Ugb2YgY29kZSBleGVj dXRlZAorZGllcy4gdG8gYmUgdXNlZCBpbiB0aGUgZGllc19vayBhbmQgbGl2ZXNfb2sgbWFj cm9zLiAgKi8KK2ludAordGFwX3Rlc3RfZGllZChpbnQgc3RhdHVzKQoreworCXN0YXRpYyBp bnQgKnRlc3RfZGllZCA9IE5VTEw7CisJaW50IHByZXY7CisJaWYgKCF0ZXN0X2RpZWQpIHsK KwkJdGVzdF9kaWVkID0gbW1hcCgwLCBzaXplb2YoaW50KSwgUFJPVF9SRUFEIHwgUFJPVF9X UklURSwKKwkJCQkJCSBNQVBfU0hBUkVEIHwgTUFQX0FOT05ZTU9VUywgLTEsIDApOworCQkq dGVzdF9kaWVkID0gMDsKKwl9CisJcHJldiA9ICp0ZXN0X2RpZWQ7CisJKnRlc3RfZGllZCA9 IHN0YXR1czsKKwlyZXR1cm4gcHJldjsKK30KKworaW50CitsaWtlX2F0X2xvYyhpbnQgZm9y X21hdGNoLCBjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciAqZ290LAor CQkJY29uc3QgY2hhciAqZXhwZWN0ZWQsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQoreworCWlu dCB0ZXN0OworCXJlZ2V4X3QgcmU7CisJdmFfbGlzdCBhcmdzOworCWludCBlcnIgPSByZWdj b21wKCZyZSwgZXhwZWN0ZWQsIFJFR19FWFRFTkRFRCk7CisJaWYgKGVycikgeworCQljaGFy IGVycmJ1ZlsyNTZdOworCQlyZWdlcnJvcihlcnIsICZyZSwgZXJyYnVmLCBzaXplb2YgZXJy YnVmKTsKKwkJZnByaW50ZihzdGRlcnIsICJVbmFibGUgdG8gY29tcGlsZSByZWdleCAnJXMn OiAlcyBhdCAlcyBsaW5lICVkXG4iLAorCQkJCWV4cGVjdGVkLCBlcnJidWYsIGZpbGUsIGxp bmUpOworCQlleGl0KDI1NSk7CisJfQorCWVyciA9IHJlZ2V4ZWMoJnJlLCBnb3QsIDAsIE5V TEwsIDApOworCXJlZ2ZyZWUoJnJlKTsKKwl0ZXN0ID0gZm9yX21hdGNoID8gIWVyciA6IGVy cjsKKwl2YV9zdGFydChhcmdzLCBmbXQpOworCXZva19hdF9sb2MoZmlsZSwgbGluZSwgdGVz dCwgZm10LCBhcmdzKTsKKwl2YV9lbmQoYXJncyk7CisJaWYgKCF0ZXN0KSB7CisJCWlmIChm b3JfbWF0Y2gpIHsKKwkJCWRpYWcoIiAgICAgICAgICAgICAgICAgICAnJXMnIiwgZ290KTsK KwkJCWRpYWcoIiAgICBkb2Vzbid0IG1hdGNoOiAnJXMnIiwgZXhwZWN0ZWQpOworCQl9IGVs c2UgeworCQkJZGlhZygiICAgICAgICAgICAgICAgICAgICclcyciLCBnb3QpOworCQkJZGlh ZygiICAgICAgICAgIG1hdGNoZXM6ICclcyciLCBleHBlY3RlZCk7CisJCX0KKwl9CisJcmV0 dXJuIHRlc3Q7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2xpYnRhcC90YXAu aCBiL3NyYy90ZXN0L2xpYnRhcC90YXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uZTM2NmE2YWZmZGMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9s aWJ0YXAvdGFwLmgKQEAgLTAsMCArMSwxMTUgQEAKKy8qCitsaWJ0YXAgLSBXcml0ZSB0ZXN0 cyBpbiBDCitDb3B5cmlnaHQgMjAxMiBKYWtlIEdlbGJtYW4gPGdlbGJtYW5AZ21haWwuY29t PgorVGhpcyBmaWxlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBMR1BMCisqLworCisjaWZuZGVm IF9fVEFQX0hfXworI2RlZmluZSBfX1RBUF9IX18KKworI2lmZGVmIF9fY3BsdXNwbHVzCitl eHRlcm4gIkMiIHsKKyNlbmRpZgorCisjaWZuZGVmIHZhX2NvcHkKKyNpZmRlZiBfX3ZhX2Nv cHkKKyNkZWZpbmUgdmFfY29weSBfX3ZhX2NvcHkKKyNlbHNlCisjZGVmaW5lIHZhX2NvcHko ZCwgcykgKChkKSA9IChzKSkKKyNlbmRpZgorI2VuZGlmCisKKyNpbmNsdWRlIDxzdGRpby5o PgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGFyZy5oPgorCitpbnQgICAg IHZva19hdF9sb2MgICAgICAoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGludCB0ZXN0 LCBjb25zdCBjaGFyICpmbXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgdmFfbGlzdCBh cmdzKTsKK2ludCAgICAgb2tfYXRfbG9jICAgICAgIChjb25zdCBjaGFyICpmaWxlLCBpbnQg bGluZSwgaW50IHRlc3QsIGNvbnN0IGNoYXIgKmZtdCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAuLi4pOworaW50ICAgICBpc19hdF9sb2MgICAgICAgKGNvbnN0IGNoYXIgKmZpbGUs IGludCBsaW5lLCBjb25zdCBjaGFyICpnb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgY2hhciAqZXhwZWN0ZWQsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKK2ludCAgICAg aXNudF9hdF9sb2MgICAgIChjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hh ciAqZ290LAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmV4cGVjdGVk LCBjb25zdCBjaGFyICpmbXQsIC4uLik7CitpbnQgICAgIGNtcF9va19hdF9sb2MgICAoY29u c3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGludCBhLCBjb25zdCBjaGFyICpvcCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQgYiwgY29uc3QgY2hhciAqZm10LCAuLi4pOworaW50 ICAgICBjbXBfbWVtX2F0X2xvYyAgKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBjb25z dCB2b2lkICpnb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqZXhw ZWN0ZWQsIHNpemVfdCBuLCBjb25zdCBjaGFyICpmbXQsIC4uLik7CitpbnQgICAgIGJhaWxf b3V0ICAgICAgICAoaW50IGlnbm9yZSwgY29uc3QgY2hhciAqZm10LCAuLi4pOwordm9pZCAg ICB0YXBfcGxhbiAgICAgICAgKGludCB0ZXN0cywgY29uc3QgY2hhciAqZm10LCAuLi4pOwor aW50ICAgICBkaWFnICAgICAgICAgICAgKGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKK2ludCAg ICAgZXhpdF9zdGF0dXMgICAgICh2b2lkKTsKK3ZvaWQgICAgdGFwX3NraXAgICAgICAgIChp bnQgbiwgY29uc3QgY2hhciAqZm10LCAuLi4pOwordm9pZCAgICB0YXBfdG9kbyAgICAgICAg KGludCBpZ25vcmUsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKK3ZvaWQgICAgdGFwX2VuZF90 b2RvICAgICh2b2lkKTsKKworI2RlZmluZSBOT19QTEFOICAgICAgICAgIC0xCisjZGVmaW5l IFNLSVBfQUxMICAgICAgICAgLTIKKyNkZWZpbmUgb2soLi4uKSAgICAgICAgICBva19hdF9s b2MoX19GSUxFX18sIF9fTElORV9fLCBfX1ZBX0FSR1NfXywgTlVMTCkKKyNkZWZpbmUgaXMo Li4uKSAgICAgICAgICBpc19hdF9sb2MoX19GSUxFX18sIF9fTElORV9fLCBfX1ZBX0FSR1Nf XywgTlVMTCkKKyNkZWZpbmUgaXNudCguLi4pICAgICAgICBpc250X2F0X2xvYyhfX0ZJTEVf XywgX19MSU5FX18sIF9fVkFfQVJHU19fLCBOVUxMKQorI2RlZmluZSBjbXBfb2soLi4uKSAg ICAgIGNtcF9va19hdF9sb2MoX19GSUxFX18sIF9fTElORV9fLCBfX1ZBX0FSR1NfXywgTlVM TCkKKyNkZWZpbmUgY21wX21lbSguLi4pICAgICBjbXBfbWVtX2F0X2xvYyhfX0ZJTEVfXywg X19MSU5FX18sIF9fVkFfQVJHU19fLCBOVUxMKQorI2RlZmluZSBwbGFuKC4uLikgICAgICAg IHRhcF9wbGFuKF9fVkFfQVJHU19fLCBOVUxMKQorI2RlZmluZSBkb25lX3Rlc3RpbmcoKSAg IHJldHVybiBleGl0X3N0YXR1cygpCisjZGVmaW5lIEJBSUxfT1VUKC4uLikgICAgYmFpbF9v dXQoMCwgIiIgX19WQV9BUkdTX18sIE5VTEwpCisjZGVmaW5lIHBhc3MoLi4uKSAgICAgICAg b2soMSwgIiIgX19WQV9BUkdTX18pCisjZGVmaW5lIGZhaWwoLi4uKSAgICAgICAgb2soMCwg IiIgX19WQV9BUkdTX18pCisKKyNkZWZpbmUgc2tpcCh0ZXN0LCAuLi4pICBkbyB7aWYgKHRl c3QpIHt0YXBfc2tpcChfX1ZBX0FSR1NfXywgTlVMTCk7IGJyZWFrO30KKyNkZWZpbmUgZW5k X3NraXAgICAgICAgICB9IHdoaWxlICgwKQorCisjZGVmaW5lIHRvZG8oLi4uKSAgICAgICAg dGFwX3RvZG8oMCwgIiIgX19WQV9BUkdTX18sIE5VTEwpCisjZGVmaW5lIGVuZF90b2RvICAg ICAgICAgdGFwX2VuZF90b2RvKCkKKworI2RlZmluZSBkaWVzX29rKC4uLikgICAgIGRpZXNf b2tfY29tbW9uKDEsIF9fVkFfQVJHU19fKQorI2RlZmluZSBsaXZlc19vayguLi4pICAgIGRp ZXNfb2tfY29tbW9uKDAsIF9fVkFfQVJHU19fKQorCisjaWZkZWYgX1dJTjMyCisjZGVmaW5l IGxpa2UoLi4uKSAgICAgICAgdGFwX3NraXAoMSwgImxpa2UgaXMgbm90IGltcGxlbWVudGVk IG9uIFdpbmRvd3MiKQorI2RlZmluZSB1bmxpa2UoLi4uKSAgICAgIHRhcF9za2lwKDEsICJ1 bmxpa2UgaXMgbm90IGltcGxlbWVudGVkIG9uIFdpbmRvd3MiKQorI2RlZmluZSBkaWVzX29r X2NvbW1vbiguLi4pIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0YXBfc2tpcCgxLCAi RGVhdGggZGV0ZWN0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgb24gV2luZG93cyIpCisjZWxzZQor I2RlZmluZSBsaWtlKC4uLikgICAgICAgIGxpa2VfYXRfbG9jKDEsIF9fRklMRV9fLCBfX0xJ TkVfXywgX19WQV9BUkdTX18sIE5VTEwpCisjZGVmaW5lIHVubGlrZSguLi4pICAgICAgbGlr ZV9hdF9sb2MoMCwgX19GSUxFX18sIF9fTElORV9fLCBfX1ZBX0FSR1NfXywgTlVMTCkKK2lu dCAgICAgbGlrZV9hdF9sb2MgICAgIChpbnQgZm9yX21hdGNoLCBjb25zdCBjaGFyICpmaWxl LCBpbnQgbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpnb3Qs IGNvbnN0IGNoYXIgKmV4cGVjdGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IGNoYXIgKmZtdCwgLi4uKTsKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzeXMv dHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvd2FpdC5oPgoraW50IHRhcF90ZXN0X2RpZWQgKGlu dCBzdGF0dXMpOworI2RlZmluZSBkaWVzX29rX2NvbW1vbihmb3JfZGVhdGgsIGNvZGUsIC4u LikgICAgICAgICAgICAgICAgXAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpbnQgY3BpZDsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpbnQgaXRf ZGllZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg ICB0YXBfdGVzdF9kaWVkKDEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAorICAgICAgICBjcGlkID0gZm9yaygpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAorICAgICAgICBzd2l0Y2ggKGNwaWQpIHsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBjYXNlIC0xOiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcGVycm9yKCJmb3Jr IGVycm9yIik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgZXhp dCgxKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg ICBjYXNlIDA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAorICAgICAgICAgICAgY2xvc2UoMSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAorICAgICAgICAgICAgY2xvc2UoMik7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgY29kZSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgdGFwX3Rlc3RfZGll ZCgwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgZXhp dCgwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg ICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAorICAgICAgICBpZiAod2FpdHBpZChjcGlkLCBOVUxMLCAwKSA8IDApIHsgICAgICAgICAg ICAgICAgICAgXAorICAgICAgICAgICAgcGVycm9yKCJ3YWl0cGlkIGVycm9yIik7ICAgICAg ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgZXhpdCgxKTsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpdF9kaWVk ID0gdGFwX3Rlc3RfZGllZCgwKTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg ICBpZiAoIWl0X2RpZWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAorICAgICAgICAgICAge2NvZGV9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAorICAgICAgICBvayhmb3JfZGVhdGggPyBpdF9kaWVkIDogIWl0X2RpZWQs ICIiIF9fVkFfQVJHU19fKTsgXAorICAgIH0gd2hpbGUgKDApCisjZW5kaWYKKworI2lmZGVm IF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21lc29uLmJ1aWxkCmluZGV4IGNkNDVjYmY1N2Zi Li42NGZhNzUxYTVhNSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbWVzb24uYnVpbGQKKysrIGIv c3JjL3Rlc3QvbWVzb24uYnVpbGQKQEAgLTgsNiArOCw3IEBAIHN1YmRpcigncG9zdG1hc3Rl cicpCiBzdWJkaXIoJ3JlY292ZXJ5JykKIHN1YmRpcignc3Vic2NyaXB0aW9uJykKIHN1YmRp cignbW9kdWxlcycpCitzdWJkaXIoJ2Rmb3InKQogCiBpZiBzc2wuZm91bmQoKQogICBzdWJk aXIoJ3NzbCcpCi0tIAoyLjUzLjAKCg== --------------1IUaLyPVXDOy4S8HXjAMePOm Content-Type: text/x-patch; charset=UTF-8; name="v11-0003-Implement-Delta-Frame-of-Reference-compression.patch" Content-Disposition: attachment; filename*0="v11-0003-Implement-Delta-Frame-of-Reference-compression.patc"; filename*1="h" Content-Transfer-Encoding: base64 RnJvbSA2ODNlOTZjMTJjYmI1ZGNmOGQ5YmFhYTVlNWQ0NmVlYWI2Njc4MWQ5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFdmdlbnkgVm9yb3BhZXYgPGV2b3JvcEBnbWFpbC5j b20+CkRhdGU6IE1vbiwgMTMgQXByIDIwMjYgMjM6MTU6MzQgKzA4MDAKU3ViamVjdDogW1BB VENIIHYxMSAzLzVdIEltcGxlbWVudCBEZWx0YSBGcmFtZSBvZiBSZWZlcmVuY2UgY29tcHJl c3Npb24uCgpJbXBsZW1lbnQgdGhlIGNvbXByZXNzaW9uIGFsZ29yaXRobSBiYXNlZCBvbiB0 aGUgRGVsdGEgRnJhbWUgb2YKUmVmZXJlbmNlIHRlY2huaXF1ZSAoREZPUikuCgpUaGUgY3Vy cmVudCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgREZPUiBhbGdvcml0aG0gc3VwcG9ydHMgaXRl bXMgb2YKdW5zaWduZWQgaW50ZWdlciB0eXBlcy4gVGhlIHR5cGUgb2YgYW4gaXRlbSBpcyBk ZWZpbmVkIHdpdGggdGhlCml0ZW1fdCBtYWNyby4KClRoZSBjb21wcmVzc2VkIHBhY2sgY29t cHJpc2VzIHRocmVlIHBhcnRzOgogICAgLSBkZWx0YXM7CiAgICAtIGV4Y2VwdGlvbnMgcG9z aXRpb25zLgogICAgLSBleGNlcHRpb25zOwpFYWNoIG9mIHRoZW0gaXMgYSBkZW5zaWx5IGJp dC1wYWNrZWQgc2VxdWVuY2UuCgpUaGUgZGVsdGEgaXMgYSBkaWZmZXJlbmNlIGJldHdlZW4g dGhlIGN1cnJlbnQgaXRlbSBhbmQgdGhlIHByZXZpb3VzIG9uZS4gVGhlCmRlbHRhIG9mIHRo ZSBmaXJzdCBpdGVtICh0aGUgaXRlbSBoYXZpbmcgdGhlIHplcm8gaW5kZXgpIGlzIGl0cyBh Y3R1YWwgdmFsdWU6CmRlbHRhWzBdID0gbVswXS0wID0gbVswXS4gU2VyaWFsaXNlZCBkZWx0 YXMgaXMgYSBzZXF1ZW5jZSBvZiBiaXRzLiBFYWNoCnNlcmlhbGlzZWQgZGVsdGEgaW4gJ2Rl bHRhcycgaGFzIGEgZml4ZWQgYml0IHdpZHRoLiBJZiB0aGUgZGVsdGEncyB3aWR0aApleGNl ZWRzIHRoZSBhbGxvd2VkIHNpemUgb2YgYSBkZWx0YSBpbiAnZGVsdGFzJywgdGhlIGhpZ2hl ciBiaXRzIG9mIHRoaXMKZGVsdGEgaXMgcHV0IGludG8gZXhjZXB0aW9ucywgaXRzIHBvc2l0 aW9ucyBpcyBzYXZlZCBpbnRvIHRoZSAnZXhjZXB0b24KcG9zaXRpb25zJyBzZWN0aW9uLiBV c2FnZSBvZiBleGNlcHRpb25zIGNhbiBiZSBkZWxpYmVyYXRlbHkgdHVybmVkIG9mZi4KCkRG b1Igc3VwcG9ydHMgYm90aCBleHRlcm5hbCBtZW1vcnkgKG91dGVyIG1lbW9yeSkgcHJvdmlk ZWQgYnkgYSBjYWxsZXIKYW5kIGF1dG9tYXRpY2FsbHkgbWFuYWdlZCBtZW1vcnksIGFsbG9j YXRlZCBieSBtZWFucyBvZiBtYWxsb2MsIHBhbGxvYwpvciBzaW1pbGFyIGZ1bmN0aW9ucy4g TWVtb3J5IG1hbmFnZW1lbnQgY29uZmlndXJhdGlvbiBtdXN0IGJlIGRlZmluZWQKZHVyaW5n IGluaXRpYWxpemF0aW9uLiBBbGwgc3Vic2VxdWVudCBvcGVyYXRpb25zIGZvbGxvdyB0aGlz CmNvbmZpZ3VyYXRpb24uIEZvciBleGFtcGxlLCBhIGNhbGxlciBjYW4gcGxhY2UgYSBidWZm ZXIgb24gdGhlIHN0YWNrIHRvCmF2b2lkIGhlYXAgYWxsb2NhdGlvbiBhbmQgcGFzcyB0aGUg YnVmZmVyIHRvIGEgREZvUiB1bml0LiBBcyBhIHJlc3VsdCwKdGhlIHBhY2tpbmcgYW5kIHVu cGFja2luZyBwcm9jZXNzZXMgZXhjbHVkZSBkeW5hbWljIGFsbG9jYXRpb24uCgpUaGUgREZv UiB1bml0IGlzIGltcGxlbWVudGVkIGFzIGEgc2V0IG9mIHRlbXBsYXRlcy4gRGV2ZWxvcGVy cyBjYW4KZ2VuZXJhdGUgREZvUiBpbXBsZW1lbnRhdGlvbnMgZm9yIGFueSB1bnNpZ25lZCBp bnRlZ2VyIHR5cGUgKHVpbnQ4X3QsCnVpbnQxNl90LCB1aW50MzJfdCwgdWludDY0X3QpLiBU aGUgZGZvcl91MTYgdW5pdCBpcyBpbXBsZW1lbnRlZC4KCkF1dGhvcjogRXZnZW55IFZvcm9w YWV2IDxldmdlbnkudm9yb3BhZXZAdGFudG9ybGFicy5jb20+IDxldm9yb3BAZ21haWwuY29t PgpSZXZpZXdlZCBieTogQW5kcmV5IEJvcm9kaW4gPHg0bW1tQHlhbmRleC10ZWFtLnJ1Pgot LS0KIHNyYy9iYWNrZW5kL2xpYi9NYWtlZmlsZS5kZm9yICAgICAgIHwgICAxICsKIHNyYy9i YWNrZW5kL2xpYi9kZm9yX3RlbXBsLmMgICAgICAgIHwgNjMzICsrKysrKysrKysrKysrKysr KysrKysrKysrKysKIHNyYy9iYWNrZW5kL2xpYi9kZm9yX3UxNi5jICAgICAgICAgIHwgICA4 ICsKIHNyYy9iYWNrZW5kL2xpYi9tZXNvbi5idWlsZCAgICAgICAgIHwgICAxICsKIHNyYy9p bmNsdWRlL2xpYi9kZm9yX3RlbXBsLmggICAgICAgIHwgIDI3ICsrCiBzcmMvaW5jbHVkZS9s aWIvZGZvcl90ZW1wbF9zdGFwbGUuaCB8IDEyNSArKysrKysKIHNyYy9pbmNsdWRlL2xpYi9k Zm9yX3RlbXBsX3VuZGVmLmggIHwgIDI5ICsrCiBzcmMvaW5jbHVkZS9saWIvZGZvcl91MTYu aCAgICAgICAgICB8ICAxMyArCiBzcmMvaW5jbHVkZS9saWIvZGZvcl91MTZfY29uZmlnLmgg ICB8ICAgNCArCiA5IGZpbGVzIGNoYW5nZWQsIDg0MSBpbnNlcnRpb25zKCspCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvbGliL2Rmb3JfdGVtcGwuYwogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy9iYWNrZW5kL2xpYi9kZm9yX3UxNi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL2luY2x1ZGUvbGliL2Rmb3JfdGVtcGwuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9p bmNsdWRlL2xpYi9kZm9yX3RlbXBsX3N0YXBsZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L2luY2x1ZGUvbGliL2Rmb3JfdGVtcGxfdW5kZWYuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy9pbmNsdWRlL2xpYi9kZm9yX3UxNi5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2luY2x1 ZGUvbGliL2Rmb3JfdTE2X2NvbmZpZy5oCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbGli L01ha2VmaWxlLmRmb3IgYi9zcmMvYmFja2VuZC9saWIvTWFrZWZpbGUuZGZvcgppbmRleCBi OTNjNmU3ODY0NC4uYmViNzAzNWYxNTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2xpYi9N YWtlZmlsZS5kZm9yCisrKyBiL3NyYy9iYWNrZW5kL2xpYi9NYWtlZmlsZS5kZm9yCkBAIC0y LDQgKzIsNSBAQAogCiBPQkpTX0RGT1IgOj0gXAogCWJpdHBhY2tfdTE2Lm8gXAorCWRmb3Jf dTE2Lm8gXAogCXZlY3RfdTE2Lm8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2xpYi9kZm9y X3RlbXBsLmMgYi9zcmMvYmFja2VuZC9saWIvZGZvcl90ZW1wbC5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xY2JhY2JjMzk4NQotLS0gL2Rldi9udWxsCisr KyBiL3NyYy9iYWNrZW5kL2xpYi9kZm9yX3RlbXBsLmMKQEAgLTAsMCArMSw2MzMgQEAKKy8q CisgKiBkZm9yX3RlbXBsLmMKKyAqCisgKiBJbXBsZW1lbnQgdGhlIHZhcmlhbnQgb2YgdGhl IEZyYW1lIG9mIFJlZmVyZW5jZSB3aXRoIERlbHRhCisgKiBjb250YWluZXIgYW5kIGNvcnJl c3BvbmRpbmcgYWxnb3JpdGhtcy4KKyAqCisgKiBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlv biBvZiBERk9SIGFsZ29yaXRobSBzdXBwb3J0cyBpdGVtcyBvZiB1bnNpZ25lZAorICogaW50 ZWdlciB0eXBlLiBUaGUgdHlwZSBvZiBvcmlnaW5hbCBpdGVtcyBpcyBkZWZpbmVkIHdpdGgg dGhlIGl0ZW1fdCBtYWNyby4KKyAqCisgKiBUaGUgY29tcHJlc3NlZCBwYWNrIGNvbXByaXNl cyB0aHJlZSBwYXJ0czoKKyAqICAgICAtIGRlbHRhczsKKyAqICAgICAtIGV4Y2VwdGlvbnMg cG9zaXRpb25zLgorICogICAgIC0gZXhjZXB0aW9uczsKKyAqIEVhY2ggb2YgdGhlbSBpcyBh IGRlbnNpbHkgYml0LXBhY2tlZCBzZXF1ZW5jZS4KKyAqCisgKiBUaGUgZGVsdGEgaXMgYSBk aWZmZXJlbmNlIGJldHdlZW4gdGhlIGN1cnJlbnQgaXRlbSBhbmQgdGhlIHByZXZpb3VzIG9u ZS4gVGhlCisgKiBkZWx0YSBvZiB0aGUgZmlyc3QgaXRlbSAodGhlIGl0ZW0gaGF2aW5nIHRo ZSB6ZXJvIGluZGV4KSBpcyBpdHMgYWN0dWFsIHZhbHVlOgorICogZGVsdGFbMF0gPSBtWzBd LTAgPSBtWzBdLiBTZXJpYWxpc2VkIGRlbHRhcyBpcyBhIHNlcXVlbmNlIG9mIGJpdHMuIEVh Y2gKKyAqIHNlcmlhbGlzZWQgZGVsdGEgaW4gJ2RlbHRhcycgaGFzIGEgZml4ZWQgYml0IHdp ZHRoLiBJZiB0aGUgZGVsdGEncyB3aWR0aAorICogZXhjZWVkcyB0aGUgYWxsb3dlZCBzaXpl IG9mIGEgZGVsdGEgaW4gJ2RlbHRhcycsIHRoZSBoaWdoZXIgYml0cyBvZiB0aGlzCisgKiBk ZWx0YSBpcyBwdXQgaW50byBleGNlcHRpb25zLCBpdHMgcG9zaXRpb25zIGlzIHNhdmVkIGlu dG8gdGhlICdleGNlcHRvbgorICogcG9zaXRpb25zJyBzZWN0aW9uLiBVc2FnZSBvZiBleGNl cHRpb25zIGNhbiBiZSBkZWxpYmVyYXRlbHkgdHVybmVkIG9mZi4KKyAqCisgKiBERm9SIHN1 cHBvcnRzIGJvdGggZXh0ZXJuYWwgbWVtb3J5IChvdXRlciBtZW1vcnkpIHByb3ZpZGVkIGJ5 IGEgY2FsbGVyCisgKiBhbmQgYXV0b21hdGljYWxseSBtYW5hZ2VkIG1lbW9yeSwgYWxsb2Nh dGVkIGJ5IG1lYW5zIG9mIG1hbGxvYywgcGFsbG9jCisgKiBvciBzaW1pbGFyIGZ1bmN0aW9u cy4gTWVtb3J5IG1hbmFnZW1lbnQgY29uZmlndXJhdGlvbiBtdXN0IGJlIGRlZmluZWQKKyAq IGR1cmluZyBpbml0aWFsaXphdGlvbi4gQWxsIHN1YnNlcXVlbnQgb3BlcmF0aW9ucyBmb2xs b3cgdGhpcworICogY29uZmlndXJhdGlvbi4gRm9yIGV4YW1wbGUsIGEgY2FsbGVyIGNhbiBw bGFjZSBhIGJ1ZmZlciBvbiB0aGUgc3RhY2sgdG8KKyAqIGF2b2lkIGhlYXAgYWxsb2NhdGlv biBhbmQgcGFzcyB0aGUgYnVmZmVyIHRvIGEgREZvUiB1bml0LiBBcyBhIHJlc3VsdCwKKyAq IHRoZSBwYWNraW5nIGFuZCB1bnBhY2tpbmcgcHJvY2Vzc2VzIGV4Y2x1ZGUgZHluYW1pYyBh bGxvY2F0aW9uLgorICoKKyAqIFRoZSBERm9SIHVuaXQgaXMgaW1wbGVtZW50ZWQgYXMgYSBz ZXQgb2YgdGVtcGxhdGVzLiBEZXZlbG9wZXJzIGNhbgorICogZ2VuZXJhdGUgREZvUiBpbXBs ZW1lbnRhdGlvbnMgZm9yIGFueSB1bnNpZ25lZCBpbnRlZ2VyIHR5cGUgKHVpbnQ4X3QsCisg KiB1aW50MTZfdCwgdWludDMyX3QsIHVpbnQ2NF90KS4KKyAqLworCisjaW5jbHVkZSAibGli L2Rmb3JfdGVtcGxfc3RhcGxlLmgiCisKK2ludCBkZm9yX2NhbGNfZGVsdGFzKHNpemVfdCBj bnQsIGNvbnN0IGl0ZW1fdCBhcnJbXSwgdmVjdF90ICp2RGVsdGFzLAorCQkJCQkgdW5pcXNv cnR2ZWN0X3QgKnVzdkRlbHRhV2lkdGhzLAorCQkJCQkgdmVjdF90ICp2V2lkdGhDb3VudGVy cyk7CisKK2ludCBkZm9yX2NhbGNfd2lkdGgoc2l6ZV90IGNudERlbHRhLAorCQkJCQljb25z dCB1bmlxc29ydHZlY3RfdCAqdXN2RGVsdGFXaWR0aHMsCisJCQkJCWNvbnN0IHZlY3RfdCAq dldpZHRoQ291bnRlcnMsIHNpemVfdCAqd2lkdGgsCisJCQkJCXNpemVfdCAqY250RXhjZXB0 aW9ucyk7CisKK2ludCBkZm9yX2FuYWx5emUoc2l6ZV90IGNudCwgY29uc3QgaXRlbV90IGFy cltdLAorCQkJIGRmb3JfbWV0YV90ICpkZm9yLCB2ZWN0X3QgKnZEZWx0YXMsCisJCQkgdW5p cXNvcnR2ZWN0X3QgKnVzdkV4Y1Bvcyk7CisKK2ludCBkZm9yX3BhY2soc2l6ZV90IGNudCwg Y29uc3QgaXRlbV90IGFycltdLCBleGNhbGdfdCBpc0V4Y1VzYWdlLAorCQkJICBkZm9yX21l dGFfdCAqZGZvciwgc2l6ZV90IGJ1ZlNpemUsIHVpbnQ4X3QgYnVmW10pOworCitpbnQgZGZv cl91bnBhY2soY29uc3QgZGZvcl9tZXRhX3QgKmRmb3IsIHVuaXFzb3J0dmVjdF90ICp2VmFs cywgc2l6ZV90IGJ1ZlNpemUsCisJCQkJdWludDhfdCBidWZbXSk7CisKK3ZvaWQgZGZvcl9j bGVhcl9tZXRhKGRmb3JfbWV0YV90ICpkZm9yKTsKKworZGZvcl9zdGF0c190IGRmb3JfY2Fs Y19zdGF0cyhkZm9yX21ldGFfdCBkZm9yKTsKKworc2l6ZV90IGRmb3JfY2FsY19uYnl0ZXMo ZGZvcl9tZXRhX3QgZGZvcik7CisKKy8qCisgKiBDYWxjdWxhdGUgZGVsdGFzCisgKgorICog dldpZHRoQ291bnRlcnMgYmVpbmcgZXF1YWwgdG8gTlVMTCBtZWFucyAnRG9uJ3QgY2FsY3Vs YXRlIGNvdW50cyBvZiB3aWR0aHMnLgorICogSW4gdGhpcyBjYXNlIHVzdkRlbHRhV2lkdGgg Y29tcHJpc2Ugb25seSBvbmUgbWVtYmVyIG1bMF0gd2hpY2ggc2F2ZXMgbWF4CisgKiB3aWR0 aCBvZiBkZWx0YSwgd2hpY2ggY2FuIGJlIHVzZWQgYnkgY2FsbGVyLgorICoKKyAqLworaW50 CitkZm9yX2NhbGNfZGVsdGFzKHNpemVfdCBjbnQsIGNvbnN0IGl0ZW1fdCBhcnJbXSwgdmVj dF90ICp2RGVsdGFzLAorCQkJCSB1bmlxc29ydHZlY3RfdCAqdXN2RGVsdGFXaWR0aHMsIHZl Y3RfdCAqdldpZHRoQ291bnRlcnMpCit7CisJaXRlbV90IGRlbHRhOworCWl0ZW1fdCBwcmV2 OyAvKiB2YWx1ZSBvZiBwcmV2aW91cyBudW1iZXIqLworCXNpemVfdCB3aWR0aDsKKwl1c3Zf aW5zX3Jlc190IGluc1dpZHRoSW5zZXJ0OworCisJaWYgKHZEZWx0YXMgPT0gTlVMTCkKKwkJ cmV0dXJuIC0xOworCisJaWYgKHZXaWR0aENvdW50ZXJzID09IE5VTEwpCisJCXVzdl9pbnNl cnQodXN2RGVsdGFXaWR0aHMsIDApOworCisJcHJldiA9IDA7CisJZm9yIChzaXplX3QgaiA9 IDA7IGogPCBjbnQ7IGorKykgeworCQlkZWx0YSA9IGFycltqXSAtIHByZXY7CisJCXZlY3Rf YXBwZW5kKHZEZWx0YXMsIGRlbHRhKTsKKwkJcHJldiA9IGFycltqXTsKKwkJd2lkdGggPSB3 aWR0aF9mcm9tX3ZhbChkZWx0YSk7CisKKwkJaWYgKHZXaWR0aENvdW50ZXJzID09IE5VTEwp IHsKKwkJCWlmICh1c3ZEZWx0YVdpZHRocy0+bVswXSA8IHdpZHRoKQorCQkJCXVzdkRlbHRh V2lkdGhzLT5tWzBdID0gd2lkdGg7CisJCX0gZWxzZSB7CisJCQlpbnNXaWR0aEluc2VydCA9 IHVzdl9pbnNlcnQodXN2RGVsdGFXaWR0aHMsIHdpZHRoX2Zyb21fdmFsKGRlbHRhKSk7CisK KwkJCWlmIChpbnNXaWR0aEluc2VydC5zdCA9PSBVU1ZfSU5TX05FVykKKwkJCQl2ZWN0X2lu c2VydCh2V2lkdGhDb3VudGVycywgaW5zV2lkdGhJbnNlcnQucG9zLCAoaXRlbV90KTEpOwor CQkJZWxzZSBpZiAoaW5zV2lkdGhJbnNlcnQuc3QgPT0gVVNWX0lOU19FWElTVFMpCisJCQkJ dldpZHRoQ291bnRlcnMtPm1baW5zV2lkdGhJbnNlcnQucG9zXSsrOworCQkJZWxzZQorCQkJ CXJldHVybiAtMTsKKwkJfQorCX0KKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIENhbGN1bGF0 ZSB3aWR0aCBvZiBzaG9ydCBkZWx0YXMsIHdpZHRoIG9mIGV4Y2VwdGlvbnMsIGFuZCBudW1i ZXIgb2YKKyAqIGV4Y2VwdGlvbnMKKyAqLworaW50CitkZm9yX2NhbGNfd2lkdGgoc2l6ZV90 IGNudERlbHRhLCBjb25zdCB1bmlxc29ydHZlY3RfdCAqdXN2RGVsdGFXaWR0aHMsCisJCQkJ Y29uc3QgdmVjdF90ICp2V2lkdGhDb3VudGVycywgc2l6ZV90ICp3aWR0aCwKKwkJCQlzaXpl X3QgKmNudEV4Y2VwdGlvbnMpCit7CisjZGVmaW5lIE1JTl9ERUxUQVNfUVVBTlRJVFlfQUxM T1dJTkdfRVhDRVBUSU9OUyA0CisKKwlzaXplX3QgY250U2hvcnREZWx0YXM7IC8qIG51bWJl ciBvZiBkZWx0YXMgcHJlc2VudGVkIHdpdGhvdXQgZXhjZXB0aW9ucyAqLworCXNpemVfdCBp bmR4V2lkdGg7CS8qIHRoZSB3aWR0aCBvZiBzaG9ydCBkZWx0YXMgKGluZGV4IGZyb20gdldp ZHRoQ291bnRlcnMKKwkJCQkJCSAqIChhbmQgZnJvbSB2RGVsdGFXaWR0aCBhY2NvcmRpbmds eSkKKwkJCQkJCSAqLworCWlmICh1c3ZEZWx0YVdpZHRocyA9PSBOVUxMIHx8IHZXaWR0aENv dW50ZXJzID09IE5VTEwgfHwgd2lkdGggPT0gTlVMTCB8fAorCQljbnRFeGNlcHRpb25zID09 IE5VTEwpCisJCXJldHVybiAtMTsKKworCWNudFNob3J0RGVsdGFzID0gY250RGVsdGE7CisJ aW5keFdpZHRoID0gdXN2RGVsdGFXaWR0aHMtPmNudCAtIDE7IC8qIGNvdW50ZXIgaW50byBp bmRleCAqLworCSpjbnRFeGNlcHRpb25zID0gMDsKKworCS8qCisJICogSGVyZSB3ZSB0cnkg dG8gZGVjcmVhc2UgdGhlIHdpZHRoIG9mIHNob3J0IGRlbHRhcyBpbiBvcmRlciB0byBjb21w cmVzcworCSAqIHRoZSBhcnJheSBvZiBkZWx0YXMgaW4gdGhlIG1lYW50aW1lIHdlIGFyZSBl YWdlciB0byBjb3ZlciBubyBsZXNzIHRoYW4KKwkgKiA5MCUgb2YgZGVsdGFzIHdlIGhhdmUu IEl0IGlzIGFuIGhldXJpc3RpYyBhbmFseXNpcyBiYXNlZCBvbiB0aGUKKwkgKiBzdWdnZXN0 aW9uICJubyBsZXNzIHRoYW4gOTAlIG9mIGRlbHRhcyB3ZSBoYXZlIi4KKwkgKgorCSAqIFRP RE86IGFuYWx5emluZyB3ZSBtaWdodCB3YW50IGNhbHVsYXRlIHRoZSBmdWxsIHNpemUgb2Yg dGhlIHBhY2sgZm9yIGVhY2gKKwkgKiB2YXJpYW50IG9mIHRoZSB3aWR0aC4KKwkgKi8KKwlp ZiAoY250RGVsdGEgPj0gTUlOX0RFTFRBU19RVUFOVElUWV9BTExPV0lOR19FWENFUFRJT05T KSB7CisJCXNpemVfdCBzek1pbkNvdmVyYWdlOyAvKiB0aHJlc2hvbGQgKi8KKwkJc2l6ZV90 IGo7CisKKwkJaWYgKGNudERlbHRhID49IDEwKQorCQkJc3pNaW5Db3ZlcmFnZSA9IGNudERl bHRhIC0gY250RGVsdGEgLyAxMDsKKwkJZWxzZQorCQkJc3pNaW5Db3ZlcmFnZSA9IGNudERl bHRhIC0gMTsKKworCQlqID0gaW5keFdpZHRoOworCisJCXdoaWxlIChqID4gMCkgeworCQkJ aWYgKGNudFNob3J0RGVsdGFzIC0gdldpZHRoQ291bnRlcnMtPm1bal0gPCBzek1pbkNvdmVy YWdlKQorCQkJCWJyZWFrOworCisJCQljbnRTaG9ydERlbHRhcyAtPSB2V2lkdGhDb3VudGVy cy0+bVtqXTsKKwkJCWotLTsKKwkJCWluZHhXaWR0aCA9IGo7CisJCX0KKwkJKmNudEV4Y2Vw dGlvbnMgPSBjbnREZWx0YSAtIGNudFNob3J0RGVsdGFzOworCX0KKworCSp3aWR0aCA9IHVz dkRlbHRhV2lkdGhzLT5tW2luZHhXaWR0aF07CisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBk Zm9yX2FuYWx5emUKKyAqIEFuYWx5emUgaW5wdXQgYXJyYXksIGNhbGN1bGF0ZSBkZWx0YXMg YW5kIHRoZWlyIHdpZHRoLCBkZWZpbmUgZXhjZXB0aW9ucyBhbmQKKyAqIHRoZWlyIHBvc2l0 aW9ucy4gUmV0dXJucyB0aGVtIHRocm91Z2ggdGhlIGRmb3IsIHZEZWx0YXMsIHVzdkV4Y1Bv cy4gSWYKKyAqIHVzdkV4Y1BvcyA9PSBOVUxMIC0gZG9uJ3QgY2FsY3VsYXRlIGV4Y2VwdGlv bnMuCisgKgorICogZGZvcl9hbmFseXplIGZ1bmN0aW9uIGRvZXMgbm90IHVzZSBkeW5hbWlj IG1lbW9yeSBhbGxvY2F0aW9uIGZvciBpdHMKKyAqIGxvY2FsIGNvbnRhaW5lcnMuCisgKgor ICogQSBjYWxsZXIgaGFzIHRvIGNvbnRyb2wgd2hldGhlciB2RGVsdGFzIGFuZCB1c3ZFeGNQ b3MgdXNlIG91dGVyIG1lbW9yeQorICogcHJvdmlkZWQgYnkgY2FsbGVyIG9yIG1hbmFnZSBt ZW1vcnkgYWxsb2NhdGlvbiBhdXRvbWF0aWNhbGx5LCB3aGljaCBkZWZpbmVzCisgKiB3aGV0 aGVyIHZlY3RfaW5zZXJ0IGFuZCB2ZWN0X2FwcGVuZCBmdW5jdGlvbnMsIGludm9rZWQgZnJv bSBoZXJlLCB1c2UgZHluYW1pYworICogbWVtb3J5IG9yIG5vdC4KKyAqCisgKiBBIGNhbGxl ciBzaG91bGQgdGFrZSBpbnRvIGFjY291bnQgdGhhdCBkZm9yX21ldGFfdCBkZm9yIGFyZSBn b2luZyB0byBiZQorICogbnVsbGlmaWVkIGluIHRoaXMgZnVuY3Rpb24sIHNvIGl0IHNob3Vs ZCBub3QgaGF2ZSBhbnkgbWVhbmluZ2Z1bGwgZGF0YSBieQorICogc3RhcnQgb2YgZGZvcl9h bmFseXplLCBlc3BlY2lhbGx5IGl0cyBwYWNrIGZpZWxkIHNob3VsZCBub3QgYmUgdXNlZCBh cyBhCisgKiBwb2ludGVyIG9uIGR5bmFtaWMgbWVtb3J5LCBvdGhlcndpc2UgbWVtb3J5IGxl YWthZ2UgaXMgcG9zc2libGUuCisgKgorICovCitpbnQKK2Rmb3JfYW5hbHl6ZShzaXplX3Qg Y250LCBjb25zdCBpdGVtX3QgYXJyW10sIC8qIGlucHV0ICovCisJCQkgZGZvcl9tZXRhX3Qg KmRmb3IsIHZlY3RfdCAqdkRlbHRhcywKKwkJCSB1bmlxc29ydHZlY3RfdCAqdXN2RXhjUG9z KSAvKiBvdXRwdXQgKi8KK3sKKyNkZWZpbmUgREVMVEFfV0lEVEhfTUFYX05VTUJFUiAoc2l6 ZW9mKGl0ZW1fdCkgKiA4KQorCXVuaXFzb3J0dmVjdF90IHVzdkRlbHRhV2lkdGhzOworCWl0 ZW1fdCBidWZEZWx0YVdpZHRoW0RFTFRBX1dJRFRIX01BWF9OVU1CRVJdOworCXZlY3RfdCB2 V2lkdGhDb3VudGVyczsKKwlpdGVtX3QgYnVmV2lkdGhDb3VudGVyc1tERUxUQV9XSURUSF9N QVhfTlVNQkVSXTsKKwlpdGVtX3QgbWFzazsKKwlpbnQgcmVzID0gLTE7CisKKwlleGNhbGdf dCBpc0V4Y1VzYWdlID0gKHVzdkV4Y1BvcyA9PSBOVUxMKSA/IERGT1JfRVhDX0RPTlRfVVNF IDoKKwkJCQkJCQkJCQkJCURGT1JfRVhDX1VTRTsKKworCWlmIChkZm9yID09IE5VTEwpCisJ CWdvdG8gZGZvcl9hbmFseXplX2Vycm9yOworCisJbWVtc2V0KGRmb3IsIDAsIHNpemVvZihk Zm9yX21ldGFfdCkpOworCisJaWYgKGNudCA9PSAwKQorCQkvKiBkZm9yLT5pdGVtX2NudCA9 IDA7ICovIC8qIGl0J3MgYmVlbiBhbHJlYWR5IGRvbmUgd2l0aCBtZW1zZXQgKi8KKwkJZ290 byBkZm9yX2FuYWx5emVfcmV0OworCWVsc2UgaWYgKGFyciA9PSBOVUxMKQorCQlnb3RvIGRm b3JfYW5hbHl6ZV9lcnJvcjsKKworCWlmICgwICE9IHZlY3RfaW5pdCgmdXN2RGVsdGFXaWR0 aHMsIERFTFRBX1dJRFRIX01BWF9OVU1CRVIsIGJ1ZkRlbHRhV2lkdGgpKQorCQlnb3RvIGRm b3JfYW5hbHl6ZV9lcnJvcjsKKworCWlmIChpc0V4Y1VzYWdlID09IERGT1JfRVhDX1VTRSkK Kwl7CisJCWlmICgwICE9CisJCQl2ZWN0X2luaXQoJnZXaWR0aENvdW50ZXJzLCBERUxUQV9X SURUSF9NQVhfTlVNQkVSLAorCQkJCQkgIGJ1ZldpZHRoQ291bnRlcnMpKQorCQkJZ290byBk Zm9yX2FuYWx5emVfZXJyb3I7CisJfQorCisJZGZvci0+aXRlbV9jbnQgPSBjbnQ7CisKKwlp ZiAoMCAhPQorCQlkZm9yX2NhbGNfZGVsdGFzKGRmb3ItPml0ZW1fY250LCBhcnIsIHZEZWx0 YXMsICZ1c3ZEZWx0YVdpZHRocywKKwkJCQkJCSAoaXNFeGNVc2FnZSA9PSBERk9SX0VYQ19V U0UpID8gJnZXaWR0aENvdW50ZXJzIDogTlVMTCkpCisJCWdvdG8gZGZvcl9hbmFseXplX2Vy cm9yOworCisJQXNzZXJ0KGNudCA9PSB2RGVsdGFzLT5jbnQpOworCUFzc2VydCh1c3ZEZWx0 YVdpZHRocy5jbnQgPiAwKTsKKworCWlmIChpc0V4Y1VzYWdlID09IERGT1JfRVhDX1VTRSkK Kwl7CisJCWlmICgwICE9CisJCQlkZm9yX2NhbGNfd2lkdGgodkRlbHRhcy0+Y250LCAmdXN2 RGVsdGFXaWR0aHMsICZ2V2lkdGhDb3VudGVycywKKwkJCQkJCQkmZGZvci0+ZGVsdGFfd2lk LCAmZGZvci0+ZXhjX2NudCkpCisJCQlnb3RvIGRmb3JfYW5hbHl6ZV9lcnJvcjsKKwl9CisJ ZWxzZQorCXsKKwkJZGZvci0+ZGVsdGFfd2lkID0KKwkJCXVzdkRlbHRhV2lkdGhzLm1bdXN2 RGVsdGFXaWR0aHMuY250IC0gMV07IC8qIG1heCB3aWR0aCAqLworCQlkZm9yLT5leGNfY250 ID0gMDsKKwl9CisKKwlkZm9yLT5leGNfd2lkID0gdXN2RGVsdGFXaWR0aHMubVt1c3ZEZWx0 YVdpZHRocy5jbnQgLSAxXSAtIGRmb3ItPmRlbHRhX3dpZDsKKworCS8qIEEgbWFzayBsb29r cyBsaWtlIDAwMDExMTEuIEl0IGlzIGFsc28gdGhlIG1heCB2YWx1ZSBvZiBhIHNob3J0IGRl bHRhICovCisJbWFzayA9IHdpZHRoX3RvX21hc2soZGZvci0+ZGVsdGFfd2lkKTsKKworCWZv ciAoc2l6ZV90IGkgPSAwOyBpIDwgdkRlbHRhcy0+Y250OyBpKyspCisJeworCQlpZiAodkRl bHRhcy0+bVtpXSA+IG1hc2spCisJCXsKKwkJCUFzc2VydChpc0V4Y1VzYWdlID09IERGT1Jf RVhDX1VTRSk7CisJCQlpZiAoMCAhPSB2ZWN0X2FwcGVuZCh1c3ZFeGNQb3MsIChpdGVtX3Qp aSkpCisJCQkJZ290byBkZm9yX2FuYWx5emVfZXJyb3I7CisJCX0KKwl9CisJQXNzZXJ0KGRm b3ItPmRlbHRhX3dpZCArIGRmb3ItPmV4Y193aWQgPD0gc2l6ZW9mKGl0ZW1fdCkgKiA4KTsK KwlyZXMgPSAwOworZGZvcl9hbmFseXplX3JldDoKKwlyZXR1cm4gcmVzOworZGZvcl9hbmFs eXplX2Vycm9yOgorCS8qIGRmb3JfYW5hbHl6ZSBkb2Vzbid0IGFmZmVjdCB0aGUgcGFjayBm aWVsZCAoZG9lc24ndCBhbGxvY2F0ZSwgZGVsZXRlIG9yCisJICogb3RoZXJ3aXNlKSwgc28g d2UgY2FuIG51bGxpZnkgdGhlIHdob2xlIGRmb3IgYW5kIGl0CisJICogaXMgc2FmZSwgbm8g bGVha2FnZSAqLworCW1lbXNldChkZm9yLCAwLCBzaXplb2YoZGZvcl9tZXRhX3QpKTsKKwly ZXMgPSAtMTsKKwlnb3RvIGRmb3JfYW5hbHl6ZV9yZXQ7Cit9CisKKy8qCisgKiBkZm9yX3Bh Y2sKKyAqCisgKiBUaGUgaW5wdXQgYXJyYXkgYXJyIGhhcyB0byBiZSBzb3J0ZWQuCisgKgor ICogSWYgYSBjYWxsZXIgbmVlZHMgdG8gYXZvaWQgdXNpbmcgZHluYW1pYyBtZW1vcnkgYWxs b2NhdGlvbiwgdGhleSBoYXZlIHRvCisgKiBwcm92aWRlIHRoZSBleHRlcm5hbCBtZW1vcnkg YnVmZmVyLiBUaGUgc2l6ZSBvZiB0aGlzIGJ1ZmZlciBzaG91bGQgYmUgbm90CisgKiBsZXNz IHRoYW4gNCAqIGNudCAqIHNpemVvZihpdGVtX3QpLiBJdCB3aWxsIGJlIHVzZWQgZm9yIGFy cmF5cyBwb2ludGVkIGJ5CisgKiAqKGRmb3ItPnBhY2spLCAqKHZEZWx0YXMtPm0pLCAqKHZF eGNQb3NEZWx0YXMtPm0pLCAqKHVzdkV4Y1Bvcy0+bSkuCisgKgorICogSWYgZHluYW1pYyBh bGxvY2F0aW9uIGhhcyBiZWVuIHVzZWQgYnkgdGhlIGRmb3JfcGFjaywgYSBjYWxsZXIgaGFz IHRvIGZyZWUKKyAqIHRoZSBwaWVjZSBvZiBtZW1vcnkgcG9pbnRlZCBieSBkZm9yLT5wYWNr LCBzaW5jZSBpdCBpcyBhbG9jYXRlZCBieSB0aGUKKyAqIGRmb3JfcGFjayB3aXRoIERGT1Jf TUFMTE9DLiBGcmVlaW5nIGhhcyB0byBiZSBwZXJmb3JtZWQgYnkgZnVuY3Rpb24KKyAqIGNv bmZvcm1pbmcgdG8gREZPUl9NQUxMT0MgKHBhaXJlZCB3aXRoIGl0KS4gRm9yIGluc3RhbmNl LCBpZiBERk9SX01BTExPQyBpcworICogbWFsbG9jLCB0aGFuIG1lbW9yeSBzaG91bGQgYmUg ZnJlZWQgYnkgZnJlZS4KKyAqLworaW50CitkZm9yX3BhY2soc2l6ZV90IGNudCwgY29uc3Qg aXRlbV90IGFycltdLCBleGNhbGdfdCBpc0V4Y1VzYWdlLAorCQkgIGRmb3JfbWV0YV90ICpk Zm9yLCBzaXplX3QgYnVmU2l6ZSwgdWludDhfdCBidWZbXSkKK3sKKwlpbnQgcmVzOworCXZl Y3RfdCB2RGVsdGFzID0geyAwIH07CisJdmVjdF90IHZFeGNQb3NEZWx0YXMgPSB7IDAgfTsK Kwl1bmlxc29ydHZlY3RfdCB1c3ZFeGNQb3MgPSB7IDAgfTsKKworCWlmIChkZm9yID09IE5V TEwgfHwKKwkJKGJ1ZlNpemUgIT0gMCAmJiBidWZTaXplIDwgNCAqIGNudCAqIHNpemVvZihp dGVtX3QpKSkKKwl7CisJCWdvdG8gZGZvcl9wYWNrX2Vycm9yOworCX0KKworCS8qCisJICog V2UgZG9uJ3QgbmVlZCBpdCBoZXJlOgorCSAqIAkJCW1lbXNldChkZm9yLCAwLCBzaXplb2Yo ZGZvcl9tZXRhX3QpKS4KKwkgKiBJdCBpcyBnb2luZyB0byBiZSBkb25lIGluIGRmb3JfYW5h bHl6ZS4KKwkgKi8KKworCXsKKwkJaXRlbV90ICpkZWx0YUJ1ZiA9IE5VTEw7CisJCWl0ZW1f dCAqZXhjUG9zRGVsdGFzQnVmID0gTlVMTDsKKwkJaXRlbV90ICpleGNQb3NCdWYgPSBOVUxM OworCisJCWludCByZXMxID0gMDsKKwkJaW50IHJlczIgPSAwOworCQlpbnQgcmVzMyA9IDA7 CisKKwkJaWYgKGJ1ZlNpemUgIT0gMCkKKwkJeworCQkJLyogU3RlcCBvdmVyIHRoZSBtYXhp bWFsIGFsbG93ZWQgREZvUiBwYWNrIHNpemUgKi8KKwkJCWRlbHRhQnVmICAgICAgICA9IChp dGVtX3QqKShidWYgKyBjbnQgKiBzaXplb2YoaXRlbV90KSk7CisJCQlleGNQb3NEZWx0YXNC dWYgPSAoaXRlbV90KikoYnVmICsgY250ICogc2l6ZW9mKGl0ZW1fdCkgKiAyKTsKKwkJCWV4 Y1Bvc0J1ZiAgICAgICA9IChpdGVtX3QqKShidWYgKyBjbnQgKiBzaXplb2YoaXRlbV90KSAq IDMpOworCQl9CisKKwkJLyogU2V0dXAgY29udGFpbmVycyB3aXRoIG91dGVyIG1lbW9yeSAq LworCQlyZXMxID0gdmVjdF9pbml0KCZ2RGVsdGFzLCBjbnQsIGRlbHRhQnVmKTsKKworCQlp ZiAoaXNFeGNVc2FnZSkKKwkJeworCQkJcmVzMiA9IHZlY3RfaW5pdCgmdkV4Y1Bvc0RlbHRh cywgY250LCBleGNQb3NEZWx0YXNCdWYpOworCQkJcmVzMyA9IHZlY3RfaW5pdCgmdXN2RXhj UG9zLCBjbnQsIGV4Y1Bvc0J1Zik7CisJCX0KKworCQlpZiAocmVzMSAhPSAwIHx8IHJlczIg IT0gMCB8fCByZXMzICE9IDApCisJCQlnb3RvIGRmb3JfcGFja19lcnJvcjsKKwl9CisKKwlp ZiAoMCAhPQorCQlkZm9yX2FuYWx5emUoY250LCBhcnIsIGRmb3IsICZ2RGVsdGFzLAorCQkJ CQkgKGlzRXhjVXNhZ2UgPT0gREZPUl9FWENfVVNFKSA/ICZ1c3ZFeGNQb3MgOiBOVUxMKSkK KwkJZ290byBkZm9yX3BhY2tfZXJyb3I7CisKKwlpZiAoZGZvci0+ZXhjX2NudCAhPSAwKQor CXsKKwkJLyogV2UgdHJlYXQgZXhjZXB0aW9uIHBvc2l0aW9ucyBhcyBhIHNvcnRlZCBzZXF1 ZW5jZSwgYXBwbHkgdGhlCisJCSAqIERGb1IgYWxnb3JpdGhtIHRvIGl0LCBhbmQgc2F2ZSBu b3QgdGhlaXIgYWJzb2x1dGUgdmFsdWVzIGJ1dCB0aGVpcgorCQkgKiBkZWx0YXMuICovCisJ CWRmb3JfbWV0YV90IGRmb3JFeGNQb3M7CisJCUFzc2VydChkZm9yLT5leGNfY250ID09IHVz dkV4Y1Bvcy5jbnQpOworCQlpZiAoMCAhPQorCQkJZGZvcl9hbmFseXplKHVzdkV4Y1Bvcy5j bnQsIHVzdkV4Y1Bvcy5tLCAmZGZvckV4Y1BvcywKKwkJCQkJCSAmdkV4Y1Bvc0RlbHRhcywg TlVMTCkpCisJCQlnb3RvIGRmb3JfcGFja19lcnJvcjsKKworCQlBc3NlcnQoZGZvci0+ZXhj X2NudCA9PSB2RXhjUG9zRGVsdGFzLmNudCk7CisJCUFzc2VydChkZm9yLT5leGNfY250ID09 IGRmb3JFeGNQb3MuaXRlbV9jbnQpOworCisJCWRmb3ItPmV4Y19wb3Nfd2lkID0gZGZvckV4 Y1Bvcy5kZWx0YV93aWQ7CisJfQorCWVsc2UKKwl7CisJCUFzc2VydCh1c3ZFeGNQb3MuY250 ID09IDApOyAvKiB1c3ZFeGNQb3MgaGFzIHRvIHJlbWFpbiB6ZXJvZWQuICovCisJCUFzc2Vy dChkZm9yLT5leGNfd2lkID09IDApOyAvKiBObyBleGNlcHRpb25zLCBubyBleGNlcHRpb25z JyB3aWR0aC4gKi8KKwkJQXNzZXJ0KGRmb3ItPmV4Y19wb3Nfd2lkID09IDApOyAvKiBObyBl eGNlcHRpb25zJyBwb3NpdGlvbnMgd2lkdGggdG9vLiAqLworCX0KKworCS8qIGRmb3JfcGFj ayBzZXJpYWxpc2F0aW9uIHBhY2tpbmcgKi8KKwl7CisJCS8qIGluZGV4IG9mIHRoZSBuZXh0 IGZyZWUgYml0IHRvIGJlIHVzZWQ6ICovCisJCXNpemVfdCBkOyAvKiAtIGJ5IGEgZGVsdGEg Ki8KKwkJc2l6ZV90IGU7IC8qIC0gYnkgYW4gZXhjZXB0aW9uICovCisJCXNpemVfdCBwOyAv KiAtIGJ5IGFuIGV4Y2VwdGlvbiBwb3NpdGlvbiAqLworCQlpdGVtX3QgbWFzazsKKwkJZGZv cl9zdGF0c190IHN0YXRzOworCQlzaXplX3QgajsKKworCQlzdGF0cyA9IGRmb3JfY2FsY19z dGF0cygqZGZvcik7CisJCWRmb3ItPm5ieXRlcyA9IGRmb3JfY2FsY19uYnl0ZXMoKmRmb3Ip OworCisJCWlmIChidWZTaXplICE9IDApCisJCXsKKwkJCS8qIE1heCBzaXplIG9mIHRoZSBk Zm9yLT5wYWNrIGlzIGNudCAqIHNpemVvZihzaXplX3QpICovCisJCQlkZm9yLT5wYWNrID0g YnVmOworCQkJZGZvci0+b3V0ZXJfbWVtID0gdHJ1ZTsKKwkJCWlmIChkZm9yLT5uYnl0ZXMg PiBjbnQgKiBzaXplb2Yoc2l6ZV90KSkKKwkJCQlnb3RvIGRmb3JfcGFja19lcnJvcjsKKwkJ fQorCQllbHNlCisJCXsKKwkJCS8qIElmIGEgYnVmZmVyIHdhcyBub3QgcHJvdmlkZWQgYnkg Y2FsbGVyIHdlIGFsbG9jYXRlIGl0IGJ5CisJCQkgKiBvdXJzZWx2ZXMKKwkJCSAqLworCQkJ ZGZvci0+cGFjayA9ICh1aW50OF90ICopREZPUl9NQUxMT0MoKGRmb3ItPm5ieXRlcykpOwor CisJCQlkZm9yLT5vdXRlcl9tZW0gPSBmYWxzZTsKKwkJfQorCisJCWlmIChkZm9yLT5wYWNr ID09IE5VTEwpCisJCQlnb3RvIGRmb3JfcGFja19lcnJvcjsKKworCQltZW1zZXQoZGZvci0+ cGFjaywgMCwgZGZvci0+bmJ5dGVzKTsKKworCQkvKiBpbmRleCBvZiB0aGUgbmV4dCBmcmVl IGJpdCB0byBiZSB1c2VkOiAqLworCQlkID0gMDsJCQkgICAvKiAtIGJ5IGEgZGVsdGEgKi8K KwkJZSA9IHN0YXRzLmRlbHRhX3BhY2tfbmJpdHM7ICAgLyogLSBieSBhbiBleGNlcHRpb24g Ki8KKwkJcCA9IGUgKyBzdGF0cy5leGNfcGFja19uYml0czsgLyogLSBieSBhbiBleGNlcHRp b24gcG9zaXRpb24gaW5kZXggKi8KKwkJLyogQSBtYXNrIGxvb2tzIGxpa2UgMDAwMTExMS4g SXQgaXMgYWxzbyB0aGUKKwkJICogbWF4IHZhbHVlIG9mIGEgc2hvcnQgZGVsdGEgKi8KKwkJ bWFzayA9IHdpZHRoX3RvX21hc2soZGZvci0+ZGVsdGFfd2lkKTsKKworCQlqID0gMDsKKwkJ Zm9yIChzaXplX3QgaSA9IDA7IGkgPCB2RGVsdGFzLmNudDsgaSsrKQorCQl7CisJCQlkID0g Yml0cGFja19wYWNrKGRmb3ItPnBhY2ssIGQsIHZEZWx0YXMubVtpXSAmIG1hc2ssCisJCQkJ CQkJIGRmb3ItPmRlbHRhX3dpZCk7CisKKwkJCWlmICh2RGVsdGFzLm1baV0gPiBtYXNrKQor CQkJeworCQkJCUFzc2VydChpc0V4Y1VzYWdlID09IERGT1JfRVhDX1VTRSk7CisJCQkJQXNz ZXJ0KHVzdkV4Y1Bvcy5tW2pdID09IGkpOworCQkJCUFzc2VydChqIDwgdXN2RXhjUG9zLmNu dCk7CisJCQkJQXNzZXJ0KGogPCB2RXhjUG9zRGVsdGFzLmNudCk7CisJCQkJQXNzZXJ0KGRm b3ItPmV4Y193aWQgIT0gMCk7CisJCQkJQXNzZXJ0KGRmb3ItPmV4Y19wb3Nfd2lkICE9IDAp OworCisJCQkJZSA9IGJpdHBhY2tfcGFjayhkZm9yLT5wYWNrLCBlLCB2RGVsdGFzLm1baV0g Pj4gZGZvci0+ZGVsdGFfd2lkLAorCQkJCQkJCQkgZGZvci0+ZXhjX3dpZCk7CisJCQkJcCA9 IGJpdHBhY2tfcGFjayhkZm9yLT5wYWNrLCBwLCB2RXhjUG9zRGVsdGFzLm1bal0sIGRmb3It PmV4Y19wb3Nfd2lkKTsKKwkJCQlqKys7CisJCQl9CisJCX0KKworCQlpZiAoaXNFeGNVc2Fn ZSA9PSBERk9SX0VYQ19VU0UpCisJCQlBc3NlcnQoaiA9PSB1c3ZFeGNQb3MuY250KTsKKwkJ ZWxzZQorCQkJQXNzZXJ0KGogPT0gMCk7CisKKwkJQXNzZXJ0KGQgPT0gc3RhdHMuZGVsdGFf cGFja19uYml0cyk7CisJCUFzc2VydChlID09IHN0YXRzLmRlbHRhX3BhY2tfbmJpdHMgKyBz dGF0cy5leGNfcGFja19uYml0cyk7CisJCUFzc2VydChwID09CisJCQkgICBzdGF0cy5kZWx0 YV9wYWNrX25iaXRzICsgc3RhdHMuZXhjX3BhY2tfbmJpdHMgKworCQkJCSAgIHN0YXRzLmV4 Y19wb3NfcGFja19uYml0cyk7CisJCXJlcyA9IDA7CisJfQorZGZvcl9wYWNrX3JldDoKKwl2 ZWN0X2NsZWFyKCZ1c3ZFeGNQb3MpOworCXZlY3RfY2xlYXIoJnZFeGNQb3NEZWx0YXMpOwor CXZlY3RfY2xlYXIoJnZEZWx0YXMpOworCXJldHVybiByZXM7CitkZm9yX3BhY2tfZXJyb3I6 CisJaWYgKGRmb3IgIT0gTlVMTCkKKwkJZGZvcl9jbGVhcl9tZXRhKGRmb3IpOworCXJlcyA9 IC0xOworCWdvdG8gZGZvcl9wYWNrX3JldDsKK30KKworLyoKKyAqIGRmb3JfdW5wYWNrCisg KgorICogSWYgYSBjYWxsZXIgbmVlZHMgdG8gYXZvaWQgdXNpbmcgZHluYW1pYyBtZW1vcnkg YWxsb2NhdGlvbiwgdGhleSBoYXZlIHRvOgorICogMSkgcHJvdmlkZSB0aGUgZXh0ZXJuYWwg bWVtb3J5IGJ1ZmZlci4gVGhlIHNpemUgb2YgdGhpcyBidWZmZXIgc2hvdWxkIGJlIG5vdAor ICogICAgbGVzcyB0aGFuOgorICogICAgICAgIAkyICogZGZvci5pdGVtX2NudCAqIHNpemVv ZihpdGVtX3QpICsgMiAqIGRmb3IuZXhjX2NudCAqIHNpemVvZihpdGVtX3QpCisgKgorICog MikgdGhlIHZWYWxzIHZlY3RvciBoYXMgdG8gYmUgY3JlYXRlZCBidXQgbXVzdCBub3QgYmUg aW5pdGlhbGlzZWQuIFRoZQorICogICAgZGZvcl91bnBhY2sgc2V0cyB2VmFscyBpbiB0aGUg J291dGVyIG1lbW9yeScgcmVnaW1lbiBhbmQgd2lsbCBzZXQgdlZhbC0+bQorICogICAgdG8g YnVmLgorICoKKyAqIFByb3ZpZGVkIGR5bmFtaWMgYWxsb2NhdGlvbiBpcyB1c2VkIGJ5IHRo ZSBkZm9yX3VucGFjaywgYSBjYWxsZXIgd2lsbCBoYXZlIHRvCisgKiBmcmVlIHRoZSBwaWVj ZSBvZiBtZW1vcnkgcG9pbnRlZCBieSB2VmFscy0+bSwgdXNpbmcgdmVjdF9jbGVhcigmdlZh bHMpLgorICoKKyAqIEFyZSB0aGUgb3V0ZXIgbWVtb3J5IGlzIHVzZWQKKyAqLworaW50Citk Zm9yX3VucGFjayhjb25zdCBkZm9yX21ldGFfdCAqZGZvciwgdW5pcXNvcnR2ZWN0X3QgKnZW YWxzLCBzaXplX3QgYnVmU2l6ZSwKKwkJCXVpbnQ4X3QgYnVmW10pCit7CisJaW50IHJlcyA9 IC0xOworCXNpemVfdCBzekRlbHRhUGFjazsKKwl2ZWN0X3QgdkV4Y3MgPSB7IDAgfTsKKwl2 ZWN0X3QgdkV4Y1Bvc3MgPSB7IDAgfTsKKwlleGNhbGdfdCBpc0V4Y1VzYWdlID0gKGRmb3It PmV4Y19jbnQgPT0gMCkgPyBERk9SX0VYQ19ET05UX1VTRSA6CisJCQkJCQkJCQkJCQkgREZP Ul9FWENfVVNFOworCisJaWYgKHZWYWxzID09IE5VTEwpCisJCWdvdG8gZGZvcl91bnBhY2tf ZXJyb3I7CisKKwlpZiAoYnVmU2l6ZSAhPSAwICYmCisJCWJ1ZlNpemUgPCAoMiAqIGRmb3It Pml0ZW1fY250ICogc2l6ZW9mKGl0ZW1fdCkgKworCQkJCSAgIDIgKiBkZm9yLT5leGNfY250 ICogc2l6ZW9mKGl0ZW1fdCkpKQorCQlnb3RvIGRmb3JfdW5wYWNrX2Vycm9yOworCisJc3pE ZWx0YVBhY2sgPSBkZm9yLT5kZWx0YV93aWQgKiBkZm9yLT5pdGVtX2NudDsKKworCXsKKwkJ dWludDhfdCAqdmFsc0J1ZiA9IE5VTEw7CisJCWlmIChidWZTaXplICE9IDApCisJCQl2YWxz QnVmID0gYnVmOworCisJCWlmICh2ZWN0X2luaXQodlZhbHMsIGRmb3ItPml0ZW1fY250LCAo aXRlbV90ICopdmFsc0J1ZikgIT0gMCkKKwkJCWdvdG8gZGZvcl91bnBhY2tfZXJyb3I7CisJ fQorCisJLyogQ2FsY3VsYXRlIGV4Y2VwdGlvbnMgKi8KKwlpZiAoaXNFeGNVc2FnZSA9PSBE Rk9SX0VYQ19VU0UpCisJeworCQlzaXplX3Qgc3pFeGNQYWNrOworCQlzaXplX3QgY3JFeGM7 IC8qIGNhcmV0IChjdXJzb3IpICovCisJCXNpemVfdCBjclBvczsgLyogY2FyZXQgKGN1cnNv cikgKi8KKworCQl1aW50OF90ICpleGNCdWYgPSBOVUxMOworCQl1aW50OF90ICpleGNQb3Nz QnVmID0gTlVMTDsKKworCQlpbnQgcmVzMSA9IDA7CisJCWludCByZXMyID0gMDsKKworCQlz ekV4Y1BhY2sgPSBkZm9yLT5leGNfY250ICogZGZvci0+ZXhjX3dpZDsKKwkJY3JFeGMgPSBz ekRlbHRhUGFjazsKKwkJY3JQb3MgPSBjckV4YyArIHN6RXhjUGFjazsKKworCQlpZiAoYnVm U2l6ZSAhPSAwKQorCQl7CisJCQkvKiBzdGVwIG92ZXIgdGhlIG1lbW9yeSBvY2N1cGllZCBi eSB2VmFscyAqLworCQkJZXhjQnVmID0gYnVmICsgZGZvci0+aXRlbV9jbnQgKiBzaXplb2Yo aXRlbV90KTsKKwkJCWV4Y1Bvc3NCdWYgPSBleGNCdWYgKyBkZm9yLT5leGNfY250ICogc2l6 ZW9mKGl0ZW1fdCk7CisJCX0KKworCQlyZXMxID0gdmVjdF9pbml0KCZ2RXhjcywgZGZvci0+ ZXhjX2NudCwgKGl0ZW1fdCAqKWV4Y0J1Zik7CisJCXJlczIgPSB2ZWN0X2luaXQoJnZFeGNQ b3NzLCBkZm9yLT5leGNfY250LCAoaXRlbV90ICopZXhjUG9zc0J1Zik7CisKKwkJaWYgKHJl czEgIT0gMCB8fCByZXMyICE9IDApCisJCQlnb3RvIGRmb3JfdW5wYWNrX2Vycm9yOworCisK KwkJZm9yIChzaXplX3QgcG9zRXhjID0gMCwgaiA9IDA7IGogPCBkZm9yLT5leGNfY250OyBq KyspCisJCXsKKwkJCWl0ZW1fdCBkZWx0YVBvczsKKwkJCXJlczEgPSB2ZWN0X2FwcGVuZCgm dkV4Y3MsCisJCQkJCQkJICAgYml0cGFja191bnBhY2soZGZvci0+cGFjaywgJmNyRXhjLAor CQkJCQkJCQkJCQkgIGRmb3ItPmV4Y193aWQpKTsKKwkJCS8qIENhbGN1bGF0ZSB0aGUgcG9z aXRpb24gb2YgdGhlIGV4Y2VwdGlvbiBmcm9tIHRoZSBkZWx0YSBvZiB0aGUKKwkJCSAqIHBv c2l0aW9uIG9mIHRoZSBleGNlcHRpb24gKi8KKwkJCWRlbHRhUG9zID0gYml0cGFja191bnBh Y2soZGZvci0+cGFjaywgJmNyUG9zLCBkZm9yLT5leGNfcG9zX3dpZCk7CisJCQlwb3NFeGMg Kz0gZGVsdGFQb3M7CisJCQlyZXMyID0gdmVjdF9hcHBlbmQoJnZFeGNQb3NzLCBwb3NFeGMp OworCQkJaWYgKHJlczEgIT0gMCB8fCByZXMyICE9IDApCisJCQkJZ290byBkZm9yX3VucGFj a19lcnJvcjsKKwkJfQorCQlBc3NlcnQoY3JFeGMgPT0gc3pEZWx0YVBhY2sgKyBzekV4Y1Bh Y2spOworCQlBc3NlcnQoY3JQb3MgPT0KKwkJCSAgIHN6RGVsdGFQYWNrICsgc3pFeGNQYWNr ICsgZGZvci0+ZXhjX3Bvc193aWQgKiBkZm9yLT5leGNfY250KTsKKwl9CisKKwl7IC8qIFVu cGFjayBkZWx0YXMgYW5kIGNhbGN1bGF0ZSB0YXJnZXQgdmFsdWVzICovCisJCWl0ZW1fdCBt RGVsdGE7CisJCWl0ZW1fdCBtU3VtID0gMDsKKwkJc2l6ZV90IGogPSAwOyAvKiBpbmRleCBv ZiBhbiBleGNlcHRpb24gYW5kIGl0cyBwb3NpdGlvbiBpbiB2ZWN0b3JzICovCisJCXNpemVf dCBjckRlbHRhID0gMDsKKwkJZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkZm9yLT5pdGVtX2Nu dDsgaSsrKQorCQl7CisJCQltRGVsdGEgPSBiaXRwYWNrX3VucGFjayhkZm9yLT5wYWNrLCAm Y3JEZWx0YSwgZGZvci0+ZGVsdGFfd2lkKTsKKworCQkJaWYgKGlzRXhjVXNhZ2UgPT0gREZP Ul9FWENfVVNFICYmCisJCQkJaiA8IHZFeGNzLmNudCAmJgorCQkJCWkgPT0gdkV4Y1Bvc3Mu bVtqXSkKKwkJCXsKKwkJCQlBc3NlcnQoaiA8IGRmb3ItPmV4Y19jbnQpOworCQkJCW1EZWx0 YSB8PSB2RXhjcy5tW2pdIDw8IGRmb3ItPmRlbHRhX3dpZDsKKwkJCQlqKys7CisJCQl9CisJ CQltU3VtICs9IG1EZWx0YTsKKwkJCXZlY3RfYXBwZW5kKHZWYWxzLCBtU3VtKTsKKwkJfQor CQlBc3NlcnQoY3JEZWx0YSA9PSBzekRlbHRhUGFjayk7CisJCXJlcyA9IDA7CisJfQorCitk Zm9yX3VucGFja19yZXQ6CisJdmVjdF9jbGVhcigmdkV4Y1Bvc3MpOworCXZlY3RfY2xlYXIo JnZFeGNzKTsKKwlyZXR1cm4gcmVzOworZGZvcl91bnBhY2tfZXJyb3I6CisJdmVjdF9jbGVh cih2VmFscyk7CisJcmVzID0gLTE7CisJZ290byBkZm9yX3VucGFja19yZXQ7Cit9CisKK3Zv aWQKK2Rmb3JfY2xlYXJfbWV0YShkZm9yX21ldGFfdCAqbWV0YSkKK3sKKwlpZiAobWV0YSA9 PSBOVUxMKQorCQlyZXR1cm47CisKKwlpZiAobWV0YS0+cGFjayAhPSBOVUxMICYmICFtZXRh LT5vdXRlcl9tZW0pCisJCURGT1JfRlJFRShtZXRhLT5wYWNrKTsKKworCW1lbXNldChtZXRh LCAwLCBzaXplb2YoZGZvcl9tZXRhX3QpKTsKK30KKworZGZvcl9zdGF0c190CitkZm9yX2Nh bGNfc3RhdHMoZGZvcl9tZXRhX3QgZGZvcikKK3sKKwlkZm9yX3N0YXRzX3Qgc3RhdDsKKwlz aXplX3QgbmJ5dGVzOworCXN0YXQuZGVsdGFfcGFja19uYml0cyA9IGRmb3IuZGVsdGFfd2lk ICogZGZvci5pdGVtX2NudDsKKwlzdGF0LmV4Y19wYWNrX25iaXRzID0gZGZvci5leGNfd2lk ICogZGZvci5leGNfY250OworCXN0YXQuZXhjX3Bvc19wYWNrX25iaXRzID0gZGZvci5leGNf cG9zX3dpZCAqIGRmb3IuZXhjX2NudDsKKworCXN0YXQubmJpdHMgPSBzdGF0LmRlbHRhX3Bh Y2tfbmJpdHMgKyBzdGF0LmV4Y19wYWNrX25iaXRzICsgc3RhdC5leGNfcG9zX3BhY2tfbmJp dHM7CisKKwkvKiBJZiB0aGUgZGl2aXNpb24gcmVzdWx0cyBpbiB0aGUgcmVtYWluZGVyLCB3 ZSB1c2UgYW4gYWRkaXRpb25hbAorCSAqIGJ5dGUgKi8KKwluYnl0ZXMgPSAoc3RhdC5uYml0 cyArIDcpIC8gODsKKwlzdGF0LnJhdGlvID0gKGZsb2F0KShzaXplb2YoaXRlbV90KSAqIGRm b3IuaXRlbV9jbnQpIC8gKGZsb2F0KW5ieXRlczsKKworCXJldHVybiBzdGF0OworfQorCitz aXplX3QgZGZvcl9jYWxjX25ieXRlcyhkZm9yX21ldGFfdCBkZm9yKQoreworCWRmb3Jfc3Rh dHNfdCBzdGF0OworCXN0YXQgPSBkZm9yX2NhbGNfc3RhdHMoZGZvcik7CisJcmV0dXJuIChz dGF0Lm5iaXRzICsgNykgLyA4OworfQorCisjaW5jbHVkZSAibGliL2Rmb3JfdGVtcGxfdW5k ZWYuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2xpYi9kZm9yX3UxNi5jIGIvc3JjL2Jh Y2tlbmQvbGliL2Rmb3JfdTE2LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLmY3MDUxZjU1OTI1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvbGli L2Rmb3JfdTE2LmMKQEAgLTAsMCArMSw4IEBACisvKgorICogRmlsZTogZGZvcl91MTYuYwor ICovCisKKy8qIGNsYW5nLWZvcm1hdCBvZmYgKi8KKyNpbmNsdWRlICJsaWIvZGZvcl91MTZf Y29uZmlnLmgiCisjaW5jbHVkZSAiZGZvcl90ZW1wbC5jIgorLyogY2xhbmctZm9ybWF0IG9u ICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9saWIvbWVzb24uYnVpbGQgYi9zcmMvYmFj a2VuZC9saWIvbWVzb24uYnVpbGQKaW5kZXggMDk4NGJkMGUzZjYuLjdmNjczMGVmYmExIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9saWIvbWVzb24uYnVpbGQKKysrIGIvc3JjL2JhY2tl bmQvbGliL21lc29uLmJ1aWxkCkBAIC0yLDYgKzIsNyBAQAogCiBkZm9yX3NvdXJjZXMgPSBm aWxlcygKICAgJ2JpdHBhY2tfdTE2LmMnLAorICAnZGZvcl91MTYuYycsCiAgICd2ZWN0X3Ux Ni5jJwogKQogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9saWIvZGZvcl90ZW1wbC5oIGIv c3JjL2luY2x1ZGUvbGliL2Rmb3JfdGVtcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uYjRjMWQ0MWMxZDMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5j bHVkZS9saWIvZGZvcl90ZW1wbC5oCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgKiBGaWxlOiBk Zm9yX3RlbXBsLmgKKyAqLworI2luY2x1ZGUgImRmb3JfdGVtcGxfc3RhcGxlLmgiCisKK2V4 dGVybiBpbnQgZGZvcl9jYWxjX2RlbHRhcyhzaXplX3QgY250LCBjb25zdCBpdGVtX3QgYXJy W10sIHZlY3RfdCAqdkRlbHRhcywKKwkJCQkJCQl1bmlxc29ydHZlY3RfdCAqdXN2RGVsdGFX aWR0aHMsCisJCQkJCQkJdmVjdF90ICp2V2lkdGhDb3VudGVycyk7CisKK2V4dGVybiBpbnQg ZGZvcl9jYWxjX3dpZHRoKHNpemVfdCBjbnREZWx0YSwKKwkJCQkJCSAgIGNvbnN0IHVuaXFz b3J0dmVjdF90ICp1c3ZEZWx0YVdpZHRocywKKwkJCQkJCSAgIGNvbnN0IHZlY3RfdCAqdldp ZHRoQ291bnRlcnMsIHNpemVfdCAqd2lkdGgsCisJCQkJCQkgICBzaXplX3QgKmNudEV4Y2Vw dGlvbnMpOworCitleHRlcm4gaW50IGRmb3JfcGFjayhzaXplX3QgY250LCBjb25zdCBpdGVt X3QgYXJyW10sIGV4Y2FsZ190IGlzRXhjVXNhZ2UsCisJCQkJCSBkZm9yX21ldGFfdCAqZGZv ciwgc2l6ZV90IGJ1ZlNpemUsIHVpbnQ4X3QgYnVmW10pOworCitleHRlcm4gaW50IGRmb3Jf dW5wYWNrKGNvbnN0IGRmb3JfbWV0YV90ICpkZm9yLCB1bmlxc29ydHZlY3RfdCAqdlZhbHMs CisJCQkJCSAgIHNpemVfdCBidWZTaXplLCB1aW50OF90IGJ1ZltdKTsKKworZXh0ZXJuIHZv aWQgZGZvcl9jbGVhcl9tZXRhKGRmb3JfbWV0YV90ICpkZm9yKTsKKworZXh0ZXJuIGRmb3Jf c3RhdHNfdCBkZm9yX2NhbGNfc3RhdHMoZGZvcl9tZXRhX3QgZGZvcik7CisKK2V4dGVybiBz aXplX3QgZGZvcl9jYWxjX25ieXRlcyhkZm9yX21ldGFfdCBkZm9yKTsKKworI2luY2x1ZGUg ImRmb3JfdGVtcGxfdW5kZWYuaCIKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2xpYi9kZm9y X3RlbXBsX3N0YXBsZS5oIGIvc3JjL2luY2x1ZGUvbGliL2Rmb3JfdGVtcGxfc3RhcGxlLmgK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmU5M2M0MGFjMDM0Ci0t LSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvbGliL2Rmb3JfdGVtcGxfc3RhcGxlLmgK QEAgLTAsMCArMSwxMjUgQEAKKy8qCisgKiBGaWxlOiBkZm9yX3N0YXBsZV90ZW1wbC5oCisg Ki8KKworI2luY2x1ZGUgImMuaCIKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICog Tk9OUkVVU0FCTEUgQ09ERSwgYWxsb3dlZCB0byBiZSBpbmNsdWRlZCBvbmx5IG9uY2UKKyAq CisgKiBUaGlzIGNvZGUgc2hvdWxkIGFwcGVhciBvbmx5IG9uY2UgaW4gYSBmaWxlIChvciBp biBhIGNoYWluIG9mIGZpbGVzKQorICogaW5jbHVkaW5nIHRoaXMgaGVhZGVyIHdpdGggI2lu Y2x1ZGUuIFNvLCB3ZSBwcm90ZWN0IGl0IGZyb20gZHVwbGljYXRlcyBieQorICogbWVhbnMg b2YgbWFjcm8KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisjaWZuZGVmIF9ERk9S X1NUQVBMRV9URU1QTF9IX1VOSVFVRV9DT0RFXworI2RlZmluZSBfREZPUl9TVEFQTEVfVEVN UExfSF9VTklRVUVfQ09ERV8KKwordHlwZWRlZiBzdHJ1Y3QgeworCXNpemVfdCBpdGVtX2Nu dDsKKwlzaXplX3QgZGVsdGFfd2lkOworCXNpemVfdCBleGNfY250OworCXNpemVfdCBleGNf d2lkOworCXNpemVfdCBleGNfcG9zX3dpZDsKKwlzaXplX3QgbmJ5dGVzOyAvKiBzaXplIG9m IHBhY2sgaW4gYnl0ZXMgKi8KKwl1aW50OF90ICpwYWNrOworCWJvb2wgb3V0ZXJfbWVtOwor fSBkZm9yX21ldGFfdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworCXNpemVfdCBuYml0czsgIC8q IHNpemUgb2YgcGFjayBpbiBiaXRzIHVzZWQgaW4gZmFjdCAqLworCXNpemVfdCBkZWx0YV9w YWNrX25iaXRzOyAvKiBpbiBiaXRzICovCisJc2l6ZV90IGV4Y19wYWNrX25iaXRzOyAvKiBp biBiaXRzICovCisJc2l6ZV90IGV4Y19wb3NfcGFja19uYml0czsgLyogaW4gYml0cyAqLwor CWZsb2F0IHJhdGlvOyAgLyogY29tcHJlc3Npb24gcmF0aW8gKi8KK30gZGZvcl9zdGF0c190 OworCit0eXBlZGVmIGVudW0geworCURGT1JfRVhDX0RPTlRfVVNFID0gMCwKKwlERk9SX0VY Q19VU0UgPSAxCit9IGV4Y2FsZ190OworCisjZW5kaWYgLyogX0RGT1JfU1RBUExFX1RFTVBM X0hfVU5JUVVFX0NPREVfICovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEVu ZCBvZiBDb2RlLCBhbGxvd2VkIHRvIGJlIGluY2x1ZGVkIG9ubHkgb25jZQorICoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBSRVVT QUJMRSBDT0RFCisgKgorICogVGhpcyBjb2RlIGNhbiBiZSByZXVzZWQgd2l0aCAjaW5jbHVk ZSBkaXJlY3RpdmUgaW4gYSBmaWxlIGlmIERGT1JfTUFSS0VSIGlzCisgKiByZWRlZmluZWQu IFRoaXMgYWxsb3dzIGNyZWF0aW9uIG9mIHNldmVyYWwgdHlwZXMgb2YgdmVjdG9ycyB3aXRo IGRpZmZlcmVudAorICogdHlwZXMgb2YgbWVtYmVycy4KKyAqCisgKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovCisKKyNpZm5kZWYgREZPUl9JVEVNX1RZUEUKKyNlcnJvciAiREZPUl9JVEVN X1RZUEUgbWFjcm8gaXMgaW5kZWZpbmVkLiIKKyNlbmRpZgorCisjaWZuZGVmIERGT1JfTUFS S0VSCisjZXJyb3IgIkRGT1JfTUFSS0VSIG1hY3JvIGlzIGluZGVmaW5lZC4iCisjZW5kaWYK KworI2lmbmRlZiBERk9SX01BTExPQworI2Vycm9yICJERk9SX01BTExPQyBtYWNybyBpcyBp bmRlZmluZWQuIgorI2VuZGlmCisKKyNpZm5kZWYgREZPUl9GUkVFCisjZXJyb3IgIkRGT1Jf RlJFRSBtYWNybyBpcyBpbmRlZmluZWQuIgorI2VuZGlmCisKKyNkZWZpbmUgTUFLRV9IRUFE RVJfTkFNRSh2LCBtKSBDcHBBc1N0cmluZzIoQ3BwQ29uY2F0Mih2LCBtKS5oKQorCisvKgor ICogSGVhZGVycyBmcm9tIHZlY3QgYW5kIGJpdHBhY2sgdW5pdHMKKyAqCisgKiBFeGFtcGxl OiBkZm9yX3UxNi5jIGFuZCBkZm9yX3UxNi5oIG5lZWQgdmVjdF91MTYuaCBhbmQgYml0cGFj a191MTYuaAorICovCisjaW5jbHVkZSBNQUtFX0hFQURFUl9OQU1FKGxpYi92ZWN0XywgREZP Ul9NQVJLRVIpCisjaW5jbHVkZSBNQUtFX0hFQURFUl9OQU1FKGxpYi9iaXRwYWNrXywgREZP Ul9NQVJLRVIpCisKKy8qIFR5cGVzICovCisjZGVmaW5lIGl0ZW1fdAkJICAgREZPUl9JVEVN X1RZUEUKKyNkZWZpbmUgdmVjdF90CQkgICBDcHBDb25jYXRUcmlwbGUyKHZlY3RfLCBERk9S X01BUktFUiwgX3QpCisjZGVmaW5lIHVuaXFzb3J0dmVjdF90IENwcENvbmNhdFRyaXBsZTIo dW5pcXNvcnR2ZWN0XywgREZPUl9NQVJLRVIsIF90KQorCisvKiBGdW5jdGlvbnMgKi8KKyNk ZWZpbmUgZGZvcl9jYWxjX2RlbHRhcyBDcHBDb25jYXRUcmlwbGUyKGRmb3JfLCBERk9SX01B UktFUiwgX2NhbGNfZGVsdGFzKQorI2RlZmluZSBkZm9yX2NhbGNfd2lkdGgJIENwcENvbmNh dFRyaXBsZTIoZGZvcl8sIERGT1JfTUFSS0VSLCBfY2FsY193aWR0aCkKKyNkZWZpbmUgZGZv cl9wYWNrCQkgQ3BwQ29uY2F0VHJpcGxlMihkZm9yXywgREZPUl9NQVJLRVIsIF9wYWNrKQor I2RlZmluZSBkZm9yX3VucGFjawkJIENwcENvbmNhdFRyaXBsZTIoZGZvcl8sIERGT1JfTUFS S0VSLCBfdW5wYWNrKQorI2RlZmluZSBkZm9yX2FuYWx5emUJIENwcENvbmNhdFRyaXBsZTIo ZGZvcl8sIERGT1JfTUFSS0VSLCBfYW5hbHl6ZSkKKyNkZWZpbmUgZGZvcl9jbGVhcl9tZXRh CSBDcHBDb25jYXRUcmlwbGUyKGRmb3JfLCBERk9SX01BUktFUiwgX2NsZWFyX21ldGEpCisj ZGVmaW5lIGRmb3JfY2FsY19zdGF0cwkgQ3BwQ29uY2F0VHJpcGxlMihkZm9yXywgREZPUl9N QVJLRVIsIF9jYWxjX3N0YXRzKQorI2RlZmluZSBkZm9yX2NhbGNfbmJ5dGVzIENwcENvbmNh dFRyaXBsZTIoZGZvcl8sIERGT1JfTUFSS0VSLCBfY2FsY19uYnl0ZXMpCisKKy8qIEZ1bmN0 aW9ucyBvZiB0aGUgdmVjdCB1bml0ICovCisjZGVmaW5lIHZlY3RfaW5pdAkJICAgQ3BwQ29u Y2F0VHJpcGxlMih2ZWN0XywgREZPUl9NQVJLRVIsIF9pbml0KQorI2RlZmluZSB2ZWN0X2Zp bGwJCSAgIENwcENvbmNhdFRyaXBsZTIodmVjdF8sIERGT1JfTUFSS0VSLCBfZmlsbCkKKyNk ZWZpbmUgdmVjdF9yZXNlcnZlCSAgIENwcENvbmNhdFRyaXBsZTIodmVjdF8sIERGT1JfTUFS S0VSLCBfcmVzZXJ2ZSkKKyNkZWZpbmUgdmVjdF9hcHBlbmQJCSAgIENwcENvbmNhdFRyaXBs ZTIodmVjdF8sIERGT1JfTUFSS0VSLCBfYXBwZW5kKQorI2RlZmluZSB2ZWN0X3ByaW50CQkg ICBDcHBDb25jYXRUcmlwbGUyKHZlY3RfLCBERk9SX01BUktFUiwgX3ByaW50KQorI2RlZmlu ZSB2ZWN0X2NvbXBhcmUJICAgQ3BwQ29uY2F0VHJpcGxlMih2ZWN0XywgREZPUl9NQVJLRVIs IF9jb21wYXJlKQorI2RlZmluZSB2ZWN0X2luc2VydAkJICAgQ3BwQ29uY2F0VHJpcGxlMih2 ZWN0XywgREZPUl9NQVJLRVIsIF9pbnNlcnQpCisjZGVmaW5lIHZlY3RfY2xlYXIJCSAgIENw cENvbmNhdFRyaXBsZTIodmVjdF8sIERGT1JfTUFSS0VSLCBfY2xlYXIpCisKKyNkZWZpbmUg dXN2X2luc2VydAkJICAgQ3BwQ29uY2F0VHJpcGxlMih1c3ZfLCBERk9SX01BUktFUiwgX2lu c2VydCkKKyNkZWZpbmUgdXN2X3NlYXJjaAkJICAgQ3BwQ29uY2F0VHJpcGxlMih1c3ZfLCBE Rk9SX01BUktFUiwgX3NlYXJjaCkKKworLyogRnVuY3Rpb25zIG9mIHRoZSBiaXRwYWNrIHVu aXQgKi8KKyNkZWZpbmUgd2lkdGhfZnJvbV92YWwgQ3BwQ29uY2F0VHJpcGxlMih3aWR0aF8s IERGT1JfTUFSS0VSLCBfZnJvbV92YWwpCisjZGVmaW5lIHdpZHRoX3RvX21hc2sgIENwcENv bmNhdFRyaXBsZTIod2lkdGhfLCBERk9SX01BUktFUiwgX3RvX21hc2spCisjZGVmaW5lIGJp dHBhY2tfcGFjayAgIENwcENvbmNhdFRyaXBsZTIoYml0cGFja18sIERGT1JfTUFSS0VSLCBf cGFjaykKKyNkZWZpbmUgYml0cGFja191bnBhY2sgQ3BwQ29uY2F0VHJpcGxlMihiaXRwYWNr XywgREZPUl9NQVJLRVIsIF91bnBhY2spCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK KyAqIEVuZCBvZiBSZXVzYWJsZSBDb2RlCisgKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisK Ky8qCisgKiBEb24ndCBmb3JnZXQgdG8gaW5jbHVkZSB0aGlzIGNvZGUgaW4geW91ciBmaWxl IHRoYXQgdXNlcyB0aGlzIGhlYWRlcgorICogICAgICNpbmNsdWRlICJkZm9yX3RlbXBsX3Vu ZGVmLmgiCisgKgorICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9saWIvZGZvcl90ZW1w bF91bmRlZi5oIGIvc3JjL2luY2x1ZGUvbGliL2Rmb3JfdGVtcGxfdW5kZWYuaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZDYwZDM2MTkzMDgKLS0tIC9kZXYv bnVsbAorKysgYi9zcmMvaW5jbHVkZS9saWIvZGZvcl90ZW1wbF91bmRlZi5oCkBAIC0wLDAg KzEsMjkgQEAKKyN1bmRlZiBpdGVtX3QKKyN1bmRlZiB2ZWN0X3QKKyN1bmRlZiB1bmlxc29y dHZlY3RfdAorCisjdW5kZWYgZGZvcl9jYWxjX2RlbHRhcworI3VuZGVmIGRmb3JfY2FsY193 aWR0aAorI3VuZGVmIGRmb3JfcGFjaworI3VuZGVmIGRmb3JfdW5wYWNrCisjdW5kZWYgZGZv cl9hbmFseXplCisjdW5kZWYgZGZvcl9jYWxjX3N0YXRzCisjdW5kZWYgZGZvcl9jYWxjX25i eXRlcworCisjdW5kZWYgdmVjdF9jcmVhdGUKKyN1bmRlZiB2ZWN0X2NyZWF0ZV9maWxsZWQK KyN1bmRlZiB2ZWN0X3Jlc2VydmUKKyN1bmRlZiB2ZWN0X2FwcGVuZAorI3VuZGVmIHZlY3Rf ZGVzdHJveQorI3VuZGVmIHZlY3RfcHJpbnQKKyN1bmRlZiB2ZWN0X2NvbXBhcmUKKyN1bmRl ZiB2ZWN0X2luc2VydAorI3VuZGVmIHZlY3RfY2xlYXIKKworI3VuZGVmIHVzdl9pbnNlcnQK KyN1bmRlZiB1c3Zfc2VhcmNoCisKKyN1bmRlZiB3aWR0aF9mcm9tX3ZhbAorI3VuZGVmIHdp ZHRoX3RvX21hc2sKKyN1bmRlZiBiaXRwYWNrX3BhY2sKKyN1bmRlZiBiaXRwYWNrX3VucGFj awpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbGliL2Rmb3JfdTE2LmggYi9zcmMvaW5jbHVk ZS9saWIvZGZvcl91MTYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uNzE2Yzk5ZGJjNTUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9saWIvZGZv cl91MTYuaApAQCAtMCwwICsxLDEzIEBACisvKgorICogRmlsZTogZGZvcl91MTYuaAorICov CisKKyNpZm5kZWYgX0RGT1JfVTE2X0hfCisjZGVmaW5lIF9ERk9SX1UxNl9IXworCisvKiBj bGFuZy1mb3JtYXQgb2ZmICovCisjaW5jbHVkZSAiZGZvcl91MTZfY29uZmlnLmgiCisjaW5j bHVkZSAiZGZvcl90ZW1wbC5oIgorLyogY2xhbmctZm9ybWF0IG9uICovCisKKyNlbmRpZiAv KiBfREZPUl9VMTZfSF8gKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2xpYi9kZm9yX3Ux Nl9jb25maWcuaCBiL3NyYy9pbmNsdWRlL2xpYi9kZm9yX3UxNl9jb25maWcuaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNzUxOTM3YWM1MTMKLS0tIC9kZXYv bnVsbAorKysgYi9zcmMvaW5jbHVkZS9saWIvZGZvcl91MTZfY29uZmlnLmgKQEAgLTAsMCAr MSw0IEBACisjZGVmaW5lIERGT1JfSVRFTV9UWVBFIHVpbnQxNl90CisjZGVmaW5lIERGT1Jf TUFSS0VSCSAgIHUxNgorI2RlZmluZSBERk9SX01BTExPQwkgICBtYWxsb2MKKyNkZWZpbmUg REZPUl9GUkVFCSAgIGZyZWUKLS0gCjIuNTMuMAoK --------------1IUaLyPVXDOy4S8HXjAMePOm Content-Type: text/x-patch; charset=UTF-8; name="v11-0004-Tests-for-Delta-Frame-of-Reference-unit.patch" Content-Disposition: attachment; filename="v11-0004-Tests-for-Delta-Frame-of-Reference-unit.patch" Content-Transfer-Encoding: base64 RnJvbSA1MjNjNWEwODAxMGU4ODgyZTliZjJmNjAxZjFlODUwOTJhNWM2MWIzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFdmdlbnkgVm9yb3BhZXYgPGV2b3JvcEBnbWFpbC5j b20+CkRhdGU6IE1vbiwgMTMgQXByIDIwMjYgMjM6MTg6MDcgKzA4MDAKU3ViamVjdDogW1BB VENIIHYxMSA0LzVdIFRlc3RzIGZvciBEZWx0YSBGcmFtZSBvZiBSZWZlcmVuY2UgdW5pdC4K ClRoZSB1bml0IHRlc3QgaXMgaW1wbGVtZW50ZWQgYXMgYSBDIHByb2dyYW0gKEVMRiBleGVj dXRhYmxlKS4gVGhlIHRlc3QKY2FuIGJlIHJ1biB3aXRoIHRoZSAnbWFrZSBjaGVjay11bml0 Jy4gVGVzdHMgc3VwcG9ydCB0aGUgVEFQIHByb3RvY29sCmFuZCBhcmUgZXhlY3V0ZWQgdXNp bmcgdGhlIFByb3ZlIHV0aWxpdHkuCgpBdXRob3I6IEV2Z2VueSBWb3JvcGFldiA8ZXZnZW55 LnZvcm9wYWV2QHRhbnRvcmxhYnMuY29tPiA8ZXZvcm9wQGdtYWlsLmNvbT4KUmV2aWV3ZWQg Ynk6IEFuZHJleSBCb3JvZGluIDx4NG1tbUB5YW5kZXgtdGVhbS5ydT4KLS0tCiBzcmMvdGVz dC9kZm9yLy5naXRpZ25vcmUgICAgICB8ICAgMSArCiBzcmMvdGVzdC9kZm9yL01ha2VmaWxl ICAgICAgICB8ICAgMyArLQogc3JjL3Rlc3QvZGZvci9tZXNvbi5idWlsZCAgICAgfCAgIDIg Kwogc3JjL3Rlc3QvZGZvci90ZXN0X2Rmb3JfdTE2LmMgfCAzNzEgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAzNzYgaW5zZXJ0aW9ucygr KSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2Rmb3IvdGVz dF9kZm9yX3UxNi5jCgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvZGZvci8uZ2l0aWdub3JlIGIv c3JjL3Rlc3QvZGZvci8uZ2l0aWdub3JlCmluZGV4IDBkNzdhNTEyMTZiLi40NDdlOTVjMGMw OSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvZGZvci8uZ2l0aWdub3JlCisrKyBiL3NyYy90ZXN0 L2Rmb3IvLmdpdGlnbm9yZQpAQCAtMSwzICsxLDQgQEAKIHRlc3RfYml0cGFja191MTYKK3Rl c3RfZGZvcl91MTYKIHRlc3RfdW5pcXNvcnR2ZWN0X3UxNgogdGVzdF92ZWN0X3UxNgpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvZGZvci9NYWtlZmlsZSBiL3NyYy90ZXN0L2Rmb3IvTWFrZWZp bGUKaW5kZXggNGZjOWY0YmMxYmEuLjJjYTk4Zjc2YTBmIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9kZm9yL01ha2VmaWxlCisrKyBiL3NyYy90ZXN0L2Rmb3IvTWFrZWZpbGUKQEAgLTMzLDcg KzMzLDggQEAgTElCVEFQX09CSlMgPSAkKHRvcF9idWlsZGRpcikvc3JjL3Rlc3QvbGlidGFw L3RhcC5vCiAKIFRFU1RTPSB0ZXN0X3ZlY3RfdTE2IFwKICAgICAgICB0ZXN0X3VuaXFzb3J0 dmVjdF91MTYgXAotICAgICAgIHRlc3RfYml0cGFja191MTYKKyAgICAgICB0ZXN0X2JpdHBh Y2tfdTE2IFwKKyAgICAgICB0ZXN0X2Rmb3JfdTE2CiAKICQoVEVTVFM6JT0lLm8pOiBDUFBG TEFHUyArPSAtSSQodG9wX2J1aWxkZGlyKS9zcmMvdGVzdCAtREZST05URU5ECiAKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L2Rmb3IvbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9kZm9yL21lc29u LmJ1aWxkCmluZGV4IGNlNzYyYzUyNDMwLi40YTc2MGFiNjhmYSAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvZGZvci9tZXNvbi5idWlsZAorKysgYi9zcmMvdGVzdC9kZm9yL21lc29uLmJ1aWxk CkBAIC04LDYgKzgsNyBAQCBkZm9yX2RpciA9IGpvaW5fcGF0aHMobWVzb24ucHJvamVjdF9z b3VyY2Vfcm9vdCgpLCAnc3JjL2JhY2tlbmQvbGliJykKIGRmb3Jfc291cmNlcyA9IGZpbGVz KAogICBqb2luX3BhdGhzKGRmb3JfZGlyLCAndmVjdF91MTYuYycpLAogICBqb2luX3BhdGhz KGRmb3JfZGlyLCAnYml0cGFja191MTYuYycpLAorICBqb2luX3BhdGhzKGRmb3JfZGlyLCAn ZGZvcl91MTYuYycpLAogKQogCiBkZm9yX3Rlc3RfbGliID0gc3RhdGljX2xpYnJhcnkoCkBA IC0zNiw2ICszNyw3IEBAIHRlc3RfbmFtZXMgPSBbCiAgICd0ZXN0X3ZlY3RfdTE2JywKICAg J3Rlc3RfdW5pcXNvcnR2ZWN0X3UxNicsCiAgICd0ZXN0X2JpdHBhY2tfdTE2JywKKyAgJ3Rl c3RfZGZvcl91MTYnLAogXQogCiBmb3JlYWNoIHQgOiB0ZXN0X25hbWVzCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9kZm9yL3Rlc3RfZGZvcl91MTYuYyBiL3NyYy90ZXN0L2Rmb3IvdGVzdF9k Zm9yX3UxNi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zMjJi NzE0YmEzOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2Rmb3IvdGVzdF9kZm9yX3Ux Ni5jCkBAIC0wLDAgKzEsMzcxIEBACisvKgorICogdGVzdF9kZm9yLmMKKyAqLworCisjaW5j bHVkZSAibGliL2JpdHBhY2tfdTE2LmgiCisjaW5jbHVkZSAibGliL2Rmb3JfdTE2LmgiCisj aW5jbHVkZSAibGliL3ZlY3RfdTE2LmgiCisjaW5jbHVkZSAibGlidGFwL3RhcC5oIgorI2lu Y2x1ZGUgInRlc3QuaCIKKwordm9pZCB0ZXN0X2RlbHRhX2NhbGN1bGF0aW9uKHNpemVfdCBj bnQsIHVpbnQxNl90IGluQXJyW10sIHNpemVfdCBjbnREZWx0YSwKKwkJCQkJCQl1aW50MTZf dCBtYXJEZWx0YXNFeHBlY3RlZFtdLCBzaXplX3QgY250V2lkdGgsCisJCQkJCQkJdWludDE2 X3QgbWFyV2lkdGhzRXhwZWN0ZWRbXSwgc2l6ZV90IGNudFN0YXQsCisJCQkJCQkJdWludDE2 X3QgbWFyV2lkdGhzU3RhdEV4cGVjdGVkW10pOworCit2b2lkIHRlc3RfY2FsY19leGNlcHRp b25zKHNpemVfdCBudW1EZWx0YXMsIHNpemVfdCBudW1XaWR0aHMsCisJCQkJCQkgIHVpbnQx Nl90IG1hcldpZHRoc1tdLCBzaXplX3QgbnVtQ291bnRzLAorCQkJCQkJICB1aW50MTZfdCBt YXJDb3VudHNbXSwgc2l6ZV90IHN6QXdhaXRlZFdpZHRoLAorCQkJCQkJICBzaXplX3QgY250 QXdhaXRlZEV4Y0NvdW50KTsKKwordm9pZCB0ZXN0X2Rmb3Ioc2l6ZV90IGNudCwgdWludDE2 X3QgYXJyW10sIGV4Y2FsZ190IGlzRXhjVXNhZ2UsCisJCQkgICBzaXplX3Qgd2lkRGVsdGFB d2FpdGVkLCBzaXplX3QgY250RXhjQ250QXdhaXRlZCwKKwkJCSAgIHNpemVfdCB3aWRFeGNX aWRBd2FpdGVkLCBzaXplX3Qgd2lkRXhjUG9zV2lkQXdhaXRlZCwKKwkJCSAgIHNpemVfdCBj bnRCaXRzQ291bnRBd2FpdGVkLCBzaXplX3QgY250Qnl0ZUNvdW50QXdhaXRlZCwKKwkJCSAg IGZsb2F0IGZsTWluUmF0aW9Bd2FpdGVkLCB1aW50OF90IHU4YXJQYWNrQXdhaXRlZFtdKTsK Kwordm9pZAordGVzdF9kZWx0YV9jYWxjdWxhdGlvbihzaXplX3QgY250LCB1aW50MTZfdCBp bkFycltdLCBzaXplX3QgY250RGVsdGEsCisJCQkJCSAgIHVpbnQxNl90IG1hckRlbHRhc0V4 cGVjdGVkW10sIHNpemVfdCBjbnRXaWR0aCwKKwkJCQkJICAgdWludDE2X3QgbWFyV2lkdGhz RXhwZWN0ZWRbXSwgc2l6ZV90IGNudFN0YXQsCisJCQkJCSAgIHVpbnQxNl90IG1hcldpZHRo c1N0YXRFeHBlY3RlZFtdKQoreworCXZlY3RfdTE2X3QgdkRlbHRhczsKKwl2ZWN0X3UxNl90 IHZXaWR0aENvdW50ZXJzOworCXVuaXFzb3J0dmVjdF91MTZfdCB1c3ZEZWx0YVdpZHRoczsK Kwl2ZWN0X3UxNl90IGF3YWl0ZWQ7CisJaW50IHJlczsKKworCXByaW50ZigiLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKKwlwcmludGYo IlRlc3RcbiIpOworCXByaW50ZigiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tXG4iKTsKKworCXByaW50ZigiICBpbkFycjoiKTsKKwlmb3IgKHNp emVfdCBpID0gMDsgaSA8IGNudDsgaSsrKQorCQlwcmludGYoIiAldSIsICh1aW50MzJfdClp bkFycltpXSk7CisJcHJpbnRmKCJcbiIpOworCisJdmVjdF91MTZfaW5pdCgmdkRlbHRhcywg MCwgTlVMTCk7CisJdmVjdF91MTZfaW5pdCgmdXN2RGVsdGFXaWR0aHMsIDAsIE5VTEwpOwor CXZlY3RfdTE2X2luaXQoJnZXaWR0aENvdW50ZXJzLCAwLCBOVUxMKTsKKworCS8qIFRlc3Rl ZCBmdW5jdGlvbiAqLworCXJlcyA9IGRmb3JfdTE2X2NhbGNfZGVsdGFzKGNudCwgaW5BcnIs ICZ2RGVsdGFzLCAmdXN2RGVsdGFXaWR0aHMsCisJCQkJCQkJICAgJnZXaWR0aENvdW50ZXJz KTsKKwljbXBfb2socmVzLCAiPT0iLCAwKTsKKworCXByaW50ZigiICBEZWx0YSBleHBlY3Rl ZDoiKTsKKwlmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNudERlbHRhOyBpKyspCisJCXByaW50 ZigiICV1IiwgKHVpbnQzMl90KW1hckRlbHRhc0V4cGVjdGVkW2ldKTsKKwlwcmludGYoIlxu Iik7CisKKwlwcmludGYoIiAgRGVsdGEgZmFjdDogICAgIik7CisJdmVjdF91MTZfcHJpbnQo JnZEZWx0YXMpOworCisJY21wX29rKHZEZWx0YXMuY250LCAiPT0iLCBjbnQsICJUaGUgRGVs dGEgY291bnQgaXMgT0suIik7CisJdmVjdF91MTZfaW5pdCgmYXdhaXRlZCwgMCwgTlVMTCk7 CisJdmVjdF91MTZfZmlsbCgmYXdhaXRlZCwgY250LCBtYXJEZWx0YXNFeHBlY3RlZCk7CisJ Y21wX29rKHZlY3RfdTE2X2NvbXBhcmUoJnZEZWx0YXMsICZhd2FpdGVkKSwgIj09IiwgMCwK KwkJICAgIkFsbCBkZWx0YXMgYXJlIGNhbGN1bGF0ZWQgcHJvcGVybHkiKTsKKwl2ZWN0X3Ux Nl9jbGVhcigmYXdhaXRlZCk7CisKKwlwcmludGYoIiAgV2lkdGggZXhwZWN0ZWQ6Iik7CisJ Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBjbnRXaWR0aDsgaSsrKQorCQlwcmludGYoIiAldSIs ICh1aW50MzJfdCltYXJXaWR0aHNFeHBlY3RlZFtpXSk7CisJcHJpbnRmKCJcbiIpOworCisJ cHJpbnRmKCIgIFdpZHRoIGZhY3Q6ICAgICIpOworCXZlY3RfdTE2X3ByaW50KCZ1c3ZEZWx0 YVdpZHRocyk7CisKKwljbXBfb2sodXN2RGVsdGFXaWR0aHMuY250LCAiPT0iLCBjbnRXaWR0 aCwgIlRoZSBXaWR0aCBjb3VudCBpcyBPSy4iKTsKKworCS8qIGRvbid0IHJlYWxseSBuZWVk IGluaXRpYWxpc2F0aW9uIGFmdGVyIHZlY3RfY2xlYW4gaGF2aW5nIGJlZW4gZG9uZQorCSAq IGFib3ZlKi8KKwkvKiB2ZWN0X3UxNl9pbml0KCZhd2FpdGVkLCAwLCBOVUxMKTsgKi8KKwor CXZlY3RfdTE2X2ZpbGwoJmF3YWl0ZWQsIGNudFdpZHRoLCBtYXJXaWR0aHNFeHBlY3RlZCk7 CisJY21wX29rKHZlY3RfdTE2X2NvbXBhcmUoJnVzdkRlbHRhV2lkdGhzLCAmYXdhaXRlZCks ICI9PSIsIDAsCisJCSAgICJBbGwgZGVsdGEgd2lkdGhzIGlzIE9LLiIpOworCXZlY3RfdTE2 X2NsZWFyKCZhd2FpdGVkKTsKKworCXByaW50ZigiICBTdGF0aXN0aWNzIGV4cGVjdGVkOiIp OworCWZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY250U3RhdDsgaSsrKQorCQlwcmludGYoIiAl dSIsICh1aW50MzJfdCltYXJXaWR0aHNTdGF0RXhwZWN0ZWRbaV0pOworCXByaW50ZigiXG4i KTsKKworCXByaW50ZigiICBTdGF0aXN0aWNzIGZhY3Q6ICAgICIpOworCXZlY3RfdTE2X3By aW50KCZ2V2lkdGhDb3VudGVycyk7CisKKwljbXBfb2soCisJCXVzdkRlbHRhV2lkdGhzLmNu dCwgIj09IiwgdldpZHRoQ291bnRlcnMuY250LAorCQkiVGhlIGNvdW50IG9mIHN0YXRpc3Rp Y3Mgb2Ygd2lkdGhzIGlzIGVxdWFsIHRvIHRoZSBjb3VudCBvZiB3aWR0aHMuIik7CisKKwkv KiBkb24ndCByZWFsbHkgbmVlZCBpbml0aWFsaXNhdGlvbiBhZnRlciB2ZWN0X2NsZWFuIGhh dmluZyBiZWVuIGRvbmUKKwkgKiBhYm92ZSovCisJdmVjdF91MTZfZmlsbCgmYXdhaXRlZCwg Y250U3RhdCwgbWFyV2lkdGhzU3RhdEV4cGVjdGVkKTsKKwljbXBfb2sodmVjdF91MTZfY29t cGFyZSgmdldpZHRoQ291bnRlcnMsICZhd2FpdGVkKSwgIj09IiwgMCwKKwkJICAgIldpZHRo IHN0YXRpc3RpY3MgaXMgT0suIik7CisJdmVjdF91MTZfY2xlYXIoJmF3YWl0ZWQpOworCisJ dmVjdF91MTZfY2xlYXIoJnZEZWx0YXMpOworCXZlY3RfdTE2X2NsZWFyKCZ1c3ZEZWx0YVdp ZHRocyk7CisJdmVjdF91MTZfY2xlYXIoJnZXaWR0aENvdW50ZXJzKTsKK30KKwordm9pZAor dGVzdF9jYWxjX2V4Y2VwdGlvbnMoc2l6ZV90IG51bURlbHRhcywgc2l6ZV90IG51bVdpZHRo cywgdWludDE2X3QgbWFyV2lkdGhzW10sCisJCQkJCSBzaXplX3QgbnVtQ291bnRzLCB1aW50 MTZfdCBtYXJDb3VudHNbXSwKKwkJCQkJIHNpemVfdCBzekF3YWl0ZWRXaWR0aCwgc2l6ZV90 IGNudEF3YWl0ZWRFeGNDb3VudCkKK3sKKwlpbnQgcmVzOworCXZlY3RfdTE2X3QgdldpZHRo Q291bnRlcnM7CisJdW5pcXNvcnR2ZWN0X3UxNl90IHVzdkRlbHRhV2lkdGhzOworCXNpemVf dCB3aWR0aCwgY250RXhjZXB0aW9uczsKKworCXZlY3RfdTE2X2luaXQoJnVzdkRlbHRhV2lk dGhzLCAwLCBOVUxMKTsKKwl2ZWN0X3UxNl9maWxsKCZ1c3ZEZWx0YVdpZHRocywgbnVtV2lk dGhzLCBtYXJXaWR0aHMpOworCisJdmVjdF91MTZfaW5pdCgmdldpZHRoQ291bnRlcnMsIDAs IE5VTEwpOworCXZlY3RfdTE2X2ZpbGwoJnZXaWR0aENvdW50ZXJzLCBudW1Db3VudHMsIG1h ckNvdW50cyk7CisKKwlyZXMgPSBkZm9yX3UxNl9jYWxjX3dpZHRoKG51bURlbHRhcywgJnVz dkRlbHRhV2lkdGhzLCAmdldpZHRoQ291bnRlcnMsCisJCQkJCQkJICAmd2lkdGgsICZjbnRF eGNlcHRpb25zKTsKKwljbXBfb2socmVzLCAiPT0iLCAwKTsKKwljbXBfb2sod2lkdGgsICI9 PSIsIHN6QXdhaXRlZFdpZHRoLCAiV2lkdGggaXMgT0suIik7CisJY21wX29rKGNudEV4Y2Vw dGlvbnMsICI9PSIsIGNudEF3YWl0ZWRFeGNDb3VudCwgIkV4Y2VwdGlvbnMgbnVtIGlzIE9L Iik7CisKKwl2ZWN0X3UxNl9jbGVhcigmdXN2RGVsdGFXaWR0aHMpOworCXZlY3RfdTE2X2Ns ZWFyKCZ2V2lkdGhDb3VudGVycyk7Cit9CisKK3ZvaWQKK3Rlc3RfZGZvcihzaXplX3QgY250 LCB1aW50MTZfdCBhcnJbXSwgZXhjYWxnX3QgaXNFeGNVc2FnZSwKKwkJICBzaXplX3Qgd2lk RGVsdGFXaWR0aEF3YWl0ZWQsIHNpemVfdCBjbnRFeGNDbnRBd2FpdGVkLAorCQkgIHNpemVf dCB3aWRFeGNXaWRBd2FpdGVkLCBzaXplX3Qgd2lkRXhjUG9zV2lkQXdhaXRlZCwKKwkJICBz aXplX3QgY250Qml0c0NvdW50QXdhaXRlZCwgc2l6ZV90IGNudEJ5dGVDb3VudEF3YWl0ZWQs CisJCSAgZmxvYXQgZmxNaW5SYXRpb0F3YWl0ZWQsIHVpbnQ4X3QgdThhclBhY2tBd2FpdGVk W10pCit7CisJaW50IHJlczsKKwlkZm9yX21ldGFfdCBkZm9yOworCWRmb3Jfc3RhdHNfdCBz dGF0czsKKwl1bmlxc29ydHZlY3RfdTE2X3QgZXh0cmFjdGVkOworCisJcmVzID0gZGZvcl91 MTZfcGFjayhjbnQsIGFyciwgaXNFeGNVc2FnZSwgJmRmb3IsIDAsIE5VTEwpOworCWNtcF9v ayhyZXMsICI9PSIsIDAsICJkZm9yX3BhY2sgZnVuYyBoYXMgcHJvY2Vzc2VkIE9LLiIpOwor CWNtcF9vayhkZm9yLml0ZW1fY250LCAiPT0iLCBjbnQsICJDb3VudCBvZiBkZWx0YXMgaXMg T0suIik7CisJY21wX29rKGRmb3IuZGVsdGFfd2lkLCAiPT0iLCB3aWREZWx0YVdpZHRoQXdh aXRlZCwgIkRlbHRhIHdpZHRoIGlzIE9LLiIpOworCWNtcF9vayhkZm9yLmV4Y19jbnQsICI9 PSIsIGNudEV4Y0NudEF3YWl0ZWQsICJFeGNlcHRpb24gY291bnQgaXMgT0suIik7CisJY21w X29rKGRmb3IuZXhjX3dpZCwgIj09Iiwgd2lkRXhjV2lkQXdhaXRlZCwgIkV4Y2VwdGlvbiB3 aWR0aCBpcyBPSy4iKTsKKwljbXBfb2soZGZvci5leGNfcG9zX3dpZCwgIj09Iiwgd2lkRXhj UG9zV2lkQXdhaXRlZCwKKwkJICAgIkV4Y2VwdGlvbiBwb3NpdGlvbiB3aWR0aCBpcyBPSy4i KTsKKwlvayhkZm9yLnBhY2sgIT0gTlVMTCwgIlBhY2sgaXMgY3JlYXRlZCAobm90IE5VTEwp LiIpOworCisJc3RhdHMgPSBkZm9yX3UxNl9jYWxjX3N0YXRzKGRmb3IpOworCWNtcF9vayhz dGF0cy5uYml0cywgIj09IiwgY250Qml0c0NvdW50QXdhaXRlZCwgIkJpdHMgY291bnQgaXMg T0suIik7CisJY21wX29rKGRmb3IubmJ5dGVzLCAiPT0iLCBjbnRCeXRlQ291bnRBd2FpdGVk LCAiQnl0ZXMgY291bnQgaXMgT0suIik7CisJb2soc3RhdHMucmF0aW8gPiBmbE1pblJhdGlv QXdhaXRlZCwgIkNvbXByZXNzaW9uIHJhdGlvIGlzIE9LLiIpOworCisJaWYgKHU4YXJQYWNr QXdhaXRlZCAhPSBOVUxMKQorCQlvaygwID09IG1lbWNtcChkZm9yLnBhY2ssIHU4YXJQYWNr QXdhaXRlZCwgY250Qnl0ZUNvdW50QXdhaXRlZCksCisJCSAgICJQYWNrIGNvbnRlbnQgaXMg T0suIik7CisJZWxzZQorCQlvaygwID09IDAsICJQYWNrIGNvbnRlbnQgY2hlY2sgaXMgc2tp cHBlZC4iKTsKKworCXRlc3RfcHJpbnRfdTE2X2FycmF5KGNudCwgKHVpbnQxNl90ICopYXJy LCAiXG5cbk9yaWdpbmFsIGludGVnZXIgYXJyYXkiKTsKKwl0ZXN0X3ByaW50X3U4X2FycmF5 KGRmb3IubmJ5dGVzLCBkZm9yLnBhY2ssICJDb21wcmVzc2VkIGludGVnZXIgYXJyYXkiKTsK KwlwcmludGYoIkNvbXByZXNzaW9uIHJhdGlvOiVmXG5cbiIsIHN0YXRzLnJhdGlvKTsKKwor CXZlY3RfdTE2X2luaXQoJmV4dHJhY3RlZCwgMCwgTlVMTCk7CisKKwlkZm9yX3UxNl91bnBh Y2soJmRmb3IsICZleHRyYWN0ZWQsIDAsIE5VTEwpOworCWNtcF9vayhleHRyYWN0ZWQuY250 LCAiPT0iLCBjbnQsICJFeHRyYWN0ZWQgY291bnQgaXMgT0siKTsKKwljbXBfb2soMCwgIj09 IiwgbWVtY21wKGFyciwgZXh0cmFjdGVkLm0sIGNudCksCisJCSAgICJFeHRyYWN0ZWQgYXJy YXkgaXMgZXF1YWwgdG8gb3JpZ2luYWwiKTsKKworCWZyZWUoZGZvci5wYWNrKTsKKwl2ZWN0 X3UxNl9jbGVhcigmZXh0cmFjdGVkKTsKK30KKworaW50CittYWluKHZvaWQpCit7CisJcGxh bigxMzApOworCXByaW50ZigiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PVxuIik7CisJcHJpbnRmKCJUZXN0IERFTFRBIENBTENVTEFUSU9OXG4iKTsKKwl7CisJ CXRlc3RfZGVsdGFfY2FsY3VsYXRpb24oCisJCQkxMCwgKHVpbnQxNl90W10pIHsgMCwgMSwg MiwgMywgNCwgNSwgNiwgNywgOCwgOSB9LCAvKiBpbkFyciAqLworCQkJMTAsCisJCQkodWlu dDE2X3RbXSkgeyAwLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLAorCQkJCQkJICAgMSB9LAkg ICAvKiBtYXJEZWx0YXNFeHBlY3RlZCovCisJCQkxLCAodWludDE2X3RbXSkgeyAxIH0sIC8q IG1hcldpZHRoc0V4cGVjdGVkICovCisJCQkxLCAodWludDE2X3RbXSkgeyAxMCB9IC8qIG1h cldpZHRoc1N0YXRFeHBlY3RlZCAqLyk7CisKKwkJdGVzdF9kZWx0YV9jYWxjdWxhdGlvbigK KwkJCTEwLCAodWludDE2X3RbXSkgeyAxLCAzLCA1LCA3LCA5LCAxMSwgMTMsIDE1LCAxNywg MTkgfSwgLyogaW5BcnIgKi8KKwkJCTEwLAorCQkJKHVpbnQxNl90W10pIHsgMSwgMiwgMiwg MiwgMiwgMiwgMiwgMiwgMiwKKwkJCQkJCSAgIDIgfSwJCSAgLyogbWFyRGVsdGFzRXhwZWN0 ZWQqLworCQkJMiwgKHVpbnQxNl90W10pIHsgMSwgMiB9LCAvKiBtYXJXaWR0aHNFeHBlY3Rl ZCAqLworCQkJMiwgKHVpbnQxNl90W10pIHsgMSwgOSB9IC8qIG1hcldpZHRoc1N0YXRFeHBl Y3RlZCAqLyk7CisKKwkJdGVzdF9kZWx0YV9jYWxjdWxhdGlvbigKKwkJCTE0LAorCQkJKHVp bnQxNl90W10pIHsgMTAwLCAyMDAsIDMwMCwgNDAwLCA0MDEsIDQwMiwgNDAzLCA0MDQsIDQw NiwgNDA4LAorCQkJCQkJICAgNDEwLCA0MTIsIDQxNCwgNDE2IH0sIC8qIGluQXJyICovCisJ CQkxNCwKKwkJCSh1aW50MTZfdFtdKSB7IDEwMCwgMTAwLCAxMDAsIDEwMCwgMSwgMSwgMSwg MSwgMiwgMiwgMiwgMiwgMiwKKwkJCQkJCSAgIDIgfSwJCQkgLyogbWFyRGVsdGFzRXhwZWN0 ZWQqLworCQkJMywgKHVpbnQxNl90W10pIHsgMSwgMiwgNyB9LCAvKiBtYXJXaWR0aHNFeHBl Y3RlZCAqLworCQkJMywgKHVpbnQxNl90W10pIHsgNCwgNiwgNCB9IC8qIG1hcldpZHRoc1N0 YXRFeHBlY3RlZCAqLyk7CisKKwkJdGVzdF9kZWx0YV9jYWxjdWxhdGlvbigxLCAodWludDE2 X3RbXSkgeyAxMjMgfSwgLyogaW5BcnIgKi8KKwkJCQkJCQkgICAxLCAodWludDE2X3RbXSkg eyAxMjMgfSwgLyogbWFyRGVsdGFzRXhwZWN0ZWQqLworCQkJCQkJCSAgIDEsICh1aW50MTZf dFtdKSB7IDcgfSwJLyogbWFyV2lkdGhzRXhwZWN0ZWQgKi8KKwkJCQkJCQkgICAxLAorCQkJ CQkJCSAgICh1aW50MTZfdFtdKSB7IDEgfSAvKiBtYXJXaWR0aHNTdGF0RXhwZWN0ZWQgKi8p OworCisJCXRlc3RfZGVsdGFfY2FsY3VsYXRpb24oMCwgTlVMTCwgLyogaW5BcnIgKi8KKwkJ CQkJCQkgICAwLCBOVUxMLCAvKiBtYXJEZWx0YXNFeHBlY3RlZCovCisJCQkJCQkJICAgMCwg TlVMTCwgLyogbWFyV2lkdGhzRXhwZWN0ZWQgKi8KKwkJCQkJCQkgICAwLCBOVUxMIC8qIG1h cldpZHRoc1N0YXRFeHBlY3RlZCAqLyk7CisJfQorCXByaW50ZigiVGVzdCBERUxUQSBDQUxD VUxBVElPTiBQQVNTRURcbiIpOworCXByaW50ZigiPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PVxuXG4iKTsKKworCXByaW50ZigiPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PVxuIik7CisJcHJpbnRmKCJUZXN0IEVYQ0VQVElPTlMg Q0FMQ1VMQVRJT05cbiIpOworCXsKKwkJaW50IHJlczsKKwkJdmVjdF91MTZfdCB2V2lkdGhD b3VudGVyczsKKwkJdW5pcXNvcnR2ZWN0X3UxNl90IHVzdkRlbHRhV2lkdGhzOworCQlzaXpl X3Qgd2lkdGgsIGNudEV4Y2VwdGlvbnM7CisKKwkJdmVjdF91MTZfaW5pdCgmdXN2RGVsdGFX aWR0aHMsIDAsIE5VTEwpOworCQl2ZWN0X3UxNl9maWxsKCZ1c3ZEZWx0YVdpZHRocywgMywg KHVpbnQxNl90W10pIHsgMSwgMiwgNyB9KTsKKworCQl2ZWN0X3UxNl9pbml0KCZ2V2lkdGhD b3VudGVycywgMCwgTlVMTCk7CisJCXZlY3RfdTE2X2ZpbGwoJnZXaWR0aENvdW50ZXJzLCAz LCAodWludDE2X3RbXSkgeyA0LCA2LCA0IH0pOyAvLyA0KzYrND0xNAorCisJCXJlcyA9IGRm b3JfdTE2X2NhbGNfd2lkdGgoMTQsICZ1c3ZEZWx0YVdpZHRocywgJnZXaWR0aENvdW50ZXJz LCAmd2lkdGgsCisJCQkJCQkJCSAgJmNudEV4Y2VwdGlvbnMpOworCQljbXBfb2socmVzLCAi PT0iLCAwKTsKKwkJY21wX29rKHdpZHRoLCAiPT0iLCA3LCAiV2lkdGhzPXsxLDIsN30sIENv dW50ZXJzPXs0LDYsNH0gPT4gd2lkdGg9NyIpOworCQljbXBfb2soY250RXhjZXB0aW9ucywg Ij09IiwgMCwKKwkJCSAgICJXaWR0aHM9ezEsMiw3fSwgQ291bnRlcnM9ezQsNiw0fSA9PiBl eGNwdGlvbnNfbnVtPTAiKTsKKwl9CisKKwl0ZXN0X2NhbGNfZXhjZXB0aW9ucygxNCwgMywg KHVpbnQxNl90W10pIHsgMSwgMiwgNyB9LCAvKiB3aWR0aHMgb2YgZGVsdGFzKi8KKwkJCQkJ CSAzLCAodWludDE2X3RbXSkgeyA0LCA2LCA0IH0sCSAgLyogc3RhdGlzdGljcyAqLworCQkJ CQkJIDcsCSAvKiB3aWR0aCBvZiBzaG9ydCBkZWx0YXMgKi8KKwkJCQkJCSAwKTsgLyogbnVt YmVyIG9mIGV4Y2VwdGlvbnMqLworCisJdGVzdF9jYWxjX2V4Y2VwdGlvbnMoMTQsIDMsICh1 aW50MTZfdFtdKSB7IDEsIDIsIDcgfSwgLyogd2lkdGhzICovCisJCQkJCQkgMywgKHVpbnQx Nl90W10pIHsgNiwgNywgMSB9LAkgIC8qIHN0YXQgKi8KKwkJCQkJCSAyLCAxKTsgLyogc2hv cnQgZGVsdGFzIHdpZHRoLCBleGNlcHRpb25zIGNvdW50Ki8KKworCXRlc3RfY2FsY19leGNl cHRpb25zKDQwLCAzLCAodWludDE2X3RbXSkgeyA1LCA2LCAxMiB9LCAvKiB3aWR0aHMgKi8K KwkJCQkJCSAzLCAodWludDE2X3RbXSkgeyAzNiwgMiwgMiB9LAkgICAvKiBzdGF0ICovCisJ CQkJCQkgNSwgNCk7IC8qIHNob3J0IGRlbHRhcyB3aWR0aCwgZXhjZXB0aW9ucyBjb3VudCov CisKKwl0ZXN0X2NhbGNfZXhjZXB0aW9ucyg0MCwgNCwgKHVpbnQxNl90W10pIHsgNSwgNiwg NywgMTIgfSwgNCwKKwkJCQkJCSAodWludDE2X3RbXSkgeyAzNiwgMSwgMSwgMiB9LCA1LCA0 KTsKKworCXRlc3RfY2FsY19leGNlcHRpb25zKDQwLCA0LCAodWludDE2X3RbXSkgeyA1LCA2 LCA3LCAxMiB9LCA0LAorCQkJCQkJICh1aW50MTZfdFtdKSB7IDM1LCAxLCAyLCAyIH0sIDYs IDQpOworCisJdGVzdF9jYWxjX2V4Y2VwdGlvbnMoNDAsIDQsICh1aW50MTZfdFtdKSB7IDUs IDYsIDcsIDEyIH0sIDQsCisJCQkJCQkgKHVpbnQxNl90W10pIHsgMzQsIDEsIDIsIDMgfSwg NywgMyk7CisKKwl0ZXN0X2NhbGNfZXhjZXB0aW9ucyg0MCwgNCwgKHVpbnQxNl90W10pIHsg NSwgNiwgNywgMTIgfSwgNCwKKwkJCQkJCSAodWludDE2X3RbXSkgeyAxLCAzNCwgMiwgMyB9 LCA3LCAzKTsKKworCXRlc3RfY2FsY19leGNlcHRpb25zKDQwLCA0LCAodWludDE2X3RbXSkg eyA1LCA2LCA3LCAxMiB9LCA0LAorCQkJCQkJICh1aW50MTZfdFtdKSB7IDEsIDMzLCAyLCA0 IH0sIDcsIDQpOworCisJdGVzdF9jYWxjX2V4Y2VwdGlvbnMoNDAsIDQsICh1aW50MTZfdFtd KSB7IDUsIDYsIDcsIDEyIH0sIDQsCisJCQkJCQkgKHVpbnQxNl90W10pIHsgMSwgMzIsIDIs IDUgfSwgMTIsIDApOworCisJcHJpbnRmKCJUZXN0IEVYQ0VQVElPTlMgQ0FMQ1VMQVRJT04g UEFTU0VEXG4iKTsKKwlwcmludGYoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT1cblxuIik7CisKKwlwcmludGYoIj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT1cbiIpOworCXByaW50ZigiVGVzdCBERUxUQSBGUkFNRSBPRiBSRUZF UkVOQ0VTIFBBQ0tJTkdcbiIpOworCisJdGVzdF9kZm9yKDE2LAorCQkJICAodWludDE2X3Rb XSkgeyAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQs CisJCQkJCQkJIDE1IH0sIC8qIGNudCwgYXJyYXkgKi8KKwkJCSAgREZPUl9FWENfRE9OVF9V U0UsICAgLyogZmxhZyBvbiB1c2Ugb2YgZXhjZXB0aW9ucyAqLworCQkJICAxLAkJCQkgICAv KiBhd2FpdGVkIHdpZHRoIG9mIHNob3J0IGRlbHRhcyAqLworCQkJICAwLAkJCQkgICAvKiBh d2FpdGVkIGNvdW50IG9mIGV4Y2VwdGlvbnMgKi8KKwkJCSAgMCwJCQkJICAgLyogYXdhaXRl ZCBleGNlcHRpb24gd2lkdGgqLworCQkJICAwLAkJCQkgICAvKiBhd2FpdGVkIGV4Y2VwdGlv biBwb3NpdGlvbiB3aWR0aCovCisJCQkgIDE2LAkJCQkgICAvKiBhd2FpdGVkIGJpdHMgY291 bnQgKi8KKwkJCSAgMiwJCQkJICAgLyogY250Qnl0ZUNvdW50QXdhaXRlZCAqLworCQkJICAx NS45OSwgLyogYXdhaXRlZCByYXRpbyBtaW4gdmFsdWUgKHJhdGlvID49IDE1Ljk5KSAqLwor CQkJICAodWludDhfdFtdKSB7IDB4RkUsIDB4RkYgfSk7CisKKwl0ZXN0X2Rmb3IoMTYsCisJ CQkgICh1aW50MTZfdFtdKSB7IDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAx MSwgMTIsIDEzLCAxNCwKKwkJCQkJCQkgMTUgfSwgLyogY250LCBhcnJheSAqLworCQkJICBE Rk9SX0VYQ19VU0UsIC8qIGZsYWcgb24gdXNlIG9mIGV4Y2VwdGlvbnMgKi8KKwkJCSAgMSwJ CQkvKiBhd2FpdGVkIHdpZHRoIG9mIHNob3J0IGRlbHRhcyAqLworCQkJICAwLAkJCS8qIGF3 YWl0ZWQgY291bnQgb2YgZXhjZXB0aW9ucyAqLworCQkJICAwLAkJCS8qIGF3YWl0ZWQgZXhj ZXB0aW9uIHdpZHRoKi8KKwkJCSAgMCwJCQkvKiBhd2FpdGVkIGV4Y2VwdGlvbiBwb3NpdGlv biB3aWR0aCovCisJCQkgIDE2LAkJCS8qIGF3YWl0ZWQgYml0cyBjb3VudCAqLworCQkJICAy LAkJCS8qIGNudEJ5dGVDb3VudEF3YWl0ZWQgKi8KKwkJCSAgMTUuOTksCQkvKiBhd2FpdGVk IHJhdGlvIG1pbiB2YWx1ZSAocmF0aW8gPj0gMTUuOTkpICovCisJCQkgICh1aW50OF90W10p IHsgMHhGRSwgMHhGRiB9KTsKKworCXRlc3RfZGZvcigxNiwKKwkJCSAgKHVpbnQxNl90W10p IHsgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LAor CQkJCQkJCSAxMDIzIH0sIC8qIGNudCwgYXJyYXkgKi8KKwkJCSAgREZPUl9FWENfRE9OVF9V U0UsCSAvKiBmbGFnIG9uIHVzZSBvZiBleGNlcHRpb25zICovCisJCQkgIDEwLAkJCQkJIC8q IGF3YWl0ZWQgd2lkdGggb2Ygc2hvcnQgZGVsdGFzICovCisJCQkgIDAsCQkJCQkgLyogYXdh aXRlZCBjb3VudCBvZiBleGNlcHRpb25zICovCisJCQkgIDAsCQkJCQkgLyogYXdhaXRlZCBl eGNlcHRpb24gd2lkdGgqLworCQkJICAwLAkJCQkJIC8qIGF3YWl0ZWQgZXhjZXB0aW9uIHBv c2l0aW9uIHdpZHRoKi8KKwkJCSAgMTAgKiAxNiwJCQkJIC8qIGF3YWl0ZWQgYml0cyBjb3Vu dCAqLworCQkJICAyMCwJCQkJCSAvKiBhd2FpdGVkIGJ5dGVzIGNvdW50ICovCisJCQkgIDEu NSwJCQkJCSAvKiBhd2FpdGVkIHJhdGlvIG1pbiB2YWx1ZSAqLworCQkJICAodWludDhfdFtd KSB7IDB4MDAsIDB4MDQsIDB4MTAsIDB4NDAsIDB4MDAsIDB4MDEsIDB4MDQsCisJCQkJCQkJ MHgxMCwgMHg0MCwgMHgwMCwgMHgwMSwgMHgwNCwgMHgxMCwgMHg0MCwKKwkJCQkJCQkweDAw LCAweDAxLCAweDA0LCAweDEwLCAweDQwLCAweEZDIH0pOworCisJdGVzdF9kZm9yKDE2LAor CQkJICAodWludDE2X3RbXSkgeyAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwg MTEsIDEyLCAxMywgMTQsCisJCQkJCQkJIDEwMjMgfSwgLyogY250LCBhcnJheSAqLworCQkJ ICBERk9SX0VYQ19VU0UsCQkJIC8qIGZsYWcgb24gdXNlIG9mIGV4Y2VwdGlvbnMgKi8KKwkJ CSAgMSwJCQkJCSAvKiBhd2FpdGVkIHdpZHRoIG9mIHNob3J0IGRlbHRhcyAqLworCQkJICAx LAkJCQkJIC8qIGF3YWl0ZWQgY291bnQgb2YgZXhjZXB0aW9ucyAqLworCQkJICA5LAkJCQkJ IC8qIGF3YWl0ZWQgZXhjZXB0aW9uIHdpZHRoKi8KKwkJCSAgNCwJCQkJCSAvKiBhd2FpdGVk IGV4Y2VwdGlvbiBwb3NpdGlvbiB3aWR0aCovCisJCQkgIDE2ICogMSArIDkgKyA0LAkJIC8q IGF3YWl0ZWQgYml0cyBjb3VudCAqLworCQkJICA0LAkJCQkJIC8qIGF3YWl0ZWQgYnl0ZXMg Y291bnQgKi8KKwkJCSAgNy45OSwJCQkJCSAvKiBhd2FpdGVkIHJhdGlvIG1pbiB2YWx1ZSAq LworCQkJICAodWludDhfdFtdKSB7IDB4RkUsIDB4RkYsIDB4RjgsIDB4MUYgfSk7CisKKwl0 ZXN0X2Rmb3IoMzAsIC8qIGNudCAqLworCQkJCQkgICh1aW50MTZfdFtdKSB7IDAsIDEsIDIs IDMsIDQsCisJCQkJCQkJCQkgNSwgNiwgNywgOCwgOSwKKyAgLyogZGVsdGE9MiwgcG9zPTEw LCBkZWx0YXBvcz0xMCAqLyAxMSwgMTIsIDEzLCAxNCwgMTUsCisJCQkJCQkJCQkgMTYsIDE3 LCAxOCwgMTksIDIwLAorCQkJCQkJCQkJIDIxLCAyMiwgMjMsIDI0LCAyNSwKKyAgLyogZGVs dGE9MywgcG9zPTI1LCBkZWx0YXBvcz0xNSAqLyAyOCwgMjksIDMwLCAzMSwKKyAgLyogZGVs dGE9MywgcG9zPTI5LCBkZWx0YXBvcz00ICovCSAzNCB9LCAgCQkJCS8qIGFycmF5ICovCisJ CQkgIERGT1JfRVhDX1VTRSwJCQkgIC8qIGZsYWcgb24gdXNlIG9mIGV4Y2VwdGlvbnMgKi8K KwkJCSAgMSwJCQkJCSAgLyogYXdhaXRlZCB3aWR0aCBvZiBzaG9ydCBkZWx0YXMgKi8KKwkJ CSAgMywJCQkJCSAgLyogYXdhaXRlZCBjb3VudCBvZiBleGNlcHRpb25zICovCisJCQkgIDEs CQkJCQkgIC8qIGF3YWl0ZWQgZXhjZXB0aW9uIHdpZHRoKi8KKwkJCSAgNCwJCQkJCSAgLyog YXdhaXRlZCBleGNlcHRpb24gcG9zaXRpb24gd2lkdGgqLworCQkJICAzMCAqIDEgKyAzICog MSArIDMgKiA0LCAvKiBhd2FpdGVkIGJpdHMgY291bnQgKi8KKwkJCSAgNiwJCQkJCSAgLyog YXdhaXRlZCBieXRlcyBjb3VudCAqLworCQkJICA5Ljk5LAkJCQkJICAvKiBhd2FpdGVkIHJh dGlvIG1pbiB2YWx1ZSAqLworCQkJICAodWludDhfdFtdKSB7IDB4RkUsIDB4RkIsIDB4RkYs IDB4RkYsIDB4RjUsIDB4MDkgfSk7CisKKwlwcmludGYoIlRlc3QgREVMVEEgRlJBTUUgT0Yg UkVGRVJFTkNFUyBQQUNLSU5HIFBBU1NFRFxuIik7CisJcHJpbnRmKCI9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiIpOworCisJZG9uZV90ZXN0aW5nKCk7 Cit9Ci0tIAoyLjUzLjAKCg== --------------1IUaLyPVXDOy4S8HXjAMePOm Content-Type: text/x-patch; charset=UTF-8; name="v11-0005-Use-Delta-Frame-of-Reference-DFoR-to-compress-pr.patch" Content-Disposition: attachment; filename*0="v11-0005-Use-Delta-Frame-of-Reference-DFoR-to-compress-pr.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA2M2UzNGMzOTgwMDZhMjgxZGFmZmZiNmZlNTgwYTZhZGZjNzI3OWM0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFdmdlbnkgVm9yb3BhZXYgPGV2b3JvcEBnbWFpbC5j b20+CkRhdGU6IEZyaSwgMjAgTWFyIDIwMjYgMTc6MzA6MjIgKzA4MDAKU3ViamVjdDogW1BB VENIIHYxMSA1LzVdIFVzZSBEZWx0YSBGcmFtZSBvZiBSZWZlcmVuY2UgKERGb1IpIHRvIGNv bXByZXNzCiBwcnVuZS9mcmVlemUgcmVjb3Jkcy4KCkEgcHJ1bmUvZnJlZXplIHJlY29yZCBj b250YWlucyBmb3VyIHNlcXVlbmNlcyBvZiBpbnRlZ2VycyByZXByZXNlbnRpbmcKZnJvemVu LCByZWRpcmVjdGVkLCB1bnVzZWQsIGFuZCBkZWFkIHR1cGxlcy4gVXNpbmcgREZvUiBhbGdv cml0aG1zLCB0aGUKYHVudXNlZGAgYW5kIGBkZWFkYCBzZXF1ZW5jZXMgYXJlIG5vdyBjb21w cmVzc2VkLiBUaGUgYGZyb3plbmAKYW5kIGByZWRpcmVjdGVkYCBzZXF1ZW5jZXMgY2Fubm90 IGJlIGNvbXByZXNzZWQgYmVjYXVzZSB0aGUgb3JkZXIgb2YKdGhlaXIgZWxlbWVudHMgaXMg c2lnbmlmaWNhbnQsIGFuZCBERm9SIGRvZXMgbm90IHN1cHBvcnQgdW5zb3J0ZWQKc2VxdWVu Y2VzIHlldC4gVGhlIHRoZW9yZXRpY2FsIGNvbXByZXNzaW9uIHJhdGlvIGZvciBkZm9yX3Ux NiBjYW4gcmVhY2gKdXAgdG8gMTYuCgpUaGUgbmV3IEdVQyB3YWxfcHJ1bmVfZGZvcl9jb21w cmVzc2lvbiBjb250cm9scyAoZW5hYmxlcyBvcgpkaXNhYmxlcykgY29tcHJlc3Npb24gZm9y IHBydW5lL2ZyZWV6ZSByZWNvcmRzLgoKQW4gaW50ZWdyYWwgVEFQIHRlc3QsIDA1Ml9wcnVu ZV9kZm9yX2NvbXByZXNzaW9uLnBsLCBoYXMgYmVlbgppbXBsZW1lbnRlZC4gSXQgZGVtb25z dHJhdGVzIGFuIGF2ZXJhZ2UgY29tcHJlc3Npb24gcmF0aW8gb2YgYXQgbGVhc3QgNQp3aGVu IGFuYWx5emluZyBwcnVuZS9mcmVlemUgcmVjb3JkcyBpbiBwcmFjdGljZS4KCkF1dGhvcjog RXZnZW55IFZvcm9wYWV2IDxldmdlbnkudm9yb3BhZXZAdGFudG9ybGFicy5jb20+IDxldm9y b3BAZ21haWwuY29tPgpSZXZpZXdlZCBieTogQW5kcmV5IEJvcm9kaW4gPHg0bW1tQHlhbmRl eC10ZWFtLnJ1PgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMg ICAgICAgICB8ICAyMSArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMg ICAgICAgICAgIHwgMTUzICsrKysrKysrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVz Yy9NYWtlZmlsZSAgICAgICAgICB8ICAgMSArCiAuLi4vYWNjZXNzL3JtZ3JkZXNjL2hlYXBh bV94bG9nX2Rmb3IuYyAgICAgICAgfCAxMDkgKysrKysrKwogc3JjL2JhY2tlbmQvYWNjZXNz L3JtZ3JkZXNjL2hlYXBkZXNjLmMgICAgICAgIHwgIDYzICsrLS0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9ybWdyZGVzYy9tZXNvbi5idWlsZCAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC91 dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdCAgICAgfCAgIDcgKwogc3JjL2JhY2tlbmQv dXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5k L3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSB8ICAgMiArCiBzcmMvYmluL3Bn X3dhbGR1bXAvLmdpdGlnbm9yZSAgICAgICAgICAgICAgICAgfCAgIDkgKwogc3JjL2Jpbi9w Z193YWxkdW1wL01ha2VmaWxlICAgICAgICAgICAgICAgICAgIHwgIDI2ICstCiBzcmMvYmlu L3BnX3dhbGR1bXAvbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2lu Y2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmggICAgICAgICAgICAgIHwgIDEwICstCiBzcmMv aW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2dfZGZvci5oICAgICAgICAgfCAxMzcgKysrKysr KysrCiBzcmMvdGVzdC9kZm9yL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAgfCAg IDIgKwogLi4uL3JlY292ZXJ5L3QvMDUyX3BydW5lX2Rmb3JfY29tcHJlc3Npb24ucGwgIHwg MjgzICsrKysrKysrKysrKysrKysrKwogMTYgZmlsZXMgY2hhbmdlZCwgNzgyIGluc2VydGlv bnMoKyksIDQ0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5k L2FjY2Vzcy9ybWdyZGVzYy9oZWFwYW1feGxvZ19kZm9yLmMKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2dfZGZvci5oCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNTJfcHJ1bmVfZGZvcl9jb21wcmVzc2lvbi5w bAoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCmluZGV4IGYzZjQxOWQz ZGMxLi5mOTliMzQyMGNhZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtX3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxv Zy5jCkBAIC0xNiw2ICsxNiw3IEBACiAKICNpbmNsdWRlICJhY2Nlc3MvYnVmbWFzay5oIgog I2luY2x1ZGUgImFjY2Vzcy9oZWFwYW0uaCIKKyNpbmNsdWRlICJhY2Nlc3MvaGVhcGFtX3hs b2dfZGZvci5oIgogI2luY2x1ZGUgImFjY2Vzcy92aXNpYmlsaXR5bWFwLmgiCiAjaW5jbHVk ZSAiYWNjZXNzL3hsb2cuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ3V0aWxzLmgiCkBAIC0x MDQsMTIgKzEwNSwyNiBAQCBoZWFwX3hsb2dfcHJ1bmVfZnJlZXplKFhMb2dSZWFkZXJTdGF0 ZSAqcmVjb3JkKQogCQlPZmZzZXROdW1iZXIgKmZyel9vZmZzZXRzOwogCQljaGFyCSAgICpk YXRhcHRyID0gWExvZ1JlY0dldEJsb2NrRGF0YShyZWNvcmQsIDAsICZkYXRhbGVuKTsKIAkJ Ym9vbAkJZG9fcHJ1bmU7CisJCWNoYXIJCSpjdXJzb3IgUEdfVVNFRF9GT1JfQVNTRVJUU19P TkxZOwogCi0JCWhlYXBfeGxvZ19kZXNlcmlhbGl6ZV9wcnVuZV9hbmRfZnJlZXplKGRhdGFw dHIsIHhscmVjLmZsYWdzLAorCQkvKgorCQkgKiBQcm92aWRlIERGb1IgdW5wYWNraW5nIHdp dGggb3V0ZXIgYnVmZmVycy4gMiBidWZmZXIgcGFydHMgYXJlCisJCSAqIGludGVuZGVkIGZv ciBzYXZpbmcgc2VxdWVuY2VzIG9mIG9mZnNldHMgb2YgZGVhZCBhbmQgdW51c2VkIHR1cGxl cy4KKwkJICogQWRkaXRpb25hbCB0aHJlZSBwYXJ0cyBhcmUgZm9yIGludGVybmFsIG5lZWRz IG9mIHRoZSBkZm9yX3VucGFjaworCQkgKiBmdW5jdGlvbi4KKwkJICovCisJCXVuaW9uCisJ CXsKKwkJCWludDMyIGFsaWduX21lOyAvKiBGb3JjZXMgNC1ieXRlIGFsaWdubWVudCAqLwor CQkJdWludDggZGZvcl9idWZbNSAqIERGT1JfQlVGX1BBUlRfU0laRV07CisJCX0gZGZvcl9i dWZfYWxpZ25lZDsKKworCQljdXJzb3IgPSBoZWFwX3hsb2dfZGVzZXJpYWxpemVfcHJ1bmVf YW5kX2ZyZWV6ZShkYXRhcHRyLCB4bHJlYy5mbGFncywKIAkJCQkJCQkJCQkJICAgJm5wbGFu cywgJnBsYW5zLCAmZnJ6X29mZnNldHMsCiAJCQkJCQkJCQkJCSAgICZucmVkaXJlY3RlZCwg JnJlZGlyZWN0ZWQsCiAJCQkJCQkJCQkJCSAgICZuZGVhZCwgJm5vd2RlYWQsCi0JCQkJCQkJ CQkJCSAgICZudW51c2VkLCAmbm93dW51c2VkKTsKKwkJCQkJCQkJCQkJICAgJm51bnVzZWQs ICZub3d1bnVzZWQsCisJCQkJCQkJCQkJCSAgIGRmb3JfYnVmX2FsaWduZWQuZGZvcl9idWYp OwogCiAJCWRvX3BydW5lID0gbnJlZGlyZWN0ZWQgPiAwIHx8IG5kZWFkID4gMCB8fCBudW51 c2VkID4gMDsKIApAQCAtMTU1LDcgKzE3MCw3IEBAIGhlYXBfeGxvZ19wcnVuZV9mcmVlemUo WExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCX0KIAogCQkvKiBUaGVyZSBzaG91bGQgYmUg bm8gbW9yZSBkYXRhICovCi0JCUFzc2VydCgoY2hhciAqKSBmcnpfb2Zmc2V0cyA9PSBkYXRh cHRyICsgZGF0YWxlbik7CisJCUFzc2VydChjdXJzb3IgPT0gZGF0YXB0ciArIGRhdGFsZW4p OwogCiAJCS8qCiAJCSAqIFRoZSBjcml0aWNhbCBpbnRlZ3JpdHkgcmVxdWlyZW1lbnQgaGVy ZSBpcyB0aGF0IHdlIG11c3QgbmV2ZXIgZW5kCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5l aGVhcC5jCmluZGV4IDc0YzM1NWJlMjE5Li5hMDg4YzM1MTZkYSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvcHJ1bmVoZWFwLmMKQEAgLTE2LDYgKzE2LDcgQEAKIAogI2luY2x1ZGUgImFj Y2Vzcy9oZWFwYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MvaGVhcGFtX3hsb2cuaCIKKyNpbmNs dWRlICJhY2Nlc3MvaGVhcGFtX3hsb2dfZGZvci5oIgogI2luY2x1ZGUgImFjY2Vzcy9odHVw X2RldGFpbHMuaCIKICNpbmNsdWRlICJhY2Nlc3MvbXVsdGl4YWN0LmgiCiAjaW5jbHVkZSAi YWNjZXNzL3RyYW5zYW0uaCIKQEAgLTIzOCw3ICsyMzksNiBAQCBzdGF0aWMgYm9vbCBoZWFw X3BhZ2Vfd2lsbF9mcmVlemUoYm9vbCBkaWRfdHVwbGVfaGludF9mcGksIGJvb2wgZG9fcHJ1 bmUsIGJvb2wgZAogc3RhdGljIGJvb2wgaGVhcF9wYWdlX3dpbGxfc2V0X3ZtKFBydW5lU3Rh dGUgKnByc3RhdGUsIFBydW5lUmVhc29uIHJlYXNvbiwKIAkJCQkJCQkJICBib29sIGRvX3By dW5lLCBib29sIGRvX2ZyZWV6ZSk7CiAKLQogLyoKICAqIE9wdGlvbmFsbHkgcHJ1bmUgYW5k IHJlcGFpciBmcmFnbWVudGF0aW9uIGluIHRoZSBzcGVjaWZpZWQgcGFnZS4KICAqCkBAIC0y NTI5LDYgKzI1MjksMjQgQEAgaGVhcF9sb2dfZnJlZXplX3BsYW4oSGVhcFR1cGxlRnJlZXpl ICp0dXBsZXMsIGludCBudHVwbGVzLAogCXJldHVybiBucGxhbnM7CiB9CiAKKy8qCisgKiBD b21wYXJhdG9yIGZvciBvZmZzZXRzLgorICovCitzdGF0aWMgaW50CitvZmZzZXRfY21wKGNv bnN0IHZvaWQgKmFyZzEsIGNvbnN0IHZvaWQgKmFyZzIpCit7CisJY29uc3QgT2Zmc2V0TnVt YmVyICpvZmZzZXQxID0gYXJnMTsKKwljb25zdCBPZmZzZXROdW1iZXIgKm9mZnNldDIgPSBh cmcyOworCXJldHVybiAoKm9mZnNldDEgPiAqb2Zmc2V0MikgLSAoKm9mZnNldDEgPCAqb2Zm c2V0Mik7Cit9CisKKyNkZWZpbmUgU1RfU09SVCBzb3J0X29mZnNldHMKKyNkZWZpbmUgU1Rf RUxFTUVOVF9UWVBFX1ZPSUQKKyNkZWZpbmUgU1RfQ09NUEFSRShhLCBiKSBvZmZzZXRfY21w KGEsIGIpCisjZGVmaW5lIFNUX1NDT1BFIHN0YXRpYworI2RlZmluZSBTVF9ERUZJTkUKKyNp bmNsdWRlICJsaWIvc29ydF90ZW1wbGF0ZS5oIgorCiAvKgogICogV3JpdGUgYW4gWExPR19I RUFQMl9QUlVORSogV0FMIHJlY29yZAogICoKQEAgLTI1ODYsMTEgKzI2MDQsMzggQEAgbG9n X2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZl ciwKIAlib29sCQlkb19zZXRfdm0gPSB2bWZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9C SVRTOwogCWJvb2wJCWhlYXBfZnBpX2FsbG93ZWQgPSB0cnVlOwogCisJZGZvcl9tZXRhX3Qg ZGVhZF9tZXRhID0geyAwIH07CisJZGZvcl9tZXRhX3QgdW51c2VkX21ldGEgPSB7IDAgfTsK KworCXVpbnQ4IGRlYWRfbWV0YV9wYWNrW01BWF9QQUNLRURfTUVUQV9TSVpFXTsKKwl1aW50 OCB1bnVzZWRfbWV0YV9wYWNrW01BWF9QQUNLRURfTUVUQV9TSVpFXTsKKworCS8qCisJICog U2luY2UgdGhpcyBjb2RlIGlzIHJ1biBpbiBhIGNyaXRpY2FsIHNlY3Rpb24gd2UgY2FuJ3Qg dXNlIGR5bmFtaWMKKwkgKiBhbGxvY2F0aW9uIGR1cmluZyBERm9SIHBhY2tpbmcsIGJ1dCB3 ZSBjYW4gdXNlIGJ1ZmZlcnMgYWxsb2NhdGVkIGluIHRoZQorCSAqIHN0YWNrLiBXZSBuZWVk IGF0IG1heGltdW06CisJICogMSkgMiAqIERGT1JfQlVGX1BBUlRfU0laRQorCSAqICAgICAg ICAtIGZvciAyIHBhY2tlZCBzZXF1ZW5jZXM6IGRlYWQsIHVudXNlZAorCSAqIDIpIDMgKiBE Rk9SX0JVRl9QQVJUX1NJWkUKKwkgKiAJCSAgLSBmb3IgaW50ZXJuYWwgbmVlZHMgb2YgdGhl IGRmb3JfcGFjayBmdW5jdGlvbi4KKwkgKgorCSAqIE92ZXJhbGwsIDUgKiBERk9SX0JVRl9Q QVJUX1NJWkUKKwkgKi8KKwl1bmlvbgorCXsKKwkJaW50MzIgYWxpZ25fbWU7IC8qIEZvcmNl cyA0LWJ5dGUgYWxpZ25tZW50ICovCisJCXVpbnQ4IGRmb3JfYnVmWzUgKiBERk9SX0JVRl9Q QVJUX1NJWkVdOworCX0gZGZvcl9idWZfYWxpZ25lZDsKKwogCUFzc2VydCgodm1mbGFncyAm IFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUykgPT0gdm1mbGFncyk7CiAKIAl4bHJlYy5mbGFn cyA9IDA7CiAJcmVnYnVmX2ZsYWdzX2hlYXAgPSBSRUdCVUZfU1RBTkRBUkQ7CiAKKwkvKiBI ZXVyaXN0aWNhbGx5IGVzdGltYXRlZCB0aHJlc2hvbGQgZm9yIHR1cm5pbmcgb24gREZvUiBj b21wcmVzc2lvbiAqLworCWlmICh3YWxfcHJ1bmVfZGZvcl9jb21wcmVzc2lvbiAmJiAobmRl YWQgPiA5IHx8IG51bnVzZWQgPiA5KSkKKwkJeGxyZWMuZmxhZ3MgfD0gWExIUF9ERk9SX0NP TVBSRVNTRUQ7CisKIAkvKgogCSAqIFdlIGNhbiBhdm9pZCBhbiBGUEkgb2YgdGhlIGhlYXAg cGFnZSBpZiB0aGUgb25seSBtb2RpZmljYXRpb24gd2UgYXJlCiAJICogbWFraW5nIHRvIGl0 IGlzIHRvIHNldCBQRF9BTExfVklTSUJMRSBhbmQgY2hlY2tzdW1zL3dhbF9sb2dfaGludHMg YXJlCkBAIC0yNjIyLDYgKzI2NjcsMTAgQEAgbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShS ZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAlpZiAoZG9fc2V0X3ZtKQogCQlY TG9nUmVnaXN0ZXJCdWZmZXIoMSwgdm1idWZmZXIsIDApOwogCisJLyoKKwkgKiB4bGhwX2Zy ZWV6ZV9wbGFucyBpcyBhcnJheSBvZiBzdHJ1Y3R1cmVzIGFuZCBpcyBub3QgYSBzZXF1ZW5j ZQorCSAqIG9mIGludGVnZXJzLCB0aGF0IGlzIHdoeSB3ZSBjYW5ub3QgdXNlIERGb1IgY29t cHJlc3Npb24gaGVyZS4KKwkgKi8KIAlpZiAobmZyb3plbiA+IDApCiAJewogCQlpbnQJCQlu cGxhbnM7CkBAIC0yNjM5LDYgKzI2ODgsMTAgQEAgbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6 ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJCQlvZmZzZXRvZih4 bGhwX2ZyZWV6ZV9wbGFucywgcGxhbnMpKTsKIAkJWExvZ1JlZ2lzdGVyQnVmRGF0YSgwLCBw bGFucywKIAkJCQkJCQlzaXplb2YoeGxocF9mcmVlemVfcGxhbikgKiBucGxhbnMpOworCisJ CVhMb2dSZWdpc3RlckJ1ZkRhdGEoMCwgZnJ6X29mZnNldHMsCisJCQkJCQkJc2l6ZW9mKE9m ZnNldE51bWJlcikgKiBuZnJvemVuKTsKKwogCX0KIAlpZiAobnJlZGlyZWN0ZWQgPiAwKQog CXsKQEAgLTI2NTAsMjkgKzI3MDMsOTMgQEAgbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShS ZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJWExvZ1JlZ2lzdGVyQnVmRGF0 YSgwLCByZWRpcmVjdGVkLAogCQkJCQkJCXNpemVvZihPZmZzZXROdW1iZXJbMl0pICogbnJl ZGlyZWN0ZWQpOwogCX0KLQlpZiAobmRlYWQgPiAwKQorCWlmICgoeGxyZWMuZmxhZ3MgJiBY TEhQX0RGT1JfQ09NUFJFU1NFRCkgIT0gMCkKIAl7Ci0JCXhscmVjLmZsYWdzIHw9IFhMSFBf SEFTX0RFQURfSVRFTVM7CisJCWludCBkZWFkX3BhY2tfcmVzID0gMDsKKwkJaW50IHVudXNl ZF9wYWNrX3JlcyA9IDA7CiAKLQkJZGVhZF9pdGVtcy5udGFyZ2V0cyA9IG5kZWFkOwotCQlY TG9nUmVnaXN0ZXJCdWZEYXRhKDAsICZkZWFkX2l0ZW1zLAotCQkJCQkJCW9mZnNldG9mKHhs aHBfcHJ1bmVfaXRlbXMsIGRhdGEpKTsKLQkJWExvZ1JlZ2lzdGVyQnVmRGF0YSgwLCBkZWFk LAotCQkJCQkJCXNpemVvZihPZmZzZXROdW1iZXIpICogbmRlYWQpOworCQkvKgorCQkgKiBE ZWFkIHR1cGxlIG9mZnNldHMgYXJlIHN1YmplY3QgdG8gYmUgcGFja2VkIHdpdGggREZvUi4K KwkJICogQWZ0ZXIgdGhhdCB3ZSBoYXZlOgorCQkgKiAJCWRlYWRfbWV0YS5wYWNrID0gZGZv cl9idWYgKyBERk9SX0JVRl9QQVJUX1NJWkU7CisJCSAqLworCQlpZiAobmRlYWQgPiAwKQor CQl7CisJCQlzb3J0X29mZnNldHMoZGVhZCwgbmRlYWQsIHNpemVvZihPZmZzZXROdW1iZXIp KTsKKwkJCWRlYWRfcGFja19yZXMgPSBkZm9yX3UxNl9wYWNrKG5kZWFkLCBkZWFkLCBERk9S X0VYQ19VU0UsICZkZWFkX21ldGEsCisJCQkJCQkJCQkJICA0ICogREZPUl9CVUZfUEFSVF9T SVpFLAorCQkJCQkJCQkJCSAgZGZvcl9idWZfYWxpZ25lZC5kZm9yX2J1Zik7CisJCX0KKwor CQkvKgorCQkgKiBVbnVzZWQgdHVwbGUgb2Zmc2V0cyBhcmUgc3ViamVjdCB0byBiZSBwYWNr ZWQgd2l0aCBERm9SLgorCQkgKiBBZnRlciB0aGF0IHdlIGhhdmU6CisJCSAqIAkJdW51c2Vk X21ldGEucGFjayA9IGRmb3JfYnVmICsgMiAqIERGT1JfQlVGX1BBUlRfU0laRTsKKwkJICov CisJCWlmIChudW51c2VkID4gMCkKKwkJeworCQkJc29ydF9vZmZzZXRzKHVudXNlZCwgbnVu dXNlZCwgc2l6ZW9mKE9mZnNldE51bWJlcikpOworCQkJdW51c2VkX3BhY2tfcmVzID0gZGZv cl91MTZfcGFjayhudW51c2VkLCB1bnVzZWQsIERGT1JfRVhDX1VTRSwKKwkJCQkJCQkJCQkJ JnVudXNlZF9tZXRhLAorCQkJCQkJCQkJCQk0ICogREZPUl9CVUZfUEFSVF9TSVpFLAorCQkJ CQkJCQkJCQlkZm9yX2J1Zl9hbGlnbmVkLmRmb3JfYnVmICsKKwkJCQkJCQkJCQkJCURGT1Jf QlVGX1BBUlRfU0laRSk7CisJCX0KKworCQlpZiAoZGVhZF9wYWNrX3JlcyA9PSAwICYmIHVu dXNlZF9wYWNrX3JlcyA9PSAwKQorCQl7CisJCQkvKiBBbGwgc3RhZ2VzIG9mIHBhY2tpbmcg aGF2ZSBzdWNjZWVkZWQuIFdlIGNhbiBzYXZlIERGb1IgcGFja2V0cworCQkJICogaW50byBs b2cgKi8KKwkJCXNpemVfdCBtZXRhX3BhY2tfc3o7CisJCQlpZiAobmRlYWQgPiAwKQorCQkJ eworCQkJCXhscmVjLmZsYWdzIHw9IFhMSFBfSEFTX0RFQURfSVRFTVM7CisKKwkJCQltZXRh X3BhY2tfc3ogPSBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplX3BhY2tfbWV0YSgKKwkJCQkJ JmRlYWRfbWV0YSwgZGVhZF9tZXRhX3BhY2spOworCisJCQkJWExvZ1JlZ2lzdGVyQnVmRGF0 YSgwLCAmZGVhZF9tZXRhX3BhY2ssIG1ldGFfcGFja19zeik7CisJCQkJWExvZ1JlZ2lzdGVy QnVmRGF0YSgwLCBkZWFkX21ldGEucGFjaywgZGVhZF9tZXRhLm5ieXRlcyk7CisJCQl9CisJ CQlpZiAobnVudXNlZCA+IDApCisJCQl7CisJCQkJeGxyZWMuZmxhZ3MgfD0gWExIUF9IQVNf Tk9XX1VOVVNFRF9JVEVNUzsKKworCQkJCW1ldGFfcGFja19zeiA9IGxvZ19oZWFwX3BydW5l X2FuZF9mcmVlemVfcGFja19tZXRhKAorCQkJCQkmdW51c2VkX21ldGEsIHVudXNlZF9tZXRh X3BhY2spOworCisJCQkJWExvZ1JlZ2lzdGVyQnVmRGF0YSgwLCAmdW51c2VkX21ldGFfcGFj aywgbWV0YV9wYWNrX3N6KTsKKwkJCQlYTG9nUmVnaXN0ZXJCdWZEYXRhKDAsIHVudXNlZF9t ZXRhLnBhY2ssIHVudXNlZF9tZXRhLm5ieXRlcyk7CisJCQl9CisJCX0KKwkJZWxzZQorCQl7 CisJCQkvKiBPdGhlcndpc2UsIHdlIGNhbid0IHVzZSBERm9SIGNvbXByZXNzaW9uICovCisJ CQl4bHJlYy5mbGFncyAmPSB+WExIUF9ERk9SX0NPTVBSRVNTRUQ7CisJCX0KIAl9Ci0JaWYg KG51bnVzZWQgPiAwKQorCisJaWYgKCh4bHJlYy5mbGFncyAmIFhMSFBfREZPUl9DT01QUkVT U0VEKSA9PSAwKQogCXsKLQkJeGxyZWMuZmxhZ3MgfD0gWExIUF9IQVNfTk9XX1VOVVNFRF9J VEVNUzsKKwkJaWYgKG5kZWFkID4gMCkKKwkJeworCQkJeGxyZWMuZmxhZ3MgfD0gWExIUF9I QVNfREVBRF9JVEVNUzsKIAotCQl1bnVzZWRfaXRlbXMubnRhcmdldHMgPSBudW51c2VkOwot CQlYTG9nUmVnaXN0ZXJCdWZEYXRhKDAsICZ1bnVzZWRfaXRlbXMsCi0JCQkJCQkJb2Zmc2V0 b2YoeGxocF9wcnVuZV9pdGVtcywgZGF0YSkpOwotCQlYTG9nUmVnaXN0ZXJCdWZEYXRhKDAs IHVudXNlZCwKLQkJCQkJCQlzaXplb2YoT2Zmc2V0TnVtYmVyKSAqIG51bnVzZWQpOworCQkJ ZGVhZF9pdGVtcy5udGFyZ2V0cyA9IG5kZWFkOworCQkJWExvZ1JlZ2lzdGVyQnVmRGF0YSgw LCAmZGVhZF9pdGVtcywKKwkJCQkJCQkJb2Zmc2V0b2YoeGxocF9wcnVuZV9pdGVtcywgZGF0 YSkpOworCQkJWExvZ1JlZ2lzdGVyQnVmRGF0YSgwLCBkZWFkLCBzaXplb2YoT2Zmc2V0TnVt YmVyKSAqIG5kZWFkKTsKKwkJfQorCQlpZiAobnVudXNlZCA+IDApCisJCXsKKwkJCXhscmVj LmZsYWdzIHw9IFhMSFBfSEFTX05PV19VTlVTRURfSVRFTVM7CisKKwkJCXVudXNlZF9pdGVt cy5udGFyZ2V0cyA9IG51bnVzZWQ7CisJCQlYTG9nUmVnaXN0ZXJCdWZEYXRhKDAsICZ1bnVz ZWRfaXRlbXMsCisJCQkJCQkJCW9mZnNldG9mKHhsaHBfcHJ1bmVfaXRlbXMsIGRhdGEpKTsK KwkJCVhMb2dSZWdpc3RlckJ1ZkRhdGEoMCwgdW51c2VkLCBzaXplb2YoT2Zmc2V0TnVtYmVy KSAqIG51bnVzZWQpOworCQl9CiAJfQotCWlmIChuZnJvemVuID4gMCkKLQkJWExvZ1JlZ2lz dGVyQnVmRGF0YSgwLCBmcnpfb2Zmc2V0cywKLQkJCQkJCQlzaXplb2YoT2Zmc2V0TnVtYmVy KSAqIG5mcm96ZW4pOwogCiAJLyoKIAkgKiBQcmVwYXJlIHRoZSBtYWluIHhsX2hlYXBfcHJ1 bmUgcmVjb3JkLiAgV2UgYWxyZWFkeSBzZXQgdGhlIFhMSFBfSEFTXyoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9ybWdyZGVzYy9NYWtlZmlsZQppbmRleCBjZDk1ZWVjMzdmMS4uNDllOWM0NjE0NWYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9NYWtlZmlsZQorKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvTWFrZWZpbGUKQEAgLTE3LDYgKzE3LDcg QEAgT0JKUyA9IFwKIAlnaW5kZXNjLm8gXAogCWdpc3RkZXNjLm8gXAogCWhhc2hkZXNjLm8g XAorCWhlYXBhbV94bG9nX2Rmb3IubyBcCiAJaGVhcGRlc2MubyBcCiAJbG9naWNhbG1zZ2Rl c2MubyBcCiAJbXhhY3RkZXNjLm8gXApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L3JtZ3JkZXNjL2hlYXBhbV94bG9nX2Rmb3IuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdy ZGVzYy9oZWFwYW1feGxvZ19kZm9yLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLjQ3ZmEwMDBlMzY3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL3JtZ3JkZXNjL2hlYXBhbV94bG9nX2Rmb3IuYwpAQCAtMCwwICsxLDEwOSBAQAor I2luY2x1ZGUgImxpYi9iaXRwYWNrX3UxNi5oIgorI2luY2x1ZGUgImFjY2Vzcy9oZWFwYW1f eGxvZ19kZm9yLmgiCisKK2Jvb2wgd2FsX3BydW5lX2Rmb3JfY29tcHJlc3Npb24gPSB0cnVl OworCitzaXplX3QKK2xvZ19oZWFwX3BydW5lX2FuZF9mcmVlemVfcGFja19tZXRhKGNvbnN0 IGRmb3JfbWV0YV90ICptZXRhLCB1aW50OCBidWZbXSkKK3sKKwlzaXplX3QgY2FyZXQgPSAw OworCWNhcmV0ID0gYml0cGFja191MTZfcGFjayhidWYsIGNhcmV0LCBtZXRhLT5pdGVtX2Nu dCwKKwkJCQkJCQkgWExIUEZfTUVUQV9JVEVNX0NPVU5UX1NaKTsKKwljYXJldCA9IGJpdHBh Y2tfdTE2X3BhY2soYnVmLCBjYXJldCwgbWV0YS0+ZGVsdGFfd2lkLAorCQkJCQkJCSBYTEhQ Rl9NRVRBX0RFTFRBX1dJRFRIX1NaKTsKKwljYXJldCA9IGJpdHBhY2tfdTE2X3BhY2soYnVm LCBjYXJldCwgKG1ldGEtPmV4Y19jbnQgPT0gMCkgPyAwIDogMSwKKwkJCQkJCQkgWExIUEZf TUVUQV9FWENFUFRJT05fRkxBR19TWik7CisJaWYgKG1ldGEtPmV4Y19jbnQgIT0gMCkKKwl7 CisJCWNhcmV0ID0gYml0cGFja191MTZfcGFjayhidWYsIGNhcmV0LCBtZXRhLT5leGNfY250 LAorCQkJCQkJCQkgWExIUEZfTUVUQV9FWENFUFRJT05fQ09VTlRfU1opOworCQljYXJldCA9 IGJpdHBhY2tfdTE2X3BhY2soYnVmLCBjYXJldCwgbWV0YS0+ZXhjX3dpZCwKKwkJCQkJCQkJ IFhMSFBGX01FVEFfRVhDRVBUSU9OX1dJRFRIX1NaKTsKKwkJY2FyZXQgPSBiaXRwYWNrX3Ux Nl9wYWNrKGJ1ZiwgY2FyZXQsIG1ldGEtPmV4Y19wb3Nfd2lkLAorCQkJCQkJCQkgWExIUEZf TUVUQV9FWENFUFRJT05fUE9TSVRJT05fV0lEVEhfU1opOworCX0KKwlBc3NlcnQobWV0YS0+ aXRlbV9jbnQgIT0gMCk7CisJQXNzZXJ0KG1ldGEtPmRlbHRhX3dpZCAhPSAwKTsKKwlBc3Nl cnQobWV0YS0+bmJ5dGVzICE9IDApOworCisjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORwor CXsKKwkJZGZvcl9tZXRhX3QgY2hlY2tlcjsKKwkJbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6 ZV91bnBhY2tfbWV0YSgmY2hlY2tlciwgYnVmKTsKKwkJQXNzZXJ0KG1ldGEtPml0ZW1fY250 ID09IGNoZWNrZXIuaXRlbV9jbnQpOworCQlBc3NlcnQobWV0YS0+ZGVsdGFfd2lkID09IGNo ZWNrZXIuZGVsdGFfd2lkKTsKKwkJQXNzZXJ0KG1ldGEtPmV4Y19jbnQgPT0gY2hlY2tlci5l eGNfY250KTsKKwkJQXNzZXJ0KG1ldGEtPmV4Y193aWQgPT0gY2hlY2tlci5leGNfd2lkKTsK KwkJQXNzZXJ0KG1ldGEtPmV4Y19wb3Nfd2lkID09IGNoZWNrZXIuZXhjX3Bvc193aWQpOwor CX0KKyNlbmRpZgorCXJldHVybiAoY2FyZXQgKyA3KSAvIDg7IC8qIHRoZSBsZW5ndGggb2Yg cGFja2VkIGRmb3JfbWV0YSwgaW4gYnl0ZXMqLworfQorCitzaXplX3QKK2xvZ19oZWFwX3By dW5lX2FuZF9mcmVlemVfdW5wYWNrX21ldGEoZGZvcl9tZXRhX3QgKm1ldGEsCisJCQkJCQkJ CQkgIGNvbnN0IHVpbnQ4IHBhY2tlZF9tZXRhW10pCit7CisJc2l6ZV90IGNhcmV0ID0gMDsK Kwlib29sIGV4YzsKKworCW1ldGEtPml0ZW1fY250ID0gYml0cGFja191MTZfdW5wYWNrKHBh Y2tlZF9tZXRhLCAmY2FyZXQsCisJCQkJCQkJCQkJWExIUEZfTUVUQV9JVEVNX0NPVU5UX1Na KTsKKwltZXRhLT5kZWx0YV93aWQgPSBiaXRwYWNrX3UxNl91bnBhY2socGFja2VkX21ldGEs ICZjYXJldCwKKwkJCQkJCQkJCQkgWExIUEZfTUVUQV9ERUxUQV9XSURUSF9TWik7CisJZXhj ID0gYml0cGFja191MTZfdW5wYWNrKHBhY2tlZF9tZXRhLCAmY2FyZXQsIFhMSFBGX01FVEFf RVhDRVBUSU9OX0ZMQUdfU1opOworCisJaWYgKGV4YykKKwl7CisJCW1ldGEtPmV4Y19jbnQg PSBiaXRwYWNrX3UxNl91bnBhY2socGFja2VkX21ldGEsICZjYXJldCwKKwkJCQkJCQkJCQkg WExIUEZfTUVUQV9FWENFUFRJT05fQ09VTlRfU1opOworCQltZXRhLT5leGNfd2lkID0gYml0 cGFja191MTZfdW5wYWNrKHBhY2tlZF9tZXRhLCAmY2FyZXQsCisJCQkJCQkJCQkJIFhMSFBG X01FVEFfRVhDRVBUSU9OX1dJRFRIX1NaKTsKKwkJbWV0YS0+ZXhjX3Bvc193aWQgPQorCQkJ Yml0cGFja191MTZfdW5wYWNrKHBhY2tlZF9tZXRhLCAmY2FyZXQsCisJCQkJCQkJICAgWExI UEZfTUVUQV9FWENFUFRJT05fUE9TSVRJT05fV0lEVEhfU1opOworCX0KKwllbHNlCisJewor CQltZXRhLT5leGNfY250ID0gMDsKKwkJbWV0YS0+ZXhjX3dpZCA9IDA7CisJCW1ldGEtPmV4 Y19wb3Nfd2lkID0gMDsKKwl9CisJbWV0YS0+bmJ5dGVzID0gZGZvcl91MTZfY2FsY19uYnl0 ZXMoKm1ldGEpOworCisJQXNzZXJ0KG1ldGEtPml0ZW1fY250ICE9IDApOworCUFzc2VydCht ZXRhLT5kZWx0YV93aWQgIT0gMCk7CisJQXNzZXJ0KG1ldGEtPm5ieXRlcyAhPSAwKTsKKwor CXJldHVybiAoY2FyZXQgKyA3KSAvIDg7Cit9CisKK3ZvaWQKK2hlYXBfeGxvZ19kZXNlcmlh bGl6ZV9kZm9yKGNoYXIgKipjdXJzb3IsIGludCAqbml0ZW1zLAorCQkJCQkJICAgT2Zmc2V0 TnVtYmVyICoqaXRlbXMsCisJCQkJCQkgICB1aW50OCBkZm9yX2J1ZltdKQoreworCWRmb3Jf bWV0YV90IGRmb3IgPSB7MH07CisJc2l6ZV90IHBhY2tlZF9tZXRhX25ieXRlczsKKwl1bmlx c29ydHZlY3RfdTE2X3QgdmVjdDsKKworCXBhY2tlZF9tZXRhX25ieXRlcyA9CisJCWxvZ19o ZWFwX3BydW5lX2FuZF9mcmVlemVfdW5wYWNrX21ldGEoJmRmb3IsICh1aW50OCopICpjdXJz b3IpOworCisJKmN1cnNvciArPSBwYWNrZWRfbWV0YV9uYnl0ZXM7CisKKwlkZm9yLnBhY2sg PSAodWludDggKikqY3Vyc29yOworCWRmb3JfdTE2X3VucGFjaygmZGZvciwgJnZlY3QsIDQg KiBERk9SX0JVRl9QQVJUX1NJWkUsCisJCQkJCWRmb3JfYnVmKTsKKworCSpjdXJzb3IgKz0g ZGZvci5uYnl0ZXM7CisKKwlBc3NlcnQoZGZvci5uYnl0ZXMgIT0gMCk7CisKKwlBc3NlcnQo dmVjdC5jbnQgIT0gMCk7CisJQXNzZXJ0KHZlY3QubWVtX2lzX291dGVyID09IHRydWUpOwor CUFzc2VydCgodm9pZCopdmVjdC5tID09ICh2b2lkKilkZm9yX2J1Zik7CisKKwkqbml0ZW1z ID0gdmVjdC5jbnQ7CisJKml0ZW1zID0gdmVjdC5tOworfQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv cm1ncmRlc2MvaGVhcGRlc2MuYwppbmRleCA3NWFlNmY5ZDM3NS4uMzNlOTdiYjQ1NDYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jCkBAIC0xNSw2ICsxNSw3 IEBACiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAogI2luY2x1ZGUgImFjY2Vzcy9oZWFwYW1f eGxvZy5oIgorI2luY2x1ZGUgImFjY2Vzcy9oZWFwYW1feGxvZ19kZm9yLmgiCiAjaW5jbHVk ZSAiYWNjZXNzL3JtZ3JkZXNjX3V0aWxzLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3Zpc2liaWxp dHltYXBkZWZzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zdGFuZGJ5ZGVmcy5oIgpAQCAtMTAy LDE3ICsxMDMsMTkgQEAgcGxhbl9lbGVtX2Rlc2MoU3RyaW5nSW5mbyBidWYsIHZvaWQgKnBs YW4sIHZvaWQgKmRhdGEpCiAgKiBUaGlzIGlzIGluIGhlYXBkZXNjLmMgc28gaXQgY2FuIGJl IHNoYXJlZCBiZXR3ZWVuIGhlYXAyX3JlZG8gYW5kIGhlYXAyX2Rlc2MKICAqIGNvZGUsIHRo ZSBsYXR0ZXIgb2Ygd2hpY2ggaXMgdXNlZCBpbiBmcm9udGVuZCAocGdfd2FsZHVtcCkgY29k ZS4KICAqLwotdm9pZAorY2hhciAqCiBoZWFwX3hsb2dfZGVzZXJpYWxpemVfcHJ1bmVfYW5k X2ZyZWV6ZShjaGFyICpjdXJzb3IsIHVpbnQxNiBmbGFncywKIAkJCQkJCQkJCSAgIGludCAq bnBsYW5zLCB4bGhwX2ZyZWV6ZV9wbGFuICoqcGxhbnMsCiAJCQkJCQkJCQkgICBPZmZzZXRO dW1iZXIgKipmcnpfb2Zmc2V0cywKIAkJCQkJCQkJCSAgIGludCAqbnJlZGlyZWN0ZWQsIE9m ZnNldE51bWJlciAqKnJlZGlyZWN0ZWQsCiAJCQkJCQkJCQkgICBpbnQgKm5kZWFkLCBPZmZz ZXROdW1iZXIgKipub3dkZWFkLAotCQkJCQkJCQkJICAgaW50ICpudW51c2VkLCBPZmZzZXRO dW1iZXIgKipub3d1bnVzZWQpCisJCQkJCQkJCQkgICBpbnQgKm51bnVzZWQsIE9mZnNldE51 bWJlciAqKm5vd3VudXNlZCwKKwkJCQkJCQkJCSAgIHVpbnQ4IGRmb3JfYnVmW10pCiB7CiAJ aWYgKGZsYWdzICYgWExIUF9IQVNfRlJFRVpFX1BMQU5TKQogCXsKLQkJeGxocF9mcmVlemVf cGxhbnMgKmZyZWV6ZV9wbGFucyA9ICh4bGhwX2ZyZWV6ZV9wbGFucyAqKSBjdXJzb3I7CisJ CWludCBuZnJvemVuID0gMDsKKwkJeGxocF9mcmVlemVfcGxhbnMgKmZyZWV6ZV9wbGFucyA9 ICh4bGhwX2ZyZWV6ZV9wbGFucyAqKWN1cnNvcjsKIAogCQkqbnBsYW5zID0gZnJlZXplX3Bs YW5zLT5ucGxhbnM7CiAJCUFzc2VydCgqbnBsYW5zID4gMCk7CkBAIC0xMjAsNiArMTIzLDEy IEBAIGhlYXBfeGxvZ19kZXNlcmlhbGl6ZV9wcnVuZV9hbmRfZnJlZXplKGNoYXIgKmN1cnNv ciwgdWludDE2IGZsYWdzLAogCiAJCWN1cnNvciArPSBvZmZzZXRvZih4bGhwX2ZyZWV6ZV9w bGFucywgcGxhbnMpOwogCQljdXJzb3IgKz0gc2l6ZW9mKHhsaHBfZnJlZXplX3BsYW4pICog Km5wbGFuczsKKworCQlmb3IgKGludCBpID0gMDsgaSA8ICpucGxhbnM7IGkrKykKKwkJCW5m cm96ZW4gKz0gKCpwbGFucylbaV0ubnR1cGxlczsKKworCQkqZnJ6X29mZnNldHMgPSAoT2Zm c2V0TnVtYmVyICopIGN1cnNvcjsKKwkJY3Vyc29yICs9IHNpemVvZihPZmZzZXROdW1iZXIp ICogbmZyb3plbjsKIAl9CiAJZWxzZQogCXsKQEAgLTE0NiwxNCArMTU1LDIyIEBAIGhlYXBf eGxvZ19kZXNlcmlhbGl6ZV9wcnVuZV9hbmRfZnJlZXplKGNoYXIgKmN1cnNvciwgdWludDE2 IGZsYWdzLAogCiAJaWYgKGZsYWdzICYgWExIUF9IQVNfREVBRF9JVEVNUykKIAl7Ci0JCXhs aHBfcHJ1bmVfaXRlbXMgKnN1YnJlY29yZCA9ICh4bGhwX3BydW5lX2l0ZW1zICopIGN1cnNv cjsKKwkJaWYoIShmbGFncyAmIFhMSFBfREZPUl9DT01QUkVTU0VEKSkKKwkJeworCQkJeGxo cF9wcnVuZV9pdGVtcyAqc3VicmVjb3JkID0gKHhsaHBfcHJ1bmVfaXRlbXMgKikgY3Vyc29y OwogCi0JCSpuZGVhZCA9IHN1YnJlY29yZC0+bnRhcmdldHM7Ci0JCUFzc2VydCgqbmRlYWQg PiAwKTsKLQkJKm5vd2RlYWQgPSBzdWJyZWNvcmQtPmRhdGE7CisJCQkqbmRlYWQgPSBzdWJy ZWNvcmQtPm50YXJnZXRzOworCQkJQXNzZXJ0KCpuZGVhZCA+IDApOworCQkJKm5vd2RlYWQg PSBzdWJyZWNvcmQtPmRhdGE7CiAKLQkJY3Vyc29yICs9IG9mZnNldG9mKHhsaHBfcHJ1bmVf aXRlbXMsIGRhdGEpOwotCQljdXJzb3IgKz0gc2l6ZW9mKE9mZnNldE51bWJlcikgKiAqbmRl YWQ7CisJCQljdXJzb3IgKz0gb2Zmc2V0b2YoeGxocF9wcnVuZV9pdGVtcywgZGF0YSk7CisJ CQljdXJzb3IgKz0gc2l6ZW9mKE9mZnNldE51bWJlcikgKiAqbmRlYWQ7CisJCX0KKwkJZWxz ZQorCQl7CisJCQloZWFwX3hsb2dfZGVzZXJpYWxpemVfZGZvcigmY3Vyc29yLCBuZGVhZCwg bm93ZGVhZCwKKwkJCQkJCQkJCSAgIGRmb3JfYnVmKTsKKwkJfQogCX0KIAllbHNlCiAJewpA QCAtMTYzLDIyICsxODAsMjkgQEAgaGVhcF94bG9nX2Rlc2VyaWFsaXplX3BydW5lX2FuZF9m cmVlemUoY2hhciAqY3Vyc29yLCB1aW50MTYgZmxhZ3MsCiAKIAlpZiAoZmxhZ3MgJiBYTEhQ X0hBU19OT1dfVU5VU0VEX0lURU1TKQogCXsKLQkJeGxocF9wcnVuZV9pdGVtcyAqc3VicmVj b3JkID0gKHhsaHBfcHJ1bmVfaXRlbXMgKikgY3Vyc29yOworCQlpZighKGZsYWdzICYgWExI UF9ERk9SX0NPTVBSRVNTRUQpKQorCQl7CisJCQl4bGhwX3BydW5lX2l0ZW1zICpzdWJyZWNv cmQgPSAoeGxocF9wcnVuZV9pdGVtcyAqKSBjdXJzb3I7CiAKLQkJKm51bnVzZWQgPSBzdWJy ZWNvcmQtPm50YXJnZXRzOwotCQlBc3NlcnQoKm51bnVzZWQgPiAwKTsKLQkJKm5vd3VudXNl ZCA9IHN1YnJlY29yZC0+ZGF0YTsKKwkJCSpudW51c2VkID0gc3VicmVjb3JkLT5udGFyZ2V0 czsKKwkJCUFzc2VydCgqbnVudXNlZCA+IDApOworCQkJKm5vd3VudXNlZCA9IHN1YnJlY29y ZC0+ZGF0YTsKIAotCQljdXJzb3IgKz0gb2Zmc2V0b2YoeGxocF9wcnVuZV9pdGVtcywgZGF0 YSk7Ci0JCWN1cnNvciArPSBzaXplb2YoT2Zmc2V0TnVtYmVyKSAqICpudW51c2VkOworCQkJ Y3Vyc29yICs9IG9mZnNldG9mKHhsaHBfcHJ1bmVfaXRlbXMsIGRhdGEpOworCQkJY3Vyc29y ICs9IHNpemVvZihPZmZzZXROdW1iZXIpICogKm51bnVzZWQ7CisJCX0KKwkJZWxzZQorCQl7 CisJCQloZWFwX3hsb2dfZGVzZXJpYWxpemVfZGZvcigmY3Vyc29yLCBudW51c2VkLCBub3d1 bnVzZWQsCisJCQkJCQkJCQkgICBkZm9yX2J1ZiArIERGT1JfQlVGX1BBUlRfU0laRSk7CisJ CX0KIAl9CiAJZWxzZQogCXsKIAkJKm51bnVzZWQgPSAwOwogCQkqbm93dW51c2VkID0gTlVM TDsKIAl9Ci0KLQkqZnJ6X29mZnNldHMgPSAoT2Zmc2V0TnVtYmVyICopIGN1cnNvcjsKKwly ZXR1cm4gY3Vyc29yOwogfQogCiB2b2lkCkBAIC0zMDksMTMgKzMzMywxNiBAQCBoZWFwMl9k ZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJCXhsaHBf ZnJlZXplX3BsYW4gKnBsYW5zOwogCQkJT2Zmc2V0TnVtYmVyICpmcnpfb2Zmc2V0czsKIAor CQkJdWludDggZGZvcl9idWZbNSAqIERGT1JfQlVGX1BBUlRfU0laRV07CisKIAkJCWNoYXIJ ICAgKmN1cnNvciA9IFhMb2dSZWNHZXRCbG9ja0RhdGEocmVjb3JkLCAwLCAmZGF0YWxlbik7 CiAKIAkJCWhlYXBfeGxvZ19kZXNlcmlhbGl6ZV9wcnVuZV9hbmRfZnJlZXplKGN1cnNvciwg eGxyZWMtPmZsYWdzLAogCQkJCQkJCQkJCQkJICAgJm5wbGFucywgJnBsYW5zLCAmZnJ6X29m ZnNldHMsCiAJCQkJCQkJCQkJCQkgICAmbnJlZGlyZWN0ZWQsICZyZWRpcmVjdGVkLAogCQkJ CQkJCQkJCQkJICAgJm5kZWFkLCAmbm93ZGVhZCwKLQkJCQkJCQkJCQkJCSAgICZudW51c2Vk LCAmbm93dW51c2VkKTsKKwkJCQkJCQkJCQkJCSAgICZudW51c2VkLCAmbm93dW51c2VkLAor CQkJCQkJCQkJCQkJICAgZGZvcl9idWYpOwogCiAJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1Ziwg IiwgbnBsYW5zOiAldSwgbnJlZGlyZWN0ZWQ6ICV1LCBuZGVhZDogJXUsIG51bnVzZWQ6ICV1 IiwKIAkJCQkJCQkgbnBsYW5zLCBucmVkaXJlY3RlZCwgbmRlYWQsIG51bnVzZWQpOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL21lc29uLmJ1aWxkIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL21lc29uLmJ1aWxkCmluZGV4IGQ5MDAwY2NkOWZk Li42Y2VlYTQ1MTRlYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNj L21lc29uLmJ1aWxkCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9tZXNvbi5i dWlsZApAQCAtMTEsNiArMTEsNyBAQCBybWdyX2Rlc2Nfc291cmNlcyA9IGZpbGVzKAogICAn Z2lzdGRlc2MuYycsCiAgICdoYXNoZGVzYy5jJywKICAgJ2hlYXBkZXNjLmMnLAorICAnaGVh cGFtX3hsb2dfZGZvci5jJywKICAgJ2xvZ2ljYWxtc2dkZXNjLmMnLAogICAnbXhhY3RkZXNj LmMnLAogICAnbmJ0ZGVzYy5jJywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21p c2MvZ3VjX3BhcmFtZXRlcnMuZGF0IGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFy YW1ldGVycy5kYXQKaW5kZXggODNhZjU5NGQ0YWYuLmM1M2UyOTIxYzAxIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdAorKysgYi9zcmMv YmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdApAQCAtMzUwNyw2ICszNTA3 LDEzIEBACiAgIGJvb3RfdmFsID0+ICdmYWxzZScsCiB9LAogCit7IG5hbWUgPT4gJ3dhbF9w cnVuZV9kZm9yX2NvbXByZXNzaW9uJywgdHlwZSA9PiAnYm9vbCcsIGNvbnRleHQgPT4gJ1BH Q19TVVNFVCcsIGdyb3VwID0+ICdXQUxfU0VUVElOR1MnLAorICBzaG9ydF9kZXNjID0+ICdD b21wcmVzcyBkZWFkIGFuZCB1bnVzZWQgb2Zmc2V0IGFycmF5cyBhdCBQUlVORS9GUkVFWkUg V0FMIHJlY29yZHMgdXNpbmcgREZPUi4nLAorICBsb25nX2Rlc2MgPT4gJ0VuYWJsZXMgY29t cHJlc3Npb24gb2YgZGVhZCBhbmQgdW51c2VkIE9mZnNldE51bWJlciBhcnJheXMgc3RvcmVk IGluIGhlYXAgUFJVTkUvRlJFRVpFIFdBTCByZWNvcmRzIHVzaW5nIGN1c3RvbWlzZWQgZGVs dGEgZnJhbWUtb2YtcmVmZXJlbmNlIGVuY29kaW5nLicsCisgIHZhcmlhYmxlID0+ICd3YWxf cHJ1bmVfZGZvcl9jb21wcmVzc2lvbicsCisgIGJvb3RfdmFsID0+ICd0cnVlJworfSwKKwog eyBuYW1lID0+ICd3YWxfcmVjZWl2ZXJfY3JlYXRlX3RlbXBfc2xvdCcsIHR5cGUgPT4gJ2Jv b2wnLCBjb250ZXh0ID0+ICdQR0NfU0lHSFVQJywgZ3JvdXAgPT4gJ1JFUExJQ0FUSU9OX1NU QU5EQlknLAogICBzaG9ydF9kZXNjID0+ICdTZXRzIHdoZXRoZXIgYSBXQUwgcmVjZWl2ZXIg c2hvdWxkIGNyZWF0ZSBhIHRlbXBvcmFyeSByZXBsaWNhdGlvbiBzbG90IGlmIG5vIHBlcm1h bmVudCBzbG90IGlzIGNvbmZpZ3VyZWQuJywKICAgdmFyaWFibGUgPT4gJ3dhbF9yZWNlaXZl cl9jcmVhdGVfdGVtcF9zbG90JywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21p c2MvZ3VjX3RhYmxlcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMK aW5kZXggMjkwY2NiYzU0M2UuLmJlZTYwYjJlYmNkIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy9taXNjL2d1Y190YWJsZXMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNj L2d1Y190YWJsZXMuYwpAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiYWNjZXNzL2Nv bW1pdF90cy5oIgogI2luY2x1ZGUgImFjY2Vzcy9naW4uaCIKKyNpbmNsdWRlICJhY2Nlc3Mv aGVhcGFtX3hsb2dfZGZvci5oIgogI2luY2x1ZGUgImFjY2Vzcy9zbHJ1LmgiCiAjaW5jbHVk ZSAiYWNjZXNzL3RvYXN0X2NvbXByZXNzaW9uLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3R3b3Bo YXNlLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwu Y29uZi5zYW1wbGUgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5z YW1wbGUKaW5kZXggYWMzOGNkZGFhZjkuLjQxNTJlNzg5ZWUxIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKKysrIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCkBAIC0yNjMsNiArMjYz LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIChjaGFu Z2UgcmVxdWlyZXMgcmVzdGFydCkKICN3YWxfY29tcHJlc3Npb24gPSBvZmYgICAgICAgICAg ICAgICAgICAjIGVuYWJsZXMgY29tcHJlc3Npb24gb2YgZnVsbC1wYWdlIHdyaXRlczsKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9mZiwgcGdseiwgbHo0 LCB6c3RkLCBvciBvbgorI3dhbF9wcnVuZV9kZm9yX2NvbXByZXNzaW9uID0gdHJ1ZSAgICAg ICMgQ29tcHJlc3MgZGVhZCBhbmQgdW51c2VkIG9mZnNldCBhcnJheXMKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGF0IFBSVU5FL0ZSRUVaRSBXQUwgcmVj b3JkcyB1c2luZyBERk9SLgogI3dhbF9pbml0X3plcm8gPSBvbiAgICAgICAgICAgICAgICAg ICAgICMgemVyby1maWxsIG5ldyBXQUwgZmlsZXMKICN3YWxfcmVjeWNsZSA9IG9uICAgICAg ICAgICAgICAgICAgICAgICAjIHJlY3ljbGUgV0FMIGZpbGVzCiAjd2FsX2J1ZmZlcnMgPSAt MSAgICAgICAgICAgICAgICAgICAgICAgIyBtaW4gMzJrQiwgLTEgc2V0cyBiYXNlZCBvbiBz aGFyZWRfYnVmZmVycwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ193YWxkdW1wLy5naXRpZ25v cmUgYi9zcmMvYmluL3BnX3dhbGR1bXAvLmdpdGlnbm9yZQppbmRleCBlYzUxZjQxYzc2Ny4u YTNjMDI0NDZiOWQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfd2FsZHVtcC8uZ2l0aWdub3Jl CisrKyBiL3NyYy9iaW4vcGdfd2FsZHVtcC8uZ2l0aWdub3JlCkBAIC0xMCw2ICsxMCw3IEBA CiAvZ2lzdGRlc2MuYwogL2hhc2hkZXNjLmMKIC9oZWFwZGVzYy5jCisvaGVhcGFtX3hsb2df ZGZvci5jCiAvbG9naWNhbG1zZ2Rlc2MuYwogL214YWN0ZGVzYy5jCiAvbmJ0ZGVzYy5jCkBA IC0yOCw1ICsyOSwxMyBAQAogL3hsb2dyZWFkZXIuYwogL3hsb2dzdGF0cy5jCiAKKyMgU291 cmNlIGZpbGVzIGNvcGllZCBmcm9tIHNyYy9iYWNrZW5kL2xpYgorL2JpdHBhY2tfdGVtcGwu YworL2JpdHBhY2tfdTE2LmMKKy9kZm9yX3RlbXBsLmMKKy9kZm9yX3UxNi5jCisvdmVjdF90 ZW1wbC5jCisvdmVjdF91MTYuYworCiAjIEdlbmVyYXRlZCBieSB0ZXN0IHN1aXRlCiAvdG1w X2NoZWNrLwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ193YWxkdW1wL01ha2VmaWxlIGIvc3Jj L2Jpbi9wZ193YWxkdW1wL01ha2VmaWxlCmluZGV4IGFhYmI4NzU2NmEyLi41ZTUyMWMxZTgy MiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ193YWxkdW1wL01ha2VmaWxlCisrKyBiL3NyYy9i aW4vcGdfd2FsZHVtcC9NYWtlZmlsZQpAQCAtOCw4ICs4LDkgQEAgZXhwb3J0IFRBUgogCiBz dWJkaXIgPSBzcmMvYmluL3BnX3dhbGR1bXAKIHRvcF9idWlsZGRpciA9IC4uLy4uLy4uCi1p bmNsdWRlICQodG9wX2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUuZ2xvYmFsCitkZm9yX2RpciA6 PSAkKHRvcF9idWlsZGRpcikvc3JjL2JhY2tlbmQvbGliCiAKK2luY2x1ZGUgJCh0b3BfYnVp bGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwKIE9CSlMgPSBcCiAJJChSTUdSREVTQ09CSlMp IFwKIAkkKFdJTjMyUkVTKSBcCkBAIC0yMCwxMCArMjEsMTMgQEAgT0JKUyA9IFwKIAl4bG9n cmVhZGVyLm8gXAogCXhsb2dzdGF0cy5vCiAKK2luY2x1ZGUgJChkZm9yX2RpcikvTWFrZWZp bGUuZGZvcgorT0JKUyArPSAkKE9CSlNfREZPUikKKwogb3ZlcnJpZGUgQ1BQRkxBR1MgOj0g LURGUk9OVEVORCAtSSQobGlicHFfc3JjZGlyKSAkKENQUEZMQUdTKQogTERGTEFHU19JTlRF Uk5BTCArPSAtTCQodG9wX2J1aWxkZGlyKS9zcmMvZmVfdXRpbHMgLWxwZ2ZldXRpbHMKIAot Uk1HUkRFU0NTT1VSQ0VTID0gJChzb3J0ICQobm90ZGlyICQod2lsZGNhcmQgJCh0b3Bfc3Jj ZGlyKS9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvKmRlc2MqLmMpKSkKK1JNR1JERVND U09VUkNFUyA9ICQoc29ydCAkKG5vdGRpciAkKHdpbGRjYXJkICQodG9wX3NyY2Rpcikvc3Jj L2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjLypkZXNjKi5jKSkpIGhlYXBhbV94bG9nX2Rmb3Iu YwogUk1HUkRFU0NPQkpTID0gJChwYXRzdWJzdCAlLmMsJS5vLCQoUk1HUkRFU0NTT1VSQ0VT KSkKIAogCkBAIC0zMiw2ICszNiwyNCBAQCBhbGw6IHBnX3dhbGR1bXAKIHBnX3dhbGR1bXA6 ICQoT0JKUykgfCBzdWJtYWtlLWxpYnBncG9ydAogCSQoQ0MpICQoQ0ZMQUdTKSAkXiAkKExE RkxBR1MpICQoTERGTEFHU19FWCkgJChMSUJTKSAtbyAkQCQoWCkKIAorYml0cGFja190ZW1w bC5jOiAlIDogJCh0b3Bfc3JjZGlyKS9zcmMvYmFja2VuZC9saWIvJQorCXJtIC1mICRAICYm ICQoTE5fUykgJDwgLgorCitiaXRwYWNrX3UxNi5jOiAlIDogJCh0b3Bfc3JjZGlyKS9zcmMv YmFja2VuZC9saWIvJSBiaXRwYWNrX3RlbXBsLmMKKwlybSAtZiAkQCAmJiAkKExOX1MpICQ8 IC4KKworZGZvcl90ZW1wbC5jOiAlIDogJCh0b3Bfc3JjZGlyKS9zcmMvYmFja2VuZC9saWIv JQorCXJtIC1mICRAICYmICQoTE5fUykgJDwgLgorCitkZm9yX3UxNi5jOiAlIDogJCh0b3Bf c3JjZGlyKS9zcmMvYmFja2VuZC9saWIvJSBkZm9yX3RlbXBsLmMKKwlybSAtZiAkQCAmJiAk KExOX1MpICQ8IC4KKwordmVjdF90ZW1wbC5jOiAlIDogJCh0b3Bfc3JjZGlyKS9zcmMvYmFj a2VuZC9saWIvJQorCXJtIC1mICRAICYmICQoTE5fUykgJDwgLgorCit2ZWN0X3UxNi5jOiAl IDogJCh0b3Bfc3JjZGlyKS9zcmMvYmFja2VuZC9saWIvJSB2ZWN0X3RlbXBsLmMKKwlybSAt ZiAkQCAmJiAkKExOX1MpICQ8IC4KKwogeGxvZ3JlYWRlci5jOiAlIDogJCh0b3Bfc3JjZGly KS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS8lCiAJcm0gLWYgJEAgJiYgJChMTl9TKSAk PCAuCiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfd2FsZHVtcC9tZXNvbi5idWlsZCBiL3Ny Yy9iaW4vcGdfd2FsZHVtcC9tZXNvbi5idWlsZAppbmRleCA1Mjk2ZjIxYjgyYy4uYzMzYmU4 ODcxMmMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfd2FsZHVtcC9tZXNvbi5idWlsZAorKysg Yi9zcmMvYmluL3BnX3dhbGR1bXAvbWVzb24uYnVpbGQKQEAgLTEwLDYgKzEwLDcgQEAgcGdf d2FsZHVtcF9zb3VyY2VzID0gZmlsZXMoCiBwZ193YWxkdW1wX3NvdXJjZXMgKz0gcm1ncl9k ZXNjX3NvdXJjZXMKIHBnX3dhbGR1bXBfc291cmNlcyArPSB4bG9ncmVhZGVyX3NvdXJjZXMK IHBnX3dhbGR1bXBfc291cmNlcyArPSBmaWxlcygnLi4vLi4vYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS94bG9nc3RhdHMuYycpCitwZ193YWxkdW1wX3NvdXJjZXMgKz0gZGZvcl9zb3VyY2Vz CiAKIGlmIGhvc3Rfc3lzdGVtID09ICd3aW5kb3dzJwogICBwZ193YWxkdW1wX3NvdXJjZXMg Kz0gcmNfYmluX2dlbi5wcm9jZXNzKHdpbjMydmVyX3JjLCBleHRyYV9hcmdzOiBbCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaCBiL3NyYy9pbmNsdWRl L2FjY2Vzcy9oZWFwYW1feGxvZy5oCmluZGV4IGZkY2E3ZDgyMWM4Li4yMjMzZmY3ZDEwOCAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKKysrIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKQEAgLTE1LDYgKzE1LDcgQEAKICNkZWZp bmUgSEVBUEFNX1hMT0dfSAogCiAjaW5jbHVkZSAiYWNjZXNzL2h0dXAuaCIKKyNpbmNsdWRl ICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dyZWFkZXIu aCIKICNpbmNsdWRlICJsaWIvc3RyaW5naW5mby5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVm LmgiCkBAIC0zNDEsNiArMzQyLDggQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9wcnVuZQog I2RlZmluZQkJWExIUF9WTV9BTExfVklTSUJMRQkJCSgxIDw8IDgpCiAjZGVmaW5lCQlYTEhQ X1ZNX0FMTF9GUk9aRU4JCQkoMSA8PCA5KQogCisjZGVmaW5lCQlYTEhQX0RGT1JfQ09NUFJF U1NFRAkJKDEgPDwgMTApCisKIC8qCiAgKiB4bGhwX2ZyZWV6ZV9wbGFuIGRlc2NyaWJlcyBo b3cgdG8gZnJlZXplIGEgZ3JvdXAgb2Ygb25lIG9yIG1vcmUgaGVhcCB0dXBsZXMKICAqIChh cHBlYXJzIGluIHhsX2hlYXBfcHJ1bmUncyB4bGhwX2ZyZWV6ZV9wbGFucyBzdWItcmVjb3Jk KQpAQCAtNDg5LDExICs0OTIsMTIgQEAgZXh0ZXJuIGNvbnN0IGNoYXIgKmhlYXAyX2lkZW50 aWZ5KHVpbnQ4IGluZm8pOwogZXh0ZXJuIHZvaWQgaGVhcF94bG9nX2xvZ2ljYWxfcmV3cml0 ZShYTG9nUmVhZGVyU3RhdGUgKnIpOwogCiAvKiBpbiBoZWFwZGVzYy5jLCBzbyBpdCBjYW4g YmUgc2hhcmVkIGJldHdlZW4gZnJvbnRlbmQvYmFja2VuZCBjb2RlICovCi1leHRlcm4gdm9p ZCBoZWFwX3hsb2dfZGVzZXJpYWxpemVfcHJ1bmVfYW5kX2ZyZWV6ZShjaGFyICpjdXJzb3Is IHVpbnQxNiBmbGFncywKK2V4dGVybiBjaGFyICogaGVhcF94bG9nX2Rlc2VyaWFsaXplX3By dW5lX2FuZF9mcmVlemUoY2hhciAqY3Vyc29yLCB1aW50MTYgZmxhZ3MsCiAJCQkJCQkJCQkJ CQkgICBpbnQgKm5wbGFucywgeGxocF9mcmVlemVfcGxhbiAqKnBsYW5zLAogCQkJCQkJCQkJ CQkJICAgT2Zmc2V0TnVtYmVyICoqZnJ6X29mZnNldHMsCiAJCQkJCQkJCQkJCQkgICBpbnQg Km5yZWRpcmVjdGVkLCBPZmZzZXROdW1iZXIgKipyZWRpcmVjdGVkLAogCQkJCQkJCQkJCQkJ ICAgaW50ICpuZGVhZCwgT2Zmc2V0TnVtYmVyICoqbm93ZGVhZCwKLQkJCQkJCQkJCQkJCSAg IGludCAqbnVudXNlZCwgT2Zmc2V0TnVtYmVyICoqbm93dW51c2VkKTsKKwkJCQkJCQkJCQkJ CSAgIGludCAqbnVudXNlZCwgT2Zmc2V0TnVtYmVyICoqbm93dW51c2VkLAorCQkJCQkJCQkJ CQkJICAgdWludDggZGZvcl9idWZbXSk7CiAKLSNlbmRpZgkJCQkJCQkvKiBIRUFQQU1fWExP R19IICovCisjZW5kaWYJCQkJCQkJLyogSEVBUEFNX1hMT0dfSCAqLwpcIE5vIG5ld2xpbmUg YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1f eGxvZ19kZm9yLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2dfZGZvci5oCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yNzRiMTRlODkxZQotLS0g L2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZ19kZm9yLmgK QEAgLTAsMCArMSwxMzcgQEAKKyNpZm5kZWYgSEVBUEFNX1hMT0dfREZPUl9ICisjZGVmaW5l IEhFQVBBTV9YTE9HX0RGT1JfSAorCisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1 ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKKyNpbmNsdWRlICJsaWIvZGZvcl91MTYuaCIK KyNpbmNsdWRlICJzdG9yYWdlL2J1ZnBhZ2UuaCIKKworLyoKKyAqIERGb1IncyBtZXRhIGJs b2NrIGZvciBQUlVORS9GUkVFWkUgcmVjb3JkCisgKgorICogQSBtZXRhIGJsb2NrIGNvbnRh aW5zIHBhcmFtZXRlcnMgcmVxdWlyZWQgZm9yIGRlY29tcHJlc3Npb24gb2YgdGhlIGZvbGxv d2luZworICogREZvUiBwYWNrLiBJdCBpcyBkZW5zZWx5IGJpdC1wYWNrZWQuIElmIHRoZSBl eGNlcHRpb24gZmxhZyBpcyB6ZXJvLCBmaWVsZHMKKyAqIHBlcnRhaW5pbmcgdG8gZXhjZXB0 aW9ucyBpcyBhYnNlbnQsIHdoaWNoIG1lYW5zIHRoYXQgREZvUiBwYWNrIGRvZXMgbm90Cisg KiBjb250YWluIGV4Y2VwdGlvbnMuIENhbGN1bGF0aW9uIG9mIGZpZWxkIHdpZHRocyB0YWtl cyBpbnRvIGFjY291bnQKKyAqIG5leHQgY29uc2lkZXJhdGlvbnM6CisgKgorICogTWF4IEl0 ZW0gQ291bnQgc2hvdWxkIGJlIG1vcmUgb3IgZXF1YWwgdG8gTWF4SGVhcFR1cGxlc1BlclBh Z2UuIFNpbmNlIHdlCisgY2FuJ3QgY2FsY3VsYXRlCisgKiBNYXhIZWFwVHVwbGVzUGVyUGFn ZSBvbiBwcmVwcm9jZXNzb3Igc3RhZ2UsIHdlIGludGVudGlvbmFsbHkgb3ZlcmVzdGltYXRl IGl0CisgKiBhczoKKyAqICAgICAgIE1heCBJdGVtIENvdW50ID4gQkxDS1NaIC8gTWluIFR1 cGxlIFNpemUgPSBCTENLU1ogLyAyNAorICogdG8gcHJvdmlkZSBhIG1hcmdpbi4gSW4gZ2Vu ZXJhbCwgZGVwZW5kaW5nIG9uIEJMQ0tTWiwgaXQgc2hvdWxkIG5vdCByZXN1bHQgaW4KKyAq IERGb1IgbWV0YSBibG9jayBvdmVyaGVhZC4KKyAqIEZvciBpbnN0YW5jZSwgZm9yIGEgYmxv Y2sgc2l6ZSBvZiAzMjc2OCwgd2UgaGF2ZSBNYXggSXRlbSBDb3VudCA9IDEzNjYsIGFuZAor ICogaXQgbmVlZHMgMTEgYml0cyB3aWR0aCBmaWVsZC4KKyAqCisgKiBTaXplIG9mIGZpZWxk IEl0ZW0gQ291bnQ6CisgKiAgICAgICBJVEVNX0NPVU5UX1NaID0gbG9nMihNYXhJdGVtQ291 bnQpLgorICoKKyAqIE1heGltdW0gRGVsdGEgV2lkdGggaXMgZXF1YWwgdG8gSVRFTV9DT1VO VF9TWi4gU28gREVMVEFfV0lEVEhfU1ogaW4gYSBERm9SCisgKiBtZXRhIGJsb2NrIGNhbiBi ZSBjYWxjdWxhdGVkIGFzOgorICogICAgICBERUxUQV9XSURUSF9TWiA+PSBsb2cyKE1heCBE ZWx0YSBXaWR0aCkgPSBsb2cyKElURU1fQ09VTlRfU1opCisgKgorICogTWF4IEV4Y2VwdGlv biBDb3VudCA9IDAuMSAqIE1heEl0ZW1Db3VudCwgYWNjb3JkaW5nIHRvIERGb1IgYWxnb3Jp dGhtIHdoaWNoCisgKiBndWFyYW50ZWVzIHRoYXQgbm90IGxlc3MgdGhhbiA5MCUgb2YgaXRl bXMgd2lsbCBiZSBjb3ZlcmVkIHdpdGhvdXQgdXNpbmcKKyAqIGV4Y2VwdGlvbnMuIFNvOgor ICogICAgICBFWENFUFRJT05fQ09VTlRfU1ogPj0gbG9nMigwLjEgKiBNYXhJdGVtQ291bnQp LgorICoKKyAqIEFuIGV4Y2VwdGlvbiBpcyBwYXJ0IG9mIGEgZGVsdGEsIGV4Y2VlZGluZyBj aG9vc2VuIGRlbHRhIHdpZHRoLiBFeGNlcHRpb24gaXMKKyAqIHNhdmVkIGluIHNlcGFyYXRl ZCBwYXJ0IG9mIERGb1IgcGFjayBhbmQsIHNpbmNlIGRlbHRhIHdpZHRoIGlzIG5vdCBsZXNz CisgKiB0aGFuIDE6CisgKiAgICBFWENFUFRJT05fV0lEVEhfU1ogPj0gbG9nMihNYXggRGVs dGEgV2lkdGggLSAxKSA9IGxvZzIoSVRFTV9DT1VOVF9TWiAtIDEpLgorICoKKyAqIEFuIGV4 Y2VwdGlvbidzIHBvc2l0aW9uIHNob3dzIHRoZSBwb3NpdGlvbiBvZiBvZiBhIGRlbHRhIHRv IHdpY2ggdGhlCisgKiBleGNlcHRpb24gaGFzIHRvIGJlIGFwcGxpZWQuIFZhbHVlcyBvZiBh biBleGNlcHRpb24gcG9zaXRpb24gbXVzdCBjb3ZlciB0aGUKKyAqIHNhbWUgdmFsdWUgcmFu Z2UgYXMgYW4gSXRlbSBDb3VudCwgc28gdGhlIE1heCBXaWR0aCBvZiBhbiBFeGNlcHRpb24g UG9zaXRpb24KKyAqIGlzIGVxdWFsIHRvIHdpZHRoIG9mIERlbHRhLiBDb25zZXF1ZW50bHks IHRoZSBzaXplIG9mIEV4Y2VwdGlvbiBQb3NpdGlvbgorICogV2lkdGggY2FsY3VsYXRlZCBh czoKKyAqICAgICBFWENFUFRJT05fUE9TSVRJT05fV0lEVEhfU0laRSA9IGxvZzIoTWF4IERl bHRhIFdpZHRoKSA9IERFTFRBX1dJRFRIX1NaCisgKgorICogRm9yIGV4YW1wbGUsIE1ldGEg Zm9yIEJMQ0tTWiBlcXVhbCB0byAzMjc2OCBoYXMgbmV4dCBzaXplcyBvZiBmaWVsZAorICog fCBzZWN0LiB8IGJ5dGUgfCBiaXRzICAgICAgfCAgIHBhcmFtICAgICAgICAgICB8ICBzaXpl ICB8IHJhbmdlIG9mIHZhbHVlcyB8CisgKiB8LS0tLS0tLXwtLS0tLS18LS0tLS0tLS0tLS18 LS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLXwKKyAqIHwg IG1haW4gfCAwLCAxIHwgMC0xMCAgICAgIHwgaXRlbSBjb3VudCAgICAgICAgfCAxMSBiaXQg fCAxLi4uMTM2NSAgICAgICAgfAorICogfCAgbWFpbiB8ICAgIDEgfCAxMS0xNCAgICAgfCBk ZWx0YSB3aWR0aCAgICAgICB8ICA0IGJpdCB8IDEuLi4xMSAgICAgICAgICB8CisgKiB8ICBt YWluIHwgICAgMSB8IDE1ICAgICAgICB8IGV4dHJhIHNlY3QuIGZsYWcgIHwgIDEgYml0IHwg MC4uLjEgICAgICAgICAgIHwKKyAqIHwgZXh0cmEgfCAgICAyIHwgMTYtMjMgICAgIHwgZXhj ZXB0aW9uIGNvdW50ICAgfCAgOCBiaXQgfCAwLi4uMTM3ICAgICAgICAgfAorICogfCBleHRy YSB8ICAgIDMgfCAyNC0yNyAgICAgfCBleGNlcHRpb24gd2lkdGggICB8ICA0IGJpdCB8IDAu Li4xMCAgICAgICAgICB8CisgKiB8IGV4dHJhIHwgMywgNCB8IDI4LTM1ICAgICB8IGV4Y2Vw dCBwb3MuIHdpZHRoIHwgIDQgYml0IHwgMS4uLjExICAgICAgICAgIHwKKyAqLworCisvKgor ICogVGhlIHNpemVzIG9mIGZpZWxkcyBpbiB0aGUgY29tcHJlc3NlZCBERm9SIE1ldGEgc3Ry dWN0dXJlIG9mIGFuCisgKiBYTE9HX0hFQVAyX1BSVU5FKiByZWNvcmQuCisgKi8KKyNpZiBC TENLU1ogPT0gMzI3NjgKKyNkZWZpbmUgWExIUEZfTUVUQV9JVEVNX0NPVU5UX1NaICAxMQor I2RlZmluZSBYTEhQRl9NRVRBX0RFTFRBX1dJRFRIX1NaIDQKKyNlbGlmIEJMQ0tTWiA9PSAx NjM4NAorI2RlZmluZSBYTEhQRl9NRVRBX0lURU1fQ09VTlRfU1ogIDEwCisjZGVmaW5lIFhM SFBGX01FVEFfREVMVEFfV0lEVEhfU1ogNAorI2VsaWYgQkxDS1NaID09IDgxOTIKKyNkZWZp bmUgWExIUEZfTUVUQV9JVEVNX0NPVU5UX1NaICA5CisjZGVmaW5lIFhMSFBGX01FVEFfREVM VEFfV0lEVEhfU1ogNAorI2VsaWYgQkxDS1NaID09IDQwOTYKKyNkZWZpbmUgWExIUEZfTUVU QV9JVEVNX0NPVU5UX1NaICA4CisjZGVmaW5lIFhMSFBGX01FVEFfREVMVEFfV0lEVEhfU1og NAorI2VsaWYgQkxDS1NaID09IDIwNDgKKyNkZWZpbmUgWExIUEZfTUVUQV9JVEVNX0NPVU5U X1NaICA3CisjZGVmaW5lIFhMSFBGX01FVEFfREVMVEFfV0lEVEhfU1ogMworI2VsaWYgQkxD S1NaID09IDEwMjQKKyNkZWZpbmUgWExIUEZfTUVUQV9JVEVNX0NPVU5UX1NaICA2CisjZGVm aW5lIFhMSFBGX01FVEFfREVMVEFfV0lEVEhfU1ogMworI2VsaWYgQkxDS1NaID09IDUxMgor I2RlZmluZSBYTEhQRl9NRVRBX0lURU1fQ09VTlRfU1ogIDUKKyNkZWZpbmUgWExIUEZfTUVU QV9ERUxUQV9XSURUSF9TWiAzCisjZWxpZiBCTENLU1ogPT0gMjU2CisjZGVmaW5lIFhMSFBG X01FVEFfSVRFTV9DT1VOVF9TWiAgNAorI2RlZmluZSBYTEhQRl9NRVRBX0RFTFRBX1dJRFRI X1NaIDMKKyNlbGlmIEJMQ0tTWiA9PSAxMjgKKyNkZWZpbmUgWExIUEZfTUVUQV9JVEVNX0NP VU5UX1NaICAzCisjZGVmaW5lIFhMSFBGX01FVEFfREVMVEFfV0lEVEhfU1ogMgorI2VsaWYg QkxDS1NaID09IDY0CisjZGVmaW5lIFhMSFBGX01FVEFfSVRFTV9DT1VOVF9TWiAgMgorI2Rl ZmluZSBYTEhQRl9NRVRBX0RFTFRBX1dJRFRIX1NaIDIKKyNlbHNlCisjZXJyb3IgIlVuc3Vw cG9ydGVkIEJMQ0tTWiBpbiBYTG9nIEhlYXAgQW5kIFBydW5lLiIKKyNlbmRpZgorCisjZGVm aW5lIFhMSFBGX01FVEFfRVhDRVBUSU9OX0ZMQUdfU1ogMSAvKiBGbGFnIGFib3V0IEV4dHJh IFNlY3Rpb24gcHJlc2VuY2UgKi8KKworLyogU2l6ZSBvZiBFeGNlcHRpb24gQ291bnQgZmll bGQgKi8KKyNpZiBYTEhQRl9NRVRBX0lURU1fQ09VTlRfU1ogPiA2CisjZGVmaW5lIFhMSFBG X01FVEFfRVhDRVBUSU9OX0NPVU5UX1NaIFhMSFBGX01FVEFfSVRFTV9DT1VOVF9TWiAtIDMK KyNlbHNlCisjZGVmaW5lIFhMSFBGX01FVEFfRVhDRVBUSU9OX0NPVU5UX1NaIFhMSFBGX01F VEFfSVRFTV9DT1VOVF9TWiAzCisjZW5kaWYKKworI2RlZmluZSBYTEhQRl9NRVRBX0VYQ0VQ VElPTl9XSURUSF9TWiBcCisJWExIUEZfTUVUQV9ERUxUQV9XSURUSF9TWiAvKiBTaXplIG9m IEV4Y2VwdGlvbiBXaWR0aCBmaWVsZCAqLworCisjZGVmaW5lIFhMSFBGX01FVEFfRVhDRVBU SU9OX1BPU0lUSU9OX1dJRFRIX1NaIFwKKwlYTEhQRl9NRVRBX0RFTFRBX1dJRFRIX1NaIC8q IFNpemUgb2YgRXhjZXB0aW9uIFBvc2l0aW9uIHdpZHRoIGZpZWxkICovCisKKy8qIE1heGlt YWwgc2l6ZSBvZiBwYWNrZWQgbWV0YSAqLworI2RlZmluZSBNQVhfUEFDS0VEX01FVEFfU0la RSBcCisJKFhMSFBGX01FVEFfSVRFTV9DT1VOVF9TWiArIFhMSFBGX01FVEFfREVMVEFfV0lE VEhfU1ogKyAgICAgICAgICAgICAgICAgIFwKKwkgWExIUEZfTUVUQV9FWENFUFRJT05fRkxB R19TWiArIFhMSFBGX01FVEFfRVhDRVBUSU9OX1BPU0lUSU9OX1dJRFRIX1NaICsgXAorCSBY TEhQRl9NRVRBX0VYQ0VQVElPTl9XSURUSF9TWiArIFhMSFBGX01FVEFfRVhDRVBUSU9OX0NP VU5UX1NaICsgNykgLyA4CisKKy8qIFRoZSBzaXplIG9mIGEgdHlwaWNhbCBjaHVuayBvZiBt ZW1vcnkgdXNlZCBieSBkZm9yX3BhY2sgKi8KKyNkZWZpbmUgREZPUl9CVUZfUEFSVF9TSVpF IE1heEhlYXBUdXBsZXNQZXJQYWdlICogc2l6ZW9mKHVpbnQxNikKKworZXh0ZXJuIGJvb2wg d2FsX3BydW5lX2Rmb3JfY29tcHJlc3Npb247IC8qIEdVQyAqLworCitleHRlcm4gc2l6ZV90 IGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemVfcGFja19tZXRhKGNvbnN0IGRmb3JfbWV0YV90 ICptZXRhLAorCQkJCQkJCQkJCQkJICB1aW50OCBidWZbXSk7CisKK2V4dGVybiBzaXplX3Qg bG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZV91bnBhY2tfbWV0YShkZm9yX21ldGFfdCAqbWV0 YSwKKwkJCQkJCQkJCQkJCQljb25zdCB1aW50OCBwYWNrZWRfbWV0YVtdKTsKKworZXh0ZXJu IHZvaWQgaGVhcF94bG9nX2Rlc2VyaWFsaXplX2Rmb3IoY2hhciAqKmN1cnNvciwgaW50ICpu aXRlbXMsCisJCQkJCQkJCQkgICBPZmZzZXROdW1iZXIgKippdGVtcywgdWludDggZGZvcl9i dWZbXSk7CisKKyNlbmRpZgkJCQkJCQkvKiBIRUFQQU1fWExPR19ERk9SX0ggKi8KXCBObyBu ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9kZm9yL01ha2Vm aWxlIGIvc3JjL3Rlc3QvZGZvci9NYWtlZmlsZQppbmRleCAyY2E5OGY3NmEwZi4uZjdhMjg3 YTFkM2IgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L2Rmb3IvTWFrZWZpbGUKKysrIGIvc3JjL3Rl c3QvZGZvci9NYWtlZmlsZQpAQCAtNDgsNiArNDgsOCBAQCBjaGVjay11bml0OiAkKFRFU1RT KQogCWNkICQodG9wX2J1aWxkZGlyKS8kKHN1YmRpcikgJiYgXAogCSAgICQoUFJPVkUpICQo UFJPVkVfRkxBR1MpIFwKIAkgICAgLXYgJChhZGRwcmVmaXggLi8sJChpZiAkKFBST1ZFX1RF U1RTKSwgJChQUk9WRV9URVNUUyksICQoVEVTVFMpKSkKKyMgVGhlIGV4YW1wbGUgb2YgdXNp bmcgdGhlIGNoZWNrLXVuaXQgcnVsZToKKyMJCW1ha2UgY2hlY2stdW5pdCBQUk9WRV9URVNU Uz0ndGVzdF9kZm9yX3UxNicgUFJPVkVfRkxBR1M9Jy0tdmVyYm9zZScKIAogY2hlY2s6IGNo ZWNrLXVuaXQKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNTJfcHJ1bmVf ZGZvcl9jb21wcmVzc2lvbi5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDUyX3BydW5lX2Rm b3JfY29tcHJlc3Npb24ucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjk1MTQ3OGZiYmQzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVjb3Zlcnkv dC8wNTJfcHJ1bmVfZGZvcl9jb21wcmVzc2lvbi5wbApAQCAtMCwwICsxLDI4MyBAQAordXNl IHN0cmljdDsKK3VzZSB3YXJuaW5nczsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy OwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKKyMg LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisjIFdvcmtsb2FkIGdlbmVyYXRpbmcgZGVhZCB0dXBsZXMgYW5kIFBSVU5FIFdB TAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KK3N1YiBnZW5lcmF0ZV9wcnVuZV93b3JrbG9hZAoreworCW15ICgkbm9k ZSwgJHdvcmtsb2FkKSA9IEBfOworCisKKwlteSAkc3RhcnRfbHNuOworCW15ICRlbmRfbHNu OworCisJaWYgKCR3b3JrbG9hZCBlcSAidmFjdXVtX3dpdGhfaW5kZXgiCisJCXx8ICR3b3Jr bG9hZCBlcSAidmFjdXVtX25vX2luZGV4IikKKwl7CisJCSRub2RlLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgcXsKKwkJCUNSRUFURSBUQUJMRSB0X3BydW5lICgKKwkJCQlpZCBpbnQsCisJ CQkJdmFsIHRleHQKKwkJCSkgV0lUSCAoZmlsbGZhY3RvciA9IDEwMCwgYXV0b3ZhY3V1bV9l bmFibGVkID0gZmFsc2UpOworCQl9KTsKKworCQkkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsIHF7CisJCQlTRVQgdmFjdXVtX2ZyZWV6ZV9taW5fYWdlID0gMDsKKwkJCVNFVCB2YWN1 dW1fZnJlZXplX3RhYmxlX2FnZSA9IDA7CisJCX0pOworCisJCSMgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorCQkjIFBoYXNlIDE6IElOU0VSVAorCQkjIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKwkJJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxeworCQkJSU5TRVJU IElOVE8gdF9wcnVuZQorCQkJU0VMRUNUIGcsICd4JworCQkJRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwzMDAwMDAwKSBnOworCQl9KTsKKworCQkjIE9wdGlvbmFsIGluZGV4CisJCWlmICgk d29ya2xvYWQgZXEgInZhY3V1bV93aXRoX2luZGV4IikKKwkJeworCQkJJG5vZGUtPnNhZmVf cHNxbCgncG9zdGdyZXMnLCBxeworCQkJCUNSRUFURSBJTkRFWCBPTiB0X3BydW5lKGlkKTsK KwkJCX0pOworCQl9CisJCSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCQkjIFBoYXNl IDI6IERFTEVURSArIFZBQ1VVTQorCQkjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwkJ JG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxeworCQkJREVMRVRFIEZST00gdF9wcnVu ZQorCQkJV0hFUkUgaWQgJSA1MDAgPD4gMDsKKwkJfSk7CisKKwkJIyBGb3JjZSBXQUwgZmx1 c2ggYW5kIGNhcHR1cmUgTFNOCisJCSRzdGFydF9sc24gPSAkbm9kZS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsIHF7CisJCQlTRUxFQ1QgcGdfY3VycmVudF93YWxfZmx1c2hfbHNuKCk7CisJ CX0pOworCisJCSMgVkFDVVVNIGN5Y2xlcyB0byB0cmlnZ2VyIFBSVU5FCisJCWZvciBteSAk aSAoMS4uMykKKwkJeworCQkJJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxeyBWQUNV VU0gRlJFRVpFIHRfcHJ1bmU7IH0pOworCQl9CisKKwkJJGVuZF9sc24gPSAkbm9kZS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsIHF7CisJCQlTRUxFQ1QgcGdfY3VycmVudF93YWxfZmx1c2hf bHNuKCk7CisJCX0pOworCX0KKwllbHNlCisJeworCQlkaWUgIldvcmtsb2FkIGlzIG5vdCBk ZWZpbmVkOiB3b3JrbG9hZD0kd29ya2xvYWQiOworCX0KKworCWNob21wKCRzdGFydF9sc24p OworCXByaW50ICJDYXB0dXJlZCBzdGFydCBMU046ICRzdGFydF9sc25cbiI7CisJY2hvbXAo JGVuZF9sc24pOworCXByaW50ICJDYXB0dXJlZCBlbmQgTFNOOiAkZW5kX2xzblxuIjsKKwor CXJldHVybiAoJHN0YXJ0X2xzbiwgJGVuZF9sc24pOworfQorCisjIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBXQUwg YW5hbHl6ZXIKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCitzdWIgY29sbGVjdF93YWxfc3RhdHMKK3sKKwlteSAoJG5v ZGUsICRzdGFydF9sc24sICRlbmRfbHNuKSA9IEBfOworCisJbXkgJHdhbF9kaXIgPSAkbm9k ZS0+ZGF0YV9kaXIgLiAiL3BnX3dhbCI7CisKKwlwcmludCAid2FsX2Rpcj0iIC4gJHdhbF9k aXIgLiAiXG4iOworCXByaW50ICJjb2xsZWN0X3dhbF9zdGF0czogc3RhcnRfbHNuPSRzdGFy dF9sc25cbiI7CisJcHJpbnQgImNvbGxlY3Rfd2FsX3N0YXRzOiBlbmRfbHNuPSRlbmRfbHNu XG4iOworCisJbXkgJGNtZDsKKworCWlmIChkZWZpbmVkICRlbmRfbHNuICYmICRlbmRfbHNu IG5lICcnKQorCXsKKwkJJGNtZCA9ICJwZ193YWxkdW1wIC1wICR3YWxfZGlyIC1zICRzdGFy dF9sc24gLWUgJGVuZF9sc24gMj4vZGV2L251bGwiOworCX0KKwllbHNlCisJeworCQkkY21k ID0gInBnX3dhbGR1bXAgLXAgJHdhbF9kaXIgLXMgJHN0YXJ0X2xzbiAyPi9kZXYvbnVsbCI7 CisJfQorCisJbXkgQGxpbmVzID0gYCRjbWRgOworCisJIyAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisJIyBDb3VudGVycworCSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCW15 ICR0b3RhbF9yZWNvcmRzID0gMDsKKwlteSAkdG90YWxfYnl0ZXMgICA9IDA7CisKKwlteSAk cHJ1bmVfcmVjb3JkcyA9IDA7CisJbXkgJHBydW5lX2J5dGVzICAgPSAwOworCisJZm9yZWFj aCBteSAkbGluZSAoQGxpbmVzKQorCXsKKwkJIyBFeHRyYWN0IHRvdGFsIHJlY29yZCBzaXpl CisJCWlmICgkbGluZSA9fiAvbGVuIFwocmVjXC90b3RcKTpccypcZCtcL1xzKihcZCspLykK KwkJeworCQkJbXkgJHNpemUgPSAkMTsKKworCQkJJHRvdGFsX3JlY29yZHMrKzsKKwkJCSR0 b3RhbF9ieXRlcyArPSAkc2l6ZTsKKworCQkJIyBQUlVORS1zcGVjaWZpYyB0cmFja2luZwor CQkJaWYgKCRsaW5lID1+IC9QUlVORV9WQUNVVU1fU0NBTi8pCisJCQl7CisJCQkJJHBydW5l X3JlY29yZHMrKzsKKwkJCQkkcHJ1bmVfYnl0ZXMgKz0gJHNpemU7CisJCQl9CisJCX0KKwl9 CisKKwlpZiAoJHRvdGFsX3JlY29yZHMgPT0gMCkKKwl7CisJCWRpZSAiTm8gV0FMIHJlY29y ZHMgZm91bmQgaW4gcmFuZ2UgJHN0YXJ0X2xzbiDihpIgJGVuZF9sc24iOworCX0KKworCXBy aW50ICJUT1RBTDogcmVjb3Jkcz0kdG90YWxfcmVjb3JkczsgYnl0ZXM9JHRvdGFsX2J5dGVz XG4iOworCXByaW50ICJQUlVORTogcmVjb3Jkcz0kcHJ1bmVfcmVjb3JkczsgYnl0ZXM9JHBy dW5lX2J5dGVzXG4iOworCisJcmV0dXJuIHsKKwkJdG90YWxfcmVjb3JkcyA9PiAkdG90YWxf cmVjb3JkcywKKwkJdG90YWxfYnl0ZXMgICA9PiAkdG90YWxfYnl0ZXMsCisJCXBydW5lX3Jl Y29yZHMgPT4gJHBydW5lX3JlY29yZHMsCisJCXBydW5lX2J5dGVzICAgPT4gJHBydW5lX2J5 dGVzLAorCX07Cit9CisKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFJ1biB0ZXN0IG9uIGEgZnJlc2ggY2x1c3Rl cgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KK3N1YiBydW5fY2x1c3Rlcl90ZXN0Cit7CisJbXkgKCRuYW1lLCAkY29t cHJlc3Npb24sICR3b3JrbG9hZCkgPSBAXzsKKworCW15ICRub2RlID0gUG9zdGdyZVNRTDo6 VGVzdDo6Q2x1c3Rlci0+bmV3KCRuYW1lKTsKKworCSRub2RlLT5pbml0OworCisJJG5vZGUt PmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCBxcXsKKwkJd2FsX2xldmVsID0gcmVw bGljYQorCQlhdXRvdmFjdXVtID0gb2ZmCisJCXdhbF9wcnVuZV9kZm9yX2NvbXByZXNzaW9u ID0gJGNvbXByZXNzaW9uCisgCQl3YWxfa2VlcF9zaXplID0gJzFHQicKKwkJbWF4X3dhbF9z aXplID0gJzIwR0InCisJfSk7CisKKwkkbm9kZS0+c3RhcnQ7CisKKwlteSAoJHN0YXJ0X2xz biwgJGVuZF9sc24pID0gZ2VuZXJhdGVfcHJ1bmVfd29ya2xvYWQoJG5vZGUsICR3b3JrbG9h ZCk7CisKKwkkbm9kZS0+c3RvcDsKKworCXJldHVybiBjb2xsZWN0X3dhbF9zdGF0cygkbm9k ZSwgJHN0YXJ0X2xzbiwgJGVuZF9sc24pOworfQorCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBGb3JtYXR0aW5n IGhlbHBlcnMKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisKK3N1YiBfcGN0X3JlZHVjdGlvbgoreworCW15ICgkYmVm b3JlLCAkYWZ0ZXIpID0gQF87CisJcmV0dXJuICJOL0EiIGlmICRiZWZvcmUgPT0gMDsKKwor CW15ICRwY3QgPSAxMDAgKiAoJGJlZm9yZSAtICRhZnRlcikgLyAkYmVmb3JlOworCXJldHVy biBzcHJpbnRmKCIlZCUlIiwgaW50KCRwY3QgKyAwLjUpKTsKK30KKworc3ViIF9yYXRpbwor eworCW15ICgkYmVmb3JlLCAkYWZ0ZXIpID0gQF87CisJcmV0dXJuICJOL0EiIGlmICRhZnRl ciA9PSAwOworCisJbXkgJHIgPSAkYmVmb3JlIC8gJGFmdGVyOworCXJldHVybiBzcHJpbnRm KCIlLjFmeCIsICRyKTsKK30KKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUmVwb3J0OiB0b3RhbCBXQUwgc3Rh dHMKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCitzdWIgcmVwb3J0X3dhbF9kaWZmCit7CisJbXkgKCRvZmYsICRvbikg PSBAXzsKKworCW15ICRiX2J5dGVzID0gJG9mZi0+e3RvdGFsX2J5dGVzfTsKKwlteSAkYV9i eXRlcyA9ICRvbi0+e3RvdGFsX2J5dGVzfTsKKworCXByaW50ZiAiJS0yMHMgJTE3cyAlMTdz ICUxMXNcbiIsCisJCSItIiB4IDIwLCAiLSIgeCAxNywgIi0iIHggMTcsICItIiB4IDExOwor CisJcHJpbnRmICIlLTIwcyAlMTdzICUxN3MgJTExc1xuIiwKKwkJIiIsICJERk9SIG9mZiwg Ynl0ZXMiLCAiREZPUiBvbiwgYnl0ZXMiLCAiUmVkdWN0aW9uIjsKKworCXByaW50ZiAiJS0y MHMgJTE3cyAlMTdzICUxMXNcbiIsCisJCSItIiB4IDIwLCAiLSIgeCAxNywgIi0iIHggMTcs ICItIiB4IDExOworCisJcHJpbnRmICIlLTIwcyAlMTdkICUxN2QgJTExc1xuIiwKKwkJIldB TCB0b3RhbCBzaXplIiwKKwkJJG9mZi0+e3RvdGFsX2J5dGVzfSwKKwkJJG9uLT57dG90YWxf Ynl0ZXN9LAorCQlfcGN0X3JlZHVjdGlvbigkb2ZmLT57dG90YWxfYnl0ZXN9LCAkb24tPnt0 b3RhbF9ieXRlc30pOworCisJcHJpbnRmICIlLTIwcyAlMTdkICUxN2QgJTExc1xuXG4iLAor CQkiUHJ1bmUgcmVjb3JkcyBzaXplIiwKKwkJJG9mZi0+e3BydW5lX2J5dGVzfSwKKwkJJG9u LT57cHJ1bmVfYnl0ZXN9LAorCQlfcmF0aW8oJG9mZi0+e3BydW5lX2J5dGVzfSwgJG9uLT57 cHJ1bmVfYnl0ZXN9KTsKK30KKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgU2NlbmFyaW8gMTogVkFDVVVNIHdp dGhvdXQgaW5kZXgKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCitteSAkb2ZmX25vaWR4ID0gcnVuX2NsdXN0ZXJfdGVz dCgicHJ1bmVfb2ZmX25vaWR4IiwgIm9mZiIsICJ2YWN1dW1fbm9faW5kZXgiKTsKK215ICRv bl9ub2lkeCAgPSBydW5fY2x1c3Rlcl90ZXN0KCJwcnVuZV9vbl9ub2lkeCIsICAib24iLCAg InZhY3V1bV9ub19pbmRleCIpOworCitjbXBfb2soCisJJG9mZl9ub2lkeC0+e3BydW5lX2J5 dGVzfSwKKwknPicsCisJJG9uX25vaWR4LT57cHJ1bmVfYnl0ZXN9LAorCSdERk9SIHJlZHVj ZXMgdGhlIFBSVU5FIFdBTCBzaXplIG9uIHZhY3V1bWluZyBhIHRhYmxlIGhhdmluZyBubyBp bmRleC4nCispOworCitjbXBfb2soCisJJG9mZl9ub2lkeC0+e3RvdGFsX2J5dGVzfSwKKwkn PicsCisJJG9uX25vaWR4LT57dG90YWxfYnl0ZXN9LAorCSdERk9SIHJlZHVjZXMgdGhlIHRv dGFsIFdBTCBzaXplIG9uIHZhY3V1bWluZyBhIHRhYmxlIGhhdmluZyBubyBpbmRleC4nCisp OworCitwcmludCAiXG5cbj09PSBWQUNVVU0gKHRhYmxlIHdpdGggbm8gaW5kZXgpID09PVxu IjsKK3JlcG9ydF93YWxfZGlmZigkb2ZmX25vaWR4LCAkb25fbm9pZHgpOworCisjIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIyBTY2VuYXJpbyAyOiBWQUNVVU0gd2l0aCBpbmRleAorIyAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK215ICRvZmZf aWR4ID0gcnVuX2NsdXN0ZXJfdGVzdCgicHJ1bmVfb2ZmX2lkeCIsICJvZmYiLCAidmFjdXVt X3dpdGhfaW5kZXgiKTsKK215ICRvbl9pZHggID0gcnVuX2NsdXN0ZXJfdGVzdCgicHJ1bmVf b25faWR4IiwgICJvbiIsICAidmFjdXVtX3dpdGhfaW5kZXgiKTsKKworY21wX29rKAorCSRv ZmZfaWR4LT57cHJ1bmVfYnl0ZXN9LAorCSc+JywKKwkkb25faWR4LT57cHJ1bmVfYnl0ZXN9 LAorCSdERk9SIHJlZHVjZXMgdGhlIFBSVU5FIFdBTCBzaXplIG9uIHZhY3V1bWluZyBhIHRh YmxlIGhhdmluZyBhbiBpbmRleC4nCispOworCitjbXBfb2soCisJJG9mZl9pZHgtPnt0b3Rh bF9ieXRlc30sCisJJz49JywKKwkkb25faWR4LT57dG90YWxfYnl0ZXN9LAorCSdERk9SIHJl ZHVjZXMgdGhlIHRvdGFsIFdBTCBzaXplIG9uIHZhY3V1bWluZyBhIHRhYmxlIGhhdmluZyBh biBpbmRleC4nCispOworCitwcmludCAiXG5cbj09PSBWQUNVVU0gKHRhYmxlIHdpdGggaW5k ZXgpID09PVxuIjsKK3JlcG9ydF93YWxfZGlmZigkb2ZmX2lkeCwgJG9uX2lkeCk7CisKK2Rv bmVfdGVzdGluZygpOwotLSAKMi41My4wCgo= --------------1IUaLyPVXDOy4S8HXjAMePOm--