Received: from malur.postgresql.org ([2a02:16a8:dc51::56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fnVBv-0002V4-DL for pgsql-hackers@arkaria.postgresql.org; Wed, 08 Aug 2018 20:36:24 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1fnVBt-0000n5-GB for pgsql-hackers@arkaria.postgresql.org; Wed, 08 Aug 2018 20:36:21 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fnVBt-0000mx-0t for pgsql-hackers@lists.postgresql.org; Wed, 08 Aug 2018 20:36:21 +0000 Received: from mail-wm0-x22c.google.com ([2a00:1450:400c:c09::22c]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1fnVBi-0001es-NW for pgsql-hackers@lists.postgresql.org; Wed, 08 Aug 2018 20:36:20 +0000 Received: by mail-wm0-x22c.google.com with SMTP id r24-v6so501510wmh.0 for ; Wed, 08 Aug 2018 13:36:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=LNw6D9FIqNo76Dv9u+jqgskRuXMuheSqG5/bnqOfbnU=; b=HbpeY4XjDhiPCipqSYSDJsOWQLyKqERWvCNkki1C432sXRYW7GS5pGB8yO3xpPaFCe +MUAaC2dVux3c/ikykBFCeOqBPKYYpD1E26OCOIZQ/uq29rD9jy4uRo+Jxp7iBV7NwKR K9Zqe0PfL6mfcZUaHjM9RjgsdvRZDgt1QNr4JYZv7cOFkR2Zry8gPHxygEY7GpCH59BN 9gME+aIi3glLdncnU++QxJ84mZr+IvHJhIvmikOhu3/guMaAqd5X+J/ju/VK7BB/JEva EixS6Fu+F/crFqHxHTiqSKPk9g/lvM9dN433DdRcTuh1rnrm1r6hJ0f1QyH+58uJJ1g8 YNOQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=LNw6D9FIqNo76Dv9u+jqgskRuXMuheSqG5/bnqOfbnU=; b=G4dqpR3EDSwzoEabT+J/vOU80nqdqICHdLn0ymImng5J3U1zfPHLLhsTctzMEC54jd jCjiu6NRnN8jxsZ4r5I8IL580MeMWbktG11N8sXL+XpHZC04AeNxr72XGbFyxSi2uPOt j+AbdMU9RP/9HTDsKu13iCIF/MpEJN4hObZtg643WNX31GDQ3/FE7f8LZmfxwgNBWcuu kxoRGEaMSt6QdtUTc1zRRpeqKXLBT9P1bVS121ZABJExiemupeO9UEiOuzFo9yIp/byi IpD22EDQd0DibUj5ih3poMb5r/sHFrxLiq/EMKfYCTAbHtMdtEnvr5erJkPE5XFsBtuE KRsQ== X-Gm-Message-State: AOUpUlHOC7K+y/DVasy3psV+SrKPHspcAeoSVzlwSNQuEooxKgavFSIe j4FRJDJO7vBlWrOC4C9TglUxqWu5nvBI6ZbqCJc0bQ== X-Google-Smtp-Source: AA+uWPyu/MPATObpGnkXSWW4PeNWVqUk5QY/mGWxB20ICuA09xtw1uyrS8p3Yl7+WHBQ+lZ5OEKj9pXbhT77GzN+LEo= X-Received: by 2002:a1c:3411:: with SMTP id b17-v6mr2729452wma.85.1533760569417; Wed, 08 Aug 2018 13:36:09 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a5d:428a:0:0:0:0:0 with HTTP; Wed, 8 Aug 2018 13:35:28 -0700 (PDT) In-Reply-To: References: <623395617.20171113141500@gf.microolap.com> <28924bcc-9242-9798-e4e8-9d83cea3fef6@dalibo.com> From: Pavel Stehule Date: Wed, 8 Aug 2018 22:35:28 +0200 Message-ID: Subject: Re: [HACKERS] proposal: schema variables To: Gilles Darold Cc: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000e949e60572f2752d" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --000000000000e949e60572f2752d Content-Type: multipart/alternative; boundary="000000000000e949e20572f2752b" --000000000000e949e20572f2752b Content-Type: text/plain; charset="UTF-8" removed forgotten file Regards Pavel --000000000000e949e20572f2752b Content-Type: text/html; charset="UTF-8"
removed forgotten file

Regards

Pavel

--000000000000e949e20572f2752b-- --000000000000e949e60572f2752d Content-Type: text/x-patch; charset="US-ASCII"; name="schema-variables-180808-02.patch" Content-Disposition: attachment; filename="schema-variables-180808-02.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_jklleobw1 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2Nh dGFsb2dzLnNnbWwKaW5kZXggM2JiNDhkNGNjZi4uMGE3YTkzMmVmNSAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwK QEAgLTM1OSw2ICszNTksMTEgQEAKICAgICAgIDxlbnRyeT48bGluayBsaW5rZW5kPSJjYXRhbG9n LXBnLXVzZXItbWFwcGluZyI+PHN0cnVjdG5hbWU+cGdfdXNlcl9tYXBwaW5nPC9zdHJ1Y3RuYW1l PjwvbGluaz48L2VudHJ5PgogICAgICAgPGVudHJ5Pm1hcHBpbmdzIG9mIHVzZXJzIHRvIGZvcmVp Z24gc2VydmVyczwvZW50cnk+CiAgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50 cnk+PGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy12YXJpYWJsZSI+PHN0cnVjdG5hbWU+cGdfdmFy aWFibGU8L3N0cnVjdG5hbWU+PC9saW5rPjwvZW50cnk+CisgICAgICA8ZW50cnk+c2NoZW1hIHZh cmlhYmxlczwvZW50cnk+CisgICAgIDwvcm93PgogICAgIDwvdGJvZHk+CiAgICA8L3Rncm91cD4K ICAgPC90YWJsZT4KQEAgLTExMjU1LDcgKzExMjYwLDYgQEAgU0VMRUNUICogRlJPTSBwZ19sb2Nr cyBwbCBMRUZUIEpPSU4gcGdfcHJlcGFyZWRfeGFjdHMgcHB4CiAKICA8L3NlY3QxPgogCi0KICA8 c2VjdDEgaWQ9InZpZXctcGctdmlld3MiPgogICA8dGl0bGU+PHN0cnVjdG5hbWU+cGdfdmlld3M8 L3N0cnVjdG5hbWU+PC90aXRsZT4KIApAQCAtMTEzMTEsNCArMTEzMTUsMTA0IEBAIFNFTEVDVCAq IEZST00gcGdfbG9ja3MgcGwgTEVGVCBKT0lOIHBnX3ByZXBhcmVkX3hhY3RzIHBweAogCiAgPC9z ZWN0MT4KIAorIDxzZWN0MSBpZD0iY2F0YWxvZy1wZy12YXJpYWJsZSI+CisgIDx0aXRsZT48c3Ry dWN0bmFtZT5wZ192YXJpYWJsZTwvc3RydWN0bmFtZT48L3RpdGxlPgorCisgIDxpbmRleHRlcm0g em9uZT0iY2F0YWxvZy1wZy12YXJpYWJsZSI+CisgICA8cHJpbWFyeT5wZ192YXJpYWJsZTwvcHJp bWFyeT4KKyAgPC9pbmRleHRlcm0+CisKKyAgPHBhcmE+CisgICBUaGUgdGFibGUgPHN0cnVjdG5h bWU+cGdfdmFyaWFibGU8L3N0cnVjdG5hbWU+IGhvbGRzIG1ldGFkYXRhCisgICBvZiBzY2hlbWEg dmFyaWFibGVzLgorICA8L3BhcmE+CisKKyAgPHRhYmxlPgorICAgPHRpdGxlPjxzdHJ1Y3RuYW1l PnBnX3ZpZXdzPC9zdHJ1Y3RuYW1lPiBDb2x1bW5zPC90aXRsZT4KKworICAgPHRncm91cCBjb2xz PSI0Ij4KKyAgICA8dGhlYWQ+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+TmFtZTwvZW50cnk+ CisgICAgICA8ZW50cnk+VHlwZTwvZW50cnk+CisgICAgICA8ZW50cnk+UmVmZXJlbmNlczwvZW50 cnk+CisgICAgICA8ZW50cnk+RGVzY3JpcHRpb248L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICA8 L3RoZWFkPgorICAgIDx0Ym9keT4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48c3RydWN0Zmll bGQ+b2lkPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorICAgICAgPGVudHJ5Pjx0eXBlPm9pZDwvdHlw ZT48L2VudHJ5PgorICAgICAgPGVudHJ5PjwvZW50cnk+CisgICAgICA8ZW50cnk+Um93IGlkZW50 aWZpZXIgKGhpZGRlbiBhdHRyaWJ1dGU7IG11c3QgYmUgZXhwbGljaXRseSBzZWxlY3RlZCk8L2Vu dHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5PjxzdHJ1Y3RmaWVs ZD52YXJuYW1lPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorICAgICAgPGVudHJ5Pjx0eXBlPm5hbWU8 L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48L2VudHJ5PgorICAgICAgPGVudHJ5Pk5hbWUg b2YgdGhlIHNjaGVtYSB2YXJpYWJsZTwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+ CisgICAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnZhcm5hbWVzcGFjZTwvc3RydWN0ZmllbGQ+PC9l bnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5vaWQ8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRy eT48bGl0ZXJhbD48bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLW5hbWVzcGFjZSI+PHN0cnVjdG5h bWU+cGdfbmFtZXNwYWNlPC9zdHJ1Y3RuYW1lPjwvbGluaz4ub2lkPC9saXRlcmFsPjwvZW50cnk+ CisgICAgICA8ZW50cnk+CisgICAgICAgVGhlIE9JRCBvZiB0aGUgbmFtZXNwYWNlIHRoYXQgY29u dGFpbnMgdGhpcyB2YXJpYWJsZQorICAgICAgPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAg PHJvdz4KKyAgICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+dmFydHlwZTwvc3RydWN0ZmllbGQ+PC9l bnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5vaWQ8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRy eT48bGl0ZXJhbD48bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLXR5cGUiPjxzdHJ1Y3RuYW1lPnBn X3R5cGU8L3N0cnVjdG5hbWU+PC9saW5rPi5vaWQ8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxl bnRyeT4KKyAgICAgICBUaGUgT0lEIG9mIHRoZSBkYXRhIHR5cGUgb2YgdGhpcyB2YXJpYWJsZS4K KyAgICAgIDwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+ PHN0cnVjdGZpZWxkPnZhcnR5cG1vZDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKyAgICAgIDxlbnRy eT48dHlwZT5pbnQ0PC90eXBlPjwvZW50cnk+CisgICAgICA8ZW50cnk+PC9lbnRyeT4KKyAgICAg IDxlbnRyeT4KKyAgICAgICA8c3RydWN0ZmllbGQ+dmFydHlwbW9kPC9zdHJ1Y3RmaWVsZD4gcmVj b3JkcyB0eXBlLXNwZWNpZmljIGRhdGEKKyAgICAgICBzdXBwbGllZCBhdCB0YWJsZSBjcmVhdGlv biB0aW1lIChmb3IgZXhhbXBsZSwgdGhlIG1heGltdW0KKyAgICAgICBsZW5ndGggb2YgYSA8dHlw ZT52YXJjaGFyPC90eXBlPiBjb2x1bW4pLiAgSXQgaXMgcGFzc2VkIHRvCisgICAgICAgdHlwZS1z cGVjaWZpYyBpbnB1dCBmdW5jdGlvbnMgYW5kIGxlbmd0aCBjb2VyY2lvbiBmdW5jdGlvbnMuCisg ICAgICAgVGhlIHZhbHVlIHdpbGwgZ2VuZXJhbGx5IGJlIC0xIGZvciB0eXBlcyB0aGF0IGRvIG5v dCBuZWVkIDxzdHJ1Y3RmaWVsZD52YXJ0eXBtb2Q8L3N0cnVjdGZpZWxkPi4KKyAgICAgIDwvZW50 cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PHN0cnVjdGZpZWxk PnZhcm93bmVyPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorICAgICAgPGVudHJ5Pjx0eXBlPm9pZDwv dHlwZT48L2VudHJ5PgorICAgICAgPGVudHJ5PjxsaXRlcmFsPjxsaW5rIGxpbmtlbmQ9ImNhdGFs b2ctcGctYXV0aGlkIj48c3RydWN0bmFtZT5wZ19hdXRoaWQ8L3N0cnVjdG5hbWU+PC9saW5rPi5v aWQ8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT5Pd25lciBvZiB0aGUgdmFyaWFibGU8 L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5PjxzdHJ1Y3Rm aWVsZD52YXJkZWZleHByPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorICAgICAgPGVudHJ5Pjx0eXBl PnBnX25vZGVfdHJlZTwvdHlwZT48L2VudHJ5PgorICAgICAgPGVudHJ5PjwvZW50cnk+CisgICAg ICA8ZW50cnk+VGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB2YXJpYWJsZSBkZWZh dWx0IHZhbHVlPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRy eT48c3RydWN0ZmllbGQ+dmFyYWNsPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorICAgICAgPGVudHJ5 Pjx0eXBlPmFjbGl0ZW1bXTwvdHlwZT48L2VudHJ5PgorICAgICAgPGVudHJ5PjwvZW50cnk+Cisg ICAgICA8ZW50cnk+CisgICAgICAgQWNjZXNzIHByaXZpbGVnZXM7IHNlZQorICAgICAgIDx4cmVm IGxpbmtlbmQ9InNxbC1ncmFudCIvPiBhbmQKKyAgICAgICA8eHJlZiBsaW5rZW5kPSJzcWwtcmV2 b2tlIi8+CisgICAgICAgZm9yIGRldGFpbHMKKyAgICAgIDwvZW50cnk+CisgICAgIDwvcm93Pgor ICAgIDwvdGJvZHk+CisgICA8L3Rncm91cD4KKyAgPC90YWJsZT4KKyA8L3NlY3QxPgorCiA8L2No YXB0ZXI+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2FsbGZpbGVzLnNnbWwgYi9kb2Mv c3JjL3NnbWwvcmVmL2FsbGZpbGVzLnNnbWwKaW5kZXggYzgxYzg3ZWY0MS4uZjVhYWY2MDIzMyAx MDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9hbGxmaWxlcy5zZ21sCisrKyBiL2RvYy9zcmMv c2dtbC9yZWYvYWxsZmlsZXMuc2dtbApAQCAtOTksNiArOTksNyBAQCBDb21wbGV0ZSBsaXN0IG9m IHVzYWJsZSBzZ21sIHNvdXJjZSBmaWxlcyBpbiB0aGlzIGRpcmVjdG9yeS4KIDwhRU5USVRZIGNy ZWF0ZVR5cGUgICAgICAgICBTWVNURU0gImNyZWF0ZV90eXBlLnNnbWwiPgogPCFFTlRJVFkgY3Jl YXRlVXNlciAgICAgICAgIFNZU1RFTSAiY3JlYXRlX3VzZXIuc2dtbCI+CiA8IUVOVElUWSBjcmVh dGVVc2VyTWFwcGluZyAgU1lTVEVNICJjcmVhdGVfdXNlcl9tYXBwaW5nLnNnbWwiPgorPCFFTlRJ VFkgY3JlYXRlVmFyaWFibGUgICAgIFNZU1RFTSAiY3JlYXRlX3ZhcmlhYmxlLnNnbWwiPgogPCFF TlRJVFkgY3JlYXRlVmlldyAgICAgICAgIFNZU1RFTSAiY3JlYXRlX3ZpZXcuc2dtbCI+CiA8IUVO VElUWSBkZWFsbG9jYXRlICAgICAgICAgU1lTVEVNICJkZWFsbG9jYXRlLnNnbWwiPgogPCFFTlRJ VFkgZGVjbGFyZSAgICAgICAgICAgIFNZU1RFTSAiZGVjbGFyZS5zZ21sIj4KQEAgLTE0OCw2ICsx NDksNyBAQCBDb21wbGV0ZSBsaXN0IG9mIHVzYWJsZSBzZ21sIHNvdXJjZSBmaWxlcyBpbiB0aGlz IGRpcmVjdG9yeS4KIDwhRU5USVRZIGRyb3BVc2VyICAgICAgICAgICBTWVNURU0gImRyb3BfdXNl ci5zZ21sIj4KIDwhRU5USVRZIGRyb3BVc2VyTWFwcGluZyAgICBTWVNURU0gImRyb3BfdXNlcl9t YXBwaW5nLnNnbWwiPgogPCFFTlRJVFkgZHJvcFZpZXcgICAgICAgICAgIFNZU1RFTSAiZHJvcF92 aWV3LnNnbWwiPgorPCFFTlRJVFkgZHJvcFZhcmlhYmxlICAgICAgIFNZU1RFTSAiZHJvcF92YXJp YWJsZS5zZ21sIj4KIDwhRU5USVRZIGVuZCAgICAgICAgICAgICAgICBTWVNURU0gImVuZC5zZ21s Ij4KIDwhRU5USVRZIGV4ZWN1dGUgICAgICAgICAgICBTWVNURU0gImV4ZWN1dGUuc2dtbCI+CiA8 IUVOVElUWSBleHBsYWluICAgICAgICAgICAgU1lTVEVNICJleHBsYWluLnNnbWwiPgpAQCAtMTU1 LDYgKzE1Nyw3IEBAIENvbXBsZXRlIGxpc3Qgb2YgdXNhYmxlIHNnbWwgc291cmNlIGZpbGVzIGlu IHRoaXMgZGlyZWN0b3J5LgogPCFFTlRJVFkgZ3JhbnQgICAgICAgICAgICAgIFNZU1RFTSAiZ3Jh bnQuc2dtbCI+CiA8IUVOVElUWSBpbXBvcnRGb3JlaWduU2NoZW1hIFNZU1RFTSAiaW1wb3J0X2Zv cmVpZ25fc2NoZW1hLnNnbWwiPgogPCFFTlRJVFkgaW5zZXJ0ICAgICAgICAgICAgIFNZU1RFTSAi aW5zZXJ0LnNnbWwiPgorPCFFTlRJVFkgbGV0ICAgICAgICAgICAgICAgIFNZU1RFTSAibGV0LnNn bWwiPgogPCFFTlRJVFkgbGlzdGVuICAgICAgICAgICAgIFNZU1RFTSAibGlzdGVuLnNnbWwiPgog PCFFTlRJVFkgbG9hZCAgICAgICAgICAgICAgIFNZU1RFTSAibG9hZC5zZ21sIj4KIDwhRU5USVRZ IGxvY2sgICAgICAgICAgICAgICBTWVNURU0gImxvY2suc2dtbCI+CmRpZmYgLS1naXQgYS9kb2Mv c3JjL3NnbWwvcmVmL2NyZWF0ZV92YXJpYWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfdmFyaWFibGUuc2dtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5j ODA3MDA1MWY1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdmFy aWFibGUuc2dtbApAQCAtMCwwICsxLDEzMyBAQAorPCEtLQorZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfdmFyaWFibGUuc2dtbAorUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCistLT4KKworPHJlZmVu dHJ5IGlkPSJzcWwtY3JlYXRldmFyaWFibGUiPgorIDxpbmRleHRlcm0gem9uZT0ic3FsLWNyZWF0 ZXZhcmlhYmxlIj4KKyAgPHByaW1hcnk+Q1JFQVRFIFZBUklBQkxFPC9wcmltYXJ5PgorIDwvaW5k ZXh0ZXJtPgorCisgPHJlZm1ldGE+CisgIDxyZWZlbnRyeXRpdGxlPkNSRUFURSBWQVJJQUJMRTwv cmVmZW50cnl0aXRsZT4KKyAgPG1hbnZvbG51bT43PC9tYW52b2xudW0+CisgIDxyZWZtaXNjaW5m bz5TUUwgLSBMYW5ndWFnZSBTdGF0ZW1lbnRzPC9yZWZtaXNjaW5mbz4KKyA8L3JlZm1ldGE+CisK KyA8cmVmbmFtZWRpdj4KKyAgPHJlZm5hbWU+Q1JFQVRFIFZBUklBQkxFPC9yZWZuYW1lPgorICA8 cmVmcHVycG9zZT5kZWZpbmUgYSBuZXcgcGVybWlzc2lvbmVkIHR5cGVkIHNjaGVtYSB2YXJpYWJs ZTwvcmVmcHVycG9zZT4KKyA8L3JlZm5hbWVkaXY+CisKKyA8cmVmc3lub3BzaXNkaXY+Cis8c3lu b3BzaXM+CitDUkVBVEUgVkFSSUFCTEUgWyBJRiBOT1QgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBbIEFTIF0gPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPmRhdGFfdHlwZTwvcmVwbGFjZWFibGU+IF0KKzwvc3lub3BzaXM+Cisg PC9yZWZzeW5vcHNpc2Rpdj4KKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0 bGU+CisKKyAgPHBhcmE+CisgICA8Y29tbWFuZD5DUkVBVEUgVkFSSUFCTEU8L2NvbW1hbmQ+IGNy ZWF0ZXMgYSBuZXcgc2NoZW1hIHZhcmlhYmxlLgorICAgVGhlc2UgdmFyaWFibGVzIGFyZSBzY2Fs YXIgdHlwZWQsIG5vbi10cmFuc2FjdGlvbmFsLCBhbmQsIGxpa2UgcmVsYXRpb25zLAorICAgZXhp c3Qgd2l0aGluIGEgc2NoZW1hIHdpdGggYWNjZXNzIGNvbnRyb2xsZWQgdmlhCisgICA8Y29tbWFu ZD5HUkFOVDwvY29tbWFuZD4gYW5kIDxjb21tYW5kPlJFVk9LRTwvY29tbWFuZD4uCisgIDwvcGFy YT4KKworICA8cGFyYT4KKyAgIFRoZSB2YWx1ZSBvZiBhIHNjaGVtYSB2YXJpYWJsZSBpcyBzZXNz aW9uLWxvY2FsLiBSZXRyaWV2aW5nCisgICBhIHZhcmlhYmxlJ3MgdmFsdWUgd2lsbCByZXR1cm4g TlVMTCB1bmxlc3MgaXRzIHZhbHVlIGhhcyBiZWVuIHNldAorICAgdG8gc29tZXRoaW5nIGVsc2Ug aW4gdGhlIGN1cnJlbnQgc2Vzc2lvbi4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgUmV0cmll dmFsIGlzIGRvbmUgdmlhIHRoZSA8ZnVuY3Rpb24+Z2V0X3NjaGVtYV92YXJpYWJsZTwvZnVuY3Rp b24+ZHVueHJpb24gb3IgdGhlIFNRTAorICAgY29tbWFuZCA8Y29tbWFuZD5TRUxFQ1Q8L2NvbW1h bmQ+LiAgU2V0dGluZyBvZiB2YWx1ZXMgaXMgZG9uZSB2aWEgdGhlCisgICA8ZnVuY3Rpb24+c2V0 X3NjaGVtYV92YXJpYWJsZTwvZnVuY3Rpb24+IGZ1bmN0aW9uIG9yIHRoZSBTUUwgY29tbWFuZAor ICAgPGNvbW1hbmQ+TEVUPC9jb21tYW5kPi4KKyAgIE5vdGFibHksIHdoaWxlIHNjaGVtYSB2YXJp YWJsZXMgYXJlIGluIG1hbnkgd2F5cyBhIGtpbmQgb2YgdGFibGUgeW91IGNhbm5vdCB1c2UKKyAg IDxjb21tYW5kPlVQREFURTwvY29tbWFuZD4gb24gdGhlbS4KKyAgPC9wYXJhPgorCisgIDxwYXJh PgorICAgRm9yIHB1cnBvc2VzIG9mIG5hbWUgdW5pcXVlbmVzcyByZWxhdGlvbi1saWtlIG9iamVj dHMgKGUuZy4sIHRhYmxlcywgaW5kZXhlcykKKyAgIHdpdGhpbiB0aGUgc2FtZSBzY2hlbWEgYXJl IGNvbnNpZGVyZWQuICBpLmUuLCB5b3UgY2Fubm90IGdpdmUgYSB0YWJsZSBhbmQgYQorICAgc2No ZW1hIHZhcmlhYmxlIHRoZSBzYW1lIG5hbWUuICBUaGlzIGlzIGEgY29uc2VxdWVuY2Ugb2YgdGhl bSBiZWluZyB0cmVhdGVkCisgICBsaWtlIHJlbGF0aW9ucyBmb3IgcHVycG9zZXMgb2YgPGNvbW1h bmQ+U0VMRUNUPC9jb21tYW5kPi4KKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2Vj dDE+CisgIDx0aXRsZT5QYXJhbWV0ZXJzPC90aXRsZT4KKworICA8dmFyaWFibGVsaXN0PgorICAg PHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5JRiBOT1QgRVhJU1RTPC9saXRlcmFs PjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgRG8gbm90IHRocm93 IGFuIGVycm9yIGlmIHRoZSBuYW1lIGFscmVhZHkgZXhpc3RzLiBBIG5vdGljZSBpcyBpc3N1ZWQg aW4gdGhpcyBjYXNlLgorICAgICAgTm90ZSB0aGF0IHR5cGUgb2YgdGhlIHZhcmlhYmxlIGlzIG5v dCBjb25zaWRlcmVkLCBub3IgY291bGQgaXQgYmUgc2luY2UgdGhlIG5hbWVzcGFjZQorICAgICAg c2VhcmNoZWQgY29udGFpbnMgbm9uLXZhcmlhYmxlIG9iamVjdHMuCisgICAgIDwvcGFyYT4KKyAg ICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+Cisg ICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxl PjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhlIG5hbWUgKG9w dGlvbmFsbHkgc2NoZW1hLXF1YWxpZmllZCkgb2YgdGhlIHZhcmlhYmxlIHRvIGJlIGNyZWF0ZWQu CisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAg IDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PmRhdGFfdHlwZTwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBh cmE+CisgICAgICBUaGUgbmFtZSAob3B0aW9uYWxseSBzY2hlbWEtcXVhbGlmaWVkKSBvZiB0aGUg ZGF0YSB0eXBlIG9mIHRoZSB2YXJpYWJsZSB0byBiZSBjcmVhdGVkLgorICAgICA8L3BhcmE+Cisg ICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorICA8L3ZhcmlhYmxlbGlzdD4KKyA8 L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+Tm90ZXM8L3RpdGxlPgorCisgIDxw YXJhPgorICAgVXNlIDxjb21tYW5kPkRST1AgVkFSSUFCTEU8L2NvbW1hbmQ+IHRvIHJlbW92ZSBh IHZhcmlhYmxlLgorICA8L3BhcmE+CisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRp dGxlPkV4YW1wbGVzPC90aXRsZT4KKworICA8cGFyYT4KKyAgIENyZWF0ZSBhbiBpbnRlZ2VyIHZh cmlhYmxlIDxsaXRlcmFsPnZhcjE8L2xpdGVyYWw+OgorPHByb2dyYW1saXN0aW5nPgorQ1JFQVRF IFZBUklBQkxFIHZhcjEgQVMgaW50ZWdlcjsKK1NFTEVDVCB2YXIxOworPC9wcm9ncmFtbGlzdGlu Zz4KKyAgPC9wYXJhPgorCisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkNv bXBhdGliaWxpdHk8L3RpdGxlPgorCisgIDxwYXJhPgorICAgPGNvbW1hbmQ+Q1JFQVRFIFZBUklB QkxFPC9jb21tYW5kPiBpcyBhIFBvc3RncmVTUUwgZmVhdHVyZS4KKyAgIDwhLS0gVGhlIGNob2lj ZSBvZiB3b3JkaW5nIGhlcmUgc2VlbXMgdG8gYmUgbGVmdCB0byBwZXJzb25hbCBwcmVmZXJlbmNl Li4uIC0tPgorICA8L3BhcmE+CisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxl PlNlZSBBbHNvPC90aXRsZT4KKworICA8c2ltcGxlbGlzdCB0eXBlPSJpbmxpbmUiPgorICAgPG1l bWJlcj48eHJlZiBsaW5rZW5kPSJzcWwtZHJvcHZhcmlhYmxlIi8+PC9tZW1iZXI+CisgIDwvc2lt cGxlbGlzdD4KKyA8L3JlZnNlY3QxPgorCis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvZG9jL3Ny Yy9zZ21sL3JlZi9kaXNjYXJkLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2Rpc2NhcmQuc2dtbApp bmRleCA2YjkwOWI3MjMyLi5kODNhZDgxMWZkIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVm L2Rpc2NhcmQuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2Rpc2NhcmQuc2dtbApAQCAtMjEs NyArMjEsNyBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KIAogIDxyZWZzeW5vcHNpc2Rpdj4K IDxzeW5vcHNpcz4KLURJU0NBUkQgeyBBTEwgfCBQTEFOUyB8IFNFUVVFTkNFUyB8IFRFTVBPUkFS WSB8IFRFTVAgfQorRElTQ0FSRCB7IEFMTCB8IFBMQU5TIHwgU0VRVUVOQ0VTIHwgVEVNUE9SQVJZ IHwgVEVNUCB8IFZBUklBQkxFUyB9CiA8L3N5bm9wc2lzPgogIDwvcmVmc3lub3BzaXNkaXY+CiAK QEAgLTc1LDYgKzc1LDE3IEBAIERJU0NBUkQgeyBBTEwgfCBQTEFOUyB8IFNFUVVFTkNFUyB8IFRF TVBPUkFSWSB8IFRFTVAgfQogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAor ICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5WQVJJQUJMRVM8L2xpdGVyYWw+ PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBSZXNldHMgdGhlIHZh bHVlIG9mIGFsbCBzY2hlbWEgdmFyaWFibGVzLiBXaGVuIHZhcmlhYmxlcworICAgICAgd2lsbCBi ZSB1c2VkIGxhdGVyLCB0aGVuIHdpbGwgYmUgaW5pdGlhbGl6ZWQgYWdhaW4gdG8KKyAgICAgIE5V TEwgb3IgZGVmYXVsdCB2YWx1ZS4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8 L3Zhcmxpc3RlbnRyeT4KKwogICAgPHZhcmxpc3RlbnRyeT4KICAgICA8dGVybT48bGl0ZXJhbD5B TEw8L2xpdGVyYWw+PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9yZWYvZHJvcF92YXJpYWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9kcm9wX3Zhcmlh YmxlLnNnbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMDYxMzBmZDUx MAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvZHJvcF92YXJpYWJsZS5zZ21s CkBAIC0wLDAgKzEsOTIgQEAKKzwhLS0KK2RvYy9zcmMvc2dtbC9yZWYvZHJvcF92YXJpYWJsZS5z Z21sCitQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KKy0tPgorCis8cmVmZW50cnkgaWQ9InNxbC1k cm9wdmFyaWFibGUiPgorIDxpbmRleHRlcm0gem9uZT0ic3FsLWRyb3B2YXJpYWJsZSI+CisgIDxw cmltYXJ5PkRST1AgVkFSSUFCTEU8L3ByaW1hcnk+CisgPC9pbmRleHRlcm0+CisKKyA8cmVmbWV0 YT4KKyAgPHJlZmVudHJ5dGl0bGU+RFJPUCBWQVJJQUJMRTwvcmVmZW50cnl0aXRsZT4KKyAgPG1h bnZvbG51bT43PC9tYW52b2xudW0+CisgIDxyZWZtaXNjaW5mbz5TUUwgLSBMYW5ndWFnZSBTdGF0 ZW1lbnRzPC9yZWZtaXNjaW5mbz4KKyA8L3JlZm1ldGE+CisKKyA8cmVmbmFtZWRpdj4KKyAgPHJl Zm5hbWU+RFJPUCBWQVJJQUJMRTwvcmVmbmFtZT4KKyAgPHJlZnB1cnBvc2U+cmVtb3ZlIGEgc2No ZW1hIHZhcmlhYmxlPC9yZWZwdXJwb3NlPgorIDwvcmVmbmFtZWRpdj4KKworIDxyZWZzeW5vcHNp c2Rpdj4KKzxzeW5vcHNpcz4KK0RST1AgVkFSSUFCTEUgWyBJRiBFWElTVFMgXSA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gWyBDQVNDQURF IHwgUkVTVFJJQ1QgXQorPC9zeW5vcHNpcz4KKyA8L3JlZnN5bm9wc2lzZGl2PgorCisgPHJlZnNl Y3QxPgorICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisgIDxwYXJhPgorICAgPGNvbW1h bmQ+RFJPUCBWQVJJQUJMRTwvY29tbWFuZD4gcmVtb3ZlcyBhIHNjaGVtYSB2YXJpYWJsZS4KKyAg IEEgdmFyaWFibGUgY2FuIG9ubHkgYmUgZHJvcHBlZCBieSBpdHMgb3duZXIgb3IgYSBzdXBlcnVz ZXIuCisgICA8IS0tIHRoaXMgd291bGQgc3VnZ2VzdCB0aGF0IHdlIG5lZWQgYW4gYWx0ZXIgdmFy aWFibGUgb3duZXIgdG8gY29tbWFuZCAtLT4KKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8 cmVmc2VjdDE+CisgIDx0aXRsZT5QYXJhbWV0ZXJzPC90aXRsZT4KKworICA8dmFyaWFibGVsaXN0 PgorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5JRiBFWElTVFM8L2xpdGVy YWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBEbyBub3QgdGhy b3cgYW4gZXJyb3IgaWYgdGhlIHZhcmlhYmxlIGRvZXMgbm90IGV4aXN0LiBBIG5vdGljZSBpcyBp c3N1ZWQKKyAgICAgIGluIHRoaXMgY2FzZS4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+ CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAg IDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgbmFtZSAob3B0aW9uYWxseSBzY2hl bWEtcXVhbGlmaWVkKSBvZiBhIHNjaGVtYSB2YXJpYWJsZS4KKyAgICAgPC9wYXJhPgorICAgIDwv bGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKyAgPC92YXJpYWJsZWxpc3Q+CisgPC9yZWZz ZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkV4YW1wbGVzPC90aXRsZT4KKworICA8cGFy YT4KKyAgIFRvIHJlbW92ZSB0aGUgc2NoZW1hIHZhcmlhYmxlIDxsaXRlcmFsPnZhcjE8L2xpdGVy YWw+OgorCis8cHJvZ3JhbWxpc3Rpbmc+CitEUk9QIFZBUklBQkxFIHZhcjE7Cis8L3Byb2dyYW1s aXN0aW5nPjwvcGFyYT4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+Q29t cGF0aWJpbGl0eTwvdGl0bGU+CisKKyAgPHBhcmE+CisgICA8Y29tbWFuZD5EUk9QIFZBUklBQkxF PC9jb21tYW5kPiBpcyBwcm9wcmlldGFyeSBQb3N0Z3JlU1FMIGNvbW1hbmQuCisgICA8IS0tIGNy ZWF0ZSB2YXJpYWJsZSBpcyBhICJQb3N0Z3JlU1FMIGZlYXR1cmUiLAorICAgICAgICB0aGlzIGlz IGEgInByb3ByaWV0YXJ5IFBvc3RncmVTUUwgY29tbWFuZCIgLi4uIC0tPgorICA8L3BhcmE+Cisg PC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPlNlZSBBbHNvPC90aXRsZT4KKwor ICA8c2ltcGxlbGlzdCB0eXBlPSJpbmxpbmUiPgorICAgPG1lbWJlcj48eHJlZiBsaW5rZW5kPSJz cWwtY3JlYXRldmFyaWFibGUiLz48L21lbWJlcj4KKyAgPC9zaW1wbGVsaXN0PgorIDwvcmVmc2Vj dDE+CisKKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2dyYW50LnNn bWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2dyYW50LnNnbWwKaW5kZXggZmY2NGM3YTNiYS4uYTgzOTIw YTdhMSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9ncmFudC5zZ21sCisrKyBiL2RvYy9z cmMvc2dtbC9yZWYvZ3JhbnQuc2dtbApAQCAtNzksNiArNzksMTAgQEAgR1JBTlQgeyBVU0FHRSB8 IEFMTCBbIFBSSVZJTEVHRVMgXSB9CiAgICAgT04gVFlQRSA8cmVwbGFjZWFibGU+dHlwZV9uYW1l PC9yZXBsYWNlYWJsZT4gWywgLi4uXQogICAgIFRPIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5yb2xlX3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5dIFsgV0lUSCBHUkFO VCBPUFRJT04gXQogCitHUkFOVCB7IFJFQUQgfCBXUklURSB8IEFMTCBbIFBSSVZJTEVHRVMgXSB9 CisgICAgT04gVkFSSUFCTEUgPHJlcGxhY2VhYmxlPnZhcmlhYmxlX25hbWU8L3JlcGxhY2VhYmxl PiBbLCAuLi5dCisgICAgVE8gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfc3Bl Y2lmaWNhdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0gWyBXSVRIIEdSQU5UIE9QVElPTiBdCisK IDxwaHJhc2U+d2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfc3BlY2lm aWNhdGlvbjwvcmVwbGFjZWFibGU+IGNhbiBiZTo8L3BocmFzZT4KIAogICAgIFsgR1JPVVAgXSA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cm9sZV9uYW1lPC9yZXBsYWNlYWJsZT4KQEAg LTE2Nyw2ICsxNzEsNyBAQCBHUkFOVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cm9s ZV9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBUTyA8cmVwbGFjZQogICAgZm9yZWlnbiBzZXJ2 ZXJzLAogICAgbGFyZ2Ugb2JqZWN0cywKICAgIHNjaGVtYXMsCisgICBzY2hlbWEgdmFyaWFibGUK ICAgIG9yIHRhYmxlc3BhY2VzLgogICAgRm9yIG90aGVyIHR5cGVzIG9mIG9iamVjdHMsIHRoZSBk ZWZhdWx0IHByaXZpbGVnZXMKICAgIGdyYW50ZWQgdG8gPGxpdGVyYWw+UFVCTElDPC9saXRlcmFs PiBhcmUgYXMgZm9sbG93czoKQEAgLTM4NSw2ICszOTAsMjQgQEAgR1JBTlQgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gVE8gPHJl cGxhY2UKICAgICAgPC9saXN0aXRlbT4KICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgIDx2YXJs aXN0ZW50cnk+CisgICAgIDx0ZXJtPjxsaXRlcmFsPlJFQUQ8L2xpdGVyYWw+PC90ZXJtPgorICAg ICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICBBbGxvd3MgdG8gcmVhZCBhIHNjaGVt YSB2YXJpYWJsZS4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICA8L3Zhcmxp c3RlbnRyeT4KKworICAgIDx2YXJsaXN0ZW50cnk+CisgICAgIDx0ZXJtPjxsaXRlcmFsPldSSVRF PC9saXRlcmFsPjwvdGVybT4KKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAg QWxsb3dzIHRvIHNldCBhIHNjaGVtYSB2YXJpYWJsZS4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9s aXN0aXRlbT4KKyAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgIDx2YXJsaXN0ZW50cnk+CiAgICAg IDx0ZXJtPjxsaXRlcmFsPkFMTCBQUklWSUxFR0VTPC9saXRlcmFsPjwvdGVybT4KICAgICAgPGxp c3RpdGVtPgpAQCAtNTUwLDYgKzU3Myw4IEBAIHJvbGVuYW1lPXh4eHggLS0gcHJpdmlsZWdlcyBn cmFudGVkIHRvIGEgcm9sZQogICAgICAgICAgICAgQyAtLSBDUkVBVEUKICAgICAgICAgICAgIGMg LS0gQ09OTkVDVAogICAgICAgICAgICAgVCAtLSBURU1QT1JBUlkKKyAgICAgICAgICAgIFMgLS0g UkVBRAorICAgICAgICAgICAgdyAtLSBXUklURQogICAgICAgYXJ3ZER4dCAtLSBBTEwgUFJJVklM RUdFUyAoZm9yIHRhYmxlcywgdmFyaWVzIGZvciBvdGhlciBvYmplY3RzKQogICAgICAgICAgICAg KiAtLSBncmFudCBvcHRpb24gZm9yIHByZWNlZGluZyBwcml2aWxlZ2UKIApkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL3JlZi9sZXQuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvbGV0LnNnbWwKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZThiZjNmNmRkNAotLS0gL2Rldi9u dWxsCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvbGV0LnNnbWwKQEAgLTAsMCArMSw5MCBAQAorPCEt LQorZG9jL3NyYy9zZ21sL3JlZi9sZXQuc2dtbAorUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCist LT4KKworPHJlZmVudHJ5IGlkPSJzcWwtbGV0Ij4KKyA8aW5kZXh0ZXJtIHpvbmU9InNxbC1sZXQi PgorICA8cHJpbWFyeT5MRVQ8L3ByaW1hcnk+CisgPC9pbmRleHRlcm0+CisKKyA8cmVmbWV0YT4K KyAgPHJlZmVudHJ5dGl0bGU+TEVUPC9yZWZlbnRyeXRpdGxlPgorICA8bWFudm9sbnVtPjc8L21h bnZvbG51bT4KKyAgPHJlZm1pc2NpbmZvPlNRTCAtIExhbmd1YWdlIFN0YXRlbWVudHM8L3JlZm1p c2NpbmZvPgorIDwvcmVmbWV0YT4KKworIDxyZWZuYW1lZGl2PgorICA8cmVmbmFtZT5MRVQ8L3Jl Zm5hbWU+CisgIDxyZWZwdXJwb3NlPmNoYW5nZSBhIHNjaGVtYSB2YXJpYWJsZSdzIHZhbHVlPC9y ZWZwdXJwb3NlPgorIDwvcmVmbmFtZWRpdj4KKworIDxyZWZzeW5vcHNpc2Rpdj4KKzxzeW5vcHNp cz4KK0xFVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c2NoZW1hX3ZhcmlhYmxlPC9y ZXBsYWNlYWJsZT4gPSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3FsX2V4cHJlc3Np b248L3JlcGxhY2VhYmxlPgorPC9zeW5vcHNpcz4KKyA8L3JlZnN5bm9wc2lzZGl2PgorCisgPHJl ZnNlY3QxPgorICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisgIDxwYXJhPgorICAgVGhl IDxjb21tYW5kPkxFVDwvY29tbWFuZD4gY29tbWFuZCB1cGRhdGVzIHRoZSBzcGVjaWZpZWQgc2No ZW1hIHZhcmlhYmxlJyB2YWx1ZS4KKyAgPC9wYXJhPgorCisgPC9yZWZzZWN0MT4KKworIDxyZWZz ZWN0MT4KKyAgPHRpdGxlPlBhcmFtZXRlcnM8L3RpdGxlPgorCisgIDx2YXJpYWJsZWxpc3Q+Cisg ICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRlcmFsPnNjaGVtYV92YXJpYWJsZTwvbGl0 ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSBuYW1l IG9mIHNjaGVtYSB2YXJpYWJsZS4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8 L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5z cWwgZXhwcmVzc2lvbjwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFy YT4KKyAgICAgIEFuIFNRTCBleHByZXNzaW9uLCB0aGUgcmVzdWx0IGlzIGNhc3QgdG8gdGhlIHNj aGVtYSB2YXJpYWJsZSdzIHR5cGUuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAg PC92YXJsaXN0ZW50cnk+CisgIDwvdmFyaWFibGVsaXN0PgorCisgIDxwYXJhPgorICAgRXhhbXBs ZToKKzxwcm9ncmFtbGlzdGluZz4KK0NSRUFURSBWQVJJQUJMRSBteXZhciBBUyBpbnRlZ2VyOwor TEVUIG15dmFyID0gMTA7CitMRVQgbXl2YXIgPSAoU0VMRUNUIHN1bSh2YWwpIEZST00gdGFiKTsK KzwvcHJvZ3JhbWxpc3Rpbmc+CisgIDwvcGFyYT4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3Qx PgorICA8dGl0bGU+Q29tcGF0aWJpbGl0eTwvdGl0bGU+CisKKyAgPHBhcmE+CisgICA8IS0tIHRo aXMgZmVlbHMgbGlrZSBpdCBuZWVkcyB0byBiZSBtb3JlIHNwZWNpZmljLAorICAgICAgICBidXQg SSBkb24ndCBrbm93IGVub3VnaCB0byBtYWtlIGl0IHNvIC0tPgorICAgPGxpdGVyYWw+TEVUPC9s aXRlcmFsPiBleHRlbmRzIHN5bnRheCBkZWZpbmVkIGluIHRoZSBTUUwKKyAgIHN0YW5kYXJkLiBU aGUgc3RhbmRhcmQga25vd3MgPGxpdGVyYWw+U0VUPC9saXRlcmFsPiBjb21tYW5kLAorICAgdGhh dCBpcyB1c2VkIGZvciBkaWZmZXJlbnQgcHVycG91c2UgaW4gUG9zdGdyZVNRTC4KKyAgPC9wYXJh PgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5TZWUgQWxzbzwvdGl0bGU+ CisKKyAgPHNpbXBsZWxpc3QgdHlwZT0iaW5saW5lIj4KKyAgIDxtZW1iZXI+PHhyZWYgbGlua2Vu ZD0ic3FsLWNyZWF0ZXZhcmlhYmxlIi8+PC9tZW1iZXI+CisgICA8bWVtYmVyPjx4cmVmIGxpbmtl bmQ9InNxbC1kcm9wdmFyaWFibGUiLz48L21lbWJlcj4KKyAgPC9zaW1wbGVsaXN0PgorIDwvcmVm c2VjdDE+Cis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9yZXZva2Uu c2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcmV2b2tlLnNnbWwKaW5kZXggNTMxN2Y4Y2NiYS4uODQz NWUwNTk1NyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9yZXZva2Uuc2dtbAorKysgYi9k b2Mvc3JjL3NnbWwvcmVmL3Jldm9rZS5zZ21sCkBAIC0xMDgsNiArMTA4LDEyIEBAIFJFVk9LRSBb IEdSQU5UIE9QVElPTiBGT1IgXQogUkVWT0tFIFsgQURNSU4gT1BUSU9OIEZPUiBdCiAgICAgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4u Ll0gRlJPTSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cm9sZV9uYW1lPC9yZXBsYWNl YWJsZT4gWywgLi4uXQogICAgIFsgQ0FTQ0FERSB8IFJFU1RSSUNUIF0KKworUkVWT0tFIFsgR1JB TlQgT1BUSU9OIEZPUiBdCisgICAgeyB7IFJFQUQgfCBXUklURSB9IFssIC4uLl0gfCBBTEwgWyBQ UklWSUxFR0VTIF0gfQorICAgIE9OIFZBUklBQkxFIDxyZXBsYWNlYWJsZT52YXJpYWJsZV9uYW1l PC9yZXBsYWNlYWJsZT4gWywgLi4uXQorICAgIEZST00geyBbIEdST1VQIF0gPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfbmFtZTwvcmVwbGFjZWFibGU+IHwgUFVCTElDIH0gWywg Li4uXQorICAgIFsgQ0FTQ0FERSB8IFJFU1RSSUNUIF0KIDwvc3lub3BzaXM+CiAgPC9yZWZzeW5v cHNpc2Rpdj4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21sIGIvZG9j L3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21sCmluZGV4IGRiNGY0MTY3ZTMuLmFmY2M2OTQzMmQgMTAw NjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWZlcmVuY2Uuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv cmVmZXJlbmNlLnNnbWwKQEAgLTEyNyw2ICsxMjcsNyBAQAogICAgJmNyZWF0ZVR5cGU7CiAgICAm Y3JlYXRlVXNlcjsKICAgICZjcmVhdGVVc2VyTWFwcGluZzsKKyAgICZjcmVhdGVWYXJpYWJsZTsK ICAgICZjcmVhdGVWaWV3OwogICAgJmRlYWxsb2NhdGU7CiAgICAmZGVjbGFyZTsKQEAgLTE3NSw2 ICsxNzYsNyBAQAogICAgJmRyb3BUeXBlOwogICAgJmRyb3BVc2VyOwogICAgJmRyb3BVc2VyTWFw cGluZzsKKyAgICZkcm9wVmFyaWFibGU7CiAgICAmZHJvcFZpZXc7CiAgICAmZW5kOwogICAgJmV4 ZWN1dGU7CkBAIC0xODMsNiArMTg1LDcgQEAKICAgICZncmFudDsKICAgICZpbXBvcnRGb3JlaWdu U2NoZW1hOwogICAgJmluc2VydDsKKyAgICZsZXQ7CiAgICAmbGlzdGVuOwogICAgJmxvYWQ7CiAg ICAmbG9jazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvTWFrZWZpbGUgYi9zcmMv YmFja2VuZC9jYXRhbG9nL01ha2VmaWxlCmluZGV4IDA4NjUyNDBmMTEuLjFmN2M0ZDEyMjMgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy9NYWtlZmlsZQpAQCAtMTksNyArMTksNyBAQCBPQkpTID0gY2F0YWxvZy5vIGRlcGVu ZGVuY3kubyBoZWFwLm8gaW5kZXgubyBpbmRleGluZy5vIG5hbWVzcGFjZS5vIGFjbGNoay5vIFwK ICAgICAgICBwZ19kZXBlbmQubyBwZ19lbnVtLm8gcGdfaW5oZXJpdHMubyBwZ19sYXJnZW9iamVj dC5vIHBnX25hbWVzcGFjZS5vIFwKICAgICAgICBwZ19vcGVyYXRvci5vIHBnX3Byb2MubyBwZ19w dWJsaWNhdGlvbi5vIHBnX3JhbmdlLm8gXAogCSAgIHBnX2RiX3JvbGVfc2V0dGluZy5vIHBnX3No ZGVwZW5kLm8gcGdfc3Vic2NyaXB0aW9uLm8gcGdfdHlwZS5vIFwKLQkgICBzdG9yYWdlLm8gdG9h c3RpbmcubworCSAgIHBnX3ZhcmlhYmxlLm8gc3RvcmFnZS5vIHRvYXN0aW5nLm8KIAogQktJRklM RVMgPSBwb3N0Z3Jlcy5ia2kgcG9zdGdyZXMuZGVzY3JpcHRpb24gcG9zdGdyZXMuc2hkZXNjcmlw dGlvbgogCkBAIC00Niw3ICs0Niw3IEBAIENBVEFMT0dfSEVBREVSUyA6PSBcCiAJcGdfZGVmYXVs dF9hY2wuaCBwZ19pbml0X3ByaXZzLmggcGdfc2VjbGFiZWwuaCBwZ19zaHNlY2xhYmVsLmggXAog CXBnX2NvbGxhdGlvbi5oIHBnX3BhcnRpdGlvbmVkX3RhYmxlLmggcGdfcmFuZ2UuaCBwZ190cmFu c2Zvcm0uaCBcCiAJcGdfc2VxdWVuY2UuaCBwZ19wdWJsaWNhdGlvbi5oIHBnX3B1YmxpY2F0aW9u X3JlbC5oIHBnX3N1YnNjcmlwdGlvbi5oIFwKLQlwZ19zdWJzY3JpcHRpb25fcmVsLmgKKwlwZ19z dWJzY3JpcHRpb25fcmVsLmggcGdfdmFyaWFibGUuaAogCiBHRU5FUkFURURfSEVBREVSUyA6PSAk KENBVEFMT0dfSEVBREVSUzolLmg9JV9kLmgpIHNjaGVtYXBnLmgKIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY2F0YWxvZy9hY2xjaGsuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMK aW5kZXggNTc4ZTRjNjU5Mi4uODY5MTdlMTVhOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9hY2xjaGsuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2FjbGNoay5jCkBAIC01Nyw2 ICs1Nyw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190c19wYXJzZXIuaCIKICNpbmNsdWRlICJj YXRhbG9nL3BnX3RzX3RlbXBsYXRlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190cmFuc2Zvcm0u aCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMv ZGJjb21tYW5kcy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2V2ZW50X3RyaWdnZXIuaCIKICNpbmNs dWRlICJjb21tYW5kcy9leHRlbnNpb24uaCIKQEAgLTExMiw2ICsxMTMsNyBAQCBzdGF0aWMgdm9p ZCBFeGVjR3JhbnRfTGFyZ2VvYmplY3QoSW50ZXJuYWxHcmFudCAqZ3JhbnRTdG10KTsKIHN0YXRp YyB2b2lkIEV4ZWNHcmFudF9OYW1lc3BhY2UoSW50ZXJuYWxHcmFudCAqZ3JhbnRTdG10KTsKIHN0 YXRpYyB2b2lkIEV4ZWNHcmFudF9UYWJsZXNwYWNlKEludGVybmFsR3JhbnQgKmdyYW50U3RtdCk7 CiBzdGF0aWMgdm9pZCBFeGVjR3JhbnRfVHlwZShJbnRlcm5hbEdyYW50ICpncmFudFN0bXQpOwor c3RhdGljIHZvaWQgRXhlY0dyYW50X1ZhcmlhYmxlKEludGVybmFsR3JhbnQgKmdyYW50U3RtdCk7 CiAKIHN0YXRpYyB2b2lkIFNldERlZmF1bHRBQ0xzSW5TY2hlbWFzKEludGVybmFsRGVmYXVsdEFD TCAqaWFjbHMsIExpc3QgKm5zcG5hbWVzKTsKIHN0YXRpYyB2b2lkIFNldERlZmF1bHRBQ0woSW50 ZXJuYWxEZWZhdWx0QUNMICppYWNscyk7CkBAIC0yODQsNiArMjg2LDkgQEAgcmVzdHJpY3RfYW5k X2NoZWNrX2dyYW50KGJvb2wgaXNfZ3JhbnQsIEFjbE1vZGUgYXZhaWxfZ29wdGlvbnMsIGJvb2wg YWxsX3ByaXZzLAogCQljYXNlIE9CSkVDVF9UWVBFOgogCQkJd2hvbGVfbWFzayA9IEFDTF9BTExf UklHSFRTX1RZUEU7CiAJCQlicmVhazsKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQl3aG9s ZV9tYXNrID0gQUNMX0FMTF9SSUdIVFNfVkFSSUFCTEU7CisJCQlicmVhazsKIAkJZGVmYXVsdDoK IAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgb2JqZWN0IHR5cGU6ICVkIiwgb2JqdHlwZSk7 CiAJCQkvKiBub3QgcmVhY2hlZCwgYnV0IGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KQEAgLTUwNyw2 ICs1MTIsMTAgQEAgRXhlY3V0ZUdyYW50U3RtdChHcmFudFN0bXQgKnN0bXQpCiAJCQlhbGxfcHJp dmlsZWdlcyA9IEFDTF9BTExfUklHSFRTX0ZPUkVJR05fU0VSVkVSOwogCQkJZXJyb3Jtc2cgPSBn ZXR0ZXh0X25vb3AoImludmFsaWQgcHJpdmlsZWdlIHR5cGUgJXMgZm9yIGZvcmVpZ24gc2VydmVy Iik7CiAJCQlicmVhazsKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQlhbGxfcHJpdmlsZWdl cyA9IEFDTF9BTExfUklHSFRTX1ZBUklBQkxFOworCQkJZXJyb3Jtc2cgPSBnZXR0ZXh0X25vb3Ao ImludmFsaWQgcHJpdmlsZWdlIHR5cGUgJXMgZm9yIHNjaGVtYSB2YXJpYWJsZSIpOworCQkJYnJl YWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIEdyYW50U3RtdC5v Ymp0eXBlOiAlZCIsCiAJCQkJIChpbnQpIHN0bXQtPm9ianR5cGUpOwpAQCAtNjA5LDYgKzYxOCw5 IEBAIEV4ZWNHcmFudFN0bXRfb2lkcyhJbnRlcm5hbEdyYW50ICppc3RtdCkKIAkJY2FzZSBPQkpF Q1RfVEFCTEVTUEFDRToKIAkJCUV4ZWNHcmFudF9UYWJsZXNwYWNlKGlzdG10KTsKIAkJCWJyZWFr OworCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCUV4ZWNHcmFudF9WYXJpYWJsZShpc3RtdCk7 CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgR3Jh bnRTdG10Lm9ianR5cGU6ICVkIiwKIAkJCQkgKGludCkgaXN0bXQtPm9ianR5cGUpOwpAQCAtNzY4 LDYgKzc4MCwxNiBAQCBvYmplY3ROYW1lc1RvT2lkcyhPYmplY3RUeXBlIG9ianR5cGUsIExpc3Qg Km9iam5hbWVzKQogCQkJCW9iamVjdHMgPSBsYXBwZW5kX29pZChvYmplY3RzLCBzcnZpZCk7CiAJ CQl9CiAJCQlicmVhazsKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQlmb3JlYWNoKGNlbGws IG9iam5hbWVzKQorCQkJeworCQkJCVJhbmdlVmFyICAgKnZhcnZhciA9IChSYW5nZVZhciAqKSBs Zmlyc3QoY2VsbCk7CisJCQkJT2lkCQkJcmVsT2lkOworCisJCQkJcmVsT2lkID0gbG9va3VwX3Zh cmlhYmxlKHZhcnZhci0+c2NoZW1hbmFtZSwgdmFydmFyLT5yZWxuYW1lLCBmYWxzZSk7CisJCQkJ b2JqZWN0cyA9IGxhcHBlbmRfb2lkKG9iamVjdHMsIHJlbE9pZCk7CisJCQl9CisJCQlicmVhazsK IAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgR3JhbnRTdG10Lm9ianR5 cGU6ICVkIiwKIAkJCQkgKGludCkgb2JqdHlwZSk7CkBAIC04NTUsNiArODc3LDMxIEBAIG9iamVj dHNJblNjaGVtYVRvT2lkcyhPYmplY3RUeXBlIG9ianR5cGUsIExpc3QgKm5zcG5hbWVzKQogCQkJ CQloZWFwX2Nsb3NlKHJlbCwgQWNjZXNzU2hhcmVMb2NrKTsKIAkJCQl9CiAJCQkJYnJlYWs7CisJ CQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCQl7CisJCQkJCVNjYW5LZXlEYXRhIGtleTsKKwkJ CQkJUmVsYXRpb24JcmVsOworCQkJCQlIZWFwU2NhbkRlc2Mgc2NhbjsKKwkJCQkJSGVhcFR1cGxl CXR1cGxlOworCisJCQkJCVNjYW5LZXlJbml0KCZrZXksCisJCQkJCQkJCUFudW1fcGdfdmFyaWFi bGVfdmFybmFtZXNwYWNlLAorCQkJCQkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEs CisJCQkJCQkJCU9iamVjdElkR2V0RGF0dW0obmFtZXNwYWNlSWQpKTsKKworCQkJCQlyZWwgPSBo ZWFwX29wZW4oVmFyaWFibGVSZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOworCQkJCQlzY2Fu ID0gaGVhcF9iZWdpbnNjYW5fY2F0YWxvZyhyZWwsIDEsICZrZXkpOworCisJCQkJCXdoaWxlICgo dHVwbGUgPSBoZWFwX2dldG5leHQoc2NhbiwgRm9yd2FyZFNjYW5EaXJlY3Rpb24pKSAhPSBOVUxM KQorCQkJCQl7CisJCQkJCQlvYmplY3RzID0gbGFwcGVuZF9vaWQob2JqZWN0cywgSGVhcFR1cGxl R2V0T2lkKHR1cGxlKSk7CisJCQkJCX0KKworCQkJCQloZWFwX2VuZHNjYW4oc2Nhbik7CisJCQkJ CWhlYXBfY2xvc2UocmVsLCBBY2Nlc3NTaGFyZUxvY2spOworCQkJCX0KKwkJCQlicmVhazsKKwog CQkJZGVmYXVsdDoKIAkJCQkvKiBzaG91bGQgbm90IGhhcHBlbiAqLwogCQkJCWVsb2coRVJST1Is ICJ1bnJlY29nbml6ZWQgR3JhbnRTdG10Lm9ianR5cGU6ICVkIiwKQEAgLTEwMTgsNiArMTA2NSwx MCBAQCBFeGVjQWx0ZXJEZWZhdWx0UHJpdmlsZWdlc1N0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBB bHRlckRlZmF1bHRQcml2aWxlZ2VzU3RtdCAqcwogCQkJYWxsX3ByaXZpbGVnZXMgPSBBQ0xfQUxM X1JJR0hUU19TQ0hFTUE7CiAJCQllcnJvcm1zZyA9IGdldHRleHRfbm9vcCgiaW52YWxpZCBwcml2 aWxlZ2UgdHlwZSAlcyBmb3Igc2NoZW1hIik7CiAJCQlicmVhazsKKwkJY2FzZSBPQkpFQ1RfVkFS SUFCTEU6CisJCQlhbGxfcHJpdmlsZWdlcyA9IEFDTF9BTExfUklHSFRTX1ZBUklBQkxFOworCQkJ ZXJyb3Jtc2cgPSBnZXR0ZXh0X25vb3AoImludmFsaWQgcHJpdmlsZWdlIHR5cGUgJXMgZm9yIHNj aGVtYSB2YXJpYWJsZSIpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAi dW5yZWNvZ25pemVkIEdyYW50U3RtdC5vYmp0eXBlOiAlZCIsCiAJCQkJIChpbnQpIGFjdGlvbi0+ b2JqdHlwZSk7CkBAIC0xMjE1LDYgKzEyNjYsMTIgQEAgU2V0RGVmYXVsdEFDTChJbnRlcm5hbERl ZmF1bHRBQ0wgKmlhY2xzKQogCQkJCXRoaXNfcHJpdmlsZWdlcyA9IEFDTF9BTExfUklHSFRTX1ND SEVNQTsKIAkJCWJyZWFrOwogCisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJb2JqdHlwZSA9 IERFRkFDTE9CSl9WQVJJQUJMRTsKKwkJCWlmIChpYWNscy0+YWxsX3ByaXZzICYmIHRoaXNfcHJp dmlsZWdlcyA9PSBBQ0xfTk9fUklHSFRTKQorCQkJCXRoaXNfcHJpdmlsZWdlcyA9IEFDTF9BTExf UklHSFRTX1ZBUklBQkxFOworCQkJYnJlYWs7CisKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1Is ICJ1bnJlY29nbml6ZWQgb2JqdHlwZTogJWQiLAogCQkJCSAoaW50KSBpYWNscy0+b2JqdHlwZSk7 CkBAIC0xNDQxLDYgKzE0OTgsOSBAQCBSZW1vdmVSb2xlRnJvbU9iamVjdEFDTChPaWQgcm9sZWlk LCBPaWQgY2xhc3NpZCwgT2lkIG9iamlkKQogCQkJY2FzZSBERUZBQ0xPQkpfTkFNRVNQQUNFOgog CQkJCWlhY2xzLm9ianR5cGUgPSBPQkpFQ1RfU0NIRU1BOwogCQkJCWJyZWFrOworCQkJY2FzZSBE RUZBQ0xPQkpfVkFSSUFCTEU6CisJCQkJaWFjbHMub2JqdHlwZSA9IE9CSkVDVF9WQVJJQUJMRTsK KwkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJLyogU2hvdWxkbid0IGdldCBoZXJlICovCiAJ CQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgZGVmYXVsdCBBQ0wgdHlwZTogJWQiLApAQCAtMzI2 Niw2ICszMzI2LDEyOSBAQCBFeGVjR3JhbnRfVHlwZShJbnRlcm5hbEdyYW50ICppc3RtdCkKIAlo ZWFwX2Nsb3NlKHJlbGF0aW9uLCBSb3dFeGNsdXNpdmVMb2NrKTsKIH0KIAorc3RhdGljIHZvaWQK K0V4ZWNHcmFudF9WYXJpYWJsZShJbnRlcm5hbEdyYW50ICppc3RtdCkKK3sKKwlSZWxhdGlvbgly ZWxhdGlvbjsKKwlMaXN0Q2VsbCAgICpjZWxsOworCisJaWYgKGlzdG10LT5hbGxfcHJpdnMgJiYg aXN0bXQtPnByaXZpbGVnZXMgPT0gQUNMX05PX1JJR0hUUykKKwkJaXN0bXQtPnByaXZpbGVnZXMg PSBBQ0xfQUxMX1JJR0hUU19WQVJJQUJMRTsKKworCXJlbGF0aW9uID0gaGVhcF9vcGVuKFZhcmlh YmxlUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwlmb3JlYWNoKGNlbGwsIGlzdG10 LT5vYmplY3RzKQorCXsKKwkJT2lkCQkJdmFySWQgPSBsZmlyc3Rfb2lkKGNlbGwpOworCQlGb3Jt X3BnX3ZhcmlhYmxlIHBnX3ZhcmlhYmxlX3R1cGxlOworCQlEYXR1bQkJYWNsRGF0dW07CisJCWJv b2wJCWlzTnVsbDsKKwkJQWNsTW9kZQkJYXZhaWxfZ29wdGlvbnM7CisJCUFjbE1vZGUJCXRoaXNf cHJpdmlsZWdlczsKKwkJQWNsCQkgICAqb2xkX2FjbDsKKwkJQWNsCQkgICAqbmV3X2FjbDsKKwkJ T2lkCQkJZ3JhbnRvcklkOworCQlPaWQJCQlvd25lcklkOworCQlIZWFwVHVwbGUJdHVwbGU7CisJ CUhlYXBUdXBsZQluZXd0dXBsZTsKKwkJRGF0dW0JCXZhbHVlc1tOYXR0c19wZ192YXJpYWJsZV07 CisJCWJvb2wJCW51bGxzW05hdHRzX3BnX3ZhcmlhYmxlXTsKKwkJYm9vbAkJcmVwbGFjZXNbTmF0 dHNfcGdfdmFyaWFibGVdOworCQlpbnQJCQlub2xkbWVtYmVyczsKKwkJaW50CQkJbm5ld21lbWJl cnM7CisJCU9pZAkJICAgKm9sZG1lbWJlcnM7CisJCU9pZAkJICAgKm5ld21lbWJlcnM7CisKKwkJ dHVwbGUgPSBTZWFyY2hTeXNDYWNoZTEoVkFSSUFCTEVPSUQsIE9iamVjdElkR2V0RGF0dW0odmFy SWQpKTsKKwkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlKSkKKwkJCWVsb2coRVJST1IsICJj YWNoZSBsb29rdXAgZmFpbGVkIGZvciBzY2hlbWEgdmFyaWFibGVzICV1IiwgdmFySWQpOworCisJ CXBnX3ZhcmlhYmxlX3R1cGxlID0gKEZvcm1fcGdfdmFyaWFibGUpIEdFVFNUUlVDVCh0dXBsZSk7 CisKKwkJLyoKKwkJICogR2V0IG93bmVyIElEIGFuZCB3b3JraW5nIGNvcHkgb2YgZXhpc3Rpbmcg QUNMLiBJZiB0aGVyZSdzIG5vIEFDTCwKKwkJICogc3Vic3RpdHV0ZSB0aGUgcHJvcGVyIGRlZmF1 bHQuCisJCSAqLworCQlvd25lcklkID0gcGdfdmFyaWFibGVfdHVwbGUtPnZhcm93bmVyOworCQlh Y2xEYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihWQVJJQUJMRU9JRCwgdHVwbGUsIEFudW1fcGdfdmFy aWFibGVfdmFyYWNsLAorCQkJCQkJCQkgICAmaXNOdWxsKTsKKwkJaWYgKGlzTnVsbCkKKwkJewor CQkJb2xkX2FjbCA9IGFjbGRlZmF1bHQoT0JKRUNUX1ZBUklBQkxFLCBvd25lcklkKTsKKwkJCS8q IFRoZXJlIGFyZSBubyBvbGQgbWVtYmVyIHJvbGVzIGFjY29yZGluZyB0byB0aGUgY2F0YWxvZ3Mg Ki8KKwkJCW5vbGRtZW1iZXJzID0gMDsKKwkJCW9sZG1lbWJlcnMgPSBOVUxMOworCQl9CisJCWVs c2UKKwkJeworCQkJb2xkX2FjbCA9IERhdHVtR2V0QWNsUENvcHkoYWNsRGF0dW0pOworCQkJLyog R2V0IHRoZSByb2xlcyBtZW50aW9uZWQgaW4gdGhlIGV4aXN0aW5nIEFDTCAqLworCQkJbm9sZG1l bWJlcnMgPSBhY2xtZW1iZXJzKG9sZF9hY2wsICZvbGRtZW1iZXJzKTsKKwkJfQorCisJCS8qIERl dGVybWluZSBJRCB0byBkbyB0aGUgZ3JhbnQgYXMsIGFuZCBhdmFpbGFibGUgZ3JhbnQgb3B0aW9u cyAqLworCQlzZWxlY3RfYmVzdF9ncmFudG9yKEdldFVzZXJJZCgpLCBpc3RtdC0+cHJpdmlsZWdl cywKKwkJCQkJCQlvbGRfYWNsLCBvd25lcklkLAorCQkJCQkJCSZncmFudG9ySWQsICZhdmFpbF9n b3B0aW9ucyk7CisKKwkJLyoKKwkJICogUmVzdHJpY3QgdGhlIHByaXZpbGVnZXMgdG8gd2hhdCB3 ZSBjYW4gYWN0dWFsbHkgZ3JhbnQsIGFuZCBlbWl0IHRoZQorCQkgKiBzdGFuZGFyZHMtbWFuZGF0 ZWQgd2FybmluZyBhbmQgZXJyb3IgbWVzc2FnZXMuCisJCSAqLworCQl0aGlzX3ByaXZpbGVnZXMg PQorCQkJcmVzdHJpY3RfYW5kX2NoZWNrX2dyYW50KGlzdG10LT5pc19ncmFudCwgYXZhaWxfZ29w dGlvbnMsCisJCQkJCQkJCQkgaXN0bXQtPmFsbF9wcml2cywgaXN0bXQtPnByaXZpbGVnZXMsCisJ CQkJCQkJCQkgdmFySWQsIGdyYW50b3JJZCwgT0JKRUNUX1ZBUklBQkxFLAorCQkJCQkJCQkJIE5h bWVTdHIocGdfdmFyaWFibGVfdHVwbGUtPnZhcm5hbWUpLAorCQkJCQkJCQkJIDAsIE5VTEwpOwor CisJCS8qCisJCSAqIEdlbmVyYXRlIG5ldyBBQ0wuCisJCSAqLworCQluZXdfYWNsID0gbWVyZ2Vf YWNsX3dpdGhfZ3JhbnQob2xkX2FjbCwgaXN0bXQtPmlzX2dyYW50LAorCQkJCQkJCQkJICAgaXN0 bXQtPmdyYW50X29wdGlvbiwgaXN0bXQtPmJlaGF2aW9yLAorCQkJCQkJCQkJICAgaXN0bXQtPmdy YW50ZWVzLCB0aGlzX3ByaXZpbGVnZXMsCisJCQkJCQkJCQkgICBncmFudG9ySWQsIG93bmVySWQp OworCisJCS8qCisJCSAqIFdlIG5lZWQgdGhlIG1lbWJlcnMgb2YgYm90aCBvbGQgYW5kIG5ldyBB Q0xzIHNvIHdlIGNhbiBjb3JyZWN0IHRoZQorCQkgKiBzaGFyZWQgZGVwZW5kZW5jeSBpbmZvcm1h dGlvbi4KKwkJICovCisJCW5uZXdtZW1iZXJzID0gYWNsbWVtYmVycyhuZXdfYWNsLCAmbmV3bWVt YmVycyk7CisKKwkJLyogZmluaXNoZWQgYnVpbGRpbmcgbmV3IEFDTCB2YWx1ZSwgbm93IGluc2Vy dCBpdCAqLworCQlNZW1TZXQodmFsdWVzLCAwLCBzaXplb2YodmFsdWVzKSk7CisJCU1lbVNldChu dWxscywgZmFsc2UsIHNpemVvZihudWxscykpOworCQlNZW1TZXQocmVwbGFjZXMsIGZhbHNlLCBz aXplb2YocmVwbGFjZXMpKTsKKworCQlyZXBsYWNlc1tBbnVtX3BnX3ZhcmlhYmxlX3ZhcmFjbCAt IDFdID0gdHJ1ZTsKKwkJdmFsdWVzW0FudW1fcGdfdmFyaWFibGVfdmFyYWNsIC0gMV0gPSBQb2lu dGVyR2V0RGF0dW0obmV3X2FjbCk7CisKKwkJbmV3dHVwbGUgPSBoZWFwX21vZGlmeV90dXBsZSh0 dXBsZSwgUmVsYXRpb25HZXREZXNjcihyZWxhdGlvbiksIHZhbHVlcywKKwkJCQkJCQkJCSBudWxs cywgcmVwbGFjZXMpOworCisJCUNhdGFsb2dUdXBsZVVwZGF0ZShyZWxhdGlvbiwgJm5ld3R1cGxl LT50X3NlbGYsIG5ld3R1cGxlKTsKKworCQkvKiBVcGRhdGUgaW5pdGlhbCBwcml2aWxlZ2VzIGZv ciBleHRlbnNpb25zICovCisJCXJlY29yZEV4dGVuc2lvbkluaXRQcml2KHZhcklkLCBWYXJpYWJs ZVJlbGF0aW9uSWQsIDAsIG5ld19hY2wpOworCisJCS8qIFVwZGF0ZSB0aGUgc2hhcmVkIGRlcGVu ZGVuY3kgQUNMIGluZm8gKi8KKwkJdXBkYXRlQWNsRGVwZW5kZW5jaWVzKFZhcmlhYmxlUmVsYXRp b25JZCwgdmFySWQsIDAsCisJCQkJCQkJICBvd25lcklkLAorCQkJCQkJCSAgbm9sZG1lbWJlcnMs IG9sZG1lbWJlcnMsCisJCQkJCQkJICBubmV3bWVtYmVycywgbmV3bWVtYmVycyk7CisKKwkJUmVs ZWFzZVN5c0NhY2hlKHR1cGxlKTsKKworCQlwZnJlZShuZXdfYWNsKTsKKworCQkvKiBwcmV2ZW50 IGVycm9yIHdoZW4gcHJvY2Vzc2luZyBkdXBsaWNhdGUgb2JqZWN0cyAqLworCQlDb21tYW5kQ291 bnRlckluY3JlbWVudCgpOworCX0KKworCWhlYXBfY2xvc2UocmVsYXRpb24sIFJvd0V4Y2x1c2l2 ZUxvY2spOworfQorCiAKIHN0YXRpYyBBY2xNb2RlCiBzdHJpbmdfdG9fcHJpdmlsZWdlKGNvbnN0 IGNoYXIgKnByaXZuYW1lKQpAQCAtMzI5OCw2ICszNDgxLDEwIEBAIHN0cmluZ190b19wcml2aWxl Z2UoY29uc3QgY2hhciAqcHJpdm5hbWUpCiAJCXJldHVybiBBQ0xfQ09OTkVDVDsKIAlpZiAoc3Ry Y21wKHByaXZuYW1lLCAicnVsZSIpID09IDApCiAJCXJldHVybiAwOwkJCQkvKiBpZ25vcmUgb2xk IFJVTEUgcHJpdmlsZWdlcyAqLworCWlmIChzdHJjbXAocHJpdm5hbWUsICJyZWFkIikgPT0gMCkK KwkJcmV0dXJuIEFDTF9SRUFEOworCWlmIChzdHJjbXAocHJpdm5hbWUsICJ3cml0ZSIpID09IDAp CisJCXJldHVybiBBQ0xfV1JJVEU7CiAJZXJlcG9ydChFUlJPUiwKIAkJCShlcnJjb2RlKEVSUkNP REVfU1lOVEFYX0VSUk9SKSwKIAkJCSBlcnJtc2coInVucmVjb2duaXplZCBwcml2aWxlZ2UgdHlw ZSBcIiVzXCIiLCBwcml2bmFtZSkpKTsKQEAgLTMzMzMsNiArMzUyMCwxMCBAQCBwcml2aWxlZ2Vf dG9fc3RyaW5nKEFjbE1vZGUgcHJpdmlsZWdlKQogCQkJcmV0dXJuICJURU1QIjsKIAkJY2FzZSBB Q0xfQ09OTkVDVDoKIAkJCXJldHVybiAiQ09OTkVDVCI7CisJCWNhc2UgQUNMX1JFQUQ6CisJCQly ZXR1cm4gIlJFQUQiOworCQljYXNlIEFDTF9XUklURToKKwkJCXJldHVybiAiV1JJVEUiOwogCQlk ZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBwcml2aWxlZ2U6ICVkIiwgKGlu dCkgcHJpdmlsZWdlKTsKIAl9CkBAIC0zNDU2LDYgKzM2NDcsOSBAQCBhY2xjaGVja19lcnJvcihB Y2xSZXN1bHQgYWNsZXJyLCBPYmplY3RUeXBlIG9ianR5cGUsCiAJCQkJCWNhc2UgT0JKRUNUX1RZ UEU6CiAJCQkJCQltc2cgPSBnZXR0ZXh0X25vb3AoInBlcm1pc3Npb24gZGVuaWVkIGZvciB0eXBl ICVzIik7CiAJCQkJCQlicmVhazsKKwkJCQkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQkJCQlt c2cgPSBnZXR0ZXh0X25vb3AoInBlcm1pc3Npb24gZGVuaWVkIGZvciBzY2hlbWEgdmFyaWFibGUg JXMiKTsKKwkJCQkJCWJyZWFrOwogCQkJCQljYXNlIE9CSkVDVF9WSUVXOgogCQkJCQkJbXNnID0g Z2V0dGV4dF9ub29wKCJwZXJtaXNzaW9uIGRlbmllZCBmb3IgdmlldyAlcyIpOwogCQkJCQkJYnJl YWs7CkBAIC0zNTY2LDYgKzM3NjAsOSBAQCBhY2xjaGVja19lcnJvcihBY2xSZXN1bHQgYWNsZXJy LCBPYmplY3RUeXBlIG9ianR5cGUsCiAJCQkJCWNhc2UgT0JKRUNUX1RZUEU6CiAJCQkJCQltc2cg PSBnZXR0ZXh0X25vb3AoIm11c3QgYmUgb3duZXIgb2YgdHlwZSAlcyIpOwogCQkJCQkJYnJlYWs7 CisJCQkJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJCQkJbXNnID0gZ2V0dGV4dF9ub29wKCJt dXN0IGJlIG93bmVyIG9mIHNjaGVtYSB2YXJpYWJsZSAlcyIpOworCQkJCQkJYnJlYWs7CiAJCQkJ CWNhc2UgT0JKRUNUX1ZJRVc6CiAJCQkJCQltc2cgPSBnZXR0ZXh0X25vb3AoIm11c3QgYmUgb3du ZXIgb2YgdmlldyAlcyIpOwogCQkJCQkJYnJlYWs7CkBAIC0zNzEwLDYgKzM5MDcsOCBAQCBwZ19h Y2xtYXNrKE9iamVjdFR5cGUgb2JqdHlwZSwgT2lkIHRhYmxlX29pZCwgQXR0ck51bWJlciBhdHRu dW0sIE9pZCByb2xlaWQsCiAJCQlyZXR1cm4gQUNMX05PX1JJR0hUUzsKIAkJY2FzZSBPQkpFQ1Rf VFlQRToKIAkJCXJldHVybiBwZ190eXBlX2FjbG1hc2sodGFibGVfb2lkLCByb2xlaWQsIG1hc2ss IGhvdyk7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJcmV0dXJuIHBnX3ZhcmlhYmxlX2Fj bG1hc2sodGFibGVfb2lkLCByb2xlaWQsIG1hc2ssIGhvdyk7CiAJCWRlZmF1bHQ6CiAJCQllbG9n KEVSUk9SLCAidW5yZWNvZ25pemVkIG9ianR5cGU6ICVkIiwKIAkJCQkgKGludCkgb2JqdHlwZSk7 CkBAIC00NDk5LDYgKzQ2OTgsNjcgQEAgcGdfdHlwZV9hY2xtYXNrKE9pZCB0eXBlX29pZCwgT2lk IHJvbGVpZCwgQWNsTW9kZSBtYXNrLCBBY2xNYXNrSG93IGhvdykKIAlyZXR1cm4gcmVzdWx0Owog fQogCisvKgorICogRXhwb3J0ZWQgcm91dGluZSBmb3IgZXhhbWluaW5nIGEgdXNlcidzIHByaXZp bGVnZXMgZm9yIGEgdmFyaWFibGUuCisgKi8KK0FjbE1vZGUKK3BnX3ZhcmlhYmxlX2FjbG1hc2so T2lkIHZhcl9vaWQsIE9pZCByb2xlaWQsIEFjbE1vZGUgbWFzaywgQWNsTWFza0hvdyBob3cpCit7 CisJQWNsTW9kZQkJcmVzdWx0OworCUhlYXBUdXBsZQl0dXBsZTsKKwlEYXR1bQkJYWNsRGF0dW07 CisJYm9vbAkJaXNOdWxsOworCUFjbAkJICAgKmFjbDsKKwlPaWQJCQlvd25lcklkOworCisJRm9y bV9wZ192YXJpYWJsZSB2YXJGb3JtOworCisJLyogQnlwYXNzIHBlcm1pc3Npb24gY2hlY2tzIGZv ciBzdXBlcnVzZXJzICovCisJaWYgKHN1cGVydXNlcl9hcmcocm9sZWlkKSkKKwkJcmV0dXJuIG1h c2s7CisKKwkvKgorCSAqIE11c3QgZ2V0IHRoZSB0eXBlJ3MgdHVwbGUgZnJvbSBwZ190eXBlCisJ ICovCisJdHVwbGUgPSBTZWFyY2hTeXNDYWNoZTEoVkFSSUFCTEVPSUQsIE9iamVjdElkR2V0RGF0 dW0odmFyX29pZCkpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSkpCisJCWVyZXBvcnQo RVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfT0JKRUNUKSwKKwkJCQkgZXJy bXNnKCJ2YXJpYWJsZSB3aXRoIE9JRCAldSBkb2VzIG5vdCBleGlzdCIsCisJCQkJCQl2YXJfb2lk KSkpOworCXZhckZvcm0gPSAoRm9ybV9wZ192YXJpYWJsZSkgR0VUU1RSVUNUKHR1cGxlKTsKKwor CS8qCisJICogTm93IGdldCB0aGUgdHlwZSdzIG93bmVyIGFuZCBBQ0wgZnJvbSB0aGUgdHVwbGUK KwkgKi8KKwlvd25lcklkID0gdmFyRm9ybS0+dmFyb3duZXI7CisKKwlhY2xEYXR1bSA9IFN5c0Nh Y2hlR2V0QXR0cihWQVJJQUJMRU9JRCwgdHVwbGUsCisJCQkJCQkJICAgQW51bV9wZ192YXJpYWJs ZV92YXJhY2wsICZpc051bGwpOworCWlmIChpc051bGwpCisJeworCQkvKiBObyBBQ0wsIHNvIGJ1 aWxkIGRlZmF1bHQgQUNMICovCisJCWFjbCA9IGFjbGRlZmF1bHQoT0JKRUNUX1ZBUklBQkxFLCBv d25lcklkKTsKKwkJYWNsRGF0dW0gPSAoRGF0dW0pIDA7CisJfQorCWVsc2UKKwl7CisJCS8qIGRl dG9hc3QgcmVsJ3MgQUNMIGlmIG5lY2Vzc2FyeSAqLworCQlhY2wgPSBEYXR1bUdldEFjbFAoYWNs RGF0dW0pOworCX0KKworCXJlc3VsdCA9IGFjbG1hc2soYWNsLCByb2xlaWQsIG93bmVySWQsIG1h c2ssIGhvdyk7CisKKwkvKiBpZiB3ZSBoYXZlIGEgZGV0b2FzdGVkIGNvcHksIGZyZWUgaXQgKi8K KwlpZiAoYWNsICYmIChQb2ludGVyKSBhY2wgIT0gRGF0dW1HZXRQb2ludGVyKGFjbERhdHVtKSkK KwkJcGZyZWUoYWNsKTsKKworCVJlbGVhc2VTeXNDYWNoZSh0dXBsZSk7CisKKwlyZXR1cm4gcmVz dWx0OworfQorCisKIC8qCiAgKiBFeHBvcnRlZCByb3V0aW5lIGZvciBjaGVja2luZyBhIHVzZXIn cyBhY2Nlc3MgcHJpdmlsZWdlcyB0byBhIGNvbHVtbgogICoKQEAgLTQ3NDQsNiArNTAwNCwxOCBA QCBwZ190eXBlX2FjbGNoZWNrKE9pZCB0eXBlX29pZCwgT2lkIHJvbGVpZCwgQWNsTW9kZSBtb2Rl KQogCQlyZXR1cm4gQUNMQ0hFQ0tfTk9fUFJJVjsKIH0KIAorLyoKKyAqIEV4cG9ydGVkIHJvdXRp bmUgZm9yIGNoZWNraW5nIGEgdXNlcidzIGFjY2VzcyBwcml2aWxlZ2VzIHRvIGEgdmFyaWFibGUK KyAqLworQWNsUmVzdWx0CitwZ192YXJpYWJsZV9hY2xjaGVjayhPaWQgdHlwZV9vaWQsIE9pZCBy b2xlaWQsIEFjbE1vZGUgbW9kZSkKK3sKKwlpZiAocGdfdmFyaWFibGVfYWNsbWFzayh0eXBlX29p ZCwgcm9sZWlkLCBtb2RlLCBBQ0xNQVNLX0FOWSkgIT0gMCkKKwkJcmV0dXJuIEFDTENIRUNLX09L OworCWVsc2UKKwkJcmV0dXJuIEFDTENIRUNLX05PX1BSSVY7Cit9CisKIC8qCiAgKiBPd25lcnNo aXAgY2hlY2sgZm9yIGEgcmVsYXRpb24gKHNwZWNpZmllZCBieSBPSUQpLgogICovCkBAIC01MzYx LDYgKzU2MzMsMzMgQEAgcGdfc3RhdGlzdGljc19vYmplY3Rfb3duZXJjaGVjayhPaWQgc3RhdF9v aWQsIE9pZCByb2xlaWQpCiAJcmV0dXJuIGhhc19wcml2c19vZl9yb2xlKHJvbGVpZCwgb3duZXJJ ZCk7CiB9CiAKKy8qCisgKiBPd25lcnNoaXAgY2hlY2sgZm9yIGEgc2NoZW1hIHZhcmlhYmxlcyAo c3BlY2lmaWVkIGJ5IE9JRCkuCisgKi8KK2Jvb2wKK3BnX3ZhcmlhYmxlX293bmVyY2hlY2soT2lk IGRiX29pZCwgT2lkIHJvbGVpZCkKK3sKKwlIZWFwVHVwbGUJdHVwbGU7CisJT2lkCQkJb3duZXJJ ZDsKKworCS8qIFN1cGVydXNlcnMgYnlwYXNzIGFsbCBwZXJtaXNzaW9uIGNoZWNraW5nLiAqLwor CWlmIChzdXBlcnVzZXJfYXJnKHJvbGVpZCkpCisJCXJldHVybiB0cnVlOworCisJdHVwbGUgPSBT ZWFyY2hTeXNDYWNoZTEoVkFSSUFCTEVPSUQsIE9iamVjdElkR2V0RGF0dW0oZGJfb2lkKSk7CisJ aWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJy Y29kZShFUlJDT0RFX1VOREVGSU5FRF9EQVRBQkFTRSksCisJCQkJIGVycm1zZygidmFyaWFibGUg d2l0aCBPSUQgJXUgZG9lcyBub3QgZXhpc3QiLCBkYl9vaWQpKSk7CisKKwlvd25lcklkID0gKChG b3JtX3BnX3ZhcmlhYmxlKSBHRVRTVFJVQ1QodHVwbGUpKS0+dmFyb3duZXI7CisKKwlSZWxlYXNl U3lzQ2FjaGUodHVwbGUpOworCisJcmV0dXJuIGhhc19wcml2c19vZl9yb2xlKHJvbGVpZCwgb3du ZXJJZCk7Cit9CisKKwogLyoKICAqIENoZWNrIHdoZXRoZXIgc3BlY2lmaWVkIHJvbGUgaGFzIENS RUFURVJPTEUgcHJpdmlsZWdlIChvciBpcyBhIHN1cGVydXNlcikKICAqCkBAIC01NDg2LDYgKzU3 ODUsMTAgQEAgZ2V0X3VzZXJfZGVmYXVsdF9hY2woT2JqZWN0VHlwZSBvYmp0eXBlLCBPaWQgb3du ZXJJZCwgT2lkIG5zcF9vaWQpCiAJCQlkZWZhY2xvYmp0eXBlID0gREVGQUNMT0JKX05BTUVTUEFD RTsKIAkJCWJyZWFrOwogCisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJZGVmYWNsb2JqdHlw ZSA9IERFRkFDTE9CSl9WQVJJQUJMRTsKKwkJCWJyZWFrOworCiAJCWRlZmF1bHQ6CiAJCQlyZXR1 cm4gTlVMTDsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3ku YyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jCmluZGV4IDRmMWQzNjUzNTcuLjc4 MmRkYjE2NTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jCisr KyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jCkBAIC01OSw2ICs1OSw3IEBACiAj aW5jbHVkZSAiY2F0YWxvZy9wZ190c190ZW1wbGF0ZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdf dHlwZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdXNlcl9tYXBwaW5nLmgiCisjaW5jbHVkZSAi Y2F0YWxvZy9wZ192YXJpYWJsZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2NvbW1lbnQuaCIKICNp bmNsdWRlICJjb21tYW5kcy9kZWZyZW0uaCIKICNpbmNsdWRlICJjb21tYW5kcy9ldmVudF90cmln Z2VyLmgiCkBAIC02Nyw2ICs2OCw3IEBACiAjaW5jbHVkZSAiY29tbWFuZHMvcHJvY2xhbmcuaCIK ICNpbmNsdWRlICJjb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuaCIKICNpbmNsdWRlICJjb21tYW5k cy9zY2hlbWFjbWRzLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvc2NoZW1hdmFyaWFibGUuaCIKICNp bmNsdWRlICJjb21tYW5kcy9zZWNsYWJlbC5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3NlcXVlbmNl LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdHJpZ2dlci5oIgpAQCAtMTI4MCw2ICsxMjgyLDEwIEBA IGRvRGVsZXRpb24oY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LCBpbnQgZmxhZ3MpCiAJCQlE cm9wVHJhbnNmb3JtQnlJZChvYmplY3QtPm9iamVjdElkKTsKIAkJCWJyZWFrOwogCisJCWNhc2Ug T0NMQVNTX1ZBUklBQkxFOgorCQkJUmVtb3ZlVmFyaWFibGVCeUlkKG9iamVjdC0+b2JqZWN0SWQp OworCQkJYnJlYWs7CisKIAkJCS8qCiAJCQkgKiBUaGVzZSBnbG9iYWwgb2JqZWN0IHR5cGVzIGFy ZSBub3Qgc3VwcG9ydGVkIGhlcmUuCiAJCQkgKi8KQEAgLTI1MzcsNiArMjU0Myw5IEBAIGdldE9i amVjdENsYXNzKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCkKIAogCQljYXNlIFRyYW5zZm9y bVJlbGF0aW9uSWQ6CiAJCQlyZXR1cm4gT0NMQVNTX1RSQU5TRk9STTsKKworCQljYXNlIFZhcmlh YmxlUmVsYXRpb25JZDoKKwkJCXJldHVybiBPQ0xBU1NfVkFSSUFCTEU7CiAJfQogCiAJLyogc2hv dWxkbid0IGdldCBoZXJlICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL25hbWVz cGFjZS5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2UuYwppbmRleCAwZjY3YTEyMmVk Li44MWFhZjQ1NGE4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL25hbWVzcGFjZS5j CisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvbmFtZXNwYWNlLmMKQEAgLTM5LDYgKzM5LDcgQEAK ICNpbmNsdWRlICJjYXRhbG9nL3BnX3RzX3BhcnNlci5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdf dHNfdGVtcGxhdGUuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKKyNpbmNsdWRlICJj YXRhbG9nL3BnX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGJjb21tYW5kcy5oIgog I2luY2x1ZGUgImZ1bmNhcGkuaCIKICNpbmNsdWRlICJtYi9wZ193Y2hhci5oIgpAQCAtNzU1LDYg Kzc1Niw3MSBAQCBSZWxhdGlvbklzVmlzaWJsZShPaWQgcmVsaWQpCiAJcmV0dXJuIHZpc2libGU7 CiB9CiAKKy8qCisgKiBWYXJpYWJsZUlzVmlzaWJsZQorICoJCURldGVybWluZSB3aGV0aGVyIGEg dmFyaWFibGUgKGlkZW50aWZpZWQgYnkgT0lEKSBpcyB2aXNpYmxlIGluIHRoZQorICoJCWN1cnJl bnQgc2VhcmNoIHBhdGguICBWaXNpYmxlIG1lYW5zICJ3b3VsZCBiZSBmb3VuZCBieSBzZWFyY2hp bmcKKyAqCQlmb3IgdGhlIHVucXVhbGlmaWVkIHZhcmlhYmxlIG5hbWUiLgorICovCitib29sCitW YXJpYWJsZUlzVmlzaWJsZShPaWQgdmFyaWQpCit7CisJSGVhcFR1cGxlCXZhcnR1cDsKKwlGb3Jt X3BnX3ZhcmlhYmxlIHZhcmZvcm07CisJT2lkCQkJdmFybmFtZXNwYWNlOworCWJvb2wJCXZpc2li bGU7CisKKwl2YXJ0dXAgPSBTZWFyY2hTeXNDYWNoZTEoVkFSSUFCTEVPSUQsIE9iamVjdElkR2V0 RGF0dW0odmFyaWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodmFydHVwKSkKKwkJZWxvZyhF UlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHNjaGVtYSB2YXJpYWJsZSAldSIsIHZhcmlk KTsKKwl2YXJmb3JtID0gKEZvcm1fcGdfdmFyaWFibGUpIEdFVFNUUlVDVCh2YXJ0dXApOworCisJ cmVjb21wdXRlTmFtZXNwYWNlUGF0aCgpOworCisJLyoKKwkgKiBRdWljayBjaGVjazogaWYgaXQg YWluJ3QgaW4gdGhlIHBhdGggYXQgYWxsLCBpdCBhaW4ndCB2aXNpYmxlLiBJdGVtcyBpbgorCSAq IHRoZSBzeXN0ZW0gbmFtZXNwYWNlIGFyZSBzdXJlbHkgaW4gdGhlIHBhdGggYW5kIHNvIHdlIG5l ZWRuJ3QgZXZlbiBkbworCSAqIGxpc3RfbWVtYmVyX29pZCgpIGZvciB0aGVtLgorCSAqLworCXZh cm5hbWVzcGFjZSA9IHZhcmZvcm0tPnZhcm5hbWVzcGFjZTsKKwlpZiAodmFybmFtZXNwYWNlICE9 IFBHX0NBVEFMT0dfTkFNRVNQQUNFICYmCisJCSFsaXN0X21lbWJlcl9vaWQoYWN0aXZlU2VhcmNo UGF0aCwgdmFybmFtZXNwYWNlKSkKKwkJdmlzaWJsZSA9IGZhbHNlOworCWVsc2UKKwl7CisJCS8q CisJCSAqIElmIGl0IGlzIGluIHRoZSBwYXRoLCBpdCBtaWdodCBzdGlsbCBub3QgYmUgdmlzaWJs ZTsgaXQgY291bGQgYmUKKwkJICogaGlkZGVuIGJ5IGFub3RoZXIgcmVsYXRpb24gb2YgdGhlIHNh bWUgbmFtZSBlYXJsaWVyIGluIHRoZSBwYXRoLiBTbworCQkgKiB3ZSBtdXN0IGRvIGEgc2xvdyBj aGVjayBmb3IgY29uZmxpY3RpbmcgcmVsYXRpb25zLgorCQkgKi8KKwkJY2hhcgkgICAqdmFybmFt ZSA9IE5hbWVTdHIodmFyZm9ybS0+dmFybmFtZSk7CisJCUxpc3RDZWxsICAgKmw7CisKKwkJdmlz aWJsZSA9IGZhbHNlOworCQlmb3JlYWNoKGwsIGFjdGl2ZVNlYXJjaFBhdGgpCisJCXsKKwkJCU9p ZAkJCW5hbWVzcGFjZUlkID0gbGZpcnN0X29pZChsKTsKKworCQkJaWYgKG5hbWVzcGFjZUlkID09 IHZhcm5hbWVzcGFjZSkKKwkJCXsKKwkJCQkvKiBGb3VuZCBpdCBmaXJzdCBpbiBwYXRoICovCisJ CQkJdmlzaWJsZSA9IHRydWU7CisJCQkJYnJlYWs7CisJCQl9CisJCQlpZiAoT2lkSXNWYWxpZChn ZXRfdmFybmFtZV92YXJpZCh2YXJuYW1lLCBuYW1lc3BhY2VJZCkpKQorCQkJeworCQkJCS8qIEZv dW5kIHNvbWV0aGluZyBlbHNlIGZpcnN0IGluIHBhdGggKi8KKwkJCQlicmVhazsKKwkJCX0KKwkJ fQorCX0KKworCVJlbGVhc2VTeXNDYWNoZSh2YXJ0dXApOworCisJcmV0dXJuIHZpc2libGU7Cit9 CisKKwogCiAvKgogICogVHlwZW5hbWVHZXRUeXBpZApAQCAtMjc3Niw2ICsyODQyLDIwMiBAQCBU U0NvbmZpZ0lzVmlzaWJsZShPaWQgY2ZnaWQpCiAJcmV0dXJuIHZpc2libGU7CiB9CiAKKy8qCisg KiBXaGVuIHdlIGtub3cgYSB2YXJpYWJsZSBuYW1lLCB0aGVuIHdlIGNhbiBmaW5kIHZhcmlhYmxl IHNpbXBseQorICovCitPaWQKK2xvb2t1cF92YXJpYWJsZShjb25zdCBjaGFyICpuc3BuYW1lLCBj b25zdCBjaGFyICp2YXJuYW1lLCBib29sIG1pc3Npbmdfb2spCit7CisJT2lkCQkJbmFtZXNwYWNl SWQ7CisJT2lkCQkJdmFyb2lkCQk9IEludmFsaWRPaWQ7CisJTGlzdENlbGwgICAqbDsKKworCWlm IChuc3BuYW1lKQorCXsKKwkJbmFtZXNwYWNlSWQgPSBMb29rdXBFeHBsaWNpdE5hbWVzcGFjZShu c3BuYW1lLCBtaXNzaW5nX29rKTsKKwkJaWYgKCFPaWRJc1ZhbGlkKG5hbWVzcGFjZUlkKSkKKwkJ CXJldHVybiBJbnZhbGlkT2lkOworCisJCXZhcm9pZCA9IEdldFN5c0NhY2hlT2lkMihWQVJJQUJM RU5BTUVOU1AsCisJCQkJCQkJCSAgUG9pbnRlckdldERhdHVtKHZhcm5hbWUpLAorCQkJCQkJCQkg IE9iamVjdElkR2V0RGF0dW0obmFtZXNwYWNlSWQpKTsKKwl9CisJZWxzZQorCXsKKwkJLyogc2Vh cmNoIGZvciBpdCBpbiBzZWFyY2ggcGF0aCAqLworCQlyZWNvbXB1dGVOYW1lc3BhY2VQYXRoKCk7 CisKKwkJZm9yZWFjaChsLCBhY3RpdmVTZWFyY2hQYXRoKQorCQl7CisJCQluYW1lc3BhY2VJZCA9 IGxmaXJzdF9vaWQobCk7CisKKwkJCXZhcm9pZCA9IEdldFN5c0NhY2hlT2lkMihWQVJJQUJMRU5B TUVOU1AsCisJCQkJCQkJCQkgIFBvaW50ZXJHZXREYXR1bSh2YXJuYW1lKSwKKwkJCQkJCQkJCSAg T2JqZWN0SWRHZXREYXR1bShuYW1lc3BhY2VJZCkpOworCisJCQlpZiAoT2lkSXNWYWxpZCh2YXJv aWQpKQorCQkJCWJyZWFrOworCQl9CisJfQorCisJaWYgKCFPaWRJc1ZhbGlkKHZhcm9pZCkgJiYg IW1pc3Npbmdfb2spCisJeworCQlpZiAobnNwbmFtZSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX09CSkVDVCksCisJCQkJCSBlcnJtc2coInZhcmlh YmxlIFwiJXNcIi5cIiVzXCIgZG9lcyBub3QgZXhpc3QiLAorCQkJCQkJCQluc3BuYW1lLCB2YXJu YW1lKSkpOworCQllbHNlCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RF X1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCQkgZXJybXNnKCJ2YXJpYWJsZSBcIiVzXCIgZG9lcyBu b3QgZXhpc3QiLAorCQkJCQkJCQl2YXJuYW1lKSkpOworCX0KKworCXJldHVybiB2YXJvaWQ7Cit9 CisKK0xpc3QgKgorTmFtZXNGcm9tTGlzdChMaXN0ICpuYW1lcykKK3sKKwlMaXN0Q2VsbCAqbDsK KwlMaXN0CSpyZXN1bHQgPSBOSUw7CisKKwlmb3JlYWNoKGwsIG5hbWVzKQorCXsKKwkJTm9kZSAq biA9IGxmaXJzdChsKTsKKworCQlpZiAoSXNBKG4sIFN0cmluZykpCisJCXsKKwkJCXJlc3VsdCA9 IGxhcHBlbmQocmVzdWx0LCBuKTsKKwkJfQorCQllbHNlCisJCQlicmVhazsKKwl9CisKKwlyZXR1 cm4gcmVzdWx0OworfQorCisvKgorICogaWRlbnRpZnlfdmFyaWFibGUKKyAqCisgKiBSZXR1cm5z IG9pZCBvZiBub3QgYW1iaWdvbnVvdXMgdmFyaWFibGUgc3BlY2lmaWVkIGJ5IHF1YWxpZmllZCBw YXRoCisgKiBvciBJbnZhbGlkT2lkLiBXaGVuIHRoZSBwYXRoIGlzIGFtYmlnb251b3VzLCB0aGVu IG5vdF91bmlxIGZsYWcgaXMKKyAqIGlzIHRydWUuCisgKi8KK09pZAoraWRlbnRpZnlfdmFyaWFi bGUoTGlzdCAqbmFtZXMsIGNoYXIgKiphdHRybmFtZSwgYm9vbCAqbm90X3VuaXEpCit7CisJY2hh ciAgICphID0gTlVMTDsKKwljaGFyICAgKmIgPSBOVUxMOworCWNoYXIgICAqYyA9IE5VTEw7CisJ Y2hhciAgICpkID0gTlVMTDsKKwlPaWQJCXZhcm9pZF93aXRob3V0X2F0dHI7CisJT2lkCQl2YXJv aWRfd2l0aF9hdHRyOworCisJKm5vdF91bmlxID0gZmFsc2U7CisKKwlzd2l0Y2ggKGxpc3RfbGVu Z3RoKG5hbWVzKSkKKwl7CisJCWNhc2UgMToKKwkJCWEgPSBzdHJWYWwobGluaXRpYWwobmFtZXMp KTsKKwkJCXJldHVybiBsb29rdXBfdmFyaWFibGUoTlVMTCwgYSwgdHJ1ZSk7CisKKwkJY2FzZSAy OgorCQkJYSA9IHN0clZhbChsaW5pdGlhbChuYW1lcykpOworCQkJYiA9IHN0clZhbChsc2Vjb25k KG5hbWVzKSk7CisKKwkJCS8qCisJCQkgKiBhLmIgY2FuIG1lYW4gInNjaGVtYSIuInZhcmlhYmxl IiBvciAidmFyaWFibGUiLiJmaWVsZCIsCisJCQkgKiBDaGVjayBib3RoIHZhcmlhbnRzLCBhbmQg cmV0dXJucyBJbnZhbGlkT2lkIHdpdGggbm90X3VuaXEKKwkJCSAqIGZsYWcsIHdoZW4gYm90aCBp bnRlcnByZXRhdGlvbnMgYXJlIHBvc3NpYmxlLgorCQkJICovCisJCQl2YXJvaWRfd2l0aG91dF9h dHRyID0gbG9va3VwX3ZhcmlhYmxlKGEsIGIsIHRydWUpOworCQkJdmFyb2lkX3dpdGhfYXR0ciA9 IGxvb2t1cF92YXJpYWJsZShOVUxMLCBhLCB0cnVlKTsKKworCQkJaWYgKE9pZElzVmFsaWQodmFy b2lkX3dpdGhvdXRfYXR0cikgJiYgT2lkSXNWYWxpZCh2YXJvaWRfd2l0aF9hdHRyKSkKKwkJCXsK KwkJCQkqbm90X3VuaXEgPSB0cnVlOworCQkJCXJldHVybiBJbnZhbGlkT2lkOworCQkJfQorCQkJ ZWxzZSBpZiAoT2lkSXNWYWxpZCh2YXJvaWRfd2l0aG91dF9hdHRyKSkKKwkJCXsKKwkJCQkqYXR0 cm5hbWUgPSBOVUxMOworCQkJCXJldHVybiB2YXJvaWRfd2l0aG91dF9hdHRyOworCQkJfQorCQkJ ZWxzZQorCQkJeworCQkJCSphdHRybmFtZSA9IGI7CisJCQkJcmV0dXJuIHZhcm9pZF93aXRoX2F0 dHI7CisJCQl9CisJCQlicmVhazsKKworCQljYXNlIDM6CisJCQlhID0gc3RyVmFsKGxpbml0aWFs KG5hbWVzKSk7CisJCQliID0gc3RyVmFsKGxzZWNvbmQobmFtZXMpKTsKKwkJCWMgPSBzdHJWYWwo bHRoaXJkKG5hbWVzKSk7CisKKwkJCS8qCisJCQkgKiBhLmIuYyBjYW4gbWVhbiAiY2F0YWxvZyIu InNjaGVtYSIuInZhcmlhYmxlIiBvciAic2NoZW1hIi4idmFyaWFibGUiLiJmaWVsZCIsCisJCQkg KiBDaGVjayBib3RoIHZhcmlhbnRzLCBhbmQgcmV0dXJucyBJbnZhbGlkT2lkIHdpdGggbm90X3Vu aXEKKwkJCSAqIGZsYWcsIHdoZW4gYm90aCBpbnRlcnByZXRhdGlvbnMgYXJlIHBvc3NpYmxlLgor CQkJICovCisJCQl2YXJvaWRfd2l0aG91dF9hdHRyID0gbG9va3VwX3ZhcmlhYmxlKGIsIGMsIHRy dWUpOworCQkJdmFyb2lkX3dpdGhfYXR0ciA9IGxvb2t1cF92YXJpYWJsZShhLCBiLCB0cnVlKTsK KworCQkJaWYgKE9pZElzVmFsaWQodmFyb2lkX3dpdGhvdXRfYXR0cikgJiYgT2lkSXNWYWxpZCh2 YXJvaWRfd2l0aF9hdHRyKSkKKwkJCXsKKwkJCQkqbm90X3VuaXEgPSB0cnVlOworCQkJCXJldHVy biBJbnZhbGlkT2lkOworCQkJfQorCQkJZWxzZSBpZiAoT2lkSXNWYWxpZCh2YXJvaWRfd2l0aG91 dF9hdHRyKSkKKwkJCXsKKwkJCQkqYXR0cm5hbWUgPSBOVUxMOworCisJCQkJLyoKKwkJCQkgKiBX ZSBpbiB0aGlzIGNhc2UgYSAiYSIgaXMgdXNlZCBhcyBjYXRhbG9nIG5hbWUsIGNoZWNrIGl0Lgor CQkJCSAqLworCQkJCWlmIChzdHJjbXAoYSwgZ2V0X2RhdGFiYXNlX25hbWUoTXlEYXRhYmFzZUlk KSkgIT0gMCkKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZF QVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCQkJIGVycm1zZygiY3Jvc3MtZGF0YWJhc2UgcmVm ZXJlbmNlcyBhcmUgbm90IGltcGxlbWVudGVkOiAlcyIsCisJCQkJCQkJCQlOYW1lTGlzdFRvU3Ry aW5nKG5hbWVzKSkpKTsKKworCQkJCXJldHVybiB2YXJvaWRfd2l0aG91dF9hdHRyOworCQkJfQor CQkJZWxzZQorCQkJeworCQkJCSphdHRybmFtZSA9IGM7CisJCQkJcmV0dXJuIHZhcm9pZF93aXRo X2F0dHI7CisJCQl9CisJCQlicmVhazsKKworCQljYXNlIDQ6CisJCQlhID0gc3RyVmFsKGxpbml0 aWFsKG5hbWVzKSk7CisJCQliID0gc3RyVmFsKGxzZWNvbmQobmFtZXMpKTsKKwkJCWMgPSBzdHJW YWwobHRoaXJkKG5hbWVzKSk7CisJCQlkID0gc3RyVmFsKGxmb3VydGgobmFtZXMpKTsKKworCQkJ LyoKKwkJCSAqIFdlIGluIHRoaXMgY2FzZSBhICJhIiBpcyB1c2VkIGFzIGNhdGFsb2cgbmFtZSwg Y2hlY2sgaXQuCisJCQkgKi8KKwkJCWlmIChzdHJjbXAoYSwgZ2V0X2RhdGFiYXNlX25hbWUoTXlE YXRhYmFzZUlkKSkgIT0gMCkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJS Q09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJIGVycm1zZygiY3Jvc3MtZGF0YWJh c2UgcmVmZXJlbmNlcyBhcmUgbm90IGltcGxlbWVudGVkOiAlcyIsCisJCQkJCQkJCU5hbWVMaXN0 VG9TdHJpbmcobmFtZXMpKSkpOworCisJCQkqYXR0cm5hbWUgPSBkOworCQkJcmV0dXJuIGxvb2t1 cF92YXJpYWJsZShiLCBjLCB0cnVlKTsKKworCQlkZWZhdWx0OgorCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkgZXJybXNnKCJpbXBy b3BlciBxdWFsaWZpZWQgbmFtZSAodG9vIG1hbnkgZG90dGVkIG5hbWVzKTogJXMiLAorCQkJCQkJ CU5hbWVMaXN0VG9TdHJpbmcobmFtZXMpKSkpOworCQkJYnJlYWs7CisJfQorfQogCiAvKgogICog RGVjb25zdHJ1Y3RRdWFsaWZpZWROYW1lCkBAIC00NDE2LDMgKzQ2NzgsMTQgQEAgcGdfaXNfb3Ro ZXJfdGVtcF9zY2hlbWEoUEdfRlVOQ1RJT05fQVJHUykKIAogCVBHX1JFVFVSTl9CT09MKGlzT3Ro ZXJUZW1wTmFtZXNwYWNlKG9pZCkpOwogfQorCitEYXR1bQorcGdfdmFyaWFibGVfaXNfdmlzaWJs ZShQR19GVU5DVElPTl9BUkdTKQoreworCU9pZAkJCW9pZCA9IFBHX0dFVEFSR19PSUQoMCk7CisK KwlpZiAoIVNlYXJjaFN5c0NhY2hlRXhpc3RzMShWQVJJQUJMRU9JRCwgT2JqZWN0SWRHZXREYXR1 bShvaWQpKSkKKwkJUEdfUkVUVVJOX05VTEwoKTsKKworCVBHX1JFVFVSTl9CT09MKFZhcmlhYmxl SXNWaXNpYmxlKG9pZCkpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9vYmpl Y3RhZGRyZXNzLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3MuYwppbmRleCA3 ZGI5NDJkY2JhLi5jYzNkNDE1ZTYxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL29i amVjdGFkZHJlc3MuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3MuYwpA QCAtNTgsNiArNTgsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHNfdGVtcGxhdGUuaCIKICNp bmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3VzZXJfbWFw cGluZy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdmFyaWFibGUuaCIKICNpbmNsdWRlICJjb21t YW5kcy9kYmNvbW1hbmRzLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGVmcmVtLmgiCiAjaW5jbHVk ZSAiY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5oIgpAQCAtNDg5LDYgKzQ5MCwxOCBAQCBzdGF0aWMg Y29uc3QgT2JqZWN0UHJvcGVydHlUeXBlIE9iamVjdFByb3BlcnR5W10gPQogCQlJbnZhbGlkQXR0 ck51bWJlciwJCS8qIG5vIEFDTCAoc2FtZSBhcyByZWxhdGlvbikgKi8KIAkJT0JKRUNUX1NUQVRJ U1RJQ19FWFQsCiAJCXRydWUKKwl9LAorCXsKKwkJVmFyaWFibGVSZWxhdGlvbklkLAorCQlWYXJp YWJsZU9iamVjdEluZGV4SWQsCisJCVZBUklBQkxFT0lELAorCQlWQVJJQUJMRU5BTUVOU1AsCisJ CUFudW1fcGdfdmFyaWFibGVfdmFybmFtZSwKKwkJQW51bV9wZ192YXJpYWJsZV92YXJuYW1lc3Bh Y2UsCisJCUFudW1fcGdfdmFyaWFibGVfdmFyb3duZXIsCisJCUFudW1fcGdfdmFyaWFibGVfdmFy YWNsLAorCQlPQkpFQ1RfVkFSSUFCTEUsCisJCXRydWUKIAl9CiB9OwogCkBAIC03MTQsNiArNzI3 LDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2JqZWN0X3R5cGVfbWFwCiAJLyogT0JKRUNUX1NU QVRJU1RJQ19FWFQgKi8KIAl7CiAJCSJzdGF0aXN0aWNzIG9iamVjdCIsIE9CSkVDVF9TVEFUSVNU SUNfRVhUCisJfSwKKwkvKiBPQ0xBU1NfVkFSSUFCTEUgKi8KKwl7CisJCSJzY2hlbWEgdmFyaWFi bGUiLCBPQkpFQ1RfVkFSSUFCTEUKIAl9CiB9OwogCkBAIC03MzksNiArNzU2LDcgQEAgc3RhdGlj IE9iamVjdEFkZHJlc3MgZ2V0X29iamVjdF9hZGRyZXNzX2F0dHJkZWYoT2JqZWN0VHlwZSBvYmp0 eXBlLAogCQkJCQkJICAgYm9vbCBtaXNzaW5nX29rKTsKIHN0YXRpYyBPYmplY3RBZGRyZXNzIGdl dF9vYmplY3RfYWRkcmVzc190eXBlKE9iamVjdFR5cGUgb2JqdHlwZSwKIAkJCQkJCVR5cGVOYW1l ICp0eXBlbmFtZSwgYm9vbCBtaXNzaW5nX29rKTsKK3N0YXRpYyBPYmplY3RBZGRyZXNzIGdldF9v YmplY3RfYWRkcmVzc192YXJpYWJsZShMaXN0ICpvYmplY3QsIGJvb2wgbWlzc2luZ19vayk7CiBz dGF0aWMgT2JqZWN0QWRkcmVzcyBnZXRfb2JqZWN0X2FkZHJlc3Nfb3BjZihPYmplY3RUeXBlIG9i anR5cGUsIExpc3QgKm9iamVjdCwKIAkJCQkJCWJvb2wgbWlzc2luZ19vayk7CiBzdGF0aWMgT2Jq ZWN0QWRkcmVzcyBnZXRfb2JqZWN0X2FkZHJlc3Nfb3BmX21lbWJlcihPYmplY3RUeXBlIG9ianR5 cGUsCkBAIC05OTYsNiArMTAxNCwxMCBAQCBnZXRfb2JqZWN0X2FkZHJlc3MoT2JqZWN0VHlwZSBv Ymp0eXBlLCBOb2RlICpvYmplY3QsCiAJCQkJCQkJCQkJCQkJCQkgbWlzc2luZ19vayk7CiAJCQkJ YWRkcmVzcy5vYmplY3RTdWJJZCA9IDA7CiAJCQkJYnJlYWs7CisJCQljYXNlIE9CSkVDVF9WQVJJ QUJMRToKKwkJCQlhZGRyZXNzID0gZ2V0X29iamVjdF9hZGRyZXNzX3ZhcmlhYmxlKGNhc3ROb2Rl KExpc3QsIG9iamVjdCksIG1pc3Npbmdfb2spOworCQkJCWJyZWFrOworCiAJCQlkZWZhdWx0Ogog CQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgb2JqdHlwZTogJWQiLCAoaW50KSBvYmp0eXBl KTsKIAkJCQkvKiBwbGFjYXRlIGNvbXBpbGVyLCBpbiBjYXNlIGl0IHRoaW5rcyBlbG9nIG1pZ2h0 IHJldHVybiAqLwpAQCAtMTg0OCwxNiArMTg3MCwyMCBAQCBnZXRfb2JqZWN0X2FkZHJlc3NfZGVm YWNsKExpc3QgKm9iamVjdCwgYm9vbCBtaXNzaW5nX29rKQogCQljYXNlIERFRkFDTE9CSl9OQU1F U1BBQ0U6CiAJCQlvYmp0eXBlX3N0ciA9ICJzY2hlbWFzIjsKIAkJCWJyZWFrOworCQljYXNlIERF RkFDTE9CSl9WQVJJQUJMRToKKwkJCW9ianR5cGVfc3RyID0gInZhcmlhYmxlcyI7CisJCQlicmVh azsKIAkJZGVmYXVsdDoKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVf SU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAogCQkJCQkgZXJybXNnKCJ1bnJlY29nbml6ZWQgZGVm YXVsdCBBQ0wgb2JqZWN0IHR5cGUgXCIlY1wiIiwgb2JqdHlwZSksCi0JCQkJCSBlcnJoaW50KCJW YWxpZCBvYmplY3QgdHlwZXMgYXJlIFwiJWNcIiwgXCIlY1wiLCBcIiVjXCIsIFwiJWNcIiwgXCIl Y1wiLiIsCisJCQkJCSBlcnJoaW50KCJWYWxpZCBvYmplY3QgdHlwZXMgYXJlIFwiJWNcIiwgXCIl Y1wiLCBcIiVjXCIsIFwiJWNcIiwgXCIlY1wiLCBcIiVjXCIuIiwKIAkJCQkJCQkgREVGQUNMT0JK X1JFTEFUSU9OLAogCQkJCQkJCSBERUZBQ0xPQkpfU0VRVUVOQ0UsCiAJCQkJCQkJIERFRkFDTE9C Sl9GVU5DVElPTiwKIAkJCQkJCQkgREVGQUNMT0JKX1RZUEUsCi0JCQkJCQkJIERFRkFDTE9CSl9O QU1FU1BBQ0UpKSk7CisJCQkJCQkJIERFRkFDTE9CSl9OQU1FU1BBQ0UsCisJCQkJCQkJIERFRkFD TE9CSl9WQVJJQUJMRSkpKTsKIAl9CiAKIAkvKgpAQCAtMTk0Miw2ICsxOTY4LDI0IEBAIHRleHRh cnJheV90b19zdHJ2YWx1ZWxpc3QoQXJyYXlUeXBlICphcnIpCiAJcmV0dXJuIGxpc3Q7CiB9CiAK Ky8qCisgKiBGaW5kIHRoZSBPYmplY3RBZGRyZXNzIGZvciBhIHR5cGUgb3IgZG9tYWluCisgKi8K K3N0YXRpYyBPYmplY3RBZGRyZXNzCitnZXRfb2JqZWN0X2FkZHJlc3NfdmFyaWFibGUoTGlzdCAq b2JqZWN0LCBib29sIG1pc3Npbmdfb2spCit7CisJT2JqZWN0QWRkcmVzcyBhZGRyZXNzOworCWNo YXIJICAgKm5zcG5hbWUgPSBOVUxMOworCWNoYXIJICAgKnZhcm5hbWUgPSBOVUxMOworCisJT2Jq ZWN0QWRkcmVzc1NldChhZGRyZXNzLCBWYXJpYWJsZVJlbGF0aW9uSWQsIEludmFsaWRPaWQpOwor CisJRGVjb25zdHJ1Y3RRdWFsaWZpZWROYW1lKG9iamVjdCwgJm5zcG5hbWUsICZ2YXJuYW1lKTsK KwlhZGRyZXNzLm9iamVjdElkID0gbG9va3VwX3ZhcmlhYmxlKG5zcG5hbWUsIHZhcm5hbWUsIG1p c3Npbmdfb2spOworCisJcmV0dXJuIGFkZHJlc3M7Cit9CisKIC8qCiAgKiBTUUwtY2FsbGFibGUg dmVyc2lvbiBvZiBnZXRfb2JqZWN0X2FkZHJlc3MKICAqLwpAQCAtMjEzMSw2ICsyMTc1LDcgQEAg cGdfZ2V0X29iamVjdF9hZGRyZXNzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWNhc2UgT0JKRUNUX1RB QkNPTlNUUkFJTlQ6CiAJCWNhc2UgT0JKRUNUX09QQ0xBU1M6CiAJCWNhc2UgT0JKRUNUX09QRkFN SUxZOgorCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKIAkJCW9iam5vZGUgPSAoTm9kZSAqKSBuYW1l OwogCQkJYnJlYWs7CiAJCWNhc2UgT0JKRUNUX0FDQ0VTU19NRVRIT0Q6CkBAIC0yNDE1LDYgKzI0 NjAsMTEgQEAgY2hlY2tfb2JqZWN0X293bmVyc2hpcChPaWQgcm9sZWlkLCBPYmplY3RUeXBlIG9i anR5cGUsIE9iamVjdEFkZHJlc3MgYWRkcmVzcywKIAkJCWlmICghcGdfc3RhdGlzdGljc19vYmpl Y3Rfb3duZXJjaGVjayhhZGRyZXNzLm9iamVjdElkLCByb2xlaWQpKQogCQkJCWFjbGNoZWNrX2Vy cm9yX3R5cGUoQUNMQ0hFQ0tfTk9UX09XTkVSLCBhZGRyZXNzLm9iamVjdElkKTsKIAkJCWJyZWFr OworCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCWlmICghcGdfdmFyaWFibGVfb3duZXJjaGVj ayhhZGRyZXNzLm9iamVjdElkLCByb2xlaWQpKQorCQkJCWFjbGNoZWNrX2Vycm9yKEFDTENIRUNL X05PVF9PV05FUiwgb2JqdHlwZSwKKwkJCQkJCQkgICBOYW1lTGlzdFRvU3RyaW5nKGNhc3ROb2Rl KExpc3QsIG9iamVjdCkpKTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwg InVucmVjb2duaXplZCBvYmplY3QgdHlwZTogJWQiLAogCQkJCSAoaW50KSBvYmp0eXBlKTsKQEAg LTMxNTcsNiArMzIwNywzMiBAQCBnZXRPYmplY3REZXNjcmlwdGlvbihjb25zdCBPYmplY3RBZGRy ZXNzICpvYmplY3QpCiAJCQkJYnJlYWs7CiAJCQl9CiAKKwkJY2FzZSBPQ0xBU1NfVkFSSUFCTEU6 CisJCQl7CisJCQkJY2hhcgkgICAqbnNwbmFtZTsKKwkJCQlIZWFwVHVwbGUJdHVwOworCQkJCUZv cm1fcGdfdmFyaWFibGUJdmFyZm9ybTsKKworCQkJCXR1cCA9IFNlYXJjaFN5c0NhY2hlMShWQVJJ QUJMRU9JRCwgT2JqZWN0SWRHZXREYXR1bShvYmplY3QtPm9iamVjdElkKSk7CisJCQkJaWYgKCFI ZWFwVHVwbGVJc1ZhbGlkKHR1cCkpCisJCQkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFp bGVkIGZvciBzY2hlbWEgdmFyaWFibGUgJXUiLAorCQkJCQkJIG9iamVjdC0+b2JqZWN0SWQpOwor CisJCQkJdmFyZm9ybSA9IChGb3JtX3BnX3ZhcmlhYmxlKSBHRVRTVFJVQ1QodHVwKTsKKworCQkJ CWlmIChWYXJpYWJsZUlzVmlzaWJsZShvYmplY3QtPm9iamVjdElkKSkKKwkJCQkJbnNwbmFtZSA9 IE5VTEw7CisJCQkJZWxzZQorCQkJCQluc3BuYW1lID0gZ2V0X25hbWVzcGFjZV9uYW1lKHZhcmZv cm0tPnZhcm5hbWVzcGFjZSk7CisKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKCZidWZmZXIsIF8oInNj aGVtYSB2YXJpYWJsZSAlcyIpLAorCQkJCQkJCQkgcXVvdGVfcXVhbGlmaWVkX2lkZW50aWZpZXIo bnNwbmFtZSwKKwkJCQkJCQkJCQkJCQkJCU5hbWVTdHIodmFyZm9ybS0+dmFybmFtZSkpKTsKKwor CQkJCVJlbGVhc2VTeXNDYWNoZSh0dXApOworCQkJCWJyZWFrOworCQkJfQorCiAJCWNhc2UgT0NM QVNTX1RTUEFSU0VSOgogCQkJewogCQkJCUhlYXBUdXBsZQl0dXA7CkBAIC0zNDIyLDYgKzM0OTgs MTYgQEAgZ2V0T2JqZWN0RGVzY3JpcHRpb24oY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0KQog CQkJCQkJCQkJCSBfKCJkZWZhdWx0IHByaXZpbGVnZXMgb24gbmV3IHNjaGVtYXMgYmVsb25naW5n IHRvIHJvbGUgJXMiKSwKIAkJCQkJCQkJCQkgcm9sZW5hbWUpOwogCQkJCQkJYnJlYWs7CisJCQkJ CWNhc2UgREVGQUNMT0JKX1ZBUklBQkxFOgorCQkJCQkJaWYgKG5zcG5hbWUpCisJCQkJCQkJYXBw ZW5kU3RyaW5nSW5mbygmYnVmZmVyLAorCQkJCQkJCQkJCQkgXygiZGVmYXVsdCBwcml2aWxlZ2Vz IG9uIG5ldyB2YXJpYWJsZXMgYmVsb25naW5nIHRvIHJvbGUgJXMgaW4gc2NoZW1hICVzIiksCisJ CQkJCQkJCQkJCSByb2xlbmFtZSwgbnNwbmFtZSk7CisJCQkJCQllbHNlCisJCQkJCQkJYXBwZW5k U3RyaW5nSW5mbygmYnVmZmVyLAorCQkJCQkJCQkJCQkgXygiZGVmYXVsdCBwcml2aWxlZ2VzIG9u IG5ldyB2YXJpYWJsZXMgYmVsb25naW5nIHRvIHJvbGUgJXMiKSwKKwkJCQkJCQkJCQkJIHJvbGVu YW1lKTsKKwkJCQkJCWJyZWFrOwogCQkJCQlkZWZhdWx0OgogCQkJCQkJLyogc2hvdWxkbid0IGdl dCBoZXJlICovCiAJCQkJCQlpZiAobnNwbmFtZSkKQEAgLTQwNzAsNiArNDE1NiwxMCBAQCBnZXRP YmplY3RUeXBlRGVzY3JpcHRpb24oY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0KQogCQkJYXBw ZW5kU3RyaW5nSW5mb1N0cmluZygmYnVmZmVyLCAidHJhbnNmb3JtIik7CiAJCQlicmVhazsKIAor CQljYXNlIE9DTEFTU19WQVJJQUJMRToKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZmZl ciwgInNjaGVtYSB2YXJpYWJsZSIpOworCQkJYnJlYWs7CisKIAkJCS8qCiAJCQkgKiBUaGVyZSdz IGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDogY2FzZSBoZXJlOyB3ZSB3YW50IHRoZQogCQkJICog Y29tcGlsZXIgdG8gd2FybiBpZiBhIG5ldyBPQ0xBU1MgaGFzbid0IGJlZW4gaGFuZGxlZCBhYm92 ZS4KQEAgLTQ5NjIsNiArNTA1MiwxMCBAQCBnZXRPYmplY3RJZGVudGl0eVBhcnRzKGNvbnN0IE9i amVjdEFkZHJlc3MgKm9iamVjdCwKIAkJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZmZl ciwKIAkJCQkJCQkJCQkJICAgIiBvbiBzY2hlbWFzIik7CiAJCQkJCQlicmVhazsKKwkJCQkJY2Fz ZSBERUZBQ0xPQkpfVkFSSUFCTEU6CisJCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWZm ZXIsCisJCQkJCQkJCQkJCSAgICIgb24gdmFyaWFibGVzIik7CisJCQkJCQlicmVhazsKIAkJCQl9 CiAKIAkJCQlpZiAob2JqbmFtZSkKQEAgLTUxMjEsNiArNTIxNSwzMyBAQCBnZXRPYmplY3RJZGVu dGl0eVBhcnRzKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwKIAkJCX0KIAkJCWJyZWFrOwog CisJCWNhc2UgT0NMQVNTX1ZBUklBQkxFOgorCQkJeworCQkJCWNoYXIJICAgKnNjaGVtYTsKKwkJ CQljaGFyCSAgICp2YXJuYW1lOworCQkJCUhlYXBUdXBsZQl0dXA7CisJCQkJRm9ybV9wZ192YXJp YWJsZQl2YXJmb3JtOworCisJCQkJdHVwID0gU2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBP YmplY3RJZEdldERhdHVtKG9iamVjdC0+b2JqZWN0SWQpKTsKKwkJCQlpZiAoIUhlYXBUdXBsZUlz VmFsaWQodHVwKSkKKwkJCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHNj aGVtYSB2YXJpYWJsZSAldSIsCisJCQkJCQkgb2JqZWN0LT5vYmplY3RJZCk7CisKKwkJCQl2YXJm b3JtID0gKEZvcm1fcGdfdmFyaWFibGUpIEdFVFNUUlVDVCh0dXApOworCisJCQkJc2NoZW1hID0g Z2V0X25hbWVzcGFjZV9uYW1lX29yX3RlbXAodmFyZm9ybS0+dmFybmFtZXNwYWNlKTsKKwkJCQl2 YXJuYW1lID0gTmFtZVN0cih2YXJmb3JtLT52YXJuYW1lKTsKKworCQkJCWFwcGVuZFN0cmluZ0lu Zm8oJmJ1ZmZlciwgIiVzIiwKKwkJCQkJCQkJcXVvdGVfcXVhbGlmaWVkX2lkZW50aWZpZXIoc2No ZW1hLCB2YXJuYW1lKSk7CisKKwkJCQlpZiAob2JqbmFtZSkKKwkJCQkJKm9iam5hbWUgPSBsaXN0 X21ha2UyKHNjaGVtYSwgdmFybmFtZSk7CisKKwkJCQlSZWxlYXNlU3lzQ2FjaGUodHVwKTsKKwkJ CQlicmVhazsKKwkJCX0KKwogCQkJLyoKIAkJCSAqIFRoZXJlJ3MgaW50ZW50aW9uYWxseSBubyBk ZWZhdWx0OiBjYXNlIGhlcmU7IHdlIHdhbnQgdGhlCiAJCQkgKiBjb21waWxlciB0byB3YXJuIGlm IGEgbmV3IE9DTEFTUyBoYXNuJ3QgYmVlbiBoYW5kbGVkIGFib3ZlLgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY2F0YWxvZy9wZ192YXJpYWJsZS5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ192 YXJpYWJsZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmZmNzFmOGJm NmEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3ZhcmlhYmxlLmMK QEAgLTAsMCArMSwzMDUgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHBnX3ZhcmlhYmxl LmMKKyAqCQlzY2hlbWEgdmFyaWFibGVzCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAx OTk2LTIwMTgsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9u cyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZv cm5pYQorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkJc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ192 YXJpYWJsZS5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2luY2x1ZGUgInBvc3Rn cmVzLmgiCisKKyNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKworI2luY2x1ZGUgImFjY2Vzcy9nZW5h bS5oIgorI2luY2x1ZGUgImFjY2Vzcy9oZWFwYW0uaCIKKyNpbmNsdWRlICJhY2Nlc3MvaHR1cF9k ZXRhaWxzLmgiCisjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKKworI2luY2x1ZGUgImNhdGFsb2cv ZGVwZW5kZW5jeS5oIgorI2luY2x1ZGUgImNhdGFsb2cvaW5kZXhpbmcuaCIKKyNpbmNsdWRlICJj YXRhbG9nL25hbWVzcGFjZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvb2JqZWN0YWNjZXNzLmgiCisj aW5jbHVkZSAiY2F0YWxvZy9wZ19uYW1lc3BhY2UuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3R5 cGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3ZhcmlhYmxlLmgiCisKKyNpbmNsdWRlICJub2Rl cy9tYWtlZnVuY3MuaCIKKworI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgorCisjaW5jbHVkZSAi dXRpbHMvYXJyYXkuaCIKKyNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0 aWxzL2ZtZ3JvaWRzLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAi dXRpbHMvcGdfbHNuLmgiCisjaW5jbHVkZSAidXRpbHMvcmVsLmgiCisjaW5jbHVkZSAidXRpbHMv c3lzY2FjaGUuaCIKKworLyoKKyAqIFJldHVybnMgbmFtZSBvZiBzY2hlbWEgdmFyaWFibGUuIFdo ZW4gdmFyaWFibGUgaXMgbm90IG9uIHBhdGgsCisgKiB0aGVuIHRoZSBuYW1lIGlzIHF1YWxpZmll ZC4KKyAqLworY2hhciAqCitzY2hlbWFfdmFyaWFibGVfZ2V0X25hbWUoT2lkIHZhcmlkKQorewor CUhlYXBUdXBsZQl0dXA7CisJRm9ybV9wZ192YXJpYWJsZSB2YXJmb3JtOworCWNoYXIgICAqdmFy bmFtZTsKKwljaGFyICAgKm5zcG5hbWU7CisJY2hhciAgICpyZXN1bHQ7CisKKwl0dXAgPSBTZWFy Y2hTeXNDYWNoZTEoVkFSSUFCTEVPSUQsIE9iamVjdElkR2V0RGF0dW0odmFyaWQpKTsKKworCWlm ICghSGVhcFR1cGxlSXNWYWxpZCh0dXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZh aWxlZCBmb3IgdmFyaWFibGUgJXUiLCB2YXJpZCk7CisKKwl2YXJmb3JtID0gKEZvcm1fcGdfdmFy aWFibGUpIEdFVFNUUlVDVCh0dXApOworCisJdmFybmFtZSA9IE5hbWVTdHIodmFyZm9ybS0+dmFy bmFtZSk7CisKKwlpZiAoVmFyaWFibGVJc1Zpc2libGUodmFyaWQpKQorCQluc3BuYW1lID0gTlVM TDsKKwllbHNlCisJCW5zcG5hbWUgPSBnZXRfbmFtZXNwYWNlX25hbWUodmFyZm9ybS0+dmFybmFt ZXNwYWNlKTsKKworCXJlc3VsdCA9IHF1b3RlX3F1YWxpZmllZF9pZGVudGlmaWVyKG5zcG5hbWUs IHZhcm5hbWUpOworCisJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CisKKwlyZXR1cm4gcmVzdWx0Owor fQorCisvKgorICogUmV0dXJucyB2YXJuYW1lIGZpZWxkIG9mIHBnX3ZhcmlhYmxlCisgKi8KK2No YXIgKgorZ2V0X3NjaGVtYV92YXJpYWJsZV9uYW1lKE9pZCB2YXJpZCkKK3sKKwlIZWFwVHVwbGUJ dHVwOworCUZvcm1fcGdfdmFyaWFibGUgdmFyZm9ybTsKKwljaGFyICAgKnZhcm5hbWU7CisKKwl0 dXAgPSBTZWFyY2hTeXNDYWNoZTEoVkFSSUFCTEVPSUQsIE9iamVjdElkR2V0RGF0dW0odmFyaWQp KTsKKworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUg bG9va3VwIGZhaWxlZCBmb3IgdmFyaWFibGUgJXUiLCB2YXJpZCk7CisKKwl2YXJmb3JtID0gKEZv cm1fcGdfdmFyaWFibGUpIEdFVFNUUlVDVCh0dXApOworCisJdmFybmFtZSA9IE5hbWVTdHIodmFy Zm9ybS0+dmFybmFtZSk7CisKKwlSZWxlYXNlU3lzQ2FjaGUodHVwKTsKKworCXJldHVybiB2YXJu YW1lOworfQorCisvKgorICogUmV0dXJucyB0eXBlLCB0eXBtb2Qgb2Ygc2NoZW1hIHZhcmlhYmxl CisgKi8KK3ZvaWQKK2dldF9zY2hlbWFfdmFyaWFibGVfdHlwZV90eXBtb2QoT2lkIHZhcmlkLCBP aWQgKnR5cGlkLCBpbnQzMiAqdHlwbW9kKQoreworCUhlYXBUdXBsZQl0dXA7CisJRm9ybV9wZ192 YXJpYWJsZSB2YXJmb3JtOworCisJdHVwID0gU2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBP YmplY3RJZEdldERhdHVtKHZhcmlkKSk7CisKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwKSkK KwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHZhcmlhYmxlICV1IiwgdmFy aWQpOworCisJdmFyZm9ybSA9IChGb3JtX3BnX3ZhcmlhYmxlKSBHRVRTVFJVQ1QodHVwKTsKKwor CSp0eXBpZCA9IHZhcmZvcm0tPnZhcnR5cGU7CisJKnR5cG1vZCA9IHZhcmZvcm0tPnZhcnR5cG1v ZDsKKworCVJlbGVhc2VTeXNDYWNoZSh0dXApOworCisJcmV0dXJuOworfQorCisvKgorICogRmV0 Y2ggYWxsIGZpZWxkcyBvZiBzY2hlbWEgdmFyaWFibGUgZnJvbSB0aGUgc3lzY2FjaGUuCisgKi8K K1ZhcmlhYmxlICoKK0dldFZhcmlhYmxlKE9pZCB2YXJpZCwgYm9vbCBtaXNzaW5nX29rKQorewor CUhlYXBUdXBsZQl0dXA7CisJVmFyaWFibGUgKnZhcjsKKwlGb3JtX3BnX3ZhcmlhYmxlIHZhcmZv cm07CisJRGF0dW0JCWFjbERhdHVtOworCURhdHVtCQlkZWZleHByRGF0dW07CisJYm9vbAkJaXNu dWxsOworCisJdHVwID0gU2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERh dHVtKHZhcmlkKSk7CisKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwKSkKKwl7CisJCWlmICht aXNzaW5nX29rKQorCQkJcmV0dXJuIE5VTEw7CisKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1 cCBmYWlsZWQgZm9yIHZhcmlhYmxlICV1IiwgdmFyaWQpOworCX0KKworCXZhcmZvcm0gPSAoRm9y bV9wZ192YXJpYWJsZSkgR0VUU1RSVUNUKHR1cCk7CisKKwl2YXIgPSAoVmFyaWFibGUgKikgcGFs bG9jKHNpemVvZihWYXJpYWJsZSkpOworCXZhci0+b2lkID0gdmFyaWQ7CisJdmFyLT5uYW1lID0g cHN0cmR1cChOYW1lU3RyKHZhcmZvcm0tPnZhcm5hbWUpKTsKKwl2YXItPm5hbWVzcGFjZSA9IHZh cmZvcm0tPnZhcm5hbWVzcGFjZTsKKwl2YXItPnR5cGlkID0gdmFyZm9ybS0+dmFydHlwZTsKKwl2 YXItPnR5cG1vZCA9IHZhcmZvcm0tPnZhcnR5cG1vZDsKKwl2YXItPm93bmVyID0gdmFyZm9ybS0+ dmFyb3duZXI7CisKKwkvKiBHZXQgZGVmZXhwciAqLworCWRlZmV4cHJEYXR1bSA9IFN5c0NhY2hl R2V0QXR0cihWQVJJQUJMRU9JRCwKKwkJCQkJCQl0dXAsCisJCQkJCQkJQW51bV9wZ192YXJpYWJs ZV92YXJkZWZleHByLAorCQkJCQkJCSZpc251bGwpOworCisJaWYgKCFpc251bGwpCisJCXZhci0+ ZGVmZXhwciA9IHN0cmluZ1RvTm9kZShUZXh0RGF0dW1HZXRDU3RyaW5nKGRlZmV4cHJEYXR1bSkp OworCWVsc2UKKwkJdmFyLT5kZWZleHByID0gTlVMTDsKKworCS8qIEdldCB2YXJhY2wgKi8KKwlh Y2xEYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihWQVJJQUJMRU9JRCwKKwkJCQkJCQl0dXAsCisJCQkJ CQkJQW51bV9wZ192YXJpYWJsZV92YXJhY2wsCisJCQkJCQkJJmlzbnVsbCk7CisJaWYgKCFpc251 bGwpCisJCXZhci0+YWNsID0gRGF0dW1HZXRBY2xQQ29weShhY2xEYXR1bSk7CisJZWxzZQorCQl2 YXItPmFjbCA9IE5VTEw7CisKKwlSZWxlYXNlU3lzQ2FjaGUodHVwKTsKKworCXJldHVybiB2YXI7 Cit9CisKK09iamVjdEFkZHJlc3MKK1ZhcmlhYmxlQ3JlYXRlKGNvbnN0IGNoYXIgKnZhck5hbWUs CisJCQkgICBPaWQgdmFyTmFtZXNwYWNlLAorCQkJICAgT2lkIHZhclR5cGUsCisJCQkgICBpbnQz MiB2YXJUeXBtb2QsCisJCQkgICBPaWQgdmFyT3duZXIsCisJCQkgICBOb2RlICp2YXJEZWZleHBy LAorCQkJICAgYm9vbCBpZl9ub3RfZXhpc3RzKQoreworCUFjbAkJICAgKnZhcmFjbDsKKwlOYW1l RGF0YQl2YXJuYW1lOworCWJvb2wJCW51bGxzW05hdHRzX3BnX3ZhcmlhYmxlXTsKKwlEYXR1bQkJ dmFsdWVzW05hdHRzX3BnX3ZhcmlhYmxlXTsKKwlSZWxhdGlvbglyZWw7CisJSGVhcFR1cGxlCXR1 cCwKKwkJCQlvbGR0dXA7CisJVHVwbGVEZXNjCXR1cGRlc2M7CisJT2JqZWN0QWRkcmVzcwlteXNl bGYsCisJCQkJCXJlZmVyZW5jZWQ7CisJT2lkCQkJcmV0dmFsOworCWludAkJCWk7CisKKwlmb3Ig KGkgPSAwOyBpIDwgTmF0dHNfcGdfdmFyaWFibGU7IGkrKykKKwl7CisJCW51bGxzW2ldID0gZmFs c2U7CisJCXZhbHVlc1tpXSA9IChEYXR1bSkgMDsKKwl9CisKKwluYW1lc3RyY3B5KCZ2YXJuYW1l LCB2YXJOYW1lKTsKKwl2YWx1ZXNbQW51bV9wZ192YXJpYWJsZV92YXJuYW1lIC0gMV0gPSBOYW1l R2V0RGF0dW0oJnZhcm5hbWUpOworCXZhbHVlc1tBbnVtX3BnX3ZhcmlhYmxlX3Zhcm5hbWVzcGFj ZSAtIDFdID0gT2JqZWN0SWRHZXREYXR1bSh2YXJOYW1lc3BhY2UpOworCXZhbHVlc1tBbnVtX3Bn X3ZhcmlhYmxlX3ZhcnR5cGUgLSAxXSA9IE9iamVjdElkR2V0RGF0dW0odmFyVHlwZSk7CisJdmFs dWVzW0FudW1fcGdfdmFyaWFibGVfdmFydHlwbW9kIC0gMV0gPSBJbnQzMkdldERhdHVtKHZhclR5 cG1vZCk7CisJdmFsdWVzW0FudW1fcGdfdmFyaWFibGVfdmFyb3duZXIgLSAxXSA9IE9iamVjdElk R2V0RGF0dW0odmFyT3duZXIpOworCS8qIHByb2FjbCB3aWxsIGJlIGRldGVybWluZWQgbGF0ZXIg Ki8KKworCWlmICh2YXJEZWZleHByKQorCQl2YWx1ZXNbQW51bV9wZ192YXJpYWJsZV92YXJkZWZl eHByIC0gMV0gPSBDU3RyaW5nR2V0VGV4dERhdHVtKG5vZGVUb1N0cmluZyh2YXJEZWZleHByKSk7 CisJZWxzZQorCQludWxsc1tBbnVtX3BnX3ZhcmlhYmxlX3ZhcmRlZmV4cHIgLSAxXSA9IHRydWU7 CisKKwlyZWwgPSBoZWFwX29wZW4oVmFyaWFibGVSZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2Nr KTsKKwl0dXBkZXNjID0gUmVsYXRpb25HZXREZXNjcihyZWwpOworCisJb2xkdHVwID0gU2VhcmNo U3lzQ2FjaGUyKFZBUklBQkxFTkFNRU5TUCwKKwkJCQkJCQkgUG9pbnRlckdldERhdHVtKHZhck5h bWUpLAorCQkJCQkJCSBPYmplY3RJZEdldERhdHVtKHZhck5hbWVzcGFjZSkpOworCisJaWYgKEhl YXBUdXBsZUlzVmFsaWQob2xkdHVwKSkKKwl7CisJCWlmIChpZl9ub3RfZXhpc3RzKQorCQkJZXJl cG9ydChOT1RJQ0UsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX09CSkVDVCksCisJ CQkJCSBlcnJtc2coInNjaGVtYSB2YXJpYWJsZSBcIiVzXCIgYWxyZWFkeSBleGlzdHMsIHNraXBw aW5nIiwKKwkJCQkJCQl2YXJOYW1lKSkpOworCQllbHNlCisJCQllcmVwb3J0KEVSUk9SLAorCQkJ CQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9PQkpFQ1QpLAorCQkJCQkgZXJybXNnKCJzY2hl bWEgdmFyaWFibGUgXCIlc1wiIGFscmVhZHkgZXhpc3RzIiwKKwkJCQkJCQl2YXJOYW1lKSkpOwor CisJCWhlYXBfZnJlZXR1cGxlKG9sZHR1cCk7CisJCWhlYXBfY2xvc2UocmVsLCBSb3dFeGNsdXNp dmVMb2NrKTsKKworCQlyZXR1cm4gSW52YWxpZE9iamVjdEFkZHJlc3M7CisJfQorCisJdmFyYWNs ID0gZ2V0X3VzZXJfZGVmYXVsdF9hY2woT0JKRUNUX1ZBUklBQkxFLCB2YXJPd25lciwKKwkJCQkJ CQkJICB2YXJOYW1lc3BhY2UpOworCisJaWYgKHZhcmFjbCAhPSBOVUxMKQorCQl2YWx1ZXNbQW51 bV9wZ192YXJpYWJsZV92YXJhY2wgLSAxXSA9IFBvaW50ZXJHZXREYXR1bSh2YXJhY2wpOworCWVs c2UKKwkJbnVsbHNbQW51bV9wZ192YXJpYWJsZV92YXJhY2wgLSAxXSA9IHRydWU7CisKKwl0dXAg PSBoZWFwX2Zvcm1fdHVwbGUodHVwZGVzYywgdmFsdWVzLCBudWxscyk7CisJQ2F0YWxvZ1R1cGxl SW5zZXJ0KHJlbCwgdHVwKTsKKworCXJldHZhbCA9IEhlYXBUdXBsZUdldE9pZCh0dXApOworCisJ bXlzZWxmLmNsYXNzSWQgPSBWYXJpYWJsZVJlbGF0aW9uSWQ7CisJbXlzZWxmLm9iamVjdElkID0g cmV0dmFsOworCW15c2VsZi5vYmplY3RTdWJJZCA9IDA7CisKKwkvKiBkZXBlbmRlbmN5IG9uIG5h bWVzcGFjZSAqLworCXJlZmVyZW5jZWQuY2xhc3NJZCA9IE5hbWVzcGFjZVJlbGF0aW9uSWQ7CisJ cmVmZXJlbmNlZC5vYmplY3RJZCA9IHZhck5hbWVzcGFjZTsKKwlyZWZlcmVuY2VkLm9iamVjdFN1 YklkID0gMDsKKwlyZWNvcmREZXBlbmRlbmN5T24oJm15c2VsZiwgJnJlZmVyZW5jZWQsIERFUEVO REVOQ1lfTk9STUFMKTsKKworCS8qIGRlcGVuZGVuY3kgb24gdXNlZCB0eXBlICovCisJcmVmZXJl bmNlZC5jbGFzc0lkID0gVHlwZVJlbGF0aW9uSWQ7CisJcmVmZXJlbmNlZC5vYmplY3RJZCA9IHZh clR5cGU7CisJcmVmZXJlbmNlZC5vYmplY3RTdWJJZCA9IDA7CisJcmVjb3JkRGVwZW5kZW5jeU9u KCZteXNlbGYsICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZX05PUk1BTCk7CisKKwkvKiBkZXBlbmRl bmN5IG9uIGFueSByb2xlcyBtZW50aW9uZWQgaW4gQUNMICovCisJaWYgKHZhcmFjbCAhPSBOVUxM KQorCXsKKwkJaW50CQkJbm5ld21lbWJlcnM7CisJCU9pZAkJICAgKm5ld21lbWJlcnM7CisKKwkJ bm5ld21lbWJlcnMgPSBhY2xtZW1iZXJzKHZhcmFjbCwgJm5ld21lbWJlcnMpOworCQl1cGRhdGVB Y2xEZXBlbmRlbmNpZXMoVmFyaWFibGVSZWxhdGlvbklkLCByZXR2YWwsIDAsCisJCQkJCQkJICB2 YXJPd25lciwKKwkJCQkJCQkgIDAsIE5VTEwsCisJCQkJCQkJICBubmV3bWVtYmVycywgbmV3bWVt YmVycyk7CisJfQorCisJLyogZGVwZW5kZW5jeSBvbiBleHRlbnNpb24gKi8KKwlyZWNvcmREZXBl bmRlbmN5T25DdXJyZW50RXh0ZW5zaW9uKCZteXNlbGYsIGZhbHNlKTsKKworCWhlYXBfZnJlZXR1 cGxlKHR1cCk7CisKKwkvKiBQb3N0IGNyZWF0aW9uIGhvb2sgZm9yIG5ldyBmdW5jdGlvbiAqLwor CUludm9rZU9iamVjdFBvc3RDcmVhdGVIb29rKFZhcmlhYmxlUmVsYXRpb25JZCwgcmV0dmFsLCAw KTsKKworCWhlYXBfY2xvc2UocmVsLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCXJldHVybiBteXNl bGY7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZSBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL01ha2VmaWxlCmluZGV4IDRhNmM5OWUwOTAuLjJjYjViMTE3MmQgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL01ha2VmaWxlCkBAIC0xOCw3ICsxOCw3IEBAIE9CSlMgPSBhbWNtZHMubyBhZ2dy ZWdhdGVjbWRzLm8gYWx0ZXIubyBhbmFseXplLm8gYXN5bmMubyBjbHVzdGVyLm8gY29tbWVudC5v IFwKIAlldmVudF90cmlnZ2VyLm8gZXhwbGFpbi5vIGV4dGVuc2lvbi5vIGZvcmVpZ25jbWRzLm8g ZnVuY3Rpb25jbWRzLm8gXAogCWluZGV4Y21kcy5vIGxvY2tjbWRzLm8gbWF0dmlldy5vIG9wZXJh dG9yY21kcy5vIG9wY2xhc3NjbWRzLm8gXAogCXBvbGljeS5vIHBvcnRhbGNtZHMubyBwcmVwYXJl Lm8gcHJvY2xhbmcubyBwdWJsaWNhdGlvbmNtZHMubyBcCi0Jc2NoZW1hY21kcy5vIHNlY2xhYmVs Lm8gc2VxdWVuY2UubyBzdGF0c2NtZHMubyBzdWJzY3JpcHRpb25jbWRzLm8gXAorCXNjaGVtYWNt ZHMubyBzZWNsYWJlbC5vIHNlcXVlbmNlLm8gc2NoZW1hdmFyaWFibGUubyBzdGF0c2NtZHMubyBz dWJzY3JpcHRpb25jbWRzLm8gXAogCXRhYmxlY21kcy5vIHRhYmxlc3BhY2UubyB0cmlnZ2VyLm8g dHNlYXJjaGNtZHMubyB0eXBlY21kcy5vIHVzZXIubyBcCiAJdmFjdXVtLm8gdmFjdXVtbGF6eS5v IHZhcmlhYmxlLm8gdmlldy5vCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Fs dGVyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbHRlci5jCmluZGV4IGVmZjMyNWNjN2QuLmE5 ZDVlNWUwYWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FsdGVyLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIuYwpAQCAtMzg3LDYgKzM4Nyw3IEBAIEV4ZWNSZW5h bWVTdG10KFJlbmFtZVN0bXQgKnN0bXQpCiAJCWNhc2UgT0JKRUNUX1RTVEVNUExBVEU6CiAJCWNh c2UgT0JKRUNUX1BVQkxJQ0FUSU9OOgogCQljYXNlIE9CSkVDVF9TVUJTQ1JJUFRJT046CisJCWNh c2UgT0JKRUNUX1ZBUklBQkxFOgogCQkJewogCQkJCU9iamVjdEFkZHJlc3MgYWRkcmVzczsKIAkJ CQlSZWxhdGlvbgljYXRhbG9nOwpAQCAtNTA0LDYgKzUwNSw3IEBAIEV4ZWNBbHRlck9iamVjdFNj aGVtYVN0bXQoQWx0ZXJPYmplY3RTY2hlbWFTdG10ICpzdG10LAogCQljYXNlIE9CSkVDVF9UU0RJ Q1RJT05BUlk6CiAJCWNhc2UgT0JKRUNUX1RTUEFSU0VSOgogCQljYXNlIE9CSkVDVF9UU1RFTVBM QVRFOgorCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKIAkJCXsKIAkJCQlSZWxhdGlvbgljYXRhbG9n OwogCQkJCVJlbGF0aW9uCXJlbGF0aW9uOwpAQCAtNTk0LDYgKzU5Niw3IEBAIEFsdGVyT2JqZWN0 TmFtZXNwYWNlX29pZChPaWQgY2xhc3NJZCwgT2lkIG9iamlkLCBPaWQgbnNwT2lkLAogCQljYXNl IE9DTEFTU19UU0RJQ1Q6CiAJCWNhc2UgT0NMQVNTX1RTVEVNUExBVEU6CiAJCWNhc2UgT0NMQVNT X1RTQ09ORklHOgorCQljYXNlIE9DTEFTU19WQVJJQUJMRToKIAkJCXsKIAkJCQlSZWxhdGlvbglj YXRhbG9nOwogCkBAIC04NTIsNiArODU1LDcgQEAgRXhlY0FsdGVyT3duZXJTdG10KEFsdGVyT3du ZXJTdG10ICpzdG10KQogCQljYXNlIE9CSkVDVF9UQUJMRVNQQUNFOgogCQljYXNlIE9CSkVDVF9U U0RJQ1RJT05BUlk6CiAJCWNhc2UgT0JKRUNUX1RTQ09ORklHVVJBVElPTjoKKwkJY2FzZSBPQkpF Q1RfVkFSSUFCTEU6CiAJCQl7CiAJCQkJUmVsYXRpb24JY2F0YWxvZzsKIAkJCQlSZWxhdGlvbgly ZWxhdGlvbjsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Rpc2NhcmQuYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2Rpc2NhcmQuYwppbmRleCAwMWE5OTljMmFjLi5mZWMyNDk1ZTkz IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9kaXNjYXJkLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvZGlzY2FyZC5jCkBAIC0xOSw2ICsxOSw3IEBACiAjaW5jbHVkZSAiY29t bWFuZHMvZGlzY2FyZC5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3ByZXBhcmUuaCIKICNpbmNsdWRl ICJjb21tYW5kcy9zZXF1ZW5jZS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3NjaGVtYXZhcmlhYmxl LmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCiAjaW5jbHVkZSAidXRpbHMvcG9ydGFsLmgiCiAK QEAgLTQ4LDYgKzQ5LDEwIEBAIERpc2NhcmRDb21tYW5kKERpc2NhcmRTdG10ICpzdG10LCBib29s IGlzVG9wTGV2ZWwpCiAJCQlSZXNldFRlbXBUYWJsZU5hbWVzcGFjZSgpOwogCQkJYnJlYWs7CiAK KwkJY2FzZSBESVNDQVJEX1ZBUklBQkxFUzoKKwkJCVJlc2V0U2NoZW1hVmFyaWFibGVDYWNoZSgp OworCQkJYnJlYWs7CisKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQg RElTQ0FSRCB0YXJnZXQ6ICVkIiwgc3RtdC0+dGFyZ2V0KTsKIAl9CkBAIC03NSw0ICs4MCw1IEBA IERpc2NhcmRBbGwoYm9vbCBpc1RvcExldmVsKQogCVJlc2V0UGxhbkNhY2hlKCk7CiAJUmVzZXRU ZW1wVGFibGVOYW1lc3BhY2UoKTsKIAlSZXNldFNlcXVlbmNlQ2FjaGVzKCk7CisJUmVzZXRTY2hl bWFWYXJpYWJsZUNhY2hlKCk7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9l dmVudF90cmlnZ2VyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMKaW5k ZXggZWVjYzg1ZDE0ZS4uNDI2ZGYyNDZiMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvZXZlbnRfdHJpZ2dlci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdn ZXIuYwpAQCAtMTI2LDYgKzEyNiw3IEBAIHN0YXRpYyBldmVudF90cmlnZ2VyX3N1cHBvcnRfZGF0 YSBldmVudF90cmlnZ2VyX3N1cHBvcnRbXSA9IHsKIAl7IlRFWFQgU0VBUkNIIFRFTVBMQVRFIiwg dHJ1ZX0sCiAJeyJUWVBFIiwgdHJ1ZX0sCiAJeyJVU0VSIE1BUFBJTkciLCB0cnVlfSwKKwl7IlZB UklBQkxFIiwgdHJ1ZX0sCiAJeyJWSUVXIiwgdHJ1ZX0sCiAJe05VTEwsIGZhbHNlfQogfTsKQEAg LTI5Nyw3ICsyOTgsOCBAQCBjaGVja19kZGxfdGFnKGNvbnN0IGNoYXIgKnRhZykKIAkJcGdfc3Ry Y2FzZWNtcCh0YWcsICJSRVZPS0UiKSA9PSAwIHx8CiAJCXBnX3N0cmNhc2VjbXAodGFnLCAiRFJP UCBPV05FRCIpID09IDAgfHwKIAkJcGdfc3RyY2FzZWNtcCh0YWcsICJJTVBPUlQgRk9SRUlHTiBT Q0hFTUEiKSA9PSAwIHx8Ci0JCXBnX3N0cmNhc2VjbXAodGFnLCAiU0VDVVJJVFkgTEFCRUwiKSA9 PSAwKQorCQlwZ19zdHJjYXNlY21wKHRhZywgIlNFQ1VSSVRZIExBQkVMIikgPT0gMCB8fAorCQlw Z19zdHJjYXNlY21wKHRhZywgIkNSRUFURSBWQVJJQUJMRSIpID09IDApCiAJCXJldHVybiBFVkVO VF9UUklHR0VSX0NPTU1BTkRfVEFHX09LOwogCiAJLyoKQEAgLTExNDYsNiArMTE0OCw3IEBAIEV2 ZW50VHJpZ2dlclN1cHBvcnRzT2JqZWN0VHlwZShPYmplY3RUeXBlIG9idHlwZSkKIAkJY2FzZSBP QkpFQ1RfVFNURU1QTEFURToKIAkJY2FzZSBPQkpFQ1RfVFlQRToKIAkJY2FzZSBPQkpFQ1RfVVNF Ul9NQVBQSU5HOgorCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKIAkJY2FzZSBPQkpFQ1RfVklFVzoK IAkJCXJldHVybiB0cnVlOwogCkBAIC0xMjA5LDYgKzEyMTIsNyBAQCBFdmVudFRyaWdnZXJTdXBw b3J0c09iamVjdENsYXNzKE9iamVjdENsYXNzIG9iamNsYXNzKQogCQljYXNlIE9DTEFTU19QVUJM SUNBVElPTl9SRUw6CiAJCWNhc2UgT0NMQVNTX1NVQlNDUklQVElPTjoKIAkJY2FzZSBPQ0xBU1Nf VFJBTlNGT1JNOgorCQljYXNlIE9DTEFTU19WQVJJQUJMRToKIAkJCXJldHVybiB0cnVlOwogCiAJ CQkvKgpAQCAtMjI0NCw2ICsyMjQ4LDggQEAgc3RyaW5naWZ5X2dyYW50X29ianR5cGUoT2JqZWN0 VHlwZSBvYmp0eXBlKQogCQkJcmV0dXJuICJUQUJMRVNQQUNFIjsKIAkJY2FzZSBPQkpFQ1RfVFlQ RToKIAkJCXJldHVybiAiVFlQRSI7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJcmV0dXJu ICJWQVJJQUJMRSI7CiAJCQkvKiB0aGVzZSBjdXJyZW50bHkgYXJlbid0IHVzZWQgKi8KIAkJY2Fz ZSBPQkpFQ1RfQUNDRVNTX01FVEhPRDoKIAkJY2FzZSBPQkpFQ1RfQUdHUkVHQVRFOgpAQCAtMjMy Niw2ICsyMzMyLDggQEAgc3RyaW5naWZ5X2FkZWZwcml2c19vYmp0eXBlKE9iamVjdFR5cGUgb2Jq dHlwZSkKIAkJCXJldHVybiAiVEFCTEVTUEFDRVMiOwogCQljYXNlIE9CSkVDVF9UWVBFOgogCQkJ cmV0dXJuICJUWVBFUyI7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJcmV0dXJuICJWQVJJ QUJMRVMiOwogCQkJLyogdGhlc2UgY3VycmVudGx5IGFyZW4ndCB1c2VkICovCiAJCWNhc2UgT0JK RUNUX0FDQ0VTU19NRVRIT0Q6CiAJCWNhc2UgT0JKRUNUX0FHR1JFR0FURToKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3By ZXBhcmUuYwppbmRleCBiOTQ1YjE1NTZhLi5lYjhjMDhiYWYzIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFy ZS5jCkBAIC0xNTEsNiArMTUxLDcgQEAgUHJlcGFyZVF1ZXJ5KFByZXBhcmVTdG10ICpzdG10LCBj b25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkJY2FzZSBDTURfSU5TRVJUOgogCQljYXNlIENNRF9V UERBVEU6CiAJCWNhc2UgQ01EX0RFTEVURToKKwkJY2FzZSBDTURfUExBTl9VVElMSVRZOgogCQkJ LyogT0sgKi8KIAkJCWJyZWFrOwogCQlkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvc2NoZW1hdmFyaWFibGUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NjaGVtYXZh cmlhYmxlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMjA4ZDBkMjBj NAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NjaGVtYXZhcmlhYmxl LmMKQEAgLTAsMCArMSw0NzAgQEAKKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorI2luY2x1ZGUgIm1p c2NhZG1pbi5oIgorCisjaW5jbHVkZSAiYWNjZXNzL2hlYXBhbS5oIgorI2luY2x1ZGUgImFjY2Vz cy9odHVwX2RldGFpbHMuaCIKKyNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgorI2luY2x1ZGUgImNh dGFsb2cvaW5kZXhpbmcuaCIKKyNpbmNsdWRlICJjYXRhbG9nL25hbWVzcGFjZS5oIgorI2luY2x1 ZGUgImNhdGFsb2cvcGdfdmFyaWFibGUuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9zY2hlbWF2YXJp YWJsZS5oIgorI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCisjaW5jbHVkZSAiZXhlY3V0 b3Ivc3ZhcmlhYmxlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJub2Rlcy9leGVjbm9kZXMuaCIKKyNp bmNsdWRlICJvcHRpbWl6ZXIvcGxhbm5lci5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJzZV9jb2Vy Y2UuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2VfZXhwci5oIgorI2luY2x1ZGUgInBhcnNlci9w YXJzZV90eXBlLmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGls cy9kYXR1bS5oIgorI2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCisjaW5jbHVkZSAidXRpbHMvbWVt dXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9z bmFwbWdyLmgiCisjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKKworLyoKKyAqIFRoZSBjb250 ZW50IG9mIHZhcmlhYmxlcyBpcyBub3QgdHJhbnNhY3Rpb25hbC4gRHVlIHRoaXMgZmFjdCB0aGUK KyAqIGltcGxlbWVudGF0aW9uIG9mIERST1AgY2FuIGJlIHNpbXBsZSwgYmVjYXVzZSBhbHRob3Vn aCBEUk9QIFZBUklBQkxFCisgKiBjYW4gYmUgcmV2ZXJ0ZWQsIHRoZSBjb250ZW50IG9mIHZhcmlh YmxlIGNhbiBiZSBsb3N0LiBJbiB0aGlzIGV4YW1wbGUsCisgKiBEUk9QIFZBUklBQkxFIGlzIHNh bWUgbGlrZSByZXNldCB2YXJpYWJsZS4KKyAqLworCit0eXBlZGVmIHN0cnVjdCBTY2hlbWFWYXJp YWJsZURhdGEKK3sKKwlPaWQJCQl2YXJpZDsJCQkvKiBwZ192YXJpYWJsZSBPSUQgb2YgdGhpcyBz ZXF1ZW5jZSAoaGFzaCBrZXkpICovCisJT2lkCQkJdHlwaWQ7CQkJLyogT0lEIG9mIHRoZSBkYXRh IHR5cGUgKi8KKwlpbnQzMgkJdHlwbW9kOworCWludDE2CQl0eXBsZW47CisJYm9vbAkJdHlwYnl2 YWw7CisJYm9vbAkJaXNudWxsOworCWJvb2wJCWZyZWV2YWw7CisJRGF0dW0JCXZhbHVlOworCWJv b2wJCWlzX3Jvd3R5cGU7CQkvKiB0cnVlIHdoZW4gdmFyaWFibGUgaXMgY29tcG9zaXRlICovCisJ Ym9vbAkJaXNfdmFsaWQ7CQkvKiB0cnVlIHdoZW4gdmFyaWFibGUgd2FzIHN1Y2Nlc3NmdWx5IGlu aXRpYWxpemVkICovCit9IFNjaGVtYVZhcmlhYmxlRGF0YTsKKwordHlwZWRlZiBTY2hlbWFWYXJp YWJsZURhdGEgKlNjaGVtYVZhcmlhYmxlOworCitzdGF0aWMgSFRBQiAqc2NoZW1hdmFyaGFzaHRh YiA9IE5VTEw7CQkvKiBoYXNoIHRhYmxlIGZvciBzZXNzaW9uIHZhcmlhYmxlcyAqLworc3RhdGlj IE1lbW9yeUNvbnRleHQgU2NoZW1hVmFyaWFibGVNZW1vcnlDb250ZXh0ID0gTlVMTDsKKworc3Rh dGljIGJvb2wgZmlyc3RfdGltZSA9IHRydWU7CitzdGF0aWMgdm9pZCBjcmVhdGVfc2NoZW1hdmFy X2hhc2h0YWJsZSh2b2lkKTsKK3N0YXRpYyBib29sIGNsZWFuX2NhY2hlX3JlcSA9IGZhbHNlOwor CitzdGF0aWMgdm9pZCBjbGVhbl9jYWNoZSh2b2lkKTsKK3N0YXRpYyB2b2lkIGZvcmNlX2NsZWFu X2NhY2hlKFhhY3RFdmVudCBldmVudCwgdm9pZCAqYXJnKTsKKworCisvKgorICogU2F2ZSBpbmZv IGFib3V0IG5jZXNzaXR5IHRvIGNsZWFuIGhhc2ggdGFibGUsIGJlY2F1c2Ugc29tZQorICogc2No ZW1hIHZhcmlhYmxlIHdhcyBkcm9wcGVkLiBEb24ndCBkbyBoZXJlIG1vcmUsIHJlY2hlY2sKKyAq IG5lZWRzIHRvIGJlIGluIHRyYW5zYWN0aW9uIHN0YXRlLgorICovCitzdGF0aWMgdm9pZAorSW52 YWxpZGF0ZVNjaGVtYVZhckNhY2hlQ2FsbGJhY2soRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWlu dDMyIGhhc2h2YWx1ZSkKK3sKKwlpZiAoY2FjaGVpZCAhPSBWQVJJQUJMRU9JRCkKKwkJcmV0dXJu OworCisJY2xlYW5fY2FjaGVfcmVxID0gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQKK2ZvcmNlX2Ns ZWFuX2NhY2hlKFhhY3RFdmVudCBldmVudCwgdm9pZCAqYXJnKQoreworCS8qCisJICogc2hvdWxk IGNvbnRpbnVlIG9ubHkgaW4gdHJhbnNhY3Rpb24gdGltZSwgd2hlbgorCSAqIHN5c2NhY2hlIGlz IGF2YWlsYWJsZS4KKwkgKi8KKwlpZiAoY2xlYW5fY2FjaGVfcmVxICYmIElzVHJhbnNhY3Rpb25T dGF0ZSgpKQorCXsKKwkJY2xlYW5fY2FjaGUoKTsKKwkJY2xlYW5fY2FjaGVfcmVxID0gZmFsc2U7 CisJfQorfQorCitzdGF0aWMgdm9pZAorY2xlYW5fY2FjaGUodm9pZCkKK3sKKwlIQVNIX1NFUV9T VEFUVVMgc3RhdHVzOworCVNjaGVtYVZhcmlhYmxlCQl2YXI7CisKKwlpZiAoIXNjaGVtYXZhcmhh c2h0YWIpCisJCXJldHVybjsKKworCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgc2NoZW1hdmFyaGFz aHRhYik7CisKKwkvKgorCSAqIEV2ZXJ5IHZhbGlkIHZhcmlhYmxlIGhhdmUgdG8gaGF2ZSBlbnRy eSBpbiBzeXN0ZW0KKwkgKiBjYXRhbG9nLiBSZW1vdmVkIGlmIHRoZXJlIGlzIG5vdGhpbmcuCisJ ICovCisJd2hpbGUgKCh2YXIgPSAoU2NoZW1hVmFyaWFibGUpIGhhc2hfc2VxX3NlYXJjaCgmc3Rh dHVzKSkgIT0gTlVMTCkKKwl7CisJCUhlYXBUdXBsZQl0cCA9IEludmFsaWRPaWQ7CisKKwkJdHAg PSBTZWFyY2hTeXNDYWNoZTEoVkFSSUFCTEVPSUQsIE9iamVjdElkR2V0RGF0dW0odmFyLT52YXJp ZCkpOworCQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHApKQorCQl7CisJCQllbG9nKERFQlVHMSwg InZhcmlhYmxlICVkIGlzIHJlbW92ZWQgZnJvbSBjYWNoZSIsIHZhci0+dmFyaWQpOworCisJCQlp ZiAodmFyLT5mcmVldmFsKQorCQkJeworCQkJCXBmcmVlKERhdHVtR2V0UG9pbnRlcih2YXItPnZh bHVlKSk7CisJCQkJdmFyLT5mcmVldmFsID0gZmFsc2U7CisJCQl9CisKKwkJCWlmIChoYXNoX3Nl YXJjaChzY2hlbWF2YXJoYXNodGFiLAorCQkJCQkJCQkodm9pZCAqKSAmdmFyLT52YXJpZCwKKwkJ CQkJCQkJSEFTSF9SRU1PVkUsCisJCQkJCQkJCU5VTEwpID09IE5VTEwpCisJCQkJZWxvZyhERUJV RzEsICJoYXNoIHRhYmxlIGNvcnJ1cHRlZCIpOworCQl9CisJCWVsc2UKKwkJCVJlbGVhc2VTeXND YWNoZSh0cCk7CisJfQorfQorCitjaGFyICoKK1ZhcmlhYmxlR2V0TmFtZShWYXJpYWJsZSAqdmFy KQoreworCWNoYXIgICAqbnNwbmFtZTsKKworCWlmIChWYXJpYWJsZUlzVmlzaWJsZSh2YXItPm9p ZCkpCisJCW5zcG5hbWUgPSBOVUxMOworCWVsc2UKKwkJbnNwbmFtZSA9IGdldF9uYW1lc3BhY2Vf bmFtZSh2YXItPm5hbWVzcGFjZSk7CisKKwlyZXR1cm4gcXVvdGVfcXVhbGlmaWVkX2lkZW50aWZp ZXIobnNwbmFtZSwgdmFyLT5uYW1lKTsKK30KKworLyoKKyAqIENyZWF0ZSB0aGUgaGFzaCB0YWJs ZSBmb3Igc3RvcmluZyBzY2hlbWEgdmFyaWFibGVzCisgKi8KK3N0YXRpYyB2b2lkCitjcmVhdGVf c2NoZW1hdmFyX2hhc2h0YWJsZSh2b2lkKQoreworCUhBU0hDVEwJCWN0bDsKKworCS8qIHNldCBj YWxsYmFja3MgKi8KKwlpZiAoZmlyc3RfdGltZSkKKwl7CisJCUNhY2hlUmVnaXN0ZXJTeXNjYWNo ZUNhbGxiYWNrKFZBUklBQkxFT0lELAorCQkJCQkJCQkJICBJbnZhbGlkYXRlU2NoZW1hVmFyQ2Fj aGVDYWxsYmFjaywKKwkJCQkJCQkJCSAgKERhdHVtKSAwKTsKKworCQlSZWdpc3RlclhhY3RDYWxs YmFjayhmb3JjZV9jbGVhbl9jYWNoZSwgTlVMTCk7CisKKwkJZmlyc3RfdGltZSA9IGZhbHNlOwor CX0KKworCS8qIG5lZWRzIG93biBsb25nIGxpZmUgbWVtb3J5IGNvbnRleHQgKi8KKwlpZiAoU2No ZW1hVmFyaWFibGVNZW1vcnlDb250ZXh0ID09IE5VTEwpCisJeworCQlTY2hlbWFWYXJpYWJsZU1l bW9yeUNvbnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUoVG9wTWVtb3J5Q29udGV4dCwKKwkJ CQkJCQkJCQkJCQkJCSJzY2hlbWEgdmFyaWFibGVzIiwKKwkJCQkJCQkJCQkJCQkJCUFMTE9DU0VU X1NUQVJUX1NNQUxMX1NJWkVTKTsKKwl9CisKKwltZW1zZXQoJmN0bCwgMCwgc2l6ZW9mKGN0bCkp OworCWN0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7CisJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihT Y2hlbWFWYXJpYWJsZURhdGEpOworCWN0bC5oY3h0ID0gU2NoZW1hVmFyaWFibGVNZW1vcnlDb250 ZXh0OworCisJc2NoZW1hdmFyaGFzaHRhYiA9IGhhc2hfY3JlYXRlKCJTY2hlbWEgdmFyaWFibGVz IiwgNjQsICZjdGwsCisJCQkJCQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09O VEVYVCk7Cit9CisKKy8qCisgKiBGYXN0IGRyb3AgY29tcGxldGUgY29udGVudCBvZiBzY2hlbWEg dmFyaWFibGVzCisgKi8KK3ZvaWQKK1Jlc2V0U2NoZW1hVmFyaWFibGVDYWNoZSh2b2lkKQorewor CWlmIChzY2hlbWF2YXJoYXNodGFiKQorCXsKKwkJaGFzaF9kZXN0cm95KHNjaGVtYXZhcmhhc2h0 YWIpOworCQlzY2hlbWF2YXJoYXNodGFiID0gTlVMTDsKKwl9CisKKwlpZiAoU2NoZW1hVmFyaWFi bGVNZW1vcnlDb250ZXh0ICE9IE5VTEwpCisJeworCQlNZW1vcnlDb250ZXh0UmVzZXQoU2NoZW1h VmFyaWFibGVNZW1vcnlDb250ZXh0KTsKKwl9Cit9CisKKy8qCisgKiBEcm9wIHZhcmlhYmxlIGJ5 IE9JRAorICovCit2b2lkCitSZW1vdmVWYXJpYWJsZUJ5SWQoT2lkIHZhcmlkKQoreworCVJlbGF0 aW9uCXJlbDsKKwlIZWFwVHVwbGUJdHVwOworCisJcmVsID0gaGVhcF9vcGVuKFZhcmlhYmxlUmVs YXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwl0dXAgPSBTZWFyY2hTeXNDYWNoZTEoVkFS SUFCTEVPSUQsIE9iamVjdElkR2V0RGF0dW0odmFyaWQpKTsKKworCWlmICghSGVhcFR1cGxlSXNW YWxpZCh0dXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgdmFyaWFi bGUgJXUiLCB2YXJpZCk7CisKKwlDYXRhbG9nVHVwbGVEZWxldGUocmVsLCAmdHVwLT50X3NlbGYp OworCisJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CisKKwloZWFwX2Nsb3NlKHJlbCwgUm93RXhjbHVz aXZlTG9jayk7Cit9CisKKy8qCisgKiBDcmVhdGVzIG5ldyB2YXJpYWJsZSAtIGVudHJ5IGluIHBn X2NhdGFsb2cucGdfdmFyaWFibGUgdGFibGUKKyAqLworT2JqZWN0QWRkcmVzcworRGVmaW5lU2No ZW1hVmFyaWFibGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTY2hlbWFWYXJTdG10ICpzdG10 KQoreworCU9pZAkJCW5hbWVzcGFjZWlkOworCUFjbFJlc3VsdAlhY2xyZXN1bHQ7CisJT2lkCQkJ dHlwaWQ7CisJaW50MzIJCXR5cG1vZDsKKwlPaWQJCQl2YXJvd25lciA9IEdldFVzZXJJZCgpOwor CisJTm9kZQkgICAqY29va2VkX2RlZmF1bHQgPSBOVUxMOworCisJbmFtZXNwYWNlaWQgPQorCQlS YW5nZVZhckdldEFuZENoZWNrQ3JlYXRpb25OYW1lc3BhY2Uoc3RtdC0+dmFyaWFibGUsIE5vTG9j aywgTlVMTCk7CisKKwl0eXBlbmFtZVR5cGVJZEFuZE1vZChwc3RhdGUsIHN0bXQtPnR5cGVOYW1l LCAmdHlwaWQsICZ0eXBtb2QpOworCisJYWNscmVzdWx0ID0gcGdfdHlwZV9hY2xjaGVjayh0eXBp ZCwgR2V0VXNlcklkKCksIEFDTF9VU0FHRSk7CisJaWYgKGFjbHJlc3VsdCAhPSBBQ0xDSEVDS19P SykKKwkJYWNsY2hlY2tfZXJyb3JfdHlwZShhY2xyZXN1bHQsIHR5cGlkKTsKKworCWlmIChzdG10 LT5kZWZleHByKQorCXsKKwkJY29va2VkX2RlZmF1bHQgPSB0cmFuc2Zvcm1FeHByKHBzdGF0ZSwg c3RtdC0+ZGVmZXhwciwKKwkJCQkJCQkJCQlFWFBSX0tJTkRfVkFSSUFCTEVfREVGQVVMVCk7CisK KwkJY29va2VkX2RlZmF1bHQgPSBjb2VyY2VfdG9fc3BlY2lmaWNfdHlwZShwc3RhdGUsCisJCQkJ CQkJCQkJCQkgY29va2VkX2RlZmF1bHQsIHR5cGlkLCAiREVGQVVMVCIpOworCX0KKworCXJldHVy biBWYXJpYWJsZUNyZWF0ZShzdG10LT52YXJpYWJsZS0+cmVsbmFtZSwKKwkJCQkJCSAgbmFtZXNw YWNlaWQsCisJCQkJCQkgIHR5cGlkLAorCQkJCQkJICB0eXBtb2QsCisJCQkJCQkgIHZhcm93bmVy LAorCQkJCQkJICBjb29rZWRfZGVmYXVsdCwKKwkJCQkJCSAgc3RtdC0+aWZfbm90X2V4aXN0cyk7 Cit9CisKKy8qCisgKiBUcnkgdG8gc2VhcmNoIHZhbHVlIGluIGhhc2ggdGFibGUuIElmIGRvZXNu J3QKKyAqIGV4aXN0cyBpbnNlcnQgaXQgKGFuZCBjYWxjdWxhdGUgZGVmZXhwciBpZiBleGlzdHMu CisgKi8KK3N0YXRpYyBTY2hlbWFWYXJpYWJsZQorUHJlcGFyZVNjaGVtYVZhcmlhYmxlRm9yUmVh ZGluZyhPaWQgdmFyaWQpCit7CisJU2NoZW1hVmFyaWFibGUJc3ZhcjsKKwlWYXJpYWJsZQkqdmFy OworCWJvb2wJCQlmb3VuZDsKKworCWlmIChzY2hlbWF2YXJoYXNodGFiID09IE5VTEwpCisJCWNy ZWF0ZV9zY2hlbWF2YXJfaGFzaHRhYmxlKCk7CisKKwlzdmFyID0gKFNjaGVtYVZhcmlhYmxlKSBo YXNoX3NlYXJjaChzY2hlbWF2YXJoYXNodGFiLCAmdmFyaWQsCisJCQkJCQkJCQkJCSAgSEFTSF9F TlRFUiwgJmZvdW5kKTsKKwlpZiAoIWZvdW5kKQorCXsKKwkJdmFyID0gR2V0VmFyaWFibGUodmFy aWQsIGZhbHNlKTsKKwkJZ2V0X3R5cGxlbmJ5dmFsKHZhci0+dHlwaWQsICZzdmFyLT50eXBsZW4s ICZzdmFyLT50eXBieXZhbCk7CisKKwkJc3Zhci0+dmFyaWQgPSB2YXJpZDsKKwkJc3Zhci0+dHlw aWQgPSB2YXItPnR5cGlkOworCQlzdmFyLT50eXBtb2QgPSB2YXItPnR5cG1vZDsKKwkJc3Zhci0+ aXNudWxsID0gdHJ1ZTsKKwkJc3Zhci0+ZnJlZXZhbCA9IGZhbHNlOworCQlzdmFyLT52YWx1ZSA9 IChEYXR1bSkgMDsKKwkJc3Zhci0+aXNfcm93dHlwZSA9IHR5cGVfaXNfcm93dHlwZSh2YXItPnR5 cGlkKTsKKworCQkvKiB3aGVuIHdlIGRvbid0IG5lZWQgY2FsY3VsYXRlIGRlZmV4cHIsIHZhbHVl IGlzIHZhbGlkIGFscmVhZHkgKi8KKwkJc3Zhci0+aXNfdmFsaWQgPSB2YXItPmRlZmV4cHIgPyBm YWxzZSA6IHRydWU7CisJfQorCWVsc2UgaWYgKCFzdmFyLT5pc192YWxpZCkKKwl7CisJCS8qIHdl IG5lZWQgdmFyIHRvIHJlY2FsY3VsYXRlIGRlZmV4cHIgKi8KKwkJdmFyID0gR2V0VmFyaWFibGUo dmFyaWQsIGZhbHNlKTsKKwl9CisJZWxzZQorCQkvKiB3ZSBkb24ndCBuZWVkIHRvIGdvIHRvIHN5 cyBjYWNoZSAqLworCQl2YXIgPSBOVUxMOworCisJLyoKKwkgKiBJbml0aWFsaXplIHZhcmlhYmxl IHdoZW4gaXQgaXMgbmVjZXNzYXJ5LiBJdCBpcyBmcmVzaAorCSAqIG9yIGxhc3QgaW5pdGlhbGl6 YXRpb24gd2FzIG5vdCBzdWNjZXNzZnVsbC4KKwkgKi8KKwlpZiAodmFyICE9IE5VTEwgJiYgdmFy LT5kZWZleHByICYmICFzdmFyLT5pc192YWxpZCkKKwl7CisJCU1lbW9yeUNvbnRleHQgb2xkY29u dGV4dCA9IE5VTEw7CisKKwkJRGF0dW0JICAgdmFsdWUgPSAoRGF0dW0pIDA7CisJCWJvb2wJICAg bnVsbDsKKwkJRVN0YXRlCSAgICplc3RhdGUgPSBOVUxMOworCQlFeHByCSAgICpkZWZleHByOwor CQlFeHByU3RhdGUgICpkZWZleHByczsKKworCQkvKiBQcmVwYXJlIGRlZmF1bHQgZXhwciAqLwor CQllc3RhdGUgPSBDcmVhdGVFeGVjdXRvclN0YXRlKCk7CisJCW9sZGNvbnRleHQgPSBNZW1vcnlD b250ZXh0U3dpdGNoVG8oZXN0YXRlLT5lc19xdWVyeV9jeHQpOworCisJCWRlZmV4cHIgPSBleHBy ZXNzaW9uX3BsYW5uZXIoKEV4cHIgKikgdmFyLT5kZWZleHByKTsKKwkJZGVmZXhwcnMgPSBFeGVj SW5pdEV4cHIoZGVmZXhwciwgTlVMTCk7CisJCXZhbHVlID0gRXhlY0V2YWxFeHByU3dpdGNoQ29u dGV4dChkZWZleHBycywgR2V0UGVyVHVwbGVFeHByQ29udGV4dChlc3RhdGUpLCAmbnVsbCk7CisK KwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKFNjaGVtYVZhcmlhYmxlTWVtb3J5Q29udGV4dCk7CisK KwkJaWYgKCFudWxsKQorCQl7CisJCQlzdmFyLT52YWx1ZSA9IGRhdHVtQ29weSh2YWx1ZSwgc3Zh ci0+dHlwYnl2YWwsIHN2YXItPnR5cGxlbik7CisJCQlzdmFyLT5mcmVldmFsID0gc3Zhci0+dmFs dWUgIT0gdmFsdWU7CisJCQlzdmFyLT5pc251bGwgPSBmYWxzZTsKKwkJCXN2YXItPmlzX3ZhbGlk ID0gdHJ1ZTsKKwkJfQorCQllbHNlCisJCXsKKwkJCXN2YXItPmlzbnVsbCA9IHRydWU7CisJCQlz dmFyLT5pc192YWxpZCA9IHRydWU7CisJCX0KKworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xk Y29udGV4dCk7CisKKwkJRnJlZUV4ZWN1dG9yU3RhdGUoZXN0YXRlKTsKKwl9CisKKwlpZiAoIXN2 YXItPmlzX3ZhbGlkKQorCQllbG9nKEVSUk9SLCAidGhlIGNvbnRlbnQgb2YgdmFyaWFibGUgaXMg bm90IHZhbGlkIik7CisKKwlyZXR1cm4gc3ZhcjsKK30KKworLyoKKyAqIFJldHVybnMgY29udGVu dCBvZiB2YXJpYWJsZS4gV2UgZXhwZXh0IHNlY3VyZWQgYWNjZXNzIG5vdy4KKyAqIFNlY3VyZSBj aGVjayBzaG91bGQgYmUgZG9uZSBiZWZvcmUuCisgKi8KK0RhdHVtCitHZXRTY2hlbWFWYXJpYWJs ZShPaWQgdmFyaWQsIGJvb2wgKmlzTnVsbCwgT2lkIGV4cGVjdGVkX3R5cGlkKQoreworCVNjaGVt YVZhcmlhYmxlCXN2YXI7CisKKwlzdmFyID0gUHJlcGFyZVNjaGVtYVZhcmlhYmxlRm9yUmVhZGlu Zyh2YXJpZCk7CisJKmlzTnVsbCA9IHN2YXItPmlzbnVsbDsKKworCWlmIChleHBlY3RlZF90eXBp ZCAhPSBzdmFyLT50eXBpZCkKKwkJZWxvZyhFUlJPUiwgInR5cGUgb2YgdmFyaWFibGUgXCIlc1wi IGlzIGRpZmZlcmVudCB0aGFuIGV4cGVjdGVkIiwKKwkJCQkgICBzY2hlbWFfdmFyaWFibGVfZ2V0 X25hbWUodmFyaWQpKTsKKworCXJldHVybiAoRGF0dW0pIHN2YXItPnZhbHVlOworfQorCisvKgor ICogV3JpdGUgdmFsdWUgdG8gdmFyaWFibGUuIFdlIGV4cGVjdCBzZWN1cmVkIGFjY2VzcyBpbiB0 aGlzIG1vbWVudC4KKyAqIEluIHRoaXMgdGltZSwgd2UgcmVjaGVjayBzeXNjaGFjaGUgYWJvdXQg dXNlZCB0eXBlLgorICovCit2b2lkCitTZXRTY2hlbWFWYXJpYWJsZShPaWQgdmFyaWQsIERhdHVt IHZhbHVlLCBib29sIGlzTnVsbCwgT2lkIHR5cGlkLCBpbnQzMiB0eXBtb2QpCit7CisJTWVtb3J5 Q29udGV4dCBvbGRjb250ZXh0ID0gTlVMTDsKKworCVNjaGVtYVZhcmlhYmxlIHN2YXI7CisJT2lk CQkJdmFyX3R5cGlkOworCWludDMyCQl2YXJfdHlwbW9kOworCWJvb2wJCWZvdW5kOworCisJaWYg KHNjaGVtYXZhcmhhc2h0YWIgPT0gTlVMTCkKKwkJY3JlYXRlX3NjaGVtYXZhcl9oYXNodGFibGUo KTsKKworCXN2YXIgPSAoU2NoZW1hVmFyaWFibGUpIGhhc2hfc2VhcmNoKHNjaGVtYXZhcmhhc2h0 YWIsICZ2YXJpZCwKKwkJCQkJCQkJCQkJICBIQVNIX0VOVEVSLCAmZm91bmQpOworCisJZ2V0X3Nj aGVtYV92YXJpYWJsZV90eXBlX3R5cG1vZCh2YXJpZCwgJnZhcl90eXBpZCwgJnZhcl90eXBtb2Qp OworCisJLyogY2hlY2sgdHlwZXMgZmlyc3QgKi8KKwlpZiAodmFyX3R5cGlkICE9IHR5cGlkKQor CQllbG9nKEVSUk9SLCAidHlwZSBvZiBleHByZXNzaW9uIGlzIGRpZmZlcmVudCB0aGFuIHNjaGVt YSB2YXJpYWJsZSB0eXBlIik7CisKKwlpZiAoZm91bmQpCisJeworCQkvKiByZWxlYXNlIGN1cnJl bnQgY29udGVudCBmaXJzdCAqLworCQlpZiAoc3Zhci0+ZnJlZXZhbCkKKwkJeworCQkJcGZyZWUo RGF0dW1HZXRQb2ludGVyKHN2YXItPnZhbHVlKSk7CisJCQlzdmFyLT52YWx1ZSA9IChEYXR1bSkg MDsKKwkJCXN2YXItPmlzbnVsbCA9IHRydWU7CisJCQlzdmFyLT5mcmVldmFsID0gZmFsc2U7CisJ CX0KKwl9CisKKwlnZXRfdHlwbGVuYnl2YWwodHlwaWQsICZzdmFyLT50eXBsZW4sICZzdmFyLT50 eXBieXZhbCk7CisKKwlzdmFyLT52YXJpZCA9IHZhcmlkOworCXN2YXItPnR5cGlkID0gdHlwaWQ7 CisJc3Zhci0+dHlwbW9kID0gdHlwbW9kOworCisJc3Zhci0+aXNudWxsID0gdHJ1ZTsKKwlzdmFy LT5mcmVldmFsID0gZmFsc2U7CisJc3Zhci0+dmFsdWUgPSAoRGF0dW0pIDA7CisKKwlzdmFyLT5p c19yb3d0eXBlID0gdHlwZV9pc19yb3d0eXBlKHR5cGlkKTsKKwlzdmFyLT5pc192YWxpZCA9IGZh bHNlOworCisJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhTY2hlbWFWYXJpYWJs ZU1lbW9yeUNvbnRleHQpOworCisJaWYgKCFpc051bGwpCisJeworCQlzdmFyLT52YWx1ZSA9IGRh dHVtQ29weSh2YWx1ZSwgc3Zhci0+dHlwYnl2YWwsIHN2YXItPnR5cGxlbik7CisJCXN2YXItPmZy ZWV2YWwgPSBzdmFyLT52YWx1ZSAhPSB2YWx1ZTsKKwkJc3Zhci0+aXNudWxsID0gZmFsc2U7CisJ CXN2YXItPmlzX3ZhbGlkID0gdHJ1ZTsKKwl9CisJZWxzZQorCXsKKwkJc3Zhci0+aXNudWxsID0g dHJ1ZTsKKwkJc3Zhci0+aXNfdmFsaWQgPSB0cnVlOworCX0KKworCU1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhvbGRjb250ZXh0KTsKK30KKwordm9pZAorZG9MZXRTdG10KFBsYW5uZWRTdG10ICpwc3Rt dCwKKwkJICBQYXJhbUxpc3RJbmZvIHBhcmFtcywKKwkJICBRdWVyeUVudmlyb25tZW50ICpxdWVy eUVudiwKKwkJICBjb25zdCBjaGFyICpxdWVyeVN0cmluZykKK3sKKwlRdWVyeURlc2MgKnF1ZXJ5 RGVzYzsKKwlEZXN0UmVjZWl2ZXIgKmRlc3Q7CisKKwlQdXNoQ29waWVkU25hcHNob3QoR2V0QWN0 aXZlU25hcHNob3QoKSk7CisJVXBkYXRlQWN0aXZlU25hcHNob3RDb21tYW5kSWQoKTsKKworCS8q IENyZWF0ZSBkZXN0IHJlY2VpdmVyIGZvciBMRVQgKi8KKwlkZXN0ID0gQ3JlYXRlRGVzdFJlY2Vp dmVyKERlc3RWYXJpYWJsZSk7CisKKwlTZXRWYXJpYWJsZURlc3RSZWNlaXZlclBhcmFtcyhkZXN0 LCBwc3RtdC0+cmVzdWx0VmFyaWFibGUpOworCisJLyogQ3JlYXRlIGEgUXVlcnlEZXNjIHJlcXVl c3Rpbmcgbm8gb3V0cHV0ICovCisJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBzdG10LCBx dWVyeVN0cmluZywKKwkJCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwKKwkJCQkJCQkJCQkJ SW52YWxpZFNuYXBzaG90LAorCQkJCQkJCQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCAwKTsK KworCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCAwKTsKKwlFeGVjdXRvclJ1bihxdWVyeURlc2Ms IEZvcndhcmRTY2FuRGlyZWN0aW9uLCAyTCwgdHJ1ZSk7CisJRXhlY3V0b3JGaW5pc2gocXVlcnlE ZXNjKTsKKwlFeGVjdXRvckVuZChxdWVyeURlc2MpOworCisJRnJlZVF1ZXJ5RGVzYyhxdWVyeURl c2MpOworCisJUG9wQWN0aXZlU25hcHNob3QoKTsKK30KKwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMu YwppbmRleCBlYjJkMzNkZDg2Li4yMmNkNzg3MWNiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMu YwpAQCAtOTYzMCw2ICs5NjMwLDcgQEAgQVRFeGVjQWx0ZXJDb2x1bW5UeXBlKEFsdGVyZWRUYWJs ZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCQkJY2FzZSBPQ0xBU1NfUFVCTElDQVRJT05fUkVM OgogCQkJY2FzZSBPQ0xBU1NfU1VCU0NSSVBUSU9OOgogCQkJY2FzZSBPQ0xBU1NfVFJBTlNGT1JN OgorCQkJY2FzZSBPQ0xBU1NfVkFSSUFCTEU6CiAKIAkJCQkvKgogCQkJCSAqIFdlIGRvbid0IGV4 cGVjdCBhbnkgb2YgdGhlc2Ugc29ydHMgb2Ygb2JqZWN0cyB0byBkZXBlbmQgb24KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv TWFrZWZpbGUKaW5kZXggY2MwOTg5NWZhNS4uZWU4ZmY3ZGE5ZSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvTWFrZWZp bGUKQEAgLTI5LDYgKzI5LDYgQEAgT0JKUyA9IGV4ZWNBbWkubyBleGVjQ3VycmVudC5vIGV4ZWNF eHByLm8gZXhlY0V4cHJJbnRlcnAubyBcCiAgICAgICAgbm9kZUN0ZXNjYW4ubyBub2RlTmFtZWR0 dXBsZXN0b3Jlc2Nhbi5vIG5vZGVXb3JrdGFibGVzY2FuLm8gXAogICAgICAgIG5vZGVHcm91cC5v IG5vZGVTdWJwbGFuLm8gbm9kZVN1YnF1ZXJ5c2Nhbi5vIG5vZGVUaWRzY2FuLm8gXAogICAgICAg IG5vZGVGb3JlaWduc2Nhbi5vIG5vZGVXaW5kb3dBZ2cubyB0c3RvcmVSZWNlaXZlci5vIHRxdWV1 ZS5vIHNwaS5vIFwKLSAgICAgICBub2RlVGFibGVGdW5jc2Nhbi5vCisgICAgICAgbm9kZVRhYmxl RnVuY3NjYW4ubyBzdmFyaWFibGVSZWNlaXZlci5vCiAKIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9z cmMvYmFja2VuZC9jb21tb24ubWsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNFeHByLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jCmluZGV4IGUyODRmZDcx ZDcuLjU4ZDQ5NTVkZDggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBy LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYwpAQCAtMzMsNiArMzMsNyBA QAogI2luY2x1ZGUgImFjY2Vzcy9uYnRyZWUuaCIKICNpbmNsdWRlICJjYXRhbG9nL29iamVjdGFj Y2Vzcy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgImNvbW1hbmRz L3NjaGVtYXZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY0V4cHIuaCIKICNpbmNs dWRlICJleGVjdXRvci9ub2RlU3VicGxhbi5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKQEAgLTcy Nyw2ICs3MjgsNyBAQCBFeGVjSW5pdEV4cHJSZWMoRXhwciAqbm9kZSwgRXhwclN0YXRlICpzdGF0 ZSwKIAkJCXsKIAkJCQlQYXJhbQkgICAqcGFyYW0gPSAoUGFyYW0gKikgbm9kZTsKIAkJCQlQYXJh bUxpc3RJbmZvIHBhcmFtczsKKwkJCQlBY2xSZXN1bHQJYWNscmVzdWx0OwogCiAJCQkJc3dpdGNo IChwYXJhbS0+cGFyYW1raW5kKQogCQkJCXsKQEAgLTczNiw2ICs3MzgsMTkgQEAgRXhlY0luaXRF eHByUmVjKEV4cHIgKm5vZGUsIEV4cHJTdGF0ZSAqc3RhdGUsCiAJCQkJCQlzY3JhdGNoLmQucGFy YW0ucGFyYW10eXBlID0gcGFyYW0tPnBhcmFtdHlwZTsKIAkJCQkJCUV4cHJFdmFsUHVzaFN0ZXAo c3RhdGUsICZzY3JhdGNoKTsKIAkJCQkJCWJyZWFrOworCQkJCQljYXNlIFBBUkFNX1NDSEVNQV9W QVJJQUJMRToKKwkJCQkJCS8qIENoZWNrIHBlcm1pc3Npb24gdG8gcmVhZCBzY2hlbWEgdmFyaWFi bGUgKi8KKwkJCQkJCWFjbHJlc3VsdCA9IHBnX3ZhcmlhYmxlX2FjbGNoZWNrKHBhcmFtLT5wYXJh bWlkLCBHZXRVc2VySWQoKSwgQUNMX1JFQUQpOworCQkJCQkJaWYgKGFjbHJlc3VsdCAhPSBBQ0xD SEVDS19PSykKKwkJCQkJCQlhY2xjaGVja19lcnJvcihhY2xyZXN1bHQsIE9CSkVDVF9WQVJJQUJM RSwKKwkJCQkJCQkJCQkJc2NoZW1hX3ZhcmlhYmxlX2dldF9uYW1lKHBhcmFtLT5wYXJhbWlkKSk7 CisKKwkJCQkJCXNjcmF0Y2gub3Bjb2RlID0gRUVPUF9QQVJBTV9WQVJJQUJMRTsKKwkJCQkJCXNj cmF0Y2guZC5wYXJhbS5wYXJhbWlkID0gcGFyYW0tPnBhcmFtaWQ7CisJCQkJCQlzY3JhdGNoLmQu cGFyYW0ucGFyYW10eXBlID0gcGFyYW0tPnBhcmFtdHlwZTsKKwkJCQkJCUV4cHJFdmFsUHVzaFN0 ZXAoc3RhdGUsICZzY3JhdGNoKTsKKwkJCQkJCWJyZWFrOworCiAJCQkJCWNhc2UgUEFSQU1fRVhU RVJOOgogCiAJCQkJCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4 cHJJbnRlcnAuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMKaW5kZXgg OWQ2ZTI1YWFlNS4uMjU5NjZjZWVlYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY0V4cHJJbnRlcnAuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVy cC5jCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3R1cHRvYXN0ZXIuaCIKICNp bmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9zZXF1ZW5jZS5o IgorI2luY2x1ZGUgImNvbW1hbmRzL3NjaGVtYXZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiZXhlY3V0 b3IvZXhlY0V4cHIuaCIKICNpbmNsdWRlICJleGVjdXRvci9ub2RlU3VicGxhbi5oIgogI2luY2x1 ZGUgImZ1bmNhcGkuaCIKQEAgLTM1MSw2ICszNTIsNyBAQCBFeGVjSW50ZXJwRXhwcihFeHByU3Rh dGUgKnN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsIGJvb2wgKmlzbnVsbCkKIAkJJiZDQVNF X0VFT1BfUEFSQU1fRVhFQywKIAkJJiZDQVNFX0VFT1BfUEFSQU1fRVhURVJOLAogCQkmJkNBU0Vf RUVPUF9QQVJBTV9DQUxMQkFDSywKKwkJJiZDQVNFX0VFT1BfUEFSQU1fVkFSSUFCTEUsCiAJCSYm Q0FTRV9FRU9QX0NBU0VfVEVTVFZBTCwKIAkJJiZDQVNFX0VFT1BfTUFLRV9SRUFET05MWSwKIAkJ JiZDQVNFX0VFT1BfSU9DT0VSQ0UsCkBAIC0xMDA3LDYgKzEwMDksMjAgQEAgRXhlY0ludGVycEV4 cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBib29sICppc251bGwp CiAJCQlFRU9fTkVYVCgpOwogCQl9CiAKKwkJRUVPX0NBU0UoRUVPUF9QQVJBTV9WQVJJQUJMRSkK KwkJeworCQkJRGF0dW0JZDsKKwkJCWJvb2wJaXNudWxsOworCisJCQlkID0gR2V0U2NoZW1hVmFy aWFibGUob3AtPmQucGFyYW0ucGFyYW1pZCwgJmlzbnVsbCwKKwkJCQkJCQkJCQkJCQkgIG9wLT5k LnBhcmFtLnBhcmFtdHlwZSk7CisKKwkJCSpvcC0+cmVzdmFsdWUgPSBkOworCQkJKm9wLT5yZXNu dWxsID0gaXNudWxsOworCisJCQlFRU9fTkVYVCgpOworCQl9CisKIAkJRUVPX0NBU0UoRUVPUF9D QVNFX1RFU1RWQUwpCiAJCXsKIAkJCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjTWFpbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwppbmRleCAwMWUx YTQ2MTgwLi4zNzIxYWVjN2ExIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj TWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTQzLDkgKzQz LDExIEBACiAjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKICNpbmNsdWRlICJjYXRhbG9nL25hbWVz cGFjZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHVibGljYXRpb24uaCIKKyNpbmNsdWRlICJj YXRhbG9nL3BnX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvbWF0dmlldy5oIgogI2lu Y2x1ZGUgImNvbW1hbmRzL3RyaWdnZXIuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjZGVidWcu aCIKKyNpbmNsdWRlICJleGVjdXRvci9zdmFyaWFibGVSZWNlaXZlci5oIgogI2luY2x1ZGUgImZv cmVpZ24vZmR3YXBpLmgiCiAjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKICNpbmNsdWRlICJtaXNj YWRtaW4uaCIKQEAgLTIwNCwxMiArMjA2LDE4IEBAIHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQoUXVl cnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJICovCiAJZXN0YXRlLT5lc19xdWVyeUVu diA9IHF1ZXJ5RGVzYy0+cXVlcnlFbnY7CiAKKwkvKgorCSAqIFJlc3VsdCBjYW4gYmUgc3RvcmVk IGluIHNjaGVtYSB2YXJpYWJsZS4KKwkgKi8KKwllc3RhdGUtPmVzX3Jlc3VsdF92YXJpYWJsZSA9 IHF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQtPnJlc3VsdFZhcmlhYmxlOworCiAJLyoKIAkgKiBJZiBu b24tcmVhZC1vbmx5IHF1ZXJ5LCBzZXQgdGhlIGNvbW1hbmQgSUQgdG8gbWFyayBvdXRwdXQgdHVw bGVzIHdpdGgKIAkgKi8KIAlzd2l0Y2ggKHF1ZXJ5RGVzYy0+b3BlcmF0aW9uKQogCXsKIAkJY2Fz ZSBDTURfU0VMRUNUOgorCQljYXNlIENNRF9QTEFOX1VUSUxJVFk6CiAKIAkJCS8qCiAJCQkgKiBT RUxFQ1QgRk9SIFtLRVldIFVQREFURS9TSEFSRSBhbmQgbW9kaWZ5aW5nIENURXMgbmVlZCB0byBt YXJrCkBAIC0zNDUsNiArMzUzLDcgQEAgc3RhbmRhcmRfRXhlY3V0b3JSdW4oUXVlcnlEZXNjICpx dWVyeURlc2MsCiAJZXN0YXRlLT5lc19sYXN0b2lkID0gSW52YWxpZE9pZDsKIAogCXNlbmRUdXBs ZXMgPSAob3BlcmF0aW9uID09IENNRF9TRUxFQ1QgfHwKKwkJCQkgIE9pZElzVmFsaWQoZXN0YXRl LT5lc19yZXN1bHRfdmFyaWFibGUpIHx8CiAJCQkJICBxdWVyeURlc2MtPnBsYW5uZWRzdG10LT5o YXNSZXR1cm5pbmcpOwogCiAJaWYgKHNlbmRUdXBsZXMpCkBAIC05MjQsNiArOTMzLDE3IEBAIElu aXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCQllc3RhdGUtPmVzX251 bV9yb290X3Jlc3VsdF9yZWxhdGlvbnMgPSAwOwogCX0KIAorCWlmIChPaWRJc1ZhbGlkKGVzdGF0 ZS0+ZXNfcmVzdWx0X3ZhcmlhYmxlKSkKKwl7CisJCUFjbFJlc3VsdAlhY2xyZXN1bHQ7CisJCU9p ZAkJCXZhcmlkID0gZXN0YXRlLT5lc19yZXN1bHRfdmFyaWFibGU7CisKKwkJLyogRW5zdXJlIHRo aXMgdmFyaWFibGUgaXMgd3JpdGVhYmxlICovCisJCWFjbHJlc3VsdCA9IHBnX3ZhcmlhYmxlX2Fj bGNoZWNrKHZhcmlkLCBHZXRVc2VySWQoKSwgQUNMX1dSSVRFKTsKKwkJaWYgKGFjbHJlc3VsdCAh PSBBQ0xDSEVDS19PSykKKwkJCWFjbGNoZWNrX2Vycm9yKGFjbHJlc3VsdCwgT0JKRUNUX1ZBUklB QkxFLCBzY2hlbWFfdmFyaWFibGVfZ2V0X25hbWUodmFyaWQpKTsKKwl9CisKIAkvKgogCSAqIFNp bWlsYXJseSwgd2UgaGF2ZSB0byBsb2NrIHJlbGF0aW9ucyBzZWxlY3RlZCBGT1IgW0tFWV0gVVBE QVRFL1NIQVJFCiAJICogYmVmb3JlIHdlIGluaXRpYWxpemUgdGhlIHBsYW4gdHJlZSwgZWxzZSB3 ZSdkIGJlIHJpc2tpbmcgbG9jayB1cGdyYWRlcy4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL3N2YXJpYWJsZVJlY2VpdmVyLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9zdmFyaWFi bGVSZWNlaXZlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjBlYWM0 YjVkMGMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9zdmFyaWFibGVS ZWNlaXZlci5jCkBAIC0wLDAgKzEsMTQ1IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBz dmFyaWFibGVSZWNlaXZlci5jCisgKgkgIEFuIGltcGxlbWVudGF0aW9uIG9mIERlc3RSZWNlaXZl ciB0aGF0IHN0b3JlcyB0aGUgcmVzdWx0IHZhbHVlIGluCisgKgkgIGEgc2NoZW1hIHZhcmlhYmxl LgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDE4LCBQb3N0Z3JlU1FMIEds b2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBS ZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKiBJREVOVElGSUNB VElPTgorICoJICBzcmMvYmFja2VuZC9leGVjdXRvci9zdmFyaWFibGVSZWNlaXZlci5jCisgKgor ICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNs dWRlICJhY2Nlc3MvdHVwdG9hc3Rlci5oIgorI2luY2x1ZGUgImV4ZWN1dG9yL3N2YXJpYWJsZVJl Y2VpdmVyLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvc2NoZW1hdmFyaWFibGUuaCIKKwordHlwZWRl ZiBzdHJ1Y3QKK3sKKwlEZXN0UmVjZWl2ZXIgcHViOworCU9pZAkJdmFyaWQ7CisJT2lkCQl0eXBp ZDsKKwlpbnQzMgl0eXBtb2Q7CisJaW50CQl0eXBsZW47CisJaW50CQlzbG90X29mZnNldDsKKwlp bnQJCXJvd3M7Cit9IHN2YXJpYWJsZVN0YXRlOworCisKKy8qCisgKiBQcmVwYXJlIHRvIHJlY2Vp dmUgdHVwbGVzIGZyb20gZXhlY3V0b3IuCisgKi8KK3N0YXRpYyB2b2lkCitzdmFyaWFibGVTdGFy dHVwUmVjZWl2ZXIoRGVzdFJlY2VpdmVyICpzZWxmLCBpbnQgb3BlcmF0aW9uLCBUdXBsZURlc2Mg dHlwZWluZm8pCit7CisJc3ZhcmlhYmxlU3RhdGUgKm15U3RhdGUgPSAoc3ZhcmlhYmxlU3RhdGUg Kikgc2VsZjsKKwlpbnQJCQluYXR0cyA9IHR5cGVpbmZvLT5uYXR0czsKKwlpbnQJCQlvdXRjb2xz ID0gMDsKKwlpbnQJCQlpOworCisJZm9yIChpID0gMDsgaSA8IG5hdHRzOyBpKyspCisJeworCQlG b3JtX3BnX2F0dHJpYnV0ZSBhdHRyID0gVHVwbGVEZXNjQXR0cih0eXBlaW5mbywgaSk7CisKKwkJ aWYgKGF0dHItPmF0dGlzZHJvcHBlZCkKKwkJCWNvbnRpbnVlOworCisJCWlmICgrK291dGNvbHMg PiAxKQorCQkJZWxvZyhFUlJPUiwgInN2YXJpYWJsZSBEZXN0UmVjZWl2ZXIgY2FuIHRha2Ugb25s eSBvbmUgYXR0cmlidXRlIik7CisKKwkJbXlTdGF0ZS0+dHlwaWQgPSBhdHRyLT5hdHR0eXBpZDsK KwkJbXlTdGF0ZS0+dHlwbW9kID0gYXR0ci0+YXR0dHlwbW9kOworCQlteVN0YXRlLT50eXBsZW4g PSBhdHRyLT5hdHRsZW47CisJCW15U3RhdGUtPnNsb3Rfb2Zmc2V0ID0gaTsKKwl9CisKKwlteVN0 YXRlLT5yb3dzID0gMDsKK30KKworLyoKKyAqIFJlY2VpdmUgYSB0dXBsZSBmcm9tIHRoZSBleGVj dXRvciBhbmQgc3RvcmUgaXQgaW4gc2NoZW1hIHZhcmlhYmxlLgorICovCitzdGF0aWMgYm9vbAor c3ZhcmlhYmxlUmVjZWl2ZVNsb3QoVHVwbGVUYWJsZVNsb3QgKnNsb3QsIERlc3RSZWNlaXZlciAq c2VsZikKK3sKKwlzdmFyaWFibGVTdGF0ZSAqbXlTdGF0ZSA9IChzdmFyaWFibGVTdGF0ZSAqKSBz ZWxmOworCURhdHVtCQl2YWx1ZTsKKwlib29sCQlpc251bGw7CisJYm9vbAkJZnJlZXZhbCA9IGZh bHNlOworCisJLyogTWFrZSBzdXJlIHRoZSB0dXBsZSBpcyBmdWxseSBkZWNvbnN0cnVjdGVkICov CisJc2xvdF9nZXRhbGxhdHRycyhzbG90KTsKKworCXZhbHVlID0gc2xvdC0+dHRzX3ZhbHVlc1tt eVN0YXRlLT5zbG90X29mZnNldF07CisJaXNudWxsID0gc2xvdC0+dHRzX2lzbnVsbFtteVN0YXRl LT5zbG90X29mZnNldF07CisKKwlpZiAobXlTdGF0ZS0+dHlwbGVuID09IC0xICYmICFpc251bGwg JiYgVkFSQVRUX0lTX0VYVEVSTkFMKERhdHVtR2V0UG9pbnRlcih2YWx1ZSkpKQorCXsKKwkJdmFs dWUgPSBQb2ludGVyR2V0RGF0dW0oaGVhcF90dXBsZV9mZXRjaF9hdHRyKChzdHJ1Y3QgdmFybGVu YSAqKQorCQkJCQkJCQkJCQkJCURhdHVtR2V0UG9pbnRlcih2YWx1ZSkpKTsKKwkJZnJlZXZhbCA9 IHRydWU7CisJfQorCisJU2V0U2NoZW1hVmFyaWFibGUobXlTdGF0ZS0+dmFyaWQsIHZhbHVlLCBp c251bGwsIG15U3RhdGUtPnR5cGlkLCBteVN0YXRlLT50eXBtb2QpOworCisJaWYgKGZyZWV2YWwp CisJCXBmcmVlKERhdHVtR2V0UG9pbnRlcih2YWx1ZSkpOworCisJcmV0dXJuIHRydWU7Cit9CisK Ky8qCisgKiBDbGVhbiB1cCBhdCBlbmQgb2YgYW4gZXhlY3V0b3IgcnVuCisgKi8KK3N0YXRpYyB2 b2lkCitzdmFyaWFibGVTaHV0ZG93blJlY2VpdmVyKERlc3RSZWNlaXZlciAqc2VsZikKK3sKKwkv KiBEbyBub3RoaW5nICovCit9CisKKy8qCisgKiBEZXN0cm95IHJlY2VpdmVyIHdoZW4gZG9uZSB3 aXRoIGl0CisgKi8KK3N0YXRpYyB2b2lkCitzdmFyaWFibGVEZXN0cm95UmVjZWl2ZXIoRGVzdFJl Y2VpdmVyICpzZWxmKQoreworCXBmcmVlKHNlbGYpOworfQorCisvKgorICogSW5pdGlhbGx5IGNy ZWF0ZSBhIERlc3RSZWNlaXZlciBvYmplY3QuCisgKi8KK0Rlc3RSZWNlaXZlciAqCitDcmVhdGVW YXJpYWJsZURlc3RSZWNlaXZlcih2b2lkKQoreworCXN2YXJpYWJsZVN0YXRlICpzZWxmID0gKHN2 YXJpYWJsZVN0YXRlICopIHBhbGxvYzAoc2l6ZW9mKHN2YXJpYWJsZVN0YXRlKSk7CisKKwlzZWxm LT5wdWIucmVjZWl2ZVNsb3QgPSBzdmFyaWFibGVSZWNlaXZlU2xvdDsKKwlzZWxmLT5wdWIuclN0 YXJ0dXAgPSBzdmFyaWFibGVTdGFydHVwUmVjZWl2ZXI7CisJc2VsZi0+cHViLnJTaHV0ZG93biA9 IHN2YXJpYWJsZVNodXRkb3duUmVjZWl2ZXI7CisJc2VsZi0+cHViLnJEZXN0cm95ID0gc3Zhcmlh YmxlRGVzdHJveVJlY2VpdmVyOworCXNlbGYtPnB1Yi5teWRlc3QgPSBEZXN0VmFyaWFibGU7CisK KwkvKiBwcml2YXRlIGZpZWxkcyB3aWxsIGJlIHNldCBieSBTZXRWYXJpYWJsZURlc3RSZWNlaXZl clBhcmFtcyAqLworCisJcmV0dXJuIChEZXN0UmVjZWl2ZXIgKikgc2VsZjsKK30KKworLyoKKyAq IFNldCBwYXJhbWV0ZXJzIGZvciBhIFZhcmlhYmxlRGVzdFJlY2VpdmVyCisgKi8KK3ZvaWQKK1Nl dFZhcmlhYmxlRGVzdFJlY2VpdmVyUGFyYW1zKERlc3RSZWNlaXZlciAqc2VsZiwgT2lkIHZhcmlk KQoreworCXN2YXJpYWJsZVN0YXRlICpteVN0YXRlID0gKHN2YXJpYWJsZVN0YXRlICopIHNlbGY7 CisKKwlBc3NlcnQobXlTdGF0ZS0+cHViLm15ZGVzdCA9PSBEZXN0VmFyaWFibGUpOworCUFzc2Vy dChPaWRJc1ZhbGlkKHZhcmlkKSk7CisKKwlteVN0YXRlLT52YXJpZCA9IHZhcmlkOworfQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rl cy9jb3B5ZnVuY3MuYwppbmRleCA3YzgyMjBjZjY1Li5mY2FhMmRiNTFhIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5 ZnVuY3MuYwpAQCAtOTMsNiArOTMsNyBAQCBfY29weVBsYW5uZWRTdG10KGNvbnN0IFBsYW5uZWRT dG10ICpmcm9tKQogCUNPUFlfTk9ERV9GSUVMRChyZXN1bHRSZWxhdGlvbnMpOwogCUNPUFlfTk9E RV9GSUVMRChub25sZWFmUmVzdWx0UmVsYXRpb25zKTsKIAlDT1BZX05PREVfRklFTEQocm9vdFJl c3VsdFJlbGF0aW9ucyk7CisJQ09QWV9TQ0FMQVJfRklFTEQocmVzdWx0VmFyaWFibGUpOwogCUNP UFlfTk9ERV9GSUVMRChzdWJwbGFucyk7CiAJQ09QWV9CSVRNQVBTRVRfRklFTEQocmV3aW5kUGxh bklEcyk7CiAJQ09QWV9OT0RFX0ZJRUxEKHJvd01hcmtzKTsKQEAgLTMwMDAsNiArMzAwMSw3IEBA IF9jb3B5UXVlcnkoY29uc3QgUXVlcnkgKmZyb20pCiAJQ09QWV9TQ0FMQVJfRklFTEQoY2FuU2V0 VGFnKTsKIAlDT1BZX05PREVfRklFTEQodXRpbGl0eVN0bXQpOwogCUNPUFlfU0NBTEFSX0ZJRUxE KHJlc3VsdFJlbGF0aW9uKTsKKwlDT1BZX1NDQUxBUl9GSUVMRChyZXN1bHRWYXJpYWJsZSk7CiAJ Q09QWV9TQ0FMQVJfRklFTEQoaGFzQWdncyk7CiAJQ09QWV9TQ0FMQVJfRklFTEQoaGFzV2luZG93 RnVuY3MpOwogCUNPUFlfU0NBTEFSX0ZJRUxEKGhhc1RhcmdldFNSRnMpOwpAQCAtMzExOCw2ICsz MTIwLDE4IEBAIF9jb3B5U2VsZWN0U3RtdChjb25zdCBTZWxlY3RTdG10ICpmcm9tKQogCXJldHVy biBuZXdub2RlOwogfQogCitzdGF0aWMgTGV0U3RtdCAqCitfY29weUxldFN0bXQoY29uc3QgTGV0 U3RtdCAqZnJvbSkKK3sKKwlMZXRTdG10ICpuZXdub2RlID0gbWFrZU5vZGUoTGV0U3RtdCk7CisK KwlDT1BZX05PREVfRklFTEQodGFyZ2V0KTsKKwlDT1BZX05PREVfRklFTEQoc2VsZWN0U3RtdCk7 CisJQ09QWV9MT0NBVElPTl9GSUVMRChsb2NhdGlvbik7CisKKwlyZXR1cm4gbmV3bm9kZTsKK30K Kwogc3RhdGljIFNldE9wZXJhdGlvblN0bXQgKgogX2NvcHlTZXRPcGVyYXRpb25TdG10KGNvbnN0 IFNldE9wZXJhdGlvblN0bXQgKmZyb20pCiB7CkBAIC01MTY2LDYgKzUxODAsOSBAQCBjb3B5T2Jq ZWN0SW1wbChjb25zdCB2b2lkICpmcm9tKQogCQljYXNlIFRfU2VsZWN0U3RtdDoKIAkJCXJldHZh bCA9IF9jb3B5U2VsZWN0U3RtdChmcm9tKTsKIAkJCWJyZWFrOworCQljYXNlIFRfTGV0U3RtdDoK KwkJCXJldHZhbCA9IF9jb3B5TGV0U3RtdChmcm9tKTsKKwkJCWJyZWFrOwogCQljYXNlIFRfU2V0 T3BlcmF0aW9uU3RtdDoKIAkJCXJldHZhbCA9IF9jb3B5U2V0T3BlcmF0aW9uU3RtdChmcm9tKTsK IAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jIGIv c3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jCmluZGV4IDM3OGYyZmFjYjguLjNlYzQ3MmUx OWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYworKysgYi9zcmMv YmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMKQEAgLTk0OSw2ICs5NDksNyBAQCBfZXF1YWxRdWVy eShjb25zdCBRdWVyeSAqYSwgY29uc3QgUXVlcnkgKmIpCiAJQ09NUEFSRV9TQ0FMQVJfRklFTEQo Y2FuU2V0VGFnKTsKIAlDT01QQVJFX05PREVfRklFTEQodXRpbGl0eVN0bXQpOwogCUNPTVBBUkVf U0NBTEFSX0ZJRUxEKHJlc3VsdFJlbGF0aW9uKTsKKwlDT01QQVJFX1NDQUxBUl9GSUVMRChyZXN1 bHRWYXJpYWJsZSk7CiAJQ09NUEFSRV9TQ0FMQVJfRklFTEQoaGFzQWdncyk7CiAJQ09NUEFSRV9T Q0FMQVJfRklFTEQoaGFzV2luZG93RnVuY3MpOwogCUNPTVBBUkVfU0NBTEFSX0ZJRUxEKGhhc1Rh cmdldFNSRnMpOwpAQCAtMTA1Nyw2ICsxMDU4LDE2IEBAIF9lcXVhbFNlbGVjdFN0bXQoY29uc3Qg U2VsZWN0U3RtdCAqYSwgY29uc3QgU2VsZWN0U3RtdCAqYikKIAlyZXR1cm4gdHJ1ZTsKIH0KIAor c3RhdGljIGJvb2wKK19lcXVhbExldFN0bXQoY29uc3QgTGV0U3RtdCAqYSwgY29uc3QgTGV0U3Rt dCAqYikKK3sKKwlDT01QQVJFX05PREVfRklFTEQodGFyZ2V0KTsKKwlDT01QQVJFX05PREVfRklF TEQoc2VsZWN0U3RtdCk7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworCiBzdGF0aWMgYm9vbAogX2Vx dWFsU2V0T3BlcmF0aW9uU3RtdChjb25zdCBTZXRPcGVyYXRpb25TdG10ICphLCBjb25zdCBTZXRP cGVyYXRpb25TdG10ICpiKQogewpAQCAtMzIyNSw2ICszMjM2LDkgQEAgZXF1YWwoY29uc3Qgdm9p ZCAqYSwgY29uc3Qgdm9pZCAqYikKIAkJY2FzZSBUX1NlbGVjdFN0bXQ6CiAJCQlyZXR2YWwgPSBf ZXF1YWxTZWxlY3RTdG10KGEsIGIpOwogCQkJYnJlYWs7CisJCWNhc2UgVF9MZXRTdG10OgorCQkJ cmV0dmFsID0gX2VxdWFsTGV0U3RtdChhLCBiKTsKKwkJCWJyZWFrOwogCQljYXNlIFRfU2V0T3Bl cmF0aW9uU3RtdDoKIAkJCXJldHZhbCA9IF9lcXVhbFNldE9wZXJhdGlvblN0bXQoYSwgYik7CiAJ CQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMgYi9zcmMv YmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCmluZGV4IDYyNjlmNDc0ZDIuLjQ2NDA0ZmY5YWMgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQv bm9kZXMvb3V0ZnVuY3MuYwpAQCAtMjc4LDYgKzI3OCw3IEBAIF9vdXRQbGFubmVkU3RtdChTdHJp bmdJbmZvIHN0ciwgY29uc3QgUGxhbm5lZFN0bXQgKm5vZGUpCiAJV1JJVEVfTk9ERV9GSUVMRChy ZXN1bHRSZWxhdGlvbnMpOwogCVdSSVRFX05PREVfRklFTEQobm9ubGVhZlJlc3VsdFJlbGF0aW9u cyk7CiAJV1JJVEVfTk9ERV9GSUVMRChyb290UmVzdWx0UmVsYXRpb25zKTsKKwlXUklURV9PSURf RklFTEQocmVzdWx0VmFyaWFibGUpOwogCVdSSVRFX05PREVfRklFTEQoc3VicGxhbnMpOwogCVdS SVRFX0JJVE1BUFNFVF9GSUVMRChyZXdpbmRQbGFuSURzKTsKIAlXUklURV9OT0RFX0ZJRUxEKHJv d01hcmtzKTsKQEAgLTI3OTMsNiArMjc5NCwxNiBAQCBfb3V0U2VsZWN0U3RtdChTdHJpbmdJbmZv IHN0ciwgY29uc3QgU2VsZWN0U3RtdCAqbm9kZSkKIAlXUklURV9OT0RFX0ZJRUxEKHJhcmcpOwog fQogCitzdGF0aWMgdm9pZAorX291dExldFN0bXQoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IExldFN0 bXQgKm5vZGUpCit7CisJV1JJVEVfTk9ERV9UWVBFKCJMRVQiKTsKKworCVdSSVRFX05PREVfRklF TEQodGFyZ2V0KTsKKwlXUklURV9OT0RFX0ZJRUxEKHNlbGVjdFN0bXQpOworCVdSSVRFX0xPQ0FU SU9OX0ZJRUxEKGxvY2F0aW9uKTsKK30KKwogc3RhdGljIHZvaWQKIF9vdXRGdW5jQ2FsbChTdHJp bmdJbmZvIHN0ciwgY29uc3QgRnVuY0NhbGwgKm5vZGUpCiB7CkBAIC0yOTcxLDYgKzI5ODIsNyBA QCBfb3V0UXVlcnkoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IFF1ZXJ5ICpub2RlKQogCQlhcHBlbmRT dHJpbmdJbmZvU3RyaW5nKHN0ciwgIiA6dXRpbGl0eVN0bXQgPD4iKTsKIAogCVdSSVRFX0lOVF9G SUVMRChyZXN1bHRSZWxhdGlvbik7CisJV1JJVEVfSU5UX0ZJRUxEKHJlc3VsdFZhcmlhYmxlKTsK IAlXUklURV9CT09MX0ZJRUxEKGhhc0FnZ3MpOwogCVdSSVRFX0JPT0xfRklFTEQoaGFzV2luZG93 RnVuY3MpOwogCVdSSVRFX0JPT0xfRklFTEQoaGFzVGFyZ2V0U1JGcyk7CkBAIC00MTkxLDYgKzQy MDMsOSBAQCBvdXROb2RlKFN0cmluZ0luZm8gc3RyLCBjb25zdCB2b2lkICpvYmopCiAJCQljYXNl IFRfU2VsZWN0U3RtdDoKIAkJCQlfb3V0U2VsZWN0U3RtdChzdHIsIG9iaik7CiAJCQkJYnJlYWs7 CisJCQljYXNlIFRfTGV0U3RtdDoKKwkJCQlfb3V0TGV0U3RtdChzdHIsIG9iaik7CisJCQkJYnJl YWs7CiAJCQljYXNlIFRfQ29sdW1uRGVmOgogCQkJCV9vdXRDb2x1bW5EZWYoc3RyLCBvYmopOwog CQkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMgYi9z cmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYwppbmRleCAzMjU0NTI0MjIzLi40NDU0MzI3NTQ5 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYworKysgYi9zcmMvYmFj a2VuZC9ub2Rlcy9yZWFkZnVuY3MuYwpAQCAtMjQyLDYgKzI0Miw3IEBAIF9yZWFkUXVlcnkodm9p ZCkKIAlSRUFEX0JPT0xfRklFTEQoY2FuU2V0VGFnKTsKIAlSRUFEX05PREVfRklFTEQodXRpbGl0 eVN0bXQpOwogCVJFQURfSU5UX0ZJRUxEKHJlc3VsdFJlbGF0aW9uKTsKKwlSRUFEX0lOVF9GSUVM RChyZXN1bHRWYXJpYWJsZSk7CiAJUkVBRF9CT09MX0ZJRUxEKGhhc0FnZ3MpOwogCVJFQURfQk9P TF9GSUVMRChoYXNXaW5kb3dGdW5jcyk7CiAJUkVBRF9CT09MX0ZJRUxEKGhhc1RhcmdldFNSRnMp OwpAQCAtMTQ4NSw2ICsxNDg2LDcgQEAgX3JlYWRQbGFubmVkU3RtdCh2b2lkKQogCVJFQURfTk9E RV9GSUVMRChyZXN1bHRSZWxhdGlvbnMpOwogCVJFQURfTk9ERV9GSUVMRChub25sZWFmUmVzdWx0 UmVsYXRpb25zKTsKIAlSRUFEX05PREVfRklFTEQocm9vdFJlc3VsdFJlbGF0aW9ucyk7CisJUkVB RF9PSURfRklFTEQocmVzdWx0VmFyaWFibGUpOwogCVJFQURfTk9ERV9GSUVMRChzdWJwbGFucyk7 CiAJUkVBRF9CSVRNQVBTRVRfRklFTEQocmV3aW5kUGxhbklEcyk7CiAJUkVBRF9OT0RFX0ZJRUxE KHJvd01hcmtzKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5u ZXIuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwppbmRleCBmZDA2ZGE5 OGI5Li4wMWY5N2YyZDg2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9w bGFubmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCkBAIC0z MzUsNyArMzM1LDggQEAgc3RhbmRhcmRfcGxhbm5lcihRdWVyeSAqcGFyc2UsIGludCBjdXJzb3JP cHRpb25zLCBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zKQogCSAqLwogCWlmICgoY3Vyc29yT3B0 aW9ucyAmIENVUlNPUl9PUFRfUEFSQUxMRUxfT0spICE9IDAgJiYKIAkJSXNVbmRlclBvc3RtYXN0 ZXIgJiYKLQkJcGFyc2UtPmNvbW1hbmRUeXBlID09IENNRF9TRUxFQ1QgJiYKKwkJKHBhcnNlLT5j b21tYW5kVHlwZSA9PSBDTURfU0VMRUNUIHx8CisJCSBwYXJzZS0+Y29tbWFuZFR5cGUgPT0gQ01E X1BMQU5fVVRJTElUWSkgJiYKIAkJIXBhcnNlLT5oYXNNb2RpZnlpbmdDVEUgJiYKIAkJbWF4X3Bh cmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA+IDAgJiYKIAkJIUlzUGFyYWxsZWxXb3JrZXIoKSAm JgpAQCAtMzUyLDYgKzM1Myw4IEBAIHN0YW5kYXJkX3BsYW5uZXIoUXVlcnkgKnBhcnNlLCBpbnQg Y3Vyc29yT3B0aW9ucywgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcykKIAkJZ2xvYi0+cGFyYWxs ZWxNb2RlT0sgPSBmYWxzZTsKIAl9CiAKKworCiAJLyoKIAkgKiBnbG9iLT5wYXJhbGxlbE1vZGVO ZWVkZWQgaXMgbm9ybWFsbHkgc2V0IHRvIGZhbHNlIGhlcmUgYW5kIGNoYW5nZWQgdG8KIAkgKiB0 cnVlIGR1cmluZyBwbGFuIGNyZWF0aW9uIGlmIGEgR2F0aGVyIG9yIEdhdGhlciBNZXJnZSBwbGFu IGlzIGFjdHVhbGx5CkBAIC01MjEsNiArNTI0LDcgQEAgc3RhbmRhcmRfcGxhbm5lcihRdWVyeSAq cGFyc2UsIGludCBjdXJzb3JPcHRpb25zLCBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zKQogCXJl c3VsdC0+cmVzdWx0UmVsYXRpb25zID0gZ2xvYi0+cmVzdWx0UmVsYXRpb25zOwogCXJlc3VsdC0+ bm9ubGVhZlJlc3VsdFJlbGF0aW9ucyA9IGdsb2ItPm5vbmxlYWZSZXN1bHRSZWxhdGlvbnM7CiAJ cmVzdWx0LT5yb290UmVzdWx0UmVsYXRpb25zID0gZ2xvYi0+cm9vdFJlc3VsdFJlbGF0aW9uczsK KwlyZXN1bHQtPnJlc3VsdFZhcmlhYmxlID0gcGFyc2UtPnJlc3VsdFZhcmlhYmxlOwogCXJlc3Vs dC0+c3VicGxhbnMgPSBnbG9iLT5zdWJwbGFuczsKIAlyZXN1bHQtPnJld2luZFBsYW5JRHMgPSBn bG9iLT5yZXdpbmRQbGFuSURzOwogCXJlc3VsdC0+cm93TWFya3MgPSBnbG9iLT5maW5hbHJvd21h cmtzOwpAQCAtMjE2Nyw3ICsyMTcxLDcgQEAgZ3JvdXBpbmdfcGxhbm5lcihQbGFubmVySW5mbyAq cm9vdCwgYm9vbCBpbmhlcml0YW5jZV91cGRhdGUsCiAJCSAqIElmIHRoaXMgaXMgYW4gSU5TRVJU L1VQREFURS9ERUxFVEUsIGFuZCB3ZSdyZSBub3QgYmVpbmcgY2FsbGVkIGZyb20KIAkJICogaW5o ZXJpdGFuY2VfcGxhbm5lciwgYWRkIHRoZSBNb2RpZnlUYWJsZSBub2RlLgogCQkgKi8KLQkJaWYg KHBhcnNlLT5jb21tYW5kVHlwZSAhPSBDTURfU0VMRUNUICYmICFpbmhlcml0YW5jZV91cGRhdGUp CisJCWlmIChwYXJzZS0+Y29tbWFuZFR5cGUgIT0gQ01EX1NFTEVDVCAmJiBwYXJzZS0+Y29tbWFu ZFR5cGUgIT0gQ01EX1BMQU5fVVRJTElUWSAmJiAhaW5oZXJpdGFuY2VfdXBkYXRlKQogCQl7CiAJ CQlMaXN0CSAgICp3aXRoQ2hlY2tPcHRpb25MaXN0czsKIAkJCUxpc3QJICAgKnJldHVybmluZ0xp c3RzOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcHRsaXN0LmMg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwdGxpc3QuYwppbmRleCA4NjAzZmVlZjJi Li4yOTIzZTNmY2M3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVw dGxpc3QuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwdGxpc3QuYwpAQCAt NzEsNiArNzEsNyBAQCBwcmVwcm9jZXNzX3RhcmdldGxpc3QoUGxhbm5lckluZm8gKnJvb3QpCiB7 CiAJUXVlcnkJICAgKnBhcnNlID0gcm9vdC0+cGFyc2U7CiAJaW50CQkJcmVzdWx0X3JlbGF0aW9u ID0gcGFyc2UtPnJlc3VsdFJlbGF0aW9uOworCWludAkJCXJlc3VsdF92YXJpYWJsZSA9IHBhcnNl LT5yZXN1bHRWYXJpYWJsZTsKIAlMaXN0CSAgICpyYW5nZV90YWJsZSA9IHBhcnNlLT5ydGFibGU7 CiAJQ21kVHlwZQkJY29tbWFuZF90eXBlID0gcGFyc2UtPmNvbW1hbmRUeXBlOwogCVJhbmdlVGJs RW50cnkgKnRhcmdldF9ydGUgPSBOVUxMOwpAQCAtOTYsNiArOTcsMTAgQEAgcHJlcHJvY2Vzc190 YXJnZXRsaXN0KFBsYW5uZXJJbmZvICpyb290KQogCiAJCXRhcmdldF9yZWxhdGlvbiA9IGhlYXBf b3Blbih0YXJnZXRfcnRlLT5yZWxpZCwgTm9Mb2NrKTsKIAl9CisJZWxzZSBpZiAocmVzdWx0X3Zh cmlhYmxlKQorCXsKKwkJQXNzZXJ0KGNvbW1hbmRfdHlwZSA9PSBDTURfUExBTl9VVElMSVRZKTsK Kwl9CiAJZWxzZQogCQlBc3NlcnQoY29tbWFuZF90eXBlID09IENNRF9TRUxFQ1QpOwogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMgYi9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMKaW5kZXggYTA0YWQ2ZTk5ZS4uZGE1NzBiYjIzYiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jCisrKyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci91dGlsL2NsYXVzZXMuYwpAQCAtMTI1NCw3ICsxMjU0LDggQEAg bWF4X3BhcmFsbGVsX2hhemFyZF93YWxrZXIoTm9kZSAqbm9kZSwgbWF4X3BhcmFsbGVsX2hhemFy ZF9jb250ZXh0ICpjb250ZXh0KQogCXsKIAkJUGFyYW0JICAgKnBhcmFtID0gKFBhcmFtICopIG5v ZGU7CiAKLQkJaWYgKHBhcmFtLT5wYXJhbWtpbmQgPT0gUEFSQU1fRVhURVJOKQorCQlpZiAocGFy YW0tPnBhcmFta2luZCA9PSBQQVJBTV9FWFRFUk4gfHwKKwkJCXBhcmFtLT5wYXJhbWtpbmQgPT0g UEFSQU1fU0NIRU1BX1ZBUklBQkxFKQogCQkJcmV0dXJuIGZhbHNlOwogCiAJCWlmIChwYXJhbS0+ cGFyYW1raW5kICE9IFBBUkFNX0VYRUMgfHwKQEAgLTQ3OTksNyArNDgwMCw3IEBAIHN1YnN0aXR1 dGVfYWN0dWFsX3BhcmFtZXRlcnNfbXV0YXRvcihOb2RlICpub2RlLAogewogCWlmIChub2RlID09 IE5VTEwpCiAJCXJldHVybiBOVUxMOwotCWlmIChJc0Eobm9kZSwgUGFyYW0pKQorCWlmIChJc0Eo bm9kZSwgUGFyYW0pICYmICgoUGFyYW0gKikgbm9kZSktPnBhcmFta2luZCAhPSBQQVJBTV9TQ0hF TUFfVkFSSUFCTEUpCiAJewogCQlQYXJhbQkgICAqcGFyYW0gPSAoUGFyYW0gKikgbm9kZTsKIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jIGIvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jCmluZGV4IDgzNjllM2FkNjIuLmZjMGNmMzRj N2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQuYworKysg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMKQEAgLTEyNzIsNyArMTI3Miw3 IEBAIGdldF9yZWxhdGlvbl9jb25zdHJhaW50cyhQbGFubmVySW5mbyAqcm9vdCwKIAkgKiBkZXNj cmlwdG9yLCBpbnN0ZWFkIG9mIGNvbnN0cmFpbnQgZXhjbHVzaW9uIHdoaWNoIGlzIGRyaXZlbiBi eSB0aGUKIAkgKiBpbmRpdmlkdWFsIHBhcnRpdGlvbidzIHBhcnRpdGlvbiBjb25zdHJhaW50Lgog CSAqLwotCWlmIChlbmFibGVfcGFydGl0aW9uX3BydW5pbmcgJiYgcm9vdC0+cGFyc2UtPmNvbW1h bmRUeXBlICE9IENNRF9TRUxFQ1QpCisJaWYgKGVuYWJsZV9wYXJ0aXRpb25fcHJ1bmluZyAmJiBy b290LT5wYXJzZS0+Y29tbWFuZFR5cGUgIT0gQ01EX1NFTEVDVCAmJiByb290LT5wYXJzZS0+Y29t bWFuZFR5cGUgIT0gQ01EX1BMQU5fVVRJTElUWSkKIAl7CiAJCUxpc3QJICAgKnBjcXVhbCA9IFJl bGF0aW9uR2V0UGFydGl0aW9uUXVhbChyZWxhdGlvbik7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3BhcnNlci9hbmFseXplLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jCmluZGV4 IGM2MDFiNmQ0MGQuLjQ0MWIyOTg2OTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9h bmFseXplLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYwpAQCAtMjUsNyArMjUs MTAgQEAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCiAjaW5jbHVkZSAiYWNjZXNzL3N5c2F0dHIu aCIKKyNpbmNsdWRlICJjYXRhbG9nL25hbWVzcGFjZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdf dHlwZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdmFyaWFibGUuaCIKKyNpbmNsdWRlICJjb21t YW5kcy9zY2hlbWF2YXJpYWJsZS5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUg Im5vZGVzL21ha2VmdW5jcy5oIgogI2luY2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgpAQCAtNDQs NiArNDcsOCBAQAogI2luY2x1ZGUgInBhcnNlci9wYXJzZV90YXJnZXQuaCIKICNpbmNsdWRlICJw YXJzZXIvcGFyc2V0cmVlLmgiCiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlTWFuaXAuaCIKKyNp bmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgog I2luY2x1ZGUgInV0aWxzL3JlbC5oIgogCiAKQEAgLTc4LDYgKzgzLDggQEAgc3RhdGljIFF1ZXJ5 ICp0cmFuc2Zvcm1DcmVhdGVUYWJsZUFzU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkg ICBDcmVhdGVUYWJsZUFzU3RtdCAqc3RtdCk7CiBzdGF0aWMgUXVlcnkgKnRyYW5zZm9ybUNhbGxT dG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkgIENhbGxTdG10ICpzdG10KTsKK3N0YXRpYyBR dWVyeSAqdHJhbnNmb3JtTGV0U3RtdChQYXJzZVN0YXRlICpwc3RhdGUsCisJCQkJICBMZXRTdG10 ICpzdG10KTsKIHN0YXRpYyB2b2lkIHRyYW5zZm9ybUxvY2tpbmdDbGF1c2UoUGFyc2VTdGF0ZSAq cHN0YXRlLCBRdWVyeSAqcXJ5LAogCQkJCQkgICBMb2NraW5nQ2xhdXNlICpsYywgYm9vbCBwdXNo ZWREb3duKTsKICNpZmRlZiBSQVdfRVhQUkVTU0lPTl9DT1ZFUkFHRV9URVNUCkBAIC0yNjcsNiAr Mjc0LDcgQEAgdHJhbnNmb3JtU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKnBhcnNlVHJl ZSkKIAkJY2FzZSBUX0luc2VydFN0bXQ6CiAJCWNhc2UgVF9VcGRhdGVTdG10OgogCQljYXNlIFRf RGVsZXRlU3RtdDoKKwkJY2FzZSBUX0xldFN0bXQ6CiAJCQkodm9pZCkgdGVzdF9yYXdfZXhwcmVz c2lvbl9jb3ZlcmFnZShwYXJzZVRyZWUsIE5VTEwpOwogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CkBA IC0zMjcsNiArMzM1LDExIEBAIHRyYW5zZm9ybVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2Rl ICpwYXJzZVRyZWUpCiAJCQkJCQkJCQkgICAoQ2FsbFN0bXQgKikgcGFyc2VUcmVlKTsKIAkJCWJy ZWFrOwogCisJCWNhc2UgVF9MZXRTdG10OgorCQkJcmVzdWx0ID0gdHJhbnNmb3JtTGV0U3RtdChw c3RhdGUsCisJCQkJCQkJCQkgIChMZXRTdG10ICopIHBhcnNlVHJlZSk7CisJCQlicmVhazsKKwog CQlkZWZhdWx0OgogCiAJCQkvKgpAQCAtMzY3LDYgKzM4MCw3IEBAIGFuYWx5emVfcmVxdWlyZXNf c25hcHNob3QoUmF3U3RtdCAqcGFyc2VUcmVlKQogCQljYXNlIFRfRGVsZXRlU3RtdDoKIAkJY2Fz ZSBUX1VwZGF0ZVN0bXQ6CiAJCWNhc2UgVF9TZWxlY3RTdG10OgorCQljYXNlIFRfTGV0U3RtdDoK IAkJCXJlc3VsdCA9IHRydWU7CiAJCQlicmVhazsKIApAQCAtMTU2Nyw2ICsxNTgxLDIwMyBAQCB0 cmFuc2Zvcm1WYWx1ZXNDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBTZWxlY3RTdG10ICpzdG10 KQogCXJldHVybiBxcnk7CiB9CiAKKy8qCisgKiB0cmFuc2Zvcm1MZXRTdG10IC0KKyAqCSAgdHJh bnNmb3JtIGFuIExldCBTdGF0ZW1lbnQKKyAqLworc3RhdGljIFF1ZXJ5ICoKK3RyYW5zZm9ybUxl dFN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMZXRTdG10ICpzdG10KQoreworCVF1ZXJ5CSAgICpx cnkgPSBtYWtlTm9kZShRdWVyeSk7CisJTGlzdAkgICAqZXhwckxpc3QgPSBOSUw7CisJTGlzdAkg ICAqZXhwckxpc3RDb2VyID0gTklMOworCUxpc3QJICAgKmluZGlyZWN0aW9uID0gTklMOworCUxp c3RDZWxsICAgKmxjOworCVF1ZXJ5CSAgICpzZWxlY3RRdWVyeTsKKwlpbnQJCQlpID0gMDsKKwor CU9pZAkJCXZhcmlkOworCisJUGFyc2VFeHByS2luZCBzdl9leHByX2tpbmQ7CisJY2hhcgkgICAq YXR0cm5hbWUgPSBOVUxMOworCWJvb2wJCW5vdF91bmlxdWU7CisJYm9vbAkJaXNfcm93dHlwZTsK KwlPaWQJCQl0eXBpZDsKKwlpbnQzMgkJdHlwbW9kOworCisJQWNsUmVzdWx0CWFjbHJlc3VsdDsK KwlMaXN0CSAgICpuYW1lcyA9IE5VTEw7CisJaW50CQkJaW5kaXJlY3Rpb25fc3RhcnQ7CisKKwlz dl9leHByX2tpbmQgPSBwc3RhdGUtPnBfZXhwcl9raW5kOworCXBzdGF0ZS0+cF9leHByX2tpbmQg PSBFWFBSX0tJTkRfTEVUOworCisJLyogVGhlcmUgY2FuJ3QgYmUgYW55IG91dGVyIFdJVEggdG8g d29ycnkgYWJvdXQgKi8KKwlBc3NlcnQocHN0YXRlLT5wX2N0ZW5hbWVzcGFjZSA9PSBOSUwpOwor CisJLyogRXhlYyB0aGlzIGNvbW1hbmQgYXMgdXRpbGl0eSAqLworCXFyeS0+Y29tbWFuZFR5cGUg PSBDTURfUExBTl9VVElMSVRZOworCXFyeS0+dXRpbGl0eVN0bXQgPSAoTm9kZSAqKSBzdG10Owor CisJbmFtZXMgPSBOYW1lc0Zyb21MaXN0KHN0bXQtPnRhcmdldCk7CisKKwl2YXJpZCA9IGlkZW50 aWZ5X3ZhcmlhYmxlKG5hbWVzLCAmYXR0cm5hbWUsICZub3RfdW5pcXVlKTsKKwlpZiAobm90X3Vu aXF1ZSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0FNQklHVU9VU19Q QVJBTUVURVIpLAorCQkJCSBlcnJtc2coInRhcmdldCBcIiVzXCIgb2YgTEVUIGNvbW1hbmQgaXMg YW1iaWd1b3VzIiwKKwkJCQkJCU5hbWVMaXN0VG9TdHJpbmcobmFtZXMpKSwKKwkJCQkgcGFyc2Vy X2VycnBvc2l0aW9uKHBzdGF0ZSwgc3RtdC0+bG9jYXRpb24pKSk7CisKKwlpZiAoIU9pZElzVmFs aWQodmFyaWQpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRF RklORURfT0JKRUNUKSwKKwkJCQkJCSBlcnJtc2coInNjaGVtYSB2YXJpYWJsZSBcIiVzXCIgZG9l c24ndCBleGlzdHMiLAorCQkJCQkJCQlOYW1lTGlzdFRvU3RyaW5nKG5hbWVzKSksCisJCQkJCQkg cGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgc3RtdC0+bG9jYXRpb24pKSk7CisKKwlxcnktPnJl c3VsdFZhcmlhYmxlID0gdmFyaWQ7CisKKwlnZXRfc2NoZW1hX3ZhcmlhYmxlX3R5cGVfdHlwbW9k KHZhcmlkLCAmdHlwaWQsICZ0eXBtb2QpOworCisJaXNfcm93dHlwZSA9IHR5cGVfaXNfcm93dHlw ZSh0eXBpZCk7CisKKwlpZiAoYXR0cm5hbWUgJiYgIWlzX3Jvd3R5cGUpCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJIGVycm1z ZygidGFyZ2V0IHZhcmlhYmxlIFwiJXNcIiBpcyBub3Qgcm93IHR5cGUiLAorCQkJCQkJc2NoZW1h X3ZhcmlhYmxlX2dldF9uYW1lKHZhcmlkKSksCisJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0 ZSwgc3RtdC0+bG9jYXRpb24pKSk7CisKKwlhY2xyZXN1bHQgPSBwZ192YXJpYWJsZV9hY2xjaGVj ayh2YXJpZCwgR2V0VXNlcklkKCksIEFDTF9XUklURSk7CisJaWYgKGFjbHJlc3VsdCAhPSBBQ0xD SEVDS19PSykKKwkJYWNsY2hlY2tfZXJyb3IoYWNscmVzdWx0LCBPQkpFQ1RfVkFSSUFCTEUsIE5h bWVMaXN0VG9TdHJpbmcobmFtZXMpKTsKKworCXNlbGVjdFF1ZXJ5ID0gdHJhbnNmb3JtU3RtdChw c3RhdGUsIHN0bXQtPnNlbGVjdFN0bXQpOworCisJLyogVGhlIGdyYW1tYXIgc2hvdWxkIGhhdmUg cHJvZHVjZWQgYSBTRUxFQ1QgKi8KKwlpZiAoIUlzQShzZWxlY3RRdWVyeSwgUXVlcnkpIHx8CisJ CXNlbGVjdFF1ZXJ5LT5jb21tYW5kVHlwZSAhPSBDTURfU0VMRUNUKQorCQllbG9nKEVSUk9SLCAi dW5leHBlY3RlZCBub24tU0VMRUNUIGNvbW1hbmQgaW4gTEVUIC4uLiBTRUxFQ1QiKTsKKworCS8q LS0tLS0tLS0tLQorCSAqIEdlbmVyYXRlIGFuIGV4cHJlc3Npb24gbGlzdCBmb3IgdGhlIExFVCB0 aGF0IHNlbGVjdHMgYWxsIHRoZQorCSAqIG5vbi1yZXNqdW5rIGNvbHVtbnMgZnJvbSB0aGUgc3Vi cXVlcnkuCisJICotLS0tLS0tLS0tCisJICovCisJZXhwckxpc3QgPSBOSUw7CisJZm9yZWFjaChs Yywgc2VsZWN0UXVlcnktPnRhcmdldExpc3QpCisJeworCQlUYXJnZXRFbnRyeSAqdGxlID0gKFRh cmdldEVudHJ5ICopIGxmaXJzdChsYyk7CisKKwkJaWYgKHRsZS0+cmVzanVuaykKKwkJCWNvbnRp bnVlOworCisJCWV4cHJMaXN0ID0gbGFwcGVuZChleHByTGlzdCwgdGxlLT5leHByKTsKKwl9CisK KwkvKgorCSAqIEJlY2F1c2UgZG9lc24ndCBzdXBwb3J0IHBhdHRlcm4gbWF0Y2hpbmcsIGRvbid0 IGFsbG93IG11bHRpY29sdW1uIHJlc3VsdAorCSAqLworCWlmIChsaXN0X2xlbmd0aChleHByTGlz dCkgIT0gMSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9F UlJPUiksCisJCQkJIGVycm1zZygiZXhwcmVzc2lvbiBpcyBub3Qgc2NhbGFyIHZhbHVlIiksCisJ CQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsCisJCQkJCQkJCQlleHByTG9jYXRpb24oKE5v ZGUgKikgZXhwckxpc3QpKSkpOworCisJaW5kaXJlY3Rpb25fc3RhcnQgPSBsaXN0X2xlbmd0aChu YW1lcykgLSAoYXR0cm5hbWUgPyAxIDogMCk7CisJaW5kaXJlY3Rpb24gPSBsaXN0X2NvcHlfdGFp bChzdG10LT50YXJnZXQsIGluZGlyZWN0aW9uX3N0YXJ0KTsKKworCWV4cHJMaXN0Q29lciA9IE5J TDsKKwlmb3JlYWNoKGxjLCBleHByTGlzdCkKKwl7CisJCU5vZGUJICAgKm9yaWdfZXhwciA9IChO b2RlKikgbGZpcnN0KGxjKTsKKwkJT2lkCQkJZXhwcnR5cGlkID0gZXhwclR5cGUoKE5vZGUgKikg b3JpZ19leHByKTsKKwkJUGFyYW0gKnBhcmFtID0gbWFrZU5vZGUoUGFyYW0pOworCQlFeHByCSAg ICpleHByID0gTlVMTDsKKworCQlwYXJhbS0+cGFyYW1raW5kID0gUEFSQU1fU0NIRU1BX1ZBUklB QkxFOworCQlwYXJhbS0+cGFyYW1pZCA9IHZhcmlkOworCQlwYXJhbS0+cGFyYW10eXBlID0gdHlw aWQ7CisJCXBhcmFtLT5wYXJhbXR5cG1vZCA9IHR5cG1vZDsKKworCQlpZiAoaW5kaXJlY3Rpb24g IT0gTlVMTCkKKwkJeworCQkJYm9vbAkJdGFyZ2V0SXNBcnJheTsKKwkJCWNoYXIJICAgICp0YXJn ZXROYW1lOworCisJCQl0YXJnZXROYW1lID0gYXR0cm5hbWUgIT0gTlVMTCA/IGF0dHJuYW1lIDog Z2V0X3NjaGVtYV92YXJpYWJsZV9uYW1lKHZhcmlkKTsKKwkJCXRhcmdldElzQXJyYXkgPSBPaWRJ c1ZhbGlkKGdldF9lbGVtZW50X3R5cGUodHlwaWQpKTsKKworCQkJZXhwciA9IChFeHByICopCisJ CQkJCXRyYW5zZm9ybUFzc2lnbm1lbnRJbmRpcmVjdGlvbihwc3RhdGUsCisJCQkJCQkJCQkJCQko Tm9kZSAqKSBwYXJhbSwKKwkJCQkJCQkJCQkJCXRhcmdldE5hbWUsCisJCQkJCQkJCQkJCQl0YXJn ZXRJc0FycmF5LAorCQkJCQkJCQkJCQkJdHlwaWQsCisJCQkJCQkJCQkJCQl0eXBtb2QsCisJCQkJ CQkJCQkJCQlJbnZhbGlkT2lkLAorCQkJCQkJCQkJCQkJbGlzdF9oZWFkKGluZGlyZWN0aW9uKSwK KwkJCQkJCQkJCQkJCShOb2RlICopIG9yaWdfZXhwciwKKwkJCQkJCQkJCQkJCXN0bXQtPmxvY2F0 aW9uKTsKKwkJfQorCQllbHNlCisJCQlleHByID0gKEV4cHIgKikKKwkJCQkJY29lcmNlX3RvX3Rh cmdldF90eXBlKHBzdGF0ZSwKKwkJCQkJCQkJCQkJKE5vZGUgKikgb3JpZ19leHByLAorCQkJCQkJ CQkJCQlleHBydHlwaWQsCisJCQkJCQkJCQkJCXR5cGlkLCB0eXBtb2QsCisJCQkJCQkJCQkJCUNP RVJDSU9OX0FTU0lHTk1FTlQsCisJCQkJCQkJCQkJCUNPRVJDRV9JTVBMSUNJVF9DQVNULAorCQkJ CQkJCQkJCQlzdG10LT5sb2NhdGlvbik7CisKKwkJaWYgKGV4cHIgPT0gTlVMTCkKKwkJCWVyZXBv cnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLAorCQkJ CQkgZXJybXNnKCJ2YXJpYWJsZSBcIiVzXCIgaXMgb2YgdHlwZSAlcywiCisJCQkJCQkJICAiIGJ1 dCBleHByZXNzaW9uIGlzIG9mIHR5cGUgJXMiLAorCQkJCQkJc2NoZW1hX3ZhcmlhYmxlX2dldF9u YW1lKHZhcmlkKSwKKwkJCQkJCQlmb3JtYXRfdHlwZV9iZSh0eXBpZCksCisJCQkJCQkgIGZvcm1h dF90eXBlX2JlKGV4cHJ0eXBpZCkpLAorCQkJCSBlcnJoaW50KCJZb3Ugd2lsbCBuZWVkIHRvIHJl d3JpdGUgb3IgY2FzdCB0aGUgZXhwcmVzc2lvbi4iKSwKKwkJCQkgcGFyc2VyX2VycnBvc2l0aW9u KHBzdGF0ZSwgZXhwckxvY2F0aW9uKChOb2RlICopIG9yaWdfZXhwcikpKSk7CisKKwkJZXhwckxp c3RDb2VyID0gbGFwcGVuZChleHByTGlzdENvZXIsIGV4cHIpOworCX0KKworCS8qCisJICogR2Vu ZXJhdGUgcXVlcnkncyB0YXJnZXQgbGlzdCB1c2luZyB0aGUgY29tcHV0ZWQgbGlzdCBvZiBleHBy ZXNzaW9ucy4KKwkgKiBBbHNvLCBtYXJrIGFsbCB0aGUgdGFyZ2V0IGNvbHVtbnMgYXMgbmVlZGlu ZyBpbnNlcnQgcGVybWlzc2lvbnMuCisJICovCisJcXJ5LT50YXJnZXRMaXN0ID0gTklMOworCWZv cmVhY2gobGMsIGV4cHJMaXN0Q29lcikKKwl7CisJCUV4cHIJICAgKmV4cHIgPSAoRXhwciAqKSBs Zmlyc3QobGMpOworCQlUYXJnZXRFbnRyeSAqdGxlOworCisJCXRsZSA9IG1ha2VUYXJnZXRFbnRy eShleHByLAorCQkJCQkJCSAgaSArIDEsCisJCQkJCQkJICBGaWd1cmVDb2xuYW1lKChOb2RlICop ZXhwciksCisJCQkJCQkJICBmYWxzZSk7CisJCXFyeS0+dGFyZ2V0TGlzdCA9IGxhcHBlbmQocXJ5 LT50YXJnZXRMaXN0LCB0bGUpOworCX0KKworCS8qIGRvbmUgYnVpbGRpbmcgdGhlIHJhbmdlIHRh YmxlIGFuZCBqb2ludHJlZSAqLworCXFyeS0+cnRhYmxlID0gcHN0YXRlLT5wX3J0YWJsZTsKKwlx cnktPmpvaW50cmVlID0gbWFrZUZyb21FeHByKHBzdGF0ZS0+cF9qb2lubGlzdCwgTlVMTCk7CisK KwlxcnktPmhhc1RhcmdldFNSRnMgPSBwc3RhdGUtPnBfaGFzVGFyZ2V0U1JGczsKKwlxcnktPmhh c1N1YkxpbmtzID0gcHN0YXRlLT5wX2hhc1N1YkxpbmtzOworCisJYXNzaWduX3F1ZXJ5X2NvbGxh dGlvbnMocHN0YXRlLCBxcnkpOworCisJcHN0YXRlLT5wX2V4cHJfa2luZCA9IHN2X2V4cHJfa2lu ZDsKKworCXJldHVybiBxcnk7Cit9CisKKwogLyoKICAqIHRyYW5zZm9ybVNldE9wZXJhdGlvblN0 bXQgLQogICoJICB0cmFuc2Zvcm1zIGEgc2V0LW9wZXJhdGlvbnMgdHJlZQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5k ZXggODdmNWU5NTgyNy4uMjUwMzY2NjljMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2Vy L2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC0yNTcsOCArMjU3LDgg QEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExp c3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAkJQ29uc3RyYWludHNTZXRTdG10IENvcHlTdG10 IENyZWF0ZUFzU3RtdCBDcmVhdGVDYXN0U3RtdAogCQlDcmVhdGVEb21haW5TdG10IENyZWF0ZUV4 dGVuc2lvblN0bXQgQ3JlYXRlR3JvdXBTdG10IENyZWF0ZU9wQ2xhc3NTdG10CiAJCUNyZWF0ZU9w RmFtaWx5U3RtdCBBbHRlck9wRmFtaWx5U3RtdCBDcmVhdGVQTGFuZ1N0bXQKLQkJQ3JlYXRlU2No ZW1hU3RtdCBDcmVhdGVTZXFTdG10IENyZWF0ZVN0bXQgQ3JlYXRlU3RhdHNTdG10IENyZWF0ZVRh YmxlU3BhY2VTdG10Ci0JCUNyZWF0ZUZkd1N0bXQgQ3JlYXRlRm9yZWlnblNlcnZlclN0bXQgQ3Jl YXRlRm9yZWlnblRhYmxlU3RtdAorCQlDcmVhdGVTY2hlbWFTdG10IENyZWF0ZVNjaGVtYVZhclN0 bXQgQ3JlYXRlU2VxU3RtdCBDcmVhdGVTdG10IENyZWF0ZVN0YXRzU3RtdAorCQlDcmVhdGVUYWJs ZVNwYWNlU3RtdCBDcmVhdGVGZHdTdG10IENyZWF0ZUZvcmVpZ25TZXJ2ZXJTdG10IENyZWF0ZUZv cmVpZ25UYWJsZVN0bXQKIAkJQ3JlYXRlQXNzZXJ0U3RtdCBDcmVhdGVUcmFuc2Zvcm1TdG10IENy ZWF0ZVRyaWdTdG10IENyZWF0ZUV2ZW50VHJpZ1N0bXQKIAkJQ3JlYXRlVXNlclN0bXQgQ3JlYXRl VXNlck1hcHBpbmdTdG10IENyZWF0ZVJvbGVTdG10IENyZWF0ZVBvbGljeVN0bXQKIAkJQ3JlYXRl ZGJTdG10IERlY2xhcmVDdXJzb3JTdG10IERlZmluZVN0bXQgRGVsZXRlU3RtdCBEaXNjYXJkU3Rt dCBEb1N0bXQKQEAgLTI2OCw3ICsyNjgsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZp ZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCQlE cm9wVHJhbnNmb3JtU3RtdAogCQlEcm9wVXNlck1hcHBpbmdTdG10IEV4cGxhaW5TdG10IEZldGNo U3RtdAogCQlHcmFudFN0bXQgR3JhbnRSb2xlU3RtdCBJbXBvcnRGb3JlaWduU2NoZW1hU3RtdCBJ bmRleFN0bXQgSW5zZXJ0U3RtdAotCQlMaXN0ZW5TdG10IExvYWRTdG10IExvY2tTdG10IE5vdGlm eVN0bXQgRXhwbGFpbmFibGVTdG10IFByZXBhcmFibGVTdG10CisJCUxldFN0bXQgTGlzdGVuU3Rt dCBMb2FkU3RtdCBMb2NrU3RtdCBOb3RpZnlTdG10IEV4cGxhaW5hYmxlU3RtdCBQcmVwYXJhYmxl U3RtdAogCQlDcmVhdGVGdW5jdGlvblN0bXQgQWx0ZXJGdW5jdGlvblN0bXQgUmVpbmRleFN0bXQg UmVtb3ZlQWdnclN0bXQKIAkJUmVtb3ZlRnVuY1N0bXQgUmVtb3ZlT3BlclN0bXQgUmVuYW1lU3Rt dCBSZXZva2VTdG10IFJldm9rZVJvbGVTdG10CiAJCVJ1bGVBY3Rpb25TdG10IFJ1bGVBY3Rpb25T dG10T3JFbXB0eSBSdWxlU3RtdApAQCAtNDAwLDYgKzQwMCw3IEBAIHN0YXRpYyBOb2RlICptYWtl UmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpx dWVyeSk7CiAJCQkJVHJpZ2dlclRyYW5zaXRpb25zIFRyaWdnZXJSZWZlcmVuY2luZwogCQkJCXB1 YmxpY2F0aW9uX25hbWVfbGlzdAogCQkJCXZhY3V1bV9yZWxhdGlvbl9saXN0IG9wdF92YWN1dW1f cmVsYXRpb25fbGlzdAorCQkJCWxldF90YXJnZXQKIAogJXR5cGUgPGxpc3Q+CWdyb3VwX2J5X2xp c3QKICV0eXBlIDxub2RlPglncm91cF9ieV9pdGVtIGVtcHR5X2dyb3VwaW5nX3NldCByb2xsdXBf Y2xhdXNlIGN1YmVfY2xhdXNlCkBAIC01ODQsNiArNTg1LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VS ZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1 ZXJ5KTsKICV0eXBlIDxub2RlPgkJcGFydGJvdW5kX2RhdHVtIFBhcnRpdGlvblJhbmdlRGF0dW0K ICV0eXBlIDxsaXN0PgkJaGFzaF9wYXJ0Ym91bmQgcGFydGJvdW5kX2RhdHVtX2xpc3QgcmFuZ2Vf ZGF0dW1fbGlzdAogJXR5cGUgPGRlZmVsdD4JCWhhc2hfcGFydGJvdW5kX2VsZW0KKyV0eXBlIDxu b2RlPgkJb3B0U2NoZW1hVmFyRGVmRXhwcgogCiAvKgogICogTm9uLWtleXdvcmQgdG9rZW4gdHlw ZXMuICBUaGVzZSBhcmUgaGFyZC13aXJlZCBpbnRvIHRoZSAiZmxleCIgbGV4ZXIuCkBAIC02NDks NyArNjUxLDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJl bG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlLRVkKIAogCUxBQkVMIExBTkdV QUdFIExBUkdFX1AgTEFTVF9QIExBVEVSQUxfUAotCUxFQURJTkcgTEVBS1BST09GIExFQVNUIExF RlQgTEVWRUwgTElLRSBMSU1JVCBMSVNURU4gTE9BRCBMT0NBTAorCUxFQURJTkcgTEVBS1BST09G IExFQVNUIExFRlQgTEVUIExFVkVMIExJS0UgTElNSVQgTElTVEVOIExPQUQgTE9DQUwKIAlMT0NB TFRJTUUgTE9DQUxUSU1FU1RBTVAgTE9DQVRJT04gTE9DS19QIExPQ0tFRCBMT0dHRUQKIAogCU1B UFBJTkcgTUFUQ0ggTUFURVJJQUxJWkVEIE1BWFZBTFVFIE1FVEhPRCBNSU5VVEVfUCBNSU5WQUxV RSBNT0RFIE1PTlRIX1AgTU9WRQpAQCAtNjg3LDggKzY4OSw4IEBAIHN0YXRpYyBOb2RlICptYWtl UmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpx dWVyeSk7CiAJVU5CT1VOREVEIFVOQ09NTUlUVEVEIFVORU5DUllQVEVEIFVOSU9OIFVOSVFVRSBV TktOT1dOIFVOTElTVEVOIFVOTE9HR0VECiAJVU5USUwgVVBEQVRFIFVTRVIgVVNJTkcKIAotCVZB Q1VVTSBWQUxJRCBWQUxJREFURSBWQUxJREFUT1IgVkFMVUVfUCBWQUxVRVMgVkFSQ0hBUiBWQVJJ QURJQyBWQVJZSU5HCi0JVkVSQk9TRSBWRVJTSU9OX1AgVklFVyBWSUVXUyBWT0xBVElMRQorCVZB Q1VVTSBWQUxJRCBWQUxJREFURSBWQUxJREFUT1IgVkFMVUVfUCBWQUxVRVMgVkFSQ0hBUiBWQVJJ QUJMRSBWQVJJQUJMRVMKKwlWQVJJQURJQyBWQVJZSU5HIFZFUkJPU0UgVkVSU0lPTl9QIFZJRVcg VklFV1MgVk9MQVRJTEUKIAogCVdIRU4gV0hFUkUgV0hJVEVTUEFDRV9QIFdJTkRPVyBXSVRIIFdJ VEhJTiBXSVRIT1VUIFdPUksgV1JBUFBFUiBXUklURQogCkBAIC04NzgsNiArODgwLDcgQEAgc3Rt dCA6CiAJCQl8IENyZWF0ZVBvbGljeVN0bXQKIAkJCXwgQ3JlYXRlUExhbmdTdG10CiAJCQl8IENy ZWF0ZVNjaGVtYVN0bXQKKwkJCXwgQ3JlYXRlU2NoZW1hVmFyU3RtdAogCQkJfCBDcmVhdGVTZXFT dG10CiAJCQl8IENyZWF0ZVN0bXQKIAkJCXwgQ3JlYXRlU3Vic2NyaXB0aW9uU3RtdApAQCAtOTE3 LDYgKzkyMCw3IEBAIHN0bXQgOgogCQkJfCBJbXBvcnRGb3JlaWduU2NoZW1hU3RtdAogCQkJfCBJ bmRleFN0bXQKIAkJCXwgSW5zZXJ0U3RtdAorCQkJfCBMZXRTdG10CiAJCQl8IExpc3RlblN0bXQK IAkJCXwgUmVmcmVzaE1hdFZpZXdTdG10CiAJCQl8IExvYWRTdG10CkBAIC0xODA4LDcgKzE4MTIs MTIgQEAgRGlzY2FyZFN0bXQ6CiAJCQkJCW4tPnRhcmdldCA9IERJU0NBUkRfU0VRVUVOQ0VTOwog CQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJfQotCisJCQl8IERJU0NBUkQgVkFSSUFCTEVTCisJ CQkJeworCQkJCQlEaXNjYXJkU3RtdCAqbiA9IG1ha2VOb2RlKERpc2NhcmRTdG10KTsKKwkJCQkJ bi0+dGFyZ2V0ID0gRElTQ0FSRF9WQVJJQUJMRVM7CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJ CQl9CiAJCTsKIAogCkBAIC00NDc5LDYgKzQ0ODgsNDIgQEAgY3JlYXRlX2V4dGVuc2lvbl9vcHRf aXRlbToKIAkJCQl9CiAJCTsKIAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICoJCVFVRVJZ IDoKKyAqCQkJCUNSRUFURSBWQVJJQUJMRSB2YXJuYW1lIFtBU10gdHlwZQorICoKKyAqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8KKworQ3JlYXRlU2NoZW1hVmFyU3RtdDoKKwkJCUNSRUFURSBPcHRUZW1w IFZBUklBQkxFIHF1YWxpZmllZF9uYW1lIG9wdF9hcyBUeXBlbmFtZSBvcHRTY2hlbWFWYXJEZWZF eHByCisJCQkJeworCQkJCQlDcmVhdGVTY2hlbWFWYXJTdG10ICpuID0gbWFrZU5vZGUoQ3JlYXRl U2NoZW1hVmFyU3RtdCk7CisJCQkJCSQ0LT5yZWxwZXJzaXN0ZW5jZSA9ICQyOworCQkJCQluLT52 YXJpYWJsZSA9ICQ0OworCQkJCQluLT50eXBlTmFtZSA9ICQ2OworCQkJCQluLT5kZWZleHByID0g JDc7CisJCQkJCW4tPmlmX25vdF9leGlzdHMgPSBmYWxzZTsKKwkJCQkJJCQgPSAoTm9kZSAqKSBu OworCQkJCX0KKwkJCXwgQ1JFQVRFIE9wdFRlbXAgVkFSSUFCTEUgSUZfUCBOT1QgRVhJU1RTIHF1 YWxpZmllZF9uYW1lIG9wdF9hcyBUeXBlbmFtZSBvcHRTY2hlbWFWYXJEZWZFeHByCisJCQkJewor CQkJCQlDcmVhdGVTY2hlbWFWYXJTdG10ICpuID0gbWFrZU5vZGUoQ3JlYXRlU2NoZW1hVmFyU3Rt dCk7CisJCQkJCSQ3LT5yZWxwZXJzaXN0ZW5jZSA9ICQyOworCQkJCQluLT52YXJpYWJsZSA9ICQ3 OworCQkJCQluLT50eXBlTmFtZSA9ICQ5OworCQkJCQluLT5kZWZleHByID0gJDEwOworCQkJCQlu LT5pZl9ub3RfZXhpc3RzID0gdHJ1ZTsKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJ OworCitvcHRTY2hlbWFWYXJEZWZFeHByOiBERUZBVUxUIGJfZXhwcgkJCQkJCQl7ICQkID0gJDI7 IH0KKwkJCXwgLyogRU1QVFkgKi8JCQkJCQkJCQl7ICQkID0gTlVMTDsgfQorCQk7CisKKworCiAv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKICAqCiAgKiBBTFRFUiBFWFRFTlNJT04gbmFtZSBVUERBVEUg WyBUTyB2ZXJzaW9uIF0KQEAgLTYzMzUsNiArNjM4MCw3IEBAIGRyb3BfdHlwZV9hbnlfbmFtZToK IAkJCXwgVEVYVF9QIFNFQVJDSCBESUNUSU9OQVJZCQkJCXsgJCQgPSBPQkpFQ1RfVFNESUNUSU9O QVJZOyB9CiAJCQl8IFRFWFRfUCBTRUFSQ0ggVEVNUExBVEUJCQkJeyAkJCA9IE9CSkVDVF9UU1RF TVBMQVRFOyB9CiAJCQl8IFRFWFRfUCBTRUFSQ0ggQ09ORklHVVJBVElPTgkJCXsgJCQgPSBPQkpF Q1RfVFNDT05GSUdVUkFUSU9OOyB9CisJCQl8IFZBUklBQkxFCQkJCQkJCQl7ICQkID0gT0JKRUNU X1ZBUklBQkxFOyB9CiAJCTsKIAogLyogb2JqZWN0IHR5cGVzIHRha2luZyBuYW1lX2xpc3QgKi8K QEAgLTY2MDQsNiArNjY1MCw3IEBAIGNvbW1lbnRfdHlwZV9hbnlfbmFtZToKIAkJCXwgVEVYVF9Q IFNFQVJDSCBESUNUSU9OQVJZCQkJeyAkJCA9IE9CSkVDVF9UU0RJQ1RJT05BUlk7IH0KIAkJCXwg VEVYVF9QIFNFQVJDSCBQQVJTRVIJCQkJeyAkJCA9IE9CSkVDVF9UU1BBUlNFUjsgfQogCQkJfCBU RVhUX1AgU0VBUkNIIFRFTVBMQVRFCQkJeyAkJCA9IE9CSkVDVF9UU1RFTVBMQVRFOyB9CisJCQl8 IFZBUklBQkxFCQkJCQkJCXsgJCQgPSBPQkpFQ1RfVkFSSUFCTEU7IH0KIAkJOwogCiAvKiBvYmpl Y3QgdHlwZXMgdGFraW5nIG5hbWUgKi8KQEAgLTY3NDIsNiArNjc4OSw3IEBAIHNlY3VyaXR5X2xh YmVsX3R5cGVfYW55X25hbWU6CiAJCQl8IFRBQkxFCQkJCQkJCQl7ICQkID0gT0JKRUNUX1RBQkxF OyB9CiAJCQl8IFZJRVcJCQkJCQkJCXsgJCQgPSBPQkpFQ1RfVklFVzsgfQogCQkJfCBNQVRFUklB TElaRUQgVklFVwkJCQkJeyAkJCA9IE9CSkVDVF9NQVRWSUVXOyB9CisJCQl8IFZBUklBQkxFCQkJ CQkJCXsgJCQgPSBPQkpFQ1RfVkFSSUFCTEU7IH0KIAkJOwogCiAvKiBvYmplY3QgdHlwZXMgdGFr aW5nIG5hbWUgKi8KQEAgLTcxNjMsNiArNzIxMSwxNCBAQCBwcml2aWxlZ2VfdGFyZ2V0OgogCQkJ CQluLT5vYmpzID0gJDI7CiAJCQkJCSQkID0gbjsKIAkJCQl9CisJCQl8IFZBUklBQkxFIHF1YWxp ZmllZF9uYW1lX2xpc3QKKwkJCQl7CisJCQkJCVByaXZUYXJnZXQgKm4gPSAoUHJpdlRhcmdldCAq KSBwYWxsb2Moc2l6ZW9mKFByaXZUYXJnZXQpKTsKKwkJCQkJbi0+dGFyZ3R5cGUgPSBBQ0xfVEFS R0VUX09CSkVDVDsKKwkJCQkJbi0+b2JqdHlwZSA9IE9CSkVDVF9WQVJJQUJMRTsKKwkJCQkJbi0+ b2JqcyA9ICQyOworCQkJCQkkJCA9IG47CisJCQkJfQogCQkJfCBBTEwgVEFCTEVTIElOX1AgU0NI RU1BIG5hbWVfbGlzdAogCQkJCXsKIAkJCQkJUHJpdlRhcmdldCAqbiA9IChQcml2VGFyZ2V0ICop IHBhbGxvYyhzaXplb2YoUHJpdlRhcmdldCkpOwpAQCAtNzIwMyw2ICs3MjU5LDE0IEBAIHByaXZp bGVnZV90YXJnZXQ6CiAJCQkJCW4tPm9ianMgPSAkNTsKIAkJCQkJJCQgPSBuOwogCQkJCX0KKwkJ CXwgQUxMIFZBUklBQkxFUyBJTl9QIFNDSEVNQSBuYW1lX2xpc3QKKwkJCQl7CisJCQkJCVByaXZU YXJnZXQgKm4gPSAoUHJpdlRhcmdldCAqKSBwYWxsb2Moc2l6ZW9mKFByaXZUYXJnZXQpKTsKKwkJ CQkJbi0+dGFyZ3R5cGUgPSBBQ0xfVEFSR0VUX0FMTF9JTl9TQ0hFTUE7CisJCQkJCW4tPm9ianR5 cGUgPSBPQkpFQ1RfVkFSSUFCTEU7CisJCQkJCW4tPm9ianMgPSAkNTsKKwkJCQkJJCQgPSBuOwor CQkJCX0KIAkJOwogCiAKQEAgLTczNjMsNiArNzQyNyw3IEBAIGRlZmFjbF9wcml2aWxlZ2VfdGFy Z2V0OgogCQkJfCBTRVFVRU5DRVMJCXsgJCQgPSBPQkpFQ1RfU0VRVUVOQ0U7IH0KIAkJCXwgVFlQ RVNfUAkJeyAkJCA9IE9CSkVDVF9UWVBFOyB9CiAJCQl8IFNDSEVNQVMJCXsgJCQgPSBPQkpFQ1Rf U0NIRU1BOyB9CisJCQl8IFZBUklBQkxFUwkJeyAkJCA9IE9CSkVDVF9WQVJJQUJMRTsgfQogCQk7 CiAKIApAQCAtODk1OSw2ICs5MDI0LDI1IEBAIFJlbmFtZVN0bXQ6IEFMVEVSIEFHR1JFR0FURSBh Z2dyZWdhdGVfd2l0aF9hcmd0eXBlcyBSRU5BTUUgVE8gbmFtZQogCQkJCQluLT5taXNzaW5nX29r ID0gZmFsc2U7CiAJCQkJCSQkID0gKE5vZGUgKiluOwogCQkJCX0KKwkJCXwgQUxURVIgVkFSSUFC TEUgYW55X25hbWUgUkVOQU1FIFRPIG5hbWUKKwkJCQl7CisJCQkJCVJlbmFtZVN0bXQgKm4gPSBt YWtlTm9kZShSZW5hbWVTdG10KTsKKwkJCQkJbi0+cmVuYW1lVHlwZSA9IE9CSkVDVF9WQVJJQUJM RTsKKwkJCQkJbi0+b2JqZWN0ID0gKE5vZGUgKikgJDM7CisJCQkJCW4tPm5ld25hbWUgPSAkNjsK KwkJCQkJbi0+bWlzc2luZ19vayA9IGZhbHNlOworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJCQl9 CisJCQl8IEFMVEVSIFZBUklBQkxFIElGX1AgRVhJU1RTIGFueV9uYW1lIFJFTkFNRSBUTyBuYW1l CisJCQkJeworCQkJCQlSZW5hbWVTdG10ICpuID0gbWFrZU5vZGUoUmVuYW1lU3RtdCk7CisJCQkJ CW4tPnJlbmFtZVR5cGUgPSBPQkpFQ1RfVkFSSUFCTEU7CisJCQkJCW4tPm9iamVjdCA9IChOb2Rl ICopICQ1OworCQkJCQluLT5uZXduYW1lID0gJDg7CisJCQkJCW4tPm1pc3Npbmdfb2sgPSB0cnVl OworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJCQl9CisKIAkJOwogCiBvcHRfY29sdW1uOiBDT0xV TU4JCQkJCQkJCQl7ICQkID0gQ09MVU1OOyB9CkBAIC05Mjc3LDYgKzkzNjEsMjUgQEAgQWx0ZXJP YmplY3RTY2hlbWFTdG10OgogCQkJCQluLT5taXNzaW5nX29rID0gZmFsc2U7CiAJCQkJCSQkID0g KE5vZGUgKiluOwogCQkJCX0KKwkJCXwgQUxURVIgVkFSSUFCTEUgYW55X25hbWUgU0VUIFNDSEVN QSBuYW1lCisJCQkJeworCQkJCQlBbHRlck9iamVjdFNjaGVtYVN0bXQgKm4gPSBtYWtlTm9kZShB bHRlck9iamVjdFNjaGVtYVN0bXQpOworCQkJCQluLT5vYmplY3RUeXBlID0gT0JKRUNUX1ZBUklB QkxFOworCQkJCQluLT5vYmplY3QgPSAoTm9kZSAqKSAkMzsKKwkJCQkJbi0+bmV3c2NoZW1hID0g JDY7CisJCQkJCW4tPm1pc3Npbmdfb2sgPSBmYWxzZTsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJ CQkJfQorCQkJfCBBTFRFUiBWQVJJQUJMRSBJRl9QIEVYSVNUUyBhbnlfbmFtZSBTRVQgU0NIRU1B IG5hbWUKKwkJCQl7CisJCQkJCUFsdGVyT2JqZWN0U2NoZW1hU3RtdCAqbiA9IG1ha2VOb2RlKEFs dGVyT2JqZWN0U2NoZW1hU3RtdCk7CisJCQkJCW4tPm9iamVjdFR5cGUgPSBPQkpFQ1RfVkFSSUFC TEU7CisJCQkJCW4tPm9iamVjdCA9IChOb2RlICopICQ1OworCQkJCQluLT5uZXdzY2hlbWEgPSAk ODsKKwkJCQkJbi0+bWlzc2luZ19vayA9IHRydWU7CisJCQkJCSQkID0gKE5vZGUgKiluOworCQkJ CX0KKwogCQk7CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtOTUxMiw2ICs5NjE1LDE0IEBA IEFsdGVyT3duZXJTdG10OiBBTFRFUiBBR0dSRUdBVEUgYWdncmVnYXRlX3dpdGhfYXJndHlwZXMg T1dORVIgVE8gUm9sZVNwZWMKIAkJCQkJbi0+bmV3b3duZXIgPSAkNjsKIAkJCQkJJCQgPSAoTm9k ZSAqKW47CiAJCQkJfQorCQkJfCBBTFRFUiBWQVJJQUJMRSBhbnlfbmFtZSBPV05FUiBUTyBSb2xl U3BlYworCQkJCXsKKwkJCQkJQWx0ZXJPd25lclN0bXQgKm4gPSBtYWtlTm9kZShBbHRlck93bmVy U3RtdCk7CisJCQkJCW4tPm9iamVjdFR5cGUgPSBPQkpFQ1RfVkFSSUFCTEU7CisJCQkJCW4tPm9i amVjdCA9IChOb2RlICopICQzOworCQkJCQluLT5uZXdvd25lciA9ICQ2OworCQkJCQkkJCA9IChO b2RlICopbjsKKwkJCQl9CiAJCTsKIAogCkBAIC0xMDY5Myw2ICsxMDgwNCw3IEBAIEV4cGxhaW5h YmxlU3RtdDoKIAkJCXwgQ3JlYXRlTWF0Vmlld1N0bXQKIAkJCXwgUmVmcmVzaE1hdFZpZXdTdG10 CiAJCQl8IEV4ZWN1dGVTdG10CQkJCQkvKiBieSBkZWZhdWx0IGFsbCBhcmUgJCQ9JDEgKi8KKwkJ CXwgTGV0U3RtdAogCQk7CiAKIGV4cGxhaW5fb3B0aW9uX2xpc3Q6CkBAIC0xMDc1MCw2ICsxMDg2 Miw3IEBAIFByZXBhcmFibGVTdG10OgogCQkJfCBJbnNlcnRTdG10CiAJCQl8IFVwZGF0ZVN0bXQK IAkJCXwgRGVsZXRlU3RtdAkJCQkJLyogYnkgZGVmYXVsdCBhbGwgYXJlICQkPSQxICovCisJCQl8 IExldFN0bXQKIAkJOwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTExMTQ4LDYgKzExMjYx LDQ0IEBAIG9wdF9ob2xkOiAvKiBFTVBUWSAqLwkJCQkJCXsgJCQgPSAwOyB9CiAJCQl8IFdJVEhP VVQgSE9MRAkJCQkJeyAkJCA9IDA7IH0KIAkJOwogCisvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAq CisgKgkJUVVFUlk6CisgKgkJCQlMRVQgU1RBVEVNRU5UUworICoKKyAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8KK0xldFN0bXQ6CUxFVCBsZXRfdGFyZ2V0ICc9JyBhX2V4cHIKKwkJCQl7CisJCQkJCUxl dFN0bXQgKm4gPSBtYWtlTm9kZShMZXRTdG10KTsKKwkJCQkJU2VsZWN0U3RtdCAqc2VsZWN0ID0g bWFrZU5vZGUoU2VsZWN0U3RtdCk7CisJCQkJCVJlc1RhcmdldAkqcmVzID0gbWFrZU5vZGUoUmVz VGFyZ2V0KTsKKworCQkJCQluLT50YXJnZXQgPSAkMjsKKworCQkJCQkvKiBDcmVhdGUgdGFyZ2V0 IGxpc3QgZm9yIGltcGxpY2l0IHF1ZXJ5ICovCisJCQkJCXJlcy0+bmFtZSA9IE5VTEw7CisJCQkJ CXJlcy0+aW5kaXJlY3Rpb24gPSBOSUw7CisJCQkJCXJlcy0+dmFsID0gKE5vZGUgKikgJDQ7CisJ CQkJCXJlcy0+bG9jYXRpb24gPSBANDsKKworCQkJCQlzZWxlY3QtPnRhcmdldExpc3QgPSBsaXN0 X21ha2UxKHJlcyk7CisJCQkJCW4tPnNlbGVjdFN0bXQgPSAoTm9kZSAqKSBzZWxlY3Q7CisKKwkJ CQkJbi0+bG9jYXRpb24gPSBAMjsKKworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQorCQk7 CisKK2xldF90YXJnZXQ6CisJCQlDb2xJZCBvcHRfaW5kaXJlY3Rpb24KKwkJCQl7CisJCQkJCSQk ID0gbGlzdF9tYWtlMShtYWtlU3RyaW5nKCQxKSk7CisJCQkJCWlmICgkMikKKwkJCQkJCSAgJCQg PSBsaXN0X2NvbmNhdCgkJCwKKwkJCQkJCQkJCQkgICBjaGVja19pbmRpcmVjdGlvbigkMiwgeXlz Y2FubmVyKSk7CisJCQkJfQorCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKgkJUVVFUlk6 CkBAIC0xNTEyNyw2ICsxNTI3OCw3IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgTEFSR0Vf UAogCQkJfCBMQVNUX1AKIAkJCXwgTEVBS1BST09GCisJCQl8IExFVAogCQkJfCBMRVZFTAogCQkJ fCBMSVNURU4KIAkJCXwgTE9BRApAQCAtMTUyNzUsNiArMTU0MjcsOCBAQCB1bnJlc2VydmVkX2tl eXdvcmQ6CiAJCQl8IFZBTElEQVRFCiAJCQl8IFZBTElEQVRPUgogCQkJfCBWQUxVRV9QCisJCQl8 IFZBUklBQkxFCisJCQl8IFZBUklBQkxFUwogCQkJfCBWQVJZSU5HCiAJCQl8IFZFUlNJT05fUAog CQkJfCBWSUVXCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMgYi9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMKaW5kZXggNjE3MjdlMWQ3MS4uNjgyMzYxMmZi YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jCisrKyBiL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cuYwpAQCAtMzQ5LDYgKzM0OSw3IEBAIGNoZWNrX2FnZ2xl dmVsc19hbmRfY29uc3RyYWludHMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpleHByKQogCQkJ QXNzZXJ0KGZhbHNlKTsJCS8qIGNhbid0IGhhcHBlbiAqLwogCQkJYnJlYWs7CiAJCWNhc2UgRVhQ Ul9LSU5EX09USEVSOgorCQljYXNlIEVYUFJfS0lORF9MRVQ6CiAKIAkJCS8qCiAJCQkgKiBBY2Nl cHQgYWdncmVnYXRlL2dyb3VwaW5nIGhlcmU7IGNhbGxlciBtdXN0IHRocm93IGVycm9yIGlmCkBA IC00NjUsNiArNDY2LDcgQEAgY2hlY2tfYWdnbGV2ZWxzX2FuZF9jb25zdHJhaW50cyhQYXJzZVN0 YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIpCiAJCQlicmVhazsKIAkJY2FzZSBFWFBSX0tJTkRfQ09M VU1OX0RFRkFVTFQ6CiAJCWNhc2UgRVhQUl9LSU5EX0ZVTkNUSU9OX0RFRkFVTFQ6CisJCWNhc2Ug RVhQUl9LSU5EX1ZBUklBQkxFX0RFRkFVTFQ6CiAKIAkJCWlmIChpc0FnZykKIAkJCQllcnIgPSBf KCJhZ2dyZWdhdGUgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBERUZBVUxUIGV4cHJlc3Np b25zIik7CkBAIC04NzksNiArODgxLDcgQEAgdHJhbnNmb3JtV2luZG93RnVuY0NhbGwoUGFyc2VT dGF0ZSAqcHN0YXRlLCBXaW5kb3dGdW5jICp3ZnVuYywKIAkJCWJyZWFrOwogCQljYXNlIEVYUFJf S0lORF9DT0xVTU5fREVGQVVMVDoKIAkJY2FzZSBFWFBSX0tJTkRfRlVOQ1RJT05fREVGQVVMVDoK KwkJY2FzZSBFWFBSX0tJTkRfVkFSSUFCTEVfREVGQVVMVDoKIAkJCWVyciA9IF8oIndpbmRvdyBm dW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIERFRkFVTFQgZXhwcmVzc2lvbnMiKTsKIAkJCWJy ZWFrOwogCQljYXNlIEVYUFJfS0lORF9JTkRFWF9FWFBSRVNTSU9OOgpAQCAtOTAyLDYgKzkwNSw4 IEBAIHRyYW5zZm9ybVdpbmRvd0Z1bmNDYWxsKFBhcnNlU3RhdGUgKnBzdGF0ZSwgV2luZG93RnVu YyAqd2Z1bmMsCiAJCWNhc2UgRVhQUl9LSU5EX0NBTExfQVJHVU1FTlQ6CiAJCQllcnIgPSBfKCJ3 aW5kb3cgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBDQUxMIGFyZ3VtZW50cyIpOwogCQkJ YnJlYWs7CisJCWNhc2UgRVhQUl9LSU5EX0xFVDoKKwkJCWVyciA9IF8oIndpbmRvdyBmdW5jdGlv bnMgYXJlIG5vdCBhbGxvd2VkIGluIExFVCBzdGF0ZW1lbnQiKTsKIAogCQkJLyoKIAkJCSAqIFRo ZXJlIGlzIGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDogY2FzZSBoZXJlLCBzbyB0aGF0IHRoZQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyBiL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV9leHByLmMKaW5kZXggMzg1ZTU0YTliNi4uYmNkZGEwZmI0YSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYworKysgYi9zcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfZXhwci5jCkBAIC0xNiw2ICsxNiw3IEBACiAjaW5jbHVkZSAicG9zdGdyZXMu aCIKIAogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdf dmFyaWFibGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9kYmNvbW1hbmRzLmgiCiAjaW5jbHVkZSAi bWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCkBAIC0zNyw2ICszOCw3 IEBACiAjaW5jbHVkZSAidXRpbHMvZGF0ZS5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5o IgogI2luY2x1ZGUgInV0aWxzL3RpbWVzdGFtcC5oIgorI2luY2x1ZGUgInV0aWxzL3R5cGNhY2hl LmgiCiAjaW5jbHVkZSAidXRpbHMveG1sLmgiCiAKIApAQCAtMTE2LDYgKzExOCw5IEBAIHN0YXRp YyBOb2RlICp0cmFuc2Zvcm1YbWxTZXJpYWxpemUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBYbWxTZXJp YWxpemUgKnhzKTsKIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1Cb29sZWFuVGVzdChQYXJzZVN0YXRl ICpwc3RhdGUsIEJvb2xlYW5UZXN0ICpiKTsKIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1DdXJyZW50 T2ZFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3VycmVudE9mRXhwciAqY2V4cHIpOwogc3RhdGlj IE5vZGUgKnRyYW5zZm9ybUNvbHVtblJlZihQYXJzZVN0YXRlICpwc3RhdGUsIENvbHVtblJlZiAq Y3JlZik7CitzdGF0aWMgTm9kZSAqbWFrZVBhcmFtU2NoZW1hVmFyaWFibGUoUGFyc2VTdGF0ZSAq cHN0YXRlLAorCQkJCQkJICBPaWQgdmFyaWQsIE9pZCB0eXBpZCwgaW50MzIgdHlwbW9kLAorCQkJ CQkJICBjaGFyICphdHRybmFtZSwgaW50IGxvY2F0aW9uKTsKIHN0YXRpYyBOb2RlICp0cmFuc2Zv cm1XaG9sZVJvd1JlZihQYXJzZVN0YXRlICpwc3RhdGUsIFJhbmdlVGJsRW50cnkgKnJ0ZSwKIAkJ CQkJIGludCBsb2NhdGlvbik7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtSW5kaXJlY3Rpb24oUGFy c2VTdGF0ZSAqcHN0YXRlLCBBX0luZGlyZWN0aW9uICppbmQpOwpAQCAtNTEyLDYgKzUxNywxMCBA QCB0cmFuc2Zvcm1Db2x1bW5SZWYoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDb2x1bW5SZWYgKmNyZWYp CiAJY2hhcgkgICAqbnNwbmFtZSA9IE5VTEw7CiAJY2hhcgkgICAqcmVsbmFtZSA9IE5VTEw7CiAJ Y2hhcgkgICAqY29sbmFtZSA9IE5VTEw7CisJT2lkCQkJdmFyaWQgPSBJbnZhbGlkT2lkOworCWNo YXIJICAgKmF0dHJuYW1lID0gTlVMTDsKKwlib29sCQlub3RfdW5pcXVlOworCiAJUmFuZ2VUYmxF bnRyeSAqcnRlOwogCWludAkJCWxldmVsc191cDsKIAllbnVtCkBAIC03NDksNiArNzU4LDE1IEBA IHRyYW5zZm9ybUNvbHVtblJlZihQYXJzZVN0YXRlICpwc3RhdGUsIENvbHVtblJlZiAqY3JlZikK IAkJCWJyZWFrOwogCX0KIAorCXZhcmlkID0gaWRlbnRpZnlfdmFyaWFibGUoY3JlZi0+ZmllbGRz LCAmYXR0cm5hbWUsICZub3RfdW5pcXVlKTsKKworCWlmIChub3RfdW5pcXVlKQorCQllcmVwb3J0 KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfQU1CSUdVT1VTX1BBUkFNRVRFUiksCisJCQkJ IGVycm1zZygic2NoZW1hIHZhcmlhYmxlIHJlZmVyZW5jZSBcIiVzXCIgaXMgYW1iaWd1b3VzIiwK KwkJCQkJCU5hbWVMaXN0VG9TdHJpbmcoY3JlZi0+ZmllbGRzKSksCisJCQkJIHBhcnNlcl9lcnJw b3NpdGlvbihwc3RhdGUsIGNyZWYtPmxvY2F0aW9uKSkpOworCiAJLyoKIAkgKiBOb3cgZ2l2ZSB0 aGUgUG9zdFBhcnNlQ29sdW1uUmVmSG9vaywgaWYgYW55LCBhIGNoYW5jZS4gIFdlIHBhc3MgdGhl CiAJICogdHJhbnNsYXRpb24tc28tZmFyIHNvIHRoYXQgaXQgY2FuIHRocm93IGFuIGVycm9yIGlm IGl0IHdpc2hlcyBpbiB0aGUKQEAgLTc3Myw2ICs3OTEsNzEgQEAgdHJhbnNmb3JtQ29sdW1uUmVm KFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29sdW1uUmVmICpjcmVmKQogCQkJCQkgcGFyc2VyX2VycnBv c2l0aW9uKHBzdGF0ZSwgY3JlZi0+bG9jYXRpb24pKSk7CiAJfQogCisJaWYgKE9pZElzVmFsaWQo dmFyaWQpKQorCXsKKwkJT2lkCQl0eXBpZDsKKwkJaW50MzIJdHlwbW9kOworCisJCWdldF9zY2hl bWFfdmFyaWFibGVfdHlwZV90eXBtb2QodmFyaWQsICZ0eXBpZCwgJnR5cG1vZCk7CisKKwkJaWYg KG5vZGUgIT0gTlVMTCkKKwkJeworCQkJLyoKKwkJCSAqIHNvbWUgY29sbGlzaW9uIGNhbiBiZSBz b2x2ZWQgc2ltcGx5IGhlcmUgdG8gcmVkdWNlIGVycm9ycworCQkJICogYmFzZWQgb24gc2ltcGx5 IGV4aXN0ZW5jZSBvZiBzb21lIHZhcmlhYmxlcy4gT2Z0ZW4gZXJyb3IKKwkJCSAqIGNhbiBiZSB1 c2luZyBhbGlhcyBzYW1lIGxpa2UgdmFyaWFibGUgbmFtZS4gSW4gdGhpcyBjYXNlLAorCQkJICog d2hlbiB3ZSBmb3VuZCBjb2x1bW4gcmVmZXJlbmNlLCBhbmQgd2UgZm91bmQgcmVmZXJlbmNlIHRv CisJCQkgKiBwb3NzaWJsZSBjb21wb3NpdGUgdmFyaWFibGUsIGJ1dCB0aGUgdmFyaWFibGUgaXMg bm90IGNvbXBvc2l0ZSwKKwkJCSAqIHRoZW4gd2UgY2FuIGlnbm9yZSB0aGUgdmFyaWFibGUgYXMg c2ltcGx5IGltcHJvcGVyLCBhbmQgd2UKKwkJCSAqIHVzZSBjb2x1bW4gcmVmZXJlbmNlIG9ubHku CisJCQkgKi8KKwkJCWlmIChhdHRybmFtZSkKKwkJCXsKKwkJCQlpZiAodHlwZV9pc19yb3d0eXBl KHR5cGlkKSkKKwkJCQl7CisJCQkJCVR1cGxlRGVzYwkJdHVwZGVzYzsKKwkJCQkJYm9vbAkJCWZv dW5kID0gZmFsc2U7CisJCQkJCWludAkJCWk7CisKKwkJCQkJLyogc2xvdyBwYXJ0LCBJIGhvcGUg aXQgd2lsbCBub3QgYmUgdG8gb2Z0ZW4gKi8KKwkJCQkJdHVwZGVzYyA9IGxvb2t1cF9yb3d0eXBl X3R1cGRlc2ModHlwaWQsIHR5cG1vZCk7CisJCQkJCWZvciAoaSA9IDA7IGkgPCB0dXBkZXNjLT5u YXR0czsgaSsrKQorCQkJCQl7CisJCQkJCQlpZiAobmFtZXN0cmNtcCgmKFR1cGxlRGVzY0F0dHIo dHVwZGVzYywgaSktPmF0dG5hbWUpLCBhdHRybmFtZSkgPT0gMCAmJgorCQkJCQkJCQkhVHVwbGVE ZXNjQXR0cih0dXBkZXNjLCBpKS0+YXR0aXNkcm9wcGVkKQorCQkJCQkJeworCQkJCQkJCWZvdW5k ID0gdHJ1ZTsKKwkJCQkJCQlicmVhazsKKwkJCQkJCX0KKwkJCQkJfQorCisJCQkJCUZyZWVUdXBs ZURlc2ModHVwZGVzYyk7CisKKwkJCQkJLyogdGhlcmUgYXJlIG5vdCBjb21wb3NpdGUgdmFyaWFi bGUgd2l0aCB0aGlzIGZpZWxkICovCisJCQkJCWlmICghZm91bmQpCisJCQkJCQl2YXJpZCA9IElu dmFsaWRPaWQ7CisJCQkJfQorCQkJCWVsc2UKKwkJCQkJLyogdGhlcmUgYXJlIG5vdCBjb21wb3Np dGUgdmFyaWFibGUgd2l0aCB0aGlzIG5hbWUgKi8KKwkJCQkJdmFyaWQgPSBJbnZhbGlkT2lkOwor CQkJfQorCisJCQkvKiBSYWlzZSBlcnJvciBpZiB2YXJpZCBpcyBzdGlsbCB2YWxpZC4gSXQgc2hv dWxkIGJlIHJlYWxseSBhbWlnb251b3VzICovCisJCQlpZiAoT2lkSXNWYWxpZCh2YXJpZCkpCisJ CQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfQU1CSUdVT1VTX0NPTFVN TiksCisJCQkJCQkgZXJybXNnKCJjb2x1bW4gcmVmZXJlbmNlIFwiJXNcIiBpcyBhbWJpZ3VvdXMi LAorCQkJCQkJCQlOYW1lTGlzdFRvU3RyaW5nKGNyZWYtPmZpZWxkcykpLAorCQkJCQkJIGVycmRl dGFpbCgiVGhlIHF1YWxpZmllZCBpZGVudGlmaWVyIGNhbiBiZSBjb2x1bW4gcmVmZXJlbmNlIG9y IHNjaGVtYSB2YXJpYWJsZSByZWZlcmVuY2UiKSwKKwkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24o cHN0YXRlLCBjcmVmLT5sb2NhdGlvbikpKTsKKwkJfQorCisJCWlmIChPaWRJc1ZhbGlkKHZhcmlk KSkKKwkJCW5vZGUgPSBtYWtlUGFyYW1TY2hlbWFWYXJpYWJsZShwc3RhdGUsCisJCQkJCQkJCQkJ CXZhcmlkLCB0eXBpZCwgdHlwbW9kLAorCQkJCQkJCQkJCQlhdHRybmFtZSwgY3JlZi0+bG9jYXRp b24pOworCX0KKwogCS8qCiAJICogVGhyb3cgZXJyb3IgaWYgbm8gdHJhbnNsYXRpb24gZm91bmQu CiAJICovCkBAIC04MDcsNiArODkwLDU5IEBAIHRyYW5zZm9ybUNvbHVtblJlZihQYXJzZVN0YXRl ICpwc3RhdGUsIENvbHVtblJlZiAqY3JlZikKIAlyZXR1cm4gbm9kZTsKIH0KIAorLyoKKyAqIEdl bmVyYXRlIHBhcmFtIHZhcmlhYmxlIGZvciByZWZlcmVuY2UgdG8gc2NoZW1hIHZhcmlhYmxlCisg Ki8KK3N0YXRpYyBOb2RlICoKK21ha2VQYXJhbVNjaGVtYVZhcmlhYmxlKFBhcnNlU3RhdGUgKnBz dGF0ZSwgT2lkIHZhcmlkLCBPaWQgdHlwaWQsIGludDMyIHR5cG1vZCwgY2hhciAqYXR0cm5hbWUs IGludCBsb2NhdGlvbikKK3sKKwlQYXJhbQkgICAqcGFyYW07CisKKwlwYXJhbSA9IG1ha2VOb2Rl KFBhcmFtKTsKKworCXBhcmFtLT5wYXJhbWtpbmQgPSBQQVJBTV9TQ0hFTUFfVkFSSUFCTEU7CisJ cGFyYW0tPnBhcmFtaWQgPSB2YXJpZDsKKwlwYXJhbS0+cGFyYW10eXBlID0gdHlwaWQ7CisJcGFy YW0tPnBhcmFtdHlwbW9kID0gdHlwbW9kOworCisJaWYgKGF0dHJuYW1lICE9IE5VTEwpCisJewor CQlUdXBsZURlc2MJCXR1cGRlc2M7CisJCWludAkJaTsKKworCQl0dXBkZXNjID0gbG9va3VwX3Jv d3R5cGVfdHVwZGVzYyh0eXBpZCwgdHlwbW9kKTsKKworCQlmb3IgKGkgPSAwOyBpIDwgdHVwZGVz Yy0+bmF0dHM7IGkrKykKKwkJeworCQkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ID0gVHVwbGVEZXNj QXR0cih0dXBkZXNjLCBpKTsKKworCQkJaWYgKHN0cmNtcChhdHRybmFtZSwgTmFtZVN0cihhdHQt PmF0dG5hbWUpKSA9PSAwICYmCisJCQkJIWF0dC0+YXR0aXNkcm9wcGVkKQorCQkJeworCQkJCS8q IFN1Y2Nlc3MsIHNvIGdlbmVyYXRlIGEgRmllbGRTZWxlY3QgZXhwcmVzc2lvbiAqLworCQkJCUZp ZWxkU2VsZWN0ICpmc2VsZWN0ID0gbWFrZU5vZGUoRmllbGRTZWxlY3QpOworCisJCQkJZnNlbGVj dC0+YXJnID0gKEV4cHIgKikgcGFyYW07CisJCQkJZnNlbGVjdC0+ZmllbGRudW0gPSBpICsgMTsK KwkJCQlmc2VsZWN0LT5yZXN1bHR0eXBlID0gYXR0LT5hdHR0eXBpZDsKKwkJCQlmc2VsZWN0LT5y ZXN1bHR0eXBtb2QgPSBhdHQtPmF0dHR5cG1vZDsKKwkJCQkvKiBzYXZlIGF0dHJpYnV0ZSdzIGNv bGxhdGlvbiBmb3IgcGFyc2VfY29sbGF0ZS5jICovCisJCQkJZnNlbGVjdC0+cmVzdWx0Y29sbGlk ID0gYXR0LT5hdHRjb2xsYXRpb247CisKKwkJCQlSZWxlYXNlVHVwbGVEZXNjKHR1cGRlc2MpOwor CQkJCXJldHVybiAoTm9kZSAqKSBmc2VsZWN0OworCQkJfQorCQl9CisKKwkJZXJlcG9ydChFUlJP UiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9DT0xVTU4pLAorCQkJCSBlcnJtc2co ImNvdWxkIG5vdCBpZGVudGlmeSBjb2x1bW4gXCIlc1wiIGluIHZhcmlhYmxlIiwgYXR0cm5hbWUp LAorCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBsb2NhdGlvbikpKTsKKwl9CisKKwly ZXR1cm4gKE5vZGUgKikgcGFyYW07Cit9CisKIHN0YXRpYyBOb2RlICoKIHRyYW5zZm9ybVBhcmFt UmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUGFyYW1SZWYgKnByZWYpCiB7CkBAIC0xODE4LDYgKzE5 NTQsNyBAQCB0cmFuc2Zvcm1TdWJMaW5rKFBhcnNlU3RhdGUgKnBzdGF0ZSwgU3ViTGluayAqc3Vi bGluaykKIAkJY2FzZSBFWFBSX0tJTkRfUkVUVVJOSU5HOgogCQljYXNlIEVYUFJfS0lORF9WQUxV RVM6CiAJCWNhc2UgRVhQUl9LSU5EX1ZBTFVFU19TSU5HTEU6CisJCWNhc2UgRVhQUl9LSU5EX0xF VDoKIAkJCS8qIG9rYXkgKi8KIAkJCWJyZWFrOwogCQljYXNlIEVYUFJfS0lORF9DSEVDS19DT05T VFJBSU5UOgpAQCAtMTgyNiw2ICsxOTYzLDcgQEAgdHJhbnNmb3JtU3ViTGluayhQYXJzZVN0YXRl ICpwc3RhdGUsIFN1YkxpbmsgKnN1YmxpbmspCiAJCQlicmVhazsKIAkJY2FzZSBFWFBSX0tJTkRf Q09MVU1OX0RFRkFVTFQ6CiAJCWNhc2UgRVhQUl9LSU5EX0ZVTkNUSU9OX0RFRkFVTFQ6CisJCWNh c2UgRVhQUl9LSU5EX1ZBUklBQkxFX0RFRkFVTFQ6CiAJCQllcnIgPSBfKCJjYW5ub3QgdXNlIHN1 YnF1ZXJ5IGluIERFRkFVTFQgZXhwcmVzc2lvbiIpOwogCQkJYnJlYWs7CiAJCWNhc2UgRVhQUl9L SU5EX0lOREVYX0VYUFJFU1NJT046CkBAIC0zNDYwLDYgKzM1OTgsNyBAQCBQYXJzZUV4cHJLaW5k TmFtZShQYXJzZUV4cHJLaW5kIGV4cHJLaW5kKQogCQkJcmV0dXJuICJDSEVDSyI7CiAJCWNhc2Ug RVhQUl9LSU5EX0NPTFVNTl9ERUZBVUxUOgogCQljYXNlIEVYUFJfS0lORF9GVU5DVElPTl9ERUZB VUxUOgorCQljYXNlIEVYUFJfS0lORF9WQVJJQUJMRV9ERUZBVUxUOgogCQkJcmV0dXJuICJERUZB VUxUIjsKIAkJY2FzZSBFWFBSX0tJTkRfSU5ERVhfRVhQUkVTU0lPTjoKIAkJCXJldHVybiAiaW5k ZXggZXhwcmVzc2lvbiI7CkBAIC0zNDc1LDYgKzM2MTQsOCBAQCBQYXJzZUV4cHJLaW5kTmFtZShQ YXJzZUV4cHJLaW5kIGV4cHJLaW5kKQogCQkJcmV0dXJuICJQQVJUSVRJT04gQlkiOwogCQljYXNl IEVYUFJfS0lORF9DQUxMX0FSR1VNRU5UOgogCQkJcmV0dXJuICJDQUxMIjsKKwkJY2FzZSBFWFBS X0tJTkRfTEVUOgorCQkJcmV0dXJuICJMRVQiOwogCiAJCQkvKgogCQkJICogVGhlcmUgaXMgaW50 ZW50aW9uYWxseSBubyBkZWZhdWx0OiBjYXNlIGhlcmUsIHNvIHRoYXQgdGhlCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX2Z1bmMuYwppbmRleCA0NDI1NzE1NGI4Li5iMmM5OTAwZTAwIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV9mdW5jLmMKQEAgLTIzNDcsNiArMjM0Nyw3IEBAIGNoZWNrX3NyZl9jYWxsX3BsYWNlbWVudChQ YXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmxhc3Rfc3JmLCBpbnQgbG9jYXRpb24pCiAJCQlicmVh azsKIAkJY2FzZSBFWFBSX0tJTkRfQ09MVU1OX0RFRkFVTFQ6CiAJCWNhc2UgRVhQUl9LSU5EX0ZV TkNUSU9OX0RFRkFVTFQ6CisJCWNhc2UgRVhQUl9LSU5EX1ZBUklBQkxFX0RFRkFVTFQ6CiAJCQll cnIgPSBfKCJzZXQtcmV0dXJuaW5nIGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gREVGQVVM VCBleHByZXNzaW9ucyIpOwogCQkJYnJlYWs7CiAJCWNhc2UgRVhQUl9LSU5EX0lOREVYX0VYUFJF U1NJT046CkBAIC0yMzcwLDYgKzIzNzEsOSBAQCBjaGVja19zcmZfY2FsbF9wbGFjZW1lbnQoUGFy c2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpsYXN0X3NyZiwgaW50IGxvY2F0aW9uKQogCQljYXNlIEVY UFJfS0lORF9DQUxMX0FSR1VNRU5UOgogCQkJZXJyID0gXygic2V0LXJldHVybmluZyBmdW5jdGlv bnMgYXJlIG5vdCBhbGxvd2VkIGluIENBTEwgYXJndW1lbnRzIik7CiAJCQlicmVhazsKKwkJY2Fz ZSBFWFBSX0tJTkRfTEVUOgorCQkJZXJyID0gXygic2V0LXJldHVybmluZyBmdW5jdGlvbnMgYXJl IG5vdCBhbGxvd2VkIGluIENBTEwgYXJndW1lbnRzIik7CisJCQlicmVhazsKIAogCQkJLyoKIAkJ CSAqIFRoZXJlIGlzIGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDogY2FzZSBoZXJlLCBzbyB0aGF0 IHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jIGIvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jCmluZGV4IDQ5MzJlNTgwMjIuLmM2MGZlMDEx ZjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYworKysgYi9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMKQEAgLTM1LDE2ICszNSw2IEBACiAKIHN0 YXRpYyB2b2lkIG1hcmtUYXJnZXRMaXN0T3JpZ2luKFBhcnNlU3RhdGUgKnBzdGF0ZSwgVGFyZ2V0 RW50cnkgKnRsZSwKIAkJCQkJIFZhciAqdmFyLCBpbnQgbGV2ZWxzdXApOwotc3RhdGljIE5vZGUg KnRyYW5zZm9ybUFzc2lnbm1lbnRJbmRpcmVjdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsCi0JCQkJ CQkJICAgTm9kZSAqYmFzZW5vZGUsCi0JCQkJCQkJICAgY29uc3QgY2hhciAqdGFyZ2V0TmFtZSwK LQkJCQkJCQkgICBib29sIHRhcmdldElzQXJyYXksCi0JCQkJCQkJICAgT2lkIHRhcmdldFR5cGVJ ZCwKLQkJCQkJCQkgICBpbnQzMiB0YXJnZXRUeXBNb2QsCi0JCQkJCQkJICAgT2lkIHRhcmdldENv bGxhdGlvbiwKLQkJCQkJCQkgICBMaXN0Q2VsbCAqaW5kaXJlY3Rpb24sCi0JCQkJCQkJICAgTm9k ZSAqcmhzLAotCQkJCQkJCSAgIGludCBsb2NhdGlvbik7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3Jt QXNzaWdubWVudFN1YnNjcmlwdHMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCSAgTm9kZSAq YmFzZW5vZGUsCiAJCQkJCQkJICBjb25zdCBjaGFyICp0YXJnZXROYW1lLApAQCAtNjcyLDcgKzY2 Miw3IEBAIHVwZGF0ZVRhcmdldExpc3RFbnRyeShQYXJzZVN0YXRlICpwc3RhdGUsCiAgKiBtaWdo dCB3YW50IHRvIGRlY29yYXRlIGluZGlyZWN0aW9uIGNlbGxzIHdpdGggdGhlaXIgb3duIGxvY2F0 aW9uIGluZm8sCiAgKiBpbiB3aGljaCBjYXNlIHRoZSBsb2NhdGlvbiBhcmd1bWVudCBjb3VsZCBw cm9iYWJseSBiZSBkcm9wcGVkLikKICAqLwotc3RhdGljIE5vZGUgKgorTm9kZSAqCiB0cmFuc2Zv cm1Bc3NpZ25tZW50SW5kaXJlY3Rpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCSAgIE5v ZGUgKmJhc2Vub2RlLAogCQkJCQkJCSAgIGNvbnN0IGNoYXIgKnRhcmdldE5hbWUsCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMgYi9zcmMvYmFja2VuZC9y ZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMKaW5kZXggMzEyM2VlMjc0ZC4uMTA3MzdkNDIyZCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jCisrKyBiL3NyYy9i YWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuYwpAQCAtMzM1MCw3ICszMzUwLDcgQEAgUmV3 cml0ZVF1ZXJ5KFF1ZXJ5ICpwYXJzZXRyZWUsIExpc3QgKnJld3JpdGVfZXZlbnRzKQogCSAqIGdl dCBleGVjdXRlZC4gIEFsc28sIHV0aWxpdGllcyBhcmVuJ3QgcmV3cml0dGVuIGF0IGFsbCAoZG8g d2Ugc3RpbGwKIAkgKiBuZWVkIHRoYXQgY2hlY2s/KQogCSAqLwotCWlmIChldmVudCAhPSBDTURf U0VMRUNUICYmIGV2ZW50ICE9IENNRF9VVElMSVRZKQorCWlmIChldmVudCAhPSBDTURfU0VMRUNU ICYmIGV2ZW50ICE9IENNRF9VVElMSVRZICYmIGV2ZW50ICE9IENNRF9QTEFOX1VUSUxJVFkpCiAJ ewogCQlpbnQJCQlyZXN1bHRfcmVsYXRpb247CiAJCVJhbmdlVGJsRW50cnkgKnJ0X2VudHJ5Owpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmV3cml0ZS9yb3dzZWN1cml0eS5jIGIvc3JjL2JhY2tl bmQvcmV3cml0ZS9yb3dzZWN1cml0eS5jCmluZGV4IDYxZWYzOTZkOGEuLjZhMDY4YWY3OTkgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jld3JpdGUvcm93c2VjdXJpdHkuYworKysgYi9zcmMvYmFj a2VuZC9yZXdyaXRlL3Jvd3NlY3VyaXR5LmMKQEAgLTIxMiw3ICsyMTIsNyBAQCBnZXRfcm93X3Nl Y3VyaXR5X3BvbGljaWVzKFF1ZXJ5ICpyb290LCBSYW5nZVRibEVudHJ5ICpydGUsIGludCBydF9p bmRleCwKIAl9CiAKIAkvKgotCSAqIEZvciBTRUxFQ1QsIFVQREFURSBhbmQgREVMRVRFLCBhZGQg c2VjdXJpdHkgcXVhbHMgdG8gZW5mb3JjZSB0aGUgVVNJTkcKKwkgKiBGb3IgU0VMRUNULCBMRVQs IFVQREFURSBhbmQgREVMRVRFLCBhZGQgc2VjdXJpdHkgcXVhbHMgdG8gZW5mb3JjZSB0aGUgVVNJ TkcKIAkgKiBwb2xpY2llcy4gIFRoZXNlIHNlY3VyaXR5IHF1YWxzIGNvbnRyb2wgYWNjZXNzIHRv IGV4aXN0aW5nIHRhYmxlIHJvd3MuCiAJICogUmVzdHJpY3RpdmUgcG9saWNpZXMgYXJlIGNvbWJp bmVkIHRvZ2V0aGVyIHVzaW5nIEFORCwgYW5kIHBlcm1pc3NpdmUKIAkgKiBwb2xpY2llcyBhcmUg Y29tYmluZWQgdG9nZXRoZXIgdXNpbmcgT1IuCkBAIC0yMjIsNiArMjIyLDcgQEAgZ2V0X3Jvd19z ZWN1cml0eV9wb2xpY2llcyhRdWVyeSAqcm9vdCwgUmFuZ2VUYmxFbnRyeSAqcnRlLCBpbnQgcnRf aW5kZXgsCiAJCQkJCQkJICAmcmVzdHJpY3RpdmVfcG9saWNpZXMpOwogCiAJaWYgKGNvbW1hbmRU eXBlID09IENNRF9TRUxFQ1QgfHwKKwkJY29tbWFuZFR5cGUgPT0gQ01EX1BMQU5fVVRJTElUWSB8 fAogCQljb21tYW5kVHlwZSA9PSBDTURfVVBEQVRFIHx8CiAJCWNvbW1hbmRUeXBlID09IENNRF9E RUxFVEUpCiAJCWFkZF9zZWN1cml0eV9xdWFscyhydF9pbmRleCwKQEAgLTQyMyw2ICs0MjQsNyBA QCBnZXRfcG9saWNpZXNfZm9yX3JlbGF0aW9uKFJlbGF0aW9uIHJlbGF0aW9uLCBDbWRUeXBlIGNt ZCwgT2lkIHVzZXJfaWQsCiAJCQlzd2l0Y2ggKGNtZCkKIAkJCXsKIAkJCQljYXNlIENNRF9TRUxF Q1Q6CisJCQkJY2FzZSBDTURfUExBTl9VVElMSVRZOgogCQkJCQlpZiAocG9saWN5LT5wb2xjbWQg PT0gQUNMX1NFTEVDVF9DSFIpCiAJCQkJCQljbWRfbWF0Y2hlcyA9IHRydWU7CiAJCQkJCWJyZWFr OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9kZXN0LmMgYi9zcmMvYmFja2VuZC90Y29w L2Rlc3QuYwppbmRleCBjOTVhNGQ1MTlkLi40N2ZiMGYzOGIxIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC90Y29wL2Rlc3QuYworKysgYi9zcmMvYmFja2VuZC90Y29wL2Rlc3QuYwpAQCAtMzcsNiAr MzcsNyBAQAogI2luY2x1ZGUgImV4ZWN1dG9yL2Z1bmN0aW9ucy5oIgogI2luY2x1ZGUgImV4ZWN1 dG9yL3RxdWV1ZS5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL3RzdG9yZVJlY2VpdmVyLmgiCisjaW5j bHVkZSAiZXhlY3V0b3Ivc3ZhcmlhYmxlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJsaWJwcS9saWJw cS5oIgogI2luY2x1ZGUgImxpYnBxL3BxZm9ybWF0LmgiCiAjaW5jbHVkZSAidXRpbHMvcG9ydGFs LmgiCkBAIC0xNDMsNiArMTQ0LDkgQEAgQ3JlYXRlRGVzdFJlY2VpdmVyKENvbW1hbmREZXN0IGRl c3QpCiAKIAkJY2FzZSBEZXN0VHVwbGVRdWV1ZToKIAkJCXJldHVybiBDcmVhdGVUdXBsZVF1ZXVl RGVzdFJlY2VpdmVyKE5VTEwpOworCisJCWNhc2UgRGVzdFZhcmlhYmxlOgorCQkJcmV0dXJuIENy ZWF0ZVZhcmlhYmxlRGVzdFJlY2VpdmVyKCk7CiAJfQogCiAJLyogc2hvdWxkIG5ldmVyIGdldCBo ZXJlICovCkBAIC0xNzgsNiArMTgyLDcgQEAgRW5kQ29tbWFuZChjb25zdCBjaGFyICpjb21tYW5k VGFnLCBDb21tYW5kRGVzdCBkZXN0KQogCQljYXNlIERlc3RTUUxGdW5jdGlvbjoKIAkJY2FzZSBE ZXN0VHJhbnNpZW50UmVsOgogCQljYXNlIERlc3RUdXBsZVF1ZXVlOgorCQljYXNlIERlc3RWYXJp YWJsZToKIAkJCWJyZWFrOwogCX0KIH0KQEAgLTIyMiw2ICsyMjcsNyBAQCBOdWxsQ29tbWFuZChD b21tYW5kRGVzdCBkZXN0KQogCQljYXNlIERlc3RTUUxGdW5jdGlvbjoKIAkJY2FzZSBEZXN0VHJh bnNpZW50UmVsOgogCQljYXNlIERlc3RUdXBsZVF1ZXVlOgorCQljYXNlIERlc3RWYXJpYWJsZToK IAkJCWJyZWFrOwogCX0KIH0KQEAgLTI2OCw2ICsyNzQsNyBAQCBSZWFkeUZvclF1ZXJ5KENvbW1h bmREZXN0IGRlc3QpCiAJCWNhc2UgRGVzdFNRTEZ1bmN0aW9uOgogCQljYXNlIERlc3RUcmFuc2ll bnRSZWw6CiAJCWNhc2UgRGVzdFR1cGxlUXVldWU6CisJCWNhc2UgRGVzdFZhcmlhYmxlOgogCQkJ YnJlYWs7CiAJfQogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMgYi9z cmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYwppbmRleCBiNTgwNGY2NGFkLi4zNTE5OWZkMGRjIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYworKysgYi9zcmMvYmFja2VuZC90 Y29wL3V0aWxpdHkuYwpAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgImNvbW1hbmRzL3Byb2Ns YW5nLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmgiCiAjaW5jbHVkZSAi Y29tbWFuZHMvc2NoZW1hY21kcy5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3NjaGVtYXZhcmlhYmxl LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvc2VjbGFiZWwuaCIKICNpbmNsdWRlICJjb21tYW5kcy9z ZXF1ZW5jZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuaCIKQEAgLTM0 NCw3ICszNDUsNyBAQCBQcm9jZXNzVXRpbGl0eShQbGFubmVkU3RtdCAqcHN0bXQsCiAJCQkgICBj aGFyICpjb21wbGV0aW9uVGFnKQogewogCUFzc2VydChJc0EocHN0bXQsIFBsYW5uZWRTdG10KSk7 Ci0JQXNzZXJ0KHBzdG10LT5jb21tYW5kVHlwZSA9PSBDTURfVVRJTElUWSk7CisJQXNzZXJ0KHBz dG10LT5jb21tYW5kVHlwZSA9PSBDTURfVVRJTElUWSB8fCBwc3RtdC0+Y29tbWFuZFR5cGUgPT0g Q01EX1BMQU5fVVRJTElUWSk7CiAJQXNzZXJ0KHF1ZXJ5U3RyaW5nICE9IE5VTEwpOwkvKiByZXF1 aXJlZCBhcyBvZiA4LjQgKi8KIAogCS8qCkBAIC05MTUsNiArOTE2LDE0IEBAIHN0YW5kYXJkX1By b2Nlc3NVdGlsaXR5KFBsYW5uZWRTdG10ICpwc3RtdCwKIAkJCQlicmVhazsKIAkJCX0KIAorCQlj YXNlIFRfTGV0U3RtdDoKKwkJCXsKKwkJCQlkb0xldFN0bXQocHN0bXQsIHBhcmFtcywgcXVlcnlF bnYsIHF1ZXJ5U3RyaW5nKTsKKwkJCQlpZiAoY29tcGxldGlvblRhZykKKwkJCQkJc3RyY3B5KGNv bXBsZXRpb25UYWcsICJMRVQiKTsKKwkJCX0KKwkJCWJyZWFrOworCiAJCWRlZmF1bHQ6CiAJCQkv KiBBbGwgb3RoZXIgc3RhdGVtZW50IHR5cGVzIGhhdmUgZXZlbnQgdHJpZ2dlciBzdXBwb3J0ICov CiAJCQlQcm9jZXNzVXRpbGl0eVNsb3cocHN0YXRlLCBwc3RtdCwgcXVlcnlTdHJpbmcsCkBAIC0x MjIxLDYgKzEyMzAsMTAgQEAgUHJvY2Vzc1V0aWxpdHlTbG93KFBhcnNlU3RhdGUgKnBzdGF0ZSwK IAkJCQl9CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgVF9DcmVhdGVTY2hlbWFWYXJTdG10OgorCQkJ CWFkZHJlc3MgPSBEZWZpbmVTY2hlbWFWYXJpYWJsZShwc3RhdGUsIChDcmVhdGVTY2hlbWFWYXJT dG10ICopIHBhcnNldHJlZSk7CisJCQkJYnJlYWs7CisKIAkJCQkvKgogCQkJCSAqICoqKioqKioq KioqKiogb2JqZWN0IGNyZWF0aW9uIC8gZGVzdHJ1Y3Rpb24gKioqKioqKioqKioqKioKIAkJCQkg Ki8KQEAgLTIwNTUsNiArMjA2OCw5IEBAIEFsdGVyT2JqZWN0VHlwZUNvbW1hbmRUYWcoT2JqZWN0 VHlwZSBvYmp0eXBlKQogCQljYXNlIE9CSkVDVF9TVEFUSVNUSUNfRVhUOgogCQkJdGFnID0gIkFM VEVSIFNUQVRJU1RJQ1MiOwogCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJ dGFnID0gIkFMVEVSIFZBUklBQkxFIjsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJdGFnID0g Ij8/PyI7CiAJCQlicmVhazsKQEAgLTIxMDQsNiArMjEyMCwxMCBAQCBDcmVhdGVDb21tYW5kVGFn KE5vZGUgKnBhcnNldHJlZSkKIAkJCXRhZyA9ICJTRUxFQ1QiOwogCQkJYnJlYWs7CiAKKwkJY2Fz ZSBUX0xldFN0bXQ6CisJCQl0YWcgPSAiTEVUIjsKKwkJCWJyZWFrOworCiAJCQkvKiB1dGlsaXR5 IHN0YXRlbWVudHMgLS0tIHNhbWUgd2hldGhlciByYXcgb3IgY29va2VkICovCiAJCWNhc2UgVF9U cmFuc2FjdGlvblN0bXQ6CiAJCQl7CkBAIC0yMzU4LDYgKzIzNzgsOSBAQCBDcmVhdGVDb21tYW5k VGFnKE5vZGUgKnBhcnNldHJlZSkKIAkJCQljYXNlIE9CSkVDVF9TVEFUSVNUSUNfRVhUOgogCQkJ CQl0YWcgPSAiRFJPUCBTVEFUSVNUSUNTIjsKIAkJCQkJYnJlYWs7CisJCQkJY2FzZSBPQkpFQ1Rf VkFSSUFCTEU6CisJCQkJCXRhZyA9ICJEUk9QIFZBUklBQkxFIjsKKwkJCQkJYnJlYWs7CiAJCQkJ ZGVmYXVsdDoKIAkJCQkJdGFnID0gIj8/PyI7CiAJCQl9CkBAIC0yNjM5LDYgKzI2NjIsOSBAQCBD cmVhdGVDb21tYW5kVGFnKE5vZGUgKnBhcnNldHJlZSkKIAkJCQljYXNlIERJU0NBUkRfU0VRVUVO Q0VTOgogCQkJCQl0YWcgPSAiRElTQ0FSRCBTRVFVRU5DRVMiOwogCQkJCQlicmVhazsKKwkJCQlj YXNlIERJU0NBUkRfVkFSSUFCTEVTOgorCQkJCQl0YWcgPSAiRElTQ0FSRCBWQVJJQUJMRVMiOwor CQkJCQlicmVhazsKIAkJCQlkZWZhdWx0OgogCQkJCQl0YWcgPSAiPz8/IjsKIAkJCX0KQEAgLTI4 NDQsNiArMjg3MCw3IEBAIENyZWF0ZUNvbW1hbmRUYWcoTm9kZSAqcGFyc2V0cmVlKQogCQkJCQkJ dGFnID0gIkRFTEVURSI7CiAJCQkJCQlicmVhazsKIAkJCQkJY2FzZSBDTURfVVRJTElUWToKKwkJ CQkJY2FzZSBDTURfUExBTl9VVElMSVRZOgogCQkJCQkJdGFnID0gQ3JlYXRlQ29tbWFuZFRhZyhz dG10LT51dGlsaXR5U3RtdCk7CiAJCQkJCQlicmVhazsKIAkJCQkJZGVmYXVsdDoKQEAgLTI5MTUs NiArMjk0MiwxMCBAQCBDcmVhdGVDb21tYW5kVGFnKE5vZGUgKnBhcnNldHJlZSkKIAkJCX0KIAkJ CWJyZWFrOwogCisJCWNhc2UgVF9DcmVhdGVTY2hlbWFWYXJTdG10OgorCQkJdGFnID0gIkNSRUFU RSBWQVJJQUJMRSI7CisJCQlicmVhazsKKwogCQlkZWZhdWx0OgogCQkJZWxvZyhXQVJOSU5HLCAi dW5yZWNvZ25pemVkIG5vZGUgdHlwZTogJWQiLAogCQkJCSAoaW50KSBub2RlVGFnKHBhcnNldHJl ZSkpOwpAQCAtMjk2MSw2ICsyOTkyLDEwIEBAIEdldENvbW1hbmRMb2dMZXZlbChOb2RlICpwYXJz ZXRyZWUpCiAJCQkJbGV2ID0gTE9HU1RNVF9BTEw7CiAJCQlicmVhazsKIAorCQljYXNlIFRfTGV0 U3RtdDoKKwkJCWxldiA9IExPR1NUTVRfQUxMOworCQkJYnJlYWs7CisKIAkJCS8qIHV0aWxpdHkg c3RhdGVtZW50cyAtLS0gc2FtZSB3aGV0aGVyIHJhdyBvciBjb29rZWQgKi8KIAkJY2FzZSBUX1Ry YW5zYWN0aW9uU3RtdDoKIAkJCWxldiA9IExPR1NUTVRfQUxMOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L2FjbC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FjbC5jCmluZGV4 IGE0NWUwOTNkZTcuLjk1MmMwZDk2MjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9hY2wuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvYWNsLmMKQEAgLTMxNSw2ICszMTUs MTIgQEAgYWNscGFyc2UoY29uc3QgY2hhciAqcywgQWNsSXRlbSAqYWlwKQogCQkJY2FzZSBBQ0xf Q09OTkVDVF9DSFI6CiAJCQkJcmVhZCA9IEFDTF9DT05ORUNUOwogCQkJCWJyZWFrOworCQkJY2Fz ZSBBQ0xfUkVBRF9DSFI6CisJCQkJcmVhZCA9IEFDTF9SRUFEOworCQkJCWJyZWFrOworCQkJY2Fz ZSBBQ0xfV1JJVEVfQ0hSOgorCQkJCXJlYWQgPSBBQ0xfV1JJVEU7CisJCQkJYnJlYWs7CiAJCQlj YXNlICdSJzoJCQkvKiBpZ25vcmUgb2xkIFJVTEUgcHJpdmlsZWdlcyAqLwogCQkJCXJlYWQgPSAw OwogCQkJCWJyZWFrOwpAQCAtODA4LDYgKzgxNCwxMCBAQCBhY2xkZWZhdWx0KE9iamVjdFR5cGUg b2JqdHlwZSwgT2lkIG93bmVySWQpCiAJCQl3b3JsZF9kZWZhdWx0ID0gQUNMX1VTQUdFOwogCQkJ b3duZXJfZGVmYXVsdCA9IEFDTF9BTExfUklHSFRTX1RZUEU7CiAJCQlicmVhazsKKwkJY2FzZSBP QkpFQ1RfVkFSSUFCTEU6CisJCQl3b3JsZF9kZWZhdWx0ID0gQUNMX05PX1JJR0hUUzsKKwkJCW93 bmVyX2RlZmF1bHQgPSBBQ0xfQUxMX1JJR0hUU19WQVJJQUJMRTsKKwkJCWJyZWFrOwogCQlkZWZh dWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBvYmp0eXBlOiAlZCIsIChpbnQpIG9i anR5cGUpOwogCQkJd29ybGRfZGVmYXVsdCA9IEFDTF9OT19SSUdIVFM7CS8qIGtlZXAgY29tcGls ZXIgcXVpZXQgKi8KQEAgLTkwMyw2ICs5MTMsOSBAQCBhY2xkZWZhdWx0X3NxbChQR19GVU5DVElP Tl9BUkdTKQogCQljYXNlICdUJzoKIAkJCW9ianR5cGUgPSBPQkpFQ1RfVFlQRTsKIAkJCWJyZWFr OworCQljYXNlICdWJzoKKwkJCW9ianR5cGUgPSBPQkpFQ1RfVkFSSUFCTEU7CisJCQlicmVhazsK IAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgb2JqdHlwZSBhYmJyZXZp YXRpb246ICVjIiwgb2JqdHlwZWMpOwogCX0KQEAgLTE2MjcsNiArMTY0MCwxMCBAQCBjb252ZXJ0 X3ByaXZfc3RyaW5nKHRleHQgKnByaXZfdHlwZV90ZXh0KQogCQlyZXR1cm4gQUNMX0NPTk5FQ1Q7 CiAJaWYgKHBnX3N0cmNhc2VjbXAocHJpdl90eXBlLCAiUlVMRSIpID09IDApCiAJCXJldHVybiAw OwkJCQkvKiBpZ25vcmUgb2xkIFJVTEUgcHJpdmlsZWdlcyAqLworCWlmIChwZ19zdHJjYXNlY21w KHByaXZfdHlwZSwgIlJFQUQiKSA9PSAwKQorCQlyZXR1cm4gQUNMX1JFQUQ7CisJaWYgKHBnX3N0 cmNhc2VjbXAocHJpdl90eXBlLCAiV1JJVEUiKSA9PSAwKQorCQlyZXR1cm4gQUNMX1dSSVRFOwog CiAJZXJlcG9ydChFUlJPUiwKIAkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJf VkFMVUUpLApAQCAtMTcyMSw2ICsxNzM4LDEwIEBAIGNvbnZlcnRfYWNscmlnaHRfdG9fc3RyaW5n KGludCBhY2xyaWdodCkKIAkJCXJldHVybiAiVEVNUE9SQVJZIjsKIAkJY2FzZSBBQ0xfQ09OTkVD VDoKIAkJCXJldHVybiAiQ09OTkVDVCI7CisJCWNhc2UgQUNMX1JFQUQ6CisJCQlyZXR1cm4gIlJF QUQiOworCQljYXNlIEFDTF9XUklURToKKwkJCXJldHVybiAiV1JJVEUiOwogCQlkZWZhdWx0Ogog CQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBhY2xyaWdodDogJWQiLCBhY2xyaWdodCk7CiAJ CQlyZXR1cm4gTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRp bHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwppbmRleCAwM2U5YTI4YTYz Li40ODhjYjI2ZDNmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxz LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCkBAIC03MzYyLDYgKzcz NjIsMTQgQEAgZ2V0X3BhcmFtZXRlcihQYXJhbSAqcGFyYW0sIGRlcGFyc2VfY29udGV4dCAqY29u dGV4dCkKIAkJcmV0dXJuOwogCX0KIAorCS8qIHRyYW5zbGF0ZSBwYXJhbWlkIHRvIG9yaWdpbmFs IHNjaGVtYSB2YXJpYWJsZSBuYW1lICovCisJaWYgKHBhcmFtLT5wYXJhbWtpbmQgPT0gUEFSQU1f U0NIRU1BX1ZBUklBQkxFKQorCXsKKwkJYXBwZW5kU3RyaW5nSW5mbyhjb250ZXh0LT5idWYsICIl cyIsCisJCQkJCQkJc2NoZW1hX3ZhcmlhYmxlX2dldF9uYW1lKHBhcmFtLT5wYXJhbWlkKSk7CisJ CXJldHVybjsKKwl9CisKIAkvKgogCSAqIE5vdCBQQVJBTV9FWEVDLCBvciBjb3VsZG4ndCBmaW5k IHJlZmVyZW50OiBqdXN0IHByaW50ICROLgogCSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2Fj aGUuYwppbmRleCBiYmE1OTVhZDFkLi44NThhNmRkNGJlIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9s c3lzY2FjaGUuYwpAQCAtMTY5MSw2ICsxNjkxLDE4IEBAIGdldF9yZWxuYW1lX3JlbGlkKGNvbnN0 IGNoYXIgKnJlbG5hbWUsIE9pZCByZWxuYW1lc3BhY2UpCiAJCQkJCQkgICBPYmplY3RJZEdldERh dHVtKHJlbG5hbWVzcGFjZSkpOwogfQogCisvKgorICogZ2V0X3Zhcm5hbWVfdmFyaWQKKyAqCQlH aXZlbiBuYW1lIGFuZCBuYW1lc3BhY2Ugb2YgdmFyaWFibGUsIGxvb2sgdXAgdGhlIE9JRC4KKyAq LworT2lkCitnZXRfdmFybmFtZV92YXJpZChjb25zdCBjaGFyICp2YXJuYW1lLCBPaWQgdmFybmFt ZXNwYWNlKQoreworCXJldHVybiBHZXRTeXNDYWNoZU9pZDIoVkFSSUFCTEVOQU1FTlNQLAorCQkJ CQkJICAgUG9pbnRlckdldERhdHVtKHZhcm5hbWUpLAorCQkJCQkJICAgT2JqZWN0SWRHZXREYXR1 bSh2YXJuYW1lc3BhY2UpKTsKK30KKwogI2lmZGVmIE5PVF9VU0VECiAvKgogICogZ2V0X3JlbG5h dHRzCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9zeXNjYWNoZS5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvY2FjaGUvc3lzY2FjaGUuYwppbmRleCAyYjM4MTc4MmEzLi4zNWRjMzJm NjQ5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9zeXNjYWNoZS5jCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3N5c2NhY2hlLmMKQEAgLTczLDYgKzczLDcgQEAKICNp bmNsdWRlICJjYXRhbG9nL3BnX3RzX3RlbXBsYXRlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190 eXBlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ191c2VyX21hcHBpbmcuaCIKKyNpbmNsdWRlICJj YXRhbG9nL3BnX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAi dXRpbHMvY2F0Y2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgpAQCAtOTY4LDYg Kzk2OSwyOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGNhY2hlZGVzYyBjYWNoZWluZm9bXSA9IHsK IAkJCTAKIAkJfSwKIAkJMgorCX0sCisJe1ZhcmlhYmxlUmVsYXRpb25JZCwJCQkvKiBWQVJJQUJM RU5BTUVOU1AgKi8KKwkJVmFyaWFibGVOYW1lTnNwSW5kZXhJZCwKKwkJMiwKKwkJeworCQkJQW51 bV9wZ192YXJpYWJsZV92YXJuYW1lLAorCQkJQW51bV9wZ192YXJpYWJsZV92YXJuYW1lc3BhY2Us CisJCQkwLAorCQkJMAorCQl9LAorCQk4CisJfSwKKwl7VmFyaWFibGVSZWxhdGlvbklkLAkJCS8q IFZBUklBQkxFT0lEICovCisJCVZhcmlhYmxlT2JqZWN0SW5kZXhJZCwKKwkJMSwKKwkJeworCQkJ T2JqZWN0SWRBdHRyaWJ1dGVOdW1iZXIsCisJCQkwLAorCQkJMCwKKwkJCTAKKwkJfSwKKwkJOAog CX0KIH07CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9jb21tb24uYyBiL3NyYy9iaW4v cGdfZHVtcC9jb21tb24uYwppbmRleCAwZDE0N2NiMDhkLi42ZDk3OTMxZDg1IDEwMDY0NAotLS0g YS9zcmMvYmluL3BnX2R1bXAvY29tbW9uLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL2NvbW1vbi5j CkBAIC0yOTYsNiArMjk2LDEwIEBAIGdldFNjaGVtYURhdGEoQXJjaGl2ZSAqZm91dCwgaW50ICpu dW1UYWJsZXNQdHIpCiAJCXdyaXRlX21zZyhOVUxMLCAicmVhZGluZyBzdWJzY3JpcHRpb25zXG4i KTsKIAlnZXRTdWJzY3JpcHRpb25zKGZvdXQpOwogCisJaWYgKGdfdmVyYm9zZSkKKwkJd3JpdGVf bXNnKE5VTEwsICJyZWFkaW5nIHZhcmlhYmxlc1xuIik7CisJZ2V0VmFyaWFibGVzKGZvdXQpOwor CiAJKm51bVRhYmxlc1B0ciA9IG51bVRhYmxlczsKIAlyZXR1cm4gdGJsaW5mbzsKIH0KZGlmZiAt LWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYyBiL3NyYy9iaW4vcGdf ZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYwppbmRleCA4M2M5NzZlYWY3Li5jOWJjOTFjYTY4IDEw MDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMKKysrIGIvc3Jj L2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jCkBAIC0zNDcxLDYgKzM0NzEsNyBAQCBf Z2V0T2JqZWN0RGVzY3JpcHRpb24oUFFFeHBCdWZmZXIgYnVmLCBUb2NFbnRyeSAqdGUsIEFyY2hp dmVIYW5kbGUgKkFIKQogCQlzdHJjbXAodHlwZSwgIlRFWFQgU0VBUkNIIERJQ1RJT05BUlkiKSA9 PSAwIHx8CiAJCXN0cmNtcCh0eXBlLCAiVEVYVCBTRUFSQ0ggQ09ORklHVVJBVElPTiIpID09IDAg fHwKIAkJc3RyY21wKHR5cGUsICJTVEFUSVNUSUNTIikgPT0gMCB8fAorCQlzdHJjbXAodHlwZSwg IlZBUklBQkxFIikgPT0gMCB8fAogCS8qIG5vbi1zY2hlbWEtc3BlY2lmaWVkIG9iamVjdHMgKi8K IAkJc3RyY21wKHR5cGUsICJEQVRBQkFTRSIpID09IDAgfHwKIAkJc3RyY21wKHR5cGUsICJQUk9D RURVUkFMIExBTkdVQUdFIikgPT0gMCB8fApAQCAtMzY3MCw3ICszNjcxLDggQEAgX3ByaW50VG9j RW50cnkoQXJjaGl2ZUhhbmRsZSAqQUgsIFRvY0VudHJ5ICp0ZSwgYm9vbCBpc0RhdGEpCiAJCQlz dHJjbXAodGUtPmRlc2MsICJTRVJWRVIiKSA9PSAwIHx8CiAJCQlzdHJjbXAodGUtPmRlc2MsICJT VEFUSVNUSUNTIikgPT0gMCB8fAogCQkJc3RyY21wKHRlLT5kZXNjLCAiUFVCTElDQVRJT04iKSA9 PSAwIHx8Ci0JCQlzdHJjbXAodGUtPmRlc2MsICJTVUJTQ1JJUFRJT04iKSA9PSAwKQorCQkJc3Ry Y21wKHRlLT5kZXNjLCAiU1VCU0NSSVBUSU9OIikgPT0gMCB8fAorCQkJc3RyY21wKHRlLT5kZXNj LCAiVkFSSUFCTEUiKSA9PSAwKQogCQl7CiAJCQlQUUV4cEJ1ZmZlciB0ZW1wID0gY3JlYXRlUFFF eHBCdWZmZXIoKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBiL3Ny Yy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggOWJhZjdiMmZkZS4uZjgyNWEwMGM5ZCAxMDA2 NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAv cGdfZHVtcC5jCkBAIC0yNjAsNiArMjYwLDcgQEAgc3RhdGljIHZvaWQgZHVtcFBvbGljeShBcmNo aXZlICpmb3V0LCBQb2xpY3lJbmZvICpwb2xpbmZvKTsKIHN0YXRpYyB2b2lkIGR1bXBQdWJsaWNh dGlvbihBcmNoaXZlICpmb3V0LCBQdWJsaWNhdGlvbkluZm8gKnB1YmluZm8pOwogc3RhdGljIHZv aWQgZHVtcFB1YmxpY2F0aW9uVGFibGUoQXJjaGl2ZSAqZm91dCwgUHVibGljYXRpb25SZWxJbmZv ICpwdWJyaW5mbyk7CiBzdGF0aWMgdm9pZCBkdW1wU3Vic2NyaXB0aW9uKEFyY2hpdmUgKmZvdXQs IFN1YnNjcmlwdGlvbkluZm8gKnN1YmluZm8pOworc3RhdGljIHZvaWQgZHVtcFZhcmlhYmxlKEFy Y2hpdmUgKmZvdXQsIFZhcmlhYmxlSW5mbyAqdmFyaW5mbyk7CiBzdGF0aWMgdm9pZCBkdW1wRGF0 YWJhc2UoQXJjaGl2ZSAqQUgpOwogc3RhdGljIHZvaWQgZHVtcERhdGFiYXNlQ29uZmlnKEFyY2hp dmUgKkFILCBQUUV4cEJ1ZmZlciBvdXRidWYsCiAJCQkJICAgY29uc3QgY2hhciAqZGJuYW1lLCBP aWQgZGJvaWQpOwpAQCAtNDIyMSw2ICs0MjIyLDIwOCBAQCBkdW1wU3Vic2NyaXB0aW9uKEFyY2hp dmUgKmZvdXQsIFN1YnNjcmlwdGlvbkluZm8gKnN1YmluZm8pCiAJZnJlZShxc3VibmFtZSk7CiB9 CiAKKy8qCisgKiBnZXRWYXJpYWJsZXMKKyAqCSAgZ2V0IGluZm9ybWF0aW9uIGFib3V0IHZhcmlh YmxlcworICovCit2b2lkCitnZXRWYXJpYWJsZXMoQXJjaGl2ZSAqZm91dCkKK3sKKwlEdW1wT3B0 aW9ucyAqZG9wdCA9IGZvdXQtPmRvcHQ7CisJUFFFeHBCdWZmZXIgcXVlcnk7CisJUFFFeHBCdWZm ZXIgYWNsX3N1YnF1ZXJ5ID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKKwlQUUV4cEJ1ZmZlciByYWNs X3N1YnF1ZXJ5ID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKKwlQUUV4cEJ1ZmZlciBpbml0X2FjbF9z dWJxdWVyeSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CisJUFFFeHBCdWZmZXIgaW5pdF9yYWNsX3N1 YnF1ZXJ5ID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKKwlQR3Jlc3VsdCAgICpyZXM7CisJVmFyaWFi bGVJbmZvICp2YXJpbmZvOworCWludAkJCWlfdGFibGVvaWQ7CisJaW50CQkJaV9vaWQ7CisJaW50 CQkJaV92YXJuYW1lOworCWludAkJCWlfdmFybmFtZXNwYWNlOworCWludAkJCWlfdmFydHlwZTsK KwlpbnQJCQlpX3ZhcnR5cG5hbWU7CisJaW50CQkJaV92YXJkZWZleHByOworCWludAkJCWlfcm9s bmFtZTsKKwlpbnQJCQlpX3ZhcmFjbDsKKwlpbnQJCQlpX3J2YXJhY2w7CisJaW50CQkJaV9pbml0 dmFyYWNsOworCWludAkJCWlfaW5pdHJ2YXJhY2w7CisJaW50CQkJaSwKKwkJCQludHVwczsKKwor CWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uIDw9IDExMDAwMCkKKwkJcmV0dXJuOworCisJYWNsX3N1 YnF1ZXJ5ID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKKwlyYWNsX3N1YnF1ZXJ5ID0gY3JlYXRlUFFF eHBCdWZmZXIoKTsKKwlpbml0X2FjbF9zdWJxdWVyeSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CisJ aW5pdF9yYWNsX3N1YnF1ZXJ5ID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKKworCWJ1aWxkQUNMUXVl cmllcyhhY2xfc3VicXVlcnksIHJhY2xfc3VicXVlcnksIGluaXRfYWNsX3N1YnF1ZXJ5LAorCQkJ CQlpbml0X3JhY2xfc3VicXVlcnksICJ2LnZhcmFjbCIsICJ2LnZhcm93bmVyIiwgIidWJyIsCisJ CQkJCWRvcHQtPmJpbmFyeV91cGdyYWRlKTsKKworCXF1ZXJ5ID0gY3JlYXRlUFFFeHBCdWZmZXIo KTsKKworCXJlc2V0UFFFeHBCdWZmZXIocXVlcnkpOworCisJLyogR2V0IHRoZSB2YXJpYWJsZXMg aW4gY3VycmVudCBkYXRhYmFzZS4gKi8KKwlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwKKwkJCQkJ CSAgIlNFTEVDVCB2LnRhYmxlb2lkLCB2Lm9pZCwgdi52YXJuYW1lLCAiCisJCQkJCQkgICJ2LnZh cm5hbWVzcGFjZSwiCisJCQkJCQkgICIoJXMgdmFyb3duZXIpIEFTIHJvbG5hbWUsICIKKwkJCQkJ CSAgIiVzIGFzIHZhcmFjbCwgIgorCQkJCQkJICAiJXMgYXMgcnZhcmFjbCwgIgorCQkJCQkJICAi JXMgYXMgaW5pdHZhcmFjbCwgIgorCQkJCQkJICAiJXMgYXMgaW5pdHJ2YXJhY2wsICIKKwkJCQkJ CSAgInYudmFydHlwZSwgIgorCQkJCQkJICAicGdfY2F0YWxvZy5mb3JtYXRfdHlwZSh2LnZhcnR5 cGUsIHYudmFydHlwbW9kKSBhcyB2YXJ0eXBuYW1lLCAiCisJCQkJCQkgICJwZ19jYXRhbG9nLnBn X2dldF9leHByKHYudmFyZGVmZXhwciwwKSBhcyB2YXJkZWZleHByICIKKwkJCQkJCSAgIkZST00g cGdfdmFyaWFibGUgdiAiCisJCQkJCQkgICJMRUZUIEpPSU4gcGdfaW5pdF9wcml2cyBwaXAgIgor CQkJCQkJICAiT04gKHYub2lkID0gcGlwLm9iam9pZCAiCisJCQkJCQkgICJBTkQgcGlwLmNsYXNz b2lkID0gJ3BnX3ZhcmlhYmxlJzo6cmVnY2xhc3MgIgorCQkJCQkJICAiQU5EIHBpcC5vYmpzdWJp ZCA9IDApIiwKKwkJCQkJCSAgdXNlcm5hbWVfc3VicXVlcnksCisJCQkJCQkgIGFjbF9zdWJxdWVy eS0+ZGF0YSwKKwkJCQkJCSAgcmFjbF9zdWJxdWVyeS0+ZGF0YSwKKwkJCQkJCSAgaW5pdF9hY2xf c3VicXVlcnktPmRhdGEsCisJCQkJCQkgIGluaXRfcmFjbF9zdWJxdWVyeS0+ZGF0YSk7CisKKwlk ZXN0cm95UFFFeHBCdWZmZXIoYWNsX3N1YnF1ZXJ5KTsKKwlkZXN0cm95UFFFeHBCdWZmZXIocmFj bF9zdWJxdWVyeSk7CisJZGVzdHJveVBRRXhwQnVmZmVyKGluaXRfYWNsX3N1YnF1ZXJ5KTsKKwlk ZXN0cm95UFFFeHBCdWZmZXIoaW5pdF9yYWNsX3N1YnF1ZXJ5KTsKKworCXJlcyA9IEV4ZWN1dGVT cWxRdWVyeShmb3V0LCBxdWVyeS0+ZGF0YSwgUEdSRVNfVFVQTEVTX09LKTsKKworCW50dXBzID0g UFFudHVwbGVzKHJlcyk7CisKKwlpX3RhYmxlb2lkID0gUFFmbnVtYmVyKHJlcywgInRhYmxlb2lk Iik7CisJaV9vaWQgPSBQUWZudW1iZXIocmVzLCAib2lkIik7CisJaV92YXJuYW1lID0gUFFmbnVt YmVyKHJlcywgInZhcm5hbWUiKTsKKwlpX3Zhcm5hbWVzcGFjZSA9IFBRZm51bWJlcihyZXMsICJ2 YXJuYW1lc3BhY2UiKTsKKwlpX3JvbG5hbWUgPSBQUWZudW1iZXIocmVzLCAicm9sbmFtZSIpOwor CWlfdmFydHlwZSA9IFBRZm51bWJlcihyZXMsICJ2YXJ0eXBlIik7CisJaV92YXJ0eXBuYW1lID0g UFFmbnVtYmVyKHJlcywgInZhcnR5cG5hbWUiKTsKKwlpX3ZhcmRlZmV4cHIgPSBQUWZudW1iZXIo cmVzLCAidmFyZGVmZXhwciIpOworCWlfdmFyYWNsID0gUFFmbnVtYmVyKHJlcywgInZhcmFjbCIp OworCWlfcnZhcmFjbCA9IFBRZm51bWJlcihyZXMsICJydmFyYWNsIik7CisJaV9pbml0dmFyYWNs ID0gUFFmbnVtYmVyKHJlcywgImluaXR2YXJhY2wiKTsKKwlpX2luaXRydmFyYWNsID0gUFFmbnVt YmVyKHJlcywgImluaXRydmFyYWNsIik7CisKKwl2YXJpbmZvID0gcGdfbWFsbG9jKG50dXBzICog c2l6ZW9mKFZhcmlhYmxlSW5mbykpOworCisJZm9yIChpID0gMDsgaSA8IG50dXBzOyBpKyspCisJ eworCQlUeXBlSW5mbwkgICAqdnR5cGU7CisKKwkJdmFyaW5mb1tpXS5kb2JqLm9ialR5cGUgPSBE T19WQVJJQUJMRTsKKwkJdmFyaW5mb1tpXS5kb2JqLmNhdElkLnRhYmxlb2lkID0KKwkJCWF0b29p ZChQUWdldHZhbHVlKHJlcywgaSwgaV90YWJsZW9pZCkpOworCQl2YXJpbmZvW2ldLmRvYmouY2F0 SWQub2lkID0gYXRvb2lkKFBRZ2V0dmFsdWUocmVzLCBpLCBpX29pZCkpOworCQlBc3NpZ25EdW1w SWQoJnZhcmluZm9baV0uZG9iaik7CisJCXZhcmluZm9baV0uZG9iai5uYW1lID0gcGdfc3RyZHVw KFBRZ2V0dmFsdWUocmVzLCBpLCBpX3Zhcm5hbWUpKTsKKwkJdmFyaW5mb1tpXS5kb2JqLm5hbWVz cGFjZSA9CisJCQlmaW5kTmFtZXNwYWNlKGZvdXQsCisJCQkJCQkgIGF0b29pZChQUWdldHZhbHVl KHJlcywgaSwgaV92YXJuYW1lc3BhY2UpKSk7CisKKwkJdmFyaW5mb1tpXS5yb2xuYW1lID0gcGdf c3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3JvbG5hbWUpKTsKKwkJdmFyaW5mb1tpXS52YXJ0 eXBlID0gYXRvb2lkKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3ZhcnR5cGUpKTsKKwkJdmFyaW5mb1tp XS52YXJ0eXBuYW1lID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3ZhcnR5cG5hbWUp KTsKKworCQl2YXJpbmZvW2ldLnZhcmFjbCA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaSwg aV92YXJhY2wpKTsKKwkJdmFyaW5mb1tpXS5ydmFyYWNsID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUo cmVzLCBpLCBpX3J2YXJhY2wpKTsKKwkJdmFyaW5mb1tpXS5pbml0dmFyYWNsID0gcGdfc3RyZHVw KFBRZ2V0dmFsdWUocmVzLCBpLCBpX2luaXR2YXJhY2wpKTsKKwkJdmFyaW5mb1tpXS5pbml0cnZh cmFjbCA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaSwgaV9pbml0cnZhcmFjbCkpOworCisJ CS8qIERlY2lkZSB3aGV0aGVyIHdlIHdhbnQgdG8gZHVtcCBpdCAqLworCQlzZWxlY3REdW1wYWJs ZU9iamVjdCgmKHZhcmluZm9baV0uZG9iaiksIGZvdXQpOworCisJCS8qIERvIG5vdCB0cnkgdG8g ZHVtcCBBQ0wgaWYgbm8gQUNMIGV4aXN0cy4gKi8KKwkJaWYgKFBRZ2V0aXNudWxsKHJlcywgaSwg aV92YXJhY2wpICYmIFBRZ2V0aXNudWxsKHJlcywgaSwgaV9ydmFyYWNsKSAmJgorCQkJUFFnZXRp c251bGwocmVzLCBpLCBpX2luaXR2YXJhY2wpICYmCisJCQlQUWdldGlzbnVsbChyZXMsIGksIGlf aW5pdHJ2YXJhY2wpKQorCQkJdmFyaW5mb1tpXS5kb2JqLmR1bXAgJj0gfkRVTVBfQ09NUE9ORU5U X0FDTDsKKworCQlpZiAoUFFnZXRpc251bGwocmVzLCBpLCBpX3ZhcmRlZmV4cHIpKQorCQkJdmFy aW5mb1tpXS52YXJkZWZleHByID0gTlVMTDsKKwkJZWxzZQorCQkJdmFyaW5mb1tpXS52YXJkZWZl eHByID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3ZhcmRlZmV4cHIpKTsKKworCQlp ZiAoc3RybGVuKHZhcmluZm9baV0ucm9sbmFtZSkgPT0gMCkKKwkJCXdyaXRlX21zZyhOVUxMLCAi V0FSTklORzogb3duZXIgb2YgdmFyaWFibGUgXCIlc1wiIGFwcGVhcnMgdG8gYmUgaW52YWxpZFxu IiwKKwkJCQkJICB2YXJpbmZvW2ldLmRvYmoubmFtZSk7CisKKwkJLyogRGVjaWRlIHdoZXRoZXIg d2Ugd2FudCB0byBkdW1wIGl0ICovCisJCXNlbGVjdER1bXBhYmxlT2JqZWN0KCYodmFyaW5mb1tp XS5kb2JqKSwgZm91dCk7CisKKwkJdnR5cGUgPSBmaW5kVHlwZUJ5T2lkKHZhcmluZm9baV0udmFy dHlwZSk7CisJCWFkZE9iamVjdERlcGVuZGVuY3koJnZhcmluZm9baV0uZG9iaiwgdnR5cGUtPmRv YmouZHVtcElkKTsKKwl9CisJUFFjbGVhcihyZXMpOworCisJZGVzdHJveVBRRXhwQnVmZmVyKHF1 ZXJ5KTsKK30KKworLyoKKyAqIGR1bXBWYXJpYWJsZQorICoJICBkdW1wIHRoZSBkZWZpbml0aW9u IG9mIHRoZSBnaXZlbiB2YXJpYWJsZXMKKyAqLworc3RhdGljIHZvaWQKK2R1bXBWYXJpYWJsZShB cmNoaXZlICpmb3V0LCBWYXJpYWJsZUluZm8gKnZhcmluZm8pCit7CisJRHVtcE9wdGlvbnMgKmRv cHQgPSBmb3V0LT5kb3B0OworCisJUFFFeHBCdWZmZXIgZGVscTsKKwlQUUV4cEJ1ZmZlciBxdWVy eTsKKwljb25zdCBjaGFyCSAgICp2YXJuYW1lOworCWNvbnN0IGNoYXIJICAgKnZhcnR5cG5hbWU7 CisJY29uc3QgY2hhcgkgICAqdmFyZGVmZXhwcjsKKworCS8qIFNraXAgaWYgbm90IHRvIGJlIGR1 bXBlZCAqLworCWlmICghdmFyaW5mby0+ZG9iai5kdW1wIHx8IGRvcHQtPmRhdGFPbmx5KQorCQly ZXR1cm47CisKKwlkZWxxID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKKwlxdWVyeSA9IGNyZWF0ZVBR RXhwQnVmZmVyKCk7CisKKwl2YXJuYW1lID0gZm10UXVhbGlmaWVkRHVtcGFibGUodmFyaW5mbyk7 CisJdmFydHlwbmFtZSA9IHZhcmluZm8tPnZhcnR5cG5hbWU7CisJdmFyZGVmZXhwciA9IHZhcmlu Zm8tPnZhcmRlZmV4cHI7CisKKwlhcHBlbmRQUUV4cEJ1ZmZlcihkZWxxLCAiRFJPUCBWQVJJQUJM RSAlcztcbiIsCisJCQkJCSAgdmFybmFtZSk7CisKKwlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwg IkNSRUFURSBWQVJJQUJMRSAlcyBBUyAlcyIsCisJCQkJCSAgdmFybmFtZSwgdmFydHlwbmFtZSk7 CisKKwlpZiAodmFyZGVmZXhwcikKKwkJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICIgREVGQVVM VCAlcyIsCisJCQkJCQkgIHZhcmRlZmV4cHIpOworCisJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnks ICI7XG4iKTsKKworCUFyY2hpdmVFbnRyeShmb3V0LCB2YXJpbmZvLT5kb2JqLmNhdElkLCB2YXJp bmZvLT5kb2JqLmR1bXBJZCwKKwkJCQkgdmFyaW5mby0+ZG9iai5uYW1lLAorCQkJCSBOVUxMLAor CQkJCSBOVUxMLAorCQkJCSB2YXJpbmZvLT5yb2xuYW1lLCBmYWxzZSwKKwkJCQkgIlZBUklBQkxF IiwgU0VDVElPTl9QUkVfREFUQSwKKwkJCQkgcXVlcnktPmRhdGEsIGRlbHEtPmRhdGEsIE5VTEws CisJCQkJIE5VTEwsIDAsCisJCQkJIE5VTEwsIE5VTEwpOworCisJaWYgKHZhcmluZm8tPmRvYmou ZHVtcCAmIERVTVBfQ09NUE9ORU5UX0NPTU1FTlQpCisJCWR1bXBDb21tZW50KGZvdXQsICJWQVJJ QUJMRSIsIHZhcm5hbWUsCisJCQkJCU5VTEwsIHZhcmluZm8tPnJvbG5hbWUsCisJCQkJCXZhcmlu Zm8tPmRvYmouY2F0SWQsIDAsIHZhcmluZm8tPmRvYmouZHVtcElkKTsKKworCWRlc3Ryb3lQUUV4 cEJ1ZmZlcihkZWxxKTsKKwlkZXN0cm95UFFFeHBCdWZmZXIocXVlcnkpOworfQorCiBzdGF0aWMg dm9pZAogYmluYXJ5X3VwZ3JhZGVfc2V0X3R5cGVfb2lkc19ieV90eXBlX29pZChBcmNoaXZlICpm b3V0LAogCQkJCQkJCQkJCSBQUUV4cEJ1ZmZlciB1cGdyYWRlX2J1ZmZlciwKQEAgLTk4NDksNiAr MTAwNTIsOSBAQCBkdW1wRHVtcGFibGVPYmplY3QoQXJjaGl2ZSAqZm91dCwgRHVtcGFibGVPYmpl Y3QgKmRvYmopCiAJCWNhc2UgRE9fU1VCU0NSSVBUSU9OOgogCQkJZHVtcFN1YnNjcmlwdGlvbihm b3V0LCAoU3Vic2NyaXB0aW9uSW5mbyAqKSBkb2JqKTsKIAkJCWJyZWFrOworCQljYXNlIERPX1ZB UklBQkxFOgorCQkJZHVtcFZhcmlhYmxlKGZvdXQsIChWYXJpYWJsZUluZm8gKikgZG9iaik7CisJ CQlicmVhazsKIAkJY2FzZSBET19QUkVfREFUQV9CT1VOREFSWToKIAkJY2FzZSBET19QT1NUX0RB VEFfQk9VTkRBUlk6CiAJCQkvKiBuZXZlciBkdW1wZWQsIG5vdGhpbmcgdG8gZG8gKi8KQEAgLTE3 OTM1LDYgKzE4MTQxLDcgQEAgYWRkQm91bmRhcnlEZXBlbmRlbmNpZXMoRHVtcGFibGVPYmplY3Qg Kipkb2JqcywgaW50IG51bU9ianMsCiAJCQljYXNlIERPX09QRkFNSUxZOgogCQkJY2FzZSBET19D T0xMQVRJT046CiAJCQljYXNlIERPX0NPTlZFUlNJT046CisJCQljYXNlIERPX1ZBUklBQkxFOgog CQkJY2FzZSBET19UQUJMRToKIAkJCWNhc2UgRE9fQVRUUkRFRjoKIAkJCWNhc2UgRE9fUFJPQ0xB Tkc6CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oIGIvc3JjL2Jpbi9wZ19k dW1wL3BnX2R1bXAuaAppbmRleCAxNDQ4MDA1ZjMwLi4wZDQ5YmI3ZWQ3IDEwMDY0NAotLS0gYS9z cmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgK QEAgLTg0LDcgKzg0LDggQEAgdHlwZWRlZiBlbnVtCiAJRE9fUE9MSUNZLAogCURPX1BVQkxJQ0FU SU9OLAogCURPX1BVQkxJQ0FUSU9OX1JFTCwKLQlET19TVUJTQ1JJUFRJT04KKwlET19TVUJTQ1JJ UFRJT04sCisJRE9fVkFSSUFCTEUKIH0gRHVtcGFibGVPYmplY3RUeXBlOwogCiAvKiBjb21wb25l bnQgdHlwZXMgb2YgYW4gb2JqZWN0IHdoaWNoIGNhbiBiZSBzZWxlY3RlZCBmb3IgZHVtcGluZyAq LwpAQCAtNjI1LDYgKzYyNiwyMiBAQCB0eXBlZGVmIHN0cnVjdCBfU3Vic2NyaXB0aW9uSW5mbwog CWNoYXIJICAgKnN1YnB1YmxpY2F0aW9uczsKIH0gU3Vic2NyaXB0aW9uSW5mbzsKIAorLyoKKyAq IFRoZSBWYXJpYWJsZUluZm8gc3RydWN0IGlzIHVzZWQgdG8gcmVwcmVzZW50IHNjaGVtYSB2YXJp YWJsZXMKKyAqLwordHlwZWRlZiBzdHJ1Y3QgX1ZhcmlhYmxlSW5mbworeworCUR1bXBhYmxlT2Jq ZWN0IGRvYmo7CisJT2lkCQkJdmFydHlwZTsKKwljaGFyCSAgICp2YXJ0eXBuYW1lOworCWNoYXIJ ICAgKnJvbG5hbWU7CQkvKiBuYW1lIG9mIG93bmVyLCBvciBlbXB0eSBzdHJpbmcgKi8KKwljaGFy CSAgICp2YXJkZWZleHByOworCWNoYXIJICAgKnZhcmFjbDsKKwljaGFyCSAgICpydmFyYWNsOwor CWNoYXIJICAgKmluaXR2YXJhY2w7CisJY2hhcgkgICAqaW5pdHJ2YXJhY2w7Cit9IFZhcmlhYmxl SW5mbzsKKwogLyoKICAqIFdlIGJ1aWxkIGFuIGFycmF5IG9mIHRoZXNlIHdpdGggYW4gZW50cnkg Zm9yIGVhY2ggb2JqZWN0IHRoYXQgaXMgYW4KICAqIGV4dGVuc2lvbiBtZW1iZXIgYWNjb3JkaW5n IHRvIHBnX2RlcGVuZC4KQEAgLTcyNSw1ICs3NDIsNiBAQCBleHRlcm4gdm9pZCBnZXRQdWJsaWNh dGlvbnMoQXJjaGl2ZSAqZm91dCk7CiBleHRlcm4gdm9pZCBnZXRQdWJsaWNhdGlvblRhYmxlcyhB cmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJsaW5mb1tdLAogCQkJCQkgaW50IG51bVRhYmxlcyk7 CiBleHRlcm4gdm9pZCBnZXRTdWJzY3JpcHRpb25zKEFyY2hpdmUgKmZvdXQpOworZXh0ZXJuIHZv aWQgZ2V0VmFyaWFibGVzKEFyY2hpdmUgKmZvdXQpOwogCiAjZW5kaWYJCQkJCQkJLyogUEdfRFVN UF9IICovCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbCBiL3Ny Yy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCmluZGV4IGVjNzUxYTdjMjMuLjJhNjc3NjZl ZDQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCisrKyBiL3Ny Yy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCkBAIC0yNjAxLDYgKzI2MDEsMzggQEAgbXkg JXRlc3RzID0gKAogCQl9LAogCX0sCiAKKwknQ1JFQVRFIFZBUklBQkxFIHRlc3RfdmFyaWFibGUn ID0+IHsKKwkJYWxsX3J1bnMgICAgID0+IDEsCisJCWNhdGNoX2FsbCAgICA9PiAnQ1JFQVRFIC4u LiBjb21tYW5kcycsCisJCWNyZWF0ZV9vcmRlciA9PiA2MSwKKwkJY3JlYXRlX3NxbCAgID0+ICdD UkVBVEUgVkFSSUFCTEUgZHVtcF90ZXN0LnZhcmlhYmxlIEFTIGludGVnZXIgREVGQVVMVCAwOycs CisJCXJlZ2V4cCA9PiBxci9eCisJCQlcUUNSRUFURSBWQVJJQUJMRSBkdW1wX3Rlc3QudmFyaWFi bGUgQVMgaW50ZWdlciBERUZBVUxUIDA7XEUveG0sCisJCWxpa2UgPT4geworCQkJYmluYXJ5X3Vw Z3JhZGUgICAgICAgICAgPT4gMSwKKwkJCWNsZWFuICAgICAgICAgICAgICAgICAgID0+IDEsCisJ CQljbGVhbl9pZl9leGlzdHMgICAgICAgICA9PiAxLAorCQkJY3JlYXRlZGIgICAgICAgICAgICAg ICAgPT4gMSwKKwkJCWRlZmF1bHRzICAgICAgICAgICAgICAgID0+IDEsCisJCQlleGNsdWRlX3Rl c3RfdGFibGUgICAgICA9PiAxLAorCQkJZXhjbHVkZV90ZXN0X3RhYmxlX2RhdGEgPT4gMSwKKwkJ CW5vX2Jsb2JzICAgICAgICAgICAgICAgID0+IDEsCisJCQlub19wcml2cyAgICAgICAgICAgICAg ICA9PiAxLAorCQkJbm9fb3duZXIgICAgICAgICAgICAgICAgPT4gMSwKKwkJCW9ubHlfZHVtcF90 ZXN0X3NjaGVtYSAgID0+IDEsCisJCQlwZ19kdW1wYWxsX2RicHJpdnMgICAgICA9PiAxLAorCQkJ c2NoZW1hX29ubHkgICAgICAgICAgICAgPT4gMSwKKwkJCXNlY3Rpb25fcHJlX2RhdGEgICAgICAg ID0+IDEsCisJCQl0ZXN0X3NjaGVtYV9wbHVzX2Jsb2JzICA9PiAxLAorCQkJd2l0aF9vaWRzICAg ICAgICAgICAgICAgPT4gMSwgfSwKKwkJdW5saWtlID0+IHsKKwkJCWV4Y2x1ZGVfZHVtcF90ZXN0 X3NjaGVtYSA9PiAxLAorCQkJb25seV9kdW1wX3Rlc3RfdGFibGUgICAgID0+IDEsCisJCQlwZ19k dW1wYWxsX2dsb2JhbHMgICAgICAgPT4gMSwKKwkJCXBnX2R1bXBhbGxfZ2xvYmFsc19jbGVhbiA9 PiAxLAorCQkJcm9sZSAgICAgICAgICAgICAgICAgICAgID0+IDEsCisJCQlzZWN0aW9uX3Bvc3Rf ZGF0YSAgICAgICAgPT4gMSwgfSwgfSwKKwogCSdDUkVBVEUgVklFVyB0ZXN0X3ZpZXcnID0+IHsK IAkJY3JlYXRlX29yZGVyID0+IDYxLAogCQljcmVhdGVfc3FsICAgPT4gJ0NSRUFURSBWSUVXIGR1 bXBfdGVzdC50ZXN0X3ZpZXcKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9jb21tYW5kLmMgYi9z cmMvYmluL3BzcWwvY29tbWFuZC5jCmluZGV4IDViNGQ1NGE0NDIuLjczYTc1MmZkN2UgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcHNxbC9jb21tYW5kLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2NvbW1hbmQu YwpAQCAtODUzLDYgKzg1Myw5IEBAIGV4ZWNfY29tbWFuZF9kKFBzcWxTY2FuU3RhdGUgc2Nhbl9z dGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoLCBjb25zdCBjaGFyICpjbWQpCiAJCQkJCQlicmVhazsK IAkJCQl9CiAJCQkJYnJlYWs7CisJCQljYXNlICdWJzoJCQkvKiBWYXJpYWJsZXMgKi8KKwkJCQlz dWNjZXNzID0gbGlzdFZhcmlhYmxlcyhwYXR0ZXJuLCBzaG93X3ZlcmJvc2UpOworCQkJCWJyZWFr OwogCQkJY2FzZSAneCc6CQkJLyogRXh0ZW5zaW9ucyAqLwogCQkJCWlmIChzaG93X3ZlcmJvc2Up CiAJCQkJCXN1Y2Nlc3MgPSBsaXN0RXh0ZW5zaW9uQ29udGVudHMocGF0dGVybik7CmRpZmYgLS1n aXQgYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCmlu ZGV4IDgwZDgzMzhiOTYuLmQ2NDViYmE3YWYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9kZXNj cmliZS5jCisrKyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCkBAIC00MTc4LDYgKzQxNzgsODAg QEAgbGlzdFNjaGVtYXMoY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2ZXJib3NlLCBib29sIHNo b3dTeXN0ZW0pCiAJcmV0dXJuIHRydWU7CiB9CiAKKy8qCisgKiBcZFYKKyAqCisgKiBsaXN0VmFy aWFibGVzKCkKKyAqLworYm9vbAorbGlzdFZhcmlhYmxlcyhjb25zdCBjaGFyICpwYXR0ZXJuLCBi b29sIHZlcmJvc2UpCit7CisJUFFFeHBCdWZmZXJEYXRhIGJ1ZjsKKwlQR3Jlc3VsdCAgICpyZXM7 CisJcHJpbnRRdWVyeU9wdCBteW9wdCA9IHBzZXQucG9wdDsKKwlzdGF0aWMgY29uc3QgYm9vbCB0 cmFuc2xhdGVfY29sdW1uc1tdID0ge2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg ZmFsc2UsIGZhbHNlfTsKKworCWluaXRQUUV4cEJ1ZmZlcigmYnVmKTsKKworCXByaW50ZlBRRXhw QnVmZmVyKCZidWYsCisJCQkJCSAgIlNFTEVDVCBuLm5zcG5hbWUgYXMgXCIlc1wiLFxuIgorCQkJ CQkgICIgIHYudmFybmFtZSBhcyBcIiVzXCIsXG4iCisJCQkJCSAgIiAgcGdfY2F0YWxvZy5mb3Jt YXRfdHlwZSh2LnZhcnR5cGUsIHYudmFydHlwbW9kKSBhcyBcIiVzXCIsXG4iCisJCQkJCSAgIiAg cGdfY2F0YWxvZy5wZ19nZXRfdXNlcmJ5aWQodi52YXJvd25lcikgYXMgXCIlc1wiLFxuIgorCQkJ CQkgICIgIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIodi52YXJkZWZleHByLCAwKSBhcyBcIiVzXCIi LAorCQkJCQkgIGdldHRleHRfbm9vcCgiU2NoZW1hIiksCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJO YW1lIiksCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJUeXBlIiksCisJCQkJCSAgZ2V0dGV4dF9ub29w KCJPd25lciIpLAorCQkJCQkgIGdldHRleHRfbm9vcCgiRGVmYXVsdCIpKTsKKworCWFwcGVuZFBR RXhwQnVmZmVyU3RyKCZidWYsCisJCQkJCQkgIlxuRlJPTSBwZ19jYXRhbG9nLnBnX3ZhcmlhYmxl IHYiCisJCQkJCQkgIlxuICAgICBMRUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19uYW1lc3BhY2UgbiBP TiBuLm9pZCA9IHYudmFybmFtZXNwYWNlIik7CisKKwlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVm LCAiXG5XSEVSRSB0cnVlXG4iKTsKKwlpZiAoIXBhdHRlcm4pCisJCWFwcGVuZFBRRXhwQnVmZmVy U3RyKCZidWYsICIgICAgICBBTkQgbi5uc3BuYW1lIDw+ICdwZ19jYXRhbG9nJ1xuIgorCQkJCQkJ CSAiICAgICAgQU5EIG4ubnNwbmFtZSA8PiAnaW5mb3JtYXRpb25fc2NoZW1hJ1xuIik7CisKKwlw cm9jZXNzU1FMTmFtZVBhdHRlcm4ocHNldC5kYiwgJmJ1ZiwgcGF0dGVybiwgdHJ1ZSwgZmFsc2Us CisJCQkJCQkgICJuLm5zcG5hbWUiLCAidi52YXJuYW1lIiwgTlVMTCwKKwkJCQkJCSAgInBnX2Nh dGFsb2cucGdfdmFyaWFibGVfaXNfdmlzaWJsZSh2Lm9pZCkiKTsKKworCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKCZidWYsICJPUkRFUiBCWSAxLDI7Iik7CisKKwlyZXMgPSBQU1FMZXhlYyhidWYuZGF0 YSk7CisJdGVybVBRRXhwQnVmZmVyKCZidWYpOworCWlmICghcmVzKQorCQlyZXR1cm4gZmFsc2U7 CisKKwkvKgorCSAqIE1vc3QgZnVuY3Rpb25zIGluIHRoaXMgZmlsZSBhcmUgY29udGVudCB0byBw cmludCBhbiBlbXB0eSB0YWJsZSB3aGVuCisJICogdGhlcmUgYXJlIG5vIG1hdGNoaW5nIG9iamVj dHMuICBXZSBpbnRlbnRpb25hbGx5IGRldmlhdGUgZnJvbSB0aGF0CisJICogaGVyZSwgYnV0IG9u bHkgaW4gIXF1aWV0IG1vZGUsIGZvciBoaXN0b3JpY2FsIHJlYXNvbnMuCisJICovCisJaWYgKFBR bnR1cGxlcyhyZXMpID09IDAgJiYgIXBzZXQucXVpZXQpCisJeworCQlpZiAocGF0dGVybikKKwkJ CXBzcWxfZXJyb3IoIkRpZCBub3QgZmluZCBhbnkgc2NoZW1hIHZhcmlhYmxlIG5hbWVkIFwiJXNc Ii5cbiIsCisJCQkJCSAgIHBhdHRlcm4pOworCQllbHNlCisJCQlwc3FsX2Vycm9yKCJEaWQgbm90 IGZpbmQgYW55IHNjaGVtYSB2YXJpYWJsZXMuXG4iKTsKKwl9CisJZWxzZQorCXsKKwkJbXlvcHQu bnVsbFByaW50ID0gTlVMTDsKKwkJbXlvcHQudGl0bGUgPSBfKCJMaXN0IG9mIHZhcmlhYmxlcyIp OworCQlteW9wdC50cmFuc2xhdGVfaGVhZGVyID0gdHJ1ZTsKKwkJbXlvcHQudHJhbnNsYXRlX2Nv bHVtbnMgPSB0cmFuc2xhdGVfY29sdW1uczsKKwkJbXlvcHQubl90cmFuc2xhdGVfY29sdW1ucyA9 IGxlbmd0aG9mKHRyYW5zbGF0ZV9jb2x1bW5zKTsKKworCQlwcmludFF1ZXJ5KHJlcywgJm15b3B0 LCBwc2V0LnF1ZXJ5Rm91dCwgZmFsc2UsIHBzZXQubG9nZmlsZSk7CisJfQorCisJUFFjbGVhcihy ZXMpOworCXJldHVybiB0cnVlOworfQogCiAvKgogICogXGRGcApkaWZmIC0tZ2l0IGEvc3JjL2Jp bi9wc3FsL2Rlc2NyaWJlLmggYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuaAppbmRleCBhNGNjNWVm YWUwLi5lY2M0ZTNhNTMxIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuaAorKysg Yi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuaApAQCAtNjMsNiArNjMsOSBAQCBleHRlcm4gYm9vbCBs aXN0QWxsRGJzKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSk7CiAvKiBcZHQsIFxk aSwgXGRzLCBcZFMsIGV0Yy4gKi8KIGV4dGVybiBib29sIGxpc3RUYWJsZXMoY29uc3QgY2hhciAq dGFidHlwZXMsIGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSwgYm9vbCBzaG93U3lz dGVtKTsKIAorLyogXGRWICovCitleHRlcm4gYm9vbCBsaXN0VmFyaWFibGVzKGNvbnN0IGNoYXIg KnBhdHRlcm4sIGJvb2wgdmFyYm9zZSk7CisKIC8qIFxkRCAqLwogZXh0ZXJuIGJvb2wgbGlzdERv bWFpbnMoY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2ZXJib3NlLCBib29sIHNob3dTeXN0ZW0p OwogCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvaGVscC5jIGIvc3JjL2Jpbi9wc3FsL2hlbHAu YwppbmRleCAzMTYwMzBkMzU4Li5hZGNjMzZjYjZlIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwv aGVscC5jCisrKyBiL3NyYy9iaW4vcHNxbC9oZWxwLmMKQEAgLTE2Nyw3ICsxNjcsNyBAQCBzbGFz aFVzYWdlKHVuc2lnbmVkIHNob3J0IGludCBwYWdlcikKIAkgKiBVc2UgInBzcWwgLS1oZWxwPWNv bW1hbmRzIHwgd2MiIHRvIGNvdW50IGNvcnJlY3RseS4gIEl0J3Mgb2theSB0byBjb3VudAogCSAq IHRoZSBVU0VfUkVBRExJTkUgbGluZSBldmVuIGluIGJ1aWxkcyB3aXRob3V0IHRoYXQuCiAJICov Ci0Jb3V0cHV0ID0gUGFnZU91dHB1dCgxMjUsIHBhZ2VyID8gJihwc2V0LnBvcHQudG9wdCkgOiBO VUxMKTsKKwlvdXRwdXQgPSBQYWdlT3V0cHV0KDEyNiwgcGFnZXIgPyAmKHBzZXQucG9wdC50b3B0 KSA6IE5VTEwpOwogCiAJZnByaW50ZihvdXRwdXQsIF8oIkdlbmVyYWxcbiIpKTsKIAlmcHJpbnRm KG91dHB1dCwgXygiICBcXGNvcHlyaWdodCAgICAgICAgICAgICBzaG93IFBvc3RncmVTUUwgdXNh Z2UgYW5kIGRpc3RyaWJ1dGlvbiB0ZXJtc1xuIikpOwpAQCAtMjU3LDYgKzI1Nyw3IEBAIHNsYXNo VXNhZ2UodW5zaWduZWQgc2hvcnQgaW50IHBhZ2VyKQogCWZwcmludGYob3V0cHV0LCBfKCIgIFxc ZFRbUytdIFtQQVRURVJOXSAgICAgIGxpc3QgZGF0YSB0eXBlc1xuIikpOwogCWZwcmludGYob3V0 cHV0LCBfKCIgIFxcZHVbUytdIFtQQVRURVJOXSAgICAgIGxpc3Qgcm9sZXNcbiIpKTsKIAlmcHJp bnRmKG91dHB1dCwgXygiICBcXGR2W1MrXSBbUEFUVEVSTl0gICAgICBsaXN0IHZpZXdzXG4iKSk7 CisJZnByaW50ZihvdXRwdXQsIF8oIiAgXFxkViAgICAgW1BBVFRFUk5dICAgICAgbGlzdCB2YXJp YWJsZXNcbiIpKTsKIAlmcHJpbnRmKG91dHB1dCwgXygiICBcXGR4WytdICBbUEFUVEVSTl0gICAg ICBsaXN0IGV4dGVuc2lvbnNcbiIpKTsKIAlmcHJpbnRmKG91dHB1dCwgXygiICBcXGR5ICAgICBb UEFUVEVSTl0gICAgICBsaXN0IGV2ZW50IHRyaWdnZXJzXG4iKSk7CiAJZnByaW50ZihvdXRwdXQs IF8oIiAgXFxsWytdICAgW1BBVFRFUk5dICAgICAgbGlzdCBkYXRhYmFzZXNcbiIpKTsKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYyBiL3NyYy9iaW4vcHNxbC90YWItY29t cGxldGUuYwppbmRleCBiYjY5NmY4ZWU5Li5lYmVjMDBmZTFmIDEwMDY0NAotLS0gYS9zcmMvYmlu L3BzcWwvdGFiLWNvbXBsZXRlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jCkBA IC04MDUsNiArODA1LDIyIEBAIHN0YXRpYyBjb25zdCBTY2hlbWFRdWVyeSBRdWVyeV9mb3JfbGlz dF9vZl9zdGF0aXN0aWNzID0gewogCU5VTEwKIH07CiAKK3N0YXRpYyBjb25zdCBTY2hlbWFRdWVy eSBRdWVyeV9mb3JfbGlzdF9vZl92YXJpYWJsZXMgPSB7CisJLyogbWluX3NlcnZlcl92ZXJzaW9u ICovCisJMCwKKwkvKiBjYXRuYW1lICovCisJInBnX2NhdGFsb2cucGdfdmFyaWFibGUgdiIsCisJ Lyogc2VsY29uZGl0aW9uICovCisJTlVMTCwKKwkvKiB2aXNjb25kaXRpb24gKi8KKwkicGdfY2F0 YWxvZy5wZ192YXJpYWJsZV9pc192aXNpYmxlKHYub2lkKSIsCisJLyogbmFtZXNwYWNlICovCisJ InYudmFybmFtZXNwYWNlIiwKKwkvKiByZXN1bHQgKi8KKwkicGdfY2F0YWxvZy5xdW90ZV9pZGVu dCh2LnZhcm5hbWUpIiwKKwkvKiBxdWFscmVzdWx0ICovCisJTlVMTAorfTsKIAogLyoKICAqIFF1 ZXJpZXMgdG8gZ2V0IGxpc3RzIG9mIG5hbWVzIG9mIHZhcmlvdXMga2luZHMgb2YgdGhpbmdzLCBw b3NzaWJseQpAQCAtMTI0OSw2ICsxMjY1LDcgQEAgc3RhdGljIGNvbnN0IHBnc3FsX3RoaW5nX3Qg d29yZHNfYWZ0ZXJfY3JlYXRlW10gPSB7CiAJCQkJCQkJCQkJCQkJCQkJCSAqIFRBQkxFIC4uLiAq LwogCXsiVVNFUiIsIFF1ZXJ5X2Zvcl9saXN0X29mX3JvbGVzICIgVU5JT04gU0VMRUNUICdNQVBQ SU5HIEZPUicifSwKIAl7IlVTRVIgTUFQUElORyBGT1IiLCBOVUxMLCBOVUxMLCBOVUxMfSwKKwl7 IlZBUklBQkxFIiwgTlVMTCwgTlVMTCwgJlF1ZXJ5X2Zvcl9saXN0X29mX3ZhcmlhYmxlc30sCiAJ eyJWSUVXIiwgTlVMTCwgTlVMTCwgJlF1ZXJ5X2Zvcl9saXN0X29mX3ZpZXdzfSwKIAl7TlVMTH0J CQkJCQkvKiBlbmQgb2YgbGlzdCAqLwogfTsKQEAgLTE2MDQsNyArMTYyMSw3IEBAIHBzcWxfY29t cGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJCSJBQk9SVCIs ICJBTFRFUiIsICJBTkFMWVpFIiwgIkJFR0lOIiwgIkNBTEwiLCAiQ0hFQ0tQT0lOVCIsICJDTE9T RSIsICJDTFVTVEVSIiwKIAkJIkNPTU1FTlQiLCAiQ09NTUlUIiwgIkNPUFkiLCAiQ1JFQVRFIiwg IkRFQUxMT0NBVEUiLCAiREVDTEFSRSIsCiAJCSJERUxFVEUgRlJPTSIsICJESVNDQVJEIiwgIkRP IiwgIkRST1AiLCAiRU5EIiwgIkVYRUNVVEUiLCAiRVhQTEFJTiIsCi0JCSJGRVRDSCIsICJHUkFO VCIsICJJTVBPUlQiLCAiSU5TRVJUIiwgIkxJU1RFTiIsICJMT0FEIiwgIkxPQ0siLAorCQkiRkVU Q0giLCAiR1JBTlQiLCAiSU1QT1JUIiwgIklOU0VSVCIsICJMRVQiLCAiTElTVEVOIiwgIkxPQUQi LCAiTE9DSyIsCiAJCSJNT1ZFIiwgIk5PVElGWSIsICJQUkVQQVJFIiwKIAkJIlJFQVNTSUdOIiwg IlJFRlJFU0ggTUFURVJJQUxJWkVEIFZJRVciLCAiUkVJTkRFWCIsICJSRUxFQVNFIiwKIAkJIlJF U0VUIiwgIlJFVk9LRSIsICJST0xMQkFDSyIsCkBAIC0xNjIxLDkgKzE2MzgsOSBAQCBwc3FsX2Nv bXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCQkiXFxkIiwg IlxcZGEiLCAiXFxkQSIsICJcXGRiIiwgIlxcZGMiLCAiXFxkQyIsICJcXGRkIiwgIlxcZGRwIiwg IlxcZEQiLAogCQkiXFxkZXMiLCAiXFxkZXQiLCAiXFxkZXUiLCAiXFxkZXciLCAiXFxkRSIsICJc XGRmIiwKIAkJIlxcZEYiLCAiXFxkRmQiLCAiXFxkRnAiLCAiXFxkRnQiLCAiXFxkZyIsICJcXGRp IiwgIlxcZGwiLCAiXFxkTCIsCi0JCSJcXGRtIiwgIlxcZG4iLCAiXFxkbyIsICJcXGRPIiwgIlxc ZHAiLAorCQkiXFxkbSIsICJcXGRuIiwgIlxcZG8iLCAiXFxkTyIsICJcXGRwIgogCQkiXFxkcmRz IiwgIlxcZFJzIiwgIlxcZFJwIiwgIlxcZHMiLCAiXFxkUyIsCi0JCSJcXGR0IiwgIlxcZFQiLCAi XFxkdiIsICJcXGR1IiwgIlxcZHgiLCAiXFxkeSIsCisJCSJcXGR0IiwgIlxcZFQiLCAiXFxkdiIs ICJcXGR1IiwgIlxcZHgiLCAiXFxkeSIsICJcXGRWIiwKIAkJIlxcZSIsICJcXGVjaG8iLCAiXFxl ZiIsICJcXGVsaWYiLCAiXFxlbHNlIiwgIlxcZW5jb2RpbmciLAogCQkiXFxlbmRpZiIsICJcXGVy cnZlcmJvc2UiLCAiXFxldiIsCiAJCSJcXGYiLApAQCAtMjgzNyw2ICsyODU0LDE0IEBAIHBzcWxf Y29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJZWxzZSBp ZiAoTWF0Y2hlczQoIkNSRUFURSIsICJST0xFfFVTRVJ8R1JPVVAiLCBNYXRjaEFueSwgIklOIikp CiAJCUNPTVBMRVRFX1dJVEhfTElTVDIoIkdST1VQIiwgIlJPTEUiKTsKIAorLyogQ1JFQVRFIFZB UklBQkxFIC0tLSBpcyBhbGxvd2VkIGluc2lkZSBDUkVBVEUgU0NIRU1BLCBzbyB1c2UgVGFpbE1h dGNoZXMgKi8KKwkvKiBDb21wbGV0ZSBDUkVBVEUgVkFSSUFCTEUgPG5hbWU+IHdpdGggQVMgKi8K KwllbHNlIGlmIChUYWlsTWF0Y2hlczMoIkNSRUFURSIsICJWQVJJQUJMRSIsIE1hdGNoQW55KSkK KwkJQ09NUExFVEVfV0lUSF9DT05TVCgiQVMiKTsKKwkvKiBDb21wbGV0ZSBDUkVBVEUgVkFSSUFC TEUgPG5hbWU+IHdpdGggQVMgdHlwZXMqLworCWVsc2UgaWYgKFRhaWxNYXRjaGVzNCgiQ1JFQVRF IiwgIlZBUklBQkxFIiwgTWF0Y2hBbnksICJBUyIpKQorCQlDT01QTEVURV9XSVRIX1NDSEVNQV9R VUVSWShRdWVyeV9mb3JfbGlzdF9vZl9kYXRhdHlwZXMsIE5VTEwpOworCiAvKiBDUkVBVEUgVklF VyAtLS0gaXMgYWxsb3dlZCBpbnNpZGUgQ1JFQVRFIFNDSEVNQSwgc28gdXNlIFRhaWxNYXRjaGVz ICovCiAJLyogQ29tcGxldGUgQ1JFQVRFIFZJRVcgPG5hbWU+IHdpdGggQVMgKi8KIAllbHNlIGlm IChUYWlsTWF0Y2hlczMoIkNSRUFURSIsICJWSUVXIiwgTWF0Y2hBbnkpKQpAQCAtMjg5MCw3ICsy OTE1LDcgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50 IGVuZCkKIAogLyogRElTQ0FSRCAqLwogCWVsc2UgaWYgKE1hdGNoZXMxKCJESVNDQVJEIikpCi0J CUNPTVBMRVRFX1dJVEhfTElTVDQoIkFMTCIsICJQTEFOUyIsICJTRVFVRU5DRVMiLCAiVEVNUCIp OworCQlDT01QTEVURV9XSVRIX0xJU1Q1KCJBTEwiLCAiUExBTlMiLCAiU0VRVUVOQ0VTIiwgIlRF TVAiLCAiVkFSSUFCTEVTIik7CiAKIC8qIERPICovCiAJZWxzZSBpZiAoTWF0Y2hlczEoIkRPIikp CkBAIC0yOTkyLDYgKzMwMTcsMTIgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQs IGludCBzdGFydCwgaW50IGVuZCkKIAllbHNlIGlmIChNYXRjaGVzNSgiRFJPUCIsICJSVUxFIiwg TWF0Y2hBbnksICJPTiIsIE1hdGNoQW55KSkKIAkJQ09NUExFVEVfV0lUSF9MSVNUMigiQ0FTQ0FE RSIsICJSRVNUUklDVCIpOwogCisJLyogRFJPUCBWQVJJQUJMRSAqLworCWVsc2UgaWYgKE1hdGNo ZXMyKCJEUk9QIiwgIlZBUklBQkxFIikpCisJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1 ZXJ5X2Zvcl9saXN0X29mX3ZhcmlhYmxlcywgTlVMTCk7CisJZWxzZSBpZiAoTWF0Y2hlczMoIkRS T1AiLCAiVkFSSUFCTEUiLCBNYXRjaEFueSkpCisJCUNPTVBMRVRFX1dJVEhfTElTVDIoIkNBU0NB REUiLCAiUkVTVFJJQ1QiKTsKKwogLyogRVhFQ1VURSAqLwogCWVsc2UgaWYgKE1hdGNoZXMxKCJF WEVDVVRFIikpCiAJCUNPTVBMRVRFX1dJVEhfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfcHJlcGFy ZWRfc3RhdGVtZW50cyk7CkBAIC0zMDAyLDE0ICszMDMzLDE0IEBAIHBzcWxfY29tcGxldGlvbihj b25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJICogQ29tcGxldGUgRVhQTEFJ TiBbQU5BTFlaRV0gW1ZFUkJPU0VdIHdpdGggbGlzdCBvZiBFWFBMQUlOLWFibGUgY29tbWFuZHMK IAkgKi8KIAllbHNlIGlmIChNYXRjaGVzMSgiRVhQTEFJTiIpKQotCQlDT01QTEVURV9XSVRIX0xJ U1Q3KCJTRUxFQ1QiLCAiSU5TRVJUIiwgIkRFTEVURSIsICJVUERBVEUiLCAiREVDTEFSRSIsCi0J CQkJCQkJIkFOQUxZWkUiLCAiVkVSQk9TRSIpOworCQlDT01QTEVURV9XSVRIX0xJU1Q4KCJTRUxF Q1QiLCAiSU5TRVJUIiwgIkRFTEVURSIsICJVUERBVEUiLCAiREVDTEFSRSIsCisJCQkJCQkJIkFO QUxZWkUiLCAiVkVSQk9TRSIsICJMRVQiKTsKIAllbHNlIGlmIChNYXRjaGVzMigiRVhQTEFJTiIs ICJBTkFMWVpFIikpCi0JCUNPTVBMRVRFX1dJVEhfTElTVDYoIlNFTEVDVCIsICJJTlNFUlQiLCAi REVMRVRFIiwgIlVQREFURSIsICJERUNMQVJFIiwKLQkJCQkJCQkiVkVSQk9TRSIpOworCQlDT01Q TEVURV9XSVRIX0xJU1Q3KCJTRUxFQ1QiLCAiSU5TRVJUIiwgIkRFTEVURSIsICJVUERBVEUiLCAi REVDTEFSRSIsCisJCQkJCQkJIlZFUkJPU0UiLCAiTEVUIik7CiAJZWxzZSBpZiAoTWF0Y2hlczIo IkVYUExBSU4iLCAiVkVSQk9TRSIpIHx8CiAJCQkgTWF0Y2hlczMoIkVYUExBSU4iLCAiQU5BTFla RSIsICJWRVJCT1NFIikpCi0JCUNPTVBMRVRFX1dJVEhfTElTVDUoIlNFTEVDVCIsICJJTlNFUlQi LCAiREVMRVRFIiwgIlVQREFURSIsICJERUNMQVJFIik7CisJCUNPTVBMRVRFX1dJVEhfTElTVDYo IlNFTEVDVCIsICJJTlNFUlQiLCAiREVMRVRFIiwgIlVQREFURSIsICJERUNMQVJFIiwgIkxFVCIp OwogCiAvKiBGRVRDSCAmJiBNT1ZFICovCiAJLyogQ29tcGxldGUgRkVUQ0ggd2l0aCBvbmUgb2Yg Rk9SV0FSRCwgQkFDS1dBUkQsIFJFTEFUSVZFICovCkBAIC0zMTE4LDYgKzMxNDksNyBAQCBwc3Fs X2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCQkJCQkJ CQkJICAgIiBVTklPTiBTRUxFQ1QgJ0FMTCBST1VUSU5FUyBJTiBTQ0hFTUEnIgogCQkJCQkJCQkJ ICAgIiBVTklPTiBTRUxFQ1QgJ0FMTCBTRVFVRU5DRVMgSU4gU0NIRU1BJyIKIAkJCQkJCQkJCSAg ICIgVU5JT04gU0VMRUNUICdBTEwgVEFCTEVTIElOIFNDSEVNQSciCisJCQkJCQkJCQkgICAiIFVO SU9OIFNFTEVDVCAnQUxMIFZBUklBQkxFUyBJTiBTQ0hFTUEnIgogCQkJCQkJCQkJICAgIiBVTklP TiBTRUxFQ1QgJ0RBVEFCQVNFJyIKIAkJCQkJCQkJCSAgICIgVU5JT04gU0VMRUNUICdET01BSU4n IgogCQkJCQkJCQkJICAgIiBVTklPTiBTRUxFQ1QgJ0ZPUkVJR04gREFUQSBXUkFQUEVSJyIKQEAg LTMxMzEsMTQgKzMxNjMsMTYgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGlu dCBzdGFydCwgaW50IGVuZCkKIAkJCQkJCQkJCSAgICIgVU5JT04gU0VMRUNUICdTRVFVRU5DRSci CiAJCQkJCQkJCQkgICAiIFVOSU9OIFNFTEVDVCAnVEFCTEUnIgogCQkJCQkJCQkJICAgIiBVTklP TiBTRUxFQ1QgJ1RBQkxFU1BBQ0UnIgotCQkJCQkJCQkJICAgIiBVTklPTiBTRUxFQ1QgJ1RZUEUn Iik7CisJCQkJCQkJCQkgICAiIFVOSU9OIFNFTEVDVCAnVFlQRSciCisJCQkJCQkJCQkgICAiIFVO SU9OIFNFTEVDVCAnVkFSSUFCTEUnIik7CiAJfQogCWVsc2UgaWYgKFRhaWxNYXRjaGVzNCgiR1JB TlR8UkVWT0tFIiwgTWF0Y2hBbnksICJPTiIsICJBTEwiKSkKLQkJQ09NUExFVEVfV0lUSF9MSVNU NSgiRlVOQ1RJT05TIElOIFNDSEVNQSIsCisJCUNPTVBMRVRFX1dJVEhfTElTVDYoIkZVTkNUSU9O UyBJTiBTQ0hFTUEiLAogCQkJCQkJCSJQUk9DRURVUkVTIElOIFNDSEVNQSIsCiAJCQkJCQkJIlJP VVRJTkVTIElOIFNDSEVNQSIsCiAJCQkJCQkJIlNFUVVFTkNFUyBJTiBTQ0hFTUEiLAotCQkJCQkJ CSJUQUJMRVMgSU4gU0NIRU1BIik7CisJCQkJCQkJIlRBQkxFUyBJTiBTQ0hFTUEiLAorCQkJCQkJ CSJWQVJJQUJMRVMgSU4gU0NIRU1BIik7CiAJZWxzZSBpZiAoVGFpbE1hdGNoZXM0KCJHUkFOVHxS RVZPS0UiLCBNYXRjaEFueSwgIk9OIiwgIkZPUkVJR04iKSkKIAkJQ09NUExFVEVfV0lUSF9MSVNU MigiREFUQSBXUkFQUEVSIiwgIlNFUlZFUiIpOwogCkBAIC0zMTcyLDYgKzMyMDYsOCBAQCBwc3Fs X2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCQkJQ09N UExFVEVfV0lUSF9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl90YWJsZXNwYWNlcyk7CiAJCWVsc2Ug aWYgKFRhaWxNYXRjaGVzMSgiVFlQRSIpKQogCQkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlko UXVlcnlfZm9yX2xpc3Rfb2ZfZGF0YXR5cGVzLCBOVUxMKTsKKwkJZWxzZSBpZiAoVGFpbE1hdGNo ZXMxKCJWQVJJQUJMRSIpKQorCQkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9y X2xpc3Rfb2ZfdmFyaWFibGVzLCBOVUxMKTsKIAkJZWxzZSBpZiAoVGFpbE1hdGNoZXM0KCJHUkFO VCIsIE1hdGNoQW55LCBNYXRjaEFueSwgTWF0Y2hBbnkpKQogCQkJQ09NUExFVEVfV0lUSF9DT05T VCgiVE8iKTsKIAkJZWxzZQpAQCAtMzMyNCw3ICszMzYwLDcgQEAgcHNxbF9jb21wbGV0aW9uKGNv bnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAogLyogUFJFUEFSRSB4eCBBUyAq LwogCWVsc2UgaWYgKE1hdGNoZXMzKCJQUkVQQVJFIiwgTWF0Y2hBbnksICJBUyIpKQotCQlDT01Q TEVURV9XSVRIX0xJU1Q0KCJTRUxFQ1QiLCAiVVBEQVRFIiwgIklOU0VSVCIsICJERUxFVEUgRlJP TSIpOworCQlDT01QTEVURV9XSVRIX0xJU1Q1KCJTRUxFQ1QiLCAiVVBEQVRFIiwgIklOU0VSVCIs ICJERUxFVEUgRlJPTSIsICJMRVQiKTsKIAogLyoKICAqIFBSRVBBUkUgVFJBTlNBQ1RJT04gaXMg bWlzc2luZyBvbiBwdXJwb3NlLiBJdCdzIGludGVuZGVkIGZvciB0cmFuc2FjdGlvbgpAQCAtMzU0 Nyw2ICszNTgzLDE0IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3Rh cnQsIGludCBlbmQpCiAJZWxzZSBpZiAoVGFpbE1hdGNoZXM0KCJVUERBVEUiLCBNYXRjaEFueSwg IlNFVCIsIE1hdGNoQW55KSkKIAkJQ09NUExFVEVfV0lUSF9DT05TVCgiPSIpOwogCisvKiBMRVQg LS0tIGNhbiBiZSBpbnNpZGUgRVhQTEFJTiwgUFJFUEFSRSBldGMgKi8KKwkvKiBJZiBwcmV2LiB3 b3JkIGlzIExFVCBzdWdnZXN0IGEgbGlzdCBvZiB2YXJpYWJsZXMgKi8KKwllbHNlIGlmIChUYWls TWF0Y2hlczEoIkxFVCIpKQorCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9mb3Jf bGlzdF9vZl92YXJpYWJsZXMsIE5VTEwpOworCS8qIENvbXBsZXRlIExFVCA8dmFyaWFibGU+IHdp dGggIj0iICovCisJZWxzZSBpZiAoVGFpbE1hdGNoZXMyKCJMRVQiLCBNYXRjaEFueSkpCisJCUNP TVBMRVRFX1dJVEhfQ09OU1QoIj0iKTsKKwogLyogVVNFUiBNQVBQSU5HICovCiAJZWxzZSBpZiAo TWF0Y2hlczMoIkFMVEVSfENSRUFURXxEUk9QIiwgIlVTRVIiLCAiTUFQUElORyIpKQogCQlDT01Q TEVURV9XSVRIX0NPTlNUKCJGT1IiKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cv ZGVwZW5kZW5jeS5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmgKaW5kZXggNDZj MjcxYTQ2Yy4uM2UzOGEwNWU1NSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBl bmRlbmN5LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmgKQEAgLTE4MCw3 ICsxODAsOCBAQCB0eXBlZGVmIGVudW0gT2JqZWN0Q2xhc3MKIAlPQ0xBU1NfUFVCTElDQVRJT04s CQkJLyogcGdfcHVibGljYXRpb24gKi8KIAlPQ0xBU1NfUFVCTElDQVRJT05fUkVMLAkJLyogcGdf cHVibGljYXRpb25fcmVsICovCiAJT0NMQVNTX1NVQlNDUklQVElPTiwJCS8qIHBnX3N1YnNjcmlw dGlvbiAqLwotCU9DTEFTU19UUkFOU0ZPUk0JCQkvKiBwZ190cmFuc2Zvcm0gKi8KKwlPQ0xBU1Nf VFJBTlNGT1JNLAkJCS8qIHBnX3RyYW5zZm9ybSAqLworCU9DTEFTU19WQVJJQUJMRQkJCQkvKiBw Z192YXJpYWJsZSAqLwogfSBPYmplY3RDbGFzczsKIAogI2RlZmluZSBMQVNUX09DTEFTUwkJT0NM QVNTX1RSQU5TRk9STQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleGluZy5o IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleGluZy5oCmluZGV4IDI0OTE1ODI0Y2EuLmRhZTgw YzIwYTggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXhpbmcuaAorKysgYi9z cmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4aW5nLmgKQEAgLTM2MCw0ICszNjAsMTAgQEAgREVDTEFS RV9VTklRVUVfSU5ERVgocGdfc3Vic2NyaXB0aW9uX3N1Ym5hbWVfaW5kZXgsIDYxMTUsIG9uIHBn X3N1YnNjcmlwdGlvbiB1c2kKIERFQ0xBUkVfVU5JUVVFX0lOREVYKHBnX3N1YnNjcmlwdGlvbl9y ZWxfc3JyZWxpZF9zcnN1YmlkX2luZGV4LCA2MTE3LCBvbiBwZ19zdWJzY3JpcHRpb25fcmVsIHVz aW5nIGJ0cmVlKHNycmVsaWQgb2lkX29wcywgc3JzdWJpZCBvaWRfb3BzKSk7CiAjZGVmaW5lIFN1 YnNjcmlwdGlvblJlbFNycmVsaWRTcnN1YmlkSW5kZXhJZCA2MTE3CiAKK0RFQ0xBUkVfVU5JUVVF X0lOREVYKHBnX3ZhcmlhYmxlX29pZF9pbmRleCwgNDI4OCwgb24gcGdfdmFyaWFibGUgdXNpbmcg YnRyZWUob2lkIG9pZF9vcHMpKTsKKyNkZWZpbmUgVmFyaWFibGVPYmplY3RJbmRleElkIDQyODgK KworREVDTEFSRV9VTklRVUVfSU5ERVgocGdfdmFyaWFibGVfdmFybmFtZV9uc3BfaW5kZXgsIDQy ODksIG9uIHBnX3ZhcmlhYmxlIHVzaW5nIGJ0cmVlKHZhcm5hbWUgbmFtZV9vcHMsIHZhcm5hbWVz cGFjZSBvaWRfb3BzKSk7CisjZGVmaW5lIFZhcmlhYmxlTmFtZU5zcEluZGV4SWQgIDQyODkKKwog I2VuZGlmCQkJCQkJCS8qIElOREVYSU5HX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Nh dGFsb2cvbmFtZXNwYWNlLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL25hbWVzcGFjZS5oCmluZGV4 IDc5OTFkZTVlMjEuLjc1MDY4ZDdlOTIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cv bmFtZXNwYWNlLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9uYW1lc3BhY2UuaApAQCAtNzUs MTAgKzc1LDEzIEBAIGV4dGVybiBPaWQgUmFuZ2VWYXJHZXRBbmRDaGVja0NyZWF0aW9uTmFtZXNw YWNlKFJhbmdlVmFyICpuZXdSZWxhdGlvbiwKIGV4dGVybiB2b2lkIFJhbmdlVmFyQWRqdXN0UmVs YXRpb25QZXJzaXN0ZW5jZShSYW5nZVZhciAqbmV3UmVsYXRpb24sIE9pZCBuc3BpZCk7CiBleHRl cm4gT2lkCVJlbG5hbWVHZXRSZWxpZChjb25zdCBjaGFyICpyZWxuYW1lKTsKIGV4dGVybiBib29s IFJlbGF0aW9uSXNWaXNpYmxlKE9pZCByZWxpZCk7CitleHRlcm4gYm9vbCBWYXJpYWJsZUlzVmlz aWJsZShPaWQgcmVsaWQpOwogCiBleHRlcm4gT2lkCVR5cGVuYW1lR2V0VHlwaWQoY29uc3QgY2hh ciAqdHlwbmFtZSk7CiBleHRlcm4gYm9vbCBUeXBlSXNWaXNpYmxlKE9pZCB0eXBpZCk7CiAKK2V4 dGVybiBib29sIFZhcmlhYmxlSXNWaXNpYmxlKE9pZCB2YXJpZCk7CisKIGV4dGVybiBGdW5jQ2Fu ZGlkYXRlTGlzdCBGdW5jbmFtZUdldENhbmRpZGF0ZXMoTGlzdCAqbmFtZXMsCiAJCQkJCSAgaW50 IG5hcmdzLCBMaXN0ICphcmduYW1lcywKIAkJCQkJICBib29sIGV4cGFuZF92YXJpYWRpYywKQEAg LTE0NSw2ICsxNDgsMTAgQEAgZXh0ZXJuIHZvaWQgU2V0VGVtcE5hbWVzcGFjZVN0YXRlKE9pZCB0 ZW1wTmFtZXNwYWNlSWQsCiAJCQkJCSAgT2lkIHRlbXBUb2FzdE5hbWVzcGFjZUlkKTsKIGV4dGVy biB2b2lkIFJlc2V0VGVtcFRhYmxlTmFtZXNwYWNlKHZvaWQpOwogCitleHRlcm4gTGlzdCAqTmFt ZXNGcm9tTGlzdChMaXN0ICpuYW1lcyk7CitleHRlcm4gT2lkIGxvb2t1cF92YXJpYWJsZShjb25z dCBjaGFyICpuc3BuYW1lLCBjb25zdCBjaGFyICp2YXJuYW1lLCBib29sIG1pc3Npbmdfb2spOwor ZXh0ZXJuIE9pZCBpZGVudGlmeV92YXJpYWJsZShMaXN0ICpuYW1lcywgY2hhciAqKmF0dHJuYW1l LCBib29sICpub3RfdW5pcSk7CisKIGV4dGVybiBPdmVycmlkZVNlYXJjaFBhdGggKkdldE92ZXJy aWRlU2VhcmNoUGF0aChNZW1vcnlDb250ZXh0IGNvbnRleHQpOwogZXh0ZXJuIE92ZXJyaWRlU2Vh cmNoUGF0aCAqQ29weU92ZXJyaWRlU2VhcmNoUGF0aChPdmVycmlkZVNlYXJjaFBhdGggKnBhdGgp OwogZXh0ZXJuIGJvb2wgT3ZlcnJpZGVTZWFyY2hQYXRoTWF0Y2hlc0N1cnJlbnQoT3ZlcnJpZGVT ZWFyY2hQYXRoICpwYXRoKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfZGVm YXVsdF9hY2wuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfZGVmYXVsdF9hY2wuaAppbmRleCBk MDQxMGY1NTg2Li41NmRlZWYxYTQ1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X2RlZmF1bHRfYWNsLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19kZWZhdWx0X2FjbC5o CkBAIC01Nyw2ICs1Nyw3IEBAIHR5cGVkZWYgRm9ybURhdGFfcGdfZGVmYXVsdF9hY2wgKkZvcm1f cGdfZGVmYXVsdF9hY2w7CiAjZGVmaW5lIERFRkFDTE9CSl9GVU5DVElPTgkJJ2YnIC8qIGZ1bmN0 aW9uICovCiAjZGVmaW5lIERFRkFDTE9CSl9UWVBFCQkJJ1QnIC8qIHR5cGUgKi8KICNkZWZpbmUg REVGQUNMT0JKX05BTUVTUEFDRQkJJ24nIC8qIG5hbWVzcGFjZSAqLworI2RlZmluZSBERUZBQ0xP QkpfVkFSSUFCTEUJCSdWJyAvKiB2YXJpYWJsZSAqLwogCiAjZW5kaWYJCQkJCQkJLyogRVhQT1NF X1RPX0NMSUVOVF9DT0RFICovCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf cHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IGExNDY1MTAx MGYuLjYxY2JlNjU4MDUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5k YXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtNTk2MSw2ICs1OTYx LDkgQEAKICAgcHJvbmFtZSA9PiAncGdfY29sbGF0aW9uX2lzX3Zpc2libGUnLCBwcm9jb3N0ID0+ ICcxMCcsIHByb3ZvbGF0aWxlID0+ICdzJywKICAgcHJvcmV0dHlwZSA9PiAnYm9vbCcsIHByb2Fy Z3R5cGVzID0+ICdvaWQnLAogICBwcm9zcmMgPT4gJ3BnX2NvbGxhdGlvbl9pc192aXNpYmxlJyB9 LAoreyBvaWQgPT4gJzQxODcnLCBkZXNjciA9PiAnaXMgc2NoZW1hIHZhcmlhYmxlIHZpc2libGUg aW4gc2VhcmNoIHBhdGg/JywKKyAgcHJvbmFtZSA9PiAncGdfdmFyaWFibGVfaXNfdmlzaWJsZScs IHByb2Nvc3QgPT4gJzEwJywgcHJvdm9sYXRpbGUgPT4gJ3MnLAorICBwcm9yZXR0eXBlID0+ICdi b29sJywgcHJvYXJndHlwZXMgPT4gJ29pZCcsIHByb3NyYyA9PiAncGdfdmFyaWFibGVfaXNfdmlz aWJsZScgfSwKIAogeyBvaWQgPT4gJzI4NTQnLCBkZXNjciA9PiAnZ2V0IE9JRCBvZiBjdXJyZW50 IHNlc3Npb25cJ3MgdGVtcCBzY2hlbWEsIGlmIGFueScsCiAgIHByb25hbWUgPT4gJ3BnX215X3Rl bXBfc2NoZW1hJywgcHJvdm9sYXRpbGUgPT4gJ3MnLCBwcm9wYXJhbGxlbCA9PiAncicsCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3ZhcmlhYmxlLmggYi9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3ZhcmlhYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MC4uMzRmNGMzNDIwMgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf dmFyaWFibGUuaApAQCAtMCwwICsxLDg1IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBw Z192YXJpYWJsZS5oCisgKgkgIGRlZmluaXRpb24gb2Ygc2NoZW1hIHZhcmlhYmxlcyBzeXN0ZW0g Y2F0YWxvZyAocGdfdmFyaWFibGVzKQorICoKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMp IDE5OTYtMjAxOCwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRp b25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxp Zm9ybmlhCisgKgorICogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ192YXJpYWJsZS5oCisgKgorICog Tk9URVMKKyAqCSAgVGhlIENhdGFsb2cucG0gbW9kdWxlIHJlYWRzIHRoaXMgZmlsZSBhbmQgZGVy aXZlcyBzY2hlbWEKKyAqCSAgaW5mb3JtYXRpb24uCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg Ki8KKyNpZm5kZWYgUEdfVkFSSUFCTEVfSAorI2RlZmluZSBQR19WQVJJQUJMRV9ICisKKyNpbmNs dWRlICJjYXRhbG9nL2dlbmJraS5oIgorI2luY2x1ZGUgImNhdGFsb2cvb2JqZWN0YWRkcmVzcy5o IgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdmFyaWFibGVfZC5oIgorI2luY2x1ZGUgInV0aWxzL2Fj bC5oIgorCisvKiAtLS0tLS0tLS0tLS0tLS0tCisgKgkJcGdfdmFyaWFibGUgZGVmaW5pdGlvbi4g IGNwcCB0dXJucyB0aGlzIGludG8KKyAqCQl0eXBlZGVmIHN0cnVjdCBGb3JtRGF0YV9wZ192YXJp YWJsZQorICogLS0tLS0tLS0tLS0tLS0tLQorICovCitDQVRBTE9HKHBnX3ZhcmlhYmxlLDQyODcs VmFyaWFibGVSZWxhdGlvbklkKQoreworCU5hbWVEYXRhCXZhcm5hbWU7CQkvKiB2YXJpYWJsZSBu YW1lICovCisJT2lkCQkJdmFybmFtZXNwYWNlOwkvKiBPSUQgb2YgbmFtZXNwYWNlIGNvbnRhaW5p bmcgdmFyaWFibGUgY2xhc3MgKi8KKwlPaWQJCQl2YXJ0eXBlOwkJLyogT0lEIG9mIGVudHJ5IGlu IHBnX3R5cGUgZm9yIHZhcmlhYmxlJ3MgdHlwZSAqLworCWludDMyCQl2YXJ0eXBtb2Q7CQkJLyog dHlwbW9kZSBmb3IgdmFyaWFibGUncyB0eXBlICovCisJT2lkCQkJdmFyb3duZXI7CQkvKiBjbGFz cyBvd25lciAqLworCisjaWZkZWYgQ0FUQUxPR19WQVJMRU4JCQkvKiB2YXJpYWJsZS1sZW5ndGgg ZmllbGRzIHN0YXJ0IGhlcmUgKi8KKworCS8qIGxpc3Qgb2YgZXhwcmVzc2lvbiB0cmVlcyBmb3Ig dmFyaWFibGUgZGVmYXVsdCAoTlVMTCBpZiBub25lKSAqLworCXBnX25vZGVfdHJlZSB2YXJkZWZl eHByIEJLSV9ERUZBVUxUKF9udWxsXyk7CisKKwlhY2xpdGVtCQl2YXJhY2xbMV0gQktJX0RFRkFV TFQoX251bGxfKTsJCS8qIGFjY2VzcyBwZXJtaXNzaW9ucyAqLworCisjZW5kaWYKK30gRm9ybURh dGFfcGdfdmFyaWFibGU7CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0KKyAqCQlGb3JtX3BnX3Zhcmlh YmxlIGNvcnJlc3BvbmRzIHRvIGEgcG9pbnRlciB0byBhIHR1cGxlIHdpdGgKKyAqCQl0aGUgZm9y bWF0IG9mIHBnX3ZhcmlhYmxlIHJlbGF0aW9uLgorICogLS0tLS0tLS0tLS0tLS0tLQorICovCit0 eXBlZGVmIEZvcm1EYXRhX3BnX3ZhcmlhYmxlICpGb3JtX3BnX3ZhcmlhYmxlOworCit0eXBlZGVm IHN0cnVjdCBWYXJpYWJsZQoreworCU9pZAkJb2lkOworCWNoYXIgICAqbmFtZTsKKwlPaWQJCW5h bWVzcGFjZTsKKwlPaWQJCXR5cGlkOworCWludDMyCXR5cG1vZDsKKwlPaWQJCW93bmVyOworCU5v ZGUgICAqZGVmZXhwcjsKKwlBY2wJICAgKmFjbDsKK30gVmFyaWFibGU7CisKKy8qIHJldHVybnMg ZmllbGRzIGZyb20gcGdfdmFyaWFibGUgdGFibGUgKi8KK2V4dGVybiBjaGFyICpnZXRfc2NoZW1h X3ZhcmlhYmxlX25hbWUoT2lkIHZhcmlkKTsKK2V4dGVybiB2b2lkIGdldF9zY2hlbWFfdmFyaWFi bGVfdHlwZV90eXBtb2QoT2lkIHZhcmlkLCBPaWQgKnR5cGlkLCBpbnQzMiAqdHlwbW9kKTsKKwor LyogcmV0dXJucyBuYW1lIG9mIHZhcmlhYmxlIGJhc2VkIG9uIGN1cnJlbnQgc2VhcmNoIHBhdGgg Ki8KK2V4dGVybiBjaGFyICpzY2hlbWFfdmFyaWFibGVfZ2V0X25hbWUoT2lkIHZhcmlkKTsKKwor ZXh0ZXJuIFZhcmlhYmxlICpHZXRWYXJpYWJsZShPaWQgdmFyaWQsIGJvb2wgbWlzc2luZ19vayk7 CitleHRlcm4gT2JqZWN0QWRkcmVzcyBWYXJpYWJsZUNyZWF0ZShjb25zdCBjaGFyICp2YXJOYW1l LAorCQkJCQkJCQkJICAgT2lkIHZhck5hbWVzcGFjZSwKKwkJCQkJCQkJCSAgIE9pZCB2YXJUeXBl LAorCQkJCQkJCQkJICAgaW50MzIgdmFyVHlwbW9kLAorCQkJCQkJCQkJICAgT2lkIHZhck93bmVy LAorCQkJCQkJCQkJICAgTm9kZSAqdmFyRGVmZXhwciwKKwkJCQkJCQkJCSAgIGJvb2wgaWZfbm90 X2V4aXN0cyk7CisKKworI2VuZGlmCQkJCQkJCS8qIFBHX1ZBUklBQkxFX0ggKi8KZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3NjaGVtYXZhcmlhYmxlLmggYi9zcmMvaW5jbHVkZS9j b21tYW5kcy9zY2hlbWF2YXJpYWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAuLmRkMzIzOWIyMzYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5k cy9zY2hlbWF2YXJpYWJsZS5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICoKKyAqIHNjaGVtYXZhcmlhYmxlLmgKKyAqCSAgcHJvdG90eXBlcyBmb3Igc2NoZW1hdmFyaWFi bGUuYy4KKyAqCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMTgsIFBvc3Rn cmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMp IDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqIHNy Yy9pbmNsdWRlL2NvbW1hbmRzL3NjaGVtYXZhcmlhYmxlLmgKKyAqCisgKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAqLworCisjaWZuZGVmIFNDSEVNQVZBUklBQkxFX0gKKyNkZWZpbmUgU0NIRU1BVkFSSUFC TEVfSAorCisjaW5jbHVkZSAiY2F0YWxvZy9vYmplY3RhZGRyZXNzLmgiCisjaW5jbHVkZSAiY2F0 YWxvZy9wZ192YXJpYWJsZS5oIgorI2luY2x1ZGUgIm5vZGVzL3BhcmFtcy5oIgorI2luY2x1ZGUg Im5vZGVzL3BhcnNlbm9kZXMuaCIKKyNpbmNsdWRlICJub2Rlcy9wbGFubm9kZXMuaCIKKyNpbmNs dWRlICJ1dGlscy9xdWVyeWVudmlyb25tZW50LmgiCisKK2V4dGVybiBjaGFyICpWYXJpYWJsZUdl dE5hbWUoVmFyaWFibGUgKnZhcik7CisKK2V4dGVybiB2b2lkIFJlc2V0U2NoZW1hVmFyaWFibGVD YWNoZSh2b2lkKTsKKworZXh0ZXJuIHZvaWQgUmVtb3ZlVmFyaWFibGVCeUlkKE9pZCB2YXJpZCk7 CitleHRlcm4gT2JqZWN0QWRkcmVzcyBEZWZpbmVTY2hlbWFWYXJpYWJsZShQYXJzZVN0YXRlICpw c3RhdGUsIENyZWF0ZVNjaGVtYVZhclN0bXQgKnN0bXQpOworCitleHRlcm4gRGF0dW0gR2V0U2No ZW1hVmFyaWFibGUoT2lkIHZhcmlkLCBib29sICppc051bGwsIE9pZCBleHBlY3RlZF90eXBpZCk7 CitleHRlcm4gdm9pZCBTZXRTY2hlbWFWYXJpYWJsZShPaWQgdmFyaWQsIERhdHVtIHZhbHVlLCBi b29sIGlzTnVsbCwgT2lkIHR5cGlkLCBpbnQzMiB0eXBtb2QpOworCitleHRlcm4gdm9pZCBkb0xl dFN0bXQoUGxhbm5lZFN0bXQgKnBzdG10LCBQYXJhbUxpc3RJbmZvIHBhcmFtcywgUXVlcnlFbnZp cm9ubWVudCAqcXVlcnlFbnYsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nKTsKKworI2VuZGlmCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oIGIvc3JjL2luY2x1ZGUv ZXhlY3V0b3IvZXhlY0V4cHIuaAppbmRleCBmN2IxZjc3NjE2Li5jY2EzMGYyNzViIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oCisrKyBiL3NyYy9pbmNsdWRlL2V4 ZWN1dG9yL2V4ZWNFeHByLmgKQEAgLTEzOCw2ICsxMzgsNyBAQCB0eXBlZGVmIGVudW0gRXhwckV2 YWxPcAogCUVFT1BfUEFSQU1fRVhFQywKIAlFRU9QX1BBUkFNX0VYVEVSTiwKIAlFRU9QX1BBUkFN X0NBTExCQUNLLAorCUVFT1BfUEFSQU1fVkFSSUFCTEUsCiAKIAkvKiByZXR1cm4gQ2FzZVRlc3RF eHByIHZhbHVlICovCiAJRUVPUF9DQVNFX1RFU1RWQUwsCkBAIC0zNDQsMTEgKzM0NSwxMSBAQCB0 eXBlZGVmIHN0cnVjdCBFeHByRXZhbFN0ZXAKIAkJCVR1cGxlRGVzYwlhcmdkZXNjOwogCQl9CQkJ bnVsbHRlc3Rfcm93OwogCi0JCS8qIGZvciBFRU9QX1BBUkFNX0VYRUMvRVhURVJOICovCisJCS8q IGZvciBFRU9QX1BBUkFNX0VYRUMvRVhURVJOL1ZBUklBQkxFICovCiAJCXN0cnVjdAogCQl7Ci0J CQlpbnQJCQlwYXJhbWlkOwkvKiBudW1lcmljIElEIGZvciBwYXJhbWV0ZXIgKi8KLQkJCU9pZAkJ CXBhcmFtdHlwZTsJLyogT0lEIG9mIHBhcmFtZXRlcidzIGRhdGF0eXBlICovCisJCQlpbnQJCQlw YXJhbWlkOwkJLyogbnVtZXJpYyBJRCBmb3IgcGFyYW1ldGVyICovCisJCQlPaWQJCQlwYXJhbXR5 cGU7CQkvKiBPSUQgb2YgcGFyYW1ldGVyJ3MgZGF0YXR5cGUgKi8KIAkJfQkJCXBhcmFtOwogCiAJ CS8qIGZvciBFRU9QX1BBUkFNX0NBTExCQUNLICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9l eGVjdXRvci9zdmFyaWFibGVSZWNlaXZlci5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivc3Zhcmlh YmxlUmVjZWl2ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi44Yzgx MTc3MDFmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivc3ZhcmlhYmxl UmVjZWl2ZXIuaApAQCAtMCwwICsxLDI1IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBz dmFyaWFibGVSZWNlaXZlci5oCisgKgkgIHByb3RvdHlwZXMgZm9yIHN2YXJpYWJsZVJlY2VpdmVy LmMKKyAqCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMTgsIFBvc3RncmVT UUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5 OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqIHNyYy9p bmNsdWRlL2V4ZWN1dG9yL3N2YXJpYWJsZVJlY2VpdmVyLmgKKyAqCisgKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAqLworCisjaWZuZGVmIFNWQVJJQUJMRV9SRUNFSVZFUl9ICisjZGVmaW5lIFNWQVJJQUJM RV9SRUNFSVZFUl9ICisKKyNpbmNsdWRlICJ0Y29wL2Rlc3QuaCIKKworCitleHRlcm4gRGVzdFJl Y2VpdmVyICpDcmVhdGVWYXJpYWJsZURlc3RSZWNlaXZlcih2b2lkKTsKKworZXh0ZXJuIHZvaWQg U2V0VmFyaWFibGVEZXN0UmVjZWl2ZXJQYXJhbXMoRGVzdFJlY2VpdmVyICpzZWxmLCBPaWQgdmFy aWQpOworCisjZW5kaWYJCQkJCQkJLyogU1ZBUklBQkxFX1JFQ0VJVkVSX0ggKi8KZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhl Y25vZGVzLmgKaW5kZXggMDE4ZjUwYmJiNy4uMDhiNGIyYzJmMiAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVz LmgKQEAgLTU2NCw2ICs1NjQsOCBAQCB0eXBlZGVmIHN0cnVjdCBFU3RhdGUKIAkvKiBUaGUgcGVy LXF1ZXJ5IHNoYXJlZCBtZW1vcnkgYXJlYSB0byB1c2UgZm9yIHBhcmFsbGVsIGV4ZWN1dGlvbi4g Ki8KIAlzdHJ1Y3QgZHNhX2FyZWEgKmVzX3F1ZXJ5X2RzYTsKIAorCWludAkJCWVzX3Jlc3VsdF92 YXJpYWJsZTsJLyogT2lkIG9mIHRhcmdldCB2YXJpYWJsZSAqLworCiAJLyoKIAkgKiBKSVQgaW5m b3JtYXRpb24uIGVzX2ppdF9mbGFncyBpbmRpY2F0ZXMgd2hldGhlciBKSVQgc2hvdWxkIGJlIHBl cmZvcm1lZAogCSAqIGFuZCB3aXRoIHdoaWNoIG9wdGlvbnMuICBlc19qaXQgaXMgY3JlYXRlZCBv bi1kZW1hbmQgd2hlbiBKSVRpbmcgaXMKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL25v ZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oCmluZGV4IDY5N2QzZDdhNWYuLmRkN2Zk OGVkNDIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL25vZGVzLmgKKysrIGIvc3JjL2lu Y2x1ZGUvbm9kZXMvbm9kZXMuaApAQCAtMzQ4LDYgKzM0OCw3IEBAIHR5cGVkZWYgZW51bSBOb2Rl VGFnCiAJVF9DcmVhdGVUYWJsZUFzU3RtdCwKIAlUX0NyZWF0ZVNlcVN0bXQsCiAJVF9BbHRlclNl cVN0bXQsCisJVF9DcmVhdGVTY2hlbWFWYXJTdG10LAogCVRfVmFyaWFibGVTZXRTdG10LAogCVRf VmFyaWFibGVTaG93U3RtdCwKIAlUX0Rpc2NhcmRTdG10LApAQCAtNDE5LDYgKzQyMCw3IEBAIHR5 cGVkZWYgZW51bSBOb2RlVGFnCiAJVF9DcmVhdGVTdGF0c1N0bXQsCiAJVF9BbHRlckNvbGxhdGlv blN0bXQsCiAJVF9DYWxsU3RtdCwKKwlUX0xldFN0bXQsCiAKIAkvKgogCSAqIFRBR1MgRk9SIFBB UlNFIFRSRUUgTk9ERVMgKHBhcnNlbm9kZXMuaCkKQEAgLTY2Myw2ICs2NjUsNyBAQCB0eXBlZGVm IGVudW0gQ21kVHlwZQogCUNNRF9ERUxFVEUsCiAJQ01EX1VUSUxJVFksCQkJCS8qIGNtZHMgbGlr ZSBjcmVhdGUsIGRlc3Ryb3ksIGNvcHksIHZhY3V1bSwKIAkJCQkJCQkJICogZXRjLiAqLworCUNN RF9QTEFOX1VUSUxJVFksCQkJLyogb25seSBsZXQgc3RtdCBub3csIHJlcXVpcmVzIHBsYW5uaW5n ICovCiAJQ01EX05PVEhJTkcJCQkJCS8qIGR1bW15IGNvbW1hbmQgZm9yIGluc3RlYWQgbm90aGlu ZyBydWxlcwogCQkJCQkJCQkgKiB3aXRoIHF1YWwgKi8KIH0gQ21kVHlwZTsKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNl bm9kZXMuaAppbmRleCAwN2FiMWEzZGRlLi4yZDRhM2NiMWI2IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rl cy5oCkBAIC04NCw3ICs4NCw5IEBAIHR5cGVkZWYgdWludDMyIEFjbE1vZGU7CQkJLyogYSBiaXRt YXNrIG9mIHByaXZpbGVnZSBiaXRzICovCiAjZGVmaW5lIEFDTF9DUkVBVEUJCSgxPDw5KQkvKiBm b3IgbmFtZXNwYWNlcyBhbmQgZGF0YWJhc2VzICovCiAjZGVmaW5lIEFDTF9DUkVBVEVfVEVNUCAo MTw8MTApIC8qIGZvciBkYXRhYmFzZXMgKi8KICNkZWZpbmUgQUNMX0NPTk5FQ1QJCSgxPDwxMSkg LyogZm9yIGRhdGFiYXNlcyAqLwotI2RlZmluZSBOX0FDTF9SSUdIVFMJMTIJCS8qIDEgcGx1cyB0 aGUgbGFzdCAxPDx4ICovCisjZGVmaW5lIEFDTF9SRUFECQkoMTw8MTIpIC8qIGZvciB2YXJpYWJs ZXMgKi8KKyNkZWZpbmUgQUNMX1dSSVRFCQkoMTw8MTMpIC8qIGZvciB2YXJpYWJsZXMgKi8KKyNk ZWZpbmUgTl9BQ0xfUklHSFRTCTE0CQkvKiAxIHBsdXMgdGhlIGxhc3QgMTw8eCAqLwogI2RlZmlu ZSBBQ0xfTk9fUklHSFRTCTAKIC8qIEN1cnJlbnRseSwgU0VMRUNUIC4uLiBGT1IgW0tFWV0gVVBE QVRFL1NIQVJFIHJlcXVpcmVzIFVQREFURSBwcml2aWxlZ2VzICovCiAjZGVmaW5lIEFDTF9TRUxF Q1RfRk9SX1VQREFURQlBQ0xfVVBEQVRFCkBAIC0xMjEsNiArMTIzLDcgQEAgdHlwZWRlZiBzdHJ1 Y3QgUXVlcnkKIAogCWludAkJCXJlc3VsdFJlbGF0aW9uOyAvKiBydGFibGUgaW5kZXggb2YgdGFy Z2V0IHJlbGF0aW9uIGZvcgogCQkJCQkJCQkgKiBJTlNFUlQvVVBEQVRFL0RFTEVURTsgMCBmb3Ig U0VMRUNUICovCisJaW50CQkJcmVzdWx0VmFyaWFibGU7CS8qIE9pZCBvZiB0YXJnZXQgdmFyaWFi bGUgb3IgMCAqLwogCiAJYm9vbAkJaGFzQWdnczsJCS8qIGhhcyBhZ2dyZWdhdGVzIGluIHRsaXN0 IG9yIGhhdmluZ1F1YWwgKi8KIAlib29sCQloYXNXaW5kb3dGdW5jczsgLyogaGFzIHdpbmRvdyBm dW5jdGlvbnMgaW4gdGxpc3QgKi8KQEAgLTE1MDUsNiArMTUwOCwxOCBAQCB0eXBlZGVmIHN0cnVj dCBVcGRhdGVTdG10CiAJV2l0aENsYXVzZSAqd2l0aENsYXVzZTsJCS8qIFdJVEggY2xhdXNlICov CiB9IFVwZGF0ZVN0bXQ7CiAKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCQlMZXQgU3Rh dGVtZW50CisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK3R5cGVkZWYgc3RydWN0IExl dFN0bXQKK3sKKwlOb2RlVGFnCQl0eXBlOworCUxpc3QJICAgKnRhcmdldDsJCQkvKiB0YXJnZXQg dmFyaWFibGUgKi8KKwlOb2RlCSAgICpzZWxlY3RTdG10OwkJLyogc291cmNlIGV4cHJlc3Npb24g Ki8KKwlpbnQJCQlsb2NhdGlvbjsKK30gTGV0U3RtdDsKKwogLyogLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQogICoJCVNlbGVjdCBTdGF0ZW1lbnQKICAqCkBAIC0xNjgyLDYgKzE2OTcsNyBAQCB0eXBl ZGVmIGVudW0gT2JqZWN0VHlwZQogCU9CSkVDVF9UU1RFTVBMQVRFLAogCU9CSkVDVF9UWVBFLAog CU9CSkVDVF9VU0VSX01BUFBJTkcsCisJT0JKRUNUX1ZBUklBQkxFLAogCU9CSkVDVF9WSUVXCiB9 IE9iamVjdFR5cGU7CiAKQEAgLTI0OTcsNiArMjUxMywxOSBAQCB0eXBlZGVmIHN0cnVjdCBBbHRl clNlcVN0bXQKIAlib29sCQltaXNzaW5nX29rOwkJLyogc2tpcCBlcnJvciBpZiBhIHJvbGUgaXMg bWlzc2luZz8gKi8KIH0gQWx0ZXJTZXFTdG10OwogCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgKgkJe0NyZWF0ZXxBbHRlcn0gVkFSSUFCTEUgU3RhdGVtZW50CisgKiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgKi8KK3R5cGVkZWYgc3RydWN0IENyZWF0ZVNjaGVtYVZhclN0bXQKK3sKKwlO b2RlVGFnCQl0eXBlOworCVJhbmdlVmFyICAgKnZhcmlhYmxlOwkJLyogdGhlIHZhcmlhYmxlIHRv IGNyZWF0ZSAqLworCVR5cGVOYW1lICAgKnR5cGVOYW1lOwkJLyogdGhlIHR5cGUgb2YgdmFyaWFi bGUgKi8KKwlOb2RlCSAgICpkZWZleHByOwkJLyogZGVmYXVsdCBleHByZXNzaW9uICovCisJYm9v bAkJaWZfbm90X2V4aXN0czsJLyogZG8gbm90aGluZyBpZiBpdCBhbHJlYWR5IGV4aXN0cyAqLwor fSBDcmVhdGVTY2hlbWFWYXJTdG10OworCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJ Q3JlYXRlIHtBZ2dyZWdhdGV8T3BlcmF0b3J8VHlwZX0gU3RhdGVtZW50CiAgKiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tCkBAIC0zMjM4LDcgKzMyNjcsOCBAQCB0eXBlZGVmIGVudW0gRGlzY2FyZE1v ZGUKIAlESVNDQVJEX0FMTCwKIAlESVNDQVJEX1BMQU5TLAogCURJU0NBUkRfU0VRVUVOQ0VTLAot CURJU0NBUkRfVEVNUAorCURJU0NBUkRfVEVNUCwKKwlESVNDQVJEX1ZBUklBQkxFUwogfSBEaXNj YXJkTW9kZTsKIAogdHlwZWRlZiBzdHJ1Y3QgRGlzY2FyZFN0bXQKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgK aW5kZXggN2MyYWJiZDAzYS4uMjU4OGYxNDU1ZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9k ZXMvcGxhbm5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKQEAgLTQz LDcgKzQzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUGxhbm5lZFN0bXQKIHsKIAlOb2RlVGFnCQl0eXBl OwogCi0JQ21kVHlwZQkJY29tbWFuZFR5cGU7CS8qIHNlbGVjdHxpbnNlcnR8dXBkYXRlfGRlbGV0 ZXx1dGlsaXR5ICovCisJQ21kVHlwZQkJY29tbWFuZFR5cGU7CS8qIHNlbGVjdHxsZXR8aW5zZXJ0 fHVwZGF0ZXxkZWxldGV8dXRpbGl0eSAqLwogCiAJdWludDY0CQlxdWVyeUlkOwkJLyogcXVlcnkg aWRlbnRpZmllciAoY29waWVkIGZyb20gUXVlcnkpICovCiAKQEAgLTgxLDYgKzgxLDkgQEAgdHlw ZWRlZiBzdHJ1Y3QgUGxhbm5lZFN0bXQKIAkgKi8KIAlMaXN0CSAgICpyb290UmVzdWx0UmVsYXRp b25zOwogCisJLyogT2lkIG9mIHRhcmdldCB2YXJpYWJsZSBmb3IgTEVUIGNvbW1hbmQgKi8KKwlP aWQJCQlyZXN1bHRWYXJpYWJsZTsKKwogCUxpc3QJICAgKnN1YnBsYW5zOwkJLyogUGxhbiB0cmVl cyBmb3IgU3ViUGxhbiBleHByZXNzaW9uczsgbm90ZQogCQkJCQkJCQkgKiB0aGF0IHNvbWUgY291 bGQgYmUgTlVMTCAqLwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMu aCBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCmluZGV4IDFiNGIwZDc1YWYuLmIzNjY0 NzE5NDAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCisrKyBiL3Ny Yy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCkBAIC0yMjksMTMgKzIyOSwxNyBAQCB0eXBlZGVm IHN0cnVjdCBDb25zdAogICoJCQkJb2YgdGhlIGBwYXJhbWlkJyBmaWVsZCBjb250YWluIHRoZSBT dWJMaW5rJ3Mgc3ViTGlua0lkLCBhbmQKICAqCQkJCXRoZSBsb3ctb3JkZXIgMTYgYml0cyBjb250 YWluIHRoZSBjb2x1bW4gbnVtYmVyLiAgKFRoaXMgdHlwZQogICoJCQkJb2YgUGFyYW0gaXMgYWxz byBjb252ZXJ0ZWQgdG8gUEFSQU1fRVhFQyBkdXJpbmcgcGxhbm5pbmcuKQorICoKKyAqCQlQQVJB TV9TQ0hFTUFfVkFSSUFCTEU6ICBUaGUgcGFyYW1ldGVyIGlzIGEgYWNjZXNzIHRvIHNjaGVtYSB2 YXJpYWJsZQorICoJCQkJcGFyYW1pZCBob2xkcyB2YXJpZC4KICAqLwogdHlwZWRlZiBlbnVtIFBh cmFtS2luZAogewogCVBBUkFNX0VYVEVSTiwKIAlQQVJBTV9FWEVDLAogCVBBUkFNX1NVQkxJTkss Ci0JUEFSQU1fTVVMVElFWFBSCisJUEFSQU1fTVVMVElFWFBSLAorCVBBUkFNX1NDSEVNQV9WQVJJ QUJMRQogfSBQYXJhbUtpbmQ7CiAKIHR5cGVkZWYgc3RydWN0IFBhcmFtCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmggYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgK aW5kZXggMjNkYjQwMTQ3Yi4uZDNlZDNmNGQwZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFy c2VyL2t3bGlzdC5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaApAQCAtMjMxLDYg KzIzMSw3IEBAIFBHX0tFWVdPUkQoImxlYWRpbmciLCBMRUFESU5HLCBSRVNFUlZFRF9LRVlXT1JE KQogUEdfS0VZV09SRCgibGVha3Byb29mIiwgTEVBS1BST09GLCBVTlJFU0VSVkVEX0tFWVdPUkQp CiBQR19LRVlXT1JEKCJsZWFzdCIsIExFQVNULCBDT0xfTkFNRV9LRVlXT1JEKQogUEdfS0VZV09S RCgibGVmdCIsIExFRlQsIFRZUEVfRlVOQ19OQU1FX0tFWVdPUkQpCitQR19LRVlXT1JEKCJsZXQi LCBMRVQsIFVOUkVTRVJWRURfS0VZV09SRCkKIFBHX0tFWVdPUkQoImxldmVsIiwgTEVWRUwsIFVO UkVTRVJWRURfS0VZV09SRCkKIFBHX0tFWVdPUkQoImxpa2UiLCBMSUtFLCBUWVBFX0ZVTkNfTkFN RV9LRVlXT1JEKQogUEdfS0VZV09SRCgibGltaXQiLCBMSU1JVCwgUkVTRVJWRURfS0VZV09SRCkK QEAgLTQzNCw2ICs0MzUsOCBAQCBQR19LRVlXT1JEKCJ2YWxpZGF0b3IiLCBWQUxJREFUT1IsIFVO UkVTRVJWRURfS0VZV09SRCkKIFBHX0tFWVdPUkQoInZhbHVlIiwgVkFMVUVfUCwgVU5SRVNFUlZF RF9LRVlXT1JEKQogUEdfS0VZV09SRCgidmFsdWVzIiwgVkFMVUVTLCBDT0xfTkFNRV9LRVlXT1JE KQogUEdfS0VZV09SRCgidmFyY2hhciIsIFZBUkNIQVIsIENPTF9OQU1FX0tFWVdPUkQpCitQR19L RVlXT1JEKCJ2YXJpYWJsZSIsIFZBUklBQkxFLCBVTlJFU0VSVkVEX0tFWVdPUkQpCitQR19LRVlX T1JEKCJ2YXJpYWJsZXMiLCBWQVJJQUJMRVMsIFVOUkVTRVJWRURfS0VZV09SRCkKIFBHX0tFWVdP UkQoInZhcmlhZGljIiwgVkFSSUFESUMsIFJFU0VSVkVEX0tFWVdPUkQpCiBQR19LRVlXT1JEKCJ2 YXJ5aW5nIiwgVkFSWUlORywgVU5SRVNFUlZFRF9LRVlXT1JEKQogUEdfS0VZV09SRCgidmVyYm9z ZSIsIFZFUkJPU0UsIFRZUEVfRlVOQ19OQU1FX0tFWVdPUkQpCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUu aAppbmRleCAwMjMwNTQzODEwLi5mN2MyZTY3ZjMzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9w YXJzZXIvcGFyc2Vfbm9kZS5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgK QEAgLTY5LDcgKzY5LDkgQEAgdHlwZWRlZiBlbnVtIFBhcnNlRXhwcktpbmQKIAlFWFBSX0tJTkRf VFJJR0dFUl9XSEVOLAkJLyogV0hFTiBjb25kaXRpb24gaW4gQ1JFQVRFIFRSSUdHRVIgKi8KIAlF WFBSX0tJTkRfUE9MSUNZLAkJCS8qIFVTSU5HIG9yIFdJVEggQ0hFQ0sgZXhwciBpbiBwb2xpY3kg Ki8KIAlFWFBSX0tJTkRfUEFSVElUSU9OX0VYUFJFU1NJT04sIC8qIFBBUlRJVElPTiBCWSBleHBy ZXNzaW9uICovCi0JRVhQUl9LSU5EX0NBTExfQVJHVU1FTlQJCS8qIHByb2NlZHVyZSBhcmd1bWVu dCBpbiBDQUxMICovCisJRVhQUl9LSU5EX0NBTExfQVJHVU1FTlQsCQkvKiBwcm9jZWR1cmUgYXJn dW1lbnQgaW4gQ0FMTCAqLworCUVYUFJfS0lORF9WQVJJQUJMRV9ERUZBVUxULAkvKiBkZWZhdWx0 IHZhbHVlIGZvciBzY2hlbWEgdmFyaWFibGUgKi8KKwlFWFBSX0tJTkRfTEVUCQkJCS8qIExFVCBh c3NpZ25tZW50IChzaG91bGQgYmUgc2FtZSBsaWtlIFVQREFURSkgKi8KIH0gUGFyc2VFeHByS2lu ZDsKIAogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfdGFyZ2V0LmggYi9z cmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfdGFyZ2V0LmgKaW5kZXggZWM2ZTBjMTAyZi4uMWVlMTk5 ZWQ4ZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3RhcmdldC5oCisrKyBi L3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV90YXJnZXQuaApAQCAtMzIsNiArMzIsMTYgQEAgZXh0 ZXJuIEV4cHIgKnRyYW5zZm9ybUFzc2lnbmVkRXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIEV4cHIg KmV4cHIsCiAJCQkJCSAgaW50IGF0dHJubywKIAkJCQkJICBMaXN0ICppbmRpcmVjdGlvbiwKIAkJ CQkJICBpbnQgbG9jYXRpb24pOworZXh0ZXJuIE5vZGUgKnRyYW5zZm9ybUFzc2lnbm1lbnRJbmRp cmVjdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsCisJCQkJCQkJICAgTm9kZSAqYmFzZW5vZGUsCisJ CQkJCQkJICAgY29uc3QgY2hhciAqdGFyZ2V0TmFtZSwKKwkJCQkJCQkgICBib29sIHRhcmdldElz QXJyYXksCisJCQkJCQkJICAgT2lkIHRhcmdldFR5cGVJZCwKKwkJCQkJCQkgICBpbnQzMiB0YXJn ZXRUeXBNb2QsCisJCQkJCQkJICAgT2lkIHRhcmdldENvbGxhdGlvbiwKKwkJCQkJCQkgICBMaXN0 Q2VsbCAqaW5kaXJlY3Rpb24sCisJCQkJCQkJICAgTm9kZSAqcmhzLAorCQkJCQkJCSAgIGludCBs b2NhdGlvbik7CiBleHRlcm4gdm9pZCB1cGRhdGVUYXJnZXRMaXN0RW50cnkoUGFyc2VTdGF0ZSAq cHN0YXRlLCBUYXJnZXRFbnRyeSAqdGxlLAogCQkJCQkgIGNoYXIgKmNvbG5hbWUsIGludCBhdHRy bm8sCiAJCQkJCSAgTGlzdCAqaW5kaXJlY3Rpb24sCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS90 Y29wL2Rlc3QuaCBiL3NyYy9pbmNsdWRlL3Rjb3AvZGVzdC5oCmluZGV4IDgyZjBmMmU3NDEuLmM0 OWI2NTM1NTUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Rjb3AvZGVzdC5oCisrKyBiL3NyYy9p bmNsdWRlL3Rjb3AvZGVzdC5oCkBAIC05Niw3ICs5Niw4IEBAIHR5cGVkZWYgZW51bQogCURlc3RD b3B5T3V0LAkJCQkvKiByZXN1bHRzIHNlbnQgdG8gQ09QWSBUTyBjb2RlICovCiAJRGVzdFNRTEZ1 bmN0aW9uLAkJCS8qIHJlc3VsdHMgc2VudCB0byBTUUwtbGFuZ3VhZ2UgZnVuYyBtZ3IgKi8KIAlE ZXN0VHJhbnNpZW50UmVsLAkJCS8qIHJlc3VsdHMgc2VudCB0byB0cmFuc2llbnQgcmVsYXRpb24g Ki8KLQlEZXN0VHVwbGVRdWV1ZQkJCQkvKiByZXN1bHRzIHNlbnQgdG8gdHVwbGUgcXVldWUgKi8K KwlEZXN0VHVwbGVRdWV1ZSwJCQkJLyogcmVzdWx0cyBzZW50IHRvIHR1cGxlIHF1ZXVlICovCisJ RGVzdFZhcmlhYmxlCQkJCS8qIHJlc3VsdHMgc2VudHMgdG8gc2NoZW1hIHZhcmlhYmxlICovCiB9 IENvbW1hbmREZXN0OwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS91dGlscy9hY2wuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2FjbC5oCmluZGV4IGY0ZDRiZThk MGQuLmM2MjRkOGRkMGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2FjbC5oCisrKyBi L3NyYy9pbmNsdWRlL3V0aWxzL2FjbC5oCkBAIC0xNDcsOSArMTQ3LDExIEBAIHR5cGVkZWYgQXJy YXlUeXBlIEFjbDsKICNkZWZpbmUgQUNMX0NSRUFURV9DSFIJCQknQycKICNkZWZpbmUgQUNMX0NS RUFURV9URU1QX0NIUgkJJ1QnCiAjZGVmaW5lIEFDTF9DT05ORUNUX0NIUgkJCSdjJworI2RlZmlu ZSBBQ0xfUkVBRF9DSFIJCQknUycgLyogJ1InIGlzIG9jY3VwYXRlZCBieSBvbGQgUlVMRSBwcml2 ICovCisjZGVmaW5lIEFDTF9XUklURV9DSFIJCQknVycKIAogLyogc3RyaW5nIGhvbGRpbmcgYWxs IHByaXZpbGVnZSBjb2RlIGNoYXJzLCBpbiBvcmRlciBieSBiaXRtYXNrIHBvc2l0aW9uICovCi0j ZGVmaW5lIEFDTF9BTExfUklHSFRTX1NUUgkiYXJ3ZER4dFhVQ1RjIgorI2RlZmluZSBBQ0xfQUxM X1JJR0hUU19TVFIJImFyd2REeHRYVUNUY1NXIgogCiAvKgogICogQml0bWFza3MgZGVmaW5pbmcg ImFsbCByaWdodHMiIGZvciBlYWNoIHN1cHBvcnRlZCBvYmplY3QgdHlwZQpAQCAtMTY2LDYgKzE2 OCw3IEBAIHR5cGVkZWYgQXJyYXlUeXBlIEFjbDsKICNkZWZpbmUgQUNMX0FMTF9SSUdIVFNfU0NI RU1BCQkoQUNMX1VTQUdFfEFDTF9DUkVBVEUpCiAjZGVmaW5lIEFDTF9BTExfUklHSFRTX1RBQkxF U1BBQ0UJKEFDTF9DUkVBVEUpCiAjZGVmaW5lIEFDTF9BTExfUklHSFRTX1RZUEUJCQkoQUNMX1VT QUdFKQorI2RlZmluZSBBQ0xfQUxMX1JJR0hUU19WQVJJQUJMRQkJKEFDTF9SRUFEfEFDTF9XUklU RSkKIAogLyogb3BlcmF0aW9uIGNvZGVzIGZvciBwZ18qX2FjbG1hc2sgKi8KIHR5cGVkZWYgZW51 bQpAQCAtMjUzLDYgKzI1Niw4IEBAIGV4dGVybiBBY2xNb2RlIHBnX2ZvcmVpZ25fc2VydmVyX2Fj bG1hc2soT2lkIHNydl9vaWQsIE9pZCByb2xlaWQsCiAJCQkJCQkgIEFjbE1vZGUgbWFzaywgQWNs TWFza0hvdyBob3cpOwogZXh0ZXJuIEFjbE1vZGUgcGdfdHlwZV9hY2xtYXNrKE9pZCB0eXBlX29p ZCwgT2lkIHJvbGVpZCwKIAkJCQlBY2xNb2RlIG1hc2ssIEFjbE1hc2tIb3cgaG93KTsKK2V4dGVy biBBY2xNb2RlIHBnX3ZhcmlhYmxlX2FjbG1hc2soT2lkIHZhcl9vaWQsIE9pZCByb2xlaWQsCisJ CQkJQWNsTW9kZSBtYXNrLCBBY2xNYXNrSG93IGhvdyk7CiAKIGV4dGVybiBBY2xSZXN1bHQgcGdf YXR0cmlidXRlX2FjbGNoZWNrKE9pZCB0YWJsZV9vaWQsIEF0dHJOdW1iZXIgYXR0bnVtLAogCQkJ CQkgIE9pZCByb2xlaWQsIEFjbE1vZGUgbW9kZSk7CkBAIC0yNjksNiArMjc0LDcgQEAgZXh0ZXJu IEFjbFJlc3VsdCBwZ190YWJsZXNwYWNlX2FjbGNoZWNrKE9pZCBzcGNfb2lkLCBPaWQgcm9sZWlk LCBBY2xNb2RlIG1vZGUpOwogZXh0ZXJuIEFjbFJlc3VsdCBwZ19mb3JlaWduX2RhdGFfd3JhcHBl cl9hY2xjaGVjayhPaWQgZmR3X29pZCwgT2lkIHJvbGVpZCwgQWNsTW9kZSBtb2RlKTsKIGV4dGVy biBBY2xSZXN1bHQgcGdfZm9yZWlnbl9zZXJ2ZXJfYWNsY2hlY2soT2lkIHNydl9vaWQsIE9pZCBy b2xlaWQsIEFjbE1vZGUgbW9kZSk7CiBleHRlcm4gQWNsUmVzdWx0IHBnX3R5cGVfYWNsY2hlY2so T2lkIHR5cGVfb2lkLCBPaWQgcm9sZWlkLCBBY2xNb2RlIG1vZGUpOworZXh0ZXJuIEFjbFJlc3Vs dCBwZ192YXJpYWJsZV9hY2xjaGVjayhPaWQgdHlwZV9vaWQsIE9pZCByb2xlaWQsIEFjbE1vZGUg bW9kZSk7CiAKIGV4dGVybiB2b2lkIGFjbGNoZWNrX2Vycm9yKEFjbFJlc3VsdCBhY2xlcnIsIE9i amVjdFR5cGUgb2JqdHlwZSwKIAkJCSAgIGNvbnN0IGNoYXIgKm9iamVjdG5hbWUpOwpAQCAtMzA1 LDYgKzMxMSw3IEBAIGV4dGVybiBib29sIHBnX2V4dGVuc2lvbl9vd25lcmNoZWNrKE9pZCBleHRf b2lkLCBPaWQgcm9sZWlkKTsKIGV4dGVybiBib29sIHBnX3B1YmxpY2F0aW9uX293bmVyY2hlY2so T2lkIHB1Yl9vaWQsIE9pZCByb2xlaWQpOwogZXh0ZXJuIGJvb2wgcGdfc3Vic2NyaXB0aW9uX293 bmVyY2hlY2soT2lkIHN1Yl9vaWQsIE9pZCByb2xlaWQpOwogZXh0ZXJuIGJvb2wgcGdfc3RhdGlz dGljc19vYmplY3Rfb3duZXJjaGVjayhPaWQgc3RhdF9vaWQsIE9pZCByb2xlaWQpOworZXh0ZXJu IGJvb2wgcGdfdmFyaWFibGVfb3duZXJjaGVjayhPaWQgc3RhdF9vaWQsIE9pZCByb2xlaWQpOwog ZXh0ZXJuIGJvb2wgaGFzX2NyZWF0ZXJvbGVfcHJpdmlsZWdlKE9pZCByb2xlaWQpOwogZXh0ZXJu IGJvb2wgaGFzX2J5cGFzc3Jsc19wcml2aWxlZ2UoT2lkIHJvbGVpZCk7CiAKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2Nh Y2hlLmgKaW5kZXggZTU1ZWE0MDM1Yi4uY2IzZjRhYWNhOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvdXRpbHMvbHN5c2NhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgK QEAgLTEyMiw2ICsxMjIsNyBAQCBleHRlcm4gYm9vbCBnZXRfZnVuY19sZWFrcHJvb2YoT2lkIGZ1 bmNpZCk7CiBleHRlcm4gZmxvYXQ0IGdldF9mdW5jX2Nvc3QoT2lkIGZ1bmNpZCk7CiBleHRlcm4g ZmxvYXQ0IGdldF9mdW5jX3Jvd3MoT2lkIGZ1bmNpZCk7CiBleHRlcm4gT2lkCWdldF9yZWxuYW1l X3JlbGlkKGNvbnN0IGNoYXIgKnJlbG5hbWUsIE9pZCByZWxuYW1lc3BhY2UpOworZXh0ZXJuIE9p ZCBnZXRfdmFybmFtZV92YXJpZChjb25zdCBjaGFyICp2YXJuYW1lLCBPaWQgdmFybmFtZXNwYWNl KTsKIGV4dGVybiBjaGFyICpnZXRfcmVsX25hbWUoT2lkIHJlbGlkKTsKIGV4dGVybiBPaWQJZ2V0 X3JlbF9uYW1lc3BhY2UoT2lkIHJlbGlkKTsKIGV4dGVybiBPaWQJZ2V0X3JlbF90eXBlX2lkKE9p ZCByZWxpZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9zeXNjYWNoZS5oIGIvc3Jj L2luY2x1ZGUvdXRpbHMvc3lzY2FjaGUuaAppbmRleCA0ZjMzMzU4NmVlLi40NTM2OTliZTNjIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9zeXNjYWNoZS5oCisrKyBiL3NyYy9pbmNsdWRl L3V0aWxzL3N5c2NhY2hlLmgKQEAgLTEwNyw5ICsxMDcsMTEgQEAgZW51bSBTeXNDYWNoZUlkZW50 aWZpZXIKIAlUWVBFTkFNRU5TUCwKIAlUWVBFT0lELAogCVVTRVJNQVBQSU5HT0lELAotCVVTRVJN QVBQSU5HVVNFUlNFUlZFUgorCVVTRVJNQVBQSU5HVVNFUlNFUlZFUiwKKwlWQVJJQUJMRU5BTUVO U1AsCisJVkFSSUFCTEVPSUQKIAotI2RlZmluZSBTeXNDYWNoZVNpemUgKFVTRVJNQVBQSU5HVVNF UlNFUlZFUiArIDEpCisjZGVmaW5lIFN5c0NhY2hlU2l6ZSAoVkFSSUFCTEVPSUQgKyAxKQogfTsK IAogZXh0ZXJuIHZvaWQgSW5pdENhdGFsb2dDYWNoZSh2b2lkKTsKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbWlzY19zYW5pdHkub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9taXNjX3Nhbml0eS5vdXQKaW5kZXggMmQzNTIyYjUwMC4uNDgyODZmOGUxYSAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9taXNjX3Nhbml0eS5vdXQKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9taXNjX3Nhbml0eS5vdXQKQEAgLTEwNSw1ICsxMDUs NyBAQCBPUkRFUiBCWSAxLCAyOwogIHBnX2luZGV4ICAgICAgICAgICAgICAgIHwgaW5kcHJlZCAg ICAgICB8IHBnX25vZGVfdHJlZQogIHBnX2xhcmdlb2JqZWN0ICAgICAgICAgIHwgZGF0YSAgICAg ICAgICB8IGJ5dGVhCiAgcGdfbGFyZ2VvYmplY3RfbWV0YWRhdGEgfCBsb21hY2wgICAgICAgIHwg YWNsaXRlbVtdCi0oMTEgcm93cykKKyBwZ192YXJpYWJsZSAgICAgICAgICAgICB8IHZhcmFjbCAg ICAgICAgfCBhY2xpdGVtW10KKyBwZ192YXJpYWJsZSAgICAgICAgICAgICB8IHZhcmRlZmV4cHIg ICAgfCBwZ19ub2RlX3RyZWUKKygxMyByb3dzKQogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3Nhbml0eV9jaGVjay5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3Nhbml0eV9jaGVjay5vdXQKaW5kZXggMGFhNTM1NzkxNy4uODQ4YjA0MWE0YiAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zYW5pdHlfY2hlY2sub3V0CisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2FuaXR5X2NoZWNrLm91dApAQCAtMTYzLDYgKzE2Myw3IEBA IHBnX3RzX3BhcnNlcnx0CiBwZ190c190ZW1wbGF0ZXx0CiBwZ190eXBlfHQKIHBnX3VzZXJfbWFw cGluZ3x0CitwZ192YXJpYWJsZXx0CiBwb2ludF90Ymx8dAogcG9seWdvbl90Ymx8dAogcXVhZF9i b3hfdGJsfHQKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2NoZW1hX3Zh cmlhYmxlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3NjaGVtYV92YXJpYWJsZXMu b3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmYyMDE3YjhkYTkKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3NjaGVtYV92YXJpYWJs ZXMub3V0CkBAIC0wLDAgKzEsMzA2IEBACitDUkVBVEUgVkFSSUFCTEUgdmFyMSBBUyBpbnRlZ2Vy OworQ1JFQVRFIFRFTVAgVkFSSUFCTEUgdmFyMiBBUyB0ZXh0OworRFJPUCBWQVJJQUJMRSB2YXIx LCB2YXIyOworLS0gZnVuY3Rpb25hbCBpbnRlcmZhY2UKK0NSRUFURSBWQVJJQUJMRSB2YXIxIEFT IG51bWVyaWM7CitDUkVBVEUgUk9MRSB2YXJfdGVzdF9yb2xlOworU0VUIFJPTEUgVE8gdmFyX3Rl c3Rfcm9sZTsKKy0tIHNob3VsZCB0byBmYWlsCitTRUxFQ1QgdmFyMTsKK0VSUk9SOiAgcGVybWlz c2lvbiBkZW5pZWQgZm9yIHNjaGVtYSB2YXJpYWJsZSB2YXIxCitTRVQgUk9MRSBUTyBERUZBVUxU OworR1JBTlQgUkVBRCBPTiBWQVJJQUJMRSB2YXIxIFRPIHZhcl90ZXN0X3JvbGU7CitTRVQgUk9M RSBUTyB2YXJfdGVzdF9yb2xlOworLS0gc2hvdWxkIHRvIGZhaWwKK0xFVCB2YXIxID0gMTA7CitF UlJPUjogIHBlcm1pc3Npb24gZGVuaWVkIGZvciBzY2hlbWEgdmFyaWFibGUgdmFyMQorLS0gc2hv dWxkIHRvIHdvcmsKK1NFTEVDVCB2YXIxOworIHZhcjEgCistLS0tLS0KKyAgICAgCisoMSByb3cp CisKK1NFVCBST0xFIFRPIERFRkFVTFQ7CitHUkFOVCBXUklURSBPTiBWQVJJQUJMRSB2YXIxIFRP IHZhcl90ZXN0X3JvbGU7CitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworLS0gc2hvdWxkIHRv IHdvcmsKK0xFVCB2YXIxID0gMzMzOworU0VUIFJPTEUgVE8gREVGQVVMVDsKK1JFVk9LRSBBTEwg T04gVkFSSUFCTEUgdmFyMSBGUk9NIHZhcl90ZXN0X3JvbGU7CitDUkVBVEUgT1IgUkVQTEFDRSBG VU5DVElPTiBzZWN1cmVfdmFyKCkKK1JFVFVSTlMgaW50IEFTICQkCisgIFNFTEVDVCBwdWJsaWMu dmFyMTo6aW50OworJCQgTEFOR1VBR0Ugc3FsIFNFQ1VSSVRZIERFRklORVI7CitTRUxFQ1Qgc2Vj dXJlX3ZhcigpOworIHNlY3VyZV92YXIgCistLS0tLS0tLS0tLS0KKyAgICAgICAgMzMzCisoMSBy b3cpCisKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7CistLSBzaG91bGQgdG8gZmFpbAorU0VM RUNUIHB1YmxpYy52YXIxOworRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3Igc2NoZW1hIHZh cmlhYmxlIHZhcjEKKy0tIHNob3VsZCB0byB3b3JrOworU0VMRUNUIHNlY3VyZV92YXIoKTsKKyBz ZWN1cmVfdmFyIAorLS0tLS0tLS0tLS0tCisgICAgICAgIDMzMworKDEgcm93KQorCitTRVQgUk9M RSBUTyBERUZBVUxUOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9N IGdlbmVyYXRlX3NlcmllcygxLDEwMCkgZyh2KSBXSEVSRSB2ID0gdmFyMTsKKyAgICAgICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZ1bmN0aW9uIFNjYW4gb24gcGdfY2F0YWxv Zy5nZW5lcmF0ZV9zZXJpZXMgZworICAgT3V0cHV0OiB2CisgICBGdW5jdGlvbiBDYWxsOiBnZW5l cmF0ZV9zZXJpZXMoMSwgMTAwKQorICAgRmlsdGVyOiAoKGcudik6Om51bWVyaWMgPSB2YXIxKQor KDQgcm93cykKKworQ1JFQVRFIFZJRVcgc2NoZW1hX3Zhcl92aWV3IEFTIFNFTEVDVCB2YXIxOwor U0VMRUNUICogRlJPTSBzY2hlbWFfdmFyX3ZpZXc7CisgdmFyMSAKKy0tLS0tLQorICAzMzMKKygx IHJvdykKKworXGMgLQorLS0gc2hvdWxkIHRvIHdvcmsgc3RpbGwsIGJ1dCB2YXIgd2lsbCBiZSBl bXB0eQorU0VMRUNUICogRlJPTSBzY2hlbWFfdmFyX3ZpZXc7CisgdmFyMSAKKy0tLS0tLQorICAg ICAKKygxIHJvdykKKworTEVUIHZhcjEgPSBwaSgpOworU0VMRUNUIHZhcjE7CisgICAgICAgdmFy MSAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLQorIDMuMTQxNTkyNjUzNTg5NzkKKygxIHJvdykK KworLS0gd2UgY2FuIGxvb2sgb24gZXhlY3V0aW9uIHBsYW4KK0VYUExBSU4gKFZFUkJPU0UsIENP U1RTIE9GRikgTEVUIHZhcjEgPSBwaSgpOworICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFJlc3VsdAorICAgT3V0cHV0OiAzLjE0MTU5 MjY1MzU4OTc5CisoMiByb3dzKQorCistLSBMRVQgY2FuIGJlIHByZXBhcmVkCitQUkVQQVJFIHZh cl9wcChpbnQsIG51bWVyaWMpIEFTIExFVCB2YXIxID0gJDEgKyAkMjsKK0VYRUNVVEUgdmFyX3Bw KDEwMCwgMS4yMzQ1Nik7CitTRUxFQ1QgdmFyMTsKKyAgIHZhcjEgICAgCistLS0tLS0tLS0tLQor IDEwMS4yMzQ1NgorKDEgcm93KQorCitDUkVBVEUgVkFSSUFCTEUgdmFyMyBBUyBpbnQ7CitDUkVB VEUgT1IgUkVQTEFDRSBGVU5DVElPTiBpbmMoaW50KQorUkVUVVJOUyBpbnQgQVMgJCQKK0JFR0lO CisgIExFVCBwdWJsaWMudmFyMyA9IENPQUxFU0NFKHB1YmxpYy52YXIzICsgJDEsICQxKTsKKyAg UkVUVVJOIHZhcjM7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworU0VMRUNUIGluYygxKTsK KyBpbmMgCistLS0tLQorICAgMQorKDEgcm93KQorCitTRUxFQ1QgaW5jKDEpOworIGluYyAKKy0t LS0tCisgICAyCisoMSByb3cpCisKK1NFTEVDVCBpbmMoMSk7CisgaW5jIAorLS0tLS0KKyAgIDMK KygxIHJvdykKKworU0VMRUNUIGluYygxKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKTsKKyBp bmMgCistLS0tLQorICAgNAorICAgNQorICAgNgorICAgNworICAgOAorICAgOQorICAxMAorICAx MQorICAxMgorICAxMworKDEwIHJvd3MpCisKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7Cist LSBzaG91bGQgdG8gZmFpbAorTEVUIHZhcjMgPSAwOworRVJST1I6ICBwZXJtaXNzaW9uIGRlbmll ZCBmb3Igc2NoZW1hIHZhcmlhYmxlIHZhcjMKK1NFVCBST0xFIFRPIERFRkFVTFQ7CitEUk9QIFZJ RVcgc2NoZW1hX3Zhcl92aWV3OworRFJPUCBWQVJJQUJMRSB2YXIxIENBU0NBREU7CitEUk9QIFZB UklBQkxFIHZhcjMgQ0FTQ0FERTsKKy0tIGNvbXBvc2l0ZSB2YXJpYWJsZXMKK0NSRUFURSBUWVBF IHN2X3h5eiBBUyAoeCBpbnQsIHkgaW50LCB6IG51bWVyaWMoMTAsMikpOworQ1JFQVRFIFZBUklB QkxFIHYxIEFTIHN2X3h5ejsKK0NSRUFURSBWQVJJQUJMRSB2MiBBUyBzdl94eXo7CitcZCB2MQor XGQgdjIKK0xFVCB2MSA9ICgxLDIsMy4xNCk7CitMRVQgdjIgPSAoMTAsMjAsMy4xNCoxMCk7Cist LSBzaG91bGQgdG8gd29yayB0b28gLSB0aGVyZSBhcmUgcHJlcGFyZWQgY2FzdHMKK0xFVCB2MSA9 ICgxLDIsMy4xNCk7CitTRUxFQ1QgdjE7CisgICAgIHYxICAgICAKKy0tLS0tLS0tLS0tLQorICgx LDIsMy4xNCkKKygxIHJvdykKKworU0VMRUNUIHYyOworICAgICAgdjIgICAgICAgCistLS0tLS0t LS0tLS0tLS0KKyAoMTAsMjAsMzEuNDApCisoMSByb3cpCisKK1NFTEVDVCAodjEpLio7CisgeCB8 IHkgfCAgeiAgIAorLS0tKy0tLSstLS0tLS0KKyAxIHwgMiB8IDMuMTQKKygxIHJvdykKKworU0VM RUNUICh2MikuKjsKKyB4ICB8IHkgIHwgICB6ICAgCistLS0tKy0tLS0rLS0tLS0tLQorIDEwIHwg MjAgfCAzMS40MAorKDEgcm93KQorCitTRUxFQ1QgdjEueCArIHYxLno7CisgP2NvbHVtbj8gCist LS0tLS0tLS0tCisgICAgIDQuMTQKKygxIHJvdykKKworU0VMRUNUIHYyLnggKyB2Mi56OworID9j b2x1bW4/IAorLS0tLS0tLS0tLQorICAgIDQxLjQwCisoMSByb3cpCisKKy0tIGFjY2VzcyB0byBj b21wb3NpdGUgZmllbGRzIHNob3VsZCBiZSBzYWZlIHRvbworLS0gc2hvdWxkIHRvIGZhaWwKK1NF VCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7CitTRUxFQ1QgdjIueDsKK0VSUk9SOiAgcGVybWlzc2lv biBkZW5pZWQgZm9yIHNjaGVtYSB2YXJpYWJsZSB2MgorU0VUIFJPTEUgVE8gREVGQVVMVDsKK0RS T1AgVkFSSUFCTEUgdjE7CitEUk9QIFZBUklBQkxFIHYyOworRFJPUCBST0xFIHZhcl90ZXN0X3Jv bGU7CistLSBzY2FsYXIgdmFyaWFibGVzIHNob3VsZCBub3QgYmUgaW4gY29uZmxpY3Qgd2l0aCBx dWFsaWZpZWQgY29sdW1uCitDUkVBVEUgVkFSSUFCTEUgdmFyeCBBUyB0ZXh0OworU0VMRUNUIHZh cngucmVsbmFtZSBGUk9NIHBnX2NsYXNzIHZhcnggV0hFUkUgdmFyeC5yZWxuYW1lID0gJ3BnX2Ns YXNzJzsKKyByZWxuYW1lICAKKy0tLS0tLS0tLS0KKyBwZ19jbGFzcworKDEgcm93KQorCistLSBz aG91bGQgdG8gZmFpbAorU0VMRUNUIHZhcngueHh4OworRVJST1I6ICB0eXBlIHRleHQgaXMgbm90 IGNvbXBvc2l0ZQorLS0gdmFyaWFibGVzIGNhbiBiZSB1cGRhdGVkIHVuZGVyIFJPIHRyYW5zYWN0 aW9uCitCRUdJTjsKK1NFVCBUUkFOU0FDVElPTiBSRUFEIE9OTFk7CitMRVQgdmFyeCA9ICdoZWxs byc7CitDT01NSVQ7CitTRUxFQ1QgdmFyeDsKKyB2YXJ4ICAKKy0tLS0tLS0KKyBoZWxsbworKDEg cm93KQorCitEUk9QIFZBUklBQkxFIHZhcng7CitDUkVBVEUgVFlQRSB0MSBBUyAoYSBpbnQsIGIg bnVtZXJpYywgYyB0ZXh0KTsKK0NSRUFURSBWQVJJQUJMRSB2MSBBUyB0MTsKK0xFVCB2MSA9ICgx LCBwaSgpLCAnaGVsbG8nKTsKK1NFTEVDVCB2MTsKKyAgICAgICAgICAgICB2MSAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAoMSwzLjE0MTU5MjY1MzU4OTc5LGhl bGxvKQorKDEgcm93KQorCitMRVQgdjEuYiA9IDEwLjIyMjI7CitTRUxFQ1QgdjE7CisgICAgICAg IHYxICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgKDEsMTAuMjIyMixoZWxsbykKKygx IHJvdykKKworLS0gc2hvdWxkIHRvIGZhaWwKK0xFVCB2MS54ID0gMTA7CitFUlJPUjogIGNhbm5v dCBhc3NpZ24gdG8gZmllbGQgIngiIG9mIGNvbHVtbiAieCIgYmVjYXVzZSB0aGVyZSBpcyBubyBz dWNoIGNvbHVtbiBpbiBkYXRhIHR5cGUgdDEKK0xJTkUgMTogTEVUIHYxLnggPSAxMDsKKyAgICAg ICAgICAgIF4KK0RST1AgVkFSSUFCTEUgdjE7CitEUk9QIFRZUEUgdDE7CistLSBhcnJheXMgYXJl IHN1cHBvcnRlZAorQ1JFQVRFIFZBUklBQkxFIHZhMSBBUyBudW1lcmljW107CitMRVQgdmExID0g QVJSQVlbMS4xLDIuMV07CitMRVQgdmExWzFdID0gMTAuMTsKK1NFTEVDVCB2YTE7CisgICAgdmEx ICAgICAKKy0tLS0tLS0tLS0tLQorIHsxMC4xLDIuMX0KKygxIHJvdykKKworQ1JFQVRFIFRZUEUg dGEyIEFTIChhIG51bWVyaWMsIGIgbnVtZXJpY1tdKTsKK0NSRUFURSBWQVJJQUJMRSB2YTIgQVMg dGEyOworTEVUIHZhMiA9ICgxMC4xLCBBUlJBWVswLjAsIDAuMF0pOworTEVUIHZhMi5hID0gMTAu MjsKK1NFTEVDVCB2YTI7CisgICAgICAgIHZhMiAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAoMTAuMiwiezAuMCwwLjB9IikKKygxIHJvdykKKworTEVUIHZhMi5iWzFdID0gMTAuMzsK K1NFTEVDVCB2YTI7CisgICAgICAgICB2YTIgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICgxMC4yLCJ7MTAuMywwLjB9IikKKygxIHJvdykKKworRFJPUCBWQVJJQUJMRSB2YTE7CitE Uk9QIFZBUklBQkxFIHZhMjsKK0RST1AgVFlQRSB0YTI7CistLSBkZWZhdWx0IHZhbHVlcworQ1JF QVRFIFZBUklBQkxFIHYxIEFTIG51bWVyaWMgREVGQVVMVCBwaSgpOworTEVUIHYxID0gdjEgKiAy OworU0VMRUNUIHYxOworICAgICAgICB2MSAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0KKyA2 LjI4MzE4NTMwNzE3OTU4CisoMSByb3cpCisKK0NSRUFURSBUWVBFIHQyIEFTIChhIG51bWVyaWMs IGIgdGV4dCk7CitDUkVBVEUgVkFSSUFCTEUgdjIgQVMgdDIgREVGQVVMVCAoTlVMTCwgJ0hlbGxv Jyk7CitMRVQgcHVibGljLnYyLmEgPSBwaSgpOworU0VMRUNUIHYyOworICAgICAgICAgICAgdjIg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKDMuMTQxNTkyNjUzNTg5 NzksSGVsbG8pCisoMSByb3cpCisKKy0tIHNob3VkbCBmYWlsIGR1ZSBkZXBlbmRlbmN5CitEUk9Q IFRZUEUgdDI7CitFUlJPUjogIGNhbm5vdCBkcm9wIHR5cGUgdDIgYmVjYXVzZSBvdGhlciBvYmpl Y3RzIGRlcGVuZCBvbiBpdAorREVUQUlMOiAgc2NoZW1hIHZhcmlhYmxlIHYyIGRlcGVuZHMgb24g dHlwZSB0MgorSElOVDogIFVzZSBEUk9QIC4uLiBDQVNDQURFIHRvIGRyb3AgdGhlIGRlcGVuZGVu dCBvYmplY3RzIHRvby4KKy0tIHNob3VsZCBiZSBvaworRFJPUCBWQVJJQUJMRSB2MTsKK0RST1Ag VkFSSUFCTEUgdjI7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVk dWxlIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQppbmRleCAxNmY5NzljOGQ5 Li45YmYzNzliODdiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVk dWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAgLTExMSw3ICsx MTEsNyBAQCB0ZXN0OiBzZWxlY3Rfdmlld3MgcG9ydGFsc19wMiBmb3JlaWduX2tleSBjbHVzdGVy IGRlcGVuZGVuY3kgZ3VjIGJpdG1hcG9wcyBjb21ibwogIyBOQjogdGVtcC5zcWwgZG9lcyBhIHJl Y29ubmVjdCB3aGljaCB0cmFuc2llbnRseSB1c2VzIDIgY29ubmVjdGlvbnMsCiAjIHNvIGtlZXAg dGhpcyBwYXJhbGxlbCBncm91cCB0byBhdCBtb3N0IDE5IHRlc3RzCiAjIC0tLS0tLS0tLS0KLXRl c3Q6IHBsYW5jYWNoZSBsaW1pdCBwbHBnc3FsIGNvcHkyIHRlbXAgZG9tYWluIHJhbmdlZnVuY3Mg cHJlcGFyZSB3aXRob3V0X29pZCBjb252ZXJzaW9uIHRydW5jYXRlIGFsdGVyX3RhYmxlIHNlcXVl bmNlIHBvbHltb3JwaGlzbSByb3d0eXBlcyByZXR1cm5pbmcgbGFyZ2VvYmplY3Qgd2l0aCB4bWwK K3Rlc3Q6IHBsYW5jYWNoZSBsaW1pdCBwbHBnc3FsIGNvcHkyIHRlbXAgZG9tYWluIHJhbmdlZnVu Y3MgcHJlcGFyZSB3aXRob3V0X29pZCBjb252ZXJzaW9uIHRydW5jYXRlIGFsdGVyX3RhYmxlIHNl cXVlbmNlIHBvbHltb3JwaGlzbSByb3d0eXBlcyByZXR1cm5pbmcgbGFyZ2VvYmplY3Qgd2l0aCB4 bWwgc2NoZW1hX3ZhcmlhYmxlcwogCiAjIC0tLS0tLS0tLS0KICMgQW5vdGhlciBncm91cCBvZiBw YXJhbGxlbCB0ZXN0cwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zZXJpYWxfc2NoZWR1 bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3NlcmlhbF9zY2hlZHVsZQppbmRleCA0MjYzMmJlNjc1Li40 MmJmNGVjYjNmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NlcmlhbF9zY2hlZHVsZQor KysgYi9zcmMvdGVzdC9yZWdyZXNzL3NlcmlhbF9zY2hlZHVsZQpAQCAtMTkxLDMgKzE5MSw0IEBA IHRlc3Q6IHBhcnRpdGlvbl9hZ2dyZWdhdGUKIHRlc3Q6IGV2ZW50X3RyaWdnZXIKIHRlc3Q6IGZh c3RfZGVmYXVsdAogdGVzdDogc3RhdHMKK3Rlc3Q6IHNjaGVtYV92YXJpYWJsZXMKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3NjaGVtYV92YXJpYWJsZXMuc3FsIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvc2NoZW1hX3ZhcmlhYmxlcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMC4uNjE5YjZlZTRjMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3NjaGVtYV92YXJpYWJsZXMuc3FsCkBAIC0wLDAgKzEsMjEzIEBACitDUkVBVEUg VkFSSUFCTEUgdmFyMSBBUyBpbnRlZ2VyOworQ1JFQVRFIFRFTVAgVkFSSUFCTEUgdmFyMiBBUyB0 ZXh0OworCitEUk9QIFZBUklBQkxFIHZhcjEsIHZhcjI7CisKKy0tIGZ1bmN0aW9uYWwgaW50ZXJm YWNlCitDUkVBVEUgVkFSSUFCTEUgdmFyMSBBUyBudW1lcmljOworCitDUkVBVEUgUk9MRSB2YXJf dGVzdF9yb2xlOworCitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworCistLSBzaG91bGQgdG8g ZmFpbAorU0VMRUNUIHZhcjE7CisKK1NFVCBST0xFIFRPIERFRkFVTFQ7CisKK0dSQU5UIFJFQUQg T04gVkFSSUFCTEUgdmFyMSBUTyB2YXJfdGVzdF9yb2xlOworCitTRVQgUk9MRSBUTyB2YXJfdGVz dF9yb2xlOworLS0gc2hvdWxkIHRvIGZhaWwKK0xFVCB2YXIxID0gMTA7CistLSBzaG91bGQgdG8g d29yaworU0VMRUNUIHZhcjE7CisKK1NFVCBST0xFIFRPIERFRkFVTFQ7CisKK0dSQU5UIFdSSVRF IE9OIFZBUklBQkxFIHZhcjEgVE8gdmFyX3Rlc3Rfcm9sZTsKKworU0VUIFJPTEUgVE8gdmFyX3Rl c3Rfcm9sZTsKKworLS0gc2hvdWxkIHRvIHdvcmsKK0xFVCB2YXIxID0gMzMzOworCitTRVQgUk9M RSBUTyBERUZBVUxUOworCitSRVZPS0UgQUxMIE9OIFZBUklBQkxFIHZhcjEgRlJPTSB2YXJfdGVz dF9yb2xlOworCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBzZWN1cmVfdmFyKCkKK1JFVFVS TlMgaW50IEFTICQkCisgIFNFTEVDVCBwdWJsaWMudmFyMTo6aW50OworJCQgTEFOR1VBR0Ugc3Fs IFNFQ1VSSVRZIERFRklORVI7CisKK1NFTEVDVCBzZWN1cmVfdmFyKCk7CisKK1NFVCBST0xFIFRP IHZhcl90ZXN0X3JvbGU7CisKKy0tIHNob3VsZCB0byBmYWlsCitTRUxFQ1QgcHVibGljLnZhcjE7 CisKKy0tIHNob3VsZCB0byB3b3JrOworU0VMRUNUIHNlY3VyZV92YXIoKTsKKworU0VUIFJPTEUg VE8gREVGQVVMVDsKKworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9N IGdlbmVyYXRlX3NlcmllcygxLDEwMCkgZyh2KSBXSEVSRSB2ID0gdmFyMTsKKworQ1JFQVRFIFZJ RVcgc2NoZW1hX3Zhcl92aWV3IEFTIFNFTEVDVCB2YXIxOworCitTRUxFQ1QgKiBGUk9NIHNjaGVt YV92YXJfdmlldzsKKworXGMgLQorCistLSBzaG91bGQgdG8gd29yayBzdGlsbCwgYnV0IHZhciB3 aWxsIGJlIGVtcHR5CitTRUxFQ1QgKiBGUk9NIHNjaGVtYV92YXJfdmlldzsKKworTEVUIHZhcjEg PSBwaSgpOworCitTRUxFQ1QgdmFyMTsKKworLS0gd2UgY2FuIGxvb2sgb24gZXhlY3V0aW9uIHBs YW4KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgTEVUIHZhcjEgPSBwaSgpOworCistLSBM RVQgY2FuIGJlIHByZXBhcmVkCitQUkVQQVJFIHZhcl9wcChpbnQsIG51bWVyaWMpIEFTIExFVCB2 YXIxID0gJDEgKyAkMjsKKworRVhFQ1VURSB2YXJfcHAoMTAwLCAxLjIzNDU2KTsKKworU0VMRUNU IHZhcjE7CisKK0NSRUFURSBWQVJJQUJMRSB2YXIzIEFTIGludDsKKworQ1JFQVRFIE9SIFJFUExB Q0UgRlVOQ1RJT04gaW5jKGludCkKK1JFVFVSTlMgaW50IEFTICQkCitCRUdJTgorICBMRVQgcHVi bGljLnZhcjMgPSBDT0FMRVNDRShwdWJsaWMudmFyMyArICQxLCAkMSk7CisgIFJFVFVSTiB2YXIz OworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKworU0VMRUNUIGluYygxKTsKK1NFTEVDVCBp bmMoMSk7CitTRUxFQ1QgaW5jKDEpOworCitTRUxFQ1QgaW5jKDEpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsMTApOworCitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworCistLSBzaG91bGQgdG8g ZmFpbAorTEVUIHZhcjMgPSAwOworCitTRVQgUk9MRSBUTyBERUZBVUxUOworCitEUk9QIFZJRVcg c2NoZW1hX3Zhcl92aWV3OworCitEUk9QIFZBUklBQkxFIHZhcjEgQ0FTQ0FERTsKK0RST1AgVkFS SUFCTEUgdmFyMyBDQVNDQURFOworCistLSBjb21wb3NpdGUgdmFyaWFibGVzCisKK0NSRUFURSBU WVBFIHN2X3h5eiBBUyAoeCBpbnQsIHkgaW50LCB6IG51bWVyaWMoMTAsMikpOworCitDUkVBVEUg VkFSSUFCTEUgdjEgQVMgc3ZfeHl6OworQ1JFQVRFIFZBUklBQkxFIHYyIEFTIHN2X3h5ejsKKwor XGQgdjEKK1xkIHYyCisKK0xFVCB2MSA9ICgxLDIsMy4xNCk7CitMRVQgdjIgPSAoMTAsMjAsMy4x NCoxMCk7CisKKy0tIHNob3VsZCB0byB3b3JrIHRvbyAtIHRoZXJlIGFyZSBwcmVwYXJlZCBjYXN0 cworTEVUIHYxID0gKDEsMiwzLjE0KTsKKworU0VMRUNUIHYxOworU0VMRUNUIHYyOworU0VMRUNU ICh2MSkuKjsKK1NFTEVDVCAodjIpLio7CisKK1NFTEVDVCB2MS54ICsgdjEuejsKK1NFTEVDVCB2 Mi54ICsgdjIuejsKKworLS0gYWNjZXNzIHRvIGNvbXBvc2l0ZSBmaWVsZHMgc2hvdWxkIGJlIHNh ZmUgdG9vCistLSBzaG91bGQgdG8gZmFpbAorU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKwor U0VMRUNUIHYyLng7CisKK1NFVCBST0xFIFRPIERFRkFVTFQ7CisKKworRFJPUCBWQVJJQUJMRSB2 MTsKK0RST1AgVkFSSUFCTEUgdjI7CisKK0RST1AgUk9MRSB2YXJfdGVzdF9yb2xlOworCistLSBz Y2FsYXIgdmFyaWFibGVzIHNob3VsZCBub3QgYmUgaW4gY29uZmxpY3Qgd2l0aCBxdWFsaWZpZWQg Y29sdW1uCitDUkVBVEUgVkFSSUFCTEUgdmFyeCBBUyB0ZXh0OworU0VMRUNUIHZhcngucmVsbmFt ZSBGUk9NIHBnX2NsYXNzIHZhcnggV0hFUkUgdmFyeC5yZWxuYW1lID0gJ3BnX2NsYXNzJzsKKwor LS0gc2hvdWxkIHRvIGZhaWwKK1NFTEVDVCB2YXJ4Lnh4eDsKKworCistLSB2YXJpYWJsZXMgY2Fu IGJlIHVwZGF0ZWQgdW5kZXIgUk8gdHJhbnNhY3Rpb24KKworQkVHSU47CitTRVQgVFJBTlNBQ1RJ T04gUkVBRCBPTkxZOworTEVUIHZhcnggPSAnaGVsbG8nOworQ09NTUlUOworCitTRUxFQ1QgdmFy eDsKKworRFJPUCBWQVJJQUJMRSB2YXJ4OworCitDUkVBVEUgVFlQRSB0MSBBUyAoYSBpbnQsIGIg bnVtZXJpYywgYyB0ZXh0KTsKKworQ1JFQVRFIFZBUklBQkxFIHYxIEFTIHQxOworTEVUIHYxID0g KDEsIHBpKCksICdoZWxsbycpOworU0VMRUNUIHYxOworTEVUIHYxLmIgPSAxMC4yMjIyOworU0VM RUNUIHYxOworCistLSBzaG91bGQgdG8gZmFpbAorTEVUIHYxLnggPSAxMDsKKworRFJPUCBWQVJJ QUJMRSB2MTsKK0RST1AgVFlQRSB0MTsKKworLS0gYXJyYXlzIGFyZSBzdXBwb3J0ZWQKK0NSRUFU RSBWQVJJQUJMRSB2YTEgQVMgbnVtZXJpY1tdOworTEVUIHZhMSA9IEFSUkFZWzEuMSwyLjFdOwor TEVUIHZhMVsxXSA9IDEwLjE7CitTRUxFQ1QgdmExOworCitDUkVBVEUgVFlQRSB0YTIgQVMgKGEg bnVtZXJpYywgYiBudW1lcmljW10pOworQ1JFQVRFIFZBUklBQkxFIHZhMiBBUyB0YTI7CitMRVQg dmEyID0gKDEwLjEsIEFSUkFZWzAuMCwgMC4wXSk7CitMRVQgdmEyLmEgPSAxMC4yOworU0VMRUNU IHZhMjsKK0xFVCB2YTIuYlsxXSA9IDEwLjM7CitTRUxFQ1QgdmEyOworCitEUk9QIFZBUklBQkxF IHZhMTsKK0RST1AgVkFSSUFCTEUgdmEyOworRFJPUCBUWVBFIHRhMjsKKworLS0gZGVmYXVsdCB2 YWx1ZXMKK0NSRUFURSBWQVJJQUJMRSB2MSBBUyBudW1lcmljIERFRkFVTFQgcGkoKTsKK0xFVCB2 MSA9IHYxICogMjsKK1NFTEVDVCB2MTsKKworQ1JFQVRFIFRZUEUgdDIgQVMgKGEgbnVtZXJpYywg YiB0ZXh0KTsKK0NSRUFURSBWQVJJQUJMRSB2MiBBUyB0MiBERUZBVUxUIChOVUxMLCAnSGVsbG8n KTsKK0xFVCBwdWJsaWMudjIuYSA9IHBpKCk7CitTRUxFQ1QgdjI7CisKKy0tIHNob3VkbCBmYWls IGR1ZSBkZXBlbmRlbmN5CitEUk9QIFRZUEUgdDI7CisKKy0tIHNob3VsZCBiZSBvaworRFJPUCBW QVJJQUJMRSB2MTsKK0RST1AgVkFSSUFCTEUgdjI7Cg== --000000000000e949e60572f2752d--