Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1p12PK-0001Zb-W3 for pgsql-hackers@arkaria.postgresql.org; Fri, 02 Dec 2022 09:32:35 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1p12PJ-0004Qs-O5 for pgsql-hackers@arkaria.postgresql.org; Fri, 02 Dec 2022 09:32:33 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1p12PJ-0004PJ-6A for pgsql-hackers@lists.postgresql.org; Fri, 02 Dec 2022 09:32:33 +0000 Received: from mail-wm1-x336.google.com ([2a00:1450:4864:20::336]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1p12PD-0006or-Vd for pgsql-hackers@postgresql.org; Fri, 02 Dec 2022 09:32:32 +0000 Received: by mail-wm1-x336.google.com with SMTP id j5-20020a05600c410500b003cfa9c0ea76so3782008wmi.3 for ; Fri, 02 Dec 2022 01:32:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=in-reply-to:references:cc:to:from:content-language:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=mEPodVA7+TBKyyZW11YfqOPslbw+JXiWPxe2OSouXY0=; b=FRv0/MocfeN8OkYrOp2LO/qZe2iLPlDcIA3Vkzc5ebS7pYCrhFhmTo2RoPRWNOmCXL z99K9cRrJdBSV6bBAg2AJVJALuUmZp0EBW4HKh9G9giTaTTUBBnBa6/O59y7/ZYECIBX Yl5ZFgRWo8Mm8dcZeYylZvqTlKrqD+mTYGMtCVOFgSGR+nypVLK2pGj4bguJMibgD7r7 ex+45mUHuYzql4GW5tWhLKR2lvg1mgJv3o6nSYvgXf0FSC03AWvYEXuzWR65V8lz8TMi 472zzk8Zt1pZ+t+Z5isI+zx0jJCs94BSRb1AC3ZjpJpD65c1DgEU0ax8qxrcavF7321m KtAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:references:cc:to:from:content-language:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=mEPodVA7+TBKyyZW11YfqOPslbw+JXiWPxe2OSouXY0=; b=t4Mtk9AJqac5SNqxuMwEjiZl5ERHBWqAcbd9CYDMT3IIpYPMvt3ipXCyv9Jc2Pqddn 9FVxjNWS6ZN5IKS6KOeGethrNpNkS7W66W8185MIty+XMKqcebHlPrajKwSdHWsN2bLC fvlkBmK8FNKYfxwVAYyzlV4A0X3/RLJV9FVcMM5l1qpOD6XheXucjOL3z2ZkirlPdSxq bmSoPS+xROaGtT1tasuUKf+T9hM8ahiOuJdKp0zNkIWqnhR3MrCyDYvcvLTcgVgzocFh B8/KWPTh91SClMZ7+hgVoIBdCY3VNJFRbT+SN6wRzgQ0BDy5qxjjHROJAdQcNNma+sSp 42iQ== X-Gm-Message-State: ANoB5pkAi/7QpqS+xMjj8AHbjoJ7A5outbW96jr7C/V8e3FGww3pIMwi vRIFcQmHueULZp5S9OVjt0A= X-Google-Smtp-Source: AA0mqf7ZsnJW98vGysJVQWrowAYMaXYbNsXJ51E8NCtB631yoYoXIH/f4/zPZ2dSFb93bRwRFlfyvA== X-Received: by 2002:a05:600c:654c:b0:3d0:110c:d25f with SMTP id dn12-20020a05600c654c00b003d0110cd25fmr44914241wmb.125.1669973545591; Fri, 02 Dec 2022 01:32:25 -0800 (PST) Received: from [10.95.94.254] ([54.239.6.188]) by smtp.gmail.com with ESMTPSA id j13-20020a056000124d00b002421db5f279sm6364633wrx.78.2022.12.02.01.32.24 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 02 Dec 2022 01:32:24 -0800 (PST) Content-Type: multipart/mixed; boundary="------------ulL7c4xqDnt0SfJwoobL67iT" Message-ID: Date: Fri, 2 Dec 2022 10:32:23 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.5.0 Subject: Re: Minimal logical decoding on standbys Content-Language: en-US From: "Drouvot, Bertrand" To: Andres Freund , Robert Haas Cc: Alvaro Herrera , Ibrar Ahmed , Amit Khandekar , fabriziomello@gmail.com, tushar , Rahila Syed , pgsql-hackers References: <202107281526.o74ieuj6sj7z@alvherre.pgsql> <2b14d595-1e8b-e5b6-6098-6a11d19fa1c7@amazon.com> <688cbedf-a172-f0d8-8352-d4ea223bceeb@amazon.com> <20211028210755.afmwcvpo6ajwdx6n@alap3.anarazel.de> <6711d09f-eaa9-264b-ec7f-88004218b075@amazon.com> <178cf7da-9bd7-e328-9c49-e28ac4701352@gmail.com> 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. --------------ulL7c4xqDnt0SfJwoobL67iT Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi, On 11/25/22 11:26 AM, Drouvot, Bertrand wrote: > Hi, > > On 9/30/22 2:11 PM, Drouvot, Bertrand wrote: >> Hi, >> >> On 7/6/22 3:30 PM, Drouvot, Bertrand wrote: >>> Hi, >>> >>> On 10/28/21 11:07 PM, Andres Freund wrote: >>>> Hi, >>>> >>>> On 2021-10-28 16:24:22 -0400, Robert Haas wrote: >>>>> On Wed, Oct 27, 2021 at 2:56 AM Drouvot, Bertrand wrote: >>>>>> So you have in mind to check for XLogLogicalInfoActive() first, and if true, then open the relation and call >>>>>> RelationIsAccessibleInLogicalDecoding()? >>>>> I think 0001 is utterly unacceptable. We cannot add calls to >>>>> table_open() in low-level functions like this. Suppose for example >>>>> that _bt_getbuf() calls _bt_log_reuse_page() which with 0001 applied >>>>> would call get_rel_logical_catalog(). _bt_getbuf() will have acquired >>>>> a buffer lock on the page. The idea that it's safe to call >>>>> table_open() while holding a buffer lock cannot be taken seriously. >>>> Yes - that's pretty clearly a deadlock hazard. It shouldn't too hard to fix, I >>>> think. Possibly a bit more verbose than nice, but... >>>> >>>> Alternatively we could propagate the information whether a relcache entry is >>>> for a catalog from the table to the index. Then we'd not need to change the >>>> btree code to pass the table down. >>> >>> Looking closer at RelationIsAccessibleInLogicalDecoding() It seems to me that the missing part to be able to tell whether or not an index is for a catalog is the rd_options->user_catalog_table value of its related heap relation. >>> >>> Then, a way to achieve that could be to: >>> >>> - Add to Relation a new "heap_rd_options" representing the rd_options of the related heap relation when appropriate >>> >>> - Trigger the related indexes relcache invalidations when an ATExecSetRelOptions() is triggered on a heap relation >>> >>> - Write an equivalent of RelationIsUsedAsCatalogTable() for indexes that would make use of the heap_rd_options instead >>> >>> Does that sound like a valid option to you or do you have another idea in mind to propagate the information whether a relcache entry is for a catalog from the table to the index? >>> >> >> I ended up with the attached proposal to propagate the catalog information to the indexes. >> >> The attached adds a new field "isusercatalog" in pg_index to indicate whether or not the index is linked to a table that has the storage parameter user_catalog_table set to true. >> >> Then it defines new macros, including "IndexIsAccessibleInLogicalDecoding" making use of this new field. >> >> This new macro replaces get_rel_logical_catalog() that was part of the previous patch version. >> >> What do you think about this approach and the attached? >> >> If that sounds reasonable, then I'll add tap tests for it and try to improve the way isusercatalog is propagated to the index(es) in case a reset is done on user_catalog_table on the table (currently in this POC patch, it's hardcoded to "false" which is the default value for user_catalog_table in boolRelOpts[]) (A better approach would be probably to retrieve the value from the table once the reset is done and then propagate it to the index(es).) > > Please find attached a rebase to propagate the catalog information to the indexes. > It also takes care of the RESET on user_catalog_table (adding a new Macro "HEAP_DEFAULT_USER_CATALOG_TABLE") and adds a few tests in contrib/test_decoding/sql/ddl.sql. Please find attached a new patch series: v27-0001-Add-info-in-WAL-records-in-preparation-for-logic.patch v27-0002-Handle-logical-slot-conflicts-on-standby.patch v27-0003-Allow-logical-decoding-on-standby.patch v27-0004-New-TAP-test-for-logical-decoding-on-standby.patch v27-0005-Doc-changes-describing-details-about-logical-dec.patch v27-0006-Fixing-Walsender-corner-case-with-logical-decodi.patch with the previous comments addressed, means mainly: 1/ don't call table_open() in low-level functions in 0001: this is done with a new field "isusercatalog" in pg_index to indicate whether or not the index is linked to a table that has the storage parameter user_catalog_table set to true (we may want to make this field "invisible" though). This new field is then used in the new IndexIsAccessibleInLogicalDecoding Macro (through IndexIsUserCatalog). 2/ Renaming the new field generated in the xlog record (to arrange conflict handling) from "onCatalogTable" to "onCatalogAccessibleInLogicalDecoding" to avoid any confusion (see 0001). 3/ Making sure that "currTLI" is the current one in logical_read_xlog_page() (see 0003). 4/ Fixing Walsender/startup process corner case: It's done in 0006 (I thought it is better to keep the other patches purely "feature" related and to address this corner case separately to ease the review). The fix is making use of a new condition variable "replayedCV" so that the startup process can broadcast the walsender(s) once a replay is done. Remarks: - The new confl_active_logicalslot field added in pg_stat_database_conflicts (see 0002) is incremented only if the slot being invalidated is active (I think it makes more sense in regard to the other fields too). In all the cases (active/not active) the slot invalidation is reported in the logfile. The documentation update mentions this behavior (see 0002). - LogStandbySnapshot() being moved outside of the loop in ReplicationSlotReserveWal() (see 0003), is a proposal made by Andres in [1] and I think it makes sense. - Tap tests (see 0004) are covering: tests that the logical decoding on standby behaves correctly, conflicts, slots invalidations, standby promotion. Looking forward to your feedback, [1]: https://www.postgresql.org/message-id/20210406180231.qsnkyrgrm7gtxb73%40alap3.anarazel.de Regards, -- Bertrand Drouvot PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com --------------ulL7c4xqDnt0SfJwoobL67iT Content-Type: text/plain; charset=UTF-8; name="v27-0006-Fixing-Walsender-corner-case-with-logical-decodi.patch" Content-Disposition: attachment; filename*0="v27-0006-Fixing-Walsender-corner-case-with-logical-decodi.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBkNTlmNzJkYzYyY2YyOTIyODAwYTk5YWMwMDFmYjdjOWFlYWFhYjcyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVGh1LCAxIERlYyAyMDIyIDEyOjM0OjU5ICswMDAwClN1YmplY3Q6IFtQQVRD SCB2MjcgNi82XSBGaXhpbmcgV2Fsc2VuZGVyIGNvcm5lciBjYXNlIHdpdGggbG9naWNhbCBk ZWNvZGluZyBvbgogc3RhbmRieS4KClRoZSBwcm9ibGVtIGlzIHRoYXQgV2FsU25kV2FpdEZv cldhbCgpIHdhaXRzIGZvciB0aGUgKnJlcGxheSogTFNOIHRvCmluY3JlYXNlLCBidXQgZ2V0 cyB3b2tlbiB1cCBieSB3YWxyZWNlaXZlciB3aGVuIG5ldyBXQUwgaGFzIGJlZW4KZmx1c2hl ZC4gV2hpY2ggbWVhbnMgdGhhdCB0eXBpY2FsbHkgd2Fsc2VuZGVycyB3aWxsIGdldCB3b2tl biB1cCBhdCB0aGUKc2FtZSB0aW1lIHRoYXQgdGhlIHN0YXJ0dXAgcHJvY2VzcyB3aWxsIGJl IC0gd2hpY2ggbWVhbnMgdGhhdCBieSB0aGUKdGltZSB0aGUgbG9naWNhbCB3YWxzZW5kZXIg Y2hlY2tzIEdldFhMb2dSZXBsYXlSZWNQdHIoKSBpdCdzIHVubGlrZWx5CnRoYXQgdGhlIHN0 YXJ0dXAgcHJvY2VzcyBhbHJlYWR5IHJlcGxheWVkIHRoZSByZWNvcmQgYW5kIHVwZGF0ZWQK WExvZ0N0bC0+bGFzdFJlcGxheWVkRW5kUmVjUHRyLgoKSW50cm9kdWNpbmcgYSBuZXcgY29u ZGl0aW9uIHZhcmlhYmxlIHRvIGZpeCB0aGlzIGNvcm5lciBjYXNlLgotLS0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jIHwgMjggKysrKysrKysrKysrKysr KysrKysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jICAgICAgIHwgMzEg KysrKysrKysrKysrKysrKystLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dh aXRfZXZlbnQuYyAgIHwgIDMgKysrCiBzcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ3JlY292ZXJ5 LmggICAgICAgICB8ICAzICsrKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVy LmggICAgICAgfCAgMSArCiBzcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmggICAgICAg ICAgICB8ICAxICsKIDYgZmlsZXMgY2hhbmdlZCwgNTkgaW5zZXJ0aW9ucygrKSwgOCBkZWxl dGlvbnMoLSkKICA0MS4yJSBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS8KICA0OC41JSBz cmMvYmFja2VuZC9yZXBsaWNhdGlvbi8KICAgMy42JSBzcmMvYmFja2VuZC91dGlscy9hY3Rp dml0eS8KICAgMy40JSBzcmMvaW5jbHVkZS9hY2Nlc3MvCgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYwppbmRleCA0MWZmYzU3ZGE5Li4wMzM3ZmRjNzdh IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3Zlcnku YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYwpAQCAt MzU4LDYgKzM1OCw5IEBAIHR5cGVkZWYgc3RydWN0IFhMb2dSZWNvdmVyeUN0bERhdGEKIAlS ZWNvdmVyeVBhdXNlU3RhdGUgcmVjb3ZlcnlQYXVzZVN0YXRlOwogCUNvbmRpdGlvblZhcmlh YmxlIHJlY292ZXJ5Tm90UGF1c2VkQ1Y7CiAKKwkvKiBSZXBsYXkgc3RhdGUgKHNlZSBnZXRS ZXBsYXllZENWKCkgZm9yIG1vcmUgZXhwbGFuYXRpb24pICovCisJQ29uZGl0aW9uVmFyaWFi bGUgcmVwbGF5ZWRDVjsKKwogCXNsb2NrX3QJCWluZm9fbGNrOwkJLyogbG9ja3Mgc2hhcmVk IHZhcmlhYmxlcyBzaG93biBhYm92ZSAqLwogfSBYTG9nUmVjb3ZlcnlDdGxEYXRhOwogCkBA IC00NjcsNiArNDcwLDcgQEAgWExvZ1JlY292ZXJ5U2htZW1Jbml0KHZvaWQpCiAJU3Bpbkxv Y2tJbml0KCZYTG9nUmVjb3ZlcnlDdGwtPmluZm9fbGNrKTsKIAlJbml0U2hhcmVkTGF0Y2go JlhMb2dSZWNvdmVyeUN0bC0+cmVjb3ZlcnlXYWtldXBMYXRjaCk7CiAJQ29uZGl0aW9uVmFy aWFibGVJbml0KCZYTG9nUmVjb3ZlcnlDdGwtPnJlY292ZXJ5Tm90UGF1c2VkQ1YpOworCUNv bmRpdGlvblZhcmlhYmxlSW5pdCgmWExvZ1JlY292ZXJ5Q3RsLT5yZXBsYXllZENWKTsKIH0K IAogLyoKQEAgLTE5MTYsNiArMTkyMCwxMSBAQCBBcHBseVdhbFJlY29yZChYTG9nUmVhZGVy U3RhdGUgKnhsb2dyZWFkZXIsIFhMb2dSZWNvcmQgKnJlY29yZCwgVGltZUxpbmVJRCAqcmVw bAogCVhMb2dSZWNvdmVyeUN0bC0+bGFzdFJlcGxheWVkVExJID0gKnJlcGxheVRMSTsKIAlT cGluTG9ja1JlbGVhc2UoJlhMb2dSZWNvdmVyeUN0bC0+aW5mb19sY2spOwogCisJLyoKKwkg KiB3YWtlIHVwIHdhbHNlbmRlcihzKSB1c2VkIGJ5IGxvZ2ljYWwgZGVjb2Rpbmcgb24gc3Rh bmRieS4KKwkgKi8KKwlDb25kaXRpb25WYXJpYWJsZUJyb2FkY2FzdCgmWExvZ1JlY292ZXJ5 Q3RsLT5yZXBsYXllZENWKTsKKwogCS8qCiAJICogSWYgcm1fcmVkbyBjYWxsZWQgWExvZ1Jl cXVlc3RXYWxSZWNlaXZlclJlcGx5LCB0aGVuIHdlIHdha2UgdXAgdGhlCiAJICogcmVjZWl2 ZXIgc28gdGhhdCBpdCBub3RpY2VzIHRoZSB1cGRhdGVkIGxhc3RSZXBsYXllZEVuZFJlY1B0 ciBhbmQgc2VuZHMKQEAgLTQ5MTEsMyArNDkyMCwyMiBAQCBhc3NpZ25fcmVjb3ZlcnlfdGFy Z2V0X3hpZChjb25zdCBjaGFyICpuZXd2YWwsIHZvaWQgKmV4dHJhKQogCWVsc2UKIAkJcmVj b3ZlcnlUYXJnZXQgPSBSRUNPVkVSWV9UQVJHRVRfVU5TRVQ7CiB9CisKKy8qCisgKiBSZXR1 cm4gdGhlIENvbmRpdGlvblZhcmlhYmxlIGluZGljYXRpbmcgdGhhdCBhIHJlcGxheSBoYXMg YmVlbiBkb25lLgorICoKKyAqIFRoaXMgaXMgbmVlZGVkIGZvciBsb2dpY2FsIGRlY29kaW5n IG9uIHN0YW5kYnkuIEluZGVlZCB0aGUgInByb2JsZW0iIGlzIHRoYXQKKyAqIFdhbFNuZFdh aXRGb3JXYWwoKSB3YWl0cyBmb3IgdGhlICpyZXBsYXkqIExTTiB0byBpbmNyZWFzZSwgYnV0 IGdldHMgd29rZW4gdXAKKyAqIGJ5IHdhbHJlY2VpdmVyIHdoZW4gbmV3IFdBTCBoYXMgYmVl biBmbHVzaGVkLiBXaGljaCBtZWFucyB0aGF0IHR5cGljYWxseQorICogd2Fsc2VuZGVycyB3 aWxsIGdldCB3b2tlbiB1cCBhdCB0aGUgc2FtZSB0aW1lIHRoYXQgdGhlIHN0YXJ0dXAgcHJv Y2VzcworICogd2lsbCBiZSAtIHdoaWNoIG1lYW5zIHRoYXQgYnkgdGhlIHRpbWUgdGhlIGxv Z2ljYWwgd2Fsc2VuZGVyIGNoZWNrcworICogR2V0WExvZ1JlcGxheVJlY1B0cigpIGl0J3Mg dW5saWtlbHkgdGhhdCB0aGUgc3RhcnR1cCBwcm9jZXNzIGFscmVhZHkgcmVwbGF5ZWQKKyAq IHRoZSByZWNvcmQgYW5kIHVwZGF0ZWQgWExvZ0N0bC0+bGFzdFJlcGxheWVkRW5kUmVjUHRy LgorICoKKyAqIFRoZSBDb25kaXRpb25WYXJpYWJsZSBYTG9nUmVjb3ZlcnlDdGwtPnJlcGxh eWVkQ1Ygc29sdmVzIHRoaXMgY29ybmVyIGNhc2UuCisgKi8KK0NvbmRpdGlvblZhcmlhYmxl ICoKK2dldFJlcGxheWVkQ1Yodm9pZCkKK3sKKwlyZXR1cm4gJlhMb2dSZWNvdmVyeUN0bC0+ cmVwbGF5ZWRDVjsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dh bHNlbmRlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKaW5kZXgg OTY2MmUzMTZjOS4uOGM4ZGJlODEyZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vd2Fsc2VuZGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2Vu ZGVyLmMKQEAgLTE1NDgsNiArMTU0OCw3IEBAIFdhbFNuZFdhaXRGb3JXYWwoWExvZ1JlY1B0 ciBsb2MpCiB7CiAJaW50CQkJd2FrZUV2ZW50czsKIAlzdGF0aWMgWExvZ1JlY1B0ciBSZWNl bnRGbHVzaFB0ciA9IEludmFsaWRYTG9nUmVjUHRyOworCUNvbmRpdGlvblZhcmlhYmxlICpy ZXBsYXllZENWID0gZ2V0UmVwbGF5ZWRDVigpOwogCiAJLyoKIAkgKiBGYXN0IHBhdGggdG8g YXZvaWQgYWNxdWlyaW5nIHRoZSBzcGlubG9jayBpbiBjYXNlIHdlIGFscmVhZHkga25vdyB3 ZQpAQCAtMTU2Niw3ICsxNTY3LDYgQEAgV2FsU25kV2FpdEZvcldhbChYTG9nUmVjUHRyIGxv YykKIAogCWZvciAoOzspCiAJewotCQlsb25nCQlzbGVlcHRpbWU7CiAKIAkJLyogQ2xlYXIg YW55IGFscmVhZHktcGVuZGluZyB3YWtldXBzICovCiAJCVJlc2V0TGF0Y2goTXlMYXRjaCk7 CkBAIC0xNjUwLDIwICsxNjUwLDM1IEBAIFdhbFNuZFdhaXRGb3JXYWwoWExvZ1JlY1B0ciBs b2MpCiAJCVdhbFNuZEtlZXBhbGl2ZUlmTmVjZXNzYXJ5KCk7CiAKIAkJLyoKLQkJICogU2xl ZXAgdW50aWwgc29tZXRoaW5nIGhhcHBlbnMgb3Igd2UgdGltZSBvdXQuICBBbHNvIHdhaXQg Zm9yIHRoZQotCQkgKiBzb2NrZXQgYmVjb21pbmcgd3JpdGFibGUsIGlmIHRoZXJlJ3Mgc3Rp bGwgcGVuZGluZyBvdXRwdXQuCisJCSAqIFdoZW4gbm90IGluIHJlY292ZXJ5LCBzbGVlcCB1 bnRpbCBzb21ldGhpbmcgaGFwcGVucyBvciB3ZSB0aW1lIG91dC4KKwkJICogQWxzbyB3YWl0 IGZvciB0aGUgc29ja2V0IGJlY29taW5nIHdyaXRhYmxlLCBpZiB0aGVyZSdzIHN0aWxsIHBl bmRpbmcgb3V0cHV0LgogCQkgKiBPdGhlcndpc2Ugd2UgbWlnaHQgc2l0IG9uIHNlbmRhYmxl IG91dHB1dCBkYXRhIHdoaWxlIHdhaXRpbmcgZm9yCiAJCSAqIG5ldyBXQUwgdG8gYmUgZ2Vu ZXJhdGVkLiAgKEJ1dCBpZiB3ZSBoYXZlIG5vdGhpbmcgdG8gc2VuZCwgd2UgZG9uJ3QKIAkJ ICogd2FudCB0byB3YWtlIG9uIHNvY2tldC13cml0YWJsZS4pCiAJCSAqLwotCQlzbGVlcHRp bWUgPSBXYWxTbmRDb21wdXRlU2xlZXB0aW1lKEdldEN1cnJlbnRUaW1lc3RhbXAoKSk7CisJ CWlmICghUmVjb3ZlcnlJblByb2dyZXNzKCkpCisJCXsKKwkJCWxvbmcJCXNsZWVwdGltZTsK KwkJCXNsZWVwdGltZSA9IFdhbFNuZENvbXB1dGVTbGVlcHRpbWUoR2V0Q3VycmVudFRpbWVz dGFtcCgpKTsKIAotCQl3YWtlRXZlbnRzID0gV0xfU09DS0VUX1JFQURBQkxFOworCQkJd2Fr ZUV2ZW50cyA9IFdMX1NPQ0tFVF9SRUFEQUJMRTsKIAotCQlpZiAocHFfaXNfc2VuZF9wZW5k aW5nKCkpCi0JCQl3YWtlRXZlbnRzIHw9IFdMX1NPQ0tFVF9XUklURUFCTEU7CisJCQlpZiAo cHFfaXNfc2VuZF9wZW5kaW5nKCkpCisJCQkJd2FrZUV2ZW50cyB8PSBXTF9TT0NLRVRfV1JJ VEVBQkxFOwogCi0JCVdhbFNuZFdhaXQod2FrZUV2ZW50cywgc2xlZXB0aW1lLCBXQUlUX0VW RU5UX1dBTF9TRU5ERVJfV0FJVF9XQUwpOworCQkJV2FsU25kV2FpdCh3YWtlRXZlbnRzLCBz bGVlcHRpbWUgKiAxMCwgV0FJVF9FVkVOVF9XQUxfU0VOREVSX1dBSVRfV0FMKTsKKwkJfQor CQllbHNlCisJCS8qCisJCSAqIFdlIGFyZSBpbiB0aGUgbG9naWNhbCBkZWNvZGluZyBvbiBz dGFuZGJ5IGNhc2UuCisJCSAqIFdlIGFyZSB3YWl0aW5nIGZvciB0aGUgc3RhcnR1cCBwcm9j ZXNzIHRvIHJlcGxheSB3YWwgcmVjb3JkKHMpIHVzaW5nCisJCSAqIGEgdGltZW91dCBpbiBj YXNlIHdlIGFyZSByZXF1ZXN0ZWQgdG8gc3RvcC4KKwkJICovCisJCXsKKwkJCUNvbmRpdGlv blZhcmlhYmxlUHJlcGFyZVRvU2xlZXAocmVwbGF5ZWRDVik7CisJCQlDb25kaXRpb25WYXJp YWJsZVRpbWVkU2xlZXAocmVwbGF5ZWRDViwgMTAwMCwKKwkJCQkJCQkJCQlXQUlUX0VWRU5U X1dBTF9TRU5ERVJfV0FJVF9SRVBMQVkpOworCQl9CiAJfQogCiAJLyogcmVhY3RpdmF0ZSBs YXRjaCBzbyBXYWxTbmRMb29wIGtub3dzIHRvIGNvbnRpbnVlICovCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMgYi9zcmMvYmFja2VuZC91 dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMKaW5kZXggYjJhYmQ3NWRkYi4uM2Y2MDU5ODA1 YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYwpAQCAtNDU3 LDYgKzQ1Nyw5IEBAIHBnc3RhdF9nZXRfd2FpdF9pcGMoV2FpdEV2ZW50SVBDIHcpCiAJCWNh c2UgV0FJVF9FVkVOVF9XQUxfUkVDRUlWRVJfV0FJVF9TVEFSVDoKIAkJCWV2ZW50X25hbWUg PSAiV2FsUmVjZWl2ZXJXYWl0U3RhcnQiOwogCQkJYnJlYWs7CisJCWNhc2UgV0FJVF9FVkVO VF9XQUxfU0VOREVSX1dBSVRfUkVQTEFZOgorCQkJZXZlbnRfbmFtZSA9ICJXYWxSZWNlaXZl cldhaXRSZXBsYXkiOworCQkJYnJlYWs7CiAJCWNhc2UgV0FJVF9FVkVOVF9YQUNUX0dST1VQ X1VQREFURToKIAkJCWV2ZW50X25hbWUgPSAiWGFjdEdyb3VwVXBkYXRlIjsKIAkJCWJyZWFr OwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dyZWNvdmVyeS5oIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL3hsb2dyZWNvdmVyeS5oCmluZGV4IGYzMzk4NDI1ZDguLjBhZmQ1 N2VjYWMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9ncmVjb3ZlcnkuaAor KysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ3JlY292ZXJ5LmgKQEAgLTE1LDYgKzE1LDcg QEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbnRyb2wuaCIKICNpbmNsdWRlICJsaWIvc3Ry aW5naW5mby5oIgogI2luY2x1ZGUgInV0aWxzL3RpbWVzdGFtcC5oIgorI2luY2x1ZGUgInN0 b3JhZ2UvY29uZGl0aW9uX3ZhcmlhYmxlLmgiCiAKIC8qCiAgKiBSZWNvdmVyeSB0YXJnZXQg dHlwZS4KQEAgLTE1NSw0ICsxNTYsNiBAQCBleHRlcm4gdm9pZCBSZWNvdmVyeVJlcXVpcmVz SW50UGFyYW1ldGVyKGNvbnN0IGNoYXIgKnBhcmFtX25hbWUsIGludCBjdXJyVmFsdWUsCiAK IGV4dGVybiB2b2lkIHhsb2dfb3V0ZGVzYyhTdHJpbmdJbmZvIGJ1ZiwgWExvZ1JlYWRlclN0 YXRlICpyZWNvcmQpOwogCitleHRlcm4gQ29uZGl0aW9uVmFyaWFibGUgKmdldFJlcGxheWVk Q1Yodm9pZCk7CisKICNlbmRpZgkJCQkJCQkvKiBYTE9HUkVDT1ZFUllfSCAqLwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmggYi9zcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi93YWxzZW5kZXIuaAppbmRleCA4MzM2YTZlNzE5Li41NTBlZjMxMDdm IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxzZW5kZXIuaAorKysg Yi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxzZW5kZXIuaApAQCAtMTMsNiArMTMsNyBA QAogI2RlZmluZSBfV0FMU0VOREVSX0gKIAogI2luY2x1ZGUgPHNpZ25hbC5oPgorI2luY2x1 ZGUgInN0b3JhZ2UvY29uZGl0aW9uX3ZhcmlhYmxlLmgiCiAKIC8qCiAgKiBXaGF0IHRvIGRv IHdpdGggYSBzbmFwc2hvdCBpbiBjcmVhdGUgcmVwbGljYXRpb24gc2xvdCBjb21tYW5kLgpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oIGIvc3JjL2luY2x1 ZGUvdXRpbHMvd2FpdF9ldmVudC5oCmluZGV4IDBiMjEwMGJlNGEuLjMwYzJjZjM1YWUgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaAorKysgYi9zcmMvaW5j bHVkZS91dGlscy93YWl0X2V2ZW50LmgKQEAgLTEyOCw2ICsxMjgsNyBAQCB0eXBlZGVmIGVu dW0KIAlXQUlUX0VWRU5UX1NZTkNfUkVQLAogCVdBSVRfRVZFTlRfV0FMX1JFQ0VJVkVSX0VY SVQsCiAJV0FJVF9FVkVOVF9XQUxfUkVDRUlWRVJfV0FJVF9TVEFSVCwKKwlXQUlUX0VWRU5U X1dBTF9TRU5ERVJfV0FJVF9SRVBMQVksCiAJV0FJVF9FVkVOVF9YQUNUX0dST1VQX1VQREFU RQogfSBXYWl0RXZlbnRJUEM7CiAKLS0gCjIuMzQuMQoK --------------ulL7c4xqDnt0SfJwoobL67iT Content-Type: text/plain; charset=UTF-8; name="v27-0005-Doc-changes-describing-details-about-logical-dec.patch" Content-Disposition: attachment; filename*0="v27-0005-Doc-changes-describing-details-about-logical-dec.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAwMThjNzUyNmZlMjFhMGRmMDFlMjc0NTBiODBhNDEwMjNmMzE3NTBmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVGh1LCAxIERlYyAyMDIyIDEwOjQ1OjA5ICswMDAwClN1YmplY3Q6IFtQQVRD SCB2MjcgNS82XSBEb2MgY2hhbmdlcyBkZXNjcmliaW5nIGRldGFpbHMgYWJvdXQgbG9naWNh bAogZGVjb2RpbmcuCgpBdXRob3I6IEFuZHJlcyBGcmV1bmQgKGluIGFuIG9sZGVyIHZlcnNp b24pLCBBbWl0IEtoYW5kZWthciwgQmVydHJhbmQgRHJvdXZvdApSZXZpZXdlZC1CeTogQmVy dHJhbmQgRHJvdXZvdCwgQW5kcmVzIEZyZXVuZCwgUm9iZXJ0IEhhYXMsIEZhYnJpemlvIGRl IFJveWVzIE1lbGxvCi0tLQogZG9jL3NyYy9zZ21sL2xvZ2ljYWxkZWNvZGluZy5zZ21sIHwg MjEgKysrKysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgMjEgaW5zZXJ0aW9u cygrKQogMTAwLjAlIGRvYy9zcmMvc2dtbC8KCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv bG9naWNhbGRlY29kaW5nLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbGRlY29kaW5nLnNn bWwKaW5kZXggMzhlZTY5ZGNjYy4uOWFjZjE2MDM3YSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL2xvZ2ljYWxkZWNvZGluZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsZGVj b2Rpbmcuc2dtbApAQCAtMzE2LDYgKzMxNiwyNyBAQCBwb3N0Z3Jlcz0jIHNlbGVjdCAqIGZy b20gcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdyZWdyZXNzaW9uX3Nsb3QnLCBOVUxM LCBOVQogICAgICBtYXkgY29uc3VtZSBjaGFuZ2VzIGZyb20gYSBzbG90IGF0IGFueSBnaXZl biB0aW1lLgogICAgIDwvcGFyYT4KIAorICAgIDxwYXJhPgorICAgICBBIGxvZ2ljYWwgcmVw bGljYXRpb24gc2xvdCBjYW4gYWxzbyBiZSBjcmVhdGVkIG9uIGEgaG90IHN0YW5kYnkuIFRv IHByZXZlbnQKKyAgICAgPGNvbW1hbmQ+VkFDVVVNPC9jb21tYW5kPiBmcm9tIHJlbW92aW5n IHJlcXVpcmVkIHJvd3MgZnJvbSB0aGUgc3lzdGVtCisgICAgIGNhdGFsb2dzLCA8dmFybmFt ZT5ob3Rfc3RhbmRieV9mZWVkYmFjazwvdmFybmFtZT4gc2hvdWxkIGJlIHNldCBvbiB0aGUK KyAgICAgc3RhbmRieS4gSW4gc3BpdGUgb2YgdGhhdCwgaWYgYW55IHJlcXVpcmVkIHJvd3Mg Z2V0IHJlbW92ZWQsIHRoZSBzbG90IGdldHMKKyAgICAgaW52YWxpZGF0ZWQuIEl0J3MgaGln aGx5IHJlY29tbWVuZGVkIHRvIHVzZSBhIHBoeXNpY2FsIHNsb3QgYmV0d2VlbiB0aGUgcHJp bWFyeQorICAgICBhbmQgdGhlIHN0YW5kYnkuIE90aGVyd2lzZSwgaG90X3N0YW5kYnlfZmVl ZGJhY2sgd2lsbCB3b3JrLCBidXQgb25seSB3aGlsZSB0aGUKKyAgICAgY29ubmVjdGlvbiBp cyBhbGl2ZSAoZm9yIGV4YW1wbGUgYSBub2RlIHJlc3RhcnQgd291bGQgYnJlYWsgaXQpLiBF eGlzdGluZworICAgICBsb2dpY2FsIHNsb3RzIG9uIHN0YW5kYnkgYWxzbyBnZXQgaW52YWxp ZGF0ZWQgaWYgd2FsX2xldmVsIG9uIHByaW1hcnkgaXMgcmVkdWNlZCB0bworICAgICBsZXNz IHRoYW4gJ2xvZ2ljYWwnLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICBGb3Ig YSBsb2dpY2FsIHNsb3QgdG8gYmUgY3JlYXRlZCwgaXQgYnVpbGRzIGEgaGlzdG9yaWMgc25h cHNob3QsIGZvciB3aGljaAorICAgICBpbmZvcm1hdGlvbiBvZiBhbGwgdGhlIGN1cnJlbnRs eSBydW5uaW5nIHRyYW5zYWN0aW9ucyBpcyBlc3NlbnRpYWwuIE9uCisgICAgIHByaW1hcnks IHRoaXMgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlLCBidXQgb24gc3RhbmRieSwgdGhpcyBp bmZvcm1hdGlvbgorICAgICBoYXMgdG8gYmUgb2J0YWluZWQgZnJvbSBwcmltYXJ5LiBTbywg c2xvdCBjcmVhdGlvbiBtYXkgd2FpdCBmb3Igc29tZQorICAgICBhY3Rpdml0eSB0byBoYXBw ZW4gb24gdGhlIHByaW1hcnkuIElmIHRoZSBwcmltYXJ5IGlzIGlkbGUsIGNyZWF0aW5nIGEK KyAgICAgbG9naWNhbCBzbG90IG9uIHN0YW5kYnkgbWF5IHRha2UgYSBub3RpY2VhYmxlIHRp bWUuCisgICAgPC9wYXJhPgorCiAgICAgPGNhdXRpb24+CiAgICAgIDxwYXJhPgogICAgICAg UmVwbGljYXRpb24gc2xvdHMgcGVyc2lzdCBhY3Jvc3MgY3Jhc2hlcyBhbmQga25vdyBub3Ro aW5nIGFib3V0IHRoZSBzdGF0ZQotLSAKMi4zNC4xCgo= --------------ulL7c4xqDnt0SfJwoobL67iT Content-Type: text/plain; charset=UTF-8; name="v27-0004-New-TAP-test-for-logical-decoding-on-standby.patch" Content-Disposition: attachment; filename*0="v27-0004-New-TAP-test-for-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSAzMjEyZjQ3YzBhNzM0MjUzNDJjMjJlY2Q1NmRjZGY1YjMyYjBkNDlhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVGh1LCAxIERlYyAyMDIyIDEwOjI4OjE4ICswMDAwClN1YmplY3Q6IFtQQVRD SCB2MjcgNC82XSBOZXcgVEFQIHRlc3QgZm9yIGxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRi eS4KCkF1dGhvcjogQ3JhaWcgUmluZ2VyIChpbiBhbiBvbGRlciB2ZXJzaW9uKSwgQW1pdCBL aGFuZGVrYXIsIEJlcnRyYW5kIERyb3V2b3QKUmV2aWV3ZWQtQnk6IEJlcnRyYW5kIERyb3V2 b3QsIEFuZHJlcyBGcmV1bmQsIFJvYmVydCBIYWFzLCBGYWJyaXppbyBkZSBSb3llcyBNZWxs bwotLS0KIHNyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0L0NsdXN0ZXIucG0gICAgICB8 ICAzNyArKwogc3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24uYnVpbGQgICAgICAgICAgICAgICAg IHwgICAxICsKIC4uLi90LzAzNF9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwgICAgICAg ICB8IDUwMCArKysrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgNTM4IGluc2Vy dGlvbnMoKykKICAgNS45JSBzcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC8KICA5My43 JSBzcmMvdGVzdC9yZWNvdmVyeS90LwoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3BlcmwvUG9z dGdyZVNRTC9UZXN0L0NsdXN0ZXIucG0gYi9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVz dC9DbHVzdGVyLnBtCmluZGV4IDc0MTExODhkYzguLjE3MWRjODUzODggMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0L0NsdXN0ZXIucG0KKysrIGIvc3JjL3Rl c3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvQ2x1c3Rlci5wbQpAQCAtMzAzNyw2ICszMDM3LDQz IEBAICRTSUd7VEVSTX0gPSAkU0lHe0lOVH0gPSBzdWIgewogCiA9cG9kCiAKKz1pdGVtICRu b2RlLT5jcmVhdGVfbG9naWNhbF9zbG90X29uX3N0YW5kYnkoc2VsZiwgbWFzdGVyLCBzbG90 X25hbWUsIGRibmFtZSkKKworQ3JlYXRlIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCBvbiBn aXZlbiBzdGFuZGJ5CisKKz1jdXQKKworc3ViIGNyZWF0ZV9sb2dpY2FsX3Nsb3Rfb25fc3Rh bmRieQoreworCW15ICgkc2VsZiwgJG1hc3RlciwgJHNsb3RfbmFtZSwgJGRibmFtZSkgPSBA XzsKKwlteSAoJHN0ZG91dCwgJHN0ZGVycik7CisKKwlteSAkaGFuZGxlOworCisJJGhhbmRs ZSA9IElQQzo6UnVuOjpzdGFydChbJ3BnX3JlY3Zsb2dpY2FsJywgJy1kJywgJHNlbGYtPmNv bm5zdHIoJGRibmFtZSksICctUCcsICd0ZXN0X2RlY29kaW5nJywgJy1TJywgJHNsb3RfbmFt ZSwgJy0tY3JlYXRlLXNsb3QnXSwgJz4nLCBcJHN0ZG91dCwgJzI+JywgXCRzdGRlcnIpOwor CisJIyBPbmNlIHNsb3QgcmVzdGFydF9sc24gaXMgY3JlYXRlZCwgdGhlIHN0YW5kYnkgbG9v a3MgZm9yIHhsX3J1bm5pbmdfeGFjdHMKKwkjIFdBTCByZWNvcmQgZnJvbSB0aGUgcmVzdGFy dF9sc24gb253YXJkcy4gU28gZmlyc3RseSwgd2FpdCB1bnRpbCB0aGUgc2xvdAorCSMgcmVz dGFydF9sc24gaXMgZXZhbHVhdGVkLgorCisJJHNlbGYtPnBvbGxfcXVlcnlfdW50aWwoCisJ CSdwb3N0Z3JlcycsIHFxWworCQlTRUxFQ1QgcmVzdGFydF9sc24gSVMgTk9UIE5VTEwKKwkJ RlJPTSBwZ19jYXRhbG9nLnBnX3JlcGxpY2F0aW9uX3Nsb3RzIFdIRVJFIHNsb3RfbmFtZSA9 ICckc2xvdF9uYW1lJworCV0pIG9yIGRpZSAidGltZWQgb3V0IHdhaXRpbmcgZm9yIGxvZ2lj YWwgc2xvdCB0byBjYWxjdWxhdGUgaXRzIHJlc3RhcnRfbHNuIjsKKworCSMgTm93IGFycmFu Z2UgZm9yIHRoZSB4bF9ydW5uaW5nX3hhY3RzIHJlY29yZCBmb3Igd2hpY2ggcGdfcmVjdmxv Z2ljYWwKKwkjIGlzIHdhaXRpbmcuCisJJG1hc3Rlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICdDSEVDS1BPSU5UJyk7CisKKwkkaGFuZGxlLT5maW5pc2goKTsKKworCWlzKCRzZWxmLT5z bG90KCRzbG90X25hbWUpLT57J3Nsb3RfdHlwZSd9LCAnbG9naWNhbCcsICRzbG90X25hbWUg LiAnIG9uIHN0YW5kYnkgY3JlYXRlZCcpCisJCW9yIGRpZSAiY291bGQgbm90IGNyZWF0ZSBz bG90IiAuICRzbG90X25hbWU7Cit9CisKKz1wb2QKKwogPWJhY2sKIAogPWN1dApkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9yZWNvdmVy eS9tZXNvbi5idWlsZAppbmRleCBiMGUzOTgzNjNmLi5kNjhlZTliNjYzIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWNvdmVyeS9tZXNvbi5idWlsZAorKysgYi9zcmMvdGVzdC9yZWNvdmVy eS9tZXNvbi5idWlsZApAQCAtMzgsNiArMzgsNyBAQCB0ZXN0cyArPSB7CiAgICAgICAndC8w MzFfcmVjb3ZlcnlfY29uZmxpY3QucGwnLAogICAgICAgJ3QvMDMyX3JlbGZpbGVub2RlX3Jl dXNlLnBsJywKICAgICAgICd0LzAzM19yZXBsYXlfdHNwX2Ryb3BzLnBsJywKKyAgICAgICd0 LzAzNF9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwnLAogICAgIF0sCiAgIH0sCiB9CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzAzNF9zdGFuZGJ5X2xvZ2ljYWxfZGVj b2RpbmcucGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAzNF9zdGFuZGJ5X2xvZ2ljYWxfZGVj b2RpbmcucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZTc3Zjlh NjQzNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM0X3N0YW5k YnlfbG9naWNhbF9kZWNvZGluZy5wbApAQCAtMCwwICsxLDUwMCBAQAorIyBsb2dpY2FsIGRl Y29kaW5nIG9uIHN0YW5kYnkgOiB0ZXN0IGxvZ2ljYWwgZGVjb2RpbmcsCisjIHJlY292ZXJ5 IGNvbmZsaWN0IGFuZCBzdGFuZGJ5IHByb21vdGlvbi4KKwordXNlIHN0cmljdDsKK3VzZSB3 YXJuaW5nczsKKwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgVGVzdDo6 TW9yZSB0ZXN0cyA9PiAzODsKK3VzZSBUaW1lOjpIaVJlcyBxdyh1c2xlZXApOworCitteSAo JHN0ZGluLCAkc3Rkb3V0LCAkc3RkZXJyLCAkcmV0LCAkaGFuZGxlLCAkc2xvdCk7CisKK215 ICRub2RlX3ByaW1hcnkgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3ByaW1h cnknKTsKK215ICRub2RlX3N0YW5kYnkgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5u ZXcoJ3N0YW5kYnknKTsKKworIyBOYW1lIGZvciB0aGUgcGh5c2ljYWwgc2xvdCBvbiBwcmlt YXJ5CitteSAkcHJpbWFyeV9zbG90bmFtZSA9ICdwcmltYXJ5X3BoeXNpY2FsJzsKKworIyBy ZXR1cm4gdGhlIHNpemUgb2YgbG9nZmlsZSBvZiAkbm9kZSBpbiBieXRlcworc3ViIGdldF9s b2dfc2l6ZQoreworCW15ICgkbm9kZSkgPSBAXzsKKworCXJldHVybiAoc3RhdCAkbm9kZS0+ bG9nZmlsZSlbN107Cit9CisKKyMgZmluZCAkcGF0IGluIGxvZ2ZpbGUgb2YgJG5vZGUgYWZ0 ZXIgJG9mZi10aCBieXRlCitzdWIgZmluZF9pbl9sb2cKK3sKKwlteSAoJG5vZGUsICRwYXQs ICRvZmYpID0gQF87CisKKwkkb2ZmID0gMCB1bmxlc3MgZGVmaW5lZCAkb2ZmOworCW15ICRs b2cgPSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6c2x1cnBfZmlsZSgkbm9kZS0+bG9nZmls ZSk7CisJcmV0dXJuIDAgaWYgKGxlbmd0aCgkbG9nKSA8PSAkb2ZmKTsKKworCSRsb2cgPSBz dWJzdHIoJGxvZywgJG9mZik7CisKKwlyZXR1cm4gJGxvZyA9fiBtLyRwYXQvOworfQorCisj IEZldGNoIHhtaW4gY29sdW1ucyBmcm9tIHNsb3QncyBwZ19yZXBsaWNhdGlvbl9zbG90cyBy b3csIGFmdGVyIHdhaXRpbmcgZm9yCisjIGdpdmVuIGJvb2xlYW4gY29uZGl0aW9uIHRvIGJl IHRydWUgdG8gZW5zdXJlIHdlJ3ZlIHJlYWNoZWQgYSBxdWllc2NlbnQgc3RhdGUuCitzdWIg d2FpdF9mb3JfeG1pbnMKK3sKKwlteSAoJG5vZGUsICRzbG90bmFtZSwgJGNoZWNrX2V4cHIp ID0gQF87CisKKwkkbm9kZS0+cG9sbF9xdWVyeV91bnRpbCgKKwkJJ3Bvc3RncmVzJywgcXFb CisJCVNFTEVDVCAkY2hlY2tfZXhwcgorCQlGUk9NIHBnX2NhdGFsb2cucGdfcmVwbGljYXRp b25fc2xvdHMKKwkJV0hFUkUgc2xvdF9uYW1lID0gJyRzbG90bmFtZSc7CisJXSkgb3IgZGll ICJUaW1lZCBvdXQgd2FpdGluZyBmb3Igc2xvdCB4bWlucyB0byBhZHZhbmNlIjsKK30KKwor IyBDcmVhdGUgdGhlIHJlcXVpcmVkIGxvZ2ljYWwgc2xvdHMgb24gc3RhbmRieS4KK3N1YiBj cmVhdGVfbG9naWNhbF9zbG90cworeworCSRub2RlX3N0YW5kYnktPmNyZWF0ZV9sb2dpY2Fs X3Nsb3Rfb25fc3RhbmRieSgkbm9kZV9wcmltYXJ5LCAnaW5hY3RpdmVzbG90JywgJ3Rlc3Rk YicpOworCSRub2RlX3N0YW5kYnktPmNyZWF0ZV9sb2dpY2FsX3Nsb3Rfb25fc3RhbmRieSgk bm9kZV9wcmltYXJ5LCAnYWN0aXZlc2xvdCcsICd0ZXN0ZGInKTsKK30KKworIyBBY3F1aXJl IG9uZSBvZiB0aGUgc3RhbmRieSBsb2dpY2FsIHNsb3RzIGNyZWF0ZWQgYnkgY3JlYXRlX2xv Z2ljYWxfc2xvdHMoKS4KKyMgSW4gY2FzZSB3YWl0IGlzIHRydWUgd2UgYXJlIHdhaXRpbmcg Zm9yIGFuIGFjdGl2ZSBwaWQgb24gdGhlICdhY3RpdmVzbG90JyBzbG90LgorIyBJZiB3YWl0 IGlzIG5vdCB0cnVlIGl0IG1lYW5zIHdlIGFyZSB0ZXN0aW5nIGEga25vd24gZmFpbHVyZSBz Y2VuYXJpby4KK3N1YiBtYWtlX3Nsb3RfYWN0aXZlCit7CisJbXkgJHdhaXQgPSBzaGlmdDsK KwlteSAkc2xvdF91c2VyX2hhbmRsZTsKKworCXByaW50ICJzdGFydGluZyBwZ19yZWN2bG9n aWNhbFxuIjsKKwkkc2xvdF91c2VyX2hhbmRsZSA9IElQQzo6UnVuOjpzdGFydChbJ3BnX3Jl Y3Zsb2dpY2FsJywgJy1kJywgJG5vZGVfc3RhbmRieS0+Y29ubnN0cigndGVzdGRiJyksICct UycsICdhY3RpdmVzbG90JywgJy1mJywgJy0nLCAnLS1uby1sb29wJywgJy0tc3RhcnQnXSwg Jz4nLCBcJHN0ZG91dCwgJzI+JywgXCRzdGRlcnIpOworCisJaWYgKCR3YWl0KQorCSMgbWFr ZSBzdXJlIGFjdGl2ZXNsb3QgaXMgaW4gdXNlCisJeworCQkkbm9kZV9zdGFuZGJ5LT5wb2xs X3F1ZXJ5X3VudGlsKCd0ZXN0ZGInLAorCQkJIlNFTEVDVCBFWElTVFMgKFNFTEVDVCAxIEZS T00gcGdfcmVwbGljYXRpb25fc2xvdHMgV0hFUkUgc2xvdF9uYW1lID0gJ2FjdGl2ZXNsb3Qn IEFORCBhY3RpdmVfcGlkIElTIE5PVCBOVUxMKSIKKwkJKSBvciBkaWUgInNsb3QgbmV2ZXIg YmVjYW1lIGFjdGl2ZSI7CisJfQorCisJcmV0dXJuICRzbG90X3VzZXJfaGFuZGxlOworfQor CisjIENoZWNrIGlmIGFsbCB0aGUgc2xvdHMgb24gc3RhbmRieSBhcmUgZHJvcHBlZC4gVGhl c2UgaW5jbHVkZSB0aGUgJ2FjdGl2ZXNsb3QnCisjIHRoYXQgd2FzIGFjcXVpcmVkIGJ5IG1h a2Vfc2xvdF9hY3RpdmUoKSwgYW5kIHRoZSBub24tYWN0aXZlICdpbmFjdGl2ZXNsb3QnLgor c3ViIGNoZWNrX3Nsb3RzX2Ryb3BwZWQKK3sKKwlteSAoJHNsb3RfdXNlcl9oYW5kbGUpID0g QF87CisJbXkgJHJldHVybjsKKworCWlzKCRub2RlX3N0YW5kYnktPnNsb3QoJ2luYWN0aXZl c2xvdCcpLT57J3Nsb3RfdHlwZSd9LCAnJywgJ2luYWN0aXZlc2xvdCBvbiBzdGFuZGJ5IGRy b3BwZWQnKTsKKwlpcygkbm9kZV9zdGFuZGJ5LT5zbG90KCdhY3RpdmVzbG90JyktPnsnc2xv dF90eXBlJ30sICcnLCAnYWN0aXZlc2xvdCBvbiBzdGFuZGJ5IGRyb3BwZWQnKTsKKworCSMg b3VyIGNsaWVudCBzaG91bGQndmUgdGVybWluYXRlZCBpbiByZXNwb25zZSB0byB0aGUgd2Fs c2VuZGVyIGVycm9yCisJJHNsb3RfdXNlcl9oYW5kbGUtPmZpbmlzaDsKKwkkcmV0dXJuID0g JD87CisJY21wX29rKCRyZXR1cm4sICIhPSIsIDAsICJwZ19yZWN2bG9naWNhbCBleGl0ZWQg bm9uLXplcm8iKTsKKwlpZiAoJHJldHVybikgeworCQlsaWtlKCRzdGRlcnIsIHFyL2NvbmZs aWN0IHdpdGggcmVjb3ZlcnkvLCAnc2xvdCBoYXZlIGJlZW4gZHJvcHBlZCcpOworCX0KKwor CXJldHVybiAwOworfQorCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBJbml0aWFs aXplIHByaW1hcnkgbm9kZQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyRub2RlX3By aW1hcnktPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAxLCBoYXNfYXJjaGl2aW5nID0+IDEp OworJG5vZGVfcHJpbWFyeS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsIHF7Cit3 YWxfbGV2ZWwgPSAnbG9naWNhbCcKK21heF9yZXBsaWNhdGlvbl9zbG90cyA9IDQKK21heF93 YWxfc2VuZGVycyA9IDQKK2xvZ19taW5fbWVzc2FnZXMgPSAnZGVidWcyJworbG9nX2Vycm9y X3ZlcmJvc2l0eSA9IHZlcmJvc2UKK30pOworJG5vZGVfcHJpbWFyeS0+ZHVtcF9pbmZvOwor JG5vZGVfcHJpbWFyeS0+c3RhcnQ7CisKKyRub2RlX3ByaW1hcnktPnBzcWwoJ3Bvc3RncmVz JywgcVtDUkVBVEUgREFUQUJBU0UgdGVzdGRiXSk7CisKKyRub2RlX3ByaW1hcnktPnNhZmVf cHNxbCgndGVzdGRiJywgcXFbU0VMRUNUICogRlJPTSBwZ19jcmVhdGVfcGh5c2ljYWxfcmVw bGljYXRpb25fc2xvdCgnJHByaW1hcnlfc2xvdG5hbWUnKTtdKTsKK215ICRiYWNrdXBfbmFt ZSA9ICdiMSc7Ciskbm9kZV9wcmltYXJ5LT5iYWNrdXAoJGJhY2t1cF9uYW1lKTsKKworIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgSW5pdGlhbGl6ZSBzdGFuZGJ5IG5vZGUKKyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCisKKyRub2RlX3N0YW5kYnktPmluaXRfZnJvbV9iYWNrdXAo CisJJG5vZGVfcHJpbWFyeSwgJGJhY2t1cF9uYW1lLAorCWhhc19zdHJlYW1pbmcgPT4gMSwK KwloYXNfcmVzdG9yaW5nID0+IDEpOworJG5vZGVfc3RhbmRieS0+YXBwZW5kX2NvbmYoJ3Bv c3RncmVzcWwuY29uZicsCisJcXFbcHJpbWFyeV9zbG90X25hbWUgPSAnJHByaW1hcnlfc2xv dG5hbWUnXSk7Ciskbm9kZV9zdGFuZGJ5LT5zdGFydDsKKyRub2RlX3ByaW1hcnktPndhaXRf Zm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2RlX3ByaW1hcnktPmxz bignZmx1c2gnKSk7CisKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB0aGF0IGxvZ2ljYWwgZGVjb2Rpbmcgb24gdGhlIHN0 YW5kYnkKKyMgYmVoYXZlcyBjb3JyZWN0bHkuCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjcmVhdGVfbG9naWNhbF9zbG90cygpOwor Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFxW0NSRUFURSBUQUJMRSBk ZWNvZGluZ190ZXN0KHggaW50ZWdlciwgeSB0ZXh0KTtdKTsKKyRub2RlX3ByaW1hcnktPnNh ZmVfcHNxbCgndGVzdGRiJywgcXFbSU5TRVJUIElOVE8gZGVjb2RpbmdfdGVzdCh4LHkpIFNF TEVDVCBzLCBzOjp0ZXh0IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIHM7XSk7CisKKyRu b2RlX3ByaW1hcnktPndhaXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScs ICRub2RlX3ByaW1hcnktPmxzbignZmx1c2gnKSk7CisKK215ICRyZXN1bHQgPSAkbm9kZV9z dGFuZGJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsCisJcXFbU0VMRUNUIHBnX2xvZ2ljYWxfc2xv dF9nZXRfY2hhbmdlcygnYWN0aXZlc2xvdCcsIE5VTEwsIE5VTEwpO10pOworCisjIHRlc3Qg aWYgYmFzaWMgZGVjb2Rpbmcgd29ya3MKK2lzKHNjYWxhcihteSBAZm9vYmFyID0gc3BsaXQg L14vbSwgJHJlc3VsdCksCisJMTQsICdEZWNvZGluZyBwcm9kdWNlZCAxNCByb3dzJyk7CisK KyMgSW5zZXJ0IHNvbWUgcm93cyBhbmQgdmVyaWZ5IHRoYXQgd2UgZ2V0IHRoZSBzYW1lIHJl c3VsdHMgZnJvbSBwZ19yZWN2bG9naWNhbAorIyBhbmQgdGhlIFNRTCBpbnRlcmZhY2UuCisk bm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsCisJcXFbSU5TRVJUIElOVE8gZGVj b2RpbmdfdGVzdCh4LHkpIFNFTEVDVCBzLCBzOjp0ZXh0IEZST00gZ2VuZXJhdGVfc2VyaWVz KDEsNCkgcztdCispOworCitteSAkZXhwZWN0ZWQgPSBxe0JFR0lOCit0YWJsZSBwdWJsaWMu ZGVjb2RpbmdfdGVzdDogSU5TRVJUOiB4W2ludGVnZXJdOjEgeVt0ZXh0XTonMScKK3RhYmxl IHB1YmxpYy5kZWNvZGluZ190ZXN0OiBJTlNFUlQ6IHhbaW50ZWdlcl06MiB5W3RleHRdOicy JwordGFibGUgcHVibGljLmRlY29kaW5nX3Rlc3Q6IElOU0VSVDogeFtpbnRlZ2VyXTozIHlb dGV4dF06JzMnCit0YWJsZSBwdWJsaWMuZGVjb2RpbmdfdGVzdDogSU5TRVJUOiB4W2ludGVn ZXJdOjQgeVt0ZXh0XTonNCcKK0NPTU1JVH07CisKKyRub2RlX3ByaW1hcnktPndhaXRfZm9y X2NhdGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2RlX3ByaW1hcnktPmxzbign Zmx1c2gnKSk7CisKK215ICRzdGRvdXRfc3FsID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3Fs KCd0ZXN0ZGInLAorCXFxW1NFTEVDVCBkYXRhIEZST00gcGdfbG9naWNhbF9zbG90X3BlZWtf Y2hhbmdlcygnYWN0aXZlc2xvdCcsIE5VTEwsIE5VTEwsICdpbmNsdWRlLXhpZHMnLCAnMCcs ICdza2lwLWVtcHR5LXhhY3RzJywgJzEnKTtdCispOworCitpcygkc3Rkb3V0X3NxbCwgJGV4 cGVjdGVkLCAnZ290IGV4cGVjdGVkIG91dHB1dCBmcm9tIFNRTCBkZWNvZGluZyBzZXNzaW9u Jyk7CisKK215ICRlbmRwb3MgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYics CisJIlNFTEVDVCBsc24gRlJPTSBwZ19sb2dpY2FsX3Nsb3RfcGVla19jaGFuZ2VzKCdhY3Rp dmVzbG90JywgTlVMTCwgTlVMTCkgT1JERVIgQlkgbHNuIERFU0MgTElNSVQgMTsiCispOwor cHJpbnQgIndhaXRpbmcgdG8gcmVwbGF5ICRlbmRwb3NcbiI7CisKKyMgSW5zZXJ0IHNvbWUg cm93cyBhZnRlciAkZW5kcG9zLCB3aGljaCB3ZSB3b24ndCByZWFkLgorJG5vZGVfcHJpbWFy eS0+c2FmZV9wc3FsKCd0ZXN0ZGInLAorCXFxW0lOU0VSVCBJTlRPIGRlY29kaW5nX3Rlc3Qo eCx5KSBTRUxFQ1Qgcywgczo6dGV4dCBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1LDUwKSBzO10K Kyk7CisKKyRub2RlX3ByaW1hcnktPndhaXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwg J3JlcGxheScsICRub2RlX3ByaW1hcnktPmxzbignZmx1c2gnKSk7CisKK215ICRzdGRvdXRf cmVjdiA9ICRub2RlX3N0YW5kYnktPnBnX3JlY3Zsb2dpY2FsX3VwdG8oCisgICAgJ3Rlc3Rk YicsICdhY3RpdmVzbG90JywgJGVuZHBvcywgMTgwLAorICAgICdpbmNsdWRlLXhpZHMnICAg ICA9PiAnMCcsCisgICAgJ3NraXAtZW1wdHkteGFjdHMnID0+ICcxJyk7CitjaG9tcCgkc3Rk b3V0X3JlY3YpOworaXMoJHN0ZG91dF9yZWN2LCAkZXhwZWN0ZWQsCisgICAgJ2dvdCBzYW1l IGV4cGVjdGVkIG91dHB1dCBmcm9tIHBnX3JlY3Zsb2dpY2FsIGRlY29kaW5nIHNlc3Npb24n KTsKKworJG5vZGVfc3RhbmRieS0+cG9sbF9xdWVyeV91bnRpbCgndGVzdGRiJywKKwkiU0VM RUNUIEVYSVNUUyAoU0VMRUNUIDEgRlJPTSBwZ19yZXBsaWNhdGlvbl9zbG90cyBXSEVSRSBz bG90X25hbWUgPSAnYWN0aXZlc2xvdCcgQU5EIGFjdGl2ZV9waWQgSVMgTlVMTCkiCispIG9y IGRpZSAic2xvdCBuZXZlciBiZWNhbWUgaW5hY3RpdmUiOworCiskc3Rkb3V0X3JlY3YgPSAk bm9kZV9zdGFuZGJ5LT5wZ19yZWN2bG9naWNhbF91cHRvKAorICAgICd0ZXN0ZGInLCAnYWN0 aXZlc2xvdCcsICRlbmRwb3MsIDE4MCwKKyAgICAnaW5jbHVkZS14aWRzJyAgICAgPT4gJzAn LAorICAgICdza2lwLWVtcHR5LXhhY3RzJyA9PiAnMScpOworY2hvbXAoJHN0ZG91dF9yZWN2 KTsKK2lzKCRzdGRvdXRfcmVjdiwgJycsICdwZ19yZWN2bG9naWNhbCBhY2tub3dsZWRnZWQg Y2hhbmdlcycpOworCiskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0NS RUFURSBEQVRBQkFTRSBvdGhlcmRiJyk7CisKK2lzKCAkbm9kZV9wcmltYXJ5LT5wc3FsKAor ICAgICAgICAnb3RoZXJkYicsCisgICAgICAgICJTRUxFQ1QgbHNuIEZST00gcGdfbG9naWNh bF9zbG90X3BlZWtfY2hhbmdlcygnYWN0aXZlc2xvdCcsIE5VTEwsIE5VTEwpIE9SREVSIEJZ IGxzbiBERVNDIExJTUlUIDE7IgorICAgICksCisgICAgMywKKyAgICAncmVwbGF5aW5nIGxv Z2ljYWwgc2xvdCBmcm9tIGFub3RoZXIgZGF0YWJhc2UgZmFpbHMnKTsKKworIyBkcm9wIHRo ZSBsb2dpY2FsIHNsb3RzCiskbm9kZV9zdGFuZGJ5LT5wc3FsKCdwb3N0Z3JlcycsIHFbU0VM RUNUIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xvdCgnaW5hY3RpdmVzbG90JyldKTsKKyRub2Rl X3N0YW5kYnktPnBzcWwoJ3Bvc3RncmVzJywgcVtTRUxFQ1QgcGdfZHJvcF9yZXBsaWNhdGlv bl9zbG90KCdhY3RpdmVzbG90JyldKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgUmVjb3ZlcnkgY29uZmxpY3Q6IEludmFsaWRh dGUgY29uZmxpY3Rpbmcgc2xvdHMsIGluY2x1ZGluZyBpbi11c2Ugc2xvdHMKKyMgU2NlbmFy aW8gMTogaG90X3N0YW5kYnlfZmVlZGJhY2sgb2ZmIGFuZCB2YWN1dW0gRlVMTAorIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY3JlYXRl X2xvZ2ljYWxfc2xvdHMoKTsKKworIyBPbmUgd2F5IHRvIHJlcHJvZHVjZSByZWNvdmVyeSBj b25mbGljdCBpcyB0byBydW4gVkFDVVVNIEZVTEwgd2l0aAorIyBob3Rfc3RhbmRieV9mZWVk YmFjayB0dXJuZWQgb2ZmIG9uIHRoZSBzdGFuZGJ5LgorJG5vZGVfc3RhbmRieS0+YXBwZW5k X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicscVsKK2hvdF9zdGFuZGJ5X2ZlZWRiYWNrID0gb2Zm CitdKTsKKyRub2RlX3N0YW5kYnktPnJlc3RhcnQ7CisjIGVuc3VyZSB3YWxyZWNlaXZlciBm ZWVkYmFjayBvZmYgYnkgd2FpdGluZyBmb3IgZXhwZWN0ZWQgeG1pbiBhbmQKKyMgY2F0YWxv Z194bWluIG9uIHByaW1hcnkuIEJvdGggc2hvdWxkIGJlIE5VTEwgc2luY2UgaHNfZmVlZGJh Y2sgaXMgb2ZmCit3YWl0X2Zvcl94bWlucygkbm9kZV9wcmltYXJ5LCAkcHJpbWFyeV9zbG90 bmFtZSwKKwkJCSAgICJ4bWluIElTIE5VTEwgQU5EIGNhdGFsb2dfeG1pbiBJUyBOVUxMIik7 CisKKyRoYW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKDEpOworCisjIFRoaXMgc2hvdWxkIHRy aWdnZXIgdGhlIGNvbmZsaWN0Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYics ICdWQUNVVU0gRlVMTCcpOworCiskbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRu b2RlX3N0YW5kYnksICdyZXBsYXknLCAkbm9kZV9wcmltYXJ5LT5sc24oJ2ZsdXNoJykpOwor CisjIG1lc3NhZ2Ugc2hvdWxkIGJlIGlzc3VlZAorb2soIGZpbmRfaW5fbG9nKAorICAgJG5v ZGVfc3RhbmRieSwKKyAgImludmFsaWRhdGluZyBzbG90IFwiaW5hY3RpdmVzbG90XCIgYmVj YXVzZSBpdCBjb25mbGljdHMgd2l0aCByZWNvdmVyeSIpLAorICAnaW5hY3RpdmVzbG90IHNs b3QgaW52YWxpZGF0aW9uIGlzIGxvZ2dlZCB3aXRoIHZhY3V1bSBGVUxMJyk7CisKK29rKCBm aW5kX2luX2xvZygKKyAgICRub2RlX3N0YW5kYnksCisgICJpbnZhbGlkYXRpbmcgc2xvdCBc ImFjdGl2ZXNsb3RcIiBiZWNhdXNlIGl0IGNvbmZsaWN0cyB3aXRoIHJlY292ZXJ5IiksCisg ICdhY3RpdmVzbG90IHNsb3QgaW52YWxpZGF0aW9uIGlzIGxvZ2dlZCB3aXRoIHZhY3V1bSBG VUxMJyk7CisKKyMgVmVyaWZ5IHRoYXQgcGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHMuY29u ZmxfYWN0aXZlX2xvZ2ljYWxzbG90IGhhcyBiZWVuIHVwZGF0ZWQKK29rKCAkbm9kZV9zdGFu ZGJ5LT5wb2xsX3F1ZXJ5X3VudGlsKAorCSdwb3N0Z3JlcycsCisJInNlbGVjdCAoY29uZmxf YWN0aXZlX2xvZ2ljYWxzbG90ID0gMSkgZnJvbSBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0 cyB3aGVyZSBkYXRuYW1lID0gJ3Rlc3RkYiciLCAndCcpLAorCSdjb25mbF9hY3RpdmVfbG9n aWNhbHNsb3QgdXBkYXRlZCcpIG9yIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgY29uZmxfYWN0 aXZlX2xvZ2ljYWxzbG90IHRvIGJlIHVwZGF0ZWQiOworCiskaGFuZGxlID0gbWFrZV9zbG90 X2FjdGl2ZSgwKTsKK3VzbGVlcCgxMDAwXzAwMCk7CisKKyMgV2UgYXJlIG5vdCBhYmxlIHRv IHJlYWQgZnJvbSB0aGUgc2xvdCBhcyBpdCBoYXMgYmVlbiBpbnZhbGlkYXRlZAorb2soIGZp bmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAgImNhbm5vdCByZWFkIGZyb20gbG9n aWNhbCByZXBsaWNhdGlvbiBzbG90IFwiYWN0aXZlc2xvdFwiIiksCisgICdjYW5ub3QgcmVh ZCBmcm9tIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCcpOworCisjIFR1cm4gaG90X3N0YW5k YnlfZmVlZGJhY2sgYmFjayBvbgorJG5vZGVfc3RhbmRieS0+YXBwZW5kX2NvbmYoJ3Bvc3Rn cmVzcWwuY29uZicscVsKK2hvdF9zdGFuZGJ5X2ZlZWRiYWNrID0gb24KK10pOworJG5vZGVf c3RhbmRieS0+cmVzdGFydDsKKworIyBlbnN1cmUgd2FscmVjZWl2ZXIgZmVlZGJhY2sgc2Vu dCBieSB3YWl0aW5nIGZvciBleHBlY3RlZCB4bWluIGFuZAorIyBjYXRhbG9nX3htaW4gb24g cHJpbWFyeS4gV2l0aCBob3Rfc3RhbmRieV9mZWVkYmFjayBvbiwgeG1pbiBzaG91bGQgYWR2 YW5jZSwKKyMgYnV0IGNhdGFsb2dfeG1pbiBzaG91bGQgc3RpbGwgcmVtYWluIE5VTEwgc2lu Y2UgdGhlcmUgaXMgbm8gbG9naWNhbCBzbG90Lgord2FpdF9mb3JfeG1pbnMoJG5vZGVfcHJp bWFyeSwgJHByaW1hcnlfc2xvdG5hbWUsCisJCQkgICAieG1pbiBJUyBOT1QgTlVMTCBBTkQg Y2F0YWxvZ194bWluIElTIE5VTEwiKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgUmVjb3ZlcnkgY29uZmxpY3Q6IEludmFsaWRh dGUgY29uZmxpY3Rpbmcgc2xvdHMsIGluY2x1ZGluZyBpbi11c2Ugc2xvdHMKKyMgU2NlbmFy aW8gMjogY29uZmxpY3QgZHVlIHRvIHJvdyByZW1vdmFsIHdpdGggaG90X3N0YW5kYnlfZmVl ZGJhY2sgb2ZmLgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKworIyBnZXQgdGhlIHBvc2l0aW9uIHRvIHNlYXJjaCBmcm9tIGluIHRoZSBz dGFuZGJ5IGxvZ2ZpbGUKK215ICRsb2dzdGFydCA9IGdldF9sb2dfc2l6ZSgkbm9kZV9zdGFu ZGJ5KTsKKworIyBkcm9wIHRoZSBsb2dpY2FsIHNsb3RzCiskbm9kZV9zdGFuZGJ5LT5wc3Fs KCdwb3N0Z3JlcycsIHFbU0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xvdCgnaW5hY3Rp dmVzbG90JyldKTsKKyRub2RlX3N0YW5kYnktPnBzcWwoJ3Bvc3RncmVzJywgcVtTRUxFQ1Qg cGdfZHJvcF9yZXBsaWNhdGlvbl9zbG90KCdhY3RpdmVzbG90JyldKTsKKworY3JlYXRlX2xv Z2ljYWxfc2xvdHMoKTsKKworIyBPbmUgd2F5IHRvIHByb2R1Y2UgcmVjb3ZlcnkgY29uZmxp Y3QgaXMgdG8gY3JlYXRlL2Ryb3AgYSByZWxhdGlvbiBhbmQgbGF1bmNoIGEgdmFjdXVtCisj IHdpdGggaG90X3N0YW5kYnlfZmVlZGJhY2sgdHVybmVkIG9mZiBvbiB0aGUgc3RhbmRieS4K KyRub2RlX3N0YW5kYnktPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLHFbCitob3Rf c3RhbmRieV9mZWVkYmFjayA9IG9mZgorXSk7Ciskbm9kZV9zdGFuZGJ5LT5yZXN0YXJ0Owor IyBlbnN1cmUgd2FscmVjZWl2ZXIgZmVlZGJhY2sgb2ZmIGJ5IHdhaXRpbmcgZm9yIGV4cGVj dGVkIHhtaW4gYW5kCisjIGNhdGFsb2dfeG1pbiBvbiBwcmltYXJ5LiBCb3RoIHNob3VsZCBi ZSBOVUxMIHNpbmNlIGhzX2ZlZWRiYWNrIGlzIG9mZgord2FpdF9mb3JfeG1pbnMoJG5vZGVf cHJpbWFyeSwgJHByaW1hcnlfc2xvdG5hbWUsCisJCQkgICAieG1pbiBJUyBOVUxMIEFORCBj YXRhbG9nX3htaW4gSVMgTlVMTCIpOworCiskaGFuZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgx KTsKKworIyBUaGlzIHNob3VsZCB0cmlnZ2VyIHRoZSBjb25mbGljdAorJG5vZGVfcHJpbWFy eS0+c2FmZV9wc3FsKCd0ZXN0ZGInLCBxcVtDUkVBVEUgVEFCTEUgY29uZmxpY3RfdGVzdCh4 IGludGVnZXIsIHkgdGV4dCk7XSk7Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3Rk YicsIHFxW0RST1AgVEFCTEUgY29uZmxpY3RfdGVzdDtdKTsKKyRub2RlX3ByaW1hcnktPnNh ZmVfcHNxbCgndGVzdGRiJywgJ1ZBQ1VVTScpOworCiskbm9kZV9wcmltYXJ5LT53YWl0X2Zv cl9jYXRjaHVwKCRub2RlX3N0YW5kYnksICdyZXBsYXknLCAkbm9kZV9wcmltYXJ5LT5sc24o J2ZsdXNoJykpOworCisjIG1lc3NhZ2Ugc2hvdWxkIGJlIGlzc3VlZAorb2soIGZpbmRfaW5f bG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRhdGluZyBzbG90IFwiaW5hY3Rp dmVzbG90XCIgYmVjYXVzZSBpdCBjb25mbGljdHMgd2l0aCByZWNvdmVyeSIsICRsb2dzdGFy dCksCisgICdpbmFjdGl2ZXNsb3Qgc2xvdCBpbnZhbGlkYXRpb24gaXMgbG9nZ2VkIGR1ZSB0 byByb3cgcmVtb3ZhbCcpOworCitvayggZmluZF9pbl9sb2coCisgICAkbm9kZV9zdGFuZGJ5 LAorICAiaW52YWxpZGF0aW5nIHNsb3QgXCJhY3RpdmVzbG90XCIgYmVjYXVzZSBpdCBjb25m bGljdHMgd2l0aCByZWNvdmVyeSIsICRsb2dzdGFydCksCisgICdhY3RpdmVzbG90IHNsb3Qg aW52YWxpZGF0aW9uIGlzIGxvZ2dlZCBkdWUgdG8gcm93IHJlbW92YWwnKTsKKworIyBWZXJp ZnkgdGhhdCBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0cy5jb25mbF9hY3RpdmVfbG9naWNh bHNsb3QgaGFzIGJlZW4gdXBkYXRlZAorIyB3ZSBub3cgZXhwZWN0IDIgY29uZmxpY3RzIHJl cG9ydGVkIGFzIHRoZSBjb3VudGVyIHBlcnNpc3QgYWNyb3NzIHJlc3RhcnRzCitvayggJG5v ZGVfc3RhbmRieS0+cG9sbF9xdWVyeV91bnRpbCgKKwkncG9zdGdyZXMnLAorCSJzZWxlY3Qg KGNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCA9IDIpIGZyb20gcGdfc3RhdF9kYXRhYmFzZV9j b25mbGljdHMgd2hlcmUgZGF0bmFtZSA9ICd0ZXN0ZGInIiwgJ3QnKSwKKwknY29uZmxfYWN0 aXZlX2xvZ2ljYWxzbG90IHVwZGF0ZWQnKSBvciBkaWUgIlRpbWVkIG91dCB3YWl0aW5nIGNv bmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCB0byBiZSB1cGRhdGVkIjsKKworJGhhbmRsZSA9IG1h a2Vfc2xvdF9hY3RpdmUoMCk7Cit1c2xlZXAoMTAwMF8wMDApOworCisjIFdlIGFyZSBub3Qg YWJsZSB0byByZWFkIGZyb20gdGhlIHNsb3QgYXMgaXQgaGFzIGJlZW4gaW52YWxpZGF0ZWQK K29rKCBmaW5kX2luX2xvZygKKyAgICRub2RlX3N0YW5kYnksCisgICJjYW5ub3QgcmVhZCBm cm9tIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCBcImFjdGl2ZXNsb3RcIiIsICRsb2dzdGFy dCksCisgICdjYW5ub3QgcmVhZCBmcm9tIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCcpOwor CisjIFR1cm4gaG90X3N0YW5kYnlfZmVlZGJhY2sgYmFjayBvbgorJG5vZGVfc3RhbmRieS0+ YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicscVsKK2hvdF9zdGFuZGJ5X2ZlZWRiYWNr ID0gb24KK10pOworJG5vZGVfc3RhbmRieS0+cmVzdGFydDsKKworIyBlbnN1cmUgd2FscmVj ZWl2ZXIgZmVlZGJhY2sgc2VudCBieSB3YWl0aW5nIGZvciBleHBlY3RlZCB4bWluIGFuZAor IyBjYXRhbG9nX3htaW4gb24gcHJpbWFyeS4gV2l0aCBob3Rfc3RhbmRieV9mZWVkYmFjayBv biwgeG1pbiBzaG91bGQgYWR2YW5jZSwKKyMgYnV0IGNhdGFsb2dfeG1pbiBzaG91bGQgc3Rp bGwgcmVtYWluIE5VTEwgc2luY2UgdGhlcmUgaXMgbm8gbG9naWNhbCBzbG90Lgord2FpdF9m b3JfeG1pbnMoJG5vZGVfcHJpbWFyeSwgJHByaW1hcnlfc2xvdG5hbWUsCisJCQkgICAieG1p biBJUyBOT1QgTlVMTCBBTkQgY2F0YWxvZ194bWluIElTIE5VTEwiKTsKKworIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgUmVjb3Zlcnkg Y29uZmxpY3Q6IEludmFsaWRhdGUgY29uZmxpY3Rpbmcgc2xvdHMsIGluY2x1ZGluZyBpbi11 c2Ugc2xvdHMKKyMgU2NlbmFyaW8gMzogaW5jb3JyZWN0IHdhbF9sZXZlbCBvbiBwcmltYXJ5 LgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK KworIyBnZXQgdGhlIHBvc2l0aW9uIHRvIHNlYXJjaCBmcm9tIGluIHRoZSBzdGFuZGJ5IGxv Z2ZpbGUKKyRsb2dzdGFydCA9IGdldF9sb2dfc2l6ZSgkbm9kZV9zdGFuZGJ5KTsKKworIyBk cm9wIHRoZSBsb2dpY2FsIHNsb3RzCiskbm9kZV9zdGFuZGJ5LT5wc3FsKCdwb3N0Z3Jlcycs IHFbU0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xvdCgnaW5hY3RpdmVzbG90JyldKTsK KyRub2RlX3N0YW5kYnktPnBzcWwoJ3Bvc3RncmVzJywgcVtTRUxFQ1QgcGdfZHJvcF9yZXBs aWNhdGlvbl9zbG90KCdhY3RpdmVzbG90JyldKTsKKworY3JlYXRlX2xvZ2ljYWxfc2xvdHMo KTsKKworJGhhbmRsZSA9IG1ha2Vfc2xvdF9hY3RpdmUoMSk7CisKKyMgTWFrZSBwcmltYXJ5 IHdhbF9sZXZlbCByZXBsaWNhLiBUaGlzIHdpbGwgdHJpZ2dlciBzbG90IGNvbmZsaWN0Lgor JG5vZGVfcHJpbWFyeS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicscVsKK3dhbF9s ZXZlbCA9ICdyZXBsaWNhJworXSk7Ciskbm9kZV9wcmltYXJ5LT5yZXN0YXJ0OworCiskbm9k ZV9wcmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5kYnksICdyZXBsYXknLCAk bm9kZV9wcmltYXJ5LT5sc24oJ2ZsdXNoJykpOworCisjIG1lc3NhZ2Ugc2hvdWxkIGJlIGlz c3VlZAorb2soIGZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRh dGluZyBzbG90IFwiaW5hY3RpdmVzbG90XCIgYmVjYXVzZSBpdCBjb25mbGljdHMgd2l0aCBy ZWNvdmVyeSIsICRsb2dzdGFydCksCisgICdpbmFjdGl2ZXNsb3Qgc2xvdCBpbnZhbGlkYXRp b24gaXMgbG9nZ2VkIGR1ZSB0byB3YWxfbGV2ZWwnKTsKKworb2soIGZpbmRfaW5fbG9nKAor ICAgJG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRhdGluZyBzbG90IFwiYWN0aXZlc2xvdFwi IGJlY2F1c2UgaXQgY29uZmxpY3RzIHdpdGggcmVjb3ZlcnkiLCAkbG9nc3RhcnQpLAorICAn YWN0aXZlc2xvdCBzbG90IGludmFsaWRhdGlvbiBpcyBsb2dnZWQgZHVlIHRvIHdhbF9sZXZl bCcpOworCisjIFZlcmlmeSB0aGF0IHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3RzLmNvbmZs X2FjdGl2ZV9sb2dpY2Fsc2xvdCBoYXMgYmVlbiB1cGRhdGVkCisjIHdlIG5vdyBleHBlY3Qg MyBjb25mbGljdHMgcmVwb3J0ZWQgYXMgdGhlIGNvdW50ZXIgcGVyc2lzdCBhY3Jvc3MgcmVz dGFydHMKK29rKCAkbm9kZV9zdGFuZGJ5LT5wb2xsX3F1ZXJ5X3VudGlsKAorCSdwb3N0Z3Jl cycsCisJInNlbGVjdCAoY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90ID0gMykgZnJvbSBwZ19z dGF0X2RhdGFiYXNlX2NvbmZsaWN0cyB3aGVyZSBkYXRuYW1lID0gJ3Rlc3RkYiciLCAndCcp LAorCSdjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgdXBkYXRlZCcpIG9yIGRpZSAiVGltZWQg b3V0IHdhaXRpbmcgY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90IHRvIGJlIHVwZGF0ZWQiOwor CiskaGFuZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgwKTsKK3VzbGVlcCgxMDAwXzAwMCk7CisK K29rKCBmaW5kX2luX2xvZygKKyAgICRub2RlX3N0YW5kYnksCisgICJsb2dpY2FsIGRlY29k aW5nIG9uIHN0YW5kYnkgcmVxdWlyZXMgd2FsX2xldmVsIHRvIGJlIGF0IGxlYXN0IGxvZ2lj YWwgb24gbWFzdGVyIiwgJGxvZ3N0YXJ0KSwKKyAgJ2Nhbm5vdCBzdGFydCByZXBsaWNhdGlv biBiZWNhdXNlIHdhbF9sZXZlbCA8IGxvZ2ljYWwgb24gbWFzdGVyJyk7CisKKyMgUmVzdG9y ZSBwcmltYXJ5IHdhbF9sZXZlbAorJG5vZGVfcHJpbWFyeS0+YXBwZW5kX2NvbmYoJ3Bvc3Rn cmVzcWwuY29uZicscVsKK3dhbF9sZXZlbCA9ICdsb2dpY2FsJworXSk7Ciskbm9kZV9wcmlt YXJ5LT5yZXN0YXJ0OworJG5vZGVfcHJpbWFyeS0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9z dGFuZGJ5LCAncmVwbGF5JywgJG5vZGVfcHJpbWFyeS0+bHNuKCdmbHVzaCcpKTsKKworJGhh bmRsZSA9IG1ha2Vfc2xvdF9hY3RpdmUoMCk7Cit1c2xlZXAoMTAwMF8wMDApOworCisjIGFz IHRoZSBzbG90IGhhcyBiZWVuIGludmFsaWRhdGVkIHdlIHNob3VsZCBub3QgYmUgYWJsZSB0 byByZWFkCitvayggZmluZF9pbl9sb2coCisgICAkbm9kZV9zdGFuZGJ5LAorICAiY2Fubm90 IHJlYWQgZnJvbSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3QgXCJhY3RpdmVzbG90XCIiLCAk bG9nc3RhcnQpLAorICAnY2Fubm90IHJlYWQgZnJvbSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNs b3QnKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKyMgRFJPUCBEQVRBQkFTRSBzaG91bGQgZHJvcHMgaXQncyBzbG90cywgaW5jbHVk aW5nIGFjdGl2ZSBzbG90cy4KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCisKKyRub2RlX3N0YW5kYnktPnBzcWwoJ3Bvc3RncmVzJywgcVtT RUxFQ1QgcGdfZHJvcF9yZXBsaWNhdGlvbl9zbG90KCdpbmFjdGl2ZXNsb3QnKV0pOworJG5v ZGVfc3RhbmRieS0+cHNxbCgncG9zdGdyZXMnLCBxW1NFTEVDVCBwZ19kcm9wX3JlcGxpY2F0 aW9uX3Nsb3QoJ2FjdGl2ZXNsb3QnKV0pOworY3JlYXRlX2xvZ2ljYWxfc2xvdHMoKTsKKyRo YW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKDEpOworIyBDcmVhdGUgYSBzbG90IG9uIGEgZGF0 YWJhc2UgdGhhdCB3b3VsZCBub3QgYmUgZHJvcHBlZC4gVGhpcyBzbG90IHNob3VsZCBub3QK KyMgZ2V0IGRyb3BwZWQuCiskbm9kZV9zdGFuZGJ5LT5jcmVhdGVfbG9naWNhbF9zbG90X29u X3N0YW5kYnkoJG5vZGVfcHJpbWFyeSwgJ290aGVyc2xvdCcsICdwb3N0Z3JlcycpOworCisj IGRyb3BkYiBvbiB0aGUgcHJpbWFyeSB0byB2ZXJpZnkgc2xvdHMgYXJlIGRyb3BwZWQgb24g c3RhbmRieQorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFbRFJPUCBE QVRBQkFTRSB0ZXN0ZGJdKTsKKworJG5vZGVfcHJpbWFyeS0+d2FpdF9mb3JfY2F0Y2h1cCgk bm9kZV9zdGFuZGJ5LCAncmVwbGF5JywgJG5vZGVfcHJpbWFyeS0+bHNuKCdmbHVzaCcpKTsK KworaXMoJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcVtTRUxFQ1Qg RVhJU1RTKFNFTEVDVCAxIEZST00gcGdfZGF0YWJhc2UgV0hFUkUgZGF0bmFtZSA9ICd0ZXN0 ZGInKV0pLCAnZicsCisJJ2RhdGFiYXNlIGRyb3BwZWQgb24gc3RhbmRieScpOworCitjaGVj a19zbG90c19kcm9wcGVkKCRoYW5kbGUpOworCitpcygkbm9kZV9zdGFuZGJ5LT5zbG90KCdv dGhlcnNsb3QnKS0+eydzbG90X3R5cGUnfSwgJ2xvZ2ljYWwnLAorCSdvdGhlcnNsb3Qgb24g c3RhbmRieSBub3QgZHJvcHBlZCcpOworCisjIENsZWFudXAgOiBtYW51YWxseSBkcm9wIHRo ZSBzbG90IHRoYXQgd2FzIG5vdCBkcm9wcGVkLgorJG5vZGVfc3RhbmRieS0+cHNxbCgncG9z dGdyZXMnLCBxW1NFTEVDVCBwZ19kcm9wX3JlcGxpY2F0aW9uX3Nsb3QoJ290aGVyc2xvdCcp XSk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCisjIFRlc3Qgc3RhbmRieSBwcm9tb3Rpb24gYW5kIGxvZ2ljYWwgZGVjb2RpbmcgYmVo YXZpb3IKKyMgYWZ0ZXIgdGhlIHN0YW5kYnkgZ2V0cyBwcm9tb3RlZC4KKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyRub2RlX3ByaW1h cnktPnBzcWwoJ3Bvc3RncmVzJywgcVtDUkVBVEUgREFUQUJBU0UgdGVzdGRiXSk7Ciskbm9k ZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFxW0NSRUFURSBUQUJMRSBkZWNvZGlu Z190ZXN0KHggaW50ZWdlciwgeSB0ZXh0KTtdKTsKKworIyBjcmVhdGUgdGhlIGxvZ2ljYWwg c2xvdHMKK2NyZWF0ZV9sb2dpY2FsX3Nsb3RzKCk7CisKKyMgSW5zZXJ0IHNvbWUgcm93cyBi ZWZvcmUgdGhlIHByb21vdGlvbgorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGIn LAorCXFxW0lOU0VSVCBJTlRPIGRlY29kaW5nX3Rlc3QoeCx5KSBTRUxFQ1Qgcywgczo6dGV4 dCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDQpIHM7XQorKTsKKworJG5vZGVfcHJpbWFyeS0+ d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5LCAncmVwbGF5JywgJG5vZGVfcHJpbWFy eS0+bHNuKCdmbHVzaCcpKTsKKworIyBwcm9tb3RlCiskbm9kZV9zdGFuZGJ5LT5wcm9tb3Rl OworCisjIGluc2VydCBzb21lIHJvd3Mgb24gcHJvbW90ZWQgc3RhbmRieQorJG5vZGVfc3Rh bmRieS0+c2FmZV9wc3FsKCd0ZXN0ZGInLAorCXFxW0lOU0VSVCBJTlRPIGRlY29kaW5nX3Rl c3QoeCx5KSBTRUxFQ1Qgcywgczo6dGV4dCBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1LDcpIHM7 XQorKTsKKworCiskZXhwZWN0ZWQgPSBxe0JFR0lOCit0YWJsZSBwdWJsaWMuZGVjb2Rpbmdf dGVzdDogSU5TRVJUOiB4W2ludGVnZXJdOjEgeVt0ZXh0XTonMScKK3RhYmxlIHB1YmxpYy5k ZWNvZGluZ190ZXN0OiBJTlNFUlQ6IHhbaW50ZWdlcl06MiB5W3RleHRdOicyJwordGFibGUg cHVibGljLmRlY29kaW5nX3Rlc3Q6IElOU0VSVDogeFtpbnRlZ2VyXTozIHlbdGV4dF06JzMn Cit0YWJsZSBwdWJsaWMuZGVjb2RpbmdfdGVzdDogSU5TRVJUOiB4W2ludGVnZXJdOjQgeVt0 ZXh0XTonNCcKK0NPTU1JVAorQkVHSU4KK3RhYmxlIHB1YmxpYy5kZWNvZGluZ190ZXN0OiBJ TlNFUlQ6IHhbaW50ZWdlcl06NSB5W3RleHRdOic1JwordGFibGUgcHVibGljLmRlY29kaW5n X3Rlc3Q6IElOU0VSVDogeFtpbnRlZ2VyXTo2IHlbdGV4dF06JzYnCit0YWJsZSBwdWJsaWMu ZGVjb2RpbmdfdGVzdDogSU5TRVJUOiB4W2ludGVnZXJdOjcgeVt0ZXh0XTonNycKK0NPTU1J VH07CisKKyMgY2hlY2sgdGhhdCB3ZSBhcmUgZGVjb2RpbmcgcHJlIGFuZCBwb3N0IHByb21v dGlvbiBpbnNlcnRlZCByb3dzCiskc3Rkb3V0X3NxbCA9ICRub2RlX3N0YW5kYnktPnNhZmVf cHNxbCgndGVzdGRiJywKKwlxcVtTRUxFQ1QgZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9w ZWVrX2NoYW5nZXMoJ2FjdGl2ZXNsb3QnLCBOVUxMLCBOVUxMLCAnaW5jbHVkZS14aWRzJywg JzAnLCAnc2tpcC1lbXB0eS14YWN0cycsICcxJyk7XQorKTsKKworaXMoJHN0ZG91dF9zcWws ICRleHBlY3RlZCwgJ2dvdCBleHBlY3RlZCBvdXRwdXQgZnJvbSBTUUwgZGVjb2Rpbmcgc2Vz c2lvbiBvbiBwcm9tb3RlZCBzdGFuZGJ5Jyk7Ci0tIAoyLjM0LjEKCg== --------------ulL7c4xqDnt0SfJwoobL67iT Content-Type: text/plain; charset=UTF-8; name="v27-0003-Allow-logical-decoding-on-standby.patch" Content-Disposition: attachment; filename="v27-0003-Allow-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSAxODc5OGYyODAwOGNmOGFhZGE0YzRiODRlZGFmODg4MDA2NmI1NDhhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVGh1LCAxIERlYyAyMDIyIDEwOjI2OjE0ICswMDAwClN1YmplY3Q6IFtQQVRD SCB2MjcgMy82XSBBbGxvdyBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkuCgpBbGxvdyBh IGxvZ2ljYWwgc2xvdCB0byBiZSBjcmVhdGVkIG9uIHN0YW5kYnkuIFJlc3RyaWN0IGl0cyB1 c2FnZQpvciBpdHMgY3JlYXRpb24gaWYgd2FsX2xldmVsIG9uIHByaW1hcnkgaXMgbGVzcyB0 aGFuIGxvZ2ljYWwuCkR1cmluZyBzbG90IGNyZWF0aW9uLCBpdCdzIHJlc3RhcnRfbHNuIGlz IHNldCB0byB0aGUgbGFzdCByZXBsYXllZApMU04uIEVmZmVjdGl2ZWx5LCBhIGxvZ2ljYWwg c2xvdCBjcmVhdGlvbiBvbiBzdGFuZGJ5IHdhaXRzIGZvciBhbgp4bF9ydW5uaW5nX3hhY3Qg cmVjb3JkIHRvIGFycml2ZSBmcm9tIHByaW1hcnkuIENvbmZsaWN0aW5nIHNsb3RzCndvdWxk IGJlIGhhbmRsZWQgaW4gbmV4dCBjb21taXRzLgoKQXV0aG9yOiBBbmRyZXMgRnJldW5kIChp biBhbiBvbGRlciB2ZXJzaW9uKSwgQW1pdCBLaGFuZGVrYXIsIEJlcnRyYW5kIERyb3V2b3QK UmV2aWV3ZWQtQnk6IEJlcnRyYW5kIERyb3V2b3QsIEFuZHJlcyBGcmV1bmQsIFJvYmVydCBI YWFzLCBGYWJyaXppbyBkZSBSb3llcyBNZWxsbwotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3hsb2cuYyAgICAgICAgIHwgMTEgKysrKwogc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9kZWNvZGUuYyAgfCAyMiArKysrKystCiBzcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2xvZ2ljYWwuYyB8IDM3ICsrKysrKystLS0tLQogc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vc2xvdC5jICAgICAgICAgICAgfCA3MyArKysrKysrKysrKysrKystLS0t LS0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgICAgICAgfCAyNyAr KysrKy0tLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmggICAgICAgICAgICAgICAgIHwg IDEgKwogNiBmaWxlcyBjaGFuZ2VkLCAxMTggaW5zZXJ0aW9ucygrKSwgNTMgZGVsZXRpb25z KC0pCiAgIDQuNSUgc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vCiAgMzYuNiUgc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC8KICA1Ny45JSBzcmMvYmFja2VuZC9yZXBsaWNh dGlvbi8KCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKaW5kZXggZTQ1MDNmYjM2ZC4u MDBmMDIxOTQyZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxv Zy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwpAQCAtNDQ3MSw2 ICs0NDcxLDE3IEBAIExvY2FsUHJvY2Vzc0NvbnRyb2xGaWxlKGJvb2wgcmVzZXQpCiAJUmVh ZENvbnRyb2xGaWxlKCk7CiB9CiAKKy8qCisgKiBHZXQgdGhlIHdhbF9sZXZlbCBmcm9tIHRo ZSBjb250cm9sIGZpbGUuIEZvciBhIHN0YW5kYnksIHRoaXMgdmFsdWUgc2hvdWxkIGJlCisg KiBjb25zaWRlcmVkIGFzIGl0cyBhY3RpdmUgd2FsX2xldmVsLCBiZWNhdXNlIGl0IG1heSBi ZSBkaWZmZXJlbnQgZnJvbSB3aGF0CisgKiB3YXMgb3JpZ2luYWxseSBjb25maWd1cmVkIG9u IHN0YW5kYnkuCisgKi8KK1dhbExldmVsCitHZXRBY3RpdmVXYWxMZXZlbE9uU3RhbmRieSh2 b2lkKQoreworCXJldHVybiBDb250cm9sRmlsZS0+d2FsX2xldmVsOworfQorCiAvKgogICog SW5pdGlhbGl6YXRpb24gb2Ygc2hhcmVkIG1lbW9yeSBmb3IgWExPRwogICovCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYwppbmRleCAyY2MwYWM5ZWIwLi5j MjEwNzIxYWIwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L2RlY29kZS5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2Rl LmMKQEAgLTE1MiwxMSArMTUyLDMxIEBAIHhsb2dfZGVjb2RlKExvZ2ljYWxEZWNvZGluZ0Nv bnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKQogCQkJICogY2FuIHJlc3RhcnQg ZnJvbSB0aGVyZS4KIAkJCSAqLwogCQkJYnJlYWs7CisJCWNhc2UgWExPR19QQVJBTUVURVJf Q0hBTkdFOgorCQl7CisJCQl4bF9wYXJhbWV0ZXJfY2hhbmdlICp4bHJlYyA9CisJCQkJKHhs X3BhcmFtZXRlcl9jaGFuZ2UgKikgWExvZ1JlY0dldERhdGEoYnVmLT5yZWNvcmQpOworCisJ CQkvKgorCQkJICogSWYgd2FsX2xldmVsIG9uIHByaW1hcnkgaXMgcmVkdWNlZCB0byBsZXNz IHRoYW4gbG9naWNhbCwgdGhlbiB3ZQorCQkJICogd2FudCB0byBwcmV2ZW50IGV4aXN0aW5n IGxvZ2ljYWwgc2xvdHMgZnJvbSBiZWluZyB1c2VkLgorCQkJICogRXhpc3RpbmcgbG9naWNh bCBzbG90cyBvbiBzdGFuZGJ5IGdldCBpbnZhbGlkYXRlZCB3aGVuIHRoaXMgV0FMCisJCQkg KiByZWNvcmQgaXMgcmVwbGF5ZWQ7IGFuZCBmdXJ0aGVyLCBzbG90IGNyZWF0aW9uIGZhaWxz IHdoZW4gdGhlCisJCQkgKiB3YWwgbGV2ZWwgaXMgbm90IHN1ZmZpY2llbnQ7IGJ1dCBhbGwg dGhlc2Ugb3BlcmF0aW9ucyBhcmUgbm90CisJCQkgKiBzeW5jaHJvbml6ZWQsIHNvIGEgbG9n aWNhbCBzbG90IG1heSBjcmVlcCBpbiB3aGlsZSB0aGUgd2FsX2xldmVsCisJCQkgKiBpcyBi ZWluZyByZWR1Y2VkLiBIZW5jZSB0aGlzIGV4dHJhIGNoZWNrLgorCQkJICovCisJCQlpZiAo eGxyZWMtPndhbF9sZXZlbCA8IFdBTF9MRVZFTF9MT0dJQ0FMKQorCQkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRF X1NUQVRFKSwKKwkJCQkJCSBlcnJtc2coImxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieSBy ZXF1aXJlcyAiCisJCQkJCQkJCSJ3YWxfbGV2ZWwgdG8gYmUgYXQgbGVhc3QgbG9naWNhbCBv biBtYXN0ZXIiKSkpOworCQkJYnJlYWs7CisJCX0KIAkJY2FzZSBYTE9HX05PT1A6CiAJCWNh c2UgWExPR19ORVhUT0lEOgogCQljYXNlIFhMT0dfU1dJVENIOgogCQljYXNlIFhMT0dfQkFD S1VQX0VORDoKLQkJY2FzZSBYTE9HX1BBUkFNRVRFUl9DSEFOR0U6CiAJCWNhc2UgWExPR19S RVNUT1JFX1BPSU5UOgogCQljYXNlIFhMT0dfRlBXX0NIQU5HRToKIAkJY2FzZSBYTE9HX0ZQ SV9GT1JfSElOVDoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvbG9naWNhbC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2Fs LmMKaW5kZXggNjI1YTdmNDI3My4uYTk1NjdmMmQ4YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMKQEAgLTExOSwyMyArMTE5LDIyIEBAIENoZWNr TG9naWNhbERlY29kaW5nUmVxdWlyZW1lbnRzKHZvaWQpCiAJCQkJKGVycmNvZGUoRVJSQ09E RV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCiAJCQkJIGVycm1zZygibG9n aWNhbCBkZWNvZGluZyByZXF1aXJlcyBhIGRhdGFiYXNlIGNvbm5lY3Rpb24iKSkpOwogCi0J LyogLS0tLQotCSAqIFRPRE86IFdlIGdvdCB0byBjaGFuZ2UgdGhhdCBzb21lZGF5IHNvb24u Li4KLQkgKgotCSAqIFRoZXJlJ3MgYmFzaWNhbGx5IHRocmVlIHRoaW5ncyBtaXNzaW5nIHRv IGFsbG93IHRoaXM6Ci0JICogMSkgV2UgbmVlZCB0byBiZSBhYmxlIHRvIGNvcnJlY3RseSBh bmQgcXVpY2tseSBpZGVudGlmeSB0aGUgdGltZWxpbmUgYQotCSAqCSAgTFNOIGJlbG9uZ3Mg dG8KLQkgKiAyKSBXZSBuZWVkIHRvIGZvcmNlIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIHRvIGJl IGVuYWJsZWQgYXQgYWxsIHRpbWVzIHNvCi0JICoJICB0aGUgcHJpbWFyeSBjYW5ub3QgcmVt b3ZlIHJvd3Mgd2UgbmVlZC4KLQkgKiAzKSBzdXBwb3J0IGRyb3BwaW5nIHJlcGxpY2F0aW9u IHNsb3RzIHJlZmVycmluZyB0byBhIGRhdGFiYXNlLCBpbgotCSAqCSAgZGJhc2VfcmVkby4g VGhlcmUgY2FuJ3QgYmUgYW55IGFjdGl2ZSBvbmVzIGR1ZSB0byBIUyByZWNvdmVyeQotCSAq CSAgY29uZmxpY3RzLCBzbyB0aGF0IHNob3VsZCBiZSByZWxhdGl2ZWx5IGVhc3kuCi0JICog LS0tLQotCSAqLwogCWlmIChSZWNvdmVyeUluUHJvZ3Jlc3MoKSkKLQkJZXJlcG9ydChFUlJP UiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJ IGVycm1zZygibG9naWNhbCBkZWNvZGluZyBjYW5ub3QgYmUgdXNlZCB3aGlsZSBpbiByZWNv dmVyeSIpKSk7CisJeworCQkvKgorCQkgKiBUaGlzIGNoZWNrIG1heSBoYXZlIHJhY2UgY29u ZGl0aW9ucywgYnV0IHdoZW5ldmVyCisJCSAqIFhMT0dfUEFSQU1FVEVSX0NIQU5HRSBpbmRp Y2F0ZXMgdGhhdCB3YWxfbGV2ZWwgaGFzIGNoYW5nZWQsIHdlCisJCSAqIHZlcmlmeSB0aGF0 IHRoZXJlIGFyZSBubyBleGlzdGluZyBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3RzLiBBbmQg dG8KKwkJICogYXZvaWQgcmFjZXMgYXJvdW5kIGNyZWF0aW5nIGEgbmV3IHNsb3QsCisJCSAq IENoZWNrTG9naWNhbERlY29kaW5nUmVxdWlyZW1lbnRzKCkgaXMgY2FsbGVkIG9uY2UgYmVm b3JlIGNyZWF0aW5nCisJCSAqIHRoZSBzbG90LCBhbmQgb25jZSB3aGVuIGxvZ2ljYWwgZGVj b2RpbmcgaXMgaW5pdGlhbGx5IHN0YXJ0aW5nIHVwLgorCQkgKi8KKwkJaWYgKEdldEFjdGl2 ZVdhbExldmVsT25TdGFuZGJ5KCkgPCBXQUxfTEVWRUxfTE9HSUNBTCkKKwkJCWVyZXBvcnQo RVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJ VEVfU1RBVEUpLAorCQkJCQkgZXJybXNnKCJsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkg cmVxdWlyZXMgIgorCQkJCQkJCSJ3YWxfbGV2ZWwgdG8gYmUgYXQgbGVhc3QgbG9naWNhbCBv biBtYXN0ZXIiKSkpOworCX0KIH0KIAogLyoKQEAgLTMzMSw2ICszMzAsMTIgQEAgQ3JlYXRl SW5pdERlY29kaW5nQ29udGV4dChjb25zdCBjaGFyICpwbHVnaW4sCiAJTG9naWNhbERlY29k aW5nQ29udGV4dCAqY3R4OwogCU1lbW9yeUNvbnRleHQgb2xkX2NvbnRleHQ7CiAKKwkvKgor CSAqIE9uIHN0YW5kYnksIHRoaXMgY2hlY2sgaXMgYWxzbyByZXF1aXJlZCB3aGlsZSBjcmVh dGluZyB0aGUgc2xvdC4gQ2hlY2sKKwkgKiB0aGUgY29tbWVudHMgaW4gdGhpcyBmdW5jdGlv bi4KKwkgKi8KKwlDaGVja0xvZ2ljYWxEZWNvZGluZ1JlcXVpcmVtZW50cygpOworCiAJLyog c2hvcnRlciBsaW5lcy4uLiAqLwogCXNsb3QgPSBNeVJlcGxpY2F0aW9uU2xvdDsKIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vc2xvdC5jCmluZGV4IDZhNGUyY2QxOWIuLmY1NTRkYWM2ZmQgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYworKysgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9zbG90LmMKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlICJzdG9y YWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgogI2luY2x1ZGUg InV0aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVkZSAiYWNjZXNzL3hsb2dyZWNvdmVyeS5oIgog CiAvKgogICogUmVwbGljYXRpb24gc2xvdCBvbi1kaXNrIGRhdGEgc3RydWN0dXJlLgpAQCAt MTE3NSwzNyArMTE3Niw0NiBAQCBSZXBsaWNhdGlvblNsb3RSZXNlcnZlV2FsKHZvaWQpCiAJ CS8qCiAJCSAqIEZvciBsb2dpY2FsIHNsb3RzIGxvZyBhIHN0YW5kYnkgc25hcHNob3QgYW5k IHN0YXJ0IGxvZ2ljYWwgZGVjb2RpbmcKIAkJICogYXQgZXhhY3RseSB0aGF0IHBvc2l0aW9u LiBUaGF0IGFsbG93cyB0aGUgc2xvdCB0byBzdGFydCB1cCBtb3JlCi0JCSAqIHF1aWNrbHku CisJCSAqIHF1aWNrbHkuIEJ1dCBvbiBhIHN0YW5kYnkgd2UgY2Fubm90IGRvIFdBTCB3cml0 ZXMsIHNvIGp1c3QgdXNlIHRoZQorCQkgKiByZXBsYXkgcG9pbnRlcjsgZWZmZWN0aXZlbHks IGFuIGF0dGVtcHQgdG8gY3JlYXRlIGEgbG9naWNhbCBzbG90IG9uCisJCSAqIHN0YW5kYnkg d2lsbCBjYXVzZSBpdCB0byB3YWl0IGZvciBhbiB4bF9ydW5uaW5nX3hhY3QgcmVjb3JkIHRv IGJlCisJCSAqIGxvZ2dlZCBpbmRlcGVuZGVudGx5IG9uIHRoZSBwcmltYXJ5LCBzbyB0aGF0 IGEgc25hcHNob3QgY2FuIGJlIGJ1aWx0CisJCSAqIHVzaW5nIHRoZSByZWNvcmQuCiAJCSAq Ci0JCSAqIFRoYXQncyBub3QgbmVlZGVkIChvciBpbmRlZWQgaGVscGZ1bCkgZm9yIHBoeXNp Y2FsIHNsb3RzIGFzIHRoZXknbGwKLQkJICogc3RhcnQgcmVwbGF5IGF0IHRoZSBsYXN0IGxv Z2dlZCBjaGVja3BvaW50IGFueXdheS4gSW5zdGVhZCByZXR1cm4KLQkJICogdGhlIGxvY2F0 aW9uIG9mIHRoZSBsYXN0IHJlZG8gTFNOLiBXaGlsZSB0aGF0IHNsaWdodGx5IGluY3JlYXNl cwotCQkgKiB0aGUgY2hhbmNlIHRoYXQgd2UgaGF2ZSB0byByZXRyeSwgaXQncyB3aGVyZSBh IGJhc2UgYmFja3VwIGhhcyB0bwotCQkgKiBzdGFydCByZXBsYXkgYXQuCisJCSAqIE5vbmUg b2YgdGhpcyBpcyBuZWVkZWQgKG9yIGluZGVlZCBoZWxwZnVsKSBmb3IgcGh5c2ljYWwgc2xv dHMgYXMKKwkJICogdGhleSdsbCBzdGFydCByZXBsYXkgYXQgdGhlIGxhc3QgbG9nZ2VkIGNo ZWNrcG9pbnQgYW55d2F5LiBJbnN0ZWFkCisJCSAqIHJldHVybiB0aGUgbG9jYXRpb24gb2Yg dGhlIGxhc3QgcmVkbyBMU04uIFdoaWxlIHRoYXQgc2xpZ2h0bHkKKwkJICogaW5jcmVhc2Vz IHRoZSBjaGFuY2UgdGhhdCB3ZSBoYXZlIHRvIHJldHJ5LCBpdCdzIHdoZXJlIGEgYmFzZSBi YWNrdXAKKwkJICogaGFzIHRvIHN0YXJ0IHJlcGxheSBhdC4KIAkJICovCi0JCWlmICghUmVj b3ZlcnlJblByb2dyZXNzKCkgJiYgU2xvdElzTG9naWNhbChzbG90KSkKKwkJaWYgKFNsb3RJ c1BoeXNpY2FsKHNsb3QpKQorCQkJcmVzdGFydF9sc24gPSBHZXRSZWRvUmVjUHRyKCk7CisJ CWVsc2UgaWYgKFJlY292ZXJ5SW5Qcm9ncmVzcygpKQogCQl7Ci0JCQlYTG9nUmVjUHRyCWZs dXNocHRyOwotCi0JCQkvKiBzdGFydCBhdCBjdXJyZW50IGluc2VydCBwb3NpdGlvbiAqLwot CQkJcmVzdGFydF9sc24gPSBHZXRYTG9nSW5zZXJ0UmVjUHRyKCk7Ci0JCQlTcGluTG9ja0Fj cXVpcmUoJnNsb3QtPm11dGV4KTsKLQkJCXNsb3QtPmRhdGEucmVzdGFydF9sc24gPSByZXN0 YXJ0X2xzbjsKLQkJCVNwaW5Mb2NrUmVsZWFzZSgmc2xvdC0+bXV0ZXgpOwotCi0JCQkvKiBt YWtlIHN1cmUgd2UgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gdG8gc3RhcnQgKi8KLQkJCWZs dXNocHRyID0gTG9nU3RhbmRieVNuYXBzaG90KCk7Ci0KLQkJCS8qIGFuZCBtYWtlIHN1cmUg aXQncyBmc3luY2VkIHRvIGRpc2sgKi8KLQkJCVhMb2dGbHVzaChmbHVzaHB0cik7CisJCQly ZXN0YXJ0X2xzbiA9IEdldFhMb2dSZXBsYXlSZWNQdHIoTlVMTCk7CisJCQkvKgorCQkJICog UmVwbGF5IHBvaW50ZXIgbWF5IHBvaW50IG9uZSBwYXN0IHRoZSBlbmQgb2YgdGhlIHJlY29y ZC4gSWYgdGhhdAorCQkJICogaXMgYSBYTE9HIHBhZ2UgYm91bmRhcnksIGl0IHdpbGwgbm90 IGJlIGEgdmFsaWQgTFNOIGZvciB0aGUKKwkJCSAqIHN0YXJ0IG9mIGEgcmVjb3JkLCBzbyBi dW1wIGl0IHVwIHBhc3QgdGhlIHBhZ2UgaGVhZGVyLgorCQkJICovCisJCQlpZiAoIVhSZWNP ZmZJc1ZhbGlkKHJlc3RhcnRfbHNuKSkKKwkJCXsKKwkJCQlpZiAocmVzdGFydF9sc24gJSBY TE9HX0JMQ0tTWiAhPSAwKQorCQkJCQllbG9nKEVSUk9SLCAiaW52YWxpZCByZXBsYXkgcG9p bnRlciIpOworCisJCQkJLyogRm9yIHRoZSBmaXJzdCBwYWdlIG9mIGEgc2VnbWVudCBmaWxl LCBpdCdzIGEgbG9uZyBoZWFkZXIgKi8KKwkJCQlpZiAoWExvZ1NlZ21lbnRPZmZzZXQocmVz dGFydF9sc24sIHdhbF9zZWdtZW50X3NpemUpID09IDApCisJCQkJCXJlc3RhcnRfbHNuICs9 IFNpemVPZlhMb2dMb25nUEhEOworCQkJCWVsc2UKKwkJCQkJcmVzdGFydF9sc24gKz0gU2l6 ZU9mWExvZ1Nob3J0UEhEOworCQkJfQogCQl9CiAJCWVsc2UKLQkJewotCQkJcmVzdGFydF9s c24gPSBHZXRSZWRvUmVjUHRyKCk7Ci0JCQlTcGluTG9ja0FjcXVpcmUoJnNsb3QtPm11dGV4 KTsKLQkJCXNsb3QtPmRhdGEucmVzdGFydF9sc24gPSByZXN0YXJ0X2xzbjsKLQkJCVNwaW5M b2NrUmVsZWFzZSgmc2xvdC0+bXV0ZXgpOwotCQl9CisJCQlyZXN0YXJ0X2xzbiA9IEdldFhM b2dJbnNlcnRSZWNQdHIoKTsKKworCQlTcGluTG9ja0FjcXVpcmUoJnNsb3QtPm11dGV4KTsK KwkJc2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbiA9IHJlc3RhcnRfbHNuOworCQlTcGluTG9ja1Jl bGVhc2UoJnNsb3QtPm11dGV4KTsKIAogCQkvKiBwcmV2ZW50IFdBTCByZW1vdmFsIGFzIGZh c3QgYXMgcG9zc2libGUgKi8KIAkJUmVwbGljYXRpb25TbG90c0NvbXB1dGVSZXF1aXJlZExT TigpOwpAQCAtMTIyMSw2ICsxMjMxLDE3IEBAIFJlcGxpY2F0aW9uU2xvdFJlc2VydmVXYWwo dm9pZCkKIAkJaWYgKFhMb2dHZXRMYXN0UmVtb3ZlZFNlZ25vKCkgPCBzZWdubykKIAkJCWJy ZWFrOwogCX0KKworCWlmICghUmVjb3ZlcnlJblByb2dyZXNzKCkgJiYgU2xvdElzTG9naWNh bChzbG90KSkKKwl7CisJCVhMb2dSZWNQdHIJZmx1c2hwdHI7CisKKwkJLyogbWFrZSBzdXJl IHdlIGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIHRvIHN0YXJ0ICovCisJCWZsdXNocHRyID0g TG9nU3RhbmRieVNuYXBzaG90KCk7CisKKwkJLyogYW5kIG1ha2Ugc3VyZSBpdCdzIGZzeW5j ZWQgdG8gZGlzayAqLworCQlYTG9nRmx1c2goZmx1c2hwdHIpOworCX0KIH0KIAogLyoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKaW5kZXggNjRmYmQ1MmUzNC4uOTY2MmUz MTZjOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMK KysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKQEAgLTkwNiwxNCAr OTA2LDE4IEBAIGxvZ2ljYWxfcmVhZF94bG9nX3BhZ2UoWExvZ1JlYWRlclN0YXRlICpzdGF0 ZSwgWExvZ1JlY1B0ciB0YXJnZXRQYWdlUHRyLCBpbnQgcmVxCiAJaW50CQkJY291bnQ7CiAJ V0FMUmVhZEVycm9yIGVycmluZm87CiAJWExvZ1NlZ05vCXNlZ25vOwotCVRpbWVMaW5lSUQJ Y3VyclRMSSA9IEdldFdBTEluc2VydGlvblRpbWVMaW5lKCk7CisJVGltZUxpbmVJRAljdXJy VExJOwogCiAJLyoKLQkgKiBTaW5jZSBsb2dpY2FsIGRlY29kaW5nIGlzIG9ubHkgcGVybWl0 dGVkIG9uIGEgcHJpbWFyeSBzZXJ2ZXIsIHdlIGtub3cKLQkgKiB0aGF0IHRoZSBjdXJyZW50 IHRpbWVsaW5lIElEIGNhbid0IGJlIGNoYW5naW5nIGFueSBtb3JlLiBJZiB3ZSBkaWQgdGhp cwotCSAqIG9uIGEgc3RhbmRieSwgd2UnZCBoYXZlIHRvIHdvcnJ5IGFib3V0IHRoZSB2YWx1 ZXMgd2UgY29tcHV0ZSBoZXJlCi0JICogYmVjb21pbmcgaW52YWxpZCBkdWUgdG8gYSBwcm9t b3Rpb24gb3IgdGltZWxpbmUgY2hhbmdlLgorCSAqIFNpbmNlIGxvZ2ljYWwgZGVjb2Rpbmcg aXMgYWxzbyBwZXJtaXR0ZWQgb24gYSBzdGFuZGJ5IHNlcnZlciwgd2UgbmVlZAorCSAqIHRv IGNoZWNrIGlmIHRoZSBzZXJ2ZXIgaXMgaW4gcmVjb3ZlcnkgdG8gZGVjaWRlIGhvdyB0byBn ZXQgdGhlIGN1cnJlbnQKKwkgKiB0aW1lbGluZSBJRCAoc28gdGhhdCBpdCBhbHNvIGNvdmVy IHRoZSBwcm9tb3Rpb24gb3IgdGltZWxpbmUgY2hhbmdlIGNhc2VzKS4KIAkgKi8KKwlpZiAo IVJlY292ZXJ5SW5Qcm9ncmVzcygpKQorCQljdXJyVExJID0gR2V0V0FMSW5zZXJ0aW9uVGlt ZUxpbmUoKTsKKwllbHNlCisJCUdldFhMb2dSZXBsYXlSZWNQdHIoJmN1cnJUTEkpOworCiAJ WExvZ1JlYWREZXRlcm1pbmVUaW1lbGluZShzdGF0ZSwgdGFyZ2V0UGFnZVB0ciwgcmVxTGVu LCBjdXJyVExJKTsKIAlzZW5kVGltZUxpbmVJc0hpc3RvcmljID0gKHN0YXRlLT5jdXJyVExJ ICE9IGN1cnJUTEkpOwogCXNlbmRUaW1lTGluZSA9IHN0YXRlLT5jdXJyVExJOwpAQCAtMzA3 NCwxMCArMzA3OCwxMiBAQCBYTG9nU2VuZExvZ2ljYWwodm9pZCkKIAkgKiBJZiBmaXJzdCB0 aW1lIHRocm91Z2ggaW4gdGhpcyBzZXNzaW9uLCBpbml0aWFsaXplIGZsdXNoUHRyLiAgT3Ro ZXJ3aXNlLAogCSAqIHdlIG9ubHkgbmVlZCB0byB1cGRhdGUgZmx1c2hQdHIgaWYgRW5kUmVj UHRyIGlzIHBhc3QgaXQuCiAJICovCi0JaWYgKGZsdXNoUHRyID09IEludmFsaWRYTG9nUmVj UHRyKQotCQlmbHVzaFB0ciA9IEdldEZsdXNoUmVjUHRyKE5VTEwpOwotCWVsc2UgaWYgKGxv Z2ljYWxfZGVjb2RpbmdfY3R4LT5yZWFkZXItPkVuZFJlY1B0ciA+PSBmbHVzaFB0cikKLQkJ Zmx1c2hQdHIgPSBHZXRGbHVzaFJlY1B0cihOVUxMKTsKKwlpZiAoZmx1c2hQdHIgPT0gSW52 YWxpZFhMb2dSZWNQdHIgfHwKKwkJbG9naWNhbF9kZWNvZGluZ19jdHgtPnJlYWRlci0+RW5k UmVjUHRyID49IGZsdXNoUHRyKQorCXsKKwkJZmx1c2hQdHIgPSAoYW1fY2FzY2FkaW5nX3dh bHNlbmRlciA/CisJCQkJCUdldFN0YW5kYnlGbHVzaFJlY1B0cihOVUxMKSA6IEdldEZsdXNo UmVjUHRyKE5VTEwpKTsKKwl9CiAKIAkvKiBJZiBFbmRSZWNQdHIgaXMgc3RpbGwgcGFzdCBv dXIgZmx1c2hQdHIsIGl0IG1lYW5zIHdlIGNhdWdodCB1cC4gKi8KIAlpZiAobG9naWNhbF9k ZWNvZGluZ19jdHgtPnJlYWRlci0+RW5kUmVjUHRyID49IGZsdXNoUHRyKQpAQCAtMzE2OCw3 ICszMTc0LDggQEAgR2V0U3RhbmRieUZsdXNoUmVjUHRyKFRpbWVMaW5lSUQgKnRsaSkKIAly ZWNlaXZlUHRyID0gR2V0V2FsUmN2Rmx1c2hSZWNQdHIoTlVMTCwgJnJlY2VpdmVUTEkpOwog CXJlcGxheVB0ciA9IEdldFhMb2dSZXBsYXlSZWNQdHIoJnJlcGxheVRMSSk7CiAKLQkqdGxp ID0gcmVwbGF5VExJOworCWlmICh0bGkpCisJCSp0bGkgPSByZXBsYXlUTEk7CiAKIAlyZXN1 bHQgPSByZXBsYXlQdHI7CiAJaWYgKHJlY2VpdmVUTEkgPT0gcmVwbGF5VExJICYmIHJlY2Vp dmVQdHIgPiByZXBsYXlQdHIpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxv Zy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2cuaAppbmRleCAxZmJkNDhmYmRhLi4wMjdl MTU1ZThlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oCisrKyBiL3Ny Yy9pbmNsdWRlL2FjY2Vzcy94bG9nLmgKQEAgLTIzMCw2ICsyMzAsNyBAQCBleHRlcm4gdm9p ZCBYTE9HU2htZW1Jbml0KHZvaWQpOwogZXh0ZXJuIHZvaWQgQm9vdFN0cmFwWExPRyh2b2lk KTsKIGV4dGVybiB2b2lkIEluaXRpYWxpemVXYWxDb25zaXN0ZW5jeUNoZWNraW5nKHZvaWQp OwogZXh0ZXJuIHZvaWQgTG9jYWxQcm9jZXNzQ29udHJvbEZpbGUoYm9vbCByZXNldCk7Citl eHRlcm4gV2FsTGV2ZWwgR2V0QWN0aXZlV2FsTGV2ZWxPblN0YW5kYnkodm9pZCk7CiBleHRl cm4gdm9pZCBTdGFydHVwWExPRyh2b2lkKTsKIGV4dGVybiB2b2lkIFNodXRkb3duWExPRyhp bnQgY29kZSwgRGF0dW0gYXJnKTsKIGV4dGVybiB2b2lkIENyZWF0ZUNoZWNrUG9pbnQoaW50 IGZsYWdzKTsKLS0gCjIuMzQuMQoK --------------ulL7c4xqDnt0SfJwoobL67iT Content-Type: text/plain; charset=UTF-8; name="v27-0002-Handle-logical-slot-conflicts-on-standby.patch" Content-Disposition: attachment; filename="v27-0002-Handle-logical-slot-conflicts-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSBmOTBlYWY4MThmZDE3ZmY4MDlhNTQ0NzNlNzg3YWM1YTZkMTA4NTVmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVGh1LCAxIERlYyAyMDIyIDEwOjE1OjE5ICswMDAwClN1YmplY3Q6IFtQQVRD SCB2MjcgMi82XSBIYW5kbGUgbG9naWNhbCBzbG90IGNvbmZsaWN0cyBvbiBzdGFuZGJ5LgoK RHVyaW5nIFdBTCByZXBsYXkgb24gc3RhbmRieSwgd2hlbiBzbG90IGNvbmZsaWN0IGlzIGlk ZW50aWZpZWQsCmludmFsaWRhdGUgc3VjaCBzbG90cy4gQWxzbyBkbyB0aGUgc2FtZSB0aGlu ZyBpZiB3YWxfbGV2ZWwgb24gbWFzdGVyCmlzIHJlZHVjZWQgdG8gYmVsb3cgbG9naWNhbCBh bmQgdGhlcmUgYXJlIGV4aXN0aW5nIGxvZ2ljYWwgc2xvdHMKb24gc3RhbmRieS4gSW50cm9k dWNlIGEgbmV3IFByb2NTaWduYWxSZWFzb24gdmFsdWUgZm9yIHNsb3QKY29uZmxpY3QgcmVj b3ZlcnkuIEFycmFuZ2UgZm9yIGEgbmV3IHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3RzIGZp ZWxkOgpjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QuCgpBdXRob3I6IEFuZHJlcyBGcmV1bmQg KGluIGFuIG9sZGVyIHZlcnNpb24pLCBBbWl0IEtoYW5kZWthciwgQmVydHJhbmQgRHJvdXZv dApSZXZpZXdlZC1CeTogQmVydHJhbmQgRHJvdXZvdCwgQW5kcmVzIEZyZXVuZCwgUm9iZXJ0 IEhhYXMsIEZhYnJpemlvIGRlIFJveWVzIE1lbGxvCi0tLQogZG9jL3NyYy9zZ21sL21vbml0 b3Jpbmcuc2dtbCAgICAgICAgICAgICAgICAgIHwgIDExICsKIHNyYy9iYWNrZW5kL2FjY2Vz cy9naXN0L2dpc3R4bG9nLmMgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9hY2Nl c3MvaGFzaC9oYXNoX3hsb2cuYyAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtLmMgICAgICAgICAgICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9uYnRyZWUvbmJ0eGxvZy5jICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9h Y2Nlc3Mvc3BnaXN0L3NwZ3hsb2cuYyAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0veGxvZy5jICAgICAgICAgICAgIHwgIDEzICsrCiBzcmMvYmFja2Vu ZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgICAgICAgICAgfCAgIDMgKy0KIC4uLi9yZXBs aWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxmdW5jcy5jICAgICAgICB8ICAgNyArLQogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vc2xvdC5jICAgICAgICAgICAgICAgIHwgMjA5ICsrKysrKysr KysrKysrKysrKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgICAgICAg ICAgIHwgICA4ICsKIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jICAgICAg ICAgICB8ICAgNCArCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMgICAg ICAgICAgfCAgIDMgKwogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jICAgICAg ICAgICAgIHwgIDEzICstCiBzcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICAg ICAgICAgICAgfCAgMjIgKysKIHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9k YXRhYmFzZS5jICB8ICAgNCArCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3Mu YyAgICAgICAgICAgfCAgMTYgKysKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQg ICAgICAgICAgICAgICB8ICAgNSArCiBzcmMvaW5jbHVkZS9wZ3N0YXQuaCAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5o ICAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25h bC5oICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3N0YW5kYnku aCAgICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9y dWxlcy5vdXQgICAgICAgICAgIHwgICAzICstCiAyMyBmaWxlcyBjaGFuZ2VkLCAzMzEgaW5z ZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKICAgMy43JSBkb2Mvc3JjL3NnbWwvCiAgIDUu MCUgc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vCiAgIDQuNCUgc3JjL2JhY2tlbmQvYWNj ZXNzLwogICAzLjclIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvCiAgNTYuMyUg c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vCiAgIDcuMiUgc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvCiAgIDcuNiUgc3JjL2JhY2tlbmQvdGNvcC8KICAgNC4xJSBzcmMvYmFja2VuZC91dGls cy8KICAgNS44JSBzcmMvaW5jbHVkZS8KCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbW9u aXRvcmluZy5zZ21sIGIvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbAppbmRleCBiNDFi NGUyYTkwLi42OGQxYzI0NzlkIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmlu Zy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKQEAgLTQzMTcsNiAr NDMxNywxNyBAQCBTRUxFQ1QgcGlkLCB3YWl0X2V2ZW50X3R5cGUsIHdhaXRfZXZlbnQgRlJP TSBwZ19zdGF0X2FjdGl2aXR5IFdIRVJFIHdhaXRfZXZlbnQgaQogICAgICAgIGRlYWRsb2Nr cwogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgorCisgICAgIDxyb3c+Cisg ICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29s dW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5jb25mbF9hY3RpdmVfbG9n aWNhbHNsb3Q8L3N0cnVjdGZpZWxkPiA8dHlwZT5iaWdpbnQ8L3R5cGU+CisgICAgICA8L3Bh cmE+CisgICAgICA8cGFyYT4KKyAgICAgICBOdW1iZXIgb2YgYWN0aXZlIGxvZ2ljYWwgc2xv dHMgaW4gdGhpcyBkYXRhYmFzZSB0aGF0IGhhdmUgYmVlbgorICAgICAgIGludmFsaWRhdGVk IGJlY2F1c2UgdGhleSBjb25mbGljdCB3aXRoIHJlY292ZXJ5IChub3RlIHRoYXQgaW5hY3Rp dmUgb25lcworICAgICAgIGFyZSBhbHNvIGludmFsaWRhdGVkIGJ1dCBkbyBub3QgaW5jcmVt ZW50IHRoaXMgY291bnRlcikKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4K ICAgICA8L3Rib2R5PgogICAgPC90Z3JvdXA+CiAgIDwvdGFibGU+CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0eGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2dpc3QvZ2lzdHhsb2cuYwppbmRleCBiNzQ3OTAwYTQ1Li43NTgxODI2NmE2IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0eGxvZy5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMKQEAgLTE5Niw2ICsxOTYsNyBAQCBnaXN0UmVk b0RlbGV0ZVJlY29yZChYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJWExvZ1JlY0dldEJs b2NrVGFnKHJlY29yZCwgMCwgJnJsb2NhdG9yLCBOVUxMLCBOVUxMKTsKIAogCQlSZXNvbHZl UmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bGRhdGEtPnNuYXBzaG90Q29uZmxpY3RI b3Jpem9uLAorCQkJCQkJCQkJCQl4bGRhdGEtPm9uQ2F0YWxvZ0FjY2Vzc2libGVJbkxvZ2lj YWxEZWNvZGluZywKIAkJCQkJCQkJCQkJcmxvY2F0b3IpOwogCX0KIApAQCAtMzk2LDYgKzM5 Nyw3IEBAIGdpc3RSZWRvUGFnZVJldXNlKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCSAq LwogCWlmIChJbkhvdFN0YW5kYnkpCiAJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNu YXBzaG90RnVsbFhpZCh4bHJlYy0+c25hcHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJ CQkJCQkgICB4bHJlYy0+b25DYXRhbG9nQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nLAog CQkJCQkJCQkJCQkJICAgeGxyZWMtPmxvY2F0b3IpOwogfQogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoX3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o YXNoL2hhc2hfeGxvZy5jCmluZGV4IGI0NTI2OTdhMmYuLjYxNTY1ZjkwNWQgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hfeGxvZy5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oYXNoL2hhc2hfeGxvZy5jCkBAIC0xMDAxLDYgKzEwMDEsNyBAQCBoYXNo X3hsb2dfdmFjdXVtX29uZV9wYWdlKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCiAJCVhM b2dSZWNHZXRCbG9ja1RhZyhyZWNvcmQsIDAsICZybG9jYXRvciwgTlVMTCwgTlVMTCk7CiAJ CVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhsZGF0YS0+c25hcHNob3RD b25mbGljdEhvcml6b24sCisJCQkJCQkJCQkJCXhsZGF0YS0+b25DYXRhbG9nQWNjZXNzaWJs ZUluTG9naWNhbERlY29kaW5nLAogCQkJCQkJCQkJCQlybG9jYXRvcik7CiAJfQogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL2hlYXBhbS5jCmluZGV4IGI0MmE2YmZhNjEuLmE3OWYwMTAyODYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCkBAIC04Njk2LDYgKzg2OTYsNyBAQCBoZWFw X3hsb2dfcHJ1bmUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJICovCiAJaWYgKEluSG90 U3RhbmRieSkKIAkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxyZWMt PnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkJCQl4bHJlYy0+b25DYXRhbG9n QWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nLAogCQkJCQkJCQkJCQlybG9jYXRvcik7CiAK IAkvKgpAQCAtODg2NSw2ICs4ODY2LDcgQEAgaGVhcF94bG9nX3Zpc2libGUoWExvZ1JlYWRl clN0YXRlICpyZWNvcmQpCiAJICovCiAJaWYgKEluSG90U3RhbmRieSkKIAkJUmVzb2x2ZVJl Y292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxyZWMtPnNuYXBzaG90Q29uZmxpY3RIb3Jp em9uLAorCQkJCQkJCQkJCQl4bHJlYy0+b25DYXRhbG9nQWNjZXNzaWJsZUluTG9naWNhbERl Y29kaW5nLAogCQkJCQkJCQkJCQlybG9jYXRvcik7CiAKIAkvKgpAQCAtOTEyMCw2ICs5MTIy LDcgQEAgaGVhcF94bG9nX2ZyZWV6ZV9wYWdlKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQog CiAJCVhMb2dSZWNHZXRCbG9ja1RhZyhyZWNvcmQsIDAsICZybG9jYXRvciwgTlVMTCwgTlVM TCk7CiAJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhscmVjLT5zbmFw c2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkJeGxyZWMtPm9uQ2F0YWxvZ0FjY2Vz c2libGVJbkxvZ2ljYWxEZWNvZGluZywKIAkJCQkJCQkJCQkJcmxvY2F0b3IpOwogCX0KIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR4bG9nLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHhsb2cuYwppbmRleCAzZTMxMWE5OGE2Li42Mjg5 ZjhkMjUwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHhsb2cu YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHhsb2cuYwpAQCAtNjY5LDYg KzY2OSw3IEBAIGJ0cmVlX3hsb2dfZGVsZXRlKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQog CQlYTG9nUmVjR2V0QmxvY2tUYWcocmVjb3JkLCAwLCAmcmxvY2F0b3IsIE5VTEwsIE5VTEwp OwogCiAJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhscmVjLT5zbmFw c2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkJeGxyZWMtPm9uQ2F0YWxvZ0FjY2Vz c2libGVJbkxvZ2ljYWxEZWNvZGluZywKIAkJCQkJCQkJCQkJcmxvY2F0b3IpOwogCX0KIApA QCAtMTAwNyw2ICsxMDA4LDcgQEAgYnRyZWVfeGxvZ19yZXVzZV9wYWdlKFhMb2dSZWFkZXJT dGF0ZSAqcmVjb3JkKQogCiAJaWYgKEluSG90U3RhbmRieSkKIAkJUmVzb2x2ZVJlY292ZXJ5 Q29uZmxpY3RXaXRoU25hcHNob3RGdWxsWGlkKHhscmVjLT5zbmFwc2hvdENvbmZsaWN0SG9y aXpvbiwKKwkJCQkJCQkJCQkJCSAgIHhscmVjLT5vbkNhdGFsb2dBY2Nlc3NpYmxlSW5Mb2dp Y2FsRGVjb2RpbmcsCiAJCQkJCQkJCQkJCQkgICB4bHJlYy0+bG9jYXRvcik7CiB9CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BneGxvZy5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd4bG9nLmMKaW5kZXggNDRhZGMyMDk4Zi4uNmFkNDY3 MTE3ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd4bG9nLmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd4bG9nLmMKQEAgLTg3OSw2ICs4 NzksNyBAQCBzcGdSZWRvVmFjdXVtUmVkaXJlY3QoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQp CiAKIAkJWExvZ1JlY0dldEJsb2NrVGFnKHJlY29yZCwgMCwgJmxvY2F0b3IsIE5VTEwsIE5V TEwpOwogCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bGRhdGEtPnNu YXBzaG90Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkJCQl4bGRhdGEtPm9uQ2F0YWxvZ0Fj Y2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZywKIAkJCQkJCQkJCQkJbG9jYXRvcik7CiAJfQog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKaW5kZXggYTMxZmJiZmY3OC4uZTQ1MDNm YjM2ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwpAQCAtNzk2Nyw2ICs3OTY3 LDE5IEBAIHhsb2dfcmVkbyhYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJLyogVXBkYXRl IG91ciBjb3B5IG9mIHRoZSBwYXJhbWV0ZXJzIGluIHBnX2NvbnRyb2wgKi8KIAkJbWVtY3B5 KCZ4bHJlYywgWExvZ1JlY0dldERhdGEocmVjb3JkKSwgc2l6ZW9mKHhsX3BhcmFtZXRlcl9j aGFuZ2UpKTsKIAorCQkvKgorCQkgKiBJbnZhbGlkYXRlIGxvZ2ljYWwgc2xvdHMgaWYgd2Ug YXJlIGluIGhvdCBzdGFuZGJ5IGFuZCB0aGUgcHJpbWFyeSBkb2VzIG5vdAorCQkgKiBoYXZl IGEgV0FMIGxldmVsIHN1ZmZpY2llbnQgZm9yIGxvZ2ljYWwgZGVjb2RpbmcuIE5vIG5lZWQg dG8gc2VhcmNoCisJCSAqIGZvciBwb3RlbnRpYWxseSBjb25mbGljdGluZyBsb2dpY2FsbHkg c2xvdHMgaWYgc3RhbmRieSBpcyBydW5uaW5nCisJCSAqIHdpdGggd2FsX2xldmVsIGxvd2Vy IHRoYW4gbG9naWNhbCwgYmVjYXVzZSBpbiB0aGF0IGNhc2UsIHdlIHdvdWxkCisJCSAqIGhh dmUgZWl0aGVyIGRpc2FsbG93ZWQgY3JlYXRpb24gb2YgbG9naWNhbCBzbG90cyBvciBpbnZh bGlkYXRlZCBleGlzdGluZworCQkgKiBvbmVzLgorCQkgKi8KKwkJaWYgKEluUmVjb3Zlcnkg JiYgSW5Ib3RTdGFuZGJ5ICYmCisJCQl4bHJlYy53YWxfbGV2ZWwgPCBXQUxfTEVWRUxfTE9H SUNBTCAmJgorCQkJd2FsX2xldmVsID49IFdBTF9MRVZFTF9MT0dJQ0FMKQorCQkJSW52YWxp ZGF0ZUNvbmZsaWN0aW5nTG9naWNhbFJlcGxpY2F0aW9uU2xvdHMoSW52YWxpZE9pZCxJbnZh bGlkVHJhbnNhY3Rpb25JZCk7CisKIAkJTFdMb2NrQWNxdWlyZShDb250cm9sRmlsZUxvY2ss IExXX0VYQ0xVU0lWRSk7CiAJCUNvbnRyb2xGaWxlLT5NYXhDb25uZWN0aW9ucyA9IHhscmVj Lk1heENvbm5lY3Rpb25zOwogCQlDb250cm9sRmlsZS0+bWF4X3dvcmtlcl9wcm9jZXNzZXMg PSB4bHJlYy5tYXhfd29ya2VyX3Byb2Nlc3NlczsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVt X3ZpZXdzLnNxbAppbmRleCAyZDgxMDRiMDkwLi4wZTBiOGVmNDE1IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKKysrIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCkBAIC0xMDY1LDcgKzEwNjUsOCBAQCBDUkVBVEUg VklFVyBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0cyBBUwogICAgICAgICAgICAgcGdfc3Rh dF9nZXRfZGJfY29uZmxpY3RfbG9jayhELm9pZCkgQVMgY29uZmxfbG9jaywKICAgICAgICAg ICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3NuYXBzaG90KEQub2lkKSBBUyBjb25mbF9z bmFwc2hvdCwKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2J1ZmZlcnBp bihELm9pZCkgQVMgY29uZmxfYnVmZmVycGluLAotICAgICAgICAgICAgcGdfc3RhdF9nZXRf ZGJfY29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jayhELm9pZCkgQVMgY29uZmxfZGVhZGxvY2sK KyAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3N0YXJ0dXBfZGVhZGxvY2so RC5vaWQpIEFTIGNvbmZsX2RlYWRsb2NrLAorICAgICAgICAgICAgcGdfc3RhdF9nZXRfZGJf Y29uZmxpY3RfbG9naWNhbHNsb3QoRC5vaWQpIEFTIGNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xv dAogICAgIEZST00gcGdfZGF0YWJhc2UgRDsKIAogQ1JFQVRFIFZJRVcgcGdfc3RhdF91c2Vy X2Z1bmN0aW9ucyBBUwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9sb2dpY2FsZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv bG9naWNhbGZ1bmNzLmMKaW5kZXggNWMyMzE3ODU3MC4uODQzMmRlMjE5YiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsZnVuY3MuYworKysg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxmdW5jcy5jCkBAIC0y MTYsMTEgKzIxNiwxNCBAQCBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXNfZ3V0cyhGdW5j dGlvbkNhbGxJbmZvIGZjaW5mbywgYm9vbCBjb25maXJtLCBib29sIGJpbgogCiAJCS8qCiAJ CSAqIEFmdGVyIHRoZSBzYW5pdHkgY2hlY2tzIGluIENyZWF0ZURlY29kaW5nQ29udGV4dCwg bWFrZSBzdXJlIHRoZQotCQkgKiByZXN0YXJ0X2xzbiBpcyB2YWxpZC4gIEF2b2lkICJjYW5u b3QgZ2V0IGNoYW5nZXMiIHdvcmRpbmcgaW4gdGhpcworCQkgKiByZXN0YXJ0X2xzbiBpcyB2 YWxpZCBvciBib3RoIHhtaW4gYW5kIGNhdGFsb2dfeG1pbiBhcmUgdmFsaWQuCisJCSAqIEF2 b2lkICJjYW5ub3QgZ2V0IGNoYW5nZXMiIHdvcmRpbmcgaW4gdGhpcwogCQkgKiBlcnJtc2cg YmVjYXVzZSB0aGF0J2QgYmUgY29uZnVzaW5nbHkgYW1iaWd1b3VzIGFib3V0IG5vIGNoYW5n ZXMKIAkJICogYmVpbmcgYXZhaWxhYmxlLgogCQkgKi8KLQkJaWYgKFhMb2dSZWNQdHJJc0lu dmFsaWQoTXlSZXBsaWNhdGlvblNsb3QtPmRhdGEucmVzdGFydF9sc24pKQorCQlpZiAoWExv Z1JlY1B0cklzSW52YWxpZChNeVJlcGxpY2F0aW9uU2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbikK KwkJCXx8ICghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlSZXBsaWNhdGlvblNsb3QtPmRhdGEu eG1pbikKKwkJCQkmJiAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlSZXBsaWNhdGlvblNsb3Qt PmRhdGEuY2F0YWxvZ194bWluKSkpCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29k ZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKIAkJCQkJIGVy cm1zZygiY2FuIG5vIGxvbmdlciBnZXQgY2hhbmdlcyBmcm9tIHJlcGxpY2F0aW9uIHNsb3Qg XCIlc1wiIiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYwppbmRleCA4OTlhY2ZkOTEyLi42YTRl MmNkMTliIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKKysr IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCkBAIC0xNDMyLDYgKzE0MzIsMjE1 IEBAIHJlc3RhcnQ6CiAJcmV0dXJuIGludmFsaWRhdGVkOwogfQogCisvKgorICogSGVscGVy IGZvciBJbnZhbGlkYXRlQ29uZmxpY3RpbmdMb2dpY2FsUmVwbGljYXRpb25TbG90IC0tIGFj cXVpcmVzIHRoZSBnaXZlbiBzbG90CisgKiBhbmQgbWFyayBpdCBpbnZhbGlkLCBpZiBuZWNl c3NhcnkgYW5kIHBvc3NpYmxlLgorICoKKyAqIFJldHVybnMgd2hldGhlciBSZXBsaWNhdGlv blNsb3RDb250cm9sTG9jayB3YXMgcmVsZWFzZWQgaW4gdGhlIGludGVyaW0gKGFuZAorICog aW4gdGhhdCBjYXNlIHdlJ3JlIG5vdCBob2xkaW5nIHRoZSBsb2NrIGF0IHJldHVybiwgb3Ro ZXJ3aXNlIHdlIGFyZSkuCisgKgorICogVGhpcyBpcyBpbmhlcmVudGx5IHJhY3ksIGJlY2F1 c2Ugd2UgcmVsZWFzZSB0aGUgTFdMb2NrCisgKiBmb3Igc3lzY2FsbHMsIHNvIGNhbGxlciBt dXN0IHJlc3RhcnQgaWYgd2UgcmV0dXJuIHRydWUuCisgKi8KK3N0YXRpYyBib29sCitJbnZh bGlkYXRlUG9zc2libHlDb25mbGljdGluZ0xvZ2ljYWxSZXBsaWNhdGlvblNsb3QoUmVwbGlj YXRpb25TbG90ICpzLCBUcmFuc2FjdGlvbklkIHhpZCkKK3sKKwlpbnQJCWxhc3Rfc2lnbmFs ZWRfcGlkID0gMDsKKwlib29sCXJlbGVhc2VkX2xvY2sgPSBmYWxzZTsKKworCWZvciAoOzsp CisJeworCQlUcmFuc2FjdGlvbklkIHNsb3RfeG1pbjsKKwkJVHJhbnNhY3Rpb25JZCBzbG90 X2NhdGFsb2dfeG1pbjsKKwkJTmFtZURhdGEJc2xvdG5hbWU7CisJCWludAkJCWFjdGl2ZV9w aWQgPSAwOworCisJCUFzc2VydChMV0xvY2tIZWxkQnlNZUluTW9kZShSZXBsaWNhdGlvblNs b3RDb250cm9sTG9jaywgTFdfU0hBUkVEKSk7CisKKwkJaWYgKCFzLT5pbl91c2UpCisJCXsK KwkJCWlmIChyZWxlYXNlZF9sb2NrKQorCQkJCUxXTG9ja1JlbGVhc2UoUmVwbGljYXRpb25T bG90Q29udHJvbExvY2spOworCQkJYnJlYWs7CisJCX0KKworCQkvKgorCQkgKiBDaGVjayBp ZiB0aGUgc2xvdCBuZWVkcyB0byBiZSBpbnZhbGlkYXRlZC4gSWYgaXQgbmVlZHMgdG8gYmUK KwkJICogaW52YWxpZGF0ZWQsIGFuZCBpcyBub3QgY3VycmVudGx5IGFjcXVpcmVkLCBhY3F1 aXJlIGl0IGFuZCBtYXJrIGl0CisJCSAqIGFzIGhhdmluZyBiZWVuIGludmFsaWRhdGVkLiBX ZSBkbyB0aGlzIHdpdGggdGhlIHNwaW5sb2NrIGhlbGQgdG8KKwkJICogYXZvaWQgcmFjZSBj b25kaXRpb25zIC0tIGZvciBleGFtcGxlIHRoZSB4bWluKHMpIGNvdWxkIG1vdmUgZm9yd2Fy ZAorCQkgKiAsIG9yIHRoZSBzbG90IGNvdWxkIGJlIGRyb3BwZWQuCisJCSAqLworCQlTcGlu TG9ja0FjcXVpcmUoJnMtPm11dGV4KTsKKworCQlzbG90X3htaW4gPSBzLT5kYXRhLnhtaW47 CisJCXNsb3RfY2F0YWxvZ194bWluID0gcy0+ZGF0YS5jYXRhbG9nX3htaW47CisKKwkJLyoK KwkJICogSWYgdGhlIHNsb3QgaXMgYWxyZWFkeSBpbnZhbGlkIG9yIGlzIG5vdCBjb25mbGlj dGluZywgd2UgZG9uJ3QgbmVlZCB0bworCQkgKiBkbyBhbnl0aGluZy4KKwkJICovCisKKwkJ Lyogc2xvdCBoYXMgYmVlbiBpbnZhbGlkYXRlZCAqLworCQlpZiAoKCFUcmFuc2FjdGlvbklk SXNWYWxpZChzbG90X3htaW4pICYmICFUcmFuc2FjdGlvbklkSXNWYWxpZChzbG90X2NhdGFs b2dfeG1pbikpCisJCQl8fAorCQkvKgorCQkgKiB3ZSBhcmUgbm90IGZvcmNpbmcgZm9yIGlu dmFsaWRhdGlvbiBiZWNhdXNlIHRoZSB4aWQgaXMgdmFsaWQKKwkJICogYW5kIHRoaXMgaXMg YSBub24gY29uZmxpY3Rpbmcgc2xvdAorCQkgKi8KKwkJCShUcmFuc2FjdGlvbklkSXNWYWxp ZCh4aWQpICYmICEoCisJCQkJKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHNsb3RfeG1pbikgJiYg VHJhbnNhY3Rpb25JZFByZWNlZGVzT3JFcXVhbHMoc2xvdF94bWluLCB4aWQpKQorCQkJCXx8 CisJCQkJKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHNsb3RfY2F0YWxvZ194bWluKSAmJiBUcmFu c2FjdGlvbklkUHJlY2VkZXNPckVxdWFscyhzbG90X2NhdGFsb2dfeG1pbiwgeGlkKSkKKwkJ CQkpKQorCQkJKQorCQl7CisJCQlTcGluTG9ja1JlbGVhc2UoJnMtPm11dGV4KTsKKwkJCWlm IChyZWxlYXNlZF9sb2NrKQorCQkJCUxXTG9ja1JlbGVhc2UoUmVwbGljYXRpb25TbG90Q29u dHJvbExvY2spOworCQkJYnJlYWs7CisJCX0KKworCQlzbG90bmFtZSA9IHMtPmRhdGEubmFt ZTsKKwkJYWN0aXZlX3BpZCA9IHMtPmFjdGl2ZV9waWQ7CisKKwkJLyoKKwkJICogSWYgdGhl IHNsb3QgY2FuIGJlIGFjcXVpcmVkLCBkbyBzbyBhbmQgbWFyayBpdCBpbnZhbGlkYXRlZAor CQkgKiBpbW1lZGlhdGVseS4gIE90aGVyd2lzZSB3ZSdsbCBzaWduYWwgdGhlIG93bmluZyBw cm9jZXNzLCBiZWxvdywgYW5kCisJCSAqIHJldHJ5LgorCQkgKi8KKwkJaWYgKGFjdGl2ZV9w aWQgPT0gMCkKKwkJeworCQkJTXlSZXBsaWNhdGlvblNsb3QgPSBzOworCQkJcy0+YWN0aXZl X3BpZCA9IE15UHJvY1BpZDsKKwkJCXMtPmRhdGEueG1pbiA9IEludmFsaWRUcmFuc2FjdGlv bklkOworCQkJcy0+ZGF0YS5jYXRhbG9nX3htaW4gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsK KwkJfQorCisJCVNwaW5Mb2NrUmVsZWFzZSgmcy0+bXV0ZXgpOworCisJCWlmIChhY3RpdmVf cGlkICE9IDApCisJCXsKKwkJCS8qCisJCQkgKiBQcmVwYXJlIHRoZSBzbGVlcCBvbiB0aGUg c2xvdCdzIGNvbmRpdGlvbiB2YXJpYWJsZSBiZWZvcmUKKwkJCSAqIHJlbGVhc2luZyB0aGUg bG9jaywgdG8gY2xvc2UgYSBwb3NzaWJsZSByYWNlIGNvbmRpdGlvbiBpZiB0aGUKKwkJCSAq IHNsb3QgaXMgcmVsZWFzZWQgYmVmb3JlIHRoZSBzbGVlcCBiZWxvdy4KKwkJCSAqLworCisJ CQlDb25kaXRpb25WYXJpYWJsZVByZXBhcmVUb1NsZWVwKCZzLT5hY3RpdmVfY3YpOworCisJ CQlMV0xvY2tSZWxlYXNlKFJlcGxpY2F0aW9uU2xvdENvbnRyb2xMb2NrKTsKKwkJCXJlbGVh c2VkX2xvY2sgPSB0cnVlOworCisJCQkvKgorCQkJICogU2lnbmFsIHRvIHRlcm1pbmF0ZSB0 aGUgcHJvY2VzcyB0aGF0IG93bnMgdGhlIHNsb3QsIGlmIHdlCisJCQkgKiBoYXZlbid0IGFs cmVhZHkgc2lnbmFsbGVkIGl0LiAgKEF2b2lkYW5jZSBvZiByZXBlYXRlZAorCQkJICogc2ln bmFsbGluZyBpcyB0aGUgb25seSByZWFzb24gZm9yIHRoZXJlIHRvIGJlIGEgbG9vcCBpbiB0 aGlzCisJCQkgKiByb3V0aW5lOyBvdGhlcndpc2Ugd2UgY291bGQgcmVseSBvbiBjYWxsZXIn cyByZXN0YXJ0IGxvb3AuKQorCQkJICoKKwkJCSAqIFRoZXJlIGlzIHRoZSByYWNlIGNvbmRp dGlvbiB0aGF0IG90aGVyIHByb2Nlc3MgbWF5IG93biB0aGUgc2xvdAorCQkJICogYWZ0ZXIg aXRzIGN1cnJlbnQgb3duZXIgcHJvY2VzcyBpcyB0ZXJtaW5hdGVkIGFuZCBiZWZvcmUgdGhp cworCQkJICogcHJvY2VzcyBvd25zIGl0LiBUbyBoYW5kbGUgdGhhdCwgd2Ugc2lnbmFsIG9u bHkgaWYgdGhlIFBJRCBvZgorCQkJICogdGhlIG93bmluZyBwcm9jZXNzIGhhcyBjaGFuZ2Vk IGZyb20gdGhlIHByZXZpb3VzIHRpbWUuIChUaGlzCisJCQkgKiBsb2dpYyBhc3N1bWVzIHRo YXQgdGhlIHNhbWUgUElEIGlzIG5vdCByZXVzZWQgdmVyeSBxdWlja2x5LikKKwkJCSAqLwor CQkJaWYgKGxhc3Rfc2lnbmFsZWRfcGlkICE9IGFjdGl2ZV9waWQpCisJCQl7CisJCQkJZXJl cG9ydChMT0csCisJCQkJCQkoZXJybXNnKCJ0ZXJtaW5hdGluZyBwcm9jZXNzICVkIGJlY2F1 c2UgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIgY29uZmxpY3RzIHdpdGggcmVjb3ZlcnkiLAor CQkJCQkJCQlhY3RpdmVfcGlkLCBOYW1lU3RyKHNsb3RuYW1lKSkpKTsKKworCQkJCSh2b2lk KSBTZW5kUHJvY1NpZ25hbChhY3RpdmVfcGlkLCBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNU X0xPR0lDQUxTTE9ULCBJbnZhbGlkQmFja2VuZElkKTsKKwkJCQlsYXN0X3NpZ25hbGVkX3Bp ZCA9IGFjdGl2ZV9waWQ7CisJCQl9CisKKwkJCS8qIFdhaXQgdW50aWwgdGhlIHNsb3QgaXMg cmVsZWFzZWQuICovCisJCQlDb25kaXRpb25WYXJpYWJsZVNsZWVwKCZzLT5hY3RpdmVfY3Ys CisJCQkJCQkJCQlXQUlUX0VWRU5UX1JFUExJQ0FUSU9OX1NMT1RfRFJPUCk7CisKKwkJCS8q CisJCQkgKiBSZS1hY3F1aXJlIGxvY2sgYW5kIHN0YXJ0IG92ZXI7IHdlIGV4cGVjdCB0byBp bnZhbGlkYXRlIHRoZQorCQkJICogc2xvdCBuZXh0IHRpbWUgKHVubGVzcyBhbm90aGVyIHBy b2Nlc3MgYWNxdWlyZXMgdGhlIHNsb3QgaW4gdGhlCisJCQkgKiBtZWFudGltZSkuCisJCQkg Ki8KKwkJCUxXTG9ja0FjcXVpcmUoUmVwbGljYXRpb25TbG90Q29udHJvbExvY2ssIExXX1NI QVJFRCk7CisJCQljb250aW51ZTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qCisJCQkgKiBX ZSBob2xkIHRoZSBzbG90IG5vdyBhbmQgaGF2ZSBhbHJlYWR5IGludmFsaWRhdGVkIGl0OyBm bHVzaCBpdAorCQkJICogdG8gZW5zdXJlIHRoYXQgc3RhdGUgcGVyc2lzdHMuCisJCQkgKgor CQkJICogRG9uJ3Qgd2FudCB0byBob2xkIFJlcGxpY2F0aW9uU2xvdENvbnRyb2xMb2NrIGFj cm9zcyBmaWxlCisJCQkgKiBzeXN0ZW0gb3BlcmF0aW9ucywgc28gcmVsZWFzZSBpdCBub3cg YnV0IGJlIHN1cmUgdG8gdGVsbCBjYWxsZXIKKwkJCSAqIHRvIHJlc3RhcnQgZnJvbSBzY3Jh dGNoLgorCQkJICovCisJCQlMV0xvY2tSZWxlYXNlKFJlcGxpY2F0aW9uU2xvdENvbnRyb2xM b2NrKTsKKwkJCXJlbGVhc2VkX2xvY2sgPSB0cnVlOworCisJCQkvKiBNYWtlIHN1cmUgdGhl IGludmFsaWRhdGVkIHN0YXRlIHBlcnNpc3RzIGFjcm9zcyBzZXJ2ZXIgcmVzdGFydCAqLwor CQkJUmVwbGljYXRpb25TbG90TWFya0RpcnR5KCk7CisJCQlSZXBsaWNhdGlvblNsb3RTYXZl KCk7CisJCQlSZXBsaWNhdGlvblNsb3RSZWxlYXNlKCk7CisJCQlwZ3N0YXRfZHJvcF9yZXBs c2xvdChzKTsKKworCQkJZXJlcG9ydChMT0csCisJCQkJCShlcnJtc2coImludmFsaWRhdGlu ZyBzbG90IFwiJXNcIiBiZWNhdXNlIGl0IGNvbmZsaWN0cyB3aXRoIHJlY292ZXJ5IiwgTmFt ZVN0cihzbG90bmFtZSkpKSk7CisKKwkJCS8qIGRvbmUgd2l0aCB0aGlzIHNsb3QgZm9yIG5v dyAqLworCQkJYnJlYWs7CisJCX0KKwl9CisKKwlBc3NlcnQoIXJlbGVhc2VkX2xvY2sgPT0g TFdMb2NrSGVsZEJ5TWVJbk1vZGUoUmVwbGljYXRpb25TbG90Q29udHJvbExvY2ssIExXX1NI QVJFRCkpOworCisJcmV0dXJuIHJlbGVhc2VkX2xvY2s7Cit9CisKKy8qCisgKiBSZXNvbHZl IHJlY292ZXJ5IGNvbmZsaWN0cyB3aXRoIGxvZ2ljYWwgc2xvdHMuCisgKgorICogV2hlbiB4 aWQgaXMgdmFsaWQsIGl0IG1lYW5zIHRoYXQgd2UgYXJlIGFib3V0IHRvIHJlbW92ZSByb3dz IG9sZGVyIHRoYW4geGlkLgorICogVGhlcmVmb3JlIHdlIG5lZWQgdG8gaW52YWxpZGF0ZSBz bG90cyB0aGF0IGRlcGVuZCBvbiBzZWVpbmcgdGhvc2Ugcm93cy4KKyAqIFdoZW4geGlkIGlz IGludmFsaWQsIGludmFsaWRhdGUgYWxsIGxvZ2ljYWwgc2xvdHMuIFRoaXMgaXMgcmVxdWly ZWQgd2hlbiB0aGUKKyAqIG1hc3RlciB3YWxfbGV2ZWwgaXMgc2V0IGJhY2sgdG8gcmVwbGlj YSwgc28gZXhpc3RpbmcgbG9naWNhbCBzbG90cyBuZWVkIHRvCisgKiBiZSBpbnZhbGlkYXRl ZC4KKyAqLwordm9pZAorSW52YWxpZGF0ZUNvbmZsaWN0aW5nTG9naWNhbFJlcGxpY2F0aW9u U2xvdHMoT2lkIGRib2lkLCBUcmFuc2FjdGlvbklkIHhpZCkKK3sKKworCUFzc2VydChtYXhf cmVwbGljYXRpb25fc2xvdHMgPj0gMCk7CisKKwlpZiAobWF4X3JlcGxpY2F0aW9uX3Nsb3Rz ID09IDApCisJCXJldHVybjsKK3Jlc3RhcnQ6CisJTFdMb2NrQWNxdWlyZShSZXBsaWNhdGlv blNsb3RDb250cm9sTG9jaywgTFdfU0hBUkVEKTsKKwlmb3IgKGludCBpID0gMDsgaSA8IG1h eF9yZXBsaWNhdGlvbl9zbG90czsgaSsrKQorCXsKKwkJUmVwbGljYXRpb25TbG90ICpzID0g JlJlcGxpY2F0aW9uU2xvdEN0bC0+cmVwbGljYXRpb25fc2xvdHNbaV07CisKKwkJaWYgKCFz LT5pbl91c2UpCisJCQljb250aW51ZTsKKworCQkvKiBXZSBhcmUgb25seSBkZWFsaW5nIHdp dGggKmxvZ2ljYWwqIHNsb3QgY29uZmxpY3RzLiAqLworCQlpZiAoIVNsb3RJc0xvZ2ljYWwo cykpCisJCQljb250aW51ZTsKKworCQkvKiBub3Qgb3VyIGRhdGFiYXNlIGFuZCB3ZSBkb24n dCB3YW50IGFsbCB0aGUgZGF0YWJhc2UsIHNraXAgKi8KKwkJaWYgKHMtPmRhdGEuZGF0YWJh c2UgIT0gZGJvaWQgJiYgVHJhbnNhY3Rpb25JZElzVmFsaWQoeGlkKSkKKwkJCWNvbnRpbnVl OworCisJCWlmIChJbnZhbGlkYXRlUG9zc2libHlDb25mbGljdGluZ0xvZ2ljYWxSZXBsaWNh dGlvblNsb3QocywgeGlkKSkKKwkJeworCQkJLyogaWYgdGhlIGxvY2sgd2FzIHJlbGVhc2Vk LCB3ZSBuZWVkIHRvIHJlc3RhcnQgZnJvbSBzY3JhdGNoICovCisJCQlnb3RvIHJlc3RhcnQ7 CisJCX0KKwl9CisJTFdMb2NrUmVsZWFzZShSZXBsaWNhdGlvblNsb3RDb250cm9sTG9jayk7 Cit9CisKIC8qCiAgKiBGbHVzaCBhbGwgcmVwbGljYXRpb24gc2xvdHMgdG8gZGlzay4KICAq CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCmluZGV4IGMxMWJiMzcxNmYuLjY0 ZmJkNTJlMzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRl ci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCkBAIC0xMjUz LDYgKzEyNTMsMTQgQEAgU3RhcnRMb2dpY2FsUmVwbGljYXRpb24oU3RhcnRSZXBsaWNhdGlv bkNtZCAqY21kKQogCiAJUmVwbGljYXRpb25TbG90QWNxdWlyZShjbWQtPnNsb3RuYW1lLCB0 cnVlKTsKIAorCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlSZXBsaWNhdGlvblNsb3Qt PmRhdGEueG1pbikKKwkJICYmICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVJlcGxpY2F0aW9u U2xvdC0+ZGF0YS5jYXRhbG9nX3htaW4pKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJj b2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCSBl cnJtc2coImNhbm5vdCByZWFkIGZyb20gbG9naWNhbCByZXBsaWNhdGlvbiBzbG90IFwiJXNc IiIsCisJCQkJCQljbWQtPnNsb3RuYW1lKSwKKwkJCQkgZXJyZGV0YWlsKCJUaGlzIHNsb3Qg aGFzIGJlZW4gaW52YWxpZGF0ZWQgYmVjYXVzZSBpdCB3YXMgY29uZmxpY3Rpbmcgd2l0aCBy ZWNvdmVyeS4iKSkpOworCiAJaWYgKFhMb2dSZWNQdHJJc0ludmFsaWQoTXlSZXBsaWNhdGlv blNsb3QtPmRhdGEucmVzdGFydF9sc24pKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJj b2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMgYi9zcmMvYmFja2Vu ZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYwppbmRleCAwMTc2ZjMwMjcwLi5kNjhiNzUyYzkx IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYworKysg Yi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYwpAQCAtMzQ3Nyw2ICszNDc3 LDEwIEBAIFNpZ25hbFZpcnR1YWxUcmFuc2FjdGlvbihWaXJ0dWFsVHJhbnNhY3Rpb25JZCB2 eGlkLCBQcm9jU2lnbmFsUmVhc29uIHNpZ21vZGUsCiAKIAkJR0VUX1ZYSURfRlJPTV9QR1BS T0MocHJvY3Z4aWQsICpwcm9jKTsKIAorCQkvKgorCQkgKiBOb3RlOiB2eGlkLmxvY2FsVHJh bnNhY3Rpb25JZCBjYW4gYmUgaW52YWxpZCwgd2hpY2ggbWVhbnMgdGhlCisJCSAqIHJlcXVl c3QgaXMgdG8gc2lnbmFsIHRoZSBwaWQgdGhhdCBpcyBub3QgcnVubmluZyBhIHRyYW5zYWN0 aW9uLgorCQkgKi8KIAkJaWYgKHByb2N2eGlkLmJhY2tlbmRJZCA9PSB2eGlkLmJhY2tlbmRJ ZCAmJgogCQkJcHJvY3Z4aWQubG9jYWxUcmFuc2FjdGlvbklkID09IHZ4aWQubG9jYWxUcmFu c2FjdGlvbklkKQogCQl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9w cm9jc2lnbmFsLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKaW5k ZXggNzc2NzY1N2YyNy4uMWIzYmY5NDNjMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvcHJvY3NpZ25hbC5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3By b2NzaWduYWwuYwpAQCAtNjY5LDYgKzY2OSw5IEBAIHByb2NzaWduYWxfc2lndXNyMV9oYW5k bGVyKFNJR05BTF9BUkdTKQogCWlmIChDaGVja1Byb2NTaWduYWwoUFJPQ1NJR19SRUNPVkVS WV9DT05GTElDVF9TTkFQU0hPVCkpCiAJCVJlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUFJP Q1NJR19SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVCk7CiAKKwlpZiAoQ2hlY2tQcm9jU2ln bmFsKFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1QpKQorCQlSZWNvdmVy eUNvbmZsaWN0SW50ZXJydXB0KFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNM T1QpOworCiAJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNU X1NUQVJUVVBfREVBRExPQ0spKQogCQlSZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0KFBST0NT SUdfUkVDT1ZFUllfQ09ORkxJQ1RfU1RBUlRVUF9ERUFETE9DSyk7CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYyBiL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL3N0YW5kYnkuYwppbmRleCBmNDMyMjlkZmRhLi41NTM5NTM5NTlkIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMKKysrIGIvc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAi dXRpbHMvcHNfc3RhdHVzLmgiCiAjaW5jbHVkZSAidXRpbHMvdGltZW91dC5oIgogI2luY2x1 ZGUgInV0aWxzL3RpbWVzdGFtcC5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Nsb3QuaCIK IAogLyogVXNlci1zZXR0YWJsZSBHVUMgcGFyYW1ldGVycyAqLwogaW50CQkJdmFjdXVtX2Rl ZmVyX2NsZWFudXBfYWdlOwpAQCAtNDc1LDYgKzQ3Niw3IEBAIFJlc29sdmVSZWNvdmVyeUNv bmZsaWN0V2l0aFZpcnR1YWxYSURzKFZpcnR1YWxUcmFuc2FjdGlvbklkICp3YWl0bGlzdCwK ICAqLwogdm9pZAogUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoVHJhbnNh Y3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCWJvb2wgb25DYXRh bG9nQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nLAogCQkJCQkJCQkJUmVsRmlsZUxvY2F0 b3IgbG9jYXRvcikKIHsKIAlWaXJ0dWFsVHJhbnNhY3Rpb25JZCAqYmFja2VuZHM7CkBAIC00 OTksNiArNTAxLDkgQEAgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoVHJh bnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKIAkJCQkJCQkJCQkgICBQUk9D U0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBTSE9ULAogCQkJCQkJCQkJCSAgIFdBSVRfRVZF TlRfUkVDT1ZFUllfQ09ORkxJQ1RfU05BUFNIT1QsCiAJCQkJCQkJCQkJICAgdHJ1ZSk7CisK KwlpZiAob25DYXRhbG9nQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nKQorCQlJbnZhbGlk YXRlQ29uZmxpY3RpbmdMb2dpY2FsUmVwbGljYXRpb25TbG90cyhsb2NhdG9yLmRiT2lkLCBz bmFwc2hvdENvbmZsaWN0SG9yaXpvbik7CiB9CiAKIC8qCkBAIC01MDcsNiArNTEyLDcgQEAg UmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoVHJhbnNhY3Rpb25JZCBzbmFw c2hvdENvbmZsaWN0SG9yaXpvbiwKICAqLwogdm9pZAogUmVzb2x2ZVJlY292ZXJ5Q29uZmxp Y3RXaXRoU25hcHNob3RGdWxsWGlkKEZ1bGxUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxp Y3RIb3Jpem9uLAorCQkJCQkJCQkJCSAgIGJvb2wgb25DYXRhbG9nQWNjZXNzaWJsZUluTG9n aWNhbERlY29kaW5nLAogCQkJCQkJCQkJCSAgIFJlbEZpbGVMb2NhdG9yIGxvY2F0b3IpCiB7 CiAJLyoKQEAgLTUyNSw3ICs1MzEsOSBAQCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhT bmFwc2hvdEZ1bGxYaWQoRnVsbFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcgog CQlUcmFuc2FjdGlvbklkIHRydW5jYXRlZDsKIAogCQl0cnVuY2F0ZWQgPSBYaWRGcm9tRnVs bFRyYW5zYWN0aW9uSWQoc25hcHNob3RDb25mbGljdEhvcml6b24pOwotCQlSZXNvbHZlUmVj b3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh0cnVuY2F0ZWQsIGxvY2F0b3IpOworCQlSZXNv bHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh0cnVuY2F0ZWQsCisJCQkJCQkJCQkJ CW9uQ2F0YWxvZ0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZywKKwkJCQkJCQkJCQkJbG9j YXRvcik7CiAJfQogfQogCkBAIC0xNDg2LDYgKzE0OTQsOSBAQCBnZXRfcmVjb3ZlcnlfY29u ZmxpY3RfZGVzYyhQcm9jU2lnbmFsUmVhc29uIHJlYXNvbikKIAkJY2FzZSBQUk9DU0lHX1JF Q09WRVJZX0NPTkZMSUNUX1NOQVBTSE9UOgogCQkJcmVhc29uRGVzYyA9IF8oInJlY292ZXJ5 IGNvbmZsaWN0IG9uIHNuYXBzaG90Iik7CiAJCQlicmVhazsKKwkJY2FzZSBQUk9DU0lHX1JF Q09WRVJZX0NPTkZMSUNUX0xPR0lDQUxTTE9UOgorCQkJcmVhc29uRGVzYyA9IF8oInJlY292 ZXJ5IGNvbmZsaWN0IG9uIHJlcGxpY2F0aW9uIHNsb3QiKTsKKwkJCWJyZWFrOwogCQljYXNl IFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU1RBUlRVUF9ERUFETE9DSzoKIAkJCXJlYXNv bkRlc2MgPSBfKCJyZWNvdmVyeSBjb25mbGljdCBvbiBidWZmZXIgZGVhZGxvY2siKTsKIAkJ CWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3Jj L2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCmluZGV4IDMwODIwOTNkMWUuLmQ5MDBlZWQ5ZjQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFj a2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTI0NzAsNiArMjQ3MCw5IEBAIGVycmRldGFpbF9y ZWNvdmVyeV9jb25mbGljdCh2b2lkKQogCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJ Q1RfU05BUFNIT1Q6CiAJCQllcnJkZXRhaWwoIlVzZXIgcXVlcnkgbWlnaHQgaGF2ZSBuZWVk ZWQgdG8gc2VlIHJvdyB2ZXJzaW9ucyB0aGF0IG11c3QgYmUgcmVtb3ZlZC4iKTsKIAkJCWJy ZWFrOworCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1Q6CisJ CQllcnJkZXRhaWwoIlVzZXIgd2FzIHVzaW5nIHRoZSBsb2dpY2FsIHNsb3QgdGhhdCBtdXN0 IGJlIGRyb3BwZWQuIik7CisJCQlicmVhazsKIAkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NP TkZMSUNUX1NUQVJUVVBfREVBRExPQ0s6CiAJCQllcnJkZXRhaWwoIlVzZXIgdHJhbnNhY3Rp b24gY2F1c2VkIGJ1ZmZlciBkZWFkbG9jayB3aXRoIHJlY292ZXJ5LiIpOwogCQkJYnJlYWs7 CkBAIC0zMDM5LDYgKzMwNDIsMjUgQEAgUmVjb3ZlcnlDb25mbGljdEludGVycnVwdChQcm9j U2lnbmFsUmVhc29uIHJlYXNvbikKIAkJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElD VF9MT0NLOgogCQkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1RBQkxFU1BBQ0U6 CiAJCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU05BUFNIT1Q6CisJCQljYXNl IFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1Q6CisJCQkJLyoKKwkJCQkg KiBGb3IgY29uZmxpY3RzIHRoYXQgcmVxdWlyZSBhIGxvZ2ljYWwgc2xvdCB0byBiZSBpbnZh bGlkYXRlZCwgdGhlCisJCQkJICogcmVxdWlyZW1lbnQgaXMgZm9yIHRoZSBzaWduYWwgcmVj ZWl2ZXIgdG8gcmVsZWFzZSB0aGUgc2xvdCwKKwkJCQkgKiBzbyB0aGF0IGl0IGNvdWxkIGJl IGludmFsaWRhdGVkIGJ5IHRoZSBzaWduYWwgc2VuZGVyLiBTbyBmb3IKKwkJCQkgKiBub3Jt YWwgYmFja2VuZHMsIHRoZSB0cmFuc2FjdGlvbiBzaG91bGQgYmUgYWJvcnRlZCwganVzdAor CQkJCSAqIGxpa2UgZm9yIG90aGVyIHJlY292ZXJ5IGNvbmZsaWN0cy4gQnV0IGlmIGl0J3Mg d2Fsc2VuZGVyIG9uCisJCQkJICogc3RhbmRieSwgdGhlbiBpdCBoYXMgdG8gYmUga2lsbGVk IHNvIGFzIHRvIHJlbGVhc2UgYW4KKwkJCQkgKiBhY3F1aXJlZCBsb2dpY2FsIHNsb3QuCisJ CQkJICovCisJCQkJaWYgKGFtX2Nhc2NhZGluZ193YWxzZW5kZXIgJiYKKwkJCQkJcmVhc29u ID09IFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1QgJiYKKwkJCQkJTXlS ZXBsaWNhdGlvblNsb3QgJiYgU2xvdElzTG9naWNhbChNeVJlcGxpY2F0aW9uU2xvdCkpCisJ CQkJeworCQkJCQlSZWNvdmVyeUNvbmZsaWN0UGVuZGluZyA9IHRydWU7CisJCQkJCVF1ZXJ5 Q2FuY2VsUGVuZGluZyA9IHRydWU7CisJCQkJCUludGVycnVwdFBlbmRpbmcgPSB0cnVlOwor CQkJCQlicmVhazsKKwkJCQl9CiAKIAkJCQkvKgogCQkJCSAqIElmIHdlIGFyZW4ndCBpbiBh IHRyYW5zYWN0aW9uIGFueSBsb25nZXIgdGhlbiBpZ25vcmUuCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfZGF0YWJhc2UuYyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9kYXRhYmFzZS5jCmluZGV4IGQ5Mjc1NjExZjAuLjc2 MGQyY2Q4ODIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3Rh dF9kYXRhYmFzZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9k YXRhYmFzZS5jCkBAIC0xMDksNiArMTA5LDkgQEAgcGdzdGF0X3JlcG9ydF9yZWNvdmVyeV9j b25mbGljdChpbnQgcmVhc29uKQogCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1Rf QlVGRkVSUElOOgogCQkJZGJlbnRyeS0+bl9jb25mbGljdF9idWZmZXJwaW4rKzsKIAkJCWJy ZWFrOworCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1Q6CisJ CQlkYmVudHJ5LT5uX2NvbmZsaWN0X2xvZ2ljYWxzbG90Kys7CisJCQlicmVhazsKIAkJY2Fz ZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NUQVJUVVBfREVBRExPQ0s6CiAJCQlkYmVu dHJ5LT5uX2NvbmZsaWN0X3N0YXJ0dXBfZGVhZGxvY2srKzsKIAkJCWJyZWFrOwpAQCAtMzg3 LDYgKzM5MCw3IEBAIHBnc3RhdF9kYXRhYmFzZV9mbHVzaF9jYihQZ1N0YXRfRW50cnlSZWYg KmVudHJ5X3JlZiwgYm9vbCBub3dhaXQpCiAJUEdTVEFUX0FDQ1VNX0RCQ09VTlQobl9jb25m bGljdF90YWJsZXNwYWNlKTsKIAlQR1NUQVRfQUNDVU1fREJDT1VOVChuX2NvbmZsaWN0X2xv Y2spOwogCVBHU1RBVF9BQ0NVTV9EQkNPVU5UKG5fY29uZmxpY3Rfc25hcHNob3QpOworCVBH U1RBVF9BQ0NVTV9EQkNPVU5UKG5fY29uZmxpY3RfbG9naWNhbHNsb3QpOwogCVBHU1RBVF9B Q0NVTV9EQkNPVU5UKG5fY29uZmxpY3RfYnVmZmVycGluKTsKIAlQR1NUQVRfQUNDVU1fREJD T1VOVChuX2NvbmZsaWN0X3N0YXJ0dXBfZGVhZGxvY2spOwogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9wZ3N0YXRmdW5jcy5jCmluZGV4IGFlMzM2NWQ5MTcuLjc0OTkxMmMxZjIgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jCkBAIC0xNDMyLDYgKzE0MzIsMjEgQEAgcGdf c3RhdF9nZXRfZGJfY29uZmxpY3Rfc25hcHNob3QoUEdfRlVOQ1RJT05fQVJHUykKIAlQR19S RVRVUk5fSU5UNjQocmVzdWx0KTsKIH0KIAorRGF0dW0KK3BnX3N0YXRfZ2V0X2RiX2NvbmZs aWN0X2xvZ2ljYWxzbG90KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJT2lkCQkJZGJpZCA9IFBH X0dFVEFSR19PSUQoMCk7CisJaW50NjQJCXJlc3VsdDsKKwlQZ1N0YXRfU3RhdERCRW50cnkg KmRiZW50cnk7CisKKwlpZiAoKGRiZW50cnkgPSBwZ3N0YXRfZmV0Y2hfc3RhdF9kYmVudHJ5 KGRiaWQpKSA9PSBOVUxMKQorCQlyZXN1bHQgPSAwOworCWVsc2UKKwkJcmVzdWx0ID0gKGlu dDY0KSAoZGJlbnRyeS0+bl9jb25mbGljdF9sb2dpY2Fsc2xvdCk7CisKKwlQR19SRVRVUk5f SU5UNjQocmVzdWx0KTsKK30KKwogRGF0dW0KIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2J1 ZmZlcnBpbihQR19GVU5DVElPTl9BUkdTKQogewpAQCAtMTQ3NSw2ICsxNDkwLDcgQEAgcGdf c3RhdF9nZXRfZGJfY29uZmxpY3RfYWxsKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCXJlc3VsdCA9 IChpbnQ2NCkgKGRiZW50cnktPm5fY29uZmxpY3RfdGFibGVzcGFjZSArCiAJCQkJCQkgIGRi ZW50cnktPm5fY29uZmxpY3RfbG9jayArCiAJCQkJCQkgIGRiZW50cnktPm5fY29uZmxpY3Rf c25hcHNob3QgKworCQkJCQkJICBkYmVudHJ5LT5uX2NvbmZsaWN0X2xvZ2ljYWxzbG90ICsK IAkJCQkJCSAgZGJlbnRyeS0+bl9jb25mbGljdF9idWZmZXJwaW4gKwogCQkJCQkJICBkYmVu dHJ5LT5uX2NvbmZsaWN0X3N0YXJ0dXBfZGVhZGxvY2spOwogCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w cm9jLmRhdAppbmRleCBmOTMwMWIyNjI3Li4xMDViMDFkNjhlIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHJvYy5kYXQKQEAgLTU1MzksNiArNTUzOSwxMSBAQAogICBwcm9uYW1lID0+ICdwZ19z dGF0X2dldF9kYl9jb25mbGljdF9zbmFwc2hvdCcsIHByb3ZvbGF0aWxlID0+ICdzJywKICAg cHJvcGFyYWxsZWwgPT4gJ3InLCBwcm9yZXR0eXBlID0+ICdpbnQ4JywgcHJvYXJndHlwZXMg PT4gJ29pZCcsCiAgIHByb3NyYyA9PiAncGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rfc25hcHNo b3QnIH0sCit7IG9pZCA9PiAnOTkwMScsCisgIGRlc2NyID0+ICdzdGF0aXN0aWNzOiByZWNv dmVyeSBjb25mbGljdHMgaW4gZGF0YWJhc2UgY2F1c2VkIGJ5IGxvZ2ljYWwgcmVwbGljYXRp b24gc2xvdCcsCisgIHByb25hbWUgPT4gJ3BnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2xvZ2lj YWxzbG90JywgcHJvdm9sYXRpbGUgPT4gJ3MnLAorICBwcm9wYXJhbGxlbCA9PiAncicsIHBy b3JldHR5cGUgPT4gJ2ludDgnLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywKKyAgcHJvc3JjID0+ ICdwZ19zdGF0X2dldF9kYl9jb25mbGljdF9sb2dpY2Fsc2xvdCcgfSwKIHsgb2lkID0+ICcz MDY4JywKICAgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6IHJlY292ZXJ5IGNvbmZsaWN0cyBpbiBk YXRhYmFzZSBjYXVzZWQgYnkgc2hhcmVkIGJ1ZmZlciBwaW4nLAogICBwcm9uYW1lID0+ICdw Z19zdGF0X2dldF9kYl9jb25mbGljdF9idWZmZXJwaW4nLCBwcm92b2xhdGlsZSA9PiAncycs CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wZ3N0YXQuaCBiL3NyYy9pbmNsdWRlL3Bnc3Rh dC5oCmluZGV4IDllMmNlNmYwMTEuLjBmNGFjMTJmODkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3Bnc3RhdC5oCisrKyBiL3NyYy9pbmNsdWRlL3Bnc3RhdC5oCkBAIC0yOTEsNiArMjkx LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X1N0YXREQkVudHJ5CiAJUGdTdGF0X0NvdW50 ZXIgbl9jb25mbGljdF90YWJsZXNwYWNlOwogCVBnU3RhdF9Db3VudGVyIG5fY29uZmxpY3Rf bG9jazsKIAlQZ1N0YXRfQ291bnRlciBuX2NvbmZsaWN0X3NuYXBzaG90OworCVBnU3RhdF9D b3VudGVyIG5fY29uZmxpY3RfbG9naWNhbHNsb3Q7CiAJUGdTdGF0X0NvdW50ZXIgbl9jb25m bGljdF9idWZmZXJwaW47CiAJUGdTdGF0X0NvdW50ZXIgbl9jb25mbGljdF9zdGFydHVwX2Rl YWRsb2NrOwogCVBnU3RhdF9Db3VudGVyIG5fdGVtcF9maWxlczsKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L3Nsb3QuaAppbmRleCA2NWYyYzc0MjM5Li4wZWQxZDhhZjI4IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vc2xvdC5oCkBAIC0yMTYsNiArMjE2LDcgQEAgZXh0ZXJuIFhMb2dSZWNQdHIgUmVwbGlj YXRpb25TbG90c0NvbXB1dGVMb2dpY2FsUmVzdGFydExTTih2b2lkKTsKIGV4dGVybiBib29s IFJlcGxpY2F0aW9uU2xvdHNDb3VudERCU2xvdHMoT2lkIGRib2lkLCBpbnQgKm5zbG90cywg aW50ICpuYWN0aXZlKTsKIGV4dGVybiB2b2lkIFJlcGxpY2F0aW9uU2xvdHNEcm9wREJTbG90 cyhPaWQgZGJvaWQpOwogZXh0ZXJuIGJvb2wgSW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRp b25TbG90cyhYTG9nU2VnTm8gb2xkZXN0U2Vnbm8pOworZXh0ZXJuIHZvaWQgSW52YWxpZGF0 ZUNvbmZsaWN0aW5nTG9naWNhbFJlcGxpY2F0aW9uU2xvdHMoT2lkIGRib2lkLCBUcmFuc2Fj dGlvbklkIHhpZCk7CiBleHRlcm4gUmVwbGljYXRpb25TbG90ICpTZWFyY2hOYW1lZFJlcGxp Y2F0aW9uU2xvdChjb25zdCBjaGFyICpuYW1lLCBib29sIG5lZWRfbG9jayk7CiBleHRlcm4g aW50CVJlcGxpY2F0aW9uU2xvdEluZGV4KFJlcGxpY2F0aW9uU2xvdCAqc2xvdCk7CiBleHRl cm4gYm9vbCBSZXBsaWNhdGlvblNsb3ROYW1lKGludCBpbmRleCwgTmFtZSBuYW1lKTsKQEAg LTIyNyw1ICsyMjgsNiBAQCBleHRlcm4gdm9pZCBDaGVja1BvaW50UmVwbGljYXRpb25TbG90 cyh2b2lkKTsKIAogZXh0ZXJuIHZvaWQgQ2hlY2tTbG90UmVxdWlyZW1lbnRzKHZvaWQpOwog ZXh0ZXJuIHZvaWQgQ2hlY2tTbG90UGVybWlzc2lvbnModm9pZCk7CitleHRlcm4gdm9pZCBS ZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhMb2dpY2FsU2xvdHMoT2lkIGRib2lkLCBUcmFu c2FjdGlvbklkIHhpZCwgY2hhciAqcmVhc29uKTsKIAogI2VuZGlmCQkJCQkJCS8qIFNMT1Rf SCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmggYi9z cmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaAppbmRleCBlZTYzNjkwMGYzLi41NjA5 NmJkM2UyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaAor KysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaApAQCAtNDEsNiArNDEsNyBA QCB0eXBlZGVmIGVudW0KIAlQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1RBQkxFU1BBQ0Us CiAJUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0NLLAogCVBST0NTSUdfUkVDT1ZFUllf Q09ORkxJQ1RfU05BUFNIT1QsCisJUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FM U0xPVCwKIAlQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0JVRkZFUlBJTiwKIAlQUk9DU0lH X1JFQ09WRVJZX0NPTkZMSUNUX1NUQVJUVVBfREVBRExPQ0ssCiAKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3N0b3JhZ2Uvc3RhbmRieS5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9zdGFu ZGJ5LmgKaW5kZXggZTQ2YzkzNGM1Ni4uYmU4NmExMjQ2ZiAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvc3RvcmFnZS9zdGFuZGJ5LmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9zdGFu ZGJ5LmgKQEAgLTMwLDggKzMwLDEwIEBAIGV4dGVybiB2b2lkIEluaXRSZWNvdmVyeVRyYW5z YWN0aW9uRW52aXJvbm1lbnQodm9pZCk7CiBleHRlcm4gdm9pZCBTaHV0ZG93blJlY292ZXJ5 VHJhbnNhY3Rpb25FbnZpcm9ubWVudCh2b2lkKTsKIAogZXh0ZXJuIHZvaWQgUmVzb2x2ZVJl Y292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZs aWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkJCWJvb2wgb25DYXRhbG9nQWNjZXNzaWJsZUluTG9n aWNhbERlY29kaW5nLAogCQkJCQkJCQkJCQkJUmVsRmlsZUxvY2F0b3IgbG9jYXRvcik7CiBl eHRlcm4gdm9pZCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdEZ1bGxYaWQo RnVsbFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCQkJ CQkJICAgYm9vbCBvbkNhdGFsb2dBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcsCiAJCQkJ CQkJCQkJCQkJICAgUmVsRmlsZUxvY2F0b3IgbG9jYXRvcik7CiBleHRlcm4gdm9pZCBSZXNv bHZlUmVjb3ZlcnlDb25mbGljdFdpdGhUYWJsZXNwYWNlKE9pZCB0c2lkKTsKIGV4dGVybiB2 b2lkIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aERhdGFiYXNlKE9pZCBkYmlkKTsKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0IGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKaW5kZXggMzdjMWM4NjQ3My4uMmVlZDA4 NjE5ZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKQEAgLTE4NjgsNyAr MTg2OCw4IEBAIHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3RzfCBTRUxFQ1QgZC5vaWQgQVMg ZGF0aWQsCiAgICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfbG9jayhkLm9pZCkgQVMgY29u ZmxfbG9jaywKICAgICBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9zbmFwc2hvdChkLm9pZCkg QVMgY29uZmxfc25hcHNob3QsCiAgICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfYnVmZmVy cGluKGQub2lkKSBBUyBjb25mbF9idWZmZXJwaW4sCi0gICAgcGdfc3RhdF9nZXRfZGJfY29u ZmxpY3Rfc3RhcnR1cF9kZWFkbG9jayhkLm9pZCkgQVMgY29uZmxfZGVhZGxvY2sKKyAgICBw Z19zdGF0X2dldF9kYl9jb25mbGljdF9zdGFydHVwX2RlYWRsb2NrKGQub2lkKSBBUyBjb25m bF9kZWFkbG9jaywKKyAgICBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9sb2dpY2Fsc2xvdChk Lm9pZCkgQVMgY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90CiAgICBGUk9NIHBnX2RhdGFiYXNl IGQ7CiBwZ19zdGF0X2dzc2FwaXwgU0VMRUNUIHMucGlkLAogICAgIHMuZ3NzX2F1dGggQVMg Z3NzX2F1dGhlbnRpY2F0ZWQsCi0tIAoyLjM0LjEKCg== --------------ulL7c4xqDnt0SfJwoobL67iT Content-Type: text/plain; charset=UTF-8; name="v27-0001-Add-info-in-WAL-records-in-preparation-for-logic.patch" Content-Disposition: attachment; filename*0="v27-0001-Add-info-in-WAL-records-in-preparation-for-logic.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAzNDVkY2Y2ZDQwOTE5YTJmMjllMTkxZjllMjcyMTQ1YzBjMjA0Y2ExIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVGh1LCAxIERlYyAyMDIyIDEwOjE0OjMwICswMDAwClN1YmplY3Q6IFtQQVRD SCB2MjcgMS82XSBBZGQgaW5mbyBpbiBXQUwgcmVjb3JkcyBpbiBwcmVwYXJhdGlvbiBmb3Ig bG9naWNhbAogc2xvdCBjb25mbGljdCBoYW5kbGluZy4KCldoZW4gYSBXQUwgcmVwbGF5IG9u IHN0YW5kYnkgaW5kaWNhdGVzIHRoYXQgYSBjYXRhbG9nIHRhYmxlIHR1cGxlIGlzCnRvIGJl IGRlbGV0ZWQgYnkgYW4geGlkIHRoYXQgaXMgZ3JlYXRlciB0aGFuIGEgbG9naWNhbCBzbG90 J3MKY2F0YWxvZ194bWluLCB0aGVuIHRoYXQgbWVhbnMgdGhlIHNsb3QncyBjYXRhbG9nX3ht aW4gY29uZmxpY3RzIHdpdGgKdGhlIHhpZCwgYW5kIHdlIG5lZWQgdG8gaGFuZGxlIHRoZSBj b25mbGljdC4gIFdoaWxlIHN1YnNlcXVlbnQgY29tbWl0cwp3aWxsIGRvIHRoZSBhY3R1YWwg Y29uZmxpY3QgaGFuZGxpbmcsIHRoaXMgY29tbWl0IGFkZHMgYSBuZXcgZmllbGQKb25DYXRh bG9nQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nIGluIHN1Y2ggV0FMIHJlY29yZHMsIHRo YXQgaXMgdHJ1ZQpmb3IgY2F0YWxvZyB0YWJsZXMsIHNvIGFzIHRvIGFycmFuZ2UgZm9yIGNv bmZsaWN0IGhhbmRsaW5nLgoKQXV0aG9yOiBBbmRyZXMgRnJldW5kIChpbiBhbiBvbGRlciB2 ZXJzaW9uKSwgQW1pdCBLaGFuZGVrYXIsIEJlcnRyYW5kCkRyb3V2b3QKUmV2aWV3ZWQtQnk6 IEJlcnRyYW5kIERyb3V2b3QsIEFuZHJlcyBGcmV1bmQsIFJvYmVydCBIYWFzLCBGYWJyaXpp byBkZQpSb3llcyBNZWxsbwotLS0KIGNvbnRyaWIvdGVzdF9kZWNvZGluZy9leHBlY3RlZC9k ZGwub3V0ICB8IDI5ICsrKysrKysrKysrKysKIGNvbnRyaWIvdGVzdF9kZWNvZGluZy9zcWwv ZGRsLnNxbCAgICAgICB8ICA3ICsrKysKIGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAg ICAgICAgICAgICB8IDExICsrKysrCiBzcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3JlbG9w dGlvbnMuYyAgfCAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYyAg ICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaGluc2VydC5jICAgIHwg IDEgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgICAgICAgIHwgIDQgKy0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICAgICB8ICAxICsKIHNyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYyB8ICAzICstCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvbmJ0cmVlL25idHBhZ2UuYyAgICAgfCAgMiArCiBzcmMvYmFja2VuZC9hY2Nl c3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jICAgfCAgMSArCiBzcmMvYmFja2VuZC9jYXRhbG9nL2lu ZGV4LmMgICAgICAgICAgICAgfCAxNCArKysrKy0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy90 YWJsZWNtZHMuYyAgICAgICAgfCA1NSArKysrKysrKysrKysrKysrKysrKysrKystCiBzcmMv aW5jbHVkZS9hY2Nlc3MvZ2lzdHhsb2cuaCAgICAgICAgICAgfCAgMiArCiBzcmMvaW5jbHVk ZS9hY2Nlc3MvaGFzaF94bG9nLmggICAgICAgICAgfCAgMSArCiBzcmMvaW5jbHVkZS9hY2Nl c3MvaGVhcGFtX3hsb2cuaCAgICAgICAgfCAgNSArKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9u YnR4bG9nLmggICAgICAgICAgICB8ICAyICsKIHNyYy9pbmNsdWRlL2FjY2Vzcy9zcGd4bG9n LmggICAgICAgICAgICB8ICAxICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfaW5kZXguaCAg ICAgICAgICB8ICAyICsKIHNyYy9pbmNsdWRlL3V0aWxzL3JlbC5oICAgICAgICAgICAgICAg ICB8IDM0ICsrKysrKysrKysrKysrKwogMjAgZmlsZXMgY2hhbmdlZCwgMTY5IGluc2VydGlv bnMoKyksIDkgZGVsZXRpb25zKC0pCiAgMTEuMiUgY29udHJpYi90ZXN0X2RlY29kaW5nL2V4 cGVjdGVkLwogICA2LjYlIGNvbnRyaWIvdGVzdF9kZWNvZGluZy9zcWwvCiAgIDYuNSUgZG9j L3NyYy9zZ21sLwogICA4LjMlIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwLwogICA3LjElIHNy Yy9iYWNrZW5kL2FjY2Vzcy8KICAgNi4wJSBzcmMvYmFja2VuZC9jYXRhbG9nLwogIDIyLjYl IHNyYy9iYWNrZW5kL2NvbW1hbmRzLwogICA4LjUlIHNyYy9pbmNsdWRlL2FjY2Vzcy8KICAy MS40JSBzcmMvaW5jbHVkZS91dGlscy8KCmRpZmYgLS1naXQgYS9jb250cmliL3Rlc3RfZGVj b2RpbmcvZXhwZWN0ZWQvZGRsLm91dCBiL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9leHBlY3Rl ZC9kZGwub3V0CmluZGV4IDlhMjhiNWRkYzUuLjQwY2YyZjRkYzQgMTAwNjQ0Ci0tLSBhL2Nv bnRyaWIvdGVzdF9kZWNvZGluZy9leHBlY3RlZC9kZGwub3V0CisrKyBiL2NvbnRyaWIvdGVz dF9kZWNvZGluZy9leHBlY3RlZC9kZGwub3V0CkBAIC00ODMsNiArNDgzLDcgQEAgQ1JFQVRF IFRBQkxFIHJlcGxpY2F0aW9uX21ldGFkYXRhICgKICkKIFdJVEggKHVzZXJfY2F0YWxvZ190 YWJsZSA9IHRydWUpCiA7CitDUkVBVEUgSU5ERVggcmVwbGljYXRpb25fbWV0YWRhdGFfaWR4 MSBvbiByZXBsaWNhdGlvbl9tZXRhZGF0YShyZWxhdGlvbik7CiBcZCsgcmVwbGljYXRpb25f bWV0YWRhdGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBUYWJsZSAicHVibGljLnJlcGxpY2F0aW9uX21ldGFkYXRhIgogICBDb2x1bW4gIHwg IFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgICAgICAgICAgICAgICAgICAgICBE ZWZhdWx0ICAgICAgICAgICAgICAgICAgICAgIHwgU3RvcmFnZSAgfCBTdGF0cyB0YXJnZXQg fCBEZXNjcmlwdGlvbiAKQEAgLTQ5Miw4ICs0OTMsMTUgQEAgV0lUSCAodXNlcl9jYXRhbG9n X3RhYmxlID0gdHJ1ZSkKICBvcHRpb25zICB8IHRleHRbXSAgfCAgICAgICAgICAgfCAgICAg ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IGV4dGVuZGVkIHwgICAgICAgICAgICAgIHwgCiBJbmRleGVzOgogICAgICJyZXBsaWNh dGlvbl9tZXRhZGF0YV9wa2V5IiBQUklNQVJZIEtFWSwgYnRyZWUgKGlkKQorICAgICJyZXBs aWNhdGlvbl9tZXRhZGF0YV9pZHgxIiBidHJlZSAocmVsYXRpb24pCiBPcHRpb25zOiB1c2Vy X2NhdGFsb2dfdGFibGU9dHJ1ZQogCitTRUxFQ1QgYm9vbF9hbmQoaW5kaXN1c2VyY2F0YWxv ZykgZnJvbSBwZ19pbmRleCB3aGVyZSBpbmRyZWxpZCA9ICdyZXBsaWNhdGlvbl9tZXRhZGF0 YSc6OnJlZ2NsYXNzOworIGJvb2xfYW5kIAorLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKwog SU5TRVJUIElOVE8gcmVwbGljYXRpb25fbWV0YWRhdGEocmVsYXRpb24sIG9wdGlvbnMpCiBW QUxVRVMgKCdmb28nLCBBUlJBWVsnYScsICdiJ10pOwogQUxURVIgVEFCTEUgcmVwbGljYXRp b25fbWV0YWRhdGEgUkVTRVQgKHVzZXJfY2F0YWxvZ190YWJsZSk7CkBAIC01MDYsNiArNTE0 LDEzIEBAIEFMVEVSIFRBQkxFIHJlcGxpY2F0aW9uX21ldGFkYXRhIFJFU0VUICh1c2VyX2Nh dGFsb2dfdGFibGUpOwogIG9wdGlvbnMgIHwgdGV4dFtdICB8ICAgICAgICAgICB8ICAgICAg ICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgZXh0ZW5kZWQgfCAgICAgICAgICAgICAgfCAKIEluZGV4ZXM6CiAgICAgInJlcGxpY2F0 aW9uX21ldGFkYXRhX3BrZXkiIFBSSU1BUlkgS0VZLCBidHJlZSAoaWQpCisgICAgInJlcGxp Y2F0aW9uX21ldGFkYXRhX2lkeDEiIGJ0cmVlIChyZWxhdGlvbikKKworU0VMRUNUIGJvb2xf b3IoaW5kaXN1c2VyY2F0YWxvZykgZnJvbSBwZ19pbmRleCB3aGVyZSBpbmRyZWxpZCA9ICdy ZXBsaWNhdGlvbl9tZXRhZGF0YSc6OnJlZ2NsYXNzOworIGJvb2xfb3IgCistLS0tLS0tLS0K KyBmCisoMSByb3cpCiAKIElOU0VSVCBJTlRPIHJlcGxpY2F0aW9uX21ldGFkYXRhKHJlbGF0 aW9uLCBvcHRpb25zKQogVkFMVUVTICgnYmFyJywgQVJSQVlbJ2EnLCAnYiddKTsKQEAgLTUx OSw4ICs1MzQsMTUgQEAgQUxURVIgVEFCTEUgcmVwbGljYXRpb25fbWV0YWRhdGEgU0VUICh1 c2VyX2NhdGFsb2dfdGFibGUgPSB0cnVlKTsKICBvcHRpb25zICB8IHRleHRbXSAgfCAgICAg ICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IGV4dGVuZGVkIHwgICAgICAgICAgICAgIHwgCiBJbmRleGVzOgog ICAgICJyZXBsaWNhdGlvbl9tZXRhZGF0YV9wa2V5IiBQUklNQVJZIEtFWSwgYnRyZWUgKGlk KQorICAgICJyZXBsaWNhdGlvbl9tZXRhZGF0YV9pZHgxIiBidHJlZSAocmVsYXRpb24pCiBP cHRpb25zOiB1c2VyX2NhdGFsb2dfdGFibGU9dHJ1ZQogCitTRUxFQ1QgYm9vbF9hbmQoaW5k aXN1c2VyY2F0YWxvZykgZnJvbSBwZ19pbmRleCB3aGVyZSBpbmRyZWxpZCA9ICdyZXBsaWNh dGlvbl9tZXRhZGF0YSc6OnJlZ2NsYXNzOworIGJvb2xfYW5kIAorLS0tLS0tLS0tLQorIHQK KygxIHJvdykKKwogSU5TRVJUIElOVE8gcmVwbGljYXRpb25fbWV0YWRhdGEocmVsYXRpb24s IG9wdGlvbnMpCiBWQUxVRVMgKCdibHViJywgTlVMTCk7CiAtLSBtYWtlIHN1cmUgcmV3cml0 ZXMgZG9uJ3Qgd29yawpAQCAtNTM4LDggKzU2MCwxNSBAQCBBTFRFUiBUQUJMRSByZXBsaWNh dGlvbl9tZXRhZGF0YSBTRVQgKHVzZXJfY2F0YWxvZ190YWJsZSA9IGZhbHNlKTsKICByZXdy aXRlbWVvcm5vdCB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAgIHwg ICAgICAgICAgICAgIHwgCiBJbmRleGVzOgogICAgICJyZXBsaWNhdGlvbl9tZXRhZGF0YV9w a2V5IiBQUklNQVJZIEtFWSwgYnRyZWUgKGlkKQorICAgICJyZXBsaWNhdGlvbl9tZXRhZGF0 YV9pZHgxIiBidHJlZSAocmVsYXRpb24pCiBPcHRpb25zOiB1c2VyX2NhdGFsb2dfdGFibGU9 ZmFsc2UKIAorU0VMRUNUIGJvb2xfb3IoaW5kaXN1c2VyY2F0YWxvZykgZnJvbSBwZ19pbmRl eCB3aGVyZSBpbmRyZWxpZCA9ICdyZXBsaWNhdGlvbl9tZXRhZGF0YSc6OnJlZ2NsYXNzOwor IGJvb2xfb3IgCistLS0tLS0tLS0KKyBmCisoMSByb3cpCisKIElOU0VSVCBJTlRPIHJlcGxp Y2F0aW9uX21ldGFkYXRhKHJlbGF0aW9uLCBvcHRpb25zKQogVkFMVUVTICgnemFwaG9kJywg TlVMTCk7CiBTRUxFQ1QgZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygn cmVncmVzc2lvbl9zbG90JywgTlVMTCwgTlVMTCwgJ2luY2x1ZGUteGlkcycsICcwJywgJ3Nr aXAtZW1wdHkteGFjdHMnLCAnMScpOwpkaWZmIC0tZ2l0IGEvY29udHJpYi90ZXN0X2RlY29k aW5nL3NxbC9kZGwuc3FsIGIvY29udHJpYi90ZXN0X2RlY29kaW5nL3NxbC9kZGwuc3FsCmlu ZGV4IDRmNzZiZWQ3MmMuLjg1ZGRkNGJlMDMgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvdGVzdF9k ZWNvZGluZy9zcWwvZGRsLnNxbAorKysgYi9jb250cmliL3Rlc3RfZGVjb2Rpbmcvc3FsL2Rk bC5zcWwKQEAgLTI3NiwxOSArMjc2LDI1IEBAIENSRUFURSBUQUJMRSByZXBsaWNhdGlvbl9t ZXRhZGF0YSAoCiApCiBXSVRIICh1c2VyX2NhdGFsb2dfdGFibGUgPSB0cnVlKQogOworCitD UkVBVEUgSU5ERVggcmVwbGljYXRpb25fbWV0YWRhdGFfaWR4MSBvbiByZXBsaWNhdGlvbl9t ZXRhZGF0YShyZWxhdGlvbik7CisKIFxkKyByZXBsaWNhdGlvbl9tZXRhZGF0YQorU0VMRUNU IGJvb2xfYW5kKGluZGlzdXNlcmNhdGFsb2cpIGZyb20gcGdfaW5kZXggd2hlcmUgaW5kcmVs aWQgPSAncmVwbGljYXRpb25fbWV0YWRhdGEnOjpyZWdjbGFzczsKIAogSU5TRVJUIElOVE8g cmVwbGljYXRpb25fbWV0YWRhdGEocmVsYXRpb24sIG9wdGlvbnMpCiBWQUxVRVMgKCdmb28n LCBBUlJBWVsnYScsICdiJ10pOwogCiBBTFRFUiBUQUJMRSByZXBsaWNhdGlvbl9tZXRhZGF0 YSBSRVNFVCAodXNlcl9jYXRhbG9nX3RhYmxlKTsKIFxkKyByZXBsaWNhdGlvbl9tZXRhZGF0 YQorU0VMRUNUIGJvb2xfb3IoaW5kaXN1c2VyY2F0YWxvZykgZnJvbSBwZ19pbmRleCB3aGVy ZSBpbmRyZWxpZCA9ICdyZXBsaWNhdGlvbl9tZXRhZGF0YSc6OnJlZ2NsYXNzOwogCiBJTlNF UlQgSU5UTyByZXBsaWNhdGlvbl9tZXRhZGF0YShyZWxhdGlvbiwgb3B0aW9ucykKIFZBTFVF UyAoJ2JhcicsIEFSUkFZWydhJywgJ2InXSk7CiAKIEFMVEVSIFRBQkxFIHJlcGxpY2F0aW9u X21ldGFkYXRhIFNFVCAodXNlcl9jYXRhbG9nX3RhYmxlID0gdHJ1ZSk7CiBcZCsgcmVwbGlj YXRpb25fbWV0YWRhdGEKK1NFTEVDVCBib29sX2FuZChpbmRpc3VzZXJjYXRhbG9nKSBmcm9t IHBnX2luZGV4IHdoZXJlIGluZHJlbGlkID0gJ3JlcGxpY2F0aW9uX21ldGFkYXRhJzo6cmVn Y2xhc3M7CiAKIElOU0VSVCBJTlRPIHJlcGxpY2F0aW9uX21ldGFkYXRhKHJlbGF0aW9uLCBv cHRpb25zKQogVkFMVUVTICgnYmx1YicsIE5VTEwpOwpAQCAtMjk5LDYgKzMwNSw3IEBAIEFM VEVSIFRBQkxFIHJlcGxpY2F0aW9uX21ldGFkYXRhIEFMVEVSIENPTFVNTiByZXdyaXRlbWVv cm5vdCBUWVBFIHRleHQ7CiAKIEFMVEVSIFRBQkxFIHJlcGxpY2F0aW9uX21ldGFkYXRhIFNF VCAodXNlcl9jYXRhbG9nX3RhYmxlID0gZmFsc2UpOwogXGQrIHJlcGxpY2F0aW9uX21ldGFk YXRhCitTRUxFQ1QgYm9vbF9vcihpbmRpc3VzZXJjYXRhbG9nKSBmcm9tIHBnX2luZGV4IHdo ZXJlIGluZHJlbGlkID0gJ3JlcGxpY2F0aW9uX21ldGFkYXRhJzo6cmVnY2xhc3M7CiAKIElO U0VSVCBJTlRPIHJlcGxpY2F0aW9uX21ldGFkYXRhKHJlbGF0aW9uLCBvcHRpb25zKQogVkFM VUVTICgnemFwaG9kJywgTlVMTCk7CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxv Z3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IDllZDJiMDIwYjcu LjE4ZDZiOTljYWMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCisr KyBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCkBAIC00NDM3LDYgKzQ0MzcsMTcgQEAg U0NSQU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8L3Jl cGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+JmwKICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAg ICA8L3Jvdz4KIAorICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFi bGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3Ry dWN0ZmllbGQ+aW5kaXN1c2VyY2F0YWxvZzwvc3RydWN0ZmllbGQ+IDx0eXBlPmJvb2w8L3R5 cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBJZiB0cnVlLCB0aGUg aW5kZXggaXMgbGlua2VkIHRvIGEgdGFibGUgdGhhdCBpcyBkZWNsYXJlZCBhcyBhbiBhZGRp dGlvbmFsCisgICAgICAgY2F0YWxvZyB0YWJsZSBmb3IgcHVycG9zZXMgb2YgbG9naWNhbCBy ZXBsaWNhdGlvbiAobWVhbnMgaGFzIDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVhdGV0YWJsZSI+ PGxpdGVyYWw+dXNlcl9jYXRhbG9nX3RhYmxlPC9saXRlcmFsPjwvbGluaz4pCisgICAgICAg c2V0IHRvIHRydWUuCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAg ICAgPHJvdz4KICAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFy YSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CiAgICAgICAgPHN0cnVjdGZpZWxkPmluZGlz cmVwbGlkZW50PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Ym9vbDwvdHlwZT4KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vcmVsb3B0aW9ucy5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2NvbW1vbi9yZWxvcHRpb25zLmMKaW5kZXggNzViNzM0NDg5MS4uNGI0MWY1ZTY4 ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9yZWxvcHRpb25zLmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9yZWxvcHRpb25zLmMKQEAgLTEyMCw3 ICsxMjAsNyBAQCBzdGF0aWMgcmVsb3B0X2Jvb2wgYm9vbFJlbE9wdHNbXSA9CiAJCQlSRUxP UFRfS0lORF9IRUFQLAogCQkJQWNjZXNzRXhjbHVzaXZlTG9jawogCQl9LAotCQlmYWxzZQor CQlIRUFQX0RFRkFVTFRfVVNFUl9DQVRBTE9HX1RBQkxFCiAJfSwKIAl7CiAJCXsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvZ2lzdC9naXN0eGxvZy5jCmluZGV4IGNiNWFmZmEzZDIuLmI3NDc5MDBhNDUg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYwpAQCAtNjA4LDYgKzYwOCw3IEBA IGdpc3RYTG9nUGFnZVJldXNlKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEZ1 bGxUcmFuc2FjdGlvbklkIGRlbGV0ZVhpZCkKIAkgKi8KIAogCS8qIFhMT0cgc3R1ZmYgKi8K Kwl4bHJlY19yZXVzZS5vbkNhdGFsb2dBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcgPSBJ bmRleElzQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nKHJlbCk7CiAJeGxyZWNfcmV1c2Uu bG9jYXRvciA9IHJlbC0+cmRfbG9jYXRvcjsKIAl4bHJlY19yZXVzZS5ibG9jayA9IGJsa25v OwogCXhscmVjX3JldXNlLnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uID0gZGVsZXRlWGlkOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaGluc2VydC5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaGluc2VydC5jCmluZGV4IDlhOTIxZTM0MWUuLjdl NTlhMzg0YWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hpbnNl cnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoaW5zZXJ0LmMKQEAgLTQz Miw2ICs0MzIsNyBAQCBfaGFzaF92YWN1dW1fb25lX3BhZ2UoUmVsYXRpb24gcmVsLCBSZWxh dGlvbiBocmVsLCBCdWZmZXIgbWV0YWJ1ZiwgQnVmZmVyIGJ1ZikKIAkJCXhsX2hhc2hfdmFj dXVtX29uZV9wYWdlIHhscmVjOwogCQkJWExvZ1JlY1B0cglyZWNwdHI7CiAKKwkJCXhscmVj Lm9uQ2F0YWxvZ0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyA9IFJlbGF0aW9uSXNBY2Nl c3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcoaHJlbCk7CiAJCQl4bHJlYy5zbmFwc2hvdENvbmZs aWN0SG9yaXpvbiA9IHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOwogCQkJeGxyZWMubnR1cGxl cyA9IG5kZWxldGFibGU7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L2hlYXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKaW5kZXggNzQ3 ZGI1MDM3Ni4uYjQyYTZiZmE2MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKQEAg LTY4MzEsNiArNjgzMSw3IEBAIGhlYXBfZnJlZXplX2V4ZWN1dGVfcHJlcGFyZWQoUmVsYXRp b24gcmVsLCBCdWZmZXIgYnVmZmVyLAogCQlzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiA9IEZy ZWV6ZUxpbWl0OwogCQlUcmFuc2FjdGlvbklkUmV0cmVhdChzbmFwc2hvdENvbmZsaWN0SG9y aXpvbik7CiAKKwkJeGxyZWMub25DYXRhbG9nQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5n ID0gUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyhyZWwpOwogCQl4bHJl Yy5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiA9IHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOwog CQl4bHJlYy5ucGxhbnMgPSBucGxhbnM7CiAKQEAgLTgyNDgsNyArODI0OSw3IEBAIGJvdHRv bXVwX3NvcnRfYW5kX3NocmluayhUTV9JbmRleERlbGV0ZU9wICpkZWxzdGF0ZSkKICAqIHVw ZGF0ZSB0aGUgaGVhcCBwYWdlJ3MgTFNOLgogICovCiBYTG9nUmVjUHRyCi1sb2dfaGVhcF92 aXNpYmxlKFJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yLCBCdWZmZXIgaGVhcF9idWZmZXIsIEJ1 ZmZlciB2bV9idWZmZXIsCitsb2dfaGVhcF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVy IGhlYXBfYnVmZmVyLCBCdWZmZXIgdm1fYnVmZmVyLAogCQkJCSBUcmFuc2FjdGlvbklkIHNu YXBzaG90Q29uZmxpY3RIb3Jpem9uLCB1aW50OCB2bWZsYWdzKQogewogCXhsX2hlYXBfdmlz aWJsZSB4bHJlYzsKQEAgLTgyNTgsNiArODI1OSw3IEBAIGxvZ19oZWFwX3Zpc2libGUoUmVs RmlsZUxvY2F0b3IgcmxvY2F0b3IsIEJ1ZmZlciBoZWFwX2J1ZmZlciwgQnVmZmVyIHZtX2J1 ZmZlciwKIAlBc3NlcnQoQnVmZmVySXNWYWxpZChoZWFwX2J1ZmZlcikpOwogCUFzc2VydChC dWZmZXJJc1ZhbGlkKHZtX2J1ZmZlcikpOwogCisJeGxyZWMub25DYXRhbG9nQWNjZXNzaWJs ZUluTG9naWNhbERlY29kaW5nID0gUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNv ZGluZyhyZWwpOwogCXhscmVjLnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uID0gc25hcHNob3RD b25mbGljdEhvcml6b247CiAJeGxyZWMuZmxhZ3MgPSB2bWZsYWdzOwogCVhMb2dCZWdpbklu c2VydCgpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFw LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCA5MWM1ZjVl OWVmLi5hYWU3OGY3MTQ0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9w cnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpA QCAtNDE4LDYgKzQxOCw3IEBAIGhlYXBfcGFnZV9wcnVuZShSZWxhdGlvbiByZWxhdGlvbiwg QnVmZmVyIGJ1ZmZlciwKIAkJCXhsX2hlYXBfcHJ1bmUgeGxyZWM7CiAJCQlYTG9nUmVjUHRy CXJlY3B0cjsKIAorCQkJeGxyZWMub25DYXRhbG9nQWNjZXNzaWJsZUluTG9naWNhbERlY29k aW5nID0gUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyhyZWxhdGlvbik7 CiAJCQl4bHJlYy5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiA9IHByc3RhdGUuc25hcHNob3RD b25mbGljdEhvcml6b247CiAJCQl4bHJlYy5ucmVkaXJlY3RlZCA9IHByc3RhdGUubnJlZGly ZWN0ZWQ7CiAJCQl4bHJlYy5uZGVhZCA9IHByc3RhdGUubmRlYWQ7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKaW5kZXggNGVkNzAyNzVlMi4uMGJkNzNmNGQ5 ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYwpAQCAtMjgz LDggKzI4Myw3IEBAIHZpc2liaWxpdHltYXBfc2V0KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1i ZXIgaGVhcEJsaywgQnVmZmVyIGhlYXBCdWYsCiAJCQlpZiAoWExvZ1JlY1B0cklzSW52YWxp ZChyZWNwdHIpKQogCQkJewogCQkJCUFzc2VydCghSW5SZWNvdmVyeSk7Ci0JCQkJcmVjcHRy ID0gbG9nX2hlYXBfdmlzaWJsZShyZWwtPnJkX2xvY2F0b3IsIGhlYXBCdWYsIHZtQnVmLAot CQkJCQkJCQkJCSAgY3V0b2ZmX3hpZCwgZmxhZ3MpOworCQkJCXJlY3B0ciA9IGxvZ19oZWFw X3Zpc2libGUocmVsLCBoZWFwQnVmLCB2bUJ1ZiwgY3V0b2ZmX3hpZCwgZmxhZ3MpOwogCiAJ CQkJLyoKIAkJCQkgKiBJZiBkYXRhIGNoZWNrc3VtcyBhcmUgZW5hYmxlZCAob3Igd2FsX2xv Z19oaW50cz1vbiksIHdlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVl L25idHBhZ2UuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cGFnZS5jCmluZGV4 IDY1YWE0NDg5M2MuLjg4NzczYzBlNDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9uYnRyZWUvbmJ0cGFnZS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0 cGFnZS5jCkBAIC04MzYsNiArODM2LDcgQEAgX2J0X2xvZ19yZXVzZV9wYWdlKFJlbGF0aW9u IHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEZ1bGxUcmFuc2FjdGlvbklkIHNhZmV4aWQpCiAJ ICovCiAKIAkvKiBYTE9HIHN0dWZmICovCisJeGxyZWNfcmV1c2Uub25DYXRhbG9nQWNjZXNz aWJsZUluTG9naWNhbERlY29kaW5nID0gSW5kZXhJc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNv ZGluZyhyZWwpOwogCXhscmVjX3JldXNlLmxvY2F0b3IgPSByZWwtPnJkX2xvY2F0b3I7CiAJ eGxyZWNfcmV1c2UuYmxvY2sgPSBibGtubzsKIAl4bHJlY19yZXVzZS5zbmFwc2hvdENvbmZs aWN0SG9yaXpvbiA9IHNhZmV4aWQ7CkBAIC0xMzU4LDYgKzEzNTksNyBAQCBfYnRfZGVsaXRl bXNfZGVsZXRlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKIAkJWExvZ1JlY1B0cglyZWNw dHI7CiAJCXhsX2J0cmVlX2RlbGV0ZSB4bHJlY19kZWxldGU7CiAKKwkJeGxyZWNfZGVsZXRl Lm9uQ2F0YWxvZ0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyA9IEluZGV4SXNBY2Nlc3Np YmxlSW5Mb2dpY2FsRGVjb2RpbmcocmVsKTsKIAkJeGxyZWNfZGVsZXRlLnNuYXBzaG90Q29u ZmxpY3RIb3Jpem9uID0gc25hcHNob3RDb25mbGljdEhvcml6b247CiAJCXhscmVjX2RlbGV0 ZS5uZGVsZXRlZCA9IG5kZWxldGFibGU7CiAJCXhscmVjX2RlbGV0ZS5udXBkYXRlZCA9IG51 cGRhdGFibGU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3Zh Y3V1bS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYwppbmRleCBh ZDkwYjIxM2I5Li5iZTIzOTA3Njg3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv c3BnaXN0L3NwZ3ZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3Bn dmFjdXVtLmMKQEAgLTUwMyw2ICs1MDMsNyBAQCB2YWN1dW1SZWRpcmVjdEFuZFBsYWNlaG9s ZGVyKFJlbGF0aW9uIGluZGV4LCBCdWZmZXIgYnVmZmVyKQogCXNwZ3hsb2dWYWN1dW1SZWRp cmVjdCB4bHJlYzsKIAlHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdDsKIAorCXhscmVjLm9uQ2F0 YWxvZ0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyA9IEluZGV4SXNBY2Nlc3NpYmxlSW5M b2dpY2FsRGVjb2RpbmcoaW5kZXgpOwogCXhscmVjLm5Ub1BsYWNlaG9sZGVyID0gMDsKIAl4 bHJlYy5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOwog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL2luZGV4LmMKaW5kZXggNjFmMWQzOTI2YS4uZjZiMmM5YWM3MSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNrZW5kL2Nh dGFsb2cvaW5kZXguYwpAQCAtMTIzLDcgKzEyMyw4IEBAIHN0YXRpYyB2b2lkIFVwZGF0ZUlu ZGV4UmVsYXRpb24oT2lkIGluZGV4b2lkLCBPaWQgaGVhcG9pZCwKIAkJCQkJCQkJYm9vbCBp c2V4Y2x1c2lvbiwKIAkJCQkJCQkJYm9vbCBpbW1lZGlhdGUsCiAJCQkJCQkJCWJvb2wgaXN2 YWxpZCwKLQkJCQkJCQkJYm9vbCBpc3JlYWR5KTsKKwkJCQkJCQkJYm9vbCBpc3JlYWR5LAor CQkJCQkJCQlib29sIGlzX3VzZXJfY2F0YWxvZyk7CiBzdGF0aWMgdm9pZCBpbmRleF91cGRh dGVfc3RhdHMoUmVsYXRpb24gcmVsLAogCQkJCQkJCSAgIGJvb2wgaGFzaW5kZXgsCiAJCQkJ CQkJICAgZG91YmxlIHJlbHR1cGxlcyk7CkBAIC01NDUsNyArNTQ2LDggQEAgVXBkYXRlSW5k ZXhSZWxhdGlvbihPaWQgaW5kZXhvaWQsCiAJCQkJCWJvb2wgaXNleGNsdXNpb24sCiAJCQkJ CWJvb2wgaW1tZWRpYXRlLAogCQkJCQlib29sIGlzdmFsaWQsCi0JCQkJCWJvb2wgaXNyZWFk eSkKKwkJCQkJYm9vbCBpc3JlYWR5LAorCQkJCQlib29sIGlzX3VzZXJfY2F0YWxvZykKIHsK IAlpbnQydmVjdG9yICppbmRrZXk7CiAJb2lkdmVjdG9yICAqaW5kY29sbGF0aW9uOwpAQCAt NjIyLDYgKzYyNCw3IEBAIFVwZGF0ZUluZGV4UmVsYXRpb24oT2lkIGluZGV4b2lkLAogCXZh bHVlc1tBbnVtX3BnX2luZGV4X2luZGNoZWNreG1pbiAtIDFdID0gQm9vbEdldERhdHVtKGZh bHNlKTsKIAl2YWx1ZXNbQW51bV9wZ19pbmRleF9pbmRpc3JlYWR5IC0gMV0gPSBCb29sR2V0 RGF0dW0oaXNyZWFkeSk7CiAJdmFsdWVzW0FudW1fcGdfaW5kZXhfaW5kaXNsaXZlIC0gMV0g PSBCb29sR2V0RGF0dW0odHJ1ZSk7CisJdmFsdWVzW0FudW1fcGdfaW5kZXhfaW5kaXN1c2Vy Y2F0YWxvZyAtIDFdID0gQm9vbEdldERhdHVtKGlzX3VzZXJfY2F0YWxvZyk7CiAJdmFsdWVz W0FudW1fcGdfaW5kZXhfaW5kaXNyZXBsaWRlbnQgLSAxXSA9IEJvb2xHZXREYXR1bShmYWxz ZSk7CiAJdmFsdWVzW0FudW1fcGdfaW5kZXhfaW5ka2V5IC0gMV0gPSBQb2ludGVyR2V0RGF0 dW0oaW5ka2V5KTsKIAl2YWx1ZXNbQW51bV9wZ19pbmRleF9pbmRjb2xsYXRpb24gLSAxXSA9 IFBvaW50ZXJHZXREYXR1bShpbmRjb2xsYXRpb24pOwpAQCAtNzM1LDYgKzczOCw3IEBAIGlu ZGV4X2NyZWF0ZShSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJVHJhbnNhY3Rpb25JZCByZWxm cm96ZW54aWQ7CiAJTXVsdGlYYWN0SWQgcmVsbWlubXhpZDsKIAlib29sCQljcmVhdGVfc3Rv cmFnZSA9ICFSZWxGaWxlTnVtYmVySXNWYWxpZChyZWxGaWxlTnVtYmVyKTsKKwlib29sCQlp c3VzZXJjYXRhbG9nID0gZmFsc2U7CiAKIAkvKiBjb25zdHJhaW50IGZsYWdzIGNhbiBvbmx5 IGJlIHNldCB3aGVuIGEgY29uc3RyYWludCBpcyByZXF1ZXN0ZWQgKi8KIAlBc3NlcnQoKGNv bnN0cl9mbGFncyA9PSAwKSB8fApAQCAtMTAxNCwxMyArMTAxOCwxNyBAQCBpbmRleF9jcmVh dGUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCSAqCSAgKE9yLCBjb3VsZCBkZWZpbmUgYSBy dWxlIHRvIG1haW50YWluIHRoZSBwcmVkaWNhdGUpIC0tTmVscywgRmViICc5MgogCSAqIC0t LS0tLS0tLS0tLS0tLS0KIAkgKi8KKwlpZiAoaGVhcFJlbGF0aW9uLT5yZF9vcHRpb25zKQor CQlpc3VzZXJjYXRhbG9nID0gKChTdGRSZE9wdGlvbnMgKikgKGhlYXBSZWxhdGlvbiktPnJk X29wdGlvbnMpLT51c2VyX2NhdGFsb2dfdGFibGU7CisKIAlVcGRhdGVJbmRleFJlbGF0aW9u KGluZGV4UmVsYXRpb25JZCwgaGVhcFJlbGF0aW9uSWQsIHBhcmVudEluZGV4UmVsaWQsCiAJ CQkJCQlpbmRleEluZm8sCiAJCQkJCQljb2xsYXRpb25PYmplY3RJZCwgY2xhc3NPYmplY3RJ ZCwgY29sb3B0aW9ucywKIAkJCQkJCWlzcHJpbWFyeSwgaXNfZXhjbHVzaW9uLAogCQkJCQkJ KGNvbnN0cl9mbGFncyAmIElOREVYX0NPTlNUUl9DUkVBVEVfREVGRVJSQUJMRSkgPT0gMCwK IAkJCQkJCSFjb25jdXJyZW50ICYmICFpbnZhbGlkLAotCQkJCQkJIWNvbmN1cnJlbnQpOwor CQkJCQkJIWNvbmN1cnJlbnQsCisJCQkJCQlpc3VzZXJjYXRhbG9nKTsKIAogCS8qCiAJICog UmVnaXN0ZXIgcmVsY2FjaGUgaW52YWxpZGF0aW9uIG9uIHRoZSBpbmRleGVzJyBoZWFwIHJl bGF0aW9uLCB0bwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRz LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCAxMGMxOTU1ODg0 Li5jZWIwZjhmOGE2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNt ZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtMTAzLDYg KzEwMyw3IEBACiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGls cy90aW1lc3RhbXAuaCIKICNpbmNsdWRlICJ1dGlscy90eXBjYWNoZS5oIgorI2luY2x1ZGUg InV0aWxzL3JlbC5oIgogCiAvKgogICogT04gQ09NTUlUIGFjdGlvbiBsaXN0CkBAIC0xNDE4 OSw2ICsxNDE5MCwxMCBAQCBBVEV4ZWNTZXRSZWxPcHRpb25zKFJlbGF0aW9uIHJlbCwgTGlz dCAqZGVmTGlzdCwgQWx0ZXJUYWJsZVR5cGUgb3BlcmF0aW9uLAogCURhdHVtCQlyZXBsX3Zh bFtOYXR0c19wZ19jbGFzc107CiAJYm9vbAkJcmVwbF9udWxsW05hdHRzX3BnX2NsYXNzXTsK IAlib29sCQlyZXBsX3JlcGxbTmF0dHNfcGdfY2xhc3NdOworCUxpc3RDZWxsICAgKmNlbGw7 CisJTGlzdAkgICAqcmVsX29wdGlvbnM7CisJYm9vbAkJY2F0YWxvZ190YWJsZV92YWwgPSBI RUFQX0RFRkFVTFRfVVNFUl9DQVRBTE9HX1RBQkxFOworCWJvb2wJCWNhdGFsb2dfdGFibGUg PSBmYWxzZTsKIAlzdGF0aWMgY2hhciAqdmFsaWRuc3BzW10gPSBIRUFQX1JFTE9QVF9OQU1F U1BBQ0VTOwogCiAJaWYgKGRlZkxpc3QgPT0gTklMICYmIG9wZXJhdGlvbiAhPSBBVF9SZXBs YWNlUmVsT3B0aW9ucykKQEAgLTE0MjU1LDcgKzE0MjYwLDYgQEAgQVRFeGVjU2V0UmVsT3B0 aW9ucyhSZWxhdGlvbiByZWwsIExpc3QgKmRlZkxpc3QsIEFsdGVyVGFibGVUeXBlIG9wZXJh dGlvbiwKIAl7CiAJCVF1ZXJ5CSAgICp2aWV3X3F1ZXJ5ID0gZ2V0X3ZpZXdfcXVlcnkocmVs KTsKIAkJTGlzdAkgICAqdmlld19vcHRpb25zID0gdW50cmFuc2Zvcm1SZWxPcHRpb25zKG5l d09wdGlvbnMpOwotCQlMaXN0Q2VsbCAgICpjZWxsOwogCQlib29sCQljaGVja19vcHRpb24g PSBmYWxzZTsKIAogCQlmb3JlYWNoKGNlbGwsIHZpZXdfb3B0aW9ucykKQEAgLTE0MjgzLDYg KzE0Mjg3LDIwIEBAIEFURXhlY1NldFJlbE9wdGlvbnMoUmVsYXRpb24gcmVsLCBMaXN0ICpk ZWZMaXN0LCBBbHRlclRhYmxlVHlwZSBvcGVyYXRpb24sCiAJCX0KIAl9CiAKKwkvKiBJZiB1 c2VyX2NhdGFsb2dfdGFibGUgaXMgcGFydCBvZiB0aGUgbmV3IG9wdGlvbnMsIHJlY29yZCBp dHMgbmV3IHZhbHVlICovCisJcmVsX29wdGlvbnMgPSB1bnRyYW5zZm9ybVJlbE9wdGlvbnMo bmV3T3B0aW9ucyk7CisKKwlmb3JlYWNoKGNlbGwsIHJlbF9vcHRpb25zKQorCXsKKwkJRGVm RWxlbSAgICAqZGVmZWwgPSAoRGVmRWxlbSAqKSBsZmlyc3QoY2VsbCk7CisKKwkJaWYgKHN0 cmNtcChkZWZlbC0+ZGVmbmFtZSwgInVzZXJfY2F0YWxvZ190YWJsZSIpID09IDApCisJCXsK KwkJCWNhdGFsb2dfdGFibGUgPSB0cnVlOworCQkJY2F0YWxvZ190YWJsZV92YWwgPSBkZWZH ZXRCb29sZWFuKGRlZmVsKTsKKwkJfQorCX0KKwogCS8qCiAJICogQWxsIHdlIG5lZWQgZG8g aGVyZSBpcyB1cGRhdGUgdGhlIHBnX2NsYXNzIHJvdzsgdGhlIG5ldyBvcHRpb25zIHdpbGwg YmUKIAkgKiBwcm9wYWdhdGVkIGludG8gcmVsY2FjaGVzIGR1cmluZyBwb3N0LWNvbW1pdCBj YWNoZSBpbnZhbC4KQEAgLTE0MzA5LDYgKzE0MzI3LDQxIEBAIEFURXhlY1NldFJlbE9wdGlv bnMoUmVsYXRpb24gcmVsLCBMaXN0ICpkZWZMaXN0LCBBbHRlclRhYmxlVHlwZSBvcGVyYXRp b24sCiAKIAlSZWxlYXNlU3lzQ2FjaGUodHVwbGUpOwogCisJLyogVXBkYXRlIHRoZSBpbmRl eGVzIGlmIHRoZXJlIGlzIGEgbmVlZCB0byAqLworCWlmIChjYXRhbG9nX3RhYmxlIHx8IG9w ZXJhdGlvbiA9PSBBVF9SZXNldFJlbE9wdGlvbnMpCisJeworCQlSZWxhdGlvbglwZ19pbmRl eDsKKwkJSGVhcFR1cGxlCXBnX2luZGV4X3R1cGxlOworCQlGb3JtX3BnX2luZGV4IHBnX2lu ZGV4X2Zvcm07CisJCUxpc3RDZWxsICAgKmluZGV4OworCisJCXBnX2luZGV4ID0gdGFibGVf b3BlbihJbmRleFJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJCWZvcmVhY2go aW5kZXgsIFJlbGF0aW9uR2V0SW5kZXhMaXN0KHJlbCkpCisJCXsKKwkJCU9pZAkJCXRoaXNJ bmRleE9pZCA9IGxmaXJzdF9vaWQoaW5kZXgpOworCisJCQlwZ19pbmRleF90dXBsZSA9IFNl YXJjaFN5c0NhY2hlQ29weTEoSU5ERVhSRUxJRCwKKwkJCQkJCQkJCQkJCSBPYmplY3RJZEdl dERhdHVtKHRoaXNJbmRleE9pZCkpOworCQkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHBnX2lu ZGV4X3R1cGxlKSkKKwkJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Ig aW5kZXggJXUiLCB0aGlzSW5kZXhPaWQpOworCQkJcGdfaW5kZXhfZm9ybSA9IChGb3JtX3Bn X2luZGV4KSBHRVRTVFJVQ1QocGdfaW5kZXhfdHVwbGUpOworCisJCQkvKiBNb2RpZnkgdGhl IGluZGV4IG9ubHkgaWYgdXNlcl9jYXRhbG9nX3RhYmxlIGRpZmZlciAqLworCQkJaWYgKGNh dGFsb2dfdGFibGVfdmFsICE9IHBnX2luZGV4X2Zvcm0tPmluZGlzdXNlcmNhdGFsb2cpCisJ CQl7CisJCQkJcGdfaW5kZXhfZm9ybS0+aW5kaXN1c2VyY2F0YWxvZyA9IGNhdGFsb2dfdGFi bGVfdmFsOworCQkJCUNhdGFsb2dUdXBsZVVwZGF0ZShwZ19pbmRleCwgJnBnX2luZGV4X3R1 cGxlLT50X3NlbGYsIHBnX2luZGV4X3R1cGxlKTsKKwkJCQlJbnZva2VPYmplY3RQb3N0QWx0 ZXJIb29rQXJnKEluZGV4UmVsYXRpb25JZCwgdGhpc0luZGV4T2lkLCAwLAorCQkJCQkJCQkJ CQkgSW52YWxpZE9pZCwgdHJ1ZSk7CisJCQl9CisKKwkJCWhlYXBfZnJlZXR1cGxlKHBnX2lu ZGV4X3R1cGxlKTsKKwkJfQorCisJCXRhYmxlX2Nsb3NlKHBnX2luZGV4LCBSb3dFeGNsdXNp dmVMb2NrKTsKKwl9CisKIAkvKiByZXBlYXQgdGhlIHdob2xlIGV4ZXJjaXNlIGZvciB0aGUg dG9hc3QgdGFibGUsIGlmIHRoZXJlJ3Mgb25lICovCiAJaWYgKE9pZElzVmFsaWQocmVsLT5y ZF9yZWwtPnJlbHRvYXN0cmVsaWQpKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9naXN0eGxvZy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3R4bG9nLmgKaW5kZXgg MzNmMWM3ZTMxYi4uNDBjM2VhOGY3MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNz L2dpc3R4bG9nLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3R4bG9nLmgKQEAgLTQ5 LDYgKzQ5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgZ2lzdHhsb2dQYWdlVXBkYXRlCiAgKi8KIHR5 cGVkZWYgc3RydWN0IGdpc3R4bG9nRGVsZXRlCiB7CisJYm9vbCAgICAgICAgb25DYXRhbG9n QWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nOwogCVRyYW5zYWN0aW9uSWQgc25hcHNob3RD b25mbGljdEhvcml6b247CiAJdWludDE2CQludG9kZWxldGU7CQkvKiBudW1iZXIgb2YgZGVs ZXRlZCBvZmZzZXRzICovCiAKQEAgLTk3LDYgKzk4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgZ2lz dHhsb2dQYWdlRGVsZXRlCiAgKi8KIHR5cGVkZWYgc3RydWN0IGdpc3R4bG9nUGFnZVJldXNl CiB7CisJYm9vbCAgICAgICAgb25DYXRhbG9nQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5n OwogCVJlbEZpbGVMb2NhdG9yIGxvY2F0b3I7CiAJQmxvY2tOdW1iZXIgYmxvY2s7CiAJRnVs bFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b247CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9hY2Nlc3MvaGFzaF94bG9nLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGFz aF94bG9nLmgKaW5kZXggNmRhZmI0YTU5OC4uMmVhZTY0NGU4OSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvYWNjZXNzL2hhc2hfeGxvZy5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9o YXNoX3hsb2cuaApAQCAtMjUwLDYgKzI1MCw3IEBAIHR5cGVkZWYgc3RydWN0IHhsX2hhc2hf aW5pdF9iaXRtYXBfcGFnZQogICovCiB0eXBlZGVmIHN0cnVjdCB4bF9oYXNoX3ZhY3V1bV9v bmVfcGFnZQogeworCWJvb2wgICAgICAgIG9uQ2F0YWxvZ0FjY2Vzc2libGVJbkxvZ2ljYWxE ZWNvZGluZzsKIAlUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOwogCWlu dAkJCW50dXBsZXM7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1f eGxvZy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKaW5kZXggNWM3NzI5 MGVlYy4uM2Q4MTRhNWFlMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBh bV94bG9nLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKQEAgLTI0 Miw2ICsyNDIsNyBAQCB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX3VwZGF0ZQogICovCiB0eXBl ZGVmIHN0cnVjdCB4bF9oZWFwX3BydW5lCiB7CisJYm9vbCAgICAgICAgb25DYXRhbG9nQWNj ZXNzaWJsZUluTG9naWNhbERlY29kaW5nOwogCVRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25m bGljdEhvcml6b247CiAJdWludDE2CQlucmVkaXJlY3RlZDsKIAl1aW50MTYJCW5kZWFkOwpA QCAtMzQyLDYgKzM0Myw3IEBAIHR5cGVkZWYgc3RydWN0IHhsX2hlYXBfZnJlZXplX3BsYW4K ICAqLwogdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9mcmVlemVfcGFnZQogeworCWJvb2wgICAg ICAgIG9uQ2F0YWxvZ0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZzsKIAlUcmFuc2FjdGlv bklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOwogCXVpbnQxNgkJbnBsYW5zOwogCkBAIC0z NTksNiArMzYxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9mcmVlemVfcGFnZQogICov CiB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX3Zpc2libGUKIHsKKwlib29sICAgICAgICBvbkNh dGFsb2dBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2Rpbmc7CiAJVHJhbnNhY3Rpb25JZCBzbmFw c2hvdENvbmZsaWN0SG9yaXpvbjsKIAl1aW50OAkJZmxhZ3M7CiB9IHhsX2hlYXBfdmlzaWJs ZTsKQEAgLTQwOCw3ICs0MTEsNyBAQCBleHRlcm4gdm9pZCBoZWFwMl9kZXNjKFN0cmluZ0lu Zm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCk7CiBleHRlcm4gY29uc3QgY2hhciAq aGVhcDJfaWRlbnRpZnkodWludDggaW5mbyk7CiBleHRlcm4gdm9pZCBoZWFwX3hsb2dfbG9n aWNhbF9yZXdyaXRlKFhMb2dSZWFkZXJTdGF0ZSAqcik7CiAKLWV4dGVybiBYTG9nUmVjUHRy IGxvZ19oZWFwX3Zpc2libGUoUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IsIEJ1ZmZlciBoZWFw X2J1ZmZlciwKK2V4dGVybiBYTG9nUmVjUHRyIGxvZ19oZWFwX3Zpc2libGUoUmVsYXRpb24g cmVsLCBCdWZmZXIgaGVhcF9idWZmZXIsCiAJCQkJCQkJCSAgIEJ1ZmZlciB2bV9idWZmZXIs CiAJCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sCiAJ CQkJCQkJCSAgIHVpbnQ4IHZtZmxhZ3MpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNj ZXNzL25idHhsb2cuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnR4bG9nLmgKaW5kZXggM2Iy ZDk1OWM2OS4uMTkzMWYyYmJiYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL25i dHhsb2cuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0eGxvZy5oCkBAIC0xODUsNiAr MTg1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfYnRyZWVfZGVkdXAKICAqLwogdHlwZWRlZiBz dHJ1Y3QgeGxfYnRyZWVfcmV1c2VfcGFnZQogeworCWJvb2wgICAgICAgIG9uQ2F0YWxvZ0Fj Y2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZzsKIAlSZWxGaWxlTG9jYXRvciBsb2NhdG9yOwog CUJsb2NrTnVtYmVyIGJsb2NrOwogCUZ1bGxUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxp Y3RIb3Jpem9uOwpAQCAtMjMyLDYgKzIzMyw3IEBAIHR5cGVkZWYgc3RydWN0IHhsX2J0cmVl X3ZhY3V1bQogCiB0eXBlZGVmIHN0cnVjdCB4bF9idHJlZV9kZWxldGUKIHsKKwlib29sICAg ICAgICBvbkNhdGFsb2dBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2Rpbmc7CiAJVHJhbnNhY3Rp b25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbjsKIAl1aW50MTYJCW5kZWxldGVkOwogCXVp bnQxNgkJbnVwZGF0ZWQ7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3BneGxv Zy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3NwZ3hsb2cuaAppbmRleCA4MjMzMmNiNjk0Li4w NGZlNGE0YTUyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3BneGxvZy5oCisr KyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9zcGd4bG9nLmgKQEAgLTIzNyw2ICsyMzcsNyBAQCB0 eXBlZGVmIHN0cnVjdCBzcGd4bG9nVmFjdXVtUm9vdAogCiB0eXBlZGVmIHN0cnVjdCBzcGd4 bG9nVmFjdXVtUmVkaXJlY3QKIHsKKwlib29sICAgICAgICBvbkNhdGFsb2dBY2Nlc3NpYmxl SW5Mb2dpY2FsRGVjb2Rpbmc7CiAJdWludDE2CQluVG9QbGFjZWhvbGRlcjsgLyogbnVtYmVy IG9mIHJlZGlyZWN0cyB0byBtYWtlIHBsYWNlaG9sZGVycyAqLwogCU9mZnNldE51bWJlciBm aXJzdFBsYWNlaG9sZGVyOwkvKiBmaXJzdCBwbGFjZWhvbGRlciB0dXBsZSB0byByZW1vdmUg Ki8KIAlUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOwkvKiBuZXdlc3Qg WElEIG9mIHJlbW92ZWQgcmVkaXJlY3RzICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX2luZGV4LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2luZGV4LmgKaW5k ZXggZjg1Mzg0NmVlMS4uZGQxNjQzMTM3OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19pbmRleC5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfaW5kZXguaApA QCAtNDMsNiArNDMsOCBAQCBDQVRBTE9HKHBnX2luZGV4LDI2MTAsSW5kZXhSZWxhdGlvbklk KSBCS0lfU0NIRU1BX01BQ1JPCiAJYm9vbAkJaW5kY2hlY2t4bWluOwkvKiBtdXN0IHdlIHdh aXQgZm9yIHhtaW4gdG8gYmUgb2xkPyAqLwogCWJvb2wJCWluZGlzcmVhZHk7CQkvKiBpcyB0 aGlzIGluZGV4IHJlYWR5IGZvciBpbnNlcnRzPyAqLwogCWJvb2wJCWluZGlzbGl2ZTsJCS8q IGlzIHRoaXMgaW5kZXggYWxpdmUgYXQgYWxsPyAqLworCWJvb2wJCWluZGlzdXNlcmNhdGFs b2c7CS8qIGlzIHRoaXMgaW5kZXggbGlua2VkIHRvIGEgdXNlciBjYXRhbG9nCisJCQkJCQkJ CQkgKiByZWxhdGlvbj8gKi8KIAlib29sCQlpbmRpc3JlcGxpZGVudDsgLyogaXMgdGhpcyBp bmRleCB0aGUgaWRlbnRpdHkgZm9yIHJlcGxpY2F0aW9uPyAqLwogCiAJLyogdmFyaWFibGUt bGVuZ3RoIGZpZWxkcyBzdGFydCBoZXJlLCBidXQgd2UgYWxsb3cgZGlyZWN0IGFjY2VzcyB0 byBpbmRrZXkgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oIGIvc3Jj L2luY2x1ZGUvdXRpbHMvcmVsLmgKaW5kZXggZjM4M2EyZmNhOS4uOWI3N2UyM2MyOSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRp bHMvcmVsLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3NtZ3IuaCIK ICNpbmNsdWRlICJ1dGlscy9yZWxjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3JlbHRyaWdn ZXIuaCIKKyNpbmNsdWRlICJjYXRhbG9nL2NhdGFsb2cuaCIKIAogCiAvKgpAQCAtMzQzLDYg KzM0NCw3IEBAIHR5cGVkZWYgc3RydWN0IFN0ZFJkT3B0aW9ucwogCiAjZGVmaW5lIEhFQVBf TUlOX0ZJTExGQUNUT1IJCQkxMAogI2RlZmluZSBIRUFQX0RFRkFVTFRfRklMTEZBQ1RPUgkJ MTAwCisjZGVmaW5lIEhFQVBfREVGQVVMVF9VU0VSX0NBVEFMT0dfVEFCTEUJCWZhbHNlCiAK IC8qCiAgKiBSZWxhdGlvbkdldFRvYXN0VHVwbGVUYXJnZXQKQEAgLTM3OCw2ICszODAsOSBA QCB0eXBlZGVmIHN0cnVjdCBTdGRSZE9wdGlvbnMKICAqIFJlbGF0aW9uSXNVc2VkQXNDYXRh bG9nVGFibGUKICAqCQlSZXR1cm5zIHdoZXRoZXIgdGhlIHJlbGF0aW9uIHNob3VsZCBiZSB0 cmVhdGVkIGFzIGEgY2F0YWxvZyB0YWJsZQogICoJCWZyb20gdGhlIHBvdiBvZiBsb2dpY2Fs IGRlY29kaW5nLiAgTm90ZSBtdWx0aXBsZSBldmFsIG9mIGFyZ3VtZW50IQorICoJCVRoaXMg ZGVmaW5pdGlvbiBzaG91bGQgbm90IGludm9rZSBhbnl0aGluZyB0aGF0IHBlcmZvcm1zIGNh dGFsb2cKKyAqCQlhY2Nlc3M7IG90aGVyd2lzZSBpdCBtYXkgY2F1c2UgaW5maW5pdGUgcmVj dXJzaW9uLiBDaGVjayB0aGUgY29tbWVudHMKKyAqCQlpbiBSZWxhdGlvbklzQWNjZXNzaWJs ZUluTG9naWNhbERlY29kaW5nKCkgZm9yIGRldGFpbHMuCiAgKi8KICNkZWZpbmUgUmVsYXRp b25Jc1VzZWRBc0NhdGFsb2dUYWJsZShyZWxhdGlvbikJXAogCSgocmVsYXRpb24pLT5yZF9v cHRpb25zICYmIFwKQEAgLTY3OCwxMiArNjgzLDQxIEBAIFJlbGF0aW9uQ2xvc2VTbWdyKFJl bGF0aW9uIHJlbGF0aW9uKQogICogUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNv ZGluZwogICoJCVRydWUgaWYgd2UgbmVlZCB0byBsb2cgZW5vdWdoIGluZm9ybWF0aW9uIHRv IGhhdmUgYWNjZXNzIHZpYQogICoJCWRlY29kaW5nIHNuYXBzaG90LgorICoJCVRoaXMgZGVm aW5pdGlvbiBzaG91bGQgbm90IGludm9rZSBhbnl0aGluZyB0aGF0IHBlcmZvcm1zIGNhdGFs b2cKKyAqCQlhY2Nlc3MuIE90aGVyd2lzZSwgZS5nLiBsb2dnaW5nIGEgV0FMIGVudHJ5IGZv ciBjYXRhbG9nIHJlbGF0aW9uIG1heQorICoJCWludm9rZSB0aGlzIGZ1bmN0aW9uLCB3aGlj aCB3aWxsIGluIHR1cm4gZG8gY2F0YWxvZyBhY2Nlc3MsIHdoaWNoIG1heQorICoJCWluIHR1 cm4gY2F1c2UgYW5vdGhlciBzaW1pbGFyIFdBTCBlbnRyeSB0byBiZSBsb2dnZWQsIGxlYWRp bmcgdG8KKyAqCQlpbmZpbml0ZSByZWN1cnNpb24uCiAgKi8KICNkZWZpbmUgUmVsYXRpb25J c0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyhyZWxhdGlvbikgXAogCShYTG9nTG9naWNh bEluZm9BY3RpdmUoKSAmJiBcCiAJIFJlbGF0aW9uTmVlZHNXQUwocmVsYXRpb24pICYmIFwK IAkgKElzQ2F0YWxvZ1JlbGF0aW9uKHJlbGF0aW9uKSB8fCBSZWxhdGlvbklzVXNlZEFzQ2F0 YWxvZ1RhYmxlKHJlbGF0aW9uKSkpCiAKKy8qCisgKiBJbmRleElzVXNlckNhdGFsb2cKKyAq CQlUcnVlIGlmIGluZGV4IGlzIGxpbmtlZCB0byBhIHVzZXIgY2F0YWxvZyByZWxhdGlvbi4K KyAqLworI2RlZmluZSBJbmRleElzVXNlckNhdGFsb2cocmVsYXRpb24pCQkJCQkJCQkJCQlc CisJKEFzc2VydE1hY3JvKHJlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9J TkRFWCksCQkJCVwKKwkgKHJlbGF0aW9uKS0+cmRfaW5kZXgtPmluZGlzdXNlcmNhdGFsb2cp CisKKy8qCisgKiBJbmRleElzQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nCisgKgkJVHJ1 ZSBpZiB3ZSBuZWVkIHRvIGxvZyBlbm91Z2ggaW5mb3JtYXRpb24gdG8gaGF2ZSBhY2Nlc3Mg dmlhCisgKgkJZGVjb2Rpbmcgc25hcHNob3QuCisgKgkJVGhpcyBkZWZpbml0aW9uIHNob3Vs ZCBub3QgaW52b2tlIGFueXRoaW5nIHRoYXQgcGVyZm9ybXMgY2F0YWxvZworICoJCWFjY2Vz cy4gT3RoZXJ3aXNlLCBlLmcuIGxvZ2dpbmcgYSBXQUwgZW50cnkgZm9yIGNhdGFsb2cgcmVs YXRpb24gbWF5CisgKgkJaW52b2tlIHRoaXMgZnVuY3Rpb24sIHdoaWNoIHdpbGwgaW4gdHVy biBkbyBjYXRhbG9nIGFjY2Vzcywgd2hpY2ggbWF5CisgKgkJaW4gdHVybiBjYXVzZSBhbm90 aGVyIHNpbWlsYXIgV0FMIGVudHJ5IHRvIGJlIGxvZ2dlZCwgbGVhZGluZyB0bworICoJCWlu ZmluaXRlIHJlY3Vyc2lvbi4KKyAqLworI2RlZmluZSBJbmRleElzQWNjZXNzaWJsZUluTG9n aWNhbERlY29kaW5nKHJlbGF0aW9uKSBcCisJKEFzc2VydE1hY3JvKHJlbGF0aW9uLT5yZF9y ZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9JTkRFWCksIFwKKwkgWExvZ0xvZ2ljYWxJbmZvQWN0 aXZlKCkgJiYgXAorCSBSZWxhdGlvbk5lZWRzV0FMKHJlbGF0aW9uKSAmJiBcCisJIChJc0Nh dGFsb2dSZWxhdGlvbihyZWxhdGlvbikgfHwgSW5kZXhJc1VzZXJDYXRhbG9nKHJlbGF0aW9u KSkpCisKIC8qCiAgKiBSZWxhdGlvbklzTG9naWNhbGx5TG9nZ2VkCiAgKgkJVHJ1ZSBpZiB3 ZSBuZWVkIHRvIGxvZyBlbm91Z2ggaW5mb3JtYXRpb24gdG8gZXh0cmFjdCB0aGUgZGF0YSBm cm9tIHRoZQotLSAKMi4zNC4xCgo= --------------ulL7c4xqDnt0SfJwoobL67iT--