Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w3dD7-001PL8-1e for pgsql-hackers@arkaria.postgresql.org; Fri, 20 Mar 2026 17:00:34 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w3dD5-007Nzn-07 for pgsql-hackers@arkaria.postgresql.org; Fri, 20 Mar 2026 17:00:31 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w3dD4-007Nzf-0d for pgsql-hackers@lists.postgresql.org; Fri, 20 Mar 2026 17:00:31 +0000 Received: from mail-lj1-x22a.google.com ([2a00:1450:4864:20::22a]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w3dD2-00000000COz-0xjd for pgsql-hackers@lists.postgresql.org; Fri, 20 Mar 2026 17:00:29 +0000 Received: by mail-lj1-x22a.google.com with SMTP id 38308e7fff4ca-38be5e86918so19565891fa.3 for ; Fri, 20 Mar 2026 10:00:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774026026; cv=none; d=google.com; s=arc-20240605; b=MbkvweFHUOYWvA8VSkGmrDEAdIZZEfGAwnKkZfwBmxBDJlUbSo7WAyQDfow/RB1ykN 76GjjTBgOMMzula1zOkuj8rWFGQZJJcVPiXNA3oZUsqeedEHIi1NzvXKF7VEtmlCTZWx jRMUA+JcLbj533YiQdt0IffihyFqvs89TKv+K/Bg3mnwZx3WntkQxEMBaQFvzSy5EIai UYHTNWeCcm/N0YBaLxSeEB9ImbsR7wikY6Me0Yt1R5iZbg4T1jFwTITQqjat1ioE5fvP 4T9pFA4L0zqCDW/v7rGgyLVEtBrTH5L+Lc7rnhFx78FvnuMKL3lC74gyh31JpeJJWQpg hPwg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=+oMGshkaTUtlcfwpyB/xdNT7dTBVBr9LluYmKsZZkOA=; fh=m1JEC4VNneOosS4dLPxvdzmiOpj2bdOFepDGQsg+XuQ=; b=YqIDqRSXx2wUac8uQrtBI4tX8F/d9J0Nzaclqh6FoKfIUzZ9lbeIuXrQP5XnRT+uBi lG0rRfJJgogZSMbXt6juoNA/+RkH5UG1C8frQ4eYqplwj8a5IbiGZIUZ504uSmVZsSlE ITawFY5G1qzT3DPeMPyXz3tlb92a9ssJNw6UfA51QK3cJlr6ej5Mgy/AsyzAhnWzrXyB icKJt0Z/SF3uALsnm12p8aDJo2mdZnB5NbPAG889SRDtpUPZ8UNHQBYOjtJuqJoxn8W3 GbXHRakl6FHeEDkuuM9VTUSXolF2juYN284heUIl7+2IgipG/TsBIVQKLmbukdlA/GVQ ML7w==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1774026026; x=1774630826; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=+oMGshkaTUtlcfwpyB/xdNT7dTBVBr9LluYmKsZZkOA=; b=Asv1wed+NmPJrcginserCMp2FFy3njcJ1kspnHgNkSkriE/yISHQQfMZv0YUdbxr7u Hy9p7boj8w3UUR9CyojGkWZXv4AneFs9DSNJvIKJW9ZgBTPLd3JTBIiPwE5fj2n0kRbl DcBhHx7sPStCLFQp4KzMEAeHo2WgpwN2A+PHmS61658e9Tyj7gMTg3JHdkbx/Vjhl8F6 An+IXFWTXZbUhephTOfyCJQwmjxrn/RzPQFrp6xyIFrOGpkhaZ9M3DC4DEnOwP/zY85e izhd1hJFTe6tuw8U1asv8+sI9oEsfSYmMYZJnxF6TneRW2BNOgmZ4Wh51zVhIQ+1jMPi nggA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774026026; x=1774630826; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=+oMGshkaTUtlcfwpyB/xdNT7dTBVBr9LluYmKsZZkOA=; b=Wi1Oh0wd11GtEmQKcXiPzvMKzBWlFWDKxSPs3tTtk7+tedqlsVbYhKWBkPg3Vi6tFF Z1JsMUjlzHqweEsUsSN+Y6+hrct+gPRTLCGDW0ZTeur+y0t22wv2ndLHAUDl/AdJWj9o rZHEX5F8mjci1G8L1cPhAm8Ux+wU3henTFU/0IpP6AqjFgte4nZr+BLVR1+SUppCfy3m /qclOJ8Dq5+/s985ScvAMG+V75urXcsU3nMptgaTwVKFZmtc69I+SXDIpRTld1vfVS6f VyfaXaV4sBzVelwplErsjJETU7St8AQ8OXTIktI2u1wLDvU8MLfS6oNaKV7x/sM2XMoa QmHw== X-Forwarded-Encrypted: i=1; AJvYcCUqpNW2rjB2ie3mL/uJBr5LrOJxPcsl8hmV0/mD2zhTVeKahjAamm5oM0NsiQ2w6LOob0G2dOQcgyQUYWEo@lists.postgresql.org X-Gm-Message-State: AOJu0Yw6S+Q/RCxqvcju0PlZQ2STsCY0+cZeiZOZ/dxBJHDaSMy+y6gR myDtD5Pyz3JLdaN2ukEwxC0ZjlUxrm6m7hzYbp6Cq/l7RhrQiap1g5CSFnaJupmwfnOhqOK2UR0 w/xCRXYgSo6UQ2UvJTR77g6bsozQTqT0= X-Gm-Gg: ATEYQzycNqSQH944EWcngZB31s8PHGqbTmeu5L5Qi0WqtH7PzyltNlVjTqVvXL99bBT 1Wnkeun6Clx4Qtze0d2gwVzqfw7FMaHiU3g2DVqzW5WH3h7pyzfNPXR33ktSXyvlEq6Bq2gqgCz Vuc/f2J75OEpSsYz5IxS5zi72XgV/kN8GzT4bTtHLusUb6T+5CzGj0BOf3gdYrbMscyYMAKx9IC zvohWu4wYaUJKLSlMqQ8BvSJC3MbnIbC5H795Pw/krPWNxBFd+Jqb6iPahpwGEN7zLBR1kiYXM8 Aa1EO4Hmvk7s048= X-Received: by 2002:a05:6512:318b:b0:5a1:27b1:1e0b with SMTP id 2adb3069b0e04-5a285b5879dmr1336362e87.38.1774026026217; Fri, 20 Mar 2026 10:00:26 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Gyan Sreejith Date: Fri, 20 Mar 2026 13:00:14 -0400 X-Gm-Features: AaiRm50U2amDawjM32PSLb7IvNVUBBIAOK8wQZPdIQpf5fOnWtofs1H5OoAO2Fc Message-ID: Subject: Re: [Proposal] Adding Log File Capability to pg_createsubscriber To: =?UTF-8?B?S3Vyb2RhLCBIYXlhdG8v6buS55SwIOmavOS6ug==?= Cc: Amit Kapila , Shlok Kyal , vignesh C , Euler Taveira , "pgsql-hackers@lists.postgresql.org" , Peter Smith Content-Type: multipart/mixed; boundary="0000000000001d997f064d779ffa" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000001d997f064d779ffa Content-Type: multipart/alternative; boundary="0000000000001d997d064d779ff8" --0000000000001d997d064d779ff8 Content-Type: text/plain; charset="UTF-8" Thank you, Kuroda-san and Nisha! I have fixed everything that Nisha suggested. And I agree that all messages should be written to both the log file and the terminal. Thank you, Gyan --0000000000001d997d064d779ff8 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Thank you, Kuroda-san and Nisha!
I have fix= ed everything that Nisha suggested. And I agree that all messages should be= written to both the log file and the terminal.

Th= ank you,
Gyan
--0000000000001d997d064d779ff8-- --0000000000001d997f064d779ffa Content-Type: application/octet-stream; name="v15-0002-Add-a-new-argument-l-logdir-to-pg_createsubscrib.patch" Content-Disposition: attachment; filename="v15-0002-Add-a-new-argument-l-logdir-to-pg_createsubscrib.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmz59i0o1 RnJvbSBlMWM2MjMwNWJkYTJhZTkzMjYyMWQzMWVlNTUwNThiNzMyNjEyMmFhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHeWFuIFNyZWVqaXRoIDxneWFuLnNyZWVqaXRoQGdtYWlsLmNv bT4KRGF0ZTogRnJpLCAyMCBNYXIgMjAyNiAxMjozOTozNiAtMDQwMApTdWJqZWN0OiBbUEFUQ0gg djE1IDIvMl0gQWRkIGEgbmV3IGFyZ3VtZW50IC1sIDxsb2dkaXI+IHRvCiBwZ19jcmVhdGVzdWJz Y3JpYmVyLgoKRW5hYmxpbmcgdGhlIG9wdGlvbiB0byB3cml0ZSBtZXNzYWdlcyB0byBsb2cgZmls ZXMgaW4gdGhlIHNwZWNpZmllZCBkaXJlY3RvcnkuCkEgbmV3IGRpcmVjdG9yeSBpcyBjcmVhdGVk IGlmIHJlcXVpcmVkLiBBIHN1YmRpcmVjdG9yeSBpcyBjcmVhdGVkIHdpdGggdGltZXN0YW1wIGFz IGl0cyBuYW1lLCBhbmQgaXQgd2lsbCBjb250YWluIHR3byBuZXcgbG9nZmlsZXM6CjEuIHBnX2Ny ZWF0ZXN1YnNjcmliZXJfc2VydmVyLmxvZyAgLSBjYXB0dXJlcyBtZXNzYWdlcyByZWxhdGVkIHRv IHN0YXJ0aW5nIGFuZCBzdG9wcGluZyB0aGUgc3RhbmRieSBzZXJ2ZXIuCjIuIHBnX2NyZWF0ZXN1 YnNjcmliZXJfaW50ZXJuYWwubG9nIC0gY2FwdHVyZXMgaW50ZXJuYWwgZGlhZ25vc3RpYyBvdXRw dXQgZnJvbSBwZ19jcmVhdGVzdWJzY3JpYmVyLgoKRm9yIGV4YW1wbGUsIGlmIHdlIHNwZWNpZnkg LWwgYWJjIGFzIGFuIGFyZ3VtZW50LCBhbmQgaWYgdGhlIHRpbWVzdGFtcCBvbiBydW5uaW5nIGl0 IGlzIDIwMjYwMTE5VDIwNDMxNy4yMDQsIGEgZGlyZWN0b3J5IGFiYyBpcyBjcmVhdGVkIGlmIGl0 IGRvZXNuJ3QgZXhpc3QgYWxyZWFkeSwgd2l0aCAyMDI2MDExOVQyMDQzMTcuMjA0IGFzIGl0cyBz dWJkaXJlY3RvcnkgYW5kIGl0IHdpbGwgY29udGFpbiB0aGUgdHdvIGxvZyBmaWxlcyBwZ19jcmVh dGVzdWJzY3JpYmVyX3NlcnZlci5sb2cgYW5kIHBnX2NyZWF0ZXN1YnNjcmliZXJfaW50ZXJuYWwu bG9nCi0tLQogZG9jL3NyYy9zZ21sL3JlZi9wZ19jcmVhdGVzdWJzY3JpYmVyLnNnbWwgICAgIHwg IDI5ICsrKwogc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3BnX2NyZWF0ZXN1YnNjcmliZXIuYyAgIHwg MTc0ICsrKysrKysrKysrKysrKysrLQogLi4uL3QvMDQwX3BnX2NyZWF0ZXN1YnNjcmliZXIucGwg ICAgICAgICAgICAgIHwgIDQxICsrKystCiAzIGZpbGVzIGNoYW5nZWQsIDIzMiBpbnNlcnRpb25z KCspLCAxMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3BnX2Ny ZWF0ZXN1YnNjcmliZXIuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcGdfY3JlYXRlc3Vic2NyaWJl ci5zZ21sCmluZGV4IGNmNDVmZjM1NzNkLi5mZjYzNWJhMjZjYiAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL3JlZi9wZ19jcmVhdGVzdWJzY3JpYmVyLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3Jl Zi9wZ19jcmVhdGVzdWJzY3JpYmVyLnNnbWwKQEAgLTEzNiw2ICsxMzYsMzUgQEAgUG9zdGdyZVNR TCBkb2N1bWVudGF0aW9uCiAgICAgIDwvbGlzdGl0ZW0+CiAgICAgPC92YXJsaXN0ZW50cnk+CiAK KyAgICA8dmFybGlzdGVudHJ5PgorICAgICA8dGVybT48b3B0aW9uPi1sIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5kaXJlY3Rvcnk8L3JlcGxhY2VhYmxlPjwvb3B0aW9uPjwvdGVybT4K KyAgICAgPHRlcm0+PG9wdGlvbj4tLWxvZ2Rpcj08cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+ZGlyZWN0b3J5PC9yZXBsYWNlYWJsZT48L29wdGlvbj48L3Rlcm0+CisgICAgIDxsaXN0aXRl bT4KKyAgICAgIDxwYXJhPgorICAgICAgIFNwZWNpZnkgdGhlIG5hbWUgb2YgdGhlIGxvZyBkaXJl Y3RvcnkuIEEgbmV3IGRpcmVjdG9yeSBpcyBjcmVhdGVkIHdpdGgKKyAgICAgICB0aGlzIG5hbWUg aWYgaXQgZG9lcyBub3QgZXhpc3QuIEEgc3ViZGlyZWN0b3J5IHdpdGggYSB0aW1lc3RhbXAKKyAg ICAgICBpbmRpY2F0aW5nIHRoZSB0aW1lIGF0IHdoaWNoIDxhcHBsaWNhdGlvbj5wZ19jcmVhdGVz dWJzY3JpYmVyPC9hcHBsaWNhdGlvbj4KKyAgICAgICB3YXMgcnVuIHdpbGwgYmUgY3JlYXRlZC4g VGhlIGZvbGxvd2luZyB0d28gbG9nIGZpbGVzIHdpbGwgYmUgY3JlYXRlZCBpbgorICAgICAgIHRo ZSBzdWJkaXJlY3Rvcnkgd2l0aCBhIHVtYXNrIG9mIDA3NyBzbyB0aGF0IGFjY2VzcyBpcyBkaXNh bGxvd2VkIHRvCisgICAgICAgb3RoZXIgdXNlcnMgYnkgZGVmYXVsdC4KKyAgICAgICA8aXRlbWl6 ZWRsaXN0PgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICA8cGFyYT4KKyAgICAgICAgICA8 bGl0ZXJhbD5wZ19jcmVhdGVzdWJzY3JpYmVyX3NlcnZlci5sb2c8L2xpdGVyYWw+IHdoaWNoIGNh cHR1cmVzIGxvZ3MKKyAgICAgICAgICByZWxhdGVkIHRvIHN0b3BwaW5nIGFuZCBzdGFydGluZyB0 aGUgc3RhbmRieSBzZXJ2ZXIsCisgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+ CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgIDxwYXJhPgorICAgICAgICAgIDxsaXRlcmFs PnBnX2NyZWF0ZXN1YnNjcmliZXJfaW50ZXJuYWwubG9nPC9saXRlcmFsPiB3aGljaCBjYXB0dXJl cworICAgICAgICAgIGludGVybmFsIGRpYWdub3N0aWMgb3V0cHV0ICh2YWxpZGF0aW9ucywgY2hl Y2tzLCBldGMuKQorICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAg IDwvaXRlbWl6ZWRsaXN0PgorICAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgIDwv dmFybGlzdGVudHJ5PgorCiAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgPHRlcm0+PG9wdGlvbj4t bjwvb3B0aW9uPjwvdGVybT4KICAgICAgPHRlcm0+PG9wdGlvbj4tLWRyeS1ydW48L29wdGlvbj48 L3Rlcm0+CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvcGdfY3JlYXRlc3Vic2Ny aWJlci5jIGIvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3BnX2NyZWF0ZXN1YnNjcmliZXIuYwppbmRl eCBjM2RmODMwMjVkNy4uZjJkOGNkMzhhYmYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfYmFzZWJh Y2t1cC9wZ19jcmVhdGVzdWJzY3JpYmVyLmMKKysrIGIvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3Bn X2NyZWF0ZXN1YnNjcmliZXIuYwpAQCAtNTUsMTAgKzU1LDE0IEBACiAjZGVmaW5lIElOQ0xVREVE X0NPTkZfRklMRQkJCSJwZ19jcmVhdGVzdWJzY3JpYmVyLmNvbmYiCiAjZGVmaW5lIElOQ0xVREVE X0NPTkZfRklMRV9ESVNBQkxFRAlJTkNMVURFRF9DT05GX0ZJTEUgIi5kaXNhYmxlZCIKIAorI2Rl ZmluZSBTRVJWRVJfTE9HX0ZJTEVfTkFNRSAicGdfY3JlYXRlc3Vic2NyaWJlcl9zZXJ2ZXIiCisj ZGVmaW5lIElOVEVSTkFMX0xPR19GSUxFX05BTUUgInBnX2NyZWF0ZXN1YnNjcmliZXJfaW50ZXJu YWwiCisKIC8qIENvbW1hbmQtbGluZSBvcHRpb25zICovCiBzdHJ1Y3QgQ3JlYXRlU3Vic2NyaWJl ck9wdGlvbnMKIHsKIAljaGFyCSAgICpjb25maWdfZmlsZTsJLyogY29uZmlndXJhdGlvbiBmaWxl ICovCisJY2hhcgkgICAqbG9nX2RpcjsJCS8qIGxvZyBkaXJlY3RvcnkgbmFtZSAqLwogCWNoYXIJ ICAgKnB1Yl9jb25uaW5mb19zdHI7CS8qIHB1Ymxpc2hlciBjb25uZWN0aW9uIHN0cmluZyAqLwog CWNoYXIJICAgKnNvY2tldF9kaXI7CQkvKiBkaXJlY3RvcnkgZm9yIFVuaXgtZG9tYWluIHNvY2tl dCwgaWYgYW55ICovCiAJY2hhcgkgICAqc3ViX3BvcnQ7CQkvKiBzdWJzY3JpYmVyIHBvcnQgbnVt YmVyICovCkBAIC0xNTUsOCArMTU5LDE0IEBAIHN0YXRpYyB2b2lkIGdldF9wdWJsaXNoZXJfZGF0 YWJhc2VzKHN0cnVjdCBDcmVhdGVTdWJzY3JpYmVyT3B0aW9ucyAqb3B0LAogc3RhdGljIHZvaWQg cGdfY3JlYXRlc3ViX2xvZyhlbnVtIHBnX2xvZ19sZXZlbCwgZW51bSBwZ19sb2dfcGFydCwKIAkJ CQkJCQkgY29uc3QgY2hhciAqcGdfcmVzdHJpY3QgZm10LC4uLikKIAkJCXBnX2F0dHJpYnV0ZV9w cmludGYoMywgNCk7CitzdGF0aWMgdm9pZCBwZ19jcmVhdGVzdWJfbG9nX3YoZW51bSBwZ19sb2df bGV2ZWwgbGV2ZWwsIGVudW0gcGdfbG9nX3BhcnQgcGFydCwKKwkJCQkJCQkgICBjb25zdCBjaGFy ICpwZ19yZXN0cmljdCBmbXQsIHZhX2xpc3QgYXJncykKKwkJCXBnX2F0dHJpYnV0ZV9wcmludGYo MywgMCk7CiBwZ19ub3JldHVybiBzdGF0aWMgdm9pZCBwZ19mYXRhbChjb25zdCBjaGFyICpwZ19y ZXN0cmljdCBmbXQsLi4uKQogCQkJcGdfYXR0cmlidXRlX3ByaW50ZigxLCAyKTsKK3N0YXRpYyB2 b2lkIGludGVybmFsX2xvZ19maWxlX3dyaXRlKGVudW0gcGdfbG9nX2xldmVsIGxldmVsLAorCQkJ CQkJCQkJY29uc3QgY2hhciAqcGdfcmVzdHJpY3QgZm10LCB2YV9saXN0IGFyZ3MpCisJCQlwZ19h dHRyaWJ1dGVfcHJpbnRmKDIsIDApOwogCiAjZGVmaW5lCVdBSVRfSU5URVJWQUwJMQkJLyogMSBz ZWNvbmQgKi8KIApAQCAtMTc4LDYgKzE4OCw5IEBAIHN0YXRpYyBwZ19wcm5nX3N0YXRlIHBybmdf c3RhdGU7CiBzdGF0aWMgY2hhciAqcGdfY3RsX3BhdGggPSBOVUxMOwogc3RhdGljIGNoYXIgKnBn X3Jlc2V0d2FsX3BhdGggPSBOVUxMOwogCitzdGF0aWMgRklMRSAqaW50ZXJuYWxfbG9nX2ZpbGVf ZnAgPSBOVUxMOwkvKiBGaWxlIHB0ciB0byBsb2cgYWxsIG1lc3NhZ2VzIHRvICovCitzdGF0aWMg Y2hhciBsb2dkaXJbTUFYUEdQQVRIXTsJLyogRGlyZWN0b3J5IGxvZyBmaWxlcyBhcmUgcHV0IChp ZiBzcGVjaWZpZWQpICovCisKIC8qIHN0YW5kYnkgLyBzdWJzY3JpYmVyIGRhdGEgZGlyZWN0b3J5 ICovCiBzdGF0aWMgY2hhciAqc3Vic2NyaWJlcl9kaXIgPSBOVUxMOwogCkBAIC0xODYsOCArMTk5 LDI4IEBAIHN0YXRpYyBib29sIHN0YW5kYnlfcnVubmluZyA9IGZhbHNlOwogc3RhdGljIGJvb2wg cmVjb3ZlcnlfcGFyYW1zX3NldCA9IGZhbHNlOwogCiAvKgotICogUmVwb3J0IGEgbWVzc2FnZSB3 aXRoIGEgZ2l2ZW4gbG9nIGxldmVsCisgKiBSZXBvcnQgYSBtZXNzYWdlIHdpdGggYSBnaXZlbiBs b2cgbGV2ZWwgdG8gc3RkZXJyIGFuZCBsb2cgZmlsZQorICogKGlmIHNwZWNpZmllZCkuCiAgKi8K K3N0YXRpYyB2b2lkCitwZ19jcmVhdGVzdWJfbG9nX3YoZW51bSBwZ19sb2dfbGV2ZWwgbGV2ZWws IGVudW0gcGdfbG9nX3BhcnQgcGFydCwKKwkJCQkgICBjb25zdCBjaGFyICpwZ19yZXN0cmljdCBm bXQsIHZhX2xpc3QgYXJncykKK3sKKwlpZiAoaW50ZXJuYWxfbG9nX2ZpbGVfZnAgIT0gTlVMTCkK Kwl7CisJCS8qIE91dHB1dCB0byBib3RoIHN0ZGVyciBhbmQgdGhlIGxvZyBmaWxlICovCisJCXZh X2xpc3QJCWFyZ19jcHk7CisKKwkJdmFfY29weShhcmdfY3B5LCBhcmdzKTsKKwkJcGdfbG9nX2dl bmVyaWNfdihsZXZlbCwgcGFydCwgZm10LCBhcmdfY3B5KTsKKwkJdmFfZW5kKGFyZ19jcHkpOwor CisJCWludGVybmFsX2xvZ19maWxlX3dyaXRlKGxldmVsLCBmbXQsIGFyZ3MpOworCX0KKwllbHNl CisJCXBnX2xvZ19nZW5lcmljX3YobGV2ZWwsIHBhcnQsIGZtdCwgYXJncyk7Cit9CisKIHN0YXRp YyB2b2lkCiBwZ19jcmVhdGVzdWJfbG9nKGVudW0gcGdfbG9nX2xldmVsIGxldmVsLCBlbnVtIHBn X2xvZ19wYXJ0IHBhcnQsCiAJCQkJIGNvbnN0IGNoYXIgKnBnX3Jlc3RyaWN0IGZtdCwuLi4pCkBA IC0xOTYsNyArMjI5LDcgQEAgcGdfY3JlYXRlc3ViX2xvZyhlbnVtIHBnX2xvZ19sZXZlbCBsZXZl bCwgZW51bSBwZ19sb2dfcGFydCBwYXJ0LAogCiAJdmFfc3RhcnQoYXJncywgZm10KTsKIAotCXBn X2xvZ19nZW5lcmljX3YobGV2ZWwsIHBhcnQsIGZtdCwgYXJncyk7CisJcGdfY3JlYXRlc3ViX2xv Z192KGxldmVsLCBwYXJ0LCBmbXQsIGFyZ3MpOwogCiAJdmFfZW5kKGFyZ3MpOwogfQpAQCAtMjEx LDcgKzI0NCw3IEBAIHBnX2ZhdGFsKGNvbnN0IGNoYXIgKnBnX3Jlc3RyaWN0IGZtdCwuLi4pCiAK IAl2YV9zdGFydChhcmdzLCBmbXQpOwogCi0JcGdfbG9nX2dlbmVyaWNfdihQR19MT0dfRVJST1Is IFBHX0xPR19QUklNQVJZLCBmbXQsIGFyZ3MpOworCXBnX2NyZWF0ZXN1Yl9sb2dfdihQR19MT0df RVJST1IsIFBHX0xPR19QUklNQVJZLCBmbXQsIGFyZ3MpOwogCiAJdmFfZW5kKGFyZ3MpOwogCkBA IC0zMTksNiArMzUyLDEyIEBAIGNsZWFudXBfb2JqZWN0c19hdGV4aXQodm9pZCkKIAogCWlmIChz dGFuZGJ5X3J1bm5pbmcpCiAJCXN0b3Bfc3RhbmRieV9zZXJ2ZXIoc3Vic2NyaWJlcl9kaXIpOwor CisJaWYgKGludGVybmFsX2xvZ19maWxlX2ZwICE9IE5VTEwpCisJeworCQlmY2xvc2UoaW50ZXJu YWxfbG9nX2ZpbGVfZnApOworCQlpbnRlcm5hbF9sb2dfZmlsZV9mcCA9IE5VTEw7CisJfQogfQog CiBzdGF0aWMgdm9pZApAQCAtMzMzLDYgKzM3Miw3IEBAIHVzYWdlKHZvaWQpCiAJCQkgIiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhYmFzZXMgYW5kIGRhdGFiYXNlcyB0aGF0 IGRvbid0IGFsbG93IGNvbm5lY3Rpb25zXG4iKSk7CiAJcHJpbnRmKF8oIiAgLWQsIC0tZGF0YWJh c2U9REJOQU1FICAgICAgICAgICBkYXRhYmFzZSBpbiB3aGljaCB0byBjcmVhdGUgYSBzdWJzY3Jp cHRpb25cbiIpKTsKIAlwcmludGYoXygiICAtRCwgLS1wZ2RhdGE9REFUQURJUiAgICAgICAgICAg IGxvY2F0aW9uIGZvciB0aGUgc3Vic2NyaWJlciBkYXRhIGRpcmVjdG9yeVxuIikpOworCXByaW50 ZihfKCIgIC1sLCAtLWxvZ2Rpcj1MT0dESVIgICAgICAgICAgICAgbG9jYXRpb24gZm9yIHRoZSBs b2cgZGlyZWN0b3J5XG4iKSk7CiAJcHJpbnRmKF8oIiAgLW4sIC0tZHJ5LXJ1biAgICAgICAgICAg ICAgICAgICBkcnkgcnVuLCBqdXN0IHNob3cgd2hhdCB3b3VsZCBiZSBkb25lXG4iKSk7CiAJcHJp bnRmKF8oIiAgLXAsIC0tc3Vic2NyaWJlci1wb3J0PVBPUlQgICAgICBzdWJzY3JpYmVyIHBvcnQg bnVtYmVyIChkZWZhdWx0ICVzKVxuIiksIERFRkFVTFRfU1VCX1BPUlQpOwogCXByaW50ZihfKCIg IC1QLCAtLXB1Ymxpc2hlci1zZXJ2ZXI9Q09OTlNUUiAgcHVibGlzaGVyIGNvbm5lY3Rpb24gc3Ry aW5nXG4iKSk7CkBAIC03NjcsNiArODA3LDcgQEAgbW9kaWZ5X3N1YnNjcmliZXJfc3lzaWQoY29u c3Qgc3RydWN0IENyZWF0ZVN1YnNjcmliZXJPcHRpb25zICpvcHQpCiAJYm9vbAkJY3JjX29rOwog CXN0cnVjdCB0aW1ldmFsIHR2OwogCisJY2hhcgkgICAqb3V0X2ZpbGU7CiAJY2hhcgkgICAqY21k X3N0cjsKIAogCXBnX2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0lORk8sIFBHX0xPR19QUklNQVJZLApA QCAtODA1LDggKzg0NiwyMCBAQCBtb2RpZnlfc3Vic2NyaWJlcl9zeXNpZChjb25zdCBzdHJ1Y3Qg Q3JlYXRlU3Vic2NyaWJlck9wdGlvbnMgKm9wdCkKIAkJcGdfY3JlYXRlc3ViX2xvZyhQR19MT0df SU5GTywgUEdfTE9HX1BSSU1BUlksCiAJCQkJCQkgInJ1bm5pbmcgcGdfcmVzZXR3YWwgb24gdGhl IHN1YnNjcmliZXIiKTsKIAotCWNtZF9zdHIgPSBwc3ByaW50ZigiXCIlc1wiIC1EIFwiJXNcIiA+ IFwiJXNcIiIsIHBnX3Jlc2V0d2FsX3BhdGgsCi0JCQkJCSAgIHN1YnNjcmliZXJfZGlyLCBERVZO VUxMKTsKKwkvKgorCSAqIFJlZGlyZWN0aW5nIHRoZSBvdXRwdXQgdG8gdGhlIGxvZ2ZpbGUgaWYg c3BlY2lmaWVkLiBTaW5jZSB0aGUgb3V0cHV0CisJICogd291bGQgYmUgdmVyeSBzaG9ydCwgYXJv dW5kIG9uZSBsaW5lLCB3ZSBkbyBub3QgcHJvdmlkZSBhIHNlcGFyYXRlIGZpbGUKKwkgKiBmb3Ig aXQ7IGl0J3MgZG9uZSBhcyBhIHBhcnQgb2YgdGhlIHNlcnZlciBsb2cuCisJICovCisJaWYgKG9w dC0+bG9nX2RpcikKKwkJb3V0X2ZpbGUgPSBwc3ByaW50ZigiJXMvJXMubG9nIiwgbG9nZGlyLCBT RVJWRVJfTE9HX0ZJTEVfTkFNRSk7CisJZWxzZQorCQlvdXRfZmlsZSA9IERFVk5VTEw7CisKKwlj bWRfc3RyID0gcHNwcmludGYoIlwiJXNcIiAtRCBcIiVzXCIgPj4gXCIlc1wiIiwgcGdfcmVzZXR3 YWxfcGF0aCwKKwkJCQkJICAgc3Vic2NyaWJlcl9kaXIsIG91dF9maWxlKTsKKwlpZiAob3B0LT5s b2dfZGlyKQorCQlwZ19mcmVlKG91dF9maWxlKTsKIAogCXBnX2NyZWF0ZXN1Yl9sb2coUEdfTE9H X0RFQlVHLCBQR19MT0dfUFJJTUFSWSwKIAkJCQkJICJwZ19yZXNldHdhbCBjb21tYW5kIGlzOiAl cyIsIGNtZF9zdHIpOwpAQCAtODIzLDYgKzg3Niw3IEBAIG1vZGlmeV9zdWJzY3JpYmVyX3N5c2lk KGNvbnN0IHN0cnVjdCBDcmVhdGVTdWJzY3JpYmVyT3B0aW9ucyAqb3B0KQogCX0KIAogCXBnX2Zy ZWUoY2YpOworCXBnX2ZyZWUoY21kX3N0cik7CiB9CiAKIC8qCkBAIC0xMDI5LDYgKzEwODMsODkg QEAgc2VydmVyX2lzX2luX3JlY292ZXJ5KFBHY29ubiAqY29ubikKIAlyZXR1cm4gcmV0ID09IDA7 CiB9CiAKK3N0YXRpYyB2b2lkCitpbnRlcm5hbF9sb2dfZmlsZV93cml0ZShlbnVtIHBnX2xvZ19s ZXZlbCBsZXZlbCwgY29uc3QgY2hhciAqcGdfcmVzdHJpY3QgZm10LAorCQkJCQkJdmFfbGlzdCBh cmdzKQoreworCUFzc2VydChpbnRlcm5hbF9sb2dfZmlsZV9mcCk7CisKKwkvKiBEbyBub3RoaW5n IGlmIGxvZyBsZXZlbCBpcyB0b28gbG93LiAqLworCWlmIChsZXZlbCA8IF9fcGdfbG9nX2xldmVs KQorCQlyZXR1cm47CisKKwl2ZnByaW50ZihpbnRlcm5hbF9sb2dfZmlsZV9mcCwgXyhmbXQpLCBh cmdzKTsKKworCWZwcmludGYoaW50ZXJuYWxfbG9nX2ZpbGVfZnAsICJcbiIpOworCWZmbHVzaChp bnRlcm5hbF9sb2dfZmlsZV9mcCk7Cit9CisKKy8qCisgKiBPcGVuIGEgbmV3IGxvZ2ZpbGUgd2l0 aCBwcm9wZXIgcGVybWlzc2lvbnMuCisgKiBGcm9tIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvc3lz bG9nZ2VyLmMKKyAqLworc3RhdGljIEZJTEUgKgorbG9nZmlsZV9vcGVuKGNvbnN0IGNoYXIgKmZp bGVuYW1lLCBjb25zdCBjaGFyICptb2RlKQoreworCUZJTEUJICAgKmZoOworCW1vZGVfdAkJb3Vt YXNrOworCisJb3VtYXNrID0gdW1hc2soKG1vZGVfdCkgKCh+KFNfSVJVU1IgfCBTX0lXVVNSKSkg JiAoU19JUldYVSB8IFNfSVJXWEcgfCBTX0lSV1hPKSkpOworCWZoID0gZm9wZW4oZmlsZW5hbWUs IG1vZGUpOworCXVtYXNrKG91bWFzayk7CisKKwlpZiAoZmgpCisJeworCQlzZXR2YnVmKGZoLCBO VUxMLCBQR19JT0xCRiwgMCk7CisKKyNpZmRlZiBXSU4zMgorCQkvKiB1c2UgQ1JMRiBsaW5lIGVu ZGluZ3Mgb24gV2luZG93cyAqLworCQlfc2V0bW9kZShfZmlsZW5vKGZoKSwgX09fVEVYVCk7Cisj ZW5kaWYKKwl9CisJZWxzZQorCQlwZ19mYXRhbCgiY291bGQgbm90IG9wZW4gbG9nIGZpbGUgXCIl c1wiOiAlbSIsCisJCQkJIGZpbGVuYW1lKTsKKworCXJldHVybiBmaDsKK30KKworc3RhdGljIHZv aWQKK21ha2Vfb3V0cHV0X2RpcnMoY29uc3QgY2hhciAqbG9nX2Jhc2VkaXIpCit7CisJY2hhcgkJ dGltZXN0YW1wWzEyOF07CisJc3RydWN0IHRpbWV2YWwgdHZhbDsKKwl0aW1lX3QJCW5vdzsKKwlz dHJ1Y3QgdG0JdG1idWY7CisJaW50CQkJbGVuOworCisJLyogR2VuZXJhdGUgdGltZXN0YW1wICov CisJZ2V0dGltZW9mZGF5KCZ0dmFsLCBOVUxMKTsKKwlub3cgPSB0dmFsLnR2X3NlYzsKKworCXN0 cmZ0aW1lKHRpbWVzdGFtcCwgc2l6ZW9mKHRpbWVzdGFtcCksICIlWSVtJWRUJUglTSVTIiwKKwkJ CSBsb2NhbHRpbWVfcigmbm93LCAmdG1idWYpKTsKKworCS8qIGFwcGVuZCBtaWxsaXNlY29uZHMg Ki8KKwlzbnByaW50Zih0aW1lc3RhbXAgKyBzdHJsZW4odGltZXN0YW1wKSwKKwkJCSBzaXplb2Yo dGltZXN0YW1wKSAtIHN0cmxlbih0aW1lc3RhbXApLCAiLiUwM3UiLAorCQkJICh1bnNpZ25lZCBp bnQpICh0dmFsLnR2X3VzZWMgLyAxMDAwKSk7CisKKwkvKiBCdWlsZCB0aW1lc3RhbXAgZGlyZWN0 b3J5IHBhdGggKi8KKwlsZW4gPSBzbnByaW50Zihsb2dkaXIsIE1BWFBHUEFUSCwgIiVzLyVzIiwg bG9nX2Jhc2VkaXIsIHRpbWVzdGFtcCk7CisKKwlpZiAobGVuID49IE1BWFBHUEFUSCkKKwkJcGdf ZmF0YWwoImRpcmVjdG9yeSBwYXRoIGZvciBsb2cgZmlsZXMsICVzLyVzLCBpcyB0b28gbG9uZyIs CisJCQkJIGxvZ2RpciwgdGltZXN0YW1wKTsKKworCS8qIENyZWF0ZSBiYXNlIGRpcmVjdG9yeSAo aWdub3JlIGlmIGV4aXN0cykgKi8KKwlpZiAobWtkaXIobG9nX2Jhc2VkaXIsIFNfSVJXWFUpIDwg MCAmJiBlcnJubyAhPSBFRVhJU1QpCisJCXBnX2ZhdGFsKCJjb3VsZCBub3QgY3JlYXRlIGRpcmVj dG9yeSBcIiVzXCI6ICVtIiwgbG9nX2Jhc2VkaXIpOworCisJLyogQ3JlYXRlIEJBU0VfRElSLyR0 aW1lc3RhbXAgKi8KKwlpZiAobWtkaXIobG9nZGlyLCBTX0lSV1hVKSA8IDApCisJCXBnX2ZhdGFs KCJjb3VsZCBub3QgY3JlYXRlIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwgbG9nZGlyKTsKK30KKwog LyoKICAqIElzIHRoZSBwcmltYXJ5IHNlcnZlciByZWFkeSBmb3IgbG9naWNhbCByZXBsaWNhdGlv bj8KICAqCkBAIC0xNzg3LDYgKzE5MjQsOSBAQCBzdGFydF9zdGFuZGJ5X3NlcnZlcihjb25zdCBz dHJ1Y3QgQ3JlYXRlU3Vic2NyaWJlck9wdGlvbnMgKm9wdCwgYm9vbCByZXN0cmljdGVkXwogCWlm IChyZXN0cmljdF9sb2dpY2FsX3dvcmtlcikKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocGdfY3Rs X2NtZCwgIiAtbyBcIi1jIG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnM9MFwiIik7CiAK KwlpZiAob3B0LT5sb2dfZGlyKQorCQlhcHBlbmRQUUV4cEJ1ZmZlcihwZ19jdGxfY21kLCAiIC1s IFwiJXMvJXMubG9nXCIiLCBsb2dkaXIsIFNFUlZFUl9MT0dfRklMRV9OQU1FKTsKKwogCXBnX2Ny ZWF0ZXN1Yl9sb2coUEdfTE9HX0RFQlVHLCBQR19MT0dfUFJJTUFSWSwKIAkJCQkJICJwZ19jdGwg Y29tbWFuZCBpczogJXMiLCBwZ19jdGxfY21kLT5kYXRhKTsKIAlyYyA9IHN5c3RlbShwZ19jdGxf Y21kLT5kYXRhKTsKQEAgLTIzNTcsNiArMjQ5Nyw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiph cmd2KQogCQl7ImFsbCIsIG5vX2FyZ3VtZW50LCBOVUxMLCAnYSd9LAogCQl7ImRhdGFiYXNlIiwg cmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdkJ30sCiAJCXsicGdkYXRhIiwgcmVxdWlyZWRfYXJn dW1lbnQsIE5VTEwsICdEJ30sCisJCXsibG9nZGlyIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEws ICdsJ30sCiAJCXsiZHJ5LXJ1biIsIG5vX2FyZ3VtZW50LCBOVUxMLCAnbid9LAogCQl7InN1YnNj cmliZXItcG9ydCIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAncCd9LAogCQl7InB1Ymxpc2hl ci1zZXJ2ZXIiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1AnfSwKQEAgLTI0MTUsNiArMjU1 Niw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCS8qIERlZmF1bHQgc2V0dGluZ3Mg Ki8KIAlzdWJzY3JpYmVyX2RpciA9IE5VTEw7CiAJb3B0LmNvbmZpZ19maWxlID0gTlVMTDsKKwlv cHQubG9nX2RpciA9IE5VTEw7CiAJb3B0LnB1Yl9jb25uaW5mb19zdHIgPSBOVUxMOwogCW9wdC5z b2NrZXRfZGlyID0gTlVMTDsKIAlvcHQuc3ViX3BvcnQgPSBERUZBVUxUX1NVQl9QT1JUOwpAQCAt MjQ0NSw3ICsyNTg3LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAKIAlnZXRfcmVz dHJpY3RlZF90b2tlbigpOwogCi0Jd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJndiwg ImFkOkQ6bnA6UDpzOnQ6VFU6diIsCisJd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJn diwgImFkOkQ6bDpucDpQOnM6dDpUVTp2IiwKIAkJCQkJCQlsb25nX29wdGlvbnMsICZvcHRpb25f aW5kZXgpKSAhPSAtMSkKIAl7CiAJCXN3aXRjaCAoYykKQEAgLTI0NjYsNiArMjYwOCwxMCBAQCBt YWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJCQlzdWJzY3JpYmVyX2RpciA9IHBnX3N0cmR1 cChvcHRhcmcpOwogCQkJCWNhbm9uaWNhbGl6ZV9wYXRoKHN1YnNjcmliZXJfZGlyKTsKIAkJCQli cmVhazsKKwkJCWNhc2UgJ2wnOgorCQkJCW9wdC5sb2dfZGlyID0gcGdfc3RyZHVwKG9wdGFyZyk7 CisJCQkJY2Fub25pY2FsaXplX3BhdGgob3B0LmxvZ19kaXIpOworCQkJCWJyZWFrOwogCQkJY2Fz ZSAnbic6CiAJCQkJZHJ5X3J1biA9IHRydWU7CiAJCQkJYnJlYWs7CkBAIC0yNjEzLDYgKzI3NTks MTkgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCWV4aXQoMSk7CiAJfQogCisJaWYg KG9wdC5sb2dfZGlyICE9IE5VTEwpCisJeworCQljaGFyCSAgICppbnRlcm5hbF9sb2dfZmlsZTsK KworCQltYWtlX291dHB1dF9kaXJzKG9wdC5sb2dfZGlyKTsKKwkJaW50ZXJuYWxfbG9nX2ZpbGUg PSBwc3ByaW50ZigiJXMvJXMubG9nIiwgbG9nZGlyLAorCQkJCQkJCQkJIElOVEVSTkFMX0xPR19G SUxFX05BTUUpOworCisJCS8qIGxvZ2ZpbGVfb3BlbigpIHdpbGwgZXhpdCBpZiB0aGVyZSBpcyBh biBlcnJvciAqLworCQlpbnRlcm5hbF9sb2dfZmlsZV9mcCA9IGxvZ2ZpbGVfb3BlbihpbnRlcm5h bF9sb2dfZmlsZSwgImEiKTsKKwkJcGdfZnJlZShpbnRlcm5hbF9sb2dfZmlsZSk7CisJfQorCiAJ aWYgKGRyeV9ydW4pCiAJCXBnX2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0lORk8sIFBHX0xPR19QUklN QVJZLAogCQkJCQkJICJFeGVjdXRpbmcgaW4gZHJ5LXJ1biBtb2RlLlxuIgpAQCAtMjgzMiw1ICsy OTkxLDggQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJcGdfY3JlYXRlc3ViX2xvZyhQ R19MT0dfSU5GTywgUEdfTE9HX1BSSU1BUlksCiAJCQkJCSAiRG9uZSEiKTsKIAorCWlmIChpbnRl cm5hbF9sb2dfZmlsZV9mcCAhPSBOVUxMKQorCQlmY2xvc2UoaW50ZXJuYWxfbG9nX2ZpbGVfZnAp OworCiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvdC8w NDBfcGdfY3JlYXRlc3Vic2NyaWJlci5wbCBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC90LzA0MF9w Z19jcmVhdGVzdWJzY3JpYmVyLnBsCmluZGV4IDBjMjdmY2E3YmI3Li44NTgwODJjNzBkZiAxMDA2 NDQKLS0tIGEvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3QvMDQwX3BnX2NyZWF0ZXN1YnNjcmliZXIu cGwKKysrIGIvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3QvMDQwX3BnX2NyZWF0ZXN1YnNjcmliZXIu cGwKQEAgLTE0LDYgKzE0LDcgQEAgcHJvZ3JhbV92ZXJzaW9uX29rKCdwZ19jcmVhdGVzdWJzY3Jp YmVyJyk7CiBwcm9ncmFtX29wdGlvbnNfaGFuZGxpbmdfb2soJ3BnX2NyZWF0ZXN1YnNjcmliZXIn KTsKIAogbXkgJGRhdGFkaXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGVtcGRpcjsKK215 ICRsb2dkaXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGVtcGRpcjsKIAogIyBHZW5lcmF0 ZSBhIGRhdGFiYXNlIHdpdGggYSBuYW1lIG1hZGUgb2YgYSByYW5nZSBvZiBBU0NJSSBjaGFyYWN0 ZXJzLgogIyBFeHRyYWN0ZWQgZnJvbSAwMDJfcGdfdXBncmFkZS5wbC4KQEAgLTM2Miw5ICszNjMs MzUgQEAgY29tbWFuZF9vaygKIAkJJy0tc3Vic2NyaXB0aW9uJyA9PiAnc3ViMicsCiAJCSctLWRh dGFiYXNlJyA9PiAkZGIxLAogCQknLS1kYXRhYmFzZScgPT4gJGRiMiwKKwkJJy0tbG9nZGlyJyA9 PiAkbG9nZGlyLAogCV0sCiAJJ3J1biBwZ19jcmVhdGVzdWJzY3JpYmVyIC0tZHJ5LXJ1biBvbiBu b2RlIFMnKTsKIAorIyBDaGVjayB0aGF0IHRoZSBsb2cgZmlsZXMgd2VyZSBjcmVhdGVkCitteSBA c2VydmVyX2xvZ19maWxlcyA9IGdsb2IgIiRsb2dkaXIvKi9wZ19jcmVhdGVzdWJzY3JpYmVyX3Nl cnZlci5sb2ciOworaXMoc2NhbGFyKEBzZXJ2ZXJfbG9nX2ZpbGVzKSwKKwkxLCAicGdfY3JlYXRl c3Vic2NyaWJlcl9zZXJ2ZXIubG9nIGZpbGUgd2FzIGNyZWF0ZWQiKTsKK215ICRzZXJ2ZXJfbG9n X2ZpbGVfc2l6ZSA9IC1zICRzZXJ2ZXJfbG9nX2ZpbGVzWzBdOworaXNudCgkc2VydmVyX2xvZ19m aWxlX3NpemUsIDAsCisJInBnX2NyZWF0ZXN1YnNjcmliZXJfc2VydmVyLmxvZyBmaWxlIG5vdCBl bXB0eSIpOworbXkgJHNlcnZlcl9sb2cgPSBzbHVycF9maWxlKCRzZXJ2ZXJfbG9nX2ZpbGVzWzBd KTsKK2xpa2UoCisJJHNlcnZlcl9sb2csCisJcXIvY29uc2lzdGVudCByZWNvdmVyeSBzdGF0ZSBy ZWFjaGVkLywKKwkic2VydmVyIHJlYWNoZWQgY29uc2lzdGVudCByZWNvdmVyeSBzdGF0ZSIpOwor CitteSBAaW50ZXJuYWxfbG9nX2ZpbGVzID0gZ2xvYiAiJGxvZ2Rpci8qL3BnX2NyZWF0ZXN1YnNj cmliZXJfaW50ZXJuYWwubG9nIjsKK2lzKHNjYWxhcihAaW50ZXJuYWxfbG9nX2ZpbGVzKSwKKwkx LCAicGdfY3JlYXRlc3Vic2NyaWJlcl9pbnRlcm5hbC5sb2cgZmlsZSB3YXMgY3JlYXRlZCIpOwor bXkgJGludGVybmFsX2xvZ19maWxlX3NpemUgPSAtcyAkaW50ZXJuYWxfbG9nX2ZpbGVzWzBdOwor aXNudCgkaW50ZXJuYWxfbG9nX2ZpbGVfc2l6ZSwgMCwKKwkicGdfY3JlYXRlc3Vic2NyaWJlcl9p bnRlcm5hbC5sb2cgZmlsZSBub3QgZW1wdHkiKTsKK215ICRpbnRlcm5hbF9sb2cgPSBzbHVycF9m aWxlKCRpbnRlcm5hbF9sb2dfZmlsZXNbMF0pOworbGlrZSgKKwkkaW50ZXJuYWxfbG9nLAorCXFy L3RhcmdldCBzZXJ2ZXIgcmVhY2hlZCB0aGUgY29uc2lzdGVudCBzdGF0ZS8sCisJImxvZyBzaG93 cyBjb25zaXN0ZW50IHN0YXRlIHJlYWNoZWQiKTsKKwogIyBDaGVjayBpZiBub2RlIFMgaXMgc3Rp bGwgYSBzdGFuZGJ5CiAkbm9kZV9zLT5zdGFydDsKIGlzKCRub2RlX3MtPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAnU0VMRUNUIHBnX2NhdGFsb2cucGdfaXNfaW5fcmVjb3ZlcnkoKScpLApAQCAtNDQ0 LDcgKzQ3MSw4IEBAIGlzKHNjYWxhcigoKSA9ICRzdGRlcnIgPX4gL3dvdWxkIGNyZWF0ZSBzdWJz Y3JpcHRpb24vZyksCiAKICMgQ3JlYXRlIGEgdXNlci1kZWZpbmVkIHB1YmxpY2F0aW9uLCBhbmQg YSB0YWJsZSB0aGF0IGlzIG5vdCBhIG1lbWJlciBvZiB0aGF0CiAjIHB1YmxpY2F0aW9uLgotJG5v ZGVfcC0+c2FmZV9wc3FsKCRkYjEsIHFxKAorJG5vZGVfcC0+c2FmZV9wc3FsKAorCSRkYjEsIHFx KAogCUNSRUFURSBQVUJMSUNBVElPTiB0ZXN0X3B1YjMgRk9SIFRBQkxFIHRibDE7CiAJQ1JFQVRF IFRBQkxFIG5vdF9yZXBsaWNhdGVkIChhIGludCk7CiApKTsKQEAgLTU0MCw4ICs1NjgsNyBAQCBz ZWNvbmQgcm93CiB0aGlyZCByb3cpLAogCSJsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtzIGluIGRh dGFiYXNlICRkYjEiKTsKICRyZXN1bHQgPSAkbm9kZV9zLT5zYWZlX3BzcWwoJGRiMSwgJ1NFTEVD VCAqIEZST00gbm90X3JlcGxpY2F0ZWQnKTsKLWlzKCRyZXN1bHQsIHFxKCksCi0JInRhYmxlIGlz IG5vdCByZXBsaWNhdGVkIGluIGRhdGFiYXNlICRkYjEiKTsKK2lzKCRyZXN1bHQsIHFxKCksICJ0 YWJsZSBpcyBub3QgcmVwbGljYXRlZCBpbiBkYXRhYmFzZSAkZGIxIik7CiAKICMgQ2hlY2sgcmVz dWx0IGluIGRhdGFiYXNlICRkYjIKICRyZXN1bHQgPSAkbm9kZV9zLT5zYWZlX3BzcWwoJGRiMiwg J1NFTEVDVCAqIEZST00gdGJsMicpOwpAQCAtNTU1LDggKzU4MiwxMCBAQCBteSAkc3lzaWRfcyA9 ICRub2RlX3MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogaXNudCgkc3lzaWRfcCwgJHN5c2lkX3Ms ICdzeXN0ZW0gaWRlbnRpZmllciB3YXMgY2hhbmdlZCcpOwogCiAjIFZlcmlmeSB0aGF0IHB1YjIg d2FzIGNyZWF0ZWQgaW4gJGRiMgotaXMoJG5vZGVfcC0+c2FmZV9wc3FsKCRkYjIsICJTRUxFQ1Qg Q09VTlQoKikgRlJPTSBwZ19wdWJsaWNhdGlvbiBXSEVSRSBwdWJuYW1lID0gJ3B1YjInIiksCi0J JzEnLCAicHVibGljYXRpb24gcHViMiB3YXMgY3JlYXRlZCBpbiAkZGIyIik7CitpcyggJG5vZGVf cC0+c2FmZV9wc3FsKAorCQkkZGIyLCAiU0VMRUNUIENPVU5UKCopIEZST00gcGdfcHVibGljYXRp b24gV0hFUkUgcHVibmFtZSA9ICdwdWIyJyIpLAorCScxJywKKwkicHVibGljYXRpb24gcHViMiB3 YXMgY3JlYXRlZCBpbiAkZGIyIik7CiAKICMgR2V0IHN1YnNjcmlwdGlvbiBhbmQgcHVibGljYXRp b24gbmFtZXMKICRyZXN1bHQgPSAkbm9kZV9zLT5zYWZlX3BzcWwoCkBAIC01ODEsNyArNjEwLDcg QEAgJHJlc3VsdCA9ICRub2RlX3MtPnNhZmVfcHNxbCgKICAgICApCiApOwogCi1pcygkcmVzdWx0 LCBxcSgkZGIxfHt0ZXN0X3B1YjN9CitpcyggJHJlc3VsdCwgcXEoJGRiMXx7dGVzdF9wdWIzfQog JGRiMnx7cHViMn0pLAogCSJzdWJzY3JpcHRpb25zIHVzZSB0aGUgY29ycmVjdCBwdWJsaWNhdGlv bnMiKTsKIAotLSAKMi40My4wCgo= --0000000000001d997f064d779ffa Content-Type: application/octet-stream; name="v15-0001-pg_createsubscriber-use-own-reporting-functions.patch" Content-Disposition: attachment; filename="v15-0001-pg_createsubscriber-use-own-reporting-functions.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmz59i060 RnJvbSBlZTZiNjVlYjVjNzc3YzUwNjNkZDFiMWNmMGIzOWZkNjA0NTM5ZGE2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYXlhdG8gS3Vyb2RhIDxrdXJvZGEuaGF5YXRvQGZ1aml0c3Uu Y29tPgpEYXRlOiBXZWQsIDE4IE1hciAyMDI2IDIwOjIwOjUwICswOTAwClN1YmplY3Q6IFtQQVRD SCB2MTUgMS8yXSBwZ19jcmVhdGVzdWJzY3JpYmVyOiB1c2Ugb3duIHJlcG9ydGluZyBmdW5jdGlv bnMKClRoaXMgY29tbWl0IGNvbnZlcnRzIGFsbCBwZ19sb2dfeHh4IGZhbWlsaWVzIHRvIGNhbGwg YSBuZXcgcmVwb3J0aW5nIGZ1bmN0aW9uCnBnX2NyZWF0ZXN1Yl9sb2coKS4gQWxzbywgcGdfZmF0 YWwoKSBpcyBvdmVyd3JpdHRlbiB0byB1c2UgaXRzIG93bi4KClRoaXMgY29tbWl0IGNoYW5nZXMg bm90aGluZyBmcm9tIHRoZSBvdXRzaWRlLCBidXQgaXMgbmVlZGVkIGZvciB0aGUgdXBjb21pbmcK Y29tbWl0LgotLS0KIHNyYy9iaW4vcGdfYmFzZWJhY2t1cC9wZ19jcmVhdGVzdWJzY3JpYmVyLmMg fCA3MTcgKysrKysrKysrKysrKy0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA0NjQgaW5zZXJ0aW9u cygrKSwgMjUzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfYmFzZWJhY2t1 cC9wZ19jcmVhdGVzdWJzY3JpYmVyLmMgYi9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvcGdfY3JlYXRl c3Vic2NyaWJlci5jCmluZGV4IDJiYzg0NTA1YWFiLi5jM2RmODMwMjVkNyAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9wZ19iYXNlYmFja3VwL3BnX2NyZWF0ZXN1YnNjcmliZXIuYworKysgYi9zcmMvYmlu L3BnX2Jhc2ViYWNrdXAvcGdfY3JlYXRlc3Vic2NyaWJlci5jCkBAIC0zMSw2ICszMSwxMiBAQAog I2luY2x1ZGUgImZlX3V0aWxzL3ZlcnNpb24uaCIKICNpbmNsdWRlICJnZXRvcHRfbG9uZy5oIgog CisvKgorICogRm9yIG5vdywgcGdfY3JlYXRlc3Vic2NyaWJlciBkb2VzIG5vdCB1c2UgY29tbW9u L2xvZ2dpbmcuYzsgdXNlIG91ciBvd24KKyAqIHBnX2ZhdGFsLgorICovCisjdW5kZWYgcGdfZmF0 YWwKKwogI2RlZmluZQlERUZBVUxUX1NVQl9QT1JUCSI1MDQzMiIKICNkZWZpbmUJT0JKRUNUVFlQ RV9QVUJMSUNBVElPTlMgIDB4MDAwMQogCkBAIC0xNDYsNiArMTUyLDExIEBAIHN0YXRpYyB2b2lk IGRyb3BfZXhpc3Rpbmdfc3Vic2NyaXB0aW9uKFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqc3Vi bmFtZSwKIAkJCQkJCQkJCSAgIGNvbnN0IGNoYXIgKmRibmFtZSk7CiBzdGF0aWMgdm9pZCBnZXRf cHVibGlzaGVyX2RhdGFiYXNlcyhzdHJ1Y3QgQ3JlYXRlU3Vic2NyaWJlck9wdGlvbnMgKm9wdCwK IAkJCQkJCQkJCWJvb2wgZGJuYW1lc3BlY2lmaWVkKTsKK3N0YXRpYyB2b2lkIHBnX2NyZWF0ZXN1 Yl9sb2coZW51bSBwZ19sb2dfbGV2ZWwsIGVudW0gcGdfbG9nX3BhcnQsCisJCQkJCQkJIGNvbnN0 IGNoYXIgKnBnX3Jlc3RyaWN0IGZtdCwuLi4pCisJCQlwZ19hdHRyaWJ1dGVfcHJpbnRmKDMsIDQp OworcGdfbm9yZXR1cm4gc3RhdGljIHZvaWQgcGdfZmF0YWwoY29uc3QgY2hhciAqcGdfcmVzdHJp Y3QgZm10LC4uLikKKwkJCXBnX2F0dHJpYnV0ZV9wcmludGYoMSwgMik7CiAKICNkZWZpbmUJV0FJ VF9JTlRFUlZBTAkxCQkvKiAxIHNlY29uZCAqLwogCkBAIC0xNzQsNiArMTg1LDM4IEBAIHN0YXRp YyBib29sIHJlY292ZXJ5X2VuZGVkID0gZmFsc2U7CiBzdGF0aWMgYm9vbCBzdGFuZGJ5X3J1bm5p bmcgPSBmYWxzZTsKIHN0YXRpYyBib29sIHJlY292ZXJ5X3BhcmFtc19zZXQgPSBmYWxzZTsKIAor LyoKKyAqIFJlcG9ydCBhIG1lc3NhZ2Ugd2l0aCBhIGdpdmVuIGxvZyBsZXZlbAorICovCitzdGF0 aWMgdm9pZAorcGdfY3JlYXRlc3ViX2xvZyhlbnVtIHBnX2xvZ19sZXZlbCBsZXZlbCwgZW51bSBw Z19sb2dfcGFydCBwYXJ0LAorCQkJCSBjb25zdCBjaGFyICpwZ19yZXN0cmljdCBmbXQsLi4uKQor eworCXZhX2xpc3QJCWFyZ3M7CisKKwl2YV9zdGFydChhcmdzLCBmbXQpOworCisJcGdfbG9nX2dl bmVyaWNfdihsZXZlbCwgcGFydCwgZm10LCBhcmdzKTsKKworCXZhX2VuZChhcmdzKTsKK30KKwor LyoKKyAqIFJlcG9ydCBhIGZhdGFsIGVycm9yIGFuZCBleGl0CisgKi8KK3N0YXRpYyB2b2lkCitw Z19mYXRhbChjb25zdCBjaGFyICpwZ19yZXN0cmljdCBmbXQsLi4uKQoreworCXZhX2xpc3QJCWFy Z3M7CisKKwl2YV9zdGFydChhcmdzLCBmbXQpOworCisJcGdfbG9nX2dlbmVyaWNfdihQR19MT0df RVJST1IsIFBHX0xPR19QUklNQVJZLCBmbXQsIGFyZ3MpOworCisJdmFfZW5kKGFyZ3MpOworCisJ ZXhpdCgxKTsKK30KIAogLyoKICAqIENsZWFuIHVwIG9iamVjdHMgY3JlYXRlZCBieSBwZ19jcmVh dGVzdWJzY3JpYmVyLgpAQCAtMjA1LDcgKzI0OCw4IEBAIGNsZWFudXBfb2JqZWN0c19hdGV4aXQo dm9pZCkKIAkJaWYgKGR1cmFibGVfcmVuYW1lKGNvbmZfZmlsZW5hbWUsIGNvbmZfZmlsZW5hbWVf ZGlzYWJsZWQpICE9IDApCiAJCXsKIAkJCS8qIGR1cmFibGVfcmVuYW1lKCkgaGFzIGFscmVhZHkg bG9nZ2VkIHNvbWV0aGluZy4gKi8KLQkJCXBnX2xvZ193YXJuaW5nX2hpbnQoIkEgbWFudWFsIHJl bW92YWwgb2YgdGhlIHJlY292ZXJ5IHBhcmFtZXRlcnMgbWF5IGJlIHJlcXVpcmVkLiIpOworCQkJ cGdfY3JlYXRlc3ViX2xvZyhQR19MT0dfV0FSTklORywgUEdfTE9HX0hJTlQsCisJCQkJCQkJICJB IG1hbnVhbCByZW1vdmFsIG9mIHRoZSByZWNvdmVyeSBwYXJhbWV0ZXJzIG1heSBiZSByZXF1aXJl ZC4iKTsKIAkJfQogCX0KIApAQCAtMjE5LDkgKzI2MywxMSBAQCBjbGVhbnVwX29iamVjdHNfYXRl eGl0KHZvaWQpCiAJICovCiAJaWYgKHJlY292ZXJ5X2VuZGVkKQogCXsKLQkJcGdfbG9nX3dhcm5p bmcoImZhaWxlZCBhZnRlciB0aGUgZW5kIG9mIHJlY292ZXJ5Iik7Ci0JCXBnX2xvZ193YXJuaW5n X2hpbnQoIlRoZSB0YXJnZXQgc2VydmVyIGNhbm5vdCBiZSB1c2VkIGFzIGEgcGh5c2ljYWwgcmVw bGljYSBhbnltb3JlLiAgIgotCQkJCQkJCSJZb3UgbXVzdCByZWNyZWF0ZSB0aGUgcGh5c2ljYWwg cmVwbGljYSBiZWZvcmUgY29udGludWluZy4iKTsKKwkJcGdfY3JlYXRlc3ViX2xvZyhQR19MT0df V0FSTklORywgUEdfTE9HX1BSSU1BUlksCisJCQkJCQkgImZhaWxlZCBhZnRlciB0aGUgZW5kIG9m IHJlY292ZXJ5Iik7CisJCXBnX2NyZWF0ZXN1Yl9sb2coUEdfTE9HX1dBUk5JTkcsIFBHX0xPR19I SU5ULAorCQkJCQkJICJUaGUgdGFyZ2V0IHNlcnZlciBjYW5ub3QgYmUgdXNlZCBhcyBhIHBoeXNp Y2FsIHJlcGxpY2EgYW55bW9yZS4gICIKKwkJCQkJCSAiWW91IG11c3QgcmVjcmVhdGUgdGhlIHBo eXNpY2FsIHJlcGxpY2EgYmVmb3JlIGNvbnRpbnVpbmcuIik7CiAJfQogCiAJZm9yIChpbnQgaSA9 IDA7IGkgPCBudW1fZGJzOyBpKyspCkBAIC0yNTEsMTcgKzI5NywyMSBAQCBjbGVhbnVwX29iamVj dHNfYXRleGl0KHZvaWQpCiAJCQkJICovCiAJCQkJaWYgKGRiaW5mby0+bWFkZV9wdWJsaWNhdGlv bikKIAkJCQl7Ci0JCQkJCXBnX2xvZ193YXJuaW5nKCJwdWJsaWNhdGlvbiBcIiVzXCIgY3JlYXRl ZCBpbiBkYXRhYmFzZSBcIiVzXCIgb24gcHJpbWFyeSB3YXMgbGVmdCBiZWhpbmQiLAotCQkJCQkJ CQkgICBkYmluZm8tPnB1Ym5hbWUsCi0JCQkJCQkJCSAgIGRiaW5mby0+ZGJuYW1lKTsKLQkJCQkJ cGdfbG9nX3dhcm5pbmdfaGludCgiRHJvcCB0aGlzIHB1YmxpY2F0aW9uIGJlZm9yZSB0cnlpbmcg YWdhaW4uIik7CisJCQkJCXBnX2NyZWF0ZXN1Yl9sb2coUEdfTE9HX1dBUk5JTkcsIFBHX0xPR19Q UklNQVJZLAorCQkJCQkJCQkJICJwdWJsaWNhdGlvbiBcIiVzXCIgY3JlYXRlZCBpbiBkYXRhYmFz ZSBcIiVzXCIgb24gcHJpbWFyeSB3YXMgbGVmdCBiZWhpbmQiLAorCQkJCQkJCQkJIGRiaW5mby0+ cHVibmFtZSwKKwkJCQkJCQkJCSBkYmluZm8tPmRibmFtZSk7CisJCQkJCXBnX2NyZWF0ZXN1Yl9s b2coUEdfTE9HX1dBUk5JTkcsIFBHX0xPR19ISU5ULAorCQkJCQkJCQkJICJEcm9wIHRoaXMgcHVi bGljYXRpb24gYmVmb3JlIHRyeWluZyBhZ2Fpbi4iKTsKIAkJCQl9CiAJCQkJaWYgKGRiaW5mby0+ bWFkZV9yZXBsc2xvdCkKIAkJCQl7Ci0JCQkJCXBnX2xvZ193YXJuaW5nKCJyZXBsaWNhdGlvbiBz bG90IFwiJXNcIiBjcmVhdGVkIGluIGRhdGFiYXNlIFwiJXNcIiBvbiBwcmltYXJ5IHdhcyBsZWZ0 IGJlaGluZCIsCi0JCQkJCQkJCSAgIGRiaW5mby0+cmVwbHNsb3RuYW1lLAotCQkJCQkJCQkgICBk YmluZm8tPmRibmFtZSk7Ci0JCQkJCXBnX2xvZ193YXJuaW5nX2hpbnQoIkRyb3AgdGhpcyByZXBs aWNhdGlvbiBzbG90IHNvb24gdG8gYXZvaWQgcmV0ZW50aW9uIG9mIFdBTCBmaWxlcy4iKTsKKwkJ CQkJcGdfY3JlYXRlc3ViX2xvZyhQR19MT0dfV0FSTklORywgUEdfTE9HX1BSSU1BUlksCisJCQkJ CQkJCQkgInJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIGNyZWF0ZWQgaW4gZGF0YWJhc2UgXCIlc1wi IG9uIHByaW1hcnkgd2FzIGxlZnQgYmVoaW5kIiwKKwkJCQkJCQkJCSBkYmluZm8tPnJlcGxzbG90 bmFtZSwKKwkJCQkJCQkJCSBkYmluZm8tPmRibmFtZSk7CisJCQkJCXBnX2NyZWF0ZXN1Yl9sb2co UEdfTE9HX1dBUk5JTkcsIFBHX0xPR19ISU5ULAorCQkJCQkJCQkJICJEcm9wIHRoaXMgcmVwbGlj YXRpb24gc2xvdCBzb29uIHRvIGF2b2lkIHJldGVudGlvbiBvZiBXQUwgZmlsZXMuIik7CiAJCQkJ fQogCQkJfQogCQl9CkBAIC0zNDIsNyArMzkyLDggQEAgZ2V0X2Jhc2VfY29ubmluZm8oY29uc3Qg Y2hhciAqY29ubmluZm8sIGNoYXIgKipkYm5hbWUpCiAJY29ubl9vcHRzID0gUFFjb25uaW5mb1Bh cnNlKGNvbm5pbmZvLCAmZXJybXNnKTsKIAlpZiAoY29ubl9vcHRzID09IE5VTEwpCiAJewotCQlw Z19sb2dfZXJyb3IoImNvdWxkIG5vdCBwYXJzZSBjb25uZWN0aW9uIHN0cmluZzogJXMiLCBlcnJt c2cpOworCQlwZ19jcmVhdGVzdWJfbG9nKFBHX0xPR19FUlJPUiwgUEdfTE9HX1BSSU1BUlksCisJ CQkJCQkgImNvdWxkIG5vdCBwYXJzZSBjb25uZWN0aW9uIHN0cmluZzogJXMiLCBlcnJtc2cpOwog CQlQUWZyZWVtZW0oZXJybXNnKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQpAQCAtNDI2LDcgKzQ3Nyw4 IEBAIGdldF9leGVjX3BhdGgoY29uc3QgY2hhciAqYXJndjAsIGNvbnN0IGNoYXIgKnByb2duYW1l KQogCQkJCQkgcHJvZ25hbWUsIGZ1bGxfcGF0aCwgInBnX2NyZWF0ZXN1YnNjcmliZXIiKTsKIAl9 CiAKLQlwZ19sb2dfZGVidWcoIiVzIHBhdGggaXM6ICAlcyIsIHByb2duYW1lLCBleGVjX3BhdGgp OworCXBnX2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0RFQlVHLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJ ICIlcyBwYXRoIGlzOiAgJXMiLCBwcm9nbmFtZSwgZXhlY19wYXRoKTsKIAogCXJldHVybiBleGVj X3BhdGg7CiB9CkBAIC00NDMsOCArNDk1LDkgQEAgY2hlY2tfZGF0YV9kaXJlY3RvcnkoY29uc3Qg Y2hhciAqZGF0YWRpcikKIAl1aW50MzIJCW1ham9yX3ZlcnNpb247CiAJY2hhcgkgICAqdmVyc2lv bl9zdHI7CiAKLQlwZ19sb2dfaW5mbygiY2hlY2tpbmcgaWYgZGlyZWN0b3J5IFwiJXNcIiBpcyBh IGNsdXN0ZXIgZGF0YSBkaXJlY3RvcnkiLAotCQkJCWRhdGFkaXIpOworCXBnX2NyZWF0ZXN1Yl9s b2coUEdfTE9HX0lORk8sIFBHX0xPR19QUklNQVJZLAorCQkJCQkgImNoZWNraW5nIGlmIGRpcmVj dG9yeSBcIiVzXCIgaXMgYSBjbHVzdGVyIGRhdGEgZGlyZWN0b3J5IiwKKwkJCQkJIGRhdGFkaXIp OwogCiAJaWYgKHN0YXQoZGF0YWRpciwgJnN0YXRidWYpICE9IDApCiAJewpAQCAtNDYyLDkgKzUx NSwxMSBAQCBjaGVja19kYXRhX2RpcmVjdG9yeShjb25zdCBjaGFyICpkYXRhZGlyKQogCW1ham9y X3ZlcnNpb24gPSBHRVRfUEdfTUFKT1JWRVJTSU9OX05VTShnZXRfcGdfdmVyc2lvbihkYXRhZGly LCAmdmVyc2lvbl9zdHIpKTsKIAlpZiAobWFqb3JfdmVyc2lvbiAhPSBQR19NQUpPUlZFUlNJT05f TlVNKQogCXsKLQkJcGdfbG9nX2Vycm9yKCJkYXRhIGRpcmVjdG9yeSBpcyBvZiB3cm9uZyB2ZXJz aW9uIik7Ci0JCXBnX2xvZ19lcnJvcl9kZXRhaWwoIkZpbGUgXCIlc1wiIGNvbnRhaW5zIFwiJXNc Iiwgd2hpY2ggaXMgbm90IGNvbXBhdGlibGUgd2l0aCB0aGlzIHByb2dyYW0ncyB2ZXJzaW9uIFwi JXNcIi4iLAotCQkJCQkJCSJQR19WRVJTSU9OIiwgdmVyc2lvbl9zdHIsIFBHX01BSk9SVkVSU0lP Tik7CisJCXBnX2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0VSUk9SLCBQR19MT0dfUFJJTUFSWSwKKwkJ CQkJCSAiZGF0YSBkaXJlY3RvcnkgaXMgb2Ygd3JvbmcgdmVyc2lvbiIpOworCQlwZ19jcmVhdGVz dWJfbG9nKFBHX0xPR19FUlJPUiwgUEdfTE9HX0RFVEFJTCwKKwkJCQkJCSAiRmlsZSBcIiVzXCIg Y29udGFpbnMgXCIlc1wiLCB3aGljaCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoaXMgcHJvZ3Jh bSdzIHZlcnNpb24gXCIlc1wiLiIsCisJCQkJCQkgIlBHX1ZFUlNJT04iLCB2ZXJzaW9uX3N0ciwg UEdfTUFKT1JWRVJTSU9OKTsKIAkJZXhpdCgxKTsKIAl9CiB9CkBAIC01NDcsMTQgKzYwMiwxNiBA QCBzdG9yZV9wdWJfc3ViX2luZm8oY29uc3Qgc3RydWN0IENyZWF0ZVN1YnNjcmliZXJPcHRpb25z ICpvcHQsCiAJCQlkYmluZm9baV0uc3VibmFtZSA9IE5VTEw7CiAJCS8qIE90aGVyIGZpZWxkcyB3 aWxsIGJlIGZpbGxlZCBsYXRlciAqLwogCi0JCXBnX2xvZ19kZWJ1ZygicHVibGlzaGVyKCVkKTog cHVibGljYXRpb246ICVzIDsgcmVwbGljYXRpb24gc2xvdDogJXMgOyBjb25uZWN0aW9uIHN0cmlu ZzogJXMiLCBpLAotCQkJCQkgZGJpbmZvW2ldLnB1Ym5hbWUgPyBkYmluZm9baV0ucHVibmFtZSA6 ICIoYXV0bykiLAotCQkJCQkgZGJpbmZvW2ldLnJlcGxzbG90bmFtZSA/IGRiaW5mb1tpXS5yZXBs c2xvdG5hbWUgOiAiKGF1dG8pIiwKLQkJCQkJIGRiaW5mb1tpXS5wdWJjb25uaW5mbyk7Ci0JCXBn X2xvZ19kZWJ1Zygic3Vic2NyaWJlciglZCk6IHN1YnNjcmlwdGlvbjogJXMgOyBjb25uZWN0aW9u IHN0cmluZzogJXMsIHR3b19waGFzZTogJXMiLCBpLAotCQkJCQkgZGJpbmZvW2ldLnN1Ym5hbWUg PyBkYmluZm9baV0uc3VibmFtZSA6ICIoYXV0bykiLAotCQkJCQkgZGJpbmZvW2ldLnN1YmNvbm5p bmZvLAotCQkJCQkgZGJpbmZvcy50d29fcGhhc2UgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKwkJcGdf Y3JlYXRlc3ViX2xvZyhQR19MT0dfREVCVUcsIFBHX0xPR19QUklNQVJZLAorCQkJCQkJICJwdWJs aXNoZXIoJWQpOiBwdWJsaWNhdGlvbjogJXMgOyByZXBsaWNhdGlvbiBzbG90OiAlcyA7IGNvbm5l Y3Rpb24gc3RyaW5nOiAlcyIsIGksCisJCQkJCQkgZGJpbmZvW2ldLnB1Ym5hbWUgPyBkYmluZm9b aV0ucHVibmFtZSA6ICIoYXV0bykiLAorCQkJCQkJIGRiaW5mb1tpXS5yZXBsc2xvdG5hbWUgPyBk YmluZm9baV0ucmVwbHNsb3RuYW1lIDogIihhdXRvKSIsCisJCQkJCQkgZGJpbmZvW2ldLnB1YmNv bm5pbmZvKTsKKwkJcGdfY3JlYXRlc3ViX2xvZyhQR19MT0dfREVCVUcsIFBHX0xPR19QUklNQVJZ LAorCQkJCQkJICJzdWJzY3JpYmVyKCVkKTogc3Vic2NyaXB0aW9uOiAlcyA7IGNvbm5lY3Rpb24g c3RyaW5nOiAlcywgdHdvX3BoYXNlOiAlcyIsIGksCisJCQkJCQkgZGJpbmZvW2ldLnN1Ym5hbWUg PyBkYmluZm9baV0uc3VibmFtZSA6ICIoYXV0bykiLAorCQkJCQkJIGRiaW5mb1tpXS5zdWJjb25u aW5mbywKKwkJCQkJCSBkYmluZm9zLnR3b19waGFzZSA/ICJ0cnVlIiA6ICJmYWxzZSIpOwogCiAJ CWlmIChudW1fcHVicyA+IDApCiAJCQlwdWJjZWxsID0gcHViY2VsbC0+bmV4dDsKQEAgLTU4Miw4 ICs2MzksOSBAQCBjb25uZWN0X2RhdGFiYXNlKGNvbnN0IGNoYXIgKmNvbm5pbmZvLCBib29sIGV4 aXRfb25fZXJyb3IpCiAJY29ubiA9IFBRY29ubmVjdGRiKGNvbm5pbmZvKTsKIAlpZiAoUFFzdGF0 dXMoY29ubikgIT0gQ09OTkVDVElPTl9PSykKIAl7Ci0JCXBnX2xvZ19lcnJvcigiY29ubmVjdGlv biB0byBkYXRhYmFzZSBmYWlsZWQ6ICVzIiwKLQkJCQkJIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsK KwkJcGdfY3JlYXRlc3ViX2xvZyhQR19MT0dfRVJST1IsIFBHX0xPR19QUklNQVJZLAorCQkJCQkJ ICJjb25uZWN0aW9uIHRvIGRhdGFiYXNlIGZhaWxlZDogJXMiLAorCQkJCQkJIFBRZXJyb3JNZXNz YWdlKGNvbm4pKTsKIAkJUFFmaW5pc2goY29ubik7CiAKIAkJaWYgKGV4aXRfb25fZXJyb3IpCkBA IC01OTUsOCArNjUzLDkgQEAgY29ubmVjdF9kYXRhYmFzZShjb25zdCBjaGFyICpjb25uaW5mbywg Ym9vbCBleGl0X29uX2Vycm9yKQogCXJlcyA9IFBRZXhlYyhjb25uLCBBTFdBWVNfU0VDVVJFX1NF QVJDSF9QQVRIX1NRTCk7CiAJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfVFVQTEVT X09LKQogCXsKLQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgY2xlYXIgXCJzZWFyY2hfcGF0aFwi OiAlcyIsCi0JCQkJCSBQUXJlc3VsdEVycm9yTWVzc2FnZShyZXMpKTsKKwkJcGdfY3JlYXRlc3Vi X2xvZyhQR19MT0dfRVJST1IsIFBHX0xPR19QUklNQVJZLAorCQkJCQkJICJjb3VsZCBub3QgY2xl YXIgXCJzZWFyY2hfcGF0aFwiOiAlcyIsCisJCQkJCQkgUFFyZXN1bHRFcnJvck1lc3NhZ2UocmVz KSk7CiAJCVBRY2xlYXIocmVzKTsKIAkJUFFmaW5pc2goY29ubik7CiAKQEAgLTYzNSwyNyArNjk0 LDMxIEBAIGdldF9wcmltYXJ5X3N5c2lkKGNvbnN0IGNoYXIgKmNvbm5pbmZvKQogCVBHcmVzdWx0 ICAgKnJlczsKIAl1aW50NjQJCXN5c2lkOwogCi0JcGdfbG9nX2luZm8oImdldHRpbmcgc3lzdGVt IGlkZW50aWZpZXIgZnJvbSBwdWJsaXNoZXIiKTsKKwlwZ19jcmVhdGVzdWJfbG9nKFBHX0xPR19J TkZPLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJICJnZXR0aW5nIHN5c3RlbSBpZGVudGlmaWVyIGZy b20gcHVibGlzaGVyIik7CiAKIAljb25uID0gY29ubmVjdF9kYXRhYmFzZShjb25uaW5mbywgdHJ1 ZSk7CiAKIAlyZXMgPSBQUWV4ZWMoY29ubiwgIlNFTEVDVCBzeXN0ZW1faWRlbnRpZmllciBGUk9N IHBnX2NhdGFsb2cucGdfY29udHJvbF9zeXN0ZW0oKSIpOwogCWlmIChQUXJlc3VsdFN0YXR1cyhy ZXMpICE9IFBHUkVTX1RVUExFU19PSykKIAl7Ci0JCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGdl dCBzeXN0ZW0gaWRlbnRpZmllcjogJXMiLAotCQkJCQkgUFFyZXN1bHRFcnJvck1lc3NhZ2UocmVz KSk7CisJCXBnX2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0VSUk9SLCBQR19MT0dfUFJJTUFSWSwKKwkJ CQkJCSAiY291bGQgbm90IGdldCBzeXN0ZW0gaWRlbnRpZmllcjogJXMiLAorCQkJCQkJIFBRcmVz dWx0RXJyb3JNZXNzYWdlKHJlcykpOwogCQlkaXNjb25uZWN0X2RhdGFiYXNlKGNvbm4sIHRydWUp OwogCX0KIAlpZiAoUFFudHVwbGVzKHJlcykgIT0gMSkKIAl7Ci0JCXBnX2xvZ19lcnJvcigiY291 bGQgbm90IGdldCBzeXN0ZW0gaWRlbnRpZmllcjogZ290ICVkIHJvd3MsIGV4cGVjdGVkICVkIHJv dyIsCi0JCQkJCSBQUW50dXBsZXMocmVzKSwgMSk7CisJCXBnX2NyZWF0ZXN1Yl9sb2coUEdfTE9H X0VSUk9SLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJCSAiY291bGQgbm90IGdldCBzeXN0ZW0gaWRl bnRpZmllcjogZ290ICVkIHJvd3MsIGV4cGVjdGVkICVkIHJvdyIsCisJCQkJCQkgUFFudHVwbGVz KHJlcyksIDEpOwogCQlkaXNjb25uZWN0X2RhdGFiYXNlKGNvbm4sIHRydWUpOwogCX0KIAogCXN5 c2lkID0gc3RydG91NjQoUFFnZXR2YWx1ZShyZXMsIDAsIDApLCBOVUxMLCAxMCk7CiAKLQlwZ19s b2dfaW5mbygic3lzdGVtIGlkZW50aWZpZXIgaXMgJSIgUFJJdTY0ICIgb24gcHVibGlzaGVyIiwg c3lzaWQpOworCXBnX2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0lORk8sIFBHX0xPR19QUklNQVJZLAor CQkJCQkgInN5c3RlbSBpZGVudGlmaWVyIGlzICUiIFBSSXU2NCAiIG9uIHB1Ymxpc2hlciIsIHN5 c2lkKTsKIAogCVBRY2xlYXIocmVzKTsKIAlkaXNjb25uZWN0X2RhdGFiYXNlKGNvbm4sIGZhbHNl KTsKQEAgLTY3NSw3ICs3MzgsOCBAQCBnZXRfc3RhbmRieV9zeXNpZChjb25zdCBjaGFyICpkYXRh ZGlyKQogCWJvb2wJCWNyY19vazsKIAl1aW50NjQJCXN5c2lkOwogCi0JcGdfbG9nX2luZm8oImdl dHRpbmcgc3lzdGVtIGlkZW50aWZpZXIgZnJvbSBzdWJzY3JpYmVyIik7CisJcGdfY3JlYXRlc3Vi X2xvZyhQR19MT0dfSU5GTywgUEdfTE9HX1BSSU1BUlksCisJCQkJCSAiZ2V0dGluZyBzeXN0ZW0g aWRlbnRpZmllciBmcm9tIHN1YnNjcmliZXIiKTsKIAogCWNmID0gZ2V0X2NvbnRyb2xmaWxlKGRh dGFkaXIsICZjcmNfb2spOwogCWlmICghY3JjX29rKQpAQCAtNjgzLDcgKzc0Nyw4IEBAIGdldF9z dGFuZGJ5X3N5c2lkKGNvbnN0IGNoYXIgKmRhdGFkaXIpCiAKIAlzeXNpZCA9IGNmLT5zeXN0ZW1f aWRlbnRpZmllcjsKIAotCXBnX2xvZ19pbmZvKCJzeXN0ZW0gaWRlbnRpZmllciBpcyAlIiBQUkl1 NjQgIiBvbiBzdWJzY3JpYmVyIiwgc3lzaWQpOworCXBnX2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0lO Rk8sIFBHX0xPR19QUklNQVJZLAorCQkJCQkgInN5c3RlbSBpZGVudGlmaWVyIGlzICUiIFBSSXU2 NCAiIG9uIHN1YnNjcmliZXIiLCBzeXNpZCk7CiAKIAlwZ19mcmVlKGNmKTsKIApAQCAtNzA0LDcg Kzc2OSw4IEBAIG1vZGlmeV9zdWJzY3JpYmVyX3N5c2lkKGNvbnN0IHN0cnVjdCBDcmVhdGVTdWJz Y3JpYmVyT3B0aW9ucyAqb3B0KQogCiAJY2hhcgkgICAqY21kX3N0cjsKIAotCXBnX2xvZ19pbmZv KCJtb2RpZnlpbmcgc3lzdGVtIGlkZW50aWZpZXIgb2Ygc3Vic2NyaWJlciIpOworCXBnX2NyZWF0 ZXN1Yl9sb2coUEdfTE9HX0lORk8sIFBHX0xPR19QUklNQVJZLAorCQkJCQkgIm1vZGlmeWluZyBz eXN0ZW0gaWRlbnRpZmllciBvZiBzdWJzY3JpYmVyIik7CiAKIAljZiA9IGdldF9jb250cm9sZmls ZShzdWJzY3JpYmVyX2RpciwgJmNyY19vayk7CiAJaWYgKCFjcmNfb2spCkBAIC03MjEsMzEgKzc4 NywzNyBAQCBtb2RpZnlfc3Vic2NyaWJlcl9zeXNpZChjb25zdCBzdHJ1Y3QgQ3JlYXRlU3Vic2Ny aWJlck9wdGlvbnMgKm9wdCkKIAljZi0+c3lzdGVtX2lkZW50aWZpZXIgfD0gZ2V0cGlkKCkgJiAw eEZGRjsKIAogCWlmIChkcnlfcnVuKQotCQlwZ19sb2dfaW5mbygiZHJ5LXJ1bjogd291bGQgc2V0 IHN5c3RlbSBpZGVudGlmaWVyIHRvICUiIFBSSXU2NCAiIG9uIHN1YnNjcmliZXIiLAotCQkJCQlj Zi0+c3lzdGVtX2lkZW50aWZpZXIpOworCQlwZ19jcmVhdGVzdWJfbG9nKFBHX0xPR19JTkZPLCBQ R19MT0dfUFJJTUFSWSwKKwkJCQkJCSAiZHJ5LXJ1bjogd291bGQgc2V0IHN5c3RlbSBpZGVudGlm aWVyIHRvICUiIFBSSXU2NCAiIG9uIHN1YnNjcmliZXIiLAorCQkJCQkJIGNmLT5zeXN0ZW1faWRl bnRpZmllcik7CiAJZWxzZQogCXsKIAkJdXBkYXRlX2NvbnRyb2xmaWxlKHN1YnNjcmliZXJfZGly LCBjZiwgdHJ1ZSk7Ci0JCXBnX2xvZ19pbmZvKCJzeXN0ZW0gaWRlbnRpZmllciBpcyAlIiBQUkl1 NjQgIiBvbiBzdWJzY3JpYmVyIiwKLQkJCQkJY2YtPnN5c3RlbV9pZGVudGlmaWVyKTsKKwkJcGdf Y3JlYXRlc3ViX2xvZyhQR19MT0dfSU5GTywgUEdfTE9HX1BSSU1BUlksCisJCQkJCQkgInN5c3Rl bSBpZGVudGlmaWVyIGlzICUiIFBSSXU2NCAiIG9uIHN1YnNjcmliZXIiLAorCQkJCQkJIGNmLT5z eXN0ZW1faWRlbnRpZmllcik7CiAJfQogCiAJaWYgKGRyeV9ydW4pCi0JCXBnX2xvZ19pbmZvKCJk cnktcnVuOiB3b3VsZCBydW4gcGdfcmVzZXR3YWwgb24gdGhlIHN1YnNjcmliZXIiKTsKKwkJcGdf Y3JlYXRlc3ViX2xvZyhQR19MT0dfSU5GTywgUEdfTE9HX1BSSU1BUlksCisJCQkJCQkgImRyeS1y dW46IHdvdWxkIHJ1biBwZ19yZXNldHdhbCBvbiB0aGUgc3Vic2NyaWJlciIpOwogCWVsc2UKLQkJ cGdfbG9nX2luZm8oInJ1bm5pbmcgcGdfcmVzZXR3YWwgb24gdGhlIHN1YnNjcmliZXIiKTsKKwkJ cGdfY3JlYXRlc3ViX2xvZyhQR19MT0dfSU5GTywgUEdfTE9HX1BSSU1BUlksCisJCQkJCQkgInJ1 bm5pbmcgcGdfcmVzZXR3YWwgb24gdGhlIHN1YnNjcmliZXIiKTsKIAogCWNtZF9zdHIgPSBwc3By aW50ZigiXCIlc1wiIC1EIFwiJXNcIiA+IFwiJXNcIiIsIHBnX3Jlc2V0d2FsX3BhdGgsCiAJCQkJ CSAgIHN1YnNjcmliZXJfZGlyLCBERVZOVUxMKTsKIAotCXBnX2xvZ19kZWJ1ZygicGdfcmVzZXR3 YWwgY29tbWFuZCBpczogJXMiLCBjbWRfc3RyKTsKKwlwZ19jcmVhdGVzdWJfbG9nKFBHX0xPR19E RUJVRywgUEdfTE9HX1BSSU1BUlksCisJCQkJCSAicGdfcmVzZXR3YWwgY29tbWFuZCBpczogJXMi LCBjbWRfc3RyKTsKIAogCWlmICghZHJ5X3J1bikKIAl7CiAJCWludAkJCXJjID0gc3lzdGVtKGNt ZF9zdHIpOwogCiAJCWlmIChyYyA9PSAwKQotCQkJcGdfbG9nX2luZm8oInN1Y2Nlc3NmdWxseSBy ZXNldCBXQUwgb24gdGhlIHN1YnNjcmliZXIiKTsKKwkJCXBnX2NyZWF0ZXN1Yl9sb2coUEdfTE9H X0lORk8sIFBHX0xPR19QUklNQVJZLAorCQkJCQkJCSAic3VjY2Vzc2Z1bGx5IHJlc2V0IFdBTCBv biB0aGUgc3Vic2NyaWJlciIpOwogCQllbHNlCiAJCQlwZ19mYXRhbCgiY291bGQgbm90IHJlc2V0 IFdBTCBvbiBzdWJzY3JpYmVyOiAlcyIsIHdhaXRfcmVzdWx0X3RvX3N0cihyYykpOwogCX0KQEAg LTc3MSwxNSArODQzLDE3IEBAIGdlbmVyYXRlX29iamVjdF9uYW1lKFBHY29ubiAqY29ubikKIAkJ CQkgIldIRVJFIGRhdG5hbWUgPSBwZ19jYXRhbG9nLmN1cnJlbnRfZGF0YWJhc2UoKSIpOwogCWlm IChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX1RVUExFU19PSykKIAl7Ci0JCXBnX2xvZ19l cnJvcigiY291bGQgbm90IG9idGFpbiBkYXRhYmFzZSBPSUQ6ICVzIiwKLQkJCQkJIFBRcmVzdWx0 RXJyb3JNZXNzYWdlKHJlcykpOworCQlwZ19jcmVhdGVzdWJfbG9nKFBHX0xPR19FUlJPUiwgUEdf TE9HX1BSSU1BUlksCisJCQkJCQkgImNvdWxkIG5vdCBvYnRhaW4gZGF0YWJhc2UgT0lEOiAlcyIs CisJCQkJCQkgUFFyZXN1bHRFcnJvck1lc3NhZ2UocmVzKSk7CiAJCWRpc2Nvbm5lY3RfZGF0YWJh c2UoY29ubiwgdHJ1ZSk7CiAJfQogCiAJaWYgKFBRbnR1cGxlcyhyZXMpICE9IDEpCiAJewotCQlw Z19sb2dfZXJyb3IoImNvdWxkIG5vdCBvYnRhaW4gZGF0YWJhc2UgT0lEOiBnb3QgJWQgcm93cywg ZXhwZWN0ZWQgJWQgcm93IiwKLQkJCQkJIFBRbnR1cGxlcyhyZXMpLCAxKTsKKwkJcGdfY3JlYXRl c3ViX2xvZyhQR19MT0dfRVJST1IsIFBHX0xPR19QUklNQVJZLAorCQkJCQkJICJjb3VsZCBub3Qg b2J0YWluIGRhdGFiYXNlIE9JRDogZ290ICVkIHJvd3MsIGV4cGVjdGVkICVkIHJvdyIsCisJCQkJ CQkgUFFudHVwbGVzKHJlcyksIDEpOwogCQlkaXNjb25uZWN0X2RhdGFiYXNlKGNvbm4sIHRydWUp OwogCX0KIApAQCAtODE5LDggKzg5Myw5IEBAIGZpbmRfcHVibGljYXRpb24oUEdjb25uICpjb25u LCBjb25zdCBjaGFyICpwdWJuYW1lLCBjb25zdCBjaGFyICpkYm5hbWUpCiAJcmVzID0gUFFleGVj KGNvbm4sIHN0ci0+ZGF0YSk7CiAJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfVFVQ TEVTX09LKQogCXsKLQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgZmluZCBwdWJsaWNhdGlvbiBc IiVzXCIgaW4gZGF0YWJhc2UgXCIlc1wiOiAlcyIsCi0JCQkJCSBwdWJuYW1lLCBkYm5hbWUsIFBR ZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwkJcGdfY3JlYXRlc3ViX2xvZyhQR19MT0dfRVJST1IsIFBH X0xPR19QUklNQVJZLAorCQkJCQkJICJjb3VsZCBub3QgZmluZCBwdWJsaWNhdGlvbiBcIiVzXCIg aW4gZGF0YWJhc2UgXCIlc1wiOiAlcyIsCisJCQkJCQkgcHVibmFtZSwgZGJuYW1lLCBQUWVycm9y TWVzc2FnZShjb25uKSk7CiAJCWRpc2Nvbm5lY3RfZGF0YWJhc2UoY29ubiwgdHJ1ZSk7CiAJfQog CkBAIC04NzMsOCArOTQ4LDkgQEAgc2V0dXBfcHVibGlzaGVyKHN0cnVjdCBMb2dpY2FsUmVwSW5m byAqZGJpbmZvKQogCQlpZiAoZmluZF9wdWJsaWNhdGlvbihjb25uLCBkYmluZm9baV0ucHVibmFt ZSwgZGJpbmZvW2ldLmRibmFtZSkpCiAJCXsKIAkJCS8qIFJldXNlIGV4aXN0aW5nIHB1YmxpY2F0 aW9uIG9uIHB1Ymxpc2hlci4gKi8KLQkJCXBnX2xvZ19pbmZvKCJ1c2UgZXhpc3RpbmcgcHVibGlj YXRpb24gXCIlc1wiIGluIGRhdGFiYXNlIFwiJXNcIiIsCi0JCQkJCQlkYmluZm9baV0ucHVibmFt ZSwgZGJpbmZvW2ldLmRibmFtZSk7CisJCQlwZ19jcmVhdGVzdWJfbG9nKFBHX0xPR19JTkZPLCBQ R19MT0dfUFJJTUFSWSwKKwkJCQkJCQkgInVzZSBleGlzdGluZyBwdWJsaWNhdGlvbiBcIiVzXCIg aW4gZGF0YWJhc2UgXCIlc1wiIiwKKwkJCQkJCQkgZGJpbmZvW2ldLnB1Ym5hbWUsIGRiaW5mb1tp XS5kYm5hbWUpOwogCQkJLyogRG9uJ3QgcmVtb3ZlIHByZS1leGlzdGluZyBwdWJsaWNhdGlvbiBp ZiBhbiBlcnJvciBvY2N1cnMuICovCiAJCQlkYmluZm9baV0ubWFkZV9wdWJsaWNhdGlvbiA9IGZh bHNlOwogCQl9CkBAIC05MTIsOCArOTg4LDkgQEAgc2V0dXBfcHVibGlzaGVyKHN0cnVjdCBMb2dp Y2FsUmVwSW5mbyAqZGJpbmZvKQogCQkJcmVzID0gUFFleGVjKGNvbm4sICJTRUxFQ1QgcGdfbG9n X3N0YW5kYnlfc25hcHNob3QoKSIpOwogCQkJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdS RVNfVFVQTEVTX09LKQogCQkJewotCQkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHdyaXRlIGFu IGFkZGl0aW9uYWwgV0FMIHJlY29yZDogJXMiLAotCQkJCQkJCSBQUXJlc3VsdEVycm9yTWVzc2Fn ZShyZXMpKTsKKwkJCQlwZ19jcmVhdGVzdWJfbG9nKFBHX0xPR19FUlJPUiwgUEdfTE9HX1BSSU1B UlksCisJCQkJCQkJCSAiY291bGQgbm90IHdyaXRlIGFuIGFkZGl0aW9uYWwgV0FMIHJlY29yZDog JXMiLAorCQkJCQkJCQkgUFFyZXN1bHRFcnJvck1lc3NhZ2UocmVzKSk7CiAJCQkJZGlzY29ubmVj dF9kYXRhYmFzZShjb25uLCB0cnVlKTsKIAkJCX0KIAkJCVBRY2xlYXIocmVzKTsKQEAgLTkzOCw4 ICsxMDE1LDkgQEAgc2VydmVyX2lzX2luX3JlY292ZXJ5KFBHY29ubiAqY29ubikKIAogCWlmIChQ UXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX1RVUExFU19PSykKIAl7Ci0JCXBnX2xvZ19lcnJv cigiY291bGQgbm90IG9idGFpbiByZWNvdmVyeSBwcm9ncmVzczogJXMiLAotCQkJCQkgUFFyZXN1 bHRFcnJvck1lc3NhZ2UocmVzKSk7CisJCXBnX2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0VSUk9SLCBQ R19MT0dfUFJJTUFSWSwKKwkJCQkJCSAiY291bGQgbm90IG9idGFpbiByZWNvdmVyeSBwcm9ncmVz czogJXMiLAorCQkJCQkJIFBRcmVzdWx0RXJyb3JNZXNzYWdlKHJlcykpOwogCQlkaXNjb25uZWN0 X2RhdGFiYXNlKGNvbm4sIHRydWUpOwogCX0KIApAQCAtOTcxLDcgKzEwNDksOCBAQCBjaGVja19w dWJsaXNoZXIoY29uc3Qgc3RydWN0IExvZ2ljYWxSZXBJbmZvICpkYmluZm8pCiAJaW50CQkJbWF4 X3ByZXBhcmVkX3RyYW5zYWN0aW9uczsKIAljaGFyCSAgICptYXhfc2xvdF93YWxfa2VlcF9zaXpl OwogCi0JcGdfbG9nX2luZm8oImNoZWNraW5nIHNldHRpbmdzIG9uIHB1Ymxpc2hlciIpOworCXBn X2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0lORk8sIFBHX0xPR19QUklNQVJZLAorCQkJCQkgImNoZWNr aW5nIHNldHRpbmdzIG9uIHB1Ymxpc2hlciIpOwogCiAJY29ubiA9IGNvbm5lY3RfZGF0YWJhc2Uo ZGJpbmZvWzBdLnB1YmNvbm5pbmZvLCB0cnVlKTsKIApAQCAtOTgxLDcgKzEwNjAsOCBAQCBjaGVj a19wdWJsaXNoZXIoY29uc3Qgc3RydWN0IExvZ2ljYWxSZXBJbmZvICpkYmluZm8pCiAJICovCiAJ aWYgKHNlcnZlcl9pc19pbl9yZWNvdmVyeShjb25uKSkKIAl7Ci0JCXBnX2xvZ19lcnJvcigicHJp bWFyeSBzZXJ2ZXIgY2Fubm90IGJlIGluIHJlY292ZXJ5Iik7CisJCXBnX2NyZWF0ZXN1Yl9sb2co UEdfTE9HX0VSUk9SLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJCSAicHJpbWFyeSBzZXJ2ZXIgY2Fu bm90IGJlIGluIHJlY292ZXJ5Iik7CiAJCWRpc2Nvbm5lY3RfZGF0YWJhc2UoY29ubiwgdHJ1ZSk7 CiAJfQogCkBAIC0xMDA3LDggKzEwODcsOSBAQCBjaGVja19wdWJsaXNoZXIoY29uc3Qgc3RydWN0 IExvZ2ljYWxSZXBJbmZvICpkYmluZm8pCiAKIAlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQ R1JFU19UVVBMRVNfT0spCiAJewotCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBvYnRhaW4gcHVi bGlzaGVyIHNldHRpbmdzOiAlcyIsCi0JCQkJCSBQUXJlc3VsdEVycm9yTWVzc2FnZShyZXMpKTsK KwkJcGdfY3JlYXRlc3ViX2xvZyhQR19MT0dfRVJST1IsIFBHX0xPR19QUklNQVJZLAorCQkJCQkJ ICJjb3VsZCBub3Qgb2J0YWluIHB1Ymxpc2hlciBzZXR0aW5nczogJXMiLAorCQkJCQkJIFBRcmVz dWx0RXJyb3JNZXNzYWdlKHJlcykpOwogCQlkaXNjb25uZWN0X2RhdGFiYXNlKGNvbm4sIHRydWUp OwogCX0KIApAQCAtMTAyMiw0OCArMTEwMyw2MyBAQCBjaGVja19wdWJsaXNoZXIoY29uc3Qgc3Ry dWN0IExvZ2ljYWxSZXBJbmZvICpkYmluZm8pCiAKIAlQUWNsZWFyKHJlcyk7CiAKLQlwZ19sb2df ZGVidWcoInB1Ymxpc2hlcjogd2FsX2xldmVsOiAlcyIsIHdhbF9sZXZlbCk7Ci0JcGdfbG9nX2Rl YnVnKCJwdWJsaXNoZXI6IG1heF9yZXBsaWNhdGlvbl9zbG90czogJWQiLCBtYXhfcmVwc2xvdHMp OwotCXBnX2xvZ19kZWJ1ZygicHVibGlzaGVyOiBjdXJyZW50IHJlcGxpY2F0aW9uIHNsb3RzOiAl ZCIsIGN1cl9yZXBzbG90cyk7Ci0JcGdfbG9nX2RlYnVnKCJwdWJsaXNoZXI6IG1heF93YWxfc2Vu ZGVyczogJWQiLCBtYXhfd2Fsc2VuZGVycyk7Ci0JcGdfbG9nX2RlYnVnKCJwdWJsaXNoZXI6IGN1 cnJlbnQgd2FsIHNlbmRlcnM6ICVkIiwgY3VyX3dhbHNlbmRlcnMpOwotCXBnX2xvZ19kZWJ1Zygi cHVibGlzaGVyOiBtYXhfcHJlcGFyZWRfdHJhbnNhY3Rpb25zOiAlZCIsCi0JCQkJIG1heF9wcmVw YXJlZF90cmFuc2FjdGlvbnMpOwotCXBnX2xvZ19kZWJ1ZygicHVibGlzaGVyOiBtYXhfc2xvdF93 YWxfa2VlcF9zaXplOiAlcyIsCi0JCQkJIG1heF9zbG90X3dhbF9rZWVwX3NpemUpOworCXBnX2Ny ZWF0ZXN1Yl9sb2coUEdfTE9HX0RFQlVHLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJICJwdWJsaXNo ZXI6IHdhbF9sZXZlbDogJXMiLCB3YWxfbGV2ZWwpOworCXBnX2NyZWF0ZXN1Yl9sb2coUEdfTE9H X0RFQlVHLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJICJwdWJsaXNoZXI6IG1heF9yZXBsaWNhdGlv bl9zbG90czogJWQiLCBtYXhfcmVwc2xvdHMpOworCXBnX2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0RF QlVHLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJICJwdWJsaXNoZXI6IGN1cnJlbnQgcmVwbGljYXRp b24gc2xvdHM6ICVkIiwgY3VyX3JlcHNsb3RzKTsKKwlwZ19jcmVhdGVzdWJfbG9nKFBHX0xPR19E RUJVRywgUEdfTE9HX1BSSU1BUlksCisJCQkJCSAicHVibGlzaGVyOiBtYXhfd2FsX3NlbmRlcnM6 ICVkIiwgbWF4X3dhbHNlbmRlcnMpOworCXBnX2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0RFQlVHLCBQ R19MT0dfUFJJTUFSWSwKKwkJCQkJICJwdWJsaXNoZXI6IGN1cnJlbnQgd2FsIHNlbmRlcnM6ICVk IiwgY3VyX3dhbHNlbmRlcnMpOworCXBnX2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0RFQlVHLCBQR19M T0dfUFJJTUFSWSwKKwkJCQkJICJwdWJsaXNoZXI6IG1heF9wcmVwYXJlZF90cmFuc2FjdGlvbnM6 ICVkIiwKKwkJCQkJIG1heF9wcmVwYXJlZF90cmFuc2FjdGlvbnMpOworCXBnX2NyZWF0ZXN1Yl9s b2coUEdfTE9HX0RFQlVHLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJICJwdWJsaXNoZXI6IG1heF9z bG90X3dhbF9rZWVwX3NpemU6ICVzIiwKKwkJCQkJIG1heF9zbG90X3dhbF9rZWVwX3NpemUpOwog CiAJZGlzY29ubmVjdF9kYXRhYmFzZShjb25uLCBmYWxzZSk7CiAKIAlpZiAoc3RyY21wKHdhbF9s ZXZlbCwgIm1pbmltYWwiKSA9PSAwKQogCXsKLQkJcGdfbG9nX2Vycm9yKCJwdWJsaXNoZXIgcmVx dWlyZXMgXCJ3YWxfbGV2ZWxcIiA+PSBcInJlcGxpY2FcIiIpOworCQlwZ19jcmVhdGVzdWJfbG9n KFBHX0xPR19FUlJPUiwgUEdfTE9HX1BSSU1BUlksCisJCQkJCQkgInB1Ymxpc2hlciByZXF1aXJl cyBcIndhbF9sZXZlbFwiID49IFwicmVwbGljYVwiIik7CiAJCWZhaWxlZCA9IHRydWU7CiAJfQog CiAJaWYgKG1heF9yZXBzbG90cyAtIGN1cl9yZXBzbG90cyA8IG51bV9kYnMpCiAJewotCQlwZ19s b2dfZXJyb3IoInB1Ymxpc2hlciByZXF1aXJlcyAlZCByZXBsaWNhdGlvbiBzbG90cywgYnV0IG9u bHkgJWQgcmVtYWluIiwKLQkJCQkJIG51bV9kYnMsIG1heF9yZXBzbG90cyAtIGN1cl9yZXBzbG90 cyk7Ci0JCXBnX2xvZ19lcnJvcl9oaW50KCJJbmNyZWFzZSB0aGUgY29uZmlndXJhdGlvbiBwYXJh bWV0ZXIgXCIlc1wiIHRvIGF0IGxlYXN0ICVkLiIsCi0JCQkJCQkgICJtYXhfcmVwbGljYXRpb25f c2xvdHMiLCBjdXJfcmVwc2xvdHMgKyBudW1fZGJzKTsKKwkJcGdfY3JlYXRlc3ViX2xvZyhQR19M T0dfRVJST1IsIFBHX0xPR19QUklNQVJZLAorCQkJCQkJICJwdWJsaXNoZXIgcmVxdWlyZXMgJWQg cmVwbGljYXRpb24gc2xvdHMsIGJ1dCBvbmx5ICVkIHJlbWFpbiIsCisJCQkJCQkgbnVtX2Ricywg bWF4X3JlcHNsb3RzIC0gY3VyX3JlcHNsb3RzKTsKKwkJcGdfY3JlYXRlc3ViX2xvZyhQR19MT0df RVJST1IsIFBHX0xPR19ISU5ULAorCQkJCQkJICJJbmNyZWFzZSB0aGUgY29uZmlndXJhdGlvbiBw YXJhbWV0ZXIgXCIlc1wiIHRvIGF0IGxlYXN0ICVkLiIsCisJCQkJCQkgIm1heF9yZXBsaWNhdGlv bl9zbG90cyIsIGN1cl9yZXBzbG90cyArIG51bV9kYnMpOwogCQlmYWlsZWQgPSB0cnVlOwogCX0K IAogCWlmIChtYXhfd2Fsc2VuZGVycyAtIGN1cl93YWxzZW5kZXJzIDwgbnVtX2RicykKIAl7Ci0J CXBnX2xvZ19lcnJvcigicHVibGlzaGVyIHJlcXVpcmVzICVkIFdBTCBzZW5kZXIgcHJvY2Vzc2Vz LCBidXQgb25seSAlZCByZW1haW4iLAotCQkJCQkgbnVtX2RicywgbWF4X3dhbHNlbmRlcnMgLSBj dXJfd2Fsc2VuZGVycyk7Ci0JCXBnX2xvZ19lcnJvcl9oaW50KCJJbmNyZWFzZSB0aGUgY29uZmln dXJhdGlvbiBwYXJhbWV0ZXIgXCIlc1wiIHRvIGF0IGxlYXN0ICVkLiIsCi0JCQkJCQkgICJtYXhf d2FsX3NlbmRlcnMiLCBjdXJfd2Fsc2VuZGVycyArIG51bV9kYnMpOworCQlwZ19jcmVhdGVzdWJf bG9nKFBHX0xPR19FUlJPUiwgUEdfTE9HX1BSSU1BUlksCisJCQkJCQkgInB1Ymxpc2hlciByZXF1 aXJlcyAlZCBXQUwgc2VuZGVyIHByb2Nlc3NlcywgYnV0IG9ubHkgJWQgcmVtYWluIiwKKwkJCQkJ CSBudW1fZGJzLCBtYXhfd2Fsc2VuZGVycyAtIGN1cl93YWxzZW5kZXJzKTsKKwkJcGdfY3JlYXRl c3ViX2xvZyhQR19MT0dfRVJST1IsIFBHX0xPR19ISU5ULAorCQkJCQkJICJJbmNyZWFzZSB0aGUg Y29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgXCIlc1wiIHRvIGF0IGxlYXN0ICVkLiIsCisJCQkJCQkg Im1heF93YWxfc2VuZGVycyIsIGN1cl93YWxzZW5kZXJzICsgbnVtX2Ricyk7CiAJCWZhaWxlZCA9 IHRydWU7CiAJfQogCiAJaWYgKG1heF9wcmVwYXJlZF90cmFuc2FjdGlvbnMgIT0gMCAmJiAhZGJp bmZvcy50d29fcGhhc2UpCiAJewotCQlwZ19sb2dfd2FybmluZygidHdvX3BoYXNlIG9wdGlvbiB3 aWxsIG5vdCBiZSBlbmFibGVkIGZvciByZXBsaWNhdGlvbiBzbG90cyIpOwotCQlwZ19sb2dfd2Fy bmluZ19kZXRhaWwoIlN1YnNjcmlwdGlvbnMgd2lsbCBiZSBjcmVhdGVkIHdpdGggdGhlIHR3b19w aGFzZSBvcHRpb24gZGlzYWJsZWQuICAiCi0JCQkJCQkJICAiUHJlcGFyZWQgdHJhbnNhY3Rpb25z IHdpbGwgYmUgcmVwbGljYXRlZCBhdCBDT01NSVQgUFJFUEFSRUQuIik7Ci0JCXBnX2xvZ193YXJu aW5nX2hpbnQoIllvdSBjYW4gdXNlIHRoZSBjb21tYW5kLWxpbmUgb3B0aW9uIC0tZW5hYmxlLXR3 by1waGFzZSB0byBlbmFibGUgdHdvX3BoYXNlLiIpOworCQlwZ19jcmVhdGVzdWJfbG9nKFBHX0xP R19XQVJOSU5HLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJCSAidHdvX3BoYXNlIG9wdGlvbiB3aWxs IG5vdCBiZSBlbmFibGVkIGZvciByZXBsaWNhdGlvbiBzbG90cyIpOworCQlwZ19jcmVhdGVzdWJf bG9nKFBHX0xPR19XQVJOSU5HLCBQR19MT0dfREVUQUlMLAorCQkJCQkJICJTdWJzY3JpcHRpb25z IHdpbGwgYmUgY3JlYXRlZCB3aXRoIHRoZSB0d29fcGhhc2Ugb3B0aW9uIGRpc2FibGVkLiAgIgor CQkJCQkJICJQcmVwYXJlZCB0cmFuc2FjdGlvbnMgd2lsbCBiZSByZXBsaWNhdGVkIGF0IENPTU1J VCBQUkVQQVJFRC4iKTsKKwkJcGdfY3JlYXRlc3ViX2xvZyhQR19MT0dfV0FSTklORywgUEdfTE9H X0hJTlQsCisJCQkJCQkgIllvdSBjYW4gdXNlIHRoZSBjb21tYW5kLWxpbmUgb3B0aW9uIC0tZW5h YmxlLXR3by1waGFzZSB0byBlbmFibGUgdHdvX3BoYXNlLiIpOwogCX0KIAogCS8qCkBAIC0xMDcz LDkgKzExNjksMTEgQEAgY2hlY2tfcHVibGlzaGVyKGNvbnN0IHN0cnVjdCBMb2dpY2FsUmVwSW5m byAqZGJpbmZvKQogCSAqLwogCWlmIChkcnlfcnVuICYmIChzdHJjbXAobWF4X3Nsb3Rfd2FsX2tl ZXBfc2l6ZSwgIi0xIikgIT0gMCkpCiAJewotCQlwZ19sb2dfd2FybmluZygicmVxdWlyZWQgV0FM IGNvdWxkIGJlIHJlbW92ZWQgZnJvbSB0aGUgcHVibGlzaGVyIik7Ci0JCXBnX2xvZ193YXJuaW5n X2hpbnQoIlNldCB0aGUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgXCIlc1wiIHRvIC0xIHRvIGVu c3VyZSB0aGF0IHJlcXVpcmVkIFdBTCBmaWxlcyBhcmUgbm90IHByZW1hdHVyZWx5IHJlbW92ZWQu IiwKLQkJCQkJCQkibWF4X3Nsb3Rfd2FsX2tlZXBfc2l6ZSIpOworCQlwZ19jcmVhdGVzdWJfbG9n KFBHX0xPR19XQVJOSU5HLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJCSAicmVxdWlyZWQgV0FMIGNv dWxkIGJlIHJlbW92ZWQgZnJvbSB0aGUgcHVibGlzaGVyIik7CisJCXBnX2NyZWF0ZXN1Yl9sb2co UEdfTE9HX1dBUk5JTkcsIFBHX0xPR19ISU5ULAorCQkJCQkJICJTZXQgdGhlIGNvbmZpZ3VyYXRp b24gcGFyYW1ldGVyIFwiJXNcIiB0byAtMSB0byBlbnN1cmUgdGhhdCByZXF1aXJlZCBXQUwgZmls ZXMgYXJlIG5vdCBwcmVtYXR1cmVseSByZW1vdmVkLiIsCisJCQkJCQkgIm1heF9zbG90X3dhbF9r ZWVwX3NpemUiKTsKIAl9CiAKIAlwZ19mcmVlKHdhbF9sZXZlbCk7CkBAIC0xMTA2LDE0ICsxMjA0 LDE2IEBAIGNoZWNrX3N1YnNjcmliZXIoY29uc3Qgc3RydWN0IExvZ2ljYWxSZXBJbmZvICpkYmlu Zm8pCiAJaW50CQkJbWF4X3JlcGxvcmlnaW5zOwogCWludAkJCW1heF93cHJvY3M7CiAKLQlwZ19s b2dfaW5mbygiY2hlY2tpbmcgc2V0dGluZ3Mgb24gc3Vic2NyaWJlciIpOworCXBnX2NyZWF0ZXN1 Yl9sb2coUEdfTE9HX0lORk8sIFBHX0xPR19QUklNQVJZLAorCQkJCQkgImNoZWNraW5nIHNldHRp bmdzIG9uIHN1YnNjcmliZXIiKTsKIAogCWNvbm4gPSBjb25uZWN0X2RhdGFiYXNlKGRiaW5mb1sw XS5zdWJjb25uaW5mbywgdHJ1ZSk7CiAKIAkvKiBUaGUgdGFyZ2V0IHNlcnZlciBtdXN0IGJlIGEg c3RhbmRieSAqLwogCWlmICghc2VydmVyX2lzX2luX3JlY292ZXJ5KGNvbm4pKQogCXsKLQkJcGdf bG9nX2Vycm9yKCJ0YXJnZXQgc2VydmVyIG11c3QgYmUgYSBzdGFuZGJ5Iik7CisJCXBnX2NyZWF0 ZXN1Yl9sb2coUEdfTE9HX0VSUk9SLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJCSAidGFyZ2V0IHNl cnZlciBtdXN0IGJlIGEgc3RhbmRieSIpOwogCQlkaXNjb25uZWN0X2RhdGFiYXNlKGNvbm4sIHRy dWUpOwogCX0KIApAQCAtMTEzNyw4ICsxMjM3LDkgQEAgY2hlY2tfc3Vic2NyaWJlcihjb25zdCBz dHJ1Y3QgTG9naWNhbFJlcEluZm8gKmRiaW5mbykKIAogCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMp ICE9IFBHUkVTX1RVUExFU19PSykKIAl7Ci0JCXBnX2xvZ19lcnJvcigiY291bGQgbm90IG9idGFp biBzdWJzY3JpYmVyIHNldHRpbmdzOiAlcyIsCi0JCQkJCSBQUXJlc3VsdEVycm9yTWVzc2FnZShy ZXMpKTsKKwkJcGdfY3JlYXRlc3ViX2xvZyhQR19MT0dfRVJST1IsIFBHX0xPR19QUklNQVJZLAor CQkJCQkJICJjb3VsZCBub3Qgb2J0YWluIHN1YnNjcmliZXIgc2V0dGluZ3M6ICVzIiwKKwkJCQkJ CSBQUXJlc3VsdEVycm9yTWVzc2FnZShyZXMpKTsKIAkJZGlzY29ubmVjdF9kYXRhYmFzZShjb25u LCB0cnVlKTsKIAl9CiAKQEAgLTExNDgsMTIgKzEyNDksMTYgQEAgY2hlY2tfc3Vic2NyaWJlcihj b25zdCBzdHJ1Y3QgTG9naWNhbFJlcEluZm8gKmRiaW5mbykKIAlpZiAoc3RyY21wKFBRZ2V0dmFs dWUocmVzLCAzLCAwKSwgIiIpICE9IDApCiAJCXByaW1hcnlfc2xvdF9uYW1lID0gcGdfc3RyZHVw KFBRZ2V0dmFsdWUocmVzLCAzLCAwKSk7CiAKLQlwZ19sb2dfZGVidWcoInN1YnNjcmliZXI6IG1h eF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnM6ICVkIiwKLQkJCQkgbWF4X2xyd29ya2Vycyk7 Ci0JcGdfbG9nX2RlYnVnKCJzdWJzY3JpYmVyOiBtYXhfYWN0aXZlX3JlcGxpY2F0aW9uX29yaWdp bnM6ICVkIiwgbWF4X3JlcGxvcmlnaW5zKTsKLQlwZ19sb2dfZGVidWcoInN1YnNjcmliZXI6IG1h eF93b3JrZXJfcHJvY2Vzc2VzOiAlZCIsIG1heF93cHJvY3MpOworCXBnX2NyZWF0ZXN1Yl9sb2co UEdfTE9HX0RFQlVHLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJICJzdWJzY3JpYmVyOiBtYXhfbG9n aWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzOiAlZCIsCisJCQkJCSBtYXhfbHJ3b3JrZXJzKTsKKwlw Z19jcmVhdGVzdWJfbG9nKFBHX0xPR19ERUJVRywgUEdfTE9HX1BSSU1BUlksCisJCQkJCSAic3Vi c2NyaWJlcjogbWF4X2FjdGl2ZV9yZXBsaWNhdGlvbl9vcmlnaW5zOiAlZCIsIG1heF9yZXBsb3Jp Z2lucyk7CisJcGdfY3JlYXRlc3ViX2xvZyhQR19MT0dfREVCVUcsIFBHX0xPR19QUklNQVJZLAor CQkJCQkgInN1YnNjcmliZXI6IG1heF93b3JrZXJfcHJvY2Vzc2VzOiAlZCIsIG1heF93cHJvY3Mp OwogCWlmIChwcmltYXJ5X3Nsb3RfbmFtZSkKLQkJcGdfbG9nX2RlYnVnKCJzdWJzY3JpYmVyOiBw cmltYXJ5X3Nsb3RfbmFtZTogJXMiLCBwcmltYXJ5X3Nsb3RfbmFtZSk7CisJCXBnX2NyZWF0ZXN1 Yl9sb2coUEdfTE9HX0RFQlVHLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJCSAic3Vic2NyaWJlcjog cHJpbWFyeV9zbG90X25hbWU6ICVzIiwgcHJpbWFyeV9zbG90X25hbWUpOwogCiAJUFFjbGVhcihy ZXMpOwogCkBAIC0xMTYxLDI4ICsxMjY2LDM0IEBAIGNoZWNrX3N1YnNjcmliZXIoY29uc3Qgc3Ry dWN0IExvZ2ljYWxSZXBJbmZvICpkYmluZm8pCiAKIAlpZiAobWF4X3JlcGxvcmlnaW5zIDwgbnVt X2RicykKIAl7Ci0JCXBnX2xvZ19lcnJvcigic3Vic2NyaWJlciByZXF1aXJlcyAlZCBhY3RpdmUg cmVwbGljYXRpb24gb3JpZ2lucywgYnV0IG9ubHkgJWQgcmVtYWluIiwKLQkJCQkJIG51bV9kYnMs IG1heF9yZXBsb3JpZ2lucyk7Ci0JCXBnX2xvZ19lcnJvcl9oaW50KCJJbmNyZWFzZSB0aGUgY29u ZmlndXJhdGlvbiBwYXJhbWV0ZXIgXCIlc1wiIHRvIGF0IGxlYXN0ICVkLiIsCi0JCQkJCQkgICJt YXhfYWN0aXZlX3JlcGxpY2F0aW9uX29yaWdpbnMiLCBudW1fZGJzKTsKKwkJcGdfY3JlYXRlc3Vi X2xvZyhQR19MT0dfRVJST1IsIFBHX0xPR19QUklNQVJZLAorCQkJCQkJICJzdWJzY3JpYmVyIHJl cXVpcmVzICVkIGFjdGl2ZSByZXBsaWNhdGlvbiBvcmlnaW5zLCBidXQgb25seSAlZCByZW1haW4i LAorCQkJCQkJIG51bV9kYnMsIG1heF9yZXBsb3JpZ2lucyk7CisJCXBnX2NyZWF0ZXN1Yl9sb2co UEdfTE9HX0VSUk9SLCBQR19MT0dfSElOVCwKKwkJCQkJCSAiSW5jcmVhc2UgdGhlIGNvbmZpZ3Vy YXRpb24gcGFyYW1ldGVyIFwiJXNcIiB0byBhdCBsZWFzdCAlZC4iLAorCQkJCQkJICJtYXhfYWN0 aXZlX3JlcGxpY2F0aW9uX29yaWdpbnMiLCBudW1fZGJzKTsKIAkJZmFpbGVkID0gdHJ1ZTsKIAl9 CiAKIAlpZiAobWF4X2xyd29ya2VycyA8IG51bV9kYnMpCiAJewotCQlwZ19sb2dfZXJyb3IoInN1 YnNjcmliZXIgcmVxdWlyZXMgJWQgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXJzLCBidXQgb25s eSAlZCByZW1haW4iLAotCQkJCQkgbnVtX2RicywgbWF4X2xyd29ya2Vycyk7Ci0JCXBnX2xvZ19l cnJvcl9oaW50KCJJbmNyZWFzZSB0aGUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgXCIlc1wiIHRv IGF0IGxlYXN0ICVkLiIsCi0JCQkJCQkgICJtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJz IiwgbnVtX2Ricyk7CisJCXBnX2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0VSUk9SLCBQR19MT0dfUFJJ TUFSWSwKKwkJCQkJCSAic3Vic2NyaWJlciByZXF1aXJlcyAlZCBsb2dpY2FsIHJlcGxpY2F0aW9u IHdvcmtlcnMsIGJ1dCBvbmx5ICVkIHJlbWFpbiIsCisJCQkJCQkgbnVtX2RicywgbWF4X2xyd29y a2Vycyk7CisJCXBnX2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0VSUk9SLCBQR19MT0dfSElOVCwKKwkJ CQkJCSAiSW5jcmVhc2UgdGhlIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIFwiJXNcIiB0byBhdCBs ZWFzdCAlZC4iLAorCQkJCQkJICJtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzIiwgbnVt X2Ricyk7CiAJCWZhaWxlZCA9IHRydWU7CiAJfQogCiAJaWYgKG1heF93cHJvY3MgPCBudW1fZGJz ICsgMSkKIAl7Ci0JCXBnX2xvZ19lcnJvcigic3Vic2NyaWJlciByZXF1aXJlcyAlZCB3b3JrZXIg cHJvY2Vzc2VzLCBidXQgb25seSAlZCByZW1haW4iLAotCQkJCQkgbnVtX2RicyArIDEsIG1heF93 cHJvY3MpOwotCQlwZ19sb2dfZXJyb3JfaGludCgiSW5jcmVhc2UgdGhlIGNvbmZpZ3VyYXRpb24g cGFyYW1ldGVyIFwiJXNcIiB0byBhdCBsZWFzdCAlZC4iLAotCQkJCQkJICAibWF4X3dvcmtlcl9w cm9jZXNzZXMiLCBudW1fZGJzICsgMSk7CisJCXBnX2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0VSUk9S LCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJCSAic3Vic2NyaWJlciByZXF1aXJlcyAlZCB3b3JrZXIg cHJvY2Vzc2VzLCBidXQgb25seSAlZCByZW1haW4iLAorCQkJCQkJIG51bV9kYnMgKyAxLCBtYXhf d3Byb2NzKTsKKwkJcGdfY3JlYXRlc3ViX2xvZyhQR19MT0dfRVJST1IsIFBHX0xPR19ISU5ULAor CQkJCQkJICJJbmNyZWFzZSB0aGUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgXCIlc1wiIHRvIGF0 IGxlYXN0ICVkLiIsCisJCQkJCQkgIm1heF93b3JrZXJfcHJvY2Vzc2VzIiwgbnVtX2RicyArIDEp OwogCQlmYWlsZWQgPSB0cnVlOwogCX0KIApAQCAtMTIxNSwxOSArMTMyNiwyMiBAQCBkcm9wX2V4 aXN0aW5nX3N1YnNjcmlwdGlvbihQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKnN1Ym5hbWUsIGNv bnN0IGNoYXIgKmRibmFtZQogCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiIERST1AgU1VCU0NS SVBUSU9OICVzOyIsIHN1Ym5hbWUpOwogCiAJaWYgKGRyeV9ydW4pCi0JCXBnX2xvZ19pbmZvKCJk cnktcnVuOiB3b3VsZCBkcm9wIHN1YnNjcmlwdGlvbiBcIiVzXCIgaW4gZGF0YWJhc2UgXCIlc1wi IiwKLQkJCQkJc3VibmFtZSwgZGJuYW1lKTsKKwkJcGdfY3JlYXRlc3ViX2xvZyhQR19MT0dfSU5G TywgUEdfTE9HX1BSSU1BUlksCisJCQkJCQkgImRyeS1ydW46IHdvdWxkIGRyb3Agc3Vic2NyaXB0 aW9uIFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVzXCIiLAorCQkJCQkJIHN1Ym5hbWUsIGRibmFtZSk7 CiAJZWxzZQogCXsKLQkJcGdfbG9nX2luZm8oImRyb3BwaW5nIHN1YnNjcmlwdGlvbiBcIiVzXCIg aW4gZGF0YWJhc2UgXCIlc1wiIiwKLQkJCQkJc3VibmFtZSwgZGJuYW1lKTsKKwkJcGdfY3JlYXRl c3ViX2xvZyhQR19MT0dfSU5GTywgUEdfTE9HX1BSSU1BUlksCisJCQkJCQkgImRyb3BwaW5nIHN1 YnNjcmlwdGlvbiBcIiVzXCIgaW4gZGF0YWJhc2UgXCIlc1wiIiwKKwkJCQkJCSBzdWJuYW1lLCBk Ym5hbWUpOwogCiAJCXJlcyA9IFBRZXhlYyhjb25uLCBxdWVyeS0+ZGF0YSk7CiAKIAkJaWYgKFBR cmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfQ09NTUFORF9PSykKIAkJewotCQkJcGdfbG9nX2Vy cm9yKCJjb3VsZCBub3QgZHJvcCBzdWJzY3JpcHRpb24gXCIlc1wiOiAlcyIsCi0JCQkJCQkgc3Vi bmFtZSwgUFFyZXN1bHRFcnJvck1lc3NhZ2UocmVzKSk7CisJCQlwZ19jcmVhdGVzdWJfbG9nKFBH X0xPR19FUlJPUiwgUEdfTE9HX1BSSU1BUlksCisJCQkJCQkJICJjb3VsZCBub3QgZHJvcCBzdWJz Y3JpcHRpb24gXCIlc1wiOiAlcyIsCisJCQkJCQkJIHN1Ym5hbWUsIFBRcmVzdWx0RXJyb3JNZXNz YWdlKHJlcykpOwogCQkJZGlzY29ubmVjdF9kYXRhYmFzZShjb25uLCB0cnVlKTsKIAkJfQogCkBA IC0xMjYxLDggKzEzNzUsOSBAQCBjaGVja19hbmRfZHJvcF9leGlzdGluZ19zdWJzY3JpcHRpb25z KFBHY29ubiAqY29ubiwKIAogCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX1RVUExF U19PSykKIAl7Ci0JCXBnX2xvZ19lcnJvcigiY291bGQgbm90IG9idGFpbiBwcmUtZXhpc3Rpbmcg c3Vic2NyaXB0aW9uczogJXMiLAotCQkJCQkgUFFyZXN1bHRFcnJvck1lc3NhZ2UocmVzKSk7CisJ CXBnX2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0VSUk9SLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJCSAi Y291bGQgbm90IG9idGFpbiBwcmUtZXhpc3Rpbmcgc3Vic2NyaXB0aW9uczogJXMiLAorCQkJCQkJ IFBRcmVzdWx0RXJyb3JNZXNzYWdlKHJlcykpOwogCQlkaXNjb25uZWN0X2RhdGFiYXNlKGNvbm4s IHRydWUpOwogCX0KIApAQCAtMTM3Myw3ICsxNDg4LDggQEAgc2V0dXBfcmVjb3ZlcnkoY29uc3Qg c3RydWN0IExvZ2ljYWxSZXBJbmZvICpkYmluZm8sIGNvbnN0IGNoYXIgKmRhdGFkaXIsIGNvbnN0 IGMKIAkJCQkJCSAgbHNuKTsKIAl9CiAKLQlwZ19sb2dfZGVidWcoInJlY292ZXJ5IHBhcmFtZXRl cnM6XG4lcyIsIHJlY292ZXJ5Y29uZmNvbnRlbnRzLT5kYXRhKTsKKwlwZ19jcmVhdGVzdWJfbG9n KFBHX0xPR19ERUJVRywgUEdfTE9HX1BSSU1BUlksCisJCQkJCSAicmVjb3ZlcnkgcGFyYW1ldGVy czpcbiVzIiwgcmVjb3Zlcnljb25mY29udGVudHMtPmRhdGEpOwogCiAJaWYgKCFkcnlfcnVuKQog CXsKQEAgLTE0MjcsOSArMTU0MywxMSBAQCBkcm9wX3ByaW1hcnlfcmVwbGljYXRpb25fc2xvdChz dHJ1Y3QgTG9naWNhbFJlcEluZm8gKmRiaW5mbywgY29uc3QgY2hhciAqc2xvdG5hbQogCX0KIAll bHNlCiAJewotCQlwZ19sb2dfd2FybmluZygiY291bGQgbm90IGRyb3AgcmVwbGljYXRpb24gc2xv dCBcIiVzXCIgb24gcHJpbWFyeSIsCi0JCQkJCSAgIHNsb3RuYW1lKTsKLQkJcGdfbG9nX3dhcm5p bmdfaGludCgiRHJvcCB0aGlzIHJlcGxpY2F0aW9uIHNsb3Qgc29vbiB0byBhdm9pZCByZXRlbnRp b24gb2YgV0FMIGZpbGVzLiIpOworCQlwZ19jcmVhdGVzdWJfbG9nKFBHX0xPR19XQVJOSU5HLCBQ R19MT0dfUFJJTUFSWSwKKwkJCQkJCSAiY291bGQgbm90IGRyb3AgcmVwbGljYXRpb24gc2xvdCBc IiVzXCIgb24gcHJpbWFyeSIsCisJCQkJCQkgc2xvdG5hbWUpOworCQlwZ19jcmVhdGVzdWJfbG9n KFBHX0xPR19XQVJOSU5HLCBQR19MT0dfSElOVCwKKwkJCQkJCSAiRHJvcCB0aGlzIHJlcGxpY2F0 aW9uIHNsb3Qgc29vbiB0byBhdm9pZCByZXRlbnRpb24gb2YgV0FMIGZpbGVzLiIpOwogCX0KIH0K IApAQCAtMTQ2MSw5ICsxNTc5LDExIEBAIGRyb3BfZmFpbG92ZXJfcmVwbGljYXRpb25fc2xvdHMo c3RydWN0IExvZ2ljYWxSZXBJbmZvICpkYmluZm8pCiAJCX0KIAkJZWxzZQogCQl7Ci0JCQlwZ19s b2dfd2FybmluZygiY291bGQgbm90IG9idGFpbiBmYWlsb3ZlciByZXBsaWNhdGlvbiBzbG90IGlu Zm9ybWF0aW9uOiAlcyIsCi0JCQkJCQkgICBQUXJlc3VsdEVycm9yTWVzc2FnZShyZXMpKTsKLQkJ CXBnX2xvZ193YXJuaW5nX2hpbnQoIkRyb3AgdGhlIGZhaWxvdmVyIHJlcGxpY2F0aW9uIHNsb3Rz IG9uIHN1YnNjcmliZXIgc29vbiB0byBhdm9pZCByZXRlbnRpb24gb2YgV0FMIGZpbGVzLiIpOwor CQkJcGdfY3JlYXRlc3ViX2xvZyhQR19MT0dfV0FSTklORywgUEdfTE9HX1BSSU1BUlksCisJCQkJ CQkJICJjb3VsZCBub3Qgb2J0YWluIGZhaWxvdmVyIHJlcGxpY2F0aW9uIHNsb3QgaW5mb3JtYXRp b246ICVzIiwKKwkJCQkJCQkgUFFyZXN1bHRFcnJvck1lc3NhZ2UocmVzKSk7CisJCQlwZ19jcmVh dGVzdWJfbG9nKFBHX0xPR19XQVJOSU5HLCBQR19MT0dfSElOVCwKKwkJCQkJCQkgIkRyb3AgdGhl IGZhaWxvdmVyIHJlcGxpY2F0aW9uIHNsb3RzIG9uIHN1YnNjcmliZXIgc29vbiB0byBhdm9pZCBy ZXRlbnRpb24gb2YgV0FMIGZpbGVzLiIpOwogCQl9CiAKIAkJUFFjbGVhcihyZXMpOwpAQCAtMTQ3 MSw4ICsxNTkxLDEwIEBAIGRyb3BfZmFpbG92ZXJfcmVwbGljYXRpb25fc2xvdHMoc3RydWN0IExv Z2ljYWxSZXBJbmZvICpkYmluZm8pCiAJfQogCWVsc2UKIAl7Ci0JCXBnX2xvZ193YXJuaW5nKCJj b3VsZCBub3QgZHJvcCBmYWlsb3ZlciByZXBsaWNhdGlvbiBzbG90Iik7Ci0JCXBnX2xvZ193YXJu aW5nX2hpbnQoIkRyb3AgdGhlIGZhaWxvdmVyIHJlcGxpY2F0aW9uIHNsb3RzIG9uIHN1YnNjcmli ZXIgc29vbiB0byBhdm9pZCByZXRlbnRpb24gb2YgV0FMIGZpbGVzLiIpOworCQlwZ19jcmVhdGVz dWJfbG9nKFBHX0xPR19XQVJOSU5HLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJCSAiY291bGQgbm90 IGRyb3AgZmFpbG92ZXIgcmVwbGljYXRpb24gc2xvdCIpOworCQlwZ19jcmVhdGVzdWJfbG9nKFBH X0xPR19XQVJOSU5HLCBQR19MT0dfSElOVCwKKwkJCQkJCSAiRHJvcCB0aGUgZmFpbG92ZXIgcmVw bGljYXRpb24gc2xvdHMgb24gc3Vic2NyaWJlciBzb29uIHRvIGF2b2lkIHJldGVudGlvbiBvZiBX QUwgZmlsZXMuIik7CiAJfQogfQogCkBAIC0xNDk0LDExICsxNjE2LDEzIEBAIGNyZWF0ZV9sb2dp Y2FsX3JlcGxpY2F0aW9uX3Nsb3QoUEdjb25uICpjb25uLCBzdHJ1Y3QgTG9naWNhbFJlcEluZm8g KmRiaW5mbykKIAlBc3NlcnQoY29ubiAhPSBOVUxMKTsKIAogCWlmIChkcnlfcnVuKQotCQlwZ19s b2dfaW5mbygiZHJ5LXJ1bjogd291bGQgY3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90IFwiJXNc IiBpbiBkYXRhYmFzZSBcIiVzXCIgb24gcHVibGlzaGVyIiwKLQkJCQkJc2xvdF9uYW1lLCBkYmlu Zm8tPmRibmFtZSk7CisJCXBnX2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0lORk8sIFBHX0xPR19QUklN QVJZLAorCQkJCQkJICJkcnktcnVuOiB3b3VsZCBjcmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3Qg XCIlc1wiIGluIGRhdGFiYXNlIFwiJXNcIiBvbiBwdWJsaXNoZXIiLAorCQkJCQkJIHNsb3RfbmFt ZSwgZGJpbmZvLT5kYm5hbWUpOwogCWVsc2UKLQkJcGdfbG9nX2luZm8oImNyZWF0aW5nIHRoZSBy ZXBsaWNhdGlvbiBzbG90IFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVzXCIgb24gcHVibGlzaGVyIiwK LQkJCQkJc2xvdF9uYW1lLCBkYmluZm8tPmRibmFtZSk7CisJCXBnX2NyZWF0ZXN1Yl9sb2coUEdf TE9HX0lORk8sIFBHX0xPR19QUklNQVJZLAorCQkJCQkJICJjcmVhdGluZyB0aGUgcmVwbGljYXRp b24gc2xvdCBcIiVzXCIgaW4gZGF0YWJhc2UgXCIlc1wiIG9uIHB1Ymxpc2hlciIsCisJCQkJCQkg c2xvdF9uYW1lLCBkYmluZm8tPmRibmFtZSk7CiAKIAlzbG90X25hbWVfZXNjID0gUFFlc2NhcGVM aXRlcmFsKGNvbm4sIHNsb3RfbmFtZSwgc3RybGVuKHNsb3RfbmFtZSkpOwogCkBAIC0xNTA5LDE2 ICsxNjMzLDE4IEBAIGNyZWF0ZV9sb2dpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoUEdjb25uICpjb25u LCBzdHJ1Y3QgTG9naWNhbFJlcEluZm8gKmRiaW5mbykKIAogCVBRZnJlZW1lbShzbG90X25hbWVf ZXNjKTsKIAotCXBnX2xvZ19kZWJ1ZygiY29tbWFuZCBpczogJXMiLCBzdHItPmRhdGEpOworCXBn X2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0RFQlVHLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJICJjb21t YW5kIGlzOiAlcyIsIHN0ci0+ZGF0YSk7CiAKIAlpZiAoIWRyeV9ydW4pCiAJewogCQlyZXMgPSBQ UWV4ZWMoY29ubiwgc3RyLT5kYXRhKTsKIAkJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdS RVNfVFVQTEVTX09LKQogCQl7Ci0JCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBjcmVhdGUgcmVw bGljYXRpb24gc2xvdCBcIiVzXCIgaW4gZGF0YWJhc2UgXCIlc1wiOiAlcyIsCi0JCQkJCQkgc2xv dF9uYW1lLCBkYmluZm8tPmRibmFtZSwKLQkJCQkJCSBQUXJlc3VsdEVycm9yTWVzc2FnZShyZXMp KTsKKwkJCXBnX2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0VSUk9SLCBQR19MT0dfUFJJTUFSWSwKKwkJ CQkJCQkgImNvdWxkIG5vdCBjcmVhdGUgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIgaW4gZGF0YWJh c2UgXCIlc1wiOiAlcyIsCisJCQkJCQkJIHNsb3RfbmFtZSwgZGJpbmZvLT5kYm5hbWUsCisJCQkJ CQkJIFBRcmVzdWx0RXJyb3JNZXNzYWdlKHJlcykpOwogCQkJUFFjbGVhcihyZXMpOwogCQkJZGVz dHJveVBRRXhwQnVmZmVyKHN0cik7CiAJCQlyZXR1cm4gTlVMTDsKQEAgLTE1NDcsMTEgKzE2NzMs MTMgQEAgZHJvcF9yZXBsaWNhdGlvbl9zbG90KFBHY29ubiAqY29ubiwgc3RydWN0IExvZ2ljYWxS ZXBJbmZvICpkYmluZm8sCiAJQXNzZXJ0KGNvbm4gIT0gTlVMTCk7CiAKIAlpZiAoZHJ5X3J1bikK LQkJcGdfbG9nX2luZm8oImRyeS1ydW46IHdvdWxkIGRyb3AgdGhlIHJlcGxpY2F0aW9uIHNsb3Qg XCIlc1wiIGluIGRhdGFiYXNlIFwiJXNcIiIsCi0JCQkJCXNsb3RfbmFtZSwgZGJpbmZvLT5kYm5h bWUpOworCQlwZ19jcmVhdGVzdWJfbG9nKFBHX0xPR19JTkZPLCBQR19MT0dfUFJJTUFSWSwKKwkJ CQkJCSAiZHJ5LXJ1bjogd291bGQgZHJvcCB0aGUgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIgaW4g ZGF0YWJhc2UgXCIlc1wiIiwKKwkJCQkJCSBzbG90X25hbWUsIGRiaW5mby0+ZGJuYW1lKTsKIAll bHNlCi0JCXBnX2xvZ19pbmZvKCJkcm9wcGluZyB0aGUgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIg aW4gZGF0YWJhc2UgXCIlc1wiIiwKLQkJCQkJc2xvdF9uYW1lLCBkYmluZm8tPmRibmFtZSk7CisJ CXBnX2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0lORk8sIFBHX0xPR19QUklNQVJZLAorCQkJCQkJICJk cm9wcGluZyB0aGUgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIgaW4gZGF0YWJhc2UgXCIlc1wiIiwK KwkJCQkJCSBzbG90X25hbWUsIGRiaW5mby0+ZGJuYW1lKTsKIAogCXNsb3RfbmFtZV9lc2MgPSBQ UWVzY2FwZUxpdGVyYWwoY29ubiwgc2xvdF9uYW1lLCBzdHJsZW4oc2xvdF9uYW1lKSk7CiAKQEAg LTE1NTksMTUgKzE2ODcsMTcgQEAgZHJvcF9yZXBsaWNhdGlvbl9zbG90KFBHY29ubiAqY29ubiwg c3RydWN0IExvZ2ljYWxSZXBJbmZvICpkYmluZm8sCiAKIAlQUWZyZWVtZW0oc2xvdF9uYW1lX2Vz Yyk7CiAKLQlwZ19sb2dfZGVidWcoImNvbW1hbmQgaXM6ICVzIiwgc3RyLT5kYXRhKTsKKwlwZ19j cmVhdGVzdWJfbG9nKFBHX0xPR19ERUJVRywgUEdfTE9HX1BSSU1BUlksCisJCQkJCSAiY29tbWFu ZCBpczogJXMiLCBzdHItPmRhdGEpOwogCiAJaWYgKCFkcnlfcnVuKQogCXsKIAkJcmVzID0gUFFl eGVjKGNvbm4sIHN0ci0+ZGF0YSk7CiAJCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVT X1RVUExFU19PSykKIAkJewotCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgZHJvcCByZXBsaWNh dGlvbiBzbG90IFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVzXCI6ICVzIiwKLQkJCQkJCSBzbG90X25h bWUsIGRiaW5mby0+ZGJuYW1lLCBQUXJlc3VsdEVycm9yTWVzc2FnZShyZXMpKTsKKwkJCXBnX2Ny ZWF0ZXN1Yl9sb2coUEdfTE9HX0VSUk9SLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJCQkgImNvdWxk IG5vdCBkcm9wIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIGluIGRhdGFiYXNlIFwiJXNcIjogJXMi LAorCQkJCQkJCSBzbG90X25hbWUsIGRiaW5mby0+ZGJuYW1lLCBQUXJlc3VsdEVycm9yTWVzc2Fn ZShyZXMpKTsKIAkJCWRiaW5mby0+bWFkZV9yZXBsc2xvdCA9IGZhbHNlOwkvKiBkb24ndCB0cnkg YWdhaW4uICovCiAJCX0KIApAQCAtMTU4NywyNSArMTcxNywzMiBAQCBwZ19jdGxfc3RhdHVzKGNv bnN0IGNoYXIgKnBnX2N0bF9jbWQsIGludCByYykKIAl7CiAJCWlmIChXSUZFWElURUQocmMpKQog CQl7Ci0JCQlwZ19sb2dfZXJyb3IoInBnX2N0bCBmYWlsZWQgd2l0aCBleGl0IGNvZGUgJWQiLCBX RVhJVFNUQVRVUyhyYykpOworCQkJcGdfY3JlYXRlc3ViX2xvZyhQR19MT0dfRVJST1IsIFBHX0xP R19QUklNQVJZLAorCQkJCQkJCSAicGdfY3RsIGZhaWxlZCB3aXRoIGV4aXQgY29kZSAlZCIsCisJ CQkJCQkJIFdFWElUU1RBVFVTKHJjKSk7CiAJCX0KIAkJZWxzZSBpZiAoV0lGU0lHTkFMRUQocmMp KQogCQl7CiAjaWYgZGVmaW5lZChXSU4zMikKLQkJCXBnX2xvZ19lcnJvcigicGdfY3RsIHdhcyB0 ZXJtaW5hdGVkIGJ5IGV4Y2VwdGlvbiAweCVYIiwKLQkJCQkJCSBXVEVSTVNJRyhyYykpOwotCQkJ cGdfbG9nX2Vycm9yX2RldGFpbCgiU2VlIEMgaW5jbHVkZSBmaWxlIFwibnRzdGF0dXMuaFwiIGZv ciBhIGRlc2NyaXB0aW9uIG9mIHRoZSBoZXhhZGVjaW1hbCB2YWx1ZS4iKTsKKwkJCXBnX2NyZWF0 ZXN1Yl9sb2coUEdfTE9HX0VSUk9SLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJCQkgInBnX2N0bCB3 YXMgdGVybWluYXRlZCBieSBleGNlcHRpb24gMHglWCIsCisJCQkJCQkJIFdURVJNU0lHKHJjKSk7 CisJCQlwZ19jcmVhdGVzdWJfbG9nKFBHX0xPR19FUlJPUiwgUEdfTE9HX0RFVEFJTCwKKwkJCQkJ CQkgIlNlZSBDIGluY2x1ZGUgZmlsZSBcIm50c3RhdHVzLmhcIiBmb3IgYSBkZXNjcmlwdGlvbiBv ZiB0aGUgaGV4YWRlY2ltYWwgdmFsdWUuIik7CiAjZWxzZQotCQkJcGdfbG9nX2Vycm9yKCJwZ19j dGwgd2FzIHRlcm1pbmF0ZWQgYnkgc2lnbmFsICVkOiAlcyIsCi0JCQkJCQkgV1RFUk1TSUcocmMp LCBwZ19zdHJzaWduYWwoV1RFUk1TSUcocmMpKSk7CisJCQlwZ19jcmVhdGVzdWJfbG9nKFBHX0xP R19FUlJPUiwgUEdfTE9HX1BSSU1BUlksCisJCQkJCQkJICJwZ19jdGwgd2FzIHRlcm1pbmF0ZWQg Ynkgc2lnbmFsICVkOiAlcyIsCisJCQkJCQkJIFdURVJNU0lHKHJjKSwgcGdfc3Ryc2lnbmFsKFdU RVJNU0lHKHJjKSkpOwogI2VuZGlmCiAJCX0KIAkJZWxzZQogCQl7Ci0JCQlwZ19sb2dfZXJyb3Io InBnX2N0bCBleGl0ZWQgd2l0aCB1bnJlY29nbml6ZWQgc3RhdHVzICVkIiwgcmMpOworCQkJcGdf Y3JlYXRlc3ViX2xvZyhQR19MT0dfRVJST1IsIFBHX0xPR19QUklNQVJZLAorCQkJCQkJCSAicGdf Y3RsIGV4aXRlZCB3aXRoIHVucmVjb2duaXplZCBzdGF0dXMgJWQiLCByYyk7CiAJCX0KIAotCQlw Z19sb2dfZXJyb3JfZGV0YWlsKCJUaGUgZmFpbGVkIGNvbW1hbmQgd2FzOiAlcyIsIHBnX2N0bF9j bWQpOworCQlwZ19jcmVhdGVzdWJfbG9nKFBHX0xPR19FUlJPUiwgUEdfTE9HX0RFVEFJTCwKKwkJ CQkJCSAiVGhlIGZhaWxlZCBjb21tYW5kIHdhczogJXMiLCBwZ19jdGxfY21kKTsKIAkJZXhpdCgx KTsKIAl9CiB9CkBAIC0xNjUwLDEyICsxNzg3LDE0IEBAIHN0YXJ0X3N0YW5kYnlfc2VydmVyKGNv bnN0IHN0cnVjdCBDcmVhdGVTdWJzY3JpYmVyT3B0aW9ucyAqb3B0LCBib29sIHJlc3RyaWN0ZWRf CiAJaWYgKHJlc3RyaWN0X2xvZ2ljYWxfd29ya2VyKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihw Z19jdGxfY21kLCAiIC1vIFwiLWMgbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2Vycz0wXCIi KTsKIAotCXBnX2xvZ19kZWJ1ZygicGdfY3RsIGNvbW1hbmQgaXM6ICVzIiwgcGdfY3RsX2NtZC0+ ZGF0YSk7CisJcGdfY3JlYXRlc3ViX2xvZyhQR19MT0dfREVCVUcsIFBHX0xPR19QUklNQVJZLAor CQkJCQkgInBnX2N0bCBjb21tYW5kIGlzOiAlcyIsIHBnX2N0bF9jbWQtPmRhdGEpOwogCXJjID0g c3lzdGVtKHBnX2N0bF9jbWQtPmRhdGEpOwogCXBnX2N0bF9zdGF0dXMocGdfY3RsX2NtZC0+ZGF0 YSwgcmMpOwogCXN0YW5kYnlfcnVubmluZyA9IHRydWU7CiAJZGVzdHJveVBRRXhwQnVmZmVyKHBn X2N0bF9jbWQpOwotCXBnX2xvZ19pbmZvKCJzZXJ2ZXIgd2FzIHN0YXJ0ZWQiKTsKKwlwZ19jcmVh dGVzdWJfbG9nKFBHX0xPR19JTkZPLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJICJzZXJ2ZXIgd2Fz IHN0YXJ0ZWQiKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTE2NjYsMTEgKzE4MDUsMTMgQEAgc3Rv cF9zdGFuZGJ5X3NlcnZlcihjb25zdCBjaGFyICpkYXRhZGlyKQogCiAJcGdfY3RsX2NtZCA9IHBz cHJpbnRmKCJcIiVzXCIgc3RvcCAtRCBcIiVzXCIgLXMiLCBwZ19jdGxfcGF0aCwKIAkJCQkJCSAg ZGF0YWRpcik7Ci0JcGdfbG9nX2RlYnVnKCJwZ19jdGwgY29tbWFuZCBpczogJXMiLCBwZ19jdGxf Y21kKTsKKwlwZ19jcmVhdGVzdWJfbG9nKFBHX0xPR19ERUJVRywgUEdfTE9HX1BSSU1BUlksCisJ CQkJCSAicGdfY3RsIGNvbW1hbmQgaXM6ICVzIiwgcGdfY3RsX2NtZCk7CiAJcmMgPSBzeXN0ZW0o cGdfY3RsX2NtZCk7CiAJcGdfY3RsX3N0YXR1cyhwZ19jdGxfY21kLCByYyk7CiAJc3RhbmRieV9y dW5uaW5nID0gZmFsc2U7Ci0JcGdfbG9nX2luZm8oInNlcnZlciB3YXMgc3RvcHBlZCIpOworCXBn X2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0lORk8sIFBHX0xPR19QUklNQVJZLAorCQkJCQkgInNlcnZl ciB3YXMgc3RvcHBlZCIpOwogfQogCiAvKgpAQCAtMTY4OSw3ICsxODMwLDggQEAgd2FpdF9mb3Jf ZW5kX3JlY292ZXJ5KGNvbnN0IGNoYXIgKmNvbm5pbmZvLCBjb25zdCBzdHJ1Y3QgQ3JlYXRlU3Vi c2NyaWJlck9wdGlvbnMKIAlib29sCQlyZWFkeSA9IGZhbHNlOwogCWludAkJCXRpbWVyID0gMDsK IAotCXBnX2xvZ19pbmZvKCJ3YWl0aW5nIGZvciB0aGUgdGFyZ2V0IHNlcnZlciB0byByZWFjaCB0 aGUgY29uc2lzdGVudCBzdGF0ZSIpOworCXBnX2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0lORk8sIFBH X0xPR19QUklNQVJZLAorCQkJCQkgIndhaXRpbmcgZm9yIHRoZSB0YXJnZXQgc2VydmVyIHRvIHJl YWNoIHRoZSBjb25zaXN0ZW50IHN0YXRlIik7CiAKIAljb25uID0gY29ubmVjdF9kYXRhYmFzZShj b25uaW5mbywgdHJ1ZSk7CiAKQEAgLTE3MDcsNyArMTg0OSw4IEBAIHdhaXRfZm9yX2VuZF9yZWNv dmVyeShjb25zdCBjaGFyICpjb25uaW5mbywgY29uc3Qgc3RydWN0IENyZWF0ZVN1YnNjcmliZXJP cHRpb25zCiAJCWlmIChvcHQtPnJlY292ZXJ5X3RpbWVvdXQgPiAwICYmIHRpbWVyID49IG9wdC0+ cmVjb3ZlcnlfdGltZW91dCkKIAkJewogCQkJc3RvcF9zdGFuZGJ5X3NlcnZlcihzdWJzY3JpYmVy X2Rpcik7Ci0JCQlwZ19sb2dfZXJyb3IoInJlY292ZXJ5IHRpbWVkIG91dCIpOworCQkJcGdfY3Jl YXRlc3ViX2xvZyhQR19MT0dfRVJST1IsIFBHX0xPR19QUklNQVJZLAorCQkJCQkJCSAicmVjb3Zl cnkgdGltZWQgb3V0Iik7CiAJCQlkaXNjb25uZWN0X2RhdGFiYXNlKGNvbm4sIHRydWUpOwogCQl9 CiAKQEAgLTE3MjEsOCArMTg2NCwxMCBAQCB3YWl0X2Zvcl9lbmRfcmVjb3ZlcnkoY29uc3QgY2hh ciAqY29ubmluZm8sIGNvbnN0IHN0cnVjdCBDcmVhdGVTdWJzY3JpYmVyT3B0aW9ucwogCWlmICgh cmVhZHkpCiAJCXBnX2ZhdGFsKCJzZXJ2ZXIgZGlkIG5vdCBlbmQgcmVjb3ZlcnkiKTsKIAotCXBn X2xvZ19pbmZvKCJ0YXJnZXQgc2VydmVyIHJlYWNoZWQgdGhlIGNvbnNpc3RlbnQgc3RhdGUiKTsK LQlwZ19sb2dfaW5mb19oaW50KCJJZiBwZ19jcmVhdGVzdWJzY3JpYmVyIGZhaWxzIGFmdGVyIHRo aXMgcG9pbnQsIHlvdSBtdXN0IHJlY3JlYXRlIHRoZSBwaHlzaWNhbCByZXBsaWNhIGJlZm9yZSBj b250aW51aW5nLiIpOworCXBnX2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0lORk8sIFBHX0xPR19QUklN QVJZLAorCQkJCQkgInRhcmdldCBzZXJ2ZXIgcmVhY2hlZCB0aGUgY29uc2lzdGVudCBzdGF0ZSIp OworCXBnX2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0lORk8sIFBHX0xPR19ISU5ULAorCQkJCQkgIklm IHBnX2NyZWF0ZXN1YnNjcmliZXIgZmFpbHMgYWZ0ZXIgdGhpcyBwb2ludCwgeW91IG11c3QgcmVj cmVhdGUgdGhlIHBoeXNpY2FsIHJlcGxpY2EgYmVmb3JlIGNvbnRpbnVpbmcuIik7CiB9CiAKIC8q CkBAIC0xNzQ5LDggKzE4OTQsOSBAQCBjcmVhdGVfcHVibGljYXRpb24oUEdjb25uICpjb25uLCBz dHJ1Y3QgTG9naWNhbFJlcEluZm8gKmRiaW5mbykKIAlyZXMgPSBQUWV4ZWMoY29ubiwgc3RyLT5k YXRhKTsKIAlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19UVVBMRVNfT0spCiAJewot CQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBvYnRhaW4gcHVibGljYXRpb24gaW5mb3JtYXRpb246 ICVzIiwKLQkJCQkJIFBRcmVzdWx0RXJyb3JNZXNzYWdlKHJlcykpOworCQlwZ19jcmVhdGVzdWJf bG9nKFBHX0xPR19FUlJPUiwgUEdfTE9HX1BSSU1BUlksCisJCQkJCQkgImNvdWxkIG5vdCBvYnRh aW4gcHVibGljYXRpb24gaW5mb3JtYXRpb246ICVzIiwKKwkJCQkJCSBQUXJlc3VsdEVycm9yTWVz c2FnZShyZXMpKTsKIAkJZGlzY29ubmVjdF9kYXRhYmFzZShjb25uLCB0cnVlKTsKIAl9CiAKQEAg LTE3NjMsOCArMTkwOSwxMCBAQCBjcmVhdGVfcHVibGljYXRpb24oUEdjb25uICpjb25uLCBzdHJ1 Y3QgTG9naWNhbFJlcEluZm8gKmRiaW5mbykKIAkJICogcGdfY3JlYXRlc3Vic2NyaWJlcl8gcHJl Zml4IGZvbGxvd2VkIGJ5IHRoZSBleGFjdCBkYXRhYmFzZSBvaWQgYW5kCiAJCSAqIGEgcmFuZG9t IG51bWJlci4KIAkJICovCi0JCXBnX2xvZ19lcnJvcigicHVibGljYXRpb24gXCIlc1wiIGFscmVh ZHkgZXhpc3RzIiwgZGJpbmZvLT5wdWJuYW1lKTsKLQkJcGdfbG9nX2Vycm9yX2hpbnQoIkNvbnNp ZGVyIHJlbmFtaW5nIHRoaXMgcHVibGljYXRpb24gYmVmb3JlIGNvbnRpbnVpbmcuIik7CisJCXBn X2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0VSUk9SLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJCSAicHVi bGljYXRpb24gXCIlc1wiIGFscmVhZHkgZXhpc3RzIiwgZGJpbmZvLT5wdWJuYW1lKTsKKwkJcGdf Y3JlYXRlc3ViX2xvZyhQR19MT0dfRVJST1IsIFBHX0xPR19ISU5ULAorCQkJCQkJICJDb25zaWRl ciByZW5hbWluZyB0aGlzIHB1YmxpY2F0aW9uIGJlZm9yZSBjb250aW51aW5nLiIpOwogCQlkaXNj b25uZWN0X2RhdGFiYXNlKGNvbm4sIHRydWUpOwogCX0KIApAQCAtMTc3MiwyNCArMTkyMCwyOCBA QCBjcmVhdGVfcHVibGljYXRpb24oUEdjb25uICpjb25uLCBzdHJ1Y3QgTG9naWNhbFJlcEluZm8g KmRiaW5mbykKIAlyZXNldFBRRXhwQnVmZmVyKHN0cik7CiAKIAlpZiAoZHJ5X3J1bikKLQkJcGdf bG9nX2luZm8oImRyeS1ydW46IHdvdWxkIGNyZWF0ZSBwdWJsaWNhdGlvbiBcIiVzXCIgaW4gZGF0 YWJhc2UgXCIlc1wiIiwKLQkJCQkJZGJpbmZvLT5wdWJuYW1lLCBkYmluZm8tPmRibmFtZSk7CisJ CXBnX2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0lORk8sIFBHX0xPR19QUklNQVJZLAorCQkJCQkJICJk cnktcnVuOiB3b3VsZCBjcmVhdGUgcHVibGljYXRpb24gXCIlc1wiIGluIGRhdGFiYXNlIFwiJXNc IiIsCisJCQkJCQkgZGJpbmZvLT5wdWJuYW1lLCBkYmluZm8tPmRibmFtZSk7CiAJZWxzZQotCQlw Z19sb2dfaW5mbygiY3JlYXRpbmcgcHVibGljYXRpb24gXCIlc1wiIGluIGRhdGFiYXNlIFwiJXNc IiIsCi0JCQkJCWRiaW5mby0+cHVibmFtZSwgZGJpbmZvLT5kYm5hbWUpOworCQlwZ19jcmVhdGVz dWJfbG9nKFBHX0xPR19JTkZPLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJCSAiY3JlYXRpbmcgcHVi bGljYXRpb24gXCIlc1wiIGluIGRhdGFiYXNlIFwiJXNcIiIsCisJCQkJCQkgZGJpbmZvLT5wdWJu YW1lLCBkYmluZm8tPmRibmFtZSk7CiAKIAlhcHBlbmRQUUV4cEJ1ZmZlcihzdHIsICJDUkVBVEUg UFVCTElDQVRJT04gJXMgRk9SIEFMTCBUQUJMRVMiLAogCQkJCQkgIGlwdWJuYW1lX2VzYyk7CiAK LQlwZ19sb2dfZGVidWcoImNvbW1hbmQgaXM6ICVzIiwgc3RyLT5kYXRhKTsKKwlwZ19jcmVhdGVz dWJfbG9nKFBHX0xPR19ERUJVRywgUEdfTE9HX1BSSU1BUlksCisJCQkJCSAiY29tbWFuZCBpczog JXMiLCBzdHItPmRhdGEpOwogCiAJaWYgKCFkcnlfcnVuKQogCXsKIAkJcmVzID0gUFFleGVjKGNv bm4sIHN0ci0+ZGF0YSk7CiAJCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX0NPTU1B TkRfT0spCiAJCXsKLQkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGNyZWF0ZSBwdWJsaWNhdGlv biBcIiVzXCIgaW4gZGF0YWJhc2UgXCIlc1wiOiAlcyIsCi0JCQkJCQkgZGJpbmZvLT5wdWJuYW1l LCBkYmluZm8tPmRibmFtZSwgUFFyZXN1bHRFcnJvck1lc3NhZ2UocmVzKSk7CisJCQlwZ19jcmVh dGVzdWJfbG9nKFBHX0xPR19FUlJPUiwgUEdfTE9HX1BSSU1BUlksCisJCQkJCQkJICJjb3VsZCBu b3QgY3JlYXRlIHB1YmxpY2F0aW9uIFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVzXCI6ICVzIiwKKwkJ CQkJCQkgZGJpbmZvLT5wdWJuYW1lLCBkYmluZm8tPmRibmFtZSwgUFFyZXN1bHRFcnJvck1lc3Nh Z2UocmVzKSk7CiAJCQlkaXNjb25uZWN0X2RhdGFiYXNlKGNvbm4sIHRydWUpOwogCQl9CiAJCVBR Y2xlYXIocmVzKTsKQEAgLTE4MTksMjUgKzE5NzEsMjkgQEAgZHJvcF9wdWJsaWNhdGlvbihQR2Nv bm4gKmNvbm4sIGNvbnN0IGNoYXIgKnB1Ym5hbWUsIGNvbnN0IGNoYXIgKmRibmFtZSwKIAlwdWJu YW1lX2VzYyA9IFBRZXNjYXBlSWRlbnRpZmllcihjb25uLCBwdWJuYW1lLCBzdHJsZW4ocHVibmFt ZSkpOwogCiAJaWYgKGRyeV9ydW4pCi0JCXBnX2xvZ19pbmZvKCJkcnktcnVuOiB3b3VsZCBkcm9w IHB1YmxpY2F0aW9uIFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVzXCIiLAotCQkJCQlwdWJuYW1lLCBk Ym5hbWUpOworCQlwZ19jcmVhdGVzdWJfbG9nKFBHX0xPR19JTkZPLCBQR19MT0dfUFJJTUFSWSwK KwkJCQkJCSAiZHJ5LXJ1bjogd291bGQgZHJvcCBwdWJsaWNhdGlvbiBcIiVzXCIgaW4gZGF0YWJh c2UgXCIlc1wiIiwKKwkJCQkJCSBwdWJuYW1lLCBkYm5hbWUpOwogCWVsc2UKLQkJcGdfbG9nX2lu Zm8oImRyb3BwaW5nIHB1YmxpY2F0aW9uIFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVzXCIiLAotCQkJ CQlwdWJuYW1lLCBkYm5hbWUpOworCQlwZ19jcmVhdGVzdWJfbG9nKFBHX0xPR19JTkZPLCBQR19M T0dfUFJJTUFSWSwKKwkJCQkJCSAiZHJvcHBpbmcgcHVibGljYXRpb24gXCIlc1wiIGluIGRhdGFi YXNlIFwiJXNcIiIsCisJCQkJCQkgcHVibmFtZSwgZGJuYW1lKTsKIAogCWFwcGVuZFBRRXhwQnVm ZmVyKHN0ciwgIkRST1AgUFVCTElDQVRJT04gJXMiLCBwdWJuYW1lX2VzYyk7CiAKIAlQUWZyZWVt ZW0ocHVibmFtZV9lc2MpOwogCi0JcGdfbG9nX2RlYnVnKCJjb21tYW5kIGlzOiAlcyIsIHN0ci0+ ZGF0YSk7CisJcGdfY3JlYXRlc3ViX2xvZyhQR19MT0dfREVCVUcsIFBHX0xPR19QUklNQVJZLAor CQkJCQkgImNvbW1hbmQgaXM6ICVzIiwgc3RyLT5kYXRhKTsKIAogCWlmICghZHJ5X3J1bikKIAl7 CiAJCXJlcyA9IFBRZXhlYyhjb25uLCBzdHItPmRhdGEpOwogCQlpZiAoUFFyZXN1bHRTdGF0dXMo cmVzKSAhPSBQR1JFU19DT01NQU5EX09LKQogCQl7Ci0JCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5v dCBkcm9wIHB1YmxpY2F0aW9uIFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVzXCI6ICVzIiwKLQkJCQkJ CSBwdWJuYW1lLCBkYm5hbWUsIFBRcmVzdWx0RXJyb3JNZXNzYWdlKHJlcykpOworCQkJcGdfY3Jl YXRlc3ViX2xvZyhQR19MT0dfRVJST1IsIFBHX0xPR19QUklNQVJZLAorCQkJCQkJCSAiY291bGQg bm90IGRyb3AgcHVibGljYXRpb24gXCIlc1wiIGluIGRhdGFiYXNlIFwiJXNcIjogJXMiLAorCQkJ CQkJCSBwdWJuYW1lLCBkYm5hbWUsIFBRcmVzdWx0RXJyb3JNZXNzYWdlKHJlcykpOwogCQkJKm1h ZGVfcHVibGljYXRpb24gPSBmYWxzZTsJLyogZG9uJ3QgdHJ5IGFnYWluLiAqLwogCiAJCQkvKgpA QCAtMTg3MiwxNSArMjAyOCwxNyBAQCBjaGVja19hbmRfZHJvcF9wdWJsaWNhdGlvbnMoUEdjb25u ICpjb25uLCBzdHJ1Y3QgTG9naWNhbFJlcEluZm8gKmRiaW5mbykKIAogCWlmIChkcm9wX2FsbF9w dWJzKQogCXsKLQkJcGdfbG9nX2luZm8oImRyb3BwaW5nIGFsbCBleGlzdGluZyBwdWJsaWNhdGlv bnMgaW4gZGF0YWJhc2UgXCIlc1wiIiwKLQkJCQkJZGJpbmZvLT5kYm5hbWUpOworCQlwZ19jcmVh dGVzdWJfbG9nKFBHX0xPR19JTkZPLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJCSAiZHJvcHBpbmcg YWxsIGV4aXN0aW5nIHB1YmxpY2F0aW9ucyBpbiBkYXRhYmFzZSBcIiVzXCIiLAorCQkJCQkJIGRi aW5mby0+ZGJuYW1lKTsKIAogCQkvKiBGZXRjaCBhbGwgcHVibGljYXRpb24gbmFtZXMgKi8KIAkJ cmVzID0gUFFleGVjKGNvbm4sICJTRUxFQ1QgcHVibmFtZSBGUk9NIHBnX2NhdGFsb2cucGdfcHVi bGljYXRpb247Iik7CiAJCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX1RVUExFU19P SykKIAkJewotCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgb2J0YWluIHB1YmxpY2F0aW9uIGlu Zm9ybWF0aW9uOiAlcyIsCi0JCQkJCQkgUFFyZXN1bHRFcnJvck1lc3NhZ2UocmVzKSk7CisJCQlw Z19jcmVhdGVzdWJfbG9nKFBHX0xPR19FUlJPUiwgUEdfTE9HX1BSSU1BUlksCisJCQkJCQkJICJj b3VsZCBub3Qgb2J0YWluIHB1YmxpY2F0aW9uIGluZm9ybWF0aW9uOiAlcyIsCisJCQkJCQkJIFBR cmVzdWx0RXJyb3JNZXNzYWdlKHJlcykpOwogCQkJUFFjbGVhcihyZXMpOwogCQkJZGlzY29ubmVj dF9kYXRhYmFzZShjb25uLCB0cnVlKTsKIAkJfQpAQCAtMTkwMywxMSArMjA2MSwxMyBAQCBjaGVj a19hbmRfZHJvcF9wdWJsaWNhdGlvbnMoUEdjb25uICpjb25uLCBzdHJ1Y3QgTG9naWNhbFJlcElu Zm8gKmRiaW5mbykKIAkJZWxzZQogCQl7CiAJCQlpZiAoZHJ5X3J1bikKLQkJCQlwZ19sb2dfaW5m bygiZHJ5LXJ1bjogd291bGQgcHJlc2VydmUgZXhpc3RpbmcgcHVibGljYXRpb24gXCIlc1wiIGlu IGRhdGFiYXNlIFwiJXNcIiIsCi0JCQkJCQkJZGJpbmZvLT5wdWJuYW1lLCBkYmluZm8tPmRibmFt ZSk7CisJCQkJcGdfY3JlYXRlc3ViX2xvZyhQR19MT0dfSU5GTywgUEdfTE9HX1BSSU1BUlksCisJ CQkJCQkJCSAiZHJ5LXJ1bjogd291bGQgcHJlc2VydmUgZXhpc3RpbmcgcHVibGljYXRpb24gXCIl c1wiIGluIGRhdGFiYXNlIFwiJXNcIiIsCisJCQkJCQkJCSBkYmluZm8tPnB1Ym5hbWUsIGRiaW5m by0+ZGJuYW1lKTsKIAkJCWVsc2UKLQkJCQlwZ19sb2dfaW5mbygicHJlc2VydmUgZXhpc3Rpbmcg cHVibGljYXRpb24gXCIlc1wiIGluIGRhdGFiYXNlIFwiJXNcIiIsCi0JCQkJCQkJZGJpbmZvLT5w dWJuYW1lLCBkYmluZm8tPmRibmFtZSk7CisJCQkJcGdfY3JlYXRlc3ViX2xvZyhQR19MT0dfSU5G TywgUEdfTE9HX1BSSU1BUlksCisJCQkJCQkJCSAicHJlc2VydmUgZXhpc3RpbmcgcHVibGljYXRp b24gXCIlc1wiIGluIGRhdGFiYXNlIFwiJXNcIiIsCisJCQkJCQkJCSBkYmluZm8tPnB1Ym5hbWUs IGRiaW5mby0+ZGJuYW1lKTsKIAkJfQogCX0KIH0KQEAgLTE5NDEsMTEgKzIxMDEsMTMgQEAgY3Jl YXRlX3N1YnNjcmlwdGlvbihQR2Nvbm4gKmNvbm4sIGNvbnN0IHN0cnVjdCBMb2dpY2FsUmVwSW5m byAqZGJpbmZvKQogCXJlcGxzbG90bmFtZV9lc2MgPSBQUWVzY2FwZUxpdGVyYWwoY29ubiwgZGJp bmZvLT5yZXBsc2xvdG5hbWUsIHN0cmxlbihkYmluZm8tPnJlcGxzbG90bmFtZSkpOwogCiAJaWYg KGRyeV9ydW4pCi0JCXBnX2xvZ19pbmZvKCJkcnktcnVuOiB3b3VsZCBjcmVhdGUgc3Vic2NyaXB0 aW9uIFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVzXCIiLAotCQkJCQlkYmluZm8tPnN1Ym5hbWUsIGRi aW5mby0+ZGJuYW1lKTsKKwkJcGdfY3JlYXRlc3ViX2xvZyhQR19MT0dfSU5GTywgUEdfTE9HX1BS SU1BUlksCisJCQkJCQkgImRyeS1ydW46IHdvdWxkIGNyZWF0ZSBzdWJzY3JpcHRpb24gXCIlc1wi IGluIGRhdGFiYXNlIFwiJXNcIiIsCisJCQkJCQkgZGJpbmZvLT5zdWJuYW1lLCBkYmluZm8tPmRi bmFtZSk7CiAJZWxzZQotCQlwZ19sb2dfaW5mbygiY3JlYXRpbmcgc3Vic2NyaXB0aW9uIFwiJXNc IiBpbiBkYXRhYmFzZSBcIiVzXCIiLAotCQkJCQlkYmluZm8tPnN1Ym5hbWUsIGRiaW5mby0+ZGJu YW1lKTsKKwkJcGdfY3JlYXRlc3ViX2xvZyhQR19MT0dfSU5GTywgUEdfTE9HX1BSSU1BUlksCisJ CQkJCQkgImNyZWF0aW5nIHN1YnNjcmlwdGlvbiBcIiVzXCIgaW4gZGF0YWJhc2UgXCIlc1wiIiwK KwkJCQkJCSBkYmluZm8tPnN1Ym5hbWUsIGRiaW5mby0+ZGJuYW1lKTsKIAogCWFwcGVuZFBRRXhw QnVmZmVyKHN0ciwKIAkJCQkJICAiQ1JFQVRFIFNVQlNDUklQVElPTiAlcyBDT05ORUNUSU9OICVz IFBVQkxJQ0FUSU9OICVzICIKQEAgLTE5NTksMTUgKzIxMjEsMTcgQEAgY3JlYXRlX3N1YnNjcmlw dGlvbihQR2Nvbm4gKmNvbm4sIGNvbnN0IHN0cnVjdCBMb2dpY2FsUmVwSW5mbyAqZGJpbmZvKQog CVBRZnJlZW1lbShwdWJjb25uaW5mb19lc2MpOwogCVBRZnJlZW1lbShyZXBsc2xvdG5hbWVfZXNj KTsKIAotCXBnX2xvZ19kZWJ1ZygiY29tbWFuZCBpczogJXMiLCBzdHItPmRhdGEpOworCXBnX2Ny ZWF0ZXN1Yl9sb2coUEdfTE9HX0RFQlVHLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJICJjb21tYW5k IGlzOiAlcyIsIHN0ci0+ZGF0YSk7CiAKIAlpZiAoIWRyeV9ydW4pCiAJewogCQlyZXMgPSBQUWV4 ZWMoY29ubiwgc3RyLT5kYXRhKTsKIAkJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNf Q09NTUFORF9PSykKIAkJewotCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgY3JlYXRlIHN1YnNj cmlwdGlvbiBcIiVzXCIgaW4gZGF0YWJhc2UgXCIlc1wiOiAlcyIsCi0JCQkJCQkgZGJpbmZvLT5z dWJuYW1lLCBkYmluZm8tPmRibmFtZSwgUFFyZXN1bHRFcnJvck1lc3NhZ2UocmVzKSk7CisJCQlw Z19jcmVhdGVzdWJfbG9nKFBHX0xPR19FUlJPUiwgUEdfTE9HX1BSSU1BUlksCisJCQkJCQkJICJj b3VsZCBub3QgY3JlYXRlIHN1YnNjcmlwdGlvbiBcIiVzXCIgaW4gZGF0YWJhc2UgXCIlc1wiOiAl cyIsCisJCQkJCQkJIGRiaW5mby0+c3VibmFtZSwgZGJpbmZvLT5kYm5hbWUsIFBRcmVzdWx0RXJy b3JNZXNzYWdlKHJlcykpOwogCQkJZGlzY29ubmVjdF9kYXRhYmFzZShjb25uLCB0cnVlKTsKIAkJ fQogCQlQUWNsZWFyKHJlcyk7CkBAIC0yMDExLDE1ICsyMTc1LDE3IEBAIHNldF9yZXBsaWNhdGlv bl9wcm9ncmVzcyhQR2Nvbm4gKmNvbm4sIGNvbnN0IHN0cnVjdCBMb2dpY2FsUmVwSW5mbyAqZGJp bmZvLCBjb25zCiAJcmVzID0gUFFleGVjKGNvbm4sIHN0ci0+ZGF0YSk7CiAJaWYgKFBRcmVzdWx0 U3RhdHVzKHJlcykgIT0gUEdSRVNfVFVQTEVTX09LKQogCXsKLQkJcGdfbG9nX2Vycm9yKCJjb3Vs ZCBub3Qgb2J0YWluIHN1YnNjcmlwdGlvbiBPSUQ6ICVzIiwKLQkJCQkJIFBRcmVzdWx0RXJyb3JN ZXNzYWdlKHJlcykpOworCQlwZ19jcmVhdGVzdWJfbG9nKFBHX0xPR19FUlJPUiwgUEdfTE9HX1BS SU1BUlksCisJCQkJCQkgImNvdWxkIG5vdCBvYnRhaW4gc3Vic2NyaXB0aW9uIE9JRDogJXMiLAor CQkJCQkJIFBRcmVzdWx0RXJyb3JNZXNzYWdlKHJlcykpOwogCQlkaXNjb25uZWN0X2RhdGFiYXNl KGNvbm4sIHRydWUpOwogCX0KIAogCWlmIChQUW50dXBsZXMocmVzKSAhPSAxICYmICFkcnlfcnVu KQogCXsKLQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgb2J0YWluIHN1YnNjcmlwdGlvbiBPSUQ6 IGdvdCAlZCByb3dzLCBleHBlY3RlZCAlZCByb3ciLAotCQkJCQkgUFFudHVwbGVzKHJlcyksIDEp OworCQlwZ19jcmVhdGVzdWJfbG9nKFBHX0xPR19FUlJPUiwgUEdfTE9HX1BSSU1BUlksCisJCQkJ CQkgImNvdWxkIG5vdCBvYnRhaW4gc3Vic2NyaXB0aW9uIE9JRDogZ290ICVkIHJvd3MsIGV4cGVj dGVkICVkIHJvdyIsCisJCQkJCQkgUFFudHVwbGVzKHJlcyksIDEpOwogCQlkaXNjb25uZWN0X2Rh dGFiYXNlKGNvbm4sIHRydWUpOwogCX0KIApAQCAtMjA0MywyNiArMjIwOSwzMCBAQCBzZXRfcmVw bGljYXRpb25fcHJvZ3Jlc3MoUEdjb25uICpjb25uLCBjb25zdCBzdHJ1Y3QgTG9naWNhbFJlcElu Zm8gKmRiaW5mbywgY29ucwogCW9yaWdpbm5hbWUgPSBwc3ByaW50ZigicGdfJXUiLCBzdWJvaWQp OwogCiAJaWYgKGRyeV9ydW4pCi0JCXBnX2xvZ19pbmZvKCJkcnktcnVuOiB3b3VsZCBzZXQgdGhl IHJlcGxpY2F0aW9uIHByb2dyZXNzIChub2RlIG5hbWUgXCIlc1wiLCBMU04gJXMpIGluIGRhdGFi YXNlIFwiJXNcIiIsCi0JCQkJCW9yaWdpbm5hbWUsIGxzbnN0ciwgZGJpbmZvLT5kYm5hbWUpOwor CQlwZ19jcmVhdGVzdWJfbG9nKFBHX0xPR19JTkZPLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJCSAi ZHJ5LXJ1bjogd291bGQgc2V0IHRoZSByZXBsaWNhdGlvbiBwcm9ncmVzcyAobm9kZSBuYW1lIFwi JXNcIiwgTFNOICVzKSBpbiBkYXRhYmFzZSBcIiVzXCIiLAorCQkJCQkJIG9yaWdpbm5hbWUsIGxz bnN0ciwgZGJpbmZvLT5kYm5hbWUpOwogCWVsc2UKLQkJcGdfbG9nX2luZm8oInNldHRpbmcgdGhl IHJlcGxpY2F0aW9uIHByb2dyZXNzIChub2RlIG5hbWUgXCIlc1wiLCBMU04gJXMpIGluIGRhdGFi YXNlIFwiJXNcIiIsCi0JCQkJCW9yaWdpbm5hbWUsIGxzbnN0ciwgZGJpbmZvLT5kYm5hbWUpOwor CQlwZ19jcmVhdGVzdWJfbG9nKFBHX0xPR19JTkZPLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJCSAi c2V0dGluZyB0aGUgcmVwbGljYXRpb24gcHJvZ3Jlc3MgKG5vZGUgbmFtZSBcIiVzXCIsIExTTiAl cykgaW4gZGF0YWJhc2UgXCIlc1wiIiwKKwkJCQkJCSBvcmlnaW5uYW1lLCBsc25zdHIsIGRiaW5m by0+ZGJuYW1lKTsKIAogCXJlc2V0UFFFeHBCdWZmZXIoc3RyKTsKIAlhcHBlbmRQUUV4cEJ1ZmZl cihzdHIsCiAJCQkJCSAgIlNFTEVDVCBwZ19jYXRhbG9nLnBnX3JlcGxpY2F0aW9uX29yaWdpbl9h ZHZhbmNlKCclcycsICclcycpIiwKIAkJCQkJICBvcmlnaW5uYW1lLCBsc25zdHIpOwogCi0JcGdf bG9nX2RlYnVnKCJjb21tYW5kIGlzOiAlcyIsIHN0ci0+ZGF0YSk7CisJcGdfY3JlYXRlc3ViX2xv ZyhQR19MT0dfREVCVUcsIFBHX0xPR19QUklNQVJZLAorCQkJCQkgImNvbW1hbmQgaXM6ICVzIiwg c3RyLT5kYXRhKTsKIAogCWlmICghZHJ5X3J1bikKIAl7CiAJCXJlcyA9IFBRZXhlYyhjb25uLCBz dHItPmRhdGEpOwogCQlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19UVVBMRVNfT0sp CiAJCXsKLQkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHNldCByZXBsaWNhdGlvbiBwcm9ncmVz cyBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIjogJXMiLAotCQkJCQkJIGRiaW5mby0+c3VibmFtZSwg UFFyZXN1bHRFcnJvck1lc3NhZ2UocmVzKSk7CisJCQlwZ19jcmVhdGVzdWJfbG9nKFBHX0xPR19F UlJPUiwgUEdfTE9HX1BSSU1BUlksCisJCQkJCQkJICJjb3VsZCBub3Qgc2V0IHJlcGxpY2F0aW9u IHByb2dyZXNzIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiOiAlcyIsCisJCQkJCQkJIGRiaW5mby0+ c3VibmFtZSwgUFFyZXN1bHRFcnJvck1lc3NhZ2UocmVzKSk7CiAJCQlkaXNjb25uZWN0X2RhdGFi YXNlKGNvbm4sIHRydWUpOwogCQl9CiAJCVBRY2xlYXIocmVzKTsKQEAgLTIwOTMsMjMgKzIyNjMs MjcgQEAgZW5hYmxlX3N1YnNjcmlwdGlvbihQR2Nvbm4gKmNvbm4sIGNvbnN0IHN0cnVjdCBMb2dp Y2FsUmVwSW5mbyAqZGJpbmZvKQogCXN1Ym5hbWUgPSBQUWVzY2FwZUlkZW50aWZpZXIoY29ubiwg ZGJpbmZvLT5zdWJuYW1lLCBzdHJsZW4oZGJpbmZvLT5zdWJuYW1lKSk7CiAKIAlpZiAoZHJ5X3J1 bikKLQkJcGdfbG9nX2luZm8oImRyeS1ydW46IHdvdWxkIGVuYWJsZSBzdWJzY3JpcHRpb24gXCIl c1wiIGluIGRhdGFiYXNlIFwiJXNcIiIsCi0JCQkJCWRiaW5mby0+c3VibmFtZSwgZGJpbmZvLT5k Ym5hbWUpOworCQlwZ19jcmVhdGVzdWJfbG9nKFBHX0xPR19JTkZPLCBQR19MT0dfUFJJTUFSWSwK KwkJCQkJCSAiZHJ5LXJ1bjogd291bGQgZW5hYmxlIHN1YnNjcmlwdGlvbiBcIiVzXCIgaW4gZGF0 YWJhc2UgXCIlc1wiIiwKKwkJCQkJCSBkYmluZm8tPnN1Ym5hbWUsIGRiaW5mby0+ZGJuYW1lKTsK IAllbHNlCi0JCXBnX2xvZ19pbmZvKCJlbmFibGluZyBzdWJzY3JpcHRpb24gXCIlc1wiIGluIGRh dGFiYXNlIFwiJXNcIiIsCi0JCQkJCWRiaW5mby0+c3VibmFtZSwgZGJpbmZvLT5kYm5hbWUpOwor CQlwZ19jcmVhdGVzdWJfbG9nKFBHX0xPR19JTkZPLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJCSAi ZW5hYmxpbmcgc3Vic2NyaXB0aW9uIFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVzXCIiLAorCQkJCQkJ IGRiaW5mby0+c3VibmFtZSwgZGJpbmZvLT5kYm5hbWUpOwogCiAJYXBwZW5kUFFFeHBCdWZmZXIo c3RyLCAiQUxURVIgU1VCU0NSSVBUSU9OICVzIEVOQUJMRSIsIHN1Ym5hbWUpOwogCi0JcGdfbG9n X2RlYnVnKCJjb21tYW5kIGlzOiAlcyIsIHN0ci0+ZGF0YSk7CisJcGdfY3JlYXRlc3ViX2xvZyhQ R19MT0dfREVCVUcsIFBHX0xPR19QUklNQVJZLAorCQkJCQkgImNvbW1hbmQgaXM6ICVzIiwgc3Ry LT5kYXRhKTsKIAogCWlmICghZHJ5X3J1bikKIAl7CiAJCXJlcyA9IFBRZXhlYyhjb25uLCBzdHIt PmRhdGEpOwogCQlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19DT01NQU5EX09LKQog CQl7Ci0JCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBlbmFibGUgc3Vic2NyaXB0aW9uIFwiJXNc IjogJXMiLAotCQkJCQkJIGRiaW5mby0+c3VibmFtZSwgUFFyZXN1bHRFcnJvck1lc3NhZ2UocmVz KSk7CisJCQlwZ19jcmVhdGVzdWJfbG9nKFBHX0xPR19FUlJPUiwgUEdfTE9HX1BSSU1BUlksCisJ CQkJCQkJICJjb3VsZCBub3QgZW5hYmxlIHN1YnNjcmlwdGlvbiBcIiVzXCI6ICVzIiwKKwkJCQkJ CQkgZGJpbmZvLT5zdWJuYW1lLCBQUXJlc3VsdEVycm9yTWVzc2FnZShyZXMpKTsKIAkJCWRpc2Nv bm5lY3RfZGF0YWJhc2UoY29ubiwgdHJ1ZSk7CiAJCX0KIApAQCAtMjE1NCw3ICsyMzI4LDkgQEAg Z2V0X3B1Ymxpc2hlcl9kYXRhYmFzZXMoc3RydWN0IENyZWF0ZVN1YnNjcmliZXJPcHRpb25zICpv cHQsCiAJcmVzID0gUFFleGVjKGNvbm4sICJTRUxFQ1QgZGF0bmFtZSBGUk9NIHBnX2RhdGFiYXNl IFdIRVJFIGRhdGlzdGVtcGxhdGUgPSBmYWxzZSBBTkQgZGF0YWxsb3djb25uIEFORCBkYXRjb25u bGltaXQgPD4gLTIgT1JERVIgQlkgMSIpOwogCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBH UkVTX1RVUExFU19PSykKIAl7Ci0JCXBnX2xvZ19lcnJvcigiY291bGQgbm90IG9idGFpbiBhIGxp c3Qgb2YgZGF0YWJhc2VzOiAlcyIsIFBRcmVzdWx0RXJyb3JNZXNzYWdlKHJlcykpOworCQlwZ19j cmVhdGVzdWJfbG9nKFBHX0xPR19FUlJPUiwgUEdfTE9HX1BSSU1BUlksCisJCQkJCQkgImNvdWxk IG5vdCBvYnRhaW4gYSBsaXN0IG9mIGRhdGFiYXNlczogJXMiLAorCQkJCQkJIFBRcmVzdWx0RXJy b3JNZXNzYWdlKHJlcykpOwogCQlQUWNsZWFyKHJlcyk7CiAJCWRpc2Nvbm5lY3RfZGF0YWJhc2Uo Y29ubiwgdHJ1ZSk7CiAJfQpAQCAtMjI1OCw5ICsyNDM0LDExIEBAIG1haW4oaW50IGFyZ2MsIGNo YXIgKiphcmd2KQogI2lmbmRlZiBXSU4zMgogCWlmIChnZXRldWlkKCkgPT0gMCkKIAl7Ci0JCXBn X2xvZ19lcnJvcigiY2Fubm90IGJlIGV4ZWN1dGVkIGJ5IFwicm9vdFwiIik7Ci0JCXBnX2xvZ19l cnJvcl9oaW50KCJZb3UgbXVzdCBydW4gJXMgYXMgdGhlIFBvc3RncmVTUUwgc3VwZXJ1c2VyLiIs Ci0JCQkJCQkgIHByb2duYW1lKTsKKwkJcGdfY3JlYXRlc3ViX2xvZyhQR19MT0dfRVJST1IsIFBH X0xPR19QUklNQVJZLAorCQkJCQkJICJjYW5ub3QgYmUgZXhlY3V0ZWQgYnkgXCJyb290XCIiKTsK KwkJcGdfY3JlYXRlc3ViX2xvZyhQR19MT0dfRVJST1IsIFBHX0xPR19ISU5ULAorCQkJCQkJICJZ b3UgbXVzdCBydW4gJXMgYXMgdGhlIFBvc3RncmVTUUwgc3VwZXJ1c2VyLiIsCisJCQkJCQkgcHJv Z25hbWUpOwogCQlleGl0KDEpOwogCX0KICNlbmRpZgpAQCAtMjM1MSw3ICsyNTI5LDkgQEAgbWFp bihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCQkJYnJlYWs7CiAJCQlkZWZhdWx0OgogCQkJCS8q IGdldG9wdF9sb25nIGFscmVhZHkgZW1pdHRlZCBhIGNvbXBsYWludCAqLwotCQkJCXBnX2xvZ19l cnJvcl9oaW50KCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iLCBwcm9n bmFtZSk7CisJCQkJcGdfY3JlYXRlc3ViX2xvZyhQR19MT0dfRVJST1IsIFBHX0xPR19ISU5ULAor CQkJCQkJCQkgIlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLiIsCisJCQkJ CQkJCSBwcm9nbmFtZSk7CiAJCQkJZXhpdCgxKTsKIAkJfQogCX0KQEAgLTIzNzIsOSArMjU1Miwx MiBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAogCQlpZiAoYmFkX3N3aXRjaCkKIAkJ ewotCQkJcGdfbG9nX2Vycm9yKCJvcHRpb25zICVzIGFuZCAlcyBjYW5ub3QgYmUgdXNlZCB0b2dl dGhlciIsCi0JCQkJCQkgYmFkX3N3aXRjaCwgIi1hLy0tYWxsIik7Ci0JCQlwZ19sb2dfZXJyb3Jf aGludCgiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uIiwgcHJvZ25hbWUp OworCQkJcGdfY3JlYXRlc3ViX2xvZyhQR19MT0dfRVJST1IsIFBHX0xPR19QUklNQVJZLAorCQkJ CQkJCSAib3B0aW9ucyAlcyBhbmQgJXMgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIiLAorCQkJCQkJ CSBiYWRfc3dpdGNoLCAiLWEvLS1hbGwiKTsKKwkJCXBnX2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0VS Uk9SLCBQR19MT0dfSElOVCwKKwkJCQkJCQkgIlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGlu Zm9ybWF0aW9uLiIsCisJCQkJCQkJIHByb2duYW1lKTsKIAkJCWV4aXQoMSk7CiAJCX0KIAl9CkBA IC0yMzgyLDE3ICsyNTY1LDIxIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCS8qIEFu eSBub24tb3B0aW9uIGFyZ3VtZW50cz8gKi8KIAlpZiAob3B0aW5kIDwgYXJnYykKIAl7Ci0JCXBn X2xvZ19lcnJvcigidG9vIG1hbnkgY29tbWFuZC1saW5lIGFyZ3VtZW50cyAoZmlyc3QgaXMgXCIl c1wiKSIsCi0JCQkJCSBhcmd2W29wdGluZF0pOwotCQlwZ19sb2dfZXJyb3JfaGludCgiVHJ5IFwi JXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uIiwgcHJvZ25hbWUpOworCQlwZ19jcmVh dGVzdWJfbG9nKFBHX0xPR19FUlJPUiwgUEdfTE9HX1BSSU1BUlksCisJCQkJCQkgInRvbyBtYW55 IGNvbW1hbmQtbGluZSBhcmd1bWVudHMgKGZpcnN0IGlzIFwiJXNcIikiLAorCQkJCQkJIGFyZ3Zb b3B0aW5kXSk7CisJCXBnX2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0VSUk9SLCBQR19MT0dfSElOVCwK KwkJCQkJCSAiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uIiwgcHJvZ25h bWUpOwogCQlleGl0KDEpOwogCX0KIAogCS8qIFJlcXVpcmVkIGFyZ3VtZW50cyAqLwogCWlmIChz dWJzY3JpYmVyX2RpciA9PSBOVUxMKQogCXsKLQkJcGdfbG9nX2Vycm9yKCJubyBzdWJzY3JpYmVy IGRhdGEgZGlyZWN0b3J5IHNwZWNpZmllZCIpOwotCQlwZ19sb2dfZXJyb3JfaGludCgiVHJ5IFwi JXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uIiwgcHJvZ25hbWUpOworCQlwZ19jcmVh dGVzdWJfbG9nKFBHX0xPR19FUlJPUiwgUEdfTE9HX1BSSU1BUlksCisJCQkJCQkgIm5vIHN1YnNj cmliZXIgZGF0YSBkaXJlY3Rvcnkgc3BlY2lmaWVkIik7CisJCXBnX2NyZWF0ZXN1Yl9sb2coUEdf TE9HX0VSUk9SLCBQR19MT0dfSElOVCwKKwkJCQkJCSAiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1v cmUgaW5mb3JtYXRpb24uIiwgcHJvZ25hbWUpOwogCQlleGl0KDEpOwogCX0KIApAQCAtMjQxOSwy MiArMjYwNiwyNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJICogaWRlbnRpY2Fs IGVudHJpZXMgZm9yIHBoeXNpY2FsIGFuZCBsb2dpY2FsIHJlcGxpY2F0aW9uLiBJZiB0aGVyZSBp cwogCQkgKiBub3QsIHdlIHdvdWxkIGZhaWwgYW55d2F5LgogCQkgKi8KLQkJcGdfbG9nX2Vycm9y KCJubyBwdWJsaXNoZXIgY29ubmVjdGlvbiBzdHJpbmcgc3BlY2lmaWVkIik7Ci0JCXBnX2xvZ19l cnJvcl9oaW50KCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iLCBwcm9n bmFtZSk7CisJCXBnX2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0VSUk9SLCBQR19MT0dfUFJJTUFSWSwK KwkJCQkJCSAibm8gcHVibGlzaGVyIGNvbm5lY3Rpb24gc3RyaW5nIHNwZWNpZmllZCIpOworCQlw Z19jcmVhdGVzdWJfbG9nKFBHX0xPR19FUlJPUiwgUEdfTE9HX0hJTlQsCisJCQkJCQkgIlRyeSBc IiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLiIsIHByb2duYW1lKTsKIAkJZXhpdCgx KTsKIAl9CiAKIAlpZiAoZHJ5X3J1bikKLQkJcGdfbG9nX2luZm8oIkV4ZWN1dGluZyBpbiBkcnkt cnVuIG1vZGUuXG4iCi0JCQkJCSJUaGUgdGFyZ2V0IGRpcmVjdG9yeSB3aWxsIG5vdCBiZSBtb2Rp ZmllZC4iKTsKKwkJcGdfY3JlYXRlc3ViX2xvZyhQR19MT0dfSU5GTywgUEdfTE9HX1BSSU1BUlks CisJCQkJCQkgIkV4ZWN1dGluZyBpbiBkcnktcnVuIG1vZGUuXG4iCisJCQkJCQkgIlRoZSB0YXJn ZXQgZGlyZWN0b3J5IHdpbGwgbm90IGJlIG1vZGlmaWVkLiIpOwogCi0JcGdfbG9nX2luZm8oInZh bGlkYXRpbmcgcHVibGlzaGVyIGNvbm5lY3Rpb24gc3RyaW5nIik7CisJcGdfY3JlYXRlc3ViX2xv ZyhQR19MT0dfSU5GTywgUEdfTE9HX1BSSU1BUlksCisJCQkJCSAidmFsaWRhdGluZyBwdWJsaXNo ZXIgY29ubmVjdGlvbiBzdHJpbmciKTsKIAlwdWJfYmFzZV9jb25uaW5mbyA9IGdldF9iYXNlX2Nv bm5pbmZvKG9wdC5wdWJfY29ubmluZm9fc3RyLAogCQkJCQkJCQkJCSAgJmRibmFtZV9jb25uaW5m byk7CiAJaWYgKHB1Yl9iYXNlX2Nvbm5pbmZvID09IE5VTEwpCiAJCWV4aXQoMSk7CiAKLQlwZ19s b2dfaW5mbygidmFsaWRhdGluZyBzdWJzY3JpYmVyIGNvbm5lY3Rpb24gc3RyaW5nIik7CisJcGdf Y3JlYXRlc3ViX2xvZyhQR19MT0dfSU5GTywgUEdfTE9HX1BSSU1BUlksCisJCQkJCSAidmFsaWRh dGluZyBzdWJzY3JpYmVyIGNvbm5lY3Rpb24gc3RyaW5nIik7CiAJc3ViX2Jhc2VfY29ubmluZm8g PSBnZXRfc3ViX2Nvbm5pbmZvKCZvcHQpOwogCiAJLyoKQEAgLTI0NTEsNyArMjY0Myw4IEBAIG1h aW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAJaWYgKG9wdC5kYXRhYmFzZV9uYW1lcy5oZWFk ID09IE5VTEwpCiAJewotCQlwZ19sb2dfaW5mbygibm8gZGF0YWJhc2Ugd2FzIHNwZWNpZmllZCIp OworCQlwZ19jcmVhdGVzdWJfbG9nKFBHX0xPR19JTkZPLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJ CSAibm8gZGF0YWJhc2Ugd2FzIHNwZWNpZmllZCIpOwogCiAJCS8qCiAJCSAqIFRyeSB0byBvYnRh aW4gdGhlIGRibmFtZSBmcm9tIHRoZSBwdWJsaXNoZXIgY29ubmluZm8uIElmIGRibmFtZQpAQCAt MjQ2MiwxNCArMjY1NSwxNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJCXNpbXBs ZV9zdHJpbmdfbGlzdF9hcHBlbmQoJm9wdC5kYXRhYmFzZV9uYW1lcywgZGJuYW1lX2Nvbm5pbmZv KTsKIAkJCW51bV9kYnMrKzsKIAotCQkJcGdfbG9nX2luZm8oImRhdGFiYXNlIG5hbWUgXCIlc1wi IHdhcyBleHRyYWN0ZWQgZnJvbSB0aGUgcHVibGlzaGVyIGNvbm5lY3Rpb24gc3RyaW5nIiwKLQkJ CQkJCWRibmFtZV9jb25uaW5mbyk7CisJCQlwZ19jcmVhdGVzdWJfbG9nKFBHX0xPR19JTkZPLCBQ R19MT0dfUFJJTUFSWSwKKwkJCQkJCQkgImRhdGFiYXNlIG5hbWUgXCIlc1wiIHdhcyBleHRyYWN0 ZWQgZnJvbSB0aGUgcHVibGlzaGVyIGNvbm5lY3Rpb24gc3RyaW5nIiwKKwkJCQkJCQkgZGJuYW1l X2Nvbm5pbmZvKTsKIAkJfQogCQllbHNlCiAJCXsKLQkJCXBnX2xvZ19lcnJvcigibm8gZGF0YWJh c2UgbmFtZSBzcGVjaWZpZWQiKTsKLQkJCXBnX2xvZ19lcnJvcl9oaW50KCJUcnkgXCIlcyAtLWhl bHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iLAotCQkJCQkJCSAgcHJvZ25hbWUpOworCQkJcGdf Y3JlYXRlc3ViX2xvZyhQR19MT0dfRVJST1IsIFBHX0xPR19QUklNQVJZLAorCQkJCQkJCSAibm8g ZGF0YWJhc2UgbmFtZSBzcGVjaWZpZWQiKTsKKwkJCXBnX2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0VS Uk9SLCBQR19MT0dfSElOVCwKKwkJCQkJCQkgIlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGlu Zm9ybWF0aW9uLiIsCisJCQkJCQkJIHByb2duYW1lKTsKIAkJCWV4aXQoMSk7CiAJCX0KIAl9CkBA IC0yNDc3LDIzICsyNjczLDI5IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCS8qIE51 bWJlciBvZiBvYmplY3QgbmFtZXMgbXVzdCBtYXRjaCBudW1iZXIgb2YgZGF0YWJhc2VzICovCiAJ aWYgKG51bV9wdWJzID4gMCAmJiBudW1fcHVicyAhPSBudW1fZGJzKQogCXsKLQkJcGdfbG9nX2Vy cm9yKCJ3cm9uZyBudW1iZXIgb2YgcHVibGljYXRpb24gbmFtZXMgc3BlY2lmaWVkIik7Ci0JCXBn X2xvZ19lcnJvcl9kZXRhaWwoIlRoZSBudW1iZXIgb2Ygc3BlY2lmaWVkIHB1YmxpY2F0aW9uIG5h bWVzICglZCkgbXVzdCBtYXRjaCB0aGUgbnVtYmVyIG9mIHNwZWNpZmllZCBkYXRhYmFzZSBuYW1l cyAoJWQpLiIsCi0JCQkJCQkJbnVtX3B1YnMsIG51bV9kYnMpOworCQlwZ19jcmVhdGVzdWJfbG9n KFBHX0xPR19FUlJPUiwgUEdfTE9HX1BSSU1BUlksCisJCQkJCQkgIndyb25nIG51bWJlciBvZiBw dWJsaWNhdGlvbiBuYW1lcyBzcGVjaWZpZWQiKTsKKwkJcGdfY3JlYXRlc3ViX2xvZyhQR19MT0df RVJST1IsIFBHX0xPR19ERVRBSUwsCisJCQkJCQkgIlRoZSBudW1iZXIgb2Ygc3BlY2lmaWVkIHB1 YmxpY2F0aW9uIG5hbWVzICglZCkgbXVzdCBtYXRjaCB0aGUgbnVtYmVyIG9mIHNwZWNpZmllZCBk YXRhYmFzZSBuYW1lcyAoJWQpLiIsCisJCQkJCQkgbnVtX3B1YnMsIG51bV9kYnMpOwogCQlleGl0 KDEpOwogCX0KIAlpZiAobnVtX3N1YnMgPiAwICYmIG51bV9zdWJzICE9IG51bV9kYnMpCiAJewot CQlwZ19sb2dfZXJyb3IoIndyb25nIG51bWJlciBvZiBzdWJzY3JpcHRpb24gbmFtZXMgc3BlY2lm aWVkIik7Ci0JCXBnX2xvZ19lcnJvcl9kZXRhaWwoIlRoZSBudW1iZXIgb2Ygc3BlY2lmaWVkIHN1 YnNjcmlwdGlvbiBuYW1lcyAoJWQpIG11c3QgbWF0Y2ggdGhlIG51bWJlciBvZiBzcGVjaWZpZWQg ZGF0YWJhc2UgbmFtZXMgKCVkKS4iLAotCQkJCQkJCW51bV9zdWJzLCBudW1fZGJzKTsKKwkJcGdf Y3JlYXRlc3ViX2xvZyhQR19MT0dfRVJST1IsIFBHX0xPR19QUklNQVJZLAorCQkJCQkJICJ3cm9u ZyBudW1iZXIgb2Ygc3Vic2NyaXB0aW9uIG5hbWVzIHNwZWNpZmllZCIpOworCQlwZ19jcmVhdGVz dWJfbG9nKFBHX0xPR19FUlJPUiwgUEdfTE9HX0RFVEFJTCwKKwkJCQkJCSAiVGhlIG51bWJlciBv ZiBzcGVjaWZpZWQgc3Vic2NyaXB0aW9uIG5hbWVzICglZCkgbXVzdCBtYXRjaCB0aGUgbnVtYmVy IG9mIHNwZWNpZmllZCBkYXRhYmFzZSBuYW1lcyAoJWQpLiIsCisJCQkJCQkgbnVtX3N1YnMsIG51 bV9kYnMpOwogCQlleGl0KDEpOwogCX0KIAlpZiAobnVtX3JlcGxzbG90cyA+IDAgJiYgbnVtX3Jl cGxzbG90cyAhPSBudW1fZGJzKQogCXsKLQkJcGdfbG9nX2Vycm9yKCJ3cm9uZyBudW1iZXIgb2Yg cmVwbGljYXRpb24gc2xvdCBuYW1lcyBzcGVjaWZpZWQiKTsKLQkJcGdfbG9nX2Vycm9yX2RldGFp bCgiVGhlIG51bWJlciBvZiBzcGVjaWZpZWQgcmVwbGljYXRpb24gc2xvdCBuYW1lcyAoJWQpIG11 c3QgbWF0Y2ggdGhlIG51bWJlciBvZiBzcGVjaWZpZWQgZGF0YWJhc2UgbmFtZXMgKCVkKS4iLAot CQkJCQkJCW51bV9yZXBsc2xvdHMsIG51bV9kYnMpOworCQlwZ19jcmVhdGVzdWJfbG9nKFBHX0xP R19FUlJPUiwgUEdfTE9HX1BSSU1BUlksCisJCQkJCQkgIndyb25nIG51bWJlciBvZiByZXBsaWNh dGlvbiBzbG90IG5hbWVzIHNwZWNpZmllZCIpOworCQlwZ19jcmVhdGVzdWJfbG9nKFBHX0xPR19F UlJPUiwgUEdfTE9HX0RFVEFJTCwKKwkJCQkJCSAiVGhlIG51bWJlciBvZiBzcGVjaWZpZWQgcmVw bGljYXRpb24gc2xvdCBuYW1lcyAoJWQpIG11c3QgbWF0Y2ggdGhlIG51bWJlciBvZiBzcGVjaWZp ZWQgZGF0YWJhc2UgbmFtZXMgKCVkKS4iLAorCQkJCQkJIG51bV9yZXBsc2xvdHMsIG51bV9kYnMp OwogCQlleGl0KDEpOwogCX0KIApAQCAtMjUwNCw5ICsyNzA2LDExIEBAIG1haW4oaW50IGFyZ2Ms IGNoYXIgKiphcmd2KQogCQkJZGJpbmZvcy5vYmplY3R0eXBlc190b19jbGVhbiB8PSBPQkpFQ1RU WVBFX1BVQkxJQ0FUSU9OUzsKIAkJZWxzZQogCQl7Ci0JCQlwZ19sb2dfZXJyb3IoImludmFsaWQg b2JqZWN0IHR5cGUgXCIlc1wiIHNwZWNpZmllZCBmb3IgJXMiLAotCQkJCQkJIGNlbGwtPnZhbCwg Ii0tY2xlYW4iKTsKLQkJCXBnX2xvZ19lcnJvcl9oaW50KCJUaGUgdmFsaWQgdmFsdWUgaXM6IFwi JXNcIiIsICJwdWJsaWNhdGlvbnMiKTsKKwkJCXBnX2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0VSUk9S LCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJCQkgImludmFsaWQgb2JqZWN0IHR5cGUgXCIlc1wiIHNw ZWNpZmllZCBmb3IgJXMiLAorCQkJCQkJCSBjZWxsLT52YWwsICItLWNsZWFuIik7CisJCQlwZ19j cmVhdGVzdWJfbG9nKFBHX0xPR19FUlJPUiwgUEdfTE9HX0hJTlQsCisJCQkJCQkJICJUaGUgdmFs aWQgdmFsdWUgaXM6IFwiJXNcIiIsICJwdWJsaWNhdGlvbnMiKTsKIAkJCWV4aXQoMSk7CiAJCX0K IAl9CkBAIC0yNTUwLDggKzI3NTQsMTAgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJ ICovCiAJaWYgKHN0YXQocGlkZmlsZSwgJnN0YXRidWYpID09IDApCiAJewotCQlwZ19sb2dfZXJy b3IoInN0YW5kYnkgc2VydmVyIGlzIHJ1bm5pbmciKTsKLQkJcGdfbG9nX2Vycm9yX2hpbnQoIlN0 b3AgdGhlIHN0YW5kYnkgc2VydmVyIGFuZCB0cnkgYWdhaW4uIik7CisJCXBnX2NyZWF0ZXN1Yl9s b2coUEdfTE9HX0VSUk9SLCBQR19MT0dfUFJJTUFSWSwKKwkJCQkJCSAic3RhbmRieSBzZXJ2ZXIg aXMgcnVubmluZyIpOworCQlwZ19jcmVhdGVzdWJfbG9nKFBHX0xPR19FUlJPUiwgUEdfTE9HX0hJ TlQsCisJCQkJCQkgIlN0b3AgdGhlIHN0YW5kYnkgc2VydmVyIGFuZCB0cnkgYWdhaW4uIik7CiAJ CWV4aXQoMSk7CiAJfQogCkBAIC0yNTYwLDcgKzI3NjYsOCBAQCBtYWluKGludCBhcmdjLCBjaGFy ICoqYXJndikKIAkgKiBieSBjb21tYW5kLWxpbmUgb3B0aW9ucykuIFRoZSBnb2FsIGlzIHRvIGF2 b2lkIGNvbm5lY3Rpb25zIGR1cmluZyB0aGUKIAkgKiB0cmFuc2Zvcm1hdGlvbiBzdGVwcy4KIAkg Ki8KLQlwZ19sb2dfaW5mbygic3RhcnRpbmcgdGhlIHN0YW5kYnkgc2VydmVyIHdpdGggY29tbWFu ZC1saW5lIG9wdGlvbnMiKTsKKwlwZ19jcmVhdGVzdWJfbG9nKFBHX0xPR19JTkZPLCBQR19MT0df UFJJTUFSWSwKKwkJCQkJICJzdGFydGluZyB0aGUgc3RhbmRieSBzZXJ2ZXIgd2l0aCBjb21tYW5k LWxpbmUgb3B0aW9ucyIpOwogCXN0YXJ0X3N0YW5kYnlfc2VydmVyKCZvcHQsIHRydWUsIGZhbHNl KTsKIAogCS8qIENoZWNrIGlmIHRoZSBzdGFuZGJ5IHNlcnZlciBpcyByZWFkeSBmb3IgbG9naWNh bCByZXBsaWNhdGlvbiAqLwpAQCAtMjU3Niw3ICsyNzgzLDggQEAgbWFpbihpbnQgYXJnYywgY2hh ciAqKmFyZ3YpCiAJICogZ3VhcmFudGVlcyBpdCkgKmJlZm9yZSogY3JlYXRpbmcgdGhlIHJlcGxp Y2F0aW9uIHNsb3RzIGluCiAJICogc2V0dXBfcHVibGlzaGVyKCkuCiAJICovCi0JcGdfbG9nX2lu Zm8oInN0b3BwaW5nIHRoZSBzdWJzY3JpYmVyIik7CisJcGdfY3JlYXRlc3ViX2xvZyhQR19MT0df SU5GTywgUEdfTE9HX1BSSU1BUlksCisJCQkJCSAic3RvcHBpbmcgdGhlIHN1YnNjcmliZXIiKTsK IAlzdG9wX3N0YW5kYnlfc2VydmVyKHN1YnNjcmliZXJfZGlyKTsKIAogCS8qIENyZWF0ZSB0aGUg cmVxdWlyZWQgb2JqZWN0cyBmb3IgZWFjaCBkYXRhYmFzZSBvbiBwdWJsaXNoZXIgKi8KQEAgLTI1 OTAsNyArMjc5OCw4IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCSAqIHVudGlsIGFj Y2VwdGluZyBjb25uZWN0aW9ucy4gV2UgZG9uJ3Qgd2FudCB0byBzdGFydCBsb2dpY2FsIHJlcGxp Y2F0aW9uCiAJICogZHVyaW5nIHNldHVwLgogCSAqLwotCXBnX2xvZ19pbmZvKCJzdGFydGluZyB0 aGUgc3Vic2NyaWJlciIpOworCXBnX2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0lORk8sIFBHX0xPR19Q UklNQVJZLAorCQkJCQkgInN0YXJ0aW5nIHRoZSBzdWJzY3JpYmVyIik7CiAJc3RhcnRfc3RhbmRi eV9zZXJ2ZXIoJm9wdCwgdHJ1ZSwgdHJ1ZSk7CiAKIAkvKiBXYWl0aW5nIHRoZSBzdWJzY3JpYmVy IHRvIGJlIHByb21vdGVkICovCkBAIC0yNjExLDcgKzI4MjAsOCBAQCBtYWluKGludCBhcmdjLCBj aGFyICoqYXJndikKIAlkcm9wX2ZhaWxvdmVyX3JlcGxpY2F0aW9uX3Nsb3RzKGRiaW5mb3MuZGJp bmZvKTsKIAogCS8qIFN0b3AgdGhlIHN1YnNjcmliZXIgKi8KLQlwZ19sb2dfaW5mbygic3RvcHBp bmcgdGhlIHN1YnNjcmliZXIiKTsKKwlwZ19jcmVhdGVzdWJfbG9nKFBHX0xPR19JTkZPLCBQR19M T0dfUFJJTUFSWSwKKwkJCQkJICJzdG9wcGluZyB0aGUgc3Vic2NyaWJlciIpOwogCXN0b3Bfc3Rh bmRieV9zZXJ2ZXIoc3Vic2NyaWJlcl9kaXIpOwogCiAJLyogQ2hhbmdlIHN5c3RlbSBpZGVudGlm aWVyIGZyb20gc3Vic2NyaWJlciAqLwpAQCAtMjYxOSw3ICsyODI5LDggQEAgbWFpbihpbnQgYXJn YywgY2hhciAqKmFyZ3YpCiAKIAlzdWNjZXNzID0gdHJ1ZTsKIAotCXBnX2xvZ19pbmZvKCJEb25l ISIpOworCXBnX2NyZWF0ZXN1Yl9sb2coUEdfTE9HX0lORk8sIFBHX0xPR19QUklNQVJZLAorCQkJ CQkgIkRvbmUhIik7CiAKIAlyZXR1cm4gMDsKIH0KLS0gCjIuNDMuMAoK --0000000000001d997f064d779ffa--