<?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>231482</bug_id>
          
          <creation_ts>2021-10-09 15:15:24 -0700</creation_ts>
          <short_desc>[WebXR] Replace the session reference in WebXRSpace subclasses with weak pointers</short_desc>
          <delta_ts>2021-10-10 16:05:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dean Jackson">dino</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1802412</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-10-09 15:15:24 -0700</bug_when>
    <thetext>[WebXR] Replace the session reference in WebXRSpace subclasses with weak pointers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802415</commentid>
    <comment_count>1</comment_count>
      <attachid>440718</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-10-09 15:22:06 -0700</bug_when>
    <thetext>Created attachment 440718
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802419</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-09 15:37:43 -0700</bug_when>
    <thetext>&lt;rdar://problem/84066341&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802425</commentid>
    <comment_count>3</comment_count>
      <attachid>440718</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-10-09 17:39:18 -0700</bug_when>
    <thetext>Comment on attachment 440718
Patch

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

&gt; Source/WebCore/ChangeLog:12
&gt; +        WebXRSpace had a pure virtual session() accessor that returned
&gt; +        a reference to a WebXRSession. This made subclasses hold strong
&gt; +        references to the WebXRSession, and would become problematic
&gt; +        for a WebXRSpace subclass that was (indirectly) owned by the
&gt; +        WebXRSession (found in the Hand Input module).

Pretty sure this was already causing leaks elsewhere for other XRSpaces, like the targetRaySpace and gripSpace in WebXRInputSource.

&gt; Source/WebCore/Modules/webxr/WebXRReferenceSpace.cpp:72
&gt; +    if (!m_session)
&gt; +        return identity;

This feels a bit weird to me. It at least needs a comment explaining itself, but I would assume this would propagate an Exception to the caller.

&gt; Source/WebCore/Modules/webxr/WebXRReferenceSpace.cpp:120
&gt; +    if (!m_session)
&gt; +        return { };

Same as above.

&gt; Source/WebCore/Modules/webxr/WebXRSpace.cpp:61
&gt; +    WebXRSession* xrSession = session();
&gt; +    if (!xrSession)
&gt; +        return false;

Seems like this should be an exception rather than just returning false.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802472</commentid>
    <comment_count>4</comment_count>
      <attachid>440732</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-10-10 11:33:50 -0700</bug_when>
    <thetext>Created attachment 440732
EWS test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802473</commentid>
    <comment_count>5</comment_count>
      <attachid>440718</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-10-10 11:35:13 -0700</bug_when>
    <thetext>Comment on attachment 440718
Patch

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

&gt;&gt; Source/WebCore/Modules/webxr/WebXRReferenceSpace.cpp:72
&gt;&gt; +        return identity;
&gt; 
&gt; This feels a bit weird to me. It at least needs a comment explaining itself, but I would assume this would propagate an Exception to the caller.

Good point. I changed ::nativeOrigin to return an optional&lt;TransformationMatrix&gt;, updated all the subclasses, and return an Exception at the calling site if the session has disappeared.

&gt;&gt; Source/WebCore/Modules/webxr/WebXRReferenceSpace.cpp:120
&gt;&gt; +        return { };
&gt; 
&gt; Same as above.

Ditto.

&gt;&gt; Source/WebCore/Modules/webxr/WebXRSpace.cpp:61
&gt;&gt; +        return false;
&gt; 
&gt; Seems like this should be an exception rather than just returning false.

Done. Similar solution - this returns an optional that ends up returning an exception in the caller.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802491</commentid>
    <comment_count>6</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-10-10 16:05:27 -0700</bug_when>
    <thetext>Committed r283880 (242757@main): &lt;https://commits.webkit.org/242757@main&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440718</attachid>
            <date>2021-10-09 15:22:06 -0700</date>
            <delta_ts>2021-10-09 17:39:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231482-20211010092204.patch</filename>
            <type>text/plain</type>
            <size>18622</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzODY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTc5NWE0MTUzNjlmYjMy
NGEwOGI4ZWNmMWQ0YjAwZmQwZTcyYzk4Ni4uN2E2ZjI1Njg4MjdiNWZlNjI0NWNhMzM2OTEzMDZj
MGNlMTVhNmViNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIxLTEwLTA5ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViWFJdIFJlcGxhY2UgdGhl
IHNlc3Npb24gcmVmZXJlbmNlIGluIFdlYlhSU3BhY2Ugc3ViY2xhc3NlcyB3aXRoIHdlYWsgcG9p
bnRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MTQ4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdl
YlhSU3BhY2UgaGFkIGEgcHVyZSB2aXJ0dWFsIHNlc3Npb24oKSBhY2Nlc3NvciB0aGF0IHJldHVy
bmVkCisgICAgICAgIGEgcmVmZXJlbmNlIHRvIGEgV2ViWFJTZXNzaW9uLiBUaGlzIG1hZGUgc3Vi
Y2xhc3NlcyBob2xkIHN0cm9uZworICAgICAgICByZWZlcmVuY2VzIHRvIHRoZSBXZWJYUlNlc3Np
b24sIGFuZCB3b3VsZCBiZWNvbWUgcHJvYmxlbWF0aWMKKyAgICAgICAgZm9yIGEgV2ViWFJTcGFj
ZSBzdWJjbGFzcyB0aGF0IHdhcyAoaW5kaXJlY3RseSkgb3duZWQgYnkgdGhlCisgICAgICAgIFdl
YlhSU2Vzc2lvbiAoZm91bmQgaW4gdGhlIEhhbmQgSW5wdXQgbW9kdWxlKS4KKworICAgICAgICBD
aGFuZ2UgdGhlIGFjY2Vzc29yIHRvIHJldHVybiBhIHBvaW50ZXIsIGFuZCBhbGwgdGhlIHN1YmNs
YXNzZXMKKyAgICAgICAgdG8gdXNlIHdlYWsgcG9pbnRlcnMgaW5zdGVhZC4KKworICAgICAgICAq
IE1vZHVsZXMvd2VieHIvV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UuaDogVXNlIGEgV2Vha1B0
ciBhbmQgY2hhbmdlCisgICAgICAgIHRoZSBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIgdG8gdGFrZSBh
IHJlZmVyZW5jZSBpbnN0ZWFkIG9mIGEgUmVmPD4uCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9X
ZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkJv
dW5kZWRSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSQm91
bmRlZFJlZmVyZW5jZVNwYWNlOjpXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6Z2V0T2Zmc2V0UmVmZXJlbmNl
U3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OnVw
ZGF0ZUlmTmVlZGVkKTogQWRkIGVhcmx5IHJldHVybi4KKworICAgICAgICAqIE1vZHVsZXMvd2Vi
eHIvV2ViWFJGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkZyYW1lOjpwb3B1bGF0
ZVBvc2UpOiBDb21wYXJlIHBvaW50ZXJzIGRpcmVjdGx5LgorCisgICAgICAgICogTW9kdWxlcy93
ZWJ4ci9XZWJYUklucHV0U3BhY2UuaDogVXNlIFdlYWtQdHIuCisgICAgICAgICogTW9kdWxlcy93
ZWJ4ci9XZWJYUklucHV0U3BhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNw
YWNlOjpXZWJYUklucHV0U3BhY2UpOgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlJl
ZmVyZW5jZVNwYWNlLmg6IFVzZSBhIFdlYWtQdHIgYW5kIGNoYW5nZQorICAgICAgICB0aGUgY29u
c3RydWN0b3IgcGFyYW1ldGVyIHRvIHRha2UgYSByZWZlcmVuY2UgaW5zdGVhZCBvZiBhIFJlZjw+
LgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJSZWZlcmVuY2VTcGFjZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJYUlJlZmVyZW5jZVNwYWNlOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViWFJSZWZlcmVuY2VTcGFjZTo6V2ViWFJSZWZlcmVuY2VTcGFjZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJYUlJlZmVyZW5jZVNwYWNlOjpuYXRpdmVPcmlnaW4gY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViWFJSZWZlcmVuY2VTcGFjZTo6Z2V0T2Zmc2V0UmVmZXJlbmNlU3Bh
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJSZWZlcmVuY2VTcGFjZTo6Zmxvb3JPcmlnaW5U
cmFuc2Zvcm0gY29uc3QpOgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNlLmNw
cDogUmV0dXJuIGEgKiBpbnN0ZWFkIG9mIGEgJi4KKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU3Bh
Y2U6OmlzUG9zaXRpb25FbXVsYXRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlZp
ZXdlclNwYWNlOjpXZWJYUlZpZXdlclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSVmll
d2VyU3BhY2U6Om5hdGl2ZU9yaWdpbiBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9X
ZWJYUlNwYWNlLmg6CisKIDIwMjEtMTAtMDggIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUu
Y29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gc3VwcG9ydCByZW5kZXJpbmcgQXBwbGUgUGF5
IGxvZ29zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSQm91
bmRlZFJlZmVyZW5jZVNwYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UuY3BwCmluZGV4IDhiYTQ3MDgxYjNkMDJiOTFhZTljMzEw
MjA0MDZjYjU5YWNjNTNlMGEuLjhjODAwZDQyNzc5MTUxY2RiMTc3NWJmYzdkMTJjMmNiODRiNDI2
MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJCb3VuZGVk
UmVmZXJlbmNlU3BhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UuY3BwCkBAIC00NCwxOCArNDQsMTggQEAgc3RhdGljIGNv
bnN0ZXhwciBpbnQgTWluaW11bUJvdW5kc1ZlcnRpY2VzID0gMzsKIAogV1RGX01BS0VfSVNPX0FM
TE9DQVRFRF9JTVBMKFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlKTsKIAotUmVmPFdlYlhSQm91
bmRlZFJlZmVyZW5jZVNwYWNlPiBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKERv
Y3VtZW50JiBkb2N1bWVudCwgUmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uLCBYUlJlZmVyZW5j
ZVNwYWNlVHlwZSB0eXBlKQorUmVmPFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlPiBXZWJYUkJv
dW5kZWRSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgV2ViWFJTZXNz
aW9uJiBzZXNzaW9uLCBYUlJlZmVyZW5jZVNwYWNlVHlwZSB0eXBlKQogewotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlKGRvY3VtZW50LCBXVEZNb3Zl
KHNlc3Npb24pLCBXZWJYUlJpZ2lkVHJhbnNmb3JtOjpjcmVhdGUoKSwgdHlwZSkpOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlKGRvY3VtZW50LCBz
ZXNzaW9uLCBXZWJYUlJpZ2lkVHJhbnNmb3JtOjpjcmVhdGUoKSwgdHlwZSkpOwogfQogCi1SZWY8
V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U+IFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjpj
cmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24sIFJl
ZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmIG9mZnNldCwgWFJSZWZlcmVuY2VTcGFjZVR5cGUgdHlw
ZSkKK1JlZjxXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZT4gV2ViWFJCb3VuZGVkUmVmZXJlbmNl
U3BhY2U6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbiwg
UmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYgb2Zmc2V0LCBYUlJlZmVyZW5jZVNwYWNlVHlwZSB0
eXBlKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSQm91bmRlZFJlZmVyZW5jZVNw
YWNlKGRvY3VtZW50LCBXVEZNb3ZlKHNlc3Npb24pLCBXVEZNb3ZlKG9mZnNldCksIHR5cGUpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZShkb2N1
bWVudCwgc2Vzc2lvbiwgV1RGTW92ZShvZmZzZXQpLCB0eXBlKSk7CiB9CiAKLVdlYlhSQm91bmRl
ZFJlZmVyZW5jZVNwYWNlOjpXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZShEb2N1bWVudCYgZG9j
dW1lbnQsIFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbiwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zv
cm0+JiYgb2Zmc2V0LCBYUlJlZmVyZW5jZVNwYWNlVHlwZSB0eXBlKQotICAgIDogV2ViWFJSZWZl
cmVuY2VTcGFjZShkb2N1bWVudCwgV1RGTW92ZShzZXNzaW9uKSwgV1RGTW92ZShvZmZzZXQpLCB0
eXBlKQorV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OldlYlhSQm91bmRlZFJlZmVyZW5jZVNw
YWNlKERvY3VtZW50JiBkb2N1bWVudCwgV2ViWFJTZXNzaW9uJiBzZXNzaW9uLCBSZWY8V2ViWFJS
aWdpZFRyYW5zZm9ybT4mJiBvZmZzZXQsIFhSUmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUpCisgICAg
OiBXZWJYUlJlZmVyZW5jZVNwYWNlKGRvY3VtZW50LCBzZXNzaW9uLCBXVEZNb3ZlKG9mZnNldCks
IHR5cGUpCiB7CiB9CiAKQEAgLTc2LDYgKzc2LDkgQEAgY29uc3QgVmVjdG9yPFJlZjxET01Qb2lu
dFJlYWRPbmx5Pj4mIFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjpib3VuZHNHZW9tZXRyeSgK
IAogRXhjZXB0aW9uT3I8UmVmPFdlYlhSUmVmZXJlbmNlU3BhY2U+PiBXZWJYUkJvdW5kZWRSZWZl
cmVuY2VTcGFjZTo6Z2V0T2Zmc2V0UmVmZXJlbmNlU3BhY2UoY29uc3QgV2ViWFJSaWdpZFRyYW5z
Zm9ybSYgb2Zmc2V0VHJhbnNmb3JtKQogeworICAgIGlmICghbV9zZXNzaW9uKQorICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKwogICAgIGF1dG8qIGRvY3Vt
ZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAg
aWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVy
cm9yIH07CkBAIC04NCwxMiArODcsMTUgQEAgRXhjZXB0aW9uT3I8UmVmPFdlYlhSUmVmZXJlbmNl
U3BhY2U+PiBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6Z2V0T2Zmc2V0UmVmZXIKICAgICAv
LyBTZXQgb2Zmc2V0U3BhY2XigJlzIG9yaWdpbiBvZmZzZXQgdG8gdGhlIHJlc3VsdCBvZiBtdWx0
aXBseWluZyBiYXNl4oCZcyBvcmlnaW4gb2Zmc2V0IGJ5IG9yaWdpbk9mZnNldCBpbiB0aGUgcmVs
ZXZhbnQgcmVhbG0gb2YgYmFzZS4KICAgICBhdXRvIG9mZnNldCA9IFdlYlhSUmlnaWRUcmFuc2Zv
cm06OmNyZWF0ZShvcmlnaW5PZmZzZXQoKS5yYXdUcmFuc2Zvcm0oKSAqIG9mZnNldFRyYW5zZm9y
bS5yYXdUcmFuc2Zvcm0oKSk7CiAKLSAgICByZXR1cm4geyBjcmVhdGUoKmRvY3VtZW50LCBtX3Nl
c3Npb24uY29weVJlZigpLCBXVEZNb3ZlKG9mZnNldCksIG1fdHlwZSkgfTsKKyAgICByZXR1cm4g
eyBjcmVhdGUoKmRvY3VtZW50LCAqbV9zZXNzaW9uLmdldCgpLCBXVEZNb3ZlKG9mZnNldCksIG1f
dHlwZSkgfTsKIH0KIAogLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8j
ZG9tLXhyYm91bmRlZHJlZmVyZW5jZXNwYWNlLWJvdW5kc2dlb21ldHJ5CiB2b2lkIFdlYlhSQm91
bmRlZFJlZmVyZW5jZVNwYWNlOjp1cGRhdGVJZk5lZWRlZCgpCiB7CisgICAgaWYgKCFtX3Nlc3Np
b24pCisgICAgICAgIHJldHVybjsKKwogICAgIGF1dG8mIGZyYW1lRGF0YSA9IG1fc2Vzc2lvbi0+
ZnJhbWVEYXRhKCk7CiAgICAgaWYgKGZyYW1lRGF0YS5zdGFnZVBhcmFtZXRlcnMuaWQgPT0gbV9s
YXN0VXBkYXRlSWQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UuaAppbmRleCBkOTJk
ZTU1ZmE3MzhiYzU5ZDVhNmE0MTFhMWJjYjdmNjQzODQyNmVmLi41NDk4NTI3ZjQ4ZTI2NDdlNGUy
NTU3ZjEwMTZmYTNjMzM3ZjVmN2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5oCkBAIC0zOSw4ICszOSw4
IEBAIGNsYXNzIERPTVBvaW50UmVhZE9ubHk7CiBjbGFzcyBXZWJYUkJvdW5kZWRSZWZlcmVuY2VT
cGFjZSBmaW5hbCA6IHB1YmxpYyBXZWJYUlJlZmVyZW5jZVNwYWNlIHsKICAgICBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEKFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlKTsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlPiBjcmVhdGUoRG9jdW1lbnQmLCBS
ZWY8V2ViWFJTZXNzaW9uPiYmLCBYUlJlZmVyZW5jZVNwYWNlVHlwZSk7Ci0gICAgc3RhdGljIFJl
ZjxXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZT4gY3JlYXRlKERvY3VtZW50JiwgUmVmPFdlYlhS
U2Vzc2lvbj4mJiwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYsIFhSUmVmZXJlbmNlU3BhY2VU
eXBlKTsKKyAgICBzdGF0aWMgUmVmPFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlPiBjcmVhdGUo
RG9jdW1lbnQmLCBXZWJYUlNlc3Npb24mLCBYUlJlZmVyZW5jZVNwYWNlVHlwZSk7CisgICAgc3Rh
dGljIFJlZjxXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZT4gY3JlYXRlKERvY3VtZW50JiwgV2Vi
WFJTZXNzaW9uJiwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYsIFhSUmVmZXJlbmNlU3BhY2VU
eXBlKTsKIAogICAgIHZpcnR1YWwgfldlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlKCk7CiAKQEAg
LTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPFJlZjxXZWJYUlJlZmVyZW5j
ZVNwYWNlPj4gZ2V0T2Zmc2V0UmVmZXJlbmNlU3BhY2UoY29uc3QgV2ViWFJSaWdpZFRyYW5zZm9y
bSYpIGZpbmFsOwogCiBwcml2YXRlOgotICAgIFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlKERv
Y3VtZW50JiwgUmVmPFdlYlhSU2Vzc2lvbj4mJiwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYs
IFhSUmVmZXJlbmNlU3BhY2VUeXBlKTsKKyAgICBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZShE
b2N1bWVudCYsIFdlYlhSU2Vzc2lvbiYsIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmLCBYUlJl
ZmVyZW5jZVNwYWNlVHlwZSk7CiAKICAgICBib29sIGlzQm91bmRlZFJlZmVyZW5jZVNwYWNlKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9XZWJYUkZyYW1lLmNwcAppbmRleCA3ZTdmNjlkYzVhODU2OWI0NjM3NDFlNjcwNGQ1YWU2
NjAwM2FlODU1Li41MmE1MmY3OGFiZjhmY2RjMjA3N2NmYmU0MWRlYWIwNDM1MThlZTUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAKQEAgLTEwNCwxMSAr
MTA0LDExIEBAIEV4Y2VwdGlvbk9yPHN0ZDo6b3B0aW9uYWw8V2ViWFJGcmFtZTo6UG9wdWxhdGVk
UG9zZT4+IFdlYlhSRnJhbWU6OnBvcHVsYXRlUG9zZShjCiAKICAgICAvLyAyLiBMZXQgc2Vzc2lv
biBiZSBmcmFtZeKAmXMgc2Vzc2lvbiBvYmplY3QuCiAgICAgLy8gMy4gSWYgc3BhY2XigJlzIHNl
c3Npb24gZG9lcyBub3QgZXF1YWwgc2Vzc2lvbiwgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Ig
YW5kIGFib3J0IHRoZXNlIHN0ZXBzLgotICAgIGlmICgmc3BhY2Uuc2Vzc2lvbigpICE9IG1fc2Vz
c2lvbi5wdHIoKSkKKyAgICBpZiAoc3BhY2Uuc2Vzc2lvbigpICE9IG1fc2Vzc2lvbi5wdHIoKSkK
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CiAKICAgICAv
LyA0LiBJZiBiYXNlU3BhY2XigJlzIHNlc3Npb24gZG9lcyBub3QgZXF1YWwgc2Vzc2lvbiwgdGhy
b3cgYW4gSW52YWxpZFN0YXRlRXJyb3IgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgotICAgIGlmICgm
YmFzZVNwYWNlLnNlc3Npb24oKSAhPSBtX3Nlc3Npb24ucHRyKCkpCisgICAgaWYgKGJhc2VTcGFj
ZS5zZXNzaW9uKCkgIT0gbV9zZXNzaW9uLnB0cigpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKIAogICAgIC8vIDUuIENoZWNrIGlmIHBvc2VzIG1heSBi
ZSByZXBvcnRlZCBhbmQsIGlmIG5vdCwgdGhyb3cgYSBTZWN1cml0eUVycm9yIGFuZCBhYm9ydCB0
aGVzZSBzdGVwcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJJbnB1dFNwYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1
dFNwYWNlLmNwcAppbmRleCA1NDBkNzFhZTI5OTI4NjdhMzUyMmU2NjYwZjNhMWVhOTBiZDBiMTVl
Li4zNjQxNzg0MGExNDMxZjQwMjI5OGNmZmY3NDkxOGFiOTg5NjY5MDdkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTcGFjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U3BhY2UuY3BwCkBAIC00Niw3ICs0
Niw3IEBAIFJlZjxXZWJYUklucHV0U3BhY2U+IFdlYlhSSW5wdXRTcGFjZTo6Y3JlYXRlKERvY3Vt
ZW50JiBkb2N1bWVudCwgV2ViWFJTZXNzaW9uJiBzCiAKIFdlYlhSSW5wdXRTcGFjZTo6V2ViWFJJ
bnB1dFNwYWNlKERvY3VtZW50JiBkb2N1bWVudCwgV2ViWFJTZXNzaW9uJiBzZXNzaW9uLCBjb25z
dCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VQb3NlJiBwb3NlKQog
ICAgIDogV2ViWFJTcGFjZShkb2N1bWVudCwgV2ViWFJSaWdpZFRyYW5zZm9ybTo6Y3JlYXRlKCkp
Ci0gICAgLCBtX3Nlc3Npb24oc2Vzc2lvbikKKyAgICAsIG1fc2Vzc2lvbihtYWtlV2Vha1B0cigm
c2Vzc2lvbikpCiAgICAgLCBtX3Bvc2UocG9zZSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNwYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTcGFjZS5oCmluZGV4IDE5Mjg5NzkyZWE5NDBlZWZjODUy
NjM0ZGJjN2JkNGQxN2M0YWQ4MzQuLjg2ZTUyYjIxMjQ5Y2ZjZTI2NTFhYzNmZGIzNzc1OTUwMGQx
OTdjNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1
dFNwYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U3Bh
Y2UuaApAQCAtNDksMTMgKzQ5LDEzIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBXZWJYUklu
cHV0U3BhY2UoRG9jdW1lbnQmLCBXZWJYUlNlc3Npb24mLCBjb25zdCBQbGF0Zm9ybVhSOjpEZXZp
Y2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VQb3NlJik7Ci0gICAgV2ViWFJTZXNzaW9uJiBzZXNz
aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXNzaW9uLmdldCgpOyB9CisgICAgV2ViWFJT
ZXNzaW9uKiBzZXNzaW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXNzaW9uLmdldCgpOyB9
CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbmF0aXZlT3JpZ2luKCkgY29uc3QgZmluYWw7CiAK
ICAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQogICAgIHZvaWQgZGVy
ZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQogCi0gICAgUmVmPFdlYlhSU2Vzc2lv
bj4gbV9zZXNzaW9uOworICAgIFdlYWtQdHI8V2ViWFJTZXNzaW9uPiBtX3Nlc3Npb247CiAgICAg
UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlUG9zZSBtX3Bvc2U7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJl
bmNlU3BhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlJlZmVyZW5j
ZVNwYWNlLmNwcAppbmRleCA4MDgzZDNkZTFkMjA0YTlmNzg1NjRmMjA5ZjMwYzJmMmU4Njg1ZGY4
Li4zMzlhNzg1M2Q0YjU3OTJiY2I4Y2ZiNjcyNWViOGE4N2MxYzhmN2ZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNlU3BhY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJSZWZlcmVuY2VTcGFjZS5jcHAKQEAg
LTQwLDIzICs0MCwyMyBAQCBzdGF0aWMgY29uc3RleHByIGRvdWJsZSBEZWZhdWx0VXNlckhlaWdo
dEluTWV0ZXJzID0gMS42NTsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYlhSUmVm
ZXJlbmNlU3BhY2UpOwogCi1SZWY8V2ViWFJSZWZlcmVuY2VTcGFjZT4gV2ViWFJSZWZlcmVuY2VT
cGFjZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNz
aW9uLCBYUlJlZmVyZW5jZVNwYWNlVHlwZSB0eXBlKQorUmVmPFdlYlhSUmVmZXJlbmNlU3BhY2U+
IFdlYlhSUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlhSU2Vz
c2lvbiYgc2Vzc2lvbiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUgdHlwZSkKIHsKICAgICAvLyBodHRw
czovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyN4cnNwYWNlLW5hdGl2ZS1vcmlnaW4K
ICAgICAvLyBUaGUgdHJhbnNmb3JtIGZyb20gdGhlIGVmZmVjdGl2ZSBzcGFjZSB0byB0aGUgbmF0
aXZlIG9yaWdpbidzIHNwYWNlIGlzCiAgICAgLy8gZGVmaW5lZCBieSBhbiBvcmlnaW4gb2Zmc2V0
LCB3aGljaCBpcyBhbiBYUlJpZ2lkVHJhbnNmb3JtIGluaXRpYWxseSBzZXQKICAgICAvLyB0byBh
biBpZGVudGl0eSB0cmFuc2Zvcm0uCi0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJSZWZl
cmVuY2VTcGFjZShkb2N1bWVudCwgV1RGTW92ZShzZXNzaW9uKSwgV2ViWFJSaWdpZFRyYW5zZm9y
bTo6Y3JlYXRlKCksIHR5cGUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUlJlZmVy
ZW5jZVNwYWNlKGRvY3VtZW50LCBzZXNzaW9uLCBXZWJYUlJpZ2lkVHJhbnNmb3JtOjpjcmVhdGUo
KSwgdHlwZSkpOwogfQogCi1SZWY8V2ViWFJSZWZlcmVuY2VTcGFjZT4gV2ViWFJSZWZlcmVuY2VT
cGFjZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNz
aW9uLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiBvZmZzZXQsIFhSUmVmZXJlbmNlU3BhY2VU
eXBlIHR5cGUpCitSZWY8V2ViWFJSZWZlcmVuY2VTcGFjZT4gV2ViWFJSZWZlcmVuY2VTcGFjZTo6
Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgV2ViWFJTZXNzaW9uJiBzZXNzaW9uLCBSZWY8V2Vi
WFJSaWdpZFRyYW5zZm9ybT4mJiBvZmZzZXQsIFhSUmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJSZWZlcmVuY2VTcGFjZShkb2N1bWVudCwg
V1RGTW92ZShzZXNzaW9uKSwgV1RGTW92ZShvZmZzZXQpLCB0eXBlKSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2ViWFJSZWZlcmVuY2VTcGFjZShkb2N1bWVudCwgc2Vzc2lvbiwgV1RGTW92
ZShvZmZzZXQpLCB0eXBlKSk7CiB9CiAKLVdlYlhSUmVmZXJlbmNlU3BhY2U6OldlYlhSUmVmZXJl
bmNlU3BhY2UoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24s
IFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmIG9mZnNldCwgWFJSZWZlcmVuY2VTcGFjZVR5cGUg
dHlwZSkKK1dlYlhSUmVmZXJlbmNlU3BhY2U6OldlYlhSUmVmZXJlbmNlU3BhY2UoRG9jdW1lbnQm
IGRvY3VtZW50LCBXZWJYUlNlc3Npb24mIHNlc3Npb24sIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3Jt
PiYmIG9mZnNldCwgWFJSZWZlcmVuY2VTcGFjZVR5cGUgdHlwZSkKICAgICA6IFdlYlhSU3BhY2Uo
ZG9jdW1lbnQsIFdURk1vdmUob2Zmc2V0KSkKLSAgICAsIG1fc2Vzc2lvbihXVEZNb3ZlKHNlc3Np
b24pKQorICAgICwgbV9zZXNzaW9uKG1ha2VXZWFrUHRyKHNlc3Npb24pKQogICAgICwgbV90eXBl
KHR5cGUpCiB7CiB9CkBAIC02OCw2ICs2OCw5IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4IFdlYlhS
UmVmZXJlbmNlU3BhY2U6Om5hdGl2ZU9yaWdpbigpIGNvbnN0CiB7CiAgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggaWRlbnRpdHk7CiAKKyAgICBpZiAoIW1fc2Vzc2lvbikKKyAgICAgICAgcmV0dXJu
IGlkZW50aXR5OworCiAgICAgLy8gV2UgYXNzdW1lIHRoYXQgcG9zZXMgZ290IGZyb20gdGhlIGRl
dmljZXMgYXJlIGluIGxvY2FsIHNwYWNlLgogICAgIC8vIFRoaXMgd2lsbCByZXF1aXJlIG1vcmUg
Y29tcGxleCBsb2dpYyBpZiB3ZSBhZGQgcG9ydHMgd2l0aCBkaWZmZXJlbnQgZGVmYXVsdCBjb29y
ZGluYXRlcy4KICAgICBzd2l0Y2ggKG1fdHlwZSkgewpAQCAtOTcsNiArMTAwLDkgQEAgVHJhbnNm
b3JtYXRpb25NYXRyaXggV2ViWFJSZWZlcmVuY2VTcGFjZTo6bmF0aXZlT3JpZ2luKCkgY29uc3QK
IAogRXhjZXB0aW9uT3I8UmVmPFdlYlhSUmVmZXJlbmNlU3BhY2U+PiBXZWJYUlJlZmVyZW5jZVNw
YWNlOjpnZXRPZmZzZXRSZWZlcmVuY2VTcGFjZShjb25zdCBXZWJYUlJpZ2lkVHJhbnNmb3JtJiBv
ZmZzZXRUcmFuc2Zvcm0pCiB7CisgICAgaWYgKCFtX3Nlc3Npb24pCisgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCiAgICAgYXV0byogZG9jdW1lbnQgPSBk
b3duY2FzdDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBpZiAoIWRv
Y3VtZW50KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsK
QEAgLTEwNSwxMSArMTExLDE0IEBAIEV4Y2VwdGlvbk9yPFJlZjxXZWJYUlJlZmVyZW5jZVNwYWNl
Pj4gV2ViWFJSZWZlcmVuY2VTcGFjZTo6Z2V0T2Zmc2V0UmVmZXJlbmNlU3BhCiAgICAgLy8gU2V0
IG9mZnNldFNwYWNl4oCZcyBvcmlnaW4gb2Zmc2V0IHRvIHRoZSByZXN1bHQgb2YgbXVsdGlwbHlp
bmcgYmFzZeKAmXMgb3JpZ2luIG9mZnNldCBieSBvcmlnaW5PZmZzZXQgaW4gdGhlIHJlbGV2YW50
IHJlYWxtIG9mIGJhc2UuCiAgICAgYXV0byBvZmZzZXQgPSBXZWJYUlJpZ2lkVHJhbnNmb3JtOjpj
cmVhdGUob3JpZ2luT2Zmc2V0KCkucmF3VHJhbnNmb3JtKCkgKiBvZmZzZXRUcmFuc2Zvcm0ucmF3
VHJhbnNmb3JtKCkpOwogCi0gICAgcmV0dXJuIGNyZWF0ZSgqZG9jdW1lbnQsIG1fc2Vzc2lvbi5j
b3B5UmVmKCksIFdURk1vdmUob2Zmc2V0KSwgbV90eXBlKTsKKyAgICByZXR1cm4gY3JlYXRlKCpk
b2N1bWVudCwgKm1fc2Vzc2lvbi5nZXQoKSwgV1RGTW92ZShvZmZzZXQpLCBtX3R5cGUpOwogfQog
CiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBXZWJYUlJlZmVyZW5jZVNwYWNlOjpmbG9vck9yaWdpblRy
YW5zZm9ybSgpIGNvbnN0CiB7CisgICAgaWYgKCFtX3Nlc3Npb24pCisgICAgICAgIHJldHVybiB7
IH07CisKICAgICBhdXRvJiBkYXRhID0gbV9zZXNzaW9uLT5mcmFtZURhdGEoKTsKICAgICBpZiAo
IWRhdGEuZmxvb3JUcmFuc2Zvcm0pIHsKICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggZGVm
YXV0VHJhbnNmb3JtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUlJlZmVyZW5jZVNwYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
UmVmZXJlbmNlU3BhY2UuaAppbmRleCA5MzQ5NTY0MWQxNDMwZGZjY2EzMzI4OTBlOGMxZDM5Y2Zj
NTg0MGRmLi4zN2VhZTJmYzdmZTRjZTJiYTBiZTNiZjBjNmFjYWUyMDI0ZjY0MWI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNlU3BhY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNlU3BhY2UuaApA
QCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlhSUmVmZXJlbmNlU3BhY2VUeXBlLmgiCiAjaW5j
bHVkZSA8d3RmL0lzb01hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3
dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQwLDI3ICs0MSwyNyBA
QCBjbGFzcyBXZWJYUlNlc3Npb247CiBjbGFzcyBXZWJYUlJlZmVyZW5jZVNwYWNlIDogcHVibGlj
IFJlZkNvdW50ZWQ8V2ViWFJSZWZlcmVuY2VTcGFjZT4sIHB1YmxpYyBXZWJYUlNwYWNlIHsKICAg
ICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdlYlhSUmVmZXJlbmNlU3BhY2UpOwogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8V2ViWFJSZWZlcmVuY2VTcGFjZT4gY3JlYXRlKERvY3VtZW50JiwgUmVm
PFdlYlhSU2Vzc2lvbj4mJiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUpOwotICAgIHN0YXRpYyBSZWY8
V2ViWFJSZWZlcmVuY2VTcGFjZT4gY3JlYXRlKERvY3VtZW50JiwgUmVmPFdlYlhSU2Vzc2lvbj4m
JiwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYsIFhSUmVmZXJlbmNlU3BhY2VUeXBlKTsKKyAg
ICBzdGF0aWMgUmVmPFdlYlhSUmVmZXJlbmNlU3BhY2U+IGNyZWF0ZShEb2N1bWVudCYsIFdlYlhS
U2Vzc2lvbiYsIFhSUmVmZXJlbmNlU3BhY2VUeXBlKTsKKyAgICBzdGF0aWMgUmVmPFdlYlhSUmVm
ZXJlbmNlU3BhY2U+IGNyZWF0ZShEb2N1bWVudCYsIFdlYlhSU2Vzc2lvbiYsIFJlZjxXZWJYUlJp
Z2lkVHJhbnNmb3JtPiYmLCBYUlJlZmVyZW5jZVNwYWNlVHlwZSk7CiAKICAgICB2aXJ0dWFsIH5X
ZWJYUlJlZmVyZW5jZVNwYWNlKCk7CiAKICAgICB1c2luZyBSZWZDb3VudGVkPFdlYlhSUmVmZXJl
bmNlU3BhY2U+OjpyZWY7CiAgICAgdXNpbmcgUmVmQ291bnRlZDxXZWJYUlJlZmVyZW5jZVNwYWNl
Pjo6ZGVyZWY7CiAKLSAgICBXZWJYUlNlc3Npb24mIHNlc3Npb24oKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX3Nlc3Npb24uZ2V0KCk7IH0KKyAgICBXZWJYUlNlc3Npb24qIHNlc3Npb24oKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX3Nlc3Npb24uZ2V0KCk7IH0KICAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBuYXRpdmVPcmlnaW4oKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIEV4Y2VwdGlv
bk9yPFJlZjxXZWJYUlJlZmVyZW5jZVNwYWNlPj4gZ2V0T2Zmc2V0UmVmZXJlbmNlU3BhY2UoY29u
c3QgV2ViWFJSaWdpZFRyYW5zZm9ybSYpOwogICAgIFhSUmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUo
KSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAogcHJvdGVjdGVkOgotICAgIFdlYlhSUmVmZXJl
bmNlU3BhY2UoRG9jdW1lbnQmLCBSZWY8V2ViWFJTZXNzaW9uPiYmLCBSZWY8V2ViWFJSaWdpZFRy
YW5zZm9ybT4mJiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUpOworICAgIFdlYlhSUmVmZXJlbmNlU3Bh
Y2UoRG9jdW1lbnQmLCBXZWJYUlNlc3Npb24mLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiwg
WFJSZWZlcmVuY2VTcGFjZVR5cGUpOwogCiAgICAgYm9vbCBpc1JlZmVyZW5jZVNwYWNlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggZmxv
b3JPcmlnaW5UcmFuc2Zvcm0oKSBjb25zdDsKIAotICAgIFJlZjxXZWJYUlNlc3Npb24+IG1fc2Vz
c2lvbjsKKyAgICBXZWFrUHRyPFdlYlhSU2Vzc2lvbj4gbV9zZXNzaW9uOwogICAgIFhSUmVmZXJl
bmNlU3BhY2VUeXBlIG1fdHlwZTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSU3BhY2UuY3BwCmluZGV4IGZiZGVlZWJkN2JhMzI4MzBiYTY0N2MwOTAwMDhi
NDI4NzY0YTY4M2YuLjAxZDYxM2JkYWY4MDFhMTE3MTFiOWYxMzc3YjUyMjJlOTgxY2Y4YjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNlLmNwcApAQCAtNTYsMTQg
KzU2LDE4IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4IFdlYlhSU3BhY2U6OmVmZmVjdGl2ZU9yaWdp
bigpIGNvbnN0CiAKIGJvb2wgV2ViWFJTcGFjZTo6aXNQb3NpdGlvbkVtdWxhdGVkKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gc2Vzc2lvbigpLmlzUG9zaXRpb25FbXVsYXRlZCgpOworICAgIFdlYlhS
U2Vzc2lvbiogeHJTZXNzaW9uID0gc2Vzc2lvbigpOworICAgIGlmICgheHJTZXNzaW9uKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4geHJTZXNzaW9uLT5pc1Bvc2l0aW9uRW11
bGF0ZWQoKTsKIH0KIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYlhSVmlld2VyU3Bh
Y2UpOwogCiBXZWJYUlZpZXdlclNwYWNlOjpXZWJYUlZpZXdlclNwYWNlKERvY3VtZW50JiBkb2N1
bWVudCwgV2ViWFJTZXNzaW9uJiBzZXNzaW9uKQogICAgIDogV2ViWFJTcGFjZShkb2N1bWVudCwg
V2ViWFJSaWdpZFRyYW5zZm9ybTo6Y3JlYXRlKCkpCi0gICAgLCBtX3Nlc3Npb24oc2Vzc2lvbikK
KyAgICAsIG1fc2Vzc2lvbihtYWtlV2Vha1B0cigmc2Vzc2lvbikpCiB7CiB9CiAKQEAgLTcxLDcg
Kzc1LDkgQEAgV2ViWFJWaWV3ZXJTcGFjZTo6fldlYlhSVmlld2VyU3BhY2UoKSA9IGRlZmF1bHQ7
CiAKIFRyYW5zZm9ybWF0aW9uTWF0cml4IFdlYlhSVmlld2VyU3BhY2U6Om5hdGl2ZU9yaWdpbigp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdlYlhSRnJhbWU6Om1hdHJpeEZyb21Qb3NlKG1fc2Vzc2lv
bi5mcmFtZURhdGEoKS5vcmlnaW4pOworICAgIGlmICghbV9zZXNzaW9uKQorICAgICAgICByZXR1
cm4geyB9OworICAgIHJldHVybiBXZWJYUkZyYW1lOjptYXRyaXhGcm9tUG9zZShtX3Nlc3Npb24t
PmZyYW1lRGF0YSgpLm9yaWdpbik7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSU3BhY2UuaAppbmRleCBkOGY4OGVhNThiOTU4NDUxOGQ0NzY1NDBlZGM4ZGRkYjE5Njc5
ZGI0Li4xZDFiNzM2YmQyM2QxNTE3N2QwYWY3OGY3ZTIwNmJlODhjYTkxY2UwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3BhY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3BhY2UuaApAQCAtMzAsNiArMzAsNyBAQAogI2lu
Y2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJn
ZXQuaCIKICNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgorI2luY2x1ZGUgIldlYlhS
U2Vzc2lvbi5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTM3LDE0ICszOCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEb2N1
bWVudDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBXZWJYUlJpZ2lkVHJh
bnNmb3JtOwotY2xhc3MgV2ViWFJTZXNzaW9uOwogCiBjbGFzcyBXZWJYUlNwYWNlIDogcHVibGlj
IEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNl
cnZlciB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChXZWJYUlNwYWNlKTsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5XZWJYUlNwYWNlKCk7CiAKLSAgICB2aXJ0dWFsIFdlYlhSU2Vzc2lvbiYg
c2Vzc2lvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFdlYlhSU2Vzc2lvbiogc2Vzc2lvbigp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFRyYW5zZm9ybWF0aW9uTWF0cml4IG5hdGl2ZU9yaWdp
bigpIGNvbnN0ID0gMDsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBlZmZlY3RpdmVPcmlnaW4o
KSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNQb3NpdGlvbkVtdWxhdGVkKCkgY29uc3Q7CkBA
IC03NywxMyArNzcsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfldlYlhSVmlld2VyU3BhY2Uo
KTsKIAogcHJpdmF0ZToKLSAgICBXZWJYUlNlc3Npb24mIHNlc3Npb24oKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX3Nlc3Npb247IH0KKyAgICBXZWJYUlNlc3Npb24qIHNlc3Npb24oKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX3Nlc3Npb24uZ2V0KCk7IH0KICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBuYXRpdmVPcmlnaW4oKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQo
KSBmaW5hbCB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2b2lkIGRlcmVm
RXZlbnRUYXJnZXQoKSBmaW5hbCB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAot
ICAgIFdlYlhSU2Vzc2lvbiYgbV9zZXNzaW9uOworICAgIFdlYWtQdHI8V2ViWFJTZXNzaW9uPiBt
X3Nlc3Npb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>
<flag name="review"
          id="464750"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440732</attachid>
            <date>2021-10-10 11:33:50 -0700</date>
            <delta_ts>2021-10-10 11:33:50 -0700</delta_ts>
            <desc>EWS test</desc>
            <filename>bug-231482-20211011053348.patch</filename>
            <type>text/plain</type>
            <size>22868</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzODY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTc5NWE0MTUzNjlmYjMy
NGEwOGI4ZWNmMWQ0YjAwZmQwZTcyYzk4Ni4uNDI5ZThjNWZlZGU0YTM0OTI3NGM5MmVhNTY3YjAz
MmY5NTk1MDgzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDIxLTEwLTA5ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViWFJdIFJlcGxhY2UgdGhl
IHNlc3Npb24gcmVmZXJlbmNlIGluIFdlYlhSU3BhY2Ugc3ViY2xhc3NlcyB3aXRoIHdlYWsgcG9p
bnRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MTQ4MgorCisgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCisKKyAgICAgICAgV2ViWFJT
cGFjZSBoYWQgYSBwdXJlIHZpcnR1YWwgc2Vzc2lvbigpIGFjY2Vzc29yIHRoYXQgcmV0dXJuZWQg
YQorICAgICAgICByZWZlcmVuY2UgdG8gYSBXZWJYUlNlc3Npb24uIFRoaXMgbWFkZSBzdWJjbGFz
c2VzIGhvbGQgc3Ryb25nCisgICAgICAgIHJlZmVyZW5jZXMgdG8gdGhlIFdlYlhSU2Vzc2lvbiwg
YW5kIGlzIHByb2JsZW1hdGljIGZvciBXZWJYUlNwYWNlCisgICAgICAgIHN1YmNsYXNzZXMgdGhh
dCBhcmUgKGluZGlyZWN0bHkpIG93bmVkIGJ5IHRoZSBXZWJYUlNlc3Npb24uCisKKyAgICAgICAg
Q2hhbmdlIHRoZSBhY2Nlc3NvciB0byByZXR1cm4gYSBwb2ludGVyLCBhbmQgYWxsIHRoZSBzdWJj
bGFzc2VzCisgICAgICAgIHRvIHVzZSB3ZWFrIHBvaW50ZXJzIGluc3RlYWQuCisKKyAgICAgICAg
KiBNb2R1bGVzL3dlYnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmg6IFVzZSBhIFdlYWtQ
dHIgYW5kIGNoYW5nZQorICAgICAgICB0aGUgY29uc3RydWN0b3IgcGFyYW1ldGVyIHRvIHRha2Ug
YSByZWZlcmVuY2UgaW5zdGVhZCBvZiBhIFJlZjw+LgorICAgICAgICAqIE1vZHVsZXMvd2VieHIv
V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJC
b3VuZGVkUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkJv
dW5kZWRSZWZlcmVuY2VTcGFjZTo6V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OmdldE9mZnNldFJlZmVyZW5j
ZVNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjp1
cGRhdGVJZk5lZWRlZCk6IEFkZCBlYXJseSByZXR1cm4uCisKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnhyL1dlYlhSRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJGcmFtZTo6cG9wdWxh
dGVQb3NlKTogQ29tcGFyZSBwb2ludGVycyBkaXJlY3RseS4KKworICAgICAgICAqIE1vZHVsZXMv
d2VieHIvV2ViWFJJbnB1dFNwYWNlLmg6IFVzZSBXZWFrUHRyLgorICAgICAgICAqIE1vZHVsZXMv
d2VieHIvV2ViWFJJbnB1dFNwYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSW5wdXRT
cGFjZTo6V2ViWFJJbnB1dFNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSW5wdXRTcGFj
ZTo6bmF0aXZlT3JpZ2luIGNvbnN0KTogQ2hhbmdlIHRoaXMgdG8gcmV0dXJuIGFuCisgICAgICAg
IG9wdGlvbmFsIHNvIHdlIGNhbiBkZXRlY3QgZXJyb3JzIGFuZCByYWlzZSBFeGNlcHRpb25zLgor
CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmg6IFVzZSBhIFdl
YWtQdHIgYW5kIGNoYW5nZQorICAgICAgICB0aGUgY29uc3RydWN0b3IgcGFyYW1ldGVyIHRvIHRh
a2UgYSByZWZlcmVuY2UgaW5zdGVhZCBvZiBhIFJlZjw+LgorICAgICAgICAqIE1vZHVsZXMvd2Vi
eHIvV2ViWFJSZWZlcmVuY2VTcGFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlJlZmVy
ZW5jZVNwYWNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJSZWZlcmVuY2VTcGFj
ZTo6V2ViWFJSZWZlcmVuY2VTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlJlZmVyZW5j
ZVNwYWNlOjpuYXRpdmVPcmlnaW4gY29uc3QpOiBSZXR1cm4gYW4gb3B0aW9uYWwuCisgICAgICAg
IChXZWJDb3JlOjpXZWJYUlJlZmVyZW5jZVNwYWNlOjpnZXRPZmZzZXRSZWZlcmVuY2VTcGFjZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlJlZmVyZW5jZVNwYWNlOjpmbG9vck9yaWdpblRyYW5z
Zm9ybSBjb25zdCk6IFJldHVybiBhbiBvcHRpb25hbC4KKworICAgICAgICAqIE1vZHVsZXMvd2Vi
eHIvV2ViWFJTcGFjZS5jcHA6IFJldHVybiBhICogaW5zdGVhZCBvZiBhICYuCisgICAgICAgIChX
ZWJDb3JlOjpXZWJYUlNwYWNlOjppc1Bvc2l0aW9uRW11bGF0ZWQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViWFJWaWV3ZXJTcGFjZTo6V2ViWFJWaWV3ZXJTcGFjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJYUlZpZXdlclNwYWNlOjpuYXRpdmVPcmlnaW4gY29uc3QpOgorICAgICAgICAq
IE1vZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5oOgorCiAyMDIxLTEwLTA4ICBEZXZpbiBSb3Vzc28g
IDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIHN1cHBvcnQgcmVu
ZGVyaW5nIEFwcGxlIFBheSBsb2dvcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmNwcAppbmRleCA4YmE0NzA4
MWIzZDAyYjkxYWU5YzMxMDIwNDA2Y2I1OWFjYzUzZTBhLi4xNjExZmM5ZTNmNjNjOTA4MWZkNmJh
NGQ5NDQxZDY4ODUzYjE0YzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmNwcApAQCAtNDQsMjQgKzQ0
LDI0IEBAIHN0YXRpYyBjb25zdGV4cHIgaW50IE1pbmltdW1Cb3VuZHNWZXJ0aWNlcyA9IDM7CiAK
IFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZSk7
CiAKLVJlZjxXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZT4gV2ViWFJCb3VuZGVkUmVmZXJlbmNl
U3BhY2U6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vz
c2lvbiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUgdHlwZSkKK1JlZjxXZWJYUkJvdW5kZWRSZWZlcmVu
Y2VTcGFjZT4gV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShEb2N1bWVudCYgZG9j
dW1lbnQsIFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUgdHlwZSkK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZShk
b2N1bWVudCwgV1RGTW92ZShzZXNzaW9uKSwgV2ViWFJSaWdpZFRyYW5zZm9ybTo6Y3JlYXRlKCks
IHR5cGUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUkJvdW5kZWRSZWZlcmVuY2VT
cGFjZShkb2N1bWVudCwgc2Vzc2lvbiwgV2ViWFJSaWdpZFRyYW5zZm9ybTo6Y3JlYXRlKCksIHR5
cGUpKTsKIH0KIAotUmVmPFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlPiBXZWJYUkJvdW5kZWRS
ZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFdlYlhSU2Vzc2lv
bj4mJiBzZXNzaW9uLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiBvZmZzZXQsIFhSUmVmZXJl
bmNlU3BhY2VUeXBlIHR5cGUpCitSZWY8V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U+IFdlYlhS
Qm91bmRlZFJlZmVyZW5jZVNwYWNlOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJYUlNl
c3Npb24mIHNlc3Npb24sIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmIG9mZnNldCwgWFJSZWZl
cmVuY2VTcGFjZVR5cGUgdHlwZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUkJv
dW5kZWRSZWZlcmVuY2VTcGFjZShkb2N1bWVudCwgV1RGTW92ZShzZXNzaW9uKSwgV1RGTW92ZShv
ZmZzZXQpLCB0eXBlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJCb3VuZGVkUmVm
ZXJlbmNlU3BhY2UoZG9jdW1lbnQsIHNlc3Npb24sIFdURk1vdmUob2Zmc2V0KSwgdHlwZSkpOwog
fQogCi1XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3Bh
Y2UoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24sIFJlZjxX
ZWJYUlJpZ2lkVHJhbnNmb3JtPiYmIG9mZnNldCwgWFJSZWZlcmVuY2VTcGFjZVR5cGUgdHlwZSkK
LSAgICA6IFdlYlhSUmVmZXJlbmNlU3BhY2UoZG9jdW1lbnQsIFdURk1vdmUoc2Vzc2lvbiksIFdU
Rk1vdmUob2Zmc2V0KSwgdHlwZSkKK1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjpXZWJYUkJv
dW5kZWRSZWZlcmVuY2VTcGFjZShEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlhSU2Vzc2lvbiYgc2Vz
c2lvbiwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYgb2Zmc2V0LCBYUlJlZmVyZW5jZVNwYWNl
VHlwZSB0eXBlKQorICAgIDogV2ViWFJSZWZlcmVuY2VTcGFjZShkb2N1bWVudCwgc2Vzc2lvbiwg
V1RGTW92ZShvZmZzZXQpLCB0eXBlKQogewogfQogCiBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFj
ZTo6fldlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlKCkgPSBkZWZhdWx0OwogCi1UcmFuc2Zvcm1h
dGlvbk1hdHJpeCBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6bmF0aXZlT3JpZ2luKCkgY29u
c3QKK3N0ZDo6b3B0aW9uYWw8VHJhbnNmb3JtYXRpb25NYXRyaXg+IFdlYlhSQm91bmRlZFJlZmVy
ZW5jZVNwYWNlOjpuYXRpdmVPcmlnaW4oKSBjb25zdAogewogICAgIC8vIGh0dHBzOi8vaW1tZXJz
aXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2RvbS14cnJlZmVyZW5jZXNwYWNldHlwZS1ib3VuZGVk
LWZsb29yLgogICAgIC8vIEJvdW5kZWQgZmxvb3Igc3BhY2Ugc2hvdWxkIGJlIGF0IHRoZSBzYW1l
IGhlaWdodCBhcyBsb2NhbCBmbG9vciBzcGFjZS4KQEAgLTc2LDYgKzc2LDkgQEAgY29uc3QgVmVj
dG9yPFJlZjxET01Qb2ludFJlYWRPbmx5Pj4mIFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjpi
b3VuZHNHZW9tZXRyeSgKIAogRXhjZXB0aW9uT3I8UmVmPFdlYlhSUmVmZXJlbmNlU3BhY2U+PiBX
ZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6Z2V0T2Zmc2V0UmVmZXJlbmNlU3BhY2UoY29uc3Qg
V2ViWFJSaWdpZFRyYW5zZm9ybSYgb2Zmc2V0VHJhbnNmb3JtKQogeworICAgIGlmICghbV9zZXNz
aW9uKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKwog
ICAgIGF1dG8qIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSk7CiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IEludmFsaWRTdGF0ZUVycm9yIH07CkBAIC04NCwxMiArODcsMTUgQEAgRXhjZXB0aW9uT3I8UmVm
PFdlYlhSUmVmZXJlbmNlU3BhY2U+PiBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6Z2V0T2Zm
c2V0UmVmZXIKICAgICAvLyBTZXQgb2Zmc2V0U3BhY2XigJlzIG9yaWdpbiBvZmZzZXQgdG8gdGhl
IHJlc3VsdCBvZiBtdWx0aXBseWluZyBiYXNl4oCZcyBvcmlnaW4gb2Zmc2V0IGJ5IG9yaWdpbk9m
ZnNldCBpbiB0aGUgcmVsZXZhbnQgcmVhbG0gb2YgYmFzZS4KICAgICBhdXRvIG9mZnNldCA9IFdl
YlhSUmlnaWRUcmFuc2Zvcm06OmNyZWF0ZShvcmlnaW5PZmZzZXQoKS5yYXdUcmFuc2Zvcm0oKSAq
IG9mZnNldFRyYW5zZm9ybS5yYXdUcmFuc2Zvcm0oKSk7CiAKLSAgICByZXR1cm4geyBjcmVhdGUo
KmRvY3VtZW50LCBtX3Nlc3Npb24uY29weVJlZigpLCBXVEZNb3ZlKG9mZnNldCksIG1fdHlwZSkg
fTsKKyAgICByZXR1cm4geyBjcmVhdGUoKmRvY3VtZW50LCAqbV9zZXNzaW9uLmdldCgpLCBXVEZN
b3ZlKG9mZnNldCksIG1fdHlwZSkgfTsKIH0KIAogLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdp
dGh1Yi5pby93ZWJ4ci8jZG9tLXhyYm91bmRlZHJlZmVyZW5jZXNwYWNlLWJvdW5kc2dlb21ldHJ5
CiB2b2lkIFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjp1cGRhdGVJZk5lZWRlZCgpCiB7Cisg
ICAgaWYgKCFtX3Nlc3Npb24pCisgICAgICAgIHJldHVybjsKKwogICAgIGF1dG8mIGZyYW1lRGF0
YSA9IG1fc2Vzc2lvbi0+ZnJhbWVEYXRhKCk7CiAgICAgaWYgKGZyYW1lRGF0YS5zdGFnZVBhcmFt
ZXRlcnMuaWQgPT0gbV9sYXN0VXBkYXRlSWQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3Bh
Y2UuaAppbmRleCBkOTJkZTU1ZmE3MzhiYzU5ZDVhNmE0MTFhMWJjYjdmNjQzODQyNmVmLi44YTRj
Y2JmNmM4ODMwZGExYTFlNWYwODc1OTU1YmFjOTU3N2FiM2I0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5o
CkBAIC0zOSwxNyArMzksMTcgQEAgY2xhc3MgRE9NUG9pbnRSZWFkT25seTsKIGNsYXNzIFdlYlhS
Qm91bmRlZFJlZmVyZW5jZVNwYWNlIGZpbmFsIDogcHVibGljIFdlYlhSUmVmZXJlbmNlU3BhY2Ug
ewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2Up
OwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U+IGNy
ZWF0ZShEb2N1bWVudCYsIFJlZjxXZWJYUlNlc3Npb24+JiYsIFhSUmVmZXJlbmNlU3BhY2VUeXBl
KTsKLSAgICBzdGF0aWMgUmVmPFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlPiBjcmVhdGUoRG9j
dW1lbnQmLCBSZWY8V2ViWFJTZXNzaW9uPiYmLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiwg
WFJSZWZlcmVuY2VTcGFjZVR5cGUpOworICAgIHN0YXRpYyBSZWY8V2ViWFJCb3VuZGVkUmVmZXJl
bmNlU3BhY2U+IGNyZWF0ZShEb2N1bWVudCYsIFdlYlhSU2Vzc2lvbiYsIFhSUmVmZXJlbmNlU3Bh
Y2VUeXBlKTsKKyAgICBzdGF0aWMgUmVmPFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlPiBjcmVh
dGUoRG9jdW1lbnQmLCBXZWJYUlNlc3Npb24mLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiwg
WFJSZWZlcmVuY2VTcGFjZVR5cGUpOwogCiAgICAgdmlydHVhbCB+V2ViWFJCb3VuZGVkUmVmZXJl
bmNlU3BhY2UoKTsKIAotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG5hdGl2ZU9yaWdpbigpIGNv
bnN0IGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8VHJhbnNmb3JtYXRpb25NYXRyaXg+IG5hdGl2
ZU9yaWdpbigpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFZlY3RvcjxSZWY8RE9NUG9pbnRSZWFk
T25seT4+JiBib3VuZHNHZW9tZXRyeSgpOwogICAgIEV4Y2VwdGlvbk9yPFJlZjxXZWJYUlJlZmVy
ZW5jZVNwYWNlPj4gZ2V0T2Zmc2V0UmVmZXJlbmNlU3BhY2UoY29uc3QgV2ViWFJSaWdpZFRyYW5z
Zm9ybSYpIGZpbmFsOwogCiBwcml2YXRlOgotICAgIFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNl
KERvY3VtZW50JiwgUmVmPFdlYlhSU2Vzc2lvbj4mJiwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+
JiYsIFhSUmVmZXJlbmNlU3BhY2VUeXBlKTsKKyAgICBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFj
ZShEb2N1bWVudCYsIFdlYlhSU2Vzc2lvbiYsIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmLCBY
UlJlZmVyZW5jZVNwYWNlVHlwZSk7CiAKICAgICBib29sIGlzQm91bmRlZFJlZmVyZW5jZVNwYWNl
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUkZyYW1lLmNwcAppbmRleCA3ZTdmNjlkYzVhODU2OWI0NjM3NDFlNjcwNGQ1
YWU2NjAwM2FlODU1Li43NDIzNmZiMGY0ZTU5MGY1YWQ0MmI3OTNmMTUwYmZlZWZjNzY0YmNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAKQEAgLTEwNCwx
MSArMTA0LDExIEBAIEV4Y2VwdGlvbk9yPHN0ZDo6b3B0aW9uYWw8V2ViWFJGcmFtZTo6UG9wdWxh
dGVkUG9zZT4+IFdlYlhSRnJhbWU6OnBvcHVsYXRlUG9zZShjCiAKICAgICAvLyAyLiBMZXQgc2Vz
c2lvbiBiZSBmcmFtZeKAmXMgc2Vzc2lvbiBvYmplY3QuCiAgICAgLy8gMy4gSWYgc3BhY2XigJlz
IHNlc3Npb24gZG9lcyBub3QgZXF1YWwgc2Vzc2lvbiwgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJy
b3IgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgotICAgIGlmICgmc3BhY2Uuc2Vzc2lvbigpICE9IG1f
c2Vzc2lvbi5wdHIoKSkKKyAgICBpZiAoc3BhY2Uuc2Vzc2lvbigpICE9IG1fc2Vzc2lvbi5wdHIo
KSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CiAKICAg
ICAvLyA0LiBJZiBiYXNlU3BhY2XigJlzIHNlc3Npb24gZG9lcyBub3QgZXF1YWwgc2Vzc2lvbiwg
dGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3IgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgotICAgIGlm
ICgmYmFzZVNwYWNlLnNlc3Npb24oKSAhPSBtX3Nlc3Npb24ucHRyKCkpCisgICAgaWYgKGJhc2VT
cGFjZS5zZXNzaW9uKCkgIT0gbV9zZXNzaW9uLnB0cigpKQogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKIAogICAgIC8vIDUuIENoZWNrIGlmIHBvc2VzIG1h
eSBiZSByZXBvcnRlZCBhbmQsIGlmIG5vdCwgdGhyb3cgYSBTZWN1cml0eUVycm9yIGFuZCBhYm9y
dCB0aGVzZSBzdGVwcy4KQEAgLTEyNywxMSArMTI3LDI3IEBAIEV4Y2VwdGlvbk9yPHN0ZDo6b3B0
aW9uYWw8V2ViWFJGcmFtZTo6UG9wdWxhdGVkUG9zZT4+IFdlYlhSRnJhbWU6OnBvcHVsYXRlUG9z
ZShjCiAgICAgfQogCiAgICAgYXV0byBiYXNlVHJhbnNmb3JtID0gYmFzZVNwYWNlLmVmZmVjdGl2
ZU9yaWdpbigpOwotICAgIGlmICghYmFzZVRyYW5zZm9ybS5pc0ludmVydGlibGUoKSkKKyAgICBp
ZiAoIWJhc2VUcmFuc2Zvcm0pCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3Rh
dGVFcnJvciB9OworCisgICAgaWYgKCFiYXNlVHJhbnNmb3JtLnZhbHVlKCkuaXNJbnZlcnRpYmxl
KCkpCiAgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCB9OwogCi0gICAgYXV0byB0cmFuc2Zv
cm0gPSAgKmJhc2VUcmFuc2Zvcm0uaW52ZXJzZSgpICogc3BhY2UuZWZmZWN0aXZlT3JpZ2luKCk7
Ci0gICAgYm9vbCBlbXVsYXRlZFBvc2l0aW9uID0gc3BhY2UuaXNQb3NpdGlvbkVtdWxhdGVkKCkg
fHwgYmFzZVNwYWNlLmlzUG9zaXRpb25FbXVsYXRlZCgpOworICAgIGF1dG8gZWZmZWN0aXZlT3Jp
Z2luID0gc3BhY2UuZWZmZWN0aXZlT3JpZ2luKCk7CisgICAgaWYgKCFlZmZlY3RpdmVPcmlnaW4p
CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAg
YXV0byB0cmFuc2Zvcm0gPSAgKmJhc2VUcmFuc2Zvcm0udmFsdWUoKS5pbnZlcnNlKCkgKiBlZmZl
Y3RpdmVPcmlnaW4udmFsdWUoKTsKKworICAgIGF1dG8gaXNQb3NpdGlvbkVtdWxhdGVkID0gc3Bh
Y2UuaXNQb3NpdGlvbkVtdWxhdGVkKCk7CisgICAgaWYgKCFpc1Bvc2l0aW9uRW11bGF0ZWQpCisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgYXV0
byBiYXNlU3BhY2VJc1Bvc2l0aW9uRW11bGF0ZWQgPSBiYXNlU3BhY2UuaXNQb3NpdGlvbkVtdWxh
dGVkKCk7CisgICAgaWYgKCFiYXNlU3BhY2VJc1Bvc2l0aW9uRW11bGF0ZWQpCisgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgYm9vbCBlbXVsYXRl
ZFBvc2l0aW9uID0gaXNQb3NpdGlvbkVtdWxhdGVkLnZhbHVlKCkgfHwgYmFzZVNwYWNlSXNQb3Np
dGlvbkVtdWxhdGVkLnZhbHVlKCk7CiAKICAgICBib29sIGxpbWl0ID0gbXVzdFBvc2VzQmVMaW1p
dGVkKHNwYWNlLCBiYXNlU3BhY2UpOwogICAgIGlmIChsaW1pdCkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U3BhY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U3BhY2UuY3BwCmluZGV4IDU0MGQ3MWFlMjk5
Mjg2N2EzNTIyZTY2NjBmM2ExZWE5MGJkMGIxNWUuLjQzZjM2MjNiNmYwMTk5Yjc1YTQxNWQzZTY2
OWU0MWE1NjdjMDQzNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIv
V2ViWFJJbnB1dFNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSSW5wdXRTcGFjZS5jcHAKQEAgLTQ2LDE0ICs0NiwxNCBAQCBSZWY8V2ViWFJJbnB1dFNwYWNl
PiBXZWJYUklucHV0U3BhY2U6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlhSU2Vzc2lv
biYgcwogCiBXZWJYUklucHV0U3BhY2U6OldlYlhSSW5wdXRTcGFjZShEb2N1bWVudCYgZG9jdW1l
bnQsIFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFt
ZURhdGE6OklucHV0U291cmNlUG9zZSYgcG9zZSkKICAgICA6IFdlYlhSU3BhY2UoZG9jdW1lbnQs
IFdlYlhSUmlnaWRUcmFuc2Zvcm06OmNyZWF0ZSgpKQotICAgICwgbV9zZXNzaW9uKHNlc3Npb24p
CisgICAgLCBtX3Nlc3Npb24obWFrZVdlYWtQdHIoJnNlc3Npb24pKQogICAgICwgbV9wb3NlKHBv
c2UpCiB7CiB9CiAKIFdlYlhSSW5wdXRTcGFjZTo6fldlYlhSSW5wdXRTcGFjZSgpID0gZGVmYXVs
dDsKIAotVHJhbnNmb3JtYXRpb25NYXRyaXggV2ViWFJJbnB1dFNwYWNlOjpuYXRpdmVPcmlnaW4o
KSBjb25zdAorc3RkOjpvcHRpb25hbDxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4gV2ViWFJJbnB1dFNw
YWNlOjpuYXRpdmVPcmlnaW4oKSBjb25zdAogewogICAgIHJldHVybiBXZWJYUkZyYW1lOjptYXRy
aXhGcm9tUG9zZShtX3Bvc2UucG9zZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTcGFjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9XZWJYUklucHV0U3BhY2UuaAppbmRleCAxOTI4OTc5MmVhOTQwZWVmYzg1MjYzNGRiYzdi
ZDRkMTdjNGFkODM0Li5mYjQ3ZjEyMDcxOTJjMjA4MTc4NzEzMDgzNjYxNTkyN2VhMDJkNmViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTcGFjZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNwYWNlLmgKQEAg
LTQ0LDE4ICs0NCwxOCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUmVmQ291bnRlZDxXZWJYUklucHV0
U3BhY2U+OjpyZWY7CiAgICAgdXNpbmcgUmVmQ291bnRlZDxXZWJYUklucHV0U3BhY2U+OjpkZXJl
ZjsKIAotICAgIGJvb2wgaXNQb3NpdGlvbkVtdWxhdGVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9wb3NlLmlzUG9zaXRpb25FbXVsYXRlZDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNQ
b3NpdGlvbkVtdWxhdGVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wb3NlLmlzUG9zaXRpb25F
bXVsYXRlZDsgfQogICAgIHZvaWQgc2V0UG9zZShjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZy
YW1lRGF0YTo6SW5wdXRTb3VyY2VQb3NlJiBwb3NlKSB7IG1fcG9zZSA9IHBvc2U7IH0KIAogcHJp
dmF0ZToKICAgICBXZWJYUklucHV0U3BhY2UoRG9jdW1lbnQmLCBXZWJYUlNlc3Npb24mLCBjb25z
dCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VQb3NlJik7Ci0gICAg
V2ViWFJTZXNzaW9uJiBzZXNzaW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXNzaW9uLmdl
dCgpOyB9Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbmF0aXZlT3JpZ2luKCkgY29uc3QgZmlu
YWw7CisgICAgV2ViWFJTZXNzaW9uKiBzZXNzaW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9z
ZXNzaW9uLmdldCgpOyB9CisgICAgc3RkOjpvcHRpb25hbDxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4g
bmF0aXZlT3JpZ2luKCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkg
ZmluYWwgeyByZWYoKTsgfQogICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVy
ZWYoKTsgfQogCi0gICAgUmVmPFdlYlhSU2Vzc2lvbj4gbV9zZXNzaW9uOworICAgIFdlYWtQdHI8
V2ViWFJTZXNzaW9uPiBtX3Nlc3Npb247CiAgICAgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURh
dGE6OklucHV0U291cmNlUG9zZSBtX3Bvc2U7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNlU3BhY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmNwcAppbmRleCA4MDgzZDNkZTFk
MjA0YTlmNzg1NjRmMjA5ZjMwYzJmMmU4Njg1ZGY4Li45NWY3ZDI4NzY0NTI0MzliNzI1ZjRmM2E1
ZTZjMDZjODk1ZGE3ZTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSUmVmZXJlbmNlU3BhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJSZWZlcmVuY2VTcGFjZS5jcHAKQEAgLTQwLDIzICs0MCwyMyBAQCBzdGF0aWMgY29u
c3RleHByIGRvdWJsZSBEZWZhdWx0VXNlckhlaWdodEluTWV0ZXJzID0gMS42NTsKIAogV1RGX01B
S0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYlhSUmVmZXJlbmNlU3BhY2UpOwogCi1SZWY8V2ViWFJS
ZWZlcmVuY2VTcGFjZT4gV2ViWFJSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1
bWVudCwgUmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uLCBYUlJlZmVyZW5jZVNwYWNlVHlwZSB0
eXBlKQorUmVmPFdlYlhSUmVmZXJlbmNlU3BhY2U+IFdlYlhSUmVmZXJlbmNlU3BhY2U6OmNyZWF0
ZShEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbiwgWFJSZWZlcmVuY2VT
cGFjZVR5cGUgdHlwZSkKIHsKICAgICAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlv
L3dlYnhyLyN4cnNwYWNlLW5hdGl2ZS1vcmlnaW4KICAgICAvLyBUaGUgdHJhbnNmb3JtIGZyb20g
dGhlIGVmZmVjdGl2ZSBzcGFjZSB0byB0aGUgbmF0aXZlIG9yaWdpbidzIHNwYWNlIGlzCiAgICAg
Ly8gZGVmaW5lZCBieSBhbiBvcmlnaW4gb2Zmc2V0LCB3aGljaCBpcyBhbiBYUlJpZ2lkVHJhbnNm
b3JtIGluaXRpYWxseSBzZXQKICAgICAvLyB0byBhbiBpZGVudGl0eSB0cmFuc2Zvcm0uCi0gICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJSZWZlcmVuY2VTcGFjZShkb2N1bWVudCwgV1RGTW92
ZShzZXNzaW9uKSwgV2ViWFJSaWdpZFRyYW5zZm9ybTo6Y3JlYXRlKCksIHR5cGUpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUlJlZmVyZW5jZVNwYWNlKGRvY3VtZW50LCBzZXNzaW9u
LCBXZWJYUlJpZ2lkVHJhbnNmb3JtOjpjcmVhdGUoKSwgdHlwZSkpOwogfQogCi1SZWY8V2ViWFJS
ZWZlcmVuY2VTcGFjZT4gV2ViWFJSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1
bWVudCwgUmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9y
bT4mJiBvZmZzZXQsIFhSUmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUpCitSZWY8V2ViWFJSZWZlcmVu
Y2VTcGFjZT4gV2ViWFJSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwg
V2ViWFJTZXNzaW9uJiBzZXNzaW9uLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiBvZmZzZXQs
IFhSUmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V2ViWFJSZWZlcmVuY2VTcGFjZShkb2N1bWVudCwgV1RGTW92ZShzZXNzaW9uKSwgV1RGTW92ZShv
ZmZzZXQpLCB0eXBlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJSZWZlcmVuY2VT
cGFjZShkb2N1bWVudCwgc2Vzc2lvbiwgV1RGTW92ZShvZmZzZXQpLCB0eXBlKSk7CiB9CiAKLVdl
YlhSUmVmZXJlbmNlU3BhY2U6OldlYlhSUmVmZXJlbmNlU3BhY2UoRG9jdW1lbnQmIGRvY3VtZW50
LCBSZWY8V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24sIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYm
IG9mZnNldCwgWFJSZWZlcmVuY2VTcGFjZVR5cGUgdHlwZSkKK1dlYlhSUmVmZXJlbmNlU3BhY2U6
OldlYlhSUmVmZXJlbmNlU3BhY2UoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJYUlNlc3Npb24mIHNl
c3Npb24sIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmIG9mZnNldCwgWFJSZWZlcmVuY2VTcGFj
ZVR5cGUgdHlwZSkKICAgICA6IFdlYlhSU3BhY2UoZG9jdW1lbnQsIFdURk1vdmUob2Zmc2V0KSkK
LSAgICAsIG1fc2Vzc2lvbihXVEZNb3ZlKHNlc3Npb24pKQorICAgICwgbV9zZXNzaW9uKG1ha2VX
ZWFrUHRyKHNlc3Npb24pKQogICAgICwgbV90eXBlKHR5cGUpCiB7CiB9CkBAIC02NCw4ICs2NCwx
MSBAQCBXZWJYUlJlZmVyZW5jZVNwYWNlOjpXZWJYUlJlZmVyZW5jZVNwYWNlKERvY3VtZW50JiBk
b2N1bWVudCwgUmVmPFdlYlhSU2Vzc2lvbj4mJgogV2ViWFJSZWZlcmVuY2VTcGFjZTo6fldlYlhS
UmVmZXJlbmNlU3BhY2UoKSA9IGRlZmF1bHQ7CiAKIAotVHJhbnNmb3JtYXRpb25NYXRyaXggV2Vi
WFJSZWZlcmVuY2VTcGFjZTo6bmF0aXZlT3JpZ2luKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8VHJh
bnNmb3JtYXRpb25NYXRyaXg+IFdlYlhSUmVmZXJlbmNlU3BhY2U6Om5hdGl2ZU9yaWdpbigpIGNv
bnN0CiB7CisgICAgaWYgKCFtX3Nlc3Npb24pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eTsKIAogICAgIC8vIFdlIGFzc3Vt
ZSB0aGF0IHBvc2VzIGdvdCBmcm9tIHRoZSBkZXZpY2VzIGFyZSBpbiBsb2NhbCBzcGFjZS4KQEAg
LTkwLDEzICs5MywxNSBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBXZWJYUlJlZmVyZW5jZVNwYWNl
OjpuYXRpdmVPcmlnaW4oKSBjb25zdAogICAgIGRlZmF1bHQ6CiAgICAgICAgIC8vIEJvdW5kZWRG
bG9vciBpcyBoYW5kbGVkIGJ5IFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlIHN1YmNsYXNzCiAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgfQotCi0gICAgcmV0dXJuIGlkZW50aXR5OwogfQogCiBFeGNlcHRpb25P
cjxSZWY8V2ViWFJSZWZlcmVuY2VTcGFjZT4+IFdlYlhSUmVmZXJlbmNlU3BhY2U6OmdldE9mZnNl
dFJlZmVyZW5jZVNwYWNlKGNvbnN0IFdlYlhSUmlnaWRUcmFuc2Zvcm0mIG9mZnNldFRyYW5zZm9y
bSkKIHsKKyAgICBpZiAoIW1fc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElu
dmFsaWRTdGF0ZUVycm9yIH07CisKICAgICBhdXRvKiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3Vt
ZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIGlmICghZG9jdW1lbnQpCiAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwpAQCAtMTA1LDExICsx
MTAsMTQgQEAgRXhjZXB0aW9uT3I8UmVmPFdlYlhSUmVmZXJlbmNlU3BhY2U+PiBXZWJYUlJlZmVy
ZW5jZVNwYWNlOjpnZXRPZmZzZXRSZWZlcmVuY2VTcGEKICAgICAvLyBTZXQgb2Zmc2V0U3BhY2Xi
gJlzIG9yaWdpbiBvZmZzZXQgdG8gdGhlIHJlc3VsdCBvZiBtdWx0aXBseWluZyBiYXNl4oCZcyBv
cmlnaW4gb2Zmc2V0IGJ5IG9yaWdpbk9mZnNldCBpbiB0aGUgcmVsZXZhbnQgcmVhbG0gb2YgYmFz
ZS4KICAgICBhdXRvIG9mZnNldCA9IFdlYlhSUmlnaWRUcmFuc2Zvcm06OmNyZWF0ZShvcmlnaW5P
ZmZzZXQoKS5yYXdUcmFuc2Zvcm0oKSAqIG9mZnNldFRyYW5zZm9ybS5yYXdUcmFuc2Zvcm0oKSk7
CiAKLSAgICByZXR1cm4gY3JlYXRlKCpkb2N1bWVudCwgbV9zZXNzaW9uLmNvcHlSZWYoKSwgV1RG
TW92ZShvZmZzZXQpLCBtX3R5cGUpOworICAgIHJldHVybiBjcmVhdGUoKmRvY3VtZW50LCAqbV9z
ZXNzaW9uLmdldCgpLCBXVEZNb3ZlKG9mZnNldCksIG1fdHlwZSk7CiB9CiAKLVRyYW5zZm9ybWF0
aW9uTWF0cml4IFdlYlhSUmVmZXJlbmNlU3BhY2U6OmZsb29yT3JpZ2luVHJhbnNmb3JtKCkgY29u
c3QKK3N0ZDo6b3B0aW9uYWw8VHJhbnNmb3JtYXRpb25NYXRyaXg+IFdlYlhSUmVmZXJlbmNlU3Bh
Y2U6OmZsb29yT3JpZ2luVHJhbnNmb3JtKCkgY29uc3QKIHsKKyAgICBpZiAoIW1fc2Vzc2lvbikK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIGF1dG8mIGRhdGEgPSBtX3Nlc3Np
b24tPmZyYW1lRGF0YSgpOwogICAgIGlmICghZGF0YS5mbG9vclRyYW5zZm9ybSkgewogICAgICAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBkZWZhdXRUcmFuc2Zvcm07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNlU3BhY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJSZWZlcmVuY2VTcGFjZS5oCmluZGV4IDkzNDk1NjQx
ZDE0MzBkZmNjYTMzMjg5MGU4YzFkMzljZmM1ODQwZGYuLmU5NmFhNTI2OWQ0YzE3NzhlZTc2MzUx
YzU3M2E2MjFhZDdkYzdjM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJSZWZlcmVuY2VTcGFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJSZWZlcmVuY2VTcGFjZS5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiWFJS
ZWZlcmVuY2VTcGFjZVR5cGUuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtNDAsMjcgKzQxLDI3IEBAIGNsYXNzIFdlYlhSU2Vzc2lvbjsKIGNsYXNzIFdl
YlhSUmVmZXJlbmNlU3BhY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJYUlJlZmVyZW5jZVNwYWNl
PiwgcHVibGljIFdlYlhSU3BhY2UgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2ViWFJS
ZWZlcmVuY2VTcGFjZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJYUlJlZmVyZW5jZVNw
YWNlPiBjcmVhdGUoRG9jdW1lbnQmLCBSZWY8V2ViWFJTZXNzaW9uPiYmLCBYUlJlZmVyZW5jZVNw
YWNlVHlwZSk7Ci0gICAgc3RhdGljIFJlZjxXZWJYUlJlZmVyZW5jZVNwYWNlPiBjcmVhdGUoRG9j
dW1lbnQmLCBSZWY8V2ViWFJTZXNzaW9uPiYmLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiwg
WFJSZWZlcmVuY2VTcGFjZVR5cGUpOworICAgIHN0YXRpYyBSZWY8V2ViWFJSZWZlcmVuY2VTcGFj
ZT4gY3JlYXRlKERvY3VtZW50JiwgV2ViWFJTZXNzaW9uJiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUp
OworICAgIHN0YXRpYyBSZWY8V2ViWFJSZWZlcmVuY2VTcGFjZT4gY3JlYXRlKERvY3VtZW50Jiwg
V2ViWFJTZXNzaW9uJiwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYsIFhSUmVmZXJlbmNlU3Bh
Y2VUeXBlKTsKIAogICAgIHZpcnR1YWwgfldlYlhSUmVmZXJlbmNlU3BhY2UoKTsKIAogICAgIHVz
aW5nIFJlZkNvdW50ZWQ8V2ViWFJSZWZlcmVuY2VTcGFjZT46OnJlZjsKICAgICB1c2luZyBSZWZD
b3VudGVkPFdlYlhSUmVmZXJlbmNlU3BhY2U+OjpkZXJlZjsKIAotICAgIFdlYlhSU2Vzc2lvbiYg
c2Vzc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Vzc2lvbi5nZXQoKTsgfQotICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IG5hdGl2ZU9yaWdpbigpIGNvbnN0IG92ZXJyaWRlOworICAgIFdl
YlhSU2Vzc2lvbiogc2Vzc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Vzc2lvbi5nZXQo
KTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8VHJhbnNmb3JtYXRpb25NYXRyaXg+IG5hdGl2ZU9yaWdp
bigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8UmVmPFdlYlhSUmVm
ZXJlbmNlU3BhY2U+PiBnZXRPZmZzZXRSZWZlcmVuY2VTcGFjZShjb25zdCBXZWJYUlJpZ2lkVHJh
bnNmb3JtJik7CiAgICAgWFJSZWZlcmVuY2VTcGFjZVR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgV2ViWFJSZWZlcmVuY2VTcGFjZShEb2N1bWVu
dCYsIFJlZjxXZWJYUlNlc3Npb24+JiYsIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmLCBYUlJl
ZmVyZW5jZVNwYWNlVHlwZSk7CisgICAgV2ViWFJSZWZlcmVuY2VTcGFjZShEb2N1bWVudCYsIFdl
YlhSU2Vzc2lvbiYsIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmLCBYUlJlZmVyZW5jZVNwYWNl
VHlwZSk7CiAKICAgICBib29sIGlzUmVmZXJlbmNlU3BhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVy
biB0cnVlOyB9CiAKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBmbG9vck9yaWdpblRyYW5zZm9y
bSgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8VHJhbnNmb3JtYXRpb25NYXRyaXg+IGZsb29y
T3JpZ2luVHJhbnNmb3JtKCkgY29uc3Q7CiAKLSAgICBSZWY8V2ViWFJTZXNzaW9uPiBtX3Nlc3Np
b247CisgICAgV2Vha1B0cjxXZWJYUlNlc3Npb24+IG1fc2Vzc2lvbjsKICAgICBYUlJlZmVyZW5j
ZVNwYWNlVHlwZSBtX3R5cGU7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3BhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9XZWJYUlNwYWNlLmNwcAppbmRleCBmYmRlZWViZDdiYTMyODMwYmE2NDdjMDkwMDA4YjQy
ODc2NGE2ODNmLi42YTBiZjMxZDk3NmI2MWY0MDcwMzliYzkyNGU4MTNmMjNmNmY4MTUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3BhY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5jcHAKQEAgLTQ2LDMyICs0
Niw0MSBAQCBXZWJYUlNwYWNlOjpXZWJYUlNwYWNlKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFdl
YlhSUmlnaWRUcmFuc2Zvcm0+JiYgb2Zmc2V0KQogCiBXZWJYUlNwYWNlOjp+V2ViWFJTcGFjZSgp
ID0gZGVmYXVsdDsKIAotVHJhbnNmb3JtYXRpb25NYXRyaXggV2ViWFJTcGFjZTo6ZWZmZWN0aXZl
T3JpZ2luKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8VHJhbnNmb3JtYXRpb25NYXRyaXg+IFdlYlhS
U3BhY2U6OmVmZmVjdGl2ZU9yaWdpbigpIGNvbnN0CiB7CiAgICAgLy8gaHR0cHM6Ly9pbW1lcnNp
dmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jeHJzcGFjZS1lZmZlY3RpdmUtb3JpZ2luCiAgICAgLy8g
VGhlIGVmZmVjdGl2ZSBvcmlnaW4gY2FuIGJlIG9idGFpbmVkIGJ5IG11bHRpcGx5aW5nIG9yaWdp
biBvZmZzZXQgYW5kIHRoZSBuYXRpdmUgb3JpZ2luLgotICAgIHJldHVybiBuYXRpdmVPcmlnaW4o
KSAqIG1fb3JpZ2luT2Zmc2V0LT5yYXdUcmFuc2Zvcm0oKTsKKyAgICBhdXRvIG9yaWdpbiA9IG5h
dGl2ZU9yaWdpbigpOworICAgIGlmICghb3JpZ2luKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgIHJldHVybiBvcmlnaW4udmFsdWUoKSAqIG1fb3JpZ2luT2Zmc2V0LT5yYXdUcmFu
c2Zvcm0oKTsKIH0KIAogCi1ib29sIFdlYlhSU3BhY2U6OmlzUG9zaXRpb25FbXVsYXRlZCgpIGNv
bnN0CitzdGQ6Om9wdGlvbmFsPGJvb2w+IFdlYlhSU3BhY2U6OmlzUG9zaXRpb25FbXVsYXRlZCgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIHNlc3Npb24oKS5pc1Bvc2l0aW9uRW11bGF0ZWQoKTsKKyAg
ICBXZWJYUlNlc3Npb24qIHhyU2Vzc2lvbiA9IHNlc3Npb24oKTsKKyAgICBpZiAoIXhyU2Vzc2lv
bikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiB4clNlc3Npb24t
PmlzUG9zaXRpb25FbXVsYXRlZCgpOwogfQogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwo
V2ViWFJWaWV3ZXJTcGFjZSk7CiAKIFdlYlhSVmlld2VyU3BhY2U6OldlYlhSVmlld2VyU3BhY2Uo
RG9jdW1lbnQmIGRvY3VtZW50LCBXZWJYUlNlc3Npb24mIHNlc3Npb24pCiAgICAgOiBXZWJYUlNw
YWNlKGRvY3VtZW50LCBXZWJYUlJpZ2lkVHJhbnNmb3JtOjpjcmVhdGUoKSkKLSAgICAsIG1fc2Vz
c2lvbihzZXNzaW9uKQorICAgICwgbV9zZXNzaW9uKG1ha2VXZWFrUHRyKCZzZXNzaW9uKSkKIHsK
IH0KIAogV2ViWFJWaWV3ZXJTcGFjZTo6fldlYlhSVmlld2VyU3BhY2UoKSA9IGRlZmF1bHQ7CiAK
LVRyYW5zZm9ybWF0aW9uTWF0cml4IFdlYlhSVmlld2VyU3BhY2U6Om5hdGl2ZU9yaWdpbigpIGNv
bnN0CitzdGQ6Om9wdGlvbmFsPFRyYW5zZm9ybWF0aW9uTWF0cml4PiBXZWJYUlZpZXdlclNwYWNl
OjpuYXRpdmVPcmlnaW4oKSBjb25zdAogewotICAgIHJldHVybiBXZWJYUkZyYW1lOjptYXRyaXhG
cm9tUG9zZShtX3Nlc3Npb24uZnJhbWVEYXRhKCkub3JpZ2luKTsKKyAgICBpZiAoIW1fc2Vzc2lv
bikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4gV2ViWFJGcmFtZTo6
bWF0cml4RnJvbVBvc2UobV9zZXNzaW9uLT5mcmFtZURhdGEoKS5vcmlnaW4pOwogfQogCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNlLmgKaW5kZXggZDhmODhlYTU4Yjk1
ODQ1MThkNDc2NTQwZWRjOGRkZGIxOTY3OWRiNC4uMmZlNWE1M2U1NmEyMTk2NjRkZDQyZmE0NzYz
ZmQ0Y2I4Njc0M2JlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUlNwYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNl
LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZl
ci5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25N
YXRyaXguaCIKKyNpbmNsdWRlICJXZWJYUlNlc3Npb24uaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNywxNyArMzgsMTYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OwogY2xhc3MgV2ViWFJSaWdpZFRyYW5zZm9ybTsKLWNsYXNzIFdlYlhSU2Vzc2lvbjsKIAog
Y2xhc3MgV2ViWFJTcGFjZSA6IHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJs
aWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FU
RUQoV2ViWFJTcGFjZSk7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViWFJTcGFjZSgpOwogCi0g
ICAgdmlydHVhbCBXZWJYUlNlc3Npb24mIHNlc3Npb24oKSBjb25zdCA9IDA7Ci0gICAgdmlydHVh
bCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBuYXRpdmVPcmlnaW4oKSBjb25zdCA9IDA7Ci0gICAgVHJh
bnNmb3JtYXRpb25NYXRyaXggZWZmZWN0aXZlT3JpZ2luKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBi
b29sIGlzUG9zaXRpb25FbXVsYXRlZCgpIGNvbnN0OworICAgIHZpcnR1YWwgV2ViWFJTZXNzaW9u
KiBzZXNzaW9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxUcmFuc2Zv
cm1hdGlvbk1hdHJpeD4gbmF0aXZlT3JpZ2luKCkgY29uc3QgPSAwOworICAgIHN0ZDo6b3B0aW9u
YWw8VHJhbnNmb3JtYXRpb25NYXRyaXg+IGVmZmVjdGl2ZU9yaWdpbigpIGNvbnN0OworICAgIHZp
cnR1YWwgc3RkOjpvcHRpb25hbDxib29sPiBpc1Bvc2l0aW9uRW11bGF0ZWQoKSBjb25zdDsKIAog
ICAgIHZpcnR1YWwgYm9vbCBpc1JlZmVyZW5jZVNwYWNlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNCb3VuZGVkUmVmZXJlbmNlU3BhY2UoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQpAQCAtNzcsMTMgKzc3LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5X
ZWJYUlZpZXdlclNwYWNlKCk7CiAKIHByaXZhdGU6Ci0gICAgV2ViWFJTZXNzaW9uJiBzZXNzaW9u
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXNzaW9uOyB9Ci0gICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggbmF0aXZlT3JpZ2luKCkgY29uc3QgZmluYWw7CisgICAgV2ViWFJTZXNzaW9uKiBzZXNz
aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXNzaW9uLmdldCgpOyB9CisgICAgc3RkOjpv
cHRpb25hbDxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4gbmF0aXZlT3JpZ2luKCkgY29uc3QgZmluYWw7
CiAKICAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyB9CiAgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKLSAgICBXZWJYUlNlc3Npb24mIG1fc2Vzc2lvbjsK
KyAgICBXZWFrUHRyPFdlYlhSU2Vzc2lvbj4gbV9zZXNzaW9uOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>