<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>131587</bug_id>
          
          <creation_ts>2014-04-13 00:54:00 -0700</creation_ts>
          <short_desc>userVisibleString should not try to &quot;encode&quot; host names</short_desc>
          <delta_ts>2019-01-15 17:09:49 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>ap</cc>
    
    <cc>jeffm</cc>
    
    <cc>mitz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1000269</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-13 00:54:00 -0700</bug_when>
    <thetext>userVisibleString should not try to &quot;encode&quot; host names</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000270</commentid>
    <comment_count>1</comment_count>
      <attachid>229224</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-13 01:00:20 -0700</bug_when>
    <thetext>Created attachment 229224
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000309</commentid>
    <comment_count>2</comment_count>
      <attachid>229224</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-04-13 11:49:41 -0700</bug_when>
    <thetext>Comment on attachment 229224
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=229224&amp;action=review

&gt; Source/WebCore/ChangeLog:3
&gt; +        userVisibleString should not try to &quot;encode&quot; host names

The optional encoding was added in &lt;http://trac.webkit.org/changeset/32886&gt; as part of fixing a security bug. I spent some time trying to figure out why it was added, but was not successful.

Did the changes in &lt;http://trac.webkit.org/changeset/32886&gt; become obsolete when we decided to show punycode for suspicious domain names? If so, can createStringWithEscapedUnsafeCharacters() be removed now? Can you add a regression test for &lt;rdar://problem/5884383&gt;, given that you substantially change the code added to fix it?

&gt; Source/WebCore/ChangeLog:19
&gt; +        (WebCore::userVisibleString): Only call mapHostNames is host name decoding is

Typo: is/if.

&gt; Source/WebCore/platform/mac/WebCoreNSURLExtras.mm:861
&gt; +    if (needsHostNameDecoding)

needsHostNameDecoding is true any time &quot;xn--&quot; is seen anywhere in the URL string, not just in host name. It may be appropriate to rename it to something like hostNameMayBeIDNEncoded in this patch.

&gt; Tools/TestWebKitAPI/Tests/mac/URLExtras.mm:75
&gt; +    EXPECT_STREQ(&quot;http://site.com\xEF\xBC\x8Fothersite.org&quot;, originalDataAsString(literalURL(&quot;http://site.com\xEF\xBC\x8Fothersite.org&quot;)));

It&apos;s not clear to me why this is correct behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000354</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-13 18:00:48 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Did the changes in &lt;http://trac.webkit.org/changeset/32886&gt; become obsolete when we decided to show punycode for suspicious domain names?

Not sure. The test case from that old bug involves %-escaped characters in a webpage. When I test it in Safari, I see %-escape sequences, not puny code, in the smart search field.

&gt; Can you add a regression test for &lt;rdar://problem/5884383&gt;, given that you substantially change the code added to fix it?

Yes.

I will add test cases to cover these kinds of URLs when they come in through URLWithUserTypedString, and also when they do not.

It seems that original issue is almost identical to the bug being looked at now. It’s just that the character is a space rather than a slash, and the trick is to push the end of the hostname off the right side of the field rather than having the browser consider it not part of the hostname.

I think the real issue here is sufficient test coverage. Once we add enough tests we can try to make refinements to the code, and maybe discover more that is unneeded.

&gt; Typo: is/if.

Fixed.

&gt; &gt; Source/WebCore/platform/mac/WebCoreNSURLExtras.mm:861
&gt; &gt; +    if (needsHostNameDecoding)
&gt; 
&gt; needsHostNameDecoding is true any time &quot;xn--&quot; is seen anywhere in the URL string, not just in host name. It may be appropriate to rename it to something like hostNameMayBeIDNEncoded in this patch.

Yes. I believe it’s just a performance optimization, so I think it should be named mayNeedHostNameDecoding.

&gt; &gt; Tools/TestWebKitAPI/Tests/mac/URLExtras.mm:75
&gt; &gt; +    EXPECT_STREQ(&quot;http://site.com\xEF\xBC\x8Fothersite.org&quot;, originalDataAsString(literalURL(&quot;http://site.com\xEF\xBC\x8Fothersite.org&quot;)));
&gt; 
&gt; It&apos;s not clear to me why this is correct behavior.

The job of the originalData family of functions is primarily to pass URL bytes through unchanged. That’s what is supposed to happen here and what does happen. I’m not saying we might never considering changing this behavior, but here neither the input nor the output function is the one that’s supposed to process URLs; these functions are supposed to just pass them through unmodified.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000355</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-13 18:04:47 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; &gt; +    EXPECT_STREQ(&quot;http://site.com\xEF\xBC\x8Fothersite.org&quot;, originalDataAsString(literalURL(&quot;http://site.com\xEF\xBC\x8Fothersite.org&quot;)));
&gt; 
&gt; It&apos;s not clear to me why this is correct behavior.

Oh, I see, you were saying that you’d expect this URL to get encoded with xn--. I think that’s something we might do some day, but at the moment the functions do not do that. The actual URLs in the webpages have to have the xn-- in them.

We have separate bug reports saying this is a missing feature, and to fix that we might end up changing these functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000363</commentid>
    <comment_count>5</comment_count>
      <attachid>229255</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-13 18:56:31 -0700</bug_when>
    <thetext>Created attachment 229255
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000387</commentid>
    <comment_count>6</comment_count>
      <attachid>229255</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-04-13 22:22:29 -0700</bug_when>
    <thetext>Comment on attachment 229255
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=229255&amp;action=review

&gt; Oh, I see, you were saying that you’d expect this URL to get encoded with xn--.

Possibly, or perhaps we should reject such URLs in URLWithData outright. I just don&apos;t expect non-ASCII bytes to come out of any URL accessors ever, except for &quot;user visible string&quot; one.

&gt; Source/WebCore/platform/mac/WebCoreNSURLExtras.mm:918
&gt; -    result = mapHostNames(result, !needsHostNameDecoding);
&gt; +    if (mayNeedHostNameDecoding)
&gt; +        result = mapHostNames(result, NO);

I&apos;m still not sure if I understand why we needed !needsHostNameDecoding six years ago, and don&apos;t need it any more. Will go with the theory that it was a mistake back then - the boolean argument may be misread as &quot;encode or do not encode&quot; instead of &quot;encode or decode&quot; that it is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000393</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-13 23:12:15 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; I just don&apos;t expect non-ASCII bytes to come out of any URL accessors ever, except for &quot;user visible string&quot; one.

For parts of the URL other than the hostname, preserving non-ASCII bytes can be critical. There are some servers that need to get back the exact same bytes they gave us to fetch a webpage, even though if we interpret those bytes as UTF-8 they are invalid.

Keep in mind that we are just writing functions here, not designing the NSURL class. We can’t invent an invariant for the class that doesn’t exist. The class can, and does, store arbitrary bytes and return those bytes. Sometimes we use NSURL to carry those bytes from one place to another without interpreting or mangling them.

I think there is room for further improvement here, but this is not something I would change lightly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000414</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-13 23:58:55 -0700</bug_when>
    <thetext>Committed r167211: &lt;http://trac.webkit.org/changeset/167211&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229224</attachid>
            <date>2014-04-13 01:00:20 -0700</date>
            <delta_ts>2014-04-13 18:56:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-131587-20140413010019.patch</filename>
            <type>text/plain</type>
            <size>16050</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY3MTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2ZjYzFiODk5YzI1ZTI3
NzQyMmQzZjZjMzlmYjBlZmQzMmZiODc1MC4uZTgxNzI0MGQzYWU3ODMxNzhmYzc5YTY4YjMyOGU0
YmUyMTg0ZDgyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE0LTA0LTEzICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICB1c2VyVmlzaWJsZVN0cmluZyBz
aG91bGQgbm90IHRyeSB0byAiZW5jb2RlIiBob3N0IG5hbWVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzE1ODcKKyAgICAgICAgcmRhcjovL3Byb2Js
ZW0vMTQ2ODY4NDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYkNvcmUuZXhwLmluOiBVcGRhdGVkIGZvciBXZWJDb3JlTlNVUkxFeHRyYXMgYXJn
dW1lbnQgdHlwZSBjaGFuZ2VzLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VS
TEV4dHJhcy5oOiBSZW1vdmVkIHVubmVlZGVkIGNvZGUgdG8gbWFrZSB0aGlzCisgICAgICAgIE9i
amVjdGl2ZS1DKysgaGVhZGVyIGNvbXBpbGUgaW4gcGxhaW4gQysrIGZpbGVzLCB3aGljaCB3ZSBu
ZXZlciBuZWVkIHRvIGRvLgorICAgICAgICBBZGRlZCBtaXNzaW5nIGFyZ3VtZW50IG5hbWUsIGJh
c2VVUkwsIGFuZCBjaGFuZ2VkIG15c3RlcmlvdXMgQ0ZJbmRleCBhcmd1bWVudHMKKyAgICAgICAg
dG8gdGhlIGNvcnJlY3QgdHlwZSwgQ0ZVUkxDb21wb25lbnRUeXBlLgorCisgICAgICAgICogcGxh
dGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlVSTEJ5
VHJ1bmNhdGluZ09uZUNoYXJhY3RlckJlZm9yZUNvbXBvbmVudCk6IFVwZGF0ZWQgYXJndW1lbnQg
dHlwZS4KKyAgICAgICAgKFdlYkNvcmU6OmRhdGFGb3JVUkxDb21wb25lbnRUeXBlKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjp1c2VyVmlzaWJsZVN0cmluZyk6IE9ubHkgY2FsbCBtYXBIb3N0
TmFtZXMgaXMgaG9zdCBuYW1lIGRlY29kaW5nIGlzCisgICAgICAgIG5lZWRlZDsgbm8gZW5jb2Rp
bmcgaGVyZS4KKwogMjAxNC0wNC0xMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgU29tZSBzbWFsbCBsb2FkZXIgcmVmaW5lbWVudHMgYW5kIHJlZmFjdG9yaW5nCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCmluZGV4IGYzODk0Y2U5Mjk1NDY1OWNiNWYwOTE2OGIxNGM5NWQzOGVj
NDRmMDEuLjM5NGYzZTQ4MDI0MTIzZWQ0MjFlZmI2YzVlODBkOWM1MjQ4YzYzNDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCkBAIC05NDUsNyArOTQ1LDcgQEAgX19aTjdXZWJDb3JlMjNBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZTVlbXB0eUV2CiBfX1pON1dlYkNvcmUyM0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlMjNzZXRBdXRoZW50aWNhdGlvbkNsaWVudEVQTlNfMjBBdXRoZW50aWNhdGlvbkNsaWVudEUK
IF9fWk43V2ViQ29yZTIzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDMUVSS05TXzE1UHJvdGVjdGlv
blNwYWNlRVJLTlNfMTBDcmVkZW50aWFsRWpSS05TXzE2UmVzb3VyY2VSZXNwb25zZUVSS05TXzEz
UmVzb3VyY2VFcnJvckUKIF9fWk43V2ViQ29yZTIzU3luY2hyb25vdXNMb2FkZXJDbGllbnQyNHBs
YXRmb3JtQmFkUmVzcG9uc2VFcnJvckV2Ci1fX1pON1dlYkNvcmUyM2RhdGFGb3JVUkxDb21wb25l
bnRUeXBlRVA1TlNVUkxsCitfX1pON1dlYkNvcmUyM2RhdGFGb3JVUkxDb21wb25lbnRUeXBlRVA1
TlNVUkwxOENGVVJMQ29tcG9uZW50VHlwZQogX19aTjdXZWJDb3JlMjNkZWNvZGVIb3N0TmFtZVdp
dGhSYW5nZUVQOE5TU3RyaW5nOF9OU1JhbmdlCiBfX1pON1dlYkNvcmUyM2VuY29kZUhvc3ROYW1l
V2l0aFJhbmdlRVA4TlNTdHJpbmc4X05TUmFuZ2UKIF9fWk43V2ViQ29yZTIzZ2V0RmlsZU1vZGlm
aWNhdGlvblRpbWVFUktOM1dURjZTdHJpbmdFUmwKQEAgLTEwMTcsNyArMTAxNyw3IEBAIF9fWk43
V2ViQ29yZTNVUkxDMUVSS1MwX1JLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlM21hY0VSS05T
XzEwQ3JlZGVudGlhbEUKIF9fWk43V2ViQ29yZTNtYWNFUktOU18yM0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlRQogX19aTjdXZWJDb3JlNDByZXN0cmljdE1pbmltdW1TY2FsZUZhY3RvclRvVmlld3Bv
cnRTaXplRVJOU18xOFZpZXdwb3J0QXR0cmlidXRlc0VOU183SW50U2l6ZUVmCi1fX1pON1dlYkNv
cmU0MlVSTEJ5VHJ1bmNhdGluZ09uZUNoYXJhY3RlckJlZm9yZUNvbXBvbmVudEVQNU5TVVJMbAor
X19aTjdXZWJDb3JlNDJVUkxCeVRydW5jYXRpbmdPbmVDaGFyYWN0ZXJCZWZvcmVDb21wb25lbnRF
UDVOU1VSTDE4Q0ZVUkxDb21wb25lbnRUeXBlCiBfX1pON1dlYkNvcmU0N2F0dHJpYnV0ZWRTdHJp
bmdCeVN0cmlwcGluZ0F0dGFjaG1lbnRDaGFyYWN0ZXJzRVAxOE5TQXR0cmlidXRlZFN0cmluZwog
X19aTjdXZWJDb3JlNEZvbnQxMXNldENvZGVQYXRoRU5TMF84Q29kZVBhdGhFCiBfX1pON1dlYkNv
cmU0Rm9udDE4c2hvdWxkVXNlU21vb3RoaW5nRXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMuaAppbmRleCBmMDI3NWZiZDdmNGVlNDUzYWE3N2Y1
NjI0NGU5Y2Q1ZjBjYjM2MDY4Li43YmMzZjAwOTMwZjM2Yjc4ZTI1NjUzOTQ3ZWQwZDE1YmYyNjUx
YWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJM
RXh0cmFzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4
dHJhcy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNywg
MjAxMiBBcHBsZSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwNSwgMjAwNywgMjAxMiwgMjAxNCBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwyMSArMjYsMTQgQEAKICAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotI2luY2x1ZGUgPG9iamMvb2JqYy5oPgotCi0jaWZkZWYgX19PQkpDX18K
IEBjbGFzcyBOU1N0cmluZzsKIEBjbGFzcyBOU1VSTDsKLSNlbHNlCi1PQkpDX0NMQVNTKE5TU3Ry
aW5nKTsKLU9CSkNfQ0xBU1MoTlNVUkwpOwotI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogTlNTdHJpbmcgKnVzZXJWaXNpYmxlU3RyaW5nKE5TVVJMICopOwogTlNVUkwgKlVSTEJ5Q2Fu
b25pY2FsaXppbmdVUkwoTlNVUkwgKik7Ci1OU1VSTCAqVVJMV2l0aFVzZXJUeXBlZFN0cmluZyhO
U1N0cmluZyAqLCBOU1VSTCAqKTsKK05TVVJMICpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKE5TU3Ry
aW5nICosIE5TVVJMICpiYXNlVVJMKTsKIE5TVVJMICpVUkxCeVJlbW92aW5nVXNlckluZm8oTlNV
UkwgKik7CiBCT09MIGhvc3ROYW1lTmVlZHNEZWNvZGluZ1dpdGhSYW5nZShOU1N0cmluZyAqLCBO
U1JhbmdlKTsKIEJPT0wgaG9zdE5hbWVOZWVkc0VuY29kaW5nV2l0aFJhbmdlKE5TU3RyaW5nICos
IE5TUmFuZ2UpOwpAQCAtNDgsMTAgKzQxLDEwIEBAIE5TU3RyaW5nICpkZWNvZGVIb3N0TmFtZVdp
dGhSYW5nZShOU1N0cmluZyAqLCBOU1JhbmdlKTsKIE5TU3RyaW5nICplbmNvZGVIb3N0TmFtZVdp
dGhSYW5nZShOU1N0cmluZyAqLCBOU1JhbmdlKTsKIE5TU3RyaW5nICpkZWNvZGVIb3N0TmFtZShO
U1N0cmluZyAqKTsKIE5TU3RyaW5nICplbmNvZGVIb3N0TmFtZShOU1N0cmluZyAqKTsKLU5TVVJM
ICpVUkxCeVRydW5jYXRpbmdPbmVDaGFyYWN0ZXJCZWZvcmVDb21wb25lbnQoTlNVUkwgKiwgQ0ZJ
bmRleCk7CitOU1VSTCAqVVJMQnlUcnVuY2F0aW5nT25lQ2hhcmFjdGVyQmVmb3JlQ29tcG9uZW50
KE5TVVJMICosIENGVVJMQ29tcG9uZW50VHlwZSk7CiBOU1VSTCAqVVJMV2l0aERhdGEoTlNEYXRh
ICosIE5TVVJMICpiYXNlVVJMKTsKIE5TRGF0YSAqb3JpZ2luYWxVUkxEYXRhKE5TVVJMICopOwot
TlNEYXRhICpkYXRhRm9yVVJMQ29tcG9uZW50VHlwZShOU1VSTCAqLCBDRkluZGV4KTsKK05TRGF0
YSAqZGF0YUZvclVSTENvbXBvbmVudFR5cGUoTlNVUkwgKiwgQ0ZVUkxDb21wb25lbnRUeXBlKTsK
IAogTlNSYW5nZSByYW5nZU9mVVJMU2NoZW1lKE5TU3RyaW5nICopOwogQk9PTCBpc1VzZXJWaXNp
YmxlVVJMKE5TU3RyaW5nICopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9X
ZWJDb3JlTlNVUkxFeHRyYXMubW0KaW5kZXggYmE2N2Q0ODdhNDBhNWNiZmFiNGY0ZGYxZDk3NWVl
MzdiNGM0M2YwZC4uZGVjNWJmOGQ4MmU3MzEwOWE1OTkzZTVlNjNkNTQzYTRmYjBjNmVmNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1t
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDcsIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC01MTYsMTIgKzUxNiwxMiBAQCBzdGF0aWMgTlNTdHJpbmcgKnN0cmluZ0J5
VHJpbW1pbmdXaGl0ZXNwYWNlKE5TU3RyaW5nICpzdHJpbmcpCiAgICAgcmV0dXJuIHRyaW1tZWQ7
CiB9CiAKLU5TVVJMICpVUkxCeVRydW5jYXRpbmdPbmVDaGFyYWN0ZXJCZWZvcmVDb21wb25lbnQo
TlNVUkwgKlVSTCwgQ0ZJbmRleCBjb21wb25lbnQpCitOU1VSTCAqVVJMQnlUcnVuY2F0aW5nT25l
Q2hhcmFjdGVyQmVmb3JlQ29tcG9uZW50KE5TVVJMICpVUkwsIENGVVJMQ29tcG9uZW50VHlwZSBj
b21wb25lbnQpCiB7CiAgICAgaWYgKCFVUkwpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCi0g
ICAgQ0ZSYW5nZSBmcmFnUmcgPSBDRlVSTEdldEJ5dGVSYW5nZUZvckNvbXBvbmVudCgoQ0ZVUkxS
ZWYpVVJMLCBzdGF0aWNfY2FzdDxDRlVSTENvbXBvbmVudFR5cGU+KGNvbXBvbmVudCksIE5VTEwp
OworICAgIENGUmFuZ2UgZnJhZ1JnID0gQ0ZVUkxHZXRCeXRlUmFuZ2VGb3JDb21wb25lbnQoKENG
VVJMUmVmKVVSTCwgY29tcG9uZW50LCBOVUxMKTsKICAgICBpZiAoZnJhZ1JnLmxvY2F0aW9uID09
IGtDRk5vdEZvdW5kKQogICAgICAgICByZXR1cm4gVVJMOwogICAgIApAQCAtNTczLDcgKzU3Myw3
IEBAIE5TVVJMICpVUkxXaXRoRGF0YShOU0RhdGEgKmRhdGEsIE5TVVJMICpiYXNlVVJMKQogICAg
ICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgICAgIHJlc3VsdCA9IENGQnJpZGdpbmdSZWxlYXNl
KENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMoTlVMTCwgYnl0ZXMsIGxlbmd0aCwga0NG
U3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIChDRlVSTFJlZiliYXNlVVJMLCBZRVMpKTsKICAgICB9
IGVsc2UKLSAgICAgICAgICAgIHJlc3VsdCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiIl07Cisg
ICAgICAgIHJlc3VsdCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiIl07CiAgICAgICAgICAgICAg
ICAgCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTYyNSw3ICs2MjUsNyBAQCBzdGF0aWMgQk9P
TCBoYXNRdWVzdGlvbk1hcmtPbmx5UXVlcnlTdHJpbmcoTlNVUkwgKlVSTCkKIAogI2RlZmluZSBj
b21wbGV0ZVVSTCAoQ0ZVUkxDb21wb25lbnRUeXBlKS0xCiAKLU5TRGF0YSAqZGF0YUZvclVSTENv
bXBvbmVudFR5cGUoTlNVUkwgKlVSTCwgQ0ZJbmRleCBjb21wb25lbnRUeXBlKQorTlNEYXRhICpk
YXRhRm9yVVJMQ29tcG9uZW50VHlwZShOU1VSTCAqVVJMLCBDRlVSTENvbXBvbmVudFR5cGUgY29t
cG9uZW50VHlwZSkKIHsKICAgICBzdGF0aWMgaW50IFVSTENvbXBvbmVudFR5cGVCdWZmZXJMZW5n
dGggPSAyMDQ4OwogICAgIApAQCAtNjQxLDcgKzY0MSw3IEBAIE5TRGF0YSAqZGF0YUZvclVSTENv
bXBvbmVudFR5cGUoTlNVUkwgKlVSTCwgQ0ZJbmRleCBjb21wb25lbnRUeXBlKQogICAgIAogICAg
IENGUmFuZ2UgcmFuZ2U7CiAgICAgaWYgKGNvbXBvbmVudFR5cGUgIT0gY29tcGxldGVVUkwpIHsK
LSAgICAgICAgcmFuZ2UgPSBDRlVSTEdldEJ5dGVSYW5nZUZvckNvbXBvbmVudCgoQ0ZVUkxSZWYp
VVJMLCBzdGF0aWNfY2FzdDxDRlVSTENvbXBvbmVudFR5cGU+KGNvbXBvbmVudFR5cGUpLCBOVUxM
KTsKKyAgICAgICAgcmFuZ2UgPSBDRlVSTEdldEJ5dGVSYW5nZUZvckNvbXBvbmVudCgoQ0ZVUkxS
ZWYpVVJMLCBjb21wb25lbnRUeXBlLCBOVUxMKTsKICAgICAgICAgaWYgKHJhbmdlLmxvY2F0aW9u
ID09IGtDRk5vdEZvdW5kKQogICAgICAgICAgICAgcmV0dXJuIG5pbDsKICAgICB9IGVsc2UgewpA
QCAtODU4LDcgKzg1OCw4IEBAIE5TU3RyaW5nICp1c2VyVmlzaWJsZVN0cmluZyhOU1VSTCAqVVJM
KQogICAgIAogICAgIGZyZWUoYWZ0ZXIpOwogICAgIAotICAgIHJlc3VsdCA9IG1hcEhvc3ROYW1l
cyhyZXN1bHQsICFuZWVkc0hvc3ROYW1lRGVjb2RpbmcpOworICAgIGlmIChuZWVkc0hvc3ROYW1l
RGVjb2RpbmcpCisgICAgICAgIHJlc3VsdCA9IG1hcEhvc3ROYW1lcyhyZXN1bHQsIE5PKTsKICAg
ICByZXN1bHQgPSBbcmVzdWx0IHByZWNvbXBvc2VkU3RyaW5nV2l0aENhbm9uaWNhbE1hcHBpbmdd
OwogICAgIHJldHVybiBDRkJyaWRnaW5nUmVsZWFzZShjcmVhdGVTdHJpbmdXaXRoRXNjYXBlZFVu
c2FmZUNoYXJhY3RlcnMoKENGU3RyaW5nUmVmKXJlc3VsdCkpOwogfQpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGYxNzMzZDVjM2FjZDZjYWE4NGY1
YzRiNzk3NTkwNGQwNTU4MDZhZjMuLmFlZjQ2ZTczZjI3MjBmNjI5ZjZiZDgwODY0OTJmN2MwNDVj
MDM5OWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNiBAQAorMjAxNC0wNC0xMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5j
b20+CisKKyAgICAgICAgdXNlclZpc2libGVTdHJpbmcgc2hvdWxkIG5vdCB0cnkgdG8gImVuY29k
ZSIgaG9zdCBuYW1lcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTMxNTg3CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzE0Njg2ODQ5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkZWQgVVJMRXh0cmFzLm1t
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvVVJMRXh0cmFzLm1tOiBBZGRl
ZC4gQSBmZXcgdGVzdHMgZm9yIFdlYkNvcmVOU1VSTEV4dHJhcy4KKyAgICAgICAgQ292ZXJhZ2Ug
aXMgdGlueSBhdCB0aGlzIHBvaW50OyB3ZSBjb3VsZCBhZGQgYSBsb3QgbW9yZSBjYXNlcyEKKwog
MjAxNC0wNC0xMCAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW0NNYWtlXSBBZGQgbWlzc2luZyBXVEYgdW5pdCB0ZXN0cwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBkMzBiZDNiNzkyNjM5NWMxM2RmZjBjOTU3ZTQxNzQzMjBlYTYwZmY4Li5jNzI3Y2Nh
YzRhMGJkNGJjY2Q1M2ZkMTQ1MGU4YmNmYTZhZTg4M2UyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTI5LDYgKzEyOSw3IEBACiAJCTkzQTQyN0E5MTgwRDlCMDcwMENEMjRENyAvKiBSZWZQ
dHIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNB
NDI3QTgxODBEOUIwNzAwQ0QyNEQ3IC8qIFJlZlB0ci5jcHAgKi87IH07CiAJCTkzQTQyN0FCMTgw
REEyNjQwMENEMjRENyAvKiBSZWYuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTNBNDI3QUExODBEQTI2NDAwQ0QyNEQ3IC8qIFJlZi5jcHAgKi87IH07
CiAJCTkzQTcyMEU2MThGMUEwRTgwMEE4NDhFMSAvKiBDYWxjdWxhdGlvblZhbHVlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQTcyMEU1MThGMUEw
RTgwMEE4NDhFMSAvKiBDYWxjdWxhdGlvblZhbHVlLmNwcCAqLzsgfTsKKwkJOTNBN0VCM0QxOEZB
NjNBNDAwOUU3NjcwIC8qIFVSTEV4dHJhcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzQTdFQjNDMThGQTYzQTQwMDlFNzY3MCAvKiBVUkxFeHRyYXMu
bW0gKi87IH07CiAJCTkzQUJBODA5MTZEREFCOTEwMDJEQjJGQSAvKiBTdHJpbmdIYXNoZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNBQkE4MDgx
NkREQUI5MTAwMkRCMkZBIC8qIFN0cmluZ0hhc2hlci5jcHAgKi87IH07CiAJCTkzQUY0RUNFMTUw
NkYwNjQwMDdGRDU3RSAvKiBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JJbWFnZXNf
QnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzQUY0RUNEMTUwNkYwNjQwMDdGRDU3RSAvKiBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXRGb3JJbWFnZXNfQnVuZGxlLmNwcCAqLzsgfTsKIAkJOTNBRjRFRDAxNTA2RjEyMzAwN0ZENTdF
IC8qIGxvdHMtb2YtaW1hZ2VzLmh0bWwgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzQUY0RUNGMTUwNkYxMjMwMDdGRDU3RSAvKiBsb3RzLW9mLWltYWdl
cy5odG1sICovOyB9OwpAQCAtNDYwLDYgKzQ2MSw3IEBACiAJCTkzQTQyN0FDMTgwREE2MEYwMENE
MjRENyAvKiBNb3ZlT25seS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb3ZlT25seS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5M0E0MjdBRDE4MERBNjBGMDBDRDI0RDcgLyogUmVmTG9nZ2Vy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlZkxvZ2dlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5M0E3MjBFNTE4RjFBMEU4MDBBODQ4RTEgLyogQ2FsY3VsYXRpb25WYWx1ZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWxjdWxhdGlvblZhbHVlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNBN0VCM0MxOEZBNjNBNDAwOUU3NjcwIC8q
IFVSTEV4dHJhcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVS
TEV4dHJhcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNBQkE4MDgxNkREQUI5
MTAwMkRCMkZBIC8qIFN0cmluZ0hhc2hlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTdHJpbmdIYXNoZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5M0FGNEVDQTE1MDZGMDM1MDA3RkQ1N0UgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5
b3V0Rm9ySW1hZ2VzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5l
d0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckltYWdlcy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTkzQUY0RUNEMTUwNkYwNjQwMDdGRDU3RSAvKiBOZXdGaXJzdFZpc3Vh
bGx5Tm9uRW1wdHlMYXlvdXRGb3JJbWFnZXNfQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckltYWdl
c19CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTg3LDYgKzk4OSw3
IEBACiAJCQkJOTM5QkZFMzkxOEU1NTQ4OTAwODgzMjc1IC8qIFN0cmluZ1RydW5jYXRvci5tbSAq
LywKIAkJCQkzN0E2ODk1RDE0OEE5QjUwMDA1MTAwRkEgLyogU3VicmVzb3VyY2VFcnJvckNyYXNo
Lm1tICovLAogCQkJCUU0OTAyOTY3MTRFMkUzQTQwMDJCRUREMSAvKiBUeXBpbmdTdHlsZUNyYXNo
Lm1tICovLAorCQkJCTkzQTdFQjNDMThGQTYzQTQwMDlFNzY3MCAvKiBVUkxFeHRyYXMubW0gKi8s
CiAJCQkJNTFGQkJCNEMxNTEzRDRFOTAwODIyNzM4IC8qIFdlYlZpZXdDYW5QYXN0ZVVSTC5tbSAq
LywKIAkJCQlDMkVCMkREMTE2Q0FDN0FDMDA5QjUyRUUgLyogV2ViVmlld0RpZENyZWF0ZUphdmFT
Y3JpcHRDb250ZXh0Lm1tICovLAogCQkJCTM3RTM4QzMzMTY5QjdEMDEwMDg0QzI4QyAvKiBXZWJW
aWV3RGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5Lm1tICovLApAQCAtMTMwNSw2ICsxMzA4LDcg
QEAKIAkJCQlGNkI3QkU5NDE3NDY5MjA5MDA4QTM0NDUgLyogRGlkQXNzb2NpYXRlRm9ybUNvbnRy
b2xzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDM0M0QzdGMTQ1ODdBQTYwMDI1RkI2MiAvKiBX
S0Jyb3dzaW5nQ29udGV4dEdyb3VwVGVzdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDM0M0Qzcy
MTQ1NzVCNkEwMDI1RkI2MiAvKiBXS0Jyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZVRlc3QubW0g
aW4gU291cmNlcyAqLywKKwkJCQk5M0E3RUIzRDE4RkE2M0E0MDA5RTc2NzAgLyogVVJMRXh0cmFz
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFFOTMwMTcxNTZCMTNFMTAwNEM5OURGIC8qIFdLUGFn
ZUdldFNjYWxlRmFjdG9yTm90WmVyby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzdCNjFBQTEy
OUEwMzg3MDBEMTc0QTQgLyogV0tQcmVmZXJlbmNlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
QzkwOTk1RTEyNTY3QkMxMDAwODM3NTYgLyogV0tTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9VUkxFeHRyYXMubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9VUkxFeHRyYXMubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmY0
NTE3NDVkMWNjMGRhZmVhMjJkMDJmZjRkYzA1NWE3YTFiMWYwOAotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1VSTEV4dHJhcy5tbQpAQCAtMCwwICsxLDg4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpbXBvcnQgPFdlYkNvcmUv
V2ViQ29yZU5TVVJMRXh0cmFzLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3Rh
dGljIE5TRGF0YSAqbGl0ZXJhbEFzRGF0YShjb25zdCBjaGFyKiBsaXRlcmFsKQoreworICAgIHJl
dHVybiBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6bGl0ZXJhbCBsZW5ndGg6c3RybGVuKGxpdGVyYWwp
XTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIqIGRhdGFBc1N0cmluZyhOU0RhdGEgKmRhdGEpCit7
CisgICAgc3RhdGljIGNoYXIgYnVmZmVyWzEwMDBdOworICAgIGlmIChbZGF0YSBsZW5ndGhdID4g
c2l6ZW9mKGJ1ZmZlcikgLSAxKQorICAgICAgICByZXR1cm4gIkVSUk9SIjsKKyAgICBpZiAobWVt
Y2hyKFtkYXRhIGJ5dGVzXSwgMCwgW2RhdGEgbGVuZ3RoXSkpCisgICAgICAgIHJldHVybiAiRVJS
T1IiOworICAgIG1lbWNweShidWZmZXIsIFtkYXRhIGJ5dGVzXSwgW2RhdGEgbGVuZ3RoXSk7Cisg
ICAgYnVmZmVyW1tkYXRhIGxlbmd0aF1dID0gJ1wwJzsKKyAgICByZXR1cm4gYnVmZmVyOworfQor
CitzdGF0aWMgY29uc3QgY2hhciogb3JpZ2luYWxEYXRhQXNTdHJpbmcoTlNVUkwgKlVSTCkKK3sK
KyAgICByZXR1cm4gZGF0YUFzU3RyaW5nKFdlYkNvcmU6Om9yaWdpbmFsVVJMRGF0YShVUkwpKTsK
K30KKworc3RhdGljIGNvbnN0IGNoYXIqIHVzZXJWaXNpYmxlU3RyaW5nKE5TVVJMICpVUkwpCit7
CisgICAgcmV0dXJuIFtXZWJDb3JlOjp1c2VyVmlzaWJsZVN0cmluZyhVUkwpIFVURjhTdHJpbmdd
OworfQorCitzdGF0aWMgTlNVUkwgKmxpdGVyYWxVUkwoY29uc3QgY2hhciogbGl0ZXJhbCkKK3sK
KyAgICByZXR1cm4gV2ViQ29yZTo6VVJMV2l0aERhdGEobGl0ZXJhbEFzRGF0YShsaXRlcmFsKSwg
bmlsKTsKK30KKworVEVTVChXZWJDb3JlLCBVUkxFeHRyYXMpCit7CisgICAgRVhQRUNUX1NUUkVR
KCJodHRwOi8vc2l0ZS5jb20iLCBvcmlnaW5hbERhdGFBc1N0cmluZyhsaXRlcmFsVVJMKCJodHRw
Oi8vc2l0ZS5jb20iKSkpOworICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovLyU3N2Vic2l0ZS5jb20i
LCBvcmlnaW5hbERhdGFBc1N0cmluZyhsaXRlcmFsVVJMKCJodHRwOi8vJTc3ZWJzaXRlLmNvbSIp
KSk7CisKKyAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbSIsIHVzZXJWaXNpYmxlU3Ry
aW5nKGxpdGVyYWxVUkwoImh0dHA6Ly9zaXRlLmNvbSIpKSk7CisgICAgRVhQRUNUX1NUUkVRKCJo
dHRwOi8vJTc3ZWJzaXRlLmNvbSIsIHVzZXJWaXNpYmxlU3RyaW5nKGxpdGVyYWxVUkwoImh0dHA6
Ly8lNzdlYnNpdGUuY29tIikpKTsKK30KKworVEVTVChXZWJDb3JlLCBVUkxFeHRyYXNfU29saWR1
cykKK3sKKyAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbVx4RUZceEJDXHg4Rm90aGVy
c2l0ZS5vcmciLCBvcmlnaW5hbERhdGFBc1N0cmluZyhsaXRlcmFsVVJMKCJodHRwOi8vc2l0ZS5j
b21ceEVGXHhCQ1x4OEZvdGhlcnNpdGUub3JnIikpKTsKKyAgICBFWFBFQ1RfU1RSRVEoImh0dHA6
Ly9zaXRlLmNvbSVFRiVCQyU4Rm90aGVyc2l0ZS5vcmciLCBvcmlnaW5hbERhdGFBc1N0cmluZyhs
aXRlcmFsVVJMKCJodHRwOi8vc2l0ZS5jb20lRUYlQkMlOEZvdGhlcnNpdGUub3JnIikpKTsKKwor
ICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3NpdGUuY29tJUVGJUJDJThGb3RoZXJzaXRlLm9yZyIs
IHVzZXJWaXNpYmxlU3RyaW5nKGxpdGVyYWxVUkwoImh0dHA6Ly9zaXRlLmNvbVx4RUZceEJDXHg4
Rm90aGVyc2l0ZS5vcmciKSkpOworICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3NpdGUuY29tJUVG
JUJDJThGb3RoZXJzaXRlLm9yZyIsIHVzZXJWaXNpYmxlU3RyaW5nKGxpdGVyYWxVUkwoImh0dHA6
Ly9zaXRlLmNvbSVFRiVCQyU4Rm90aGVyc2l0ZS5vcmciKSkpOworCisgICAgRVhQRUNUX1NUUkVR
KCJodHRwOi8vc2l0ZS5jb20vb3RoZXJzaXRlLm9yZyIsIG9yaWdpbmFsRGF0YUFzU3RyaW5nKFdl
YkNvcmU6OlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoQCJodHRwOi8vc2l0ZS5jb21ceEVGXHhCQ1x4
OEZvdGhlcnNpdGUub3JnIiwgbmlsKSkpOworCisgICAgRVhQRUNUX1NUUkVRKCJzaXRlLmNvbS9v
dGhlcnNpdGUub3JnIiwgW1dlYkNvcmU6OmVuY29kZUhvc3ROYW1lKEAic2l0ZS5jb21ceEVGXHhC
Q1x4OEZvdGhlcnNpdGUub3JnIikgVVRGOFN0cmluZ10pOworCisgICAgRVhQRUNUX1NUUkVRKCJz
aXRlLmNvbVx4RUZceEJDXHg4Rm90aGVyc2l0ZS5vcmciLCBbV2ViQ29yZTo6ZGVjb2RlSG9zdE5h
bWUoQCJzaXRlLmNvbVx4RUZceEJDXHg4Rm90aGVyc2l0ZS5vcmciKSBVVEY4U3RyaW5nXSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229255</attachid>
            <date>2014-04-13 18:56:31 -0700</date>
            <delta_ts>2019-01-15 17:09:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-131587-20140413185611.patch</filename>
            <type>text/plain</type>
            <size>27747</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY3MjA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjc4MjY3Nzc1NDBjZDk4
MGY3NTNlYzE2NjNlNGI0ZjBkYWNiNjU2Yi4uMjI5MzEzNWU2ZjI0NmEzYjA4MTM1ODJiZjlmYTZm
NTBmOGIyYWVkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE0LTA0LTEzICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICB1c2VyVmlzaWJsZVN0cmluZyBz
aG91bGQgbm90IHRyeSB0byAiZW5jb2RlIiBob3N0IG5hbWVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzE1ODcKKyAgICAgICAgcmRhcjovL3Byb2Js
ZW0vMTQ2ODY4NDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYkNvcmUuZXhwLmluOiBVcGRhdGVkIGZvciBXZWJDb3JlTlNVUkxFeHRyYXMgYXJn
dW1lbnQgdHlwZSBjaGFuZ2VzLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VS
TEV4dHJhcy5oOiBSZW1vdmVkIHVubmVlZGVkIGNvZGUgdG8gbWFrZSB0aGlzCisgICAgICAgIE9i
amVjdGl2ZS1DKysgaGVhZGVyIGNvbXBpbGUgaW4gcGxhaW4gQysrIGZpbGVzLCB3aGljaCB3ZSBu
ZXZlciBuZWVkIHRvIGRvLgorICAgICAgICBBZGRlZCBtaXNzaW5nIGFyZ3VtZW50IG5hbWUsIGJh
c2VVUkwsIGFuZCBjaGFuZ2VkIG15c3RlcmlvdXMgQ0ZJbmRleCBhcmd1bWVudHMKKyAgICAgICAg
dG8gdGhlIGNvcnJlY3QgdHlwZSwgQ0ZVUkxDb21wb25lbnRUeXBlLgorCisgICAgICAgICogcGxh
dGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmlzTG9v
a2FsaWtlQ2hhcmFjdGVyKTogUmVtb3ZlZCB0aGUgaW5saW5lIGtleXdvcmQgZnJvbSB0aGlzLCBh
bmQgYWRkZWQKKyAgICAgICAgbW9yZSBsb29rYWxpa2UgY2hhcmFjdGVycyBmcm9tIHRoZSBNb3pp
bGxhIGxpc3QgcmVmZXJlbmNlZCBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6VVJMQnlUcnVuY2F0
aW5nT25lQ2hhcmFjdGVyQmVmb3JlQ29tcG9uZW50KTogVXBkYXRlZCBhcmd1bWVudCB0eXBlLgor
ICAgICAgICAoV2ViQ29yZTo6ZGF0YUZvclVSTENvbXBvbmVudFR5cGUpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OnVzZXJWaXNpYmxlU3RyaW5nKTogT25seSBjYWxsIG1hcEhvc3ROYW1lcyBp
ZiBob3N0IG5hbWUgZGVjb2RpbmcgaXMKKyAgICAgICAgbmVlZGVkOyBubyBlbmNvZGluZyBoZXJl
LgorCiAyMDE0LTA0LTEwICBQcmF0aWsgU29sYW5raSAgPHBzb2xhbmtpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBNb3ZlIGVhcmx5IHJldHVybiBvdXQgb2YgZGlzcGF0Y2hfYXN5bmMoKSBibG9jayBz
byB3ZSBjYW4gcmV0dXJuIGZyb20gd2lsbFNlbmRSZXF1ZXN0IHF1aWNrbHkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KaW5kZXggZjM4OTRjZTkyOTU0NjU5Y2I1ZjA5MTY4YjE0Yzk1ZDM4ZWM0NGYwMS4uMzk0
ZjNlNDgwMjQxMjNlZDQyMWVmYjZjNWU4MGQ5YzUyNDhjNjM0MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4KQEAgLTk0NSw3ICs5NDUsNyBAQCBfX1pON1dlYkNvcmUyM0FwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlNWVtcHR5RXYKIF9fWk43V2ViQ29yZTIzQXV0aGVudGljYXRpb25DaGFsbGVuZ2UyM3NldEF1
dGhlbnRpY2F0aW9uQ2xpZW50RVBOU18yMEF1dGhlbnRpY2F0aW9uQ2xpZW50RQogX19aTjdXZWJD
b3JlMjNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUMxRVJLTlNfMTVQcm90ZWN0aW9uU3BhY2VFUktO
U18xMENyZWRlbnRpYWxFalJLTlNfMTZSZXNvdXJjZVJlc3BvbnNlRVJLTlNfMTNSZXNvdXJjZUVy
cm9yRQogX19aTjdXZWJDb3JlMjNTeW5jaHJvbm91c0xvYWRlckNsaWVudDI0cGxhdGZvcm1CYWRS
ZXNwb25zZUVycm9yRXYKLV9fWk43V2ViQ29yZTIzZGF0YUZvclVSTENvbXBvbmVudFR5cGVFUDVO
U1VSTGwKK19fWk43V2ViQ29yZTIzZGF0YUZvclVSTENvbXBvbmVudFR5cGVFUDVOU1VSTDE4Q0ZV
UkxDb21wb25lbnRUeXBlCiBfX1pON1dlYkNvcmUyM2RlY29kZUhvc3ROYW1lV2l0aFJhbmdlRVA4
TlNTdHJpbmc4X05TUmFuZ2UKIF9fWk43V2ViQ29yZTIzZW5jb2RlSG9zdE5hbWVXaXRoUmFuZ2VF
UDhOU1N0cmluZzhfTlNSYW5nZQogX19aTjdXZWJDb3JlMjNnZXRGaWxlTW9kaWZpY2F0aW9uVGlt
ZUVSS04zV1RGNlN0cmluZ0VSbApAQCAtMTAxNyw3ICsxMDE3LDcgQEAgX19aTjdXZWJDb3JlM1VS
TEMxRVJLUzBfUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUzbWFjRVJLTlNfMTBDcmVkZW50
aWFsRQogX19aTjdXZWJDb3JlM21hY0VSS05TXzIzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VFCiBf
X1pON1dlYkNvcmU0MHJlc3RyaWN0TWluaW11bVNjYWxlRmFjdG9yVG9WaWV3cG9ydFNpemVFUk5T
XzE4Vmlld3BvcnRBdHRyaWJ1dGVzRU5TXzdJbnRTaXplRWYKLV9fWk43V2ViQ29yZTQyVVJMQnlU
cnVuY2F0aW5nT25lQ2hhcmFjdGVyQmVmb3JlQ29tcG9uZW50RVA1TlNVUkxsCitfX1pON1dlYkNv
cmU0MlVSTEJ5VHJ1bmNhdGluZ09uZUNoYXJhY3RlckJlZm9yZUNvbXBvbmVudEVQNU5TVVJMMThD
RlVSTENvbXBvbmVudFR5cGUKIF9fWk43V2ViQ29yZTQ3YXR0cmlidXRlZFN0cmluZ0J5U3RyaXBw
aW5nQXR0YWNobWVudENoYXJhY3RlcnNFUDE4TlNBdHRyaWJ1dGVkU3RyaW5nCiBfX1pON1dlYkNv
cmU0Rm9udDExc2V0Q29kZVBhdGhFTlMwXzhDb2RlUGF0aEUKIF9fWk43V2ViQ29yZTRGb250MThz
aG91bGRVc2VTbW9vdGhpbmdFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dl
YkNvcmVOU1VSTEV4dHJhcy5oCmluZGV4IGYwMjc1ZmJkN2Y0ZWU0NTNhYTc3ZjU2MjQ0ZTljZDVm
MGNiMzYwNjguLjdiYzNmMDA5MzBmMzZiNzhlMjU2NTM5NDdlZDBkMTViZjI2NTFhZWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA3LCAyMDEyIEFwcGxl
LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA3
LCAyMDEyLCAyMDE0IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDIxICsyNiwxNCBAQAogICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi0jaW5jbHVkZSA8b2JqYy9vYmpjLmg+Ci0KLSNpZmRlZiBfX09CSkNfXwogQGNsYXNzIE5T
U3RyaW5nOwogQGNsYXNzIE5TVVJMOwotI2Vsc2UKLU9CSkNfQ0xBU1MoTlNTdHJpbmcpOwotT0JK
Q19DTEFTUyhOU1VSTCk7Ci0jZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBOU1N0cmlu
ZyAqdXNlclZpc2libGVTdHJpbmcoTlNVUkwgKik7CiBOU1VSTCAqVVJMQnlDYW5vbmljYWxpemlu
Z1VSTChOU1VSTCAqKTsKLU5TVVJMICpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKE5TU3RyaW5nICos
IE5TVVJMICopOworTlNVUkwgKlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoTlNTdHJpbmcgKiwgTlNV
UkwgKmJhc2VVUkwpOwogTlNVUkwgKlVSTEJ5UmVtb3ZpbmdVc2VySW5mbyhOU1VSTCAqKTsKIEJP
T0wgaG9zdE5hbWVOZWVkc0RlY29kaW5nV2l0aFJhbmdlKE5TU3RyaW5nICosIE5TUmFuZ2UpOwog
Qk9PTCBob3N0TmFtZU5lZWRzRW5jb2RpbmdXaXRoUmFuZ2UoTlNTdHJpbmcgKiwgTlNSYW5nZSk7
CkBAIC00OCwxMCArNDEsMTAgQEAgTlNTdHJpbmcgKmRlY29kZUhvc3ROYW1lV2l0aFJhbmdlKE5T
U3RyaW5nICosIE5TUmFuZ2UpOwogTlNTdHJpbmcgKmVuY29kZUhvc3ROYW1lV2l0aFJhbmdlKE5T
U3RyaW5nICosIE5TUmFuZ2UpOwogTlNTdHJpbmcgKmRlY29kZUhvc3ROYW1lKE5TU3RyaW5nICop
OwogTlNTdHJpbmcgKmVuY29kZUhvc3ROYW1lKE5TU3RyaW5nICopOwotTlNVUkwgKlVSTEJ5VHJ1
bmNhdGluZ09uZUNoYXJhY3RlckJlZm9yZUNvbXBvbmVudChOU1VSTCAqLCBDRkluZGV4KTsKK05T
VVJMICpVUkxCeVRydW5jYXRpbmdPbmVDaGFyYWN0ZXJCZWZvcmVDb21wb25lbnQoTlNVUkwgKiwg
Q0ZVUkxDb21wb25lbnRUeXBlKTsKIE5TVVJMICpVUkxXaXRoRGF0YShOU0RhdGEgKiwgTlNVUkwg
KmJhc2VVUkwpOwogTlNEYXRhICpvcmlnaW5hbFVSTERhdGEoTlNVUkwgKik7Ci1OU0RhdGEgKmRh
dGFGb3JVUkxDb21wb25lbnRUeXBlKE5TVVJMICosIENGSW5kZXgpOworTlNEYXRhICpkYXRhRm9y
VVJMQ29tcG9uZW50VHlwZShOU1VSTCAqLCBDRlVSTENvbXBvbmVudFR5cGUpOwogCiBOU1Jhbmdl
IHJhbmdlT2ZVUkxTY2hlbWUoTlNTdHJpbmcgKik7CiBCT09MIGlzVXNlclZpc2libGVVUkwoTlNT
dHJpbmcgKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29y
ZU5TVVJMRXh0cmFzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VS
TEV4dHJhcy5tbQppbmRleCBiYTY3ZDQ4N2E0MGE1Y2JmYWI0ZjRkZjFkOTc1ZWUzN2I0YzQzZjBk
Li43ODc4M2ZhY2FmNTMyMTBlOWI1ZGIxN2IxN2MzNzI0MWU2Njc4MGQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW0KQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNywgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTU1LDQ4ICs1NSw5NSBAQCBAZW5kCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGlj
IGlubGluZSBCT09MIGlzTG9va2FsaWtlQ2hhcmFjdGVyKGludCBjaGFyQ29kZSkKK3N0YXRpYyBC
T09MIGlzTG9va2FsaWtlQ2hhcmFjdGVyKFVDaGFyMzIgY2hhckNvZGUpCiB7CiAgICAgLy8gVGhp
cyBmdW5jdGlvbiB0cmVhdHMgdGhlIGZvbGxvd2luZyBhcyB1bnNhZmUsIGxvb2thbGlrZSBjaGFy
YWN0ZXJzOgotICAgIC8vIGFueSBub24tcHJpbnRhYmxlIGNoYXJhY3RlciwgYW55IGNoYXJhY3Rl
ciBjb25zaWRlcmVkIGFzIHdoaXRlc3BhY2UgdGhhdCBpc24ndCBhbHJlYWR5IGNvbnZlcnRlZCB0
byBhIHNwYWNlIGJ5IElDVSwgCisgICAgLy8gYW55IG5vbi1wcmludGFibGUgY2hhcmFjdGVyLCBh
bnkgY2hhcmFjdGVyIGNvbnNpZGVyZWQgYXMgd2hpdGVzcGFjZSwKICAgICAvLyBhbnkgaWdub3Jh
YmxlIGNoYXJhY3RlciwgYW5kIGVtb2ppIGNoYXJhY3RlcnMgcmVsYXRlZCB0byBsb2Nrcy4KICAg
ICAKLSAgICAvLyBXZSBhbHNvIGNvbnNpZGVyZWQgdGhlIGNoYXJhY3RlcnMgaW4gTW96aWxsYSdz
IGJsYWNrbGlzdCAoaHR0cDovL2tiLm1vemlsbGF6aW5lLm9yZy9OZXR3b3JrLklETi5ibGFja2xp
c3RfY2hhcnMpLCAKLSAgICAvLyBhbmQgaW5jbHVkZWQgYWxsIG9mIHRoZXNlIGNoYXJhY3RlcnMg
dGhhdCBJQ1UgY2FuIGVuY29kZS4KKyAgICAvLyBXZSBhbHNvIGNvbnNpZGVyZWQgdGhlIGNoYXJh
Y3RlcnMgaW4gTW96aWxsYSdzIGJsYWNrbGlzdCA8aHR0cDovL2tiLm1vemlsbGF6aW5lLm9yZy9O
ZXR3b3JrLklETi5ibGFja2xpc3RfY2hhcnM+LgorCisgICAgLy8gU29tZSBvZiB0aGUgY2hhcmFj
dGVycyBoZXJlIHdpbGwgbmV2ZXIgYXBwZWFyIG9uY2UgSUNVIGhhcyBlbmNvZGVkLgorICAgIC8v
IEZvciBleGFtcGxlLCBJQ1UgdHJhbnNmb3JtcyBtb3N0IHNwYWNlcyBpbnRvIGFuIEFTQ0lJIHNw
YWNlIGFuZCBtb3N0CisgICAgLy8gc2xhc2hlcyBpbnRvIGFuIEFTQ0lJIHNvbGlkdXMuIEJ1dCBv
bmUgb2YgdGhlIHR3byBjYWxsZXJzIHVzZXMgdGhpcworICAgIC8vIG9uIGNoYXJhY3RlcnMgdGhh
dCBoYXZlIG5vdCBiZWVuIHByb2Nlc3NlZCBieSBJQ1UsIHNvIHRoZXkgYXJlIG5lZWRlZCBoZXJl
LgogICAgIAogICAgIGlmICghdV9pc3ByaW50KGNoYXJDb2RlKSB8fCB1X2lzVVdoaXRlU3BhY2Uo
Y2hhckNvZGUpIHx8IHVfaGFzQmluYXJ5UHJvcGVydHkoY2hhckNvZGUsIFVDSEFSX0RFRkFVTFRf
SUdOT1JBQkxFX0NPREVfUE9JTlQpKQogICAgICAgICByZXR1cm4gWUVTOwogICAgIAogICAgIHN3
aXRjaCAoY2hhckNvZGUpIHsKKyAgICAgICAgY2FzZSAweDAwQkM6IC8qIFZVTEdBUiBGUkFDVElP
TiBPTkUgUVVBUlRFUiAqLworICAgICAgICBjYXNlIDB4MDBCRDogLyogVlVMR0FSIEZSQUNUSU9O
IE9ORSBIQUxGICovCisgICAgICAgIGNhc2UgMHgwMEJFOiAvKiBWVUxHQVIgRlJBQ1RJT04gVEhS
RUUgUVVBUlRFUlMgKi8KICAgICAgICAgY2FzZSAweDAwRUQ6IC8qIExBVElOIFNNQUxMIExFVFRF
UiBJIFdJVEggQUNVVEUgKi8KICAgICAgICAgY2FzZSAweDAxQzM6IC8qIExBVElOIExFVFRFUiBS
RVRST0ZMRVggQ0xJQ0sgKi8KICAgICAgICAgY2FzZSAweDAyNTE6IC8qIExBVElOIFNNQUxMIExF
VFRFUiBBTFBIQSAqLwogICAgICAgICBjYXNlIDB4MDI2MTogLyogTEFUSU4gU01BTEwgTEVUVEVS
IFNDUklQVCBHICovCisgICAgICAgIGNhc2UgMHgwMkQwOiAvKiBNT0RJRklFUiBMRVRURVIgVFJJ
QU5HVUxBUiBDT0xPTiAqLwogICAgICAgICBjYXNlIDB4MDMzNTogLyogQ09NQklOSU5HIFNIT1JU
IFNUUk9LRSBPVkVSTEFZICovCiAgICAgICAgIGNhc2UgMHgwMzM3OiAvKiBDT01CSU5JTkcgU0hP
UlQgU09MSURVUyBPVkVSTEFZICovCiAgICAgICAgIGNhc2UgMHgwMzM4OiAvKiBDT01CSU5JTkcg
TE9ORyBTT0xJRFVTIE9WRVJMQVkgKi8KKyAgICAgICAgY2FzZSAweDA1ODk6IC8qIEFSTUVOSUFO
IEZVTEwgU1RPUCAqLwogICAgICAgICBjYXNlIDB4MDVCNDogLyogSEVCUkVXIFBPSU5UIEhJUklR
ICovCiAgICAgICAgIGNhc2UgMHgwNUJDOiAvKiBIRUJSRVcgUE9JTlQgREFHRVNIIE9SIE1BUElR
ICovCiAgICAgICAgIGNhc2UgMHgwNUMzOiAvKiBIRUJSRVcgUFVOQ1RVQVRJT04gU09GIFBBU1VR
ICovCiAgICAgICAgIGNhc2UgMHgwNUY0OiAvKiBIRUJSRVcgUFVOQ1RVQVRJT04gR0VSU0hBWUlN
ICovCisgICAgICAgIGNhc2UgMHgwNjA5OiAvKiBBUkFCSUMtSU5ESUMgUEVSIE1JTExFIFNJR04g
Ki8KKyAgICAgICAgY2FzZSAweDA2MEE6IC8qIEFSQUJJQy1JTkRJQyBQRVIgVEVOIFRIT1VTQU5E
IFNJR04gKi8KICAgICAgICAgY2FzZSAweDA2NjA6IC8qIEFSQUJJQyBJTkRJQyBESUdJVCBaRVJP
ICovCisgICAgICAgIGNhc2UgMHgwNjZBOiAvKiBBUkFCSUMgUEVSQ0VOVCBTSUdOICovCiAgICAg
ICAgIGNhc2UgMHgwNkQ0OiAvKiBBUkFCSUMgRlVMTCBTVE9QICovCiAgICAgICAgIGNhc2UgMHgw
NkYwOiAvKiBFWFRFTkRFRCBBUkFCSUMgSU5ESUMgRElHSVQgWkVSTyAqLworICAgICAgICBjYXNl
IDB4MDcwMTogLyogU1lSSUFDIFNVUFJBTElORUFSIEZVTEwgU1RPUCAqLworICAgICAgICBjYXNl
IDB4MDcwMjogLyogU1lSSUFDIFNVQkxJTkVBUiBGVUxMIFNUT1AgKi8KKyAgICAgICAgY2FzZSAw
eDA3MDM6IC8qIFNZUklBQyBTVVBSQUxJTkVBUiBDT0xPTiAqLworICAgICAgICBjYXNlIDB4MDcw
NDogLyogU1lSSUFDIFNVQkxJTkVBUiBDT0xPTiAqLworICAgICAgICBjYXNlIDB4MTczNTogLyog
UEhJTElQUElORSBTSU5HTEUgUFVOQ1RVQVRJT04gKi8KKyAgICAgICAgY2FzZSAweDIwMjQ6IC8q
IE9ORSBET1QgTEVBREVSICovCiAgICAgICAgIGNhc2UgMHgyMDI3OiAvKiBIWVBIRU5BVElPTiBQ
T0lOVCAqLwogICAgICAgICBjYXNlIDB4MjAzOTogLyogU0lOR0xFIExFRlQtUE9JTlRJTkcgQU5H
TEUgUVVPVEFUSU9OIE1BUksgKi8KICAgICAgICAgY2FzZSAweDIwM0E6IC8qIFNJTkdMRSBSSUdI
VC1QT0lOVElORyBBTkdMRSBRVU9UQVRJT04gTUFSSyAqLworICAgICAgICBjYXNlIDB4MjA0MTog
LyogQ0FSRVQgSU5TRVJUSU9OIFBPSU5UICovCiAgICAgICAgIGNhc2UgMHgyMDQ0OiAvKiBGUkFD
VElPTiBTTEFTSCAqLworICAgICAgICBjYXNlIDB4MjA1MjogLyogQ09NTUVSQ0lBTCBNSU5VUyBT
SUdOICovCisgICAgICAgIGNhc2UgMHgyMTUzOiAvKiBWVUxHQVIgRlJBQ1RJT04gT05FIFRISVJE
ICovCisgICAgICAgIGNhc2UgMHgyMTU0OiAvKiBWVUxHQVIgRlJBQ1RJT04gVFdPIFRISVJEUyAq
LworICAgICAgICBjYXNlIDB4MjE1NTogLyogVlVMR0FSIEZSQUNUSU9OIE9ORSBGSUZUSCAqLwor
ICAgICAgICBjYXNlIDB4MjE1NjogLyogVlVMR0FSIEZSQUNUSU9OIFRXTyBGSUZUSFMgKi8KKyAg
ICAgICAgY2FzZSAweDIxNTc6IC8qIFZVTEdBUiBGUkFDVElPTiBUSFJFRSBGSUZUSFMgKi8KKyAg
ICAgICAgY2FzZSAweDIxNTg6IC8qIFZVTEdBUiBGUkFDVElPTiBGT1VSIEZJRlRIUyAqLworICAg
ICAgICBjYXNlIDB4MjE1OTogLyogVlVMR0FSIEZSQUNUSU9OIE9ORSBTSVhUSCAqLworICAgICAg
ICBjYXNlIDB4MjE1QTogLyogVlVMR0FSIEZSQUNUSU9OIEZJVkUgU0lYVEhTICovCisgICAgICAg
IGNhc2UgMHgyMTVCOiAvKiBWVUxHQVIgRlJBQ1RJT04gT05FIEVJR0hUICovCisgICAgICAgIGNh
c2UgMHgyMTVDOiAvKiBWVUxHQVIgRlJBQ1RJT04gVEhSRUUgRUlHSFRIUyAqLworICAgICAgICBj
YXNlIDB4MjE1RDogLyogVlVMR0FSIEZSQUNUSU9OIEZJVkUgRUlHSFRIUyAqLworICAgICAgICBj
YXNlIDB4MjE1RTogLyogVlVMR0FSIEZSQUNUSU9OIFNFVkVOIEVJR0hUSFMgKi8KKyAgICAgICAg
Y2FzZSAweDIxNUY6IC8qIEZSQUNUSU9OIE5VTUVSQVRPUiBPTkUgKi8KICAgICAgICAgY2FzZSAw
eDIyMTU6IC8qIERJVklTSU9OIFNMQVNIICovCiAgICAgICAgIGNhc2UgMHgyMjE2OiAvKiBTRVQg
TUlOVVMgKi8KKyAgICAgICAgY2FzZSAweDIyMzY6IC8qIFJBVElPICovCiAgICAgICAgIGNhc2Ug
MHgyMzNGOiAvKiBBUEwgRlVOQ1RJT05BTCBTWU1CT0wgU0xBU0ggQkFSICovCiAgICAgICAgIGNh
c2UgMHgyM0FFOiAvKiBJTlRFR1JBTCBFWFRFTlNJT04gKi8KICAgICAgICAgY2FzZSAweDI0NEE6
IC8qIE9DUiBET1VCTEUgQkFDS1NMQVNIICovCiAgICAgICAgIGNhc2UgMHgyNTcxOiAvKiBCT1gg
RFJBV0lOR1MgTElHSFQgRElBR09OQUwgVVBQRVIgUklHSFQgVE8gTE9XRVIgTEVGVCAqLwogICAg
ICAgICBjYXNlIDB4MjU3MjogLyogQk9YIERSQVdJTkdTIExJR0hUIERJQUdPTkFMIFVQUEVSIExF
RlQgVE8gTE9XRVIgUklHSFQgKi8KKyAgICAgICAgY2FzZSAweDI5RjY6IC8qIFNPTElEVVMgV0lU
SCBPVkVSQkFSICovCiAgICAgICAgIGNhc2UgMHgyOUY4OiAvKiBCSUcgU09MSURVUyAqLwotICAg
ICAgICBjYXNlIDB4MjlmNjogLyogU09MSURVUyBXSVRIIE9WRVJCQVIgKi8KICAgICAgICAgY2Fz
ZSAweDJBRkI6IC8qIFRSSVBMRSBTT0xJRFVTIEJJTkFSWSBSRUxBVElPTiAqLwogICAgICAgICBj
YXNlIDB4MkFGRDogLyogRE9VQkxFIFNPTElEVVMgT1BFUkFUT1IgKi8KKyAgICAgICAgY2FzZSAw
eDJGRjA6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBMRUZUIFRPIFJJR0hU
ICovCisgICAgICAgIGNhc2UgMHgyRkYxOiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFS
QUNURVIgQUJPVkUgVE8gQkVMT1cgKi8KKyAgICAgICAgY2FzZSAweDJGRjI6IC8qIElERU9HUkFQ
SElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBMRUZUIFRPIE1JRERMRSBBTkQgUklHSFQgKi8KKyAg
ICAgICAgY2FzZSAweDJGRjM6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBB
Qk9WRSBUTyBNSURETEUgQU5EIEJFTE9XICovCisgICAgICAgIGNhc2UgMHgyRkY0OiAvKiBJREVP
R1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgRlVMTCBTVVJST1VORCAqLworICAgICAgICBj
YXNlIDB4MkZGNTogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIFNVUlJPVU5E
IEZST00gQUJPVkUgKi8KKyAgICAgICAgY2FzZSAweDJGRjY6IC8qIElERU9HUkFQSElDIERFU0NS
SVBUSU9OIENIQVJBQ1RFUiBTVVJST1VORCBGUk9NIEJFTE9XICovCisgICAgICAgIGNhc2UgMHgy
RkY3OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgU1VSUk9VTkQgRlJPTSBM
RUZUICovCisgICAgICAgIGNhc2UgMHgyRkY4OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBD
SEFSQUNURVIgU1VSUk9VTkQgRlJPTSBVUFBFUiBMRUZUICovCisgICAgICAgIGNhc2UgMHgyRkY5
OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgU1VSUk9VTkQgRlJPTSBVUFBF
UiBSSUdIVCAqLworICAgICAgICBjYXNlIDB4MkZGQTogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJ
T04gQ0hBUkFDVEVSIFNVUlJPVU5EIEZST00gTE9XRVIgTEVGVCAqLworICAgICAgICBjYXNlIDB4
MkZGQjogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIE9WRVJMQUlEICovCisg
ICAgICAgIGNhc2UgMHgzMDAyOiAvKiBJREVPR1JBUEhJQyBGVUxMIFNUT1AgKi8KICAgICAgICAg
Y2FzZSAweDMwMDg6IC8qIExFRlQgQU5HTEUgQlJBQ0tFVCAqLwogICAgICAgICBjYXNlIDB4MzAx
NDogLyogTEVGVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUICovCiAgICAgICAgIGNhc2UgMHgzMDE1
OiAvKiBSSUdIVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUICovCkBAIC0xMDQsMTIgKzE1MSwyMSBA
QCBzdGF0aWMgaW5saW5lIEJPT0wgaXNMb29rYWxpa2VDaGFyYWN0ZXIoaW50IGNoYXJDb2RlKQog
ICAgICAgICBjYXNlIDB4MzAzNTogLyogVkVSVElDQUwgS0FOQSBSRVBFQVQgTUFSSyBMT1dFUiBI
QUxGICovCiAgICAgICAgIGNhc2UgMHgzMjFEOiAvKiBQQVJFTlRIRVNJWkVEIEtPUkVBTiBDSEFS
QUNURVIgT0pFT04gKi8KICAgICAgICAgY2FzZSAweDMyMUU6IC8qIFBBUkVOVEhFU0laRUQgS09S
RUFOIENIQVJBQ1RFUiBPIEhVICovCisgICAgICAgIGNhc2UgMHgzM0FFOiAvKiBTUVVBUkUgUkFE
IE9WRVIgUyAqLworICAgICAgICBjYXNlIDB4MzNBRjogLyogU1FVQVJFIFJBRCBPVkVSIFMgU1FV
QVJFRCAqLworICAgICAgICBjYXNlIDB4MzNDNjogLyogU1FVQVJFIEMgT1ZFUiBLRyAqLwogICAg
ICAgICBjYXNlIDB4MzNERjogLyogU1FVQVJFIEEgT1ZFUiBNICovCisgICAgICAgIGNhc2UgMHhB
Nzg5OiAvKiBNT0RJRklFUiBMRVRURVIgQ09MT04gKi8KICAgICAgICAgY2FzZSAweEZFMTQ6IC8q
IFBSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBTRU1JQ09MT04gKi8KICAgICAgICAgY2Fz
ZSAweEZFMTU6IC8qIFBSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBFWENMQU1BVElPTiBN
QVJLICovCiAgICAgICAgIGNhc2UgMHhGRTNGOiAvKiBQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVS
VElDQUwgTEVGVCBBTkdMRSBCUkFDS0VUICovCiAgICAgICAgIGNhc2UgMHhGRTVEOiAvKiBTTUFM
TCBMRUZUIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQgKi8KICAgICAgICAgY2FzZSAweEZFNUU6IC8q
IFNNQUxMIFJJR0hUIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQgKi8KKyAgICAgICAgY2FzZSAweEZG
MEU6IC8qIEZVTExXSURUSCBGVUxMIFNUT1AgKi8KKyAgICAgICAgY2FzZSAweEZGMEY6IC8qIEZV
TEwgV0lEVEggU09MSURVUyAqLworICAgICAgICBjYXNlIDB4RkY2MTogLyogSEFMRldJRFRIIElE
RU9HUkFQSElDIEZVTEwgU1RPUCAqLworICAgICAgICBjYXNlIDB4RkZGQzogLyogT0JKRUNUIFJF
UExBQ0VNRU5UIENIQVJBQ1RFUiAqLworICAgICAgICBjYXNlIDB4RkZGRDogLyogUkVQTEFDRU1F
TlQgQ0hBUkFDVEVSICovCiAgICAgICAgIGNhc2UgMHgxRjUwRjogLyogTE9DSyBXSVRIIElOSyBQ
RU4gKi8KICAgICAgICAgY2FzZSAweDFGNTEwOiAvKiBDTE9TRUQgTE9DSyBXSVRIIEtFWSAqLwog
ICAgICAgICBjYXNlIDB4MUY1MTE6IC8qIEtFWSAqLwpAQCAtNTE2LDEyICs1NzIsMTIgQEAgc3Rh
dGljIE5TU3RyaW5nICpzdHJpbmdCeVRyaW1taW5nV2hpdGVzcGFjZShOU1N0cmluZyAqc3RyaW5n
KQogICAgIHJldHVybiB0cmltbWVkOwogfQogCi1OU1VSTCAqVVJMQnlUcnVuY2F0aW5nT25lQ2hh
cmFjdGVyQmVmb3JlQ29tcG9uZW50KE5TVVJMICpVUkwsIENGSW5kZXggY29tcG9uZW50KQorTlNV
UkwgKlVSTEJ5VHJ1bmNhdGluZ09uZUNoYXJhY3RlckJlZm9yZUNvbXBvbmVudChOU1VSTCAqVVJM
LCBDRlVSTENvbXBvbmVudFR5cGUgY29tcG9uZW50KQogewogICAgIGlmICghVVJMKQogICAgICAg
ICByZXR1cm4gbmlsOwogICAgIAotICAgIENGUmFuZ2UgZnJhZ1JnID0gQ0ZVUkxHZXRCeXRlUmFu
Z2VGb3JDb21wb25lbnQoKENGVVJMUmVmKVVSTCwgc3RhdGljX2Nhc3Q8Q0ZVUkxDb21wb25lbnRU
eXBlPihjb21wb25lbnQpLCBOVUxMKTsKKyAgICBDRlJhbmdlIGZyYWdSZyA9IENGVVJMR2V0Qnl0
ZVJhbmdlRm9yQ29tcG9uZW50KChDRlVSTFJlZilVUkwsIGNvbXBvbmVudCwgTlVMTCk7CiAgICAg
aWYgKGZyYWdSZy5sb2NhdGlvbiA9PSBrQ0ZOb3RGb3VuZCkKICAgICAgICAgcmV0dXJuIFVSTDsK
ICAgICAKQEAgLTU3Myw3ICs2MjksNyBAQCBOU1VSTCAqVVJMV2l0aERhdGEoTlNEYXRhICpkYXRh
LCBOU1VSTCAqYmFzZVVSTCkKICAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAgICByZXN1
bHQgPSBDRkJyaWRnaW5nUmVsZWFzZShDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKE5V
TEwsIGJ5dGVzLCBsZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCAoQ0ZVUkxSZWYp
YmFzZVVSTCwgWUVTKSk7CiAgICAgfSBlbHNlCi0gICAgICAgICAgICByZXN1bHQgPSBbTlNVUkwg
VVJMV2l0aFN0cmluZzpAIiJdOworICAgICAgICByZXN1bHQgPSBbTlNVUkwgVVJMV2l0aFN0cmlu
ZzpAIiJdOwogICAgICAgICAgICAgICAgIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC02MjUs
NyArNjgxLDcgQEAgc3RhdGljIEJPT0wgaGFzUXVlc3Rpb25NYXJrT25seVF1ZXJ5U3RyaW5nKE5T
VVJMICpVUkwpCiAKICNkZWZpbmUgY29tcGxldGVVUkwgKENGVVJMQ29tcG9uZW50VHlwZSktMQog
Ci1OU0RhdGEgKmRhdGFGb3JVUkxDb21wb25lbnRUeXBlKE5TVVJMICpVUkwsIENGSW5kZXggY29t
cG9uZW50VHlwZSkKK05TRGF0YSAqZGF0YUZvclVSTENvbXBvbmVudFR5cGUoTlNVUkwgKlVSTCwg
Q0ZVUkxDb21wb25lbnRUeXBlIGNvbXBvbmVudFR5cGUpCiB7CiAgICAgc3RhdGljIGludCBVUkxD
b21wb25lbnRUeXBlQnVmZmVyTGVuZ3RoID0gMjA0ODsKICAgICAKQEAgLTY0MSw3ICs2OTcsNyBA
QCBOU0RhdGEgKmRhdGFGb3JVUkxDb21wb25lbnRUeXBlKE5TVVJMICpVUkwsIENGSW5kZXggY29t
cG9uZW50VHlwZSkKICAgICAKICAgICBDRlJhbmdlIHJhbmdlOwogICAgIGlmIChjb21wb25lbnRU
eXBlICE9IGNvbXBsZXRlVVJMKSB7Ci0gICAgICAgIHJhbmdlID0gQ0ZVUkxHZXRCeXRlUmFuZ2VG
b3JDb21wb25lbnQoKENGVVJMUmVmKVVSTCwgc3RhdGljX2Nhc3Q8Q0ZVUkxDb21wb25lbnRUeXBl
Pihjb21wb25lbnRUeXBlKSwgTlVMTCk7CisgICAgICAgIHJhbmdlID0gQ0ZVUkxHZXRCeXRlUmFu
Z2VGb3JDb21wb25lbnQoKENGVVJMUmVmKVVSTCwgY29tcG9uZW50VHlwZSwgTlVMTCk7CiAgICAg
ICAgIGlmIChyYW5nZS5sb2NhdGlvbiA9PSBrQ0ZOb3RGb3VuZCkKICAgICAgICAgICAgIHJldHVy
biBuaWw7CiAgICAgfSBlbHNlIHsKQEAgLTc5OSw3ICs4NTUsNyBAQCBOU1N0cmluZyAqdXNlclZp
c2libGVTdHJpbmcoTlNVUkwgKlVSTCkKICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpiZWZvcmUg
PSBzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oW2RhdGEgYnl0ZXNdKTsKICAgICBp
bnQgbGVuZ3RoID0gW2RhdGEgbGVuZ3RoXTsKICAgICAKLSAgICBib29sIG5lZWRzSG9zdE5hbWVE
ZWNvZGluZyA9IGZhbHNlOworICAgIGJvb2wgbWF5TmVlZEhvc3ROYW1lRGVjb2RpbmcgPSBmYWxz
ZTsKICAgICAKICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpwID0gYmVmb3JlOwogICAgIGludCBi
dWZmZXJMZW5ndGggPSAobGVuZ3RoICogMykgKyAxOwpAQCAtODI0LDggKzg4MCw4IEBAIE5TU3Ry
aW5nICp1c2VyVmlzaWJsZVN0cmluZyhOU1VSTCAqVVJMKQogICAgICAgICAgICAgKnErKyA9IGM7
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIENoZWNrIGZvciAieG4tLSIgaW4gYW4gZWZm
aWNpZW50LCBub24tY2FzZS1zZW5zaXRpdmUsIHdheS4KLSAgICAgICAgICAgIGlmIChjID09ICct
JyAmJiBpID49IDMgJiYgIW5lZWRzSG9zdE5hbWVEZWNvZGluZyAmJiAocVstNF0gfCAweDIwKSA9
PSAneCcgJiYgKHFbLTNdIHwgMHgyMCkgPT0gJ24nICYmIHFbLTJdID09ICctJykKLSAgICAgICAg
ICAgICAgICBuZWVkc0hvc3ROYW1lRGVjb2RpbmcgPSB0cnVlOworICAgICAgICAgICAgaWYgKGMg
PT0gJy0nICYmIGkgPj0gMyAmJiAhbWF5TmVlZEhvc3ROYW1lRGVjb2RpbmcgJiYgKHFbLTRdIHwg
MHgyMCkgPT0gJ3gnICYmIChxWy0zXSB8IDB4MjApID09ICduJyAmJiBxWy0yXSA9PSAnLScpCisg
ICAgICAgICAgICAgICAgbWF5TmVlZEhvc3ROYW1lRGVjb2RpbmcgPSB0cnVlOwogICAgICAgICB9
CiAgICAgfQogICAgICpxID0gJ1wwJzsKQEAgLTg1OCw3ICs5MTQsOCBAQCBOU1N0cmluZyAqdXNl
clZpc2libGVTdHJpbmcoTlNVUkwgKlVSTCkKICAgICAKICAgICBmcmVlKGFmdGVyKTsKICAgICAK
LSAgICByZXN1bHQgPSBtYXBIb3N0TmFtZXMocmVzdWx0LCAhbmVlZHNIb3N0TmFtZURlY29kaW5n
KTsKKyAgICBpZiAobWF5TmVlZEhvc3ROYW1lRGVjb2RpbmcpCisgICAgICAgIHJlc3VsdCA9IG1h
cEhvc3ROYW1lcyhyZXN1bHQsIE5PKTsKICAgICByZXN1bHQgPSBbcmVzdWx0IHByZWNvbXBvc2Vk
U3RyaW5nV2l0aENhbm9uaWNhbE1hcHBpbmddOwogICAgIHJldHVybiBDRkJyaWRnaW5nUmVsZWFz
ZShjcmVhdGVTdHJpbmdXaXRoRXNjYXBlZFVuc2FmZUNoYXJhY3RlcnMoKENGU3RyaW5nUmVmKXJl
c3VsdCkpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDA1M2M4NmUzYzZlNzQ3YjU0MjBkZjc4NmFkMTI1ODIyMTk1NjRjNTUuLmI1YmE3MWRm
ZDEzNDIyMGJjODY3NDgyOGM3ZGZjZmU5MzAzNWY1MWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNC0wNC0xMyAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgdXNlclZpc2libGVTdHJp
bmcgc2hvdWxkIG5vdCB0cnkgdG8gImVuY29kZSIgaG9zdCBuYW1lcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxNTg3CisgICAgICAgIHJkYXI6Ly9w
cm9ibGVtLzE0Njg2ODQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajogQWRkZWQgVVJMRXh0cmFzLm1tLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9tYWMvVVJMRXh0cmFzLm1tOiBBZGRlZC4gQSBmZXcgdGVzdHMgZm9yIFdlYkNvcmVOU1VS
TEV4dHJhcy4KKyAgICAgICAgQ292ZXJhZ2UgaXMgdGlueSBhdCB0aGlzIHBvaW50OyB3ZSBjb3Vs
ZCBhZGQgYSBsb3QgbW9yZSBjYXNlcyEKKwogMjAxNC0wNC0xMiAgRmlsaXAgUGl6bG8gIDxmcGl6
bG9AYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2Ugc2xvdy1zdHJlc3MgdGVzdHMgcnVuIGZhc3Rl
ciBieSBydW5uaW5nIGZld2VyIFZNIHZhcmlhbnRzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBkMzBiZDNiNzkyNjM5NWMxM2RmZjBjOTU3ZTQxNzQzMjBlYTYwZmY4Li5jNzI3Y2NhYzRhMGJk
NGJjY2Q1M2ZkMTQ1MGU4YmNmYTZhZTg4M2UyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MTI5LDYgKzEyOSw3IEBACiAJCTkzQTQyN0E5MTgwRDlCMDcwMENEMjRENyAvKiBSZWZQdHIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNBNDI3QTgx
ODBEOUIwNzAwQ0QyNEQ3IC8qIFJlZlB0ci5jcHAgKi87IH07CiAJCTkzQTQyN0FCMTgwREEyNjQw
MENEMjRENyAvKiBSZWYuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTNBNDI3QUExODBEQTI2NDAwQ0QyNEQ3IC8qIFJlZi5jcHAgKi87IH07CiAJCTkz
QTcyMEU2MThGMUEwRTgwMEE4NDhFMSAvKiBDYWxjdWxhdGlvblZhbHVlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQTcyMEU1MThGMUEwRTgwMEE4
NDhFMSAvKiBDYWxjdWxhdGlvblZhbHVlLmNwcCAqLzsgfTsKKwkJOTNBN0VCM0QxOEZBNjNBNDAw
OUU3NjcwIC8qIFVSTEV4dHJhcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzQTdFQjNDMThGQTYzQTQwMDlFNzY3MCAvKiBVUkxFeHRyYXMubW0gKi87
IH07CiAJCTkzQUJBODA5MTZEREFCOTEwMDJEQjJGQSAvKiBTdHJpbmdIYXNoZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNBQkE4MDgxNkREQUI5
MTAwMkRCMkZBIC8qIFN0cmluZ0hhc2hlci5jcHAgKi87IH07CiAJCTkzQUY0RUNFMTUwNkYwNjQw
MDdGRDU3RSAvKiBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JJbWFnZXNfQnVuZGxl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQUY0
RUNEMTUwNkYwNjQwMDdGRDU3RSAvKiBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JJ
bWFnZXNfQnVuZGxlLmNwcCAqLzsgfTsKIAkJOTNBRjRFRDAxNTA2RjEyMzAwN0ZENTdFIC8qIGxv
dHMtb2YtaW1hZ2VzLmh0bWwgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzQUY0RUNGMTUwNkYxMjMwMDdGRDU3RSAvKiBsb3RzLW9mLWltYWdlcy5odG1s
ICovOyB9OwpAQCAtNDYwLDYgKzQ2MSw3IEBACiAJCTkzQTQyN0FDMTgwREE2MEYwMENEMjRENyAv
KiBNb3ZlT25seS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb3ZlT25seS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5M0E0MjdBRDE4MERBNjBGMDBDRDI0RDcgLyogUmVmTG9nZ2VyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlZkxvZ2dlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
M0E3MjBFNTE4RjFBMEU4MDBBODQ4RTEgLyogQ2FsY3VsYXRpb25WYWx1ZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWxjdWxhdGlvblZhbHVlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNBN0VCM0MxOEZBNjNBNDAwOUU3NjcwIC8qIFVSTEV4
dHJhcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVSTEV4dHJh
cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNBQkE4MDgxNkREQUI5MTAwMkRC
MkZBIC8qIFN0cmluZ0hhc2hlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTdHJpbmdIYXNoZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0FG
NEVDQTE1MDZGMDM1MDA3RkQ1N0UgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9y
SW1hZ2VzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ld0ZpcnN0
VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckltYWdlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTkzQUY0RUNEMTUwNkYwNjQwMDdGRDU3RSAvKiBOZXdGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXRGb3JJbWFnZXNfQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckltYWdlc19CdW5k
bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTg3LDYgKzk4OSw3IEBACiAJ
CQkJOTM5QkZFMzkxOEU1NTQ4OTAwODgzMjc1IC8qIFN0cmluZ1RydW5jYXRvci5tbSAqLywKIAkJ
CQkzN0E2ODk1RDE0OEE5QjUwMDA1MTAwRkEgLyogU3VicmVzb3VyY2VFcnJvckNyYXNoLm1tICov
LAogCQkJCUU0OTAyOTY3MTRFMkUzQTQwMDJCRUREMSAvKiBUeXBpbmdTdHlsZUNyYXNoLm1tICov
LAorCQkJCTkzQTdFQjNDMThGQTYzQTQwMDlFNzY3MCAvKiBVUkxFeHRyYXMubW0gKi8sCiAJCQkJ
NTFGQkJCNEMxNTEzRDRFOTAwODIyNzM4IC8qIFdlYlZpZXdDYW5QYXN0ZVVSTC5tbSAqLywKIAkJ
CQlDMkVCMkREMTE2Q0FDN0FDMDA5QjUyRUUgLyogV2ViVmlld0RpZENyZWF0ZUphdmFTY3JpcHRD
b250ZXh0Lm1tICovLAogCQkJCTM3RTM4QzMzMTY5QjdEMDEwMDg0QzI4QyAvKiBXZWJWaWV3RGlk
UmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5Lm1tICovLApAQCAtMTMwNSw2ICsxMzA4LDcgQEAKIAkJ
CQlGNkI3QkU5NDE3NDY5MjA5MDA4QTM0NDUgLyogRGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUJDM0M0QzdGMTQ1ODdBQTYwMDI1RkI2MiAvKiBXS0Jyb3dz
aW5nQ29udGV4dEdyb3VwVGVzdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDM0M0QzcyMTQ1NzVC
NkEwMDI1RkI2MiAvKiBXS0Jyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZVRlc3QubW0gaW4gU291
cmNlcyAqLywKKwkJCQk5M0E3RUIzRDE4RkE2M0E0MDA5RTc2NzAgLyogVVJMRXh0cmFzLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTFFOTMwMTcxNTZCMTNFMTAwNEM5OURGIC8qIFdLUGFnZUdldFNj
YWxlRmFjdG9yTm90WmVyby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzdCNjFBQTEyOUEwMzg3
MDBEMTc0QTQgLyogV0tQcmVmZXJlbmNlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzkwOTk1
RTEyNTY3QkMxMDAwODM3NTYgLyogV0tTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9VUkxFeHRyYXMubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9VUkxFeHRyYXMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmY4YWRhNWRl
ZjFhODEyOGJmNjM3MTA2NjI2ZTFiYmNhYjU2YWU5MgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1VSTEV4dHJhcy5tbQpAQCAtMCwwICsxLDEzMCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaW1wb3J0IDxXZWJDb3JlL1dlYkNv
cmVOU1VSTEV4dHJhcy5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyBO
U0RhdGEgKmxpdGVyYWxBc0RhdGEoY29uc3QgY2hhciogbGl0ZXJhbCkKK3sKKyAgICByZXR1cm4g
W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmxpdGVyYWwgbGVuZ3RoOnN0cmxlbihsaXRlcmFsKV07Cit9
CisKK3N0YXRpYyBjb25zdCBjaGFyKiBkYXRhQXNTdHJpbmcoTlNEYXRhICpkYXRhKQoreworICAg
IHN0YXRpYyBjaGFyIGJ1ZmZlclsxMDAwXTsKKyAgICBpZiAoW2RhdGEgbGVuZ3RoXSA+IHNpemVv
ZihidWZmZXIpIC0gMSkKKyAgICAgICAgcmV0dXJuICJFUlJPUiI7CisgICAgaWYgKG1lbWNocihb
ZGF0YSBieXRlc10sIDAsIFtkYXRhIGxlbmd0aF0pKQorICAgICAgICByZXR1cm4gIkVSUk9SIjsK
KyAgICBtZW1jcHkoYnVmZmVyLCBbZGF0YSBieXRlc10sIFtkYXRhIGxlbmd0aF0pOworICAgIGJ1
ZmZlcltbZGF0YSBsZW5ndGhdXSA9ICdcMCc7CisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKworc3Rh
dGljIGNvbnN0IGNoYXIqIG9yaWdpbmFsRGF0YUFzU3RyaW5nKE5TVVJMICpVUkwpCit7CisgICAg
cmV0dXJuIGRhdGFBc1N0cmluZyhXZWJDb3JlOjpvcmlnaW5hbFVSTERhdGEoVVJMKSk7Cit9CisK
K3N0YXRpYyBjb25zdCBjaGFyKiB1c2VyVmlzaWJsZVN0cmluZyhOU1VSTCAqVVJMKQoreworICAg
IHJldHVybiBbV2ViQ29yZTo6dXNlclZpc2libGVTdHJpbmcoVVJMKSBVVEY4U3RyaW5nXTsKK30K
Kworc3RhdGljIE5TVVJMICpsaXRlcmFsVVJMKGNvbnN0IGNoYXIqIGxpdGVyYWwpCit7CisgICAg
cmV0dXJuIFdlYkNvcmU6OlVSTFdpdGhEYXRhKGxpdGVyYWxBc0RhdGEobGl0ZXJhbCksIG5pbCk7
Cit9CisKK1RFU1QoV2ViQ29yZSwgVVJMRXh0cmFzKQoreworICAgIEVYUEVDVF9TVFJFUSgiaHR0
cDovL3NpdGUuY29tIiwgb3JpZ2luYWxEYXRhQXNTdHJpbmcobGl0ZXJhbFVSTCgiaHR0cDovL3Np
dGUuY29tIikpKTsKKyAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly8lNzdlYnNpdGUuY29tIiwgb3Jp
Z2luYWxEYXRhQXNTdHJpbmcobGl0ZXJhbFVSTCgiaHR0cDovLyU3N2Vic2l0ZS5jb20iKSkpOwor
CisgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0ZS5jb20iLCB1c2VyVmlzaWJsZVN0cmluZyhs
aXRlcmFsVVJMKCJodHRwOi8vc2l0ZS5jb20iKSkpOworICAgIEVYUEVDVF9TVFJFUSgiaHR0cDov
LyU3N2Vic2l0ZS5jb20iLCB1c2VyVmlzaWJsZVN0cmluZyhsaXRlcmFsVVJMKCJodHRwOi8vJTc3
ZWJzaXRlLmNvbSIpKSk7Cit9CisKK1RFU1QoV2ViQ29yZSwgVVJMRXh0cmFzX0RpdmlzaW9uU2ln
bikKK3sKKyAgICAvLyBTZWxlY3RlZCB0aGUgZGl2aXNpb24gc2lnbiBhcyBhbiBleGFtcGxlIG9m
IGEgbm9uLUFTQ0lJIGNoYXJhY3RlciB0aGF0IGlzIGFsbG93ZWQgaW4gaG9zdCBuYW1lcywgc2lu
Y2UgaXQncyBhIGxvb2thbGlrZSBjaGFyYWN0ZXIuCisKKyAgICAvLyBDb2RlIHBhdGggc2ltaWxh
ciB0byB0aGUgb25lIHVzZWQgd2hlbiB0eXBpbmcgaW4gYSBVUkwuCisgICAgRVhQRUNUX1NUUkVR
KCJodHRwOi8vc2l0ZS54bi0tY29tb3RoZXJzaXRlLWtqYi5vcmciLCBvcmlnaW5hbERhdGFBc1N0
cmluZyhXZWJDb3JlOjpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKEAiaHR0cDovL3NpdGUuY29tXHhD
M1x4QjdvdGhlcnNpdGUub3JnIiwgbmlsKSkpOworICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3Np
dGUuY29tXHhDM1x4QjdvdGhlcnNpdGUub3JnIiwgdXNlclZpc2libGVTdHJpbmcoV2ViQ29yZTo6
VVJMV2l0aFVzZXJUeXBlZFN0cmluZyhAImh0dHA6Ly9zaXRlLmNvbVx4QzNceEI3b3RoZXJzaXRl
Lm9yZyIsIG5pbCkpKTsKKworICAgIC8vIENvZGUgcGF0aHMgc2ltaWxhciB0byB0aGUgb25lcyB1
c2VkIGZvciBVUkxzIGZvdW5kIGluIHdlYnBhZ2VzIG9yIEhUVFAgcmVzcG9uc2VzLgorICAgIEVY
UEVDVF9TVFJFUSgiaHR0cDovL3NpdGUuY29tXHhDM1x4QjdvdGhlcnNpdGUub3JnIiwgb3JpZ2lu
YWxEYXRhQXNTdHJpbmcobGl0ZXJhbFVSTCgiaHR0cDovL3NpdGUuY29tXHhDM1x4QjdvdGhlcnNp
dGUub3JnIikpKTsKKyAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbVx4QzNceEI3b3Ro
ZXJzaXRlLm9yZyIsIHVzZXJWaXNpYmxlU3RyaW5nKGxpdGVyYWxVUkwoImh0dHA6Ly9zaXRlLmNv
bVx4QzNceEI3b3RoZXJzaXRlLm9yZyIpKSk7CisgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2l0
ZS5jb20lQzMlQjdvdGhlcnNpdGUub3JnIiwgb3JpZ2luYWxEYXRhQXNTdHJpbmcobGl0ZXJhbFVS
TCgiaHR0cDovL3NpdGUuY29tJUMzJUI3b3RoZXJzaXRlLm9yZyIpKSk7CisgICAgRVhQRUNUX1NU
UkVRKCJodHRwOi8vc2l0ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5vcmciLCB1c2VyVmlzaWJsZVN0
cmluZyhsaXRlcmFsVVJMKCJodHRwOi8vc2l0ZS5jb20lQzMlQjdvdGhlcnNpdGUub3JnIikpKTsK
KworICAgIC8vIFNlcGFyYXRlIGZ1bmN0aW9ucyB0aGF0IGRlYWwgd2l0aCBqdXN0IGEgaG9zdCBu
YW1lIG9uIGl0cyBvd24uCisgICAgRVhQRUNUX1NUUkVRKCJzaXRlLnhuLS1jb21vdGhlcnNpdGUt
a2piLm9yZyIsIFtXZWJDb3JlOjplbmNvZGVIb3N0TmFtZShAInNpdGUuY29tXHhDM1x4QjdvdGhl
cnNpdGUub3JnIikgVVRGOFN0cmluZ10pOworICAgIEVYUEVDVF9TVFJFUSgic2l0ZS5jb21ceEMz
XHhCN290aGVyc2l0ZS5vcmciLCBbV2ViQ29yZTo6ZGVjb2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4
QzNceEI3b3RoZXJzaXRlLm9yZyIpIFVURjhTdHJpbmddKTsKK30KKworVEVTVChXZWJDb3JlLCBV
UkxFeHRyYXNfU29saWR1cykKK3sKKyAgICAvLyBTZWxlY3RlZCBmdWxsIHdpZHRoIHNvbGlkdXMs
IHdoaWNoIGxvb2tzIGxpa2UgdGhlIHNvbGlkdXMsIHdoaWNoIGlzIHRoZSBjaGFyYWN0ZXIgdGhh
dCBpbmRpY2F0ZXMgdGhlIGVuZCBvZiB0aGUgaG9zdCBuYW1lLgorCisgICAgLy8gQ29kZSBwYXRo
IHNpbWlsYXIgdG8gdGhlIG9uZSB1c2VkIHdoZW4gdHlwaW5nIGluIGEgVVJMLgorICAgIEVYUEVD
VF9TVFJFUSgiaHR0cDovL3NpdGUuY29tL290aGVyc2l0ZS5vcmciLCBvcmlnaW5hbERhdGFBc1N0
cmluZyhXZWJDb3JlOjpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKEAiaHR0cDovL3NpdGUuY29tXHhF
Rlx4QkNceDhGb3RoZXJzaXRlLm9yZyIsIG5pbCkpKTsKKyAgICBFWFBFQ1RfU1RSRVEoImh0dHA6
Ly9zaXRlLmNvbS9vdGhlcnNpdGUub3JnIiwgdXNlclZpc2libGVTdHJpbmcoV2ViQ29yZTo6VVJM
V2l0aFVzZXJUeXBlZFN0cmluZyhAImh0dHA6Ly9zaXRlLmNvbVx4RUZceEJDXHg4Rm90aGVyc2l0
ZS5vcmciLCBuaWwpKSk7CisKKyAgICAvLyBDb2RlIHBhdGhzIHNpbWlsYXIgdG8gdGhlIG9uZXMg
dXNlZCBmb3IgVVJMcyBmb3VuZCBpbiB3ZWJwYWdlcyBvciBIVFRQIHJlc3BvbnNlcy4KKyAgICBF
WFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbVx4RUZceEJDXHg4Rm90aGVyc2l0ZS5vcmciLCBv
cmlnaW5hbERhdGFBc1N0cmluZyhsaXRlcmFsVVJMKCJodHRwOi8vc2l0ZS5jb21ceEVGXHhCQ1x4
OEZvdGhlcnNpdGUub3JnIikpKTsKKyAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbSVF
RiVCQyU4Rm90aGVyc2l0ZS5vcmciLCB1c2VyVmlzaWJsZVN0cmluZyhsaXRlcmFsVVJMKCJodHRw
Oi8vc2l0ZS5jb21ceEVGXHhCQ1x4OEZvdGhlcnNpdGUub3JnIikpKTsKKyAgICBFWFBFQ1RfU1RS
RVEoImh0dHA6Ly9zaXRlLmNvbSVFRiVCQyU4Rm90aGVyc2l0ZS5vcmciLCBvcmlnaW5hbERhdGFB
c1N0cmluZyhsaXRlcmFsVVJMKCJodHRwOi8vc2l0ZS5jb20lRUYlQkMlOEZvdGhlcnNpdGUub3Jn
IikpKTsKKyAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9zaXRlLmNvbSVFRiVCQyU4Rm90aGVyc2l0
ZS5vcmciLCB1c2VyVmlzaWJsZVN0cmluZyhsaXRlcmFsVVJMKCJodHRwOi8vc2l0ZS5jb20lRUYl
QkMlOEZvdGhlcnNpdGUub3JnIikpKTsKKworICAgIC8vIFNlcGFyYXRlIGZ1bmN0aW9ucyB0aGF0
IGRlYWwgd2l0aCBqdXN0IGEgaG9zdCBuYW1lIG9uIGl0cyBvd24uCisgICAgRVhQRUNUX1NUUkVR
KCJzaXRlLmNvbS9vdGhlcnNpdGUub3JnIiwgW1dlYkNvcmU6OmVuY29kZUhvc3ROYW1lKEAic2l0
ZS5jb21ceEVGXHhCQ1x4OEZvdGhlcnNpdGUub3JnIikgVVRGOFN0cmluZ10pOworICAgIEVYUEVD
VF9TVFJFUSgic2l0ZS5jb21ceEVGXHhCQ1x4OEZvdGhlcnNpdGUub3JnIiwgW1dlYkNvcmU6OmRl
Y29kZUhvc3ROYW1lKEAic2l0ZS5jb21ceEVGXHhCQ1x4OEZvdGhlcnNpdGUub3JnIikgVVRGOFN0
cmluZ10pOworfQorCitURVNUKFdlYkNvcmUsIFVSTEV4dHJhc19TcGFjZSkKK3sKKyAgICAvLyBT
ZWxlY3RlZCBpZGVvZ3JhcGhpYyBzcGFjZSwgd2hpY2ggbG9va3MgbGlrZSB0aGUgQVNDSUkgc3Bh
Y2UsIHdoaWNoIGlzIG5vdCBhbGxvd2VkIHVuZXNjYXBlZC4KKworICAgIC8vIENvZGUgcGF0aCBz
aW1pbGFyIHRvIHRoZSBvbmUgdXNlZCB3aGVuIHR5cGluZyBpbiBhIFVSTC4KKyAgICBFWFBFQ1Rf
U1RSRVEoImh0dHA6Ly9zaXRlLmNvbSUyMG90aGVyc2l0ZS5vcmciLCBvcmlnaW5hbERhdGFBc1N0
cmluZyhXZWJDb3JlOjpVUkxXaXRoVXNlclR5cGVkU3RyaW5nKEAiaHR0cDovL3NpdGUuY29tXHhF
M1x4ODBceDgwb3RoZXJzaXRlLm9yZyIsIG5pbCkpKTsKKyAgICBFWFBFQ1RfU1RSRVEoImh0dHA6
Ly9zaXRlLmNvbSUyMG90aGVyc2l0ZS5vcmciLCB1c2VyVmlzaWJsZVN0cmluZyhXZWJDb3JlOjpV
UkxXaXRoVXNlclR5cGVkU3RyaW5nKEAiaHR0cDovL3NpdGUuY29tXHhFM1x4ODBceDgwb3RoZXJz
aXRlLm9yZyIsIG5pbCkpKTsKKworICAgIC8vIENvZGUgcGF0aHMgc2ltaWxhciB0byB0aGUgb25l
cyB1c2VkIGZvciBVUkxzIGZvdW5kIGluIHdlYnBhZ2VzIG9yIEhUVFAgcmVzcG9uc2VzLgorICAg
IEVYUEVDVF9TVFJFUSgiaHR0cDovL3NpdGUuY29tXHhFM1x4ODBceDgwb3RoZXJzaXRlLm9yZyIs
IG9yaWdpbmFsRGF0YUFzU3RyaW5nKGxpdGVyYWxVUkwoImh0dHA6Ly9zaXRlLmNvbVx4RTNceDgw
XHg4MG90aGVyc2l0ZS5vcmciKSkpOworICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3NpdGUuY29t
JUUzJTgwJTgwb3RoZXJzaXRlLm9yZyIsIHVzZXJWaXNpYmxlU3RyaW5nKGxpdGVyYWxVUkwoImh0
dHA6Ly9zaXRlLmNvbVx4RTNceDgwXHg4MG90aGVyc2l0ZS5vcmciKSkpOworICAgIEVYUEVDVF9T
VFJFUSgiaHR0cDovL3NpdGUuY29tJUUzJTgwJTgwb3RoZXJzaXRlLm9yZyIsIG9yaWdpbmFsRGF0
YUFzU3RyaW5nKGxpdGVyYWxVUkwoImh0dHA6Ly9zaXRlLmNvbSVFMyU4MCU4MG90aGVyc2l0ZS5v
cmciKSkpOworICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3NpdGUuY29tJUUzJTgwJTgwb3RoZXJz
aXRlLm9yZyIsIHVzZXJWaXNpYmxlU3RyaW5nKGxpdGVyYWxVUkwoImh0dHA6Ly9zaXRlLmNvbSVF
MyU4MCU4MG90aGVyc2l0ZS5vcmciKSkpOworCisgICAgLy8gU2VwYXJhdGUgZnVuY3Rpb25zIHRo
YXQgZGVhbCB3aXRoIGp1c3QgYSBob3N0IG5hbWUgb24gaXRzIG93bi4KKyAgICBFWFBFQ1RfU1RS
RVEoInNpdGUuY29tIG90aGVyc2l0ZS5vcmciLCBbV2ViQ29yZTo6ZW5jb2RlSG9zdE5hbWUoQCJz
aXRlLmNvbVx4RTNceDgwXHg4MG90aGVyc2l0ZS5vcmciKSBVVEY4U3RyaW5nXSk7CisgICAgRVhQ
RUNUX1NUUkVRKCJzaXRlLmNvbVx4RTNceDgwXHg4MG90aGVyc2l0ZS5vcmciLCBbV2ViQ29yZTo6
ZGVjb2RlSG9zdE5hbWUoQCJzaXRlLmNvbVx4RTNceDgwXHg4MG90aGVyc2l0ZS5vcmciKSBVVEY4
U3RyaW5nXSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>
<flag name="review"
          id="253619"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>