From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 87335 invoked by alias); 11 Feb 2016 23:04:41 -0000 Mailing-List: contact fortran-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: fortran-owner@gcc.gnu.org Received: (qmail 87166 invoked by uid 89); 11 Feb 2016 23:04:39 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=1.6 required=5.0 tests=BAYES_50,FREEMAIL_FROM,KAM_STOCKGEN,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=no version=3.3.2 spammy=www, Image, 579, 1099 X-Spam-User: qpsmtpd, 2 recipients X-HELO: mail-io0-f182.google.com Received: from mail-io0-f182.google.com (HELO mail-io0-f182.google.com) (209.85.223.182) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Thu, 11 Feb 2016 23:04:32 +0000 Received: by mail-io0-f182.google.com with SMTP id 9so73732820iom.1; Thu, 11 Feb 2016 15:04:32 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=fkKW/SjNPUj3SBDmYgGZZr35QcU2kVPqjV/EGexVf0I=; b=EMz9Q/SjJpCbO/ZJ7cumAWXZF1zF+ekqYJLv4c3dGgWk90xEulcJdwynFvGP0Pj6Il +nVgjB5d9BtKaH0keFxDMzeMqpIPMlb+ZcxNOMWHcLW2GF2oigaeEHvE/bHqifxlpop3 WfKq7a0ZX5SCdlqdGtFWt6c8zw0pbXRd7O/g8LeXiq03n1vXkqDO0jNKqumbRkdw1OU8 1ToufXHDrAHE19BWVP2pd3KImHzJxC2/fFyGkPbwfeTsR/eH7UIc1gg7mrwJfFgM/Gcu Z2G0L4s205/Mhjzjw59t/1tKFyu+w6L8/9JOJ+5i1teYf3cBbcX+BfMo0k0mhAuhV5mV uMbw== X-Gm-Message-State: AG10YOQoy98cpjAlk6ucKczbK/335NiA06YxnboE0GjMwlKsgMI2d2c7BYZKFHB4DzndqIE8SLiTRDNkiam26A== MIME-Version: 1.0 X-Received: by 10.107.18.101 with SMTP id a98mr46728279ioj.181.1455231870295; Thu, 11 Feb 2016 15:04:30 -0800 (PST) Received: by 10.107.17.12 with HTTP; Thu, 11 Feb 2016 15:04:30 -0800 (PST) In-Reply-To: References: <20150429075505.GA21015@physik.fu-berlin.de> <20151126165109.GA69466@troutmask.apl.washington.edu> <20151202220032.GA57807@troutmask.apl.washington.edu> <20151217145703.GA97805@troutmask.apl.washington.edu> Date: Thu, 11 Feb 2016 23:04:00 -0000 Message-ID: Subject: Re: [Fortran, Patch] (RFC, Coarray) Implement TS18508's EVENTS From: Alessandro Fanfarillo To: Steve Kargl Cc: Tobias Burnus , gcc-patches , gfortran Content-Type: multipart/mixed; boundary=001a113f5facb26cb7052b8692f3 X-IsSubscribed: yes X-SW-Source: 2016-02/txt/msg00041.txt.bz2 --001a113f5facb26cb7052b8692f3 Content-Type: text/plain; charset=UTF-8 Content-length: 983 Dear all, in attachment the EVENT patch for gcc-5-branch directly back-ported from the trunk. Built and regtested on x86_64-pc-linux-gnu. I plan to commit this patch this evening (Feb 12th, CET). Cheers, Alessandro 2015-12-17 17:19 GMT+01:00 Alessandro Fanfarillo : > Great! Thanks. > > 2015-12-17 15:57 GMT+01:00 Steve Kargl : >> On Thu, Dec 17, 2015 at 01:22:06PM +0100, Alessandro Fanfarillo wrote: >>> >>> I've noticed that this patch has been applied only on trunk and not on >>> the gcc-5-branch. Is it a problem to include EVENTS in gcc-5? >>> >> >> No problem. When I applied the EVENTS patch to trunk, >> the 5.3 release was being prepared. I was going to >> wait for a week or two after 5.3 came out, then apply >> the patch. Now that you have commit access, feel >> free to back port the patch. Rememer to post the >> patch that you commit to both the fortran and gcc-patches >> list. >> >> -- >> Steve --001a113f5facb26cb7052b8692f3 Content-Type: text/plain; charset=US-ASCII; name="events_patch_and_tests.diff" Content-Disposition: attachment; filename="events_patch_and_tests.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ikiqt1940 Content-length: 90252 Y29tbWl0IDk1MDRjNGM3OWFjY2RkZWI2ZTIzODZjOWJmNjBkNjUxYzNkOGY2 MjcKQXV0aG9yOiBBbGVzc2FuZHJvIEZhbmZhcmlsbG8gPGZhbmZhcmlsbG8u Z2NjQGdtYWlsLmNvbT4KRGF0ZTogICBUaHUgRmViIDExIDExOjI0OjUzIDIw MTYgKzAwMDAKCiAgICBFdmVudHMgcGF0Y2ggYmFja3BvcnRlZCBmcm9tIGdj Yy10cnVuawoKZGlmZiAtLWdpdCAuL2djYy9mb3J0cmFuL2NoZWNrLmMgLi9n Y2MvZm9ydHJhbi9jaGVjay5jCmluZGV4IDMxOTY0MjAuLjA0OWE2ZmIgMTAw NjQ0Ci0tLSAuL2djYy9mb3J0cmFuL2NoZWNrLmMKKysrIC4vZ2NjL2ZvcnRy YW4vY2hlY2suYwpAQCAtMTE1Nyw2ICsxMTU3LDU5IEBAIGdmY19jaGVja19h dG9taWNfY2FzIChnZmNfZXhwciAqYXRvbSwgZ2ZjX2V4cHIgKm9sZCwgZ2Zj X2V4cHIgKmNvbXBhcmUsCiAgIHJldHVybiB0cnVlOwogfQogCitib29sCitn ZmNfY2hlY2tfZXZlbnRfcXVlcnkgKGdmY19leHByICpldmVudCwgZ2ZjX2V4 cHIgKmNvdW50LCBnZmNfZXhwciAqc3RhdCkKK3sKKyAgaWYgKGV2ZW50LT50 cy50eXBlICE9IEJUX0RFUklWRUQKKyAgICAgIHx8IGV2ZW50LT50cy51LmRl cml2ZWQtPmZyb21faW50bW9kICE9IElOVE1PRF9JU09fRk9SVFJBTl9FTlYK KyAgICAgIHx8IGV2ZW50LT50cy51LmRlcml2ZWQtPmludG1vZF9zeW1faWQg IT0gSVNPRk9SVFJBTl9FVkVOVF9UWVBFKQorICAgIHsKKyAgICAgIGdmY19l cnJvciAoIkVWRU5UIGFyZ3VtZW50IGF0ICVMIHRvIHRoZSBpbnRyaW5zaWMg RVZFTlRfUVVFUlkgIgorCQkgInNoYWxsIGJlIG9mIHR5cGUgRVZFTlRfVFlQ RSIsICZldmVudC0+d2hlcmUpOworICAgICAgcmV0dXJuIGZhbHNlOworICAg IH0KKworICBpZiAoIXNjYWxhcl9jaGVjayAoZXZlbnQsIDApKQorICAgIHJl dHVybiBmYWxzZTsKKworICBpZiAoIWdmY19jaGVja192YXJkZWZfY29udGV4 dCAoY291bnQsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIE5VTEwpKQorICAgIHsK KyAgICAgIGdmY19lcnJvciAoIkNPVU5UIGFyZ3VtZW50IG9mIHRoZSBFVkVO VF9RVUVSWSBpbnRyaW5zaWMgZnVuY3Rpb24gYXQgJUwgIgorCQkgInNoYWxs IGJlIGRlZmluYWJsZSIsICZjb3VudC0+d2hlcmUpOworICAgICAgcmV0dXJu IGZhbHNlOworICAgIH0KKworICBpZiAoIXR5cGVfY2hlY2sgKGNvdW50LCAx LCBCVF9JTlRFR0VSKSkKKyAgICByZXR1cm4gZmFsc2U7CisKKyAgaW50IGkg PSBnZmNfdmFsaWRhdGVfa2luZCAoQlRfSU5URUdFUiwgY291bnQtPnRzLmtp bmQsIGZhbHNlKTsKKyAgaW50IGogPSBnZmNfdmFsaWRhdGVfa2luZCAoQlRf SU5URUdFUiwgZ2ZjX2RlZmF1bHRfaW50ZWdlcl9raW5kLCBmYWxzZSk7CisK KyAgaWYgKGdmY19pbnRlZ2VyX2tpbmRzW2ldLnJhbmdlIDwgZ2ZjX2ludGVn ZXJfa2luZHNbal0ucmFuZ2UpCisgICAgeworICAgICAgZ2ZjX2Vycm9yICgi Q09VTlQgYXJndW1lbnQgb2YgdGhlIEVWRU5UX1FVRVJZIGludHJpbnNpYyBm dW5jdGlvbiBhdCAlTCAiCisJCSAic2hhbGwgaGF2ZSBhdCBsZWFzdCB0aGUg cmFuZ2Ugb2YgdGhlIGRlZmF1bHQgaW50ZWdlciIsCisJCSAmY291bnQtPndo ZXJlKTsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgaWYgKHN0 YXQgIT0gTlVMTCkKKyAgICB7CisgICAgICBpZiAoIXR5cGVfY2hlY2sgKHN0 YXQsIDIsIEJUX0lOVEVHRVIpKQorCXJldHVybiBmYWxzZTsKKyAgICAgIGlm ICghc2NhbGFyX2NoZWNrIChzdGF0LCAyKSkKKwlyZXR1cm4gZmFsc2U7Cisg ICAgICBpZiAoIXZhcmlhYmxlX2NoZWNrIChzdGF0LCAyLCBmYWxzZSkpCisJ cmV0dXJuIGZhbHNlOworCisgICAgICBpZiAoIWdmY19ub3RpZnlfc3RkIChH RkNfU1REX0YyMDA4X1RTLCAiU1RBVD0gYXJndW1lbnQgdG8gJXMgYXQgJUwi LAorCQkJICAgZ2ZjX2N1cnJlbnRfaW50cmluc2ljLCAmc3RhdC0+d2hlcmUp KQorCXJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgcmV0dXJuIHRydWU7Cit9 CisKIAogYm9vbAogZ2ZjX2NoZWNrX2F0b21pY19mZXRjaF9vcCAoZ2ZjX2V4 cHIgKmF0b20sIGdmY19leHByICp2YWx1ZSwgZ2ZjX2V4cHIgKm9sZCwKZGlm ZiAtLWdpdCAuL2djYy9mb3J0cmFuL2R1bXAtcGFyc2UtdHJlZS5jIC4vZ2Nj L2ZvcnRyYW4vZHVtcC1wYXJzZS10cmVlLmMKaW5kZXggODNlY2JhYS4uYzg4 NjAxMCAxMDA2NDQKLS0tIC4vZ2NjL2ZvcnRyYW4vZHVtcC1wYXJzZS10cmVl LmMKKysrIC4vZ2NjL2ZvcnRyYW4vZHVtcC1wYXJzZS10cmVlLmMKQEAgLTE2 NTksNiArMTY1OSwzMyBAQCBzaG93X2NvZGVfbm9kZSAoaW50IGxldmVsLCBn ZmNfY29kZSAqYykKIAl9CiAgICAgICBicmVhazsKIAorICAgIGNhc2UgRVhF Q19FVkVOVF9QT1NUOgorICAgIGNhc2UgRVhFQ19FVkVOVF9XQUlUOgorICAg ICAgaWYgKGMtPm9wID09IEVYRUNfRVZFTlRfUE9TVCkKKwlmcHV0cyAoIkVW RU5UIFBPU1QgIiwgZHVtcGZpbGUpOworICAgICAgZWxzZQorCWZwdXRzICgi RVZFTlQgV0FJVCAiLCBkdW1wZmlsZSk7CisKKyAgICAgIGZwdXRzICgiZXZl bnQtdmFyaWFibGU9IiwgZHVtcGZpbGUpOworICAgICAgaWYgKGMtPmV4cHIx ICE9IE5VTEwpCisJc2hvd19leHByIChjLT5leHByMSk7CisgICAgICBpZiAo Yy0+ZXhwcjQgIT0gTlVMTCkKKwl7CisJICBmcHV0cyAoIiB1bnRpbF9jb3Vu dD0iLCBkdW1wZmlsZSk7CisJICBzaG93X2V4cHIgKGMtPmV4cHI0KTsKKwl9 CisgICAgICBpZiAoYy0+ZXhwcjIgIT0gTlVMTCkKKwl7CisJICBmcHV0cyAo IiBzdGF0PSIsIGR1bXBmaWxlKTsKKwkgIHNob3dfZXhwciAoYy0+ZXhwcjIp OworCX0KKyAgICAgIGlmIChjLT5leHByMyAhPSBOVUxMKQorCXsKKwkgIGZw dXRzICgiIGVycm1zZz0iLCBkdW1wZmlsZSk7CisJICBzaG93X2V4cHIgKGMt PmV4cHIzKTsKKwl9CisgICAgICBicmVhazsKKwogICAgIGNhc2UgRVhFQ19M T0NLOgogICAgIGNhc2UgRVhFQ19VTkxPQ0s6CiAgICAgICBpZiAoYy0+b3Ag PT0gRVhFQ19MT0NLKQpkaWZmIC0tZ2l0IC4vZ2NjL2ZvcnRyYW4vZXhwci5j IC4vZ2NjL2ZvcnRyYW4vZXhwci5jCmluZGV4IGM5MGU4MjMuLjJlNzQzNzUg MTAwNjQ0Ci0tLSAuL2djYy9mb3J0cmFuL2V4cHIuYworKysgLi9nY2MvZm9y dHJhbi9leHByLmMKQEAgLTQ4NjQsNiArNDg2NCwxOSBAQCBnZmNfY2hlY2tf dmFyZGVmX2NvbnRleHQgKGdmY19leHByKiBlLCBib29sIHBvaW50ZXIsIGJv b2wgYWxsb2Nfb2JqLAogICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAor ICAvKiBUUzE4NTA4LCBDNzAyL0MyMDMuICAqLworICBpZiAoIWFsbG9jX29i agorICAgICAgJiYgKGF0dHIubG9ja19jb21wCisJICB8fCAoZS0+dHMudHlw ZSA9PSBCVF9ERVJJVkVECisJICAgICAgJiYgZS0+dHMudS5kZXJpdmVkLT5m cm9tX2ludG1vZCA9PSBJTlRNT0RfSVNPX0ZPUlRSQU5fRU5WCisJICAgICAg JiYgZS0+dHMudS5kZXJpdmVkLT5pbnRtb2Rfc3ltX2lkID09IElTT0ZPUlRS QU5fRVZFTlRfVFlQRSkpKQorICAgIHsKKyAgICAgIGlmIChjb250ZXh0KQor CWdmY19lcnJvciAoIkxPQ0tfRVZFTlQgaW4gdmFyaWFibGUgZGVmaW5pdGlv biBjb250ZXh0ICglcykgYXQgJUwiLAorCQkgICBjb250ZXh0LCAmZS0+d2hl cmUpOworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwogICAvKiBJTlRF TlQoSU4pIGR1bW15IGFyZ3VtZW50LiAgQ2hlY2sgdGhpcywgdW5sZXNzIHRo ZSBvYmplY3QgaXRzZWxmIGlzIHRoZQogICAgICBjb21wb25lbnQgb2Ygc3Vi LWNvbXBvbmVudCBvZiBhIHBvaW50ZXI7IHdlIG5lZWQgdG8gZGlzdGluZ3Vp c2gKICAgICAgYXNzaWdubWVudCB0byBhIHBvaW50ZXIgY29tcG9uZW50IGZy b20gcG9pbnRlci1hc3NpZ25tZW50IHRvIGEgcG9pbnRlcgpkaWZmIC0tZ2l0 IC4vZ2NjL2ZvcnRyYW4vZ2ZvcnRyYW4uaCAuL2djYy9mb3J0cmFuL2dmb3J0 cmFuLmgKaW5kZXggOWQwOWRlNi4uMWMzOGQ4MiAxMDA2NDQKLS0tIC4vZ2Nj L2ZvcnRyYW4vZ2ZvcnRyYW4uaAorKysgLi9nY2MvZm9ydHJhbi9nZm9ydHJh bi5oCkBAIC0yNTMsNyArMjUzLDggQEAgdHlwZWRlZiBlbnVtCiAgIFNUX09N UF9UQVJHRVRfVEVBTVNfRElTVFJJQlVURV9QQVJBTExFTF9ET19TSU1ELAog ICBTVF9PTVBfRU5EX1RBUkdFVF9URUFNU19ESVNUUklCVVRFX1BBUkFMTEVM X0RPX1NJTUQsCiAgIFNUX1BST0NFRFVSRSwgU1RfR0VORVJJQywgU1RfQ1JJ VElDQUwsIFNUX0VORF9DUklUSUNBTCwKLSAgU1RfR0VUX0ZDTl9DSEFSQUNU RVJJU1RJQ1MsIFNUX0xPQ0ssIFNUX1VOTE9DSywgU1RfTk9ORQorICBTVF9H RVRfRkNOX0NIQVJBQ1RFUklTVElDUywgU1RfTE9DSywgU1RfVU5MT0NLLCBT VF9FVkVOVF9QT1NULAorICBTVF9FVkVOVF9XQUlULFNUX05PTkUKIH0KIGdm Y19zdGF0ZW1lbnQ7CiAKQEAgLTQxMyw2ICs0MTQsNyBAQCBlbnVtIGdmY19p c3ltX2lkCiAgIEdGQ19JU1lNX0VSRkMsCiAgIEdGQ19JU1lNX0VSRkNfU0NB TEVELAogICBHRkNfSVNZTV9FVElNRSwKKyAgR0ZDX0lTWU1fRVZFTlRfUVVF UlksCiAgIEdGQ19JU1lNX0VYRUNVVEVfQ09NTUFORF9MSU5FLAogICBHRkNf SVNZTV9FWElULAogICBHRkNfSVNZTV9FWFAsCkBAIC04NDcsNyArODQ5LDcg QEAgdHlwZWRlZiBzdHJ1Y3QKICAgICAgZW50aXRpZXMuICAqLwogICB1bnNp Z25lZCBhbGxvY19jb21wOjEsIHBvaW50ZXJfY29tcDoxLCBwcm9jX3BvaW50 ZXJfY29tcDoxLAogCSAgIHByaXZhdGVfY29tcDoxLCB6ZXJvX2NvbXA6MSwg Y29hcnJheV9jb21wOjEsIGxvY2tfY29tcDoxLAotCSAgIGRlZmluZWRfYXNz aWduX2NvbXA6MSwgdW5saW1pdGVkX3BvbHltb3JwaGljOjE7CisJICAgZXZl bnRfY29tcDoxLCBkZWZpbmVkX2Fzc2lnbl9jb21wOjEsIHVubGltaXRlZF9w b2x5bW9ycGhpYzoxOwogCiAgIC8qIFRoaXMgaXMgYSB0ZW1wb3Jhcnkgc2Vs ZWN0b3IgZm9yIFNFTEVDVCBUWVBFIG9yIGFuIGFzc29jaWF0ZQogICAgICB2 YXJpYWJsZSBmb3IgU0VMRUNUX1RZUEUgb3IgQVNTT0NJQVRFLiAgKi8KQEAg LTIzMzAsNyArMjMzMiw3IEBAIHR5cGVkZWYgZW51bQogICBFWEVDX09QRU4s IEVYRUNfQ0xPU0UsIEVYRUNfV0FJVCwKICAgRVhFQ19SRUFELCBFWEVDX1dS SVRFLCBFWEVDX0lPTEVOR1RILCBFWEVDX1RSQU5TRkVSLCBFWEVDX0RUX0VO RCwKICAgRVhFQ19CQUNLU1BBQ0UsIEVYRUNfRU5ERklMRSwgRVhFQ19JTlFV SVJFLCBFWEVDX1JFV0lORCwgRVhFQ19GTFVTSCwKLSAgRVhFQ19MT0NLLCBF WEVDX1VOTE9DSywKKyAgRVhFQ19MT0NLLCBFWEVDX1VOTE9DSywgRVhFQ19F VkVOVF9QT1NULCBFWEVDX0VWRU5UX1dBSVQsCiAgIEVYRUNfT0FDQ19LRVJO RUxTX0xPT1AsIEVYRUNfT0FDQ19QQVJBTExFTF9MT09QLAogICBFWEVDX09B Q0NfUEFSQUxMRUwsIEVYRUNfT0FDQ19LRVJORUxTLCBFWEVDX09BQ0NfREFU QSwgRVhFQ19PQUNDX0hPU1RfREFUQSwKICAgRVhFQ19PQUNDX0xPT1AsIEVY RUNfT0FDQ19VUERBVEUsIEVYRUNfT0FDQ19XQUlULCBFWEVDX09BQ0NfQ0FD SEUsCmRpZmYgLS1naXQgLi9nY2MvZm9ydHJhbi9nZm9ydHJhbi50ZXhpIC4v Z2NjL2ZvcnRyYW4vZ2ZvcnRyYW4udGV4aQppbmRleCBhMDZjNWZjLi5jNmI3 YWY1IDEwMDY0NAotLS0gLi9nY2MvZm9ydHJhbi9nZm9ydHJhbi50ZXhpCisr KyAuL2djYy9mb3J0cmFuL2dmb3J0cmFuLnRleGkKQEAgLTMzMDYsNyArMzMw Niw5IEBAIHR5cGVkZWYgZW51bSBjYWZfcmVnaXN0ZXJfdCB7CiAgIENBRl9S RUdUWVBFX0NPQVJSQVlfQUxMT0MsCiAgIENBRl9SRUdUWVBFX0xPQ0tfU1RB VElDLAogICBDQUZfUkVHVFlQRV9MT0NLX0FMTE9DLAotICBDQUZfUkVHVFlQ RV9DUklUSUNBTAorICBDQUZfUkVHVFlQRV9DUklUSUNBTCwKKyAgQ0FGX1JF R1RZUEVfRVZFTlRfU1RBVElDLAorICBDQUZfUkVHVFlQRV9FVkVOVF9BTExP QwogfQogY2FmX3JlZ2lzdGVyX3Q7CiBAZW5kIHZlcmJhdGltCkBAIC0zMzI3 LDYgKzMzMjksOSBAQCBjYWZfcmVnaXN0ZXJfdDsKICogX2dmb3J0cmFuX2Nh Zl9zZW5kZ2V0OjogU2VuZGluZyBkYXRhIGJldHdlZW4gcmVtb3RlIGltYWdl cwogKiBfZ2ZvcnRyYW5fY2FmX2xvY2s6OiBMb2NraW5nIGEgbG9jayB2YXJp YWJsZQogKiBfZ2ZvcnRyYW5fY2FmX3VubG9jazo6IFVubG9ja2luZyBhIGxv Y2sgdmFyaWFibGUKKyogX2dmb3J0cmFuX2NhZl9ldmVudF9wb3N0OjogUG9z dCBhbiBldmVudAorKiBfZ2ZvcnRyYW5fY2FmX2V2ZW50X3dhaXQ6OiBXYWl0 IHRoYXQgYW4gZXZlbnQgb2NjdXJyZWQKKyogX2dmb3J0cmFuX2NhZl9ldmVu dF9xdWVyeTo6IFF1ZXJ5IGV2ZW50IGNvdW50CiAqIF9nZm9ydHJhbl9jYWZf c3luY19hbGw6OiBBbGwtaW1hZ2UgYmFycmllcgogKiBfZ2ZvcnRyYW5fY2Fm X3N5bmNfaW1hZ2VzOjogQmFycmllciBmb3Igc2VsZWN0ZWQgaW1hZ2VzCiAq IF9nZm9ydHJhbl9jYWZfc3luY19tZW1vcnk6OiBXYWl0IGZvciBjb21wbGV0 aW9uIG9mIHNlZ21lbnQtbWVtb3J5IG9wZXJhdGlvbnMKQEAgLTM0ODAsNyAr MzQ4NSw3IEBAIGludCAqc3RhdCwgY2hhciAqZXJybXNnLCBpbnQgZXJybXNn X2xlbil9CiBAaXRlbSBAZW1waHtBcmd1bWVudHN9OgogQG11bHRpdGFibGUg QGNvbHVtbmZyYWN0aW9ucyAuMTUgLjcwCiBAaXRlbSBAdmFye3NpemV9IEB0 YWIgRm9yIG5vcm1hbCBjb2FycmF5cywgdGhlIGJ5dGUgc2l6ZSBvZiB0aGUg Y29hcnJheSB0byBiZQotYWxsb2NhdGVkOyBmb3IgbG9jayB0eXBlcywgdGhl IG51bWJlciBvZiBlbGVtZW50cy4KK2FsbG9jYXRlZDsgZm9yIGxvY2sgdHlw ZXMgYW5kIGV2ZW50IHR5cGVzLCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzLgog QGl0ZW0gQHZhcnt0eXBlfSBAdGFiIG9uZSBvZiB0aGUgY2FmX3JlZ2lzdGVy X3QgdHlwZXMuCiBAaXRlbSBAdmFye3Rva2VufSBAdGFiIGludGVudChvdXQp IEFuIG9wYXF1ZSBwb2ludGVyIGlkZW50aWZ5aW5nIHRoZSBjb2FycmF5Lgog QGl0ZW0gQHZhcntzdGF0fSBAdGFiIGludGVudChvdXQpIEZvciBhbGxvY2F0 YWJsZSBjb2FycmF5cywgc3RvcmVzIHRoZSBTVEFUPTsKQEAgLTM1MDUsNyAr MzUxMCwxMCBAQCBpbWFnZS4gRm9yIGxvY2sgdHlwZXMsIHRoZSB2YWx1ZSBz aGFsbCBvbmx5IHVzZWQgZm9yIGNoZWNraW5nIHRoZSBhbGxvY2F0aW9uCiBz dGF0dXMuIE5vdGUgdGhhdCBmb3IgY3JpdGljYWwgYmxvY2tzLCB0aGUgbG9j a2luZyBpcyBvbmx5IHJlcXVpcmVkIG9uIG9uZQogaW1hZ2U7IGluIHRoZSBs b2NraW5nIHN0YXRlbWVudCwgdGhlIHByb2Nlc3NvciBzaGFsbCBhbHdheXMg cGFzcyBhbHdheXMgYW4KIGltYWdlIGluZGV4IG9mIG9uZSBmb3IgY3JpdGlj YWwtYmxvY2sgbG9jayB2YXJpYWJsZXMKLShAY29kZXtDQUZfUkVHVFlQRV9D UklUSUNBTH0pLgorKEBjb2Rle0NBRl9SRUdUWVBFX0NSSVRJQ0FMfSkuIEZv ciBsb2NrIHR5cGVzIGFuZCBjcml0aWNhbC1ibG9jayB2YXJpYWJsZXMsCit0 aGUgaW5pdGlhbCB2YWx1ZSBzaGFsbCBiZSB1bmxvY2tlZCAob3IsIHJlc3Bl Y2l0aXZlbHksIG5vdCBpbiBjcml0aWNhbAorc2VjdGlvbikgc3VjaCBhcyB0 aGUgdmFsdWUgZmFsc2U7IGZvciBldmVudCB0eXBlcywgdGhlIGluaXRpYWwg c3RhdGUgc2hvdWxkCitiZSBubyBldmVudCwgZS5nLiB6ZXJvLgogQGVuZCB0 YWJsZQogCiAKQEAgLTM1MjUsOCArMzUzMyw3IEBAIGludCBlcnJtc2dfbGVu KX0KIAogQGl0ZW0gQGVtcGh7QXJndW1lbnRzfToKIEBtdWx0aXRhYmxlIEBj b2x1bW5mcmFjdGlvbnMgLjE1IC43MAotQGl0ZW0gQHZhcntzdGF0fSBAdGFi IGludGVudChvdXQpIEZvciBhbGxvY2F0YWJsZSBjb2FycmF5cywgc3RvcmVz IHRoZSBTVEFUPTsKLW1heSBiZSBOVUxMCitAaXRlbSBAdmFye3N0YXR9IEB0 YWIgaW50ZW50KG91dCkgU3RvcmVzIHRoZSBTVEFUPTsgbWF5IGJlIE5VTEwK IEBpdGVtIEB2YXJ7ZXJybXNnfSBAdGFiIGludGVudChvdXQpIFdoZW4gYW4g ZXJyb3Igb2NjdXJzLCB0aGlzIHdpbGwgYmUgc2V0CiB0byBhbiBlcnJvciBt ZXNzYWdlOyBtYXkgYmUgTlVMTAogQGl0ZW0gQHZhcntlcnJtc2dfbGVufSBA dGFiIHRoZSBidWZmZXIgc2l6ZSBvZiBlcnJtc2cuCkBAIC0zNzMzLDggKzM3 NDAsNyBAQCBhbHdheXMgMC4KIG51bWJlci4KIEBpdGVtIEB2YXJ7YXF1aXJl ZF9sb2NrfSBAdGFiIGludGVudChvdXQpIElmIG5vdCBOVUxMLCBpdCByZXR1 cm5zIHdoZXRoZXIgbG9jawogY291bGQgYmUgb2J0YWluZWQKLUBpdGVtIEB2 YXJ7c3RhdH0gQHRhYiBpbnRlbnQob3V0KSBGb3IgYWxsb2NhdGFibGUgY29h cnJheXMsIHN0b3JlcyB0aGUgU1RBVD07Ci1tYXkgYmUgTlVMTAorQGl0ZW0g QHZhcntzdGF0fSBAdGFiIGludGVudChvdXQpIFN0b3JlcyB0aGUgU1RBVD07 IG1heSBiZSBOVUxMCiBAaXRlbSBAdmFye2Vycm1zZ30gQHRhYiBpbnRlbnQo b3V0KSBXaGVuIGFuIGVycm9yIG9jY3VycywgdGhpcyB3aWxsIGJlIHNldCB0 bwogYW4gZXJyb3IgbWVzc2FnZTsgbWF5IGJlIE5VTEwKIEBpdGVtIEB2YXJ7 ZXJybXNnX2xlbn0gQHRhYiB0aGUgYnVmZmVyIHNpemUgb2YgZXJybXNnLgpA QCAtMzc0Niw3ICszNzUyLDYgQEAgaXMgYWx3YXlzIHplcm8gYW5kIHRoZSBp bWFnZSBpbmRleCBpcyBvbmUuICBMaWJyYXJpZXMgYXJlIHBlcm1pdHRlZCB0 byB1c2Ugb3RoZXIKIGltYWdlcyBmb3IgY3JpdGljYWwtYmxvY2sgbG9ja2lu ZyB2YXJpYWJsZXMuCiBAZW5kIHRhYmxlCiAKLQogQG5vZGUgX2dmb3J0cmFu X2NhZl91bmxvY2sKIEBzdWJzZWN0aW9uIEBjb2Rle19nZm9ydHJhbl9jYWZf bG9ja30gLS0tIFVubG9ja2luZyBhIGxvY2sgdmFyaWFibGUKIEBjaW5kZXgg Q29hcnJheSwgX2dmb3J0cmFuX2NhZl91bmxvY2sKQEAgLTM3ODEsNiArMzc4 NiwxMTUgQEAgaXMgYWx3YXlzIHplcm8gYW5kIHRoZSBpbWFnZSBpbmRleCBp cyBvbmUuICBMaWJyYXJpZXMgYXJlIHBlcm1pdHRlZCB0byB1c2Ugb3RoZXIK IGltYWdlcyBmb3IgY3JpdGljYWwtYmxvY2sgbG9ja2luZyB2YXJpYWJsZXMu CiBAZW5kIHRhYmxlCiAKK0Bub2RlIF9nZm9ydHJhbl9jYWZfZXZlbnRfcG9z dAorQHN1YnNlY3Rpb24gQGNvZGV7X2dmb3J0cmFuX2NhZl9ldmVudF9wb3N0 fSAtLS0gUG9zdCBhbiBldmVudAorQGNpbmRleCBDb2FycmF5LCBfZ2ZvcnRy YW5fY2FmX2V2ZW50X3Bvc3QKKworQHRhYmxlIEBhc2lzCitAaXRlbSBAZW1w aHtEZXNjcmlwdGlvbn06CitJbmNyZW1lbnQgdGhlIGV2ZW50IGNvdW50IG9m IHRoZSBzcGVjaWZpZWQgZXZlbnQgdmFyaWFibGUuCisKK0BpdGVtIEBlbXBo e1N5bnRheH06CitAY29kZXt2b2lkIF9nZm9ydHJhbl9jYWZfZXZlbnRfcG9z dCAoY2FmX3Rva2VuX3QgdG9rZW4sIHNpemVfdCBpbmRleCwKK2ludCBpbWFn ZV9pbmRleCwgaW50ICpzdGF0LCBjaGFyICplcnJtc2csIGludCBlcnJtc2df bGVuKX0KKworQGl0ZW0gQGVtcGh7QXJndW1lbnRzfToKK0BtdWx0aXRhYmxl IEBjb2x1bW5mcmFjdGlvbnMgLjE1IC43MAorQGl0ZW0gQHZhcnt0b2tlbn0g QHRhYiBpbnRlbnQoaW4pIEFuIG9wYXF1ZSBwb2ludGVyIGlkZW50aWZ5aW5n IHRoZSBjb2FycmF5LgorQGl0ZW0gQHZhcntpbmRleH0gQHRhYiBBcnJheSBp bmRleDsgZmlyc3QgYXJyYXkgaW5kZXggaXMgMC4gRm9yIHNjYWxhcnMsIGl0 IGlzCithbHdheXMgMC4KK0BpdGVtIEB2YXJ7aW1hZ2VfaW5kZXh9IEB0YWIg VGhlIElEIG9mIHRoZSByZW1vdGUgaW1hZ2U7IG11c3QgYmUgYSBwb3NpdGl2 ZQorbnVtYmVyOyB6ZXJvIGluZGljYXRlcyB0aGUgY3VycmVudCBpbWFnZSB3 aGVuIGFjY2Vzc2VkIG5vbmNvaW5kZXhlZC4KK0BpdGVtIEB2YXJ7c3RhdH0g QHRhYiBpbnRlbnQob3V0KSBTdG9yZXMgdGhlIFNUQVQ9OyBtYXkgYmUgTlVM TAorQGl0ZW0gQHZhcntlcnJtc2d9IEB0YWIgaW50ZW50KG91dCkgV2hlbiBh biBlcnJvciBvY2N1cnMsIHRoaXMgd2lsbCBiZSBzZXQgdG8KK2FuIGVycm9y IG1lc3NhZ2U7IG1heSBiZSBOVUxMCitAaXRlbSBAdmFye2Vycm1zZ19sZW59 IEB0YWIgdGhlIGJ1ZmZlciBzaXplIG9mIGVycm1zZy4KK0BlbmQgbXVsdGl0 YWJsZQorCitAaXRlbSBAZW1waHtOT1RFU30KK1RoaXMgYWN0cyBsaWtlIGFu IGF0b21pYyBhZGQgb2Ygb25lIHRvIHRoZSByZW1vdGUgaW1hZ2UncyBldmVu dCB2YXJpYWJsZS4KK1RoZSBzdGF0ZW1lbnQgaXMgYW4gaW1hZ2UtY29udHJv bCBzdGF0ZW1lbnQgYnV0IGRvZXMgbm90IGltcGx5IHN5bmMgbWVtb3J5Lgor U3RpbGwsIGFsbCBwcmVjZWVkaW5nIHB1c2ggY29tbXVuaWNhdGlvbnMgb2Yg dGhpcyBpbWFnZSB0byB0aGUgc3BlY2lmaWVkCityZW1vdGUgaW1hZ2UgaGFz IHRvIGJlIGNvbXBsZXRlZCBiZWZvcmUgQGNvZGV7ZXZlbnRfd2FpdH0gb24g dGhlIHJlbW90ZQoraW1hZ2UgcmV0dXJucy4KK0BlbmQgdGFibGUKKworCisK K0Bub2RlIF9nZm9ydHJhbl9jYWZfZXZlbnRfd2FpdAorQHN1YnNlY3Rpb24g QGNvZGV7X2dmb3J0cmFuX2NhZl9ldmVudF93YWl0fSAtLS0gV2FpdCB0aGF0 IGFuIGV2ZW50IG9jY3VycmVkCitAY2luZGV4IENvYXJyYXksIF9nZm9ydHJh bl9jYWZfZXZlbnRfd2FpdAorCitAdGFibGUgQGFzaXMKK0BpdGVtIEBlbXBo e0Rlc2NyaXB0aW9ufToKK1dhaXQgdW50aWwgdGhlIGV2ZW50IGNvdW50IGhh cyByZWFjaGVkIGF0IGxlYXN0IHRoZSBzcGVjaWZpZWQKK0B2YXJ7dW50aWxf Y291bnR9OyBpZiBzbywgYXRvbWljYWxseSBkZWNyZW1lbnQgdGhlIGV2ZW50 IHZhcmlhYmxlIGJ5IHRoaXMKK2Ftb3VudCBhbmQgcmV0dXJuLgorCitAaXRl bSBAZW1waHtTeW50YXh9OgorQGNvZGV7dm9pZCBfZ2ZvcnRyYW5fY2FmX2V2 ZW50X3dhaXQgKGNhZl90b2tlbl90IHRva2VuLCBzaXplX3QgaW5kZXgsCitp bnQgdW50aWxfY291bnQsIGludCAqc3RhdCwgY2hhciAqZXJybXNnLCBpbnQg ZXJybXNnX2xlbil9CisKK0BpdGVtIEBlbXBoe0FyZ3VtZW50c306CitAbXVs dGl0YWJsZSBAY29sdW1uZnJhY3Rpb25zIC4xNSAuNzAKK0BpdGVtIEB2YXJ7 dG9rZW59IEB0YWIgaW50ZW50KGluKSBBbiBvcGFxdWUgcG9pbnRlciBpZGVu dGlmeWluZyB0aGUgY29hcnJheS4KK0BpdGVtIEB2YXJ7aW5kZXh9IEB0YWIg QXJyYXkgaW5kZXg7IGZpcnN0IGFycmF5IGluZGV4IGlzIDAuIEZvciBzY2Fs YXJzLCBpdCBpcworYWx3YXlzIDAuCitAaXRlbSBAdmFye3VudGlsX2NvdW50 fSBAdGFiIFRoZSBudW1iZXIgb2YgZXZlbnRzIHdoaWNoIGhhdmUgdG8gYmUg YXZhaWxhYmxlCitiZWZvcmUgdGhlIGZ1bmN0aW9uIHJldHVybnMuCitAaXRl bSBAdmFye3N0YXR9IEB0YWIgaW50ZW50KG91dCkgU3RvcmVzIHRoZSBTVEFU PTsgbWF5IGJlIE5VTEwKK0BpdGVtIEB2YXJ7ZXJybXNnfSBAdGFiIGludGVu dChvdXQpIFdoZW4gYW4gZXJyb3Igb2NjdXJzLCB0aGlzIHdpbGwgYmUgc2V0 IHRvCithbiBlcnJvciBtZXNzYWdlOyBtYXkgYmUgTlVMTAorQGl0ZW0gQHZh cntlcnJtc2dfbGVufSBAdGFiIHRoZSBidWZmZXIgc2l6ZSBvZiBlcnJtc2cu CitAZW5kIG11bHRpdGFibGUKKworQGl0ZW0gQGVtcGh7Tk9URVN9CitUaGlz IGZ1bmN0aW9uIG9ubHkgb3BlcmF0ZXMgb24gYSBsb2NhbCBjb2FycmF5LiBJ dCBhY3RzIGxpa2UgYSBsb29wIGNoZWNraW5nCithdG9taWNhbGx5IHRoZSB2 YWx1ZSBvZiB0aGUgZXZlbnQgdmFyaWFibGUsIGJyZWFraW5nIGlmIHRoZSB2 YWx1ZSBpcyBncmVhdGVyCitvciBlcXVhbCB0aGUgcmVxdWVzdGVkIG51bWJl ciBvZiBjb3VudHMuIEJlZm9yZSB0aGUgZnVuY3Rpb24gcmV0dXJucywgdGhl CitldmVudCB2YXJpYWJsZSBoYXMgdG8gYmUgZGVjcmVtZW50ZWQgYnkgdGhl IHJlcXVlc3RlZCBAdmFye3VudGlsX2NvdW50fSB2YWx1ZS4KK0EgcG9zc2li bGUgaW1wbGVtZW50YXRpb24gd291bGQgYmUgYSBidXN5IGxvb3AgZm9yIGEg Y2VydGFpbiBudW1iZXIgb2Ygc3BpbnMKKyhwb3NzaWJseSBkZXBlbmRpbmcg b24gdGhlIG51bWJlciBvZiB0aHJlYWRzIHJlbGF0aXZlIHRvIHRoZSBudW1i ZXIgb2YgYXZhaWxhYmxlCitjb3JlcykgZm9sbG93ZWQgYnkgb3RoZXIgd2Fp dGluZyBzdHJhdGVneSBzdWNoIGFzIGEgc2xlZXBpbmcgd2FpdCAocG9zc2li bHkgd2l0aAorYW4gaW5jcmVhc2luZyBudW1iZXIgb2Ygc2xlZXAgdGltZSkg b3IsIGlmIHBvc3NpYmxlLCBhIGZ1dGV4IHdhaXQuCisKK1RoZSBzdGF0ZW1l bnQgaXMgYW4gaW1hZ2UtY29udHJvbCBzdGF0ZW1lbnQgYnV0IGRvZXMgbm90 IGltcGx5IHN5bmMgbWVtb3J5LgorU3RpbGwsIGFsbCBwcmVjZWVkaW5nIHB1 c2ggY29tbXVuaWNhdGlvbnMgdG8gdGhpcyBpbWFnZSBvZiBpbWFnZXMgaGF2 aW5nCitpc3N1ZWQgYSBAY29kZXtldmVudF9wdXNofSBoYXZlIHRvIGJlIGNv bXBsZXRlZCBiZWZvcmUgdGhpcyBmdW5jdGlvbiByZXR1cm5zLgorQGVuZCB0 YWJsZQorCisKKworQG5vZGUgX2dmb3J0cmFuX2NhZl9ldmVudF9xdWVyeQor QHN1YnNlY3Rpb24gQGNvZGV7X2dmb3J0cmFuX2NhZl9ldmVudF9xdWVyeX0g LS0tIFF1ZXJ5IGV2ZW50IGNvdW50CitAY2luZGV4IENvYXJyYXksIF9nZm9y dHJhbl9jYWZfZXZlbnRfcXVlcnkKKworQHRhYmxlIEBhc2lzCitAaXRlbSBA ZW1waHtEZXNjcmlwdGlvbn06CitSZXR1cm4gdGhlIGV2ZW50IGNvdW50IG9m IHRoZSBzcGVjaWZpZWQgZXZlbnQgY291bnQuCisKK0BpdGVtIEBlbXBoe1N5 bnRheH06CitAY29kZXt2b2lkIF9nZm9ydHJhbl9jYWZfZXZlbnRfcXVlcnkg KGNhZl90b2tlbl90IHRva2VuLCBzaXplX3QgaW5kZXgsCitpbnQgaW1hZ2Vf aW5kZXgsIGludCAqY291bnQsIGludCAqc3RhdCl9CisKK0BpdGVtIEBlbXBo e0FyZ3VtZW50c306CitAbXVsdGl0YWJsZSBAY29sdW1uZnJhY3Rpb25zIC4x NSAuNzAKK0BpdGVtIEB2YXJ7dG9rZW59IEB0YWIgaW50ZW50KGluKSBBbiBv cGFxdWUgcG9pbnRlciBpZGVudGlmeWluZyB0aGUgY29hcnJheS4KK0BpdGVt IEB2YXJ7aW5kZXh9IEB0YWIgQXJyYXkgaW5kZXg7IGZpcnN0IGFycmF5IGlu ZGV4IGlzIDAuIEZvciBzY2FsYXJzLCBpdCBpcworYWx3YXlzIDAuCitAaXRl bSBAdmFye2ltYWdlX2luZGV4fSBAdGFiIFRoZSBJRCBvZiB0aGUgcmVtb3Rl IGltYWdlOyBtdXN0IGJlIGEgcG9zaXRpdmUKK251bWJlcjsgemVybyBpbmRp Y2F0ZXMgdGhlIGN1cnJlbnQgaW1hZ2Ugd2hlbiBhY2Nlc3NlZCBub25jb2lu ZGV4ZWQuCitAaXRlbSBAdmFye2NvdW50fSBAdGFiIGludGVudChvdXQpIFRo ZSBudW1iZXIgb2YgZXZlbnRzIGN1cnJlbnRseSBwb3N0ZWQgdG8KK3RoZSBl dmVudCB2YXJpYWJsZQorQGl0ZW0gQHZhcntzdGF0fSBAdGFiIGludGVudChv dXQpIFN0b3JlcyB0aGUgU1RBVD07IG1heSBiZSBOVUxMCitAZW5kIG11bHRp dGFibGUKKworQGl0ZW0gQGVtcGh7Tk9URVN9CitUaGUgdHlwaWNhbCB1c2Ug aXMgdG8gY2hlY2sgdGhlIGxvY2FsIGV2ZW4gdmFyaWFibGUgdG8gb25seSBj YWxsCitAY29kZXtldmVudF93YWl0fSB3aGVuIHRoZSBkYXRhIGlzIGF2YWls YWJsZS4gSG93ZXZlciwgYSBjb2luZGV4ZWQgdmFyaWFibGUKK2lzIHBlcm1p dHRlZDsgdGhlcmUgaXMgbm8gb3JkZXJpbmcgb3Igc3luY2hyb25pemF0aW9u IGltcGxpZWQuICBJdCBhY3RzIGxpa2UKK2FuIGF0b21pYyBmZXRjaCBvZiB0 aGUgdmFsdWUgb2YgdGhlIGV2ZW50IHZhcmlhYmxlLgorQGVuZCB0YWJsZQog CiBAbm9kZSBfZ2ZvcnRyYW5fY2FmX3N5bmNfYWxsCiBAc3Vic2VjdGlvbiBA Y29kZXtfZ2ZvcnRyYW5fY2FmX3N5bmNfYWxsfSAtLS0gQWxsLWltYWdlIGJh cnJpZXIKQEAgLTM5MjYsNyArNDA0MCw3IEBAIGludCBpbWFnZV9pbmRleCwg dm9pZCAqdmFsdWUsIGludCAqc3RhdCwgaW50IHR5cGUsIGludCBraW5kKX0K IEBpdGVtIEB2YXJ7b2Zmc2V0fSBAdGFiIEJ5IHdoaWNoIGFtb3VudCBvZiBi eXRlcyB0aGUgYWN0dWFsIGRhdGEgaXMgc2hpZnRlZAogY29tcGFyZWQgdG8g dGhlIGJhc2UgYWRkcmVzcyBvZiB0aGUgY29hcnJheS4KIEBpdGVtIEB2YXJ7 aW1hZ2VfaW5kZXh9IEB0YWIgVGhlIElEIG9mIHRoZSByZW1vdGUgaW1hZ2U7 IG11c3QgYmUgYSBwb3NpdGl2ZQotbnVtYmVyLgorbnVtYmVyOyB6ZXJvIGlu ZGljYXRlcyB0aGUgY3VycmVudCBpbWFnZSB3aGVuIHVzZWQgbm9uY29pbmRl eGVkLgogQGl0ZW0gQHZhcnt2YWx1ZX0gQHRhYiBpbnRlbnQoaW4pIHRoZSB2 YWx1ZSB0byBiZSBhc3NpZ25lZCwgcGFzc2VkIGJ5IHJlZmVyZW5jZS4KIEBp dGVtIEB2YXJ7c3RhdH0gQHRhYiBpbnRlbnQob3V0KSBTdG9yZXMgdGhlIHN0 YXR1cyBTVEFUPSBhbmQgbWF5IGJlIE5VTEwuCiBAaXRlbSBAdmFye3R5cGV9 IEB0YWIgdGhlIGRhdGEgdHlwZSwgaS5lLiBAY29kZXtCVF9JTlRFR0VSfSAo MSkgb3IKQEAgLTM5NTYsNyArNDA3MCw3IEBAIGludCBpbWFnZV9pbmRleCwg dm9pZCAqdmFsdWUsIGludCAqc3RhdCwgaW50IHR5cGUsIGludCBraW5kKX0K IEBpdGVtIEB2YXJ7b2Zmc2V0fSBAdGFiIEJ5IHdoaWNoIGFtb3VudCBvZiBi eXRlcyB0aGUgYWN0dWFsIGRhdGEgaXMgc2hpZnRlZAogY29tcGFyZWQgdG8g dGhlIGJhc2UgYWRkcmVzcyBvZiB0aGUgY29hcnJheS4KIEBpdGVtIEB2YXJ7 aW1hZ2VfaW5kZXh9IEB0YWIgVGhlIElEIG9mIHRoZSByZW1vdGUgaW1hZ2U7 IG11c3QgYmUgYSBwb3NpdGl2ZQotbnVtYmVyLgorbnVtYmVyOyB6ZXJvIGlu ZGljYXRlcyB0aGUgY3VycmVudCBpbWFnZSB3aGVuIHVzZWQgbm9uY29pbmRl eGVkLgogQGl0ZW0gQHZhcnt2YWx1ZX0gQHRhYiBpbnRlbnQob3V0KSBUaGUg dmFyaWFibGUgYXNzaWduZWQgdGhlIGF0b21pY2FsbHkKIHJlZmVyZW5jZWQg dmFyaWFibGUuCiBAaXRlbSBAdmFye3N0YXR9IEB0YWIgaW50ZW50KG91dCkg U3RvcmVzIHRoZSBzdGF0dXMgU1RBVD0gYW5kIG1heSBiZSBOVUxMLgpAQCAt Mzk4OSw3ICs0MTAzLDcgQEAgaW50IHR5cGUsIGludCBraW5kKX0KIEBpdGVt IEB2YXJ7b2Zmc2V0fSBAdGFiIEJ5IHdoaWNoIGFtb3VudCBvZiBieXRlcyB0 aGUgYWN0dWFsIGRhdGEgaXMgc2hpZnRlZAogY29tcGFyZWQgdG8gdGhlIGJh c2UgYWRkcmVzcyBvZiB0aGUgY29hcnJheS4KIEBpdGVtIEB2YXJ7aW1hZ2Vf aW5kZXh9IEB0YWIgVGhlIElEIG9mIHRoZSByZW1vdGUgaW1hZ2U7IG11c3Qg YmUgYSBwb3NpdGl2ZQotbnVtYmVyLgorbnVtYmVyOyB6ZXJvIGluZGljYXRl cyB0aGUgY3VycmVudCBpbWFnZSB3aGVuIHVzZWQgbm9uY29pbmRleGVkLgog QGl0ZW0gQHZhcntvbGR9IEB0YWIgaW50ZW50KG91dCkgdGhlIHZhbHVlIHdo aWNoIHRoZSBhdG9taWMgdmFyaWFibGUgaGFkCiBqdXN0IGJlZm9yZSB0aGUg Y2FzIG9wZXJhdGlvbi4KIEBpdGVtIEB2YXJ7Y29tcGFyZX0gQHRhYiBpbnRl bnQoaW4pIFRoZSB2YWx1ZSB1c2VkIGZvciBjb21wYXJpc2lvbi4KQEAgLTQw MzEsNyArNDE0NSw3IEBAIGludCBpbWFnZV9pbmRleCwgdm9pZCAqdmFsdWUs IHZvaWQgKm9sZCwgaW50ICpzdGF0LCBpbnQgdHlwZSwgaW50IGtpbmQpfQog QGl0ZW0gQHZhcntvZmZzZXR9IEB0YWIgQnkgd2hpY2ggYW1vdW50IG9mIGJ5 dGVzIHRoZSBhY3R1YWwgZGF0YSBpcyBzaGlmdGVkCiBjb21wYXJlZCB0byB0 aGUgYmFzZSBhZGRyZXNzIG9mIHRoZSBjb2FycmF5LgogQGl0ZW0gQHZhcntp bWFnZV9pbmRleH0gQHRhYiBUaGUgSUQgb2YgdGhlIHJlbW90ZSBpbWFnZTsg bXVzdCBiZSBhIHBvc2l0aXZlCi1udW1iZXIuCitudW1iZXI7IHplcm8gaW5k aWNhdGVzIHRoZSBjdXJyZW50IGltYWdlIHdoZW4gdXNlZCBub25jb2luZGV4 ZWQuCiBAaXRlbSBAdmFye29sZH0gQHRhYiBpbnRlbnQob3V0KSB0aGUgdmFs dWUgd2hpY2ggdGhlIGF0b21pYyB2YXJpYWJsZSBoYWQKIGp1c3QgYmVmb3Jl IHRoZSBhdG9taWMgb3BlcmF0aW9uLgogQGl0ZW0gQHZhcnt2YWx9IEB0YWIg aW50ZW50KGluKSBUaGUgbmV3IHZhbHVlIGZvciB0aGUgYXRvbWljIHZhcmlh YmxlLApkaWZmIC0tZ2l0IC4vZ2NjL2ZvcnRyYW4vaW50ZXJmYWNlLmMgLi9n Y2MvZm9ydHJhbi9pbnRlcmZhY2UuYwppbmRleCA1Y2JlOTZhLi4wYWRhNWVk IDEwMDY0NAotLS0gLi9nY2MvZm9ydHJhbi9pbnRlcmZhY2UuYworKysgLi9n Y2MvZm9ydHJhbi9pbnRlcmZhY2UuYwpAQCAtMjE0NCw2ICsyMTQ0LDIxIEBA IGNvbXBhcmVfcGFyYW1ldGVyIChnZmNfc3ltYm9sICpmb3JtYWwsIGdmY19l eHByICphY3R1YWwsCiAJCSAgICAgICBmb3JtYWwtPm5hbWUsICZhY3R1YWwt PndoZXJlKTsKIAkgIHJldHVybiAwOwogCX0KKworICAgICAgLyogVFMxODUw OCwgQzcwMi9DNzAzLiAgKi8KKyAgICAgIGlmIChmb3JtYWwtPmF0dHIuaW50 ZW50ICE9IElOVEVOVF9JTk9VVAorCSAgJiYgKCgoZm9ybWFsLT50cy50eXBl ID09IEJUX0RFUklWRUQgfHwgZm9ybWFsLT50cy50eXBlID09IEJUX0NMQVNT KQorCSAgICAgICAmJiBmb3JtYWwtPnRzLnUuZGVyaXZlZC0+ZnJvbV9pbnRt b2QgPT0gSU5UTU9EX0lTT19GT1JUUkFOX0VOVgorCSAgICAgICAmJiBmb3Jt YWwtPnRzLnUuZGVyaXZlZC0+aW50bW9kX3N5bV9pZCA9PSBJU09GT1JUUkFO X0VWRU5UX1RZUEUpCisJICAgICAgfHwgZm9ybWFsLT5hdHRyLmV2ZW50X2Nv bXApKQorCisgICAgCXsKKwkgIGlmICh3aGVyZSkKKwkgICAgZ2ZjX2Vycm9y ICgiQWN0dWFsIGFyZ3VtZW50IHRvIG5vbi1JTlRFTlQoSU5PVVQpIGR1bW15 ICVxcyBhdCAlTCwgIgorCQkgICAgICAgIndoaWNoIGlzIEVWRU5UX1RZUEUg b3IgaGFzIGEgRVZFTlRfVFlQRSBjb21wb25lbnQiLAorCQkgICAgICAgZm9y bWFsLT5uYW1lLCAmYWN0dWFsLT53aGVyZSk7CisJICByZXR1cm4gMDsKKwl9 CiAgICAgfQogCiAgIC8qIEYyMDA4LCBDMTIzOS9DMTI0MC4gICovCkBAIC0z Mzc3LDYgKzMzOTIsMTkgQEAgZ2ZjX3Byb2NlZHVyZV91c2UgKGdmY19zeW1i b2wgKnN5bSwgZ2ZjX2FjdHVhbF9hcmdsaXN0ICoqYXAsIGxvY3VzICp3aGVy ZSkKIAkgICAgICBicmVhazsKIAkgICAgfQogCisJICBpZiAoYS0+ZXhwcgor CSAgICAgICYmIChhLT5leHByLT50cy50eXBlID09IEJUX0RFUklWRUQgfHwg YS0+ZXhwci0+dHMudHlwZSA9PSBCVF9DTEFTUykKKwkgICAgICAmJiAoKGEt PmV4cHItPnRzLnUuZGVyaXZlZC0+ZnJvbV9pbnRtb2QgPT0gSU5UTU9EX0lT T19GT1JUUkFOX0VOVgorCQkgICAmJiBhLT5leHByLT50cy51LmRlcml2ZWQt PmludG1vZF9zeW1faWQKKwkJICAgICAgPT0gSVNPRk9SVFJBTl9FVkVOVF9U WVBFKQorCQkgIHx8IGdmY19leHByX2F0dHIgKGEtPmV4cHIpLmV2ZW50X2Nv bXApKQorCSAgICB7CisJICAgICAgZ2ZjX2Vycm9yICgiQWN0dWFsIGFyZ3Vt ZW50IG9mIEVWRU5UX1RZUEUgb3Igd2l0aCBFVkVOVF9UWVBFICIKKwkJCSAi Y29tcG9uZW50IGF0ICVMIHJlcXVpcmVzIGFuIGV4cGxpY2l0IGludGVyZmFj ZSBmb3IgIgorCQkJICJwcm9jZWR1cmUgJXFzIiwgJmEtPmV4cHItPndoZXJl LCBzeW0tPm5hbWUpOworCSAgICAgIGJyZWFrOworCSAgICB9CisKIAkgIGlm IChhLT5leHByICYmIGEtPmV4cHItPmV4cHJfdHlwZSA9PSBFWFBSX05VTEwK IAkgICAgICAmJiBhLT5leHByLT50cy50eXBlID09IEJUX1VOS05PV04pCiAJ ICAgIHsKZGlmZiAtLWdpdCAuL2djYy9mb3J0cmFuL2ludHJpbnNpYy5jIC4v Z2NjL2ZvcnRyYW4vaW50cmluc2ljLmMKaW5kZXggYTk1OGY4ZS4uM2E5NzFj YiAxMDA2NDQKLS0tIC4vZ2NjL2ZvcnRyYW4vaW50cmluc2ljLmMKKysrIC4v Z2NjL2ZvcnRyYW4vaW50cmluc2ljLmMKQEAgLTMxMjgsNiArMzEyOCwxMyBA QCBhZGRfc3Vicm91dGluZXMgKHZvaWQpCiAJICAgICAgR0ZDX1NURF9GOTUs IGdmY19jaGVja19jcHVfdGltZSwgTlVMTCwgZ2ZjX3Jlc29sdmVfY3B1X3Rp bWUsCiAJICAgICAgdG0sIEJUX1JFQUwsIGRyLCBSRVFVSVJFRCwgSU5URU5U X09VVCk7CiAKKyAgYWRkX3N5bV8zcyAoImV2ZW50X3F1ZXJ5IiwgR0ZDX0lT WU1fRVZFTlRfUVVFUlksIENMQVNTX0FUT01JQywKKwkgICAgICBCVF9VTktO T1dOLCAwLCBHRkNfU1REX0YyMDA4X1RTLAorCSAgICAgIGdmY19jaGVja19l dmVudF9xdWVyeSwgTlVMTCwgZ2ZjX3Jlc29sdmVfZXZlbnRfcXVlcnksCisJ ICAgICAgImV2ZW50IiwgQlRfSU5URUdFUiwgZGksIFJFUVVJUkVELCBJTlRF TlRfSU4sCisJICAgICAgYywgQlRfSU5URUdFUiwgZGksIE9QVElPTkFMLCBJ TlRFTlRfSU4sCisJICAgICAgc3RhdCwgQlRfSU5URUdFUiwgZGksIE9QVElP TkFMLCBJTlRFTlRfT1VUKTsKKwogICAvKiBNb3JlIEc3NyBjb21wYXRpYmls aXR5IGdhcmJhZ2UuICAqLwogICBhZGRfc3ltXzJzICgiY3RpbWUiLCBHRkNf SVNZTV9DVElNRSwgQ0xBU1NfSU1QVVJFLCBCVF9VTktOT1dOLCAwLCBHRkNf U1REX0dOVSwKIAkgICAgICBnZmNfY2hlY2tfY3RpbWVfc3ViLCBOVUxMLCBn ZmNfcmVzb2x2ZV9jdGltZV9zdWIsCmRpZmYgLS1naXQgLi9nY2MvZm9ydHJh bi9pbnRyaW5zaWMuaCAuL2djYy9mb3J0cmFuL2ludHJpbnNpYy5oCmluZGV4 IGJlN2YyMTQuLjJjYTQxYWEgMTAwNjQ0Ci0tLSAuL2djYy9mb3J0cmFuL2lu dHJpbnNpYy5oCisrKyAuL2djYy9mb3J0cmFuL2ludHJpbnNpYy5oCkBAIC03 MCw2ICs3MCw3IEBAIGJvb2wgZ2ZjX2NoZWNrX2Rwcm9kIChnZmNfZXhwciAq LCBnZmNfZXhwciAqKTsKIGJvb2wgZ2ZjX2NoZWNrX2RzaGlmdCAoZ2ZjX2V4 cHIgKiwgZ2ZjX2V4cHIgKiwgZ2ZjX2V4cHIgKik7CiBib29sIGdmY19jaGVj a19lb3NoaWZ0IChnZmNfZXhwciAqLCBnZmNfZXhwciAqLCBnZmNfZXhwciAq LCBnZmNfZXhwciAqKTsKIGJvb2wgZ2ZjX2NoZWNrX2R0aW1lX2V0aW1lIChn ZmNfZXhwciAqKTsKK2Jvb2wgZ2ZjX2NoZWNrX2V2ZW50X3F1ZXJ5IChnZmNf ZXhwciAqLCBnZmNfZXhwciAqLCBnZmNfZXhwciAqKTsKIGJvb2wgZ2ZjX2No ZWNrX2ZnZXRwdXRjIChnZmNfZXhwciAqLCBnZmNfZXhwciAqKTsKIGJvb2wg Z2ZjX2NoZWNrX2ZnZXRwdXQgKGdmY19leHByICopOwogYm9vbCBnZmNfY2hl Y2tfZmxvYXQgKGdmY19leHByICopOwpAQCAtNDYyLDYgKzQ2Myw3IEBAIHZv aWQgZ2ZjX3Jlc29sdmVfZHRpbWVfc3ViIChnZmNfY29kZSAqKTsKIHZvaWQg Z2ZjX3Jlc29sdmVfZW9zaGlmdCAoZ2ZjX2V4cHIgKiwgZ2ZjX2V4cHIgKiwg Z2ZjX2V4cHIgKiwgZ2ZjX2V4cHIgKiwKIAkJCSAgZ2ZjX2V4cHIgKik7CiB2 b2lkIGdmY19yZXNvbHZlX2V0aW1lX3N1YiAoZ2ZjX2NvZGUgKik7Cit2b2lk IGdmY19yZXNvbHZlX2V2ZW50X3F1ZXJ5IChnZmNfY29kZSAqKTsKIHZvaWQg Z2ZjX3Jlc29sdmVfZXhwIChnZmNfZXhwciAqLCBnZmNfZXhwciAqKTsKIHZv aWQgZ2ZjX3Jlc29sdmVfZXhwb25lbnQgKGdmY19leHByICosIGdmY19leHBy ICopOwogdm9pZCBnZmNfcmVzb2x2ZV9leHRlbmRzX3R5cGVfb2YgKGdmY19l eHByICosIGdmY19leHByICosIGdmY19leHByICopOwpkaWZmIC0tZ2l0IC4v Z2NjL2ZvcnRyYW4vaXJlc29sdmUuYyAuL2djYy9mb3J0cmFuL2lyZXNvbHZl LmMKaW5kZXggNmZhMDk5NC4uMjU5NTgyNiAxMDA2NDQKLS0tIC4vZ2NjL2Zv cnRyYW4vaXJlc29sdmUuYworKysgLi9nY2MvZm9ydHJhbi9pcmVzb2x2ZS5j CkBAIC0yOTU1LDYgKzI5NTUsMTIgQEAgZ2ZjX3Jlc29sdmVfYXRvbWljX3Jl ZiAoZ2ZjX2NvZGUgKmMpCiAgIGMtPnJlc29sdmVkX3N5bSA9IGdmY19nZXRf aW50cmluc2ljX3N1Yl9zeW1ib2wgKG5hbWUpOwogfQogCit2b2lkCitnZmNf cmVzb2x2ZV9ldmVudF9xdWVyeSAoZ2ZjX2NvZGUgKmMpCit7CisgIGNvbnN0 IGNoYXIgKm5hbWUgPSAiZXZlbnRfcXVlcnkiOworICBjLT5yZXNvbHZlZF9z eW0gPSBnZmNfZ2V0X2ludHJpbnNpY19zdWJfc3ltYm9sIChuYW1lKTsKK30K IAogdm9pZAogZ2ZjX3Jlc29sdmVfbXZiaXRzIChnZmNfY29kZSAqYykKZGlm ZiAtLWdpdCAuL2djYy9mb3J0cmFuL2lzby1mb3J0cmFuLWVudi5kZWYgLi9n Y2MvZm9ydHJhbi9pc28tZm9ydHJhbi1lbnYuZGVmCmluZGV4IGViYTBiNGMu LmM1ZmIzZmYgMTAwNjQ0Ci0tLSAuL2djYy9mb3J0cmFuL2lzby1mb3J0cmFu LWVudi5kZWYKKysrIC4vZ2NjL2ZvcnRyYW4vaXNvLWZvcnRyYW4tZW52LmRl ZgpAQCAtMTIzLDYgKzEyMywxMSBAQCBOQU1FRF9GVU5DVElPTiAoSVNPRk9S VFJBTl9DT01QSUxFUl9WRVJTSU9OLCAiY29tcGlsZXJfdmVyc2lvbiIsIFwK IE5BTUVEX0RFUklWRURfVFlQRSAoSVNPRk9SVFJBTl9MT0NLX1RZUEUsICJs b2NrX3R5cGUiLCBcCiAgICAgICAgICAgICAgIGdldF9pbnRfa2luZF9mcm9t X25vZGUgKHB0cl90eXBlX25vZGUpLCBHRkNfU1REX0YyMDA4KQogCitOQU1F RF9ERVJJVkVEX1RZUEUgKElTT0ZPUlRSQU5fRVZFTlRfVFlQRSwgImV2ZW50 X3R5cGUiLCBcCisJCSAgICBmbGFnX2NvYXJyYXkgPT0gR0ZDX0ZDT0FSUkFZ X0xJQgorCQkgICAgPyAgZ2V0X2ludF9raW5kX2Zyb21fbm9kZSAocHRyX3R5 cGVfbm9kZSkKKwkJICAgIDogZ2ZjX2RlZmF1bHRfaW50ZWdlcl9raW5kLCBH RkNfU1REX0YyMDA4X1RTKQorCiAjdW5kZWYgTkFNRURfSU5UQ1NUCiAjdW5k ZWYgTkFNRURfS0lOREFSUkFZCiAjdW5kZWYgTkFNRURfRlVOQ1RJT04KZGlm ZiAtLWdpdCAuL2djYy9mb3J0cmFuL21hdGNoLmMgLi9nY2MvZm9ydHJhbi9t YXRjaC5jCmluZGV4IDYwYzZlNjUuLmJmODQzOWEgMTAwNjQ0Ci0tLSAuL2dj Yy9mb3J0cmFuL21hdGNoLmMKKysrIC4vZ2NjL2ZvcnRyYW4vbWF0Y2guYwpA QCAtMTQ3NCw2ICsxNDc0LDggQEAgZ2ZjX21hdGNoX2lmIChnZmNfc3RhdGVt ZW50ICppZl90eXBlKQogICBtYXRjaCAoImRlYWxsb2NhdGUiLCBnZmNfbWF0 Y2hfZGVhbGxvY2F0ZSwgU1RfREVBTExPQ0FURSkKICAgbWF0Y2ggKCJlbmQg ZmlsZSIsIGdmY19tYXRjaF9lbmRmaWxlLCBTVF9FTkRfRklMRSkKICAgbWF0 Y2ggKCJlcnJvciBzdG9wIiwgZ2ZjX21hdGNoX2Vycm9yX3N0b3AsIFNUX0VS Uk9SX1NUT1ApCisgIG1hdGNoICgiZXZlbnQgcG9zdCIsIGdmY19tYXRjaF9l dmVudF9wb3N0LCBTVF9FVkVOVF9QT1NUKQorICBtYXRjaCAoImV2ZW50IHdh aXQiLCBnZmNfbWF0Y2hfZXZlbnRfd2FpdCwgU1RfRVZFTlRfV0FJVCkKICAg bWF0Y2ggKCJleGl0IiwgZ2ZjX21hdGNoX2V4aXQsIFNUX0VYSVQpCiAgIG1h dGNoICgiZmx1c2giLCBnZmNfbWF0Y2hfZmx1c2gsIFNUX0ZMVVNIKQogICBt YXRjaCAoImZvcmFsbCIsIG1hdGNoX3NpbXBsZV9mb3JhbGwsIFNUX0ZPUkFM TCkKQEAgLTI3NTgsNiArMjc2MCwyMDIgQEAgZ2ZjX21hdGNoX2Vycm9yX3N0 b3AgKHZvaWQpCiAgIHJldHVybiBnZmNfbWF0Y2hfc3RvcGNvZGUgKFNUX0VS Uk9SX1NUT1ApOwogfQogCisvKiBNYXRjaCBFVkVOVCBQT1NUL1dBSVQgc3Rh dGVtZW50LiBTeW50YXg6CisgICAgIEVWRU5UIFBPU1QgKCBldmVudC12YXJp YWJsZSBbLCBzeW5jLXN0YXQtbGlzdF0gKQorICAgICBFVkVOVCBXQUlUICgg ZXZlbnQtdmFyaWFibGUgWywgd2FpdC1zcGVjLWxpc3RdICkKKyAgIHdpdGgK KyAgICAgIHdhaXQtc3BlYy1saXN0ICBpcyAgc3luYy1zdGF0LWxpc3QgIG9y IHVudGlsLXNwZWMKKyAgICAgIHVudGlsLXNwZWMgIGlzICBVTlRJTF9DT1VO VCA9IHNjYWxhci1pbnQtZXhwcgorICAgICAgc3luYy1zdGF0ICBpcyAgU1RB VD0gb3IgRVJSTVNHPS4gICovCisKK3N0YXRpYyBtYXRjaAorZXZlbnRfc3Rh dGVtZW50IChnZmNfc3RhdGVtZW50IHN0KQoreworICBtYXRjaCBtOworICBn ZmNfZXhwciAqdG1wLCAqZXZlbnR2YXIsICp1bnRpbF9jb3VudCwgKnN0YXQs ICplcnJtc2c7CisgIGJvb2wgc2F3X3VudGlsX2NvdW50LCBzYXdfc3RhdCwg c2F3X2Vycm1zZzsKKworICB0bXAgPSBldmVudHZhciA9IHVudGlsX2NvdW50 ID0gc3RhdCA9IGVycm1zZyA9IE5VTEw7CisgIHNhd191bnRpbF9jb3VudCA9 IHNhd19zdGF0ID0gc2F3X2Vycm1zZyA9IGZhbHNlOworCisgIGlmIChnZmNf cHVyZSAoTlVMTCkpCisgICAgeworICAgICAgZ2ZjX2Vycm9yICgiSW1hZ2Ug Y29udHJvbCBzdGF0ZW1lbnQgRVZFTlQgJXMgYXQgJUMgaW4gUFVSRSBwcm9j ZWR1cmUiLAorCQkgc3QgPT0gU1RfRVZFTlRfUE9TVCA/ICJQT1NUIiA6ICJX QUlUIik7CisgICAgICByZXR1cm4gTUFUQ0hfRVJST1I7CisgICAgfQorCisg IGdmY191bnNldF9pbXBsaWNpdF9wdXJlIChOVUxMKTsKKworICBpZiAoZmxh Z19jb2FycmF5ID09IEdGQ19GQ09BUlJBWV9OT05FKQorICAgIHsKKyAgICAg ICBnZmNfZmF0YWxfZXJyb3IgKCJDb2FycmF5cyBkaXNhYmxlZCBhdCAlQywg dXNlICU8LWZjb2FycmF5PSU+IHRvIGVuYWJsZSIpOworICAgICAgIHJldHVy biBNQVRDSF9FUlJPUjsKKyAgICB9CisKKyAgaWYgKGdmY19maW5kX3N0YXRl IChDT01QX0NSSVRJQ0FMKSkKKyAgICB7CisgICAgICBnZmNfZXJyb3IgKCJJ bWFnZSBjb250cm9sIHN0YXRlbWVudCBFVkVOVCAlcyBhdCAlQyBpbiBDUklU SUNBTCBibG9jayIsCisJCSBzdCA9PSBTVF9FVkVOVF9QT1NUID8gIlBPU1Qi IDogIldBSVQiKTsKKyAgICAgIHJldHVybiBNQVRDSF9FUlJPUjsKKyAgICB9 CisKKyAgaWYgKGdmY19maW5kX3N0YXRlIChDT01QX0RPX0NPTkNVUlJFTlQp KQorICAgIHsKKyAgICAgIGdmY19lcnJvciAoIkltYWdlIGNvbnRyb2wgc3Rh dGVtZW50IEVWRU5UICVzIGF0ICVDIGluIERPIENPTkNVUlJFTlQgIgorCQkg ImJsb2NrIiwgc3QgPT0gU1RfRVZFTlRfUE9TVCA/ICJQT1NUIiA6ICJXQUlU Iik7CisgICAgICByZXR1cm4gTUFUQ0hfRVJST1I7CisgICAgfQorCisgIGlm IChnZmNfbWF0Y2hfY2hhciAoJygnKSAhPSBNQVRDSF9ZRVMpCisgICAgZ290 byBzeW50YXg7CisKKyAgaWYgKGdmY19tYXRjaCAoIiVlIiwgJmV2ZW50dmFy KSAhPSBNQVRDSF9ZRVMpCisgICAgZ290byBzeW50YXg7CisgIG0gPSBnZmNf bWF0Y2hfY2hhciAoJywnKTsKKyAgaWYgKG0gPT0gTUFUQ0hfRVJST1IpCisg ICAgZ290byBzeW50YXg7CisgIGlmIChtID09IE1BVENIX05PKQorICAgIHsK KyAgICAgIG0gPSBnZmNfbWF0Y2hfY2hhciAoJyknKTsKKyAgICAgIGlmICht ID09IE1BVENIX1lFUykKKwlnb3RvIGRvbmU7CisgICAgICBnb3RvIHN5bnRh eDsKKyAgICB9CisKKyAgZm9yICg7OykKKyAgICB7CisgICAgICBtID0gZ2Zj X21hdGNoICgiIHN0YXQgPSAldiIsICZ0bXApOworICAgICAgaWYgKG0gPT0g TUFUQ0hfRVJST1IpCisJZ290byBzeW50YXg7CisgICAgICBpZiAobSA9PSBN QVRDSF9ZRVMpCisJeworCSAgaWYgKHNhd19zdGF0KQorCSAgICB7CisJICAg ICAgZ2ZjX2Vycm9yICgiUmVkdW5kYW50IFNUQVQgdGFnIGZvdW5kIGF0ICVM ICIsICZ0bXAtPndoZXJlKTsKKwkgICAgICBnb3RvIGNsZWFudXA7CisJICAg IH0KKwkgIHN0YXQgPSB0bXA7CisJICBzYXdfc3RhdCA9IHRydWU7CisKKwkg IG0gPSBnZmNfbWF0Y2hfY2hhciAoJywnKTsKKwkgIGlmIChtID09IE1BVENI X1lFUykKKwkgICAgY29udGludWU7CisKKwkgIHRtcCA9IE5VTEw7CisJICBi cmVhazsKKwl9CisKKyAgICAgIG0gPSBnZmNfbWF0Y2ggKCIgZXJybXNnID0g JXYiLCAmdG1wKTsKKyAgICAgIGlmIChtID09IE1BVENIX0VSUk9SKQorCWdv dG8gc3ludGF4OworICAgICAgaWYgKG0gPT0gTUFUQ0hfWUVTKQorCXsKKwkg IGlmIChzYXdfZXJybXNnKQorCSAgICB7CisJICAgICAgZ2ZjX2Vycm9yICgi UmVkdW5kYW50IEVSUk1TRyB0YWcgZm91bmQgYXQgJUwgIiwgJnRtcC0+d2hl cmUpOworCSAgICAgIGdvdG8gY2xlYW51cDsKKwkgICAgfQorCSAgZXJybXNn ID0gdG1wOworCSAgc2F3X2Vycm1zZyA9IHRydWU7CisKKwkgIG0gPSBnZmNf bWF0Y2hfY2hhciAoJywnKTsKKwkgIGlmIChtID09IE1BVENIX1lFUykKKwkg ICAgY29udGludWU7CisKKwkgIHRtcCA9IE5VTEw7CisJICBicmVhazsKKwl9 CisKKyAgICAgIG0gPSBnZmNfbWF0Y2ggKCIgdW50aWxfY291bnQgPSAlZSIs ICZ0bXApOworICAgICAgaWYgKG0gPT0gTUFUQ0hfRVJST1IgfHwgc3QgPT0g U1RfRVZFTlRfUE9TVCkKKwlnb3RvIHN5bnRheDsKKyAgICAgIGlmIChtID09 IE1BVENIX1lFUykKKwl7CisJICBpZiAoc2F3X3VudGlsX2NvdW50KQorCSAg ICB7CisJICAgICAgZ2ZjX2Vycm9yICgiUmVkdW5kYW50IFVOVElMX0NPVU5U IHRhZyBmb3VuZCBhdCAlTCAiLAorCQkJICZ0bXAtPndoZXJlKTsKKwkgICAg ICBnb3RvIGNsZWFudXA7CisJICAgIH0KKwkgIHVudGlsX2NvdW50ID0gdG1w OworCSAgc2F3X3VudGlsX2NvdW50ID0gdHJ1ZTsKKworCSAgbSA9IGdmY19t YXRjaF9jaGFyICgnLCcpOworCSAgaWYgKG0gPT0gTUFUQ0hfWUVTKQorCSAg ICBjb250aW51ZTsKKworCSAgdG1wID0gTlVMTDsKKwkgIGJyZWFrOworCX0K KworICAgICAgYnJlYWs7CisgICAgfQorCisgIGlmIChtID09IE1BVENIX0VS Uk9SKQorICAgIGdvdG8gc3ludGF4OworCisgIGlmIChnZmNfbWF0Y2ggKCIg KSV0IikgIT0gTUFUQ0hfWUVTKQorICAgIGdvdG8gc3ludGF4OworCitkb25l OgorICBzd2l0Y2ggKHN0KQorICAgIHsKKyAgICBjYXNlIFNUX0VWRU5UX1BP U1Q6CisgICAgICBuZXdfc3Qub3AgPSBFWEVDX0VWRU5UX1BPU1Q7CisgICAg ICBicmVhazsKKyAgICBjYXNlIFNUX0VWRU5UX1dBSVQ6CisgICAgICBuZXdf c3Qub3AgPSBFWEVDX0VWRU5UX1dBSVQ7CisgICAgICBicmVhazsKKyAgICBk ZWZhdWx0OgorICAgICAgZ2NjX3VucmVhY2hhYmxlICgpOworICAgIH0KKwor ICBuZXdfc3QuZXhwcjEgPSBldmVudHZhcjsKKyAgbmV3X3N0LmV4cHIyID0g c3RhdDsKKyAgbmV3X3N0LmV4cHIzID0gZXJybXNnOworICBuZXdfc3QuZXhw cjQgPSB1bnRpbF9jb3VudDsKKworICByZXR1cm4gTUFUQ0hfWUVTOworCitz eW50YXg6CisgIGdmY19zeW50YXhfZXJyb3IgKHN0KTsKKworY2xlYW51cDoK KyAgaWYgKHVudGlsX2NvdW50ICE9IHRtcCkKKyAgICBnZmNfZnJlZV9leHBy ICh1bnRpbF9jb3VudCk7CisgIGlmIChlcnJtc2cgIT0gdG1wKQorICAgIGdm Y19mcmVlX2V4cHIgKGVycm1zZyk7CisgIGlmIChzdGF0ICE9IHRtcCkKKyAg ICBnZmNfZnJlZV9leHByIChzdGF0KTsKKworICBnZmNfZnJlZV9leHByICh0 bXApOworICBnZmNfZnJlZV9leHByIChldmVudHZhcik7CisKKyAgcmV0dXJu IE1BVENIX0VSUk9SOworCit9CisKKworbWF0Y2gKK2dmY19tYXRjaF9ldmVu dF9wb3N0ICh2b2lkKQoreworICBpZiAoIWdmY19ub3RpZnlfc3RkIChHRkNf U1REX0YyMDA4X1RTLCAiRVZFTlQgUE9TVCBzdGF0ZW1lbnQgYXQgJUMiKSkK KyAgICByZXR1cm4gTUFUQ0hfRVJST1I7CisKKyAgcmV0dXJuIGV2ZW50X3N0 YXRlbWVudCAoU1RfRVZFTlRfUE9TVCk7Cit9CisKKworbWF0Y2gKK2dmY19t YXRjaF9ldmVudF93YWl0ICh2b2lkKQoreworICBpZiAoIWdmY19ub3RpZnlf c3RkIChHRkNfU1REX0YyMDA4X1RTLCAiRVZFTlQgV0FJVCBzdGF0ZW1lbnQg YXQgJUMiKSkKKyAgICByZXR1cm4gTUFUQ0hfRVJST1I7CisKKyAgcmV0dXJu IGV2ZW50X3N0YXRlbWVudCAoU1RfRVZFTlRfV0FJVCk7Cit9CisKIAogLyog TWF0Y2ggTE9DSy9VTkxPQ0sgc3RhdGVtZW50LiBTeW50YXg6CiAgICAgIExP Q0sgKCBsb2NrLXZhcmlhYmxlIFsgLCBsb2NrLXN0YXQtbGlzdCBdICkKZGlm ZiAtLWdpdCAuL2djYy9mb3J0cmFuL21hdGNoLmggLi9nY2MvZm9ydHJhbi9t YXRjaC5oCmluZGV4IDk2ZDNlYzEuLjc0MjdiNTAgMTAwNjQ0Ci0tLSAuL2dj Yy9mb3J0cmFuL21hdGNoLmgKKysrIC4vZ2NjL2ZvcnRyYW4vbWF0Y2guaApA QCAtNjksNiArNjksOCBAQCBtYXRjaCBnZmNfbWF0Y2hfYXNzaWdubWVudCAo dm9pZCk7CiBtYXRjaCBnZmNfbWF0Y2hfaWYgKGdmY19zdGF0ZW1lbnQgKik7 CiBtYXRjaCBnZmNfbWF0Y2hfZWxzZSAodm9pZCk7CiBtYXRjaCBnZmNfbWF0 Y2hfZWxzZWlmICh2b2lkKTsKK21hdGNoIGdmY19tYXRjaF9ldmVudF9wb3N0 ICh2b2lkKTsKK21hdGNoIGdmY19tYXRjaF9ldmVudF93YWl0ICh2b2lkKTsK IG1hdGNoIGdmY19tYXRjaF9jcml0aWNhbCAodm9pZCk7CiBtYXRjaCBnZmNf bWF0Y2hfYmxvY2sgKHZvaWQpOwogbWF0Y2ggZ2ZjX21hdGNoX2Fzc29jaWF0 ZSAodm9pZCk7CmRpZmYgLS1naXQgLi9nY2MvZm9ydHJhbi9tb2R1bGUuYyAu L2djYy9mb3J0cmFuL21vZHVsZS5jCmluZGV4IDJhN2U5ODYuLjNlYzI0ZjIg MTAwNjQ0Ci0tLSAuL2djYy9mb3J0cmFuL21vZHVsZS5jCisrKyAuL2djYy9m b3J0cmFuL21vZHVsZS5jCkBAIC0xODg5LDcgKzE4ODksNyBAQCB0eXBlZGVm IGVudW0KICAgQUJfRUxFTUVOVEFMLCBBQl9QVVJFLCBBQl9SRUNVUlNJVkUs IEFCX0dFTkVSSUMsIEFCX0FMV0FZU19FWFBMSUNJVCwKICAgQUJfQ1JBWV9Q T0lOVEVSLCBBQl9DUkFZX1BPSU5URUUsIEFCX1RIUkVBRFBSSVZBVEUsCiAg IEFCX0FMTE9DX0NPTVAsIEFCX1BPSU5URVJfQ09NUCwgQUJfUFJPQ19QT0lO VEVSX0NPTVAsIEFCX1BSSVZBVEVfQ09NUCwKLSAgQUJfVkFMVUUsIEFCX1ZP TEFUSUxFLCBBQl9QUk9URUNURUQsIEFCX0xPQ0tfQ09NUCwKKyAgQUJfVkFM VUUsIEFCX1ZPTEFUSUxFLCBBQl9QUk9URUNURUQsIEFCX0xPQ0tfQ09NUCwg QUJfRVZFTlRfQ09NUCwKICAgQUJfSVNfQklORF9DLCBBQl9JU19DX0lOVEVS T1AsIEFCX0lTX0lTT19DLCBBQl9BQlNUUkFDVCwgQUJfWkVST19DT01QLAog ICBBQl9JU19DTEFTUywgQUJfUFJPQ0VEVVJFLCBBQl9QUk9DX1BPSU5URVIs IEFCX0FTWU5DSFJPTk9VUywgQUJfQ09ESU1FTlNJT04sCiAgIEFCX0NPQVJS QVlfQ09NUCwgQUJfVlRZUEUsIEFCX1ZUQUIsIEFCX0NPTlRJR1VPVVMsIEFC X0NMQVNTX1BPSU5URVIsCkBAIC0xOTM1LDYgKzE5MzUsNyBAQCBzdGF0aWMg Y29uc3QgbXN0cmluZyBhdHRyX2JpdHNbXSA9CiAgICAgbWluaXQgKCJBTExP Q19DT01QIiwgQUJfQUxMT0NfQ09NUCksCiAgICAgbWluaXQgKCJDT0FSUkFZ X0NPTVAiLCBBQl9DT0FSUkFZX0NPTVApLAogICAgIG1pbml0ICgiTE9DS19D T01QIiwgQUJfTE9DS19DT01QKSwKKyAgICBtaW5pdCAoIkVWRU5UX0NPTVAi LCBBQl9FVkVOVF9DT01QKSwKICAgICBtaW5pdCAoIlBPSU5URVJfQ09NUCIs IEFCX1BPSU5URVJfQ09NUCksCiAgICAgbWluaXQgKCJQUk9DX1BPSU5URVJf Q09NUCIsIEFCX1BST0NfUE9JTlRFUl9DT01QKSwKICAgICBtaW5pdCAoIlBS SVZBVEVfQ09NUCIsIEFCX1BSSVZBVEVfQ09NUCksCkBAIC0yMTE3LDYgKzIx MTgsOCBAQCBtaW9fc3ltYm9sX2F0dHJpYnV0ZSAoc3ltYm9sX2F0dHJpYnV0 ZSAqYXR0cikKIAlNSU9fTkFNRSAoYWJfYXR0cmlidXRlKSAoQUJfQ09BUlJB WV9DT01QLCBhdHRyX2JpdHMpOwogICAgICAgaWYgKGF0dHItPmxvY2tfY29t cCkKIAlNSU9fTkFNRSAoYWJfYXR0cmlidXRlKSAoQUJfTE9DS19DT01QLCBh dHRyX2JpdHMpOworICAgICAgaWYgKGF0dHItPmV2ZW50X2NvbXApCisJTUlP X05BTUUgKGFiX2F0dHJpYnV0ZSkgKEFCX0VWRU5UX0NPTVAsIGF0dHJfYml0 cyk7CiAgICAgICBpZiAoYXR0ci0+emVyb19jb21wKQogCU1JT19OQU1FIChh Yl9hdHRyaWJ1dGUpIChBQl9aRVJPX0NPTVAsIGF0dHJfYml0cyk7CiAgICAg ICBpZiAoYXR0ci0+aXNfY2xhc3MpCkBAIC0yMjY5LDYgKzIyNzIsOSBAQCBt aW9fc3ltYm9sX2F0dHJpYnV0ZSAoc3ltYm9sX2F0dHJpYnV0ZSAqYXR0cikK IAkgICAgY2FzZSBBQl9MT0NLX0NPTVA6CiAJICAgICAgYXR0ci0+bG9ja19j b21wID0gMTsKIAkgICAgICBicmVhazsKKwkgICAgY2FzZSBBQl9FVkVOVF9D T01QOgorCSAgICAgIGF0dHItPmV2ZW50X2NvbXAgPSAxOworCSAgICAgIGJy ZWFrOwogCSAgICBjYXNlIEFCX1BPSU5URVJfQ09NUDoKIAkgICAgICBhdHRy LT5wb2ludGVyX2NvbXAgPSAxOwogCSAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0 IC4vZ2NjL2ZvcnRyYW4vcGFyc2UuYyAuL2djYy9mb3J0cmFuL3BhcnNlLmMK aW5kZXggMjdlYWQyMS4uNjM5NGUyZSAxMDA2NDQKLS0tIC4vZ2NjL2ZvcnRy YW4vcGFyc2UuYworKysgLi9nY2MvZm9ydHJhbi9wYXJzZS5jCkBAIC00NTcs NiArNDU3LDggQEAgZGVjb2RlX3N0YXRlbWVudCAodm9pZCkKICAgICAgIG1h dGNoICgiZW50cnklICIsIGdmY19tYXRjaF9lbnRyeSwgU1RfRU5UUlkpOwog ICAgICAgbWF0Y2ggKCJlcXVpdmFsZW5jZSIsIGdmY19tYXRjaF9lcXVpdmFs ZW5jZSwgU1RfRVFVSVZBTEVOQ0UpOwogICAgICAgbWF0Y2ggKCJleHRlcm5h bCIsIGdmY19tYXRjaF9leHRlcm5hbCwgU1RfQVRUUl9ERUNMKTsKKyAgICAg IG1hdGNoICgiZXZlbnQgcG9zdCIsIGdmY19tYXRjaF9ldmVudF9wb3N0LCBT VF9FVkVOVF9QT1NUKTsKKyAgICAgIG1hdGNoICgiZXZlbnQgd2FpdCIsIGdm Y19tYXRjaF9ldmVudF93YWl0LCBTVF9FVkVOVF9XQUlUKTsKICAgICAgIGJy ZWFrOwogCiAgICAgY2FzZSAnZic6CkBAIC0xMzIzLDYgKzEzMjUsNyBAQCBu ZXh0X3N0YXRlbWVudCAodm9pZCkKICAgY2FzZSBTVF9PTVBfQ0FOQ0VMOiBj YXNlIFNUX09NUF9DQU5DRUxMQVRJT05fUE9JTlQ6IFwKICAgY2FzZSBTVF9P TVBfVEFSR0VUX1VQREFURTogY2FzZSBTVF9FUlJPUl9TVE9QOiBjYXNlIFNU X1NZTkNfQUxMOiBcCiAgIGNhc2UgU1RfU1lOQ19JTUFHRVM6IGNhc2UgU1Rf U1lOQ19NRU1PUlk6IGNhc2UgU1RfTE9DSzogY2FzZSBTVF9VTkxPQ0s6IFwK KyAgY2FzZSBTVF9FVkVOVF9QT1NUOiBjYXNlIFNUX0VWRU5UX1dBSVQ6IFwK ICAgY2FzZSBTVF9PQUNDX1VQREFURTogY2FzZSBTVF9PQUNDX1dBSVQ6IGNh c2UgU1RfT0FDQ19DQUNIRTogXAogICBjYXNlIFNUX09BQ0NfRU5URVJfREFU QTogY2FzZSBTVF9PQUNDX0VYSVRfREFUQQogCkBAIC0xNjI4LDYgKzE2MzEs MTIgQEAgZ2ZjX2FzY2lpX3N0YXRlbWVudCAoZ2ZjX3N0YXRlbWVudCBzdCkK ICAgICBjYXNlIFNUX0VMU0VXSEVSRToKICAgICAgIHAgPSAiRUxTRVdIRVJF IjsKICAgICAgIGJyZWFrOworICAgIGNhc2UgU1RfRVZFTlRfUE9TVDoKKyAg ICAgIHAgPSAiRVZFTlQgUE9TVCI7CisgICAgICBicmVhazsKKyAgICBjYXNl IFNUX0VWRU5UX1dBSVQ6CisgICAgICBwID0gIkVWRU5UIFdBSVQiOworICAg ICAgYnJlYWs7CiAgICAgY2FzZSBTVF9FTkRfQVNTT0NJQVRFOgogICAgICAg cCA9ICJFTkQgQVNTT0NJQVRFIjsKICAgICAgIGJyZWFrOwpAQCAtMjYwOCw3 ICsyNjE3LDcgQEAgcGFyc2VfZGVyaXZlZCAodm9pZCkKICAgZ2ZjX3N0YXRl bWVudCBzdDsKICAgZ2ZjX3N0YXRlX2RhdGEgczsKICAgZ2ZjX3N5bWJvbCAq c3ltOwotICBnZmNfY29tcG9uZW50ICpjLCAqbG9ja19jb21wID0gTlVMTDsK KyAgZ2ZjX2NvbXBvbmVudCAqYywgKmxvY2tfY29tcCA9IE5VTEwsICpldmVu dF9jb21wID0gTlVMTDsKIAogICBhY2NlcHRfc3RhdGVtZW50IChTVF9ERVJJ VkVEX0RFQ0wpOwogICBwdXNoX3N0YXRlICgmcywgQ09NUF9ERVJJVkVELCBn ZmNfbmV3X2Jsb2NrKTsKQEAgLTI3MTYsOCArMjcyNSw4IEBAIGVuZFR5cGU6 CiAgIHN5bSA9IGdmY19jdXJyZW50X2Jsb2NrICgpOwogICBmb3IgKGMgPSBz eW0tPmNvbXBvbmVudHM7IGM7IGMgPSBjLT5uZXh0KQogICAgIHsKLSAgICAg IGJvb2wgY29hcnJheSwgbG9ja190eXBlLCBhbGxvY2F0YWJsZSwgcG9pbnRl cjsKLSAgICAgIGNvYXJyYXkgPSBsb2NrX3R5cGUgPSBhbGxvY2F0YWJsZSA9 IHBvaW50ZXIgPSBmYWxzZTsKKyAgICAgIGJvb2wgY29hcnJheSwgbG9ja190 eXBlLCBldmVudF90eXBlLCBhbGxvY2F0YWJsZSwgcG9pbnRlcjsKKyAgICAg IGNvYXJyYXkgPSBsb2NrX3R5cGUgPSBldmVudF90eXBlID0gYWxsb2NhdGFi bGUgPSBwb2ludGVyID0gZmFsc2U7CiAKICAgICAgIC8qIExvb2sgZm9yIGFs bG9jYXRhYmxlIGNvbXBvbmVudHMuICAqLwogICAgICAgaWYgKGMtPmF0dHIu YWxsb2NhdGFibGUKQEAgLTI3NzksNiArMjc4OCwyMyBAQCBlbmRUeXBlOgog CSAgc3ltLT5hdHRyLmxvY2tfY29tcCA9IDE7CiAJfQogCisgICAgICAvKiBM b29raW5nIGZvciBldmVudF90eXBlIGNvbXBvbmVudHMuICAqLworICAgICAg aWYgKChjLT50cy50eXBlID09IEJUX0RFUklWRUQKKwkgICAgICAmJiBjLT50 cy51LmRlcml2ZWQtPmZyb21faW50bW9kID09IElOVE1PRF9JU09fRk9SVFJB Tl9FTlYKKwkgICAgICAmJiBjLT50cy51LmRlcml2ZWQtPmludG1vZF9zeW1f aWQgPT0gSVNPRk9SVFJBTl9FVkVOVF9UWVBFKQorCSAgfHwgKGMtPnRzLnR5 cGUgPT0gQlRfQ0xBU1MgJiYgYy0+YXR0ci5jbGFzc19vaworCSAgICAgICYm IENMQVNTX0RBVEEgKGMpLT50cy51LmRlcml2ZWQtPmZyb21faW50bW9kCisJ CSA9PSBJTlRNT0RfSVNPX0ZPUlRSQU5fRU5WCisJICAgICAgJiYgQ0xBU1Nf REFUQSAoYyktPnRzLnUuZGVyaXZlZC0+aW50bW9kX3N5bV9pZAorCQkgPT0g SVNPRk9SVFJBTl9FVkVOVF9UWVBFKQorCSAgfHwgKGMtPnRzLnR5cGUgPT0g QlRfREVSSVZFRCAmJiBjLT50cy51LmRlcml2ZWQtPmF0dHIuZXZlbnRfY29t cAorCSAgICAgICYmICFhbGxvY2F0YWJsZSAmJiAhcG9pbnRlcikpCisJewor CSAgZXZlbnRfdHlwZSA9IDE7CisJICBldmVudF9jb21wID0gYzsKKwkgIHN5 bS0+YXR0ci5ldmVudF9jb21wID0gMTsKKwl9CisKICAgICAgIC8qIENoZWNr IGZvciBGMjAwOCwgQzEzMDIgLSBhbmQgcmVjYWxsIHRoYXQgcG9pbnRlcnMg bWF5IG5vdCBiZSBjb2FycmF5cwogCSAoNS4zLjE0KSBhbmQgdGhhdCBzdWJv YmplY3RzIG9mIGNvYXJyYXkgYXJlIGNvYXJyYXkgdGhlbXNlbHZlcyAoMi40 LjcpLAogCSB1bmxlc3MgdGhlcmUgYXJlIG5vbmRpcmVjdCBbYWxsb2NhdGFi bGUgb3IgcG9pbnRlcl0gY29tcG9uZW50cwpAQCAtMjgxOSw2ICsyODQ1LDQz IEBAIGVuZFR5cGU6CiAJCSAgICJjb2FycmF5IHN1YmNvbXBvbmVudCkiLCBs b2NrX2NvbXAtPm5hbWUsICZsb2NrX2NvbXAtPmxvYywKIAkJICAgc3ltLT5u YW1lLCBjLT5uYW1lLCAmYy0+bG9jKTsKIAorICAgICAgLyogU2ltaWxhcmx5 IGZvciBFVkVOVCBUWVBFLiAgKi8KKworICAgICAgaWYgKHBvaW50ZXIgJiYg IWNvYXJyYXkgJiYgZXZlbnRfdHlwZSkKKwlnZmNfZXJyb3IgKCJDb21wb25l bnQgJXMgYXQgJUwgb2YgdHlwZSBFVkVOVF9UWVBFIG11c3QgaGF2ZSBhICIK KwkJICAgImNvZGltZW5zaW9uIG9yIGJlIGEgc3ViY29tcG9uZW50IG9mIGEg Y29hcnJheSwgIgorCQkgICAid2hpY2ggaXMgbm90IHBvc3NpYmxlIGFzIHRo ZSBjb21wb25lbnQgaGFzIHRoZSAiCisJCSAgICJwb2ludGVyIGF0dHJpYnV0 ZSIsIGMtPm5hbWUsICZjLT5sb2MpOworICAgICAgZWxzZSBpZiAocG9pbnRl ciAmJiAhY29hcnJheSAmJiBjLT50cy50eXBlID09IEJUX0RFUklWRUQKKwkg ICAgICAgJiYgYy0+dHMudS5kZXJpdmVkLT5hdHRyLmV2ZW50X2NvbXApCisJ Z2ZjX2Vycm9yICgiUG9pbnRlciBjb21wb25lbnQgJXMgYXQgJUwgaGFzIGEg bm9uY29hcnJheSBzdWJjb21wb25lbnQgIgorCQkgICAib2YgdHlwZSBFVkVO VF9UWVBFLCB3aGljaCBtdXN0IGhhdmUgYSBjb2RpbWVuc2lvbiBvciBiZSBh ICIKKwkJICAgInN1YmNvbXBvbmVudCBvZiBhIGNvYXJyYXkiLCBjLT5uYW1l LCAmYy0+bG9jKTsKKworICAgICAgaWYgKGV2ZW50X3R5cGUgJiYgYWxsb2Nh dGFibGUgJiYgIWNvYXJyYXkpCisJZ2ZjX2Vycm9yICgiQWxsb2NhdGFibGUg Y29tcG9uZW50ICVzIGF0ICVMIG9mIHR5cGUgRVZFTlRfVFlQRSBtdXN0IGhh dmUgIgorCQkgICAiYSBjb2RpbWVuc2lvbiIsIGMtPm5hbWUsICZjLT5sb2Mp OworICAgICAgZWxzZSBpZiAoZXZlbnRfdHlwZSAmJiBhbGxvY2F0YWJsZSAm JiBjLT50cy50eXBlID09IEJUX0RFUklWRUQKKwkgICAgICAgJiYgYy0+dHMu dS5kZXJpdmVkLT5hdHRyLmV2ZW50X2NvbXApCisJZ2ZjX2Vycm9yICgiQWxs b2NhdGFibGUgY29tcG9uZW50ICVzIGF0ICVMIG11c3QgaGF2ZSBhIGNvZGlt ZW5zaW9uIGFzICIKKwkJICAgIml0IGhhcyBhIG5vbmNvYXJyYXkgc3ViY29t cG9uZW50IG9mIHR5cGUgRVZFTlRfVFlQRSIsCisJCSAgIGMtPm5hbWUsICZj LT5sb2MpOworCisgICAgICBpZiAoc3ltLT5hdHRyLmNvYXJyYXlfY29tcCAm JiAhY29hcnJheSAmJiBldmVudF90eXBlKQorCWdmY19lcnJvciAoIk5vbmNv YXJyYXkgY29tcG9uZW50ICVzIGF0ICVMIG9mIHR5cGUgRVZFTlRfVFlQRSBv ciB3aXRoICIKKwkJICAgInN1YmNvbXBvbmVudCBvZiB0eXBlIEVWRU5UX1RZ UEUgbXVzdCBoYXZlIGEgY29kaW1lbnNpb24gb3IgIgorCQkgICAiYmUgYSBz dWJjb21wb25lbnQgb2YgYSBjb2FycmF5LiAoVmFyaWFibGVzIG9mIHR5cGUg JXMgbWF5ICIKKwkJICAgIm5vdCBoYXZlIGEgY29kaW1lbnNpb24gYXMgYWxy ZWFkeSBhIGNvYXJyYXkgIgorCQkgICAic3ViY29tcG9uZW50IGV4aXN0cyki LCBjLT5uYW1lLCAmYy0+bG9jLCBzeW0tPm5hbWUpOworCisgICAgICBpZiAo c3ltLT5hdHRyLmV2ZW50X2NvbXAgJiYgY29hcnJheSAmJiAhZXZlbnRfdHlw ZSkKKwlnZmNfZXJyb3IgKCJOb25jb2FycmF5IGNvbXBvbmVudCAlcyBhdCAl TCBvZiB0eXBlIEVWRU5UX1RZUEUgb3Igd2l0aCAiCisJCSAgICJzdWJjb21w b25lbnQgb2YgdHlwZSBFVkVOVF9UWVBFIG11c3QgaGF2ZSBhIGNvZGltZW5z aW9uIG9yICIKKwkJICAgImJlIGEgc3ViY29tcG9uZW50IG9mIGEgY29hcnJh eS4gKFZhcmlhYmxlcyBvZiB0eXBlICVzIG1heSAiCisJCSAgICJub3QgaGF2 ZSBhIGNvZGltZW5zaW9uIGFzICVzIGF0ICVMIGhhcyBhIGNvZGltZW5zaW9u IG9yIGEgIgorCQkgICAiY29hcnJheSBzdWJjb21wb25lbnQpIiwgZXZlbnRf Y29tcC0+bmFtZSwgJmV2ZW50X2NvbXAtPmxvYywKKwkJICAgc3ltLT5uYW1l LCBjLT5uYW1lLCAmYy0+bG9jKTsKKwogICAgICAgLyogTG9vayBmb3IgcHJp dmF0ZSBjb21wb25lbnRzLiAgKi8KICAgICAgIGlmIChzeW0tPmNvbXBvbmVu dF9hY2Nlc3MgPT0gQUNDRVNTX1BSSVZBVEUKIAkgIHx8IGMtPmF0dHIuYWNj ZXNzID09IEFDQ0VTU19QUklWQVRFCmRpZmYgLS1naXQgLi9nY2MvZm9ydHJh bi9yZXNvbHZlLmMgLi9nY2MvZm9ydHJhbi9yZXNvbHZlLmMKaW5kZXggYmMy YmU1ZC4uYmNhZjAwNCAxMDA2NDQKLS0tIC4vZ2NjL2ZvcnRyYW4vcmVzb2x2 ZS5jCisrKyAuL2djYy9mb3J0cmFuL3Jlc29sdmUuYwpAQCAtNjk3Nyw2ICs2 OTc3LDIxIEBAIHJlc29sdmVfYWxsb2NhdGVfZXhwciAoZ2ZjX2V4cHIgKmUs IGdmY19jb2RlICpjb2RlKQogCQkgICAgICAmY29kZS0+ZXhwcjMtPndoZXJl LCAmZS0+d2hlcmUpOwogCSAgZ290byBmYWlsdXJlOwogCX0KKworICAgICAg LyogQ2hlY2sgVFMxODUwOCwgQzcwMi9DNzAzLiAgKi8KKyAgICAgIGlmIChj b2RlLT5leHByMy0+dHMudHlwZSA9PSBCVF9ERVJJVkVECisJICAmJiAoKGNv ZGltZW5zaW9uICYmIGdmY19leHByX2F0dHIgKGNvZGUtPmV4cHIzKS5ldmVu dF9jb21wKQorCSAgICAgIHx8IChjb2RlLT5leHByMy0+dHMudS5kZXJpdmVk LT5mcm9tX2ludG1vZAorCQkgICAgID09IElOVE1PRF9JU09fRk9SVFJBTl9F TlYKKwkJICAmJiBjb2RlLT5leHByMy0+dHMudS5kZXJpdmVkLT5pbnRtb2Rf c3ltX2lkCisJCSAgICAgPT0gSVNPRk9SVFJBTl9FVkVOVF9UWVBFKSkpCisJ eworCSAgZ2ZjX2Vycm9yICgiVGhlIHNvdXJjZS1leHByIGF0ICVMIHNoYWxs IG5laXRoZXIgYmUgb2YgdHlwZSAiCisJCSAgICAgIkVWRU5UX1RZUEUgbm9y IGhhdmUgYSBFVkVOVF9UWVBFIGNvbXBvbmVudCBpZiAiCisJCSAgICAgICJh bGxvY2F0ZS1vYmplY3QgYXQgJUwgaXMgYSBjb2FycmF5IiwKKwkJICAgICAg JmNvZGUtPmV4cHIzLT53aGVyZSwgJmUtPndoZXJlKTsKKwkgIGdvdG8gZmFp bHVyZTsKKwl9CiAgICAgfQogCiAgIC8qIENoZWNrIEYwODpDNjI5LiAgKi8K QEAgLTcwMjgsNiArNzA0MywxMyBAQCByZXNvbHZlX2FsbG9jYXRlX2V4cHIg KGdmY19leHByICplLCBnZmNfY29kZSAqY29kZSkKIAkgbm8gU09VUkNFIGV4 aXN0cyBieSBzZXR0aW5nIGV4cHIzLiAgKi8KICAgICAgIGNvZGUtPmV4cHIz ID0gZ2ZjX2RlZmF1bHRfaW5pdGlhbGl6ZXIgKCZjb2RlLT5leHQuYWxsb2Mu dHMpOwogICAgIH0KKyAgZWxzZSBpZiAoZmxhZ19jb2FycmF5ICE9IEdGQ19G Q09BUlJBWV9MSUIgJiYgZS0+dHMudHlwZSA9PSBCVF9ERVJJVkVECisJICAg JiYgZS0+dHMudS5kZXJpdmVkLT5mcm9tX2ludG1vZCA9PSBJTlRNT0RfSVNP X0ZPUlRSQU5fRU5WCisJICAgJiYgZS0+dHMudS5kZXJpdmVkLT5pbnRtb2Rf c3ltX2lkID09IElTT0ZPUlRSQU5fRVZFTlRfVFlQRSkKKyAgICB7CisgICAg ICAvKiBXZSBoYXZlIHRvIHplcm8gaW5pdGlhbGl6ZSB0aGUgaW50ZWdlciB2 YXJpYWJsZS4gICovCisgICAgICBjb2RlLT5leHByMyA9IGdmY19nZXRfaW50 X2V4cHIgKGdmY19kZWZhdWx0X2ludGVnZXJfa2luZCwgJmUtPndoZXJlLCAw KTsKKyAgICB9CiAgIGVsc2UgaWYgKCFjb2RlLT5leHByMykKICAgICB7CiAg ICAgICAvKiBTZXQgdXAgZGVmYXVsdCBpbml0aWFsaXplciBpZiBuZWVkZWQu ICAqLwpAQCAtODU0NSwyMSArODU2Nyw0MCBAQCBmaW5kX3JlYWNoYWJsZV9s YWJlbHMgKGdmY19jb2RlICpibG9jaykKIAogCiBzdGF0aWMgdm9pZAotcmVz b2x2ZV9sb2NrX3VubG9jayAoZ2ZjX2NvZGUgKmNvZGUpCityZXNvbHZlX2xv Y2tfdW5sb2NrX2V2ZW50IChnZmNfY29kZSAqY29kZSkKIHsKICAgaWYgKGNv ZGUtPmV4cHIxLT5leHByX3R5cGUgPT0gRVhQUl9GVU5DVElPTgogICAgICAg JiYgY29kZS0+ZXhwcjEtPnZhbHVlLmZ1bmN0aW9uLmlzeW0KICAgICAgICYm IGNvZGUtPmV4cHIxLT52YWx1ZS5mdW5jdGlvbi5pc3ltLT5pZCA9PSBHRkNf SVNZTV9DQUZfR0VUKQogICAgIHJlbW92ZV9jYWZfZ2V0X2ludHJpbnNpYyAo Y29kZS0+ZXhwcjEpOwogCi0gIGlmIChjb2RlLT5leHByMS0+dHMudHlwZSAh PSBCVF9ERVJJVkVECi0gICAgICB8fCBjb2RlLT5leHByMS0+ZXhwcl90eXBl ICE9IEVYUFJfVkFSSUFCTEUKLSAgICAgIHx8IGNvZGUtPmV4cHIxLT50cy51 LmRlcml2ZWQtPmZyb21faW50bW9kICE9IElOVE1PRF9JU09fRk9SVFJBTl9F TlYKLSAgICAgIHx8IGNvZGUtPmV4cHIxLT50cy51LmRlcml2ZWQtPmludG1v ZF9zeW1faWQgIT0gSVNPRk9SVFJBTl9MT0NLX1RZUEUKLSAgICAgIHx8IGNv ZGUtPmV4cHIxLT5yYW5rICE9IDAKLSAgICAgIHx8ICghZ2ZjX2lzX2NvYXJy YXkgKGNvZGUtPmV4cHIxKSAmJiAhZ2ZjX2lzX2NvaW5kZXhlZCAoY29kZS0+ ZXhwcjEpKSkKKyAgaWYgKChjb2RlLT5vcCA9PSBFWEVDX0xPQ0sgfHwgY29k ZS0+b3AgPT0gRVhFQ19VTkxPQ0spCisgICAgICAmJiAoY29kZS0+ZXhwcjEt PnRzLnR5cGUgIT0gQlRfREVSSVZFRAorCSAgfHwgY29kZS0+ZXhwcjEtPmV4 cHJfdHlwZSAhPSBFWFBSX1ZBUklBQkxFCisJICB8fCBjb2RlLT5leHByMS0+ dHMudS5kZXJpdmVkLT5mcm9tX2ludG1vZCAhPSBJTlRNT0RfSVNPX0ZPUlRS QU5fRU5WCisJICB8fCBjb2RlLT5leHByMS0+dHMudS5kZXJpdmVkLT5pbnRt b2Rfc3ltX2lkICE9IElTT0ZPUlRSQU5fTE9DS19UWVBFCisJICB8fCBjb2Rl LT5leHByMS0+cmFuayAhPSAwCisJICB8fCAoIWdmY19pc19jb2FycmF5IChj b2RlLT5leHByMSkgJiYKKwkgICAgICAhZ2ZjX2lzX2NvaW5kZXhlZCAoY29k ZS0+ZXhwcjEpKSkpCiAgICAgZ2ZjX2Vycm9yICgiTG9jayB2YXJpYWJsZSBh dCAlTCBtdXN0IGJlIGEgc2NhbGFyIG9mIHR5cGUgTE9DS19UWVBFIiwKIAkg ICAgICAgJmNvZGUtPmV4cHIxLT53aGVyZSk7CisgIGVsc2UgaWYgKChjb2Rl LT5vcCA9PSBFWEVDX0VWRU5UX1BPU1QgfHwgY29kZS0+b3AgPT0gRVhFQ19F VkVOVF9XQUlUKQorCSAgICYmIChjb2RlLT5leHByMS0+dHMudHlwZSAhPSBC VF9ERVJJVkVECisJICAgICAgIHx8IGNvZGUtPmV4cHIxLT5leHByX3R5cGUg IT0gRVhQUl9WQVJJQUJMRQorCSAgICAgICB8fCBjb2RlLT5leHByMS0+dHMu dS5kZXJpdmVkLT5mcm9tX2ludG1vZAorCQkgICE9IElOVE1PRF9JU09fRk9S VFJBTl9FTlYKKwkgICAgICAgfHwgY29kZS0+ZXhwcjEtPnRzLnUuZGVyaXZl ZC0+aW50bW9kX3N5bV9pZAorCQkgICE9IElTT0ZPUlRSQU5fRVZFTlRfVFlQ RQorCSAgICAgICB8fCBjb2RlLT5leHByMS0+cmFuayAhPSAwKSkKKyAgICBn ZmNfZXJyb3IgKCJFdmVudCB2YXJpYWJsZSBhdCAlTCBtdXN0IGJlIGEgc2Nh bGFyIG9mIHR5cGUgRVZFTlRfVFlQRSIsCisJICAgICAgICZjb2RlLT5leHBy MS0+d2hlcmUpOworICBlbHNlIGlmIChjb2RlLT5vcCA9PSBFWEVDX0VWRU5U X1BPU1QgJiYgIWdmY19pc19jb2FycmF5IChjb2RlLT5leHByMSkKKwkgICAm JiAhZ2ZjX2lzX2NvaW5kZXhlZCAoY29kZS0+ZXhwcjEpKQorICAgIGdmY19l cnJvciAoIkV2ZW50IHZhcmlhYmxlIGFyZ3VtZW50IGF0ICVMIG11c3QgYmUg YSBjb2FycmF5IG9yIGNvaW5kZXhlZCIsCisJICAgICAgICZjb2RlLT5leHBy MS0+d2hlcmUpOworICBlbHNlIGlmIChjb2RlLT5vcCA9PSBFWEVDX0VWRU5U X1dBSVQgJiYgIWdmY19pc19jb2FycmF5IChjb2RlLT5leHByMSkpCisgICAg Z2ZjX2Vycm9yICgiRXZlbnQgdmFyaWFibGUgYXJndW1lbnQgYXQgJUwgbXVz dCBiZSBhIGNvYXJyYXkgYnV0IG5vdCAiCisJICAgICAgICJjb2luZGV4ZWQi LCAmY29kZS0+ZXhwcjEtPndoZXJlKTsKIAogICAvKiBDaGVjayBTVEFULiAg Ki8KICAgaWYgKGNvZGUtPmV4cHIyCkBAIC04NTg1LDE3ICs4NjI2LDIzIEBA IHJlc29sdmVfbG9ja191bmxvY2sgKGdmY19jb2RlICpjb2RlKQogCQkJCSAg ICBfKCJFUlJNU0cgdmFyaWFibGUiKSkpCiAgICAgcmV0dXJuOwogCi0gIC8q IENoZWNrIEFDUVVJUkVEX0xPQ0suICAqLwotICBpZiAoY29kZS0+ZXhwcjQK KyAgLyogQ2hlY2sgZm9yIExPQ0sgdGhlIEFDUVVJUkVEX0xPQ0suICAqLwor ICBpZiAoY29kZS0+b3AgIT0gRVhFQ19FVkVOVF9XQUlUICYmIGNvZGUtPmV4 cHI0CiAgICAgICAmJiAoY29kZS0+ZXhwcjQtPnRzLnR5cGUgIT0gQlRfTE9H SUNBTCB8fCBjb2RlLT5leHByNC0+cmFuayAhPSAwCiAJICB8fCBjb2RlLT5l eHByNC0+ZXhwcl90eXBlICE9IEVYUFJfVkFSSUFCTEUpKQogICAgIGdmY19l cnJvciAoIkFDUVVJUkVEX0xPQ0s9IGFyZ3VtZW50IGF0ICVMIG11c3QgYmUg YSBzY2FsYXIgTE9HSUNBTCAiCiAJICAgICAgICJ2YXJpYWJsZSIsICZjb2Rl LT5leHByNC0+d2hlcmUpOwogCi0gIGlmIChjb2RlLT5leHByNAorICBpZiAo Y29kZS0+b3AgIT0gRVhFQ19FVkVOVF9XQUlUICYmIGNvZGUtPmV4cHI0CiAg ICAgICAmJiAhZ2ZjX2NoZWNrX3ZhcmRlZl9jb250ZXh0IChjb2RlLT5leHBy NCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKIAkJCQkgICAgXygiQUNRVUlSRURf TE9DSyB2YXJpYWJsZSIpKSkKICAgICByZXR1cm47CisKKyAgLyogQ2hlY2sg Zm9yIEVWRU5UIFdBSVQgdGhlIFVOVElMX0NPVU5ULiAgKi8KKyAgaWYgKGNv ZGUtPm9wID09IEVYRUNfRVZFTlRfV0FJVCAmJiBjb2RlLT5leHByNAorICAg ICAgJiYgKGNvZGUtPmV4cHI0LT50cy50eXBlICE9IEJUX0lOVEVHRVIgfHwg Y29kZS0+ZXhwcjQtPnJhbmsgIT0gMCkpCisgICAgZ2ZjX2Vycm9yICgiVU5U SUxfQ09VTlQ9IGFyZ3VtZW50IGF0ICVMIG11c3QgYmUgYSBzY2FsYXIgSU5U RUdFUiAiCisJICAgICAgICJleHByZXNzaW9uIiwgJmNvZGUtPmV4cHI0LT53 aGVyZSk7CiB9CiAKIApAQCAtMTAxNzMsNyArMTAyMjAsOSBAQCBnZmNfcmVz b2x2ZV9jb2RlIChnZmNfY29kZSAqY29kZSwgZ2ZjX25hbWVzcGFjZSAqbnMp CiAKIAljYXNlIEVYRUNfTE9DSzoKIAljYXNlIEVYRUNfVU5MT0NLOgotCSAg cmVzb2x2ZV9sb2NrX3VubG9jayAoY29kZSk7CisJY2FzZSBFWEVDX0VWRU5U X1BPU1Q6CisJY2FzZSBFWEVDX0VWRU5UX1dBSVQ6CisJICByZXNvbHZlX2xv Y2tfdW5sb2NrX2V2ZW50IChjb2RlKTsKIAkgIGJyZWFrOwogCiAJY2FzZSBF WEVDX0VOVFJZOgpAQCAtMTM2NjMsNiArMTM3MTIsMTkgQEAgcmVzb2x2ZV9z eW1ib2wgKGdmY19zeW1ib2wgKnN5bSkKICAgICAgIHJldHVybjsKICAgICB9 CiAKKyAgLyogVFMxODUwOCwgQzcwMi9DNzAzLiAgKi8KKyAgaWYgKHN5bS0+ dHMudHlwZSA9PSBCVF9ERVJJVkVECisgICAgICAmJiAoKHN5bS0+dHMudS5k ZXJpdmVkLT5mcm9tX2ludG1vZCA9PSBJTlRNT0RfSVNPX0ZPUlRSQU5fRU5W CisJICAgJiYgc3ltLT50cy51LmRlcml2ZWQtPmludG1vZF9zeW1faWQgPT0g SVNPRk9SVFJBTl9FVkVOVF9UWVBFKQorCSAgfHwgc3ltLT50cy51LmRlcml2 ZWQtPmF0dHIuZXZlbnRfY29tcCkKKyAgICAgICYmICFzeW0tPmF0dHIuY29k aW1lbnNpb24gJiYgIXN5bS0+dHMudS5kZXJpdmVkLT5hdHRyLmNvYXJyYXlf Y29tcCkKKyAgICB7CisgICAgICBnZmNfZXJyb3IgKCJWYXJpYWJsZSAlcyBh dCAlTCBvZiB0eXBlIEVWRU5UX1RZUEUgb3Igd2l0aCBzdWJjb21wb25lbnQg b2YgIgorCQkgInR5cGUgTE9DS19UWVBFIG11c3QgYmUgYSBjb2FycmF5Iiwg c3ltLT5uYW1lLAorCQkgJnN5bS0+ZGVjbGFyZWRfYXQpOworICAgICAgcmV0 dXJuOworICAgIH0KKwogICAvKiBBbiBhc3N1bWVkLXNpemUgYXJyYXkgd2l0 aCBJTlRFTlQoT1VUKSBzaGFsbCBub3QgYmUgb2YgYSB0eXBlIGZvciB3aGlj aAogICAgICBkZWZhdWx0IGluaXRpYWxpemF0aW9uIGlzIGRlZmluZWQgKDUu MS4yLjQuNCkuICAqLwogICBpZiAoc3ltLT50cy50eXBlID09IEJUX0RFUklW RUQKQEAgLTEzNjkyLDYgKzEzNzU0LDE1IEBAIHJlc29sdmVfc3ltYm9sIChn ZmNfc3ltYm9sICpzeW0pCiAgICAgICByZXR1cm47CiAgICAgfQogCisgIC8q IFRTMTg1MDguICAqLworICBpZiAoc3ltLT50cy50eXBlID09IEJUX0RFUklW RUQgJiYgc3ltLT5hdHRyLmR1bW15CisgICAgICAmJiBzeW0tPmF0dHIuaW50 ZW50ID09IElOVEVOVF9PVVQgJiYgc3ltLT5hdHRyLmV2ZW50X2NvbXApCisg ICAgeworICAgICAgZ2ZjX2Vycm9yICgiRHVtbXkgYXJndW1lbnQgJXFzIGF0 ICVMIG9mIEVWRU5UX1RZUEUgc2hhbGwgbm90IGJlICIKKwkJICJJTlRFTlQo T1VUKSIsIHN5bS0+bmFtZSwgJnN5bS0+ZGVjbGFyZWRfYXQpOworICAgICAg cmV0dXJuOworICAgIH0KKwogICAvKiBGMjAwOCwgQzUyNS4gICovCiAgIGlm ICgoKChzeW0tPnRzLnR5cGUgPT0gQlRfREVSSVZFRCAmJiBzeW0tPnRzLnUu ZGVyaXZlZC0+YXR0ci5jb2FycmF5X2NvbXApCiAJIHx8IChzeW0tPnRzLnR5 cGUgPT0gQlRfQ0xBU1MgJiYgc3ltLT5hdHRyLmNsYXNzX29rCmRpZmYgLS1n aXQgLi9nY2MvZm9ydHJhbi9zdC5jIC4vZ2NjL2ZvcnRyYW4vc3QuYwppbmRl eCAxMTZhZjE1Li4wMzc5MmY4IDEwMDY0NAotLS0gLi9nY2MvZm9ydHJhbi9z dC5jCisrKyAuL2djYy9mb3J0cmFuL3N0LmMKQEAgLTExOCw2ICsxMTgsOCBA QCBnZmNfZnJlZV9zdGF0ZW1lbnQgKGdmY19jb2RlICpwKQogICAgIGNhc2Ug RVhFQ19TWU5DX01FTU9SWToKICAgICBjYXNlIEVYRUNfTE9DSzoKICAgICBj YXNlIEVYRUNfVU5MT0NLOgorICAgIGNhc2UgRVhFQ19FVkVOVF9QT1NUOgor ICAgIGNhc2UgRVhFQ19FVkVOVF9XQUlUOgogICAgICAgYnJlYWs7CiAKICAg ICBjYXNlIEVYRUNfQkxPQ0s6CmRpZmYgLS1naXQgLi9nY2MvZm9ydHJhbi90 cmFucy1kZWNsLmMgLi9nY2MvZm9ydHJhbi90cmFucy1kZWNsLmMKaW5kZXgg OTAwMDE1ZC4uOTAxNzc1ZiAxMDA2NDQKLS0tIC4vZ2NjL2ZvcnRyYW4vdHJh bnMtZGVjbC5jCisrKyAuL2djYy9mb3J0cmFuL3RyYW5zLWRlY2wuYwpAQCAt MTYzLDYgKzE2Myw5IEBAIHRyZWUgZ2Zvcl9mbmRlY2xfY2FmX2F0b21pY19j YXM7CiB0cmVlIGdmb3JfZm5kZWNsX2NhZl9hdG9taWNfb3A7CiB0cmVlIGdm b3JfZm5kZWNsX2NhZl9sb2NrOwogdHJlZSBnZm9yX2ZuZGVjbF9jYWZfdW5s b2NrOwordHJlZSBnZm9yX2ZuZGVjbF9jYWZfZXZlbnRfcG9zdDsKK3RyZWUg Z2Zvcl9mbmRlY2xfY2FmX2V2ZW50X3dhaXQ7Cit0cmVlIGdmb3JfZm5kZWNs X2NhZl9ldmVudF9xdWVyeTsKIHRyZWUgZ2Zvcl9mbmRlY2xfY29fYnJvYWRj YXN0OwogdHJlZSBnZm9yX2ZuZGVjbF9jb19tYXg7CiB0cmVlIGdmb3JfZm5k ZWNsX2NvX21pbjsKQEAgLTM1MDUsNiArMzUwOCwyMSBAQCBnZmNfYnVpbGRf YnVpbHRpbl9mdW5jdGlvbl9kZWNscyAodm9pZCkKIAl2b2lkX3R5cGVfbm9k ZSwgNiwgcHZvaWRfdHlwZV9ub2RlLCBzaXplX3R5cGVfbm9kZSwgaW50ZWdl cl90eXBlX25vZGUsCiAJcGludF90eXBlLCBwY2hhcl90eXBlX25vZGUsIGlu dGVnZXJfdHlwZV9ub2RlKTsKIAorICAgICAgZ2Zvcl9mbmRlY2xfY2FmX2V2 ZW50X3Bvc3QgPSBnZmNfYnVpbGRfbGlicmFyeV9mdW5jdGlvbl9kZWNsX3dp dGhfc3BlYyAoCisJZ2V0X2lkZW50aWZpZXIgKFBSRUZJWCgiY2FmX2V2ZW50 X3Bvc3QiKSksICJSLi5XVyIsCisJdm9pZF90eXBlX25vZGUsIDYsIHB2b2lk X3R5cGVfbm9kZSwgc2l6ZV90eXBlX25vZGUsIGludGVnZXJfdHlwZV9ub2Rl LAorCXBpbnRfdHlwZSwgcGNoYXJfdHlwZV9ub2RlLCBpbnRlZ2VyX3R5cGVf bm9kZSk7CisKKyAgICAgIGdmb3JfZm5kZWNsX2NhZl9ldmVudF93YWl0ID0g Z2ZjX2J1aWxkX2xpYnJhcnlfZnVuY3Rpb25fZGVjbF93aXRoX3NwZWMgKAor CWdldF9pZGVudGlmaWVyIChQUkVGSVgoImNhZl9ldmVudF93YWl0IikpLCAi Ui4uV1ciLAorCXZvaWRfdHlwZV9ub2RlLCA2LCBwdm9pZF90eXBlX25vZGUs IHNpemVfdHlwZV9ub2RlLCBpbnRlZ2VyX3R5cGVfbm9kZSwKKwlwaW50X3R5 cGUsIHBjaGFyX3R5cGVfbm9kZSwgaW50ZWdlcl90eXBlX25vZGUpOworCisg ICAgICBnZm9yX2ZuZGVjbF9jYWZfZXZlbnRfcXVlcnkgPSBnZmNfYnVpbGRf bGlicmFyeV9mdW5jdGlvbl9kZWNsX3dpdGhfc3BlYyAoCisJZ2V0X2lkZW50 aWZpZXIgKFBSRUZJWCgiY2FmX2V2ZW50X3F1ZXJ5IikpLCAiUi4uV1ciLAor CXZvaWRfdHlwZV9ub2RlLCA1LCBwdm9pZF90eXBlX25vZGUsIHNpemVfdHlw ZV9ub2RlLCBpbnRlZ2VyX3R5cGVfbm9kZSwKKwlwaW50X3R5cGUsIHBpbnRf dHlwZSk7CisKICAgICAgIGdmb3JfZm5kZWNsX2NvX2Jyb2FkY2FzdCA9IGdm Y19idWlsZF9saWJyYXJ5X2Z1bmN0aW9uX2RlY2xfd2l0aF9zcGVjICgKIAln ZXRfaWRlbnRpZmllciAoUFJFRklYKCJjYWZfY29fYnJvYWRjYXN0IikpLCAi Vy5XVyIsCiAJdm9pZF90eXBlX25vZGUsIDUsIHB2b2lkX3R5cGVfbm9kZSwg aW50ZWdlcl90eXBlX25vZGUsCkBAIC00Nzg0LDcgKzQ4MDIsNyBAQCBzdGF0 aWMgdm9pZAogZ2VuZXJhdGVfY29hcnJheV9zeW1faW5pdCAoZ2ZjX3N5bWJv bCAqc3ltKQogewogICB0cmVlIHRtcCwgc2l6ZSwgZGVjbCwgdG9rZW47Ci0g IGJvb2wgaXNfbG9ja190eXBlOworICBib29sIGlzX2xvY2tfdHlwZSwgaXNf ZXZlbnRfdHlwZTsKICAgaW50IHJlZ190eXBlOwogCiAgIGlmIChzeW0tPmF0 dHIuZHVtbXkgfHwgc3ltLT5hdHRyLmFsbG9jYXRhYmxlIHx8ICFzeW0tPmF0 dHIuY29kaW1lbnNpb24KQEAgLTQ4MDAsMTMgKzQ4MTgsMTcgQEAgZ2VuZXJh dGVfY29hcnJheV9zeW1faW5pdCAoZ2ZjX3N5bWJvbCAqc3ltKQogCQkgJiYg c3ltLT50cy51LmRlcml2ZWQtPmZyb21faW50bW9kID09IElOVE1PRF9JU09f Rk9SVFJBTl9FTlYKIAkJICYmIHN5bS0+dHMudS5kZXJpdmVkLT5pbnRtb2Rf c3ltX2lkID09IElTT0ZPUlRSQU5fTE9DS19UWVBFOwogCisgIGlzX2V2ZW50 X3R5cGUgPSBzeW0tPnRzLnR5cGUgPT0gQlRfREVSSVZFRAorCQkgICYmIHN5 bS0+dHMudS5kZXJpdmVkLT5mcm9tX2ludG1vZCA9PSBJTlRNT0RfSVNPX0ZP UlRSQU5fRU5WCisJCSAgJiYgc3ltLT50cy51LmRlcml2ZWQtPmludG1vZF9z eW1faWQgPT0gSVNPRk9SVFJBTl9FVkVOVF9UWVBFOworCiAgIC8qIEZJWE1F OiBXb3JrYXJvdW5kIGZvciBQUiBtaWRkbGUtZW5kLzQ5MTA2LCBjZi4gYWxz byBQUiBtaWRkbGUtZW5kLzQ5MTA4CiAgICAgIHRvIG1ha2Ugc3VyZSB0aGUg dmFyaWFibGUgaXMgbm90IG9wdGltaXplZCBhd2F5LiAgKi8KICAgREVDTF9Q UkVTRVJWRV9QIChERUNMX0NPTlRFWFQgKGRlY2wpKSA9IDE7CiAKICAgLyog Rm9yIGxvY2sgdHlwZXMsIHdlIHBhc3MgdGhlIGFycmF5IHNpemUgYXMgb25s eSB0aGUgbGlicmFyeSBrbm93cyB0aGUKICAgICAgc2l6ZSBvZiB0aGUgdmFy aWFibGUuICAqLwotICBpZiAoaXNfbG9ja190eXBlKQorICBpZiAoaXNfbG9j a190eXBlIHx8IGlzX2V2ZW50X3R5cGUpCiAgICAgc2l6ZSA9IGdmY19pbmRl eF9vbmVfbm9kZTsKICAgZWxzZQogICAgIHNpemUgPSBUWVBFX1NJWkVfVU5J VCAoZ2ZjX2dldF9lbGVtZW50X3R5cGUgKFRSRUVfVFlQRSAoZGVjbCkpKTsK QEAgLTQ4MjgsNiArNDg1MCw4IEBAIGdlbmVyYXRlX2NvYXJyYXlfc3ltX2lu aXQgKGdmY19zeW1ib2wgKnN5bSkKIAkJCSAgICAgICBHRkNfVFlQRV9BUlJB WV9DQUZfVE9LRU4gKFRSRUVfVFlQRShkZWNsKSkpOwogICBpZiAoaXNfbG9j a190eXBlKQogICAgIHJlZ190eXBlID0gc3ltLT5hdHRyLmFydGlmaWNpYWwg PyBHRkNfQ0FGX0NSSVRJQ0FMIDogR0ZDX0NBRl9MT0NLX1NUQVRJQzsKKyAg ZWxzZSBpZiAoaXNfZXZlbnRfdHlwZSkKKyAgICByZWdfdHlwZSA9IEdGQ19D QUZfRVZFTlRfU1RBVElDOwogICBlbHNlCiAgICAgcmVnX3R5cGUgPSBHRkNf Q0FGX0NPQVJSQVlfU1RBVElDOwogICB0bXAgPSBidWlsZF9jYWxsX2V4cHJf bG9jIChpbnB1dF9sb2NhdGlvbiwgZ2Zvcl9mbmRlY2xfY2FmX3JlZ2lzdGVy LCA2LCBzaXplLApkaWZmIC0tZ2l0IC4vZ2NjL2ZvcnRyYW4vdHJhbnMtZXhw ci5jIC4vZ2NjL2ZvcnRyYW4vdHJhbnMtZXhwci5jCmluZGV4IDUxMGNlOWQu LjYwZTM0NzcgMTAwNjQ0Ci0tLSAuL2djYy9mb3J0cmFuL3RyYW5zLWV4cHIu YworKysgLi9nY2MvZm9ydHJhbi90cmFucy1leHByLmMKQEAgLTU2MTYsOCAr NTYxNiw5IEBAIGdmY19jb252X3Byb2NlZHVyZV9jYWxsIChnZmNfc2UgKiBz ZSwgZ2ZjX3N5bWJvbCAqIHN5bSwKICAgICAgIGxlbiA9IGNsLmJhY2tlbmRf ZGVjbDsKICAgICB9CiAKLSAgYnlyZWYgPSAoY29tcCAmJiAoY29tcC0+YXR0 ci5kaW1lbnNpb24gfHwgY29tcC0+dHMudHlwZSA9PSBCVF9DSEFSQUNURVIp KQotCSAgfHwgKCFjb21wICYmIGdmY19yZXR1cm5fYnlfcmVmZXJlbmNlIChz eW0pKTsKKyAgYnlyZWYgPSAoY29tcCAmJiAoY29tcC0+YXR0ci5kaW1lbnNp b24KKwkgICB8fCAoY29tcC0+dHMudHlwZSA9PSBCVF9DSEFSQUNURVIgJiYg IXN5bS0+YXR0ci5pc19iaW5kX2MpKSkKKwkgICB8fCAoIWNvbXAgJiYgZ2Zj X3JldHVybl9ieV9yZWZlcmVuY2UgKHN5bSkpOwogICBpZiAoYnlyZWYpCiAg ICAgewogICAgICAgaWYgKHNlLT5kaXJlY3RfYnlyZWYpCkBAIC02NDQzLDYg KzY0NDQsMTEgQEAgZ2ZjX2NvbnZfaW5pdGlhbGl6ZXIgKGdmY19leHByICog ZXhwciwgZ2ZjX3R5cGVzcGVjICogdHMsIHRyZWUgdHlwZSwKIHsKICAgZ2Zj X3NlIHNlOwogCisgIGlmIChmbGFnX2NvYXJyYXkgIT0gR0ZDX0ZDT0FSUkFZ X0xJQiAmJiB0cy0+dHlwZSA9PSBCVF9ERVJJVkVECisgICAgICAmJiB0cy0+ dS5kZXJpdmVkLT5mcm9tX2ludG1vZCA9PSBJTlRNT0RfSVNPX0ZPUlRSQU5f RU5WCisgICAgICAmJiB0cy0+dS5kZXJpdmVkLT5pbnRtb2Rfc3ltX2lkID09 IElTT0ZPUlRSQU5fRVZFTlRfVFlQRSkKKyAgICByZXR1cm4gYnVpbGRfY29u c3RydWN0b3IgKHR5cGUsIE5VTEwpOworCiAgIGlmICghKGV4cHIgfHwgcG9p bnRlciB8fCBwcm9jcHRyKSkKICAgICByZXR1cm4gTlVMTF9UUkVFOwogCmRp ZmYgLS1naXQgLi9nY2MvZm9ydHJhbi90cmFucy1pbnRyaW5zaWMuYyAuL2dj Yy9mb3J0cmFuL3RyYW5zLWludHJpbnNpYy5jCmluZGV4IGY0OTc0OTkuLjZk NzM4OWEgMTAwNjQ0Ci0tLSAuL2djYy9mb3J0cmFuL3RyYW5zLWludHJpbnNp Yy5jCisrKyAuL2djYy9mb3J0cmFuL3RyYW5zLWludHJpbnNpYy5jCkBAIC05 Mjc0LDYgKzkyNzQsMTU0IEBAIGNvbnZfaW50cmluc2ljX2F0b21pY19jYXMg KGdmY19jb2RlICpjb2RlKQogICByZXR1cm4gZ2ZjX2ZpbmlzaF9ibG9jayAo JmJsb2NrKTsKIH0KIAorc3RhdGljIHRyZWUKK2NvbnZfaW50cmluc2ljX2V2 ZW50X3F1ZXJ5IChnZmNfY29kZSAqY29kZSkKK3sKKyAgZ2ZjX3NlIHNlLCBh cmdzZTsKKyAgdHJlZSBzdGF0ID0gTlVMTF9UUkVFLCBzdGF0MiA9IE5VTExf VFJFRTsKKyAgdHJlZSBjb3VudCA9IE5VTExfVFJFRSwgY291bnQyID0gTlVM TF9UUkVFOworCisgIGdmY19leHByICpldmVudF9leHByID0gY29kZS0+ZXh0 LmFjdHVhbC0+ZXhwcjsKKworICBpZiAoY29kZS0+ZXh0LmFjdHVhbC0+bmV4 dC0+bmV4dC0+ZXhwcikKKyAgICB7CisgICAgICBnY2NfYXNzZXJ0IChjb2Rl LT5leHQuYWN0dWFsLT5uZXh0LT5uZXh0LT5leHByLT5leHByX3R5cGUKKwkJ ICA9PSBFWFBSX1ZBUklBQkxFKTsKKyAgICAgIGdmY19pbml0X3NlICgmYXJn c2UsIE5VTEwpOworICAgICAgZ2ZjX2NvbnZfZXhwcl92YWwgKCZhcmdzZSwg Y29kZS0+ZXh0LmFjdHVhbC0+bmV4dC0+bmV4dC0+ZXhwcik7CisgICAgICBz dGF0ID0gYXJnc2UuZXhwcjsKKyAgICB9CisgIGVsc2UgaWYgKGZsYWdfY29h cnJheSA9PSBHRkNfRkNPQVJSQVlfTElCKQorICAgIHN0YXQgPSBudWxsX3Bv aW50ZXJfbm9kZTsKKworICBpZiAoY29kZS0+ZXh0LmFjdHVhbC0+bmV4dC0+ ZXhwcikKKyAgICB7CisgICAgICBnY2NfYXNzZXJ0IChjb2RlLT5leHQuYWN0 dWFsLT5uZXh0LT5leHByLT5leHByX3R5cGUgPT0gRVhQUl9WQVJJQUJMRSk7 CisgICAgICBnZmNfaW5pdF9zZSAoJmFyZ3NlLCBOVUxMKTsKKyAgICAgIGdm Y19jb252X2V4cHJfdmFsICgmYXJnc2UsIGNvZGUtPmV4dC5hY3R1YWwtPm5l eHQtPmV4cHIpOworICAgICAgY291bnQgPSBhcmdzZS5leHByOworICAgIH0K KworICBnZmNfc3RhcnRfYmxvY2sgKCZzZS5wcmUpOworICBpZiAoZmxhZ19j b2FycmF5ID09IEdGQ19GQ09BUlJBWV9MSUIpCisgICAgeworICAgICAgdHJl ZSB0bXAsIHRva2VuLCBpbWFnZV9pbmRleDsKKyAgICAgIHRyZWUgaW5kZXgg PSBzaXplX3plcm9fbm9kZTsKKworICAgICAgaWYgKGV2ZW50X2V4cHItPmV4 cHJfdHlwZSA9PSBFWFBSX0ZVTkNUSU9OCisJICAmJiBldmVudF9leHByLT52 YWx1ZS5mdW5jdGlvbi5pc3ltCisJICAmJiBldmVudF9leHByLT52YWx1ZS5m dW5jdGlvbi5pc3ltLT5pZCA9PSBHRkNfSVNZTV9DQUZfR0VUKQorCWV2ZW50 X2V4cHIgPSBldmVudF9leHByLT52YWx1ZS5mdW5jdGlvbi5hY3R1YWwtPmV4 cHI7CisKKyAgICAgIHRyZWUgY2FmX2RlY2wgPSBnZmNfZ2V0X3RyZWVfZm9y X2NhZl9leHByIChldmVudF9leHByKTsKKworICAgICAgaWYgKGV2ZW50X2V4 cHItPnN5bXRyZWUtPm4uc3ltLT50cy50eXBlICE9IEJUX0RFUklWRUQKKwkg IHx8IGV2ZW50X2V4cHItPnN5bXRyZWUtPm4uc3ltLT50cy51LmRlcml2ZWQt PmZyb21faW50bW9kCisJICAgICAhPSBJTlRNT0RfSVNPX0ZPUlRSQU5fRU5W CisJICB8fCBldmVudF9leHByLT5zeW10cmVlLT5uLnN5bS0+dHMudS5kZXJp dmVkLT5pbnRtb2Rfc3ltX2lkCisJICAgICAhPSBJU09GT1JUUkFOX0VWRU5U X1RZUEUpCisJeworCSAgZ2ZjX2Vycm9yICgiU29ycnksIHRoZSBldmVudCBj b21wb25lbnQgb2YgZGVyaXZlZCB0eXBlIGF0ICVMIGlzIG5vdCAiCisJCSAg ICAgInlldCBzdXBwb3J0ZWQiLCAmZXZlbnRfZXhwci0+d2hlcmUpOworCSAg cmV0dXJuIE5VTExfVFJFRTsKKwl9CisKKyAgICAgIGlmIChnZmNfaXNfY29p bmRleGVkIChldmVudF9leHByKSkKKwl7CisJICBnZmNfZXJyb3IgKCJUaGUg ZXZlbnQgdmFyaWFibGUgYXQgJUwgc2hhbGwgbm90IGJlIGNvaW5kZXhlZCAi LAorCQkgICAgICZldmVudF9leHByLT53aGVyZSk7CisgICAgICAgICAgcmV0 dXJuIE5VTExfVFJFRTsKKwl9CisKKyAgICAgIGltYWdlX2luZGV4ID0gaW50 ZWdlcl96ZXJvX25vZGU7CisKKyAgICAgIGdmY19nZXRfY2FmX3Rva2VuX29m ZnNldCAoJnRva2VuLCBOVUxMLCBjYWZfZGVjbCwgTlVMTF9UUkVFLCBldmVu dF9leHByKTsKKworICAgICAgLyogRm9yIGFycmF5cywgb2J0YWluIHRoZSBh cnJheSBpbmRleC4gICovCisgICAgICBpZiAoZ2ZjX2V4cHJfYXR0ciAoZXZl bnRfZXhwcikuZGltZW5zaW9uKQorCXsKKwkgIHRyZWUgZGVzYywgdG1wLCBl eHRlbnQsIGxib3VuZCwgdWJvdW5kOworICAgICAgICAgIGdmY19hcnJheV9y ZWYgKmFyLCBhcjI7CisgICAgICAgICAgaW50IGk7CisKKwkgIC8qIFRPRE86 IEV4dGVuZCB0aGlzLCBvbmNlIERUIGNvbXBvbmVudHMgYXJlIHN1cHBvcnRl ZC4gICovCisJICBhciA9ICZldmVudF9leHByLT5yZWYtPnUuYXI7CisJICBh cjIgPSAqYXI7CisJICBtZW1zZXQgKGFyLCAnXDAnLCBzaXplb2YgKCphcikp OworCSAgYXItPmFzID0gYXIyLmFzOworCSAgYXItPnR5cGUgPSBBUl9GVUxM OworCisJICBnZmNfaW5pdF9zZSAoJmFyZ3NlLCBOVUxMKTsKKwkgIGFyZ3Nl LmRlc2NyaXB0b3Jfb25seSA9IDE7CisJICBnZmNfY29udl9leHByX2Rlc2Ny aXB0b3IgKCZhcmdzZSwgZXZlbnRfZXhwcik7CisJICBnZmNfYWRkX2Jsb2Nr X3RvX2Jsb2NrICgmc2UucHJlLCAmYXJnc2UucHJlKTsKKwkgIGRlc2MgPSBh cmdzZS5leHByOworCSAgKmFyID0gYXIyOworCisJICBleHRlbnQgPSBpbnRl Z2VyX29uZV9ub2RlOworCSAgZm9yIChpID0gMDsgaSA8IGFyLT5kaW1lbjsg aSsrKQorCSAgICB7CisJICAgICAgZ2ZjX2luaXRfc2UgKCZhcmdzZSwgTlVM TCk7CisJICAgICAgZ2ZjX2NvbnZfZXhwcl90eXBlICgmYXJnc2UsIGFyLT5z dGFydFtpXSwgaW50ZWdlcl90eXBlX25vZGUpOworCSAgICAgIGdmY19hZGRf YmxvY2tfdG9fYmxvY2sgKCZhcmdzZS5wcmUsICZhcmdzZS5wcmUpOworCSAg ICAgIGxib3VuZCA9IGdmY19jb252X2Rlc2NyaXB0b3JfbGJvdW5kX2dldCAo ZGVzYywgZ2ZjX3JhbmtfY3N0W2ldKTsKKwkgICAgICB0bXAgPSBmb2xkX2J1 aWxkMl9sb2MgKGlucHV0X2xvY2F0aW9uLCBNSU5VU19FWFBSLAorCQkJCSAg ICAgaW50ZWdlcl90eXBlX25vZGUsIGFyZ3NlLmV4cHIsCisJCQkJICAgICBm b2xkX2NvbnZlcnQoaW50ZWdlcl90eXBlX25vZGUsIGxib3VuZCkpOworCSAg ICAgIHRtcCA9IGZvbGRfYnVpbGQyX2xvYyAoaW5wdXRfbG9jYXRpb24sIE1V TFRfRVhQUiwKKwkJCQkgICAgIGludGVnZXJfdHlwZV9ub2RlLCBleHRlbnQs IHRtcCk7CisJICAgICAgaW5kZXggPSBmb2xkX2J1aWxkMl9sb2MgKGlucHV0 X2xvY2F0aW9uLCBQTFVTX0VYUFIsCisJCQkJICAgICAgIGludGVnZXJfdHlw ZV9ub2RlLCBpbmRleCwgdG1wKTsKKwkgICAgICBpZiAoaSA8IGFyLT5kaW1l biAtIDEpCisJCXsKKwkJICB1Ym91bmQgPSBnZmNfY29udl9kZXNjcmlwdG9y X3Vib3VuZF9nZXQgKGRlc2MsIGdmY19yYW5rX2NzdFtpXSk7CisJCSAgdG1w ID0gZ2ZjX2NvbnZfYXJyYXlfZXh0ZW50X2RpbSAobGJvdW5kLCB1Ym91bmQs IE5VTEwpOworCQkgIHRtcCA9IGZvbGRfY29udmVydCAoaW50ZWdlcl90eXBl X25vZGUsIHRtcCk7CisJCSAgZXh0ZW50ID0gZm9sZF9idWlsZDJfbG9jIChp bnB1dF9sb2NhdGlvbiwgTVVMVF9FWFBSLAorCQkJCQkgICAgaW50ZWdlcl90 eXBlX25vZGUsIGV4dGVudCwgdG1wKTsKKwkJfQorCSAgICB9CisJfQorCisg ICAgICBpZiAoY291bnQgIT0gbnVsbF9wb2ludGVyX25vZGUgJiYgVFJFRV9U WVBFIChjb3VudCkgIT0gaW50ZWdlcl90eXBlX25vZGUpCisJeworCSAgY291 bnQyID0gY291bnQ7CisJICBjb3VudCA9IGdmY19jcmVhdGVfdmFyIChpbnRl Z2VyX3R5cGVfbm9kZSwgImNvdW50Iik7CisJfQorCisgICAgICBpZiAoc3Rh dCAhPSBudWxsX3BvaW50ZXJfbm9kZSAmJiBUUkVFX1RZUEUgKHN0YXQpICE9 IGludGVnZXJfdHlwZV9ub2RlKQorCXsKKwkgIHN0YXQyID0gc3RhdDsKKwkg IHN0YXQgPSBnZmNfY3JlYXRlX3ZhciAoaW50ZWdlcl90eXBlX25vZGUsICJz dGF0Iik7CisJfQorCisgICAgICB0bXAgPSBidWlsZF9jYWxsX2V4cHJfbG9j IChpbnB1dF9sb2NhdGlvbiwgZ2Zvcl9mbmRlY2xfY2FmX2V2ZW50X3F1ZXJ5 LCA1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tl biwgaW5kZXgsIGltYWdlX2luZGV4LCBjb3VudAorCQkJCSAgID8gZ2ZjX2J1 aWxkX2FkZHJfZXhwciAoTlVMTCwgY291bnQpIDogY291bnQsCisJCQkJICAg c3RhdCAhPSBudWxsX3BvaW50ZXJfbm9kZQorCQkJCSAgID8gZ2ZjX2J1aWxk X2FkZHJfZXhwciAoTlVMTCwgc3RhdCkgOiBzdGF0KTsKKyAgICAgIGdmY19h ZGRfZXhwcl90b19ibG9jayAoJnNlLnByZSwgdG1wKTsKKworICAgICAgaWYg KGNvdW50MiAhPSBOVUxMX1RSRUUpCisJZ2ZjX2FkZF9tb2RpZnkgKCZzZS5w cmUsIGNvdW50MiwKKwkJCWZvbGRfY29udmVydCAoVFJFRV9UWVBFIChjb3Vu dDIpLCBjb3VudCkpOworCisgICAgICBpZiAoc3RhdDIgIT0gTlVMTF9UUkVF KQorCWdmY19hZGRfbW9kaWZ5ICgmc2UucHJlLCBzdGF0MiwKKwkJCWZvbGRf Y29udmVydCAoVFJFRV9UWVBFIChzdGF0MiksIHN0YXQpKTsKKworICAgICAg cmV0dXJuIGdmY19maW5pc2hfYmxvY2sgKCZzZS5wcmUpOworICAgIH0KKwor ICBnZmNfaW5pdF9zZSAoJmFyZ3NlLCBOVUxMKTsKKyAgZ2ZjX2NvbnZfZXhw cl92YWwgKCZhcmdzZSwgY29kZS0+ZXh0LmFjdHVhbC0+ZXhwcik7CisgIGdm Y19hZGRfbW9kaWZ5ICgmc2UucHJlLCBjb3VudCwgZm9sZF9jb252ZXJ0IChU UkVFX1RZUEUgKGNvdW50KSwgYXJnc2UuZXhwcikpOworCisgIGlmIChzdGF0 ICE9IE5VTExfVFJFRSkKKyAgICBnZmNfYWRkX21vZGlmeSAoJnNlLnByZSwg c3RhdCwgYnVpbGRfaW50X2NzdCAoVFJFRV9UWVBFIChzdGF0KSwgMCkpOwor CisgIHJldHVybiBnZmNfZmluaXNoX2Jsb2NrICgmc2UucHJlKTsKK30KIAog c3RhdGljIHRyZWUKIGNvbnZfaW50cmluc2ljX21vdmVfYWxsb2MgKGdmY19j b2RlICpjb2RlKQpAQCAtOTU3MCw2ICs5NzE4LDEwIEBAIGdmY19jb252X2lu dHJpbnNpY19zdWJyb3V0aW5lIChnZmNfY29kZSAqY29kZSkKICAgICAgIHJl cyA9IGNvbnZfaW50cmluc2ljX2F0b21pY19yZWYgKGNvZGUpOwogICAgICAg YnJlYWs7CiAKKyAgICBjYXNlIEdGQ19JU1lNX0VWRU5UX1FVRVJZOgorICAg ICAgcmVzID0gY29udl9pbnRyaW5zaWNfZXZlbnRfcXVlcnkgKGNvZGUpOwor ICAgICAgYnJlYWs7CisKICAgICBjYXNlIEdGQ19JU1lNX0NfRl9QT0lOVEVS OgogICAgIGNhc2UgR0ZDX0lTWU1fQ19GX1BST0NQT0lOVEVSOgogICAgICAg cmVzID0gY29udl9pc29jYmluZGluZ19zdWJyb3V0aW5lIChjb2RlKTsKZGlm ZiAtLWdpdCAuL2djYy9mb3J0cmFuL3RyYW5zLXN0bXQuYyAuL2djYy9mb3J0 cmFuL3RyYW5zLXN0bXQuYwppbmRleCAwM2Y5OWI1Li41NjA5OTkxIDEwMDY0 NAotLS0gLi9nY2MvZm9ydHJhbi90cmFucy1zdG10LmMKKysrIC4vZ2NjL2Zv cnRyYW4vdHJhbnMtc3RtdC5jCkBAIC03ODgsNiArNzg4LDcgQEAgZ2ZjX3Ry YW5zX2xvY2tfdW5sb2NrIChnZmNfY29kZSAqY29kZSwgZ2ZjX2V4ZWNfb3Ag b3ApCiAgICAgICBpZiAoY29kZS0+ZXhwcjMpCiAJewogCSAgZ2ZjX2luaXRf c2UgKCZhcmdzZSwgTlVMTCk7CisJICBhcmdzZS53YW50X3BvaW50ZXIgPSAx OwogCSAgZ2ZjX2NvbnZfZXhwciAoJmFyZ3NlLCBjb2RlLT5leHByMyk7CiAJ ICBnZmNfYWRkX2Jsb2NrX3RvX2Jsb2NrICgmc2UucHJlLCAmYXJnc2UucHJl KTsKIAkgIGVycm1zZyA9IGFyZ3NlLmV4cHI7CkBAIC04NjMsNiArODY0LDE2 NSBAQCBnZmNfdHJhbnNfbG9ja191bmxvY2sgKGdmY19jb2RlICpjb2RlLCBn ZmNfZXhlY19vcCBvcCkKICAgcmV0dXJuIGdmY19maW5pc2hfYmxvY2sgKCZz ZS5wcmUpOwogfQogCit0cmVlCitnZmNfdHJhbnNfZXZlbnRfcG9zdF93YWl0 IChnZmNfY29kZSAqY29kZSwgZ2ZjX2V4ZWNfb3Agb3ApCit7CisgIGdmY19z ZSBzZSwgYXJnc2U7CisgIHRyZWUgc3RhdCA9IE5VTExfVFJFRSwgc3RhdDIg PSBOVUxMX1RSRUU7CisgIHRyZWUgdW50aWxfY291bnQgPSBOVUxMX1RSRUU7 CisKKyAgaWYgKGNvZGUtPmV4cHIyKQorICAgIHsKKyAgICAgIGdjY19hc3Nl cnQgKGNvZGUtPmV4cHIyLT5leHByX3R5cGUgPT0gRVhQUl9WQVJJQUJMRSk7 CisgICAgICBnZmNfaW5pdF9zZSAoJmFyZ3NlLCBOVUxMKTsKKyAgICAgIGdm Y19jb252X2V4cHJfdmFsICgmYXJnc2UsIGNvZGUtPmV4cHIyKTsKKyAgICAg IHN0YXQgPSBhcmdzZS5leHByOworICAgIH0KKyAgZWxzZSBpZiAoZmxhZ19j b2FycmF5ID09IEdGQ19GQ09BUlJBWV9MSUIpCisgICAgc3RhdCA9IG51bGxf cG9pbnRlcl9ub2RlOworCisgIGlmIChjb2RlLT5leHByNCkKKyAgICB7Cisg ICAgICBnZmNfaW5pdF9zZSAoJmFyZ3NlLCBOVUxMKTsKKyAgICAgIGdmY19j b252X2V4cHJfdmFsICgmYXJnc2UsIGNvZGUtPmV4cHI0KTsKKyAgICAgIHVu dGlsX2NvdW50ID0gZm9sZF9jb252ZXJ0IChpbnRlZ2VyX3R5cGVfbm9kZSwg YXJnc2UuZXhwcik7CisgICAgfQorICBlbHNlCisgICAgdW50aWxfY291bnQg PSBpbnRlZ2VyX29uZV9ub2RlOworCisgIGlmIChmbGFnX2NvYXJyYXkgIT0g R0ZDX0ZDT0FSUkFZX0xJQikKKyAgICB7CisgICAgICBnZmNfc3RhcnRfYmxv Y2sgKCZzZS5wcmUpOworICAgICAgZ2ZjX2luaXRfc2UgKCZhcmdzZSwgTlVM TCk7CisgICAgICBnZmNfY29udl9leHByX3ZhbCAoJmFyZ3NlLCBjb2RlLT5l eHByMSk7CisKKyAgICAgIGlmIChvcCA9PSBFWEVDX0VWRU5UX1BPU1QpCisJ Z2ZjX2FkZF9tb2RpZnkgKCZzZS5wcmUsIGFyZ3NlLmV4cHIsCisJCQlmb2xk X2J1aWxkMl9sb2MgKGlucHV0X2xvY2F0aW9uLCBQTFVTX0VYUFIsCisJCQkJ VFJFRV9UWVBFIChhcmdzZS5leHByKSwgYXJnc2UuZXhwciwKKwkJCQlidWls ZF9pbnRfY3N0IChUUkVFX1RZUEUgKGFyZ3NlLmV4cHIpLCAxKSkpOworICAg ICAgZWxzZQorCWdmY19hZGRfbW9kaWZ5ICgmc2UucHJlLCBhcmdzZS5leHBy LAorCQkJZm9sZF9idWlsZDJfbG9jIChpbnB1dF9sb2NhdGlvbiwgTUlOVVNf RVhQUiwKKwkJCQlUUkVFX1RZUEUgKGFyZ3NlLmV4cHIpLCBhcmdzZS5leHBy LAorCQkJCWZvbGRfY29udmVydCAoVFJFRV9UWVBFIChhcmdzZS5leHByKSwK KwkJCQkJICAgICAgdW50aWxfY291bnQpKSk7CisgICAgICBpZiAoc3RhdCAh PSBOVUxMX1RSRUUpCisJZ2ZjX2FkZF9tb2RpZnkgKCZzZS5wcmUsIHN0YXQs IGJ1aWxkX2ludF9jc3QgKFRSRUVfVFlQRSAoc3RhdCksIDApKTsKKworICAg ICAgcmV0dXJuIGdmY19maW5pc2hfYmxvY2sgKCZzZS5wcmUpOworICAgIH0K KworICBnZmNfc3RhcnRfYmxvY2sgKCZzZS5wcmUpOworICB0cmVlIHRtcCwg dG9rZW4sIGltYWdlX2luZGV4LCBlcnJtc2csIGVycm1zZ19sZW47CisgIHRy ZWUgaW5kZXggPSBzaXplX3plcm9fbm9kZTsKKyAgdHJlZSBjYWZfZGVjbCA9 IGdmY19nZXRfdHJlZV9mb3JfY2FmX2V4cHIgKGNvZGUtPmV4cHIxKTsKKwor ICBpZiAoY29kZS0+ZXhwcjEtPnN5bXRyZWUtPm4uc3ltLT50cy50eXBlICE9 IEJUX0RFUklWRUQKKyAgICAgIHx8IGNvZGUtPmV4cHIxLT5zeW10cmVlLT5u LnN5bS0+dHMudS5kZXJpdmVkLT5mcm9tX2ludG1vZAorCSAhPSBJTlRNT0Rf SVNPX0ZPUlRSQU5fRU5WCisgICAgICB8fCBjb2RlLT5leHByMS0+c3ltdHJl ZS0+bi5zeW0tPnRzLnUuZGVyaXZlZC0+aW50bW9kX3N5bV9pZAorCSAhPSBJ U09GT1JUUkFOX0VWRU5UX1RZUEUpCisgICAgeworICAgICAgZ2ZjX2Vycm9y ICgiU29ycnksIHRoZSBldmVudCBjb21wb25lbnQgb2YgZGVyaXZlZCB0eXBl IGF0ICVMIGlzIG5vdCAiCisJCSAieWV0IHN1cHBvcnRlZCIsICZjb2RlLT5l eHByMS0+d2hlcmUpOworICAgICAgcmV0dXJuIE5VTExfVFJFRTsKKyAgICB9 CisKKyAgZ2ZjX2dldF9jYWZfdG9rZW5fb2Zmc2V0ICgmdG9rZW4sIE5VTEws IGNhZl9kZWNsLCBOVUxMX1RSRUUsIGNvZGUtPmV4cHIxKTsKKworICBpZiAo Z2ZjX2lzX2NvaW5kZXhlZCAoY29kZS0+ZXhwcjEpKQorICAgIGltYWdlX2lu ZGV4ID0gZ2ZjX2NhZl9nZXRfaW1hZ2VfaW5kZXggKCZzZS5wcmUsIGNvZGUt PmV4cHIxLCBjYWZfZGVjbCk7CisgIGVsc2UKKyAgICBpbWFnZV9pbmRleCA9 IGludGVnZXJfemVyb19ub2RlOworCisgIC8qIEZvciBhcnJheXMsIG9idGFp biB0aGUgYXJyYXkgaW5kZXguICAqLworICBpZiAoZ2ZjX2V4cHJfYXR0ciAo Y29kZS0+ZXhwcjEpLmRpbWVuc2lvbikKKyAgICB7CisgICAgICB0cmVlIGRl c2MsIHRtcCwgZXh0ZW50LCBsYm91bmQsIHVib3VuZDsKKyAgICAgIGdmY19h cnJheV9yZWYgKmFyLCBhcjI7CisgICAgICBpbnQgaTsKKworICAgICAgLyog VE9ETzogRXh0ZW5kIHRoaXMsIG9uY2UgRFQgY29tcG9uZW50cyBhcmUgc3Vw cG9ydGVkLiAgKi8KKyAgICAgIGFyID0gJmNvZGUtPmV4cHIxLT5yZWYtPnUu YXI7CisgICAgICBhcjIgPSAqYXI7CisgICAgICBtZW1zZXQgKGFyLCAnXDAn LCBzaXplb2YgKCphcikpOworICAgICAgYXItPmFzID0gYXIyLmFzOworICAg ICAgYXItPnR5cGUgPSBBUl9GVUxMOworCisgICAgICBnZmNfaW5pdF9zZSAo JmFyZ3NlLCBOVUxMKTsKKyAgICAgIGFyZ3NlLmRlc2NyaXB0b3Jfb25seSA9 IDE7CisgICAgICBnZmNfY29udl9leHByX2Rlc2NyaXB0b3IgKCZhcmdzZSwg Y29kZS0+ZXhwcjEpOworICAgICAgZ2ZjX2FkZF9ibG9ja190b19ibG9jayAo JnNlLnByZSwgJmFyZ3NlLnByZSk7CisgICAgICBkZXNjID0gYXJnc2UuZXhw cjsKKyAgICAgICphciA9IGFyMjsKKworICAgICAgZXh0ZW50ID0gaW50ZWdl cl9vbmVfbm9kZTsKKyAgICAgIGZvciAoaSA9IDA7IGkgPCBhci0+ZGltZW47 IGkrKykKKwl7CisJICBnZmNfaW5pdF9zZSAoJmFyZ3NlLCBOVUxMKTsKKwkg IGdmY19jb252X2V4cHJfdHlwZSAoJmFyZ3NlLCBhci0+c3RhcnRbaV0sIGlu dGVnZXJfdHlwZV9ub2RlKTsKKwkgIGdmY19hZGRfYmxvY2tfdG9fYmxvY2sg KCZhcmdzZS5wcmUsICZhcmdzZS5wcmUpOworCSAgbGJvdW5kID0gZ2ZjX2Nv bnZfZGVzY3JpcHRvcl9sYm91bmRfZ2V0IChkZXNjLCBnZmNfcmFua19jc3Rb aV0pOworCSAgdG1wID0gZm9sZF9idWlsZDJfbG9jIChpbnB1dF9sb2NhdGlv biwgTUlOVVNfRVhQUiwKKwkJCQkgaW50ZWdlcl90eXBlX25vZGUsIGFyZ3Nl LmV4cHIsCisJCQkJIGZvbGRfY29udmVydChpbnRlZ2VyX3R5cGVfbm9kZSwg bGJvdW5kKSk7CisJICB0bXAgPSBmb2xkX2J1aWxkMl9sb2MgKGlucHV0X2xv Y2F0aW9uLCBNVUxUX0VYUFIsCisJCQkJIGludGVnZXJfdHlwZV9ub2RlLCBl eHRlbnQsIHRtcCk7CisJICBpbmRleCA9IGZvbGRfYnVpbGQyX2xvYyAoaW5w dXRfbG9jYXRpb24sIFBMVVNfRVhQUiwKKwkJCQkgICBpbnRlZ2VyX3R5cGVf bm9kZSwgaW5kZXgsIHRtcCk7CisJICBpZiAoaSA8IGFyLT5kaW1lbiAtIDEp CisJICAgIHsKKwkgICAgICB1Ym91bmQgPSBnZmNfY29udl9kZXNjcmlwdG9y X3Vib3VuZF9nZXQgKGRlc2MsIGdmY19yYW5rX2NzdFtpXSk7CisJICAgICAg dG1wID0gZ2ZjX2NvbnZfYXJyYXlfZXh0ZW50X2RpbSAobGJvdW5kLCB1Ym91 bmQsIE5VTEwpOworCSAgICAgIHRtcCA9IGZvbGRfY29udmVydCAoaW50ZWdl cl90eXBlX25vZGUsIHRtcCk7CisJICAgICAgZXh0ZW50ID0gZm9sZF9idWls ZDJfbG9jIChpbnB1dF9sb2NhdGlvbiwgTVVMVF9FWFBSLAorCQkJCQlpbnRl Z2VyX3R5cGVfbm9kZSwgZXh0ZW50LCB0bXApOworCSAgICB9CisJfQorICAg IH0KKworICAvKiBlcnJtc2cuICAqLworICBpZiAoY29kZS0+ZXhwcjMpCisg ICAgeworICAgICAgZ2ZjX2luaXRfc2UgKCZhcmdzZSwgTlVMTCk7CisgICAg ICBhcmdzZS53YW50X3BvaW50ZXIgPSAxOworICAgICAgZ2ZjX2NvbnZfZXhw ciAoJmFyZ3NlLCBjb2RlLT5leHByMyk7CisgICAgICBnZmNfYWRkX2Jsb2Nr X3RvX2Jsb2NrICgmc2UucHJlLCAmYXJnc2UucHJlKTsKKyAgICAgIGVycm1z ZyA9IGFyZ3NlLmV4cHI7CisgICAgICBlcnJtc2dfbGVuID0gZm9sZF9jb252 ZXJ0IChpbnRlZ2VyX3R5cGVfbm9kZSwgYXJnc2Uuc3RyaW5nX2xlbmd0aCk7 CisgICAgfQorICBlbHNlCisgICAgeworICAgICAgZXJybXNnID0gbnVsbF9w b2ludGVyX25vZGU7CisgICAgICBlcnJtc2dfbGVuID0gaW50ZWdlcl96ZXJv X25vZGU7CisgICAgfQorCisgIGlmIChzdGF0ICE9IG51bGxfcG9pbnRlcl9u b2RlICYmIFRSRUVfVFlQRSAoc3RhdCkgIT0gaW50ZWdlcl90eXBlX25vZGUp CisgICAgeworICAgICAgc3RhdDIgPSBzdGF0OworICAgICAgc3RhdCA9IGdm Y19jcmVhdGVfdmFyIChpbnRlZ2VyX3R5cGVfbm9kZSwgInN0YXQiKTsKKyAg ICB9CisKKyAgaWYgKG9wID09IEVYRUNfRVZFTlRfUE9TVCkKKyAgICB0bXAg PSBidWlsZF9jYWxsX2V4cHJfbG9jIChpbnB1dF9sb2NhdGlvbiwgZ2Zvcl9m bmRlY2xfY2FmX2V2ZW50X3Bvc3QsIDYsCisJCQkgICAgICAgdG9rZW4sIGlu ZGV4LCBpbWFnZV9pbmRleCwKKwkJCSAgICAgICBzdGF0ICE9IG51bGxfcG9p bnRlcl9ub2RlCisJCQkgICAgICAgPyBnZmNfYnVpbGRfYWRkcl9leHByIChO VUxMLCBzdGF0KSA6IHN0YXQsCisJCQkgICAgICAgZXJybXNnLCBlcnJtc2df bGVuKTsKKyAgZWxzZQorICAgIHRtcCA9IGJ1aWxkX2NhbGxfZXhwcl9sb2Mg KGlucHV0X2xvY2F0aW9uLCBnZm9yX2ZuZGVjbF9jYWZfZXZlbnRfd2FpdCwg NiwKKwkJCSAgICAgICB0b2tlbiwgaW5kZXgsIHVudGlsX2NvdW50LAorCQkJ ICAgICAgIHN0YXQgIT0gbnVsbF9wb2ludGVyX25vZGUKKwkJCSAgICAgICA/ IGdmY19idWlsZF9hZGRyX2V4cHIgKE5VTEwsIHN0YXQpIDogc3RhdCwKKwkJ CSAgICAgICBlcnJtc2csIGVycm1zZ19sZW4pOworICBnZmNfYWRkX2V4cHJf dG9fYmxvY2sgKCZzZS5wcmUsIHRtcCk7CisKKyAgaWYgKHN0YXQyICE9IE5V TExfVFJFRSkKKyAgICBnZmNfYWRkX21vZGlmeSAoJnNlLnByZSwgc3RhdDIs IGZvbGRfY29udmVydCAoVFJFRV9UWVBFIChzdGF0MiksIHN0YXQpKTsKKwor ICByZXR1cm4gZ2ZjX2ZpbmlzaF9ibG9jayAoJnNlLnByZSk7Cit9CiAKIHRy ZWUKIGdmY190cmFuc19zeW5jIChnZmNfY29kZSAqY29kZSwgZ2ZjX2V4ZWNf b3AgdHlwZSkKQEAgLTkwMiw2ICsxMDYyLDcgQEAgZ2ZjX3RyYW5zX3N5bmMg KGdmY19jb2RlICpjb2RlLCBnZmNfZXhlY19vcCB0eXBlKQogICAgIHsKICAg ICAgIGdjY19hc3NlcnQgKGNvZGUtPmV4cHIzLT5leHByX3R5cGUgPT0gRVhQ Ul9WQVJJQUJMRSk7CiAgICAgICBnZmNfaW5pdF9zZSAoJmFyZ3NlLCBOVUxM KTsKKyAgICAgIGFyZ3NlLndhbnRfcG9pbnRlciA9IDE7CiAgICAgICBnZmNf Y29udl9leHByICgmYXJnc2UsIGNvZGUtPmV4cHIzKTsKICAgICAgIGdmY19j b252X3N0cmluZ19wYXJhbWV0ZXIgKCZhcmdzZSk7CiAgICAgICBlcnJtc2cg PSBnZmNfYnVpbGRfYWRkcl9leHByIChOVUxMLCBhcmdzZS5leHByKTsKZGlm ZiAtLWdpdCAuL2djYy9mb3J0cmFuL3RyYW5zLXN0bXQuaCAuL2djYy9mb3J0 cmFuL3RyYW5zLXN0bXQuaAppbmRleCAyZjJhMGIzLi45ODQxZmI4IDEwMDY0 NAotLS0gLi9nY2MvZm9ydHJhbi90cmFucy1zdG10LmgKKysrIC4vZ2NjL2Zv cnRyYW4vdHJhbnMtc3RtdC5oCkBAIC01NSw2ICs1NSw3IEBAIHRyZWUgZ2Zj X3RyYW5zX2RvX3doaWxlIChnZmNfY29kZSAqKTsKIHRyZWUgZ2ZjX3RyYW5z X3NlbGVjdCAoZ2ZjX2NvZGUgKik7CiB0cmVlIGdmY190cmFuc19zeW5jIChn ZmNfY29kZSAqLCBnZmNfZXhlY19vcCk7CiB0cmVlIGdmY190cmFuc19sb2Nr X3VubG9jayAoZ2ZjX2NvZGUgKiwgZ2ZjX2V4ZWNfb3ApOwordHJlZSBnZmNf dHJhbnNfZXZlbnRfcG9zdF93YWl0IChnZmNfY29kZSAqLCBnZmNfZXhlY19v cCk7CiB0cmVlIGdmY190cmFuc19mb3JhbGwgKGdmY19jb2RlICopOwogdHJl ZSBnZmNfdHJhbnNfd2hlcmUgKGdmY19jb2RlICopOwogdHJlZSBnZmNfdHJh bnNfYWxsb2NhdGUgKGdmY19jb2RlICopOwpkaWZmIC0tZ2l0IC4vZ2NjL2Zv cnRyYW4vdHJhbnMtdHlwZXMuYyAuL2djYy9mb3J0cmFuL3RyYW5zLXR5cGVz LmMKaW5kZXggNGNmOTgwZC4uNTQ0NGFhYSAxMDA2NDQKLS0tIC4vZ2NjL2Zv cnRyYW4vdHJhbnMtdHlwZXMuYworKysgLi9nY2MvZm9ydHJhbi90cmFucy10 eXBlcy5jCkBAIC0yMzgzLDYgKzIzODMsMTEgQEAgZ2ZjX2dldF9kZXJpdmVk X3R5cGUgKGdmY19zeW1ib2wgKiBkZXJpdmVkKQogCSAgJiYgZGVyaXZlZC0+ aW50bW9kX3N5bV9pZCA9PSBJU09GT1JUUkFOX0xPQ0tfVFlQRSkpCiAgICAg cmV0dXJuIHB0cl90eXBlX25vZGU7CiAKKyAgaWYgKGZsYWdfY29hcnJheSAh PSBHRkNfRkNPQVJSQVlfTElCCisgICAgICAmJiBkZXJpdmVkLT5mcm9tX2lu dG1vZCA9PSBJTlRNT0RfSVNPX0ZPUlRSQU5fRU5WCisgICAgICAmJiBkZXJp dmVkLT5pbnRtb2Rfc3ltX2lkID09IElTT0ZPUlRSQU5fRVZFTlRfVFlQRSkK KyAgICByZXR1cm4gZ2ZjX2dldF9pbnRfdHlwZSAoZ2ZjX2RlZmF1bHRfaW50 ZWdlcl9raW5kKTsKKwogICBpZiAoZGVyaXZlZCAmJiBkZXJpdmVkLT5hdHRy LmZsYXZvciA9PSBGTF9QUk9DRURVUkUKICAgICAgICYmIGRlcml2ZWQtPmF0 dHIuZ2VuZXJpYykKICAgICBkZXJpdmVkID0gZ2ZjX2ZpbmRfZHRfaW5fZ2Vu ZXJpYyAoZGVyaXZlZCk7CmRpZmYgLS1naXQgLi9nY2MvZm9ydHJhbi90cmFu cy5jIC4vZ2NjL2ZvcnRyYW4vdHJhbnMuYwppbmRleCBmZjZkZjg0Li41ODk3 YzUwIDEwMDY0NAotLS0gLi9nY2MvZm9ydHJhbi90cmFucy5jCisrKyAuL2dj Yy9mb3J0cmFuL3RyYW5zLmMKQEAgLTcxNiw3ICs3MTYsNyBAQCBnZmNfYWxs b2NhdGVfdXNpbmdfbWFsbG9jIChzdG10YmxvY2tfdCAqIGJsb2NrLCB0cmVl IHBvaW50ZXIsCiBzdGF0aWMgdm9pZAogZ2ZjX2FsbG9jYXRlX3VzaW5nX2xp YiAoc3RtdGJsb2NrX3QgKiBibG9jaywgdHJlZSBwb2ludGVyLCB0cmVlIHNp emUsCiAJCQl0cmVlIHRva2VuLCB0cmVlIHN0YXR1cywgdHJlZSBlcnJtc2cs IHRyZWUgZXJybGVuLAotCQkJYm9vbCBsb2NrX3ZhcikKKwkJCWJvb2wgbG9j a192YXIsIGJvb2wgZXZlbnRfdmFyKQogewogICB0cmVlIHRtcCwgcHN0YXQ7 CiAKQEAgLTc0Nyw3ICs3NDcsOCBAQCBnZmNfYWxsb2NhdGVfdXNpbmdfbGli IChzdG10YmxvY2tfdCAqIGJsb2NrLCB0cmVlIHBvaW50ZXIsIHRyZWUgc2l6 ZSwKIAkJCSAgICAgIGJ1aWxkX2ludF9jc3QgKHNpemVfdHlwZV9ub2RlLCAx KSksCiAJICAgICBidWlsZF9pbnRfY3N0IChpbnRlZ2VyX3R5cGVfbm9kZSwK IAkJCSAgICBsb2NrX3ZhciA/IEdGQ19DQUZfTE9DS19BTExPQwotCQkJCSAg ICAgOiBHRkNfQ0FGX0NPQVJSQVlfQUxMT0MpLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDogZXZlbnRfdmFyID8gR0ZDX0NBRl9FVkVOVF9BTExP QworCQkJCQk6IEdGQ19DQUZfQ09BUlJBWV9BTExPQyksCiAJICAgICB0b2tl biwgcHN0YXQsIGVycm1zZywgZXJybGVuKTsKIAogICB0bXAgPSBmb2xkX2J1 aWxkMl9sb2MgKGlucHV0X2xvY2F0aW9uLCBNT0RJRllfRVhQUiwKQEAgLTgx OSw2ICs4MjAsMTEgQEAgZ2ZjX2FsbG9jYXRlX2FsbG9jYXRhYmxlIChzdG10 YmxvY2tfdCAqIGJsb2NrLCB0cmVlIG1lbSwgdHJlZSBzaXplLCB0cmVlIHRv a2VuLAogCQkJID09IElOVE1PRF9JU09fRk9SVFJBTl9FTlYKIAkJICAgICAg JiYgZXhwci0+dHMudS5kZXJpdmVkLT5pbnRtb2Rfc3ltX2lkCiAJCSAgICAg ICAgID09IElTT0ZPUlRSQU5fTE9DS19UWVBFOworICAgICAgYm9vbCBldmVu dF92YXIgPSBleHByLT50cy50eXBlID09IEJUX0RFUklWRUQKKwkJICAgICAg ICYmIGV4cHItPnRzLnUuZGVyaXZlZC0+ZnJvbV9pbnRtb2QKKwkJCSA9PSBJ TlRNT0RfSVNPX0ZPUlRSQU5fRU5WCisJCSAgICAgICAmJiBleHByLT50cy51 LmRlcml2ZWQtPmludG1vZF9zeW1faWQKKwkJICAgICAgICAgPT0gSVNPRk9S VFJBTl9FVkVOVF9UWVBFOwogICAgICAgLyogSW4gdGhlIGZyb250IGVuZCwg d2UgcmVwcmVzZW50IHRoZSBsb2NrIHZhcmlhYmxlIGFzIHBvaW50ZXIuIEhv d2V2ZXIsCiAJIHRoZSBGRSBvbmx5IHBhc3NlcyB0aGUgcG9pbnRlciBhcm91 bmQgYW5kIGxlYXZlcyB0aGUgYWN0dWFsCiAJIHJlcHJlc2VudGF0aW9uIHRv IHRoZSBsaWJyYXJ5LiBIZW5jZSwgd2UgaGF2ZSB0byBjb252ZXJ0IGJhY2sg dG8gdGhlCkBAIC04MjgsNyArODM0LDcgQEAgZ2ZjX2FsbG9jYXRlX2FsbG9j YXRhYmxlIChzdG10YmxvY2tfdCAqIGJsb2NrLCB0cmVlIG1lbSwgdHJlZSBz aXplLCB0cmVlIHRva2VuLAogCQkJCXNpemUsIFRZUEVfU0laRV9VTklUIChw dHJfdHlwZV9ub2RlKSk7CiAKICAgICAgIGdmY19hbGxvY2F0ZV91c2luZ19s aWIgKCZhbGxvY19ibG9jaywgbWVtLCBzaXplLCB0b2tlbiwgc3RhdHVzLAot CQkJICAgICAgZXJybXNnLCBlcnJsZW4sIGxvY2tfdmFyKTsKKwkJCSAgICAg IGVycm1zZywgZXJybGVuLCBsb2NrX3ZhciwgZXZlbnRfdmFyKTsKIAogICAg ICAgaWYgKHN0YXR1cyAhPSBOVUxMX1RSRUUpCiAJewpAQCAtMTg0NCw2ICsx ODUwLDExIEBAIHRyYW5zX2NvZGUgKGdmY19jb2RlICogY29kZSwgdHJlZSBj b25kKQogCSAgcmVzID0gZ2ZjX3RyYW5zX2xvY2tfdW5sb2NrIChjb2RlLCBj b2RlLT5vcCk7CiAJICBicmVhazsKIAorCWNhc2UgRVhFQ19FVkVOVF9QT1NU OgorCWNhc2UgRVhFQ19FVkVOVF9XQUlUOgorCSAgcmVzID0gZ2ZjX3RyYW5z X2V2ZW50X3Bvc3Rfd2FpdCAoY29kZSwgY29kZS0+b3ApOworCSAgYnJlYWs7 CisKIAljYXNlIEVYRUNfRk9SQUxMOgogCSAgcmVzID0gZ2ZjX3RyYW5zX2Zv cmFsbCAoY29kZSk7CiAJICBicmVhazsKZGlmZiAtLWdpdCAuL2djYy9mb3J0 cmFuL3RyYW5zLmggLi9nY2MvZm9ydHJhbi90cmFucy5oCmluZGV4IDcwZDk5 ZDAuLmU2NTQ0ZjkgMTAwNjQ0Ci0tLSAuL2djYy9mb3J0cmFuL3RyYW5zLmgK KysrIC4vZ2NjL2ZvcnRyYW4vdHJhbnMuaApAQCAtMTA5LDcgKzEwOSw5IEBA IHR5cGVkZWYgZW51bQogICBHRkNfQ0FGX0NPQVJSQVlfQUxMT0MsCiAgIEdG Q19DQUZfTE9DS19TVEFUSUMsCiAgIEdGQ19DQUZfTE9DS19BTExPQywKLSAg R0ZDX0NBRl9DUklUSUNBTAorICBHRkNfQ0FGX0NSSVRJQ0FMLAorICBHRkNf Q0FGX0VWRU5UX1NUQVRJQywKKyAgR0ZDX0NBRl9FVkVOVF9BTExPQwogfQog Z2ZjX2NvYXJyYXlfdHlwZTsKIApAQCAtNzU2LDYgKzc1OCw5IEBAIGV4dGVy biBHVFkoKCkpIHRyZWUgZ2Zvcl9mbmRlY2xfY2FmX2F0b21pY19jYXM7CiBl eHRlcm4gR1RZKCgpKSB0cmVlIGdmb3JfZm5kZWNsX2NhZl9hdG9taWNfb3A7 CiBleHRlcm4gR1RZKCgpKSB0cmVlIGdmb3JfZm5kZWNsX2NhZl9sb2NrOwog ZXh0ZXJuIEdUWSgoKSkgdHJlZSBnZm9yX2ZuZGVjbF9jYWZfdW5sb2NrOwor ZXh0ZXJuIEdUWSgoKSkgdHJlZSBnZm9yX2ZuZGVjbF9jYWZfZXZlbnRfcG9z dDsKK2V4dGVybiBHVFkoKCkpIHRyZWUgZ2Zvcl9mbmRlY2xfY2FmX2V2ZW50 X3dhaXQ7CitleHRlcm4gR1RZKCgpKSB0cmVlIGdmb3JfZm5kZWNsX2NhZl9l dmVudF9xdWVyeTsKIGV4dGVybiBHVFkoKCkpIHRyZWUgZ2Zvcl9mbmRlY2xf Y29fYnJvYWRjYXN0OwogZXh0ZXJuIEdUWSgoKSkgdHJlZSBnZm9yX2ZuZGVj bF9jb19tYXg7CiBleHRlcm4gR1RZKCgpKSB0cmVlIGdmb3JfZm5kZWNsX2Nv X21pbjsKZGlmZiAtLWdpdCAuL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcv Y29hcnJheS9ldmVudF8xLmY5MCAuL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4u ZGcvY29hcnJheS9ldmVudF8xLmY5MApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi5iNDM4NWYzCi0tLSAvZGV2L251bGwKKysrIC4vZ2Nj L3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9jb2FycmF5L2V2ZW50XzEuZjkwCkBA IC0wLDAgKzEsNTEgQEAKKyEgeyBkZy1kbyBydW4gfQorIQorISBSdW4tdGlt ZSB0ZXN0IGZvciBFVkVOVF9UWVBFCishCit1c2UgaXNvX2ZvcnRyYW5fZW52 LCBvbmx5OiBldmVudF90eXBlCitpbXBsaWNpdCBub25lCisKK3R5cGUoZXZl bnRfdHlwZSksIHNhdmUgOjogdmFyWypdCitpbnRlZ2VyIDo6IGNvdW50LCBz dGF0CisKK2NvdW50ID0gLTQyCitjYWxsIGV2ZW50X3F1ZXJ5ICh2YXIsIGNv dW50KQoraWYgKGNvdW50IC89IDApIGNhbGwgYWJvcnQoKQorCitzdGF0ID0g OTkKK2V2ZW50IHBvc3QgKHZhciwgc3RhdD1zdGF0KQoraWYgKHN0YXQgLz0g MCkgY2FsbCBhYm9ydCgpCitjYWxsIGV2ZW50X3F1ZXJ5KHZhciwgY291bnQs IHN0YXQ9c3RhdCkKK2lmIChjb3VudCAvPSAxIC5vci4gc3RhdCAvPSAwKSBj YWxsIGFib3J0KCkKKworc3RhdCA9IDk5CitldmVudCBwb3N0ICh2YXJbdGhp c19pbWFnZSgpXSkKK2NhbGwgZXZlbnRfcXVlcnkodmFyLCBjb3VudCkKK2lm IChjb3VudCAvPSAyKSBjYWxsIGFib3J0KCkKKworc3RhdCA9IDk5CitldmVu dCB3YWl0ICh2YXIpCitjYWxsIGV2ZW50X3F1ZXJ5KHZhciwgY291bnQpCitp ZiAoY291bnQgLz0gMSkgY2FsbCBhYm9ydCgpCisKK3N0YXQgPSA5OQorZXZl bnQgcG9zdCAodmFyKQorY2FsbCBldmVudF9xdWVyeSh2YXIsIGNvdW50KQor aWYgKGNvdW50IC89IDIpIGNhbGwgYWJvcnQoKQorCitzdGF0ID0gOTkKK2V2 ZW50IHBvc3QgKHZhcikKK2NhbGwgZXZlbnRfcXVlcnkodmFyLCBjb3VudCkK K2lmIChjb3VudCAvPSAzKSBjYWxsIGFib3J0KCkKKworc3RhdCA9IDk5Citl dmVudCB3YWl0ICh2YXIsIHVudGlsX2NvdW50PTIpCitjYWxsIGV2ZW50X3F1 ZXJ5KHZhciwgY291bnQpCitpZiAoY291bnQgLz0gMSkgY2FsbCBhYm9ydCgp CisKK3N0YXQgPSA5OQorZXZlbnQgd2FpdCAodmFyLCBzdGF0PXN0YXQsIHVu dGlsX2NvdW50PTEpCitpZiAoc3RhdCAvPSAwKSBjYWxsIGFib3J0KCkKK2Nh bGwgZXZlbnRfcXVlcnkoZXZlbnQ9dmFyLCBzdGF0PXN0YXQsIGNvdW50PWNv dW50KQoraWYgKGNvdW50IC89IDAgLm9yLiBzdGF0IC89IDApIGNhbGwgYWJv cnQoKQorZW5kCmRpZmYgLS1naXQgLi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFu LmRnL2NvYXJyYXkvZXZlbnRfMi5mOTAgLi9nY2MvdGVzdHN1aXRlL2dmb3J0 cmFuLmRnL2NvYXJyYXkvZXZlbnRfMi5mOTAKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uMmQ0NTFhNQotLS0gL2Rldi9udWxsCisrKyAu L2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvY29hcnJheS9ldmVudF8yLmY5 MApAQCAtMCwwICsxLDg5IEBACishIHsgZGctZG8gcnVuIH0KKyEKKyEgUnVu LXRpbWUgdGVzdCBmb3IgRVZFTlRfVFlQRQorIQordXNlIGlzb19mb3J0cmFu X2Vudiwgb25seTogZXZlbnRfdHlwZQoraW1wbGljaXQgbm9uZQorCit0eXBl KGV2ZW50X3R5cGUpLCBzYXZlLCBhbGxvY2F0YWJsZSA6OiB2YXIoOilbOl0K K2ludGVnZXIgOjogY291bnQsIHN0YXQKKworYWxsb2NhdGUodmFyKDMpWypd KQorCitjb3VudCA9IC00MgorY2FsbCBldmVudF9xdWVyeSAodmFyKDEpLCBj b3VudCkKK2lmIChjb3VudCAvPSAwKSBjYWxsIGFib3J0KCkKK2NhbGwgZXZl bnRfcXVlcnkgKHZhcigxKSwgY291bnQpCitpZiAoY291bnQgLz0gMCkgY2Fs bCBhYm9ydCgpCitjYWxsIGV2ZW50X3F1ZXJ5ICh2YXIoMiksIGNvdW50KQor aWYgKGNvdW50IC89IDApIGNhbGwgYWJvcnQoKQorY2FsbCBldmVudF9xdWVy eSAodmFyKDMpLCBjb3VudCkKK2lmIChjb3VudCAvPSAwKSBjYWxsIGFib3J0 KCkKKworc3RhdCA9IDk5CitldmVudCBwb3N0ICh2YXIoMiksIHN0YXQ9c3Rh dCkKK2lmIChzdGF0IC89IDApIGNhbGwgYWJvcnQoKQorY2FsbCBldmVudF9x dWVyeSAodmFyKDEpLCBjb3VudCkKK2lmIChjb3VudCAvPSAwKSBjYWxsIGFi b3J0KCkKK2NhbGwgZXZlbnRfcXVlcnkodmFyKDIpLCBjb3VudCwgc3RhdD1z dGF0KQoraWYgKGNvdW50IC89IDEgLm9yLiBzdGF0IC89IDApIGNhbGwgYWJv cnQoKQorY2FsbCBldmVudF9xdWVyeSAodmFyKDMpLCBjb3VudCkKK2lmIChj b3VudCAvPSAwKSBjYWxsIGFib3J0KCkKKworc3RhdCA9IDk5CitldmVudCBw b3N0ICh2YXIoMilbdGhpc19pbWFnZSgpXSkKK2NhbGwgZXZlbnRfcXVlcnko dmFyKDEpLCBjb3VudCkKK2lmIChjb3VudCAvPSAwKSBjYWxsIGFib3J0KCkK K2NhbGwgZXZlbnRfcXVlcnkodmFyKDIpLCBjb3VudCkKK2lmIChjb3VudCAv PSAyKSBjYWxsIGFib3J0KCkKK2NhbGwgZXZlbnRfcXVlcnkodmFyKDIpLCBj b3VudCkKK2lmIChjb3VudCAvPSAyKSBjYWxsIGFib3J0KCkKK2NhbGwgZXZl bnRfcXVlcnkodmFyKDMpLCBjb3VudCkKK2lmIChjb3VudCAvPSAwKSBjYWxs IGFib3J0KCkKKworc3RhdCA9IDk5CitldmVudCB3YWl0ICh2YXIoMikpCitj YWxsIGV2ZW50X3F1ZXJ5KHZhcigxKSwgY291bnQpCitpZiAoY291bnQgLz0g MCkgY2FsbCBhYm9ydCgpCitjYWxsIGV2ZW50X3F1ZXJ5KHZhcigyKSwgY291 bnQpCitpZiAoY291bnQgLz0gMSkgY2FsbCBhYm9ydCgpCitjYWxsIGV2ZW50 X3F1ZXJ5KHZhcigzKSwgY291bnQpCitpZiAoY291bnQgLz0gMCkgY2FsbCBh Ym9ydCgpCisKK3N0YXQgPSA5OQorZXZlbnQgcG9zdCAodmFyKDIpKQorY2Fs bCBldmVudF9xdWVyeSh2YXIoMSksIGNvdW50KQoraWYgKGNvdW50IC89IDAp IGNhbGwgYWJvcnQoKQorY2FsbCBldmVudF9xdWVyeSh2YXIoMiksIGNvdW50 KQoraWYgKGNvdW50IC89IDIpIGNhbGwgYWJvcnQoKQorY2FsbCBldmVudF9x dWVyeSh2YXIoMyksIGNvdW50KQoraWYgKGNvdW50IC89IDApIGNhbGwgYWJv cnQoKQorCitzdGF0ID0gOTkKK2V2ZW50IHBvc3QgKHZhcigyKSkKK2NhbGwg ZXZlbnRfcXVlcnkodmFyKDEpLCBjb3VudCkKK2lmIChjb3VudCAvPSAwKSBj YWxsIGFib3J0KCkKK2NhbGwgZXZlbnRfcXVlcnkodmFyKDIpLCBjb3VudCkK K2lmIChjb3VudCAvPSAzKSBjYWxsIGFib3J0KCkKK2NhbGwgZXZlbnRfcXVl cnkodmFyKDMpLCBjb3VudCkKK2lmIChjb3VudCAvPSAwKSBjYWxsIGFib3J0 KCkKKworc3RhdCA9IDk5CitldmVudCB3YWl0ICh2YXIoMiksIHVudGlsX2Nv dW50PTIpCitjYWxsIGV2ZW50X3F1ZXJ5KHZhcigxKSwgY291bnQpCitpZiAo Y291bnQgLz0gMCkgY2FsbCBhYm9ydCgpCitjYWxsIGV2ZW50X3F1ZXJ5KHZh cigyKSwgY291bnQpCitpZiAoY291bnQgLz0gMSkgY2FsbCBhYm9ydCgpCitj YWxsIGV2ZW50X3F1ZXJ5KHZhcigzKSwgY291bnQpCitpZiAoY291bnQgLz0g MCkgY2FsbCBhYm9ydCgpCisKK3N0YXQgPSA5OQorZXZlbnQgd2FpdCAodmFy KDIpLCBzdGF0PXN0YXQsIHVudGlsX2NvdW50PTEpCitpZiAoc3RhdCAvPSAw KSBjYWxsIGFib3J0KCkKK2NhbGwgZXZlbnRfcXVlcnkoZXZlbnQ9dmFyKDEp LCBzdGF0PXN0YXQsIGNvdW50PWNvdW50KQoraWYgKGNvdW50IC89IDAgLm9y LiBzdGF0IC89IDApIGNhbGwgYWJvcnQoKQorY2FsbCBldmVudF9xdWVyeShl dmVudD12YXIoMiksIHN0YXQ9c3RhdCwgY291bnQ9Y291bnQpCitpZiAoY291 bnQgLz0gMCAub3IuIHN0YXQgLz0gMCkgY2FsbCBhYm9ydCgpCitjYWxsIGV2 ZW50X3F1ZXJ5KGV2ZW50PXZhcigzKSwgc3RhdD1zdGF0LCBjb3VudD1jb3Vu dCkKK2lmIChjb3VudCAvPSAwIC5vci4gc3RhdCAvPSAwKSBjYWxsIGFib3J0 KCkKK2VuZApkaWZmIC0tZ2l0IC4vbGliZ2ZvcnRyYW4vY2FmL2xpYmNhZi5o IC4vbGliZ2ZvcnRyYW4vY2FmL2xpYmNhZi5oCmluZGV4IDY2MGJkN2MuLmVi ZGE1NzkgMTAwNjQ0Ci0tLSAuL2xpYmdmb3J0cmFuL2NhZi9saWJjYWYuaAor KysgLi9saWJnZm9ydHJhbi9jYWYvbGliY2FmLmgKQEAgLTU3LDcgKzU3LDkg QEAgdHlwZWRlZiBlbnVtIGNhZl9yZWdpc3Rlcl90IHsKICAgQ0FGX1JFR1RZ UEVfQ09BUlJBWV9BTExPQywKICAgQ0FGX1JFR1RZUEVfTE9DS19TVEFUSUMs CiAgIENBRl9SRUdUWVBFX0xPQ0tfQUxMT0MsCi0gIENBRl9SRUdUWVBFX0NS SVRJQ0FMCisgIENBRl9SRUdUWVBFX0NSSVRJQ0FMLAorICBDQUZfUkVHVFlQ RV9FVkVOVF9TVEFUSUMsCisgIENBRl9SRUdUWVBFX0VWRU5UX0FMTE9DCiB9 CiBjYWZfcmVnaXN0ZXJfdDsKIApAQCAtMTMzLDUgKzEzNSw4IEBAIHZvaWQg X2dmb3J0cmFuX2NhZl9hdG9taWNfb3AgKGludCwgY2FmX3Rva2VuX3QsIHNp emVfdCwgaW50LCB2b2lkICosIHZvaWQgKiwKIAogdm9pZCBfZ2ZvcnRyYW5f Y2FmX2xvY2sgKGNhZl90b2tlbl90LCBzaXplX3QsIGludCwgaW50ICosIGlu dCAqLCBjaGFyICosIGludCk7CiB2b2lkIF9nZm9ydHJhbl9jYWZfdW5sb2Nr IChjYWZfdG9rZW5fdCwgc2l6ZV90LCBpbnQsIGludCAqLCBjaGFyICosIGlu dCk7Cit2b2lkIF9nZm9ydHJhbl9jYWZfZXZlbnRfcG9zdCAoY2FmX3Rva2Vu X3QsIHNpemVfdCwgaW50LCBpbnQgKiwgY2hhciAqLCBpbnQpOwordm9pZCBf Z2ZvcnRyYW5fY2FmX2V2ZW50X3dhaXQgKGNhZl90b2tlbl90LCBzaXplX3Qs IGludCwgaW50ICosIGNoYXIgKiwgaW50KTsKK3ZvaWQgX2dmb3J0cmFuX2Nh Zl9ldmVudF9xdWVyeSAoY2FmX3Rva2VuX3QsIHNpemVfdCwgaW50LCBpbnQg KiwgaW50ICopOwogCiAjZW5kaWYgIC8qIExJQkNBRl9IICAqLwpkaWZmIC0t Z2l0IC4vbGliZ2ZvcnRyYW4vY2FmL3NpbmdsZS5jIC4vbGliZ2ZvcnRyYW4v Y2FmL3NpbmdsZS5jCmluZGV4IDZjNTgyODYuLjljNGIzNDMgMTAwNjQ0Ci0t LSAuL2xpYmdmb3J0cmFuL2NhZi9zaW5nbGUuYworKysgLi9saWJnZm9ydHJh bi9jYWYvc2luZ2xlLmMKQEAgLTEwMSw3ICsxMDEsOCBAQCBfZ2ZvcnRyYW5f Y2FmX3JlZ2lzdGVyIChzaXplX3Qgc2l6ZSwgY2FmX3JlZ2lzdGVyX3QgdHlw ZSwgY2FmX3Rva2VuX3QgKnRva2VuLAogICB2b2lkICpsb2NhbDsKIAogICBp ZiAodHlwZSA9PSBDQUZfUkVHVFlQRV9MT0NLX1NUQVRJQyB8fCB0eXBlID09 IENBRl9SRUdUWVBFX0xPQ0tfQUxMT0MKLSAgICAgIHx8IHR5cGUgPT0gQ0FG X1JFR1RZUEVfQ1JJVElDQUwpCisgICAgICB8fCB0eXBlID09IENBRl9SRUdU WVBFX0NSSVRJQ0FMIHx8IHR5cGUgPT0gQ0FGX1JFR1RZUEVfRVZFTlRfU1RB VElDCisgICAgICB8fCB0eXBlID09IENBRl9SRUdUWVBFX0VWRU5UX0FMTE9D KQogICAgIGxvY2FsID0gY2FsbG9jIChzaXplLCBzaXplb2YgKGJvb2wpKTsK ICAgZWxzZQogICAgIGxvY2FsID0gbWFsbG9jIChzaXplKTsKQEAgLTEzMyw3 ICsxMzQsOCBAQCBfZ2ZvcnRyYW5fY2FmX3JlZ2lzdGVyIChzaXplX3Qgc2l6 ZSwgY2FmX3JlZ2lzdGVyX3QgdHlwZSwgY2FmX3Rva2VuX3QgKnRva2VuLAog ICAgICpzdGF0ID0gMDsKIAogICBpZiAodHlwZSA9PSBDQUZfUkVHVFlQRV9D T0FSUkFZX1NUQVRJQyB8fCB0eXBlID09IENBRl9SRUdUWVBFX0xPQ0tfU1RB VElDCi0gICAgICB8fCB0eXBlID09IENBRl9SRUdUWVBFX0NSSVRJQ0FMKQor ICAgICAgfHwgdHlwZSA9PSBDQUZfUkVHVFlQRV9DUklUSUNBTCB8fCB0eXBl ID09IENBRl9SRUdUWVBFX0VWRU5UX1NUQVRJQworICAgICAgfHwgdHlwZSA9 PSBDQUZfUkVHVFlQRV9FVkVOVF9BTExPQykKICAgICB7CiAgICAgICBjYWZf c3RhdGljX3QgKnRtcCA9IG1hbGxvYyAoc2l6ZW9mIChjYWZfc3RhdGljX3Qp KTsKICAgICAgIHRtcC0+cHJldiAgPSBjYWZfc3RhdGljX2xpc3Q7CkBAIC0x MDcxLDYgKzEwNzMsNDUgQEAgX2dmb3J0cmFuX2NhZl9hdG9taWNfb3AgKGlu dCBvcCwgY2FmX3Rva2VuX3QgdG9rZW4sIHNpemVfdCBvZmZzZXQsCiAgICAg KnN0YXQgPSAwOwogfQogCit2b2lkCitfZ2ZvcnRyYW5fY2FmX2V2ZW50X3Bv c3QgKGNhZl90b2tlbl90IHRva2VuLCBzaXplX3QgaW5kZXgsIAorCQkJICBp bnQgaW1hZ2VfaW5kZXggX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLCAKKwkJ CSAgaW50ICpzdGF0LCBjaGFyICplcnJtc2cgX19hdHRyaWJ1dGVfXyAoKHVu dXNlZCkpLCAKKwkJCSAgaW50IGVycm1zZ19sZW4gX19hdHRyaWJ1dGVfXyAo KHVudXNlZCkpKQoreworICB1aW50MzJfdCB2YWx1ZSA9IDE7CisgIHVpbnQz Ml90ICpldmVudCA9ICh1aW50MzJfdCAqKSAoKGNoYXIgKikgVE9LRU4gKHRv a2VuKSArIGluZGV4KnNpemVvZih1aW50MzJfdCkpOworICBfX2F0b21pY19m ZXRjaF9hZGQgKGV2ZW50LCAodWludDMyX3QpIHZhbHVlLCBfX0FUT01JQ19S RUxBWEVEKTsKKyAgCisgIGlmKHN0YXQpCisgICAgKnN0YXQgPSAwOworfQor Cit2b2lkCitfZ2ZvcnRyYW5fY2FmX2V2ZW50X3dhaXQgKGNhZl90b2tlbl90 IHRva2VuLCBzaXplX3QgaW5kZXgsIAorCQkJICBpbnQgdW50aWxfY291bnQs IGludCAqc3RhdCwKKwkJCSAgY2hhciAqZXJybXNnIF9fYXR0cmlidXRlX18g KCh1bnVzZWQpKSwgCisJCQkgIGludCBlcnJtc2dfbGVuIF9fYXR0cmlidXRl X18gKCh1bnVzZWQpKSkKK3sKKyAgdWludDMyX3QgKmV2ZW50ID0gKHVpbnQz Ml90ICopICgoY2hhciAqKSBUT0tFTiAodG9rZW4pICsgaW5kZXgqc2l6ZW9m KHVpbnQzMl90KSk7CisgIHVpbnQzMl90IHZhbHVlID0gKHVpbnQzMl90KS11 bnRpbF9jb3VudDsKKyAgIF9fYXRvbWljX2ZldGNoX2FkZCAoZXZlbnQsICh1 aW50MzJfdCkgdmFsdWUsIF9fQVRPTUlDX1JFTEFYRUQpOworICAKKyAgIGlm KHN0YXQpCisgICAgKnN0YXQgPSAwOyAgICAKK30KKwordm9pZAorX2dmb3J0 cmFuX2NhZl9ldmVudF9xdWVyeSAoY2FmX3Rva2VuX3QgdG9rZW4sIHNpemVf dCBpbmRleCwgCisJCQkgICBpbnQgaW1hZ2VfaW5kZXggX19hdHRyaWJ1dGVf XyAoKHVudXNlZCkpLCAKKwkJCSAgIGludCAqY291bnQsIGludCAqc3RhdCkK K3sKKyAgdWludDMyX3QgKmV2ZW50ID0gKHVpbnQzMl90ICopICgoY2hhciAq KSBUT0tFTiAodG9rZW4pICsgaW5kZXgqc2l6ZW9mKHVpbnQzMl90KSk7Cisg IF9fYXRvbWljX2xvYWQgKGV2ZW50LCAodWludDMyX3QgKikgY291bnQsIF9f QVRPTUlDX1JFTEFYRUQpOworICAKKyAgaWYoc3RhdCkKKyAgICAqc3RhdCA9 IDA7Cit9CiAKIHZvaWQKIF9nZm9ydHJhbl9jYWZfbG9jayAoY2FmX3Rva2Vu X3QgdG9rZW4sIHNpemVfdCBpbmRleCwK --001a113f5facb26cb7052b8692f3 Content-Type: text/plain; charset=US-ASCII; name="ChangeLog_events.diff" Content-Disposition: attachment; filename="ChangeLog_events.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ikir0qd91 Content-length: 4799 ICAgIENoYW5nZUxvZyB1cGRhdGUKCmRpZmYgLS1naXQgYS9nY2MvZm9ydHJh bi9DaGFuZ2VMb2cgYi9nY2MvZm9ydHJhbi9DaGFuZ2VMb2cKaW5kZXggMGM4 MTIwMS4uM2QyYzRjZiAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vQ2hhbmdl TG9nCisrKyBiL2djYy9mb3J0cmFuL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYy IEBACisyMDE2LTAyLTExICBUb2JpYXMgQnVybnVzICA8YnVybnVzQG5ldC1i LmRlPgorCSAgICAgQWxlc3NhbmRybyBGYW5mYXJpbGxvIDxmYW5mYXJpbGxv LmdjY0BnbWFpbC5jb20+CisKKwlCYWNrcG9ydGVkIGZyb20gbWFpbmxpbmUK KwkyMDE1LTEyLTAyICBUb2JpYXMgQnVybnVzICA8YnVybnVzQG5ldC1iLmRl PgorCUFsZXNzYW5kcm8gRmFuZmFyaWxsbyA8ZmFuZmFyaWxsby5nY2NAZ21h aWwuY29tPgorCisJKiBjaGVjay5jIChnZmNfY2hlY2tfZXZlbnRfcXVlcnkp OiBOZXcgZnVuY3Rpb24uCisJKiBkdW1wLXBhcnNlLXRyZWUuYyAoc2hvd19j b2RlX25vZGUpOiBIYW5kbGUgRVhFQ19FVkVOVF9QT1NULAorCUVYRUNfRVZF TlRfV0FJVC4KKwkqIGV4cHIuYyAoZ2ZjX2NoZWNrX3ZhcmRlZl9jb250ZXh0 KTogTmV3IGNoZWNrIGZvciBldmVudCB2YXJpYWJsZXMKKwlkZWZpbml0aW9u LgorCSogZ2ZvcnRyYW4uaCAoZ2ZjX3N0YXRlbWVudCk6IEFkZCBTVF9FVkVO VF9QT1NULCBTVF9FVkVOVF9XQUlULgorCShnZmNfaXN5bV9pZCk6IEdGQ19J U1lNX0VWRU5UX1FVRVJZLgorCShzdHJ1Y3Qgc3ltYm9sX2F0dHJpYnV0ZSk6 IE5ldyBmaWVsZC4KKwkoZ2ZjX2V4ZWNfb3ApOiBBZGQgRVhFQ19FVkVOVF9Q T1NUIGFuZCBFWEVDX0VWRU5UX1dBSVQuCisJKiBnZm9ydHJhbi50ZXhpOiBE b2N1bWVudCBhYm91dCBuZXcgZXZlbnRzIGZ1bmN0aW9ucyBhbmQgbWlub3IK KwljaGFuZ2VzLgorCSogaW50ZXJmYWNlLmMgKGNvbXBhcmVfcGFyYW1ldGVy KTogTmV3IGNoZWNrLgorCShnZmNfcHJvY2VkdXJlX3VzZSk6IE5ldyBjaGVj ayBmb3IgZXhwbGljaXQgcHJvY2VkdXJlIGludGVyZmFjZS4KKwkoYWRkX3N1 YnJvdXRpbmVzKTogQWRkIGV2ZW50X3F1ZXJ5LgorCSogaW50cmluc2ljLmgg KGdmY19jaGVja19ldmVudF9xdWVyeSxnZmNfcmVzb2x2ZV9ldmVudF9xdWVy eSk6CisJTmV3IHByb3RvdHlwZXMuCisJKiBpcmVzb2x2ZS5jIChnZmNfcmVz b2x2ZV9ldmVudF9xdWVyeSk6IE5ldyBmdW5jdGlvbi4KKwkqIGlzby1mb3J0 cmFuLWVudi5kZWYgKGV2ZW50X3R5cGUpOiBOZXcgdHlwZS4KKwkqIG1hdGNo LmMgKGV2ZW50X3N0YXRlbWVudCxnZmNfbWF0Y2hfZXZlbnRfcG9zdCxnZmNf bWF0Y2hfZXZlbnRfd2FpdCk6CisJTmV3IGZ1bmN0aW9ucy4KKwkoZ2ZjX21h dGNoX25hbWUpOiBOZXcgZXZlbnQgcG9zdCBhbmQgZXZlbnQgd2FpdC4KKwkq IG1hdGNoLmggKGdmY19tYXRjaF9ldmVudF9wb3N0LGdmY19tYXRjaF9ldmVu dF93YWl0KToKKwlOZXcgcHJvdG90eXBlcy4KKwkqIG1vZHVsZS5jIChhYl9h dHRyaWJ1dGUpOiBBZGQgQUJfRVZFTlRfQ09NUC4KKwkoYXR0cl9iaXRzKTog TGlrZXdpc2UuCisJKG1pb19zeW1ib2xfYXR0cmlidXRlKTogSGFuZGxlIGV2 ZW50X2NvbXAgYXR0cmlidXRlLgorCSogcGFyc2UuYyAoZGVjb2RlX3N0YXRl bWVudCk6IEFkZCBTVF9FVkVOVF9QT1NULCBTVF9FVkVOVF9XQUlULgorCShu ZXh0X3N0YXRlbWVudCk6IEFkZCBTVF9FVkVOVF9QT1NULCBTVF9FVkVOVF9X QUlULgorCShnZmNfYXNjaWlfc3RhdGVtZW50KTogQWRkIFNUX0VWRU5UX1BP U1QsIFNUX0VWRU5UX1dBSVQuCisJKHBhcnNlX2Rlcml2ZWQpOiBDaGVjayBm b3IgZXZlbnRfdHlwZSBjb21wb25lbnRzLgorCSogcmVzb2x2ZS5jIChyZXNv bHZlX2FsbG9jYXRlX2V4cHIpOiBDaGVjayBmb3IgZXZlbnQgdmFyaWFibGUg ZGVmLgorCShyZXNvbHZlX2xvY2tfdW5sb2NrKTogUmVuYW1lZCB0byByZXNv bHZlX2xvY2tfdW5sb2NrX2V2ZW50LiBJdAorCWluY2x1ZGVzIGxvZ2ljIGZv ciBsb2NrcyBhbmQgZXZlbnRzLgorCShnZmNfcmVzb2x2ZV9jb2RlKTogQ2Fs bCBpdC4KKwkoZ2ZjX3Jlc29sdmVfc3ltYm9sKTogTmV3IGNoZWNrIGZvciBl dmVudCB2YXJpYWJsZSB0byBiZSBhIGNvcnJheS4KKwkqIHN0LmMgKGdmY19m cmVlX3N0YXRlbWVudCk6IEhhbmRsZSBuZXcgRVhFQ19FVkVOVF9QT1NUIGFu ZAorCUVYRUNfRVZFTlRfV0FJVC4KKwkqIHRyYW5zLWRlY2wuYyAoZ2Zvcl9m bmRlY2xfY2FmX2V2ZW50X3Bvc3QsZ2Zvcl9mbmRlY2xfY2FmX2V2ZW50X3dh aXQsCisJZ2Zvcl9mbmRlY2xfY2FmX2V2ZW50X3F1ZXJ5KTogTmV3IGdsb2Jh bCB2YXJpYWJsZXMuCisJKGdlbmVyYXRlX2NvYXJyYXlfc3ltX2luaXQpOiBD aGVja2luZyBmb3IgZXZlbnRfdHlwZS4KKwkoZ2ZjX2NvbnZfcHJvY2VkdXJl X2NhbGwpOiBDaGVjayBmb3IgQyBiaW5kIGF0dHJpYnV0ZS4KKwkqIHRyYW5z LWludHJpbnNpYy5jIChjb252X2ludHJpbnNpY19ldmVudF9xdWVyeSk6IE5l dyBmdW5jdGlvbi4KKwkoY29udl9pbnRyaW5zaWNfbW92ZV9hbGxvYyk6IENh bGwgaXQuCisJKiB0cmFucy1zdG10LmMgKGdmY190cmFuc19sb2NrX3VubG9j ayk6IFBhc3NpbmcgYWRkcmVzcworCW9mIGFjdHVhbCBhcmd1bWVudC4KKwko Z2ZjX3RyYW5zX3N5bmMpOiBMaWtld2lzZS4KKwkoZ2ZjX3RyYW5zX2V2ZW50 X3Bvc3Rfd2FpdCk6IE5ldyBmdW5jdGlvbi4KKwkqIHRyYW5zLXN0bXQuaCAo Z2ZjX3RyYW5zX2V2ZW50X3Bvc3Rfd2FpdCk6IE5ldyBwcm90b3R5cGUuCisJ KiB0cmFucy10eXBlcy5jIChnZmNfZ2V0X2Rlcml2ZWRfdHlwZSk6IEludGVn ZXJfa2luZCBhcyBldmVudF90eXBlLgorCSogdHJhbnMuYyAoZ2ZjX2FsbG9j YXRlX3VzaW5nX2xpYik6IE5ldyBhcmd1bWVudCBhbmQgbG9naWMgZm9yIGV2 ZW50cy4KKwkoZ2ZjX2FsbG9jYXRlX2FsbG9jYXRhYmxlKTogUGFzc2luZyBu ZXcgYXJndW1lbnQuCisJKHRyYW5zX2NvZGUpOiBIYW5kbGUgRVhFQ19FVkVO VF9QT1NULCBFWEVDX0VWRU5UX1dBSVQuCisJKiB0cmFucy5oIChnZmNfY29h cnJheV90eXBlKTogTmV3IGVsZW1lbnRzLgorCShnZm9yX2ZuZGVjbF9jYWZf ZXZlbnRfcG9zdCxnZm9yX2ZuZGVjbF9jYWZfZXZlbnRfd2FpdCwKKwlnZm9y X2ZuZGVjbF9jYWZfZXZlbnRfcXVlcnkpOiBEZWNsYXJlIHRoZW0uCisKCi0t LSBhL2djYy90ZXN0c3VpdGUvQ2hhbmdlTG9nCisrKyBiL2djYy90ZXN0c3Vp dGUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOSBAQAorMjAxNi0wMi0xMSAgVG9i aWFzIEJ1cm51cyAgPGJ1cm51c0BuZXQtYi5kZT4KKwkgICAgIEFsZXNzYW5k cm8gRmFuZmFyaWxsbyA8ZmFuZmFyaWxsby5nY2NAZ21haWwuY29tPgorCisJ QmFja3BvcnRlZCBmcm9tIG1haW5saW5lCisJMjAxNS0xMi0wMiAgVG9iaWFz IEJ1cm51cyAgPGJ1cm51c0BuZXQtYi5kZT4KKwlBbGVzc2FuZHJvIEZhbmZh cmlsbG8gPGZhbmZhcmlsbG8uZ2NjQGdtYWlsLmNvbT4KKworCSogZ2ZvcnRy YW4uZGcvY29hcnJheS9ldmVudF8xLmY5MDogTmV3LgorCSogZ2ZvcnRyYW4u ZGcvY29hcnJheS9ldmVudF8yLmY5MDogTmV3Lg== --001a113f5facb26cb7052b8692f3--