<?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>230486</bug_id>
          
          <creation_ts>2021-09-20 10:32:19 -0700</creation_ts>
          <short_desc>Use typed identifier for WebSocketChannel identifiers</short_desc>
          <delta_ts>2021-09-21 08:25:20 -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="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>japhet</cc>
    
    <cc>joepeck</cc>
    
    <cc>pangle</cc>
    
    <cc>toyoshim</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1795146</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-09-20 10:32:19 -0700</bug_when>
    <thetext>Use typed identifier for WebSocketChannel identifiers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795147</commentid>
    <comment_count>1</comment_count>
      <attachid>438692</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-09-20 10:33:15 -0700</bug_when>
    <thetext>Created attachment 438692
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795430</commentid>
    <comment_count>2</comment_count>
      <attachid>438692</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-09-21 00:10:03 -0700</bug_when>
    <thetext>Comment on attachment 438692
Patch

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

&gt; Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.h:87
&gt; +    virtual WebSocketChannelIdentifier progressIdentifier() const = 0;

Can we rename progressIdentifier as well to just identifier?

&gt; Source/WebCore/Modules/websockets/WebSocketChannelInspector.cpp:37
&gt; +    : m_progressIdentifier(WebSocketChannelIdentifier::generateThreadSafe()) { }

I would have thought only WebSocketChannel would generate WebSocketChannelIdentifier, it is a bit odd but is a preexisting issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795552</commentid>
    <comment_count>3</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-09-21 08:06:33 -0700</bug_when>
    <thetext>It can also never be zero now, so I&apos;ll remove the if (m_progressIdentifier) checks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795556</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-09-21 08:15:53 -0700</bug_when>
    <thetext>ThreadableWebSocketChannel already has identifier() which returns a WebSocketIdentifier</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795560</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-21 08:24:25 -0700</bug_when>
    <thetext>Committed r282818 (241949@main): &lt;https://commits.webkit.org/241949@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 438692.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795562</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-21 08:25:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/83352793&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438692</attachid>
            <date>2021-09-20 10:33:15 -0700</date>
            <delta_ts>2021-09-21 08:24:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230486-20210920103314.patch</filename>
            <type>text/plain</type>
            <size>34151</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyNzQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDFmMzYxNmI0OGZhNWYw
NTY1NzE0MjgxZmJhZjg2MTZmOTM0ZjdjMi4uNWM2OTM3MTI5YTg4OTc5ODYwNjE4NGRjNzliZmIw
NjlkN2UxOTc1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDIxLTA5LTIwICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIHR5
cGVkIGlkZW50aWZpZXIgZm9yIFdlYlNvY2tldENoYW5uZWwgaWRlbnRpZmllcnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDQ4NgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYWxzbyBhbGxvd3Mg
dXMgdG8gaGF2ZSBhbiBpZGVudGlmaWVyIGZvciBXZWJTb2NrZXRDaGFubmVscyB1c2VkIGluIHdv
cmtlcnMuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWwuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5l
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpXZWJTb2NrZXRDaGFu
bmVsKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oOgor
ICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsSW5zcGVjdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWxJbnNwZWN0b3I6OldlYlNvY2tl
dENoYW5uZWxJbnNwZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbElu
c3BlY3Rvcjo6cHJvZ3Jlc3NJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbEluc3BlY3Rvci5oOgorICAgICAgICAqIE1vZHVsZXMv
d2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6V29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWwpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9Xb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVXZWJTb2NrZXRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1
ZXN0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZFJlY2VpdmVXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZUltcGwpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDbG9zZVdlYlNvY2tldEltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlV2ViU29j
a2V0RnJhbWVJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lRXJyb3JJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkU2VuZFdlYlNvY2tldEZyYW1lSW1wbCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVXZWJTb2NrZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFdlYlNv
Y2tldEhhbmRzaGFrZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDbG9zZVdlYlNvY2tldCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVX
ZWJTb2NrZXRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkU2VuZFdlYlNvY2tldEZyYW1lKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZENyZWF0ZVdlYlNvY2tldCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OndpbGxTZW5kV2ViU29ja2V0SGFu
ZHNoYWtlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6
OmRpZFJlY2VpdmVXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZENsb3NlV2ViU29ja2V0KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkU2VuZFdlYlNvY2tl
dEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVj
ZWl2ZVdlYlNvY2tldEZyYW1lRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0
d29ya0FnZW50Ojp3ZWJTb2NrZXRGb3JSZXF1ZXN0SWQpOgorICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50Lmg6CisgICAgICAgICogbG9hZGVyL1Byb2dyZXNz
VHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9ncmVzc1RyYWNrZXI6OmNyZWF0ZVVu
aXF1ZUlkZW50aWZpZXIpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9Qcm9ncmVzc1RyYWNr
ZXIuaDoKKwogMjAyMS0wOS0yMCAgTWFyY29zIENhY2VyZXMgIDxtYXJjb3NAbWFyY29zYy5jb20+
CiAKICAgICAgICAgV2ViIFNoYXJlIHBlcm1pc3Npb24gcG9saWN5ICJ3ZWItc2hhcmUiIGFuZCAi
c2VsZiIgYXMgdGhlIGFsbG93bGlzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiMWI5ZGViNmI1YTVhZDFmOTIzMmVl
NTBhNTNkNzc0MDcxZjU1NDdiLi40OGZjYjBlMjkxYTc5YTdmMGJiYWEyOGVkZjIzM2QwZDNmYTIy
ZWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIxLTA5LTIwICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIHR5cGVkIGlkZW50
aWZpZXIgZm9yIFdlYlNvY2tldENoYW5uZWwgaWRlbnRpZmllcnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDQ4NgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNv
Y2tldENoYW5uZWwuaDoKKwogMjAyMS0wOS0xOSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVo
QGFwcGxlLmNvbT4KIAogICAgICAgICBUZWFjaCBgV2ViS2l0OjpjcmVhdGVTaGFyZWFibGVCaXRt
YXBgIHRvIHNuYXBzaG90IHZpZGVvIGVsZW1lbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5o
CmluZGV4IDczMTE5ZTZmN2E2MzcxMjY3OGQxOGE2ZjJmZTJlODM4ZDYwNzcyZDkuLjMwYjRiMzcx
NjIxNWI4MmI4MzY2NmQ0ZTViYzRhZjM5ODNiMmVhOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiV2ViU29ja2V0SWRlbnRpZmllci5o
IgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
CisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNDcsOCArNDgsMTEgQEAgY2xhc3MgUmVzb3VyY2VSZXF1
ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ7CiBjbGFzcyBTb2NrZXRQcm92aWRlcjsKK2NsYXNzIFdlYlNvY2tldENoYW5uZWw7CiBjbGFz
cyBXZWJTb2NrZXRDaGFubmVsQ2xpZW50OwogCit1c2luZyBXZWJTb2NrZXRDaGFubmVsSWRlbnRp
ZmllciA9IE9iamVjdElkZW50aWZpZXI8V2ViU29ja2V0Q2hhbm5lbD47CisKIGNsYXNzIFRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbCk7CiBwdWJsaWM6CkBAIC04MCw3ICs4NCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1l
KCkgPSAwOwogCi0gICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIHByb2dyZXNzSWRlbnRpZmllcigp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFdlYlNvY2tldENoYW5uZWxJZGVudGlmaWVyIHByb2dy
ZXNzSWRlbnRpZmllcigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaGFzQ3JlYXRlZEhh
bmRzaGFrZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNDb25uZWN0ZWQoKSBjb25z
dCA9IDA7CiAgICAgdXNpbmcgQ29va2llR2V0dGVyID0gRnVuY3Rpb248U3RyaW5nKGNvbnN0IFVS
TCYpPjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXRDaGFubmVsLmNwcAppbmRleCA1ZWI0MjZjYWM0ZGNkNjFlYmM0MmZmZjIxYWY3MmYxY2My
NjhmODNkLi5jNGJlODBmNzEwNmJlYWZkNDIwN2E0ODcxNDNlOGYzNTg1MzA1NzUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWwuY3BwCkBAIC02NiwxMiArNjYsMTAgQEAgV2ViU29ja2V0Q2hhbm5lbDo6V2ViU29ja2V0Q2hh
bm5lbChEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlNvY2tldENoYW5uZWxDbGllbnQmIGMKICAgICAs
IG1fY2xpZW50KG1ha2VXZWFrUHRyKGNsaWVudCkpCiAgICAgLCBtX3Jlc3VtZVRpbWVyKCp0aGlz
LCAmV2ViU29ja2V0Q2hhbm5lbDo6cmVzdW1lVGltZXJGaXJlZCkKICAgICAsIG1fY2xvc2luZ1Rp
bWVyKCp0aGlzLCAmV2ViU29ja2V0Q2hhbm5lbDo6Y2xvc2luZ1RpbWVyRmlyZWQpCisgICAgLCBt
X3Byb2dyZXNzSWRlbnRpZmllcihXZWJTb2NrZXRDaGFubmVsSWRlbnRpZmllcjo6Z2VuZXJhdGVU
aHJlYWRTYWZlKCkpCiAgICAgLCBtX3NvY2tldFByb3ZpZGVyKHByb3ZpZGVyKQogewotICAgIGlm
IChQYWdlKiBwYWdlID0gZG9jdW1lbnQucGFnZSgpKQotICAgICAgICBtX3Byb2dyZXNzSWRlbnRp
ZmllciA9IHBhZ2UtPnByb2dyZXNzKCkuY3JlYXRlVW5pcXVlSWRlbnRpZmllcigpOwotCi0gICAg
TE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGN0b3IsIHByb2dyZXNzIGlkZW50aWZp
ZXIgJXUiLCB0aGlzLCBtX3Byb2dyZXNzSWRlbnRpZmllcik7CisgICAgTE9HKE5ldHdvcmssICJX
ZWJTb2NrZXRDaGFubmVsICVwIGN0b3IsIHByb2dyZXNzIGlkZW50aWZpZXIgJSIgUFJJdTY0LCB0
aGlzLCBtX3Byb2dyZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAogV2ViU29ja2V0Q2hh
bm5lbDo6fldlYlNvY2tldENoYW5uZWwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggMGQwZWQyNmZmNWYxY2YwYzAz
NjRlMmY5MmVkMjM2NjA2YTZlMTYwOS4uY2E3MTljN2JlNmU1MTk2YjM5ZGVjYTBjNmRmNDEzODY5
MDQ1Yzg0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0Q2hhbm5lbC5oCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiV2ViU29ja2V0
SGFuZHNoYWtlLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KQEAgLTU2LDYgKzU3LDggQEAgY2xhc3MgU29ja2V0UHJvdmlkZXI7CiBjbGFzcyBT
b2NrZXRTdHJlYW1IYW5kbGU7CiBjbGFzcyBTb2NrZXRTdHJlYW1FcnJvcjsKIGNsYXNzIFdlYlNv
Y2tldENoYW5uZWxDbGllbnQ7CitjbGFzcyBXZWJTb2NrZXRDaGFubmVsOwordXNpbmcgV2ViU29j
a2V0Q2hhbm5lbElkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFdlYlNvY2tldENoYW5uZWw+
OwogCiBjbGFzcyBXZWJTb2NrZXRDaGFubmVsIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8V2Vi
U29ja2V0Q2hhbm5lbD4sIHB1YmxpYyBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQsIHB1YmxpYyBU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCwgcHVibGljIEZpbGVSZWFkZXJMb2FkZXJDbGllbnQK
IHsKQEAgLTExNCw3ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKEV4Y2VwdGlvbkNvZGUgZXJyb3JDb2RlKSBv
dmVycmlkZTsKIAotICAgIHVuc2lnbmVkIGxvbmcgcHJvZ3Jlc3NJZGVudGlmaWVyKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9wcm9ncmVzc0lkZW50aWZpZXI7IH0KKyAgICBXZWJTb2NrZXRDaGFu
bmVsSWRlbnRpZmllciBwcm9ncmVzc0lkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X3Byb2dyZXNzSWRlbnRpZmllcjsgfQogICAgIGJvb2wgaGFzQ3JlYXRlZEhhbmRzaGFrZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuICEhbV9oYW5kc2hha2U7IH0KICAgICBib29sIGlzQ29ubmVjdGVk
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9oYW5kc2hha2UtPm1vZGUoKSA9PSBXZWJTb2NrZXRI
YW5kc2hha2U6Ok1vZGU6OkNvbm5lY3RlZDsgfQogICAgIFJlc291cmNlUmVxdWVzdCBjbGllbnRI
YW5kc2hha2VSZXF1ZXN0KGNvbnN0IENvb2tpZUdldHRlciYpIGNvbnN0IGZpbmFsOwpAQCAtMjA5
LDcgKzIxMiw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nob3VsZERpc2NhcmRSZWNlaXZlZERh
dGEgeyBmYWxzZSB9OwogICAgIHVuc2lnbmVkIG1fdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQgeyAw
IH07CiAKLSAgICB1bnNpZ25lZCBtX3Byb2dyZXNzSWRlbnRpZmllciB7IDAgfTsgLy8gbV9wcm9n
cmVzc0lkZW50aWZpZXIgPT0gMCBtZWFucyB0aGF0IHdlIGNvdWxkIG5vdCBvYnRhaW4gYSBwcm9n
cmVzcyBpZGVudGlmaWVyLgorICAgIFdlYlNvY2tldENoYW5uZWxJZGVudGlmaWVyIG1fcHJvZ3Jl
c3NJZGVudGlmaWVyOwogCiAgICAgLy8gUHJpdmF0ZSBtZW1iZXJzIG9ubHkgZm9yIGh5YmktMTAg
cHJvdG9jb2wuCiAgICAgYm9vbCBtX2hhc0NvbnRpbnVvdXNGcmFtZSB7IGZhbHNlIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5l
bEluc3BlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbEluc3BlY3Rvci5jcHAKaW5kZXggNmZhMTIwMGRhMzAzZWUxNTM2MmI3MzVhYzhl
NTQ1NTI3OWM5NmE5NC4uY2E3Njg3MDk1ZDRmODgwOTY0ZDMzNWMxMzZiYWI2MDI2MDE5OWEyYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENo
YW5uZWxJbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXRDaGFubmVsSW5zcGVjdG9yLmNwcApAQCAtMzMsMTEgKzMzLDggQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1XZWJTb2NrZXRDaGFubmVsSW5zcGVjdG9yOjpXZWJTb2NrZXRD
aGFubmVsSW5zcGVjdG9yKERvY3VtZW50JiBkb2N1bWVudCkKLXsKLSAgICBpZiAoYXV0byogcGFn
ZSA9IGRvY3VtZW50LnBhZ2UoKSkKLSAgICAgICAgbV9wcm9ncmVzc0lkZW50aWZpZXIgPSBwYWdl
LT5wcm9ncmVzcygpLmNyZWF0ZVVuaXF1ZUlkZW50aWZpZXIoKTsKLX0KK1dlYlNvY2tldENoYW5u
ZWxJbnNwZWN0b3I6OldlYlNvY2tldENoYW5uZWxJbnNwZWN0b3IoRG9jdW1lbnQmKQorICAgIDog
bV9wcm9ncmVzc0lkZW50aWZpZXIoV2ViU29ja2V0Q2hhbm5lbElkZW50aWZpZXI6OmdlbmVyYXRl
VGhyZWFkU2FmZSgpKSB7IH0KIAogdm9pZCBXZWJTb2NrZXRDaGFubmVsSW5zcGVjdG9yOjpkaWRD
cmVhdGVXZWJTb2NrZXQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCkKIHsKQEAg
LTk1LDcgKzkyLDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsSW5zcGVjdG9yOjpkaWRSZWNlaXZl
V2ViU29ja2V0RnJhbWVFcnJvcihEb2N1bWVudCogZG9jdW1lbnQKICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZUVycm9yKGRvY3VtZW50LCBtX3By
b2dyZXNzSWRlbnRpZmllciwgZXJyb3JNZXNzYWdlKTsKIH0KIAotdW5zaWduZWQgbG9uZyBXZWJT
b2NrZXRDaGFubmVsSW5zcGVjdG9yOjpwcm9ncmVzc0lkZW50aWZpZXIoKSBjb25zdAorV2ViU29j
a2V0Q2hhbm5lbElkZW50aWZpZXIgV2ViU29ja2V0Q2hhbm5lbEluc3BlY3Rvcjo6cHJvZ3Jlc3NJ
ZGVudGlmaWVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wcm9ncmVzc0lkZW50aWZpZXI7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
Q2hhbm5lbEluc3BlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWxJbnNwZWN0b3IuaAppbmRleCAzZjhiZTkyNjJmN2U0N2M4MDFjMDVlZGUz
MDExZDU1MDZmMmY4NjFiLi5kMDM2YzUyN2E0NDcyOGUzM2E1NDNkNWRjOTQ1MDk5YWZiYTVkZTA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
Q2hhbm5lbEluc3BlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXRDaGFubmVsSW5zcGVjdG9yLmgKQEAgLTI2LDE0ICsyNiwxOSBAQAogI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9PYmplY3RJ
ZGVudGlmaWVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7CiBj
bGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOworY2xhc3MgV2Vi
U29ja2V0Q2hhbm5lbDsKK2NsYXNzIFdlYlNvY2tldENoYW5uZWxJbnNwZWN0b3I7CiBzdHJ1Y3Qg
V2ViU29ja2V0RnJhbWU7CiAKK3VzaW5nIFdlYlNvY2tldENoYW5uZWxJZGVudGlmaWVyID0gT2Jq
ZWN0SWRlbnRpZmllcjxXZWJTb2NrZXRDaGFubmVsPjsKKwogY2xhc3MgV0VCQ09SRV9FWFBPUlQg
V2ViU29ja2V0Q2hhbm5lbEluc3BlY3RvciB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViU29j
a2V0Q2hhbm5lbEluc3BlY3RvcihEb2N1bWVudCYpOwpAQCAtNDYsMTAgKzUxLDEwIEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRpZFNlbmRXZWJTb2NrZXRGcmFtZShEb2N1bWVudCosIGNvbnN0IFdlYlNv
Y2tldEZyYW1lJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViU29ja2V0RnJhbWVFcnJvcihEb2N1
bWVudCosIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKICAgICAKLSAgICB1bnNpZ25lZCBs
b25nIHByb2dyZXNzSWRlbnRpZmllcigpIGNvbnN0OworICAgIFdlYlNvY2tldENoYW5uZWxJZGVu
dGlmaWVyIHByb2dyZXNzSWRlbnRpZmllcigpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIHVuc2ln
bmVkIGxvbmcgbV9wcm9ncmVzc0lkZW50aWZpZXIgeyAwIH07CisgICAgV2ViU29ja2V0Q2hhbm5l
bElkZW50aWZpZXIgbV9wcm9ncmVzc0lkZW50aWZpZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCBi
M2YzMTA5NWFhYTlhZTgzOTRmYjk4NTljNmRmNDhiMmNiOWYwODgzLi43NTc1ZWM3NDdhOGVlMzAz
N2JhMzUyNTVkNDVkMjBiNmE2Mzg4NjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbC5jcHAKQEAgLTU1LDYgKzU1LDcgQEAgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsKFdvcmtlckdsb2JhbFMK
ICAgICAsIG1fd29ya2VyQ2xpZW50V3JhcHBlcihUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENs
aWVudFdyYXBwZXI6OmNyZWF0ZShjb250ZXh0LCBjbGllbnQpKQogICAgICwgbV9icmlkZ2UoQnJp
ZGdlOjpjcmVhdGUobV93b3JrZXJDbGllbnRXcmFwcGVyLmNvcHlSZWYoKSwgbV93b3JrZXJHbG9i
YWxTY29wZS5jb3B5UmVmKCksIHRhc2tNb2RlLCBwcm92aWRlcikpCiAgICAgLCBtX3NvY2tldFBy
b3ZpZGVyKHByb3ZpZGVyKQorICAgICwgbV9wcm9ncmVzc0lkZW50aWZpZXIoV2ViU29ja2V0Q2hh
bm5lbElkZW50aWZpZXI6OmdlbmVyYXRlVGhyZWFkU2FmZSgpKQogewogICAgIG1fYnJpZGdlLT5p
bml0aWFsaXplKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCmlu
ZGV4IDRhNmEzNjNhY2MyYTk5MTdiZTMwNjQ5OWU2M2ExMTU4Nzk5YjUyNDUuLjZhYzkzZmNkZGJm
YzAxYTBhNzFkZWEzOTZiMWZhOTc4MzgxNzgzODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbC5oCkBAIC0xNjAsNyArMTYwLDcgQEAgcHJpdmF0ZToKIAogICAgIGNsYXNz
IFdvcmtlckdsb2JhbFNjb3BlRGlkSW5pdGlhbGl6ZVRhc2s7CiAgICAgCi0gICAgdW5zaWduZWQg
bG9uZyBwcm9ncmVzc0lkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CisgICAg
V2ViU29ja2V0Q2hhbm5lbElkZW50aWZpZXIgcHJvZ3Jlc3NJZGVudGlmaWVyKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9wcm9ncmVzc0lkZW50aWZpZXI7IH0KICAgICAvLyBGSVhNRTogPGh0dHBz
Oi8vd2Via2l0Lm9yZy9iLzE2ODQ3NT4gV2ViIEluc3BlY3RvcjogQ29ycmVjdGx5IGRpc3BsYXkg
aWZyYW1lJ3MgYW5kIHdvcmtlcidzIFdlYlNvY2tldHMKICAgICAvLyBEdW1teSBpbXBsZW1lbnRh
dGlvbiBvZiBpbnNwZWN0b3IgcmVsYXRlZCBBUElzLgogICAgIGJvb2wgaGFzQ3JlYXRlZEhhbmRz
aGFrZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0xNzQsNiArMTc0LDcgQEAg
cHJpdmF0ZToKICAgICBSZWY8U29ja2V0UHJvdmlkZXI+IG1fc29ja2V0UHJvdmlkZXI7CiAgICAg
UmVzb3VyY2VSZXF1ZXN0IG1faGFuZHNoYWtlUmVxdWVzdDsKICAgICBSZXNvdXJjZVJlc3BvbnNl
IG1faGFuZHNoYWtlUmVzcG9uc2U7CisgICAgV2ViU29ja2V0Q2hhbm5lbElkZW50aWZpZXIgbV9w
cm9ncmVzc0lkZW50aWZpZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3Bw
CmluZGV4IGY5MWQ1NTFiM2YxMDM2MDA1Nzk1NTc2NDgyYzI2ODg0MGY4OGE2MDMuLmE3Y2E3MTYy
ZDc5MWVkN2ZiYThjYzkxYzIxYTJjZjNhZjZlNjlhN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC0xMDE3LDQz
ICsxMDE3LDQzIEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3b3JrZXJUZXJtaW5h
dGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtCiAgICAgICAgIHdvcmtlckFnZW50
LT53b3JrZXJUZXJtaW5hdGVkKHByb3h5KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZENyZWF0ZVdlYlNvY2tldEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1
bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBVUkwmIHJlcXVl
c3RVUkwpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV2ViU29ja2V0
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBXZWJTb2NrZXRD
aGFubmVsSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwpCiB7CiAg
ICAgaWYgKGF1dG8qIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZE5l
dHdvcmtBZ2VudCgpKQogICAgICAgICBuZXR3b3JrQWdlbnQtPmRpZENyZWF0ZVdlYlNvY2tldChp
ZGVudGlmaWVyLCByZXF1ZXN0VVJMKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbFNlbmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBXZWJTb2NrZXRDaGFubmVsSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgaWYgKGF1dG8q
IG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZE5ldHdvcmtBZ2VudCgp
KQogICAgICAgICBuZXR3b3JrQWdlbnQtPndpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVz
dChpZGVudGlmaWVyLCByZXF1ZXN0KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZFJlY2VpdmVXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZUltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2VJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFdlYlNvY2tldENoYW5uZWxJZGVudGlm
aWVyIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAg
IGlmIChhdXRvKiBuZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3
b3JrQWdlbnQoKSkKICAgICAgICAgbmV0d29ya0FnZW50LT5kaWRSZWNlaXZlV2ViU29ja2V0SGFu
ZHNoYWtlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2UpOwogfQogCi12b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkQ2xvc2VXZWJTb2NrZXRJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKK3ZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDbG9zZVdlYlNvY2tldEltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgV2ViU29ja2V0Q2hhbm5lbElkZW50aWZp
ZXIgaWRlbnRpZmllcikKIHsKICAgICBpZiAoYXV0byogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy5lbmFibGVkTmV0d29ya0FnZW50KCkpCiAgICAgICAgIG5ldHdvcmtBZ2VudC0+
ZGlkQ2xvc2VXZWJTb2NrZXQoaWRlbnRpZmllcik7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRSZWNlaXZlV2ViU29ja2V0RnJhbWVJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
V2ViU29ja2V0RnJhbWUmIGZyYW1lKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZFJlY2VpdmVXZWJTb2NrZXRGcmFtZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVu
dGluZ0FnZW50cywgV2ViU29ja2V0Q2hhbm5lbElkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3Qg
V2ViU29ja2V0RnJhbWUmIGZyYW1lKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrQWdlbnQgPSBp
bnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3b3JrQWdlbnQoKSkKICAgICAgICAgbmV0d29y
a0FnZW50LT5kaWRSZWNlaXZlV2ViU29ja2V0RnJhbWUoaWRlbnRpZmllciwgZnJhbWUpOwogfQog
Ci12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1l
RXJyb3JJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCit2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lRXJyb3JJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFdlYlNvY2tldENoYW5u
ZWxJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQogewog
ICAgIGlmIChhdXRvKiBuZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRO
ZXR3b3JrQWdlbnQoKSkKICAgICAgICAgbmV0d29ya0FnZW50LT5kaWRSZWNlaXZlV2ViU29ja2V0
RnJhbWVFcnJvcihpZGVudGlmaWVyLCBlcnJvck1lc3NhZ2UpOwogfQogCi12b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkU2VuZFdlYlNvY2tldEZyYW1lSW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IFdlYlNvY2tldEZyYW1lJiBmcmFtZSkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRTZW5kV2ViU29ja2V0RnJhbWVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1l
bnRpbmdBZ2VudHMsIFdlYlNvY2tldENoYW5uZWxJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0
IFdlYlNvY2tldEZyYW1lJiBmcmFtZSkKIHsKICAgICBpZiAoYXV0byogbmV0d29ya0FnZW50ID0g
aW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkTmV0d29ya0FnZW50KCkpCiAgICAgICAgIG5ldHdv
cmtBZ2VudC0+ZGlkU2VuZFdlYlNvY2tldEZyYW1lKGlkZW50aWZpZXIsIGZyYW1lKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApp
bmRleCBjNjQ2ZTMxMzFjOTFhYTkyNDI2MTBiYWNjODZmNWJjMzkwODJmODJkLi4yOTIwMmExMTU2
OTgwYTQ4NmFhYjk2NTMwYjU1YjU1YTQ1MDUzMTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC01NCw2ICs1NCw3IEBA
CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0
aW9uLmg+CiAjaW5jbHVkZSA8d3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oPgorI2luY2x1ZGUg
PHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiAjaWYg
RU5BQkxFKFdFQkdMKQpAQCAtOTQsMTIgKzk1LDE0IEBAIGNsYXNzIFNoYWRvd1Jvb3Q7CiBjbGFz
cyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBUaW1lckJhc2U7CiBjbGFzcyBXZWJLaXROYW1lZEZsb3c7
CitjbGFzcyBXZWJTb2NrZXRDaGFubmVsOwogY2xhc3MgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGU7CiAKICNpZiBFTkFCTEUoV0VCR0wpCiBjbGFzcyBXZWJHTFByb2dyYW07CiAjZW5kaWYKIAor
dXNpbmcgV2ViU29ja2V0Q2hhbm5lbElkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFdlYlNv
Y2tldENoYW5uZWw+OwogZW51bSBjbGFzcyBTdG9yYWdlVHlwZSA6IHVpbnQ4X3Q7CiAKIHN0cnVj
dCBDb21wdXRlZEVmZmVjdFRpbWluZzsKQEAgLTI3MSwxMyArMjc0LDEzIEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgdm9pZCB3b3JrZXJTdGFydGVkKFdvcmtlckluc3BlY3RvclByb3h5Jik7CiAgICAg
c3RhdGljIHZvaWQgd29ya2VyVGVybWluYXRlZChXb3JrZXJJbnNwZWN0b3JQcm94eSYpOwogCi0g
ICAgc3RhdGljIHZvaWQgZGlkQ3JlYXRlV2ViU29ja2V0KERvY3VtZW50KiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwpOwotICAgIHN0YXRpYyB2b2lkIHdp
bGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdChEb2N1bWVudCosIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAgc3RhdGljIHZvaWQgZGlk
UmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKERvY3VtZW50KiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgc3RhdGljIHZvaWQg
ZGlkQ2xvc2VXZWJTb2NrZXQoRG9jdW1lbnQqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwot
ICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZShEb2N1bWVudCosIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViU29ja2V0RnJhbWUmKTsKLSAgICBzdGF0aWMg
dm9pZCBkaWRTZW5kV2ViU29ja2V0RnJhbWUoRG9jdW1lbnQqLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IFdlYlNvY2tldEZyYW1lJik7Ci0gICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2
ZVdlYlNvY2tldEZyYW1lRXJyb3IoRG9jdW1lbnQqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVX
ZWJTb2NrZXQoRG9jdW1lbnQqLCBXZWJTb2NrZXRDaGFubmVsSWRlbnRpZmllciwgY29uc3QgVVJM
JiByZXF1ZXN0VVJMKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFr
ZVJlcXVlc3QoRG9jdW1lbnQqLCBXZWJTb2NrZXRDaGFubmVsSWRlbnRpZmllciwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0Jik7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRz
aGFrZVJlc3BvbnNlKERvY3VtZW50KiwgV2ViU29ja2V0Q2hhbm5lbElkZW50aWZpZXIsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRDbG9zZVdlYlNvY2tldChE
b2N1bWVudCosIFdlYlNvY2tldENoYW5uZWxJZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgdm9pZCBk
aWRSZWNlaXZlV2ViU29ja2V0RnJhbWUoRG9jdW1lbnQqLCBXZWJTb2NrZXRDaGFubmVsSWRlbnRp
ZmllciwgY29uc3QgV2ViU29ja2V0RnJhbWUmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRTZW5kV2Vi
U29ja2V0RnJhbWUoRG9jdW1lbnQqLCBXZWJTb2NrZXRDaGFubmVsSWRlbnRpZmllciwgY29uc3Qg
V2ViU29ja2V0RnJhbWUmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlV2ViU29ja2V0RnJh
bWVFcnJvcihEb2N1bWVudCosIFdlYlNvY2tldENoYW5uZWxJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSk7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfVVNBR0UpCiAgICAgc3Rh
dGljIHZvaWQgZGlkSGFuZGxlTWVtb3J5UHJlc3N1cmUoUGFnZSYsIENyaXRpY2FsKTsKQEAgLTQ3
MSwxMyArNDc0LDEzIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgd29ya2VyU3RhcnRlZElt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFdvcmtlckluc3BlY3RvclByb3h5Jik7CiAgICAgc3Rh
dGljIHZvaWQgd29ya2VyVGVybWluYXRlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFdvcmtl
ckluc3BlY3RvclByb3h5Jik7CiAKLSAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVXZWJTb2NrZXRJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
IFVSTCYgcmVxdWVzdFVSTCk7Ci0gICAgc3RhdGljIHZvaWQgd2lsbFNlbmRXZWJTb2NrZXRIYW5k
c2hha2VSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNl
aXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBz
dGF0aWMgdm9pZCBkaWRDbG9zZVdlYlNvY2tldEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllcik7Ci0gICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVdlYlNv
Y2tldEZyYW1lSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgdW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBXZWJTb2NrZXRGcmFtZSYpOwotICAgIHN0YXRpYyB2b2lkIGRpZFNlbmRXZWJT
b2NrZXRGcmFtZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgV2ViU29ja2V0RnJhbWUmKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZl
V2ViU29ja2V0RnJhbWVFcnJvckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIHZvaWQgZGlkQ3JlYXRl
V2ViU29ja2V0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgV2ViU29ja2V0Q2hhbm5lbElkZW50
aWZpZXIsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCk7CisgICAgc3RhdGljIHZvaWQgd2lsbFNlbmRX
ZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgV2ViU29j
a2V0Q2hhbm5lbElkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworICAgIHN0YXRp
YyB2b2lkIGRpZFJlY2VpdmVXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZUltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYsIFdlYlNvY2tldENoYW5uZWxJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJik7CisgICAgc3RhdGljIHZvaWQgZGlkQ2xvc2VXZWJTb2NrZXRJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMmLCBXZWJTb2NrZXRDaGFubmVsSWRlbnRpZmllcik7CisgICAgc3RhdGljIHZv
aWQgZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgV2Vi
U29ja2V0Q2hhbm5lbElkZW50aWZpZXIsIGNvbnN0IFdlYlNvY2tldEZyYW1lJik7CisgICAgc3Rh
dGljIHZvaWQgZGlkU2VuZFdlYlNvY2tldEZyYW1lSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwg
V2ViU29ja2V0Q2hhbm5lbElkZW50aWZpZXIsIGNvbnN0IFdlYlNvY2tldEZyYW1lJik7CisgICAg
c3RhdGljIHZvaWQgZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lRXJyb3JJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMmLCBXZWJTb2NrZXRDaGFubmVsSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJik7CiAK
ICNpZiBFTkFCTEUoUkVTT1VSQ0VfVVNBR0UpCiAgICAgc3RhdGljIHZvaWQgZGlkSGFuZGxlTWVt
b3J5UHJlc3N1cmVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBDcml0aWNhbCk7CkBAIC0xMzI3
LDQ5ICsxMzMwLDQ5IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d29y
a2VyVGVybWluYXRlZChXb3JrZXJJbnNwZWN0b3JQcm94eSYgcHJvCiAgICAgICAgIHdvcmtlclRl
cm1pbmF0ZWRJbXBsKCphZ2VudHMsIHByb3h5KTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVXZWJTb2NrZXQoRG9jdW1lbnQqIGRvY3VtZW50LCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCkKK2lubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV2ViU29ja2V0KERvY3VtZW50
KiBkb2N1bWVudCwgV2ViU29ja2V0Q2hhbm5lbElkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3Qg
VVJMJiByZXF1ZXN0VVJMKQogewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lk
KCkpOwogICAgIGlmIChhdXRvKiBhZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzKGRvY3VtZW50
KSkKICAgICAgICAgZGlkQ3JlYXRlV2ViU29ja2V0SW1wbCgqYWdlbnRzLCBpZGVudGlmaWVyLCBy
ZXF1ZXN0VVJMKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QoRG9jdW1lbnQqIGRvY3VtZW50LCB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK2lu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRXZWJTb2NrZXRIYW5k
c2hha2VSZXF1ZXN0KERvY3VtZW50KiBkb2N1bWVudCwgV2ViU29ja2V0Q2hhbm5lbElkZW50aWZp
ZXIgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIEZB
U1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlmIChhdXRvKiBhZ2VudHMg
PSBpbnN0cnVtZW50aW5nQWdlbnRzKGRvY3VtZW50KSkKICAgICAgICAgd2lsbFNlbmRXZWJTb2Nr
ZXRIYW5kc2hha2VSZXF1ZXN0SW1wbCgqYWdlbnRzLCBpZGVudGlmaWVyLCByZXF1ZXN0KTsKIH0K
IAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlV2ViU29j
a2V0SGFuZHNoYWtlUmVzcG9uc2UoRG9jdW1lbnQqIGRvY3VtZW50LCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQoraW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVz
cG9uc2UoRG9jdW1lbnQqIGRvY3VtZW50LCBXZWJTb2NrZXRDaGFubmVsSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBGQVNUX1JF
VFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKICAgICBpZiAoYXV0byogYWdlbnRzID0gaW5z
dHJ1bWVudGluZ0FnZW50cyhkb2N1bWVudCkpCiAgICAgICAgIGRpZFJlY2VpdmVXZWJTb2NrZXRI
YW5kc2hha2VSZXNwb25zZUltcGwoKmFnZW50cywgaWRlbnRpZmllciwgcmVzcG9uc2UpOwogfQog
Ci1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENsb3NlV2ViU29ja2V0
KERvY3VtZW50KiBkb2N1bWVudCwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQoraW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDbG9zZVdlYlNvY2tldChEb2N1bWVudCog
ZG9jdW1lbnQsIFdlYlNvY2tldENoYW5uZWxJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CiAgICAg
RkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CiAgICAgaWYgKGF1dG8qIGFnZW50
cyA9IGluc3RydW1lbnRpbmdBZ2VudHMoZG9jdW1lbnQpKQogICAgICAgICBkaWRDbG9zZVdlYlNv
Y2tldEltcGwoKmFnZW50cywgaWRlbnRpZmllcik7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lKERvY3VtZW50KiBkb2N1
bWVudCwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJTb2NrZXRGcmFtZSYgZnJh
bWUpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVXZWJT
b2NrZXRGcmFtZShEb2N1bWVudCogZG9jdW1lbnQsIFdlYlNvY2tldENoYW5uZWxJZGVudGlmaWVy
IGlkZW50aWZpZXIsIGNvbnN0IFdlYlNvY2tldEZyYW1lJiBmcmFtZSkKIHsKICAgICBGQVNUX1JF
VFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKICAgICBpZiAoYXV0byogYWdlbnRzID0gaW5z
dHJ1bWVudGluZ0FnZW50cyhkb2N1bWVudCkpCiAgICAgICAgIGRpZFJlY2VpdmVXZWJTb2NrZXRG
cmFtZUltcGwoKmFnZW50cywgaWRlbnRpZmllciwgZnJhbWUpOwogfQogCi1pbmxpbmUgdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZUVycm9yKERv
Y3VtZW50KiBkb2N1bWVudCwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
UmVjZWl2ZVdlYlNvY2tldEZyYW1lRXJyb3IoRG9jdW1lbnQqIGRvY3VtZW50LCBXZWJTb2NrZXRD
aGFubmVsSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkK
IHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKICAgICBpZiAoYXV0
byogYWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50cyhkb2N1bWVudCkpCiAgICAgICAgIGRpZFJl
Y2VpdmVXZWJTb2NrZXRGcmFtZUVycm9ySW1wbCgqYWdlbnRzLCBpZGVudGlmaWVyLCBlcnJvck1l
c3NhZ2UpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFNl
bmRXZWJTb2NrZXRGcmFtZShEb2N1bWVudCogZG9jdW1lbnQsIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgV2ViU29ja2V0RnJhbWUmIGZyYW1lKQoraW5saW5lIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRTZW5kV2ViU29ja2V0RnJhbWUoRG9jdW1lbnQqIGRvY3VtZW50
LCBXZWJTb2NrZXRDaGFubmVsSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBXZWJTb2NrZXRG
cmFtZSYgZnJhbWUpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7
CiAgICAgaWYgKGF1dG8qIGFnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHMoZG9jdW1lbnQpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3
b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JO
ZXR3b3JrQWdlbnQuY3BwCmluZGV4IDMzNzU3YjllM2NlN2UzMDRjYjcxZmI2NGYzM2UyZWVmMDZh
YWIzY2IuLmFlZWFhMGE2Njk1MGExNTgxYzg0NmM3MzA3MDYyNzI4NjQxMWJiODIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdv
cmtBZ2VudC5jcHAKQEAgLTc3OSw0NiArNzc5LDQ2IEBAIFJlZjxQcm90b2NvbDo6TmV0d29yazo6
SW5pdGlhdG9yPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmJ1aWxkSW5pdGlhdG9yT2JqZWN0KERv
CiAgICAgICAgIC5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50Ojpk
aWRDcmVhdGVXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBVUkwmIHJl
cXVlc3RVUkwpCit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkQ3JlYXRlV2ViU29ja2V0
KFdlYlNvY2tldENoYW5uZWxJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFVSTCYgcmVxdWVz
dFVSTCkKIHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+d2ViU29ja2V0Q3JlYXRlZChJZGVu
dGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVyKSwgcmVxdWVzdFVSTC5zdHJpbmco
KSk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPndlYlNvY2tldENyZWF0ZWQoSWRlbnRpZmll
cnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllci50b1VJbnQ2NCgpKSwgcmVxdWVzdFVSTC5z
dHJpbmcoKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50Ojp3aWxsU2VuZFdlYlNv
Y2tldEhhbmRzaGFrZVJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6d2lsbFNl
bmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0KFdlYlNvY2tldENoYW5uZWxJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBhdXRvIHJl
cXVlc3RPYmplY3QgPSBQcm90b2NvbDo6TmV0d29yazo6V2ViU29ja2V0UmVxdWVzdDo6Y3JlYXRl
KCkKICAgICAgICAgLnNldEhlYWRlcnMoYnVpbGRPYmplY3RGb3JIZWFkZXJzKHJlcXVlc3QuaHR0
cEhlYWRlckZpZWxkcygpKSkKICAgICAgICAgLnJlbGVhc2UoKTsKLSAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlci0+d2ViU29ja2V0V2lsbFNlbmRIYW5kc2hha2VSZXF1ZXN0KElkZW50aWZpZXJzRmFj
dG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpLCB0aW1lc3RhbXAoKSwgV2FsbFRpbWU6Om5vdygp
LnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vjb25kcygpLCBXVEZNb3ZlKHJlcXVlc3RPYmplY3QpKTsK
KyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+d2ViU29ja2V0V2lsbFNlbmRIYW5kc2hha2VSZXF1
ZXN0KElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIudG9VSW50NjQoKSks
IHRpbWVzdGFtcCgpLCBXYWxsVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRz
KCksIFdURk1vdmUocmVxdWVzdE9iamVjdCkpOwogfQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmtB
Z2VudDo6ZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit2b2lkIEluc3Bl
Y3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKFdl
YlNvY2tldENoYW5uZWxJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQogewogICAgIGF1dG8gcmVzcG9uc2VPYmplY3QgPSBQcm90b2NvbDo6TmV0
d29yazo6V2ViU29ja2V0UmVzcG9uc2U6OmNyZWF0ZSgpCiAgICAgICAgIC5zZXRTdGF0dXMocmVz
cG9uc2UuaHR0cFN0YXR1c0NvZGUoKSkKICAgICAgICAgLnNldFN0YXR1c1RleHQocmVzcG9uc2Uu
aHR0cFN0YXR1c1RleHQoKSkKICAgICAgICAgLnNldEhlYWRlcnMoYnVpbGRPYmplY3RGb3JIZWFk
ZXJzKHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKSkpCiAgICAgICAgIC5yZWxlYXNlKCk7Ci0g
ICAgbV9mcm9udGVuZERpc3BhdGNoZXItPndlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlUmVjZWl2
ZWQoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllciksIHRpbWVzdGFtcCgp
LCBXVEZNb3ZlKHJlc3BvbnNlT2JqZWN0KSk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPndl
YlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlUmVjZWl2ZWQoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1
ZXN0SWQoaWRlbnRpZmllci50b1VJbnQ2NCgpKSwgdGltZXN0YW1wKCksIFdURk1vdmUocmVzcG9u
c2VPYmplY3QpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZENsb3NlV2Vi
U29ja2V0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjpkaWRDbG9zZVdlYlNvY2tldChXZWJTb2NrZXRDaGFubmVsSWRlbnRpZmllciBpZGVudGlm
aWVyKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT53ZWJTb2NrZXRDbG9zZWQoSWRlbnRp
ZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllciksIHRpbWVzdGFtcCgpKTsKKyAgICBt
X2Zyb250ZW5kRGlzcGF0Y2hlci0+d2ViU29ja2V0Q2xvc2VkKElkZW50aWZpZXJzRmFjdG9yeTo6
cmVxdWVzdElkKGlkZW50aWZpZXIudG9VSW50NjQoKSksIHRpbWVzdGFtcCgpKTsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZSh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYlNvY2tldEZyYW1lJiBmcmFtZSkKK3ZvaWQgSW5z
cGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlV2ViU29ja2V0RnJhbWUoV2ViU29ja2V0Q2hh
bm5lbElkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgV2ViU29ja2V0RnJhbWUmIGZyYW1lKQog
ewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT53ZWJTb2NrZXRGcmFtZVJlY2VpdmVkKElkZW50
aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpLCB0aW1lc3RhbXAoKSwgYnVpbGRX
ZWJTb2NrZXRNZXNzYWdlKGZyYW1lKSk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPndlYlNv
Y2tldEZyYW1lUmVjZWl2ZWQoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmll
ci50b1VJbnQ2NCgpKSwgdGltZXN0YW1wKCksIGJ1aWxkV2ViU29ja2V0TWVzc2FnZShmcmFtZSkp
OwogfQotdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZFNlbmRXZWJTb2NrZXRGcmFtZSh1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYlNvY2tldEZyYW1lJiBmcmFtZSkKK3Zv
aWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRTZW5kV2ViU29ja2V0RnJhbWUoV2ViU29ja2V0
Q2hhbm5lbElkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgV2ViU29ja2V0RnJhbWUmIGZyYW1l
KQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT53ZWJTb2NrZXRGcmFtZVNlbnQoSWRlbnRp
ZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllciksIHRpbWVzdGFtcCgpLCBidWlsZFdl
YlNvY2tldE1lc3NhZ2UoZnJhbWUpKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+d2ViU29j
a2V0RnJhbWVTZW50KElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIudG9V
SW50NjQoKSksIHRpbWVzdGFtcCgpLCBidWlsZFdlYlNvY2tldE1lc3NhZ2UoZnJhbWUpKTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZUVy
cm9yKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2Up
Cit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lRXJy
b3IoV2ViU29ja2V0Q2hhbm5lbElkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBl
cnJvck1lc3NhZ2UpCiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPndlYlNvY2tldEZyYW1l
RXJyb3IoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllciksIHRpbWVzdGFt
cCgpLCBlcnJvck1lc3NhZ2UpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT53ZWJTb2NrZXRG
cmFtZUVycm9yKElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIudG9VSW50
NjQoKSksIHRpbWVzdGFtcCgpLCBlcnJvck1lc3NhZ2UpOwogfQogCiBQcm90b2NvbDo6RXJyb3JT
dHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmVuYWJsZSgpCkBAIC0xMDEzLDcg
KzEwMTMsNyBAQCBXZWJTb2NrZXQqIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6d2ViU29ja2V0Rm9y
UmVxdWVzdElkKGNvbnN0IFByb3RvY29sOjpOZXR3b3JrOgogICAgIExvY2tlciBsb2NrZXIgeyBX
ZWJTb2NrZXQ6OmFsbEFjdGl2ZVdlYlNvY2tldHNMb2NrKCkgfTsKIAogICAgIGZvciAoYXV0byog
d2ViU29ja2V0IDogYWN0aXZlV2ViU29ja2V0cygpKSB7Ci0gICAgICAgIGlmIChJZGVudGlmaWVy
c0ZhY3Rvcnk6OnJlcXVlc3RJZCh3ZWJTb2NrZXQtPmNoYW5uZWwoKS0+cHJvZ3Jlc3NJZGVudGlm
aWVyKCkpID09IHJlcXVlc3RJZCkKKyAgICAgICAgaWYgKElkZW50aWZpZXJzRmFjdG9yeTo6cmVx
dWVzdElkKHdlYlNvY2tldC0+Y2hhbm5lbCgpLT5wcm9ncmVzc0lkZW50aWZpZXIoKS50b1VJbnQ2
NCgpKSA9PSByZXF1ZXN0SWQpCiAgICAgICAgICAgICByZXR1cm4gd2ViU29ja2V0OwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JO
ZXR3b3JrQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmgKaW5kZXggNGMyNWIzYjJhY2YwOTAyZThiYjk2NzY0ZDBiZjliYWQzNzg5
YjE4Yy4uOGY2ZmJjYzI5M2FlYmY4YjlkNWM5NDVkMjgyOWExNTI3Yjc0YmM3ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtB
Z2VudC5oCkBAIC0xMTAsMTMgKzExMCwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRMb2FkWEhS
U3luY2hyb25vdXNseSgpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVNjcmlwdFJlc3BvbnNlKFJlc291
cmNlTG9hZGVySWRlbnRpZmllcik7CiAgICAgdm9pZCB3aWxsRGVzdHJveUNhY2hlZFJlc291cmNl
KENhY2hlZFJlc291cmNlJik7Ci0gICAgdm9pZCBkaWRDcmVhdGVXZWJTb2NrZXQodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwpOwotICAgIHZvaWQgd2lsbFNl
bmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNo
YWtlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJik7Ci0gICAgdm9pZCBkaWRDbG9zZVdlYlNvY2tldCh1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lKHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgY29uc3QgV2ViU29ja2V0RnJhbWUmKTsKLSAgICB2b2lkIGRpZFNlbmRXZWJTb2Nr
ZXRGcmFtZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYlNvY2tldEZyYW1lJik7
Ci0gICAgdm9pZCBkaWRSZWNlaXZlV2ViU29ja2V0RnJhbWVFcnJvcih1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgZGlkQ3JlYXRlV2ViU29ja2V0KFdl
YlNvY2tldENoYW5uZWxJZGVudGlmaWVyLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwpOworICAgIHZv
aWQgd2lsbFNlbmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0KFdlYlNvY2tldENoYW5uZWxJZGVu
dGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVXZWJT
b2NrZXRIYW5kc2hha2VSZXNwb25zZShXZWJTb2NrZXRDaGFubmVsSWRlbnRpZmllciwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHZvaWQgZGlkQ2xvc2VXZWJTb2NrZXQoV2ViU29ja2V0
Q2hhbm5lbElkZW50aWZpZXIpOworICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lKFdl
YlNvY2tldENoYW5uZWxJZGVudGlmaWVyLCBjb25zdCBXZWJTb2NrZXRGcmFtZSYpOworICAgIHZv
aWQgZGlkU2VuZFdlYlNvY2tldEZyYW1lKFdlYlNvY2tldENoYW5uZWxJZGVudGlmaWVyLCBjb25z
dCBXZWJTb2NrZXRGcmFtZSYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lRXJy
b3IoV2ViU29ja2V0Q2hhbm5lbElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQg
bWFpbkZyYW1lTmF2aWdhdGVkKERvY3VtZW50TG9hZGVyJik7CiAgICAgdm9pZCBzZXRJbml0aWFs
U2NyaXB0Q29udGVudChSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlU3RyaW5nKTsKICAgICB2b2lkIGRpZFNjaGVkdWxlU3R5bGVSZWNhbGN1bGF0aW9uKERvY3Vt
ZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwCmluZGV4IGEy
MTVkNmE5YjQwMjJjOWU3NzU4OGU1ZmIwN2FmZjA0MmNjNDlhMWMuLmZhODRjMzY2YzYzMTc1Zjlm
YjQ3MzBlYjg1YzQ2NzdmYzNkNjM2OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Qcm9ncmVzc1RyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVz
c1RyYWNrZXIuY3BwCkBAIC03NSw4ICs3NSw2IEBAIHB1YmxpYzoKICAgICBsb25nIGxvbmcgZXN0
aW1hdGVkTGVuZ3RoOwogfTsKIAotdW5zaWduZWQgbG9uZyBQcm9ncmVzc1RyYWNrZXI6OnNfdW5p
cXVlSWRlbnRpZmllciA9IDA7Ci0KIFByb2dyZXNzVHJhY2tlcjo6UHJvZ3Jlc3NUcmFja2VyKFVu
aXF1ZVJlZjxQcm9ncmVzc1RyYWNrZXJDbGllbnQ+JiYgY2xpZW50KQogICAgIDogbV9jbGllbnQo
V1RGTW92ZShjbGllbnQpKQogICAgICwgbV9wcm9ncmVzc0hlYXJ0YmVhdFRpbWVyKCp0aGlzLCAm
UHJvZ3Jlc3NUcmFja2VyOjpwcm9ncmVzc0hlYXJ0YmVhdFRpbWVyRmlyZWQpCkBAIC0yODMsMTIg
KzI4MSw2IEBAIHZvaWQgUHJvZ3Jlc3NUcmFja2VyOjpjb21wbGV0ZVByb2dyZXNzKFJlc291cmNl
TG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIG1fcHJvZ3Jlc3NJdGVtcy5yZW1vdmUo
aXQpOwogfQogCi11bnNpZ25lZCBsb25nIFByb2dyZXNzVHJhY2tlcjo6Y3JlYXRlVW5pcXVlSWRl
bnRpZmllcigpCi17Ci0gICAgLy8gRklYTUU6IFVzZSBhIHN0cm9uZ2x5IHR5cGVkIGlkZW50aWZp
ZXIgZm9yIHdlYnNvY2tldHMgYW5kIHJlbW92ZSB0aGlzLgotICAgIHJldHVybiArK3NfdW5pcXVl
SWRlbnRpZmllcjsKLX0KLQogYm9vbCBQcm9ncmVzc1RyYWNrZXI6OmlzTWFpbkxvYWRQcm9ncmVz
c2luZygpIGNvbnN0CiB7CiAgICAgaWYgKCFtX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuaAppbmRleCA5M2E2OGE5OWRmYTg3ZTRh
ZDcxOTNiODhlYzA4NjYyM2U2ZjAyMmExLi5jMGQyMWU2ZTYzN2U4MzE1MTc1NjU5ZDc0YTJiNTNl
ZGY3ODFhOTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFj
a2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5oCkBAIC00
OSw4ICs0OSw2IEBAIHB1YmxpYzoKIAogICAgIFByb2dyZXNzVHJhY2tlckNsaWVudCYgY2xpZW50
KCkgeyByZXR1cm4gbV9jbGllbnQuZ2V0KCk7IH0KIAotICAgIHN0YXRpYyB1bnNpZ25lZCBsb25n
IGNyZWF0ZVVuaXF1ZUlkZW50aWZpZXIoKTsKLQogICAgIFdFQkNPUkVfRVhQT1JUIGRvdWJsZSBl
c3RpbWF0ZWRQcm9ncmVzcygpIGNvbnN0OwogCiAgICAgdm9pZCBwcm9ncmVzc1N0YXJ0ZWQoRnJh
bWUmKTsKQEAgLTcxLDggKzY5LDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcHJvZ3Jlc3NIZWFy
dGJlYXRUaW1lckZpcmVkKCk7CiAKLSAgICBzdGF0aWMgdW5zaWduZWQgbG9uZyBzX3VuaXF1ZUlk
ZW50aWZpZXI7Ci0KICAgICBVbmlxdWVSZWY8UHJvZ3Jlc3NUcmFja2VyQ2xpZW50PiBtX2NsaWVu
dDsKICAgICBSZWZQdHI8RnJhbWU+IG1fb3JpZ2luYXRpbmdQcm9ncmVzc0ZyYW1lOwogICAgIEhh
c2hNYXA8UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UHJvZ3Jlc3NJ
dGVtPj4gbV9wcm9ncmVzc0l0ZW1zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IDcyNDE3ZTIzMjYyNDEyN2NjNWRhZWQz
NDUxNzZkZmEzYTFmNGQ5YTguLjQ2OTZlZDk3NDVjZmFiZGNkZmI2MmU1MDhkOTFmODg1MzRhMGE1
YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tl
dENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2Nr
ZXRDaGFubmVsLmgKQEAgLTk4LDcgKzk4LDcgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiB2b2lkIHNlbmRNZXNzYWdlKFQmJiwgc2l6ZV90IGJ5dGVMZW5ndGgpOwogICAgIHZv
aWQgZW5xdWV1ZVRhc2soRnVuY3Rpb248dm9pZCgpPiYmKTsKIAotICAgIHVuc2lnbmVkIGxvbmcg
cHJvZ3Jlc3NJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pbnNwZWN0b3IucHJv
Z3Jlc3NJZGVudGlmaWVyKCk7IH0KKyAgICBXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsSWRlbnRp
ZmllciBwcm9ncmVzc0lkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2luc3BlY3Rv
ci5wcm9ncmVzc0lkZW50aWZpZXIoKTsgfQogICAgIGJvb2wgaGFzQ3JlYXRlZEhhbmRzaGFrZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuICFtX3VybC5pc051bGwoKTsgfQogICAgIGJvb2wgaXNDb25u
ZWN0ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhbV9oYW5kc2hha2VSZXNwb25zZS5pc051bGwo
KTsgfQogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBjbGllbnRIYW5kc2hha2VSZXF1ZXN0
KGNvbnN0IENvb2tpZUdldHRlciYpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faGFuZHNoYWtlUmVx
dWVzdDsgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>