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 1oyVvo-0006rZ-57 for pgsql-hackers@arkaria.postgresql.org; Fri, 25 Nov 2022 10:27:40 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oyVvm-0007yR-PR for pgsql-hackers@arkaria.postgresql.org; Fri, 25 Nov 2022 10:27:38 +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 1oyVvm-0007xv-Ah for pgsql-hackers@lists.postgresql.org; Fri, 25 Nov 2022 10:27:38 +0000 Received: from mail-wm1-x32e.google.com ([2a00:1450:4864:20::32e]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1oyVvj-0007bj-Jw for pgsql-hackers@postgresql.org; Fri, 25 Nov 2022 10:27:37 +0000 Received: by mail-wm1-x32e.google.com with SMTP id v7so3129505wmn.0 for ; Fri, 25 Nov 2022 02:27:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=in-reply-to:content-language:references:cc:to:from:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=opCtWr1izZadyV0sxf1OulvhGiZymHptHCC88fQ+g4w=; b=aOw3m9u2ofvWPLJv5lH+j1InZeBCmlu7mZCjza6s/OTKHi4kaN3ahaHI8VZuyTzBbR BmmEGUouSrNdT2Ug8sNzrSdwVeTUa/UoNVLgvQktjqqanppl95xJLk6ec+jdd9sBkSvw feDgMGu/dCBuf+r6mQ0n0EAKz5q0Ts3jECZ9+npnzhdDYpfuzJegcj/VD7poOt11oEVf 1a9uZT1ZgAeGDEXYAboTLYqYBac/OQzFiQJse3b97XIkz9QqjdsGImWeSrdEXYzWgAAu WkYUDNF73LdQO2ver28xDmOwH1hZlDpezbmSHA7RPCrUL67ZB9KK2PoORTAbwuW+vD9T 0ZZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-language:references:cc:to:from:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=opCtWr1izZadyV0sxf1OulvhGiZymHptHCC88fQ+g4w=; b=p+hmqkpAkilAGxuk4FSxnA0Idt28ASAc5vh8pg/rStpCfnNR+ZIjWBtNWDW37wfimc KlYWZn8Hb2ZpQcfVdPilsL53sVPnqLMD2xLhg8mgidYT0ooodQqDUTs9adn+2Pi+YHxu yUvGZdi02CVLazgylwz4JO5w6+Ch042XNA+RuyBh0bmH0WdPDnmV9F7Nc4/Ls1qCbcSb k5QHO98L7RvPKAJorlWF5FJne83mfDUBPDfHhTJx2TJD5NynY/TbrL7aVLT5NJ89KOMg PJqNgzqXi72oq/C9mnFobFxN1uE6M4lc1i5YQfIuvVCgfmRZO3D/Bb+r2EuAiUueEo9C FQag== X-Gm-Message-State: ANoB5pkVu7t7Q2zTvDdq73xkIggF6dWa8X/Gsvu5Bdi01UGymftcDGTa EAahu/RStPgTU90rJ6URr/U= X-Google-Smtp-Source: AA0mqf64y+zH75/g+KxrO6kztxV9YDFqrV+W9oxYloN3O9YIiuEvCgQO1+pMn5fqH/S6aY2/3E7pKA== X-Received: by 2002:a05:600c:a41:b0:3cf:895a:b22b with SMTP id c1-20020a05600c0a4100b003cf895ab22bmr14367709wmq.81.1669372054420; Fri, 25 Nov 2022 02:27:34 -0800 (PST) Received: from [192.168.6.81] ([54.239.6.185]) by smtp.gmail.com with ESMTPSA id o9-20020a5d4a89000000b00241fde8fe04sm3419679wrq.7.2022.11.25.02.27.33 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 25 Nov 2022 02:27:33 -0800 (PST) Content-Type: multipart/mixed; boundary="------------7ZmIvXt85wexUOjr1KIp9tQR" Message-ID: Date: Fri, 25 Nov 2022 11:26:16 +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 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> Content-Language: en-US In-Reply-To: <178cf7da-9bd7-e328-9c49-e28ac4701352@gmail.com> 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. --------------7ZmIvXt85wexUOjr1KIp9tQR Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit 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. Regards, -- Bertrand Drouvot PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com --------------7ZmIvXt85wexUOjr1KIp9tQR 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 RnJvbSAyZGUyYjk5MTdkNDNkNTk4ZGE1NmM5OTYzNjFkOTM0YzQ1ZTUyZGYyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogRnJpLCAyNSBOb3YgMjAyMiAwOTo0Mjo0MCArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjI3XSBBZGQgaW5mbyBpbiBXQUwgcmVjb3JkcyBpbiBwcmVwYXJhdGlvbiBmb3IgbG9n aWNhbCBzbG90CiBjb25mbGljdCBoYW5kbGluZy4KCldoZW4gYSBXQUwgcmVwbGF5IG9uIHN0 YW5kYnkgaW5kaWNhdGVzIHRoYXQgYSBjYXRhbG9nIHRhYmxlIHR1cGxlIGlzCnRvIGJlIGRl bGV0ZWQgYnkgYW4geGlkIHRoYXQgaXMgZ3JlYXRlciB0aGFuIGEgbG9naWNhbCBzbG90J3MK Y2F0YWxvZ194bWluLCB0aGVuIHRoYXQgbWVhbnMgdGhlIHNsb3QncyBjYXRhbG9nX3htaW4g Y29uZmxpY3RzIHdpdGgKdGhlIHhpZCwgYW5kIHdlIG5lZWQgdG8gaGFuZGxlIHRoZSBjb25m bGljdC4gIFdoaWxlIHN1YnNlcXVlbnQgY29tbWl0cwp3aWxsIGRvIHRoZSBhY3R1YWwgY29u ZmxpY3QgaGFuZGxpbmcsIHRoaXMgY29tbWl0IGFkZHMgYSBuZXcgZmllbGQKb25DYXRhbG9n VGFibGUgaW4gc3VjaCBXQUwgcmVjb3JkcywgdGhhdCBpcyB0cnVlIGZvciBjYXRhbG9nIHRh YmxlcywKc28gYXMgdG8gYXJyYW5nZSBmb3IgY29uZmxpY3QgaGFuZGxpbmcuCgpBdXRob3I6 IEFuZHJlcyBGcmV1bmQgKGluIGFuIG9sZGVyIHZlcnNpb24pLCBBbWl0IEtoYW5kZWthciwg QmVydHJhbmQKRHJvdXZvdApSZXZpZXdlZC1CeTogQmVydHJhbmQgRHJvdXZvdCwgQW5kcmVz IEZyZXVuZCwgUm9iZXJ0IEhhYXMsIEZhYnJpemlvIGRlClJveWVzIE1lbGxvCi0tLQogY29u dHJpYi90ZXN0X2RlY29kaW5nL2V4cGVjdGVkL2RkbC5vdXQgIHwgMjkgKysrKysrKysrKysr KwogY29udHJpYi90ZXN0X2RlY29kaW5nL3NxbC9kZGwuc3FsICAgICAgIHwgIDcgKysrKwog ZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgICAgICAgICAgICAgIHwgMTEgKysrKysKIHNy Yy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vcmVsb3B0aW9ucy5jICB8ICAyICstCiBzcmMvYmFj a2VuZC9hY2Nlc3MvZ2lzdC9naXN0eGxvZy5jICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9h Y2Nlc3MvaGFzaC9oYXNoaW5zZXJ0LmMgICAgfCAgMSArCiBzcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9oZWFwYW0uYyAgICAgICAgfCAgNCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv cHJ1bmVoZWFwLmMgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJp bGl0eW1hcC5jIHwgIDMgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cGFnZS5j ICAgICB8ICAyICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMgICB8 ICAxICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAgICAgICAgICB8IDE0ICsr KysrLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICB8IDU1ICsr KysrKysrKysrKysrKysrKysrKysrKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9naXN0eGxvZy5o ICAgICAgICAgICB8ICAyICsKIHNyYy9pbmNsdWRlL2FjY2Vzcy9oYXNoX3hsb2cuaCAgICAg ICAgICB8ICAxICsKIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oICAgICAgICB8 ICA1ICsrLQogc3JjL2luY2x1ZGUvYWNjZXNzL25idHhsb2cuaCAgICAgICAgICAgIHwgIDIg Kwogc3JjL2luY2x1ZGUvYWNjZXNzL3NwZ3hsb2cuaCAgICAgICAgICAgIHwgIDEgKwogc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19pbmRleC5oICAgICAgICAgIHwgIDIgKwogc3JjL2luY2x1 ZGUvdXRpbHMvcmVsLmggICAgICAgICAgICAgICAgIHwgMzQgKysrKysrKysrKysrKysrCiAy MCBmaWxlcyBjaGFuZ2VkLCAxNjkgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKICAx MS44JSBjb250cmliL3Rlc3RfZGVjb2RpbmcvZXhwZWN0ZWQvCiAgIDcuMCUgY29udHJpYi90 ZXN0X2RlY29kaW5nL3NxbC8KICAgNi44JSBkb2Mvc3JjL3NnbWwvCiAgIDcuOCUgc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvCiAgIDUuOCUgc3JjL2JhY2tlbmQvYWNjZXNzLwogICA2LjMl IHNyYy9iYWNrZW5kL2NhdGFsb2cvCiAgMjMuOSUgc3JjL2JhY2tlbmQvY29tbWFuZHMvCiAg IDYuMSUgc3JjL2luY2x1ZGUvYWNjZXNzLwogIDIyLjYlIHNyYy9pbmNsdWRlL3V0aWxzLwoK ZGlmZiAtLWdpdCBhL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9leHBlY3RlZC9kZGwub3V0IGIv Y29udHJpYi90ZXN0X2RlY29kaW5nL2V4cGVjdGVkL2RkbC5vdXQKaW5kZXggOWEyOGI1ZGRj NS4uNDBjZjJmNGRjNCAxMDA2NDQKLS0tIGEvY29udHJpYi90ZXN0X2RlY29kaW5nL2V4cGVj dGVkL2RkbC5vdXQKKysrIGIvY29udHJpYi90ZXN0X2RlY29kaW5nL2V4cGVjdGVkL2RkbC5v dXQKQEAgLTQ4Myw2ICs0ODMsNyBAQCBDUkVBVEUgVEFCTEUgcmVwbGljYXRpb25fbWV0YWRh dGEgKAogKQogV0lUSCAodXNlcl9jYXRhbG9nX3RhYmxlID0gdHJ1ZSkKIDsKK0NSRUFURSBJ TkRFWCByZXBsaWNhdGlvbl9tZXRhZGF0YV9pZHgxIG9uIHJlcGxpY2F0aW9uX21ldGFkYXRh KHJlbGF0aW9uKTsKIFxkKyByZXBsaWNhdGlvbl9tZXRhZGF0YQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlICJwdWJsaWMucmVwbGlj YXRpb25fbWV0YWRhdGEiCiAgIENvbHVtbiAgfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVs bGFibGUgfCAgICAgICAgICAgICAgICAgICAgIERlZmF1bHQgICAgICAgICAgICAgICAgICAg ICAgfCBTdG9yYWdlICB8IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9uIApAQCAtNDkyLDgg KzQ5MywxNSBAQCBXSVRIICh1c2VyX2NhdGFsb2dfdGFibGUgPSB0cnVlKQogIG9wdGlvbnMg IHwgdGV4dFtdICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZXh0ZW5kZWQgfCAgICAgICAgICAg ICAgfCAKIEluZGV4ZXM6CiAgICAgInJlcGxpY2F0aW9uX21ldGFkYXRhX3BrZXkiIFBSSU1B UlkgS0VZLCBidHJlZSAoaWQpCisgICAgInJlcGxpY2F0aW9uX21ldGFkYXRhX2lkeDEiIGJ0 cmVlIChyZWxhdGlvbikKIE9wdGlvbnM6IHVzZXJfY2F0YWxvZ190YWJsZT10cnVlCiAKK1NF TEVDVCBib29sX2FuZChpbmRpc3VzZXJjYXRhbG9nKSBmcm9tIHBnX2luZGV4IHdoZXJlIGlu ZHJlbGlkID0gJ3JlcGxpY2F0aW9uX21ldGFkYXRhJzo6cmVnY2xhc3M7CisgYm9vbF9hbmQg CistLS0tLS0tLS0tCisgdAorKDEgcm93KQorCiBJTlNFUlQgSU5UTyByZXBsaWNhdGlvbl9t ZXRhZGF0YShyZWxhdGlvbiwgb3B0aW9ucykKIFZBTFVFUyAoJ2ZvbycsIEFSUkFZWydhJywg J2InXSk7CiBBTFRFUiBUQUJMRSByZXBsaWNhdGlvbl9tZXRhZGF0YSBSRVNFVCAodXNlcl9j YXRhbG9nX3RhYmxlKTsKQEAgLTUwNiw2ICs1MTQsMTMgQEAgQUxURVIgVEFCTEUgcmVwbGlj YXRpb25fbWV0YWRhdGEgUkVTRVQgKHVzZXJfY2F0YWxvZ190YWJsZSk7CiAgb3B0aW9ucyAg fCB0ZXh0W10gIHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBleHRlbmRlZCB8ICAgICAgICAgICAg ICB8IAogSW5kZXhlczoKICAgICAicmVwbGljYXRpb25fbWV0YWRhdGFfcGtleSIgUFJJTUFS WSBLRVksIGJ0cmVlIChpZCkKKyAgICAicmVwbGljYXRpb25fbWV0YWRhdGFfaWR4MSIgYnRy ZWUgKHJlbGF0aW9uKQorCitTRUxFQ1QgYm9vbF9vcihpbmRpc3VzZXJjYXRhbG9nKSBmcm9t IHBnX2luZGV4IHdoZXJlIGluZHJlbGlkID0gJ3JlcGxpY2F0aW9uX21ldGFkYXRhJzo6cmVn Y2xhc3M7CisgYm9vbF9vciAKKy0tLS0tLS0tLQorIGYKKygxIHJvdykKIAogSU5TRVJUIElO VE8gcmVwbGljYXRpb25fbWV0YWRhdGEocmVsYXRpb24sIG9wdGlvbnMpCiBWQUxVRVMgKCdi YXInLCBBUlJBWVsnYScsICdiJ10pOwpAQCAtNTE5LDggKzUzNCwxNSBAQCBBTFRFUiBUQUJM RSByZXBsaWNhdGlvbl9tZXRhZGF0YSBTRVQgKHVzZXJfY2F0YWxvZ190YWJsZSA9IHRydWUp OwogIG9wdGlvbnMgIHwgdGV4dFtdICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZXh0ZW5kZWQg fCAgICAgICAgICAgICAgfCAKIEluZGV4ZXM6CiAgICAgInJlcGxpY2F0aW9uX21ldGFkYXRh X3BrZXkiIFBSSU1BUlkgS0VZLCBidHJlZSAoaWQpCisgICAgInJlcGxpY2F0aW9uX21ldGFk YXRhX2lkeDEiIGJ0cmVlIChyZWxhdGlvbikKIE9wdGlvbnM6IHVzZXJfY2F0YWxvZ190YWJs ZT10cnVlCiAKK1NFTEVDVCBib29sX2FuZChpbmRpc3VzZXJjYXRhbG9nKSBmcm9tIHBnX2lu ZGV4IHdoZXJlIGluZHJlbGlkID0gJ3JlcGxpY2F0aW9uX21ldGFkYXRhJzo6cmVnY2xhc3M7 CisgYm9vbF9hbmQgCistLS0tLS0tLS0tCisgdAorKDEgcm93KQorCiBJTlNFUlQgSU5UTyBy ZXBsaWNhdGlvbl9tZXRhZGF0YShyZWxhdGlvbiwgb3B0aW9ucykKIFZBTFVFUyAoJ2JsdWIn LCBOVUxMKTsKIC0tIG1ha2Ugc3VyZSByZXdyaXRlcyBkb24ndCB3b3JrCkBAIC01MzgsOCAr NTYwLDE1IEBAIEFMVEVSIFRBQkxFIHJlcGxpY2F0aW9uX21ldGFkYXRhIFNFVCAodXNlcl9j YXRhbG9nX3RhYmxlID0gZmFsc2UpOwogIHJld3JpdGVtZW9ybm90IHwgaW50ZWdlciB8ICAg ICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgcGxhaW4gICAgfCAgICAgICAgICAgICAgfCAKIEluZGV4ZXM6 CiAgICAgInJlcGxpY2F0aW9uX21ldGFkYXRhX3BrZXkiIFBSSU1BUlkgS0VZLCBidHJlZSAo aWQpCisgICAgInJlcGxpY2F0aW9uX21ldGFkYXRhX2lkeDEiIGJ0cmVlIChyZWxhdGlvbikK IE9wdGlvbnM6IHVzZXJfY2F0YWxvZ190YWJsZT1mYWxzZQogCitTRUxFQ1QgYm9vbF9vcihp bmRpc3VzZXJjYXRhbG9nKSBmcm9tIHBnX2luZGV4IHdoZXJlIGluZHJlbGlkID0gJ3JlcGxp Y2F0aW9uX21ldGFkYXRhJzo6cmVnY2xhc3M7CisgYm9vbF9vciAKKy0tLS0tLS0tLQorIGYK KygxIHJvdykKKwogSU5TRVJUIElOVE8gcmVwbGljYXRpb25fbWV0YWRhdGEocmVsYXRpb24s IG9wdGlvbnMpCiBWQUxVRVMgKCd6YXBob2QnLCBOVUxMKTsKIFNFTEVDVCBkYXRhIEZST00g cGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdyZWdyZXNzaW9uX3Nsb3QnLCBOVUxMLCBO VUxMLCAnaW5jbHVkZS14aWRzJywgJzAnLCAnc2tpcC1lbXB0eS14YWN0cycsICcxJyk7CmRp ZmYgLS1naXQgYS9jb250cmliL3Rlc3RfZGVjb2Rpbmcvc3FsL2RkbC5zcWwgYi9jb250cmli L3Rlc3RfZGVjb2Rpbmcvc3FsL2RkbC5zcWwKaW5kZXggNGY3NmJlZDcyYy4uODVkZGQ0YmUw MyAxMDA2NDQKLS0tIGEvY29udHJpYi90ZXN0X2RlY29kaW5nL3NxbC9kZGwuc3FsCisrKyBi L2NvbnRyaWIvdGVzdF9kZWNvZGluZy9zcWwvZGRsLnNxbApAQCAtMjc2LDE5ICsyNzYsMjUg QEAgQ1JFQVRFIFRBQkxFIHJlcGxpY2F0aW9uX21ldGFkYXRhICgKICkKIFdJVEggKHVzZXJf Y2F0YWxvZ190YWJsZSA9IHRydWUpCiA7CisKK0NSRUFURSBJTkRFWCByZXBsaWNhdGlvbl9t ZXRhZGF0YV9pZHgxIG9uIHJlcGxpY2F0aW9uX21ldGFkYXRhKHJlbGF0aW9uKTsKKwogXGQr IHJlcGxpY2F0aW9uX21ldGFkYXRhCitTRUxFQ1QgYm9vbF9hbmQoaW5kaXN1c2VyY2F0YWxv ZykgZnJvbSBwZ19pbmRleCB3aGVyZSBpbmRyZWxpZCA9ICdyZXBsaWNhdGlvbl9tZXRhZGF0 YSc6OnJlZ2NsYXNzOwogCiBJTlNFUlQgSU5UTyByZXBsaWNhdGlvbl9tZXRhZGF0YShyZWxh dGlvbiwgb3B0aW9ucykKIFZBTFVFUyAoJ2ZvbycsIEFSUkFZWydhJywgJ2InXSk7CiAKIEFM VEVSIFRBQkxFIHJlcGxpY2F0aW9uX21ldGFkYXRhIFJFU0VUICh1c2VyX2NhdGFsb2dfdGFi bGUpOwogXGQrIHJlcGxpY2F0aW9uX21ldGFkYXRhCitTRUxFQ1QgYm9vbF9vcihpbmRpc3Vz ZXJjYXRhbG9nKSBmcm9tIHBnX2luZGV4IHdoZXJlIGluZHJlbGlkID0gJ3JlcGxpY2F0aW9u X21ldGFkYXRhJzo6cmVnY2xhc3M7CiAKIElOU0VSVCBJTlRPIHJlcGxpY2F0aW9uX21ldGFk YXRhKHJlbGF0aW9uLCBvcHRpb25zKQogVkFMVUVTICgnYmFyJywgQVJSQVlbJ2EnLCAnYidd KTsKIAogQUxURVIgVEFCTEUgcmVwbGljYXRpb25fbWV0YWRhdGEgU0VUICh1c2VyX2NhdGFs b2dfdGFibGUgPSB0cnVlKTsKIFxkKyByZXBsaWNhdGlvbl9tZXRhZGF0YQorU0VMRUNUIGJv b2xfYW5kKGluZGlzdXNlcmNhdGFsb2cpIGZyb20gcGdfaW5kZXggd2hlcmUgaW5kcmVsaWQg PSAncmVwbGljYXRpb25fbWV0YWRhdGEnOjpyZWdjbGFzczsKIAogSU5TRVJUIElOVE8gcmVw bGljYXRpb25fbWV0YWRhdGEocmVsYXRpb24sIG9wdGlvbnMpCiBWQUxVRVMgKCdibHViJywg TlVMTCk7CkBAIC0yOTksNiArMzA1LDcgQEAgQUxURVIgVEFCTEUgcmVwbGljYXRpb25fbWV0 YWRhdGEgQUxURVIgQ09MVU1OIHJld3JpdGVtZW9ybm90IFRZUEUgdGV4dDsKIAogQUxURVIg VEFCTEUgcmVwbGljYXRpb25fbWV0YWRhdGEgU0VUICh1c2VyX2NhdGFsb2dfdGFibGUgPSBm YWxzZSk7CiBcZCsgcmVwbGljYXRpb25fbWV0YWRhdGEKK1NFTEVDVCBib29sX29yKGluZGlz dXNlcmNhdGFsb2cpIGZyb20gcGdfaW5kZXggd2hlcmUgaW5kcmVsaWQgPSAncmVwbGljYXRp b25fbWV0YWRhdGEnOjpyZWdjbGFzczsKIAogSU5TRVJUIElOVE8gcmVwbGljYXRpb25fbWV0 YWRhdGEocmVsYXRpb24sIG9wdGlvbnMpCiBWQUxVRVMgKCd6YXBob2QnLCBOVUxMKTsKZGlm ZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2Nh dGFsb2dzLnNnbWwKaW5kZXggOWVkMmIwMjBiNy4uMThkNmI5OWNhYyAxMDA2NDQKLS0tIGEv ZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dz LnNnbWwKQEAgLTQ0MzcsNiArNDQzNywxNyBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNlYWJs ZT4mbHQ7aXRlcmF0aW9uIGNvdW50Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4m bAogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCisgICAgIDxyb3c+Cisg ICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29s dW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5pbmRpc3VzZXJjYXRhbG9n PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Ym9vbDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAg IDxwYXJhPgorICAgICAgIElmIHRydWUsIHRoZSBpbmRleCBpcyBsaW5rZWQgdG8gYSB0YWJs ZSB0aGF0IGlzIGRlY2xhcmVkIGFzIGFuIGFkZGl0aW9uYWwKKyAgICAgICBjYXRhbG9nIHRh YmxlIGZvciBwdXJwb3NlcyBvZiBsb2dpY2FsIHJlcGxpY2F0aW9uIChtZWFucyBoYXMgPGxp bmsgbGlua2VuZD0ic3FsLWNyZWF0ZXRhYmxlIj48bGl0ZXJhbD51c2VyX2NhdGFsb2dfdGFi bGU8L2xpdGVyYWw+PC9saW5rPikKKyAgICAgICBzZXQgdG8gdHJ1ZS4KKyAgICAgIDwvcGFy YT48L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAgICA8cm93PgogICAgICAgPGVudHJ5IHJv bGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9u Ij4KICAgICAgICA8c3RydWN0ZmllbGQ+aW5kaXNyZXBsaWRlbnQ8L3N0cnVjdGZpZWxkPiA8 dHlwZT5ib29sPC90eXBlPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1v bi9yZWxvcHRpb25zLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3JlbG9wdGlvbnMu YwppbmRleCA3NWI3MzQ0ODkxLi40YjQxZjVlNjhkIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvY29tbW9uL3JlbG9wdGlvbnMuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv Y29tbW9uL3JlbG9wdGlvbnMuYwpAQCAtMTIwLDcgKzEyMCw3IEBAIHN0YXRpYyByZWxvcHRf Ym9vbCBib29sUmVsT3B0c1tdID0KIAkJCVJFTE9QVF9LSU5EX0hFQVAsCiAJCQlBY2Nlc3NF eGNsdXNpdmVMb2NrCiAJCX0sCi0JCWZhbHNlCisJCUhFQVBfREVGQVVMVF9VU0VSX0NBVEFM T0dfVEFCTEUKIAl9LAogCXsKIAkJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L2dpc3QvZ2lzdHhsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMK aW5kZXggY2I1YWZmYTNkMi4uNjVmYzE4NTU0YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2dpc3QvZ2lzdHhsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9n aXN0eGxvZy5jCkBAIC02MDgsNiArNjA4LDcgQEAgZ2lzdFhMb2dQYWdlUmV1c2UoUmVsYXRp b24gcmVsLCBCbG9ja051bWJlciBibGtubywgRnVsbFRyYW5zYWN0aW9uSWQgZGVsZXRlWGlk KQogCSAqLwogCiAJLyogWExPRyBzdHVmZiAqLworCXhscmVjX3JldXNlLm9uQ2F0YWxvZ1Rh YmxlID0gSW5kZXhJc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyhyZWwpOwogCXhscmVj X3JldXNlLmxvY2F0b3IgPSByZWwtPnJkX2xvY2F0b3I7CiAJeGxyZWNfcmV1c2UuYmxvY2sg PSBibGtubzsKIAl4bHJlY19yZXVzZS5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiA9IGRlbGV0 ZVhpZDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hpbnNlcnQu YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hpbnNlcnQuYwppbmRleCA5YTkyMWUz NDFlLi45OWQ1ZDUzZDIxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9o YXNoaW5zZXJ0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaGluc2VydC5j CkBAIC00MzIsNiArNDMyLDcgQEAgX2hhc2hfdmFjdXVtX29uZV9wYWdlKFJlbGF0aW9uIHJl bCwgUmVsYXRpb24gaHJlbCwgQnVmZmVyIG1ldGFidWYsIEJ1ZmZlciBidWYpCiAJCQl4bF9o YXNoX3ZhY3V1bV9vbmVfcGFnZSB4bHJlYzsKIAkJCVhMb2dSZWNQdHIJcmVjcHRyOwogCisJ CQl4bHJlYy5vbkNhdGFsb2dUYWJsZSA9IFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2Fs RGVjb2RpbmcoaHJlbCk7CiAJCQl4bHJlYy5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiA9IHNu YXBzaG90Q29uZmxpY3RIb3Jpem9uOwogCQkJeGxyZWMubnR1cGxlcyA9IG5kZWxldGFibGU7 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKaW5kZXggNzQ3ZGI1MDM3Ni4uN2Q0OGI5 MjE0YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKQEAgLTY4MzEsNiArNjgzMSw3 IEBAIGhlYXBfZnJlZXplX2V4ZWN1dGVfcHJlcGFyZWQoUmVsYXRpb24gcmVsLCBCdWZmZXIg YnVmZmVyLAogCQlzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiA9IEZyZWV6ZUxpbWl0OwogCQlU cmFuc2FjdGlvbklkUmV0cmVhdChzbmFwc2hvdENvbmZsaWN0SG9yaXpvbik7CiAKKwkJeGxy ZWMub25DYXRhbG9nVGFibGUgPSBSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29k aW5nKHJlbCk7CiAJCXhscmVjLnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uID0gc25hcHNob3RD b25mbGljdEhvcml6b247CiAJCXhscmVjLm5wbGFucyA9IG5wbGFuczsKIApAQCAtODI0OCw3 ICs4MjQ5LDcgQEAgYm90dG9tdXBfc29ydF9hbmRfc2hyaW5rKFRNX0luZGV4RGVsZXRlT3Ag KmRlbHN0YXRlKQogICogdXBkYXRlIHRoZSBoZWFwIHBhZ2UncyBMU04uCiAgKi8KIFhMb2dS ZWNQdHIKLWxvZ19oZWFwX3Zpc2libGUoUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IsIEJ1ZmZl ciBoZWFwX2J1ZmZlciwgQnVmZmVyIHZtX2J1ZmZlciwKK2xvZ19oZWFwX3Zpc2libGUoUmVs YXRpb24gcmVsLCBCdWZmZXIgaGVhcF9idWZmZXIsIEJ1ZmZlciB2bV9idWZmZXIsCiAJCQkJ IFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sIHVpbnQ4IHZtZmxhZ3Mp CiB7CiAJeGxfaGVhcF92aXNpYmxlIHhscmVjOwpAQCAtODI1OCw2ICs4MjU5LDcgQEAgbG9n X2hlYXBfdmlzaWJsZShSZWxGaWxlTG9jYXRvciBybG9jYXRvciwgQnVmZmVyIGhlYXBfYnVm ZmVyLCBCdWZmZXIgdm1fYnVmZmVyLAogCUFzc2VydChCdWZmZXJJc1ZhbGlkKGhlYXBfYnVm ZmVyKSk7CiAJQXNzZXJ0KEJ1ZmZlcklzVmFsaWQodm1fYnVmZmVyKSk7CiAKKwl4bHJlYy5v bkNhdGFsb2dUYWJsZSA9IFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2Rpbmco cmVsKTsKIAl4bHJlYy5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiA9IHNuYXBzaG90Q29uZmxp Y3RIb3Jpem9uOwogCXhscmVjLmZsYWdzID0gdm1mbGFnczsKIAlYTG9nQmVnaW5JbnNlcnQo KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggOTFjNWY1ZTllZi4u YzIyNDRjY2FhMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVo ZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKQEAgLTQx OCw2ICs0MTgsNyBAQCBoZWFwX3BhZ2VfcHJ1bmUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZl ciBidWZmZXIsCiAJCQl4bF9oZWFwX3BydW5lIHhscmVjOwogCQkJWExvZ1JlY1B0cglyZWNw dHI7CiAKKwkJCXhscmVjLm9uQ2F0YWxvZ1RhYmxlID0gUmVsYXRpb25Jc0FjY2Vzc2libGVJ bkxvZ2ljYWxEZWNvZGluZyhyZWxhdGlvbik7CiAJCQl4bHJlYy5zbmFwc2hvdENvbmZsaWN0 SG9yaXpvbiA9IHByc3RhdGUuc25hcHNob3RDb25mbGljdEhvcml6b247CiAJCQl4bHJlYy5u cmVkaXJlY3RlZCA9IHByc3RhdGUubnJlZGlyZWN0ZWQ7CiAJCQl4bHJlYy5uZGVhZCA9IHBy c3RhdGUubmRlYWQ7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNp YmlsaXR5bWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMK aW5kZXggNGVkNzAyNzVlMi4uMGJkNzNmNGQ5ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3Zpc2liaWxpdHltYXAuYwpAQCAtMjgzLDggKzI4Myw3IEBAIHZpc2liaWxpdHltYXBf c2V0KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgaGVhcEJsaywgQnVmZmVyIGhlYXBCdWYs CiAJCQlpZiAoWExvZ1JlY1B0cklzSW52YWxpZChyZWNwdHIpKQogCQkJewogCQkJCUFzc2Vy dCghSW5SZWNvdmVyeSk7Ci0JCQkJcmVjcHRyID0gbG9nX2hlYXBfdmlzaWJsZShyZWwtPnJk X2xvY2F0b3IsIGhlYXBCdWYsIHZtQnVmLAotCQkJCQkJCQkJCSAgY3V0b2ZmX3hpZCwgZmxh Z3MpOworCQkJCXJlY3B0ciA9IGxvZ19oZWFwX3Zpc2libGUocmVsLCBoZWFwQnVmLCB2bUJ1 ZiwgY3V0b2ZmX3hpZCwgZmxhZ3MpOwogCiAJCQkJLyoKIAkJCQkgKiBJZiBkYXRhIGNoZWNr c3VtcyBhcmUgZW5hYmxlZCAob3Igd2FsX2xvZ19oaW50cz1vbiksIHdlCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHBhZ2UuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9uYnRyZWUvbmJ0cGFnZS5jCmluZGV4IDY1YWE0NDg5M2MuLjFlNWJmNzUxM2UgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cGFnZS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cGFnZS5jCkBAIC04MzYsNiArODM2LDcgQEAg X2J0X2xvZ19yZXVzZV9wYWdlKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEZ1 bGxUcmFuc2FjdGlvbklkIHNhZmV4aWQpCiAJICovCiAKIAkvKiBYTE9HIHN0dWZmICovCisJ eGxyZWNfcmV1c2Uub25DYXRhbG9nVGFibGUgPSBJbmRleElzQWNjZXNzaWJsZUluTG9naWNh bERlY29kaW5nKHJlbCk7CiAJeGxyZWNfcmV1c2UubG9jYXRvciA9IHJlbC0+cmRfbG9jYXRv cjsKIAl4bHJlY19yZXVzZS5ibG9jayA9IGJsa25vOwogCXhscmVjX3JldXNlLnNuYXBzaG90 Q29uZmxpY3RIb3Jpem9uID0gc2FmZXhpZDsKQEAgLTEzNTgsNiArMTM1OSw3IEBAIF9idF9k ZWxpdGVtc19kZWxldGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAogCQlYTG9nUmVjUHRy CXJlY3B0cjsKIAkJeGxfYnRyZWVfZGVsZXRlIHhscmVjX2RlbGV0ZTsKIAorCQl4bHJlY19k ZWxldGUub25DYXRhbG9nVGFibGUgPSBJbmRleElzQWNjZXNzaWJsZUluTG9naWNhbERlY29k aW5nKHJlbCk7CiAJCXhscmVjX2RlbGV0ZS5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiA9IHNu YXBzaG90Q29uZmxpY3RIb3Jpem9uOwogCQl4bHJlY19kZWxldGUubmRlbGV0ZWQgPSBuZGVs ZXRhYmxlOwogCQl4bHJlY19kZWxldGUubnVwZGF0ZWQgPSBudXBkYXRhYmxlOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMKaW5kZXggYWQ5MGIyMTNiOS4uMDAwMTMz YWFkNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0u YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jCkBAIC01MDMs NiArNTAzLDcgQEAgdmFjdXVtUmVkaXJlY3RBbmRQbGFjZWhvbGRlcihSZWxhdGlvbiBpbmRl eCwgQnVmZmVyIGJ1ZmZlcikKIAlzcGd4bG9nVmFjdXVtUmVkaXJlY3QgeGxyZWM7CiAJR2xv YmFsVmlzU3RhdGUgKnZpc3Rlc3Q7CiAKKwl4bHJlYy5vbkNhdGFsb2dUYWJsZSA9IEluZGV4 SXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcoaW5kZXgpOwogCXhscmVjLm5Ub1BsYWNl aG9sZGVyID0gMDsKIAl4bHJlYy5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiA9IEludmFsaWRU cmFuc2FjdGlvbklkOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4 LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKaW5kZXggNjFmMWQzOTI2YS4uZjZi MmM5YWM3MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBi L3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAtMTIzLDcgKzEyMyw4IEBAIHN0YXRp YyB2b2lkIFVwZGF0ZUluZGV4UmVsYXRpb24oT2lkIGluZGV4b2lkLCBPaWQgaGVhcG9pZCwK IAkJCQkJCQkJYm9vbCBpc2V4Y2x1c2lvbiwKIAkJCQkJCQkJYm9vbCBpbW1lZGlhdGUsCiAJ CQkJCQkJCWJvb2wgaXN2YWxpZCwKLQkJCQkJCQkJYm9vbCBpc3JlYWR5KTsKKwkJCQkJCQkJ Ym9vbCBpc3JlYWR5LAorCQkJCQkJCQlib29sIGlzX3VzZXJfY2F0YWxvZyk7CiBzdGF0aWMg dm9pZCBpbmRleF91cGRhdGVfc3RhdHMoUmVsYXRpb24gcmVsLAogCQkJCQkJCSAgIGJvb2wg aGFzaW5kZXgsCiAJCQkJCQkJICAgZG91YmxlIHJlbHR1cGxlcyk7CkBAIC01NDUsNyArNTQ2 LDggQEAgVXBkYXRlSW5kZXhSZWxhdGlvbihPaWQgaW5kZXhvaWQsCiAJCQkJCWJvb2wgaXNl eGNsdXNpb24sCiAJCQkJCWJvb2wgaW1tZWRpYXRlLAogCQkJCQlib29sIGlzdmFsaWQsCi0J CQkJCWJvb2wgaXNyZWFkeSkKKwkJCQkJYm9vbCBpc3JlYWR5LAorCQkJCQlib29sIGlzX3Vz ZXJfY2F0YWxvZykKIHsKIAlpbnQydmVjdG9yICppbmRrZXk7CiAJb2lkdmVjdG9yICAqaW5k Y29sbGF0aW9uOwpAQCAtNjIyLDYgKzYyNCw3IEBAIFVwZGF0ZUluZGV4UmVsYXRpb24oT2lk IGluZGV4b2lkLAogCXZhbHVlc1tBbnVtX3BnX2luZGV4X2luZGNoZWNreG1pbiAtIDFdID0g Qm9vbEdldERhdHVtKGZhbHNlKTsKIAl2YWx1ZXNbQW51bV9wZ19pbmRleF9pbmRpc3JlYWR5 IC0gMV0gPSBCb29sR2V0RGF0dW0oaXNyZWFkeSk7CiAJdmFsdWVzW0FudW1fcGdfaW5kZXhf aW5kaXNsaXZlIC0gMV0gPSBCb29sR2V0RGF0dW0odHJ1ZSk7CisJdmFsdWVzW0FudW1fcGdf aW5kZXhfaW5kaXN1c2VyY2F0YWxvZyAtIDFdID0gQm9vbEdldERhdHVtKGlzX3VzZXJfY2F0 YWxvZyk7CiAJdmFsdWVzW0FudW1fcGdfaW5kZXhfaW5kaXNyZXBsaWRlbnQgLSAxXSA9IEJv b2xHZXREYXR1bShmYWxzZSk7CiAJdmFsdWVzW0FudW1fcGdfaW5kZXhfaW5ka2V5IC0gMV0g PSBQb2ludGVyR2V0RGF0dW0oaW5ka2V5KTsKIAl2YWx1ZXNbQW51bV9wZ19pbmRleF9pbmRj b2xsYXRpb24gLSAxXSA9IFBvaW50ZXJHZXREYXR1bShpbmRjb2xsYXRpb24pOwpAQCAtNzM1 LDYgKzczOCw3IEBAIGluZGV4X2NyZWF0ZShSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJVHJh bnNhY3Rpb25JZCByZWxmcm96ZW54aWQ7CiAJTXVsdGlYYWN0SWQgcmVsbWlubXhpZDsKIAli b29sCQljcmVhdGVfc3RvcmFnZSA9ICFSZWxGaWxlTnVtYmVySXNWYWxpZChyZWxGaWxlTnVt YmVyKTsKKwlib29sCQlpc3VzZXJjYXRhbG9nID0gZmFsc2U7CiAKIAkvKiBjb25zdHJhaW50 IGZsYWdzIGNhbiBvbmx5IGJlIHNldCB3aGVuIGEgY29uc3RyYWludCBpcyByZXF1ZXN0ZWQg Ki8KIAlBc3NlcnQoKGNvbnN0cl9mbGFncyA9PSAwKSB8fApAQCAtMTAxNCwxMyArMTAxOCwx NyBAQCBpbmRleF9jcmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCSAqCSAgKE9yLCBj b3VsZCBkZWZpbmUgYSBydWxlIHRvIG1haW50YWluIHRoZSBwcmVkaWNhdGUpIC0tTmVscywg RmViICc5MgogCSAqIC0tLS0tLS0tLS0tLS0tLS0KIAkgKi8KKwlpZiAoaGVhcFJlbGF0aW9u LT5yZF9vcHRpb25zKQorCQlpc3VzZXJjYXRhbG9nID0gKChTdGRSZE9wdGlvbnMgKikgKGhl YXBSZWxhdGlvbiktPnJkX29wdGlvbnMpLT51c2VyX2NhdGFsb2dfdGFibGU7CisKIAlVcGRh dGVJbmRleFJlbGF0aW9uKGluZGV4UmVsYXRpb25JZCwgaGVhcFJlbGF0aW9uSWQsIHBhcmVu dEluZGV4UmVsaWQsCiAJCQkJCQlpbmRleEluZm8sCiAJCQkJCQljb2xsYXRpb25PYmplY3RJ ZCwgY2xhc3NPYmplY3RJZCwgY29sb3B0aW9ucywKIAkJCQkJCWlzcHJpbWFyeSwgaXNfZXhj bHVzaW9uLAogCQkJCQkJKGNvbnN0cl9mbGFncyAmIElOREVYX0NPTlNUUl9DUkVBVEVfREVG RVJSQUJMRSkgPT0gMCwKIAkJCQkJCSFjb25jdXJyZW50ICYmICFpbnZhbGlkLAotCQkJCQkJ IWNvbmN1cnJlbnQpOworCQkJCQkJIWNvbmN1cnJlbnQsCisJCQkJCQlpc3VzZXJjYXRhbG9n KTsKIAogCS8qCiAJICogUmVnaXN0ZXIgcmVsY2FjaGUgaW52YWxpZGF0aW9uIG9uIHRoZSBp bmRleGVzJyBoZWFwIHJlbGF0aW9uLCB0bwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpp bmRleCA4NDUyMDhkNjYyLi5mYWExZmNjMDdkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNt ZHMuYwpAQCAtMTAzLDYgKzEwMyw3IEBACiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIK ICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKICNpbmNsdWRlICJ1dGlscy90eXBjYWNo ZS5oIgorI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogCiAvKgogICogT04gQ09NTUlUIGFjdGlv biBsaXN0CkBAIC0xNDE4Myw2ICsxNDE4NCwxMCBAQCBBVEV4ZWNTZXRSZWxPcHRpb25zKFJl bGF0aW9uIHJlbCwgTGlzdCAqZGVmTGlzdCwgQWx0ZXJUYWJsZVR5cGUgb3BlcmF0aW9uLAog CURhdHVtCQlyZXBsX3ZhbFtOYXR0c19wZ19jbGFzc107CiAJYm9vbAkJcmVwbF9udWxsW05h dHRzX3BnX2NsYXNzXTsKIAlib29sCQlyZXBsX3JlcGxbTmF0dHNfcGdfY2xhc3NdOworCUxp c3RDZWxsICAgKmNlbGw7CisJTGlzdAkgICAqcmVsX29wdGlvbnM7CisJYm9vbAkJY2F0YWxv Z190YWJsZV92YWwgPSBIRUFQX0RFRkFVTFRfVVNFUl9DQVRBTE9HX1RBQkxFOworCWJvb2wJ CWNhdGFsb2dfdGFibGUgPSBmYWxzZTsKIAlzdGF0aWMgY2hhciAqdmFsaWRuc3BzW10gPSBI RUFQX1JFTE9QVF9OQU1FU1BBQ0VTOwogCiAJaWYgKGRlZkxpc3QgPT0gTklMICYmIG9wZXJh dGlvbiAhPSBBVF9SZXBsYWNlUmVsT3B0aW9ucykKQEAgLTE0MjQ5LDcgKzE0MjU0LDYgQEAg QVRFeGVjU2V0UmVsT3B0aW9ucyhSZWxhdGlvbiByZWwsIExpc3QgKmRlZkxpc3QsIEFsdGVy VGFibGVUeXBlIG9wZXJhdGlvbiwKIAl7CiAJCVF1ZXJ5CSAgICp2aWV3X3F1ZXJ5ID0gZ2V0 X3ZpZXdfcXVlcnkocmVsKTsKIAkJTGlzdAkgICAqdmlld19vcHRpb25zID0gdW50cmFuc2Zv cm1SZWxPcHRpb25zKG5ld09wdGlvbnMpOwotCQlMaXN0Q2VsbCAgICpjZWxsOwogCQlib29s CQljaGVja19vcHRpb24gPSBmYWxzZTsKIAogCQlmb3JlYWNoKGNlbGwsIHZpZXdfb3B0aW9u cykKQEAgLTE0Mjc3LDYgKzE0MjgxLDIwIEBAIEFURXhlY1NldFJlbE9wdGlvbnMoUmVsYXRp b24gcmVsLCBMaXN0ICpkZWZMaXN0LCBBbHRlclRhYmxlVHlwZSBvcGVyYXRpb24sCiAJCX0K IAl9CiAKKwkvKiBJZiB1c2VyX2NhdGFsb2dfdGFibGUgaXMgcGFydCBvZiB0aGUgbmV3IG9w dGlvbnMsIHJlY29yZCBpdHMgbmV3IHZhbHVlICovCisJcmVsX29wdGlvbnMgPSB1bnRyYW5z Zm9ybVJlbE9wdGlvbnMobmV3T3B0aW9ucyk7CisKKwlmb3JlYWNoKGNlbGwsIHJlbF9vcHRp b25zKQorCXsKKwkJRGVmRWxlbSAgICAqZGVmZWwgPSAoRGVmRWxlbSAqKSBsZmlyc3QoY2Vs bCk7CisKKwkJaWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgInVzZXJfY2F0YWxvZ190YWJs ZSIpID09IDApCisJCXsKKwkJCWNhdGFsb2dfdGFibGUgPSB0cnVlOworCQkJY2F0YWxvZ190 YWJsZV92YWwgPSBkZWZHZXRCb29sZWFuKGRlZmVsKTsKKwkJfQorCX0KKwogCS8qCiAJICog QWxsIHdlIG5lZWQgZG8gaGVyZSBpcyB1cGRhdGUgdGhlIHBnX2NsYXNzIHJvdzsgdGhlIG5l dyBvcHRpb25zIHdpbGwgYmUKIAkgKiBwcm9wYWdhdGVkIGludG8gcmVsY2FjaGVzIGR1cmlu ZyBwb3N0LWNvbW1pdCBjYWNoZSBpbnZhbC4KQEAgLTE0MzAzLDYgKzE0MzIxLDQxIEBAIEFU RXhlY1NldFJlbE9wdGlvbnMoUmVsYXRpb24gcmVsLCBMaXN0ICpkZWZMaXN0LCBBbHRlclRh YmxlVHlwZSBvcGVyYXRpb24sCiAKIAlSZWxlYXNlU3lzQ2FjaGUodHVwbGUpOwogCisJLyog VXBkYXRlIHRoZSBpbmRleGVzIGlmIHRoZXJlIGlzIGEgbmVlZCB0byAqLworCWlmIChjYXRh bG9nX3RhYmxlIHx8IG9wZXJhdGlvbiA9PSBBVF9SZXNldFJlbE9wdGlvbnMpCisJeworCQlS ZWxhdGlvbglwZ19pbmRleDsKKwkJSGVhcFR1cGxlCXBnX2luZGV4X3R1cGxlOworCQlGb3Jt X3BnX2luZGV4IHBnX2luZGV4X2Zvcm07CisJCUxpc3RDZWxsICAgKmluZGV4OworCisJCXBn X2luZGV4ID0gdGFibGVfb3BlbihJbmRleFJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2sp OworCisJCWZvcmVhY2goaW5kZXgsIFJlbGF0aW9uR2V0SW5kZXhMaXN0KHJlbCkpCisJCXsK KwkJCU9pZAkJCXRoaXNJbmRleE9pZCA9IGxmaXJzdF9vaWQoaW5kZXgpOworCisJCQlwZ19p bmRleF90dXBsZSA9IFNlYXJjaFN5c0NhY2hlQ29weTEoSU5ERVhSRUxJRCwKKwkJCQkJCQkJ CQkJCSBPYmplY3RJZEdldERhdHVtKHRoaXNJbmRleE9pZCkpOworCQkJaWYgKCFIZWFwVHVw bGVJc1ZhbGlkKHBnX2luZGV4X3R1cGxlKSkKKwkJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9v a3VwIGZhaWxlZCBmb3IgaW5kZXggJXUiLCB0aGlzSW5kZXhPaWQpOworCQkJcGdfaW5kZXhf Zm9ybSA9IChGb3JtX3BnX2luZGV4KSBHRVRTVFJVQ1QocGdfaW5kZXhfdHVwbGUpOworCisJ CQkvKiBNb2RpZnkgdGhlIGluZGV4IG9ubHkgaWYgdXNlcl9jYXRhbG9nX3RhYmxlIGRpZmZl ciAqLworCQkJaWYgKGNhdGFsb2dfdGFibGVfdmFsICE9IHBnX2luZGV4X2Zvcm0tPmluZGlz dXNlcmNhdGFsb2cpCisJCQl7CisJCQkJcGdfaW5kZXhfZm9ybS0+aW5kaXN1c2VyY2F0YWxv ZyA9IGNhdGFsb2dfdGFibGVfdmFsOworCQkJCUNhdGFsb2dUdXBsZVVwZGF0ZShwZ19pbmRl eCwgJnBnX2luZGV4X3R1cGxlLT50X3NlbGYsIHBnX2luZGV4X3R1cGxlKTsKKwkJCQlJbnZv a2VPYmplY3RQb3N0QWx0ZXJIb29rQXJnKEluZGV4UmVsYXRpb25JZCwgdGhpc0luZGV4T2lk LCAwLAorCQkJCQkJCQkJCQkgSW52YWxpZE9pZCwgdHJ1ZSk7CisJCQl9CisKKwkJCWhlYXBf ZnJlZXR1cGxlKHBnX2luZGV4X3R1cGxlKTsKKwkJfQorCisJCXRhYmxlX2Nsb3NlKHBnX2lu ZGV4LCBSb3dFeGNsdXNpdmVMb2NrKTsKKwl9CisKIAkvKiByZXBlYXQgdGhlIHdob2xlIGV4 ZXJjaXNlIGZvciB0aGUgdG9hc3QgdGFibGUsIGlmIHRoZXJlJ3Mgb25lICovCiAJaWYgKE9p ZElzVmFsaWQocmVsLT5yZF9yZWwtPnJlbHRvYXN0cmVsaWQpKQogCXsKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0eGxvZy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dp c3R4bG9nLmgKaW5kZXggMzNmMWM3ZTMxYi4uZjkyNGY5ZjdiZSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvYWNjZXNzL2dpc3R4bG9nLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dp c3R4bG9nLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgZ2lzdHhsb2dQYWdl VXBkYXRlCiAgKi8KIHR5cGVkZWYgc3RydWN0IGdpc3R4bG9nRGVsZXRlCiB7CisJYm9vbCAg ICAgICAgb25DYXRhbG9nVGFibGU7CiAJVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0 SG9yaXpvbjsKIAl1aW50MTYJCW50b2RlbGV0ZTsJCS8qIG51bWJlciBvZiBkZWxldGVkIG9m ZnNldHMgKi8KIApAQCAtOTcsNiArOTgsNyBAQCB0eXBlZGVmIHN0cnVjdCBnaXN0eGxvZ1Bh Z2VEZWxldGUKICAqLwogdHlwZWRlZiBzdHJ1Y3QgZ2lzdHhsb2dQYWdlUmV1c2UKIHsKKwli b29sICAgICAgICBvbkNhdGFsb2dUYWJsZTsKIAlSZWxGaWxlTG9jYXRvciBsb2NhdG9yOwog CUJsb2NrTnVtYmVyIGJsb2NrOwogCUZ1bGxUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxp Y3RIb3Jpem9uOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hhc2hfeGxvZy5o IGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hhc2hfeGxvZy5oCmluZGV4IDZkYWZiNGE1OTguLmIx NmU3MDM4ZTIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oYXNoX3hsb2cuaAor KysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGFzaF94bG9nLmgKQEAgLTI1MCw2ICsyNTAsNyBA QCB0eXBlZGVmIHN0cnVjdCB4bF9oYXNoX2luaXRfYml0bWFwX3BhZ2UKICAqLwogdHlwZWRl ZiBzdHJ1Y3QgeGxfaGFzaF92YWN1dW1fb25lX3BhZ2UKIHsKKwlib29sICAgICAgICBvbkNh dGFsb2dUYWJsZTsKIAlUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOwog CWludAkJCW50dXBsZXM7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFw YW1feGxvZy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKaW5kZXggNWM3 NzI5MGVlYy4uZGVjNjJlOGJlZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hl YXBhbV94bG9nLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKQEAg LTI0Miw2ICsyNDIsNyBAQCB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX3VwZGF0ZQogICovCiB0 eXBlZGVmIHN0cnVjdCB4bF9oZWFwX3BydW5lCiB7CisJYm9vbCAgICAgICAgb25DYXRhbG9n VGFibGU7CiAJVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbjsKIAl1aW50 MTYJCW5yZWRpcmVjdGVkOwogCXVpbnQxNgkJbmRlYWQ7CkBAIC0zNDIsNiArMzQzLDcgQEAg dHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9mcmVlemVfcGxhbgogICovCiB0eXBlZGVmIHN0cnVj dCB4bF9oZWFwX2ZyZWV6ZV9wYWdlCiB7CisJYm9vbCAgICAgICAgb25DYXRhbG9nVGFibGU7 CiAJVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbjsKIAl1aW50MTYJCW5w bGFuczsKIApAQCAtMzU5LDYgKzM2MSw3IEBAIHR5cGVkZWYgc3RydWN0IHhsX2hlYXBfZnJl ZXplX3BhZ2UKICAqLwogdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF92aXNpYmxlCiB7CisJYm9v bCAgICAgICAgb25DYXRhbG9nVGFibGU7CiAJVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZs aWN0SG9yaXpvbjsKIAl1aW50OAkJZmxhZ3M7CiB9IHhsX2hlYXBfdmlzaWJsZTsKQEAgLTQw OCw3ICs0MTEsNyBAQCBleHRlcm4gdm9pZCBoZWFwMl9kZXNjKFN0cmluZ0luZm8gYnVmLCBY TG9nUmVhZGVyU3RhdGUgKnJlY29yZCk7CiBleHRlcm4gY29uc3QgY2hhciAqaGVhcDJfaWRl bnRpZnkodWludDggaW5mbyk7CiBleHRlcm4gdm9pZCBoZWFwX3hsb2dfbG9naWNhbF9yZXdy aXRlKFhMb2dSZWFkZXJTdGF0ZSAqcik7CiAKLWV4dGVybiBYTG9nUmVjUHRyIGxvZ19oZWFw X3Zpc2libGUoUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IsIEJ1ZmZlciBoZWFwX2J1ZmZlciwK K2V4dGVybiBYTG9nUmVjUHRyIGxvZ19oZWFwX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZm ZXIgaGVhcF9idWZmZXIsCiAJCQkJCQkJCSAgIEJ1ZmZlciB2bV9idWZmZXIsCiAJCQkJCQkJ CSAgIFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sCiAJCQkJCQkJCSAg IHVpbnQ4IHZtZmxhZ3MpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL25idHhs b2cuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnR4bG9nLmgKaW5kZXggM2IyZDk1OWM2OS4u ZjhhZTM4MjdkMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL25idHhsb2cuaAor KysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0eGxvZy5oCkBAIC0xODUsNiArMTg1LDcgQEAg dHlwZWRlZiBzdHJ1Y3QgeGxfYnRyZWVfZGVkdXAKICAqLwogdHlwZWRlZiBzdHJ1Y3QgeGxf YnRyZWVfcmV1c2VfcGFnZQogeworCWJvb2wgICAgICAgIG9uQ2F0YWxvZ1RhYmxlOwogCVJl bEZpbGVMb2NhdG9yIGxvY2F0b3I7CiAJQmxvY2tOdW1iZXIgYmxvY2s7CiAJRnVsbFRyYW5z YWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b247CkBAIC0yMzIsNiArMjMzLDcgQEAg dHlwZWRlZiBzdHJ1Y3QgeGxfYnRyZWVfdmFjdXVtCiAKIHR5cGVkZWYgc3RydWN0IHhsX2J0 cmVlX2RlbGV0ZQogeworCWJvb2wgICAgICAgIG9uQ2F0YWxvZ1RhYmxlOwogCVRyYW5zYWN0 aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b247CiAJdWludDE2CQluZGVsZXRlZDsKIAl1 aW50MTYJCW51cGRhdGVkOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3NwZ3hs b2cuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9zcGd4bG9nLmgKaW5kZXggODIzMzJjYjY5NC4u OGI0YWIwZTIwNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3NwZ3hsb2cuaAor KysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3BneGxvZy5oCkBAIC0yMzcsNiArMjM3LDcgQEAg dHlwZWRlZiBzdHJ1Y3Qgc3BneGxvZ1ZhY3V1bVJvb3QKIAogdHlwZWRlZiBzdHJ1Y3Qgc3Bn eGxvZ1ZhY3V1bVJlZGlyZWN0CiB7CisJYm9vbCAgICAgICAgb25DYXRhbG9nVGFibGU7CiAJ dWludDE2CQluVG9QbGFjZWhvbGRlcjsgLyogbnVtYmVyIG9mIHJlZGlyZWN0cyB0byBtYWtl IHBsYWNlaG9sZGVycyAqLwogCU9mZnNldE51bWJlciBmaXJzdFBsYWNlaG9sZGVyOwkvKiBm aXJzdCBwbGFjZWhvbGRlciB0dXBsZSB0byByZW1vdmUgKi8KIAlUcmFuc2FjdGlvbklkIHNu YXBzaG90Q29uZmxpY3RIb3Jpem9uOwkvKiBuZXdlc3QgWElEIG9mIHJlbW92ZWQgcmVkaXJl Y3RzICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2luZGV4LmggYi9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX2luZGV4LmgKaW5kZXggZjg1Mzg0NmVlMS4uZGQxNjQz MTM3OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19pbmRleC5oCisrKyBi L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfaW5kZXguaApAQCAtNDMsNiArNDMsOCBAQCBDQVRB TE9HKHBnX2luZGV4LDI2MTAsSW5kZXhSZWxhdGlvbklkKSBCS0lfU0NIRU1BX01BQ1JPCiAJ Ym9vbAkJaW5kY2hlY2t4bWluOwkvKiBtdXN0IHdlIHdhaXQgZm9yIHhtaW4gdG8gYmUgb2xk PyAqLwogCWJvb2wJCWluZGlzcmVhZHk7CQkvKiBpcyB0aGlzIGluZGV4IHJlYWR5IGZvciBp bnNlcnRzPyAqLwogCWJvb2wJCWluZGlzbGl2ZTsJCS8qIGlzIHRoaXMgaW5kZXggYWxpdmUg YXQgYWxsPyAqLworCWJvb2wJCWluZGlzdXNlcmNhdGFsb2c7CS8qIGlzIHRoaXMgaW5kZXgg bGlua2VkIHRvIGEgdXNlciBjYXRhbG9nCisJCQkJCQkJCQkgKiByZWxhdGlvbj8gKi8KIAli b29sCQlpbmRpc3JlcGxpZGVudDsgLyogaXMgdGhpcyBpbmRleCB0aGUgaWRlbnRpdHkgZm9y IHJlcGxpY2F0aW9uPyAqLwogCiAJLyogdmFyaWFibGUtbGVuZ3RoIGZpZWxkcyBzdGFydCBo ZXJlLCBidXQgd2UgYWxsb3cgZGlyZWN0IGFjY2VzcyB0byBpbmRrZXkgKi8KZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgK aW5kZXggZjM4M2EyZmNhOS4uOWI3N2UyM2MyOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv dXRpbHMvcmVsLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKQEAgLTI3LDYgKzI3 LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3NtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9yZWxj YWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3JlbHRyaWdnZXIuaCIKKyNpbmNsdWRlICJjYXRh bG9nL2NhdGFsb2cuaCIKIAogCiAvKgpAQCAtMzQzLDYgKzM0NCw3IEBAIHR5cGVkZWYgc3Ry dWN0IFN0ZFJkT3B0aW9ucwogCiAjZGVmaW5lIEhFQVBfTUlOX0ZJTExGQUNUT1IJCQkxMAog I2RlZmluZSBIRUFQX0RFRkFVTFRfRklMTEZBQ1RPUgkJMTAwCisjZGVmaW5lIEhFQVBfREVG QVVMVF9VU0VSX0NBVEFMT0dfVEFCTEUJCWZhbHNlCiAKIC8qCiAgKiBSZWxhdGlvbkdldFRv YXN0VHVwbGVUYXJnZXQKQEAgLTM3OCw2ICszODAsOSBAQCB0eXBlZGVmIHN0cnVjdCBTdGRS ZE9wdGlvbnMKICAqIFJlbGF0aW9uSXNVc2VkQXNDYXRhbG9nVGFibGUKICAqCQlSZXR1cm5z IHdoZXRoZXIgdGhlIHJlbGF0aW9uIHNob3VsZCBiZSB0cmVhdGVkIGFzIGEgY2F0YWxvZyB0 YWJsZQogICoJCWZyb20gdGhlIHBvdiBvZiBsb2dpY2FsIGRlY29kaW5nLiAgTm90ZSBtdWx0 aXBsZSBldmFsIG9mIGFyZ3VtZW50IQorICoJCVRoaXMgZGVmaW5pdGlvbiBzaG91bGQgbm90 IGludm9rZSBhbnl0aGluZyB0aGF0IHBlcmZvcm1zIGNhdGFsb2cKKyAqCQlhY2Nlc3M7IG90 aGVyd2lzZSBpdCBtYXkgY2F1c2UgaW5maW5pdGUgcmVjdXJzaW9uLiBDaGVjayB0aGUgY29t bWVudHMKKyAqCQlpbiBSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nKCkg Zm9yIGRldGFpbHMuCiAgKi8KICNkZWZpbmUgUmVsYXRpb25Jc1VzZWRBc0NhdGFsb2dUYWJs ZShyZWxhdGlvbikJXAogCSgocmVsYXRpb24pLT5yZF9vcHRpb25zICYmIFwKQEAgLTY3OCwx MiArNjgzLDQxIEBAIFJlbGF0aW9uQ2xvc2VTbWdyKFJlbGF0aW9uIHJlbGF0aW9uKQogICog UmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZwogICoJCVRydWUgaWYgd2Ug bmVlZCB0byBsb2cgZW5vdWdoIGluZm9ybWF0aW9uIHRvIGhhdmUgYWNjZXNzIHZpYQogICoJ CWRlY29kaW5nIHNuYXBzaG90LgorICoJCVRoaXMgZGVmaW5pdGlvbiBzaG91bGQgbm90IGlu dm9rZSBhbnl0aGluZyB0aGF0IHBlcmZvcm1zIGNhdGFsb2cKKyAqCQlhY2Nlc3MuIE90aGVy d2lzZSwgZS5nLiBsb2dnaW5nIGEgV0FMIGVudHJ5IGZvciBjYXRhbG9nIHJlbGF0aW9uIG1h eQorICoJCWludm9rZSB0aGlzIGZ1bmN0aW9uLCB3aGljaCB3aWxsIGluIHR1cm4gZG8gY2F0 YWxvZyBhY2Nlc3MsIHdoaWNoIG1heQorICoJCWluIHR1cm4gY2F1c2UgYW5vdGhlciBzaW1p bGFyIFdBTCBlbnRyeSB0byBiZSBsb2dnZWQsIGxlYWRpbmcgdG8KKyAqCQlpbmZpbml0ZSBy ZWN1cnNpb24uCiAgKi8KICNkZWZpbmUgUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxE ZWNvZGluZyhyZWxhdGlvbikgXAogCShYTG9nTG9naWNhbEluZm9BY3RpdmUoKSAmJiBcCiAJ IFJlbGF0aW9uTmVlZHNXQUwocmVsYXRpb24pICYmIFwKIAkgKElzQ2F0YWxvZ1JlbGF0aW9u KHJlbGF0aW9uKSB8fCBSZWxhdGlvbklzVXNlZEFzQ2F0YWxvZ1RhYmxlKHJlbGF0aW9uKSkp CiAKKy8qCisgKiBJbmRleElzVXNlckNhdGFsb2cKKyAqCQlUcnVlIGlmIGluZGV4IGlzIGxp bmtlZCB0byBhIHVzZXIgY2F0YWxvZyByZWxhdGlvbi4KKyAqLworI2RlZmluZSBJbmRleElz VXNlckNhdGFsb2cocmVsYXRpb24pCQkJCQkJCQkJCQlcCisJKEFzc2VydE1hY3JvKHJlbGF0 aW9uLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9JTkRFWCksCQkJCVwKKwkgKHJlbGF0 aW9uKS0+cmRfaW5kZXgtPmluZGlzdXNlcmNhdGFsb2cpCisKKy8qCisgKiBJbmRleElzQWNj ZXNzaWJsZUluTG9naWNhbERlY29kaW5nCisgKgkJVHJ1ZSBpZiB3ZSBuZWVkIHRvIGxvZyBl bm91Z2ggaW5mb3JtYXRpb24gdG8gaGF2ZSBhY2Nlc3MgdmlhCisgKgkJZGVjb2Rpbmcgc25h cHNob3QuCisgKgkJVGhpcyBkZWZpbml0aW9uIHNob3VsZCBub3QgaW52b2tlIGFueXRoaW5n IHRoYXQgcGVyZm9ybXMgY2F0YWxvZworICoJCWFjY2Vzcy4gT3RoZXJ3aXNlLCBlLmcuIGxv Z2dpbmcgYSBXQUwgZW50cnkgZm9yIGNhdGFsb2cgcmVsYXRpb24gbWF5CisgKgkJaW52b2tl IHRoaXMgZnVuY3Rpb24sIHdoaWNoIHdpbGwgaW4gdHVybiBkbyBjYXRhbG9nIGFjY2Vzcywg d2hpY2ggbWF5CisgKgkJaW4gdHVybiBjYXVzZSBhbm90aGVyIHNpbWlsYXIgV0FMIGVudHJ5 IHRvIGJlIGxvZ2dlZCwgbGVhZGluZyB0bworICoJCWluZmluaXRlIHJlY3Vyc2lvbi4KKyAq LworI2RlZmluZSBJbmRleElzQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nKHJlbGF0aW9u KSBcCisJKEFzc2VydE1hY3JvKHJlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lO RF9JTkRFWCksIFwKKwkgWExvZ0xvZ2ljYWxJbmZvQWN0aXZlKCkgJiYgXAorCSBSZWxhdGlv bk5lZWRzV0FMKHJlbGF0aW9uKSAmJiBcCisJIChJc0NhdGFsb2dSZWxhdGlvbihyZWxhdGlv bikgfHwgSW5kZXhJc1VzZXJDYXRhbG9nKHJlbGF0aW9uKSkpCisKIC8qCiAgKiBSZWxhdGlv bklzTG9naWNhbGx5TG9nZ2VkCiAgKgkJVHJ1ZSBpZiB3ZSBuZWVkIHRvIGxvZyBlbm91Z2gg aW5mb3JtYXRpb24gdG8gZXh0cmFjdCB0aGUgZGF0YSBmcm9tIHRoZQotLSAKMi4zNC4xCgo= --------------7ZmIvXt85wexUOjr1KIp9tQR--