Received: from malur.postgresql.org ([2a02:16a8:dc51::56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1foYvG-0000hu-Fk for pgsql-hackers@arkaria.postgresql.org; Sat, 11 Aug 2018 18:47:35 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1foYvD-0000sH-UN for pgsql-hackers@arkaria.postgresql.org; Sat, 11 Aug 2018 18:47:31 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1foYvD-0000sA-EM for pgsql-hackers@lists.postgresql.org; Sat, 11 Aug 2018 18:47:31 +0000 Received: from mail-wr1-x431.google.com ([2a00:1450:4864:20::431]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1foYuy-00050R-QU for pgsql-hackers@lists.postgresql.org; Sat, 11 Aug 2018 18:47:30 +0000 Received: by mail-wr1-x431.google.com with SMTP id h15-v6so10916420wrs.7 for ; Sat, 11 Aug 2018 11:47:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=UxJtWzB+XKSlK0ptBKc+CXas0dBCvJWiFP7HiEaeOsU=; b=SaFg0txGD+XS+UocXZ+2gqJa0NledS6B5JQGq70Yg7d0TzQST7X/1CofH9zFIX6oIK 9bCaPKK7uT6OC9wLMydfam2FVrS389Hb5WSRBTvnOh9V6aaftyiCE4PJEegqvPWslFzX RfZeDYNGyA6slAJOhopU4N2whCktyy0c9uaJGK6EmJoStKheXt2qi/HaTsfG1SoGz5+y ycFcAmdDt011lDgSShIy+20XCIDszhbcRZRxa/F29UvyZWKnGTBZ/8ydf8Gg/NZLX/K5 Nd7AwoV2qxn51lB27tbPoMhwQw6PW3cHaMkXTvXICB/1RLVQZgPfZH2fQLSSAvhPCChh 3UrQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=UxJtWzB+XKSlK0ptBKc+CXas0dBCvJWiFP7HiEaeOsU=; b=GMBSH0Gh6BoB4Sqao7OEIpNaAvCWVSSD0zHYDfLbW9PDAN0OnMn12T3/MrWrtAJLkQ u4ZM5hRMF7qXrAdy2zzqvb/0wrx+mv4+kGaBGVoXqEnPl+eeP0YWbBVV5MTHHL0JxG4G 6/PkQu78jUgWMmP5TkUvuFVN4P578CL4uZAXPdE0lgTwfmGXx1eIlsr8+wHwwZq27k7B ON4NbT7QpFzDoM6t0hB1jx6+sQSOTgo0KJnkDwNJPlwBnMg/J+0+yReEdoPjPRRS+7IW d8HxVPexDwV/p4yruErelKJxeHwNFizN8R4vN8IXLVnif05tyH6JRdISG9Jr9LFgTEW6 S6hw== X-Gm-Message-State: AOUpUlGAn7hvNK0mRgq4dBG+Ee1kmLHh4/Qf9xLRoFPefH5inRWHFNTO 4VV/98A+1tMwMExp/DMMjlxQ7fLOBulUZKUvnR4= X-Google-Smtp-Source: AA+uWPwE7If3yK+8tmYlkG1MqqROHdyyLb+MZ+dzHtnfnpZ6LWYiE5AE8kKpf7iCVy8w9SwACGk91n+1ICV8gB71eR0= X-Received: by 2002:adf:fe8f:: with SMTP id l15-v6mr6965699wrr.165.1534013235649; Sat, 11 Aug 2018 11:47:15 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a5d:428a:0:0:0:0:0 with HTTP; Sat, 11 Aug 2018 11:46:34 -0700 (PDT) In-Reply-To: References: <623395617.20171113141500@gf.microolap.com> <28924bcc-9242-9798-e4e8-9d83cea3fef6@dalibo.com> From: Pavel Stehule Date: Sat, 11 Aug 2018 20:46:34 +0200 Message-ID: Subject: Re: [HACKERS] proposal: schema variables To: Gilles Darold Cc: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000fe827b05732d4985" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --000000000000fe827b05732d4985 Content-Type: multipart/alternative; boundary="000000000000fe827805732d4983" --000000000000fe827805732d4983 Content-Type: text/plain; charset="UTF-8" 2018-08-11 7:39 GMT+02:00 Pavel Stehule : > Hi > > I am sending updated patch. It should to solve almost all Giles's and > Peter's objections. > > I am not happy so executor access values of variables directly. It is most > simple implementation - and I hope so it is good enough, but now the access > to variables is too volatile. But it is works good enough for usability > testing. > > I am thinking about some cache of used variables in ExprContext, so the > variable in one ExprContext will look like stable - more like PLpgSQL > variables. > I wrote EState based schema variable values cache, so now the variables in queries are stable (like PARAM_EXTERN) and can be used for optimization. Regards Pavel > > Regards > > Pavel > --000000000000fe827805732d4983 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable


2018-08-11 7:39 GMT+02:00 Pavel Stehule <pavel.stehule@gmail.c= om>:
= Hi

I am sending updated patch. It should to solve = almost all Giles's and Peter's objections.

I am not happy so executor access values of variables directly. It is most= simple implementation - and I hope so it is good enough, but now the acces= s to variables is too volatile. But it is works good enough for usability t= esting.

I am thinking about some cache of used= variables in ExprContext, so the variable in one ExprContext will look lik= e stable - more like PLpgSQL variables.=C2=A0
=
I wrote EState based schema variable values cache, so now th= e variables in queries are stable (like PARAM_EXTERN) and can be used for o= ptimization.

Regards

Pave= l
=C2=A0

Regards

Pavel

--000000000000fe827805732d4983-- --000000000000fe827b05732d4985 Content-Type: text/x-patch; charset="US-ASCII"; name="schema-variables-180811-02.patch" Content-Disposition: attachment; filename="schema-variables-180811-02.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_jkprue9q1 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2Nh dGFsb2dzLnNnbWwKaW5kZXggM2JiNDhkNGNjZi4uYjg2MzgyMzE2MCAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwK QEAgLTM1OSw2ICszNTksMTEgQEAKICAgICAgIDxlbnRyeT48bGluayBsaW5rZW5kPSJjYXRhbG9n LXBnLXVzZXItbWFwcGluZyI+PHN0cnVjdG5hbWU+cGdfdXNlcl9tYXBwaW5nPC9zdHJ1Y3RuYW1l PjwvbGluaz48L2VudHJ5PgogICAgICAgPGVudHJ5Pm1hcHBpbmdzIG9mIHVzZXJzIHRvIGZvcmVp Z24gc2VydmVyczwvZW50cnk+CiAgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50 cnk+PGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy12YXJpYWJsZSI+PHN0cnVjdG5hbWU+cGdfdmFy aWFibGU8L3N0cnVjdG5hbWU+PC9saW5rPjwvZW50cnk+CisgICAgICA8ZW50cnk+c2NoZW1hIHZh cmlhYmxlczwvZW50cnk+CisgICAgIDwvcm93PgogICAgIDwvdGJvZHk+CiAgICA8L3Rncm91cD4K ICAgPC90YWJsZT4KQEAgLTExMzExLDQgKzExMzE2LDEwNCBAQCBTRUxFQ1QgKiBGUk9NIHBnX2xv Y2tzIHBsIExFRlQgSk9JTiBwZ19wcmVwYXJlZF94YWN0cyBwcHgKIAogIDwvc2VjdDE+CiAKKyA8 c2VjdDEgaWQ9ImNhdGFsb2ctcGctdmFyaWFibGUiPgorICA8dGl0bGU+PHN0cnVjdG5hbWU+cGdf dmFyaWFibGU8L3N0cnVjdG5hbWU+PC90aXRsZT4KKworICA8aW5kZXh0ZXJtIHpvbmU9ImNhdGFs b2ctcGctdmFyaWFibGUiPgorICAgPHByaW1hcnk+cGdfdmFyaWFibGU8L3ByaW1hcnk+CisgIDwv aW5kZXh0ZXJtPgorCisgIDxwYXJhPgorICAgVGhlIHRhYmxlIDxzdHJ1Y3RuYW1lPnBnX3Zhcmlh YmxlPC9zdHJ1Y3RuYW1lPiBob2xkcyBtZXRhZGF0YQorICAgb2Ygc2NoZW1hIHZhcmlhYmxlcy4K KyAgPC9wYXJhPgorCisgIDx0YWJsZT4KKyAgIDx0aXRsZT48c3RydWN0bmFtZT5wZ192aWV3czwv c3RydWN0bmFtZT4gQ29sdW1uczwvdGl0bGU+CisKKyAgIDx0Z3JvdXAgY29scz0iNCI+CisgICAg PHRoZWFkPgorICAgICA8cm93PgorICAgICAgPGVudHJ5Pk5hbWU8L2VudHJ5PgorICAgICAgPGVu dHJ5PlR5cGU8L2VudHJ5PgorICAgICAgPGVudHJ5PlJlZmVyZW5jZXM8L2VudHJ5PgorICAgICAg PGVudHJ5PkRlc2NyaXB0aW9uPC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90aGVhZD4KKyAg ICA8dGJvZHk+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPm9pZDwvc3Ry dWN0ZmllbGQ+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5vaWQ8L3R5cGU+PC9lbnRyeT4K KyAgICAgIDxlbnRyeT48L2VudHJ5PgorICAgICAgPGVudHJ5PlJvdyBpZGVudGlmaWVyIChoaWRk ZW4gYXR0cmlidXRlOyBtdXN0IGJlIGV4cGxpY2l0bHkgc2VsZWN0ZWQpPC9lbnRyeT4KKyAgICAg PC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+dmFybmFtZTwv c3RydWN0ZmllbGQ+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5uYW1lPC90eXBlPjwvZW50 cnk+CisgICAgICA8ZW50cnk+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT5OYW1lIG9mIHRoZSBzY2hl bWEgdmFyaWFibGU8L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVu dHJ5PjxzdHJ1Y3RmaWVsZD52YXJuYW1lc3BhY2U8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisgICAg ICA8ZW50cnk+PHR5cGU+b2lkPC90eXBlPjwvZW50cnk+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+ PGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy1uYW1lc3BhY2UiPjxzdHJ1Y3RuYW1lPnBnX25hbWVz cGFjZTwvc3RydWN0bmFtZT48L2xpbms+Lm9pZDwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVu dHJ5PgorICAgICAgIFRoZSBPSUQgb2YgdGhlIG5hbWVzcGFjZSB0aGF0IGNvbnRhaW5zIHRoaXMg dmFyaWFibGUKKyAgICAgIDwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAg ICA8ZW50cnk+PHN0cnVjdGZpZWxkPnZhcnR5cGU8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisgICAg ICA8ZW50cnk+PHR5cGU+b2lkPC90eXBlPjwvZW50cnk+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+ PGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy10eXBlIj48c3RydWN0bmFtZT5wZ190eXBlPC9zdHJ1 Y3RuYW1lPjwvbGluaz4ub2lkPC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+CisgICAg ICAgVGhlIE9JRCBvZiB0aGUgZGF0YSB0eXBlIG9mIHRoaXMgdmFyaWFibGUuCisgICAgICA8L2Vu dHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5PjxzdHJ1Y3RmaWVs ZD52YXJ0eXBtb2Q8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisgICAgICA8ZW50cnk+PHR5cGU+aW50 NDwvdHlwZT48L2VudHJ5PgorICAgICAgPGVudHJ5PjwvZW50cnk+CisgICAgICA8ZW50cnk+Cisg ICAgICAgPHN0cnVjdGZpZWxkPnZhcnR5cG1vZDwvc3RydWN0ZmllbGQ+IHJlY29yZHMgdHlwZS1z cGVjaWZpYyBkYXRhCisgICAgICAgc3VwcGxpZWQgYXQgdGFibGUgY3JlYXRpb24gdGltZSAoZm9y IGV4YW1wbGUsIHRoZSBtYXhpbXVtCisgICAgICAgbGVuZ3RoIG9mIGEgPHR5cGU+dmFyY2hhcjwv dHlwZT4gY29sdW1uKS4gIEl0IGlzIHBhc3NlZCB0bworICAgICAgIHR5cGUtc3BlY2lmaWMgaW5w dXQgZnVuY3Rpb25zIGFuZCBsZW5ndGggY29lcmNpb24gZnVuY3Rpb25zLgorICAgICAgIFRoZSB2 YWx1ZSB3aWxsIGdlbmVyYWxseSBiZSAtMSBmb3IgdHlwZXMgdGhhdCBkbyBub3QgbmVlZCA8c3Ry dWN0ZmllbGQ+dmFydHlwbW9kPC9zdHJ1Y3RmaWVsZD4uCisgICAgICA8L2VudHJ5PgorICAgICA8 L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD52YXJvd25lcjwv c3RydWN0ZmllbGQ+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5vaWQ8L3R5cGU+PC9lbnRy eT4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD48bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLWF1dGhp ZCI+PHN0cnVjdG5hbWU+cGdfYXV0aGlkPC9zdHJ1Y3RuYW1lPjwvbGluaz4ub2lkPC9saXRlcmFs PjwvZW50cnk+CisgICAgICA8ZW50cnk+T3duZXIgb2YgdGhlIHZhcmlhYmxlPC9lbnRyeT4KKyAg ICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+dmFyZGVm ZXhwcjwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5wZ19ub2RlX3Ry ZWU8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48L2VudHJ5PgorICAgICAgPGVudHJ5PlRo ZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgdmFyaWFibGUgZGVmYXVsdCB2YWx1ZTwv ZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PHN0cnVjdGZp ZWxkPnZhcmFjbDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5hY2xp dGVtW108L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48L2VudHJ5PgorICAgICAgPGVudHJ5 PgorICAgICAgIEFjY2VzcyBwcml2aWxlZ2VzOyBzZWUKKyAgICAgICA8eHJlZiBsaW5rZW5kPSJz cWwtZ3JhbnQiLz4gYW5kCisgICAgICAgPHhyZWYgbGlua2VuZD0ic3FsLXJldm9rZSIvPgorICAg ICAgIGZvciBkZXRhaWxzCisgICAgICA8L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICA8L3Rib2R5 PgorICAgPC90Z3JvdXA+CisgIDwvdGFibGU+CisgPC9zZWN0MT4KKwogPC9jaGFwdGVyPgpkaWZm IC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9hbGxmaWxlcy5zZ21sIGIvZG9jL3NyYy9zZ21sL3Jl Zi9hbGxmaWxlcy5zZ21sCmluZGV4IGM4MWM4N2VmNDEuLjA2MzFjOWVkNTYgMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9yZWYvYWxsZmlsZXMuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2Fs bGZpbGVzLnNnbWwKQEAgLTQ3LDYgKzQ3LDcgQEAgQ29tcGxldGUgbGlzdCBvZiB1c2FibGUgc2dt bCBzb3VyY2UgZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkuCiA8IUVOVElUWSBhbHRlclR5cGUgICAg ICAgICAgU1lTVEVNICJhbHRlcl90eXBlLnNnbWwiPgogPCFFTlRJVFkgYWx0ZXJVc2VyICAgICAg ICAgIFNZU1RFTSAiYWx0ZXJfdXNlci5zZ21sIj4KIDwhRU5USVRZIGFsdGVyVXNlck1hcHBpbmcg ICBTWVNURU0gImFsdGVyX3VzZXJfbWFwcGluZy5zZ21sIj4KKzwhRU5USVRZIGFsdGVyVmFyaWFi bGUgICAgICBTWVNURU0gImFsdGVyX3ZhcmlhYmxlLnNnbWwiPgogPCFFTlRJVFkgYWx0ZXJWaWV3 ICAgICAgICAgIFNZU1RFTSAiYWx0ZXJfdmlldy5zZ21sIj4KIDwhRU5USVRZIGFuYWx5emUgICAg ICAgICAgICBTWVNURU0gImFuYWx5emUuc2dtbCI+CiA8IUVOVElUWSBiZWdpbiAgICAgICAgICAg ICAgU1lTVEVNICJiZWdpbi5zZ21sIj4KQEAgLTk5LDYgKzEwMCw3IEBAIENvbXBsZXRlIGxpc3Qg b2YgdXNhYmxlIHNnbWwgc291cmNlIGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5LgogPCFFTlRJVFkg Y3JlYXRlVHlwZSAgICAgICAgIFNZU1RFTSAiY3JlYXRlX3R5cGUuc2dtbCI+CiA8IUVOVElUWSBj cmVhdGVVc2VyICAgICAgICAgU1lTVEVNICJjcmVhdGVfdXNlci5zZ21sIj4KIDwhRU5USVRZIGNy ZWF0ZVVzZXJNYXBwaW5nICBTWVNURU0gImNyZWF0ZV91c2VyX21hcHBpbmcuc2dtbCI+Cis8IUVO VElUWSBjcmVhdGVWYXJpYWJsZSAgICAgU1lTVEVNICJjcmVhdGVfdmFyaWFibGUuc2dtbCI+CiA8 IUVOVElUWSBjcmVhdGVWaWV3ICAgICAgICAgU1lTVEVNICJjcmVhdGVfdmlldy5zZ21sIj4KIDwh RU5USVRZIGRlYWxsb2NhdGUgICAgICAgICBTWVNURU0gImRlYWxsb2NhdGUuc2dtbCI+CiA8IUVO VElUWSBkZWNsYXJlICAgICAgICAgICAgU1lTVEVNICJkZWNsYXJlLnNnbWwiPgpAQCAtMTQ4LDYg KzE1MCw3IEBAIENvbXBsZXRlIGxpc3Qgb2YgdXNhYmxlIHNnbWwgc291cmNlIGZpbGVzIGluIHRo aXMgZGlyZWN0b3J5LgogPCFFTlRJVFkgZHJvcFVzZXIgICAgICAgICAgIFNZU1RFTSAiZHJvcF91 c2VyLnNnbWwiPgogPCFFTlRJVFkgZHJvcFVzZXJNYXBwaW5nICAgIFNZU1RFTSAiZHJvcF91c2Vy X21hcHBpbmcuc2dtbCI+CiA8IUVOVElUWSBkcm9wVmlldyAgICAgICAgICAgU1lTVEVNICJkcm9w X3ZpZXcuc2dtbCI+Cis8IUVOVElUWSBkcm9wVmFyaWFibGUgICAgICAgU1lTVEVNICJkcm9wX3Zh cmlhYmxlLnNnbWwiPgogPCFFTlRJVFkgZW5kICAgICAgICAgICAgICAgIFNZU1RFTSAiZW5kLnNn bWwiPgogPCFFTlRJVFkgZXhlY3V0ZSAgICAgICAgICAgIFNZU1RFTSAiZXhlY3V0ZS5zZ21sIj4K IDwhRU5USVRZIGV4cGxhaW4gICAgICAgICAgICBTWVNURU0gImV4cGxhaW4uc2dtbCI+CkBAIC0x NTUsNiArMTU4LDcgQEAgQ29tcGxldGUgbGlzdCBvZiB1c2FibGUgc2dtbCBzb3VyY2UgZmlsZXMg aW4gdGhpcyBkaXJlY3RvcnkuCiA8IUVOVElUWSBncmFudCAgICAgICAgICAgICAgU1lTVEVNICJn cmFudC5zZ21sIj4KIDwhRU5USVRZIGltcG9ydEZvcmVpZ25TY2hlbWEgU1lTVEVNICJpbXBvcnRf Zm9yZWlnbl9zY2hlbWEuc2dtbCI+CiA8IUVOVElUWSBpbnNlcnQgICAgICAgICAgICAgU1lTVEVN ICJpbnNlcnQuc2dtbCI+Cis8IUVOVElUWSBsZXQgICAgICAgICAgICAgICAgU1lTVEVNICJsZXQu c2dtbCI+CiA8IUVOVElUWSBsaXN0ZW4gICAgICAgICAgICAgU1lTVEVNICJsaXN0ZW4uc2dtbCI+ CiA8IUVOVElUWSBsb2FkICAgICAgICAgICAgICAgU1lTVEVNICJsb2FkLnNnbWwiPgogPCFFTlRJ VFkgbG9jayAgICAgICAgICAgICAgIFNZU1RFTSAibG9jay5zZ21sIj4KZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC9yZWYvYWx0ZXJfdmFyaWFibGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0 ZXJfdmFyaWFibGUuc2dtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi42 Mzc2YWM3MTZiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl92YXJp YWJsZS5zZ21sCkBAIC0wLDAgKzEsMTcwIEBACis8IS0tCitkb2Mvc3JjL3NnbWwvcmVmL2FsdGVy X3ZhcmlhYmxlLnNnbWwKK1Bvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgorLS0+CisKKzxyZWZlbnRy eSBpZD0ic3FsLWFsdGVydmFyaWFibGUiPgorIDxpbmRleHRlcm0gem9uZT0ic3FsLWFsdGVydmFy aWFibGUiPgorICA8cHJpbWFyeT5BTFRFUiBWQVJJQUJMRTwvcHJpbWFyeT4KKyA8L2luZGV4dGVy bT4KKworIDxyZWZtZXRhPgorICA8cmVmZW50cnl0aXRsZT5BTFRFUiBWQVJJQUJMRTwvcmVmZW50 cnl0aXRsZT4KKyAgPG1hbnZvbG51bT43PC9tYW52b2xudW0+CisgIDxyZWZtaXNjaW5mbz5TUUwg LSBMYW5ndWFnZSBTdGF0ZW1lbnRzPC9yZWZtaXNjaW5mbz4KKyA8L3JlZm1ldGE+CisKKyA8cmVm bmFtZWRpdj4KKyAgPHJlZm5hbWU+QUxURVIgVkFSSUFCTEU8L3JlZm5hbWU+CisgIDxyZWZwdXJw b3NlPgorICAgY2hhbmdlIHRoZSBkZWZpbml0aW9uIG9mIGEgdmFyaWFibGUKKyAgPC9yZWZwdXJw b3NlPgorIDwvcmVmbmFtZWRpdj4KKworIDxyZWZzeW5vcHNpc2Rpdj4KKzxzeW5vcHNpcz4KK0FM VEVSIFZBUklBQkxFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNl YWJsZT4gT1dORVIgVE8geyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmV3X293bmVy PC9yZXBsYWNlYWJsZT4gfCBDVVJSRU5UX1VTRVIgfCBTRVNTSU9OX1VTRVIgfQorQUxURVIgVkFS SUFCTEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBS RU5BTUUgVE8gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5ld19uYW1lPC9yZXBsYWNl YWJsZT4KK0FMVEVSIFZBUklBQkxFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1l PC9yZXBsYWNlYWJsZT4gU0VUIFNDSEVNQSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ bmV3X3NjaGVtYTwvcmVwbGFjZWFibGU+Cis8L3N5bm9wc2lzPgorIDwvcmVmc3lub3BzaXNkaXY+ CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgPHBhcmE+ CisgICA8Y29tbWFuZD5BTFRFUiBWQVJJQUJMRTwvY29tbWFuZD4gY2hhbmdlcyB0aGUgZGVmaW5p dGlvbiBvZiBhbiBleGlzdGluZyB2YXJpYWJsZS4KKyAgIFRoZXJlIGFyZSBzZXZlcmFsIHN1YmZv cm1zOgorCisgIDx2YXJpYWJsZWxpc3Q+CisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxs aXRlcmFsPk9XTkVSPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJh PgorICAgICAgVGhpcyBmb3JtIGNoYW5nZXMgdGhlIG93bmVyIG9mIHRoZSB2YXJpYWJsZS4KKyAg ICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZh cmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5SRU5BTUU8L2xpdGVyYWw+PC90ZXJtPgor ICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGlzIGZvcm0gY2hhbmdlcyB0aGUg bmFtZSBvZiB0aGUgdmFyaWFibGUuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAg PC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PGxpdGVyYWw+ U0VUIFNDSEVNQTwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4K KyAgICAgIFRoaXMgZm9ybSBtb3ZlcyB0aGUgdmFyaWFibGUgaW50byBhbm90aGVyIHNjaGVtYS4K KyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICA8 L3ZhcmlhYmxlbGlzdD4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgWW91IG11c3Qgb3duIHRo ZSB2YXJpYWJsZSB0byB1c2UgPGNvbW1hbmQ+QUxURVIgVkFSSUFCTEU8L2NvbW1hbmQ+LgorICAg VG8gY2hhbmdlIHRoZSBzY2hlbWEgb2YgYSB2YXJpYWJsZSwgeW91IG11c3QgYWxzbyBoYXZlCisg ICA8bGl0ZXJhbD5DUkVBVEU8L2xpdGVyYWw+IHByaXZpbGVnZSBvbiB0aGUgbmV3IHNjaGVtYS4K KyAgIFRvIGFsdGVyIHRoZSBvd25lciwgeW91IG11c3QgYWxzbyBiZSBhIGRpcmVjdCBvciBpbmRp cmVjdCBtZW1iZXIgb2YgdGhlIG5ldworICAgb3duaW5nIHJvbGUsIGFuZCB0aGF0IHJvbGUgbXVz dCBoYXZlIDxsaXRlcmFsPkNSRUFURTwvbGl0ZXJhbD4gcHJpdmlsZWdlIG9uCisgICB0aGUgdmFy aWFibGUncyBzY2hlbWEuICAoVGhlc2UgcmVzdHJpY3Rpb25zIGVuZm9yY2UgdGhhdCBhbHRlcmlu ZyB0aGUgb3duZXIKKyAgIGRvZXNuJ3QgZG8gYW55dGhpbmcgeW91IGNvdWxkbid0IGRvIGJ5IGRy b3BwaW5nIGFuZCByZWNyZWF0aW5nIHRoZSB2YXJpYWJsZS4KKyAgIEhvd2V2ZXIsIGEgc3VwZXJ1 c2VyIGNhbiBhbHRlciBvd25lcnNoaXAgb2YgYW55IHR5cGUgYW55d2F5LikKKyAgPC9wYXJhPgor IDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5QYXJhbWV0ZXJzPC90aXRsZT4K KworICAgPHBhcmE+CisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgPHZhcmxpc3RlbnRyeT4KKyAg ICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJs ZT48L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBu YW1lIChwb3NzaWJseSBzY2hlbWEtcXVhbGlmaWVkKSBvZiBhbiBleGlzdGluZyB2YXJpYWJsZSB0 bworICAgICAgICBhbHRlci4KKyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAg ICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgPHRlcm0+PHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5ld19uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+ CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBuZXcgbmFtZSBm b3IgdGhlIHZhcmlhYmxlLgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAg IDwvdmFybGlzdGVudHJ5PgorCisgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICA8dGVybT48cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmV3X293bmVyPC9yZXBsYWNlYWJsZT48L3Rlcm0+ CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSB1c2VyIG5hbWUg b2YgdGhlIG5ldyBvd25lciBvZiB0aGUgdmFyaWFibGUuCisgICAgICAgPC9wYXJhPgorICAgICAg PC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgPHZhcmxpc3RlbnRyeT4K KyAgICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uZXdfc2NoZW1hPC9y ZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAg ICAgIFRoZSBuZXcgc2NoZW1hIGZvciB0aGUgdmFyaWFibGUuCisgICAgICAgPC9wYXJhPgorICAg ICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+ CisgICA8L3BhcmE+CisgIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5FeGFt cGxlczwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBUbyByZW5hbWUgYSB2YXJpYWJsZToKKzxwcm9n cmFtbGlzdGluZz4KK0FMVEVSIFZBUklBQkxFIGZvbyBSRU5BTUUgVE8gYm9vOworPC9wcm9ncmFt bGlzdGluZz4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgVG8gY2hhbmdlIHRoZSBvd25lciBv ZiB0aGUgdmFyaWFibGUgPGxpdGVyYWw+Ym9vPC9saXRlcmFsPgorICAgdG8gPGxpdGVyYWw+am9l PC9saXRlcmFsPjoKKzxwcm9ncmFtbGlzdGluZz4KK0FMVEVSIFZBUklBQkxFIGJvbyBPV05FUiBU TyBqb2U7Cis8L3Byb2dyYW1saXN0aW5nPgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBUbyBj aGFuZ2UgdGhlIHNjaGVtYSBvZiB0aGUgdmFyaWFibGUgPGxpdGVyYWw+Ym9vPC9saXRlcmFsPgor ICAgdG8gPGxpdGVyYWw+cHJpdmF0ZTwvbGl0ZXJhbD46Cis8cHJvZ3JhbWxpc3Rpbmc+CitBTFRF UiBWQVJJQUJMRSBib28gU0VUIFNDSEVNQSBwcml2YXRlOworPC9wcm9ncmFtbGlzdGluZz4KKyAg PC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5Db21wYXRpYmls aXR5PC90aXRsZT4KKworICA8cGFyYT4KKyAgIFRoaXMgY29tbWFuIGlzIGEgUG9zdGdyZVNRTCBl eHRlbnNpb24uCisgIDwvcGFyYT4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxIGlkPSJzcWwt YWx0ZXJ2YXJpYWJsZS1zZWUtYWxzbyI+CisgIDx0aXRsZT5TZWUgQWxzbzwvdGl0bGU+CisKKyAg PHNpbXBsZWxpc3QgdHlwZT0iaW5saW5lIj4KKyAgIDxtZW1iZXI+PHhyZWYgbGlua2VuZD0ic3Fs LWNyZWF0ZXZhcmlhYmxlIi8+PC9tZW1iZXI+CisgICA8bWVtYmVyPjx4cmVmIGxpbmtlbmQ9InNx bC1kcm9wdmFyaWFibGUiLz48L21lbWJlcj4KKyAgPC9zaW1wbGVsaXN0PgorIDwvcmVmc2VjdDE+ Cis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdmFyaWFi bGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3ZhcmlhYmxlLnNnbWwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNjA5OTUzODgxMwotLS0gL2Rldi9udWxsCisr KyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3ZhcmlhYmxlLnNnbWwKQEAgLTAsMCArMSwxMzQg QEAKKzwhLS0KK2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3ZhcmlhYmxlLnNnbWwKK1Bvc3RncmVT UUwgZG9jdW1lbnRhdGlvbgorLS0+CisKKzxyZWZlbnRyeSBpZD0ic3FsLWNyZWF0ZXZhcmlhYmxl Ij4KKyA8aW5kZXh0ZXJtIHpvbmU9InNxbC1jcmVhdGV2YXJpYWJsZSI+CisgIDxwcmltYXJ5PkNS RUFURSBWQVJJQUJMRTwvcHJpbWFyeT4KKyA8L2luZGV4dGVybT4KKworIDxyZWZtZXRhPgorICA8 cmVmZW50cnl0aXRsZT5DUkVBVEUgVkFSSUFCTEU8L3JlZmVudHJ5dGl0bGU+CisgIDxtYW52b2xu dW0+NzwvbWFudm9sbnVtPgorICA8cmVmbWlzY2luZm8+U1FMIC0gTGFuZ3VhZ2UgU3RhdGVtZW50 czwvcmVmbWlzY2luZm8+CisgPC9yZWZtZXRhPgorCisgPHJlZm5hbWVkaXY+CisgIDxyZWZuYW1l PkNSRUFURSBWQVJJQUJMRTwvcmVmbmFtZT4KKyAgPHJlZnB1cnBvc2U+ZGVmaW5lIGEgbmV3IHBl cm1pc3Npb25lZCB0eXBlZCBzY2hlbWEgdmFyaWFibGU8L3JlZnB1cnBvc2U+CisgPC9yZWZuYW1l ZGl2PgorCisgPHJlZnN5bm9wc2lzZGl2PgorPHN5bm9wc2lzPgorQ1JFQVRFIFZBUklBQkxFIFsg SUYgTk9UIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBs YWNlYWJsZT4gWyBBUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5kYXRhX3R5cGU8 L3JlcGxhY2VhYmxlPiBdCis8L3N5bm9wc2lzPgorIDwvcmVmc3lub3BzaXNkaXY+CisgPHJlZnNl Y3QxPgorICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisgIDxwYXJhPgorICAgPGNvbW1h bmQ+Q1JFQVRFIFZBUklBQkxFPC9jb21tYW5kPiBjcmVhdGVzIGEgbmV3IHNjaGVtYSB2YXJpYWJs ZS4KKyAgIFRoZXNlIHZhcmlhYmxlcyBhcmUgc2NhbGFyIHR5cGVkLCBub24tdHJhbnNhY3Rpb25h bCwgYW5kLCBsaWtlIHJlbGF0aW9ucywKKyAgIGV4aXN0IHdpdGhpbiBhIHNjaGVtYSB3aXRoIGFj Y2VzcyBjb250cm9sbGVkIHZpYQorICAgPGNvbW1hbmQ+R1JBTlQ8L2NvbW1hbmQ+IGFuZCA8Y29t bWFuZD5SRVZPS0U8L2NvbW1hbmQ+LgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBUaGUgdmFs dWUgb2YgYSBzY2hlbWEgdmFyaWFibGUgaXMgc2Vzc2lvbi1sb2NhbC4gUmV0cmlldmluZworICAg YSB2YXJpYWJsZSdzIHZhbHVlIHdpbGwgcmV0dXJuIE5VTEwgdW5sZXNzIGl0cyB2YWx1ZSBoYXMg YmVlbiBzZXQKKyAgIHRvIHNvbWV0aGluZyBlbHNlIGluIHRoZSBjdXJyZW50IHNlc3Npb24uCisg IDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFJldHJpZXZhbCBpcyBkb25lIHZpYSB0aGUgPGZ1bmN0 aW9uPmdldF9zY2hlbWFfdmFyaWFibGU8L2Z1bmN0aW9uPmR1bnhyaW9uIG9yIHRoZSBTUUwKKyAg IGNvbW1hbmQgPGNvbW1hbmQ+U0VMRUNUPC9jb21tYW5kPi4gIFNldHRpbmcgb2YgdmFsdWVzIGlz IGRvbmUgdmlhIHRoZQorICAgPGZ1bmN0aW9uPnNldF9zY2hlbWFfdmFyaWFibGU8L2Z1bmN0aW9u PiBmdW5jdGlvbiBvciB0aGUgU1FMIGNvbW1hbmQKKyAgIDxjb21tYW5kPkxFVDwvY29tbWFuZD4u CisgICBOb3RhYmx5LCB3aGlsZSBzY2hlbWEgdmFyaWFibGVzIGFyZSBpbiBtYW55IHdheXMgYSBr aW5kIG9mIHRhYmxlIHlvdSBjYW5ub3QgdXNlCisgICA8Y29tbWFuZD5VUERBVEU8L2NvbW1hbmQ+ IG9uIHRoZW0uCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIEZvciBwdXJwb3NlcyBvZiBuYW1l IHVuaXF1ZW5lc3MgcmVsYXRpb24tbGlrZSBvYmplY3RzIChlLmcuLCB0YWJsZXMsIGluZGV4ZXMp CisgICB3aXRoaW4gdGhlIHNhbWUgc2NoZW1hIGFyZSBjb25zaWRlcmVkLiAgaS5lLiwgeW91IGNh bm5vdCBnaXZlIGEgdGFibGUgYW5kIGEKKyAgIHNjaGVtYSB2YXJpYWJsZSB0aGUgc2FtZSBuYW1l LiAgVGhpcyBpcyBhIGNvbnNlcXVlbmNlIG9mIHRoZW0gYmVpbmcgdHJlYXRlZAorICAgbGlrZSBy ZWxhdGlvbnMgZm9yIHB1cnBvc2VzIG9mIDxjb21tYW5kPlNFTEVDVDwvY29tbWFuZD4uCisgIDwv cGFyYT4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+UGFyYW1ldGVyczwv dGl0bGU+CisKKyAgPHZhcmlhYmxlbGlzdD4KKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+ PGxpdGVyYWw+SUYgTk9UIEVYSVNUUzwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgor ICAgICA8cGFyYT4KKyAgICAgIERvIG5vdCB0aHJvdyBhbiBlcnJvciBpZiB0aGUgbmFtZSBhbHJl YWR5IGV4aXN0cy4gQSBub3RpY2UgaXMgaXNzdWVkIGluIHRoaXMgY2FzZS4KKyAgICAgIE5vdGUg dGhhdCB0eXBlIG9mIHRoZSB2YXJpYWJsZSBpcyBub3QgY29uc2lkZXJlZCwgbm9yIGNvdWxkIGl0 IGJlIHNpbmNlIHRoZSBuYW1lc3BhY2UKKyAgICAgIHNlYXJjaGVkIGNvbnRhaW5zIG5vbi12YXJp YWJsZSBvYmplY3RzLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlz dGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgor ICAgICA8cGFyYT4KKyAgICAgIFRoZSBuYW1lIChvcHRpb25hbGx5IHNjaGVtYS1xdWFsaWZpZWQp IG9mIHRoZSB2YXJpYWJsZSB0byBiZSBjcmVhdGVkLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0 aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJt PjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5kYXRhX3R5cGU8L3JlcGxhY2VhYmxlPjwv dGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhlIG5hbWUgKG9wdGlv bmFsbHkgc2NoZW1hLXF1YWxpZmllZCkgb2YgdGhlIGRhdGEgdHlwZSBvZiB0aGUgdmFyaWFibGUg dG8gYmUgY3JlYXRlZC4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxp c3RlbnRyeT4KKyAgPC92YXJpYWJsZWxpc3Q+CisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4K KyAgPHRpdGxlPk5vdGVzPC90aXRsZT4KKworICA8cGFyYT4KKyAgIFVzZSA8Y29tbWFuZD5EUk9Q IFZBUklBQkxFPC9jb21tYW5kPiB0byByZW1vdmUgYSB2YXJpYWJsZS4KKyAgPC9wYXJhPgorIDwv cmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5FeGFtcGxlczwvdGl0bGU+CisKKyAg PHBhcmE+CisgICBDcmVhdGUgYW4gaW50ZWdlciB2YXJpYWJsZSA8bGl0ZXJhbD52YXIxPC9saXRl cmFsPjoKKzxwcm9ncmFtbGlzdGluZz4KK0NSRUFURSBWQVJJQUJMRSB2YXIxIEFTIGludGVnZXI7 CitTRUxFQ1QgdmFyMTsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgIDwvcGFyYT4KKworIDwvcmVmc2Vj dDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5Db21wYXRpYmlsaXR5PC90aXRsZT4KKworICA8 cGFyYT4KKyAgIDxjb21tYW5kPkNSRUFURSBWQVJJQUJMRTwvY29tbWFuZD4gaXMgYSBQb3N0Z3Jl U1FMIGZlYXR1cmUuCisgICA8IS0tIFRoZSBjaG9pY2Ugb2Ygd29yZGluZyBoZXJlIHNlZW1zIHRv IGJlIGxlZnQgdG8gcGVyc29uYWwgcHJlZmVyZW5jZS4uLiAtLT4KKyAgPC9wYXJhPgorIDwvcmVm c2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5TZWUgQWxzbzwvdGl0bGU+CisKKyAgPHNp bXBsZWxpc3QgdHlwZT0iaW5saW5lIj4KKyAgIDxtZW1iZXI+PHhyZWYgbGlua2VuZD0ic3FsLWFs dGVydmFyaWFibGUiLz48L21lbWJlcj4KKyAgIDxtZW1iZXI+PHhyZWYgbGlua2VuZD0ic3FsLWRy b3B2YXJpYWJsZSIvPjwvbWVtYmVyPgorICA8L3NpbXBsZWxpc3Q+CisgPC9yZWZzZWN0MT4KKwor PC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvZGlzY2FyZC5zZ21sIGIv ZG9jL3NyYy9zZ21sL3JlZi9kaXNjYXJkLnNnbWwKaW5kZXggNmI5MDliNzIzMi4uZDgzYWQ4MTFm ZCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9kaXNjYXJkLnNnbWwKKysrIGIvZG9jL3Ny Yy9zZ21sL3JlZi9kaXNjYXJkLnNnbWwKQEAgLTIxLDcgKzIxLDcgQEAgUG9zdGdyZVNRTCBkb2N1 bWVudGF0aW9uCiAKICA8cmVmc3lub3BzaXNkaXY+CiA8c3lub3BzaXM+Ci1ESVNDQVJEIHsgQUxM IHwgUExBTlMgfCBTRVFVRU5DRVMgfCBURU1QT1JBUlkgfCBURU1QIH0KK0RJU0NBUkQgeyBBTEwg fCBQTEFOUyB8IFNFUVVFTkNFUyB8IFRFTVBPUkFSWSB8IFRFTVAgfCBWQVJJQUJMRVMgfQogPC9z eW5vcHNpcz4KICA8L3JlZnN5bm9wc2lzZGl2PgogCkBAIC03NSw2ICs3NSwxNyBAQCBESVNDQVJE IHsgQUxMIHwgUExBTlMgfCBTRVFVRU5DRVMgfCBURU1QT1JBUlkgfCBURU1QIH0KICAgICA8L2xp c3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRl cm0+PGxpdGVyYWw+VkFSSUFCTEVTPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+Cisg ICAgIDxwYXJhPgorICAgICAgUmVzZXRzIHRoZSB2YWx1ZSBvZiBhbGwgc2NoZW1hIHZhcmlhYmxl cy4gV2hlbiB2YXJpYWJsZXMKKyAgICAgIHdpbGwgYmUgdXNlZCBsYXRlciwgdGhlbiB3aWxsIGJl IGluaXRpYWxpemVkIGFnYWluIHRvCisgICAgICBOVUxMIG9yIGRlZmF1bHQgdmFsdWUuCisgICAg IDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJs aXN0ZW50cnk+CiAgICAgPHRlcm0+PGxpdGVyYWw+QUxMPC9saXRlcmFsPjwvdGVybT4KICAgICA8 bGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2Ryb3BfdmFyaWFibGUuc2dt bCBiL2RvYy9zcmMvc2dtbC9yZWYvZHJvcF92YXJpYWJsZS5zZ21sCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAuLmMxYzFhMmJkNjcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mv c3JjL3NnbWwvcmVmL2Ryb3BfdmFyaWFibGUuc2dtbApAQCAtMCwwICsxLDkzIEBACis8IS0tCitk b2Mvc3JjL3NnbWwvcmVmL2Ryb3BfdmFyaWFibGUuc2dtbAorUG9zdGdyZVNRTCBkb2N1bWVudGF0 aW9uCistLT4KKworPHJlZmVudHJ5IGlkPSJzcWwtZHJvcHZhcmlhYmxlIj4KKyA8aW5kZXh0ZXJt IHpvbmU9InNxbC1kcm9wdmFyaWFibGUiPgorICA8cHJpbWFyeT5EUk9QIFZBUklBQkxFPC9wcmlt YXJ5PgorIDwvaW5kZXh0ZXJtPgorCisgPHJlZm1ldGE+CisgIDxyZWZlbnRyeXRpdGxlPkRST1Ag VkFSSUFCTEU8L3JlZmVudHJ5dGl0bGU+CisgIDxtYW52b2xudW0+NzwvbWFudm9sbnVtPgorICA8 cmVmbWlzY2luZm8+U1FMIC0gTGFuZ3VhZ2UgU3RhdGVtZW50czwvcmVmbWlzY2luZm8+CisgPC9y ZWZtZXRhPgorCisgPHJlZm5hbWVkaXY+CisgIDxyZWZuYW1lPkRST1AgVkFSSUFCTEU8L3JlZm5h bWU+CisgIDxyZWZwdXJwb3NlPnJlbW92ZSBhIHNjaGVtYSB2YXJpYWJsZTwvcmVmcHVycG9zZT4K KyA8L3JlZm5hbWVkaXY+CisKKyA8cmVmc3lub3BzaXNkaXY+Cis8c3lub3BzaXM+CitEUk9QIFZB UklBQkxFIFsgSUYgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8 L3JlcGxhY2VhYmxlPiBbLCAuLi5dIFsgQ0FTQ0FERSB8IFJFU1RSSUNUIF0KKzwvc3lub3BzaXM+ CisgPC9yZWZzeW5vcHNpc2Rpdj4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkRlc2NyaXB0aW9u PC90aXRsZT4KKworICA8cGFyYT4KKyAgIDxjb21tYW5kPkRST1AgVkFSSUFCTEU8L2NvbW1hbmQ+ IHJlbW92ZXMgYSBzY2hlbWEgdmFyaWFibGUuCisgICBBIHZhcmlhYmxlIGNhbiBvbmx5IGJlIGRy b3BwZWQgYnkgaXRzIG93bmVyIG9yIGEgc3VwZXJ1c2VyLgorICAgPCEtLSB0aGlzIHdvdWxkIHN1 Z2dlc3QgdGhhdCB3ZSBuZWVkIGFuIGFsdGVyIHZhcmlhYmxlIG93bmVyIHRvIGNvbW1hbmQgLS0+ CisgIDwvcGFyYT4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+UGFyYW1l dGVyczwvdGl0bGU+CisKKyAgPHZhcmlhYmxlbGlzdD4KKyAgIDx2YXJsaXN0ZW50cnk+CisgICAg PHRlcm0+PGxpdGVyYWw+SUYgRVhJU1RTPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+ CisgICAgIDxwYXJhPgorICAgICAgRG8gbm90IHRocm93IGFuIGVycm9yIGlmIHRoZSB2YXJpYWJs ZSBkb2VzIG5vdCBleGlzdC4gQSBub3RpY2UgaXMgaXNzdWVkCisgICAgICBpbiB0aGlzIGNhc2Uu CisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAg IDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi Pm5hbWU8L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgor ICAgICAgVGhlIG5hbWUgKG9wdGlvbmFsbHkgc2NoZW1hLXF1YWxpZmllZCkgb2YgYSBzY2hlbWEg dmFyaWFibGUuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50 cnk+CisgIDwvdmFyaWFibGVsaXN0PgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0 aXRsZT5FeGFtcGxlczwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBUbyByZW1vdmUgdGhlIHNjaGVt YSB2YXJpYWJsZSA8bGl0ZXJhbD52YXIxPC9saXRlcmFsPjoKKworPHByb2dyYW1saXN0aW5nPgor RFJPUCBWQVJJQUJMRSB2YXIxOworPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CisgPC9yZWZzZWN0 MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkNvbXBhdGliaWxpdHk8L3RpdGxlPgorCisgIDxw YXJhPgorICAgPGNvbW1hbmQ+RFJPUCBWQVJJQUJMRTwvY29tbWFuZD4gaXMgcHJvcHJpZXRhcnkg UG9zdGdyZVNRTCBjb21tYW5kLgorICAgPCEtLSBjcmVhdGUgdmFyaWFibGUgaXMgYSAiUG9zdGdy ZVNRTCBmZWF0dXJlIiwKKyAgICAgICAgdGhpcyBpcyBhICJwcm9wcmlldGFyeSBQb3N0Z3JlU1FM IGNvbW1hbmQiIC4uLiAtLT4KKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+ CisgIDx0aXRsZT5TZWUgQWxzbzwvdGl0bGU+CisKKyAgPHNpbXBsZWxpc3QgdHlwZT0iaW5saW5l Ij4KKyAgIDxtZW1iZXI+PHhyZWYgbGlua2VuZD0ic3FsLWFsdGVydmFyaWFibGUiLz48L21lbWJl cj4KKyAgIDxtZW1iZXI+PHhyZWYgbGlua2VuZD0ic3FsLWNyZWF0ZXZhcmlhYmxlIi8+PC9tZW1i ZXI+CisgIDwvc2ltcGxlbGlzdD4KKyA8L3JlZnNlY3QxPgorCis8L3JlZmVudHJ5PgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9ncmFudC5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9ncmFu dC5zZ21sCmluZGV4IGZmNjRjN2EzYmEuLmE4MzkyMGE3YTEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9yZWYvZ3JhbnQuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2dyYW50LnNnbWwKQEAg LTc5LDYgKzc5LDEwIEBAIEdSQU5UIHsgVVNBR0UgfCBBTEwgWyBQUklWSUxFR0VTIF0gfQogICAg IE9OIFRZUEUgPHJlcGxhY2VhYmxlPnR5cGVfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0KICAg ICBUTyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cm9sZV9zcGVjaWZpY2F0aW9uPC9y ZXBsYWNlYWJsZT4gWywgLi4uXSBbIFdJVEggR1JBTlQgT1BUSU9OIF0KIAorR1JBTlQgeyBSRUFE IHwgV1JJVEUgfCBBTEwgWyBQUklWSUxFR0VTIF0gfQorICAgIE9OIFZBUklBQkxFIDxyZXBsYWNl YWJsZT52YXJpYWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXQorICAgIFRPIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yb2xlX3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxlPiBb LCAuLi5dIFsgV0lUSCBHUkFOVCBPUFRJT04gXQorCiA8cGhyYXNlPndoZXJlIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5yb2xlX3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxlPiBjYW4g YmU6PC9waHJhc2U+CiAKICAgICBbIEdST1VQIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnJvbGVfbmFtZTwvcmVwbGFjZWFibGU+CkBAIC0xNjcsNiArMTcxLDcgQEAgR1JBTlQgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4u Ll0gVE8gPHJlcGxhY2UKICAgIGZvcmVpZ24gc2VydmVycywKICAgIGxhcmdlIG9iamVjdHMsCiAg ICBzY2hlbWFzLAorICAgc2NoZW1hIHZhcmlhYmxlCiAgICBvciB0YWJsZXNwYWNlcy4KICAgIEZv ciBvdGhlciB0eXBlcyBvZiBvYmplY3RzLCB0aGUgZGVmYXVsdCBwcml2aWxlZ2VzCiAgICBncmFu dGVkIHRvIDxsaXRlcmFsPlBVQkxJQzwvbGl0ZXJhbD4gYXJlIGFzIGZvbGxvd3M6CkBAIC0zODUs NiArMzkwLDI0IEBAIEdSQU5UIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yb2xlX25h bWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dIFRPIDxyZXBsYWNlCiAgICAgIDwvbGlzdGl0ZW0+CiAg ICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICA8dmFybGlzdGVudHJ5PgorICAgICA8dGVybT48bGl0 ZXJhbD5SRUFEPC9saXRlcmFsPjwvdGVybT4KKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+ CisgICAgICAgQWxsb3dzIHRvIHJlYWQgYSBzY2hlbWEgdmFyaWFibGUuCisgICAgICA8L3BhcmE+ CisgICAgIDwvbGlzdGl0ZW0+CisgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICA8dmFybGlzdGVu dHJ5PgorICAgICA8dGVybT48bGl0ZXJhbD5XUklURTwvbGl0ZXJhbD48L3Rlcm0+CisgICAgIDxs aXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIEFsbG93cyB0byBzZXQgYSBzY2hlbWEgdmFy aWFibGUuCisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgPC92YXJsaXN0ZW50 cnk+CisKICAgICA8dmFybGlzdGVudHJ5PgogICAgICA8dGVybT48bGl0ZXJhbD5BTEwgUFJJVklM RUdFUzwvbGl0ZXJhbD48L3Rlcm0+CiAgICAgIDxsaXN0aXRlbT4KQEAgLTU1MCw2ICs1NzMsOCBA QCByb2xlbmFtZT14eHh4IC0tIHByaXZpbGVnZXMgZ3JhbnRlZCB0byBhIHJvbGUKICAgICAgICAg ICAgIEMgLS0gQ1JFQVRFCiAgICAgICAgICAgICBjIC0tIENPTk5FQ1QKICAgICAgICAgICAgIFQg LS0gVEVNUE9SQVJZCisgICAgICAgICAgICBTIC0tIFJFQUQKKyAgICAgICAgICAgIHcgLS0gV1JJ VEUKICAgICAgIGFyd2REeHQgLS0gQUxMIFBSSVZJTEVHRVMgKGZvciB0YWJsZXMsIHZhcmllcyBm b3Igb3RoZXIgb2JqZWN0cykKICAgICAgICAgICAgICogLS0gZ3JhbnQgb3B0aW9uIGZvciBwcmVj ZWRpbmcgcHJpdmlsZWdlCiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvbGV0LnNnbWwg Yi9kb2Mvc3JjL3NnbWwvcmVmL2xldC5zZ21sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAuLmU4YmYzZjZkZDQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVm L2xldC5zZ21sCkBAIC0wLDAgKzEsOTAgQEAKKzwhLS0KK2RvYy9zcmMvc2dtbC9yZWYvbGV0LnNn bWwKK1Bvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgorLS0+CisKKzxyZWZlbnRyeSBpZD0ic3FsLWxl dCI+CisgPGluZGV4dGVybSB6b25lPSJzcWwtbGV0Ij4KKyAgPHByaW1hcnk+TEVUPC9wcmltYXJ5 PgorIDwvaW5kZXh0ZXJtPgorCisgPHJlZm1ldGE+CisgIDxyZWZlbnRyeXRpdGxlPkxFVDwvcmVm ZW50cnl0aXRsZT4KKyAgPG1hbnZvbG51bT43PC9tYW52b2xudW0+CisgIDxyZWZtaXNjaW5mbz5T UUwgLSBMYW5ndWFnZSBTdGF0ZW1lbnRzPC9yZWZtaXNjaW5mbz4KKyA8L3JlZm1ldGE+CisKKyA8 cmVmbmFtZWRpdj4KKyAgPHJlZm5hbWU+TEVUPC9yZWZuYW1lPgorICA8cmVmcHVycG9zZT5jaGFu Z2UgYSBzY2hlbWEgdmFyaWFibGUncyB2YWx1ZTwvcmVmcHVycG9zZT4KKyA8L3JlZm5hbWVkaXY+ CisKKyA8cmVmc3lub3BzaXNkaXY+Cis8c3lub3BzaXM+CitMRVQgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnNjaGVtYV92YXJpYWJsZTwvcmVwbGFjZWFibGU+ID0gPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnNxbF9leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4KKzwvc3lub3Bz aXM+CisgPC9yZWZzeW5vcHNpc2Rpdj4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkRlc2NyaXB0 aW9uPC90aXRsZT4KKworICA8cGFyYT4KKyAgIFRoZSA8Y29tbWFuZD5MRVQ8L2NvbW1hbmQ+IGNv bW1hbmQgdXBkYXRlcyB0aGUgc3BlY2lmaWVkIHNjaGVtYSB2YXJpYWJsZScgdmFsdWUuCisgIDwv cGFyYT4KKworIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5QYXJhbWV0ZXJz PC90aXRsZT4KKworICA8dmFyaWFibGVsaXN0PgorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVy bT48bGl0ZXJhbD5zY2hlbWFfdmFyaWFibGU8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRl bT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgbmFtZSBvZiBzY2hlbWEgdmFyaWFibGUuCisgICAg IDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJs aXN0ZW50cnk+CisgICAgPHRlcm0+PGxpdGVyYWw+c3FsIGV4cHJlc3Npb248L2xpdGVyYWw+PC90 ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBBbiBTUUwgZXhwcmVzc2lv biwgdGhlIHJlc3VsdCBpcyBjYXN0IHRvIHRoZSBzY2hlbWEgdmFyaWFibGUncyB0eXBlLgorICAg ICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorICA8L3Zhcmlh YmxlbGlzdD4KKworICA8cGFyYT4KKyAgIEV4YW1wbGU6Cis8cHJvZ3JhbWxpc3Rpbmc+CitDUkVB VEUgVkFSSUFCTEUgbXl2YXIgQVMgaW50ZWdlcjsKK0xFVCBteXZhciA9IDEwOworTEVUIG15dmFy ID0gKFNFTEVDVCBzdW0odmFsKSBGUk9NIHRhYik7Cis8L3Byb2dyYW1saXN0aW5nPgorICA8L3Bh cmE+CisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkNvbXBhdGliaWxpdHk8 L3RpdGxlPgorCisgIDxwYXJhPgorICAgPCEtLSB0aGlzIGZlZWxzIGxpa2UgaXQgbmVlZHMgdG8g YmUgbW9yZSBzcGVjaWZpYywKKyAgICAgICAgYnV0IEkgZG9uJ3Qga25vdyBlbm91Z2ggdG8gbWFr ZSBpdCBzbyAtLT4KKyAgIDxsaXRlcmFsPkxFVDwvbGl0ZXJhbD4gZXh0ZW5kcyBzeW50YXggZGVm aW5lZCBpbiB0aGUgU1FMCisgICBzdGFuZGFyZC4gVGhlIHN0YW5kYXJkIGtub3dzIDxsaXRlcmFs PlNFVDwvbGl0ZXJhbD4gY29tbWFuZCwKKyAgIHRoYXQgaXMgdXNlZCBmb3IgZGlmZmVyZW50IHB1 cnBvdXNlIGluIFBvc3RncmVTUUwuCisgIDwvcGFyYT4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNl Y3QxPgorICA8dGl0bGU+U2VlIEFsc288L3RpdGxlPgorCisgIDxzaW1wbGVsaXN0IHR5cGU9Imlu bGluZSI+CisgICA8bWVtYmVyPjx4cmVmIGxpbmtlbmQ9InNxbC1jcmVhdGV2YXJpYWJsZSIvPjwv bWVtYmVyPgorICAgPG1lbWJlcj48eHJlZiBsaW5rZW5kPSJzcWwtZHJvcHZhcmlhYmxlIi8+PC9t ZW1iZXI+CisgIDwvc2ltcGxlbGlzdD4KKyA8L3JlZnNlY3QxPgorPC9yZWZlbnRyeT4KZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcmV2b2tlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3Jl dm9rZS5zZ21sCmluZGV4IDUzMTdmOGNjYmEuLjg0MzVlMDU5NTcgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9yZWYvcmV2b2tlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9yZXZva2Uuc2dt bApAQCAtMTA4LDYgKzEwOCwxMiBAQCBSRVZPS0UgWyBHUkFOVCBPUFRJT04gRk9SIF0KIFJFVk9L RSBbIEFETUlOIE9QVElPTiBGT1IgXQogICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5yb2xlX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dIEZST00gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnJvbGVfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0KICAgICBbIENBU0NB REUgfCBSRVNUUklDVCBdCisKK1JFVk9LRSBbIEdSQU5UIE9QVElPTiBGT1IgXQorICAgIHsgeyBS RUFEIHwgV1JJVEUgfSBbLCAuLi5dIHwgQUxMIFsgUFJJVklMRUdFUyBdIH0KKyAgICBPTiBWQVJJ QUJMRSA8cmVwbGFjZWFibGU+dmFyaWFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0KKyAg ICBGUk9NIHsgWyBHUk9VUCBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yb2xlX25h bWU8L3JlcGxhY2VhYmxlPiB8IFBVQkxJQyB9IFssIC4uLl0KKyAgICBbIENBU0NBREUgfCBSRVNU UklDVCBdCiA8L3N5bm9wc2lzPgogIDwvcmVmc3lub3BzaXNkaXY+CiAKZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC9yZWZlcmVuY2Uuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWZlcmVuY2Uuc2dtbApp bmRleCBkYjRmNDE2N2UzLi41ZmI4MmRmNTFlIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVm ZXJlbmNlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21sCkBAIC03NSw2ICs3 NSw3IEBACiAgICAmYWx0ZXJUeXBlOwogICAgJmFsdGVyVXNlcjsKICAgICZhbHRlclVzZXJNYXBw aW5nOworICAgJmFsdGVyVmFyaWFibGU7CiAgICAmYWx0ZXJWaWV3OwogICAgJmFuYWx5emU7CiAg ICAmYmVnaW47CkBAIC0xMjcsNiArMTI4LDcgQEAKICAgICZjcmVhdGVUeXBlOwogICAgJmNyZWF0 ZVVzZXI7CiAgICAmY3JlYXRlVXNlck1hcHBpbmc7CisgICAmY3JlYXRlVmFyaWFibGU7CiAgICAm Y3JlYXRlVmlldzsKICAgICZkZWFsbG9jYXRlOwogICAgJmRlY2xhcmU7CkBAIC0xNzUsNiArMTc3 LDcgQEAKICAgICZkcm9wVHlwZTsKICAgICZkcm9wVXNlcjsKICAgICZkcm9wVXNlck1hcHBpbmc7 CisgICAmZHJvcFZhcmlhYmxlOwogICAgJmRyb3BWaWV3OwogICAgJmVuZDsKICAgICZleGVjdXRl OwpAQCAtMTgzLDYgKzE4Niw3IEBACiAgICAmZ3JhbnQ7CiAgICAmaW1wb3J0Rm9yZWlnblNjaGVt YTsKICAgICZpbnNlcnQ7CisgICAmbGV0OwogICAgJmxpc3RlbjsKICAgICZsb2FkOwogICAgJmxv Y2s7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL01ha2VmaWxlIGIvc3JjL2JhY2tl bmQvY2F0YWxvZy9NYWtlZmlsZQppbmRleCAwODY1MjQwZjExLi4xZjdjNGQxMjIzIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvTWFrZWZpbGUKQEAgLTE5LDcgKzE5LDcgQEAgT0JKUyA9IGNhdGFsb2cubyBkZXBlbmRlbmN5 Lm8gaGVhcC5vIGluZGV4Lm8gaW5kZXhpbmcubyBuYW1lc3BhY2UubyBhY2xjaGsubyBcCiAgICAg ICAgcGdfZGVwZW5kLm8gcGdfZW51bS5vIHBnX2luaGVyaXRzLm8gcGdfbGFyZ2VvYmplY3QubyBw Z19uYW1lc3BhY2UubyBcCiAgICAgICAgcGdfb3BlcmF0b3IubyBwZ19wcm9jLm8gcGdfcHVibGlj YXRpb24ubyBwZ19yYW5nZS5vIFwKIAkgICBwZ19kYl9yb2xlX3NldHRpbmcubyBwZ19zaGRlcGVu ZC5vIHBnX3N1YnNjcmlwdGlvbi5vIHBnX3R5cGUubyBcCi0JICAgc3RvcmFnZS5vIHRvYXN0aW5n Lm8KKwkgICBwZ192YXJpYWJsZS5vIHN0b3JhZ2UubyB0b2FzdGluZy5vCiAKIEJLSUZJTEVTID0g cG9zdGdyZXMuYmtpIHBvc3RncmVzLmRlc2NyaXB0aW9uIHBvc3RncmVzLnNoZGVzY3JpcHRpb24K IApAQCAtNDYsNyArNDYsNyBAQCBDQVRBTE9HX0hFQURFUlMgOj0gXAogCXBnX2RlZmF1bHRfYWNs LmggcGdfaW5pdF9wcml2cy5oIHBnX3NlY2xhYmVsLmggcGdfc2hzZWNsYWJlbC5oIFwKIAlwZ19j b2xsYXRpb24uaCBwZ19wYXJ0aXRpb25lZF90YWJsZS5oIHBnX3JhbmdlLmggcGdfdHJhbnNmb3Jt LmggXAogCXBnX3NlcXVlbmNlLmggcGdfcHVibGljYXRpb24uaCBwZ19wdWJsaWNhdGlvbl9yZWwu aCBwZ19zdWJzY3JpcHRpb24uaCBcCi0JcGdfc3Vic2NyaXB0aW9uX3JlbC5oCisJcGdfc3Vic2Ny aXB0aW9uX3JlbC5oIHBnX3ZhcmlhYmxlLmgKIAogR0VORVJBVEVEX0hFQURFUlMgOj0gJChDQVRB TE9HX0hFQURFUlM6JS5oPSVfZC5oKSBzY2hlbWFwZy5oCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NhdGFsb2cvYWNsY2hrLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2FjbGNoay5jCmluZGV4 IDU3OGU0YzY1OTIuLjg2OTE3ZTE1YTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv YWNsY2hrLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9hY2xjaGsuYwpAQCAtNTcsNiArNTcs NyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHNfcGFyc2VyLmgiCiAjaW5jbHVkZSAiY2F0YWxv Zy9wZ190c190ZW1wbGF0ZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHJhbnNmb3JtLmgiCisj aW5jbHVkZSAiY2F0YWxvZy9wZ192YXJpYWJsZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2RiY29t bWFuZHMuaCIKICNpbmNsdWRlICJjb21tYW5kcy9ldmVudF90cmlnZ2VyLmgiCiAjaW5jbHVkZSAi Y29tbWFuZHMvZXh0ZW5zaW9uLmgiCkBAIC0xMTIsNiArMTEzLDcgQEAgc3RhdGljIHZvaWQgRXhl Y0dyYW50X0xhcmdlb2JqZWN0KEludGVybmFsR3JhbnQgKmdyYW50U3RtdCk7CiBzdGF0aWMgdm9p ZCBFeGVjR3JhbnRfTmFtZXNwYWNlKEludGVybmFsR3JhbnQgKmdyYW50U3RtdCk7CiBzdGF0aWMg dm9pZCBFeGVjR3JhbnRfVGFibGVzcGFjZShJbnRlcm5hbEdyYW50ICpncmFudFN0bXQpOwogc3Rh dGljIHZvaWQgRXhlY0dyYW50X1R5cGUoSW50ZXJuYWxHcmFudCAqZ3JhbnRTdG10KTsKK3N0YXRp YyB2b2lkIEV4ZWNHcmFudF9WYXJpYWJsZShJbnRlcm5hbEdyYW50ICpncmFudFN0bXQpOwogCiBz dGF0aWMgdm9pZCBTZXREZWZhdWx0QUNMc0luU2NoZW1hcyhJbnRlcm5hbERlZmF1bHRBQ0wgKmlh Y2xzLCBMaXN0ICpuc3BuYW1lcyk7CiBzdGF0aWMgdm9pZCBTZXREZWZhdWx0QUNMKEludGVybmFs RGVmYXVsdEFDTCAqaWFjbHMpOwpAQCAtMjg0LDYgKzI4Niw5IEBAIHJlc3RyaWN0X2FuZF9jaGVj a19ncmFudChib29sIGlzX2dyYW50LCBBY2xNb2RlIGF2YWlsX2dvcHRpb25zLCBib29sIGFsbF9w cml2cywKIAkJY2FzZSBPQkpFQ1RfVFlQRToKIAkJCXdob2xlX21hc2sgPSBBQ0xfQUxMX1JJR0hU U19UWVBFOwogCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJd2hvbGVfbWFz ayA9IEFDTF9BTExfUklHSFRTX1ZBUklBQkxFOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQll bG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG9iamVjdCB0eXBlOiAlZCIsIG9ianR5cGUpOwogCQkJ Lyogbm90IHJlYWNoZWQsIGJ1dCBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCkBAIC01MDcsNiArNTEy LDEwIEBAIEV4ZWN1dGVHcmFudFN0bXQoR3JhbnRTdG10ICpzdG10KQogCQkJYWxsX3ByaXZpbGVn ZXMgPSBBQ0xfQUxMX1JJR0hUU19GT1JFSUdOX1NFUlZFUjsKIAkJCWVycm9ybXNnID0gZ2V0dGV4 dF9ub29wKCJpbnZhbGlkIHByaXZpbGVnZSB0eXBlICVzIGZvciBmb3JlaWduIHNlcnZlciIpOwog CQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJYWxsX3ByaXZpbGVnZXMgPSBB Q0xfQUxMX1JJR0hUU19WQVJJQUJMRTsKKwkJCWVycm9ybXNnID0gZ2V0dGV4dF9ub29wKCJpbnZh bGlkIHByaXZpbGVnZSB0eXBlICVzIGZvciBzY2hlbWEgdmFyaWFibGUiKTsKKwkJCWJyZWFrOwog CQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBHcmFudFN0bXQub2JqdHlw ZTogJWQiLAogCQkJCSAoaW50KSBzdG10LT5vYmp0eXBlKTsKQEAgLTYwOSw2ICs2MTgsOSBAQCBF eGVjR3JhbnRTdG10X29pZHMoSW50ZXJuYWxHcmFudCAqaXN0bXQpCiAJCWNhc2UgT0JKRUNUX1RB QkxFU1BBQ0U6CiAJCQlFeGVjR3JhbnRfVGFibGVzcGFjZShpc3RtdCk7CiAJCQlicmVhazsKKwkJ Y2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQlFeGVjR3JhbnRfVmFyaWFibGUoaXN0bXQpOworCQkJ YnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIEdyYW50U3Rt dC5vYmp0eXBlOiAlZCIsCiAJCQkJIChpbnQpIGlzdG10LT5vYmp0eXBlKTsKQEAgLTc2OCw2ICs3 ODAsMTYgQEAgb2JqZWN0TmFtZXNUb09pZHMoT2JqZWN0VHlwZSBvYmp0eXBlLCBMaXN0ICpvYmpu YW1lcykKIAkJCQlvYmplY3RzID0gbGFwcGVuZF9vaWQob2JqZWN0cywgc3J2aWQpOwogCQkJfQog CQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJZm9yZWFjaChjZWxsLCBvYmpu YW1lcykKKwkJCXsKKwkJCQlSYW5nZVZhciAgICp2YXJ2YXIgPSAoUmFuZ2VWYXIgKikgbGZpcnN0 KGNlbGwpOworCQkJCU9pZAkJCXJlbE9pZDsKKworCQkJCXJlbE9pZCA9IGxvb2t1cF92YXJpYWJs ZSh2YXJ2YXItPnNjaGVtYW5hbWUsIHZhcnZhci0+cmVsbmFtZSwgZmFsc2UpOworCQkJCW9iamVj dHMgPSBsYXBwZW5kX29pZChvYmplY3RzLCByZWxPaWQpOworCQkJfQorCQkJYnJlYWs7CiAJCWRl ZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIEdyYW50U3RtdC5vYmp0eXBlOiAl ZCIsCiAJCQkJIChpbnQpIG9ianR5cGUpOwpAQCAtODU1LDYgKzg3NywzMSBAQCBvYmplY3RzSW5T Y2hlbWFUb09pZHMoT2JqZWN0VHlwZSBvYmp0eXBlLCBMaXN0ICpuc3BuYW1lcykKIAkJCQkJaGVh cF9jbG9zZShyZWwsIEFjY2Vzc1NoYXJlTG9jayk7CiAJCQkJfQogCQkJCWJyZWFrOworCQkJY2Fz ZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQkJeworCQkJCQlTY2FuS2V5RGF0YSBrZXk7CisJCQkJCVJl bGF0aW9uCXJlbDsKKwkJCQkJSGVhcFNjYW5EZXNjIHNjYW47CisJCQkJCUhlYXBUdXBsZQl0dXBs ZTsKKworCQkJCQlTY2FuS2V5SW5pdCgma2V5LAorCQkJCQkJCQlBbnVtX3BnX3ZhcmlhYmxlX3Zh cm5hbWVzcGFjZSwKKwkJCQkJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX09JREVRLAorCQkJ CQkJCQlPYmplY3RJZEdldERhdHVtKG5hbWVzcGFjZUlkKSk7CisKKwkJCQkJcmVsID0gaGVhcF9v cGVuKFZhcmlhYmxlUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJCQkJc2NhbiA9IGhl YXBfYmVnaW5zY2FuX2NhdGFsb2cocmVsLCAxLCAma2V5KTsKKworCQkJCQl3aGlsZSAoKHR1cGxl ID0gaGVhcF9nZXRuZXh0KHNjYW4sIEZvcndhcmRTY2FuRGlyZWN0aW9uKSkgIT0gTlVMTCkKKwkJ CQkJeworCQkJCQkJb2JqZWN0cyA9IGxhcHBlbmRfb2lkKG9iamVjdHMsIEhlYXBUdXBsZUdldE9p ZCh0dXBsZSkpOworCQkJCQl9CisKKwkJCQkJaGVhcF9lbmRzY2FuKHNjYW4pOworCQkJCQloZWFw X2Nsb3NlKHJlbCwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJCQl9CisJCQkJYnJlYWs7CisKIAkJCWRl ZmF1bHQ6CiAJCQkJLyogc2hvdWxkIG5vdCBoYXBwZW4gKi8KIAkJCQllbG9nKEVSUk9SLCAidW5y ZWNvZ25pemVkIEdyYW50U3RtdC5vYmp0eXBlOiAlZCIsCkBAIC0xMDE4LDYgKzEwNjUsMTAgQEAg RXhlY0FsdGVyRGVmYXVsdFByaXZpbGVnZXNTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJE ZWZhdWx0UHJpdmlsZWdlc1N0bXQgKnMKIAkJCWFsbF9wcml2aWxlZ2VzID0gQUNMX0FMTF9SSUdI VFNfU0NIRU1BOwogCQkJZXJyb3Jtc2cgPSBnZXR0ZXh0X25vb3AoImludmFsaWQgcHJpdmlsZWdl IHR5cGUgJXMgZm9yIHNjaGVtYSIpOwogCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxF OgorCQkJYWxsX3ByaXZpbGVnZXMgPSBBQ0xfQUxMX1JJR0hUU19WQVJJQUJMRTsKKwkJCWVycm9y bXNnID0gZ2V0dGV4dF9ub29wKCJpbnZhbGlkIHByaXZpbGVnZSB0eXBlICVzIGZvciBzY2hlbWEg dmFyaWFibGUiKTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVj b2duaXplZCBHcmFudFN0bXQub2JqdHlwZTogJWQiLAogCQkJCSAoaW50KSBhY3Rpb24tPm9ianR5 cGUpOwpAQCAtMTIxNSw2ICsxMjY2LDEyIEBAIFNldERlZmF1bHRBQ0woSW50ZXJuYWxEZWZhdWx0 QUNMICppYWNscykKIAkJCQl0aGlzX3ByaXZpbGVnZXMgPSBBQ0xfQUxMX1JJR0hUU19TQ0hFTUE7 CiAJCQlicmVhazsKIAorCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCW9ianR5cGUgPSBERUZB Q0xPQkpfVkFSSUFCTEU7CisJCQlpZiAoaWFjbHMtPmFsbF9wcml2cyAmJiB0aGlzX3ByaXZpbGVn ZXMgPT0gQUNMX05PX1JJR0hUUykKKwkJCQl0aGlzX3ByaXZpbGVnZXMgPSBBQ0xfQUxMX1JJR0hU U19WQVJJQUJMRTsKKwkJCWJyZWFrOworCiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5y ZWNvZ25pemVkIG9ianR5cGU6ICVkIiwKIAkJCQkgKGludCkgaWFjbHMtPm9ianR5cGUpOwpAQCAt MTQ0MSw2ICsxNDk4LDkgQEAgUmVtb3ZlUm9sZUZyb21PYmplY3RBQ0woT2lkIHJvbGVpZCwgT2lk IGNsYXNzaWQsIE9pZCBvYmppZCkKIAkJCWNhc2UgREVGQUNMT0JKX05BTUVTUEFDRToKIAkJCQlp YWNscy5vYmp0eXBlID0gT0JKRUNUX1NDSEVNQTsKIAkJCQlicmVhazsKKwkJCWNhc2UgREVGQUNM T0JKX1ZBUklBQkxFOgorCQkJCWlhY2xzLm9ianR5cGUgPSBPQkpFQ1RfVkFSSUFCTEU7CisJCQkJ YnJlYWs7CiAJCQlkZWZhdWx0OgogCQkJCS8qIFNob3VsZG4ndCBnZXQgaGVyZSAqLwogCQkJCWVs b2coRVJST1IsICJ1bmV4cGVjdGVkIGRlZmF1bHQgQUNMIHR5cGU6ICVkIiwKQEAgLTMyNjYsNiAr MzMyNiwxMjkgQEAgRXhlY0dyYW50X1R5cGUoSW50ZXJuYWxHcmFudCAqaXN0bXQpCiAJaGVhcF9j bG9zZShyZWxhdGlvbiwgUm93RXhjbHVzaXZlTG9jayk7CiB9CiAKK3N0YXRpYyB2b2lkCitFeGVj R3JhbnRfVmFyaWFibGUoSW50ZXJuYWxHcmFudCAqaXN0bXQpCit7CisJUmVsYXRpb24JcmVsYXRp b247CisJTGlzdENlbGwgICAqY2VsbDsKKworCWlmIChpc3RtdC0+YWxsX3ByaXZzICYmIGlzdG10 LT5wcml2aWxlZ2VzID09IEFDTF9OT19SSUdIVFMpCisJCWlzdG10LT5wcml2aWxlZ2VzID0gQUNM X0FMTF9SSUdIVFNfVkFSSUFCTEU7CisKKwlyZWxhdGlvbiA9IGhlYXBfb3BlbihWYXJpYWJsZVJl bGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJZm9yZWFjaChjZWxsLCBpc3RtdC0+b2Jq ZWN0cykKKwl7CisJCU9pZAkJCXZhcklkID0gbGZpcnN0X29pZChjZWxsKTsKKwkJRm9ybV9wZ192 YXJpYWJsZSBwZ192YXJpYWJsZV90dXBsZTsKKwkJRGF0dW0JCWFjbERhdHVtOworCQlib29sCQlp c051bGw7CisJCUFjbE1vZGUJCWF2YWlsX2dvcHRpb25zOworCQlBY2xNb2RlCQl0aGlzX3ByaXZp bGVnZXM7CisJCUFjbAkJICAgKm9sZF9hY2w7CisJCUFjbAkJICAgKm5ld19hY2w7CisJCU9pZAkJ CWdyYW50b3JJZDsKKwkJT2lkCQkJb3duZXJJZDsKKwkJSGVhcFR1cGxlCXR1cGxlOworCQlIZWFw VHVwbGUJbmV3dHVwbGU7CisJCURhdHVtCQl2YWx1ZXNbTmF0dHNfcGdfdmFyaWFibGVdOworCQli b29sCQludWxsc1tOYXR0c19wZ192YXJpYWJsZV07CisJCWJvb2wJCXJlcGxhY2VzW05hdHRzX3Bn X3ZhcmlhYmxlXTsKKwkJaW50CQkJbm9sZG1lbWJlcnM7CisJCWludAkJCW5uZXdtZW1iZXJzOwor CQlPaWQJCSAgICpvbGRtZW1iZXJzOworCQlPaWQJCSAgICpuZXdtZW1iZXJzOworCisJCXR1cGxl ID0gU2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVtKHZhcklkKSk7 CisJCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSkpCisJCQllbG9nKEVSUk9SLCAiY2FjaGUg bG9va3VwIGZhaWxlZCBmb3Igc2NoZW1hIHZhcmlhYmxlcyAldSIsIHZhcklkKTsKKworCQlwZ192 YXJpYWJsZV90dXBsZSA9IChGb3JtX3BnX3ZhcmlhYmxlKSBHRVRTVFJVQ1QodHVwbGUpOworCisJ CS8qCisJCSAqIEdldCBvd25lciBJRCBhbmQgd29ya2luZyBjb3B5IG9mIGV4aXN0aW5nIEFDTC4g SWYgdGhlcmUncyBubyBBQ0wsCisJCSAqIHN1YnN0aXR1dGUgdGhlIHByb3BlciBkZWZhdWx0Lgor CQkgKi8KKwkJb3duZXJJZCA9IHBnX3ZhcmlhYmxlX3R1cGxlLT52YXJvd25lcjsKKwkJYWNsRGF0 dW0gPSBTeXNDYWNoZUdldEF0dHIoVkFSSUFCTEVPSUQsIHR1cGxlLCBBbnVtX3BnX3ZhcmlhYmxl X3ZhcmFjbCwKKwkJCQkJCQkJICAgJmlzTnVsbCk7CisJCWlmIChpc051bGwpCisJCXsKKwkJCW9s ZF9hY2wgPSBhY2xkZWZhdWx0KE9CSkVDVF9WQVJJQUJMRSwgb3duZXJJZCk7CisJCQkvKiBUaGVy ZSBhcmUgbm8gb2xkIG1lbWJlciByb2xlcyBhY2NvcmRpbmcgdG8gdGhlIGNhdGFsb2dzICovCisJ CQlub2xkbWVtYmVycyA9IDA7CisJCQlvbGRtZW1iZXJzID0gTlVMTDsKKwkJfQorCQllbHNlCisJ CXsKKwkJCW9sZF9hY2wgPSBEYXR1bUdldEFjbFBDb3B5KGFjbERhdHVtKTsKKwkJCS8qIEdldCB0 aGUgcm9sZXMgbWVudGlvbmVkIGluIHRoZSBleGlzdGluZyBBQ0wgKi8KKwkJCW5vbGRtZW1iZXJz ID0gYWNsbWVtYmVycyhvbGRfYWNsLCAmb2xkbWVtYmVycyk7CisJCX0KKworCQkvKiBEZXRlcm1p bmUgSUQgdG8gZG8gdGhlIGdyYW50IGFzLCBhbmQgYXZhaWxhYmxlIGdyYW50IG9wdGlvbnMgKi8K KwkJc2VsZWN0X2Jlc3RfZ3JhbnRvcihHZXRVc2VySWQoKSwgaXN0bXQtPnByaXZpbGVnZXMsCisJ CQkJCQkJb2xkX2FjbCwgb3duZXJJZCwKKwkJCQkJCQkmZ3JhbnRvcklkLCAmYXZhaWxfZ29wdGlv bnMpOworCisJCS8qCisJCSAqIFJlc3RyaWN0IHRoZSBwcml2aWxlZ2VzIHRvIHdoYXQgd2UgY2Fu IGFjdHVhbGx5IGdyYW50LCBhbmQgZW1pdCB0aGUKKwkJICogc3RhbmRhcmRzLW1hbmRhdGVkIHdh cm5pbmcgYW5kIGVycm9yIG1lc3NhZ2VzLgorCQkgKi8KKwkJdGhpc19wcml2aWxlZ2VzID0KKwkJ CXJlc3RyaWN0X2FuZF9jaGVja19ncmFudChpc3RtdC0+aXNfZ3JhbnQsIGF2YWlsX2dvcHRpb25z LAorCQkJCQkJCQkJIGlzdG10LT5hbGxfcHJpdnMsIGlzdG10LT5wcml2aWxlZ2VzLAorCQkJCQkJ CQkJIHZhcklkLCBncmFudG9ySWQsIE9CSkVDVF9WQVJJQUJMRSwKKwkJCQkJCQkJCSBOYW1lU3Ry KHBnX3ZhcmlhYmxlX3R1cGxlLT52YXJuYW1lKSwKKwkJCQkJCQkJCSAwLCBOVUxMKTsKKworCQkv KgorCQkgKiBHZW5lcmF0ZSBuZXcgQUNMLgorCQkgKi8KKwkJbmV3X2FjbCA9IG1lcmdlX2FjbF93 aXRoX2dyYW50KG9sZF9hY2wsIGlzdG10LT5pc19ncmFudCwKKwkJCQkJCQkJCSAgIGlzdG10LT5n cmFudF9vcHRpb24sIGlzdG10LT5iZWhhdmlvciwKKwkJCQkJCQkJCSAgIGlzdG10LT5ncmFudGVl cywgdGhpc19wcml2aWxlZ2VzLAorCQkJCQkJCQkJICAgZ3JhbnRvcklkLCBvd25lcklkKTsKKwor CQkvKgorCQkgKiBXZSBuZWVkIHRoZSBtZW1iZXJzIG9mIGJvdGggb2xkIGFuZCBuZXcgQUNMcyBz byB3ZSBjYW4gY29ycmVjdCB0aGUKKwkJICogc2hhcmVkIGRlcGVuZGVuY3kgaW5mb3JtYXRpb24u CisJCSAqLworCQlubmV3bWVtYmVycyA9IGFjbG1lbWJlcnMobmV3X2FjbCwgJm5ld21lbWJlcnMp OworCisJCS8qIGZpbmlzaGVkIGJ1aWxkaW5nIG5ldyBBQ0wgdmFsdWUsIG5vdyBpbnNlcnQgaXQg Ki8KKwkJTWVtU2V0KHZhbHVlcywgMCwgc2l6ZW9mKHZhbHVlcykpOworCQlNZW1TZXQobnVsbHMs IGZhbHNlLCBzaXplb2YobnVsbHMpKTsKKwkJTWVtU2V0KHJlcGxhY2VzLCBmYWxzZSwgc2l6ZW9m KHJlcGxhY2VzKSk7CisKKwkJcmVwbGFjZXNbQW51bV9wZ192YXJpYWJsZV92YXJhY2wgLSAxXSA9 IHRydWU7CisJCXZhbHVlc1tBbnVtX3BnX3ZhcmlhYmxlX3ZhcmFjbCAtIDFdID0gUG9pbnRlckdl dERhdHVtKG5ld19hY2wpOworCisJCW5ld3R1cGxlID0gaGVhcF9tb2RpZnlfdHVwbGUodHVwbGUs IFJlbGF0aW9uR2V0RGVzY3IocmVsYXRpb24pLCB2YWx1ZXMsCisJCQkJCQkJCQkgbnVsbHMsIHJl cGxhY2VzKTsKKworCQlDYXRhbG9nVHVwbGVVcGRhdGUocmVsYXRpb24sICZuZXd0dXBsZS0+dF9z ZWxmLCBuZXd0dXBsZSk7CisKKwkJLyogVXBkYXRlIGluaXRpYWwgcHJpdmlsZWdlcyBmb3IgZXh0 ZW5zaW9ucyAqLworCQlyZWNvcmRFeHRlbnNpb25Jbml0UHJpdih2YXJJZCwgVmFyaWFibGVSZWxh dGlvbklkLCAwLCBuZXdfYWNsKTsKKworCQkvKiBVcGRhdGUgdGhlIHNoYXJlZCBkZXBlbmRlbmN5 IEFDTCBpbmZvICovCisJCXVwZGF0ZUFjbERlcGVuZGVuY2llcyhWYXJpYWJsZVJlbGF0aW9uSWQs IHZhcklkLCAwLAorCQkJCQkJCSAgb3duZXJJZCwKKwkJCQkJCQkgIG5vbGRtZW1iZXJzLCBvbGRt ZW1iZXJzLAorCQkJCQkJCSAgbm5ld21lbWJlcnMsIG5ld21lbWJlcnMpOworCisJCVJlbGVhc2VT eXNDYWNoZSh0dXBsZSk7CisKKwkJcGZyZWUobmV3X2FjbCk7CisKKwkJLyogcHJldmVudCBlcnJv ciB3aGVuIHByb2Nlc3NpbmcgZHVwbGljYXRlIG9iamVjdHMgKi8KKwkJQ29tbWFuZENvdW50ZXJJ bmNyZW1lbnQoKTsKKwl9CisKKwloZWFwX2Nsb3NlKHJlbGF0aW9uLCBSb3dFeGNsdXNpdmVMb2Nr KTsKK30KKwogCiBzdGF0aWMgQWNsTW9kZQogc3RyaW5nX3RvX3ByaXZpbGVnZShjb25zdCBjaGFy ICpwcml2bmFtZSkKQEAgLTMyOTgsNiArMzQ4MSwxMCBAQCBzdHJpbmdfdG9fcHJpdmlsZWdlKGNv bnN0IGNoYXIgKnByaXZuYW1lKQogCQlyZXR1cm4gQUNMX0NPTk5FQ1Q7CiAJaWYgKHN0cmNtcChw cml2bmFtZSwgInJ1bGUiKSA9PSAwKQogCQlyZXR1cm4gMDsJCQkJLyogaWdub3JlIG9sZCBSVUxF IHByaXZpbGVnZXMgKi8KKwlpZiAoc3RyY21wKHByaXZuYW1lLCAicmVhZCIpID09IDApCisJCXJl dHVybiBBQ0xfUkVBRDsKKwlpZiAoc3RyY21wKHByaXZuYW1lLCAid3JpdGUiKSA9PSAwKQorCQly ZXR1cm4gQUNMX1dSSVRFOwogCWVyZXBvcnQoRVJST1IsCiAJCQkoZXJyY29kZShFUlJDT0RFX1NZ TlRBWF9FUlJPUiksCiAJCQkgZXJybXNnKCJ1bnJlY29nbml6ZWQgcHJpdmlsZWdlIHR5cGUgXCIl c1wiIiwgcHJpdm5hbWUpKSk7CkBAIC0zMzMzLDYgKzM1MjAsMTAgQEAgcHJpdmlsZWdlX3RvX3N0 cmluZyhBY2xNb2RlIHByaXZpbGVnZSkKIAkJCXJldHVybiAiVEVNUCI7CiAJCWNhc2UgQUNMX0NP Tk5FQ1Q6CiAJCQlyZXR1cm4gIkNPTk5FQ1QiOworCQljYXNlIEFDTF9SRUFEOgorCQkJcmV0dXJu ICJSRUFEIjsKKwkJY2FzZSBBQ0xfV1JJVEU6CisJCQlyZXR1cm4gIldSSVRFIjsKIAkJZGVmYXVs dDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgcHJpdmlsZWdlOiAlZCIsIChpbnQpIHBy aXZpbGVnZSk7CiAJfQpAQCAtMzQ1Niw2ICszNjQ3LDkgQEAgYWNsY2hlY2tfZXJyb3IoQWNsUmVz dWx0IGFjbGVyciwgT2JqZWN0VHlwZSBvYmp0eXBlLAogCQkJCQljYXNlIE9CSkVDVF9UWVBFOgog CQkJCQkJbXNnID0gZ2V0dGV4dF9ub29wKCJwZXJtaXNzaW9uIGRlbmllZCBmb3IgdHlwZSAlcyIp OwogCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJCQkJbXNnID0g Z2V0dGV4dF9ub29wKCJwZXJtaXNzaW9uIGRlbmllZCBmb3Igc2NoZW1hIHZhcmlhYmxlICVzIik7 CisJCQkJCQlicmVhazsKIAkJCQkJY2FzZSBPQkpFQ1RfVklFVzoKIAkJCQkJCW1zZyA9IGdldHRl eHRfbm9vcCgicGVybWlzc2lvbiBkZW5pZWQgZm9yIHZpZXcgJXMiKTsKIAkJCQkJCWJyZWFrOwpA QCAtMzU2Niw2ICszNzYwLDkgQEAgYWNsY2hlY2tfZXJyb3IoQWNsUmVzdWx0IGFjbGVyciwgT2Jq ZWN0VHlwZSBvYmp0eXBlLAogCQkJCQljYXNlIE9CSkVDVF9UWVBFOgogCQkJCQkJbXNnID0gZ2V0 dGV4dF9ub29wKCJtdXN0IGJlIG93bmVyIG9mIHR5cGUgJXMiKTsKIAkJCQkJCWJyZWFrOworCQkJ CQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCQkJCW1zZyA9IGdldHRleHRfbm9vcCgibXVzdCBi ZSBvd25lciBvZiBzY2hlbWEgdmFyaWFibGUgJXMiKTsKKwkJCQkJCWJyZWFrOwogCQkJCQljYXNl IE9CSkVDVF9WSUVXOgogCQkJCQkJbXNnID0gZ2V0dGV4dF9ub29wKCJtdXN0IGJlIG93bmVyIG9m IHZpZXcgJXMiKTsKIAkJCQkJCWJyZWFrOwpAQCAtMzcxMCw2ICszOTA3LDggQEAgcGdfYWNsbWFz ayhPYmplY3RUeXBlIG9ianR5cGUsIE9pZCB0YWJsZV9vaWQsIEF0dHJOdW1iZXIgYXR0bnVtLCBP aWQgcm9sZWlkLAogCQkJcmV0dXJuIEFDTF9OT19SSUdIVFM7CiAJCWNhc2UgT0JKRUNUX1RZUEU6 CiAJCQlyZXR1cm4gcGdfdHlwZV9hY2xtYXNrKHRhYmxlX29pZCwgcm9sZWlkLCBtYXNrLCBob3cp OworCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCXJldHVybiBwZ192YXJpYWJsZV9hY2xtYXNr KHRhYmxlX29pZCwgcm9sZWlkLCBtYXNrLCBob3cpOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJP UiwgInVucmVjb2duaXplZCBvYmp0eXBlOiAlZCIsCiAJCQkJIChpbnQpIG9ianR5cGUpOwpAQCAt NDQ5OSw2ICs0Njk4LDY3IEBAIHBnX3R5cGVfYWNsbWFzayhPaWQgdHlwZV9vaWQsIE9pZCByb2xl aWQsIEFjbE1vZGUgbWFzaywgQWNsTWFza0hvdyBob3cpCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAor LyoKKyAqIEV4cG9ydGVkIHJvdXRpbmUgZm9yIGV4YW1pbmluZyBhIHVzZXIncyBwcml2aWxlZ2Vz IGZvciBhIHZhcmlhYmxlLgorICovCitBY2xNb2RlCitwZ192YXJpYWJsZV9hY2xtYXNrKE9pZCB2 YXJfb2lkLCBPaWQgcm9sZWlkLCBBY2xNb2RlIG1hc2ssIEFjbE1hc2tIb3cgaG93KQoreworCUFj bE1vZGUJCXJlc3VsdDsKKwlIZWFwVHVwbGUJdHVwbGU7CisJRGF0dW0JCWFjbERhdHVtOworCWJv b2wJCWlzTnVsbDsKKwlBY2wJCSAgICphY2w7CisJT2lkCQkJb3duZXJJZDsKKworCUZvcm1fcGdf dmFyaWFibGUgdmFyRm9ybTsKKworCS8qIEJ5cGFzcyBwZXJtaXNzaW9uIGNoZWNrcyBmb3Igc3Vw ZXJ1c2VycyAqLworCWlmIChzdXBlcnVzZXJfYXJnKHJvbGVpZCkpCisJCXJldHVybiBtYXNrOwor CisJLyoKKwkgKiBNdXN0IGdldCB0aGUgdHlwZSdzIHR1cGxlIGZyb20gcGdfdHlwZQorCSAqLwor CXR1cGxlID0gU2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVtKHZh cl9vaWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwbGUpKQorCQllcmVwb3J0KEVSUk9S LAorCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX09CSkVDVCksCisJCQkJIGVycm1zZygi dmFyaWFibGUgd2l0aCBPSUQgJXUgZG9lcyBub3QgZXhpc3QiLAorCQkJCQkJdmFyX29pZCkpKTsK Kwl2YXJGb3JtID0gKEZvcm1fcGdfdmFyaWFibGUpIEdFVFNUUlVDVCh0dXBsZSk7CisKKwkvKgor CSAqIE5vdyBnZXQgdGhlIHR5cGUncyBvd25lciBhbmQgQUNMIGZyb20gdGhlIHR1cGxlCisJICov CisJb3duZXJJZCA9IHZhckZvcm0tPnZhcm93bmVyOworCisJYWNsRGF0dW0gPSBTeXNDYWNoZUdl dEF0dHIoVkFSSUFCTEVPSUQsIHR1cGxlLAorCQkJCQkJCSAgIEFudW1fcGdfdmFyaWFibGVfdmFy YWNsLCAmaXNOdWxsKTsKKwlpZiAoaXNOdWxsKQorCXsKKwkJLyogTm8gQUNMLCBzbyBidWlsZCBk ZWZhdWx0IEFDTCAqLworCQlhY2wgPSBhY2xkZWZhdWx0KE9CSkVDVF9WQVJJQUJMRSwgb3duZXJJ ZCk7CisJCWFjbERhdHVtID0gKERhdHVtKSAwOworCX0KKwllbHNlCisJeworCQkvKiBkZXRvYXN0 IHJlbCdzIEFDTCBpZiBuZWNlc3NhcnkgKi8KKwkJYWNsID0gRGF0dW1HZXRBY2xQKGFjbERhdHVt KTsKKwl9CisKKwlyZXN1bHQgPSBhY2xtYXNrKGFjbCwgcm9sZWlkLCBvd25lcklkLCBtYXNrLCBo b3cpOworCisJLyogaWYgd2UgaGF2ZSBhIGRldG9hc3RlZCBjb3B5LCBmcmVlIGl0ICovCisJaWYg KGFjbCAmJiAoUG9pbnRlcikgYWNsICE9IERhdHVtR2V0UG9pbnRlcihhY2xEYXR1bSkpCisJCXBm cmVlKGFjbCk7CisKKwlSZWxlYXNlU3lzQ2FjaGUodHVwbGUpOworCisJcmV0dXJuIHJlc3VsdDsK K30KKworCiAvKgogICogRXhwb3J0ZWQgcm91dGluZSBmb3IgY2hlY2tpbmcgYSB1c2VyJ3MgYWNj ZXNzIHByaXZpbGVnZXMgdG8gYSBjb2x1bW4KICAqCkBAIC00NzQ0LDYgKzUwMDQsMTggQEAgcGdf dHlwZV9hY2xjaGVjayhPaWQgdHlwZV9vaWQsIE9pZCByb2xlaWQsIEFjbE1vZGUgbW9kZSkKIAkJ cmV0dXJuIEFDTENIRUNLX05PX1BSSVY7CiB9CiAKKy8qCisgKiBFeHBvcnRlZCByb3V0aW5lIGZv ciBjaGVja2luZyBhIHVzZXIncyBhY2Nlc3MgcHJpdmlsZWdlcyB0byBhIHZhcmlhYmxlCisgKi8K K0FjbFJlc3VsdAorcGdfdmFyaWFibGVfYWNsY2hlY2soT2lkIHR5cGVfb2lkLCBPaWQgcm9sZWlk LCBBY2xNb2RlIG1vZGUpCit7CisJaWYgKHBnX3ZhcmlhYmxlX2FjbG1hc2sodHlwZV9vaWQsIHJv bGVpZCwgbW9kZSwgQUNMTUFTS19BTlkpICE9IDApCisJCXJldHVybiBBQ0xDSEVDS19PSzsKKwll bHNlCisJCXJldHVybiBBQ0xDSEVDS19OT19QUklWOworfQorCiAvKgogICogT3duZXJzaGlwIGNo ZWNrIGZvciBhIHJlbGF0aW9uIChzcGVjaWZpZWQgYnkgT0lEKS4KICAqLwpAQCAtNTM2MSw2ICs1 NjMzLDMzIEBAIHBnX3N0YXRpc3RpY3Nfb2JqZWN0X293bmVyY2hlY2soT2lkIHN0YXRfb2lkLCBP aWQgcm9sZWlkKQogCXJldHVybiBoYXNfcHJpdnNfb2Zfcm9sZShyb2xlaWQsIG93bmVySWQpOwog fQogCisvKgorICogT3duZXJzaGlwIGNoZWNrIGZvciBhIHNjaGVtYSB2YXJpYWJsZXMgKHNwZWNp ZmllZCBieSBPSUQpLgorICovCitib29sCitwZ192YXJpYWJsZV9vd25lcmNoZWNrKE9pZCBkYl9v aWQsIE9pZCByb2xlaWQpCit7CisJSGVhcFR1cGxlCXR1cGxlOworCU9pZAkJCW93bmVySWQ7CisK KwkvKiBTdXBlcnVzZXJzIGJ5cGFzcyBhbGwgcGVybWlzc2lvbiBjaGVja2luZy4gKi8KKwlpZiAo c3VwZXJ1c2VyX2FyZyhyb2xlaWQpKQorCQlyZXR1cm4gdHJ1ZTsKKworCXR1cGxlID0gU2VhcmNo U3lzQ2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVtKGRiX29pZCkpOworCWlmICgh SGVhcFR1cGxlSXNWYWxpZCh0dXBsZSkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUo RVJSQ09ERV9VTkRFRklORURfREFUQUJBU0UpLAorCQkJCSBlcnJtc2coInZhcmlhYmxlIHdpdGgg T0lEICV1IGRvZXMgbm90IGV4aXN0IiwgZGJfb2lkKSkpOworCisJb3duZXJJZCA9ICgoRm9ybV9w Z192YXJpYWJsZSkgR0VUU1RSVUNUKHR1cGxlKSktPnZhcm93bmVyOworCisJUmVsZWFzZVN5c0Nh Y2hlKHR1cGxlKTsKKworCXJldHVybiBoYXNfcHJpdnNfb2Zfcm9sZShyb2xlaWQsIG93bmVySWQp OworfQorCisKIC8qCiAgKiBDaGVjayB3aGV0aGVyIHNwZWNpZmllZCByb2xlIGhhcyBDUkVBVEVS T0xFIHByaXZpbGVnZSAob3IgaXMgYSBzdXBlcnVzZXIpCiAgKgpAQCAtNTQ4Niw2ICs1Nzg1LDEw IEBAIGdldF91c2VyX2RlZmF1bHRfYWNsKE9iamVjdFR5cGUgb2JqdHlwZSwgT2lkIG93bmVySWQs IE9pZCBuc3Bfb2lkKQogCQkJZGVmYWNsb2JqdHlwZSA9IERFRkFDTE9CSl9OQU1FU1BBQ0U7CiAJ CQlicmVhazsKIAorCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCWRlZmFjbG9ianR5cGUgPSBE RUZBQ0xPQkpfVkFSSUFCTEU7CisJCQlicmVhazsKKwogCQlkZWZhdWx0OgogCQkJcmV0dXJuIE5V TEw7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMgYi9z cmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYwppbmRleCA0ZjFkMzY1MzU3Li43ODJkZGIx NjU1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYworKysgYi9z cmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYwpAQCAtNTksNiArNTksNyBAQAogI2luY2x1 ZGUgImNhdGFsb2cvcGdfdHNfdGVtcGxhdGUuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUu aCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3VzZXJfbWFwcGluZy5oIgorI2luY2x1ZGUgImNhdGFs b2cvcGdfdmFyaWFibGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9jb21tZW50LmgiCiAjaW5jbHVk ZSAiY29tbWFuZHMvZGVmcmVtLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5o IgpAQCAtNjcsNiArNjgsNyBAQAogI2luY2x1ZGUgImNvbW1hbmRzL3Byb2NsYW5nLmgiCiAjaW5j bHVkZSAiY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvc2No ZW1hY21kcy5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3NjaGVtYXZhcmlhYmxlLmgiCiAjaW5jbHVk ZSAiY29tbWFuZHMvc2VjbGFiZWwuaCIKICNpbmNsdWRlICJjb21tYW5kcy9zZXF1ZW5jZS5oIgog I2luY2x1ZGUgImNvbW1hbmRzL3RyaWdnZXIuaCIKQEAgLTEyODAsNiArMTI4MiwxMCBAQCBkb0Rl bGV0aW9uKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwgaW50IGZsYWdzKQogCQkJRHJvcFRy YW5zZm9ybUJ5SWQob2JqZWN0LT5vYmplY3RJZCk7CiAJCQlicmVhazsKIAorCQljYXNlIE9DTEFT U19WQVJJQUJMRToKKwkJCVJlbW92ZVZhcmlhYmxlQnlJZChvYmplY3QtPm9iamVjdElkKTsKKwkJ CWJyZWFrOworCiAJCQkvKgogCQkJICogVGhlc2UgZ2xvYmFsIG9iamVjdCB0eXBlcyBhcmUgbm90 IHN1cHBvcnRlZCBoZXJlLgogCQkJICovCkBAIC0yNTM3LDYgKzI1NDMsOSBAQCBnZXRPYmplY3RD bGFzcyhjb25zdCBPYmplY3RBZGRyZXNzICpvYmplY3QpCiAKIAkJY2FzZSBUcmFuc2Zvcm1SZWxh dGlvbklkOgogCQkJcmV0dXJuIE9DTEFTU19UUkFOU0ZPUk07CisKKwkJY2FzZSBWYXJpYWJsZVJl bGF0aW9uSWQ6CisJCQlyZXR1cm4gT0NMQVNTX1ZBUklBQkxFOwogCX0KIAogCS8qIHNob3VsZG4n dCBnZXQgaGVyZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2Uu YyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvbmFtZXNwYWNlLmMKaW5kZXggMGY2N2ExMjJlZC4uODFh YWY0NTRhOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2UuYworKysg Yi9zcmMvYmFja2VuZC9jYXRhbG9nL25hbWVzcGFjZS5jCkBAIC0zOSw2ICszOSw3IEBACiAjaW5j bHVkZSAiY2F0YWxvZy9wZ190c19wYXJzZXIuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3RzX3Rl bXBsYXRlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCisjaW5jbHVkZSAiY2F0YWxv Zy9wZ192YXJpYWJsZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2RiY29tbWFuZHMuaCIKICNpbmNs dWRlICJmdW5jYXBpLmgiCiAjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKQEAgLTc1NSw2ICs3NTYs NzEgQEAgUmVsYXRpb25Jc1Zpc2libGUoT2lkIHJlbGlkKQogCXJldHVybiB2aXNpYmxlOwogfQog CisvKgorICogVmFyaWFibGVJc1Zpc2libGUKKyAqCQlEZXRlcm1pbmUgd2hldGhlciBhIHZhcmlh YmxlIChpZGVudGlmaWVkIGJ5IE9JRCkgaXMgdmlzaWJsZSBpbiB0aGUKKyAqCQljdXJyZW50IHNl YXJjaCBwYXRoLiAgVmlzaWJsZSBtZWFucyAid291bGQgYmUgZm91bmQgYnkgc2VhcmNoaW5nCisg KgkJZm9yIHRoZSB1bnF1YWxpZmllZCB2YXJpYWJsZSBuYW1lIi4KKyAqLworYm9vbAorVmFyaWFi bGVJc1Zpc2libGUoT2lkIHZhcmlkKQoreworCUhlYXBUdXBsZQl2YXJ0dXA7CisJRm9ybV9wZ192 YXJpYWJsZSB2YXJmb3JtOworCU9pZAkJCXZhcm5hbWVzcGFjZTsKKwlib29sCQl2aXNpYmxlOwor CisJdmFydHVwID0gU2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVt KHZhcmlkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHZhcnR1cCkpCisJCWVsb2coRVJST1Is ICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBzY2hlbWEgdmFyaWFibGUgJXUiLCB2YXJpZCk7CisJ dmFyZm9ybSA9IChGb3JtX3BnX3ZhcmlhYmxlKSBHRVRTVFJVQ1QodmFydHVwKTsKKworCXJlY29t cHV0ZU5hbWVzcGFjZVBhdGgoKTsKKworCS8qCisJICogUXVpY2sgY2hlY2s6IGlmIGl0IGFpbid0 IGluIHRoZSBwYXRoIGF0IGFsbCwgaXQgYWluJ3QgdmlzaWJsZS4gSXRlbXMgaW4KKwkgKiB0aGUg c3lzdGVtIG5hbWVzcGFjZSBhcmUgc3VyZWx5IGluIHRoZSBwYXRoIGFuZCBzbyB3ZSBuZWVkbid0 IGV2ZW4gZG8KKwkgKiBsaXN0X21lbWJlcl9vaWQoKSBmb3IgdGhlbS4KKwkgKi8KKwl2YXJuYW1l c3BhY2UgPSB2YXJmb3JtLT52YXJuYW1lc3BhY2U7CisJaWYgKHZhcm5hbWVzcGFjZSAhPSBQR19D QVRBTE9HX05BTUVTUEFDRSAmJgorCQkhbGlzdF9tZW1iZXJfb2lkKGFjdGl2ZVNlYXJjaFBhdGgs IHZhcm5hbWVzcGFjZSkpCisJCXZpc2libGUgPSBmYWxzZTsKKwllbHNlCisJeworCQkvKgorCQkg KiBJZiBpdCBpcyBpbiB0aGUgcGF0aCwgaXQgbWlnaHQgc3RpbGwgbm90IGJlIHZpc2libGU7IGl0 IGNvdWxkIGJlCisJCSAqIGhpZGRlbiBieSBhbm90aGVyIHJlbGF0aW9uIG9mIHRoZSBzYW1lIG5h bWUgZWFybGllciBpbiB0aGUgcGF0aC4gU28KKwkJICogd2UgbXVzdCBkbyBhIHNsb3cgY2hlY2sg Zm9yIGNvbmZsaWN0aW5nIHJlbGF0aW9ucy4KKwkJICovCisJCWNoYXIJICAgKnZhcm5hbWUgPSBO YW1lU3RyKHZhcmZvcm0tPnZhcm5hbWUpOworCQlMaXN0Q2VsbCAgICpsOworCisJCXZpc2libGUg PSBmYWxzZTsKKwkJZm9yZWFjaChsLCBhY3RpdmVTZWFyY2hQYXRoKQorCQl7CisJCQlPaWQJCQlu YW1lc3BhY2VJZCA9IGxmaXJzdF9vaWQobCk7CisKKwkJCWlmIChuYW1lc3BhY2VJZCA9PSB2YXJu YW1lc3BhY2UpCisJCQl7CisJCQkJLyogRm91bmQgaXQgZmlyc3QgaW4gcGF0aCAqLworCQkJCXZp c2libGUgPSB0cnVlOworCQkJCWJyZWFrOworCQkJfQorCQkJaWYgKE9pZElzVmFsaWQoZ2V0X3Zh cm5hbWVfdmFyaWQodmFybmFtZSwgbmFtZXNwYWNlSWQpKSkKKwkJCXsKKwkJCQkvKiBGb3VuZCBz b21ldGhpbmcgZWxzZSBmaXJzdCBpbiBwYXRoICovCisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwl9 CisKKwlSZWxlYXNlU3lzQ2FjaGUodmFydHVwKTsKKworCXJldHVybiB2aXNpYmxlOworfQorCisK IAogLyoKICAqIFR5cGVuYW1lR2V0VHlwaWQKQEAgLTI3NzYsNiArMjg0MiwyMDIgQEAgVFNDb25m aWdJc1Zpc2libGUoT2lkIGNmZ2lkKQogCXJldHVybiB2aXNpYmxlOwogfQogCisvKgorICogV2hl biB3ZSBrbm93IGEgdmFyaWFibGUgbmFtZSwgdGhlbiB3ZSBjYW4gZmluZCB2YXJpYWJsZSBzaW1w bHkKKyAqLworT2lkCitsb29rdXBfdmFyaWFibGUoY29uc3QgY2hhciAqbnNwbmFtZSwgY29uc3Qg Y2hhciAqdmFybmFtZSwgYm9vbCBtaXNzaW5nX29rKQoreworCU9pZAkJCW5hbWVzcGFjZUlkOwor CU9pZAkJCXZhcm9pZAkJPSBJbnZhbGlkT2lkOworCUxpc3RDZWxsICAgKmw7CisKKwlpZiAobnNw bmFtZSkKKwl7CisJCW5hbWVzcGFjZUlkID0gTG9va3VwRXhwbGljaXROYW1lc3BhY2UobnNwbmFt ZSwgbWlzc2luZ19vayk7CisJCWlmICghT2lkSXNWYWxpZChuYW1lc3BhY2VJZCkpCisJCQlyZXR1 cm4gSW52YWxpZE9pZDsKKworCQl2YXJvaWQgPSBHZXRTeXNDYWNoZU9pZDIoVkFSSUFCTEVOQU1F TlNQLAorCQkJCQkJCQkgIFBvaW50ZXJHZXREYXR1bSh2YXJuYW1lKSwKKwkJCQkJCQkJICBPYmpl Y3RJZEdldERhdHVtKG5hbWVzcGFjZUlkKSk7CisJfQorCWVsc2UKKwl7CisJCS8qIHNlYXJjaCBm b3IgaXQgaW4gc2VhcmNoIHBhdGggKi8KKwkJcmVjb21wdXRlTmFtZXNwYWNlUGF0aCgpOworCisJ CWZvcmVhY2gobCwgYWN0aXZlU2VhcmNoUGF0aCkKKwkJeworCQkJbmFtZXNwYWNlSWQgPSBsZmly c3Rfb2lkKGwpOworCisJCQl2YXJvaWQgPSBHZXRTeXNDYWNoZU9pZDIoVkFSSUFCTEVOQU1FTlNQ LAorCQkJCQkJCQkJICBQb2ludGVyR2V0RGF0dW0odmFybmFtZSksCisJCQkJCQkJCQkgIE9iamVj dElkR2V0RGF0dW0obmFtZXNwYWNlSWQpKTsKKworCQkJaWYgKE9pZElzVmFsaWQodmFyb2lkKSkK KwkJCQlicmVhazsKKwkJfQorCX0KKworCWlmICghT2lkSXNWYWxpZCh2YXJvaWQpICYmICFtaXNz aW5nX29rKQorCXsKKwkJaWYgKG5zcG5hbWUpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJy Y29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCQkgZXJybXNnKCJ2YXJpYWJsZSBc IiVzXCIuXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJCQkJbnNwbmFtZSwgdmFybmFtZSkp KTsKKwkJZWxzZQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRF RklORURfT0JKRUNUKSwKKwkJCQkJIGVycm1zZygidmFyaWFibGUgXCIlc1wiIGRvZXMgbm90IGV4 aXN0IiwKKwkJCQkJCQkJdmFybmFtZSkpKTsKKwl9CisKKwlyZXR1cm4gdmFyb2lkOworfQorCitM aXN0ICoKK05hbWVzRnJvbUxpc3QoTGlzdCAqbmFtZXMpCit7CisJTGlzdENlbGwgKmw7CisJTGlz dAkqcmVzdWx0ID0gTklMOworCisJZm9yZWFjaChsLCBuYW1lcykKKwl7CisJCU5vZGUgKm4gPSBs Zmlyc3QobCk7CisKKwkJaWYgKElzQShuLCBTdHJpbmcpKQorCQl7CisJCQlyZXN1bHQgPSBsYXBw ZW5kKHJlc3VsdCwgbik7CisJCX0KKwkJZWxzZQorCQkJYnJlYWs7CisJfQorCisJcmV0dXJuIHJl c3VsdDsKK30KKworLyoKKyAqIGlkZW50aWZ5X3ZhcmlhYmxlCisgKgorICogUmV0dXJucyBvaWQg b2Ygbm90IGFtYmlnb251b3VzIHZhcmlhYmxlIHNwZWNpZmllZCBieSBxdWFsaWZpZWQgcGF0aAor ICogb3IgSW52YWxpZE9pZC4gV2hlbiB0aGUgcGF0aCBpcyBhbWJpZ29udW91cywgdGhlbiBub3Rf dW5pcSBmbGFnIGlzCisgKiBpcyB0cnVlLgorICovCitPaWQKK2lkZW50aWZ5X3ZhcmlhYmxlKExp c3QgKm5hbWVzLCBjaGFyICoqYXR0cm5hbWUsIGJvb2wgKm5vdF91bmlxKQoreworCWNoYXIgICAq YSA9IE5VTEw7CisJY2hhciAgICpiID0gTlVMTDsKKwljaGFyICAgKmMgPSBOVUxMOworCWNoYXIg ICAqZCA9IE5VTEw7CisJT2lkCQl2YXJvaWRfd2l0aG91dF9hdHRyOworCU9pZAkJdmFyb2lkX3dp dGhfYXR0cjsKKworCSpub3RfdW5pcSA9IGZhbHNlOworCisJc3dpdGNoIChsaXN0X2xlbmd0aChu YW1lcykpCisJeworCQljYXNlIDE6CisJCQlhID0gc3RyVmFsKGxpbml0aWFsKG5hbWVzKSk7CisJ CQlyZXR1cm4gbG9va3VwX3ZhcmlhYmxlKE5VTEwsIGEsIHRydWUpOworCisJCWNhc2UgMjoKKwkJ CWEgPSBzdHJWYWwobGluaXRpYWwobmFtZXMpKTsKKwkJCWIgPSBzdHJWYWwobHNlY29uZChuYW1l cykpOworCisJCQkvKgorCQkJICogYS5iIGNhbiBtZWFuICJzY2hlbWEiLiJ2YXJpYWJsZSIgb3Ig InZhcmlhYmxlIi4iZmllbGQiLAorCQkJICogQ2hlY2sgYm90aCB2YXJpYW50cywgYW5kIHJldHVy bnMgSW52YWxpZE9pZCB3aXRoIG5vdF91bmlxCisJCQkgKiBmbGFnLCB3aGVuIGJvdGggaW50ZXJw cmV0YXRpb25zIGFyZSBwb3NzaWJsZS4KKwkJCSAqLworCQkJdmFyb2lkX3dpdGhvdXRfYXR0ciA9 IGxvb2t1cF92YXJpYWJsZShhLCBiLCB0cnVlKTsKKwkJCXZhcm9pZF93aXRoX2F0dHIgPSBsb29r dXBfdmFyaWFibGUoTlVMTCwgYSwgdHJ1ZSk7CisKKwkJCWlmIChPaWRJc1ZhbGlkKHZhcm9pZF93 aXRob3V0X2F0dHIpICYmIE9pZElzVmFsaWQodmFyb2lkX3dpdGhfYXR0cikpCisJCQl7CisJCQkJ Km5vdF91bmlxID0gdHJ1ZTsKKwkJCQlyZXR1cm4gSW52YWxpZE9pZDsKKwkJCX0KKwkJCWVsc2Ug aWYgKE9pZElzVmFsaWQodmFyb2lkX3dpdGhvdXRfYXR0cikpCisJCQl7CisJCQkJKmF0dHJuYW1l ID0gTlVMTDsKKwkJCQlyZXR1cm4gdmFyb2lkX3dpdGhvdXRfYXR0cjsKKwkJCX0KKwkJCWVsc2UK KwkJCXsKKwkJCQkqYXR0cm5hbWUgPSBiOworCQkJCXJldHVybiB2YXJvaWRfd2l0aF9hdHRyOwor CQkJfQorCQkJYnJlYWs7CisKKwkJY2FzZSAzOgorCQkJYSA9IHN0clZhbChsaW5pdGlhbChuYW1l cykpOworCQkJYiA9IHN0clZhbChsc2Vjb25kKG5hbWVzKSk7CisJCQljID0gc3RyVmFsKGx0aGly ZChuYW1lcykpOworCisJCQkvKgorCQkJICogYS5iLmMgY2FuIG1lYW4gImNhdGFsb2ciLiJzY2hl bWEiLiJ2YXJpYWJsZSIgb3IgInNjaGVtYSIuInZhcmlhYmxlIi4iZmllbGQiLAorCQkJICogQ2hl Y2sgYm90aCB2YXJpYW50cywgYW5kIHJldHVybnMgSW52YWxpZE9pZCB3aXRoIG5vdF91bmlxCisJ CQkgKiBmbGFnLCB3aGVuIGJvdGggaW50ZXJwcmV0YXRpb25zIGFyZSBwb3NzaWJsZS4KKwkJCSAq LworCQkJdmFyb2lkX3dpdGhvdXRfYXR0ciA9IGxvb2t1cF92YXJpYWJsZShiLCBjLCB0cnVlKTsK KwkJCXZhcm9pZF93aXRoX2F0dHIgPSBsb29rdXBfdmFyaWFibGUoYSwgYiwgdHJ1ZSk7CisKKwkJ CWlmIChPaWRJc1ZhbGlkKHZhcm9pZF93aXRob3V0X2F0dHIpICYmIE9pZElzVmFsaWQodmFyb2lk X3dpdGhfYXR0cikpCisJCQl7CisJCQkJKm5vdF91bmlxID0gdHJ1ZTsKKwkJCQlyZXR1cm4gSW52 YWxpZE9pZDsKKwkJCX0KKwkJCWVsc2UgaWYgKE9pZElzVmFsaWQodmFyb2lkX3dpdGhvdXRfYXR0 cikpCisJCQl7CisJCQkJKmF0dHJuYW1lID0gTlVMTDsKKworCQkJCS8qCisJCQkJICogV2UgaW4g dGhpcyBjYXNlIGEgImEiIGlzIHVzZWQgYXMgY2F0YWxvZyBuYW1lLCBjaGVjayBpdC4KKwkJCQkg Ki8KKwkJCQlpZiAoc3RyY21wKGEsIGdldF9kYXRhYmFzZV9uYW1lKE15RGF0YWJhc2VJZCkpICE9 IDApCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJF X05PVF9TVVBQT1JURUQpLAorCQkJCQkJCSBlcnJtc2coImNyb3NzLWRhdGFiYXNlIHJlZmVyZW5j ZXMgYXJlIG5vdCBpbXBsZW1lbnRlZDogJXMiLAorCQkJCQkJCQkJTmFtZUxpc3RUb1N0cmluZyhu YW1lcykpKSk7CisKKwkJCQlyZXR1cm4gdmFyb2lkX3dpdGhvdXRfYXR0cjsKKwkJCX0KKwkJCWVs c2UKKwkJCXsKKwkJCQkqYXR0cm5hbWUgPSBjOworCQkJCXJldHVybiB2YXJvaWRfd2l0aF9hdHRy OworCQkJfQorCQkJYnJlYWs7CisKKwkJY2FzZSA0OgorCQkJYSA9IHN0clZhbChsaW5pdGlhbChu YW1lcykpOworCQkJYiA9IHN0clZhbChsc2Vjb25kKG5hbWVzKSk7CisJCQljID0gc3RyVmFsKGx0 aGlyZChuYW1lcykpOworCQkJZCA9IHN0clZhbChsZm91cnRoKG5hbWVzKSk7CisKKwkJCS8qCisJ CQkgKiBXZSBpbiB0aGlzIGNhc2UgYSAiYSIgaXMgdXNlZCBhcyBjYXRhbG9nIG5hbWUsIGNoZWNr IGl0LgorCQkJICovCisJCQlpZiAoc3RyY21wKGEsIGdldF9kYXRhYmFzZV9uYW1lKE15RGF0YWJh c2VJZCkpICE9IDApCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVf RkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCSBlcnJtc2coImNyb3NzLWRhdGFiYXNlIHJl ZmVyZW5jZXMgYXJlIG5vdCBpbXBsZW1lbnRlZDogJXMiLAorCQkJCQkJCQlOYW1lTGlzdFRvU3Ry aW5nKG5hbWVzKSkpKTsKKworCQkJKmF0dHJuYW1lID0gZDsKKwkJCXJldHVybiBsb29rdXBfdmFy aWFibGUoYiwgYywgdHJ1ZSk7CisKKwkJZGVmYXVsdDoKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJIGVycm1zZygiaW1wcm9wZXIg cXVhbGlmaWVkIG5hbWUgKHRvbyBtYW55IGRvdHRlZCBuYW1lcyk6ICVzIiwKKwkJCQkJCQlOYW1l TGlzdFRvU3RyaW5nKG5hbWVzKSkpKTsKKwkJCWJyZWFrOworCX0KK30KIAogLyoKICAqIERlY29u c3RydWN0UXVhbGlmaWVkTmFtZQpAQCAtNDQxNiwzICs0Njc4LDE0IEBAIHBnX2lzX290aGVyX3Rl bXBfc2NoZW1hKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlQR19SRVRVUk5fQk9PTChpc090aGVyVGVt cE5hbWVzcGFjZShvaWQpKTsKIH0KKworRGF0dW0KK3BnX3ZhcmlhYmxlX2lzX3Zpc2libGUoUEdf RlVOQ1RJT05fQVJHUykKK3sKKwlPaWQJCQlvaWQgPSBQR19HRVRBUkdfT0lEKDApOworCisJaWYg KCFTZWFyY2hTeXNDYWNoZUV4aXN0czEoVkFSSUFCTEVPSUQsIE9iamVjdElkR2V0RGF0dW0ob2lk KSkpCisJCVBHX1JFVFVSTl9OVUxMKCk7CisKKwlQR19SRVRVUk5fQk9PTChWYXJpYWJsZUlzVmlz aWJsZShvaWQpKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvb2JqZWN0YWRk cmVzcy5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9vYmplY3RhZGRyZXNzLmMKaW5kZXggN2RiOTQy ZGNiYS4uY2MzZDQxNWU2MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9vYmplY3Rh ZGRyZXNzLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9vYmplY3RhZGRyZXNzLmMKQEAgLTU4 LDYgKzU4LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3RzX3RlbXBsYXRlLmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ191c2VyX21hcHBpbmcu aCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMv ZGJjb21tYW5kcy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2RlZnJlbS5oIgogI2luY2x1ZGUgImNv bW1hbmRzL2V2ZW50X3RyaWdnZXIuaCIKQEAgLTQ4OSw2ICs0OTAsMTggQEAgc3RhdGljIGNvbnN0 IE9iamVjdFByb3BlcnR5VHlwZSBPYmplY3RQcm9wZXJ0eVtdID0KIAkJSW52YWxpZEF0dHJOdW1i ZXIsCQkvKiBubyBBQ0wgKHNhbWUgYXMgcmVsYXRpb24pICovCiAJCU9CSkVDVF9TVEFUSVNUSUNf RVhULAogCQl0cnVlCisJfSwKKwl7CisJCVZhcmlhYmxlUmVsYXRpb25JZCwKKwkJVmFyaWFibGVP YmplY3RJbmRleElkLAorCQlWQVJJQUJMRU9JRCwKKwkJVkFSSUFCTEVOQU1FTlNQLAorCQlBbnVt X3BnX3ZhcmlhYmxlX3Zhcm5hbWUsCisJCUFudW1fcGdfdmFyaWFibGVfdmFybmFtZXNwYWNlLAor CQlBbnVtX3BnX3ZhcmlhYmxlX3Zhcm93bmVyLAorCQlBbnVtX3BnX3ZhcmlhYmxlX3ZhcmFjbCwK KwkJT0JKRUNUX1ZBUklBQkxFLAorCQl0cnVlCiAJfQogfTsKIApAQCAtNzE0LDYgKzcyNywxMCBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IG9iamVjdF90eXBlX21hcAogCS8qIE9CSkVDVF9TVEFUSVNU SUNfRVhUICovCiAJewogCQkic3RhdGlzdGljcyBvYmplY3QiLCBPQkpFQ1RfU1RBVElTVElDX0VY VAorCX0sCisJLyogT0NMQVNTX1ZBUklBQkxFICovCisJeworCQkic2NoZW1hIHZhcmlhYmxlIiwg T0JKRUNUX1ZBUklBQkxFCiAJfQogfTsKIApAQCAtNzM5LDYgKzc1Niw3IEBAIHN0YXRpYyBPYmpl Y3RBZGRyZXNzIGdldF9vYmplY3RfYWRkcmVzc19hdHRyZGVmKE9iamVjdFR5cGUgb2JqdHlwZSwK IAkJCQkJCSAgIGJvb2wgbWlzc2luZ19vayk7CiBzdGF0aWMgT2JqZWN0QWRkcmVzcyBnZXRfb2Jq ZWN0X2FkZHJlc3NfdHlwZShPYmplY3RUeXBlIG9ianR5cGUsCiAJCQkJCQlUeXBlTmFtZSAqdHlw ZW5hbWUsIGJvb2wgbWlzc2luZ19vayk7CitzdGF0aWMgT2JqZWN0QWRkcmVzcyBnZXRfb2JqZWN0 X2FkZHJlc3NfdmFyaWFibGUoTGlzdCAqb2JqZWN0LCBib29sIG1pc3Npbmdfb2spOwogc3RhdGlj IE9iamVjdEFkZHJlc3MgZ2V0X29iamVjdF9hZGRyZXNzX29wY2YoT2JqZWN0VHlwZSBvYmp0eXBl LCBMaXN0ICpvYmplY3QsCiAJCQkJCQlib29sIG1pc3Npbmdfb2spOwogc3RhdGljIE9iamVjdEFk ZHJlc3MgZ2V0X29iamVjdF9hZGRyZXNzX29wZl9tZW1iZXIoT2JqZWN0VHlwZSBvYmp0eXBlLApA QCAtOTk2LDYgKzEwMTQsMTAgQEAgZ2V0X29iamVjdF9hZGRyZXNzKE9iamVjdFR5cGUgb2JqdHlw ZSwgTm9kZSAqb2JqZWN0LAogCQkJCQkJCQkJCQkJCQkJIG1pc3Npbmdfb2spOwogCQkJCWFkZHJl c3Mub2JqZWN0U3ViSWQgPSAwOwogCQkJCWJyZWFrOworCQkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6 CisJCQkJYWRkcmVzcyA9IGdldF9vYmplY3RfYWRkcmVzc192YXJpYWJsZShjYXN0Tm9kZShMaXN0 LCBvYmplY3QpLCBtaXNzaW5nX29rKTsKKwkJCQlicmVhazsKKwogCQkJZGVmYXVsdDoKIAkJCQll bG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG9ianR5cGU6ICVkIiwgKGludCkgb2JqdHlwZSk7CiAJ CQkJLyogcGxhY2F0ZSBjb21waWxlciwgaW4gY2FzZSBpdCB0aGlua3MgZWxvZyBtaWdodCByZXR1 cm4gKi8KQEAgLTE4NDgsMTYgKzE4NzAsMjAgQEAgZ2V0X29iamVjdF9hZGRyZXNzX2RlZmFjbChM aXN0ICpvYmplY3QsIGJvb2wgbWlzc2luZ19vaykKIAkJY2FzZSBERUZBQ0xPQkpfTkFNRVNQQUNF OgogCQkJb2JqdHlwZV9zdHIgPSAic2NoZW1hcyI7CiAJCQlicmVhazsKKwkJY2FzZSBERUZBQ0xP QkpfVkFSSUFCTEU6CisJCQlvYmp0eXBlX3N0ciA9ICJ2YXJpYWJsZXMiOworCQkJYnJlYWs7CiAJ CWRlZmF1bHQ6CiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFM SURfUEFSQU1FVEVSX1ZBTFVFKSwKIAkJCQkJIGVycm1zZygidW5yZWNvZ25pemVkIGRlZmF1bHQg QUNMIG9iamVjdCB0eXBlIFwiJWNcIiIsIG9ianR5cGUpLAotCQkJCQkgZXJyaGludCgiVmFsaWQg b2JqZWN0IHR5cGVzIGFyZSBcIiVjXCIsIFwiJWNcIiwgXCIlY1wiLCBcIiVjXCIsIFwiJWNcIi4i LAorCQkJCQkgZXJyaGludCgiVmFsaWQgb2JqZWN0IHR5cGVzIGFyZSBcIiVjXCIsIFwiJWNcIiwg XCIlY1wiLCBcIiVjXCIsIFwiJWNcIiwgXCIlY1wiLiIsCiAJCQkJCQkJIERFRkFDTE9CSl9SRUxB VElPTiwKIAkJCQkJCQkgREVGQUNMT0JKX1NFUVVFTkNFLAogCQkJCQkJCSBERUZBQ0xPQkpfRlVO Q1RJT04sCiAJCQkJCQkJIERFRkFDTE9CSl9UWVBFLAotCQkJCQkJCSBERUZBQ0xPQkpfTkFNRVNQ QUNFKSkpOworCQkJCQkJCSBERUZBQ0xPQkpfTkFNRVNQQUNFLAorCQkJCQkJCSBERUZBQ0xPQkpf VkFSSUFCTEUpKSk7CiAJfQogCiAJLyoKQEAgLTE5NDIsNiArMTk2OCwyNCBAQCB0ZXh0YXJyYXlf dG9fc3RydmFsdWVsaXN0KEFycmF5VHlwZSAqYXJyKQogCXJldHVybiBsaXN0OwogfQogCisvKgor ICogRmluZCB0aGUgT2JqZWN0QWRkcmVzcyBmb3IgYSB0eXBlIG9yIGRvbWFpbgorICovCitzdGF0 aWMgT2JqZWN0QWRkcmVzcworZ2V0X29iamVjdF9hZGRyZXNzX3ZhcmlhYmxlKExpc3QgKm9iamVj dCwgYm9vbCBtaXNzaW5nX29rKQoreworCU9iamVjdEFkZHJlc3MgYWRkcmVzczsKKwljaGFyCSAg ICpuc3BuYW1lID0gTlVMTDsKKwljaGFyCSAgICp2YXJuYW1lID0gTlVMTDsKKworCU9iamVjdEFk ZHJlc3NTZXQoYWRkcmVzcywgVmFyaWFibGVSZWxhdGlvbklkLCBJbnZhbGlkT2lkKTsKKworCURl Y29uc3RydWN0UXVhbGlmaWVkTmFtZShvYmplY3QsICZuc3BuYW1lLCAmdmFybmFtZSk7CisJYWRk cmVzcy5vYmplY3RJZCA9IGxvb2t1cF92YXJpYWJsZShuc3BuYW1lLCB2YXJuYW1lLCBtaXNzaW5n X29rKTsKKworCXJldHVybiBhZGRyZXNzOworfQorCiAvKgogICogU1FMLWNhbGxhYmxlIHZlcnNp b24gb2YgZ2V0X29iamVjdF9hZGRyZXNzCiAgKi8KQEAgLTIxMzEsNiArMjE3NSw3IEBAIHBnX2dl dF9vYmplY3RfYWRkcmVzcyhQR19GVU5DVElPTl9BUkdTKQogCQljYXNlIE9CSkVDVF9UQUJDT05T VFJBSU5UOgogCQljYXNlIE9CSkVDVF9PUENMQVNTOgogCQljYXNlIE9CSkVDVF9PUEZBTUlMWToK KwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CiAJCQlvYmpub2RlID0gKE5vZGUgKikgbmFtZTsKIAkJ CWJyZWFrOwogCQljYXNlIE9CSkVDVF9BQ0NFU1NfTUVUSE9EOgpAQCAtMjQxNSw2ICsyNDYwLDEx IEBAIGNoZWNrX29iamVjdF9vd25lcnNoaXAoT2lkIHJvbGVpZCwgT2JqZWN0VHlwZSBvYmp0eXBl LCBPYmplY3RBZGRyZXNzIGFkZHJlc3MsCiAJCQlpZiAoIXBnX3N0YXRpc3RpY3Nfb2JqZWN0X293 bmVyY2hlY2soYWRkcmVzcy5vYmplY3RJZCwgcm9sZWlkKSkKIAkJCQlhY2xjaGVja19lcnJvcl90 eXBlKEFDTENIRUNLX05PVF9PV05FUiwgYWRkcmVzcy5vYmplY3RJZCk7CiAJCQlicmVhazsKKwkJ Y2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQlpZiAoIXBnX3ZhcmlhYmxlX293bmVyY2hlY2soYWRk cmVzcy5vYmplY3RJZCwgcm9sZWlkKSkKKwkJCQlhY2xjaGVja19lcnJvcihBQ0xDSEVDS19OT1Rf T1dORVIsIG9ianR5cGUsCisJCQkJCQkJICAgTmFtZUxpc3RUb1N0cmluZyhjYXN0Tm9kZShMaXN0 LCBvYmplY3QpKSk7CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJl Y29nbml6ZWQgb2JqZWN0IHR5cGU6ICVkIiwKIAkJCQkgKGludCkgb2JqdHlwZSk7CkBAIC0zMTU3 LDYgKzMyMDcsMzIgQEAgZ2V0T2JqZWN0RGVzY3JpcHRpb24oY29uc3QgT2JqZWN0QWRkcmVzcyAq b2JqZWN0KQogCQkJCWJyZWFrOwogCQkJfQogCisJCWNhc2UgT0NMQVNTX1ZBUklBQkxFOgorCQkJ eworCQkJCWNoYXIJICAgKm5zcG5hbWU7CisJCQkJSGVhcFR1cGxlCXR1cDsKKwkJCQlGb3JtX3Bn X3ZhcmlhYmxlCXZhcmZvcm07CisKKwkJCQl0dXAgPSBTZWFyY2hTeXNDYWNoZTEoVkFSSUFCTEVP SUQsIE9iamVjdElkR2V0RGF0dW0ob2JqZWN0LT5vYmplY3RJZCkpOworCQkJCWlmICghSGVhcFR1 cGxlSXNWYWxpZCh0dXApKQorCQkJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBm b3Igc2NoZW1hIHZhcmlhYmxlICV1IiwKKwkJCQkJCSBvYmplY3QtPm9iamVjdElkKTsKKworCQkJ CXZhcmZvcm0gPSAoRm9ybV9wZ192YXJpYWJsZSkgR0VUU1RSVUNUKHR1cCk7CisKKwkJCQlpZiAo VmFyaWFibGVJc1Zpc2libGUob2JqZWN0LT5vYmplY3RJZCkpCisJCQkJCW5zcG5hbWUgPSBOVUxM OworCQkJCWVsc2UKKwkJCQkJbnNwbmFtZSA9IGdldF9uYW1lc3BhY2VfbmFtZSh2YXJmb3JtLT52 YXJuYW1lc3BhY2UpOworCisJCQkJYXBwZW5kU3RyaW5nSW5mbygmYnVmZmVyLCBfKCJzY2hlbWEg dmFyaWFibGUgJXMiKSwKKwkJCQkJCQkJIHF1b3RlX3F1YWxpZmllZF9pZGVudGlmaWVyKG5zcG5h bWUsCisJCQkJCQkJCQkJCQkJCQlOYW1lU3RyKHZhcmZvcm0tPnZhcm5hbWUpKSk7CisKKwkJCQlS ZWxlYXNlU3lzQ2FjaGUodHVwKTsKKwkJCQlicmVhazsKKwkJCX0KKwogCQljYXNlIE9DTEFTU19U U1BBUlNFUjoKIAkJCXsKIAkJCQlIZWFwVHVwbGUJdHVwOwpAQCAtMzQyMiw2ICszNDk4LDE2IEBA IGdldE9iamVjdERlc2NyaXB0aW9uKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCkKIAkJCQkJ CQkJCQkgXygiZGVmYXVsdCBwcml2aWxlZ2VzIG9uIG5ldyBzY2hlbWFzIGJlbG9uZ2luZyB0byBy b2xlICVzIiksCiAJCQkJCQkJCQkJIHJvbGVuYW1lKTsKIAkJCQkJCWJyZWFrOworCQkJCQljYXNl IERFRkFDTE9CSl9WQVJJQUJMRToKKwkJCQkJCWlmIChuc3BuYW1lKQorCQkJCQkJCWFwcGVuZFN0 cmluZ0luZm8oJmJ1ZmZlciwKKwkJCQkJCQkJCQkJIF8oImRlZmF1bHQgcHJpdmlsZWdlcyBvbiBu ZXcgdmFyaWFibGVzIGJlbG9uZ2luZyB0byByb2xlICVzIGluIHNjaGVtYSAlcyIpLAorCQkJCQkJ CQkJCQkgcm9sZW5hbWUsIG5zcG5hbWUpOworCQkJCQkJZWxzZQorCQkJCQkJCWFwcGVuZFN0cmlu Z0luZm8oJmJ1ZmZlciwKKwkJCQkJCQkJCQkJIF8oImRlZmF1bHQgcHJpdmlsZWdlcyBvbiBuZXcg dmFyaWFibGVzIGJlbG9uZ2luZyB0byByb2xlICVzIiksCisJCQkJCQkJCQkJCSByb2xlbmFtZSk7 CisJCQkJCQlicmVhazsKIAkJCQkJZGVmYXVsdDoKIAkJCQkJCS8qIHNob3VsZG4ndCBnZXQgaGVy ZSAqLwogCQkJCQkJaWYgKG5zcG5hbWUpCkBAIC00MDcwLDYgKzQxNTYsMTAgQEAgZ2V0T2JqZWN0 VHlwZURlc2NyaXB0aW9uKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCkKIAkJCWFwcGVuZFN0 cmluZ0luZm9TdHJpbmcoJmJ1ZmZlciwgInRyYW5zZm9ybSIpOwogCQkJYnJlYWs7CiAKKwkJY2Fz ZSBPQ0xBU1NfVkFSSUFCTEU6CisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWZmZXIsICJz Y2hlbWEgdmFyaWFibGUiKTsKKwkJCWJyZWFrOworCiAJCQkvKgogCQkJICogVGhlcmUncyBpbnRl bnRpb25hbGx5IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZTsgd2Ugd2FudCB0aGUKIAkJCSAqIGNvbXBp bGVyIHRvIHdhcm4gaWYgYSBuZXcgT0NMQVNTIGhhc24ndCBiZWVuIGhhbmRsZWQgYWJvdmUuCkBA IC00OTYyLDYgKzUwNTIsMTAgQEAgZ2V0T2JqZWN0SWRlbnRpdHlQYXJ0cyhjb25zdCBPYmplY3RB ZGRyZXNzICpvYmplY3QsCiAJCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWZmZXIsCiAJ CQkJCQkJCQkJCSAgICIgb24gc2NoZW1hcyIpOwogCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgREVG QUNMT0JKX1ZBUklBQkxFOgorCQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmYnVmZmVyLAor CQkJCQkJCQkJCQkgICAiIG9uIHZhcmlhYmxlcyIpOworCQkJCQkJYnJlYWs7CiAJCQkJfQogCiAJ CQkJaWYgKG9iam5hbWUpCkBAIC01MTIxLDYgKzUyMTUsMzMgQEAgZ2V0T2JqZWN0SWRlbnRpdHlQ YXJ0cyhjb25zdCBPYmplY3RBZGRyZXNzICpvYmplY3QsCiAJCQl9CiAJCQlicmVhazsKIAorCQlj YXNlIE9DTEFTU19WQVJJQUJMRToKKwkJCXsKKwkJCQljaGFyCSAgICpzY2hlbWE7CisJCQkJY2hh cgkgICAqdmFybmFtZTsKKwkJCQlIZWFwVHVwbGUJdHVwOworCQkJCUZvcm1fcGdfdmFyaWFibGUJ dmFyZm9ybTsKKworCQkJCXR1cCA9IFNlYXJjaFN5c0NhY2hlMShWQVJJQUJMRU9JRCwgT2JqZWN0 SWRHZXREYXR1bShvYmplY3QtPm9iamVjdElkKSk7CisJCQkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlk KHR1cCkpCisJCQkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBzY2hlbWEg dmFyaWFibGUgJXUiLAorCQkJCQkJIG9iamVjdC0+b2JqZWN0SWQpOworCisJCQkJdmFyZm9ybSA9 IChGb3JtX3BnX3ZhcmlhYmxlKSBHRVRTVFJVQ1QodHVwKTsKKworCQkJCXNjaGVtYSA9IGdldF9u YW1lc3BhY2VfbmFtZV9vcl90ZW1wKHZhcmZvcm0tPnZhcm5hbWVzcGFjZSk7CisJCQkJdmFybmFt ZSA9IE5hbWVTdHIodmFyZm9ybS0+dmFybmFtZSk7CisKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKCZi dWZmZXIsICIlcyIsCisJCQkJCQkJCXF1b3RlX3F1YWxpZmllZF9pZGVudGlmaWVyKHNjaGVtYSwg dmFybmFtZSkpOworCisJCQkJaWYgKG9iam5hbWUpCisJCQkJCSpvYmpuYW1lID0gbGlzdF9tYWtl MihzY2hlbWEsIHZhcm5hbWUpOworCisJCQkJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CisJCQkJYnJl YWs7CisJCQl9CisKIAkJCS8qCiAJCQkgKiBUaGVyZSdzIGludGVudGlvbmFsbHkgbm8gZGVmYXVs dDogY2FzZSBoZXJlOyB3ZSB3YW50IHRoZQogCQkJICogY29tcGlsZXIgdG8gd2FybiBpZiBhIG5l dyBPQ0xBU1MgaGFzbid0IGJlZW4gaGFuZGxlZCBhYm92ZS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NhdGFsb2cvcGdfdmFyaWFibGUuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfdmFyaWFi bGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5mZjcxZjhiZjZhCi0t LSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ192YXJpYWJsZS5jCkBAIC0w LDAgKzEsMzA1IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBwZ192YXJpYWJsZS5jCisg KgkJc2NoZW1hIHZhcmlhYmxlcworICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0y MDE4LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29w eXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEK KyAqCisgKiBJREVOVElGSUNBVElPTgorICoJCXNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfdmFyaWFi bGUuYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlcy5o IgorCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisKKyNpbmNsdWRlICJhY2Nlc3MvZ2VuYW0uaCIK KyNpbmNsdWRlICJhY2Nlc3MvaGVhcGFtLmgiCisjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWls cy5oIgorI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCisKKyNpbmNsdWRlICJjYXRhbG9nL2RlcGVu ZGVuY3kuaCIKKyNpbmNsdWRlICJjYXRhbG9nL2luZGV4aW5nLmgiCisjaW5jbHVkZSAiY2F0YWxv Zy9uYW1lc3BhY2UuaCIKKyNpbmNsdWRlICJjYXRhbG9nL29iamVjdGFjY2Vzcy5oIgorI2luY2x1 ZGUgImNhdGFsb2cvcGdfbmFtZXNwYWNlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgi CisjaW5jbHVkZSAiY2F0YWxvZy9wZ192YXJpYWJsZS5oIgorCisjaW5jbHVkZSAibm9kZXMvbWFr ZWZ1bmNzLmgiCisKKyNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKKworI2luY2x1ZGUgInV0aWxz L2FycmF5LmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9m bWdyb2lkcy5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgorI2luY2x1ZGUgInV0aWxz L3BnX2xzbi5oIgorI2luY2x1ZGUgInV0aWxzL3JlbC5oIgorI2luY2x1ZGUgInV0aWxzL3N5c2Nh Y2hlLmgiCisKKy8qCisgKiBSZXR1cm5zIG5hbWUgb2Ygc2NoZW1hIHZhcmlhYmxlLiBXaGVuIHZh cmlhYmxlIGlzIG5vdCBvbiBwYXRoLAorICogdGhlbiB0aGUgbmFtZSBpcyBxdWFsaWZpZWQuCisg Ki8KK2NoYXIgKgorc2NoZW1hX3ZhcmlhYmxlX2dldF9uYW1lKE9pZCB2YXJpZCkKK3sKKwlIZWFw VHVwbGUJdHVwOworCUZvcm1fcGdfdmFyaWFibGUgdmFyZm9ybTsKKwljaGFyICAgKnZhcm5hbWU7 CisJY2hhciAgICpuc3BuYW1lOworCWNoYXIgICAqcmVzdWx0OworCisJdHVwID0gU2VhcmNoU3lz Q2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVtKHZhcmlkKSk7CisKKwlpZiAoIUhl YXBUdXBsZUlzVmFsaWQodHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQg Zm9yIHZhcmlhYmxlICV1IiwgdmFyaWQpOworCisJdmFyZm9ybSA9IChGb3JtX3BnX3ZhcmlhYmxl KSBHRVRTVFJVQ1QodHVwKTsKKworCXZhcm5hbWUgPSBOYW1lU3RyKHZhcmZvcm0tPnZhcm5hbWUp OworCisJaWYgKFZhcmlhYmxlSXNWaXNpYmxlKHZhcmlkKSkKKwkJbnNwbmFtZSA9IE5VTEw7CisJ ZWxzZQorCQluc3BuYW1lID0gZ2V0X25hbWVzcGFjZV9uYW1lKHZhcmZvcm0tPnZhcm5hbWVzcGFj ZSk7CisKKwlyZXN1bHQgPSBxdW90ZV9xdWFsaWZpZWRfaWRlbnRpZmllcihuc3BuYW1lLCB2YXJu YW1lKTsKKworCVJlbGVhc2VTeXNDYWNoZSh0dXApOworCisJcmV0dXJuIHJlc3VsdDsKK30KKwor LyoKKyAqIFJldHVybnMgdmFybmFtZSBmaWVsZCBvZiBwZ192YXJpYWJsZQorICovCitjaGFyICoK K2dldF9zY2hlbWFfdmFyaWFibGVfbmFtZShPaWQgdmFyaWQpCit7CisJSGVhcFR1cGxlCXR1cDsK KwlGb3JtX3BnX3ZhcmlhYmxlIHZhcmZvcm07CisJY2hhciAgICp2YXJuYW1lOworCisJdHVwID0g U2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVtKHZhcmlkKSk7CisK KwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1 cCBmYWlsZWQgZm9yIHZhcmlhYmxlICV1IiwgdmFyaWQpOworCisJdmFyZm9ybSA9IChGb3JtX3Bn X3ZhcmlhYmxlKSBHRVRTVFJVQ1QodHVwKTsKKworCXZhcm5hbWUgPSBOYW1lU3RyKHZhcmZvcm0t PnZhcm5hbWUpOworCisJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CisKKwlyZXR1cm4gdmFybmFtZTsK K30KKworLyoKKyAqIFJldHVybnMgdHlwZSwgdHlwbW9kIG9mIHNjaGVtYSB2YXJpYWJsZQorICov Cit2b2lkCitnZXRfc2NoZW1hX3ZhcmlhYmxlX3R5cGVfdHlwbW9kKE9pZCB2YXJpZCwgT2lkICp0 eXBpZCwgaW50MzIgKnR5cG1vZCkKK3sKKwlIZWFwVHVwbGUJdHVwOworCUZvcm1fcGdfdmFyaWFi bGUgdmFyZm9ybTsKKworCXR1cCA9IFNlYXJjaFN5c0NhY2hlMShWQVJJQUJMRU9JRCwgT2JqZWN0 SWRHZXREYXR1bSh2YXJpZCkpOworCisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cCkpCisJCWVs b2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciB2YXJpYWJsZSAldSIsIHZhcmlkKTsK KworCXZhcmZvcm0gPSAoRm9ybV9wZ192YXJpYWJsZSkgR0VUU1RSVUNUKHR1cCk7CisKKwkqdHlw aWQgPSB2YXJmb3JtLT52YXJ0eXBlOworCSp0eXBtb2QgPSB2YXJmb3JtLT52YXJ0eXBtb2Q7CisK KwlSZWxlYXNlU3lzQ2FjaGUodHVwKTsKKworCXJldHVybjsKK30KKworLyoKKyAqIEZldGNoIGFs bCBmaWVsZHMgb2Ygc2NoZW1hIHZhcmlhYmxlIGZyb20gdGhlIHN5c2NhY2hlLgorICovCitWYXJp YWJsZSAqCitHZXRWYXJpYWJsZShPaWQgdmFyaWQsIGJvb2wgbWlzc2luZ19vaykKK3sKKwlIZWFw VHVwbGUJdHVwOworCVZhcmlhYmxlICp2YXI7CisJRm9ybV9wZ192YXJpYWJsZSB2YXJmb3JtOwor CURhdHVtCQlhY2xEYXR1bTsKKwlEYXR1bQkJZGVmZXhwckRhdHVtOworCWJvb2wJCWlzbnVsbDsK KworCXR1cCA9IFNlYXJjaFN5c0NhY2hlMShWQVJJQUJMRU9JRCwgT2JqZWN0SWRHZXREYXR1bSh2 YXJpZCkpOworCisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cCkpCisJeworCQlpZiAobWlzc2lu Z19vaykKKwkJCXJldHVybiBOVUxMOworCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFp bGVkIGZvciB2YXJpYWJsZSAldSIsIHZhcmlkKTsKKwl9CisKKwl2YXJmb3JtID0gKEZvcm1fcGdf dmFyaWFibGUpIEdFVFNUUlVDVCh0dXApOworCisJdmFyID0gKFZhcmlhYmxlICopIHBhbGxvYyhz aXplb2YoVmFyaWFibGUpKTsKKwl2YXItPm9pZCA9IHZhcmlkOworCXZhci0+bmFtZSA9IHBzdHJk dXAoTmFtZVN0cih2YXJmb3JtLT52YXJuYW1lKSk7CisJdmFyLT5uYW1lc3BhY2UgPSB2YXJmb3Jt LT52YXJuYW1lc3BhY2U7CisJdmFyLT50eXBpZCA9IHZhcmZvcm0tPnZhcnR5cGU7CisJdmFyLT50 eXBtb2QgPSB2YXJmb3JtLT52YXJ0eXBtb2Q7CisJdmFyLT5vd25lciA9IHZhcmZvcm0tPnZhcm93 bmVyOworCisJLyogR2V0IGRlZmV4cHIgKi8KKwlkZWZleHByRGF0dW0gPSBTeXNDYWNoZUdldEF0 dHIoVkFSSUFCTEVPSUQsCisJCQkJCQkJdHVwLAorCQkJCQkJCUFudW1fcGdfdmFyaWFibGVfdmFy ZGVmZXhwciwKKwkJCQkJCQkmaXNudWxsKTsKKworCWlmICghaXNudWxsKQorCQl2YXItPmRlZmV4 cHIgPSBzdHJpbmdUb05vZGUoVGV4dERhdHVtR2V0Q1N0cmluZyhkZWZleHByRGF0dW0pKTsKKwll bHNlCisJCXZhci0+ZGVmZXhwciA9IE5VTEw7CisKKwkvKiBHZXQgdmFyYWNsICovCisJYWNsRGF0 dW0gPSBTeXNDYWNoZUdldEF0dHIoVkFSSUFCTEVPSUQsCisJCQkJCQkJdHVwLAorCQkJCQkJCUFu dW1fcGdfdmFyaWFibGVfdmFyYWNsLAorCQkJCQkJCSZpc251bGwpOworCWlmICghaXNudWxsKQor CQl2YXItPmFjbCA9IERhdHVtR2V0QWNsUENvcHkoYWNsRGF0dW0pOworCWVsc2UKKwkJdmFyLT5h Y2wgPSBOVUxMOworCisJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CisKKwlyZXR1cm4gdmFyOworfQor CitPYmplY3RBZGRyZXNzCitWYXJpYWJsZUNyZWF0ZShjb25zdCBjaGFyICp2YXJOYW1lLAorCQkJ ICAgT2lkIHZhck5hbWVzcGFjZSwKKwkJCSAgIE9pZCB2YXJUeXBlLAorCQkJICAgaW50MzIgdmFy VHlwbW9kLAorCQkJICAgT2lkIHZhck93bmVyLAorCQkJICAgTm9kZSAqdmFyRGVmZXhwciwKKwkJ CSAgIGJvb2wgaWZfbm90X2V4aXN0cykKK3sKKwlBY2wJCSAgICp2YXJhY2w7CisJTmFtZURhdGEJ dmFybmFtZTsKKwlib29sCQludWxsc1tOYXR0c19wZ192YXJpYWJsZV07CisJRGF0dW0JCXZhbHVl c1tOYXR0c19wZ192YXJpYWJsZV07CisJUmVsYXRpb24JcmVsOworCUhlYXBUdXBsZQl0dXAsCisJ CQkJb2xkdHVwOworCVR1cGxlRGVzYwl0dXBkZXNjOworCU9iamVjdEFkZHJlc3MJbXlzZWxmLAor CQkJCQlyZWZlcmVuY2VkOworCU9pZAkJCXJldHZhbDsKKwlpbnQJCQlpOworCisJZm9yIChpID0g MDsgaSA8IE5hdHRzX3BnX3ZhcmlhYmxlOyBpKyspCisJeworCQludWxsc1tpXSA9IGZhbHNlOwor CQl2YWx1ZXNbaV0gPSAoRGF0dW0pIDA7CisJfQorCisJbmFtZXN0cmNweSgmdmFybmFtZSwgdmFy TmFtZSk7CisJdmFsdWVzW0FudW1fcGdfdmFyaWFibGVfdmFybmFtZSAtIDFdID0gTmFtZUdldERh dHVtKCZ2YXJuYW1lKTsKKwl2YWx1ZXNbQW51bV9wZ192YXJpYWJsZV92YXJuYW1lc3BhY2UgLSAx XSA9IE9iamVjdElkR2V0RGF0dW0odmFyTmFtZXNwYWNlKTsKKwl2YWx1ZXNbQW51bV9wZ192YXJp YWJsZV92YXJ0eXBlIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKHZhclR5cGUpOworCXZhbHVlc1tB bnVtX3BnX3ZhcmlhYmxlX3ZhcnR5cG1vZCAtIDFdID0gSW50MzJHZXREYXR1bSh2YXJUeXBtb2Qp OworCXZhbHVlc1tBbnVtX3BnX3ZhcmlhYmxlX3Zhcm93bmVyIC0gMV0gPSBPYmplY3RJZEdldERh dHVtKHZhck93bmVyKTsKKwkvKiBwcm9hY2wgd2lsbCBiZSBkZXRlcm1pbmVkIGxhdGVyICovCisK KwlpZiAodmFyRGVmZXhwcikKKwkJdmFsdWVzW0FudW1fcGdfdmFyaWFibGVfdmFyZGVmZXhwciAt IDFdID0gQ1N0cmluZ0dldFRleHREYXR1bShub2RlVG9TdHJpbmcodmFyRGVmZXhwcikpOworCWVs c2UKKwkJbnVsbHNbQW51bV9wZ192YXJpYWJsZV92YXJkZWZleHByIC0gMV0gPSB0cnVlOworCisJ cmVsID0gaGVhcF9vcGVuKFZhcmlhYmxlUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CisJ dHVwZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsKTsKKworCW9sZHR1cCA9IFNlYXJjaFN5c0Nh Y2hlMihWQVJJQUJMRU5BTUVOU1AsCisJCQkJCQkJIFBvaW50ZXJHZXREYXR1bSh2YXJOYW1lKSwK KwkJCQkJCQkgT2JqZWN0SWRHZXREYXR1bSh2YXJOYW1lc3BhY2UpKTsKKworCWlmIChIZWFwVHVw bGVJc1ZhbGlkKG9sZHR1cCkpCisJeworCQlpZiAoaWZfbm90X2V4aXN0cykKKwkJCWVyZXBvcnQo Tk9USUNFLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9PQkpFQ1QpLAorCQkJCQkg ZXJybXNnKCJzY2hlbWEgdmFyaWFibGUgXCIlc1wiIGFscmVhZHkgZXhpc3RzLCBza2lwcGluZyIs CisJCQkJCQkJdmFyTmFtZSkpKTsKKwkJZWxzZQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVy cmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfT0JKRUNUKSwKKwkJCQkJIGVycm1zZygic2NoZW1hIHZh cmlhYmxlIFwiJXNcIiBhbHJlYWR5IGV4aXN0cyIsCisJCQkJCQkJdmFyTmFtZSkpKTsKKworCQlo ZWFwX2ZyZWV0dXBsZShvbGR0dXApOworCQloZWFwX2Nsb3NlKHJlbCwgUm93RXhjbHVzaXZlTG9j ayk7CisKKwkJcmV0dXJuIEludmFsaWRPYmplY3RBZGRyZXNzOworCX0KKworCXZhcmFjbCA9IGdl dF91c2VyX2RlZmF1bHRfYWNsKE9CSkVDVF9WQVJJQUJMRSwgdmFyT3duZXIsCisJCQkJCQkJCSAg dmFyTmFtZXNwYWNlKTsKKworCWlmICh2YXJhY2wgIT0gTlVMTCkKKwkJdmFsdWVzW0FudW1fcGdf dmFyaWFibGVfdmFyYWNsIC0gMV0gPSBQb2ludGVyR2V0RGF0dW0odmFyYWNsKTsKKwllbHNlCisJ CW51bGxzW0FudW1fcGdfdmFyaWFibGVfdmFyYWNsIC0gMV0gPSB0cnVlOworCisJdHVwID0gaGVh cF9mb3JtX3R1cGxlKHR1cGRlc2MsIHZhbHVlcywgbnVsbHMpOworCUNhdGFsb2dUdXBsZUluc2Vy dChyZWwsIHR1cCk7CisKKwlyZXR2YWwgPSBIZWFwVHVwbGVHZXRPaWQodHVwKTsKKworCW15c2Vs Zi5jbGFzc0lkID0gVmFyaWFibGVSZWxhdGlvbklkOworCW15c2VsZi5vYmplY3RJZCA9IHJldHZh bDsKKwlteXNlbGYub2JqZWN0U3ViSWQgPSAwOworCisJLyogZGVwZW5kZW5jeSBvbiBuYW1lc3Bh Y2UgKi8KKwlyZWZlcmVuY2VkLmNsYXNzSWQgPSBOYW1lc3BhY2VSZWxhdGlvbklkOworCXJlZmVy ZW5jZWQub2JqZWN0SWQgPSB2YXJOYW1lc3BhY2U7CisJcmVmZXJlbmNlZC5vYmplY3RTdWJJZCA9 IDA7CisJcmVjb3JkRGVwZW5kZW5jeU9uKCZteXNlbGYsICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZ X05PUk1BTCk7CisKKwkvKiBkZXBlbmRlbmN5IG9uIHVzZWQgdHlwZSAqLworCXJlZmVyZW5jZWQu Y2xhc3NJZCA9IFR5cGVSZWxhdGlvbklkOworCXJlZmVyZW5jZWQub2JqZWN0SWQgPSB2YXJUeXBl OworCXJlZmVyZW5jZWQub2JqZWN0U3ViSWQgPSAwOworCXJlY29yZERlcGVuZGVuY3lPbigmbXlz ZWxmLCAmcmVmZXJlbmNlZCwgREVQRU5ERU5DWV9OT1JNQUwpOworCisJLyogZGVwZW5kZW5jeSBv biBhbnkgcm9sZXMgbWVudGlvbmVkIGluIEFDTCAqLworCWlmICh2YXJhY2wgIT0gTlVMTCkKKwl7 CisJCWludAkJCW5uZXdtZW1iZXJzOworCQlPaWQJCSAgICpuZXdtZW1iZXJzOworCisJCW5uZXdt ZW1iZXJzID0gYWNsbWVtYmVycyh2YXJhY2wsICZuZXdtZW1iZXJzKTsKKwkJdXBkYXRlQWNsRGVw ZW5kZW5jaWVzKFZhcmlhYmxlUmVsYXRpb25JZCwgcmV0dmFsLCAwLAorCQkJCQkJCSAgdmFyT3du ZXIsCisJCQkJCQkJICAwLCBOVUxMLAorCQkJCQkJCSAgbm5ld21lbWJlcnMsIG5ld21lbWJlcnMp OworCX0KKworCS8qIGRlcGVuZGVuY3kgb24gZXh0ZW5zaW9uICovCisJcmVjb3JkRGVwZW5kZW5j eU9uQ3VycmVudEV4dGVuc2lvbigmbXlzZWxmLCBmYWxzZSk7CisKKwloZWFwX2ZyZWV0dXBsZSh0 dXApOworCisJLyogUG9zdCBjcmVhdGlvbiBob29rIGZvciBuZXcgZnVuY3Rpb24gKi8KKwlJbnZv a2VPYmplY3RQb3N0Q3JlYXRlSG9vayhWYXJpYWJsZVJlbGF0aW9uSWQsIHJldHZhbCwgMCk7CisK KwloZWFwX2Nsb3NlKHJlbCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwlyZXR1cm4gbXlzZWxmOwor fQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZpbGUgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9NYWtlZmlsZQppbmRleCA0YTZjOTllMDkwLi4yY2I1YjExNzJkIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9NYWtlZmlsZQpAQCAtMTgsNyArMTgsNyBAQCBPQkpTID0gYW1jbWRzLm8gYWdncmVnYXRl Y21kcy5vIGFsdGVyLm8gYW5hbHl6ZS5vIGFzeW5jLm8gY2x1c3Rlci5vIGNvbW1lbnQubyBcCiAJ ZXZlbnRfdHJpZ2dlci5vIGV4cGxhaW4ubyBleHRlbnNpb24ubyBmb3JlaWduY21kcy5vIGZ1bmN0 aW9uY21kcy5vIFwKIAlpbmRleGNtZHMubyBsb2NrY21kcy5vIG1hdHZpZXcubyBvcGVyYXRvcmNt ZHMubyBvcGNsYXNzY21kcy5vIFwKIAlwb2xpY3kubyBwb3J0YWxjbWRzLm8gcHJlcGFyZS5vIHBy b2NsYW5nLm8gcHVibGljYXRpb25jbWRzLm8gXAotCXNjaGVtYWNtZHMubyBzZWNsYWJlbC5vIHNl cXVlbmNlLm8gc3RhdHNjbWRzLm8gc3Vic2NyaXB0aW9uY21kcy5vIFwKKwlzY2hlbWFjbWRzLm8g c2VjbGFiZWwubyBzZXF1ZW5jZS5vIHNjaGVtYXZhcmlhYmxlLm8gc3RhdHNjbWRzLm8gc3Vic2Ny aXB0aW9uY21kcy5vIFwKIAl0YWJsZWNtZHMubyB0YWJsZXNwYWNlLm8gdHJpZ2dlci5vIHRzZWFy Y2hjbWRzLm8gdHlwZWNtZHMubyB1c2VyLm8gXAogCXZhY3V1bS5vIHZhY3V1bWxhenkubyB2YXJp YWJsZS5vIHZpZXcubwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hbHRlci5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIuYwppbmRleCBlZmYzMjVjYzdkLi5hOWQ1ZTVl MGFkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hbHRlci5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2FsdGVyLmMKQEAgLTM4Nyw2ICszODcsNyBAQCBFeGVjUmVuYW1lU3Rt dChSZW5hbWVTdG10ICpzdG10KQogCQljYXNlIE9CSkVDVF9UU1RFTVBMQVRFOgogCQljYXNlIE9C SkVDVF9QVUJMSUNBVElPTjoKIAkJY2FzZSBPQkpFQ1RfU1VCU0NSSVBUSU9OOgorCQljYXNlIE9C SkVDVF9WQVJJQUJMRToKIAkJCXsKIAkJCQlPYmplY3RBZGRyZXNzIGFkZHJlc3M7CiAJCQkJUmVs YXRpb24JY2F0YWxvZzsKQEAgLTUwNCw2ICs1MDUsNyBAQCBFeGVjQWx0ZXJPYmplY3RTY2hlbWFT dG10KEFsdGVyT2JqZWN0U2NoZW1hU3RtdCAqc3RtdCwKIAkJY2FzZSBPQkpFQ1RfVFNESUNUSU9O QVJZOgogCQljYXNlIE9CSkVDVF9UU1BBUlNFUjoKIAkJY2FzZSBPQkpFQ1RfVFNURU1QTEFURToK KwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CiAJCQl7CiAJCQkJUmVsYXRpb24JY2F0YWxvZzsKIAkJ CQlSZWxhdGlvbglyZWxhdGlvbjsKQEAgLTU5NCw2ICs1OTYsNyBAQCBBbHRlck9iamVjdE5hbWVz cGFjZV9vaWQoT2lkIGNsYXNzSWQsIE9pZCBvYmppZCwgT2lkIG5zcE9pZCwKIAkJY2FzZSBPQ0xB U1NfVFNESUNUOgogCQljYXNlIE9DTEFTU19UU1RFTVBMQVRFOgogCQljYXNlIE9DTEFTU19UU0NP TkZJRzoKKwkJY2FzZSBPQ0xBU1NfVkFSSUFCTEU6CiAJCQl7CiAJCQkJUmVsYXRpb24JY2F0YWxv ZzsKIApAQCAtODUyLDYgKzg1NSw3IEBAIEV4ZWNBbHRlck93bmVyU3RtdChBbHRlck93bmVyU3Rt dCAqc3RtdCkKIAkJY2FzZSBPQkpFQ1RfVEFCTEVTUEFDRToKIAkJY2FzZSBPQkpFQ1RfVFNESUNU SU9OQVJZOgogCQljYXNlIE9CSkVDVF9UU0NPTkZJR1VSQVRJT046CisJCWNhc2UgT0JKRUNUX1ZB UklBQkxFOgogCQkJewogCQkJCVJlbGF0aW9uCWNhdGFsb2c7CiAJCQkJUmVsYXRpb24JcmVsYXRp b247CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9kaXNjYXJkLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9kaXNjYXJkLmMKaW5kZXggMDFhOTk5YzJhYy4uZmVjMjQ5NWU5MyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGlzY2FyZC5jCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2Rpc2NhcmQuYwpAQCAtMTksNiArMTksNyBAQAogI2luY2x1ZGUgImNvbW1hbmRz L2Rpc2NhcmQuaCIKICNpbmNsdWRlICJjb21tYW5kcy9wcmVwYXJlLmgiCiAjaW5jbHVkZSAiY29t bWFuZHMvc2VxdWVuY2UuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9zY2hlbWF2YXJpYWJsZS5oIgog I2luY2x1ZGUgInV0aWxzL2d1Yy5oIgogI2luY2x1ZGUgInV0aWxzL3BvcnRhbC5oIgogCkBAIC00 OCw2ICs0OSwxMCBAQCBEaXNjYXJkQ29tbWFuZChEaXNjYXJkU3RtdCAqc3RtdCwgYm9vbCBpc1Rv cExldmVsKQogCQkJUmVzZXRUZW1wVGFibGVOYW1lc3BhY2UoKTsKIAkJCWJyZWFrOwogCisJCWNh c2UgRElTQ0FSRF9WQVJJQUJMRVM6CisJCQlSZXNldFNjaGVtYVZhcmlhYmxlQ2FjaGUoKTsKKwkJ CWJyZWFrOworCiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIERJU0NB UkQgdGFyZ2V0OiAlZCIsIHN0bXQtPnRhcmdldCk7CiAJfQpAQCAtNzUsNCArODAsNSBAQCBEaXNj YXJkQWxsKGJvb2wgaXNUb3BMZXZlbCkKIAlSZXNldFBsYW5DYWNoZSgpOwogCVJlc2V0VGVtcFRh YmxlTmFtZXNwYWNlKCk7CiAJUmVzZXRTZXF1ZW5jZUNhY2hlcygpOworCVJlc2V0U2NoZW1hVmFy aWFibGVDYWNoZSgpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRf dHJpZ2dlci5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jCmluZGV4IGVl Y2M4NWQxNGUuLjQyNmRmMjQ2YjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2 ZW50X3RyaWdnZXIuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMK QEAgLTEyNiw2ICsxMjYsNyBAQCBzdGF0aWMgZXZlbnRfdHJpZ2dlcl9zdXBwb3J0X2RhdGEgZXZl bnRfdHJpZ2dlcl9zdXBwb3J0W10gPSB7CiAJeyJURVhUIFNFQVJDSCBURU1QTEFURSIsIHRydWV9 LAogCXsiVFlQRSIsIHRydWV9LAogCXsiVVNFUiBNQVBQSU5HIiwgdHJ1ZX0sCisJeyJWQVJJQUJM RSIsIHRydWV9LAogCXsiVklFVyIsIHRydWV9LAogCXtOVUxMLCBmYWxzZX0KIH07CkBAIC0yOTcs NyArMjk4LDggQEAgY2hlY2tfZGRsX3RhZyhjb25zdCBjaGFyICp0YWcpCiAJCXBnX3N0cmNhc2Vj bXAodGFnLCAiUkVWT0tFIikgPT0gMCB8fAogCQlwZ19zdHJjYXNlY21wKHRhZywgIkRST1AgT1dO RUQiKSA9PSAwIHx8CiAJCXBnX3N0cmNhc2VjbXAodGFnLCAiSU1QT1JUIEZPUkVJR04gU0NIRU1B IikgPT0gMCB8fAotCQlwZ19zdHJjYXNlY21wKHRhZywgIlNFQ1VSSVRZIExBQkVMIikgPT0gMCkK KwkJcGdfc3RyY2FzZWNtcCh0YWcsICJTRUNVUklUWSBMQUJFTCIpID09IDAgfHwKKwkJcGdfc3Ry Y2FzZWNtcCh0YWcsICJDUkVBVEUgVkFSSUFCTEUiKSA9PSAwKQogCQlyZXR1cm4gRVZFTlRfVFJJ R0dFUl9DT01NQU5EX1RBR19PSzsKIAogCS8qCkBAIC0xMTQ2LDYgKzExNDgsNyBAQCBFdmVudFRy aWdnZXJTdXBwb3J0c09iamVjdFR5cGUoT2JqZWN0VHlwZSBvYnR5cGUpCiAJCWNhc2UgT0JKRUNU X1RTVEVNUExBVEU6CiAJCWNhc2UgT0JKRUNUX1RZUEU6CiAJCWNhc2UgT0JKRUNUX1VTRVJfTUFQ UElORzoKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CiAJCWNhc2UgT0JKRUNUX1ZJRVc6CiAJCQly ZXR1cm4gdHJ1ZTsKIApAQCAtMTIwOSw2ICsxMjEyLDcgQEAgRXZlbnRUcmlnZ2VyU3VwcG9ydHNP YmplY3RDbGFzcyhPYmplY3RDbGFzcyBvYmpjbGFzcykKIAkJY2FzZSBPQ0xBU1NfUFVCTElDQVRJ T05fUkVMOgogCQljYXNlIE9DTEFTU19TVUJTQ1JJUFRJT046CiAJCWNhc2UgT0NMQVNTX1RSQU5T Rk9STToKKwkJY2FzZSBPQ0xBU1NfVkFSSUFCTEU6CiAJCQlyZXR1cm4gdHJ1ZTsKIAogCQkJLyoK QEAgLTIyNDQsNiArMjI0OCw4IEBAIHN0cmluZ2lmeV9ncmFudF9vYmp0eXBlKE9iamVjdFR5cGUg b2JqdHlwZSkKIAkJCXJldHVybiAiVEFCTEVTUEFDRSI7CiAJCWNhc2UgT0JKRUNUX1RZUEU6CiAJ CQlyZXR1cm4gIlRZUEUiOworCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCXJldHVybiAiVkFS SUFCTEUiOwogCQkJLyogdGhlc2UgY3VycmVudGx5IGFyZW4ndCB1c2VkICovCiAJCWNhc2UgT0JK RUNUX0FDQ0VTU19NRVRIT0Q6CiAJCWNhc2UgT0JKRUNUX0FHR1JFR0FURToKQEAgLTIzMjYsNiAr MjMzMiw4IEBAIHN0cmluZ2lmeV9hZGVmcHJpdnNfb2JqdHlwZShPYmplY3RUeXBlIG9ianR5cGUp CiAJCQlyZXR1cm4gIlRBQkxFU1BBQ0VTIjsKIAkJY2FzZSBPQkpFQ1RfVFlQRToKIAkJCXJldHVy biAiVFlQRVMiOworCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCXJldHVybiAiVkFSSUFCTEVT IjsKIAkJCS8qIHRoZXNlIGN1cnJlbnRseSBhcmVuJ3QgdXNlZCAqLwogCQljYXNlIE9CSkVDVF9B Q0NFU1NfTUVUSE9EOgogCQljYXNlIE9CSkVDVF9BR0dSRUdBVEU6CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJl LmMKaW5kZXggYjk0NWIxNTU2YS4uZWI4YzA4YmFmMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvcHJlcGFyZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwpA QCAtMTUxLDYgKzE1MSw3IEBAIFByZXBhcmVRdWVyeShQcmVwYXJlU3RtdCAqc3RtdCwgY29uc3Qg Y2hhciAqcXVlcnlTdHJpbmcsCiAJCWNhc2UgQ01EX0lOU0VSVDoKIAkJY2FzZSBDTURfVVBEQVRF OgogCQljYXNlIENNRF9ERUxFVEU6CisJCWNhc2UgQ01EX1BMQU5fVVRJTElUWToKIAkJCS8qIE9L ICovCiAJCQlicmVhazsKIAkJZGVmYXVsdDoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3NjaGVtYXZhcmlhYmxlLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zY2hlbWF2YXJpYWJs ZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjViNjVkNzYyZDQKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zY2hlbWF2YXJpYWJsZS5jCkBA IC0wLDAgKzEsNDkwIEBACisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKyNpbmNsdWRlICJtaXNjYWRt aW4uaCIKKworI2luY2x1ZGUgImFjY2Vzcy9oZWFwYW0uaCIKKyNpbmNsdWRlICJhY2Nlc3MvaHR1 cF9kZXRhaWxzLmgiCisjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKKyNpbmNsdWRlICJjYXRhbG9n L2luZGV4aW5nLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKKyNpbmNsdWRlICJj YXRhbG9nL3BnX3ZhcmlhYmxlLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvc2NoZW1hdmFyaWFibGUu aCIKKyNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgorI2luY2x1ZGUgImV4ZWN1dG9yL3N2 YXJpYWJsZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAibm9kZXMvZXhlY25vZGVzLmgiCisjaW5jbHVk ZSAib3B0aW1pemVyL3BsYW5uZXIuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2VfY29lcmNlLmgi CisjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2V4cHIuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2Vf dHlwZS5oIgorI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvZGF0 dW0uaCIKKyNpbmNsdWRlICJ1dGlscy9pbnZhbC5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxz LmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvc25hcG1n ci5oIgorI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCisKKy8qCisgKiBUaGUgY29udGVudCBv ZiB2YXJpYWJsZXMgaXMgbm90IHRyYW5zYWN0aW9uYWwuIER1ZSB0aGlzIGZhY3QgdGhlCisgKiBp bXBsZW1lbnRhdGlvbiBvZiBEUk9QIGNhbiBiZSBzaW1wbGUsIGJlY2F1c2UgYWx0aG91Z2ggRFJP UCBWQVJJQUJMRQorICogY2FuIGJlIHJldmVydGVkLCB0aGUgY29udGVudCBvZiB2YXJpYWJsZSBj YW4gYmUgbG9zdC4gSW4gdGhpcyBleGFtcGxlLAorICogRFJPUCBWQVJJQUJMRSBpcyBzYW1lIGxp a2UgcmVzZXQgdmFyaWFibGUuCisgKi8KKwordHlwZWRlZiBzdHJ1Y3QgU2NoZW1hVmFyaWFibGVE YXRhCit7CisJT2lkCQkJdmFyaWQ7CQkJLyogcGdfdmFyaWFibGUgT0lEIG9mIHRoaXMgc2VxdWVu Y2UgKGhhc2gga2V5KSAqLworCU9pZAkJCXR5cGlkOwkJCS8qIE9JRCBvZiB0aGUgZGF0YSB0eXBl ICovCisJaW50MzIJCXR5cG1vZDsKKwlpbnQxNgkJdHlwbGVuOworCWJvb2wJCXR5cGJ5dmFsOwor CWJvb2wJCWlzbnVsbDsKKwlib29sCQlmcmVldmFsOworCURhdHVtCQl2YWx1ZTsKKwlib29sCQlp c19yb3d0eXBlOwkJLyogdHJ1ZSB3aGVuIHZhcmlhYmxlIGlzIGNvbXBvc2l0ZSAqLworCWJvb2wJ CWlzX3ZhbGlkOwkJLyogdHJ1ZSB3aGVuIHZhcmlhYmxlIHdhcyBzdWNjZXNzZnVseSBpbml0aWFs aXplZCAqLworfSBTY2hlbWFWYXJpYWJsZURhdGE7CisKK3R5cGVkZWYgU2NoZW1hVmFyaWFibGVE YXRhICpTY2hlbWFWYXJpYWJsZTsKKworc3RhdGljIEhUQUIgKnNjaGVtYXZhcmhhc2h0YWIgPSBO VUxMOwkJLyogaGFzaCB0YWJsZSBmb3Igc2Vzc2lvbiB2YXJpYWJsZXMgKi8KK3N0YXRpYyBNZW1v cnlDb250ZXh0IFNjaGVtYVZhcmlhYmxlTWVtb3J5Q29udGV4dCA9IE5VTEw7CisKK3N0YXRpYyBi b29sIGZpcnN0X3RpbWUgPSB0cnVlOworc3RhdGljIHZvaWQgY3JlYXRlX3NjaGVtYXZhcl9oYXNo dGFibGUodm9pZCk7CitzdGF0aWMgYm9vbCBjbGVhbl9jYWNoZV9yZXEgPSBmYWxzZTsKKworc3Rh dGljIHZvaWQgY2xlYW5fY2FjaGUodm9pZCk7CitzdGF0aWMgdm9pZCBmb3JjZV9jbGVhbl9jYWNo ZShYYWN0RXZlbnQgZXZlbnQsIHZvaWQgKmFyZyk7CisKKworLyoKKyAqIFNhdmUgaW5mbyBhYm91 dCBuY2Vzc2l0eSB0byBjbGVhbiBoYXNoIHRhYmxlLCBiZWNhdXNlIHNvbWUKKyAqIHNjaGVtYSB2 YXJpYWJsZSB3YXMgZHJvcHBlZC4gRG9uJ3QgZG8gaGVyZSBtb3JlLCByZWNoZWNrCisgKiBuZWVk cyB0byBiZSBpbiB0cmFuc2FjdGlvbiBzdGF0ZS4KKyAqLworc3RhdGljIHZvaWQKK0ludmFsaWRh dGVTY2hlbWFWYXJDYWNoZUNhbGxiYWNrKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBo YXNodmFsdWUpCit7CisJaWYgKGNhY2hlaWQgIT0gVkFSSUFCTEVPSUQpCisJCXJldHVybjsKKwor CWNsZWFuX2NhY2hlX3JlcSA9IHRydWU7Cit9CisKK3N0YXRpYyB2b2lkCitmb3JjZV9jbGVhbl9j YWNoZShYYWN0RXZlbnQgZXZlbnQsIHZvaWQgKmFyZykKK3sKKwkvKgorCSAqIHNob3VsZCBjb250 aW51ZSBvbmx5IGluIHRyYW5zYWN0aW9uIHRpbWUsIHdoZW4KKwkgKiBzeXNjYWNoZSBpcyBhdmFp bGFibGUuCisJICovCisJaWYgKGNsZWFuX2NhY2hlX3JlcSAmJiBJc1RyYW5zYWN0aW9uU3RhdGUo KSkKKwl7CisJCWNsZWFuX2NhY2hlKCk7CisJCWNsZWFuX2NhY2hlX3JlcSA9IGZhbHNlOworCX0K K30KKworc3RhdGljIHZvaWQKK2NsZWFuX2NhY2hlKHZvaWQpCit7CisJSEFTSF9TRVFfU1RBVFVT IHN0YXR1czsKKwlTY2hlbWFWYXJpYWJsZQkJdmFyOworCisJaWYgKCFzY2hlbWF2YXJoYXNodGFi KQorCQlyZXR1cm47CisKKwloYXNoX3NlcV9pbml0KCZzdGF0dXMsIHNjaGVtYXZhcmhhc2h0YWIp OworCisJLyoKKwkgKiBFdmVyeSB2YWxpZCB2YXJpYWJsZSBoYXZlIHRvIGhhdmUgZW50cnkgaW4g c3lzdGVtCisJICogY2F0YWxvZy4gUmVtb3ZlZCBpZiB0aGVyZSBpcyBub3RoaW5nLgorCSAqLwor CXdoaWxlICgodmFyID0gKFNjaGVtYVZhcmlhYmxlKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykp ICE9IE5VTEwpCisJeworCQlIZWFwVHVwbGUJdHAgPSBJbnZhbGlkT2lkOworCisJCXRwID0gU2Vh cmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVtKHZhci0+dmFyaWQpKTsK KwkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHRwKSkKKwkJeworCQkJZWxvZyhERUJVRzEsICJ2YXJp YWJsZSAlZCBpcyByZW1vdmVkIGZyb20gY2FjaGUiLCB2YXItPnZhcmlkKTsKKworCQkJaWYgKHZh ci0+ZnJlZXZhbCkKKwkJCXsKKwkJCQlwZnJlZShEYXR1bUdldFBvaW50ZXIodmFyLT52YWx1ZSkp OworCQkJCXZhci0+ZnJlZXZhbCA9IGZhbHNlOworCQkJfQorCisJCQlpZiAoaGFzaF9zZWFyY2go c2NoZW1hdmFyaGFzaHRhYiwKKwkJCQkJCQkJKHZvaWQgKikgJnZhci0+dmFyaWQsCisJCQkJCQkJ CUhBU0hfUkVNT1ZFLAorCQkJCQkJCQlOVUxMKSA9PSBOVUxMKQorCQkJCWVsb2coREVCVUcxLCAi aGFzaCB0YWJsZSBjb3JydXB0ZWQiKTsKKwkJfQorCQllbHNlCisJCQlSZWxlYXNlU3lzQ2FjaGUo dHApOworCX0KK30KKworY2hhciAqCitWYXJpYWJsZUdldE5hbWUoVmFyaWFibGUgKnZhcikKK3sK KwljaGFyICAgKm5zcG5hbWU7CisKKwlpZiAoVmFyaWFibGVJc1Zpc2libGUodmFyLT5vaWQpKQor CQluc3BuYW1lID0gTlVMTDsKKwllbHNlCisJCW5zcG5hbWUgPSBnZXRfbmFtZXNwYWNlX25hbWUo dmFyLT5uYW1lc3BhY2UpOworCisJcmV0dXJuIHF1b3RlX3F1YWxpZmllZF9pZGVudGlmaWVyKG5z cG5hbWUsIHZhci0+bmFtZSk7Cit9CisKKy8qCisgKiBDcmVhdGUgdGhlIGhhc2ggdGFibGUgZm9y IHN0b3Jpbmcgc2NoZW1hIHZhcmlhYmxlcworICovCitzdGF0aWMgdm9pZAorY3JlYXRlX3NjaGVt YXZhcl9oYXNodGFibGUodm9pZCkKK3sKKwlIQVNIQ1RMCQljdGw7CisKKwkvKiBzZXQgY2FsbGJh Y2tzICovCisJaWYgKGZpcnN0X3RpbWUpCisJeworCQlDYWNoZVJlZ2lzdGVyU3lzY2FjaGVDYWxs YmFjayhWQVJJQUJMRU9JRCwKKwkJCQkJCQkJCSAgSW52YWxpZGF0ZVNjaGVtYVZhckNhY2hlQ2Fs bGJhY2ssCisJCQkJCQkJCQkgIChEYXR1bSkgMCk7CisKKwkJUmVnaXN0ZXJYYWN0Q2FsbGJhY2so Zm9yY2VfY2xlYW5fY2FjaGUsIE5VTEwpOworCisJCWZpcnN0X3RpbWUgPSBmYWxzZTsKKwl9CisK KwkvKiBuZWVkcyBvd24gbG9uZyBsaWZlIG1lbW9yeSBjb250ZXh0ICovCisJaWYgKFNjaGVtYVZh cmlhYmxlTWVtb3J5Q29udGV4dCA9PSBOVUxMKQorCXsKKwkJU2NoZW1hVmFyaWFibGVNZW1vcnlD b250ZXh0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKFRvcE1lbW9yeUNvbnRleHQsCisJCQkJCQkJ CQkJCQkJCQkic2NoZW1hIHZhcmlhYmxlcyIsCisJCQkJCQkJCQkJCQkJCQlBTExPQ1NFVF9TVEFS VF9TTUFMTF9TSVpFUyk7CisJfQorCisJbWVtc2V0KCZjdGwsIDAsIHNpemVvZihjdGwpKTsKKwlj dGwua2V5c2l6ZSA9IHNpemVvZihPaWQpOworCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoU2NoZW1h VmFyaWFibGVEYXRhKTsKKwljdGwuaGN4dCA9IFNjaGVtYVZhcmlhYmxlTWVtb3J5Q29udGV4dDsK KworCXNjaGVtYXZhcmhhc2h0YWIgPSBoYXNoX2NyZWF0ZSgiU2NoZW1hIHZhcmlhYmxlcyIsIDY0 LCAmY3RsLAorCQkJCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQp OworfQorCisvKgorICogRmFzdCBkcm9wIGNvbXBsZXRlIGNvbnRlbnQgb2Ygc2NoZW1hIHZhcmlh YmxlcworICovCit2b2lkCitSZXNldFNjaGVtYVZhcmlhYmxlQ2FjaGUodm9pZCkKK3sKKwlpZiAo c2NoZW1hdmFyaGFzaHRhYikKKwl7CisJCWhhc2hfZGVzdHJveShzY2hlbWF2YXJoYXNodGFiKTsK KwkJc2NoZW1hdmFyaGFzaHRhYiA9IE5VTEw7CisJfQorCisJaWYgKFNjaGVtYVZhcmlhYmxlTWVt b3J5Q29udGV4dCAhPSBOVUxMKQorCXsKKwkJTWVtb3J5Q29udGV4dFJlc2V0KFNjaGVtYVZhcmlh YmxlTWVtb3J5Q29udGV4dCk7CisJfQorfQorCisvKgorICogRHJvcCB2YXJpYWJsZSBieSBPSUQK KyAqLwordm9pZAorUmVtb3ZlVmFyaWFibGVCeUlkKE9pZCB2YXJpZCkKK3sKKwlSZWxhdGlvbgly ZWw7CisJSGVhcFR1cGxlCXR1cDsKKworCXJlbCA9IGhlYXBfb3BlbihWYXJpYWJsZVJlbGF0aW9u SWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJdHVwID0gU2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxF T0lELCBPYmplY3RJZEdldERhdHVtKHZhcmlkKSk7CisKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQo dHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHZhcmlhYmxlICV1 IiwgdmFyaWQpOworCisJQ2F0YWxvZ1R1cGxlRGVsZXRlKHJlbCwgJnR1cC0+dF9zZWxmKTsKKwor CVJlbGVhc2VTeXNDYWNoZSh0dXApOworCisJaGVhcF9jbG9zZShyZWwsIFJvd0V4Y2x1c2l2ZUxv Y2spOworfQorCisvKgorICogQ3JlYXRlcyBuZXcgdmFyaWFibGUgLSBlbnRyeSBpbiBwZ19jYXRh bG9nLnBnX3ZhcmlhYmxlIHRhYmxlCisgKi8KK09iamVjdEFkZHJlc3MKK0RlZmluZVNjaGVtYVZh cmlhYmxlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlU2NoZW1hVmFyU3RtdCAqc3RtdCkKK3sK KwlPaWQJCQluYW1lc3BhY2VpZDsKKwlBY2xSZXN1bHQJYWNscmVzdWx0OworCU9pZAkJCXR5cGlk OworCWludDMyCQl0eXBtb2Q7CisJT2lkCQkJdmFyb3duZXIgPSBHZXRVc2VySWQoKTsKKworCU5v ZGUJICAgKmNvb2tlZF9kZWZhdWx0ID0gTlVMTDsKKworCW5hbWVzcGFjZWlkID0KKwkJUmFuZ2VW YXJHZXRBbmRDaGVja0NyZWF0aW9uTmFtZXNwYWNlKHN0bXQtPnZhcmlhYmxlLCBOb0xvY2ssIE5V TEwpOworCisJdHlwZW5hbWVUeXBlSWRBbmRNb2QocHN0YXRlLCBzdG10LT50eXBlTmFtZSwgJnR5 cGlkLCAmdHlwbW9kKTsKKworCWFjbHJlc3VsdCA9IHBnX3R5cGVfYWNsY2hlY2sodHlwaWQsIEdl dFVzZXJJZCgpLCBBQ0xfVVNBR0UpOworCWlmIChhY2xyZXN1bHQgIT0gQUNMQ0hFQ0tfT0spCisJ CWFjbGNoZWNrX2Vycm9yX3R5cGUoYWNscmVzdWx0LCB0eXBpZCk7CisKKwlpZiAoc3RtdC0+ZGVm ZXhwcikKKwl7CisJCWNvb2tlZF9kZWZhdWx0ID0gdHJhbnNmb3JtRXhwcihwc3RhdGUsIHN0bXQt PmRlZmV4cHIsCisJCQkJCQkJCQkJRVhQUl9LSU5EX1ZBUklBQkxFX0RFRkFVTFQpOworCisJCWNv b2tlZF9kZWZhdWx0ID0gY29lcmNlX3RvX3NwZWNpZmljX3R5cGUocHN0YXRlLAorCQkJCQkJCQkJ CQkJIGNvb2tlZF9kZWZhdWx0LCB0eXBpZCwgIkRFRkFVTFQiKTsKKwl9CisKKwlyZXR1cm4gVmFy aWFibGVDcmVhdGUoc3RtdC0+dmFyaWFibGUtPnJlbG5hbWUsCisJCQkJCQkgIG5hbWVzcGFjZWlk LAorCQkJCQkJICB0eXBpZCwKKwkJCQkJCSAgdHlwbW9kLAorCQkJCQkJICB2YXJvd25lciwKKwkJ CQkJCSAgY29va2VkX2RlZmF1bHQsCisJCQkJCQkgIHN0bXQtPmlmX25vdF9leGlzdHMpOworfQor CisvKgorICogVHJ5IHRvIHNlYXJjaCB2YWx1ZSBpbiBoYXNoIHRhYmxlLiBJZiBkb2Vzbid0Cisg KiBleGlzdHMgaW5zZXJ0IGl0IChhbmQgY2FsY3VsYXRlIGRlZmV4cHIgaWYgZXhpc3RzLgorICov CitzdGF0aWMgU2NoZW1hVmFyaWFibGUKK1ByZXBhcmVTY2hlbWFWYXJpYWJsZUZvclJlYWRpbmco T2lkIHZhcmlkKQoreworCVNjaGVtYVZhcmlhYmxlCXN2YXI7CisJVmFyaWFibGUJKnZhcjsKKwli b29sCQkJZm91bmQ7CisKKwlpZiAoc2NoZW1hdmFyaGFzaHRhYiA9PSBOVUxMKQorCQljcmVhdGVf c2NoZW1hdmFyX2hhc2h0YWJsZSgpOworCisJc3ZhciA9IChTY2hlbWFWYXJpYWJsZSkgaGFzaF9z ZWFyY2goc2NoZW1hdmFyaGFzaHRhYiwgJnZhcmlkLAorCQkJCQkJCQkJCQkgIEhBU0hfRU5URVIs ICZmb3VuZCk7CisJaWYgKCFmb3VuZCkKKwl7CisJCXZhciA9IEdldFZhcmlhYmxlKHZhcmlkLCBm YWxzZSk7CisJCWdldF90eXBsZW5ieXZhbCh2YXItPnR5cGlkLCAmc3Zhci0+dHlwbGVuLCAmc3Zh ci0+dHlwYnl2YWwpOworCisJCXN2YXItPnZhcmlkID0gdmFyaWQ7CisJCXN2YXItPnR5cGlkID0g dmFyLT50eXBpZDsKKwkJc3Zhci0+dHlwbW9kID0gdmFyLT50eXBtb2Q7CisJCXN2YXItPmlzbnVs bCA9IHRydWU7CisJCXN2YXItPmZyZWV2YWwgPSBmYWxzZTsKKwkJc3Zhci0+dmFsdWUgPSAoRGF0 dW0pIDA7CisJCXN2YXItPmlzX3Jvd3R5cGUgPSB0eXBlX2lzX3Jvd3R5cGUodmFyLT50eXBpZCk7 CisKKwkJLyogd2hlbiB3ZSBkb24ndCBuZWVkIGNhbGN1bGF0ZSBkZWZleHByLCB2YWx1ZSBpcyB2 YWxpZCBhbHJlYWR5ICovCisJCXN2YXItPmlzX3ZhbGlkID0gdmFyLT5kZWZleHByID8gZmFsc2Ug OiB0cnVlOworCX0KKwllbHNlIGlmICghc3Zhci0+aXNfdmFsaWQpCisJeworCQkvKiB3ZSBuZWVk IHZhciB0byByZWNhbGN1bGF0ZSBkZWZleHByICovCisJCXZhciA9IEdldFZhcmlhYmxlKHZhcmlk LCBmYWxzZSk7CisJfQorCWVsc2UKKwkJLyogd2UgZG9uJ3QgbmVlZCB0byBnbyB0byBzeXMgY2Fj aGUgKi8KKwkJdmFyID0gTlVMTDsKKworCS8qCisJICogSW5pdGlhbGl6ZSB2YXJpYWJsZSB3aGVu IGl0IGlzIG5lY2Vzc2FyeS4gSXQgaXMgZnJlc2gKKwkgKiBvciBsYXN0IGluaXRpYWxpemF0aW9u IHdhcyBub3Qgc3VjY2Vzc2Z1bGwuCisJICovCisJaWYgKHZhciAhPSBOVUxMICYmIHZhci0+ZGVm ZXhwciAmJiAhc3Zhci0+aXNfdmFsaWQpCisJeworCQlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQg PSBOVUxMOworCisJCURhdHVtCSAgIHZhbHVlID0gKERhdHVtKSAwOworCQlib29sCSAgIG51bGw7 CisJCUVTdGF0ZQkgICAqZXN0YXRlID0gTlVMTDsKKwkJRXhwcgkgICAqZGVmZXhwcjsKKwkJRXhw clN0YXRlICAqZGVmZXhwcnM7CisKKwkJLyogUHJlcGFyZSBkZWZhdWx0IGV4cHIgKi8KKwkJZXN0 YXRlID0gQ3JlYXRlRXhlY3V0b3JTdGF0ZSgpOworCQlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4 dFN3aXRjaFRvKGVzdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKKworCQlkZWZleHByID0gZXhwcmVzc2lv bl9wbGFubmVyKChFeHByICopIHZhci0+ZGVmZXhwcik7CisJCWRlZmV4cHJzID0gRXhlY0luaXRF eHByKGRlZmV4cHIsIE5VTEwpOworCQl2YWx1ZSA9IEV4ZWNFdmFsRXhwclN3aXRjaENvbnRleHQo ZGVmZXhwcnMsIEdldFBlclR1cGxlRXhwckNvbnRleHQoZXN0YXRlKSwgJm51bGwpOworCisJCU1l bW9yeUNvbnRleHRTd2l0Y2hUbyhTY2hlbWFWYXJpYWJsZU1lbW9yeUNvbnRleHQpOworCisJCWlm ICghbnVsbCkKKwkJeworCQkJc3Zhci0+dmFsdWUgPSBkYXR1bUNvcHkodmFsdWUsIHN2YXItPnR5 cGJ5dmFsLCBzdmFyLT50eXBsZW4pOworCQkJc3Zhci0+ZnJlZXZhbCA9IHN2YXItPnZhbHVlICE9 IHZhbHVlOworCQkJc3Zhci0+aXNudWxsID0gZmFsc2U7CisJCQlzdmFyLT5pc192YWxpZCA9IHRy dWU7CisJCX0KKwkJZWxzZQorCQl7CisJCQlzdmFyLT5pc251bGwgPSB0cnVlOworCQkJc3Zhci0+ aXNfdmFsaWQgPSB0cnVlOworCQl9CisKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRl eHQpOworCisJCUZyZWVFeGVjdXRvclN0YXRlKGVzdGF0ZSk7CisJfQorCisJaWYgKCFzdmFyLT5p c192YWxpZCkKKwkJZWxvZyhFUlJPUiwgInRoZSBjb250ZW50IG9mIHZhcmlhYmxlIGlzIG5vdCB2 YWxpZCIpOworCisJcmV0dXJuIHN2YXI7Cit9CisKKy8qCisgKiBSZXR1cm5zIGNvbnRlbnQgb2Yg dmFyaWFibGUuIFdlIGV4cGV4dCBzZWN1cmVkIGFjY2VzcyBub3cuCisgKiBTZWN1cmUgY2hlY2sg c2hvdWxkIGJlIGRvbmUgYmVmb3JlLgorICovCitEYXR1bQorR2V0U2NoZW1hVmFyaWFibGUoT2lk IHZhcmlkLCBib29sICppc051bGwsIE9pZCBleHBlY3RlZF90eXBpZCkKK3sKKwlTY2hlbWFWYXJp YWJsZQlzdmFyOworCisJc3ZhciA9IFByZXBhcmVTY2hlbWFWYXJpYWJsZUZvclJlYWRpbmcodmFy aWQpOworCSppc051bGwgPSBzdmFyLT5pc251bGw7CisKKwlpZiAoZXhwZWN0ZWRfdHlwaWQgIT0g c3Zhci0+dHlwaWQpCisJCWVsb2coRVJST1IsICJ0eXBlIG9mIHZhcmlhYmxlIFwiJXNcIiBpcyBk aWZmZXJlbnQgdGhhbiBleHBlY3RlZCIsCisJCQkJICAgc2NoZW1hX3ZhcmlhYmxlX2dldF9uYW1l KHZhcmlkKSk7CisKKwlyZXR1cm4gKERhdHVtKSBzdmFyLT52YWx1ZTsKK30KKworCitEYXR1bQor R2V0U2NoZW1hVmFyaWFibGVDb3B5KE9pZCB2YXJpZCwgYm9vbCAqaXNOdWxsLCBPaWQgZXhwZWN0 ZWRfdHlwaWQpCit7CisJU2NoZW1hVmFyaWFibGUJc3ZhcjsKKworCXN2YXIgPSBQcmVwYXJlU2No ZW1hVmFyaWFibGVGb3JSZWFkaW5nKHZhcmlkKTsKKwkqaXNOdWxsID0gc3Zhci0+aXNudWxsOwor CisJaWYgKGV4cGVjdGVkX3R5cGlkICE9IHN2YXItPnR5cGlkKQorCQllbG9nKEVSUk9SLCAidHlw ZSBvZiB2YXJpYWJsZSBcIiVzXCIgaXMgZGlmZmVyZW50IHRoYW4gZXhwZWN0ZWQiLAorCQkJCSAg IHNjaGVtYV92YXJpYWJsZV9nZXRfbmFtZSh2YXJpZCkpOworCisJaWYgKCFzdmFyLT5pc251bGwp CisJCXJldHVybiBkYXR1bUNvcHkoc3Zhci0+dmFsdWUsIHN2YXItPnR5cGJ5dmFsLCBzdmFyLT50 eXBsZW4pOworCisJcmV0dXJuIChEYXR1bSkgMDsKK30KKworCisvKgorICogV3JpdGUgdmFsdWUg dG8gdmFyaWFibGUuIFdlIGV4cGVjdCBzZWN1cmVkIGFjY2VzcyBpbiB0aGlzIG1vbWVudC4KKyAq IEluIHRoaXMgdGltZSwgd2UgcmVjaGVjayBzeXNjaGFjaGUgYWJvdXQgdXNlZCB0eXBlLgorICov Cit2b2lkCitTZXRTY2hlbWFWYXJpYWJsZShPaWQgdmFyaWQsIERhdHVtIHZhbHVlLCBib29sIGlz TnVsbCwgT2lkIHR5cGlkLCBpbnQzMiB0eXBtb2QpCit7CisJTWVtb3J5Q29udGV4dCBvbGRjb250 ZXh0ID0gTlVMTDsKKworCVNjaGVtYVZhcmlhYmxlIHN2YXI7CisJT2lkCQkJdmFyX3R5cGlkOwor CWludDMyCQl2YXJfdHlwbW9kOworCWJvb2wJCWZvdW5kOworCisJaWYgKHNjaGVtYXZhcmhhc2h0 YWIgPT0gTlVMTCkKKwkJY3JlYXRlX3NjaGVtYXZhcl9oYXNodGFibGUoKTsKKworCXN2YXIgPSAo U2NoZW1hVmFyaWFibGUpIGhhc2hfc2VhcmNoKHNjaGVtYXZhcmhhc2h0YWIsICZ2YXJpZCwKKwkJ CQkJCQkJCQkJICBIQVNIX0VOVEVSLCAmZm91bmQpOworCisJZ2V0X3NjaGVtYV92YXJpYWJsZV90 eXBlX3R5cG1vZCh2YXJpZCwgJnZhcl90eXBpZCwgJnZhcl90eXBtb2QpOworCisJLyogY2hlY2sg dHlwZXMgZmlyc3QgKi8KKwlpZiAodmFyX3R5cGlkICE9IHR5cGlkKQorCQllbG9nKEVSUk9SLCAi dHlwZSBvZiBleHByZXNzaW9uIGlzIGRpZmZlcmVudCB0aGFuIHNjaGVtYSB2YXJpYWJsZSB0eXBl Iik7CisKKwlpZiAoZm91bmQpCisJeworCQkvKiByZWxlYXNlIGN1cnJlbnQgY29udGVudCBmaXJz dCAqLworCQlpZiAoc3Zhci0+ZnJlZXZhbCkKKwkJeworCQkJcGZyZWUoRGF0dW1HZXRQb2ludGVy KHN2YXItPnZhbHVlKSk7CisJCQlzdmFyLT52YWx1ZSA9IChEYXR1bSkgMDsKKwkJCXN2YXItPmlz bnVsbCA9IHRydWU7CisJCQlzdmFyLT5mcmVldmFsID0gZmFsc2U7CisJCX0KKwl9CisKKwlnZXRf dHlwbGVuYnl2YWwodHlwaWQsICZzdmFyLT50eXBsZW4sICZzdmFyLT50eXBieXZhbCk7CisKKwlz dmFyLT52YXJpZCA9IHZhcmlkOworCXN2YXItPnR5cGlkID0gdHlwaWQ7CisJc3Zhci0+dHlwbW9k ID0gdHlwbW9kOworCisJc3Zhci0+aXNudWxsID0gdHJ1ZTsKKwlzdmFyLT5mcmVldmFsID0gZmFs c2U7CisJc3Zhci0+dmFsdWUgPSAoRGF0dW0pIDA7CisKKwlzdmFyLT5pc19yb3d0eXBlID0gdHlw ZV9pc19yb3d0eXBlKHR5cGlkKTsKKwlzdmFyLT5pc192YWxpZCA9IGZhbHNlOworCisJb2xkY29u dGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhTY2hlbWFWYXJpYWJsZU1lbW9yeUNvbnRleHQp OworCisJaWYgKCFpc051bGwpCisJeworCQlzdmFyLT52YWx1ZSA9IGRhdHVtQ29weSh2YWx1ZSwg c3Zhci0+dHlwYnl2YWwsIHN2YXItPnR5cGxlbik7CisJCXN2YXItPmZyZWV2YWwgPSBzdmFyLT52 YWx1ZSAhPSB2YWx1ZTsKKwkJc3Zhci0+aXNudWxsID0gZmFsc2U7CisJCXN2YXItPmlzX3ZhbGlk ID0gdHJ1ZTsKKwl9CisJZWxzZQorCXsKKwkJc3Zhci0+aXNudWxsID0gdHJ1ZTsKKwkJc3Zhci0+ aXNfdmFsaWQgPSB0cnVlOworCX0KKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0 KTsKK30KKwordm9pZAorZG9MZXRTdG10KFBsYW5uZWRTdG10ICpwc3RtdCwKKwkJICBQYXJhbUxp c3RJbmZvIHBhcmFtcywKKwkJICBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKKwkJICBjb25z dCBjaGFyICpxdWVyeVN0cmluZykKK3sKKwlRdWVyeURlc2MgKnF1ZXJ5RGVzYzsKKwlEZXN0UmVj ZWl2ZXIgKmRlc3Q7CisKKwlQdXNoQ29waWVkU25hcHNob3QoR2V0QWN0aXZlU25hcHNob3QoKSk7 CisJVXBkYXRlQWN0aXZlU25hcHNob3RDb21tYW5kSWQoKTsKKworCS8qIENyZWF0ZSBkZXN0IHJl Y2VpdmVyIGZvciBMRVQgKi8KKwlkZXN0ID0gQ3JlYXRlRGVzdFJlY2VpdmVyKERlc3RWYXJpYWJs ZSk7CisKKwlTZXRWYXJpYWJsZURlc3RSZWNlaXZlclBhcmFtcyhkZXN0LCBwc3RtdC0+cmVzdWx0 VmFyaWFibGUpOworCisJLyogQ3JlYXRlIGEgUXVlcnlEZXNjIHJlcXVlc3Rpbmcgbm8gb3V0cHV0 ICovCisJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBzdG10LCBxdWVyeVN0cmluZywKKwkJ CQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwKKwkJCQkJCQkJCQkJSW52YWxpZFNuYXBzaG90 LAorCQkJCQkJCQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCAwKTsKKworCUV4ZWN1dG9yU3Rh cnQocXVlcnlEZXNjLCAwKTsKKwlFeGVjdXRvclJ1bihxdWVyeURlc2MsIEZvcndhcmRTY2FuRGly ZWN0aW9uLCAyTCwgdHJ1ZSk7CisJRXhlY3V0b3JGaW5pc2gocXVlcnlEZXNjKTsKKwlFeGVjdXRv ckVuZChxdWVyeURlc2MpOworCisJRnJlZVF1ZXJ5RGVzYyhxdWVyeURlc2MpOworCisJUG9wQWN0 aXZlU25hcHNob3QoKTsKK30KKwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFi bGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCBjZWY2NjMy ODQwLi4zMGU2YzEyOTBiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNt ZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtOTY1Niw2ICs5 NjU2LDcgQEAgQVRFeGVjQWx0ZXJDb2x1bW5UeXBlKEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVs YXRpb24gcmVsLAogCQkJY2FzZSBPQ0xBU1NfUFVCTElDQVRJT05fUkVMOgogCQkJY2FzZSBPQ0xB U1NfU1VCU0NSSVBUSU9OOgogCQkJY2FzZSBPQ0xBU1NfVFJBTlNGT1JNOgorCQkJY2FzZSBPQ0xB U1NfVkFSSUFCTEU6CiAKIAkJCQkvKgogCQkJCSAqIFdlIGRvbid0IGV4cGVjdCBhbnkgb2YgdGhl c2Ugc29ydHMgb2Ygb2JqZWN0cyB0byBkZXBlbmQgb24KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvTWFrZWZpbGUKaW5kZXgg Y2MwOTg5NWZhNS4uZWU4ZmY3ZGE5ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv TWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvTWFrZWZpbGUKQEAgLTI5LDYgKzI5 LDYgQEAgT0JKUyA9IGV4ZWNBbWkubyBleGVjQ3VycmVudC5vIGV4ZWNFeHByLm8gZXhlY0V4cHJJ bnRlcnAubyBcCiAgICAgICAgbm9kZUN0ZXNjYW4ubyBub2RlTmFtZWR0dXBsZXN0b3Jlc2Nhbi5v IG5vZGVXb3JrdGFibGVzY2FuLm8gXAogICAgICAgIG5vZGVHcm91cC5vIG5vZGVTdWJwbGFuLm8g bm9kZVN1YnF1ZXJ5c2Nhbi5vIG5vZGVUaWRzY2FuLm8gXAogICAgICAgIG5vZGVGb3JlaWduc2Nh bi5vIG5vZGVXaW5kb3dBZ2cubyB0c3RvcmVSZWNlaXZlci5vIHRxdWV1ZS5vIHNwaS5vIFwKLSAg ICAgICBub2RlVGFibGVGdW5jc2Nhbi5vCisgICAgICAgbm9kZVRhYmxlRnVuY3NjYW4ubyBzdmFy aWFibGVSZWNlaXZlci5vCiAKIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9zcmMvYmFja2VuZC9jb21t b24ubWsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jCmluZGV4IGUyODRmZDcxZDcuLjQ0MmM1Mzk5OTEg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYwpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgImFj Y2Vzcy9uYnRyZWUuaCIKICNpbmNsdWRlICJjYXRhbG9nL29iamVjdGFjY2Vzcy5oIgogI2luY2x1 ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3NjaGVtYXZhcmlhYmxl LmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY0V4cHIuaCIKICNpbmNsdWRlICJleGVjdXRvci9u b2RlU3VicGxhbi5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKQEAgLTcyNyw2ICs3MjgsNyBAQCBF eGVjSW5pdEV4cHJSZWMoRXhwciAqbm9kZSwgRXhwclN0YXRlICpzdGF0ZSwKIAkJCXsKIAkJCQlQ YXJhbQkgICAqcGFyYW0gPSAoUGFyYW0gKikgbm9kZTsKIAkJCQlQYXJhbUxpc3RJbmZvIHBhcmFt czsKKwkJCQlBY2xSZXN1bHQJYWNscmVzdWx0OwogCiAJCQkJc3dpdGNoIChwYXJhbS0+cGFyYW1r aW5kKQogCQkJCXsKQEAgLTczNiw2ICs3MzgsMjYgQEAgRXhlY0luaXRFeHByUmVjKEV4cHIgKm5v ZGUsIEV4cHJTdGF0ZSAqc3RhdGUsCiAJCQkJCQlzY3JhdGNoLmQucGFyYW0ucGFyYW10eXBlID0g cGFyYW0tPnBhcmFtdHlwZTsKIAkJCQkJCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsICZzY3JhdGNo KTsKIAkJCQkJCWJyZWFrOworCQkJCQljYXNlIFBBUkFNX1NDSEVNQV9WQVJJQUJMRToKKwkJCQkJ CS8qIENoZWNrIHBlcm1pc3Npb24gdG8gcmVhZCBzY2hlbWEgdmFyaWFibGUgKi8KKwkJCQkJCWFj bHJlc3VsdCA9IHBnX3ZhcmlhYmxlX2FjbGNoZWNrKHBhcmFtLT5wYXJhbWlkLCBHZXRVc2VySWQo KSwgQUNMX1JFQUQpOworCQkJCQkJaWYgKGFjbHJlc3VsdCAhPSBBQ0xDSEVDS19PSykKKwkJCQkJ CQlhY2xjaGVja19lcnJvcihhY2xyZXN1bHQsIE9CSkVDVF9WQVJJQUJMRSwKKwkJCQkJCQkJCQkJ c2NoZW1hX3ZhcmlhYmxlX2dldF9uYW1lKHBhcmFtLT5wYXJhbWlkKSk7CisKKwkJCQkJCS8qCisJ CQkJCQkgKiBVc2luZyB2YXJvaWQgYXMgcGFyYW1pZCBpcyBub3QgcHJhY3RpY2FsLiBCZXR0ZXIg dG8gcmVjb3VudAorCQkJCQkJICogdXNlZCBzY2hlbWEgdmFyaWFibGVzIGZyb20gemVybywgYW5k IGxhdGVyIHRvIHVzZSBwYXJhbWlkIGxpa2UKKwkJCQkJCSAqIG9mZnNldC4KKwkJCQkJCSAqLwor CQkJCQkJc2NyYXRjaC5vcGNvZGUgPSBFRU9QX1BBUkFNX1ZBUklBQkxFOworCQkJCQkJc2NyYXRj aC5kLnZwYXJhbS5wYXJhbWlkID0gc3RhdGUtPm52YXJpYWJsZXMrKzsKKwkJCQkJCXNjcmF0Y2gu ZC52cGFyYW0udmFyb2lkID0gcGFyYW0tPnBhcmFtaWQ7CisJCQkJCQlzY3JhdGNoLmQudnBhcmFt LnBhcmFtdHlwZSA9IHBhcmFtLT5wYXJhbXR5cGU7CisKKwkJCQkJCUV4cHJFdmFsUHVzaFN0ZXAo c3RhdGUsICZzY3JhdGNoKTsKKwkJCQkJCWJyZWFrOworCiAJCQkJCWNhc2UgUEFSQU1fRVhURVJO OgogCiAJCQkJCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJ bnRlcnAuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMKaW5kZXggOWQ2 ZTI1YWFlNS4uNmMyNTY4OWEyYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y0V4cHJJbnRlcnAuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5j CkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3R1cHRvYXN0ZXIuaCIKICNpbmNs dWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9zZXF1ZW5jZS5oIgor I2luY2x1ZGUgImNvbW1hbmRzL3NjaGVtYXZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Iv ZXhlY0V4cHIuaCIKICNpbmNsdWRlICJleGVjdXRvci9ub2RlU3VicGxhbi5oIgogI2luY2x1ZGUg ImZ1bmNhcGkuaCIKQEAgLTM1MSw2ICszNTIsNyBAQCBFeGVjSW50ZXJwRXhwcihFeHByU3RhdGUg KnN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsIGJvb2wgKmlzbnVsbCkKIAkJJiZDQVNFX0VF T1BfUEFSQU1fRVhFQywKIAkJJiZDQVNFX0VFT1BfUEFSQU1fRVhURVJOLAogCQkmJkNBU0VfRUVP UF9QQVJBTV9DQUxMQkFDSywKKwkJJiZDQVNFX0VFT1BfUEFSQU1fVkFSSUFCTEUsCiAJCSYmQ0FT RV9FRU9QX0NBU0VfVEVTVFZBTCwKIAkJJiZDQVNFX0VFT1BfTUFLRV9SRUFET05MWSwKIAkJJiZD QVNFX0VFT1BfSU9DT0VSQ0UsCkBAIC0xMDA3LDYgKzEwMDksNzEgQEAgRXhlY0ludGVycEV4cHIo RXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBib29sICppc251bGwpCiAJ CQlFRU9fTkVYVCgpOwogCQl9CiAKKwkJRUVPX0NBU0UoRUVPUF9QQVJBTV9WQVJJQUJMRSkKKwkJ eworCQkJRVN0YXRlICplc3RhdGUgPSBlY29udGV4dC0+ZWN4dF9lc3RhdGU7CisJCQlNZW1vcnlD b250ZXh0CW9sZF9jeHQ7CisKKwkJCWlmIChlc3RhdGUgJiYgIWVzdGF0ZS0+ZXNfc2hhcmVkKQor CQkJeworCQkJCWludAkJcGFyYW1pZCA9IG9wLT5kLnZwYXJhbS5wYXJhbWlkOworCisJCQkJaWYg KGVzdGF0ZS0+ZXNfbnZhcmlhYmxlcyA9PSAwKQorCQkJCXsKKwkJCQkJLyoKKwkJCQkJICogQSBx dWVyeSdzIHNjaGVtYSB2YXJpYWJsZSdzIGNhY2hlIHNob3VsZCBiZSBpbml0aWFsaXplZC4gVGhp cyBjYWNoZQorCQkJCQkgKiBpcyByZWxhdGVkIHRvIEVTdGF0ZS4gV2hlbiBlc3RhdGUgaXMgdXNl ZCBwZXIgcXVlcnksIHRoZW4gdGhpcyBjYWNoaW5nCisJCQkJCSAqIGlzIG5vdCBzdXJwcmlzZS4g QSB1bmV4cGVjdGVkIGJlaGF2ZSBjYW4gYmUgd2l0aCBzb21lIFBMcGdTUUwgZXhwcmVzc2lvbnMK KwkJCQkJICogd2hlcmUgRVN0YXRlIGlzIHJldXNlZCwgc28gaW4gdGhpcyBjYXNlLCBkb24ndCB1 c2UgdGhpcyBjYWNoZS4KKwkJCQkJICovCisJCQkJCW9sZF9jeHQgPSBNZW1vcnlDb250ZXh0U3dp dGNoVG8oZWNvbnRleHQtPmVjeHRfcGVyX3F1ZXJ5X21lbW9yeSk7CisKKwkJCQkJZXN0YXRlLT5l c19udmFyaWFibGVzID0gc3RhdGUtPm52YXJpYWJsZXM7CisJCQkJCWVzdGF0ZS0+ZXNfdmFybnVs bHMgPSBwYWxsb2Moc2l6ZW9mKGJvb2wpICogc3RhdGUtPm52YXJpYWJsZXMpOworCQkJCQllc3Rh dGUtPmVzX3ZhcnR5cGVzID0gcGFsbG9jMChzaXplb2YoT2lkKSAqIHN0YXRlLT5udmFyaWFibGVz KTsKKwkJCQkJZXN0YXRlLT5lc192YXJ2YWx1ZXMgPSBwYWxsb2Moc2l6ZW9mKERhdHVtKSAqIHN0 YXRlLT5udmFyaWFibGVzKTsKKworCQkJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkX2N4dCk7 CisJCQkJfQorCisJCQkJQXNzZXJ0KGVzdGF0ZS0+ZXNfbnZhcmlhYmxlcyA9PSBzdGF0ZS0+bnZh cmlhYmxlcyk7CisJCQkJQXNzZXJ0KGVzdGF0ZS0+ZXNfbnZhcmlhYmxlcyA+IHBhcmFtaWQpOwor CisJCQkJaWYgKCFPaWRJc1ZhbGlkKGVzdGF0ZS0+ZXNfdmFydHlwZXNbcGFyYW1pZF0pKQorCQkJ CXsKKwkJCQkJb2xkX2N4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhlY29udGV4dC0+ZWN4dF9w ZXJfcXVlcnlfbWVtb3J5KTsKKworCQkJCQllc3RhdGUtPmVzX3ZhcnZhbHVlc1twYXJhbWlkXSA9 CisJCQkJCQkJCQkJCQlHZXRTY2hlbWFWYXJpYWJsZUNvcHkob3AtPmQudnBhcmFtLnZhcm9pZCwK KwkJCQkJCQkJCQkJCQkJCQkgICZlc3RhdGUtPmVzX3Zhcm51bGxzW3BhcmFtaWRdLAorCQkJCQkJ CQkJCQkJCQkJCSAgb3AtPmQudnBhcmFtLnBhcmFtdHlwZSk7CisJCQkJCWVzdGF0ZS0+ZXNfdmFy dHlwZXNbcGFyYW1pZF0gPSBvcC0+ZC52cGFyYW0ucGFyYW10eXBlOworCisJCQkJCU1lbW9yeUNv bnRleHRTd2l0Y2hUbyhvbGRfY3h0KTsKKwkJCQl9CisKKwkJCQlBc3NlcnQoT2lkSXNWYWxpZChl c3RhdGUtPmVzX3ZhcnR5cGVzW3BhcmFtaWRdKSk7CisKKwkJCQkqb3AtPnJlc3ZhbHVlID0gZXN0 YXRlLT5lc192YXJ2YWx1ZXNbcGFyYW1pZF07CisJCQkJKm9wLT5yZXNudWxsID0gZXN0YXRlLT5l c192YXJudWxsc1twYXJhbWlkXTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlEYXR1bQkJZDsK KwkJCQlib29sCQlpc251bGw7CisKKwkJCQkvKiByZWFkIGNvbnRlbnQgb2YgdmFyaWFibGUgZXZl cnkgdGltZSAqLworCQkJCWQgPSBHZXRTY2hlbWFWYXJpYWJsZShvcC0+ZC52cGFyYW0udmFyb2lk LAorCQkJCQkJCQkJICAmaXNudWxsLAorCQkJCQkJCQkJICBvcC0+ZC52cGFyYW0ucGFyYW10eXBl KTsKKworCQkJCSpvcC0+cmVzdmFsdWUgPSBkOworCQkJCSpvcC0+cmVzbnVsbCA9IGlzbnVsbDsK KwkJCX0KKworCQkJRUVPX05FWFQoKTsKKwkJfQorCiAJCUVFT19DQVNFKEVFT1BfQ0FTRV9URVNU VkFMKQogCQl7CiAJCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01h aW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggYjc5N2QwNjRiNy4u YTQ5ZGViODEwYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC00Myw5ICs0MywxMSBAQAog I2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIK ICNpbmNsdWRlICJjYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9w Z192YXJpYWJsZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL21hdHZpZXcuaCIKICNpbmNsdWRlICJj b21tYW5kcy90cmlnZ2VyLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY2RlYnVnLmgiCisjaW5j bHVkZSAiZXhlY3V0b3Ivc3ZhcmlhYmxlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJmb3JlaWduL2Zk d2FwaS5oIgogI2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgi CkBAIC0yMDQsMTIgKzIwNiwxOCBAQCBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAq cXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCSAqLwogCWVzdGF0ZS0+ZXNfcXVlcnlFbnYgPSBxdWVy eURlc2MtPnF1ZXJ5RW52OwogCisJLyoKKwkgKiBSZXN1bHQgY2FuIGJlIHN0b3JlZCBpbiBzY2hl bWEgdmFyaWFibGUuCisJICovCisJZXN0YXRlLT5lc19yZXN1bHRfdmFyaWFibGUgPSBxdWVyeURl c2MtPnBsYW5uZWRzdG10LT5yZXN1bHRWYXJpYWJsZTsKKwogCS8qCiAJICogSWYgbm9uLXJlYWQt b25seSBxdWVyeSwgc2V0IHRoZSBjb21tYW5kIElEIHRvIG1hcmsgb3V0cHV0IHR1cGxlcyB3aXRo CiAJICovCiAJc3dpdGNoIChxdWVyeURlc2MtPm9wZXJhdGlvbikKIAl7CiAJCWNhc2UgQ01EX1NF TEVDVDoKKwkJY2FzZSBDTURfUExBTl9VVElMSVRZOgogCiAJCQkvKgogCQkJICogU0VMRUNUIEZP UiBbS0VZXSBVUERBVEUvU0hBUkUgYW5kIG1vZGlmeWluZyBDVEVzIG5lZWQgdG8gbWFyawpAQCAt MzQ1LDYgKzM1Myw3IEBAIHN0YW5kYXJkX0V4ZWN1dG9yUnVuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNj LAogCWVzdGF0ZS0+ZXNfbGFzdG9pZCA9IEludmFsaWRPaWQ7CiAKIAlzZW5kVHVwbGVzID0gKG9w ZXJhdGlvbiA9PSBDTURfU0VMRUNUIHx8CisJCQkJICBPaWRJc1ZhbGlkKGVzdGF0ZS0+ZXNfcmVz dWx0X3ZhcmlhYmxlKSB8fAogCQkJCSAgcXVlcnlEZXNjLT5wbGFubmVkc3RtdC0+aGFzUmV0dXJu aW5nKTsKIAogCWlmIChzZW5kVHVwbGVzKQpAQCAtOTI0LDYgKzkzMywxNyBAQCBJbml0UGxhbihR dWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAkJZXN0YXRlLT5lc19udW1fcm9vdF9y ZXN1bHRfcmVsYXRpb25zID0gMDsKIAl9CiAKKwlpZiAoT2lkSXNWYWxpZChlc3RhdGUtPmVzX3Jl c3VsdF92YXJpYWJsZSkpCisJeworCQlBY2xSZXN1bHQJYWNscmVzdWx0OworCQlPaWQJCQl2YXJp ZCA9IGVzdGF0ZS0+ZXNfcmVzdWx0X3ZhcmlhYmxlOworCisJCS8qIEVuc3VyZSB0aGlzIHZhcmlh YmxlIGlzIHdyaXRlYWJsZSAqLworCQlhY2xyZXN1bHQgPSBwZ192YXJpYWJsZV9hY2xjaGVjayh2 YXJpZCwgR2V0VXNlcklkKCksIEFDTF9XUklURSk7CisJCWlmIChhY2xyZXN1bHQgIT0gQUNMQ0hF Q0tfT0spCisJCQlhY2xjaGVja19lcnJvcihhY2xyZXN1bHQsIE9CSkVDVF9WQVJJQUJMRSwgc2No ZW1hX3ZhcmlhYmxlX2dldF9uYW1lKHZhcmlkKSk7CisJfQorCiAJLyoKIAkgKiBTaW1pbGFybHks IHdlIGhhdmUgdG8gbG9jayByZWxhdGlvbnMgc2VsZWN0ZWQgRk9SIFtLRVldIFVQREFURS9TSEFS RQogCSAqIGJlZm9yZSB3ZSBpbml0aWFsaXplIHRoZSBwbGFuIHRyZWUsIGVsc2Ugd2UnZCBiZSBy aXNraW5nIGxvY2sgdXBncmFkZXMuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjVXRpbHMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCmluZGV4IDViM2Vh ZWM4MGIuLmVjYTc4MDU1MTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNV dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCkBAIC0xMDIsNiAr MTAyLDcgQEAgQ3JlYXRlRXhlY3V0b3JTdGF0ZSh2b2lkKQogCS8qCiAJICogSW5pdGlhbGl6ZSBh bGwgZmllbGRzIG9mIHRoZSBFeGVjdXRvciBTdGF0ZSBzdHJ1Y3R1cmUKIAkgKi8KKwllc3RhdGUt PmVzX3NoYXJlZCA9IGZhbHNlOwogCWVzdGF0ZS0+ZXNfZGlyZWN0aW9uID0gRm9yd2FyZFNjYW5E aXJlY3Rpb247CiAJZXN0YXRlLT5lc19zbmFwc2hvdCA9IEludmFsaWRTbmFwc2hvdDsJLyogY2Fs bGVyIG11c3QgaW5pdGlhbGl6ZSB0aGlzICovCiAJZXN0YXRlLT5lc19jcm9zc2NoZWNrX3NuYXBz aG90ID0gSW52YWxpZFNuYXBzaG90OwkvKiBubyBjcm9zc2NoZWNrICovCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9zdmFyaWFibGVSZWNlaXZlci5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivc3ZhcmlhYmxlUmVjZWl2ZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwLi4wZWFjNGI1ZDBjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivc3ZhcmlhYmxlUmVjZWl2ZXIuYwpAQCAtMCwwICsxLDE0NSBAQAorLyotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgKgorICogc3ZhcmlhYmxlUmVjZWl2ZXIuYworICoJICBBbiBpbXBsZW1lbnRhdGlvbiBv ZiBEZXN0UmVjZWl2ZXIgdGhhdCBzdG9yZXMgdGhlIHJlc3VsdCB2YWx1ZSBpbgorICoJICBhIHNj aGVtYSB2YXJpYWJsZS4KKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAxOCwg UG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdo dCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgor ICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3ZhcmlhYmxlUmVj ZWl2ZXIuYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpbmNsdWRlICJwb3N0Z3Jl cy5oIgorCisjaW5jbHVkZSAiYWNjZXNzL3R1cHRvYXN0ZXIuaCIKKyNpbmNsdWRlICJleGVjdXRv ci9zdmFyaWFibGVSZWNlaXZlci5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3NjaGVtYXZhcmlhYmxl LmgiCisKK3R5cGVkZWYgc3RydWN0Cit7CisJRGVzdFJlY2VpdmVyIHB1YjsKKwlPaWQJCXZhcmlk OworCU9pZAkJdHlwaWQ7CisJaW50MzIJdHlwbW9kOworCWludAkJdHlwbGVuOworCWludAkJc2xv dF9vZmZzZXQ7CisJaW50CQlyb3dzOworfSBzdmFyaWFibGVTdGF0ZTsKKworCisvKgorICogUHJl cGFyZSB0byByZWNlaXZlIHR1cGxlcyBmcm9tIGV4ZWN1dG9yLgorICovCitzdGF0aWMgdm9pZAor c3ZhcmlhYmxlU3RhcnR1cFJlY2VpdmVyKERlc3RSZWNlaXZlciAqc2VsZiwgaW50IG9wZXJhdGlv biwgVHVwbGVEZXNjIHR5cGVpbmZvKQoreworCXN2YXJpYWJsZVN0YXRlICpteVN0YXRlID0gKHN2 YXJpYWJsZVN0YXRlICopIHNlbGY7CisJaW50CQkJbmF0dHMgPSB0eXBlaW5mby0+bmF0dHM7CisJ aW50CQkJb3V0Y29scyA9IDA7CisJaW50CQkJaTsKKworCWZvciAoaSA9IDA7IGkgPCBuYXR0czsg aSsrKQorCXsKKwkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ciA9IFR1cGxlRGVzY0F0dHIodHlwZWlu Zm8sIGkpOworCisJCWlmIChhdHRyLT5hdHRpc2Ryb3BwZWQpCisJCQljb250aW51ZTsKKworCQlp ZiAoKytvdXRjb2xzID4gMSkKKwkJCWVsb2coRVJST1IsICJzdmFyaWFibGUgRGVzdFJlY2VpdmVy IGNhbiB0YWtlIG9ubHkgb25lIGF0dHJpYnV0ZSIpOworCisJCW15U3RhdGUtPnR5cGlkID0gYXR0 ci0+YXR0dHlwaWQ7CisJCW15U3RhdGUtPnR5cG1vZCA9IGF0dHItPmF0dHR5cG1vZDsKKwkJbXlT dGF0ZS0+dHlwbGVuID0gYXR0ci0+YXR0bGVuOworCQlteVN0YXRlLT5zbG90X29mZnNldCA9IGk7 CisJfQorCisJbXlTdGF0ZS0+cm93cyA9IDA7Cit9CisKKy8qCisgKiBSZWNlaXZlIGEgdHVwbGUg ZnJvbSB0aGUgZXhlY3V0b3IgYW5kIHN0b3JlIGl0IGluIHNjaGVtYSB2YXJpYWJsZS4KKyAqLwor c3RhdGljIGJvb2wKK3N2YXJpYWJsZVJlY2VpdmVTbG90KFR1cGxlVGFibGVTbG90ICpzbG90LCBE ZXN0UmVjZWl2ZXIgKnNlbGYpCit7CisJc3ZhcmlhYmxlU3RhdGUgKm15U3RhdGUgPSAoc3Zhcmlh YmxlU3RhdGUgKikgc2VsZjsKKwlEYXR1bQkJdmFsdWU7CisJYm9vbAkJaXNudWxsOworCWJvb2wJ CWZyZWV2YWwgPSBmYWxzZTsKKworCS8qIE1ha2Ugc3VyZSB0aGUgdHVwbGUgaXMgZnVsbHkgZGVj b25zdHJ1Y3RlZCAqLworCXNsb3RfZ2V0YWxsYXR0cnMoc2xvdCk7CisKKwl2YWx1ZSA9IHNsb3Qt PnR0c192YWx1ZXNbbXlTdGF0ZS0+c2xvdF9vZmZzZXRdOworCWlzbnVsbCA9IHNsb3QtPnR0c19p c251bGxbbXlTdGF0ZS0+c2xvdF9vZmZzZXRdOworCisJaWYgKG15U3RhdGUtPnR5cGxlbiA9PSAt MSAmJiAhaXNudWxsICYmIFZBUkFUVF9JU19FWFRFUk5BTChEYXR1bUdldFBvaW50ZXIodmFsdWUp KSkKKwl7CisJCXZhbHVlID0gUG9pbnRlckdldERhdHVtKGhlYXBfdHVwbGVfZmV0Y2hfYXR0cigo c3RydWN0IHZhcmxlbmEgKikKKwkJCQkJCQkJCQkJCQlEYXR1bUdldFBvaW50ZXIodmFsdWUpKSk7 CisJCWZyZWV2YWwgPSB0cnVlOworCX0KKworCVNldFNjaGVtYVZhcmlhYmxlKG15U3RhdGUtPnZh cmlkLCB2YWx1ZSwgaXNudWxsLCBteVN0YXRlLT50eXBpZCwgbXlTdGF0ZS0+dHlwbW9kKTsKKwor CWlmIChmcmVldmFsKQorCQlwZnJlZShEYXR1bUdldFBvaW50ZXIodmFsdWUpKTsKKworCXJldHVy biB0cnVlOworfQorCisvKgorICogQ2xlYW4gdXAgYXQgZW5kIG9mIGFuIGV4ZWN1dG9yIHJ1bgor ICovCitzdGF0aWMgdm9pZAorc3ZhcmlhYmxlU2h1dGRvd25SZWNlaXZlcihEZXN0UmVjZWl2ZXIg KnNlbGYpCit7CisJLyogRG8gbm90aGluZyAqLworfQorCisvKgorICogRGVzdHJveSByZWNlaXZl ciB3aGVuIGRvbmUgd2l0aCBpdAorICovCitzdGF0aWMgdm9pZAorc3ZhcmlhYmxlRGVzdHJveVJl Y2VpdmVyKERlc3RSZWNlaXZlciAqc2VsZikKK3sKKwlwZnJlZShzZWxmKTsKK30KKworLyoKKyAq IEluaXRpYWxseSBjcmVhdGUgYSBEZXN0UmVjZWl2ZXIgb2JqZWN0LgorICovCitEZXN0UmVjZWl2 ZXIgKgorQ3JlYXRlVmFyaWFibGVEZXN0UmVjZWl2ZXIodm9pZCkKK3sKKwlzdmFyaWFibGVTdGF0 ZSAqc2VsZiA9IChzdmFyaWFibGVTdGF0ZSAqKSBwYWxsb2MwKHNpemVvZihzdmFyaWFibGVTdGF0 ZSkpOworCisJc2VsZi0+cHViLnJlY2VpdmVTbG90ID0gc3ZhcmlhYmxlUmVjZWl2ZVNsb3Q7CisJ c2VsZi0+cHViLnJTdGFydHVwID0gc3ZhcmlhYmxlU3RhcnR1cFJlY2VpdmVyOworCXNlbGYtPnB1 Yi5yU2h1dGRvd24gPSBzdmFyaWFibGVTaHV0ZG93blJlY2VpdmVyOworCXNlbGYtPnB1Yi5yRGVz dHJveSA9IHN2YXJpYWJsZURlc3Ryb3lSZWNlaXZlcjsKKwlzZWxmLT5wdWIubXlkZXN0ID0gRGVz dFZhcmlhYmxlOworCisJLyogcHJpdmF0ZSBmaWVsZHMgd2lsbCBiZSBzZXQgYnkgU2V0VmFyaWFi bGVEZXN0UmVjZWl2ZXJQYXJhbXMgKi8KKworCXJldHVybiAoRGVzdFJlY2VpdmVyICopIHNlbGY7 Cit9CisKKy8qCisgKiBTZXQgcGFyYW1ldGVycyBmb3IgYSBWYXJpYWJsZURlc3RSZWNlaXZlcgor ICovCit2b2lkCitTZXRWYXJpYWJsZURlc3RSZWNlaXZlclBhcmFtcyhEZXN0UmVjZWl2ZXIgKnNl bGYsIE9pZCB2YXJpZCkKK3sKKwlzdmFyaWFibGVTdGF0ZSAqbXlTdGF0ZSA9IChzdmFyaWFibGVT dGF0ZSAqKSBzZWxmOworCisJQXNzZXJ0KG15U3RhdGUtPnB1Yi5teWRlc3QgPT0gRGVzdFZhcmlh YmxlKTsKKwlBc3NlcnQoT2lkSXNWYWxpZCh2YXJpZCkpOworCisJbXlTdGF0ZS0+dmFyaWQgPSB2 YXJpZDsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jIGIvc3Jj L2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKaW5kZXggN2M4MjIwY2Y2NS4uZmNhYTJkYjUxYSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tl bmQvbm9kZXMvY29weWZ1bmNzLmMKQEAgLTkzLDYgKzkzLDcgQEAgX2NvcHlQbGFubmVkU3RtdChj b25zdCBQbGFubmVkU3RtdCAqZnJvbSkKIAlDT1BZX05PREVfRklFTEQocmVzdWx0UmVsYXRpb25z KTsKIAlDT1BZX05PREVfRklFTEQobm9ubGVhZlJlc3VsdFJlbGF0aW9ucyk7CiAJQ09QWV9OT0RF X0ZJRUxEKHJvb3RSZXN1bHRSZWxhdGlvbnMpOworCUNPUFlfU0NBTEFSX0ZJRUxEKHJlc3VsdFZh cmlhYmxlKTsKIAlDT1BZX05PREVfRklFTEQoc3VicGxhbnMpOwogCUNPUFlfQklUTUFQU0VUX0ZJ RUxEKHJld2luZFBsYW5JRHMpOwogCUNPUFlfTk9ERV9GSUVMRChyb3dNYXJrcyk7CkBAIC0zMDAw LDYgKzMwMDEsNyBAQCBfY29weVF1ZXJ5KGNvbnN0IFF1ZXJ5ICpmcm9tKQogCUNPUFlfU0NBTEFS X0ZJRUxEKGNhblNldFRhZyk7CiAJQ09QWV9OT0RFX0ZJRUxEKHV0aWxpdHlTdG10KTsKIAlDT1BZ X1NDQUxBUl9GSUVMRChyZXN1bHRSZWxhdGlvbik7CisJQ09QWV9TQ0FMQVJfRklFTEQocmVzdWx0 VmFyaWFibGUpOwogCUNPUFlfU0NBTEFSX0ZJRUxEKGhhc0FnZ3MpOwogCUNPUFlfU0NBTEFSX0ZJ RUxEKGhhc1dpbmRvd0Z1bmNzKTsKIAlDT1BZX1NDQUxBUl9GSUVMRChoYXNUYXJnZXRTUkZzKTsK QEAgLTMxMTgsNiArMzEyMCwxOCBAQCBfY29weVNlbGVjdFN0bXQoY29uc3QgU2VsZWN0U3RtdCAq ZnJvbSkKIAlyZXR1cm4gbmV3bm9kZTsKIH0KIAorc3RhdGljIExldFN0bXQgKgorX2NvcHlMZXRT dG10KGNvbnN0IExldFN0bXQgKmZyb20pCit7CisJTGV0U3RtdCAqbmV3bm9kZSA9IG1ha2VOb2Rl KExldFN0bXQpOworCisJQ09QWV9OT0RFX0ZJRUxEKHRhcmdldCk7CisJQ09QWV9OT0RFX0ZJRUxE KHNlbGVjdFN0bXQpOworCUNPUFlfTE9DQVRJT05fRklFTEQobG9jYXRpb24pOworCisJcmV0dXJu IG5ld25vZGU7Cit9CisKIHN0YXRpYyBTZXRPcGVyYXRpb25TdG10ICoKIF9jb3B5U2V0T3BlcmF0 aW9uU3RtdChjb25zdCBTZXRPcGVyYXRpb25TdG10ICpmcm9tKQogewpAQCAtNTE2Niw2ICs1MTgw LDkgQEAgY29weU9iamVjdEltcGwoY29uc3Qgdm9pZCAqZnJvbSkKIAkJY2FzZSBUX1NlbGVjdFN0 bXQ6CiAJCQlyZXR2YWwgPSBfY29weVNlbGVjdFN0bXQoZnJvbSk7CiAJCQlicmVhazsKKwkJY2Fz ZSBUX0xldFN0bXQ6CisJCQlyZXR2YWwgPSBfY29weUxldFN0bXQoZnJvbSk7CisJCQlicmVhazsK IAkJY2FzZSBUX1NldE9wZXJhdGlvblN0bXQ6CiAJCQlyZXR2YWwgPSBfY29weVNldE9wZXJhdGlv blN0bXQoZnJvbSk7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL2Vx dWFsZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYwppbmRleCAzNzhmMmZh Y2I4Li4zZWM0NzJlMTliIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNz LmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jCkBAIC05NDksNiArOTQ5LDcg QEAgX2VxdWFsUXVlcnkoY29uc3QgUXVlcnkgKmEsIGNvbnN0IFF1ZXJ5ICpiKQogCUNPTVBBUkVf U0NBTEFSX0ZJRUxEKGNhblNldFRhZyk7CiAJQ09NUEFSRV9OT0RFX0ZJRUxEKHV0aWxpdHlTdG10 KTsKIAlDT01QQVJFX1NDQUxBUl9GSUVMRChyZXN1bHRSZWxhdGlvbik7CisJQ09NUEFSRV9TQ0FM QVJfRklFTEQocmVzdWx0VmFyaWFibGUpOwogCUNPTVBBUkVfU0NBTEFSX0ZJRUxEKGhhc0FnZ3Mp OwogCUNPTVBBUkVfU0NBTEFSX0ZJRUxEKGhhc1dpbmRvd0Z1bmNzKTsKIAlDT01QQVJFX1NDQUxB Ul9GSUVMRChoYXNUYXJnZXRTUkZzKTsKQEAgLTEwNTcsNiArMTA1OCwxNiBAQCBfZXF1YWxTZWxl Y3RTdG10KGNvbnN0IFNlbGVjdFN0bXQgKmEsIGNvbnN0IFNlbGVjdFN0bXQgKmIpCiAJcmV0dXJu IHRydWU7CiB9CiAKK3N0YXRpYyBib29sCitfZXF1YWxMZXRTdG10KGNvbnN0IExldFN0bXQgKmEs IGNvbnN0IExldFN0bXQgKmIpCit7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKHRhcmdldCk7CisJQ09N UEFSRV9OT0RFX0ZJRUxEKHNlbGVjdFN0bXQpOworCisJcmV0dXJuIHRydWU7Cit9CisKKwogc3Rh dGljIGJvb2wKIF9lcXVhbFNldE9wZXJhdGlvblN0bXQoY29uc3QgU2V0T3BlcmF0aW9uU3RtdCAq YSwgY29uc3QgU2V0T3BlcmF0aW9uU3RtdCAqYikKIHsKQEAgLTMyMjUsNiArMzIzNiw5IEBAIGVx dWFsKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCiAJCWNhc2UgVF9TZWxlY3RTdG10Ogog CQkJcmV0dmFsID0gX2VxdWFsU2VsZWN0U3RtdChhLCBiKTsKIAkJCWJyZWFrOworCQljYXNlIFRf TGV0U3RtdDoKKwkJCXJldHZhbCA9IF9lcXVhbExldFN0bXQoYSwgYik7CisJCQlicmVhazsKIAkJ Y2FzZSBUX1NldE9wZXJhdGlvblN0bXQ6CiAJCQlyZXR2YWwgPSBfZXF1YWxTZXRPcGVyYXRpb25T dG10KGEsIGIpOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9vdXRm dW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYwppbmRleCA2MjY5ZjQ3NGQyLi40 NjQwNGZmOWFjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCisrKyBi L3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMKQEAgLTI3OCw2ICsyNzgsNyBAQCBfb3V0UGxh bm5lZFN0bXQoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IFBsYW5uZWRTdG10ICpub2RlKQogCVdSSVRF X05PREVfRklFTEQocmVzdWx0UmVsYXRpb25zKTsKIAlXUklURV9OT0RFX0ZJRUxEKG5vbmxlYWZS ZXN1bHRSZWxhdGlvbnMpOwogCVdSSVRFX05PREVfRklFTEQocm9vdFJlc3VsdFJlbGF0aW9ucyk7 CisJV1JJVEVfT0lEX0ZJRUxEKHJlc3VsdFZhcmlhYmxlKTsKIAlXUklURV9OT0RFX0ZJRUxEKHN1 YnBsYW5zKTsKIAlXUklURV9CSVRNQVBTRVRfRklFTEQocmV3aW5kUGxhbklEcyk7CiAJV1JJVEVf Tk9ERV9GSUVMRChyb3dNYXJrcyk7CkBAIC0yNzkzLDYgKzI3OTQsMTYgQEAgX291dFNlbGVjdFN0 bXQoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IFNlbGVjdFN0bXQgKm5vZGUpCiAJV1JJVEVfTk9ERV9G SUVMRChyYXJnKTsKIH0KIAorc3RhdGljIHZvaWQKK19vdXRMZXRTdG10KFN0cmluZ0luZm8gc3Ry LCBjb25zdCBMZXRTdG10ICpub2RlKQoreworCVdSSVRFX05PREVfVFlQRSgiTEVUIik7CisKKwlX UklURV9OT0RFX0ZJRUxEKHRhcmdldCk7CisJV1JJVEVfTk9ERV9GSUVMRChzZWxlY3RTdG10KTsK KwlXUklURV9MT0NBVElPTl9GSUVMRChsb2NhdGlvbik7Cit9CisKIHN0YXRpYyB2b2lkCiBfb3V0 RnVuY0NhbGwoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IEZ1bmNDYWxsICpub2RlKQogewpAQCAtMjk3 MSw2ICsyOTgyLDcgQEAgX291dFF1ZXJ5KFN0cmluZ0luZm8gc3RyLCBjb25zdCBRdWVyeSAqbm9k ZSkKIAkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhzdHIsICIgOnV0aWxpdHlTdG10IDw+Iik7CiAK IAlXUklURV9JTlRfRklFTEQocmVzdWx0UmVsYXRpb24pOworCVdSSVRFX0lOVF9GSUVMRChyZXN1 bHRWYXJpYWJsZSk7CiAJV1JJVEVfQk9PTF9GSUVMRChoYXNBZ2dzKTsKIAlXUklURV9CT09MX0ZJ RUxEKGhhc1dpbmRvd0Z1bmNzKTsKIAlXUklURV9CT09MX0ZJRUxEKGhhc1RhcmdldFNSRnMpOwpA QCAtNDE5MSw2ICs0MjAzLDkgQEAgb3V0Tm9kZShTdHJpbmdJbmZvIHN0ciwgY29uc3Qgdm9pZCAq b2JqKQogCQkJY2FzZSBUX1NlbGVjdFN0bXQ6CiAJCQkJX291dFNlbGVjdFN0bXQoc3RyLCBvYmop OwogCQkJCWJyZWFrOworCQkJY2FzZSBUX0xldFN0bXQ6CisJCQkJX291dExldFN0bXQoc3RyLCBv YmopOworCQkJCWJyZWFrOwogCQkJY2FzZSBUX0NvbHVtbkRlZjoKIAkJCQlfb3V0Q29sdW1uRGVm KHN0ciwgb2JqKTsKIAkJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL3Jl YWRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKaW5kZXggMzI1NDUyNDIy My4uNDQ1NDMyNzU0OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMK KysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKQEAgLTI0Miw2ICsyNDIsNyBAQCBf cmVhZFF1ZXJ5KHZvaWQpCiAJUkVBRF9CT09MX0ZJRUxEKGNhblNldFRhZyk7CiAJUkVBRF9OT0RF X0ZJRUxEKHV0aWxpdHlTdG10KTsKIAlSRUFEX0lOVF9GSUVMRChyZXN1bHRSZWxhdGlvbik7CisJ UkVBRF9JTlRfRklFTEQocmVzdWx0VmFyaWFibGUpOwogCVJFQURfQk9PTF9GSUVMRChoYXNBZ2dz KTsKIAlSRUFEX0JPT0xfRklFTEQoaGFzV2luZG93RnVuY3MpOwogCVJFQURfQk9PTF9GSUVMRCho YXNUYXJnZXRTUkZzKTsKQEAgLTE0ODUsNiArMTQ4Niw3IEBAIF9yZWFkUGxhbm5lZFN0bXQodm9p ZCkKIAlSRUFEX05PREVfRklFTEQocmVzdWx0UmVsYXRpb25zKTsKIAlSRUFEX05PREVfRklFTEQo bm9ubGVhZlJlc3VsdFJlbGF0aW9ucyk7CiAJUkVBRF9OT0RFX0ZJRUxEKHJvb3RSZXN1bHRSZWxh dGlvbnMpOworCVJFQURfT0lEX0ZJRUxEKHJlc3VsdFZhcmlhYmxlKTsKIAlSRUFEX05PREVfRklF TEQoc3VicGxhbnMpOwogCVJFQURfQklUTUFQU0VUX0ZJRUxEKHJld2luZFBsYW5JRHMpOwogCVJF QURfTk9ERV9GSUVMRChyb3dNYXJrcyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGxhbi9wbGFubmVyLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMK aW5kZXggZmQwNmRhOThiOS4uMDFmOTdmMmQ4NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vcGxhbm5lci5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3Bs YW5uZXIuYwpAQCAtMzM1LDcgKzMzNSw4IEBAIHN0YW5kYXJkX3BsYW5uZXIoUXVlcnkgKnBhcnNl LCBpbnQgY3Vyc29yT3B0aW9ucywgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcykKIAkgKi8KIAlp ZiAoKGN1cnNvck9wdGlvbnMgJiBDVVJTT1JfT1BUX1BBUkFMTEVMX09LKSAhPSAwICYmCiAJCUlz VW5kZXJQb3N0bWFzdGVyICYmCi0JCXBhcnNlLT5jb21tYW5kVHlwZSA9PSBDTURfU0VMRUNUICYm CisJCShwYXJzZS0+Y29tbWFuZFR5cGUgPT0gQ01EX1NFTEVDVCB8fAorCQkgcGFyc2UtPmNvbW1h bmRUeXBlID09IENNRF9QTEFOX1VUSUxJVFkpICYmCiAJCSFwYXJzZS0+aGFzTW9kaWZ5aW5nQ1RF ICYmCiAJCW1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPiAwICYmCiAJCSFJc1BhcmFs bGVsV29ya2VyKCkgJiYKQEAgLTM1Miw2ICszNTMsOCBAQCBzdGFuZGFyZF9wbGFubmVyKFF1ZXJ5 ICpwYXJzZSwgaW50IGN1cnNvck9wdGlvbnMsIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMpCiAJ CWdsb2ItPnBhcmFsbGVsTW9kZU9LID0gZmFsc2U7CiAJfQogCisKKwogCS8qCiAJICogZ2xvYi0+ cGFyYWxsZWxNb2RlTmVlZGVkIGlzIG5vcm1hbGx5IHNldCB0byBmYWxzZSBoZXJlIGFuZCBjaGFu Z2VkIHRvCiAJICogdHJ1ZSBkdXJpbmcgcGxhbiBjcmVhdGlvbiBpZiBhIEdhdGhlciBvciBHYXRo ZXIgTWVyZ2UgcGxhbiBpcyBhY3R1YWxseQpAQCAtNTIxLDYgKzUyNCw3IEBAIHN0YW5kYXJkX3Bs YW5uZXIoUXVlcnkgKnBhcnNlLCBpbnQgY3Vyc29yT3B0aW9ucywgUGFyYW1MaXN0SW5mbyBib3Vu ZFBhcmFtcykKIAlyZXN1bHQtPnJlc3VsdFJlbGF0aW9ucyA9IGdsb2ItPnJlc3VsdFJlbGF0aW9u czsKIAlyZXN1bHQtPm5vbmxlYWZSZXN1bHRSZWxhdGlvbnMgPSBnbG9iLT5ub25sZWFmUmVzdWx0 UmVsYXRpb25zOwogCXJlc3VsdC0+cm9vdFJlc3VsdFJlbGF0aW9ucyA9IGdsb2ItPnJvb3RSZXN1 bHRSZWxhdGlvbnM7CisJcmVzdWx0LT5yZXN1bHRWYXJpYWJsZSA9IHBhcnNlLT5yZXN1bHRWYXJp YWJsZTsKIAlyZXN1bHQtPnN1YnBsYW5zID0gZ2xvYi0+c3VicGxhbnM7CiAJcmVzdWx0LT5yZXdp bmRQbGFuSURzID0gZ2xvYi0+cmV3aW5kUGxhbklEczsKIAlyZXN1bHQtPnJvd01hcmtzID0gZ2xv Yi0+ZmluYWxyb3dtYXJrczsKQEAgLTIxNjcsNyArMjE3MSw3IEBAIGdyb3VwaW5nX3BsYW5uZXIo UGxhbm5lckluZm8gKnJvb3QsIGJvb2wgaW5oZXJpdGFuY2VfdXBkYXRlLAogCQkgKiBJZiB0aGlz IGlzIGFuIElOU0VSVC9VUERBVEUvREVMRVRFLCBhbmQgd2UncmUgbm90IGJlaW5nIGNhbGxlZCBm cm9tCiAJCSAqIGluaGVyaXRhbmNlX3BsYW5uZXIsIGFkZCB0aGUgTW9kaWZ5VGFibGUgbm9kZS4K IAkJICovCi0JCWlmIChwYXJzZS0+Y29tbWFuZFR5cGUgIT0gQ01EX1NFTEVDVCAmJiAhaW5oZXJp dGFuY2VfdXBkYXRlKQorCQlpZiAocGFyc2UtPmNvbW1hbmRUeXBlICE9IENNRF9TRUxFQ1QgJiYg cGFyc2UtPmNvbW1hbmRUeXBlICE9IENNRF9QTEFOX1VUSUxJVFkgJiYgIWluaGVyaXRhbmNlX3Vw ZGF0ZSkKIAkJewogCQkJTGlzdAkgICAqd2l0aENoZWNrT3B0aW9uTGlzdHM7CiAJCQlMaXN0CSAg ICpyZXR1cm5pbmdMaXN0czsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wcmVw L3ByZXB0bGlzdC5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcHRsaXN0LmMKaW5k ZXggODYwM2ZlZWYyYi4uMjkyM2UzZmNjNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3ByZXAvcHJlcHRsaXN0LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJl cHRsaXN0LmMKQEAgLTcxLDYgKzcxLDcgQEAgcHJlcHJvY2Vzc190YXJnZXRsaXN0KFBsYW5uZXJJ bmZvICpyb290KQogewogCVF1ZXJ5CSAgICpwYXJzZSA9IHJvb3QtPnBhcnNlOwogCWludAkJCXJl c3VsdF9yZWxhdGlvbiA9IHBhcnNlLT5yZXN1bHRSZWxhdGlvbjsKKwlpbnQJCQlyZXN1bHRfdmFy aWFibGUgPSBwYXJzZS0+cmVzdWx0VmFyaWFibGU7CiAJTGlzdAkgICAqcmFuZ2VfdGFibGUgPSBw YXJzZS0+cnRhYmxlOwogCUNtZFR5cGUJCWNvbW1hbmRfdHlwZSA9IHBhcnNlLT5jb21tYW5kVHlw ZTsKIAlSYW5nZVRibEVudHJ5ICp0YXJnZXRfcnRlID0gTlVMTDsKQEAgLTk2LDYgKzk3LDEwIEBA IHByZXByb2Nlc3NfdGFyZ2V0bGlzdChQbGFubmVySW5mbyAqcm9vdCkKIAogCQl0YXJnZXRfcmVs YXRpb24gPSBoZWFwX29wZW4odGFyZ2V0X3J0ZS0+cmVsaWQsIE5vTG9jayk7CiAJfQorCWVsc2Ug aWYgKHJlc3VsdF92YXJpYWJsZSkKKwl7CisJCUFzc2VydChjb21tYW5kX3R5cGUgPT0gQ01EX1BM QU5fVVRJTElUWSk7CisJfQogCWVsc2UKIAkJQXNzZXJ0KGNvbW1hbmRfdHlwZSA9PSBDTURfU0VM RUNUKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5j IGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jCmluZGV4IGEwNGFkNmU5OWUu LmRhNTcwYmIyM2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2NsYXVz ZXMuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMKQEAgLTEyNTQs NyArMTI1NCw4IEBAIG1heF9wYXJhbGxlbF9oYXphcmRfd2Fsa2VyKE5vZGUgKm5vZGUsIG1heF9w YXJhbGxlbF9oYXphcmRfY29udGV4dCAqY29udGV4dCkKIAl7CiAJCVBhcmFtCSAgICpwYXJhbSA9 IChQYXJhbSAqKSBub2RlOwogCi0JCWlmIChwYXJhbS0+cGFyYW1raW5kID09IFBBUkFNX0VYVEVS TikKKwkJaWYgKHBhcmFtLT5wYXJhbWtpbmQgPT0gUEFSQU1fRVhURVJOIHx8CisJCQlwYXJhbS0+ cGFyYW1raW5kID09IFBBUkFNX1NDSEVNQV9WQVJJQUJMRSkKIAkJCXJldHVybiBmYWxzZTsKIAog CQlpZiAocGFyYW0tPnBhcmFta2luZCAhPSBQQVJBTV9FWEVDIHx8CkBAIC00Nzk5LDcgKzQ4MDAs NyBAQCBzdWJzdGl0dXRlX2FjdHVhbF9wYXJhbWV0ZXJzX211dGF0b3IoTm9kZSAqbm9kZSwKIHsK IAlpZiAobm9kZSA9PSBOVUxMKQogCQlyZXR1cm4gTlVMTDsKLQlpZiAoSXNBKG5vZGUsIFBhcmFt KSkKKwlpZiAoSXNBKG5vZGUsIFBhcmFtKSAmJiAoKFBhcmFtICopIG5vZGUpLT5wYXJhbWtpbmQg IT0gUEFSQU1fU0NIRU1BX1ZBUklBQkxFKQogCXsKIAkJUGFyYW0JICAgKnBhcmFtID0gKFBhcmFt ICopIG5vZGU7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5j YXQuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQuYwppbmRleCA4MzY5ZTNh ZDYyLi5mYzBjZjM0YzdkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9w bGFuY2F0LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jCkBAIC0x MjcyLDcgKzEyNzIsNyBAQCBnZXRfcmVsYXRpb25fY29uc3RyYWludHMoUGxhbm5lckluZm8gKnJv b3QsCiAJICogZGVzY3JpcHRvciwgaW5zdGVhZCBvZiBjb25zdHJhaW50IGV4Y2x1c2lvbiB3aGlj aCBpcyBkcml2ZW4gYnkgdGhlCiAJICogaW5kaXZpZHVhbCBwYXJ0aXRpb24ncyBwYXJ0aXRpb24g Y29uc3RyYWludC4KIAkgKi8KLQlpZiAoZW5hYmxlX3BhcnRpdGlvbl9wcnVuaW5nICYmIHJvb3Qt PnBhcnNlLT5jb21tYW5kVHlwZSAhPSBDTURfU0VMRUNUKQorCWlmIChlbmFibGVfcGFydGl0aW9u X3BydW5pbmcgJiYgcm9vdC0+cGFyc2UtPmNvbW1hbmRUeXBlICE9IENNRF9TRUxFQ1QgJiYgcm9v dC0+cGFyc2UtPmNvbW1hbmRUeXBlICE9IENNRF9QTEFOX1VUSUxJVFkpCiAJewogCQlMaXN0CSAg ICpwY3F1YWwgPSBSZWxhdGlvbkdldFBhcnRpdGlvblF1YWwocmVsYXRpb24pOwogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2Fu YWx5emUuYwppbmRleCBjNjAxYjZkNDBkLi40NDFiMjk4NjkzIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9wYXJzZXIvYW5hbHl6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMK QEAgLTI1LDcgKzI1LDEwIEBACiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAogI2luY2x1ZGUgImFj Y2Vzcy9zeXNhdHRyLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKICNpbmNsdWRl ICJjYXRhbG9nL3BnX3R5cGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3ZhcmlhYmxlLmgiCisj aW5jbHVkZSAiY29tbWFuZHMvc2NoZW1hdmFyaWFibGUuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4u aCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVu Y3MuaCIKQEAgLTQ0LDYgKzQ3LDggQEAKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfdGFyZ2V0Lmgi CiAjaW5jbHVkZSAicGFyc2VyL3BhcnNldHJlZS5oIgogI2luY2x1ZGUgInJld3JpdGUvcmV3cml0 ZU1hbmlwLmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9s c3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKIAogCkBAIC03OCw2ICs4Myw4IEBA IHN0YXRpYyBRdWVyeSAqdHJhbnNmb3JtQ3JlYXRlVGFibGVBc1N0bXQoUGFyc2VTdGF0ZSAqcHN0 YXRlLAogCQkJCQkJICAgQ3JlYXRlVGFibGVBc1N0bXQgKnN0bXQpOwogc3RhdGljIFF1ZXJ5ICp0 cmFuc2Zvcm1DYWxsU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJICBDYWxsU3RtdCAqc3Rt dCk7CitzdGF0aWMgUXVlcnkgKnRyYW5zZm9ybUxldFN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLAor CQkJCSAgTGV0U3RtdCAqc3RtdCk7CiBzdGF0aWMgdm9pZCB0cmFuc2Zvcm1Mb2NraW5nQ2xhdXNl KFBhcnNlU3RhdGUgKnBzdGF0ZSwgUXVlcnkgKnFyeSwKIAkJCQkJICAgTG9ja2luZ0NsYXVzZSAq bGMsIGJvb2wgcHVzaGVkRG93bik7CiAjaWZkZWYgUkFXX0VYUFJFU1NJT05fQ09WRVJBR0VfVEVT VApAQCAtMjY3LDYgKzI3NCw3IEBAIHRyYW5zZm9ybVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBO b2RlICpwYXJzZVRyZWUpCiAJCWNhc2UgVF9JbnNlcnRTdG10OgogCQljYXNlIFRfVXBkYXRlU3Rt dDoKIAkJY2FzZSBUX0RlbGV0ZVN0bXQ6CisJCWNhc2UgVF9MZXRTdG10OgogCQkJKHZvaWQpIHRl c3RfcmF3X2V4cHJlc3Npb25fY292ZXJhZ2UocGFyc2VUcmVlLCBOVUxMKTsKIAkJCWJyZWFrOwog CQlkZWZhdWx0OgpAQCAtMzI3LDYgKzMzNSwxMSBAQCB0cmFuc2Zvcm1TdG10KFBhcnNlU3RhdGUg KnBzdGF0ZSwgTm9kZSAqcGFyc2VUcmVlKQogCQkJCQkJCQkJICAgKENhbGxTdG10ICopIHBhcnNl VHJlZSk7CiAJCQlicmVhazsKIAorCQljYXNlIFRfTGV0U3RtdDoKKwkJCXJlc3VsdCA9IHRyYW5z Zm9ybUxldFN0bXQocHN0YXRlLAorCQkJCQkJCQkJICAoTGV0U3RtdCAqKSBwYXJzZVRyZWUpOwor CQkJYnJlYWs7CisKIAkJZGVmYXVsdDoKIAogCQkJLyoKQEAgLTM2Nyw2ICszODAsNyBAQCBhbmFs eXplX3JlcXVpcmVzX3NuYXBzaG90KFJhd1N0bXQgKnBhcnNlVHJlZSkKIAkJY2FzZSBUX0RlbGV0 ZVN0bXQ6CiAJCWNhc2UgVF9VcGRhdGVTdG10OgogCQljYXNlIFRfU2VsZWN0U3RtdDoKKwkJY2Fz ZSBUX0xldFN0bXQ6CiAJCQlyZXN1bHQgPSB0cnVlOwogCQkJYnJlYWs7CiAKQEAgLTE1NjcsNiAr MTU4MSwyMDMgQEAgdHJhbnNmb3JtVmFsdWVzQ2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgU2Vs ZWN0U3RtdCAqc3RtdCkKIAlyZXR1cm4gcXJ5OwogfQogCisvKgorICogdHJhbnNmb3JtTGV0U3Rt dCAtCisgKgkgIHRyYW5zZm9ybSBhbiBMZXQgU3RhdGVtZW50CisgKi8KK3N0YXRpYyBRdWVyeSAq Cit0cmFuc2Zvcm1MZXRTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGV0U3RtdCAqc3RtdCkKK3sK KwlRdWVyeQkgICAqcXJ5ID0gbWFrZU5vZGUoUXVlcnkpOworCUxpc3QJICAgKmV4cHJMaXN0ID0g TklMOworCUxpc3QJICAgKmV4cHJMaXN0Q29lciA9IE5JTDsKKwlMaXN0CSAgICppbmRpcmVjdGlv biA9IE5JTDsKKwlMaXN0Q2VsbCAgICpsYzsKKwlRdWVyeQkgICAqc2VsZWN0UXVlcnk7CisJaW50 CQkJaSA9IDA7CisKKwlPaWQJCQl2YXJpZDsKKworCVBhcnNlRXhwcktpbmQgc3ZfZXhwcl9raW5k OworCWNoYXIJICAgKmF0dHJuYW1lID0gTlVMTDsKKwlib29sCQlub3RfdW5pcXVlOworCWJvb2wJ CWlzX3Jvd3R5cGU7CisJT2lkCQkJdHlwaWQ7CisJaW50MzIJCXR5cG1vZDsKKworCUFjbFJlc3Vs dAlhY2xyZXN1bHQ7CisJTGlzdAkgICAqbmFtZXMgPSBOVUxMOworCWludAkJCWluZGlyZWN0aW9u X3N0YXJ0OworCisJc3ZfZXhwcl9raW5kID0gcHN0YXRlLT5wX2V4cHJfa2luZDsKKwlwc3RhdGUt PnBfZXhwcl9raW5kID0gRVhQUl9LSU5EX0xFVDsKKworCS8qIFRoZXJlIGNhbid0IGJlIGFueSBv dXRlciBXSVRIIHRvIHdvcnJ5IGFib3V0ICovCisJQXNzZXJ0KHBzdGF0ZS0+cF9jdGVuYW1lc3Bh Y2UgPT0gTklMKTsKKworCS8qIEV4ZWMgdGhpcyBjb21tYW5kIGFzIHV0aWxpdHkgKi8KKwlxcnkt PmNvbW1hbmRUeXBlID0gQ01EX1BMQU5fVVRJTElUWTsKKwlxcnktPnV0aWxpdHlTdG10ID0gKE5v ZGUgKikgc3RtdDsKKworCW5hbWVzID0gTmFtZXNGcm9tTGlzdChzdG10LT50YXJnZXQpOworCisJ dmFyaWQgPSBpZGVudGlmeV92YXJpYWJsZShuYW1lcywgJmF0dHJuYW1lLCAmbm90X3VuaXF1ZSk7 CisJaWYgKG5vdF91bmlxdWUpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09E RV9BTUJJR1VPVVNfUEFSQU1FVEVSKSwKKwkJCQkgZXJybXNnKCJ0YXJnZXQgXCIlc1wiIG9mIExF VCBjb21tYW5kIGlzIGFtYmlndW91cyIsCisJCQkJCQlOYW1lTGlzdFRvU3RyaW5nKG5hbWVzKSks CisJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIHN0bXQtPmxvY2F0aW9uKSkpOworCisJ aWYgKCFPaWRJc1ZhbGlkKHZhcmlkKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2Rl KEVSUkNPREVfVU5ERUZJTkVEX09CSkVDVCksCisJCQkJCQkgZXJybXNnKCJzY2hlbWEgdmFyaWFi bGUgXCIlc1wiIGRvZXNuJ3QgZXhpc3RzIiwKKwkJCQkJCQkJTmFtZUxpc3RUb1N0cmluZyhuYW1l cykpLAorCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIHN0bXQtPmxvY2F0aW9uKSkp OworCisJcXJ5LT5yZXN1bHRWYXJpYWJsZSA9IHZhcmlkOworCisJZ2V0X3NjaGVtYV92YXJpYWJs ZV90eXBlX3R5cG1vZCh2YXJpZCwgJnR5cGlkLCAmdHlwbW9kKTsKKworCWlzX3Jvd3R5cGUgPSB0 eXBlX2lzX3Jvd3R5cGUodHlwaWQpOworCisJaWYgKGF0dHJuYW1lICYmICFpc19yb3d0eXBlKQor CQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUp LAorCQkJCSBlcnJtc2coInRhcmdldCB2YXJpYWJsZSBcIiVzXCIgaXMgbm90IHJvdyB0eXBlIiwK KwkJCQkJCXNjaGVtYV92YXJpYWJsZV9nZXRfbmFtZSh2YXJpZCkpLAorCQkJCXBhcnNlcl9lcnJw b3NpdGlvbihwc3RhdGUsIHN0bXQtPmxvY2F0aW9uKSkpOworCisJYWNscmVzdWx0ID0gcGdfdmFy aWFibGVfYWNsY2hlY2sodmFyaWQsIEdldFVzZXJJZCgpLCBBQ0xfV1JJVEUpOworCWlmIChhY2xy ZXN1bHQgIT0gQUNMQ0hFQ0tfT0spCisJCWFjbGNoZWNrX2Vycm9yKGFjbHJlc3VsdCwgT0JKRUNU X1ZBUklBQkxFLCBOYW1lTGlzdFRvU3RyaW5nKG5hbWVzKSk7CisKKwlzZWxlY3RRdWVyeSA9IHRy YW5zZm9ybVN0bXQocHN0YXRlLCBzdG10LT5zZWxlY3RTdG10KTsKKworCS8qIFRoZSBncmFtbWFy IHNob3VsZCBoYXZlIHByb2R1Y2VkIGEgU0VMRUNUICovCisJaWYgKCFJc0Eoc2VsZWN0UXVlcnks IFF1ZXJ5KSB8fAorCQlzZWxlY3RRdWVyeS0+Y29tbWFuZFR5cGUgIT0gQ01EX1NFTEVDVCkKKwkJ ZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgbm9uLVNFTEVDVCBjb21tYW5kIGluIExFVCAuLi4gU0VM RUNUIik7CisKKwkvKi0tLS0tLS0tLS0KKwkgKiBHZW5lcmF0ZSBhbiBleHByZXNzaW9uIGxpc3Qg Zm9yIHRoZSBMRVQgdGhhdCBzZWxlY3RzIGFsbCB0aGUKKwkgKiBub24tcmVzanVuayBjb2x1bW5z IGZyb20gdGhlIHN1YnF1ZXJ5LgorCSAqLS0tLS0tLS0tLQorCSAqLworCWV4cHJMaXN0ID0gTklM OworCWZvcmVhY2gobGMsIHNlbGVjdFF1ZXJ5LT50YXJnZXRMaXN0KQorCXsKKwkJVGFyZ2V0RW50 cnkgKnRsZSA9IChUYXJnZXRFbnRyeSAqKSBsZmlyc3QobGMpOworCisJCWlmICh0bGUtPnJlc2p1 bmspCisJCQljb250aW51ZTsKKworCQlleHByTGlzdCA9IGxhcHBlbmQoZXhwckxpc3QsIHRsZS0+ ZXhwcik7CisJfQorCisJLyoKKwkgKiBCZWNhdXNlIGRvZXNuJ3Qgc3VwcG9ydCBwYXR0ZXJuIG1h dGNoaW5nLCBkb24ndCBhbGxvdyBtdWx0aWNvbHVtbiByZXN1bHQKKwkgKi8KKwlpZiAobGlzdF9s ZW5ndGgoZXhwckxpc3QpICE9IDEpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJS Q09ERV9TWU5UQVhfRVJST1IpLAorCQkJCSBlcnJtc2coImV4cHJlc3Npb24gaXMgbm90IHNjYWxh ciB2YWx1ZSIpLAorCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLAorCQkJCQkJCQkJZXhw ckxvY2F0aW9uKChOb2RlICopIGV4cHJMaXN0KSkpKTsKKworCWluZGlyZWN0aW9uX3N0YXJ0ID0g bGlzdF9sZW5ndGgobmFtZXMpIC0gKGF0dHJuYW1lID8gMSA6IDApOworCWluZGlyZWN0aW9uID0g bGlzdF9jb3B5X3RhaWwoc3RtdC0+dGFyZ2V0LCBpbmRpcmVjdGlvbl9zdGFydCk7CisKKwlleHBy TGlzdENvZXIgPSBOSUw7CisJZm9yZWFjaChsYywgZXhwckxpc3QpCisJeworCQlOb2RlCSAgICpv cmlnX2V4cHIgPSAoTm9kZSopIGxmaXJzdChsYyk7CisJCU9pZAkJCWV4cHJ0eXBpZCA9IGV4cHJU eXBlKChOb2RlICopIG9yaWdfZXhwcik7CisJCVBhcmFtICpwYXJhbSA9IG1ha2VOb2RlKFBhcmFt KTsKKwkJRXhwcgkgICAqZXhwciA9IE5VTEw7CisKKwkJcGFyYW0tPnBhcmFta2luZCA9IFBBUkFN X1NDSEVNQV9WQVJJQUJMRTsKKwkJcGFyYW0tPnBhcmFtaWQgPSB2YXJpZDsKKwkJcGFyYW0tPnBh cmFtdHlwZSA9IHR5cGlkOworCQlwYXJhbS0+cGFyYW10eXBtb2QgPSB0eXBtb2Q7CisKKwkJaWYg KGluZGlyZWN0aW9uICE9IE5VTEwpCisJCXsKKwkJCWJvb2wJCXRhcmdldElzQXJyYXk7CisJCQlj aGFyCSAgICAqdGFyZ2V0TmFtZTsKKworCQkJdGFyZ2V0TmFtZSA9IGF0dHJuYW1lICE9IE5VTEwg PyBhdHRybmFtZSA6IGdldF9zY2hlbWFfdmFyaWFibGVfbmFtZSh2YXJpZCk7CisJCQl0YXJnZXRJ c0FycmF5ID0gT2lkSXNWYWxpZChnZXRfZWxlbWVudF90eXBlKHR5cGlkKSk7CisKKwkJCWV4cHIg PSAoRXhwciAqKQorCQkJCQl0cmFuc2Zvcm1Bc3NpZ25tZW50SW5kaXJlY3Rpb24ocHN0YXRlLAor CQkJCQkJCQkJCQkJKE5vZGUgKikgcGFyYW0sCisJCQkJCQkJCQkJCQl0YXJnZXROYW1lLAorCQkJ CQkJCQkJCQkJdGFyZ2V0SXNBcnJheSwKKwkJCQkJCQkJCQkJCXR5cGlkLAorCQkJCQkJCQkJCQkJ dHlwbW9kLAorCQkJCQkJCQkJCQkJSW52YWxpZE9pZCwKKwkJCQkJCQkJCQkJCWxpc3RfaGVhZChp bmRpcmVjdGlvbiksCisJCQkJCQkJCQkJCQkoTm9kZSAqKSBvcmlnX2V4cHIsCisJCQkJCQkJCQkJ CQlzdG10LT5sb2NhdGlvbik7CisJCX0KKwkJZWxzZQorCQkJZXhwciA9IChFeHByICopCisJCQkJ CWNvZXJjZV90b190YXJnZXRfdHlwZShwc3RhdGUsCisJCQkJCQkJCQkJCShOb2RlICopIG9yaWdf ZXhwciwKKwkJCQkJCQkJCQkJZXhwcnR5cGlkLAorCQkJCQkJCQkJCQl0eXBpZCwgdHlwbW9kLAor CQkJCQkJCQkJCQlDT0VSQ0lPTl9BU1NJR05NRU5ULAorCQkJCQkJCQkJCQlDT0VSQ0VfSU1QTElD SVRfQ0FTVCwKKwkJCQkJCQkJCQkJc3RtdC0+bG9jYXRpb24pOworCisJCWlmIChleHByID09IE5V TEwpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01J U01BVENIKSwKKwkJCQkJIGVycm1zZygidmFyaWFibGUgXCIlc1wiIGlzIG9mIHR5cGUgJXMsIgor CQkJCQkJCSAgIiBidXQgZXhwcmVzc2lvbiBpcyBvZiB0eXBlICVzIiwKKwkJCQkJCXNjaGVtYV92 YXJpYWJsZV9nZXRfbmFtZSh2YXJpZCksCisJCQkJCQkJZm9ybWF0X3R5cGVfYmUodHlwaWQpLAor CQkJCQkJICBmb3JtYXRfdHlwZV9iZShleHBydHlwaWQpKSwKKwkJCQkgZXJyaGludCgiWW91IHdp bGwgbmVlZCB0byByZXdyaXRlIG9yIGNhc3QgdGhlIGV4cHJlc3Npb24uIiksCisJCQkJIHBhcnNl cl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbigoTm9kZSAqKSBvcmlnX2V4cHIpKSkp OworCisJCWV4cHJMaXN0Q29lciA9IGxhcHBlbmQoZXhwckxpc3RDb2VyLCBleHByKTsKKwl9CisK KwkvKgorCSAqIEdlbmVyYXRlIHF1ZXJ5J3MgdGFyZ2V0IGxpc3QgdXNpbmcgdGhlIGNvbXB1dGVk IGxpc3Qgb2YgZXhwcmVzc2lvbnMuCisJICogQWxzbywgbWFyayBhbGwgdGhlIHRhcmdldCBjb2x1 bW5zIGFzIG5lZWRpbmcgaW5zZXJ0IHBlcm1pc3Npb25zLgorCSAqLworCXFyeS0+dGFyZ2V0TGlz dCA9IE5JTDsKKwlmb3JlYWNoKGxjLCBleHByTGlzdENvZXIpCisJeworCQlFeHByCSAgICpleHBy ID0gKEV4cHIgKikgbGZpcnN0KGxjKTsKKwkJVGFyZ2V0RW50cnkgKnRsZTsKKworCQl0bGUgPSBt YWtlVGFyZ2V0RW50cnkoZXhwciwKKwkJCQkJCQkgIGkgKyAxLAorCQkJCQkJCSAgRmlndXJlQ29s bmFtZSgoTm9kZSAqKWV4cHIpLAorCQkJCQkJCSAgZmFsc2UpOworCQlxcnktPnRhcmdldExpc3Qg PSBsYXBwZW5kKHFyeS0+dGFyZ2V0TGlzdCwgdGxlKTsKKwl9CisKKwkvKiBkb25lIGJ1aWxkaW5n IHRoZSByYW5nZSB0YWJsZSBhbmQgam9pbnRyZWUgKi8KKwlxcnktPnJ0YWJsZSA9IHBzdGF0ZS0+ cF9ydGFibGU7CisJcXJ5LT5qb2ludHJlZSA9IG1ha2VGcm9tRXhwcihwc3RhdGUtPnBfam9pbmxp c3QsIE5VTEwpOworCisJcXJ5LT5oYXNUYXJnZXRTUkZzID0gcHN0YXRlLT5wX2hhc1RhcmdldFNS RnM7CisJcXJ5LT5oYXNTdWJMaW5rcyA9IHBzdGF0ZS0+cF9oYXNTdWJMaW5rczsKKworCWFzc2ln bl9xdWVyeV9jb2xsYXRpb25zKHBzdGF0ZSwgcXJ5KTsKKworCXBzdGF0ZS0+cF9leHByX2tpbmQg PSBzdl9leHByX2tpbmQ7CisKKwlyZXR1cm4gcXJ5OworfQorCisKIC8qCiAgKiB0cmFuc2Zvcm1T ZXRPcGVyYXRpb25TdG10IC0KICAqCSAgdHJhbnNmb3JtcyBhIHNldC1vcGVyYXRpb25zIHRyZWUK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJz ZXIvZ3JhbS55CmluZGV4IDg3ZjVlOTU4MjcuLjI1MDM2NjY5YzEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAt MjU3LDggKzI1Nyw4IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFy ICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJCUNvbnN0cmFpbnRzU2V0 U3RtdCBDb3B5U3RtdCBDcmVhdGVBc1N0bXQgQ3JlYXRlQ2FzdFN0bXQKIAkJQ3JlYXRlRG9tYWlu U3RtdCBDcmVhdGVFeHRlbnNpb25TdG10IENyZWF0ZUdyb3VwU3RtdCBDcmVhdGVPcENsYXNzU3Rt dAogCQlDcmVhdGVPcEZhbWlseVN0bXQgQWx0ZXJPcEZhbWlseVN0bXQgQ3JlYXRlUExhbmdTdG10 Ci0JCUNyZWF0ZVNjaGVtYVN0bXQgQ3JlYXRlU2VxU3RtdCBDcmVhdGVTdG10IENyZWF0ZVN0YXRz U3RtdCBDcmVhdGVUYWJsZVNwYWNlU3RtdAotCQlDcmVhdGVGZHdTdG10IENyZWF0ZUZvcmVpZ25T ZXJ2ZXJTdG10IENyZWF0ZUZvcmVpZ25UYWJsZVN0bXQKKwkJQ3JlYXRlU2NoZW1hU3RtdCBDcmVh dGVTY2hlbWFWYXJTdG10IENyZWF0ZVNlcVN0bXQgQ3JlYXRlU3RtdCBDcmVhdGVTdGF0c1N0bXQK KwkJQ3JlYXRlVGFibGVTcGFjZVN0bXQgQ3JlYXRlRmR3U3RtdCBDcmVhdGVGb3JlaWduU2VydmVy U3RtdCBDcmVhdGVGb3JlaWduVGFibGVTdG10CiAJCUNyZWF0ZUFzc2VydFN0bXQgQ3JlYXRlVHJh bnNmb3JtU3RtdCBDcmVhdGVUcmlnU3RtdCBDcmVhdGVFdmVudFRyaWdTdG10CiAJCUNyZWF0ZVVz ZXJTdG10IENyZWF0ZVVzZXJNYXBwaW5nU3RtdCBDcmVhdGVSb2xlU3RtdCBDcmVhdGVQb2xpY3lT dG10CiAJCUNyZWF0ZWRiU3RtdCBEZWNsYXJlQ3Vyc29yU3RtdCBEZWZpbmVTdG10IERlbGV0ZVN0 bXQgRGlzY2FyZFN0bXQgRG9TdG10CkBAIC0yNjgsNyArMjY4LDcgQEAgc3RhdGljIE5vZGUgKm1h a2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUg KnF1ZXJ5KTsKIAkJRHJvcFRyYW5zZm9ybVN0bXQKIAkJRHJvcFVzZXJNYXBwaW5nU3RtdCBFeHBs YWluU3RtdCBGZXRjaFN0bXQKIAkJR3JhbnRTdG10IEdyYW50Um9sZVN0bXQgSW1wb3J0Rm9yZWln blNjaGVtYVN0bXQgSW5kZXhTdG10IEluc2VydFN0bXQKLQkJTGlzdGVuU3RtdCBMb2FkU3RtdCBM b2NrU3RtdCBOb3RpZnlTdG10IEV4cGxhaW5hYmxlU3RtdCBQcmVwYXJhYmxlU3RtdAorCQlMZXRT dG10IExpc3RlblN0bXQgTG9hZFN0bXQgTG9ja1N0bXQgTm90aWZ5U3RtdCBFeHBsYWluYWJsZVN0 bXQgUHJlcGFyYWJsZVN0bXQKIAkJQ3JlYXRlRnVuY3Rpb25TdG10IEFsdGVyRnVuY3Rpb25TdG10 IFJlaW5kZXhTdG10IFJlbW92ZUFnZ3JTdG10CiAJCVJlbW92ZUZ1bmNTdG10IFJlbW92ZU9wZXJT dG10IFJlbmFtZVN0bXQgUmV2b2tlU3RtdCBSZXZva2VSb2xlU3RtdAogCQlSdWxlQWN0aW9uU3Rt dCBSdWxlQWN0aW9uU3RtdE9yRW1wdHkgUnVsZVN0bXQKQEAgLTQwMCw2ICs0MDAsNyBAQCBzdGF0 aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxp YXNlcywgTm9kZSAqcXVlcnkpOwogCQkJCVRyaWdnZXJUcmFuc2l0aW9ucyBUcmlnZ2VyUmVmZXJl bmNpbmcKIAkJCQlwdWJsaWNhdGlvbl9uYW1lX2xpc3QKIAkJCQl2YWN1dW1fcmVsYXRpb25fbGlz dCBvcHRfdmFjdXVtX3JlbGF0aW9uX2xpc3QKKwkJCQlsZXRfdGFyZ2V0CiAKICV0eXBlIDxsaXN0 Pglncm91cF9ieV9saXN0CiAldHlwZSA8bm9kZT4JZ3JvdXBfYnlfaXRlbSBlbXB0eV9ncm91cGlu Z19zZXQgcm9sbHVwX2NsYXVzZSBjdWJlX2NsYXVzZQpAQCAtNTg0LDYgKzU4NSw3IEBAIHN0YXRp YyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlh c2VzLCBOb2RlICpxdWVyeSk7CiAldHlwZSA8bm9kZT4JCXBhcnRib3VuZF9kYXR1bSBQYXJ0aXRp b25SYW5nZURhdHVtCiAldHlwZSA8bGlzdD4JCWhhc2hfcGFydGJvdW5kIHBhcnRib3VuZF9kYXR1 bV9saXN0IHJhbmdlX2RhdHVtX2xpc3QKICV0eXBlIDxkZWZlbHQ+CQloYXNoX3BhcnRib3VuZF9l bGVtCisldHlwZSA8bm9kZT4JCW9wdFNjaGVtYVZhckRlZkV4cHIKIAogLyoKICAqIE5vbi1rZXl3 b3JkIHRva2VuIHR5cGVzLiAgVGhlc2UgYXJlIGhhcmQtd2lyZWQgaW50byB0aGUgImZsZXgiIGxl eGVyLgpAQCAtNjQ5LDcgKzY1MSw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1Nl bGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJS0VZCiAK IAlMQUJFTCBMQU5HVUFHRSBMQVJHRV9QIExBU1RfUCBMQVRFUkFMX1AKLQlMRUFESU5HIExFQUtQ Uk9PRiBMRUFTVCBMRUZUIExFVkVMIExJS0UgTElNSVQgTElTVEVOIExPQUQgTE9DQUwKKwlMRUFE SU5HIExFQUtQUk9PRiBMRUFTVCBMRUZUIExFVCBMRVZFTCBMSUtFIExJTUlUIExJU1RFTiBMT0FE IExPQ0FMCiAJTE9DQUxUSU1FIExPQ0FMVElNRVNUQU1QIExPQ0FUSU9OIExPQ0tfUCBMT0NLRUQg TE9HR0VECiAKIAlNQVBQSU5HIE1BVENIIE1BVEVSSUFMSVpFRCBNQVhWQUxVRSBNRVRIT0QgTUlO VVRFX1AgTUlOVkFMVUUgTU9ERSBNT05USF9QIE1PVkUKQEAgLTY4Nyw4ICs2ODksOCBAQCBzdGF0 aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxp YXNlcywgTm9kZSAqcXVlcnkpOwogCVVOQk9VTkRFRCBVTkNPTU1JVFRFRCBVTkVOQ1JZUFRFRCBV TklPTiBVTklRVUUgVU5LTk9XTiBVTkxJU1RFTiBVTkxPR0dFRAogCVVOVElMIFVQREFURSBVU0VS IFVTSU5HCiAKLQlWQUNVVU0gVkFMSUQgVkFMSURBVEUgVkFMSURBVE9SIFZBTFVFX1AgVkFMVUVT IFZBUkNIQVIgVkFSSUFESUMgVkFSWUlORwotCVZFUkJPU0UgVkVSU0lPTl9QIFZJRVcgVklFV1Mg Vk9MQVRJTEUKKwlWQUNVVU0gVkFMSUQgVkFMSURBVEUgVkFMSURBVE9SIFZBTFVFX1AgVkFMVUVT IFZBUkNIQVIgVkFSSUFCTEUgVkFSSUFCTEVTCisJVkFSSUFESUMgVkFSWUlORyBWRVJCT1NFIFZF UlNJT05fUCBWSUVXIFZJRVdTIFZPTEFUSUxFCiAKIAlXSEVOIFdIRVJFIFdISVRFU1BBQ0VfUCBX SU5ET1cgV0lUSCBXSVRISU4gV0lUSE9VVCBXT1JLIFdSQVBQRVIgV1JJVEUKIApAQCAtODc4LDYg Kzg4MCw3IEBAIHN0bXQgOgogCQkJfCBDcmVhdGVQb2xpY3lTdG10CiAJCQl8IENyZWF0ZVBMYW5n U3RtdAogCQkJfCBDcmVhdGVTY2hlbWFTdG10CisJCQl8IENyZWF0ZVNjaGVtYVZhclN0bXQKIAkJ CXwgQ3JlYXRlU2VxU3RtdAogCQkJfCBDcmVhdGVTdG10CiAJCQl8IENyZWF0ZVN1YnNjcmlwdGlv blN0bXQKQEAgLTkxNyw2ICs5MjAsNyBAQCBzdG10IDoKIAkJCXwgSW1wb3J0Rm9yZWlnblNjaGVt YVN0bXQKIAkJCXwgSW5kZXhTdG10CiAJCQl8IEluc2VydFN0bXQKKwkJCXwgTGV0U3RtdAogCQkJ fCBMaXN0ZW5TdG10CiAJCQl8IFJlZnJlc2hNYXRWaWV3U3RtdAogCQkJfCBMb2FkU3RtdApAQCAt MTgwOCw3ICsxODEyLDEyIEBAIERpc2NhcmRTdG10OgogCQkJCQluLT50YXJnZXQgPSBESVNDQVJE X1NFUVVFTkNFUzsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KLQorCQkJfCBESVNDQVJE IFZBUklBQkxFUworCQkJCXsKKwkJCQkJRGlzY2FyZFN0bXQgKm4gPSBtYWtlTm9kZShEaXNjYXJk U3RtdCk7CisJCQkJCW4tPnRhcmdldCA9IERJU0NBUkRfVkFSSUFCTEVTOworCQkJCQkkJCA9IChO b2RlICopIG47CisJCQkJfQogCQk7CiAKIApAQCAtNDQ3OSw2ICs0NDg4LDQyIEBAIGNyZWF0ZV9l eHRlbnNpb25fb3B0X2l0ZW06CiAJCQkJfQogCQk7CiAKKy8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgor ICoKKyAqCQlRVUVSWSA6CisgKgkJCQlDUkVBVEUgVkFSSUFCTEUgdmFybmFtZSBbQVNdIHR5cGUK KyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK0NyZWF0ZVNjaGVtYVZhclN0bXQ6CisJCQlD UkVBVEUgT3B0VGVtcCBWQVJJQUJMRSBxdWFsaWZpZWRfbmFtZSBvcHRfYXMgVHlwZW5hbWUgb3B0 U2NoZW1hVmFyRGVmRXhwcgorCQkJCXsKKwkJCQkJQ3JlYXRlU2NoZW1hVmFyU3RtdCAqbiA9IG1h a2VOb2RlKENyZWF0ZVNjaGVtYVZhclN0bXQpOworCQkJCQkkNC0+cmVscGVyc2lzdGVuY2UgPSAk MjsKKwkJCQkJbi0+dmFyaWFibGUgPSAkNDsKKwkJCQkJbi0+dHlwZU5hbWUgPSAkNjsKKwkJCQkJ bi0+ZGVmZXhwciA9ICQ3OworCQkJCQluLT5pZl9ub3RfZXhpc3RzID0gZmFsc2U7CisJCQkJCSQk ID0gKE5vZGUgKikgbjsKKwkJCQl9CisJCQl8IENSRUFURSBPcHRUZW1wIFZBUklBQkxFIElGX1Ag Tk9UIEVYSVNUUyBxdWFsaWZpZWRfbmFtZSBvcHRfYXMgVHlwZW5hbWUgb3B0U2NoZW1hVmFyRGVm RXhwcgorCQkJCXsKKwkJCQkJQ3JlYXRlU2NoZW1hVmFyU3RtdCAqbiA9IG1ha2VOb2RlKENyZWF0 ZVNjaGVtYVZhclN0bXQpOworCQkJCQkkNy0+cmVscGVyc2lzdGVuY2UgPSAkMjsKKwkJCQkJbi0+ dmFyaWFibGUgPSAkNzsKKwkJCQkJbi0+dHlwZU5hbWUgPSAkOTsKKwkJCQkJbi0+ZGVmZXhwciA9 ICQxMDsKKwkJCQkJbi0+aWZfbm90X2V4aXN0cyA9IHRydWU7CisJCQkJCSQkID0gKE5vZGUgKikg bjsKKwkJCQl9CisJCTsKKworb3B0U2NoZW1hVmFyRGVmRXhwcjogREVGQVVMVCBiX2V4cHIJCQkJ CQkJeyAkJCA9ICQyOyB9CisJCQl8IC8qIEVNUFRZICovCQkJCQkJCQkJeyAkJCA9IE5VTEw7IH0K KwkJOworCisKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICogQUxURVIgRVhURU5TSU9O IG5hbWUgVVBEQVRFIFsgVE8gdmVyc2lvbiBdCkBAIC02MzM1LDYgKzYzODAsNyBAQCBkcm9wX3R5 cGVfYW55X25hbWU6CiAJCQl8IFRFWFRfUCBTRUFSQ0ggRElDVElPTkFSWQkJCQl7ICQkID0gT0JK RUNUX1RTRElDVElPTkFSWTsgfQogCQkJfCBURVhUX1AgU0VBUkNIIFRFTVBMQVRFCQkJCXsgJCQg PSBPQkpFQ1RfVFNURU1QTEFURTsgfQogCQkJfCBURVhUX1AgU0VBUkNIIENPTkZJR1VSQVRJT04J CQl7ICQkID0gT0JKRUNUX1RTQ09ORklHVVJBVElPTjsgfQorCQkJfCBWQVJJQUJMRQkJCQkJCQkJ eyAkJCA9IE9CSkVDVF9WQVJJQUJMRTsgfQogCQk7CiAKIC8qIG9iamVjdCB0eXBlcyB0YWtpbmcg bmFtZV9saXN0ICovCkBAIC02NjA0LDYgKzY2NTAsNyBAQCBjb21tZW50X3R5cGVfYW55X25hbWU6 CiAJCQl8IFRFWFRfUCBTRUFSQ0ggRElDVElPTkFSWQkJCXsgJCQgPSBPQkpFQ1RfVFNESUNUSU9O QVJZOyB9CiAJCQl8IFRFWFRfUCBTRUFSQ0ggUEFSU0VSCQkJCXsgJCQgPSBPQkpFQ1RfVFNQQVJT RVI7IH0KIAkJCXwgVEVYVF9QIFNFQVJDSCBURU1QTEFURQkJCXsgJCQgPSBPQkpFQ1RfVFNURU1Q TEFURTsgfQorCQkJfCBWQVJJQUJMRQkJCQkJCQl7ICQkID0gT0JKRUNUX1ZBUklBQkxFOyB9CiAJ CTsKIAogLyogb2JqZWN0IHR5cGVzIHRha2luZyBuYW1lICovCkBAIC02NzQyLDYgKzY3ODksNyBA QCBzZWN1cml0eV9sYWJlbF90eXBlX2FueV9uYW1lOgogCQkJfCBUQUJMRQkJCQkJCQkJeyAkJCA9 IE9CSkVDVF9UQUJMRTsgfQogCQkJfCBWSUVXCQkJCQkJCQl7ICQkID0gT0JKRUNUX1ZJRVc7IH0K IAkJCXwgTUFURVJJQUxJWkVEIFZJRVcJCQkJCXsgJCQgPSBPQkpFQ1RfTUFUVklFVzsgfQorCQkJ fCBWQVJJQUJMRQkJCQkJCQl7ICQkID0gT0JKRUNUX1ZBUklBQkxFOyB9CiAJCTsKIAogLyogb2Jq ZWN0IHR5cGVzIHRha2luZyBuYW1lICovCkBAIC03MTYzLDYgKzcyMTEsMTQgQEAgcHJpdmlsZWdl X3RhcmdldDoKIAkJCQkJbi0+b2JqcyA9ICQyOwogCQkJCQkkJCA9IG47CiAJCQkJfQorCQkJfCBW QVJJQUJMRSBxdWFsaWZpZWRfbmFtZV9saXN0CisJCQkJeworCQkJCQlQcml2VGFyZ2V0ICpuID0g KFByaXZUYXJnZXQgKikgcGFsbG9jKHNpemVvZihQcml2VGFyZ2V0KSk7CisJCQkJCW4tPnRhcmd0 eXBlID0gQUNMX1RBUkdFVF9PQkpFQ1Q7CisJCQkJCW4tPm9ianR5cGUgPSBPQkpFQ1RfVkFSSUFC TEU7CisJCQkJCW4tPm9ianMgPSAkMjsKKwkJCQkJJCQgPSBuOworCQkJCX0KIAkJCXwgQUxMIFRB QkxFUyBJTl9QIFNDSEVNQSBuYW1lX2xpc3QKIAkJCQl7CiAJCQkJCVByaXZUYXJnZXQgKm4gPSAo UHJpdlRhcmdldCAqKSBwYWxsb2Moc2l6ZW9mKFByaXZUYXJnZXQpKTsKQEAgLTcyMDMsNiArNzI1 OSwxNCBAQCBwcml2aWxlZ2VfdGFyZ2V0OgogCQkJCQluLT5vYmpzID0gJDU7CiAJCQkJCSQkID0g bjsKIAkJCQl9CisJCQl8IEFMTCBWQVJJQUJMRVMgSU5fUCBTQ0hFTUEgbmFtZV9saXN0CisJCQkJ eworCQkJCQlQcml2VGFyZ2V0ICpuID0gKFByaXZUYXJnZXQgKikgcGFsbG9jKHNpemVvZihQcml2 VGFyZ2V0KSk7CisJCQkJCW4tPnRhcmd0eXBlID0gQUNMX1RBUkdFVF9BTExfSU5fU0NIRU1BOwor CQkJCQluLT5vYmp0eXBlID0gT0JKRUNUX1ZBUklBQkxFOworCQkJCQluLT5vYmpzID0gJDU7CisJ CQkJCSQkID0gbjsKKwkJCQl9CiAJCTsKIAogCkBAIC03MzYzLDYgKzc0MjcsNyBAQCBkZWZhY2xf cHJpdmlsZWdlX3RhcmdldDoKIAkJCXwgU0VRVUVOQ0VTCQl7ICQkID0gT0JKRUNUX1NFUVVFTkNF OyB9CiAJCQl8IFRZUEVTX1AJCXsgJCQgPSBPQkpFQ1RfVFlQRTsgfQogCQkJfCBTQ0hFTUFTCQl7 ICQkID0gT0JKRUNUX1NDSEVNQTsgfQorCQkJfCBWQVJJQUJMRVMJCXsgJCQgPSBPQkpFQ1RfVkFS SUFCTEU7IH0KIAkJOwogCiAKQEAgLTg5NTksNiArOTAyNCwyNSBAQCBSZW5hbWVTdG10OiBBTFRF UiBBR0dSRUdBVEUgYWdncmVnYXRlX3dpdGhfYXJndHlwZXMgUkVOQU1FIFRPIG5hbWUKIAkJCQkJ bi0+bWlzc2luZ19vayA9IGZhbHNlOwogCQkJCQkkJCA9IChOb2RlICopbjsKIAkJCQl9CisJCQl8 IEFMVEVSIFZBUklBQkxFIGFueV9uYW1lIFJFTkFNRSBUTyBuYW1lCisJCQkJeworCQkJCQlSZW5h bWVTdG10ICpuID0gbWFrZU5vZGUoUmVuYW1lU3RtdCk7CisJCQkJCW4tPnJlbmFtZVR5cGUgPSBP QkpFQ1RfVkFSSUFCTEU7CisJCQkJCW4tPm9iamVjdCA9IChOb2RlICopICQzOworCQkJCQluLT5u ZXduYW1lID0gJDY7CisJCQkJCW4tPm1pc3Npbmdfb2sgPSBmYWxzZTsKKwkJCQkJJCQgPSAoTm9k ZSAqKW47CisJCQkJfQorCQkJfCBBTFRFUiBWQVJJQUJMRSBJRl9QIEVYSVNUUyBhbnlfbmFtZSBS RU5BTUUgVE8gbmFtZQorCQkJCXsKKwkJCQkJUmVuYW1lU3RtdCAqbiA9IG1ha2VOb2RlKFJlbmFt ZVN0bXQpOworCQkJCQluLT5yZW5hbWVUeXBlID0gT0JKRUNUX1ZBUklBQkxFOworCQkJCQluLT5v YmplY3QgPSAoTm9kZSAqKSAkNTsKKwkJCQkJbi0+bmV3bmFtZSA9ICQ4OworCQkJCQluLT5taXNz aW5nX29rID0gdHJ1ZTsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQorCiAJCTsKIAogb3B0 X2NvbHVtbjogQ09MVU1OCQkJCQkJCQkJeyAkJCA9IENPTFVNTjsgfQpAQCAtOTI3Nyw2ICs5MzYx LDI1IEBAIEFsdGVyT2JqZWN0U2NoZW1hU3RtdDoKIAkJCQkJbi0+bWlzc2luZ19vayA9IGZhbHNl OwogCQkJCQkkJCA9IChOb2RlICopbjsKIAkJCQl9CisJCQl8IEFMVEVSIFZBUklBQkxFIGFueV9u YW1lIFNFVCBTQ0hFTUEgbmFtZQorCQkJCXsKKwkJCQkJQWx0ZXJPYmplY3RTY2hlbWFTdG10ICpu ID0gbWFrZU5vZGUoQWx0ZXJPYmplY3RTY2hlbWFTdG10KTsKKwkJCQkJbi0+b2JqZWN0VHlwZSA9 IE9CSkVDVF9WQVJJQUJMRTsKKwkJCQkJbi0+b2JqZWN0ID0gKE5vZGUgKikgJDM7CisJCQkJCW4t Pm5ld3NjaGVtYSA9ICQ2OworCQkJCQluLT5taXNzaW5nX29rID0gZmFsc2U7CisJCQkJCSQkID0g KE5vZGUgKiluOworCQkJCX0KKwkJCXwgQUxURVIgVkFSSUFCTEUgSUZfUCBFWElTVFMgYW55X25h bWUgU0VUIFNDSEVNQSBuYW1lCisJCQkJeworCQkJCQlBbHRlck9iamVjdFNjaGVtYVN0bXQgKm4g PSBtYWtlTm9kZShBbHRlck9iamVjdFNjaGVtYVN0bXQpOworCQkJCQluLT5vYmplY3RUeXBlID0g T0JKRUNUX1ZBUklBQkxFOworCQkJCQluLT5vYmplY3QgPSAoTm9kZSAqKSAkNTsKKwkJCQkJbi0+ bmV3c2NoZW1hID0gJDg7CisJCQkJCW4tPm1pc3Npbmdfb2sgPSB0cnVlOworCQkJCQkkJCA9IChO b2RlICopbjsKKwkJCQl9CisKIAkJOwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTk1MTIs NiArOTYxNSwxNCBAQCBBbHRlck93bmVyU3RtdDogQUxURVIgQUdHUkVHQVRFIGFnZ3JlZ2F0ZV93 aXRoX2FyZ3R5cGVzIE9XTkVSIFRPIFJvbGVTcGVjCiAJCQkJCW4tPm5ld293bmVyID0gJDY7CiAJ CQkJCSQkID0gKE5vZGUgKiluOwogCQkJCX0KKwkJCXwgQUxURVIgVkFSSUFCTEUgYW55X25hbWUg T1dORVIgVE8gUm9sZVNwZWMKKwkJCQl7CisJCQkJCUFsdGVyT3duZXJTdG10ICpuID0gbWFrZU5v ZGUoQWx0ZXJPd25lclN0bXQpOworCQkJCQluLT5vYmplY3RUeXBlID0gT0JKRUNUX1ZBUklBQkxF OworCQkJCQluLT5vYmplY3QgPSAoTm9kZSAqKSAkMzsKKwkJCQkJbi0+bmV3b3duZXIgPSAkNjsK KwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQogCQk7CiAKIApAQCAtMTA2OTMsNiArMTA4MDQs NyBAQCBFeHBsYWluYWJsZVN0bXQ6CiAJCQl8IENyZWF0ZU1hdFZpZXdTdG10CiAJCQl8IFJlZnJl c2hNYXRWaWV3U3RtdAogCQkJfCBFeGVjdXRlU3RtdAkJCQkJLyogYnkgZGVmYXVsdCBhbGwgYXJl ICQkPSQxICovCisJCQl8IExldFN0bXQKIAkJOwogCiBleHBsYWluX29wdGlvbl9saXN0OgpAQCAt MTA3NTAsNiArMTA4NjIsNyBAQCBQcmVwYXJhYmxlU3RtdDoKIAkJCXwgSW5zZXJ0U3RtdAogCQkJ fCBVcGRhdGVTdG10CiAJCQl8IERlbGV0ZVN0bXQJCQkJCS8qIGJ5IGRlZmF1bHQgYWxsIGFyZSAk JD0kMSAqLworCQkJfCBMZXRTdG10CiAJCTsKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC0x MTE0OCw2ICsxMTI2MSw0NCBAQCBvcHRfaG9sZDogLyogRU1QVFkgKi8JCQkJCQl7ICQkID0gMDsg fQogCQkJfCBXSVRIT1VUIEhPTEQJCQkJCXsgJCQgPSAwOyB9CiAJCTsKIAorLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqCisgKgorICoJCVFVRVJZOgorICoJCQkJTEVUIFNUQVRFTUVOVFMKKyAqCisgKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCitMZXRTdG10OglMRVQgbGV0X3RhcmdldCAnPScgYV9leHByCisJ CQkJeworCQkJCQlMZXRTdG10ICpuID0gbWFrZU5vZGUoTGV0U3RtdCk7CisJCQkJCVNlbGVjdFN0 bXQgKnNlbGVjdCA9IG1ha2VOb2RlKFNlbGVjdFN0bXQpOworCQkJCQlSZXNUYXJnZXQJKnJlcyA9 IG1ha2VOb2RlKFJlc1RhcmdldCk7CisKKwkJCQkJbi0+dGFyZ2V0ID0gJDI7CisKKwkJCQkJLyog Q3JlYXRlIHRhcmdldCBsaXN0IGZvciBpbXBsaWNpdCBxdWVyeSAqLworCQkJCQlyZXMtPm5hbWUg PSBOVUxMOworCQkJCQlyZXMtPmluZGlyZWN0aW9uID0gTklMOworCQkJCQlyZXMtPnZhbCA9IChO b2RlICopICQ0OworCQkJCQlyZXMtPmxvY2F0aW9uID0gQDQ7CisKKwkJCQkJc2VsZWN0LT50YXJn ZXRMaXN0ID0gbGlzdF9tYWtlMShyZXMpOworCQkJCQluLT5zZWxlY3RTdG10ID0gKE5vZGUgKikg c2VsZWN0OworCisJCQkJCW4tPmxvY2F0aW9uID0gQDI7CisKKwkJCQkJJCQgPSAoTm9kZSAqKSBu OworCQkJCX0KKwkJOworCitsZXRfdGFyZ2V0OgorCQkJQ29sSWQgb3B0X2luZGlyZWN0aW9uCisJ CQkJeworCQkJCQkkJCA9IGxpc3RfbWFrZTEobWFrZVN0cmluZygkMSkpOworCQkJCQlpZiAoJDIp CisJCQkJCQkgICQkID0gbGlzdF9jb25jYXQoJCQsCisJCQkJCQkJCQkJICAgY2hlY2tfaW5kaXJl Y3Rpb24oJDIsIHl5c2Nhbm5lcikpOworCQkJCX0KKwogLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAg KgogICoJCVFVRVJZOgpAQCAtMTUxMjcsNiArMTUyNzgsNyBAQCB1bnJlc2VydmVkX2tleXdvcmQ6 CiAJCQl8IExBUkdFX1AKIAkJCXwgTEFTVF9QCiAJCQl8IExFQUtQUk9PRgorCQkJfCBMRVQKIAkJ CXwgTEVWRUwKIAkJCXwgTElTVEVOCiAJCQl8IExPQUQKQEAgLTE1Mjc1LDYgKzE1NDI3LDggQEAg dW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBWQUxJREFURQogCQkJfCBWQUxJREFUT1IKIAkJCXwg VkFMVUVfUAorCQkJfCBWQVJJQUJMRQorCQkJfCBWQVJJQUJMRVMKIAkJCXwgVkFSWUlORwogCQkJ fCBWRVJTSU9OX1AKIAkJCXwgVklFVwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX2FnZy5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jCmluZGV4IDYxNzI3ZTFk NzEuLjY4MjM2MTJmYmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cu YworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMKQEAgLTM0OSw2ICszNDksNyBA QCBjaGVja19hZ2dsZXZlbHNfYW5kX2NvbnN0cmFpbnRzKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9k ZSAqZXhwcikKIAkJCUFzc2VydChmYWxzZSk7CQkvKiBjYW4ndCBoYXBwZW4gKi8KIAkJCWJyZWFr OwogCQljYXNlIEVYUFJfS0lORF9PVEhFUjoKKwkJY2FzZSBFWFBSX0tJTkRfTEVUOgogCiAJCQkv KgogCQkJICogQWNjZXB0IGFnZ3JlZ2F0ZS9ncm91cGluZyBoZXJlOyBjYWxsZXIgbXVzdCB0aHJv dyBlcnJvciBpZgpAQCAtNDY1LDYgKzQ2Niw3IEBAIGNoZWNrX2FnZ2xldmVsc19hbmRfY29uc3Ry YWludHMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpleHByKQogCQkJYnJlYWs7CiAJCWNhc2Ug RVhQUl9LSU5EX0NPTFVNTl9ERUZBVUxUOgogCQljYXNlIEVYUFJfS0lORF9GVU5DVElPTl9ERUZB VUxUOgorCQljYXNlIEVYUFJfS0lORF9WQVJJQUJMRV9ERUZBVUxUOgogCiAJCQlpZiAoaXNBZ2cp CiAJCQkJZXJyID0gXygiYWdncmVnYXRlIGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gREVG QVVMVCBleHByZXNzaW9ucyIpOwpAQCAtODc5LDYgKzg4MSw3IEBAIHRyYW5zZm9ybVdpbmRvd0Z1 bmNDYWxsKFBhcnNlU3RhdGUgKnBzdGF0ZSwgV2luZG93RnVuYyAqd2Z1bmMsCiAJCQlicmVhazsK IAkJY2FzZSBFWFBSX0tJTkRfQ09MVU1OX0RFRkFVTFQ6CiAJCWNhc2UgRVhQUl9LSU5EX0ZVTkNU SU9OX0RFRkFVTFQ6CisJCWNhc2UgRVhQUl9LSU5EX1ZBUklBQkxFX0RFRkFVTFQ6CiAJCQllcnIg PSBfKCJ3aW5kb3cgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBERUZBVUxUIGV4cHJlc3Np b25zIik7CiAJCQlicmVhazsKIAkJY2FzZSBFWFBSX0tJTkRfSU5ERVhfRVhQUkVTU0lPTjoKQEAg LTkwMiw2ICs5MDUsOCBAQCB0cmFuc2Zvcm1XaW5kb3dGdW5jQ2FsbChQYXJzZVN0YXRlICpwc3Rh dGUsIFdpbmRvd0Z1bmMgKndmdW5jLAogCQljYXNlIEVYUFJfS0lORF9DQUxMX0FSR1VNRU5UOgog CQkJZXJyID0gXygid2luZG93IGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gQ0FMTCBhcmd1 bWVudHMiKTsKIAkJCWJyZWFrOworCQljYXNlIEVYUFJfS0lORF9MRVQ6CisJCQllcnIgPSBfKCJ3 aW5kb3cgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBMRVQgc3RhdGVtZW50Iik7CiAKIAkJ CS8qCiAJCQkgKiBUaGVyZSBpcyBpbnRlbnRpb25hbGx5IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZSwg c28gdGhhdCB0aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMg Yi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCmluZGV4IDM4NWU1NGE5YjYuLmJjZGRh MGZiNGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKKysrIGIv c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwpAQCAtMTYsNiArMTYsNyBAQAogI2luY2x1 ZGUgInBvc3RncmVzLmgiCiAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKKyNpbmNsdWRl ICJjYXRhbG9nL3BnX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGJjb21tYW5kcy5o IgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgpA QCAtMzcsNiArMzgsNyBAQAogI2luY2x1ZGUgInV0aWxzL2RhdGUuaCIKICNpbmNsdWRlICJ1dGls cy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKKyNpbmNsdWRlICJ1 dGlscy90eXBjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3htbC5oIgogCiAKQEAgLTExNiw2ICsx MTgsOSBAQCBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtWG1sU2VyaWFsaXplKFBhcnNlU3RhdGUgKnBz dGF0ZSwgWG1sU2VyaWFsaXplICp4cyk7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtQm9vbGVhblRl c3QoUGFyc2VTdGF0ZSAqcHN0YXRlLCBCb29sZWFuVGVzdCAqYik7CiBzdGF0aWMgTm9kZSAqdHJh bnNmb3JtQ3VycmVudE9mRXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIEN1cnJlbnRPZkV4cHIgKmNl eHByKTsKIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1Db2x1bW5SZWYoUGFyc2VTdGF0ZSAqcHN0YXRl LCBDb2x1bW5SZWYgKmNyZWYpOworc3RhdGljIE5vZGUgKm1ha2VQYXJhbVNjaGVtYVZhcmlhYmxl KFBhcnNlU3RhdGUgKnBzdGF0ZSwKKwkJCQkJCSAgT2lkIHZhcmlkLCBPaWQgdHlwaWQsIGludDMy IHR5cG1vZCwKKwkJCQkJCSAgY2hhciAqYXR0cm5hbWUsIGludCBsb2NhdGlvbik7CiBzdGF0aWMg Tm9kZSAqdHJhbnNmb3JtV2hvbGVSb3dSZWYoUGFyc2VTdGF0ZSAqcHN0YXRlLCBSYW5nZVRibEVu dHJ5ICpydGUsCiAJCQkJCSBpbnQgbG9jYXRpb24pOwogc3RhdGljIE5vZGUgKnRyYW5zZm9ybUlu ZGlyZWN0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQV9JbmRpcmVjdGlvbiAqaW5kKTsKQEAgLTUx Miw2ICs1MTcsMTAgQEAgdHJhbnNmb3JtQ29sdW1uUmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29s dW1uUmVmICpjcmVmKQogCWNoYXIJICAgKm5zcG5hbWUgPSBOVUxMOwogCWNoYXIJICAgKnJlbG5h bWUgPSBOVUxMOwogCWNoYXIJICAgKmNvbG5hbWUgPSBOVUxMOworCU9pZAkJCXZhcmlkID0gSW52 YWxpZE9pZDsKKwljaGFyCSAgICphdHRybmFtZSA9IE5VTEw7CisJYm9vbAkJbm90X3VuaXF1ZTsK KwogCVJhbmdlVGJsRW50cnkgKnJ0ZTsKIAlpbnQJCQlsZXZlbHNfdXA7CiAJZW51bQpAQCAtNzQ5 LDYgKzc1OCwxNSBAQCB0cmFuc2Zvcm1Db2x1bW5SZWYoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDb2x1 bW5SZWYgKmNyZWYpCiAJCQlicmVhazsKIAl9CiAKKwl2YXJpZCA9IGlkZW50aWZ5X3ZhcmlhYmxl KGNyZWYtPmZpZWxkcywgJmF0dHJuYW1lLCAmbm90X3VuaXF1ZSk7CisKKwlpZiAobm90X3VuaXF1 ZSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0FNQklHVU9VU19QQVJB TUVURVIpLAorCQkJCSBlcnJtc2coInNjaGVtYSB2YXJpYWJsZSByZWZlcmVuY2UgXCIlc1wiIGlz IGFtYmlndW91cyIsCisJCQkJCQlOYW1lTGlzdFRvU3RyaW5nKGNyZWYtPmZpZWxkcykpLAorCQkJ CSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBjcmVmLT5sb2NhdGlvbikpKTsKKwogCS8qCiAJ ICogTm93IGdpdmUgdGhlIFBvc3RQYXJzZUNvbHVtblJlZkhvb2ssIGlmIGFueSwgYSBjaGFuY2Uu ICBXZSBwYXNzIHRoZQogCSAqIHRyYW5zbGF0aW9uLXNvLWZhciBzbyB0aGF0IGl0IGNhbiB0aHJv dyBhbiBlcnJvciBpZiBpdCB3aXNoZXMgaW4gdGhlCkBAIC03NzMsNiArNzkxLDcxIEBAIHRyYW5z Zm9ybUNvbHVtblJlZihQYXJzZVN0YXRlICpwc3RhdGUsIENvbHVtblJlZiAqY3JlZikKIAkJCQkJ IHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGNyZWYtPmxvY2F0aW9uKSkpOwogCX0KIAorCWlm IChPaWRJc1ZhbGlkKHZhcmlkKSkKKwl7CisJCU9pZAkJdHlwaWQ7CisJCWludDMyCXR5cG1vZDsK KworCQlnZXRfc2NoZW1hX3ZhcmlhYmxlX3R5cGVfdHlwbW9kKHZhcmlkLCAmdHlwaWQsICZ0eXBt b2QpOworCisJCWlmIChub2RlICE9IE5VTEwpCisJCXsKKwkJCS8qCisJCQkgKiBzb21lIGNvbGxp c2lvbiBjYW4gYmUgc29sdmVkIHNpbXBseSBoZXJlIHRvIHJlZHVjZSBlcnJvcnMKKwkJCSAqIGJh c2VkIG9uIHNpbXBseSBleGlzdGVuY2Ugb2Ygc29tZSB2YXJpYWJsZXMuIE9mdGVuIGVycm9yCisJ CQkgKiBjYW4gYmUgdXNpbmcgYWxpYXMgc2FtZSBsaWtlIHZhcmlhYmxlIG5hbWUuIEluIHRoaXMg Y2FzZSwKKwkJCSAqIHdoZW4gd2UgZm91bmQgY29sdW1uIHJlZmVyZW5jZSwgYW5kIHdlIGZvdW5k IHJlZmVyZW5jZSB0bworCQkJICogcG9zc2libGUgY29tcG9zaXRlIHZhcmlhYmxlLCBidXQgdGhl IHZhcmlhYmxlIGlzIG5vdCBjb21wb3NpdGUsCisJCQkgKiB0aGVuIHdlIGNhbiBpZ25vcmUgdGhl IHZhcmlhYmxlIGFzIHNpbXBseSBpbXByb3BlciwgYW5kIHdlCisJCQkgKiB1c2UgY29sdW1uIHJl ZmVyZW5jZSBvbmx5LgorCQkJICovCisJCQlpZiAoYXR0cm5hbWUpCisJCQl7CisJCQkJaWYgKHR5 cGVfaXNfcm93dHlwZSh0eXBpZCkpCisJCQkJeworCQkJCQlUdXBsZURlc2MJCXR1cGRlc2M7CisJ CQkJCWJvb2wJCQlmb3VuZCA9IGZhbHNlOworCQkJCQlpbnQJCQlpOworCisJCQkJCS8qIHNsb3cg cGFydCwgSSBob3BlIGl0IHdpbGwgbm90IGJlIHRvIG9mdGVuICovCisJCQkJCXR1cGRlc2MgPSBs b29rdXBfcm93dHlwZV90dXBkZXNjKHR5cGlkLCB0eXBtb2QpOworCQkJCQlmb3IgKGkgPSAwOyBp IDwgdHVwZGVzYy0+bmF0dHM7IGkrKykKKwkJCQkJeworCQkJCQkJaWYgKG5hbWVzdHJjbXAoJihU dXBsZURlc2NBdHRyKHR1cGRlc2MsIGkpLT5hdHRuYW1lKSwgYXR0cm5hbWUpID09IDAgJiYKKwkJ CQkJCQkJIVR1cGxlRGVzY0F0dHIodHVwZGVzYywgaSktPmF0dGlzZHJvcHBlZCkKKwkJCQkJCXsK KwkJCQkJCQlmb3VuZCA9IHRydWU7CisJCQkJCQkJYnJlYWs7CisJCQkJCQl9CisJCQkJCX0KKwor CQkJCQlGcmVlVHVwbGVEZXNjKHR1cGRlc2MpOworCisJCQkJCS8qIHRoZXJlIGFyZSBub3QgY29t cG9zaXRlIHZhcmlhYmxlIHdpdGggdGhpcyBmaWVsZCAqLworCQkJCQlpZiAoIWZvdW5kKQorCQkJ CQkJdmFyaWQgPSBJbnZhbGlkT2lkOworCQkJCX0KKwkJCQllbHNlCisJCQkJCS8qIHRoZXJlIGFy ZSBub3QgY29tcG9zaXRlIHZhcmlhYmxlIHdpdGggdGhpcyBuYW1lICovCisJCQkJCXZhcmlkID0g SW52YWxpZE9pZDsKKwkJCX0KKworCQkJLyogUmFpc2UgZXJyb3IgaWYgdmFyaWQgaXMgc3RpbGwg dmFsaWQuIEl0IHNob3VsZCBiZSByZWFsbHkgYW1pZ29udW91cyAqLworCQkJaWYgKE9pZElzVmFs aWQodmFyaWQpKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0FN QklHVU9VU19DT0xVTU4pLAorCQkJCQkJIGVycm1zZygiY29sdW1uIHJlZmVyZW5jZSBcIiVzXCIg aXMgYW1iaWd1b3VzIiwKKwkJCQkJCQkJTmFtZUxpc3RUb1N0cmluZyhjcmVmLT5maWVsZHMpKSwK KwkJCQkJCSBlcnJkZXRhaWwoIlRoZSBxdWFsaWZpZWQgaWRlbnRpZmllciBjYW4gYmUgY29sdW1u IHJlZmVyZW5jZSBvciBzY2hlbWEgdmFyaWFibGUgcmVmZXJlbmNlIiksCisJCQkJCQkgcGFyc2Vy X2VycnBvc2l0aW9uKHBzdGF0ZSwgY3JlZi0+bG9jYXRpb24pKSk7CisJCX0KKworCQlpZiAoT2lk SXNWYWxpZCh2YXJpZCkpCisJCQlub2RlID0gbWFrZVBhcmFtU2NoZW1hVmFyaWFibGUocHN0YXRl LAorCQkJCQkJCQkJCQl2YXJpZCwgdHlwaWQsIHR5cG1vZCwKKwkJCQkJCQkJCQkJYXR0cm5hbWUs IGNyZWYtPmxvY2F0aW9uKTsKKwl9CisKIAkvKgogCSAqIFRocm93IGVycm9yIGlmIG5vIHRyYW5z bGF0aW9uIGZvdW5kLgogCSAqLwpAQCAtODA3LDYgKzg5MCw1OSBAQCB0cmFuc2Zvcm1Db2x1bW5S ZWYoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDb2x1bW5SZWYgKmNyZWYpCiAJcmV0dXJuIG5vZGU7CiB9 CiAKKy8qCisgKiBHZW5lcmF0ZSBwYXJhbSB2YXJpYWJsZSBmb3IgcmVmZXJlbmNlIHRvIHNjaGVt YSB2YXJpYWJsZQorICovCitzdGF0aWMgTm9kZSAqCittYWtlUGFyYW1TY2hlbWFWYXJpYWJsZShQ YXJzZVN0YXRlICpwc3RhdGUsIE9pZCB2YXJpZCwgT2lkIHR5cGlkLCBpbnQzMiB0eXBtb2QsIGNo YXIgKmF0dHJuYW1lLCBpbnQgbG9jYXRpb24pCit7CisJUGFyYW0JICAgKnBhcmFtOworCisJcGFy YW0gPSBtYWtlTm9kZShQYXJhbSk7CisKKwlwYXJhbS0+cGFyYW1raW5kID0gUEFSQU1fU0NIRU1B X1ZBUklBQkxFOworCXBhcmFtLT5wYXJhbWlkID0gdmFyaWQ7CisJcGFyYW0tPnBhcmFtdHlwZSA9 IHR5cGlkOworCXBhcmFtLT5wYXJhbXR5cG1vZCA9IHR5cG1vZDsKKworCWlmIChhdHRybmFtZSAh PSBOVUxMKQorCXsKKwkJVHVwbGVEZXNjCQl0dXBkZXNjOworCQlpbnQJCWk7CisKKwkJdHVwZGVz YyA9IGxvb2t1cF9yb3d0eXBlX3R1cGRlc2ModHlwaWQsIHR5cG1vZCk7CisKKwkJZm9yIChpID0g MDsgaSA8IHR1cGRlc2MtPm5hdHRzOyBpKyspCisJCXsKKwkJCUZvcm1fcGdfYXR0cmlidXRlIGF0 dCA9IFR1cGxlRGVzY0F0dHIodHVwZGVzYywgaSk7CisKKwkJCWlmIChzdHJjbXAoYXR0cm5hbWUs IE5hbWVTdHIoYXR0LT5hdHRuYW1lKSkgPT0gMCAmJgorCQkJCSFhdHQtPmF0dGlzZHJvcHBlZCkK KwkJCXsKKwkJCQkvKiBTdWNjZXNzLCBzbyBnZW5lcmF0ZSBhIEZpZWxkU2VsZWN0IGV4cHJlc3Np b24gKi8KKwkJCQlGaWVsZFNlbGVjdCAqZnNlbGVjdCA9IG1ha2VOb2RlKEZpZWxkU2VsZWN0KTsK KworCQkJCWZzZWxlY3QtPmFyZyA9IChFeHByICopIHBhcmFtOworCQkJCWZzZWxlY3QtPmZpZWxk bnVtID0gaSArIDE7CisJCQkJZnNlbGVjdC0+cmVzdWx0dHlwZSA9IGF0dC0+YXR0dHlwaWQ7CisJ CQkJZnNlbGVjdC0+cmVzdWx0dHlwbW9kID0gYXR0LT5hdHR0eXBtb2Q7CisJCQkJLyogc2F2ZSBh dHRyaWJ1dGUncyBjb2xsYXRpb24gZm9yIHBhcnNlX2NvbGxhdGUuYyAqLworCQkJCWZzZWxlY3Qt PnJlc3VsdGNvbGxpZCA9IGF0dC0+YXR0Y29sbGF0aW9uOworCisJCQkJUmVsZWFzZVR1cGxlRGVz Yyh0dXBkZXNjKTsKKwkJCQlyZXR1cm4gKE5vZGUgKikgZnNlbGVjdDsKKwkJCX0KKwkJfQorCisJ CWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfQ09MVU1OKSwK KwkJCQkgZXJybXNnKCJjb3VsZCBub3QgaWRlbnRpZnkgY29sdW1uIFwiJXNcIiBpbiB2YXJpYWJs ZSIsIGF0dHJuYW1lKSwKKwkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgbG9jYXRpb24p KSk7CisJfQorCisJcmV0dXJuIChOb2RlICopIHBhcmFtOworfQorCiBzdGF0aWMgTm9kZSAqCiB0 cmFuc2Zvcm1QYXJhbVJlZihQYXJzZVN0YXRlICpwc3RhdGUsIFBhcmFtUmVmICpwcmVmKQogewpA QCAtMTgxOCw2ICsxOTU0LDcgQEAgdHJhbnNmb3JtU3ViTGluayhQYXJzZVN0YXRlICpwc3RhdGUs IFN1YkxpbmsgKnN1YmxpbmspCiAJCWNhc2UgRVhQUl9LSU5EX1JFVFVSTklORzoKIAkJY2FzZSBF WFBSX0tJTkRfVkFMVUVTOgogCQljYXNlIEVYUFJfS0lORF9WQUxVRVNfU0lOR0xFOgorCQljYXNl IEVYUFJfS0lORF9MRVQ6CiAJCQkvKiBva2F5ICovCiAJCQlicmVhazsKIAkJY2FzZSBFWFBSX0tJ TkRfQ0hFQ0tfQ09OU1RSQUlOVDoKQEAgLTE4MjYsNiArMTk2Myw3IEBAIHRyYW5zZm9ybVN1Ykxp bmsoUGFyc2VTdGF0ZSAqcHN0YXRlLCBTdWJMaW5rICpzdWJsaW5rKQogCQkJYnJlYWs7CiAJCWNh c2UgRVhQUl9LSU5EX0NPTFVNTl9ERUZBVUxUOgogCQljYXNlIEVYUFJfS0lORF9GVU5DVElPTl9E RUZBVUxUOgorCQljYXNlIEVYUFJfS0lORF9WQVJJQUJMRV9ERUZBVUxUOgogCQkJZXJyID0gXygi Y2Fubm90IHVzZSBzdWJxdWVyeSBpbiBERUZBVUxUIGV4cHJlc3Npb24iKTsKIAkJCWJyZWFrOwog CQljYXNlIEVYUFJfS0lORF9JTkRFWF9FWFBSRVNTSU9OOgpAQCAtMzQ2MCw2ICszNTk4LDcgQEAg UGFyc2VFeHByS2luZE5hbWUoUGFyc2VFeHByS2luZCBleHByS2luZCkKIAkJCXJldHVybiAiQ0hF Q0siOwogCQljYXNlIEVYUFJfS0lORF9DT0xVTU5fREVGQVVMVDoKIAkJY2FzZSBFWFBSX0tJTkRf RlVOQ1RJT05fREVGQVVMVDoKKwkJY2FzZSBFWFBSX0tJTkRfVkFSSUFCTEVfREVGQVVMVDoKIAkJ CXJldHVybiAiREVGQVVMVCI7CiAJCWNhc2UgRVhQUl9LSU5EX0lOREVYX0VYUFJFU1NJT046CiAJ CQlyZXR1cm4gImluZGV4IGV4cHJlc3Npb24iOwpAQCAtMzQ3NSw2ICszNjE0LDggQEAgUGFyc2VF eHByS2luZE5hbWUoUGFyc2VFeHByS2luZCBleHByS2luZCkKIAkJCXJldHVybiAiUEFSVElUSU9O IEJZIjsKIAkJY2FzZSBFWFBSX0tJTkRfQ0FMTF9BUkdVTUVOVDoKIAkJCXJldHVybiAiQ0FMTCI7 CisJCWNhc2UgRVhQUl9LSU5EX0xFVDoKKwkJCXJldHVybiAiTEVUIjsKIAogCQkJLyoKIAkJCSAq IFRoZXJlIGlzIGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDogY2FzZSBoZXJlLCBzbyB0aGF0IHRo ZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYyBiL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMKaW5kZXggNDQyNTcxNTRiOC4uYjJjOTkwMGUwMCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYworKysgYi9zcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfZnVuYy5jCkBAIC0yMzQ3LDYgKzIzNDcsNyBAQCBjaGVja19zcmZfY2Fs bF9wbGFjZW1lbnQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpsYXN0X3NyZiwgaW50IGxvY2F0 aW9uKQogCQkJYnJlYWs7CiAJCWNhc2UgRVhQUl9LSU5EX0NPTFVNTl9ERUZBVUxUOgogCQljYXNl IEVYUFJfS0lORF9GVU5DVElPTl9ERUZBVUxUOgorCQljYXNlIEVYUFJfS0lORF9WQVJJQUJMRV9E RUZBVUxUOgogCQkJZXJyID0gXygic2V0LXJldHVybmluZyBmdW5jdGlvbnMgYXJlIG5vdCBhbGxv d2VkIGluIERFRkFVTFQgZXhwcmVzc2lvbnMiKTsKIAkJCWJyZWFrOwogCQljYXNlIEVYUFJfS0lO RF9JTkRFWF9FWFBSRVNTSU9OOgpAQCAtMjM3MCw2ICsyMzcxLDkgQEAgY2hlY2tfc3JmX2NhbGxf cGxhY2VtZW50KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqbGFzdF9zcmYsIGludCBsb2NhdGlv bikKIAkJY2FzZSBFWFBSX0tJTkRfQ0FMTF9BUkdVTUVOVDoKIAkJCWVyciA9IF8oInNldC1yZXR1 cm5pbmcgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBDQUxMIGFyZ3VtZW50cyIpOwogCQkJ YnJlYWs7CisJCWNhc2UgRVhQUl9LSU5EX0xFVDoKKwkJCWVyciA9IF8oInNldC1yZXR1cm5pbmcg ZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBDQUxMIGFyZ3VtZW50cyIpOworCQkJYnJlYWs7 CiAKIAkJCS8qCiAJCQkgKiBUaGVyZSBpcyBpbnRlbnRpb25hbGx5IG5vIGRlZmF1bHQ6IGNhc2Ug aGVyZSwgc28gdGhhdCB0aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90 YXJnZXQuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYwppbmRleCA0OTMyZTU4 MDIyLi5jNjBmZTAxMWY3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFy Z2V0LmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jCkBAIC0zNSwxNiAr MzUsNiBAQAogCiBzdGF0aWMgdm9pZCBtYXJrVGFyZ2V0TGlzdE9yaWdpbihQYXJzZVN0YXRlICpw c3RhdGUsIFRhcmdldEVudHJ5ICp0bGUsCiAJCQkJCSBWYXIgKnZhciwgaW50IGxldmVsc3VwKTsK LXN0YXRpYyBOb2RlICp0cmFuc2Zvcm1Bc3NpZ25tZW50SW5kaXJlY3Rpb24oUGFyc2VTdGF0ZSAq cHN0YXRlLAotCQkJCQkJCSAgIE5vZGUgKmJhc2Vub2RlLAotCQkJCQkJCSAgIGNvbnN0IGNoYXIg KnRhcmdldE5hbWUsCi0JCQkJCQkJICAgYm9vbCB0YXJnZXRJc0FycmF5LAotCQkJCQkJCSAgIE9p ZCB0YXJnZXRUeXBlSWQsCi0JCQkJCQkJICAgaW50MzIgdGFyZ2V0VHlwTW9kLAotCQkJCQkJCSAg IE9pZCB0YXJnZXRDb2xsYXRpb24sCi0JCQkJCQkJICAgTGlzdENlbGwgKmluZGlyZWN0aW9uLAot CQkJCQkJCSAgIE5vZGUgKnJocywKLQkJCQkJCQkgICBpbnQgbG9jYXRpb24pOwogc3RhdGljIE5v ZGUgKnRyYW5zZm9ybUFzc2lnbm1lbnRTdWJzY3JpcHRzKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJ CQkJCQkgIE5vZGUgKmJhc2Vub2RlLAogCQkJCQkJCSAgY29uc3QgY2hhciAqdGFyZ2V0TmFtZSwK QEAgLTY3Miw3ICs2NjIsNyBAQCB1cGRhdGVUYXJnZXRMaXN0RW50cnkoUGFyc2VTdGF0ZSAqcHN0 YXRlLAogICogbWlnaHQgd2FudCB0byBkZWNvcmF0ZSBpbmRpcmVjdGlvbiBjZWxscyB3aXRoIHRo ZWlyIG93biBsb2NhdGlvbiBpbmZvLAogICogaW4gd2hpY2ggY2FzZSB0aGUgbG9jYXRpb24gYXJn dW1lbnQgY291bGQgcHJvYmFibHkgYmUgZHJvcHBlZC4pCiAgKi8KLXN0YXRpYyBOb2RlICoKK05v ZGUgKgogdHJhbnNmb3JtQXNzaWdubWVudEluZGlyZWN0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwK IAkJCQkJCQkgICBOb2RlICpiYXNlbm9kZSwKIAkJCQkJCQkgICBjb25zdCBjaGFyICp0YXJnZXRO YW1lLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jIGIv c3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jCmluZGV4IDMxMjNlZTI3NGQuLjEw NzM3ZDQyMmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIu YworKysgYi9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMKQEAgLTMzNTAsNyAr MzM1MCw3IEBAIFJld3JpdGVRdWVyeShRdWVyeSAqcGFyc2V0cmVlLCBMaXN0ICpyZXdyaXRlX2V2 ZW50cykKIAkgKiBnZXQgZXhlY3V0ZWQuICBBbHNvLCB1dGlsaXRpZXMgYXJlbid0IHJld3JpdHRl biBhdCBhbGwgKGRvIHdlIHN0aWxsCiAJICogbmVlZCB0aGF0IGNoZWNrPykKIAkgKi8KLQlpZiAo ZXZlbnQgIT0gQ01EX1NFTEVDVCAmJiBldmVudCAhPSBDTURfVVRJTElUWSkKKwlpZiAoZXZlbnQg IT0gQ01EX1NFTEVDVCAmJiBldmVudCAhPSBDTURfVVRJTElUWSAmJiBldmVudCAhPSBDTURfUExB Tl9VVElMSVRZKQogCXsKIAkJaW50CQkJcmVzdWx0X3JlbGF0aW9uOwogCQlSYW5nZVRibEVudHJ5 ICpydF9lbnRyeTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jld3JpdGUvcm93c2VjdXJpdHku YyBiL3NyYy9iYWNrZW5kL3Jld3JpdGUvcm93c2VjdXJpdHkuYwppbmRleCA2MWVmMzk2ZDhhLi42 YTA2OGFmNzk5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXdyaXRlL3Jvd3NlY3VyaXR5LmMK KysrIGIvc3JjL2JhY2tlbmQvcmV3cml0ZS9yb3dzZWN1cml0eS5jCkBAIC0yMTIsNyArMjEyLDcg QEAgZ2V0X3Jvd19zZWN1cml0eV9wb2xpY2llcyhRdWVyeSAqcm9vdCwgUmFuZ2VUYmxFbnRyeSAq cnRlLCBpbnQgcnRfaW5kZXgsCiAJfQogCiAJLyoKLQkgKiBGb3IgU0VMRUNULCBVUERBVEUgYW5k IERFTEVURSwgYWRkIHNlY3VyaXR5IHF1YWxzIHRvIGVuZm9yY2UgdGhlIFVTSU5HCisJICogRm9y IFNFTEVDVCwgTEVULCBVUERBVEUgYW5kIERFTEVURSwgYWRkIHNlY3VyaXR5IHF1YWxzIHRvIGVu Zm9yY2UgdGhlIFVTSU5HCiAJICogcG9saWNpZXMuICBUaGVzZSBzZWN1cml0eSBxdWFscyBjb250 cm9sIGFjY2VzcyB0byBleGlzdGluZyB0YWJsZSByb3dzLgogCSAqIFJlc3RyaWN0aXZlIHBvbGlj aWVzIGFyZSBjb21iaW5lZCB0b2dldGhlciB1c2luZyBBTkQsIGFuZCBwZXJtaXNzaXZlCiAJICog cG9saWNpZXMgYXJlIGNvbWJpbmVkIHRvZ2V0aGVyIHVzaW5nIE9SLgpAQCAtMjIyLDYgKzIyMiw3 IEBAIGdldF9yb3dfc2VjdXJpdHlfcG9saWNpZXMoUXVlcnkgKnJvb3QsIFJhbmdlVGJsRW50cnkg KnJ0ZSwgaW50IHJ0X2luZGV4LAogCQkJCQkJCSAgJnJlc3RyaWN0aXZlX3BvbGljaWVzKTsKIAog CWlmIChjb21tYW5kVHlwZSA9PSBDTURfU0VMRUNUIHx8CisJCWNvbW1hbmRUeXBlID09IENNRF9Q TEFOX1VUSUxJVFkgfHwKIAkJY29tbWFuZFR5cGUgPT0gQ01EX1VQREFURSB8fAogCQljb21tYW5k VHlwZSA9PSBDTURfREVMRVRFKQogCQlhZGRfc2VjdXJpdHlfcXVhbHMocnRfaW5kZXgsCkBAIC00 MjMsNiArNDI0LDcgQEAgZ2V0X3BvbGljaWVzX2Zvcl9yZWxhdGlvbihSZWxhdGlvbiByZWxhdGlv biwgQ21kVHlwZSBjbWQsIE9pZCB1c2VyX2lkLAogCQkJc3dpdGNoIChjbWQpCiAJCQl7CiAJCQkJ Y2FzZSBDTURfU0VMRUNUOgorCQkJCWNhc2UgQ01EX1BMQU5fVVRJTElUWToKIAkJCQkJaWYgKHBv bGljeS0+cG9sY21kID09IEFDTF9TRUxFQ1RfQ0hSKQogCQkJCQkJY21kX21hdGNoZXMgPSB0cnVl OwogCQkJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvZGVzdC5jIGIvc3Jj L2JhY2tlbmQvdGNvcC9kZXN0LmMKaW5kZXggYzk1YTRkNTE5ZC4uNDdmYjBmMzhiMSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9kZXN0LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9kZXN0 LmMKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJleGVjdXRvci9mdW5jdGlvbnMuaCIKICNp bmNsdWRlICJleGVjdXRvci90cXVldWUuaCIKICNpbmNsdWRlICJleGVjdXRvci90c3RvcmVSZWNl aXZlci5oIgorI2luY2x1ZGUgImV4ZWN1dG9yL3N2YXJpYWJsZVJlY2VpdmVyLmgiCiAjaW5jbHVk ZSAibGlicHEvbGlicHEuaCIKICNpbmNsdWRlICJsaWJwcS9wcWZvcm1hdC5oIgogI2luY2x1ZGUg InV0aWxzL3BvcnRhbC5oIgpAQCAtMTQzLDYgKzE0NCw5IEBAIENyZWF0ZURlc3RSZWNlaXZlcihD b21tYW5kRGVzdCBkZXN0KQogCiAJCWNhc2UgRGVzdFR1cGxlUXVldWU6CiAJCQlyZXR1cm4gQ3Jl YXRlVHVwbGVRdWV1ZURlc3RSZWNlaXZlcihOVUxMKTsKKworCQljYXNlIERlc3RWYXJpYWJsZToK KwkJCXJldHVybiBDcmVhdGVWYXJpYWJsZURlc3RSZWNlaXZlcigpOwogCX0KIAogCS8qIHNob3Vs ZCBuZXZlciBnZXQgaGVyZSAqLwpAQCAtMTc4LDYgKzE4Miw3IEBAIEVuZENvbW1hbmQoY29uc3Qg Y2hhciAqY29tbWFuZFRhZywgQ29tbWFuZERlc3QgZGVzdCkKIAkJY2FzZSBEZXN0U1FMRnVuY3Rp b246CiAJCWNhc2UgRGVzdFRyYW5zaWVudFJlbDoKIAkJY2FzZSBEZXN0VHVwbGVRdWV1ZToKKwkJ Y2FzZSBEZXN0VmFyaWFibGU6CiAJCQlicmVhazsKIAl9CiB9CkBAIC0yMjIsNiArMjI3LDcgQEAg TnVsbENvbW1hbmQoQ29tbWFuZERlc3QgZGVzdCkKIAkJY2FzZSBEZXN0U1FMRnVuY3Rpb246CiAJ CWNhc2UgRGVzdFRyYW5zaWVudFJlbDoKIAkJY2FzZSBEZXN0VHVwbGVRdWV1ZToKKwkJY2FzZSBE ZXN0VmFyaWFibGU6CiAJCQlicmVhazsKIAl9CiB9CkBAIC0yNjgsNiArMjc0LDcgQEAgUmVhZHlG b3JRdWVyeShDb21tYW5kRGVzdCBkZXN0KQogCQljYXNlIERlc3RTUUxGdW5jdGlvbjoKIAkJY2Fz ZSBEZXN0VHJhbnNpZW50UmVsOgogCQljYXNlIERlc3RUdXBsZVF1ZXVlOgorCQljYXNlIERlc3RW YXJpYWJsZToKIAkJCWJyZWFrOwogCX0KIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3Av dXRpbGl0eS5jIGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKaW5kZXggYjU4MDRmNjRhZC4u MzUxOTlmZDBkYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKKysrIGIv c3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJj b21tYW5kcy9wcm9jbGFuZy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5o IgogI2luY2x1ZGUgImNvbW1hbmRzL3NjaGVtYWNtZHMuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9z Y2hlbWF2YXJpYWJsZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3NlY2xhYmVsLmgiCiAjaW5jbHVk ZSAiY29tbWFuZHMvc2VxdWVuY2UuaCIKICNpbmNsdWRlICJjb21tYW5kcy9zdWJzY3JpcHRpb25j bWRzLmgiCkBAIC0zNDQsNyArMzQ1LDcgQEAgUHJvY2Vzc1V0aWxpdHkoUGxhbm5lZFN0bXQgKnBz dG10LAogCQkJICAgY2hhciAqY29tcGxldGlvblRhZykKIHsKIAlBc3NlcnQoSXNBKHBzdG10LCBQ bGFubmVkU3RtdCkpOwotCUFzc2VydChwc3RtdC0+Y29tbWFuZFR5cGUgPT0gQ01EX1VUSUxJVFkp OworCUFzc2VydChwc3RtdC0+Y29tbWFuZFR5cGUgPT0gQ01EX1VUSUxJVFkgfHwgcHN0bXQtPmNv bW1hbmRUeXBlID09IENNRF9QTEFOX1VUSUxJVFkpOwogCUFzc2VydChxdWVyeVN0cmluZyAhPSBO VUxMKTsJLyogcmVxdWlyZWQgYXMgb2YgOC40ICovCiAKIAkvKgpAQCAtOTE1LDYgKzkxNiwxNCBA QCBzdGFuZGFyZF9Qcm9jZXNzVXRpbGl0eShQbGFubmVkU3RtdCAqcHN0bXQsCiAJCQkJYnJlYWs7 CiAJCQl9CiAKKwkJY2FzZSBUX0xldFN0bXQ6CisJCQl7CisJCQkJZG9MZXRTdG10KHBzdG10LCBw YXJhbXMsIHF1ZXJ5RW52LCBxdWVyeVN0cmluZyk7CisJCQkJaWYgKGNvbXBsZXRpb25UYWcpCisJ CQkJCXN0cmNweShjb21wbGV0aW9uVGFnLCAiTEVUIik7CisJCQl9CisJCQlicmVhazsKKwogCQlk ZWZhdWx0OgogCQkJLyogQWxsIG90aGVyIHN0YXRlbWVudCB0eXBlcyBoYXZlIGV2ZW50IHRyaWdn ZXIgc3VwcG9ydCAqLwogCQkJUHJvY2Vzc1V0aWxpdHlTbG93KHBzdGF0ZSwgcHN0bXQsIHF1ZXJ5 U3RyaW5nLApAQCAtMTIyMSw2ICsxMjMwLDEwIEBAIFByb2Nlc3NVdGlsaXR5U2xvdyhQYXJzZVN0 YXRlICpwc3RhdGUsCiAJCQkJfQogCQkJCWJyZWFrOwogCisJCQljYXNlIFRfQ3JlYXRlU2NoZW1h VmFyU3RtdDoKKwkJCQlhZGRyZXNzID0gRGVmaW5lU2NoZW1hVmFyaWFibGUocHN0YXRlLCAoQ3Jl YXRlU2NoZW1hVmFyU3RtdCAqKSBwYXJzZXRyZWUpOworCQkJCWJyZWFrOworCiAJCQkJLyoKIAkJ CQkgKiAqKioqKioqKioqKioqIG9iamVjdCBjcmVhdGlvbiAvIGRlc3RydWN0aW9uICoqKioqKioq KioqKioqCiAJCQkJICovCkBAIC0yMDU1LDYgKzIwNjgsOSBAQCBBbHRlck9iamVjdFR5cGVDb21t YW5kVGFnKE9iamVjdFR5cGUgb2JqdHlwZSkKIAkJY2FzZSBPQkpFQ1RfU1RBVElTVElDX0VYVDoK IAkJCXRhZyA9ICJBTFRFUiBTVEFUSVNUSUNTIjsKIAkJCWJyZWFrOworCQljYXNlIE9CSkVDVF9W QVJJQUJMRToKKwkJCXRhZyA9ICJBTFRFUiBWQVJJQUJMRSI7CisJCQlicmVhazsKIAkJZGVmYXVs dDoKIAkJCXRhZyA9ICI/Pz8iOwogCQkJYnJlYWs7CkBAIC0yMTA0LDYgKzIxMjAsMTAgQEAgQ3Jl YXRlQ29tbWFuZFRhZyhOb2RlICpwYXJzZXRyZWUpCiAJCQl0YWcgPSAiU0VMRUNUIjsKIAkJCWJy ZWFrOwogCisJCWNhc2UgVF9MZXRTdG10OgorCQkJdGFnID0gIkxFVCI7CisJCQlicmVhazsKKwog CQkJLyogdXRpbGl0eSBzdGF0ZW1lbnRzIC0tLSBzYW1lIHdoZXRoZXIgcmF3IG9yIGNvb2tlZCAq LwogCQljYXNlIFRfVHJhbnNhY3Rpb25TdG10OgogCQkJewpAQCAtMjM1OCw2ICsyMzc4LDkgQEAg Q3JlYXRlQ29tbWFuZFRhZyhOb2RlICpwYXJzZXRyZWUpCiAJCQkJY2FzZSBPQkpFQ1RfU1RBVElT VElDX0VYVDoKIAkJCQkJdGFnID0gIkRST1AgU1RBVElTVElDUyI7CiAJCQkJCWJyZWFrOworCQkJ CWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJCQl0YWcgPSAiRFJPUCBWQVJJQUJMRSI7CisJCQkJ CWJyZWFrOwogCQkJCWRlZmF1bHQ6CiAJCQkJCXRhZyA9ICI/Pz8iOwogCQkJfQpAQCAtMjYzOSw2 ICsyNjYyLDkgQEAgQ3JlYXRlQ29tbWFuZFRhZyhOb2RlICpwYXJzZXRyZWUpCiAJCQkJY2FzZSBE SVNDQVJEX1NFUVVFTkNFUzoKIAkJCQkJdGFnID0gIkRJU0NBUkQgU0VRVUVOQ0VTIjsKIAkJCQkJ YnJlYWs7CisJCQkJY2FzZSBESVNDQVJEX1ZBUklBQkxFUzoKKwkJCQkJdGFnID0gIkRJU0NBUkQg VkFSSUFCTEVTIjsKKwkJCQkJYnJlYWs7CiAJCQkJZGVmYXVsdDoKIAkJCQkJdGFnID0gIj8/PyI7 CiAJCQl9CkBAIC0yODQ0LDYgKzI4NzAsNyBAQCBDcmVhdGVDb21tYW5kVGFnKE5vZGUgKnBhcnNl dHJlZSkKIAkJCQkJCXRhZyA9ICJERUxFVEUiOwogCQkJCQkJYnJlYWs7CiAJCQkJCWNhc2UgQ01E X1VUSUxJVFk6CisJCQkJCWNhc2UgQ01EX1BMQU5fVVRJTElUWToKIAkJCQkJCXRhZyA9IENyZWF0 ZUNvbW1hbmRUYWcoc3RtdC0+dXRpbGl0eVN0bXQpOwogCQkJCQkJYnJlYWs7CiAJCQkJCWRlZmF1 bHQ6CkBAIC0yOTE1LDYgKzI5NDIsMTAgQEAgQ3JlYXRlQ29tbWFuZFRhZyhOb2RlICpwYXJzZXRy ZWUpCiAJCQl9CiAJCQlicmVhazsKIAorCQljYXNlIFRfQ3JlYXRlU2NoZW1hVmFyU3RtdDoKKwkJ CXRhZyA9ICJDUkVBVEUgVkFSSUFCTEUiOworCQkJYnJlYWs7CisKIAkJZGVmYXVsdDoKIAkJCWVs b2coV0FSTklORywgInVucmVjb2duaXplZCBub2RlIHR5cGU6ICVkIiwKIAkJCQkgKGludCkgbm9k ZVRhZyhwYXJzZXRyZWUpKTsKQEAgLTI5NjEsNiArMjk5MiwxMCBAQCBHZXRDb21tYW5kTG9nTGV2 ZWwoTm9kZSAqcGFyc2V0cmVlKQogCQkJCWxldiA9IExPR1NUTVRfQUxMOwogCQkJYnJlYWs7CiAK KwkJY2FzZSBUX0xldFN0bXQ6CisJCQlsZXYgPSBMT0dTVE1UX0FMTDsKKwkJCWJyZWFrOworCiAJ CQkvKiB1dGlsaXR5IHN0YXRlbWVudHMgLS0tIHNhbWUgd2hldGhlciByYXcgb3IgY29va2VkICov CiAJCWNhc2UgVF9UcmFuc2FjdGlvblN0bXQ6CiAJCQlsZXYgPSBMT0dTVE1UX0FMTDsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hY2wuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9hY2wuYwppbmRleCBhNDVlMDkzZGU3Li45NTJjMGQ5NjI4IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9hZHQvYWNsLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FjbC5jCkBA IC0zMTUsNiArMzE1LDEyIEBAIGFjbHBhcnNlKGNvbnN0IGNoYXIgKnMsIEFjbEl0ZW0gKmFpcCkK IAkJCWNhc2UgQUNMX0NPTk5FQ1RfQ0hSOgogCQkJCXJlYWQgPSBBQ0xfQ09OTkVDVDsKIAkJCQli cmVhazsKKwkJCWNhc2UgQUNMX1JFQURfQ0hSOgorCQkJCXJlYWQgPSBBQ0xfUkVBRDsKKwkJCQli cmVhazsKKwkJCWNhc2UgQUNMX1dSSVRFX0NIUjoKKwkJCQlyZWFkID0gQUNMX1dSSVRFOworCQkJ CWJyZWFrOwogCQkJY2FzZSAnUic6CQkJLyogaWdub3JlIG9sZCBSVUxFIHByaXZpbGVnZXMgKi8K IAkJCQlyZWFkID0gMDsKIAkJCQlicmVhazsKQEAgLTgwOCw2ICs4MTQsMTAgQEAgYWNsZGVmYXVs dChPYmplY3RUeXBlIG9ianR5cGUsIE9pZCBvd25lcklkKQogCQkJd29ybGRfZGVmYXVsdCA9IEFD TF9VU0FHRTsKIAkJCW93bmVyX2RlZmF1bHQgPSBBQ0xfQUxMX1JJR0hUU19UWVBFOwogCQkJYnJl YWs7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJd29ybGRfZGVmYXVsdCA9IEFDTF9OT19S SUdIVFM7CisJCQlvd25lcl9kZWZhdWx0ID0gQUNMX0FMTF9SSUdIVFNfVkFSSUFCTEU7CisJCQli cmVhazsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgb2JqdHlwZTog JWQiLCAoaW50KSBvYmp0eXBlKTsKIAkJCXdvcmxkX2RlZmF1bHQgPSBBQ0xfTk9fUklHSFRTOwkv KiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCkBAIC05MDMsNiArOTEzLDkgQEAgYWNsZGVmYXVsdF9z cWwoUEdfRlVOQ1RJT05fQVJHUykKIAkJY2FzZSAnVCc6CiAJCQlvYmp0eXBlID0gT0JKRUNUX1RZ UEU7CiAJCQlicmVhazsKKwkJY2FzZSAnVic6CisJCQlvYmp0eXBlID0gT0JKRUNUX1ZBUklBQkxF OworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG9i anR5cGUgYWJicmV2aWF0aW9uOiAlYyIsIG9ianR5cGVjKTsKIAl9CkBAIC0xNjI3LDYgKzE2NDAs MTAgQEAgY29udmVydF9wcml2X3N0cmluZyh0ZXh0ICpwcml2X3R5cGVfdGV4dCkKIAkJcmV0dXJu IEFDTF9DT05ORUNUOwogCWlmIChwZ19zdHJjYXNlY21wKHByaXZfdHlwZSwgIlJVTEUiKSA9PSAw KQogCQlyZXR1cm4gMDsJCQkJLyogaWdub3JlIG9sZCBSVUxFIHByaXZpbGVnZXMgKi8KKwlpZiAo cGdfc3RyY2FzZWNtcChwcml2X3R5cGUsICJSRUFEIikgPT0gMCkKKwkJcmV0dXJuIEFDTF9SRUFE OworCWlmIChwZ19zdHJjYXNlY21wKHByaXZfdHlwZSwgIldSSVRFIikgPT0gMCkKKwkJcmV0dXJu IEFDTF9XUklURTsKIAogCWVyZXBvcnQoRVJST1IsCiAJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFM SURfUEFSQU1FVEVSX1ZBTFVFKSwKQEAgLTE3MjEsNiArMTczOCwxMCBAQCBjb252ZXJ0X2FjbHJp Z2h0X3RvX3N0cmluZyhpbnQgYWNscmlnaHQpCiAJCQlyZXR1cm4gIlRFTVBPUkFSWSI7CiAJCWNh c2UgQUNMX0NPTk5FQ1Q6CiAJCQlyZXR1cm4gIkNPTk5FQ1QiOworCQljYXNlIEFDTF9SRUFEOgor CQkJcmV0dXJuICJSRUFEIjsKKwkJY2FzZSBBQ0xfV1JJVEU6CisJCQlyZXR1cm4gIldSSVRFIjsK IAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgYWNscmlnaHQ6ICVkIiwg YWNscmlnaHQpOwogCQkJcmV0dXJuIE5VTEw7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9hZHQvcnVsZXV0aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKaW5k ZXggMDNlOWEyOGE2My4uNDg4Y2IyNmQzZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3J1bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwpA QCAtNzM2Miw2ICs3MzYyLDE0IEBAIGdldF9wYXJhbWV0ZXIoUGFyYW0gKnBhcmFtLCBkZXBhcnNl X2NvbnRleHQgKmNvbnRleHQpCiAJCXJldHVybjsKIAl9CiAKKwkvKiB0cmFuc2xhdGUgcGFyYW1p ZCB0byBvcmlnaW5hbCBzY2hlbWEgdmFyaWFibGUgbmFtZSAqLworCWlmIChwYXJhbS0+cGFyYW1r aW5kID09IFBBUkFNX1NDSEVNQV9WQVJJQUJMRSkKKwl7CisJCWFwcGVuZFN0cmluZ0luZm8oY29u dGV4dC0+YnVmLCAiJXMiLAorCQkJCQkJCXNjaGVtYV92YXJpYWJsZV9nZXRfbmFtZShwYXJhbS0+ cGFyYW1pZCkpOworCQlyZXR1cm47CisJfQorCiAJLyoKIAkgKiBOb3QgUEFSQU1fRVhFQywgb3Ig Y291bGRuJ3QgZmluZCByZWZlcmVudDoganVzdCBwcmludCAkTi4KIAkgKi8KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvbHN5c2NhY2hlLmMKaW5kZXggYmJhNTk1YWQxZC4uODU4YTZkZDRiZSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKQEAgLTE2OTEsNiArMTY5MSwxOCBAQCBnZXRfcmVsbmFt ZV9yZWxpZChjb25zdCBjaGFyICpyZWxuYW1lLCBPaWQgcmVsbmFtZXNwYWNlKQogCQkJCQkJICAg T2JqZWN0SWRHZXREYXR1bShyZWxuYW1lc3BhY2UpKTsKIH0KIAorLyoKKyAqIGdldF92YXJuYW1l X3ZhcmlkCisgKgkJR2l2ZW4gbmFtZSBhbmQgbmFtZXNwYWNlIG9mIHZhcmlhYmxlLCBsb29rIHVw IHRoZSBPSUQuCisgKi8KK09pZAorZ2V0X3Zhcm5hbWVfdmFyaWQoY29uc3QgY2hhciAqdmFybmFt ZSwgT2lkIHZhcm5hbWVzcGFjZSkKK3sKKwlyZXR1cm4gR2V0U3lzQ2FjaGVPaWQyKFZBUklBQkxF TkFNRU5TUCwKKwkJCQkJCSAgIFBvaW50ZXJHZXREYXR1bSh2YXJuYW1lKSwKKwkJCQkJCSAgIE9i amVjdElkR2V0RGF0dW0odmFybmFtZXNwYWNlKSk7Cit9CisKICNpZmRlZiBOT1RfVVNFRAogLyoK ICAqIGdldF9yZWxuYXR0cwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvc3lz Y2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3N5c2NhY2hlLmMKaW5kZXggMmIzODE3 ODJhMy4uMzVkYzMyZjY0OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvc3lz Y2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9zeXNjYWNoZS5jCkBAIC03Myw2 ICs3Myw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190c190ZW1wbGF0ZS5oIgogI2luY2x1ZGUg ImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdXNlcl9tYXBwaW5nLmgi CisjaW5jbHVkZSAiY2F0YWxvZy9wZ192YXJpYWJsZS5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5o IgogI2luY2x1ZGUgInV0aWxzL2NhdGNhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUu aCIKQEAgLTk2OCw2ICs5NjksMjggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBjYWNoZWRlc2MgY2Fj aGVpbmZvW10gPSB7CiAJCQkwCiAJCX0sCiAJCTIKKwl9LAorCXtWYXJpYWJsZVJlbGF0aW9uSWQs CQkJLyogVkFSSUFCTEVOQU1FTlNQICovCisJCVZhcmlhYmxlTmFtZU5zcEluZGV4SWQsCisJCTIs CisJCXsKKwkJCUFudW1fcGdfdmFyaWFibGVfdmFybmFtZSwKKwkJCUFudW1fcGdfdmFyaWFibGVf dmFybmFtZXNwYWNlLAorCQkJMCwKKwkJCTAKKwkJfSwKKwkJOAorCX0sCisJe1ZhcmlhYmxlUmVs YXRpb25JZCwJCQkvKiBWQVJJQUJMRU9JRCAqLworCQlWYXJpYWJsZU9iamVjdEluZGV4SWQsCisJ CTEsCisJCXsKKwkJCU9iamVjdElkQXR0cmlidXRlTnVtYmVyLAorCQkJMCwKKwkJCTAsCisJCQkw CisJCX0sCisJCTgKIAl9CiB9OwogCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvY29tbW9u LmMgYi9zcmMvYmluL3BnX2R1bXAvY29tbW9uLmMKaW5kZXggMGQxNDdjYjA4ZC4uNmQ5NzkzMWQ4 NSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL2NvbW1vbi5jCisrKyBiL3NyYy9iaW4vcGdf ZHVtcC9jb21tb24uYwpAQCAtMjk2LDYgKzI5NiwxMCBAQCBnZXRTY2hlbWFEYXRhKEFyY2hpdmUg KmZvdXQsIGludCAqbnVtVGFibGVzUHRyKQogCQl3cml0ZV9tc2coTlVMTCwgInJlYWRpbmcgc3Vi c2NyaXB0aW9uc1xuIik7CiAJZ2V0U3Vic2NyaXB0aW9ucyhmb3V0KTsKIAorCWlmIChnX3ZlcmJv c2UpCisJCXdyaXRlX21zZyhOVUxMLCAicmVhZGluZyB2YXJpYWJsZXNcbiIpOworCWdldFZhcmlh Ymxlcyhmb3V0KTsKKwogCSpudW1UYWJsZXNQdHIgPSBudW1UYWJsZXM7CiAJcmV0dXJuIHRibGlu Zm87CiB9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMg Yi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMKaW5kZXggODNjOTc2ZWFmNy4u YzliYzkxY2E2OCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZl ci5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYwpAQCAtMzQ3MSw2 ICszNDcxLDcgQEAgX2dldE9iamVjdERlc2NyaXB0aW9uKFBRRXhwQnVmZmVyIGJ1ZiwgVG9jRW50 cnkgKnRlLCBBcmNoaXZlSGFuZGxlICpBSCkKIAkJc3RyY21wKHR5cGUsICJURVhUIFNFQVJDSCBE SUNUSU9OQVJZIikgPT0gMCB8fAogCQlzdHJjbXAodHlwZSwgIlRFWFQgU0VBUkNIIENPTkZJR1VS QVRJT04iKSA9PSAwIHx8CiAJCXN0cmNtcCh0eXBlLCAiU1RBVElTVElDUyIpID09IDAgfHwKKwkJ c3RyY21wKHR5cGUsICJWQVJJQUJMRSIpID09IDAgfHwKIAkvKiBub24tc2NoZW1hLXNwZWNpZmll ZCBvYmplY3RzICovCiAJCXN0cmNtcCh0eXBlLCAiREFUQUJBU0UiKSA9PSAwIHx8CiAJCXN0cmNt cCh0eXBlLCAiUFJPQ0VEVVJBTCBMQU5HVUFHRSIpID09IDAgfHwKQEAgLTM2NzAsNyArMzY3MSw4 IEBAIF9wcmludFRvY0VudHJ5KEFyY2hpdmVIYW5kbGUgKkFILCBUb2NFbnRyeSAqdGUsIGJvb2wg aXNEYXRhKQogCQkJc3RyY21wKHRlLT5kZXNjLCAiU0VSVkVSIikgPT0gMCB8fAogCQkJc3RyY21w KHRlLT5kZXNjLCAiU1RBVElTVElDUyIpID09IDAgfHwKIAkJCXN0cmNtcCh0ZS0+ZGVzYywgIlBV QkxJQ0FUSU9OIikgPT0gMCB8fAotCQkJc3RyY21wKHRlLT5kZXNjLCAiU1VCU0NSSVBUSU9OIikg PT0gMCkKKwkJCXN0cmNtcCh0ZS0+ZGVzYywgIlNVQlNDUklQVElPTiIpID09IDAgfHwKKwkJCXN0 cmNtcCh0ZS0+ZGVzYywgIlZBUklBQkxFIikgPT0gMCkKIAkJewogCQkJUFFFeHBCdWZmZXIgdGVt cCA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9w Z19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IDliYWY3YjJmZGUuLmY4 MjVhMDBjOWQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3Jj L2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtMjYwLDYgKzI2MCw3IEBAIHN0YXRpYyB2b2lkIGR1 bXBQb2xpY3koQXJjaGl2ZSAqZm91dCwgUG9saWN5SW5mbyAqcG9saW5mbyk7CiBzdGF0aWMgdm9p ZCBkdW1wUHVibGljYXRpb24oQXJjaGl2ZSAqZm91dCwgUHVibGljYXRpb25JbmZvICpwdWJpbmZv KTsKIHN0YXRpYyB2b2lkIGR1bXBQdWJsaWNhdGlvblRhYmxlKEFyY2hpdmUgKmZvdXQsIFB1Ymxp Y2F0aW9uUmVsSW5mbyAqcHVicmluZm8pOwogc3RhdGljIHZvaWQgZHVtcFN1YnNjcmlwdGlvbihB cmNoaXZlICpmb3V0LCBTdWJzY3JpcHRpb25JbmZvICpzdWJpbmZvKTsKK3N0YXRpYyB2b2lkIGR1 bXBWYXJpYWJsZShBcmNoaXZlICpmb3V0LCBWYXJpYWJsZUluZm8gKnZhcmluZm8pOwogc3RhdGlj IHZvaWQgZHVtcERhdGFiYXNlKEFyY2hpdmUgKkFIKTsKIHN0YXRpYyB2b2lkIGR1bXBEYXRhYmFz ZUNvbmZpZyhBcmNoaXZlICpBSCwgUFFFeHBCdWZmZXIgb3V0YnVmLAogCQkJCSAgIGNvbnN0IGNo YXIgKmRibmFtZSwgT2lkIGRib2lkKTsKQEAgLTQyMjEsNiArNDIyMiwyMDggQEAgZHVtcFN1YnNj cmlwdGlvbihBcmNoaXZlICpmb3V0LCBTdWJzY3JpcHRpb25JbmZvICpzdWJpbmZvKQogCWZyZWUo cXN1Ym5hbWUpOwogfQogCisvKgorICogZ2V0VmFyaWFibGVzCisgKgkgIGdldCBpbmZvcm1hdGlv biBhYm91dCB2YXJpYWJsZXMKKyAqLwordm9pZAorZ2V0VmFyaWFibGVzKEFyY2hpdmUgKmZvdXQp Cit7CisJRHVtcE9wdGlvbnMgKmRvcHQgPSBmb3V0LT5kb3B0OworCVBRRXhwQnVmZmVyIHF1ZXJ5 OworCVBRRXhwQnVmZmVyIGFjbF9zdWJxdWVyeSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CisJUFFF eHBCdWZmZXIgcmFjbF9zdWJxdWVyeSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CisJUFFFeHBCdWZm ZXIgaW5pdF9hY2xfc3VicXVlcnkgPSBjcmVhdGVQUUV4cEJ1ZmZlcigpOworCVBRRXhwQnVmZmVy IGluaXRfcmFjbF9zdWJxdWVyeSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CisJUEdyZXN1bHQgICAq cmVzOworCVZhcmlhYmxlSW5mbyAqdmFyaW5mbzsKKwlpbnQJCQlpX3RhYmxlb2lkOworCWludAkJ CWlfb2lkOworCWludAkJCWlfdmFybmFtZTsKKwlpbnQJCQlpX3Zhcm5hbWVzcGFjZTsKKwlpbnQJ CQlpX3ZhcnR5cGU7CisJaW50CQkJaV92YXJ0eXBuYW1lOworCWludAkJCWlfdmFyZGVmZXhwcjsK KwlpbnQJCQlpX3JvbG5hbWU7CisJaW50CQkJaV92YXJhY2w7CisJaW50CQkJaV9ydmFyYWNsOwor CWludAkJCWlfaW5pdHZhcmFjbDsKKwlpbnQJCQlpX2luaXRydmFyYWNsOworCWludAkJCWksCisJ CQkJbnR1cHM7CisKKwlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA8PSAxMTAwMDApCisJCXJldHVy bjsKKworCWFjbF9zdWJxdWVyeSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CisJcmFjbF9zdWJxdWVy eSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CisJaW5pdF9hY2xfc3VicXVlcnkgPSBjcmVhdGVQUUV4 cEJ1ZmZlcigpOworCWluaXRfcmFjbF9zdWJxdWVyeSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CisK KwlidWlsZEFDTFF1ZXJpZXMoYWNsX3N1YnF1ZXJ5LCByYWNsX3N1YnF1ZXJ5LCBpbml0X2FjbF9z dWJxdWVyeSwKKwkJCQkJaW5pdF9yYWNsX3N1YnF1ZXJ5LCAidi52YXJhY2wiLCAidi52YXJvd25l ciIsICInViciLAorCQkJCQlkb3B0LT5iaW5hcnlfdXBncmFkZSk7CisKKwlxdWVyeSA9IGNyZWF0 ZVBRRXhwQnVmZmVyKCk7CisKKwlyZXNldFBRRXhwQnVmZmVyKHF1ZXJ5KTsKKworCS8qIEdldCB0 aGUgdmFyaWFibGVzIGluIGN1cnJlbnQgZGF0YWJhc2UuICovCisJYXBwZW5kUFFFeHBCdWZmZXIo cXVlcnksCisJCQkJCQkgICJTRUxFQ1Qgdi50YWJsZW9pZCwgdi5vaWQsIHYudmFybmFtZSwgIgor CQkJCQkJICAidi52YXJuYW1lc3BhY2UsIgorCQkJCQkJICAiKCVzIHZhcm93bmVyKSBBUyByb2xu YW1lLCAiCisJCQkJCQkgICIlcyBhcyB2YXJhY2wsICIKKwkJCQkJCSAgIiVzIGFzIHJ2YXJhY2ws ICIKKwkJCQkJCSAgIiVzIGFzIGluaXR2YXJhY2wsICIKKwkJCQkJCSAgIiVzIGFzIGluaXRydmFy YWNsLCAiCisJCQkJCQkgICJ2LnZhcnR5cGUsICIKKwkJCQkJCSAgInBnX2NhdGFsb2cuZm9ybWF0 X3R5cGUodi52YXJ0eXBlLCB2LnZhcnR5cG1vZCkgYXMgdmFydHlwbmFtZSwgIgorCQkJCQkJICAi cGdfY2F0YWxvZy5wZ19nZXRfZXhwcih2LnZhcmRlZmV4cHIsMCkgYXMgdmFyZGVmZXhwciAiCisJ CQkJCQkgICJGUk9NIHBnX3ZhcmlhYmxlIHYgIgorCQkJCQkJICAiTEVGVCBKT0lOIHBnX2luaXRf cHJpdnMgcGlwICIKKwkJCQkJCSAgIk9OICh2Lm9pZCA9IHBpcC5vYmpvaWQgIgorCQkJCQkJICAi QU5EIHBpcC5jbGFzc29pZCA9ICdwZ192YXJpYWJsZSc6OnJlZ2NsYXNzICIKKwkJCQkJCSAgIkFO RCBwaXAub2Jqc3ViaWQgPSAwKSIsCisJCQkJCQkgIHVzZXJuYW1lX3N1YnF1ZXJ5LAorCQkJCQkJ ICBhY2xfc3VicXVlcnktPmRhdGEsCisJCQkJCQkgIHJhY2xfc3VicXVlcnktPmRhdGEsCisJCQkJ CQkgIGluaXRfYWNsX3N1YnF1ZXJ5LT5kYXRhLAorCQkJCQkJICBpbml0X3JhY2xfc3VicXVlcnkt PmRhdGEpOworCisJZGVzdHJveVBRRXhwQnVmZmVyKGFjbF9zdWJxdWVyeSk7CisJZGVzdHJveVBR RXhwQnVmZmVyKHJhY2xfc3VicXVlcnkpOworCWRlc3Ryb3lQUUV4cEJ1ZmZlcihpbml0X2FjbF9z dWJxdWVyeSk7CisJZGVzdHJveVBRRXhwQnVmZmVyKGluaXRfcmFjbF9zdWJxdWVyeSk7CisKKwly ZXMgPSBFeGVjdXRlU3FsUXVlcnkoZm91dCwgcXVlcnktPmRhdGEsIFBHUkVTX1RVUExFU19PSyk7 CisKKwludHVwcyA9IFBRbnR1cGxlcyhyZXMpOworCisJaV90YWJsZW9pZCA9IFBRZm51bWJlcihy ZXMsICJ0YWJsZW9pZCIpOworCWlfb2lkID0gUFFmbnVtYmVyKHJlcywgIm9pZCIpOworCWlfdmFy bmFtZSA9IFBRZm51bWJlcihyZXMsICJ2YXJuYW1lIik7CisJaV92YXJuYW1lc3BhY2UgPSBQUWZu dW1iZXIocmVzLCAidmFybmFtZXNwYWNlIik7CisJaV9yb2xuYW1lID0gUFFmbnVtYmVyKHJlcywg InJvbG5hbWUiKTsKKwlpX3ZhcnR5cGUgPSBQUWZudW1iZXIocmVzLCAidmFydHlwZSIpOworCWlf dmFydHlwbmFtZSA9IFBRZm51bWJlcihyZXMsICJ2YXJ0eXBuYW1lIik7CisJaV92YXJkZWZleHBy ID0gUFFmbnVtYmVyKHJlcywgInZhcmRlZmV4cHIiKTsKKwlpX3ZhcmFjbCA9IFBRZm51bWJlcihy ZXMsICJ2YXJhY2wiKTsKKwlpX3J2YXJhY2wgPSBQUWZudW1iZXIocmVzLCAicnZhcmFjbCIpOwor CWlfaW5pdHZhcmFjbCA9IFBRZm51bWJlcihyZXMsICJpbml0dmFyYWNsIik7CisJaV9pbml0cnZh cmFjbCA9IFBRZm51bWJlcihyZXMsICJpbml0cnZhcmFjbCIpOworCisJdmFyaW5mbyA9IHBnX21h bGxvYyhudHVwcyAqIHNpemVvZihWYXJpYWJsZUluZm8pKTsKKworCWZvciAoaSA9IDA7IGkgPCBu dHVwczsgaSsrKQorCXsKKwkJVHlwZUluZm8JICAgKnZ0eXBlOworCisJCXZhcmluZm9baV0uZG9i ai5vYmpUeXBlID0gRE9fVkFSSUFCTEU7CisJCXZhcmluZm9baV0uZG9iai5jYXRJZC50YWJsZW9p ZCA9CisJCQlhdG9vaWQoUFFnZXR2YWx1ZShyZXMsIGksIGlfdGFibGVvaWQpKTsKKwkJdmFyaW5m b1tpXS5kb2JqLmNhdElkLm9pZCA9IGF0b29pZChQUWdldHZhbHVlKHJlcywgaSwgaV9vaWQpKTsK KwkJQXNzaWduRHVtcElkKCZ2YXJpbmZvW2ldLmRvYmopOworCQl2YXJpbmZvW2ldLmRvYmoubmFt ZSA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaSwgaV92YXJuYW1lKSk7CisJCXZhcmluZm9b aV0uZG9iai5uYW1lc3BhY2UgPQorCQkJZmluZE5hbWVzcGFjZShmb3V0LAorCQkJCQkJICBhdG9v aWQoUFFnZXR2YWx1ZShyZXMsIGksIGlfdmFybmFtZXNwYWNlKSkpOworCisJCXZhcmluZm9baV0u cm9sbmFtZSA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaSwgaV9yb2xuYW1lKSk7CisJCXZh cmluZm9baV0udmFydHlwZSA9IGF0b29pZChQUWdldHZhbHVlKHJlcywgaSwgaV92YXJ0eXBlKSk7 CisJCXZhcmluZm9baV0udmFydHlwbmFtZSA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaSwg aV92YXJ0eXBuYW1lKSk7CisKKwkJdmFyaW5mb1tpXS52YXJhY2wgPSBwZ19zdHJkdXAoUFFnZXR2 YWx1ZShyZXMsIGksIGlfdmFyYWNsKSk7CisJCXZhcmluZm9baV0ucnZhcmFjbCA9IHBnX3N0cmR1 cChQUWdldHZhbHVlKHJlcywgaSwgaV9ydmFyYWNsKSk7CisJCXZhcmluZm9baV0uaW5pdHZhcmFj bCA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaSwgaV9pbml0dmFyYWNsKSk7CisJCXZhcmlu Zm9baV0uaW5pdHJ2YXJhY2wgPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfaW5pdHJ2 YXJhY2wpKTsKKworCQkvKiBEZWNpZGUgd2hldGhlciB3ZSB3YW50IHRvIGR1bXAgaXQgKi8KKwkJ c2VsZWN0RHVtcGFibGVPYmplY3QoJih2YXJpbmZvW2ldLmRvYmopLCBmb3V0KTsKKworCQkvKiBE byBub3QgdHJ5IHRvIGR1bXAgQUNMIGlmIG5vIEFDTCBleGlzdHMuICovCisJCWlmIChQUWdldGlz bnVsbChyZXMsIGksIGlfdmFyYWNsKSAmJiBQUWdldGlzbnVsbChyZXMsIGksIGlfcnZhcmFjbCkg JiYKKwkJCVBRZ2V0aXNudWxsKHJlcywgaSwgaV9pbml0dmFyYWNsKSAmJgorCQkJUFFnZXRpc251 bGwocmVzLCBpLCBpX2luaXRydmFyYWNsKSkKKwkJCXZhcmluZm9baV0uZG9iai5kdW1wICY9IH5E VU1QX0NPTVBPTkVOVF9BQ0w7CisKKwkJaWYgKFBRZ2V0aXNudWxsKHJlcywgaSwgaV92YXJkZWZl eHByKSkKKwkJCXZhcmluZm9baV0udmFyZGVmZXhwciA9IE5VTEw7CisJCWVsc2UKKwkJCXZhcmlu Zm9baV0udmFyZGVmZXhwciA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaSwgaV92YXJkZWZl eHByKSk7CisKKwkJaWYgKHN0cmxlbih2YXJpbmZvW2ldLnJvbG5hbWUpID09IDApCisJCQl3cml0 ZV9tc2coTlVMTCwgIldBUk5JTkc6IG93bmVyIG9mIHZhcmlhYmxlIFwiJXNcIiBhcHBlYXJzIHRv IGJlIGludmFsaWRcbiIsCisJCQkJCSAgdmFyaW5mb1tpXS5kb2JqLm5hbWUpOworCisJCS8qIERl Y2lkZSB3aGV0aGVyIHdlIHdhbnQgdG8gZHVtcCBpdCAqLworCQlzZWxlY3REdW1wYWJsZU9iamVj dCgmKHZhcmluZm9baV0uZG9iaiksIGZvdXQpOworCisJCXZ0eXBlID0gZmluZFR5cGVCeU9pZCh2 YXJpbmZvW2ldLnZhcnR5cGUpOworCQlhZGRPYmplY3REZXBlbmRlbmN5KCZ2YXJpbmZvW2ldLmRv YmosIHZ0eXBlLT5kb2JqLmR1bXBJZCk7CisJfQorCVBRY2xlYXIocmVzKTsKKworCWRlc3Ryb3lQ UUV4cEJ1ZmZlcihxdWVyeSk7Cit9CisKKy8qCisgKiBkdW1wVmFyaWFibGUKKyAqCSAgZHVtcCB0 aGUgZGVmaW5pdGlvbiBvZiB0aGUgZ2l2ZW4gdmFyaWFibGVzCisgKi8KK3N0YXRpYyB2b2lkCitk dW1wVmFyaWFibGUoQXJjaGl2ZSAqZm91dCwgVmFyaWFibGVJbmZvICp2YXJpbmZvKQoreworCUR1 bXBPcHRpb25zICpkb3B0ID0gZm91dC0+ZG9wdDsKKworCVBRRXhwQnVmZmVyIGRlbHE7CisJUFFF eHBCdWZmZXIgcXVlcnk7CisJY29uc3QgY2hhcgkgICAqdmFybmFtZTsKKwljb25zdCBjaGFyCSAg ICp2YXJ0eXBuYW1lOworCWNvbnN0IGNoYXIJICAgKnZhcmRlZmV4cHI7CisKKwkvKiBTa2lwIGlm IG5vdCB0byBiZSBkdW1wZWQgKi8KKwlpZiAoIXZhcmluZm8tPmRvYmouZHVtcCB8fCBkb3B0LT5k YXRhT25seSkKKwkJcmV0dXJuOworCisJZGVscSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CisJcXVl cnkgPSBjcmVhdGVQUUV4cEJ1ZmZlcigpOworCisJdmFybmFtZSA9IGZtdFF1YWxpZmllZER1bXBh YmxlKHZhcmluZm8pOworCXZhcnR5cG5hbWUgPSB2YXJpbmZvLT52YXJ0eXBuYW1lOworCXZhcmRl ZmV4cHIgPSB2YXJpbmZvLT52YXJkZWZleHByOworCisJYXBwZW5kUFFFeHBCdWZmZXIoZGVscSwg IkRST1AgVkFSSUFCTEUgJXM7XG4iLAorCQkJCQkgIHZhcm5hbWUpOworCisJYXBwZW5kUFFFeHBC dWZmZXIocXVlcnksICJDUkVBVEUgVkFSSUFCTEUgJXMgQVMgJXMiLAorCQkJCQkgIHZhcm5hbWUs IHZhcnR5cG5hbWUpOworCisJaWYgKHZhcmRlZmV4cHIpCisJCWFwcGVuZFBRRXhwQnVmZmVyKHF1 ZXJ5LCAiIERFRkFVTFQgJXMiLAorCQkJCQkJICB2YXJkZWZleHByKTsKKworCWFwcGVuZFBRRXhw QnVmZmVyKHF1ZXJ5LCAiO1xuIik7CisKKwlBcmNoaXZlRW50cnkoZm91dCwgdmFyaW5mby0+ZG9i ai5jYXRJZCwgdmFyaW5mby0+ZG9iai5kdW1wSWQsCisJCQkJIHZhcmluZm8tPmRvYmoubmFtZSwK KwkJCQkgTlVMTCwKKwkJCQkgTlVMTCwKKwkJCQkgdmFyaW5mby0+cm9sbmFtZSwgZmFsc2UsCisJ CQkJICJWQVJJQUJMRSIsIFNFQ1RJT05fUFJFX0RBVEEsCisJCQkJIHF1ZXJ5LT5kYXRhLCBkZWxx LT5kYXRhLCBOVUxMLAorCQkJCSBOVUxMLCAwLAorCQkJCSBOVUxMLCBOVUxMKTsKKworCWlmICh2 YXJpbmZvLT5kb2JqLmR1bXAgJiBEVU1QX0NPTVBPTkVOVF9DT01NRU5UKQorCQlkdW1wQ29tbWVu dChmb3V0LCAiVkFSSUFCTEUiLCB2YXJuYW1lLAorCQkJCQlOVUxMLCB2YXJpbmZvLT5yb2xuYW1l LAorCQkJCQl2YXJpbmZvLT5kb2JqLmNhdElkLCAwLCB2YXJpbmZvLT5kb2JqLmR1bXBJZCk7CisK KwlkZXN0cm95UFFFeHBCdWZmZXIoZGVscSk7CisJZGVzdHJveVBRRXhwQnVmZmVyKHF1ZXJ5KTsK K30KKwogc3RhdGljIHZvaWQKIGJpbmFyeV91cGdyYWRlX3NldF90eXBlX29pZHNfYnlfdHlwZV9v aWQoQXJjaGl2ZSAqZm91dCwKIAkJCQkJCQkJCQkgUFFFeHBCdWZmZXIgdXBncmFkZV9idWZmZXIs CkBAIC05ODQ5LDYgKzEwMDUyLDkgQEAgZHVtcER1bXBhYmxlT2JqZWN0KEFyY2hpdmUgKmZvdXQs IER1bXBhYmxlT2JqZWN0ICpkb2JqKQogCQljYXNlIERPX1NVQlNDUklQVElPTjoKIAkJCWR1bXBT dWJzY3JpcHRpb24oZm91dCwgKFN1YnNjcmlwdGlvbkluZm8gKikgZG9iaik7CiAJCQlicmVhazsK KwkJY2FzZSBET19WQVJJQUJMRToKKwkJCWR1bXBWYXJpYWJsZShmb3V0LCAoVmFyaWFibGVJbmZv ICopIGRvYmopOworCQkJYnJlYWs7CiAJCWNhc2UgRE9fUFJFX0RBVEFfQk9VTkRBUlk6CiAJCWNh c2UgRE9fUE9TVF9EQVRBX0JPVU5EQVJZOgogCQkJLyogbmV2ZXIgZHVtcGVkLCBub3RoaW5nIHRv IGRvICovCkBAIC0xNzkzNSw2ICsxODE0MSw3IEBAIGFkZEJvdW5kYXJ5RGVwZW5kZW5jaWVzKER1 bXBhYmxlT2JqZWN0ICoqZG9ianMsIGludCBudW1PYmpzLAogCQkJY2FzZSBET19PUEZBTUlMWToK IAkJCWNhc2UgRE9fQ09MTEFUSU9OOgogCQkJY2FzZSBET19DT05WRVJTSU9OOgorCQkJY2FzZSBE T19WQVJJQUJMRToKIAkJCWNhc2UgRE9fVEFCTEU6CiAJCQljYXNlIERPX0FUVFJERUY6CiAJCQlj YXNlIERPX1BST0NMQU5HOgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCBi L3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKaW5kZXggMTQ0ODAwNWYzMC4uMGQ0OWJiN2VkNyAx MDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAorKysgYi9zcmMvYmluL3BnX2R1 bXAvcGdfZHVtcC5oCkBAIC04NCw3ICs4NCw4IEBAIHR5cGVkZWYgZW51bQogCURPX1BPTElDWSwK IAlET19QVUJMSUNBVElPTiwKIAlET19QVUJMSUNBVElPTl9SRUwsCi0JRE9fU1VCU0NSSVBUSU9O CisJRE9fU1VCU0NSSVBUSU9OLAorCURPX1ZBUklBQkxFCiB9IER1bXBhYmxlT2JqZWN0VHlwZTsK IAogLyogY29tcG9uZW50IHR5cGVzIG9mIGFuIG9iamVjdCB3aGljaCBjYW4gYmUgc2VsZWN0ZWQg Zm9yIGR1bXBpbmcgKi8KQEAgLTYyNSw2ICs2MjYsMjIgQEAgdHlwZWRlZiBzdHJ1Y3QgX1N1YnNj cmlwdGlvbkluZm8KIAljaGFyCSAgICpzdWJwdWJsaWNhdGlvbnM7CiB9IFN1YnNjcmlwdGlvbklu Zm87CiAKKy8qCisgKiBUaGUgVmFyaWFibGVJbmZvIHN0cnVjdCBpcyB1c2VkIHRvIHJlcHJlc2Vu dCBzY2hlbWEgdmFyaWFibGVzCisgKi8KK3R5cGVkZWYgc3RydWN0IF9WYXJpYWJsZUluZm8KK3sK KwlEdW1wYWJsZU9iamVjdCBkb2JqOworCU9pZAkJCXZhcnR5cGU7CisJY2hhcgkgICAqdmFydHlw bmFtZTsKKwljaGFyCSAgICpyb2xuYW1lOwkJLyogbmFtZSBvZiBvd25lciwgb3IgZW1wdHkgc3Ry aW5nICovCisJY2hhcgkgICAqdmFyZGVmZXhwcjsKKwljaGFyCSAgICp2YXJhY2w7CisJY2hhcgkg ICAqcnZhcmFjbDsKKwljaGFyCSAgICppbml0dmFyYWNsOworCWNoYXIJICAgKmluaXRydmFyYWNs OworfSBWYXJpYWJsZUluZm87CisKIC8qCiAgKiBXZSBidWlsZCBhbiBhcnJheSBvZiB0aGVzZSB3 aXRoIGFuIGVudHJ5IGZvciBlYWNoIG9iamVjdCB0aGF0IGlzIGFuCiAgKiBleHRlbnNpb24gbWVt YmVyIGFjY29yZGluZyB0byBwZ19kZXBlbmQuCkBAIC03MjUsNSArNzQyLDYgQEAgZXh0ZXJuIHZv aWQgZ2V0UHVibGljYXRpb25zKEFyY2hpdmUgKmZvdXQpOwogZXh0ZXJuIHZvaWQgZ2V0UHVibGlj YXRpb25UYWJsZXMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvIHRibGluZm9bXSwKIAkJCQkJIGlu dCBudW1UYWJsZXMpOwogZXh0ZXJuIHZvaWQgZ2V0U3Vic2NyaXB0aW9ucyhBcmNoaXZlICpmb3V0 KTsKK2V4dGVybiB2b2lkIGdldFZhcmlhYmxlcyhBcmNoaXZlICpmb3V0KTsKIAogI2VuZGlmCQkJ CQkJCS8qIFBHX0RVTVBfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3Bn X2R1bXAucGwgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbAppbmRleCBlYzc1MWE3 YzIzLi4yYTY3NzY2ZWQ0IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVt cC5wbAorKysgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbApAQCAtMjYwMSw2ICsy NjAxLDM4IEBAIG15ICV0ZXN0cyA9ICgKIAkJfSwKIAl9LAogCisJJ0NSRUFURSBWQVJJQUJMRSB0 ZXN0X3ZhcmlhYmxlJyA9PiB7CisJCWFsbF9ydW5zICAgICA9PiAxLAorCQljYXRjaF9hbGwgICAg PT4gJ0NSRUFURSAuLi4gY29tbWFuZHMnLAorCQljcmVhdGVfb3JkZXIgPT4gNjEsCisJCWNyZWF0 ZV9zcWwgICA9PiAnQ1JFQVRFIFZBUklBQkxFIGR1bXBfdGVzdC52YXJpYWJsZSBBUyBpbnRlZ2Vy IERFRkFVTFQgMDsnLAorCQlyZWdleHAgPT4gcXIvXgorCQkJXFFDUkVBVEUgVkFSSUFCTEUgZHVt cF90ZXN0LnZhcmlhYmxlIEFTIGludGVnZXIgREVGQVVMVCAwO1xFL3htLAorCQlsaWtlID0+IHsK KwkJCWJpbmFyeV91cGdyYWRlICAgICAgICAgID0+IDEsCisJCQljbGVhbiAgICAgICAgICAgICAg ICAgICA9PiAxLAorCQkJY2xlYW5faWZfZXhpc3RzICAgICAgICAgPT4gMSwKKwkJCWNyZWF0ZWRi ICAgICAgICAgICAgICAgID0+IDEsCisJCQlkZWZhdWx0cyAgICAgICAgICAgICAgICA9PiAxLAor CQkJZXhjbHVkZV90ZXN0X3RhYmxlICAgICAgPT4gMSwKKwkJCWV4Y2x1ZGVfdGVzdF90YWJsZV9k YXRhID0+IDEsCisJCQlub19ibG9icyAgICAgICAgICAgICAgICA9PiAxLAorCQkJbm9fcHJpdnMg ICAgICAgICAgICAgICAgPT4gMSwKKwkJCW5vX293bmVyICAgICAgICAgICAgICAgID0+IDEsCisJ CQlvbmx5X2R1bXBfdGVzdF9zY2hlbWEgICA9PiAxLAorCQkJcGdfZHVtcGFsbF9kYnByaXZzICAg ICAgPT4gMSwKKwkJCXNjaGVtYV9vbmx5ICAgICAgICAgICAgID0+IDEsCisJCQlzZWN0aW9uX3By ZV9kYXRhICAgICAgICA9PiAxLAorCQkJdGVzdF9zY2hlbWFfcGx1c19ibG9icyAgPT4gMSwKKwkJ CXdpdGhfb2lkcyAgICAgICAgICAgICAgID0+IDEsIH0sCisJCXVubGlrZSA9PiB7CisJCQlleGNs dWRlX2R1bXBfdGVzdF9zY2hlbWEgPT4gMSwKKwkJCW9ubHlfZHVtcF90ZXN0X3RhYmxlICAgICA9 PiAxLAorCQkJcGdfZHVtcGFsbF9nbG9iYWxzICAgICAgID0+IDEsCisJCQlwZ19kdW1wYWxsX2ds b2JhbHNfY2xlYW4gPT4gMSwKKwkJCXJvbGUgICAgICAgICAgICAgICAgICAgICA9PiAxLAorCQkJ c2VjdGlvbl9wb3N0X2RhdGEgICAgICAgID0+IDEsIH0sIH0sCisKIAknQ1JFQVRFIFZJRVcgdGVz dF92aWV3JyA9PiB7CiAJCWNyZWF0ZV9vcmRlciA9PiA2MSwKIAkJY3JlYXRlX3NxbCAgID0+ICdD UkVBVEUgVklFVyBkdW1wX3Rlc3QudGVzdF92aWV3CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwv Y29tbWFuZC5jIGIvc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYwppbmRleCA1YjRkNTRhNDQyLi43M2E3 NTJmZDdlIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvY29tbWFuZC5jCisrKyBiL3NyYy9iaW4v cHNxbC9jb21tYW5kLmMKQEAgLTg1Myw2ICs4NTMsOSBAQCBleGVjX2NvbW1hbmRfZChQc3FsU2Nh blN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCwgY29uc3QgY2hhciAqY21kKQog CQkJCQkJYnJlYWs7CiAJCQkJfQogCQkJCWJyZWFrOworCQkJY2FzZSAnVic6CQkJLyogVmFyaWFi bGVzICovCisJCQkJc3VjY2VzcyA9IGxpc3RWYXJpYWJsZXMocGF0dGVybiwgc2hvd192ZXJib3Nl KTsKKwkJCQlicmVhazsKIAkJCWNhc2UgJ3gnOgkJCS8qIEV4dGVuc2lvbnMgKi8KIAkJCQlpZiAo c2hvd192ZXJib3NlKQogCQkJCQlzdWNjZXNzID0gbGlzdEV4dGVuc2lvbkNvbnRlbnRzKHBhdHRl cm4pOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgYi9zcmMvYmluL3BzcWwv ZGVzY3JpYmUuYwppbmRleCA4MGQ4MzM4Yjk2Li5kNjQ1YmJhN2FmIDEwMDY0NAotLS0gYS9zcmMv YmluL3BzcWwvZGVzY3JpYmUuYworKysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwpAQCAtNDE3 OCw2ICs0MTc4LDgwIEBAIGxpc3RTY2hlbWFzKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVy Ym9zZSwgYm9vbCBzaG93U3lzdGVtKQogCXJldHVybiB0cnVlOwogfQogCisvKgorICogXGRWCisg KgorICogbGlzdFZhcmlhYmxlcygpCisgKi8KK2Jvb2wKK2xpc3RWYXJpYWJsZXMoY29uc3QgY2hh ciAqcGF0dGVybiwgYm9vbCB2ZXJib3NlKQoreworCVBRRXhwQnVmZmVyRGF0YSBidWY7CisJUEdy ZXN1bHQgICAqcmVzOworCXByaW50UXVlcnlPcHQgbXlvcHQgPSBwc2V0LnBvcHQ7CisJc3RhdGlj IGNvbnN0IGJvb2wgdHJhbnNsYXRlX2NvbHVtbnNbXSA9IHtmYWxzZSwgZmFsc2UsIGZhbHNlLCBm YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZX07CisKKwlpbml0UFFFeHBCdWZmZXIoJmJ1Zik7CisK KwlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkgICJTRUxFQ1Qgbi5uc3BuYW1lIGFzIFwi JXNcIixcbiIKKwkJCQkJICAiICB2LnZhcm5hbWUgYXMgXCIlc1wiLFxuIgorCQkJCQkgICIgIHBn X2NhdGFsb2cuZm9ybWF0X3R5cGUodi52YXJ0eXBlLCB2LnZhcnR5cG1vZCkgYXMgXCIlc1wiLFxu IgorCQkJCQkgICIgIHBnX2NhdGFsb2cucGdfZ2V0X3VzZXJieWlkKHYudmFyb3duZXIpIGFzIFwi JXNcIixcbiIKKwkJCQkJICAiICBwZ19jYXRhbG9nLnBnX2dldF9leHByKHYudmFyZGVmZXhwciwg MCkgYXMgXCIlc1wiIiwKKwkJCQkJICBnZXR0ZXh0X25vb3AoIlNjaGVtYSIpLAorCQkJCQkgIGdl dHRleHRfbm9vcCgiTmFtZSIpLAorCQkJCQkgIGdldHRleHRfbm9vcCgiVHlwZSIpLAorCQkJCQkg IGdldHRleHRfbm9vcCgiT3duZXIiKSwKKwkJCQkJICBnZXR0ZXh0X25vb3AoIkRlZmF1bHQiKSk7 CisKKwlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLAorCQkJCQkJICJcbkZST00gcGdfY2F0YWxv Zy5wZ192YXJpYWJsZSB2IgorCQkJCQkJICJcbiAgICAgTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdf bmFtZXNwYWNlIG4gT04gbi5vaWQgPSB2LnZhcm5hbWVzcGFjZSIpOworCisJYXBwZW5kUFFFeHBC dWZmZXJTdHIoJmJ1ZiwgIlxuV0hFUkUgdHJ1ZVxuIik7CisJaWYgKCFwYXR0ZXJuKQorCQlhcHBl bmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiICAgICAgQU5EIG4ubnNwbmFtZSA8PiAncGdfY2F0YWxv ZydcbiIKKwkJCQkJCQkgIiAgICAgIEFORCBuLm5zcG5hbWUgPD4gJ2luZm9ybWF0aW9uX3NjaGVt YSdcbiIpOworCisJcHJvY2Vzc1NRTE5hbWVQYXR0ZXJuKHBzZXQuZGIsICZidWYsIHBhdHRlcm4s IHRydWUsIGZhbHNlLAorCQkJCQkJICAibi5uc3BuYW1lIiwgInYudmFybmFtZSIsIE5VTEwsCisJ CQkJCQkgICJwZ19jYXRhbG9nLnBnX3ZhcmlhYmxlX2lzX3Zpc2libGUodi5vaWQpIik7CisKKwlh cHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiT1JERVIgQlkgMSwyOyIpOworCisJcmVzID0gUFNR TGV4ZWMoYnVmLmRhdGEpOworCXRlcm1QUUV4cEJ1ZmZlcigmYnVmKTsKKwlpZiAoIXJlcykKKwkJ cmV0dXJuIGZhbHNlOworCisJLyoKKwkgKiBNb3N0IGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUgYXJl IGNvbnRlbnQgdG8gcHJpbnQgYW4gZW1wdHkgdGFibGUgd2hlbgorCSAqIHRoZXJlIGFyZSBubyBt YXRjaGluZyBvYmplY3RzLiAgV2UgaW50ZW50aW9uYWxseSBkZXZpYXRlIGZyb20gdGhhdAorCSAq IGhlcmUsIGJ1dCBvbmx5IGluICFxdWlldCBtb2RlLCBmb3IgaGlzdG9yaWNhbCByZWFzb25zLgor CSAqLworCWlmIChQUW50dXBsZXMocmVzKSA9PSAwICYmICFwc2V0LnF1aWV0KQorCXsKKwkJaWYg KHBhdHRlcm4pCisJCQlwc3FsX2Vycm9yKCJEaWQgbm90IGZpbmQgYW55IHNjaGVtYSB2YXJpYWJs ZSBuYW1lZCBcIiVzXCIuXG4iLAorCQkJCQkgICBwYXR0ZXJuKTsKKwkJZWxzZQorCQkJcHNxbF9l cnJvcigiRGlkIG5vdCBmaW5kIGFueSBzY2hlbWEgdmFyaWFibGVzLlxuIik7CisJfQorCWVsc2UK Kwl7CisJCW15b3B0Lm51bGxQcmludCA9IE5VTEw7CisJCW15b3B0LnRpdGxlID0gXygiTGlzdCBv ZiB2YXJpYWJsZXMiKTsKKwkJbXlvcHQudHJhbnNsYXRlX2hlYWRlciA9IHRydWU7CisJCW15b3B0 LnRyYW5zbGF0ZV9jb2x1bW5zID0gdHJhbnNsYXRlX2NvbHVtbnM7CisJCW15b3B0Lm5fdHJhbnNs YXRlX2NvbHVtbnMgPSBsZW5ndGhvZih0cmFuc2xhdGVfY29sdW1ucyk7CisKKwkJcHJpbnRRdWVy eShyZXMsICZteW9wdCwgcHNldC5xdWVyeUZvdXQsIGZhbHNlLCBwc2V0LmxvZ2ZpbGUpOworCX0K KworCVBRY2xlYXIocmVzKTsKKwlyZXR1cm4gdHJ1ZTsKK30KIAogLyoKICAqIFxkRnAKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5oIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmgK aW5kZXggYTRjYzVlZmFlMC4uZWNjNGUzYTUzMSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Rl c2NyaWJlLmgKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmgKQEAgLTYzLDYgKzYzLDkgQEAg ZXh0ZXJuIGJvb2wgbGlzdEFsbERicyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2Up OwogLyogXGR0LCBcZGksIFxkcywgXGRTLCBldGMuICovCiBleHRlcm4gYm9vbCBsaXN0VGFibGVz KGNvbnN0IGNoYXIgKnRhYnR5cGVzLCBjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2Us IGJvb2wgc2hvd1N5c3RlbSk7CiAKKy8qIFxkViAqLworZXh0ZXJuIGJvb2wgbGlzdFZhcmlhYmxl cyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZhcmJvc2UpOworCiAvKiBcZEQgKi8KIGV4dGVy biBib29sIGxpc3REb21haW5zKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSwgYm9v bCBzaG93U3lzdGVtKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2hlbHAuYyBiL3NyYy9i aW4vcHNxbC9oZWxwLmMKaW5kZXggMzE2MDMwZDM1OC4uYWRjYzM2Y2I2ZSAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9wc3FsL2hlbHAuYworKysgYi9zcmMvYmluL3BzcWwvaGVscC5jCkBAIC0xNjcsNyAr MTY3LDcgQEAgc2xhc2hVc2FnZSh1bnNpZ25lZCBzaG9ydCBpbnQgcGFnZXIpCiAJICogVXNlICJw c3FsIC0taGVscD1jb21tYW5kcyB8IHdjIiB0byBjb3VudCBjb3JyZWN0bHkuICBJdCdzIG9rYXkg dG8gY291bnQKIAkgKiB0aGUgVVNFX1JFQURMSU5FIGxpbmUgZXZlbiBpbiBidWlsZHMgd2l0aG91 dCB0aGF0LgogCSAqLwotCW91dHB1dCA9IFBhZ2VPdXRwdXQoMTI1LCBwYWdlciA/ICYocHNldC5w b3B0LnRvcHQpIDogTlVMTCk7CisJb3V0cHV0ID0gUGFnZU91dHB1dCgxMjYsIHBhZ2VyID8gJihw c2V0LnBvcHQudG9wdCkgOiBOVUxMKTsKIAogCWZwcmludGYob3V0cHV0LCBfKCJHZW5lcmFsXG4i KSk7CiAJZnByaW50ZihvdXRwdXQsIF8oIiAgXFxjb3B5cmlnaHQgICAgICAgICAgICAgc2hvdyBQ b3N0Z3JlU1FMIHVzYWdlIGFuZCBkaXN0cmlidXRpb24gdGVybXNcbiIpKTsKQEAgLTI1Nyw2ICsy NTcsNyBAQCBzbGFzaFVzYWdlKHVuc2lnbmVkIHNob3J0IGludCBwYWdlcikKIAlmcHJpbnRmKG91 dHB1dCwgXygiICBcXGRUW1MrXSBbUEFUVEVSTl0gICAgICBsaXN0IGRhdGEgdHlwZXNcbiIpKTsK IAlmcHJpbnRmKG91dHB1dCwgXygiICBcXGR1W1MrXSBbUEFUVEVSTl0gICAgICBsaXN0IHJvbGVz XG4iKSk7CiAJZnByaW50ZihvdXRwdXQsIF8oIiAgXFxkdltTK10gW1BBVFRFUk5dICAgICAgbGlz dCB2aWV3c1xuIikpOworCWZwcmludGYob3V0cHV0LCBfKCIgIFxcZFYgICAgIFtQQVRURVJOXSAg ICAgIGxpc3QgdmFyaWFibGVzXG4iKSk7CiAJZnByaW50ZihvdXRwdXQsIF8oIiAgXFxkeFsrXSAg W1BBVFRFUk5dICAgICAgbGlzdCBleHRlbnNpb25zXG4iKSk7CiAJZnByaW50ZihvdXRwdXQsIF8o IiAgXFxkeSAgICAgW1BBVFRFUk5dICAgICAgbGlzdCBldmVudCB0cmlnZ2Vyc1xuIikpOwogCWZw cmludGYob3V0cHV0LCBfKCIgIFxcbFsrXSAgIFtQQVRURVJOXSAgICAgIGxpc3QgZGF0YWJhc2Vz XG4iKSk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMgYi9zcmMvYmlu L3BzcWwvdGFiLWNvbXBsZXRlLmMKaW5kZXggYmI2OTZmOGVlOS4uYTc1ODM4MTBlOCAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWIt Y29tcGxldGUuYwpAQCAtODA1LDYgKzgwNSwyMiBAQCBzdGF0aWMgY29uc3QgU2NoZW1hUXVlcnkg UXVlcnlfZm9yX2xpc3Rfb2Zfc3RhdGlzdGljcyA9IHsKIAlOVUxMCiB9OwogCitzdGF0aWMgY29u c3QgU2NoZW1hUXVlcnkgUXVlcnlfZm9yX2xpc3Rfb2ZfdmFyaWFibGVzID0geworCS8qIG1pbl9z ZXJ2ZXJfdmVyc2lvbiAqLworCTAsCisJLyogY2F0bmFtZSAqLworCSJwZ19jYXRhbG9nLnBnX3Zh cmlhYmxlIHYiLAorCS8qIHNlbGNvbmRpdGlvbiAqLworCU5VTEwsCisJLyogdmlzY29uZGl0aW9u ICovCisJInBnX2NhdGFsb2cucGdfdmFyaWFibGVfaXNfdmlzaWJsZSh2Lm9pZCkiLAorCS8qIG5h bWVzcGFjZSAqLworCSJ2LnZhcm5hbWVzcGFjZSIsCisJLyogcmVzdWx0ICovCisJInBnX2NhdGFs b2cucXVvdGVfaWRlbnQodi52YXJuYW1lKSIsCisJLyogcXVhbHJlc3VsdCAqLworCU5VTEwKK307 CiAKIC8qCiAgKiBRdWVyaWVzIHRvIGdldCBsaXN0cyBvZiBuYW1lcyBvZiB2YXJpb3VzIGtpbmRz IG9mIHRoaW5ncywgcG9zc2libHkKQEAgLTEyNDksNiArMTI2NSw3IEBAIHN0YXRpYyBjb25zdCBw Z3NxbF90aGluZ190IHdvcmRzX2FmdGVyX2NyZWF0ZVtdID0gewogCQkJCQkJCQkJCQkJCQkJCQkg KiBUQUJMRSAuLi4gKi8KIAl7IlVTRVIiLCBRdWVyeV9mb3JfbGlzdF9vZl9yb2xlcyAiIFVOSU9O IFNFTEVDVCAnTUFQUElORyBGT1InIn0sCiAJeyJVU0VSIE1BUFBJTkcgRk9SIiwgTlVMTCwgTlVM TCwgTlVMTH0sCisJeyJWQVJJQUJMRSIsIE5VTEwsIE5VTEwsICZRdWVyeV9mb3JfbGlzdF9vZl92 YXJpYWJsZXN9LAogCXsiVklFVyIsIE5VTEwsIE5VTEwsICZRdWVyeV9mb3JfbGlzdF9vZl92aWV3 c30sCiAJe05VTEx9CQkJCQkJLyogZW5kIG9mIGxpc3QgKi8KIH07CkBAIC0xNjA0LDcgKzE2MjEs NyBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5k KQogCQkiQUJPUlQiLCAiQUxURVIiLCAiQU5BTFlaRSIsICJCRUdJTiIsICJDQUxMIiwgIkNIRUNL UE9JTlQiLCAiQ0xPU0UiLCAiQ0xVU1RFUiIsCiAJCSJDT01NRU5UIiwgIkNPTU1JVCIsICJDT1BZ IiwgIkNSRUFURSIsICJERUFMTE9DQVRFIiwgIkRFQ0xBUkUiLAogCQkiREVMRVRFIEZST00iLCAi RElTQ0FSRCIsICJETyIsICJEUk9QIiwgIkVORCIsICJFWEVDVVRFIiwgIkVYUExBSU4iLAotCQki RkVUQ0giLCAiR1JBTlQiLCAiSU1QT1JUIiwgIklOU0VSVCIsICJMSVNURU4iLCAiTE9BRCIsICJM T0NLIiwKKwkJIkZFVENIIiwgIkdSQU5UIiwgIklNUE9SVCIsICJJTlNFUlQiLCAiTEVUIiwgIkxJ U1RFTiIsICJMT0FEIiwgIkxPQ0siLAogCQkiTU9WRSIsICJOT1RJRlkiLCAiUFJFUEFSRSIsCiAJ CSJSRUFTU0lHTiIsICJSRUZSRVNIIE1BVEVSSUFMSVpFRCBWSUVXIiwgIlJFSU5ERVgiLCAiUkVM RUFTRSIsCiAJCSJSRVNFVCIsICJSRVZPS0UiLCAiUk9MTEJBQ0siLApAQCAtMTYyMSw5ICsxNjM4 LDkgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVu ZCkKIAkJIlxcZCIsICJcXGRhIiwgIlxcZEEiLCAiXFxkYiIsICJcXGRjIiwgIlxcZEMiLCAiXFxk ZCIsICJcXGRkcCIsICJcXGREIiwKIAkJIlxcZGVzIiwgIlxcZGV0IiwgIlxcZGV1IiwgIlxcZGV3 IiwgIlxcZEUiLCAiXFxkZiIsCiAJCSJcXGRGIiwgIlxcZEZkIiwgIlxcZEZwIiwgIlxcZEZ0Iiwg IlxcZGciLCAiXFxkaSIsICJcXGRsIiwgIlxcZEwiLAotCQkiXFxkbSIsICJcXGRuIiwgIlxcZG8i LCAiXFxkTyIsICJcXGRwIiwKKwkJIlxcZG0iLCAiXFxkbiIsICJcXGRvIiwgIlxcZE8iLCAiXFxk cCIKIAkJIlxcZHJkcyIsICJcXGRScyIsICJcXGRScCIsICJcXGRzIiwgIlxcZFMiLAotCQkiXFxk dCIsICJcXGRUIiwgIlxcZHYiLCAiXFxkdSIsICJcXGR4IiwgIlxcZHkiLAorCQkiXFxkdCIsICJc XGRUIiwgIlxcZHYiLCAiXFxkdSIsICJcXGR4IiwgIlxcZHkiLCAiXFxkViIsCiAJCSJcXGUiLCAi XFxlY2hvIiwgIlxcZWYiLCAiXFxlbGlmIiwgIlxcZWxzZSIsICJcXGVuY29kaW5nIiwKIAkJIlxc ZW5kaWYiLCAiXFxlcnJ2ZXJib3NlIiwgIlxcZXYiLAogCQkiXFxmIiwKQEAgLTE5ODgsNiArMjAw NSw5IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBl bmQpCiAJCUNPTVBMRVRFX1dJVEhfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfYWx0ZXJfc3lzdGVt X3NldF92YXJzKTsKIAllbHNlIGlmIChNYXRjaGVzNCgiQUxURVIiLCAiU1lTVEVNIiwgIlNFVCIs IE1hdGNoQW55KSkKIAkJQ09NUExFVEVfV0lUSF9DT05TVCgiVE8iKTsKKwkvKiBBTFRFUiBWQVJJ QUJMRSA8bmFtZT4gKi8KKwllbHNlIGlmIChNYXRjaGVzMygiQUxURVIiLCAiVkFSSUFCTEUiLCBN YXRjaEFueSkpCisJCUNPTVBMRVRFX1dJVEhfTElTVDMoIk9XTkVSIFRPIiwgIlJFTkFNRSBUTyIs ICJTRVQgU0NIRU1BIik7CiAJLyogQUxURVIgVklFVyA8bmFtZT4gKi8KIAllbHNlIGlmIChNYXRj aGVzMygiQUxURVIiLCAiVklFVyIsIE1hdGNoQW55KSkKIAkJQ09NUExFVEVfV0lUSF9MSVNUNCgi QUxURVIgQ09MVU1OIiwgIk9XTkVSIFRPIiwgIlJFTkFNRSBUTyIsCkBAIC0yODM3LDYgKzI4NTcs MTQgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVu ZCkKIAllbHNlIGlmIChNYXRjaGVzNCgiQ1JFQVRFIiwgIlJPTEV8VVNFUnxHUk9VUCIsIE1hdGNo QW55LCAiSU4iKSkKIAkJQ09NUExFVEVfV0lUSF9MSVNUMigiR1JPVVAiLCAiUk9MRSIpOwogCisv KiBDUkVBVEUgVkFSSUFCTEUgLS0tIGlzIGFsbG93ZWQgaW5zaWRlIENSRUFURSBTQ0hFTUEsIHNv IHVzZSBUYWlsTWF0Y2hlcyAqLworCS8qIENvbXBsZXRlIENSRUFURSBWQVJJQUJMRSA8bmFtZT4g d2l0aCBBUyAqLworCWVsc2UgaWYgKFRhaWxNYXRjaGVzMygiQ1JFQVRFIiwgIlZBUklBQkxFIiwg TWF0Y2hBbnkpKQorCQlDT01QTEVURV9XSVRIX0NPTlNUKCJBUyIpOworCS8qIENvbXBsZXRlIENS RUFURSBWQVJJQUJMRSA8bmFtZT4gd2l0aCBBUyB0eXBlcyovCisJZWxzZSBpZiAoVGFpbE1hdGNo ZXM0KCJDUkVBVEUiLCAiVkFSSUFCTEUiLCBNYXRjaEFueSwgIkFTIikpCisJCUNPTVBMRVRFX1dJ VEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX2RhdGF0eXBlcywgTlVMTCk7CisKIC8q IENSRUFURSBWSUVXIC0tLSBpcyBhbGxvd2VkIGluc2lkZSBDUkVBVEUgU0NIRU1BLCBzbyB1c2Ug VGFpbE1hdGNoZXMgKi8KIAkvKiBDb21wbGV0ZSBDUkVBVEUgVklFVyA8bmFtZT4gd2l0aCBBUyAq LwogCWVsc2UgaWYgKFRhaWxNYXRjaGVzMygiQ1JFQVRFIiwgIlZJRVciLCBNYXRjaEFueSkpCkBA IC0yODkwLDcgKzI5MTgsNyBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50 IHN0YXJ0LCBpbnQgZW5kKQogCiAvKiBESVNDQVJEICovCiAJZWxzZSBpZiAoTWF0Y2hlczEoIkRJ U0NBUkQiKSkKLQkJQ09NUExFVEVfV0lUSF9MSVNUNCgiQUxMIiwgIlBMQU5TIiwgIlNFUVVFTkNF UyIsICJURU1QIik7CisJCUNPTVBMRVRFX1dJVEhfTElTVDUoIkFMTCIsICJQTEFOUyIsICJTRVFV RU5DRVMiLCAiVEVNUCIsICJWQVJJQUJMRVMiKTsKIAogLyogRE8gKi8KIAllbHNlIGlmIChNYXRj aGVzMSgiRE8iKSkKQEAgLTI5OTIsNiArMzAyMCwxMiBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3Qg Y2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCWVsc2UgaWYgKE1hdGNoZXM1KCJEUk9Q IiwgIlJVTEUiLCBNYXRjaEFueSwgIk9OIiwgTWF0Y2hBbnkpKQogCQlDT01QTEVURV9XSVRIX0xJ U1QyKCJDQVNDQURFIiwgIlJFU1RSSUNUIik7CiAKKwkvKiBEUk9QIFZBUklBQkxFICovCisJZWxz ZSBpZiAoTWF0Y2hlczIoIkRST1AiLCAiVkFSSUFCTEUiKSkKKwkJQ09NUExFVEVfV0lUSF9TQ0hF TUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfdmFyaWFibGVzLCBOVUxMKTsKKwllbHNlIGlmIChN YXRjaGVzMygiRFJPUCIsICJWQVJJQUJMRSIsIE1hdGNoQW55KSkKKwkJQ09NUExFVEVfV0lUSF9M SVNUMigiQ0FTQ0FERSIsICJSRVNUUklDVCIpOworCiAvKiBFWEVDVVRFICovCiAJZWxzZSBpZiAo TWF0Y2hlczEoIkVYRUNVVEUiKSkKIAkJQ09NUExFVEVfV0lUSF9RVUVSWShRdWVyeV9mb3JfbGlz dF9vZl9wcmVwYXJlZF9zdGF0ZW1lbnRzKTsKQEAgLTMwMDIsMTQgKzMwMzYsMTQgQEAgcHNxbF9j b21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAkgKiBDb21w bGV0ZSBFWFBMQUlOIFtBTkFMWVpFXSBbVkVSQk9TRV0gd2l0aCBsaXN0IG9mIEVYUExBSU4tYWJs ZSBjb21tYW5kcwogCSAqLwogCWVsc2UgaWYgKE1hdGNoZXMxKCJFWFBMQUlOIikpCi0JCUNPTVBM RVRFX1dJVEhfTElTVDcoIlNFTEVDVCIsICJJTlNFUlQiLCAiREVMRVRFIiwgIlVQREFURSIsICJE RUNMQVJFIiwKLQkJCQkJCQkiQU5BTFlaRSIsICJWRVJCT1NFIik7CisJCUNPTVBMRVRFX1dJVEhf TElTVDgoIlNFTEVDVCIsICJJTlNFUlQiLCAiREVMRVRFIiwgIlVQREFURSIsICJERUNMQVJFIiwK KwkJCQkJCQkiQU5BTFlaRSIsICJWRVJCT1NFIiwgIkxFVCIpOwogCWVsc2UgaWYgKE1hdGNoZXMy KCJFWFBMQUlOIiwgIkFOQUxZWkUiKSkKLQkJQ09NUExFVEVfV0lUSF9MSVNUNigiU0VMRUNUIiwg IklOU0VSVCIsICJERUxFVEUiLCAiVVBEQVRFIiwgIkRFQ0xBUkUiLAotCQkJCQkJCSJWRVJCT1NF Iik7CisJCUNPTVBMRVRFX1dJVEhfTElTVDcoIlNFTEVDVCIsICJJTlNFUlQiLCAiREVMRVRFIiwg IlVQREFURSIsICJERUNMQVJFIiwKKwkJCQkJCQkiVkVSQk9TRSIsICJMRVQiKTsKIAllbHNlIGlm IChNYXRjaGVzMigiRVhQTEFJTiIsICJWRVJCT1NFIikgfHwKIAkJCSBNYXRjaGVzMygiRVhQTEFJ TiIsICJBTkFMWVpFIiwgIlZFUkJPU0UiKSkKLQkJQ09NUExFVEVfV0lUSF9MSVNUNSgiU0VMRUNU IiwgIklOU0VSVCIsICJERUxFVEUiLCAiVVBEQVRFIiwgIkRFQ0xBUkUiKTsKKwkJQ09NUExFVEVf V0lUSF9MSVNUNigiU0VMRUNUIiwgIklOU0VSVCIsICJERUxFVEUiLCAiVVBEQVRFIiwgIkRFQ0xB UkUiLCAiTEVUIik7CiAKIC8qIEZFVENIICYmIE1PVkUgKi8KIAkvKiBDb21wbGV0ZSBGRVRDSCB3 aXRoIG9uZSBvZiBGT1JXQVJELCBCQUNLV0FSRCwgUkVMQVRJVkUgKi8KQEAgLTMxMTgsNiArMzE1 Miw3IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBl bmQpCiAJCQkJCQkJCQkgICAiIFVOSU9OIFNFTEVDVCAnQUxMIFJPVVRJTkVTIElOIFNDSEVNQSci CiAJCQkJCQkJCQkgICAiIFVOSU9OIFNFTEVDVCAnQUxMIFNFUVVFTkNFUyBJTiBTQ0hFTUEnIgog CQkJCQkJCQkJICAgIiBVTklPTiBTRUxFQ1QgJ0FMTCBUQUJMRVMgSU4gU0NIRU1BJyIKKwkJCQkJ CQkJCSAgICIgVU5JT04gU0VMRUNUICdBTEwgVkFSSUFCTEVTIElOIFNDSEVNQSciCiAJCQkJCQkJ CQkgICAiIFVOSU9OIFNFTEVDVCAnREFUQUJBU0UnIgogCQkJCQkJCQkJICAgIiBVTklPTiBTRUxF Q1QgJ0RPTUFJTiciCiAJCQkJCQkJCQkgICAiIFVOSU9OIFNFTEVDVCAnRk9SRUlHTiBEQVRBIFdS QVBQRVInIgpAQCAtMzEzMSwxNCArMzE2NiwxNiBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hh ciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCQkJCQkJCQkJICAgIiBVTklPTiBTRUxFQ1Qg J1NFUVVFTkNFJyIKIAkJCQkJCQkJCSAgICIgVU5JT04gU0VMRUNUICdUQUJMRSciCiAJCQkJCQkJ CQkgICAiIFVOSU9OIFNFTEVDVCAnVEFCTEVTUEFDRSciCi0JCQkJCQkJCQkgICAiIFVOSU9OIFNF TEVDVCAnVFlQRSciKTsKKwkJCQkJCQkJCSAgICIgVU5JT04gU0VMRUNUICdUWVBFJyIKKwkJCQkJ CQkJCSAgICIgVU5JT04gU0VMRUNUICdWQVJJQUJMRSciKTsKIAl9CiAJZWxzZSBpZiAoVGFpbE1h dGNoZXM0KCJHUkFOVHxSRVZPS0UiLCBNYXRjaEFueSwgIk9OIiwgIkFMTCIpKQotCQlDT01QTEVU RV9XSVRIX0xJU1Q1KCJGVU5DVElPTlMgSU4gU0NIRU1BIiwKKwkJQ09NUExFVEVfV0lUSF9MSVNU NigiRlVOQ1RJT05TIElOIFNDSEVNQSIsCiAJCQkJCQkJIlBST0NFRFVSRVMgSU4gU0NIRU1BIiwK IAkJCQkJCQkiUk9VVElORVMgSU4gU0NIRU1BIiwKIAkJCQkJCQkiU0VRVUVOQ0VTIElOIFNDSEVN QSIsCi0JCQkJCQkJIlRBQkxFUyBJTiBTQ0hFTUEiKTsKKwkJCQkJCQkiVEFCTEVTIElOIFNDSEVN QSIsCisJCQkJCQkJIlZBUklBQkxFUyBJTiBTQ0hFTUEiKTsKIAllbHNlIGlmIChUYWlsTWF0Y2hl czQoIkdSQU5UfFJFVk9LRSIsIE1hdGNoQW55LCAiT04iLCAiRk9SRUlHTiIpKQogCQlDT01QTEVU RV9XSVRIX0xJU1QyKCJEQVRBIFdSQVBQRVIiLCAiU0VSVkVSIik7CiAKQEAgLTMxNzIsNiArMzIw OSw4IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBl bmQpCiAJCQlDT01QTEVURV9XSVRIX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3RhYmxlc3BhY2Vz KTsKIAkJZWxzZSBpZiAoVGFpbE1hdGNoZXMxKCJUWVBFIikpCiAJCQlDT01QTEVURV9XSVRIX1ND SEVNQV9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl9kYXRhdHlwZXMsIE5VTEwpOworCQllbHNlIGlm IChUYWlsTWF0Y2hlczEoIlZBUklBQkxFIikpCisJCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVS WShRdWVyeV9mb3JfbGlzdF9vZl92YXJpYWJsZXMsIE5VTEwpOwogCQllbHNlIGlmIChUYWlsTWF0 Y2hlczQoIkdSQU5UIiwgTWF0Y2hBbnksIE1hdGNoQW55LCBNYXRjaEFueSkpCiAJCQlDT01QTEVU RV9XSVRIX0NPTlNUKCJUTyIpOwogCQllbHNlCkBAIC0zMzI0LDcgKzMzNjMsNyBAQCBwc3FsX2Nv bXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCiAvKiBQUkVQ QVJFIHh4IEFTICovCiAJZWxzZSBpZiAoTWF0Y2hlczMoIlBSRVBBUkUiLCBNYXRjaEFueSwgIkFT IikpCi0JCUNPTVBMRVRFX1dJVEhfTElTVDQoIlNFTEVDVCIsICJVUERBVEUiLCAiSU5TRVJUIiwg IkRFTEVURSBGUk9NIik7CisJCUNPTVBMRVRFX1dJVEhfTElTVDUoIlNFTEVDVCIsICJVUERBVEUi LCAiSU5TRVJUIiwgIkRFTEVURSBGUk9NIiwgIkxFVCIpOwogCiAvKgogICogUFJFUEFSRSBUUkFO U0FDVElPTiBpcyBtaXNzaW5nIG9uIHB1cnBvc2UuIEl0J3MgaW50ZW5kZWQgZm9yIHRyYW5zYWN0 aW9uCkBAIC0zNTQ3LDYgKzM1ODYsMTQgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRl eHQsIGludCBzdGFydCwgaW50IGVuZCkKIAllbHNlIGlmIChUYWlsTWF0Y2hlczQoIlVQREFURSIs IE1hdGNoQW55LCAiU0VUIiwgTWF0Y2hBbnkpKQogCQlDT01QTEVURV9XSVRIX0NPTlNUKCI9Iik7 CiAKKy8qIExFVCAtLS0gY2FuIGJlIGluc2lkZSBFWFBMQUlOLCBQUkVQQVJFIGV0YyAqLworCS8q IElmIHByZXYuIHdvcmQgaXMgTEVUIHN1Z2dlc3QgYSBsaXN0IG9mIHZhcmlhYmxlcyAqLworCWVs c2UgaWYgKFRhaWxNYXRjaGVzMSgiTEVUIikpCisJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZ KFF1ZXJ5X2Zvcl9saXN0X29mX3ZhcmlhYmxlcywgTlVMTCk7CisJLyogQ29tcGxldGUgTEVUIDx2 YXJpYWJsZT4gd2l0aCAiPSIgKi8KKwllbHNlIGlmIChUYWlsTWF0Y2hlczIoIkxFVCIsIE1hdGNo QW55KSkKKwkJQ09NUExFVEVfV0lUSF9DT05TVCgiPSIpOworCiAvKiBVU0VSIE1BUFBJTkcgKi8K IAllbHNlIGlmIChNYXRjaGVzMygiQUxURVJ8Q1JFQVRFfERST1AiLCAiVVNFUiIsICJNQVBQSU5H IikpCiAJCUNPTVBMRVRFX1dJVEhfQ09OU1QoIkZPUiIpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3ku aAppbmRleCA0NmMyNzFhNDZjLi4zZTM4YTA1ZTU1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9j YXRhbG9nL2RlcGVuZGVuY3kuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3ku aApAQCAtMTgwLDcgKzE4MCw4IEBAIHR5cGVkZWYgZW51bSBPYmplY3RDbGFzcwogCU9DTEFTU19Q VUJMSUNBVElPTiwJCQkvKiBwZ19wdWJsaWNhdGlvbiAqLwogCU9DTEFTU19QVUJMSUNBVElPTl9S RUwsCQkvKiBwZ19wdWJsaWNhdGlvbl9yZWwgKi8KIAlPQ0xBU1NfU1VCU0NSSVBUSU9OLAkJLyog cGdfc3Vic2NyaXB0aW9uICovCi0JT0NMQVNTX1RSQU5TRk9STQkJCS8qIHBnX3RyYW5zZm9ybSAq LworCU9DTEFTU19UUkFOU0ZPUk0sCQkJLyogcGdfdHJhbnNmb3JtICovCisJT0NMQVNTX1ZBUklB QkxFCQkJCS8qIHBnX3ZhcmlhYmxlICovCiB9IE9iamVjdENsYXNzOwogCiAjZGVmaW5lIExBU1Rf T0NMQVNTCQlPQ0xBU1NfVFJBTlNGT1JNCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9n L2luZGV4aW5nLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4aW5nLmgKaW5kZXggMjQ5MTU4 MjRjYS4uZGFlODBjMjBhOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleGlu Zy5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXhpbmcuaApAQCAtMzYwLDQgKzM2MCwx MCBAQCBERUNMQVJFX1VOSVFVRV9JTkRFWChwZ19zdWJzY3JpcHRpb25fc3VibmFtZV9pbmRleCwg NjExNSwgb24gcGdfc3Vic2NyaXB0aW9uIHVzaQogREVDTEFSRV9VTklRVUVfSU5ERVgocGdfc3Vi c2NyaXB0aW9uX3JlbF9zcnJlbGlkX3Nyc3ViaWRfaW5kZXgsIDYxMTcsIG9uIHBnX3N1YnNjcmlw dGlvbl9yZWwgdXNpbmcgYnRyZWUoc3JyZWxpZCBvaWRfb3BzLCBzcnN1YmlkIG9pZF9vcHMpKTsK ICNkZWZpbmUgU3Vic2NyaXB0aW9uUmVsU3JyZWxpZFNyc3ViaWRJbmRleElkIDYxMTcKIAorREVD TEFSRV9VTklRVUVfSU5ERVgocGdfdmFyaWFibGVfb2lkX2luZGV4LCA0Mjg4LCBvbiBwZ192YXJp YWJsZSB1c2luZyBidHJlZShvaWQgb2lkX29wcykpOworI2RlZmluZSBWYXJpYWJsZU9iamVjdElu ZGV4SWQgNDI4OAorCitERUNMQVJFX1VOSVFVRV9JTkRFWChwZ192YXJpYWJsZV92YXJuYW1lX25z cF9pbmRleCwgNDI4OSwgb24gcGdfdmFyaWFibGUgdXNpbmcgYnRyZWUodmFybmFtZSBuYW1lX29w cywgdmFybmFtZXNwYWNlIG9pZF9vcHMpKTsKKyNkZWZpbmUgVmFyaWFibGVOYW1lTnNwSW5kZXhJ ZCAgNDI4OQorCiAjZW5kaWYJCQkJCQkJLyogSU5ERVhJTkdfSCAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9uYW1lc3BhY2UuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvbmFtZXNw YWNlLmgKaW5kZXggNzk5MWRlNWUyMS4uNzUwNjhkN2U5MiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9uYW1lc3BhY2UuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL25hbWVzcGFj ZS5oCkBAIC03NSwxMCArNzUsMTMgQEAgZXh0ZXJuIE9pZCBSYW5nZVZhckdldEFuZENoZWNrQ3Jl YXRpb25OYW1lc3BhY2UoUmFuZ2VWYXIgKm5ld1JlbGF0aW9uLAogZXh0ZXJuIHZvaWQgUmFuZ2VW YXJBZGp1c3RSZWxhdGlvblBlcnNpc3RlbmNlKFJhbmdlVmFyICpuZXdSZWxhdGlvbiwgT2lkIG5z cGlkKTsKIGV4dGVybiBPaWQJUmVsbmFtZUdldFJlbGlkKGNvbnN0IGNoYXIgKnJlbG5hbWUpOwog ZXh0ZXJuIGJvb2wgUmVsYXRpb25Jc1Zpc2libGUoT2lkIHJlbGlkKTsKK2V4dGVybiBib29sIFZh cmlhYmxlSXNWaXNpYmxlKE9pZCByZWxpZCk7CiAKIGV4dGVybiBPaWQJVHlwZW5hbWVHZXRUeXBp ZChjb25zdCBjaGFyICp0eXBuYW1lKTsKIGV4dGVybiBib29sIFR5cGVJc1Zpc2libGUoT2lkIHR5 cGlkKTsKIAorZXh0ZXJuIGJvb2wgVmFyaWFibGVJc1Zpc2libGUoT2lkIHZhcmlkKTsKKwogZXh0 ZXJuIEZ1bmNDYW5kaWRhdGVMaXN0IEZ1bmNuYW1lR2V0Q2FuZGlkYXRlcyhMaXN0ICpuYW1lcywK IAkJCQkJICBpbnQgbmFyZ3MsIExpc3QgKmFyZ25hbWVzLAogCQkJCQkgIGJvb2wgZXhwYW5kX3Zh cmlhZGljLApAQCAtMTQ1LDYgKzE0OCwxMCBAQCBleHRlcm4gdm9pZCBTZXRUZW1wTmFtZXNwYWNl U3RhdGUoT2lkIHRlbXBOYW1lc3BhY2VJZCwKIAkJCQkJICBPaWQgdGVtcFRvYXN0TmFtZXNwYWNl SWQpOwogZXh0ZXJuIHZvaWQgUmVzZXRUZW1wVGFibGVOYW1lc3BhY2Uodm9pZCk7CiAKK2V4dGVy biBMaXN0ICpOYW1lc0Zyb21MaXN0KExpc3QgKm5hbWVzKTsKK2V4dGVybiBPaWQgbG9va3VwX3Zh cmlhYmxlKGNvbnN0IGNoYXIgKm5zcG5hbWUsIGNvbnN0IGNoYXIgKnZhcm5hbWUsIGJvb2wgbWlz c2luZ19vayk7CitleHRlcm4gT2lkIGlkZW50aWZ5X3ZhcmlhYmxlKExpc3QgKm5hbWVzLCBjaGFy ICoqYXR0cm5hbWUsIGJvb2wgKm5vdF91bmlxKTsKKwogZXh0ZXJuIE92ZXJyaWRlU2VhcmNoUGF0 aCAqR2V0T3ZlcnJpZGVTZWFyY2hQYXRoKE1lbW9yeUNvbnRleHQgY29udGV4dCk7CiBleHRlcm4g T3ZlcnJpZGVTZWFyY2hQYXRoICpDb3B5T3ZlcnJpZGVTZWFyY2hQYXRoKE92ZXJyaWRlU2VhcmNo UGF0aCAqcGF0aCk7CiBleHRlcm4gYm9vbCBPdmVycmlkZVNlYXJjaFBhdGhNYXRjaGVzQ3VycmVu dChPdmVycmlkZVNlYXJjaFBhdGggKnBhdGgpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19kZWZhdWx0X2FjbC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19kZWZhdWx0X2Fj bC5oCmluZGV4IGQwNDEwZjU1ODYuLjU2ZGVlZjFhNDUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfZGVmYXVsdF9hY2wuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2Rl ZmF1bHRfYWNsLmgKQEAgLTU3LDYgKzU3LDcgQEAgdHlwZWRlZiBGb3JtRGF0YV9wZ19kZWZhdWx0 X2FjbCAqRm9ybV9wZ19kZWZhdWx0X2FjbDsKICNkZWZpbmUgREVGQUNMT0JKX0ZVTkNUSU9OCQkn ZicgLyogZnVuY3Rpb24gKi8KICNkZWZpbmUgREVGQUNMT0JKX1RZUEUJCQknVCcgLyogdHlwZSAq LwogI2RlZmluZSBERUZBQ0xPQkpfTkFNRVNQQUNFCQknbicgLyogbmFtZXNwYWNlICovCisjZGVm aW5lIERFRkFDTE9CSl9WQVJJQUJMRQkJJ1YnIC8qIHZhcmlhYmxlICovCiAKICNlbmRpZgkJCQkJ CQkvKiBFWFBPU0VfVE9fQ0xJRU5UX0NPREUgKi8KIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5k ZXggYTE0NjUxMDEwZi4uNjFjYmU2NTgwNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC01 OTYxLDYgKzU5NjEsOSBAQAogICBwcm9uYW1lID0+ICdwZ19jb2xsYXRpb25faXNfdmlzaWJsZScs IHByb2Nvc3QgPT4gJzEwJywgcHJvdm9sYXRpbGUgPT4gJ3MnLAogICBwcm9yZXR0eXBlID0+ICdi b29sJywgcHJvYXJndHlwZXMgPT4gJ29pZCcsCiAgIHByb3NyYyA9PiAncGdfY29sbGF0aW9uX2lz X3Zpc2libGUnIH0sCit7IG9pZCA9PiAnNDE4NycsIGRlc2NyID0+ICdpcyBzY2hlbWEgdmFyaWFi bGUgdmlzaWJsZSBpbiBzZWFyY2ggcGF0aD8nLAorICBwcm9uYW1lID0+ICdwZ192YXJpYWJsZV9p c192aXNpYmxlJywgcHJvY29zdCA9PiAnMTAnLCBwcm92b2xhdGlsZSA9PiAncycsCisgIHByb3Jl dHR5cGUgPT4gJ2Jvb2wnLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywgcHJvc3JjID0+ICdwZ192YXJp YWJsZV9pc192aXNpYmxlJyB9LAogCiB7IG9pZCA9PiAnMjg1NCcsIGRlc2NyID0+ICdnZXQgT0lE IG9mIGN1cnJlbnQgc2Vzc2lvblwncyB0ZW1wIHNjaGVtYSwgaWYgYW55JywKICAgcHJvbmFtZSA9 PiAncGdfbXlfdGVtcF9zY2hlbWEnLCBwcm92b2xhdGlsZSA9PiAncycsIHByb3BhcmFsbGVsID0+ ICdyJywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfdmFyaWFibGUuaCBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfdmFyaWFibGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwLi4zNGY0YzM0MjAyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ192YXJpYWJsZS5oCkBAIC0wLDAgKzEsODUgQEAKKy8qLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICoKKyAqIHBnX3ZhcmlhYmxlLmgKKyAqCSAgZGVmaW5pdGlvbiBvZiBzY2hlbWEgdmFyaWFi bGVzIHN5c3RlbSBjYXRhbG9nIChwZ192YXJpYWJsZXMpCisgKgorICoKKyAqIFBvcnRpb25zIENv cHlyaWdodCAoYykgMTk5Ni0yMDE4LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91 cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJz aXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3ZhcmlhYmxl LmgKKyAqCisgKiBOT1RFUworICoJICBUaGUgQ2F0YWxvZy5wbSBtb2R1bGUgcmVhZHMgdGhpcyBm aWxlIGFuZCBkZXJpdmVzIHNjaGVtYQorICoJICBpbmZvcm1hdGlvbi4KKyAqCisgKi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAqLworI2lmbmRlZiBQR19WQVJJQUJMRV9ICisjZGVmaW5lIFBHX1ZBUklBQkxF X0gKKworI2luY2x1ZGUgImNhdGFsb2cvZ2VuYmtpLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9vYmpl Y3RhZGRyZXNzLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ192YXJpYWJsZV9kLmgiCisjaW5jbHVk ZSAidXRpbHMvYWNsLmgiCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0KKyAqCQlwZ192YXJpYWJsZSBk ZWZpbml0aW9uLiAgY3BwIHR1cm5zIHRoaXMgaW50bworICoJCXR5cGVkZWYgc3RydWN0IEZvcm1E YXRhX3BnX3ZhcmlhYmxlCisgKiAtLS0tLS0tLS0tLS0tLS0tCisgKi8KK0NBVEFMT0cocGdfdmFy aWFibGUsNDI4NyxWYXJpYWJsZVJlbGF0aW9uSWQpCit7CisJTmFtZURhdGEJdmFybmFtZTsJCS8q IHZhcmlhYmxlIG5hbWUgKi8KKwlPaWQJCQl2YXJuYW1lc3BhY2U7CS8qIE9JRCBvZiBuYW1lc3Bh Y2UgY29udGFpbmluZyB2YXJpYWJsZSBjbGFzcyAqLworCU9pZAkJCXZhcnR5cGU7CQkvKiBPSUQg b2YgZW50cnkgaW4gcGdfdHlwZSBmb3IgdmFyaWFibGUncyB0eXBlICovCisJaW50MzIJCXZhcnR5 cG1vZDsJCQkvKiB0eXBtb2RlIGZvciB2YXJpYWJsZSdzIHR5cGUgKi8KKwlPaWQJCQl2YXJvd25l cjsJCS8qIGNsYXNzIG93bmVyICovCisKKyNpZmRlZiBDQVRBTE9HX1ZBUkxFTgkJCS8qIHZhcmlh YmxlLWxlbmd0aCBmaWVsZHMgc3RhcnQgaGVyZSAqLworCisJLyogbGlzdCBvZiBleHByZXNzaW9u IHRyZWVzIGZvciB2YXJpYWJsZSBkZWZhdWx0IChOVUxMIGlmIG5vbmUpICovCisJcGdfbm9kZV90 cmVlIHZhcmRlZmV4cHIgQktJX0RFRkFVTFQoX251bGxfKTsKKworCWFjbGl0ZW0JCXZhcmFjbFsx XSBCS0lfREVGQVVMVChfbnVsbF8pOwkJLyogYWNjZXNzIHBlcm1pc3Npb25zICovCisKKyNlbmRp ZgorfSBGb3JtRGF0YV9wZ192YXJpYWJsZTsKKworLyogLS0tLS0tLS0tLS0tLS0tLQorICoJCUZv cm1fcGdfdmFyaWFibGUgY29ycmVzcG9uZHMgdG8gYSBwb2ludGVyIHRvIGEgdHVwbGUgd2l0aAor ICoJCXRoZSBmb3JtYXQgb2YgcGdfdmFyaWFibGUgcmVsYXRpb24uCisgKiAtLS0tLS0tLS0tLS0t LS0tCisgKi8KK3R5cGVkZWYgRm9ybURhdGFfcGdfdmFyaWFibGUgKkZvcm1fcGdfdmFyaWFibGU7 CisKK3R5cGVkZWYgc3RydWN0IFZhcmlhYmxlCit7CisJT2lkCQlvaWQ7CisJY2hhciAgICpuYW1l OworCU9pZAkJbmFtZXNwYWNlOworCU9pZAkJdHlwaWQ7CisJaW50MzIJdHlwbW9kOworCU9pZAkJ b3duZXI7CisJTm9kZSAgICpkZWZleHByOworCUFjbAkgICAqYWNsOworfSBWYXJpYWJsZTsKKwor LyogcmV0dXJucyBmaWVsZHMgZnJvbSBwZ192YXJpYWJsZSB0YWJsZSAqLworZXh0ZXJuIGNoYXIg KmdldF9zY2hlbWFfdmFyaWFibGVfbmFtZShPaWQgdmFyaWQpOworZXh0ZXJuIHZvaWQgZ2V0X3Nj aGVtYV92YXJpYWJsZV90eXBlX3R5cG1vZChPaWQgdmFyaWQsIE9pZCAqdHlwaWQsIGludDMyICp0 eXBtb2QpOworCisvKiByZXR1cm5zIG5hbWUgb2YgdmFyaWFibGUgYmFzZWQgb24gY3VycmVudCBz ZWFyY2ggcGF0aCAqLworZXh0ZXJuIGNoYXIgKnNjaGVtYV92YXJpYWJsZV9nZXRfbmFtZShPaWQg dmFyaWQpOworCitleHRlcm4gVmFyaWFibGUgKkdldFZhcmlhYmxlKE9pZCB2YXJpZCwgYm9vbCBt aXNzaW5nX29rKTsKK2V4dGVybiBPYmplY3RBZGRyZXNzIFZhcmlhYmxlQ3JlYXRlKGNvbnN0IGNo YXIgKnZhck5hbWUsCisJCQkJCQkJCQkgICBPaWQgdmFyTmFtZXNwYWNlLAorCQkJCQkJCQkJICAg T2lkIHZhclR5cGUsCisJCQkJCQkJCQkgICBpbnQzMiB2YXJUeXBtb2QsCisJCQkJCQkJCQkgICBP aWQgdmFyT3duZXIsCisJCQkJCQkJCQkgICBOb2RlICp2YXJEZWZleHByLAorCQkJCQkJCQkJICAg Ym9vbCBpZl9ub3RfZXhpc3RzKTsKKworCisjZW5kaWYJCQkJCQkJLyogUEdfVkFSSUFCTEVfSCAq LwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvc2NoZW1hdmFyaWFibGUuaCBiL3Ny Yy9pbmNsdWRlL2NvbW1hbmRzL3NjaGVtYXZhcmlhYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMC4uNGVhMWRjMTIwOQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNs dWRlL2NvbW1hbmRzL3NjaGVtYXZhcmlhYmxlLmgKQEAgLTAsMCArMSwzOSBAQAorLyotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgKgorICogc2NoZW1hdmFyaWFibGUuaAorICoJICBwcm90b3R5cGVzIGZvciBz Y2hlbWF2YXJpYWJsZS5jLgorICoKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYt MjAxOCwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENv cHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlh CisgKgorICogc3JjL2luY2x1ZGUvY29tbWFuZHMvc2NoZW1hdmFyaWFibGUuaAorICoKKyAqLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICovCisKKyNpZm5kZWYgU0NIRU1BVkFSSUFCTEVfSAorI2RlZmluZSBT Q0hFTUFWQVJJQUJMRV9ICisKKyNpbmNsdWRlICJjYXRhbG9nL29iamVjdGFkZHJlc3MuaCIKKyNp bmNsdWRlICJjYXRhbG9nL3BnX3ZhcmlhYmxlLmgiCisjaW5jbHVkZSAibm9kZXMvcGFyYW1zLmgi CisjaW5jbHVkZSAibm9kZXMvcGFyc2Vub2Rlcy5oIgorI2luY2x1ZGUgIm5vZGVzL3BsYW5ub2Rl cy5oIgorI2luY2x1ZGUgInV0aWxzL3F1ZXJ5ZW52aXJvbm1lbnQuaCIKKworZXh0ZXJuIGNoYXIg KlZhcmlhYmxlR2V0TmFtZShWYXJpYWJsZSAqdmFyKTsKKworZXh0ZXJuIHZvaWQgUmVzZXRTY2hl bWFWYXJpYWJsZUNhY2hlKHZvaWQpOworCitleHRlcm4gdm9pZCBSZW1vdmVWYXJpYWJsZUJ5SWQo T2lkIHZhcmlkKTsKK2V4dGVybiBPYmplY3RBZGRyZXNzIERlZmluZVNjaGVtYVZhcmlhYmxlKFBh cnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlU2NoZW1hVmFyU3RtdCAqc3RtdCk7CisKK2V4dGVybiBE YXR1bSBHZXRTY2hlbWFWYXJpYWJsZShPaWQgdmFyaWQsIGJvb2wgKmlzTnVsbCwgT2lkIGV4cGVj dGVkX3R5cGlkKTsKK2V4dGVybiBEYXR1bSBHZXRTY2hlbWFWYXJpYWJsZUNvcHkoT2lkIHZhcmlk LCBib29sICppc051bGwsIE9pZCBleHBlY3RlZF90eXBpZCk7CisKK2V4dGVybiB2b2lkIFNldFNj aGVtYVZhcmlhYmxlKE9pZCB2YXJpZCwgRGF0dW0gdmFsdWUsIGJvb2wgaXNOdWxsLCBPaWQgdHlw aWQsIGludDMyIHR5cG1vZCk7CisKK2V4dGVybiB2b2lkIGRvTGV0U3RtdChQbGFubmVkU3RtdCAq cHN0bXQsIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwg Y29uc3QgY2hhciAqcXVlcnlTdHJpbmcpOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2V4ZWN1dG9yL2V4ZWNFeHByLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5o CmluZGV4IGY3YjFmNzc2MTYuLjljMDM1ODA1NDEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4 ZWN1dG9yL2V4ZWNFeHByLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaApA QCAtMTM4LDYgKzEzOCw3IEBAIHR5cGVkZWYgZW51bSBFeHByRXZhbE9wCiAJRUVPUF9QQVJBTV9F WEVDLAogCUVFT1BfUEFSQU1fRVhURVJOLAogCUVFT1BfUEFSQU1fQ0FMTEJBQ0ssCisJRUVPUF9Q QVJBTV9WQVJJQUJMRSwKIAogCS8qIHJldHVybiBDYXNlVGVzdEV4cHIgdmFsdWUgKi8KIAlFRU9Q X0NBU0VfVEVTVFZBTCwKQEAgLTM0NCwxMyArMzQ1LDIyIEBAIHR5cGVkZWYgc3RydWN0IEV4cHJF dmFsU3RlcAogCQkJVHVwbGVEZXNjCWFyZ2Rlc2M7CiAJCX0JCQludWxsdGVzdF9yb3c7CiAKLQkJ LyogZm9yIEVFT1BfUEFSQU1fRVhFQy9FWFRFUk4gKi8KKwkJLyogZm9yIEVFT1BfUEFSQU1fRVhF Qy9FWFRFUk4vVkFSSUFCTEUgKi8KIAkJc3RydWN0CiAJCXsKLQkJCWludAkJCXBhcmFtaWQ7CS8q IG51bWVyaWMgSUQgZm9yIHBhcmFtZXRlciAqLwotCQkJT2lkCQkJcGFyYW10eXBlOwkvKiBPSUQg b2YgcGFyYW1ldGVyJ3MgZGF0YXR5cGUgKi8KKwkJCWludAkJCXBhcmFtaWQ7CQkvKiBudW1lcmlj IElEIGZvciBwYXJhbWV0ZXIgKi8KKwkJCU9pZAkJCXBhcmFtdHlwZTsJCS8qIE9JRCBvZiBwYXJh bWV0ZXIncyBkYXRhdHlwZSAqLwogCQl9CQkJcGFyYW07CiAKKwkJLyogZm9yIEVFT1BfUEFSQU1f VkFSSUFCTEUgKi8KKwkJc3RydWN0CisJCXsKKwkJCWludAkJCXBhcmFtaWQ7CQkvKiBudW1lcmlj IElEIGZvciBwYXJhbWV0ZXIgKi8KKwkJCU9pZAkJCXZhcm9pZDsJCQkvKiBPSUQgb2YgYXNzaWdu ZWQgdmFyaWFibGUgKi8KKwkJCU9pZAkJCXBhcmFtdHlwZTsJCS8qIE9JRCBvZiBwYXJhbWV0ZXIn cyBkYXRhdHlwZSAqLworCQl9CQkJdnBhcmFtOworCisKIAkJLyogZm9yIEVFT1BfUEFSQU1fQ0FM TEJBQ0sgKi8KIAkJc3RydWN0CiAJCXsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9y L3N2YXJpYWJsZVJlY2VpdmVyLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9zdmFyaWFibGVSZWNl aXZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjhjODExNzcwMWYK LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9zdmFyaWFibGVSZWNlaXZl ci5oCkBAIC0wLDAgKzEsMjUgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHN2YXJpYWJs ZVJlY2VpdmVyLmgKKyAqCSAgcHJvdG90eXBlcyBmb3Igc3ZhcmlhYmxlUmVjZWl2ZXIuYworICoK KyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAxOCwgUG9zdGdyZVNRTCBHbG9i YWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVn ZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICogc3JjL2luY2x1ZGUv ZXhlY3V0b3Ivc3ZhcmlhYmxlUmVjZWl2ZXIuaAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICov CisKKyNpZm5kZWYgU1ZBUklBQkxFX1JFQ0VJVkVSX0gKKyNkZWZpbmUgU1ZBUklBQkxFX1JFQ0VJ VkVSX0gKKworI2luY2x1ZGUgInRjb3AvZGVzdC5oIgorCisKK2V4dGVybiBEZXN0UmVjZWl2ZXIg KkNyZWF0ZVZhcmlhYmxlRGVzdFJlY2VpdmVyKHZvaWQpOworCitleHRlcm4gdm9pZCBTZXRWYXJp YWJsZURlc3RSZWNlaXZlclBhcmFtcyhEZXN0UmVjZWl2ZXIgKnNlbGYsIE9pZCB2YXJpZCk7CisK KyNlbmRpZgkJCQkJCQkvKiBTVkFSSUFCTEVfUkVDRUlWRVJfSCAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMu aAppbmRleCAwMThmNTBiYmI3Li4zM2NjOGJlNTVhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9u b2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAt MTAwLDYgKzEwMCw4IEBAIHR5cGVkZWYgc3RydWN0IEV4cHJTdGF0ZQogCWludAkJCXN0ZXBzX2xl bjsJCS8qIG51bWJlciBvZiBzdGVwcyBjdXJyZW50bHkgKi8KIAlpbnQJCQlzdGVwc19hbGxvYzsJ LyogYWxsb2NhdGVkIGxlbmd0aCBvZiBzdGVwcyBhcnJheSAqLwogCisJaW50CQkJbnZhcmlhYmxl czsJCS8qIG51bWJlciBvZiB1c2VkIHZhcmlhYmxlcyAqLworCiAJc3RydWN0IFBsYW5TdGF0ZSAq cGFyZW50OwkvKiBwYXJlbnQgUGxhblN0YXRlIG5vZGUsIGlmIGFueSAqLwogCVBhcmFtTGlzdElu Zm8gZXh0X3BhcmFtczsJLyogZm9yIGNvbXBpbGluZyBQQVJBTV9FWFRFUk4gbm9kZXMgKi8KIApA QCAtNDcyLDYgKzQ3NCw3IEBAIHR5cGVkZWYgc3RydWN0IFJlc3VsdFJlbEluZm8KIHR5cGVkZWYg c3RydWN0IEVTdGF0ZQogewogCU5vZGVUYWcJCXR5cGU7CisJYm9vbAkJZXNfc2hhcmVkOwkJLyog cGxwZ3NxbCB1c2VzIHNoYXJlIGVzdGF0ZSAqLwogCiAJLyogQmFzaWMgc3RhdGUgZm9yIGFsbCBx dWVyeSB0eXBlczogKi8KIAlTY2FuRGlyZWN0aW9uIGVzX2RpcmVjdGlvbjsgLyogY3VycmVudCBz Y2FuIGRpcmVjdGlvbiAqLwpAQCAtNTY0LDYgKzU2NywxNCBAQCB0eXBlZGVmIHN0cnVjdCBFU3Rh dGUKIAkvKiBUaGUgcGVyLXF1ZXJ5IHNoYXJlZCBtZW1vcnkgYXJlYSB0byB1c2UgZm9yIHBhcmFs bGVsIGV4ZWN1dGlvbi4gKi8KIAlzdHJ1Y3QgZHNhX2FyZWEgKmVzX3F1ZXJ5X2RzYTsKIAorCWlu dAkJCWVzX3Jlc3VsdF92YXJpYWJsZTsJLyogT2lkIG9mIHRhcmdldCB2YXJpYWJsZSAqLworCisJ LyogcXVlcnkgc2NoZW1hIHZhcmlhYmxlIGNhY2hlICovCisJaW50CQkJZXNfbnZhcmlhYmxlczsK Kwlib29sCSAgICplc192YXJudWxsczsKKwlPaWQJCSAgICplc192YXJ0eXBlczsKKwlEYXR1bQkg ICAqZXNfdmFydmFsdWVzOworCiAJLyoKIAkgKiBKSVQgaW5mb3JtYXRpb24uIGVzX2ppdF9mbGFn cyBpbmRpY2F0ZXMgd2hldGhlciBKSVQgc2hvdWxkIGJlIHBlcmZvcm1lZAogCSAqIGFuZCB3aXRo IHdoaWNoIG9wdGlvbnMuICBlc19qaXQgaXMgY3JlYXRlZCBvbi1kZW1hbmQgd2hlbiBKSVRpbmcg aXMKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL25vZGVzLmggYi9zcmMvaW5jbHVkZS9u b2Rlcy9ub2Rlcy5oCmluZGV4IDY5N2QzZDdhNWYuLmRkN2ZkOGVkNDIgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL25vZGVzL25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaApA QCAtMzQ4LDYgKzM0OCw3IEBAIHR5cGVkZWYgZW51bSBOb2RlVGFnCiAJVF9DcmVhdGVUYWJsZUFz U3RtdCwKIAlUX0NyZWF0ZVNlcVN0bXQsCiAJVF9BbHRlclNlcVN0bXQsCisJVF9DcmVhdGVTY2hl bWFWYXJTdG10LAogCVRfVmFyaWFibGVTZXRTdG10LAogCVRfVmFyaWFibGVTaG93U3RtdCwKIAlU X0Rpc2NhcmRTdG10LApAQCAtNDE5LDYgKzQyMCw3IEBAIHR5cGVkZWYgZW51bSBOb2RlVGFnCiAJ VF9DcmVhdGVTdGF0c1N0bXQsCiAJVF9BbHRlckNvbGxhdGlvblN0bXQsCiAJVF9DYWxsU3RtdCwK KwlUX0xldFN0bXQsCiAKIAkvKgogCSAqIFRBR1MgRk9SIFBBUlNFIFRSRUUgTk9ERVMgKHBhcnNl bm9kZXMuaCkKQEAgLTY2Myw2ICs2NjUsNyBAQCB0eXBlZGVmIGVudW0gQ21kVHlwZQogCUNNRF9E RUxFVEUsCiAJQ01EX1VUSUxJVFksCQkJCS8qIGNtZHMgbGlrZSBjcmVhdGUsIGRlc3Ryb3ksIGNv cHksIHZhY3V1bSwKIAkJCQkJCQkJICogZXRjLiAqLworCUNNRF9QTEFOX1VUSUxJVFksCQkJLyog b25seSBsZXQgc3RtdCBub3csIHJlcXVpcmVzIHBsYW5uaW5nICovCiAJQ01EX05PVEhJTkcJCQkJ CS8qIGR1bW15IGNvbW1hbmQgZm9yIGluc3RlYWQgbm90aGluZyBydWxlcwogCQkJCQkJCQkgKiB3 aXRoIHF1YWwgKi8KIH0gQ21kVHlwZTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3Bh cnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCAwN2FiMWEz ZGRlLi4yZDRhM2NiMWI2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVz LmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC04NCw3ICs4NCw5IEBA IHR5cGVkZWYgdWludDMyIEFjbE1vZGU7CQkJLyogYSBiaXRtYXNrIG9mIHByaXZpbGVnZSBiaXRz ICovCiAjZGVmaW5lIEFDTF9DUkVBVEUJCSgxPDw5KQkvKiBmb3IgbmFtZXNwYWNlcyBhbmQgZGF0 YWJhc2VzICovCiAjZGVmaW5lIEFDTF9DUkVBVEVfVEVNUCAoMTw8MTApIC8qIGZvciBkYXRhYmFz ZXMgKi8KICNkZWZpbmUgQUNMX0NPTk5FQ1QJCSgxPDwxMSkgLyogZm9yIGRhdGFiYXNlcyAqLwot I2RlZmluZSBOX0FDTF9SSUdIVFMJMTIJCS8qIDEgcGx1cyB0aGUgbGFzdCAxPDx4ICovCisjZGVm aW5lIEFDTF9SRUFECQkoMTw8MTIpIC8qIGZvciB2YXJpYWJsZXMgKi8KKyNkZWZpbmUgQUNMX1dS SVRFCQkoMTw8MTMpIC8qIGZvciB2YXJpYWJsZXMgKi8KKyNkZWZpbmUgTl9BQ0xfUklHSFRTCTE0 CQkvKiAxIHBsdXMgdGhlIGxhc3QgMTw8eCAqLwogI2RlZmluZSBBQ0xfTk9fUklHSFRTCTAKIC8q IEN1cnJlbnRseSwgU0VMRUNUIC4uLiBGT1IgW0tFWV0gVVBEQVRFL1NIQVJFIHJlcXVpcmVzIFVQ REFURSBwcml2aWxlZ2VzICovCiAjZGVmaW5lIEFDTF9TRUxFQ1RfRk9SX1VQREFURQlBQ0xfVVBE QVRFCkBAIC0xMjEsNiArMTIzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUXVlcnkKIAogCWludAkJCXJl c3VsdFJlbGF0aW9uOyAvKiBydGFibGUgaW5kZXggb2YgdGFyZ2V0IHJlbGF0aW9uIGZvcgogCQkJ CQkJCQkgKiBJTlNFUlQvVVBEQVRFL0RFTEVURTsgMCBmb3IgU0VMRUNUICovCisJaW50CQkJcmVz dWx0VmFyaWFibGU7CS8qIE9pZCBvZiB0YXJnZXQgdmFyaWFibGUgb3IgMCAqLwogCiAJYm9vbAkJ aGFzQWdnczsJCS8qIGhhcyBhZ2dyZWdhdGVzIGluIHRsaXN0IG9yIGhhdmluZ1F1YWwgKi8KIAli b29sCQloYXNXaW5kb3dGdW5jczsgLyogaGFzIHdpbmRvdyBmdW5jdGlvbnMgaW4gdGxpc3QgKi8K QEAgLTE1MDUsNiArMTUwOCwxOCBAQCB0eXBlZGVmIHN0cnVjdCBVcGRhdGVTdG10CiAJV2l0aENs YXVzZSAqd2l0aENsYXVzZTsJCS8qIFdJVEggY2xhdXNlICovCiB9IFVwZGF0ZVN0bXQ7CiAKKy8q IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCQlMZXQgU3RhdGVtZW50CisgKiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgKi8KK3R5cGVkZWYgc3RydWN0IExldFN0bXQKK3sKKwlOb2RlVGFnCQl0 eXBlOworCUxpc3QJICAgKnRhcmdldDsJCQkvKiB0YXJnZXQgdmFyaWFibGUgKi8KKwlOb2RlCSAg ICpzZWxlY3RTdG10OwkJLyogc291cmNlIGV4cHJlc3Npb24gKi8KKwlpbnQJCQlsb2NhdGlvbjsK K30gTGV0U3RtdDsKKwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCVNlbGVjdCBTdGF0 ZW1lbnQKICAqCkBAIC0xNjgyLDYgKzE2OTcsNyBAQCB0eXBlZGVmIGVudW0gT2JqZWN0VHlwZQog CU9CSkVDVF9UU1RFTVBMQVRFLAogCU9CSkVDVF9UWVBFLAogCU9CSkVDVF9VU0VSX01BUFBJTkcs CisJT0JKRUNUX1ZBUklBQkxFLAogCU9CSkVDVF9WSUVXCiB9IE9iamVjdFR5cGU7CiAKQEAgLTI0 OTcsNiArMjUxMywxOSBAQCB0eXBlZGVmIHN0cnVjdCBBbHRlclNlcVN0bXQKIAlib29sCQltaXNz aW5nX29rOwkJLyogc2tpcCBlcnJvciBpZiBhIHJvbGUgaXMgbWlzc2luZz8gKi8KIH0gQWx0ZXJT ZXFTdG10OwogCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgkJe0NyZWF0ZXxBbHRlcn0g VkFSSUFCTEUgU3RhdGVtZW50CisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK3R5cGVk ZWYgc3RydWN0IENyZWF0ZVNjaGVtYVZhclN0bXQKK3sKKwlOb2RlVGFnCQl0eXBlOworCVJhbmdl VmFyICAgKnZhcmlhYmxlOwkJLyogdGhlIHZhcmlhYmxlIHRvIGNyZWF0ZSAqLworCVR5cGVOYW1l ICAgKnR5cGVOYW1lOwkJLyogdGhlIHR5cGUgb2YgdmFyaWFibGUgKi8KKwlOb2RlCSAgICpkZWZl eHByOwkJLyogZGVmYXVsdCBleHByZXNzaW9uICovCisJYm9vbAkJaWZfbm90X2V4aXN0czsJLyog ZG8gbm90aGluZyBpZiBpdCBhbHJlYWR5IGV4aXN0cyAqLworfSBDcmVhdGVTY2hlbWFWYXJTdG10 OworCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJQ3JlYXRlIHtBZ2dyZWdhdGV8T3Bl cmF0b3J8VHlwZX0gU3RhdGVtZW50CiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0zMjM4 LDcgKzMyNjcsOCBAQCB0eXBlZGVmIGVudW0gRGlzY2FyZE1vZGUKIAlESVNDQVJEX0FMTCwKIAlE SVNDQVJEX1BMQU5TLAogCURJU0NBUkRfU0VRVUVOQ0VTLAotCURJU0NBUkRfVEVNUAorCURJU0NB UkRfVEVNUCwKKwlESVNDQVJEX1ZBUklBQkxFUwogfSBEaXNjYXJkTW9kZTsKIAogdHlwZWRlZiBz dHJ1Y3QgRGlzY2FyZFN0bXQKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rl cy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKaW5kZXggN2MyYWJiZDAzYS4uMjU4 OGYxNDU1ZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKKysrIGIv c3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKQEAgLTQzLDcgKzQzLDcgQEAgdHlwZWRlZiBz dHJ1Y3QgUGxhbm5lZFN0bXQKIHsKIAlOb2RlVGFnCQl0eXBlOwogCi0JQ21kVHlwZQkJY29tbWFu ZFR5cGU7CS8qIHNlbGVjdHxpbnNlcnR8dXBkYXRlfGRlbGV0ZXx1dGlsaXR5ICovCisJQ21kVHlw ZQkJY29tbWFuZFR5cGU7CS8qIHNlbGVjdHxsZXR8aW5zZXJ0fHVwZGF0ZXxkZWxldGV8dXRpbGl0 eSAqLwogCiAJdWludDY0CQlxdWVyeUlkOwkJLyogcXVlcnkgaWRlbnRpZmllciAoY29waWVkIGZy b20gUXVlcnkpICovCiAKQEAgLTgxLDYgKzgxLDkgQEAgdHlwZWRlZiBzdHJ1Y3QgUGxhbm5lZFN0 bXQKIAkgKi8KIAlMaXN0CSAgICpyb290UmVzdWx0UmVsYXRpb25zOwogCisJLyogT2lkIG9mIHRh cmdldCB2YXJpYWJsZSBmb3IgTEVUIGNvbW1hbmQgKi8KKwlPaWQJCQlyZXN1bHRWYXJpYWJsZTsK KwogCUxpc3QJICAgKnN1YnBsYW5zOwkJLyogUGxhbiB0cmVlcyBmb3IgU3ViUGxhbiBleHByZXNz aW9uczsgbm90ZQogCQkJCQkJCQkgKiB0aGF0IHNvbWUgY291bGQgYmUgTlVMTCAqLwogCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVz L3ByaW1ub2Rlcy5oCmluZGV4IDFiNGIwZDc1YWYuLmIzNjY0NzE5NDAgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1u b2Rlcy5oCkBAIC0yMjksMTMgKzIyOSwxNyBAQCB0eXBlZGVmIHN0cnVjdCBDb25zdAogICoJCQkJ b2YgdGhlIGBwYXJhbWlkJyBmaWVsZCBjb250YWluIHRoZSBTdWJMaW5rJ3Mgc3ViTGlua0lkLCBh bmQKICAqCQkJCXRoZSBsb3ctb3JkZXIgMTYgYml0cyBjb250YWluIHRoZSBjb2x1bW4gbnVtYmVy LiAgKFRoaXMgdHlwZQogICoJCQkJb2YgUGFyYW0gaXMgYWxzbyBjb252ZXJ0ZWQgdG8gUEFSQU1f RVhFQyBkdXJpbmcgcGxhbm5pbmcuKQorICoKKyAqCQlQQVJBTV9TQ0hFTUFfVkFSSUFCTEU6ICBU aGUgcGFyYW1ldGVyIGlzIGEgYWNjZXNzIHRvIHNjaGVtYSB2YXJpYWJsZQorICoJCQkJcGFyYW1p ZCBob2xkcyB2YXJpZC4KICAqLwogdHlwZWRlZiBlbnVtIFBhcmFtS2luZAogewogCVBBUkFNX0VY VEVSTiwKIAlQQVJBTV9FWEVDLAogCVBBUkFNX1NVQkxJTkssCi0JUEFSQU1fTVVMVElFWFBSCisJ UEFSQU1fTVVMVElFWFBSLAorCVBBUkFNX1NDSEVNQV9WQVJJQUJMRQogfSBQYXJhbUtpbmQ7CiAK IHR5cGVkZWYgc3RydWN0IFBhcmFtCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIva3ds aXN0LmggYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKaW5kZXggMjNkYjQwMTQ3Yi4uZDNl ZDNmNGQwZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCisrKyBiL3Ny Yy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaApAQCAtMjMxLDYgKzIzMSw3IEBAIFBHX0tFWVdPUkQo ImxlYWRpbmciLCBMRUFESU5HLCBSRVNFUlZFRF9LRVlXT1JEKQogUEdfS0VZV09SRCgibGVha3By b29mIiwgTEVBS1BST09GLCBVTlJFU0VSVkVEX0tFWVdPUkQpCiBQR19LRVlXT1JEKCJsZWFzdCIs IExFQVNULCBDT0xfTkFNRV9LRVlXT1JEKQogUEdfS0VZV09SRCgibGVmdCIsIExFRlQsIFRZUEVf RlVOQ19OQU1FX0tFWVdPUkQpCitQR19LRVlXT1JEKCJsZXQiLCBMRVQsIFVOUkVTRVJWRURfS0VZ V09SRCkKIFBHX0tFWVdPUkQoImxldmVsIiwgTEVWRUwsIFVOUkVTRVJWRURfS0VZV09SRCkKIFBH X0tFWVdPUkQoImxpa2UiLCBMSUtFLCBUWVBFX0ZVTkNfTkFNRV9LRVlXT1JEKQogUEdfS0VZV09S RCgibGltaXQiLCBMSU1JVCwgUkVTRVJWRURfS0VZV09SRCkKQEAgLTQzNCw2ICs0MzUsOCBAQCBQ R19LRVlXT1JEKCJ2YWxpZGF0b3IiLCBWQUxJREFUT1IsIFVOUkVTRVJWRURfS0VZV09SRCkKIFBH X0tFWVdPUkQoInZhbHVlIiwgVkFMVUVfUCwgVU5SRVNFUlZFRF9LRVlXT1JEKQogUEdfS0VZV09S RCgidmFsdWVzIiwgVkFMVUVTLCBDT0xfTkFNRV9LRVlXT1JEKQogUEdfS0VZV09SRCgidmFyY2hh ciIsIFZBUkNIQVIsIENPTF9OQU1FX0tFWVdPUkQpCitQR19LRVlXT1JEKCJ2YXJpYWJsZSIsIFZB UklBQkxFLCBVTlJFU0VSVkVEX0tFWVdPUkQpCitQR19LRVlXT1JEKCJ2YXJpYWJsZXMiLCBWQVJJ QUJMRVMsIFVOUkVTRVJWRURfS0VZV09SRCkKIFBHX0tFWVdPUkQoInZhcmlhZGljIiwgVkFSSUFE SUMsIFJFU0VSVkVEX0tFWVdPUkQpCiBQR19LRVlXT1JEKCJ2YXJ5aW5nIiwgVkFSWUlORywgVU5S RVNFUlZFRF9LRVlXT1JEKQogUEdfS0VZV09SRCgidmVyYm9zZSIsIFZFUkJPU0UsIFRZUEVfRlVO Q19OQU1FX0tFWVdPUkQpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9k ZS5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaAppbmRleCAwMjMwNTQzODEwLi5m N2MyZTY3ZjMzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oCisr KyBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKQEAgLTY5LDcgKzY5LDkgQEAgdHlw ZWRlZiBlbnVtIFBhcnNlRXhwcktpbmQKIAlFWFBSX0tJTkRfVFJJR0dFUl9XSEVOLAkJLyogV0hF TiBjb25kaXRpb24gaW4gQ1JFQVRFIFRSSUdHRVIgKi8KIAlFWFBSX0tJTkRfUE9MSUNZLAkJCS8q IFVTSU5HIG9yIFdJVEggQ0hFQ0sgZXhwciBpbiBwb2xpY3kgKi8KIAlFWFBSX0tJTkRfUEFSVElU SU9OX0VYUFJFU1NJT04sIC8qIFBBUlRJVElPTiBCWSBleHByZXNzaW9uICovCi0JRVhQUl9LSU5E X0NBTExfQVJHVU1FTlQJCS8qIHByb2NlZHVyZSBhcmd1bWVudCBpbiBDQUxMICovCisJRVhQUl9L SU5EX0NBTExfQVJHVU1FTlQsCQkvKiBwcm9jZWR1cmUgYXJndW1lbnQgaW4gQ0FMTCAqLworCUVY UFJfS0lORF9WQVJJQUJMRV9ERUZBVUxULAkvKiBkZWZhdWx0IHZhbHVlIGZvciBzY2hlbWEgdmFy aWFibGUgKi8KKwlFWFBSX0tJTkRfTEVUCQkJCS8qIExFVCBhc3NpZ25tZW50IChzaG91bGQgYmUg c2FtZSBsaWtlIFVQREFURSkgKi8KIH0gUGFyc2VFeHByS2luZDsKIAogCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfdGFyZ2V0LmggYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFy c2VfdGFyZ2V0LmgKaW5kZXggZWM2ZTBjMTAyZi4uMWVlMTk5ZWQ4ZiAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvcGFyc2VyL3BhcnNlX3RhcmdldC5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9w YXJzZV90YXJnZXQuaApAQCAtMzIsNiArMzIsMTYgQEAgZXh0ZXJuIEV4cHIgKnRyYW5zZm9ybUFz c2lnbmVkRXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIEV4cHIgKmV4cHIsCiAJCQkJCSAgaW50IGF0 dHJubywKIAkJCQkJICBMaXN0ICppbmRpcmVjdGlvbiwKIAkJCQkJICBpbnQgbG9jYXRpb24pOwor ZXh0ZXJuIE5vZGUgKnRyYW5zZm9ybUFzc2lnbm1lbnRJbmRpcmVjdGlvbihQYXJzZVN0YXRlICpw c3RhdGUsCisJCQkJCQkJICAgTm9kZSAqYmFzZW5vZGUsCisJCQkJCQkJICAgY29uc3QgY2hhciAq dGFyZ2V0TmFtZSwKKwkJCQkJCQkgICBib29sIHRhcmdldElzQXJyYXksCisJCQkJCQkJICAgT2lk IHRhcmdldFR5cGVJZCwKKwkJCQkJCQkgICBpbnQzMiB0YXJnZXRUeXBNb2QsCisJCQkJCQkJICAg T2lkIHRhcmdldENvbGxhdGlvbiwKKwkJCQkJCQkgICBMaXN0Q2VsbCAqaW5kaXJlY3Rpb24sCisJ CQkJCQkJICAgTm9kZSAqcmhzLAorCQkJCQkJCSAgIGludCBsb2NhdGlvbik7CiBleHRlcm4gdm9p ZCB1cGRhdGVUYXJnZXRMaXN0RW50cnkoUGFyc2VTdGF0ZSAqcHN0YXRlLCBUYXJnZXRFbnRyeSAq dGxlLAogCQkJCQkgIGNoYXIgKmNvbG5hbWUsIGludCBhdHRybm8sCiAJCQkJCSAgTGlzdCAqaW5k aXJlY3Rpb24sCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS90Y29wL2Rlc3QuaCBiL3NyYy9pbmNs dWRlL3Rjb3AvZGVzdC5oCmluZGV4IDgyZjBmMmU3NDEuLmM0OWI2NTM1NTUgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL3Rjb3AvZGVzdC5oCisrKyBiL3NyYy9pbmNsdWRlL3Rjb3AvZGVzdC5oCkBA IC05Niw3ICs5Niw4IEBAIHR5cGVkZWYgZW51bQogCURlc3RDb3B5T3V0LAkJCQkvKiByZXN1bHRz IHNlbnQgdG8gQ09QWSBUTyBjb2RlICovCiAJRGVzdFNRTEZ1bmN0aW9uLAkJCS8qIHJlc3VsdHMg c2VudCB0byBTUUwtbGFuZ3VhZ2UgZnVuYyBtZ3IgKi8KIAlEZXN0VHJhbnNpZW50UmVsLAkJCS8q IHJlc3VsdHMgc2VudCB0byB0cmFuc2llbnQgcmVsYXRpb24gKi8KLQlEZXN0VHVwbGVRdWV1ZQkJ CQkvKiByZXN1bHRzIHNlbnQgdG8gdHVwbGUgcXVldWUgKi8KKwlEZXN0VHVwbGVRdWV1ZSwJCQkJ LyogcmVzdWx0cyBzZW50IHRvIHR1cGxlIHF1ZXVlICovCisJRGVzdFZhcmlhYmxlCQkJCS8qIHJl c3VsdHMgc2VudHMgdG8gc2NoZW1hIHZhcmlhYmxlICovCiB9IENvbW1hbmREZXN0OwogCiAvKiAt LS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9hY2wuaCBiL3Ny Yy9pbmNsdWRlL3V0aWxzL2FjbC5oCmluZGV4IGY0ZDRiZThkMGQuLmM2MjRkOGRkMGIgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2FjbC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2Fj bC5oCkBAIC0xNDcsOSArMTQ3LDExIEBAIHR5cGVkZWYgQXJyYXlUeXBlIEFjbDsKICNkZWZpbmUg QUNMX0NSRUFURV9DSFIJCQknQycKICNkZWZpbmUgQUNMX0NSRUFURV9URU1QX0NIUgkJJ1QnCiAj ZGVmaW5lIEFDTF9DT05ORUNUX0NIUgkJCSdjJworI2RlZmluZSBBQ0xfUkVBRF9DSFIJCQknUycg LyogJ1InIGlzIG9jY3VwYXRlZCBieSBvbGQgUlVMRSBwcml2ICovCisjZGVmaW5lIEFDTF9XUklU RV9DSFIJCQknVycKIAogLyogc3RyaW5nIGhvbGRpbmcgYWxsIHByaXZpbGVnZSBjb2RlIGNoYXJz LCBpbiBvcmRlciBieSBiaXRtYXNrIHBvc2l0aW9uICovCi0jZGVmaW5lIEFDTF9BTExfUklHSFRT X1NUUgkiYXJ3ZER4dFhVQ1RjIgorI2RlZmluZSBBQ0xfQUxMX1JJR0hUU19TVFIJImFyd2REeHRY VUNUY1NXIgogCiAvKgogICogQml0bWFza3MgZGVmaW5pbmcgImFsbCByaWdodHMiIGZvciBlYWNo IHN1cHBvcnRlZCBvYmplY3QgdHlwZQpAQCAtMTY2LDYgKzE2OCw3IEBAIHR5cGVkZWYgQXJyYXlU eXBlIEFjbDsKICNkZWZpbmUgQUNMX0FMTF9SSUdIVFNfU0NIRU1BCQkoQUNMX1VTQUdFfEFDTF9D UkVBVEUpCiAjZGVmaW5lIEFDTF9BTExfUklHSFRTX1RBQkxFU1BBQ0UJKEFDTF9DUkVBVEUpCiAj ZGVmaW5lIEFDTF9BTExfUklHSFRTX1RZUEUJCQkoQUNMX1VTQUdFKQorI2RlZmluZSBBQ0xfQUxM X1JJR0hUU19WQVJJQUJMRQkJKEFDTF9SRUFEfEFDTF9XUklURSkKIAogLyogb3BlcmF0aW9uIGNv ZGVzIGZvciBwZ18qX2FjbG1hc2sgKi8KIHR5cGVkZWYgZW51bQpAQCAtMjUzLDYgKzI1Niw4IEBA IGV4dGVybiBBY2xNb2RlIHBnX2ZvcmVpZ25fc2VydmVyX2FjbG1hc2soT2lkIHNydl9vaWQsIE9p ZCByb2xlaWQsCiAJCQkJCQkgIEFjbE1vZGUgbWFzaywgQWNsTWFza0hvdyBob3cpOwogZXh0ZXJu IEFjbE1vZGUgcGdfdHlwZV9hY2xtYXNrKE9pZCB0eXBlX29pZCwgT2lkIHJvbGVpZCwKIAkJCQlB Y2xNb2RlIG1hc2ssIEFjbE1hc2tIb3cgaG93KTsKK2V4dGVybiBBY2xNb2RlIHBnX3ZhcmlhYmxl X2FjbG1hc2soT2lkIHZhcl9vaWQsIE9pZCByb2xlaWQsCisJCQkJQWNsTW9kZSBtYXNrLCBBY2xN YXNrSG93IGhvdyk7CiAKIGV4dGVybiBBY2xSZXN1bHQgcGdfYXR0cmlidXRlX2FjbGNoZWNrKE9p ZCB0YWJsZV9vaWQsIEF0dHJOdW1iZXIgYXR0bnVtLAogCQkJCQkgIE9pZCByb2xlaWQsIEFjbE1v ZGUgbW9kZSk7CkBAIC0yNjksNiArMjc0LDcgQEAgZXh0ZXJuIEFjbFJlc3VsdCBwZ190YWJsZXNw YWNlX2FjbGNoZWNrKE9pZCBzcGNfb2lkLCBPaWQgcm9sZWlkLCBBY2xNb2RlIG1vZGUpOwogZXh0 ZXJuIEFjbFJlc3VsdCBwZ19mb3JlaWduX2RhdGFfd3JhcHBlcl9hY2xjaGVjayhPaWQgZmR3X29p ZCwgT2lkIHJvbGVpZCwgQWNsTW9kZSBtb2RlKTsKIGV4dGVybiBBY2xSZXN1bHQgcGdfZm9yZWln bl9zZXJ2ZXJfYWNsY2hlY2soT2lkIHNydl9vaWQsIE9pZCByb2xlaWQsIEFjbE1vZGUgbW9kZSk7 CiBleHRlcm4gQWNsUmVzdWx0IHBnX3R5cGVfYWNsY2hlY2soT2lkIHR5cGVfb2lkLCBPaWQgcm9s ZWlkLCBBY2xNb2RlIG1vZGUpOworZXh0ZXJuIEFjbFJlc3VsdCBwZ192YXJpYWJsZV9hY2xjaGVj ayhPaWQgdHlwZV9vaWQsIE9pZCByb2xlaWQsIEFjbE1vZGUgbW9kZSk7CiAKIGV4dGVybiB2b2lk IGFjbGNoZWNrX2Vycm9yKEFjbFJlc3VsdCBhY2xlcnIsIE9iamVjdFR5cGUgb2JqdHlwZSwKIAkJ CSAgIGNvbnN0IGNoYXIgKm9iamVjdG5hbWUpOwpAQCAtMzA1LDYgKzMxMSw3IEBAIGV4dGVybiBi b29sIHBnX2V4dGVuc2lvbl9vd25lcmNoZWNrKE9pZCBleHRfb2lkLCBPaWQgcm9sZWlkKTsKIGV4 dGVybiBib29sIHBnX3B1YmxpY2F0aW9uX293bmVyY2hlY2soT2lkIHB1Yl9vaWQsIE9pZCByb2xl aWQpOwogZXh0ZXJuIGJvb2wgcGdfc3Vic2NyaXB0aW9uX293bmVyY2hlY2soT2lkIHN1Yl9vaWQs IE9pZCByb2xlaWQpOwogZXh0ZXJuIGJvb2wgcGdfc3RhdGlzdGljc19vYmplY3Rfb3duZXJjaGVj ayhPaWQgc3RhdF9vaWQsIE9pZCByb2xlaWQpOworZXh0ZXJuIGJvb2wgcGdfdmFyaWFibGVfb3du ZXJjaGVjayhPaWQgc3RhdF9vaWQsIE9pZCByb2xlaWQpOwogZXh0ZXJuIGJvb2wgaGFzX2NyZWF0 ZXJvbGVfcHJpdmlsZWdlKE9pZCByb2xlaWQpOwogZXh0ZXJuIGJvb2wgaGFzX2J5cGFzc3Jsc19w cml2aWxlZ2UoT2lkIHJvbGVpZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2xz eXNjYWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgKaW5kZXggZTU1ZWE0MDM1 Yi4uY2IzZjRhYWNhOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgK KysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgKQEAgLTEyMiw2ICsxMjIsNyBAQCBl eHRlcm4gYm9vbCBnZXRfZnVuY19sZWFrcHJvb2YoT2lkIGZ1bmNpZCk7CiBleHRlcm4gZmxvYXQ0 IGdldF9mdW5jX2Nvc3QoT2lkIGZ1bmNpZCk7CiBleHRlcm4gZmxvYXQ0IGdldF9mdW5jX3Jvd3Mo T2lkIGZ1bmNpZCk7CiBleHRlcm4gT2lkCWdldF9yZWxuYW1lX3JlbGlkKGNvbnN0IGNoYXIgKnJl bG5hbWUsIE9pZCByZWxuYW1lc3BhY2UpOworZXh0ZXJuIE9pZCBnZXRfdmFybmFtZV92YXJpZChj b25zdCBjaGFyICp2YXJuYW1lLCBPaWQgdmFybmFtZXNwYWNlKTsKIGV4dGVybiBjaGFyICpnZXRf cmVsX25hbWUoT2lkIHJlbGlkKTsKIGV4dGVybiBPaWQJZ2V0X3JlbF9uYW1lc3BhY2UoT2lkIHJl bGlkKTsKIGV4dGVybiBPaWQJZ2V0X3JlbF90eXBlX2lkKE9pZCByZWxpZCk7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS91dGlscy9zeXNjYWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvc3lzY2Fj aGUuaAppbmRleCA0ZjMzMzU4NmVlLi40NTM2OTliZTNjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS91dGlscy9zeXNjYWNoZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3N5c2NhY2hlLmgKQEAg LTEwNyw5ICsxMDcsMTEgQEAgZW51bSBTeXNDYWNoZUlkZW50aWZpZXIKIAlUWVBFTkFNRU5TUCwK IAlUWVBFT0lELAogCVVTRVJNQVBQSU5HT0lELAotCVVTRVJNQVBQSU5HVVNFUlNFUlZFUgorCVVT RVJNQVBQSU5HVVNFUlNFUlZFUiwKKwlWQVJJQUJMRU5BTUVOU1AsCisJVkFSSUFCTEVPSUQKIAot I2RlZmluZSBTeXNDYWNoZVNpemUgKFVTRVJNQVBQSU5HVVNFUlNFUlZFUiArIDEpCisjZGVmaW5l IFN5c0NhY2hlU2l6ZSAoVkFSSUFCTEVPSUQgKyAxKQogfTsKIAogZXh0ZXJuIHZvaWQgSW5pdENh dGFsb2dDYWNoZSh2b2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9leGVj LmMgYi9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZXhlYy5jCmluZGV4IDM4MGQxZGU4ZjQuLmFjNzFk ZDdkN2EgMTAwNjQ0Ci0tLSBhL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9leGVjLmMKKysrIGIvc3Jj L3BsL3BscGdzcWwvc3JjL3BsX2V4ZWMuYwpAQCAtODA0OSw2ICs4MDQ5LDcgQEAgcGxwZ3NxbF9j cmVhdGVfZWNvbnRleHQoUExwZ1NRTF9leGVjc3RhdGUgKmVzdGF0ZSkKIAkJewogCQkJb2xkY29u dGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhUb3BUcmFuc2FjdGlvbkNvbnRleHQpOwogCQkJ c2hhcmVkX3NpbXBsZV9ldmFsX2VzdGF0ZSA9IENyZWF0ZUV4ZWN1dG9yU3RhdGUoKTsKKwkJCXNo YXJlZF9zaW1wbGVfZXZhbF9lc3RhdGUtPmVzX3NoYXJlZCA9IHRydWU7CiAJCQlNZW1vcnlDb250 ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CiAJCX0KIAkJZXN0YXRlLT5zaW1wbGVfZXZhbF9lc3Rh dGUgPSBzaGFyZWRfc2ltcGxlX2V2YWxfZXN0YXRlOwpkaWZmIC0tZ2l0IGEvc3JjL3BsL3BscGdz cWwvc3JjL3BsX2hhbmRsZXIuYyBiL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9oYW5kbGVyLmMKaW5k ZXggN2QzNjQ3YTEyZC4uN2YxODNkNGYxYiAxMDA2NDQKLS0tIGEvc3JjL3BsL3BscGdzcWwvc3Jj L3BsX2hhbmRsZXIuYworKysgYi9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfaGFuZGxlci5jCkBAIC0z MzIsNiArMzMyLDcgQEAgcGxwZ3NxbF9pbmxpbmVfaGFuZGxlcihQR19GVU5DVElPTl9BUkdTKQog CiAJLyogQ3JlYXRlIGEgcHJpdmF0ZSBFU3RhdGUgZm9yIHNpbXBsZS1leHByZXNzaW9uIGV4ZWN1 dGlvbiAqLwogCXNpbXBsZV9ldmFsX2VzdGF0ZSA9IENyZWF0ZUV4ZWN1dG9yU3RhdGUoKTsKKwlz aW1wbGVfZXZhbF9lc3RhdGUtPmVzX3NoYXJlZCA9IHRydWU7CiAKIAkvKiBBbmQgcnVuIHRoZSBm dW5jdGlvbiAqLwogCVBHX1RSWSgpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9taXNjX3Nhbml0eS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL21pc2Nfc2Fu aXR5Lm91dAppbmRleCAyZDM1MjJiNTAwLi40ODI4NmY4ZTFhIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL21pc2Nfc2FuaXR5Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL21pc2Nfc2FuaXR5Lm91dApAQCAtMTA1LDUgKzEwNSw3IEBAIE9SREVSIEJZIDEs IDI7CiAgcGdfaW5kZXggICAgICAgICAgICAgICAgfCBpbmRwcmVkICAgICAgIHwgcGdfbm9kZV90 cmVlCiAgcGdfbGFyZ2VvYmplY3QgICAgICAgICAgfCBkYXRhICAgICAgICAgIHwgYnl0ZWEKICBw Z19sYXJnZW9iamVjdF9tZXRhZGF0YSB8IGxvbWFjbCAgICAgICAgfCBhY2xpdGVtW10KLSgxMSBy b3dzKQorIHBnX3ZhcmlhYmxlICAgICAgICAgICAgIHwgdmFyYWNsICAgICAgICB8IGFjbGl0ZW1b XQorIHBnX3ZhcmlhYmxlICAgICAgICAgICAgIHwgdmFyZGVmZXhwciAgICB8IHBnX25vZGVfdHJl ZQorKDEzIHJvd3MpCiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2Fu aXR5X2NoZWNrLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2FuaXR5X2NoZWNrLm91 dAppbmRleCAwYWE1MzU3OTE3Li44NDhiMDQxYTRiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3Nhbml0eV9jaGVjay5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9zYW5pdHlfY2hlY2sub3V0CkBAIC0xNjMsNiArMTYzLDcgQEAgcGdfdHNfcGFyc2VyfHQK IHBnX3RzX3RlbXBsYXRlfHQKIHBnX3R5cGV8dAogcGdfdXNlcl9tYXBwaW5nfHQKK3BnX3Zhcmlh YmxlfHQKIHBvaW50X3RibHx0CiBwb2x5Z29uX3RibHx0CiBxdWFkX2JveF90Ymx8dApkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zY2hlbWFfdmFyaWFibGVzLm91dCBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2NoZW1hX3ZhcmlhYmxlcy5vdXQKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uODRmZTMwYTJjMAotLS0gL2Rldi9udWxsCisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2NoZW1hX3ZhcmlhYmxlcy5vdXQKQEAgLTAsMCAr MSwzNTEgQEAKK0NSRUFURSBWQVJJQUJMRSB2YXIxIEFTIGludGVnZXI7CitDUkVBVEUgVEVNUCBW QVJJQUJMRSB2YXIyIEFTIHRleHQ7CitEUk9QIFZBUklBQkxFIHZhcjEsIHZhcjI7CistLSBmdW5j dGlvbmFsIGludGVyZmFjZQorQ1JFQVRFIFZBUklBQkxFIHZhcjEgQVMgbnVtZXJpYzsKK0NSRUFU RSBST0xFIHZhcl90ZXN0X3JvbGU7CitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworLS0gc2hv dWxkIHRvIGZhaWwKK1NFTEVDVCB2YXIxOworRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3Ig c2NoZW1hIHZhcmlhYmxlIHZhcjEKK1NFVCBST0xFIFRPIERFRkFVTFQ7CitHUkFOVCBSRUFEIE9O IFZBUklBQkxFIHZhcjEgVE8gdmFyX3Rlc3Rfcm9sZTsKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3Jv bGU7CistLSBzaG91bGQgdG8gZmFpbAorTEVUIHZhcjEgPSAxMDsKK0VSUk9SOiAgcGVybWlzc2lv biBkZW5pZWQgZm9yIHNjaGVtYSB2YXJpYWJsZSB2YXIxCistLSBzaG91bGQgdG8gd29yaworU0VM RUNUIHZhcjE7CisgdmFyMSAKKy0tLS0tLQorICAgICAKKygxIHJvdykKKworU0VUIFJPTEUgVE8g REVGQVVMVDsKK0dSQU5UIFdSSVRFIE9OIFZBUklBQkxFIHZhcjEgVE8gdmFyX3Rlc3Rfcm9sZTsK K1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7CistLSBzaG91bGQgdG8gd29yaworTEVUIHZhcjEg PSAzMzM7CitTRVQgUk9MRSBUTyBERUZBVUxUOworUkVWT0tFIEFMTCBPTiBWQVJJQUJMRSB2YXIx IEZST00gdmFyX3Rlc3Rfcm9sZTsKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIHNlY3VyZV92 YXIoKQorUkVUVVJOUyBpbnQgQVMgJCQKKyAgU0VMRUNUIHB1YmxpYy52YXIxOjppbnQ7CiskJCBM QU5HVUFHRSBzcWwgU0VDVVJJVFkgREVGSU5FUjsKK1NFTEVDVCBzZWN1cmVfdmFyKCk7Cisgc2Vj dXJlX3ZhciAKKy0tLS0tLS0tLS0tLQorICAgICAgICAzMzMKKygxIHJvdykKKworU0VUIFJPTEUg VE8gdmFyX3Rlc3Rfcm9sZTsKKy0tIHNob3VsZCB0byBmYWlsCitTRUxFQ1QgcHVibGljLnZhcjE7 CitFUlJPUjogIHBlcm1pc3Npb24gZGVuaWVkIGZvciBzY2hlbWEgdmFyaWFibGUgdmFyMQorLS0g c2hvdWxkIHRvIHdvcms7CitTRUxFQ1Qgc2VjdXJlX3ZhcigpOworIHNlY3VyZV92YXIgCistLS0t LS0tLS0tLS0KKyAgICAgICAgMzMzCisoMSByb3cpCisKK1NFVCBST0xFIFRPIERFRkFVTFQ7CitF WFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gZ2VuZXJhdGVfc2VyaWVz KDEsMTAwKSBnKHYpIFdIRVJFIHYgPSB2YXIxOworICAgICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgRnVuY3Rpb24gU2NhbiBvbiBwZ19jYXRhbG9nLmdlbmVyYXRlX3Nlcmll cyBnCisgICBPdXRwdXQ6IHYKKyAgIEZ1bmN0aW9uIENhbGw6IGdlbmVyYXRlX3NlcmllcygxLCAx MDApCisgICBGaWx0ZXI6ICgoZy52KTo6bnVtZXJpYyA9IHZhcjEpCisoNCByb3dzKQorCitDUkVB VEUgVklFVyBzY2hlbWFfdmFyX3ZpZXcgQVMgU0VMRUNUIHZhcjE7CitTRUxFQ1QgKiBGUk9NIHNj aGVtYV92YXJfdmlldzsKKyB2YXIxIAorLS0tLS0tCisgIDMzMworKDEgcm93KQorCitcYyAtCist LSBzaG91bGQgdG8gd29yayBzdGlsbCwgYnV0IHZhciB3aWxsIGJlIGVtcHR5CitTRUxFQ1QgKiBG Uk9NIHNjaGVtYV92YXJfdmlldzsKKyB2YXIxIAorLS0tLS0tCisgICAgIAorKDEgcm93KQorCitM RVQgdmFyMSA9IHBpKCk7CitTRUxFQ1QgdmFyMTsKKyAgICAgICB2YXIxICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tCisgMy4xNDE1OTI2NTM1ODk3OQorKDEgcm93KQorCistLSB3ZSBjYW4gbG9v ayBvbiBleGVjdXRpb24gcGxhbgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBMRVQgdmFy MSA9IHBpKCk7CisgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgUmVzdWx0CisgICBPdXRwdXQ6IDMuMTQxNTkyNjUzNTg5NzkKKygyIHJv d3MpCisKKy0tIExFVCBjYW4gYmUgcHJlcGFyZWQKK1BSRVBBUkUgdmFyX3BwKGludCwgbnVtZXJp YykgQVMgTEVUIHZhcjEgPSAkMSArICQyOworRVhFQ1VURSB2YXJfcHAoMTAwLCAxLjIzNDU2KTsK K1NFTEVDVCB2YXIxOworICAgdmFyMSAgICAKKy0tLS0tLS0tLS0tCisgMTAxLjIzNDU2CisoMSBy b3cpCisKK0NSRUFURSBWQVJJQUJMRSB2YXIzIEFTIGludDsKK0NSRUFURSBPUiBSRVBMQUNFIEZV TkNUSU9OIGluYyhpbnQpCitSRVRVUk5TIGludCBBUyAkJAorQkVHSU4KKyAgTEVUIHB1YmxpYy52 YXIzID0gQ09BTEVTQ0UocHVibGljLnZhcjMgKyAkMSwgJDEpOworICBSRVRVUk4gdmFyMzsKK0VO RDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CitTRUxFQ1QgaW5jKDEpOworIGluYyAKKy0tLS0tCisg ICAxCisoMSByb3cpCisKK1NFTEVDVCBpbmMoMSk7CisgaW5jIAorLS0tLS0KKyAgIDIKKygxIHJv dykKKworU0VMRUNUIGluYygxKTsKKyBpbmMgCistLS0tLQorICAgMworKDEgcm93KQorCitTRUxF Q1QgaW5jKDEpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApOworIGluYyAKKy0tLS0tCisgICA0 CisgICA1CisgICA2CisgICA3CisgICA4CisgICA5CisgIDEwCisgIDExCisgIDEyCisgIDEzCiso MTAgcm93cykKKworU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKy0tIHNob3VsZCB0byBmYWls CitMRVQgdmFyMyA9IDA7CitFUlJPUjogIHBlcm1pc3Npb24gZGVuaWVkIGZvciBzY2hlbWEgdmFy aWFibGUgdmFyMworU0VUIFJPTEUgVE8gREVGQVVMVDsKK0RST1AgVklFVyBzY2hlbWFfdmFyX3Zp ZXc7CitEUk9QIFZBUklBQkxFIHZhcjEgQ0FTQ0FERTsKK0RST1AgVkFSSUFCTEUgdmFyMyBDQVND QURFOworLS0gY29tcG9zaXRlIHZhcmlhYmxlcworQ1JFQVRFIFRZUEUgc3ZfeHl6IEFTICh4IGlu dCwgeSBpbnQsIHogbnVtZXJpYygxMCwyKSk7CitDUkVBVEUgVkFSSUFCTEUgdjEgQVMgc3ZfeHl6 OworQ1JFQVRFIFZBUklBQkxFIHYyIEFTIHN2X3h5ejsKK1xkIHYxCitcZCB2MgorTEVUIHYxID0g KDEsMiwzLjE0KTsKK0xFVCB2MiA9ICgxMCwyMCwzLjE0KjEwKTsKKy0tIHNob3VsZCB0byB3b3Jr IHRvbyAtIHRoZXJlIGFyZSBwcmVwYXJlZCBjYXN0cworTEVUIHYxID0gKDEsMiwzLjE0KTsKK1NF TEVDVCB2MTsKKyAgICAgdjEgICAgIAorLS0tLS0tLS0tLS0tCisgKDEsMiwzLjE0KQorKDEgcm93 KQorCitTRUxFQ1QgdjI7CisgICAgICB2MiAgICAgICAKKy0tLS0tLS0tLS0tLS0tLQorICgxMCwy MCwzMS40MCkKKygxIHJvdykKKworU0VMRUNUICh2MSkuKjsKKyB4IHwgeSB8ICB6ICAgCistLS0r LS0tKy0tLS0tLQorIDEgfCAyIHwgMy4xNAorKDEgcm93KQorCitTRUxFQ1QgKHYyKS4qOworIHgg IHwgeSAgfCAgIHogICAKKy0tLS0rLS0tLSstLS0tLS0tCisgMTAgfCAyMCB8IDMxLjQwCisoMSBy b3cpCisKK1NFTEVDVCB2MS54ICsgdjEuejsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAgICAg NC4xNAorKDEgcm93KQorCitTRUxFQ1QgdjIueCArIHYyLno7CisgP2NvbHVtbj8gCistLS0tLS0t LS0tCisgICAgNDEuNDAKKygxIHJvdykKKworLS0gYWNjZXNzIHRvIGNvbXBvc2l0ZSBmaWVsZHMg c2hvdWxkIGJlIHNhZmUgdG9vCistLSBzaG91bGQgdG8gZmFpbAorU0VUIFJPTEUgVE8gdmFyX3Rl c3Rfcm9sZTsKK1NFTEVDVCB2Mi54OworRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3Igc2No ZW1hIHZhcmlhYmxlIHYyCitTRVQgUk9MRSBUTyBERUZBVUxUOworRFJPUCBWQVJJQUJMRSB2MTsK K0RST1AgVkFSSUFCTEUgdjI7CitEUk9QIFJPTEUgdmFyX3Rlc3Rfcm9sZTsKKy0tIHNjYWxhciB2 YXJpYWJsZXMgc2hvdWxkIG5vdCBiZSBpbiBjb25mbGljdCB3aXRoIHF1YWxpZmllZCBjb2x1bW4K K0NSRUFURSBWQVJJQUJMRSB2YXJ4IEFTIHRleHQ7CitTRUxFQ1QgdmFyeC5yZWxuYW1lIEZST00g cGdfY2xhc3MgdmFyeCBXSEVSRSB2YXJ4LnJlbG5hbWUgPSAncGdfY2xhc3MnOworIHJlbG5hbWUg IAorLS0tLS0tLS0tLQorIHBnX2NsYXNzCisoMSByb3cpCisKKy0tIHNob3VsZCB0byBmYWlsCitT RUxFQ1QgdmFyeC54eHg7CitFUlJPUjogIHR5cGUgdGV4dCBpcyBub3QgY29tcG9zaXRlCistLSB2 YXJpYWJsZXMgY2FuIGJlIHVwZGF0ZWQgdW5kZXIgUk8gdHJhbnNhY3Rpb24KK0JFR0lOOworU0VU IFRSQU5TQUNUSU9OIFJFQUQgT05MWTsKK0xFVCB2YXJ4ID0gJ2hlbGxvJzsKK0NPTU1JVDsKK1NF TEVDVCB2YXJ4OworIHZhcnggIAorLS0tLS0tLQorIGhlbGxvCisoMSByb3cpCisKK0RST1AgVkFS SUFCTEUgdmFyeDsKK0NSRUFURSBUWVBFIHQxIEFTIChhIGludCwgYiBudW1lcmljLCBjIHRleHQp OworQ1JFQVRFIFZBUklBQkxFIHYxIEFTIHQxOworTEVUIHYxID0gKDEsIHBpKCksICdoZWxsbycp OworU0VMRUNUIHYxOworICAgICAgICAgICAgIHYxICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICgxLDMuMTQxNTkyNjUzNTg5NzksaGVsbG8pCisoMSByb3cpCisK K0xFVCB2MS5iID0gMTAuMjIyMjsKK1NFTEVDVCB2MTsKKyAgICAgICAgdjEgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0KKyAoMSwxMC4yMjIyLGhlbGxvKQorKDEgcm93KQorCistLSBzaG91 bGQgdG8gZmFpbAorTEVUIHYxLnggPSAxMDsKK0VSUk9SOiAgY2Fubm90IGFzc2lnbiB0byBmaWVs ZCAieCIgb2YgY29sdW1uICJ4IiBiZWNhdXNlIHRoZXJlIGlzIG5vIHN1Y2ggY29sdW1uIGluIGRh dGEgdHlwZSB0MQorTElORSAxOiBMRVQgdjEueCA9IDEwOworICAgICAgICAgICAgXgorRFJPUCBW QVJJQUJMRSB2MTsKK0RST1AgVFlQRSB0MTsKKy0tIGFycmF5cyBhcmUgc3VwcG9ydGVkCitDUkVB VEUgVkFSSUFCTEUgdmExIEFTIG51bWVyaWNbXTsKK0xFVCB2YTEgPSBBUlJBWVsxLjEsMi4xXTsK K0xFVCB2YTFbMV0gPSAxMC4xOworU0VMRUNUIHZhMTsKKyAgICB2YTEgICAgIAorLS0tLS0tLS0t LS0tCisgezEwLjEsMi4xfQorKDEgcm93KQorCitDUkVBVEUgVFlQRSB0YTIgQVMgKGEgbnVtZXJp YywgYiBudW1lcmljW10pOworQ1JFQVRFIFZBUklBQkxFIHZhMiBBUyB0YTI7CitMRVQgdmEyID0g KDEwLjEsIEFSUkFZWzAuMCwgMC4wXSk7CitMRVQgdmEyLmEgPSAxMC4yOworU0VMRUNUIHZhMjsK KyAgICAgICAgdmEyICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLQorICgxMC4yLCJ7MC4w LDAuMH0iKQorKDEgcm93KQorCitMRVQgdmEyLmJbMV0gPSAxMC4zOworU0VMRUNUIHZhMjsKKyAg ICAgICAgIHZhMiAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKDEwLjIsInsxMC4z LDAuMH0iKQorKDEgcm93KQorCitEUk9QIFZBUklBQkxFIHZhMTsKK0RST1AgVkFSSUFCTEUgdmEy OworRFJPUCBUWVBFIHRhMjsKKy0tIGRlZmF1bHQgdmFsdWVzCitDUkVBVEUgVkFSSUFCTEUgdjEg QVMgbnVtZXJpYyBERUZBVUxUIHBpKCk7CitMRVQgdjEgPSB2MSAqIDI7CitTRUxFQ1QgdjE7Cisg ICAgICAgIHYxICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLQorIDYuMjgzMTg1MzA3MTc5NTgK KygxIHJvdykKKworQ1JFQVRFIFRZUEUgdDIgQVMgKGEgbnVtZXJpYywgYiB0ZXh0KTsKK0NSRUFU RSBWQVJJQUJMRSB2MiBBUyB0MiBERUZBVUxUIChOVUxMLCAnSGVsbG8nKTsKK0xFVCBwdWJsaWMu djIuYSA9IHBpKCk7CitTRUxFQ1QgdjI7CisgICAgICAgICAgICB2MiAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAoMy4xNDE1OTI2NTM1ODk3OSxIZWxsbykKKygxIHJv dykKKworLS0gc2hvdWRsIGZhaWwgZHVlIGRlcGVuZGVuY3kKK0RST1AgVFlQRSB0MjsKK0VSUk9S OiAgY2Fubm90IGRyb3AgdHlwZSB0MiBiZWNhdXNlIG90aGVyIG9iamVjdHMgZGVwZW5kIG9uIGl0 CitERVRBSUw6ICBzY2hlbWEgdmFyaWFibGUgdjIgZGVwZW5kcyBvbiB0eXBlIHQyCitISU5UOiAg VXNlIERST1AgLi4uIENBU0NBREUgdG8gZHJvcCB0aGUgZGVwZW5kZW50IG9iamVjdHMgdG9vLgor LS0gc2hvdWxkIGJlIG9rCitEUk9QIFZBUklBQkxFIHYxOworRFJPUCBWQVJJQUJMRSB2MjsKKy0t IHRlc3RzIG9mIGFsdGVycworQ1JFQVRFIFNDSEVNQSB2YXJfc2NoZW1hMTsKK0NSRUFURSBTQ0hF TUEgdmFyX3NjaGVtYTI7CitDUkVBVEUgVkFSSUFCTEUgdmFyX3NjaGVtYTEudmFyMSBBUyBpbnRl Z2VyOworTEVUIHZhcl9zY2hlbWExLnZhcjEgPSAxMDAwOworU0VMRUNUIHZhcl9zY2hlbWExLnZh cjE7CisgdmFyMSAKKy0tLS0tLQorIDEwMDAKKygxIHJvdykKKworQUxURVIgVkFSSUFCTEUgdmFy X3NjaGVtYTEudmFyMSBTRVQgU0NIRU1BIHZhcl9zY2hlbWEyOworU0VMRUNUIHZhcl9zY2hlbWEy LnZhcjE7CisgdmFyMSAKKy0tLS0tLQorIDEwMDAKKygxIHJvdykKKworQ1JFQVRFIFJPTEUgdmFy X3Rlc3Rfcm9sZTsKK0FMVEVSIFZBUklBQkxFIHZhcl9zY2hlbWEyLnZhcjEgT1dORVIgVE8gdmFy X3Rlc3Rfcm9sZTsKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7CistLSBzaG91bGQgZmFpbCwg bm8gYWNjZXNzIHRvIHNjaGVtYSB2YXJfc2NoZW1hMi52YXIKK1NFTEVDVCB2YXJfc2NoZW1hMi52 YXIxOworRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3Igc2NoZW1hIHZhcl9zY2hlbWEyCitE Uk9QIFZBUklBQkxFIHZhcl9zY2hlbWEyLnZhcjE7CitFUlJPUjogIHBlcm1pc3Npb24gZGVuaWVk IGZvciBzY2hlbWEgdmFyX3NjaGVtYTIKK1NFVCBST0xFIFRPIERFRkFVTFQ7CitBTFRFUiBWQVJJ QUJMRSB2YXJfc2NoZW1hMi52YXIxIFNFVCBTQ0hFTUEgcHVibGljOworU0VUIFJPTEUgVE8gdmFy X3Rlc3Rfcm9sZTsKK1NFTEVDVCBwdWJsaWMudmFyMTsKKyB2YXIxIAorLS0tLS0tCisgMTAwMAor KDEgcm93KQorCitBTFRFUiBWQVJJQUJMRSBwdWJsaWMudmFyMSBSRU5BTUUgVE8gdmFyMV9yZW5h bWVkOworU0VMRUNUIHB1YmxpYy52YXIxX3JlbmFtZWQ7CisgdmFyMV9yZW5hbWVkIAorLS0tLS0t LS0tLS0tLS0KKyAgICAgICAgIDEwMDAKKygxIHJvdykKKworRFJPUCBWQVJJQUJMRSBwdWJsaWMu dmFyMV9yZW5hbWVkOworU0VUIFJPTEUgVE8gREVGQVVMdDsKK0RST1AgUk9MRSB2YXJfdGVzdF9y b2xlOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKaW5kZXggMTZmOTc5YzhkOS4uOWJmMzc5 Yjg3YiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCkBAIC0xMTEsNyArMTExLDcgQEAg dGVzdDogc2VsZWN0X3ZpZXdzIHBvcnRhbHNfcDIgZm9yZWlnbl9rZXkgY2x1c3RlciBkZXBlbmRl bmN5IGd1YyBiaXRtYXBvcHMgY29tYm8KICMgTkI6IHRlbXAuc3FsIGRvZXMgYSByZWNvbm5lY3Qg d2hpY2ggdHJhbnNpZW50bHkgdXNlcyAyIGNvbm5lY3Rpb25zLAogIyBzbyBrZWVwIHRoaXMgcGFy YWxsZWwgZ3JvdXAgdG8gYXQgbW9zdCAxOSB0ZXN0cwogIyAtLS0tLS0tLS0tCi10ZXN0OiBwbGFu Y2FjaGUgbGltaXQgcGxwZ3NxbCBjb3B5MiB0ZW1wIGRvbWFpbiByYW5nZWZ1bmNzIHByZXBhcmUg d2l0aG91dF9vaWQgY29udmVyc2lvbiB0cnVuY2F0ZSBhbHRlcl90YWJsZSBzZXF1ZW5jZSBwb2x5 bW9ycGhpc20gcm93dHlwZXMgcmV0dXJuaW5nIGxhcmdlb2JqZWN0IHdpdGggeG1sCit0ZXN0OiBw bGFuY2FjaGUgbGltaXQgcGxwZ3NxbCBjb3B5MiB0ZW1wIGRvbWFpbiByYW5nZWZ1bmNzIHByZXBh cmUgd2l0aG91dF9vaWQgY29udmVyc2lvbiB0cnVuY2F0ZSBhbHRlcl90YWJsZSBzZXF1ZW5jZSBw b2x5bW9ycGhpc20gcm93dHlwZXMgcmV0dXJuaW5nIGxhcmdlb2JqZWN0IHdpdGggeG1sIHNjaGVt YV92YXJpYWJsZXMKIAogIyAtLS0tLS0tLS0tCiAjIEFub3RoZXIgZ3JvdXAgb2YgcGFyYWxsZWwg dGVzdHMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc2VyaWFsX3NjaGVkdWxlIGIvc3Jj L3Rlc3QvcmVncmVzcy9zZXJpYWxfc2NoZWR1bGUKaW5kZXggNDI2MzJiZTY3NS4uNDJiZjRlY2Iz ZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zZXJpYWxfc2NoZWR1bGUKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9zZXJpYWxfc2NoZWR1bGUKQEAgLTE5MSwzICsxOTEsNCBAQCB0ZXN0OiBw YXJ0aXRpb25fYWdncmVnYXRlCiB0ZXN0OiBldmVudF90cmlnZ2VyCiB0ZXN0OiBmYXN0X2RlZmF1 bHQKIHRlc3Q6IHN0YXRzCit0ZXN0OiBzY2hlbWFfdmFyaWFibGVzCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9zY2hlbWFfdmFyaWFibGVzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3NjaGVtYV92YXJpYWJsZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAuLjkxYjJiYmIyOGIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9zY2hlbWFfdmFyaWFibGVzLnNxbApAQCAtMCwwICsxLDI0NyBAQAorQ1JFQVRFIFZBUklBQkxF IHZhcjEgQVMgaW50ZWdlcjsKK0NSRUFURSBURU1QIFZBUklBQkxFIHZhcjIgQVMgdGV4dDsKKwor RFJPUCBWQVJJQUJMRSB2YXIxLCB2YXIyOworCistLSBmdW5jdGlvbmFsIGludGVyZmFjZQorQ1JF QVRFIFZBUklBQkxFIHZhcjEgQVMgbnVtZXJpYzsKKworQ1JFQVRFIFJPTEUgdmFyX3Rlc3Rfcm9s ZTsKKworU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKworLS0gc2hvdWxkIHRvIGZhaWwKK1NF TEVDVCB2YXIxOworCitTRVQgUk9MRSBUTyBERUZBVUxUOworCitHUkFOVCBSRUFEIE9OIFZBUklB QkxFIHZhcjEgVE8gdmFyX3Rlc3Rfcm9sZTsKKworU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsK Ky0tIHNob3VsZCB0byBmYWlsCitMRVQgdmFyMSA9IDEwOworLS0gc2hvdWxkIHRvIHdvcmsKK1NF TEVDVCB2YXIxOworCitTRVQgUk9MRSBUTyBERUZBVUxUOworCitHUkFOVCBXUklURSBPTiBWQVJJ QUJMRSB2YXIxIFRPIHZhcl90ZXN0X3JvbGU7CisKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7 CisKKy0tIHNob3VsZCB0byB3b3JrCitMRVQgdmFyMSA9IDMzMzsKKworU0VUIFJPTEUgVE8gREVG QVVMVDsKKworUkVWT0tFIEFMTCBPTiBWQVJJQUJMRSB2YXIxIEZST00gdmFyX3Rlc3Rfcm9sZTsK KworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gc2VjdXJlX3ZhcigpCitSRVRVUk5TIGludCBB UyAkJAorICBTRUxFQ1QgcHVibGljLnZhcjE6OmludDsKKyQkIExBTkdVQUdFIHNxbCBTRUNVUklU WSBERUZJTkVSOworCitTRUxFQ1Qgc2VjdXJlX3ZhcigpOworCitTRVQgUk9MRSBUTyB2YXJfdGVz dF9yb2xlOworCistLSBzaG91bGQgdG8gZmFpbAorU0VMRUNUIHB1YmxpYy52YXIxOworCistLSBz aG91bGQgdG8gd29yazsKK1NFTEVDVCBzZWN1cmVfdmFyKCk7CisKK1NFVCBST0xFIFRPIERFRkFV TFQ7CisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwxMDApIGcodikgV0hFUkUgdiA9IHZhcjE7CisKK0NSRUFURSBWSUVXIHNjaGVt YV92YXJfdmlldyBBUyBTRUxFQ1QgdmFyMTsKKworU0VMRUNUICogRlJPTSBzY2hlbWFfdmFyX3Zp ZXc7CisKK1xjIC0KKworLS0gc2hvdWxkIHRvIHdvcmsgc3RpbGwsIGJ1dCB2YXIgd2lsbCBiZSBl bXB0eQorU0VMRUNUICogRlJPTSBzY2hlbWFfdmFyX3ZpZXc7CisKK0xFVCB2YXIxID0gcGkoKTsK KworU0VMRUNUIHZhcjE7CisKKy0tIHdlIGNhbiBsb29rIG9uIGV4ZWN1dGlvbiBwbGFuCitFWFBM QUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIExFVCB2YXIxID0gcGkoKTsKKworLS0gTEVUIGNhbiBi ZSBwcmVwYXJlZAorUFJFUEFSRSB2YXJfcHAoaW50LCBudW1lcmljKSBBUyBMRVQgdmFyMSA9ICQx ICsgJDI7CisKK0VYRUNVVEUgdmFyX3BwKDEwMCwgMS4yMzQ1Nik7CisKK1NFTEVDVCB2YXIxOwor CitDUkVBVEUgVkFSSUFCTEUgdmFyMyBBUyBpbnQ7CisKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNU SU9OIGluYyhpbnQpCitSRVRVUk5TIGludCBBUyAkJAorQkVHSU4KKyAgTEVUIHB1YmxpYy52YXIz ID0gQ09BTEVTQ0UocHVibGljLnZhcjMgKyAkMSwgJDEpOworICBSRVRVUk4gdmFyMzsKK0VORDsK KyQkIExBTkdVQUdFIHBscGdzcWw7CisKK1NFTEVDVCBpbmMoMSk7CitTRUxFQ1QgaW5jKDEpOwor U0VMRUNUIGluYygxKTsKKworU0VMRUNUIGluYygxKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEw KTsKKworU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKworLS0gc2hvdWxkIHRvIGZhaWwKK0xF VCB2YXIzID0gMDsKKworU0VUIFJPTEUgVE8gREVGQVVMVDsKKworRFJPUCBWSUVXIHNjaGVtYV92 YXJfdmlldzsKKworRFJPUCBWQVJJQUJMRSB2YXIxIENBU0NBREU7CitEUk9QIFZBUklBQkxFIHZh cjMgQ0FTQ0FERTsKKworLS0gY29tcG9zaXRlIHZhcmlhYmxlcworCitDUkVBVEUgVFlQRSBzdl94 eXogQVMgKHggaW50LCB5IGludCwgeiBudW1lcmljKDEwLDIpKTsKKworQ1JFQVRFIFZBUklBQkxF IHYxIEFTIHN2X3h5ejsKK0NSRUFURSBWQVJJQUJMRSB2MiBBUyBzdl94eXo7CisKK1xkIHYxCitc ZCB2MgorCitMRVQgdjEgPSAoMSwyLDMuMTQpOworTEVUIHYyID0gKDEwLDIwLDMuMTQqMTApOwor CistLSBzaG91bGQgdG8gd29yayB0b28gLSB0aGVyZSBhcmUgcHJlcGFyZWQgY2FzdHMKK0xFVCB2 MSA9ICgxLDIsMy4xNCk7CisKK1NFTEVDVCB2MTsKK1NFTEVDVCB2MjsKK1NFTEVDVCAodjEpLio7 CitTRUxFQ1QgKHYyKS4qOworCitTRUxFQ1QgdjEueCArIHYxLno7CitTRUxFQ1QgdjIueCArIHYy Lno7CisKKy0tIGFjY2VzcyB0byBjb21wb3NpdGUgZmllbGRzIHNob3VsZCBiZSBzYWZlIHRvbwor LS0gc2hvdWxkIHRvIGZhaWwKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7CisKK1NFTEVDVCB2 Mi54OworCitTRVQgUk9MRSBUTyBERUZBVUxUOworCitEUk9QIFZBUklBQkxFIHYxOworRFJPUCBW QVJJQUJMRSB2MjsKKworRFJPUCBST0xFIHZhcl90ZXN0X3JvbGU7CisKKy0tIHNjYWxhciB2YXJp YWJsZXMgc2hvdWxkIG5vdCBiZSBpbiBjb25mbGljdCB3aXRoIHF1YWxpZmllZCBjb2x1bW4KK0NS RUFURSBWQVJJQUJMRSB2YXJ4IEFTIHRleHQ7CitTRUxFQ1QgdmFyeC5yZWxuYW1lIEZST00gcGdf Y2xhc3MgdmFyeCBXSEVSRSB2YXJ4LnJlbG5hbWUgPSAncGdfY2xhc3MnOworCistLSBzaG91bGQg dG8gZmFpbAorU0VMRUNUIHZhcngueHh4OworCistLSB2YXJpYWJsZXMgY2FuIGJlIHVwZGF0ZWQg dW5kZXIgUk8gdHJhbnNhY3Rpb24KKworQkVHSU47CitTRVQgVFJBTlNBQ1RJT04gUkVBRCBPTkxZ OworTEVUIHZhcnggPSAnaGVsbG8nOworQ09NTUlUOworCitTRUxFQ1QgdmFyeDsKKworRFJPUCBW QVJJQUJMRSB2YXJ4OworCitDUkVBVEUgVFlQRSB0MSBBUyAoYSBpbnQsIGIgbnVtZXJpYywgYyB0 ZXh0KTsKKworQ1JFQVRFIFZBUklBQkxFIHYxIEFTIHQxOworTEVUIHYxID0gKDEsIHBpKCksICdo ZWxsbycpOworU0VMRUNUIHYxOworTEVUIHYxLmIgPSAxMC4yMjIyOworU0VMRUNUIHYxOworCist LSBzaG91bGQgdG8gZmFpbAorTEVUIHYxLnggPSAxMDsKKworRFJPUCBWQVJJQUJMRSB2MTsKK0RS T1AgVFlQRSB0MTsKKworLS0gYXJyYXlzIGFyZSBzdXBwb3J0ZWQKK0NSRUFURSBWQVJJQUJMRSB2 YTEgQVMgbnVtZXJpY1tdOworTEVUIHZhMSA9IEFSUkFZWzEuMSwyLjFdOworTEVUIHZhMVsxXSA9 IDEwLjE7CitTRUxFQ1QgdmExOworCitDUkVBVEUgVFlQRSB0YTIgQVMgKGEgbnVtZXJpYywgYiBu dW1lcmljW10pOworQ1JFQVRFIFZBUklBQkxFIHZhMiBBUyB0YTI7CitMRVQgdmEyID0gKDEwLjEs IEFSUkFZWzAuMCwgMC4wXSk7CitMRVQgdmEyLmEgPSAxMC4yOworU0VMRUNUIHZhMjsKK0xFVCB2 YTIuYlsxXSA9IDEwLjM7CitTRUxFQ1QgdmEyOworCitEUk9QIFZBUklBQkxFIHZhMTsKK0RST1Ag VkFSSUFCTEUgdmEyOworRFJPUCBUWVBFIHRhMjsKKworLS0gZGVmYXVsdCB2YWx1ZXMKK0NSRUFU RSBWQVJJQUJMRSB2MSBBUyBudW1lcmljIERFRkFVTFQgcGkoKTsKK0xFVCB2MSA9IHYxICogMjsK K1NFTEVDVCB2MTsKKworQ1JFQVRFIFRZUEUgdDIgQVMgKGEgbnVtZXJpYywgYiB0ZXh0KTsKK0NS RUFURSBWQVJJQUJMRSB2MiBBUyB0MiBERUZBVUxUIChOVUxMLCAnSGVsbG8nKTsKK0xFVCBwdWJs aWMudjIuYSA9IHBpKCk7CitTRUxFQ1QgdjI7CisKKy0tIHNob3VkbCBmYWlsIGR1ZSBkZXBlbmRl bmN5CitEUk9QIFRZUEUgdDI7CisKKy0tIHNob3VsZCBiZSBvaworRFJPUCBWQVJJQUJMRSB2MTsK K0RST1AgVkFSSUFCTEUgdjI7CisKKy0tIHRlc3RzIG9mIGFsdGVycworQ1JFQVRFIFNDSEVNQSB2 YXJfc2NoZW1hMTsKK0NSRUFURSBTQ0hFTUEgdmFyX3NjaGVtYTI7CisKK0NSRUFURSBWQVJJQUJM RSB2YXJfc2NoZW1hMS52YXIxIEFTIGludGVnZXI7CitMRVQgdmFyX3NjaGVtYTEudmFyMSA9IDEw MDA7CitTRUxFQ1QgdmFyX3NjaGVtYTEudmFyMTsKK0FMVEVSIFZBUklBQkxFIHZhcl9zY2hlbWEx LnZhcjEgU0VUIFNDSEVNQSB2YXJfc2NoZW1hMjsKK1NFTEVDVCB2YXJfc2NoZW1hMi52YXIxOwor CitDUkVBVEUgUk9MRSB2YXJfdGVzdF9yb2xlOworCitBTFRFUiBWQVJJQUJMRSB2YXJfc2NoZW1h Mi52YXIxIE9XTkVSIFRPIHZhcl90ZXN0X3JvbGU7CitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xl OworCistLSBzaG91bGQgZmFpbCwgbm8gYWNjZXNzIHRvIHNjaGVtYSB2YXJfc2NoZW1hMi52YXIK K1NFTEVDVCB2YXJfc2NoZW1hMi52YXIxOworRFJPUCBWQVJJQUJMRSB2YXJfc2NoZW1hMi52YXIx OworCitTRVQgUk9MRSBUTyBERUZBVUxUOworCitBTFRFUiBWQVJJQUJMRSB2YXJfc2NoZW1hMi52 YXIxIFNFVCBTQ0hFTUEgcHVibGljOworCitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworU0VM RUNUIHB1YmxpYy52YXIxOworCitBTFRFUiBWQVJJQUJMRSBwdWJsaWMudmFyMSBSRU5BTUUgVE8g dmFyMV9yZW5hbWVkOworCitTRUxFQ1QgcHVibGljLnZhcjFfcmVuYW1lZDsKKworRFJPUCBWQVJJ QUJMRSBwdWJsaWMudmFyMV9yZW5hbWVkOworCitTRVQgUk9MRSBUTyBERUZBVUx0OworCitEUk9Q IFJPTEUgdmFyX3Rlc3Rfcm9sZTsK --000000000000fe827b05732d4985--