From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: martin rudalics Newsgroups: gmane.emacs.devel Subject: Re: Add function to rotate/transpose all windows Date: Thu, 21 Nov 2024 18:54:34 +0100 Message-ID: References: <87setpdv21.fsf@gmail.com> <8734k1gnt9.fsf@gmail.com> <8a2007d9-d501-404b-966d-57a7a51310ef@gmx.at> <87ses0r81d.fsf@gmail.com> <69658762-5fc7-4a9d-9262-528dfd9e93cd@gmx.at> <87wmhb2yew.fsf@gmail.com> <801bbd24-8f79-48a4-9615-f5ef21b2341e@gmx.at> <87ikstsu7f.fsf@gmail.com> <68dc98d6-42c0-431a-aefe-eecb02991764@gmx.at> <875xosy316.fsf@gmail.com> <87bjyfcncu.fsf@gmail.com> <87cyiuefxs.fsf@gmail.com> <878qthewbq.fsf@gmail.com> <8599bc67-b05d-4afc-8e6e-1ba64a30054e@gmx.at> <87frnp2x85.fsf@gmail.com> <823c7cca-63d4-4568-94bc-11f5949d6c5c@gmx.at> <87h683muss.fsf@gmail.com> <02432e6c-6ee2-4c68-9ebb-246f6be88918@gmx.at> <877c8wadke.fsf@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------Vi98pwJEVVx78L0F0QmVziFX" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="21347"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla Thunderbird Cc: Juri Linkov , Eli Zaretskii , emacs-devel@gnu.org To: Pranshu Sharma Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Thu Nov 21 18:55:34 2024 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1tEBOv-0005Mv-UP for ged-emacs-devel@m.gmane-mx.org; Thu, 21 Nov 2024 18:55:34 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tEBOB-0005ZB-Sb; Thu, 21 Nov 2024 12:54:47 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tEBO9-0005Z2-HQ for emacs-devel@gnu.org; Thu, 21 Nov 2024 12:54:45 -0500 Original-Received: from mout.gmx.net ([212.227.15.15]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tEBO4-0002NY-Fu; Thu, 21 Nov 2024 12:54:45 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at; s=s31663417; t=1732211675; x=1732816475; i=rudalics@gmx.at; bh=1PXopjN381ChxsvpYeYMuD0X+yNPmQDnTEOHimOl5IU=; h=X-UI-Sender-Class:Content-Type:Message-ID:Date:MIME-Version: Subject:To:Cc:References:From:In-Reply-To:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=fvJGkURuRMtOp45ENtlUOPvSPhuq973/YkUwaAl32DIV8lD9GfNd9j2x/3p3/NSE xJhq71x6V/buPXhYuXnMjuiHcKfaPFOw+7Ccw4zcM61h9qwighIedkAGL3UgdcEwD heeX60MNFl0PRc9YiCJb7k6oDLOEGJKTZzLmDjK+rGyGz0M8se/6eKb3BVG40q4fO NwYDPLUtLuvmyPw7kquPh4vim+Tf99kj2fHeu3oojEjc3M49GVgQ3cVE9BPJu3C4J chhjaklU+pT4m3txao8L/JKhhfPunp12pFqpFnYWrxibKnkaFGE+m8BGLDUFNo8cJ /iiTPGx+57hPAkcZkg== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Original-Received: from [192.168.31.113] ([212.95.5.245]) by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MUGe1-1tM3Ca0kF9-00MWIZ; Thu, 21 Nov 2024 18:54:35 +0100 Content-Language: en-US In-Reply-To: <877c8wadke.fsf@gmail.com> X-Provags-ID: V03:K1:g3X3UwH84lI+xBRWEXlxVuJahmGvG1YFHAhtNdbsFYvEXpsEEOO ZYCwJ3I05/BlEMcRbQiBWgGnL71Fl8yRdD5S8/s+9D/ajkyl/e9swidIwktD0jGPRboHi51 sC9iWYxrEeFT38uVJiwCz00+xZwsU1Ykpg9cqR0UVmYN+QCB+AAJ5gALVEZrVtTd20vtmXG Ipa+8OZql6xIc9afdtEsg== UI-OutboundReport: notjunk:1;M01:P0:ytnwAtVtLXs=;nmcwPgqZR7p+xtS4rO2QiUxeegT CcxUDDHsD2yma6dUbH2wa3neC1lyUwPj9QbFuMS76HDhebaifrneKH+X689IVA2vAQSPqCm1H nRSiBe+EJ98URQbsPZ1MgZH9FdmdDxu9sJpPmvMZ2L9JcZVSgDwzyhynv8F62mh8mF9lg+nf4 CT/dMDShvQvP2XGGAw7x8BDRQFg701RMSjRls67c+v3XT5Q8dSRb43C46F03833KFs68Y9AKd dGvPu4gYXPDMj3AV3hJmSU+b8m8GOGosMmfFKhbXcusAl/uGMNrasEDx7VtH61fcdZ0o1u/wn Yr693XMPYYMCNjpD7RP6heH0EZkAmfDmua3x4q3UaWt47fFGZzx/MgU1ZXBONWff94ADzRt8e BxTeeOr8349nhQpdR7kZTRxm9YGb2zDh4ciGv3yVFTCxsLrYQ1VqCNaxscWE5cNFwVwooQ37J FKcNcLro6HMcX1viXI6qUHuSqVmOK4FPnijzcY8hn36QWcq53BzbwWvU0KxITG2BzloJxUoKb hwcXNv1Wsbo1a9jUT12lNZVJ+B+Vw/AYDPb+F1M0PcbwRJEB2qG2cA7JrisxeE+m9QXx+gcPc bx31Gnt02YRkx0PlCtgWE7UyQSX7ZRmbXYVOk/R24WmUjJ/jesJDxkkzSgB64oDKi5jv80/6s 5FVk4zkCYJ+LUdStySMVBVXLR7vkYl15Kg7r9xzhKl9ISpkp9FQqo3Vg4r6RLnn0hxHSy1re7 L6NiWJwNBaGcf6P0NFUOJEqn0HtBb2se6Gne1PL70C7E0pzr66jzQF1vrjbuq6PT0krsTV54 Received-SPF: pass client-ip=212.227.15.15; envelope-from=rudalics@gmx.at; helo=mout.gmx.net X-Spam_score_int: 5 X-Spam_score: 0.5 X-Spam_bar: / X-Spam_report: (0.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.devel:325552 Archived-At: This is a multi-part message in MIME format. --------------Vi98pwJEVVx78L0F0QmVziFX Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit > I don't fully understnad why this is happening. iiuc, the purpose of > checking for previous split is to see if the (cons window parent) refer > split has already happened, to avoid doing it again. Instead of doing > this, I just use a vriable called `n-set' which determines if the parent > window has already been split with the cons refer argument, so I don't > belive this is neccasary. I think my code is over-engineered in this regard. Fact is that you create a new parent window where you should use the existing one. > Nice, can you send the whole diff. Attached. It's a bit more than that and comes without warranty. The elisp manual has not been updated in this regard. martin --------------Vi98pwJEVVx78L0F0QmVziFX Content-Type: text/x-patch; charset=UTF-8; name="split-window.diff" Content-Disposition: attachment; filename="split-window.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2RvYy9saXNwcmVmL3dpbmRvd3MudGV4aSBiL2RvYy9saXNwcmVmL3dp bmRvd3MudGV4aQppbmRleCAwYjhkN2QzYjc2ZC4uZTY3ZmMyNTZiM2QgMTAwNjQ0Ci0tLSBh L2RvYy9saXNwcmVmL3dpbmRvd3MudGV4aQorKysgYi9kb2MvbGlzcHJlZi93aW5kb3dzLnRl eGkKQEAgLTIyLDYgKzIyLDcgQEAgV2luZG93cwogKiBEZWxldGluZyBXaW5kb3dzOjogICAg ICAgIFJlbW92aW5nIGEgd2luZG93IGZyb20gaXRzIGZyYW1lLgogKiBSZWNvbWJpbmluZyBX aW5kb3dzOjogICAgIFByZXNlcnZpbmcgdGhlIGZyYW1lIGxheW91dCB3aGVuIHNwbGl0dGlu ZyBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0aW5nIHdpbmRvd3Mu CisqIFJlc3VycmVjdGluZyBkZWxldGVkIHdpbmRvd3M6OiBSZXN0b3JpbmcgaW5kaXZkdWFs IHdpbmRvd3MuCiAqIEN5Y2xpYyBXaW5kb3cgT3JkZXJpbmc6OiAgTW92aW5nIGFyb3VuZCB0 aGUgZXhpc3Rpbmcgd2luZG93cy4KICogQnVmZmVycyBhbmQgV2luZG93czo6ICAgICBFYWNo IHdpbmRvdyBkaXNwbGF5cyB0aGUgY29udGVudHMgb2YgYSBidWZmZXIuCiAqIFN3aXRjaGlu ZyBCdWZmZXJzOjogICAgICAgSGlnaGVyLWxldmVsIGZ1bmN0aW9ucyBmb3Igc3dpdGNoaW5n IHRvIGEgYnVmZmVyLgpAQCAtMTM1NSw3ICsxMzU2LDcgQEAgU3BsaXR0aW5nIFdpbmRvd3MK IEV4YW1wbGVzIG9mIHN1Y2ggd2luZG93cyBhcmUgc2lkZSB3aW5kb3dzIChAcHhyZWZ7U2lk ZSBXaW5kb3dzfSkgYW5kCiBhdG9taWMgd2luZG93cyAoQHB4cmVme0F0b21pYyBXaW5kb3dz fSkuCiAKLUBkZWZ1biBzcGxpdC13aW5kb3cgJm9wdGlvbmFsIHdpbmRvdyBzaXplIHNpZGUg cGl4ZWx3aXNlCitAZGVmdW4gc3BsaXQtd2luZG93ICZvcHRpb25hbCB3aW5kb3cgc2l6ZSBz aWRlIHBpeGVsd2lzZSByZWZlcgogVGhpcyBmdW5jdGlvbiBjcmVhdGVzIGEgbmV3IGxpdmUg d2luZG93IG5leHQgdG8gdGhlIHdpbmRvdwogQHZhcnt3aW5kb3d9LiAgSWYgQHZhcnt3aW5k b3d9IGlzIG9taXR0ZWQgb3IgQGNvZGV7bmlsfSwgaXQgZGVmYXVsdHMKIHRvIHRoZSBzZWxl Y3RlZCB3aW5kb3cuICBUaGF0IHdpbmRvdyBpcyBzcGxpdCwgYW5kIHJlZHVjZWQgaW4KQEAg LTEzNjQsNyArMTM2NSw3IEBAIFNwbGl0dGluZyBXaW5kb3dzCiBUaGUgb3B0aW9uYWwgc2Vj b25kIGFyZ3VtZW50IEB2YXJ7c2l6ZX0gZGV0ZXJtaW5lcyB0aGUgc2l6ZXMgb2YKIEB2YXJ7 d2luZG93fSBhbmQvb3IgdGhlIG5ldyB3aW5kb3cuICBJZiBpdCBpcyBvbWl0dGVkIG9yIEBj b2Rle25pbH0sCiBib3RoIHdpbmRvd3MgYXJlIGdpdmVuIGVxdWFsIHNpemVzOyBpZiB0aGVy ZSBpcyBhbiBvZGQgbGluZSwgaXQgaXMKLWFsbG9jYXRlZCB0byB0aGUgbmV3IHdpbmRvdy4g IElmIEB2YXJ7c2l6ZX0gaXMgYSBwb3NpdGl2ZSBudW1iZXIsCithbGxvdHRlZCB0byB0aGUg bmV3IHdpbmRvdy4gIElmIEB2YXJ7c2l6ZX0gaXMgYSBwb3NpdGl2ZSBudW1iZXIsCiBAdmFy e3dpbmRvd30gaXMgZ2l2ZW4gQHZhcntzaXplfSBsaW5lcyAob3IgY29sdW1ucywgZGVwZW5k aW5nIG9uIHRoZQogdmFsdWUgb2YgQHZhcntzaWRlfSkuICBJZiBAdmFye3NpemV9IGlzIGEg bmVnYXRpdmUgbnVtYmVyLCB0aGUgbmV3CiB3aW5kb3cgaXMgZ2l2ZW4gQG1pbnVze31AdmFy e3NpemV9IGxpbmVzIChvciBjb2x1bW5zKS4KQEAgLTEzNzQsMTMgKzEzNzUsMTMgQEAgU3Bs aXR0aW5nIFdpbmRvd3MKIFNpemVzfSkuICBUaHVzLCBpdCBzaWduYWxzIGFuIGVycm9yIGlm IHNwbGl0dGluZyB3b3VsZCByZXN1bHQgaW4gbWFraW5nCiBhIHdpbmRvdyBzbWFsbGVyIHRo YW4gdGhvc2UgdmFyaWFibGVzIHNwZWNpZnkuICBIb3dldmVyLCBhCiBub24tQGNvZGV7bmls fSB2YWx1ZSBmb3IgQHZhcntzaXplfSBjYXVzZXMgdGhvc2UgdmFyaWFibGVzIHRvIGJlCi1p Z25vcmVkOyBpbiB0aGF0IGNhc2UsIHRoZSBzbWFsbGVzdCBhbGxvd2FibGUgd2luZG93IGlz IGNvbnNpZGVyZWQgdG8gYmUKLW9uZSB0aGF0IGhhcyBzcGFjZSBmb3IgYSB0ZXh0IHRoYXQg aXMgb25lIGxpbmUgdGFsbCBhbmQvb3IgdHdvIGNvbHVtbnMKLXdpZGUuCitpZ25vcmVkOyBp biB0aGF0IGNhc2UsIHRoZSBzbWFsbGVzdCBhbGxvd2FibGUgc2l6ZXMgYXJlIGRldGVybWlu ZWQgYnkKK3RoZSB2YWx1ZXMgb2YgQGNvZGV7d2luZG93LXNhZmUtbWluLWhlaWdodH0gYW5k CitAY29kZXt3aW5kb3ctc2FmZS1taW4td2lkdGh9LgogCiBIZW5jZSwgaWYgQHZhcntzaXpl fSBpcyBzcGVjaWZpZWQsIGl0J3MgdGhlIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5IHRvCi1j aGVjayB3aGV0aGVyIHRoZSBlbWFuYXRpbmcgd2luZG93cyBhcmUgbGFyZ2UgZW5vdWdoIHRv IGVuY29tcGFzcyBhbGwgb2YKLXRoZWlyIGRlY29yYXRpb25zIGxpa2UgYSBtb2RlIGxpbmUg b3IgYSBzY3JvbGwgYmFyLiAgVGhlIGZ1bmN0aW9uCitjaGVjayB3aGV0aGVyIHRoZSBlbWFu YXRpbmcgd2luZG93cyBhcmUgbGFyZ2UgZW5vdWdoIHRvIGVuY29tcGFzcyBhbGwKK2FyZWFz IGxpa2UgYSBtb2RlIGxpbmUgb3IgYSBzY3JvbGwgYmFyLiAgVGhlIGZ1bmN0aW9uCiBAY29k ZXt3aW5kb3ctbWluLXNpemV9IChAcHhyZWZ7V2luZG93IFNpemVzfSkgY2FuIGJlIHVzZWQg dG8gZGV0ZXJtaW5lCiB0aGUgbWluaW11bSByZXF1aXJlbWVudHMgb2YgQHZhcnt3aW5kb3d9 IGluIHRoaXMgcmVnYXJkLiAgU2luY2UgdGhlIG5ldwogd2luZG93IHVzdWFsbHkgaW5oZXJp dHMgYXJlYXMgbGlrZSB0aGUgbW9kZSBsaW5lIG9yIHRoZSBzY3JvbGwgYmFyIGZyb20KQEAg LTEzOTksMTQgKzE0MDAsNjIgQEAgU3BsaXR0aW5nIFdpbmRvd3MKIHdpbmRvdyBpcyBwbGFj ZWQgb24gdGhlIGxlZnQgb2YgQHZhcnt3aW5kb3d9LiAgSW4gYm90aCB0aGVzZSBjYXNlcywK IEB2YXJ7c2l6ZX0gc3BlY2lmaWVzIGEgdG90YWwgd2luZG93IHdpZHRoLCBpbiBjb2x1bW5z LgogCitBcyBhIHJ1bGUsIGlmIEB2YXJ7d2luZG93fSBhbHJlYWR5IGZvcm1zIGEgY29tYmlu YXRpb24gKEBweHJlZntXaW5kb3dzCithbmQgRnJhbWVzfSkgdGhhdCBtYXRjaGVzIEB2YXJ7 c2lkZX0gKGEgaG9yaXpvbnRhbCBjb21iaW5hdGlvbiBtYXRjaGVzCitAdmFye3NpZGV9IGlm IGl0IGlzIEBjb2Rle2xlZnR9IG9yIEBjb2Rle3JpZ2h0fSwgYSB2ZXJ0aWNhbCBjb21iaW5h dGlvbgorbWF0Y2hlcyBAdmFye3NpZGV9IGlmIGl0IGlzIEBjb2Rle2Fib3ZlfSBvciBAY29k ZXtiZWxvd30pIGFuZAorQGNvZGV7d2luZG93LWNvbWJpbmF0aW9uLWxpbWl0fSAoQHB4cmVm e1JlY29tYmluaW5nIFdpbmRvd3N9KSBpcworQGNvZGV7bmlsfSwgdGhpcyBmdW5jdGlvbiBy ZXVzZXMgQHZhcnt3aW5kb3d9J3MgcGFyZW50IGluIHRoZSB3aW5kb3cKK3RyZWUgYXMgcGFy ZW50IG9mIHRoZSBuZXcgd2luZG93LgorCitIb3dldmVyLCBpZiBAdmFye3dpbmRvd30gaXMg aW4gYSBjb21iaW5hdGlvbiB0aGF0IGRvZXMgbm90IG1hdGNoCitAdmFye3NpZGV9IG9yIGlm IEBjb2Rle3dpbmRvdy1jb21iaW5hdGlvbi1saW1pdH0gaXMgbm9uLUBjb2Rle25pbH0sIHRo aXMKK2Z1bmN0aW9uIG1ha2VzIGEgbmV3IHBhcmVudCB3aW5kb3cgdGhhdCByZXBsYWNlcyBA dmFye3dpbmRvd30gaW4gdGhlCit3aW5kb3cgdHJlZSBhbmQgbWFrZXMgQHZhcnt3aW5kb3d9 IGFuZCB0aGUgbmV3IHdpbmRvdyBpdHMgc29sZSBjaGlsZAord2luZG93cy4gIFRoaXMgc3Rh bmRhcmQgYmVoYXZpb3IgY2FuIGJlIG92ZXJyaWRkZW4gdmlhIHRoZSBAdmFye3JlZmVyfQor YXJndW1lbnQuCisKIFRoZSBvcHRpb25hbCBmb3VydGggYXJndW1lbnQgQHZhcntwaXhlbHdp c2V9LCBpZiBub24tQGNvZGV7bmlsfSwgbWVhbnMKIHRvIGludGVycHJldCBAdmFye3NpemV9 IGluIHVuaXRzIG9mIHBpeGVscywgaW5zdGVhZCBvZiBsaW5lcyBhbmQKIGNvbHVtbnMuCiAK LUlmIEB2YXJ7d2luZG93fSBpcyBhIGxpdmUgd2luZG93LCB0aGUgbmV3IHdpbmRvdyBpbmhl cml0cyB2YXJpb3VzCi1wcm9wZXJ0aWVzIGZyb20gaXQsIGluY2x1ZGluZyBtYXJnaW5zIGFu ZCBzY3JvbGwgYmFycy4gIElmCi1AdmFye3dpbmRvd30gaXMgYW4gaW50ZXJuYWwgd2luZG93 LCB0aGUgbmV3IHdpbmRvdyBpbmhlcml0cyB0aGUKLXByb3BlcnRpZXMgb2YgdGhlIHdpbmRv dyBzZWxlY3RlZCB3aXRoaW4gQHZhcnt3aW5kb3d9J3MgZnJhbWUuCitJZiB0aGUgb3B0aW9u YWwgZmlmdGggYXJndW1lbnQgQHZhcntyZWZlcn0gaXMgbm9uLUBjb2Rle25pbH0sIGl0Citz cGVjaWZpZXMgYSByZWZlcmVuY2Ugd2luZG93IHVzZWQgZm9yIHNldHRpbmcgdXAgcHJvcGVy dGllcyBvZiB0aGUgbmV3Cit3aW5kb3cuICBJZiBub24tQGNvZGV7bmlsfSwgQHZhcntyZWZl cn0gY2FuIGJlIGVpdGhlciBhIHdpbmRvdyBvciBhIGNvbnMKK2NlbGwgb2YgdHdvIHdpbmRv d3MuCisKK0lmIEB2YXJ7cmVmZXJ9IGlzIGEgY29ucyBjZWxsLCBpdHMgQHNje2Nhcn0gaGFz IHRvIHNwZWNpZnkgYSBkZWxldGVkLAorZm9ybWVyIGxpdmUgd2luZG93IC0gYSB3aW5kb3cg dGhhdCBoYXMgc2hvd24gYSBidWZmZXIgYmVmb3JlIC0gb24gdGhlCitzYW1lIGZyYW1lIGFz IEB2YXJ7d2luZG93fS4gIFRoYXQgYnVmZmVyIG11c3QgYmUgc3RpbGwgbGl2ZS4gIFRoZQor QHNje2Nkcn0gaGFzIHRvIHNwZWNpZnkgYSBkZWxldGVkIHdpbmRvdyB0aGF0IHdhcywgYmVm b3JlIGl0cyBkZWxldGlvbiwKK2EgcGFyZW50IHdpbmRvdyBvbiB0aGUgc2FtZSBmcmFtZSBh cyBAdmFye3dpbmRvd30uICBJbiB0aGlzIGNhc2UsIHJhdGhlcgordGhlbiBtYWtpbmcgbmV3 IHdpbmRvd3MsIHRoaXMgZnVuY3Rpb24gcmVwbGFjZXMgQHZhcnt3aW5kb3d9IHdpdGggdGhl CitAc2N7Y2RyfSBvZiBAdmFye3JlZmVyfSBpbiB0aGUgd2luZG93IHRyZWUgYW5kIG1ha2Vz IEB2YXJ7d2luZG93fSBhbmQKK0B2YXJ7cmVmZXJ9J3MgQHNje2Nhcn0gaXRzIG5ldyBjaGls ZCB3aW5kb3dzLiAgQnVmZmVyLCBzdGFydCBhbmQgcG9pbnQKK3Bvc2l0aW9ucyBvZiBAdmFy e3JlZmVyfSdzIEBzY3tjYXJ9IGFyZSBzZXQgdG8gdGhlIHZhbHVlcyB0aGV5IGhhZAoraW1t ZWRpYXRlbHkgYmVmb3JlIEB2YXJ7cmVmZXJ9J3MgQHNje2Nhcn0gd2FzIGRlbGV0ZWQgdGhl IGxhc3QgdGltZS4KK0RlY29yYXRpb25zIGFuZCBwYXJhbWV0ZXJzIHJlbWFpbiB1bmFsdGVy ZWQgZnJvbSB0aGVpciB2YWx1ZXMgYmVmb3JlCitAdmFye3JlZmVyfSdzIEBzY3tjYXJ9IGFu ZCBAc2N7Y2RyfSB3ZXJlIGRlbGV0ZWQuCisKK0FsdGVybmF0aXZlbHksIEB2YXJ7cmVmZXJ9 IG1heSBzcGVjaWZ5IGEgZGVsZXRlZCwgZm9ybWVyIGxpdmUgd2luZG93IC0gYQord2luZG93 IHRoYXQgaGFzIHNob3duIGEgYnVmZmVyIGJlZm9yZSAtIG9uIHRoZSBzYW1lIGZyYW1lIGFz CitAdmFye3dpbmRvd30uICBUaGF0IGJ1ZmZlciBtdXN0IGJlIHN0aWxsIGxpdmUuICBJbiB0 aGlzIGNhc2UsIHRoaXMKK2Z1bmN0aW9uIGRvIG5vdCBtYWtlIGEgbmV3IHdpbmRvdyBidXQg cmF0aGVyIG1ha2VzIEB2YXJ7cmVmZXJ9IGxpdmUKK2FnYWluIGFuZCBpbnNlcnRzIGl0IGlu dG8gdGhlIHdpbmRvdyB0cmVlIGF0IHRoZSBwb3NpdGlvbiBhbmQgd2l0aCB0aGUKK3NpemVz IHRoZSBuZXcgd2luZG93IHdvdWxkIGhhdmUgYmVlbiBnaXZlbi4gIEJ1ZmZlciwgc3RhcnQg YW5kIHBvaW50Citwb3NpdGlvbnMgb2YgQHZhcntyZWZlcn0gYXJlIHNldCB0byB0aGUgdmFs dWVzIHRoZXkgaGFkIGltbWVkaWF0ZWx5CitiZWZvcmUgQHZhcntyZWZlcn0gd2FzIGRlbGV0 ZWQgdGhlIGxhc3QgdGltZS4gIERlY29yYXRpb25zIGFuZAorcGFyYW1ldGVycyByZW1haW4g dW5hbHRlcmVkIGZyb20gdGhlaXIgdmFsdWVzIGJlZm9yZSBAdmFye3JlZmVyfSB3YXMKK2Rl bGV0ZWQuICBUaGUgcGFyZW50IG9mIEB2YXJ7cmVmZXJ9IGlzIHRoZW4gZGV0ZXJtaW5lZCBh cyBpZiBpdCB3ZXJlIGEKK3dpbmRvdyBjcmVhdGVkIGFuZXcuCisKK090aGVyd2lzZSwgQHZh cntyZWZlcn0gbXVzdCBzcGVjaWZ5IGEgbGl2ZSB3aW5kb3cuICBJbiB0aGlzIGNhc2UsIHRo ZQorbmV3IHdpbmRvdyB3aWxsIGluaGVyaXQgcHJvcGVydGllcyBsaWtlIGJ1ZmZlciwgc3Rh cnQgYW5kIHBvaW50Citwb3NpdGlvbnMgYW5kIHNvbWUgZGVjb3JhdGlvbnMgZnJvbSBAdmFy e3JlZmVyfS4gIElmIEB2YXJ7cmVmZXJ9IGlzCitAY29kZXtuaWx9IG9yIG9taXR0ZWQsIHRo ZW4gaWYgQHZhcnt3aW5kb3d9IGlzIGxpdmUsIGFueSBzdWNoIHByb3BlcnRpZXMKK2FyZSBp bmhlcml0ZWQgZnJvbSBAdmFye3dpbmRvd30uICBJZiwgaG93ZXZlciwgQHZhcnt3aW5kb3d9 IGlzIGFuCitpbnRlcm5hbCB3aW5kb3csIHRoZSBuZXcgd2luZG93IHdpbGwgaW5oZXJpdCB0 aGVzZSBwcm9wZXJ0aWVzIGZyb20gdGhlCit3aW5kb3cgc2VsZWN0ZWQgb24gQHZhcnt3aW5k b3d9J3MgZnJhbWUuCiAKIFRoZSBiZWhhdmlvciBvZiB0aGlzIGZ1bmN0aW9uIG1heSBiZSBh bHRlcmVkIGJ5IHRoZSB3aW5kb3cgcGFyYW1ldGVycwogb2YgQHZhcnt3aW5kb3d9LCBzbyBs b25nIGFzIHRoZSB2YXJpYWJsZQpAQCAtMjA0OCw2ICsyMDk3LDE1NyBAQCBSZWNvbWJpbmlu ZyBXaW5kb3dzCiB3aW5kb3dzLgogCiAKK0Bub2RlIFJlc3VycmVjdGluZyBkZWxldGVkIHdp bmRvd3MKK0BzZWN0aW9uIFJlc3VycmVjdGluZyBkZWxldGVkIHdpbmRvd3MKK0BjaW5kZXgg cmVzdXJyZWN0aW5nIGRlbGV0ZWQgd2luZG93cworCitBZnRlciBhIHdpbmRvdyBoYXMgYmVl biBkZWxldGVkIChAcHhyZWZ7RGVsZXRpbmcgV2luZG93c30pIGl0IGNhbm5vdCBiZQordXNl ZCBhbnkgbW9yZSBieSBmdW5jdGlvbnMgdGhhdCByZXF1aXJlIGEgdmFsaWQgd2luZG93IGFz IHRoZWlyIGFyZ3VtZW50CitldmVuIGlmIHNvbWUgTGlzcCB2YXJpYWJsZSBzdGlsbCByZWZl cmVuY2VzIHRoYXQgd2luZG93LiAgV2hlbiB0aGUgbGFzdAorcmVmZXJlbmNlIHRvIGEgd2lu ZG93IGhhcyBjZWFzZWQgdG8gZXhpc3QsIHRoZSB3aW5kb3cncyBMaXNwIG9iamVjdCB3aWxs CitiZSBldmVudHVhbGx5IHJlY3ljbGVkIGJ5IHRoZSBnYXJiYWdlIGNvbGxlY3Rvci4KKwor VGhlcmUgYXJlIHR3byB3YXlzIHRvIHJlc3VycmVjdCBhIGRlbGV0ZWQgd2luZG93IHdob3Nl IG9iamVjdCBoYXMgbm90CitiZWVuIHlldCByZWN5Y2xlZCBieSB0aGUgY29sbGVjdG9yOiBU aGUgZmlyc3QgaXMgdG8ga2VlcCBhIHJlZmVyZW5jZSB0bwordGhhdCB3aW5kb3cgaW4gYSBz YXZlZCB3aW5kb3cgY29uZmlndXJhdGlvbiAoQHB4cmVme1dpbmRvdworQ29uZmlndXJhdGlv bnN9KSBhbmQgdGhlbiBjYWxsIEBjb2Rle3NldC13aW5kb3ctY29uZmlndXJhdGlvbn0gd2l0 aCB0aGF0Citjb25maWd1cmF0aW9uIGFzIGFyZ3VtZW50LiAgVGhlIHNlY29uZCBvbmUgaXMg dG8ga2VlcCBhIHJlZmVyZW5jZSB0bwordGhhdCB3aW5kb3cgaW4gYSB2YXJpYWJsZSBvciBs ZXQtYmluZCBpdCBhbmQgdGhlbiB1c2UgdGhhdCByZWZlcmVuY2UgYXMKK0B2YXJ7cmVmZXJ9 IGFyZ3VtZW50IGluIEBjb2Rle3NwbGl0LXdpbmRvd30gKEBweHJlZntTcGxpdHRpbmcgV2lu ZG93c30pLgorCitUaGUgbWFqb3IgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZXNlIHR3byBpcyB0 aGF0CitAY29kZXtzZXQtd2luZG93LWNvbmZpZ3VyYXRpb259IHJlc3RvcmVzIHRoZSBmcmFt ZSBsYXlvdXQgdGhhdCBleGlzdGVkCitiZWZvcmUgZGVsZXRpbmcgdGhlIHdpbmRvdy4gIFRo ZSBAY29kZXtzcGxpdC13aW5kb3d9IGFwcHJvYWNoLCBvbiB0aGUKK290aGVyIGhhbmQsIGFs bG93cyBmb3IgYXJiaXRyYXJ5IHZhcmlhdGlvbnMgb2YgdGhlIGxheW91dC4KKworQ29uc2lk ZXIgdGhlIGZvbGxvd2luZyBleGFtcGxlIHN0YXJ0aW5nIHdpdGggYSBmcmFtZSBjb250YWlu aW5nIGEgc2luZ2xlCit3aW5kb3cgc2hvd2luZyB0aGUgYnVmZmVyIEBmaWxleypzY3JhdGNo Kn06CisKK0BleGFtcGxlCitAZ3JvdXAKKyhsZXQqICgob2xkIChzZWxlY3RlZC13aW5kb3cp KQorICAgICAgIChuZXcgKHNwbGl0LXdpbmRvdyBvbGQgbmlsICdyaWdodCkpCisgICAgICAg b3ZlcmxheSkKKyAgKHdpdGgtY3VycmVudC1idWZmZXIgKGdldC1idWZmZXItY3JlYXRlICIq TWVzc2FnZXMqIikKKyAgICAoc2V0LXdpbmRvdy1idWZmZXIgbmV3IChjdXJyZW50LWJ1ZmZl cikpCisgICAgKHNldHEgb3ZlcmxheSAobWFrZS1vdmVybGF5IChwb2ludC1taW4pIChwb2lu dC1tYXgpKSkKKyAgICAob3ZlcmxheS1wdXQgb3ZlcmxheSAnZmFjZSAnaGlnaGxpZ2h0KQor ICAgIChvdmVybGF5LXB1dCBvdmVybGF5ICd3aW5kb3cgbmV3KQorICAgIChtZXNzYWdlICJu ZXcgJXMgcGFyZW50ICVzIiBuZXcgKHdpbmRvdy1wYXJlbnQgbmV3KSkKKyAgICAoc2l0LWZv ciAzKSkKKyAgKGRlbGV0ZS13aW5kb3cgbmV3KQorICAoc2V0cSBuZXcgKHNwbGl0LXdpbmRv dyBvbGQgbmlsICdsZWZ0KSkKKyAgKHNldC13aW5kb3ctYnVmZmVyIG5ldyAoZ2V0LWJ1ZmZl ci1jcmVhdGUgIipNZXNzYWdlcyoiKSkKKyAgKGZvcm1hdCAibmV3ICVzIHBhcmVudCAlcyIg bmV3ICh3aW5kb3ctcGFyZW50IG5ldykpKQorQGVuZCBncm91cAorQGVuZCBleGFtcGxlCisK K1doZW4geW91IHJ1biB0aGF0IGNvZGUgaW4gQGZpbGV7KnNjcmF0Y2gqfSBpdCB3aWxsIGZp cnN0IHNwbGl0IHRoZQord2luZG93IHNob3dpbmcgQGZpbGV7KnNjcmF0Y2gqfSB0byBkaXNw bGF5IEBmaWxleypNZXNzYWdlcyp9IGluIGEgbmV3Cit3aW5kb3cgb24gdGhlIHJpZ2h0LiAg SXQgYWxzbyBzZXRzIHVwIGFuIG92ZXJsYXkgd2l0aCBhIHdpbmRvdyBwcm9wZXJ0eQordG8g aGlnaGxpZ2h0IHRoZSB0ZXh0IG9mIEBmaWxleypNZXNzYWdlcyp9IGluIHRoZSBuZXcgd2lu ZG93IGFuZAorZGlzcGxheXMgYSBtZXNzYWdlIHNob3dpbmcgdGhlIG5ldyB3aW5kb3cgYW5k IGl0cyBwYXJlbnQgaW4gdGhlIHdpbmRvdwordHJlZS4gIEl0IHRoZW4gZGVsZXRlcyB0aGUg bmV3IHdpbmRvdyBhbmQgcmVzdXJyZWN0cyBpdCBvbiB0aGUgbGVmdCBvZgordGhlIEBmaWxl eypzY3JhdGNoKn0gd2luZG93IGFnYWluIGRpc3BsYXlpbmcgYSBtZXNzYWdlIHNob3dpbmcg dGhlIG5ldword2luZG93IGFuZCBpdHMgcGFyZW50IGluIHRoZSB3aW5kb3cgdHJlZS4KKwor Tm90ZSB0aGF0IGJvdGgsIG5ldyB3aW5kb3cgYW5kIGl0cyBwYXJlbnQgaGF2ZSBjaGFuZ2Vk IGFmdGVyIG1vdmluZyB0aGUKK0BmaWxleypNZXNzYWdlcyp9IHdpbmRvdyB0byB0aGUgbGVm dC4gIEFsc28sIHRoZSBoaWdobGlnaHRpbmcgZGlzYXBwZWFycworYmVjYXVzZSBhbnkgcHJv cGVydGllcyBzZXQgdXAgZm9yIHRoZSBuZXcgd2luZG93IG9uIHRoZSByaWdodCBhcmUgbG9z dAord2hlbiB0aGUgbmV3IHdpbmRvdyBpcyByZS1jcmVhdGVkIG9uIHRoZSBsZWZ0LgorCitU aGUgZm9sbG93aW5nIGNvZGUgdXNlcyB0aGUgQHZhcntyZWZlcn0gYXJndW1lbnQgb2YgQGNv ZGV7c3BsaXQtd2luZG93fQoraW5zdGVhZC4KKworQGV4YW1wbGUKK0Bncm91cAorKGxldCog KChvbGQgKHNlbGVjdGVkLXdpbmRvdykpCisgICAgICAgKG5ldyAoc3BsaXQtd2luZG93IG9s ZCBuaWwgJ3JpZ2h0KSkKKyAgICAgICBvdmVybGF5KQorICAod2l0aC1jdXJyZW50LWJ1ZmZl ciAoZ2V0LWJ1ZmZlci1jcmVhdGUgIipNZXNzYWdlcyoiKQorICAgIChzZXQtd2luZG93LWJ1 ZmZlciBuZXcgKGN1cnJlbnQtYnVmZmVyKSkKKyAgICAoc2V0cSBvdmVybGF5IChtYWtlLW92 ZXJsYXkgKHBvaW50LW1pbikgKHBvaW50LW1heCkpKQorICAgIChvdmVybGF5LXB1dCBvdmVy bGF5ICdmYWNlICdoaWdobGlnaHQpCisgICAgKG92ZXJsYXktcHV0IG92ZXJsYXkgJ3dpbmRv dyBuZXcpCisgICAgKG1lc3NhZ2UgIm5ldyAlcyBwYXJlbnQgJXMiIG5ldyAod2luZG93LXBh cmVudCBuZXcpKQorICAgIChzaXQtZm9yIDMpKQorICAoZGVsZXRlLXdpbmRvdyBuZXcpCisg IChzcGxpdC13aW5kb3cgb2xkIG5pbCAnbGVmdCBuaWwgbmV3KQorICAoZm9ybWF0ICJuZXcg JXMgcGFyZW50ICVzIiBuZXcgKHdpbmRvdy1wYXJlbnQgbmV3KSkpCitAZW5kIGdyb3VwCitA ZW5kIGV4YW1wbGUKKworTm90ZSB0aGF0IGFsbCBwcm9wZXJ0aWVzIG9mIHRoZSByZXN1cnJl Y3RlZCB3aW5kb3cgbGlrZSBpdHMgZGVjb3JhdGlvbnMsCitwYXJhbWV0ZXJzIGFzIHdlbGwg YXMgYW55IG92ZXJsYXlzIHdpdGggYSB3aW5kb3cgcHJvcGVydHkgYXJlIHByZXNlcnZlZAor YXMgaWYgdGhhdCB3aW5kb3cgaGFkIG5ldmVyIGJlZW4gZGVsZXRlZC4gIFRoZSBvbmx5IHRo aW5ncyB0aGF0IGNoYW5nZWQKK2FyZSBpdHMgcG9zaXRpb24gaW4gdGhlIHdpbmRvdyB0cmVl IGFuZCBjb25zZXF1ZW50bHkgdGhlIHZhbHVlcyByZXR1cm5lZAorYnkgQGNvZGV7d2luZG93 LWxlZnQtY2hpbGR9IG9mIGl0cyBwYXJlbnQgd2luZG93IGFzIHdlbGwgYXMgdGhlIHZhbHVl cworcmV0dXJuZWQgYnkgQGNvZGV7d2luZG93LXByZXYtc2libGluZ30gYW5kIEBjb2Rle3dp bmRvdy1uZXh0LXNpYmxpbmd9IG9mCit0aGUgd2luZG93IGFuZCBpdHMgc2libGluZy4KKwor VGhlIGZvbGxvd2luZyBjb2RlIHBhc3NlcyBib3RoLCB0aGUgbmV3IHdpbmRvdyBvbiB0aGUg cmlnaHQgYW5kIGl0cworcGFyZW50LCB2aWEgdGhlIEB2YXJ7cmVmZXJ9IGFyZ3VtZW50IHRv IEBjb2Rle3NwbGl0LXdpbmRvd306IGluc3RlYWQuCisKK0BleGFtcGxlCitAZ3JvdXAKKyhs ZXQqICgob2xkIChzZWxlY3RlZC13aW5kb3cpKQorICAgICAgIChuZXcgKHNwbGl0LXdpbmRv dyBvbGQgbmlsICdyaWdodCkpCisgICAgICAgKHBhcmVudCAod2luZG93LXBhcmVudCBuZXcp KQorICAgICAgIG92ZXJsYXkpCisgICh3aXRoLWN1cnJlbnQtYnVmZmVyIChnZXQtYnVmZmVy LWNyZWF0ZSAiKk1lc3NhZ2VzKiIpCisgICAgKHNldC13aW5kb3ctYnVmZmVyIG5ldyAoY3Vy cmVudC1idWZmZXIpKQorICAgIChzZXRxIG92ZXJsYXkgKG1ha2Utb3ZlcmxheSAocG9pbnQt bWluKSAocG9pbnQtbWF4KSkpCisgICAgKG92ZXJsYXktcHV0IG92ZXJsYXkgJ2ZhY2UgJ2hp Z2hsaWdodCkKKyAgICAob3ZlcmxheS1wdXQgb3ZlcmxheSAnd2luZG93IG5ldykKKyAgICAo bWVzc2FnZSAibmV3ICVzIHBhcmVudCAlcyIgbmV3ICh3aW5kb3ctcGFyZW50IG5ldykpCisg ICAgKHNpdC1mb3IgMykpCisgIChkZWxldGUtd2luZG93IG5ldykKKyAgKHNwbGl0LXdpbmRv dyBvbGQgbmlsICdsZWZ0IG5pbCAoY29ucyBuZXcgcGFyZW50KSkKKyAgKGZvcm1hdCAibmV3 ICVzIHBhcmVudCAlcyIgbmV3ICh3aW5kb3ctcGFyZW50IG5ldykpKQorQGVuZCBncm91cAor QGVuZCBleGFtcGxlCisKK05vdGUgdGhhdCB0aGUgcGFyZW50IHdpbmRvdyBoYXMgYmVlbiBy ZXN1cnJlY3RlZCBhbG9uZyB3aXRoIHRoZSBuZXcKK3dpbmRvdy4KKworUmVzdXJyZWN0aW5n IGRlYWQgd2luZG93cyBpcyB1c2VmdWwgdG8gcHJlc2VydmUgdGhlIGlkZW50aXR5IG9mIHdp bmRvd3MKK2luIGFjdGlvbnMgdGhhdCBhcmUgc3VwcG9zZWQgdG8gZG8gdGhhdCBsaWtlIG1v dmluZyB3aW5kb3dzIGFyb3VuZCBvbiBhCitmcmFtZSBvciBoaWRpbmcgdGhlbSB0ZW1wb3Jh cmlseS4gIEFueSBwcm9wZXJ0aWVzIG9mIHN1Y2ggYSB3aW5kb3cgbGlrZQoraXRzIGRlY29y YXRpb25zLCB0aGUgYnVmZmVyIGl0IGhhcyBzaG93biBwcmV2aW91c2x5LCB0aGF0IGJ1ZmZl cidzIHN0YXJ0CithbmQgcG9pbnQgcG9zaXRpb24gaW4gdGhlIHdpbmRvdywgdGhlIHdpbmRv dydzIGRlZGljYXRlZCBzdGF0dXMsIGl0cworY3Vyc29yIHR5cGUgYXJlIGxlZnQgdW50b3Vj aGVkIGFuZCB0aGVyZSdzIG5vIG5lZWQgdG8gcmVjcmVhdGUgdGhlbSBmcm9tCitzY3JhdGNo LiAgRm9yIGludGVybmFsIHdpbmRvd3MsIHRoZSB2YWx1ZSBvZiB0aGF0IHdpbmRvdydzIGNv bWJpbmF0aW9uCitsaW1pdCBpcyBwcmVlcnZlZCB3aGljaCBtZWFucyB0aGF0IHRoZSB3aW5k b3cgY2FuIGJlIHJlY29tYmluZWQKKyhAcHhyZWZ7UmVjb21iaW5pbmcgV2luZG93c30pIGFz IGJlZm9yZS4KKworRHVlIHRvIGNlcnRhaW4gbGltaXRhdGlvbnMgaW4gdGhlIHdheSB3aW5k b3dzIGNhbiBiZSBzcGxpdCwgbWFraW5nIGEKK3NlcXVlbmNlIG9mIGNoYW5nZXMgdG8gdGhl IHdpbmRvdyBzdHJ1Y3R1cmUgY2FuIGJlIG1vcmUgdHJpY2t5LiAgSXQncworc3RpbGwgZmFp cmx5IHNpbXBsZSB0byByb3RhdGUgdGhyZWUgd2luZG93cyBhcyBmb2xsb3dzOgorCitAZXhh bXBsZQorQGdyb3VwCisobGV0KiAoKG9sZCAoc2VsZWN0ZWQtd2luZG93KSkKKyAgICAgICAo bmV3LTEgKHNwbGl0LXdpbmRvdyBvbGQgbmlsICdyaWdodCkpCisgICAgICAgKHBhcmVudC0x ICh3aW5kb3ctcGFyZW50IG9sZCkpCisgICAgICAgKG5ldy0yIChzcGxpdC13aW5kb3cgbmV3 LTEgbmlsICdiZWxvdykpCisgICAgICAgKHBhcmVudC0yICh3aW5kb3ctcGFyZW50IG5ldy0y KSkKKyAgICAgICBuZXcpCisgIChtZXNzYWdlICJvbGQgJXMgKCVzKSAuLiBuZXctMSAlcyAo JXMpIC4uIG5ldy0yICVzICglcykiCisJICAgb2xkICh3aW5kb3ctcGFyZW50IG9sZCkKKwkg ICBuZXctMSAod2luZG93LXBhcmVudCBuZXctMSkKKwkgICBuZXctMiAod2luZG93LXBhcmVu dCBuZXctMikpCisgIChzaXQtZm9yIDMpCisgIChkZWxldGUtb3RoZXItd2luZG93cyBvbGQp CisgIChzZXRxIG5ldyAoc3BsaXQtd2luZG93IG9sZCBuaWwgJ2JlbG93IG5pbCAoY29ucyBu ZXctMSBwYXJlbnQtMSkpKQorICAoc3BsaXQtd2luZG93IG5ldyBuaWwgJ3JpZ2h0IG5pbCAo Y29ucyBuZXctMiBwYXJlbnQtMikpCisgIChmb3JtYXQgIm9sZCAlcyAoJXMpIC4uIG5ldy0x ICVzICglcykgLi4gbmV3LTIgJXMgKCVzKSIKKwkgIG9sZCAod2luZG93LXBhcmVudCBvbGQp CisJICBuZXctMSAod2luZG93LXBhcmVudCBuZXctMSkKKwkgIG5ldy0yICh3aW5kb3ctcGFy ZW50IG5ldy0yKSkpCitAZW5kIGdyb3VwCitAZW5kIGV4YW1wbGUKKworCiBAbm9kZSBDeWNs aWMgV2luZG93IE9yZGVyaW5nCiBAc2VjdGlvbiBDeWNsaWMgT3JkZXJpbmcgb2YgV2luZG93 cwogQGNpbmRleCBjeWNsaWMgb3JkZXJpbmcgb2Ygd2luZG93cwpAQCAtNzEyNiwxMyArNzMy NiwxNiBAQCBXaW5kb3cgSG9va3MKIHdpbmRvdy4KIAogQGRlZnVuIHdpbmRvdy1vbGQtYnVm ZmVyICZvcHRpb25hbCB3aW5kb3cKLVRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgYnVmZmVy IHNob3duIGluIEB2YXJ7d2luZG93fSBhdCB0aGUgbGFzdAotdGltZSB3aW5kb3cgY2hhbmdl IGZ1bmN0aW9ucyB3ZXJlIHJ1biBmb3IgQHZhcnt3aW5kb3d9J3MgZnJhbWUuICBJZiBpdAot cmV0dXJucyBAY29kZXtuaWx9LCBAdmFye3dpbmRvd30gaGFzIGJlZW4gY3JlYXRlZCBhZnRl ciB0aGF0LiAgSWYgaXQKLXJldHVybnMgQGNvZGV7dH0sIEB2YXJ7d2luZG93fSB3YXMgbm90 IHNob3duIGF0IHRoYXQgdGltZSBidXQgaGFzIGJlZW4KLXJlc3RvcmVkIGZyb20gYSBwcmV2 aW91c2x5IHNhdmVkIHdpbmRvdyBjb25maWd1cmF0aW9uIGFmdGVyd2FyZHMuCi1PdGhlcndp c2UsIHRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIGJ1ZmZlciBzaG93biBieSBAdmFye3dpbmRv d30gYXQKLXRoYXQgdGltZS4KK1RoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgYnVmZmVyIHNo b3duIGluIEB2YXJ7d2luZG93fSBhdCB0aGUgbGFzdCB0aW1lCit3aW5kb3cgY2hhbmdlIGZ1 bmN0aW9ucyB3ZXJlIHJ1biBmb3IgQHZhcnt3aW5kb3d9J3MgZnJhbWUuICBJZiBpdAorcmV0 dXJucyBAY29kZXtuaWx9LCBAdmFye3dpbmRvd30gaXMgZWl0aGVyIGFuIGludGVybmFsIHdp bmRvdyBvciBoYXMKK2JlZW4gY3JlYXRlZCBhZnRlciB0aGF0LiAgSWYgaXQgcmV0dXJucyBA Y29kZXt0fSwgQHZhcnt3aW5kb3d9IHdhcyBub3QKK3Nob3duIGF0IHRoYXQgdGltZSBidXQg aGFzIGJlZW4gcmVzdG9yZWQgZnJvbSBhIHByZXZpb3VzbHkgc2F2ZWQgd2luZG93Citjb25m aWd1cmF0aW9uIGFmdGVyd2FyZHMuICBPdGhlcndpc2UsIHRoZSByZXR1cm4gdmFsdWUgaXMg dGhlIGJ1ZmZlcgorc2hvd24gYnkgQHZhcnt3aW5kb3d9IGF0IHRoYXQgdGltZS4gIEFzIGEg c3BlY2lhbCBjYXNlLCBpZiBAdmFye3dpbmRvd30KK2hhcyBiZWVuIGRlbGV0ZWQsIHRoaXMg ZnVuY3Rpb24gcmV0dXJucyB0aGUgbGFzdCBidWZmZXIgQHZhcnt3aW5kb3d9IGhhZAorc2hv d24gYXQgdGhhdCB0aW1lLiAgQHZhcnt3aW5kb3d9IGNhbiBiZSBhbnkgd2luZG93IGFuZCBk ZWZhdWx0cyB0byB0aGUKK3NlbGVjdGVkIG9uZS4KIEBlbmQgZGVmdW4KIAogQGRlZnVuIHdp bmRvdy1vbGQtcGl4ZWwtd2lkdGggJm9wdGlvbmFsIHdpbmRvdwpkaWZmIC0tZ2l0IGEvbGlz cC93aW5kb3cuZWwgYi9saXNwL3dpbmRvdy5lbAppbmRleCBiNTA3NzBjYmQ3ZS4uMDYwNzE2 ZGY5MzYgMTAwNjQ0Ci0tLSBhL2xpc3Avd2luZG93LmVsCisrKyBiL2xpc3Avd2luZG93LmVs CkBAIC01NTExLDU0ICs1NTExLDk1IEBAIHdpbmRvdy0tY29tYmluYXRpb24tcmVzaXphYmxl CiAgICAgICAoc2V0cSBzaWJsaW5nICh3aW5kb3ctbmV4dC1zaWJsaW5nIHNpYmxpbmcpKSkK ICAgICAoLyBzaXplICgxKyBudW1iZXIpKSkpCiAKLShkZWZ1biBzcGxpdC13aW5kb3cgKCZv cHRpb25hbCB3aW5kb3cgc2l6ZSBzaWRlIHBpeGVsd2lzZSkKKyhkZWZ1biBzcGxpdC13aW5k b3cgKCZvcHRpb25hbCB3aW5kb3cgc2l6ZSBzaWRlIHBpeGVsd2lzZSByZWZlcikKICAgIk1h a2UgYSBuZXcgd2luZG93IGFkamFjZW50IHRvIFdJTkRPVy4KIFdJTkRPVyBtdXN0IGJlIGEg dmFsaWQgd2luZG93IGFuZCBkZWZhdWx0cyB0byB0aGUgc2VsZWN0ZWQgb25lLgogUmV0dXJu IHRoZSBuZXcgd2luZG93IHdoaWNoIGlzIGFsd2F5cyBhIGxpdmUgd2luZG93LgogCi1PcHRp b25hbCBhcmd1bWVudCBTSVpFIGEgcG9zaXRpdmUgbnVtYmVyIG1lYW5zIG1ha2UgV0lORE9X IFNJWkUKLWxpbmVzIG9yIGNvbHVtbnMgdGFsbC4gIElmIFNJWkUgaXMgbmVnYXRpdmUsIG1h a2UgdGhlIG5ldyB3aW5kb3cKLS1TSVpFIGxpbmVzIG9yIGNvbHVtbnMgdGFsbC4gIElmIGFu ZCBvbmx5IGlmIFNJWkUgaXMgbm9uLW5pbCwgaXRzCi1hYnNvbHV0ZSB2YWx1ZSBjYW4gYmUg bGVzcyB0aGFuIGB3aW5kb3ctbWluLWhlaWdodCcgb3IKLWB3aW5kb3ctbWluLXdpZHRoJzsg c28gdGhpcyBjb21tYW5kIGNhbiBtYWtlIGEgbmV3IHdpbmRvdyBhcwotc21hbGwgYXMgb25l IGxpbmUgb3IgdHdvIGNvbHVtbnMuICBTSVpFIGRlZmF1bHRzIHRvIGhhbGYgb2YKLVdJTkRP VydzIHNpemUuCitJZiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgU0laRSBpcyBhIHBvc2l0aXZl IG51bWJlciwgc2hyaW5rIFdJTkRPVwordG8gU0laRSBsaW5lcyBvciBjb2x1bW5zIGluIG9y ZGVyIHRvIGFjY29tbW9kYXRlIHRoZSBuZXcgd2luZG93LgorSWYgU0laRSBpcyBhIG5lZ2F0 aXZlIG51bWJlciwgbWFrZSB0aGUgbmV3IHdpbmRvdyAtU0laRSBsaW5lcyBvcgorY29sdW1u cyB0YWxsLiAgSW4gYm90aCBjYXNlcywgdGhlIGFic29sdXRlIHZhbHVlIG9mIFNJWkUgY2Fu IGJlCitsZXNzIHRoYW4gYHdpbmRvdy1taW4taGVpZ2h0JyBvciBgd2luZG93LW1pbi13aWR0 aCc7IHNvIHRoaXMKK2Z1bmN0aW9uIGNhbiBtYWtlIGEgbmV3IHdpbmRvdyBhcyBzbWFsbCBh cyBvbmUgbGluZSBvciB0d28KK2NvbHVtbnMuICBJZiBTSVpFIGlzIG5vdCBhIG51bWJlciwg bWFrZSB0aGUgbmV3IHdpbmRvdyBvY2N1cHkKK2hhbGYgb2YgV0lORE9XJ3Mgc2l6ZS4KIAog T3B0aW9uYWwgdGhpcmQgYXJndW1lbnQgU0lERSBuaWwgKG9yIGBiZWxvdycpIHNwZWNpZmll cyB0aGF0IHRoZQotbmV3IHdpbmRvdyBzaGFsbCBiZSBsb2NhdGVkIGJlbG93IFdJTkRPVy4g IFNJREUgYGFib3ZlJyBtZWFucyB0aGUKLW5ldyB3aW5kb3cgc2hhbGwgYmUgbG9jYXRlZCBh Ym92ZSBXSU5ET1cuICBJbiBib3RoIGNhc2VzIFNJWkUKK25ldyB3aW5kb3cgc2hhbGwgYmUg bWFkZSBiZWxvdyBXSU5ET1cuICBTSURFIGBhYm92ZScgbWVhbnMgdGhlCituZXcgd2luZG93 IHNoYWxsIGJlIG1hZGUgYWJvdmUgV0lORE9XLiAgSW4gYm90aCBjYXNlcyBTSVpFCiBzcGVj aWZpZXMgdGhlIG5ldyBudW1iZXIgb2YgbGluZXMgZm9yIFdJTkRPVyAob3IgdGhlIG5ldyB3 aW5kb3cKIGlmIFNJWkUgaXMgbmVnYXRpdmUpIGluY2x1ZGluZyBzcGFjZSByZXNlcnZlZCBm b3IgdGhlIG1vZGUgYW5kL29yCi1oZWFkZXIgbGluZS4KK2hlYWRlciBsaW5lLCBzY3JvbGwg YmFycyBhbmQgd2luZG93IGRpdmlkZXJzLgogCi1TSURFIHQgKG9yIGByaWdodCcpIHNwZWNp ZmllcyB0aGF0IHRoZSBuZXcgd2luZG93IHNoYWxsIGJlCi1sb2NhdGVkIG9uIHRoZSByaWdo dCBzaWRlIG9mIFdJTkRPVy4gIFNJREUgYGxlZnQnIG1lYW5zIHRoZSBuZXcKLXdpbmRvdyBz aGFsbCBiZSBsb2NhdGVkIG9uIHRoZSBsZWZ0IG9mIFdJTkRPVy4gIEluIGJvdGggY2FzZXMK LVNJWkUgc3BlY2lmaWVzIHRoZSBuZXcgbnVtYmVyIG9mIGNvbHVtbnMgZm9yIFdJTkRPVyAo b3IgdGhlIG5ldwotd2luZG93IHByb3ZpZGVkIFNJWkUgaXMgbmVnYXRpdmUpIGluY2x1ZGlu ZyBzcGFjZSByZXNlcnZlZCBmb3IKLWZyaW5nZXMgYW5kIHRoZSBzY3JvbGxiYXIgb3IgYSBk aXZpZGVyIGNvbHVtbi4KK1NJREUgdCAob3IgYHJpZ2h0Jykgc3BlY2lmaWVzIHRoYXQgdGhl IG5ldyB3aW5kb3cgc2hhbGwgYmUgbWFkZQorb24gdGhlIHJpZ2h0IHNpZGUgb2YgV0lORE9X LiAgU0lERSBgbGVmdCcgbWVhbnMgdGhlIG5ldyB3aW5kb3cKK3NoYWxsIGJlIG1hZGUgb24g dGhlIGxlZnQgb2YgV0lORE9XLiAgSW4gYm90aCBjYXNlcywgU0laRQorc3BlY2lmaWVzIHRo ZSBuZXcgbnVtYmVyIG9mIGNvbHVtbnMgZm9yIFdJTkRPVyAob3IgdGhlIG5ldyB3aW5kb3cK K3Byb3ZpZGVkIFNJWkUgaXMgbmVnYXRpdmUpIGluY2x1ZGluZyBhbnkgc3BhY2UgcmVzZXJ2 ZWQgZm9yCitmcmluZ2VzLCBzY3JvbGwgYmFyIGFuZCB3aW5kb3cgZGl2aWRlcnMuCiAKIEZv ciBjb21wYXRpYmlsaXR5IHJlYXNvbnMsIFNJREUgYHVwJyBhbmQgYGRvd24nIGFyZSBpbnRl cnByZXRlZAogYXMgYGFib3ZlJyBhbmQgYGJlbG93Jy4gIEFueSBvdGhlciBub24tbmlsIHZh bHVlIGZvciBTSURFIGlzCiBjdXJyZW50bHkgaGFuZGxlZCBsaWtlIHQgKG9yIGByaWdodCcp LgogCitBcyBhIHJ1bGUsIGlmIFdJTkRPVyBhbHJlYWR5IGZvcm1zIGEgY29tYmluYXRpb24g dGhhdCBtYXRjaGVzIHRoZSBTSURFCitwYXJhbWV0ZXIgYW5kIGB3aW5kb3ctY29tYmluYXRp b24tbGltaXQnIGlzIG5pbCwgcmV1c2UgV0lORE9XJ3MgcGFyZW50CitpbiB0aGUgd2luZG93 IHRyZWUgYXMgcGFyZW50IG9mIHRoZSBuZXcgd2luZG93LiAgSWYgV0lORE9XIGlzIGluIGEK K2NvbWJpbmF0aW9uIHRoYXQgaXMgb3J0aG9nb25hbCB0byB0aGUgU0lERSBwYXJhbWV0ZXIg b3IgaWYKK2B3aW5kb3ctY29tYmluYXRpb24tbGltaXQnIGlzIG5vbi1uaWwsIG1ha2UgYSBu ZXcgcGFyZW50IHdpbmRvdyB0aGF0CityZXBsYWNlcyBXSU5ET1cgaW4gdGhlIHdpbmRvdyB0 cmVlIGFuZCBtYWtlIFdJTkRPVyBhbmQgdGhlIG5ldyB3aW5kb3cKK2l0cyBzb2xlIGNoaWxk IHdpbmRvd3MuICBUaGlzIHN0YW5kYXJkIGJlaGF2aW9yIGNhbiBiZSBvdmVycmlkZGVuIHZp YQordGhlIFJFRkVSIGFyZ3VtZW50LgorCiBQSVhFTFdJU0UsIGlmIG5vbi1uaWwsIG1lYW5z IHRvIGludGVycHJldCBTSVpFIHBpeGVsd2lzZS4KIAorSWYgdGhlIG9wdGlvbmFsIGZpZnRo IGFyZ3VtZW50IFJFRkVSIGlzIG5vbi1uaWwsIGl0IHNwZWNpZmllcyBhCityZWZlcmVuY2Ug d2luZG93IHVzZWQgZm9yIHNldHRpbmcgdXAgcHJvcGVydGllcyBvZiB0aGUgbmV3IHdpbmRv dy4KK1JFRkVSIGNhbiBiZSBlaXRoZXIgYSB3aW5kb3cgb3IgYSBjb25zIGNlbGwgb2YgdHdv IHdpbmRvd3MuCisKK0lmIFJFRkVSIGlzIGEgY29ucyBjZWxsLCBpdHMgY2FyIGhhcyB0byBz cGVjaWZ5IGEgZGVsZXRlZCwgZm9ybWVyIGxpdmUKK3dpbmRvdyAtIGEgd2luZG93IHRoYXQg aGFzIHNob3duIGEgYnVmZmVyIGJlZm9yZSAtIG9uIHRoZSBzYW1lIGZyYW1lIGFzCitXSU5E T1cuICBUaGF0IGJ1ZmZlciBtdXN0IGJlIHN0aWxsIGxpdmUuICBUaGUgY2RyIGhhcyB0byBz cGVjaWZ5IGEKK2RlbGV0ZWQgd2luZG93IHRoYXQgd2FzIGEgcGFyZW50IHdpbmRvdyBvbiB0 aGUgc2FtZSBmcmFtZSBhcyBXSU5ET1cKK2JlZm9yZSBpdCB3YXMgZGVsZXRlZC4gIEluIHRo aXMgY2FzZSwgcmF0aGVyIHRoZW4gbWFraW5nIG5ldyB3aW5kb3dzLAorcmVwbGFjZSBXSU5E T1cgd2l0aCB0aGUgY2RyIG9mIFJFRkVSIGluIHRoZSB3aW5kb3cgdHJlZSBhbmQgbWFrZSBX SU5ET1cKK2FuZCBSRUZFUidzIGNhciBpdHMgbmV3IGNoaWxkIHdpbmRvd3MuICBCdWZmZXIs IHN0YXJ0IGFuZCBwb2ludAorcG9zaXRpb25zIG9mIFJFRkVSJ3MgY2FyIGFyZSBzZXQgdG8g dGhlIHZhbHVlcyB0aGV5IGhhZCBpbW1lZGlhdGVseQorYmVmb3JlIFJFRkVSJ3MgY2FyIHdh cyBkZWxldGVkIHRoZSBsYXN0IHRpbWUuICBEZWNvcmF0aW9ucyBhbmQKK3BhcmFtZXRlcnMg cmVtYWluIHVuYWx0ZXJlZCBmcm9tIHRoZWlyIHZhbHVlcyBiZWZvcmUgUkVGRVIncyBjYXIg YW5kIGNkcgord2VyZSBkZWxldGVkLgorCitBbHRlcm5hdGl2ZWx5IFJFRkVSIG1heSBzcGVj aWZ5IGEgZGVsZXRlZCwgZm9ybWVyIGxpdmUgd2luZG93IC0gYSB3aW5kb3cKK3RoYXQgaGFz IHNob3duIGEgYnVmZmVyIGJlZm9yZSAtIG9uIHRoZSBzYW1lIGZyYW1lIGFzIFdJTkRPVy4g IEluIHRoaXMKK2Nhc2UgZG8gbm90IG1ha2UgYSBuZXcgd2luZG93IGJ1dCByYXRoZXIgbWFr ZSBSRUZFUiBsaXZlIGFnYWluIGFuZAoraW5zZXJ0IGl0IGludG8gdGhlIHdpbmRvdyB0cmVl IGF0IHRoZSBwb3NpdGlvbiBhbmQgd2l0aCB0aGUgc2l6ZXMgdGhlCituZXcgd2luZG93IHdv dWxkIGhhdmUgYmVlbiBnaXZlbi4gIEJ1ZmZlciwgc3RhcnQgYW5kIHBvaW50IHBvc2l0aW9u cyBvZgorUkVGRVIgYXJlIHNldCB0byB0aGUgdmFsdWVzIHRoZXkgaGFkIGltbWVkaWF0ZWx5 IGJlZm9yZSBSRUZFUiB3YXMKK2RlbGV0ZWQgdGhlIGxhc3QgdGltZS4gIERlY29yYXRpb25z IGFuZCBwYXJhbWV0ZXJzIHJlbWFpbiB1bmFsdGVyZWQgZnJvbQordGhlaXIgdmFsdWVzIGJl Zm9yZSBSRUZFUiB3YXMgZGVsZXRlZC4gIFRocm93IGFuIGVycm9yIGlmIFJFRkVSJ3MgYnVm ZmVyCitoYXMgYmVlbiBkZWxldGVkIGFmdGVyIFJFRkVSIGl0c2VsZiB3YXMgZGVsZXRlZC4K KworT3RoZXJ3aXNlIFJFRkVSIG11c3Qgc3BlY2lmeSBhIGxpdmUgd2luZG93LiAgSW4gdGhp cyBjYXNlLCB0aGUgbmV3Cit3aW5kb3cgd2lsbCBpbmhlcml0IHByb3BlcnRpZXMgbGlrZSBi dWZmZXIsIHN0YXJ0IGFuZCBwb2ludCBwb3NpdGlvbiBhbmQKK3NvbWUgZGVjb3JhdGlvbnMg ZnJvbSBSRUZFUi4gIElmIFJFRkVSIGlzIG5pbCBvciBvbWl0dGVkLCB0aGVuIGlmIFdJTkRP VworaXMgbGl2ZSwgYW55IHN1Y2ggcHJvcGVydGllcyBhcmUgaW5oZXJpdGVkIGZyb20gV0lO RE9XLiAgSWYsIGhvd2V2ZXIsCitXSU5ET1cgaXMgYW4gaW50ZXJuYWwgd2luZG93LCB0aGUg bmV3IHdpbmRvdyB3aWxsIGluaGVyaXQgdGhlc2UKK3Byb3BlcnRpZXMgZnJvbSB0aGUgd2lu ZG93IHNlbGVjdGVkIG9uIFdJTkRPVydzIGZyYW1lLgorCiBJZiB0aGUgdmFyaWFibGUgYGln bm9yZS13aW5kb3ctcGFyYW1ldGVycycgaXMgbm9uLW5pbCBvciB0aGUKIGBzcGxpdC13aW5k b3cnIHBhcmFtZXRlciBvZiBXSU5ET1cgZXF1YWxzIHQsIGRvIG5vdCBwcm9jZXNzIGFueQot cGFyYW1ldGVycyBvZiBXSU5ET1cuICBPdGhlcndpc2UsIGlmIHRoZSBgc3BsaXQtd2luZG93 JyBwYXJhbWV0ZXIKLW9mIFdJTkRPVyBzcGVjaWZpZXMgYSBmdW5jdGlvbiwgY2FsbCB0aGF0 IGZ1bmN0aW9uIHdpdGggYWxsIHRocmVlCi1hcmd1bWVudHMgYW5kIHJldHVybiB0aGUgdmFs dWUgcmV0dXJuZWQgYnkgdGhhdCBmdW5jdGlvbi4KLQotT3RoZXJ3aXNlLCBpZiBXSU5ET1cg aXMgcGFydCBvZiBhbiBhdG9taWMgd2luZG93LCBcInNwbGl0XCIgdGhlCi1yb290IG9mIHRo YXQgYXRvbWljIHdpbmRvdy4gIFRoZSBuZXcgd2luZG93IGRvZXMgbm90IGJlY29tZSBhCi1t ZW1iZXIgb2YgdGhhdCBhdG9taWMgd2luZG93LgotCi1JZiBXSU5ET1cgaXMgbGl2ZSwgcHJv cGVydGllcyBvZiB0aGUgbmV3IHdpbmRvdyBsaWtlIG1hcmdpbnMgYW5kCi1zY3JvbGxiYXJz IGFyZSBpbmhlcml0ZWQgZnJvbSBXSU5ET1cuICBJZiBXSU5ET1cgaXMgYW4gaW50ZXJuYWwK LXdpbmRvdywgdGhlc2UgcHJvcGVydGllcyBhcyB3ZWxsIGFzIHRoZSBidWZmZXIgZGlzcGxh eWVkIGluIHRoZQotbmV3IHdpbmRvdyBhcmUgaW5oZXJpdGVkIGZyb20gdGhlIHdpbmRvdyBz ZWxlY3RlZCBvbiBXSU5ET1cncwotZnJhbWUuICBUaGUgc2VsZWN0ZWQgd2luZG93IGlzIG5v dCBjaGFuZ2VkIGJ5IHRoaXMgZnVuY3Rpb24uIgorcGFyYW1ldGVycyBvZiBXSU5ET1cuICBP dGhlcndpc2UsIGlmIHRoZSBgc3BsaXQtd2luZG93JyBwYXJhbWV0ZXIgb2YKK1dJTkRPVyBz cGVjaWZpZXMgYSBmdW5jdGlvbiwgY2FsbCB0aGF0IGZ1bmN0aW9uIHdpdGggdGhlIHRocmVl IGZpcnN0Cithcmd1bWVudHMgV0lORE9XLCBTSVpFIGFuZCBTSURFIGFuZCByZXR1cm4gdGhl IHZhbHVlIHJldHVybmVkIGJ5IHRoYXQKK2Z1bmN0aW9uLgorCitPdGhlcndpc2UsIGlmIFdJ TkRPVyBpcyBwYXJ0IG9mIGFuIGF0b21pYyB3aW5kb3csIFwic3BsaXRcIiB0aGUgcm9vdCBv ZgordGhhdCBhdG9taWMgd2luZG93LiAgVGhlIG5ldyB3aW5kb3cgZG9lcyBub3QgYmVjb21l IGEgbWVtYmVyIG9mIHRoYXQKK2F0b21pYyB3aW5kb3cuCisKK1RoZSBzZWxlY3RlZCB3aW5k b3cgYW5kIHRoZSBzZWxlY3RlZCB3aW5kb3cgb24gV0lORE9XJ3MgZnJhbWUgYXJlIG5vdAor Y2hhbmdlZCBieSB0aGlzIGZ1bmN0aW9uLiIKICAgKHNldHEgd2luZG93ICh3aW5kb3ctbm9y bWFsaXplLXdpbmRvdyB3aW5kb3cpKQogICAobGV0KiAoKHNpZGUgKGNvbmQKIAkJKChub3Qg c2lkZSkgJ2JlbG93KQpAQCAtNTU5OCwxNCArNTYzOSwxNCBAQCBzcGxpdC13aW5kb3cKICAg ICAgICAoKGFuZCAod2luZG93LXBhcmFtZXRlciB3aW5kb3cgJ3dpbmRvdy1hdG9tKQogCSAg ICAgKHNldHEgYXRvbS1yb290ICh3aW5kb3ctYXRvbS1yb290IHdpbmRvdykpCiAJICAgICAo bm90IChlcSBhdG9tLXJvb3Qgd2luZG93KSkpCi0JKHRocm93ICdkb25lIChzcGxpdC13aW5k b3cgYXRvbS1yb290IHNpemUgc2lkZSBwaXhlbHdpc2UpKSkKKwkodGhyb3cgJ2RvbmUgKHNw bGl0LXdpbmRvdyBhdG9tLXJvb3Qgc2l6ZSBzaWRlIHBpeGVsd2lzZSByZWZlcikpKQogICAg ICAgIDs7IElmIFdJTkRPVydzIGZyYW1lIGhhcyBhIHNpZGUgd2luZG93IGFuZCBXSU5ET1cg c3BlY2lmaWVzIHRoZQogICAgICAgIDs7IGZyYW1lJ3Mgcm9vdCB3aW5kb3csIHNwbGl0IHRo ZSBmcmFtZSdzIG1haW4gd2luZG93IGluc3RlYWQKICAgICAgICA7OyAoQnVnIzczNjI3KS4K ICAgICAgICAoKGFuZCAoZXEgd2luZG93IChmcmFtZS1yb290LXdpbmRvdyBmcmFtZSkpCiAJ ICAgICAod2luZG93LXdpdGgtcGFyYW1ldGVyICd3aW5kb3ctc2lkZSBuaWwgZnJhbWUpKQog CSh0aHJvdyAnZG9uZSAoc3BsaXQtd2luZG93ICh3aW5kb3ctbWFpbi13aW5kb3cgZnJhbWUp Ci0JCQkJICAgc2l6ZSBzaWRlIHBpeGVsd2lzZSkpKQorCQkJCSAgIHNpemUgc2lkZSBwaXhl bHdpc2UgcmVmZXIpKSkKICAgICAgICA7OyBJZiBXSU5ET1cgaXMgYSBzaWRlIHdpbmRvdyBv ciBpdHMgZmlyc3Qgb3IgbGFzdCBjaGlsZCBpcyBhCiAgICAgICAgOzsgc2lkZSB3aW5kb3cs IHRocm93IGFuIGVycm9yIHVubGVzcyBgd2luZG93LWNvbWJpbmF0aW9uLXJlc2l6ZScKICAg ICAgICA7OyBlcXVhbHMgJ3NpZGUuCkBAIC01NjQ0LDggKzU2ODUsOCBAQCBzcGxpdC13aW5k b3cKIAkJICAgKHdpbmRvdy1jb21iaW5lZC1wIHdpbmRvdyBob3Jpem9udGFsKSkpCiAJICAg ICA7OyAnb2xkLXBpeGVsLXNpemUnIGlzIHRoZSBjdXJyZW50IHBpeGVsIHNpemUgb2YgV0lO RE9XLgogCSAgICAgKG9sZC1waXhlbC1zaXplICh3aW5kb3ctc2l6ZSB3aW5kb3cgaG9yaXpv bnRhbCB0KSkKLQkgICAgIDs7ICduZXctc2l6ZScgaXMgdGhlIHNwZWNpZmllZCBvciBjYWxj dWxhdGVkIHNpemUgb2YgdGhlCi0JICAgICA7OyBuZXcgd2luZG93LgorCSAgICAgOzsgJ25l dy1waXhlbC1zaXplJyBpcyB0aGUgc3BlY2lmaWVkIG9yIGNhbGN1bGF0ZWQgc2l6ZQorCSAg ICAgOzsgb2YgdGhlIG5ldyB3aW5kb3cuCiAJICAgICBuZXctcGl4ZWwtc2l6ZSBuZXctcGFy ZW50IG5ldy1ub3JtYWwpCiAJKGNvbmQKIAkgKChub3QgcGl4ZWwtc2l6ZSkKQEAgLTU3NjYs OCArNTgwNyw5IEBAIHNwbGl0LXdpbmRvdwogCSAgIHdpbmRvdyAoLSAoaWYgbmV3LXBhcmVu dCAxLjAgKHdpbmRvdy1ub3JtYWwtc2l6ZSB3aW5kb3cgaG9yaXpvbnRhbCkpCiAJCSAgICAg bmV3LW5vcm1hbCkpKQogCi0JKGxldCogKChuZXcgKHNwbGl0LXdpbmRvdy1pbnRlcm5hbCB3 aW5kb3cgbmV3LXBpeGVsLXNpemUgc2lkZSBuZXctbm9ybWFsKSkpCi0JICAod2luZG93LS1w aXhlbC10by10b3RhbCBmcmFtZSBob3Jpem9udGFsKQorCShsZXQgKChuZXcgKHNwbGl0LXdp bmRvdy1pbnRlcm5hbAorCQkgICAgd2luZG93IG5ldy1waXhlbC1zaXplIHNpZGUgbmV3LW5v cm1hbCByZWZlcikpKQorICAgICAgICAgICh3aW5kb3ctLXBpeGVsLXRvLXRvdGFsIGZyYW1l IGhvcml6b250YWwpCiAJICA7OyBBc3NpZ24gd2luZG93LXNpZGUgcGFyYW1ldGVycywgaWYg YW55LgogCSAgKGNvbmQKIAkgICAoKGVxIHdpbmRvdy1jb21iaW5hdGlvbi1yZXNpemUgJ3Np ZGUpCmRpZmYgLS1naXQgYS9zcmMvd2luZG93LmMgYi9zcmMvd2luZG93LmMKaW5kZXggMzQ5 NjhhYzgyNGYuLmZiYmE1MWQ0YjM3IDEwMDY0NAotLS0gYS9zcmMvd2luZG93LmMKKysrIGIv c3JjL3dpbmRvdy5jCkBAIC0zMzcsMTEgKzMzNywxMSBAQCBERUZVTiAoIndpbmRvdy1saXZl LXAiLCBGd2luZG93X2xpdmVfcCwgU3dpbmRvd19saXZlX3AsIDEsIDEsIDAsCiAMCiAvKiBG cmFtZXMgYW5kIHdpbmRvd3MuICAqLwogREVGVU4gKCJ3aW5kb3ctZnJhbWUiLCBGd2luZG93 X2ZyYW1lLCBTd2luZG93X2ZyYW1lLCAwLCAxLCAwLAotICAgICAgIGRvYzogLyogUmV0dXJu IHRoZSBmcmFtZSB0aGF0IHdpbmRvdyBXSU5ET1cgaXMgb24uCi1XSU5ET1cgbXVzdCBiZSBh IHZhbGlkIHdpbmRvdyBhbmQgZGVmYXVsdHMgdG8gdGhlIHNlbGVjdGVkIG9uZS4gICovKQor ICAgICAgIGRvYzogLyogUmV0dXJuIHRoZSBmcmFtZSB0aGF0IHNwZWNpZmllZCBXSU5ET1cg aXMgb24uCitXSU5ET1cgY2FuIGJlIGFueSB3aW5kb3cgYW5kIGRlZmF1bHRzIHRvIHRoZSBz ZWxlY3RlZCBvbmUuICAqLykKICAgKExpc3BfT2JqZWN0IHdpbmRvdykKIHsKLSAgcmV0dXJu IGRlY29kZV92YWxpZF93aW5kb3cgKHdpbmRvdyktPmZyYW1lOworICByZXR1cm4gZGVjb2Rl X2FueV93aW5kb3cgKHdpbmRvdyktPmZyYW1lOwogfQogCiBERUZVTiAoImZyYW1lLXJvb3Qt d2luZG93IiwgRmZyYW1lX3Jvb3Rfd2luZG93LCBTZnJhbWVfcm9vdF93aW5kb3csIDAsIDEs IDAsCkBAIC02NDAsOSArNjQwLDkgQEAgREVGVU4gKCJzZWxlY3Qtd2luZG93IiwgRnNlbGVj dF93aW5kb3csIFNzZWxlY3Rfd2luZG93LCAxLCAyLCAwLAogfQogDAogREVGVU4gKCJ3aW5k b3ctYnVmZmVyIiwgRndpbmRvd19idWZmZXIsIFN3aW5kb3dfYnVmZmVyLCAwLCAxLCAwLAot ICAgICAgIGRvYzogLyogUmV0dXJuIHRoZSBidWZmZXIgZGlzcGxheWVkIGluIHdpbmRvdyBX SU5ET1cuCi1JZiBXSU5ET1cgaXMgb21pdHRlZCBvciBuaWwsIGl0IGRlZmF1bHRzIHRvIHRo ZSBzZWxlY3RlZCB3aW5kb3cuCi1SZXR1cm4gbmlsIGZvciBhbiBpbnRlcm5hbCB3aW5kb3cg b3IgYSBkZWxldGVkIHdpbmRvdy4gICovKQorICAgICAgIGRvYzogLyogUmV0dXJuIHRoZSBi dWZmZXIgZGlzcGxheWVkIGluIHNwZWNpZmllZCBXSU5ET1cuCitXSU5ET1cgY2FuIGJlIGFu eSB3aW5kb3cgYW5kIGRlZmF1bHRzIHRvIHRoZSBzZWxlY3RlZCBvbmUuICBSZXR1cm4gbmls Citmb3IgYW4gaW50ZXJuYWwgb3IgZGVsZXRlZCB3aW5kb3cuICAqLykKICAgKExpc3BfT2Jq ZWN0IHdpbmRvdykKIHsKICAgc3RydWN0IHdpbmRvdyAqdyA9IGRlY29kZV9hbnlfd2luZG93 ICh3aW5kb3cpOwpAQCAtNjUyLDE1ICs2NTIsMTYgQEAgREVGVU4gKCJ3aW5kb3ctYnVmZmVy IiwgRndpbmRvd19idWZmZXIsIFN3aW5kb3dfYnVmZmVyLCAwLCAxLCAwLAogCiBERUZVTiAo IndpbmRvdy1vbGQtYnVmZmVyIiwgRndpbmRvd19vbGRfYnVmZmVyLCBTd2luZG93X29sZF9i dWZmZXIsIDAsIDEsIDAsCiAgICAgICAgZG9jOiAvKiBSZXR1cm4gdGhlIG9sZCBidWZmZXIg ZGlzcGxheWVkIGJ5IFdJTkRPVy4KLVdJTkRPVyBtdXN0IGJlIGEgbGl2ZSB3aW5kb3cgYW5k IGRlZmF1bHRzIHRvIHRoZSBzZWxlY3RlZCBvbmUuCitXSU5ET1cgY2FuIGJlIGFueSB3aW5k b3cgYW5kIGRlZmF1bHRzIHRvIHRoZSBzZWxlY3RlZCBvbmUuCiAKIFRoZSByZXR1cm4gdmFs dWUgaXMgdGhlIGJ1ZmZlciBzaG93biBpbiBXSU5ET1cgYXQgdGhlIGxhc3QgdGltZSB3aW5k b3cKLWNoYW5nZSBmdW5jdGlvbnMgd2VyZSBydW4uICBJdCBpcyBuaWwgaWYgV0lORE9XIHdh cyBjcmVhdGVkIGFmdGVyCi10aGF0LiAgSXQgaXMgdCBpZiBXSU5ET1cgaGFzIGJlZW4gcmVz dG9yZWQgZnJvbSBhIHdpbmRvdyBjb25maWd1cmF0aW9uCi1hZnRlciB0aGF0LiAgKi8pCitj aGFuZ2UgZnVuY3Rpb25zIHdlcmUgcnVuIG9yIFdJTkRPVyBpcyBhIGZvcm1lciBsaXZlIHdp bmRvdyB0aGF0IHdhcworZGVsZXRlZC4gIEl0IGlzIG5pbCBpZiBXSU5ET1cgd2FzIGNyZWF0 ZWQgYWZ0ZXIgdGhhdC4gIEl0IGlzIHQgaWYgV0lORE9XCitoYXMgYmVlbiByZXN0b3JlZCBm cm9tIGEgd2luZG93IGNvbmZpZ3VyYXRpb24gYWZ0ZXIgdGhhdC4gIEl0IGlzIGFsd2F5cwor bmlsIGlmIFdJTkRPVyBpcyBhbiBpbnRlcm5hbCB3aW5kb3cuICAqLykKICAgKExpc3BfT2Jq ZWN0IHdpbmRvdykKIHsKLSAgc3RydWN0IHdpbmRvdyAqdyA9IGRlY29kZV9saXZlX3dpbmRv dyAod2luZG93KTsKKyAgc3RydWN0IHdpbmRvdyAqdyA9IGRlY29kZV9hbnlfd2luZG93ICh3 aW5kb3cpOwogCiAgIHJldHVybiAoTklMUCAody0+b2xkX2J1ZmZlcikKIAkgIC8qIEEgbmV3 IHdpbmRvdy4gICovCkBAIC02NjgsODEgKzY2OSwxMDAgQEAgREVGVU4gKCJ3aW5kb3ctb2xk LWJ1ZmZlciIsIEZ3aW5kb3dfb2xkX2J1ZmZlciwgU3dpbmRvd19vbGRfYnVmZmVyLCAwLCAx LCAwLAogCSAgOiAody0+Y2hhbmdlX3N0YW1wICE9IFdJTkRPV19YRlJBTUUgKHcpLT5jaGFu Z2Vfc3RhbXApCiAJICAvKiBBIHdpbmRvdyByZXN0b3JlZCBmcm9tIGEgY29uZmlndXJhdGlv bi4gICovCiAJICA/IFF0Ci0JICAvKiBBIHdpbmRvdyB0aGF0IHdhcyBsaXZlIHRoZSBsYXN0 IHRpbWUgc2VlbiBieSB3aW5kb3cKLQkgICAgIGNoYW5nZSBmdW5jdGlvbnMuICAqLworCSAg LyogQSB3aW5kb3cgdGhhdCB3YXMgbGl2ZSB0aGUgbGFzdCB0aW1lIHNlZW4gYnkgd2luZG93 IGNoYW5nZQorCSAgICAgZnVuY3Rpb25zIG9yIHdhcyBkZWxldGVkLiAgKi8KIAkgIDogdy0+ b2xkX2J1ZmZlcik7CiB9CiAKIERFRlVOICgid2luZG93LXBhcmVudCIsIEZ3aW5kb3dfcGFy ZW50LCBTd2luZG93X3BhcmVudCwgMCwgMSwgMCwKLSAgICAgICBkb2M6IC8qIFJldHVybiB0 aGUgcGFyZW50IHdpbmRvdyBvZiB3aW5kb3cgV0lORE9XLgotV0lORE9XIG11c3QgYmUgYSB2 YWxpZCB3aW5kb3cgYW5kIGRlZmF1bHRzIHRvIHRoZSBzZWxlY3RlZCBvbmUuCi1SZXR1cm4g bmlsIGZvciBhIHdpbmRvdyB3aXRoIG5vIHBhcmVudCAoZS5nLiBhIHJvb3Qgd2luZG93KS4g ICovKQorICAgICAgIGRvYzogLyogUmV0dXJuIHRoZSBwYXJlbnQgd2luZG93IG9mIHNwZWNp ZmllZCBXSU5ET1cuCitXSU5ET1cgY2FuIGJlIGFueSB3aW5kb3cgYW5kIGRlZmF1bHRzIHRv IHRoZSBzZWxlY3RlZCBvbmUuICBSZXR1cm4gbmlsCitmb3IgYSB3aW5kb3cgd2l0aCBubyBw YXJlbnQgKGUuZy4gYSByb290IHdpbmRvdykuICAqLykKKyAgKExpc3BfT2JqZWN0IHdpbmRv dykKK3sKKyAgTGlzcF9PYmplY3QgcGFyZW50ID0gZGVjb2RlX2FueV93aW5kb3cgKHdpbmRv dyktPnBhcmVudDsKKworICByZXR1cm4gV0lORE9XUCAocGFyZW50KSA/IHBhcmVudCA6IFFu aWw7Cit9CisKK0RFRlVOICgid2luZG93LWNoaWxkIiwgRndpbmRvd19jaGlsZCwgU3dpbmRv d19jaGlsZCwgMCwgMSwgMCwKKyAgICAgICBkb2M6IC8qIFJldHVybiB0aGUgZmlyc3QgY2hp bGQgd2luZG93IG9mIHNwZWNpZmllZCBXSU5ET1cuCitXSU5ET1cgY2FuIGJlIGFueSB3aW5k b3cgYW5kIGRlZmF1bHRzIHRvIHRoZSBzZWxlY3RlZCBvbmUuICBSZXR1cm4gbmlsCitpZiBX SU5ET1cgaGFzIG5vIGNoaWxkcmVuLiAgKi8pCiAgIChMaXNwX09iamVjdCB3aW5kb3cpCiB7 Ci0gIHJldHVybiBkZWNvZGVfdmFsaWRfd2luZG93ICh3aW5kb3cpLT5wYXJlbnQ7CisgIHN0 cnVjdCB3aW5kb3cgKncgPSBkZWNvZGVfYW55X3dpbmRvdyAod2luZG93KTsKKworICByZXR1 cm4gV0lORE9XUCAody0+Y29udGVudHMpID8gdy0+Y29udGVudHMgOiBRbmlsOwogfQogCiBE RUZVTiAoIndpbmRvdy10b3AtY2hpbGQiLCBGd2luZG93X3RvcF9jaGlsZCwgU3dpbmRvd190 b3BfY2hpbGQsIDAsIDEsIDAsCi0gICAgICAgZG9jOiAvKiBSZXR1cm4gdGhlIHRvcG1vc3Qg Y2hpbGQgd2luZG93IG9mIHdpbmRvdyBXSU5ET1cuCi1XSU5ET1cgbXVzdCBiZSBhIHZhbGlk IHdpbmRvdyBhbmQgZGVmYXVsdHMgdG8gdGhlIHNlbGVjdGVkIG9uZS4KLVJldHVybiBuaWwg aWYgV0lORE9XIGlzIGEgbGl2ZSB3aW5kb3cgKGxpdmUgd2luZG93cyBoYXZlIG5vIGNoaWxk cmVuKS4KLVJldHVybiBuaWwgaWYgV0lORE9XIGlzIGFuIGludGVybmFsIHdpbmRvdyB3aG9z ZSBjaGlsZHJlbiBmb3JtIGEKLWhvcml6b250YWwgY29tYmluYXRpb24uICAqLykKKyAgICAg ICBkb2M6IC8qIFJldHVybiB0aGUgdG9wbW9zdCBjaGlsZCB3aW5kb3cgb2Ygc3BlY2lmaWVk IFdJTkRPVy4KK1dJTkRPVyBjYW4gYmUgYW55IHdpbmRvdyBhbmQgZGVmYXVsdHMgdG8gdGhl IHNlbGVjdGVkIG9uZS4gIFJldHVybiBuaWwKK2lmIFdJTkRPVyBpcyBhIGxpdmUgd2luZG93 IChsaXZlIHdpbmRvd3MgaGF2ZSBubyBjaGlsZHJlbikuICBSZXR1cm4gbmlsCitpZiBXSU5E T1cgaXMgYW4gaW50ZXJuYWwgd2luZG93IHdob3NlIGNoaWxkcmVuIGZvcm0gYSBob3Jpem9u dGFsCitjb21iaW5hdGlvbi4gICovKQogICAoTGlzcF9PYmplY3Qgd2luZG93KQogewotICBz dHJ1Y3Qgd2luZG93ICp3ID0gZGVjb2RlX3ZhbGlkX3dpbmRvdyAod2luZG93KTsKKyAgc3Ry dWN0IHdpbmRvdyAqdyA9IGRlY29kZV9hbnlfd2luZG93ICh3aW5kb3cpOworCiAgIHJldHVy biBXSU5ET1dfVkVSVElDQUxfQ09NQklOQVRJT05fUCAodykgPyB3LT5jb250ZW50cyA6IFFu aWw7CiB9CiAKIERFRlVOICgid2luZG93LWxlZnQtY2hpbGQiLCBGd2luZG93X2xlZnRfY2hp bGQsIFN3aW5kb3dfbGVmdF9jaGlsZCwgMCwgMSwgMCwKLSAgICAgICBkb2M6IC8qIFJldHVy biB0aGUgbGVmdG1vc3QgY2hpbGQgd2luZG93IG9mIHdpbmRvdyBXSU5ET1cuCi1XSU5ET1cg bXVzdCBiZSBhIHZhbGlkIHdpbmRvdyBhbmQgZGVmYXVsdHMgdG8gdGhlIHNlbGVjdGVkIG9u ZS4KLVJldHVybiBuaWwgaWYgV0lORE9XIGlzIGEgbGl2ZSB3aW5kb3cgKGxpdmUgd2luZG93 cyBoYXZlIG5vIGNoaWxkcmVuKS4KLVJldHVybiBuaWwgaWYgV0lORE9XIGlzIGFuIGludGVy bmFsIHdpbmRvdyB3aG9zZSBjaGlsZHJlbiBmb3JtIGEKLXZlcnRpY2FsIGNvbWJpbmF0aW9u LiAgKi8pCisgICAgICAgZG9jOiAvKiBSZXR1cm4gdGhlIGxlZnRtb3N0IGNoaWxkIHdpbmRv dyBvZiBzcGVjaWZpZWQgV0lORE9XLgorV0lORE9XIGNhbiBiZSBhbnkgd2luZG93IGFuZCBk ZWZhdWx0cyB0byB0aGUgc2VsZWN0ZWQgb25lLiAgUmV0dXJuIG5pbAoraWYgV0lORE9XIGlz IGEgbGl2ZSB3aW5kb3cgKGxpdmUgd2luZG93cyBoYXZlIG5vIGNoaWxkcmVuKS4gIFJldHVy biBuaWwKK2lmIFdJTkRPVyBpcyBhbiBpbnRlcm5hbCB3aW5kb3cgd2hvc2UgY2hpbGRyZW4g Zm9ybSBhIHZlcnRpY2FsCitjb21iaW5hdGlvbi4gICovKQogICAoTGlzcF9PYmplY3Qgd2lu ZG93KQogewotICBzdHJ1Y3Qgd2luZG93ICp3ID0gZGVjb2RlX3ZhbGlkX3dpbmRvdyAod2lu ZG93KTsKKyAgc3RydWN0IHdpbmRvdyAqdyA9IGRlY29kZV9hbnlfd2luZG93ICh3aW5kb3cp OworCiAgIHJldHVybiBXSU5ET1dfSE9SSVpPTlRBTF9DT01CSU5BVElPTl9QICh3KSA/IHct PmNvbnRlbnRzIDogUW5pbDsKIH0KIAogREVGVU4gKCJ3aW5kb3ctbmV4dC1zaWJsaW5nIiwg RndpbmRvd19uZXh0X3NpYmxpbmcsIFN3aW5kb3dfbmV4dF9zaWJsaW5nLCAwLCAxLCAwLAot ICAgICAgIGRvYzogLyogUmV0dXJuIHRoZSBuZXh0IHNpYmxpbmcgd2luZG93IG9mIHdpbmRv dyBXSU5ET1cuCi1XSU5ET1cgbXVzdCBiZSBhIHZhbGlkIHdpbmRvdyBhbmQgZGVmYXVsdHMg dG8gdGhlIHNlbGVjdGVkIG9uZS4KKyAgICAgICBkb2M6IC8qIFJldHVybiB0aGUgbmV4dCBz aWJsaW5nIHdpbmRvdyBvZiBzcGVjaWZpZWQgV0lORE9XLgorV0lORE9XIGNhbiBiZSBhbXkg d2luZG93IGFuZCBkZWZhdWx0cyB0byB0aGUgc2VsZWN0ZWQgb25lLgogUmV0dXJuIG5pbCBp ZiBXSU5ET1cgaGFzIG5vIG5leHQgc2libGluZy4gICovKQogICAoTGlzcF9PYmplY3Qgd2lu ZG93KQogewotICByZXR1cm4gZGVjb2RlX3ZhbGlkX3dpbmRvdyAod2luZG93KS0+bmV4dDsK KyAgTGlzcF9PYmplY3QgbmV4dCA9IGRlY29kZV9hbnlfd2luZG93ICh3aW5kb3cpLT5uZXh0 OworCisgIHJldHVybiBXSU5ET1dQIChuZXh0KSA/IG5leHQgOiBRbmlsOwogfQogCiBERUZV TiAoIndpbmRvdy1wcmV2LXNpYmxpbmciLCBGd2luZG93X3ByZXZfc2libGluZywgU3dpbmRv d19wcmV2X3NpYmxpbmcsIDAsIDEsIDAsCi0gICAgICAgZG9jOiAvKiBSZXR1cm4gdGhlIHBy ZXZpb3VzIHNpYmxpbmcgd2luZG93IG9mIHdpbmRvdyBXSU5ET1cuCi1XSU5ET1cgbXVzdCBi ZSBhIHZhbGlkIHdpbmRvdyBhbmQgZGVmYXVsdHMgdG8gdGhlIHNlbGVjdGVkIG9uZS4KKyAg ICAgICBkb2M6IC8qIFJldHVybiB0aGUgcHJldmlvdXMgc2libGluZyB3aW5kb3cgb2Ygc3Bl Y2lmaWVkIFdJTkRPVy4KK1dJTkRPVyBjYW4gYmUgYW15IHdpbmRvdyBhbmQgZGVmYXVsdHMg dG8gdGhlIHNlbGVjdGVkIG9uZS4KIFJldHVybiBuaWwgaWYgV0lORE9XIGhhcyBubyBwcmV2 aW91cyBzaWJsaW5nLiAgKi8pCiAgIChMaXNwX09iamVjdCB3aW5kb3cpCiB7Ci0gIHJldHVy biBkZWNvZGVfdmFsaWRfd2luZG93ICh3aW5kb3cpLT5wcmV2OworICBMaXNwX09iamVjdCBw cmV2ID0gZGVjb2RlX2FueV93aW5kb3cgKHdpbmRvdyktPnByZXY7CisKKyAgcmV0dXJuIFdJ TkRPV1AgKHByZXYpID8gcHJldiA6IFFuaWw7CiB9CiAKIERFRlVOICgid2luZG93LWNvbWJp bmF0aW9uLWxpbWl0IiwgRndpbmRvd19jb21iaW5hdGlvbl9saW1pdCwgU3dpbmRvd19jb21i aW5hdGlvbl9saW1pdCwgMSwgMSwgMCwKLSAgICAgICBkb2M6IC8qIFJldHVybiBjb21iaW5h dGlvbiBsaW1pdCBvZiB3aW5kb3cgV0lORE9XLgotV0lORE9XIG11c3QgYmUgYSB2YWxpZCB3 aW5kb3cgdXNlZCBpbiBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGNvbWJpbmF0aW9uLgotSWYg dGhlIHJldHVybiB2YWx1ZSBpcyBuaWwsIGNoaWxkIHdpbmRvd3Mgb2YgV0lORE9XIGNhbiBi ZSByZWNvbWJpbmVkIHdpdGgKLVdJTkRPVydzIHNpYmxpbmdzLiAgQSByZXR1cm4gdmFsdWUg b2YgdCBtZWFucyB0aGF0IGNoaWxkIHdpbmRvd3Mgb2YKLVdJTkRPVyBhcmUgbmV2ZXIgKHJl LSljb21iaW5lZCB3aXRoIFdJTkRPVydzIHNpYmxpbmdzLiAgKi8pCisgICAgICAgZG9jOiAv KiBSZXR1cm4gY29tYmluYXRpb24gbGltaXQgb2Ygc3BlY2lmaWVkIFdJTkRPVy4KK1dJTkRP VyBjYW4gYmUgYW55IGludGVybmFsIHdpbmRvdyAtIGEgd2luZG93IHRoYXQgZG9lcyBub3Qg c2hvdyBhIGJ1ZmZlcgorYW5kIGhhcyBub3Qgc2hvd24gYSBidWZmZXIgYmVmb3JlLiAgSWYg dGhlIHJldHVybiB2YWx1ZSBpcyBuaWwsIGNoaWxkCit3aW5kb3dzIG9mIFdJTkRPVyBjYW4g YmUgcmVjb21iaW5lZCB3aXRoIFdJTkRPVydzIHNpYmxpbmdzLiAgQSByZXR1cm4KK3ZhbHVl IG9mIHQgbWVhbnMgdGhhdCBjaGlsZCB3aW5kb3dzIG9mIFdJTkRPVyBhcmUgbmV2ZXIgKHJl LSljb21iaW5lZAord2l0aCBXSU5ET1cncyBzaWJsaW5ncy4gICovKQogICAoTGlzcF9PYmpl Y3Qgd2luZG93KQogewotICBzdHJ1Y3Qgd2luZG93ICp3OworICBzdHJ1Y3Qgd2luZG93ICp3 ID0gZGVjb2RlX2FueV93aW5kb3cgKHdpbmRvdyk7CiAKLSAgQ0hFQ0tfVkFMSURfV0lORE9X ICh3aW5kb3cpOwotICB3ID0gWFdJTkRPVyAod2luZG93KTsKLSAgaWYgKFdJTkRPV19MRUFG X1AgKHcpKQorICBpZiAoV0lORE9XX0xFQUZfUCAodykgfHwgIU5JTFAgKHctPm9sZF9idWZm ZXIpKQogICAgIGVycm9yICgiQ29tYmluYXRpb24gbGltaXQgaXMgbWVhbmluZ2Z1bCBmb3Ig aW50ZXJuYWwgd2luZG93cyBvbmx5Iik7CisKICAgcmV0dXJuIHctPmNvbWJpbmF0aW9uX2xp bWl0OwogfQogCiBERUZVTiAoInNldC13aW5kb3ctY29tYmluYXRpb24tbGltaXQiLCBGc2V0 X3dpbmRvd19jb21iaW5hdGlvbl9saW1pdCwgU3NldF93aW5kb3dfY29tYmluYXRpb25fbGlt aXQsIDIsIDIsIDAsCi0gICAgICAgZG9jOiAvKiBTZXQgY29tYmluYXRpb24gbGltaXQgb2Yg d2luZG93IFdJTkRPVyB0byBMSU1JVDsgcmV0dXJuIExJTUlULgorICAgICAgIGRvYzogLyog U2V0IGNvbWJpbmF0aW9uIGxpbWl0IG9mIHNwZWNpZmllZCBXSU5ET1cgdG8gTElNSVQ7IHJl dHVybiBMSU1JVC4KIFdJTkRPVyBtdXN0IGJlIGEgdmFsaWQgd2luZG93IHVzZWQgaW4gaG9y aXpvbnRhbCBvciB2ZXJ0aWNhbCBjb21iaW5hdGlvbi4KIElmIExJTUlUIGlzIG5pbCwgY2hp bGQgd2luZG93cyBvZiBXSU5ET1cgY2FuIGJlIHJlY29tYmluZWQgd2l0aCBXSU5ET1cncwog c2libGluZ3MuICBMSU1JVCB0IG1lYW5zIHRoYXQgY2hpbGQgd2luZG93cyBvZiBXSU5ET1cg YXJlIG5ldmVyCkBAIC03NjEsNyArNzgxLDcgQEAgREVGVU4gKCJzZXQtd2luZG93LWNvbWJp bmF0aW9uLWxpbWl0IiwgRnNldF93aW5kb3dfY29tYmluYXRpb25fbGltaXQsIFNzZXRfd2lu ZG8KIH0KIAogREVGVU4gKCJ3aW5kb3ctdXNlLXRpbWUiLCBGd2luZG93X3VzZV90aW1lLCBT d2luZG93X3VzZV90aW1lLCAwLCAxLCAwLAotICAgICAgIGRvYzogLyogUmV0dXJuIHRoZSB1 c2UgdGltZSBvZiB3aW5kb3cgV0lORE9XLgorICAgICAgIGRvYzogLyogUmV0dXJuIHRoZSB1 c2UgdGltZSBvZiBzcGVjaWZpZWQgV0lORE9XLgogV0lORE9XIG11c3Qgc3BlY2lmeSBhIGxp dmUgd2luZG93IGFuZCBkZWZhdWx0cyB0byB0aGUgc2VsZWN0ZWQgb25lLgogCiBUaGUgd2lu ZG93IHdpdGggdGhlIGhpZ2hlc3QgdXNlIHRpbWUgaXMgdXN1YWxseSB0aGUgb25lIG1vc3Qg cmVjZW50bHkKQEAgLTgwMiw3ICs4MjIsNyBAQCBERUZVTiAoIndpbmRvdy1idW1wLXVzZS10 aW1lIiwgRndpbmRvd19idW1wX3VzZV90aW1lLAogfQogDAogREVGVU4gKCJ3aW5kb3ctcGl4 ZWwtd2lkdGgiLCBGd2luZG93X3BpeGVsX3dpZHRoLCBTd2luZG93X3BpeGVsX3dpZHRoLCAw LCAxLCAwLAotICAgICAgIGRvYzogLyogUmV0dXJuIHRoZSB3aWR0aCBvZiB3aW5kb3cgV0lO RE9XIGluIHBpeGVscy4KKyAgICAgICBkb2M6IC8qIFJldHVybiB0aGUgd2lkdGggb2Ygc3Bl Y2lmaWVkIFdJTkRPVyBpbiBwaXhlbHMuCiBXSU5ET1cgbXVzdCBiZSBhIHZhbGlkIHdpbmRv dyBhbmQgZGVmYXVsdHMgdG8gdGhlIHNlbGVjdGVkIG9uZS4KIAogVGhlIHJldHVybiB2YWx1 ZSBpbmNsdWRlcyB0aGUgZnJpbmdlcyBhbmQgbWFyZ2lucyBvZiBXSU5ET1cgYXMgd2VsbCBh cwpAQCAtODE1LDEwICs4MzUsMTAgQEAgREVGVU4gKCJ3aW5kb3ctcGl4ZWwtd2lkdGgiLCBG d2luZG93X3BpeGVsX3dpZHRoLCBTd2luZG93X3BpeGVsX3dpZHRoLCAwLCAxLCAwLAogfQog CiBERUZVTiAoIndpbmRvdy1waXhlbC1oZWlnaHQiLCBGd2luZG93X3BpeGVsX2hlaWdodCwg U3dpbmRvd19waXhlbF9oZWlnaHQsIDAsIDEsIDAsCi0gICAgICAgZG9jOiAvKiBSZXR1cm4g dGhlIGhlaWdodCBvZiB3aW5kb3cgV0lORE9XIGluIHBpeGVscy4KKyAgICAgICBkb2M6IC8q IFJldHVybiB0aGUgaGVpZ2h0IG9mIHNwZWNpZmllZCBXSU5ET1cgaW4gcGl4ZWxzLgogV0lO RE9XIG11c3QgYmUgYSB2YWxpZCB3aW5kb3cgYW5kIGRlZmF1bHRzIHRvIHRoZSBzZWxlY3Rl ZCBvbmUuCiAKLVRoZSByZXR1cm4gdmFsdWUgaW5jbHVkZXMgdGhlIG1vZGUgbGluZSBhbmQg aGVhZGVyIGxpbmUgYW5kIHRoZSBib3R0b20KK1RoZSByZXR1cm4gdmFsdWUgaW5jbHVkZXMg dGhlIG1vZGUsIHRhYiBhbmQgaGVhZGVyIGxpbmUgYW5kIHRoZSBib3R0b20KIGRpdmlkZXIs IGlmIGFueS4gIElmIFdJTkRPVyBpcyBhbiBpbnRlcm5hbCB3aW5kb3csIGl0cyBwaXhlbCBo ZWlnaHQgaXMKIHRoZSBoZWlnaHQgb2YgdGhlIHNjcmVlbiBhcmVhcyBzcGFubmVkIGJ5IGl0 cyBjaGlsZHJlbi4gICovKQogICAoTGlzcF9PYmplY3Qgd2luZG93KQpAQCAtODU1LDEyICs4 NzUsMTMgQEAgREVGVU4gKCJ3aW5kb3ctb2xkLXBpeGVsLWhlaWdodCIsIEZ3aW5kb3dfb2xk X3BpeGVsX2hlaWdodCwKIH0KIAogREVGVU4gKCJ3aW5kb3ctdG90YWwtaGVpZ2h0IiwgRndp bmRvd190b3RhbF9oZWlnaHQsIFN3aW5kb3dfdG90YWxfaGVpZ2h0LCAwLCAyLCAwLAotICAg ICAgIGRvYzogLyogUmV0dXJuIHRoZSBoZWlnaHQgb2Ygd2luZG93IFdJTkRPVyBpbiBsaW5l cy4KKyAgICAgICBkb2M6IC8qIFJldHVybiB0aGUgaGVpZ2h0IG9mIHNwZWNpZmllZCBXSU5E T1cgaW4gbGluZXMuCiBXSU5ET1cgbXVzdCBiZSBhIHZhbGlkIHdpbmRvdyBhbmQgZGVmYXVs dHMgdG8gdGhlIHNlbGVjdGVkIG9uZS4KIAotVGhlIHJldHVybiB2YWx1ZSBpbmNsdWRlcyB0 aGUgaGVpZ2h0cyBvZiBXSU5ET1cncyBtb2RlIGFuZCBoZWFkZXIgbGluZQotYW5kIGl0cyBi b3R0b20gZGl2aWRlciwgaWYgYW55LiAgSWYgV0lORE9XIGlzIGFuIGludGVybmFsIHdpbmRv dywgdGhlCi10b3RhbCBoZWlnaHQgaXMgdGhlIGhlaWdodCBvZiB0aGUgc2NyZWVuIGFyZWFz IHNwYW5uZWQgYnkgaXRzIGNoaWxkcmVuLgorVGhlIHJldHVybiB2YWx1ZSBpbmNsdWRlcyB0 aGUgaGVpZ2h0cyBvZiBXSU5ET1cncyBtb2RlLCB0YWIgYW5kIGhlYWRlcgorbGluZSwgaG9y aXpvbnRhbCBzY3JvbGwgYmFyIGFuZCBpdHMgYm90dG9tIGRpdmlkZXIsIGlmIGFueS4gIElm IFdJTkRPVworaXMgYW4gaW50ZXJuYWwgd2luZG93LCB0aGUgdG90YWwgaGVpZ2h0IGlzIHRo ZSBoZWlnaHQgb2YgdGhlIHNjcmVlbgorYXJlYXMgc3Bhbm5lZCBieSBpdHMgY2hpbGRyZW4u CiAKIElmIFdJTkRPVydzIHBpeGVsIGhlaWdodCBpcyBub3QgYW4gaW50ZWdyYWwgbXVsdGlw bGUgb2YgaXRzIGZyYW1lJ3MKIGNoYXJhY3RlciBoZWlnaHQsIHRoZSBudW1iZXIgb2YgbGlu ZXMgb2NjdXBpZWQgYnkgV0lORE9XIGlzIHJvdW5kZWQKQEAgLTg5MSwxMSArOTEyLDExIEBA IERFRlVOICgid2luZG93LXRvdGFsLWhlaWdodCIsIEZ3aW5kb3dfdG90YWxfaGVpZ2h0LCBT d2luZG93X3RvdGFsX2hlaWdodCwgMCwgMiwKIH0KIAogREVGVU4gKCJ3aW5kb3ctdG90YWwt d2lkdGgiLCBGd2luZG93X3RvdGFsX3dpZHRoLCBTd2luZG93X3RvdGFsX3dpZHRoLCAwLCAy LCAwLAotICAgICAgIGRvYzogLyogUmV0dXJuIHRoZSB0b3RhbCB3aWR0aCBvZiB3aW5kb3cg V0lORE9XIGluIGNvbHVtbnMuCisgICAgICAgZG9jOiAvKiBSZXR1cm4gdGhlIHRvdGFsIHdp ZHRoIG9mIHNwZWNpZmllZCBXSU5ET1cgaW4gY29sdW1ucy4KIFdJTkRPVyBtdXN0IGJlIGEg dmFsaWQgd2luZG93IGFuZCBkZWZhdWx0cyB0byB0aGUgc2VsZWN0ZWQgb25lLgogCi1UaGUg cmV0dXJuIHZhbHVlIGluY2x1ZGVzIHRoZSB3aWR0aHMgb2YgV0lORE9XJ3MgZnJpbmdlcywg bWFyZ2lucywKLXNjcm9sbCBiYXJzIGFuZCBpdHMgcmlnaHQgZGl2aWRlciwgaWYgYW55LiAg SWYgV0lORE9XIGlzIGFuIGludGVybmFsCitUaGUgcmV0dXJuIHZhbHVlIGluY2x1ZGVzIHRo ZSB3aWR0aHMgb2YgV0lORE9XJ3MgZnJpbmdlcywgbWFyZ2lucywgaXRzCit2ZXJ0aWNhbCBz Y3JvbGwgYmFyIGFuZCByaWdodCBkaXZpZGVyLCBpZiBhbnkuICBJZiBXSU5ET1cgaXMgYW4g aW50ZXJuYWwKIHdpbmRvdywgdGhlIHRvdGFsIHdpZHRoIGlzIHRoZSB3aWR0aCBvZiB0aGUg c2NyZWVuIGFyZWFzIHNwYW5uZWQgYnkgaXRzCiBjaGlsZHJlbi4KIApAQCAtOTI4LDcgKzk0 OSw3IEBAIERFRlVOICgid2luZG93LXRvdGFsLXdpZHRoIiwgRndpbmRvd190b3RhbF93aWR0 aCwgU3dpbmRvd190b3RhbF93aWR0aCwgMCwgMiwgMCwKIH0KIAogREVGVU4gKCJ3aW5kb3ct bmV3LXRvdGFsIiwgRndpbmRvd19uZXdfdG90YWwsIFN3aW5kb3dfbmV3X3RvdGFsLCAwLCAx LCAwLAotICAgICAgIGRvYzogLyogUmV0dXJuIHRoZSBuZXcgdG90YWwgc2l6ZSBvZiB3aW5k b3cgV0lORE9XLgorICAgICAgIGRvYzogLyogUmV0dXJuIHRoZSBuZXcgdG90YWwgc2l6ZSBv ZiBzcGVjaWZpZWQgV0lORE9XLgogV0lORE9XIG11c3QgYmUgYSB2YWxpZCB3aW5kb3cgYW5k IGRlZmF1bHRzIHRvIHRoZSBzZWxlY3RlZCBvbmUuCiAKIFRoZSBuZXcgdG90YWwgc2l6ZSBv ZiBXSU5ET1cgaXMgdGhlIHZhbHVlIHNldCBieSB0aGUgbGFzdCBjYWxsIG9mCkBAIC05NDEs NyArOTYyLDcgQEAgd2lkdGggKHNlZSBgd2luZG93LXRvdGFsLXdpZHRoJykuICAqLykKIH0K IAogREVGVU4gKCJ3aW5kb3ctbm9ybWFsLXNpemUiLCBGd2luZG93X25vcm1hbF9zaXplLCBT d2luZG93X25vcm1hbF9zaXplLCAwLCAyLCAwLAotICAgICAgIGRvYzogLyogUmV0dXJuIHRo ZSBub3JtYWwgaGVpZ2h0IG9mIHdpbmRvdyBXSU5ET1cuCisgICAgICAgZG9jOiAvKiBSZXR1 cm4gdGhlIG5vcm1hbCBoZWlnaHQgb2Ygc3BlY2lmaWVkIFdJTkRPVy4KIFdJTkRPVyBtdXN0 IGJlIGEgdmFsaWQgd2luZG93IGFuZCBkZWZhdWx0cyB0byB0aGUgc2VsZWN0ZWQgb25lLgog SWYgSE9SSVpPTlRBTCBpcyBub24tbmlsLCByZXR1cm4gdGhlIG5vcm1hbCB3aWR0aCBvZiBX SU5ET1cuCiAKQEAgLTk3MCw3ICs5OTEsNyBAQCBERUZVTiAoIndpbmRvdy1ub3JtYWwtc2l6 ZSIsIEZ3aW5kb3dfbm9ybWFsX3NpemUsIFN3aW5kb3dfbm9ybWFsX3NpemUsIDAsIDIsIDAs CiB9CiAKIERFRlVOICgid2luZG93LW5ldy1ub3JtYWwiLCBGd2luZG93X25ld19ub3JtYWws IFN3aW5kb3dfbmV3X25vcm1hbCwgMCwgMSwgMCwKLSAgICAgICBkb2M6IC8qIFJldHVybiBu ZXcgbm9ybWFsIHNpemUgb2Ygd2luZG93IFdJTkRPVy4KKyAgICAgICBkb2M6IC8qIFJldHVy biBuZXcgbm9ybWFsIHNpemUgb2Ygc3BlY2lmaWVkIFdJTkRPVy4KIFdJTkRPVyBtdXN0IGJl IGEgdmFsaWQgd2luZG93IGFuZCBkZWZhdWx0cyB0byB0aGUgc2VsZWN0ZWQgb25lLgogCiBU aGUgbmV3IG5vcm1hbCBzaXplIG9mIFdJTkRPVyBpcyB0aGUgdmFsdWUgc2V0IGJ5IHRoZSBs YXN0IGNhbGwgb2YKQEAgLTk4Miw3ICsxMDAzLDcgQEAgREVGVU4gKCJ3aW5kb3ctbmV3LW5v cm1hbCIsIEZ3aW5kb3dfbmV3X25vcm1hbCwgU3dpbmRvd19uZXdfbm9ybWFsLCAwLCAxLCAw LAogfQogCiBERUZVTiAoIndpbmRvdy1uZXctcGl4ZWwiLCBGd2luZG93X25ld19waXhlbCwg U3dpbmRvd19uZXdfcGl4ZWwsIDAsIDEsIDAsCi0gICAgICAgZG9jOiAvKiBSZXR1cm4gbmV3 IHBpeGVsIHNpemUgb2Ygd2luZG93IFdJTkRPVy4KKyAgICAgICBkb2M6IC8qIFJldHVybiBu ZXcgcGl4ZWwgc2l6ZSBvZiBzcGVjaWZpZWQgV0lORE9XLgogV0lORE9XIG11c3QgYmUgYSB2 YWxpZCB3aW5kb3cgYW5kIGRlZmF1bHRzIHRvIHRoZSBzZWxlY3RlZCBvbmUuCiAKIFRoZSBu ZXcgcGl4ZWwgc2l6ZSBvZiBXSU5ET1cgaXMgdGhlIHZhbHVlIHNldCBieSB0aGUgbGFzdCBj YWxsIG9mCkBAIC05OTUsNyArMTAxNiw3IEBAIHdpZHRoIChzZWUgYHdpbmRvdy1waXhlbC13 aWR0aCcpLiAgKi8pCiB9CiAKIERFRlVOICgid2luZG93LXBpeGVsLWxlZnQiLCBGd2luZG93 X3BpeGVsX2xlZnQsIFN3aW5kb3dfcGl4ZWxfbGVmdCwgMCwgMSwgMCwKLSAgICAgICBkb2M6 IC8qIFJldHVybiBsZWZ0IHBpeGVsIGVkZ2Ugb2Ygd2luZG93IFdJTkRPVy4KKyAgICAgICBk b2M6IC8qIFJldHVybiBsZWZ0IHBpeGVsIGVkZ2Ugb2Ygc3BlY2lmaWVkIFdJTkRPVy4KIFdJ TkRPVyBtdXN0IGJlIGEgdmFsaWQgd2luZG93IGFuZCBkZWZhdWx0cyB0byB0aGUgc2VsZWN0 ZWQgb25lLiAgKi8pCiAgIChMaXNwX09iamVjdCB3aW5kb3cpCiB7CkBAIC0xMDAzLDcgKzEw MjQsNyBAQCBERUZVTiAoIndpbmRvdy1waXhlbC1sZWZ0IiwgRndpbmRvd19waXhlbF9sZWZ0 LCBTd2luZG93X3BpeGVsX2xlZnQsIDAsIDEsIDAsCiB9CiAKIERFRlVOICgid2luZG93LXBp eGVsLXRvcCIsIEZ3aW5kb3dfcGl4ZWxfdG9wLCBTd2luZG93X3BpeGVsX3RvcCwgMCwgMSwg MCwKLSAgICAgICBkb2M6IC8qIFJldHVybiB0b3AgcGl4ZWwgZWRnZSBvZiB3aW5kb3cgV0lO RE9XLgorICAgICAgIGRvYzogLyogUmV0dXJuIHRvcCBwaXhlbCBlZGdlIG9mIHNwZWNpZmll ZCBXSU5ET1cuCiBXSU5ET1cgbXVzdCBiZSBhIHZhbGlkIHdpbmRvdyBhbmQgZGVmYXVsdHMg dG8gdGhlIHNlbGVjdGVkIG9uZS4gICovKQogICAoTGlzcF9PYmplY3Qgd2luZG93KQogewpA QCAtMTAxMSw3ICsxMDMyLDcgQEAgREVGVU4gKCJ3aW5kb3ctcGl4ZWwtdG9wIiwgRndpbmRv d19waXhlbF90b3AsIFN3aW5kb3dfcGl4ZWxfdG9wLCAwLCAxLCAwLAogfQogCiBERUZVTiAo IndpbmRvdy1sZWZ0LWNvbHVtbiIsIEZ3aW5kb3dfbGVmdF9jb2x1bW4sIFN3aW5kb3dfbGVm dF9jb2x1bW4sIDAsIDEsIDAsCi0gICAgICAgZG9jOiAvKiBSZXR1cm4gbGVmdCBjb2x1bW4g b2Ygd2luZG93IFdJTkRPVy4KKyAgICAgICBkb2M6IC8qIFJldHVybiBsZWZ0IGNvbHVtbiBv ZiBzcGVjaWZpZWQgV0lORE9XLgogVGhpcyBpcyB0aGUgZGlzdGFuY2UsIGluIGNvbHVtbnMs IGJldHdlZW4gdGhlIGxlZnQgZWRnZSBvZiBXSU5ET1cgYW5kCiB0aGUgbGVmdCBlZGdlIG9m IHRoZSBmcmFtZSdzIHdpbmRvdyBhcmVhLiAgRm9yIGluc3RhbmNlLCB0aGUgcmV0dXJuCiB2 YWx1ZSBpcyAwIGlmIHRoZXJlIGlzIG5vIHdpbmRvdyB0byB0aGUgbGVmdCBvZiBXSU5ET1cu CkBAIC0xMDIzLDcgKzEwNDQsNyBAQCBERUZVTiAoIndpbmRvdy1sZWZ0LWNvbHVtbiIsIEZ3 aW5kb3dfbGVmdF9jb2x1bW4sIFN3aW5kb3dfbGVmdF9jb2x1bW4sIDAsIDEsIDAsCiB9CiAK IERFRlVOICgid2luZG93LXRvcC1saW5lIiwgRndpbmRvd190b3BfbGluZSwgU3dpbmRvd190 b3BfbGluZSwgMCwgMSwgMCwKLSAgICAgICBkb2M6IC8qIFJldHVybiB0b3AgbGluZSBvZiB3 aW5kb3cgV0lORE9XLgorICAgICAgIGRvYzogLyogUmV0dXJuIHRvcCBsaW5lIG9mIHNwZWNp ZmllZCBXSU5ET1cuCiBUaGlzIGlzIHRoZSBkaXN0YW5jZSwgaW4gbGluZXMsIGJldHdlZW4g dGhlIHRvcCBvZiBXSU5ET1cgYW5kIHRoZSB0b3AKIG9mIHRoZSBmcmFtZSdzIHdpbmRvdyBh cmVhLiAgRm9yIGluc3RhbmNlLCB0aGUgcmV0dXJuIHZhbHVlIGlzIDAgaWYKIHRoZXJlIGlz IG5vIHdpbmRvdyBhYm92ZSBXSU5ET1cuCkBAIC0yMDM2LDcgKzIwNTcsNyBAQCBERUZVTiAo InBvcy12aXNpYmxlLWluLXdpbmRvdy1wIiwgRnBvc192aXNpYmxlX2luX3dpbmRvd19wLAog CiBERUZVTiAoIndpbmRvdy1saW5lLWhlaWdodCIsIEZ3aW5kb3dfbGluZV9oZWlnaHQsCiAg ICAgICAgU3dpbmRvd19saW5lX2hlaWdodCwgMCwgMiwgMCwKLSAgICAgICBkb2M6IC8qIFJl dHVybiBoZWlnaHQgaW4gcGl4ZWxzIG9mIHRleHQgbGluZSBMSU5FIGluIHdpbmRvdyBXSU5E T1cuCisgICAgICAgZG9jOiAvKiBSZXR1cm4gaGVpZ2h0IGluIHBpeGVscyBvZiB0ZXh0IGxp bmUgTElORSBpbiBzcGVjaWZpZWQgV0lORE9XLgogV0lORE9XIG11c3QgYmUgYSBsaXZlIHdp bmRvdyBhbmQgZGVmYXVsdHMgdG8gdGhlIHNlbGVjdGVkIG9uZS4KIAogUmV0dXJuIGhlaWdo dCBvZiBjdXJyZW50IGxpbmUgaWYgTElORSBpcyBvbWl0dGVkIG9yIG5pbC4gIFJldHVybiBo ZWlnaHQgb2YKQEAgLTIzNTgsMTEgKzIzNzksMTEgQEAgREVGVU4gKCJzZXQtd2luZG93LW5l eHQtYnVmZmVycyIsIEZzZXRfd2luZG93X25leHRfYnVmZmVycywKIERFRlVOICgid2luZG93 LXBhcmFtZXRlcnMiLCBGd2luZG93X3BhcmFtZXRlcnMsIFN3aW5kb3dfcGFyYW1ldGVycywK ICAgICAgICAwLCAxLCAwLAogICAgICAgIGRvYzogLyogUmV0dXJuIHRoZSBwYXJhbWV0ZXJz IG9mIFdJTkRPVyBhbmQgdGhlaXIgdmFsdWVzLgotV0lORE9XIG11c3QgYmUgYSB2YWxpZCB3 aW5kb3cgYW5kIGRlZmF1bHRzIHRvIHRoZSBzZWxlY3RlZCBvbmUuICBUaGUKLXJldHVybiB2 YWx1ZSBpcyBhIGxpc3Qgb2YgZWxlbWVudHMgb2YgdGhlIGZvcm0gKFBBUkFNRVRFUiAuIFZB TFVFKS4gICovKQorV0lORE9XIGNhbiBiZSBhbnkgd2luZG93IGFuZCBkZWZhdWx0cyB0byB0 aGUgc2VsZWN0ZWQgb25lLiAgVGhlIHJldHVybgordmFsdWUgaXMgYSBsaXN0IG9mIGVsZW1l bnRzIG9mIHRoZSBmb3JtIChQQVJBTUVURVIgLiBWQUxVRSkuICAqLykKICAgKExpc3BfT2Jq ZWN0IHdpbmRvdykKIHsKLSAgcmV0dXJuIEZjb3B5X2FsaXN0IChkZWNvZGVfdmFsaWRfd2lu ZG93ICh3aW5kb3cpLT53aW5kb3dfcGFyYW1ldGVycyk7CisgIHJldHVybiBGY29weV9hbGlz dCAoZGVjb2RlX2FueV93aW5kb3cgKHdpbmRvdyktPndpbmRvd19wYXJhbWV0ZXJzKTsKIH0K IAogTGlzcF9PYmplY3QKQEAgLTI1NTYsNyArMjU3Nyw3IEBAIHJlcGxhY2Vfd2luZG93IChM aXNwX09iamVjdCBvbGQsIExpc3BfT2JqZWN0IG5ldywgYm9vbCBzZXRmbGFnKQogICAgIHdz ZXRfY29tYmluYXRpb24gKFhXSU5ET1cgKHRlbSksIFhXSU5ET1cgKHRlbSktPmhvcml6b250 YWwsIG5ldyk7CiB9CiAKLS8qIElmIHdpbmRvdyBXSU5ET1cgYW5kIGl0cyBwYXJlbnQgd2lu ZG93IGFyZSBpc28tY29tYmluZWQsIG1lcmdlCisvKiBJZiBzcGVjaWZpZWQgV0lORE9XIGFu ZCBpdHMgcGFyZW50IHdpbmRvdyBhcmUgaXNvLWNvbWJpbmVkLCBtZXJnZQogICAgV0lORE9X J3MgY2hpbGRyZW4gaW50byB0aG9zZSBvZiBpdHMgcGFyZW50IHdpbmRvdyBhbmQgbWFyayBX SU5ET1cgYXMKICAgIGRlbGV0ZWQuICAqLwogCkBAIC00NDkxLDQ1ICs0NTEyLDYgQEAgYWxs b2NhdGVfd2luZG93ICh2b2lkKQogCQkJCSAgICAgICBQVkVDX1dJTkRPVyk7CiB9CiAKLS8q IE1ha2UgbmV3IHdpbmRvdywgaGF2ZSBpdCByZXBsYWNlIFdJTkRPVyBpbiB3aW5kb3ctdHJl ZSwgYW5kIG1ha2UKLSAgIFdJTkRPVyBpdHMgb25seSB2ZXJ0aWNhbCBjaGlsZCAoSE9SRkxB RyBtZWFucyBtYWtlIFdJTkRPVyBpdHMgb25seQotICAgaG9yaXpvbnRhbCBjaGlsZCkuICAg Ki8KLXN0YXRpYyB2b2lkCi1tYWtlX3BhcmVudF93aW5kb3cgKExpc3BfT2JqZWN0IHdpbmRv dywgYm9vbCBob3JmbGFnKQotewotICBMaXNwX09iamVjdCBwYXJlbnQ7Ci0gIHJlZ2lzdGVy IHN0cnVjdCB3aW5kb3cgKm8sICpwOwotCi0gIG8gPSBYV0lORE9XICh3aW5kb3cpOwotICBw ID0gYWxsb2NhdGVfd2luZG93ICgpOwotICBtZW1jcHkgKChjaGFyICopIHAgKyBzaXplb2Yg KHVuaW9uIHZlY3Rvcmxpa2VfaGVhZGVyKSwKLQkgIChjaGFyICopIG8gKyBzaXplb2YgKHVu aW9uIHZlY3Rvcmxpa2VfaGVhZGVyKSwKLQkgIHdvcmRfc2l6ZSAqIFZFQ1NJWkUgKHN0cnVj dCB3aW5kb3cpKTsKLSAgLyogUCdzIGJ1ZmZlciBzbG90IG1heSBjaGFuZ2UgZnJvbSBuaWwg dG8gYSBidWZmZXIuLi4gICovCi0gIGFkanVzdF93aW5kb3dfY291bnQgKHAsIDEpOwotICBY U0VUV0lORE9XIChwYXJlbnQsIHApOwotCi0gIHAtPnNlcXVlbmNlX251bWJlciA9ICsrc2Vx dWVuY2VfbnVtYmVyOwotCi0gIHJlcGxhY2Vfd2luZG93ICh3aW5kb3csIHBhcmVudCwgdHJ1 ZSk7Ci0KLSAgd3NldF9uZXh0IChvLCBRbmlsKTsKLSAgd3NldF9wcmV2IChvLCBRbmlsKTsK LSAgd3NldF9wYXJlbnQgKG8sIHBhcmVudCk7Ci0gIC8qIC4uLmJ1dCBub3cgUCBiZWNvbWVz IGFuIGludGVybmFsIHdpbmRvdy4gICovCi0gIHdzZXRfc3RhcnQgKHAsIFFuaWwpOwotICB3 c2V0X3BvaW50bSAocCwgUW5pbCk7Ci0gIHdzZXRfb2xkX3BvaW50bSAocCwgUW5pbCk7Ci0g IHdzZXRfYnVmZmVyIChwLCBRbmlsKTsKLSAgd3NldF9jb21iaW5hdGlvbiAocCwgaG9yZmxh Zywgd2luZG93KTsKLSAgd3NldF9jb21iaW5hdGlvbl9saW1pdCAocCwgUW5pbCk7Ci0gIC8q IFJlc2V0IGFueSBwcmV2aW91cyBhbmQgbmV4dCBidWZmZXJzIG9mIHAgd2hpY2ggaGF2ZSBi ZWVuIGluc3RhbGxlZAotICAgICBieSB0aGUgbWVtY3B5IGFib3ZlLiAgKi8KLSAgd3NldF9w cmV2X2J1ZmZlcnMgKHAsIFFuaWwpOwotICB3c2V0X25leHRfYnVmZmVycyAocCwgUW5pbCk7 Ci0gIHdzZXRfd2luZG93X3BhcmFtZXRlcnMgKHAsIFFuaWwpOwotfQotCiAvKiBNYWtlIG5l dyB3aW5kb3cgZnJvbSBzY3JhdGNoLiAgKi8KIExpc3BfT2JqZWN0CiBtYWtlX3dpbmRvdyAo dm9pZCkKQEAgLTUwNzMsNyArNTA1NSw3IEBAIHJlc2l6ZV9mcmFtZV93aW5kb3dzIChzdHJ1 Y3QgZnJhbWUgKmYsIGludCBzaXplLCBib29sIGhvcmZsYWcpCiB9CiAKIAotREVGVU4gKCJz cGxpdC13aW5kb3ctaW50ZXJuYWwiLCBGc3BsaXRfd2luZG93X2ludGVybmFsLCBTc3BsaXRf d2luZG93X2ludGVybmFsLCA0LCA0LCAwLAorREVGVU4gKCJzcGxpdC13aW5kb3ctaW50ZXJu YWwiLCBGc3BsaXRfd2luZG93X2ludGVybmFsLCBTc3BsaXRfd2luZG93X2ludGVybmFsLCA0 LCA1LCAwLAogICAgICAgIGRvYzogLyogU3BsaXQgd2luZG93IE9MRC4KIFNlY29uZCBhcmd1 bWVudCBQSVhFTC1TSVpFIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHBpeGVscyBvZiB0aGUK IG5ldyB3aW5kb3cuICBJdCBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlci4KQEAgLTUwODgs MzIgKzUwNzAsMzMgQEAgREVGVU4gKCJzcGxpdC13aW5kb3ctaW50ZXJuYWwiLCBGc3BsaXRf d2luZG93X2ludGVybmFsLCBTc3BsaXRfd2luZG93X2ludGVybmFsLAogdGhlIHJpZ2h0IHNp ZGUgb2YgV0lORE9XLiAgU0lERSBgbGVmdCcgbWVhbnMgdGhlIG5ldyB3aW5kb3cgc2hhbGwg YmUKIGxvY2F0ZWQgb24gdGhlIGxlZnQgb2YgV0lORE9XLiAgSW4gYm90aCBjYXNlcyBQSVhF TC1TSVpFIHNwZWNpZmllcyB0aGUKIHdpZHRoIG9mIHRoZSBuZXcgd2luZG93IGluY2x1ZGlu ZyBzcGFjZSByZXNlcnZlZCBmb3IgZnJpbmdlcyBhbmQgdGhlCi1zY3JvbGxiYXIgb3IgYSBk aXZpZGVyIGNvbHVtbi4KK3Njcm9sbCBiYXIgb3IgYSBkaXZpZGVyIGNvbHVtbi4KIAogRm91 cnRoIGFyZ3VtZW50IE5PUk1BTC1TSVpFIHNwZWNpZmllcyB0aGUgbm9ybWFsIHNpemUgb2Yg dGhlIG5ldyB3aW5kb3cKLWFjY29yZGluZyB0byB0aGUgU0lERSBhcmd1bWVudC4KK2FjY29y ZGluZyB0byB0aGUgU0lERSBhcmd1bWVudC4gIE9wdGlvbmFsIGZpZnRoIGFyZ3VtZW50IFJF RkVSIGlzIGFzIGZvcgorJ3NwbGl0LXdpbmRvdycuCiAKIFRoZSBuZXcgcGl4ZWwgYW5kIG5v cm1hbCBzaXplcyBvZiBhbGwgaW52b2x2ZWQgd2luZG93cyBtdXN0IGhhdmUgYmVlbgogc2V0 IGNvcnJlY3RseS4gIFNlZSB0aGUgY29kZSBvZiBgc3BsaXQtd2luZG93JyBmb3IgaG93IHRo aXMgaXMgZG9uZS4gICovKQotICAoTGlzcF9PYmplY3Qgb2xkLCBMaXNwX09iamVjdCBwaXhl bF9zaXplLCBMaXNwX09iamVjdCBzaWRlLCBMaXNwX09iamVjdCBub3JtYWxfc2l6ZSkKLXsK LSAgLyogT0xEICgqbykgaXMgdGhlIHdpbmRvdyB3ZSBoYXZlIHRvIHNwbGl0LiAgKCpwKSBp cyBlaXRoZXIgT0xEJ3MKLSAgICAgcGFyZW50IHdpbmRvdyBvciBhbiBpbnRlcm5hbCB3aW5k b3cgd2UgaGF2ZSB0byBpbnN0YWxsIGFzIE9MRCdzIG5ldwotICAgICBwYXJlbnQuICBSRUZF UkVOQ0UgKCpyKSBtdXN0IGRlbm90ZSBhIGxpdmUgd2luZG93LCBvciBpcyBzZXQgdG8gT0xE Ci0gICAgIHByb3ZpZGVkIE9MRCBpcyBhIGxlYWYgd2luZG93LCBvciB0byB0aGUgZnJhbWUn cyBzZWxlY3RlZCB3aW5kb3cuCi0gICAgIE5FVyAoKm4pIGlzIHRoZSBuZXcgd2luZG93IGNy ZWF0ZWQgd2l0aCBzb21lIHBhcmFtZXRlcnMgdGFrZW4gZnJvbQotICAgICBSRUZFUkVOQ0Ug KCpyKS4gICovCi0gIExpc3BfT2JqZWN0IG5ldywgZnJhbWUsIHJlZmVyZW5jZTsKLSAgc3Ry dWN0IHdpbmRvdyAqbywgKnAsICpuLCAqciwgKmM7Ci0gIHN0cnVjdCBmcmFtZSAqZjsKKyAg KExpc3BfT2JqZWN0IG9sZCwgTGlzcF9PYmplY3QgcGl4ZWxfc2l6ZSwgTGlzcF9PYmplY3Qg c2lkZSwKKyAgIExpc3BfT2JqZWN0IG5vcm1hbF9zaXplLCBMaXNwX09iamVjdCByZWZlcikK K3sKKyAgLyogT0xEICgqbykgaXMgdGhlIHdpbmRvdyB0byBzcGxpdC4gIFJFRkVSICgqcikg aXMgYSByZWZlcmVuY2Ugd2luZG93LAorICAgICBlaXRoZXIgYW4gYXJiaXRyYXJ5IGxpdmUg d2luZG93IG9yIGEgZm9ybWVyIGxpdmUsIG5vdyBkZWxldGVkCisgICAgIHdpbmRvdyBvbiB0 aGUgc2FtZSBmcmFtZSBhcyBPTEQuICBORVcgKCpuKSBpcyB0aGUgbmV3IHdpbmRvdworICAg ICBjcmVhdGVkIGFuZXcgb3IgcmVzdXJyZWN0ZWQgZnJvbSBSRUZFUiAoKnIpLCBpZiBzcGVj aWZpZWQuICAqcAorICAgICByZWZlcnMgZWl0aGVyIHRvIE9MRCdzIHBhcmVudCB3aW5kb3cg dGhhdCB3aWxsIGJlY29tZSBORVcncyBwYXJlbnQKKyAgICAgd2luZG93IHRvbyBvciB0byBh IG5ldyBpbnRlcm5hbCB3aW5kb3cgdGhhdCBiZWNvbWVzIE9MRCdzIGFuZCBORVcncworICAg ICBuZXcgcGFyZW50LiAgKi8KKyAgc3RydWN0IHdpbmRvdyAqbyA9IGRlY29kZV92YWxpZF93 aW5kb3cgKG9sZCk7CisgIExpc3BfT2JqZWN0IGZyYW1lID0gV0lORE9XX0ZSQU1FIChvKTsK KyAgc3RydWN0IGZyYW1lICpmID0gWEZSQU1FIChmcmFtZSk7CisgIHN0cnVjdCB3aW5kb3cg KnAsICpuLCAqciwgKmM7CiAgIGJvb2wgaG9yZmxhZwogICAgIC8qIEhPUkZMQUcgaXMgdHJ1 ZSB3aGVuIHdlIHNwbGl0IHNpZGUtYnktc2lkZSwgZmFsc2Ugb3RoZXJ3aXNlLiAgKi8KICAg ICA9IEVRIChzaWRlLCBRdCkgfHwgRVEgKHNpZGUsIFFsZWZ0KSB8fCBFUSAoc2lkZSwgUXJp Z2h0KTsKLQotICBDSEVDS19XSU5ET1cgKG9sZCk7Ci0gIG8gPSBYV0lORE9XIChvbGQpOwot ICBmcmFtZSA9IFdJTkRPV19GUkFNRSAobyk7Ci0gIGYgPSBYRlJBTUUgKGZyYW1lKTsKKyAg TGlzcF9PYmplY3QgbmV3LCBwYXJlbnQgPSBRbmlsOworICBib29sIGRlYWQgPSBmYWxzZTsK IAogICBDSEVDS19GSVhOVU0gKHBpeGVsX3NpemUpOwogICBFTUFDU19JTlQgdG90YWxfc2l6 ZQpAQCAtNTEzMSwxNCArNTExNCw3MiBAQCBERUZVTiAoInNwbGl0LXdpbmRvdy1pbnRlcm5h bCIsIEZzcGxpdF93aW5kb3dfaW50ZXJuYWwsIFNzcGxpdF93aW5kb3dfaW50ZXJuYWwsCiAJ ICAgPyBXSU5ET1dfVkVSVElDQUxfQ09NQklOQVRJT05fUCAoWFdJTkRPVyAoby0+cGFyZW50 KSkKIAkgICA6IFdJTkRPV19IT1JJWk9OVEFMX0NPTUJJTkFUSU9OX1AgKFhXSU5ET1cgKG8t PnBhcmVudCkpKSk7CiAKLSAgLyogV2UgbmVlZCBhIGxpdmUgcmVmZXJlbmNlIHdpbmRvdyB0 byBpbml0aWFsaXplIHNvbWUgcGFyYW1ldGVycy4gICovCi0gIGlmIChXSU5ET1dfTElWRV9Q IChvbGQpKQotICAgIC8qIE9MRCBpcyBsaXZlLCB1c2UgaXQgYXMgcmVmZXJlbmNlIHdpbmRv dy4gICovCi0gICAgcmVmZXJlbmNlID0gb2xkOworICAvKiBTZXQgdXAgcmVmZXJlbmNlIHdp bmRvdy4gICovCisgIGlmIChOSUxQIChyZWZlcikpCisgICAgeworICAgICAgaWYgKFdJTkRP V19MSVZFX1AgKG9sZCkpCisJLyogT0xEIGlzIGxpdmUsIHVzZSBpdCBhcyByZWZlcmVuY2Ug d2luZG93LiAgKi8KKwlyZWZlciA9IG9sZDsKKyAgICAgIGVsc2UKKwkvKiBVc2UgdGhlIGZy YW1lJ3Mgc2VsZWN0ZWQgd2luZG93IGFzIHJlZmVyZW5jZSB3aW5kb3cuICAqLworCXJlZmVy ID0gRlJBTUVfU0VMRUNURURfV0lORE9XIChmKTsKKworICAgICAgciA9IFhXSU5ET1cgKHJl ZmVyKTsKKyAgICB9CisgIGVsc2UgaWYgKENPTlNQIChyZWZlcikpCisgICAgeworICAgICAg LyogSWYgUkVGRVIgaXMgYSBjb25zLCB0aGVuIGl0cyBjYXIgbXVzdCBiZSBhIGRlbGV0ZWQs IGZvcm1lciBsaXZlCisJIHdpbmRvdyBhbmQgaXRzIGNkciBtdXN0IGJlIGEgZGVsZXRlZCBm b3JtZXIgcGFyZW50IHdpbmRvdy4gIFNldAorCSBQQVJFTlQgdG8gdGhlIGNkciBvZiBSRUZF UiBhbmQgUkVGRVIgdG8gaXRzIGNhci4gIFdJTkRPVyBhbmQKKwkgUkVGRVIgZW5kIHVwIGFz IHRoZSBzb2xlIGNoaWxkcmVuIG9mIFBBUkVOVCB3aGljaCByZXBsYWNlcworCSBXSU5ET1cg aW4gdGhlIHdpbmRvdyB0cmVlLiAgQXMgYSBzcGVjaWFsIGNhc2UsIGlmIFJFRkVSJ3MgY2Ry CisJIGlzIHQsIHJldXNlIFJFRkVSJ3MgY2FyJ3Mgb2xkIHBhcmVudCBhcyBuZXcgcGFyZW50 IHByb3ZpZGVkIGl0CisJIGlzIGEgZGVsZXRlZCBmcm9tZXIgcGFyZW50IHdpbmRvdy4gICov CisgICAgICBwYXJlbnQgPSBGY2RyIChyZWZlcik7CisgICAgICByZWZlciA9IEZjYXIgKHJl ZmVyKTsKKyAgICAgIHIgPSBkZWNvZGVfYW55X3dpbmRvdyAocmVmZXIpOworCisgICAgICBp ZiAoIU5JTFAgKHItPmNvbnRlbnRzKSB8fCAhQlVGRkVSUCAoci0+b2xkX2J1ZmZlcikpCisJ ZXJyb3IgKCJSRUZFUidzIGNhciBtdXN0IHNwZWNpZnkgYSBkZWxldGVkLCBmb3JtZXIgbGl2 ZSB3aW5kb3ciKTsKKyAgICAgIGVsc2UgaWYgKCFCVUZGRVJfTElWRV9QIChYQlVGRkVSIChy LT5vbGRfYnVmZmVyKSkpCisJZXJyb3IgKCJUaGUgYnVmZmVyIGZvcm1lcmx5IHNob3duIGJ5 IFJFRkVSJ3MgY2FyIGhhcyBiZWVuIGtpbGxlZCIpOworICAgICAgZWxzZSBpZiAoIUVRIChy LT5mcmFtZSwgZnJhbWUpKQorCWVycm9yICgiUkVGRVIncyBjYXIgbXVzdCBzcGVjaWZ5IGEg d2luZG93IG9uIHNhbWUgZnJhbWUgYXMgV0lORE9XIik7CisKKyAgICAgIGlmIChFUSAocGFy ZW50LCBRdCkpCisJLyogSWYgUkVGRVIncyBjZHIgaXMgdCwgdXNlIHRoZSBvbGQgcGFyZW50 IG9mIFJFRkVSJ3MgY2FyIGFzIG5ldworCSAgIHBhcmVudC4gICovCisJcGFyZW50ID0gci0+ cGFyZW50OworCisgICAgICBwID0gZGVjb2RlX2FueV93aW5kb3cgKHBhcmVudCk7CisKKyAg ICAgIGlmICghTklMUCAocC0+Y29udGVudHMpIHx8IEJVRkZFUlAgKHAtPm9sZF9idWZmZXIp KQorCWVycm9yICgiUkVGRVIncyBjZHIgbXVzdCBzcGVjaWZ5IGEgZGVsZXRlZCwgZm9ybWVy IHBhcmVudCB3aW5kb3ciKTsKKyAgICAgIGVsc2UgaWYgKCFFUSAocC0+ZnJhbWUsIGZyYW1l KSkKKwllcnJvciAoIlJFRkVSJ3MgY2RyIG11c3Qgc3BlY2lmeSB3aW5kb3cgb24gc2FtZSBm cmFtZSBhcyBXSU5ET1ciKTsKKworICAgICAgZGVhZCA9IHRydWU7CisgICAgfQogICBlbHNl Ci0gICAgLyogVXNlIHRoZSBmcmFtZSdzIHNlbGVjdGVkIHdpbmRvdyBhcyByZWZlcmVuY2Ug d2luZG93LiAgKi8KLSAgICByZWZlcmVuY2UgPSBGUkFNRV9TRUxFQ1RFRF9XSU5ET1cgKGYp OwotICByID0gWFdJTkRPVyAocmVmZXJlbmNlKTsKKyAgICB7CisgICAgICByID0gZGVjb2Rl X2FueV93aW5kb3cgKHJlZmVyKTsKKworICAgICAgaWYgKE5JTFAgKHItPmNvbnRlbnRzKSkK KwkvKiBQcmVzdW1hYmx5IGEgZGVsZXRlZCwgZm9ybWVyIGxpdmUgd2luZG93LiAgQ2hlY2sg d2hldGhlciBpdHMKKwkgICBjb250ZW50cyBjYW4gYmUgdXNlZC4gICovCisJeworCSAgaWYg KCFCVUZGRVJQIChyLT5vbGRfYnVmZmVyKSkKKwkgICAgZXJyb3IgKCJSRUZFUiBtdXN0IHNw ZWNpZnkgYSBmb3JtZXIgbGl2ZSB3aW5kb3cgKG11c3QgaGF2ZSBzaG93biBhIGJ1ZmZlciki KTsKKwkgIGVsc2UgaWYgKCFCVUZGRVJfTElWRV9QIChYQlVGRkVSIChyLT5vbGRfYnVmZmVy KSkpCisJICAgIGVycm9yICgiVGhlIGJ1ZmZlciBmb3JtZXJseSBzaG93biBieSBSRUZFUiBo YXMgYmVlbiBraWxsZWQiKTsKKwkgIGVsc2UgaWYgKCFFUSAoci0+ZnJhbWUsIGZyYW1lKSkK KwkgICAgZXJyb3IgKCJSRUZFUiBtdXN0IHNwZWNpZnkgYSB3aW5kb3cgb24gc2FtZSBmcmFt ZSBhcyBXSU5ET1ciKTsKKworCSAgZGVhZCA9IHRydWU7CisJfQorICAgICAgZWxzZSBpZiAo IVdJTkRPV19MSVZFX1AgKHJlZmVyKSkKKwllcnJvciAoIlJFRkVSIGlzIG5vdCBhIGxpdmUg d2luZG93IChkb2VzIG5vdCBzaG93IGEgYnVmZmVyKSIpOworICAgIH0KIAogICAvKiBUaGUg Zm9sbG93aW5nIGJ1Z3MgYXJlIGNhdWdodCBieSBgc3BsaXQtd2luZG93Jy4gICovCiAgIGlm IChNSU5JX1dJTkRPV19QIChvKSkKQEAgLTUxNDksMTYgKzUxOTAsMTggQEAgREVGVU4gKCJz cGxpdC13aW5kb3ctaW50ZXJuYWwiLCBGc3BsaXRfd2luZG93X2ludGVybmFsLCBTc3BsaXRf d2luZG93X2ludGVybmFsLAogICAgIC8qIGB3aW5kb3ctY29tYmluYXRpb24tcmVzaXplJyBu b24tbmlsIG1lYW5zIHRyeSB0byByZXNpemUgT0xEJ3Mgc2libGluZ3MKICAgICAgICBwcm9w b3J0aW9uYWxseS4gICovCiAgICAgewotICAgICAgcCA9IFhXSU5ET1cgKG8tPnBhcmVudCk7 CisgICAgICBzdHJ1Y3Qgd2luZG93ICpvcCA9IFhXSU5ET1cgKG8tPnBhcmVudCk7CisKICAg ICAgIC8qIFRlbXBvcmFyaWx5IHByZXRlbmQgd2Ugc3BsaXQgdGhlIHBhcmVudCB3aW5kb3cu ICAqLwogICAgICAgd3NldF9uZXdfcGl4ZWwKLQkocCwgbWFrZV9maXhudW0gKChob3JmbGFn ID8gcC0+cGl4ZWxfd2lkdGggOiBwLT5waXhlbF9oZWlnaHQpCisJKG9wLCBtYWtlX2ZpeG51 bSAoKGhvcmZsYWcgPyBvcC0+cGl4ZWxfd2lkdGggOiBvcC0+cGl4ZWxfaGVpZ2h0KQogCQkJ IC0gWEZJWE5VTSAocGl4ZWxfc2l6ZSkpKTsKLSAgICAgIGlmICghd2luZG93X3Jlc2l6ZV9j aGVjayAocCwgaG9yZmxhZykpCisgICAgICBpZiAoIXdpbmRvd19yZXNpemVfY2hlY2sgKG9w LCBob3JmbGFnKSkKIAllcnJvciAoIldpbmRvdyBzaXplcyBkb24ndCBmaXQiKTsKICAgICAg IGVsc2UKIAkvKiBVbmRvIHRoZSB0ZW1wb3JhcnkgcHJldGVuc2lvbi4gICovCi0Jd3NldF9u ZXdfcGl4ZWwgKHAsIG1ha2VfZml4bnVtIChob3JmbGFnID8gcC0+cGl4ZWxfd2lkdGggOiBw LT5waXhlbF9oZWlnaHQpKTsKKwl3c2V0X25ld19waXhlbAorCSAgKG9wLCBtYWtlX2ZpeG51 bSAoaG9yZmxhZyA/IG9wLT5waXhlbF93aWR0aCA6IG9wLT5waXhlbF9oZWlnaHQpKTsKICAg ICB9CiAgIGVsc2UKICAgICB7CkBAIC01MTc4LDggKzUyMjEsMjQgQEAgREVGVU4gKCJzcGxp dC13aW5kb3ctaW50ZXJuYWwiLCBGc3BsaXRfd2luZG93X2ludGVybmFsLCBTc3BsaXRfd2lu ZG93X2ludGVybmFsLAogICAgICAgTGlzcF9PYmplY3QgbmV3X25vcm1hbAogCT0gaG9yZmxh ZyA/IG8tPm5vcm1hbF9jb2xzIDogby0+bm9ybWFsX2xpbmVzOwogCi0gICAgICBtYWtlX3Bh cmVudF93aW5kb3cgKG9sZCwgaG9yZmxhZyk7Ci0gICAgICBwID0gWFdJTkRPVyAoby0+cGFy ZW50KTsKKyAgICAgIGlmIChOSUxQIChwYXJlbnQpKQorCS8qIFRoaXMgaXMgdGhlIGNydXgg b2YgdGhlIG9sZCBtYWtlX3BhcmVudF93aW5kb3cuICAqLworCXsKKwkgIHAgPSBhbGxvY2F0 ZV93aW5kb3cgKCk7CisJICBYU0VUV0lORE9XIChwYXJlbnQsIHApOworCSAgcC0+c2VxdWVu Y2VfbnVtYmVyID0gKytzZXF1ZW5jZV9udW1iZXI7CisJICB3c2V0X2ZyYW1lIChwLCBmcmFt ZSk7CisJfQorICAgICAgZWxzZQorCS8qIFBhY2lmeSBHQ0MuICAqLworCXAgPSBYV0lORE9X IChwYXJlbnQpOworCisgICAgICByZXBsYWNlX3dpbmRvdyAob2xkLCBwYXJlbnQsIHRydWUp OworICAgICAgd3NldF9uZXh0IChvLCBRbmlsKTsKKyAgICAgIHdzZXRfcHJldiAobywgUW5p bCk7CisgICAgICB3c2V0X3BhcmVudCAobywgcGFyZW50KTsKKyAgICAgIHdzZXRfY29tYmlu YXRpb24gKHAsIGhvcmZsYWcsIG9sZCk7CisKICAgICAgIGlmIChFUSAoVndpbmRvd19jb21i aW5hdGlvbl9saW1pdCwgUXQpKQogCS8qIFN0b3JlIHQgaW4gdGhlIG5ldyBwYXJlbnQncyBj b21iaW5hdGlvbl9saW1pdCBzbG90IHRvIGF2b2lkCiAJICAgdGhhdCBpdHMgY2hpbGRyZW4g Z2V0IG1lcmdlZCBpbnRvIGFub3RoZXIgd2luZG93LiAgKi8KQEAgLTUxOTUsNyArNTI1NCwx MiBAQCBERUZVTiAoInNwbGl0LXdpbmRvdy1pbnRlcm5hbCIsIEZzcGxpdF93aW5kb3dfaW50 ZXJuYWwsIFNzcGxpdF93aW5kb3dfaW50ZXJuYWwsCiAgICAgcCA9IFhXSU5ET1cgKG8tPnBh cmVudCk7CiAKICAgZnNldF9yZWRpc3BsYXkgKGYpOwotICBuZXcgPSBtYWtlX3dpbmRvdyAo KTsKKworICBpZiAoZGVhZCkKKyAgICBuZXcgPSByZWZlcjsKKyAgZWxzZQorICAgIG5ldyA9 IG1ha2Vfd2luZG93ICgpOworCiAgIG4gPSBYV0lORE9XIChuZXcpOwogICB3c2V0X2ZyYW1l IChuLCBmcmFtZSk7CiAgIHdzZXRfcGFyZW50IChuLCBvLT5wYXJlbnQpOwpAQCAtNTIyMiwx NiArNTI4NiwxOSBAQCBERUZVTiAoInNwbGl0LXdpbmRvdy1pbnRlcm5hbCIsIEZzcGxpdF93 aW5kb3dfaW50ZXJuYWwsIFNzcGxpdF93aW5kb3dfaW50ZXJuYWwsCiAgIG4tPndpbmRvd19l bmRfdmFsaWQgPSBmYWxzZTsKICAgbi0+bGFzdF9jdXJzb3JfdnBvcyA9IDA7CiAKLSAgLyog R2V0IHNwZWNpYWwgZ2VvbWV0cnkgc2V0dGluZ3MgZnJvbSByZWZlcmVuY2Ugd2luZG93LiAg Ki8KLSAgbi0+bGVmdF9tYXJnaW5fY29scyA9IHItPmxlZnRfbWFyZ2luX2NvbHM7Ci0gIG4t PnJpZ2h0X21hcmdpbl9jb2xzID0gci0+cmlnaHRfbWFyZ2luX2NvbHM7Ci0gIG4tPmxlZnRf ZnJpbmdlX3dpZHRoID0gci0+bGVmdF9mcmluZ2Vfd2lkdGg7Ci0gIG4tPnJpZ2h0X2ZyaW5n ZV93aWR0aCA9IHItPnJpZ2h0X2ZyaW5nZV93aWR0aDsKLSAgbi0+ZnJpbmdlc19vdXRzaWRl X21hcmdpbnMgPSByLT5mcmluZ2VzX291dHNpZGVfbWFyZ2luczsKLSAgbi0+c2Nyb2xsX2Jh cl93aWR0aCA9IHItPnNjcm9sbF9iYXJfd2lkdGg7Ci0gIG4tPnNjcm9sbF9iYXJfaGVpZ2h0 ID0gci0+c2Nyb2xsX2Jhcl9oZWlnaHQ7Ci0gIHdzZXRfdmVydGljYWxfc2Nyb2xsX2Jhcl90 eXBlIChuLCByLT52ZXJ0aWNhbF9zY3JvbGxfYmFyX3R5cGUpOwotICB3c2V0X2hvcml6b250 YWxfc2Nyb2xsX2Jhcl90eXBlIChuLCByLT5ob3Jpem9udGFsX3Njcm9sbF9iYXJfdHlwZSk7 CisgIGlmICghZGVhZCkKKyAgICB7CisgICAgICAvKiBHZXQgc3BlY2lhbCBnZW9tZXRyeSBz ZXR0aW5ncyBmcm9tIHJlZmVyZW5jZSB3aW5kb3cuICAqLworICAgICAgbi0+bGVmdF9tYXJn aW5fY29scyA9IHItPmxlZnRfbWFyZ2luX2NvbHM7CisgICAgICBuLT5yaWdodF9tYXJnaW5f Y29scyA9IHItPnJpZ2h0X21hcmdpbl9jb2xzOworICAgICAgbi0+bGVmdF9mcmluZ2Vfd2lk dGggPSByLT5sZWZ0X2ZyaW5nZV93aWR0aDsKKyAgICAgIG4tPnJpZ2h0X2ZyaW5nZV93aWR0 aCA9IHItPnJpZ2h0X2ZyaW5nZV93aWR0aDsKKyAgICAgIG4tPmZyaW5nZXNfb3V0c2lkZV9t YXJnaW5zID0gci0+ZnJpbmdlc19vdXRzaWRlX21hcmdpbnM7CisgICAgICBuLT5zY3JvbGxf YmFyX3dpZHRoID0gci0+c2Nyb2xsX2Jhcl93aWR0aDsKKyAgICAgIG4tPnNjcm9sbF9iYXJf aGVpZ2h0ID0gci0+c2Nyb2xsX2Jhcl9oZWlnaHQ7CisgICAgICB3c2V0X3ZlcnRpY2FsX3Nj cm9sbF9iYXJfdHlwZSAobiwgci0+dmVydGljYWxfc2Nyb2xsX2Jhcl90eXBlKTsKKyAgICAg IHdzZXRfaG9yaXpvbnRhbF9zY3JvbGxfYmFyX3R5cGUgKG4sIHItPmhvcml6b250YWxfc2Ny b2xsX2Jhcl90eXBlKTsKKyAgICB9CiAKICAgLyogRGlyZWN0bHkgYXNzaWduIG9ydGhvZ29u YWwgY29vcmRpbmF0ZXMgYW5kIHNpemVzLiAgKi8KICAgaWYgKGhvcmZsYWcpCkBAIC01MjYw LDYgKzUzMjcsNyBAQCBERUZVTiAoInNwbGl0LXdpbmRvdy1pbnRlcm5hbCIsIEZzcGxpdF93 aW5kb3dfaW50ZXJuYWwsIFNzcGxpdF93aW5kb3dfaW50ZXJuYWwsCiAJc3VtID0gc3VtICsg WEZJWE5VTSAoYy0+bmV3X3RvdGFsKTsKICAgICAgIGMgPSBOSUxQIChjLT5uZXh0KSA/IDAg OiBYV0lORE9XIChjLT5uZXh0KTsKICAgICB9CisKICAgd3NldF9uZXdfdG90YWwgKG4sIG1h a2VfZml4bnVtICgoaG9yZmxhZwogCQkJCSAgID8gcC0+dG90YWxfY29scwogCQkJCSAgIDog cC0+dG90YWxfbGluZXMpCkBAIC01MjY3LDEwICs1MzM1LDMwIEBAIERFRlVOICgic3BsaXQt d2luZG93LWludGVybmFsIiwgRnNwbGl0X3dpbmRvd19pbnRlcm5hbCwgU3NwbGl0X3dpbmRv d19pbnRlcm5hbCwKICAgd3NldF9uZXdfbm9ybWFsIChuLCBub3JtYWxfc2l6ZSk7CiAKICAg YmxvY2tfaW5wdXQgKCk7CisKKyAgaWYgKGRlYWQpCisgICAgeworICAgICAgLyogR2V0IGRl YWQgd2luZG93IGJhY2sgaXRzIG9sZCBidWZmZXIgYW5kIG1hcmtlcnMuICAqLworICAgICAg d3NldF9idWZmZXIgKG4sIG4tPm9sZF9idWZmZXIpOworICAgICAgc2V0X21hcmtlcl9yZXN0 cmljdGVkCisJKG4tPnN0YXJ0LCBtYWtlX2ZpeG51bSAoWE1BUktFUiAobi0+c3RhcnQpLT5j aGFycG9zKSwgbi0+Y29udGVudHMpOworICAgICAgc2V0X21hcmtlcl9yZXN0cmljdGVkCisJ KG4tPnBvaW50bSwgbWFrZV9maXhudW0gKFhNQVJLRVIgKG4tPnBvaW50bSktPmNoYXJwb3Mp LCBuLT5jb250ZW50cyk7CisgICAgICBzZXRfbWFya2VyX3Jlc3RyaWN0ZWQKKwkobi0+b2xk X3BvaW50bSwgbWFrZV9maXhudW0gKFhNQVJLRVIgKG4tPm9sZF9wb2ludG0pLT5jaGFycG9z KSwKKwkgbi0+Y29udGVudHMpOworCisgICAgICBWd2luZG93X2xpc3QgPSBRbmlsOworICAg ICAgLyogUmVtb3ZlIHdpbmRvdyBmcm9tIHRoZSB0YWJsZSBvZiBkZWFkIHdpbmRvd3MuICAq LworICAgICAgRnJlbWhhc2ggKG1ha2VfZml4bnVtIChuLT5zZXF1ZW5jZV9udW1iZXIpLAor CQl3aW5kb3dfZGVhZF93aW5kb3dzX3RhYmxlKTsKKyAgICB9CisKICAgd2luZG93X3Jlc2l6 ZV9hcHBseSAocCwgaG9yZmxhZyk7CiAgIGFkanVzdF9mcmFtZV9nbHlwaHMgKGYpOwotICAv KiBTZXQgYnVmZmVyIG9mIE5FVyB0byBidWZmZXIgb2YgcmVmZXJlbmNlIHdpbmRvdy4gICov CisKICAgc2V0X3dpbmRvd19idWZmZXIgKG5ldywgci0+Y29udGVudHMsIHRydWUsIHRydWUp OworCiAgIEZSQU1FX1dJTkRPV19DSEFOR0UgKGYpID0gdHJ1ZTsKICAgdW5ibG9ja19pbnB1 dCAoKTsKIApAQCAtNTM2OCw2ICs1NDU2LDggQEAgREVGVU4gKCJkZWxldGUtd2luZG93LWlu dGVybmFsIiwgRmRlbGV0ZV93aW5kb3dfaW50ZXJuYWwsIFNkZWxldGVfd2luZG93X2ludGVy bmEKIAl9CiAgICAgICBlbHNlCiAJeworCSAgLyogU3RvcmUgV0lORE9XJ3MgYnVmZmVyIGlu IG9sZF9idWZmZXIuICAqLworCSAgd3NldF9vbGRfYnVmZmVyICh3LCB3LT5jb250ZW50cyk7 CiAJICB1bnNob3dfYnVmZmVyICh3KTsKIAkgIHVuY2hhaW5fbWFya2VyIChYTUFSS0VSICh3 LT5wb2ludG0pKTsKIAkgIHVuY2hhaW5fbWFya2VyIChYTUFSS0VSICh3LT5vbGRfcG9pbnRt KSk7CkBAIC03NzEyLDYgKzc4MDIsOCBAQCBkZWxldGVfYWxsX2NoaWxkX3dpbmRvd3MgKExp c3BfT2JqZWN0IHdpbmRvdykKICAgICB9CiAgIGVsc2UgaWYgKEJVRkZFUlAgKHctPmNvbnRl bnRzKSkKICAgICB7CisgICAgICAvKiBTdG9yZSBXSU5ET1cncyBidWZmZXIgaW4gb2xkX2J1 ZmZlci4gICovCisgICAgICB3c2V0X29sZF9idWZmZXIgKHcsIHctPmNvbnRlbnRzKTsKICAg ICAgIHVuc2hvd19idWZmZXIgKHcpOwogICAgICAgdW5jaGFpbl9tYXJrZXIgKFhNQVJLRVIg KHctPnBvaW50bSkpOwogICAgICAgdW5jaGFpbl9tYXJrZXIgKFhNQVJLRVIgKHctPm9sZF9w b2ludG0pKTsKQEAgLTkwNjQsMTIgKzkxNTYsOSBAQCBzeW1zX29mX3dpbmRvdyAodm9pZCkK ICAgICBkb2M6IC8qIEhhc2ggdGFibGUgb2YgZGVhZCB3aW5kb3dzLgogRWFjaCBlbnRyeSBp biB0aGlzIHRhYmxlIG1hcHMgYSB3aW5kb3cgbnVtYmVyIHRvIGEgd2luZG93IG9iamVjdC4K IEVudHJpZXMgYXJlIGFkZGVkIGJ5IGBkZWxldGUtd2luZG93LWludGVybmFsJyBhbmQgYXJl IHJlbW92ZWQgYnkgdGhlCi1nYXJiYWdlIGNvbGxlY3Rvci4KLQotVGhpcyB0YWJsZSBpcyBt YWludGFpbmVkIGJ5IGNvZGUgaW4gd2luZG93LmMgYW5kIGlzIG1hZGUgdmlzaWJsZSBpbgot RWxpc3AgZm9yIHRlc3RpbmcgcHVycG9zZXMgb25seS4gICovKTsKK2dhcmJhZ2UgY29sbGVj dG9yLiAgKi8pOwogICB3aW5kb3dfZGVhZF93aW5kb3dzX3RhYmxlCi0gICAgPSBDQUxMTiAo Rm1ha2VfaGFzaF90YWJsZSwgUUN3ZWFrbmVzcywgUXQpOworICAgID0gQ0FMTE4gKEZtYWtl X2hhc2hfdGFibGUsIFFDd2Vha25lc3MsIFF2YWx1ZSk7CiAKICAgZGVmc3ViciAoJlNzZWxl Y3RlZF93aW5kb3cpOwogICBkZWZzdWJyICgmU29sZF9zZWxlY3RlZF93aW5kb3cpOwpAQCAt OTA4OSw2ICs5MTc4LDcgQEAgc3ltc19vZl93aW5kb3cgKHZvaWQpCiAgIGRlZnN1YnIgKCZT d2luZG93X2J1ZmZlcik7CiAgIGRlZnN1YnIgKCZTd2luZG93X29sZF9idWZmZXIpOwogICBk ZWZzdWJyICgmU3dpbmRvd19wYXJlbnQpOworICBkZWZzdWJyICgmU3dpbmRvd19jaGlsZCk7 CiAgIGRlZnN1YnIgKCZTd2luZG93X3RvcF9jaGlsZCk7CiAgIGRlZnN1YnIgKCZTd2luZG93 X2xlZnRfY2hpbGQpOwogICBkZWZzdWJyICgmU3dpbmRvd19uZXh0X3NpYmxpbmcpOwo= --------------Vi98pwJEVVx78L0F0QmVziFX--