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 1riVTA-00HXEr-Ne for pgsql-hackers@arkaria.postgresql.org; Fri, 08 Mar 2024 08:20:45 +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 1riVT8-00B2F4-3v for pgsql-hackers@arkaria.postgresql.org; Fri, 08 Mar 2024 08:20:42 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1riVT7-00B2Eu-Gs for pgsql-hackers@lists.postgresql.org; Fri, 08 Mar 2024 08:20:42 +0000 Received: from mail-pj1-x102f.google.com ([2607:f8b0:4864:20::102f]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1riVT3-003PAS-64 for pgsql-hackers@postgresql.org; Fri, 08 Mar 2024 08:20:41 +0000 Received: by mail-pj1-x102f.google.com with SMTP id 98e67ed59e1d1-29b7caa88c6so1276773a91.0 for ; Fri, 08 Mar 2024 00:20:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20230601.gappssmtp.com; s=20230601; t=1709886035; x=1710490835; 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=HyQ537rK2DD7emtt8sRLSwh1AJpP2FJyPaMbYhdFn3E=; b=wDlFKBskvOnWlkYrqderLQJ0g53BEy7yN5+3d+dRLUP4tY5kf+cTG9ojUVRWXtRT+G 6G2JNADlQNxpmdRUTk/9bKdTxvx5jGcbs8EplBxISpuleTg2B9lMB4Jz8Aj07grGSOAj lu4nDm6UApRGt1BRpAJZwOhHCx1InJf7TY0pJtbd/jy+V9WCBaKcOQwtw03iqU6NkJIA /BCOYZAgypXC+oowKcdmggP33V/b1r/Dkwr9qL1Nk8aKgspHMCjnKRXofMnr2cOOyBrE vPZBFdhWjFifUWq0hgPUNGXTAFHADez54ZpdCMUMhQ5QqzHas2sbKGMquJjXGS9AvR5Y 1Hug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709886035; x=1710490835; 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=HyQ537rK2DD7emtt8sRLSwh1AJpP2FJyPaMbYhdFn3E=; b=vhfhN98NIORnXND9BXmUAA9/ZSJhECK+FDkgE9photD9SO0oqrI9YCkd+zrXCdU+U1 rY8ZwufmOtBCbz5SHBbz9zyS6Fbgvqr4U98IWgZOKg6bNWAZH6HmHIZ200KtCSI/mHcM y6ab54OsWHlkPQnGG/ZibS+mSzOAfGhnqwO5aRufCpuQHokvhvy7gA7yEugRA+MPUSAs uCNaQ4C+EO6zLqXO10ReIQXK2q1ssOE8uNhVQqiIJ2Zb3Zry7IwaBKcLnYi3SNJ8Zr22 eAewKcMB9zELWsr72/nEFasNyjxcspIEdnPN/HffJr8LLlU7FkpScPCJwr9BgnYHxcs6 5XDw== X-Forwarded-Encrypted: i=1; AJvYcCWn/jT8h16wop20iBZHbMnCQYIdJzENfOEWnQ8sFgfhm6Lf0UFSvZS55L2TbPk2DL3VHSeX2yxo81311GgZkNCuyb1ekOOXQce3nz3v X-Gm-Message-State: AOJu0Yygdc4yfhNDnNoNnVH8TOhfNdlKp8QJBhOql0Zv8uDl506PTnjj kHksP+Zibm79zt3xfMjkaaqp+RKZtebV2OpjkL/gTQm2GFkom+RuiE/lGSxDoA== X-Google-Smtp-Source: AGHT+IG4yH1M6zaTfUXQSHCCsgwQ1R5dRGOdikwk6fhpwWW4YCpx4bhgf3T9EAGgAE+0OqhYBfwoAw== X-Received: by 2002:a17:90a:dc0d:b0:29b:a292:6c44 with SMTP id i13-20020a17090adc0d00b0029ba2926c44mr2824313pjv.10.1709886034872; Fri, 08 Mar 2024 00:20:34 -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 w8-20020a17090aea0800b0029bb8ebdc23sm249180pjy.37.2024.03.08.00.20.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Mar 2024 00:20:34 -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: Fri, 08 Mar 2024 00:20:32 -0800 In-Reply-To: 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> Content-Type: multipart/mixed; boundary="=-e5bKRoMNqeTtYHgxlLvA" 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 --=-e5bKRoMNqeTtYHgxlLvA Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, 2024-01-31 at 11:10 +0530, Ashutosh Bapat wrote: > > I like the idea -- it further decouples the logic from the core > > server. > > I suspect it will make postgres_fdw the primary way (though not the > > only possible way) to use this feature. There would be little need > > to > > create a new builtin FDW to make this work. >=20 > That's what I see as well. I am glad that we are on the same page. Implemented in v11, attached. Is this what you had in mind? It leaves a lot of the work to postgres_fdw and it's almost unusable without postgres_fdw. That's not a bad thing, but it makes the core functionality a bit harder to test standalone. I can work on the core tests some more. The postgres_fdw tests passed without modification, though, and offer a simple example of how to use it. Regards, Jeff Davis --=-e5bKRoMNqeTtYHgxlLvA Content-Disposition: attachment; filename="v11-0001-CREATE-SUSBCRIPTION-.-SERVER.patch" Content-Type: text/x-patch; name="v11-0001-CREATE-SUSBCRIPTION-.-SERVER.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA4OGZhMTMzM2FjZTRkMTVkNzI1MzRkMjBkMmNjY2IzNzc0ODI3N2YyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBU dWUsIDIgSmFuIDIwMjQgMTM6NDI6NDggLTA4MDAKU3ViamVjdDogW1BBVENIIHYxMV0gQ1JFQVRF IFNVU0JDUklQVElPTiAuLi4gU0VSVkVSLgoKQWxsb3cgc3BlY2lmeWluZyBhIGZvcmVpZ24gc2Vy dmVyIGZvciBDUkVBVEUgU1VCU0NSSVBUSU9OLCByYXRoZXIgdGhhbgphIHJhdyBjb25uZWN0aW9u IHN0cmluZyB3aXRoIENPTk5FQ1RJT04uCgpVc2luZyBhIGZvcmVpZ24gc2VydmVyIGFzIGEgbGF5 ZXIgb2YgaW5kaXJlY3Rpb24gaW1wcm92ZXMgbWFuYWdlbWVudApvZiBtdWx0aXBsZSBzdWJzY3Jp cHRpb25zIHRvIHRoZSBzYW1lIHNlcnZlci4gSXQgYWxzbyBwcm92aWRlcwppbnRlZ3JhdGlvbiB3 aXRoIHVzZXIgbWFwcGluZ3MgaW4gY2FzZSBkaWZmZXJlbnQgc3Vic2NyaXB0aW9ucyBoYXZlCmRp ZmZlcmVudCBvd25lcnMgb3IgYSBzdWJzY3JpcHRpb24gY2hhbmdlcyBvd25lcnMuCgpEaXNjdXNz aW9uOiBodHRwczovL3Bvc3Rnci5lcy9tLzYxODMxNzkwYTBhOTM3MDM4Zjc4Y2UwOWY4ZGQ0Y2Vm N2RlNzQ1NmEuY2FtZWxAai1kYXZpcy5jb20KUmV2aWV3ZWQtYnk6IEFzaHV0b3NoIEJhcGF0Ci0t LQogY29udHJpYi9wb3N0Z3Jlc19mZHcvTWFrZWZpbGUgICAgICAgICAgICAgICAgIHwgICA0ICst CiBjb250cmliL3Bvc3RncmVzX2Zkdy9jb25uZWN0aW9uLmMgICAgICAgICAgICAgfCAgNzQgKysr KysrKysKIC4uLi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dCAgICB8ICAg OCArCiBjb250cmliL3Bvc3RncmVzX2Zkdy9tZXNvbi5idWlsZCAgICAgICAgICAgICAgfCAgIDYg KwogLi4uL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHctLTEuMS0tMS4yLnNxbCAgIHwgIDExICsr CiBjb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuY29udHJvbCAgICAgfCAgIDIgKy0K IGNvbnRyaWIvcG9zdGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3FsICAgICB8ICAgNyArCiBj b250cmliL3Bvc3RncmVzX2Zkdy90LzAxMF9zdWJzY3JpcHRpb24ucGwgICAgfCAgNzEgKysrKysr KysKIGRvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfc3Vic2NyaXB0aW9uLnNnbWwgICAgICB8ICAxOCAr LQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwgICAgIHwgIDExICst CiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jICAgICAgICAgfCAgMzggKysr LQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZm9yZWlnbmNtZHMuYyAgICAgICAgICAgIHwgIDU3ICsr KysrLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jICAgICAgIHwgMTY3 ICsrKysrKysrKysrKysrKystLQogc3JjL2JhY2tlbmQvZm9yZWlnbi9mb3JlaWduLmMgICAgICAg ICAgICAgICAgIHwgIDQyICsrKysrCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAg ICAgICAgICAgICAgfCAgMjIgKysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dv cmtlci5jICAgICAgfCAgMTYgKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAg ICAgICAgICAgICB8ICAyNyArKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggICAgICAgICAg ICAgICAgICAgICB8ICAgMSArCiBzcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMgICAgICAgICAg ICAgICAgICAgfCAgIDIgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfZm9yZWlnbl9kYXRhX3dy YXBwZXIuaCB8ICAgMyArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oICAg ICAgICAgfCAgIDcgKy0KIHNyYy9pbmNsdWRlL2ZvcmVpZ24vZm9yZWlnbi5oICAgICAgICAgICAg ICAgICB8ICAgMyArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICAgICAgICAg ICAgfCAgIDMgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vaWRqb2lucy5vdXQgICAgICAg IHwgICAxICsKIDI0IGZpbGVzIGNoYW5nZWQsIDU2MyBpbnNlcnRpb25zKCspLCAzOCBkZWxldGlv bnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBjb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19m ZHctLTEuMS0tMS4yLnNxbAogY3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIvcG9zdGdyZXNfZmR3 L3QvMDEwX3N1YnNjcmlwdGlvbi5wbAoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3 L01ha2VmaWxlIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvTWFrZWZpbGUKaW5kZXggYzFiMGNhZDQ1 My4uOTk1YTMwYzI5NyAxMDA2NDQKLS0tIGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvTWFrZWZpbGUK KysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvTWFrZWZpbGUKQEAgLTE0LDEwICsxNCwxMiBAQCBQ R19DUFBGTEFHUyA9IC1JJChsaWJwcV9zcmNkaXIpCiBTSExJQl9MSU5LX0lOVEVSTkFMID0gJChs aWJwcSkKIAogRVhURU5TSU9OID0gcG9zdGdyZXNfZmR3Ci1EQVRBID0gcG9zdGdyZXNfZmR3LS0x LjAuc3FsIHBvc3RncmVzX2Zkdy0tMS4wLS0xLjEuc3FsCitEQVRBID0gcG9zdGdyZXNfZmR3LS0x LjAuc3FsIHBvc3RncmVzX2Zkdy0tMS4wLS0xLjEuc3FsIHBvc3RncmVzX2Zkdy0tMS4xLS0xLjIu c3FsCiAKIFJFR1JFU1MgPSBwb3N0Z3Jlc19mZHcKIAorVEFQX1RFU1RTID0gMQorCiBpZmRlZiBV U0VfUEdYUwogUEdfQ09ORklHID0gcGdfY29uZmlnCiBQR1hTIDo9ICQoc2hlbGwgJChQR19DT05G SUcpIC0tcGd4cykKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2Nvbm5lY3Rpb24u YyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2Nvbm5lY3Rpb24uYwppbmRleCA0OTMxZWJmNTkxLi5h MDExZTZkZjVmIDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9jb25uZWN0aW9uLmMK KysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvY29ubmVjdGlvbi5jCkBAIC0xMTMsNiArMTEzLDcg QEAgc3RhdGljIHVpbnQzMiBwZ2Zkd193ZV9nZXRfcmVzdWx0ID0gMDsKIFBHX0ZVTkNUSU9OX0lO Rk9fVjEocG9zdGdyZXNfZmR3X2dldF9jb25uZWN0aW9ucyk7CiBQR19GVU5DVElPTl9JTkZPX1Yx KHBvc3RncmVzX2Zkd19kaXNjb25uZWN0KTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEocG9zdGdyZXNf ZmR3X2Rpc2Nvbm5lY3RfYWxsKTsKK1BHX0ZVTkNUSU9OX0lORk9fVjEocG9zdGdyZXNfZmR3X2Nv bm5lY3Rpb24pOwogCiAvKiBwcm90b3R5cGVzIG9mIHByaXZhdGUgZnVuY3Rpb25zICovCiBzdGF0 aWMgdm9pZCBtYWtlX25ld19jb25uZWN0aW9uKENvbm5DYWNoZUVudHJ5ICplbnRyeSwgVXNlck1h cHBpbmcgKnVzZXIpOwpAQCAtMTk3Miw2ICsxOTczLDc5IEBAIHBnZmR3X2ZpbmlzaF9hYm9ydF9j bGVhbnVwKExpc3QgKnBlbmRpbmdfZW50cmllcywgTGlzdCAqY2FuY2VsX3JlcXVlc3RlZCwKIAl9 CiB9CiAKKy8qCisgKiBWYWx1ZXMgaW4gY29ubmVjdGlvbiBzdHJpbmdzIG11c3QgYmUgZW5jbG9z ZWQgaW4gc2luZ2xlIHF1b3Rlcy4gU2luZ2xlCisgKiBxdW90ZXMgYW5kIGJhY2tzbGFzaGVzIG11 c3QgYmUgZXNjYXBlZCB3aXRoIGJhY2tzbGFzaC4gTkI6IHRoZXNlIHJ1bGVzIGFyZQorICogZGlm ZmVyZW50IGZyb20gdGhlIHJ1bGVzIGZvciBlc2NhcGluZyBhIFNRTCBsaXRlcmFsLgorICovCitz dGF0aWMgdm9pZAorYXBwZW5kRXNjYXBlZFZhbHVlKFN0cmluZ0luZm8gc3RyLCBjb25zdCBjaGFy ICp2YWwpCit7CisJYXBwZW5kU3RyaW5nSW5mb0NoYXIoc3RyLCAnXCcnKTsKKwlmb3IgKGludCBp ID0gMDsgdmFsW2ldICE9ICdcMCc7IGkrKykKKwl7CisJCWlmICh2YWxbaV0gPT0gJ1xcJyB8fCB2 YWxbaV0gPT0gJ1wnJykKKwkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKHN0ciwgJ1xcJyk7CisJCWFw cGVuZFN0cmluZ0luZm9DaGFyKHN0ciwgdmFsW2ldKTsKKwl9CisJYXBwZW5kU3RyaW5nSW5mb0No YXIoc3RyLCAnXCcnKTsKK30KKworRGF0dW0KK3Bvc3RncmVzX2Zkd19jb25uZWN0aW9uKFBHX0ZV TkNUSU9OX0FSR1MpCit7CisJLyogVE9ETzogY29uc2lkZXIgbWVtb3J5IHVzYWdlICovCisJT2lk IHVzZXJpZCA9IFBHX0dFVEFSR19PSUQoMCk7CisJT2lkIHNlcnZlcmlkID0gUEdfR0VUQVJHX09J RCgxKTsKKwlGb3JlaWduU2VydmVyICpzZXJ2ZXIgPSBHZXRGb3JlaWduU2VydmVyKHNlcnZlcmlk KTsKKwlVc2VyTWFwcGluZyAqdXNlciA9IEdldFVzZXJNYXBwaW5nKHVzZXJpZCwgc2VydmVyaWQp OworCVN0cmluZ0luZm9EYXRhIHN0cjsKKwljb25zdCBjaGFyICoqa2V5d29yZHM7CisJY29uc3Qg Y2hhciAqKnZhbHVlczsKKwlpbnQJCQluOworCisJLyoKKwkgKiBDb25zdHJ1Y3QgY29ubmVjdGlv biBwYXJhbXMgZnJvbSBnZW5lcmljIG9wdGlvbnMgb2YgRm9yZWlnblNlcnZlcgorCSAqIGFuZCBV c2VyTWFwcGluZy4gIChTb21lIG9mIHRoZW0gbWlnaHQgbm90IGJlIGxpYnBxIG9wdGlvbnMsIGlu CisJICogd2hpY2ggY2FzZSB3ZSdsbCBqdXN0IHdhc3RlIGEgZmV3IGFycmF5IHNsb3RzLikgIEFk ZCA0IGV4dHJhIHNsb3RzCisJICogZm9yIGFwcGxpY2F0aW9uX25hbWUsIGZhbGxiYWNrX2FwcGxp Y2F0aW9uX25hbWUsIGNsaWVudF9lbmNvZGluZywKKwkgKiBlbmQgbWFya2VyLgorCSAqLworCW4g PSBsaXN0X2xlbmd0aChzZXJ2ZXItPm9wdGlvbnMpICsgbGlzdF9sZW5ndGgodXNlci0+b3B0aW9u cykgKyA0OworCWtleXdvcmRzID0gKGNvbnN0IGNoYXIgKiopIHBhbGxvYyhuICogc2l6ZW9mKGNo YXIgKikpOworCXZhbHVlcyA9IChjb25zdCBjaGFyICoqKSBwYWxsb2MobiAqIHNpemVvZihjaGFy ICopKTsKKworCW4gPSAwOworCW4gKz0gRXh0cmFjdENvbm5lY3Rpb25PcHRpb25zKHNlcnZlci0+ b3B0aW9ucywKKwkJCQkJCQkJICBrZXl3b3JkcyArIG4sIHZhbHVlcyArIG4pOworCW4gKz0gRXh0 cmFjdENvbm5lY3Rpb25PcHRpb25zKHVzZXItPm9wdGlvbnMsCisJCQkJCQkJCSAga2V5d29yZHMg KyBuLCB2YWx1ZXMgKyBuKTsKKworCS8qIFNldCBjbGllbnRfZW5jb2Rpbmcgc28gdGhhdCBsaWJw cSBjYW4gY29udmVydCBlbmNvZGluZyBwcm9wZXJseS4gKi8KKwlrZXl3b3Jkc1tuXSA9ICJjbGll bnRfZW5jb2RpbmciOworCXZhbHVlc1tuXSA9IEdldERhdGFiYXNlRW5jb2RpbmdOYW1lKCk7CisJ bisrOworCisJa2V5d29yZHNbbl0gPSB2YWx1ZXNbbl0gPSBOVUxMOworCisJLyogdmVyaWZ5IHRo ZSBzZXQgb2YgY29ubmVjdGlvbiBwYXJhbWV0ZXJzICovCisJY2hlY2tfY29ubl9wYXJhbXMoa2V5 d29yZHMsIHZhbHVlcywgdXNlcik7CisKKwlpbml0U3RyaW5nSW5mbygmc3RyKTsKKwlmb3IgKGlu dCBpID0gMDsgaSA8IG47IGkrKykKKwl7CisJCWNoYXIgKnNlcCA9ICIiOworCisJCWFwcGVuZFN0 cmluZ0luZm8oJnN0ciwgIiVzJXMgPSAiLCBzZXAsIGtleXdvcmRzW2ldKTsKKwkJYXBwZW5kRXNj YXBlZFZhbHVlKCZzdHIsIHZhbHVlc1tpXSk7CisJCXNlcCA9ICIgIjsKKwl9CisKKwlwZnJlZShr ZXl3b3Jkcyk7CisJcGZyZWUodmFsdWVzKTsKKwlQR19SRVRVUk5fVEVYVF9QKGNzdHJpbmdfdG9f dGV4dChzdHIuZGF0YSkpOworfQorCiAvKgogICogTGlzdCBhY3RpdmUgZm9yZWlnbiBzZXJ2ZXIg Y29ubmVjdGlvbnMuCiAgKgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0 ZWQvcG9zdGdyZXNfZmR3Lm91dCBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3Rn cmVzX2Zkdy5vdXQKaW5kZXggYzM1NWU4ZjNmNy4uNjE3ZTJjZjVkYyAxMDA2NDQKLS0tIGEvY29u dHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dAorKysgYi9jb250cmli L3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0CkBAIC0yNTYsNiArMjU2LDE0 IEBAIFNFTEVDVCBjMywgYzQgRlJPTSBmdDEgT1JERVIgQlkgYzMsIGMxIExJTUlUIDE7ICAtLSBz aG91bGQgd29yayBhZ2FpbgogQU5BTFlaRSBmdDE7CiBBTFRFUiBGT1JFSUdOIFRBQkxFIGZ0MiBP UFRJT05TICh1c2VfcmVtb3RlX2VzdGltYXRlICd0cnVlJyk7CiAtLSA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSB0 ZXN0IHN1YnNjcmlwdGlvbgorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ1JFQVRFIFNVQlNDUklQVElPTiByZWdy ZXNzX3BnZmR3X3N1YnNjcmlwdGlvbiBTRVJWRVIgdGVzdHNlcnZlcjEKKyAgUFVCTElDQVRJT04g cHViMSBXSVRIIChzbG90X25hbWUgPSBOT05FLCBjb25uZWN0ID0gZmFsc2UpOworV0FSTklORzog IHN1YnNjcmlwdGlvbiB3YXMgY3JlYXRlZCwgYnV0IGlzIG5vdCBjb25uZWN0ZWQKK0hJTlQ6ICBU byBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFudWFsbHkgY3JlYXRlIHRoZSByZXBs aWNhdGlvbiBzbG90LCBlbmFibGUgdGhlIHN1YnNjcmlwdGlvbiwgYW5kIHJlZnJlc2ggdGhlIHN1 YnNjcmlwdGlvbi4KK0RST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfcGdmZHdfc3Vic2NyaXB0aW9u OworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQogLS0gdGVzdCBlcnJvciBjYXNlIGZvciBjcmVhdGUgcHVibGljYXRp b24gb24gZm9yZWlnbiB0YWJsZQogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRl c3RwdWJfZnRibCBGT1IgVEFCTEUgZnQxOyAgLS0gc2hvdWxkIGZhaWwKZGlmZiAtLWdpdCBhL2Nv bnRyaWIvcG9zdGdyZXNfZmR3L21lc29uLmJ1aWxkIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvbWVz b24uYnVpbGQKaW5kZXggMmI4NmQ4YTZlZS4uOTJjYjNjNTU1NiAxMDA2NDQKLS0tIGEvY29udHJp Yi9wb3N0Z3Jlc19mZHcvbWVzb24uYnVpbGQKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvbWVz b24uYnVpbGQKQEAgLTI2LDYgKzI2LDcgQEAgaW5zdGFsbF9kYXRhKAogICAncG9zdGdyZXNfZmR3 LmNvbnRyb2wnLAogICAncG9zdGdyZXNfZmR3LS0xLjAuc3FsJywKICAgJ3Bvc3RncmVzX2Zkdy0t MS4wLS0xLjEuc3FsJywKKyAgJ3Bvc3RncmVzX2Zkdy0tMS4xLS0xLjIuc3FsJywKICAga3dhcmdz OiBjb250cmliX2RhdGFfYXJncywKICkKIApAQCAtMzksNCArNDAsOSBAQCB0ZXN0cyArPSB7CiAg ICAgXSwKICAgICAncmVncmVzc19hcmdzJzogWyctLWRscGF0aCcsIG1lc29uLmJ1aWxkX3Jvb3Qo KSAvICdzcmMvdGVzdC9yZWdyZXNzJ10sCiAgIH0sCisgICd0YXAnOiB7CisgICAgJ3Rlc3RzJzog WworICAgICAgJ3QvMDEwX3N1YnNjcmlwdGlvbi5wbCcsCisgICAgXSwKKyAgfSwKIH0KZGlmZiAt LWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy0tMS4xLS0xLjIuc3FsIGIv Y29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LS0xLjEtLTEuMi5zcWwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNDY4ZDhmMGQ3ZAotLS0gL2Rldi9udWxsCisr KyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy0tMS4xLS0xLjIuc3FsCkBAIC0w LDAgKzEsMTEgQEAKKy8qIGNvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy0tMS4xLS0x LjIuc3FsICovCisKKy0tIGNvbXBsYWluIGlmIHNjcmlwdCBpcyBzb3VyY2VkIGluIHBzcWwsIHJh dGhlciB0aGFuIHZpYSBBTFRFUiBFWFRFTlNJT04KK1xlY2hvIFVzZSAiQUxURVIgRVhURU5TSU9O IHBvc3RncmVzX2ZkdyBVUERBVEUgVE8gJzEuMiciIHRvIGxvYWQgdGhpcyBmaWxlLiBccXVpdAor CitDUkVBVEUgRlVOQ1RJT04gcG9zdGdyZXNfZmR3X2Nvbm5lY3Rpb24ob2lkLCBvaWQpCitSRVRV Uk5TIHRleHQKK0FTICdNT0RVTEVfUEFUSE5BTUUnCitMQU5HVUFHRSBDIFNUUklDVDsKKworQUxU RVIgRk9SRUlHTiBEQVRBIFdSQVBQRVIgcG9zdGdyZXNfZmR3IENPTk5FQ1RJT04gcG9zdGdyZXNf ZmR3X2Nvbm5lY3Rpb247CmRpZmYgLS1naXQgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jl c19mZHcuY29udHJvbCBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jb250cm9s CmluZGV4IGQ0ODkzODIwNjQuLmE0YjgwMGJlNGYgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdy ZXNfZmR3L3Bvc3RncmVzX2Zkdy5jb250cm9sCisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bv c3RncmVzX2Zkdy5jb250cm9sCkBAIC0xLDUgKzEsNSBAQAogIyBwb3N0Z3Jlc19mZHcgZXh0ZW5z aW9uCiBjb21tZW50ID0gJ2ZvcmVpZ24tZGF0YSB3cmFwcGVyIGZvciByZW1vdGUgUG9zdGdyZVNR TCBzZXJ2ZXJzJwotZGVmYXVsdF92ZXJzaW9uID0gJzEuMScKK2RlZmF1bHRfdmVyc2lvbiA9ICcx LjInCiBtb2R1bGVfcGF0aG5hbWUgPSAnJGxpYmRpci9wb3N0Z3Jlc19mZHcnCiByZWxvY2F0YWJs ZSA9IHRydWUKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19m ZHcuc3FsIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwKaW5kZXgg ODEyZTc2NDZlMS4uODUyMDA5NGZjOSAxMDA2NDQKLS0tIGEvY29udHJpYi9wb3N0Z3Jlc19mZHcv c3FsL3Bvc3RncmVzX2Zkdy5zcWwKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvc3FsL3Bvc3Rn cmVzX2Zkdy5zcWwKQEAgLTI0OCw2ICsyNDgsMTMgQEAgU0VMRUNUIGMzLCBjNCBGUk9NIGZ0MSBP UkRFUiBCWSBjMywgYzEgTElNSVQgMTsgIC0tIHNob3VsZCB3b3JrIGFnYWluCiBBTkFMWVpFIGZ0 MTsKIEFMVEVSIEZPUkVJR04gVEFCTEUgZnQyIE9QVElPTlMgKHVzZV9yZW1vdGVfZXN0aW1hdGUg J3RydWUnKTsKIAorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gdGVzdCBzdWJzY3JpcHRpb24KKy0tID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KK0NSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc19wZ2Zkd19zdWJzY3JpcHRpb24gU0VS VkVSIHRlc3RzZXJ2ZXIxCisgIFBVQkxJQ0FUSU9OIHB1YjEgV0lUSCAoc2xvdF9uYW1lID0gTk9O RSwgY29ubmVjdCA9IGZhbHNlKTsKK0RST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfcGdmZHdfc3Vi c2NyaXB0aW9uOworCiAtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLSB0ZXN0IGVycm9yIGNhc2UgZm9yIGNyZWF0 ZSBwdWJsaWNhdGlvbiBvbiBmb3JlaWduIHRhYmxlCiAtLSA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLS1naXQg YS9jb250cmliL3Bvc3RncmVzX2Zkdy90LzAxMF9zdWJzY3JpcHRpb24ucGwgYi9jb250cmliL3Bv c3RncmVzX2Zkdy90LzAxMF9zdWJzY3JpcHRpb24ucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMC4uYTM5ZThmZGJiYQotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvcG9z dGdyZXNfZmR3L3QvMDEwX3N1YnNjcmlwdGlvbi5wbApAQCAtMCwwICsxLDcxIEBACisKKyMgQ29w eXJpZ2h0IChjKSAyMDIxLTIwMjQsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3Vw CisKKyMgQmFzaWMgbG9naWNhbCByZXBsaWNhdGlvbiB0ZXN0Cit1c2Ugc3RyaWN0OwordXNlIHdh cm5pbmdzIEZBVEFMID0+ICdhbGwnOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1 c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKKworIyBJbml0aWFs aXplIHB1Ymxpc2hlciBub2RlCitteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0 OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOworJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93 c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKKyRub2RlX3B1Ymxpc2hlci0+c3RhcnQ7CisKKyMg Q3JlYXRlIHN1YnNjcmliZXIgbm9kZQorbXkgJG5vZGVfc3Vic2NyaWJlciA9IFBvc3RncmVTUUw6 OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3Vic2NyaWJlcicpOworJG5vZGVfc3Vic2NyaWJlci0+aW5p dDsKKyRub2RlX3N1YnNjcmliZXItPnN0YXJ0OworCisjIENyZWF0ZSBzb21lIHByZWV4aXN0aW5n IGNvbnRlbnQgb24gcHVibGlzaGVyCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCSJDUkVBVEUgVEFCTEUgdGFiX2lucyBBUyBTRUxFQ1QgYSwgYSArIDEgYXMgYiBGUk9N IGdlbmVyYXRlX3NlcmllcygxLDEwMDIpIEFTIGEiKTsKKworIyBSZXBsaWNhdGUgdGhlIGNoYW5n ZXMgd2l0aG91dCBjb2x1bW5zCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAiQ1JFQVRFIFRBQkxFIHRhYl9ub19jb2woKSIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gdGFiX25vX2NvbCBkZWZhdWx0IFZBTFVFUyIp OworCisjIFNldHVwIHN0cnVjdHVyZSBvbiBzdWJzY3JpYmVyCiskbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBFWFRFTlNJT04gcG9zdGdyZXNfZmR3Iik7Cisk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSB0YWJf aW5zIChhIGludCwgYiBpbnQpIik7CisKKyMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlvbgorbXkg JHB1Ymxpc2hlcl9jb25uc3RyID0gJG5vZGVfcHVibGlzaGVyLT5jb25uc3RyIC4gJyBkYm5hbWU9 cG9zdGdyZXMnOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFU RSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSB0YWJfaW5zIik7CisKK215ICRwdWJsaXNo ZXJfaG9zdCA9ICRub2RlX3B1Ymxpc2hlci0+aG9zdDsKK215ICRwdWJsaXNoZXJfcG9ydCA9ICRu b2RlX3B1Ymxpc2hlci0+cG9ydDsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCSJDUkVBVEUgU0VSVkVSIHRhcF9zZXJ2ZXIgRk9SRUlHTiBEQVRBIFdSQVBQRVIgcG9z dGdyZXNfZmR3IE9QVElPTlMgKGhvc3QgJyRwdWJsaXNoZXJfaG9zdCcsIHBvcnQgJyRwdWJsaXNo ZXJfcG9ydCcsIGRibmFtZSAncG9zdGdyZXMnKSIKKyk7CisKKyRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVVNFUiBNQVBQSU5HIEZPUiBQVUJMSUMgU0VS VkVSIHRhcF9zZXJ2ZXIiCispOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiQ1JFQVRFIEZPUkVJR04gVEFCTEUgZl90YWJfaW5zIChhIGludCwgYiBpbnQpIFNF UlZFUiB0YXBfc2VydmVyIE9QVElPTlModGFibGVfbmFtZSAndGFiX2lucycpIgorKTsKKyRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgU1VCU0NSSVBUSU9O IHRhcF9zdWIgU0VSVkVSIHRhcF9zZXJ2ZXIgUFVCTElDQVRJT04gdGFwX3B1YiBXSVRIIChwYXNz d29yZF9yZXF1aXJlZD1mYWxzZSkiCispOworCisjIFdhaXQgZm9yIGluaXRpYWwgdGFibGUgc3lu YyB0byBmaW5pc2gKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5j KCRub2RlX3B1Ymxpc2hlciwgJ3RhcF9zdWInKTsKKworbXkgJHJlc3VsdCA9CisgICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gKFNF TEVDVCBmLmIgPSBsLmIgYXMgbWF0Y2ggRlJPTSB0YWJfaW5zIGwsIGZfdGFiX2lucyBmIFdIRVJF IGwuYSA9IGYuYSkgV0hFUkUgbWF0Y2giKTsKK2lzKCRyZXN1bHQsIHFxKDEwMDIpLCAnY2hlY2sg aW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOworCiskbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0YWJfaW5zIFNFTEVDVCBh LCBhICsgMSBGUk9NIGdlbmVyYXRlX3NlcmllcygxMDAzLDEwNTApIGEiKTsKKworJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCd0YXBfc3ViJyk7CisKKyRyZXN1bHQgPQorICAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9N IChTRUxFQ1QgZi5iID0gbC5iIGFzIG1hdGNoIEZST00gdGFiX2lucyBsLCBmX3RhYl9pbnMgZiBX SEVSRSBsLmEgPSBmLmEpIFdIRVJFIG1hdGNoIik7CitpcygkcmVzdWx0LCBxcSgxMDUwKSwgJ2No ZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKKworZG9uZV90ZXN0 aW5nKCk7CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3N1YnNjcmlwdGlvbi5z Z21sIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9zdWJzY3JpcHRpb24uc2dtbAppbmRleCBlOWU2 ZDlkNzRhLi4xMmQ4ODU1YWVmIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3N1 YnNjcmlwdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfc3Vic2NyaXB0aW9u LnNnbWwKQEAgLTIxLDYgKzIxLDcgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAKICA8cmVm c3lub3BzaXNkaXY+CiA8c3lub3BzaXM+CitBTFRFUiBTVUJTQ1JJUFRJT04gPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBTRVJWRVIgPHJlcGxhY2VhYmxl PnNlcnZlcm5hbWU8L3JlcGxhY2VhYmxlPgogQUxURVIgU1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gQ09OTkVDVElPTiAnPHJlcGxh Y2VhYmxlPmNvbm5pbmZvPC9yZXBsYWNlYWJsZT4nCiBBTFRFUiBTVUJTQ1JJUFRJT04gPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBTRVQgUFVCTElDQVRJ T04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9uX25hbWU8L3JlcGxh Y2VhYmxlPiBbLCAuLi5dIFsgV0lUSCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5w dWJsaWNhdGlvbl9vcHRpb248L3JlcGxhY2VhYmxlPiBbPSA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+dmFsdWU8L3JlcGxhY2VhYmxlPl0gWywgLi4uIF0gKSBdCiBBTFRFUiBTVUJTQ1JJ UFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBB REQgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9u X25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dIFsgV0lUSCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9vcHRpb248L3JlcGxhY2VhYmxlPiBbPSA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+dmFsdWU8L3JlcGxhY2VhYmxlPl0gWywgLi4uIF0gKSBdCkBA IC05NCwxMyArOTUsMjQgQEAgQUxURVIgU1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDwKICAgICA8L2xpc3RpdGVt PgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1hbHRlcnN1 YnNjcmlwdGlvbi1wYXJhbXMtc2VydmVyIj4KKyAgICA8dGVybT48bGl0ZXJhbD5TRVJWRVIgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNlcnZlcm5hbWU8L3JlcGxhY2VhYmxlPjwvbGl0 ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoaXMgY2xh dXNlIHJlcGxhY2VzIHRoZSBmb3JlaWduIHNlcnZlciBvciBjb25uZWN0aW9uIHN0cmluZyBvcmln aW5hbGx5CisgICAgICBzZXQgYnkgPHhyZWYgbGlua2VuZD0ic3FsLWNyZWF0ZXN1YnNjcmlwdGlv biIvPiB3aXRoIHRoZSBmb3JlaWduIHNlcnZlcgorICAgICAgPHJlcGxhY2VhYmxlPnNlcnZlcm5h bWU8L3JlcGxhY2VhYmxlPi4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zh cmxpc3RlbnRyeT4KKwogICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWFsdGVyc3Vic2NyaXB0aW9u LXBhcmFtcy1jb25uZWN0aW9uIj4KICAgICA8dGVybT48bGl0ZXJhbD5DT05ORUNUSU9OICc8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29ubmluZm88L3JlcGxhY2VhYmxlPic8L2xpdGVy YWw+PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KICAgICAgPHBhcmE+Ci0gICAgICBUaGlzIGNsYXVz ZSByZXBsYWNlcyB0aGUgY29ubmVjdGlvbiBzdHJpbmcgb3JpZ2luYWxseSBzZXQgYnkKLSAgICAg IDx4cmVmIGxpbmtlbmQ9InNxbC1jcmVhdGVzdWJzY3JpcHRpb24iLz4uICBTZWUgdGhlcmUgZm9y IG1vcmUKLSAgICAgIGluZm9ybWF0aW9uLgorICAgICAgVGhpcyBjbGF1c2UgcmVwbGFjZXMgdGhl IGZvcmVpZ24gc2VydmVyIG9yIGNvbm5lY3Rpb24gc3RyaW5nIG9yaWdpbmFsbHkKKyAgICAgIHNl dCBieSA8eHJlZiBsaW5rZW5kPSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9uIi8+IHdpdGggdGhlIGNv bm5lY3Rpb24KKyAgICAgIHN0cmluZyA8cmVwbGFjZWFibGU+Y29ubmluZm88L3JlcGxhY2VhYmxl Pi4KICAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KZGlm ZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sIGIvZG9j L3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKaW5kZXggMTU3OTQ3MzFiYi4u MjMzZTg3ZDVlYSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0 aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwK QEAgLTIyLDcgKzIyLDcgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAgPHJlZnN5bm9wc2lz ZGl2PgogPHN5bm9wc2lzPgogQ1JFQVRFIFNVQlNDUklQVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+c3Vic2NyaXB0aW9uX25hbWU8L3JlcGxhY2VhYmxlPgotICAgIENPTk5FQ1RJ T04gJzxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb25uaW5mbzwvcmVwbGFjZWFibGU+ JworICAgIHsgU0VSVkVSIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zZXJ2ZXJuYW1l PC9yZXBsYWNlYWJsZT4gfCBDT05ORUNUSU9OICc8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+Y29ubmluZm88L3JlcGxhY2VhYmxlPicgfQogICAgIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4u XQogICAgIFsgV0lUSCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zdWJzY3JpcHRp b25fcGFyYW1ldGVyPC9yZXBsYWNlYWJsZT4gWz0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnZhbHVlPC9yZXBsYWNlYWJsZT5dIFssIC4uLiBdICkgXQogPC9zeW5vcHNpcz4KQEAgLTc3 LDYgKzc3LDE1IEBAIENSRUFURSBTVUJTQ1JJUFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnN1YnNjcmlwdGlvbl9uYW1lPC9yZXBsYWNlYWJsCiAgICAgPC9saXN0aXRlbT4KICAg IDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRlc3Vic2Ny aXB0aW9uLXBhcmFtcy1zZXJ2ZXIiPgorICAgIDx0ZXJtPjxsaXRlcmFsPlNFUlZFUiA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c2VydmVybmFtZTwvcmVwbGFjZWFibGU+PC9saXRlcmFs PjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgQSBmb3JlaWduIHNl cnZlciB0byB1c2UgZm9yIHRoZSBjb25uZWN0aW9uLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0 aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY3Jl YXRlc3Vic2NyaXB0aW9uLXBhcmFtcy1jb25uZWN0aW9uIj4KICAgICA8dGVybT48bGl0ZXJhbD5D T05ORUNUSU9OICc8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29ubmluZm88L3JlcGxh Y2VhYmxlPic8L2xpdGVyYWw+PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9n L3BnX3N1YnNjcmlwdGlvbi5jCmluZGV4IDllZmM5MTU5ZjIuLmI1YmEwYWE5NTMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMKKysrIGIvc3JjL2JhY2tl bmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYwpAQCAtMTksMTEgKzE5LDE0IEBACiAjaW5jbHVk ZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgogI2luY2x1ZGUgImFjY2Vzcy90YWJsZWFtLmgiCiAj aW5jbHVkZSAiY2F0YWxvZy9pbmRleGluZy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfZm9yZWln bl9zZXJ2ZXIuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIgogI2luY2x1 ZGUgImNhdGFsb2cvcGdfc3Vic2NyaXB0aW9uX3JlbC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdf dHlwZS5oIgorI2luY2x1ZGUgImZvcmVpZ24vZm9yZWlnbi5oIgogI2luY2x1ZGUgIm1pc2NhZG1p bi5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgorI2luY2x1ZGUgInV0aWxzL2FjbC5oIgog I2luY2x1ZGUgInV0aWxzL2FycmF5LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNp bmNsdWRlICJ1dGlscy9mbWdyb2lkcy5oIgpAQCAtMzgsNyArNDEsNyBAQCBzdGF0aWMgTGlzdCAq dGV4dGFycmF5X3RvX3N0cmluZ2xpc3QoQXJyYXlUeXBlICp0ZXh0YXJyYXkpOwogICogRmV0Y2gg dGhlIHN1YnNjcmlwdGlvbiBmcm9tIHRoZSBzeXNjYWNoZS4KICAqLwogU3Vic2NyaXB0aW9uICoK LUdldFN1YnNjcmlwdGlvbihPaWQgc3ViaWQsIGJvb2wgbWlzc2luZ19vaykKK0dldFN1YnNjcmlw dGlvbihPaWQgc3ViaWQsIGJvb2wgbWlzc2luZ19vaywgYm9vbCBhY2xjaGVjaykKIHsKIAlIZWFw VHVwbGUJdHVwOwogCVN1YnNjcmlwdGlvbiAqc3ViOwpAQCAtNzQsMTAgKzc3LDM1IEBAIEdldFN1 YnNjcmlwdGlvbihPaWQgc3ViaWQsIGJvb2wgbWlzc2luZ19vaykKIAlzdWItPmZhaWxvdmVyID0g c3ViZm9ybS0+c3ViZmFpbG92ZXI7CiAKIAkvKiBHZXQgY29ubmluZm8gKi8KLQlkYXR1bSA9IFN5 c0NhY2hlR2V0QXR0ck5vdE51bGwoU1VCU0NSSVBUSU9OT0lELAotCQkJCQkJCQkgICB0dXAsCi0J CQkJCQkJCSAgIEFudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmNvbm5pbmZvKTsKLQlzdWItPmNvbm5p bmZvID0gVGV4dERhdHVtR2V0Q1N0cmluZyhkYXR1bSk7CisJaWYgKE9pZElzVmFsaWQoc3ViZm9y bS0+c3Vic2VydmVyKSkKKwl7CisJCUFjbFJlc3VsdAlhY2xyZXN1bHQ7CisKKwkJLyogcmVjaGVj ayBBQ0wgaWYgcmVxdWVzdGVkICovCisJCWlmIChhY2xjaGVjaykKKwkJeworCQkJYWNscmVzdWx0 ID0gb2JqZWN0X2FjbGNoZWNrKEZvcmVpZ25TZXJ2ZXJSZWxhdGlvbklkLAorCQkJCQkJCQkJCXN1 YmZvcm0tPnN1YnNlcnZlciwKKwkJCQkJCQkJCQlzdWJmb3JtLT5zdWJvd25lciwgQUNMX1VTQUdF KTsKKworCQkJaWYgKGFjbHJlc3VsdCAhPSBBQ0xDSEVDS19PSykKKwkJCQllcmVwb3J0KEVSUk9S LAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKKwkJCQkJ CSBlcnJtc2coInN1YnNjcmlwdGlvbiBvd25lciBcIiVzXCIgZG9lcyBub3QgaGF2ZSBwZXJtaXNz aW9uIG9uIGZvcmVpZ24gc2VydmVyIFwiJXNcIiIsCisJCQkJCQkJCUdldFVzZXJOYW1lRnJvbUlk KHN1YmZvcm0tPnN1Ym93bmVyLCBmYWxzZSksCisJCQkJCQkJCUZvcmVpZ25TZXJ2ZXJOYW1lKHN1 YmZvcm0tPnN1YnNlcnZlcikpKSk7CisJCX0KKworCQlzdWItPmNvbm5pbmZvID0gRm9yZWlnblNl cnZlckNvbm5lY3Rpb25TdHJpbmcoc3ViZm9ybS0+c3Vib3duZXIsCisJCQkJCQkJCQkJCQkJICBz dWJmb3JtLT5zdWJzZXJ2ZXIpOworCX0KKwllbHNlCisJeworCQlkYXR1bSA9IFN5c0NhY2hlR2V0 QXR0ck5vdE51bGwoU1VCU0NSSVBUSU9OT0lELAorCQkJCQkJCQkJICAgdHVwLAorCQkJCQkJCQkJ ICAgQW51bV9wZ19zdWJzY3JpcHRpb25fc3ViY29ubmluZm8pOworCQlzdWItPmNvbm5pbmZvID0g VGV4dERhdHVtR2V0Q1N0cmluZyhkYXR1bSk7CisJfQogCiAJLyogR2V0IHNsb3RuYW1lICovCiAJ ZGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoU1VCU0NSSVBUSU9OT0lELApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvZm9yZWlnbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Zv cmVpZ25jbWRzLmMKaW5kZXggY2Y2MWJiYWMxZi4uMzU3OTE4YmUxMSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvZm9yZWlnbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9mb3JlaWduY21kcy5jCkBAIC01MTEsMjEgKzUxMSw1MiBAQCBsb29rdXBfZmR3X3ZhbGlkYXRv cl9mdW5jKERlZkVsZW0gKnZhbGlkYXRvcikKIAkvKiB2YWxpZGF0b3IncyByZXR1cm4gdmFsdWUg aXMgaWdub3JlZCwgc28gd2UgZG9uJ3QgY2hlY2sgdGhlIHR5cGUgKi8KIH0KIAorLyoKKyAqIENv bnZlcnQgYSBjb25uZWN0aW9uIHN0cmluZyBmdW5jdGlvbiBuYW1lIHBhc3NlZCBmcm9tIHRoZSBw YXJzZXIgdG8gYW4gT2lkLgorICovCitzdGF0aWMgT2lkCitsb29rdXBfZmR3X2Nvbm5lY3Rpb25f ZnVuYyhEZWZFbGVtICpjb25uZWN0aW9uKQoreworCU9pZAkJCWNvbm5lY3Rpb25PaWQ7CisJT2lk CQkJZnVuY2FyZ3R5cGVzWzJdOworCisJaWYgKGNvbm5lY3Rpb24gPT0gTlVMTCB8fCBjb25uZWN0 aW9uLT5hcmcgPT0gTlVMTCkKKwkJcmV0dXJuIEludmFsaWRPaWQ7CisKKwkvKiBjb25uZWN0aW9u IHN0cmluZyBmdW5jdGlvbnMgdGFrZSB1c2VyIG9pZCwgc2VydmVyIG9pZCAqLworCWZ1bmNhcmd0 eXBlc1swXSA9IE9JRE9JRDsKKwlmdW5jYXJndHlwZXNbMV0gPSBPSURPSUQ7CisKKwljb25uZWN0 aW9uT2lkID0gTG9va3VwRnVuY05hbWUoKExpc3QgKikgY29ubmVjdGlvbi0+YXJnLCAyLCBmdW5j YXJndHlwZXMsIGZhbHNlKTsKKworCS8qIGNoZWNrIHRoYXQgY29ubmVjdGlvbiBzdHJpbmcgZnVu Y3Rpb24gaGFzIGNvcnJlY3QgcmV0dXJuIHR5cGUgKi8KKwlpZiAoZ2V0X2Z1bmNfcmV0dHlwZShj b25uZWN0aW9uT2lkKSAhPSBURVhUT0lEKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2Rl KEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCSBlcnJtc2coImZ1bmN0aW9uICVzIG11 c3QgcmV0dXJuIHR5cGUgJXMiLAorCQkJCQkJTmFtZUxpc3RUb1N0cmluZygoTGlzdCAqKSBjb25u ZWN0aW9uLT5hcmcpLCAidGV4dCIpKSk7CisKKwlyZXR1cm4gY29ubmVjdGlvbk9pZDsKK30KKwog LyoKICAqIFByb2Nlc3MgZnVuY3Rpb24gb3B0aW9ucyBvZiBDUkVBVEUvQUxURVIgRkRXCiAgKi8K IHN0YXRpYyB2b2lkCiBwYXJzZV9mdW5jX29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0 ICpmdW5jX29wdGlvbnMsCiAJCQkJICAgYm9vbCAqaGFuZGxlcl9naXZlbiwgT2lkICpmZHdoYW5k bGVyLAotCQkJCSAgIGJvb2wgKnZhbGlkYXRvcl9naXZlbiwgT2lkICpmZHd2YWxpZGF0b3IpCisJ CQkJICAgYm9vbCAqdmFsaWRhdG9yX2dpdmVuLCBPaWQgKmZkd3ZhbGlkYXRvciwKKwkJCQkgICBi b29sICpjb25uZWN0aW9uX2dpdmVuLCBPaWQgKmZkd2Nvbm5lY3Rpb24pCiB7CiAJTGlzdENlbGwg ICAqY2VsbDsKIAogCSpoYW5kbGVyX2dpdmVuID0gZmFsc2U7CiAJKnZhbGlkYXRvcl9naXZlbiA9 IGZhbHNlOworCSpjb25uZWN0aW9uX2dpdmVuID0gZmFsc2U7CiAJLyogcmV0dXJuIEludmFsaWRP aWQgaWYgbm90IGdpdmVuICovCiAJKmZkd2hhbmRsZXIgPSBJbnZhbGlkT2lkOwogCSpmZHd2YWxp ZGF0b3IgPSBJbnZhbGlkT2lkOworCSpmZHdjb25uZWN0aW9uID0gSW52YWxpZE9pZDsKIAogCWZv cmVhY2goY2VsbCwgZnVuY19vcHRpb25zKQogCXsKQEAgLTU0NSw2ICs1NzYsMTMgQEAgcGFyc2Vf ZnVuY19vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqZnVuY19vcHRpb25zLAogCQkJ KnZhbGlkYXRvcl9naXZlbiA9IHRydWU7CiAJCQkqZmR3dmFsaWRhdG9yID0gbG9va3VwX2Zkd192 YWxpZGF0b3JfZnVuYyhkZWYpOwogCQl9CisJCWVsc2UgaWYgKHN0cmNtcChkZWYtPmRlZm5hbWUs ICJjb25uZWN0aW9uIikgPT0gMCkKKwkJeworCQkJaWYgKCpjb25uZWN0aW9uX2dpdmVuKQorCQkJ CWVycm9yQ29uZmxpY3RpbmdEZWZFbGVtKGRlZiwgcHN0YXRlKTsKKwkJCSpjb25uZWN0aW9uX2dp dmVuID0gdHJ1ZTsKKwkJCSpmZHdjb25uZWN0aW9uID0gbG9va3VwX2Zkd19jb25uZWN0aW9uX2Z1 bmMoZGVmKTsKKwkJfQogCQllbHNlCiAJCQllbG9nKEVSUk9SLCAib3B0aW9uIFwiJXNcIiBub3Qg cmVjb2duaXplZCIsCiAJCQkJIGRlZi0+ZGVmbmFtZSk7CkBAIC01NjQsOCArNjAyLDEwIEBAIENy ZWF0ZUZvcmVpZ25EYXRhV3JhcHBlcihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZUZkd1N0bXQg KnN0bXQpCiAJT2lkCQkJZmR3SWQ7CiAJYm9vbAkJaGFuZGxlcl9naXZlbjsKIAlib29sCQl2YWxp ZGF0b3JfZ2l2ZW47CisJYm9vbAkJY29ubmVjdGlvbl9naXZlbjsKIAlPaWQJCQlmZHdoYW5kbGVy OwogCU9pZAkJCWZkd3ZhbGlkYXRvcjsKKwlPaWQJCQlmZHdjb25uZWN0aW9uOwogCURhdHVtCQlm ZHdvcHRpb25zOwogCU9pZAkJCW93bmVySWQ7CiAJT2JqZWN0QWRkcmVzcyBteXNlbGY7CkBAIC02 MDksMTAgKzY0OSwxMiBAQCBDcmVhdGVGb3JlaWduRGF0YVdyYXBwZXIoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBDcmVhdGVGZHdTdG10ICpzdG10KQogCS8qIExvb2t1cCBoYW5kbGVyIGFuZCB2YWxpZGF0 b3IgZnVuY3Rpb25zLCBpZiBnaXZlbiAqLwogCXBhcnNlX2Z1bmNfb3B0aW9ucyhwc3RhdGUsIHN0 bXQtPmZ1bmNfb3B0aW9ucywKIAkJCQkJICAgJmhhbmRsZXJfZ2l2ZW4sICZmZHdoYW5kbGVyLAot CQkJCQkgICAmdmFsaWRhdG9yX2dpdmVuLCAmZmR3dmFsaWRhdG9yKTsKKwkJCQkJICAgJnZhbGlk YXRvcl9naXZlbiwgJmZkd3ZhbGlkYXRvciwKKwkJCQkJICAgJmNvbm5lY3Rpb25fZ2l2ZW4sICZm ZHdjb25uZWN0aW9uKTsKIAogCXZhbHVlc1tBbnVtX3BnX2ZvcmVpZ25fZGF0YV93cmFwcGVyX2Zk d2hhbmRsZXIgLSAxXSA9IE9iamVjdElkR2V0RGF0dW0oZmR3aGFuZGxlcik7CiAJdmFsdWVzW0Fu dW1fcGdfZm9yZWlnbl9kYXRhX3dyYXBwZXJfZmR3dmFsaWRhdG9yIC0gMV0gPSBPYmplY3RJZEdl dERhdHVtKGZkd3ZhbGlkYXRvcik7CisJdmFsdWVzW0FudW1fcGdfZm9yZWlnbl9kYXRhX3dyYXBw ZXJfZmR3Y29ubmVjdGlvbiAtIDFdID0gT2JqZWN0SWRHZXREYXR1bShmZHdjb25uZWN0aW9uKTsK IAogCW51bGxzW0FudW1fcGdfZm9yZWlnbl9kYXRhX3dyYXBwZXJfZmR3YWNsIC0gMV0gPSB0cnVl OwogCkBAIC02ODQsOCArNzI2LDEwIEBAIEFsdGVyRm9yZWlnbkRhdGFXcmFwcGVyKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgQWx0ZXJGZHdTdG10ICpzdG10KQogCURhdHVtCQlkYXR1bTsKIAlib29sCQlo YW5kbGVyX2dpdmVuOwogCWJvb2wJCXZhbGlkYXRvcl9naXZlbjsKKwlib29sCQljb25uZWN0aW9u X2dpdmVuOwogCU9pZAkJCWZkd2hhbmRsZXI7CiAJT2lkCQkJZmR3dmFsaWRhdG9yOworCU9pZAkJ CWZkd2Nvbm5lY3Rpb247CiAJT2JqZWN0QWRkcmVzcyBteXNlbGY7CiAKIAlyZWwgPSB0YWJsZV9v cGVuKEZvcmVpZ25EYXRhV3JhcHBlclJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwpAQCAt NzE1LDcgKzc1OSw4IEBAIEFsdGVyRm9yZWlnbkRhdGFXcmFwcGVyKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgQWx0ZXJGZHdTdG10ICpzdG10KQogCiAJcGFyc2VfZnVuY19vcHRpb25zKHBzdGF0ZSwgc3Rt dC0+ZnVuY19vcHRpb25zLAogCQkJCQkgICAmaGFuZGxlcl9naXZlbiwgJmZkd2hhbmRsZXIsCi0J CQkJCSAgICZ2YWxpZGF0b3JfZ2l2ZW4sICZmZHd2YWxpZGF0b3IpOworCQkJCQkgICAmdmFsaWRh dG9yX2dpdmVuLCAmZmR3dmFsaWRhdG9yLAorCQkJCQkgICAmY29ubmVjdGlvbl9naXZlbiwgJmZk d2Nvbm5lY3Rpb24pOwogCiAJaWYgKGhhbmRsZXJfZ2l2ZW4pCiAJewpAQCAtNzUzLDYgKzc5OCwx MiBAQCBBbHRlckZvcmVpZ25EYXRhV3JhcHBlcihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyRmR3 U3RtdCAqc3RtdCkKIAkJZmR3dmFsaWRhdG9yID0gZmR3Rm9ybS0+ZmR3dmFsaWRhdG9yOwogCX0K IAorCWlmIChjb25uZWN0aW9uX2dpdmVuKQorCXsKKwkJcmVwbF92YWxbQW51bV9wZ19mb3JlaWdu X2RhdGFfd3JhcHBlcl9mZHdjb25uZWN0aW9uIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKGZkd2Nv bm5lY3Rpb24pOworCQlyZXBsX3JlcGxbQW51bV9wZ19mb3JlaWduX2RhdGFfd3JhcHBlcl9mZHdj b25uZWN0aW9uIC0gMV0gPSB0cnVlOworCX0KKwogCS8qCiAJICogSWYgb3B0aW9ucyBzcGVjaWZp ZWQsIHZhbGlkYXRlIGFuZCB1cGRhdGUuCiAJICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3Jp cHRpb25jbWRzLmMKaW5kZXggYTA1ZDY5OTIyZC4uMzA0YTQ2ZWZlYyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwpAQCAtMjUsMTQgKzI1LDE3IEBACiAjaW5jbHVkZSAi Y2F0YWxvZy9vYmplY3RhZGRyZXNzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19hdXRoaWRfZC5o IgogI2luY2x1ZGUgImNhdGFsb2cvcGdfZGF0YWJhc2VfZC5oIgorI2luY2x1ZGUgImNhdGFsb2cv cGdfZm9yZWlnbl9zZXJ2ZXIuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5o IgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3Vic2NyaXB0aW9uX3JlbC5oIgogI2luY2x1ZGUgImNh dGFsb2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdXNlcl9tYXBwaW5nLmgiCiAj aW5jbHVkZSAiY29tbWFuZHMvZGJjb21tYW5kcy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2RlZnJl bS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2V2ZW50X3RyaWdnZXIuaCIKICNpbmNsdWRlICJjb21t YW5kcy9zdWJzY3JpcHRpb25jbWRzLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIK KyNpbmNsdWRlICJmb3JlaWduL2ZvcmVpZ24uaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNp bmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKQEAgLTU5NCw2 ICs1OTcsNyBAQCBDcmVhdGVTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVT dWJzY3JpcHRpb25TdG10ICpzdG10LAogCURhdHVtCQl2YWx1ZXNbTmF0dHNfcGdfc3Vic2NyaXB0 aW9uXTsKIAlPaWQJCQlvd25lciA9IEdldFVzZXJJZCgpOwogCUhlYXBUdXBsZQl0dXA7CisJT2lk CQkJc2VydmVyaWQ7CiAJY2hhcgkgICAqY29ubmluZm87CiAJY2hhcgkJb3JpZ2lubmFtZVtOQU1F REFUQUxFTl07CiAJTGlzdAkgICAqcHVibGljYXRpb25zOwpAQCAtNjg2LDE1ICs2OTAsNDAgQEAg Q3JlYXRlU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlU3Vic2NyaXB0aW9u U3RtdCAqc3RtdCwKIAlpZiAob3B0cy5zeW5jaHJvbm91c19jb21taXQgPT0gTlVMTCkKIAkJb3B0 cy5zeW5jaHJvbm91c19jb21taXQgPSAib2ZmIjsKIAotCWNvbm5pbmZvID0gc3RtdC0+Y29ubmlu Zm87Ci0JcHVibGljYXRpb25zID0gc3RtdC0+cHVibGljYXRpb247Ci0KIAkvKiBMb2FkIHRoZSBs aWJyYXJ5IHByb3ZpZGluZyB1cyBsaWJwcSBjYWxscy4gKi8KIAlsb2FkX2ZpbGUoImxpYnBxd2Fs cmVjZWl2ZXIiLCBmYWxzZSk7CiAKKwlpZiAoc3RtdC0+c2VydmVybmFtZSkKKwl7CisJCUZvcmVp Z25TZXJ2ZXIJKnNlcnZlcjsKKworCQlBc3NlcnQoIXN0bXQtPmNvbm5pbmZvKTsKKwkJY29ubmlu Zm8gPSBOVUxMOworCisJCXNlcnZlciA9IEdldEZvcmVpZ25TZXJ2ZXJCeU5hbWUoc3RtdC0+c2Vy dmVybmFtZSwgZmFsc2UpOworCQlhY2xyZXN1bHQgPSBvYmplY3RfYWNsY2hlY2soRm9yZWlnblNl cnZlclJlbGF0aW9uSWQsIHNlcnZlci0+c2VydmVyaWQsIG93bmVyLCBBQ0xfVVNBR0UpOworCQlp ZiAoYWNscmVzdWx0ICE9IEFDTENIRUNLX09LKQorCQkJYWNsY2hlY2tfZXJyb3IoYWNscmVzdWx0 LCBPQkpFQ1RfRk9SRUlHTl9TRVJWRVIsIHNlcnZlci0+c2VydmVybmFtZSk7CisKKwkJLyogbWFr ZSBzdXJlIGEgdXNlciBtYXBwaW5nIGV4aXN0cyAqLworCQlHZXRVc2VyTWFwcGluZyhvd25lciwg c2VydmVyLT5zZXJ2ZXJpZCk7CisKKwkJc2VydmVyaWQgPSBzZXJ2ZXItPnNlcnZlcmlkOworCQlj b25uaW5mbyA9IEZvcmVpZ25TZXJ2ZXJDb25uZWN0aW9uU3RyaW5nKG93bmVyLCBzZXJ2ZXJpZCk7 CisJfQorCWVsc2UKKwl7CisJCUFzc2VydChzdG10LT5jb25uaW5mbyk7CisKKwkJc2VydmVyaWQg PSBJbnZhbGlkT2lkOworCQljb25uaW5mbyA9IHN0bXQtPmNvbm5pbmZvOworCX0KKwogCS8qIENo ZWNrIHRoZSBjb25uZWN0aW9uIGluZm8gc3RyaW5nLiAqLwogCXdhbHJjdl9jaGVja19jb25uaW5m byhjb25uaW5mbywgb3B0cy5wYXNzd29yZHJlcXVpcmVkICYmICFzdXBlcnVzZXIoKSk7CiAKKwlw dWJsaWNhdGlvbnMgPSBzdG10LT5wdWJsaWNhdGlvbjsKKwogCS8qIEV2ZXJ5dGhpbmcgb2ssIGZv cm0gYSBuZXcgdHVwbGUuICovCiAJbWVtc2V0KHZhbHVlcywgMCwgc2l6ZW9mKHZhbHVlcykpOwog CW1lbXNldChudWxscywgZmFsc2UsIHNpemVvZihudWxscykpOwpAQCAtNzE4LDggKzc0NywxMiBA QCBDcmVhdGVTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRp b25TdG10ICpzdG10LAogCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJwYXNzd29yZHJl cXVpcmVkIC0gMV0gPSBCb29sR2V0RGF0dW0ob3B0cy5wYXNzd29yZHJlcXVpcmVkKTsKIAl2YWx1 ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3VicnVuYXNvd25lciAtIDFdID0gQm9vbEdldERhdHVt KG9wdHMucnVuYXNvd25lcik7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmZhaWxv dmVyIC0gMV0gPSBCb29sR2V0RGF0dW0ob3B0cy5mYWlsb3Zlcik7Ci0JdmFsdWVzW0FudW1fcGdf c3Vic2NyaXB0aW9uX3N1YmNvbm5pbmZvIC0gMV0gPQotCQlDU3RyaW5nR2V0VGV4dERhdHVtKGNv bm5pbmZvKTsKKwl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vic2VydmVyIC0gMV0gPSBz ZXJ2ZXJpZDsKKwlpZiAoIU9pZElzVmFsaWQoc2VydmVyaWQpKQorCQl2YWx1ZXNbQW51bV9wZ19z dWJzY3JpcHRpb25fc3ViY29ubmluZm8gLSAxXSA9CisJCQlDU3RyaW5nR2V0VGV4dERhdHVtKGNv bm5pbmZvKTsKKwllbHNlCisJCW51bGxzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmNvbm5pbmZv IC0gMV0gPSB0cnVlOwogCWlmIChvcHRzLnNsb3RfbmFtZSkKIAkJdmFsdWVzW0FudW1fcGdfc3Vi c2NyaXB0aW9uX3N1YnNsb3RuYW1lIC0gMV0gPQogCQkJRGlyZWN0RnVuY3Rpb25DYWxsMShuYW1l aW4sIENTdHJpbmdHZXREYXR1bShvcHRzLnNsb3RfbmFtZSkpOwpAQCAtNzQwLDYgKzc3MywxNyBA QCBDcmVhdGVTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRp b25TdG10ICpzdG10LAogCiAJcmVjb3JkRGVwZW5kZW5jeU9uT3duZXIoU3Vic2NyaXB0aW9uUmVs YXRpb25JZCwgc3ViaWQsIG93bmVyKTsKIAorCU9iamVjdEFkZHJlc3NTZXQobXlzZWxmLCBTdWJz Y3JpcHRpb25SZWxhdGlvbklkLCBzdWJpZCk7CisKKwlpZiAoc3RtdC0+c2VydmVybmFtZSkKKwl7 CisJCU9iamVjdEFkZHJlc3MgcmVmZXJlbmNlZDsKKwkJQXNzZXJ0KE9pZElzVmFsaWQoc2VydmVy aWQpKTsKKworCQlPYmplY3RBZGRyZXNzU2V0KHJlZmVyZW5jZWQsIEZvcmVpZ25TZXJ2ZXJSZWxh dGlvbklkLCBzZXJ2ZXJpZCk7CisJCXJlY29yZERlcGVuZGVuY3lPbigmbXlzZWxmLCAmcmVmZXJl bmNlZCwgREVQRU5ERU5DWV9OT1JNQUwpOworCX0KKwogCVJlcGxpY2F0aW9uT3JpZ2luTmFtZUZv ckxvZ2ljYWxSZXAoc3ViaWQsIEludmFsaWRPaWQsIG9yaWdpbm5hbWUsIHNpemVvZihvcmlnaW5u YW1lKSk7CiAJcmVwbG9yaWdpbl9jcmVhdGUob3JpZ2lubmFtZSk7CiAKQEAgLTg3MSw4ICs5MTUs NiBAQCBDcmVhdGVTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3Jp cHRpb25TdG10ICpzdG10LAogCWlmIChvcHRzLmVuYWJsZWQpCiAJCUFwcGx5TGF1bmNoZXJXYWtl dXBBdENvbW1pdCgpOwogCi0JT2JqZWN0QWRkcmVzc1NldChteXNlbGYsIFN1YnNjcmlwdGlvblJl bGF0aW9uSWQsIHN1YmlkKTsKLQogCUludm9rZU9iamVjdFBvc3RDcmVhdGVIb29rKFN1YnNjcmlw dGlvblJlbGF0aW9uSWQsIHN1YmlkLCAwKTsKIAogCXJldHVybiBteXNlbGY7CkBAIC0xMTQwLDcg KzExODIsMTQgQEAgQWx0ZXJTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclN1 YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJCWFjbGNoZWNrX2Vycm9yKEFDTENIRUNLX05PVF9PV05F UiwgT0JKRUNUX1NVQlNDUklQVElPTiwKIAkJCQkJICAgc3RtdC0+c3VibmFtZSk7CiAKLQlzdWIg PSBHZXRTdWJzY3JpcHRpb24oc3ViaWQsIGZhbHNlKTsKKwkvKgorCSAqIFNraXAgQUNMIGNoZWNr cyBvbiB0aGUgc3Vic2NyaXB0aW9uJ3MgZm9yZWlnbiBzZXJ2ZXIsIGlmIGFueS4gSWYKKwkgKiBj aGFuZ2luZyB0aGUgc2VydmVyIChvciByZXBsYWNpbmcgaXQgd2l0aCBhIHJhdyBjb25uZWN0aW9u KSwgdGhlbiB0aGUKKwkgKiBvbGQgb25lIHdpbGwgYmUgcmVtb3ZlZCBhbnl3YXkuIElmIGNoYW5n aW5nIHNvbWV0aGluZyB1bnJlbGF0ZWQsCisJICogdGhlcmUncyBubyBuZWVkIHRvIGRvIGFuIGFk ZGl0aW9uYWwgQUNMIGNoZWNrIGhlcmU7IHRoYXQgd2lsbCBiZSBkb25lCisJICogYnkgdGhlIHN1 YnNjcmlwdGlvbiB3b3JrZXIgYW55d2F5LgorCSAqLworCXN1YiA9IEdldFN1YnNjcmlwdGlvbihz dWJpZCwgZmFsc2UsIGZhbHNlKTsKIAogCS8qCiAJICogRG9uJ3QgYWxsb3cgbm9uLXN1cGVydXNl ciBtb2RpZmljYXRpb24gb2YgYSBzdWJzY3JpcHRpb24gd2l0aApAQCAtMTE2MCw2ICsxMjA5LDgg QEAgQWx0ZXJTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclN1YnNjcmlwdGlv blN0bXQgKnN0bXQsCiAJbWVtc2V0KG51bGxzLCBmYWxzZSwgc2l6ZW9mKG51bGxzKSk7CiAJbWVt c2V0KHJlcGxhY2VzLCBmYWxzZSwgc2l6ZW9mKHJlcGxhY2VzKSk7CiAKKwlPYmplY3RBZGRyZXNz U2V0KG15c2VsZiwgU3Vic2NyaXB0aW9uUmVsYXRpb25JZCwgc3ViaWQpOworCiAJc3dpdGNoIChz dG10LT5raW5kKQogCXsKIAkJY2FzZSBBTFRFUl9TVUJTQ1JJUFRJT05fT1BUSU9OUzoKQEAgLTEz MDYsNyArMTM1Nyw3OSBAQCBBbHRlclN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFs dGVyU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAkJCQlicmVhazsKIAkJCX0KIAorCQljYXNlIEFM VEVSX1NVQlNDUklQVElPTl9TRVJWRVI6CisJCQl7CisJCQkJRm9yZWlnblNlcnZlcgkqbmV3X3Nl cnZlcjsKKwkJCQlPYmplY3RBZGRyZXNzCSByZWZlcmVuY2VkOworCQkJCUFjbFJlc3VsdAkJIGFj bHJlc3VsdDsKKwkJCQljaGFyCQkJKmNvbm5pbmZvOworCisJCQkJLyoKKwkJCQkgKiBSZW1vdmUg d2hhdCB3YXMgdGhlcmUgYmVmb3JlLCBlaXRoZXIgYW5vdGhlciBmb3JlaWduIHNlcnZlcgorCQkJ CSAqIG9yIGEgY29ubmVjdGlvbiBzdHJpbmcuCisJCQkJICovCisJCQkJaWYgKGZvcm0tPnN1YnNl cnZlcikKKwkJCQl7CisJCQkJCWRlbGV0ZURlcGVuZGVuY3lSZWNvcmRzRm9yU3BlY2lmaWMoU3Vi c2NyaXB0aW9uUmVsYXRpb25JZCwgZm9ybS0+b2lkLAorCQkJCQkJCQkJCQkJCSAgIERFUEVOREVO Q1lfTk9STUFMLAorCQkJCQkJCQkJCQkJCSAgIEZvcmVpZ25TZXJ2ZXJSZWxhdGlvbklkLCBmb3Jt LT5zdWJzZXJ2ZXIpOworCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQludWxsc1tBbnVtX3Bn X3N1YnNjcmlwdGlvbl9zdWJjb25uaW5mbyAtIDFdID0gdHJ1ZTsKKwkJCQkJcmVwbGFjZXNbQW51 bV9wZ19zdWJzY3JpcHRpb25fc3ViY29ubmluZm8gLSAxXSA9IHRydWU7CisJCQkJfQorCisJCQkJ LyoKKwkJCQkgKiBGaW5kIHRoZSBuZXcgc2VydmVyIGFuZCB1c2VyIG1hcHBpbmcuIENoZWNrIEFD TCBvZiBzZXJ2ZXIKKwkJCQkgKiBiYXNlZCBvbiBjdXJyZW50IHVzZXIgSUQsIGJ1dCBmaW5kIHRo ZSB1c2VyIG1hcHBpbmcgYmFzZWQKKwkJCQkgKiBvbiB0aGUgc3Vic2NyaXB0aW9uIG93bmVyLgor CQkJCSAqLworCQkJCW5ld19zZXJ2ZXIgPSBHZXRGb3JlaWduU2VydmVyQnlOYW1lKHN0bXQtPnNl cnZlcm5hbWUsIGZhbHNlKTsKKwkJCQlhY2xyZXN1bHQgPSBvYmplY3RfYWNsY2hlY2soRm9yZWln blNlcnZlclJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCW5ld19zZXJ2ZXItPnNlcnZlcmlkLAorCQkJ CQkJCQkJCQlmb3JtLT5zdWJvd25lciwgQUNMX1VTQUdFKTsKKwkJCQlpZiAoYWNscmVzdWx0ICE9 IEFDTENIRUNLX09LKQorCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCShlcnJjb2RlKEVSUkNP REVfSU5TVUZGSUNJRU5UX1BSSVZJTEVHRSksCisJCQkJCQkJIGVycm1zZygic3Vic2NyaXB0aW9u IG93bmVyIFwiJXNcIiBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24gb24gZm9yZWlnbiBzZXJ2ZXIg XCIlc1wiIiwKKwkJCQkJCQkJCUdldFVzZXJOYW1lRnJvbUlkKGZvcm0tPnN1Ym93bmVyLCBmYWxz ZSksCisJCQkJCQkJCQlGb3JlaWduU2VydmVyTmFtZShuZXdfc2VydmVyLT5zZXJ2ZXJpZCkpKSk7 CisKKwkJCQkvKiBtYWtlIHN1cmUgYSB1c2VyIG1hcHBpbmcgZXhpc3RzICovCisJCQkJR2V0VXNl ck1hcHBpbmcoZm9ybS0+c3Vib3duZXIsIG5ld19zZXJ2ZXItPnNlcnZlcmlkKTsKKworCQkJCWNv bm5pbmZvID0gRm9yZWlnblNlcnZlckNvbm5lY3Rpb25TdHJpbmcoZm9ybS0+c3Vib3duZXIsCisJ CQkJCQkJCQkJCQkJCSBuZXdfc2VydmVyLT5zZXJ2ZXJpZCk7CisKKwkJCQkvKiBMb2FkIHRoZSBs aWJyYXJ5IHByb3ZpZGluZyB1cyBsaWJwcSBjYWxscy4gKi8KKwkJCQlsb2FkX2ZpbGUoImxpYnBx d2FscmVjZWl2ZXIiLCBmYWxzZSk7CisJCQkJLyogQ2hlY2sgdGhlIGNvbm5lY3Rpb24gaW5mbyBz dHJpbmcuICovCisJCQkJd2FscmN2X2NoZWNrX2Nvbm5pbmZvKGNvbm5pbmZvLAorCQkJCQkJCQkJ ICBzdWItPnBhc3N3b3JkcmVxdWlyZWQgJiYgIXN1Yi0+b3duZXJzdXBlcnVzZXIpOworCisJCQkJ dmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnNlcnZlciAtIDFdID0gbmV3X3NlcnZlci0+ c2VydmVyaWQ7CisJCQkJcmVwbGFjZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vic2VydmVyIC0g MV0gPSB0cnVlOworCisJCQkJT2JqZWN0QWRkcmVzc1NldChyZWZlcmVuY2VkLCBGb3JlaWduU2Vy dmVyUmVsYXRpb25JZCwgbmV3X3NlcnZlci0+c2VydmVyaWQpOworCQkJCXJlY29yZERlcGVuZGVu Y3lPbigmbXlzZWxmLCAmcmVmZXJlbmNlZCwgREVQRU5ERU5DWV9OT1JNQUwpOworCisJCQkJdXBk YXRlX3R1cGxlID0gdHJ1ZTsKKwkJCX0KKwkJCWJyZWFrOworCiAJCWNhc2UgQUxURVJfU1VCU0NS SVBUSU9OX0NPTk5FQ1RJT046CisJCQkvKiByZW1vdmUgcmVmZXJlbmNlIHRvIGZvcmVpZ24gc2Vy dmVyIGFuZCBkZXBlbmRlbmNpZXMsIGlmIHByZXNlbnQgKi8KKwkJCWlmIChmb3JtLT5zdWJzZXJ2 ZXIpCisJCQl7CisJCQkJZGVsZXRlRGVwZW5kZW5jeVJlY29yZHNGb3JTcGVjaWZpYyhTdWJzY3Jp cHRpb25SZWxhdGlvbklkLCBmb3JtLT5vaWQsCisJCQkJCQkJCQkJCQkgICBERVBFTkRFTkNZX05P Uk1BTCwKKwkJCQkJCQkJCQkJCSAgIEZvcmVpZ25TZXJ2ZXJSZWxhdGlvbklkLCBmb3JtLT5zdWJz ZXJ2ZXIpOworCisJCQkJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnNlcnZlciAtIDFd ID0gSW52YWxpZE9pZDsKKwkJCQlyZXBsYWNlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJzZXJ2 ZXIgLSAxXSA9IHRydWU7CisJCQl9CisKIAkJCS8qIExvYWQgdGhlIGxpYnJhcnkgcHJvdmlkaW5n IHVzIGxpYnBxIGNhbGxzLiAqLwogCQkJbG9hZF9maWxlKCJsaWJwcXdhbHJlY2VpdmVyIiwgZmFs c2UpOwogCQkJLyogQ2hlY2sgdGhlIGNvbm5lY3Rpb24gaW5mbyBzdHJpbmcuICovCkBAIC0xNTUz LDggKzE2NzYsNiBAQCBBbHRlclN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVy U3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAogCXRhYmxlX2Nsb3NlKHJlbCwgUm93RXhjbHVzaXZl TG9jayk7CiAKLQlPYmplY3RBZGRyZXNzU2V0KG15c2VsZiwgU3Vic2NyaXB0aW9uUmVsYXRpb25J ZCwgc3ViaWQpOwotCiAJSW52b2tlT2JqZWN0UG9zdEFsdGVySG9vayhTdWJzY3JpcHRpb25SZWxh dGlvbklkLCBzdWJpZCwgMCk7CiAKIAkvKiBXYWtlIHVwIHJlbGF0ZWQgcmVwbGljYXRpb24gd29y a2VycyB0byBoYW5kbGUgdGhpcyBjaGFuZ2UgcXVpY2tseS4gKi8KQEAgLTE2MzksOSArMTc2MCwy OCBAQCBEcm9wU3Vic2NyaXB0aW9uKERyb3BTdWJzY3JpcHRpb25TdG10ICpzdG10LCBib29sIGlz VG9wTGV2ZWwpCiAJc3VibmFtZSA9IHBzdHJkdXAoTmFtZVN0cigqRGF0dW1HZXROYW1lKGRhdHVt KSkpOwogCiAJLyogR2V0IGNvbm5pbmZvICovCi0JZGF0dW0gPSBTeXNDYWNoZUdldEF0dHJOb3RO dWxsKFNVQlNDUklQVElPTk9JRCwgdHVwLAotCQkJCQkJCQkgICBBbnVtX3BnX3N1YnNjcmlwdGlv bl9zdWJjb25uaW5mbyk7Ci0JY29ubmluZm8gPSBUZXh0RGF0dW1HZXRDU3RyaW5nKGRhdHVtKTsK KwlpZiAoT2lkSXNWYWxpZChmb3JtLT5zdWJzZXJ2ZXIpKQorCXsKKwkJQWNsUmVzdWx0IGFjbHJl c3VsdDsKKworCQlhY2xyZXN1bHQgPSBvYmplY3RfYWNsY2hlY2soRm9yZWlnblNlcnZlclJlbGF0 aW9uSWQsIGZvcm0tPnN1YnNlcnZlciwKKwkJCQkJCQkJCWZvcm0tPnN1Ym93bmVyLCBBQ0xfVVNB R0UpOworCQlpZiAoYWNscmVzdWx0ICE9IEFDTENIRUNLX09LKQorCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKKwkJCQkJIGVy cm1zZygic3Vic2NyaXB0aW9uIG93bmVyIFwiJXNcIiBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24g b24gZm9yZWlnbiBzZXJ2ZXIgXCIlc1wiIiwKKwkJCQkJCQlHZXRVc2VyTmFtZUZyb21JZChmb3Jt LT5zdWJvd25lciwgZmFsc2UpLAorCQkJCQkJCUZvcmVpZ25TZXJ2ZXJOYW1lKGZvcm0tPnN1YnNl cnZlcikpKSk7CisKKwkJY29ubmluZm8gPSBGb3JlaWduU2VydmVyQ29ubmVjdGlvblN0cmluZyhm b3JtLT5zdWJvd25lciwKKwkJCQkJCQkJCQkJCSBmb3JtLT5zdWJzZXJ2ZXIpOworCX0KKwllbHNl CisJeworCQlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0ck5vdE51bGwoU1VCU0NSSVBUSU9OT0lELCB0 dXAsCisJCQkJCQkJCQkgICBBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJjb25uaW5mbyk7CisJCWNv bm5pbmZvID0gVGV4dERhdHVtR2V0Q1N0cmluZyhkYXR1bSk7CisJfQogCiAJLyogR2V0IHNsb3Ru YW1lICovCiAJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoU1VCU0NSSVBUSU9OT0lELCB0dXAsCkBA IC0xNzQyLDYgKzE4ODIsNyBAQCBEcm9wU3Vic2NyaXB0aW9uKERyb3BTdWJzY3JpcHRpb25TdG10 ICpzdG10LCBib29sIGlzVG9wTGV2ZWwpCiAJfQogCiAJLyogQ2xlYW4gdXAgZGVwZW5kZW5jaWVz ICovCisJZGVsZXRlRGVwZW5kZW5jeVJlY29yZHNGb3IoU3Vic2NyaXB0aW9uUmVsYXRpb25JZCwg c3ViaWQsIGZhbHNlKTsKIAlkZWxldGVTaGFyZWREZXBlbmRlbmN5UmVjb3Jkc0ZvcihTdWJzY3Jp cHRpb25SZWxhdGlvbklkLCBzdWJpZCwgMCk7CiAKIAkvKiBSZW1vdmUgYW55IGFzc29jaWF0ZWQg cmVsYXRpb24gc3luY2hyb25pemF0aW9uIHN0YXRlcy4gKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2ZvcmVpZ24vZm9yZWlnbi5jIGIvc3JjL2JhY2tlbmQvZm9yZWlnbi9mb3JlaWduLmMKaW5k ZXggZjRmMzU3MjhiNC4uZmRkN2VlM2FkOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZm9yZWln bi9mb3JlaWduLmMKKysrIGIvc3JjL2JhY2tlbmQvZm9yZWlnbi9mb3JlaWduLmMKQEAgLTcwLDYg KzcwLDcgQEAgR2V0Rm9yZWlnbkRhdGFXcmFwcGVyRXh0ZW5kZWQoT2lkIGZkd2lkLCBiaXRzMTYg ZmxhZ3MpCiAJZmR3LT5mZHduYW1lID0gcHN0cmR1cChOYW1lU3RyKGZkd2Zvcm0tPmZkd25hbWUp KTsKIAlmZHctPmZkd2hhbmRsZXIgPSBmZHdmb3JtLT5mZHdoYW5kbGVyOwogCWZkdy0+ZmR3dmFs aWRhdG9yID0gZmR3Zm9ybS0+ZmR3dmFsaWRhdG9yOworCWZkdy0+ZmR3Y29ubmVjdGlvbiA9IGZk d2Zvcm0tPmZkd2Nvbm5lY3Rpb247CiAKIAkvKiBFeHRyYWN0IHRoZSBmZHdvcHRpb25zICovCiAJ ZGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoRk9SRUlHTkRBVEFXUkFQUEVST0lELApAQCAtMTc0LDYg KzE3NSwzMSBAQCBHZXRGb3JlaWduU2VydmVyRXh0ZW5kZWQoT2lkIHNlcnZlcmlkLCBiaXRzMTYg ZmxhZ3MpCiB9CiAKIAorLyoKKyAqIEZvcmVpZ25TZXJ2ZXJOYW1lIC0gZ2V0IG5hbWUgb2YgZm9y ZWlnbiBzZXJ2ZXIuCisgKi8KK2NoYXIgKgorRm9yZWlnblNlcnZlck5hbWUoT2lkIHNlcnZlcmlk KQoreworCUZvcm1fcGdfZm9yZWlnbl9zZXJ2ZXIgc2VydmVyZm9ybTsKKwljaGFyICpzZXJ2ZXJu YW1lOworCUhlYXBUdXBsZQl0cDsKKworCXRwID0gU2VhcmNoU3lzQ2FjaGUxKEZPUkVJR05TRVJW RVJPSUQsIE9iamVjdElkR2V0RGF0dW0oc2VydmVyaWQpKTsKKworCWlmICghSGVhcFR1cGxlSXNW YWxpZCh0cCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBmb3JlaWdu IHNlcnZlciAldSIsIHNlcnZlcmlkKTsKKworCXNlcnZlcmZvcm0gPSAoRm9ybV9wZ19mb3JlaWdu X3NlcnZlcikgR0VUU1RSVUNUKHRwKTsKKworCXNlcnZlcm5hbWUgPSBwc3RyZHVwKE5hbWVTdHIo c2VydmVyZm9ybS0+c3J2bmFtZSkpOworCisJUmVsZWFzZVN5c0NhY2hlKHRwKTsKKworCXJldHVy biBzZXJ2ZXJuYW1lOworfQorCisKIC8qCiAgKiBHZXRGb3JlaWduU2VydmVyQnlOYW1lIC0gbG9v ayB1cCB0aGUgZm9yZWlnbiBzZXJ2ZXIgZGVmaW5pdGlvbiBieSBuYW1lLgogICovCkBAIC0xODks NiArMjE1LDIyIEBAIEdldEZvcmVpZ25TZXJ2ZXJCeU5hbWUoY29uc3QgY2hhciAqc3J2bmFtZSwg Ym9vbCBtaXNzaW5nX29rKQogfQogCiAKKy8qCisgKiBSZXRyaWV2ZSBjb25uZWN0aW9uIHN0cmlu ZyBmcm9tIHNlcnZlcidzIEZEVy4KKyAqLworY2hhciAqCitGb3JlaWduU2VydmVyQ29ubmVjdGlv blN0cmluZyhPaWQgdXNlcmlkLCBPaWQgc2VydmVyaWQpCit7CisJLyogVE9ETzogY2xlYW4gdXAg bWVtb3J5ICovCisJRm9yZWlnblNlcnZlciAqc2VydmVyID0gR2V0Rm9yZWlnblNlcnZlcihzZXJ2 ZXJpZCk7CisJRm9yZWlnbkRhdGFXcmFwcGVyICpmZHcgPSBHZXRGb3JlaWduRGF0YVdyYXBwZXIo c2VydmVyLT5mZHdpZCk7CisJRGF0dW0gY29ubmVjdGlvbl90ZXh0ID0gT2lkRnVuY3Rpb25DYWxs MihmZHctPmZkd2Nvbm5lY3Rpb24sCisJCQkJCQkJCQkJCSBPYmplY3RJZEdldERhdHVtKHVzZXJp ZCksCisJCQkJCQkJCQkJCSBPYmplY3RJZEdldERhdHVtKHNlcnZlcmlkKSk7CisJcmV0dXJuIHRl eHRfdG9fY3N0cmluZyhEYXR1bUdldFRleHRQUChjb25uZWN0aW9uX3RleHQpKTsKK30KKworCiAv KgogICogR2V0VXNlck1hcHBpbmcgLSBsb29rIHVwIHRoZSB1c2VyIG1hcHBpbmcuCiAgKgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9n cmFtLnkKaW5kZXggYzZlMmY2NzlmZC4uMDRhYWJmMDhkMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC01Mjkz LDYgKzUyOTMsOCBAQCBmZHdfb3B0aW9uOgogCQkJfCBOTyBIQU5ETEVSCQkJCQkJeyAkJCA9IG1h a2VEZWZFbGVtKCJoYW5kbGVyIiwgTlVMTCwgQDEpOyB9CiAJCQl8IFZBTElEQVRPUiBoYW5kbGVy X25hbWUJCQl7ICQkID0gbWFrZURlZkVsZW0oInZhbGlkYXRvciIsIChOb2RlICopICQyLCBAMSk7 IH0KIAkJCXwgTk8gVkFMSURBVE9SCQkJCQkJeyAkJCA9IG1ha2VEZWZFbGVtKCJ2YWxpZGF0b3Ii LCBOVUxMLCBAMSk7IH0KKwkJCXwgQ09OTkVDVElPTiBoYW5kbGVyX25hbWUJCQl7ICQkID0gbWFr ZURlZkVsZW0oImNvbm5lY3Rpb24iLCAoTm9kZSAqKSAkMiwgQDEpOyB9CisJCQl8IE5PIENPTk5F Q1RJT04JCQkJCQl7ICQkID0gbWFrZURlZkVsZW0oImNvbm5lY3Rpb24iLCBOVUxMLCBAMSk7IH0K IAkJOwogCiBmZHdfb3B0aW9uczoKQEAgLTEwNjY3LDYgKzEwNjY5LDE2IEBAIENyZWF0ZVN1YnNj cmlwdGlvblN0bXQ6CiAJCQkJCW4tPm9wdGlvbnMgPSAkODsKIAkJCQkJJCQgPSAoTm9kZSAqKSBu OwogCQkJCX0KKwkJCXwgQ1JFQVRFIFNVQlNDUklQVElPTiBuYW1lIFNFUlZFUiBuYW1lIFBVQkxJ Q0FUSU9OIG5hbWVfbGlzdCBvcHRfZGVmaW5pdGlvbgorCQkJCXsKKwkJCQkJQ3JlYXRlU3Vic2Ny aXB0aW9uU3RtdCAqbiA9CisJCQkJCQltYWtlTm9kZShDcmVhdGVTdWJzY3JpcHRpb25TdG10KTsK KwkJCQkJbi0+c3VibmFtZSA9ICQzOworCQkJCQluLT5zZXJ2ZXJuYW1lID0gJDU7CisJCQkJCW4t PnB1YmxpY2F0aW9uID0gJDc7CisJCQkJCW4tPm9wdGlvbnMgPSAkODsKKwkJCQkJJCQgPSAoTm9k ZSAqKSBuOworCQkJCX0KIAkJOwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTEwNjk2LDYg KzEwNzA4LDE2IEBAIEFsdGVyU3Vic2NyaXB0aW9uU3RtdDoKIAkJCQkJbi0+Y29ubmluZm8gPSAk NTsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KKwkJCXwgQUxURVIgU1VCU0NSSVBUSU9O IG5hbWUgU0VSVkVSIG5hbWUKKwkJCQl7CisJCQkJCUFsdGVyU3Vic2NyaXB0aW9uU3RtdCAqbiA9 CisJCQkJCQltYWtlTm9kZShBbHRlclN1YnNjcmlwdGlvblN0bXQpOworCisJCQkJCW4tPmtpbmQg PSBBTFRFUl9TVUJTQ1JJUFRJT05fU0VSVkVSOworCQkJCQluLT5zdWJuYW1lID0gJDM7CisJCQkJ CW4tPnNlcnZlcm5hbWUgPSAkNTsKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KIAkJCXwg QUxURVIgU1VCU0NSSVBUSU9OIG5hbWUgUkVGUkVTSCBQVUJMSUNBVElPTiBvcHRfZGVmaW5pdGlv bgogCQkJCXsKIAkJCQkJQWx0ZXJTdWJzY3JpcHRpb25TdG10ICpuID0KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IGI1YTgwZmUzZTguLjM3MjVjNTNkOGIgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtMzg3OSw3ICszODc5 LDcgQEAgbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2b2lkKQogCS8qIEVuc3VyZSBhbGxvY2F0 aW9ucyBpbiBwZXJtYW5lbnQgY29udGV4dC4gKi8KIAlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dp dGNoVG8oQXBwbHlDb250ZXh0KTsKIAotCW5ld3N1YiA9IEdldFN1YnNjcmlwdGlvbihNeUxvZ2lj YWxSZXBXb3JrZXItPnN1YmlkLCB0cnVlKTsKKwluZXdzdWIgPSBHZXRTdWJzY3JpcHRpb24oTXlM b2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgdHJ1ZSwgdHJ1ZSk7CiAKIAkvKgogCSAqIEV4aXQgaWYg dGhlIHN1YnNjcmlwdGlvbiB3YXMgcmVtb3ZlZC4gVGhpcyBub3JtYWxseSBzaG91bGQgbm90IGhh cHBlbgpAQCAtMzk4NSw3ICszOTg1LDkgQEAgbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2b2lk KQogfQogCiAvKgotICogQ2FsbGJhY2sgZnJvbSBzdWJzY3JpcHRpb24gc3lzY2FjaGUgaW52YWxp ZGF0aW9uLgorICogQ2FsbGJhY2sgZnJvbSBzdWJzY3JpcHRpb24gc3lzY2FjaGUgaW52YWxpZGF0 aW9uLiBBbHNvIG5lZWRlZCBmb3Igc2VydmVyIG9yCisgKiB1c2VyIG1hcHBpbmcgaW52YWxpZGF0 aW9uLCB3aGljaCBjYW4gY2hhbmdlIHRoZSBjb25uZWN0aW9uIGluZm9ybWF0aW9uIGZvcgorICog c3Vic2NyaXB0aW9ucyB0aGF0IGNvbm5lY3QgdXNpbmcgYSBzZXJ2ZXIgb2JqZWN0LgogICovCiBz dGF0aWMgdm9pZAogc3Vic2NyaXB0aW9uX2NoYW5nZV9jYihEYXR1bSBhcmcsIGludCBjYWNoZWlk LCB1aW50MzIgaGFzaHZhbHVlKQpAQCAtNDU4NCw3ICs0NTg2LDcgQEAgSW5pdGlhbGl6ZUxvZ1Jl cFdvcmtlcih2b2lkKQogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAJb2xkY3R4ID0gTWVt b3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CiAKLQlNeVN1YnNjcmlwdGlvbiA9IEdl dFN1YnNjcmlwdGlvbihNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB0cnVlKTsKKwlNeVN1YnNj cmlwdGlvbiA9IEdldFN1YnNjcmlwdGlvbihNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB0cnVl LCB0cnVlKTsKIAlpZiAoIU15U3Vic2NyaXB0aW9uKQogCXsKIAkJZXJlcG9ydChMT0csCkBAIC00 NjIxLDYgKzQ2MjMsMTQgQEAgSW5pdGlhbGl6ZUxvZ1JlcFdvcmtlcih2b2lkKQogCUNhY2hlUmVn aXN0ZXJTeXNjYWNoZUNhbGxiYWNrKFNVQlNDUklQVElPTk9JRCwKIAkJCQkJCQkJICBzdWJzY3Jp cHRpb25fY2hhbmdlX2NiLAogCQkJCQkJCQkgIChEYXR1bSkgMCk7CisJLyogS2VlcCB1cyBpbmZv cm1lZCBhYm91dCBzdWJzY3JpcHRpb24gY2hhbmdlcy4gKi8KKwlDYWNoZVJlZ2lzdGVyU3lzY2Fj aGVDYWxsYmFjayhGT1JFSUdOU0VSVkVST0lELAorCQkJCQkJCQkgIHN1YnNjcmlwdGlvbl9jaGFu Z2VfY2IsCisJCQkJCQkJCSAgKERhdHVtKSAwKTsKKwkvKiBLZWVwIHVzIGluZm9ybWVkIGFib3V0 IHN1YnNjcmlwdGlvbiBjaGFuZ2VzLiAqLworCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNr KFVTRVJNQVBQSU5HT0lELAorCQkJCQkJCQkgIHN1YnNjcmlwdGlvbl9jaGFuZ2VfY2IsCisJCQkJ CQkJCSAgKERhdHVtKSAwKTsKIAogCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNrKEFVVEhP SUQsCiAJCQkJCQkJCSAgc3Vic2NyaXB0aW9uX2NoYW5nZV9jYiwKZGlmZiAtLWdpdCBhL3NyYy9i aW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IDEw Y2JmMDJiZWIuLmFjMGU5Zjk4ZGYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1w LmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtNDYzNiw2ICs0NjM2LDcgQEAg Z2V0U3Vic2NyaXB0aW9ucyhBcmNoaXZlICpmb3V0KQogCWludAkJCWlfc3ViZGlzYWJsZW9uZXJy OwogCWludAkJCWlfc3VicGFzc3dvcmRyZXF1aXJlZDsKIAlpbnQJCQlpX3N1YnJ1bmFzb3duZXI7 CisJaW50CQkJaV9zdWJzZXJ2ZXJuYW1lOwogCWludAkJCWlfc3ViY29ubmluZm87CiAJaW50CQkJ aV9zdWJzbG90bmFtZTsKIAlpbnQJCQlpX3N1YnN5bmNjb21taXQ7CkBAIC00NzA4LDExICs0NzA5 LDEzIEBAIGdldFN1YnNjcmlwdGlvbnMoQXJjaGl2ZSAqZm91dCkKIAkJCQkJCSAgTE9HSUNBTFJF UF9PUklHSU5fQU5ZKTsKIAogCWlmIChkb3B0LT5iaW5hcnlfdXBncmFkZSAmJiBmb3V0LT5yZW1v dGVWZXJzaW9uID49IDE3MDAwMCkKLQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgby5y ZW1vdGVfbHNuIEFTIHN1Ym9yaWdpbnJlbW90ZWxzbixcbiIKKwkJYXBwZW5kUFFFeHBCdWZmZXJT dHIocXVlcnksICIgZnMuc3J2bmFtZSBBUyBzdWJzZXJ2ZXJuYW1lLFxuIgorCQkJCQkJCSAiIG8u cmVtb3RlX2xzbiBBUyBzdWJvcmlnaW5yZW1vdGVsc24sXG4iCiAJCQkJCQkJICIgcy5zdWJlbmFi bGVkLFxuIgogCQkJCQkJCSAiIHMuc3ViZmFpbG92ZXJcbiIpOwogCWVsc2UKLQkJYXBwZW5kUFFF eHBCdWZmZXJTdHIocXVlcnksICIgTlVMTCBBUyBzdWJvcmlnaW5yZW1vdGVsc24sXG4iCisJCWFw cGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIE5VTEwgQVMgc3Vic2VydmVybmFtZSxcbiIKKwkJ CQkJCQkgIiBOVUxMIEFTIHN1Ym9yaWdpbnJlbW90ZWxzbixcbiIKIAkJCQkJCQkgIiBmYWxzZSBB UyBzdWJlbmFibGVkLFxuIgogCQkJCQkJCSAiIGZhbHNlIEFTIHN1YmZhaWxvdmVyXG4iKTsKIApA QCAtNDcyMSw2ICs0NzI0LDggQEAgZ2V0U3Vic2NyaXB0aW9ucyhBcmNoaXZlICpmb3V0KQogCiAJ aWYgKGRvcHQtPmJpbmFyeV91cGdyYWRlICYmIGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTcwMDAw KQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKKwkJCQkJCQkgIkxFRlQgSk9JTiBwZ19j YXRhbG9nLnBnX2ZvcmVpZ25fc2VydmVyIGZzIFxuIgorCQkJCQkJCSAiICAgIE9OIGZzLm9pZCA9 IHMuc3Vic2VydmVyIFxuIgogCQkJCQkJCSAiTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfcmVwbGlj YXRpb25fb3JpZ2luX3N0YXR1cyBvIFxuIgogCQkJCQkJCSAiICAgIE9OIG8uZXh0ZXJuYWxfaWQg PSAncGdfJyB8fCBzLm9pZDo6dGV4dCBcbiIpOwogCkBAIC00NzQ2LDYgKzQ3NTEsNyBAQCBnZXRT dWJzY3JpcHRpb25zKEFyY2hpdmUgKmZvdXQpCiAJaV9zdWJkaXNhYmxlb25lcnIgPSBQUWZudW1i ZXIocmVzLCAic3ViZGlzYWJsZW9uZXJyIik7CiAJaV9zdWJwYXNzd29yZHJlcXVpcmVkID0gUFFm bnVtYmVyKHJlcywgInN1YnBhc3N3b3JkcmVxdWlyZWQiKTsKIAlpX3N1YnJ1bmFzb3duZXIgPSBQ UWZudW1iZXIocmVzLCAic3VicnVuYXNvd25lciIpOworCWlfc3Vic2VydmVybmFtZSA9IFBRZm51 bWJlcihyZXMsICJzdWJzZXJ2ZXJuYW1lIik7CiAJaV9zdWJjb25uaW5mbyA9IFBRZm51bWJlcihy ZXMsICJzdWJjb25uaW5mbyIpOwogCWlfc3Vic2xvdG5hbWUgPSBQUWZudW1iZXIocmVzLCAic3Vi c2xvdG5hbWUiKTsKIAlpX3N1YnN5bmNjb21taXQgPSBQUWZudW1iZXIocmVzLCAic3Vic3luY2Nv bW1pdCIpOwpAQCAtNDc2Niw3ICs0NzcyLDEwIEBAIGdldFN1YnNjcmlwdGlvbnMoQXJjaGl2ZSAq Zm91dCkKIAkJQXNzaWduRHVtcElkKCZzdWJpbmZvW2ldLmRvYmopOwogCQlzdWJpbmZvW2ldLmRv YmoubmFtZSA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaSwgaV9zdWJuYW1lKSk7CiAJCXN1 YmluZm9baV0ucm9sbmFtZSA9IGdldFJvbGVOYW1lKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3N1Ym93 bmVyKSk7Ci0KKwkJaWYgKFBRZ2V0aXNudWxsKHJlcywgaSwgaV9zdWJzZXJ2ZXJuYW1lKSkKKwkJ CXN1YmluZm9baV0uc3Vic2VydmVybmFtZSA9IE5VTEw7CisJCWVsc2UKKwkJCXN1YmluZm9baV0u c3Vic2VydmVybmFtZSA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaSwgaV9zdWJzZXJ2ZXJu YW1lKSk7CiAJCXN1YmluZm9baV0uc3ViYmluYXJ5ID0KIAkJCXBnX3N0cmR1cChQUWdldHZhbHVl KHJlcywgaSwgaV9zdWJiaW5hcnkpKTsKIAkJc3ViaW5mb1tpXS5zdWJzdHJlYW0gPQpAQCAtNDk5 NCw5ICs1MDAzLDE3IEBAIGR1bXBTdWJzY3JpcHRpb24oQXJjaGl2ZSAqZm91dCwgY29uc3QgU3Vi c2NyaXB0aW9uSW5mbyAqc3ViaW5mbykKIAlhcHBlbmRQUUV4cEJ1ZmZlcihkZWxxLCAiRFJPUCBT VUJTQ1JJUFRJT04gJXM7XG4iLAogCQkJCQkgIHFzdWJuYW1lKTsKIAotCWFwcGVuZFBRRXhwQnVm ZmVyKHF1ZXJ5LCAiQ1JFQVRFIFNVQlNDUklQVElPTiAlcyBDT05ORUNUSU9OICIsCisJYXBwZW5k UFFFeHBCdWZmZXIocXVlcnksICJDUkVBVEUgU1VCU0NSSVBUSU9OICVzICIsCiAJCQkJCSAgcXN1 Ym5hbWUpOwotCWFwcGVuZFN0cmluZ0xpdGVyYWxBSChxdWVyeSwgc3ViaW5mby0+c3ViY29ubmlu Zm8sIGZvdXQpOworCWlmIChzdWJpbmZvLT5zdWJzZXJ2ZXJuYW1lKQorCXsKKwkJYXBwZW5kUFFF eHBCdWZmZXIocXVlcnksICJTRVJWRVIgJXMiLCBmbXRJZChzdWJpbmZvLT5zdWJzZXJ2ZXJuYW1l KSk7CisJfQorCWVsc2UKKwl7CisJCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiQ09OTkVDVElP TiAiKTsKKwkJYXBwZW5kU3RyaW5nTGl0ZXJhbEFIKHF1ZXJ5LCBzdWJpbmZvLT5zdWJjb25uaW5m bywgZm91dCk7CisJfQogCiAJLyogQnVpbGQgbGlzdCBvZiBxdW90ZWQgcHVibGljYXRpb25zIGFu ZCBhcHBlbmQgdGhlbSB0byBxdWVyeS4gKi8KIAlpZiAoIXBhcnNlUEdBcnJheShzdWJpbmZvLT5z dWJwdWJsaWNhdGlvbnMsICZwdWJuYW1lcywgJm5wdWJuYW1lcykpCmRpZmYgLS1naXQgYS9zcmMv YmluL3BnX2R1bXAvcGdfZHVtcC5oIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAppbmRleCA5 YmM5MzUyMGI0Li42ZmRmNjM2ODhjIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVt cC5oCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKQEAgLTY2MCw2ICs2NjAsNyBAQCB0 eXBlZGVmIHN0cnVjdCBfU3Vic2NyaXB0aW9uSW5mbwogCWNoYXIJICAgKnN1YmRpc2FibGVvbmVy cjsKIAljaGFyCSAgICpzdWJwYXNzd29yZHJlcXVpcmVkOwogCWNoYXIJICAgKnN1YnJ1bmFzb3du ZXI7CisJY2hhcgkgICAqc3Vic2VydmVybmFtZTsKIAljaGFyCSAgICpzdWJjb25uaW5mbzsKIAlj aGFyCSAgICpzdWJzbG90bmFtZTsKIAljaGFyCSAgICpzdWJzeW5jY29tbWl0OwpkaWZmIC0tZ2l0 IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0 ZS5jCmluZGV4IDczMTMzY2U3MzUuLmIzYWM4Njg5MGEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNx bC90YWItY29tcGxldGUuYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMKQEAgLTMz MjksNyArMzMyOSw3IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3Rh cnQsIGludCBlbmQpCiAKIC8qIENSRUFURSBTVUJTQ1JJUFRJT04gKi8KIAllbHNlIGlmIChNYXRj aGVzKCJDUkVBVEUiLCAiU1VCU0NSSVBUSU9OIiwgTWF0Y2hBbnkpKQotCQlDT01QTEVURV9XSVRI KCJDT05ORUNUSU9OIik7CisJCUNPTVBMRVRFX1dJVEgoIlNFUlZFUiIsICJDT05ORUNUSU9OIik7 CiAJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlNVQlNDUklQVElPTiIsIE1hdGNoQW55LCAi Q09OTkVDVElPTiIsIE1hdGNoQW55KSkKIAkJQ09NUExFVEVfV0lUSCgiUFVCTElDQVRJT04iKTsK IAllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiU1VCU0NSSVBUSU9OIiwgTWF0Y2hBbnksICJD T05ORUNUSU9OIiwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfZm9yZWlnbl9k YXRhX3dyYXBwZXIuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfZm9yZWlnbl9kYXRhX3dyYXBw ZXIuaAppbmRleCAwZDg3NTlkM2ZkLi43MDBkNmVlZDY1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX2ZvcmVpZ25fZGF0YV93cmFwcGVyLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19mb3JlaWduX2RhdGFfd3JhcHBlci5oCkBAIC0zNiw2ICszNiw5IEBAIENBVEFMT0co cGdfZm9yZWlnbl9kYXRhX3dyYXBwZXIsMjMyOCxGb3JlaWduRGF0YVdyYXBwZXJSZWxhdGlvbklk KQogCU9pZAkJCWZkd3ZhbGlkYXRvciBCS0lfTE9PS1VQX09QVChwZ19wcm9jKTsJLyogb3B0aW9u IHZhbGlkYXRpb24KIAkJCQkJCQkJCQkJCQkJICogZnVuY3Rpb24sIG9yIDAgaWYKIAkJCQkJCQkJ CQkJCQkJICogbm9uZSAqLworCU9pZAkJCWZkd2Nvbm5lY3Rpb24gQktJX0xPT0tVUF9PUFQocGdf cHJvYyk7CS8qIGNvbm5lY3Rpb24gc3RyaW5nCisJCQkJCQkJCQkJCQkJCSAqIGZ1bmN0aW9uLCBv ciAwIGlmCisJCQkJCQkJCQkJCQkJCSAqIG5vbmUgKi8KIAogI2lmZGVmIENBVEFMT0dfVkFSTEVO CQkJLyogdmFyaWFibGUtbGVuZ3RoIGZpZWxkcyBzdGFydCBoZXJlICovCiAJYWNsaXRlbQkJZmR3 YWNsWzFdOwkJLyogYWNjZXNzIHBlcm1pc3Npb25zICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJz Y3JpcHRpb24uaAppbmRleCAwYWExNGVjNGEyLi5iODRjMjVkNTVlIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfc3Vic2NyaXB0aW9uLmgKQEAgLTk4LDkgKzk4LDExIEBAIENBVEFMT0cocGdfc3Vic2Ny aXB0aW9uLDYxMDAsU3Vic2NyaXB0aW9uUmVsYXRpb25JZCkgQktJX1NIQVJFRF9SRUxBVElPTiBC S0lfUk9XCiAJCQkJCQkJCSAqIHNsb3RzKSBpbiB0aGUgdXBzdHJlYW0gZGF0YWJhc2UgYXJlIGVu YWJsZWQKIAkJCQkJCQkJICogdG8gYmUgc3luY2hyb25pemVkIHRvIHRoZSBzdGFuZGJ5cy4gKi8K IAorCU9pZAkJCXN1YnNlcnZlcjsJCS8qIFNldCBpZiBjb25uZWN0aW5nIHdpdGggc2VydmVyICov CisKICNpZmRlZiBDQVRBTE9HX1ZBUkxFTgkJCS8qIHZhcmlhYmxlLWxlbmd0aCBmaWVsZHMgc3Rh cnQgaGVyZSAqLwogCS8qIENvbm5lY3Rpb24gc3RyaW5nIHRvIHRoZSBwdWJsaXNoZXIgKi8KLQl0 ZXh0CQlzdWJjb25uaW5mbyBCS0lfRk9SQ0VfTk9UX05VTEw7CisJdGV4dAkJc3ViY29ubmluZm87 CS8qIFNldCBpZiBjb25uZWN0aW5nIHdpdGggY29ubmVjdGlvbiBzdHJpbmcgKi8KIAogCS8qIFNs b3QgbmFtZSBvbiBwdWJsaXNoZXIgKi8KIAlOYW1lRGF0YQlzdWJzbG90bmFtZSBCS0lfRk9SQ0Vf TlVMTDsKQEAgLTE3NCw3ICsxNzYsOCBAQCB0eXBlZGVmIHN0cnVjdCBTdWJzY3JpcHRpb24KICAq LwogI2RlZmluZSBMT0dJQ0FMUkVQX1NUUkVBTV9QQVJBTExFTCAncCcKIAotZXh0ZXJuIFN1YnNj cmlwdGlvbiAqR2V0U3Vic2NyaXB0aW9uKE9pZCBzdWJpZCwgYm9vbCBtaXNzaW5nX29rKTsKK2V4 dGVybiBTdWJzY3JpcHRpb24gKkdldFN1YnNjcmlwdGlvbihPaWQgc3ViaWQsIGJvb2wgbWlzc2lu Z19vaywKKwkJCQkJCQkJCSBib29sIGFjbGNoZWNrKTsKIGV4dGVybiB2b2lkIEZyZWVTdWJzY3Jp cHRpb24oU3Vic2NyaXB0aW9uICpzdWIpOwogZXh0ZXJuIHZvaWQgRGlzYWJsZVN1YnNjcmlwdGlv bihPaWQgc3ViaWQpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9mb3JlaWduL2ZvcmVpZ24u aCBiL3NyYy9pbmNsdWRlL2ZvcmVpZ24vZm9yZWlnbi5oCmluZGV4IDgyYjgxNTMxMDAuLmI0MDI1 ZTdmMWUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2ZvcmVpZ24vZm9yZWlnbi5oCisrKyBiL3Ny Yy9pbmNsdWRlL2ZvcmVpZ24vZm9yZWlnbi5oCkBAIC0yOCw2ICsyOCw3IEBAIHR5cGVkZWYgc3Ry dWN0IEZvcmVpZ25EYXRhV3JhcHBlcgogCWNoYXIJICAgKmZkd25hbWU7CQkvKiBOYW1lIG9mIHRo ZSBGRFcgKi8KIAlPaWQJCQlmZHdoYW5kbGVyOwkJLyogT2lkIG9mIGhhbmRsZXIgZnVuY3Rpb24s IG9yIDAgKi8KIAlPaWQJCQlmZHd2YWxpZGF0b3I7CS8qIE9pZCBvZiB2YWxpZGF0b3IgZnVuY3Rp b24sIG9yIDAgKi8KKwlPaWQJCQlmZHdjb25uZWN0aW9uOwkvKiBPaWQgb2YgY29ubmVjdGlvbiBz dHJpbmcgZnVuY3Rpb24sIG9yIDAgKi8KIAlMaXN0CSAgICpvcHRpb25zOwkJLyogZmR3b3B0aW9u cyBhcyBEZWZFbGVtIGxpc3QgKi8KIH0gRm9yZWlnbkRhdGFXcmFwcGVyOwogCkBAIC02NSwxMCAr NjYsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgRm9yZWlnblRhYmxlCiAKIAogZXh0ZXJuIEZvcmVpZ25T ZXJ2ZXIgKkdldEZvcmVpZ25TZXJ2ZXIoT2lkIHNlcnZlcmlkKTsKK2V4dGVybiBjaGFyICpGb3Jl aWduU2VydmVyTmFtZShPaWQgc2VydmVyaWQpOwogZXh0ZXJuIEZvcmVpZ25TZXJ2ZXIgKkdldEZv cmVpZ25TZXJ2ZXJFeHRlbmRlZChPaWQgc2VydmVyaWQsCiAJCQkJCQkJCQkJCSAgIGJpdHMxNiBm bGFncyk7CiBleHRlcm4gRm9yZWlnblNlcnZlciAqR2V0Rm9yZWlnblNlcnZlckJ5TmFtZShjb25z dCBjaGFyICpzcnZuYW1lLAogCQkJCQkJCQkJCQkgYm9vbCBtaXNzaW5nX29rKTsKK2V4dGVybiBj aGFyICpGb3JlaWduU2VydmVyQ29ubmVjdGlvblN0cmluZyhPaWQgdXNlcmlkLCBPaWQgc2VydmVy aWQpOwogZXh0ZXJuIFVzZXJNYXBwaW5nICpHZXRVc2VyTWFwcGluZyhPaWQgdXNlcmlkLCBPaWQg c2VydmVyaWQpOwogZXh0ZXJuIEZvcmVpZ25EYXRhV3JhcHBlciAqR2V0Rm9yZWlnbkRhdGFXcmFw cGVyKE9pZCBmZHdpZCk7CiBleHRlcm4gRm9yZWlnbkRhdGFXcmFwcGVyICpHZXRGb3JlaWduRGF0 YVdyYXBwZXJFeHRlbmRlZChPaWQgZmR3aWQsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rl cy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggMjM4 MDgyMTYwMC4uOTBiMjAzZGM2MCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vu b2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtNDA0Miw2ICs0 MDQyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ3JlYXRlU3Vic2NyaXB0aW9uU3RtdAogewogCU5vZGVU YWcJCXR5cGU7CiAJY2hhcgkgICAqc3VibmFtZTsJCS8qIE5hbWUgb2YgdGhlIHN1YnNjcmlwdGlv biAqLworCWNoYXIJICAgKnNlcnZlcm5hbWU7CQkvKiBTZXJ2ZXIgbmFtZSBvZiBwdWJsaXNoZXIg Ki8KIAljaGFyCSAgICpjb25uaW5mbzsJCS8qIENvbm5lY3Rpb24gc3RyaW5nIHRvIHB1Ymxpc2hl ciAqLwogCUxpc3QJICAgKnB1YmxpY2F0aW9uOwkvKiBPbmUgb3IgbW9yZSBwdWJsaWNhdGlvbiB0 byBzdWJzY3JpYmUgdG8gKi8KIAlMaXN0CSAgICpvcHRpb25zOwkJLyogTGlzdCBvZiBEZWZFbGVt IG5vZGVzICovCkBAIC00MDUwLDYgKzQwNTEsNyBAQCB0eXBlZGVmIHN0cnVjdCBDcmVhdGVTdWJz Y3JpcHRpb25TdG10CiB0eXBlZGVmIGVudW0gQWx0ZXJTdWJzY3JpcHRpb25UeXBlCiB7CiAJQUxU RVJfU1VCU0NSSVBUSU9OX09QVElPTlMsCisJQUxURVJfU1VCU0NSSVBUSU9OX1NFUlZFUiwKIAlB TFRFUl9TVUJTQ1JJUFRJT05fQ09OTkVDVElPTiwKIAlBTFRFUl9TVUJTQ1JJUFRJT05fU0VUX1BV QkxJQ0FUSU9OLAogCUFMVEVSX1NVQlNDUklQVElPTl9BRERfUFVCTElDQVRJT04sCkBAIC00MDY0 LDYgKzQwNjYsNyBAQCB0eXBlZGVmIHN0cnVjdCBBbHRlclN1YnNjcmlwdGlvblN0bXQKIAlOb2Rl VGFnCQl0eXBlOwogCUFsdGVyU3Vic2NyaXB0aW9uVHlwZSBraW5kOyAvKiBBTFRFUl9TVUJTQ1JJ UFRJT05fT1BUSU9OUywgZXRjICovCiAJY2hhcgkgICAqc3VibmFtZTsJCS8qIE5hbWUgb2YgdGhl IHN1YnNjcmlwdGlvbiAqLworCWNoYXIJICAgKnNlcnZlcm5hbWU7CQkvKiBTZXJ2ZXIgbmFtZSBv ZiBwdWJsaXNoZXIgKi8KIAljaGFyCSAgICpjb25uaW5mbzsJCS8qIENvbm5lY3Rpb24gc3RyaW5n IHRvIHB1Ymxpc2hlciAqLwogCUxpc3QJICAgKnB1YmxpY2F0aW9uOwkvKiBPbmUgb3IgbW9yZSBw dWJsaWNhdGlvbiB0byBzdWJzY3JpYmUgdG8gKi8KIAlMaXN0CSAgICpvcHRpb25zOwkJLyogTGlz dCBvZiBEZWZFbGVtIG5vZGVzICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL29pZGpvaW5zLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb2lkam9pbnMub3V0 CmluZGV4IDIxNWViODk5YmUuLjU5YzY0MTI2YmQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvb2lkam9pbnMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv b2lkam9pbnMub3V0CkBAIC0yMjQsNiArMjI0LDcgQEAgTk9USUNFOiAgY2hlY2tpbmcgcGdfZXh0 ZW5zaW9uIHtleHRjb25maWd9ID0+IHBnX2NsYXNzIHtvaWR9CiBOT1RJQ0U6ICBjaGVja2luZyBw Z19mb3JlaWduX2RhdGFfd3JhcHBlciB7ZmR3b3duZXJ9ID0+IHBnX2F1dGhpZCB7b2lkfQogTk9U SUNFOiAgY2hlY2tpbmcgcGdfZm9yZWlnbl9kYXRhX3dyYXBwZXIge2Zkd2hhbmRsZXJ9ID0+IHBn X3Byb2Mge29pZH0KIE5PVElDRTogIGNoZWNraW5nIHBnX2ZvcmVpZ25fZGF0YV93cmFwcGVyIHtm ZHd2YWxpZGF0b3J9ID0+IHBnX3Byb2Mge29pZH0KK05PVElDRTogIGNoZWNraW5nIHBnX2ZvcmVp Z25fZGF0YV93cmFwcGVyIHtmZHdjb25uZWN0aW9ufSA9PiBwZ19wcm9jIHtvaWR9CiBOT1RJQ0U6 ICBjaGVja2luZyBwZ19mb3JlaWduX3NlcnZlciB7c3J2b3duZXJ9ID0+IHBnX2F1dGhpZCB7b2lk fQogTk9USUNFOiAgY2hlY2tpbmcgcGdfZm9yZWlnbl9zZXJ2ZXIge3NydmZkd30gPT4gcGdfZm9y ZWlnbl9kYXRhX3dyYXBwZXIge29pZH0KIE5PVElDRTogIGNoZWNraW5nIHBnX3VzZXJfbWFwcGlu ZyB7dW11c2VyfSA9PiBwZ19hdXRoaWQge29pZH0KLS0gCjIuMzQuMQoK --=-e5bKRoMNqeTtYHgxlLvA--