Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1u9YZI-003KWQ-Oq for pgsql-hackers@arkaria.postgresql.org; Tue, 29 Apr 2025 00:11:25 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1u9YYI-00479M-P9 for pgsql-hackers@arkaria.postgresql.org; Tue, 29 Apr 2025 00:10:23 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1u9YYI-004797-7o for pgsql-hackers@lists.postgresql.org; Tue, 29 Apr 2025 00:10:23 +0000 Received: from mail-qv1-xf2f.google.com ([2607:f8b0:4864:20::f2f]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1u9YYG-0005k0-0p for pgsql-hackers@postgresql.org; Tue, 29 Apr 2025 00:10:22 +0000 Received: by mail-qv1-xf2f.google.com with SMTP id 6a1803df08f44-6e8f4c50a8fso56466266d6.1 for ; Mon, 28 Apr 2025 17:10:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; t=1745885418; x=1746490218; darn=postgresql.org; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=C2E4GBJE+RcCbbZ/MZaS13j7BxPpMDZDaSo6x9BS4ro=; b=hKczbUOIueYd+f7YBsTWOp332zXBd6MpezJPHJxx6ez14g95igbZLfi0319OtPBlh6 q84H9ioAzs8gmtdrdEDkoegTuFuCBMFzk1kE5Nqj7uoBG6YQQ/NT9pkliDyRQp7w2NWE mmVxmLxPsYjbRaNgdPP/0k2UjGZ4Vi0TPjInJ61MStegDzQkjGv/NOGMiVLOQAYWc+Iy zI9gBGjtnHfHtxvEWE3PRPxkhjDSCes6mwXgSqCx1nbRj/7NgprC2TNCIBgoVn+6gSaL zqlj4DLBMnXoh8LUM5/kAi5ZdgkMn5z3+45+k/gk7ojpqvjFOKHhpQxSraZGWFccIjJS 47cA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745885418; x=1746490218; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=C2E4GBJE+RcCbbZ/MZaS13j7BxPpMDZDaSo6x9BS4ro=; b=mtiVDn/R1btvO84zkEsAIMQS3tCbddjA1iEAAHS5vQxbQQbaebqPfiBiqT7QfjuDdE hQKfulWHH4diw7/XXpwa3SpVdU68wANR2fc30Ckp9fBeh3z4yHfOEYc4DiLkx7SrvxFE vOp1eoHfoDlfNgCxkbk63+KIorlhlYd8UStDj+UeghBY8fyZjekwF+NUvkvh56Gh2fv9 yRkEyvF5Jdmil/yDoeq2tWAcN2L3KsAAFhgZ3bgamb5QTNCNH6xotIjkb2mPVv55zVDO g9eADmyNLCGtrgptCwBFq7RwsCyrIOhkM5AugHpVOeJZQoM86YTLXd2zRQ1SX8EJO119 tbGA== X-Forwarded-Encrypted: i=1; AJvYcCVHwzfW6j6UbzHTyEEbs5lwXiuiZuvJqdP91LdybyaI6yTxaAeVGWBohDLQe0CEtYBjGgJsrxS3g9kOPW4v@postgresql.org X-Gm-Message-State: AOJu0YyLKN7kNM7Eu6NMAmLJWvtZECgjMegl5ReVw5Ft0El4wCVw+Jcv vA3pj9F8zdrZx2bTVnXFMzVxJ/anhtO+Qu0W7lKvmdxxSwfTQq7vF9cJ6EedFH9GoSZ7QQNOq5N kuXDlyTkzuVeqX+9TF0pMkvcWWosjtQW5EVun X-Gm-Gg: ASbGncuuuM/MNkVXgOMw4Fgc8xnwimAgSRojNdmQhE0ncMEitO75MkaKh6GiikO+PbE IoWx1LdsAm+j3ZQWoXUiomC8/cRb5xwdhsmkU5ajN8bUO66ToFV8C0lT/EOR/z53qpmh0BnWotk Tz/BBDl2yCuU+RpOkqnFZP X-Google-Smtp-Source: AGHT+IEPm34kIBvuvCfyHSi/O2nmYSqLt9ZPoUXpUnjedXe4HO+U+iSJzIf1Zm0bnonyPe1EXSUyKwFJHhxO+ViPLMw= X-Received: by 2002:a05:6214:76e:b0:6f0:e2d4:5287 with SMTP id 6a1803df08f44-6f4f05999a5mr25725146d6.24.1745885417719; Mon, 28 Apr 2025 17:10:17 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Jacob Champion Date: Mon, 28 Apr 2025 17:10:06 -0700 X-Gm-Features: ATxdqUGorJ_QdAuvjNK9EXx1lgJyi5qRtRd29f7BeMzsGS5FLXYOt9HY3Gfyqg8 Message-ID: Subject: Re: [PoC] Federated Authn/z with OAUTHBEARER To: Christoph Berg , Jacob Champion , Jelte Fennema-Nio , Peter Eisentraut , Andres Freund , Tom Lane , Bruce Momjian , PostgreSQL Hackers , Daniel Gustafsson , Thomas Munro , Nazir Bilal Yavuz , Antonin Houska , Wolfgang Walther , =?UTF-8?B?RGV2cmltIEfDvG5kw7x6?= Content-Type: multipart/mixed; boundary="0000000000002497d70633dfa037" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000002497d70633dfa037 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Apr 23, 2025 at 10:46=E2=80=AFAM Jacob Champion wrote: > Are there any readers who feel like an internal ABI version for > `struct pg_conn`, bumped during breaking backports, would be > acceptable? (More definitively: are there any readers who would veto > that?) To keep things moving: I assume this is unacceptable. So v10 redirects every access to a PGconn struct member through a shim, similarly to how conn->errorMessage was translated in v9. This adds plenty of new boilerplate, but not a whole lot of complexity. To try to keep us honest, libpq-int.h has been removed from the libpq-oauth includes. This will now handle in-place minor version upgrades that swap pg_conn internals around, so I've gone back to -MAJOR versioning alone. fe_oauth_state is still exported; it now has an ABI warning above it. (I figure that's easier to draw a line around during backports, compared to everything in PGconn. We can still break things there during major version upgrades.) Thanks, --Jacob --0000000000002497d70633dfa037 Content-Type: text/plain; charset="US-ASCII"; name="since-v9.diff.txt" Content-Disposition: attachment; filename="since-v9.diff.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ma1qz2iu0 MTogIDVmODdmMTFiMThlIDwgLTogIC0tLS0tLS0tLS0tIEFkZCBtaW5vci12ZXJzaW9uIGNvdW50 ZXJwYXJ0IHRvIChQR18pTUFKT1JWRVJTSU9OCjI6ICA5ZTM3ZmQ3YzIxNyAhIDE6ICBlODZlOTNm N2FjOCBvYXV0aDogTW92ZSB0aGUgYnVpbHRpbiBmbG93IGludG8gYSBzZXBhcmF0ZSBtb2R1bGUK ICAgIEBAIENvbW1pdCBtZXNzYWdlCiAgICAgCiAgICAgICAgIFRoZSBkZWZhdWx0IGZsb3cgcmVs aWVzIG9uIHNvbWUgbGlicHEgaW50ZXJuYWxzLiBTb21lIG9mIHRoZXNlIGNhbiBiZQogICAgICAg ICBzYWZlbHkgZHVwbGljYXRlZCAoc3VjaCBhcyB0aGUgU0lHUElQRSBoYW5kbGVycyksIGJ1dCBv dGhlcnMgbmVlZCB0byBiZQogICAgLSAgICBzaGFyZWQgYmV0d2VlbiBsaWJwcSBhbmQgbGlicHEt b2F1dGggZm9yIHRocmVhZC1zYWZldHkuIFRvIGF2b2lkIGV4cG9ydGluZwogICAgLSAgICB0aGVz ZSBpbnRlcm5hbHMgdG8gYWxsIGxpYnBxIGNsaWVudHMgZm9yZXZlciwgdGhlc2UgZGVwZW5kZW5j aWVzIGFyZQogICAgLSAgICBpbnN0ZWFkIGluamVjdGVkIGZyb20gdGhlIGxpYnBxIHNpZGUgdmlh IGFuIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLgogICAgLSAgICBUaGlzIGFsc28gbGV0cyBsaWJw cSBjb21tdW5pY2F0ZSB0aGUgb2Zmc2V0IG9mIGNvbm4tPmVycm9yTWVzc2FnZSB0bwogICAgLSAg ICBsaWJwcS1vYXV0aCwgc28gdGhhdCB3ZSBjYW4gZnVuY3Rpb24gd2l0aG91dCBjcmFzaGluZyBp ZiB0aGUgbW9kdWxlIG9uCiAgICAtICAgIHRoZSBzZWFyY2ggcGF0aCBjYW1lIGZyb20gYSBkaWZm ZXJlbnQgYnVpbGQgb2YgUG9zdGdyZXMuCiAgICArICAgIHNoYXJlZCBiZXR3ZWVuIGxpYnBxIGFu ZCBsaWJwcS1vYXV0aCBmb3IgdGhyZWFkLXNhZmV0eS4gVG8gYXZvaWQKICAgICsgICAgZXhwb3J0 aW5nIHRoZXNlIGludGVybmFscyB0byBhbGwgbGlicHEgY2xpZW50cyBmb3JldmVyLCB0aGVzZQog ICAgKyAgICBkZXBlbmRlbmNpZXMgYXJlIGluc3RlYWQgaW5qZWN0ZWQgZnJvbSB0aGUgbGlicHEg c2lkZSB2aWEgYW4KICAgICsgICAgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24uIFRoaXMgYWxzbyBs ZXRzIGxpYnBxIGNvbW11bmljYXRlIHRoZSBvZmZzZXRzIG9mCiAgICArICAgIFBHY29ubiBzdHJ1 Y3QgbWVtYmVycyB0byBsaWJwcS1vYXV0aCwgc28gdGhhdCB3ZSBjYW4gZnVuY3Rpb24gd2l0aG91 dAogICAgKyAgICBjcmFzaGluZyBpZiB0aGUgbW9kdWxlIG9uIHRoZSBzZWFyY2ggcGF0aCBjYW1l IGZyb20gYSBkaWZmZXJlbnQgYnVpbGQgb2YKICAgICsgICAgUG9zdGdyZXMuIChBIG1pbm9yLXZl cnNpb24gdXBncmFkZSBjb3VsZCBzd2FwIHRoZSBsaWJwcS1vYXV0aCBtb2R1bGUgb3V0CiAgICAr ICAgIGZyb20gdW5kZXIgYSBsb25nLXJ1bm5pbmcgbGlicHEgY2xpZW50IGJlZm9yZSBpdCBkb2Vz IGl0cyBmaXJzdCBsb2FkIG9mCiAgICArICAgIHRoZSBPQXV0aCBmbG93LikKICAgICAKICAgICAg ICAgVGhpcyBBQkkgaXMgY29uc2lkZXJlZCAicHJpdmF0ZSIuIFRoZSBtb2R1bGUgaGFzIG5vIFNP TkFNRSBvciB2ZXJzaW9uCiAgICAtICAgIHN5bWxpbmtzLCBhbmQgaXQncyBuYW1lZCBsaWJwcS1v YXV0aC08bWFqb3I+LTxtaW5vcj4uc28gdG8gYXZvaWQgbWl4aW5nCiAgICAtICAgIGFuZCBtYXRj aGluZyBhY3Jvc3MgUG9zdGdyZXMgdmVyc2lvbnMsIGluIGNhc2UgaW50ZXJuYWwgc3RydWN0IG9y ZGVyCiAgICAtICAgIG5lZWRzIHRvIGNoYW5nZS4gKEZ1dHVyZSBpbXByb3ZlbWVudHMgbWF5IHBy b21vdGUgdGhpcyAiT0F1dGggZmxvdwogICAgLSAgICBwbHVnaW4iIHRvIGEgZmlyc3QtY2xhc3Mg Y29uY2VwdCwgYXQgd2hpY2ggcG9pbnQgd2Ugd291bGQgbmVlZCBhIHB1YmxpYwogICAgLSAgICBB UEkgdG8gcmVwbGFjZSB0aGlzIGFueXdheS4pCiAgICArICAgIHN5bWxpbmtzLCBhbmQgaXQncyBu YW1lZCBsaWJwcS1vYXV0aC08bWFqb3I+LnNvIHRvIGF2b2lkIG1peGluZyBhbmQKICAgICsgICAg bWF0Y2hpbmcgYWNyb3NzIFBvc3RncmVzIHZlcnNpb25zLiAoRnV0dXJlIGltcHJvdmVtZW50cyBt YXkgcHJvbW90ZSB0aGlzCiAgICArICAgICJPQXV0aCBmbG93IHBsdWdpbiIgdG8gYSBmaXJzdC1j bGFzcyBjb25jZXB0LCBhdCB3aGljaCBwb2ludCB3ZSB3b3VsZAogICAgKyAgICBuZWVkIGEgcHVi bGljIEFQSSB0byByZXBsYWNlIHRoaXMgYW55d2F5LikKICAgICAKICAgICAgICAgQWRkaXRpb25h bGx5LCBOTFMgc3VwcG9ydCBmb3IgZXJyb3IgbWVzc2FnZXMgaW4gYjNmMGJlNzg4YSB3YXMKICAg ICAgICAgaW5jb21wbGV0ZSwgYmVjYXVzZSB0aGUgbmV3IGVycm9yIG1hY3JvcyB3ZXJlbid0IGJl aW5nIHNjYW5uZWQgYnkKICAgIEBAIHNyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL01ha2VmaWxl IChuZXcpCiAgICAgKwogICAgICsjIFRoaXMgaXMgYW4gaW50ZXJuYWwgbW9kdWxlOyB3ZSBkb24n dCB3YW50IGFuIFNPTkFNRSBhbmQgdGhlcmVmb3JlIGRvIG5vdCBzZXQKICAgICArIyBTT19NQUpP Ul9WRVJTSU9OLgogICAgLStOQU1FID0gcHEtb2F1dGgtJChNQUpPUlZFUlNJT04pLSQoTUlOT1JW RVJTSU9OKQogICAgKytOQU1FID0gcHEtb2F1dGgtJChNQUpPUlZFUlNJT04pCiAgICAgKwogICAg ICsjIEZvcmNlIHRoZSBuYW1lICJsaWJwcS1vYXV0aCIgZm9yIGJvdGggdGhlIHN0YXRpYyBhbmQg c2hhcmVkIGxpYnJhcmllcy4gVGhlCiAgICAgKyMgc3RhdGljbGliIGRvZXNuJ3QgbmVlZCB2ZXJz aW9uIGluZm9ybWF0aW9uIGluIGl0cyBuYW1lLgogICAgQEAgc3JjL2ludGVyZmFjZXMvbGlicHEt b2F1dGgvUkVBRE1FIChuZXcpCiAgICAgKz0gTG9hZC1UaW1lIEFCSSA9CiAgICAgKwogICAgICtU aGlzIG1vZHVsZSBBQkkgaXMgYW4gaW50ZXJuYWwgaW1wbGVtZW50YXRpb24gZGV0YWlsLCBzbyBp dCdzIHN1YmplY3QgdG8gY2hhbmdlCiAgICAtK2Fjcm9zcyByZWxlYXNlczsgdGhlIG5hbWUgb2Yg dGhlIG1vZHVsZSAobGlicHEtb2F1dGgtTUFKT1ItTUlOT1IpIHJlZmxlY3RzIHRoaXMuCiAgICAr K2Fjcm9zcyBtYWpvciByZWxlYXNlczsgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSAobGlicHEtb2F1 dGgtTUFKT1IpIHJlZmxlY3RzIHRoaXMuCiAgICAgK1RoZSBtb2R1bGUgZXhwb3J0cyB0aGUgZm9s bG93aW5nIHN5bWJvbHM6CiAgICAgKwogICAgICstIFBvc3RncmVzUG9sbGluZ1N0YXR1c1R5cGUg cGdfZmVfcnVuX29hdXRoX2Zsb3coUEdjb25uICpjb25uKTsKICAgIEBAIHNyYy9pbnRlcmZhY2Vz L2xpYnBxLW9hdXRoL1JFQURNRSAobmV3KQogICAgICsKICAgICArLSB2b2lkIGxpYnBxX29hdXRo X2luaXQocGd0aHJlYWRsb2NrX3QgdGhyZWFkbG9jaywKICAgICArCQkJCQkJbGlicHFfZ2V0dGV4 dF9mdW5jIGdldHRleHRfaW1wbCwKICAgIC0rCQkJCQkJY29ubl9lcnJvck1lc3NhZ2VfZnVuYyBl cnJtc2dfaW1wbCk7CiAgICArKwkJCQkJCWNvbm5fZXJyb3JNZXNzYWdlX2Z1bmMgZXJybXNnX2lt cGwsCiAgICArKwkJCQkJCWNvbm5fb2F1dGhfY2xpZW50X2lkX2Z1bmMgY2xpZW50aWRfaW1wbCwK ICAgICsrCQkJCQkJY29ubl9vYXV0aF9jbGllbnRfc2VjcmV0X2Z1bmMgY2xpZW50c2VjcmV0X2lt cGwsCiAgICArKwkJCQkJCWNvbm5fb2F1dGhfZGlzY292ZXJ5X3VyaV9mdW5jIGRpc2NvdmVyeXVy aV9pbXBsLAogICAgKysJCQkJCQljb25uX29hdXRoX2lzc3Vlcl9pZF9mdW5jIGlzc3VlcmlkX2lt cGwsCiAgICArKwkJCQkJCWNvbm5fb2F1dGhfc2NvcGVfZnVuYyBzY29wZV9pbXBsLAogICAgKysJ CQkJCQljb25uX3Nhc2xfc3RhdGVfZnVuYyBzYXNsc3RhdGVfaW1wbCwKICAgICsrCQkJCQkJc2V0 X2Nvbm5fYWx0c29ja19mdW5jIHNldGFsdHNvY2tfaW1wbCwKICAgICsrCQkJCQkJc2V0X2Nvbm5f b2F1dGhfdG9rZW5fZnVuYyBzZXR0b2tlbl9pbXBsKTsKICAgICArCiAgICAgK0F0IHRoZSBtb21l bnQsIHBnX2ZlX3J1bl9vYXV0aF9mbG93KCkgcmVsaWVzIG9uIGxpYnBxJ3MgcGdfZ190aHJlYWRs b2NrIGFuZAogICAgICtsaWJwcV9nZXR0ZXh0KCksIHdoaWNoIG11c3QgYmUgaW5qZWN0ZWQgYnkg bGlicHEgdXNpbmcgdGhpcyBpbml0aWFsaXphdGlvbgogICAgICtmdW5jdGlvbiBiZWZvcmUgdGhl IGZsb3cgaXMgcnVuLgogICAgICsKICAgIC0rSXQgYWxzbyByZWxpZXMgb24gbGlicHEgdG8gZXhw b3NlIGNvbm4tPmVycm9yTWVzc2FnZSwgdmlhIHRoZSBlcnJtc2dfaW1wbC4gVGhpcwogICAgLStp cyBkb25lIHRvIGRlY291cGxlIHRoZSBtb2R1bGUgQUJJIGZyb20gdGhlIG9mZnNldCBvZiBlcnJv ck1lc3NhZ2UsIHdoaWNoIGNhbgogICAgLStjaGFuZ2UgcG9zaXRpb25zIGRlcGVuZGluZyBvbiBj b25maWd1cmUtdGltZSBvcHRpb25zLiBUaGlzIHdheSB3ZSBjYW4gc2FmZWx5CiAgICAtK3NlYXJj aCB0aGUgc3RhbmRhcmQgZGxvcGVuKCkgcGF0aHMgKGUuZy4gUlBBVEgsIExEX0xJQlJBUllfUEFU SCwgdGhlIFNPIGNhY2hlKQogICAgLStmb3IgYW4gaW1wbGVtZW50YXRpb24gbW9kdWxlIHRvIHVz ZSwgZXZlbiBpZiB0aGF0IG1vZHVsZSB3YXNuJ3QgY29tcGlsZWQgYXQgdGhlCiAgICAtK3NhbWUg dGltZSBhcyBsaWJwcS4KICAgICsrSXQgYWxzbyByZWxpZXMgb24gYWNjZXNzIHRvIHNldmVyYWwg bWVtYmVycyBvZiB0aGUgUEdjb25uIHN0cnVjdC4gTm90IG9ubHkgY2FuCiAgICArK3RoZXNlIGNo YW5nZSBwb3NpdGlvbnMgYWNyb3NzIG1pbm9yIHZlcnNpb25zLCBidXQgdGhlIG9mZnNldHMgYXJl bid0IG5lY2Vzc2FyaWx5CiAgICArK3N0YWJsZSB3aXRoaW4gYSBzaW5nbGUgbWlub3IgcmVsZWFz ZSAoY29ubi0+ZXJyb3JNZXNzYWdlLCBmb3IgaW5zdGFuY2UsIGNhbgogICAgKytjaGFuZ2Ugb2Zm c2V0cyBkZXBlbmRpbmcgb24gY29uZmlndXJlLXRpbWUgb3B0aW9ucykuIFRoZXJlZm9yZSB0aGUg bmVjZXNzYXJ5CiAgICArK2FjY2Vzc29ycyAobmFtZWQgY29ubl8qKSBhbmQgbXV0YXRvcnMgKHNl dF9jb25uXyopIGFyZSBpbmplY3RlZCBoZXJlLiBXaXRoIHRoaXMKICAgICsrYXBwcm9hY2gsIHdl IGNhbiBzYWZlbHkgc2VhcmNoIHRoZSBzdGFuZGFyZCBkbG9wZW4oKSBwYXRocyAoZS5nLiBSUEFU SCwKICAgICsrTERfTElCUkFSWV9QQVRILCB0aGUgU08gY2FjaGUpIGZvciBhbiBpbXBsZW1lbnRh dGlvbiBtb2R1bGUgdG8gdXNlLCBldmVuIGlmIHRoYXQKICAgICsrbW9kdWxlIHdhc24ndCBjb21w aWxlZCBhdCB0aGUgc2FtZSB0aW1lIGFzIGxpYnBxIC0tIHdoaWNoIGJlY29tZXMgZXNwZWNpYWxs eQogICAgKytpbXBvcnRhbnQgZHVyaW5nICJsaXZlIHVwZ3JhZGUiIHNpdHVhdGlvbnMgd2hlcmUg YSBydW5uaW5nIGxpYnBxIGFwcGxpY2F0aW9uIGhhcwogICAgKyt0aGUgbGlicHEtb2F1dGggbW9k dWxlIHVwZGF0ZWQgb3V0IGZyb20gdW5kZXIgaXQgYmVmb3JlIGl0J3MgZmlyc3QgbG9hZGVkIGZy b20KICAgICsrZGlzay4KICAgICArCiAgICAgKz0gU3RhdGljIEJ1aWxkID0KICAgICArCiAgICAg K1RoZSBzdGF0aWMgbGlicmFyeSBsaWJwcS5hIGRvZXMgbm90IHBlcmZvcm0gYW55IGR5bmFtaWMg bG9hZGluZy4gSWYgdGhlIGJ1aWx0aW4KICAgICArZmxvdyBpcyBlbmFibGVkLCB0aGUgYXBwbGlj YXRpb24gaXMgZXhwZWN0ZWQgdG8gbGluayBhZ2FpbnN0IGxpYnBxLW9hdXRoLmEKICAgIC0rZGly ZWN0bHkgdG8gcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IHN5bWJvbHMuCiAgICArK2RpcmVjdGx5IHRv IHByb3ZpZGUgdGhlIG5lY2Vzc2FyeSBzeW1ib2xzLiAobGlicHEuYSBhbmQgbGlicHEtb2F1dGgu YSBtdXN0IGJlCiAgICArK3BhcnQgb2YgdGhlIHNhbWUgYnVpbGQuIFVubGlrZSB0aGUgZHluYW1p YyBtb2R1bGUsIHRoZXJlIGFyZSBubyB0cmFuc2xhdGlvbgogICAgKytzaGltcyBwcm92aWRlZC4p CiAgICAgCiAgICAgICMjIHNyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL2V4cG9ydHMudHh0IChu ZXcpICMjCiAgICAgQEAKICAgIEBAIHNyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL21lc29uLmJ1 aWxkIChuZXcpCiAgICAgKwogICAgICsjIFRoaXMgaXMgYW4gaW50ZXJuYWwgbW9kdWxlOyB3ZSBk b24ndCB3YW50IGFuIFNPTkFNRSBhbmQgdGhlcmVmb3JlIGRvIG5vdCBzZXQKICAgICArIyBTT19N QUpPUl9WRVJTSU9OLgogICAgLStsaWJwcV9vYXV0aF9uYW1lID0gJ2xpYnBxLW9hdXRoLUAwQC1A MUAnLmZvcm1hdChwZ192ZXJzaW9uX21ham9yLCBwZ192ZXJzaW9uX21pbm9yKQogICAgKytsaWJw cV9vYXV0aF9uYW1lID0gJ2xpYnBxLW9hdXRoLUAwQCcuZm9ybWF0KHBnX3ZlcnNpb25fbWFqb3Ip CiAgICAgKwogICAgICtsaWJwcV9vYXV0aF9zbyA9IHNoYXJlZF9tb2R1bGUobGlicHFfb2F1dGhf bmFtZSwKICAgICArICBsaWJwcV9vYXV0aF9zb3VyY2VzICsgbGlicHFfb2F1dGhfc29fc291cmNl cywKICAgIEBAIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGgtY3VybC5jID0+IHNy Yy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL29hdXRoLWN1CiAgICAgLSNpbmNsdWRlIDx1bmlzdGQu aD4KICAgICAgCiAgICAgICNpbmNsdWRlICJjb21tb24vanNvbmFwaS5oIgogICAgLSAjaW5jbHVk ZSAiZmUtYXV0aC5oIgogICAgKy0jaW5jbHVkZSAiZmUtYXV0aC5oIgogICAgICAjaW5jbHVkZSAi ZmUtYXV0aC1vYXV0aC5oIgogICAgIC0jaW5jbHVkZSAibGlicHEtaW50LmgiCiAgICAgICNpbmNs dWRlICJtYi9wZ193Y2hhci5oIgogICAgICsjaW5jbHVkZSAib2F1dGgtY3VybC5oIgogICAgKysK ICAgICArI2lmZGVmIFVTRV9EWU5BTUlDX09BVVRICiAgICArKwogICAgKysvKgogICAgKysgKiBU aGUgbW9kdWxlIGJ1aWxkIGlzIGRlY291cGxlZCBmcm9tIGxpYnBxLWludC5oLCB0byB0cnkgdG8g YXZvaWQgaW5hZHZlcnRlbnQKICAgICsrICogQUJJIGJyZWFrcyBkdXJpbmcgbWlub3IgdmVyc2lv biBidW1wcy4gUmVwbGFjZW1lbnRzIGZvciB0aGUgbWlzc2luZyBpbnRlcm5hbHMKICAgICsrICog YXJlIHByb3ZpZGVkIGJ5IG9hdXRoLXV0aWxzLgogICAgKysgKi8KICAgICArI2luY2x1ZGUgIm9h dXRoLXV0aWxzLmgiCiAgICArKwogICAgKysjZWxzZQkJCQkJCQkvKiAhVVNFX0RZTkFNSUNfT0FV VEggKi8KICAgICsrCiAgICArKy8qCiAgICArKyAqIFN0YXRpYyBidWlsZHMgbWF5IHJlbHkgb24g UEdjb25uIG9mZnNldHMgZGlyZWN0bHkuIEtlZXAgdGhlc2UgYWxpZ25lZCB3aXRoCiAgICArKyAq IHRoZSBiYW5rIG9mIGNhbGxiYWNrcyBpbiBvYXV0aC11dGlscy5oLgogICAgKysgKi8KICAgICsr I2luY2x1ZGUgImxpYnBxLWludC5oIgogICAgKysKICAgICsrI2RlZmluZSBjb25uX2Vycm9yTWVz c2FnZShDT05OKSAoJkNPTk4tPmVycm9yTWVzc2FnZSkKICAgICsrI2RlZmluZSBjb25uX29hdXRo X2NsaWVudF9pZChDT05OKSAoQ09OTi0+b2F1dGhfY2xpZW50X2lkKQogICAgKysjZGVmaW5lIGNv bm5fb2F1dGhfY2xpZW50X3NlY3JldChDT05OKSAoQ09OTi0+b2F1dGhfY2xpZW50X3NlY3JldCkK ICAgICsrI2RlZmluZSBjb25uX29hdXRoX2Rpc2NvdmVyeV91cmkoQ09OTikgKENPTk4tPm9hdXRo X2Rpc2NvdmVyeV91cmkpCiAgICArKyNkZWZpbmUgY29ubl9vYXV0aF9pc3N1ZXJfaWQoQ09OTikg KENPTk4tPm9hdXRoX2lzc3Vlcl9pZCkKICAgICsrI2RlZmluZSBjb25uX29hdXRoX3Njb3BlKENP Tk4pIChDT05OLT5vYXV0aF9zY29wZSkKICAgICsrI2RlZmluZSBjb25uX3Nhc2xfc3RhdGUoQ09O TikgKENPTk4tPnNhc2xfc3RhdGUpCiAgICArKwogICAgKysjZGVmaW5lIHNldF9jb25uX2FsdHNv Y2soQ09OTiwgVkFMKSBkbyB7IENPTk4tPmFsdHNvY2sgPSBWQUw7IH0gd2hpbGUgKDApCiAgICAr KyNkZWZpbmUgc2V0X2Nvbm5fb2F1dGhfdG9rZW4oQ09OTiwgVkFMKSBkbyB7IENPTk4tPm9hdXRo X3Rva2VuID0gVkFMOyB9IHdoaWxlICgwKQogICAgKysKICAgICsrI2VuZGlmCQkJCQkJCS8qICFV U0VfRFlOQU1JQ19PQVVUSCAqLwogICAgKysKICAgICsrLyogT25lIGZpbmFsIGd1YXJkcmFpbCBh Z2FpbnN0IGFjY2lkZW50YWwgaW5jbHVzaW9uLi4uICovCiAgICArKyNpZiBkZWZpbmVkKFVTRV9E WU5BTUlDX09BVVRIKSAmJiBkZWZpbmVkKExJQlBRX0lOVF9IKQogICAgKysjZXJyb3IgZG8gbm90 IHJlbHkgb24gbGlicHEtaW50LmggaW4gbGlicHEtb2F1dGguc28KICAgICArI2VuZGlmCiAgICAg IAogICAgICAvKgogICAgICAgKiBJdCdzIGdlbmVyYWxseSBwcnVkZW50IHRvIHNldCBhIG1heGlt dW0gcmVzcG9uc2Ugc2l6ZSB0byBidWZmZXIgaW4gbWVtb3J5LAogICAgK0BAIHNyYy9pbnRlcmZh Y2VzL2xpYnBxLW9hdXRoL29hdXRoLWN1cmwuYzogZnJlZV9hc3luY19jdHgoUEdjb25uICpjb25u LCBzdHJ1Y3QgYXN5bmNfY3R4ICphY3R4KQogICAgKyB2b2lkCiAgICArIHBnX2ZlX2NsZWFudXBf b2F1dGhfZmxvdyhQR2Nvbm4gKmNvbm4pCiAgICArIHsKICAgICstCWZlX29hdXRoX3N0YXRlICpz dGF0ZSA9IGNvbm4tPnNhc2xfc3RhdGU7CiAgICArKwlmZV9vYXV0aF9zdGF0ZSAqc3RhdGUgPSBj b25uX3Nhc2xfc3RhdGUoY29ubik7CiAgICArIAogICAgKyAJaWYgKHN0YXRlLT5hc3luY19jdHgp CiAgICArIAl7CiAgICArQEAgc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvb2F1dGgtY3VybC5j OiBwZ19mZV9jbGVhbnVwX29hdXRoX2Zsb3coUEdjb25uICpjb25uKQogICAgKyAJCXN0YXRlLT5h c3luY19jdHggPSBOVUxMOwogICAgKyAJfQogICAgKyAKICAgICstCWNvbm4tPmFsdHNvY2sgPSBQ R0lOVkFMSURfU09DS0VUOwogICAgKysJc2V0X2Nvbm5fYWx0c29jayhjb25uLCBQR0lOVkFMSURf U09DS0VUKTsKICAgICsgfQogICAgKyAKICAgICsgLyoKICAgICBAQCBzcmMvaW50ZXJmYWNlcy9s aWJwcS1vYXV0aC9vYXV0aC1jdXJsLmM6IHBhcnNlX2FjY2Vzc190b2tlbihzdHJ1Y3QgYXN5bmNf Y3R4ICphY3R4LCBzdHJ1Y3QgdG9rZW4gKnRvaykKICAgICAgc3RhdGljIGJvb2wKICAgICAgc2V0 dXBfbXVsdGlwbGV4ZXIoc3RydWN0IGFzeW5jX2N0eCAqYWN0eCkKICAgIEBAIHNyYy9pbnRlcmZh Y2VzL2xpYnBxLW9hdXRoL29hdXRoLWN1cmwuYzogdGltZXJfZXhwaXJlZChzdHJ1Y3QgYXN5bmNf Y3R4ICphY3R4KQogICAgICB9CiAgICAgIAogICAgICAvKgogICAgK0BAIHNyYy9pbnRlcmZhY2Vz L2xpYnBxLW9hdXRoL29hdXRoLWN1cmwuYzogc3RhdGljIGJvb2wKICAgICsgY2hlY2tfaXNzdWVy KHN0cnVjdCBhc3luY19jdHggKmFjdHgsIFBHY29ubiAqY29ubikKICAgICsgewogICAgKyAJY29u c3Qgc3RydWN0IHByb3ZpZGVyICpwcm92aWRlciA9ICZhY3R4LT5wcm92aWRlcjsKICAgICsrCWNv bnN0IGNoYXIgKm9hdXRoX2lzc3Vlcl9pZCA9IGNvbm5fb2F1dGhfaXNzdWVyX2lkKGNvbm4pOwog ICAgKyAKICAgICstCUFzc2VydChjb25uLT5vYXV0aF9pc3N1ZXJfaWQpOwkvKiBlbnN1cmVkIGJ5 IHNldHVwX29hdXRoX3BhcmFtZXRlcnMoKSAqLwogICAgKysJQXNzZXJ0KG9hdXRoX2lzc3Vlcl9p ZCk7CS8qIGVuc3VyZWQgYnkgc2V0dXBfb2F1dGhfcGFyYW1ldGVycygpICovCiAgICArIAlBc3Nl cnQocHJvdmlkZXItPmlzc3Vlcik7CS8qIGVuc3VyZWQgYnkgcGFyc2VfcHJvdmlkZXIoKSAqLwog ICAgKyAKICAgICsgCS8qLS0tCiAgICArQEAgc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvb2F1 dGgtY3VybC5jOiBjaGVja19pc3N1ZXIoc3RydWN0IGFzeW5jX2N0eCAqYWN0eCwgUEdjb25uICpj b25uKQogICAgKyAJICogICAgc2VudCB0by4gVGhpcyBjb21wYXJpc29uIE1VU1QgdXNlIHNpbXBs ZSBzdHJpbmcgY29tcGFyaXNvbiBhcyBkZWZpbmVkCiAgICArIAkgKiAgICBpbiBTZWN0aW9uIDYu Mi4xIG9mIFtSRkMzOTg2XS4KICAgICsgCSAqLwogICAgKy0JaWYgKHN0cmNtcChjb25uLT5vYXV0 aF9pc3N1ZXJfaWQsIHByb3ZpZGVyLT5pc3N1ZXIpICE9IDApCiAgICArKwlpZiAoc3RyY21wKG9h dXRoX2lzc3Vlcl9pZCwgcHJvdmlkZXItPmlzc3VlcikgIT0gMCkKICAgICsgCXsKICAgICsgCQlh Y3R4X2Vycm9yKGFjdHgsCiAgICArIAkJCQkgICAidGhlIGlzc3VlciBpZGVudGlmaWVyICglcykg ZG9lcyBub3QgbWF0Y2ggb2F1dGhfaXNzdWVyICglcykiLAogICAgKy0JCQkJICAgcHJvdmlkZXIt Pmlzc3VlciwgY29ubi0+b2F1dGhfaXNzdWVyX2lkKTsKICAgICsrCQkJCSAgIHByb3ZpZGVyLT5p c3N1ZXIsIG9hdXRoX2lzc3Vlcl9pZCk7CiAgICArIAkJcmV0dXJuIGZhbHNlOwogICAgKyAJfQog ICAgKyAKICAgICtAQCBzcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9vYXV0aC1jdXJsLmM6IGNo ZWNrX2Zvcl9kZXZpY2VfZmxvdyhzdHJ1Y3QgYXN5bmNfY3R4ICphY3R4KQogICAgKyBzdGF0aWMg Ym9vbAogICAgKyBhZGRfY2xpZW50X2lkZW50aWZpY2F0aW9uKHN0cnVjdCBhc3luY19jdHggKmFj dHgsIFBRRXhwQnVmZmVyIHJlcWJvZHksIFBHY29ubiAqY29ubikKICAgICsgewogICAgKysJY29u c3QgY2hhciAqb2F1dGhfY2xpZW50X2lkID0gY29ubl9vYXV0aF9jbGllbnRfaWQoY29ubik7CiAg ICArKwljb25zdCBjaGFyICpvYXV0aF9jbGllbnRfc2VjcmV0ID0gY29ubl9vYXV0aF9jbGllbnRf c2VjcmV0KGNvbm4pOwogICAgKysKICAgICsgCWJvb2wJCXN1Y2Nlc3MgPSBmYWxzZTsKICAgICsg CWNoYXIJICAgKnVzZXJuYW1lID0gTlVMTDsKICAgICsgCWNoYXIJICAgKnBhc3N3b3JkID0gTlVM TDsKICAgICsgCiAgICArLQlpZiAoY29ubi0+b2F1dGhfY2xpZW50X3NlY3JldCkJLyogWmVyby1s ZW5ndGggc2VjcmV0cyBhcmUgcGVybWl0dGVkISAqLwogICAgKysJaWYgKG9hdXRoX2NsaWVudF9z ZWNyZXQpCS8qIFplcm8tbGVuZ3RoIHNlY3JldHMgYXJlIHBlcm1pdHRlZCEgKi8KICAgICsgCXsK ICAgICsgCQkvKi0tLS0KICAgICsgCQkgKiBVc2UgSFRUUCBCYXNpYyBhdXRoIHRvIHNlbmQgdGhl IGNsaWVudF9pZCBhbmQgc2VjcmV0LiBQZXIgUkZDIDY3NDksCiAgICArQEAgc3JjL2ludGVyZmFj ZXMvbGlicHEtb2F1dGgvb2F1dGgtY3VybC5jOiBhZGRfY2xpZW50X2lkZW50aWZpY2F0aW9uKHN0 cnVjdCBhc3luY19jdHggKmFjdHgsIFBRRXhwQnVmZmVyIHJlcWJvZHksIFBHY29ubiAqYwogICAg KyAJCSAqIHdvdWxkIGl0IGJlIHJlZHVuZGFudCwgYnV0IHNvbWUgcHJvdmlkZXJzIGluIHRoZSB3 aWxkIChlLmcuIE9rdGEpCiAgICArIAkJICogcmVmdXNlIHRvIGFjY2VwdCBpdC4KICAgICsgCQkg Ki8KICAgICstCQl1c2VybmFtZSA9IHVybGVuY29kZShjb25uLT5vYXV0aF9jbGllbnRfaWQpOwog ICAgKy0JCXBhc3N3b3JkID0gdXJsZW5jb2RlKGNvbm4tPm9hdXRoX2NsaWVudF9zZWNyZXQpOwog ICAgKysJCXVzZXJuYW1lID0gdXJsZW5jb2RlKG9hdXRoX2NsaWVudF9pZCk7CiAgICArKwkJcGFz c3dvcmQgPSB1cmxlbmNvZGUob2F1dGhfY2xpZW50X3NlY3JldCk7CiAgICArIAogICAgKyAJCWlm ICghdXNlcm5hbWUgfHwgIXBhc3N3b3JkKQogICAgKyAJCXsKICAgICtAQCBzcmMvaW50ZXJmYWNl cy9saWJwcS1vYXV0aC9vYXV0aC1jdXJsLmM6IGFkZF9jbGllbnRfaWRlbnRpZmljYXRpb24oc3Ry dWN0IGFzeW5jX2N0eCAqYWN0eCwgUFFFeHBCdWZmZXIgcmVxYm9keSwgUEdjb25uICpjCiAgICAr IAkJICogSWYgd2UncmUgbm90IG90aGVyd2lzZSBhdXRoZW50aWNhdGluZywgY2xpZW50X2lkIGlz IFJFUVVJUkVEIGluIHRoZQogICAgKyAJCSAqIHJlcXVlc3QgYm9keS4KICAgICsgCQkgKi8KICAg ICstCQlidWlsZF91cmxlbmNvZGVkKHJlcWJvZHksICJjbGllbnRfaWQiLCBjb25uLT5vYXV0aF9j bGllbnRfaWQpOwogICAgKysJCWJ1aWxkX3VybGVuY29kZWQocmVxYm9keSwgImNsaWVudF9pZCIs IG9hdXRoX2NsaWVudF9pZCk7CiAgICArIAogICAgKyAJCUNIRUNLX1NFVE9QVChhY3R4LCBDVVJM T1BUX0hUVFBBVVRILCBDVVJMQVVUSF9OT05FLCBnb3RvIGNsZWFudXApOwogICAgKyAJCWFjdHgt PnVzZWRfYmFzaWNfYXV0aCA9IGZhbHNlOwogICAgK0BAIHNyYy9pbnRlcmZhY2VzL2xpYnBxLW9h dXRoL29hdXRoLWN1cmwuYzogY2xlYW51cDoKICAgICsgc3RhdGljIGJvb2wKICAgICsgc3RhcnRf ZGV2aWNlX2F1dGh6KHN0cnVjdCBhc3luY19jdHggKmFjdHgsIFBHY29ubiAqY29ubikKICAgICsg ewogICAgKysJY29uc3QgY2hhciAqb2F1dGhfc2NvcGUgPSBjb25uX29hdXRoX3Njb3BlKGNvbm4p OwogICAgKyAJY29uc3QgY2hhciAqZGV2aWNlX2F1dGh6X3VyaSA9IGFjdHgtPnByb3ZpZGVyLmRl dmljZV9hdXRob3JpemF0aW9uX2VuZHBvaW50OwogICAgKyAJUFFFeHBCdWZmZXIgd29ya19idWZm ZXIgPSAmYWN0eC0+d29ya19kYXRhOwogICAgKyAKICAgICstCUFzc2VydChjb25uLT5vYXV0aF9j bGllbnRfaWQpOwkvKiBlbnN1cmVkIGJ5IHNldHVwX29hdXRoX3BhcmFtZXRlcnMoKSAqLwogICAg KysJQXNzZXJ0KGNvbm5fb2F1dGhfY2xpZW50X2lkKGNvbm4pKTsgLyogZW5zdXJlZCBieSBzZXR1 cF9vYXV0aF9wYXJhbWV0ZXJzKCkgKi8KICAgICsgCUFzc2VydChkZXZpY2VfYXV0aHpfdXJpKTsJ LyogZW5zdXJlZCBieSBjaGVja19mb3JfZGV2aWNlX2Zsb3coKSAqLwogICAgKyAKICAgICsgCS8q IENvbnN0cnVjdCBvdXIgcmVxdWVzdCBib2R5LiAqLwogICAgKyAJcmVzZXRQUUV4cEJ1ZmZlcih3 b3JrX2J1ZmZlcik7CiAgICArLQlpZiAoY29ubi0+b2F1dGhfc2NvcGUgJiYgY29ubi0+b2F1dGhf c2NvcGVbMF0pCiAgICArLQkJYnVpbGRfdXJsZW5jb2RlZCh3b3JrX2J1ZmZlciwgInNjb3BlIiwg Y29ubi0+b2F1dGhfc2NvcGUpOwogICAgKysJaWYgKG9hdXRoX3Njb3BlICYmIG9hdXRoX3Njb3Bl WzBdKQogICAgKysJCWJ1aWxkX3VybGVuY29kZWQod29ya19idWZmZXIsICJzY29wZSIsIG9hdXRo X3Njb3BlKTsKICAgICsgCiAgICArIAlpZiAoIWFkZF9jbGllbnRfaWRlbnRpZmljYXRpb24oYWN0 eCwgd29ya19idWZmZXIsIGNvbm4pKQogICAgKyAJCXJldHVybiBmYWxzZTsKICAgICtAQCBzcmMv aW50ZXJmYWNlcy9saWJwcS1vYXV0aC9vYXV0aC1jdXJsLmM6IHN0YXJ0X3Rva2VuX3JlcXVlc3Qo c3RydWN0IGFzeW5jX2N0eCAqYWN0eCwgUEdjb25uICpjb25uKQogICAgKyAJY29uc3QgY2hhciAq ZGV2aWNlX2NvZGUgPSBhY3R4LT5hdXRoei5kZXZpY2VfY29kZTsKICAgICsgCVBRRXhwQnVmZmVy IHdvcmtfYnVmZmVyID0gJmFjdHgtPndvcmtfZGF0YTsKICAgICsgCiAgICArLQlBc3NlcnQoY29u bi0+b2F1dGhfY2xpZW50X2lkKTsJLyogZW5zdXJlZCBieSBzZXR1cF9vYXV0aF9wYXJhbWV0ZXJz KCkgKi8KICAgICsrCUFzc2VydChjb25uX29hdXRoX2NsaWVudF9pZChjb25uKSk7IC8qIGVuc3Vy ZWQgYnkgc2V0dXBfb2F1dGhfcGFyYW1ldGVycygpICovCiAgICArIAlBc3NlcnQodG9rZW5fdXJp KTsJCQkvKiBlbnN1cmVkIGJ5IHBhcnNlX3Byb3ZpZGVyKCkgKi8KICAgICsgCUFzc2VydChkZXZp Y2VfY29kZSk7CQkvKiBlbnN1cmVkIGJ5IHBhcnNlX2RldmljZV9hdXRoeigpICovCiAgICArIAog ICAgIEBAIHNyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL29hdXRoLWN1cmwuYzogcHJvbXB0X3Vz ZXIoc3RydWN0IGFzeW5jX2N0eCAqYWN0eCwgUEdjb25uICpjb25uKQogICAgICAJCS52ZXJpZmlj YXRpb25fdXJpX2NvbXBsZXRlID0gYWN0eC0+YXV0aHoudmVyaWZpY2F0aW9uX3VyaV9jb21wbGV0 ZSwKICAgICAgCQkuZXhwaXJlc19pbiA9IGFjdHgtPmF1dGh6LmV4cGlyZXNfaW4sCiAgICBAQCBz cmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9vYXV0aC1jdXJsLmM6IHByb21wdF91c2VyKHN0cnVj dCBhc3luY19jdHggKmFjdHgsIFBHYwogICAgICAKICAgICAgCWlmICghcmVzKQogICAgICAJewog ICAgLUBAIHNyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL29hdXRoLWN1cmwuYzogcGdfZmVfcnVu X29hdXRoX2Zsb3dfaW1wbChQR2Nvbm4gKmNvbm4pCiAgICArQEAgc3JjL2ludGVyZmFjZXMvbGli cHEtb2F1dGgvb2F1dGgtY3VybC5jOiBkb25lOgogICAgKyBzdGF0aWMgUG9zdGdyZXNQb2xsaW5n U3RhdHVzVHlwZQogICAgKyBwZ19mZV9ydW5fb2F1dGhfZmxvd19pbXBsKFBHY29ubiAqY29ubikK ICAgICAgewogICAgLSAJZmVfb2F1dGhfc3RhdGUgKnN0YXRlID0gY29ubi0+c2FzbF9zdGF0ZTsK ICAgICstCWZlX29hdXRoX3N0YXRlICpzdGF0ZSA9IGNvbm4tPnNhc2xfc3RhdGU7CiAgICArKwlm ZV9vYXV0aF9zdGF0ZSAqc3RhdGUgPSBjb25uX3Nhc2xfc3RhdGUoY29ubik7CiAgICAgIAlzdHJ1 Y3QgYXN5bmNfY3R4ICphY3R4OwogICAgKysJY2hhcgkgICAqb2F1dGhfdG9rZW4gPSBOVUxMOwog ICAgICsJUFFFeHBCdWZmZXIgZXJyYnVmOwogICAgICAKICAgICAgCWlmICghaW5pdGlhbGl6ZV9j dXJsKGNvbm4pKQogICAgICAJCXJldHVybiBQR1JFU19QT0xMSU5HX0ZBSUxFRDsKICAgICBAQCBz cmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9vYXV0aC1jdXJsLmM6IHBnX2ZlX3J1bl9vYXV0aF9m bG93X2ltcGwoUEdjb25uICpjb25uKQogICAgKyAJZG8KICAgICsgCXsKICAgICsgCQkvKiBCeSBk ZWZhdWx0LCB0aGUgbXVsdGlwbGV4ZXIgaXMgdGhlIGFsdHNvY2suIFJlYXNzaWduIGFzIGRlc2ly ZWQuICovCiAgICArLQkJY29ubi0+YWx0c29jayA9IGFjdHgtPm11eDsKICAgICsrCQlzZXRfY29u bl9hbHRzb2NrKGNvbm4sIGFjdHgtPm11eCk7CiAgICArIAogICAgKyAJCXN3aXRjaCAoYWN0eC0+ c3RlcCkKICAgICsgCQl7CiAgICArQEAgc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvb2F1dGgt Y3VybC5jOiBwZ19mZV9ydW5fb2F1dGhfZmxvd19pbXBsKFBHY29ubiAqY29ubikKICAgICsgCQkJ CSAqLwogICAgKyAJCQkJaWYgKCF0aW1lcl9leHBpcmVkKGFjdHgpKQogICAgKyAJCQkJewogICAg Ky0JCQkJCWNvbm4tPmFsdHNvY2sgPSBhY3R4LT50aW1lcmZkOwogICAgKysJCQkJCXNldF9jb25u X2FsdHNvY2soY29ubiwgYWN0eC0+dGltZXJmZCk7CiAgICArIAkJCQkJcmV0dXJuIFBHUkVTX1BP TExJTkdfUkVBRElORzsKICAgICsgCQkJCX0KICAgICAgCiAgICAtIGVycm9yX3JldHVybjoKICAg ICtAQCBzcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9vYXV0aC1jdXJsLmM6IHBnX2ZlX3J1bl9v YXV0aF9mbG93X2ltcGwoUEdjb25uICpjb25uKQogICAgKyAJCXsKICAgICsgCQkJY2FzZSBPQVVU SF9TVEVQX0lOSVQ6CiAgICArIAkJCQlhY3R4LT5lcnJjdHggPSAiZmFpbGVkIHRvIGZldGNoIE9w ZW5JRCBkaXNjb3ZlcnkgZG9jdW1lbnQiOwogICAgKy0JCQkJaWYgKCFzdGFydF9kaXNjb3Zlcnko YWN0eCwgY29ubi0+b2F1dGhfZGlzY292ZXJ5X3VyaSkpCiAgICArKwkJCQlpZiAoIXN0YXJ0X2Rp c2NvdmVyeShhY3R4LCBjb25uX29hdXRoX2Rpc2NvdmVyeV91cmkoY29ubikpKQogICAgKyAJCQkJ CWdvdG8gZXJyb3JfcmV0dXJuOwogICAgICAKICAgIC0rCS8qCiAgICAtKwkgKiBGb3IgdGhlIGR5 bmFtaWMgbW9kdWxlIGJ1aWxkLCB3ZSBjYW4ndCBzYWZlbHkgcmVseSBvbiB0aGUgb2Zmc2V0IG9m CiAgICAtKwkgKiBjb25uLT5lcnJvck1lc3NhZ2UsIHNpbmNlIGl0IGRlcGVuZHMgb24gYnVpbGQg b3B0aW9ucyBsaWtlIFVTRV9TU0wgZXQKICAgIC0rCSAqIGFsLiBsaWJwcSBnaXZlcyB1cyBhIHRy YW5zbGF0b3IgZnVuY3Rpb24gaW5zdGVhZC4KICAgIC0rCSAqLwogICAgLSsjaWZkZWYgVVNFX0RZ TkFNSUNfT0FVVEgKICAgICsgCQkJCWFjdHgtPnN0ZXAgPSBPQVVUSF9TVEVQX0RJU0NPVkVSWTsK ICAgICtAQCBzcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9vYXV0aC1jdXJsLmM6IHBnX2ZlX3J1 bl9vYXV0aF9mbG93X2ltcGwoUEdjb25uICpjb25uKQogICAgKyAJCQkJYnJlYWs7CiAgICArIAog ICAgKyAJCQljYXNlIE9BVVRIX1NURVBfVE9LRU5fUkVRVUVTVDoKICAgICstCQkJCWlmICghaGFu ZGxlX3Rva2VuX3Jlc3BvbnNlKGFjdHgsICZjb25uLT5vYXV0aF90b2tlbikpCiAgICArKwkJCQlp ZiAoIWhhbmRsZV90b2tlbl9yZXNwb25zZShhY3R4LCAmb2F1dGhfdG9rZW4pKQogICAgKyAJCQkJ CWdvdG8gZXJyb3JfcmV0dXJuOwogICAgKyAKICAgICsrCQkJCS8qCiAgICArKwkJCQkgKiBIb29r IGFueSBvYXV0aF90b2tlbiBpbnRvIHRoZSBQR2Nvbm4gaW1tZWRpYXRlbHkgc28gdGhhdAogICAg KysJCQkJICogdGhlIGFsbG9jYXRpb24gaXNuJ3QgbG9zdCBpbiBjYXNlIG9mIGFuIGVycm9yLgog ICAgKysJCQkJICovCiAgICArKwkJCQlzZXRfY29ubl9vYXV0aF90b2tlbihjb25uLCBvYXV0aF90 b2tlbik7CiAgICArKwogICAgKyAJCQkJaWYgKCFhY3R4LT51c2VyX3Byb21wdGVkKQogICAgKyAJ CQkJewogICAgKyAJCQkJCS8qCiAgICArQEAgc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvb2F1 dGgtY3VybC5jOiBwZ19mZV9ydW5fb2F1dGhfZmxvd19pbXBsKFBHY29ubiAqY29ubikKICAgICsg CQkJCQlhY3R4LT51c2VyX3Byb21wdGVkID0gdHJ1ZTsKICAgICsgCQkJCX0KICAgICsgCiAgICAr LQkJCQlpZiAoY29ubi0+b2F1dGhfdG9rZW4pCiAgICArKwkJCQlpZiAob2F1dGhfdG9rZW4pCiAg ICArIAkJCQkJYnJlYWs7CQkvKiBkb25lISAqLwogICAgKyAKICAgICsgCQkJCS8qCiAgICArQEAg c3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvb2F1dGgtY3VybC5jOiBwZ19mZV9ydW5fb2F1dGhf Zmxvd19pbXBsKFBHY29ubiAqY29ubikKICAgICsgCQkJCSAqIHRoZSBjbGllbnQgd2FpdCBkaXJl Y3RseSBvbiB0aGUgdGltZXJmZCByYXRoZXIgdGhhbiB0aGUKICAgICsgCQkJCSAqIG11bHRpcGxl eGVyLgogICAgKyAJCQkJICovCiAgICArLQkJCQljb25uLT5hbHRzb2NrID0gYWN0eC0+dGltZXJm ZDsKICAgICsrCQkJCXNldF9jb25uX2FsdHNvY2soY29ubiwgYWN0eC0+dGltZXJmZCk7CiAgICAr IAogICAgKyAJCQkJYWN0eC0+c3RlcCA9IE9BVVRIX1NURVBfV0FJVF9JTlRFUlZBTDsKICAgICsg CQkJCWFjdHgtPnJ1bm5pbmcgPSAxOwogICAgK0BAIHNyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRo L29hdXRoLWN1cmwuYzogcGdfZmVfcnVuX29hdXRoX2Zsb3dfaW1wbChQR2Nvbm4gKmNvbm4pCiAg ICArIAkJICogcG9pbnQsIGFjdHgtPnJ1bm5pbmcgd2lsbCBiZSBzZXQuIEJ1dCB0aGVyZSBhcmUg c29tZSBjb3JuZXIgY2FzZXMKICAgICsgCQkgKiB3aGVyZSB3ZSBjYW4gaW1tZWRpYXRlbHkgbG9v cCBiYWNrIGFyb3VuZDsgc2VlIHN0YXJ0X3JlcXVlc3QoKS4KICAgICsgCQkgKi8KICAgICstCX0g d2hpbGUgKCFjb25uLT5vYXV0aF90b2tlbiAmJiAhYWN0eC0+cnVubmluZyk7CiAgICArKwl9IHdo aWxlICghb2F1dGhfdG9rZW4gJiYgIWFjdHgtPnJ1bm5pbmcpOwogICAgKyAKICAgICsgCS8qIElm IHdlJ3ZlIHN0b3JlZCBhIHRva2VuLCB3ZSdyZSBkb25lLiBPdGhlcndpc2UgY29tZSBiYWNrIGxh dGVyLiAqLwogICAgKy0JcmV0dXJuIGNvbm4tPm9hdXRoX3Rva2VuID8gUEdSRVNfUE9MTElOR19P SyA6IFBHUkVTX1BPTExJTkdfUkVBRElORzsKICAgICsrCXJldHVybiBvYXV0aF90b2tlbiA/IFBH UkVTX1BPTExJTkdfT0sgOiBQR1JFU19QT0xMSU5HX1JFQURJTkc7CiAgICArIAogICAgKyBlcnJv cl9yZXR1cm46CiAgICAgKwllcnJidWYgPSBjb25uX2Vycm9yTWVzc2FnZShjb25uKTsKICAgIC0r I2Vsc2UKICAgIC0rCWVycmJ1ZiA9ICZjb25uLT5lcnJvck1lc3NhZ2U7CiAgICAtKyNlbmRpZgog ICAgLSsKICAgICsgCiAgICAgIAkvKgogICAgICAJICogQXNzZW1ibGUgdGhlIHRocmVlIHBhcnRz IG9mIG91ciBlcnJvcjogY29udGV4dCwgYm9keSwgYW5kIGRldGFpbC4gU2VlCiAgICAgIAkgKiBh bHNvIHRoZSBkb2N1bWVudGF0aW9uIGZvciBzdHJ1Y3QgYXN5bmNfY3R4LgogICAgQEAgc3JjL2lu dGVyZmFjZXMvbGlicHEtb2F1dGgvb2F1dGgtdXRpbHMuYyAobmV3KQogICAgICsKICAgICArI2lu Y2x1ZGUgPHNpZ25hbC5oPgogICAgICsKICAgIC0rI2luY2x1ZGUgImxpYnBxLWludC5oIgogICAg ICsjaW5jbHVkZSAib2F1dGgtdXRpbHMuaCIKICAgICArCiAgICAgKyNpZm5kZWYgVVNFX0RZTkFN SUNfT0FVVEgKICAgICArI2Vycm9yIG9hdXRoLXV0aWxzLmMgaXMgbm90IHN1cHBvcnRlZCBpbiBz dGF0aWMgYnVpbGRzCiAgICAgKyNlbmRpZgogICAgICsKICAgIC0rc3RhdGljIGxpYnBxX2dldHRl eHRfZnVuYyBsaWJwcV9nZXR0ZXh0X2ltcGw7CiAgICArKyNpZmRlZiBMSUJQUV9JTlRfSAogICAg KysjZXJyb3IgZG8gbm90IHJlbHkgb24gbGlicHEtaW50LmggaW4gbGlicHEtb2F1dGgKICAgICsr I2VuZGlmCiAgICArKwogICAgKysvKgogICAgKysgKiBGdW5jdGlvbiBwb2ludGVycyBzZXQgYnkg bGlicHFfb2F1dGhfaW5pdCgpLgogICAgKysgKi8KICAgICArCiAgICAgK3BndGhyZWFkbG9ja190 IHBnX2dfdGhyZWFkbG9jazsKICAgICsrc3RhdGljIGxpYnBxX2dldHRleHRfZnVuYyBsaWJwcV9n ZXR0ZXh0X2ltcGw7CiAgICArKwogICAgICtjb25uX2Vycm9yTWVzc2FnZV9mdW5jIGNvbm5fZXJy b3JNZXNzYWdlOwogICAgKytjb25uX29hdXRoX2NsaWVudF9pZF9mdW5jIGNvbm5fb2F1dGhfY2xp ZW50X2lkOwogICAgKytjb25uX29hdXRoX2NsaWVudF9zZWNyZXRfZnVuYyBjb25uX29hdXRoX2Ns aWVudF9zZWNyZXQ7CiAgICArK2Nvbm5fb2F1dGhfZGlzY292ZXJ5X3VyaV9mdW5jIGNvbm5fb2F1 dGhfZGlzY292ZXJ5X3VyaTsKICAgICsrY29ubl9vYXV0aF9pc3N1ZXJfaWRfZnVuYyBjb25uX29h dXRoX2lzc3Vlcl9pZDsKICAgICsrY29ubl9vYXV0aF9zY29wZV9mdW5jIGNvbm5fb2F1dGhfc2Nv cGU7CiAgICArK2Nvbm5fc2FzbF9zdGF0ZV9mdW5jIGNvbm5fc2FzbF9zdGF0ZTsKICAgICsrCiAg ICArK3NldF9jb25uX2FsdHNvY2tfZnVuYyBzZXRfY29ubl9hbHRzb2NrOwogICAgKytzZXRfY29u bl9vYXV0aF90b2tlbl9mdW5jIHNldF9jb25uX29hdXRoX3Rva2VuOwogICAgICsKICAgICArLyot CiAgICAgKyAqIEluaXRpYWxpemVzIGxpYnBxLW9hdXRoIGJ5IHNldHRpbmcgbmVjZXNzYXJ5IGNh bGxiYWNrcy4KICAgIEBAIHNyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL29hdXRoLXV0aWxzLmMg KG5ldykKICAgICArICoKICAgICArICogLSBsaWJwcV9nZXR0ZXh0OiB0cmFuc2xhdGVzIGVycm9y IG1lc3NhZ2VzIHVzaW5nIGxpYnBxJ3MgbWVzc2FnZSBkb21haW4KICAgICArICoKICAgIC0rICog LSBjb25uLT5lcnJvck1lc3NhZ2U6IGhvbGRzIHRyYW5zbGF0ZWQgZXJyb3JzIGZvciB0aGUgY29u bmVjdGlvbi4gVGhpcyBpcwogICAgLSsgKiAgIGhhbmRsZWQgdGhyb3VnaCBhIHRyYW5zbGF0aW9u IHNoaW0sIHdoaWNoIGF2b2lkcyBlaXRoZXIgZGVwZW5kaW5nIG9uIHRoZQogICAgLSsgKiAgIG9m ZnNldCBvZiB0aGUgZXJyb3JNZXNzYWdlIGluIFBHY29ubiwgb3IgbmVlZGluZyB0byBleHBvcnQg dGhlIHZhcmlhZGljCiAgICAtKyAqICAgbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoKS4KICAgICsr ICogVGhlIGltcGxlbWVudGF0aW9uIGFsc28gbmVlZHMgYWNjZXNzIHRvIHNldmVyYWwgbWVtYmVy cyBvZiB0aGUgUEdjb25uIHN0cnVjdCwKICAgICsrICogd2hpY2ggYXJlIG5vdCBndWFyYW50ZWVk IHRvIHN0YXkgaW4gcGxhY2UgYWNyb3NzIG1pbm9yIHZlcnNpb25zLiBBY2Nlc3NvcnMKICAgICsr ICogKG5hbWVkIGNvbm5fKikgYW5kIG11dGF0b3JzIChuYW1lZCBzZXRfY29ubl8qKSBhcmUgaW5q ZWN0ZWQgaGVyZS4KICAgICArICovCiAgICAgK3ZvaWQKICAgICArbGlicHFfb2F1dGhfaW5pdChw Z3RocmVhZGxvY2tfdCB0aHJlYWRsb2NrX2ltcGwsCiAgICAgKwkJCQkgbGlicHFfZ2V0dGV4dF9m dW5jIGdldHRleHRfaW1wbCwKICAgIC0rCQkJCSBjb25uX2Vycm9yTWVzc2FnZV9mdW5jIGVycm1z Z19pbXBsKQogICAgKysJCQkJIGNvbm5fZXJyb3JNZXNzYWdlX2Z1bmMgZXJybXNnX2ltcGwsCiAg ICArKwkJCQkgY29ubl9vYXV0aF9jbGllbnRfaWRfZnVuYyBjbGllbnRpZF9pbXBsLAogICAgKysJ CQkJIGNvbm5fb2F1dGhfY2xpZW50X3NlY3JldF9mdW5jIGNsaWVudHNlY3JldF9pbXBsLAogICAg KysJCQkJIGNvbm5fb2F1dGhfZGlzY292ZXJ5X3VyaV9mdW5jIGRpc2NvdmVyeXVyaV9pbXBsLAog ICAgKysJCQkJIGNvbm5fb2F1dGhfaXNzdWVyX2lkX2Z1bmMgaXNzdWVyaWRfaW1wbCwKICAgICsr CQkJCSBjb25uX29hdXRoX3Njb3BlX2Z1bmMgc2NvcGVfaW1wbCwKICAgICsrCQkJCSBjb25uX3Nh c2xfc3RhdGVfZnVuYyBzYXNsc3RhdGVfaW1wbCwKICAgICsrCQkJCSBzZXRfY29ubl9hbHRzb2Nr X2Z1bmMgc2V0YWx0c29ja19pbXBsLAogICAgKysJCQkJIHNldF9jb25uX29hdXRoX3Rva2VuX2Z1 bmMgc2V0dG9rZW5faW1wbCkKICAgICArewogICAgICsJcGdfZ190aHJlYWRsb2NrID0gdGhyZWFk bG9ja19pbXBsOwogICAgICsJbGlicHFfZ2V0dGV4dF9pbXBsID0gZ2V0dGV4dF9pbXBsOwogICAg ICsJY29ubl9lcnJvck1lc3NhZ2UgPSBlcnJtc2dfaW1wbDsKICAgICsrCWNvbm5fb2F1dGhfY2xp ZW50X2lkID0gY2xpZW50aWRfaW1wbDsKICAgICsrCWNvbm5fb2F1dGhfY2xpZW50X3NlY3JldCA9 IGNsaWVudHNlY3JldF9pbXBsOwogICAgKysJY29ubl9vYXV0aF9kaXNjb3ZlcnlfdXJpID0gZGlz Y292ZXJ5dXJpX2ltcGw7CiAgICArKwljb25uX29hdXRoX2lzc3Vlcl9pZCA9IGlzc3VlcmlkX2lt cGw7CiAgICArKwljb25uX29hdXRoX3Njb3BlID0gc2NvcGVfaW1wbDsKICAgICsrCWNvbm5fc2Fz bF9zdGF0ZSA9IHNhc2xzdGF0ZV9pbXBsOwogICAgKysJc2V0X2Nvbm5fYWx0c29jayA9IHNldGFs dHNvY2tfaW1wbDsKICAgICsrCXNldF9jb25uX29hdXRoX3Rva2VuID0gc2V0dG9rZW5faW1wbDsK ICAgICArfQogICAgICsKICAgICArLyoKICAgIEBAIHNyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRo L29hdXRoLXV0aWxzLmggKG5ldykKICAgICArI2lmbmRlZiBPQVVUSF9VVElMU19ICiAgICAgKyNk ZWZpbmUgT0FVVEhfVVRJTFNfSAogICAgICsKICAgICsrI2luY2x1ZGUgImZlLWF1dGgtb2F1dGgu aCIKICAgICArI2luY2x1ZGUgImxpYnBxLWZlLmgiCiAgICAgKyNpbmNsdWRlICJwcWV4cGJ1ZmZl ci5oIgogICAgICsKICAgICsrLyoKICAgICsrICogQSBiYW5rIG9mIGNhbGxiYWNrcyB0byBzYWZl bHkgYWNjZXNzIG1lbWJlcnMgb2YgUEdjb25uLCB3aGljaCBhcmUgYWxsIHBhc3NlZAogICAgKysg KiB0byBsaWJwcV9vYXV0aF9pbml0KCkgYnkgbGlicHEuCiAgICArKyAqCiAgICArKyAqIEtlZXAg dGhlc2UgYWxpZ25lZCB3aXRoIHRoZSBkZWZpbml0aW9ucyBpbiBmZS1hdXRoLW9hdXRoLmMgYXMg d2VsbCBhcyB0aGUKICAgICsrICogc3RhdGljIGRlY2xhcmF0aW9ucyBpbiBvYXV0aC1jdXJsLmMu CiAgICArKyAqLwogICAgKysjZGVmaW5lIERFQ0xBUkVfR0VUVEVSKFRZUEUsIE1FTUJFUikgXAog ICAgKysJdHlwZWRlZiBUWVBFICgqY29ubl8gIyMgTUVNQkVSICMjIF9mdW5jKSAoUEdjb25uICpj b25uKTsgXAogICAgKysJZXh0ZXJuIGNvbm5fICMjIE1FTUJFUiAjIyBfZnVuYyBjb25uXyAjIyBN RU1CRVI7CiAgICArKwogICAgKysjZGVmaW5lIERFQ0xBUkVfU0VUVEVSKFRZUEUsIE1FTUJFUikg XAogICAgKysJdHlwZWRlZiB2b2lkICgqc2V0X2Nvbm5fICMjIE1FTUJFUiAjIyBfZnVuYykgKFBH Y29ubiAqY29ubiwgVFlQRSB2YWwpOyBcCiAgICArKwlleHRlcm4gc2V0X2Nvbm5fICMjIE1FTUJF UiAjIyBfZnVuYyBzZXRfY29ubl8gIyMgTUVNQkVSOwogICAgKysKICAgICsrREVDTEFSRV9HRVRU RVIoUFFFeHBCdWZmZXIsIGVycm9yTWVzc2FnZSk7CiAgICArK0RFQ0xBUkVfR0VUVEVSKGNoYXIg Kiwgb2F1dGhfY2xpZW50X2lkKTsKICAgICsrREVDTEFSRV9HRVRURVIoY2hhciAqLCBvYXV0aF9j bGllbnRfc2VjcmV0KTsKICAgICsrREVDTEFSRV9HRVRURVIoY2hhciAqLCBvYXV0aF9kaXNjb3Zl cnlfdXJpKTsKICAgICsrREVDTEFSRV9HRVRURVIoY2hhciAqLCBvYXV0aF9pc3N1ZXJfaWQpOwog ICAgKytERUNMQVJFX0dFVFRFUihjaGFyICosIG9hdXRoX3Njb3BlKTsKICAgICsrREVDTEFSRV9H RVRURVIoZmVfb2F1dGhfc3RhdGUgKiwgc2FzbF9zdGF0ZSk7CiAgICArKwogICAgKytERUNMQVJF X1NFVFRFUihwZ3NvY2tldCwgYWx0c29jayk7CiAgICArK0RFQ0xBUkVfU0VUVEVSKGNoYXIgKiwg b2F1dGhfdG9rZW4pOwogICAgKysKICAgICsrI3VuZGVmIERFQ0xBUkVfR0VUVEVSCiAgICArKyN1 bmRlZiBERUNMQVJFX1NFVFRFUgogICAgKysKICAgICArdHlwZWRlZiBjaGFyICooKmxpYnBxX2dl dHRleHRfZnVuYykgKGNvbnN0IGNoYXIgKm1zZ2lkKTsKICAgIC0rdHlwZWRlZiBQUUV4cEJ1ZmZl ciAoKmNvbm5fZXJyb3JNZXNzYWdlX2Z1bmMpIChQR2Nvbm4gKmNvbm4pOwogICAgICsKICAgICAr LyogSW5pdGlhbGl6ZXMgbGlicHEtb2F1dGguICovCiAgICAgK2V4dGVybiBQR0RMTEVYUE9SVCB2 b2lkIGxpYnBxX29hdXRoX2luaXQocGd0aHJlYWRsb2NrX3QgdGhyZWFkbG9jaywKICAgICArCQkJ CQkJCQkJCSBsaWJwcV9nZXR0ZXh0X2Z1bmMgZ2V0dGV4dF9pbXBsLAogICAgLSsJCQkJCQkJCQkJ IGNvbm5fZXJyb3JNZXNzYWdlX2Z1bmMgZXJybXNnX2ltcGwpOwogICAgKysJCQkJCQkJCQkJIGNv bm5fZXJyb3JNZXNzYWdlX2Z1bmMgZXJybXNnX2ltcGwsCiAgICArKwkJCQkJCQkJCQkgY29ubl9v YXV0aF9jbGllbnRfaWRfZnVuYyBjbGllbnRpZF9pbXBsLAogICAgKysJCQkJCQkJCQkJIGNvbm5f b2F1dGhfY2xpZW50X3NlY3JldF9mdW5jIGNsaWVudHNlY3JldF9pbXBsLAogICAgKysJCQkJCQkJ CQkJIGNvbm5fb2F1dGhfZGlzY292ZXJ5X3VyaV9mdW5jIGRpc2NvdmVyeXVyaV9pbXBsLAogICAg KysJCQkJCQkJCQkJIGNvbm5fb2F1dGhfaXNzdWVyX2lkX2Z1bmMgaXNzdWVyaWRfaW1wbCwKICAg ICsrCQkJCQkJCQkJCSBjb25uX29hdXRoX3Njb3BlX2Z1bmMgc2NvcGVfaW1wbCwKICAgICsrCQkJ CQkJCQkJCSBjb25uX3Nhc2xfc3RhdGVfZnVuYyBzYXNsc3RhdGVfaW1wbCwKICAgICsrCQkJCQkJ CQkJCSBzZXRfY29ubl9hbHRzb2NrX2Z1bmMgc2V0YWx0c29ja19pbXBsLAogICAgKysJCQkJCQkJ CQkJIHNldF9jb25uX29hdXRoX3Rva2VuX2Z1bmMgc2V0dG9rZW5faW1wbCk7CiAgICAgKwogICAg LSsvKiBDYWxsYmFjayB0byBzYWZlbHkgb2J0YWluIGNvbm4tPmVycm9yTWVzc2FnZSBmcm9tIGEg UEdjb25uLiAqLwogICAgLStleHRlcm4gY29ubl9lcnJvck1lc3NhZ2VfZnVuYyBjb25uX2Vycm9y TWVzc2FnZTsKICAgICsrLyoKICAgICsrICogRHVwbGljYXRlZCBBUElzLCBjb3BpZWQgZnJvbSBs aWJwcSAocHJpbWFyaWx5IGxpYnBxLWludC5oLCB3aGljaCB3ZSBjYW5ub3QKICAgICsrICogZGVw ZW5kIG9uIGhlcmUpLgogICAgKysgKi8KICAgICsrCiAgICArK3R5cGVkZWYgZW51bQogICAgKyt7 CiAgICArKwlQR19CT09MX1VOS05PV04gPSAwLAkJLyogQ3VycmVudGx5IHVua25vd24gKi8KICAg ICsrCVBHX0JPT0xfWUVTLAkJCQkvKiBZZXMgKHRydWUpICovCiAgICArKwlQR19CT09MX05PCQkJ CQkvKiBObyAoZmFsc2UpICovCiAgICArK30gUEdUZXJuYXJ5Qm9vbDsKICAgICArCiAgICAtKy8q IER1cGxpY2F0ZWQgQVBJcywgY29waWVkIGZyb20gbGlicHEuICovCiAgICAgK2V4dGVybiB2b2lk IGxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqZm10LC4u LikgcGdfYXR0cmlidXRlX3ByaW50ZigyLCAzKTsKICAgICArZXh0ZXJuIGJvb2wgb2F1dGhfdW5z YWZlX2RlYnVnZ2luZ19lbmFibGVkKHZvaWQpOwogICAgICtleHRlcm4gaW50CXBxX2Jsb2NrX3Np Z3BpcGUoc2lnc2V0X3QgKm9zaWdzZXQsIGJvb2wgKnNpZ3BpcGVfcGVuZGluZyk7CiAgICAgK2V4 dGVybiB2b2lkIHBxX3Jlc2V0X3NpZ3BpcGUoc2lnc2V0X3QgKm9zaWdzZXQsIGJvb2wgc2lncGlw ZV9wZW5kaW5nLCBib29sIGdvdF9lcGlwZSk7CiAgICAgKwogICAgKysjaWZkZWYgRU5BQkxFX05M UwogICAgKytleHRlcm4gY2hhciAqbGlicHFfZ2V0dGV4dChjb25zdCBjaGFyICptc2dpZCkgcGdf YXR0cmlidXRlX2Zvcm1hdF9hcmcoMSk7CiAgICArKyNlbHNlCiAgICArKyNkZWZpbmUgbGlicHFf Z2V0dGV4dCh4KSAoeCkKICAgICsrI2VuZGlmCiAgICArKwogICAgKytleHRlcm4gcGd0aHJlYWRs b2NrX3QgcGdfZ190aHJlYWRsb2NrOwogICAgKysKICAgICsrI2RlZmluZSBwZ2xvY2tfdGhyZWFk KCkJCXBnX2dfdGhyZWFkbG9jayh0cnVlKQogICAgKysjZGVmaW5lIHBndW5sb2NrX3RocmVhZCgp CXBnX2dfdGhyZWFkbG9jayhmYWxzZSkKICAgICsrCiAgICAgKyNlbmRpZgkJCQkJCQkvKiBPQVVU SF9VVElMU19IICovCiAgICAgCiAgICAgICMjIHNyYy9pbnRlcmZhY2VzL2xpYnBxL01ha2VmaWxl ICMjCiAgICBAQCBzcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLW9hdXRoLmM6IGNsZWFudXBf dXNlcl9vYXV0aF9mbG93KFBHY29ubiAqY29ubikKICAgICArICovCiAgICAgKwogICAgICt0eXBl ZGVmIGNoYXIgKigqbGlicHFfZ2V0dGV4dF9mdW5jKSAoY29uc3QgY2hhciAqbXNnaWQpOwogICAg LSt0eXBlZGVmIFBRRXhwQnVmZmVyICgqY29ubl9lcnJvck1lc3NhZ2VfZnVuYykgKFBHY29ubiAq Y29ubik7CiAgICAgKwogICAgICsvKgogICAgLSsgKiBUaGlzIHNoaW0gaXMgaW5qZWN0ZWQgaW50 byBsaWJwcS1vYXV0aCBzbyB0aGF0IGl0IGRvZXNuJ3QgZGVwZW5kIG9uIHRoZQogICAgLSsgKiBv ZmZzZXQgb2YgY29ubi0+ZXJyb3JNZXNzYWdlLgogICAgLSsgKgogICAgLSsgKiBUT0RPOiBsb29r IGludG8gZXhwb3J0aW5nIGxpYnBxX2FwcGVuZF9jb25uX2Vycm9yIG9yIGEgY29tcGFyYWJsZSBB UEkgZnJvbQogICAgLSsgKiBsaWJwcSwgaW5zdGVhZC4KICAgICsrICogRGVmaW5lIGFjY2Vzc29y L211dGF0b3Igc2hpbXMgdG8gaW5qZWN0IGludG8gbGlicHEtb2F1dGgsIHNvIHRoYXQgaXQgZG9l c24ndAogICAgKysgKiBkZXBlbmQgb24gdGhlIG9mZnNldHMgd2l0aGluIFBHY29ubi4gKFRoZXNl IGhhdmUgY2hhbmdlZCBkdXJpbmcgbWlub3IgdmVyc2lvbgogICAgKysgKiB1cGRhdGVzIGluIHRo ZSBwYXN0LikKICAgICArICovCiAgICAtK3N0YXRpYyBQUUV4cEJ1ZmZlcgogICAgLStjb25uX2Vy cm9yTWVzc2FnZShQR2Nvbm4gKmNvbm4pCiAgICAtK3sKICAgIC0rCXJldHVybiAmY29ubi0+ZXJy b3JNZXNzYWdlOwogICAgLSt9CiAgICArKwogICAgKysjZGVmaW5lIERFRklORV9HRVRURVIoVFlQ RSwgTUVNQkVSKSBcCiAgICArKwl0eXBlZGVmIFRZUEUgKCpjb25uXyAjIyBNRU1CRVIgIyMgX2Z1 bmMpIChQR2Nvbm4gKmNvbm4pOyBcCiAgICArKwlzdGF0aWMgVFlQRSBjb25uXyAjIyBNRU1CRVIo UEdjb25uICpjb25uKSB7IHJldHVybiBjb25uLT5NRU1CRVI7IH0KICAgICsrCiAgICArKy8qIExp a2UgREVGSU5FX0dFVFRFUiwgYnV0IHJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBtZW1iZXIuICov CiAgICArKyNkZWZpbmUgREVGSU5FX0dFVFRFUl9QKFRZUEUsIE1FTUJFUikgXAogICAgKysJdHlw ZWRlZiBUWVBFICgqY29ubl8gIyMgTUVNQkVSICMjIF9mdW5jKSAoUEdjb25uICpjb25uKTsgXAog ICAgKysJc3RhdGljIFRZUEUgY29ubl8gIyMgTUVNQkVSKFBHY29ubiAqY29ubikgeyByZXR1cm4g JmNvbm4tPk1FTUJFUjsgfQogICAgKysKICAgICsrI2RlZmluZSBERUZJTkVfU0VUVEVSKFRZUEUs IE1FTUJFUikgXAogICAgKysJdHlwZWRlZiB2b2lkICgqc2V0X2Nvbm5fICMjIE1FTUJFUiAjIyBf ZnVuYykgKFBHY29ubiAqY29ubiwgVFlQRSB2YWwpOyBcCiAgICArKwlzdGF0aWMgdm9pZCBzZXRf Y29ubl8gIyMgTUVNQkVSKFBHY29ubiAqY29ubiwgVFlQRSB2YWwpIHsgY29ubi0+TUVNQkVSID0g dmFsOyB9CiAgICArKwogICAgKytERUZJTkVfR0VUVEVSX1AoUFFFeHBCdWZmZXIsIGVycm9yTWVz c2FnZSk7CiAgICArK0RFRklORV9HRVRURVIoY2hhciAqLCBvYXV0aF9jbGllbnRfaWQpOwogICAg KytERUZJTkVfR0VUVEVSKGNoYXIgKiwgb2F1dGhfY2xpZW50X3NlY3JldCk7CiAgICArK0RFRklO RV9HRVRURVIoY2hhciAqLCBvYXV0aF9kaXNjb3ZlcnlfdXJpKTsKICAgICsrREVGSU5FX0dFVFRF UihjaGFyICosIG9hdXRoX2lzc3Vlcl9pZCk7CiAgICArK0RFRklORV9HRVRURVIoY2hhciAqLCBv YXV0aF9zY29wZSk7CiAgICArK0RFRklORV9HRVRURVIoZmVfb2F1dGhfc3RhdGUgKiwgc2FzbF9z dGF0ZSk7CiAgICArKwogICAgKytERUZJTkVfU0VUVEVSKHBnc29ja2V0LCBhbHRzb2NrKTsKICAg ICsrREVGSU5FX1NFVFRFUihjaGFyICosIG9hdXRoX3Rva2VuKTsKICAgICArCiAgICAgKy8qCiAg ICAgKyAqIExvYWRzIHRoZSBsaWJwcS1vYXV0aCBwbHVnaW4gdmlhIGRsb3BlbigpLCBpbml0aWFs aXplcyBpdCwgYW5kIHBsdWdzIGl0cwogICAgQEAgc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0 aC1vYXV0aC5jOiBjbGVhbnVwX3VzZXJfb2F1dGhfZmxvdyhQR2Nvbm4gKmNvbm4pCiAgICAgKwog ICAgICsJdm9pZAkJKCppbml0KSAocGd0aHJlYWRsb2NrX3QgdGhyZWFkbG9jaywKICAgICArCQkJ CQkJIGxpYnBxX2dldHRleHRfZnVuYyBnZXR0ZXh0X2ltcGwsCiAgICAtKwkJCQkJCSBjb25uX2Vy cm9yTWVzc2FnZV9mdW5jIGVycm1zZ19pbXBsKTsKICAgICsrCQkJCQkJIGNvbm5fZXJyb3JNZXNz YWdlX2Z1bmMgZXJybXNnX2ltcGwsCiAgICArKwkJCQkJCSBjb25uX29hdXRoX2NsaWVudF9pZF9m dW5jIGNsaWVudGlkX2ltcGwsCiAgICArKwkJCQkJCSBjb25uX29hdXRoX2NsaWVudF9zZWNyZXRf ZnVuYyBjbGllbnRzZWNyZXRfaW1wbCwKICAgICsrCQkJCQkJIGNvbm5fb2F1dGhfZGlzY292ZXJ5 X3VyaV9mdW5jIGRpc2NvdmVyeXVyaV9pbXBsLAogICAgKysJCQkJCQkgY29ubl9vYXV0aF9pc3N1 ZXJfaWRfZnVuYyBpc3N1ZXJpZF9pbXBsLAogICAgKysJCQkJCQkgY29ubl9vYXV0aF9zY29wZV9m dW5jIHNjb3BlX2ltcGwsCiAgICArKwkJCQkJCSBjb25uX3Nhc2xfc3RhdGVfZnVuYyBzYXNsc3Rh dGVfaW1wbCwKICAgICsrCQkJCQkJIHNldF9jb25uX2FsdHNvY2tfZnVuYyBzZXRhbHRzb2NrX2lt cGwsCiAgICArKwkJCQkJCSBzZXRfY29ubl9vYXV0aF90b2tlbl9mdW5jIHNldHRva2VuX2ltcGwp OwogICAgICsJUG9zdGdyZXNQb2xsaW5nU3RhdHVzVHlwZSAoKmZsb3cpIChQR2Nvbm4gKmNvbm4p OwogICAgICsJdm9pZAkJKCpjbGVhbnVwKSAoUEdjb25uICpjb25uKTsKICAgICArCiAgICBAQCBz cmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLW9hdXRoLmM6IGNsZWFudXBfdXNlcl9vYXV0aF9m bG93KFBHY29ubiAqY29ubikKICAgICArCSAqLwogICAgICsJY29uc3QgY2hhciAqY29uc3QgbW9k dWxlX25hbWUgPQogICAgICsjaWYgZGVmaW5lZChfX2Rhcndpbl9fKQogICAgLSsJCUxJQkRJUiAi L2xpYnBxLW9hdXRoLSIgUEdfTUFKT1JWRVJTSU9OICItIiBQR19NSU5PUlZFUlNJT04gRExTVUZG SVg7CiAgICArKwkJTElCRElSICIvbGlicHEtb2F1dGgtIiBQR19NQUpPUlZFUlNJT04gRExTVUZG SVg7CiAgICAgKyNlbHNlCiAgICAtKwkJImxpYnBxLW9hdXRoLSIgUEdfTUFKT1JWRVJTSU9OICIt IiBQR19NSU5PUlZFUlNJT04gRExTVUZGSVg7CiAgICArKwkJImxpYnBxLW9hdXRoLSIgUEdfTUFK T1JWRVJTSU9OIERMU1VGRklYOwogICAgICsjZW5kaWYKICAgICArCiAgICAgKwlzdGF0ZS0+YnVp bHRpbl9mbG93ID0gZGxvcGVuKG1vZHVsZV9uYW1lLCBSVExEX05PVyB8IFJUTERfTE9DQUwpOwog ICAgQEAgc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC1vYXV0aC5jOiBjbGVhbnVwX3VzZXJf b2F1dGhfZmxvdyhQR2Nvbm4gKmNvbm4pCiAgICAgKyNlbHNlCiAgICAgKwkJCSBOVUxMLAogICAg ICsjZW5kaWYKICAgIC0rCQkJIGNvbm5fZXJyb3JNZXNzYWdlKTsKICAgICsrCQkJIGNvbm5fZXJy b3JNZXNzYWdlLAogICAgKysJCQkgY29ubl9vYXV0aF9jbGllbnRfaWQsCiAgICArKwkJCSBjb25u X29hdXRoX2NsaWVudF9zZWNyZXQsCiAgICArKwkJCSBjb25uX29hdXRoX2Rpc2NvdmVyeV91cmks CiAgICArKwkJCSBjb25uX29hdXRoX2lzc3Vlcl9pZCwKICAgICsrCQkJIGNvbm5fb2F1dGhfc2Nv cGUsCiAgICArKwkJCSBjb25uX3Nhc2xfc3RhdGUsCiAgICArKwkJCSBzZXRfY29ubl9hbHRzb2Nr LAogICAgKysJCQkgc2V0X2Nvbm5fb2F1dGhfdG9rZW4pOwogICAgICsKICAgICArCQlpbml0aWFs aXplZCA9IHRydWU7CiAgICAgKwl9CiAgICBAQCBzcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRo LW9hdXRoLmM6IHNldHVwX3Rva2VuX3JlcXVlc3QoUEdjb25uICpjb25uLCBmZV9vYXV0aAogICAg ICAJcmV0dXJuIHRydWU7CiAgICAgCiAgICAgICMjIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1 dGgtb2F1dGguaCAjIwogICAgLUBAIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGgu aDogdHlwZWRlZiBzdHJ1Y3QKICAgICtAQAogICAgKyAjaWZuZGVmIEZFX0FVVEhfT0FVVEhfSAog ICAgKyAjZGVmaW5lIEZFX0FVVEhfT0FVVEhfSAogICAgKyAKICAgICsrI2luY2x1ZGUgImZlLWF1 dGgtc2FzbC5oIgogICAgKyAjaW5jbHVkZSAibGlicHEtZmUuaCIKICAgICstI2luY2x1ZGUgImxp YnBxLWludC5oIgogICAgKyAKICAgICsgCiAgICArIGVudW0gZmVfb2F1dGhfc3RlcAogICAgK0BA IHNyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGguaDogZW51bSBmZV9vYXV0aF9zdGVw CiAgICArIAlGRV9PQVVUSF9TRVJWRVJfRVJST1IsCiAgICArIH07CiAgICArIAogICAgKysvKgog ICAgKysgKiBUaGlzIHN0cnVjdCBpcyBleHBvcnRlZCB0byB0aGUgbGlicHEtb2F1dGggbW9kdWxl LiBJZiBjaGFuZ2VzIGFyZSBuZWVkZWQKICAgICsrICogZHVyaW5nIGJhY2twb3J0cyB0byBzdGFi bGUgYnJhbmNoZXMsIHBsZWFzZSBrZWVwIEFCSSBjb21wYXRpYmlsaXR5IChubwogICAgKysgKiBj aGFuZ2VzIHRvIGV4aXN0aW5nIG1lbWJlcnMsIGFkZCBuZXcgbWVtYmVycyBhdCB0aGUgZW5kLCBl dGMuKS4KICAgICsrICovCiAgICArIHR5cGVkZWYgc3RydWN0CiAgICArIHsKICAgICsgCWVudW0g ZmVfb2F1dGhfc3RlcCBzdGVwOwogICAgICAKICAgICAgCVBHY29ubgkgICAqY29ubjsKICAgICAg CXZvaWQJICAgKmFzeW5jX2N0eDsK --0000000000002497d70633dfa037 Content-Type: application/x-patch; name="v10-0001-oauth-Move-the-builtin-flow-into-a-separate-modu.patch" Content-Disposition: attachment; filename="v10-0001-oauth-Move-the-builtin-flow-into-a-separate-modu.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ma1qz2iy1 RnJvbSBlODZlOTNmN2FjOGUwZWU3NDZiOTVkODA0YjgzNjdhNmVhNGM5ZDMwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogV2VkLCAyNiBNYXIgMjAyNSAxMDo1NToyOCAtMDcwMApTdWJqZWN0 OiBbUEFUQ0ggdjEwXSBvYXV0aDogTW92ZSB0aGUgYnVpbHRpbiBmbG93IGludG8gYSBzZXBhcmF0 ZSBtb2R1bGUKClRoZSBhZGRpdGlvbmFsIHBhY2thZ2luZyBmb290cHJpbnQgb2YgdGhlIE9BdXRo IEN1cmwgZGVwZW5kZW5jeSwgYXMgd2VsbAphcyB0aGUgZXhpc3RlbmNlIG9mIGxpYmN1cmwgaW4g dGhlIGFkZHJlc3Mgc3BhY2UgZXZlbiBpZiBPQXV0aCBpc24ndApldmVyIHVzZWQgYnkgYSBjbGll bnQsIGhhcyByYWlzZWQgc29tZSBjb25jZXJucy4gU3BsaXQgb2ZmIHRoaXMKZGVwZW5kZW5jeSBp bnRvIGEgc2VwYXJhdGUgbG9hZGFibGUgbW9kdWxlIGNhbGxlZCBsaWJwcS1vYXV0aC4KCldoZW4g Y29uZmlndXJlZCB1c2luZyAtLXdpdGgtbGliY3VybCwgbGlicHEuc28gc2VhcmNoZXMgZm9yIHRo aXMgbmV3Cm1vZHVsZSB2aWEgZGxvcGVuKCkuIEVuZCB1c2VycyBtYXkgY2hvb3NlIG5vdCB0byBp bnN0YWxsIHRoZSBsaWJwcS1vYXV0aAptb2R1bGUsIGluIHdoaWNoIGNhc2UgdGhlIGRlZmF1bHQg ZmxvdyBpcyBkaXNhYmxlZC4KCkZvciBzdGF0aWMgYXBwbGljYXRpb25zIHVzaW5nIGxpYnBxLmEs IHRoZSBsaWJwcS1vYXV0aCBzdGF0aWNsaWIgaXMgYQptYW5kYXRvcnkgbGluay10aW1lIGRlcGVu ZGVuY3kgZm9yIC0td2l0aC1saWJjdXJsIGJ1aWxkcy4gbGlicHEucGMgaGFzCmJlZW4gdXBkYXRl ZCBhY2NvcmRpbmdseS4KClRoZSBkZWZhdWx0IGZsb3cgcmVsaWVzIG9uIHNvbWUgbGlicHEgaW50 ZXJuYWxzLiBTb21lIG9mIHRoZXNlIGNhbiBiZQpzYWZlbHkgZHVwbGljYXRlZCAoc3VjaCBhcyB0 aGUgU0lHUElQRSBoYW5kbGVycyksIGJ1dCBvdGhlcnMgbmVlZCB0byBiZQpzaGFyZWQgYmV0d2Vl biBsaWJwcSBhbmQgbGlicHEtb2F1dGggZm9yIHRocmVhZC1zYWZldHkuIFRvIGF2b2lkCmV4cG9y dGluZyB0aGVzZSBpbnRlcm5hbHMgdG8gYWxsIGxpYnBxIGNsaWVudHMgZm9yZXZlciwgdGhlc2UK ZGVwZW5kZW5jaWVzIGFyZSBpbnN0ZWFkIGluamVjdGVkIGZyb20gdGhlIGxpYnBxIHNpZGUgdmlh IGFuCmluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLiBUaGlzIGFsc28gbGV0cyBsaWJwcSBjb21tdW5p Y2F0ZSB0aGUgb2Zmc2V0cyBvZgpQR2Nvbm4gc3RydWN0IG1lbWJlcnMgdG8gbGlicHEtb2F1dGgs IHNvIHRoYXQgd2UgY2FuIGZ1bmN0aW9uIHdpdGhvdXQKY3Jhc2hpbmcgaWYgdGhlIG1vZHVsZSBv biB0aGUgc2VhcmNoIHBhdGggY2FtZSBmcm9tIGEgZGlmZmVyZW50IGJ1aWxkIG9mClBvc3RncmVz LiAoQSBtaW5vci12ZXJzaW9uIHVwZ3JhZGUgY291bGQgc3dhcCB0aGUgbGlicHEtb2F1dGggbW9k dWxlIG91dApmcm9tIHVuZGVyIGEgbG9uZy1ydW5uaW5nIGxpYnBxIGNsaWVudCBiZWZvcmUgaXQg ZG9lcyBpdHMgZmlyc3QgbG9hZCBvZgp0aGUgT0F1dGggZmxvdy4pCgpUaGlzIEFCSSBpcyBjb25z aWRlcmVkICJwcml2YXRlIi4gVGhlIG1vZHVsZSBoYXMgbm8gU09OQU1FIG9yIHZlcnNpb24Kc3lt bGlua3MsIGFuZCBpdCdzIG5hbWVkIGxpYnBxLW9hdXRoLTxtYWpvcj4uc28gdG8gYXZvaWQgbWl4 aW5nIGFuZAptYXRjaGluZyBhY3Jvc3MgUG9zdGdyZXMgdmVyc2lvbnMuIChGdXR1cmUgaW1wcm92 ZW1lbnRzIG1heSBwcm9tb3RlIHRoaXMKIk9BdXRoIGZsb3cgcGx1Z2luIiB0byBhIGZpcnN0LWNs YXNzIGNvbmNlcHQsIGF0IHdoaWNoIHBvaW50IHdlIHdvdWxkCm5lZWQgYSBwdWJsaWMgQVBJIHRv IHJlcGxhY2UgdGhpcyBhbnl3YXkuKQoKQWRkaXRpb25hbGx5LCBOTFMgc3VwcG9ydCBmb3IgZXJy b3IgbWVzc2FnZXMgaW4gYjNmMGJlNzg4YSB3YXMKaW5jb21wbGV0ZSwgYmVjYXVzZSB0aGUgbmV3 IGVycm9yIG1hY3JvcyB3ZXJlbid0IGJlaW5nIHNjYW5uZWQgYnkKeGdldHRleHQuIEZpeCB0aGF0 IG5vdy4KClBlciByZXF1ZXN0IGZyb20gVG9tIExhbmUgYW5kIEJydWNlIE1vbWppYW4uIEJhc2Vk IG9uIGFuIGluaXRpYWwgcGF0Y2gKYnkgRGFuaWVsIEd1c3RhZnNzb24sIHdobyBhbHNvIGNvbnRy aWJ1dGVkIGRvY3MgY2hhbmdlcy4gVGhlICJiYXJlIgpkbG9wZW4oKSBjb25jZXB0IGNhbWUgZnJv bSBUaG9tYXMgTXVucm8uIE1hbnkgbWFueSBwZW9wbGUgcmV2aWV3ZWQgdGhlCmRlc2lnbiBhbmQg aW1wbGVtZW50YXRpb247IHRoYW5rIHlvdSEKCkNvLWF1dGhvcmVkLWJ5OiBEYW5pZWwgR3VzdGFm c3NvbiA8ZGFuaWVsQHllc3FsLnNlPgpSZXZpZXdlZC1ieTogQW5kcmVzIEZyZXVuZCA8YW5kcmVz QGFuYXJhemVsLmRlPgpSZXZpZXdlZC1ieTogQ2hyaXN0b3BoIEJlcmcgPG15b25AZGViaWFuLm9y Zz4KUmV2aWV3ZWQtYnk6IEplbHRlIEZlbm5lbWEtTmlvIDxwb3N0Z3Jlc0BqZWx0ZWYubmw+ClJl dmlld2VkLWJ5OiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRyYXV0Lm9yZz4KUmV2aWV3 ZWQtYnk6IFdvbGZnYW5nIFdhbHRoZXIgPHdhbHRoZXJAdGVjaG5vd2xlZGd5LmRlPgpEaXNjdXNz aW9uOiBodHRwczovL3Bvc3Rnci5lcy9tLzY0MTY4Ny4xNzQyMzYwMjQ5JTQwc3NzLnBnaC5wYS51 cwotLS0KIGNvbmZpZy9wcm9ncmFtcy5tNCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAx NyArLQogY29uZmlndXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDUw ICsrKy0KIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAy NiArLQogZG9jL3NyYy9zZ21sL2luc3RhbGxhdGlvbi5zZ21sICAgICAgICAgICAgICAgIHwgICA4 ICsKIGRvYy9zcmMvc2dtbC9saWJwcS5zZ21sICAgICAgICAgICAgICAgICAgICAgICB8ICAzMCAr Ky0KIG1lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzMiAr Ky0KIHNyYy9NYWtlZmlsZS5nbG9iYWwuaW4gICAgICAgICAgICAgICAgICAgICAgICB8ICAgMyAr CiBzcmMvaW50ZXJmYWNlcy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgfCAgMTIgKwog c3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvTWFrZWZpbGUgICAgICAgICAgIHwgIDgzICsrKysr KysKIHNyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL1JFQURNRSAgICAgICAgICAgICB8ICA1OCAr KysrKwogc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvZXhwb3J0cy50eHQgICAgICAgIHwgICA0 ICsKIHNyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL21lc29uLmJ1aWxkICAgICAgICB8ICA0NSAr KysrCiAuLi4vb2F1dGgtY3VybC5jfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxODAg KysrKysrKystLS0tLS0KIHNyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL29hdXRoLWN1cmwuaCAg ICAgICB8ICAyNCArKwogc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvb2F1dGgtdXRpbHMuYyAg ICAgIHwgMjMzICsrKysrKysrKysrKysrKysrKwogc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgv b2F1dGgtdXRpbHMuaCAgICAgIHwgIDk0ICsrKysrKysKIHNyYy9pbnRlcmZhY2VzL2xpYnBxL01h a2VmaWxlICAgICAgICAgICAgICAgICB8ICAzNiArKy0KIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2V4 cG9ydHMudHh0ICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1h dXRoLW9hdXRoLmMgICAgICAgICAgfCAyMjkgKysrKysrKysrKysrKysrKy0KIHNyYy9pbnRlcmZh Y2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGguaCAgICAgICAgICB8ICAxMiArLQogc3JjL2ludGVyZmFj ZXMvbGlicHEvbWVzb24uYnVpbGQgICAgICAgICAgICAgIHwgIDI1ICstCiBzcmMvaW50ZXJmYWNl cy9saWJwcS9ubHMubWsgICAgICAgICAgICAgICAgICAgfCAgMTIgKy0KIHNyYy9tYWtlZmlsZXMv bWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvdGVzdC9tb2R1bGVz L29hdXRoX3ZhbGlkYXRvci9tZXNvbi5idWlsZCAgfCAgIDIgKy0KIC4uLi9tb2R1bGVzL29hdXRo X3ZhbGlkYXRvci90LzAwMl9jbGllbnQucGwgICB8ICAgMiArLQogMjUgZmlsZXMgY2hhbmdlZCwg MTA4MCBpbnNlcnRpb25zKCspLCAxNDAgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9SRUFETUUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv aW50ZXJmYWNlcy9saWJwcS1vYXV0aC9leHBvcnRzLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL21lc29uLmJ1aWxkCiByZW5hbWUgc3JjL2ludGVyZmFj ZXMve2xpYnBxL2ZlLWF1dGgtb2F1dGgtY3VybC5jID0+IGxpYnBxLW9hdXRoL29hdXRoLWN1cmwu Y30gKDk0JSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9v YXV0aC1jdXJsLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0 aC9vYXV0aC11dGlscy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2ludGVyZmFjZXMvbGlicHEt b2F1dGgvb2F1dGgtdXRpbHMuaAoKZGlmZiAtLWdpdCBhL2NvbmZpZy9wcm9ncmFtcy5tNCBiL2Nv bmZpZy9wcm9ncmFtcy5tNAppbmRleCAwYTA3ZmViMzdjYy4uMGFkMWU1OGI0OGQgMTAwNjQ0Ci0t LSBhL2NvbmZpZy9wcm9ncmFtcy5tNAorKysgYi9jb25maWcvcHJvZ3JhbXMubTQKQEAgLTI4Niw5 ICsyODYsMjAgQEAgQUNfREVGVU4oW1BHQUNfQ0hFQ0tfTElCQ1VSTF0sCiBbCiAgIEFDX0NIRUNL X0hFQURFUihjdXJsL2N1cmwuaCwgW10sCiAJCQkJICBbQUNfTVNHX0VSUk9SKFtoZWFkZXIgZmls ZSA8Y3VybC9jdXJsLmg+IGlzIHJlcXVpcmVkIGZvciAtLXdpdGgtbGliY3VybF0pXSkKLSAgQUNf Q0hFQ0tfTElCKGN1cmwsIGN1cmxfbXVsdGlfaW5pdCwgW10sCisgIEFDX0NIRUNLX0xJQihjdXJs LCBjdXJsX211bHRpX2luaXQsIFsKKwkJCQkgQUNfREVGSU5FKFtIQVZFX0xJQkNVUkxdLCBbMV0s IFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGN1cmwnIGxpYnJhcnkgKC1sY3VybCkuXSkK KwkJCQkgQUNfU1VCU1QoTElCQ1VSTF9MRExJQlMsIC1sY3VybCkKKwkJCSAgIF0sCiAJCQkgICBb QUNfTVNHX0VSUk9SKFtsaWJyYXJ5ICdjdXJsJyBkb2VzIG5vdCBwcm92aWRlIGN1cmxfbXVsdGlf aW5pdF0pXSkKIAorICBwZ2FjX3NhdmVfQ1BQRkxBR1M9JENQUEZMQUdTCisgIHBnYWNfc2F2ZV9M REZMQUdTPSRMREZMQUdTCisgIHBnYWNfc2F2ZV9MSUJTPSRMSUJTCisKKyAgQ1BQRkxBR1M9IiRM SUJDVVJMX0NQUEZMQUdTICRDUFBGTEFHUyIKKyAgTERGTEFHUz0iJExJQkNVUkxfTERGTEFHUyAk TERGTEFHUyIKKyAgTElCUz0iJExJQkNVUkxfTERMSUJTICRMSUJTIgorCiAgICMgQ2hlY2sgdG8g c2VlIHdoZXRoZXIgdGhlIGN1cnJlbnQgcGxhdGZvcm0gc3VwcG9ydHMgdGhyZWFkc2FmZSBDdXJs CiAgICMgaW5pdGlhbGl6YXRpb24uCiAgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgY3VybF9nbG9iYWxf aW5pdCB0aHJlYWQgc2FmZXR5XSwgW3BnYWNfY3ZfX2xpYmN1cmxfdGhyZWFkc2FmZV9pbml0XSwK QEAgLTMzOCw0ICszNDksOCBAQCBBQ19ERUZVTihbUEdBQ19DSEVDS19MSUJDVVJMXSwKICoqKiBs b29rdXBzLiBSZWJ1aWxkIGxpYmN1cmwgd2l0aCB0aGUgQXN5bmNoRE5TIGZlYXR1cmUgZW5hYmxl ZCBpbiBvcmRlcgogKioqIHRvIHVzZSBpdCB3aXRoIGxpYnBxLl0pCiAgIGZpCisKKyAgQ1BQRkxB R1M9JHBnYWNfc2F2ZV9DUFBGTEFHUworICBMREZMQUdTPSRwZ2FjX3NhdmVfTERGTEFHUworICBM SUJTPSRwZ2FjX3NhdmVfTElCUwogXSkjIFBHQUNfQ0hFQ0tfTElCQ1VSTApkaWZmIC0tZ2l0IGEv Y29uZmlndXJlIGIvY29uZmlndXJlCmluZGV4IDA5MzYwMTA3MThkLi5hNGM0YmNiNDBlYSAxMDA3 NTUKLS0tIGEvY29uZmlndXJlCisrKyBiL2NvbmZpZ3VyZQpAQCAtNjU1LDYgKzY1NSw3IEBAIFVV SURfTElCUwogTERBUF9MSUJTX0JFCiBMREFQX0xJQlNfRkUKIHdpdGhfc3NsCitMSUJDVVJMX0xE TElCUwogUFRIUkVBRF9DRkxBR1MKIFBUSFJFQURfTElCUwogUFRIUkVBRF9DQwpAQCAtNzExLDYg KzcxMiw4IEBAIHdpdGhfbGlieG1sCiBMSUJOVU1BX0xJQlMKIExJQk5VTUFfQ0ZMQUdTCiB3aXRo X2xpYm51bWEKK0xJQkNVUkxfTERGTEFHUworTElCQ1VSTF9DUFBGTEFHUwogTElCQ1VSTF9MSUJT CiBMSUJDVVJMX0NGTEFHUwogd2l0aF9saWJjdXJsCkBAIC05MDUzLDE5ICs5MDU2LDI3IEBAICRh c19lY2hvICJ5ZXMiID4mNjsgfQogCiBmaQogCi0gICMgV2Ugb25seSBjYXJlIGFib3V0IC1JLCAt RCwgYW5kIC1MIHN3aXRjaGVzOwotICAjIG5vdGUgdGhhdCAtbGN1cmwgd2lsbCBiZSBhZGRlZCBi eSBQR0FDX0NIRUNLX0xJQkNVUkwgYmVsb3cuCisgICMgQ3VybCdzIGZsYWdzIGFyZSBrZXB0IHNl cGFyYXRlIGZyb20gdGhlIHN0YW5kYXJkIENQUEZMQUdTL0xERkxBR1MuIFdlIHVzZQorICAjIHRo ZW0gb25seSBmb3IgbGlicHEtb2F1dGguCisgIExJQkNVUkxfQ1BQRkxBR1M9CisgIExJQkNVUkxf TERGTEFHUz0KKworICAjIFdlIG9ubHkgY2FyZSBhYm91dCAtSSwgLUQsIGFuZCAtTCBzd2l0Y2hl cy4gTm90ZSB0aGF0IC1sY3VybCB3aWxsIGJlIGFkZGVkCisgICMgdG8gTElCQ1VSTF9MRExJQlMg YnkgUEdBQ19DSEVDS19MSUJDVVJMLCBiZWxvdy4KICAgZm9yIHBnYWNfb3B0aW9uIGluICRMSUJD VVJMX0NGTEFHUzsgZG8KICAgICBjYXNlICRwZ2FjX29wdGlvbiBpbgotICAgICAgLUkqfC1EKikg Q1BQRkxBR1M9IiRDUFBGTEFHUyAkcGdhY19vcHRpb24iOzsKKyAgICAgIC1JKnwtRCopIExJQkNV UkxfQ1BQRkxBR1M9IiRMSUJDVVJMX0NQUEZMQUdTICRwZ2FjX29wdGlvbiI7OwogICAgIGVzYWMK ICAgZG9uZQogICBmb3IgcGdhY19vcHRpb24gaW4gJExJQkNVUkxfTElCUzsgZG8KICAgICBjYXNl ICRwZ2FjX29wdGlvbiBpbgotICAgICAgLUwqKSBMREZMQUdTPSIkTERGTEFHUyAkcGdhY19vcHRp b24iOzsKKyAgICAgIC1MKikgTElCQ1VSTF9MREZMQUdTPSIkTElCQ1VSTF9MREZMQUdTICRwZ2Fj X29wdGlvbiI7OwogICAgIGVzYWMKICAgZG9uZQogCisKKworCiAgICMgT0F1dGggcmVxdWlyZXMg cHl0aG9uIGZvciB0ZXN0aW5nCiAgIGlmIHRlc3QgIiR3aXRoX3B5dGhvbiIgIT0geWVzOyB0aGVu CiAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiAq KiogT0F1dGggc3VwcG9ydCB0ZXN0cyByZXF1aXJlIC0td2l0aC1weXRob24gdG8gcnVuIiA+JjUK QEAgLTEyNzA0LDkgKzEyNzE1LDYgQEAgZmkKIAogZmkKIAotIyBYWFggbGliY3VybCBtdXN0IGxp bmsgYWZ0ZXIgbGliZ3NzYXBpX2tyYjUgb24gRnJlZUJTRCB0byBhdm9pZCBzZWdmYXVsdHMKLSMg ZHVyaW5nIGdzc19hY3F1aXJlX2NyZWQoKS4gVGhpcyBpcyBwb3NzaWJseSByZWxhdGVkIHRvIEN1 cmwncyBIZWltZGFsCi0jIGRlcGVuZGVuY3kgb24gdGhhdCBwbGF0Zm9ybT8KIGlmIHRlc3QgIiR3 aXRoX2xpYmN1cmwiID0geWVzIDsgdGhlbgogCiAgIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdy ZWwgIiRMSU5FTk8iICJjdXJsL2N1cmwuaCIgImFjX2N2X2hlYWRlcl9jdXJsX2N1cmxfaCIgIiRh Y19pbmNsdWRlc19kZWZhdWx0IgpAQCAtMTI3NTQsMTcgKzEyNzYyLDI2IEBAIGZpCiB7ICRhc19l Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9jdXJs X2N1cmxfbXVsdGlfaW5pdCIgPiY1CiAkYXNfZWNobyAiJGFjX2N2X2xpYl9jdXJsX2N1cmxfbXVs dGlfaW5pdCIgPiY2OyB9CiBpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9jdXJsX2N1cmxfbXVsdGlfaW5p dCIgPSB4eWVzOyB0aGVuIDoKLSAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotI2RlZmluZSBI QVZFX0xJQkNVUkwgMQotX0FDRU9GCiAKLSAgTElCUz0iLWxjdXJsICRMSUJTIgorCiskYXNfZWNo byAiI2RlZmluZSBIQVZFX0xJQkNVUkwgMSIgPj5jb25mZGVmcy5oCisKKwkJCQkgTElCQ1VSTF9M RExJQlM9LWxjdXJsCisKIAogZWxzZQogICBhc19mbl9lcnJvciAkPyAibGlicmFyeSAnY3VybCcg ZG9lcyBub3QgcHJvdmlkZSBjdXJsX211bHRpX2luaXQiICIkTElORU5PIiA1CiBmaQogCiAKKyAg cGdhY19zYXZlX0NQUEZMQUdTPSRDUFBGTEFHUworICBwZ2FjX3NhdmVfTERGTEFHUz0kTERGTEFH UworICBwZ2FjX3NhdmVfTElCUz0kTElCUworCisgIENQUEZMQUdTPSIkTElCQ1VSTF9DUFBGTEFH UyAkQ1BQRkxBR1MiCisgIExERkxBR1M9IiRMSUJDVVJMX0xERkxBR1MgJExERkxBR1MiCisgIExJ QlM9IiRMSUJDVVJMX0xETElCUyAkTElCUyIKKwogICAjIENoZWNrIHRvIHNlZSB3aGV0aGVyIHRo ZSBjdXJyZW50IHBsYXRmb3JtIHN1cHBvcnRzIHRocmVhZHNhZmUgQ3VybAogICAjIGluaXRpYWxp emF0aW9uLgogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr aW5nIGZvciBjdXJsX2dsb2JhbF9pbml0IHRocmVhZCBzYWZldHkiID4mNQpAQCAtMTI4NjgsNiAr MTI4ODUsMTAgQEAgJGFzX2VjaG8gIiRwZ2FjX2N2X19saWJjdXJsX2FzeW5jX2RucyIgPiY2OyB9 CiAqKiogdG8gdXNlIGl0IHdpdGggbGlicHEuIiAiJExJTkVOTyIgNQogICBmaQogCisgIENQUEZM QUdTPSRwZ2FjX3NhdmVfQ1BQRkxBR1MKKyAgTERGTEFHUz0kcGdhY19zYXZlX0xERkxBR1MKKyAg TElCUz0kcGdhY19zYXZlX0xJQlMKKwogZmkKIAogaWYgdGVzdCAiJHdpdGhfZ3NzYXBpIiA9IHll cyA7IHRoZW4KQEAgLTE0NTE2LDYgKzE0NTM3LDEzIEBAIGRvbmUKIAogZmkKIAoraWYgdGVzdCAi JHdpdGhfbGliY3VybCIgPSB5ZXMgOyB0aGVuCisgICMgRXJyb3Igb3V0IGVhcmx5IGlmIHRoaXMg cGxhdGZvcm0gY2FuJ3Qgc3VwcG9ydCBsaWJwcS1vYXV0aC4KKyAgaWYgdGVzdCAiJGFjX2N2X2hl YWRlcl9zeXNfZXZlbnRfaCIgIT0geWVzIC1hICIkYWNfY3ZfaGVhZGVyX3N5c19lcG9sbF9oIiAh PSB5ZXM7IHRoZW4KKyAgICBhc19mbl9lcnJvciAkPyAiY2xpZW50IE9BdXRoIGlzIG5vdCBzdXBw b3J0ZWQgb24gdGhpcyBwbGF0Zm9ybSIgIiRMSU5FTk8iIDUKKyAgZmkKK2ZpCisKICMjCiAjIyBU eXBlcywgc3RydWN0dXJlcywgY29tcGlsZXIgY2hhcmFjdGVyaXN0aWNzCiAjIwpkaWZmIC0tZ2l0 IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmluZGV4IDJhNzhjZGRkODI1Li5jMDQ3MTAz MGU5MCAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtMTAz MywxOSArMTAzMywyNyBAQCBpZiB0ZXN0ICIkd2l0aF9saWJjdXJsIiA9IHllcyA7IHRoZW4KICAg IyB0byBleHBsaWNpdGx5IHNldCBUTFMgMS4zIGNpcGhlcnN1aXRlcykuCiAgIFBLR19DSEVDS19N T0RVTEVTKExJQkNVUkwsIFtsaWJjdXJsID49IDcuNjEuMF0pCiAKLSAgIyBXZSBvbmx5IGNhcmUg YWJvdXQgLUksIC1ELCBhbmQgLUwgc3dpdGNoZXM7Ci0gICMgbm90ZSB0aGF0IC1sY3VybCB3aWxs IGJlIGFkZGVkIGJ5IFBHQUNfQ0hFQ0tfTElCQ1VSTCBiZWxvdy4KKyAgIyBDdXJsJ3MgZmxhZ3Mg YXJlIGtlcHQgc2VwYXJhdGUgZnJvbSB0aGUgc3RhbmRhcmQgQ1BQRkxBR1MvTERGTEFHUy4gV2Ug dXNlCisgICMgdGhlbSBvbmx5IGZvciBsaWJwcS1vYXV0aC4KKyAgTElCQ1VSTF9DUFBGTEFHUz0K KyAgTElCQ1VSTF9MREZMQUdTPQorCisgICMgV2Ugb25seSBjYXJlIGFib3V0IC1JLCAtRCwgYW5k IC1MIHN3aXRjaGVzLiBOb3RlIHRoYXQgLWxjdXJsIHdpbGwgYmUgYWRkZWQKKyAgIyB0byBMSUJD VVJMX0xETElCUyBieSBQR0FDX0NIRUNLX0xJQkNVUkwsIGJlbG93LgogICBmb3IgcGdhY19vcHRp b24gaW4gJExJQkNVUkxfQ0ZMQUdTOyBkbwogICAgIGNhc2UgJHBnYWNfb3B0aW9uIGluCi0gICAg ICAtSSp8LUQqKSBDUFBGTEFHUz0iJENQUEZMQUdTICRwZ2FjX29wdGlvbiI7OworICAgICAgLUkq fC1EKikgTElCQ1VSTF9DUFBGTEFHUz0iJExJQkNVUkxfQ1BQRkxBR1MgJHBnYWNfb3B0aW9uIjs7 CiAgICAgZXNhYwogICBkb25lCiAgIGZvciBwZ2FjX29wdGlvbiBpbiAkTElCQ1VSTF9MSUJTOyBk bwogICAgIGNhc2UgJHBnYWNfb3B0aW9uIGluCi0gICAgICAtTCopIExERkxBR1M9IiRMREZMQUdT ICRwZ2FjX29wdGlvbiI7OworICAgICAgLUwqKSBMSUJDVVJMX0xERkxBR1M9IiRMSUJDVVJMX0xE RkxBR1MgJHBnYWNfb3B0aW9uIjs7CiAgICAgZXNhYwogICBkb25lCiAKKyAgQUNfU1VCU1QoTElC Q1VSTF9DUFBGTEFHUykKKyAgQUNfU1VCU1QoTElCQ1VSTF9MREZMQUdTKQorCiAgICMgT0F1dGgg cmVxdWlyZXMgcHl0aG9uIGZvciB0ZXN0aW5nCiAgIGlmIHRlc3QgIiR3aXRoX3B5dGhvbiIgIT0g eWVzOyB0aGVuCiAgICAgQUNfTVNHX1dBUk4oWyoqKiBPQXV0aCBzdXBwb3J0IHRlc3RzIHJlcXVp cmUgLS13aXRoLXB5dGhvbiB0byBydW5dKQpAQCAtMTM1NCw5ICsxMzYyLDYgQEAgZmFpbHVyZS4g IEl0IGlzIHBvc3NpYmxlIHRoZSBjb21waWxlciBpc24ndCBsb29raW5nIGluIHRoZSBwcm9wZXIg ZGlyZWN0b3J5LgogVXNlIC0td2l0aG91dC16bGliIHRvIGRpc2FibGUgemxpYiBzdXBwb3J0Ll0p XSkKIGZpCiAKLSMgWFhYIGxpYmN1cmwgbXVzdCBsaW5rIGFmdGVyIGxpYmdzc2FwaV9rcmI1IG9u IEZyZWVCU0QgdG8gYXZvaWQgc2VnZmF1bHRzCi0jIGR1cmluZyBnc3NfYWNxdWlyZV9jcmVkKCku IFRoaXMgaXMgcG9zc2libHkgcmVsYXRlZCB0byBDdXJsJ3MgSGVpbWRhbAotIyBkZXBlbmRlbmN5 IG9uIHRoYXQgcGxhdGZvcm0/CiBpZiB0ZXN0ICIkd2l0aF9saWJjdXJsIiA9IHllcyA7IHRoZW4K ICAgUEdBQ19DSEVDS19MSUJDVVJMCiBmaQpAQCAtMTY1NCw2ICsxNjU5LDEzIEBAIGlmIHRlc3Qg IiRQT1JUTkFNRSIgPSAid2luMzIiIDsgdGhlbgogICAgQUNfQ0hFQ0tfSEVBREVSUyhjcnRkZWZz LmgpCiBmaQogCitpZiB0ZXN0ICIkd2l0aF9saWJjdXJsIiA9IHllcyA7IHRoZW4KKyAgIyBFcnJv ciBvdXQgZWFybHkgaWYgdGhpcyBwbGF0Zm9ybSBjYW4ndCBzdXBwb3J0IGxpYnBxLW9hdXRoLgor ICBpZiB0ZXN0ICIkYWNfY3ZfaGVhZGVyX3N5c19ldmVudF9oIiAhPSB5ZXMgLWEgIiRhY19jdl9o ZWFkZXJfc3lzX2Vwb2xsX2giICE9IHllczsgdGhlbgorICAgIEFDX01TR19FUlJPUihbY2xpZW50 LXNpZGUgT0F1dGggaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtXSkKKyAgZmkKK2Zp CisKICMjCiAjIyBUeXBlcywgc3RydWN0dXJlcywgY29tcGlsZXIgY2hhcmFjdGVyaXN0aWNzCiAj IwpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2luc3RhbGxhdGlvbi5zZ21sIGIvZG9jL3NyYy9z Z21sL2luc3RhbGxhdGlvbi5zZ21sCmluZGV4IDA3N2JjYzIwNzU5Li5kOTI4YjEwM2QyMiAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2luc3RhbGxhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dt bC9pbnN0YWxsYXRpb24uc2dtbApAQCAtMzEzLDYgKzMxMywxNCBAQAogICAgICA8L3BhcmE+CiAg ICAgPC9saXN0aXRlbT4KIAorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBZb3Ug bmVlZCA8cHJvZHVjdG5hbWU+Q3VybDwvcHJvZHVjdG5hbWU+IHRvIGJ1aWxkIGFuIG9wdGlvbmFs IG1vZHVsZQorICAgICAgd2hpY2ggaW1wbGVtZW50cyB0aGUgPGxpbmsgbGlua2VuZD0ibGlicHEt b2F1dGgiPk9BdXRoIERldmljZQorICAgICAgQXV0aG9yaXphdGlvbiBmbG93PC9saW5rPiBmb3Ig Y2xpZW50IGFwcGxpY2F0aW9ucy4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisKICAg ICA8bGlzdGl0ZW0+CiAgICAgIDxwYXJhPgogICAgICAgWW91IG5lZWQgPHByb2R1Y3RuYW1lPkxa NDwvcHJvZHVjdG5hbWU+LCBpZiB5b3Ugd2FudCB0byBzdXBwb3J0CmRpZmYgLS1naXQgYS9kb2Mv c3JjL3NnbWwvbGlicHEuc2dtbCBiL2RvYy9zcmMvc2dtbC9saWJwcS5zZ21sCmluZGV4IDhjZGQy OTk3ZDQzLi42OTVmZTk1OGMzZSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2xpYnBxLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL2xpYnBxLnNnbWwKQEAgLTEwMjI2LDE1ICsxMDIyNiwyMCBAQCB2 b2lkIFBRaW5pdFNTTChpbnQgZG9fc3NsKTsKICAgPHRpdGxlPk9BdXRoIFN1cHBvcnQ8L3RpdGxl PgogCiAgIDxwYXJhPgotICAgbGlicHEgaW1wbGVtZW50cyBzdXBwb3J0IGZvciB0aGUgT0F1dGgg djIgRGV2aWNlIEF1dGhvcml6YXRpb24gY2xpZW50IGZsb3csCisgICA8YXBwbGljYXRpb24+bGli cHE8L2FwcGxpY2F0aW9uPiBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIHRoZSBPQXV0aCB2MiBEZXZp Y2UgQXV0aG9yaXphdGlvbiBjbGllbnQgZmxvdywKICAgIGRvY3VtZW50ZWQgaW4KICAgIDx1bGlu ayB1cmw9Imh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjODYyOCI+UkZD IDg2Mjg8L3VsaW5rPiwKLSAgIHdoaWNoIGl0IHdpbGwgYXR0ZW1wdCB0byB1c2UgYnkgZGVmYXVs dCBpZiB0aGUgc2VydmVyCisgICBhcyBhbiBvcHRpb25hbCBtb2R1bGUuIFNlZSB0aGUgPGxpbmsg bGlua2VuZD0iY29uZmlndXJlLW9wdGlvbi13aXRoLWxpYmN1cmwiPgorICAgaW5zdGFsbGF0aW9u IGRvY3VtZW50YXRpb248L2xpbms+IGZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gZW5hYmxlIHN1 cHBvcnQKKyAgIGZvciBEZXZpY2UgQXV0aG9yaXphdGlvbiBhcyBhIGJ1aWx0aW4gZmxvdy4KKyAg PC9wYXJhPgorICA8cGFyYT4KKyAgIFdoZW4gc3VwcG9ydCBpcyBlbmFibGVkIGFuZCB0aGUgb3B0 aW9uYWwgbW9kdWxlIGluc3RhbGxlZCwgPGFwcGxpY2F0aW9uPmxpYnBxPC9hcHBsaWNhdGlvbj4K KyAgIHdpbGwgdXNlIHRoZSBidWlsdGluIGZsb3cgYnkgZGVmYXVsdCBpZiB0aGUgc2VydmVyCiAg ICA8bGluayBsaW5rZW5kPSJhdXRoLW9hdXRoIj5yZXF1ZXN0cyBhIGJlYXJlciB0b2tlbjwvbGlu az4gZHVyaW5nCiAgICBhdXRoZW50aWNhdGlvbi4gVGhpcyBmbG93IGNhbiBiZSB1dGlsaXplZCBl dmVuIGlmIHRoZSBzeXN0ZW0gcnVubmluZyB0aGUKICAgIGNsaWVudCBhcHBsaWNhdGlvbiBkb2Vz IG5vdCBoYXZlIGEgdXNhYmxlIHdlYiBicm93c2VyLCBmb3IgZXhhbXBsZSB3aGVuCi0gICBydW5u aW5nIGEgY2xpZW50IHZpYSA8YXBwbGljYXRpb24+U1NIPC9hcHBsaWNhdGlvbj4uIENsaWVudCBh cHBsaWNhdGlvbnMgbWF5IGltcGxlbWVudCB0aGVpciBvd24gZmxvd3MKLSAgIGluc3RlYWQ7IHNl ZSA8eHJlZiBsaW5rZW5kPSJsaWJwcS1vYXV0aC1hdXRoZGF0YS1ob29rcyIvPi4KKyAgIHJ1bm5p bmcgYSBjbGllbnQgdmlhIDxhY3JvbnltPlNTSDwvYWNyb255bT4uCiAgIDwvcGFyYT4KICAgPHBh cmE+CiAgICBUaGUgYnVpbHRpbiBmbG93IHdpbGwsIGJ5IGRlZmF1bHQsIHByaW50IGEgVVJMIHRv IHZpc2l0IGFuZCBhIHVzZXIgY29kZSB0bwpAQCAtMTAyNTEsNiArMTAyNTYsMTEgQEAgVmlzaXQg aHR0cHM6Ly9leGFtcGxlLmNvbS9kZXZpY2UgYW5kIGVudGVyIHRoZSBjb2RlOiBBQkNELUVGR0gK ICAgIHRoZXkgbWF0Y2ggZXhwZWN0YXRpb25zLCBiZWZvcmUgY29udGludWluZy4gUGVybWlzc2lv bnMgc2hvdWxkIG5vdCBiZSBnaXZlbgogICAgdG8gdW50cnVzdGVkIHRoaXJkIHBhcnRpZXMuCiAg IDwvcGFyYT4KKyAgPHBhcmE+CisgICBDbGllbnQgYXBwbGljYXRpb25zIG1heSBpbXBsZW1lbnQg dGhlaXIgb3duIGZsb3dzIHRvIGN1c3RvbWl6ZSBpbnRlcmFjdGlvbgorICAgYW5kIGludGVncmF0 aW9uIHdpdGggYXBwbGljYXRpb25zLiBTZWUgPHhyZWYgbGlua2VuZD0ibGlicHEtb2F1dGgtYXV0 aGRhdGEtaG9va3MiLz4KKyAgIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyBhZGQgYSBjdXN0 b20gZmxvdyB0byA8YXBwbGljYXRpb24+bGlicHE8L2FwcGxpY2F0aW9uPi4KKyAgPC9wYXJhPgog ICA8cGFyYT4KICAgIEZvciBhbiBPQXV0aCBjbGllbnQgZmxvdyB0byBiZSB1c2FibGUsIHRoZSBj b25uZWN0aW9uIHN0cmluZyBtdXN0IGF0IG1pbmltdW0KICAgIGNvbnRhaW4gPHhyZWYgbGlua2Vu ZD0ibGlicHEtY29ubmVjdC1vYXV0aC1pc3N1ZXIiLz4gYW5kCkBAIC0xMDM2Niw3ICsxMDM3Niw5 IEBAIHR5cGVkZWYgc3RydWN0IF9QR3Byb21wdE9BdXRoRGV2aWNlCiA8L3N5bm9wc2lzPgogICAg ICAgICA8L3BhcmE+CiAgICAgICAgIDxwYXJhPgotICAgICAgICAgVGhlIE9BdXRoIERldmljZSBB dXRob3JpemF0aW9uIGZsb3cgaW5jbHVkZWQgaW4gPGFwcGxpY2F0aW9uPmxpYnBxPC9hcHBsaWNh dGlvbj4KKyAgICAgICAgIFRoZSBPQXV0aCBEZXZpY2UgQXV0aG9yaXphdGlvbiBmbG93IHdoaWNo CisgICAgICAgICA8bGluayBsaW5rZW5kPSJjb25maWd1cmUtb3B0aW9uLXdpdGgtbGliY3VybCI+ Y2FuIGJlIGluY2x1ZGVkPC9saW5rPgorICAgICAgICAgaW4gPGFwcGxpY2F0aW9uPmxpYnBxPC9h cHBsaWNhdGlvbj4KICAgICAgICAgIHJlcXVpcmVzIHRoZSBlbmQgdXNlciB0byB2aXNpdCBhIFVS TCB3aXRoIGEgYnJvd3NlciwgdGhlbiBlbnRlciBhIGNvZGUKICAgICAgICAgIHdoaWNoIHBlcm1p dHMgPGFwcGxpY2F0aW9uPmxpYnBxPC9hcHBsaWNhdGlvbj4gdG8gY29ubmVjdCB0byB0aGUgc2Vy dmVyCiAgICAgICAgICBvbiB0aGVpciBiZWhhbGYuIFRoZSBkZWZhdWx0IHByb21wdCBzaW1wbHkg cHJpbnRzIHRoZQpAQCAtMTAzNzgsNyArMTAzOTAsOCBAQCB0eXBlZGVmIHN0cnVjdCBfUEdwcm9t cHRPQXV0aERldmljZQogICAgICAgICAgVGhpcyBjYWxsYmFjayBpcyBvbmx5IGludm9rZWQgZHVy aW5nIHRoZSBidWlsdGluIGRldmljZQogICAgICAgICAgYXV0aG9yaXphdGlvbiBmbG93LiBJZiB0 aGUgYXBwbGljYXRpb24gaW5zdGFsbHMgYQogICAgICAgICAgPGxpbmsgbGlua2VuZD0ibGlicHEt b2F1dGgtYXV0aGRhdGEtb2F1dGgtYmVhcmVyLXRva2VuIj5jdXN0b20gT0F1dGgKLSAgICAgICAg IGZsb3c8L2xpbms+LCB0aGlzIGF1dGhkYXRhIHR5cGUgd2lsbCBub3QgYmUgdXNlZC4KKyAgICAg ICAgIGZsb3c8L2xpbms+LCBvciA8YXBwbGljYXRpb24+bGlicHE8L2FwcGxpY2F0aW9uPiB3YXMg bm90IGJ1aWx0IHdpdGgKKyAgICAgICAgIHN1cHBvcnQgZm9yIHRoZSBidWlsdGluIGZsb3csIHRo aXMgYXV0aGRhdGEgdHlwZSB3aWxsIG5vdCBiZSB1c2VkLgogICAgICAgICA8L3BhcmE+CiAgICAg ICAgIDxwYXJhPgogICAgICAgICAgSWYgYSBub24tTlVMTCA8c3RydWN0ZmllbGQ+dmVyaWZpY2F0 aW9uX3VyaV9jb21wbGV0ZTwvc3RydWN0ZmllbGQ+IGlzCkBAIC0xMDQwMCw4ICsxMDQxMyw5IEBA IHR5cGVkZWYgc3RydWN0IF9QR3Byb21wdE9BdXRoRGV2aWNlCiAgICAgICAgPC90ZXJtPgogICAg ICAgIDxsaXN0aXRlbT4KICAgICAgICAgPHBhcmE+Ci0gICAgICAgICBSZXBsYWNlcyB0aGUgZW50 aXJlIE9BdXRoIGZsb3cgd2l0aCBhIGN1c3RvbSBpbXBsZW1lbnRhdGlvbi4gVGhlIGhvb2sKLSAg ICAgICAgIHNob3VsZCBlaXRoZXIgZGlyZWN0bHkgcmV0dXJuIGEgQmVhcmVyIHRva2VuIGZvciB0 aGUgY3VycmVudAorICAgICAgICAgQWRkcyBhIGN1c3RvbSBpbXBsZW1lbnRhdGlvbiBvZiBhIGZs b3csIHJlcGxhY2luZyB0aGUgYnVpbHRpbiBmbG93IGlmCisgICAgICAgICBpdCBpcyA8bGluayBs aW5rZW5kPSJjb25maWd1cmUtb3B0aW9uLXdpdGgtbGliY3VybCI+aW5zdGFsbGVkPC9saW5rPi4K KyAgICAgICAgIFRoZSBob29rIHNob3VsZCBlaXRoZXIgZGlyZWN0bHkgcmV0dXJuIGEgQmVhcmVy IHRva2VuIGZvciB0aGUgY3VycmVudAogICAgICAgICAgdXNlci9pc3N1ZXIvc2NvcGUgY29tYmlu YXRpb24sIGlmIG9uZSBpcyBhdmFpbGFibGUgd2l0aG91dCBibG9ja2luZywgb3IKICAgICAgICAg IGVsc2Ugc2V0IHVwIGFuIGFzeW5jaHJvbm91cyBjYWxsYmFjayB0byByZXRyaWV2ZSBvbmUuCiAg ICAgICAgIDwvcGFyYT4KZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKaW5k ZXggYTE1MTZlNTQ1MjkuLjI5ZDQ2YzhhZDAxIDEwMDY0NAotLS0gYS9tZXNvbi5idWlsZAorKysg Yi9tZXNvbi5idWlsZApAQCAtMTA3LDYgKzEwNyw3IEBAIG9zX2RlcHMgPSBbXQogYmFja2VuZF9i b3RoX2RlcHMgPSBbXQogYmFja2VuZF9kZXBzID0gW10KIGxpYnBxX2RlcHMgPSBbXQorbGlicHFf b2F1dGhfZGVwcyA9IFtdCiAKIHBnX3N5c3Jvb3QgPSAnJwogCkBAIC04NjAsMTMgKzg2MSwxMyBA QCBlbmRpZgogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCiAKIGxpYmN1cmxvcHQgPSBnZXRfb3B0aW9uKCdsaWJjdXJsJykKK29h dXRoX2Zsb3dfc3VwcG9ydGVkID0gZmFsc2UKKwogaWYgbm90IGxpYmN1cmxvcHQuZGlzYWJsZWQo KQogICAjIENoZWNrIGZvciBsaWJjdXJsIDcuNjEuMCBvciBoaWdoZXIgKGNvcnJlc3BvbmRpbmcg dG8gUkhFTDggYW5kIHRoZSBhYmlsaXR5CiAgICMgdG8gZXhwbGljaXRseSBzZXQgVExTIDEuMyBj aXBoZXJzdWl0ZXMpLgogICBsaWJjdXJsID0gZGVwZW5kZW5jeSgnbGliY3VybCcsIHZlcnNpb246 ICc+PSA3LjYxLjAnLCByZXF1aXJlZDogbGliY3VybG9wdCkKICAgaWYgbGliY3VybC5mb3VuZCgp Ci0gICAgY2RhdGEuc2V0KCdVU0VfTElCQ1VSTCcsIDEpCi0KICAgICAjIENoZWNrIHRvIHNlZSB3 aGV0aGVyIHRoZSBjdXJyZW50IHBsYXRmb3JtIHN1cHBvcnRzIHRocmVhZC1zYWZlIEN1cmwKICAg ICAjIGluaXRpYWxpemF0aW9uLgogICAgIGxpYmN1cmxfdGhyZWFkc2FmZV9pbml0ID0gZmFsc2UK QEAgLTkzOCw2ICs5MzksMjIgQEAgaWYgbm90IGxpYmN1cmxvcHQuZGlzYWJsZWQoKQogICAgIGVu ZGlmCiAgIGVuZGlmCiAKKyAgIyBDaGVjayB0aGF0IHRoZSBjdXJyZW50IHBsYXRmb3JtIHN1cHBv cnRzIG91ciBidWlsdGluIGZsb3cuIFRoaXMgcmVxdWlyZXMKKyAgIyBsaWJjdXJsIGFuZCBvbmUg b2YgZWl0aGVyIGVwb2xsIG9yIGtxdWV1ZS4KKyAgb2F1dGhfZmxvd19zdXBwb3J0ZWQgPSAoCisg ICAgbGliY3VybC5mb3VuZCgpCisgICAgYW5kIChjYy5jaGVja19oZWFkZXIoJ3N5cy9ldmVudC5o JywgcmVxdWlyZWQ6IGZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M6IHRlc3Rf Y19hcmdzLCBpbmNsdWRlX2RpcmVjdG9yaWVzOiBwb3N0Z3Jlc19pbmMpCisgICAgICAgICBvciBj Yy5jaGVja19oZWFkZXIoJ3N5cy9lcG9sbC5oJywgcmVxdWlyZWQ6IGZhbHNlLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGFyZ3M6IHRlc3RfY19hcmdzLCBpbmNsdWRlX2RpcmVjdG9yaWVz OiBwb3N0Z3Jlc19pbmMpKQorICApCisKKyAgaWYgb2F1dGhfZmxvd19zdXBwb3J0ZWQKKyAgICBj ZGF0YS5zZXQoJ1VTRV9MSUJDVVJMJywgMSkKKyAgZWxpZiBsaWJjdXJsb3B0LmVuYWJsZWQoKQor ICAgIGVycm9yKCdjbGllbnQtc2lkZSBPQXV0aCBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxh dGZvcm0nKQorICBlbmRpZgorCiBlbHNlCiAgIGxpYmN1cmwgPSBub3RfZm91bmRfZGVwCiBlbmRp ZgpAQCAtMzI3MiwxNyArMzI4OSwxOCBAQCBsaWJwcV9kZXBzICs9IFsKIAogICBnc3NhcGksCiAg IGxkYXBfciwKLSAgIyBYWFggbGliY3VybCBtdXN0IGxpbmsgYWZ0ZXIgbGliZ3NzYXBpX2tyYjUg b24gRnJlZUJTRCB0byBhdm9pZCBzZWdmYXVsdHMKLSAgIyBkdXJpbmcgZ3NzX2FjcXVpcmVfY3Jl ZCgpLiBUaGlzIGlzIHBvc3NpYmx5IHJlbGF0ZWQgdG8gQ3VybCdzIEhlaW1kYWwKLSAgIyBkZXBl bmRlbmN5IG9uIHRoYXQgcGxhdGZvcm0/Ci0gIGxpYmN1cmwsCiAgIGxpYmludGwsCiAgIHNzbCwK IF0KIAorbGlicHFfb2F1dGhfZGVwcyArPSBbCisgIGxpYmN1cmwsCitdCisKIHN1YmRpcignc3Jj L2ludGVyZmFjZXMvbGlicHEnKQotIyBmZV91dGlscyBkZXBlbmRzIG9uIGxpYnBxCisjIGZlX3V0 aWxzIGFuZCBsaWJwcS1vYXV0aCBkZXBlbmRzIG9uIGxpYnBxCiBzdWJkaXIoJ3NyYy9mZV91dGls cycpCitzdWJkaXIoJ3NyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoJykKIAogIyBmb3IgZnJvbnRl bmQgYmluYXJpZXMKIGZyb250ZW5kX2NvZGUgPSBkZWNsYXJlX2RlcGVuZGVuY3koCmRpZmYgLS1n aXQgYS9zcmMvTWFrZWZpbGUuZ2xvYmFsLmluIGIvc3JjL01ha2VmaWxlLmdsb2JhbC5pbgppbmRl eCA2NzIyZmJkZjM2NS4uMDQ5NTJiNTMzZGUgMTAwNjQ0Ci0tLSBhL3NyYy9NYWtlZmlsZS5nbG9i YWwuaW4KKysrIGIvc3JjL01ha2VmaWxlLmdsb2JhbC5pbgpAQCAtMzQ3LDYgKzM0Nyw5IEBAIHBl cmxfZW1iZWRfbGRmbGFncwk9IEBwZXJsX2VtYmVkX2xkZmxhZ3NACiAKIEFXSwk9IEBBV0tACiBM Tl9TCT0gQExOX1NACitMSUJDVVJMX0NQUEZMQUdTID0gQExJQkNVUkxfQ1BQRkxBR1NACitMSUJD VVJMX0xERkxBR1MgPSBATElCQ1VSTF9MREZMQUdTQAorTElCQ1VSTF9MRExJQlMgPSBATElCQ1VS TF9MRExJQlNACiBNU0dGTVQgID0gQE1TR0ZNVEAKIE1TR0ZNVF9GTEFHUyA9IEBNU0dGTVRfRkxB R1NACiBNU0dNRVJHRSA9IEBNU0dNRVJHRUAKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL01h a2VmaWxlIGIvc3JjL2ludGVyZmFjZXMvTWFrZWZpbGUKaW5kZXggN2Q1NmIyOWQyOGYuLmU2ODIy Y2FhMjA2IDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9NYWtlZmlsZQorKysgYi9zcmMvaW50 ZXJmYWNlcy9NYWtlZmlsZQpAQCAtMTQsNyArMTQsMTkgQEAgaW5jbHVkZSAkKHRvcF9idWlsZGRp cikvc3JjL01ha2VmaWxlLmdsb2JhbAogCiBTVUJESVJTID0gbGlicHEgZWNwZwogCitpZmVxICgk KHdpdGhfbGliY3VybCksIHllcykKK1NVQkRJUlMgKz0gbGlicHEtb2F1dGgKK2Vsc2UKK0FMV0FZ U19TVUJESVJTICs9IGxpYnBxLW9hdXRoCitlbmRpZgorCiAkKHJlY3Vyc2UpCiskKHJlY3Vyc2Vf YWx3YXlzKQogCiBhbGwtZWNwZy1yZWN1cnNlOiBhbGwtbGlicHEtcmVjdXJzZQogaW5zdGFsbC1l Y3BnLXJlY3Vyc2U6IGluc3RhbGwtbGlicHEtcmVjdXJzZQorCitpZmVxICgkKHdpdGhfbGliY3Vy bCksIHllcykKK2FsbC1saWJwcS1vYXV0aC1yZWN1cnNlOiBhbGwtbGlicHEtcmVjdXJzZQoraW5z dGFsbC1saWJwcS1vYXV0aC1yZWN1cnNlOiBpbnN0YWxsLWxpYnBxLXJlY3Vyc2UKK2VuZGlmCmRp ZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9NYWtlZmlsZSBiL3NyYy9pbnRl cmZhY2VzL2xpYnBxLW9hdXRoL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi4zZTRiMzQxNDJlMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbnRlcmZhY2Vz L2xpYnBxLW9hdXRoL01ha2VmaWxlCkBAIC0wLDAgKzEsODMgQEAKKyMtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisjCisjIE1ha2VmaWxlIGZvciBsaWJwcS1vYXV0aAorIworIyBQb3J0aW9ucyBDb3B5cmlnaHQg KGMpIDE5OTYtMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyMgUG9y dGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENh bGlmb3JuaWEKKyMKKyMgc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvTWFrZWZpbGUKKyMKKyMt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisKK3N1YmRpciA9IHNyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoCit0 b3BfYnVpbGRkaXIgPSAuLi8uLi8uLgoraW5jbHVkZSAkKHRvcF9idWlsZGRpcikvc3JjL01ha2Vm aWxlLmdsb2JhbAorCitQR0ZJTEVERVNDID0gImxpYnBxLW9hdXRoIC0gZGV2aWNlIGF1dGhvcml6 YXRpb24gT0F1dGggc3VwcG9ydCIKKworIyBUaGlzIGlzIGFuIGludGVybmFsIG1vZHVsZTsgd2Ug ZG9uJ3Qgd2FudCBhbiBTT05BTUUgYW5kIHRoZXJlZm9yZSBkbyBub3Qgc2V0CisjIFNPX01BSk9S X1ZFUlNJT04uCitOQU1FID0gcHEtb2F1dGgtJChNQUpPUlZFUlNJT04pCisKKyMgRm9yY2UgdGhl IG5hbWUgImxpYnBxLW9hdXRoIiBmb3IgYm90aCB0aGUgc3RhdGljIGFuZCBzaGFyZWQgbGlicmFy aWVzLiBUaGUKKyMgc3RhdGljbGliIGRvZXNuJ3QgbmVlZCB2ZXJzaW9uIGluZm9ybWF0aW9uIGlu IGl0cyBuYW1lLgorb3ZlcnJpZGUgc2hsaWIgOj0gbGliJChOQU1FKSQoRExTVUZGSVgpCitvdmVy cmlkZSBzdGxpYiA6PSBsaWJwcS1vYXV0aC5hCisKK292ZXJyaWRlIENQUEZMQUdTIDo9IC1JJChs aWJwcV9zcmNkaXIpIC1JJCh0b3BfYnVpbGRkaXIpL3NyYy9wb3J0ICQoTElCQ1VSTF9DUFBGTEFH UykgJChDUFBGTEFHUykKKworT0JKUyA9IFwKKwkkKFdJTjMyUkVTKQorCitPQkpTX1NUQVRJQyA9 IG9hdXRoLWN1cmwubworCisjIFRoZSBzaGFyZWQgbGlicmFyeSBuZWVkcyBhZGRpdGlvbmFsIGds dWUgc3ltYm9scy4KK09CSlNfU0hMSUIgPSBcCisJb2F1dGgtY3VybF9zaGxpYi5vIFwKKwlvYXV0 aC11dGlscy5vIFwKKworb2F1dGgtdXRpbHMubzogb3ZlcnJpZGUgQ1BQRkxBR1MgKz0gLURVU0Vf RFlOQU1JQ19PQVVUSAorb2F1dGgtY3VybF9zaGxpYi5vOiBvdmVycmlkZSBDUFBGTEFHU19TSExJ QiArPSAtRFVTRV9EWU5BTUlDX09BVVRICisKKyMgQWRkIHNobGliLS9zdGxpYi1zcGVjaWZpYyBv YmplY3RzLgorJChzaGxpYik6IG92ZXJyaWRlIE9CSlMgKz0gJChPQkpTX1NITElCKQorJChzaGxp Yik6ICQoT0JKU19TSExJQikKKworJChzdGxpYik6IG92ZXJyaWRlIE9CSlMgKz0gJChPQkpTX1NU QVRJQykKKyQoc3RsaWIpOiAkKE9CSlNfU1RBVElDKQorCitTSExJQl9MSU5LX0lOVEVSTkFMID0g JChsaWJwcV9wZ3BvcnRfc2hsaWIpCitTSExJQl9MSU5LID0gJChMSUJDVVJMX0xERkxBR1MpICQo TElCQ1VSTF9MRExJQlMpCitTSExJQl9QUkVSRVFTID0gc3VibWFrZS1saWJwcQorU0hMSUJfRVhQ T1JUUyA9IGV4cG9ydHMudHh0CisKKyMgRGlzYWJsZSAtYnVuZGxlX2xvYWRlciBvbiBtYWNPUy4K K0JFX0RMTExJQlMgPQorCisjIEJ5IGRlZmF1bHQsIGEgbGlicmFyeSB3aXRob3V0IGFuIFNPTkFN RSBkb2Vzbid0IGdldCBhIHN0YXRpYyBsaWJyYXJ5LCBzbyB3ZQorIyBhZGQgaXQgdG8gdGhlIGJ1 aWxkIGV4cGxpY2l0bHkuCithbGw6IGFsbC1saWIgYWxsLXN0YXRpYy1saWIKKworIyBTaGFyZWQg bGlicmFyeSBzdHVmZgoraW5jbHVkZSAkKHRvcF9zcmNkaXIpL3NyYy9NYWtlZmlsZS5zaGxpYgor CisjIFVzZSBzcmMvY29tbW9uL01ha2VmaWxlJ3MgdHJpY2sgZm9yIHRyYWNraW5nIGRlcGVuZGVu Y2llcyBvZiBzaGxpYi1zcGVjaWZpYworIyBvYmplY3RzLgorJV9zaGxpYi5vOiAlLmMgJS5vCisJ JChDQykgJChDRkxBR1MpICQoQ0ZMQUdTX1NMKSAkKENQUEZMQUdTKSAkKENQUEZMQUdTX1NITElC KSAtYyAkPCAtbyAkQAorCisjIElnbm9yZSB0aGUgc3RhbmRhcmQgcnVsZXMgZm9yIFNPTkFNRS1s ZXNzIGluc3RhbGxhdGlvbjsgd2Ugd2FudCBib3RoIHRoZQorIyBzdGF0aWMgYW5kIHNoYXJlZCBs aWJyYXJpZXMgdG8gZ28gaW50byBsaWJkaXIuCitpbnN0YWxsOiBhbGwgaW5zdGFsbGRpcnMgJChz dGxpYikgJChzaGxpYikKKwkkKElOU1RBTExfU0hMSUIpICQoc2hsaWIpICckKERFU1RESVIpJChs aWJkaXIpLyQoc2hsaWIpJworCSQoSU5TVEFMTF9TVExJQikgJChzdGxpYikgJyQoREVTVERJUikk KGxpYmRpcikvJChzdGxpYiknCisKK2luc3RhbGxkaXJzOgorCSQoTUtESVJfUCkgJyQoREVTVERJ UikkKGxpYmRpciknCisKK3VuaW5zdGFsbDoKKwlybSAtZiAnJChERVNURElSKSQobGliZGlyKS8k KHN0bGliKScKKwlybSAtZiAnJChERVNURElSKSQobGliZGlyKS8kKHNobGliKScKKworY2xlYW4g ZGlzdGNsZWFuOiBjbGVhbi1saWIKKwlybSAtZiAkKE9CSlMpICQoT0JKU19TVEFUSUMpICQoT0JK U19TSExJQikKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL1JFQURNRSBi L3NyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL1JFQURNRQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uNDU3OWI0NWMwZjkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW50 ZXJmYWNlcy9saWJwcS1vYXV0aC9SRUFETUUKQEAgLTAsMCArMSw1OCBAQAorbGlicHEtb2F1dGgg aXMgYW4gb3B0aW9uYWwgbW9kdWxlIGltcGxlbWVudGluZyB0aGUgRGV2aWNlIEF1dGhvcml6YXRp b24gZmxvdyBmb3IKK09BdXRoIGNsaWVudHMgKFJGQyA4NjI4KS4gSXQgd2FzIG9yaWdpbmFsbHkg ZGV2ZWxvcGVkIGFzIHBhcnQgb2YgbGlicHEgY29yZSBhbmQKK2xhdGVyIHNwbGl0IG91dCBhcyBp dHMgb3duIHNoYXJlZCBsaWJyYXJ5IGluIG9yZGVyIHRvIGlzb2xhdGUgaXRzIGRlcGVuZGVuY3kg b24KK2xpYmN1cmwuIChFbmQgdXNlcnMgd2hvIGRvbid0IHdhbnQgdGhlIEN1cmwgZGVwZW5kZW5j eSBjYW4gc2ltcGx5IGNob29zZSBub3QgdG8KK2luc3RhbGwgdGhpcyBtb2R1bGUuKQorCitJZiBh IGNvbm5lY3Rpb24gc3RyaW5nIGFsbG93cyB0aGUgdXNlIG9mIE9BdXRoLCBhbmQgdGhlIHNlcnZl ciBhc2tzIGZvciBpdCwgYW5kCithIGxpYnBxIGNsaWVudCBoYXMgbm90IGluc3RhbGxlZCBpdHMg b3duIGN1c3RvbSBPQXV0aCBmbG93LCBsaWJwcSB3aWxsIGF0dGVtcHQKK3RvIGRlbGF5LWxvYWQg dGhpcyBtb2R1bGUgdXNpbmcgZGxvcGVuKCkgYW5kIHRoZSBmb2xsb3dpbmcgQUJJLiBGYWlsdXJl IHRvIGxvYWQKK3Jlc3VsdHMgaW4gYSBmYWlsZWQgY29ubmVjdGlvbi4KKworPSBMb2FkLVRpbWUg QUJJID0KKworVGhpcyBtb2R1bGUgQUJJIGlzIGFuIGludGVybmFsIGltcGxlbWVudGF0aW9uIGRl dGFpbCwgc28gaXQncyBzdWJqZWN0IHRvIGNoYW5nZQorYWNyb3NzIG1ham9yIHJlbGVhc2VzOyB0 aGUgbmFtZSBvZiB0aGUgbW9kdWxlIChsaWJwcS1vYXV0aC1NQUpPUikgcmVmbGVjdHMgdGhpcy4K K1RoZSBtb2R1bGUgZXhwb3J0cyB0aGUgZm9sbG93aW5nIHN5bWJvbHM6CisKKy0gUG9zdGdyZXNQ b2xsaW5nU3RhdHVzVHlwZSBwZ19mZV9ydW5fb2F1dGhfZmxvdyhQR2Nvbm4gKmNvbm4pOworLSB2 b2lkIHBnX2ZlX2NsZWFudXBfb2F1dGhfZmxvdyhQR2Nvbm4gKmNvbm4pOworCitwZ19mZV9ydW5f b2F1dGhfZmxvdyBhbmQgcGdfZmVfY2xlYW51cF9vYXV0aF9mbG93IGFyZSBpbXBsZW1lbnRhdGlv bnMgb2YKK2Nvbm4tPmFzeW5jX2F1dGggYW5kIGNvbm4tPmNsZWFudXBfYXN5bmNfYXV0aCwgcmVz cGVjdGl2ZWx5LgorCistIHZvaWQgbGlicHFfb2F1dGhfaW5pdChwZ3RocmVhZGxvY2tfdCB0aHJl YWRsb2NrLAorCQkJCQkJbGlicHFfZ2V0dGV4dF9mdW5jIGdldHRleHRfaW1wbCwKKwkJCQkJCWNv bm5fZXJyb3JNZXNzYWdlX2Z1bmMgZXJybXNnX2ltcGwsCisJCQkJCQljb25uX29hdXRoX2NsaWVu dF9pZF9mdW5jIGNsaWVudGlkX2ltcGwsCisJCQkJCQljb25uX29hdXRoX2NsaWVudF9zZWNyZXRf ZnVuYyBjbGllbnRzZWNyZXRfaW1wbCwKKwkJCQkJCWNvbm5fb2F1dGhfZGlzY292ZXJ5X3VyaV9m dW5jIGRpc2NvdmVyeXVyaV9pbXBsLAorCQkJCQkJY29ubl9vYXV0aF9pc3N1ZXJfaWRfZnVuYyBp c3N1ZXJpZF9pbXBsLAorCQkJCQkJY29ubl9vYXV0aF9zY29wZV9mdW5jIHNjb3BlX2ltcGwsCisJ CQkJCQljb25uX3Nhc2xfc3RhdGVfZnVuYyBzYXNsc3RhdGVfaW1wbCwKKwkJCQkJCXNldF9jb25u X2FsdHNvY2tfZnVuYyBzZXRhbHRzb2NrX2ltcGwsCisJCQkJCQlzZXRfY29ubl9vYXV0aF90b2tl bl9mdW5jIHNldHRva2VuX2ltcGwpOworCitBdCB0aGUgbW9tZW50LCBwZ19mZV9ydW5fb2F1dGhf ZmxvdygpIHJlbGllcyBvbiBsaWJwcSdzIHBnX2dfdGhyZWFkbG9jayBhbmQKK2xpYnBxX2dldHRl eHQoKSwgd2hpY2ggbXVzdCBiZSBpbmplY3RlZCBieSBsaWJwcSB1c2luZyB0aGlzIGluaXRpYWxp emF0aW9uCitmdW5jdGlvbiBiZWZvcmUgdGhlIGZsb3cgaXMgcnVuLgorCitJdCBhbHNvIHJlbGll cyBvbiBhY2Nlc3MgdG8gc2V2ZXJhbCBtZW1iZXJzIG9mIHRoZSBQR2Nvbm4gc3RydWN0LiBOb3Qg b25seSBjYW4KK3RoZXNlIGNoYW5nZSBwb3NpdGlvbnMgYWNyb3NzIG1pbm9yIHZlcnNpb25zLCBi dXQgdGhlIG9mZnNldHMgYXJlbid0IG5lY2Vzc2FyaWx5CitzdGFibGUgd2l0aGluIGEgc2luZ2xl IG1pbm9yIHJlbGVhc2UgKGNvbm4tPmVycm9yTWVzc2FnZSwgZm9yIGluc3RhbmNlLCBjYW4KK2No YW5nZSBvZmZzZXRzIGRlcGVuZGluZyBvbiBjb25maWd1cmUtdGltZSBvcHRpb25zKS4gVGhlcmVm b3JlIHRoZSBuZWNlc3NhcnkKK2FjY2Vzc29ycyAobmFtZWQgY29ubl8qKSBhbmQgbXV0YXRvcnMg KHNldF9jb25uXyopIGFyZSBpbmplY3RlZCBoZXJlLiBXaXRoIHRoaXMKK2FwcHJvYWNoLCB3ZSBj YW4gc2FmZWx5IHNlYXJjaCB0aGUgc3RhbmRhcmQgZGxvcGVuKCkgcGF0aHMgKGUuZy4gUlBBVEgs CitMRF9MSUJSQVJZX1BBVEgsIHRoZSBTTyBjYWNoZSkgZm9yIGFuIGltcGxlbWVudGF0aW9uIG1v ZHVsZSB0byB1c2UsIGV2ZW4gaWYgdGhhdAorbW9kdWxlIHdhc24ndCBjb21waWxlZCBhdCB0aGUg c2FtZSB0aW1lIGFzIGxpYnBxIC0tIHdoaWNoIGJlY29tZXMgZXNwZWNpYWxseQoraW1wb3J0YW50 IGR1cmluZyAibGl2ZSB1cGdyYWRlIiBzaXR1YXRpb25zIHdoZXJlIGEgcnVubmluZyBsaWJwcSBh cHBsaWNhdGlvbiBoYXMKK3RoZSBsaWJwcS1vYXV0aCBtb2R1bGUgdXBkYXRlZCBvdXQgZnJvbSB1 bmRlciBpdCBiZWZvcmUgaXQncyBmaXJzdCBsb2FkZWQgZnJvbQorZGlzay4KKworPSBTdGF0aWMg QnVpbGQgPQorCitUaGUgc3RhdGljIGxpYnJhcnkgbGlicHEuYSBkb2VzIG5vdCBwZXJmb3JtIGFu eSBkeW5hbWljIGxvYWRpbmcuIElmIHRoZSBidWlsdGluCitmbG93IGlzIGVuYWJsZWQsIHRoZSBh cHBsaWNhdGlvbiBpcyBleHBlY3RlZCB0byBsaW5rIGFnYWluc3QgbGlicHEtb2F1dGguYQorZGly ZWN0bHkgdG8gcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IHN5bWJvbHMuIChsaWJwcS5hIGFuZCBsaWJw cS1vYXV0aC5hIG11c3QgYmUKK3BhcnQgb2YgdGhlIHNhbWUgYnVpbGQuIFVubGlrZSB0aGUgZHlu YW1pYyBtb2R1bGUsIHRoZXJlIGFyZSBubyB0cmFuc2xhdGlvbgorc2hpbXMgcHJvdmlkZWQuKQpk aWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvZXhwb3J0cy50eHQgYi9zcmMv aW50ZXJmYWNlcy9saWJwcS1vYXV0aC9leHBvcnRzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uNjg5MWE4M2RiZjkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW50 ZXJmYWNlcy9saWJwcS1vYXV0aC9leHBvcnRzLnR4dApAQCAtMCwwICsxLDQgQEAKKyMgc3JjL2lu dGVyZmFjZXMvbGlicHEtb2F1dGgvZXhwb3J0cy50eHQKK2xpYnBxX29hdXRoX2luaXQgICAgICAg ICAgMQorcGdfZmVfcnVuX29hdXRoX2Zsb3cgICAgICAyCitwZ19mZV9jbGVhbnVwX29hdXRoX2Zs b3cgIDMKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL21lc29uLmJ1aWxk IGIvc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvbWVzb24uYnVpbGQKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjllNzMwMWE3ZjYzCi0tLSAvZGV2L251bGwKKysrIGIv c3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvbWVzb24uYnVpbGQKQEAgLTAsMCArMSw0NSBAQAor IyBDb3B5cmlnaHQgKGMpIDIwMjItMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQg R3JvdXAKKworaWYgbm90IG9hdXRoX2Zsb3dfc3VwcG9ydGVkCisgIHN1YmRpcl9kb25lKCkKK2Vu ZGlmCisKK2xpYnBxX29hdXRoX3NvdXJjZXMgPSBmaWxlcygKKyAgJ29hdXRoLWN1cmwuYycsCisp CisKKyMgVGhlIHNoYXJlZCBsaWJyYXJ5IG5lZWRzIGFkZGl0aW9uYWwgZ2x1ZSBzeW1ib2xzLgor bGlicHFfb2F1dGhfc29fc291cmNlcyA9IGZpbGVzKAorICAnb2F1dGgtdXRpbHMuYycsCispCits aWJwcV9vYXV0aF9zb19jX2FyZ3MgPSBbJy1EVVNFX0RZTkFNSUNfT0FVVEgnXQorCitleHBvcnRf ZmlsZSA9IGN1c3RvbV90YXJnZXQoJ2xpYnBxLW9hdXRoLmV4cG9ydHMnLAorICBrd2FyZ3M6IGdl bl9leHBvcnRfa3dhcmdzLAorKQorCisjIHBvcnQgbmVlZHMgdG8gYmUgaW4gaW5jbHVkZSBwYXRo IGR1ZSB0byBwdGhyZWFkLXdpbjMyLmgKK2xpYnBxX29hdXRoX2luYyA9IGluY2x1ZGVfZGlyZWN0 b3JpZXMoJy4nLCAnLi4vbGlicHEnLCAnLi4vLi4vcG9ydCcpCisKK2xpYnBxX29hdXRoX3N0ID0g c3RhdGljX2xpYnJhcnkoJ2xpYnBxLW9hdXRoJywKKyAgbGlicHFfb2F1dGhfc291cmNlcywKKyAg aW5jbHVkZV9kaXJlY3RvcmllczogW2xpYnBxX29hdXRoX2luYywgcG9zdGdyZXNfaW5jXSwKKyAg Y19wY2g6IHBjaF9wb3N0Z3Jlc19mZV9oLAorICBkZXBlbmRlbmNpZXM6IFtmcm9udGVuZF9zdGxp Yl9jb2RlLCBsaWJwcV9vYXV0aF9kZXBzXSwKKyAga3dhcmdzOiBkZWZhdWx0X2xpYl9hcmdzLAor KQorCisjIFRoaXMgaXMgYW4gaW50ZXJuYWwgbW9kdWxlOyB3ZSBkb24ndCB3YW50IGFuIFNPTkFN RSBhbmQgdGhlcmVmb3JlIGRvIG5vdCBzZXQKKyMgU09fTUFKT1JfVkVSU0lPTi4KK2xpYnBxX29h dXRoX25hbWUgPSAnbGlicHEtb2F1dGgtQDBAJy5mb3JtYXQocGdfdmVyc2lvbl9tYWpvcikKKwor bGlicHFfb2F1dGhfc28gPSBzaGFyZWRfbW9kdWxlKGxpYnBxX29hdXRoX25hbWUsCisgIGxpYnBx X29hdXRoX3NvdXJjZXMgKyBsaWJwcV9vYXV0aF9zb19zb3VyY2VzLAorICBpbmNsdWRlX2RpcmVj dG9yaWVzOiBbbGlicHFfb2F1dGhfaW5jLCBwb3N0Z3Jlc19pbmNdLAorICBjX2FyZ3M6IGxpYnBx X3NvX2NfYXJncywKKyAgY19wY2g6IHBjaF9wb3N0Z3Jlc19mZV9oLAorICBkZXBlbmRlbmNpZXM6 IFtmcm9udGVuZF9zaGxpYl9jb2RlLCBsaWJwcSwgbGlicHFfb2F1dGhfZGVwc10sCisgIGxpbmtf ZGVwZW5kczogZXhwb3J0X2ZpbGUsCisgIGxpbmtfYXJnczogZXhwb3J0X2ZtdC5mb3JtYXQoZXhw b3J0X2ZpbGUuZnVsbF9wYXRoKCkpLAorICBrd2FyZ3M6IGRlZmF1bHRfbGliX2FyZ3MsCispCmRp ZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLW9hdXRoLWN1cmwuYyBiL3Ny Yy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL29hdXRoLWN1cmwuYwpzaW1pbGFyaXR5IGluZGV4IDk0 JQpyZW5hbWUgZnJvbSBzcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLW9hdXRoLWN1cmwuYwpy ZW5hbWUgdG8gc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvb2F1dGgtY3VybC5jCmluZGV4IGMx OTVlMDBjZDI4Li4zYWNkY2M1MmRlOCAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEv ZmUtYXV0aC1vYXV0aC1jdXJsLmMKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvb2F1 dGgtY3VybC5jCkBAIC0xLDYgKzEsNiBAQAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgotICogZmUt YXV0aC1vYXV0aC1jdXJsLmMKKyAqIG9hdXRoLWN1cmwuYwogICoJICAgVGhlIGxpYmN1cmwgaW1w bGVtZW50YXRpb24gb2YgT0F1dGgvT0lEQyBhdXRoZW50aWNhdGlvbiwgdXNpbmcgdGhlCiAgKgkg ICBPQXV0aCBEZXZpY2UgQXV0aG9yaXphdGlvbiBHcmFudCAoUkZDIDg2MjgpLgogICoKQEAgLTgs NyArOCw3IEBACiAgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhl IFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQogICoKICAqIElERU5USUZJQ0FUSU9OCi0gKgkgIHNy Yy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGgtY3VybC5jCisgKgkgIHNyYy9pbnRlcmZh Y2VzL2xpYnBxLW9hdXRoL29hdXRoLWN1cmwuYwogICoKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICov CkBAIC0xNywyMCArMTcsNTYgQEAKIAogI2luY2x1ZGUgPGN1cmwvY3VybC5oPgogI2luY2x1ZGUg PG1hdGguaD4KLSNpZmRlZiBIQVZFX1NZU19FUE9MTF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisK KyNpZiBkZWZpbmVkKEhBVkVfU1lTX0VQT0xMX0gpCiAjaW5jbHVkZSA8c3lzL2Vwb2xsLmg+CiAj aW5jbHVkZSA8c3lzL3RpbWVyZmQuaD4KLSNlbmRpZgotI2lmZGVmIEhBVkVfU1lTX0VWRU5UX0gK KyNlbGlmIGRlZmluZWQoSEFWRV9TWVNfRVZFTlRfSCkKICNpbmNsdWRlIDxzeXMvZXZlbnQuaD4K KyNlbHNlCisjZXJyb3IgbGlicHEtb2F1dGggaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRm b3JtCiAjZW5kaWYKLSNpbmNsdWRlIDx1bmlzdGQuaD4KIAogI2luY2x1ZGUgImNvbW1vbi9qc29u YXBpLmgiCi0jaW5jbHVkZSAiZmUtYXV0aC5oIgogI2luY2x1ZGUgImZlLWF1dGgtb2F1dGguaCIK LSNpbmNsdWRlICJsaWJwcS1pbnQuaCIKICNpbmNsdWRlICJtYi9wZ193Y2hhci5oIgorI2luY2x1 ZGUgIm9hdXRoLWN1cmwuaCIKKworI2lmZGVmIFVTRV9EWU5BTUlDX09BVVRICisKKy8qCisgKiBU aGUgbW9kdWxlIGJ1aWxkIGlzIGRlY291cGxlZCBmcm9tIGxpYnBxLWludC5oLCB0byB0cnkgdG8g YXZvaWQgaW5hZHZlcnRlbnQKKyAqIEFCSSBicmVha3MgZHVyaW5nIG1pbm9yIHZlcnNpb24gYnVt cHMuIFJlcGxhY2VtZW50cyBmb3IgdGhlIG1pc3NpbmcgaW50ZXJuYWxzCisgKiBhcmUgcHJvdmlk ZWQgYnkgb2F1dGgtdXRpbHMuCisgKi8KKyNpbmNsdWRlICJvYXV0aC11dGlscy5oIgorCisjZWxz ZQkJCQkJCQkvKiAhVVNFX0RZTkFNSUNfT0FVVEggKi8KKworLyoKKyAqIFN0YXRpYyBidWlsZHMg bWF5IHJlbHkgb24gUEdjb25uIG9mZnNldHMgZGlyZWN0bHkuIEtlZXAgdGhlc2UgYWxpZ25lZCB3 aXRoCisgKiB0aGUgYmFuayBvZiBjYWxsYmFja3MgaW4gb2F1dGgtdXRpbHMuaC4KKyAqLworI2lu Y2x1ZGUgImxpYnBxLWludC5oIgorCisjZGVmaW5lIGNvbm5fZXJyb3JNZXNzYWdlKENPTk4pICgm Q09OTi0+ZXJyb3JNZXNzYWdlKQorI2RlZmluZSBjb25uX29hdXRoX2NsaWVudF9pZChDT05OKSAo Q09OTi0+b2F1dGhfY2xpZW50X2lkKQorI2RlZmluZSBjb25uX29hdXRoX2NsaWVudF9zZWNyZXQo Q09OTikgKENPTk4tPm9hdXRoX2NsaWVudF9zZWNyZXQpCisjZGVmaW5lIGNvbm5fb2F1dGhfZGlz Y292ZXJ5X3VyaShDT05OKSAoQ09OTi0+b2F1dGhfZGlzY292ZXJ5X3VyaSkKKyNkZWZpbmUgY29u bl9vYXV0aF9pc3N1ZXJfaWQoQ09OTikgKENPTk4tPm9hdXRoX2lzc3Vlcl9pZCkKKyNkZWZpbmUg Y29ubl9vYXV0aF9zY29wZShDT05OKSAoQ09OTi0+b2F1dGhfc2NvcGUpCisjZGVmaW5lIGNvbm5f c2FzbF9zdGF0ZShDT05OKSAoQ09OTi0+c2FzbF9zdGF0ZSkKKworI2RlZmluZSBzZXRfY29ubl9h bHRzb2NrKENPTk4sIFZBTCkgZG8geyBDT05OLT5hbHRzb2NrID0gVkFMOyB9IHdoaWxlICgwKQor I2RlZmluZSBzZXRfY29ubl9vYXV0aF90b2tlbihDT05OLCBWQUwpIGRvIHsgQ09OTi0+b2F1dGhf dG9rZW4gPSBWQUw7IH0gd2hpbGUgKDApCisKKyNlbmRpZgkJCQkJCQkvKiAhVVNFX0RZTkFNSUNf T0FVVEggKi8KKworLyogT25lIGZpbmFsIGd1YXJkcmFpbCBhZ2FpbnN0IGFjY2lkZW50YWwgaW5j bHVzaW9uLi4uICovCisjaWYgZGVmaW5lZChVU0VfRFlOQU1JQ19PQVVUSCkgJiYgZGVmaW5lZChM SUJQUV9JTlRfSCkKKyNlcnJvciBkbyBub3QgcmVseSBvbiBsaWJwcS1pbnQuaCBpbiBsaWJwcS1v YXV0aC5zbworI2VuZGlmCiAKIC8qCiAgKiBJdCdzIGdlbmVyYWxseSBwcnVkZW50IHRvIHNldCBh IG1heGltdW0gcmVzcG9uc2Ugc2l6ZSB0byBidWZmZXIgaW4gbWVtb3J5LApAQCAtMzAzLDcgKzMz OSw3IEBAIGZyZWVfYXN5bmNfY3R4KFBHY29ubiAqY29ubiwgc3RydWN0IGFzeW5jX2N0eCAqYWN0 eCkKIHZvaWQKIHBnX2ZlX2NsZWFudXBfb2F1dGhfZmxvdyhQR2Nvbm4gKmNvbm4pCiB7Ci0JZmVf b2F1dGhfc3RhdGUgKnN0YXRlID0gY29ubi0+c2FzbF9zdGF0ZTsKKwlmZV9vYXV0aF9zdGF0ZSAq c3RhdGUgPSBjb25uX3Nhc2xfc3RhdGUoY29ubik7CiAKIAlpZiAoc3RhdGUtPmFzeW5jX2N0eCkK IAl7CkBAIC0zMTEsNyArMzQ3LDcgQEAgcGdfZmVfY2xlYW51cF9vYXV0aF9mbG93KFBHY29ubiAq Y29ubikKIAkJc3RhdGUtPmFzeW5jX2N0eCA9IE5VTEw7CiAJfQogCi0JY29ubi0+YWx0c29jayA9 IFBHSU5WQUxJRF9TT0NLRVQ7CisJc2V0X2Nvbm5fYWx0c29jayhjb25uLCBQR0lOVkFMSURfU09D S0VUKTsKIH0KIAogLyoKQEAgLTExMTAsNyArMTE0Niw3IEBAIHBhcnNlX2FjY2Vzc190b2tlbihz dHJ1Y3QgYXN5bmNfY3R4ICphY3R4LCBzdHJ1Y3QgdG9rZW4gKnRvaykKIHN0YXRpYyBib29sCiBz ZXR1cF9tdWx0aXBsZXhlcihzdHJ1Y3QgYXN5bmNfY3R4ICphY3R4KQogewotI2lmZGVmIEhBVkVf U1lTX0VQT0xMX0gKKyNpZiBkZWZpbmVkKEhBVkVfU1lTX0VQT0xMX0gpCiAJc3RydWN0IGVwb2xs X2V2ZW50IGV2ID0gey5ldmVudHMgPSBFUE9MTElOfTsKIAogCWFjdHgtPm11eCA9IGVwb2xsX2Ny ZWF0ZTEoRVBPTExfQ0xPRVhFQyk7CkBAIC0xMTM0LDggKzExNzAsNyBAQCBzZXR1cF9tdWx0aXBs ZXhlcihzdHJ1Y3QgYXN5bmNfY3R4ICphY3R4KQogCX0KIAogCXJldHVybiB0cnVlOwotI2VuZGlm Ci0jaWZkZWYgSEFWRV9TWVNfRVZFTlRfSAorI2VsaWYgZGVmaW5lZChIQVZFX1NZU19FVkVOVF9I KQogCWFjdHgtPm11eCA9IGtxdWV1ZSgpOwogCWlmIChhY3R4LT5tdXggPCAwKQogCXsKQEAgLTEx NTgsMTAgKzExOTMsOSBAQCBzZXR1cF9tdWx0aXBsZXhlcihzdHJ1Y3QgYXN5bmNfY3R4ICphY3R4 KQogCX0KIAogCXJldHVybiB0cnVlOworI2Vsc2UKKyNlcnJvciBzZXR1cF9tdWx0aXBsZXhlciBp cyBub3QgaW1wbGVtZW50ZWQgb24gdGhpcyBwbGF0Zm9ybQogI2VuZGlmCi0KLQlhY3R4X2Vycm9y KGFjdHgsICJsaWJwcSBkb2VzIG5vdCBzdXBwb3J0IHRoZSBEZXZpY2UgQXV0aG9yaXphdGlvbiBm bG93IG9uIHRoaXMgcGxhdGZvcm0iKTsKLQlyZXR1cm4gZmFsc2U7CiB9CiAKIC8qCkBAIC0xMTc0 LDcgKzEyMDgsNyBAQCByZWdpc3Rlcl9zb2NrZXQoQ1VSTCAqY3VybCwgY3VybF9zb2NrZXRfdCBz b2NrZXQsIGludCB3aGF0LCB2b2lkICpjdHgsCiB7CiAJc3RydWN0IGFzeW5jX2N0eCAqYWN0eCA9 IGN0eDsKIAotI2lmZGVmIEhBVkVfU1lTX0VQT0xMX0gKKyNpZiBkZWZpbmVkKEhBVkVfU1lTX0VQ T0xMX0gpCiAJc3RydWN0IGVwb2xsX2V2ZW50IGV2ID0gezB9OwogCWludAkJCXJlczsKIAlpbnQJ CQlvcCA9IEVQT0xMX0NUTF9BREQ7CkBAIC0xMjMwLDggKzEyNjQsNyBAQCByZWdpc3Rlcl9zb2Nr ZXQoQ1VSTCAqY3VybCwgY3VybF9zb2NrZXRfdCBzb2NrZXQsIGludCB3aGF0LCB2b2lkICpjdHgs CiAJfQogCiAJcmV0dXJuIDA7Ci0jZW5kaWYKLSNpZmRlZiBIQVZFX1NZU19FVkVOVF9ICisjZWxp ZiBkZWZpbmVkKEhBVkVfU1lTX0VWRU5UX0gpCiAJc3RydWN0IGtldmVudCBldlsyXSA9IHswfTsK IAlzdHJ1Y3Qga2V2ZW50IGV2X291dFsyXTsKIAlzdHJ1Y3QgdGltZXNwZWMgdGltZW91dCA9IHsw fTsKQEAgLTEzMTIsMTAgKzEzNDUsOSBAQCByZWdpc3Rlcl9zb2NrZXQoQ1VSTCAqY3VybCwgY3Vy bF9zb2NrZXRfdCBzb2NrZXQsIGludCB3aGF0LCB2b2lkICpjdHgsCiAJfQogCiAJcmV0dXJuIDA7 CisjZWxzZQorI2Vycm9yIHJlZ2lzdGVyX3NvY2tldCBpcyBub3QgaW1wbGVtZW50ZWQgb24gdGhp cyBwbGF0Zm9ybQogI2VuZGlmCi0KLQlhY3R4X2Vycm9yKGFjdHgsICJsaWJwcSBkb2VzIG5vdCBz dXBwb3J0IG11bHRpcGxleGVyIHNvY2tldHMgb24gdGhpcyBwbGF0Zm9ybSIpOwotCXJldHVybiAt MTsKIH0KIAogLyoKQEAgLTEzMzQsNyArMTM2Niw3IEBAIHJlZ2lzdGVyX3NvY2tldChDVVJMICpj dXJsLCBjdXJsX3NvY2tldF90IHNvY2tldCwgaW50IHdoYXQsIHZvaWQgKmN0eCwKIHN0YXRpYyBi b29sCiBzZXRfdGltZXIoc3RydWN0IGFzeW5jX2N0eCAqYWN0eCwgbG9uZyB0aW1lb3V0KQogewot I2lmIEhBVkVfU1lTX0VQT0xMX0gKKyNpZiBkZWZpbmVkKEhBVkVfU1lTX0VQT0xMX0gpCiAJc3Ry dWN0IGl0aW1lcnNwZWMgc3BlYyA9IHswfTsKIAogCWlmICh0aW1lb3V0IDwgMCkKQEAgLTEzNjMs OCArMTM5NSw3IEBAIHNldF90aW1lcihzdHJ1Y3QgYXN5bmNfY3R4ICphY3R4LCBsb25nIHRpbWVv dXQpCiAJfQogCiAJcmV0dXJuIHRydWU7Ci0jZW5kaWYKLSNpZmRlZiBIQVZFX1NZU19FVkVOVF9I CisjZWxpZiBkZWZpbmVkKEhBVkVfU1lTX0VWRU5UX0gpCiAJc3RydWN0IGtldmVudCBldjsKIAog I2lmZGVmIF9fTmV0QlNEX18KQEAgLTE0MTksMTAgKzE0NTAsOSBAQCBzZXRfdGltZXIoc3RydWN0 IGFzeW5jX2N0eCAqYWN0eCwgbG9uZyB0aW1lb3V0KQogCX0KIAogCXJldHVybiB0cnVlOworI2Vs c2UKKyNlcnJvciBzZXRfdGltZXIgaXMgbm90IGltcGxlbWVudGVkIG9uIHRoaXMgcGxhdGZvcm0K ICNlbmRpZgotCi0JYWN0eF9lcnJvcihhY3R4LCAibGlicHEgZG9lcyBub3Qgc3VwcG9ydCB0aW1l cnMgb24gdGhpcyBwbGF0Zm9ybSIpOwotCXJldHVybiBmYWxzZTsKIH0KIAogLyoKQEAgLTE0MzMs NyArMTQ2Myw3IEBAIHNldF90aW1lcihzdHJ1Y3QgYXN5bmNfY3R4ICphY3R4LCBsb25nIHRpbWVv dXQpCiBzdGF0aWMgaW50CiB0aW1lcl9leHBpcmVkKHN0cnVjdCBhc3luY19jdHggKmFjdHgpCiB7 Ci0jaWYgSEFWRV9TWVNfRVBPTExfSAorI2lmIGRlZmluZWQoSEFWRV9TWVNfRVBPTExfSCkKIAlz dHJ1Y3QgaXRpbWVyc3BlYyBzcGVjID0gezB9OwogCiAJaWYgKHRpbWVyZmRfZ2V0dGltZShhY3R4 LT50aW1lcmZkLCAmc3BlYykgPCAwKQpAQCAtMTQ1Myw4ICsxNDgzLDcgQEAgdGltZXJfZXhwaXJl ZChzdHJ1Y3QgYXN5bmNfY3R4ICphY3R4KQogCS8qIElmIHRoZSByZW1haW5pbmcgdGltZSB0byBl eHBpcmF0aW9uIGlzIHplcm8sIHdlJ3JlIGRvbmUuICovCiAJcmV0dXJuIChzcGVjLml0X3ZhbHVl LnR2X3NlYyA9PSAwCiAJCQkmJiBzcGVjLml0X3ZhbHVlLnR2X25zZWMgPT0gMCk7Ci0jZW5kaWYK LSNpZmRlZiBIQVZFX1NZU19FVkVOVF9ICisjZWxpZiBkZWZpbmVkKEhBVkVfU1lTX0VWRU5UX0gp CiAJaW50CQkJcmVzOwogCiAJLyogSXMgdGhlIHRpbWVyIHF1ZXVlIHJlYWR5PyAqLwpAQCAtMTQ2 NiwxMCArMTQ5NSw5IEBAIHRpbWVyX2V4cGlyZWQoc3RydWN0IGFzeW5jX2N0eCAqYWN0eCkKIAl9 CiAKIAlyZXR1cm4gKHJlcyA+IDApOworI2Vsc2UKKyNlcnJvciB0aW1lcl9leHBpcmVkIGlzIG5v dCBpbXBsZW1lbnRlZCBvbiB0aGlzIHBsYXRmb3JtCiAjZW5kaWYKLQotCWFjdHhfZXJyb3IoYWN0 eCwgImxpYnBxIGRvZXMgbm90IHN1cHBvcnQgdGltZXJzIG9uIHRoaXMgcGxhdGZvcm0iKTsKLQly ZXR1cm4gLTE7CiB9CiAKIC8qCkBAIC0yMDcwLDggKzIwOTgsOSBAQCBzdGF0aWMgYm9vbAogY2hl Y2tfaXNzdWVyKHN0cnVjdCBhc3luY19jdHggKmFjdHgsIFBHY29ubiAqY29ubikKIHsKIAljb25z dCBzdHJ1Y3QgcHJvdmlkZXIgKnByb3ZpZGVyID0gJmFjdHgtPnByb3ZpZGVyOworCWNvbnN0IGNo YXIgKm9hdXRoX2lzc3Vlcl9pZCA9IGNvbm5fb2F1dGhfaXNzdWVyX2lkKGNvbm4pOwogCi0JQXNz ZXJ0KGNvbm4tPm9hdXRoX2lzc3Vlcl9pZCk7CS8qIGVuc3VyZWQgYnkgc2V0dXBfb2F1dGhfcGFy YW1ldGVycygpICovCisJQXNzZXJ0KG9hdXRoX2lzc3Vlcl9pZCk7CS8qIGVuc3VyZWQgYnkgc2V0 dXBfb2F1dGhfcGFyYW1ldGVycygpICovCiAJQXNzZXJ0KHByb3ZpZGVyLT5pc3N1ZXIpOwkvKiBl bnN1cmVkIGJ5IHBhcnNlX3Byb3ZpZGVyKCkgKi8KIAogCS8qLS0tCkBAIC0yMDkxLDExICsyMTIw LDExIEBAIGNoZWNrX2lzc3VlcihzdHJ1Y3QgYXN5bmNfY3R4ICphY3R4LCBQR2Nvbm4gKmNvbm4p CiAJICogICAgc2VudCB0by4gVGhpcyBjb21wYXJpc29uIE1VU1QgdXNlIHNpbXBsZSBzdHJpbmcg Y29tcGFyaXNvbiBhcyBkZWZpbmVkCiAJICogICAgaW4gU2VjdGlvbiA2LjIuMSBvZiBbUkZDMzk4 Nl0uCiAJICovCi0JaWYgKHN0cmNtcChjb25uLT5vYXV0aF9pc3N1ZXJfaWQsIHByb3ZpZGVyLT5p c3N1ZXIpICE9IDApCisJaWYgKHN0cmNtcChvYXV0aF9pc3N1ZXJfaWQsIHByb3ZpZGVyLT5pc3N1 ZXIpICE9IDApCiAJewogCQlhY3R4X2Vycm9yKGFjdHgsCiAJCQkJICAgInRoZSBpc3N1ZXIgaWRl bnRpZmllciAoJXMpIGRvZXMgbm90IG1hdGNoIG9hdXRoX2lzc3VlciAoJXMpIiwKLQkJCQkgICBw cm92aWRlci0+aXNzdWVyLCBjb25uLT5vYXV0aF9pc3N1ZXJfaWQpOworCQkJCSAgIHByb3ZpZGVy LT5pc3N1ZXIsIG9hdXRoX2lzc3Vlcl9pZCk7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAKQEAgLTIx NzIsMTEgKzIyMDEsMTQgQEAgY2hlY2tfZm9yX2RldmljZV9mbG93KHN0cnVjdCBhc3luY19jdHgg KmFjdHgpCiBzdGF0aWMgYm9vbAogYWRkX2NsaWVudF9pZGVudGlmaWNhdGlvbihzdHJ1Y3QgYXN5 bmNfY3R4ICphY3R4LCBQUUV4cEJ1ZmZlciByZXFib2R5LCBQR2Nvbm4gKmNvbm4pCiB7CisJY29u c3QgY2hhciAqb2F1dGhfY2xpZW50X2lkID0gY29ubl9vYXV0aF9jbGllbnRfaWQoY29ubik7CisJ Y29uc3QgY2hhciAqb2F1dGhfY2xpZW50X3NlY3JldCA9IGNvbm5fb2F1dGhfY2xpZW50X3NlY3Jl dChjb25uKTsKKwogCWJvb2wJCXN1Y2Nlc3MgPSBmYWxzZTsKIAljaGFyCSAgICp1c2VybmFtZSA9 IE5VTEw7CiAJY2hhcgkgICAqcGFzc3dvcmQgPSBOVUxMOwogCi0JaWYgKGNvbm4tPm9hdXRoX2Ns aWVudF9zZWNyZXQpCS8qIFplcm8tbGVuZ3RoIHNlY3JldHMgYXJlIHBlcm1pdHRlZCEgKi8KKwlp ZiAob2F1dGhfY2xpZW50X3NlY3JldCkJLyogWmVyby1sZW5ndGggc2VjcmV0cyBhcmUgcGVybWl0 dGVkISAqLwogCXsKIAkJLyotLS0tCiAJCSAqIFVzZSBIVFRQIEJhc2ljIGF1dGggdG8gc2VuZCB0 aGUgY2xpZW50X2lkIGFuZCBzZWNyZXQuIFBlciBSRkMgNjc0OSwKQEAgLTIyMDQsOCArMjIzNiw4 IEBAIGFkZF9jbGllbnRfaWRlbnRpZmljYXRpb24oc3RydWN0IGFzeW5jX2N0eCAqYWN0eCwgUFFF eHBCdWZmZXIgcmVxYm9keSwgUEdjb25uICpjCiAJCSAqIHdvdWxkIGl0IGJlIHJlZHVuZGFudCwg YnV0IHNvbWUgcHJvdmlkZXJzIGluIHRoZSB3aWxkIChlLmcuIE9rdGEpCiAJCSAqIHJlZnVzZSB0 byBhY2NlcHQgaXQuCiAJCSAqLwotCQl1c2VybmFtZSA9IHVybGVuY29kZShjb25uLT5vYXV0aF9j bGllbnRfaWQpOwotCQlwYXNzd29yZCA9IHVybGVuY29kZShjb25uLT5vYXV0aF9jbGllbnRfc2Vj cmV0KTsKKwkJdXNlcm5hbWUgPSB1cmxlbmNvZGUob2F1dGhfY2xpZW50X2lkKTsKKwkJcGFzc3dv cmQgPSB1cmxlbmNvZGUob2F1dGhfY2xpZW50X3NlY3JldCk7CiAKIAkJaWYgKCF1c2VybmFtZSB8 fCAhcGFzc3dvcmQpCiAJCXsKQEAgLTIyMjUsNyArMjI1Nyw3IEBAIGFkZF9jbGllbnRfaWRlbnRp ZmljYXRpb24oc3RydWN0IGFzeW5jX2N0eCAqYWN0eCwgUFFFeHBCdWZmZXIgcmVxYm9keSwgUEdj b25uICpjCiAJCSAqIElmIHdlJ3JlIG5vdCBvdGhlcndpc2UgYXV0aGVudGljYXRpbmcsIGNsaWVu dF9pZCBpcyBSRVFVSVJFRCBpbiB0aGUKIAkJICogcmVxdWVzdCBib2R5LgogCQkgKi8KLQkJYnVp bGRfdXJsZW5jb2RlZChyZXFib2R5LCAiY2xpZW50X2lkIiwgY29ubi0+b2F1dGhfY2xpZW50X2lk KTsKKwkJYnVpbGRfdXJsZW5jb2RlZChyZXFib2R5LCAiY2xpZW50X2lkIiwgb2F1dGhfY2xpZW50 X2lkKTsKIAogCQlDSEVDS19TRVRPUFQoYWN0eCwgQ1VSTE9QVF9IVFRQQVVUSCwgQ1VSTEFVVEhf Tk9ORSwgZ290byBjbGVhbnVwKTsKIAkJYWN0eC0+dXNlZF9iYXNpY19hdXRoID0gZmFsc2U7CkBA IC0yMjUzLDE2ICsyMjg1LDE3IEBAIGNsZWFudXA6CiBzdGF0aWMgYm9vbAogc3RhcnRfZGV2aWNl X2F1dGh6KHN0cnVjdCBhc3luY19jdHggKmFjdHgsIFBHY29ubiAqY29ubikKIHsKKwljb25zdCBj aGFyICpvYXV0aF9zY29wZSA9IGNvbm5fb2F1dGhfc2NvcGUoY29ubik7CiAJY29uc3QgY2hhciAq ZGV2aWNlX2F1dGh6X3VyaSA9IGFjdHgtPnByb3ZpZGVyLmRldmljZV9hdXRob3JpemF0aW9uX2Vu ZHBvaW50OwogCVBRRXhwQnVmZmVyIHdvcmtfYnVmZmVyID0gJmFjdHgtPndvcmtfZGF0YTsKIAot CUFzc2VydChjb25uLT5vYXV0aF9jbGllbnRfaWQpOwkvKiBlbnN1cmVkIGJ5IHNldHVwX29hdXRo X3BhcmFtZXRlcnMoKSAqLworCUFzc2VydChjb25uX29hdXRoX2NsaWVudF9pZChjb25uKSk7IC8q IGVuc3VyZWQgYnkgc2V0dXBfb2F1dGhfcGFyYW1ldGVycygpICovCiAJQXNzZXJ0KGRldmljZV9h dXRoel91cmkpOwkvKiBlbnN1cmVkIGJ5IGNoZWNrX2Zvcl9kZXZpY2VfZmxvdygpICovCiAKIAkv KiBDb25zdHJ1Y3Qgb3VyIHJlcXVlc3QgYm9keS4gKi8KIAlyZXNldFBRRXhwQnVmZmVyKHdvcmtf YnVmZmVyKTsKLQlpZiAoY29ubi0+b2F1dGhfc2NvcGUgJiYgY29ubi0+b2F1dGhfc2NvcGVbMF0p Ci0JCWJ1aWxkX3VybGVuY29kZWQod29ya19idWZmZXIsICJzY29wZSIsIGNvbm4tPm9hdXRoX3Nj b3BlKTsKKwlpZiAob2F1dGhfc2NvcGUgJiYgb2F1dGhfc2NvcGVbMF0pCisJCWJ1aWxkX3VybGVu Y29kZWQod29ya19idWZmZXIsICJzY29wZSIsIG9hdXRoX3Njb3BlKTsKIAogCWlmICghYWRkX2Ns aWVudF9pZGVudGlmaWNhdGlvbihhY3R4LCB3b3JrX2J1ZmZlciwgY29ubikpCiAJCXJldHVybiBm YWxzZTsKQEAgLTIzNDQsNyArMjM3Nyw3IEBAIHN0YXJ0X3Rva2VuX3JlcXVlc3Qoc3RydWN0IGFz eW5jX2N0eCAqYWN0eCwgUEdjb25uICpjb25uKQogCWNvbnN0IGNoYXIgKmRldmljZV9jb2RlID0g YWN0eC0+YXV0aHouZGV2aWNlX2NvZGU7CiAJUFFFeHBCdWZmZXIgd29ya19idWZmZXIgPSAmYWN0 eC0+d29ya19kYXRhOwogCi0JQXNzZXJ0KGNvbm4tPm9hdXRoX2NsaWVudF9pZCk7CS8qIGVuc3Vy ZWQgYnkgc2V0dXBfb2F1dGhfcGFyYW1ldGVycygpICovCisJQXNzZXJ0KGNvbm5fb2F1dGhfY2xp ZW50X2lkKGNvbm4pKTsgLyogZW5zdXJlZCBieSBzZXR1cF9vYXV0aF9wYXJhbWV0ZXJzKCkgKi8K IAlBc3NlcnQodG9rZW5fdXJpKTsJCQkvKiBlbnN1cmVkIGJ5IHBhcnNlX3Byb3ZpZGVyKCkgKi8K IAlBc3NlcnQoZGV2aWNlX2NvZGUpOwkJLyogZW5zdXJlZCBieSBwYXJzZV9kZXZpY2VfYXV0aHoo KSAqLwogCkBAIC0yNDg3LDggKzI1MjAsOSBAQCBwcm9tcHRfdXNlcihzdHJ1Y3QgYXN5bmNfY3R4 ICphY3R4LCBQR2Nvbm4gKmNvbm4pCiAJCS52ZXJpZmljYXRpb25fdXJpX2NvbXBsZXRlID0gYWN0 eC0+YXV0aHoudmVyaWZpY2F0aW9uX3VyaV9jb21wbGV0ZSwKIAkJLmV4cGlyZXNfaW4gPSBhY3R4 LT5hdXRoei5leHBpcmVzX2luLAogCX07CisJUFFhdXRoRGF0YUhvb2tfdHlwZSBob29rID0gUFFn ZXRBdXRoRGF0YUhvb2soKTsKIAotCXJlcyA9IFBRYXV0aERhdGFIb29rKFBRQVVUSERBVEFfUFJP TVBUX09BVVRIX0RFVklDRSwgY29ubiwgJnByb21wdCk7CisJcmVzID0gaG9vayhQUUFVVEhEQVRB X1BST01QVF9PQVVUSF9ERVZJQ0UsIGNvbm4sICZwcm9tcHQpOwogCiAJaWYgKCFyZXMpCiAJewpA QCAtMjYzMyw4ICsyNjY3LDEwIEBAIGRvbmU6CiBzdGF0aWMgUG9zdGdyZXNQb2xsaW5nU3RhdHVz VHlwZQogcGdfZmVfcnVuX29hdXRoX2Zsb3dfaW1wbChQR2Nvbm4gKmNvbm4pCiB7Ci0JZmVfb2F1 dGhfc3RhdGUgKnN0YXRlID0gY29ubi0+c2FzbF9zdGF0ZTsKKwlmZV9vYXV0aF9zdGF0ZSAqc3Rh dGUgPSBjb25uX3Nhc2xfc3RhdGUoY29ubik7CiAJc3RydWN0IGFzeW5jX2N0eCAqYWN0eDsKKwlj aGFyCSAgICpvYXV0aF90b2tlbiA9IE5VTEw7CisJUFFFeHBCdWZmZXIgZXJyYnVmOwogCiAJaWYg KCFpbml0aWFsaXplX2N1cmwoY29ubikpCiAJCXJldHVybiBQR1JFU19QT0xMSU5HX0ZBSUxFRDsK QEAgLTI2NzYsNyArMjcxMiw3IEBAIHBnX2ZlX3J1bl9vYXV0aF9mbG93X2ltcGwoUEdjb25uICpj b25uKQogCWRvCiAJewogCQkvKiBCeSBkZWZhdWx0LCB0aGUgbXVsdGlwbGV4ZXIgaXMgdGhlIGFs dHNvY2suIFJlYXNzaWduIGFzIGRlc2lyZWQuICovCi0JCWNvbm4tPmFsdHNvY2sgPSBhY3R4LT5t dXg7CisJCXNldF9jb25uX2FsdHNvY2soY29ubiwgYWN0eC0+bXV4KTsKIAogCQlzd2l0Y2ggKGFj dHgtPnN0ZXApCiAJCXsKQEAgLTI3MTIsNyArMjc0OCw3IEBAIHBnX2ZlX3J1bl9vYXV0aF9mbG93 X2ltcGwoUEdjb25uICpjb25uKQogCQkJCSAqLwogCQkJCWlmICghdGltZXJfZXhwaXJlZChhY3R4 KSkKIAkJCQl7Ci0JCQkJCWNvbm4tPmFsdHNvY2sgPSBhY3R4LT50aW1lcmZkOworCQkJCQlzZXRf Y29ubl9hbHRzb2NrKGNvbm4sIGFjdHgtPnRpbWVyZmQpOwogCQkJCQlyZXR1cm4gUEdSRVNfUE9M TElOR19SRUFESU5HOwogCQkJCX0KIApAQCAtMjczMiw3ICsyNzY4LDcgQEAgcGdfZmVfcnVuX29h dXRoX2Zsb3dfaW1wbChQR2Nvbm4gKmNvbm4pCiAJCXsKIAkJCWNhc2UgT0FVVEhfU1RFUF9JTklU OgogCQkJCWFjdHgtPmVycmN0eCA9ICJmYWlsZWQgdG8gZmV0Y2ggT3BlbklEIGRpc2NvdmVyeSBk b2N1bWVudCI7Ci0JCQkJaWYgKCFzdGFydF9kaXNjb3ZlcnkoYWN0eCwgY29ubi0+b2F1dGhfZGlz Y292ZXJ5X3VyaSkpCisJCQkJaWYgKCFzdGFydF9kaXNjb3ZlcnkoYWN0eCwgY29ubl9vYXV0aF9k aXNjb3ZlcnlfdXJpKGNvbm4pKSkKIAkJCQkJZ290byBlcnJvcl9yZXR1cm47CiAKIAkJCQlhY3R4 LT5zdGVwID0gT0FVVEhfU1RFUF9ESVNDT1ZFUlk7CkBAIC0yNzY4LDkgKzI4MDQsMTUgQEAgcGdf ZmVfcnVuX29hdXRoX2Zsb3dfaW1wbChQR2Nvbm4gKmNvbm4pCiAJCQkJYnJlYWs7CiAKIAkJCWNh c2UgT0FVVEhfU1RFUF9UT0tFTl9SRVFVRVNUOgotCQkJCWlmICghaGFuZGxlX3Rva2VuX3Jlc3Bv bnNlKGFjdHgsICZjb25uLT5vYXV0aF90b2tlbikpCisJCQkJaWYgKCFoYW5kbGVfdG9rZW5fcmVz cG9uc2UoYWN0eCwgJm9hdXRoX3Rva2VuKSkKIAkJCQkJZ290byBlcnJvcl9yZXR1cm47CiAKKwkJ CQkvKgorCQkJCSAqIEhvb2sgYW55IG9hdXRoX3Rva2VuIGludG8gdGhlIFBHY29ubiBpbW1lZGlh dGVseSBzbyB0aGF0CisJCQkJICogdGhlIGFsbG9jYXRpb24gaXNuJ3QgbG9zdCBpbiBjYXNlIG9m IGFuIGVycm9yLgorCQkJCSAqLworCQkJCXNldF9jb25uX29hdXRoX3Rva2VuKGNvbm4sIG9hdXRo X3Rva2VuKTsKKwogCQkJCWlmICghYWN0eC0+dXNlcl9wcm9tcHRlZCkKIAkJCQl7CiAJCQkJCS8q CkBAIC0yNzgzLDcgKzI4MjUsNyBAQCBwZ19mZV9ydW5fb2F1dGhfZmxvd19pbXBsKFBHY29ubiAq Y29ubikKIAkJCQkJYWN0eC0+dXNlcl9wcm9tcHRlZCA9IHRydWU7CiAJCQkJfQogCi0JCQkJaWYg KGNvbm4tPm9hdXRoX3Rva2VuKQorCQkJCWlmIChvYXV0aF90b2tlbikKIAkJCQkJYnJlYWs7CQkv KiBkb25lISAqLwogCiAJCQkJLyoKQEAgLTI3OTgsNyArMjg0MCw3IEBAIHBnX2ZlX3J1bl9vYXV0 aF9mbG93X2ltcGwoUEdjb25uICpjb25uKQogCQkJCSAqIHRoZSBjbGllbnQgd2FpdCBkaXJlY3Rs eSBvbiB0aGUgdGltZXJmZCByYXRoZXIgdGhhbiB0aGUKIAkJCQkgKiBtdWx0aXBsZXhlci4KIAkJ CQkgKi8KLQkJCQljb25uLT5hbHRzb2NrID0gYWN0eC0+dGltZXJmZDsKKwkJCQlzZXRfY29ubl9h bHRzb2NrKGNvbm4sIGFjdHgtPnRpbWVyZmQpOwogCiAJCQkJYWN0eC0+c3RlcCA9IE9BVVRIX1NU RVBfV0FJVF9JTlRFUlZBTDsKIAkJCQlhY3R4LT5ydW5uaW5nID0gMTsKQEAgLTI4MTgsNDggKzI4 NjAsNDAgQEAgcGdfZmVfcnVuX29hdXRoX2Zsb3dfaW1wbChQR2Nvbm4gKmNvbm4pCiAJCSAqIHBv aW50LCBhY3R4LT5ydW5uaW5nIHdpbGwgYmUgc2V0LiBCdXQgdGhlcmUgYXJlIHNvbWUgY29ybmVy IGNhc2VzCiAJCSAqIHdoZXJlIHdlIGNhbiBpbW1lZGlhdGVseSBsb29wIGJhY2sgYXJvdW5kOyBz ZWUgc3RhcnRfcmVxdWVzdCgpLgogCQkgKi8KLQl9IHdoaWxlICghY29ubi0+b2F1dGhfdG9rZW4g JiYgIWFjdHgtPnJ1bm5pbmcpOworCX0gd2hpbGUgKCFvYXV0aF90b2tlbiAmJiAhYWN0eC0+cnVu bmluZyk7CiAKIAkvKiBJZiB3ZSd2ZSBzdG9yZWQgYSB0b2tlbiwgd2UncmUgZG9uZS4gT3RoZXJ3 aXNlIGNvbWUgYmFjayBsYXRlci4gKi8KLQlyZXR1cm4gY29ubi0+b2F1dGhfdG9rZW4gPyBQR1JF U19QT0xMSU5HX09LIDogUEdSRVNfUE9MTElOR19SRUFESU5HOworCXJldHVybiBvYXV0aF90b2tl biA/IFBHUkVTX1BPTExJTkdfT0sgOiBQR1JFU19QT0xMSU5HX1JFQURJTkc7CiAKIGVycm9yX3Jl dHVybjoKKwllcnJidWYgPSBjb25uX2Vycm9yTWVzc2FnZShjb25uKTsKIAogCS8qCiAJICogQXNz ZW1ibGUgdGhlIHRocmVlIHBhcnRzIG9mIG91ciBlcnJvcjogY29udGV4dCwgYm9keSwgYW5kIGRl dGFpbC4gU2VlCiAJICogYWxzbyB0aGUgZG9jdW1lbnRhdGlvbiBmb3Igc3RydWN0IGFzeW5jX2N0 eC4KIAkgKi8KIAlpZiAoYWN0eC0+ZXJyY3R4KQotCXsKLQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIo JmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkgbGlicHFfZ2V0dGV4dChhY3R4LT5lcnJjdHgp KTsKLQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwgIjogIik7Ci0J fQorCQlhcHBlbmRQUUV4cEJ1ZmZlcihlcnJidWYsICIlczogIiwgbGlicHFfZ2V0dGV4dChhY3R4 LT5lcnJjdHgpKTsKIAogCWlmIChQUUV4cEJ1ZmZlckRhdGFCcm9rZW4oYWN0eC0+ZXJyYnVmKSkK LQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkgbGli cHFfZ2V0dGV4dCgib3V0IG9mIG1lbW9yeSIpKTsKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoZXJy YnVmLCBsaWJwcV9nZXR0ZXh0KCJvdXQgb2YgbWVtb3J5IikpOwogCWVsc2UKLQkJYXBwZW5kUFFF eHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwgYWN0eC0+ZXJyYnVmLmRhdGEpOworCQlh cHBlbmRQUUV4cEJ1ZmZlclN0cihlcnJidWYsIGFjdHgtPmVycmJ1Zi5kYXRhKTsKIAogCWlmIChh Y3R4LT5jdXJsX2VyclswXSkKIAl7Ci0JCXNpemVfdAkJbGVuOwotCi0JCWFwcGVuZFBRRXhwQnVm ZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkgICIgKGxpYmN1cmw6ICVzKSIsIGFjdHgt PmN1cmxfZXJyKTsKKwkJYXBwZW5kUFFFeHBCdWZmZXIoZXJyYnVmLCAiIChsaWJjdXJsOiAlcyki LCBhY3R4LT5jdXJsX2Vycik7CiAKIAkJLyogU29tZXRpbWVzIGxpYmN1cmwgYWRkcyBhIG5ld2xp bmUgdG8gdGhlIGVycm9yIGJ1ZmZlci4gOiggKi8KLQkJbGVuID0gY29ubi0+ZXJyb3JNZXNzYWdl LmxlbjsKLQkJaWYgKGxlbiA+PSAyICYmIGNvbm4tPmVycm9yTWVzc2FnZS5kYXRhW2xlbiAtIDJd ID09ICdcbicpCisJCWlmIChlcnJidWYtPmxlbiA+PSAyICYmIGVycmJ1Zi0+ZGF0YVtlcnJidWYt PmxlbiAtIDJdID09ICdcbicpCiAJCXsKLQkJCWNvbm4tPmVycm9yTWVzc2FnZS5kYXRhW2xlbiAt IDJdID0gJyknOwotCQkJY29ubi0+ZXJyb3JNZXNzYWdlLmRhdGFbbGVuIC0gMV0gPSAnXDAnOwot CQkJY29ubi0+ZXJyb3JNZXNzYWdlLmxlbi0tOworCQkJZXJyYnVmLT5kYXRhW2VycmJ1Zi0+bGVu IC0gMl0gPSAnKSc7CisJCQllcnJidWYtPmRhdGFbZXJyYnVmLT5sZW4gLSAxXSA9ICdcMCc7CisJ CQllcnJidWYtPmxlbi0tOwogCQl9CiAJfQogCi0JYXBwZW5kUFFFeHBCdWZmZXJDaGFyKCZjb25u LT5lcnJvck1lc3NhZ2UsICdcbicpOworCWFwcGVuZFBRRXhwQnVmZmVyQ2hhcihlcnJidWYsICdc bicpOwogCiAJcmV0dXJuIFBHUkVTX1BPTExJTkdfRkFJTEVEOwogfQpkaWZmIC0tZ2l0IGEvc3Jj L2ludGVyZmFjZXMvbGlicHEtb2F1dGgvb2F1dGgtY3VybC5oIGIvc3JjL2ludGVyZmFjZXMvbGli cHEtb2F1dGgvb2F1dGgtY3VybC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi4yNDhkMDQyNGFkMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBx LW9hdXRoL29hdXRoLWN1cmwuaApAQCAtMCwwICsxLDI0IEBACisvKi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAqCisgKiBvYXV0aC1jdXJsLmgKKyAqCisgKgkgIERlZmluaXRpb25zIGZvciBPQXV0aCBEZXZp Y2UgQXV0aG9yaXphdGlvbiBtb2R1bGUKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5 OTYtMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25z IENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9y bmlhCisgKgorICogc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvb2F1dGgtY3VybC5oCisgKgor ICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2lmbmRlZiBPQVVUSF9DVVJMX0gKKyNkZWZpbmUg T0FVVEhfQ1VSTF9ICisKKyNpbmNsdWRlICJsaWJwcS1mZS5oIgorCisvKiBFeHBvcnRlZCBhc3lu Yy1hdXRoIGNhbGxiYWNrcy4gKi8KK2V4dGVybiBQR0RMTEVYUE9SVCBQb3N0Z3Jlc1BvbGxpbmdT dGF0dXNUeXBlIHBnX2ZlX3J1bl9vYXV0aF9mbG93KFBHY29ubiAqY29ubik7CitleHRlcm4gUEdE TExFWFBPUlQgdm9pZCBwZ19mZV9jbGVhbnVwX29hdXRoX2Zsb3coUEdjb25uICpjb25uKTsKKwor I2VuZGlmCQkJCQkJCS8qIE9BVVRIX0NVUkxfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFj ZXMvbGlicHEtb2F1dGgvb2F1dGgtdXRpbHMuYyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRo L29hdXRoLXV0aWxzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjU3 ZDU0M2FjMDZmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgv b2F1dGgtdXRpbHMuYwpAQCAtMCwwICsxLDIzMyBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgor ICogb2F1dGgtdXRpbHMuYworICoKKyAqCSAgIkdsdWUiIGhlbHBlcnMgcHJvdmlkaW5nIGEgY29w eSBvZiBzb21lIGludGVybmFsIEFQSXMgZnJvbSBsaWJwcS4gQXQKKyAqCSAgc29tZSBwb2ludCBp biB0aGUgZnV0dXJlLCB3ZSBtaWdodCBiZSBhYmxlIHRvIGRlZHVwbGljYXRlLgorICoKKyAqIFBv cnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9w bWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRo ZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBz cmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9vYXV0aC11dGlscy5jCisgKgorICotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgKi8KKworI2luY2x1ZGUgInBvc3RncmVzX2ZlLmgiCisKKyNpbmNsdWRlIDxzaWdu YWwuaD4KKworI2luY2x1ZGUgIm9hdXRoLXV0aWxzLmgiCisKKyNpZm5kZWYgVVNFX0RZTkFNSUNf T0FVVEgKKyNlcnJvciBvYXV0aC11dGlscy5jIGlzIG5vdCBzdXBwb3J0ZWQgaW4gc3RhdGljIGJ1 aWxkcworI2VuZGlmCisKKyNpZmRlZiBMSUJQUV9JTlRfSAorI2Vycm9yIGRvIG5vdCByZWx5IG9u IGxpYnBxLWludC5oIGluIGxpYnBxLW9hdXRoCisjZW5kaWYKKworLyoKKyAqIEZ1bmN0aW9uIHBv aW50ZXJzIHNldCBieSBsaWJwcV9vYXV0aF9pbml0KCkuCisgKi8KKworcGd0aHJlYWRsb2NrX3Qg cGdfZ190aHJlYWRsb2NrOworc3RhdGljIGxpYnBxX2dldHRleHRfZnVuYyBsaWJwcV9nZXR0ZXh0 X2ltcGw7CisKK2Nvbm5fZXJyb3JNZXNzYWdlX2Z1bmMgY29ubl9lcnJvck1lc3NhZ2U7Citjb25u X29hdXRoX2NsaWVudF9pZF9mdW5jIGNvbm5fb2F1dGhfY2xpZW50X2lkOworY29ubl9vYXV0aF9j bGllbnRfc2VjcmV0X2Z1bmMgY29ubl9vYXV0aF9jbGllbnRfc2VjcmV0OworY29ubl9vYXV0aF9k aXNjb3ZlcnlfdXJpX2Z1bmMgY29ubl9vYXV0aF9kaXNjb3ZlcnlfdXJpOworY29ubl9vYXV0aF9p c3N1ZXJfaWRfZnVuYyBjb25uX29hdXRoX2lzc3Vlcl9pZDsKK2Nvbm5fb2F1dGhfc2NvcGVfZnVu YyBjb25uX29hdXRoX3Njb3BlOworY29ubl9zYXNsX3N0YXRlX2Z1bmMgY29ubl9zYXNsX3N0YXRl OworCitzZXRfY29ubl9hbHRzb2NrX2Z1bmMgc2V0X2Nvbm5fYWx0c29jazsKK3NldF9jb25uX29h dXRoX3Rva2VuX2Z1bmMgc2V0X2Nvbm5fb2F1dGhfdG9rZW47CisKKy8qLQorICogSW5pdGlhbGl6 ZXMgbGlicHEtb2F1dGggYnkgc2V0dGluZyBuZWNlc3NhcnkgY2FsbGJhY2tzLgorICoKKyAqIFRo ZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIHJlbGllcyBvbiB0aGUgZm9sbG93aW5nIHByaXZhdGUg aW1wbGVtZW50YXRpb24KKyAqIGRldGFpbHMgb2YgbGlicHE6CisgKgorICogLSBwZ19nX3RocmVh ZGxvY2s6IHByb3RlY3RzIGxpYmN1cmwgaW5pdGlhbGl6YXRpb24gaWYgdGhlIHVuZGVybHlpbmcg Q3VybAorICogICBpbnN0YWxsYXRpb24gaXMgbm90IHRocmVhZHNhZmUKKyAqCisgKiAtIGxpYnBx X2dldHRleHQ6IHRyYW5zbGF0ZXMgZXJyb3IgbWVzc2FnZXMgdXNpbmcgbGlicHEncyBtZXNzYWdl IGRvbWFpbgorICoKKyAqIFRoZSBpbXBsZW1lbnRhdGlvbiBhbHNvIG5lZWRzIGFjY2VzcyB0byBz ZXZlcmFsIG1lbWJlcnMgb2YgdGhlIFBHY29ubiBzdHJ1Y3QsCisgKiB3aGljaCBhcmUgbm90IGd1 YXJhbnRlZWQgdG8gc3RheSBpbiBwbGFjZSBhY3Jvc3MgbWlub3IgdmVyc2lvbnMuIEFjY2Vzc29y cworICogKG5hbWVkIGNvbm5fKikgYW5kIG11dGF0b3JzIChuYW1lZCBzZXRfY29ubl8qKSBhcmUg aW5qZWN0ZWQgaGVyZS4KKyAqLwordm9pZAorbGlicHFfb2F1dGhfaW5pdChwZ3RocmVhZGxvY2tf dCB0aHJlYWRsb2NrX2ltcGwsCisJCQkJIGxpYnBxX2dldHRleHRfZnVuYyBnZXR0ZXh0X2ltcGws CisJCQkJIGNvbm5fZXJyb3JNZXNzYWdlX2Z1bmMgZXJybXNnX2ltcGwsCisJCQkJIGNvbm5fb2F1 dGhfY2xpZW50X2lkX2Z1bmMgY2xpZW50aWRfaW1wbCwKKwkJCQkgY29ubl9vYXV0aF9jbGllbnRf c2VjcmV0X2Z1bmMgY2xpZW50c2VjcmV0X2ltcGwsCisJCQkJIGNvbm5fb2F1dGhfZGlzY292ZXJ5 X3VyaV9mdW5jIGRpc2NvdmVyeXVyaV9pbXBsLAorCQkJCSBjb25uX29hdXRoX2lzc3Vlcl9pZF9m dW5jIGlzc3VlcmlkX2ltcGwsCisJCQkJIGNvbm5fb2F1dGhfc2NvcGVfZnVuYyBzY29wZV9pbXBs LAorCQkJCSBjb25uX3Nhc2xfc3RhdGVfZnVuYyBzYXNsc3RhdGVfaW1wbCwKKwkJCQkgc2V0X2Nv bm5fYWx0c29ja19mdW5jIHNldGFsdHNvY2tfaW1wbCwKKwkJCQkgc2V0X2Nvbm5fb2F1dGhfdG9r ZW5fZnVuYyBzZXR0b2tlbl9pbXBsKQoreworCXBnX2dfdGhyZWFkbG9jayA9IHRocmVhZGxvY2tf aW1wbDsKKwlsaWJwcV9nZXR0ZXh0X2ltcGwgPSBnZXR0ZXh0X2ltcGw7CisJY29ubl9lcnJvck1l c3NhZ2UgPSBlcnJtc2dfaW1wbDsKKwljb25uX29hdXRoX2NsaWVudF9pZCA9IGNsaWVudGlkX2lt cGw7CisJY29ubl9vYXV0aF9jbGllbnRfc2VjcmV0ID0gY2xpZW50c2VjcmV0X2ltcGw7CisJY29u bl9vYXV0aF9kaXNjb3ZlcnlfdXJpID0gZGlzY292ZXJ5dXJpX2ltcGw7CisJY29ubl9vYXV0aF9p c3N1ZXJfaWQgPSBpc3N1ZXJpZF9pbXBsOworCWNvbm5fb2F1dGhfc2NvcGUgPSBzY29wZV9pbXBs OworCWNvbm5fc2FzbF9zdGF0ZSA9IHNhc2xzdGF0ZV9pbXBsOworCXNldF9jb25uX2FsdHNvY2sg PSBzZXRhbHRzb2NrX2ltcGw7CisJc2V0X2Nvbm5fb2F1dGhfdG9rZW4gPSBzZXR0b2tlbl9pbXBs OworfQorCisvKgorICogQXBwZW5kIGEgZm9ybWF0dGVkIHN0cmluZyB0byB0aGUgZXJyb3IgbWVz c2FnZSBidWZmZXIgb2YgdGhlIGdpdmVuCisgKiBjb25uZWN0aW9uLCBhZnRlciB0cmFuc2xhdGlu ZyBpdC4gIFRoaXMgaXMgYSBjb3B5IG9mIGxpYnBxJ3MgaW50ZXJuYWwgQVBJLgorICovCit2b2lk CitsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKmZtdCwu Li4pCit7CisJaW50CQkJc2F2ZV9lcnJubyA9IGVycm5vOworCWJvb2wJCWRvbmU7CisJdmFfbGlz dAkJYXJnczsKKwlQUUV4cEJ1ZmZlciBlcnJvck1lc3NhZ2UgPSBjb25uX2Vycm9yTWVzc2FnZShj b25uKTsKKworCUFzc2VydChmbXRbc3RybGVuKGZtdCkgLSAxXSAhPSAnXG4nKTsKKworCWlmIChQ UUV4cEJ1ZmZlckJyb2tlbihlcnJvck1lc3NhZ2UpKQorCQlyZXR1cm47CQkJCQkvKiBhbHJlYWR5 IGZhaWxlZCAqLworCisJLyogTG9vcCBpbiBjYXNlIHdlIGhhdmUgdG8gcmV0cnkgYWZ0ZXIgZW5s YXJnaW5nIHRoZSBidWZmZXIuICovCisJZG8KKwl7CisJCWVycm5vID0gc2F2ZV9lcnJubzsKKwkJ dmFfc3RhcnQoYXJncywgZm10KTsKKwkJZG9uZSA9IGFwcGVuZFBRRXhwQnVmZmVyVkEoZXJyb3JN ZXNzYWdlLCBsaWJwcV9nZXR0ZXh0KGZtdCksIGFyZ3MpOworCQl2YV9lbmQoYXJncyk7CisJfSB3 aGlsZSAoIWRvbmUpOworCisJYXBwZW5kUFFFeHBCdWZmZXJDaGFyKGVycm9yTWVzc2FnZSwgJ1xu Jyk7Cit9CisKKyNpZmRlZiBFTkFCTEVfTkxTCisKKy8qCisgKiBBIHNoaW0gdGhhdCBkZWZlcnMg dG8gdGhlIGFjdHVhbCBsaWJwcV9nZXR0ZXh0KCkuCisgKi8KK2NoYXIgKgorbGlicHFfZ2V0dGV4 dChjb25zdCBjaGFyICptc2dpZCkKK3sKKwlpZiAoIWxpYnBxX2dldHRleHRfaW1wbCkKKwl7CisJ CS8qCisJCSAqIFBvc3NpYmxlIGlmIHRoZSBsaWJwcSBidWlsZCBkaWRuJ3QgZW5hYmxlIE5MUyBi dXQgdGhlIGxpYnBxLW9hdXRoCisJCSAqIGJ1aWxkIGRpZC4gVGhhdCdzIGFuIG9kZCBtaXNtYXRj aCwgYnV0IHdlIGNhbiBoYW5kbGUgaXQuCisJCSAqCisJCSAqIE5vdGUgdGhhdCBjYWxsZXJzIG9m IGxpYnBxX2dldHRleHQoKSBoYXZlIHRvIHRyZWF0IHRoZSByZXR1cm4gdmFsdWUKKwkJICogYXMg aWYgaXQgd2VyZSBjb25zdCwgYmVjYXVzZSBidWlsZHMgd2l0aG91dCBOTFMgc2ltcGx5IHBhc3Mg dGhyb3VnaAorCQkgKiB0aGVpciBhcmd1bWVudC4KKwkJICovCisJCXJldHVybiB1bmNvbnN0aWZ5 KGNoYXIgKiwgbXNnaWQpOworCX0KKworCXJldHVybiBsaWJwcV9nZXR0ZXh0X2ltcGwobXNnaWQp OworfQorCisjZW5kaWYJCQkJCQkJLyogRU5BQkxFX05MUyAqLworCisvKgorICogUmV0dXJucyB0 cnVlIGlmIHRoZSBQR09BVVRIREVCVUc9VU5TQUZFIGZsYWcgaXMgc2V0IGluIHRoZSBlbnZpcm9u bWVudC4KKyAqLworYm9vbAorb2F1dGhfdW5zYWZlX2RlYnVnZ2luZ19lbmFibGVkKHZvaWQpCit7 CisJY29uc3QgY2hhciAqZW52ID0gZ2V0ZW52KCJQR09BVVRIREVCVUciKTsKKworCXJldHVybiAo ZW52ICYmIHN0cmNtcChlbnYsICJVTlNBRkUiKSA9PSAwKTsKK30KKworLyoKKyAqIER1cGxpY2F0 ZSBTT0NLX0VSUk5PKiBkZWZpbml0aW9ucyBmcm9tIGxpYnBxLWludC5oLCBmb3IgdXNlIGJ5Cisg KiBwcV9ibG9jay9yZXNldF9zaWdwaXBlKCkuCisgKi8KKyNpZmRlZiBXSU4zMgorI2RlZmluZSBT T0NLX0VSUk5PIChXU0FHZXRMYXN0RXJyb3IoKSkKKyNkZWZpbmUgU09DS19FUlJOT19TRVQoZSkg V1NBU2V0TGFzdEVycm9yKGUpCisjZWxzZQorI2RlZmluZSBTT0NLX0VSUk5PIGVycm5vCisjZGVm aW5lIFNPQ0tfRVJSTk9fU0VUKGUpIChlcnJubyA9IChlKSkKKyNlbmRpZgorCisvKgorICoJQmxv Y2sgU0lHUElQRSBmb3IgdGhpcyB0aHJlYWQuIFRoaXMgaXMgYSBjb3B5IG9mIGxpYnBxJ3MgaW50 ZXJuYWwgQVBJLgorICovCitpbnQKK3BxX2Jsb2NrX3NpZ3BpcGUoc2lnc2V0X3QgKm9zaWdzZXQs IGJvb2wgKnNpZ3BpcGVfcGVuZGluZykKK3sKKwlzaWdzZXRfdAlzaWdwaXBlX3NpZ3NldDsKKwlz aWdzZXRfdAlzaWdzZXQ7CisKKwlzaWdlbXB0eXNldCgmc2lncGlwZV9zaWdzZXQpOworCXNpZ2Fk ZHNldCgmc2lncGlwZV9zaWdzZXQsIFNJR1BJUEUpOworCisJLyogQmxvY2sgU0lHUElQRSBhbmQg c2F2ZSBwcmV2aW91cyBtYXNrIGZvciBsYXRlciByZXNldCAqLworCVNPQ0tfRVJSTk9fU0VUKHB0 aHJlYWRfc2lnbWFzayhTSUdfQkxPQ0ssICZzaWdwaXBlX3NpZ3NldCwgb3NpZ3NldCkpOworCWlm IChTT0NLX0VSUk5PKQorCQlyZXR1cm4gLTE7CisKKwkvKiBXZSBjYW4gaGF2ZSBhIHBlbmRpbmcg U0lHUElQRSBvbmx5IGlmIGl0IHdhcyBibG9ja2VkIGJlZm9yZSAqLworCWlmIChzaWdpc21lbWJl cihvc2lnc2V0LCBTSUdQSVBFKSkKKwl7CisJCS8qIElzIHRoZXJlIGEgcGVuZGluZyBTSUdQSVBF PyAqLworCQlpZiAoc2lncGVuZGluZygmc2lnc2V0KSAhPSAwKQorCQkJcmV0dXJuIC0xOworCisJ CWlmIChzaWdpc21lbWJlcigmc2lnc2V0LCBTSUdQSVBFKSkKKwkJCSpzaWdwaXBlX3BlbmRpbmcg PSB0cnVlOworCQllbHNlCisJCQkqc2lncGlwZV9wZW5kaW5nID0gZmFsc2U7CisJfQorCWVsc2UK KwkJKnNpZ3BpcGVfcGVuZGluZyA9IGZhbHNlOworCisJcmV0dXJuIDA7Cit9CisKKy8qCisgKglE aXNjYXJkIGFueSBwZW5kaW5nIFNJR1BJUEUgYW5kIHJlc2V0IHRoZSBzaWduYWwgbWFzay4gVGhp cyBpcyBhIGNvcHkgb2YKKyAqCWxpYnBxJ3MgaW50ZXJuYWwgQVBJLgorICovCit2b2lkCitwcV9y ZXNldF9zaWdwaXBlKHNpZ3NldF90ICpvc2lnc2V0LCBib29sIHNpZ3BpcGVfcGVuZGluZywgYm9v bCBnb3RfZXBpcGUpCit7CisJaW50CQkJc2F2ZV9lcnJubyA9IFNPQ0tfRVJSTk87CisJaW50CQkJ c2lnbm87CisJc2lnc2V0X3QJc2lnc2V0OworCisJLyogQ2xlYXIgU0lHUElQRSBvbmx5IGlmIG5v bmUgd2FzIHBlbmRpbmcgKi8KKwlpZiAoZ290X2VwaXBlICYmICFzaWdwaXBlX3BlbmRpbmcpCisJ eworCQlpZiAoc2lncGVuZGluZygmc2lnc2V0KSA9PSAwICYmCisJCQlzaWdpc21lbWJlcigmc2ln c2V0LCBTSUdQSVBFKSkKKwkJeworCQkJc2lnc2V0X3QJc2lncGlwZV9zaWdzZXQ7CisKKwkJCXNp Z2VtcHR5c2V0KCZzaWdwaXBlX3NpZ3NldCk7CisJCQlzaWdhZGRzZXQoJnNpZ3BpcGVfc2lnc2V0 LCBTSUdQSVBFKTsKKworCQkJc2lnd2FpdCgmc2lncGlwZV9zaWdzZXQsICZzaWdubyk7CisJCX0K Kwl9CisKKwkvKiBSZXN0b3JlIHNhdmVkIGJsb2NrIG1hc2sgKi8KKwlwdGhyZWFkX3NpZ21hc2so U0lHX1NFVE1BU0ssIG9zaWdzZXQsIE5VTEwpOworCisJU09DS19FUlJOT19TRVQoc2F2ZV9lcnJu byk7Cit9CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9vYXV0aC11dGls cy5oIGIvc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvb2F1dGgtdXRpbHMuaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZjRmZmVmZWYyMDgKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9vYXV0aC11dGlscy5oCkBAIC0wLDAgKzEs OTQgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIG9hdXRoLXV0aWxzLmgKKyAqCisgKgkg IERlZmluaXRpb25zIHByb3ZpZGluZyBtaXNzaW5nIGxpYnBxIGludGVybmFsIEFQSXMKKyAqCisg KiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2 ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBv ZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICogc3JjL2ludGVyZmFjZXMvbGli cHEtb2F1dGgvb2F1dGgtdXRpbHMuaAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNp Zm5kZWYgT0FVVEhfVVRJTFNfSAorI2RlZmluZSBPQVVUSF9VVElMU19ICisKKyNpbmNsdWRlICJm ZS1hdXRoLW9hdXRoLmgiCisjaW5jbHVkZSAibGlicHEtZmUuaCIKKyNpbmNsdWRlICJwcWV4cGJ1 ZmZlci5oIgorCisvKgorICogQSBiYW5rIG9mIGNhbGxiYWNrcyB0byBzYWZlbHkgYWNjZXNzIG1l bWJlcnMgb2YgUEdjb25uLCB3aGljaCBhcmUgYWxsIHBhc3NlZAorICogdG8gbGlicHFfb2F1dGhf aW5pdCgpIGJ5IGxpYnBxLgorICoKKyAqIEtlZXAgdGhlc2UgYWxpZ25lZCB3aXRoIHRoZSBkZWZp bml0aW9ucyBpbiBmZS1hdXRoLW9hdXRoLmMgYXMgd2VsbCBhcyB0aGUKKyAqIHN0YXRpYyBkZWNs YXJhdGlvbnMgaW4gb2F1dGgtY3VybC5jLgorICovCisjZGVmaW5lIERFQ0xBUkVfR0VUVEVSKFRZ UEUsIE1FTUJFUikgXAorCXR5cGVkZWYgVFlQRSAoKmNvbm5fICMjIE1FTUJFUiAjIyBfZnVuYykg KFBHY29ubiAqY29ubik7IFwKKwlleHRlcm4gY29ubl8gIyMgTUVNQkVSICMjIF9mdW5jIGNvbm5f ICMjIE1FTUJFUjsKKworI2RlZmluZSBERUNMQVJFX1NFVFRFUihUWVBFLCBNRU1CRVIpIFwKKwl0 eXBlZGVmIHZvaWQgKCpzZXRfY29ubl8gIyMgTUVNQkVSICMjIF9mdW5jKSAoUEdjb25uICpjb25u LCBUWVBFIHZhbCk7IFwKKwlleHRlcm4gc2V0X2Nvbm5fICMjIE1FTUJFUiAjIyBfZnVuYyBzZXRf Y29ubl8gIyMgTUVNQkVSOworCitERUNMQVJFX0dFVFRFUihQUUV4cEJ1ZmZlciwgZXJyb3JNZXNz YWdlKTsKK0RFQ0xBUkVfR0VUVEVSKGNoYXIgKiwgb2F1dGhfY2xpZW50X2lkKTsKK0RFQ0xBUkVf R0VUVEVSKGNoYXIgKiwgb2F1dGhfY2xpZW50X3NlY3JldCk7CitERUNMQVJFX0dFVFRFUihjaGFy ICosIG9hdXRoX2Rpc2NvdmVyeV91cmkpOworREVDTEFSRV9HRVRURVIoY2hhciAqLCBvYXV0aF9p c3N1ZXJfaWQpOworREVDTEFSRV9HRVRURVIoY2hhciAqLCBvYXV0aF9zY29wZSk7CitERUNMQVJF X0dFVFRFUihmZV9vYXV0aF9zdGF0ZSAqLCBzYXNsX3N0YXRlKTsKKworREVDTEFSRV9TRVRURVIo cGdzb2NrZXQsIGFsdHNvY2spOworREVDTEFSRV9TRVRURVIoY2hhciAqLCBvYXV0aF90b2tlbik7 CisKKyN1bmRlZiBERUNMQVJFX0dFVFRFUgorI3VuZGVmIERFQ0xBUkVfU0VUVEVSCisKK3R5cGVk ZWYgY2hhciAqKCpsaWJwcV9nZXR0ZXh0X2Z1bmMpIChjb25zdCBjaGFyICptc2dpZCk7CisKKy8q IEluaXRpYWxpemVzIGxpYnBxLW9hdXRoLiAqLworZXh0ZXJuIFBHRExMRVhQT1JUIHZvaWQgbGli cHFfb2F1dGhfaW5pdChwZ3RocmVhZGxvY2tfdCB0aHJlYWRsb2NrLAorCQkJCQkJCQkJCSBsaWJw cV9nZXR0ZXh0X2Z1bmMgZ2V0dGV4dF9pbXBsLAorCQkJCQkJCQkJCSBjb25uX2Vycm9yTWVzc2Fn ZV9mdW5jIGVycm1zZ19pbXBsLAorCQkJCQkJCQkJCSBjb25uX29hdXRoX2NsaWVudF9pZF9mdW5j IGNsaWVudGlkX2ltcGwsCisJCQkJCQkJCQkJIGNvbm5fb2F1dGhfY2xpZW50X3NlY3JldF9mdW5j IGNsaWVudHNlY3JldF9pbXBsLAorCQkJCQkJCQkJCSBjb25uX29hdXRoX2Rpc2NvdmVyeV91cmlf ZnVuYyBkaXNjb3Zlcnl1cmlfaW1wbCwKKwkJCQkJCQkJCQkgY29ubl9vYXV0aF9pc3N1ZXJfaWRf ZnVuYyBpc3N1ZXJpZF9pbXBsLAorCQkJCQkJCQkJCSBjb25uX29hdXRoX3Njb3BlX2Z1bmMgc2Nv cGVfaW1wbCwKKwkJCQkJCQkJCQkgY29ubl9zYXNsX3N0YXRlX2Z1bmMgc2FzbHN0YXRlX2ltcGws CisJCQkJCQkJCQkJIHNldF9jb25uX2FsdHNvY2tfZnVuYyBzZXRhbHRzb2NrX2ltcGwsCisJCQkJ CQkJCQkJIHNldF9jb25uX29hdXRoX3Rva2VuX2Z1bmMgc2V0dG9rZW5faW1wbCk7CisKKy8qCisg KiBEdXBsaWNhdGVkIEFQSXMsIGNvcGllZCBmcm9tIGxpYnBxIChwcmltYXJpbHkgbGlicHEtaW50 LmgsIHdoaWNoIHdlIGNhbm5vdAorICogZGVwZW5kIG9uIGhlcmUpLgorICovCisKK3R5cGVkZWYg ZW51bQoreworCVBHX0JPT0xfVU5LTk9XTiA9IDAsCQkvKiBDdXJyZW50bHkgdW5rbm93biAqLwor CVBHX0JPT0xfWUVTLAkJCQkvKiBZZXMgKHRydWUpICovCisJUEdfQk9PTF9OTwkJCQkJLyogTm8g KGZhbHNlKSAqLworfSBQR1Rlcm5hcnlCb29sOworCitleHRlcm4gdm9pZCBsaWJwcV9hcHBlbmRf Y29ubl9lcnJvcihQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKmZtdCwuLi4pIHBnX2F0dHJpYnV0 ZV9wcmludGYoMiwgMyk7CitleHRlcm4gYm9vbCBvYXV0aF91bnNhZmVfZGVidWdnaW5nX2VuYWJs ZWQodm9pZCk7CitleHRlcm4gaW50CXBxX2Jsb2NrX3NpZ3BpcGUoc2lnc2V0X3QgKm9zaWdzZXQs IGJvb2wgKnNpZ3BpcGVfcGVuZGluZyk7CitleHRlcm4gdm9pZCBwcV9yZXNldF9zaWdwaXBlKHNp Z3NldF90ICpvc2lnc2V0LCBib29sIHNpZ3BpcGVfcGVuZGluZywgYm9vbCBnb3RfZXBpcGUpOwor CisjaWZkZWYgRU5BQkxFX05MUworZXh0ZXJuIGNoYXIgKmxpYnBxX2dldHRleHQoY29uc3QgY2hh ciAqbXNnaWQpIHBnX2F0dHJpYnV0ZV9mb3JtYXRfYXJnKDEpOworI2Vsc2UKKyNkZWZpbmUgbGli cHFfZ2V0dGV4dCh4KSAoeCkKKyNlbmRpZgorCitleHRlcm4gcGd0aHJlYWRsb2NrX3QgcGdfZ190 aHJlYWRsb2NrOworCisjZGVmaW5lIHBnbG9ja190aHJlYWQoKQkJcGdfZ190aHJlYWRsb2NrKHRy dWUpCisjZGVmaW5lIHBndW5sb2NrX3RocmVhZCgpCXBnX2dfdGhyZWFkbG9jayhmYWxzZSkKKwor I2VuZGlmCQkJCQkJCS8qIE9BVVRIX1VUSUxTX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZh Y2VzL2xpYnBxL01ha2VmaWxlIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvTWFrZWZpbGUKaW5kZXgg OTBiMGI2NWRiNmYuLmM2ZmU1ZmVjN2Y2IDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJw cS9NYWtlZmlsZQorKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9NYWtlZmlsZQpAQCAtMzEsNyAr MzEsNiBAQCBlbmRpZgogCiBPQkpTID0gXAogCSQoV0lOMzJSRVMpIFwKLQlmZS1hdXRoLW9hdXRo Lm8gXAogCWZlLWF1dGgtc2NyYW0ubyBcCiAJZmUtY2FuY2VsLm8gXAogCWZlLWNvbm5lY3QubyBc CkBAIC02NCw5ICs2MywxMSBAQCBPQkpTICs9IFwKIAlmZS1zZWN1cmUtZ3NzYXBpLm8KIGVuZGlm CiAKLWlmZXEgKCQod2l0aF9saWJjdXJsKSx5ZXMpCi1PQkpTICs9IGZlLWF1dGgtb2F1dGgtY3Vy bC5vCi1lbmRpZgorIyBUaGUgT0F1dGggaW1wbGVtZW50YXRpb24gZGlmZmVycyBkZXBlbmRpbmcg b24gdGhlIHR5cGUgb2YgbGlicmFyeSBiZWluZyBidWlsdC4KK09CSlNfU1RBVElDID0gZmUtYXV0 aC1vYXV0aC5vCisKK2ZlLWF1dGgtb2F1dGhfc2hsaWIubzogb3ZlcnJpZGUgQ1BQRkxBR1NfU0hM SUIgKz0gLURVU0VfRFlOQU1JQ19PQVVUSAorT0JKU19TSExJQiA9IGZlLWF1dGgtb2F1dGhfc2hs aWIubwogCiBpZmVxICgkKFBPUlROQU1FKSwgY3lnd2luKQogb3ZlcnJpZGUgc2hsaWIgPSBjeWck KE5BTUUpJChETFNVRkZJWCkKQEAgLTg2LDcgKzg3LDcgQEAgZW5kaWYKICMgdGhhdCBhcmUgYnVp bHQgY29ycmVjdGx5IGZvciB1c2UgaW4gYSBzaGxpYi4KIFNITElCX0xJTktfSU5URVJOQUwgPSAt bHBnY29tbW9uX3NobGliIC1scGdwb3J0X3NobGliCiBpZm5lcSAoJChQT1JUTkFNRSksIHdpbjMy KQotU0hMSUJfTElOSyArPSAkKGZpbHRlciAtbGNyeXB0IC1sZGVzIC1sY29tX2VyciAtbGNyeXB0 byAtbGs1Y3J5cHRvIC1sa3JiNSAtbGdzc2FwaV9rcmI1IC1sZ3NzIC1sZ3NzYXBpIC1sc3NsIC1s Y3VybCAtbHNvY2tldCAtbG5zbCAtbHJlc29sdiAtbGludGwgLWxtLCAkKExJQlMpKSAkKExEQVBf TElCU19GRSkgJChQVEhSRUFEX0xJQlMpCitTSExJQl9MSU5LICs9ICQoZmlsdGVyIC1sY3J5cHQg LWxkZXMgLWxjb21fZXJyIC1sY3J5cHRvIC1sazVjcnlwdG8gLWxrcmI1IC1sZ3NzYXBpX2tyYjUg LWxnc3MgLWxnc3NhcGkgLWxzc2wgLWxzb2NrZXQgLWxuc2wgLWxyZXNvbHYgLWxpbnRsIC1sbSwg JChMSUJTKSkgJChMREFQX0xJQlNfRkUpICQoUFRIUkVBRF9MSUJTKQogZWxzZQogU0hMSUJfTElO SyArPSAkKGZpbHRlciAtbGNyeXB0IC1sZGVzIC1sY29tX2VyciAtbGNyeXB0byAtbGs1Y3J5cHRv IC1sa3JiNSAtbGdzc2FwaTMyIC1sc3NsIC1sc29ja2V0IC1sbnNsIC1scmVzb2x2IC1saW50bCAt bG0gJChQVEhSRUFEX0xJQlMpLCAkKExJQlMpKSAkKExEQVBfTElCU19GRSkKIGVuZGlmCkBAIC0x MDEsMTIgKzEwMiwyNiBAQCBpZmVxICgkKHdpdGhfc3NsKSxvcGVuc3NsKQogUEtHX0NPTkZJR19S RVFVSVJFU19QUklWQVRFID0gbGlic3NsLCBsaWJjcnlwdG8KIGVuZGlmCiAKK2lmZXEgKCQod2l0 aF9saWJjdXJsKSx5ZXMpCisjIGxpYnBxLnNvIGRvZXNuJ3QgbGluayBhZ2FpbnN0IGxpYmN1cmws IGJ1dCBsaWJwcS5hIG5lZWRzIGxpYnBxLW9hdXRoLCBhbmQKKyMgbGlicHEtb2F1dGggbmVlZHMg bGliY3VybC4gUHV0IGJvdGggaW50byAqLnByaXZhdGUuCitQS0dfQ09ORklHX1JFUVVJUkVTX1BS SVZBVEUgKz0gbGliY3VybAorJS5wYzogb3ZlcnJpZGUgU0hMSUJfTElOS19JTlRFUk5BTCArPSAt bHBxLW9hdXRoCitlbmRpZgorCiBhbGw6IGFsbC1saWIgbGlicHEtcmVmcy1zdGFtcAogCiAjIFNo YXJlZCBsaWJyYXJ5IHN0dWZmCiBpbmNsdWRlICQodG9wX3NyY2Rpcikvc3JjL01ha2VmaWxlLnNo bGliCiBiYWNrZW5kX3NyYyA9ICQodG9wX3NyY2Rpcikvc3JjL2JhY2tlbmQKIAorIyBBZGQgc2hs aWItL3N0bGliLXNwZWNpZmljIG9iamVjdHMuCiskKHNobGliKTogb3ZlcnJpZGUgT0JKUyArPSAk KE9CSlNfU0hMSUIpCiskKHNobGliKTogJChPQkpTX1NITElCKQorCiskKHN0bGliKTogb3ZlcnJp ZGUgT0JKUyArPSAkKE9CSlNfU1RBVElDKQorJChzdGxpYik6ICQoT0JKU19TVEFUSUMpCisKICMg Q2hlY2sgZm9yIGZ1bmN0aW9ucyB0aGF0IGxpYnBxIG11c3Qgbm90IGNhbGwsIGN1cnJlbnRseSBq dXN0IGV4aXQoKS4KICMgKElkZWFsbHkgd2UnZCByZWplY3QgYWJvcnQoKSB0b28sIGJ1dCB0aGVy ZSBhcmUgdmFyaW91cyBzY2VuYXJpb3Mgd2hlcmUKICMgYnVpbGQgdG9vbGNoYWlucyBpbnNlcnQg YWJvcnQoKSBjYWxscywgZS5nLiB0byBpbXBsZW1lbnQgYXNzZXJ0KCkuKQpAQCAtMTE1LDggKzEz MCw2IEBAIGJhY2tlbmRfc3JjID0gJCh0b3Bfc3JjZGlyKS9zcmMvYmFja2VuZAogIyB3aGljaCBz ZWVtcyB0byBpbnNlcnQgcmVmZXJlbmNlcyB0byB0aGF0IGV2ZW4gaW4gcHVyZSBDIGNvZGUuIEV4 Y2x1ZGluZwogIyBfX3RzYW5fZnVuY19leGl0IGlzIG5lY2Vzc2FyeSB3aGVuIHVzaW5nIFRocmVh ZFNhbml0aXplciBkYXRhIHJhY2UgZGV0ZWN0b3IKICMgd2hpY2ggdXNlIHRoaXMgZnVuY3Rpb24g Zm9yIGluc3RydW1lbnRhdGlvbiBvZiBmdW5jdGlvbiBleGl0LgotIyBsaWJjdXJsIHJlZ2lzdGVy cyBhbiBleGl0IGhhbmRsZXIgaW4gdGhlIG1lbW9yeSBkZWJ1Z2dpbmcgY29kZSB3aGVuIHJ1bm5p bmcKLSMgd2l0aCBMZWFrU2FuaXRpemVyLgogIyBTa2lwIHRoZSB0ZXN0IHdoZW4gcHJvZmlsaW5n LCBhcyBnY2MgbWF5IGluc2VydCBleGl0KCkgY2FsbHMgZm9yIHRoYXQuCiAjIEFsc28gc2tpcCB0 aGUgdGVzdCBvbiBwbGF0Zm9ybXMgd2hlcmUgbGlicHEgaW5mcmFzdHJ1Y3R1cmUgbWF5IGJlIHBy b3ZpZGVkCiAjIGJ5IHN0YXRpY2FsbHktbGlua2VkIGxpYnJhcmllcywgYXMgd2UgY2FuJ3QgZXhw ZWN0IHRoZW0gdG8gaG9ub3IgdGhpcwpAQCAtMTI0LDcgKzEzNyw3IEBAIGJhY2tlbmRfc3JjID0g JCh0b3Bfc3JjZGlyKS9zcmMvYmFja2VuZAogbGlicHEtcmVmcy1zdGFtcDogJChzaGxpYikKIGlm bmVxICgkKGVuYWJsZV9jb3ZlcmFnZSksIHllcykKIGlmZXEgKCwkKGZpbHRlciBzb2xhcmlzLCQo UE9SVE5BTUUpKSkKLQlAaWYgbm0gLUEgLXUgJDwgMj4vZGV2L251bGwgfCBncmVwIC12IC1lIF9f Y3hhX2F0ZXhpdCAtZSBfX3RzYW5fZnVuY19leGl0IC1lIF9hdGV4aXQgfCBncmVwIGV4aXQ7IHRo ZW4gXAorCUBpZiBubSAtQSAtdSAkPCAyPi9kZXYvbnVsbCB8IGdyZXAgLXYgLWUgX19jeGFfYXRl eGl0IC1lIF9fdHNhbl9mdW5jX2V4aXQgfCBncmVwIGV4aXQ7IHRoZW4gXAogCQllY2hvICdsaWJw cSBtdXN0IG5vdCBiZSBjYWxsaW5nIGFueSBmdW5jdGlvbiB3aGljaCBpbnZva2VzIGV4aXQnOyBl eGl0IDE7IFwKIAlmaQogZW5kaWYKQEAgLTEzOCw2ICsxNTEsMTEgQEAgZmUtbWlzYy5vOiBmZS1t aXNjLmMgJCh0b3BfYnVpbGRkaXIpL3NyYy9wb3J0L3BnX2NvbmZpZ19wYXRocy5oCiAkKHRvcF9i dWlsZGRpcikvc3JjL3BvcnQvcGdfY29uZmlnX3BhdGhzLmg6CiAJJChNQUtFKSAtQyAkKHRvcF9i dWlsZGRpcikvc3JjL3BvcnQgcGdfY29uZmlnX3BhdGhzLmgKIAorIyBVc2Ugc3JjL2NvbW1vbi9N YWtlZmlsZSdzIHRyaWNrIGZvciB0cmFja2luZyBkZXBlbmRlbmNpZXMgb2Ygc2hsaWItc3BlY2lm aWMKKyMgb2JqZWN0cy4KKyVfc2hsaWIubzogJS5jICUubworCSQoQ0MpICQoQ0ZMQUdTKSAkKENG TEFHU19TTCkgJChDUFBGTEFHUykgJChDUFBGTEFHU19TSExJQikgLWMgJDwgLW8gJEAKKwogaW5z dGFsbDogYWxsIGluc3RhbGxkaXJzIGluc3RhbGwtbGliCiAJJChJTlNUQUxMX0RBVEEpICQoc3Jj ZGlyKS9saWJwcS1mZS5oICckKERFU1RESVIpJChpbmNsdWRlZGlyKScKIAkkKElOU1RBTExfREFU QSkgJChzcmNkaXIpL2xpYnBxLWV2ZW50cy5oICckKERFU1RESVIpJChpbmNsdWRlZGlyKScKQEAg LTE3MSw2ICsxODksNiBAQCB1bmluc3RhbGw6IHVuaW5zdGFsbC1saWIKIGNsZWFuIGRpc3RjbGVh bjogY2xlYW4tbGliCiAJJChNQUtFKSAtQyB0ZXN0ICRACiAJcm0gLXJmIHRtcF9jaGVjawotCXJt IC1mICQoT0JKUykgcHRocmVhZC5oIGxpYnBxLXJlZnMtc3RhbXAKKwlybSAtZiAkKE9CSlMpICQo T0JKU19TSExJQikgJChPQkpTX1NUQVRJQykgcHRocmVhZC5oIGxpYnBxLXJlZnMtc3RhbXAKICMg TWlnaHQgYmUgbGVmdCBvdmVyIGZyb20gYSBXaW4zMiBjbGllbnQtb25seSBidWlsZAogCXJtIC1m IHBnX2NvbmZpZ19wYXRocy5oCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9leHBv cnRzLnR4dCBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2V4cG9ydHMudHh0CmluZGV4IGQ1MTQzNzY2 ODU4Li4wNjI1Y2YzOWU5YSAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZXhwb3J0 cy50eHQKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZXhwb3J0cy50eHQKQEAgLTIxMCwzICsy MTAsNCBAQCBQUXNldEF1dGhEYXRhSG9vayAgICAgICAgIDIwNwogUFFnZXRBdXRoRGF0YUhvb2sg ICAgICAgICAyMDgKIFBRZGVmYXVsdEF1dGhEYXRhSG9vayAgICAgMjA5CiBQUWZ1bGxQcm90b2Nv bFZlcnNpb24gICAgIDIxMAorYXBwZW5kUFFFeHBCdWZmZXJWQSAgICAgICAyMTEKZGlmZiAtLWdp dCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGguYyBiL3NyYy9pbnRlcmZhY2Vz L2xpYnBxL2ZlLWF1dGgtb2F1dGguYwppbmRleCBhYjZhNDVlMmFiYS4uOWZiZmY4OWEyMWQgMTAw NjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGguYworKysgYi9zcmMv aW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLW9hdXRoLmMKQEAgLTE1LDYgKzE1LDEwIEBACiAKICNp bmNsdWRlICJwb3N0Z3Jlc19mZS5oIgogCisjaWZkZWYgVVNFX0RZTkFNSUNfT0FVVEgKKyNpbmNs dWRlIDxkbGZjbi5oPgorI2VuZGlmCisKICNpbmNsdWRlICJjb21tb24vYmFzZTY0LmgiCiAjaW5j bHVkZSAiY29tbW9uL2htYWMuaCIKICNpbmNsdWRlICJjb21tb24vanNvbmFwaS5oIgpAQCAtMjIs NiArMjYsNyBAQAogI2luY2x1ZGUgImZlLWF1dGguaCIKICNpbmNsdWRlICJmZS1hdXRoLW9hdXRo LmgiCiAjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKKyNpbmNsdWRlICJwZ19jb25maWdfcGF0aHMu aCIKIAogLyogVGhlIGV4cG9ydGVkIE9BdXRoIGNhbGxiYWNrIG1lY2hhbmlzbS4gKi8KIHN0YXRp YyB2b2lkICpvYXV0aF9pbml0KFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqcGFzc3dvcmQsCkBA IC03MjEsNiArNzI2LDIxOCBAQCBjbGVhbnVwX3VzZXJfb2F1dGhfZmxvdyhQR2Nvbm4gKmNvbm4p CiAJc3RhdGUtPmFzeW5jX2N0eCA9IE5VTEw7CiB9CiAKKy8qLS0tLS0tLS0tLS0tLQorICogQnVp bHRpbiBGbG93CisgKgorICogVGhlcmUgYXJlIHRocmVlIHBvdGVudGlhbCBpbXBsZW1lbnRhdGlv bnMgb2YgdXNlX2J1aWx0aW5fZmxvdzoKKyAqCisgKiAxKSBJZiB0aGUgT0F1dGggY2xpZW50IGlz IGRpc2FibGVkIGF0IGNvbmZpZ3VyYXRpb24gdGltZSwgcmV0dXJuIGZhbHNlLgorICogICAgRGVw ZW5kZW50IGNsaWVudHMgbXVzdCBwcm92aWRlIHRoZWlyIG93biBmbG93LgorICogMikgSWYgdGhl IE9BdXRoIGNsaWVudCBpcyBlbmFibGVkIGFuZCBVU0VfRFlOQU1JQ19PQVVUSCBpcyBkZWZpbmVk LCBkbG9wZW4oKQorICogICAgdGhlIGxpYnBxLW9hdXRoIHBsdWdpbiBhbmQgdXNlIGl0cyBpbXBs ZW1lbnRhdGlvbi4KKyAqIDMpIE90aGVyd2lzZSwgdXNlIGZsb3cgY2FsbGJhY2tzIHRoYXQgYXJl IHN0YXRpY2FsbHkgbGlua2VkIGludG8gdGhlCisgKiAgICBleGVjdXRhYmxlLgorICovCisKKyNp ZiAhZGVmaW5lZChVU0VfTElCQ1VSTCkKKworLyoKKyAqIFRoaXMgY29uZmlndXJhdGlvbiBkb2Vz bid0IHN1cHBvcnQgdGhlIGJ1aWx0aW4gZmxvdy4KKyAqLworCitib29sCit1c2VfYnVpbHRpbl9m bG93KFBHY29ubiAqY29ubiwgZmVfb2F1dGhfc3RhdGUgKnN0YXRlKQoreworCXJldHVybiBmYWxz ZTsKK30KKworI2VsaWYgZGVmaW5lZChVU0VfRFlOQU1JQ19PQVVUSCkKKworLyoKKyAqIFVzZSB0 aGUgYnVpbHRpbiBmbG93IGluIHRoZSBsaWJwcS1vYXV0aCBwbHVnaW4sIHdoaWNoIGlzIGxvYWRl ZCBhdCBydW50aW1lLgorICovCisKK3R5cGVkZWYgY2hhciAqKCpsaWJwcV9nZXR0ZXh0X2Z1bmMp IChjb25zdCBjaGFyICptc2dpZCk7CisKKy8qCisgKiBEZWZpbmUgYWNjZXNzb3IvbXV0YXRvciBz aGltcyB0byBpbmplY3QgaW50byBsaWJwcS1vYXV0aCwgc28gdGhhdCBpdCBkb2Vzbid0CisgKiBk ZXBlbmQgb24gdGhlIG9mZnNldHMgd2l0aGluIFBHY29ubi4gKFRoZXNlIGhhdmUgY2hhbmdlZCBk dXJpbmcgbWlub3IgdmVyc2lvbgorICogdXBkYXRlcyBpbiB0aGUgcGFzdC4pCisgKi8KKworI2Rl ZmluZSBERUZJTkVfR0VUVEVSKFRZUEUsIE1FTUJFUikgXAorCXR5cGVkZWYgVFlQRSAoKmNvbm5f ICMjIE1FTUJFUiAjIyBfZnVuYykgKFBHY29ubiAqY29ubik7IFwKKwlzdGF0aWMgVFlQRSBjb25u XyAjIyBNRU1CRVIoUEdjb25uICpjb25uKSB7IHJldHVybiBjb25uLT5NRU1CRVI7IH0KKworLyog TGlrZSBERUZJTkVfR0VUVEVSLCBidXQgcmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIG1lbWJlci4g Ki8KKyNkZWZpbmUgREVGSU5FX0dFVFRFUl9QKFRZUEUsIE1FTUJFUikgXAorCXR5cGVkZWYgVFlQ RSAoKmNvbm5fICMjIE1FTUJFUiAjIyBfZnVuYykgKFBHY29ubiAqY29ubik7IFwKKwlzdGF0aWMg VFlQRSBjb25uXyAjIyBNRU1CRVIoUEdjb25uICpjb25uKSB7IHJldHVybiAmY29ubi0+TUVNQkVS OyB9CisKKyNkZWZpbmUgREVGSU5FX1NFVFRFUihUWVBFLCBNRU1CRVIpIFwKKwl0eXBlZGVmIHZv aWQgKCpzZXRfY29ubl8gIyMgTUVNQkVSICMjIF9mdW5jKSAoUEdjb25uICpjb25uLCBUWVBFIHZh bCk7IFwKKwlzdGF0aWMgdm9pZCBzZXRfY29ubl8gIyMgTUVNQkVSKFBHY29ubiAqY29ubiwgVFlQ RSB2YWwpIHsgY29ubi0+TUVNQkVSID0gdmFsOyB9CisKK0RFRklORV9HRVRURVJfUChQUUV4cEJ1 ZmZlciwgZXJyb3JNZXNzYWdlKTsKK0RFRklORV9HRVRURVIoY2hhciAqLCBvYXV0aF9jbGllbnRf aWQpOworREVGSU5FX0dFVFRFUihjaGFyICosIG9hdXRoX2NsaWVudF9zZWNyZXQpOworREVGSU5F X0dFVFRFUihjaGFyICosIG9hdXRoX2Rpc2NvdmVyeV91cmkpOworREVGSU5FX0dFVFRFUihjaGFy ICosIG9hdXRoX2lzc3Vlcl9pZCk7CitERUZJTkVfR0VUVEVSKGNoYXIgKiwgb2F1dGhfc2NvcGUp OworREVGSU5FX0dFVFRFUihmZV9vYXV0aF9zdGF0ZSAqLCBzYXNsX3N0YXRlKTsKKworREVGSU5F X1NFVFRFUihwZ3NvY2tldCwgYWx0c29jayk7CitERUZJTkVfU0VUVEVSKGNoYXIgKiwgb2F1dGhf dG9rZW4pOworCisvKgorICogTG9hZHMgdGhlIGxpYnBxLW9hdXRoIHBsdWdpbiB2aWEgZGxvcGVu KCksIGluaXRpYWxpemVzIGl0LCBhbmQgcGx1Z3MgaXRzCisgKiBjYWxsYmFja3MgaW50byB0aGUg Y29ubmVjdGlvbidzIGFzeW5jIGF1dGggaGFuZGxlcnMuCisgKgorICogRmFpbHVyZSB0byBsb2Fk IGhlcmUgcmVzdWx0cyBpbiBhIHJlbGF0aXZlbHkgcXVpZXQgY29ubmVjdGlvbiBlcnJvciwgdG8K KyAqIGhhbmRsZSB0aGUgdXNlIGNhc2Ugd2hlcmUgdGhlIGJ1aWxkIHN1cHBvcnRzIGxvYWRpbmcg YSBmbG93IGJ1dCBhIHVzZXIgZG9lcworICogbm90IHdhbnQgdG8gaW5zdGFsbCBpdC4gVHJvdWJs ZXNob290aW5nIG9mIGxpbmtlci9sb2FkZXIgZmFpbHVyZXMgY2FuIGJlIGRvbmUKKyAqIHZpYSBQ R09BVVRIREVCVUcuCisgKi8KK2Jvb2wKK3VzZV9idWlsdGluX2Zsb3coUEdjb25uICpjb25uLCBm ZV9vYXV0aF9zdGF0ZSAqc3RhdGUpCit7CisJc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxz ZTsKKwlzdGF0aWMgcHRocmVhZF9tdXRleF90IGluaXRfbXV0ZXggPSBQVEhSRUFEX01VVEVYX0lO SVRJQUxJWkVSOworCWludAkJCWxvY2tlcnI7CisKKwl2b2lkCQkoKmluaXQpIChwZ3RocmVhZGxv Y2tfdCB0aHJlYWRsb2NrLAorCQkJCQkJIGxpYnBxX2dldHRleHRfZnVuYyBnZXR0ZXh0X2ltcGws CisJCQkJCQkgY29ubl9lcnJvck1lc3NhZ2VfZnVuYyBlcnJtc2dfaW1wbCwKKwkJCQkJCSBjb25u X29hdXRoX2NsaWVudF9pZF9mdW5jIGNsaWVudGlkX2ltcGwsCisJCQkJCQkgY29ubl9vYXV0aF9j bGllbnRfc2VjcmV0X2Z1bmMgY2xpZW50c2VjcmV0X2ltcGwsCisJCQkJCQkgY29ubl9vYXV0aF9k aXNjb3ZlcnlfdXJpX2Z1bmMgZGlzY292ZXJ5dXJpX2ltcGwsCisJCQkJCQkgY29ubl9vYXV0aF9p c3N1ZXJfaWRfZnVuYyBpc3N1ZXJpZF9pbXBsLAorCQkJCQkJIGNvbm5fb2F1dGhfc2NvcGVfZnVu YyBzY29wZV9pbXBsLAorCQkJCQkJIGNvbm5fc2FzbF9zdGF0ZV9mdW5jIHNhc2xzdGF0ZV9pbXBs LAorCQkJCQkJIHNldF9jb25uX2FsdHNvY2tfZnVuYyBzZXRhbHRzb2NrX2ltcGwsCisJCQkJCQkg c2V0X2Nvbm5fb2F1dGhfdG9rZW5fZnVuYyBzZXR0b2tlbl9pbXBsKTsKKwlQb3N0Z3Jlc1BvbGxp bmdTdGF0dXNUeXBlICgqZmxvdykgKFBHY29ubiAqY29ubik7CisJdm9pZAkJKCpjbGVhbnVwKSAo UEdjb25uICpjb25uKTsKKworCS8qCisJICogT24gbWFjT1Mgb25seSwgbG9hZCB0aGUgbW9kdWxl IHVzaW5nIGl0cyBhYnNvbHV0ZSBpbnN0YWxsIHBhdGg7IHRoZQorCSAqIHN0YW5kYXJkIHNlYXJj aCBiZWhhdmlvciBpcyBub3QgdmVyeSBoZWxwZnVsIGZvciB0aGlzIHVzZSBjYXNlLiBVbmxpa2UK KwkgKiBvbiBvdGhlciBwbGF0Zm9ybXMsIERZTERfTElCUkFSWV9QQVRIIGlzIHVzZWQgYXMgYSBm YWxsYmFjayBldmVuIHdpdGgKKwkgKiBhYnNvbHV0ZSBwYXRocyAobW9kdWxvIFNJUCBlZmZlY3Rz KSwgc28gdGVzdHMgY2FuIGNvbnRpbnVlIHRvIHdvcmsuCisJICoKKwkgKiBPbiB0aGUgb3RoZXIg cGxhdGZvcm1zLCBsb2FkIHRoZSBtb2R1bGUgdXNpbmcgb25seSB0aGUgYmFzZW5hbWUsIHRvCisJ ICogcmVseSBvbiB0aGUgcnVudGltZSBsaW5rZXIncyBzdGFuZGFyZCBzZWFyY2ggYmVoYXZpb3Iu CisJICovCisJY29uc3QgY2hhciAqY29uc3QgbW9kdWxlX25hbWUgPQorI2lmIGRlZmluZWQoX19k YXJ3aW5fXykKKwkJTElCRElSICIvbGlicHEtb2F1dGgtIiBQR19NQUpPUlZFUlNJT04gRExTVUZG SVg7CisjZWxzZQorCQkibGlicHEtb2F1dGgtIiBQR19NQUpPUlZFUlNJT04gRExTVUZGSVg7Cisj ZW5kaWYKKworCXN0YXRlLT5idWlsdGluX2Zsb3cgPSBkbG9wZW4obW9kdWxlX25hbWUsIFJUTERf Tk9XIHwgUlRMRF9MT0NBTCk7CisJaWYgKCFzdGF0ZS0+YnVpbHRpbl9mbG93KQorCXsKKwkJLyoK KwkJICogRm9yIGVuZCB1c2VycywgdGhpcyBwcm9iYWJseSBpc24ndCBhbiBlcnJvciBjb25kaXRp b24sIGl0IGp1c3QKKwkJICogbWVhbnMgdGhlIGZsb3cgaXNuJ3QgaW5zdGFsbGVkLiBEZXZlbG9w ZXJzIGFuZCBwYWNrYWdlIG1haW50YWluZXJzCisJCSAqIG1heSB3YW50IHRvIGRlYnVnIHRoaXMg dmlhIHRoZSBQR09BVVRIREVCVUcgZW52dmFyLCB0aG91Z2guCisJCSAqCisJCSAqIE5vdGUgdGhh dCBQT1NJWCBkbGVycm9yKCkgaXNuJ3QgZ3VhcmFudGVlZCB0byBiZSB0aHJlYWRzYWZlLgorCQkg Ki8KKwkJaWYgKG9hdXRoX3Vuc2FmZV9kZWJ1Z2dpbmdfZW5hYmxlZCgpKQorCQkJZnByaW50Zihz dGRlcnIsICJmYWlsZWQgZGxvcGVuIGZvciBsaWJwcS1vYXV0aDogJXNcbiIsIGRsZXJyb3IoKSk7 CisKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCWlmICgoaW5pdCA9IGRsc3ltKHN0YXRlLT5idWls dGluX2Zsb3csICJsaWJwcV9vYXV0aF9pbml0IikpID09IE5VTEwKKwkJfHwgKGZsb3cgPSBkbHN5 bShzdGF0ZS0+YnVpbHRpbl9mbG93LCAicGdfZmVfcnVuX29hdXRoX2Zsb3ciKSkgPT0gTlVMTAor CQl8fCAoY2xlYW51cCA9IGRsc3ltKHN0YXRlLT5idWlsdGluX2Zsb3csICJwZ19mZV9jbGVhbnVw X29hdXRoX2Zsb3ciKSkgPT0gTlVMTCkKKwl7CisJCS8qCisJCSAqIFRoaXMgaXMgbW9yZSBvZiBh biBlcnJvciBjb25kaXRpb24gdGhhbiB0aGUgb25lIGFib3ZlLCBidXQgZHVlIHRvCisJCSAqIHRo ZSBkbGVycm9yKCkgdGhyZWFkc2FmZXR5IGlzc3VlLCBsb2NrIGl0IGJlaGluZCBQR09BVVRIREVC VUcgdG9vLgorCQkgKi8KKwkJaWYgKG9hdXRoX3Vuc2FmZV9kZWJ1Z2dpbmdfZW5hYmxlZCgpKQor CQkJZnByaW50ZihzdGRlcnIsICJmYWlsZWQgZGxzeW0gZm9yIGxpYnBxLW9hdXRoOiAlc1xuIiwg ZGxlcnJvcigpKTsKKworCQlkbGNsb3NlKHN0YXRlLT5idWlsdGluX2Zsb3cpOworCQlyZXR1cm4g ZmFsc2U7CisJfQorCisJLyoKKwkgKiBQYXN0IHRoaXMgcG9pbnQsIHdlIGRvIG5vdCB1bmxvYWQg dGhlIG1vZHVsZS4gSXQgc3RheXMgaW4gdGhlIHByb2Nlc3MKKwkgKiBwZXJtYW5lbnRseS4KKwkg Ki8KKworCS8qCisJICogV2UgbmVlZCB0byBpbmplY3QgbmVjZXNzYXJ5IGZ1bmN0aW9uIHBvaW50 ZXJzIGludG8gdGhlIG1vZHVsZS4gVGhpcworCSAqIG9ubHkgbmVlZHMgdG8gYmUgZG9uZSBvbmNl IC0tIGV2ZW4gaWYgdGhlIHBvaW50ZXJzIGFyZSBjb25zdGFudCwKKwkgKiBhc3NpZ25pbmcgdGhl bSB3aGlsZSBhbm90aGVyIHRocmVhZCBpcyBleGVjdXRpbmcgdGhlIGZsb3dzIGZlZWxzIGxpa2UK KwkgKiB0ZW1wdGluZyBmYXRlLgorCSAqLworCWlmICgobG9ja2VyciA9IHB0aHJlYWRfbXV0ZXhf bG9jaygmaW5pdF9tdXRleCkpICE9IDApCisJeworCQkvKiBTaG91bGQgbm90IGhhcHBlbi4uLiBi dXQgZG9uJ3QgY29udGludWUgaWYgaXQgZG9lcy4gKi8KKwkJQXNzZXJ0KGZhbHNlKTsKKworCQls aWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiZmFpbGVkIHRvIGxvY2sgbXV0ZXggKCVkKSIs IGxvY2tlcnIpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJaWYgKCFpbml0aWFsaXplZCkKKwl7 CisJCWluaXQocGdfZ190aHJlYWRsb2NrLAorI2lmZGVmIEVOQUJMRV9OTFMKKwkJCSBsaWJwcV9n ZXR0ZXh0LAorI2Vsc2UKKwkJCSBOVUxMLAorI2VuZGlmCisJCQkgY29ubl9lcnJvck1lc3NhZ2Us CisJCQkgY29ubl9vYXV0aF9jbGllbnRfaWQsCisJCQkgY29ubl9vYXV0aF9jbGllbnRfc2VjcmV0 LAorCQkJIGNvbm5fb2F1dGhfZGlzY292ZXJ5X3VyaSwKKwkJCSBjb25uX29hdXRoX2lzc3Vlcl9p ZCwKKwkJCSBjb25uX29hdXRoX3Njb3BlLAorCQkJIGNvbm5fc2FzbF9zdGF0ZSwKKwkJCSBzZXRf Y29ubl9hbHRzb2NrLAorCQkJIHNldF9jb25uX29hdXRoX3Rva2VuKTsKKworCQlpbml0aWFsaXpl ZCA9IHRydWU7CisJfQorCisJcHRocmVhZF9tdXRleF91bmxvY2soJmluaXRfbXV0ZXgpOworCisJ LyogU2V0IG91ciBhc3luY2hyb25vdXMgY2FsbGJhY2tzLiAqLworCWNvbm4tPmFzeW5jX2F1dGgg PSBmbG93OworCWNvbm4tPmNsZWFudXBfYXN5bmNfYXV0aCA9IGNsZWFudXA7CisKKwlyZXR1cm4g dHJ1ZTsKK30KKworI2Vsc2UKKworLyoKKyAqIFVzZSB0aGUgYnVpbHRpbiBmbG93IGluIGxpYnBx LW9hdXRoLmEgKHNlZSBsaWJwcS1vYXV0aC9vYXV0aC1jdXJsLmgpLgorICovCisKK2V4dGVybiBQ b3N0Z3Jlc1BvbGxpbmdTdGF0dXNUeXBlIHBnX2ZlX3J1bl9vYXV0aF9mbG93KFBHY29ubiAqY29u bik7CitleHRlcm4gdm9pZCBwZ19mZV9jbGVhbnVwX29hdXRoX2Zsb3coUEdjb25uICpjb25uKTsK KworYm9vbAordXNlX2J1aWx0aW5fZmxvdyhQR2Nvbm4gKmNvbm4sIGZlX29hdXRoX3N0YXRlICpz dGF0ZSkKK3sKKwkvKiBTZXQgb3VyIGFzeW5jaHJvbm91cyBjYWxsYmFja3MuICovCisJY29ubi0+ YXN5bmNfYXV0aCA9IHBnX2ZlX3J1bl9vYXV0aF9mbG93OworCWNvbm4tPmNsZWFudXBfYXN5bmNf YXV0aCA9IHBnX2ZlX2NsZWFudXBfb2F1dGhfZmxvdzsKKworCXJldHVybiB0cnVlOworfQorCisj ZW5kaWYJCQkJCQkJLyogVVNFX0xJQkNVUkwgKi8KKworCiAvKgogICogQ2hvb3NlcyBhbiBPQXV0 aCBjbGllbnQgZmxvdyBmb3IgdGhlIGNvbm5lY3Rpb24sIHdoaWNoIHdpbGwgcmV0cmlldmUgYSBC ZWFyZXIKICAqIHRva2VuIGZvciBwcmVzZW50YXRpb24gdG8gdGhlIHNlcnZlci4KQEAgLTc5Miwx OCArMTAwOSwxMCBAQCBzZXR1cF90b2tlbl9yZXF1ZXN0KFBHY29ubiAqY29ubiwgZmVfb2F1dGhf c3RhdGUgKnN0YXRlKQogCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAidXNlci1kZWZp bmVkIE9BdXRoIGZsb3cgZmFpbGVkIik7CiAJCWdvdG8gZmFpbDsKIAl9Ci0JZWxzZQorCWVsc2Ug aWYgKCF1c2VfYnVpbHRpbl9mbG93KGNvbm4sIHN0YXRlKSkKIAl7Ci0jaWYgVVNFX0xJQkNVUkwK LQkJLyogSGFuZCBvZmYgdG8gb3VyIGJ1aWx0LWluIE9BdXRoIGZsb3cuICovCi0JCWNvbm4tPmFz eW5jX2F1dGggPSBwZ19mZV9ydW5fb2F1dGhfZmxvdzsKLQkJY29ubi0+Y2xlYW51cF9hc3luY19h dXRoID0gcGdfZmVfY2xlYW51cF9vYXV0aF9mbG93OwotCi0jZWxzZQotCQlsaWJwcV9hcHBlbmRf Y29ubl9lcnJvcihjb25uLCAibm8gY3VzdG9tIE9BdXRoIGZsb3dzIGFyZSBhdmFpbGFibGUsIGFu ZCBsaWJwcSB3YXMgbm90IGJ1aWx0IHdpdGggbGliY3VybCBzdXBwb3J0Iik7CisJCWxpYnBxX2Fw cGVuZF9jb25uX2Vycm9yKGNvbm4sICJubyBPQXV0aCBmbG93cyBhcmUgYXZhaWxhYmxlICh0cnkg aW5zdGFsbGluZyB0aGUgbGlicHEtb2F1dGggcGFja2FnZSkiKTsKIAkJZ290byBmYWlsOwotCi0j ZW5kaWYKIAl9CiAKIAlyZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xp YnBxL2ZlLWF1dGgtb2F1dGguaCBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGgu aAppbmRleCAzZjFhNzUwM2EwMS4uMGQ1OWU5MTYwNWIgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZh Y2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGguaAorKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1h dXRoLW9hdXRoLmgKQEAgLTE1LDggKzE1LDggQEAKICNpZm5kZWYgRkVfQVVUSF9PQVVUSF9ICiAj ZGVmaW5lIEZFX0FVVEhfT0FVVEhfSAogCisjaW5jbHVkZSAiZmUtYXV0aC1zYXNsLmgiCiAjaW5j bHVkZSAibGlicHEtZmUuaCIKLSNpbmNsdWRlICJsaWJwcS1pbnQuaCIKIAogCiBlbnVtIGZlX29h dXRoX3N0ZXAKQEAgLTI3LDE4ICsyNywyNCBAQCBlbnVtIGZlX29hdXRoX3N0ZXAKIAlGRV9PQVVU SF9TRVJWRVJfRVJST1IsCiB9OwogCisvKgorICogVGhpcyBzdHJ1Y3QgaXMgZXhwb3J0ZWQgdG8g dGhlIGxpYnBxLW9hdXRoIG1vZHVsZS4gSWYgY2hhbmdlcyBhcmUgbmVlZGVkCisgKiBkdXJpbmcg YmFja3BvcnRzIHRvIHN0YWJsZSBicmFuY2hlcywgcGxlYXNlIGtlZXAgQUJJIGNvbXBhdGliaWxp dHkgKG5vCisgKiBjaGFuZ2VzIHRvIGV4aXN0aW5nIG1lbWJlcnMsIGFkZCBuZXcgbWVtYmVycyBh dCB0aGUgZW5kLCBldGMuKS4KKyAqLwogdHlwZWRlZiBzdHJ1Y3QKIHsKIAllbnVtIGZlX29hdXRo X3N0ZXAgc3RlcDsKIAogCVBHY29ubgkgICAqY29ubjsKIAl2b2lkCSAgICphc3luY19jdHg7CisK Kwl2b2lkCSAgICpidWlsdGluX2Zsb3c7CiB9IGZlX29hdXRoX3N0YXRlOwogCi1leHRlcm4gUG9z dGdyZXNQb2xsaW5nU3RhdHVzVHlwZSBwZ19mZV9ydW5fb2F1dGhfZmxvdyhQR2Nvbm4gKmNvbm4p OwotZXh0ZXJuIHZvaWQgcGdfZmVfY2xlYW51cF9vYXV0aF9mbG93KFBHY29ubiAqY29ubik7CiBl eHRlcm4gdm9pZCBwcUNsZWFyT0F1dGhUb2tlbihQR2Nvbm4gKmNvbm4pOwogZXh0ZXJuIGJvb2wg b2F1dGhfdW5zYWZlX2RlYnVnZ2luZ19lbmFibGVkKHZvaWQpOworZXh0ZXJuIGJvb2wgdXNlX2J1 aWx0aW5fZmxvdyhQR2Nvbm4gKmNvbm4sIGZlX29hdXRoX3N0YXRlICpzdGF0ZSk7CiAKIC8qIE1l Y2hhbmlzbXMgaW4gZmUtYXV0aC1vYXV0aC5jICovCiBleHRlcm4gY29uc3QgcGdfZmVfc2FzbF9t ZWNoIHBnX29hdXRoX21lY2g7CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9tZXNv bi5idWlsZCBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL21lc29uLmJ1aWxkCmluZGV4IDI5MmZlY2Yz MzIwLi5hNzRlODg1YjE2OSAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvbWVzb24u YnVpbGQKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvbWVzb24uYnVpbGQKQEAgLTM4LDEwICsz OCw2IEBAIGlmIGdzc2FwaS5mb3VuZCgpCiAgICkKIGVuZGlmCiAKLWlmIGxpYmN1cmwuZm91bmQo KQotICBsaWJwcV9zb3VyY2VzICs9IGZpbGVzKCdmZS1hdXRoLW9hdXRoLWN1cmwuYycpCi1lbmRp ZgotCiBleHBvcnRfZmlsZSA9IGN1c3RvbV90YXJnZXQoJ2xpYnBxLmV4cG9ydHMnLAogICBrd2Fy Z3M6IGdlbl9leHBvcnRfa3dhcmdzLAogKQpAQCAtNTAsNiArNDYsOSBAQCBleHBvcnRfZmlsZSA9 IGN1c3RvbV90YXJnZXQoJ2xpYnBxLmV4cG9ydHMnLAogbGlicHFfaW5jID0gaW5jbHVkZV9kaXJl Y3RvcmllcygnLicsICcuLi8uLi9wb3J0JykKIGxpYnBxX2NfYXJncyA9IFsnLURTT19NQUpPUl9W RVJTSU9OPTUnXQogCisjIFRoZSBPQXV0aCBpbXBsZW1lbnRhdGlvbiBkaWZmZXJzIGRlcGVuZGlu ZyBvbiB0aGUgdHlwZSBvZiBsaWJyYXJ5IGJlaW5nIGJ1aWx0LgorbGlicHFfc29fY19hcmdzID0g WyctRFVTRV9EWU5BTUlDX09BVVRIJ10KKwogIyBOb3QgdXNpbmcgYm90aF9saWJyYXJpZXMoKSBo ZXJlIGFzCiAjIDEpIHJlc291cmNlIGZpbGVzIHNob3VsZCBvbmx5IGJlIGluIHRoZSBzaGFyZWQg bGlicmFyeQogIyAyKSB3ZSB3YW50IHRoZSAucGMgZmlsZSB0byBpbmNsdWRlIGEgZGVwZW5kZW5j eSB0byB7cGdwb3J0LGNvbW1vbn1fc3RhdGljIGZvcgpAQCAtNzAsNyArNjksNyBAQCBsaWJwcV9z dCA9IHN0YXRpY19saWJyYXJ5KCdsaWJwcScsCiBsaWJwcV9zbyA9IHNoYXJlZF9saWJyYXJ5KCds aWJwcScsCiAgIGxpYnBxX3NvdXJjZXMgKyBsaWJwcV9zb19zb3VyY2VzLAogICBpbmNsdWRlX2Rp cmVjdG9yaWVzOiBbbGlicHFfaW5jLCBwb3N0Z3Jlc19pbmNdLAotICBjX2FyZ3M6IGxpYnBxX2Nf YXJncywKKyAgY19hcmdzOiBsaWJwcV9jX2FyZ3MgKyBsaWJwcV9zb19jX2FyZ3MsCiAgIGNfcGNo OiBwY2hfcG9zdGdyZXNfZmVfaCwKICAgdmVyc2lvbjogJzUuJyArIHBnX3ZlcnNpb25fbWFqb3Iu dG9fc3RyaW5nKCksCiAgIHNvdmVyc2lvbjogaG9zdF9zeXN0ZW0gIT0gJ3dpbmRvd3MnID8gJzUn IDogJycsCkBAIC04NiwxMiArODUsMjYgQEAgbGlicHEgPSBkZWNsYXJlX2RlcGVuZGVuY3koCiAg IGluY2x1ZGVfZGlyZWN0b3JpZXM6IFtpbmNsdWRlX2RpcmVjdG9yaWVzKCcuJyldCiApCiAKK3By aXZhdGVfZGVwcyA9IFsKKyAgZnJvbnRlbmRfc3RsaWJfY29kZSwKKyAgbGlicHFfZGVwcywKK10K KworaWYgb2F1dGhfZmxvd19zdXBwb3J0ZWQKKyAgIyBsaWJwcS5zbyBkb2Vzbid0IGxpbmsgYWdh aW5zdCBsaWJjdXJsLCBidXQgbGlicHEuYSBuZWVkcyBsaWJwcS1vYXV0aCwgYW5kCisgICMgbGli cHEtb2F1dGggbmVlZHMgbGliY3VybC4gUHV0IGJvdGggaW50byAqLnByaXZhdGUuCisgIHByaXZh dGVfZGVwcyArPSBbCisgICAgbGlicHFfb2F1dGhfZGVwcywKKyAgICAnLWxwcS1vYXV0aCcsCisg IF0KK2VuZGlmCisKIHBrZ2NvbmZpZy5nZW5lcmF0ZSgKICAgbmFtZTogJ2xpYnBxJywKICAgZGVz Y3JpcHRpb246ICdQb3N0Z3JlU1FMIGxpYnBxIGxpYnJhcnknLAogICB1cmw6IHBnX3VybCwKICAg bGlicmFyaWVzOiBsaWJwcSwKLSAgbGlicmFyaWVzX3ByaXZhdGU6IFtmcm9udGVuZF9zdGxpYl9j b2RlLCBsaWJwcV9kZXBzXSwKKyAgbGlicmFyaWVzX3ByaXZhdGU6IHByaXZhdGVfZGVwcywKICkK IAogaW5zdGFsbF9oZWFkZXJzKApkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvbmxz Lm1rIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvbmxzLm1rCmluZGV4IGFlNzYxMjY1ODUyLi5iODdk ZjI3N2Q5MyAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvbmxzLm1rCisrKyBiL3Ny Yy9pbnRlcmZhY2VzL2xpYnBxL25scy5tawpAQCAtMTMsMTUgKzEzLDIxIEBAIEdFVFRFWFRfRklM RVMgICAgPSBmZS1hdXRoLmMgXAogICAgICAgICAgICAgICAgICAgIGZlLXNlY3VyZS1jb21tb24u YyBcCiAgICAgICAgICAgICAgICAgICAgZmUtc2VjdXJlLWdzc2FwaS5jIFwKICAgICAgICAgICAg ICAgICAgICBmZS1zZWN1cmUtb3BlbnNzbC5jIFwKLSAgICAgICAgICAgICAgICAgICB3aW4zMi5j Ci1HRVRURVhUX1RSSUdHRVJTID0gbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3I6MiBcCisgICAgICAg ICAgICAgICAgICAgd2luMzIuYyBcCisgICAgICAgICAgICAgICAgICAgLi4vbGlicHEtb2F1dGgv b2F1dGgtY3VybC5jIFwKKyAgICAgICAgICAgICAgICAgICAuLi9saWJwcS1vYXV0aC9vYXV0aC11 dGlscy5jCitHRVRURVhUX1RSSUdHRVJTID0gYWN0eF9lcnJvcjoyIFwKKyAgICAgICAgICAgICAg ICAgICBsaWJwcV9hcHBlbmRfY29ubl9lcnJvcjoyIFwKICAgICAgICAgICAgICAgICAgICBsaWJw cV9hcHBlbmRfZXJyb3I6MiBcCiAgICAgICAgICAgICAgICAgICAgbGlicHFfZ2V0dGV4dCBcCiAg ICAgICAgICAgICAgICAgICAgbGlicHFfbmdldHRleHQ6MSwyIFwKKyAgICAgICAgICAgICAgICAg ICBvYXV0aF9wYXJzZV9zZXRfZXJyb3I6MiBcCiAgICAgICAgICAgICAgICAgICAgcHFJbnRlcm5h bE5vdGljZToyCi1HRVRURVhUX0ZMQUdTICAgID0gbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3I6Mjpj LWZvcm1hdCBcCitHRVRURVhUX0ZMQUdTICAgID0gYWN0eF9lcnJvcjoyOmMtZm9ybWF0IFwKKyAg ICAgICAgICAgICAgICAgICBsaWJwcV9hcHBlbmRfY29ubl9lcnJvcjoyOmMtZm9ybWF0IFwKICAg ICAgICAgICAgICAgICAgICBsaWJwcV9hcHBlbmRfZXJyb3I6MjpjLWZvcm1hdCBcCiAgICAgICAg ICAgICAgICAgICAgbGlicHFfZ2V0dGV4dDoxOnBhc3MtYy1mb3JtYXQgXAogICAgICAgICAgICAg ICAgICAgIGxpYnBxX25nZXR0ZXh0OjE6cGFzcy1jLWZvcm1hdCBcCiAgICAgICAgICAgICAgICAg ICAgbGlicHFfbmdldHRleHQ6MjpwYXNzLWMtZm9ybWF0IFwKKyAgICAgICAgICAgICAgICAgICBv YXV0aF9wYXJzZV9zZXRfZXJyb3I6MjpjLWZvcm1hdCBcCiAgICAgICAgICAgICAgICAgICAgcHFJ bnRlcm5hbE5vdGljZToyOmMtZm9ybWF0CmRpZmYgLS1naXQgYS9zcmMvbWFrZWZpbGVzL21lc29u LmJ1aWxkIGIvc3JjL21ha2VmaWxlcy9tZXNvbi5idWlsZAppbmRleCA1NWRhNjc4ZWMyNy4uOTFh OGRlMWVlOWIgMTAwNjQ0Ci0tLSBhL3NyYy9tYWtlZmlsZXMvbWVzb24uYnVpbGQKKysrIGIvc3Jj L21ha2VmaWxlcy9tZXNvbi5idWlsZApAQCAtMjAzLDYgKzIwMyw4IEBAIHBneHNfZW1wdHkgPSBb CiAgICdMSUJOVU1BX0NGTEFHUycsICdMSUJOVU1BX0xJQlMnLAogCiAgICdMSUJVUklOR19DRkxB R1MnLCAnTElCVVJJTkdfTElCUycsCisKKyAgJ0xJQkNVUkxfQ1BQRkxBR1MnLCAnTElCQ1VSTF9M REZMQUdTJywgJ0xJQkNVUkxfTERMSUJTJywKIF0KIAogaWYgaG9zdF9zeXN0ZW0gPT0gJ3dpbmRv d3MnIGFuZCBjYy5nZXRfYXJndW1lbnRfc3ludGF4KCkgIT0gJ21zdmMnCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9tb2R1bGVzL29hdXRoX3ZhbGlkYXRvci9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21v ZHVsZXMvb2F1dGhfdmFsaWRhdG9yL21lc29uLmJ1aWxkCmluZGV4IDM2ZDFiMjYzNjlmLi5lMTkw ZjljZjE1YSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92YWxpZGF0b3IvbWVz b24uYnVpbGQKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92YWxpZGF0b3IvbWVzb24uYnVp bGQKQEAgLTc4LDcgKzc4LDcgQEAgdGVzdHMgKz0gewogICAgIF0sCiAgICAgJ2Vudic6IHsKICAg ICAgICdQWVRIT04nOiBweXRob24ucGF0aCgpLAotICAgICAgJ3dpdGhfbGliY3VybCc6IGxpYmN1 cmwuZm91bmQoKSA/ICd5ZXMnIDogJ25vJywKKyAgICAgICd3aXRoX2xpYmN1cmwnOiBvYXV0aF9m bG93X3N1cHBvcnRlZCA/ICd5ZXMnIDogJ25vJywKICAgICAgICd3aXRoX3B5dGhvbic6ICd5ZXMn LAogICAgIH0sCiAgIH0sCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL29hdXRoX3ZhbGlk YXRvci90LzAwMl9jbGllbnQucGwgYi9zcmMvdGVzdC9tb2R1bGVzL29hdXRoX3ZhbGlkYXRvci90 LzAwMl9jbGllbnQucGwKaW5kZXggOGRkNTAyZjQxZTEuLjIxZDRhY2MxOTI2IDEwMDY0NAotLS0g YS9zcmMvdGVzdC9tb2R1bGVzL29hdXRoX3ZhbGlkYXRvci90LzAwMl9jbGllbnQucGwKKysrIGIv c3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92YWxpZGF0b3IvdC8wMDJfY2xpZW50LnBsCkBAIC0xMTAs NyArMTEwLDcgQEAgaWYgKCRFTlZ7d2l0aF9saWJjdXJsfSBuZSAneWVzJykKIAkJImZhaWxzIHdp dGhvdXQgY3VzdG9tIGhvb2sgaW5zdGFsbGVkIiwKIAkJZmxhZ3MgPT4gWyItLW5vLWhvb2siXSwK IAkJZXhwZWN0ZWRfc3RkZXJyID0+Ci0JCSAgcXIvbm8gY3VzdG9tIE9BdXRoIGZsb3dzIGFyZSBh dmFpbGFibGUsIGFuZCBsaWJwcSB3YXMgbm90IGJ1aWx0IHdpdGggbGliY3VybCBzdXBwb3J0Lwor CQkgIHFyL25vIE9BdXRoIGZsb3dzIGFyZSBhdmFpbGFibGUgXCh0cnkgaW5zdGFsbGluZyB0aGUg bGlicHEtb2F1dGggcGFja2FnZVwpLwogCSk7CiB9CiAKLS0gCjIuMzQuMQoK --0000000000002497d70633dfa037--