Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tNOpt-00AklW-W6 for pgsql-hackers@arkaria.postgresql.org; Tue, 17 Dec 2024 04:05:30 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tNOpq-00EWHm-7K for pgsql-hackers@arkaria.postgresql.org; Tue, 17 Dec 2024 04:05:27 +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.94.2) (envelope-from ) id 1tNOpp-00EWHe-Bk for pgsql-hackers@lists.postgresql.org; Tue, 17 Dec 2024 04:05:27 +0000 Received: from mail-pl1-x62f.google.com ([2607:f8b0:4864:20::62f]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1tNOpg-003E9u-5D for pgsql-hackers@postgresql.org; Tue, 17 Dec 2024 04:05:25 +0000 Received: by mail-pl1-x62f.google.com with SMTP id d9443c01a7336-2166651f752so51028655ad.3 for ; Mon, 16 Dec 2024 20:05:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20230601.gappssmtp.com; s=20230601; t=1734408315; x=1735013115; darn=postgresql.org; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:from:to:cc:subject:date:message-id:reply-to; bh=CI5hfQ6ygvinrbI6VVdKye8xSq7zQNIzQPOFdMhRckE=; b=xHb3lOWc7ArWMOysRnpnUTxImyqfiJ171rDohxEmiPxshQREdajyN5gqlQhRN+5M+2 bOeH1k4srSU+WeV9YdnCqAsRwZ2v3lJnrFzSCubkZwIyz2XyENdJrcElayRqsg7UNAv/ r4O1y1hGovARfkOio+T3BroxWx4kLxBrbUUQpGU00hLYaKUc2p6zV/ZRv7TVNzCKXJch M8zcS5aScLxKgtc0myrezskSURNnIZp8VB/Y7fBVVmJwvbNyAyv3dDZ+b8wO7U5ZlYH5 PS60yzXSEV4WoD4tSbFxfKukxBfTZXKyWvp6U3RUnIHqdROFQ0h4n382x5oEugNize1x yi3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1734408315; x=1735013115; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=CI5hfQ6ygvinrbI6VVdKye8xSq7zQNIzQPOFdMhRckE=; b=nTzek1FJe1IsTZ01SnI7e0vENcjBVqDnWY4/dkusbjoSoIOge891rqbMKFJjOnvJJ4 8DhyykWiiqgLSdeHMbTgOEPjlDMR2f1JlkZT3Hd2yV6ENk5br/JY2USO6hVKVay0BkLL DJuZaij0ldW0TpX361OnpOvSKy119/sA5jf7bsbMPgrtR/zXyqB842+s5d114FmYVDiG UW6pEo6pSG+IzwMQBsGAEnl0noVc4gcUTqGFAwrpTfx7O6Gg7+KOzKtHZ+dgC06vB++Y I7EVOgklT/hhLYHl8OC+HXis8DjuebhHzi4zfGTkAgYdofJjctLtQYXcM68xR8P5xK5i 3Hog== X-Forwarded-Encrypted: i=1; AJvYcCU2gHl9+KqJqBOZVONwWSZqIQt4CLN2seP8T7zWdawrl3JGeDZ4AjV64Emz9/L/uRQ/Qc27PnYIYOepn6dM@postgresql.org X-Gm-Message-State: AOJu0YynFE6M/W7XEBhDJNomdf5rOAoNtRcrf9dkeLnuduFcPlal0Olb EGInizR4bQ9iJ+SJpVRTBr6WYR5lEd8Ql1STLqNaXtfVOg4+e5tq1x0T8bIrBw== X-Gm-Gg: ASbGncvpqn/MKMsnSx4R38jYRv22PjfvwDlLYuObVP1r13T+kGYlIVAMYmitmSomrpt gAxNc3xhMCEgyaQ7YyExJuVLcL0XDZtk6QCmd8p4kaUQhBkk6w/BrBT0Wx9zt7j06gI8Nx50UQp +SNgYb1L2bwJsra7t3tnTR8gCsZWwrjQ1Q6iIJT2hm10n44blAGFB+KS08ojmgy/zo7J1HT4+TR uIUtNvYjxVW7pbnJXd8ap6T7C2f+WtbnB3aB+z4oYyqYNyavdfW//KY+gcDFaaoFP4SEYROQfV9 qUg5KhIQWAFKOInWbQ6i0Fo= X-Google-Smtp-Source: AGHT+IEFWcW2asLjyysXa90exd+Wr/xAWxlbMxumlt6401Q0NJWqSnQo1Se722GoOXC1kyFzREGyDQ== X-Received: by 2002:a17:902:ced0:b0:216:668d:690c with SMTP id d9443c01a7336-21892a01d38mr235364465ad.28.1734408314916; Mon, 16 Dec 2024 20:05:14 -0800 (PST) Received: from jeff-laptop.lan (c-76-102-242-158.hsd1.ca.comcast.net. [76.102.242.158]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-218a1dcb1c0sm50470855ad.65.2024.12.16.20.05.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Dec 2024 20:05:14 -0800 (PST) Message-ID: Subject: Re: [17] CREATE SUBSCRIPTION ... SERVER From: Jeff Davis To: Ashutosh Bapat Cc: Bharath Rupireddy , Joe Conway , pgsql-hackers@postgresql.org Date: Mon, 16 Dec 2024 20:05:12 -0800 In-Reply-To: <34fd5885b8245d1014f4426ea22af61229d42e3e.camel@j-davis.com> References: <149ff9264db27cdf724b65709fbbaee4bf316835.camel@j-davis.com> <830a2bc6cbbb2e6e01c6c0d9f31f320822e10603.camel@j-davis.com> <433d0845248e86c0317d9d396926182cfe157340.camel@j-davis.com> <05ae37abb207cd6bf6b126780024692d91402b0b.camel@j-davis.com> <93392ffa941ab0d436e19e0ab5d04d0e42c02d3f.camel@j-davis.com> <26be917cb07b6aa3ef5dd15f6b59d1b375ece6e8.camel@j-davis.com> <55201bd916e748acfc754c8f95880dae8e4e5ed0.camel@j-davis.com> <2a89b14a2b1622bffb8b137ca1f9ab7866f2d2b9.camel@j-davis.com> <61831790a0a937038f78ce09f8dd4cef7de7456a.camel@j-davis.com> <0910b47040406c1d24ec0150dafb5bae6b910ed7.camel@j-davis.com> <7338f22c4534322a08ab6ce9f879e2e308eb5e5d.camel@j-davis.com> <34fd5885b8245d1014f4426ea22af61229d42e3e.camel@j-davis.com> Content-Type: multipart/mixed; boundary="=-1xmdLGdZrnswlrggzhd6" User-Agent: Evolution 3.44.4-0ubuntu2 MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-1xmdLGdZrnswlrggzhd6 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, 2024-10-30 at 08:08 -0700, Jeff Davis wrote: > Rebased, v12 attached. Rebased v13 attached. Regards, Jeff Davis --=-1xmdLGdZrnswlrggzhd6 Content-Disposition: attachment; filename="v13-0001-CREATE-SUSBCRIPTION-.-SERVER.patch" Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="v13-0001-CREATE-SUSBCRIPTION-.-SERVER.patch"; charset="UTF-8" RnJvbSA4ZGVmNWNhMjU5MDFlMDA1YzYxNmQ5YjY5ODliYTU5ODZiN2MyYzY4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBU dWUsIDIgSmFuIDIwMjQgMTM6NDI6NDggLTA4MDAKU3ViamVjdDogW1BBVENIIHYxM10gQ1JFQVRF IFNVU0JDUklQVElPTiAuLi4gU0VSVkVSLgoKQWxsb3cgc3BlY2lmeWluZyBhIGZvcmVpZ24gc2Vy dmVyIGZvciBDUkVBVEUgU1VCU0NSSVBUSU9OLCByYXRoZXIgdGhhbgphIHJhdyBjb25uZWN0aW9u IHN0cmluZyB3aXRoIENPTk5FQ1RJT04uCgpVc2luZyBhIGZvcmVpZ24gc2VydmVyIGFzIGEgbGF5 ZXIgb2YgaW5kaXJlY3Rpb24gaW1wcm92ZXMgbWFuYWdlbWVudApvZiBtdWx0aXBsZSBzdWJzY3Jp cHRpb25zIHRvIHRoZSBzYW1lIHNlcnZlci4gSXQgYWxzbyBwcm92aWRlcwppbnRlZ3JhdGlvbiB3 aXRoIHVzZXIgbWFwcGluZ3MgaW4gY2FzZSBkaWZmZXJlbnQgc3Vic2NyaXB0aW9ucyBoYXZlCmRp ZmZlcmVudCBvd25lcnMgb3IgYSBzdWJzY3JpcHRpb24gY2hhbmdlcyBvd25lcnMuCgpEaXNjdXNz aW9uOiBodHRwczovL3Bvc3Rnci5lcy9tLzYxODMxNzkwYTBhOTM3MDM4Zjc4Y2UwOWY4ZGQ0Y2Vm N2RlNzQ1NmEuY2FtZWxAai1kYXZpcy5jb20KUmV2aWV3ZWQtYnk6IEFzaHV0b3NoIEJhcGF0Ci0t LQogY29udHJpYi9wb3N0Z3Jlc19mZHcvTWFrZWZpbGUgICAgICAgICAgICAgICAgIHwgICAyICsK IGNvbnRyaWIvcG9zdGdyZXNfZmR3L2Nvbm5lY3Rpb24uYyAgICAgICAgICAgICB8ICA3MyArKysr KysrKwogLi4uL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0ICAgIHwgICA4 ICsKIGNvbnRyaWIvcG9zdGdyZXNfZmR3L21lc29uLmJ1aWxkICAgICAgICAgICAgICB8ICAgNSAr CiAuLi4vcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy0tMS4xLS0xLjIuc3FsICAgfCAgIDggKwog Y29udHJpYi9wb3N0Z3Jlc19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwgICAgIHwgICA3ICsKIGNv bnRyaWIvcG9zdGdyZXNfZmR3L3QvMDEwX3N1YnNjcmlwdGlvbi5wbCAgICB8ICA3MSArKysrKysr KwogZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9zdWJzY3JpcHRpb24uc2dtbCAgICAgIHwgIDE4ICst CiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCAgICAgfCAgMTEgKy0K IHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMgICAgICAgICB8ICAzOCArKyst CiBzcmMvYmFja2VuZC9jb21tYW5kcy9mb3JlaWduY21kcy5jICAgICAgICAgICAgfCAgNTggKysr KystCiBzcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgICAgICAgfCAxNjgg KysrKysrKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9mb3JlaWduL2ZvcmVpZ24uYyAgICAgICAg ICAgICAgICAgfCAgNjYgKysrKysrKwogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAg ICAgICAgICAgICAgIHwgIDIyICsrKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93 b3JrZXIuYyAgICAgIHwgIDE2ICstCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAg ICAgICAgICAgICAgfCAgMzUgKysrLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCAgICAgICAg ICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyAgICAg ICAgICAgICAgICB8ICAgMiArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19mb3JlaWduX2RhdGFf d3JhcHBlci5oIHwgICAzICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgg ICAgICAgICB8ICAgNyArLQogc3JjL2luY2x1ZGUvZm9yZWlnbi9mb3JlaWduLmggICAgICAgICAg ICAgICAgIHwgICAzICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAgICAg ICAgICB8ICAgMyArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29pZGpvaW5zLm91dCAgICAg ICAgfCAgIDEgKwogMjMgZmlsZXMgY2hhbmdlZCwgNTkxIGluc2VydGlvbnMoKyksIDM1IGRlbGV0 aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIvcG9zdGdyZXNfZmR3L3QvMDEwX3N1 YnNjcmlwdGlvbi5wbAoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L01ha2VmaWxl IGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvTWFrZWZpbGUKaW5kZXggODhmZGNlNDBkNmEuLmExMDE0 MThkNmVmIDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9NYWtlZmlsZQorKysgYi9j b250cmliL3Bvc3RncmVzX2Zkdy9NYWtlZmlsZQpAQCAtMTgsNiArMTgsOCBAQCBEQVRBID0gcG9z dGdyZXNfZmR3LS0xLjAuc3FsIHBvc3RncmVzX2Zkdy0tMS4wLS0xLjEuc3FsIHBvc3RncmVzX2Zk dy0tMS4xLS0xLjIucwogCiBSRUdSRVNTID0gcG9zdGdyZXNfZmR3IHF1ZXJ5X2NhbmNlbAogCitU QVBfVEVTVFMgPSAxCisKIGlmZGVmIFVTRV9QR1hTCiBQR19DT05GSUcgPSBwZ19jb25maWcKIFBH WFMgOj0gJChzaGVsbCAkKFBHX0NPTkZJRykgLS1wZ3hzKQpkaWZmIC0tZ2l0IGEvY29udHJpYi9w b3N0Z3Jlc19mZHcvY29ubmVjdGlvbi5jIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvY29ubmVjdGlv bi5jCmluZGV4IDIzMjZmMzkxZDM0Li40OGM3N2E4ZGUzZCAxMDA2NDQKLS0tIGEvY29udHJpYi9w b3N0Z3Jlc19mZHcvY29ubmVjdGlvbi5jCisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2Nvbm5l Y3Rpb24uYwpAQCAtMTIzLDYgKzEyMyw3IEBAIFBHX0ZVTkNUSU9OX0lORk9fVjEocG9zdGdyZXNf ZmR3X2dldF9jb25uZWN0aW9ucyk7CiBQR19GVU5DVElPTl9JTkZPX1YxKHBvc3RncmVzX2Zkd19n ZXRfY29ubmVjdGlvbnNfMV8yKTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEocG9zdGdyZXNfZmR3X2Rp c2Nvbm5lY3QpOwogUEdfRlVOQ1RJT05fSU5GT19WMShwb3N0Z3Jlc19mZHdfZGlzY29ubmVjdF9h bGwpOworUEdfRlVOQ1RJT05fSU5GT19WMShwb3N0Z3Jlc19mZHdfY29ubmVjdGlvbik7CiAKIC8q IHByb3RvdHlwZXMgb2YgcHJpdmF0ZSBmdW5jdGlvbnMgKi8KIHN0YXRpYyB2b2lkIG1ha2VfbmV3 X2Nvbm5lY3Rpb24oQ29ubkNhY2hlRW50cnkgKmVudHJ5LCBVc2VyTWFwcGluZyAqdXNlcik7CkBA IC0yMTYxLDYgKzIxNjIsNzggQEAgcG9zdGdyZXNfZmR3X2dldF9jb25uZWN0aW9uc19pbnRlcm5h bChGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywKIAl9CiB9CiAKKy8qCisgKiBWYWx1ZXMgaW4gY29u bmVjdGlvbiBzdHJpbmdzIG11c3QgYmUgZW5jbG9zZWQgaW4gc2luZ2xlIHF1b3Rlcy4gU2luZ2xl CisgKiBxdW90ZXMgYW5kIGJhY2tzbGFzaGVzIG11c3QgYmUgZXNjYXBlZCB3aXRoIGJhY2tzbGFz aC4gTkI6IHRoZXNlIHJ1bGVzIGFyZQorICogZGlmZmVyZW50IGZyb20gdGhlIHJ1bGVzIGZvciBl c2NhcGluZyBhIFNRTCBsaXRlcmFsLgorICovCitzdGF0aWMgdm9pZAorYXBwZW5kRXNjYXBlZFZh bHVlKFN0cmluZ0luZm8gc3RyLCBjb25zdCBjaGFyICp2YWwpCit7CisJYXBwZW5kU3RyaW5nSW5m b0NoYXIoc3RyLCAnXCcnKTsKKwlmb3IgKGludCBpID0gMDsgdmFsW2ldICE9ICdcMCc7IGkrKykK Kwl7CisJCWlmICh2YWxbaV0gPT0gJ1xcJyB8fCB2YWxbaV0gPT0gJ1wnJykKKwkJCWFwcGVuZFN0 cmluZ0luZm9DaGFyKHN0ciwgJ1xcJyk7CisJCWFwcGVuZFN0cmluZ0luZm9DaGFyKHN0ciwgdmFs W2ldKTsKKwl9CisJYXBwZW5kU3RyaW5nSW5mb0NoYXIoc3RyLCAnXCcnKTsKK30KKworRGF0dW0K K3Bvc3RncmVzX2Zkd19jb25uZWN0aW9uKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJT2lkCQkJdXNl cmlkID0gUEdfR0VUQVJHX09JRCgwKTsKKwlPaWQJCQlzZXJ2ZXJpZCA9IFBHX0dFVEFSR19PSUQo MSk7CisJRm9yZWlnblNlcnZlciAqc2VydmVyID0gR2V0Rm9yZWlnblNlcnZlcihzZXJ2ZXJpZCk7 CisJVXNlck1hcHBpbmcgKnVzZXIgPSBHZXRVc2VyTWFwcGluZyh1c2VyaWQsIHNlcnZlcmlkKTsK KwlTdHJpbmdJbmZvRGF0YSBzdHI7CisJY29uc3QgY2hhciAqKmtleXdvcmRzOworCWNvbnN0IGNo YXIgKip2YWx1ZXM7CisJaW50CQkJbjsKKworCS8qCisJICogQ29uc3RydWN0IGNvbm5lY3Rpb24g cGFyYW1zIGZyb20gZ2VuZXJpYyBvcHRpb25zIG9mIEZvcmVpZ25TZXJ2ZXIgYW5kCisJICogVXNl ck1hcHBpbmcuICAoU29tZSBvZiB0aGVtIG1pZ2h0IG5vdCBiZSBsaWJwcSBvcHRpb25zLCBpbiB3 aGljaCBjYXNlCisJICogd2UnbGwganVzdCB3YXN0ZSBhIGZldyBhcnJheSBzbG90cy4pICBBZGQg NCBleHRyYSBzbG90cyBmb3IKKwkgKiBhcHBsaWNhdGlvbl9uYW1lLCBmYWxsYmFja19hcHBsaWNh dGlvbl9uYW1lLCBjbGllbnRfZW5jb2RpbmcsIGVuZAorCSAqIG1hcmtlci4KKwkgKi8KKwluID0g bGlzdF9sZW5ndGgoc2VydmVyLT5vcHRpb25zKSArIGxpc3RfbGVuZ3RoKHVzZXItPm9wdGlvbnMp ICsgNDsKKwlrZXl3b3JkcyA9IChjb25zdCBjaGFyICoqKSBwYWxsb2MobiAqIHNpemVvZihjaGFy ICopKTsKKwl2YWx1ZXMgPSAoY29uc3QgY2hhciAqKikgcGFsbG9jKG4gKiBzaXplb2YoY2hhciAq KSk7CisKKwluID0gMDsKKwluICs9IEV4dHJhY3RDb25uZWN0aW9uT3B0aW9ucyhzZXJ2ZXItPm9w dGlvbnMsCisJCQkJCQkJCSAga2V5d29yZHMgKyBuLCB2YWx1ZXMgKyBuKTsKKwluICs9IEV4dHJh Y3RDb25uZWN0aW9uT3B0aW9ucyh1c2VyLT5vcHRpb25zLAorCQkJCQkJCQkgIGtleXdvcmRzICsg biwgdmFsdWVzICsgbik7CisKKwkvKiBTZXQgY2xpZW50X2VuY29kaW5nIHNvIHRoYXQgbGlicHEg Y2FuIGNvbnZlcnQgZW5jb2RpbmcgcHJvcGVybHkuICovCisJa2V5d29yZHNbbl0gPSAiY2xpZW50 X2VuY29kaW5nIjsKKwl2YWx1ZXNbbl0gPSBHZXREYXRhYmFzZUVuY29kaW5nTmFtZSgpOworCW4r KzsKKworCWtleXdvcmRzW25dID0gdmFsdWVzW25dID0gTlVMTDsKKworCS8qIHZlcmlmeSB0aGUg c2V0IG9mIGNvbm5lY3Rpb24gcGFyYW1ldGVycyAqLworCWNoZWNrX2Nvbm5fcGFyYW1zKGtleXdv cmRzLCB2YWx1ZXMsIHVzZXIpOworCisJaW5pdFN0cmluZ0luZm8oJnN0cik7CisJZm9yIChpbnQg aSA9IDA7IGkgPCBuOyBpKyspCisJeworCQljaGFyCSAgICpzZXAgPSAiIjsKKworCQlhcHBlbmRT dHJpbmdJbmZvKCZzdHIsICIlcyVzID0gIiwgc2VwLCBrZXl3b3Jkc1tpXSk7CisJCWFwcGVuZEVz Y2FwZWRWYWx1ZSgmc3RyLCB2YWx1ZXNbaV0pOworCQlzZXAgPSAiICI7CisJfQorCisJcGZyZWUo a2V5d29yZHMpOworCXBmcmVlKHZhbHVlcyk7CisJUEdfUkVUVVJOX1RFWFRfUChjc3RyaW5nX3Rv X3RleHQoc3RyLmRhdGEpKTsKK30KKwogLyoKICAqIExpc3QgYWN0aXZlIGZvcmVpZ24gc2VydmVy IGNvbm5lY3Rpb25zLgogICoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVj dGVkL3Bvc3RncmVzX2Zkdy5vdXQgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0 Z3Jlc19mZHcub3V0CmluZGV4IGJmMzIyMTk4YTIwLi42MDllNjZhOWZjMyAxMDA2NDQKLS0tIGEv Y29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dAorKysgYi9jb250 cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0CkBAIC0yNTYsNiArMjU2 LDE0IEBAIFNFTEVDVCBjMywgYzQgRlJPTSBmdDEgT1JERVIgQlkgYzMsIGMxIExJTUlUIDE7ICAt LSBzaG91bGQgd29yayBhZ2FpbgogQU5BTFlaRSBmdDE7CiBBTFRFUiBGT1JFSUdOIFRBQkxFIGZ0 MiBPUFRJT05TICh1c2VfcmVtb3RlX2VzdGltYXRlICd0cnVlJyk7CiAtLSA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cist LSB0ZXN0IHN1YnNjcmlwdGlvbgorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ1JFQVRFIFNVQlNDUklQVElPTiBy ZWdyZXNzX3BnZmR3X3N1YnNjcmlwdGlvbiBTRVJWRVIgdGVzdHNlcnZlcjEKKyAgUFVCTElDQVRJ T04gcHViMSBXSVRIIChzbG90X25hbWUgPSBOT05FLCBjb25uZWN0ID0gZmFsc2UpOworV0FSTklO RzogIHN1YnNjcmlwdGlvbiB3YXMgY3JlYXRlZCwgYnV0IGlzIG5vdCBjb25uZWN0ZWQKK0hJTlQ6 ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFudWFsbHkgY3JlYXRlIHRoZSBy ZXBsaWNhdGlvbiBzbG90LCBlbmFibGUgdGhlIHN1YnNjcmlwdGlvbiwgYW5kIHJlZnJlc2ggdGhl IHN1YnNjcmlwdGlvbi4KK0RST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfcGdmZHdfc3Vic2NyaXB0 aW9uOworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQogLS0gdGVzdCBlcnJvciBjYXNlIGZvciBjcmVhdGUgcHVibGlj YXRpb24gb24gZm9yZWlnbiB0YWJsZQogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogQ1JFQVRFIFBVQkxJQ0FUSU9O IHRlc3RwdWJfZnRibCBGT1IgVEFCTEUgZnQxOyAgLS0gc2hvdWxkIGZhaWwKZGlmZiAtLWdpdCBh L2NvbnRyaWIvcG9zdGdyZXNfZmR3L21lc29uLmJ1aWxkIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcv bWVzb24uYnVpbGQKaW5kZXggMzAxNDA4NmJhNjQuLmUxOWQ4ZTRlMzEzIDEwMDY0NAotLS0gYS9j b250cmliL3Bvc3RncmVzX2Zkdy9tZXNvbi5idWlsZAorKysgYi9jb250cmliL3Bvc3RncmVzX2Zk dy9tZXNvbi5idWlsZApAQCAtNDEsNCArNDEsOSBAQCB0ZXN0cyArPSB7CiAgICAgXSwKICAgICAn cmVncmVzc19hcmdzJzogWyctLWRscGF0aCcsIG1lc29uLmJ1aWxkX3Jvb3QoKSAvICdzcmMvdGVz dC9yZWdyZXNzJ10sCiAgIH0sCisgICd0YXAnOiB7CisgICAgJ3Rlc3RzJzogWworICAgICAgJ3Qv MDEwX3N1YnNjcmlwdGlvbi5wbCcsCisgICAgXSwKKyAgfSwKIH0KZGlmZiAtLWdpdCBhL2NvbnRy aWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy0tMS4xLS0xLjIuc3FsIGIvY29udHJpYi9wb3N0 Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LS0xLjEtLTEuMi5zcWwKaW5kZXggODFhYWQ0ZmNkYWEuLjg5 ODE3ODdkMTY1IDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHct LTEuMS0tMS4yLnNxbAorKysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHctLTEu MS0tMS4yLnNxbApAQCAtMTYsMyArMTYsMTEgQEAgQ1JFQVRFIEZVTkNUSU9OIHBvc3RncmVzX2Zk d19nZXRfY29ubmVjdGlvbnMgKAogUkVUVVJOUyBTRVRPRiByZWNvcmQKIEFTICdNT0RVTEVfUEFU SE5BTUUnLCAncG9zdGdyZXNfZmR3X2dldF9jb25uZWN0aW9uc18xXzInCiBMQU5HVUFHRSBDIFNU UklDVCBQQVJBTExFTCBSRVNUUklDVEVEOworCistLSB0YWtlcyBpbnRlcm5hbCBwYXJhbWV0ZXIg dG8gcHJldmVudCBjYWxsaW5nIGZyb20gU1FMCitDUkVBVEUgRlVOQ1RJT04gcG9zdGdyZXNfZmR3 X2Nvbm5lY3Rpb24ob2lkLCBvaWQsIGludGVybmFsKQorUkVUVVJOUyB0ZXh0CitBUyAnTU9EVUxF X1BBVEhOQU1FJworTEFOR1VBR0UgQyBTVFJJQ1Q7CisKK0FMVEVSIEZPUkVJR04gREFUQSBXUkFQ UEVSIHBvc3RncmVzX2ZkdyBDT05ORUNUSU9OIHBvc3RncmVzX2Zkd19jb25uZWN0aW9uOwpkaWZm IC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwgYi9jb250 cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9zdGdyZXNfZmR3LnNxbAppbmRleCAzOTAwNTIyY2NiNS4u NTIwM2Y1ZjA2NmUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NxbC9wb3N0Z3Jl c19mZHcuc3FsCisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3Fs CkBAIC0yNDgsNiArMjQ4LDEzIEBAIFNFTEVDVCBjMywgYzQgRlJPTSBmdDEgT1JERVIgQlkgYzMs IGMxIExJTUlUIDE7ICAtLSBzaG91bGQgd29yayBhZ2FpbgogQU5BTFlaRSBmdDE7CiBBTFRFUiBG T1JFSUdOIFRBQkxFIGZ0MiBPUFRJT05TICh1c2VfcmVtb3RlX2VzdGltYXRlICd0cnVlJyk7CiAK Ky0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKy0tIHRlc3Qgc3Vic2NyaXB0aW9uCistLSA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDUkVB VEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfcGdmZHdfc3Vic2NyaXB0aW9uIFNFUlZFUiB0ZXN0c2Vy dmVyMQorICBQVUJMSUNBVElPTiBwdWIxIFdJVEggKHNsb3RfbmFtZSA9IE5PTkUsIGNvbm5lY3Qg PSBmYWxzZSk7CitEUk9QIFNVQlNDUklQVElPTiByZWdyZXNzX3BnZmR3X3N1YnNjcmlwdGlvbjsK KwogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQogLS0gdGVzdCBlcnJvciBjYXNlIGZvciBjcmVhdGUgcHVibGljYXRp b24gb24gZm9yZWlnbiB0YWJsZQogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvY29udHJpYi9w b3N0Z3Jlc19mZHcvdC8wMTBfc3Vic2NyaXB0aW9uLnBsIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcv dC8wMTBfc3Vic2NyaXB0aW9uLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi5hMzllOGZkYmJhNAotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3 L3QvMDEwX3N1YnNjcmlwdGlvbi5wbApAQCAtMCwwICsxLDcxIEBACisKKyMgQ29weXJpZ2h0IChj KSAyMDIxLTIwMjQsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKyMgQmFz aWMgbG9naWNhbCByZXBsaWNhdGlvbiB0ZXN0Cit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzIEZB VEFMID0+ICdhbGwnOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdy ZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKKworIyBJbml0aWFsaXplIHB1Ymxp c2hlciBub2RlCitteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy LT5uZXcoJ3B1Ymxpc2hlcicpOworJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1p bmcgPT4gJ2xvZ2ljYWwnKTsKKyRub2RlX3B1Ymxpc2hlci0+c3RhcnQ7CisKKyMgQ3JlYXRlIHN1 YnNjcmliZXIgbm9kZQorbXkgJG5vZGVfc3Vic2NyaWJlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNs dXN0ZXItPm5ldygnc3Vic2NyaWJlcicpOworJG5vZGVfc3Vic2NyaWJlci0+aW5pdDsKKyRub2Rl X3N1YnNjcmliZXItPnN0YXJ0OworCisjIENyZWF0ZSBzb21lIHByZWV4aXN0aW5nIGNvbnRlbnQg b24gcHVibGlzaGVyCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJD UkVBVEUgVEFCTEUgdGFiX2lucyBBUyBTRUxFQ1QgYSwgYSArIDEgYXMgYiBGUk9NIGdlbmVyYXRl X3NlcmllcygxLDEwMDIpIEFTIGEiKTsKKworIyBSZXBsaWNhdGUgdGhlIGNoYW5nZXMgd2l0aG91 dCBjb2x1bW5zCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRF IFRBQkxFIHRhYl9ub19jb2woKSIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiSU5TRVJUIElOVE8gdGFiX25vX2NvbCBkZWZhdWx0IFZBTFVFUyIpOworCisjIFNl dHVwIHN0cnVjdHVyZSBvbiBzdWJzY3JpYmVyCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIkNSRUFURSBFWFRFTlNJT04gcG9zdGdyZXNfZmR3Iik7Ciskbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSB0YWJfaW5zIChhIGlu dCwgYiBpbnQpIik7CisKKyMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlvbgorbXkgJHB1Ymxpc2hl cl9jb25uc3RyID0gJG5vZGVfcHVibGlzaGVyLT5jb25uc3RyIC4gJyBkYm5hbWU9cG9zdGdyZXMn OworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBQVUJMSUNB VElPTiB0YXBfcHViIEZPUiBUQUJMRSB0YWJfaW5zIik7CisKK215ICRwdWJsaXNoZXJfaG9zdCA9 ICRub2RlX3B1Ymxpc2hlci0+aG9zdDsKK215ICRwdWJsaXNoZXJfcG9ydCA9ICRub2RlX3B1Ymxp c2hlci0+cG9ydDsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJD UkVBVEUgU0VSVkVSIHRhcF9zZXJ2ZXIgRk9SRUlHTiBEQVRBIFdSQVBQRVIgcG9zdGdyZXNfZmR3 IE9QVElPTlMgKGhvc3QgJyRwdWJsaXNoZXJfaG9zdCcsIHBvcnQgJyRwdWJsaXNoZXJfcG9ydCcs IGRibmFtZSAncG9zdGdyZXMnKSIKKyk7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJDUkVBVEUgVVNFUiBNQVBQSU5HIEZPUiBQVUJMSUMgU0VSVkVSIHRhcF9z ZXJ2ZXIiCispOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwki Q1JFQVRFIEZPUkVJR04gVEFCTEUgZl90YWJfaW5zIChhIGludCwgYiBpbnQpIFNFUlZFUiB0YXBf c2VydmVyIE9QVElPTlModGFibGVfbmFtZSAndGFiX2lucycpIgorKTsKKyRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIg U0VSVkVSIHRhcF9zZXJ2ZXIgUFVCTElDQVRJT04gdGFwX3B1YiBXSVRIIChwYXNzd29yZF9yZXF1 aXJlZD1mYWxzZSkiCispOworCisjIFdhaXQgZm9yIGluaXRpYWwgdGFibGUgc3luYyB0byBmaW5p c2gKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRub2RlX3B1 Ymxpc2hlciwgJ3RhcF9zdWInKTsKKworbXkgJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gKFNFTEVDVCBmLmIg PSBsLmIgYXMgbWF0Y2ggRlJPTSB0YWJfaW5zIGwsIGZfdGFiX2lucyBmIFdIRVJFIGwuYSA9IGYu YSkgV0hFUkUgbWF0Y2giKTsKK2lzKCRyZXN1bHQsIHFxKDEwMDIpLCAnY2hlY2sgaW5pdGlhbCBk YXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0YWJfaW5zIFNFTEVDVCBhLCBhICsgMSBG Uk9NIGdlbmVyYXRlX3NlcmllcygxMDAzLDEwNTApIGEiKTsKKworJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCd0YXBfc3ViJyk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIChTRUxFQ1Qg Zi5iID0gbC5iIGFzIG1hdGNoIEZST00gdGFiX2lucyBsLCBmX3RhYl9pbnMgZiBXSEVSRSBsLmEg PSBmLmEpIFdIRVJFIG1hdGNoIik7CitpcygkcmVzdWx0LCBxcSgxMDUwKSwgJ2NoZWNrIGluaXRp YWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKKworZG9uZV90ZXN0aW5nKCk7CmRp ZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3N1YnNjcmlwdGlvbi5zZ21sIGIvZG9j L3NyYy9zZ21sL3JlZi9hbHRlcl9zdWJzY3JpcHRpb24uc2dtbAppbmRleCBmZGM2NDhkMDA3Zi4u MzVhODEwMTc5NmIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfc3Vic2NyaXB0 aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9zdWJzY3JpcHRpb24uc2dtbApA QCAtMjEsNiArMjEsNyBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KIAogIDxyZWZzeW5vcHNp c2Rpdj4KIDxzeW5vcHNpcz4KK0FMVEVSIFNVQlNDUklQVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFNFUlZFUiA8cmVwbGFjZWFibGU+c2VydmVy bmFtZTwvcmVwbGFjZWFibGU+CiBBTFRFUiBTVUJTQ1JJUFRJT04gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBDT05ORUNUSU9OICc8cmVwbGFjZWFibGU+ Y29ubmluZm88L3JlcGxhY2VhYmxlPicKIEFMVEVSIFNVQlNDUklQVElPTiA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFNFVCBQVUJMSUNBVElPTiA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fbmFtZTwvcmVwbGFjZWFibGU+ IFssIC4uLl0gWyBXSVRIICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0 aW9uX29wdGlvbjwvcmVwbGFjZWFibGU+IFs9IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij52YWx1ZTwvcmVwbGFjZWFibGU+XSBbLCAuLi4gXSApIF0KIEFMVEVSIFNVQlNDUklQVElPTiA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IEFERCBQVUJM SUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fbmFtZTwv cmVwbGFjZWFibGU+IFssIC4uLl0gWyBXSVRIICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnB1YmxpY2F0aW9uX29wdGlvbjwvcmVwbGFjZWFibGU+IFs9IDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj52YWx1ZTwvcmVwbGFjZWFibGU+XSBbLCAuLi4gXSApIF0KQEAgLTEwMSwx MyArMTAyLDI0IEBAIEFMVEVSIFNVQlNDUklQVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJFTkFNRSBUTyA8CiAgICAgPC9saXN0aXRlbT4KICAg IDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtYWx0ZXJzdWJzY3Jp cHRpb24tcGFyYW1zLXNlcnZlciI+CisgICAgPHRlcm0+PGxpdGVyYWw+U0VSVkVSIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zZXJ2ZXJuYW1lPC9yZXBsYWNlYWJsZT48L2xpdGVyYWw+ PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGlzIGNsYXVzZSBy ZXBsYWNlcyB0aGUgZm9yZWlnbiBzZXJ2ZXIgb3IgY29ubmVjdGlvbiBzdHJpbmcgb3JpZ2luYWxs eQorICAgICAgc2V0IGJ5IDx4cmVmIGxpbmtlbmQ9InNxbC1jcmVhdGVzdWJzY3JpcHRpb24iLz4g d2l0aCB0aGUgZm9yZWlnbiBzZXJ2ZXIKKyAgICAgIDxyZXBsYWNlYWJsZT5zZXJ2ZXJuYW1lPC9y ZXBsYWNlYWJsZT4uCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0 ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1hbHRlcnN1YnNjcmlwdGlvbi1wYXJh bXMtY29ubmVjdGlvbiI+CiAgICAgPHRlcm0+PGxpdGVyYWw+Q09OTkVDVElPTiAnPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbm5pbmZvPC9yZXBsYWNlYWJsZT4nPC9saXRlcmFsPjwv dGVybT4KICAgICA8bGlzdGl0ZW0+CiAgICAgIDxwYXJhPgotICAgICAgVGhpcyBjbGF1c2UgcmVw bGFjZXMgdGhlIGNvbm5lY3Rpb24gc3RyaW5nIG9yaWdpbmFsbHkgc2V0IGJ5Ci0gICAgICA8eHJl ZiBsaW5rZW5kPSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9uIi8+LiAgU2VlIHRoZXJlIGZvciBtb3Jl Ci0gICAgICBpbmZvcm1hdGlvbi4KKyAgICAgIFRoaXMgY2xhdXNlIHJlcGxhY2VzIHRoZSBmb3Jl aWduIHNlcnZlciBvciBjb25uZWN0aW9uIHN0cmluZyBvcmlnaW5hbGx5CisgICAgICBzZXQgYnkg PHhyZWYgbGlua2VuZD0ic3FsLWNyZWF0ZXN1YnNjcmlwdGlvbiIvPiB3aXRoIHRoZSBjb25uZWN0 aW9uCisgICAgICBzdHJpbmcgPHJlcGxhY2VhYmxlPmNvbm5pbmZvPC9yZXBsYWNlYWJsZT4uCiAg ICAgIDwvcGFyYT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CmRpZmYgLS1n aXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCBiL2RvYy9zcmMv c2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCmluZGV4IDZjZjdkNGY5YTFhLi5mNzg3 YTI3YmM5YyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9u LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKQEAg LTIyLDcgKzIyLDcgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAgPHJlZnN5bm9wc2lzZGl2 PgogPHN5bm9wc2lzPgogQ1JFQVRFIFNVQlNDUklQVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+c3Vic2NyaXB0aW9uX25hbWU8L3JlcGxhY2VhYmxlPgotICAgIENPTk5FQ1RJT04g JzxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb25uaW5mbzwvcmVwbGFjZWFibGU+Jwor ICAgIHsgU0VSVkVSIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zZXJ2ZXJuYW1lPC9y ZXBsYWNlYWJsZT4gfCBDT05ORUNUSU9OICc8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ Y29ubmluZm88L3JlcGxhY2VhYmxlPicgfQogICAgIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXQog ICAgIFsgV0lUSCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zdWJzY3JpcHRpb25f cGFyYW1ldGVyPC9yZXBsYWNlYWJsZT4gWz0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnZhbHVlPC9yZXBsYWNlYWJsZT5dIFssIC4uLiBdICkgXQogPC9zeW5vcHNpcz4KQEAgLTc3LDYg Kzc3LDE1IEBAIENSRUFURSBTVUJTQ1JJUFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnN1YnNjcmlwdGlvbl9uYW1lPC9yZXBsYWNlYWJsCiAgICAgPC9saXN0aXRlbT4KICAgIDwv dmFybGlzdGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRlc3Vic2NyaXB0 aW9uLXBhcmFtcy1zZXJ2ZXIiPgorICAgIDx0ZXJtPjxsaXRlcmFsPlNFUlZFUiA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+c2VydmVybmFtZTwvcmVwbGFjZWFibGU+PC9saXRlcmFsPjwv dGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgQSBmb3JlaWduIHNlcnZl ciB0byB1c2UgZm9yIHRoZSBjb25uZWN0aW9uLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRl bT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRl c3Vic2NyaXB0aW9uLXBhcmFtcy1jb25uZWN0aW9uIj4KICAgICA8dGVybT48bGl0ZXJhbD5DT05O RUNUSU9OICc8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29ubmluZm88L3JlcGxhY2Vh YmxlPic8L2xpdGVyYWw+PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3Bn X3N1YnNjcmlwdGlvbi5jCmluZGV4IDg5YmY1ZWM5MzM3Li42NmNhZThlY2UwYiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYworKysgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCkBAIC0xOSwxMSArMTksMTQgQEAKICNpbmNsdWRl ICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxlYW0uaCIKICNp bmNsdWRlICJjYXRhbG9nL2luZGV4aW5nLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19mb3JlaWdu X3NlcnZlci5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ19zdWJzY3JpcHRpb25fcmVsLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190 eXBlLmgiCisjaW5jbHVkZSAiZm9yZWlnbi9mb3JlaWduLmgiCiAjaW5jbHVkZSAibWlzY2FkbWlu LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCisjaW5jbHVkZSAidXRpbHMvYWNsLmgiCiAj aW5jbHVkZSAidXRpbHMvYXJyYXkuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2lu Y2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCkBAIC02OSw3ICs3Miw3IEBAIEdldFB1YmxpY2F0aW9u c1N0cihMaXN0ICpwdWJsaWNhdGlvbnMsIFN0cmluZ0luZm8gZGVzdCwgYm9vbCBxdW90ZV9saXRl cmFsKQogICogRmV0Y2ggdGhlIHN1YnNjcmlwdGlvbiBmcm9tIHRoZSBzeXNjYWNoZS4KICAqLwog U3Vic2NyaXB0aW9uICoKLUdldFN1YnNjcmlwdGlvbihPaWQgc3ViaWQsIGJvb2wgbWlzc2luZ19v aykKK0dldFN1YnNjcmlwdGlvbihPaWQgc3ViaWQsIGJvb2wgbWlzc2luZ19vaywgYm9vbCBhY2xj aGVjaykKIHsKIAlIZWFwVHVwbGUJdHVwOwogCVN1YnNjcmlwdGlvbiAqc3ViOwpAQCAtMTA1LDEw ICsxMDgsMzUgQEAgR2V0U3Vic2NyaXB0aW9uKE9pZCBzdWJpZCwgYm9vbCBtaXNzaW5nX29rKQog CXN1Yi0+ZmFpbG92ZXIgPSBzdWJmb3JtLT5zdWJmYWlsb3ZlcjsKIAogCS8qIEdldCBjb25uaW5m byAqLwotCWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRyTm90TnVsbChTVUJTQ1JJUFRJT05PSUQsCi0J CQkJCQkJCSAgIHR1cCwKLQkJCQkJCQkJICAgQW51bV9wZ19zdWJzY3JpcHRpb25fc3ViY29ubmlu Zm8pOwotCXN1Yi0+Y29ubmluZm8gPSBUZXh0RGF0dW1HZXRDU3RyaW5nKGRhdHVtKTsKKwlpZiAo T2lkSXNWYWxpZChzdWJmb3JtLT5zdWJzZXJ2ZXIpKQorCXsKKwkJQWNsUmVzdWx0CWFjbHJlc3Vs dDsKKworCQkvKiByZWNoZWNrIEFDTCBpZiByZXF1ZXN0ZWQgKi8KKwkJaWYgKGFjbGNoZWNrKQor CQl7CisJCQlhY2xyZXN1bHQgPSBvYmplY3RfYWNsY2hlY2soRm9yZWlnblNlcnZlclJlbGF0aW9u SWQsCisJCQkJCQkJCQkJc3ViZm9ybS0+c3Vic2VydmVyLAorCQkJCQkJCQkJCXN1YmZvcm0tPnN1 Ym93bmVyLCBBQ0xfVVNBR0UpOworCisJCQlpZiAoYWNscmVzdWx0ICE9IEFDTENIRUNLX09LKQor CQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9Q UklWSUxFR0UpLAorCQkJCQkJIGVycm1zZygic3Vic2NyaXB0aW9uIG93bmVyIFwiJXNcIiBkb2Vz IG5vdCBoYXZlIHBlcm1pc3Npb24gb24gZm9yZWlnbiBzZXJ2ZXIgXCIlc1wiIiwKKwkJCQkJCQkJ R2V0VXNlck5hbWVGcm9tSWQoc3ViZm9ybS0+c3Vib3duZXIsIGZhbHNlKSwKKwkJCQkJCQkJRm9y ZWlnblNlcnZlck5hbWUoc3ViZm9ybS0+c3Vic2VydmVyKSkpKTsKKwkJfQorCisJCXN1Yi0+Y29u bmluZm8gPSBGb3JlaWduU2VydmVyQ29ubmVjdGlvblN0cmluZyhzdWJmb3JtLT5zdWJvd25lciwK KwkJCQkJCQkJCQkJCQkgIHN1YmZvcm0tPnN1YnNlcnZlcik7CisJfQorCWVsc2UKKwl7CisJCWRh dHVtID0gU3lzQ2FjaGVHZXRBdHRyTm90TnVsbChTVUJTQ1JJUFRJT05PSUQsCisJCQkJCQkJCQkg ICB0dXAsCisJCQkJCQkJCQkgICBBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJjb25uaW5mbyk7CisJ CXN1Yi0+Y29ubmluZm8gPSBUZXh0RGF0dW1HZXRDU3RyaW5nKGRhdHVtKTsKKwl9CiAKIAkvKiBH ZXQgc2xvdG5hbWUgKi8KIAlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihTVUJTQ1JJUFRJT05PSUQs CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9mb3JlaWduY21kcy5jIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvZm9yZWlnbmNtZHMuYwppbmRleCBkZDE0ODk1MThjMy4uNjU4YzU3ZmJm ZjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2ZvcmVpZ25jbWRzLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvZm9yZWlnbmNtZHMuYwpAQCAtNTExLDIxICs1MTEsNTMgQEAg bG9va3VwX2Zkd192YWxpZGF0b3JfZnVuYyhEZWZFbGVtICp2YWxpZGF0b3IpCiAJLyogdmFsaWRh dG9yJ3MgcmV0dXJuIHZhbHVlIGlzIGlnbm9yZWQsIHNvIHdlIGRvbid0IGNoZWNrIHRoZSB0eXBl ICovCiB9CiAKKy8qCisgKiBDb252ZXJ0IGEgY29ubmVjdGlvbiBzdHJpbmcgZnVuY3Rpb24gbmFt ZSBwYXNzZWQgZnJvbSB0aGUgcGFyc2VyIHRvIGFuIE9pZC4KKyAqLworc3RhdGljIE9pZAorbG9v a3VwX2Zkd19jb25uZWN0aW9uX2Z1bmMoRGVmRWxlbSAqY29ubmVjdGlvbikKK3sKKwlPaWQJCQlj b25uZWN0aW9uT2lkOworCU9pZAkJCWZ1bmNhcmd0eXBlc1szXTsKKworCWlmIChjb25uZWN0aW9u ID09IE5VTEwgfHwgY29ubmVjdGlvbi0+YXJnID09IE5VTEwpCisJCXJldHVybiBJbnZhbGlkT2lk OworCisJLyogY29ubmVjdGlvbiBzdHJpbmcgZnVuY3Rpb25zIHRha2UgdXNlciBvaWQsIHNlcnZl ciBvaWQgKi8KKwlmdW5jYXJndHlwZXNbMF0gPSBPSURPSUQ7CisJZnVuY2FyZ3R5cGVzWzFdID0g T0lET0lEOworCWZ1bmNhcmd0eXBlc1syXSA9IElOVEVSTkFMT0lEOworCisJY29ubmVjdGlvbk9p ZCA9IExvb2t1cEZ1bmNOYW1lKChMaXN0ICopIGNvbm5lY3Rpb24tPmFyZywgMywgZnVuY2FyZ3R5 cGVzLCBmYWxzZSk7CisKKwkvKiBjaGVjayB0aGF0IGNvbm5lY3Rpb24gc3RyaW5nIGZ1bmN0aW9u IGhhcyBjb3JyZWN0IHJldHVybiB0eXBlICovCisJaWYgKGdldF9mdW5jX3JldHR5cGUoY29ubmVj dGlvbk9pZCkgIT0gVEVYVE9JRCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJD T0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQkgZXJybXNnKCJmdW5jdGlvbiAlcyBtdXN0IHJl dHVybiB0eXBlICVzIiwKKwkJCQkJCU5hbWVMaXN0VG9TdHJpbmcoKExpc3QgKikgY29ubmVjdGlv bi0+YXJnKSwgInRleHQiKSkpOworCisJcmV0dXJuIGNvbm5lY3Rpb25PaWQ7Cit9CisKIC8qCiAg KiBQcm9jZXNzIGZ1bmN0aW9uIG9wdGlvbnMgb2YgQ1JFQVRFL0FMVEVSIEZEVwogICovCiBzdGF0 aWMgdm9pZAogcGFyc2VfZnVuY19vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqZnVu Y19vcHRpb25zLAogCQkJCSAgIGJvb2wgKmhhbmRsZXJfZ2l2ZW4sIE9pZCAqZmR3aGFuZGxlciwK LQkJCQkgICBib29sICp2YWxpZGF0b3JfZ2l2ZW4sIE9pZCAqZmR3dmFsaWRhdG9yKQorCQkJCSAg IGJvb2wgKnZhbGlkYXRvcl9naXZlbiwgT2lkICpmZHd2YWxpZGF0b3IsCisJCQkJICAgYm9vbCAq Y29ubmVjdGlvbl9naXZlbiwgT2lkICpmZHdjb25uZWN0aW9uKQogewogCUxpc3RDZWxsICAgKmNl bGw7CiAKIAkqaGFuZGxlcl9naXZlbiA9IGZhbHNlOwogCSp2YWxpZGF0b3JfZ2l2ZW4gPSBmYWxz ZTsKKwkqY29ubmVjdGlvbl9naXZlbiA9IGZhbHNlOwogCS8qIHJldHVybiBJbnZhbGlkT2lkIGlm IG5vdCBnaXZlbiAqLwogCSpmZHdoYW5kbGVyID0gSW52YWxpZE9pZDsKIAkqZmR3dmFsaWRhdG9y ID0gSW52YWxpZE9pZDsKKwkqZmR3Y29ubmVjdGlvbiA9IEludmFsaWRPaWQ7CiAKIAlmb3JlYWNo KGNlbGwsIGZ1bmNfb3B0aW9ucykKIAl7CkBAIC01NDUsNiArNTc3LDEzIEBAIHBhcnNlX2Z1bmNf b3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKmZ1bmNfb3B0aW9ucywKIAkJCSp2YWxp ZGF0b3JfZ2l2ZW4gPSB0cnVlOwogCQkJKmZkd3ZhbGlkYXRvciA9IGxvb2t1cF9mZHdfdmFsaWRh dG9yX2Z1bmMoZGVmKTsKIAkJfQorCQllbHNlIGlmIChzdHJjbXAoZGVmLT5kZWZuYW1lLCAiY29u bmVjdGlvbiIpID09IDApCisJCXsKKwkJCWlmICgqY29ubmVjdGlvbl9naXZlbikKKwkJCQllcnJv ckNvbmZsaWN0aW5nRGVmRWxlbShkZWYsIHBzdGF0ZSk7CisJCQkqY29ubmVjdGlvbl9naXZlbiA9 IHRydWU7CisJCQkqZmR3Y29ubmVjdGlvbiA9IGxvb2t1cF9mZHdfY29ubmVjdGlvbl9mdW5jKGRl Zik7CisJCX0KIAkJZWxzZQogCQkJZWxvZyhFUlJPUiwgIm9wdGlvbiBcIiVzXCIgbm90IHJlY29n bml6ZWQiLAogCQkJCSBkZWYtPmRlZm5hbWUpOwpAQCAtNTY0LDggKzYwMywxMCBAQCBDcmVhdGVG b3JlaWduRGF0YVdyYXBwZXIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVGZHdTdG10ICpzdG10 KQogCU9pZAkJCWZkd0lkOwogCWJvb2wJCWhhbmRsZXJfZ2l2ZW47CiAJYm9vbAkJdmFsaWRhdG9y X2dpdmVuOworCWJvb2wJCWNvbm5lY3Rpb25fZ2l2ZW47CiAJT2lkCQkJZmR3aGFuZGxlcjsKIAlP aWQJCQlmZHd2YWxpZGF0b3I7CisJT2lkCQkJZmR3Y29ubmVjdGlvbjsKIAlEYXR1bQkJZmR3b3B0 aW9uczsKIAlPaWQJCQlvd25lcklkOwogCU9iamVjdEFkZHJlc3MgbXlzZWxmOwpAQCAtNjA5LDEw ICs2NTAsMTIgQEAgQ3JlYXRlRm9yZWlnbkRhdGFXcmFwcGVyKFBhcnNlU3RhdGUgKnBzdGF0ZSwg Q3JlYXRlRmR3U3RtdCAqc3RtdCkKIAkvKiBMb29rdXAgaGFuZGxlciBhbmQgdmFsaWRhdG9yIGZ1 bmN0aW9ucywgaWYgZ2l2ZW4gKi8KIAlwYXJzZV9mdW5jX29wdGlvbnMocHN0YXRlLCBzdG10LT5m dW5jX29wdGlvbnMsCiAJCQkJCSAgICZoYW5kbGVyX2dpdmVuLCAmZmR3aGFuZGxlciwKLQkJCQkJ ICAgJnZhbGlkYXRvcl9naXZlbiwgJmZkd3ZhbGlkYXRvcik7CisJCQkJCSAgICZ2YWxpZGF0b3Jf Z2l2ZW4sICZmZHd2YWxpZGF0b3IsCisJCQkJCSAgICZjb25uZWN0aW9uX2dpdmVuLCAmZmR3Y29u bmVjdGlvbik7CiAKIAl2YWx1ZXNbQW51bV9wZ19mb3JlaWduX2RhdGFfd3JhcHBlcl9mZHdoYW5k bGVyIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKGZkd2hhbmRsZXIpOwogCXZhbHVlc1tBbnVtX3Bn X2ZvcmVpZ25fZGF0YV93cmFwcGVyX2Zkd3ZhbGlkYXRvciAtIDFdID0gT2JqZWN0SWRHZXREYXR1 bShmZHd2YWxpZGF0b3IpOworCXZhbHVlc1tBbnVtX3BnX2ZvcmVpZ25fZGF0YV93cmFwcGVyX2Zk d2Nvbm5lY3Rpb24gLSAxXSA9IE9iamVjdElkR2V0RGF0dW0oZmR3Y29ubmVjdGlvbik7CiAKIAlu dWxsc1tBbnVtX3BnX2ZvcmVpZ25fZGF0YV93cmFwcGVyX2Zkd2FjbCAtIDFdID0gdHJ1ZTsKIApA QCAtNjg0LDggKzcyNywxMCBAQCBBbHRlckZvcmVpZ25EYXRhV3JhcHBlcihQYXJzZVN0YXRlICpw c3RhdGUsIEFsdGVyRmR3U3RtdCAqc3RtdCkKIAlEYXR1bQkJZGF0dW07CiAJYm9vbAkJaGFuZGxl cl9naXZlbjsKIAlib29sCQl2YWxpZGF0b3JfZ2l2ZW47CisJYm9vbAkJY29ubmVjdGlvbl9naXZl bjsKIAlPaWQJCQlmZHdoYW5kbGVyOwogCU9pZAkJCWZkd3ZhbGlkYXRvcjsKKwlPaWQJCQlmZHdj b25uZWN0aW9uOwogCU9iamVjdEFkZHJlc3MgbXlzZWxmOwogCiAJcmVsID0gdGFibGVfb3BlbihG b3JlaWduRGF0YVdyYXBwZXJSZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKQEAgLTcxNSw3 ICs3NjAsOCBAQCBBbHRlckZvcmVpZ25EYXRhV3JhcHBlcihQYXJzZVN0YXRlICpwc3RhdGUsIEFs dGVyRmR3U3RtdCAqc3RtdCkKIAogCXBhcnNlX2Z1bmNfb3B0aW9ucyhwc3RhdGUsIHN0bXQtPmZ1 bmNfb3B0aW9ucywKIAkJCQkJICAgJmhhbmRsZXJfZ2l2ZW4sICZmZHdoYW5kbGVyLAotCQkJCQkg ICAmdmFsaWRhdG9yX2dpdmVuLCAmZmR3dmFsaWRhdG9yKTsKKwkJCQkJICAgJnZhbGlkYXRvcl9n aXZlbiwgJmZkd3ZhbGlkYXRvciwKKwkJCQkJICAgJmNvbm5lY3Rpb25fZ2l2ZW4sICZmZHdjb25u ZWN0aW9uKTsKIAogCWlmIChoYW5kbGVyX2dpdmVuKQogCXsKQEAgLTc1Myw2ICs3OTksMTIgQEAg QWx0ZXJGb3JlaWduRGF0YVdyYXBwZXIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlckZkd1N0bXQg KnN0bXQpCiAJCWZkd3ZhbGlkYXRvciA9IGZkd0Zvcm0tPmZkd3ZhbGlkYXRvcjsKIAl9CiAKKwlp ZiAoY29ubmVjdGlvbl9naXZlbikKKwl7CisJCXJlcGxfdmFsW0FudW1fcGdfZm9yZWlnbl9kYXRh X3dyYXBwZXJfZmR3Y29ubmVjdGlvbiAtIDFdID0gT2JqZWN0SWRHZXREYXR1bShmZHdjb25uZWN0 aW9uKTsKKwkJcmVwbF9yZXBsW0FudW1fcGdfZm9yZWlnbl9kYXRhX3dyYXBwZXJfZmR3Y29ubmVj dGlvbiAtIDFdID0gdHJ1ZTsKKwl9CisKIAkvKgogCSAqIElmIG9wdGlvbnMgc3BlY2lmaWVkLCB2 YWxpZGF0ZSBhbmQgdXBkYXRlLgogCSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvc3Vic2NyaXB0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9u Y21kcy5jCmluZGV4IDAzZTk3NzMwZTczLi5lZDU0MDRjYjBlYyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3N1YnNjcmlwdGlvbmNtZHMuYwpAQCAtMjYsMTQgKzI2LDE3IEBACiAjaW5jbHVkZSAiY2F0 YWxvZy9vYmplY3RhZGRyZXNzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19hdXRoaWRfZC5oIgog I2luY2x1ZGUgImNhdGFsb2cvcGdfZGF0YWJhc2VfZC5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdf Zm9yZWlnbl9zZXJ2ZXIuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIgog I2luY2x1ZGUgImNhdGFsb2cvcGdfc3Vic2NyaXB0aW9uX3JlbC5oIgogI2luY2x1ZGUgImNhdGFs b2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdXNlcl9tYXBwaW5nLmgiCiAjaW5j bHVkZSAiY29tbWFuZHMvZGJjb21tYW5kcy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2RlZnJlbS5o IgogI2luY2x1ZGUgImNvbW1hbmRzL2V2ZW50X3RyaWdnZXIuaCIKICNpbmNsdWRlICJjb21tYW5k cy9zdWJzY3JpcHRpb25jbWRzLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKKyNp bmNsdWRlICJmb3JlaWduL2ZvcmVpZ24uaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNs dWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKQEAgLTU0Niw2ICs1 NDksNyBAQCBDcmVhdGVTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJz Y3JpcHRpb25TdG10ICpzdG10LAogCURhdHVtCQl2YWx1ZXNbTmF0dHNfcGdfc3Vic2NyaXB0aW9u XTsKIAlPaWQJCQlvd25lciA9IEdldFVzZXJJZCgpOwogCUhlYXBUdXBsZQl0dXA7CisJT2lkCQkJ c2VydmVyaWQ7CiAJY2hhcgkgICAqY29ubmluZm87CiAJY2hhcgkJb3JpZ2lubmFtZVtOQU1FREFU QUxFTl07CiAJTGlzdAkgICAqcHVibGljYXRpb25zOwpAQCAtNjM4LDE1ICs2NDIsNDAgQEAgQ3Jl YXRlU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlU3Vic2NyaXB0aW9uU3Rt dCAqc3RtdCwKIAlpZiAob3B0cy5zeW5jaHJvbm91c19jb21taXQgPT0gTlVMTCkKIAkJb3B0cy5z eW5jaHJvbm91c19jb21taXQgPSAib2ZmIjsKIAotCWNvbm5pbmZvID0gc3RtdC0+Y29ubmluZm87 Ci0JcHVibGljYXRpb25zID0gc3RtdC0+cHVibGljYXRpb247Ci0KIAkvKiBMb2FkIHRoZSBsaWJy YXJ5IHByb3ZpZGluZyB1cyBsaWJwcSBjYWxscy4gKi8KIAlsb2FkX2ZpbGUoImxpYnBxd2FscmVj ZWl2ZXIiLCBmYWxzZSk7CiAKKwlpZiAoc3RtdC0+c2VydmVybmFtZSkKKwl7CisJCUZvcmVpZ25T ZXJ2ZXIgKnNlcnZlcjsKKworCQlBc3NlcnQoIXN0bXQtPmNvbm5pbmZvKTsKKwkJY29ubmluZm8g PSBOVUxMOworCisJCXNlcnZlciA9IEdldEZvcmVpZ25TZXJ2ZXJCeU5hbWUoc3RtdC0+c2VydmVy bmFtZSwgZmFsc2UpOworCQlhY2xyZXN1bHQgPSBvYmplY3RfYWNsY2hlY2soRm9yZWlnblNlcnZl clJlbGF0aW9uSWQsIHNlcnZlci0+c2VydmVyaWQsIG93bmVyLCBBQ0xfVVNBR0UpOworCQlpZiAo YWNscmVzdWx0ICE9IEFDTENIRUNLX09LKQorCQkJYWNsY2hlY2tfZXJyb3IoYWNscmVzdWx0LCBP QkpFQ1RfRk9SRUlHTl9TRVJWRVIsIHNlcnZlci0+c2VydmVybmFtZSk7CisKKwkJLyogbWFrZSBz dXJlIGEgdXNlciBtYXBwaW5nIGV4aXN0cyAqLworCQlHZXRVc2VyTWFwcGluZyhvd25lciwgc2Vy dmVyLT5zZXJ2ZXJpZCk7CisKKwkJc2VydmVyaWQgPSBzZXJ2ZXItPnNlcnZlcmlkOworCQljb25u aW5mbyA9IEZvcmVpZ25TZXJ2ZXJDb25uZWN0aW9uU3RyaW5nKG93bmVyLCBzZXJ2ZXJpZCk7CisJ fQorCWVsc2UKKwl7CisJCUFzc2VydChzdG10LT5jb25uaW5mbyk7CisKKwkJc2VydmVyaWQgPSBJ bnZhbGlkT2lkOworCQljb25uaW5mbyA9IHN0bXQtPmNvbm5pbmZvOworCX0KKwogCS8qIENoZWNr IHRoZSBjb25uZWN0aW9uIGluZm8gc3RyaW5nLiAqLwogCXdhbHJjdl9jaGVja19jb25uaW5mbyhj b25uaW5mbywgb3B0cy5wYXNzd29yZHJlcXVpcmVkICYmICFzdXBlcnVzZXIoKSk7CiAKKwlwdWJs aWNhdGlvbnMgPSBzdG10LT5wdWJsaWNhdGlvbjsKKwogCS8qIEV2ZXJ5dGhpbmcgb2ssIGZvcm0g YSBuZXcgdHVwbGUuICovCiAJbWVtc2V0KHZhbHVlcywgMCwgc2l6ZW9mKHZhbHVlcykpOwogCW1l bXNldChudWxscywgZmFsc2UsIHNpemVvZihudWxscykpOwpAQCAtNjcwLDggKzY5OSwxMiBAQCBD cmVhdGVTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25T dG10ICpzdG10LAogCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJwYXNzd29yZHJlcXVp cmVkIC0gMV0gPSBCb29sR2V0RGF0dW0ob3B0cy5wYXNzd29yZHJlcXVpcmVkKTsKIAl2YWx1ZXNb QW51bV9wZ19zdWJzY3JpcHRpb25fc3VicnVuYXNvd25lciAtIDFdID0gQm9vbEdldERhdHVtKG9w dHMucnVuYXNvd25lcik7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmZhaWxvdmVy IC0gMV0gPSBCb29sR2V0RGF0dW0ob3B0cy5mYWlsb3Zlcik7Ci0JdmFsdWVzW0FudW1fcGdfc3Vi c2NyaXB0aW9uX3N1YmNvbm5pbmZvIC0gMV0gPQotCQlDU3RyaW5nR2V0VGV4dERhdHVtKGNvbm5p bmZvKTsKKwl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vic2VydmVyIC0gMV0gPSBzZXJ2 ZXJpZDsKKwlpZiAoIU9pZElzVmFsaWQoc2VydmVyaWQpKQorCQl2YWx1ZXNbQW51bV9wZ19zdWJz Y3JpcHRpb25fc3ViY29ubmluZm8gLSAxXSA9CisJCQlDU3RyaW5nR2V0VGV4dERhdHVtKGNvbm5p bmZvKTsKKwllbHNlCisJCW51bGxzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmNvbm5pbmZvIC0g MV0gPSB0cnVlOwogCWlmIChvcHRzLnNsb3RfbmFtZSkKIAkJdmFsdWVzW0FudW1fcGdfc3Vic2Ny aXB0aW9uX3N1YnNsb3RuYW1lIC0gMV0gPQogCQkJRGlyZWN0RnVuY3Rpb25DYWxsMShuYW1laW4s IENTdHJpbmdHZXREYXR1bShvcHRzLnNsb3RfbmFtZSkpOwpAQCAtNjkyLDYgKzcyNSwxOCBAQCBD cmVhdGVTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25T dG10ICpzdG10LAogCiAJcmVjb3JkRGVwZW5kZW5jeU9uT3duZXIoU3Vic2NyaXB0aW9uUmVsYXRp b25JZCwgc3ViaWQsIG93bmVyKTsKIAorCU9iamVjdEFkZHJlc3NTZXQobXlzZWxmLCBTdWJzY3Jp cHRpb25SZWxhdGlvbklkLCBzdWJpZCk7CisKKwlpZiAoc3RtdC0+c2VydmVybmFtZSkKKwl7CisJ CU9iamVjdEFkZHJlc3MgcmVmZXJlbmNlZDsKKworCQlBc3NlcnQoT2lkSXNWYWxpZChzZXJ2ZXJp ZCkpOworCisJCU9iamVjdEFkZHJlc3NTZXQocmVmZXJlbmNlZCwgRm9yZWlnblNlcnZlclJlbGF0 aW9uSWQsIHNlcnZlcmlkKTsKKwkJcmVjb3JkRGVwZW5kZW5jeU9uKCZteXNlbGYsICZyZWZlcmVu Y2VkLCBERVBFTkRFTkNZX05PUk1BTCk7CisJfQorCiAJUmVwbGljYXRpb25PcmlnaW5OYW1lRm9y TG9naWNhbFJlcChzdWJpZCwgSW52YWxpZE9pZCwgb3JpZ2lubmFtZSwgc2l6ZW9mKG9yaWdpbm5h bWUpKTsKIAlyZXBsb3JpZ2luX2NyZWF0ZShvcmlnaW5uYW1lKTsKIApAQCAtODA5LDggKzg1NCw2 IEBAIENyZWF0ZVN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1YnNjcmlw dGlvblN0bXQgKnN0bXQsCiAJaWYgKG9wdHMuZW5hYmxlZCkKIAkJQXBwbHlMYXVuY2hlcldha2V1 cEF0Q29tbWl0KCk7CiAKLQlPYmplY3RBZGRyZXNzU2V0KG15c2VsZiwgU3Vic2NyaXB0aW9uUmVs YXRpb25JZCwgc3ViaWQpOwotCiAJSW52b2tlT2JqZWN0UG9zdENyZWF0ZUhvb2soU3Vic2NyaXB0 aW9uUmVsYXRpb25JZCwgc3ViaWQsIDApOwogCiAJcmV0dXJuIG15c2VsZjsKQEAgLTExMzUsNyAr MTE3OCwxNCBAQCBBbHRlclN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyU3Vi c2NyaXB0aW9uU3RtdCAqc3RtdCwKIAkJYWNsY2hlY2tfZXJyb3IoQUNMQ0hFQ0tfTk9UX09XTkVS LCBPQkpFQ1RfU1VCU0NSSVBUSU9OLAogCQkJCQkgICBzdG10LT5zdWJuYW1lKTsKIAotCXN1YiA9 IEdldFN1YnNjcmlwdGlvbihzdWJpZCwgZmFsc2UpOworCS8qCisJICogU2tpcCBBQ0wgY2hlY2tz IG9uIHRoZSBzdWJzY3JpcHRpb24ncyBmb3JlaWduIHNlcnZlciwgaWYgYW55LiBJZgorCSAqIGNo YW5naW5nIHRoZSBzZXJ2ZXIgKG9yIHJlcGxhY2luZyBpdCB3aXRoIGEgcmF3IGNvbm5lY3Rpb24p LCB0aGVuIHRoZQorCSAqIG9sZCBvbmUgd2lsbCBiZSByZW1vdmVkIGFueXdheS4gSWYgY2hhbmdp bmcgc29tZXRoaW5nIHVucmVsYXRlZCwKKwkgKiB0aGVyZSdzIG5vIG5lZWQgdG8gZG8gYW4gYWRk aXRpb25hbCBBQ0wgY2hlY2sgaGVyZTsgdGhhdCB3aWxsIGJlIGRvbmUKKwkgKiBieSB0aGUgc3Vi c2NyaXB0aW9uIHdvcmtlciBhbnl3YXkuCisJICovCisJc3ViID0gR2V0U3Vic2NyaXB0aW9uKHN1 YmlkLCBmYWxzZSwgZmFsc2UpOwogCiAJLyoKIAkgKiBEb24ndCBhbGxvdyBub24tc3VwZXJ1c2Vy IG1vZGlmaWNhdGlvbiBvZiBhIHN1YnNjcmlwdGlvbiB3aXRoCkBAIC0xMTU1LDYgKzEyMDUsOCBA QCBBbHRlclN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyU3Vic2NyaXB0aW9u U3RtdCAqc3RtdCwKIAltZW1zZXQobnVsbHMsIGZhbHNlLCBzaXplb2YobnVsbHMpKTsKIAltZW1z ZXQocmVwbGFjZXMsIGZhbHNlLCBzaXplb2YocmVwbGFjZXMpKTsKIAorCU9iamVjdEFkZHJlc3NT ZXQobXlzZWxmLCBTdWJzY3JpcHRpb25SZWxhdGlvbklkLCBzdWJpZCk7CisKIAlzd2l0Y2ggKHN0 bXQtPmtpbmQpCiAJewogCQljYXNlIEFMVEVSX1NVQlNDUklQVElPTl9PUFRJT05TOgpAQCAtMTM1 OCw3ICsxNDEwLDc5IEBAIEFsdGVyU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0 ZXJTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCQkJCWJyZWFrOwogCQkJfQogCisJCWNhc2UgQUxU RVJfU1VCU0NSSVBUSU9OX1NFUlZFUjoKKwkJCXsKKwkJCQlGb3JlaWduU2VydmVyICpuZXdfc2Vy dmVyOworCQkJCU9iamVjdEFkZHJlc3MgcmVmZXJlbmNlZDsKKwkJCQlBY2xSZXN1bHQJYWNscmVz dWx0OworCQkJCWNoYXIJICAgKmNvbm5pbmZvOworCisJCQkJLyoKKwkJCQkgKiBSZW1vdmUgd2hh dCB3YXMgdGhlcmUgYmVmb3JlLCBlaXRoZXIgYW5vdGhlciBmb3JlaWduIHNlcnZlcgorCQkJCSAq IG9yIGEgY29ubmVjdGlvbiBzdHJpbmcuCisJCQkJICovCisJCQkJaWYgKGZvcm0tPnN1YnNlcnZl cikKKwkJCQl7CisJCQkJCWRlbGV0ZURlcGVuZGVuY3lSZWNvcmRzRm9yU3BlY2lmaWMoU3Vic2Ny aXB0aW9uUmVsYXRpb25JZCwgZm9ybS0+b2lkLAorCQkJCQkJCQkJCQkJCSAgIERFUEVOREVOQ1lf Tk9STUFMLAorCQkJCQkJCQkJCQkJCSAgIEZvcmVpZ25TZXJ2ZXJSZWxhdGlvbklkLCBmb3JtLT5z dWJzZXJ2ZXIpOworCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQludWxsc1tBbnVtX3BnX3N1 YnNjcmlwdGlvbl9zdWJjb25uaW5mbyAtIDFdID0gdHJ1ZTsKKwkJCQkJcmVwbGFjZXNbQW51bV9w Z19zdWJzY3JpcHRpb25fc3ViY29ubmluZm8gLSAxXSA9IHRydWU7CisJCQkJfQorCisJCQkJLyoK KwkJCQkgKiBGaW5kIHRoZSBuZXcgc2VydmVyIGFuZCB1c2VyIG1hcHBpbmcuIENoZWNrIEFDTCBv ZiBzZXJ2ZXIKKwkJCQkgKiBiYXNlZCBvbiBjdXJyZW50IHVzZXIgSUQsIGJ1dCBmaW5kIHRoZSB1 c2VyIG1hcHBpbmcgYmFzZWQKKwkJCQkgKiBvbiB0aGUgc3Vic2NyaXB0aW9uIG93bmVyLgorCQkJ CSAqLworCQkJCW5ld19zZXJ2ZXIgPSBHZXRGb3JlaWduU2VydmVyQnlOYW1lKHN0bXQtPnNlcnZl cm5hbWUsIGZhbHNlKTsKKwkJCQlhY2xyZXN1bHQgPSBvYmplY3RfYWNsY2hlY2soRm9yZWlnblNl cnZlclJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCW5ld19zZXJ2ZXItPnNlcnZlcmlkLAorCQkJCQkJ CQkJCQlmb3JtLT5zdWJvd25lciwgQUNMX1VTQUdFKTsKKwkJCQlpZiAoYWNscmVzdWx0ICE9IEFD TENIRUNLX09LKQorCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCShlcnJjb2RlKEVSUkNPREVf SU5TVUZGSUNJRU5UX1BSSVZJTEVHRSksCisJCQkJCQkJIGVycm1zZygic3Vic2NyaXB0aW9uIG93 bmVyIFwiJXNcIiBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24gb24gZm9yZWlnbiBzZXJ2ZXIgXCIl c1wiIiwKKwkJCQkJCQkJCUdldFVzZXJOYW1lRnJvbUlkKGZvcm0tPnN1Ym93bmVyLCBmYWxzZSks CisJCQkJCQkJCQlGb3JlaWduU2VydmVyTmFtZShuZXdfc2VydmVyLT5zZXJ2ZXJpZCkpKSk7CisK KwkJCQkvKiBtYWtlIHN1cmUgYSB1c2VyIG1hcHBpbmcgZXhpc3RzICovCisJCQkJR2V0VXNlck1h cHBpbmcoZm9ybS0+c3Vib3duZXIsIG5ld19zZXJ2ZXItPnNlcnZlcmlkKTsKKworCQkJCWNvbm5p bmZvID0gRm9yZWlnblNlcnZlckNvbm5lY3Rpb25TdHJpbmcoZm9ybS0+c3Vib3duZXIsCisJCQkJ CQkJCQkJCQkJCSBuZXdfc2VydmVyLT5zZXJ2ZXJpZCk7CisKKwkJCQkvKiBMb2FkIHRoZSBsaWJy YXJ5IHByb3ZpZGluZyB1cyBsaWJwcSBjYWxscy4gKi8KKwkJCQlsb2FkX2ZpbGUoImxpYnBxd2Fs cmVjZWl2ZXIiLCBmYWxzZSk7CisJCQkJLyogQ2hlY2sgdGhlIGNvbm5lY3Rpb24gaW5mbyBzdHJp bmcuICovCisJCQkJd2FscmN2X2NoZWNrX2Nvbm5pbmZvKGNvbm5pbmZvLAorCQkJCQkJCQkJICBz dWItPnBhc3N3b3JkcmVxdWlyZWQgJiYgIXN1Yi0+b3duZXJzdXBlcnVzZXIpOworCisJCQkJdmFs dWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnNlcnZlciAtIDFdID0gbmV3X3NlcnZlci0+c2Vy dmVyaWQ7CisJCQkJcmVwbGFjZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vic2VydmVyIC0gMV0g PSB0cnVlOworCisJCQkJT2JqZWN0QWRkcmVzc1NldChyZWZlcmVuY2VkLCBGb3JlaWduU2VydmVy UmVsYXRpb25JZCwgbmV3X3NlcnZlci0+c2VydmVyaWQpOworCQkJCXJlY29yZERlcGVuZGVuY3lP bigmbXlzZWxmLCAmcmVmZXJlbmNlZCwgREVQRU5ERU5DWV9OT1JNQUwpOworCisJCQkJdXBkYXRl X3R1cGxlID0gdHJ1ZTsKKwkJCX0KKwkJCWJyZWFrOworCiAJCWNhc2UgQUxURVJfU1VCU0NSSVBU SU9OX0NPTk5FQ1RJT046CisJCQkvKiByZW1vdmUgcmVmZXJlbmNlIHRvIGZvcmVpZ24gc2VydmVy IGFuZCBkZXBlbmRlbmNpZXMsIGlmIHByZXNlbnQgKi8KKwkJCWlmIChmb3JtLT5zdWJzZXJ2ZXIp CisJCQl7CisJCQkJZGVsZXRlRGVwZW5kZW5jeVJlY29yZHNGb3JTcGVjaWZpYyhTdWJzY3JpcHRp b25SZWxhdGlvbklkLCBmb3JtLT5vaWQsCisJCQkJCQkJCQkJCQkgICBERVBFTkRFTkNZX05PUk1B TCwKKwkJCQkJCQkJCQkJCSAgIEZvcmVpZ25TZXJ2ZXJSZWxhdGlvbklkLCBmb3JtLT5zdWJzZXJ2 ZXIpOworCisJCQkJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnNlcnZlciAtIDFdID0g SW52YWxpZE9pZDsKKwkJCQlyZXBsYWNlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJzZXJ2ZXIg LSAxXSA9IHRydWU7CisJCQl9CisKIAkJCS8qIExvYWQgdGhlIGxpYnJhcnkgcHJvdmlkaW5nIHVz IGxpYnBxIGNhbGxzLiAqLwogCQkJbG9hZF9maWxlKCJsaWJwcXdhbHJlY2VpdmVyIiwgZmFsc2Up OwogCQkJLyogQ2hlY2sgdGhlIGNvbm5lY3Rpb24gaW5mbyBzdHJpbmcuICovCkBAIC0xNjA5LDgg KzE3MzMsNiBAQCBBbHRlclN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyU3Vi c2NyaXB0aW9uU3RtdCAqc3RtdCwKIAogCXRhYmxlX2Nsb3NlKHJlbCwgUm93RXhjbHVzaXZlTG9j ayk7CiAKLQlPYmplY3RBZGRyZXNzU2V0KG15c2VsZiwgU3Vic2NyaXB0aW9uUmVsYXRpb25JZCwg c3ViaWQpOwotCiAJSW52b2tlT2JqZWN0UG9zdEFsdGVySG9vayhTdWJzY3JpcHRpb25SZWxhdGlv bklkLCBzdWJpZCwgMCk7CiAKIAkvKiBXYWtlIHVwIHJlbGF0ZWQgcmVwbGljYXRpb24gd29ya2Vy cyB0byBoYW5kbGUgdGhpcyBjaGFuZ2UgcXVpY2tseS4gKi8KQEAgLTE2OTUsOSArMTgxNywyOCBA QCBEcm9wU3Vic2NyaXB0aW9uKERyb3BTdWJzY3JpcHRpb25TdG10ICpzdG10LCBib29sIGlzVG9w TGV2ZWwpCiAJc3VibmFtZSA9IHBzdHJkdXAoTmFtZVN0cigqRGF0dW1HZXROYW1lKGRhdHVtKSkp OwogCiAJLyogR2V0IGNvbm5pbmZvICovCi0JZGF0dW0gPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxs KFNVQlNDUklQVElPTk9JRCwgdHVwLAotCQkJCQkJCQkgICBBbnVtX3BnX3N1YnNjcmlwdGlvbl9z dWJjb25uaW5mbyk7Ci0JY29ubmluZm8gPSBUZXh0RGF0dW1HZXRDU3RyaW5nKGRhdHVtKTsKKwlp ZiAoT2lkSXNWYWxpZChmb3JtLT5zdWJzZXJ2ZXIpKQorCXsKKwkJQWNsUmVzdWx0CWFjbHJlc3Vs dDsKKworCQlhY2xyZXN1bHQgPSBvYmplY3RfYWNsY2hlY2soRm9yZWlnblNlcnZlclJlbGF0aW9u SWQsIGZvcm0tPnN1YnNlcnZlciwKKwkJCQkJCQkJCWZvcm0tPnN1Ym93bmVyLCBBQ0xfVVNBR0Up OworCQlpZiAoYWNscmVzdWx0ICE9IEFDTENIRUNLX09LKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKKwkJCQkJIGVycm1z Zygic3Vic2NyaXB0aW9uIG93bmVyIFwiJXNcIiBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24gb24g Zm9yZWlnbiBzZXJ2ZXIgXCIlc1wiIiwKKwkJCQkJCQlHZXRVc2VyTmFtZUZyb21JZChmb3JtLT5z dWJvd25lciwgZmFsc2UpLAorCQkJCQkJCUZvcmVpZ25TZXJ2ZXJOYW1lKGZvcm0tPnN1YnNlcnZl cikpKSk7CisKKwkJY29ubmluZm8gPSBGb3JlaWduU2VydmVyQ29ubmVjdGlvblN0cmluZyhmb3Jt LT5zdWJvd25lciwKKwkJCQkJCQkJCQkJCSBmb3JtLT5zdWJzZXJ2ZXIpOworCX0KKwllbHNlCisJ eworCQlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0ck5vdE51bGwoU1VCU0NSSVBUSU9OT0lELCB0dXAs CisJCQkJCQkJCQkgICBBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJjb25uaW5mbyk7CisJCWNvbm5p bmZvID0gVGV4dERhdHVtR2V0Q1N0cmluZyhkYXR1bSk7CisJfQogCiAJLyogR2V0IHNsb3RuYW1l ICovCiAJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoU1VCU0NSSVBUSU9OT0lELCB0dXAsCkBAIC0x Nzk2LDYgKzE5MzcsNyBAQCBEcm9wU3Vic2NyaXB0aW9uKERyb3BTdWJzY3JpcHRpb25TdG10ICpz dG10LCBib29sIGlzVG9wTGV2ZWwpCiAJfQogCiAJLyogQ2xlYW4gdXAgZGVwZW5kZW5jaWVzICov CisJZGVsZXRlRGVwZW5kZW5jeVJlY29yZHNGb3IoU3Vic2NyaXB0aW9uUmVsYXRpb25JZCwgc3Vi aWQsIGZhbHNlKTsKIAlkZWxldGVTaGFyZWREZXBlbmRlbmN5UmVjb3Jkc0ZvcihTdWJzY3JpcHRp b25SZWxhdGlvbklkLCBzdWJpZCwgMCk7CiAKIAkvKiBSZW1vdmUgYW55IGFzc29jaWF0ZWQgcmVs YXRpb24gc3luY2hyb25pemF0aW9uIHN0YXRlcy4gKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2ZvcmVpZ24vZm9yZWlnbi5jIGIvc3JjL2JhY2tlbmQvZm9yZWlnbi9mb3JlaWduLmMKaW5kZXgg NGMwNmUxZmYxYzQuLjk1OGU0MWY4N2E0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9mb3JlaWdu L2ZvcmVpZ24uYworKysgYi9zcmMvYmFja2VuZC9mb3JlaWduL2ZvcmVpZ24uYwpAQCAtNzEsNiAr NzEsNyBAQCBHZXRGb3JlaWduRGF0YVdyYXBwZXJFeHRlbmRlZChPaWQgZmR3aWQsIGJpdHMxNiBm bGFncykKIAlmZHctPmZkd25hbWUgPSBwc3RyZHVwKE5hbWVTdHIoZmR3Zm9ybS0+ZmR3bmFtZSkp OwogCWZkdy0+ZmR3aGFuZGxlciA9IGZkd2Zvcm0tPmZkd2hhbmRsZXI7CiAJZmR3LT5mZHd2YWxp ZGF0b3IgPSBmZHdmb3JtLT5mZHd2YWxpZGF0b3I7CisJZmR3LT5mZHdjb25uZWN0aW9uID0gZmR3 Zm9ybS0+ZmR3Y29ubmVjdGlvbjsKIAogCS8qIEV4dHJhY3QgdGhlIGZkd29wdGlvbnMgKi8KIAlk YXR1bSA9IFN5c0NhY2hlR2V0QXR0cihGT1JFSUdOREFUQVdSQVBQRVJPSUQsCkBAIC0xNzUsNiAr MTc2LDMxIEBAIEdldEZvcmVpZ25TZXJ2ZXJFeHRlbmRlZChPaWQgc2VydmVyaWQsIGJpdHMxNiBm bGFncykKIH0KIAogCisvKgorICogRm9yZWlnblNlcnZlck5hbWUgLSBnZXQgbmFtZSBvZiBmb3Jl aWduIHNlcnZlci4KKyAqLworY2hhciAqCitGb3JlaWduU2VydmVyTmFtZShPaWQgc2VydmVyaWQp Cit7CisJRm9ybV9wZ19mb3JlaWduX3NlcnZlciBzZXJ2ZXJmb3JtOworCWNoYXIJICAgKnNlcnZl cm5hbWU7CisJSGVhcFR1cGxlCXRwOworCisJdHAgPSBTZWFyY2hTeXNDYWNoZTEoRk9SRUlHTlNF UlZFUk9JRCwgT2JqZWN0SWRHZXREYXR1bShzZXJ2ZXJpZCkpOworCisJaWYgKCFIZWFwVHVwbGVJ c1ZhbGlkKHRwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGZvcmVp Z24gc2VydmVyICV1Iiwgc2VydmVyaWQpOworCisJc2VydmVyZm9ybSA9IChGb3JtX3BnX2ZvcmVp Z25fc2VydmVyKSBHRVRTVFJVQ1QodHApOworCisJc2VydmVybmFtZSA9IHBzdHJkdXAoTmFtZVN0 cihzZXJ2ZXJmb3JtLT5zcnZuYW1lKSk7CisKKwlSZWxlYXNlU3lzQ2FjaGUodHApOworCisJcmV0 dXJuIHNlcnZlcm5hbWU7Cit9CisKKwogLyoKICAqIEdldEZvcmVpZ25TZXJ2ZXJCeU5hbWUgLSBs b29rIHVwIHRoZSBmb3JlaWduIHNlcnZlciBkZWZpbml0aW9uIGJ5IG5hbWUuCiAgKi8KQEAgLTE5 MCw2ICsyMTYsNDYgQEAgR2V0Rm9yZWlnblNlcnZlckJ5TmFtZShjb25zdCBjaGFyICpzcnZuYW1l LCBib29sIG1pc3Npbmdfb2spCiB9CiAKIAorLyoKKyAqIFJldHJpZXZlIGNvbm5lY3Rpb24gc3Ry aW5nIGZyb20gc2VydmVyJ3MgRkRXLgorICovCitjaGFyICoKK0ZvcmVpZ25TZXJ2ZXJDb25uZWN0 aW9uU3RyaW5nKE9pZCB1c2VyaWQsIE9pZCBzZXJ2ZXJpZCkKK3sKKwlzdGF0aWMgTWVtb3J5Q29u dGV4dCB0ZW1wQ29udGV4dCA9IE5VTEw7CisJTWVtb3J5Q29udGV4dCBvbGRjeHQ7CisJRm9yZWln blNlcnZlciAqc2VydmVyOworCUZvcmVpZ25EYXRhV3JhcHBlciAqZmR3OworCURhdHVtCQljb25u ZWN0aW9uX2RhdHVtOworCXRleHQJICAgKmNvbm5lY3Rpb25fdGV4dDsKKwljaGFyCSAgICpyZXN1 bHQ7CisKKwlpZiAodGVtcENvbnRleHQgPT0gTlVMTCkKKwl7CisJCXRlbXBDb250ZXh0ID0gQWxs b2NTZXRDb250ZXh0Q3JlYXRlKEN1cnJlbnRNZW1vcnlDb250ZXh0LAorCQkJCQkJCQkJCQkidGVt cCBjb250ZXh0IiwKKwkJCQkJCQkJCQkJQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CisJfQorCisJ b2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHRlbXBDb250ZXh0KTsKKworCXNlcnZlciA9 IEdldEZvcmVpZ25TZXJ2ZXIoc2VydmVyaWQpOworCWZkdyA9IEdldEZvcmVpZ25EYXRhV3JhcHBl cihzZXJ2ZXItPmZkd2lkKTsKKwljb25uZWN0aW9uX2RhdHVtID0gT2lkRnVuY3Rpb25DYWxsMihm ZHctPmZkd2Nvbm5lY3Rpb24sCisJCQkJCQkJCQkJT2JqZWN0SWRHZXREYXR1bSh1c2VyaWQpLAor CQkJCQkJCQkJCU9iamVjdElkR2V0RGF0dW0oc2VydmVyaWQpKTsKKwljb25uZWN0aW9uX3RleHQg PSBEYXR1bUdldFRleHRQUChjb25uZWN0aW9uX2RhdHVtKTsKKworCU1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhvbGRjeHQpOworCisJcmVzdWx0ID0gdGV4dF90b19jc3RyaW5nKGNvbm5lY3Rpb25fdGV4 dCk7CisKKwlNZW1vcnlDb250ZXh0UmVzZXQodGVtcENvbnRleHQpOworCisJcmV0dXJuIHJlc3Vs dDsKK30KKworCiAvKgogICogR2V0VXNlck1hcHBpbmcgLSBsb29rIHVwIHRoZSB1c2VyIG1hcHBp bmcuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggNjdlYjk2Mzk2YWYuLmNkZDhlZmRmOTU5IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9n cmFtLnkKQEAgLTU0MDIsNiArNTQwMiw4IEBAIGZkd19vcHRpb246CiAJCQl8IE5PIEhBTkRMRVIJ CQkJCQl7ICQkID0gbWFrZURlZkVsZW0oImhhbmRsZXIiLCBOVUxMLCBAMSk7IH0KIAkJCXwgVkFM SURBVE9SIGhhbmRsZXJfbmFtZQkJCXsgJCQgPSBtYWtlRGVmRWxlbSgidmFsaWRhdG9yIiwgKE5v ZGUgKikgJDIsIEAxKTsgfQogCQkJfCBOTyBWQUxJREFUT1IJCQkJCQl7ICQkID0gbWFrZURlZkVs ZW0oInZhbGlkYXRvciIsIE5VTEwsIEAxKTsgfQorCQkJfCBDT05ORUNUSU9OIGhhbmRsZXJfbmFt ZQkJCXsgJCQgPSBtYWtlRGVmRWxlbSgiY29ubmVjdGlvbiIsIChOb2RlICopICQyLCBAMSk7IH0K KwkJCXwgTk8gQ09OTkVDVElPTgkJCQkJCXsgJCQgPSBtYWtlRGVmRWxlbSgiY29ubmVjdGlvbiIs IE5VTEwsIEAxKTsgfQogCQk7CiAKIGZkd19vcHRpb25zOgpAQCAtMTA3NjYsNiArMTA3NjgsMTYg QEAgQ3JlYXRlU3Vic2NyaXB0aW9uU3RtdDoKIAkJCQkJbi0+b3B0aW9ucyA9ICQ4OwogCQkJCQkk JCA9IChOb2RlICopIG47CiAJCQkJfQorCQkJfCBDUkVBVEUgU1VCU0NSSVBUSU9OIG5hbWUgU0VS VkVSIG5hbWUgUFVCTElDQVRJT04gbmFtZV9saXN0IG9wdF9kZWZpbml0aW9uCisJCQkJeworCQkJ CQlDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpuID0KKwkJCQkJCW1ha2VOb2RlKENyZWF0ZVN1YnNj cmlwdGlvblN0bXQpOworCQkJCQluLT5zdWJuYW1lID0gJDM7CisJCQkJCW4tPnNlcnZlcm5hbWUg PSAkNTsKKwkJCQkJbi0+cHVibGljYXRpb24gPSAkNzsKKwkJCQkJbi0+b3B0aW9ucyA9ICQ4Owor CQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQogCQk7CiAKIC8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgpAQCAtMTA3OTUsNiArMTA4MDcsMTYgQEAgQWx0ZXJTdWJzY3JpcHRpb25TdG10OgogCQkJCQlu LT5jb25uaW5mbyA9ICQ1OwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJfQorCQkJfCBBTFRF UiBTVUJTQ1JJUFRJT04gbmFtZSBTRVJWRVIgbmFtZQorCQkJCXsKKwkJCQkJQWx0ZXJTdWJzY3Jp cHRpb25TdG10ICpuID0KKwkJCQkJCW1ha2VOb2RlKEFsdGVyU3Vic2NyaXB0aW9uU3RtdCk7CisK KwkJCQkJbi0+a2luZCA9IEFMVEVSX1NVQlNDUklQVElPTl9TRVJWRVI7CisJCQkJCW4tPnN1Ym5h bWUgPSAkMzsKKwkJCQkJbi0+c2VydmVybmFtZSA9ICQ1OworCQkJCQkkJCA9IChOb2RlICopIG47 CisJCQkJfQogCQkJfCBBTFRFUiBTVUJTQ1JJUFRJT04gbmFtZSBSRUZSRVNIIFBVQkxJQ0FUSU9O IG9wdF9kZWZpbml0aW9uCiAJCQkJewogCQkJCQlBbHRlclN1YnNjcmlwdGlvblN0bXQgKm4gPQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggOWU1MGM4ODBmODEu LmFjMTFmZjNiODQwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMK QEAgLTM5NzQsNyArMzk3NCw3IEBAIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCkKIAkv KiBFbnN1cmUgYWxsb2NhdGlvbnMgaW4gcGVybWFuZW50IGNvbnRleHQuICovCiAJb2xkY3R4ID0g TWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CiAKLQluZXdzdWIgPSBHZXRTdWJz Y3JpcHRpb24oTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgdHJ1ZSk7CisJbmV3c3ViID0gR2V0 U3Vic2NyaXB0aW9uKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHRydWUsIHRydWUpOwogCiAJ LyoKIAkgKiBFeGl0IGlmIHRoZSBzdWJzY3JpcHRpb24gd2FzIHJlbW92ZWQuIFRoaXMgbm9ybWFs bHkgc2hvdWxkIG5vdCBoYXBwZW4KQEAgLTQwODAsNyArNDA4MCw5IEBAIG1heWJlX3JlcmVhZF9z dWJzY3JpcHRpb24odm9pZCkKIH0KIAogLyoKLSAqIENhbGxiYWNrIGZyb20gc3Vic2NyaXB0aW9u IHN5c2NhY2hlIGludmFsaWRhdGlvbi4KKyAqIENhbGxiYWNrIGZyb20gc3Vic2NyaXB0aW9uIHN5 c2NhY2hlIGludmFsaWRhdGlvbi4gQWxzbyBuZWVkZWQgZm9yIHNlcnZlciBvcgorICogdXNlciBt YXBwaW5nIGludmFsaWRhdGlvbiwgd2hpY2ggY2FuIGNoYW5nZSB0aGUgY29ubmVjdGlvbiBpbmZv cm1hdGlvbiBmb3IKKyAqIHN1YnNjcmlwdGlvbnMgdGhhdCBjb25uZWN0IHVzaW5nIGEgc2VydmVy IG9iamVjdC4KICAqLwogc3RhdGljIHZvaWQKIHN1YnNjcmlwdGlvbl9jaGFuZ2VfY2IoRGF0dW0g YXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKQEAgLTQ2NjIsNyArNDY2NCw3IEBA IEluaXRpYWxpemVMb2dSZXBXb3JrZXIodm9pZCkKIAlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgp OwogCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOwogCi0JTXlT dWJzY3JpcHRpb24gPSBHZXRTdWJzY3JpcHRpb24oTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwg dHJ1ZSk7CisJTXlTdWJzY3JpcHRpb24gPSBHZXRTdWJzY3JpcHRpb24oTXlMb2dpY2FsUmVwV29y a2VyLT5zdWJpZCwgdHJ1ZSwgdHJ1ZSk7CiAJaWYgKCFNeVN1YnNjcmlwdGlvbikKIAl7CiAJCWVy ZXBvcnQoTE9HLApAQCAtNDY5OSw2ICs0NzAxLDE0IEBAIEluaXRpYWxpemVMb2dSZXBXb3JrZXIo dm9pZCkKIAlDYWNoZVJlZ2lzdGVyU3lzY2FjaGVDYWxsYmFjayhTVUJTQ1JJUFRJT05PSUQsCiAJ CQkJCQkJCSAgc3Vic2NyaXB0aW9uX2NoYW5nZV9jYiwKIAkJCQkJCQkJICAoRGF0dW0pIDApOwor CS8qIEtlZXAgdXMgaW5mb3JtZWQgYWJvdXQgc3Vic2NyaXB0aW9uIGNoYW5nZXMuICovCisJQ2Fj aGVSZWdpc3RlclN5c2NhY2hlQ2FsbGJhY2soRk9SRUlHTlNFUlZFUk9JRCwKKwkJCQkJCQkJICBz dWJzY3JpcHRpb25fY2hhbmdlX2NiLAorCQkJCQkJCQkgIChEYXR1bSkgMCk7CisJLyogS2VlcCB1 cyBpbmZvcm1lZCBhYm91dCBzdWJzY3JpcHRpb24gY2hhbmdlcy4gKi8KKwlDYWNoZVJlZ2lzdGVy U3lzY2FjaGVDYWxsYmFjayhVU0VSTUFQUElOR09JRCwKKwkJCQkJCQkJICBzdWJzY3JpcHRpb25f Y2hhbmdlX2NiLAorCQkJCQkJCQkgIChEYXR1bSkgMCk7CiAKIAlDYWNoZVJlZ2lzdGVyU3lzY2Fj aGVDYWxsYmFjayhBVVRIT0lELAogCQkJCQkJCQkgIHN1YnNjcmlwdGlvbl9jaGFuZ2VfY2IsCmRp ZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3Bn X2R1bXAuYwppbmRleCAxOTk2OWU0MDBmYy4uN2Y1MDhlNzg2ODkgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAt NDg1OSw2ICs0ODU5LDcgQEAgZ2V0U3Vic2NyaXB0aW9ucyhBcmNoaXZlICpmb3V0KQogCWludAkJ CWlfc3ViZGlzYWJsZW9uZXJyOwogCWludAkJCWlfc3VicGFzc3dvcmRyZXF1aXJlZDsKIAlpbnQJ CQlpX3N1YnJ1bmFzb3duZXI7CisJaW50CQkJaV9zdWJzZXJ2ZXJuYW1lOwogCWludAkJCWlfc3Vi Y29ubmluZm87CiAJaW50CQkJaV9zdWJzbG90bmFtZTsKIAlpbnQJCQlpX3N1YnN5bmNjb21taXQ7 CkBAIC00OTM5LDE2ICs0OTQwLDI5IEBAIGdldFN1YnNjcmlwdGlvbnMoQXJjaGl2ZSAqZm91dCkK IAogCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDE3MDAwMCkKIAkJYXBwZW5kUFFFeHBCdWZm ZXJTdHIocXVlcnksCi0JCQkJCQkJICIgcy5zdWJmYWlsb3ZlclxuIik7CisJCQkJCQkJICIgcy5z dWJmYWlsb3ZlcixcbiIpOwogCWVsc2UKIAkJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksCi0JCQkJ CQkgICIgZmFsc2UgQVMgc3ViZmFpbG92ZXJcbiIpOworCQkJCQkJICAiIGZhbHNlIEFTIHN1YmZh aWxvdmVyLFxuIik7CisKKwlpZiAoZG9wdC0+YmluYXJ5X3VwZ3JhZGUgJiYgZm91dC0+cmVtb3Rl VmVyc2lvbiA+PSAxODAwMDApCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIGZzLnNy dm5hbWUgQVMgc3Vic2VydmVybmFtZSxcbiIKKwkJCQkJCQkgIiBvLnJlbW90ZV9sc24gQVMgc3Vi b3JpZ2lucmVtb3RlbHNuLFxuIgorCQkJCQkJCSAiIHMuc3ViZW5hYmxlZCxcbiIKKwkJCQkJCQkg IiBzLnN1YmZhaWxvdmVyXG4iKTsKKwllbHNlCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5 LCAiIE5VTEwgQVMgc3Vic2VydmVybmFtZSxcbiIKKwkJCQkJCQkgIiBOVUxMIEFTIHN1Ym9yaWdp bnJlbW90ZWxzbixcbiIKKwkJCQkJCQkgIiBmYWxzZSBBUyBzdWJlbmFibGVkLFxuIgorCQkJCQkJ CSAiIGZhbHNlIEFTIHN1YmZhaWxvdmVyXG4iKTsKIAogCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1 ZXJ5LAogCQkJCQkJICJGUk9NIHBnX3N1YnNjcmlwdGlvbiBzXG4iKTsKIAogCWlmIChkb3B0LT5i aW5hcnlfdXBncmFkZSAmJiBmb3V0LT5yZW1vdGVWZXJzaW9uID49IDE3MDAwMCkKIAkJYXBwZW5k UFFFeHBCdWZmZXJTdHIocXVlcnksCisJCQkJCQkJICJMRUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19m b3JlaWduX3NlcnZlciBmcyBcbiIKKwkJCQkJCQkgIiAgICBPTiBmcy5vaWQgPSBzLnN1YnNlcnZl ciBcbiIKIAkJCQkJCQkgIkxFRlQgSk9JTiBwZ19jYXRhbG9nLnBnX3JlcGxpY2F0aW9uX29yaWdp bl9zdGF0dXMgbyBcbiIKIAkJCQkJCQkgIiAgICBPTiBvLmV4dGVybmFsX2lkID0gJ3BnXycgfHwg cy5vaWQ6OnRleHQgXG4iKTsKIApAQCAtNDk3Niw2ICs0OTkwLDcgQEAgZ2V0U3Vic2NyaXB0aW9u cyhBcmNoaXZlICpmb3V0KQogCWlfc3VicGFzc3dvcmRyZXF1aXJlZCA9IFBRZm51bWJlcihyZXMs ICJzdWJwYXNzd29yZHJlcXVpcmVkIik7CiAJaV9zdWJydW5hc293bmVyID0gUFFmbnVtYmVyKHJl cywgInN1YnJ1bmFzb3duZXIiKTsKIAlpX3N1YmZhaWxvdmVyID0gUFFmbnVtYmVyKHJlcywgInN1 YmZhaWxvdmVyIik7CisJaV9zdWJzZXJ2ZXJuYW1lID0gUFFmbnVtYmVyKHJlcywgInN1YnNlcnZl cm5hbWUiKTsKIAlpX3N1YmNvbm5pbmZvID0gUFFmbnVtYmVyKHJlcywgInN1YmNvbm5pbmZvIik7 CiAJaV9zdWJzbG90bmFtZSA9IFBRZm51bWJlcihyZXMsICJzdWJzbG90bmFtZSIpOwogCWlfc3Vi c3luY2NvbW1pdCA9IFBRZm51bWJlcihyZXMsICJzdWJzeW5jY29tbWl0Iik7CkBAIC00OTk3LDYg KzUwMTIsMTAgQEAgZ2V0U3Vic2NyaXB0aW9ucyhBcmNoaXZlICpmb3V0KQogCiAJCXN1YmluZm9b aV0uc3ViZW5hYmxlZCA9CiAJCQkoc3RyY21wKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3N1YmVuYWJs ZWQpLCAidCIpID09IDApOworCQlpZiAoUFFnZXRpc251bGwocmVzLCBpLCBpX3N1YnNlcnZlcm5h bWUpKQorCQkJc3ViaW5mb1tpXS5zdWJzZXJ2ZXJuYW1lID0gTlVMTDsKKwkJZWxzZQorCQkJc3Vi aW5mb1tpXS5zdWJzZXJ2ZXJuYW1lID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3N1 YnNlcnZlcm5hbWUpKTsKIAkJc3ViaW5mb1tpXS5zdWJiaW5hcnkgPQogCQkJKHN0cmNtcChQUWdl dHZhbHVlKHJlcywgaSwgaV9zdWJiaW5hcnkpLCAidCIpID09IDApOwogCQlzdWJpbmZvW2ldLnN1 YnN0cmVhbSA9ICooUFFnZXR2YWx1ZShyZXMsIGksIGlfc3Vic3RyZWFtKSk7CkBAIC01MjE5LDkg KzUyMzgsMTcgQEAgZHVtcFN1YnNjcmlwdGlvbihBcmNoaXZlICpmb3V0LCBjb25zdCBTdWJzY3Jp cHRpb25JbmZvICpzdWJpbmZvKQogCWFwcGVuZFBRRXhwQnVmZmVyKGRlbHEsICJEUk9QIFNVQlND UklQVElPTiAlcztcbiIsCiAJCQkJCSAgcXN1Ym5hbWUpOwogCi0JYXBwZW5kUFFFeHBCdWZmZXIo cXVlcnksICJDUkVBVEUgU1VCU0NSSVBUSU9OICVzIENPTk5FQ1RJT04gIiwKKwlhcHBlbmRQUUV4 cEJ1ZmZlcihxdWVyeSwgIkNSRUFURSBTVUJTQ1JJUFRJT04gJXMgIiwKIAkJCQkJICBxc3VibmFt ZSk7Ci0JYXBwZW5kU3RyaW5nTGl0ZXJhbEFIKHF1ZXJ5LCBzdWJpbmZvLT5zdWJjb25uaW5mbywg Zm91dCk7CisJaWYgKHN1YmluZm8tPnN1YnNlcnZlcm5hbWUpCisJeworCQlhcHBlbmRQUUV4cEJ1 ZmZlcihxdWVyeSwgIlNFUlZFUiAlcyIsIGZtdElkKHN1YmluZm8tPnN1YnNlcnZlcm5hbWUpKTsK Kwl9CisJZWxzZQorCXsKKwkJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICJDT05ORUNUSU9OICIp OworCQlhcHBlbmRTdHJpbmdMaXRlcmFsQUgocXVlcnksIHN1YmluZm8tPnN1YmNvbm5pbmZvLCBm b3V0KTsKKwl9CiAKIAkvKiBCdWlsZCBsaXN0IG9mIHF1b3RlZCBwdWJsaWNhdGlvbnMgYW5kIGFw cGVuZCB0aGVtIHRvIHF1ZXJ5LiAqLwogCWlmICghcGFyc2VQR0FycmF5KHN1YmluZm8tPnN1YnB1 YmxpY2F0aW9ucywgJnB1Ym5hbWVzLCAmbnB1Ym5hbWVzKSkKZGlmZiAtLWdpdCBhL3NyYy9iaW4v cGdfZHVtcC9wZ19kdW1wLmggYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCmluZGV4IDljNWRk ZDIwY2Y3Li44Y2FjNDI4NzU4MCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAu aAorKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCkBAIC02ODAsNiArNjgwLDcgQEAgdHlw ZWRlZiBzdHJ1Y3QgX1N1YnNjcmlwdGlvbkluZm8KIAlib29sCQlzdWJwYXNzd29yZHJlcXVpcmVk OwogCWJvb2wJCXN1YnJ1bmFzb3duZXI7CiAJYm9vbAkJc3ViZmFpbG92ZXI7CisJY2hhcgkgICAq c3Vic2VydmVybmFtZTsKIAljaGFyCSAgICpzdWJjb25uaW5mbzsKIAljaGFyCSAgICpzdWJzbG90 bmFtZTsKIAljaGFyCSAgICpzdWJzeW5jY29tbWl0OwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3Fs L3RhYi1jb21wbGV0ZS5pbi5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCmluZGV4 IDMxYzc3MjE0YjRmLi5kZGE1ODE4MDg0MiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1j b21wbGV0ZS5pbi5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwpAQCAtMzY3 NSw3ICszNjc1LDcgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5faWQsCiAKIC8q IENSRUFURSBTVUJTQ1JJUFRJT04gKi8KIAllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiU1VC U0NSSVBUSU9OIiwgTWF0Y2hBbnkpKQotCQlDT01QTEVURV9XSVRIKCJDT05ORUNUSU9OIik7CisJ CUNPTVBMRVRFX1dJVEgoIlNFUlZFUiIsICJDT05ORUNUSU9OIik7CiAJZWxzZSBpZiAoTWF0Y2hl cygiQ1JFQVRFIiwgIlNVQlNDUklQVElPTiIsIE1hdGNoQW55LCAiQ09OTkVDVElPTiIsIE1hdGNo QW55KSkKIAkJQ09NUExFVEVfV0lUSCgiUFVCTElDQVRJT04iKTsKIAllbHNlIGlmIChNYXRjaGVz KCJDUkVBVEUiLCAiU1VCU0NSSVBUSU9OIiwgTWF0Y2hBbnksICJDT05ORUNUSU9OIiwKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfZm9yZWlnbl9kYXRhX3dyYXBwZXIuaCBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfZm9yZWlnbl9kYXRhX3dyYXBwZXIuaAppbmRleCAwZDg3NTlk M2ZkMy4uNzAwZDZlZWQ2NWUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfZm9y ZWlnbl9kYXRhX3dyYXBwZXIuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2ZvcmVpZ25f ZGF0YV93cmFwcGVyLmgKQEAgLTM2LDYgKzM2LDkgQEAgQ0FUQUxPRyhwZ19mb3JlaWduX2RhdGFf d3JhcHBlciwyMzI4LEZvcmVpZ25EYXRhV3JhcHBlclJlbGF0aW9uSWQpCiAJT2lkCQkJZmR3dmFs aWRhdG9yIEJLSV9MT09LVVBfT1BUKHBnX3Byb2MpOwkvKiBvcHRpb24gdmFsaWRhdGlvbgogCQkJ CQkJCQkJCQkJCQkgKiBmdW5jdGlvbiwgb3IgMCBpZgogCQkJCQkJCQkJCQkJCQkgKiBub25lICov CisJT2lkCQkJZmR3Y29ubmVjdGlvbiBCS0lfTE9PS1VQX09QVChwZ19wcm9jKTsJLyogY29ubmVj dGlvbiBzdHJpbmcKKwkJCQkJCQkJCQkJCQkJICogZnVuY3Rpb24sIG9yIDAgaWYKKwkJCQkJCQkJ CQkJCQkJICogbm9uZSAqLwogCiAjaWZkZWYgQ0FUQUxPR19WQVJMRU4JCQkvKiB2YXJpYWJsZS1s ZW5ndGggZmllbGRzIHN0YXJ0IGhlcmUgKi8KIAlhY2xpdGVtCQlmZHdhY2xbMV07CQkvKiBhY2Nl c3MgcGVybWlzc2lvbnMgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vi c2NyaXB0aW9uLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCmluZGV4 IGJlYWZmNjU3OGE2Li45ZjhhZTgwMjZlZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19zdWJzY3JpcHRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlw dGlvbi5oCkBAIC03OCw5ICs3OCwxMSBAQCBDQVRBTE9HKHBnX3N1YnNjcmlwdGlvbiw2MTAwLFN1 YnNjcmlwdGlvblJlbGF0aW9uSWQpIEJLSV9TSEFSRURfUkVMQVRJT04gQktJX1JPVwogCQkJCQkJ CQkgKiBzbG90cykgaW4gdGhlIHVwc3RyZWFtIGRhdGFiYXNlIGFyZSBlbmFibGVkCiAJCQkJCQkJ CSAqIHRvIGJlIHN5bmNocm9uaXplZCB0byB0aGUgc3RhbmRieXMuICovCiAKKwlPaWQJCQlzdWJz ZXJ2ZXI7CQkvKiBTZXQgaWYgY29ubmVjdGluZyB3aXRoIHNlcnZlciAqLworCiAjaWZkZWYgQ0FU QUxPR19WQVJMRU4JCQkvKiB2YXJpYWJsZS1sZW5ndGggZmllbGRzIHN0YXJ0IGhlcmUgKi8KIAkv KiBDb25uZWN0aW9uIHN0cmluZyB0byB0aGUgcHVibGlzaGVyICovCi0JdGV4dAkJc3ViY29ubmlu Zm8gQktJX0ZPUkNFX05PVF9OVUxMOworCXRleHQJCXN1YmNvbm5pbmZvOwkvKiBTZXQgaWYgY29u bmVjdGluZyB3aXRoIGNvbm5lY3Rpb24gc3RyaW5nICovCiAKIAkvKiBTbG90IG5hbWUgb24gcHVi bGlzaGVyICovCiAJTmFtZURhdGEJc3Vic2xvdG5hbWUgQktJX0ZPUkNFX05VTEw7CkBAIC0xNzgs NyArMTgwLDggQEAgdHlwZWRlZiBzdHJ1Y3QgU3Vic2NyaXB0aW9uCiAKICNlbmRpZgkJCQkJCQkv KiBFWFBPU0VfVE9fQ0xJRU5UX0NPREUgKi8KIAotZXh0ZXJuIFN1YnNjcmlwdGlvbiAqR2V0U3Vi c2NyaXB0aW9uKE9pZCBzdWJpZCwgYm9vbCBtaXNzaW5nX29rKTsKK2V4dGVybiBTdWJzY3JpcHRp b24gKkdldFN1YnNjcmlwdGlvbihPaWQgc3ViaWQsIGJvb2wgbWlzc2luZ19vaywKKwkJCQkJCQkJ CSBib29sIGFjbGNoZWNrKTsKIGV4dGVybiB2b2lkIEZyZWVTdWJzY3JpcHRpb24oU3Vic2NyaXB0 aW9uICpzdWIpOwogZXh0ZXJuIHZvaWQgRGlzYWJsZVN1YnNjcmlwdGlvbihPaWQgc3ViaWQpOwog CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9mb3JlaWduL2ZvcmVpZ24uaCBiL3NyYy9pbmNsdWRl L2ZvcmVpZ24vZm9yZWlnbi5oCmluZGV4IDgyYjgxNTMxMDBmLi5iNDAyNWU3ZjFlNiAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvZm9yZWlnbi9mb3JlaWduLmgKKysrIGIvc3JjL2luY2x1ZGUvZm9y ZWlnbi9mb3JlaWduLmgKQEAgLTI4LDYgKzI4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgRm9yZWlnbkRh dGFXcmFwcGVyCiAJY2hhcgkgICAqZmR3bmFtZTsJCS8qIE5hbWUgb2YgdGhlIEZEVyAqLwogCU9p ZAkJCWZkd2hhbmRsZXI7CQkvKiBPaWQgb2YgaGFuZGxlciBmdW5jdGlvbiwgb3IgMCAqLwogCU9p ZAkJCWZkd3ZhbGlkYXRvcjsJLyogT2lkIG9mIHZhbGlkYXRvciBmdW5jdGlvbiwgb3IgMCAqLwor CU9pZAkJCWZkd2Nvbm5lY3Rpb247CS8qIE9pZCBvZiBjb25uZWN0aW9uIHN0cmluZyBmdW5jdGlv biwgb3IgMCAqLwogCUxpc3QJICAgKm9wdGlvbnM7CQkvKiBmZHdvcHRpb25zIGFzIERlZkVsZW0g bGlzdCAqLwogfSBGb3JlaWduRGF0YVdyYXBwZXI7CiAKQEAgLTY1LDEwICs2NiwxMiBAQCB0eXBl ZGVmIHN0cnVjdCBGb3JlaWduVGFibGUKIAogCiBleHRlcm4gRm9yZWlnblNlcnZlciAqR2V0Rm9y ZWlnblNlcnZlcihPaWQgc2VydmVyaWQpOworZXh0ZXJuIGNoYXIgKkZvcmVpZ25TZXJ2ZXJOYW1l KE9pZCBzZXJ2ZXJpZCk7CiBleHRlcm4gRm9yZWlnblNlcnZlciAqR2V0Rm9yZWlnblNlcnZlckV4 dGVuZGVkKE9pZCBzZXJ2ZXJpZCwKIAkJCQkJCQkJCQkJICAgYml0czE2IGZsYWdzKTsKIGV4dGVy biBGb3JlaWduU2VydmVyICpHZXRGb3JlaWduU2VydmVyQnlOYW1lKGNvbnN0IGNoYXIgKnNydm5h bWUsCiAJCQkJCQkJCQkJCSBib29sIG1pc3Npbmdfb2spOworZXh0ZXJuIGNoYXIgKkZvcmVpZ25T ZXJ2ZXJDb25uZWN0aW9uU3RyaW5nKE9pZCB1c2VyaWQsIE9pZCBzZXJ2ZXJpZCk7CiBleHRlcm4g VXNlck1hcHBpbmcgKkdldFVzZXJNYXBwaW5nKE9pZCB1c2VyaWQsIE9pZCBzZXJ2ZXJpZCk7CiBl eHRlcm4gRm9yZWlnbkRhdGFXcmFwcGVyICpHZXRGb3JlaWduRGF0YVdyYXBwZXIoT2lkIGZkd2lk KTsKIGV4dGVybiBGb3JlaWduRGF0YVdyYXBwZXIgKkdldEZvcmVpZ25EYXRhV3JhcHBlckV4dGVu ZGVkKE9pZCBmZHdpZCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMu aCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCAwZjk0NjI0OTNlMy4uZjlj ZDBiMmZkMmQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysg Yi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTQyMjMsNiArNDIyMyw3IEBAIHR5 cGVkZWYgc3RydWN0IENyZWF0ZVN1YnNjcmlwdGlvblN0bXQKIHsKIAlOb2RlVGFnCQl0eXBlOwog CWNoYXIJICAgKnN1Ym5hbWU7CQkvKiBOYW1lIG9mIHRoZSBzdWJzY3JpcHRpb24gKi8KKwljaGFy CSAgICpzZXJ2ZXJuYW1lOwkJLyogU2VydmVyIG5hbWUgb2YgcHVibGlzaGVyICovCiAJY2hhcgkg ICAqY29ubmluZm87CQkvKiBDb25uZWN0aW9uIHN0cmluZyB0byBwdWJsaXNoZXIgKi8KIAlMaXN0 CSAgICpwdWJsaWNhdGlvbjsJLyogT25lIG9yIG1vcmUgcHVibGljYXRpb24gdG8gc3Vic2NyaWJl IHRvICovCiAJTGlzdAkgICAqb3B0aW9uczsJCS8qIExpc3Qgb2YgRGVmRWxlbSBub2RlcyAqLwpA QCAtNDIzMSw2ICs0MjMyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ3JlYXRlU3Vic2NyaXB0aW9uU3Rt dAogdHlwZWRlZiBlbnVtIEFsdGVyU3Vic2NyaXB0aW9uVHlwZQogewogCUFMVEVSX1NVQlNDUklQ VElPTl9PUFRJT05TLAorCUFMVEVSX1NVQlNDUklQVElPTl9TRVJWRVIsCiAJQUxURVJfU1VCU0NS SVBUSU9OX0NPTk5FQ1RJT04sCiAJQUxURVJfU1VCU0NSSVBUSU9OX1NFVF9QVUJMSUNBVElPTiwK IAlBTFRFUl9TVUJTQ1JJUFRJT05fQUREX1BVQkxJQ0FUSU9OLApAQCAtNDI0NSw2ICs0MjQ3LDcg QEAgdHlwZWRlZiBzdHJ1Y3QgQWx0ZXJTdWJzY3JpcHRpb25TdG10CiAJTm9kZVRhZwkJdHlwZTsK IAlBbHRlclN1YnNjcmlwdGlvblR5cGUga2luZDsgLyogQUxURVJfU1VCU0NSSVBUSU9OX09QVElP TlMsIGV0YyAqLwogCWNoYXIJICAgKnN1Ym5hbWU7CQkvKiBOYW1lIG9mIHRoZSBzdWJzY3JpcHRp b24gKi8KKwljaGFyCSAgICpzZXJ2ZXJuYW1lOwkJLyogU2VydmVyIG5hbWUgb2YgcHVibGlzaGVy ICovCiAJY2hhcgkgICAqY29ubmluZm87CQkvKiBDb25uZWN0aW9uIHN0cmluZyB0byBwdWJsaXNo ZXIgKi8KIAlMaXN0CSAgICpwdWJsaWNhdGlvbjsJLyogT25lIG9yIG1vcmUgcHVibGljYXRpb24g dG8gc3Vic2NyaWJlIHRvICovCiAJTGlzdAkgICAqb3B0aW9uczsJCS8qIExpc3Qgb2YgRGVmRWxl bSBub2RlcyAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vaWRqb2lu cy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29pZGpvaW5zLm91dAppbmRleCAyMTVl Yjg5OWJlMy4uNTljNjQxMjZiZGMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvb2lkam9pbnMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb2lkam9pbnMu b3V0CkBAIC0yMjQsNiArMjI0LDcgQEAgTk9USUNFOiAgY2hlY2tpbmcgcGdfZXh0ZW5zaW9uIHtl eHRjb25maWd9ID0+IHBnX2NsYXNzIHtvaWR9CiBOT1RJQ0U6ICBjaGVja2luZyBwZ19mb3JlaWdu X2RhdGFfd3JhcHBlciB7ZmR3b3duZXJ9ID0+IHBnX2F1dGhpZCB7b2lkfQogTk9USUNFOiAgY2hl Y2tpbmcgcGdfZm9yZWlnbl9kYXRhX3dyYXBwZXIge2Zkd2hhbmRsZXJ9ID0+IHBnX3Byb2Mge29p ZH0KIE5PVElDRTogIGNoZWNraW5nIHBnX2ZvcmVpZ25fZGF0YV93cmFwcGVyIHtmZHd2YWxpZGF0 b3J9ID0+IHBnX3Byb2Mge29pZH0KK05PVElDRTogIGNoZWNraW5nIHBnX2ZvcmVpZ25fZGF0YV93 cmFwcGVyIHtmZHdjb25uZWN0aW9ufSA9PiBwZ19wcm9jIHtvaWR9CiBOT1RJQ0U6ICBjaGVja2lu ZyBwZ19mb3JlaWduX3NlcnZlciB7c3J2b3duZXJ9ID0+IHBnX2F1dGhpZCB7b2lkfQogTk9USUNF OiAgY2hlY2tpbmcgcGdfZm9yZWlnbl9zZXJ2ZXIge3NydmZkd30gPT4gcGdfZm9yZWlnbl9kYXRh X3dyYXBwZXIge29pZH0KIE5PVElDRTogIGNoZWNraW5nIHBnX3VzZXJfbWFwcGluZyB7dW11c2Vy fSA9PiBwZ19hdXRoaWQge29pZH0KLS0gCjIuMzQuMQoK --=-1xmdLGdZrnswlrggzhd6--